Re: Cross Compiling RCS

Derek McEachern <[email protected]> Thu, 2 May 2013 09:08:13 -0500
Newsgroups gmane.comp.gnu.rcs
Message-ID <CAMsdCHwhPTA1SYKsZVf5QSrztrLbuB8O64V=fFO8j=11Fq8huw@mail.gmail.com>
--089e0111d9ca2b4e1804dbbcc5a6
Content-Type: multipart/alternative; boundary=089e0111d9ca2b4e1404dbbcc5a4

--089e0111d9ca2b4e1404dbbcc5a4
Content-Type: text/plain; charset=UTF-8

To be honest this was my first attempt at cross compiling so I'm not that
familiar with it myself.

I didn't change the configure.ac out of ignorance on my part since I'm not
that familiar with the syntax and format. What I did was modify the
resulting configure script.

I've attached the configure script with my modifications but here is what I
did.

The first test that had issues was the tinysym test. The autoconf appears
to create a test that checks for the "$cross_compiling" variable and if it
is detected it exits with an error indicating that it cannot run the test
program while cross compiling.

I changed the test to "$cross_compilingx" like the example below. For every
occurrence from tinysym through the rest of the configure script I made
this change.

if test "$cross_compilingx" = yes; then :
  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot run test program while cross compiling
See \`config.log' for more details" "$LINENO" 5; }

If I haven't missed any there 8 tests that I modified

tinysym
fopen
write after create
unlink works on unwritable files
rename' handles unwritable source/target
`mmap' is sane
checking signal received if referencing nonexistent part of mmapped file
`wait' can handle ignored SIGCHLD

Derek



On Wed, May 1, 2013 at 3:02 PM, Thien-Thi Nguyen <[email protected]> wrote:

> () Derek McEachern <[email protected]>
> () Tue, 30 Apr 2013 10:54:37 -0500
>
>    I was trying to cross compile RCS and it appears that configure will
>    error out with "cannot run test program while cross compiling"
>
>    On a chance I modified the configure script to ignore the cross
>    compile and it appears that it was able to make it ok.
>
>    I have users checking out the functionality now but are there any
>    known issues with cross compiling?
>
> No known issues, but that's out of ignorance of cross-compilation
> generally (on my part), not out of refinement towards proper support.
> IOW, i need to study (info "(autoconf) Runtime") and carefully comb
> through configure.ac adding ACTION-IF-CROSS-COMPILING clauses to the
> tests, still.
>
> Could you post the modifications you made?  That would help me focus.
>
> --
> Thien-Thi Nguyen
> GPG key: 4C807502
>

--089e0111d9ca2b4e1404dbbcc5a4
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div><div><div><div><div><div><div><div><div><div>To be ho=
nest this was my first attempt at cross compiling so I&#39;m not that famil=
iar with it myself.<br><br></div></div></div></div></div></div>I didn&#39;t=
 change the <a href=3D"http://configure.ac">configure.ac</a> out of ignoran=
ce on my part since I&#39;m not that familiar with the syntax and format. W=
hat I did was modify the resulting configure script.<br>

<br></div></div>I&#39;ve attached the configure script with my modification=
s but here is what I did.<br><br></div>The first test that had issues was t=
he tinysym test. The autoconf appears to create a test that checks for the =
&quot;$cross_compiling&quot; variable and if it is detected it exits with a=
n error indicating that it cannot run the test program while cross compilin=
g.<br>

<br></div>I changed the test to &quot;$cross_compilingx&quot; like the exam=
ple below. For every occurrence from tinysym through the rest of the config=
ure script I made this change. <br><div><br>if test &quot;$cross_compilingx=
&quot; =3D yes; then :<br>

=C2=A0 { { $as_echo &quot;$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd&=
#39;:&quot; &gt;&amp;5<br>$as_echo &quot;$as_me: error: in \`$ac_pwd&#39;:&=
quot; &gt;&amp;2;}<br>as_fn_error $? &quot;cannot run test program while cr=
oss compiling<br>

See \`config.log&#39; for more details&quot; &quot;$LINENO&quot; 5; }<br><b=
r><div>If I haven&#39;t missed any there 8 tests that I modified<br><br></d=
iv><div>tinysym<br>fopen<br></div><div>write after create<br></div><div>

unlink works on unwritable files<br></div><div>rename&#39; handles unwritab=
le source/target<br></div><div>`mmap&#39; is sane<br></div><div>checking si=
gnal received if referencing nonexistent part of mmapped file<br></div>

<div>`wait&#39; can handle ignored SIGCHLD<br></div><div><br></div><div>Der=
ek<br></div><div><br></div></div></div><div class=3D"gmail_extra"><br><br><=
div class=3D"gmail_quote">On Wed, May 1, 2013 at 3:02 PM, Thien-Thi Nguyen =
<span dir=3D"ltr">&lt;<a href=3D"mailto:[email protected]" target=3D"_blank">=
[email protected]</a>&gt;</span> wrote:<br>

<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">() Derek McEachern &lt;<a href=3D"mailto:der=
[email protected]">[email protected]</a>&gt;<br>
() Tue, 30 Apr 2013 10:54:37 -0500<br>
<div><div class=3D"h5"><br>
=C2=A0 =C2=A0I was trying to cross compile RCS and it appears that configur=
e will<br>
=C2=A0 =C2=A0error out with &quot;cannot run test program while cross compi=
ling&quot;<br>
<br>
=C2=A0 =C2=A0On a chance I modified the configure script to ignore the cros=
s<br>
=C2=A0 =C2=A0compile and it appears that it was able to make it ok.<br>
<br>
=C2=A0 =C2=A0I have users checking out the functionality now but are there =
any<br>
=C2=A0 =C2=A0known issues with cross compiling?<br>
<br>
</div></div>No known issues, but that&#39;s out of ignorance of cross-compi=
lation<br>
generally (on my part), not out of refinement towards proper support.<br>
IOW, i need to study (info &quot;(autoconf) Runtime&quot;) and carefully co=
mb<br>
through <a href=3D"http://configure.ac" target=3D"_blank">configure.ac</a> =
adding ACTION-IF-CROSS-COMPILING clauses to the<br>
tests, still.<br>
<br>
Could you post the modifications you made? =C2=A0That would help me focus.<=
br>
<span class=3D"HOEnZb"><font color=3D"#888888"><br>
--<br>
Thien-Thi Nguyen<br>
GPG key: 4C807502<br>
</font></span></blockquote></div><br></div>

--089e0111d9ca2b4e1404dbbcc5a4--
--089e0111d9ca2b4e1804dbbcc5a6
Content-Type: application/octet-stream; name=configure
Content-Disposition: attachment; filename=configure
Content-Transfer-Encoding: base64
X-Attachment-Id: f_hg8003oa1

IyEgL2Jpbi9zaAojIEd1ZXNzIHZhbHVlcyBmb3Igc3lzdGVtLWRlcGVuZGVudCB2YXJpYWJsZXMg
YW5kIGNyZWF0ZSBNYWtlZmlsZXMuCiMgR2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5IGZv
ciBHTlUgUkNTIDUuOC4yLgojCiMgUmVwb3J0IGJ1Z3MgdG8gPGJ1Zy1yY3NAZ251Lm9yZz4uCiMK
IwojIENvcHlyaWdodCAoQykgMTk5Mi0xOTk2LCAxOTk4LTIwMTIgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuCiMKIwojIFRoaXMgY29uZmlndXJlIHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJl
OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Np
b24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0LgojIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLSAjIwojIyBNNHNoIEluaXRpYWxpemF0aW9uLiAjIwojIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LSAjIwoKIyBCZSBtb3JlIEJvdXJuZSBjb21wYXRpYmxlCkRVQUxDQVNFPTE7IGV4cG9ydCBEVUFM
Q0FTRSAjIGZvciBNS1Mgc2gKaWYgdGVzdCAtbiAiJHtaU0hfVkVSU0lPTitzZXR9IiAmJiAoZW11
bGF0ZSBzaCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKICBlbXVsYXRlIHNoCiAgTlVMTENNRD06
CiAgIyBQcmUtNC4yIHZlcnNpb25zIG9mIFpzaCBkbyB3b3JkIHNwbGl0dGluZyBvbiAkezErIiRA
In0sIHdoaWNoCiAgIyBpcyBjb250cmFyeSB0byBvdXIgdXNhZ2UuICBEaXNhYmxlIHRoaXMgZmVh
dHVyZS4KICBhbGlhcyAtZyAnJHsxKyIkQCJ9Jz0nIiRAIicKICBzZXRvcHQgTk9fR0xPQl9TVUJT
VAplbHNlCiAgY2FzZSBgKHNldCAtbykgMj4vZGV2L251bGxgIGluICMoCiAgKnBvc2l4KikgOgog
ICAgc2V0IC1vIHBvc2l4IDs7ICMoCiAgKikgOgogICAgIDs7CmVzYWMKZmkKCgphc19ubD0nCicK
ZXhwb3J0IGFzX25sCiMgUHJpbnRpbmcgYSBsb25nIHN0cmluZyBjcmFzaGVzIFNvbGFyaXMgNyAv
dXNyL2Jpbi9wcmludGYuCmFzX2VjaG89J1xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFwnCmFzX2VjaG89JGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8k
YXNfZWNobwphc19lY2hvPSRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8k
YXNfZWNobwojIFByZWZlciBhIGtzaCBzaGVsbCBidWlsdGluIG92ZXIgYW4gZXh0ZXJuYWwgcHJp
bnRmIHByb2dyYW0gb24gU29sYXJpcywKIyBidXQgd2l0aG91dCB3YXN0aW5nIGZvcmtzIGZvciBi
YXNoIG9yIHpzaC4KaWYgdGVzdCAteiAiJEJBU0hfVkVSU0lPTiRaU0hfVkVSU0lPTiIgXAogICAg
JiYgKHRlc3QgIlhgcHJpbnQgLXIgLS0gJGFzX2VjaG9gIiA9ICJYJGFzX2VjaG8iKSAyPi9kZXYv
bnVsbDsgdGhlbgogIGFzX2VjaG89J3ByaW50IC1yIC0tJwogIGFzX2VjaG9fbj0ncHJpbnQgLXJu
IC0tJwplbGlmICh0ZXN0ICJYYHByaW50ZiAlcyAkYXNfZWNob2AiID0gIlgkYXNfZWNobyIpIDI+
L2Rldi9udWxsOyB0aGVuCiAgYXNfZWNobz0ncHJpbnRmICVzXG4nCiAgYXNfZWNob19uPSdwcmlu
dGYgJXMnCmVsc2UKICBpZiB0ZXN0ICJYYCgvdXNyL3VjYi9lY2hvIC1uIC1uICRhc19lY2hvKSAy
Pi9kZXYvbnVsbGAiID0gIlgtbiAkYXNfZWNobyI7IHRoZW4KICAgIGFzX2VjaG9fYm9keT0nZXZh
bCAvdXNyL3VjYi9lY2hvIC1uICIkMSRhc19ubCInCiAgICBhc19lY2hvX249Jy91c3IvdWNiL2Vj
aG8gLW4nCiAgZWxzZQogICAgYXNfZWNob19ib2R5PSdldmFsIGV4cHIgIlgkMSIgOiAiWFxcKC4q
XFwpIicKICAgIGFzX2VjaG9fbl9ib2R5PSdldmFsCiAgICAgIGFyZz0kMTsKICAgICAgY2FzZSAk
YXJnIGluICMoCiAgICAgICoiJGFzX25sIiopCglleHByICJYJGFyZyIgOiAiWFxcKC4qXFwpJGFz
X25sIjsKCWFyZz1gZXhwciAiWCRhcmciIDogIi4qJGFzX25sXFwoLipcXCkiYDs7CiAgICAgIGVz
YWM7CiAgICAgIGV4cHIgIlgkYXJnIiA6ICJYXFwoLipcXCkiIHwgdHIgLWQgIiRhc19ubCIKICAg
ICcKICAgIGV4cG9ydCBhc19lY2hvX25fYm9keQogICAgYXNfZWNob19uPSdzaCAtYyAkYXNfZWNo
b19uX2JvZHkgYXNfZWNobycKICBmaQogIGV4cG9ydCBhc19lY2hvX2JvZHkKICBhc19lY2hvPSdz
aCAtYyAkYXNfZWNob19ib2R5IGFzX2VjaG8nCmZpCgojIFRoZSB1c2VyIGlzIGFsd2F5cyByaWdo
dC4KaWYgdGVzdCAiJHtQQVRIX1NFUEFSQVRPUitzZXR9IiAhPSBzZXQ7IHRoZW4KICBQQVRIX1NF
UEFSQVRPUj06CiAgKFBBVEg9Jy9iaW47L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rl
di9udWxsIDI+JjEgJiYgewogICAgKFBBVEg9Jy9iaW46L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAt
YyA6KSA+L2Rldi9udWxsIDI+JjEgfHwKICAgICAgUEFUSF9TRVBBUkFUT1I9JzsnCiAgfQpmaQoK
CiMgSUZTCiMgV2UgbmVlZCBzcGFjZSwgdGFiIGFuZCBuZXcgbGluZSwgaW4gcHJlY2lzZWx5IHRo
YXQgb3JkZXIuICBRdW90aW5nIGlzCiMgdGhlcmUgdG8gcHJldmVudCBlZGl0b3JzIGZyb20gY29t
cGxhaW5pbmcgYWJvdXQgc3BhY2UtdGFiLgojIChJZiBfQVNfUEFUSF9XQUxLIHdlcmUgY2FsbGVk
IHdpdGggSUZTIHVuc2V0LCBpdCB3b3VsZCBkaXNhYmxlIHdvcmQKIyBzcGxpdHRpbmcgYnkgc2V0
dGluZyBJRlMgdG8gZW1wdHkgdmFsdWUuKQpJRlM9IiAiIgkkYXNfbmwiCgojIEZpbmQgd2hvIHdl
IGFyZS4gIExvb2sgaW4gdGhlIHBhdGggaWYgd2UgY29udGFpbiBubyBkaXJlY3Rvcnkgc2VwYXJh
dG9yLgphc19teXNlbGY9CmNhc2UgJDAgaW4gIygoCiAgKltcXC9dKiApIGFzX215c2VsZj0kMCA7
OwogICopIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKZm9yIGFzX2RpciBp
biAkUEFUSApkbwogIElGUz0kYXNfc2F2ZV9JRlMKICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19k
aXI9LgogICAgdGVzdCAtciAiJGFzX2Rpci8kMCIgJiYgYXNfbXlzZWxmPSRhc19kaXIvJDAgJiYg
YnJlYWsKICBkb25lCklGUz0kYXNfc2F2ZV9JRlMKCiAgICAgOzsKZXNhYwojIFdlIGRpZCBub3Qg
ZmluZCBvdXJzZWx2ZXMsIG1vc3QgcHJvYmFibHkgd2Ugd2VyZSBydW4gYXMgYHNoIENPTU1BTkQn
CiMgaW4gd2hpY2ggY2FzZSB3ZSBhcmUgbm90IHRvIGJlIGZvdW5kIGluIHRoZSBwYXRoLgppZiB0
ZXN0ICJ4JGFzX215c2VsZiIgPSB4OyB0aGVuCiAgYXNfbXlzZWxmPSQwCmZpCmlmIHRlc3QgISAt
ZiAiJGFzX215c2VsZiI7IHRoZW4KICAkYXNfZWNobyAiJGFzX215c2VsZjogZXJyb3I6IGNhbm5v
dCBmaW5kIG15c2VsZjsgcmVydW4gd2l0aCBhbiBhYnNvbHV0ZSBmaWxlIG5hbWUiID4mMgogIGV4
aXQgMQpmaQoKIyBVbnNldCB2YXJpYWJsZXMgdGhhdCB3ZSBkbyBub3QgbmVlZCBhbmQgd2hpY2gg
Y2F1c2UgYnVncyAoZS5nLiBpbgojIHByZS0zLjAgVVdJTiBrc2gpLiAgQnV0IGRvIG5vdCBjYXVz
ZSBidWdzIGluIGJhc2ggMi4wMTsgdGhlICJ8fCBleGl0IDEiCiMgc3VwcHJlc3NlcyBhbnkgIlNl
Z21lbnRhdGlvbiBmYXVsdCIgbWVzc2FnZSB0aGVyZS4gICcoKCcgY291bGQKIyB0cmlnZ2VyIGEg
YnVnIGluIHBka3NoIDUuMi4xNC4KZm9yIGFzX3ZhciBpbiBCQVNIX0VOViBFTlYgTUFJTCBNQUlM
UEFUSApkbyBldmFsIHRlc3QgeFwkeyRhc192YXIrc2V0fSA9IHhzZXQgXAogICYmICggKHVuc2V0
ICRhc192YXIpIHx8IGV4aXQgMSkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0ICRhc192YXIgfHwg
Ogpkb25lClBTMT0nJCAnClBTMj0nPiAnClBTND0nKyAnCgojIE5MUyBudWlzYW5jZXMuCkxDX0FM
TD1DCmV4cG9ydCBMQ19BTEwKTEFOR1VBR0U9QwpleHBvcnQgTEFOR1VBR0UKCiMgQ0RQQVRILgoo
dW5zZXQgQ0RQQVRIKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgQ0RQQVRICgojIFVzZSBhIHBy
b3BlciBpbnRlcm5hbCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBlbnN1cmUgd2UgZG9uJ3QgZmFs
bAogICMgaW50byBhbiBpbmZpbml0ZSBsb29wLCBjb250aW51b3VzbHkgcmUtZXhlY3V0aW5nIG91
cnNlbHZlcy4KICBpZiB0ZXN0IHgiJHtfYXNfY2FuX3JlZXhlY30iICE9IHhubyAmJiB0ZXN0ICJ4
JENPTkZJR19TSEVMTCIgIT0geDsgdGhlbgogICAgX2FzX2Nhbl9yZWV4ZWM9bm87IGV4cG9ydCBf
YXNfY2FuX3JlZXhlYzsKICAgICMgV2UgY2Fubm90IHlldCBhc3N1bWUgYSBkZWNlbnQgc2hlbGws
IHNvIHdlIGhhdmUgdG8gcHJvdmlkZSBhCiMgbmV1dHJhbGl6YXRpb24gdmFsdWUgZm9yIHNoZWxs
cyB3aXRob3V0IHVuc2V0OyBhbmQgdGhpcyBhbHNvCiMgd29ya3MgYXJvdW5kIHNoZWxscyB0aGF0
IGNhbm5vdCB1bnNldCBub25leGlzdGVudCB2YXJpYWJsZXMuCiMgUHJlc2VydmUgLXYgYW5kIC14
IHRvIHRoZSByZXBsYWNlbWVudCBzaGVsbC4KQkFTSF9FTlY9L2Rldi9udWxsCkVOVj0vZGV2L251
bGwKKHVuc2V0IEJBU0hfRU5WKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgQkFTSF9FTlYgRU5W
CmNhc2UgJC0gaW4gIyAoKCgoCiAgKnYqeCogfCAqeCp2KiApIGFzX29wdHM9LXZ4IDs7CiAgKnYq
ICkgYXNfb3B0cz0tdiA7OwogICp4KiApIGFzX29wdHM9LXggOzsKICAqICkgYXNfb3B0cz0gOzsK
ZXNhYwpleGVjICRDT05GSUdfU0hFTEwgJGFzX29wdHMgIiRhc19teXNlbGYiICR7MSsiJEAifQoj
IEFkbWl0dGVkbHksIHRoaXMgaXMgcXVpdGUgcGFyYW5vaWQsIHNpbmNlIGFsbCB0aGUga25vd24g
c2hlbGxzIGJhaWwKIyBvdXQgYWZ0ZXIgYSBmYWlsZWQgYGV4ZWMnLgokYXNfZWNobyAiJDA6IGNv
dWxkIG5vdCByZS1leGVjdXRlIHdpdGggJENPTkZJR19TSEVMTCIgPiYyCmFzX2ZuX2V4aXQgMjU1
CiAgZmkKICAjIFdlIGRvbid0IHdhbnQgdGhpcyB0byBwcm9wYWdhdGUgdG8gb3RoZXIgc3VicHJv
Y2Vzc2VzLgogICAgICAgICAgeyBfYXNfY2FuX3JlZXhlYz07IHVuc2V0IF9hc19jYW5fcmVleGVj
O30KaWYgdGVzdCAieCRDT05GSUdfU0hFTEwiID0geDsgdGhlbgogIGFzX2JvdXJuZV9jb21wYXRp
YmxlPSJpZiB0ZXN0IC1uIFwiXCR7WlNIX1ZFUlNJT04rc2V0fVwiICYmIChlbXVsYXRlIHNoKSA+
L2Rldi9udWxsIDI+JjE7IHRoZW4gOgogIGVtdWxhdGUgc2gKICBOVUxMQ01EPToKICAjIFByZS00
LjIgdmVyc2lvbnMgb2YgWnNoIGRvIHdvcmQgc3BsaXR0aW5nIG9uIFwkezErXCJcJEBcIn0sIHdo
aWNoCiAgIyBpcyBjb250cmFyeSB0byBvdXIgdXNhZ2UuICBEaXNhYmxlIHRoaXMgZmVhdHVyZS4K
ICBhbGlhcyAtZyAnXCR7MStcIlwkQFwifSc9J1wiXCRAXCInCiAgc2V0b3B0IE5PX0dMT0JfU1VC
U1QKZWxzZQogIGNhc2UgXGAoc2V0IC1vKSAyPi9kZXYvbnVsbFxgIGluICMoCiAgKnBvc2l4Kikg
OgogICAgc2V0IC1vIHBvc2l4IDs7ICMoCiAgKikgOgogICAgIDs7CmVzYWMKZmkKIgogIGFzX3Jl
cXVpcmVkPSJhc19mbl9yZXR1cm4gKCkgeyAoZXhpdCBcJDEpOyB9CmFzX2ZuX3N1Y2Nlc3MgKCkg
eyBhc19mbl9yZXR1cm4gMDsgfQphc19mbl9mYWlsdXJlICgpIHsgYXNfZm5fcmV0dXJuIDE7IH0K
YXNfZm5fcmV0X3N1Y2Nlc3MgKCkgeyByZXR1cm4gMDsgfQphc19mbl9yZXRfZmFpbHVyZSAoKSB7
IHJldHVybiAxOyB9CgpleGl0Y29kZT0wCmFzX2ZuX3N1Y2Nlc3MgfHwgeyBleGl0Y29kZT0xOyBl
Y2hvIGFzX2ZuX3N1Y2Nlc3MgZmFpbGVkLjsgfQphc19mbl9mYWlsdXJlICYmIHsgZXhpdGNvZGU9
MTsgZWNobyBhc19mbl9mYWlsdXJlIHN1Y2NlZWRlZC47IH0KYXNfZm5fcmV0X3N1Y2Nlc3MgfHwg
eyBleGl0Y29kZT0xOyBlY2hvIGFzX2ZuX3JldF9zdWNjZXNzIGZhaWxlZC47IH0KYXNfZm5fcmV0
X2ZhaWx1cmUgJiYgeyBleGl0Y29kZT0xOyBlY2hvIGFzX2ZuX3JldF9mYWlsdXJlIHN1Y2NlZWRl
ZC47IH0KaWYgKCBzZXQgeDsgYXNfZm5fcmV0X3N1Y2Nlc3MgeSAmJiB0ZXN0IHggPSBcIlwkMVwi
ICk7IHRoZW4gOgoKZWxzZQogIGV4aXRjb2RlPTE7IGVjaG8gcG9zaXRpb25hbCBwYXJhbWV0ZXJz
IHdlcmUgbm90IHNhdmVkLgpmaQp0ZXN0IHhcJGV4aXRjb2RlID0geDAgfHwgZXhpdCAxCnRlc3Qg
LXggLyB8fCBleGl0IDEiCiAgYXNfc3VnZ2VzdGVkPSIgIGFzX2xpbmVub18xPSI7YXNfc3VnZ2Vz
dGVkPSRhc19zdWdnZXN0ZWQkTElORU5PO2FzX3N1Z2dlc3RlZD0kYXNfc3VnZ2VzdGVkIiBhc19s
aW5lbm9fMWE9XCRMSU5FTk8KICBhc19saW5lbm9fMj0iO2FzX3N1Z2dlc3RlZD0kYXNfc3VnZ2Vz
dGVkJExJTkVOTzthc19zdWdnZXN0ZWQ9JGFzX3N1Z2dlc3RlZCIgYXNfbGluZW5vXzJhPVwkTElO
RU5PCiAgZXZhbCAndGVzdCBcInhcJGFzX2xpbmVub18xJ1wkYXNfcnVuJ1wiICE9IFwieFwkYXNf
bGluZW5vXzInXCRhc19ydW4nXCIgJiYKICB0ZXN0IFwieFxgZXhwciBcJGFzX2xpbmVub18xJ1wk
YXNfcnVuJyArIDFcYFwiID0gXCJ4XCRhc19saW5lbm9fMidcJGFzX3J1bidcIicgfHwgZXhpdCAx
CnRlc3QgXCQoKCAxICsgMSApKSA9IDIgfHwgZXhpdCAxIgogIGlmIChldmFsICIkYXNfcmVxdWly
ZWQiKSAyPi9kZXYvbnVsbDsgdGhlbiA6CiAgYXNfaGF2ZV9yZXF1aXJlZD15ZXMKZWxzZQogIGFz
X2hhdmVfcmVxdWlyZWQ9bm8KZmkKICBpZiB0ZXN0IHgkYXNfaGF2ZV9yZXF1aXJlZCA9IHh5ZXMg
JiYgKGV2YWwgIiRhc19zdWdnZXN0ZWQiKSAyPi9kZXYvbnVsbDsgdGhlbiA6CgplbHNlCiAgYXNf
c2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgphc19mb3VuZD1mYWxzZQpmb3IgYXNf
ZGlyIGluIC9iaW4kUEFUSF9TRVBBUkFUT1IvdXNyL2JpbiRQQVRIX1NFUEFSQVRPUiRQQVRICmRv
CiAgSUZTPSRhc19zYXZlX0lGUwogIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgYXNf
Zm91bmQ9OgogIGNhc2UgJGFzX2RpciBpbiAjKAoJIC8qKQoJICAgZm9yIGFzX2Jhc2UgaW4gc2gg
YmFzaCBrc2ggc2g1OyBkbwoJICAgICAjIFRyeSBvbmx5IHNoZWxscyB0aGF0IGV4aXN0LCB0byBz
YXZlIHNldmVyYWwgZm9ya3MuCgkgICAgIGFzX3NoZWxsPSRhc19kaXIvJGFzX2Jhc2UKCSAgICAg
aWYgeyB0ZXN0IC1mICIkYXNfc2hlbGwiIHx8IHRlc3QgLWYgIiRhc19zaGVsbC5leGUiOyB9ICYm
CgkJICAgIHsgJGFzX2VjaG8gIiRhc19ib3VybmVfY29tcGF0aWJsZSIiJGFzX3JlcXVpcmVkIiB8
IGFzX3J1bj1hICIkYXNfc2hlbGwiOyB9IDI+L2Rldi9udWxsOyB0aGVuIDoKICBDT05GSUdfU0hF
TEw9JGFzX3NoZWxsIGFzX2hhdmVfcmVxdWlyZWQ9eWVzCgkJICAgaWYgeyAkYXNfZWNobyAiJGFz
X2JvdXJuZV9jb21wYXRpYmxlIiIkYXNfc3VnZ2VzdGVkIiB8IGFzX3J1bj1hICIkYXNfc2hlbGwi
OyB9IDI+L2Rldi9udWxsOyB0aGVuIDoKICBicmVhayAyCmZpCmZpCgkgICBkb25lOzsKICAgICAg
IGVzYWMKICBhc19mb3VuZD1mYWxzZQpkb25lCiRhc19mb3VuZCB8fCB7IGlmIHsgdGVzdCAtZiAi
JFNIRUxMIiB8fCB0ZXN0IC1mICIkU0hFTEwuZXhlIjsgfSAmJgoJICAgICAgeyAkYXNfZWNobyAi
JGFzX2JvdXJuZV9jb21wYXRpYmxlIiIkYXNfcmVxdWlyZWQiIHwgYXNfcnVuPWEgIiRTSEVMTCI7
IH0gMj4vZGV2L251bGw7IHRoZW4gOgogIENPTkZJR19TSEVMTD0kU0hFTEwgYXNfaGF2ZV9yZXF1
aXJlZD15ZXMKZmk7IH0KSUZTPSRhc19zYXZlX0lGUwoKCiAgICAgIGlmIHRlc3QgIngkQ09ORklH
X1NIRUxMIiAhPSB4OyB0aGVuIDoKICBleHBvcnQgQ09ORklHX1NIRUxMCiAgICAgICAgICAgICAj
IFdlIGNhbm5vdCB5ZXQgYXNzdW1lIGEgZGVjZW50IHNoZWxsLCBzbyB3ZSBoYXZlIHRvIHByb3Zp
ZGUgYQojIG5ldXRyYWxpemF0aW9uIHZhbHVlIGZvciBzaGVsbHMgd2l0aG91dCB1bnNldDsgYW5k
IHRoaXMgYWxzbwojIHdvcmtzIGFyb3VuZCBzaGVsbHMgdGhhdCBjYW5ub3QgdW5zZXQgbm9uZXhp
c3RlbnQgdmFyaWFibGVzLgojIFByZXNlcnZlIC12IGFuZCAteCB0byB0aGUgcmVwbGFjZW1lbnQg
c2hlbGwuCkJBU0hfRU5WPS9kZXYvbnVsbApFTlY9L2Rldi9udWxsCih1bnNldCBCQVNIX0VOVikg
Pi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IEJBU0hfRU5WIEVOVgpjYXNlICQtIGluICMgKCgoKAog
ICp2KngqIHwgKngqdiogKSBhc19vcHRzPS12eCA7OwogICp2KiApIGFzX29wdHM9LXYgOzsKICAq
eCogKSBhc19vcHRzPS14IDs7CiAgKiApIGFzX29wdHM9IDs7CmVzYWMKZXhlYyAkQ09ORklHX1NI
RUxMICRhc19vcHRzICIkYXNfbXlzZWxmIiAkezErIiRAIn0KIyBBZG1pdHRlZGx5LCB0aGlzIGlz
IHF1aXRlIHBhcmFub2lkLCBzaW5jZSBhbGwgdGhlIGtub3duIHNoZWxscyBiYWlsCiMgb3V0IGFm
dGVyIGEgZmFpbGVkIGBleGVjJy4KJGFzX2VjaG8gIiQwOiBjb3VsZCBub3QgcmUtZXhlY3V0ZSB3
aXRoICRDT05GSUdfU0hFTEwiID4mMgpleGl0IDI1NQpmaQoKICAgIGlmIHRlc3QgeCRhc19oYXZl
X3JlcXVpcmVkID0geG5vOyB0aGVuIDoKICAkYXNfZWNobyAiJDA6IFRoaXMgc2NyaXB0IHJlcXVp
cmVzIGEgc2hlbGwgbW9yZSBtb2Rlcm4gdGhhbiBhbGwiCiAgJGFzX2VjaG8gIiQwOiB0aGUgc2hl
bGxzIHRoYXQgSSBmb3VuZCBvbiB5b3VyIHN5c3RlbS4iCiAgaWYgdGVzdCB4JHtaU0hfVkVSU0lP
TitzZXR9ID0geHNldCA7IHRoZW4KICAgICRhc19lY2hvICIkMDogSW4gcGFydGljdWxhciwgenNo
ICRaU0hfVkVSU0lPTiBoYXMgYnVncyBhbmQgc2hvdWxkIgogICAgJGFzX2VjaG8gIiQwOiBiZSB1
cGdyYWRlZCB0byB6c2ggNC4zLjQgb3IgbGF0ZXIuIgogIGVsc2UKICAgICRhc19lY2hvICIkMDog
UGxlYXNlIHRlbGwgYnVnLWF1dG9jb25mQGdudS5vcmcgYW5kIGJ1Zy1yY3NAZ251Lm9yZwokMDog
YWJvdXQgeW91ciBzeXN0ZW0sIGluY2x1ZGluZyBhbnkgZXJyb3IgcG9zc2libHkgb3V0cHV0CiQw
OiBiZWZvcmUgdGhpcyBtZXNzYWdlLiBUaGVuIGluc3RhbGwgYSBtb2Rlcm4gc2hlbGwsIG9yCiQw
OiBtYW51YWxseSBydW4gdGhlIHNjcmlwdCB1bmRlciBzdWNoIGEgc2hlbGwgaWYgeW91IGRvCiQw
OiBoYXZlIG9uZS4iCiAgZmkKICBleGl0IDEKZmkKZmkKZmkKU0hFTEw9JHtDT05GSUdfU0hFTEwt
L2Jpbi9zaH0KZXhwb3J0IFNIRUxMCiMgVW5zZXQgbW9yZSB2YXJpYWJsZXMga25vd24gdG8gaW50
ZXJmZXJlIHdpdGggYmVoYXZpb3Igb2YgY29tbW9uIHRvb2xzLgpDTElDT0xPUl9GT1JDRT0gR1JF
UF9PUFRJT05TPQp1bnNldCBDTElDT0xPUl9GT1JDRSBHUkVQX09QVElPTlMKCiMjIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLSAjIwojIyBNNHNoIFNoZWxsIEZ1bmN0aW9ucy4gIyMKIyMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tICMjCiMgYXNfZm5fdW5zZXQgVkFSCiMgLS0tLS0tLS0tLS0tLS0tCiMgUG9y
dGFibHkgdW5zZXQgVkFSLgphc19mbl91bnNldCAoKQp7CiAgeyBldmFsICQxPTsgdW5zZXQgJDE7
fQp9CmFzX3Vuc2V0PWFzX2ZuX3Vuc2V0CgojIGFzX2ZuX3NldF9zdGF0dXMgU1RBVFVTCiMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBTZXQgJD8gdG8gU1RBVFVTLCB3aXRob3V0IGZvcmtpbmcu
CmFzX2ZuX3NldF9zdGF0dXMgKCkKewogIHJldHVybiAkMQp9ICMgYXNfZm5fc2V0X3N0YXR1cwoK
IyBhc19mbl9leGl0IFNUQVRVUwojIC0tLS0tLS0tLS0tLS0tLS0tCiMgRXhpdCB0aGUgc2hlbGwg
d2l0aCBTVEFUVVMsIGV2ZW4gaW4gYSAidHJhcCAwIiBvciAic2V0IC1lIiBjb250ZXh0Lgphc19m
bl9leGl0ICgpCnsKICBzZXQgK2UKICBhc19mbl9zZXRfc3RhdHVzICQxCiAgZXhpdCAkMQp9ICMg
YXNfZm5fZXhpdAoKIyBhc19mbl9ta2Rpcl9wCiMgLS0tLS0tLS0tLS0tLQojIENyZWF0ZSAiJGFz
X2RpciIgYXMgYSBkaXJlY3RvcnksIGluY2x1ZGluZyBwYXJlbnRzIGlmIG5lY2Vzc2FyeS4KYXNf
Zm5fbWtkaXJfcCAoKQp7CgogIGNhc2UgJGFzX2RpciBpbiAjKAogIC0qKSBhc19kaXI9Li8kYXNf
ZGlyOzsKICBlc2FjCiAgdGVzdCAtZCAiJGFzX2RpciIgfHwgZXZhbCAkYXNfbWtkaXJfcCB8fCB7
CiAgICBhc19kaXJzPQogICAgd2hpbGUgOjsgZG8KICAgICAgY2FzZSAkYXNfZGlyIGluICMoCiAg
ICAgICpcJyopIGFzX3FkaXI9YCRhc19lY2hvICIkYXNfZGlyIiB8IHNlZCAicy8nLydcXFxcXFxc
XCcnL2ciYDs7ICMnKAogICAgICAqKSBhc19xZGlyPSRhc19kaXI7OwogICAgICBlc2FjCiAgICAg
IGFzX2RpcnM9IickYXNfcWRpcicgJGFzX2RpcnMiCiAgICAgIGFzX2Rpcj1gJGFzX2Rpcm5hbWUg
LS0gIiRhc19kaXIiIHx8CiRhc19leHByIFgiJGFzX2RpciIgOiAnWFwoLipbXi9dXCkvLypbXi9d
W14vXSovKiQnIFx8IFwKCSBYIiRhc19kaXIiIDogJ1hcKC8vXClbXi9dJyBcfCBcCgkgWCIkYXNf
ZGlyIiA6ICdYXCgvL1wpJCcgXHwgXAoJIFgiJGFzX2RpciIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rl
di9udWxsIHx8CiRhc19lY2hvIFgiJGFzX2RpciIgfAogICAgc2VkICcvXlhcKC4qW14vXVwpXC9c
LypbXi9dW14vXSpcLyokL3sKCSAgICBzLy9cMS8KCSAgICBxCgkgIH0KCSAgL15YXChcL1wvXClb
Xi9dLiovewoJICAgIHMvL1wxLwoJICAgIHEKCSAgfQoJICAvXlhcKFwvXC9cKSQvewoJICAgIHMv
L1wxLwoJICAgIHEKCSAgfQoJICAvXlhcKFwvXCkuKi97CgkgICAgcy8vXDEvCgkgICAgcQoJICB9
CgkgIHMvLiovLi87IHEnYAogICAgICB0ZXN0IC1kICIkYXNfZGlyIiAmJiBicmVhawogICAgZG9u
ZQogICAgdGVzdCAteiAiJGFzX2RpcnMiIHx8IGV2YWwgIm1rZGlyICRhc19kaXJzIgogIH0gfHwg
dGVzdCAtZCAiJGFzX2RpciIgfHwgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBjcmVhdGUgZGlyZWN0
b3J5ICRhc19kaXIiCgoKfSAjIGFzX2ZuX21rZGlyX3AKCiMgYXNfZm5fZXhlY3V0YWJsZV9wIEZJ
TEUKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRlc3QgaWYgRklMRSBpcyBhbiBleGVjdXRh
YmxlIHJlZ3VsYXIgZmlsZS4KYXNfZm5fZXhlY3V0YWJsZV9wICgpCnsKICB0ZXN0IC1mICIkMSIg
JiYgdGVzdCAteCAiJDEiCn0gIyBhc19mbl9leGVjdXRhYmxlX3AKIyBhc19mbl9hcHBlbmQgVkFS
IFZBTFVFCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEFwcGVuZCB0aGUgdGV4dCBpbiBWQUxV
RSB0byB0aGUgZW5kIG9mIHRoZSBkZWZpbml0aW9uIGNvbnRhaW5lZCBpbiBWQVIuIFRha2UKIyBh
ZHZhbnRhZ2Ugb2YgYW55IHNoZWxsIG9wdGltaXphdGlvbnMgdGhhdCBhbGxvdyBhbW9ydGl6ZWQg
bGluZWFyIGdyb3d0aCBvdmVyCiMgcmVwZWF0ZWQgYXBwZW5kcywgaW5zdGVhZCBvZiB0aGUgdHlw
aWNhbCBxdWFkcmF0aWMgZ3Jvd3RoIHByZXNlbnQgaW4gbmFpdmUKIyBpbXBsZW1lbnRhdGlvbnMu
CmlmIChldmFsICJhc192YXI9MTsgYXNfdmFyKz0yOyB0ZXN0IHhcJGFzX3ZhciA9IHgxMiIpIDI+
L2Rldi9udWxsOyB0aGVuIDoKICBldmFsICdhc19mbl9hcHBlbmQgKCkKICB7CiAgICBldmFsICQx
Kz1cJDIKICB9JwplbHNlCiAgYXNfZm5fYXBwZW5kICgpCiAgewogICAgZXZhbCAkMT1cJCQxXCQy
CiAgfQpmaSAjIGFzX2ZuX2FwcGVuZAoKIyBhc19mbl9hcml0aCBBUkcuLi4KIyAtLS0tLS0tLS0t
LS0tLS0tLS0KIyBQZXJmb3JtIGFyaXRobWV0aWMgZXZhbHVhdGlvbiBvbiB0aGUgQVJHcywgYW5k
IHN0b3JlIHRoZSByZXN1bHQgaW4gdGhlCiMgZ2xvYmFsICRhc192YWwuIFRha2UgYWR2YW50YWdl
IG9mIHNoZWxscyB0aGF0IGNhbiBhdm9pZCBmb3Jrcy4gVGhlIGFyZ3VtZW50cwojIG11c3QgYmUg
cG9ydGFibGUgYWNyb3NzICQoKCkpIGFuZCBleHByLgppZiAoZXZhbCAidGVzdCBcJCgoIDEgKyAx
ICkpID0gMiIpIDI+L2Rldi9udWxsOyB0aGVuIDoKICBldmFsICdhc19mbl9hcml0aCAoKQogIHsK
ICAgIGFzX3ZhbD0kKCggJCogKSkKICB9JwplbHNlCiAgYXNfZm5fYXJpdGggKCkKICB7CiAgICBh
c192YWw9YGV4cHIgIiRAIiB8fCB0ZXN0ICQ/IC1lcSAxYAogIH0KZmkgIyBhc19mbl9hcml0aAoK
CiMgYXNfZm5fZXJyb3IgU1RBVFVTIEVSUk9SIFtMSU5FTk8gTE9HX0ZEXQojIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBPdXRwdXQgImBiYXNlbmFtZSAkMGA6IGVy
cm9yOiBFUlJPUiIgdG8gc3RkZXJyLiBJZiBMSU5FTk8gYW5kIExPR19GRCBhcmUKIyBwcm92aWRl
ZCwgYWxzbyBvdXRwdXQgdGhlIGVycm9yIHRvIExPR19GRCwgcmVmZXJlbmNpbmcgTElORU5PLiBU
aGVuIGV4aXQgdGhlCiMgc2NyaXB0IHdpdGggU1RBVFVTLCB1c2luZyAxIGlmIHRoYXQgd2FzIDAu
CmFzX2ZuX2Vycm9yICgpCnsKICBhc19zdGF0dXM9JDE7IHRlc3QgJGFzX3N0YXR1cyAtZXEgMCAm
JiBhc19zdGF0dXM9MQogIGlmIHRlc3QgIiQ0IjsgdGhlbgogICAgYXNfbGluZW5vPSR7YXNfbGlu
ZW5vLSIkMyJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFj
awogICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6ICQyIiA+
JiQ0CiAgZmkKICAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogJDIiID4mMgogIGFzX2ZuX2V4aXQg
JGFzX3N0YXR1cwp9ICMgYXNfZm5fZXJyb3IKCmlmIGV4cHIgYSA6ICdcKGFcKScgPi9kZXYvbnVs
bCAyPiYxICYmCiAgIHRlc3QgIlhgZXhwciAwMDAwMSA6ICcuKlwoLi4uXCknYCIgPSBYMDAxOyB0
aGVuCiAgYXNfZXhwcj1leHByCmVsc2UKICBhc19leHByPWZhbHNlCmZpCgppZiAoYmFzZW5hbWUg
LS0gLykgPi9kZXYvbnVsbCAyPiYxICYmIHRlc3QgIlhgYmFzZW5hbWUgLS0gLyAyPiYxYCIgPSAi
WC8iOyB0aGVuCiAgYXNfYmFzZW5hbWU9YmFzZW5hbWUKZWxzZQogIGFzX2Jhc2VuYW1lPWZhbHNl
CmZpCgppZiAoYXNfZGlyPWBkaXJuYW1lIC0tIC9gICYmIHRlc3QgIlgkYXNfZGlyIiA9IFgvKSA+
L2Rldi9udWxsIDI+JjE7IHRoZW4KICBhc19kaXJuYW1lPWRpcm5hbWUKZWxzZQogIGFzX2Rpcm5h
bWU9ZmFsc2UKZmkKCmFzX21lPWAkYXNfYmFzZW5hbWUgLS0gIiQwIiB8fAokYXNfZXhwciBYLyIk
MCIgOiAnLiovXChbXi9dW14vXSpcKS8qJCcgXHwgXAoJIFgiJDAiIDogJ1hcKC8vXCkkJyBcfCBc
CgkgWCIkMCIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8CiRhc19lY2hvIFgvIiQwIiB8
CiAgICBzZWQgJy9eLipcL1woW14vXVteL10qXClcLyokL3sKCSAgICBzLy9cMS8KCSAgICBxCgkg
IH0KCSAgL15YXC9cKFwvXC9cKSQvewoJICAgIHMvL1wxLwoJICAgIHEKCSAgfQoJICAvXlhcL1wo
XC9cKS4qL3sKCSAgICBzLy9cMS8KCSAgICBxCgkgIH0KCSAgcy8uKi8uLzsgcSdgCgojIEF2b2lk
IGRlcGVuZGluZyB1cG9uIENoYXJhY3RlciBSYW5nZXMuCmFzX2NyX2xldHRlcnM9J2FiY2RlZmdo
aWprbG1ub3BxcnN0dXZ3eHl6Jwphc19jcl9MRVRURVJTPSdBQkNERUZHSElKS0xNTk9QUVJTVFVW
V1hZWicKYXNfY3JfTGV0dGVycz0kYXNfY3JfbGV0dGVycyRhc19jcl9MRVRURVJTCmFzX2NyX2Rp
Z2l0cz0nMDEyMzQ1Njc4OScKYXNfY3JfYWxudW09JGFzX2NyX0xldHRlcnMkYXNfY3JfZGlnaXRz
CgoKICBhc19saW5lbm9fMT0kTElORU5PIGFzX2xpbmVub18xYT0kTElORU5PCiAgYXNfbGluZW5v
XzI9JExJTkVOTyBhc19saW5lbm9fMmE9JExJTkVOTwogIGV2YWwgJ3Rlc3QgIngkYXNfbGluZW5v
XzEnJGFzX3J1biciICE9ICJ4JGFzX2xpbmVub18yJyRhc19ydW4nIiAmJgogIHRlc3QgInhgZXhw
ciAkYXNfbGluZW5vXzEnJGFzX3J1bicgKyAxYCIgPSAieCRhc19saW5lbm9fMickYXNfcnVuJyIn
IHx8IHsKICAjIEJsYW1lIExlZSBFLiBNY01haG9uICgxOTMxLTE5ODkpIGZvciBzZWQncyBzeW50
YXguICA6LSkKICBzZWQgLW4gJwogICAgcAogICAgL1skXUxJTkVOTy89CiAgJyA8JGFzX215c2Vs
ZiB8CiAgICBzZWQgJwogICAgICBzL1skXUxJTkVOTy4qLyYtLwogICAgICB0IGxpbmVubwogICAg
ICBiCiAgICAgIDpsaW5lbm8KICAgICAgTgogICAgICA6bG9vcAogICAgICBzL1skXUxJTkVOT1wo
W14nJGFzX2NyX2FsbnVtJ19dLipcblwpXCguKlwpL1wyXDFcMi8KICAgICAgdCBsb29wCiAgICAg
IHMvLVxuLiovLwogICAgJyA+JGFzX21lLmxpbmVubyAmJgogIGNobW9kICt4ICIkYXNfbWUubGlu
ZW5vIiB8fAogICAgeyAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGNyZWF0ZSAkYXNf
bWUubGluZW5vOyByZXJ1biB3aXRoIGEgUE9TSVggc2hlbGwiID4mMjsgYXNfZm5fZXhpdCAxOyB9
CgogICMgSWYgd2UgaGFkIHRvIHJlLWV4ZWN1dGUgd2l0aCAkQ09ORklHX1NIRUxMLCB3ZSdyZSBl
bnN1cmVkIHRvIGhhdmUKICAjIGFscmVhZHkgZG9uZSB0aGF0LCBzbyBlbnN1cmUgd2UgZG9uJ3Qg
dHJ5IHRvIGRvIHNvIGFnYWluIGFuZCBmYWxsCiAgIyBpbiBhbiBpbmZpbml0ZSBsb29wLiAgVGhp
cyBoYXMgYWxyZWFkeSBoYXBwZW5lZCBpbiBwcmFjdGljZS4KICBfYXNfY2FuX3JlZXhlYz1ubzsg
ZXhwb3J0IF9hc19jYW5fcmVleGVjCiAgIyBEb24ndCB0cnkgdG8gZXhlYyBhcyBpdCBjaGFuZ2Vz
ICRbMF0sIGNhdXNpbmcgYWxsIHNvcnQgb2YgcHJvYmxlbXMKICAjICh0aGUgZGlybmFtZSBvZiAk
WzBdIGlzIG5vdCB0aGUgcGxhY2Ugd2hlcmUgd2UgbWlnaHQgZmluZCB0aGUKICAjIG9yaWdpbmFs
IGFuZCBzbyBvbi4gIEF1dG9jb25mIGlzIGVzcGVjaWFsbHkgc2Vuc2l0aXZlIHRvIHRoaXMpLgog
IC4gIi4vJGFzX21lLmxpbmVubyIKICAjIEV4aXQgc3RhdHVzIGlzIHRoYXQgb2YgdGhlIGxhc3Qg
Y29tbWFuZC4KICBleGl0Cn0KCkVDSE9fQz0gRUNIT19OPSBFQ0hPX1Q9CmNhc2UgYGVjaG8gLW4g
eGAgaW4gIygoKCgoCi1uKikKICBjYXNlIGBlY2hvICd4eVxjJ2AgaW4KICAqYyopIEVDSE9fVD0n
CSc7OwkjIEVDSE9fVCBpcyBzaW5nbGUgdGFiIGNoYXJhY3Rlci4KICB4eSkgIEVDSE9fQz0nXGMn
OzsKICAqKSAgIGVjaG8gYGVjaG8ga3NoODggYnVnIG9uIEFJWCA2LjFgID4gL2Rldi9udWxsCiAg
ICAgICBFQ0hPX1Q9JwknOzsKICBlc2FjOzsKKikKICBFQ0hPX049Jy1uJzs7CmVzYWMKCnJtIC1m
IGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5maWxlCmlmIHRlc3QgLWQgY29uZiQkLmRpcjsgdGhl
bgogIHJtIC1mIGNvbmYkJC5kaXIvY29uZiQkLmZpbGUKZWxzZQogIHJtIC1mIGNvbmYkJC5kaXIK
ICBta2RpciBjb25mJCQuZGlyIDI+L2Rldi9udWxsCmZpCmlmIChlY2hvID5jb25mJCQuZmlsZSkg
Mj4vZGV2L251bGw7IHRoZW4KICBpZiBsbiAtcyBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251
bGw7IHRoZW4KICAgIGFzX2xuX3M9J2xuIC1zJwogICAgIyAuLi4gYnV0IHRoZXJlIGFyZSB0d28g
Z290Y2hhczoKICAgICMgMSkgT24gTVNZUywgYm90aCBgbG4gLXMgZmlsZSBkaXInIGFuZCBgbG4g
ZmlsZSBkaXInIGZhaWwuCiAgICAjIDIpIERKR1BQIDwgMi4wNCBoYXMgbm8gc3ltbGlua3M7IGBs
biAtcycgY3JlYXRlcyBhIHdyYXBwZXIgZXhlY3V0YWJsZS4KICAgICMgSW4gYm90aCBjYXNlcywg
d2UgaGF2ZSB0byBkZWZhdWx0IHRvIGBjcCAtcFInLgogICAgbG4gLXMgY29uZiQkLmZpbGUgY29u
ZiQkLmRpciAyPi9kZXYvbnVsbCAmJiB0ZXN0ICEgLWYgY29uZiQkLmV4ZSB8fAogICAgICBhc19s
bl9zPSdjcCAtcFInCiAgZWxpZiBsbiBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251bGw7IHRo
ZW4KICAgIGFzX2xuX3M9bG4KICBlbHNlCiAgICBhc19sbl9zPSdjcCAtcFInCiAgZmkKZWxzZQog
IGFzX2xuX3M9J2NwIC1wUicKZmkKcm0gLWYgY29uZiQkIGNvbmYkJC5leGUgY29uZiQkLmRpci9j
b25mJCQuZmlsZSBjb25mJCQuZmlsZQpybWRpciBjb25mJCQuZGlyIDI+L2Rldi9udWxsCgppZiBt
a2RpciAtcCAuIDI+L2Rldi9udWxsOyB0aGVuCiAgYXNfbWtkaXJfcD0nbWtkaXIgLXAgIiRhc19k
aXIiJwplbHNlCiAgdGVzdCAtZCAuLy1wICYmIHJtZGlyIC4vLXAKICBhc19ta2Rpcl9wPWZhbHNl
CmZpCgphc190ZXN0X3g9J3Rlc3QgLXgnCmFzX2V4ZWN1dGFibGVfcD1hc19mbl9leGVjdXRhYmxl
X3AKCiMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCBDUFAgbmFt
ZS4KYXNfdHJfY3BwPSJldmFsIHNlZCAneSUqJGFzX2NyX2xldHRlcnMlUCRhc19jcl9MRVRURVJT
JTtzJVteXyRhc19jcl9hbG51bV0lXyVnJyIKCiMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3Ry
aW5nIG9udG8gYSB2YWxpZCB2YXJpYWJsZSBuYW1lLgphc190cl9zaD0iZXZhbCBzZWQgJ3klKisl
cHAlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWcnIgoKCnRlc3QgLW4gIiRESkRJUiIgfHwgZXhlYyA3
PCYwIDwvZGV2L251bGwKZXhlYyA2PiYxCgojIE5hbWUgb2YgdGhlIGhvc3QuCiMgaG9zdG5hbWUg
b24gc29tZSBzeXN0ZW1zIChTVlIzLjIsIG9sZCBHTlUvTGludXgpIHJldHVybnMgYSBib2d1cyBl
eGl0IHN0YXR1cywKIyBzbyB1bmFtZSBnZXRzIHJ1biB0b28uCmFjX2hvc3RuYW1lPWAoaG9zdG5h
bWUgfHwgdW5hbWUgLW4pIDI+L2Rldi9udWxsIHwgc2VkIDFxYAoKIwojIEluaXRpYWxpemF0aW9u
cy4KIwphY19kZWZhdWx0X3ByZWZpeD0vdXNyL2xvY2FsCmFjX2NsZWFuX2ZpbGVzPQphY19jb25m
aWdfbGlib2JqX2Rpcj0uCkxJQk9CSlM9CmNyb3NzX2NvbXBpbGluZz1ubwpzdWJkaXJzPQpNRkxB
R1M9Ck1BS0VGTEFHUz0KCiMgSWRlbnRpdHkgb2YgdGhpcyBwYWNrYWdlLgpQQUNLQUdFX05BTUU9
J0dOVSBSQ1MnClBBQ0tBR0VfVEFSTkFNRT0ncmNzJwpQQUNLQUdFX1ZFUlNJT049JzUuOC4yJwpQ
QUNLQUdFX1NUUklORz0nR05VIFJDUyA1LjguMicKUEFDS0FHRV9CVUdSRVBPUlQ9J2J1Zy1yY3NA
Z251Lm9yZycKUEFDS0FHRV9VUkw9J2h0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9yY3MvJwoK
IyBGYWN0b3JpbmcgZGVmYXVsdCBoZWFkZXJzIGZvciBtb3N0IHRlc3RzLgphY19pbmNsdWRlc19k
ZWZhdWx0PSJcCiNpbmNsdWRlIDxzdGRpby5oPgojaWZkZWYgSEFWRV9TWVNfVFlQRVNfSAojIGlu
Y2x1ZGUgPHN5cy90eXBlcy5oPgojZW5kaWYKI2lmZGVmIEhBVkVfU1lTX1NUQVRfSAojIGluY2x1
ZGUgPHN5cy9zdGF0Lmg+CiNlbmRpZgojaWZkZWYgU1REQ19IRUFERVJTCiMgaW5jbHVkZSA8c3Rk
bGliLmg+CiMgaW5jbHVkZSA8c3RkZGVmLmg+CiNlbHNlCiMgaWZkZWYgSEFWRV9TVERMSUJfSAoj
ICBpbmNsdWRlIDxzdGRsaWIuaD4KIyBlbmRpZgojZW5kaWYKI2lmZGVmIEhBVkVfU1RSSU5HX0gK
IyBpZiAhZGVmaW5lZCBTVERDX0hFQURFUlMgJiYgZGVmaW5lZCBIQVZFX01FTU9SWV9ICiMgIGlu
Y2x1ZGUgPG1lbW9yeS5oPgojIGVuZGlmCiMgaW5jbHVkZSA8c3RyaW5nLmg+CiNlbmRpZgojaWZk
ZWYgSEFWRV9TVFJJTkdTX0gKIyBpbmNsdWRlIDxzdHJpbmdzLmg+CiNlbmRpZgojaWZkZWYgSEFW
RV9JTlRUWVBFU19ICiMgaW5jbHVkZSA8aW50dHlwZXMuaD4KI2VuZGlmCiNpZmRlZiBIQVZFX1NU
RElOVF9ICiMgaW5jbHVkZSA8c3RkaW50Lmg+CiNlbmRpZgojaWZkZWYgSEFWRV9VTklTVERfSAoj
IGluY2x1ZGUgPHVuaXN0ZC5oPgojZW5kaWYiCgpnbF91c2VfdGhyZWFkc19kZWZhdWx0PQpnbF9m
dW5jX2xpc3Q9CmdsX2hlYWRlcl9saXN0PQpnbF9nZXRvcHRfcmVxdWlyZWQ9UE9TSVgKZ2xfZ2V0
b3B0X3JlcXVpcmVkPVBPU0lYCmFjX3N1YnN0X3ZhcnM9J2dsdGVzdHNfTFRMSUJPQkpTCmdsdGVz
dHNfTElCT0JKUwpnbF9MVExJQk9CSlMKZ2xfTElCT0JKUwphbV9fRVhFRVhUX0ZBTFNFCmFtX19F
WEVFWFRfVFJVRQpMVExJQk9CSlMKTElCT0JKUwpBQlNGSUxFTkFNRUdMT0IKTElCR05VX0xUTElC
REVQUwpMSUJHTlVfTElCREVQUwpnbHRlc3RzX1dJVE5FU1MKZ2xfR05VTElCX0VOQUJMRURfdGxz
X0ZBTFNFCmdsX0dOVUxJQl9FTkFCTEVEX3Rsc19UUlVFCmdsX0dOVUxJQl9FTkFCTEVEX3RocmVh
ZGxpYl9GQUxTRQpnbF9HTlVMSUJfRU5BQkxFRF90aHJlYWRsaWJfVFJVRQpnbF9HTlVMSUJfRU5B
QkxFRF90ZW1wbmFtZV9GQUxTRQpnbF9HTlVMSUJfRU5BQkxFRF90ZW1wbmFtZV9UUlVFCmdsX0dO
VUxJQl9FTkFCTEVEX2RiYjU3ZjQ5MzUyYmU4ZmI4Njg2OTYyOWEyNTRmYjcyX0ZBTFNFCmdsX0dO
VUxJQl9FTkFCTEVEX2RiYjU3ZjQ5MzUyYmU4ZmI4Njg2OTYyOWEyNTRmYjcyX1RSVUUKZ2xfR05V
TElCX0VOQUJMRURfc3RyZXJyb3JfRkFMU0UKZ2xfR05VTElCX0VOQUJMRURfc3RyZXJyb3JfVFJV
RQpnbF9HTlVMSUJfRU5BQkxFRF9mOTg1MDYzMWRjYTkxODU5ZTljZGRhYzkzNTk5MjFjMF9GQUxT
RQpnbF9HTlVMSUJfRU5BQkxFRF9mOTg1MDYzMWRjYTkxODU5ZTljZGRhYzkzNTk5MjFjMF9UUlVF
CmdsX0dOVUxJQl9FTkFCTEVEX3NpZ3Byb2NtYXNrX0ZBTFNFCmdsX0dOVUxJQl9FTkFCTEVEX3Np
Z3Byb2NtYXNrX1RSVUUKZ2xfR05VTElCX0VOQUJMRURfc2lnbmJpdF9GQUxTRQpnbF9HTlVMSUJf
RU5BQkxFRF9zaWduYml0X1RSVUUKZ2xfR05VTElCX0VOQUJMRURfc2VjdXJlX2dldGVudl9GQUxT
RQpnbF9HTlVMSUJfRU5BQkxFRF9zZWN1cmVfZ2V0ZW52X1RSVUUKZ2xfR05VTElCX0VOQUJMRURf
ZDQ4NTA1MzI2ODhiYTE2ZDY4NWYwMzYwNzY2MTFmMjFfRkFMU0UKZ2xfR05VTElCX0VOQUJMRURf
ZDQ4NTA1MzI2ODhiYTE2ZDY4NWYwMzYwNzY2MTFmMjFfVFJVRQpnbF9HTlVMSUJfRU5BQkxFRF9y
ZXdpbmRkaXJfRkFMU0UKZ2xfR05VTElCX0VOQUJMRURfcmV3aW5kZGlyX1RSVUUKZ2xfR05VTElC
X0VOQUJMRURfNjFiY2FjYTc2YjNlNmY5YWU1NWQ1N2ExYzMxOTNiYzRfRkFMU0UKZ2xfR05VTElC
X0VOQUJMRURfNjFiY2FjYTc2YjNlNmY5YWU1NWQ1N2ExYzMxOTNiYzRfVFJVRQpnbF9HTlVMSUJf
RU5BQkxFRF9yZWFkZGlyX0ZBTFNFCmdsX0dOVUxJQl9FTkFCTEVEX3JlYWRkaXJfVFJVRQpnbF9H
TlVMSUJfRU5BQkxFRF9yYWlzZV9GQUxTRQpnbF9HTlVMSUJfRU5BQkxFRF9yYWlzZV9UUlVFCmds
X0dOVUxJQl9FTkFCTEVEX2JiYTYzOWYwY2ZkNjU4NTQwZDcxNmYzYTJiYTVlNjhmX0ZBTFNFCmds
X0dOVUxJQl9FTkFCTEVEX2JiYTYzOWYwY2ZkNjU4NTQwZDcxNmYzYTJiYTVlNjhmX1RSVUUKZ2xf
R05VTElCX0VOQUJMRURfMmY1NTFhNjg0YWFiNTQwMDYzM2NiZmQ1NmRmM2JmOTRfRkFMU0UKZ2xf
R05VTElCX0VOQUJMRURfMmY1NTFhNjg0YWFiNTQwMDYzM2NiZmQ1NmRmM2JmOTRfVFJVRQpnbF9H
TlVMSUJfRU5BQkxFRF9wYXRobWF4X0ZBTFNFCmdsX0dOVUxJQl9FTkFCTEVEX3BhdGhtYXhfVFJV
RQpnbF9HTlVMSUJfRU5BQkxFRF8wM2UwYWFhZDRjYjg5Y2E3NTc2NTNiZDM2N2E2Y2NiN19GQUxT
RQpnbF9HTlVMSUJfRU5BQkxFRF8wM2UwYWFhZDRjYjg5Y2E3NTc2NTNiZDM2N2E2Y2NiN19UUlVF
CmdsX0dOVUxJQl9FTkFCTEVEXzE4NDAxMjlkNDkwZjNhMDBjOGEwOTgzMTZkMGZhMzQ1X0ZBTFNF
CmdsX0dOVUxJQl9FTkFCTEVEXzE4NDAxMjlkNDkwZjNhMDBjOGEwOTgzMTZkMGZhMzQ1X1RSVUUK
Z2xfR05VTElCX0VOQUJMRURfb3BlbmF0X0ZBTFNFCmdsX0dOVUxJQl9FTkFCTEVEX29wZW5hdF9U
UlVFCmdsX0dOVUxJQl9FTkFCTEVEXzY3NjIyMGZhNDM2NmVmYTliZGJmY2NmMTFhODU3YzA3X0ZB
TFNFCmdsX0dOVUxJQl9FTkFCTEVEXzY3NjIyMGZhNDM2NmVmYTliZGJmY2NmMTFhODU3YzA3X1RS
VUUKZ2xfR05VTElCX0VOQUJMRURfZjY5MWYwNzZmNjUwOTY0YzlmNTU5OGMzZWU0ODc2MTZfRkFM
U0UKZ2xfR05VTElCX0VOQUJMRURfZjY5MWYwNzZmNjUwOTY0YzlmNTU5OGMzZWU0ODc2MTZfVFJV
RQpnbF9HTlVMSUJfRU5BQkxFRF9tZW1yY2hyX0ZBTFNFCmdsX0dOVUxJQl9FTkFCTEVEX21lbXJj
aHJfVFJVRQpnbF9HTlVMSUJfRU5BQkxFRF9tZW1wY3B5X0ZBTFNFCmdsX0dOVUxJQl9FTkFCTEVE
X21lbXBjcHlfVFJVRQpnbF9HTlVMSUJfRU5BQkxFRF9tYXRoX0ZBTFNFCmdsX0dOVUxJQl9FTkFC
TEVEX21hdGhfVFJVRQpnbF9HTlVMSUJfRU5BQkxFRF9sc3RhdF9GQUxTRQpnbF9HTlVMSUJfRU5B
QkxFRF9sc3RhdF9UUlVFCmdsX0dOVUxJQl9FTkFCTEVEX2xvY2tfRkFMU0UKZ2xfR05VTElCX0VO
QUJMRURfbG9ja19UUlVFCmdsX0dOVUxJQl9FTkFCTEVEX2RiZGYyMjg2OGE1MzY3ZjI4YmYxOGUw
MDEzYWM2ZjhmX0ZBTFNFCmdsX0dOVUxJQl9FTkFCTEVEX2RiZGYyMjg2OGE1MzY3ZjI4YmYxOGUw
MDEzYWM2ZjhmX1RSVUUKZ2xfR05VTElCX0VOQUJMRURfM2YwZTU5MzAzM2QxZmMyYzEyNzU4MTk2
MGY2NDFiNjZfRkFMU0UKZ2xfR05VTElCX0VOQUJMRURfM2YwZTU5MzAzM2QxZmMyYzEyNzU4MTk2
MGY2NDFiNjZfVFJVRQpnbF9HTlVMSUJfRU5BQkxFRF9iMWRmNzExN2I0NzlkMmRhNTlkNzZkZWJh
NDY4ZWUyMV9GQUxTRQpnbF9HTlVMSUJfRU5BQkxFRF9iMWRmNzExN2I0NzlkMmRhNTlkNzZkZWJh
NDY4ZWUyMV9UUlVFCmdsX0dOVUxJQl9FTkFCTEVEX2ludHByb3BzX0ZBTFNFCmdsX0dOVUxJQl9F
TkFCTEVEX2ludHByb3BzX1RSVUUKZ2xfR05VTElCX0VOQUJMRURfaGF2ZWxpYl9GQUxTRQpnbF9H
TlVMSUJfRU5BQkxFRF9oYXZlbGliX1RSVUUKZ2xfR05VTElCX0VOQUJMRURfZ2V0ZHRhYmxlc2l6
ZV9GQUxTRQpnbF9HTlVMSUJfRU5BQkxFRF9nZXRkdGFibGVzaXplX1RSVUUKZ2xfR05VTElCX0VO
QUJMRURfM2QwOTRlZjU0MmJmZGQyMzhhNTE5NGUxNzJiZmU1ZjZfRkFMU0UKZ2xfR05VTElCX0VO
QUJMRURfM2QwOTRlZjU0MmJmZGQyMzhhNTE5NGUxNzJiZmU1ZjZfVFJVRQpnbF9HTlVMSUJfRU5B
QkxFRF9mc3RhdGF0X0ZBTFNFCmdsX0dOVUxJQl9FTkFCTEVEX2ZzdGF0YXRfVFJVRQpnbF9HTlVM
SUJfRU5BQkxFRF9lMGNhODE5MTJmMjMyMTRlNDRmNTcwMDkyMmRiMzRiZV9GQUxTRQpnbF9HTlVM
SUJfRU5BQkxFRF9lMGNhODE5MTJmMjMyMTRlNDRmNTcwMDkyMmRiMzRiZV9UUlVFCmdsX0dOVUxJ
Ql9FTkFCTEVEX2UxYzZhMTI4MWNlMmNjNTljNzE2ODk0NTUwYmNiMmI1X0ZBTFNFCmdsX0dOVUxJ
Ql9FTkFCTEVEX2UxYzZhMTI4MWNlMmNjNTljNzE2ODk0NTUwYmNiMmI1X1RSVUUKZ2xfR05VTElC
X0VOQUJMRURfZnB1Y3dfRkFMU0UKZ2xfR05VTElCX0VOQUJMRURfZnB1Y3dfVFJVRQpnbF9HTlVM
SUJfRU5BQkxFRF9mcGllZWVfRkFMU0UKZ2xfR05VTElCX0VOQUJMRURfZnBpZWVlX1RSVUUKZ2xf
R05VTElCX0VOQUJMRURfZmNhOTg1MmRiMmE0M2JiMzNmMDJmMGZiZGJjMTc0ZjZfRkFMU0UKZ2xf
R05VTElCX0VOQUJMRURfZmNhOTg1MmRiMmE0M2JiMzNmMDJmMGZiZGJjMTc0ZjZfVFJVRQpnbF9H
TlVMSUJfRU5BQkxFRF9mZG9wZW5kaXJfRkFMU0UKZ2xfR05VTElCX0VOQUJMRURfZmRvcGVuZGly
X1RSVUUKZ2xfR05VTElCX0VOQUJMRURfNDNmZTg3YTM0MWQ5YjRiOTNjNDdjM2FkODE5YTUyMzlf
RkFMU0UKZ2xfR05VTElCX0VOQUJMRURfNDNmZTg3YTM0MWQ5YjRiOTNjNDdjM2FkODE5YTUyMzlf
VFJVRQpnbF9HTlVMSUJfRU5BQkxFRF9mY2hkaXJfRkFMU0UKZ2xfR05VTElCX0VOQUJMRURfZmNo
ZGlyX1RSVUUKZ2xfR05VTElCX0VOQUJMRURfZHVwMl9GQUxTRQpnbF9HTlVMSUJfRU5BQkxFRF9k
dXAyX1RSVUUKZ2xfR05VTElCX0VOQUJMRURfZHVwX0ZBTFNFCmdsX0dOVUxJQl9FTkFCTEVEX2R1
cF9UUlVFCmdsX0dOVUxJQl9FTkFCTEVEX2Rvc25hbWVfRkFMU0UKZ2xfR05VTElCX0VOQUJMRURf
ZG9zbmFtZV9UUlVFCmdsX0dOVUxJQl9FTkFCTEVEX2E2OTFkYTk5YzFkODNiODMyMzhlNDVmNDFh
Njk2ZjVjX0ZBTFNFCmdsX0dOVUxJQl9FTkFCTEVEX2E2OTFkYTk5YzFkODNiODMyMzhlNDVmNDFh
Njk2ZjVjX1RSVUUKZ2xfR05VTElCX0VOQUJMRURfZGlyZmRfRkFMU0UKZ2xfR05VTElCX0VOQUJM
RURfZGlyZmRfVFJVRQpnbF9HTlVMSUJfRU5BQkxFRF83NWM2NWEyYzAxNGNmODIzNWRkOTUyODk2
NzYzMDJhNF9GQUxTRQpnbF9HTlVMSUJfRU5BQkxFRF83NWM2NWEyYzAxNGNmODIzNWRkOTUyODk2
NzYzMDJhNF9UUlVFCmdsX0dOVUxJQl9FTkFCTEVEX2Nsb3NlX0ZBTFNFCmdsX0dOVUxJQl9FTkFC
TEVEX2Nsb3NlX1RSVUUKZ2xfR05VTElCX0VOQUJMRURfY2xvZXhlY19GQUxTRQpnbF9HTlVMSUJf
RU5BQkxFRF9jbG9leGVjX1RSVUUKZ2xfR05VTElCX0VOQUJMRURfODE5OGRhYWUyNjFiOTMyZDY0
YTk5OGY4NTg2ZjUwMDVfRkFMU0UKZ2xfR05VTElCX0VOQUJMRURfODE5OGRhYWUyNjFiOTMyZDY0
YTk5OGY4NTg2ZjUwMDVfVFJVRQpnbF9HTlVMSUJfRU5BQkxFRF9jaGRpcl9GQUxTRQpnbF9HTlVM
SUJfRU5BQkxFRF9jaGRpcl9UUlVFCmdsX0dOVUxJQl9FTkFCTEVEXzI2MDk0MWMwZTVkYzY3ZWM5
ZTg3ZDFmYjMyMWMzMDBiX0ZBTFNFCmdsX0dOVUxJQl9FTkFCTEVEXzI2MDk0MWMwZTVkYzY3ZWM5
ZTg3ZDFmYjMyMWMzMDBiX1RSVUUKTkVYVF9BU19GSVJTVF9ESVJFQ1RJVkVfTUFUSF9ICk5FWFRf
TUFUSF9ICkxUTElCTVVMVElUSFJFQUQKTElCTVVMVElUSFJFQUQKTFRMSUJUSFJFQUQKTElCVEhS
RUFECkxJQlBUSF9QUkVGSVgKTFRMSUJQVEgKTElCUFRIClJFUExBQ0VfVFJVTkNMClJFUExBQ0Vf
VFJVTkNGClJFUExBQ0VfVFJVTkMKUkVQTEFDRV9TUVJUTApSRVBMQUNFX1NJR05CSVRfVVNJTkdf
R0NDClJFUExBQ0VfU0lHTkJJVApSRVBMQUNFX1JPVU5ETApSRVBMQUNFX1JPVU5ERgpSRVBMQUNF
X1JPVU5EClJFUExBQ0VfUkVNQUlOREVSTApSRVBMQUNFX1JFTUFJTkRFUkYKUkVQTEFDRV9SRU1B
SU5ERVIKUkVQTEFDRV9OQU4KUkVQTEFDRV9NT0RGTApSRVBMQUNFX01PREZGClJFUExBQ0VfTU9E
RgpSRVBMQUNFX0xPR0JMClJFUExBQ0VfTE9HQkYKUkVQTEFDRV9MT0dCClJFUExBQ0VfTE9HMkwK
UkVQTEFDRV9MT0cyRgpSRVBMQUNFX0xPRzIKUkVQTEFDRV9MT0cxUEwKUkVQTEFDRV9MT0cxUEYK
UkVQTEFDRV9MT0cxUApSRVBMQUNFX0xPRzEwTApSRVBMQUNFX0xPRzEwRgpSRVBMQUNFX0xPRzEw
ClJFUExBQ0VfTE9HTApSRVBMQUNFX0xPR0YKUkVQTEFDRV9MT0cKUkVQTEFDRV9MREVYUEwKUkVQ
TEFDRV9JU05BTgpSRVBMQUNFX0lTSU5GClJFUExBQ0VfSVNGSU5JVEUKUkVQTEFDRV9JTE9HQkYK
UkVQTEFDRV9JTE9HQgpSRVBMQUNFX0hZUE9UTApSRVBMQUNFX0hZUE9URgpSRVBMQUNFX0hZUE9U
ClJFUExBQ0VfSFVHRV9WQUwKUkVQTEFDRV9GUkVYUEwKUkVQTEFDRV9GUkVYUApSRVBMQUNFX0ZS
RVhQRgpSRVBMQUNFX0ZNT0RMClJFUExBQ0VfRk1PREYKUkVQTEFDRV9GTU9EClJFUExBQ0VfRk1B
TApSRVBMQUNFX0ZNQUYKUkVQTEFDRV9GTUEKUkVQTEFDRV9GTE9PUkwKUkVQTEFDRV9GTE9PUkYK
UkVQTEFDRV9GTE9PUgpSRVBMQUNFX0ZBQlNMClJFUExBQ0VfRVhQMkwKUkVQTEFDRV9FWFAyClJF
UExBQ0VfRVhQTTFGClJFUExBQ0VfRVhQTTEKUkVQTEFDRV9DRUlMTApSRVBMQUNFX0NFSUxGClJF
UExBQ0VfQ0VJTApSRVBMQUNFX0NCUlRMClJFUExBQ0VfQ0JSVEYKSEFWRV9ERUNMX1RSVU5DTApI
QVZFX0RFQ0xfVFJVTkNGCkhBVkVfREVDTF9UUlVOQwpIQVZFX0RFQ0xfVEFOTApIQVZFX0RFQ0xf
U1FSVEwKSEFWRV9ERUNMX1NJTkwKSEFWRV9ERUNMX1JPVU5ETApIQVZFX0RFQ0xfUk9VTkRGCkhB
VkVfREVDTF9ST1VORApIQVZFX0RFQ0xfUklOVEYKSEFWRV9ERUNMX1JFTUFJTkRFUkwKSEFWRV9E
RUNMX1JFTUFJTkRFUgpIQVZFX0RFQ0xfTE9HQgpIQVZFX0RFQ0xfTE9HMkwKSEFWRV9ERUNMX0xP
RzJGCkhBVkVfREVDTF9MT0cyCkhBVkVfREVDTF9MT0cxMEwKSEFWRV9ERUNMX0xPR0wKSEFWRV9E
RUNMX0xERVhQTApIQVZFX0RFQ0xfRlJFWFBMCkhBVkVfREVDTF9GTE9PUkwKSEFWRV9ERUNMX0ZM
T09SRgpIQVZFX0RFQ0xfRVhQTTFMCkhBVkVfREVDTF9FWFAyTApIQVZFX0RFQ0xfRVhQMkYKSEFW
RV9ERUNMX0VYUDIKSEFWRV9ERUNMX0VYUEwKSEFWRV9ERUNMX0NPU0wKSEFWRV9ERUNMX0NPUFlT
SUdORgpIQVZFX0RFQ0xfQ0VJTEwKSEFWRV9ERUNMX0NFSUxGCkhBVkVfREVDTF9DQlJUTApIQVZF
X0RFQ0xfQ0JSVEYKSEFWRV9ERUNMX0FUQU5MCkhBVkVfREVDTF9BU0lOTApIQVZFX0RFQ0xfQUNP
U0wKSEFWRV9UQU5IRgpIQVZFX1RBTkwKSEFWRV9UQU5GCkhBVkVfU1FSVEwKSEFWRV9TUVJURgpI
QVZFX1NJTkhGCkhBVkVfU0lOTApIQVZFX1NJTkYKSEFWRV9SSU5UTApIQVZFX1JJTlQKSEFWRV9S
RU1BSU5ERVJGCkhBVkVfUkVNQUlOREVSCkhBVkVfUE9XRgpIQVZFX01PREZMCkhBVkVfTU9ERkYK
SEFWRV9MT0dCTApIQVZFX0xPR0JGCkhBVkVfTE9HMVBMCkhBVkVfTE9HMVBGCkhBVkVfTE9HMVAK
SEFWRV9MT0cxMEwKSEFWRV9MT0cxMEYKSEFWRV9MT0dMCkhBVkVfTE9HRgpIQVZFX0xERVhQRgpI
QVZFX0lTTkFOTApIQVZFX0lTTkFORApIQVZFX0lTTkFORgpIQVZFX0lMT0dCTApIQVZFX0lMT0dC
RgpIQVZFX0lMT0dCCkhBVkVfSFlQT1RMCkhBVkVfSFlQT1RGCkhBVkVfRlJFWFBGCkhBVkVfRk1P
REwKSEFWRV9GTU9ERgpIQVZFX0ZNQUwKSEFWRV9GTUFGCkhBVkVfRk1BCkhBVkVfRkFCU0wKSEFW
RV9GQUJTRgpIQVZFX0VYUE0xRgpIQVZFX0VYUE0xCkhBVkVfRVhQTApIQVZFX0VYUEYKSEFWRV9D
T1NIRgpIQVZFX0NPU0wKSEFWRV9DT1NGCkhBVkVfQ09QWVNJR05MCkhBVkVfQ09QWVNJR04KSEFW
RV9DQlJUTApIQVZFX0NCUlRGCkhBVkVfQ0JSVApIQVZFX0FUQU4yRgpIQVZFX0FUQU5MCkhBVkVf
QVRBTkYKSEFWRV9BU0lOTApIQVZFX0FTSU5GCkhBVkVfQUNPU0wKSEFWRV9BQ09TRgpHTlVMSUJf
VFJVTkNMCkdOVUxJQl9UUlVOQ0YKR05VTElCX1RSVU5DCkdOVUxJQl9UQU5IRgpHTlVMSUJfVEFO
TApHTlVMSUJfVEFORgpHTlVMSUJfU1FSVEwKR05VTElCX1NRUlRGCkdOVUxJQl9TSU5IRgpHTlVM
SUJfU0lOTApHTlVMSUJfU0lORgpHTlVMSUJfU0lHTkJJVApHTlVMSUJfUk9VTkRMCkdOVUxJQl9S
T1VOREYKR05VTElCX1JPVU5ECkdOVUxJQl9SSU5UTApHTlVMSUJfUklOVEYKR05VTElCX1JJTlQK
R05VTElCX1JFTUFJTkRFUkwKR05VTElCX1JFTUFJTkRFUkYKR05VTElCX1JFTUFJTkRFUgpHTlVM
SUJfUE9XRgpHTlVMSUJfTU9ERkwKR05VTElCX01PREZGCkdOVUxJQl9NT0RGCkdOVUxJQl9MT0dC
TApHTlVMSUJfTE9HQkYKR05VTElCX0xPR0IKR05VTElCX0xPRzJMCkdOVUxJQl9MT0cyRgpHTlVM
SUJfTE9HMgpHTlVMSUJfTE9HMVBMCkdOVUxJQl9MT0cxUEYKR05VTElCX0xPRzFQCkdOVUxJQl9M
T0cxMEwKR05VTElCX0xPRzEwRgpHTlVMSUJfTE9HMTAKR05VTElCX0xPR0wKR05VTElCX0xPR0YK
R05VTElCX0xPRwpHTlVMSUJfTERFWFBMCkdOVUxJQl9MREVYUEYKR05VTElCX0lTTkFOTApHTlVM
SUJfSVNOQU5ECkdOVUxJQl9JU05BTkYKR05VTElCX0lTTkFOCkdOVUxJQl9JU0lORgpHTlVMSUJf
SVNGSU5JVEUKR05VTElCX0lMT0dCTApHTlVMSUJfSUxPR0JGCkdOVUxJQl9JTE9HQgpHTlVMSUJf
SFlQT1RMCkdOVUxJQl9IWVBPVEYKR05VTElCX0hZUE9UCkdOVUxJQl9GUkVYUEwKR05VTElCX0ZS
RVhQCkdOVUxJQl9GUkVYUEYKR05VTElCX0ZNT0RMCkdOVUxJQl9GTU9ERgpHTlVMSUJfRk1PRApH
TlVMSUJfRk1BTApHTlVMSUJfRk1BRgpHTlVMSUJfRk1BCkdOVUxJQl9GTE9PUkwKR05VTElCX0ZM
T09SRgpHTlVMSUJfRkxPT1IKR05VTElCX0ZBQlNMCkdOVUxJQl9GQUJTRgpHTlVMSUJfRVhQTTFM
CkdOVUxJQl9FWFBNMUYKR05VTElCX0VYUE0xCkdOVUxJQl9FWFAyTApHTlVMSUJfRVhQMkYKR05V
TElCX0VYUDIKR05VTElCX0VYUEwKR05VTElCX0VYUEYKR05VTElCX0NPU0hGCkdOVUxJQl9DT1NM
CkdOVUxJQl9DT1NGCkdOVUxJQl9DT1BZU0lHTkwKR05VTElCX0NPUFlTSUdORgpHTlVMSUJfQ09Q
WVNJR04KR05VTElCX0NFSUxMCkdOVUxJQl9DRUlMRgpHTlVMSUJfQ0VJTApHTlVMSUJfQ0JSVEwK
R05VTElCX0NCUlRGCkdOVUxJQl9DQlJUCkdOVUxJQl9BVEFOMkYKR05VTElCX0FUQU5MCkdOVUxJ
Ql9BVEFORgpHTlVMSUJfQVNJTkwKR05VTElCX0FTSU5GCkdOVUxJQl9BQ09TTApHTlVMSUJfQUNP
U0YKSEFWRV9XSU5UX1QKTkVYVF9BU19GSVJTVF9ESVJFQ1RJVkVfV0NIQVJfSApORVhUX1dDSEFS
X0gKUkVQTEFDRV9XQ1NXSURUSApSRVBMQUNFX1dDV0lEVEgKUkVQTEFDRV9XQ1NOUlRPTUJTClJF
UExBQ0VfV0NTUlRPTUJTClJFUExBQ0VfV0NSVE9NQgpSRVBMQUNFX01CU05SVE9XQ1MKUkVQTEFD
RV9NQlNSVE9XQ1MKUkVQTEFDRV9NQlJMRU4KUkVQTEFDRV9NQlJUT1dDClJFUExBQ0VfTUJTSU5J
VApSRVBMQUNFX1dDVE9CClJFUExBQ0VfQlRPV0MKUkVQTEFDRV9NQlNUQVRFX1QKSEFWRV9ERUNM
X1dDV0lEVEgKSEFWRV9ERUNMX1dDVE9CCkhBVkVfV0NTV0lEVEgKSEFWRV9XQ1NUT0sKSEFWRV9X
Q1NTVFIKSEFWRV9XQ1NQQlJLCkhBVkVfV0NTU1BOCkhBVkVfV0NTQ1NQTgpIQVZFX1dDU1JDSFIK
SEFWRV9XQ1NDSFIKSEFWRV9XQ1NEVVAKSEFWRV9XQ1NYRlJNCkhBVkVfV0NTQ09MTApIQVZFX1dD
U05DQVNFQ01QCkhBVkVfV0NTQ0FTRUNNUApIQVZFX1dDU05DTVAKSEFWRV9XQ1NDTVAKSEFWRV9X
Q1NOQ0FUCkhBVkVfV0NTQ0FUCkhBVkVfV0NQTkNQWQpIQVZFX1dDU05DUFkKSEFWRV9XQ1BDUFkK
SEFWRV9XQ1NDUFkKSEFWRV9XQ1NOTEVOCkhBVkVfV0NTTEVOCkhBVkVfV01FTVNFVApIQVZFX1dN
RU1NT1ZFCkhBVkVfV01FTUNQWQpIQVZFX1dNRU1DTVAKSEFWRV9XTUVNQ0hSCkhBVkVfV0NTTlJU
T01CUwpIQVZFX1dDU1JUT01CUwpIQVZFX1dDUlRPTUIKSEFWRV9NQlNOUlRPV0NTCkhBVkVfTUJT
UlRPV0NTCkhBVkVfTUJSTEVOCkhBVkVfTUJSVE9XQwpIQVZFX01CU0lOSVQKSEFWRV9CVE9XQwpH
TlVMSUJfV0NTV0lEVEgKR05VTElCX1dDU1RPSwpHTlVMSUJfV0NTU1RSCkdOVUxJQl9XQ1NQQlJL
CkdOVUxJQl9XQ1NTUE4KR05VTElCX1dDU0NTUE4KR05VTElCX1dDU1JDSFIKR05VTElCX1dDU0NI
UgpHTlVMSUJfV0NTRFVQCkdOVUxJQl9XQ1NYRlJNCkdOVUxJQl9XQ1NDT0xMCkdOVUxJQl9XQ1NO
Q0FTRUNNUApHTlVMSUJfV0NTQ0FTRUNNUApHTlVMSUJfV0NTTkNNUApHTlVMSUJfV0NTQ01QCkdO
VUxJQl9XQ1NOQ0FUCkdOVUxJQl9XQ1NDQVQKR05VTElCX1dDUE5DUFkKR05VTElCX1dDU05DUFkK
R05VTElCX1dDUENQWQpHTlVMSUJfV0NTQ1BZCkdOVUxJQl9XQ1NOTEVOCkdOVUxJQl9XQ1NMRU4K
R05VTElCX1dNRU1TRVQKR05VTElCX1dNRU1NT1ZFCkdOVUxJQl9XTUVNQ1BZCkdOVUxJQl9XTUVN
Q01QCkdOVUxJQl9XTUVNQ0hSCkdOVUxJQl9XQ1dJRFRICkdOVUxJQl9XQ1NOUlRPTUJTCkdOVUxJ
Ql9XQ1NSVE9NQlMKR05VTElCX1dDUlRPTUIKR05VTElCX01CU05SVE9XQ1MKR05VTElCX01CU1JU
T1dDUwpHTlVMSUJfTUJSTEVOCkdOVUxJQl9NQlJUT1dDCkdOVUxJQl9NQlNJTklUCkdOVUxJQl9X
Q1RPQgpHTlVMSUJfQlRPV0MKSEFWRV9VTklTVERfSApORVhUX0FTX0ZJUlNUX0RJUkVDVElWRV9V
TklTVERfSApORVhUX1VOSVNURF9IClBUSFJFQURfSF9ERUZJTkVTX1NUUlVDVF9USU1FU1BFQwpT
WVNfVElNRV9IX0RFRklORVNfU1RSVUNUX1RJTUVTUEVDClRJTUVfSF9ERUZJTkVTX1NUUlVDVF9U
SU1FU1BFQwpORVhUX0FTX0ZJUlNUX0RJUkVDVElWRV9USU1FX0gKTkVYVF9USU1FX0gKUkVQTEFD
RV9USU1FR00KUkVQTEFDRV9OQU5PU0xFRVAKUkVQTEFDRV9NS1RJTUUKUkVQTEFDRV9MT0NBTFRJ
TUVfUgpIQVZFX1RJTUVHTQpIQVZFX1NUUlBUSU1FCkhBVkVfTkFOT1NMRUVQCkhBVkVfREVDTF9M
T0NBTFRJTUVfUgpHTlVMSUJfVElNRV9SCkdOVUxJQl9USU1FR00KR05VTElCX1NUUlBUSU1FCkdO
VUxJQl9OQU5PU0xFRVAKR05VTElCX01LVElNRQpORVhUX0FTX0ZJUlNUX0RJUkVDVElWRV9TWVNf
V0FJVF9ICk5FWFRfU1lTX1dBSVRfSApHTlVMSUJfV0FJVFBJRApXSU5ET1dTXzY0X0JJVF9PRkZf
VApORVhUX0FTX0ZJUlNUX0RJUkVDVElWRV9TWVNfVFlQRVNfSApORVhUX1NZU19UWVBFU19ICk5F
WFRfQVNfRklSU1RfRElSRUNUSVZFX1NUUklOR19ICk5FWFRfU1RSSU5HX0gKTkVYVF9BU19GSVJT
VF9ESVJFQ1RJVkVfU1RETElCX0gKTkVYVF9TVERMSUJfSApORVhUX0FTX0ZJUlNUX0RJUkVDVElW
RV9TVERJT19ICk5FWFRfU1RESU9fSApHTF9HRU5FUkFURV9TVERJTlRfSF9GQUxTRQpHTF9HRU5F
UkFURV9TVERJTlRfSF9UUlVFClNURElOVF9ICldJTlRfVF9TVUZGSVgKV0NIQVJfVF9TVUZGSVgK
U0lHX0FUT01JQ19UX1NVRkZJWApTSVpFX1RfU1VGRklYClBUUkRJRkZfVF9TVUZGSVgKSEFWRV9T
SUdORURfV0lOVF9UCkhBVkVfU0lHTkVEX1dDSEFSX1QKSEFWRV9TSUdORURfU0lHX0FUT01JQ19U
CkJJVFNJWkVPRl9XSU5UX1QKQklUU0laRU9GX1dDSEFSX1QKQklUU0laRU9GX1NJR19BVE9NSUNf
VApCSVRTSVpFT0ZfU0laRV9UCkJJVFNJWkVPRl9QVFJESUZGX1QKSEFWRV9TWVNfQklUWVBFU19I
CkhBVkVfU1lTX0lOVFRZUEVTX0gKSEFWRV9TVERJTlRfSApORVhUX0FTX0ZJUlNUX0RJUkVDVElW
RV9TVERJTlRfSApORVhUX1NURElOVF9ICkhBVkVfU1lTX1RZUEVTX0gKSEFWRV9JTlRUWVBFU19I
CkhBVkVfV0NIQVJfSApIQVZFX1VOU0lHTkVEX0xPTkdfTE9OR19JTlQKSEFWRV9MT05HX0xPTkdf
SU5UCk5FWFRfQVNfRklSU1RfRElSRUNUSVZFX1NURERFRl9ICk5FWFRfU1REREVGX0gKR0xfR0VO
RVJBVEVfU1REREVGX0hfRkFMU0UKR0xfR0VORVJBVEVfU1REREVGX0hfVFJVRQpTVERERUZfSApI
QVZFX1dDSEFSX1QKUkVQTEFDRV9OVUxMCkhBVkVfX0JPT0wKR0xfR0VORVJBVEVfU1REQk9PTF9I
X0ZBTFNFCkdMX0dFTkVSQVRFX1NUREJPT0xfSF9UUlVFClNUREJPT0xfSApHTF9HRU5FUkFURV9T
VERBUkdfSF9GQUxTRQpHTF9HRU5FUkFURV9TVERBUkdfSF9UUlVFClNUREFSR19ICk5FWFRfQVNf
RklSU1RfRElSRUNUSVZFX1NUREFSR19ICk5FWFRfU1REQVJHX0gKSEFWRV9GRUFUVVJFU19ICkhB
VkVfU0FNRV9MT05HX0RPVUJMRV9BU19ET1VCTEUKTkVYVF9BU19GSVJTVF9ESVJFQ1RJVkVfU0lH
TkFMX0gKTkVYVF9TSUdOQUxfSApSRVBMQUNFX1JBSVNFClJFUExBQ0VfUFRIUkVBRF9TSUdNQVNL
CkhBVkVfU0lHSEFORExFUl9UCkhBVkVfVFlQRV9WT0xBVElMRV9TSUdfQVRPTUlDX1QKSEFWRV9T
VFJVQ1RfU0lHQUNUSU9OX1NBX1NJR0FDVElPTgpIQVZFX1NJR0FDVElPTgpIQVZFX1NJR0lORk9f
VApIQVZFX1NJR1NFVF9UCkhBVkVfUkFJU0UKSEFWRV9QVEhSRUFEX1NJR01BU0sKSEFWRV9QT1NJ
WF9TSUdOQUxCTE9DS0lORwpHTlVMSUJfU0lHQUNUSU9OCkdOVUxJQl9TSUdQUk9DTUFTSwpHTlVM
SUJfU0lHTkFMX0hfU0lHUElQRQpHTlVMSUJfUkFJU0UKR05VTElCX1BUSFJFQURfU0lHTUFTSwpS
RVBMQUNFX1ZTUFJJTlRGClJFUExBQ0VfVlNOUFJJTlRGClJFUExBQ0VfVlBSSU5URgpSRVBMQUNF
X1ZGUFJJTlRGClJFUExBQ0VfVkRQUklOVEYKUkVQTEFDRV9WQVNQUklOVEYKUkVQTEFDRV9UTVBG
SUxFClJFUExBQ0VfU1RESU9fV1JJVEVfRlVOQ1MKUkVQTEFDRV9TVERJT19SRUFEX0ZVTkNTClJF
UExBQ0VfU1BSSU5URgpSRVBMQUNFX1NOUFJJTlRGClJFUExBQ0VfUkVOQU1FQVQKUkVQTEFDRV9S
RU5BTUUKUkVQTEFDRV9SRU1PVkUKUkVQTEFDRV9QUklOVEYKUkVQTEFDRV9QT1BFTgpSRVBMQUNF
X1BFUlJPUgpSRVBMQUNFX09CU1RBQ0tfUFJJTlRGClJFUExBQ0VfR0VUTElORQpSRVBMQUNFX0dF
VERFTElNClJFUExBQ0VfRlRFTExPClJFUExBQ0VfRlRFTEwKUkVQTEFDRV9GU0VFS08KUkVQTEFD
RV9GU0VFSwpSRVBMQUNFX0ZSRU9QRU4KUkVQTEFDRV9GUFVSR0UKUkVQTEFDRV9GUFJJTlRGClJF
UExBQ0VfRk9QRU4KUkVQTEFDRV9GRkxVU0gKUkVQTEFDRV9GRE9QRU4KUkVQTEFDRV9GQ0xPU0UK
UkVQTEFDRV9EUFJJTlRGCkhBVkVfVkRQUklOVEYKSEFWRV9WQVNQUklOVEYKSEFWRV9SRU5BTUVB
VApIQVZFX1BPUEVOCkhBVkVfUENMT1NFCkhBVkVfRlRFTExPCkhBVkVfRlNFRUtPCkhBVkVfRFBS
SU5URgpIQVZFX0RFQ0xfVlNOUFJJTlRGCkhBVkVfREVDTF9TTlBSSU5URgpIQVZFX0RFQ0xfT0JT
VEFDS19QUklOVEYKSEFWRV9ERUNMX0dFVExJTkUKSEFWRV9ERUNMX0dFVERFTElNCkhBVkVfREVD
TF9GVEVMTE8KSEFWRV9ERUNMX0ZTRUVLTwpIQVZFX0RFQ0xfRlBVUkdFCkdOVUxJQl9WU1BSSU5U
Rl9QT1NJWApHTlVMSUJfVlNOUFJJTlRGCkdOVUxJQl9WUFJJTlRGX1BPU0lYCkdOVUxJQl9WUFJJ
TlRGCkdOVUxJQl9WRlBSSU5URl9QT1NJWApHTlVMSUJfVkZQUklOVEYKR05VTElCX1ZEUFJJTlRG
CkdOVUxJQl9WU0NBTkYKR05VTElCX1ZGU0NBTkYKR05VTElCX1ZBU1BSSU5URgpHTlVMSUJfVE1Q
RklMRQpHTlVMSUJfU1RESU9fSF9TSUdQSVBFCkdOVUxJQl9TVERJT19IX05PTkJMT0NLSU5HCkdO
VUxJQl9TUFJJTlRGX1BPU0lYCkdOVUxJQl9TTlBSSU5URgpHTlVMSUJfU0NBTkYKR05VTElCX1JF
TkFNRUFUCkdOVUxJQl9SRU5BTUUKR05VTElCX1JFTU9WRQpHTlVMSUJfUFVUUwpHTlVMSUJfUFVU
Q0hBUgpHTlVMSUJfUFVUQwpHTlVMSUJfUFJJTlRGX1BPU0lYCkdOVUxJQl9QUklOVEYKR05VTElC
X1BPUEVOCkdOVUxJQl9QRVJST1IKR05VTElCX1BDTE9TRQpHTlVMSUJfT0JTVEFDS19QUklOVEZf
UE9TSVgKR05VTElCX09CU1RBQ0tfUFJJTlRGCkdOVUxJQl9HRVRMSU5FCkdOVUxJQl9HRVRERUxJ
TQpHTlVMSUJfR0VUQ0hBUgpHTlVMSUJfR0VUQwpHTlVMSUJfRldSSVRFCkdOVUxJQl9GVEVMTE8K
R05VTElCX0ZURUxMCkdOVUxJQl9GU0VFS08KR05VTElCX0ZTRUVLCkdOVUxJQl9GU0NBTkYKR05V
TElCX0ZSRU9QRU4KR05VTElCX0ZSRUFECkdOVUxJQl9GUFVUUwpHTlVMSUJfRlBVVEMKR05VTElC
X0ZQVVJHRQpHTlVMSUJfRlBSSU5URl9QT1NJWApHTlVMSUJfRlBSSU5URgpHTlVMSUJfRk9QRU4K
R05VTElCX0ZHRVRTCkdOVUxJQl9GR0VUQwpHTlVMSUJfRkZMVVNICkdOVUxJQl9GRE9QRU4KR05V
TElCX0ZDTE9TRQpHTlVMSUJfRFBSSU5URgpBUFBMRV9VTklWRVJTQUxfQlVJTEQKVU5ERUZJTkVf
U1RSVE9LX1IKUkVQTEFDRV9TVFJUT0tfUgpSRVBMQUNFX1NUUlNJR05BTApSRVBMQUNFX1NUUk5M
RU4KUkVQTEFDRV9TVFJORFVQClJFUExBQ0VfU1RSTkNBVApSRVBMQUNFX1NUUkVSUk9SX1IKUkVQ
TEFDRV9TVFJFUlJPUgpSRVBMQUNFX1NUUkNIUk5VTApSRVBMQUNFX1NUUkNBU0VTVFIKUkVQTEFD
RV9TVFJTVFIKUkVQTEFDRV9TVFJEVVAKUkVQTEFDRV9TVFBOQ1BZClJFUExBQ0VfTUVNTUVNClJF
UExBQ0VfTUVNQ0hSCkhBVkVfU1RSVkVSU0NNUApIQVZFX0RFQ0xfU1RSU0lHTkFMCkhBVkVfREVD
TF9TVFJFUlJPUl9SCkhBVkVfREVDTF9TVFJUT0tfUgpIQVZFX1NUUkNBU0VTVFIKSEFWRV9TVFJT
RVAKSEFWRV9TVFJQQlJLCkhBVkVfREVDTF9TVFJOTEVOCkhBVkVfREVDTF9TVFJORFVQCkhBVkVf
REVDTF9TVFJEVVAKSEFWRV9TVFJDSFJOVUwKSEFWRV9TVFBOQ1BZCkhBVkVfU1RQQ1BZCkhBVkVf
UkFXTUVNQ0hSCkhBVkVfREVDTF9NRU1SQ0hSCkhBVkVfTUVNUENQWQpIQVZFX0RFQ0xfTUVNTUVN
CkhBVkVfTUVNQ0hSCkhBVkVfRkZTTEwKSEFWRV9GRlNMCkhBVkVfTUJTTEVOCkdOVUxJQl9TVFJW
RVJTQ01QCkdOVUxJQl9TVFJTSUdOQUwKR05VTElCX1NUUkVSUk9SX1IKR05VTElCX1NUUkVSUk9S
CkdOVUxJQl9NQlNUT0tfUgpHTlVMSUJfTUJTU0VQCkdOVUxJQl9NQlNTUE4KR05VTElCX01CU1BC
UksKR05VTElCX01CU0NTUE4KR05VTElCX01CU0NBU0VTVFIKR05VTElCX01CU1BDQVNFQ01QCkdO
VUxJQl9NQlNOQ0FTRUNNUApHTlVMSUJfTUJTQ0FTRUNNUApHTlVMSUJfTUJTU1RSCkdOVUxJQl9N
QlNSQ0hSCkdOVUxJQl9NQlNDSFIKR05VTElCX01CU05MRU4KR05VTElCX01CU0xFTgpHTlVMSUJf
U1RSVE9LX1IKR05VTElCX1NUUkNBU0VTVFIKR05VTElCX1NUUlNUUgpHTlVMSUJfU1RSU0VQCkdO
VUxJQl9TVFJQQlJLCkdOVUxJQl9TVFJOTEVOCkdOVUxJQl9TVFJORFVQCkdOVUxJQl9TVFJOQ0FU
CkdOVUxJQl9TVFJEVVAKR05VTElCX1NUUkNIUk5VTApHTlVMSUJfU1RQTkNQWQpHTlVMSUJfU1RQ
Q1BZCkdOVUxJQl9SQVdNRU1DSFIKR05VTElCX01FTVJDSFIKR05VTElCX01FTVBDUFkKR05VTElC
X01FTU1FTQpHTlVMSUJfTUVNQ0hSCkdOVUxJQl9GRlNMTApHTlVMSUJfRkZTTApIQVZFX1dJTlNP
Q0syX0gKTkVYVF9BU19GSVJTVF9ESVJFQ1RJVkVfU1lTX1RJTUVfSApORVhUX1NZU19USU1FX0gK
UkVQTEFDRV9TVFJVQ1RfVElNRVZBTApSRVBMQUNFX0dFVFRJTUVPRkRBWQpIQVZFX1NZU19USU1F
X0gKSEFWRV9TVFJVQ1RfVElNRVZBTApIQVZFX0dFVFRJTUVPRkRBWQpHTlVMSUJfR0VUVElNRU9G
REFZCkxUTElCSU5UTApMSUJJTlRMCkdOVUxJQl9HTF9VTklTVERfSF9HRVRPUFQKR0VUT1BUX0gK
SEFWRV9HRVRPUFRfSApORVhUX0FTX0ZJUlNUX0RJUkVDVElWRV9HRVRPUFRfSApORVhUX0dFVE9Q
VF9ICldJTkRPV1NfNjRfQklUX1NUX1NJWkUKTkVYVF9BU19GSVJTVF9ESVJFQ1RJVkVfU1lTX1NU
QVRfSApORVhUX1NZU19TVEFUX0gKSEFWRV9NU1ZDX0lOVkFMSURfUEFSQU1FVEVSX0hBTkRMRVIK
UkVQTEFDRV9VVElNRU5TQVQKUkVQTEFDRV9TVEFUClJFUExBQ0VfTUtOT0QKUkVQTEFDRV9NS0ZJ
Rk8KUkVQTEFDRV9NS0RJUgpSRVBMQUNFX0xTVEFUClJFUExBQ0VfRlVUSU1FTlMKUkVQTEFDRV9G
U1RBVEFUClJFUExBQ0VfRlNUQVQKSEFWRV9VVElNRU5TQVQKSEFWRV9NS05PREFUCkhBVkVfTUtO
T0QKSEFWRV9NS0ZJRk9BVApIQVZFX01LRklGTwpIQVZFX01LRElSQVQKSEFWRV9MU1RBVApIQVZF
X0xDSE1PRApIQVZFX0ZVVElNRU5TCkhBVkVfRlNUQVRBVApIQVZFX0ZDSE1PREFUCkdOVUxJQl9V
VElNRU5TQVQKR05VTElCX1NUQVQKR05VTElCX01LTk9EQVQKR05VTElCX01LTk9ECkdOVUxJQl9N
S0ZJRk9BVApHTlVMSUJfTUtGSUZPCkdOVUxJQl9NS0RJUkFUCkdOVUxJQl9MU1RBVApHTlVMSUJf
TENITU9ECkdOVUxJQl9GVVRJTUVOUwpHTlVMSUJfRlNUQVRBVApHTlVMSUJfRlNUQVQKR05VTElC
X0ZDSE1PREFUClJFUExBQ0VfSVRPTEQKR0xfR0VORVJBVEVfRkxPQVRfSF9GQUxTRQpHTF9HRU5F
UkFURV9GTE9BVF9IX1RSVUUKRkxPQVRfSApORVhUX0FTX0ZJUlNUX0RJUkVDVElWRV9GTE9BVF9I
Ck5FWFRfRkxPQVRfSApORVhUX0FTX0ZJUlNUX0RJUkVDVElWRV9GQ05UTF9ICk5FWFRfRkNOVExf
SApSRVBMQUNFX09QRU5BVApSRVBMQUNFX09QRU4KUkVQTEFDRV9GQ05UTApIQVZFX09QRU5BVApI
QVZFX0ZDTlRMCkdOVUxJQl9PUEVOQVQKR05VTElCX09QRU4KR05VTElCX05PTkJMT0NLSU5HCkdO
VUxJQl9GQ05UTApFT1ZFUkZMT1dfVkFMVUUKRU9WRVJGTE9XX0hJRERFTgpFTk9MSU5LX1ZBTFVF
CkVOT0xJTktfSElEREVOCkVNVUxUSUhPUF9WQUxVRQpFTVVMVElIT1BfSElEREVOCkdMX0dFTkVS
QVRFX0VSUk5PX0hfRkFMU0UKR0xfR0VORVJBVEVfRVJSTk9fSF9UUlVFCkVSUk5PX0gKTkVYVF9B
U19GSVJTVF9ESVJFQ1RJVkVfRVJSTk9fSApORVhUX0VSUk5PX0gKSEFWRV9ESVJFTlRfSApORVhU
X0FTX0ZJUlNUX0RJUkVDVElWRV9ESVJFTlRfSApORVhUX0RJUkVOVF9IClBSQUdNQV9DT0xVTU5T
ClBSQUdNQV9TWVNURU1fSEVBREVSCklOQ0xVREVfTkVYVF9BU19GSVJTVF9ESVJFQ1RJVkUKSU5D
TFVERV9ORVhUClJFUExBQ0VfRkRPUEVORElSClJFUExBQ0VfRElSRkQKUkVQTEFDRV9DTE9TRURJ
UgpSRVBMQUNFX09QRU5ESVIKSEFWRV9BTFBIQVNPUlQKSEFWRV9TQ0FORElSCkhBVkVfRkRPUEVO
RElSCkhBVkVfREVDTF9GRE9QRU5ESVIKSEFWRV9ERUNMX0RJUkZECkhBVkVfQ0xPU0VESVIKSEFW
RV9SRVdJTkRESVIKSEFWRV9SRUFERElSCkhBVkVfT1BFTkRJUgpHTlVMSUJfQUxQSEFTT1JUCkdO
VUxJQl9TQ0FORElSCkdOVUxJQl9GRE9QRU5ESVIKR05VTElCX0RJUkZECkdOVUxJQl9DTE9TRURJ
UgpHTlVMSUJfUkVXSU5ERElSCkdOVUxJQl9SRUFERElSCkdOVUxJQl9PUEVORElSClVOSVNURF9I
X0hBVkVfV0lOU09DSzJfSF9BTkRfVVNFX1NPQ0tFVFMKVU5JU1REX0hfSEFWRV9XSU5TT0NLMl9I
ClJFUExBQ0VfV1JJVEUKUkVQTEFDRV9VU0xFRVAKUkVQTEFDRV9VTkxJTktBVApSRVBMQUNFX1VO
TElOSwpSRVBMQUNFX1RUWU5BTUVfUgpSRVBMQUNFX1NZTUxJTksKUkVQTEFDRV9TTEVFUApSRVBM
QUNFX1JNRElSClJFUExBQ0VfUkVBRExJTksKUkVQTEFDRV9SRUFEClJFUExBQ0VfUFdSSVRFClJF
UExBQ0VfUFJFQUQKUkVQTEFDRV9MU0VFSwpSRVBMQUNFX0xJTktBVApSRVBMQUNFX0xJTksKUkVQ
TEFDRV9MQ0hPV04KUkVQTEFDRV9JU0FUVFkKUkVQTEFDRV9HRVRQQUdFU0laRQpSRVBMQUNFX0dF
VEdST1VQUwpSRVBMQUNFX0dFVExPR0lOX1IKUkVQTEFDRV9HRVRET01BSU5OQU1FClJFUExBQ0Vf
R0VUQ1dEClJFUExBQ0VfRlRSVU5DQVRFClJFUExBQ0VfRkNIT1dOQVQKUkVQTEFDRV9EVVAyClJF
UExBQ0VfRFVQClJFUExBQ0VfQ0xPU0UKUkVQTEFDRV9DSE9XTgpIQVZFX1NZU19QQVJBTV9ICkhB
VkVfT1NfSApIQVZFX0RFQ0xfVFRZTkFNRV9SCkhBVkVfREVDTF9TRVRIT1NUTkFNRQpIQVZFX0RF
Q0xfR0VUVVNFUlNIRUxMCkhBVkVfREVDTF9HRVRQQUdFU0laRQpIQVZFX0RFQ0xfR0VUTE9HSU5f
UgpIQVZFX0RFQ0xfR0VURE9NQUlOTkFNRQpIQVZFX0RFQ0xfRkRBVEFTWU5DCkhBVkVfREVDTF9G
Q0hESVIKSEFWRV9ERUNMX0VOVklST04KSEFWRV9VU0xFRVAKSEFWRV9VTkxJTktBVApIQVZFX1NZ
TUxJTktBVApIQVZFX1NZTUxJTksKSEFWRV9TTEVFUApIQVZFX1NFVEhPU1ROQU1FCkhBVkVfUkVB
RExJTktBVApIQVZFX1JFQURMSU5LCkhBVkVfUFdSSVRFCkhBVkVfUFJFQUQKSEFWRV9QSVBFMgpI
QVZFX1BJUEUKSEFWRV9MSU5LQVQKSEFWRV9MSU5LCkhBVkVfTENIT1dOCkhBVkVfR1JPVVBfTUVN
QkVSCkhBVkVfR0VUUEFHRVNJWkUKSEFWRV9HRVRMT0dJTgpIQVZFX0dFVEhPU1ROQU1FCkhBVkVf
R0VUR1JPVVBTCkhBVkVfR0VURFRBQkxFU0laRQpIQVZFX0ZUUlVOQ0FURQpIQVZFX0ZTWU5DCkhB
VkVfRkRBVEFTWU5DCkhBVkVfRkNIT1dOQVQKSEFWRV9GQ0hESVIKSEFWRV9GQUNDRVNTQVQKSEFW
RV9FVUlEQUNDRVNTCkhBVkVfRFVQMwpIQVZFX0RVUDIKSEFWRV9DSE9XTgpHTlVMSUJfV1JJVEUK
R05VTElCX1VTTEVFUApHTlVMSUJfVU5MSU5LQVQKR05VTElCX1VOTElOSwpHTlVMSUJfVU5JU1RE
X0hfU0lHUElQRQpHTlVMSUJfVU5JU1REX0hfTk9OQkxPQ0tJTkcKR05VTElCX1RUWU5BTUVfUgpH
TlVMSUJfU1lNTElOS0FUCkdOVUxJQl9TWU1MSU5LCkdOVUxJQl9TTEVFUApHTlVMSUJfU0VUSE9T
VE5BTUUKR05VTElCX1JNRElSCkdOVUxJQl9SRUFETElOS0FUCkdOVUxJQl9SRUFETElOSwpHTlVM
SUJfUkVBRApHTlVMSUJfUFdSSVRFCkdOVUxJQl9QUkVBRApHTlVMSUJfUElQRTIKR05VTElCX1BJ
UEUKR05VTElCX0xTRUVLCkdOVUxJQl9MSU5LQVQKR05VTElCX0xJTksKR05VTElCX0xDSE9XTgpH
TlVMSUJfSVNBVFRZCkdOVUxJQl9HUk9VUF9NRU1CRVIKR05VTElCX0dFVFVTRVJTSEVMTApHTlVM
SUJfR0VUUEFHRVNJWkUKR05VTElCX0dFVExPR0lOX1IKR05VTElCX0dFVExPR0lOCkdOVUxJQl9H
RVRIT1NUTkFNRQpHTlVMSUJfR0VUR1JPVVBTCkdOVUxJQl9HRVREVEFCTEVTSVpFCkdOVUxJQl9H
RVRET01BSU5OQU1FCkdOVUxJQl9HRVRDV0QKR05VTElCX0ZUUlVOQ0FURQpHTlVMSUJfRlNZTkMK
R05VTElCX0ZEQVRBU1lOQwpHTlVMSUJfRkNIT1dOQVQKR05VTElCX0ZDSERJUgpHTlVMSUJfRkFD
Q0VTU0FUCkdOVUxJQl9FVUlEQUNDRVNTCkdOVUxJQl9FTlZJUk9OCkdOVUxJQl9EVVAzCkdOVUxJ
Ql9EVVAyCkdOVUxJQl9EVVAKR05VTElCX0NMT1NFCkdOVUxJQl9DSE9XTgpHTlVMSUJfQ0hESVIK
R0xfR0VORVJBVEVfQUxMT0NBX0hfRkFMU0UKR0xfR0VORVJBVEVfQUxMT0NBX0hfVFJVRQpBTExP
Q0FfSApBTExPQ0EKUkVQTEFDRV9XQ1RPTUIKUkVQTEFDRV9VTlNFVEVOVgpSRVBMQUNFX1NUUlRP
RApSRVBMQUNFX1NFVEVOVgpSRVBMQUNFX1JFQUxQQVRIClJFUExBQ0VfUkVBTExPQwpSRVBMQUNF
X1JBTkRPTV9SClJFUExBQ0VfUFVURU5WClJFUExBQ0VfUFRTTkFNRV9SClJFUExBQ0VfUFRTTkFN
RQpSRVBMQUNFX01LU1RFTVAKUkVQTEFDRV9NQlRPV0MKUkVQTEFDRV9NQUxMT0MKUkVQTEFDRV9D
QU5PTklDQUxJWkVfRklMRV9OQU1FClJFUExBQ0VfQ0FMTE9DCkhBVkVfREVDTF9VTlNFVEVOVgpI
QVZFX1VOTE9DS1BUCkhBVkVfU1lTX0xPQURBVkdfSApIQVZFX1NUUlVDVF9SQU5ET01fREFUQQpI
QVZFX1NUUlRPVUxMCkhBVkVfU1RSVE9MTApIQVZFX1NUUlRPRApIQVZFX0RFQ0xfU0VURU5WCkhB
VkVfU0VURU5WCkhBVkVfU0VDVVJFX0dFVEVOVgpIQVZFX1JQTUFUQ0gKSEFWRV9SRUFMUEFUSApI
QVZFX1JBTkRPTV9SCkhBVkVfUkFORE9NX0gKSEFWRV9SQU5ET00KSEFWRV9QVFNOQU1FX1IKSEFW
RV9QVFNOQU1FCkhBVkVfUE9TSVhfT1BFTlBUCkhBVkVfTUtTVEVNUFMKSEFWRV9NS1NURU1QCkhB
VkVfTUtPU1RFTVBTCkhBVkVfTUtPU1RFTVAKSEFWRV9NS0RURU1QCkhBVkVfR1JBTlRQVApIQVZF
X0dFVFNVQk9QVApIQVZFX0RFQ0xfR0VUTE9BREFWRwpIQVZFX0NBTk9OSUNBTElaRV9GSUxFX05B
TUUKSEFWRV9BVE9MTApIQVZFX19FWElUCkdOVUxJQl9XQ1RPTUIKR05VTElCX1VOU0VURU5WCkdO
VUxJQl9VTkxPQ0tQVApHTlVMSUJfU1lTVEVNX1BPU0lYCkdOVUxJQl9TVFJUT1VMTApHTlVMSUJf
U1RSVE9MTApHTlVMSUJfU1RSVE9ECkdOVUxJQl9TRVRFTlYKR05VTElCX1NFQ1VSRV9HRVRFTlYK
R05VTElCX1JQTUFUQ0gKR05VTElCX1JFQUxQQVRICkdOVUxJQl9SRUFMTE9DX1BPU0lYCkdOVUxJ
Ql9SQU5ET01fUgpHTlVMSUJfUkFORE9NCkdOVUxJQl9QVVRFTlYKR05VTElCX1BUU05BTUVfUgpH
TlVMSUJfUFRTTkFNRQpHTlVMSUJfUE9TSVhfT1BFTlBUCkdOVUxJQl9NS1NURU1QUwpHTlVMSUJf
TUtTVEVNUApHTlVMSUJfTUtPU1RFTVBTCkdOVUxJQl9NS09TVEVNUApHTlVMSUJfTUtEVEVNUApH
TlVMSUJfTUJUT1dDCkdOVUxJQl9NQUxMT0NfUE9TSVgKR05VTElCX0dSQU5UUFQKR05VTElCX0dF
VFNVQk9QVApHTlVMSUJfR0VUTE9BREFWRwpHTlVMSUJfQ0FOT05JQ0FMSVpFX0ZJTEVfTkFNRQpH
TlVMSUJfQ0FMTE9DX1BPU0lYCkdOVUxJQl9BVE9MTApHTlVMSUJfX0VYSVQKR0xfQ09ORF9MSUJU
T09MX0ZBTFNFCkdMX0NPTkRfTElCVE9PTF9UUlVFCmhvc3Rfb3MKaG9zdF92ZW5kb3IKaG9zdF9j
cHUKaG9zdApidWlsZF9vcwpidWlsZF92ZW5kb3IKYnVpbGRfY3B1CmJ1aWxkClJBTkxJQgpBUkZM
QUdTCkFSCkVHUkVQCkdSRVAKQ1BQCmFtX19mYXN0ZGVwQ0NfRkFMU0UKYW1fX2Zhc3RkZXBDQ19U
UlVFCkNDREVQTU9ERQphbV9fbm9kZXAKQU1ERVBCQUNLU0xBU0gKQU1ERVBfRkFMU0UKQU1ERVBf
VFJVRQphbV9fcXVvdGUKYW1fX2luY2x1ZGUKREVQRElSCk9CSkVYVApFWEVFWFQKYWNfY3RfQ0MK
Q1BQRkxBR1MKTERGTEFHUwpDRkxBR1MKQ0MKUElDClNPRUxJTQpFRApESUZGMwpESUZGClNFTkRN
QUlMCkFNX0JBQ0tTTEFTSApBTV9ERUZBVUxUX1ZFUkJPU0lUWQpBTV9ERUZBVUxUX1YKQU1fVgph
bV9fdW50YXIKYW1fX3RhcgpBTVRBUgphbV9fbGVhZGluZ19kb3QKU0VUX01BS0UKQVdLCm1rZGly
X3AKTUtESVJfUApJTlNUQUxMX1NUUklQX1BST0dSQU0KU1RSSVAKaW5zdGFsbF9zaApNQUtFSU5G
TwpBVVRPSEVBREVSCkFVVE9NQUtFCkFVVE9DT05GCkFDTE9DQUwKVkVSU0lPTgpQQUNLQUdFCkNZ
R1BBVEhfVwphbV9faXNyYwpJTlNUQUxMX0RBVEEKSU5TVEFMTF9TQ1JJUFQKSU5TVEFMTF9QUk9H
UkFNCnRhcmdldF9hbGlhcwpob3N0X2FsaWFzCmJ1aWxkX2FsaWFzCkxJQlMKRUNIT19UCkVDSE9f
TgpFQ0hPX0MKREVGUwptYW5kaXIKbG9jYWxlZGlyCmxpYmRpcgpwc2RpcgpwZGZkaXIKZHZpZGly
Cmh0bWxkaXIKaW5mb2Rpcgpkb2NkaXIKb2xkaW5jbHVkZWRpcgppbmNsdWRlZGlyCmxvY2Fsc3Rh
dGVkaXIKc2hhcmVkc3RhdGVkaXIKc3lzY29uZmRpcgpkYXRhZGlyCmRhdGFyb290ZGlyCmxpYmV4
ZWNkaXIKc2JpbmRpcgpiaW5kaXIKcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZQpwcmVmaXgKZXhlY19w
cmVmaXgKUEFDS0FHRV9VUkwKUEFDS0FHRV9CVUdSRVBPUlQKUEFDS0FHRV9TVFJJTkcKUEFDS0FH
RV9WRVJTSU9OClBBQ0tBR0VfVEFSTkFNRQpQQUNLQUdFX05BTUUKUEFUSF9TRVBBUkFUT1IKU0hF
TEwnCmFjX3N1YnN0X2ZpbGVzPScnCmFjX3VzZXJfb3B0cz0nCmVuYWJsZV9vcHRpb25fY2hlY2tp
bmcKZW5hYmxlX3NpbGVudF9ydWxlcwplbmFibGVfY292ZXJhZ2UKZW5hYmxlX2NvbXBhdDIKd2l0
aF9tYWlsZXIKZW5hYmxlX21tYXAKZW5hYmxlX3N1aWQKZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tp
bmcKZW5hYmxlX2xhcmdlZmlsZQplbmFibGVfdGhyZWFkcwp3aXRoX2dudV9sZAplbmFibGVfcnBh
dGgKd2l0aF9saWJwdGhfcHJlZml4CicKICAgICAgYWNfcHJlY2lvdXNfdmFycz0nYnVpbGRfYWxp
YXMKaG9zdF9hbGlhcwp0YXJnZXRfYWxpYXMKRElGRgpESUZGMwpTT0VMSU0KUElDCkNDCkNGTEFH
UwpMREZMQUdTCkxJQlMKQ1BQRkxBR1MKQ1BQJwoKCiMgSW5pdGlhbGl6ZSBzb21lIHZhcmlhYmxl
cyBzZXQgYnkgb3B0aW9ucy4KYWNfaW5pdF9oZWxwPQphY19pbml0X3ZlcnNpb249ZmFsc2UKYWNf
dW5yZWNvZ25pemVkX29wdHM9CmFjX3VucmVjb2duaXplZF9zZXA9CiMgVGhlIHZhcmlhYmxlcyBo
YXZlIHRoZSBzYW1lIG5hbWVzIGFzIHRoZSBvcHRpb25zLCB3aXRoCiMgZGFzaGVzIGNoYW5nZWQg
dG8gdW5kZXJsaW5lcy4KY2FjaGVfZmlsZT0vZGV2L251bGwKZXhlY19wcmVmaXg9Tk9ORQpub19j
cmVhdGU9Cm5vX3JlY3Vyc2lvbj0KcHJlZml4PU5PTkUKcHJvZ3JhbV9wcmVmaXg9Tk9ORQpwcm9n
cmFtX3N1ZmZpeD1OT05FCnByb2dyYW1fdHJhbnNmb3JtX25hbWU9cyx4LHgsCnNpbGVudD0Kc2l0
ZT0Kc3JjZGlyPQp2ZXJib3NlPQp4X2luY2x1ZGVzPU5PTkUKeF9saWJyYXJpZXM9Tk9ORQoKIyBJ
bnN0YWxsYXRpb24gZGlyZWN0b3J5IG9wdGlvbnMuCiMgVGhlc2UgYXJlIGxlZnQgdW5leHBhbmRl
ZCBzbyB1c2VycyBjYW4gIm1ha2UgaW5zdGFsbCBleGVjX3ByZWZpeD0vZm9vIgojIGFuZCBhbGwg
dGhlIHZhcmlhYmxlcyB0aGF0IGFyZSBzdXBwb3NlZCB0byBiZSBiYXNlZCBvbiBleGVjX3ByZWZp
eAojIGJ5IGRlZmF1bHQgd2lsbCBhY3R1YWxseSBjaGFuZ2UuCiMgVXNlIGJyYWNlcyBpbnN0ZWFk
IG9mIHBhcmVucyBiZWNhdXNlIHNoLCBwZXJsLCBldGMuIGFsc28gYWNjZXB0IHRoZW0uCiMgKFRo
ZSBsaXN0IGZvbGxvd3MgdGhlIHNhbWUgb3JkZXIgYXMgdGhlIEdOVSBDb2RpbmcgU3RhbmRhcmRz
LikKYmluZGlyPScke2V4ZWNfcHJlZml4fS9iaW4nCnNiaW5kaXI9JyR7ZXhlY19wcmVmaXh9L3Ni
aW4nCmxpYmV4ZWNkaXI9JyR7ZXhlY19wcmVmaXh9L2xpYmV4ZWMnCmRhdGFyb290ZGlyPScke3By
ZWZpeH0vc2hhcmUnCmRhdGFkaXI9JyR7ZGF0YXJvb3RkaXJ9JwpzeXNjb25mZGlyPScke3ByZWZp
eH0vZXRjJwpzaGFyZWRzdGF0ZWRpcj0nJHtwcmVmaXh9L2NvbScKbG9jYWxzdGF0ZWRpcj0nJHtw
cmVmaXh9L3ZhcicKaW5jbHVkZWRpcj0nJHtwcmVmaXh9L2luY2x1ZGUnCm9sZGluY2x1ZGVkaXI9
Jy91c3IvaW5jbHVkZScKZG9jZGlyPScke2RhdGFyb290ZGlyfS9kb2MvJHtQQUNLQUdFX1RBUk5B
TUV9JwppbmZvZGlyPScke2RhdGFyb290ZGlyfS9pbmZvJwpodG1sZGlyPScke2RvY2Rpcn0nCmR2
aWRpcj0nJHtkb2NkaXJ9JwpwZGZkaXI9JyR7ZG9jZGlyfScKcHNkaXI9JyR7ZG9jZGlyfScKbGli
ZGlyPScke2V4ZWNfcHJlZml4fS9saWInCmxvY2FsZWRpcj0nJHtkYXRhcm9vdGRpcn0vbG9jYWxl
JwptYW5kaXI9JyR7ZGF0YXJvb3RkaXJ9L21hbicKCmFjX3ByZXY9CmFjX2Rhc2hkYXNoPQpmb3Ig
YWNfb3B0aW9uCmRvCiAgIyBJZiB0aGUgcHJldmlvdXMgb3B0aW9uIG5lZWRzIGFuIGFyZ3VtZW50
LCBhc3NpZ24gaXQuCiAgaWYgdGVzdCAtbiAiJGFjX3ByZXYiOyB0aGVuCiAgICBldmFsICRhY19w
cmV2PVwkYWNfb3B0aW9uCiAgICBhY19wcmV2PQogICAgY29udGludWUKICBmaQoKICBjYXNlICRh
Y19vcHRpb24gaW4KICAqPT8qKSBhY19vcHRhcmc9YGV4cHIgIlgkYWNfb3B0aW9uIiA6ICdbXj1d
Kj1cKC4qXCknYCA7OwogICo9KSAgIGFjX29wdGFyZz0gOzsKICAqKSAgICBhY19vcHRhcmc9eWVz
IDs7CiAgZXNhYwoKICAjIEFjY2VwdCB0aGUgaW1wb3J0YW50IEN5Z251cyBjb25maWd1cmUgb3B0
aW9ucywgc28gd2UgY2FuIGRpYWdub3NlIHR5cG9zLgoKICBjYXNlICRhY19kYXNoZGFzaCRhY19v
cHRpb24gaW4KICAtLSkKICAgIGFjX2Rhc2hkYXNoPXllcyA7OwoKICAtYmluZGlyIHwgLS1iaW5k
aXIgfCAtLWJpbmRpIHwgLS1iaW5kIHwgLS1iaW4gfCAtLWJpKQogICAgYWNfcHJldj1iaW5kaXIg
OzsKICAtYmluZGlyPSogfCAtLWJpbmRpcj0qIHwgLS1iaW5kaT0qIHwgLS1iaW5kPSogfCAtLWJp
bj0qIHwgLS1iaT0qKQogICAgYmluZGlyPSRhY19vcHRhcmcgOzsKCiAgLWJ1aWxkIHwgLS1idWls
ZCB8IC0tYnVpbCB8IC0tYnVpIHwgLS1idSkKICAgIGFjX3ByZXY9YnVpbGRfYWxpYXMgOzsKICAt
YnVpbGQ9KiB8IC0tYnVpbGQ9KiB8IC0tYnVpbD0qIHwgLS1idWk9KiB8IC0tYnU9KikKICAgIGJ1
aWxkX2FsaWFzPSRhY19vcHRhcmcgOzsKCiAgLWNhY2hlLWZpbGUgfCAtLWNhY2hlLWZpbGUgfCAt
LWNhY2hlLWZpbCB8IC0tY2FjaGUtZmkgXAogIHwgLS1jYWNoZS1mIHwgLS1jYWNoZS0gfCAtLWNh
Y2hlIHwgLS1jYWNoIHwgLS1jYWMgfCAtLWNhIHwgLS1jKQogICAgYWNfcHJldj1jYWNoZV9maWxl
IDs7CiAgLWNhY2hlLWZpbGU9KiB8IC0tY2FjaGUtZmlsZT0qIHwgLS1jYWNoZS1maWw9KiB8IC0t
Y2FjaGUtZmk9KiBcCiAgfCAtLWNhY2hlLWY9KiB8IC0tY2FjaGUtPSogfCAtLWNhY2hlPSogfCAt
LWNhY2g9KiB8IC0tY2FjPSogfCAtLWNhPSogfCAtLWM9KikKICAgIGNhY2hlX2ZpbGU9JGFjX29w
dGFyZyA7OwoKICAtLWNvbmZpZy1jYWNoZSB8IC1DKQogICAgY2FjaGVfZmlsZT1jb25maWcuY2Fj
aGUgOzsKCiAgLWRhdGFkaXIgfCAtLWRhdGFkaXIgfCAtLWRhdGFkaSB8IC0tZGF0YWQpCiAgICBh
Y19wcmV2PWRhdGFkaXIgOzsKICAtZGF0YWRpcj0qIHwgLS1kYXRhZGlyPSogfCAtLWRhdGFkaT0q
IHwgLS1kYXRhZD0qKQogICAgZGF0YWRpcj0kYWNfb3B0YXJnIDs7CgogIC1kYXRhcm9vdGRpciB8
IC0tZGF0YXJvb3RkaXIgfCAtLWRhdGFyb290ZGkgfCAtLWRhdGFyb290ZCB8IC0tZGF0YXJvb3Qg
XAogIHwgLS1kYXRhcm9vIHwgLS1kYXRhcm8gfCAtLWRhdGFyKQogICAgYWNfcHJldj1kYXRhcm9v
dGRpciA7OwogIC1kYXRhcm9vdGRpcj0qIHwgLS1kYXRhcm9vdGRpcj0qIHwgLS1kYXRhcm9vdGRp
PSogfCAtLWRhdGFyb290ZD0qIFwKICB8IC0tZGF0YXJvb3Q9KiB8IC0tZGF0YXJvbz0qIHwgLS1k
YXRhcm89KiB8IC0tZGF0YXI9KikKICAgIGRhdGFyb290ZGlyPSRhY19vcHRhcmcgOzsKCiAgLWRp
c2FibGUtKiB8IC0tZGlzYWJsZS0qKQogICAgYWNfdXNlcm9wdD1gZXhwciAieCRhY19vcHRpb24i
IDogJ3gtKmRpc2FibGUtXCguKlwpJ2AKICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2
YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4KICAgIGV4cHIgIngkYWNfdXNlcm9wdCIgOiAiLipb
Xi0rLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCiAgICAgIGFzX2ZuX2Vycm9yICQ/ICJp
bnZhbGlkIGZlYXR1cmUgbmFtZTogJGFjX3VzZXJvcHQiCiAgICBhY191c2Vyb3B0X29yaWc9JGFj
X3VzZXJvcHQKICAgIGFjX3VzZXJvcHQ9YCRhc19lY2hvICIkYWNfdXNlcm9wdCIgfCBzZWQgJ3Mv
Wy0rLl0vXy9nJ2AKICAgIGNhc2UgJGFjX3VzZXJfb3B0cyBpbgogICAgICAqIgoiZW5hYmxlXyRh
Y191c2Vyb3B0IgoiKikgOzsKICAgICAgKikgYWNfdW5yZWNvZ25pemVkX29wdHM9IiRhY191bnJl
Y29nbml6ZWRfb3B0cyRhY191bnJlY29nbml6ZWRfc2VwLS1kaXNhYmxlLSRhY191c2Vyb3B0X29y
aWciCgkgYWNfdW5yZWNvZ25pemVkX3NlcD0nLCAnOzsKICAgIGVzYWMKICAgIGV2YWwgZW5hYmxl
XyRhY191c2Vyb3B0PW5vIDs7CgogIC1kb2NkaXIgfCAtLWRvY2RpciB8IC0tZG9jZGkgfCAtLWRv
YyB8IC0tZG8pCiAgICBhY19wcmV2PWRvY2RpciA7OwogIC1kb2NkaXI9KiB8IC0tZG9jZGlyPSog
fCAtLWRvY2RpPSogfCAtLWRvYz0qIHwgLS1kbz0qKQogICAgZG9jZGlyPSRhY19vcHRhcmcgOzsK
CiAgLWR2aWRpciB8IC0tZHZpZGlyIHwgLS1kdmlkaSB8IC0tZHZpZCB8IC0tZHZpIHwgLS1kdikK
ICAgIGFjX3ByZXY9ZHZpZGlyIDs7CiAgLWR2aWRpcj0qIHwgLS1kdmlkaXI9KiB8IC0tZHZpZGk9
KiB8IC0tZHZpZD0qIHwgLS1kdmk9KiB8IC0tZHY9KikKICAgIGR2aWRpcj0kYWNfb3B0YXJnIDs7
CgogIC1lbmFibGUtKiB8IC0tZW5hYmxlLSopCiAgICBhY191c2Vyb3B0PWBleHByICJ4JGFjX29w
dGlvbiIgOiAneC0qZW5hYmxlLVwoW149XSpcKSdgCiAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFy
ZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCiAgICBleHByICJ4JGFjX3VzZXJvcHQi
IDogIi4qW14tKy5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgogICAgICBhc19mbl9lcnJv
ciAkPyAiaW52YWxpZCBmZWF0dXJlIG5hbWU6ICRhY191c2Vyb3B0IgogICAgYWNfdXNlcm9wdF9v
cmlnPSRhY191c2Vyb3B0CiAgICBhY191c2Vyb3B0PWAkYXNfZWNobyAiJGFjX3VzZXJvcHQiIHwg
c2VkICdzL1stKy5dL18vZydgCiAgICBjYXNlICRhY191c2VyX29wdHMgaW4KICAgICAgKiIKImVu
YWJsZV8kYWNfdXNlcm9wdCIKIiopIDs7CiAgICAgICopIGFjX3VucmVjb2duaXplZF9vcHRzPSIk
YWNfdW5yZWNvZ25pemVkX29wdHMkYWNfdW5yZWNvZ25pemVkX3NlcC0tZW5hYmxlLSRhY191c2Vy
b3B0X29yaWciCgkgYWNfdW5yZWNvZ25pemVkX3NlcD0nLCAnOzsKICAgIGVzYWMKICAgIGV2YWwg
ZW5hYmxlXyRhY191c2Vyb3B0PVwkYWNfb3B0YXJnIDs7CgogIC1leGVjLXByZWZpeCB8IC0tZXhl
Y19wcmVmaXggfCAtLWV4ZWMtcHJlZml4IHwgLS1leGVjLXByZWZpIFwKICB8IC0tZXhlYy1wcmVm
IHwgLS1leGVjLXByZSB8IC0tZXhlYy1wciB8IC0tZXhlYy1wIHwgLS1leGVjLSBcCiAgfCAtLWV4
ZWMgfCAtLWV4ZSB8IC0tZXgpCiAgICBhY19wcmV2PWV4ZWNfcHJlZml4IDs7CiAgLWV4ZWMtcHJl
Zml4PSogfCAtLWV4ZWNfcHJlZml4PSogfCAtLWV4ZWMtcHJlZml4PSogfCAtLWV4ZWMtcHJlZmk9
KiBcCiAgfCAtLWV4ZWMtcHJlZj0qIHwgLS1leGVjLXByZT0qIHwgLS1leGVjLXByPSogfCAtLWV4
ZWMtcD0qIHwgLS1leGVjLT0qIFwKICB8IC0tZXhlYz0qIHwgLS1leGU9KiB8IC0tZXg9KikKICAg
IGV4ZWNfcHJlZml4PSRhY19vcHRhcmcgOzsKCiAgLWdhcyB8IC0tZ2FzIHwgLS1nYSB8IC0tZykK
ICAgICMgT2Jzb2xldGU7IHVzZSAtLXdpdGgtZ2FzLgogICAgd2l0aF9nYXM9eWVzIDs7CgogIC1o
ZWxwIHwgLS1oZWxwIHwgLS1oZWwgfCAtLWhlIHwgLWgpCiAgICBhY19pbml0X2hlbHA9bG9uZyA7
OwogIC1oZWxwPXIqIHwgLS1oZWxwPXIqIHwgLS1oZWw9ciogfCAtLWhlPXIqIHwgLWhyKikKICAg
IGFjX2luaXRfaGVscD1yZWN1cnNpdmUgOzsKICAtaGVscD1zKiB8IC0taGVscD1zKiB8IC0taGVs
PXMqIHwgLS1oZT1zKiB8IC1ocyopCiAgICBhY19pbml0X2hlbHA9c2hvcnQgOzsKCiAgLWhvc3Qg
fCAtLWhvc3QgfCAtLWhvcyB8IC0taG8pCiAgICBhY19wcmV2PWhvc3RfYWxpYXMgOzsKICAtaG9z
dD0qIHwgLS1ob3N0PSogfCAtLWhvcz0qIHwgLS1obz0qKQogICAgaG9zdF9hbGlhcz0kYWNfb3B0
YXJnIDs7CgogIC1odG1sZGlyIHwgLS1odG1sZGlyIHwgLS1odG1sZGkgfCAtLWh0bWxkIHwgLS1o
dG1sIHwgLS1odG0gfCAtLWh0KQogICAgYWNfcHJldj1odG1sZGlyIDs7CiAgLWh0bWxkaXI9KiB8
IC0taHRtbGRpcj0qIHwgLS1odG1sZGk9KiB8IC0taHRtbGQ9KiB8IC0taHRtbD0qIHwgLS1odG09
KiBcCiAgfCAtLWh0PSopCiAgICBodG1sZGlyPSRhY19vcHRhcmcgOzsKCiAgLWluY2x1ZGVkaXIg
fCAtLWluY2x1ZGVkaXIgfCAtLWluY2x1ZGVkaSB8IC0taW5jbHVkZWQgfCAtLWluY2x1ZGUgXAog
IHwgLS1pbmNsdWQgfCAtLWluY2x1IHwgLS1pbmNsIHwgLS1pbmMpCiAgICBhY19wcmV2PWluY2x1
ZGVkaXIgOzsKICAtaW5jbHVkZWRpcj0qIHwgLS1pbmNsdWRlZGlyPSogfCAtLWluY2x1ZGVkaT0q
IHwgLS1pbmNsdWRlZD0qIHwgLS1pbmNsdWRlPSogXAogIHwgLS1pbmNsdWQ9KiB8IC0taW5jbHU9
KiB8IC0taW5jbD0qIHwgLS1pbmM9KikKICAgIGluY2x1ZGVkaXI9JGFjX29wdGFyZyA7OwoKICAt
aW5mb2RpciB8IC0taW5mb2RpciB8IC0taW5mb2RpIHwgLS1pbmZvZCB8IC0taW5mbyB8IC0taW5m
KQogICAgYWNfcHJldj1pbmZvZGlyIDs7CiAgLWluZm9kaXI9KiB8IC0taW5mb2Rpcj0qIHwgLS1p
bmZvZGk9KiB8IC0taW5mb2Q9KiB8IC0taW5mbz0qIHwgLS1pbmY9KikKICAgIGluZm9kaXI9JGFj
X29wdGFyZyA7OwoKICAtbGliZGlyIHwgLS1saWJkaXIgfCAtLWxpYmRpIHwgLS1saWJkKQogICAg
YWNfcHJldj1saWJkaXIgOzsKICAtbGliZGlyPSogfCAtLWxpYmRpcj0qIHwgLS1saWJkaT0qIHwg
LS1saWJkPSopCiAgICBsaWJkaXI9JGFjX29wdGFyZyA7OwoKICAtbGliZXhlY2RpciB8IC0tbGli
ZXhlY2RpciB8IC0tbGliZXhlY2RpIHwgLS1saWJleGVjZCB8IC0tbGliZXhlYyBcCiAgfCAtLWxp
YmV4ZSB8IC0tbGliZXggfCAtLWxpYmUpCiAgICBhY19wcmV2PWxpYmV4ZWNkaXIgOzsKICAtbGli
ZXhlY2Rpcj0qIHwgLS1saWJleGVjZGlyPSogfCAtLWxpYmV4ZWNkaT0qIHwgLS1saWJleGVjZD0q
IHwgLS1saWJleGVjPSogXAogIHwgLS1saWJleGU9KiB8IC0tbGliZXg9KiB8IC0tbGliZT0qKQog
ICAgbGliZXhlY2Rpcj0kYWNfb3B0YXJnIDs7CgogIC1sb2NhbGVkaXIgfCAtLWxvY2FsZWRpciB8
IC0tbG9jYWxlZGkgfCAtLWxvY2FsZWQgfCAtLWxvY2FsZSkKICAgIGFjX3ByZXY9bG9jYWxlZGly
IDs7CiAgLWxvY2FsZWRpcj0qIHwgLS1sb2NhbGVkaXI9KiB8IC0tbG9jYWxlZGk9KiB8IC0tbG9j
YWxlZD0qIHwgLS1sb2NhbGU9KikKICAgIGxvY2FsZWRpcj0kYWNfb3B0YXJnIDs7CgogIC1sb2Nh
bHN0YXRlZGlyIHwgLS1sb2NhbHN0YXRlZGlyIHwgLS1sb2NhbHN0YXRlZGkgfCAtLWxvY2Fsc3Rh
dGVkIFwKICB8IC0tbG9jYWxzdGF0ZSB8IC0tbG9jYWxzdGF0IHwgLS1sb2NhbHN0YSB8IC0tbG9j
YWxzdCB8IC0tbG9jYWxzKQogICAgYWNfcHJldj1sb2NhbHN0YXRlZGlyIDs7CiAgLWxvY2Fsc3Rh
dGVkaXI9KiB8IC0tbG9jYWxzdGF0ZWRpcj0qIHwgLS1sb2NhbHN0YXRlZGk9KiB8IC0tbG9jYWxz
dGF0ZWQ9KiBcCiAgfCAtLWxvY2Fsc3RhdGU9KiB8IC0tbG9jYWxzdGF0PSogfCAtLWxvY2Fsc3Rh
PSogfCAtLWxvY2Fsc3Q9KiB8IC0tbG9jYWxzPSopCiAgICBsb2NhbHN0YXRlZGlyPSRhY19vcHRh
cmcgOzsKCiAgLW1hbmRpciB8IC0tbWFuZGlyIHwgLS1tYW5kaSB8IC0tbWFuZCB8IC0tbWFuIHwg
LS1tYSB8IC0tbSkKICAgIGFjX3ByZXY9bWFuZGlyIDs7CiAgLW1hbmRpcj0qIHwgLS1tYW5kaXI9
KiB8IC0tbWFuZGk9KiB8IC0tbWFuZD0qIHwgLS1tYW49KiB8IC0tbWE9KiB8IC0tbT0qKQogICAg
bWFuZGlyPSRhY19vcHRhcmcgOzsKCiAgLW5mcCB8IC0tbmZwIHwgLS1uZikKICAgICMgT2Jzb2xl
dGU7IHVzZSAtLXdpdGhvdXQtZnAuCiAgICB3aXRoX2ZwPW5vIDs7CgogIC1uby1jcmVhdGUgfCAt
LW5vLWNyZWF0ZSB8IC0tbm8tY3JlYXQgfCAtLW5vLWNyZWEgfCAtLW5vLWNyZSBcCiAgfCAtLW5v
LWNyIHwgLS1uby1jIHwgLW4pCiAgICBub19jcmVhdGU9eWVzIDs7CgogIC1uby1yZWN1cnNpb24g
fCAtLW5vLXJlY3Vyc2lvbiB8IC0tbm8tcmVjdXJzaW8gfCAtLW5vLXJlY3Vyc2kgXAogIHwgLS1u
by1yZWN1cnMgfCAtLW5vLXJlY3VyIHwgLS1uby1yZWN1IHwgLS1uby1yZWMgfCAtLW5vLXJlIHwg
LS1uby1yKQogICAgbm9fcmVjdXJzaW9uPXllcyA7OwoKICAtb2xkaW5jbHVkZWRpciB8IC0tb2xk
aW5jbHVkZWRpciB8IC0tb2xkaW5jbHVkZWRpIHwgLS1vbGRpbmNsdWRlZCBcCiAgfCAtLW9sZGlu
Y2x1ZGUgfCAtLW9sZGluY2x1ZCB8IC0tb2xkaW5jbHUgfCAtLW9sZGluY2wgfCAtLW9sZGluYyBc
CiAgfCAtLW9sZGluIHwgLS1vbGRpIHwgLS1vbGQgfCAtLW9sIHwgLS1vKQogICAgYWNfcHJldj1v
bGRpbmNsdWRlZGlyIDs7CiAgLW9sZGluY2x1ZGVkaXI9KiB8IC0tb2xkaW5jbHVkZWRpcj0qIHwg
LS1vbGRpbmNsdWRlZGk9KiB8IC0tb2xkaW5jbHVkZWQ9KiBcCiAgfCAtLW9sZGluY2x1ZGU9KiB8
IC0tb2xkaW5jbHVkPSogfCAtLW9sZGluY2x1PSogfCAtLW9sZGluY2w9KiB8IC0tb2xkaW5jPSog
XAogIHwgLS1vbGRpbj0qIHwgLS1vbGRpPSogfCAtLW9sZD0qIHwgLS1vbD0qIHwgLS1vPSopCiAg
ICBvbGRpbmNsdWRlZGlyPSRhY19vcHRhcmcgOzsKCiAgLXByZWZpeCB8IC0tcHJlZml4IHwgLS1w
cmVmaSB8IC0tcHJlZiB8IC0tcHJlIHwgLS1wciB8IC0tcCkKICAgIGFjX3ByZXY9cHJlZml4IDs7
CiAgLXByZWZpeD0qIHwgLS1wcmVmaXg9KiB8IC0tcHJlZmk9KiB8IC0tcHJlZj0qIHwgLS1wcmU9
KiB8IC0tcHI9KiB8IC0tcD0qKQogICAgcHJlZml4PSRhY19vcHRhcmcgOzsKCiAgLXByb2dyYW0t
cHJlZml4IHwgLS1wcm9ncmFtLXByZWZpeCB8IC0tcHJvZ3JhbS1wcmVmaSB8IC0tcHJvZ3JhbS1w
cmVmIFwKICB8IC0tcHJvZ3JhbS1wcmUgfCAtLXByb2dyYW0tcHIgfCAtLXByb2dyYW0tcCkKICAg
IGFjX3ByZXY9cHJvZ3JhbV9wcmVmaXggOzsKICAtcHJvZ3JhbS1wcmVmaXg9KiB8IC0tcHJvZ3Jh
bS1wcmVmaXg9KiB8IC0tcHJvZ3JhbS1wcmVmaT0qIFwKICB8IC0tcHJvZ3JhbS1wcmVmPSogfCAt
LXByb2dyYW0tcHJlPSogfCAtLXByb2dyYW0tcHI9KiB8IC0tcHJvZ3JhbS1wPSopCiAgICBwcm9n
cmFtX3ByZWZpeD0kYWNfb3B0YXJnIDs7CgogIC1wcm9ncmFtLXN1ZmZpeCB8IC0tcHJvZ3JhbS1z
dWZmaXggfCAtLXByb2dyYW0tc3VmZmkgfCAtLXByb2dyYW0tc3VmZiBcCiAgfCAtLXByb2dyYW0t
c3VmIHwgLS1wcm9ncmFtLXN1IHwgLS1wcm9ncmFtLXMpCiAgICBhY19wcmV2PXByb2dyYW1fc3Vm
Zml4IDs7CiAgLXByb2dyYW0tc3VmZml4PSogfCAtLXByb2dyYW0tc3VmZml4PSogfCAtLXByb2dy
YW0tc3VmZmk9KiBcCiAgfCAtLXByb2dyYW0tc3VmZj0qIHwgLS1wcm9ncmFtLXN1Zj0qIHwgLS1w
cm9ncmFtLXN1PSogfCAtLXByb2dyYW0tcz0qKQogICAgcHJvZ3JhbV9zdWZmaXg9JGFjX29wdGFy
ZyA7OwoKICAtcHJvZ3JhbS10cmFuc2Zvcm0tbmFtZSB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFt
ZSBcCiAgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbSB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmEg
XAogIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS0gXAogIHwg
LS1wcm9ncmFtLXRyYW5zZm9ybSB8IC0tcHJvZ3JhbS10cmFuc2ZvciBcCiAgfCAtLXByb2dyYW0t
dHJhbnNmbyB8IC0tcHJvZ3JhbS10cmFuc2YgXAogIHwgLS1wcm9ncmFtLXRyYW5zIHwgLS1wcm9n
cmFtLXRyYW4gXAogIHwgLS1wcm9nci10cmEgfCAtLXByb2dyYW0tdHIgfCAtLXByb2dyYW0tdCkK
ICAgIGFjX3ByZXY9cHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSA7OwogIC1wcm9ncmFtLXRyYW5zZm9y
bS1uYW1lPSogfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbWU9KiBcCiAgfCAtLXByb2dyYW0tdHJh
bnNmb3JtLW5hbT0qIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYT0qIFwKICB8IC0tcHJvZ3JhbS10
cmFuc2Zvcm0tbj0qIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS09KiBcCiAgfCAtLXByb2dyYW0tdHJh
bnNmb3JtPSogfCAtLXByb2dyYW0tdHJhbnNmb3I9KiBcCiAgfCAtLXByb2dyYW0tdHJhbnNmbz0q
IHwgLS1wcm9ncmFtLXRyYW5zZj0qIFwKICB8IC0tcHJvZ3JhbS10cmFucz0qIHwgLS1wcm9ncmFt
LXRyYW49KiBcCiAgfCAtLXByb2dyLXRyYT0qIHwgLS1wcm9ncmFtLXRyPSogfCAtLXByb2dyYW0t
dD0qKQogICAgcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT0kYWNfb3B0YXJnIDs7CgogIC1wZGZkaXIg
fCAtLXBkZmRpciB8IC0tcGRmZGkgfCAtLXBkZmQgfCAtLXBkZiB8IC0tcGQpCiAgICBhY19wcmV2
PXBkZmRpciA7OwogIC1wZGZkaXI9KiB8IC0tcGRmZGlyPSogfCAtLXBkZmRpPSogfCAtLXBkZmQ9
KiB8IC0tcGRmPSogfCAtLXBkPSopCiAgICBwZGZkaXI9JGFjX29wdGFyZyA7OwoKICAtcHNkaXIg
fCAtLXBzZGlyIHwgLS1wc2RpIHwgLS1wc2QgfCAtLXBzKQogICAgYWNfcHJldj1wc2RpciA7Owog
IC1wc2Rpcj0qIHwgLS1wc2Rpcj0qIHwgLS1wc2RpPSogfCAtLXBzZD0qIHwgLS1wcz0qKQogICAg
cHNkaXI9JGFjX29wdGFyZyA7OwoKICAtcSB8IC1xdWlldCB8IC0tcXVpZXQgfCAtLXF1aWUgfCAt
LXF1aSB8IC0tcXUgfCAtLXEgXAogIHwgLXNpbGVudCB8IC0tc2lsZW50IHwgLS1zaWxlbiB8IC0t
c2lsZSB8IC0tc2lsKQogICAgc2lsZW50PXllcyA7OwoKICAtc2JpbmRpciB8IC0tc2JpbmRpciB8
IC0tc2JpbmRpIHwgLS1zYmluZCB8IC0tc2JpbiB8IC0tc2JpIHwgLS1zYikKICAgIGFjX3ByZXY9
c2JpbmRpciA7OwogIC1zYmluZGlyPSogfCAtLXNiaW5kaXI9KiB8IC0tc2JpbmRpPSogfCAtLXNi
aW5kPSogfCAtLXNiaW49KiBcCiAgfCAtLXNiaT0qIHwgLS1zYj0qKQogICAgc2JpbmRpcj0kYWNf
b3B0YXJnIDs7CgogIC1zaGFyZWRzdGF0ZWRpciB8IC0tc2hhcmVkc3RhdGVkaXIgfCAtLXNoYXJl
ZHN0YXRlZGkgXAogIHwgLS1zaGFyZWRzdGF0ZWQgfCAtLXNoYXJlZHN0YXRlIHwgLS1zaGFyZWRz
dGF0IHwgLS1zaGFyZWRzdGEgXAogIHwgLS1zaGFyZWRzdCB8IC0tc2hhcmVkcyB8IC0tc2hhcmVk
IHwgLS1zaGFyZSB8IC0tc2hhciBcCiAgfCAtLXNoYSB8IC0tc2gpCiAgICBhY19wcmV2PXNoYXJl
ZHN0YXRlZGlyIDs7CiAgLXNoYXJlZHN0YXRlZGlyPSogfCAtLXNoYXJlZHN0YXRlZGlyPSogfCAt
LXNoYXJlZHN0YXRlZGk9KiBcCiAgfCAtLXNoYXJlZHN0YXRlZD0qIHwgLS1zaGFyZWRzdGF0ZT0q
IHwgLS1zaGFyZWRzdGF0PSogfCAtLXNoYXJlZHN0YT0qIFwKICB8IC0tc2hhcmVkc3Q9KiB8IC0t
c2hhcmVkcz0qIHwgLS1zaGFyZWQ9KiB8IC0tc2hhcmU9KiB8IC0tc2hhcj0qIFwKICB8IC0tc2hh
PSogfCAtLXNoPSopCiAgICBzaGFyZWRzdGF0ZWRpcj0kYWNfb3B0YXJnIDs7CgogIC1zaXRlIHwg
LS1zaXRlIHwgLS1zaXQpCiAgICBhY19wcmV2PXNpdGUgOzsKICAtc2l0ZT0qIHwgLS1zaXRlPSog
fCAtLXNpdD0qKQogICAgc2l0ZT0kYWNfb3B0YXJnIDs7CgogIC1zcmNkaXIgfCAtLXNyY2RpciB8
IC0tc3JjZGkgfCAtLXNyY2QgfCAtLXNyYyB8IC0tc3IpCiAgICBhY19wcmV2PXNyY2RpciA7Owog
IC1zcmNkaXI9KiB8IC0tc3JjZGlyPSogfCAtLXNyY2RpPSogfCAtLXNyY2Q9KiB8IC0tc3JjPSog
fCAtLXNyPSopCiAgICBzcmNkaXI9JGFjX29wdGFyZyA7OwoKICAtc3lzY29uZmRpciB8IC0tc3lz
Y29uZmRpciB8IC0tc3lzY29uZmRpIHwgLS1zeXNjb25mZCB8IC0tc3lzY29uZiBcCiAgfCAtLXN5
c2NvbiB8IC0tc3lzY28gfCAtLXN5c2MgfCAtLXN5cyB8IC0tc3kpCiAgICBhY19wcmV2PXN5c2Nv
bmZkaXIgOzsKICAtc3lzY29uZmRpcj0qIHwgLS1zeXNjb25mZGlyPSogfCAtLXN5c2NvbmZkaT0q
IHwgLS1zeXNjb25mZD0qIHwgLS1zeXNjb25mPSogXAogIHwgLS1zeXNjb249KiB8IC0tc3lzY289
KiB8IC0tc3lzYz0qIHwgLS1zeXM9KiB8IC0tc3k9KikKICAgIHN5c2NvbmZkaXI9JGFjX29wdGFy
ZyA7OwoKICAtdGFyZ2V0IHwgLS10YXJnZXQgfCAtLXRhcmdlIHwgLS10YXJnIHwgLS10YXIgfCAt
LXRhIHwgLS10KQogICAgYWNfcHJldj10YXJnZXRfYWxpYXMgOzsKICAtdGFyZ2V0PSogfCAtLXRh
cmdldD0qIHwgLS10YXJnZT0qIHwgLS10YXJnPSogfCAtLXRhcj0qIHwgLS10YT0qIHwgLS10PSop
CiAgICB0YXJnZXRfYWxpYXM9JGFjX29wdGFyZyA7OwoKICAtdiB8IC12ZXJib3NlIHwgLS12ZXJi
b3NlIHwgLS12ZXJib3MgfCAtLXZlcmJvIHwgLS12ZXJiKQogICAgdmVyYm9zZT15ZXMgOzsKCiAg
LXZlcnNpb24gfCAtLXZlcnNpb24gfCAtLXZlcnNpbyB8IC0tdmVyc2kgfCAtLXZlcnMgfCAtVikK
ICAgIGFjX2luaXRfdmVyc2lvbj06IDs7CgogIC13aXRoLSogfCAtLXdpdGgtKikKICAgIGFjX3Vz
ZXJvcHQ9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSp3aXRoLVwoW149XSpcKSdgCiAgICAjIFJl
amVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCiAgICBl
eHByICJ4JGFjX3VzZXJvcHQiIDogIi4qW14tKy5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAm
JgogICAgICBhc19mbl9lcnJvciAkPyAiaW52YWxpZCBwYWNrYWdlIG5hbWU6ICRhY191c2Vyb3B0
IgogICAgYWNfdXNlcm9wdF9vcmlnPSRhY191c2Vyb3B0CiAgICBhY191c2Vyb3B0PWAkYXNfZWNo
byAiJGFjX3VzZXJvcHQiIHwgc2VkICdzL1stKy5dL18vZydgCiAgICBjYXNlICRhY191c2VyX29w
dHMgaW4KICAgICAgKiIKIndpdGhfJGFjX3VzZXJvcHQiCiIqKSA7OwogICAgICAqKSBhY191bnJl
Y29nbml6ZWRfb3B0cz0iJGFjX3VucmVjb2duaXplZF9vcHRzJGFjX3VucmVjb2duaXplZF9zZXAt
LXdpdGgtJGFjX3VzZXJvcHRfb3JpZyIKCSBhY191bnJlY29nbml6ZWRfc2VwPScsICc7OwogICAg
ZXNhYwogICAgZXZhbCB3aXRoXyRhY191c2Vyb3B0PVwkYWNfb3B0YXJnIDs7CgogIC13aXRob3V0
LSogfCAtLXdpdGhvdXQtKikKICAgIGFjX3VzZXJvcHQ9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4
LSp3aXRob3V0LVwoLipcKSdgCiAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQg
c2hlbGwgdmFyaWFibGUgbmFtZXMuCiAgICBleHByICJ4JGFjX3VzZXJvcHQiIDogIi4qW14tKy5f
JGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgogICAgICBhc19mbl9lcnJvciAkPyAiaW52YWxp
ZCBwYWNrYWdlIG5hbWU6ICRhY191c2Vyb3B0IgogICAgYWNfdXNlcm9wdF9vcmlnPSRhY191c2Vy
b3B0CiAgICBhY191c2Vyb3B0PWAkYXNfZWNobyAiJGFjX3VzZXJvcHQiIHwgc2VkICdzL1stKy5d
L18vZydgCiAgICBjYXNlICRhY191c2VyX29wdHMgaW4KICAgICAgKiIKIndpdGhfJGFjX3VzZXJv
cHQiCiIqKSA7OwogICAgICAqKSBhY191bnJlY29nbml6ZWRfb3B0cz0iJGFjX3VucmVjb2duaXpl
ZF9vcHRzJGFjX3VucmVjb2duaXplZF9zZXAtLXdpdGhvdXQtJGFjX3VzZXJvcHRfb3JpZyIKCSBh
Y191bnJlY29nbml6ZWRfc2VwPScsICc7OwogICAgZXNhYwogICAgZXZhbCB3aXRoXyRhY191c2Vy
b3B0PW5vIDs7CgogIC0teCkKICAgICMgT2Jzb2xldGU7IHVzZSAtLXdpdGgteC4KICAgIHdpdGhf
eD15ZXMgOzsKCiAgLXgtaW5jbHVkZXMgfCAtLXgtaW5jbHVkZXMgfCAtLXgtaW5jbHVkZSB8IC0t
eC1pbmNsdWQgfCAtLXgtaW5jbHUgXAogIHwgLS14LWluY2wgfCAtLXgtaW5jIHwgLS14LWluIHwg
LS14LWkpCiAgICBhY19wcmV2PXhfaW5jbHVkZXMgOzsKICAteC1pbmNsdWRlcz0qIHwgLS14LWlu
Y2x1ZGVzPSogfCAtLXgtaW5jbHVkZT0qIHwgLS14LWluY2x1ZD0qIHwgLS14LWluY2x1PSogXAog
IHwgLS14LWluY2w9KiB8IC0teC1pbmM9KiB8IC0teC1pbj0qIHwgLS14LWk9KikKICAgIHhfaW5j
bHVkZXM9JGFjX29wdGFyZyA7OwoKICAteC1saWJyYXJpZXMgfCAtLXgtbGlicmFyaWVzIHwgLS14
LWxpYnJhcmllIHwgLS14LWxpYnJhcmkgXAogIHwgLS14LWxpYnJhciB8IC0teC1saWJyYSB8IC0t
eC1saWJyIHwgLS14LWxpYiB8IC0teC1saSB8IC0teC1sKQogICAgYWNfcHJldj14X2xpYnJhcmll
cyA7OwogIC14LWxpYnJhcmllcz0qIHwgLS14LWxpYnJhcmllcz0qIHwgLS14LWxpYnJhcmllPSog
fCAtLXgtbGlicmFyaT0qIFwKICB8IC0teC1saWJyYXI9KiB8IC0teC1saWJyYT0qIHwgLS14LWxp
YnI9KiB8IC0teC1saWI9KiB8IC0teC1saT0qIHwgLS14LWw9KikKICAgIHhfbGlicmFyaWVzPSRh
Y19vcHRhcmcgOzsKCiAgLSopIGFzX2ZuX2Vycm9yICQ/ICJ1bnJlY29nbml6ZWQgb3B0aW9uOiBc
YCRhY19vcHRpb24nClRyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24iCiAgICA7
OwoKICAqPSopCiAgICBhY19lbnZ2YXI9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4XChbXj1dKlwp
PSdgCiAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUg
bmFtZXMuCiAgICBjYXNlICRhY19lbnZ2YXIgaW4gIygKICAgICAgJycgfCBbMC05XSogfCAqWyFf
JGFzX2NyX2FsbnVtXSogKQogICAgICBhc19mbl9lcnJvciAkPyAiaW52YWxpZCB2YXJpYWJsZSBu
YW1lOiBcYCRhY19lbnZ2YXInIiA7OwogICAgZXNhYwogICAgZXZhbCAkYWNfZW52dmFyPVwkYWNf
b3B0YXJnCiAgICBleHBvcnQgJGFjX2VudnZhciA7OwoKICAqKQogICAgIyBGSVhNRTogc2hvdWxk
IGJlIHJlbW92ZWQgaW4gYXV0b2NvbmYgMy4wLgogICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklO
RzogeW91IHNob3VsZCB1c2UgLS1idWlsZCwgLS1ob3N0LCAtLXRhcmdldCIgPiYyCiAgICBleHBy
ICJ4JGFjX29wdGlvbiIgOiAiLipbXi0uXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKICAg
ICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogaW52YWxpZCBob3N0IHR5cGU6ICRhY19vcHRp
b24iID4mMgogICAgOiAiJHtidWlsZF9hbGlhcz0kYWNfb3B0aW9ufSAke2hvc3RfYWxpYXM9JGFj
X29wdGlvbn0gJHt0YXJnZXRfYWxpYXM9JGFjX29wdGlvbn0iCiAgICA7OwoKICBlc2FjCmRvbmUK
CmlmIHRlc3QgLW4gIiRhY19wcmV2IjsgdGhlbgogIGFjX29wdGlvbj0tLWBlY2hvICRhY19wcmV2
IHwgc2VkICdzL18vLS9nJ2AKICBhc19mbl9lcnJvciAkPyAibWlzc2luZyBhcmd1bWVudCB0byAk
YWNfb3B0aW9uIgpmaQoKaWYgdGVzdCAtbiAiJGFjX3VucmVjb2duaXplZF9vcHRzIjsgdGhlbgog
IGNhc2UgJGVuYWJsZV9vcHRpb25fY2hlY2tpbmcgaW4KICAgIG5vKSA7OwogICAgZmF0YWwpIGFz
X2ZuX2Vycm9yICQ/ICJ1bnJlY29nbml6ZWQgb3B0aW9uczogJGFjX3VucmVjb2duaXplZF9vcHRz
IiA7OwogICAgKikgICAgICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVucmVjb2duaXplZCBv
cHRpb25zOiAkYWNfdW5yZWNvZ25pemVkX29wdHMiID4mMiA7OwogIGVzYWMKZmkKCiMgQ2hlY2sg
YWxsIGRpcmVjdG9yeSBhcmd1bWVudHMgZm9yIGNvbnNpc3RlbmN5Lgpmb3IgYWNfdmFyIGluCWV4
ZWNfcHJlZml4IHByZWZpeCBiaW5kaXIgc2JpbmRpciBsaWJleGVjZGlyIGRhdGFyb290ZGlyIFwK
CQlkYXRhZGlyIHN5c2NvbmZkaXIgc2hhcmVkc3RhdGVkaXIgbG9jYWxzdGF0ZWRpciBpbmNsdWRl
ZGlyIFwKCQlvbGRpbmNsdWRlZGlyIGRvY2RpciBpbmZvZGlyIGh0bWxkaXIgZHZpZGlyIHBkZmRp
ciBwc2RpciBcCgkJbGliZGlyIGxvY2FsZWRpciBtYW5kaXIKZG8KICBldmFsIGFjX3ZhbD1cJCRh
Y192YXIKICAjIFJlbW92ZSB0cmFpbGluZyBzbGFzaGVzLgogIGNhc2UgJGFjX3ZhbCBpbgogICAg
Ki8gKQogICAgICBhY192YWw9YGV4cHIgIlgkYWNfdmFsIiA6ICdYXCguKlteL11cKScgXHwgIlgk
YWNfdmFsIiA6ICdYXCguKlwpJ2AKICAgICAgZXZhbCAkYWNfdmFyPVwkYWNfdmFsOzsKICBlc2Fj
CiAgIyBCZSBzdXJlIHRvIGhhdmUgYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWVzLgogIGNhc2UgJGFj
X3ZhbCBpbgogICAgW1xcLyRdKiB8ID86W1xcL10qICkgIGNvbnRpbnVlOzsKICAgIE5PTkUgfCAn
JyApIGNhc2UgJGFjX3ZhciBpbiAqcHJlZml4ICkgY29udGludWU7OyBlc2FjOzsKICBlc2FjCiAg
YXNfZm5fZXJyb3IgJD8gImV4cGVjdGVkIGFuIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIGZvciAt
LSRhY192YXI6ICRhY192YWwiCmRvbmUKCiMgVGhlcmUgbWlnaHQgYmUgcGVvcGxlIHdobyBkZXBl
bmQgb24gdGhlIG9sZCBicm9rZW4gYmVoYXZpb3I6IGAkaG9zdCcKIyB1c2VkIHRvIGhvbGQgdGhl
IGFyZ3VtZW50IG9mIC0taG9zdCBldGMuCiMgRklYTUU6IFRvIHJlbW92ZSBzb21lIGRheS4KYnVp
bGQ9JGJ1aWxkX2FsaWFzCmhvc3Q9JGhvc3RfYWxpYXMKdGFyZ2V0PSR0YXJnZXRfYWxpYXMKCiMg
RklYTUU6IFRvIHJlbW92ZSBzb21lIGRheS4KaWYgdGVzdCAieCRob3N0X2FsaWFzIiAhPSB4OyB0
aGVuCiAgaWYgdGVzdCAieCRidWlsZF9hbGlhcyIgPSB4OyB0aGVuCiAgICBjcm9zc19jb21waWxp
bmc9bWF5YmUKICBlbGlmIHRlc3QgIngkYnVpbGRfYWxpYXMiICE9ICJ4JGhvc3RfYWxpYXMiOyB0
aGVuCiAgICBjcm9zc19jb21waWxpbmc9eWVzCiAgZmkKZmkKCmFjX3Rvb2xfcHJlZml4PQp0ZXN0
IC1uICIkaG9zdF9hbGlhcyIgJiYgYWNfdG9vbF9wcmVmaXg9JGhvc3RfYWxpYXMtCgp0ZXN0ICIk
c2lsZW50IiA9IHllcyAmJiBleGVjIDY+L2Rldi9udWxsCgoKYWNfcHdkPWBwd2RgICYmIHRlc3Qg
LW4gIiRhY19wd2QiICYmCmFjX2xzX2RpPWBscyAtZGkgLmAgJiYKYWNfcHdkX2xzX2RpPWBjZCAi
JGFjX3B3ZCIgJiYgbHMgLWRpIC5gIHx8CiAgYXNfZm5fZXJyb3IgJD8gIndvcmtpbmcgZGlyZWN0
b3J5IGNhbm5vdCBiZSBkZXRlcm1pbmVkIgp0ZXN0ICJYJGFjX2xzX2RpIiA9ICJYJGFjX3B3ZF9s
c19kaSIgfHwKICBhc19mbl9lcnJvciAkPyAicHdkIGRvZXMgbm90IHJlcG9ydCBuYW1lIG9mIHdv
cmtpbmcgZGlyZWN0b3J5IgoKCiMgRmluZCB0aGUgc291cmNlIGZpbGVzLCBpZiBsb2NhdGlvbiB3
YXMgbm90IHNwZWNpZmllZC4KaWYgdGVzdCAteiAiJHNyY2RpciI7IHRoZW4KICBhY19zcmNkaXJf
ZGVmYXVsdGVkPXllcwogICMgVHJ5IHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGlzIHNjcmlw
dCwgdGhlbiB0aGUgcGFyZW50IGRpcmVjdG9yeS4KICBhY19jb25mZGlyPWAkYXNfZGlybmFtZSAt
LSAiJGFzX215c2VsZiIgfHwKJGFzX2V4cHIgWCIkYXNfbXlzZWxmIiA6ICdYXCguKlteL11cKS8v
KlteL11bXi9dKi8qJCcgXHwgXAoJIFgiJGFzX215c2VsZiIgOiAnWFwoLy9cKVteL10nIFx8IFwK
CSBYIiRhc19teXNlbGYiIDogJ1hcKC8vXCkkJyBcfCBcCgkgWCIkYXNfbXlzZWxmIiA6ICdYXCgv
XCknIFx8IC4gMj4vZGV2L251bGwgfHwKJGFzX2VjaG8gWCIkYXNfbXlzZWxmIiB8CiAgICBzZWQg
Jy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQvewoJICAgIHMvL1wxLwoJICAgIHEKCSAg
fQoJICAvXlhcKFwvXC9cKVteL10uKi97CgkgICAgcy8vXDEvCgkgICAgcQoJICB9CgkgIC9eWFwo
XC9cL1wpJC97CgkgICAgcy8vXDEvCgkgICAgcQoJICB9CgkgIC9eWFwoXC9cKS4qL3sKCSAgICBz
Ly9cMS8KCSAgICBxCgkgIH0KCSAgcy8uKi8uLzsgcSdgCiAgc3JjZGlyPSRhY19jb25mZGlyCiAg
aWYgdGVzdCAhIC1yICIkc3JjZGlyLyRhY191bmlxdWVfZmlsZSI7IHRoZW4KICAgIHNyY2Rpcj0u
LgogIGZpCmVsc2UKICBhY19zcmNkaXJfZGVmYXVsdGVkPW5vCmZpCmlmIHRlc3QgISAtciAiJHNy
Y2Rpci8kYWNfdW5pcXVlX2ZpbGUiOyB0aGVuCiAgdGVzdCAiJGFjX3NyY2Rpcl9kZWZhdWx0ZWQi
ID0geWVzICYmIHNyY2Rpcj0iJGFjX2NvbmZkaXIgb3IgLi4iCiAgYXNfZm5fZXJyb3IgJD8gImNh
bm5vdCBmaW5kIHNvdXJjZXMgKCRhY191bmlxdWVfZmlsZSkgaW4gJHNyY2RpciIKZmkKYWNfbXNn
PSJzb3VyY2VzIGFyZSBpbiAkc3JjZGlyLCBidXQgXGBjZCAkc3JjZGlyJyBkb2VzIG5vdCB3b3Jr
IgphY19hYnNfY29uZmRpcj1gKAoJY2QgIiRzcmNkaXIiICYmIHRlc3QgLXIgIi4vJGFjX3VuaXF1
ZV9maWxlIiB8fCBhc19mbl9lcnJvciAkPyAiJGFjX21zZyIKCXB3ZClgCiMgV2hlbiBidWlsZGlu
ZyBpbiBwbGFjZSwgc2V0IHNyY2Rpcj0uCmlmIHRlc3QgIiRhY19hYnNfY29uZmRpciIgPSAiJGFj
X3B3ZCI7IHRoZW4KICBzcmNkaXI9LgpmaQojIFJlbW92ZSB1bm5lY2Vzc2FyeSB0cmFpbGluZyBz
bGFzaGVzIGZyb20gc3JjZGlyLgojIERvdWJsZSBzbGFzaGVzIGluIGZpbGUgbmFtZXMgaW4gb2Jq
ZWN0IGZpbGUgZGVidWdnaW5nIGluZm8KIyBtZXNzIHVwIE0teCBnZGIgaW4gRW1hY3MuCmNhc2Ug
JHNyY2RpciBpbgoqLykgc3JjZGlyPWBleHByICJYJHNyY2RpciIgOiAnWFwoLipbXi9dXCknIFx8
ICJYJHNyY2RpciIgOiAnWFwoLipcKSdgOzsKZXNhYwpmb3IgYWNfdmFyIGluICRhY19wcmVjaW91
c192YXJzOyBkbwogIGV2YWwgYWNfZW52XyR7YWNfdmFyfV9zZXQ9XCR7JHthY192YXJ9K3NldH0K
ICBldmFsIGFjX2Vudl8ke2FjX3Zhcn1fdmFsdWU9XCQke2FjX3Zhcn0KICBldmFsIGFjX2N2X2Vu
dl8ke2FjX3Zhcn1fc2V0PVwkeyR7YWNfdmFyfStzZXR9CiAgZXZhbCBhY19jdl9lbnZfJHthY192
YXJ9X3ZhbHVlPVwkJHthY192YXJ9CmRvbmUKCiMKIyBSZXBvcnQgdGhlIC0taGVscCBtZXNzYWdl
LgojCmlmIHRlc3QgIiRhY19pbml0X2hlbHAiID0gImxvbmciOyB0aGVuCiAgIyBPbWl0IHNvbWUg
aW50ZXJuYWwgb3Igb2Jzb2xldGUgb3B0aW9ucyB0byBtYWtlIHRoZSBsaXN0IGxlc3MgaW1wb3Np
bmcuCiAgIyBUaGlzIG1lc3NhZ2UgaXMgdG9vIGxvbmcgdG8gYmUgYSBzdHJpbmcgaW4gdGhlIEEv
VVggMy4xIHNoLgogIGNhdCA8PF9BQ0VPRgpcYGNvbmZpZ3VyZScgY29uZmlndXJlcyBHTlUgUkNT
IDUuOC4yIHRvIGFkYXB0IHRvIG1hbnkga2luZHMgb2Ygc3lzdGVtcy4KClVzYWdlOiAkMCBbT1BU
SU9OXS4uLiBbVkFSPVZBTFVFXS4uLgoKVG8gYXNzaWduIGVudmlyb25tZW50IHZhcmlhYmxlcyAo
ZS5nLiwgQ0MsIENGTEFHUy4uLiksIHNwZWNpZnkgdGhlbSBhcwpWQVI9VkFMVUUuICBTZWUgYmVs
b3cgZm9yIGRlc2NyaXB0aW9ucyBvZiBzb21lIG9mIHRoZSB1c2VmdWwgdmFyaWFibGVzLgoKRGVm
YXVsdHMgZm9yIHRoZSBvcHRpb25zIGFyZSBzcGVjaWZpZWQgaW4gYnJhY2tldHMuCgpDb25maWd1
cmF0aW9uOgogIC1oLCAtLWhlbHAgICAgICAgICAgICAgIGRpc3BsYXkgdGhpcyBoZWxwIGFuZCBl
eGl0CiAgICAgIC0taGVscD1zaG9ydCAgICAgICAgZGlzcGxheSBvcHRpb25zIHNwZWNpZmljIHRv
IHRoaXMgcGFja2FnZQogICAgICAtLWhlbHA9cmVjdXJzaXZlICAgIGRpc3BsYXkgdGhlIHNob3J0
IGhlbHAgb2YgYWxsIHRoZSBpbmNsdWRlZCBwYWNrYWdlcwogIC1WLCAtLXZlcnNpb24gICAgICAg
ICAgIGRpc3BsYXkgdmVyc2lvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdAogIC1xLCAtLXF1aWV0LCAt
LXNpbGVudCAgIGRvIG5vdCBwcmludCBcYGNoZWNraW5nIC4uLicgbWVzc2FnZXMKICAgICAgLS1j
YWNoZS1maWxlPUZJTEUgICBjYWNoZSB0ZXN0IHJlc3VsdHMgaW4gRklMRSBbZGlzYWJsZWRdCiAg
LUMsIC0tY29uZmlnLWNhY2hlICAgICAgYWxpYXMgZm9yIFxgLS1jYWNoZS1maWxlPWNvbmZpZy5j
YWNoZScKICAtbiwgLS1uby1jcmVhdGUgICAgICAgICBkbyBub3QgY3JlYXRlIG91dHB1dCBmaWxl
cwogICAgICAtLXNyY2Rpcj1ESVIgICAgICAgIGZpbmQgdGhlIHNvdXJjZXMgaW4gRElSIFtjb25m
aWd1cmUgZGlyIG9yIFxgLi4nXQoKSW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVzOgogIC0tcHJlZml4
PVBSRUZJWCAgICAgICAgIGluc3RhbGwgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGZpbGVzIGlu
IFBSRUZJWAogICAgICAgICAgICAgICAgICAgICAgICAgIFskYWNfZGVmYXVsdF9wcmVmaXhdCiAg
LS1leGVjLXByZWZpeD1FUFJFRklYICAgaW5zdGFsbCBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IGZp
bGVzIGluIEVQUkVGSVgKICAgICAgICAgICAgICAgICAgICAgICAgICBbUFJFRklYXQoKQnkgZGVm
YXVsdCwgXGBtYWtlIGluc3RhbGwnIHdpbGwgaW5zdGFsbCBhbGwgdGhlIGZpbGVzIGluClxgJGFj
X2RlZmF1bHRfcHJlZml4L2JpbicsIFxgJGFjX2RlZmF1bHRfcHJlZml4L2xpYicgZXRjLiAgWW91
IGNhbiBzcGVjaWZ5CmFuIGluc3RhbGxhdGlvbiBwcmVmaXggb3RoZXIgdGhhbiBcYCRhY19kZWZh
dWx0X3ByZWZpeCcgdXNpbmcgXGAtLXByZWZpeCcsCmZvciBpbnN0YW5jZSBcYC0tcHJlZml4PVwk
SE9NRScuCgpGb3IgYmV0dGVyIGNvbnRyb2wsIHVzZSB0aGUgb3B0aW9ucyBiZWxvdy4KCkZpbmUg
dHVuaW5nIG9mIHRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3JpZXM6CiAgLS1iaW5kaXI9RElSICAg
ICAgICAgICAgdXNlciBleGVjdXRhYmxlcyBbRVBSRUZJWC9iaW5dCiAgLS1zYmluZGlyPURJUiAg
ICAgICAgICAgc3lzdGVtIGFkbWluIGV4ZWN1dGFibGVzIFtFUFJFRklYL3NiaW5dCiAgLS1saWJl
eGVjZGlyPURJUiAgICAgICAgcHJvZ3JhbSBleGVjdXRhYmxlcyBbRVBSRUZJWC9saWJleGVjXQog
IC0tc3lzY29uZmRpcj1ESVIgICAgICAgIHJlYWQtb25seSBzaW5nbGUtbWFjaGluZSBkYXRhIFtQ
UkVGSVgvZXRjXQogIC0tc2hhcmVkc3RhdGVkaXI9RElSICAgIG1vZGlmaWFibGUgYXJjaGl0ZWN0
dXJlLWluZGVwZW5kZW50IGRhdGEgW1BSRUZJWC9jb21dCiAgLS1sb2NhbHN0YXRlZGlyPURJUiAg
ICAgbW9kaWZpYWJsZSBzaW5nbGUtbWFjaGluZSBkYXRhIFtQUkVGSVgvdmFyXQogIC0tbGliZGly
PURJUiAgICAgICAgICAgIG9iamVjdCBjb2RlIGxpYnJhcmllcyBbRVBSRUZJWC9saWJdCiAgLS1p
bmNsdWRlZGlyPURJUiAgICAgICAgQyBoZWFkZXIgZmlsZXMgW1BSRUZJWC9pbmNsdWRlXQogIC0t
b2xkaW5jbHVkZWRpcj1ESVIgICAgIEMgaGVhZGVyIGZpbGVzIGZvciBub24tZ2NjIFsvdXNyL2lu
Y2x1ZGVdCiAgLS1kYXRhcm9vdGRpcj1ESVIgICAgICAgcmVhZC1vbmx5IGFyY2guLWluZGVwZW5k
ZW50IGRhdGEgcm9vdCBbUFJFRklYL3NoYXJlXQogIC0tZGF0YWRpcj1ESVIgICAgICAgICAgIHJl
YWQtb25seSBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZGF0YSBbREFUQVJPT1RESVJdCiAgLS1p
bmZvZGlyPURJUiAgICAgICAgICAgaW5mbyBkb2N1bWVudGF0aW9uIFtEQVRBUk9PVERJUi9pbmZv
XQogIC0tbG9jYWxlZGlyPURJUiAgICAgICAgIGxvY2FsZS1kZXBlbmRlbnQgZGF0YSBbREFUQVJP
T1RESVIvbG9jYWxlXQogIC0tbWFuZGlyPURJUiAgICAgICAgICAgIG1hbiBkb2N1bWVudGF0aW9u
IFtEQVRBUk9PVERJUi9tYW5dCiAgLS1kb2NkaXI9RElSICAgICAgICAgICAgZG9jdW1lbnRhdGlv
biByb290IFtEQVRBUk9PVERJUi9kb2MvcmNzXQogIC0taHRtbGRpcj1ESVIgICAgICAgICAgIGh0
bWwgZG9jdW1lbnRhdGlvbiBbRE9DRElSXQogIC0tZHZpZGlyPURJUiAgICAgICAgICAgIGR2aSBk
b2N1bWVudGF0aW9uIFtET0NESVJdCiAgLS1wZGZkaXI9RElSICAgICAgICAgICAgcGRmIGRvY3Vt
ZW50YXRpb24gW0RPQ0RJUl0KICAtLXBzZGlyPURJUiAgICAgICAgICAgICBwcyBkb2N1bWVudGF0
aW9uIFtET0NESVJdCl9BQ0VPRgoKICBjYXQgPDxcX0FDRU9GCgpQcm9ncmFtIG5hbWVzOgogIC0t
cHJvZ3JhbS1wcmVmaXg9UFJFRklYICAgICAgICAgICAgcHJlcGVuZCBQUkVGSVggdG8gaW5zdGFs
bGVkIHByb2dyYW0gbmFtZXMKICAtLXByb2dyYW0tc3VmZml4PVNVRkZJWCAgICAgICAgICAgIGFw
cGVuZCBTVUZGSVggdG8gaW5zdGFsbGVkIHByb2dyYW0gbmFtZXMKICAtLXByb2dyYW0tdHJhbnNm
b3JtLW5hbWU9UFJPR1JBTSAgIHJ1biBzZWQgUFJPR1JBTSBvbiBpbnN0YWxsZWQgcHJvZ3JhbSBu
YW1lcwoKU3lzdGVtIHR5cGVzOgogIC0tYnVpbGQ9QlVJTEQgICAgIGNvbmZpZ3VyZSBmb3IgYnVp
bGRpbmcgb24gQlVJTEQgW2d1ZXNzZWRdCiAgLS1ob3N0PUhPU1QgICAgICAgY3Jvc3MtY29tcGls
ZSB0byBidWlsZCBwcm9ncmFtcyB0byBydW4gb24gSE9TVCBbQlVJTERdCl9BQ0VPRgpmaQoKaWYg
dGVzdCAtbiAiJGFjX2luaXRfaGVscCI7IHRoZW4KICBjYXNlICRhY19pbml0X2hlbHAgaW4KICAg
ICBzaG9ydCB8IHJlY3Vyc2l2ZSApIGVjaG8gIkNvbmZpZ3VyYXRpb24gb2YgR05VIFJDUyA1Ljgu
MjoiOzsKICAgZXNhYwogIGNhdCA8PFxfQUNFT0YKCk9wdGlvbmFsIEZlYXR1cmVzOgogIC0tZGlz
YWJsZS1vcHRpb24tY2hlY2tpbmcgIGlnbm9yZSB1bnJlY29nbml6ZWQgLS1lbmFibGUvLS13aXRo
IG9wdGlvbnMKICAtLWRpc2FibGUtRkVBVFVSRSAgICAgICBkbyBub3QgaW5jbHVkZSBGRUFUVVJF
IChzYW1lIGFzIC0tZW5hYmxlLUZFQVRVUkU9bm8pCiAgLS1lbmFibGUtRkVBVFVSRVs9QVJHXSAg
aW5jbHVkZSBGRUFUVVJFIFtBUkc9eWVzXQogIC0tZW5hYmxlLXNpbGVudC1ydWxlcyAgIGxlc3Mg
dmVyYm9zZSBidWlsZCBvdXRwdXQgKHVuZG86ICJtYWtlIFY9MSIpCiAgLS1kaXNhYmxlLXNpbGVu
dC1ydWxlcyAgdmVyYm9zZSBidWlsZCBvdXRwdXQgKHVuZG86ICJtYWtlIFY9MCIpCiAgLS1lbmFi
bGUtY292ZXJhZ2UgICAgICAgaWYgdGhlIGNvbXBpbGVyIGlzIEdDQywgYXJyYW5nZSB0byBpbmNs
dWRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgLS1jb3ZlcmFnZSBpbiBDRkxBR1MgYW5kIHRv
IHVzZSBleGl0KDMpIGluc3RlYWQgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICBfRXhpdCgz
KTsgdGhpcyBvcHRpb24gaXMgaW50ZW5kZWQgZm9yIG1haW50YWluZXJzCiAgLS1lbmFibGUtY29t
cGF0MiAgICAgICAgZW5hYmxlIHJlYWRpbmcgb2YgUkNTIDIueCBmaWxlcyAocmVhbGx5IGFuY2ll
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3IgdG8gR05VIFJDUykuIElmIHlvdSBl
bmFibGUgdGhpcywgY29uc2lkZXIKICAgICAgICAgICAgICAgICAgICAgICAgICBoaXJpbmcgdHRu
IHRvIG1pZ3JhdGUgeW91ciBmaWxlcyB0byBhIGZvcm1hdCBtb3JlCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3VpdGVkIHRvIHRoaXMgbWlsbGVuaXVtISAoVGhlIGZpbGUgZm9ybWF0IG91dHB1
dCBieQogICAgICAgICAgICAgICAgICAgICAgICAgIFJDUyAyLnggYmVjYW1lIG9ic29sZXRlIGlu
IDE5ODIuKQogIC0tZGlzYWJsZS1tbWFwICAgICAgICAgIGRvbid0IHVzZSBtbWFwKDIpLCBldmVy
IChkZWZhdWx0OiB1c2UgbW1hcCgyKSBpZiBpdAogICAgICAgICAgICAgICAgICAgICAgICAgIHNl
ZW1zIHNhbmUgZW5vdWdoKQogIC0tZW5hYmxlLXN1aWRbPXNldHJldWlkXQogICAgICAgICAgICAg
ICAgICAgICAgICAgIGVuYWJsZSBzZXR1aWQgb3BlcmF0aW9uLCBwcmVmZXJyaW5nIHNldHJldWlk
KDIpIGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlIG92ZXIgc2V0ZXVpZCgy
KSBpZiBvcHRpb25hbCBhcmcgYHNldHJldWlkJwogICAgICAgICAgICAgICAgICAgICAgICAgIGlz
IHNwZWNpZmllZCAoZGVmYXVsdDogZW5hYmxlIHNldHVpZCBvcGVyYXRpb24gdXNpbmcKICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRldWlkKDIpKQogIC0tZW5hYmxlLWRlcGVuZGVuY3ktdHJh
Y2tpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBub3QgcmVqZWN0IHNsb3cgZGVwZW5k
ZW5jeSBleHRyYWN0b3JzCiAgLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcKICAgICAgICAg
ICAgICAgICAgICAgICAgICBzcGVlZHMgdXAgb25lLXRpbWUgYnVpbGQKICAtLWRpc2FibGUtbGFy
Z2VmaWxlICAgICBvbWl0IHN1cHBvcnQgZm9yIGxhcmdlIGZpbGVzCiAgLS1lbmFibGUtdGhyZWFk
cz17cG9zaXh8c29sYXJpc3xwdGh8d2luZG93c30KICAgICAgICAgICAgICAgICAgICAgICAgICBz
cGVjaWZ5IG11bHRpdGhyZWFkaW5nIEFQSQogIC0tZGlzYWJsZS10aHJlYWRzICAgICAgIGJ1aWxk
IHdpdGhvdXQgbXVsdGl0aHJlYWQgc2FmZXR5CiAgLS1kaXNhYmxlLXJwYXRoICAgICAgICAgZG8g
bm90IGhhcmRjb2RlIHJ1bnRpbWUgbGlicmFyeSBwYXRocwoKT3B0aW9uYWwgUGFja2FnZXM6CiAg
LS13aXRoLVBBQ0tBR0VbPUFSR10gICAgdXNlIFBBQ0tBR0UgW0FSRz15ZXNdCiAgLS13aXRob3V0
LVBBQ0tBR0UgICAgICAgZG8gbm90IHVzZSBQQUNLQUdFIChzYW1lIGFzIC0td2l0aC1QQUNLQUdF
PW5vKQogIC0td2l0aC1tYWlsZXI9UFJPRyAgICAgIHVzZSBQUk9HIHRvIHNlbmQgbWFpbCB3aGVu
IGEgbG9jayBpcyBicm9rZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdDogZG9u
J3Qgc2VuZCBtYWlsKQogIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21w
aWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KICAtLXdpdGgtbGlicHRoLXByZWZpeFs9RElS
XSAgc2VhcmNoIGZvciBsaWJwdGggaW4gRElSL2luY2x1ZGUgYW5kIERJUi9saWIKICAtLXdpdGhv
dXQtbGlicHRoLXByZWZpeCAgICAgZG9uJ3Qgc2VhcmNoIGZvciBsaWJwdGggaW4gaW5jbHVkZWRp
ciBhbmQgbGliZGlyCgpTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKICBE
SUZGICAgICAgICB0aGUgbmFtZSBvZiBhIHByb2dyYW0gdGhhdCB3b3JrcyBsaWtlIGRpZmYoMSkg
ZnJvbSBHTlUKICAgICAgICAgICAgICBkaWZmdXRpbHMsIHVzZWQgdG8gY29tcGFyZSBmaWxlcyBs
aW5lIGJ5IGxpbmUgKGRlZmF1bHQgaXMgdG8KICAgICAgICAgICAgICBzZWFyY2ggdGhlIFBBVEgg
Zm9yOiBnZGlmZiByZGlmZiBkaWZmKQogIERJRkYzICAgICAgIHRoZSBuYW1lIG9mIGEgcHJvZ3Jh
bSB0aGF0IHdvcmtzIGxpa2UgZGlmZjMoMSkgZnJvbSBHTlUKICAgICAgICAgICAgICBkaWZmdXRp
bHMsIHVzZWQgdG8gY29tcGFyZSB0aHJlZSBmaWxlcyBsaW5lIGJ5IGxpbmUgKGRlZmF1bHQgaXMK
ICAgICAgICAgICAgICB0byBzZWFyY2ggdGhlIFBBVEggZm9yOiBnZGlmZjMgZGlmZjMpCiAgU09F
TElNICAgICAgdGhlIG5hbWUgb2YgdGhlIHNvZWxpbSgxKSBwcm9ncmFtLCB0eXBpY2FsbHkgZnJv
bSBncm9mZiwgdXNlZCB0bwogICAgICAgICAgICAgIHByb2Nlc3MgLnNvIGRpcmVjdGl2ZXMgaW4g
bWFucGFnZSBzb3VyY2U7IHVzZWZ1bCBvbmx5IGlmIHlvdQogICAgICAgICAgICAgIGVkaXQgbWFu
LyouWzE1XWluIG9yIG1ha2UgYG1haW50YWluZXItY2xlYW4nCiAgUElDICAgICAgICAgdGhlIHBp
YygxKSBjb21tYW5kOyBpZiB1bnNwZWNpZmllZCwgY29uZmlndXJlIHRyaWVzIChHTlUgZ3JvZmYp
CiAgICAgICAgICAgICAgInBpYyAtbiIsIHdoaWNoIGF2b2lkcyBHTlUgZXh0ZW5zaW9ucyAobmVl
ZGVkIGZvciBwcm9wZXIKICAgICAgICAgICAgICBvcGVyYXRpb24gdG8gZ2VuZXJhdGUgYSBwb3J0
YWJsZSBtYW4gcGFnZSk7IG90aGVyd2lzZSwgdGhlc2UgYXJlCiAgICAgICAgICAgICAgdHJpZWQg
aW4gb3JkZXI6ICJncGljIC1uIiwgInBpYyAtRCIgKHRyYWRpdGlvbmFsKSwgInBpYyIKICBDQyAg
ICAgICAgICBDIGNvbXBpbGVyIGNvbW1hbmQKICBDRkxBR1MgICAgICBDIGNvbXBpbGVyIGZsYWdz
CiAgTERGTEFHUyAgICAgbGlua2VyIGZsYWdzLCBlLmcuIC1MPGxpYiBkaXI+IGlmIHlvdSBoYXZl
IGxpYnJhcmllcyBpbiBhCiAgICAgICAgICAgICAgbm9uc3RhbmRhcmQgZGlyZWN0b3J5IDxsaWIg
ZGlyPgogIExJQlMgICAgICAgIGxpYnJhcmllcyB0byBwYXNzIHRvIHRoZSBsaW5rZXIsIGUuZy4g
LWw8bGlicmFyeT4KICBDUFBGTEFHUyAgICAoT2JqZWN0aXZlKSBDL0MrKyBwcmVwcm9jZXNzb3Ig
ZmxhZ3MsIGUuZy4gLUk8aW5jbHVkZSBkaXI+IGlmCiAgICAgICAgICAgICAgeW91IGhhdmUgaGVh
ZGVycyBpbiBhIG5vbnN0YW5kYXJkIGRpcmVjdG9yeSA8aW5jbHVkZSBkaXI+CiAgQ1BQICAgICAg
ICAgQyBwcmVwcm9jZXNzb3IKClVzZSB0aGVzZSB2YXJpYWJsZXMgdG8gb3ZlcnJpZGUgdGhlIGNo
b2ljZXMgbWFkZSBieSBgY29uZmlndXJlJyBvciB0byBoZWxwCml0IHRvIGZpbmQgbGlicmFyaWVz
IGFuZCBwcm9ncmFtcyB3aXRoIG5vbnN0YW5kYXJkIG5hbWVzL2xvY2F0aW9ucy4KClJlcG9ydCBi
dWdzIHRvIDxidWctcmNzQGdudS5vcmc+LgpHTlUgUkNTIGhvbWUgcGFnZTogPGh0dHA6Ly93d3cu
Z251Lm9yZy9zb2Z0d2FyZS9yY3MvPi4KR2VuZXJhbCBoZWxwIHVzaW5nIEdOVSBzb2Z0d2FyZTog
PGh0dHA6Ly93d3cuZ251Lm9yZy9nZXRoZWxwLz4uCl9BQ0VPRgphY19zdGF0dXM9JD8KZmkKCmlm
IHRlc3QgIiRhY19pbml0X2hlbHAiID0gInJlY3Vyc2l2ZSI7IHRoZW4KICAjIElmIHRoZXJlIGFy
ZSBzdWJkaXJzLCByZXBvcnQgdGhlaXIgc3BlY2lmaWMgLS1oZWxwLgogIGZvciBhY19kaXIgaW4g
OiAkYWNfc3ViZGlyc19hbGw7IGRvIHRlc3QgIngkYWNfZGlyIiA9IHg6ICYmIGNvbnRpbnVlCiAg
ICB0ZXN0IC1kICIkYWNfZGlyIiB8fAogICAgICB7IGNkICIkc3JjZGlyIiAmJiBhY19wd2Q9YHB3
ZGAgJiYgc3JjZGlyPS4gJiYgdGVzdCAtZCAiJGFjX2RpciI7IH0gfHwKICAgICAgY29udGludWUK
ICAgIGFjX2J1aWxkZGlyPS4KCmNhc2UgIiRhY19kaXIiIGluCi4pIGFjX2Rpcl9zdWZmaXg9IGFj
X3RvcF9idWlsZGRpcl9zdWI9LiBhY190b3BfYnVpbGRfcHJlZml4PSA7OwoqKQogIGFjX2Rpcl9z
dWZmaXg9L2AkYXNfZWNobyAiJGFjX2RpciIgfCBzZWQgJ3N8XlwuW1xcL118fCdgCiAgIyBBICIu
LiIgZm9yIGVhY2ggZGlyZWN0b3J5IGluICRhY19kaXJfc3VmZml4LgogIGFjX3RvcF9idWlsZGRp
cl9zdWI9YCRhc19lY2hvICIkYWNfZGlyX3N1ZmZpeCIgfCBzZWQgJ3N8L1teXFwvXSp8Ly4ufGc7
c3wvfHwnYAogIGNhc2UgJGFjX3RvcF9idWlsZGRpcl9zdWIgaW4KICAiIikgYWNfdG9wX2J1aWxk
ZGlyX3N1Yj0uIGFjX3RvcF9idWlsZF9wcmVmaXg9IDs7CiAgKikgIGFjX3RvcF9idWlsZF9wcmVm
aXg9JGFjX3RvcF9idWlsZGRpcl9zdWIvIDs7CiAgZXNhYyA7Owplc2FjCmFjX2Fic190b3BfYnVp
bGRkaXI9JGFjX3B3ZAphY19hYnNfYnVpbGRkaXI9JGFjX3B3ZCRhY19kaXJfc3VmZml4CiMgZm9y
IGJhY2t3YXJkIGNvbXBhdGliaWxpdHk6CmFjX3RvcF9idWlsZGRpcj0kYWNfdG9wX2J1aWxkX3By
ZWZpeAoKY2FzZSAkc3JjZGlyIGluCiAgLikgICMgV2UgYXJlIGJ1aWxkaW5nIGluIHBsYWNlLgog
ICAgYWNfc3JjZGlyPS4KICAgIGFjX3RvcF9zcmNkaXI9JGFjX3RvcF9idWlsZGRpcl9zdWIKICAg
IGFjX2Fic190b3Bfc3JjZGlyPSRhY19wd2QgOzsKICBbXFwvXSogfCA/OltcXC9dKiApICAjIEFi
c29sdXRlIG5hbWUuCiAgICBhY19zcmNkaXI9JHNyY2RpciRhY19kaXJfc3VmZml4OwogICAgYWNf
dG9wX3NyY2Rpcj0kc3JjZGlyCiAgICBhY19hYnNfdG9wX3NyY2Rpcj0kc3JjZGlyIDs7CiAgKikg
IyBSZWxhdGl2ZSBuYW1lLgogICAgYWNfc3JjZGlyPSRhY190b3BfYnVpbGRfcHJlZml4JHNyY2Rp
ciRhY19kaXJfc3VmZml4CiAgICBhY190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRfcHJlZml4JHNy
Y2RpcgogICAgYWNfYWJzX3RvcF9zcmNkaXI9JGFjX3B3ZC8kc3JjZGlyIDs7CmVzYWMKYWNfYWJz
X3NyY2Rpcj0kYWNfYWJzX3RvcF9zcmNkaXIkYWNfZGlyX3N1ZmZpeAoKICAgIGNkICIkYWNfZGly
IiB8fCB7IGFjX3N0YXR1cz0kPzsgY29udGludWU7IH0KICAgICMgQ2hlY2sgZm9yIGd1ZXN0ZWQg
Y29uZmlndXJlLgogICAgaWYgdGVzdCAtZiAiJGFjX3NyY2Rpci9jb25maWd1cmUuZ251IjsgdGhl
bgogICAgICBlY2hvICYmCiAgICAgICRTSEVMTCAiJGFjX3NyY2Rpci9jb25maWd1cmUuZ251IiAt
LWhlbHA9cmVjdXJzaXZlCiAgICBlbGlmIHRlc3QgLWYgIiRhY19zcmNkaXIvY29uZmlndXJlIjsg
dGhlbgogICAgICBlY2hvICYmCiAgICAgICRTSEVMTCAiJGFjX3NyY2Rpci9jb25maWd1cmUiIC0t
aGVscD1yZWN1cnNpdmUKICAgIGVsc2UKICAgICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzog
bm8gY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBpcyBpbiAkYWNfZGlyIiA+JjIKICAgIGZpIHx8
IGFjX3N0YXR1cz0kPwogICAgY2QgIiRhY19wd2QiIHx8IHsgYWNfc3RhdHVzPSQ/OyBicmVhazsg
fQogIGRvbmUKZmkKCnRlc3QgLW4gIiRhY19pbml0X2hlbHAiICYmIGV4aXQgJGFjX3N0YXR1cwpp
ZiAkYWNfaW5pdF92ZXJzaW9uOyB0aGVuCiAgY2F0IDw8XF9BQ0VPRgpHTlUgUkNTIGNvbmZpZ3Vy
ZSA1LjguMgpnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkKCkNvcHlyaWdodCAoQykgMjAx
MiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KVGhpcyBjb25maWd1cmUgc2NyaXB0IGlz
IGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KZ2l2ZXMgdW5saW1p
dGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0LgpfQUNFT0YK
ICBleGl0CmZpCgojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKIyMgQXV0b2NvbmYgaW5p
dGlhbGl6YXRpb24uICMjCiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwoKIyBhY19mbl9j
X3RyeV9jb21waWxlIExJTkVOTwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVHJ5IHRv
IGNvbXBpbGUgY29uZnRlc3QuJGFjX2V4dCwgYW5kIHJldHVybiB3aGV0aGVyIHRoaXMgc3VjY2Vl
ZGVkLgphY19mbl9jX3RyeV9jb21waWxlICgpCnsKICBhc19saW5lbm89JHthc19saW5lbm8tIiQx
In0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCiAgcm0g
LWYgY29uZnRlc3QuJGFjX29iamV4dAogIGlmIHsgeyBhY190cnk9IiRhY19jb21waWxlIgpjYXNl
ICIoKCRhY190cnkiIGluCiAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3Ry
eTs7CiAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7CmVzYWMKZXZhbCBhY190cnlfZWNobz0iXCJc
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIKJGFzX2VjaG8gIiRh
Y190cnlfZWNobyI7IH0gPiY1CiAgKGV2YWwgIiRhY19jb21waWxlIikgMj5jb25mdGVzdC5lcnIK
ICBhY19zdGF0dXM9JD8KICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgogICAgZ3JlcCAt
diAnXiAqKycgY29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjEKICAgIGNhdCBjb25mdGVzdC5lcjEg
PiY1CiAgICBtdiAtZiBjb25mdGVzdC5lcjEgY29uZnRlc3QuZXJyCiAgZmkKICAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICB0ZXN0
ICRhY19zdGF0dXMgPSAwOyB9ICYmIHsKCSB0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIgfHwK
CSB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyCiAgICAgICB9ICYmIHRlc3QgLXMgY29uZnRlc3QuJGFj
X29iamV4dDsgdGhlbiA6CiAgYWNfcmV0dmFsPTAKZWxzZQogICRhc19lY2hvICIkYXNfbWU6IGZh
aWxlZCBwcm9ncmFtIHdhczoiID4mNQpzZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1
CgoJYWNfcmV0dmFsPTEKZmkKICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0
YWNrOis6fSB1bnNldCBhc19saW5lbm8KICBhc19mbl9zZXRfc3RhdHVzICRhY19yZXR2YWwKCn0g
IyBhY19mbl9jX3RyeV9jb21waWxlCgojIGFjX2ZuX2NfdHJ5X2NwcCBMSU5FTk8KIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiMgVHJ5IHRvIHByZXByb2Nlc3MgY29uZnRlc3QuJGFjX2V4dCwgYW5k
IHJldHVybiB3aGV0aGVyIHRoaXMgc3VjY2VlZGVkLgphY19mbl9jX3RyeV9jcHAgKCkKewogIGFz
X2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNr
PSRhc19saW5lbm9fc3RhY2sKICBpZiB7IHsgYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19l
eHQiCmNhc2UgIigoJGFjX3RyeSIgaW4KICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hv
PVwkYWNfdHJ5OzsKICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKZXNhYwpldmFsIGFjX3RyeV9l
Y2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgokYXNf
ZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKICAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNf
ZXh0IikgMj5jb25mdGVzdC5lcnIKICBhY19zdGF0dXM9JD8KICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0
LmVycjsgdGhlbgogICAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjEK
ICAgIGNhdCBjb25mdGVzdC5lcjEgPiY1CiAgICBtdiAtZiBjb25mdGVzdC5lcjEgY29uZnRlc3Qu
ZXJyCiAgZmkKICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAk
YWNfc3RhdHVzIiA+JjUKICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ID4gY29uZnRlc3QuaSAmJiB7
CgkgdGVzdCAteiAiJGFjX2NfcHJlcHJvY193YXJuX2ZsYWckYWNfY193ZXJyb3JfZmxhZyIgfHwK
CSB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyCiAgICAgICB9OyB0aGVuIDoKICBhY19yZXR2YWw9MApl
bHNlCiAgJGFzX2VjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CnNlZCAncy9e
L3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKCiAgICBhY19yZXR2YWw9MQpmaQogIGV2YWwgJGFz
X2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubwogIGFz
X2ZuX3NldF9zdGF0dXMgJGFjX3JldHZhbAoKfSAjIGFjX2ZuX2NfdHJ5X2NwcAoKIyBhY19mbl9j
X2NoZWNrX2hlYWRlcl9tb25ncmVsIExJTkVOTyBIRUFERVIgVkFSIElOQ0xVREVTCiMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRlc3Rz
IHdoZXRoZXIgSEVBREVSIGV4aXN0cywgZ2l2aW5nIGEgd2FybmluZyBpZiBpdCBjYW5ub3QgYmUg
Y29tcGlsZWQgdXNpbmcKIyB0aGUgaW5jbHVkZSBmaWxlcyBpbiBJTkNMVURFUyBhbmQgc2V0dGlu
ZyB0aGUgY2FjaGUgdmFyaWFibGUgVkFSCiMgYWNjb3JkaW5nbHkuCmFjX2ZuX2NfY2hlY2tfaGVh
ZGVyX21vbmdyZWwgKCkKewogIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9f
c3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKICBpZiBldmFsIFwkeyQzKzp9
IGZhbHNlOyB0aGVuIDoKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IGNoZWNraW5nIGZvciAkMiIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIGZvciAkMi4uLiAiID4m
NjsgfQppZiBldmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVk
KSAiID4mNgpmaQpldmFsIGFjX3Jlcz1cJCQzCgkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQokYXNfZWNobyAiJGFjX3Jl
cyIgPiY2OyB9CmVsc2UKICAjIElzIHRoZSBoZWFkZXIgY29tcGlsYWJsZT8KeyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyAkMiB1c2FiaWxpdHkiID4mNQok
YXNfZWNob19uICJjaGVja2luZyAkMiB1c2FiaWxpdHkuLi4gIiA+JjY7IH0KY2F0IGNvbmZkZWZz
LmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCiQ0
CiNpbmNsdWRlIDwkMj4KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0
aGVuIDoKICBhY19oZWFkZXJfY29tcGlsZXI9eWVzCmVsc2UKICBhY19oZWFkZXJfY29tcGlsZXI9
bm8KZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVz
dC4kYWNfZXh0CnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0
OiAkYWNfaGVhZGVyX2NvbXBpbGVyIiA+JjUKJGFzX2VjaG8gIiRhY19oZWFkZXJfY29tcGlsZXIi
ID4mNjsgfQoKIyBJcyB0aGUgaGVhZGVyIHByZXNlbnQ/CnsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgJDIgcHJlc2VuY2UiID4mNQokYXNfZWNob19uICJj
aGVja2luZyAkMiBwcmVzZW5jZS4uLiAiID4mNjsgfQpjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9G
ID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPCQyPgpf
QUNFT0YKaWYgYWNfZm5fY190cnlfY3BwICIkTElORU5PIjsgdGhlbiA6CiAgYWNfaGVhZGVyX3By
ZXByb2M9eWVzCmVsc2UKICBhY19oZWFkZXJfcHJlcHJvYz1ubwpmaQpybSAtZiBjb25mdGVzdC5l
cnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0CnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfaGVhZGVyX3ByZXByb2MiID4mNQokYXNfZWNobyAi
JGFjX2hlYWRlcl9wcmVwcm9jIiA+JjY7IH0KCiMgU28/ICBXaGF0IGFib3V0IHRoaXMgaGVhZGVy
PwpjYXNlICRhY19oZWFkZXJfY29tcGlsZXI6JGFjX2hlYWRlcl9wcmVwcm9jOiRhY19jX3ByZXBy
b2Nfd2Fybl9mbGFnIGluICMoKAogIHllczpubzogKQogICAgeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkMjogYWNjZXB0ZWQgYnkgdGhlIGNvbXBpbGVy
LCByZWplY3RlZCBieSB0aGUgcHJlcHJvY2Vzc29yISIgPiY1CiRhc19lY2hvICIkYXNfbWU6IFdB
Uk5JTkc6ICQyOiBhY2NlcHRlZCBieSB0aGUgY29tcGlsZXIsIHJlamVjdGVkIGJ5IHRoZSBwcmVw
cm9jZXNzb3IhIiA+JjI7fQogICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiBXQVJOSU5HOiAkMjogcHJvY2VlZGluZyB3aXRoIHRoZSBjb21waWxlcidzIHJlc3VsdCIg
PiY1CiRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICQyOiBwcm9jZWVkaW5nIHdpdGggdGhlIGNv
bXBpbGVyJ3MgcmVzdWx0IiA+JjI7fQogICAgOzsKICBubzp5ZXM6KiApCiAgICB7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICQyOiBwcmVzZW50IGJ1dCBj
YW5ub3QgYmUgY29tcGlsZWQiID4mNQokYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjogcHJl
c2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjI7fQogICAgeyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkMjogICAgIGNoZWNrIGZvciBtaXNzaW5n
IHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiY1CiRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICQy
OiAgICAgY2hlY2sgZm9yIG1pc3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/IiA+JjI7fQogICAg
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkMjogc2Vl
IHRoZSBBdXRvY29uZiBkb2N1bWVudGF0aW9uIiA+JjUKJGFzX2VjaG8gIiRhc19tZTogV0FSTklO
RzogJDI6IHNlZSB0aGUgQXV0b2NvbmYgZG9jdW1lbnRhdGlvbiIgPiYyO30KICAgIHsgJGFzX2Vj
aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogJDI6ICAgICBzZWN0aW9u
IFwiUHJlc2VudCBCdXQgQ2Fubm90IEJlIENvbXBpbGVkXCIiID4mNQokYXNfZWNobyAiJGFzX21l
OiBXQVJOSU5HOiAkMjogICAgIHNlY3Rpb24gXCJQcmVzZW50IEJ1dCBDYW5ub3QgQmUgQ29tcGls
ZWRcIiIgPiYyO30KICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
V0FSTklORzogJDI6IHByb2NlZWRpbmcgd2l0aCB0aGUgY29tcGlsZXIncyByZXN1bHQiID4mNQok
YXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjogcHJvY2VlZGluZyB3aXRoIHRoZSBjb21waWxl
cidzIHJlc3VsdCIgPiYyO30KKCAkYXNfZWNobyAiIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tICMjCiMjIFJlcG9ydCB0aGlzIHRvIGJ1Zy1yY3NAZ251Lm9yZyAjIwojIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMiCiAgICAgKSB8IHNlZCAicy9eLyRhc19tZTogV0FS
TklORzogICAgIC8iID4mMgogICAgOzsKZXNhYwogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICQyIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcg
Zm9yICQyLi4uICIgPiY2OyB9CmlmIGV2YWwgXCR7JDMrOn0gZmFsc2U7IHRoZW4gOgogICRhc19l
Y2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKICBldmFsICIkMz1cJGFjX2hlYWRlcl9jb21waWxl
ciIKZmkKZXZhbCBhY19yZXM9XCQkMwoJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKJGFzX2VjaG8gIiRhY19yZXMiID4m
NjsgfQpmaQogIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVu
c2V0IGFzX2xpbmVubwoKfSAjIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwKCiMgYWNfZm5f
Y190cnlfcnVuIExJTkVOTwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUcnkgdG8gbGluayBj
b25mdGVzdC4kYWNfZXh0LCBhbmQgcmV0dXJuIHdoZXRoZXIgdGhpcyBzdWNjZWVkZWQuIEFzc3Vt
ZXMKIyB0aGF0IGV4ZWN1dGFibGVzICpjYW4qIGJlIHJ1bi4KYWNfZm5fY190cnlfcnVuICgpCnsK
ICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19z
dGFjaz0kYXNfbGluZW5vX3N0YWNrCiAgaWYgeyB7IGFjX3RyeT0iJGFjX2xpbmsiCmNhc2UgIigo
JGFjX3RyeSIgaW4KICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsK
ICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKZXNhYwpldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgokYXNfZWNobyAiJGFjX3Ry
eV9lY2hvIjsgfSA+JjUKICAoZXZhbCAiJGFjX2xpbmsiKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIg
PiY1CiAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB7IGFjX3RyeT0nLi9jb25mdGVzdCRhY19l
eGVleHQnCiAgeyB7IGNhc2UgIigoJGFjX3RyeSIgaW4KICAqXCIqIHwgKlxgKiB8ICpcXCopIGFj
X3RyeV9lY2hvPVwkYWNfdHJ5OzsKICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKZXNhYwpldmFs
IGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNo
b1wiIgokYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKICAoZXZhbCAiJGFjX3RyeSIpIDI+
JjUKICBhY19zdGF0dXM9JD8KICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB9OyB0aGVu
IDoKICBhY19yZXR2YWw9MAplbHNlCiAgJGFzX2VjaG8gIiRhc19tZTogcHJvZ3JhbSBleGl0ZWQg
d2l0aCBzdGF0dXMgJGFjX3N0YXR1cyIgPiY1CiAgICAgICAkYXNfZWNobyAiJGFzX21lOiBmYWls
ZWQgcHJvZ3JhbSB3YXM6IiA+JjUKc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQoK
ICAgICAgIGFjX3JldHZhbD0kYWNfc3RhdHVzCmZpCiAgcm0gLXJmIGNvbmZ0ZXN0LmRTWU0gY29u
ZnRlc3RfaXBhOF9jb25mdGVzdC5vbwogIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5l
bm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubwogIGFzX2ZuX3NldF9zdGF0dXMgJGFjX3JldHZh
bAoKfSAjIGFjX2ZuX2NfdHJ5X3J1bgoKIyBhY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlIExJ
TkVOTyBIRUFERVIgVkFSIElOQ0xVREVTCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRlc3RzIHdoZXRoZXIgSEVBREVSIGV4aXN0cyBh
bmQgY2FuIGJlIGNvbXBpbGVkIHVzaW5nIHRoZSBpbmNsdWRlIGZpbGVzIGluCiMgSU5DTFVERVMs
IHNldHRpbmcgdGhlIGNhY2hlIHZhcmlhYmxlIFZBUiBhY2NvcmRpbmdseS4KYWNfZm5fY19jaGVj
a19oZWFkZXJfY29tcGlsZSAoKQp7CiAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xp
bmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjawogIHsgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICQyIiA+JjUKJGFzX2Vj
aG9fbiAiY2hlY2tpbmcgZm9yICQyLi4uICIgPiY2OyB9CmlmIGV2YWwgXCR7JDMrOn0gZmFsc2U7
IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKICBjYXQgY29uZmRlZnMu
aCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KJDQK
I2luY2x1ZGUgPCQyPgpfQUNFT0YKaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRo
ZW4gOgogIGV2YWwgIiQzPXllcyIKZWxzZQogIGV2YWwgIiQzPW5vIgpmaQpybSAtZiBjb3JlIGNv
bmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKZmkKZXZhbCBh
Y19yZXM9XCQkMwoJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQogIGV2YWwg
JGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubwoK
fSAjIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUKCiMgYWNfZm5fY190cnlfbGluayBMSU5F
Tk8KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRyeSB0byBsaW5rIGNvbmZ0ZXN0LiRhY19l
eHQsIGFuZCByZXR1cm4gd2hldGhlciB0aGlzIHN1Y2NlZWRlZC4KYWNfZm5fY190cnlfbGluayAo
KQp7CiAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5l
bm9fc3RhY2s9JGFzX2xpbmVub19zdGFjawogIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29u
ZnRlc3QkYWNfZXhlZXh0CiAgaWYgeyB7IGFjX3RyeT0iJGFjX2xpbmsiCmNhc2UgIigoJGFjX3Ry
eSIgaW4KICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKICAqKSBh
Y190cnlfZWNobz0kYWNfdHJ5OzsKZXNhYwpldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgokYXNfZWNobyAiJGFjX3RyeV9lY2hv
IjsgfSA+JjUKICAoZXZhbCAiJGFjX2xpbmsiKSAyPmNvbmZ0ZXN0LmVycgogIGFjX3N0YXR1cz0k
PwogIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCiAgICBncmVwIC12ICdeICorJyBjb25m
dGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMQogICAgY2F0IGNvbmZ0ZXN0LmVyMSA+JjUKICAgIG12IC1m
IGNvbmZ0ZXN0LmVyMSBjb25mdGVzdC5lcnIKICBmaQogICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIHRlc3QgJGFjX3N0YXR1cyA9
IDA7IH0gJiYgewoJIHRlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIiB8fAoJIHRlc3QgISAtcyBj
b25mdGVzdC5lcnIKICAgICAgIH0gJiYgdGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQgJiYgewoJ
IHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzIHx8CgkgdGVzdCAteCBjb25mdGVzdCRhY19l
eGVleHQKICAgICAgIH07IHRoZW4gOgogIGFjX3JldHZhbD0wCmVsc2UKICAkYXNfZWNobyAiJGFz
X21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNf
ZXh0ID4mNQoKCWFjX3JldHZhbD0xCmZpCiAgIyBEZWxldGUgdGhlIElQQS9JUE8gKEludGVyIFBy
b2NlZHVyYWwgQW5hbHlzaXMvT3B0aW1pemF0aW9uKSBpbmZvcm1hdGlvbgogICMgY3JlYXRlZCBi
eSB0aGUgUEdJIGNvbXBpbGVyIChjb25mdGVzdF9pcGE4X2NvbmZ0ZXN0Lm9vKSwgYXMgaXQgd291
bGQKICAjIGludGVyZmVyZSB3aXRoIHRoZSBuZXh0IGxpbmsgY29tbWFuZDsgYWxzbyBkZWxldGUg
YSBkaXJlY3RvcnkgdGhhdCBpcwogICMgbGVmdCBiZWhpbmQgYnkgQXBwbGUncyBjb21waWxlci4g
IFdlIGRvIHRoaXMgYmVmb3JlIGV4ZWN1dGluZyB0aGUgYWN0aW9ucy4KICBybSAtcmYgY29uZnRl
c3QuZFNZTSBjb25mdGVzdF9pcGE4X2NvbmZ0ZXN0Lm9vCiAgZXZhbCAkYXNfbGluZW5vX3N0YWNr
OyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCiAgYXNfZm5fc2V0X3N0YXR1
cyAkYWNfcmV0dmFsCgp9ICMgYWNfZm5fY190cnlfbGluawoKIyBhY19mbl9jX2NoZWNrX2Z1bmMg
TElORU5PIEZVTkMgVkFSCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRl
c3RzIHdoZXRoZXIgRlVOQyBleGlzdHMsIHNldHRpbmcgdGhlIGNhY2hlIHZhcmlhYmxlIFZBUiBh
Y2NvcmRpbmdseQphY19mbl9jX2NoZWNrX2Z1bmMgKCkKewogIGFzX2xpbmVubz0ke2FzX2xpbmVu
by0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sK
ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAk
MiIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIGZvciAkMi4uLiAiID4mNjsgfQppZiBldmFsIFwk
eyQzKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCiAg
Y2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRl
ZnMuaC4gICovCi8qIERlZmluZSAkMiB0byBhbiBpbm5vY3VvdXMgdmFyaWFudCwgaW4gY2FzZSA8
bGltaXRzLmg+IGRlY2xhcmVzICQyLgogICBGb3IgZXhhbXBsZSwgSFAtVVggMTFpIDxsaW1pdHMu
aD4gZGVjbGFyZXMgZ2V0dGltZW9mZGF5LiAgKi8KI2RlZmluZSAkMiBpbm5vY3VvdXNfJDIKCi8q
IFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcg
cHJvdG90eXBlcywKICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgJDIgKCk7IGJlbG93
LgogICAgUHJlZmVyIDxsaW1pdHMuaD4gdG8gPGFzc2VydC5oPiBpZiBfX1NURENfXyBpcyBkZWZp
bmVkLCBzaW5jZQogICAgPGxpbWl0cy5oPiBleGlzdHMgZXZlbiBvbiBmcmVlc3RhbmRpbmcgY29t
cGlsZXJzLiAgKi8KCiNpZmRlZiBfX1NURENfXwojIGluY2x1ZGUgPGxpbWl0cy5oPgojZWxzZQoj
IGluY2x1ZGUgPGFzc2VydC5oPgojZW5kaWYKCiN1bmRlZiAkMgoKLyogT3ZlcnJpZGUgYW55IEdD
QyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCiAgIFVzZSBjaGFyIGJlY2F1
c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQwogICBidWlsdGluIGFu
ZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwojaWZk
ZWYgX19jcGx1c3BsdXMKZXh0ZXJuICJDIgojZW5kaWYKY2hhciAkMiAoKTsKLyogVGhlIEdOVSBD
IGxpYnJhcnkgZGVmaW5lcyB0aGlzIGZvciBmdW5jdGlvbnMgd2hpY2ggaXQgaW1wbGVtZW50cwog
ICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFs
bHkgbmFtZWQKICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5h
bWUgaXMgYW4gYWxpYXMuICAqLwojaWYgZGVmaW5lZCBfX3N0dWJfJDIgfHwgZGVmaW5lZCBfX3N0
dWJfX18kMgpjaG9rZSBtZQojZW5kaWYKCmludAptYWluICgpCnsKcmV0dXJuICQyICgpOwogIDsK
ICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4g
OgogIGV2YWwgIiQzPXllcyIKZWxzZQogIGV2YWwgIiQzPW5vIgpmaQpybSAtZiBjb3JlIGNvbmZ0
ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25m
dGVzdC4kYWNfZXh0CmZpCmV2YWwgYWNfcmVzPVwkJDMKCSAgICAgICB7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiRhc19lY2hvICIk
YWNfcmVzIiA+JjY7IH0KICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNr
Ois6fSB1bnNldCBhc19saW5lbm8KCn0gIyBhY19mbl9jX2NoZWNrX2Z1bmMKCiMgYWNfZm5fY19j
aGVja190eXBlIExJTkVOTyBUWVBFIFZBUiBJTkNMVURFUwojIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUZXN0cyB3aGV0aGVyIFRZUEUgZXhpc3RzIGFmdGVy
IGhhdmluZyBpbmNsdWRlZCBJTkNMVURFUywgc2V0dGluZyBjYWNoZQojIHZhcmlhYmxlIFZBUiBh
Y2NvcmRpbmdseS4KYWNfZm5fY19jaGVja190eXBlICgpCnsKICBhc19saW5lbm89JHthc19saW5l
bm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNr
CiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig
JDIiID4mNQokYXNfZWNob19uICJjaGVja2luZyBmb3IgJDIuLi4gIiA+JjY7IH0KaWYgZXZhbCBc
JHskMys6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQog
IGV2YWwgIiQzPW5vIgogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19l
eHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwokNAppbnQKbWFpbiAoKQp7CmlmIChzaXplb2YgKCQy
KSkKCSByZXR1cm4gMDsKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2Nv
bXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25m
dGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KJDQKaW50Cm1haW4gKCkKewppZiAo
c2l6ZW9mICgoJDIpKSkKCSAgICByZXR1cm4gMDsKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlm
IGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKCmVsc2UKICBldmFsICIkMz15
ZXMiCmZpCnJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRl
c3QuJGFjX2V4dApmaQpybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0
IGNvbmZ0ZXN0LiRhY19leHQKZmkKZXZhbCBhY19yZXM9XCQkMwoJICAgICAgIHsgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKJGFzX2Vj
aG8gIiRhY19yZXMiID4mNjsgfQogIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9f
c3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubwoKfSAjIGFjX2ZuX2NfY2hlY2tfdHlwZQoKIyBhY19m
bl9jX2NvbXB1dGVfaW50IExJTkVOTyBFWFBSIFZBUiBJTkNMVURFUwojIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVHJpZXMgdG8gZmluZCB0aGUgY29tcGls
ZS10aW1lIHZhbHVlIG9mIEVYUFIgaW4gYSBwcm9ncmFtIHRoYXQgaW5jbHVkZXMKIyBJTkNMVURF
Uywgc2V0dGluZyBWQVIgYWNjb3JkaW5nbHkuIFJldHVybnMgd2hldGhlciB0aGUgdmFsdWUgY291
bGQgYmUKIyBjb21wdXRlZAphY19mbl9jX2NvbXB1dGVfaW50ICgpCnsKICBhc19saW5lbm89JHth
c19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5v
X3N0YWNrCiAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KICAgICMgRGVw
ZW5kaW5nIHVwb24gdGhlIHNpemUsIGNvbXB1dGUgdGhlIGxvIGFuZCBoaSBib3VuZHMuCmNhdCBj
b25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmgu
ICAqLwokNAppbnQKbWFpbiAoKQp7CnN0YXRpYyBpbnQgdGVzdF9hcnJheSBbMSAtIDIgKiAhKCgk
MikgPj0gMCldOwp0ZXN0X2FycmF5IFswXSA9IDA7CnJldHVybiB0ZXN0X2FycmF5IFswXTsKCiAg
OwogIHJldHVybiAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsg
dGhlbiA6CiAgYWNfbG89MCBhY19taWQ9MAogIHdoaWxlIDo7IGRvCiAgICBjYXQgY29uZmRlZnMu
aCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KJDQK
aW50Cm1haW4gKCkKewpzdGF0aWMgaW50IHRlc3RfYXJyYXkgWzEgLSAyICogISgoJDIpIDw9ICRh
Y19taWQpXTsKdGVzdF9hcnJheSBbMF0gPSAwOwpyZXR1cm4gdGVzdF9hcnJheSBbMF07CgogIDsK
ICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRo
ZW4gOgogIGFjX2hpPSRhY19taWQ7IGJyZWFrCmVsc2UKICBhc19mbl9hcml0aCAkYWNfbWlkICsg
MSAmJiBhY19sbz0kYXNfdmFsCgkJCWlmIHRlc3QgJGFjX2xvIC1sZSAkYWNfbWlkOyB0aGVuCgkJ
CSAgYWNfbG89IGFjX2hpPQoJCQkgIGJyZWFrCgkJCWZpCgkJCWFzX2ZuX2FyaXRoIDIgJyonICRh
Y19taWQgKyAxICYmIGFjX21pZD0kYXNfdmFsCmZpCnJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNv
bmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogIGRvbmUKZWxzZQogIGNhdCBjb25m
ZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAq
LwokNAppbnQKbWFpbiAoKQp7CnN0YXRpYyBpbnQgdGVzdF9hcnJheSBbMSAtIDIgKiAhKCgkMikg
PCAwKV07CnRlc3RfYXJyYXkgWzBdID0gMDsKcmV0dXJuIHRlc3RfYXJyYXkgWzBdOwoKICA7CiAg
cmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVu
IDoKICBhY19oaT0tMSBhY19taWQ9LTEKICB3aGlsZSA6OyBkbwogICAgY2F0IGNvbmZkZWZzLmgg
LSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCiQ0Cmlu
dAptYWluICgpCnsKc3RhdGljIGludCB0ZXN0X2FycmF5IFsxIC0gMiAqICEoKCQyKSA+PSAkYWNf
bWlkKV07CnRlc3RfYXJyYXkgWzBdID0gMDsKcmV0dXJuIHRlc3RfYXJyYXkgWzBdOwoKICA7CiAg
cmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVu
IDoKICBhY19sbz0kYWNfbWlkOyBicmVhawplbHNlCiAgYXNfZm5fYXJpdGggJygnICRhY19taWQg
JyknIC0gMSAmJiBhY19oaT0kYXNfdmFsCgkJCWlmIHRlc3QgJGFjX21pZCAtbGUgJGFjX2hpOyB0
aGVuCgkJCSAgYWNfbG89IGFjX2hpPQoJCQkgIGJyZWFrCgkJCWZpCgkJCWFzX2ZuX2FyaXRoIDIg
JyonICRhY19taWQgJiYgYWNfbWlkPSRhc192YWwKZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIg
Y29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiAgZG9uZQplbHNlCiAgYWNfbG89
IGFjX2hpPQpmaQpybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNv
bmZ0ZXN0LiRhY19leHQKZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29i
amV4dCBjb25mdGVzdC4kYWNfZXh0CiMgQmluYXJ5IHNlYXJjaCBiZXR3ZWVuIGxvIGFuZCBoaSBi
b3VuZHMuCndoaWxlIHRlc3QgIngkYWNfbG8iICE9ICJ4JGFjX2hpIjsgZG8KICBhc19mbl9hcml0
aCAnKCcgJGFjX2hpIC0gJGFjX2xvICcpJyAvIDIgKyAkYWNfbG8gJiYgYWNfbWlkPSRhc192YWwK
ICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25m
ZGVmcy5oLiAgKi8KJDQKaW50Cm1haW4gKCkKewpzdGF0aWMgaW50IHRlc3RfYXJyYXkgWzEgLSAy
ICogISgoJDIpIDw9ICRhY19taWQpXTsKdGVzdF9hcnJheSBbMF0gPSAwOwpyZXR1cm4gdGVzdF9h
cnJheSBbMF07CgogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNfZm5fY190cnlfY29tcGls
ZSAiJExJTkVOTyI7IHRoZW4gOgogIGFjX2hpPSRhY19taWQKZWxzZQogIGFzX2ZuX2FyaXRoICco
JyAkYWNfbWlkICcpJyArIDEgJiYgYWNfbG89JGFzX3ZhbApmaQpybSAtZiBjb3JlIGNvbmZ0ZXN0
LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKZG9uZQpjYXNlICRhY19s
byBpbiAjKCgKPyopIGV2YWwgIiQzPVwkYWNfbG8iOyBhY19yZXR2YWw9MCA7OwonJykgYWNfcmV0
dmFsPTEgOzsKZXNhYwogIGVsc2UKICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0
ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwokNApzdGF0aWMgbG9uZyBpbnQgbG9u
Z3ZhbCAoKSB7IHJldHVybiAkMjsgfQpzdGF0aWMgdW5zaWduZWQgbG9uZyBpbnQgdWxvbmd2YWwg
KCkgeyByZXR1cm4gJDI7IH0KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4K
aW50Cm1haW4gKCkKewoKICBGSUxFICpmID0gZm9wZW4gKCJjb25mdGVzdC52YWwiLCAidyIpOwog
IGlmICghIGYpCiAgICByZXR1cm4gMTsKICBpZiAoKCQyKSA8IDApCiAgICB7CiAgICAgIGxvbmcg
aW50IGkgPSBsb25ndmFsICgpOwogICAgICBpZiAoaSAhPSAoJDIpKQoJcmV0dXJuIDE7CiAgICAg
IGZwcmludGYgKGYsICIlbGQiLCBpKTsKICAgIH0KICBlbHNlCiAgICB7CiAgICAgIHVuc2lnbmVk
IGxvbmcgaW50IGkgPSB1bG9uZ3ZhbCAoKTsKICAgICAgaWYgKGkgIT0gKCQyKSkKCXJldHVybiAx
OwogICAgICBmcHJpbnRmIChmLCAiJWx1IiwgaSk7CiAgICB9CiAgLyogRG8gbm90IG91dHB1dCBh
IHRyYWlsaW5nIG5ld2xpbmUsIGFzIHRoaXMgY2F1c2VzIFxyXG4gY29uZnVzaW9uCiAgICAgb24g
c29tZSBwbGF0Zm9ybXMuICAqLwogIHJldHVybiBmZXJyb3IgKGYpIHx8IGZjbG9zZSAoZikgIT0g
MDsKCiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8i
OyB0aGVuIDoKICBlY2hvID4+Y29uZnRlc3QudmFsOyByZWFkICQzIDxjb25mdGVzdC52YWw7IGFj
X3JldHZhbD0wCmVsc2UKICBhY19yZXR2YWw9MQpmaQpybSAtZiBjb3JlICouY29yZSBjb3JlLmNv
bmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCiAgY29uZnRlc3Qu
JGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKcm0gLWYgY29uZnRlc3Qu
dmFsCgogIGZpCiAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0g
dW5zZXQgYXNfbGluZW5vCiAgYXNfZm5fc2V0X3N0YXR1cyAkYWNfcmV0dmFsCgp9ICMgYWNfZm5f
Y19jb21wdXRlX2ludAoKIyBhY19mbl9jX2NoZWNrX2RlY2wgTElORU5PIFNZTUJPTCBWQVIgSU5D
TFVERVMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBU
ZXN0cyB3aGV0aGVyIFNZTUJPTCBpcyBkZWNsYXJlZCBpbiBJTkNMVURFUywgc2V0dGluZyBjYWNo
ZSB2YXJpYWJsZSBWQVIKIyBhY2NvcmRpbmdseS4KYWNfZm5fY19jaGVja19kZWNsICgpCnsKICBh
c19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFj
az0kYXNfbGluZW5vX3N0YWNrCiAgYXNfZGVjbF9uYW1lPWBlY2hvICQyfHNlZCAncy8gKiguKi8v
J2AKICBhc19kZWNsX3VzZT1gZWNobyAkMnxzZWQgLWUgJ3MvKC8oKC8nIC1lICdzLykvKSAwJi8n
IC1lICdzLywvKSAwJiAoL2cnYAogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogY2hlY2tpbmcgd2hldGhlciAkYXNfZGVjbF9uYW1lIGlzIGRlY2xhcmVkIiA+JjUKJGFz
X2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAkYXNfZGVjbF9uYW1lIGlzIGRlY2xhcmVkLi4uICIg
PiY2OyB9CmlmIGV2YWwgXCR7JDMrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNo
ZWQpICIgPiY2CmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNf
ZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KJDQKaW50Cm1haW4gKCkKewojaWZuZGVmICRhc19k
ZWNsX25hbWUKI2lmZGVmIF9fY3BsdXNwbHVzCiAgKHZvaWQpICRhc19kZWNsX3VzZTsKI2Vsc2UK
ICAodm9pZCkgJGFzX2RlY2xfbmFtZTsKI2VuZGlmCiNlbmRpZgoKICA7CiAgcmV0dXJuIDA7Cn0K
X0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKICBldmFsICIk
Mz15ZXMiCmVsc2UKICBldmFsICIkMz1ubyIKZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29u
ZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CmZpCmV2YWwgYWNfcmVzPVwkJDMKCSAg
ICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFj
X3JlcyIgPiY1CiRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KICBldmFsICRhc19saW5lbm9fc3Rh
Y2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KCn0gIyBhY19mbl9jX2No
ZWNrX2RlY2wKCiMgYWNfZm5fY19jaGVja19tZW1iZXIgTElORU5PIEFHR1IgTUVNQkVSIFZBUiBJ
TkNMVURFUwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIyBUcmllcyB0byBmaW5kIGlmIHRoZSBmaWVsZCBNRU1CRVIgZXhpc3RzIGluIHR5cGUg
QUdHUiwgYWZ0ZXIgaW5jbHVkaW5nCiMgSU5DTFVERVMsIHNldHRpbmcgY2FjaGUgdmFyaWFibGUg
VkFSIGFjY29yZGluZ2x5LgphY19mbl9jX2NoZWNrX21lbWJlciAoKQp7CiAgYXNfbGluZW5vPSR7
YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVu
b19zdGFjawogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tp
bmcgZm9yICQyLiQzIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICQyLiQzLi4uICIgPiY2
OyB9CmlmIGV2YWwgXCR7JDQrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQp
ICIgPiY2CmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0
Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KJDUKaW50Cm1haW4gKCkKewpzdGF0aWMgJDIgYWNfYWdn
cjsKaWYgKGFjX2FnZ3IuJDMpCnJldHVybiAwOwogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKaWYg
YWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgogIGV2YWwgIiQ0PXllcyIKZWxz
ZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNv
bmZkZWZzLmguICAqLwokNQppbnQKbWFpbiAoKQp7CnN0YXRpYyAkMiBhY19hZ2dyOwppZiAoc2l6
ZW9mIGFjX2FnZ3IuJDMpCnJldHVybiAwOwogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNf
Zm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgogIGV2YWwgIiQ0PXllcyIKZWxzZQog
IGV2YWwgIiQ0PW5vIgpmaQpybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2Jq
ZXh0IGNvbmZ0ZXN0LiRhY19leHQKZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3Qu
JGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CmZpCmV2YWwgYWNfcmVzPVwkJDQKCSAgICAgICB7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIg
PiY1CiRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7
YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KCn0gIyBhY19mbl9jX2NoZWNrX21l
bWJlcgpjYXQgPmNvbmZpZy5sb2cgPDxfQUNFT0YKVGhpcyBmaWxlIGNvbnRhaW5zIGFueSBtZXNz
YWdlcyBwcm9kdWNlZCBieSBjb21waWxlcnMgd2hpbGUKcnVubmluZyBjb25maWd1cmUsIHRvIGFp
ZCBkZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2VzIGEgbWlzdGFrZS4KCkl0IHdhcyBjcmVhdGVk
IGJ5IEdOVSBSQ1MgJGFzX21lIDUuOC4yLCB3aGljaCB3YXMKZ2VuZXJhdGVkIGJ5IEdOVSBBdXRv
Y29uZiAyLjY5LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCgogICQgJDAgJEAKCl9BQ0VP
RgpleGVjIDU+PmNvbmZpZy5sb2cKewpjYXQgPDxfQVNVTkFNRQojIyAtLS0tLS0tLS0gIyMKIyMg
UGxhdGZvcm0uICMjCiMjIC0tLS0tLS0tLSAjIwoKaG9zdG5hbWUgPSBgKGhvc3RuYW1lIHx8IHVu
YW1lIC1uKSAyPi9kZXYvbnVsbCB8IHNlZCAxcWAKdW5hbWUgLW0gPSBgKHVuYW1lIC1tKSAyPi9k
ZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCnVuYW1lIC1yID0gYCh1bmFtZSAtcikgMj4vZGV2L251
bGwgfHwgZWNobyB1bmtub3duYAp1bmFtZSAtcyA9IGAodW5hbWUgLXMpIDI+L2Rldi9udWxsIHx8
IGVjaG8gdW5rbm93bmAKdW5hbWUgLXYgPSBgKHVuYW1lIC12KSAyPi9kZXYvbnVsbCB8fCBlY2hv
IHVua25vd25gCgovdXNyL2Jpbi91bmFtZSAtcCA9IGAoL3Vzci9iaW4vdW5hbWUgLXApIDI+L2Rl
di9udWxsIHx8IGVjaG8gdW5rbm93bmAKL2Jpbi91bmFtZSAtWCAgICAgPSBgKC9iaW4vdW5hbWUg
LVgpIDI+L2Rldi9udWxsICAgICB8fCBlY2hvIHVua25vd25gCgovYmluL2FyY2ggICAgICAgICAg
ICAgID0gYCgvYmluL2FyY2gpIDI+L2Rldi9udWxsICAgICAgICAgICAgICB8fCBlY2hvIHVua25v
d25gCi91c3IvYmluL2FyY2ggLWsgICAgICAgPSBgKC91c3IvYmluL2FyY2ggLWspIDI+L2Rldi9u
dWxsICAgICAgIHx8IGVjaG8gdW5rbm93bmAKL3Vzci9jb252ZXgvZ2V0c3lzaW5mbyA9IGAoL3Vz
ci9jb252ZXgvZ2V0c3lzaW5mbykgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAovdXNyL2Jp
bi9ob3N0aW5mbyAgICAgID0gYCgvdXNyL2Jpbi9ob3N0aW5mbykgMj4vZGV2L251bGwgICAgICB8
fCBlY2hvIHVua25vd25gCi9iaW4vbWFjaGluZSAgICAgICAgICAgPSBgKC9iaW4vbWFjaGluZSkg
Mj4vZGV2L251bGwgICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmAKL3Vzci9iaW4vb3NsZXZlbCAg
ICAgICA9IGAoL3Vzci9iaW4vb3NsZXZlbCkgMj4vZGV2L251bGwgICAgICAgfHwgZWNobyB1bmtu
b3duYAovYmluL3VuaXZlcnNlICAgICAgICAgID0gYCgvYmluL3VuaXZlcnNlKSAyPi9kZXYvbnVs
bCAgICAgICAgICB8fCBlY2hvIHVua25vd25gCgpfQVNVTkFNRQoKYXNfc2F2ZV9JRlM9JElGUzsg
SUZTPSRQQVRIX1NFUEFSQVRPUgpmb3IgYXNfZGlyIGluICRQQVRICmRvCiAgSUZTPSRhc19zYXZl
X0lGUwogIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAkYXNfZWNobyAiUEFUSDog
JGFzX2RpciIKICBkb25lCklGUz0kYXNfc2F2ZV9JRlMKCn0gPiY1CgpjYXQgPiY1IDw8X0FDRU9G
CgoKIyMgLS0tLS0tLS0tLS0gIyMKIyMgQ29yZSB0ZXN0cy4gIyMKIyMgLS0tLS0tLS0tLS0gIyMK
Cl9BQ0VPRgoKCiMgS2VlcCBhIHRyYWNlIG9mIHRoZSBjb21tYW5kIGxpbmUuCiMgU3RyaXAgb3V0
IC0tbm8tY3JlYXRlIGFuZCAtLW5vLXJlY3Vyc2lvbiBzbyB0aGV5IGRvIG5vdCBwaWxlIHVwLgoj
IFN0cmlwIG91dCAtLXNpbGVudCBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gcmVjb3JkIGl0IGZv
ciBmdXR1cmUgcnVucy4KIyBBbHNvIHF1b3RlIGFueSBhcmdzIGNvbnRhaW5pbmcgc2hlbGwgbWV0
YS1jaGFyYWN0ZXJzLgojIE1ha2UgdHdvIHBhc3NlcyB0byBhbGxvdyBmb3IgcHJvcGVyIGR1cGxp
Y2F0ZS1hcmd1bWVudCBzdXBwcmVzc2lvbi4KYWNfY29uZmlndXJlX2FyZ3M9CmFjX2NvbmZpZ3Vy
ZV9hcmdzMD0KYWNfY29uZmlndXJlX2FyZ3MxPQphY19tdXN0X2tlZXBfbmV4dD1mYWxzZQpmb3Ig
YWNfcGFzcyBpbiAxIDIKZG8KICBmb3IgYWNfYXJnCiAgZG8KICAgIGNhc2UgJGFjX2FyZyBpbgog
ICAgLW5vLWNyZWF0ZSB8IC0tbm8tYyogfCAtbiB8IC1uby1yZWN1cnNpb24gfCAtLW5vLXIqKSBj
b250aW51ZSA7OwogICAgLXEgfCAtcXVpZXQgfCAtLXF1aWV0IHwgLS1xdWllIHwgLS1xdWkgfCAt
LXF1IHwgLS1xIFwKICAgIHwgLXNpbGVudCB8IC0tc2lsZW50IHwgLS1zaWxlbiB8IC0tc2lsZSB8
IC0tc2lsKQogICAgICBjb250aW51ZSA7OwogICAgKlwnKikKICAgICAgYWNfYXJnPWAkYXNfZWNo
byAiJGFjX2FyZyIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImAgOzsKICAgIGVzYWMKICAgIGNh
c2UgJGFjX3Bhc3MgaW4KICAgIDEpIGFzX2ZuX2FwcGVuZCBhY19jb25maWd1cmVfYXJnczAgIiAn
JGFjX2FyZyciIDs7CiAgICAyKQogICAgICBhc19mbl9hcHBlbmQgYWNfY29uZmlndXJlX2FyZ3Mx
ICIgJyRhY19hcmcnIgogICAgICBpZiB0ZXN0ICRhY19tdXN0X2tlZXBfbmV4dCA9IHRydWU7IHRo
ZW4KCWFjX211c3Rfa2VlcF9uZXh0PWZhbHNlICMgR290IHZhbHVlLCBiYWNrIHRvIG5vcm1hbC4K
ICAgICAgZWxzZQoJY2FzZSAkYWNfYXJnIGluCgkgICo9KiB8IC0tY29uZmlnLWNhY2hlIHwgLUMg
fCAtZGlzYWJsZS0qIHwgLS1kaXNhYmxlLSogXAoJICB8IC1lbmFibGUtKiB8IC0tZW5hYmxlLSog
fCAtZ2FzIHwgLS1nKiB8IC1uZnAgfCAtLW5mKiBcCgkgIHwgLXEgfCAtcXVpZXQgfCAtLXEqIHwg
LXNpbGVudCB8IC0tc2lsKiB8IC12IHwgLXZlcmIqIFwKCSAgfCAtd2l0aC0qIHwgLS13aXRoLSog
fCAtd2l0aG91dC0qIHwgLS13aXRob3V0LSogfCAtLXgpCgkgICAgY2FzZSAiJGFjX2NvbmZpZ3Vy
ZV9hcmdzMCAiIGluCgkgICAgICAiJGFjX2NvbmZpZ3VyZV9hcmdzMSIqIiAnJGFjX2FyZycgIiog
KSBjb250aW51ZSA7OwoJICAgIGVzYWMKCSAgICA7OwoJICAtKiApIGFjX211c3Rfa2VlcF9uZXh0
PXRydWUgOzsKCWVzYWMKICAgICAgZmkKICAgICAgYXNfZm5fYXBwZW5kIGFjX2NvbmZpZ3VyZV9h
cmdzICIgJyRhY19hcmcnIgogICAgICA7OwogICAgZXNhYwogIGRvbmUKZG9uZQp7IGFjX2NvbmZp
Z3VyZV9hcmdzMD07IHVuc2V0IGFjX2NvbmZpZ3VyZV9hcmdzMDt9CnsgYWNfY29uZmlndXJlX2Fy
Z3MxPTsgdW5zZXQgYWNfY29uZmlndXJlX2FyZ3MxO30KCiMgV2hlbiBpbnRlcnJ1cHRlZCBvciBl
eGl0J2QsIGNsZWFudXAgdGVtcG9yYXJ5IGZpbGVzLCBhbmQgY29tcGxldGUKIyBjb25maWcubG9n
LiAgV2UgcmVtb3ZlIGNvbW1lbnRzIGJlY2F1c2UgYW55d2F5IHRoZSBxdW90ZXMgaW4gdGhlcmUK
IyB3b3VsZCBjYXVzZSBwcm9ibGVtcyBvciBsb29rIHVnbHkuCiMgV0FSTklORzogVXNlICdcJycg
dG8gcmVwcmVzZW50IGFuIGFwb3N0cm9waGUgd2l0aGluIHRoZSB0cmFwLgojIFdBUk5JTkc6IERv
IG5vdCBzdGFydCB0aGUgdHJhcCBjb2RlIHdpdGggYSBuZXdsaW5lLCBkdWUgdG8gYSBGcmVlQlNE
IDQuMCBidWcuCnRyYXAgJ2V4aXRfc3RhdHVzPSQ/CiAgIyBTYXZlIGludG8gY29uZmlnLmxvZyBz
b21lIGluZm9ybWF0aW9uIHRoYXQgbWlnaHQgaGVscCBpbiBkZWJ1Z2dpbmcuCiAgewogICAgZWNo
bwoKICAgICRhc19lY2hvICIjIyAtLS0tLS0tLS0tLS0tLS0tICMjCiMjIENhY2hlIHZhcmlhYmxl
cy4gIyMKIyMgLS0tLS0tLS0tLS0tLS0tLSAjIyIKICAgIGVjaG8KICAgICMgVGhlIGZvbGxvd2lu
ZyB3YXkgb2Ygd3JpdGluZyB0aGUgY2FjaGUgbWlzaGFuZGxlcyBuZXdsaW5lcyBpbiB2YWx1ZXMs
CigKICBmb3IgYWNfdmFyIGluIGAoc2V0KSAyPiYxIHwgc2VkIC1uICdcJydzL15cKFthLXpBLVpf
XVthLXpBLVowLTlfXSpcKT0uKi9cMS9wJ1wnJ2A7IGRvCiAgICBldmFsIGFjX3ZhbD1cJCRhY192
YXIKICAgIGNhc2UgJGFjX3ZhbCBpbiAjKAogICAgKiR7YXNfbmx9KikKICAgICAgY2FzZSAkYWNf
dmFyIGluICMoCiAgICAgICpfY3ZfKikgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBXQVJOSU5HOiBjYWNoZSB2YXJpYWJsZSAkYWNfdmFyIGNvbnRhaW5zIGEgbmV3bGlu
ZSIgPiY1CiRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IGNhY2hlIHZhcmlhYmxlICRhY192YXIg
Y29udGFpbnMgYSBuZXdsaW5lIiA+JjI7fSA7OwogICAgICBlc2FjCiAgICAgIGNhc2UgJGFjX3Zh
ciBpbiAjKAogICAgICBfIHwgSUZTIHwgYXNfbmwpIDs7ICMoCiAgICAgIEJBU0hfQVJHViB8IEJB
U0hfU09VUkNFKSBldmFsICRhY192YXI9IDs7ICMoCiAgICAgICopIHsgZXZhbCAkYWNfdmFyPTsg
dW5zZXQgJGFjX3Zhcjt9IDs7CiAgICAgIGVzYWMgOzsKICAgIGVzYWMKICBkb25lCiAgKHNldCkg
Mj4mMSB8CiAgICBjYXNlICRhc19ubGAoYWNfc3BhY2U9J1wnJyAnXCcnOyBzZXQpIDI+JjFgIGlu
ICMoCiAgICAqJHthc19ubH1hY19zcGFjZT1cICopCiAgICAgIHNlZCAtbiBcCgkicy8nXCcnLydc
JydcXFxcJ1wnJydcJycvZzsKCSAgcy9eXFwoW18kYXNfY3JfYWxudW1dKl9jdl9bXyRhc19jcl9h
bG51bV0qXFwpPVxcKC4qXFwpL1xcMT0nXCcnXFwyJ1wnJy9wIgogICAgICA7OyAjKAogICAgKikK
ICAgICAgc2VkIC1uICIvXltfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKj0vcCIK
ICAgICAgOzsKICAgIGVzYWMgfAogICAgc29ydAopCiAgICBlY2hvCgogICAgJGFzX2VjaG8gIiMj
IC0tLS0tLS0tLS0tLS0tLS0tICMjCiMjIE91dHB1dCB2YXJpYWJsZXMuICMjCiMjIC0tLS0tLS0t
LS0tLS0tLS0tICMjIgogICAgZWNobwogICAgZm9yIGFjX3ZhciBpbiAkYWNfc3Vic3RfdmFycwog
ICAgZG8KICAgICAgZXZhbCBhY192YWw9XCQkYWNfdmFyCiAgICAgIGNhc2UgJGFjX3ZhbCBpbgog
ICAgICAqXCdcJycqKSBhY192YWw9YCRhc19lY2hvICIkYWNfdmFsIiB8IHNlZCAicy8nXCcnLydc
JydcXFxcXFxcXCdcJycnXCcnL2ciYDs7CiAgICAgIGVzYWMKICAgICAgJGFzX2VjaG8gIiRhY192
YXI9J1wnJyRhY192YWwnXCcnIgogICAgZG9uZSB8IHNvcnQKICAgIGVjaG8KCiAgICBpZiB0ZXN0
IC1uICIkYWNfc3Vic3RfZmlsZXMiOyB0aGVuCiAgICAgICRhc19lY2hvICIjIyAtLS0tLS0tLS0t
LS0tLS0tLS0tICMjCiMjIEZpbGUgc3Vic3RpdHV0aW9ucy4gIyMKIyMgLS0tLS0tLS0tLS0tLS0t
LS0tLSAjIyIKICAgICAgZWNobwogICAgICBmb3IgYWNfdmFyIGluICRhY19zdWJzdF9maWxlcwog
ICAgICBkbwoJZXZhbCBhY192YWw9XCQkYWNfdmFyCgljYXNlICRhY192YWwgaW4KCSpcJ1wnJyop
IGFjX3ZhbD1gJGFzX2VjaG8gIiRhY192YWwiIHwgc2VkICJzLydcJycvJ1wnJ1xcXFxcXFxcJ1wn
JydcJycvZyJgOzsKCWVzYWMKCSRhc19lY2hvICIkYWNfdmFyPSdcJyckYWNfdmFsJ1wnJyIKICAg
ICAgZG9uZSB8IHNvcnQKICAgICAgZWNobwogICAgZmkKCiAgICBpZiB0ZXN0IC1zIGNvbmZkZWZz
Lmg7IHRoZW4KICAgICAgJGFzX2VjaG8gIiMjIC0tLS0tLS0tLS0tICMjCiMjIGNvbmZkZWZzLmgu
ICMjCiMjIC0tLS0tLS0tLS0tICMjIgogICAgICBlY2hvCiAgICAgIGNhdCBjb25mZGVmcy5oCiAg
ICAgIGVjaG8KICAgIGZpCiAgICB0ZXN0ICIkYWNfc2lnbmFsIiAhPSAwICYmCiAgICAgICRhc19l
Y2hvICIkYXNfbWU6IGNhdWdodCBzaWduYWwgJGFjX3NpZ25hbCIKICAgICRhc19lY2hvICIkYXNf
bWU6IGV4aXQgJGV4aXRfc3RhdHVzIgogIH0gPiY1CiAgcm0gLWYgY29yZSAqLmNvcmUgY29yZS5j
b25mdGVzdC4qICYmCiAgICBybSAtZiAtciBjb25mdGVzdCogY29uZmRlZnMqIGNvbmYkJCogJGFj
X2NsZWFuX2ZpbGVzICYmCiAgICBleGl0ICRleGl0X3N0YXR1cwonIDAKZm9yIGFjX3NpZ25hbCBp
biAxIDIgMTMgMTU7IGRvCiAgdHJhcCAnYWNfc2lnbmFsPSckYWNfc2lnbmFsJzsgYXNfZm5fZXhp
dCAxJyAkYWNfc2lnbmFsCmRvbmUKYWNfc2lnbmFsPTAKCiMgY29uZmRlZnMuaCBhdm9pZHMgT1Mg
Y29tbWFuZCBsaW5lIGxlbmd0aCBsaW1pdHMgdGhhdCBERUZTIGNhbiBleGNlZWQuCnJtIC1mIC1y
IGNvbmZ0ZXN0KiBjb25mZGVmcy5oCgokYXNfZWNobyAiLyogY29uZmRlZnMuaCAqLyIgPiBjb25m
ZGVmcy5oCgojIFByZWRlZmluZWQgcHJlcHJvY2Vzc29yIHZhcmlhYmxlcy4KCmNhdCA+PmNvbmZk
ZWZzLmggPDxfQUNFT0YKI2RlZmluZSBQQUNLQUdFX05BTUUgIiRQQUNLQUdFX05BTUUiCl9BQ0VP
RgoKY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAiJFBB
Q0tBR0VfVEFSTkFNRSIKX0FDRU9GCgpjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUg
UEFDS0FHRV9WRVJTSU9OICIkUEFDS0FHRV9WRVJTSU9OIgpfQUNFT0YKCmNhdCA+PmNvbmZkZWZz
LmggPDxfQUNFT0YKI2RlZmluZSBQQUNLQUdFX1NUUklORyAiJFBBQ0tBR0VfU1RSSU5HIgpfQUNF
T0YKCmNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAi
JFBBQ0tBR0VfQlVHUkVQT1JUIgpfQUNFT0YKCmNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2Rl
ZmluZSBQQUNLQUdFX1VSTCAiJFBBQ0tBR0VfVVJMIgpfQUNFT0YKCgojIExldCB0aGUgc2l0ZSBm
aWxlIHNlbGVjdCBhbiBhbHRlcm5hdGUgY2FjaGUgZmlsZSBpZiBpdCB3YW50cyB0by4KIyBQcmVm
ZXIgYW4gZXhwbGljaXRseSBzZWxlY3RlZCBmaWxlIHRvIGF1dG9tYXRpY2FsbHkgc2VsZWN0ZWQg
b25lcy4KYWNfc2l0ZV9maWxlMT1OT05FCmFjX3NpdGVfZmlsZTI9Tk9ORQppZiB0ZXN0IC1uICIk
Q09ORklHX1NJVEUiOyB0aGVuCiAgIyBXZSBkbyBub3Qgd2FudCBhIFBBVEggc2VhcmNoIGZvciBj
b25maWcuc2l0ZS4KICBjYXNlICRDT05GSUdfU0lURSBpbiAjKCgKICAgIC0qKSAgYWNfc2l0ZV9m
aWxlMT0uLyRDT05GSUdfU0lURTs7CiAgICAqLyopIGFjX3NpdGVfZmlsZTE9JENPTkZJR19TSVRF
OzsKICAgICopICAgYWNfc2l0ZV9maWxlMT0uLyRDT05GSUdfU0lURTs7CiAgZXNhYwplbGlmIHRl
c3QgIngkcHJlZml4IiAhPSB4Tk9ORTsgdGhlbgogIGFjX3NpdGVfZmlsZTE9JHByZWZpeC9zaGFy
ZS9jb25maWcuc2l0ZQogIGFjX3NpdGVfZmlsZTI9JHByZWZpeC9ldGMvY29uZmlnLnNpdGUKZWxz
ZQogIGFjX3NpdGVfZmlsZTE9JGFjX2RlZmF1bHRfcHJlZml4L3NoYXJlL2NvbmZpZy5zaXRlCiAg
YWNfc2l0ZV9maWxlMj0kYWNfZGVmYXVsdF9wcmVmaXgvZXRjL2NvbmZpZy5zaXRlCmZpCmZvciBh
Y19zaXRlX2ZpbGUgaW4gIiRhY19zaXRlX2ZpbGUxIiAiJGFjX3NpdGVfZmlsZTIiCmRvCiAgdGVz
dCAieCRhY19zaXRlX2ZpbGUiID0geE5PTkUgJiYgY29udGludWUKICBpZiB0ZXN0IC9kZXYvbnVs
bCAhPSAiJGFjX3NpdGVfZmlsZSIgJiYgdGVzdCAtciAiJGFjX3NpdGVfZmlsZSI7IHRoZW4KICAg
IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogbG9hZGluZyBzaXRlIHNj
cmlwdCAkYWNfc2l0ZV9maWxlIiA+JjUKJGFzX2VjaG8gIiRhc19tZTogbG9hZGluZyBzaXRlIHNj
cmlwdCAkYWNfc2l0ZV9maWxlIiA+JjY7fQogICAgc2VkICdzL14vfCAvJyAiJGFjX3NpdGVfZmls
ZSIgPiY1CiAgICAuICIkYWNfc2l0ZV9maWxlIiBcCiAgICAgIHx8IHsgeyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQokYXNf
ZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9CmFzX2ZuX2Vycm9yICQ/
ICJmYWlsZWQgdG8gbG9hZCBzaXRlIHNjcmlwdCAkYWNfc2l0ZV9maWxlClNlZSBcYGNvbmZpZy5s
b2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CiAgZmkKZG9uZQoKaWYgdGVzdCAt
ciAiJGNhY2hlX2ZpbGUiOyB0aGVuCiAgIyBTb21lIHZlcnNpb25zIG9mIGJhc2ggd2lsbCBmYWls
IHRvIHNvdXJjZSAvZGV2L251bGwgKHNwZWNpYWwgZmlsZXMKICAjIGFjdHVhbGx5KSwgc28gd2Ug
YXZvaWQgZG9pbmcgdGhhdC4gIERKR1BQIGVtdWxhdGVzIGl0IGFzIGEgcmVndWxhciBmaWxlLgog
IGlmIHRlc3QgL2Rldi9udWxsICE9ICIkY2FjaGVfZmlsZSIgJiYgdGVzdCAtZiAiJGNhY2hlX2Zp
bGUiOyB0aGVuCiAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGxv
YWRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNQokYXNfZWNobyAiJGFzX21lOiBsb2FkaW5nIGNh
Y2hlICRjYWNoZV9maWxlIiA+JjY7fQogICAgY2FzZSAkY2FjaGVfZmlsZSBpbgogICAgICBbXFwv
XSogfCA/OltcXC9dKiApIC4gIiRjYWNoZV9maWxlIjs7CiAgICAgICopICAgICAgICAgICAgICAg
ICAgICAgIC4gIi4vJGNhY2hlX2ZpbGUiOzsKICAgIGVzYWMKICBmaQplbHNlCiAgeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjcmVhdGluZyBjYWNoZSAkY2FjaGVfZmls
ZSIgPiY1CiRhc19lY2hvICIkYXNfbWU6IGNyZWF0aW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjY7
fQogID4kY2FjaGVfZmlsZQpmaQoKZ2xfZnVuY19saXN0PSIkZ2xfZnVuY19saXN0IGZjaGRpciIK
Z2xfaGVhZGVyX2xpc3Q9IiRnbF9oZWFkZXJfbGlzdCBkaXJlbnQuaCIKZ2xfZnVuY19saXN0PSIk
Z2xfZnVuY19saXN0IGZjbnRsIgpnbF9oZWFkZXJfbGlzdD0iJGdsX2hlYWRlcl9saXN0IHVuaXN0
ZC5oIgpnbF9mdW5jX2xpc3Q9IiRnbF9mdW5jX2xpc3Qgc3ltbGluayIKZ2xfZnVuY19saXN0PSIk
Z2xfZnVuY19saXN0IF9zZXRfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlciIKZ2xfaGVhZGVyX2xp
c3Q9IiRnbF9oZWFkZXJfbGlzdCBzeXMvc3RhdC5oIgpnbF9oZWFkZXJfbGlzdD0iJGdsX2hlYWRl
cl9saXN0IHN5cy9wYXJhbS5oIgpnbF9mdW5jX2xpc3Q9IiRnbF9mdW5jX2xpc3QgZ2V0bG9naW5f
ciIKZ2xfZ2V0b3B0X3JlcXVpcmVkPUdOVQpnbF9oZWFkZXJfbGlzdD0iJGdsX2hlYWRlcl9saXN0
IGdldG9wdC5oIgpnbF9oZWFkZXJfbGlzdD0iJGdsX2hlYWRlcl9saXN0IHN5cy90aW1lLmgiCmds
X2hlYWRlcl9saXN0PSIkZ2xfaGVhZGVyX2xpc3Qgc3lzL3NvY2tldC5oIgpnbF9mdW5jX2xpc3Q9
IiRnbF9mdW5jX2xpc3QgZ2V0dGltZW9mZGF5IgpnbF9oZWFkZXJfbGlzdD0iJGdsX2hlYWRlcl9s
aXN0IHN5cy9tbWFuLmgiCmdsX2Z1bmNfbGlzdD0iJGdsX2Z1bmNfbGlzdCBtcHJvdGVjdCIKZ2xf
ZnVuY19saXN0PSIkZ2xfZnVuY19saXN0IG1rc3RlbXAiCmdsX2Z1bmNfbGlzdD0iJGdsX2Z1bmNf
bGlzdCBvYnN0YWNrX3ByaW50ZiIKZ2xfZnVuY19saXN0PSIkZ2xfZnVuY19saXN0IGxzdGF0Igpn
bF9wcmludGZfc2FmZT15ZXMKZ2xfZnVuY19saXN0PSIkZ2xfZnVuY19saXN0IHJlYWRsaW5rIgpn
bF9mdW5jX2xpc3Q9IiRnbF9mdW5jX2xpc3Qgc2lnYWN0aW9uIgpnbF9mdW5jX2xpc3Q9IiRnbF9m
dW5jX2xpc3Qgc2lnYWx0c3RhY2siCmdsX2Z1bmNfbGlzdD0iJGdsX2Z1bmNfbGlzdCBzaWdpbnRl
cnJ1cHQiCmdsX2Z1bmNfbGlzdD0iJGdsX2Z1bmNfbGlzdCBzbnByaW50ZiIKZ2xfZnVuY19saXN0
PSIkZ2xfZnVuY19saXN0IHZhc25wcmludGYiCmdsX2hlYWRlcl9saXN0PSIkZ2xfaGVhZGVyX2xp
c3QgZmVhdHVyZXMuaCIKZ2xfaGVhZGVyX2xpc3Q9IiRnbF9oZWFkZXJfbGlzdCB3Y2hhci5oIgpn
bF9oZWFkZXJfbGlzdD0iJGdsX2hlYWRlcl9saXN0IHN0ZGludC5oIgpnbF9oZWFkZXJfbGlzdD0i
JGdsX2hlYWRlcl9saXN0IHN5cy93YWl0LmgiCmdsX2Z1bmNfbGlzdD0iJGdsX2Z1bmNfbGlzdCBs
b2NhbHRpbWVfciIKZ2xfZnVuY19saXN0PSIkZ2xfZnVuY19saXN0IHBpcGUiCmdsX2Z1bmNfbGlz
dD0iJGdsX2Z1bmNfbGlzdCBmZG9wZW5kaXIiCmdsX2Z1bmNfbGlzdD0iJGdsX2Z1bmNfbGlzdCBt
ZW1wY3B5IgpnbF9mdW5jX2xpc3Q9IiRnbF9mdW5jX2xpc3QgZnN0YXRhdCIKZ2xfZnVuY19saXN0
PSIkZ2xfZnVuY19saXN0IGdldGR0YWJsZXNpemUiCmdsX2hlYWRlcl9saXN0PSIkZ2xfaGVhZGVy
X2xpc3QgbWF0aC5oIgpnbF9mdW5jX2xpc3Q9IiRnbF9mdW5jX2xpc3Qgb3BlbmF0IgpnbF9mdW5j
X2xpc3Q9IiRnbF9mdW5jX2xpc3Qgc2VjdXJlX2dldGVudiIKZ2xfZnVuY19saXN0PSIkZ2xfZnVu
Y19saXN0IHN0cmR1cCIKZ2xfaGVhZGVyX2xpc3Q9IiRnbF9oZWFkZXJfbGlzdCBsaW1pdHMuaCIK
Z2xfaGVhZGVyX2xpc3Q9IiRnbF9oZWFkZXJfbGlzdCBtYWNoL21hY2guaCIKZ2xfaGVhZGVyX2xp
c3Q9IiRnbF9oZWFkZXJfbGlzdCBuZXQvZXJybm8uaCIKZ2xfaGVhZGVyX2xpc3Q9IiRnbF9oZWFk
ZXJfbGlzdCBwd2QuaCIKZ2xfaGVhZGVyX2xpc3Q9IiRnbF9oZWFkZXJfbGlzdCBzaWdpbmZvLmgi
CmdsX2hlYWRlcl9saXN0PSIkZ2xfaGVhZGVyX2xpc3QgdXRpbWUuaCIKZ2xfZnVuY19saXN0PSIk
Z2xfZnVuY19saXN0IGZjaG1vZCIKZ2xfZnVuY19saXN0PSIkZ2xfZnVuY19saXN0IGZ0cnVuY2F0
ZSIKZ2xfZnVuY19saXN0PSIkZ2xfZnVuY19saXN0IGdldHB3dWlkX3IiCmdsX2Z1bmNfbGlzdD0i
JGdsX2Z1bmNfbGlzdCBwc2lnaW5mbyIKIyBDaGVjayB0aGF0IHRoZSBwcmVjaW91cyB2YXJpYWJs
ZXMgc2F2ZWQgaW4gdGhlIGNhY2hlIGhhdmUga2VwdCB0aGUgc2FtZQojIHZhbHVlLgphY19jYWNo
ZV9jb3JydXB0ZWQ9ZmFsc2UKZm9yIGFjX3ZhciBpbiAkYWNfcHJlY2lvdXNfdmFyczsgZG8KICBl
dmFsIGFjX29sZF9zZXQ9XCRhY19jdl9lbnZfJHthY192YXJ9X3NldAogIGV2YWwgYWNfbmV3X3Nl
dD1cJGFjX2Vudl8ke2FjX3Zhcn1fc2V0CiAgZXZhbCBhY19vbGRfdmFsPVwkYWNfY3ZfZW52XyR7
YWNfdmFyfV92YWx1ZQogIGV2YWwgYWNfbmV3X3ZhbD1cJGFjX2Vudl8ke2FjX3Zhcn1fdmFsdWUK
ICBjYXNlICRhY19vbGRfc2V0LCRhY19uZXdfc2V0IGluCiAgICBzZXQsKQogICAgICB7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBcYCRhY192YXInIHdhcyBz
ZXQgdG8gXGAkYWNfb2xkX3ZhbCcgaW4gdGhlIHByZXZpb3VzIHJ1biIgPiY1CiRhc19lY2hvICIk
YXNfbWU6IGVycm9yOiBcYCRhY192YXInIHdhcyBzZXQgdG8gXGAkYWNfb2xkX3ZhbCcgaW4gdGhl
IHByZXZpb3VzIHJ1biIgPiYyO30KICAgICAgYWNfY2FjaGVfY29ycnVwdGVkPTogOzsKICAgICxz
ZXQpCiAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6
IFxgJGFjX3Zhcicgd2FzIG5vdCBzZXQgaW4gdGhlIHByZXZpb3VzIHJ1biIgPiY1CiRhc19lY2hv
ICIkYXNfbWU6IGVycm9yOiBcYCRhY192YXInIHdhcyBub3Qgc2V0IGluIHRoZSBwcmV2aW91cyBy
dW4iID4mMjt9CiAgICAgIGFjX2NhY2hlX2NvcnJ1cHRlZD06IDs7CiAgICAsKTs7CiAgICAqKQog
ICAgICBpZiB0ZXN0ICJ4JGFjX29sZF92YWwiICE9ICJ4JGFjX25ld192YWwiOyB0aGVuCgkjIGRp
ZmZlcmVuY2VzIGluIHdoaXRlc3BhY2UgZG8gbm90IGxlYWQgdG8gZmFpbHVyZS4KCWFjX29sZF92
YWxfdz1gZWNobyB4ICRhY19vbGRfdmFsYAoJYWNfbmV3X3ZhbF93PWBlY2hvIHggJGFjX25ld192
YWxgCglpZiB0ZXN0ICIkYWNfb2xkX3ZhbF93IiAhPSAiJGFjX25ld192YWxfdyI7IHRoZW4KCSAg
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogXGAkYWNfdmFy
JyBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiY1CiRhc19lY2hvICIkYXNf
bWU6IGVycm9yOiBcYCRhY192YXInIGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBydW46
IiA+JjI7fQoJICBhY19jYWNoZV9jb3JydXB0ZWQ9OgoJZWxzZQoJICB7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IHdhcm5pbmc6IGlnbm9yaW5nIHdoaXRlc3BhY2UgY2hh
bmdlcyBpbiBcYCRhY192YXInIHNpbmNlIHRoZSBwcmV2aW91cyBydW46IiA+JjUKJGFzX2VjaG8g
IiRhc19tZTogd2FybmluZzogaWdub3Jpbmcgd2hpdGVzcGFjZSBjaGFuZ2VzIGluIFxgJGFjX3Zh
cicgc2luY2UgdGhlIHByZXZpb3VzIHJ1bjoiID4mMjt9CgkgIGV2YWwgJGFjX3Zhcj1cJGFjX29s
ZF92YWwKCWZpCgl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICAgZm9y
bWVyIHZhbHVlOiAgXGAkYWNfb2xkX3ZhbCciID4mNQokYXNfZWNobyAiJGFzX21lOiAgIGZvcm1l
ciB2YWx1ZTogIFxgJGFjX29sZF92YWwnIiA+JjI7fQoJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiAgIGN1cnJlbnQgdmFsdWU6IFxgJGFjX25ld192YWwnIiA+JjUKJGFz
X2VjaG8gIiRhc19tZTogICBjdXJyZW50IHZhbHVlOiBcYCRhY19uZXdfdmFsJyIgPiYyO30KICAg
ICAgZmk7OwogIGVzYWMKICAjIFBhc3MgcHJlY2lvdXMgdmFyaWFibGVzIHRvIGNvbmZpZy5zdGF0
dXMuCiAgaWYgdGVzdCAiJGFjX25ld19zZXQiID0gc2V0OyB0aGVuCiAgICBjYXNlICRhY19uZXdf
dmFsIGluCiAgICAqXCcqKSBhY19hcmc9JGFjX3Zhcj1gJGFzX2VjaG8gIiRhY19uZXdfdmFsIiB8
IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYCA7OwogICAgKikgYWNfYXJnPSRhY192YXI9JGFjX25l
d192YWwgOzsKICAgIGVzYWMKICAgIGNhc2UgIiAkYWNfY29uZmlndXJlX2FyZ3MgIiBpbgogICAg
ICAqIiAnJGFjX2FyZycgIiopIDs7ICMgQXZvaWQgZHVwcy4gIFVzZSBvZiBxdW90ZXMgZW5zdXJl
cyBhY2N1cmFjeS4KICAgICAgKikgYXNfZm5fYXBwZW5kIGFjX2NvbmZpZ3VyZV9hcmdzICIgJyRh
Y19hcmcnIiA7OwogICAgZXNhYwogIGZpCmRvbmUKaWYgJGFjX2NhY2hlX2NvcnJ1cHRlZDsgdGhl
bgogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxg
JGFjX3B3ZCc6IiA+JjUKJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+
JjI7fQogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGNo
YW5nZXMgaW4gdGhlIGVudmlyb25tZW50IGNhbiBjb21wcm9taXNlIHRoZSBidWlsZCIgPiY1CiRh
c19lY2hvICIkYXNfbWU6IGVycm9yOiBjaGFuZ2VzIGluIHRoZSBlbnZpcm9ubWVudCBjYW4gY29t
cHJvbWlzZSB0aGUgYnVpbGQiID4mMjt9CiAgYXNfZm5fZXJyb3IgJD8gInJ1biBcYG1ha2UgZGlz
dGNsZWFuJyBhbmQvb3IgXGBybSAkY2FjaGVfZmlsZScgYW5kIHN0YXJ0IG92ZXIiICIkTElORU5P
IiA1CmZpCiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCiMjIE1haW4gYm9keSBvZiBzY3JpcHQu
ICMjCiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCgphY19leHQ9YwphY19jcHA9JyRDUFAgJENQ
UEZMQUdTJwphY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFj
X2V4dCA+JjUnCmFjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQ
RkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCmFjX2NvbXBpbGVyX2du
dT0kYWNfY3ZfY19jb21waWxlcl9nbnUKCgphY19jb25maWdfaGVhZGVycz0iJGFjX2NvbmZpZ19o
ZWFkZXJzIGxpYi9jb25maWcuaCIKCmFjX2F1eF9kaXI9CmZvciBhY19kaXIgaW4gYnVpbGQtYXV4
ICIkc3JjZGlyIi9idWlsZC1hdXg7IGRvCiAgaWYgdGVzdCAtZiAiJGFjX2Rpci9pbnN0YWxsLXNo
IjsgdGhlbgogICAgYWNfYXV4X2Rpcj0kYWNfZGlyCiAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4
X2Rpci9pbnN0YWxsLXNoIC1jIgogICAgYnJlYWsKICBlbGlmIHRlc3QgLWYgIiRhY19kaXIvaW5z
dGFsbC5zaCI7IHRoZW4KICAgIGFjX2F1eF9kaXI9JGFjX2RpcgogICAgYWNfaW5zdGFsbF9zaD0i
JGFjX2F1eF9kaXIvaW5zdGFsbC5zaCAtYyIKICAgIGJyZWFrCiAgZWxpZiB0ZXN0IC1mICIkYWNf
ZGlyL3NodG9vbCI7IHRoZW4KICAgIGFjX2F1eF9kaXI9JGFjX2RpcgogICAgYWNfaW5zdGFsbF9z
aD0iJGFjX2F1eF9kaXIvc2h0b29sIGluc3RhbGwgLWMiCiAgICBicmVhawogIGZpCmRvbmUKaWYg
dGVzdCAteiAiJGFjX2F1eF9kaXIiOyB0aGVuCiAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBmaW5k
IGluc3RhbGwtc2gsIGluc3RhbGwuc2gsIG9yIHNodG9vbCBpbiBidWlsZC1hdXggXCIkc3JjZGly
XCIvYnVpbGQtYXV4IiAiJExJTkVOTyIgNQpmaQoKIyBUaGVzZSB0aHJlZSB2YXJpYWJsZXMgYXJl
IHVuZG9jdW1lbnRlZCBhbmQgdW5zdXBwb3J0ZWQsCiMgYW5kIGFyZSBpbnRlbmRlZCB0byBiZSB3
aXRoZHJhd24gaW4gYSBmdXR1cmUgQXV0b2NvbmYgcmVsZWFzZS4KIyBUaGV5IGNhbiBjYXVzZSBz
ZXJpb3VzIHByb2JsZW1zIGlmIGEgYnVpbGRlcidzIHNvdXJjZSB0cmVlIGlzIGluIGEgZGlyZWN0
b3J5CiMgd2hvc2UgZnVsbCBuYW1lIGNvbnRhaW5zIHVudXN1YWwgY2hhcmFjdGVycy4KYWNfY29u
ZmlnX2d1ZXNzPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLmd1ZXNzIiAgIyBQbGVhc2UgZG9u
J3QgdXNlIHRoaXMgdmFyLgphY19jb25maWdfc3ViPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmln
LnN1YiIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzIHZhci4KYWNfY29uZmlndXJlPSIkU0hFTEwg
JGFjX2F1eF9kaXIvY29uZmlndXJlIiAgIyBQbGVhc2UgZG9uJ3QgdXNlIHRoaXMgdmFyLgoKCmFt
X19hcGlfdmVyc2lvbj0nMS4xMycKCiMgRmluZCBhIGdvb2QgaW5zdGFsbCBwcm9ncmFtLiAgV2Ug
cHJlZmVyIGEgQyBwcm9ncmFtIChmYXN0ZXIpLAojIHNvIG9uZSBzY3JpcHQgaXMgYXMgZ29vZCBh
cyBhbm90aGVyLiAgQnV0IGF2b2lkIHRoZSBicm9rZW4gb3IKIyBpbmNvbXBhdGlibGUgdmVyc2lv
bnM6CiMgU3lzViAvZXRjL2luc3RhbGwsIC91c3Ivc2Jpbi9pbnN0YWxsCiMgU3VuT1MgL3Vzci9l
dGMvaW5zdGFsbAojIElSSVggL3NiaW4vaW5zdGFsbAojIEFJWCAvYmluL2luc3RhbGwKIyBBbWln
YU9TIC9DL2luc3RhbGwsIHdoaWNoIGluc3RhbGxzIGJvb3RibG9ja3Mgb24gZmxvcHB5IGRpc2Nz
CiMgQUlYIDQgL3Vzci9iaW4vaW5zdGFsbGJzZCwgd2hpY2ggZG9lc24ndCB3b3JrIHdpdGhvdXQg
YSAtZyBmbGFnCiMgQUZTIC91c3IvYWZzd3MvYmluL2luc3RhbGwsIHdoaWNoIG1pc2hhbmRsZXMg
bm9uZXhpc3RlbnQgYXJncwojIFNWUjQgL3Vzci91Y2IvaW5zdGFsbCwgd2hpY2ggdHJpZXMgdG8g
dXNlIHRoZSBub25leGlzdGVudCBncm91cCAic3RhZmYiCiMgT1MvMidzIHN5c3RlbSBpbnN0YWxs
LCB3aGljaCBoYXMgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBzZW1hbnRpYwojIC4vaW5zdGFsbCwg
d2hpY2ggY2FuIGJlIGVycm9uZW91c2x5IGNyZWF0ZWQgYnkgbWFrZSBmcm9tIC4vaW5zdGFsbC5z
aC4KIyBSZWplY3QgaW5zdGFsbCBwcm9ncmFtcyB0aGF0IGNhbm5vdCBpbnN0YWxsIG11bHRpcGxl
IGZpbGVzLgp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5n
IGZvciBhIEJTRC1jb21wYXRpYmxlIGluc3RhbGwiID4mNQokYXNfZWNob19uICJjaGVja2luZyBm
b3IgYSBCU0QtY29tcGF0aWJsZSBpbnN0YWxsLi4uICIgPiY2OyB9CmlmIHRlc3QgLXogIiRJTlNU
QUxMIjsgdGhlbgppZiAke2FjX2N2X3BhdGhfaW5zdGFsbCs6fSBmYWxzZTsgdGhlbiA6CiAgJGFz
X2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFU
SF9TRVBBUkFUT1IKZm9yIGFzX2RpciBpbiAkUEFUSApkbwogIElGUz0kYXNfc2F2ZV9JRlMKICB0
ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgIyBBY2NvdW50IGZvciBwZW9wbGUgd2hv
IHB1dCB0cmFpbGluZyBzbGFzaGVzIGluIFBBVEggZWxlbWVudHMuCmNhc2UgJGFzX2Rpci8gaW4g
IygoCiAgLi8gfCAuLy8gfCAvW2NDXS8qIHwgXAogIC9ldGMvKiB8IC91c3Ivc2Jpbi8qIHwgL3Vz
ci9ldGMvKiB8IC9zYmluLyogfCAvdXNyL2Fmc3dzL2Jpbi8qIHwgXAogID86W1xcL11vczJbXFwv
XWluc3RhbGxbXFwvXSogfCA/OltcXC9dT1MyW1xcL11JTlNUQUxMW1xcL10qIHwgXAogIC91c3Iv
dWNiLyogKSA7OwogICopCiAgICAjIE9TRjEgYW5kIFNDTyBPRFQgMy4wIGhhdmUgdGhlaXIgb3du
IG5hbWVzIGZvciBpbnN0YWxsLgogICAgIyBEb24ndCB1c2UgaW5zdGFsbGJzZCBmcm9tIE9TRiBz
aW5jZSBpdCBpbnN0YWxscyBzdHVmZiBhcyByb290CiAgICAjIGJ5IGRlZmF1bHQuCiAgICBmb3Ig
YWNfcHJvZyBpbiBnaW5zdGFsbCBzY29pbnN0IGluc3RhbGw7IGRvCiAgICAgIGZvciBhY19leGVj
X2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwoJaWYgYXNfZm5fZXhlY3V0
YWJsZV9wICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IjsgdGhlbgoJICBpZiB0ZXN0ICRh
Y19wcm9nID0gaW5zdGFsbCAmJgoJICAgIGdyZXAgZHNwbXNnICIkYXNfZGlyLyRhY19wcm9nJGFj
X2V4ZWNfZXh0IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KCSAgICAjIEFJWCBpbnN0YWxsLiAgSXQg
aGFzIGFuIGluY29tcGF0aWJsZSBjYWxsaW5nIGNvbnZlbnRpb24uCgkgICAgOgoJICBlbGlmIHRl
c3QgJGFjX3Byb2cgPSBpbnN0YWxsICYmCgkgICAgZ3JlcCBwd3BsdXMgIiRhc19kaXIvJGFjX3By
b2ckYWNfZXhlY19leHQiID4vZGV2L251bGwgMj4mMTsgdGhlbgoJICAgICMgcHJvZ3JhbS1zcGVj
aWZpYyBpbnN0YWxsIHNjcmlwdCB1c2VkIGJ5IEhQIHB3cGx1cy0tZG9uJ3QgdXNlLgoJICAgIDoK
CSAgZWxzZQoJICAgIHJtIC1yZiBjb25mdGVzdC5vbmUgY29uZnRlc3QudHdvIGNvbmZ0ZXN0LmRp
cgoJICAgIGVjaG8gb25lID4gY29uZnRlc3Qub25lCgkgICAgZWNobyB0d28gPiBjb25mdGVzdC50
d28KCSAgICBta2RpciBjb25mdGVzdC5kaXIKCSAgICBpZiAiJGFzX2Rpci8kYWNfcHJvZyRhY19l
eGVjX2V4dCIgLWMgY29uZnRlc3Qub25lIGNvbmZ0ZXN0LnR3byAiYHB3ZGAvY29uZnRlc3QuZGly
IiAmJgoJICAgICAgdGVzdCAtcyBjb25mdGVzdC5vbmUgJiYgdGVzdCAtcyBjb25mdGVzdC50d28g
JiYKCSAgICAgIHRlc3QgLXMgY29uZnRlc3QuZGlyL2NvbmZ0ZXN0Lm9uZSAmJgoJICAgICAgdGVz
dCAtcyBjb25mdGVzdC5kaXIvY29uZnRlc3QudHdvCgkgICAgdGhlbgoJICAgICAgYWNfY3ZfcGF0
aF9pbnN0YWxsPSIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IC1jIgoJICAgICAgYnJlYWsg
MwoJICAgIGZpCgkgIGZpCglmaQogICAgICBkb25lCiAgICBkb25lCiAgICA7Owplc2FjCgogIGRv
bmUKSUZTPSRhc19zYXZlX0lGUwoKcm0gLXJmIGNvbmZ0ZXN0Lm9uZSBjb25mdGVzdC50d28gY29u
ZnRlc3QuZGlyCgpmaQogIGlmIHRlc3QgIiR7YWNfY3ZfcGF0aF9pbnN0YWxsK3NldH0iID0gc2V0
OyB0aGVuCiAgICBJTlNUQUxMPSRhY19jdl9wYXRoX2luc3RhbGwKICBlbHNlCiAgICAjIEFzIGEg
bGFzdCByZXNvcnQsIHVzZSB0aGUgc2xvdyBzaGVsbCBzY3JpcHQuICBEb24ndCBjYWNoZSBhCiAg
ICAjIHZhbHVlIGZvciBJTlNUQUxMIHdpdGhpbiBhIHNvdXJjZSBkaXJlY3RvcnksIGJlY2F1c2Ug
dGhhdCB3aWxsCiAgICAjIGJyZWFrIG90aGVyIHBhY2thZ2VzIHVzaW5nIHRoZSBjYWNoZSBpZiB0
aGF0IGRpcmVjdG9yeSBpcwogICAgIyByZW1vdmVkLCBvciBpZiB0aGUgdmFsdWUgaXMgYSByZWxh
dGl2ZSBuYW1lLgogICAgSU5TVEFMTD0kYWNfaW5zdGFsbF9zaAogIGZpCmZpCnsgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkSU5TVEFMTCIgPiY1CiRhc19l
Y2hvICIkSU5TVEFMTCIgPiY2OyB9CgojIFVzZSB0ZXN0IC16IGJlY2F1c2UgU3VuT1M0IHNoIG1p
c2hhbmRsZXMgYnJhY2VzIGluICR7dmFyLXZhbH0uCiMgSXQgdGhpbmtzIHRoZSBmaXJzdCBjbG9z
ZSBicmFjZSBlbmRzIHRoZSB2YXJpYWJsZSBzdWJzdGl0dXRpb24uCnRlc3QgLXogIiRJTlNUQUxM
X1BST0dSQU0iICYmIElOU1RBTExfUFJPR1JBTT0nJHtJTlNUQUxMfScKCnRlc3QgLXogIiRJTlNU
QUxMX1NDUklQVCIgJiYgSU5TVEFMTF9TQ1JJUFQ9JyR7SU5TVEFMTH0nCgp0ZXN0IC16ICIkSU5T
VEFMTF9EQVRBIiAmJiBJTlNUQUxMX0RBVEE9JyR7SU5TVEFMTH0gLW0gNjQ0JwoKeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGJ1aWxkIGVu
dmlyb25tZW50IGlzIHNhbmUiID4mNQokYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIGJ1aWxk
IGVudmlyb25tZW50IGlzIHNhbmUuLi4gIiA+JjY7IH0KIyBSZWplY3QgdW5zYWZlIGNoYXJhY3Rl
cnMgaW4gJHNyY2RpciBvciB0aGUgYWJzb2x1dGUgd29ya2luZyBkaXJlY3RvcnkKIyBuYW1lLiAg
QWNjZXB0IHNwYWNlIGFuZCB0YWIgb25seSBpbiB0aGUgbGF0dGVyLgphbV9sZj0nCicKY2FzZSBg
cHdkYCBpbgogICpbXFxcIlwjXCRcJlwnXGAkYW1fbGZdKikKICAgIGFzX2ZuX2Vycm9yICQ/ICJ1
bnNhZmUgYWJzb2x1dGUgd29ya2luZyBkaXJlY3RvcnkgbmFtZSIgIiRMSU5FTk8iIDU7Owplc2Fj
CmNhc2UgJHNyY2RpciBpbgogICpbXFxcIlwjXCRcJlwnXGAkYW1fbGZcIFwJXSopCiAgICBhc19m
bl9lcnJvciAkPyAidW5zYWZlIHNyY2RpciB2YWx1ZTogJyRzcmNkaXInIiAiJExJTkVOTyIgNTs7
CmVzYWMKCiMgRG8gJ3NldCcgaW4gYSBzdWJzaGVsbCBzbyB3ZSBkb24ndCBjbG9iYmVyIHRoZSBj
dXJyZW50IHNoZWxsJ3MKIyBhcmd1bWVudHMuICBNdXN0IHRyeSAtTCBmaXJzdCBpbiBjYXNlIGNv
bmZpZ3VyZSBpcyBhY3R1YWxseSBhCiMgc3ltbGluazsgc29tZSBzeXN0ZW1zIHBsYXkgd2VpcmQg
Z2FtZXMgd2l0aCB0aGUgbW9kIHRpbWUgb2Ygc3ltbGlua3MKIyAoZWcgRnJlZUJTRCByZXR1cm5z
IHRoZSBtb2QgdGltZSBvZiB0aGUgc3ltbGluaydzIGNvbnRhaW5pbmcKIyBkaXJlY3RvcnkpLgpp
ZiAoCiAgIGFtX2hhc19zbGVwdD1ubwogICBmb3IgYW1fdHJ5IGluIDEgMjsgZG8KICAgICBlY2hv
ICJ0aW1lc3RhbXAsIHNsZXB0OiAkYW1faGFzX3NsZXB0IiA+IGNvbmZ0ZXN0LmZpbGUKICAgICBz
ZXQgWCBgbHMgLUx0ICIkc3JjZGlyL2NvbmZpZ3VyZSIgY29uZnRlc3QuZmlsZSAyPiAvZGV2L251
bGxgCiAgICAgaWYgdGVzdCAiJCoiID0gIlgiOyB0aGVuCgkjIC1MIGRpZG4ndCB3b3JrLgoJc2V0
IFggYGxzIC10ICIkc3JjZGlyL2NvbmZpZ3VyZSIgY29uZnRlc3QuZmlsZWAKICAgICBmaQogICAg
IGlmIHRlc3QgIiQqIiAhPSAiWCAkc3JjZGlyL2NvbmZpZ3VyZSBjb25mdGVzdC5maWxlIiBcCgkm
JiB0ZXN0ICIkKiIgIT0gIlggY29uZnRlc3QuZmlsZSAkc3JjZGlyL2NvbmZpZ3VyZSI7IHRoZW4K
CgkjIElmIG5laXRoZXIgbWF0Y2hlZCwgdGhlbiB3ZSBoYXZlIGEgYnJva2VuIGxzLiAgVGhpcyBj
YW4gaGFwcGVuCgkjIGlmLCBmb3IgaW5zdGFuY2UsIENPTkZJR19TSEVMTCBpcyBiYXNoIGFuZCBp
dCBpbmhlcml0cyBhCgkjIGJyb2tlbiBscyBhbGlhcyBmcm9tIHRoZSBlbnZpcm9ubWVudC4gIFRo
aXMgaGFzIGFjdHVhbGx5CgkjIGhhcHBlbmVkLiAgU3VjaCBhIHN5c3RlbSBjb3VsZCBub3QgYmUg
Y29uc2lkZXJlZCAic2FuZSIuCglhc19mbl9lcnJvciAkPyAibHMgLXQgYXBwZWFycyB0byBmYWls
LiAgTWFrZSBzdXJlIHRoZXJlIGlzIG5vdCBhIGJyb2tlbgogIGFsaWFzIGluIHlvdXIgZW52aXJv
bm1lbnQiICIkTElORU5PIiA1CiAgICAgZmkKICAgICBpZiB0ZXN0ICIkMiIgPSBjb25mdGVzdC5m
aWxlIHx8IHRlc3QgJGFtX3RyeSAtZXEgMjsgdGhlbgogICAgICAgYnJlYWsKICAgICBmaQogICAg
ICMgSnVzdCBpbiBjYXNlLgogICAgIHNsZWVwIDEKICAgICBhbV9oYXNfc2xlcHQ9eWVzCiAgIGRv
bmUKICAgdGVzdCAiJDIiID0gY29uZnRlc3QuZmlsZQogICApCnRoZW4KICAgIyBPay4KICAgOgpl
bHNlCiAgIGFzX2ZuX2Vycm9yICQ/ICJuZXdseSBjcmVhdGVkIGZpbGUgaXMgb2xkZXIgdGhhbiBk
aXN0cmlidXRlZCBmaWxlcyEKQ2hlY2sgeW91ciBzeXN0ZW0gY2xvY2siICIkTElORU5PIiA1CmZp
CnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4m
NQokYXNfZWNobyAieWVzIiA+JjY7IH0KIyBJZiB3ZSBkaWRuJ3Qgc2xlZXAsIHdlIHN0aWxsIG5l
ZWQgdG8gZW5zdXJlIHRpbWUgc3RhbXBzIG9mIGNvbmZpZy5zdGF0dXMgYW5kCiMgZ2VuZXJhdGVk
IGZpbGVzIGFyZSBzdHJpY3RseSBuZXdlci4KYW1fc2xlZXBfcGlkPQppZiBncmVwICdzbGVwdDog
bm8nIGNvbmZ0ZXN0LmZpbGUgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgKCBzbGVlcCAxICkgJgog
IGFtX3NsZWVwX3BpZD0kIQpmaQoKcm0gLWYgY29uZnRlc3QuZmlsZQoKdGVzdCAiJHByb2dyYW1f
cHJlZml4IiAhPSBOT05FICYmCiAgcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT0icyZeJiRwcm9ncmFt
X3ByZWZpeCY7JHByb2dyYW1fdHJhbnNmb3JtX25hbWUiCiMgVXNlIGEgZG91YmxlICQgc28gbWFr
ZSBpZ25vcmVzIGl0Lgp0ZXN0ICIkcHJvZ3JhbV9zdWZmaXgiICE9IE5PTkUgJiYKICBwcm9ncmFt
X3RyYW5zZm9ybV9uYW1lPSJzJlwkJiRwcm9ncmFtX3N1ZmZpeCY7JHByb2dyYW1fdHJhbnNmb3Jt
X25hbWUiCiMgRG91YmxlIGFueSBcIG9yICQuCiMgQnkgZGVmYXVsdCB3YXMgYHMseCx4JywgcmVt
b3ZlIGl0IGlmIHVzZWxlc3MuCmFjX3NjcmlwdD0ncy9bXFwkXS8mJi9nO3MvO3MseCx4LCQvLycK
cHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT1gJGFzX2VjaG8gIiRwcm9ncmFtX3RyYW5zZm9ybV9uYW1l
IiB8IHNlZCAiJGFjX3NjcmlwdCJgCgojIGV4cGFuZCAkYWNfYXV4X2RpciB0byBhbiBhYnNvbHV0
ZSBwYXRoCmFtX2F1eF9kaXI9YGNkICRhY19hdXhfZGlyICYmIHB3ZGAKCmlmIHRlc3QgeCIke01J
U1NJTkcrc2V0fSIgIT0geHNldDsgdGhlbgogIGNhc2UgJGFtX2F1eF9kaXIgaW4KICAqXCAqIHwg
KlwJKikKICAgIE1JU1NJTkc9Ilwke1NIRUxMfSBcIiRhbV9hdXhfZGlyL21pc3NpbmdcIiIgOzsK
ICAqKQogICAgTUlTU0lORz0iXCR7U0hFTEx9ICRhbV9hdXhfZGlyL21pc3NpbmciIDs7CiAgZXNh
YwpmaQojIFVzZSBldmFsIHRvIGV4cGFuZCAkU0hFTEwKaWYgZXZhbCAiJE1JU1NJTkcgLS1pcy1s
aWdodHdlaWdodCI7IHRoZW4KICBhbV9taXNzaW5nX3J1bj0iJE1JU1NJTkcgIgplbHNlCiAgYW1f
bWlzc2luZ19ydW49CiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBX
QVJOSU5HOiAnbWlzc2luZycgc2NyaXB0IGlzIHRvbyBvbGQgb3IgbWlzc2luZyIgPiY1CiRhc19l
Y2hvICIkYXNfbWU6IFdBUk5JTkc6ICdtaXNzaW5nJyBzY3JpcHQgaXMgdG9vIG9sZCBvciBtaXNz
aW5nIiA+JjI7fQpmaQoKaWYgdGVzdCB4IiR7aW5zdGFsbF9zaH0iICE9IHhzZXQ7IHRoZW4KICBj
YXNlICRhbV9hdXhfZGlyIGluCiAgKlwgKiB8ICpcCSopCiAgICBpbnN0YWxsX3NoPSJcJHtTSEVM
TH0gJyRhbV9hdXhfZGlyL2luc3RhbGwtc2gnIiA7OwogICopCiAgICBpbnN0YWxsX3NoPSJcJHtT
SEVMTH0gJGFtX2F1eF9kaXIvaW5zdGFsbC1zaCIKICBlc2FjCmZpCgojIEluc3RhbGxlZCBiaW5h
cmllcyBhcmUgdXN1YWxseSBzdHJpcHBlZCB1c2luZyAnc3RyaXAnIHdoZW4gdGhlIHVzZXIKIyBy
dW4gIm1ha2UgaW5zdGFsbC1zdHJpcCIuICBIb3dldmVyICdzdHJpcCcgbWlnaHQgbm90IGJlIHRo
ZSByaWdodAojIHRvb2wgdG8gdXNlIGluIGNyb3NzLWNvbXBpbGF0aW9uIGVudmlyb25tZW50cywg
dGhlcmVmb3JlIEF1dG9tYWtlCiMgd2lsbCBob25vciB0aGUgJ1NUUklQJyBlbnZpcm9ubWVudCB2
YXJpYWJsZSB0byBvdmVycnVsZSB0aGlzIHByb2dyYW0uCmlmIHRlc3QgIiRjcm9zc19jb21waWxp
bmciICE9IG5vOyB0aGVuCiAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgogICMg
RXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1zdHJpcCIsIHNvIGl0
IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCnNldCBkdW1teSAke2FjX3Rvb2xfcHJl
Zml4fXN0cmlwOyBhY193b3JkPSQyCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9y
ICRhY193b3JkLi4uICIgPiY2OyB9CmlmICR7YWNfY3ZfcHJvZ19TVFJJUCs6fSBmYWxzZTsgdGhl
biA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIGlmIHRlc3QgLW4gIiRTVFJJ
UCI7IHRoZW4KICBhY19jdl9wcm9nX1NUUklQPSIkU1RSSVAiICMgTGV0IHRoZSB1c2VyIG92ZXJy
aWRlIHRoZSB0ZXN0LgplbHNlCmFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IK
Zm9yIGFzX2RpciBpbiAkUEFUSApkbwogIElGUz0kYXNfc2F2ZV9JRlMKICB0ZXN0IC16ICIkYXNf
ZGlyIiAmJiBhc19kaXI9LgogICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxl
X2V4dGVuc2lvbnM7IGRvCiAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3Jk
JGFjX2V4ZWNfZXh0IjsgdGhlbgogICAgYWNfY3ZfcHJvZ19TVFJJUD0iJHthY190b29sX3ByZWZp
eH1zdHJpcCIKICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5k
ICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgYnJlYWsgMgogIGZpCmRvbmUK
ICBkb25lCklGUz0kYXNfc2F2ZV9JRlMKCmZpCmZpClNUUklQPSRhY19jdl9wcm9nX1NUUklQCmlm
IHRlc3QgLW4gIiRTVFJJUCI7IHRoZW4KICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IHJlc3VsdDogJFNUUklQIiA+JjUKJGFzX2VjaG8gIiRTVFJJUCIgPiY2OyB9CmVs
c2UKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8i
ID4mNQokYXNfZWNobyAibm8iID4mNjsgfQpmaQoKCmZpCmlmIHRlc3QgLXogIiRhY19jdl9wcm9n
X1NUUklQIjsgdGhlbgogIGFjX2N0X1NUUklQPSRTVFJJUAogICMgRXh0cmFjdCB0aGUgZmlyc3Qg
d29yZCBvZiAic3RyaXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgpz
ZXQgZHVtbXkgc3RyaXA7IGFjX3dvcmQ9JDIKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQokYXNfZWNob19uICJjaGVja2lu
ZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KaWYgJHthY19jdl9wcm9nX2FjX2N0X1NUUklQKzp9
IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCiAgaWYgdGVz
dCAtbiAiJGFjX2N0X1NUUklQIjsgdGhlbgogIGFjX2N2X3Byb2dfYWNfY3RfU1RSSVA9IiRhY19j
dF9TVFJJUCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCmVsc2UKYXNfc2F2ZV9J
RlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgpmb3IgYXNfZGlyIGluICRQQVRICmRvCiAgSUZT
PSRhc19zYXZlX0lGUwogIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICBmb3IgYWNf
ZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KICBpZiBhc19mbl9l
eGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiAgICBhY19j
dl9wcm9nX2FjX2N0X1NUUklQPSJzdHJpcCIKICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAg
YnJlYWsgMgogIGZpCmRvbmUKICBkb25lCklGUz0kYXNfc2F2ZV9JRlMKCmZpCmZpCmFjX2N0X1NU
UklQPSRhY19jdl9wcm9nX2FjX2N0X1NUUklQCmlmIHRlc3QgLW4gIiRhY19jdF9TVFJJUCI7IHRo
ZW4KICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFj
X2N0X1NUUklQIiA+JjUKJGFzX2VjaG8gIiRhY19jdF9TVFJJUCIgPiY2OyB9CmVsc2UKICB7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQokYXNf
ZWNobyAibm8iID4mNjsgfQpmaQoKICBpZiB0ZXN0ICJ4JGFjX2N0X1NUUklQIiA9IHg7IHRoZW4K
ICAgIFNUUklQPSI6IgogIGVsc2UKICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93
YXJuZWQgaW4KeWVzOikKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBX
QVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQi
ID4mNQokYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJl
Zml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CmFjX3Rvb2xfd2FybmVkPXllcyA7Owplc2Fj
CiAgICBTVFJJUD0kYWNfY3RfU1RSSVAKICBmaQplbHNlCiAgU1RSSVA9IiRhY19jdl9wcm9nX1NU
UklQIgpmaQoKZmkKSU5TVEFMTF9TVFJJUF9QUk9HUkFNPSJcJChpbnN0YWxsX3NoKSAtYyAtcyIK
CnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGEg
dGhyZWFkLXNhZmUgbWtkaXIgLXAiID4mNQokYXNfZWNob19uICJjaGVja2luZyBmb3IgYSB0aHJl
YWQtc2FmZSBta2RpciAtcC4uLiAiID4mNjsgfQppZiB0ZXN0IC16ICIkTUtESVJfUCI7IHRoZW4K
ICBpZiAke2FjX2N2X3BhdGhfbWtkaXIrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihj
YWNoZWQpICIgPiY2CmVsc2UKICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9S
CmZvciBhc19kaXIgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1Ivb3B0L3Nmdy9iaW4KZG8KICBJRlM9
JGFzX3NhdmVfSUZTCiAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgIGZvciBhY19w
cm9nIGluIG1rZGlyIGdta2RpcjsgZG8KCSBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1
dGFibGVfZXh0ZW5zaW9uczsgZG8KCSAgIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNf
cHJvZyRhY19leGVjX2V4dCIgfHwgY29udGludWUKCSAgIGNhc2UgYCIkYXNfZGlyLyRhY19wcm9n
JGFjX2V4ZWNfZXh0IiAtLXZlcnNpb24gMj4mMWAgaW4gIygKCSAgICAgJ21rZGlyIChHTlUgY29y
ZXV0aWxzKSAnKiB8IFwKCSAgICAgJ21rZGlyIChjb3JldXRpbHMpICcqIHwgXAoJICAgICAnbWtk
aXIgKGZpbGV1dGlscykgJzQuMSopCgkgICAgICAgYWNfY3ZfcGF0aF9ta2Rpcj0kYXNfZGlyLyRh
Y19wcm9nJGFjX2V4ZWNfZXh0CgkgICAgICAgYnJlYWsgMzs7CgkgICBlc2FjCgkgZG9uZQogICAg
ICAgZG9uZQogIGRvbmUKSUZTPSRhc19zYXZlX0lGUwoKZmkKCiAgdGVzdCAtZCAuLy0tdmVyc2lv
biAmJiBybWRpciAuLy0tdmVyc2lvbgogIGlmIHRlc3QgIiR7YWNfY3ZfcGF0aF9ta2RpcitzZXR9
IiA9IHNldDsgdGhlbgogICAgTUtESVJfUD0iJGFjX2N2X3BhdGhfbWtkaXIgLXAiCiAgZWxzZQog
ICAgIyBBcyBhIGxhc3QgcmVzb3J0LCB1c2UgdGhlIHNsb3cgc2hlbGwgc2NyaXB0LiAgRG9uJ3Qg
Y2FjaGUgYQogICAgIyB2YWx1ZSBmb3IgTUtESVJfUCB3aXRoaW4gYSBzb3VyY2UgZGlyZWN0b3J5
LCBiZWNhdXNlIHRoYXQgd2lsbAogICAgIyBicmVhayBvdGhlciBwYWNrYWdlcyB1c2luZyB0aGUg
Y2FjaGUgaWYgdGhhdCBkaXJlY3RvcnkgaXMKICAgICMgcmVtb3ZlZCwgb3IgaWYgdGhlIHZhbHVl
IGlzIGEgcmVsYXRpdmUgbmFtZS4KICAgIE1LRElSX1A9IiRhY19pbnN0YWxsX3NoIC1kIgogIGZp
CmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUtE
SVJfUCIgPiY1CiRhc19lY2hvICIkTUtESVJfUCIgPiY2OyB9Cgpmb3IgYWNfcHJvZyBpbiBnYXdr
IG1hd2sgbmF3ayBhd2sKZG8KICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9n
Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4Kc2V0IGR1bW15ICRhY19w
cm9nOyBhY193b3JkPSQyCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
Y2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193
b3JkLi4uICIgPiY2OyB9CmlmICR7YWNfY3ZfcHJvZ19BV0srOn0gZmFsc2U7IHRoZW4gOgogICRh
c19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKICBpZiB0ZXN0IC1uICIkQVdLIjsgdGhlbgog
IGFjX2N2X3Byb2dfQVdLPSIkQVdLIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4K
ZWxzZQphc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCmZvciBhc19kaXIgaW4g
JFBBVEgKZG8KICBJRlM9JGFzX3NhdmVfSUZTCiAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGly
PS4KICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBk
bwogIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7
IHRoZW4KICAgIGFjX2N2X3Byb2dfQVdLPSIkYWNfcHJvZyIKICAgICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQi
ID4mNQogICAgYnJlYWsgMgogIGZpCmRvbmUKICBkb25lCklGUz0kYXNfc2F2ZV9JRlMKCmZpCmZp
CkFXSz0kYWNfY3ZfcHJvZ19BV0sKaWYgdGVzdCAtbiAiJEFXSyI7IHRoZW4KICB7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJEFXSyIgPiY1CiRhc19lY2hv
ICIkQVdLIiA+JjY7IH0KZWxzZQogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogcmVzdWx0OiBubyIgPiY1CiRhc19lY2hvICJubyIgPiY2OyB9CmZpCgoKICB0ZXN0IC1u
ICIkQVdLIiAmJiBicmVhawpkb25lCgp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IGNoZWNraW5nIHdoZXRoZXIgJHtNQUtFLW1ha2V9IHNldHMgXCQoTUFLRSkiID4mNQok
YXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyICR7TUFLRS1tYWtlfSBzZXRzIFwkKE1BS0UpLi4u
ICIgPiY2OyB9CnNldCB4ICR7TUFLRS1tYWtlfQphY19tYWtlPWAkYXNfZWNobyAiJDIiIHwgc2Vk
ICdzLysvcC9nOyBzL1teYS16QS1aMC05X10vXy9nJ2AKaWYgZXZhbCBcJHthY19jdl9wcm9nX21h
a2VfJHthY19tYWtlfV9zZXQrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQp
ICIgPiY2CmVsc2UKICBjYXQgPmNvbmZ0ZXN0Lm1ha2UgPDxcX0FDRU9GClNIRUxMID0gL2Jpbi9z
aAphbGw6CglAZWNobyAnQEBAJSUlPSQoTUFLRSk9QEBAJSUlJwpfQUNFT0YKIyBHTlUgbWFrZSBz
b21ldGltZXMgcHJpbnRzICJtYWtlWzFdOiBFbnRlcmluZyAuLi4iLCB3aGljaCB3b3VsZCBjb25m
dXNlIHVzLgpjYXNlIGAke01BS0UtbWFrZX0gLWYgY29uZnRlc3QubWFrZSAyPi9kZXYvbnVsbGAg
aW4KICAqQEBAJSUlPT8qPUBAQCUlJSopCiAgICBldmFsIGFjX2N2X3Byb2dfbWFrZV8ke2FjX21h
a2V9X3NldD15ZXM7OwogICopCiAgICBldmFsIGFjX2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9X3Nl
dD1ubzs7CmVzYWMKcm0gLWYgY29uZnRlc3QubWFrZQpmaQppZiBldmFsIHRlc3QgXCRhY19jdl9w
cm9nX21ha2VfJHthY19tYWtlfV9zZXQgPSB5ZXM7IHRoZW4KICB7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKJGFzX2VjaG8gInllcyIgPiY2
OyB9CiAgU0VUX01BS0U9CmVsc2UKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogbm8iID4mNQokYXNfZWNobyAibm8iID4mNjsgfQogIFNFVF9NQUtFPSJN
QUtFPSR7TUFLRS1tYWtlfSIKZmkKCnJtIC1yZiAudHN0IDI+L2Rldi9udWxsCm1rZGlyIC50c3Qg
Mj4vZGV2L251bGwKaWYgdGVzdCAtZCAudHN0OyB0aGVuCiAgYW1fX2xlYWRpbmdfZG90PS4KZWxz
ZQogIGFtX19sZWFkaW5nX2RvdD1fCmZpCnJtZGlyIC50c3QgMj4vZGV2L251bGwKCiMgQ2hlY2sg
d2hldGhlciAtLWVuYWJsZS1zaWxlbnQtcnVsZXMgd2FzIGdpdmVuLgppZiB0ZXN0ICIke2VuYWJs
ZV9zaWxlbnRfcnVsZXMrc2V0fSIgPSBzZXQ7IHRoZW4gOgogIGVuYWJsZXZhbD0kZW5hYmxlX3Np
bGVudF9ydWxlczsKZmkKCmNhc2UgJGVuYWJsZV9zaWxlbnRfcnVsZXMgaW4gIyAoKCgKICB5ZXMp
IEFNX0RFRkFVTFRfVkVSQk9TSVRZPTA7OwogICBubykgQU1fREVGQVVMVF9WRVJCT1NJVFk9MTs7
CiAgICAqKSBBTV9ERUZBVUxUX1ZFUkJPU0lUWT0xOzsKZXNhYwphbV9tYWtlPSR7TUFLRS1tYWtl
fQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRo
ZXIgJGFtX21ha2Ugc3VwcG9ydHMgbmVzdGVkIHZhcmlhYmxlcyIgPiY1CiRhc19lY2hvX24gImNo
ZWNraW5nIHdoZXRoZXIgJGFtX21ha2Ugc3VwcG9ydHMgbmVzdGVkIHZhcmlhYmxlcy4uLiAiID4m
NjsgfQppZiAke2FtX2N2X21ha2Vfc3VwcG9ydF9uZXN0ZWRfdmFyaWFibGVzKzp9IGZhbHNlOyB0
aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCiAgaWYgJGFzX2VjaG8gJ1RS
VUU9JChCQVIkKFYpKQpCQVIwPWZhbHNlCkJBUjE9dHJ1ZQpWPTEKYW1fX2RvaXQ6CglAJChUUlVF
KQouUEhPTlk6IGFtX19kb2l0JyB8ICRhbV9tYWtlIC1mIC0gPi9kZXYvbnVsbCAyPiYxOyB0aGVu
CiAgYW1fY3ZfbWFrZV9zdXBwb3J0X25lc3RlZF92YXJpYWJsZXM9eWVzCmVsc2UKICBhbV9jdl9t
YWtlX3N1cHBvcnRfbmVzdGVkX3ZhcmlhYmxlcz1ubwpmaQpmaQp7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFtX2N2X21ha2Vfc3VwcG9ydF9uZXN0ZWRf
dmFyaWFibGVzIiA+JjUKJGFzX2VjaG8gIiRhbV9jdl9tYWtlX3N1cHBvcnRfbmVzdGVkX3Zhcmlh
YmxlcyIgPiY2OyB9CmlmIHRlc3QgJGFtX2N2X21ha2Vfc3VwcG9ydF9uZXN0ZWRfdmFyaWFibGVz
ID0geWVzOyB0aGVuCiAgICBBTV9WPSckKFYpJwogIEFNX0RFRkFVTFRfVj0nJChBTV9ERUZBVUxU
X1ZFUkJPU0lUWSknCmVsc2UKICBBTV9WPSRBTV9ERUZBVUxUX1ZFUkJPU0lUWQogIEFNX0RFRkFV
TFRfVj0kQU1fREVGQVVMVF9WRVJCT1NJVFkKZmkKQU1fQkFDS1NMQVNIPSdcJwoKaWYgdGVzdCAi
YGNkICRzcmNkaXIgJiYgcHdkYCIgIT0gImBwd2RgIjsgdGhlbgogICMgVXNlIC1JJChzcmNkaXIp
IG9ubHkgd2hlbiAkKHNyY2RpcikgIT0gLiwgc28gdGhhdCBtYWtlJ3Mgb3V0cHV0CiAgIyBpcyBu
b3QgcG9sbHV0ZWQgd2l0aCByZXBlYXRlZCAiLUkuIgogIGFtX19pc3JjPScgLUkkKHNyY2Rpcikn
CiAgIyB0ZXN0IHRvIHNlZSBpZiBzcmNkaXIgYWxyZWFkeSBjb25maWd1cmVkCiAgaWYgdGVzdCAt
ZiAkc3JjZGlyL2NvbmZpZy5zdGF0dXM7IHRoZW4KICAgIGFzX2ZuX2Vycm9yICQ/ICJzb3VyY2Ug
ZGlyZWN0b3J5IGFscmVhZHkgY29uZmlndXJlZDsgcnVuIFwibWFrZSBkaXN0Y2xlYW5cIiB0aGVy
ZSBmaXJzdCIgIiRMSU5FTk8iIDUKICBmaQpmaQoKIyB0ZXN0IHdoZXRoZXIgd2UgaGF2ZSBjeWdw
YXRoCmlmIHRlc3QgLXogIiRDWUdQQVRIX1ciOyB0aGVuCiAgaWYgKGN5Z3BhdGggLS12ZXJzaW9u
KSA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuCiAgICBDWUdQQVRIX1c9J2N5Z3BhdGggLXcn
CiAgZWxzZQogICAgQ1lHUEFUSF9XPWVjaG8KICBmaQpmaQoKCiMgRGVmaW5lIHRoZSBpZGVudGl0
eSBvZiB0aGUgcGFja2FnZS4KIFBBQ0tBR0U9J3JjcycKIFZFUlNJT049JzUuOC4yJwoKCiMgU29t
ZSB0b29scyBBdXRvbWFrZSBuZWVkcy4KCkFDTE9DQUw9JHtBQ0xPQ0FMLSIke2FtX21pc3Npbmdf
cnVufWFjbG9jYWwtJHthbV9fYXBpX3ZlcnNpb259In0KCgpBVVRPQ09ORj0ke0FVVE9DT05GLSIk
e2FtX21pc3NpbmdfcnVufWF1dG9jb25mIn0KCgpBVVRPTUFLRT0ke0FVVE9NQUtFLSIke2FtX21p
c3NpbmdfcnVufWF1dG9tYWtlLSR7YW1fX2FwaV92ZXJzaW9ufSJ9CgoKQVVUT0hFQURFUj0ke0FV
VE9IRUFERVItIiR7YW1fbWlzc2luZ19ydW59YXV0b2hlYWRlciJ9CgoKTUFLRUlORk89JHtNQUtF
SU5GTy0iJHthbV9taXNzaW5nX3J1bn1tYWtlaW5mbyJ9CgojIEZvciBiZXR0ZXIgYmFja3dhcmQg
Y29tcGF0aWJpbGl0eS4gIFRvIGJlIHJlbW92ZWQgb25jZSBBdXRvbWFrZSAxLjkueAojIGRpZXMg
b3V0IGZvciBnb29kLiAgRm9yIG1vcmUgYmFja2dyb3VuZCwgc2VlOgojIDxodHRwOi8vbGlzdHMu
Z251Lm9yZy9hcmNoaXZlL2h0bWwvYXV0b21ha2UvMjAxMi0wNy9tc2cwMDAwMS5odG1sPgojIDxo
dHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYXV0b21ha2UvMjAxMi0wNy9tc2cwMDAx
NC5odG1sPgpta2Rpcl9wPSckKE1LRElSX1ApJwoKIyBXZSBuZWVkIGF3ayBmb3IgdGhlICJjaGVj
ayIgdGFyZ2V0LiAgVGhlIHN5c3RlbSAiYXdrIiBpcyBiYWQgb24KIyBzb21lIHBsYXRmb3Jtcy4K
IyBBbHdheXMgZGVmaW5lIEFNVEFSIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiAgWWVzLCBp
dCdzIHN0aWxsIHVzZWQKIyBpbiB0aGUgd2lsZCA6LSggIFdlIHNob3VsZCBmaW5kIGEgcHJvcGVy
IHdheSB0byBkZXByZWNhdGUgaXQgLi4uCkFNVEFSPSckJHtUQVItdGFyfScKCmFtX190YXI9JyQk
e1RBUi10YXJ9IGNob2YgLSAiJCR0YXJkaXIiJyBhbV9fdW50YXI9JyQke1RBUi10YXJ9IHhmIC0n
CgoKCgoKY2FzZSAkUEFDS0FHRV9WRVJTSU9OIGluICMoCiAgKi4qLiopIDoKICAgIHByZXRlc3Rf
cD15ZXMgOzsgIygKICAqKSA6CiAgICBwcmV0ZXN0X3A9bm8gOzsKZXNhYwoKIyBzeW50YXggdGVy
cm9ycwoKCgoKCgoKCiMgLS1lbmFibGUsIC0td2l0aAoKIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxl
LWNvdmVyYWdlIHdhcyBnaXZlbi4KaWYgdGVzdCAiJHtlbmFibGVfY292ZXJhZ2Urc2V0fSIgPSBz
ZXQ7IHRoZW4gOgogIGVuYWJsZXZhbD0kZW5hYmxlX2NvdmVyYWdlOwplbHNlCiAgZW5hYmxlX2Nv
dmVyYWdlPW5vCmZpCgoKIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWNvbXBhdDIgd2FzIGdpdmVu
LgppZiB0ZXN0ICIke2VuYWJsZV9jb21wYXQyK3NldH0iID0gc2V0OyB0aGVuIDoKICBlbmFibGV2
YWw9JGVuYWJsZV9jb21wYXQyOwplbHNlCiAgZW5hYmxlX2NvbXBhdDI9bm8KZmkKCmlmIHRlc3Qg
eWVzID0gJGVuYWJsZV9jb21wYXQyOyB0aGVuIDoKICBjYm9vbD0xCmVsc2UKICBjYm9vbD0wCmZp
CgpjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgQ09NUEFUMiAkY2Jvb2wKX0FDRU9G
CgoKCiMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbWFpbGVyIHdhcyBnaXZlbi4KaWYgdGVzdCAiJHt3
aXRoX21haWxlcitzZXR9IiA9IHNldDsgdGhlbiA6CiAgd2l0aHZhbD0kd2l0aF9tYWlsZXI7CmVs
c2UKICB3aXRoX21haWxlcj1ubwpmaQoKaWYgdGVzdCBubyA9ICIkd2l0aF9tYWlsZXIiOyB0aGVu
IDoKICA6CmVsc2UKClNFTkRNQUlMPSIkd2l0aF9tYWlsZXIiCnNhdmVfU0VORE1BSUw9JFNFTkRN
QUlMCiMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJFtdU0VORE1BSUwiLCBzbyBpdCBjYW4g
YmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgpzZXQgZHVtbXkgJFNFTkRNQUlMOyBhY193b3Jk
PSQyCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y
ICRhY193b3JkIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2
OyB9CmlmICR7YWNfY3ZfcGF0aF9TRU5ETUFJTCs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9f
biAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIGNhc2UgJFNFTkRNQUlMIGluCiAgW1xcL10qIHwgPzpb
XFwvXSopCiAgYWNfY3ZfcGF0aF9TRU5ETUFJTD0iJFNFTkRNQUlMIiAjIExldCB0aGUgdXNlciBv
dmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KICA7OwogICopCiAgYXNfc2F2ZV9JRlM9JElG
UzsgSUZTPSRQQVRIX1NFUEFSQVRPUgpmb3IgYXNfZGlyIGluICRQQVRICmRvCiAgSUZTPSRhc19z
YXZlX0lGUwogIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICBmb3IgYWNfZXhlY19l
eHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KICBpZiBhc19mbl9leGVjdXRh
YmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiAgICBhY19jdl9wYXRo
X1NFTkRNQUlMPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgogICAgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVj
X2V4dCIgPiY1CiAgICBicmVhayAyCiAgZmkKZG9uZQogIGRvbmUKSUZTPSRhc19zYXZlX0lGUwoK
ICB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9TRU5ETUFJTCIgJiYgYWNfY3ZfcGF0aF9TRU5ETUFJTD0i
bm8iCiAgOzsKZXNhYwpmaQpTRU5ETUFJTD0kYWNfY3ZfcGF0aF9TRU5ETUFJTAppZiB0ZXN0IC1u
ICIkU0VORE1BSUwiOyB0aGVuCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiByZXN1bHQ6ICRTRU5ETUFJTCIgPiY1CiRhc19lY2hvICIkU0VORE1BSUwiID4mNjsgfQpl
bHNlCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5v
IiA+JjUKJGFzX2VjaG8gIm5vIiA+JjY7IH0KZmkKCgppZiB0ZXN0IC16ICIkU0VORE1BSUwiIHx8
IHRlc3Qgbm8gPSAiJFNFTkRNQUlMIjsgdGhlbiA6CiAgYXNfZm5fZXJyb3IgJD8gIkNvdWxkIG5v
dCBmaW5kIGFic29sdXRlIG5hbWUgb2YgbWFpbGVyIHByb2dyYW06ICRzYXZlX1NFTkRNQUlMIiAi
JExJTkVOTyIgNQpmaQoKCmNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBTRU5ETUFJ
TCAiJFNFTkRNQUlMIgpfQUNFT0YKCgoKZmkKCiMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1tbWFw
IHdhcyBnaXZlbi4KaWYgdGVzdCAiJHtlbmFibGVfbW1hcCtzZXR9IiA9IHNldDsgdGhlbiA6CiAg
ZW5hYmxldmFsPSRlbmFibGVfbW1hcDsgdXNlX21tYXA9JGVuYWJsZXZhbAplbHNlCiAgdXNlX21t
YXA9eWVzCmZpCgoKIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXN1aWQgd2FzIGdpdmVuLgppZiB0
ZXN0ICIke2VuYWJsZV9zdWlkK3NldH0iID0gc2V0OyB0aGVuIDoKICBlbmFibGV2YWw9JGVuYWJs
ZV9zdWlkOyA6CmVsc2UKICBlbmFibGVfc3VpZD15ZXMKZmkKCgojIFNldCB1cCBzaW1wbGUgYGRp
ZmYnIHRlc3QuCmVjaG8gMCA+Y29uZnRlc3QwCmVjaG8gMCA+Y29uZnRlc3QwYwplY2hvIDEgPmNv
bmZ0ZXN0MQp7IGVjaG8gZDEgMSA7IGVjaG8gYTEgMSA7IGVjaG8gMSA7IH0gPmNvbmZ0ZXN0b2sK
CiMgU2V0IERJRkYgdG8gdGhlIG5hbWUgb2YgdGhlIGBkaWZmJyBwcm9ncmFtIHRvIGJlIHJ1bi4K
CgoKc2FuZV9kaWZmPW5vCmlmIHRlc3QgIiRESUZGIjsgdGhlbiA6CiAgaWYgdGVzdCB5ZXMgPSAi
JHNhbmVfZGlmZiI7IHRoZW4gOgogIDoKZWxzZQoKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkRElGRiB3b3JrcyBsaWtlIEdOVSBkaWZmIiA+JjUK
JGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJERJRkYgd29ya3MgbGlrZSBHTlUgZGlmZi4uLiAiID4m
NjsgfQppZiAke3Jjc19jdl9zYW5lX0RJRkYrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24g
IihjYWNoZWQpICIgPiY2CmVsc2UKCiAgcmNzX2N2X3NhbmVfRElGRj1ubwogIHNoIC1jICJleGVj
ICRESUZGIC1uIGNvbmZ0ZXN0MCBjb25mdGVzdDEiID5jb25mdGVzdG91dCAyPi9kZXYvbnVsbAog
IHRlc3QgMSA9ICQ/ICYmIGNtcCAtcyBjb25mdGVzdG9rIGNvbmZ0ZXN0b3V0CiAgcnY9JD8KaWYg
dGVzdCAwID0gJHJ2OyB0aGVuIDoKICByY3NfY3Zfc2FuZV9ESUZGPXllcwplbHNlCiAgcmNzX2N2
X3NhbmVfRElGRj1ubwpmaQphc19mbl9zZXRfc3RhdHVzICRydgoKCmZpCnsgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkcmNzX2N2X3NhbmVfRElGRiIgPiY1
CiRhc19lY2hvICIkcmNzX2N2X3NhbmVfRElGRiIgPiY2OyB9CmlmIHRlc3QgeWVzID0gIiRyY3Nf
Y3Zfc2FuZV9ESUZGIjsgdGhlbiA6CgogIHNhbmVfZGlmZj15ZXMKICBESUZGPSRESUZGCgpmaQpm
aQpmaQoKaWYgdGVzdCB5ZXMgPSAiJHNhbmVfZGlmZiI7IHRoZW4gOgogIDoKZWxzZQoKeyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiBnZGlmZiB3b3Jr
cyBsaWtlIEdOVSBkaWZmIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgZ2RpZmYgd29ya3Mg
bGlrZSBHTlUgZGlmZi4uLiAiID4mNjsgfQppZiAke3Jjc19jdl9zYW5lX2dkaWZmKzp9IGZhbHNl
OyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCgogIHJjc19jdl9zYW5l
X2dkaWZmPW5vCiAgc2ggLWMgImV4ZWMgZ2RpZmYgLW4gY29uZnRlc3QwIGNvbmZ0ZXN0MSIgPmNv
bmZ0ZXN0b3V0IDI+L2Rldi9udWxsCiAgdGVzdCAxID0gJD8gJiYgY21wIC1zIGNvbmZ0ZXN0b2sg
Y29uZnRlc3RvdXQKICBydj0kPwppZiB0ZXN0IDAgPSAkcnY7IHRoZW4gOgogIHJjc19jdl9zYW5l
X2dkaWZmPXllcwplbHNlCiAgcmNzX2N2X3NhbmVfZ2RpZmY9bm8KZmkKYXNfZm5fc2V0X3N0YXR1
cyAkcnYKCgpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs
dDogJHJjc19jdl9zYW5lX2dkaWZmIiA+JjUKJGFzX2VjaG8gIiRyY3NfY3Zfc2FuZV9nZGlmZiIg
PiY2OyB9CmlmIHRlc3QgeWVzID0gIiRyY3NfY3Zfc2FuZV9nZGlmZiI7IHRoZW4gOgoKICBzYW5l
X2RpZmY9eWVzCiAgRElGRj1nZGlmZgoKZmkKZmkKCmlmIHRlc3QgeWVzID0gIiRzYW5lX2RpZmYi
OyB0aGVuIDoKICA6CmVsc2UKCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogY2hlY2tpbmcgaWYgcmRpZmYgd29ya3MgbGlrZSBHTlUgZGlmZiIgPiY1CiRhc19lY2hvX24g
ImNoZWNraW5nIGlmIHJkaWZmIHdvcmtzIGxpa2UgR05VIGRpZmYuLi4gIiA+JjY7IH0KaWYgJHty
Y3NfY3Zfc2FuZV9yZGlmZis6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkg
IiA+JjYKZWxzZQoKICByY3NfY3Zfc2FuZV9yZGlmZj1ubwogIHNoIC1jICJleGVjIHJkaWZmIC1u
IGNvbmZ0ZXN0MCBjb25mdGVzdDEiID5jb25mdGVzdG91dCAyPi9kZXYvbnVsbAogIHRlc3QgMSA9
ICQ/ICYmIGNtcCAtcyBjb25mdGVzdG9rIGNvbmZ0ZXN0b3V0CiAgcnY9JD8KaWYgdGVzdCAwID0g
JHJ2OyB0aGVuIDoKICByY3NfY3Zfc2FuZV9yZGlmZj15ZXMKZWxzZQogIHJjc19jdl9zYW5lX3Jk
aWZmPW5vCmZpCmFzX2ZuX3NldF9zdGF0dXMgJHJ2CgoKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRyY3NfY3Zfc2FuZV9yZGlmZiIgPiY1CiRhc19l
Y2hvICIkcmNzX2N2X3NhbmVfcmRpZmYiID4mNjsgfQppZiB0ZXN0IHllcyA9ICIkcmNzX2N2X3Nh
bmVfcmRpZmYiOyB0aGVuIDoKCiAgc2FuZV9kaWZmPXllcwogIERJRkY9cmRpZmYKCmZpCmZpCgpp
ZiB0ZXN0IHllcyA9ICIkc2FuZV9kaWZmIjsgdGhlbiA6CiAgOgplbHNlCgp7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmIGRpZmYgd29ya3MgbGlrZSBH
TlUgZGlmZiIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIGlmIGRpZmYgd29ya3MgbGlrZSBHTlUg
ZGlmZi4uLiAiID4mNjsgfQppZiAke3Jjc19jdl9zYW5lX2RpZmYrOn0gZmFsc2U7IHRoZW4gOgog
ICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKCiAgcmNzX2N2X3NhbmVfZGlmZj1ubwog
IHNoIC1jICJleGVjIGRpZmYgLW4gY29uZnRlc3QwIGNvbmZ0ZXN0MSIgPmNvbmZ0ZXN0b3V0IDI+
L2Rldi9udWxsCiAgdGVzdCAxID0gJD8gJiYgY21wIC1zIGNvbmZ0ZXN0b2sgY29uZnRlc3RvdXQK
ICBydj0kPwppZiB0ZXN0IDAgPSAkcnY7IHRoZW4gOgogIHJjc19jdl9zYW5lX2RpZmY9eWVzCmVs
c2UKICByY3NfY3Zfc2FuZV9kaWZmPW5vCmZpCmFzX2ZuX3NldF9zdGF0dXMgJHJ2CgoKZmkKeyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRyY3NfY3Zfc2Fu
ZV9kaWZmIiA+JjUKJGFzX2VjaG8gIiRyY3NfY3Zfc2FuZV9kaWZmIiA+JjY7IH0KaWYgdGVzdCB5
ZXMgPSAiJHJjc19jdl9zYW5lX2RpZmYiOyB0aGVuIDoKCiAgc2FuZV9kaWZmPXllcwogIERJRkY9
ZGlmZgoKZmkKZmkKCgppZiB0ZXN0IC16ICIkc2FuZV9kaWZmIiB8fCB0ZXN0IG5vID0gIiRzYW5l
X2RpZmYiOyB0aGVuIDoKICBhc19mbl9lcnJvciAkPyAiQ291bGQgbm90IGZpbmQgYSBzYW5lIGxp
bmUtYnktbGluZSBkaWZmZXJlbmNlcyBwcm9ncmFtICh0cmllZDogZ2RpZmYgcmRpZmYgZGlmZiki
ICIkTElORU5PIiA1CmZpCgpzYXZlX0RJRkY9JERJRkYKIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3Jk
IG9mICIkW11ESUZGIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4Kc2V0
IGR1bW15ICRESUZGOyBhY193b3JkPSQyCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcg
Zm9yICRhY193b3JkLi4uICIgPiY2OyB9CmlmICR7YWNfY3ZfcGF0aF9ESUZGKzp9IGZhbHNlOyB0
aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCiAgY2FzZSAkRElGRiBpbgog
IFtcXC9dKiB8ID86W1xcL10qKQogIGFjX2N2X3BhdGhfRElGRj0iJERJRkYiICMgTGV0IHRoZSB1
c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgogIDs7CiAgKikKICBhc19zYXZlX0lG
Uz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCmZvciBhc19kaXIgaW4gJFBBVEgKZG8KICBJRlM9
JGFzX3NhdmVfSUZTCiAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgIGZvciBhY19l
eGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwogIGlmIGFzX2ZuX2V4
ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICAgIGFjX2N2
X3BhdGhfRElGRj0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKICAgICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhl
Y19leHQiID4mNQogICAgYnJlYWsgMgogIGZpCmRvbmUKICBkb25lCklGUz0kYXNfc2F2ZV9JRlMK
CiAgdGVzdCAteiAiJGFjX2N2X3BhdGhfRElGRiIgJiYgYWNfY3ZfcGF0aF9ESUZGPSJubyIKICA7
Owplc2FjCmZpCkRJRkY9JGFjX2N2X3BhdGhfRElGRgppZiB0ZXN0IC1uICIkRElGRiI7IHRoZW4K
ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERJRkYi
ID4mNQokYXNfZWNobyAiJERJRkYiID4mNjsgfQplbHNlCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKJGFzX2VjaG8gIm5vIiA+JjY7IH0K
ZmkKCgppZiB0ZXN0IC16ICIkRElGRiIgfHwgdGVzdCBubyA9ICIkRElGRiI7IHRoZW4gOgogIGFz
X2ZuX2Vycm9yICQ/ICJDb3VsZCBub3QgZmluZCBhYnNvbHV0ZSBuYW1lIG9mIGxpbmUtYnktbGlu
ZSBkaWZmZXJlbmNlcyBwcm9ncmFtOiAkc2F2ZV9ESUZGIiAiJExJTkVOTyIgNQpmaQoKCmNhdCA+
PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBESUZGICIkRElGRiIKX0FDRU9GCgoKCiMgU2V0
IERJRkZfU1VDQ0VTUywgRElGRl9GQUlMVVJFLCBESUZGX1RST1VCTEUgdG8gZGlmZidzIGV4aXQg
c3RhdHVzCiMgd2hlbiBpdCBmaW5kcyBubyBkaWZmZXJlbmNlcywgc29tZSBkaWZmZXJlbmNlcywg
b3IgdHJvdWJsZS4KCgojIFdlIGNhbid0IHVzZSBgJERJRkYgY29uZnRlc3QwIGNvbmZ0ZXN0MCcs
CiMgc2luY2UgYnVnZ3kgTkVYVFNURVAgMy4wIGRpZmYgc2lsZW50bHkgeWllbGRzIGV4aXQgc3Rh
dHVzIDIgZm9yIHRoaXMuCgp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IGNoZWNraW5nIGRpZmYgc3VjY2VzcyBzdGF0dXMiID4mNQokYXNfZWNob19uICJjaGVja2luZyBk
aWZmIHN1Y2Nlc3Mgc3RhdHVzLi4uICIgPiY2OyB9CmlmICR7cmNzX2N2X3N0YXR1c19kaWZmX3N1
Y2Nlc3MrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UK
CiAgJERJRkYgY29uZnRlc3QwIGNvbmZ0ZXN0MGMgPi9kZXYvbnVsbCAyPiYxCiAgcmNzX2N2X3N0
YXR1c19kaWZmX3N1Y2Nlc3M9JD8KCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogcmVzdWx0OiAkcmNzX2N2X3N0YXR1c19kaWZmX3N1Y2Nlc3MiID4mNQokYXNfZWNo
byAiJHJjc19jdl9zdGF0dXNfZGlmZl9zdWNjZXNzIiA+JjY7IH0KCmNhdCA+PmNvbmZkZWZzLmgg
PDxfQUNFT0YKI2RlZmluZSBESUZGX1NVQ0NFU1MgJHJjc19jdl9zdGF0dXNfZGlmZl9zdWNjZXNz
Cl9BQ0VPRgoKCgp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr
aW5nIGRpZmYgZmFpbHVyZSBzdGF0dXMiID4mNQokYXNfZWNob19uICJjaGVja2luZyBkaWZmIGZh
aWx1cmUgc3RhdHVzLi4uICIgPiY2OyB9CmlmICR7cmNzX2N2X3N0YXR1c19kaWZmX2ZhaWx1cmUr
On0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKCiAgJERJ
RkYgY29uZnRlc3QwIGNvbmZ0ZXN0MSA+L2Rldi9udWxsIDI+JjEKICByY3NfY3Zfc3RhdHVzX2Rp
ZmZfZmFpbHVyZT0kPwoKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiByZXN1bHQ6ICRyY3NfY3Zfc3RhdHVzX2RpZmZfZmFpbHVyZSIgPiY1CiRhc19lY2hvICIkcmNz
X2N2X3N0YXR1c19kaWZmX2ZhaWx1cmUiID4mNjsgfQoKY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VP
RgojZGVmaW5lIERJRkZfRkFJTFVSRSAkcmNzX2N2X3N0YXR1c19kaWZmX2ZhaWx1cmUKX0FDRU9G
CgoKCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZGlm
ZiB0cm91YmxlIHN0YXR1cyIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIGRpZmYgdHJvdWJsZSBz
dGF0dXMuLi4gIiA+JjY7IH0KaWYgJHtyY3NfY3Zfc3RhdHVzX2RpZmZfdHJvdWJsZSs6fSBmYWxz
ZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQoKICAkRElGRiBjb25m
dGVzdDAgbm8vc3VjaC9maWxlID4vZGV2L251bGwgMj4mMQogIHJjc19jdl9zdGF0dXNfZGlmZl90
cm91YmxlPSQ/CgpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl
c3VsdDogJHJjc19jdl9zdGF0dXNfZGlmZl90cm91YmxlIiA+JjUKJGFzX2VjaG8gIiRyY3NfY3Zf
c3RhdHVzX2RpZmZfdHJvdWJsZSIgPiY2OyB9CgpjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNk
ZWZpbmUgRElGRl9UUk9VQkxFICRyY3NfY3Zfc3RhdHVzX2RpZmZfdHJvdWJsZQpfQUNFT0YKCgoK
IyBTZXQgRElGRkZMQUdTIHRvIHRoZSBvcHRpb25zIG9mIHRoZSBgZGlmZicgcHJvZ3JhbSB0byBi
ZSBydW4uCiMgVXNlIC1hbiBpZiBwb3NzaWJsZSwgLW4gb3RoZXJ3aXNlLgp7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGRpZmYgb3B0aW9ucyBmb3IgUkNT
IiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgZGlmZiBvcHRpb25zIGZvciBSQ1MuLi4gIiA+JjY7
IH0KaWYgJHtyY3NfY3Zfb3B0aW9uc19kaWZmKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19u
ICIoY2FjaGVkKSAiID4mNgplbHNlCgogICRESUZGIC1hbiBjb25mdGVzdDAgY29uZnRlc3QxID5j
b25mdGVzdG91dCAyPmNvbmZ0ZXN0b3V0MgppZiB0ZXN0IDEgPSAkPyAmJgogICAgICAgY21wIC1z
IGNvbmZ0ZXN0b2sgY29uZnRlc3RvdXQgJiYKICAgICAgIHRlc3QgISAtcyBjb25mdGVzdG91dDI7
IHRoZW4gOgogIHJjc19jdl9vcHRpb25zX2RpZmY9LWFuCmVsc2UKICByY3NfY3Zfb3B0aW9uc19k
aWZmPS1uCmZpCgpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl
c3VsdDogJHJjc19jdl9vcHRpb25zX2RpZmYiID4mNQokYXNfZWNobyAiJHJjc19jdl9vcHRpb25z
X2RpZmYiID4mNjsgfQoKY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5lIERJRkZGTEFH
UyAiJHJjc19jdl9vcHRpb25zX2RpZmYiCl9BQ0VPRgoKCiMgU2V0IERJRkZfTCB0byAxIGlmIGRp
ZmYgdW5kZXJzdGFuZHMgdGhlIOKAmC0tbGFiZWzigJkgb3B0aW9uLCAwIG90aGVyd2lzZS4KeyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiBkaWZmIHVu
ZGVyc3RhbmRzIC0tbGFiZWwiID4mNQokYXNfZWNob19uICJjaGVja2luZyBpZiBkaWZmIHVuZGVy
c3RhbmRzIC0tbGFiZWwuLi4gIiA+JjY7IH0KaWYgJHtyY3NfY3Zfb3B0aW9uc19kaWZmX2wrOn0g
ZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKCiAgJERJRkYg
LWMgLS1sYWJlbCAwIC0tbGFiZWwgMSBjb25mdGVzdDAgY29uZnRlc3QxID5jb25mdGVzdG91dCAy
Pi9kZXYvbnVsbAogIHRlc3QgMSA9ICQ/ICYmIGNtcCAtcyAtIGNvbmZ0ZXN0b3V0IDw8J0VPRicK
KioqIDAKLS0tIDEKKioqKioqKioqKioqKioqCioqKiAxICoqKioKISAwCi0tLSAxIC0tLS0KISAx
CkVPRgogIHJ2PSQ/CmlmIHRlc3QgMCA9ICRydjsgdGhlbiA6CiAgcmNzX2N2X29wdGlvbnNfZGlm
Zl9sPXllcwplbHNlCiAgcmNzX2N2X29wdGlvbnNfZGlmZl9sPW5vCmZpCmFzX2ZuX3NldF9zdGF0
dXMgJHJ2CgoKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1
bHQ6ICRyY3NfY3Zfb3B0aW9uc19kaWZmX2wiID4mNQokYXNfZWNobyAiJHJjc19jdl9vcHRpb25z
X2RpZmZfbCIgPiY2OyB9CmlmIHRlc3QgeWVzID0gJHJjc19jdl9vcHRpb25zX2RpZmZfbDsgdGhl
biA6CiAgY2Jvb2w9MQplbHNlCiAgY2Jvb2w9MApmaQoKY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VP
RgojZGVmaW5lIERJRkZfTCAkY2Jvb2wKX0FDRU9GCgoKIyBTZXQgRElGRjMgdG8gdGhlIG5hbWUg
b2YgdGhlIGRpZmYzIHByb2dyYW0uCgoKZm9yIGFjX3Byb2cgaW4gZ2RpZmYzIGRpZmYzCmRvCiAg
IyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHBy
b2dyYW0gbmFtZSB3aXRoIGFyZ3MuCnNldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgp7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29y
ZCIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQppZiAk
e2FjX2N2X3Byb2dfRElGRjMrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQp
ICIgPiY2CmVsc2UKICBpZiB0ZXN0IC1uICIkRElGRjMiOyB0aGVuCiAgYWNfY3ZfcHJvZ19ESUZG
Mz0iJERJRkYzIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KZWxzZQphc19zYXZl
X0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCmZvciBhc19kaXIgaW4gJFBBVEgKZG8KICBJ
RlM9JGFzX3NhdmVfSUZTCiAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgIGZvciBh
Y19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwogIGlmIGFzX2Zu
X2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICAgIGFj
X2N2X3Byb2dfRElGRjM9IiRhY19wcm9nIgogICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu
by0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICBi
cmVhayAyCiAgZmkKZG9uZQogIGRvbmUKSUZTPSRhc19zYXZlX0lGUwoKZmkKZmkKRElGRjM9JGFj
X2N2X3Byb2dfRElGRjMKaWYgdGVzdCAtbiAiJERJRkYzIjsgdGhlbgogIHsgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRElGRjMiID4mNQokYXNfZWNobyAi
JERJRkYzIiA+JjY7IH0KZWxzZQogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogcmVzdWx0OiBubyIgPiY1CiRhc19lY2hvICJubyIgPiY2OyB9CmZpCgoKICB0ZXN0IC1u
ICIkRElGRjMiICYmIGJyZWFrCmRvbmUKCmlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RJRkYzIiB8
fCB0ZXN0IG5vID0gIiRhY19jdl9wcm9nX0RJRkYzIjsgdGhlbiA6CiAgYXNfZm5fZXJyb3IgJD8g
IkNvdWxkIG5vdCBmaW5kIGEgZGlmZjMgcHJvZ3JhbSAodHJpZWQ6IGdkaWZmMyBkaWZmMykiICIk
TElORU5PIiA1CmZpCgpzYXZlX0RJRkYzPSRESUZGMwojIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQg
b2YgIiRbXURJRkYzIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4Kc2V0
IGR1bW15ICRESUZGMzsgYWNfd29yZD0kMgp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiRhc19lY2hvX24gImNoZWNraW5n
IGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQppZiAke2FjX2N2X3BhdGhfRElGRjMrOn0gZmFsc2U7
IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKICBjYXNlICRESUZGMyBp
bgogIFtcXC9dKiB8ID86W1xcL10qKQogIGFjX2N2X3BhdGhfRElGRjM9IiRESUZGMyIgIyBMZXQg
dGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCiAgOzsKICAqKQogIGFzX3Nh
dmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKZm9yIGFzX2RpciBpbiAkUEFUSApkbwog
IElGUz0kYXNfc2F2ZV9JRlMKICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgZm9y
IGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCiAgaWYgYXNf
Zm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogICAg
YWNfY3ZfcGF0aF9ESUZGMz0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKICAgICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQk
YWNfZXhlY19leHQiID4mNQogICAgYnJlYWsgMgogIGZpCmRvbmUKICBkb25lCklGUz0kYXNfc2F2
ZV9JRlMKCiAgdGVzdCAteiAiJGFjX2N2X3BhdGhfRElGRjMiICYmIGFjX2N2X3BhdGhfRElGRjM9
Im5vIgogIDs7CmVzYWMKZmkKRElGRjM9JGFjX2N2X3BhdGhfRElGRjMKaWYgdGVzdCAtbiAiJERJ
RkYzIjsgdGhlbgogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz
dWx0OiAkRElGRjMiID4mNQokYXNfZWNobyAiJERJRkYzIiA+JjY7IH0KZWxzZQogIHsgJGFzX2Vj
aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiRhc19lY2hv
ICJubyIgPiY2OyB9CmZpCgoKaWYgdGVzdCAteiAiJERJRkYzIiB8fCB0ZXN0IG5vID0gIiRESUZG
MyI7IHRoZW4gOgogIGFzX2ZuX2Vycm9yICQ/ICJDb3VsZCBub3QgZmluZCBhYnNvbHV0ZSBuYW1l
IG9mIGRpZmYzIHByb2dyYW06ICRzYXZlX0RJRkYzIiAiJExJTkVOTyIgNQpmaQoKCmNhdCA+PmNv
bmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBESUZGMyAiJERJRkYzIgpfQUNFT0YKCgoKeyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiBkaWZmMyB3b3Jr
cyBsaWtlIEdOVSBkaWZmMyIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIGlmIGRpZmYzIHdvcmtz
IGxpa2UgR05VIGRpZmYzLi4uICIgPiY2OyB9CmlmICR7cmNzX2N2X3NhbmVfZGlmZjMrOn0gZmFs
c2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKCiAgcmNzX2N2X3Nh
bmVfZGlmZjM9bm8KICBzaCAtYyAiZXhlYyAkRElGRjMgLUUgLW0gLUwgMCAtTCAxIC1MIDIgY29u
ZnRlc3QwIGNvbmZ0ZXN0MSAvZGV2L251bGwiID5jb25mdGVzdG91dCAyPi9kZXYvbnVsbAogIHRl
c3QgMSA9ICQ/ICYmIGNtcCAtcyAtIGNvbmZ0ZXN0b3V0IDw8J0VPRicKPDw8PDw8PCAwCjAKPT09
PT09PQo+Pj4+Pj4+IDIKRU9GCiAgcnY9JD8KaWYgdGVzdCAwID0gJHJ2OyB0aGVuIDoKICByY3Nf
Y3Zfc2FuZV9kaWZmMz15ZXMKZWxzZQogIHJjc19jdl9zYW5lX2RpZmYzPW5vCmZpCmFzX2ZuX3Nl
dF9zdGF0dXMgJHJ2CgoKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiByZXN1bHQ6ICRyY3NfY3Zfc2FuZV9kaWZmMyIgPiY1CiRhc19lY2hvICIkcmNzX2N2X3NhbmVf
ZGlmZjMiID4mNjsgfQppZiB0ZXN0IHllcyA9ICRyY3NfY3Zfc2FuZV9kaWZmMzsgdGhlbiA6CiAg
Y2Jvb2w9MQplbHNlCiAgY2Jvb2w9MApmaQoKY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVm
aW5lIERJRkYzX0JJTiAkY2Jvb2wKX0FDRU9GCgppZiB0ZXN0IHllcyA9ICIkcmNzX2N2X3NhbmVf
ZGlmZjMiOyB0aGVuIDoKCmVsc2UKCkVEPWVkCnNhdmVfRUQ9JEVECiMgRXh0cmFjdCB0aGUgZmly
c3Qgd29yZCBvZiAiJFtdRUQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdz
LgpzZXQgZHVtbXkgJEVEOyBhY193b3JkPSQyCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu
by0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tp
bmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CmlmICR7YWNfY3ZfcGF0aF9FRCs6fSBmYWxzZTsg
dGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIGNhc2UgJEVEIGluCiAg
W1xcL10qIHwgPzpbXFwvXSopCiAgYWNfY3ZfcGF0aF9FRD0iJEVEIiAjIExldCB0aGUgdXNlciBv
dmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KICA7OwogICopCiAgYXNfc2F2ZV9JRlM9JElG
UzsgSUZTPSRQQVRIX1NFUEFSQVRPUgpmb3IgYXNfZGlyIGluICRQQVRICmRvCiAgSUZTPSRhc19z
YXZlX0lGUwogIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICBmb3IgYWNfZXhlY19l
eHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KICBpZiBhc19mbl9leGVjdXRh
YmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiAgICBhY19jdl9wYXRo
X0VEPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgogICAgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIg
PiY1CiAgICBicmVhayAyCiAgZmkKZG9uZQogIGRvbmUKSUZTPSRhc19zYXZlX0lGUwoKICB0ZXN0
IC16ICIkYWNfY3ZfcGF0aF9FRCIgJiYgYWNfY3ZfcGF0aF9FRD0ibm8iCiAgOzsKZXNhYwpmaQpF
RD0kYWNfY3ZfcGF0aF9FRAppZiB0ZXN0IC1uICIkRUQiOyB0aGVuCiAgeyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRFRCIgPiY1CiRhc19lY2hvICIkRUQi
ID4mNjsgfQplbHNlCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy
ZXN1bHQ6IG5vIiA+JjUKJGFzX2VjaG8gIm5vIiA+JjY7IH0KZmkKCgppZiB0ZXN0IC16ICIkRUQi
IHx8IHRlc3Qgbm8gPSAiJEVEIjsgdGhlbiA6CiAgYXNfZm5fZXJyb3IgJD8gIkNvdWxkIG5vdCBm
aW5kIGFic29sdXRlIG5hbWUgb2Ygb3JpZ2luYWwgZWQgcHJvZ3JhbTogJHNhdmVfRUQiICIkTElO
RU5PIiA1CmZpCgoKY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5lIEVEICIkRUQiCl9B
Q0VPRgoKCgpmaQoKIyBUaGlzIGlzIG9ubHkgZm9yIG1haW50YWluZXJzLgoKaWYgdGVzdCB4IiRT
T0VMSU0iID0geDsgdGhlbiA6CiAgZm9yIGFjX3Byb2cgaW4gc29lbGltCmRvCiAgIyBFeHRyYWN0
IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFt
ZSB3aXRoIGFyZ3MuCnNldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgp7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiRh
c19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQppZiAke2FjX2N2X3By
b2dfU09FTElNKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgpl
bHNlCiAgaWYgdGVzdCAtbiAiJFNPRUxJTSI7IHRoZW4KICBhY19jdl9wcm9nX1NPRUxJTT0iJFNP
RUxJTSIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCmVsc2UKYXNfc2F2ZV9JRlM9
JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgpmb3IgYXNfZGlyIGluICRQQVRICmRvCiAgSUZTPSRh
c19zYXZlX0lGUwogIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICBmb3IgYWNfZXhl
Y19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KICBpZiBhc19mbl9leGVj
dXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiAgICBhY19jdl9w
cm9nX1NPRUxJTT0iJGFjX3Byb2ciCiAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgIGJyZWFr
IDIKICBmaQpkb25lCiAgZG9uZQpJRlM9JGFzX3NhdmVfSUZTCgpmaQpmaQpTT0VMSU09JGFjX2N2
X3Byb2dfU09FTElNCmlmIHRlc3QgLW4gIiRTT0VMSU0iOyB0aGVuCiAgeyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRTT0VMSU0iID4mNQokYXNfZWNobyAi
JFNPRUxJTSIgPiY2OyB9CmVsc2UKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogbm8iID4mNQokYXNfZWNobyAibm8iID4mNjsgfQpmaQoKCiAgdGVzdCAt
biAiJFNPRUxJTSIgJiYgYnJlYWsKZG9uZQoKZmkKCgppZiB0ZXN0IHgiJFBJQyIgPSB4OyB0aGVu
IDoKICBmb3IgYWNfcHJvZyBpbiAicGljIC1uIiAiZ3BpYyAtbiIgInBpYyAtRCIgInBpYyIKZG8K
ICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEg
cHJvZ3JhbSBuYW1lIHdpdGggYXJncy4Kc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCnsg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193
b3JkIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Cmlm
ICR7YWNfY3ZfcHJvZ19QSUMrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQp
ICIgPiY2CmVsc2UKICBpZiB0ZXN0IC1uICIkUElDIjsgdGhlbgogIGFjX2N2X3Byb2dfUElDPSIk
UElDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KZWxzZQphc19zYXZlX0lGUz0k
SUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCmZvciBhc19kaXIgaW4gJFBBVEgKZG8KICBJRlM9JGFz
X3NhdmVfSUZTCiAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgIGZvciBhY19leGVj
X2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwogIGlmIGFzX2ZuX2V4ZWN1
dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICAgIGFjX2N2X3By
b2dfUElDPSIkYWNfcHJvZyIKICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgYnJlYWsgMgog
IGZpCmRvbmUKICBkb25lCklGUz0kYXNfc2F2ZV9JRlMKCmZpCmZpClBJQz0kYWNfY3ZfcHJvZ19Q
SUMKaWYgdGVzdCAtbiAiJFBJQyI7IHRoZW4KICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IHJlc3VsdDogJFBJQyIgPiY1CiRhc19lY2hvICIkUElDIiA+JjY7IH0KZWxz
ZQogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIg
PiY1CiRhc19lY2hvICJubyIgPiY2OyB9CmZpCgoKICB0ZXN0IC1uICIkUElDIiAmJiBicmVhawpk
b25lCnRlc3QgLW4gIiRQSUMiIHx8IFBJQz0icGljIgoKZmkKCkRFUERJUj0iJHthbV9fbGVhZGlu
Z19kb3R9ZGVwcyIKCmFjX2NvbmZpZ19jb21tYW5kcz0iJGFjX2NvbmZpZ19jb21tYW5kcyBkZXBm
aWxlcyIKCgphbV9tYWtlPSR7TUFLRS1tYWtlfQpjYXQgPiBjb25maW5jIDw8ICdFTkQnCmFtX19k
b2l0OgoJQGVjaG8gdGhpcyBpcyB0aGUgYW1fX2RvaXQgdGFyZ2V0Ci5QSE9OWTogYW1fX2RvaXQK
RU5ECiMgSWYgd2UgZG9uJ3QgZmluZCBhbiBpbmNsdWRlIGRpcmVjdGl2ZSwganVzdCBjb21tZW50
IG91dCB0aGUgY29kZS4KeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj
aGVja2luZyBmb3Igc3R5bGUgb2YgaW5jbHVkZSB1c2VkIGJ5ICRhbV9tYWtlIiA+JjUKJGFzX2Vj
aG9fbiAiY2hlY2tpbmcgZm9yIHN0eWxlIG9mIGluY2x1ZGUgdXNlZCBieSAkYW1fbWFrZS4uLiAi
ID4mNjsgfQphbV9faW5jbHVkZT0iIyIKYW1fX3F1b3RlPQpfYW1fcmVzdWx0PW5vbmUKIyBGaXJz
dCB0cnkgR05VIG1ha2Ugc3R5bGUgaW5jbHVkZS4KZWNobyAiaW5jbHVkZSBjb25maW5jIiA+IGNv
bmZtZgojIElnbm9yZSBhbGwga2luZHMgb2YgYWRkaXRpb25hbCBvdXRwdXQgZnJvbSAnbWFrZScu
CmNhc2UgYCRhbV9tYWtlIC1zIC1mIGNvbmZtZiAyPiAvZGV2L251bGxgIGluICMoCip0aGVcIGFt
X19kb2l0XCB0YXJnZXQqKQogIGFtX19pbmNsdWRlPWluY2x1ZGUKICBhbV9fcXVvdGU9CiAgX2Ft
X3Jlc3VsdD1HTlUKICA7Owplc2FjCiMgTm93IHRyeSBCU0QgbWFrZSBzdHlsZSBpbmNsdWRlLgpp
ZiB0ZXN0ICIkYW1fX2luY2x1ZGUiID0gIiMiOyB0aGVuCiAgIGVjaG8gJy5pbmNsdWRlICJjb25m
aW5jIicgPiBjb25mbWYKICAgY2FzZSBgJGFtX21ha2UgLXMgLWYgY29uZm1mIDI+IC9kZXYvbnVs
bGAgaW4gIygKICAgKnRoZVwgYW1fX2RvaXRcIHRhcmdldCopCiAgICAgYW1fX2luY2x1ZGU9Lmlu
Y2x1ZGUKICAgICBhbV9fcXVvdGU9IlwiIgogICAgIF9hbV9yZXN1bHQ9QlNECiAgICAgOzsKICAg
ZXNhYwpmaQoKCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0
OiAkX2FtX3Jlc3VsdCIgPiY1CiRhc19lY2hvICIkX2FtX3Jlc3VsdCIgPiY2OyB9CnJtIC1mIGNv
bmZpbmMgY29uZm1mCgojIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtZGVwZW5kZW5jeS10cmFja2lu
ZyB3YXMgZ2l2ZW4uCmlmIHRlc3QgIiR7ZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmcrc2V0fSIg
PSBzZXQ7IHRoZW4gOgogIGVuYWJsZXZhbD0kZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmc7CmZp
CgppZiB0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nIiAhPSB4bm87IHRoZW4KICBh
bV9kZXBjb21wPSIkYWNfYXV4X2Rpci9kZXBjb21wIgogIEFNREVQQkFDS1NMQVNIPSdcJwogIGFt
X19ub2RlcD0nX25vJwpmaQogaWYgdGVzdCAieCRlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZyIg
IT0geG5vOyB0aGVuCiAgQU1ERVBfVFJVRT0KICBBTURFUF9GQUxTRT0nIycKZWxzZQogIEFNREVQ
X1RSVUU9JyMnCiAgQU1ERVBfRkFMU0U9CmZpCgoKYWNfZXh0PWMKYWNfY3BwPSckQ1BQICRDUFBG
TEFHUycKYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19l
eHQgPiY1JwphY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZM
QUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwphY19jb21waWxlcl9nbnU9
JGFjX2N2X2NfY29tcGlsZXJfZ251CmlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4K
ICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9Z2NjIiwgc28g
aXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4Kc2V0IGR1bW15ICR7YWNfdG9vbF9w
cmVmaXh9Z2NjOyBhY193b3JkPSQyCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9y
ICRhY193b3JkLi4uICIgPiY2OyB9CmlmICR7YWNfY3ZfcHJvZ19DQys6fSBmYWxzZTsgdGhlbiA6
CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIGlmIHRlc3QgLW4gIiRDQyI7IHRo
ZW4KICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0
LgplbHNlCmFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKZm9yIGFzX2RpciBp
biAkUEFUSApkbwogIElGUz0kYXNfc2F2ZV9JRlMKICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19k
aXI9LgogICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7
IGRvCiAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0
IjsgdGhlbgogICAgYWNfY3ZfcHJvZ19DQz0iJHthY190b29sX3ByZWZpeH1nY2MiCiAgICAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3Jk
JGFjX2V4ZWNfZXh0IiA+JjUKICAgIGJyZWFrIDIKICBmaQpkb25lCiAgZG9uZQpJRlM9JGFzX3Nh
dmVfSUZTCgpmaQpmaQpDQz0kYWNfY3ZfcHJvZ19DQwppZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCiAg
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDQyIgPiY1
CiRhc19lY2hvICIkQ0MiID4mNjsgfQplbHNlCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKJGFzX2VjaG8gIm5vIiA+JjY7IH0KZmkKCgpm
aQppZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19DQyI7IHRoZW4KICBhY19jdF9DQz0kQ0MKICAjIEV4
dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImdjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFt
ZSB3aXRoIGFyZ3MuCnNldCBkdW1teSBnY2M7IGFjX3dvcmQ9JDIKeyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQokYXNfZWNo
b19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KaWYgJHthY19jdl9wcm9nX2Fj
X2N0X0NDKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNl
CiAgaWYgdGVzdCAtbiAiJGFjX2N0X0NDIjsgdGhlbgogIGFjX2N2X3Byb2dfYWNfY3RfQ0M9IiRh
Y19jdF9DQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCmVsc2UKYXNfc2F2ZV9J
RlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgpmb3IgYXNfZGlyIGluICRQQVRICmRvCiAgSUZT
PSRhc19zYXZlX0lGUwogIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICBmb3IgYWNf
ZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KICBpZiBhc19mbl9l
eGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiAgICBhY19j
dl9wcm9nX2FjX2N0X0NDPSJnY2MiCiAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgIGJyZWFr
IDIKICBmaQpkb25lCiAgZG9uZQpJRlM9JGFzX3NhdmVfSUZTCgpmaQpmaQphY19jdF9DQz0kYWNf
Y3ZfcHJvZ19hY19jdF9DQwppZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCiAgeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9DQyIgPiY1CiRh
c19lY2hvICIkYWNfY3RfQ0MiID4mNjsgfQplbHNlCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKJGFzX2VjaG8gIm5vIiA+JjY7IH0KZmkK
CiAgaWYgdGVzdCAieCRhY19jdF9DQyIgPSB4OyB0aGVuCiAgICBDQz0iIgogIGVsc2UKICAgIGNh
c2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KeWVzOikKeyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBu
b3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQokYXNfZWNobyAiJGFzX21lOiBXQVJO
SU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4m
Mjt9CmFjX3Rvb2xfd2FybmVkPXllcyA7Owplc2FjCiAgICBDQz0kYWNfY3RfQ0MKICBmaQplbHNl
CiAgQ0M9IiRhY19jdl9wcm9nX0NDIgpmaQoKaWYgdGVzdCAteiAiJENDIjsgdGhlbgogICAgICAg
ICAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgogICAgIyBFeHRyYWN0IHRoZSBm
aXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWNjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3Jh
bSBuYW1lIHdpdGggYXJncy4Kc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9Y2M7IGFjX3dvcmQ9
JDIKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig
JGFjX3dvcmQiID4mNQokYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7
IH0KaWYgJHthY19jdl9wcm9nX0NDKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2Fj
aGVkKSAiID4mNgplbHNlCiAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgogIGFjX2N2X3Byb2dfQ0M9
IiRDQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCmVsc2UKYXNfc2F2ZV9JRlM9
JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgpmb3IgYXNfZGlyIGluICRQQVRICmRvCiAgSUZTPSRh
c19zYXZlX0lGUwogIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICBmb3IgYWNfZXhl
Y19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KICBpZiBhc19mbl9leGVj
dXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiAgICBhY19jdl9w
cm9nX0NDPSIke2FjX3Rvb2xfcHJlZml4fWNjIgogICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAg
ICBicmVhayAyCiAgZmkKZG9uZQogIGRvbmUKSUZTPSRhc19zYXZlX0lGUwoKZmkKZmkKQ0M9JGFj
X2N2X3Byb2dfQ0MKaWYgdGVzdCAtbiAiJENDIjsgdGhlbgogIHsgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQ0MiID4mNQokYXNfZWNobyAiJENDIiA+JjY7
IH0KZWxzZQogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0
OiBubyIgPiY1CiRhc19lY2hvICJubyIgPiY2OyB9CmZpCgoKICBmaQpmaQppZiB0ZXN0IC16ICIk
Q0MiOyB0aGVuCiAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJjYyIsIHNvIGl0IGNhbiBi
ZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCnNldCBkdW1teSBjYzsgYWNfd29yZD0kMgp7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29y
ZCIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQppZiAk
e2FjX2N2X3Byb2dfQ0MrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIg
PiY2CmVsc2UKICBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCiAgYWNfY3ZfcHJvZ19DQz0iJENDIiAj
IExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KZWxzZQogIGFjX3Byb2dfcmVqZWN0ZWQ9
bm8KYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgpmb3IgYXNfZGlyIGluICRQ
QVRICmRvCiAgSUZTPSRhc19zYXZlX0lGUwogIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0u
CiAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8K
ICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0
aGVuCiAgICBpZiB0ZXN0ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA9ICIvdXNyL3Vj
Yi9jYyI7IHRoZW4KICAgICAgIGFjX3Byb2dfcmVqZWN0ZWQ9eWVzCiAgICAgICBjb250aW51ZQog
ICAgIGZpCiAgICBhY19jdl9wcm9nX0NDPSJjYyIKICAgICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQog
ICAgYnJlYWsgMgogIGZpCmRvbmUKICBkb25lCklGUz0kYXNfc2F2ZV9JRlMKCmlmIHRlc3QgJGFj
X3Byb2dfcmVqZWN0ZWQgPSB5ZXM7IHRoZW4KICAjIFdlIGZvdW5kIGEgYm9nb24gaW4gdGhlIHBh
dGgsIHNvIG1ha2Ugc3VyZSB3ZSBuZXZlciB1c2UgaXQuCiAgc2V0IGR1bW15ICRhY19jdl9wcm9n
X0NDCiAgc2hpZnQKICBpZiB0ZXN0ICQjICE9IDA7IHRoZW4KICAgICMgV2UgY2hvc2UgYSBkaWZm
ZXJlbnQgY29tcGlsZXIgZnJvbSB0aGUgYm9ndXMgb25lLgogICAgIyBIb3dldmVyLCBpdCBoYXMg
dGhlIHNhbWUgYmFzZW5hbWUsIHNvIHRoZSBib2dvbiB3aWxsIGJlIGNob3NlbgogICAgIyBmaXJz
dCBpZiB3ZSBzZXQgQ0MgdG8ganVzdCB0aGUgYmFzZW5hbWU7IHVzZSB0aGUgZnVsbCBmaWxlIG5h
bWUuCiAgICBzaGlmdAogICAgYWNfY3ZfcHJvZ19DQz0iJGFzX2Rpci8kYWNfd29yZCR7MSsnICd9
JEAiCiAgZmkKZmkKZmkKZmkKQ0M9JGFjX2N2X3Byb2dfQ0MKaWYgdGVzdCAtbiAiJENDIjsgdGhl
bgogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQ0Mi
ID4mNQokYXNfZWNobyAiJENDIiA+JjY7IH0KZWxzZQogIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiRhc19lY2hvICJubyIgPiY2OyB9CmZp
CgoKZmkKaWYgdGVzdCAteiAiJENDIjsgdGhlbgogIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZp
eCI7IHRoZW4KICBmb3IgYWNfcHJvZyBpbiBjbC5leGUKICBkbwogICAgIyBFeHRyYWN0IHRoZSBm
aXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHBy
b2dyYW0gbmFtZSB3aXRoIGFyZ3MuCnNldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsg
YWNfd29yZD0kMgp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr
aW5nIGZvciAkYWNfd29yZCIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4u
LiAiID4mNjsgfQppZiAke2FjX2N2X3Byb2dfQ0MrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hv
X24gIihjYWNoZWQpICIgPiY2CmVsc2UKICBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCiAgYWNfY3Zf
cHJvZ19DQz0iJENDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KZWxzZQphc19z
YXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCmZvciBhc19kaXIgaW4gJFBBVEgKZG8K
ICBJRlM9JGFzX3NhdmVfSUZTCiAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgIGZv
ciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwogIGlmIGFz
X2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICAg
IGFjX2N2X3Byb2dfQ0M9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgogICAgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVj
X2V4dCIgPiY1CiAgICBicmVhayAyCiAgZmkKZG9uZQogIGRvbmUKSUZTPSRhc19zYXZlX0lGUwoK
ZmkKZmkKQ0M9JGFjX2N2X3Byb2dfQ0MKaWYgdGVzdCAtbiAiJENDIjsgdGhlbgogIHsgJGFzX2Vj
aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQ0MiID4mNQokYXNfZWNo
byAiJENDIiA+JjY7IH0KZWxzZQogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogcmVzdWx0OiBubyIgPiY1CiRhc19lY2hvICJubyIgPiY2OyB9CmZpCgoKICAgIHRlc3Qg
LW4gIiRDQyIgJiYgYnJlYWsKICBkb25lCmZpCmlmIHRlc3QgLXogIiRDQyI7IHRoZW4KICBhY19j
dF9DQz0kQ0MKICBmb3IgYWNfcHJvZyBpbiBjbC5leGUKZG8KICAjIEV4dHJhY3QgdGhlIGZpcnN0
IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJn
cy4Kc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCnsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKJGFzX2VjaG9fbiAi
Y2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CmlmICR7YWNfY3ZfcHJvZ19hY19jdF9D
Qys6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIGlm
IHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KICBhY19jdl9wcm9nX2FjX2N0X0NDPSIkYWNfY3Rf
Q0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgplbHNlCmFzX3NhdmVfSUZTPSRJ
RlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKZm9yIGFzX2RpciBpbiAkUEFUSApkbwogIElGUz0kYXNf
c2F2ZV9JRlMKICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgZm9yIGFjX2V4ZWNf
ZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCiAgaWYgYXNfZm5fZXhlY3V0
YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogICAgYWNfY3ZfcHJv
Z19hY19jdF9DQz0iJGFjX3Byb2ciCiAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgIGJyZWFr
IDIKICBmaQpkb25lCiAgZG9uZQpJRlM9JGFzX3NhdmVfSUZTCgpmaQpmaQphY19jdF9DQz0kYWNf
Y3ZfcHJvZ19hY19jdF9DQwppZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCiAgeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9DQyIgPiY1CiRh
c19lY2hvICIkYWNfY3RfQ0MiID4mNjsgfQplbHNlCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKJGFzX2VjaG8gIm5vIiA+JjY7IH0KZmkK
CgogIHRlc3QgLW4gIiRhY19jdF9DQyIgJiYgYnJlYWsKZG9uZQoKICBpZiB0ZXN0ICJ4JGFjX2N0
X0NDIiA9IHg7IHRoZW4KICAgIENDPSIiCiAgZWxzZQogICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5n
OiRhY190b29sX3dhcm5lZCBpbgp5ZXM6KQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhv
c3QgdHJpcGxldCIgPiY1CiRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRv
b2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KYWNfdG9vbF93YXJuZWQ9
eWVzIDs7CmVzYWMKICAgIENDPSRhY19jdF9DQwogIGZpCmZpCgpmaQoKCnRlc3QgLXogIiRDQyIg
JiYgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBc
YCRhY19wd2QnOiIgPiY1CiRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIg
PiYyO30KYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgQyBjb21waWxlciBmb3VuZCBpbiBc
JFBBVEgKU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0K
CiMgUHJvdmlkZSBzb21lIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb21waWxlci4KJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEMgY29tcGlsZXIgdmVy
c2lvbiIgPiY1CnNldCBYICRhY19jb21waWxlCmFjX2NvbXBpbGVyPSQyCmZvciBhY19vcHRpb24g
aW4gLS12ZXJzaW9uIC12IC1WIC1xdmVyc2lvbjsgZG8KICB7IHsgYWNfdHJ5PSIkYWNfY29tcGls
ZXIgJGFjX29wdGlvbiA+JjUiCmNhc2UgIigoJGFjX3RyeSIgaW4KICAqXCIqIHwgKlxgKiB8ICpc
XCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKZXNh
YwpldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY190
cnlfZWNob1wiIgokYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKICAoZXZhbCAiJGFjX2Nv
bXBpbGVyICRhY19vcHRpb24gPiY1IikgMj5jb25mdGVzdC5lcnIKICBhY19zdGF0dXM9JD8KICBp
ZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgogICAgc2VkICcxMGFcCi4uLiByZXN0IG9mIHN0
ZGVyciBvdXRwdXQgZGVsZXRlZCAuLi4KICAgICAgICAgMTBxJyBjb25mdGVzdC5lcnIgPmNvbmZ0
ZXN0LmVyMQogICAgY2F0IGNvbmZ0ZXN0LmVyMSA+JjUKICBmaQogIHJtIC1mIGNvbmZ0ZXN0LmVy
MSBjb25mdGVzdC5lcnIKICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBc
JD8gPSAkYWNfc3RhdHVzIiA+JjUKICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CmRvbmUKCmNhdCBj
b25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmgu
ICAqLwoKaW50Cm1haW4gKCkKewoKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmFjX2NsZWFuX2Zp
bGVzX3NhdmU9JGFjX2NsZWFuX2ZpbGVzCmFjX2NsZWFuX2ZpbGVzPSIkYWNfY2xlYW5fZmlsZXMg
YS5vdXQgYS5vdXQuZFNZTSBhLmV4ZSBiLm91dCIKIyBUcnkgdG8gY3JlYXRlIGFuIGV4ZWN1dGFi
bGUgd2l0aG91dCAtbyBmaXJzdCwgZGlzcmVnYXJkIGEub3V0LgojIEl0IHdpbGwgaGVscCB1cyBk
aWFnbm9zZSBicm9rZW4gY29tcGlsZXJzLCBhbmQgZmluZGluZyBvdXQgYW4gaW50dWl0aW9uCiMg
b2YgZXhlZXh0Lgp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr
aW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgd29ya3MiID4mNQokYXNfZWNob19uICJjaGVja2lu
ZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyIHdvcmtzLi4uICIgPiY2OyB9CmFjX2xpbmtfZGVmYXVs
dD1gJGFzX2VjaG8gIiRhY19saW5rIiB8IHNlZCAncy8gLW8gKmNvbmZ0ZXN0W14gXSovLydgCgoj
IFRoZSBwb3NzaWJsZSBvdXRwdXQgZmlsZXM6CmFjX2ZpbGVzPSJhLm91dCBjb25mdGVzdC5leGUg
Y29uZnRlc3QgYS5leGUgYV9vdXQuZXhlIGIub3V0IGNvbmZ0ZXN0LioiCgphY19ybWZpbGVzPQpm
b3IgYWNfZmlsZSBpbiAkYWNfZmlsZXMKZG8KICBjYXNlICRhY19maWxlIGluCiAgICAqLiRhY19l
eHQgfCAqLnhjb2ZmIHwgKi50ZHMgfCAqLmQgfCAqLnBkYiB8ICoueFNZTSB8ICouYmIgfCAqLmJi
ZyB8ICoubWFwIHwgKi5pbmYgfCAqLmRTWU0gfCAqLm8gfCAqLm9iaiApIDs7CiAgICAqICkgYWNf
cm1maWxlcz0iJGFjX3JtZmlsZXMgJGFjX2ZpbGUiOzsKICBlc2FjCmRvbmUKcm0gLWYgJGFjX3Jt
ZmlsZXMKCmlmIHsgeyBhY190cnk9IiRhY19saW5rX2RlZmF1bHQiCmNhc2UgIigoJGFjX3RyeSIg
aW4KICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKICAqKSBhY190
cnlfZWNobz0kYWNfdHJ5OzsKZXNhYwpldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgokYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsg
fSA+JjUKICAoZXZhbCAiJGFjX2xpbmtfZGVmYXVsdCIpIDI+JjUKICBhY19zdGF0dXM9JD8KICAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+
JjUKICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuIDoKICAjIEF1dG9jb25mLTIuMTMgY291
bGQgc2V0IHRoZSBhY19jdl9leGVleHQgdmFyaWFibGUgdG8gYG5vJy4KIyBTbyBpZ25vcmUgYSB2
YWx1ZSBvZiBgbm8nLCBvdGhlcndpc2UgdGhpcyB3b3VsZCBsZWFkIHRvIGBFWEVFWFQgPSBubycK
IyBpbiBhIE1ha2VmaWxlLiAgV2Ugc2hvdWxkIG5vdCBvdmVycmlkZSBhY19jdl9leGVleHQgaWYg
aXQgd2FzIGNhY2hlZCwKIyBzbyB0aGF0IHRoZSB1c2VyIGNhbiBzaG9ydC1jaXJjdWl0IHRoaXMg
dGVzdCBmb3IgY29tcGlsZXJzIHVua25vd24gdG8KIyBBdXRvY29uZi4KZm9yIGFjX2ZpbGUgaW4g
JGFjX2ZpbGVzICcnCmRvCiAgdGVzdCAtZiAiJGFjX2ZpbGUiIHx8IGNvbnRpbnVlCiAgY2FzZSAk
YWNfZmlsZSBpbgogICAgKi4kYWNfZXh0IHwgKi54Y29mZiB8ICoudGRzIHwgKi5kIHwgKi5wZGIg
fCAqLnhTWU0gfCAqLmJiIHwgKi5iYmcgfCAqLm1hcCB8ICouaW5mIHwgKi5kU1lNIHwgKi5vIHwg
Ki5vYmogKQoJOzsKICAgIFthYl0ub3V0ICkKCSMgV2UgZm91bmQgdGhlIGRlZmF1bHQgZXhlY3V0
YWJsZSwgYnV0IGV4ZWV4dD0nJyBpcyBtb3N0CgkjIGNlcnRhaW5seSByaWdodC4KCWJyZWFrOzsK
ICAgICouKiApCglpZiB0ZXN0ICIke2FjX2N2X2V4ZWV4dCtzZXR9IiA9IHNldCAmJiB0ZXN0ICIk
YWNfY3ZfZXhlZXh0IiAhPSBubzsKCXRoZW4gOjsgZWxzZQoJICAgYWNfY3ZfZXhlZXh0PWBleHBy
ICIkYWNfZmlsZSIgOiAnW14uXSpcKFwuLipcKSdgCglmaQoJIyBXZSBzZXQgYWNfY3ZfZXhlZXh0
IGhlcmUgYmVjYXVzZSB0aGUgbGF0ZXIgdGVzdCBmb3IgaXQgaXMgbm90CgkjIHNhZmU6IGNyb3Nz
IGNvbXBpbGVycyBtYXkgbm90IGFkZCB0aGUgc3VmZml4IGlmIGdpdmVuIGFuIGAtbycKCSMgYXJn
dW1lbnQsIHNvIHdlIG1heSBuZWVkIHRvIGtub3cgaXQgYXQgdGhhdCBwb2ludCBhbHJlYWR5LgoJ
IyBFdmVuIGlmIHRoaXMgc2VjdGlvbiBsb29rcyBjcnVmdHk6IGl0IGhhcyB0aGUgYWR2YW50YWdl
IG9mCgkjIGFjdHVhbGx5IHdvcmtpbmcuCglicmVhazs7CiAgICAqICkKCWJyZWFrOzsKICBlc2Fj
CmRvbmUKdGVzdCAiJGFjX2N2X2V4ZWV4dCIgPSBubyAmJiBhY19jdl9leGVleHQ9CgplbHNlCiAg
YWNfZmlsZT0nJwpmaQppZiB0ZXN0IC16ICIkYWNfZmlsZSI7IHRoZW4gOgogIHsgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiRhc19lY2hvICJu
byIgPiY2OyB9CiRhc19lY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQpzZWQg
J3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Cgp7IHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKJGFzX2VjaG8gIiRh
c19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQphc19mbl9lcnJvciA3NyAiQyBjb21w
aWxlciBjYW5ub3QgY3JlYXRlIGV4ZWN1dGFibGVzClNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3Jl
IGRldGFpbHMiICIkTElORU5PIiA1OyB9CmVsc2UKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKJGFzX2VjaG8gInllcyIgPiY2OyB9CmZp
CnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEMg
Y29tcGlsZXIgZGVmYXVsdCBvdXRwdXQgZmlsZSBuYW1lIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tp
bmcgZm9yIEMgY29tcGlsZXIgZGVmYXVsdCBvdXRwdXQgZmlsZSBuYW1lLi4uICIgPiY2OyB9Cnsg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfZmlsZSIg
PiY1CiRhc19lY2hvICIkYWNfZmlsZSIgPiY2OyB9CmFjX2V4ZWV4dD0kYWNfY3ZfZXhlZXh0Cgpy
bSAtZiAtciBhLm91dCBhLm91dC5kU1lNIGEuZXhlIGNvbmZ0ZXN0JGFjX2N2X2V4ZWV4dCBiLm91
dAphY19jbGVhbl9maWxlcz0kYWNfY2xlYW5fZmlsZXNfc2F2ZQp7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzdWZmaXggb2YgZXhlY3V0YWJsZXMi
ID4mNQokYXNfZWNob19uICJjaGVja2luZyBmb3Igc3VmZml4IG9mIGV4ZWN1dGFibGVzLi4uICIg
PiY2OyB9CmlmIHsgeyBhY190cnk9IiRhY19saW5rIgpjYXNlICIoKCRhY190cnkiIGluCiAgKlwi
KiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7CiAgKikgYWNfdHJ5X2VjaG89
JGFjX3RyeTs7CmVzYWMKZXZhbCBhY190cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIKJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0gPiY1CiAg
KGV2YWwgIiRhY19saW5rIikgMj4mNQogIGFjX3N0YXR1cz0kPwogICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIHRlc3QgJGFjX3N0
YXR1cyA9IDA7IH07IHRoZW4gOgogICMgSWYgYm90aCBgY29uZnRlc3QuZXhlJyBhbmQgYGNvbmZ0
ZXN0JyBhcmUgYHByZXNlbnQnICh3ZWxsLCBvYnNlcnZhYmxlKQojIGNhdGNoIGBjb25mdGVzdC5l
eGUnLiAgRm9yIGluc3RhbmNlIHdpdGggQ3lnd2luLCBgbHMgY29uZnRlc3QnIHdpbGwKIyB3b3Jr
IHByb3Blcmx5IChpLmUuLCByZWZlciB0byBgY29uZnRlc3QuZXhlJyksIHdoaWxlIGl0IHdvbid0
IHdpdGgKIyBgcm0nLgpmb3IgYWNfZmlsZSBpbiBjb25mdGVzdC5leGUgY29uZnRlc3QgY29uZnRl
c3QuKjsgZG8KICB0ZXN0IC1mICIkYWNfZmlsZSIgfHwgY29udGludWUKICBjYXNlICRhY19maWxl
IGluCiAgICAqLiRhY19leHQgfCAqLnhjb2ZmIHwgKi50ZHMgfCAqLmQgfCAqLnBkYiB8ICoueFNZ
TSB8ICouYmIgfCAqLmJiZyB8ICoubWFwIHwgKi5pbmYgfCAqLmRTWU0gfCAqLm8gfCAqLm9iaiAp
IDs7CiAgICAqLiogKSBhY19jdl9leGVleHQ9YGV4cHIgIiRhY19maWxlIiA6ICdbXi5dKlwoXC4u
KlwpJ2AKCSAgYnJlYWs7OwogICAgKiApIGJyZWFrOzsKICBlc2FjCmRvbmUKZWxzZQogIHsgeyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdk
JzoiID4mNQokYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9CmFz
X2ZuX2Vycm9yICQ/ICJjYW5ub3QgY29tcHV0ZSBzdWZmaXggb2YgZXhlY3V0YWJsZXM6IGNhbm5v
dCBjb21waWxlIGFuZCBsaW5rClNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIk
TElORU5PIiA1OyB9CmZpCnJtIC1mIGNvbmZ0ZXN0IGNvbmZ0ZXN0JGFjX2N2X2V4ZWV4dAp7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2V4ZWV4
dCIgPiY1CiRhc19lY2hvICIkYWNfY3ZfZXhlZXh0IiA+JjY7IH0KCnJtIC1mIGNvbmZ0ZXN0LiRh
Y19leHQKRVhFRVhUPSRhY19jdl9leGVleHQKYWNfZXhlZXh0PSRFWEVFWFQKY2F0IGNvbmZkZWZz
LmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCiNp
bmNsdWRlIDxzdGRpby5oPgppbnQKbWFpbiAoKQp7CkZJTEUgKmYgPSBmb3BlbiAoImNvbmZ0ZXN0
Lm91dCIsICJ3Iik7CiByZXR1cm4gZmVycm9yIChmKSB8fCBmY2xvc2UgKGYpICE9IDA7CgogIDsK
ICByZXR1cm4gMDsKfQpfQUNFT0YKYWNfY2xlYW5fZmlsZXM9IiRhY19jbGVhbl9maWxlcyBjb25m
dGVzdC5vdXQiCiMgQ2hlY2sgdGhhdCB0aGUgY29tcGlsZXIgcHJvZHVjZXMgZXhlY3V0YWJsZXMg
d2UgY2FuIHJ1bi4gIElmIG5vdCwgZWl0aGVyCiMgdGhlIGNvbXBpbGVyIGlzIGJyb2tlbiwgb3Ig
d2UgY3Jvc3MgY29tcGlsZS4KeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiBjaGVja2luZyB3aGV0aGVyIHdlIGFyZSBjcm9zcyBjb21waWxpbmciID4mNQokYXNfZWNob19u
ICJjaGVja2luZyB3aGV0aGVyIHdlIGFyZSBjcm9zcyBjb21waWxpbmcuLi4gIiA+JjY7IH0KaWYg
dGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgIT0geWVzOyB0aGVuCiAgeyB7IGFjX3RyeT0iJGFjX2xp
bmsiCmNhc2UgIigoJGFjX3RyeSIgaW4KICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hv
PVwkYWNfdHJ5OzsKICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKZXNhYwpldmFsIGFjX3RyeV9l
Y2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgokYXNf
ZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKICAoZXZhbCAiJGFjX2xpbmsiKSAyPiY1CiAgYWNf
c3RhdHVzPSQ/CiAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0g
JGFjX3N0YXR1cyIgPiY1CiAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQogIGlmIHsgYWNfdHJ5PScu
L2NvbmZ0ZXN0JGFjX2N2X2V4ZWV4dCcKICB7IHsgY2FzZSAiKCgkYWNfdHJ5IiBpbgogICpcIiog
fCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OwogICopIGFjX3RyeV9lY2hvPSRh
Y190cnk7Owplc2FjCmV2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogJGFjX3RyeV9lY2hvXCIiCiRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQogIChl
dmFsICIkYWNfdHJ5IikgMj4mNQogIGFjX3N0YXR1cz0kPwogICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIHRlc3QgJGFjX3N0YXR1
cyA9IDA7IH07IH07IHRoZW4KICAgIGNyb3NzX2NvbXBpbGluZz1ubwogIGVsc2UKICAgIGlmIHRl
c3QgIiRjcm9zc19jb21waWxpbmciID0gbWF5YmU7IHRoZW4KCWNyb3NzX2NvbXBpbGluZz15ZXMK
ICAgIGVsc2UKCXsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJv
cjogaW4gXGAkYWNfcHdkJzoiID4mNQokYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNf
cHdkJzoiID4mMjt9CmFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgcnVuIEMgY29tcGlsZWQgcHJvZ3Jh
bXMuCklmIHlvdSBtZWFudCB0byBjcm9zcyBjb21waWxlLCB1c2UgXGAtLWhvc3QnLgpTZWUgXGBj
b25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQogICAgZmkKICBmaQpm
aQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGNyb3Nz
X2NvbXBpbGluZyIgPiY1CiRhc19lY2hvICIkY3Jvc3NfY29tcGlsaW5nIiA+JjY7IH0KCnJtIC1m
IGNvbmZ0ZXN0LiRhY19leHQgY29uZnRlc3QkYWNfY3ZfZXhlZXh0IGNvbmZ0ZXN0Lm91dAphY19j
bGVhbl9maWxlcz0kYWNfY2xlYW5fZmlsZXNfc2F2ZQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzdWZmaXggb2Ygb2JqZWN0IGZpbGVzIiA+JjUK
JGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN1ZmZpeCBvZiBvYmplY3QgZmlsZXMuLi4gIiA+JjY7
IH0KaWYgJHthY19jdl9vYmpleHQrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNo
ZWQpICIgPiY2CmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNf
ZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCmludAptYWluICgpCnsKCiAgOwogIHJldHVybiAw
Owp9Cl9BQ0VPRgpybSAtZiBjb25mdGVzdC5vIGNvbmZ0ZXN0Lm9iagppZiB7IHsgYWNfdHJ5PSIk
YWNfY29tcGlsZSIKY2FzZSAiKCgkYWNfdHJ5IiBpbgogICpcIiogfCAqXGAqIHwgKlxcKikgYWNf
dHJ5X2VjaG89XCRhY190cnk7OwogICopIGFjX3RyeV9lY2hvPSRhY190cnk7Owplc2FjCmV2YWwg
YWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hv
XCIiCiRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQogIChldmFsICIkYWNfY29tcGlsZSIp
IDI+JjUKICBhY19zdGF0dXM9JD8KICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVu
IDoKICBmb3IgYWNfZmlsZSBpbiBjb25mdGVzdC5vIGNvbmZ0ZXN0Lm9iaiBjb25mdGVzdC4qOyBk
bwogIHRlc3QgLWYgIiRhY19maWxlIiB8fCBjb250aW51ZTsKICBjYXNlICRhY19maWxlIGluCiAg
ICAqLiRhY19leHQgfCAqLnhjb2ZmIHwgKi50ZHMgfCAqLmQgfCAqLnBkYiB8ICoueFNZTSB8ICou
YmIgfCAqLmJiZyB8ICoubWFwIHwgKi5pbmYgfCAqLmRTWU0gKSA7OwogICAgKikgYWNfY3Zfb2Jq
ZXh0PWBleHByICIkYWNfZmlsZSIgOiAnLipcLlwoLipcKSdgCiAgICAgICBicmVhazs7CiAgZXNh
Ywpkb25lCmVsc2UKICAkYXNfZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUK
c2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQoKeyB7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiRhc19lY2hv
ICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KYXNfZm5fZXJyb3IgJD8gImNh
bm5vdCBjb21wdXRlIHN1ZmZpeCBvZiBvYmplY3QgZmlsZXM6IGNhbm5vdCBjb21waWxlClNlZSBc
YGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CmZpCnJtIC1mIGNv
bmZ0ZXN0LiRhY19jdl9vYmpleHQgY29uZnRlc3QuJGFjX2V4dApmaQp7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X29iamV4dCIgPiY1CiRhc19l
Y2hvICIkYWNfY3Zfb2JqZXh0IiA+JjY7IH0KT0JKRVhUPSRhY19jdl9vYmpleHQKYWNfb2JqZXh0
PSRPQkpFWFQKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu
ZyB3aGV0aGVyIHdlIGFyZSB1c2luZyB0aGUgR05VIEMgY29tcGlsZXIiID4mNQokYXNfZWNob19u
ICJjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1c2luZyB0aGUgR05VIEMgY29tcGlsZXIuLi4gIiA+
JjY7IH0KaWYgJHthY19jdl9jX2NvbXBpbGVyX2dudSs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2Vj
aG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNv
bmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwoKaW50Cm1haW4gKCkKewojaWZu
ZGVmIF9fR05VQ19fCiAgICAgICBjaG9rZSBtZQojZW5kaWYKCiAgOwogIHJldHVybiAwOwp9Cl9B
Q0VPRgppZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CiAgYWNfY29tcGls
ZXJfZ251PXllcwplbHNlCiAgYWNfY29tcGlsZXJfZ251PW5vCmZpCnJtIC1mIGNvcmUgY29uZnRl
c3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAphY19jdl9jX2NvbXBp
bGVyX2dudT0kYWNfY29tcGlsZXJfZ251CgpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2NfY29tcGlsZXJfZ251IiA+JjUKJGFzX2VjaG8g
IiRhY19jdl9jX2NvbXBpbGVyX2dudSIgPiY2OyB9CmlmIHRlc3QgJGFjX2NvbXBpbGVyX2dudSA9
IHllczsgdGhlbgogIEdDQz15ZXMKZWxzZQogIEdDQz0KZmkKYWNfdGVzdF9DRkxBR1M9JHtDRkxB
R1Mrc2V0fQphY19zYXZlX0NGTEFHUz0kQ0ZMQUdTCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAkQ0MgYWNjZXB0cyAtZyIgPiY1CiRhc19l
Y2hvX24gImNoZWNraW5nIHdoZXRoZXIgJENDIGFjY2VwdHMgLWcuLi4gIiA+JjY7IH0KaWYgJHth
Y19jdl9wcm9nX2NjX2crOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIg
PiY2CmVsc2UKICBhY19zYXZlX2Nfd2Vycm9yX2ZsYWc9JGFjX2Nfd2Vycm9yX2ZsYWcKICAgYWNf
Y193ZXJyb3JfZmxhZz15ZXMKICAgYWNfY3ZfcHJvZ19jY19nPW5vCiAgIENGTEFHUz0iLWciCiAg
IGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZk
ZWZzLmguICAqLwoKaW50Cm1haW4gKCkKewoKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFj
X2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKICBhY19jdl9wcm9nX2NjX2c9eWVz
CmVsc2UKICBDRkxBR1M9IiIKICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRl
c3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCgppbnQKbWFpbiAoKQp7CgogIDsKICBy
ZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4g
OgoKZWxzZQogIGFjX2Nfd2Vycm9yX2ZsYWc9JGFjX3NhdmVfY193ZXJyb3JfZmxhZwoJIENGTEFH
Uz0iLWciCgkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBl
bmQgY29uZmRlZnMuaC4gICovCgppbnQKbWFpbiAoKQp7CgogIDsKICByZXR1cm4gMDsKfQpfQUNF
T0YKaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgogIGFjX2N2X3Byb2df
Y2NfZz15ZXMKZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBj
b25mdGVzdC4kYWNfZXh0CmZpCnJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19v
YmpleHQgY29uZnRlc3QuJGFjX2V4dApmaQpybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVz
dC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKICAgYWNfY193ZXJyb3JfZmxhZz0kYWNfc2F2
ZV9jX3dlcnJvcl9mbGFnCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiAkYWNfY3ZfcHJvZ19jY19nIiA+JjUKJGFzX2VjaG8gIiRhY19jdl9wcm9nX2Nj
X2ciID4mNjsgfQppZiB0ZXN0ICIkYWNfdGVzdF9DRkxBR1MiID0gc2V0OyB0aGVuCiAgQ0ZMQUdT
PSRhY19zYXZlX0NGTEFHUwplbGlmIHRlc3QgJGFjX2N2X3Byb2dfY2NfZyA9IHllczsgdGhlbgog
IGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgICBDRkxBR1M9Ii1nIC1PMiIKICBlbHNlCiAg
ICBDRkxBR1M9Ii1nIgogIGZpCmVsc2UKICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogICAg
Q0ZMQUdTPSItTzIiCiAgZWxzZQogICAgQ0ZMQUdTPQogIGZpCmZpCnsgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRDQyBvcHRpb24gdG8gYWNjZXB0
IElTTyBDODkiID4mNQokYXNfZWNob19uICJjaGVja2luZyBmb3IgJENDIG9wdGlvbiB0byBhY2Nl
cHQgSVNPIEM4OS4uLiAiID4mNjsgfQppZiAke2FjX2N2X3Byb2dfY2NfYzg5Kzp9IGZhbHNlOyB0
aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCiAgYWNfY3ZfcHJvZ19jY19j
ODk9bm8KYWNfc2F2ZV9DQz0kQ0MKY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3Qu
JGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCiNpbmNsdWRlIDxzdGRhcmcuaD4KI2luY2x1
ZGUgPHN0ZGlvLmg+CnN0cnVjdCBzdGF0OwovKiBNb3N0IG9mIHRoZSBmb2xsb3dpbmcgdGVzdHMg
YXJlIHN0b2xlbiBmcm9tIFJDUyA1LjcncyBzcmMvY29uZi5zaC4gICovCnN0cnVjdCBidWYgeyBp
bnQgeDsgfTsKRklMRSAqICgqcmNzb3BlbikgKHN0cnVjdCBidWYgKiwgc3RydWN0IHN0YXQgKiwg
aW50KTsKc3RhdGljIGNoYXIgKmUgKHAsIGkpCiAgICAgY2hhciAqKnA7CiAgICAgaW50IGk7CnsK
ICByZXR1cm4gcFtpXTsKfQpzdGF0aWMgY2hhciAqZiAoY2hhciAqICgqZykgKGNoYXIgKiosIGlu
dCksIGNoYXIgKipwLCAuLi4pCnsKICBjaGFyICpzOwogIHZhX2xpc3QgdjsKICB2YV9zdGFydCAo
dixwKTsKICBzID0gZyAocCwgdmFfYXJnICh2LGludCkpOwogIHZhX2VuZCAodik7CiAgcmV0dXJu
IHM7Cn0KCi8qIE9TRiA0LjAgQ29tcGFxIGNjIGlzIHNvbWUgc29ydCBvZiBhbG1vc3QtQU5TSSBi
eSBkZWZhdWx0LiAgSXQgaGFzCiAgIGZ1bmN0aW9uIHByb3RvdHlwZXMgYW5kIHN0dWZmLCBidXQg
bm90ICdceEhIJyBoZXggY2hhcmFjdGVyIGNvbnN0YW50cy4KICAgVGhlc2UgZG9uJ3QgcHJvdm9r
ZSBhbiBlcnJvciB1bmZvcnR1bmF0ZWx5LCBpbnN0ZWFkIGFyZSBzaWxlbnRseSB0cmVhdGVkCiAg
IGFzICd4Jy4gIFRoZSBmb2xsb3dpbmcgaW5kdWNlcyBhbiBlcnJvciwgdW50aWwgLXN0ZCBpcyBh
ZGRlZCB0byBnZXQKICAgcHJvcGVyIEFOU0kgbW9kZS4gIEN1cmlvdXNseSAnXHgwMCchPSd4JyBh
bHdheXMgY29tZXMgb3V0IHRydWUsIGZvciBhbgogICBhcnJheSBzaXplIGF0IGxlYXN0LiAgSXQn
cyBuZWNlc3NhcnkgdG8gd3JpdGUgJ1x4MDAnPT0wIHRvIGdldCBzb21ldGhpbmcKICAgdGhhdCdz
IHRydWUgb25seSB3aXRoIC1zdGQuICAqLwppbnQgb3NmNF9jY19hcnJheSBbJ1x4MDAnID09IDAg
PyAxIDogLTFdOwoKLyogSUJNIEMgNiBmb3IgQUlYIGlzIGFsbW9zdC1BTlNJIGJ5IGRlZmF1bHQs
IGJ1dCBpdCByZXBsYWNlcyBtYWNybyBwYXJhbWV0ZXJzCiAgIGluc2lkZSBzdHJpbmdzIGFuZCBj
aGFyYWN0ZXIgY29uc3RhbnRzLiAgKi8KI2RlZmluZSBGT08oeCkgJ3gnCmludCB4bGM2X2NjX2Fy
cmF5W0ZPTyhhKSA9PSAneCcgPyAxIDogLTFdOwoKaW50IHRlc3QgKGludCBpLCBkb3VibGUgeCk7
CnN0cnVjdCBzMSB7aW50ICgqZikgKGludCBhKTt9OwpzdHJ1Y3QgczIge2ludCAoKmYpIChkb3Vi
bGUgYSk7fTsKaW50IHBhaXJuYW1lcyAoaW50LCBjaGFyICoqLCBGSUxFICooKikoc3RydWN0IGJ1
ZiAqLCBzdHJ1Y3Qgc3RhdCAqLCBpbnQpLCBpbnQsIGludCk7CmludCBhcmdjOwpjaGFyICoqYXJn
djsKaW50Cm1haW4gKCkKewpyZXR1cm4gZiAoZSwgYXJndiwgMCkgIT0gYXJndlswXSAgfHwgIGYg
KGUsIGFyZ3YsIDEpICE9IGFyZ3ZbMV07CiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgpmb3IgYWNf
YXJnIGluICcnIC1xbGFuZ2x2bD1leHRjODkgLXFsYW5nbHZsPWFuc2kgLXN0ZCBcCgktQWUgIi1B
YSAtRF9IUFVYX1NPVVJDRSIgIi1YYyAtRF9fRVhURU5TSU9OU19fIgpkbwogIENDPSIkYWNfc2F2
ZV9DQyAkYWNfYXJnIgogIGlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoK
ICBhY19jdl9wcm9nX2NjX2M4OT0kYWNfYXJnCmZpCnJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNv
bmZ0ZXN0LiRhY19vYmpleHQKICB0ZXN0ICJ4JGFjX2N2X3Byb2dfY2NfYzg5IiAhPSAieG5vIiAm
JiBicmVhawpkb25lCnJtIC1mIGNvbmZ0ZXN0LiRhY19leHQKQ0M9JGFjX3NhdmVfQ0MKCmZpCiMg
QUNfQ0FDSEVfVkFMCmNhc2UgIngkYWNfY3ZfcHJvZ19jY19jODkiIGluCiAgeCkKICAgIHsgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBub25lIG5lZWRlZCIg
PiY1CiRhc19lY2hvICJub25lIG5lZWRlZCIgPiY2OyB9IDs7CiAgeG5vKQogICAgeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHVuc3VwcG9ydGVkIiA+JjUK
JGFzX2VjaG8gInVuc3VwcG9ydGVkIiA+JjY7IH0gOzsKICAqKQogICAgQ0M9IiRDQyAkYWNfY3Zf
cHJvZ19jY19jODkiCiAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IHJlc3VsdDogJGFjX2N2X3Byb2dfY2NfYzg5IiA+JjUKJGFzX2VjaG8gIiRhY19jdl9wcm9nX2Nj
X2M4OSIgPiY2OyB9IDs7CmVzYWMKaWYgdGVzdCAieCRhY19jdl9wcm9nX2NjX2M4OSIgIT0geG5v
OyB0aGVuIDoKCmZpCgphY19leHQ9YwphY19jcHA9JyRDUFAgJENQUEZMQUdTJwphY19jb21waWxl
PSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCmFjX2xpbms9
JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29u
ZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCmFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxl
cl9nbnUKCmRlcGNjPSIkQ0MiICAgYW1fY29tcGlsZXJfbGlzdD0KCnsgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZGVwZW5kZW5jeSBzdHlsZSBvZiAkZGVw
Y2MiID4mNQokYXNfZWNob19uICJjaGVja2luZyBkZXBlbmRlbmN5IHN0eWxlIG9mICRkZXBjYy4u
LiAiID4mNjsgfQppZiAke2FtX2N2X0NDX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlKzp9IGZh
bHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCiAgaWYgdGVzdCAt
eiAiJEFNREVQX1RSVUUiICYmIHRlc3QgLWYgIiRhbV9kZXBjb21wIjsgdGhlbgogICMgV2UgbWFr
ZSBhIHN1YmRpciBhbmQgZG8gdGhlIHRlc3RzIHRoZXJlLiAgT3RoZXJ3aXNlIHdlIGNhbiBlbmQg
dXAKICAjIG1ha2luZyBib2d1cyBmaWxlcyB0aGF0IHdlIGRvbid0IGtub3cgYWJvdXQgYW5kIG5l
dmVyIHJlbW92ZS4gIEZvcgogICMgaW5zdGFuY2UgaXQgd2FzIHJlcG9ydGVkIHRoYXQgb24gSFAt
VVggdGhlIGdjYyB0ZXN0IHdpbGwgZW5kIHVwCiAgIyBtYWtpbmcgYSBkdW1teSBmaWxlIG5hbWVk
ICdEJyAtLSBiZWNhdXNlICctTUQnIG1lYW5zICJwdXQgdGhlIG91dHB1dAogICMgaW4gRCIuCiAg
cm0gLXJmIGNvbmZ0ZXN0LmRpcgogIG1rZGlyIGNvbmZ0ZXN0LmRpcgogICMgQ29weSBkZXBjb21w
IHRvIHN1YmRpciBiZWNhdXNlIG90aGVyd2lzZSB3ZSB3b24ndCBmaW5kIGl0IGlmIHdlJ3JlCiAg
IyB1c2luZyBhIHJlbGF0aXZlIGRpcmVjdG9yeS4KICBjcCAiJGFtX2RlcGNvbXAiIGNvbmZ0ZXN0
LmRpcgogIGNkIGNvbmZ0ZXN0LmRpcgogICMgV2Ugd2lsbCBidWlsZCBvYmplY3RzIGFuZCBkZXBl
bmRlbmNpZXMgaW4gYSBzdWJkaXJlY3RvcnkgYmVjYXVzZQogICMgaXQgaGVscHMgdG8gZGV0ZWN0
IGluYXBwbGljYWJsZSBkZXBlbmRlbmN5IG1vZGVzLiAgRm9yIGluc3RhbmNlCiAgIyBib3RoIFRy
dTY0J3MgY2MgYW5kIElDQyBzdXBwb3J0IC1NRCB0byBvdXRwdXQgZGVwZW5kZW5jaWVzIGFzIGEK
ICAjIHNpZGUgZWZmZWN0IG9mIGNvbXBpbGF0aW9uLCBidXQgSUNDIHdpbGwgcHV0IHRoZSBkZXBl
bmRlbmNpZXMgaW4KICAjIHRoZSBjdXJyZW50IGRpcmVjdG9yeSB3aGlsZSBUcnU2NCB3aWxsIHB1
dCB0aGVtIGluIHRoZSBvYmplY3QKICAjIGRpcmVjdG9yeS4KICBta2RpciBzdWIKCiAgYW1fY3Zf
Q0NfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGU9bm9uZQogIGlmIHRlc3QgIiRhbV9jb21waWxl
cl9saXN0IiA9ICIiOyB0aGVuCiAgICAgYW1fY29tcGlsZXJfbGlzdD1gc2VkIC1uICdzL14jKlwo
W2EtekEtWjAtOV0qXCkpJC9cMS9wJyA8IC4vZGVwY29tcGAKICBmaQogIGFtX191bml2ZXJzYWw9
ZmFsc2UKICBjYXNlICIgJGRlcGNjICIgaW4gIygKICAgICAqXCAtYXJjaFwgKlwgLWFyY2hcICop
IGFtX191bml2ZXJzYWw9dHJ1ZSA7OwogICAgIGVzYWMKCiAgZm9yIGRlcG1vZGUgaW4gJGFtX2Nv
bXBpbGVyX2xpc3Q7IGRvCiAgICAjIFNldHVwIGEgc291cmNlIHdpdGggbWFueSBkZXBlbmRlbmNp
ZXMsIGJlY2F1c2Ugc29tZSBjb21waWxlcnMKICAgICMgbGlrZSB0byB3cmFwIGxhcmdlIGRlcGVu
ZGVuY3kgbGlzdHMgb24gY29sdW1uIDgwICh3aXRoIFwpLCBhbmQKICAgICMgd2Ugc2hvdWxkIG5v
dCBjaG9vc2UgYSBkZXBjb21wIG1vZGUgd2hpY2ggaXMgY29uZnVzZWQgYnkgdGhpcy4KICAgICMK
ICAgICMgV2UgbmVlZCB0byByZWNyZWF0ZSB0aGVzZSBmaWxlcyBmb3IgZWFjaCB0ZXN0LCBhcyB0
aGUgY29tcGlsZXIgbWF5CiAgICAjIG92ZXJ3cml0ZSBzb21lIG9mIHRoZW0gd2hlbiB0ZXN0aW5n
IHdpdGggb2JzY3VyZSBjb21tYW5kIGxpbmVzLgogICAgIyBUaGlzIGhhcHBlbnMgYXQgbGVhc3Qg
d2l0aCB0aGUgQUlYIEMgY29tcGlsZXIuCiAgICA6ID4gc3ViL2NvbmZ0ZXN0LmMKICAgIGZvciBp
IGluIDEgMiAzIDQgNSA2OyBkbwogICAgICBlY2hvICcjaW5jbHVkZSAiY29uZnRzdCckaScuaCIn
ID4+IHN1Yi9jb25mdGVzdC5jCiAgICAgICMgVXNpbmcgIjogPiBzdWIvY29uZnRzdCRpLmgiIGNy
ZWF0ZXMgb25seSBzdWIvY29uZnRzdDEuaCB3aXRoCiAgICAgICMgU29sYXJpcyAxMCAvYmluL3No
LgogICAgICBlY2hvICcvKiBkdW1teSAqLycgPiBzdWIvY29uZnRzdCRpLmgKICAgIGRvbmUKICAg
IGVjaG8gIiR7YW1fX2luY2x1ZGV9ICR7YW1fX3F1b3RlfXN1Yi9jb25mdGVzdC5QbyR7YW1fX3F1
b3RlfSIgPiBjb25mbWYKCiAgICAjIFdlIGNoZWNrIHdpdGggJy1jJyBhbmQgJy1vJyBmb3IgdGhl
IHNha2Ugb2YgdGhlICJkYXNobXN0ZG91dCIKICAgICMgbW9kZS4gIEl0IHR1cm5zIG91dCB0aGF0
IHRoZSBTdW5Qcm8gQysrIGNvbXBpbGVyIGRvZXMgbm90IHByb3Blcmx5CiAgICAjIGhhbmRsZSAn
LU0gLW8nLCBhbmQgd2UgbmVlZCB0byBkZXRlY3QgdGhpcy4gIEFsc28sIHNvbWUgSW50ZWwKICAg
ICMgdmVyc2lvbnMgaGFkIHRyb3VibGUgd2l0aCBvdXRwdXQgaW4gc3ViZGlycy4KICAgIGFtX19v
Ymo9c3ViL2NvbmZ0ZXN0LiR7T0JKRVhULW99CiAgICBhbV9fbWludXNfb2JqPSItbyAkYW1fX29i
aiIKICAgIGNhc2UgJGRlcG1vZGUgaW4KICAgIGdjYykKICAgICAgIyBUaGlzIGRlcG1vZGUgY2F1
c2VzIGEgY29tcGlsZXIgcmFjZSBpbiB1bml2ZXJzYWwgbW9kZS4KICAgICAgdGVzdCAiJGFtX191
bml2ZXJzYWwiID0gZmFsc2UgfHwgY29udGludWUKICAgICAgOzsKICAgIG5vc2lkZWVmZmVjdCkK
ICAgICAgIyBBZnRlciB0aGlzIHRhZywgbWVjaGFuaXNtcyBhcmUgbm90IGJ5IHNpZGUtZWZmZWN0
LCBzbyB0aGV5J2xsCiAgICAgICMgb25seSBiZSB1c2VkIHdoZW4gZXhwbGljaXRseSByZXF1ZXN0
ZWQuCiAgICAgIGlmIHRlc3QgIngkZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmciID0geHllczsg
dGhlbgoJY29udGludWUKICAgICAgZWxzZQoJYnJlYWsKICAgICAgZmkKICAgICAgOzsKICAgIG1z
dmM3IHwgbXN2Yzdtc3lzIHwgbXN2aXN1YWxjcHAgfCBtc3ZjbXN5cykKICAgICAgIyBUaGlzIGNv
bXBpbGVyIHdvbid0IGdyb2sgJy1jIC1vJywgYnV0IGFsc28sIHRoZSBtaW51c28gdGVzdCBoYXMK
ICAgICAgIyBub3QgcnVuIHlldC4gIFRoZXNlIGRlcG1vZGVzIGFyZSBsYXRlIGVub3VnaCBpbiB0
aGUgZ2FtZSwgYW5kCiAgICAgICMgc28gd2VhayB0aGF0IHRoZWlyIGZ1bmN0aW9uaW5nIHNob3Vs
ZCBub3QgYmUgaW1wYWN0ZWQuCiAgICAgIGFtX19vYmo9Y29uZnRlc3QuJHtPQkpFWFQtb30KICAg
ICAgYW1fX21pbnVzX29iaj0KICAgICAgOzsKICAgIG5vbmUpIGJyZWFrIDs7CiAgICBlc2FjCiAg
ICBpZiBkZXBtb2RlPSRkZXBtb2RlIFwKICAgICAgIHNvdXJjZT1zdWIvY29uZnRlc3QuYyBvYmpl
Y3Q9JGFtX19vYmogXAogICAgICAgZGVwZmlsZT1zdWIvY29uZnRlc3QuUG8gdG1wZGVwZmlsZT1z
dWIvY29uZnRlc3QuVFBvIFwKICAgICAgICRTSEVMTCAuL2RlcGNvbXAgJGRlcGNjIC1jICRhbV9f
bWludXNfb2JqIHN1Yi9jb25mdGVzdC5jIFwKICAgICAgICAgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0
LmVyciAmJgogICAgICAgZ3JlcCBzdWIvY29uZnRzdDEuaCBzdWIvY29uZnRlc3QuUG8gPiAvZGV2
L251bGwgMj4mMSAmJgogICAgICAgZ3JlcCBzdWIvY29uZnRzdDYuaCBzdWIvY29uZnRlc3QuUG8g
PiAvZGV2L251bGwgMj4mMSAmJgogICAgICAgZ3JlcCAkYW1fX29iaiBzdWIvY29uZnRlc3QuUG8g
PiAvZGV2L251bGwgMj4mMSAmJgogICAgICAgJHtNQUtFLW1ha2V9IC1zIC1mIGNvbmZtZiA+IC9k
ZXYvbnVsbCAyPiYxOyB0aGVuCiAgICAgICMgaWNjIGRvZXNuJ3QgY2hva2Ugb24gdW5rbm93biBv
cHRpb25zLCBpdCB3aWxsIGp1c3QgaXNzdWUgd2FybmluZ3MKICAgICAgIyBvciByZW1hcmtzIChl
dmVuIHdpdGggLVdlcnJvcikuICBTbyB3ZSBncmVwIHN0ZGVyciBmb3IgYW55IG1lc3NhZ2UKICAg
ICAgIyB0aGF0IHNheXMgYW4gb3B0aW9uIHdhcyBpZ25vcmVkIG9yIG5vdCBzdXBwb3J0ZWQuCiAg
ICAgICMgV2hlbiBnaXZlbiAtTVAsIGljYyA3LjAgYW5kIDcuMSBjb21wbGFpbiB0aHVzbHk6CiAg
ICAgICMgICBpY2M6IENvbW1hbmQgbGluZSB3YXJuaW5nOiBpZ25vcmluZyBvcHRpb24gJy1NJzsg
bm8gYXJndW1lbnQgcmVxdWlyZWQKICAgICAgIyBUaGUgZGlhZ25vc2lzIGNoYW5nZWQgaW4gaWNj
IDguMDoKICAgICAgIyAgIGljYzogQ29tbWFuZCBsaW5lIHJlbWFyazogb3B0aW9uICctTVAnIG5v
dCBzdXBwb3J0ZWQKICAgICAgaWYgKGdyZXAgJ2lnbm9yaW5nIG9wdGlvbicgY29uZnRlc3QuZXJy
IHx8CiAgICAgICAgICBncmVwICdub3Qgc3VwcG9ydGVkJyBjb25mdGVzdC5lcnIpID4vZGV2L251
bGwgMj4mMTsgdGhlbiA6OyBlbHNlCiAgICAgICAgYW1fY3ZfQ0NfZGVwZW5kZW5jaWVzX2NvbXBp
bGVyX3R5cGU9JGRlcG1vZGUKICAgICAgICBicmVhawogICAgICBmaQogICAgZmkKICBkb25lCgog
IGNkIC4uCiAgcm0gLXJmIGNvbmZ0ZXN0LmRpcgplbHNlCiAgYW1fY3ZfQ0NfZGVwZW5kZW5jaWVz
X2NvbXBpbGVyX3R5cGU9bm9uZQpmaQoKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiByZXN1bHQ6ICRhbV9jdl9DQ19kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZSIg
PiY1CiRhc19lY2hvICIkYW1fY3ZfQ0NfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGUiID4mNjsg
fQpDQ0RFUE1PREU9ZGVwbW9kZT0kYW1fY3ZfQ0NfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGUK
CiBpZgogIHRlc3QgIngkZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmciICE9IHhubyBcCiAgJiYg
dGVzdCAiJGFtX2N2X0NDX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlIiA9IGdjYzM7IHRoZW4K
ICBhbV9fZmFzdGRlcENDX1RSVUU9CiAgYW1fX2Zhc3RkZXBDQ19GQUxTRT0nIycKZWxzZQogIGFt
X19mYXN0ZGVwQ0NfVFJVRT0nIycKICBhbV9fZmFzdGRlcENDX0ZBTFNFPQpmaQoKCiAgIHsgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRDQyBvcHRp
b24gdG8gYWNjZXB0IElTTyBDOTkiID4mNQokYXNfZWNob19uICJjaGVja2luZyBmb3IgJENDIG9w
dGlvbiB0byBhY2NlcHQgSVNPIEM5OS4uLiAiID4mNjsgfQppZiAke2FjX2N2X3Byb2dfY2NfYzk5
Kzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCiAgYWNf
Y3ZfcHJvZ19jY19jOTk9bm8KYWNfc2F2ZV9DQz0kQ0MKY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VP
RiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCiNpbmNsdWRlIDxzdGRh
cmcuaD4KI2luY2x1ZGUgPHN0ZGJvb2wuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8
d2NoYXIuaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CgovLyBDaGVjayB2YXJhcmdzIG1hY3Jvcy4gIFRo
ZXNlIGV4YW1wbGVzIGFyZSB0YWtlbiBmcm9tIEM5OSA2LjEwLjMuNS4KI2RlZmluZSBkZWJ1Zygu
Li4pIGZwcmludGYgKHN0ZGVyciwgX19WQV9BUkdTX18pCiNkZWZpbmUgc2hvd2xpc3QoLi4uKSBw
dXRzICgjX19WQV9BUkdTX18pCiNkZWZpbmUgcmVwb3J0KHRlc3QsLi4uKSAoKHRlc3QpID8gcHV0
cyAoI3Rlc3QpIDogcHJpbnRmIChfX1ZBX0FSR1NfXykpCnN0YXRpYyB2b2lkCnRlc3RfdmFyYXJn
c19tYWNyb3MgKHZvaWQpCnsKICBpbnQgeCA9IDEyMzQ7CiAgaW50IHkgPSA1Njc4OwogIGRlYnVn
ICgiRmxhZyIpOwogIGRlYnVnICgiWCA9ICVkXG4iLCB4KTsKICBzaG93bGlzdCAoVGhlIGZpcnN0
LCBzZWNvbmQsIGFuZCB0aGlyZCBpdGVtcy4pOwogIHJlcG9ydCAoeD55LCAieCBpcyAlZCBidXQg
eSBpcyAlZCIsIHgsIHkpOwp9CgovLyBDaGVjayBsb25nIGxvbmcgdHlwZXMuCiNkZWZpbmUgQklH
NjQgMTg0NDY3NDQwNzM3MDk1NTE2MTV1bGwKI2RlZmluZSBCSUczMiA0Mjk0OTY3Mjk1dWwKI2Rl
ZmluZSBCSUdfT0sgKEJJRzY0IC8gQklHMzIgPT0gNDI5NDk2NzI5N3VsbCAmJiBCSUc2NCAlIEJJ
RzMyID09IDApCiNpZiAhQklHX09LCiAgeW91ciBwcmVwcm9jZXNzb3IgaXMgYnJva2VuOwojZW5k
aWYKI2lmIEJJR19PSwojZWxzZQogIHlvdXIgcHJlcHJvY2Vzc29yIGlzIGJyb2tlbjsKI2VuZGlm
CnN0YXRpYyBsb25nIGxvbmcgaW50IGJpZ251bSA9IC05MjIzMzcyMDM2ODU0Nzc1ODA3TEw7CnN0
YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHViaWdudW0gPSBCSUc2NDsKCnN0cnVjdCBpbmNv
bXBsZXRlX2FycmF5CnsKICBpbnQgZGF0YXNpemU7CiAgZG91YmxlIGRhdGFbXTsKfTsKCnN0cnVj
dCBuYW1lZF9pbml0IHsKICBpbnQgbnVtYmVyOwogIGNvbnN0IHdjaGFyX3QgKm5hbWU7CiAgZG91
YmxlIGF2ZXJhZ2U7Cn07Cgp0eXBlZGVmIGNvbnN0IGNoYXIgKmNjcDsKCnN0YXRpYyBpbmxpbmUg
aW50CnRlc3RfcmVzdHJpY3QgKGNjcCByZXN0cmljdCB0ZXh0KQp7CiAgLy8gU2VlIGlmIEMrKy1z
dHlsZSBjb21tZW50cyB3b3JrLgogIC8vIEl0ZXJhdGUgdGhyb3VnaCBpdGVtcyB2aWEgdGhlIHJl
c3RyaWN0ZWQgcG9pbnRlci4KICAvLyBBbHNvIGNoZWNrIGZvciBkZWNsYXJhdGlvbnMgaW4gZm9y
IGxvb3BzLgogIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyAqKHRleHQraSkgIT0gJ1wwJzsgKytp
KQogICAgY29udGludWU7CiAgcmV0dXJuIDA7Cn0KCi8vIENoZWNrIHZhcmFyZ3MgYW5kIHZhX2Nv
cHkuCnN0YXRpYyB2b2lkCnRlc3RfdmFyYXJncyAoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCnsK
ICB2YV9saXN0IGFyZ3M7CiAgdmFfc3RhcnQgKGFyZ3MsIGZvcm1hdCk7CiAgdmFfbGlzdCBhcmdz
X2NvcHk7CiAgdmFfY29weSAoYXJnc19jb3B5LCBhcmdzKTsKCiAgY29uc3QgY2hhciAqc3RyOwog
IGludCBudW1iZXI7CiAgZmxvYXQgZm51bWJlcjsKCiAgd2hpbGUgKCpmb3JtYXQpCiAgICB7CiAg
ICAgIHN3aXRjaCAoKmZvcm1hdCsrKQoJewoJY2FzZSAncyc6IC8vIHN0cmluZwoJICBzdHIgPSB2
YV9hcmcgKGFyZ3NfY29weSwgY29uc3QgY2hhciAqKTsKCSAgYnJlYWs7CgljYXNlICdkJzogLy8g
aW50CgkgIG51bWJlciA9IHZhX2FyZyAoYXJnc19jb3B5LCBpbnQpOwoJICBicmVhazsKCWNhc2Ug
J2YnOiAvLyBmbG9hdAoJICBmbnVtYmVyID0gdmFfYXJnIChhcmdzX2NvcHksIGRvdWJsZSk7Cgkg
IGJyZWFrOwoJZGVmYXVsdDoKCSAgYnJlYWs7Cgl9CiAgICB9CiAgdmFfZW5kIChhcmdzX2NvcHkp
OwogIHZhX2VuZCAoYXJncyk7Cn0KCmludAptYWluICgpCnsKCiAgLy8gQ2hlY2sgYm9vbC4KICBf
Qm9vbCBzdWNjZXNzID0gZmFsc2U7CgogIC8vIENoZWNrIHJlc3RyaWN0LgogIGlmICh0ZXN0X3Jl
c3RyaWN0ICgiU3RyaW5nIGxpdGVyYWwiKSA9PSAwKQogICAgc3VjY2VzcyA9IHRydWU7CiAgY2hh
ciAqcmVzdHJpY3QgbmV3dmFyID0gIkFub3RoZXIgc3RyaW5nIjsKCiAgLy8gQ2hlY2sgdmFyYXJn
cy4KICB0ZXN0X3ZhcmFyZ3MgKCJzLCBkJyBmIC4iLCAic3RyaW5nIiwgNjUsIDM0LjIzNCk7CiAg
dGVzdF92YXJhcmdzX21hY3JvcyAoKTsKCiAgLy8gQ2hlY2sgZmxleGlibGUgYXJyYXkgbWVtYmVy
cy4KICBzdHJ1Y3QgaW5jb21wbGV0ZV9hcnJheSAqaWEgPQogICAgbWFsbG9jIChzaXplb2YgKHN0
cnVjdCBpbmNvbXBsZXRlX2FycmF5KSArIChzaXplb2YgKGRvdWJsZSkgKiAxMCkpOwogIGlhLT5k
YXRhc2l6ZSA9IDEwOwogIGZvciAoaW50IGkgPSAwOyBpIDwgaWEtPmRhdGFzaXplOyArK2kpCiAg
ICBpYS0+ZGF0YVtpXSA9IGkgKiAxLjIzNDsKCiAgLy8gQ2hlY2sgbmFtZWQgaW5pdGlhbGl6ZXJz
LgogIHN0cnVjdCBuYW1lZF9pbml0IG5pID0gewogICAgLm51bWJlciA9IDM0LAogICAgLm5hbWUg
PSBMIlRlc3Qgd2lkZSBzdHJpbmciLAogICAgLmF2ZXJhZ2UgPSA1NDMuMzQzNDMsCiAgfTsKCiAg
bmkubnVtYmVyID0gNTg7CgogIGludCBkeW5hbWljX2FycmF5W25pLm51bWJlcl07CiAgZHluYW1p
Y19hcnJheVtuaS5udW1iZXIgLSAxXSA9IDU0MzsKCiAgLy8gd29yayBhcm91bmQgdW51c2VkIHZh
cmlhYmxlIHdhcm5pbmdzCiAgcmV0dXJuICghc3VjY2VzcyB8fCBiaWdudW0gPT0gMExMIHx8IHVi
aWdudW0gPT0gMHVMTCB8fCBuZXd2YXJbMF0gPT0gJ3gnCgkgIHx8IGR5bmFtaWNfYXJyYXlbbmku
bnVtYmVyIC0gMV0gIT0gNTQzKTsKCiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgpmb3IgYWNfYXJn
IGluICcnIC1zdGQ9Z251OTkgLXN0ZD1jOTkgLWM5OSAtQUM5OSAtRF9TVERDX0M5OT0gLXFsYW5n
bHZsPWV4dGM5OQpkbwogIENDPSIkYWNfc2F2ZV9DQyAkYWNfYXJnIgogIGlmIGFjX2ZuX2NfdHJ5
X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKICBhY19jdl9wcm9nX2NjX2M5OT0kYWNfYXJnCmZp
CnJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQKICB0ZXN0ICJ4JGFj
X2N2X3Byb2dfY2NfYzk5IiAhPSAieG5vIiAmJiBicmVhawpkb25lCnJtIC1mIGNvbmZ0ZXN0LiRh
Y19leHQKQ0M9JGFjX3NhdmVfQ0MKCmZpCiMgQUNfQ0FDSEVfVkFMCmNhc2UgIngkYWNfY3ZfcHJv
Z19jY19jOTkiIGluCiAgeCkKICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogcmVzdWx0OiBub25lIG5lZWRlZCIgPiY1CiRhc19lY2hvICJub25lIG5lZWRlZCIgPiY2
OyB9IDs7CiAgeG5vKQogICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiByZXN1bHQ6IHVuc3VwcG9ydGVkIiA+JjUKJGFzX2VjaG8gInVuc3VwcG9ydGVkIiA+JjY7IH0g
OzsKICAqKQogICAgQ0M9IiRDQyAkYWNfY3ZfcHJvZ19jY19jOTkiCiAgICB7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3Byb2dfY2NfYzk5IiA+
JjUKJGFzX2VjaG8gIiRhY19jdl9wcm9nX2NjX2M5OSIgPiY2OyB9IDs7CmVzYWMKaWYgdGVzdCAi
eCRhY19jdl9wcm9nX2NjX2M5OSIgIT0geG5vOyB0aGVuIDoKCmZpCgoKIyBUaGUgdmFyIOKAmGFj
X2N2X3Byb2dfY2NfYzk54oCZIHJlY29yZHMgb3B0aW9ucyByZXF1aXJlZCB0byBwbGFjZSBjb21w
aWxlcgojIGluICJDOTkgbW9kZSIuICBJdCBtYXkgYmUgZW1wdHkgaWYgdGhhdCBpcyB0aGUgZGVm
YXVsdCBjb21waWxlciBtb2RlLgppZiB0ZXN0IHgiJGFjX2N2X3Byb2dfY2NfYzk5IiA9IHg7IHRo
ZW4gOgogIDoKZWxzZQogIGlmIHRlc3QgLXogIiRhY19jdl9wcm9nX2NjX2M5OSIgfHwgdGVzdCBu
byA9ICIkYWNfY3ZfcHJvZ19jY19jOTkiOyB0aGVuIDoKICBhc19mbl9lcnJvciAkPyAiQ291bGQg
bm90IGZpbmQgYSBDOTktY2FwYWJsZSBjb21waWxlciIgIiRMSU5FTk8iIDUKZmkKCmZpCmlmIHRl
c3QgeCIkRVhFRVhUIiA9IHg7IHRoZW4gOgogIDoKZWxzZQoKY2F0ID4+Y29uZmRlZnMuaCA8PF9B
Q0VPRgojZGVmaW5lIEVYRUVYVCAiJEVYRUVYVCIKX0FDRU9GCgpmaQoKIyBnbnVsaWIKCmFjX2V4
dD1jCmFjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCmFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRD
UFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFj
X2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJT
ID4mNScKYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQp7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJl
cHJvY2Vzc29yIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUgQyBwcmVw
cm9jZXNzb3IuLi4gIiA+JjY7IH0KIyBPbiBTdW5zLCBzb21ldGltZXMgJENQUCBuYW1lcyBhIGRp
cmVjdG9yeS4KaWYgdGVzdCAtbiAiJENQUCIgJiYgdGVzdCAtZCAiJENQUCI7IHRoZW4KICBDUFA9
CmZpCmlmIHRlc3QgLXogIiRDUFAiOyB0aGVuCiAgaWYgJHthY19jdl9wcm9nX0NQUCs6fSBmYWxz
ZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQogICAgICAjIERvdWJs
ZSBxdW90ZXMgYmVjYXVzZSBDUFAgbmVlZHMgdG8gYmUgZXhwYW5kZWQKICAgIGZvciBDUFAgaW4g
IiRDQyAtRSIgIiRDQyAtRSAtdHJhZGl0aW9uYWwtY3BwIiAiL2xpYi9jcHAiCiAgICBkbwogICAg
ICBhY19wcmVwcm9jX29rPWZhbHNlCmZvciBhY19jX3ByZXByb2Nfd2Fybl9mbGFnIGluICcnIHll
cwpkbwogICMgVXNlIGEgaGVhZGVyIGZpbGUgdGhhdCBjb21lcyB3aXRoIGdjYywgc28gY29uZmln
dXJpbmcgZ2xpYmMKICAjIHdpdGggYSBmcmVzaCBjcm9zcy1jb21waWxlciB3b3Jrcy4KICAjIFBy
ZWZlciA8bGltaXRzLmg+IHRvIDxhc3NlcnQuaD4gaWYgX19TVERDX18gaXMgZGVmaW5lZCwgc2lu
Y2UKICAjIDxsaW1pdHMuaD4gZXhpc3RzIGV2ZW4gb24gZnJlZXN0YW5kaW5nIGNvbXBpbGVycy4K
ICAjIE9uIHRoZSBOZVhULCBjYyAtRSBydW5zIHRoZSBjb2RlIHRocm91Z2ggdGhlIGNvbXBpbGVy
J3MgcGFyc2VyLAogICMgbm90IGp1c3QgdGhyb3VnaCBjcHAuICJTeW50YXggZXJyb3IiIGlzIGhl
cmUgdG8gY2F0Y2ggdGhpcyBjYXNlLgogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0
ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaWZkZWYgX19TVERDX18KIyBpbmNs
dWRlIDxsaW1pdHMuaD4KI2Vsc2UKIyBpbmNsdWRlIDxhc3NlcnQuaD4KI2VuZGlmCgkJICAgICBT
eW50YXggZXJyb3IKX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2NwcCAiJExJTkVOTyI7IHRoZW4gOgoK
ZWxzZQogICMgQnJva2VuOiBmYWlscyBvbiB2YWxpZCBpbnB1dC4KY29udGludWUKZmkKcm0gLWYg
Y29uZnRlc3QuZXJyIGNvbmZ0ZXN0LmkgY29uZnRlc3QuJGFjX2V4dAoKICAjIE9LLCB3b3JrcyBv
biBzYW5lIGNhc2VzLiAgTm93IGNoZWNrIHdoZXRoZXIgbm9uZXhpc3RlbnQgaGVhZGVycwogICMg
Y2FuIGJlIGRldGVjdGVkIGFuZCBob3cuCiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29u
ZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCiNpbmNsdWRlIDxhY19ub25leGlz
dGVudC5oPgpfQUNFT0YKaWYgYWNfZm5fY190cnlfY3BwICIkTElORU5PIjsgdGhlbiA6CiAgIyBC
cm9rZW46IHN1Y2Nlc3Mgb24gaW52YWxpZCBpbnB1dC4KY29udGludWUKZWxzZQogICMgUGFzc2Vz
IGJvdGggdGVzdHMuCmFjX3ByZXByb2Nfb2s9OgpicmVhawpmaQpybSAtZiBjb25mdGVzdC5lcnIg
Y29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0Cgpkb25lCiMgQmVjYXVzZSBvZiBgYnJlYWsnLCBf
QUNfUFJFUFJPQ19JRkVMU0UncyBjbGVhbmluZyBjb2RlIHdhcyBza2lwcGVkLgpybSAtZiBjb25m
dGVzdC5pIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CmlmICRhY19wcmVwcm9jX29rOyB0
aGVuIDoKICBicmVhawpmaQoKICAgIGRvbmUKICAgIGFjX2N2X3Byb2dfQ1BQPSRDUFAKCmZpCiAg
Q1BQPSRhY19jdl9wcm9nX0NQUAplbHNlCiAgYWNfY3ZfcHJvZ19DUFA9JENQUApmaQp7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENQUCIgPiY1CiRhc19l
Y2hvICIkQ1BQIiA+JjY7IH0KYWNfcHJlcHJvY19vaz1mYWxzZQpmb3IgYWNfY19wcmVwcm9jX3dh
cm5fZmxhZyBpbiAnJyB5ZXMKZG8KICAjIFVzZSBhIGhlYWRlciBmaWxlIHRoYXQgY29tZXMgd2l0
aCBnY2MsIHNvIGNvbmZpZ3VyaW5nIGdsaWJjCiAgIyB3aXRoIGEgZnJlc2ggY3Jvc3MtY29tcGls
ZXIgd29ya3MuCiAgIyBQcmVmZXIgPGxpbWl0cy5oPiB0byA8YXNzZXJ0Lmg+IGlmIF9fU1REQ19f
IGlzIGRlZmluZWQsIHNpbmNlCiAgIyA8bGltaXRzLmg+IGV4aXN0cyBldmVuIG9uIGZyZWVzdGFu
ZGluZyBjb21waWxlcnMuCiAgIyBPbiB0aGUgTmVYVCwgY2MgLUUgcnVucyB0aGUgY29kZSB0aHJv
dWdoIHRoZSBjb21waWxlcidzIHBhcnNlciwKICAjIG5vdCBqdXN0IHRocm91Z2ggY3BwLiAiU3lu
dGF4IGVycm9yIiBpcyBoZXJlIHRvIGNhdGNoIHRoaXMgY2FzZS4KICBjYXQgY29uZmRlZnMuaCAt
IDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2lmZGVm
IF9fU1REQ19fCiMgaW5jbHVkZSA8bGltaXRzLmg+CiNlbHNlCiMgaW5jbHVkZSA8YXNzZXJ0Lmg+
CiNlbmRpZgoJCSAgICAgU3ludGF4IGVycm9yCl9BQ0VPRgppZiBhY19mbl9jX3RyeV9jcHAgIiRM
SU5FTk8iOyB0aGVuIDoKCmVsc2UKICAjIEJyb2tlbjogZmFpbHMgb24gdmFsaWQgaW5wdXQuCmNv
bnRpbnVlCmZpCnJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQK
CiAgIyBPSywgd29ya3Mgb24gc2FuZSBjYXNlcy4gIE5vdyBjaGVjayB3aGV0aGVyIG5vbmV4aXN0
ZW50IGhlYWRlcnMKICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93LgogIGNhdCBjb25mZGVmcy5o
IC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5j
bHVkZSA8YWNfbm9uZXhpc3RlbnQuaD4KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2NwcCAiJExJTkVO
TyI7IHRoZW4gOgogICMgQnJva2VuOiBzdWNjZXNzIG9uIGludmFsaWQgaW5wdXQuCmNvbnRpbnVl
CmVsc2UKICAjIFBhc3NlcyBib3RoIHRlc3RzLgphY19wcmVwcm9jX29rPToKYnJlYWsKZmkKcm0g
LWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LmkgY29uZnRlc3QuJGFjX2V4dAoKZG9uZQojIEJlY2F1
c2Ugb2YgYGJyZWFrJywgX0FDX1BSRVBST0NfSUZFTFNFJ3MgY2xlYW5pbmcgY29kZSB3YXMgc2tp
cHBlZC4Kcm0gLWYgY29uZnRlc3QuaSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAppZiAk
YWNfcHJlcHJvY19vazsgdGhlbiA6CgplbHNlCiAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiRhc19lY2hvICIkYXNf
bWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KYXNfZm5fZXJyb3IgJD8gIkMgcHJlcHJv
Y2Vzc29yIFwiJENQUFwiIGZhaWxzIHNhbml0eSBjaGVjawpTZWUgXGBjb25maWcubG9nJyBmb3Ig
bW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQpmaQoKYWNfZXh0PWMKYWNfY3BwPSckQ1BQICRD
UFBGTEFHUycKYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRh
Y19leHQgPiY1JwphY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQ
UEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwphY19jb21waWxlcl9n
bnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CgoKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiBjaGVja2luZyBmb3IgZ3JlcCB0aGF0IGhhbmRsZXMgbG9uZyBsaW5lcyBhbmQg
LWUiID4mNQokYXNfZWNob19uICJjaGVja2luZyBmb3IgZ3JlcCB0aGF0IGhhbmRsZXMgbG9uZyBs
aW5lcyBhbmQgLWUuLi4gIiA+JjY7IH0KaWYgJHthY19jdl9wYXRoX0dSRVArOn0gZmFsc2U7IHRo
ZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKICBpZiB0ZXN0IC16ICIkR1JF
UCI7IHRoZW4KICBhY19wYXRoX0dSRVBfZm91bmQ9ZmFsc2UKICAjIExvb3AgdGhyb3VnaCB0aGUg
dXNlcidzIHBhdGggYW5kIHRlc3QgZm9yIGVhY2ggb2YgUFJPR05BTUUtTElTVAogIGFzX3NhdmVf
SUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKZm9yIGFzX2RpciBpbiAkUEFUSCRQQVRIX1NF
UEFSQVRPUi91c3IveHBnNC9iaW4KZG8KICBJRlM9JGFzX3NhdmVfSUZTCiAgdGVzdCAteiAiJGFz
X2RpciIgJiYgYXNfZGlyPS4KICAgIGZvciBhY19wcm9nIGluIGdyZXAgZ2dyZXA7IGRvCiAgICBm
b3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KICAgICAg
YWNfcGF0aF9HUkVQPSIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IgogICAgICBhc19mbl9l
eGVjdXRhYmxlX3AgIiRhY19wYXRoX0dSRVAiIHx8IGNvbnRpbnVlCiMgQ2hlY2sgZm9yIEdOVSBh
Y19wYXRoX0dSRVAgYW5kIHNlbGVjdCBpdCBpZiBpdCBpcyBmb3VuZC4KICAjIENoZWNrIGZvciBH
TlUgJGFjX3BhdGhfR1JFUApjYXNlIGAiJGFjX3BhdGhfR1JFUCIgLS12ZXJzaW9uIDI+JjFgIGlu
CipHTlUqKQogIGFjX2N2X3BhdGhfR1JFUD0iJGFjX3BhdGhfR1JFUCIgYWNfcGF0aF9HUkVQX2Zv
dW5kPTo7OwoqKQogIGFjX2NvdW50PTAKICAkYXNfZWNob19uIDAxMjM0NTY3ODkgPiJjb25mdGVz
dC5pbiIKICB3aGlsZSA6CiAgZG8KICAgIGNhdCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5pbiIg
PiJjb25mdGVzdC50bXAiCiAgICBtdiAiY29uZnRlc3QudG1wIiAiY29uZnRlc3QuaW4iCiAgICBj
cCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5ubCIKICAgICRhc19lY2hvICdHUkVQJyA+PiAiY29u
ZnRlc3QubmwiCiAgICAiJGFjX3BhdGhfR1JFUCIgLWUgJ0dSRVAkJyAtZSAnLShjYW5ub3QgbWF0
Y2gpLScgPCAiY29uZnRlc3QubmwiID4iY29uZnRlc3Qub3V0IiAyPi9kZXYvbnVsbCB8fCBicmVh
awogICAgZGlmZiAiY29uZnRlc3Qub3V0IiAiY29uZnRlc3QubmwiID4vZGV2L251bGwgMj4mMSB8
fCBicmVhawogICAgYXNfZm5fYXJpdGggJGFjX2NvdW50ICsgMSAmJiBhY19jb3VudD0kYXNfdmFs
CiAgICBpZiB0ZXN0ICRhY19jb3VudCAtZ3QgJHthY19wYXRoX0dSRVBfbWF4LTB9OyB0aGVuCiAg
ICAgICMgQmVzdCBvbmUgc28gZmFyLCBzYXZlIGl0IGJ1dCBrZWVwIGxvb2tpbmcgZm9yIGEgYmV0
dGVyIG9uZQogICAgICBhY19jdl9wYXRoX0dSRVA9IiRhY19wYXRoX0dSRVAiCiAgICAgIGFjX3Bh
dGhfR1JFUF9tYXg9JGFjX2NvdW50CiAgICBmaQogICAgIyAxMCooMl4xMCkgY2hhcnMgYXMgaW5w
dXQgc2VlbXMgbW9yZSB0aGFuIGVub3VnaAogICAgdGVzdCAkYWNfY291bnQgLWd0IDEwICYmIGJy
ZWFrCiAgZG9uZQogIHJtIC1mIGNvbmZ0ZXN0LmluIGNvbmZ0ZXN0LnRtcCBjb25mdGVzdC5ubCBj
b25mdGVzdC5vdXQ7Owplc2FjCgogICAgICAkYWNfcGF0aF9HUkVQX2ZvdW5kICYmIGJyZWFrIDMK
ICAgIGRvbmUKICBkb25lCiAgZG9uZQpJRlM9JGFzX3NhdmVfSUZTCiAgaWYgdGVzdCAteiAiJGFj
X2N2X3BhdGhfR1JFUCI7IHRoZW4KICAgIGFzX2ZuX2Vycm9yICQ/ICJubyBhY2NlcHRhYmxlIGdy
ZXAgY291bGQgYmUgZm91bmQgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1IvdXNyL3hwZzQvYmluIiAi
JExJTkVOTyIgNQogIGZpCmVsc2UKICBhY19jdl9wYXRoX0dSRVA9JEdSRVAKZmkKCmZpCnsgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfcGF0aF9H
UkVQIiA+JjUKJGFzX2VjaG8gIiRhY19jdl9wYXRoX0dSRVAiID4mNjsgfQogR1JFUD0iJGFjX2N2
X3BhdGhfR1JFUCIKCgp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNo
ZWNraW5nIGZvciBlZ3JlcCIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIGZvciBlZ3JlcC4uLiAi
ID4mNjsgfQppZiAke2FjX2N2X3BhdGhfRUdSRVArOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hv
X24gIihjYWNoZWQpICIgPiY2CmVsc2UKICBpZiBlY2hvIGEgfCAkR1JFUCAtRSAnKGF8YiknID4v
ZGV2L251bGwgMj4mMQogICB0aGVuIGFjX2N2X3BhdGhfRUdSRVA9IiRHUkVQIC1FIgogICBlbHNl
CiAgICAgaWYgdGVzdCAteiAiJEVHUkVQIjsgdGhlbgogIGFjX3BhdGhfRUdSRVBfZm91bmQ9ZmFs
c2UKICAjIExvb3AgdGhyb3VnaCB0aGUgdXNlcidzIHBhdGggYW5kIHRlc3QgZm9yIGVhY2ggb2Yg
UFJPR05BTUUtTElTVAogIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKZm9y
IGFzX2RpciBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4KZG8KICBJRlM9JGFz
X3NhdmVfSUZTCiAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgIGZvciBhY19wcm9n
IGluIGVncmVwOyBkbwogICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4
dGVuc2lvbnM7IGRvCiAgICAgIGFjX3BhdGhfRUdSRVA9IiRhc19kaXIvJGFjX3Byb2ckYWNfZXhl
Y19leHQiCiAgICAgIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFjX3BhdGhfRUdSRVAiIHx8IGNvbnRp
bnVlCiMgQ2hlY2sgZm9yIEdOVSBhY19wYXRoX0VHUkVQIGFuZCBzZWxlY3QgaXQgaWYgaXQgaXMg
Zm91bmQuCiAgIyBDaGVjayBmb3IgR05VICRhY19wYXRoX0VHUkVQCmNhc2UgYCIkYWNfcGF0aF9F
R1JFUCIgLS12ZXJzaW9uIDI+JjFgIGluCipHTlUqKQogIGFjX2N2X3BhdGhfRUdSRVA9IiRhY19w
YXRoX0VHUkVQIiBhY19wYXRoX0VHUkVQX2ZvdW5kPTo7OwoqKQogIGFjX2NvdW50PTAKICAkYXNf
ZWNob19uIDAxMjM0NTY3ODkgPiJjb25mdGVzdC5pbiIKICB3aGlsZSA6CiAgZG8KICAgIGNhdCAi
Y29uZnRlc3QuaW4iICJjb25mdGVzdC5pbiIgPiJjb25mdGVzdC50bXAiCiAgICBtdiAiY29uZnRl
c3QudG1wIiAiY29uZnRlc3QuaW4iCiAgICBjcCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5ubCIK
ICAgICRhc19lY2hvICdFR1JFUCcgPj4gImNvbmZ0ZXN0Lm5sIgogICAgIiRhY19wYXRoX0VHUkVQ
IiAnRUdSRVAkJyA8ICJjb25mdGVzdC5ubCIgPiJjb25mdGVzdC5vdXQiIDI+L2Rldi9udWxsIHx8
IGJyZWFrCiAgICBkaWZmICJjb25mdGVzdC5vdXQiICJjb25mdGVzdC5ubCIgPi9kZXYvbnVsbCAy
PiYxIHx8IGJyZWFrCiAgICBhc19mbl9hcml0aCAkYWNfY291bnQgKyAxICYmIGFjX2NvdW50PSRh
c192YWwKICAgIGlmIHRlc3QgJGFjX2NvdW50IC1ndCAke2FjX3BhdGhfRUdSRVBfbWF4LTB9OyB0
aGVuCiAgICAgICMgQmVzdCBvbmUgc28gZmFyLCBzYXZlIGl0IGJ1dCBrZWVwIGxvb2tpbmcgZm9y
IGEgYmV0dGVyIG9uZQogICAgICBhY19jdl9wYXRoX0VHUkVQPSIkYWNfcGF0aF9FR1JFUCIKICAg
ICAgYWNfcGF0aF9FR1JFUF9tYXg9JGFjX2NvdW50CiAgICBmaQogICAgIyAxMCooMl4xMCkgY2hh
cnMgYXMgaW5wdXQgc2VlbXMgbW9yZSB0aGFuIGVub3VnaAogICAgdGVzdCAkYWNfY291bnQgLWd0
IDEwICYmIGJyZWFrCiAgZG9uZQogIHJtIC1mIGNvbmZ0ZXN0LmluIGNvbmZ0ZXN0LnRtcCBjb25m
dGVzdC5ubCBjb25mdGVzdC5vdXQ7Owplc2FjCgogICAgICAkYWNfcGF0aF9FR1JFUF9mb3VuZCAm
JiBicmVhayAzCiAgICBkb25lCiAgZG9uZQogIGRvbmUKSUZTPSRhc19zYXZlX0lGUwogIGlmIHRl
c3QgLXogIiRhY19jdl9wYXRoX0VHUkVQIjsgdGhlbgogICAgYXNfZm5fZXJyb3IgJD8gIm5vIGFj
Y2VwdGFibGUgZWdyZXAgY291bGQgYmUgZm91bmQgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1IvdXNy
L3hwZzQvYmluIiAiJExJTkVOTyIgNQogIGZpCmVsc2UKICBhY19jdl9wYXRoX0VHUkVQPSRFR1JF
UApmaQoKICAgZmkKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy
ZXN1bHQ6ICRhY19jdl9wYXRoX0VHUkVQIiA+JjUKJGFzX2VjaG8gIiRhY19jdl9wYXRoX0VHUkVQ
IiA+JjY7IH0KIEVHUkVQPSIkYWNfY3ZfcGF0aF9FR1JFUCIKCgoKCiAgeyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgTWluaXggQW1zdGVyZGFtIGNv
bXBpbGVyIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIE1pbml4IEFtc3RlcmRhbSBjb21w
aWxlci4uLiAiID4mNjsgfQppZiAke2dsX2N2X2NfYW1zdGVyZGFtX2NvbXBpbGVyKzp9IGZhbHNl
OyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCgogICAgICBjYXQgY29u
ZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAg
Ki8KCiNpZmRlZiBfX0FDS19fCkFtc3RlcmRhbQojZW5kaWYKCl9BQ0VPRgppZiAoZXZhbCAiJGFj
X2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CiAgJEVHUkVQICJBbXN0ZXJkYW0iID4vZGV2
L251bGwgMj4mMTsgdGhlbiA6CiAgZ2xfY3ZfY19hbXN0ZXJkYW1fY29tcGlsZXI9eWVzCmVsc2UK
ICBnbF9jdl9jX2Ftc3RlcmRhbV9jb21waWxlcj1ubwpmaQpybSAtZiBjb25mdGVzdCoKCgpmaQp7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2X2Nf
YW1zdGVyZGFtX2NvbXBpbGVyIiA+JjUKJGFzX2VjaG8gIiRnbF9jdl9jX2Ftc3RlcmRhbV9jb21w
aWxlciIgPiY2OyB9CiAgaWYgdGVzdCAteiAiJEFSIjsgdGhlbgogICAgaWYgdGVzdCAkZ2xfY3Zf
Y19hbXN0ZXJkYW1fY29tcGlsZXIgPSB5ZXM7IHRoZW4KICAgICAgQVI9J2NjIC1jLmEnCiAgICAg
IGlmIHRlc3QgLXogIiRBUkZMQUdTIjsgdGhlbgogICAgICAgIEFSRkxBR1M9Jy1vJwogICAgICBm
aQogICAgZWxzZQogICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgi
OyB0aGVuCiAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFy
Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4Kc2V0IGR1bW15ICR7YWNf
dG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQokYXNfZWNob19uICJjaGVja2lu
ZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KaWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0
aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCiAgaWYgdGVzdCAtbiAiJEFS
IjsgdGhlbgogIGFjX2N2X3Byb2dfQVI9IiRBUiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhl
IHRlc3QuCmVsc2UKYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgpmb3IgYXNf
ZGlyIGluICRQQVRICmRvCiAgSUZTPSRhc19zYXZlX0lGUwogIHRlc3QgLXogIiRhc19kaXIiICYm
IGFzX2Rpcj0uCiAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5z
aW9uczsgZG8KICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhl
Y19leHQiOyB0aGVuCiAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgogICAg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNf
d29yZCRhY19leGVjX2V4dCIgPiY1CiAgICBicmVhayAyCiAgZmkKZG9uZQogIGRvbmUKSUZTPSRh
c19zYXZlX0lGUwoKZmkKZmkKQVI9JGFjX2N2X3Byb2dfQVIKaWYgdGVzdCAtbiAiJEFSIjsgdGhl
bgogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQVIi
ID4mNQokYXNfZWNobyAiJEFSIiA+JjY7IH0KZWxzZQogIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiRhc19lY2hvICJubyIgPiY2OyB9CmZp
CgoKZmkKaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCiAgYWNfY3RfQVI9JEFSCiAg
IyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0g
bmFtZSB3aXRoIGFyZ3MuCnNldCBkdW1teSBhcjsgYWNfd29yZD0kMgp7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiRhc19l
Y2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQppZiAke2FjX2N2X3Byb2df
YWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVs
c2UKICBpZiB0ZXN0IC1uICIkYWNfY3RfQVIiOyB0aGVuCiAgYWNfY3ZfcHJvZ19hY19jdF9BUj0i
JGFjX2N0X0FSIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KZWxzZQphc19zYXZl
X0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCmZvciBhc19kaXIgaW4gJFBBVEgKZG8KICBJ
RlM9JGFzX3NhdmVfSUZTCiAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgIGZvciBh
Y19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwogIGlmIGFzX2Zu
X2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICAgIGFj
X2N2X3Byb2dfYWNfY3RfQVI9ImFyIgogICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICBicmVh
ayAyCiAgZmkKZG9uZQogIGRvbmUKSUZTPSRhc19zYXZlX0lGUwoKZmkKZmkKYWNfY3RfQVI9JGFj
X2N2X3Byb2dfYWNfY3RfQVIKaWYgdGVzdCAtbiAiJGFjX2N0X0FSIjsgdGhlbgogIHsgJGFzX2Vj
aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfQVIiID4mNQok
YXNfZWNobyAiJGFjX2N0X0FSIiA+JjY7IH0KZWxzZQogIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiRhc19lY2hvICJubyIgPiY2OyB9CmZp
CgogIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgogICAgQVI9ImFyIgogIGVsc2UKICAg
IGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KeWVzOikKeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29s
cyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQokYXNfZWNobyAiJGFzX21lOiBX
QVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQi
ID4mMjt9CmFjX3Rvb2xfd2FybmVkPXllcyA7Owplc2FjCiAgICBBUj0kYWNfY3RfQVIKICBmaQpl
bHNlCiAgQVI9IiRhY19jdl9wcm9nX0FSIgpmaQoKICAgICAgaWYgdGVzdCAteiAiJEFSRkxBR1Mi
OyB0aGVuCiAgICAgICAgQVJGTEFHUz0nY3J1JwogICAgICBmaQogICAgZmkKICBlbHNlCiAgICBp
ZiB0ZXN0IC16ICIkQVJGTEFHUyI7IHRoZW4KICAgICAgQVJGTEFHUz0nY3J1JwogICAgZmkKICBm
aQoKCiAgaWYgdGVzdCAteiAiJFJBTkxJQiI7IHRoZW4KICAgIGlmIHRlc3QgJGdsX2N2X2NfYW1z
dGVyZGFtX2NvbXBpbGVyID0geWVzOyB0aGVuCiAgICAgIFJBTkxJQj0nOicKICAgIGVsc2UKICAg
ICAgICAgICAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgogICMgRXh0cmFjdCB0
aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1yYW5saWIiLCBzbyBpdCBjYW4gYmUg
YSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgpzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1yYW5s
aWI7IGFjX3dvcmQ9JDIKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj
aGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQokYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dv
cmQuLi4gIiA+JjY7IH0KaWYgJHthY19jdl9wcm9nX1JBTkxJQis6fSBmYWxzZTsgdGhlbiA6CiAg
JGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIGlmIHRlc3QgLW4gIiRSQU5MSUIiOyB0
aGVuCiAgYWNfY3ZfcHJvZ19SQU5MSUI9IiRSQU5MSUIiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRl
IHRoZSB0ZXN0LgplbHNlCmFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKZm9y
IGFzX2RpciBpbiAkUEFUSApkbwogIElGUz0kYXNfc2F2ZV9JRlMKICB0ZXN0IC16ICIkYXNfZGly
IiAmJiBhc19kaXI9LgogICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4
dGVuc2lvbnM7IGRvCiAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFj
X2V4ZWNfZXh0IjsgdGhlbgogICAgYWNfY3ZfcHJvZ19SQU5MSUI9IiR7YWNfdG9vbF9wcmVmaXh9
cmFubGliIgogICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQg
JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICBicmVhayAyCiAgZmkKZG9uZQog
IGRvbmUKSUZTPSRhc19zYXZlX0lGUwoKZmkKZmkKUkFOTElCPSRhY19jdl9wcm9nX1JBTkxJQgpp
ZiB0ZXN0IC1uICIkUkFOTElCIjsgdGhlbgogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu
by0kTElORU5PfTogcmVzdWx0OiAkUkFOTElCIiA+JjUKJGFzX2VjaG8gIiRSQU5MSUIiID4mNjsg
fQplbHNlCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6
IG5vIiA+JjUKJGFzX2VjaG8gIm5vIiA+JjY7IH0KZmkKCgpmaQppZiB0ZXN0IC16ICIkYWNfY3Zf
cHJvZ19SQU5MSUIiOyB0aGVuCiAgYWNfY3RfUkFOTElCPSRSQU5MSUIKICAjIEV4dHJhY3QgdGhl
IGZpcnN0IHdvcmQgb2YgInJhbmxpYiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRo
IGFyZ3MuCnNldCBkdW1teSByYW5saWI7IGFjX3dvcmQ9JDIKeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQokYXNfZWNob19u
ICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KaWYgJHthY19jdl9wcm9nX2FjX2N0
X1JBTkxJQis6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxz
ZQogIGlmIHRlc3QgLW4gIiRhY19jdF9SQU5MSUIiOyB0aGVuCiAgYWNfY3ZfcHJvZ19hY19jdF9S
QU5MSUI9IiRhY19jdF9SQU5MSUIiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0Lgpl
bHNlCmFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKZm9yIGFzX2RpciBpbiAk
UEFUSApkbwogIElGUz0kYXNfc2F2ZV9JRlMKICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9
LgogICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRv
CiAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0Ijsg
dGhlbgogICAgYWNfY3ZfcHJvZ19hY19jdF9SQU5MSUI9InJhbmxpYiIKICAgICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhl
Y19leHQiID4mNQogICAgYnJlYWsgMgogIGZpCmRvbmUKICBkb25lCklGUz0kYXNfc2F2ZV9JRlMK
CmZpCmZpCmFjX2N0X1JBTkxJQj0kYWNfY3ZfcHJvZ19hY19jdF9SQU5MSUIKaWYgdGVzdCAtbiAi
JGFjX2N0X1JBTkxJQiI7IHRoZW4KICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogJGFjX2N0X1JBTkxJQiIgPiY1CiRhc19lY2hvICIkYWNfY3RfUkFOTElC
IiA+JjY7IH0KZWxzZQogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
cmVzdWx0OiBubyIgPiY1CiRhc19lY2hvICJubyIgPiY2OyB9CmZpCgogIGlmIHRlc3QgIngkYWNf
Y3RfUkFOTElCIiA9IHg7IHRoZW4KICAgIFJBTkxJQj0iOiIKICBlbHNlCiAgICBjYXNlICRjcm9z
c19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCnllczopCnsgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZp
eGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNp
bmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQphY190
b29sX3dhcm5lZD15ZXMgOzsKZXNhYwogICAgUkFOTElCPSRhY19jdF9SQU5MSUIKICBmaQplbHNl
CiAgUkFOTElCPSIkYWNfY3ZfcHJvZ19SQU5MSUIiCmZpCgogICAgZmkKICBmaQoKCmlmIHRlc3Qg
IngkQ0MiICE9IHhjYzsgdGhlbgogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogY2hlY2tpbmcgd2hldGhlciAkQ0MgYW5kIGNjIHVuZGVyc3RhbmQgLWMgYW5kIC1vIHRv
Z2V0aGVyIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAkQ0MgYW5kIGNjIHVuZGVy
c3RhbmQgLWMgYW5kIC1vIHRvZ2V0aGVyLi4uICIgPiY2OyB9CmVsc2UKICB7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgY2MgdW5kZXJzdGFu
ZHMgLWMgYW5kIC1vIHRvZ2V0aGVyIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBj
YyB1bmRlcnN0YW5kcyAtYyBhbmQgLW8gdG9nZXRoZXIuLi4gIiA+JjY7IH0KZmkKc2V0IGR1bW15
ICRDQzsgYWNfY2M9YCRhc19lY2hvICIkMiIgfAoJCSAgICAgIHNlZCAncy9bXmEtekEtWjAtOV9d
L18vZztzL15bMC05XS9fLydgCmlmIGV2YWwgXCR7YWNfY3ZfcHJvZ19jY18ke2FjX2NjfV9jX28r
On0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKICBjYXQg
Y29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5o
LiAgKi8KCmludAptYWluICgpCnsKCiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgojIE1ha2Ugc3Vy
ZSBpdCB3b3JrcyBib3RoIHdpdGggJENDIGFuZCB3aXRoIHNpbXBsZSBjYy4KIyBXZSBkbyB0aGUg
dGVzdCB0d2ljZSBiZWNhdXNlIHNvbWUgY29tcGlsZXJzIHJlZnVzZSB0byBvdmVyd3JpdGUgYW4K
IyBleGlzdGluZyAubyBmaWxlIHdpdGggLW8sIHRob3VnaCB0aGV5IHdpbGwgY3JlYXRlIG9uZS4K
YWNfdHJ5PSckQ0MgLWMgY29uZnRlc3QuJGFjX2V4dCAtbyBjb25mdGVzdDIuJGFjX29iamV4dCA+
JjUnCnJtIC1mIGNvbmZ0ZXN0Mi4qCmlmIHsgeyBjYXNlICIoKCRhY190cnkiIGluCiAgKlwiKiB8
ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7CiAgKikgYWNfdHJ5X2VjaG89JGFj
X3RyeTs7CmVzYWMKZXZhbCBhY190cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiAkYWNfdHJ5X2VjaG9cIiIKJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0gPiY1CiAgKGV2
YWwgIiRhY190cnkiKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgdGVzdCAkYWNfc3RhdHVz
ID0gMDsgfSAmJgogICB0ZXN0IC1mIGNvbmZ0ZXN0Mi4kYWNfb2JqZXh0ICYmIHsgeyBjYXNlICIo
KCRhY190cnkiIGluCiAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7
CiAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7CmVzYWMKZXZhbCBhY190cnlfZWNobz0iXCJcJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIKJGFzX2VjaG8gIiRhY190
cnlfZWNobyI7IH0gPiY1CiAgKGV2YWwgIiRhY190cnkiKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIg
PiY1CiAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsKdGhlbgogIGV2YWwgYWNfY3ZfcHJvZ19jY18k
e2FjX2NjfV9jX289eWVzCiAgaWYgdGVzdCAieCRDQyIgIT0geGNjOyB0aGVuCiAgICAjIFRlc3Qg
Zmlyc3QgdGhhdCBjYyBleGlzdHMgYXQgYWxsLgogICAgaWYgeyBhY190cnk9J2NjIC1jIGNvbmZ0
ZXN0LiRhY19leHQgPiY1JwogIHsgeyBjYXNlICIoKCRhY190cnkiIGluCiAgKlwiKiB8ICpcYCog
fCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7CiAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7
CmVzYWMKZXZhbCBhY190cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAk
YWNfdHJ5X2VjaG9cIiIKJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0gPiY1CiAgKGV2YWwgIiRh
Y190cnkiKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu
by0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgdGVzdCAkYWNfc3RhdHVzID0gMDsg
fTsgfTsgdGhlbgogICAgICBhY190cnk9J2NjIC1jIGNvbmZ0ZXN0LiRhY19leHQgLW8gY29uZnRl
c3QyLiRhY19vYmpleHQgPiY1JwogICAgICBybSAtZiBjb25mdGVzdDIuKgogICAgICBpZiB7IHsg
Y2FzZSAiKCgkYWNfdHJ5IiBpbgogICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRh
Y190cnk7OwogICopIGFjX3RyeV9lY2hvPSRhY190cnk7Owplc2FjCmV2YWwgYWNfdHJ5X2VjaG89
IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCiRhc19lY2hv
ICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQogIChldmFsICIkYWNfdHJ5IikgMj4mNQogIGFjX3N0YXR1
cz0kPwogICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19z
dGF0dXMiID4mNQogIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYKCSB0ZXN0IC1mIGNvbmZ0ZXN0
Mi4kYWNfb2JqZXh0ICYmIHsgeyBjYXNlICIoKCRhY190cnkiIGluCiAgKlwiKiB8ICpcYCogfCAq
XFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7CiAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7CmVz
YWMKZXZhbCBhY190cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNf
dHJ5X2VjaG9cIiIKJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0gPiY1CiAgKGV2YWwgIiRhY190
cnkiKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsK
ICAgICAgdGhlbgoJIyBjYyB3b3JrcyB0b28uCgk6CiAgICAgIGVsc2UKCSMgY2MgZXhpc3RzIGJ1
dCBkb2Vzbid0IGxpa2UgLW8uCglldmFsIGFjX2N2X3Byb2dfY2NfJHthY19jY31fY19vPW5vCiAg
ICAgIGZpCiAgICBmaQogIGZpCmVsc2UKICBldmFsIGFjX2N2X3Byb2dfY2NfJHthY19jY31fY19v
PW5vCmZpCnJtIC1mIGNvcmUgY29uZnRlc3QqCgpmaQppZiBldmFsIHRlc3QgXCRhY19jdl9wcm9n
X2NjXyR7YWNfY2N9X2NfbyA9IHllczsgdGhlbgogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQokYXNfZWNobyAieWVzIiA+JjY7IH0KZWxz
ZQogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIg
PiY1CiRhc19lY2hvICJubyIgPiY2OyB9CgokYXNfZWNobyAiI2RlZmluZSBOT19NSU5VU19DX01J
TlVTX08gMSIgPj5jb25mZGVmcy5oCgpmaQoKIyBGSVhNRTogd2UgcmVseSBvbiB0aGUgY2FjaGUg
dmFyaWFibGUgbmFtZSBiZWNhdXNlCiMgdGhlcmUgaXMgbm8gb3RoZXIgd2F5LgpzZXQgZHVtbXkg
JENDCmFtX2NjPWBlY2hvICQyIHwgc2VkICdzL1teYS16QS1aMC05X10vXy9nO3MvXlswLTldL18v
J2AKZXZhbCBhbV90PVwkYWNfY3ZfcHJvZ19jY18ke2FtX2NjfV9jX28KaWYgdGVzdCAiJGFtX3Qi
ICE9IHllczsgdGhlbgogICAjIExvc2luZyBjb21waWxlciwgc28gb3ZlcnJpZGUgd2l0aCB0aGUg
c2NyaXB0LgogICAjIEZJWE1FOiBJdCBpcyB3cm9uZyB0byByZXdyaXRlIENDLgogICAjIEJ1dCBp
ZiB3ZSBkb24ndCB0aGVuIHdlIGdldCBpbnRvIHRyb3VibGUgb2Ygb25lIHNvcnQgb3IgYW5vdGhl
ci4KICAgIyBBIGxvbmdlci10ZXJtIGZpeCB3b3VsZCBiZSB0byBoYXZlIGF1dG9tYWtlIHVzZSBh
bV9fQ0MgaW4gdGhpcyBjYXNlLAogICAjIGFuZCB0aGVuIHdlIGNvdWxkIHNldCBhbV9fQ0M9Ilwk
KHRvcF9zcmNkaXIpL2NvbXBpbGUgXCQoQ0MpIgogICBDQz0iJGFtX2F1eF9kaXIvY29tcGlsZSAk
Q0MiCmZpCgoKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu
ZyBmb3IgQU5TSSBDIGhlYWRlciBmaWxlcyIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIGZvciBB
TlNJIEMgaGVhZGVyIGZpbGVzLi4uICIgPiY2OyB9CmlmICR7YWNfY3ZfaGVhZGVyX3N0ZGMrOn0g
ZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKICBjYXQgY29u
ZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAg
Ki8KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RkYXJnLmg+CiNpbmNsdWRlIDxzdHJp
bmcuaD4KI2luY2x1ZGUgPGZsb2F0Lmg+CgppbnQKbWFpbiAoKQp7CgogIDsKICByZXR1cm4gMDsK
fQpfQUNFT0YKaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgogIGFjX2N2
X2hlYWRlcl9zdGRjPXllcwplbHNlCiAgYWNfY3ZfaGVhZGVyX3N0ZGM9bm8KZmkKcm0gLWYgY29y
ZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CgppZiB0
ZXN0ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbgogICMgU3VuT1MgNC54IHN0cmluZy5o
IGRvZXMgbm90IGRlY2xhcmUgbWVtKiwgY29udHJhcnkgdG8gQU5TSS4KICBjYXQgY29uZmRlZnMu
aCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2lu
Y2x1ZGUgPHN0cmluZy5oPgoKX0FDRU9GCmlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19l
eHQiKSAyPiY1IHwKICAkRUdSRVAgIm1lbWNociIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKCmVs
c2UKICBhY19jdl9oZWFkZXJfc3RkYz1ubwpmaQpybSAtZiBjb25mdGVzdCoKCmZpCgppZiB0ZXN0
ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbgogICMgSVNDIDIuMC4yIHN0ZGxpYi5oIGRv
ZXMgbm90IGRlY2xhcmUgZnJlZSwgY29udHJhcnkgdG8gQU5TSS4KICBjYXQgY29uZmRlZnMuaCAt
IDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1
ZGUgPHN0ZGxpYi5oPgoKX0FDRU9GCmlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQi
KSAyPiY1IHwKICAkRUdSRVAgImZyZWUiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CgplbHNlCiAg
YWNfY3ZfaGVhZGVyX3N0ZGM9bm8KZmkKcm0gLWYgY29uZnRlc3QqCgpmaQoKaWYgdGVzdCAkYWNf
Y3ZfaGVhZGVyX3N0ZGMgPSB5ZXM7IHRoZW4KICAjIC9iaW4vY2MgaW4gSXJpeC00LjAuNSBnZXRz
IG5vbi1BTlNJIGN0eXBlIG1hY3JvcyB1bmxlc3MgdXNpbmcgLWFuc2kuCiAgaWYgdGVzdCAiJGNy
b3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgogIDoKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0g
PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVk
ZSA8Y3R5cGUuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaWYgKCgnICcgJiAweDBGRikgPT0gMHgw
MjApCiMgZGVmaW5lIElTTE9XRVIoYykgKCdhJyA8PSAoYykgJiYgKGMpIDw9ICd6JykKIyBkZWZp
bmUgVE9VUFBFUihjKSAoSVNMT1dFUihjKSA/ICdBJyArICgoYykgLSAnYScpIDogKGMpKQojZWxz
ZQojIGRlZmluZSBJU0xPV0VSKGMpIFwKCQkgICAoKCdhJyA8PSAoYykgJiYgKGMpIDw9ICdpJykg
XAoJCSAgICAgfHwgKCdqJyA8PSAoYykgJiYgKGMpIDw9ICdyJykgXAoJCSAgICAgfHwgKCdzJyA8
PSAoYykgJiYgKGMpIDw9ICd6JykpCiMgZGVmaW5lIFRPVVBQRVIoYykgKElTTE9XRVIoYykgPyAo
KGMpIHwgMHg0MCkgOiAoYykpCiNlbmRpZgoKI2RlZmluZSBYT1IoZSwgZikgKCgoZSkgJiYgIShm
KSkgfHwgKCEoZSkgJiYgKGYpKSkKaW50Cm1haW4gKCkKewogIGludCBpOwogIGZvciAoaSA9IDA7
IGkgPCAyNTY7IGkrKykKICAgIGlmIChYT1IgKGlzbG93ZXIgKGkpLCBJU0xPV0VSIChpKSkKCXx8
IHRvdXBwZXIgKGkpICE9IFRPVVBQRVIgKGkpKQogICAgICByZXR1cm4gMjsKICByZXR1cm4gMDsK
fQpfQUNFT0YKaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CgplbHNlCiAgYWNf
Y3ZfaGVhZGVyX3N0ZGM9bm8KZmkKcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdt
b24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAogIGNvbmZ0ZXN0LiRhY19vYmpleHQg
Y29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CmZpCgpmaQpmaQp7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2hlYWRlcl9zdGRjIiA+JjUK
JGFzX2VjaG8gIiRhY19jdl9oZWFkZXJfc3RkYyIgPiY2OyB9CmlmIHRlc3QgJGFjX2N2X2hlYWRl
cl9zdGRjID0geWVzOyB0aGVuCgokYXNfZWNobyAiI2RlZmluZSBTVERDX0hFQURFUlMgMSIgPj5j
b25mZGVmcy5oCgpmaQoKIyBPbiBJUklYIDUuMywgc3lzL3R5cGVzIGFuZCBpbnR0eXBlcy5oIGFy
ZSBjb25mbGljdGluZy4KZm9yIGFjX2hlYWRlciBpbiBzeXMvdHlwZXMuaCBzeXMvc3RhdC5oIHN0
ZGxpYi5oIHN0cmluZy5oIG1lbW9yeS5oIHN0cmluZ3MuaCBcCgkJICBpbnR0eXBlcy5oIHN0ZGlu
dC5oIHVuaXN0ZC5oCmRvIDoKICBhc19hY19IZWFkZXI9YCRhc19lY2hvICJhY19jdl9oZWFkZXJf
JGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCmFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgIiRM
SU5FTk8iICIkYWNfaGVhZGVyIiAiJGFzX2FjX0hlYWRlciIgIiRhY19pbmNsdWRlc19kZWZhdWx0
CiIKaWYgZXZhbCB0ZXN0IFwieFwkIiRhc19hY19IZWFkZXIiXCIgPSB4InllcyI7IHRoZW4gOgog
IGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBgJGFzX2VjaG8gIkhBVkVfJGFjX2hl
YWRlciIgfCAkYXNfdHJfY3BwYCAxCl9BQ0VPRgoKZmkKCmRvbmUKCgoKICBhY19mbl9jX2NoZWNr
X2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAibWluaXgvY29uZmlnLmgiICJhY19jdl9oZWFkZXJf
bWluaXhfY29uZmlnX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKaWYgdGVzdCAieCRhY19jdl9o
ZWFkZXJfbWluaXhfY29uZmlnX2giID0geHllczsgdGhlbiA6CiAgTUlOSVg9eWVzCmVsc2UKICBN
SU5JWD0KZmkKCgogIGlmIHRlc3QgIiRNSU5JWCIgPSB5ZXM7IHRoZW4KCiRhc19lY2hvICIjZGVm
aW5lIF9QT1NJWF9TT1VSQ0UgMSIgPj5jb25mZGVmcy5oCgoKJGFzX2VjaG8gIiNkZWZpbmUgX1BP
U0lYXzFfU09VUkNFIDIiID4+Y29uZmRlZnMuaAoKCiRhc19lY2hvICIjZGVmaW5lIF9NSU5JWCAx
IiA+PmNvbmZkZWZzLmgKCgokYXNfZWNobyAiI2RlZmluZSBfTkVUQlNEX1NPVVJDRSAxIiA+PmNv
bmZkZWZzLmgKCiAgZmkKCgogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogY2hlY2tpbmcgd2hldGhlciBpdCBpcyBzYWZlIHRvIGRlZmluZSBfX0VYVEVOU0lPTlNfXyIg
PiY1CiRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgaXQgaXMgc2FmZSB0byBkZWZpbmUgX19F
WFRFTlNJT05TX18uLi4gIiA+JjY7IH0KaWYgJHthY19jdl9zYWZlX3RvX2RlZmluZV9fX2V4dGVu
c2lvbnNfXys6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxz
ZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNv
bmZkZWZzLmguICAqLwoKIyAgICAgICAgIGRlZmluZSBfX0VYVEVOU0lPTlNfXyAxCiAgICAgICAg
ICAkYWNfaW5jbHVkZXNfZGVmYXVsdAppbnQKbWFpbiAoKQp7CgogIDsKICByZXR1cm4gMDsKfQpf
QUNFT0YKaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgogIGFjX2N2X3Nh
ZmVfdG9fZGVmaW5lX19fZXh0ZW5zaW9uc19fPXllcwplbHNlCiAgYWNfY3Zfc2FmZV90b19kZWZp
bmVfX19leHRlbnNpb25zX189bm8KZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3Qu
JGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zfc2FmZV90b19kZWZpbmVfX19leHRlbnNpb25z
X18iID4mNQokYXNfZWNobyAiJGFjX2N2X3NhZmVfdG9fZGVmaW5lX19fZXh0ZW5zaW9uc19fIiA+
JjY7IH0KICB0ZXN0ICRhY19jdl9zYWZlX3RvX2RlZmluZV9fX2V4dGVuc2lvbnNfXyA9IHllcyAm
JgogICAgJGFzX2VjaG8gIiNkZWZpbmUgX19FWFRFTlNJT05TX18gMSIgPj5jb25mZGVmcy5oCgog
ICRhc19lY2hvICIjZGVmaW5lIF9BTExfU09VUkNFIDEiID4+Y29uZmRlZnMuaAoKICAkYXNfZWNo
byAiI2RlZmluZSBfREFSV0lOX0NfU09VUkNFIDEiID4+Y29uZmRlZnMuaAoKICAkYXNfZWNobyAi
I2RlZmluZSBfR05VX1NPVVJDRSAxIiA+PmNvbmZkZWZzLmgKCiAgJGFzX2VjaG8gIiNkZWZpbmUg
X1BPU0lYX1BUSFJFQURfU0VNQU5USUNTIDEiID4+Y29uZmRlZnMuaAoKICAkYXNfZWNobyAiI2Rl
ZmluZSBfVEFOREVNX1NPVVJDRSAxIiA+PmNvbmZkZWZzLmgKCiAgeyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIF9YT1BFTl9TT1VSQ0Ugc2hv
dWxkIGJlIGRlZmluZWQiID4mNQokYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIF9YT1BFTl9T
T1VSQ0Ugc2hvdWxkIGJlIGRlZmluZWQuLi4gIiA+JjY7IH0KaWYgJHthY19jdl9zaG91bGRfZGVm
aW5lX194b3Blbl9zb3VyY2UrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQp
ICIgPiY2CmVsc2UKICBhY19jdl9zaG91bGRfZGVmaW5lX194b3Blbl9zb3VyY2U9bm8KICAgICBj
YXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVm
cy5oLiAgKi8KCiAgICAgICAgICAjaW5jbHVkZSA8d2NoYXIuaD4KICAgICAgICAgIG1ic3RhdGVf
dCB4OwppbnQKbWFpbiAoKQp7CgogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNfZm5fY190
cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgoKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxf
QUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwoKICAgICAgICAg
ICAgICNkZWZpbmUgX1hPUEVOX1NPVVJDRSA1MDAKICAgICAgICAgICAgICNpbmNsdWRlIDx3Y2hh
ci5oPgogICAgICAgICAgICAgbWJzdGF0ZV90IHg7CmludAptYWluICgpCnsKCiAgOwogIHJldHVy
biAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CiAg
YWNfY3Zfc2hvdWxkX2RlZmluZV9feG9wZW5fc291cmNlPXllcwpmaQpybSAtZiBjb3JlIGNvbmZ0
ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKZmkKcm0gLWYgY29y
ZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CmZpCnsg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zfc2hv
dWxkX2RlZmluZV9feG9wZW5fc291cmNlIiA+JjUKJGFzX2VjaG8gIiRhY19jdl9zaG91bGRfZGVm
aW5lX194b3Blbl9zb3VyY2UiID4mNjsgfQogIHRlc3QgJGFjX2N2X3Nob3VsZF9kZWZpbmVfX3hv
cGVuX3NvdXJjZSA9IHllcyAmJgogICAgJGFzX2VjaG8gIiNkZWZpbmUgX1hPUEVOX1NPVVJDRSA1
MDAiID4+Y29uZmRlZnMuaAoKCgoKCgoKCiMgTWFrZSBzdXJlIHdlIGNhbiBydW4gY29uZmlnLnN1
Yi4KJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuc3ViIiBzdW40ID4vZGV2L251bGwgMj4mMSB8
fAogIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgcnVuICRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcu
c3ViIiAiJExJTkVOTyIgNQoKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiBjaGVja2luZyBidWlsZCBzeXN0ZW0gdHlwZSIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIGJ1
aWxkIHN5c3RlbSB0eXBlLi4uICIgPiY2OyB9CmlmICR7YWNfY3ZfYnVpbGQrOn0gZmFsc2U7IHRo
ZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKICBhY19idWlsZF9hbGlhcz0k
YnVpbGRfYWxpYXMKdGVzdCAieCRhY19idWlsZF9hbGlhcyIgPSB4ICYmCiAgYWNfYnVpbGRfYWxp
YXM9YCRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLmd1ZXNzImAKdGVzdCAieCRhY19idWlsZF9h
bGlhcyIgPSB4ICYmCiAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBndWVzcyBidWlsZCB0eXBlOyB5
b3UgbXVzdCBzcGVjaWZ5IG9uZSIgIiRMSU5FTk8iIDUKYWNfY3ZfYnVpbGQ9YCRTSEVMTCAiJGFj
X2F1eF9kaXIvY29uZmlnLnN1YiIgJGFjX2J1aWxkX2FsaWFzYCB8fAogIGFzX2ZuX2Vycm9yICQ/
ICIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiAkYWNfYnVpbGRfYWxpYXMgZmFpbGVkIiAi
JExJTkVOTyIgNQoKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy
ZXN1bHQ6ICRhY19jdl9idWlsZCIgPiY1CiRhc19lY2hvICIkYWNfY3ZfYnVpbGQiID4mNjsgfQpj
YXNlICRhY19jdl9idWlsZCBpbgoqLSotKikgOzsKKikgYXNfZm5fZXJyb3IgJD8gImludmFsaWQg
dmFsdWUgb2YgY2Fub25pY2FsIGJ1aWxkIiAiJExJTkVOTyIgNTs7CmVzYWMKYnVpbGQ9JGFjX2N2
X2J1aWxkCmFjX3NhdmVfSUZTPSRJRlM7IElGUz0nLScKc2V0IHggJGFjX2N2X2J1aWxkCnNoaWZ0
CmJ1aWxkX2NwdT0kMQpidWlsZF92ZW5kb3I9JDIKc2hpZnQ7IHNoaWZ0CiMgUmVtZW1iZXIsIHRo
ZSBmaXJzdCBjaGFyYWN0ZXIgb2YgSUZTIGlzIHVzZWQgdG8gY3JlYXRlICQqLAojIGV4Y2VwdCB3
aXRoIG9sZCBzaGVsbHM6CmJ1aWxkX29zPSQqCklGUz0kYWNfc2F2ZV9JRlMKY2FzZSAkYnVpbGRf
b3MgaW4gKlwgKikgYnVpbGRfb3M9YGVjaG8gIiRidWlsZF9vcyIgfCBzZWQgJ3MvIC8tL2cnYDs7
IGVzYWMKCgp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5n
IGhvc3Qgc3lzdGVtIHR5cGUiID4mNQokYXNfZWNob19uICJjaGVja2luZyBob3N0IHN5c3RlbSB0
eXBlLi4uICIgPiY2OyB9CmlmICR7YWNfY3ZfaG9zdCs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2Vj
aG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIGlmIHRlc3QgIngkaG9zdF9hbGlhcyIgPSB4OyB0
aGVuCiAgYWNfY3ZfaG9zdD0kYWNfY3ZfYnVpbGQKZWxzZQogIGFjX2N2X2hvc3Q9YCRTSEVMTCAi
JGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgJGhvc3RfYWxpYXNgIHx8CiAgICBhc19mbl9lcnJvciAk
PyAiJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIgJGhvc3RfYWxpYXMgZmFpbGVkIiAiJExJ
TkVOTyIgNQpmaQoKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy
ZXN1bHQ6ICRhY19jdl9ob3N0IiA+JjUKJGFzX2VjaG8gIiRhY19jdl9ob3N0IiA+JjY7IH0KY2Fz
ZSAkYWNfY3ZfaG9zdCBpbgoqLSotKikgOzsKKikgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgdmFs
dWUgb2YgY2Fub25pY2FsIGhvc3QiICIkTElORU5PIiA1OzsKZXNhYwpob3N0PSRhY19jdl9ob3N0
CmFjX3NhdmVfSUZTPSRJRlM7IElGUz0nLScKc2V0IHggJGFjX2N2X2hvc3QKc2hpZnQKaG9zdF9j
cHU9JDEKaG9zdF92ZW5kb3I9JDIKc2hpZnQ7IHNoaWZ0CiMgUmVtZW1iZXIsIHRoZSBmaXJzdCBj
aGFyYWN0ZXIgb2YgSUZTIGlzIHVzZWQgdG8gY3JlYXRlICQqLAojIGV4Y2VwdCB3aXRoIG9sZCBz
aGVsbHM6Cmhvc3Rfb3M9JCoKSUZTPSRhY19zYXZlX0lGUwpjYXNlICRob3N0X29zIGluICpcICop
IGhvc3Rfb3M9YGVjaG8gIiRob3N0X29zIiB8IHNlZCAncy8gLy0vZydgOzsgZXNhYwoKCgoKCiAg
IyBJRUVFIGJlaGF2aW91ciBpcyB0aGUgZGVmYXVsdCBvbiBhbGwgQ1BVcyBleGNlcHQgQWxwaGEg
YW5kIFNICiAgIyAoYWNjb3JkaW5nIHRvIHRoZSB0ZXN0IHJlc3VsdHMgb2YgQnJ1bm8gSGFpYmxl
J3MgaWVlZWZwL2ZlbnZfZGVmYXVsdC5tNAogICMgYW5kIHRoZSBHQ0MgNC4xLjIgbWFudWFsKS4K
ICBjYXNlICIkaG9zdF9jcHUiIGluCiAgICBhbHBoYSopCiAgICAgICMgT24gQWxwaGEgc3lzdGVt
cywgYSBjb21waWxlciBvcHRpb24gcHJvdmlkZXMgdGhlIGJlaGF2aW91ci4KICAgICAgIyBTZWUg
dGhlIGllZWUoMykgbWFudWFsIHBhZ2UsIGFsc28gYXZhaWxhYmxlIGF0CiAgICAgICMgPGh0dHA6
Ly9oMzAwOTcud3d3My5ocC5jb20vZG9jcy9iYXNlX2RvYy9ET0NVTUVOVEFUSU9OL1Y1MUJfSFRN
TC9NQU4vTUFOMy8wNjAwX19fXy5IVE0+CiAgICAgIGlmIHRlc3QgLW4gIiRHQ0MiOyB0aGVuCiAg
ICAgICAgIyBHQ0MgaGFzIHRoZSBvcHRpb24gLW1pZWVlLgogICAgICAgICMgRm9yIGZ1bGwgSUVF
RSBjb21wbGlhbmNlIChyYXJlbHkgbmVlZGVkKSwgdXNlIG9wdGlvbiAtbWllZWUtd2l0aC1pbmV4
YWN0LgogICAgICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLW1pZWVlIgogICAgICBlbHNlCiAgICAg
ICAgIyBDb21wYXEgKGV4LURFQykgQyBoYXMgdGhlIG9wdGlvbiAtaWVlZSwgZXF1aXZhbGVudCB0
byAtaWVlZV93aXRoX25vX2luZXhhY3QuCiAgICAgICAgIyBGb3IgZnVsbCBJRUVFIGNvbXBsaWFu
Y2UgKHJhcmVseSBuZWVkZWQpLCB1c2Ugb3B0aW9uIC1pZWVlX3dpdGhfaW5leGFjdC4KICAgICAg
ICBDUFBGTEFHUz0iJENQUEZMQUdTIC1pZWVlIgogICAgICBmaQogICAgICA7OwogICAgc2gqKQog
ICAgICBpZiB0ZXN0IC1uICIkR0NDIjsgdGhlbgogICAgICAgICMgR0NDIGhhcyB0aGUgb3B0aW9u
IC1taWVlZS4KICAgICAgICBDUFBGTEFHUz0iJENQUEZMQUdTIC1taWVlZSIKICAgICAgZmkKICAg
ICAgOzsKICBlc2FjCgojIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbGFyZ2VmaWxlIHdhcyBnaXZl
bi4KaWYgdGVzdCAiJHtlbmFibGVfbGFyZ2VmaWxlK3NldH0iID0gc2V0OyB0aGVuIDoKICBlbmFi
bGV2YWw9JGVuYWJsZV9sYXJnZWZpbGU7CmZpCgppZiB0ZXN0ICIkZW5hYmxlX2xhcmdlZmlsZSIg
IT0gbm87IHRoZW4KCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj
aGVja2luZyBmb3Igc3BlY2lhbCBDIGNvbXBpbGVyIG9wdGlvbnMgbmVlZGVkIGZvciBsYXJnZSBm
aWxlcyIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIGZvciBzcGVjaWFsIEMgY29tcGlsZXIgb3B0
aW9ucyBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzLi4uICIgPiY2OyB9CmlmICR7YWNfY3Zfc3lzX2xh
cmdlZmlsZV9DQys6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYK
ZWxzZQogIGFjX2N2X3N5c19sYXJnZWZpbGVfQ0M9bm8KICAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5
ZXM7IHRoZW4KICAgICAgIGFjX3NhdmVfQ0M9JENDCiAgICAgICB3aGlsZSA6OyBkbwogICAgICAg
ICAjIElSSVggNi4yIGFuZCBsYXRlciBkbyBub3Qgc3VwcG9ydCBsYXJnZSBmaWxlcyBieSBkZWZh
dWx0LAogICAgICAgICAjIHNvIHVzZSB0aGUgQyBjb21waWxlcidzIC1uMzIgb3B0aW9uIGlmIHRo
YXQgaGVscHMuCiAgICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRh
Y19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAvKiBD
aGVjayB0aGF0IG9mZl90IGNhbiByZXByZXNlbnQgMioqNjMgLSAxIGNvcnJlY3RseS4KICAgIFdl
IGNhbid0IHNpbXBseSBkZWZpbmUgTEFSR0VfT0ZGX1QgdG8gYmUgOTIyMzM3MjAzNjg1NDc3NTgw
NywKICAgIHNpbmNlIHNvbWUgQysrIGNvbXBpbGVycyBtYXNxdWVyYWRpbmcgYXMgQyBjb21waWxl
cnMKICAgIGluY29ycmVjdGx5IHJlamVjdCA5MjIzMzcyMDM2ODU0Nzc1ODA3LiAgKi8KI2RlZmlu
ZSBMQVJHRV9PRkZfVCAoKChvZmZfdCkgMSA8PCA2MikgLSAxICsgKChvZmZfdCkgMSA8PCA2Mikp
CiAgaW50IG9mZl90X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0gNzIxCiAg
ICAgICAgICAgICAgICAgICAgICAgJiYgTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjQ3ID09IDEpCiAg
ICAgICAgICAgICAgICAgICAgICA/IDEgOiAtMV07CmludAptYWluICgpCnsKCiAgOwogIHJldHVy
biAwOwp9Cl9BQ0VPRgogICAgICAgICBpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsg
dGhlbiA6CiAgYnJlYWsKZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29i
amV4dAogICAgICAgICBDQz0iJENDIC1uMzIiCiAgICAgICAgIGlmIGFjX2ZuX2NfdHJ5X2NvbXBp
bGUgIiRMSU5FTk8iOyB0aGVuIDoKICBhY19jdl9zeXNfbGFyZ2VmaWxlX0NDPScgLW4zMic7IGJy
ZWFrCmZpCnJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQKICAgICAg
ICAgYnJlYWsKICAgICAgIGRvbmUKICAgICAgIENDPSRhY19zYXZlX0NDCiAgICAgICBybSAtZiBj
b25mdGVzdC4kYWNfZXh0CiAgICBmaQpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IHJlc3VsdDogJGFjX2N2X3N5c19sYXJnZWZpbGVfQ0MiID4mNQokYXNfZWNobyAi
JGFjX2N2X3N5c19sYXJnZWZpbGVfQ0MiID4mNjsgfQogIGlmIHRlc3QgIiRhY19jdl9zeXNfbGFy
Z2VmaWxlX0NDIiAhPSBubzsgdGhlbgogICAgQ0M9JENDJGFjX2N2X3N5c19sYXJnZWZpbGVfQ0MK
ICBmaQoKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5n
IGZvciBfRklMRV9PRkZTRVRfQklUUyB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzIiA+JjUK
JGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIF9GSUxFX09GRlNFVF9CSVRTIHZhbHVlIG5lZWRlZCBm
b3IgbGFyZ2UgZmlsZXMuLi4gIiA+JjY7IH0KaWYgJHthY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0
cys6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIHdo
aWxlIDo7IGRvCiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAov
KiBlbmQgY29uZmRlZnMuaC4gICovCiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KIC8qIENoZWNrIHRo
YXQgb2ZmX3QgY2FuIHJlcHJlc2VudCAyKio2MyAtIDEgY29ycmVjdGx5LgogICAgV2UgY2FuJ3Qg
c2ltcGx5IGRlZmluZSBMQVJHRV9PRkZfVCB0byBiZSA5MjIzMzcyMDM2ODU0Nzc1ODA3LAogICAg
c2luY2Ugc29tZSBDKysgY29tcGlsZXJzIG1hc3F1ZXJhZGluZyBhcyBDIGNvbXBpbGVycwogICAg
aW5jb3JyZWN0bHkgcmVqZWN0IDkyMjMzNzIwMzY4NTQ3NzU4MDcuICAqLwojZGVmaW5lIExBUkdF
X09GRl9UICgoKG9mZl90KSAxIDw8IDYyKSAtIDEgKyAoKG9mZl90KSAxIDw8IDYyKSkKICBpbnQg
b2ZmX3RfaXNfbGFyZ2VbKExBUkdFX09GRl9UICUgMjE0NzQ4MzYyOSA9PSA3MjEKICAgICAgICAg
ICAgICAgICAgICAgICAmJiBMQVJHRV9PRkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkKICAgICAgICAg
ICAgICAgICAgICAgID8gMSA6IC0xXTsKaW50Cm1haW4gKCkKewoKICA7CiAgcmV0dXJuIDA7Cn0K
X0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKICBhY19jdl9z
eXNfZmlsZV9vZmZzZXRfYml0cz1ubzsgYnJlYWsKZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIg
Y29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiAgY2F0IGNvbmZkZWZzLmggLSA8
PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCiNkZWZpbmUg
X0ZJTEVfT0ZGU0VUX0JJVFMgNjQKI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogLyogQ2hlY2sgdGhh
dCBvZmZfdCBjYW4gcmVwcmVzZW50IDIqKjYzIC0gMSBjb3JyZWN0bHkuCiAgICBXZSBjYW4ndCBz
aW1wbHkgZGVmaW5lIExBUkdFX09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcsCiAgICBz
aW5jZSBzb21lIEMrKyBjb21waWxlcnMgbWFzcXVlcmFkaW5nIGFzIEMgY29tcGlsZXJzCiAgICBp
bmNvcnJlY3RseSByZWplY3QgOTIyMzM3MjAzNjg1NDc3NTgwNy4gICovCiNkZWZpbmUgTEFSR0Vf
T0ZGX1QgKCgob2ZmX3QpIDEgPDwgNjIpIC0gMSArICgob2ZmX3QpIDEgPDwgNjIpKQogIGludCBv
ZmZfdF9pc19sYXJnZVsoTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjI5ID09IDcyMQogICAgICAgICAg
ICAgICAgICAgICAgICYmIExBUkdFX09GRl9UICUgMjE0NzQ4MzY0NyA9PSAxKQogICAgICAgICAg
ICAgICAgICAgICAgPyAxIDogLTFdOwppbnQKbWFpbiAoKQp7CgogIDsKICByZXR1cm4gMDsKfQpf
QUNFT0YKaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgogIGFjX2N2X3N5
c19maWxlX29mZnNldF9iaXRzPTY0OyBicmVhawpmaQpybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBj
b25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKICBhY19jdl9zeXNfZmlsZV9vZmZz
ZXRfYml0cz11bmtub3duCiAgYnJlYWsKZG9uZQpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzIiA+JjUK
JGFzX2VjaG8gIiRhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cyIgPiY2OyB9CmNhc2UgJGFjX2N2
X3N5c19maWxlX29mZnNldF9iaXRzIGluICMoCiAgbm8gfCB1bmtub3duKSA7OwogICopCmNhdCA+
PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBfRklMRV9PRkZTRVRfQklUUyAkYWNfY3Zfc3lz
X2ZpbGVfb2Zmc2V0X2JpdHMKX0FDRU9GCjs7CmVzYWMKcm0gLXJmIGNvbmZ0ZXN0KgogIGlmIHRl
c3QgJGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzID0gdW5rbm93bjsgdGhlbgogICAgeyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgX0xBUkdFX0ZJ
TEVTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMiID4mNQokYXNfZWNob19uICJjaGVja2lu
ZyBmb3IgX0xBUkdFX0ZJTEVTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMuLi4gIiA+JjY7
IH0KaWYgJHthY19jdl9zeXNfbGFyZ2VfZmlsZXMrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hv
X24gIihjYWNoZWQpICIgPiY2CmVsc2UKICB3aGlsZSA6OyBkbwogIGNhdCBjb25mZGVmcy5oIC0g
PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVk
ZSA8c3lzL3R5cGVzLmg+CiAvKiBDaGVjayB0aGF0IG9mZl90IGNhbiByZXByZXNlbnQgMioqNjMg
LSAxIGNvcnJlY3RseS4KICAgIFdlIGNhbid0IHNpbXBseSBkZWZpbmUgTEFSR0VfT0ZGX1QgdG8g
YmUgOTIyMzM3MjAzNjg1NDc3NTgwNywKICAgIHNpbmNlIHNvbWUgQysrIGNvbXBpbGVycyBtYXNx
dWVyYWRpbmcgYXMgQyBjb21waWxlcnMKICAgIGluY29ycmVjdGx5IHJlamVjdCA5MjIzMzcyMDM2
ODU0Nzc1ODA3LiAgKi8KI2RlZmluZSBMQVJHRV9PRkZfVCAoKChvZmZfdCkgMSA8PCA2MikgLSAx
ICsgKChvZmZfdCkgMSA8PCA2MikpCiAgaW50IG9mZl90X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAl
IDIxNDc0ODM2MjkgPT0gNzIxCiAgICAgICAgICAgICAgICAgICAgICAgJiYgTEFSR0VfT0ZGX1Qg
JSAyMTQ3NDgzNjQ3ID09IDEpCiAgICAgICAgICAgICAgICAgICAgICA/IDEgOiAtMV07CmludApt
YWluICgpCnsKCiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9jb21waWxl
ICIkTElORU5PIjsgdGhlbiA6CiAgYWNfY3Zfc3lzX2xhcmdlX2ZpbGVzPW5vOyBicmVhawpmaQpy
bSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19l
eHQKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBj
b25mZGVmcy5oLiAgKi8KI2RlZmluZSBfTEFSR0VfRklMRVMgMQojaW5jbHVkZSA8c3lzL3R5cGVz
Lmg+CiAvKiBDaGVjayB0aGF0IG9mZl90IGNhbiByZXByZXNlbnQgMioqNjMgLSAxIGNvcnJlY3Rs
eS4KICAgIFdlIGNhbid0IHNpbXBseSBkZWZpbmUgTEFSR0VfT0ZGX1QgdG8gYmUgOTIyMzM3MjAz
Njg1NDc3NTgwNywKICAgIHNpbmNlIHNvbWUgQysrIGNvbXBpbGVycyBtYXNxdWVyYWRpbmcgYXMg
QyBjb21waWxlcnMKICAgIGluY29ycmVjdGx5IHJlamVjdCA5MjIzMzcyMDM2ODU0Nzc1ODA3LiAg
Ki8KI2RlZmluZSBMQVJHRV9PRkZfVCAoKChvZmZfdCkgMSA8PCA2MikgLSAxICsgKChvZmZfdCkg
MSA8PCA2MikpCiAgaW50IG9mZl90X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2Mjkg
PT0gNzIxCiAgICAgICAgICAgICAgICAgICAgICAgJiYgTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjQ3
ID09IDEpCiAgICAgICAgICAgICAgICAgICAgICA/IDEgOiAtMV07CmludAptYWluICgpCnsKCiAg
OwogIHJldHVybiAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsg
dGhlbiA6CiAgYWNfY3Zfc3lzX2xhcmdlX2ZpbGVzPTE7IGJyZWFrCmZpCnJtIC1mIGNvcmUgY29u
ZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogIGFjX2N2X3N5
c19sYXJnZV9maWxlcz11bmtub3duCiAgYnJlYWsKZG9uZQpmaQp7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3N5c19sYXJnZV9maWxlcyIgPiY1
CiRhc19lY2hvICIkYWNfY3Zfc3lzX2xhcmdlX2ZpbGVzIiA+JjY7IH0KY2FzZSAkYWNfY3Zfc3lz
X2xhcmdlX2ZpbGVzIGluICMoCiAgbm8gfCB1bmtub3duKSA7OwogICopCmNhdCA+PmNvbmZkZWZz
LmggPDxfQUNFT0YKI2RlZmluZSBfTEFSR0VfRklMRVMgJGFjX2N2X3N5c19sYXJnZV9maWxlcwpf
QUNFT0YKOzsKZXNhYwpybSAtcmYgY29uZnRlc3QqCiAgZmkKCgokYXNfZWNobyAiI2RlZmluZSBf
REFSV0lOX1VTRV82NF9CSVRfSU5PREUgMSIgPj5jb25mZGVmcy5oCgpmaQoKICAgY2FzZSAkYWNf
Y3ZfcHJvZ19jY19zdGRjIGluICMoCiAgbm8pIDoKICAgIGFjX2N2X3Byb2dfY2NfYzk5PW5vOyBh
Y19jdl9wcm9nX2NjX2M4OT1ubyA7OyAjKAogICopIDoKICAgIHsgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRDQyBvcHRpb24gdG8gYWNjZXB0IElT
TyBDOTkiID4mNQokYXNfZWNob19uICJjaGVja2luZyBmb3IgJENDIG9wdGlvbiB0byBhY2NlcHQg
SVNPIEM5OS4uLiAiID4mNjsgfQppZiAke2FjX2N2X3Byb2dfY2NfYzk5Kzp9IGZhbHNlOyB0aGVu
IDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCiAgYWNfY3ZfcHJvZ19jY19jOTk9
bm8KYWNfc2F2ZV9DQz0kQ0MKY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFj
X2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCiNpbmNsdWRlIDxzdGRhcmcuaD4KI2luY2x1ZGUg
PHN0ZGJvb2wuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8d2NoYXIuaD4KI2luY2x1
ZGUgPHN0ZGlvLmg+CgovLyBDaGVjayB2YXJhcmdzIG1hY3Jvcy4gIFRoZXNlIGV4YW1wbGVzIGFy
ZSB0YWtlbiBmcm9tIEM5OSA2LjEwLjMuNS4KI2RlZmluZSBkZWJ1ZyguLi4pIGZwcmludGYgKHN0
ZGVyciwgX19WQV9BUkdTX18pCiNkZWZpbmUgc2hvd2xpc3QoLi4uKSBwdXRzICgjX19WQV9BUkdT
X18pCiNkZWZpbmUgcmVwb3J0KHRlc3QsLi4uKSAoKHRlc3QpID8gcHV0cyAoI3Rlc3QpIDogcHJp
bnRmIChfX1ZBX0FSR1NfXykpCnN0YXRpYyB2b2lkCnRlc3RfdmFyYXJnc19tYWNyb3MgKHZvaWQp
CnsKICBpbnQgeCA9IDEyMzQ7CiAgaW50IHkgPSA1Njc4OwogIGRlYnVnICgiRmxhZyIpOwogIGRl
YnVnICgiWCA9ICVkXG4iLCB4KTsKICBzaG93bGlzdCAoVGhlIGZpcnN0LCBzZWNvbmQsIGFuZCB0
aGlyZCBpdGVtcy4pOwogIHJlcG9ydCAoeD55LCAieCBpcyAlZCBidXQgeSBpcyAlZCIsIHgsIHkp
Owp9CgovLyBDaGVjayBsb25nIGxvbmcgdHlwZXMuCiNkZWZpbmUgQklHNjQgMTg0NDY3NDQwNzM3
MDk1NTE2MTV1bGwKI2RlZmluZSBCSUczMiA0Mjk0OTY3Mjk1dWwKI2RlZmluZSBCSUdfT0sgKEJJ
RzY0IC8gQklHMzIgPT0gNDI5NDk2NzI5N3VsbCAmJiBCSUc2NCAlIEJJRzMyID09IDApCiNpZiAh
QklHX09LCiAgeW91ciBwcmVwcm9jZXNzb3IgaXMgYnJva2VuOwojZW5kaWYKI2lmIEJJR19PSwoj
ZWxzZQogIHlvdXIgcHJlcHJvY2Vzc29yIGlzIGJyb2tlbjsKI2VuZGlmCnN0YXRpYyBsb25nIGxv
bmcgaW50IGJpZ251bSA9IC05MjIzMzcyMDM2ODU0Nzc1ODA3TEw7CnN0YXRpYyB1bnNpZ25lZCBs
b25nIGxvbmcgaW50IHViaWdudW0gPSBCSUc2NDsKCnN0cnVjdCBpbmNvbXBsZXRlX2FycmF5CnsK
ICBpbnQgZGF0YXNpemU7CiAgZG91YmxlIGRhdGFbXTsKfTsKCnN0cnVjdCBuYW1lZF9pbml0IHsK
ICBpbnQgbnVtYmVyOwogIGNvbnN0IHdjaGFyX3QgKm5hbWU7CiAgZG91YmxlIGF2ZXJhZ2U7Cn07
Cgp0eXBlZGVmIGNvbnN0IGNoYXIgKmNjcDsKCnN0YXRpYyBpbmxpbmUgaW50CnRlc3RfcmVzdHJp
Y3QgKGNjcCByZXN0cmljdCB0ZXh0KQp7CiAgLy8gU2VlIGlmIEMrKy1zdHlsZSBjb21tZW50cyB3
b3JrLgogIC8vIEl0ZXJhdGUgdGhyb3VnaCBpdGVtcyB2aWEgdGhlIHJlc3RyaWN0ZWQgcG9pbnRl
ci4KICAvLyBBbHNvIGNoZWNrIGZvciBkZWNsYXJhdGlvbnMgaW4gZm9yIGxvb3BzLgogIGZvciAo
dW5zaWduZWQgaW50IGkgPSAwOyAqKHRleHQraSkgIT0gJ1wwJzsgKytpKQogICAgY29udGludWU7
CiAgcmV0dXJuIDA7Cn0KCi8vIENoZWNrIHZhcmFyZ3MgYW5kIHZhX2NvcHkuCnN0YXRpYyB2b2lk
CnRlc3RfdmFyYXJncyAoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCnsKICB2YV9saXN0IGFyZ3M7
CiAgdmFfc3RhcnQgKGFyZ3MsIGZvcm1hdCk7CiAgdmFfbGlzdCBhcmdzX2NvcHk7CiAgdmFfY29w
eSAoYXJnc19jb3B5LCBhcmdzKTsKCiAgY29uc3QgY2hhciAqc3RyOwogIGludCBudW1iZXI7CiAg
ZmxvYXQgZm51bWJlcjsKCiAgd2hpbGUgKCpmb3JtYXQpCiAgICB7CiAgICAgIHN3aXRjaCAoKmZv
cm1hdCsrKQoJewoJY2FzZSAncyc6IC8vIHN0cmluZwoJICBzdHIgPSB2YV9hcmcgKGFyZ3NfY29w
eSwgY29uc3QgY2hhciAqKTsKCSAgYnJlYWs7CgljYXNlICdkJzogLy8gaW50CgkgIG51bWJlciA9
IHZhX2FyZyAoYXJnc19jb3B5LCBpbnQpOwoJICBicmVhazsKCWNhc2UgJ2YnOiAvLyBmbG9hdAoJ
ICBmbnVtYmVyID0gdmFfYXJnIChhcmdzX2NvcHksIGRvdWJsZSk7CgkgIGJyZWFrOwoJZGVmYXVs
dDoKCSAgYnJlYWs7Cgl9CiAgICB9CiAgdmFfZW5kIChhcmdzX2NvcHkpOwogIHZhX2VuZCAoYXJn
cyk7Cn0KCmludAptYWluICgpCnsKCiAgLy8gQ2hlY2sgYm9vbC4KICBfQm9vbCBzdWNjZXNzID0g
ZmFsc2U7CgogIC8vIENoZWNrIHJlc3RyaWN0LgogIGlmICh0ZXN0X3Jlc3RyaWN0ICgiU3RyaW5n
IGxpdGVyYWwiKSA9PSAwKQogICAgc3VjY2VzcyA9IHRydWU7CiAgY2hhciAqcmVzdHJpY3QgbmV3
dmFyID0gIkFub3RoZXIgc3RyaW5nIjsKCiAgLy8gQ2hlY2sgdmFyYXJncy4KICB0ZXN0X3ZhcmFy
Z3MgKCJzLCBkJyBmIC4iLCAic3RyaW5nIiwgNjUsIDM0LjIzNCk7CiAgdGVzdF92YXJhcmdzX21h
Y3JvcyAoKTsKCiAgLy8gQ2hlY2sgZmxleGlibGUgYXJyYXkgbWVtYmVycy4KICBzdHJ1Y3QgaW5j
b21wbGV0ZV9hcnJheSAqaWEgPQogICAgbWFsbG9jIChzaXplb2YgKHN0cnVjdCBpbmNvbXBsZXRl
X2FycmF5KSArIChzaXplb2YgKGRvdWJsZSkgKiAxMCkpOwogIGlhLT5kYXRhc2l6ZSA9IDEwOwog
IGZvciAoaW50IGkgPSAwOyBpIDwgaWEtPmRhdGFzaXplOyArK2kpCiAgICBpYS0+ZGF0YVtpXSA9
IGkgKiAxLjIzNDsKCiAgLy8gQ2hlY2sgbmFtZWQgaW5pdGlhbGl6ZXJzLgogIHN0cnVjdCBuYW1l
ZF9pbml0IG5pID0gewogICAgLm51bWJlciA9IDM0LAogICAgLm5hbWUgPSBMIlRlc3Qgd2lkZSBz
dHJpbmciLAogICAgLmF2ZXJhZ2UgPSA1NDMuMzQzNDMsCiAgfTsKCiAgbmkubnVtYmVyID0gNTg7
CgogIGludCBkeW5hbWljX2FycmF5W25pLm51bWJlcl07CiAgZHluYW1pY19hcnJheVtuaS5udW1i
ZXIgLSAxXSA9IDU0MzsKCiAgLy8gd29yayBhcm91bmQgdW51c2VkIHZhcmlhYmxlIHdhcm5pbmdz
CiAgcmV0dXJuICghc3VjY2VzcyB8fCBiaWdudW0gPT0gMExMIHx8IHViaWdudW0gPT0gMHVMTCB8
fCBuZXd2YXJbMF0gPT0gJ3gnCgkgIHx8IGR5bmFtaWNfYXJyYXlbbmkubnVtYmVyIC0gMV0gIT0g
NTQzKTsKCiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgpmb3IgYWNfYXJnIGluICcnIC1zdGQ9Z251
OTkgLXN0ZD1jOTkgLWM5OSAtQUM5OSAtRF9TVERDX0M5OT0gLXFsYW5nbHZsPWV4dGM5OQpkbwog
IENDPSIkYWNfc2F2ZV9DQyAkYWNfYXJnIgogIGlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5F
Tk8iOyB0aGVuIDoKICBhY19jdl9wcm9nX2NjX2M5OT0kYWNfYXJnCmZpCnJtIC1mIGNvcmUgY29u
ZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQKICB0ZXN0ICJ4JGFjX2N2X3Byb2dfY2NfYzk5
IiAhPSAieG5vIiAmJiBicmVhawpkb25lCnJtIC1mIGNvbmZ0ZXN0LiRhY19leHQKQ0M9JGFjX3Nh
dmVfQ0MKCmZpCiMgQUNfQ0FDSEVfVkFMCmNhc2UgIngkYWNfY3ZfcHJvZ19jY19jOTkiIGluCiAg
eCkKICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBu
b25lIG5lZWRlZCIgPiY1CiRhc19lY2hvICJub25lIG5lZWRlZCIgPiY2OyB9IDs7CiAgeG5vKQog
ICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHVuc3Vw
cG9ydGVkIiA+JjUKJGFzX2VjaG8gInVuc3VwcG9ydGVkIiA+JjY7IH0gOzsKICAqKQogICAgQ0M9
IiRDQyAkYWNfY3ZfcHJvZ19jY19jOTkiCiAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3Byb2dfY2NfYzk5IiA+JjUKJGFzX2VjaG8gIiRh
Y19jdl9wcm9nX2NjX2M5OSIgPiY2OyB9IDs7CmVzYWMKaWYgdGVzdCAieCRhY19jdl9wcm9nX2Nj
X2M5OSIgIT0geG5vOyB0aGVuIDoKICBhY19jdl9wcm9nX2NjX3N0ZGM9JGFjX2N2X3Byb2dfY2Nf
Yzk5CmVsc2UKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr
aW5nIGZvciAkQ0Mgb3B0aW9uIHRvIGFjY2VwdCBJU08gQzg5IiA+JjUKJGFzX2VjaG9fbiAiY2hl
Y2tpbmcgZm9yICRDQyBvcHRpb24gdG8gYWNjZXB0IElTTyBDODkuLi4gIiA+JjY7IH0KaWYgJHth
Y19jdl9wcm9nX2NjX2M4OSs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkg
IiA+JjYKZWxzZQogIGFjX2N2X3Byb2dfY2NfYzg5PW5vCmFjX3NhdmVfQ0M9JENDCmNhdCBjb25m
ZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAq
LwojaW5jbHVkZSA8c3RkYXJnLmg+CiNpbmNsdWRlIDxzdGRpby5oPgpzdHJ1Y3Qgc3RhdDsKLyog
TW9zdCBvZiB0aGUgZm9sbG93aW5nIHRlc3RzIGFyZSBzdG9sZW4gZnJvbSBSQ1MgNS43J3Mgc3Jj
L2NvbmYuc2guICAqLwpzdHJ1Y3QgYnVmIHsgaW50IHg7IH07CkZJTEUgKiAoKnJjc29wZW4pIChz
dHJ1Y3QgYnVmICosIHN0cnVjdCBzdGF0ICosIGludCk7CnN0YXRpYyBjaGFyICplIChwLCBpKQog
ICAgIGNoYXIgKipwOwogICAgIGludCBpOwp7CiAgcmV0dXJuIHBbaV07Cn0Kc3RhdGljIGNoYXIg
KmYgKGNoYXIgKiAoKmcpIChjaGFyICoqLCBpbnQpLCBjaGFyICoqcCwgLi4uKQp7CiAgY2hhciAq
czsKICB2YV9saXN0IHY7CiAgdmFfc3RhcnQgKHYscCk7CiAgcyA9IGcgKHAsIHZhX2FyZyAodixp
bnQpKTsKICB2YV9lbmQgKHYpOwogIHJldHVybiBzOwp9CgovKiBPU0YgNC4wIENvbXBhcSBjYyBp
cyBzb21lIHNvcnQgb2YgYWxtb3N0LUFOU0kgYnkgZGVmYXVsdC4gIEl0IGhhcwogICBmdW5jdGlv
biBwcm90b3R5cGVzIGFuZCBzdHVmZiwgYnV0IG5vdCAnXHhISCcgaGV4IGNoYXJhY3RlciBjb25z
dGFudHMuCiAgIFRoZXNlIGRvbid0IHByb3Zva2UgYW4gZXJyb3IgdW5mb3J0dW5hdGVseSwgaW5z
dGVhZCBhcmUgc2lsZW50bHkgdHJlYXRlZAogICBhcyAneCcuICBUaGUgZm9sbG93aW5nIGluZHVj
ZXMgYW4gZXJyb3IsIHVudGlsIC1zdGQgaXMgYWRkZWQgdG8gZ2V0CiAgIHByb3BlciBBTlNJIG1v
ZGUuICBDdXJpb3VzbHkgJ1x4MDAnIT0neCcgYWx3YXlzIGNvbWVzIG91dCB0cnVlLCBmb3IgYW4K
ICAgYXJyYXkgc2l6ZSBhdCBsZWFzdC4gIEl0J3MgbmVjZXNzYXJ5IHRvIHdyaXRlICdceDAwJz09
MCB0byBnZXQgc29tZXRoaW5nCiAgIHRoYXQncyB0cnVlIG9ubHkgd2l0aCAtc3RkLiAgKi8KaW50
IG9zZjRfY2NfYXJyYXkgWydceDAwJyA9PSAwID8gMSA6IC0xXTsKCi8qIElCTSBDIDYgZm9yIEFJ
WCBpcyBhbG1vc3QtQU5TSSBieSBkZWZhdWx0LCBidXQgaXQgcmVwbGFjZXMgbWFjcm8gcGFyYW1l
dGVycwogICBpbnNpZGUgc3RyaW5ncyBhbmQgY2hhcmFjdGVyIGNvbnN0YW50cy4gICovCiNkZWZp
bmUgRk9PKHgpICd4JwppbnQgeGxjNl9jY19hcnJheVtGT08oYSkgPT0gJ3gnID8gMSA6IC0xXTsK
CmludCB0ZXN0IChpbnQgaSwgZG91YmxlIHgpOwpzdHJ1Y3QgczEge2ludCAoKmYpIChpbnQgYSk7
fTsKc3RydWN0IHMyIHtpbnQgKCpmKSAoZG91YmxlIGEpO307CmludCBwYWlybmFtZXMgKGludCwg
Y2hhciAqKiwgRklMRSAqKCopKHN0cnVjdCBidWYgKiwgc3RydWN0IHN0YXQgKiwgaW50KSwgaW50
LCBpbnQpOwppbnQgYXJnYzsKY2hhciAqKmFyZ3Y7CmludAptYWluICgpCnsKcmV0dXJuIGYgKGUs
IGFyZ3YsIDApICE9IGFyZ3ZbMF0gIHx8ICBmIChlLCBhcmd2LCAxKSAhPSBhcmd2WzFdOwogIDsK
ICByZXR1cm4gMDsKfQpfQUNFT0YKZm9yIGFjX2FyZyBpbiAnJyAtcWxhbmdsdmw9ZXh0Yzg5IC1x
bGFuZ2x2bD1hbnNpIC1zdGQgXAoJLUFlICItQWEgLURfSFBVWF9TT1VSQ0UiICItWGMgLURfX0VY
VEVOU0lPTlNfXyIKZG8KICBDQz0iJGFjX3NhdmVfQ0MgJGFjX2FyZyIKICBpZiBhY19mbl9jX3Ry
eV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CiAgYWNfY3ZfcHJvZ19jY19jODk9JGFjX2FyZwpm
aQpybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0CiAgdGVzdCAieCRh
Y19jdl9wcm9nX2NjX2M4OSIgIT0gInhubyIgJiYgYnJlYWsKZG9uZQpybSAtZiBjb25mdGVzdC4k
YWNfZXh0CkNDPSRhY19zYXZlX0NDCgpmaQojIEFDX0NBQ0hFX1ZBTApjYXNlICJ4JGFjX2N2X3By
b2dfY2NfYzg5IiBpbgogIHgpCiAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogbm9uZSBuZWVkZWQiID4mNQokYXNfZWNobyAibm9uZSBuZWVkZWQiID4m
NjsgfSA7OwogIHhubykKICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiB1bnN1cHBvcnRlZCIgPiY1CiRhc19lY2hvICJ1bnN1cHBvcnRlZCIgPiY2OyB9
IDs7CiAgKikKICAgIENDPSIkQ0MgJGFjX2N2X3Byb2dfY2NfYzg5IgogICAgeyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9wcm9nX2NjX2M4OSIg
PiY1CiRhc19lY2hvICIkYWNfY3ZfcHJvZ19jY19jODkiID4mNjsgfSA7Owplc2FjCmlmIHRlc3Qg
IngkYWNfY3ZfcHJvZ19jY19jODkiICE9IHhubzsgdGhlbiA6CiAgYWNfY3ZfcHJvZ19jY19zdGRj
PSRhY19jdl9wcm9nX2NjX2M4OQplbHNlCiAgYWNfY3ZfcHJvZ19jY19zdGRjPW5vCmZpCgpmaQog
OzsKZXNhYwogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tp
bmcgZm9yICRDQyBvcHRpb24gdG8gYWNjZXB0IElTTyBTdGFuZGFyZCBDIiA+JjUKJGFzX2VjaG9f
biAiY2hlY2tpbmcgZm9yICRDQyBvcHRpb24gdG8gYWNjZXB0IElTTyBTdGFuZGFyZCBDLi4uICIg
PiY2OyB9CiAgaWYgJHthY19jdl9wcm9nX2NjX3N0ZGMrOn0gZmFsc2U7IHRoZW4gOgogICRhc19l
Y2hvX24gIihjYWNoZWQpICIgPiY2CmZpCgogIGNhc2UgJGFjX2N2X3Byb2dfY2Nfc3RkYyBpbiAj
KAogIG5vKSA6CiAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl
c3VsdDogdW5zdXBwb3J0ZWQiID4mNQokYXNfZWNobyAidW5zdXBwb3J0ZWQiID4mNjsgfSA7OyAj
KAogICcnKSA6CiAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl
c3VsdDogbm9uZSBuZWVkZWQiID4mNQokYXNfZWNobyAibm9uZSBuZWVkZWQiID4mNjsgfSA7OyAj
KAogICopIDoKICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz
dWx0OiAkYWNfY3ZfcHJvZ19jY19zdGRjIiA+JjUKJGFzX2VjaG8gIiRhY19jdl9wcm9nX2NjX3N0
ZGMiID4mNjsgfSA7Owplc2FjCgoKCgoKCiAgIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXRocmVh
ZHMgd2FzIGdpdmVuLgppZiB0ZXN0ICIke2VuYWJsZV90aHJlYWRzK3NldH0iID0gc2V0OyB0aGVu
IDoKICBlbmFibGV2YWw9JGVuYWJsZV90aHJlYWRzOyBnbF91c2VfdGhyZWFkcz0kZW5hYmxldmFs
CmVsc2UKICBpZiB0ZXN0IC1uICIkZ2xfdXNlX3RocmVhZHNfZGVmYXVsdCI7IHRoZW4KICAgICAg
IGdsX3VzZV90aHJlYWRzPSIkZ2xfdXNlX3RocmVhZHNfZGVmYXVsdCIKICAgICBlbHNlCiAgICAg
ICBjYXNlICIkaG9zdF9vcyIgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3NmKikgZ2xfdXNlX3RocmVhZHM9bm8gOzsKICAg
ICAgICAgY3lnd2luKikKICAgICAgICAgICAgICAgY2FzZSBgdW5hbWUgLXJgIGluCiAgICAgICAg
ICAgICAgICAgMS5bMC01XS4qKSBnbF91c2VfdGhyZWFkcz1ubyA7OwogICAgICAgICAgICAgICAg
ICopICAgICAgICAgZ2xfdXNlX3RocmVhZHM9eWVzIDs7CiAgICAgICAgICAgICAgIGVzYWMKICAg
ICAgICAgICAgICAgOzsKICAgICAgICAgKikgICAgZ2xfdXNlX3RocmVhZHM9eWVzIDs7CiAgICAg
ICBlc2FjCiAgICAgZmkKCmZpCgogIGlmIHRlc3QgIiRnbF91c2VfdGhyZWFkcyIgPSB5ZXMgfHwg
dGVzdCAiJGdsX3VzZV90aHJlYWRzIiA9IHBvc2l4OyB0aGVuCiAgICAjIEZvciB1c2luZyA8cHRo
cmVhZC5oPjoKICAgIGNhc2UgIiRob3N0X29zIiBpbgogICAgICBvc2YqKQogICAgICAgICMgT24g
T1NGLzEsIHRoZSBjb21waWxlciBuZWVkcyB0aGUgZmxhZyAtRF9SRUVOVFJBTlQgc28gdGhhdCBp
dAogICAgICAgICMgZ3Jva3MgPHB0aHJlYWQuaD4uIGNjIGFsc28gdW5kZXJzdGFuZHMgdGhlIGZs
YWcgLXB0aHJlYWQsIGJ1dAogICAgICAgICMgd2UgZG9uJ3QgdXNlIGl0IGJlY2F1c2UgMS4gZ2Nj
LTIuOTUgZG9lc24ndCB1bmRlcnN0YW5kIC1wdGhyZWFkLAogICAgICAgICMgMi4gcHV0dGluZyBh
IGZsYWcgaW50byBDUFBGTEFHUyB0aGF0IGhhcyBhbiBlZmZlY3Qgb24gdGhlIGxpbmtlcgogICAg
ICAgICMgY2F1c2VzIHRoZSBBQ19MSU5LX0lGRUxTRSB0ZXN0IGJlbG93IHRvIHN1Y2NlZWQgdW5l
eHBlY3RlZGx5LAogICAgICAgICMgbGVhZGluZyB0byB3cm9uZyB2YWx1ZXMgb2YgTElCVEhSRUFE
IGFuZCBMVExJQlRIUkVBRC4KICAgICAgICBDUFBGTEFHUz0iJENQUEZMQUdTIC1EX1JFRU5UUkFO
VCIKICAgICAgICA7OwogICAgZXNhYwogICAgIyBTb21lIHN5c3RlbXMgb3B0aW1pemUgZm9yIHNp
bmdsZS10aHJlYWRlZCBwcm9ncmFtcyBieSBkZWZhdWx0LCBhbmQKICAgICMgbmVlZCBzcGVjaWFs
IGZsYWdzIHRvIGRpc2FibGUgdGhlc2Ugb3B0aW1pemF0aW9ucy4gRm9yIGV4YW1wbGUsIHRoZQog
ICAgIyBkZWZpbml0aW9uIG9mICdlcnJubycgaW4gPGVycm5vLmg+LgogICAgY2FzZSAiJGhvc3Rf
b3MiIGluCiAgICAgIGFpeCogfCBmcmVlYnNkKikgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9USFJF
QURfU0FGRSIgOzsKICAgICAgc29sYXJpcyopIENQUEZMQUdTPSIkQ1BQRkxBR1MgLURfUkVFTlRS
QU5UIiA7OwogICAgZXNhYwogIGZpCgoKCgogICMgQ29kZSBmcm9tIG1vZHVsZSBfRXhpdDoKICAj
IENvZGUgZnJvbSBtb2R1bGUgYWxsb2NhLW9wdDoKICAjIENvZGUgZnJvbSBtb2R1bGUgYXQtaW50
ZXJuYWw6CiAgIyBDb2RlIGZyb20gbW9kdWxlIGNoZGlyOgogICMgQ29kZSBmcm9tIG1vZHVsZSBj
aGRpci1sb25nOgogICMgQ29kZSBmcm9tIG1vZHVsZSBjbG9leGVjOgogICMgQ29kZSBmcm9tIG1v
ZHVsZSBjbG9zZToKICAjIENvZGUgZnJvbSBtb2R1bGUgY2xvc2VkaXI6CiAgIyBDb2RlIGZyb20g
bW9kdWxlIGNvbmNhdC1maWxlbmFtZToKICAjIENvZGUgZnJvbSBtb2R1bGUgZC1pbm86CiAgIyBD
b2RlIGZyb20gbW9kdWxlIGRpcmVudDoKICAjIENvZGUgZnJvbSBtb2R1bGUgZGlyZmQ6CiAgIyBD
b2RlIGZyb20gbW9kdWxlIGRpcm5hbWUtbGdwbDoKICAjIENvZGUgZnJvbSBtb2R1bGUgZG9zbmFt
ZToKICAjIENvZGUgZnJvbSBtb2R1bGUgZG91YmxlLXNsYXNoLXJvb3Q6CiAgIyBDb2RlIGZyb20g
bW9kdWxlIGR1cDoKICAjIENvZGUgZnJvbSBtb2R1bGUgZHVwMjoKICAjIENvZGUgZnJvbSBtb2R1
bGUgZXJybm86CiAgIyBDb2RlIGZyb20gbW9kdWxlIGVycm9yOgogICMgQ29kZSBmcm9tIG1vZHVs
ZSBleGl0ZmFpbDoKICAjIENvZGUgZnJvbSBtb2R1bGUgZXh0ZW5zaW9uczoKCiAgIyBDb2RlIGZy
b20gbW9kdWxlIGV4dGVybi1pbmxpbmU6CiAgIyBDb2RlIGZyb20gbW9kdWxlIGZjaGRpcjoKICAj
IENvZGUgZnJvbSBtb2R1bGUgZmNudGw6CiAgIyBDb2RlIGZyb20gbW9kdWxlIGZjbnRsLWg6CiAg
IyBDb2RlIGZyb20gbW9kdWxlIGZkLWhvb2s6CiAgIyBDb2RlIGZyb20gbW9kdWxlIGZkb3BlbmRp
cjoKICAjIENvZGUgZnJvbSBtb2R1bGUgZmlsZW5hbWU6CiAgIyBDb2RlIGZyb20gbW9kdWxlIGZp
bGVuYW1lY2F0LWxncGw6CiAgIyBDb2RlIGZyb20gbW9kdWxlIGZpbmRwcm9nOgogICMgQ29kZSBm
cm9tIG1vZHVsZSBmbG9hdDoKICAjIENvZGUgZnJvbSBtb2R1bGUgZnBpZWVlOgoKICAjIENvZGUg
ZnJvbSBtb2R1bGUgZnB1Y3c6CiAgIyBDb2RlIGZyb20gbW9kdWxlIGZyZXhwLW5vbGlibToKICAj
IENvZGUgZnJvbSBtb2R1bGUgZnJleHBsLW5vbGlibToKICAjIENvZGUgZnJvbSBtb2R1bGUgZnN0
YXQ6CiAgIyBDb2RlIGZyb20gbW9kdWxlIGZzdGF0YXQ6CiAgIyBDb2RlIGZyb20gbW9kdWxlIGdl
dGN3ZDoKICAjIENvZGUgZnJvbSBtb2R1bGUgZ2V0Y3dkLWxncGw6CiAgIyBDb2RlIGZyb20gbW9k
dWxlIGdldGR0YWJsZXNpemU6CiAgIyBDb2RlIGZyb20gbW9kdWxlIGdldGxvZ2luX3I6CiAgIyBD
b2RlIGZyb20gbW9kdWxlIGdldG9wdC1nbnU6CiAgIyBDb2RlIGZyb20gbW9kdWxlIGdldG9wdC1w
b3NpeDoKICAjIENvZGUgZnJvbSBtb2R1bGUgZ2V0dGV4dC1oOgogICMgQ29kZSBmcm9tIG1vZHVs
ZSBnZXR0aW1lb2ZkYXk6CiAgIyBDb2RlIGZyb20gbW9kdWxlIGdpdC12ZXJzaW9uLWdlbjoKICAj
IENvZGUgZnJvbSBtb2R1bGUgaGFzaC1wanc6CiAgIyBDb2RlIGZyb20gbW9kdWxlIGhhdmVsaWI6
CiAgIyBDb2RlIGZyb20gbW9kdWxlIGluY2x1ZGVfbmV4dDoKICAjIENvZGUgZnJvbSBtb2R1bGUg
aW5saW5lOgogICMgQ29kZSBmcm9tIG1vZHVsZSBpbnRwcm9wczoKICAjIENvZGUgZnJvbSBtb2R1
bGUgaXNuYW5kLW5vbGlibToKICAjIENvZGUgZnJvbSBtb2R1bGUgaXNuYW5mLW5vbGlibToKICAj
IENvZGUgZnJvbSBtb2R1bGUgaXNuYW5sLW5vbGlibToKICAjIENvZGUgZnJvbSBtb2R1bGUgbGFy
Z2VmaWxlOgoKICAjIENvZGUgZnJvbSBtb2R1bGUgbG9jazoKICAjIENvZGUgZnJvbSBtb2R1bGUg
bHN0YXQ6CiAgIyBDb2RlIGZyb20gbW9kdWxlIG1hbGxvYy1wb3NpeDoKICAjIENvZGUgZnJvbSBt
b2R1bGUgbWF0aDoKICAjIENvZGUgZnJvbSBtb2R1bGUgbWVtY2hyOgogICMgQ29kZSBmcm9tIG1v
ZHVsZSBtZW1wY3B5OgogICMgQ29kZSBmcm9tIG1vZHVsZSBtZW1yY2hyOgogICMgQ29kZSBmcm9t
IG1vZHVsZSBta3N0ZW1wOgogICMgQ29kZSBmcm9tIG1vZHVsZSBtc3ZjLWludmFsOgogICMgQ29k
ZSBmcm9tIG1vZHVsZSBtc3ZjLW5vdGhyb3c6CiAgIyBDb2RlIGZyb20gbW9kdWxlIG11bHRpYXJj
aDoKICAjIENvZGUgZnJvbSBtb2R1bGUgbm9jcmFzaDoKICAjIENvZGUgZnJvbSBtb2R1bGUgb2Jz
dGFjazoKICAjIENvZGUgZnJvbSBtb2R1bGUgb2JzdGFjay1wcmludGY6CiAgIyBDb2RlIGZyb20g
bW9kdWxlIG9wZW46CiAgIyBDb2RlIGZyb20gbW9kdWxlIG9wZW5hdDoKICAjIENvZGUgZnJvbSBt
b2R1bGUgb3BlbmF0LWRpZToKICAjIENvZGUgZnJvbSBtb2R1bGUgb3BlbmF0LWg6CiAgIyBDb2Rl
IGZyb20gbW9kdWxlIG9wZW5kaXI6CiAgIyBDb2RlIGZyb20gbW9kdWxlIHBhdGhtYXg6CiAgIyBD
b2RlIGZyb20gbW9kdWxlIHByaW50Zi1mcmV4cDoKICAjIENvZGUgZnJvbSBtb2R1bGUgcHJpbnRm
LWZyZXhwbDoKICAjIENvZGUgZnJvbSBtb2R1bGUgcHJpbnRmLXNhZmU6CiAgIyBDb2RlIGZyb20g
bW9kdWxlIHByb2duYW1lOgogICMgQ29kZSBmcm9tIG1vZHVsZSByYWlzZToKICAjIENvZGUgZnJv
bSBtb2R1bGUgcmVhZGRpcjoKICAjIENvZGUgZnJvbSBtb2R1bGUgcmVhZGxpbms6CiAgIyBDb2Rl
IGZyb20gbW9kdWxlIHJlYWxsb2MtcG9zaXg6CiAgIyBDb2RlIGZyb20gbW9kdWxlIHJld2luZGRp
cjoKICAjIENvZGUgZnJvbSBtb2R1bGUgc2FtZS1pbm9kZToKICAjIENvZGUgZnJvbSBtb2R1bGUg
c2F2ZS1jd2Q6CiAgIyBDb2RlIGZyb20gbW9kdWxlIHNlY3VyZV9nZXRlbnY6CiAgIyBDb2RlIGZy
b20gbW9kdWxlIHNpZ2FjdGlvbjoKICAjIENvZGUgZnJvbSBtb2R1bGUgc2lnbmFsOgogICMgQ29k
ZSBmcm9tIG1vZHVsZSBzaWduYWwtaDoKICAjIENvZGUgZnJvbSBtb2R1bGUgc2lnbmJpdDoKICAj
IENvZGUgZnJvbSBtb2R1bGUgc2lncHJvY21hc2s6CiAgIyBDb2RlIGZyb20gbW9kdWxlIHNpemVf
bWF4OgogICMgQ29kZSBmcm9tIG1vZHVsZSBzbmlwcGV0L19Ob3JldHVybjoKICAjIENvZGUgZnJv
bSBtb2R1bGUgc25pcHBldC9hcmctbm9ubnVsbDoKICAjIENvZGUgZnJvbSBtb2R1bGUgc25pcHBl
dC9jKytkZWZzOgogICMgQ29kZSBmcm9tIG1vZHVsZSBzbmlwcGV0L3VudXNlZC1wYXJhbWV0ZXI6
CiAgIyBDb2RlIGZyb20gbW9kdWxlIHNuaXBwZXQvd2Fybi1vbi11c2U6CiAgIyBDb2RlIGZyb20g
bW9kdWxlIHNucHJpbnRmOgogICMgQ29kZSBmcm9tIG1vZHVsZSBzcHJpbnRmLXBvc2l4OgogICMg
Q29kZSBmcm9tIG1vZHVsZSBzc2l6ZV90OgogICMgQ29kZSBmcm9tIG1vZHVsZSBzdGF0OgogICMg
Q29kZSBmcm9tIG1vZHVsZSBzdGRhcmc6CgoKCiAgIyBDb2RlIGZyb20gbW9kdWxlIHN0ZGJvb2w6
CiAgIyBDb2RlIGZyb20gbW9kdWxlIHN0ZGRlZjoKICAjIENvZGUgZnJvbSBtb2R1bGUgc3RkaW50
OgogICMgQ29kZSBmcm9tIG1vZHVsZSBzdGRpbzoKICAjIENvZGUgZnJvbSBtb2R1bGUgc3RkbGli
OgogICMgQ29kZSBmcm9tIG1vZHVsZSBzdHBjcHk6CiAgIyBDb2RlIGZyb20gbW9kdWxlIHN0cmR1
cC1wb3NpeDoKICAjIENvZGUgZnJvbSBtb2R1bGUgc3RyZXJyb3I6CiAgIyBDb2RlIGZyb20gbW9k
dWxlIHN0cmVycm9yLW92ZXJyaWRlOgogICMgQ29kZSBmcm9tIG1vZHVsZSBzdHJpbmc6CiAgIyBD
b2RlIGZyb20gbW9kdWxlIHN0cnNpZ25hbDoKICAjIENvZGUgZnJvbSBtb2R1bGUgc3lzX3N0YXQ6
CiAgIyBDb2RlIGZyb20gbW9kdWxlIHN5c190aW1lOgogICMgQ29kZSBmcm9tIG1vZHVsZSBzeXNf
dHlwZXM6CiAgIyBDb2RlIGZyb20gbW9kdWxlIHN5c193YWl0OgogICMgQ29kZSBmcm9tIG1vZHVs
ZSB0ZW1wbmFtZToKICAjIENvZGUgZnJvbSBtb2R1bGUgdGhyZWFkbGliOgoKCgogICMgQ29kZSBm
cm9tIG1vZHVsZSB0aW1lOgogICMgQ29kZSBmcm9tIG1vZHVsZSB0aW1lX3I6CiAgIyBDb2RlIGZy
b20gbW9kdWxlIHRsczoKICAjIENvZGUgZnJvbSBtb2R1bGUgdHpzZXQ6CiAgIyBDb2RlIGZyb20g
bW9kdWxlIHVuaXN0ZDoKICAjIENvZGUgZnJvbSBtb2R1bGUgdW5pc3RkLXNhZmVyOgogICMgQ29k
ZSBmcm9tIG1vZHVsZSB2YXNucHJpbnRmOgogICMgQ29kZSBmcm9tIG1vZHVsZSB2ZXJpZnk6CiAg
IyBDb2RlIGZyb20gbW9kdWxlIHdhaXRwaWQ6CiAgIyBDb2RlIGZyb20gbW9kdWxlIHdjaGFyOgog
ICMgQ29kZSBmcm9tIG1vZHVsZSB4YWxsb2M6CiAgIyBDb2RlIGZyb20gbW9kdWxlIHhhbGxvYy1k
aWU6CiAgIyBDb2RlIGZyb20gbW9kdWxlIHhhbGxvYy1vdmVyc2l6ZWQ6CiAgIyBDb2RlIGZyb20g
bW9kdWxlIHhjb25jYXQtZmlsZW5hbWU6CiAgIyBDb2RlIGZyb20gbW9kdWxlIHhzaXplOgoKCgoK
CgogICAgICAgICAgTElCQ19GQVRBTF9TVERFUlJfPTEKICBleHBvcnQgTElCQ19GQVRBTF9TVERF
UlJfCgoKICBHTlVMSUJfX0VYSVQ9MDsKICBHTlVMSUJfQVRPTEw9MDsKICBHTlVMSUJfQ0FMTE9D
X1BPU0lYPTA7CiAgR05VTElCX0NBTk9OSUNBTElaRV9GSUxFX05BTUU9MDsKICBHTlVMSUJfR0VU
TE9BREFWRz0wOwogIEdOVUxJQl9HRVRTVUJPUFQ9MDsKICBHTlVMSUJfR1JBTlRQVD0wOwogIEdO
VUxJQl9NQUxMT0NfUE9TSVg9MDsKICBHTlVMSUJfTUJUT1dDPTA7CiAgR05VTElCX01LRFRFTVA9
MDsKICBHTlVMSUJfTUtPU1RFTVA9MDsKICBHTlVMSUJfTUtPU1RFTVBTPTA7CiAgR05VTElCX01L
U1RFTVA9MDsKICBHTlVMSUJfTUtTVEVNUFM9MDsKICBHTlVMSUJfUE9TSVhfT1BFTlBUPTA7CiAg
R05VTElCX1BUU05BTUU9MDsKICBHTlVMSUJfUFRTTkFNRV9SPTA7CiAgR05VTElCX1BVVEVOVj0w
OwogIEdOVUxJQl9SQU5ET009MDsKICBHTlVMSUJfUkFORE9NX1I9MDsKICBHTlVMSUJfUkVBTExP
Q19QT1NJWD0wOwogIEdOVUxJQl9SRUFMUEFUSD0wOwogIEdOVUxJQl9SUE1BVENIPTA7CiAgR05V
TElCX1NFQ1VSRV9HRVRFTlY9MDsKICBHTlVMSUJfU0VURU5WPTA7CiAgR05VTElCX1NUUlRPRD0w
OwogIEdOVUxJQl9TVFJUT0xMPTA7CiAgR05VTElCX1NUUlRPVUxMPTA7CiAgR05VTElCX1NZU1RF
TV9QT1NJWD0wOwogIEdOVUxJQl9VTkxPQ0tQVD0wOwogIEdOVUxJQl9VTlNFVEVOVj0wOwogIEdO
VUxJQl9XQ1RPTUI9MDsKICAgIEhBVkVfX0VYSVQ9MTsKICBIQVZFX0FUT0xMPTE7CiAgSEFWRV9D
QU5PTklDQUxJWkVfRklMRV9OQU1FPTE7CiAgSEFWRV9ERUNMX0dFVExPQURBVkc9MTsKICBIQVZF
X0dFVFNVQk9QVD0xOwogIEhBVkVfR1JBTlRQVD0xOwogIEhBVkVfTUtEVEVNUD0xOwogIEhBVkVf
TUtPU1RFTVA9MTsKICBIQVZFX01LT1NURU1QUz0xOwogIEhBVkVfTUtTVEVNUD0xOwogIEhBVkVf
TUtTVEVNUFM9MTsKICBIQVZFX1BPU0lYX09QRU5QVD0xOwogIEhBVkVfUFRTTkFNRT0xOwogIEhB
VkVfUFRTTkFNRV9SPTE7CiAgSEFWRV9SQU5ET009MTsKICBIQVZFX1JBTkRPTV9IPTE7CiAgSEFW
RV9SQU5ET01fUj0xOwogIEhBVkVfUkVBTFBBVEg9MTsKICBIQVZFX1JQTUFUQ0g9MTsKICBIQVZF
X1NFQ1VSRV9HRVRFTlY9MTsKICBIQVZFX1NFVEVOVj0xOwogIEhBVkVfREVDTF9TRVRFTlY9MTsK
ICBIQVZFX1NUUlRPRD0xOwogIEhBVkVfU1RSVE9MTD0xOwogIEhBVkVfU1RSVE9VTEw9MTsKICBI
QVZFX1NUUlVDVF9SQU5ET01fREFUQT0xOwogIEhBVkVfU1lTX0xPQURBVkdfSD0wOwogIEhBVkVf
VU5MT0NLUFQ9MTsKICBIQVZFX0RFQ0xfVU5TRVRFTlY9MTsKICBSRVBMQUNFX0NBTExPQz0wOwog
IFJFUExBQ0VfQ0FOT05JQ0FMSVpFX0ZJTEVfTkFNRT0wOwogIFJFUExBQ0VfTUFMTE9DPTA7CiAg
UkVQTEFDRV9NQlRPV0M9MDsKICBSRVBMQUNFX01LU1RFTVA9MDsKICBSRVBMQUNFX1BUU05BTUU9
MDsKICBSRVBMQUNFX1BUU05BTUVfUj0wOwogIFJFUExBQ0VfUFVURU5WPTA7CiAgUkVQTEFDRV9S
QU5ET01fUj0wOwogIFJFUExBQ0VfUkVBTExPQz0wOwogIFJFUExBQ0VfUkVBTFBBVEg9MDsKICBS
RVBMQUNFX1NFVEVOVj0wOwogIFJFUExBQ0VfU1RSVE9EPTA7CiAgUkVQTEFDRV9VTlNFVEVOVj0w
OwogIFJFUExBQ0VfV0NUT01CPTA7CgphY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJzaXpl
X3QiICJhY19jdl90eXBlX3NpemVfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgppZiB0ZXN0ICJ4
JGFjX2N2X3R5cGVfc2l6ZV90IiA9IHh5ZXM7IHRoZW4gOgoKZWxzZQoKY2F0ID4+Y29uZmRlZnMu
aCA8PF9BQ0VPRgojZGVmaW5lIHNpemVfdCB1bnNpZ25lZCBpbnQKX0FDRU9GCgpmaQoKIyBUaGUg
VWx0cml4IDQuMiBtaXBzIGJ1aWx0aW4gYWxsb2NhIGRlY2xhcmVkIGJ5IGFsbG9jYS5oIG9ubHkg
d29ya3MKIyBmb3IgY29uc3RhbnQgYXJndW1lbnRzLiAgVXNlbGVzcyEKeyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igd29ya2luZyBhbGxvY2EuaCIg
PiY1CiRhc19lY2hvX24gImNoZWNraW5nIGZvciB3b3JraW5nIGFsbG9jYS5oLi4uICIgPiY2OyB9
CmlmICR7YWNfY3Zfd29ya2luZ19hbGxvY2FfaCs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9f
biAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0
ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVkZSA8YWxsb2NhLmg+Cmlu
dAptYWluICgpCnsKY2hhciAqcCA9IChjaGFyICopIGFsbG9jYSAoMiAqIHNpemVvZiAoaW50KSk7
CgkJCSAgaWYgKHApIHJldHVybiAwOwogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNfZm5f
Y190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgogIGFjX2N2X3dvcmtpbmdfYWxsb2NhX2g9eWVz
CmVsc2UKICBhY19jdl93b3JraW5nX2FsbG9jYV9oPW5vCmZpCnJtIC1mIGNvcmUgY29uZnRlc3Qu
ZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAogICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0
LiRhY19leHQKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1
bHQ6ICRhY19jdl93b3JraW5nX2FsbG9jYV9oIiA+JjUKJGFzX2VjaG8gIiRhY19jdl93b3JraW5n
X2FsbG9jYV9oIiA+JjY7IH0KaWYgdGVzdCAkYWNfY3Zfd29ya2luZ19hbGxvY2FfaCA9IHllczsg
dGhlbgoKJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9BTExPQ0FfSCAxIiA+PmNvbmZkZWZzLmgKCmZp
Cgp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBh
bGxvY2EiID4mNQokYXNfZWNob19uICJjaGVja2luZyBmb3IgYWxsb2NhLi4uICIgPiY2OyB9Cmlm
ICR7YWNfY3ZfZnVuY19hbGxvY2Ffd29ya3MrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24g
IihjYWNoZWQpICIgPiY2CmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVz
dC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2lmZGVmIF9fR05VQ19fCiMgZGVmaW5l
IGFsbG9jYSBfX2J1aWx0aW5fYWxsb2NhCiNlbHNlCiMgaWZkZWYgX01TQ19WRVIKIyAgaW5jbHVk
ZSA8bWFsbG9jLmg+CiMgIGRlZmluZSBhbGxvY2EgX2FsbG9jYQojIGVsc2UKIyAgaWZkZWYgSEFW
RV9BTExPQ0FfSAojICAgaW5jbHVkZSA8YWxsb2NhLmg+CiMgIGVsc2UKIyAgIGlmZGVmIF9BSVgK
ICNwcmFnbWEgYWxsb2NhCiMgICBlbHNlCiMgICAgaWZuZGVmIGFsbG9jYSAvKiBwcmVkZWZpbmVk
IGJ5IEhQIGNjICtPbGliY2FsbHMgKi8Kdm9pZCAqYWxsb2NhIChzaXplX3QpOwojICAgIGVuZGlm
CiMgICBlbmRpZgojICBlbmRpZgojIGVuZGlmCiNlbmRpZgoKaW50Cm1haW4gKCkKewpjaGFyICpw
ID0gKGNoYXIgKikgYWxsb2NhICgxKTsKCQkJCSAgICBpZiAocCkgcmV0dXJuIDA7CiAgOwogIHJl
dHVybiAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAg
YWNfY3ZfZnVuY19hbGxvY2Ffd29ya3M9eWVzCmVsc2UKICBhY19jdl9mdW5jX2FsbG9jYV93b3Jr
cz1ubwpmaQpybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAg
IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CmZpCnsgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZnVuY19hbGxvY2Ffd29ya3Mi
ID4mNQokYXNfZWNobyAiJGFjX2N2X2Z1bmNfYWxsb2NhX3dvcmtzIiA+JjY7IH0KCmlmIHRlc3Qg
JGFjX2N2X2Z1bmNfYWxsb2NhX3dvcmtzID0geWVzOyB0aGVuCgokYXNfZWNobyAiI2RlZmluZSBI
QVZFX0FMTE9DQSAxIiA+PmNvbmZkZWZzLmgKCmVsc2UKICAjIFRoZSBTVlIzIGxpYlBXIGFuZCBT
VlI0IGxpYnVjYiBib3RoIGNvbnRhaW4gaW5jb21wYXRpYmxlIGZ1bmN0aW9ucwojIHRoYXQgY2F1
c2UgdHJvdWJsZS4gIFNvbWUgdmVyc2lvbnMgZG8gbm90IGV2ZW4gY29udGFpbiBhbGxvY2Egb3IK
IyBjb250YWluIGEgYnVnZ3kgdmVyc2lvbi4gIElmIHlvdSBzdGlsbCB3YW50IHRvIHVzZSB0aGVp
ciBhbGxvY2EsCiMgdXNlIGFyIHRvIGV4dHJhY3QgYWxsb2NhLm8gZnJvbSB0aGVtIGluc3RlYWQg
b2YgY29tcGlsaW5nIGFsbG9jYS5jLgoKCgoKCkFMTE9DQT1cJHtMSUJPQkpESVJ9YWxsb2NhLiRh
Y19vYmpleHQKCiRhc19lY2hvICIjZGVmaW5lIENfQUxMT0NBIDEiID4+Y29uZmRlZnMuaAoKCnsg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBc
YGFsbG9jYS5jJyBuZWVkcyBDcmF5IGhvb2tzIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hl
dGhlciBcYGFsbG9jYS5jJyBuZWVkcyBDcmF5IGhvb2tzLi4uICIgPiY2OyB9CmlmICR7YWNfY3Zf
b3NfY3JheSs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxz
ZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNv
bmZkZWZzLmguICAqLwojaWYgZGVmaW5lZCBDUkFZICYmICEgZGVmaW5lZCBDUkFZMgp3ZWJlY3Jh
eQojZWxzZQp3ZW5vdGJlY3JheQojZW5kaWYKCl9BQ0VPRgppZiAoZXZhbCAiJGFjX2NwcCBjb25m
dGVzdC4kYWNfZXh0IikgMj4mNSB8CiAgJEVHUkVQICJ3ZWJlY3JheSIgPi9kZXYvbnVsbCAyPiYx
OyB0aGVuIDoKICBhY19jdl9vc19jcmF5PXllcwplbHNlCiAgYWNfY3Zfb3NfY3JheT1ubwpmaQpy
bSAtZiBjb25mdGVzdCoKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiAkYWNfY3Zfb3NfY3JheSIgPiY1CiRhc19lY2hvICIkYWNfY3Zfb3NfY3JheSIg
PiY2OyB9CmlmIHRlc3QgJGFjX2N2X29zX2NyYXkgPSB5ZXM7IHRoZW4KICBmb3IgYWNfZnVuYyBp
biBfZ2V0YjY3IEdFVEI2NyBnZXRiNjc7IGRvCiAgICBhc19hY192YXI9YCRhc19lY2hvICJhY19j
dl9mdW5jXyRhY19mdW5jIiB8ICRhc190cl9zaGAKYWNfZm5fY19jaGVja19mdW5jICIkTElORU5P
IiAiJGFjX2Z1bmMiICIkYXNfYWNfdmFyIgppZiBldmFsIHRlc3QgXCJ4XCQiJGFzX2FjX3ZhciJc
IiA9IHgieWVzIjsgdGhlbiA6CgpjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgQ1JB
WV9TVEFDS1NFR19FTkQgJGFjX2Z1bmMKX0FDRU9GCgogICAgYnJlYWsKZmkKCiAgZG9uZQpmaQoK
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzdGFjayBk
aXJlY3Rpb24gZm9yIEMgYWxsb2NhIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgc3RhY2sgZGly
ZWN0aW9uIGZvciBDIGFsbG9jYS4uLiAiID4mNjsgfQppZiAke2FjX2N2X2Nfc3RhY2tfZGlyZWN0
aW9uKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCiAg
aWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgogIGFjX2N2X2Nfc3RhY2tf
ZGlyZWN0aW9uPTAKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRh
Y19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwokYWNfaW5jbHVkZXNfZGVmYXVsdAppbnQKZmlu
ZF9zdGFja19kaXJlY3Rpb24gKGludCAqYWRkciwgaW50IGRlcHRoKQp7CiAgaW50IGRpciwgZHVt
bXkgPSAwOwogIGlmICghIGFkZHIpCiAgICBhZGRyID0gJmR1bW15OwogICphZGRyID0gYWRkciA8
ICZkdW1teSA/IDEgOiBhZGRyID09ICZkdW1teSA/IDAgOiAtMTsKICBkaXIgPSBkZXB0aCA/IGZp
bmRfc3RhY2tfZGlyZWN0aW9uIChhZGRyLCBkZXB0aCAtIDEpIDogMDsKICByZXR1cm4gZGlyICsg
ZHVtbXk7Cn0KCmludAptYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCnsKICByZXR1cm4gZmlu
ZF9zdGFja19kaXJlY3Rpb24gKDAsIGFyZ2MgKyAhYXJndiArIDIwKSA8IDA7Cn0KX0FDRU9GCmlm
IGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgogIGFjX2N2X2Nfc3RhY2tfZGlyZWN0
aW9uPTEKZWxzZQogIGFjX2N2X2Nfc3RhY2tfZGlyZWN0aW9uPS0xCmZpCnJtIC1mIGNvcmUgKi5j
b3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwK
ICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dApmaQoK
ZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19j
dl9jX3N0YWNrX2RpcmVjdGlvbiIgPiY1CiRhc19lY2hvICIkYWNfY3ZfY19zdGFja19kaXJlY3Rp
b24iID4mNjsgfQpjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgU1RBQ0tfRElSRUNU
SU9OICRhY19jdl9jX3N0YWNrX2RpcmVjdGlvbgpfQUNFT0YKCgpmaQoKCiAgR05VTElCX0NIRElS
PTA7CiAgR05VTElCX0NIT1dOPTA7CiAgR05VTElCX0NMT1NFPTA7CiAgR05VTElCX0RVUD0wOwog
IEdOVUxJQl9EVVAyPTA7CiAgR05VTElCX0RVUDM9MDsKICBHTlVMSUJfRU5WSVJPTj0wOwogIEdO
VUxJQl9FVUlEQUNDRVNTPTA7CiAgR05VTElCX0ZBQ0NFU1NBVD0wOwogIEdOVUxJQl9GQ0hESVI9
MDsKICBHTlVMSUJfRkNIT1dOQVQ9MDsKICBHTlVMSUJfRkRBVEFTWU5DPTA7CiAgR05VTElCX0ZT
WU5DPTA7CiAgR05VTElCX0ZUUlVOQ0FURT0wOwogIEdOVUxJQl9HRVRDV0Q9MDsKICBHTlVMSUJf
R0VURE9NQUlOTkFNRT0wOwogIEdOVUxJQl9HRVREVEFCTEVTSVpFPTA7CiAgR05VTElCX0dFVEdS
T1VQUz0wOwogIEdOVUxJQl9HRVRIT1NUTkFNRT0wOwogIEdOVUxJQl9HRVRMT0dJTj0wOwogIEdO
VUxJQl9HRVRMT0dJTl9SPTA7CiAgR05VTElCX0dFVFBBR0VTSVpFPTA7CiAgR05VTElCX0dFVFVT
RVJTSEVMTD0wOwogIEdOVUxJQl9HUk9VUF9NRU1CRVI9MDsKICBHTlVMSUJfSVNBVFRZPTA7CiAg
R05VTElCX0xDSE9XTj0wOwogIEdOVUxJQl9MSU5LPTA7CiAgR05VTElCX0xJTktBVD0wOwogIEdO
VUxJQl9MU0VFSz0wOwogIEdOVUxJQl9QSVBFPTA7CiAgR05VTElCX1BJUEUyPTA7CiAgR05VTElC
X1BSRUFEPTA7CiAgR05VTElCX1BXUklURT0wOwogIEdOVUxJQl9SRUFEPTA7CiAgR05VTElCX1JF
QURMSU5LPTA7CiAgR05VTElCX1JFQURMSU5LQVQ9MDsKICBHTlVMSUJfUk1ESVI9MDsKICBHTlVM
SUJfU0VUSE9TVE5BTUU9MDsKICBHTlVMSUJfU0xFRVA9MDsKICBHTlVMSUJfU1lNTElOSz0wOwog
IEdOVUxJQl9TWU1MSU5LQVQ9MDsKICBHTlVMSUJfVFRZTkFNRV9SPTA7CiAgR05VTElCX1VOSVNU
RF9IX05PTkJMT0NLSU5HPTA7CiAgR05VTElCX1VOSVNURF9IX1NJR1BJUEU9MDsKICBHTlVMSUJf
VU5MSU5LPTA7CiAgR05VTElCX1VOTElOS0FUPTA7CiAgR05VTElCX1VTTEVFUD0wOwogIEdOVUxJ
Ql9XUklURT0wOwogICAgSEFWRV9DSE9XTj0xOwogIEhBVkVfRFVQMj0xOwogIEhBVkVfRFVQMz0x
OwogIEhBVkVfRVVJREFDQ0VTUz0xOwogIEhBVkVfRkFDQ0VTU0FUPTE7CiAgSEFWRV9GQ0hESVI9
MTsKICBIQVZFX0ZDSE9XTkFUPTE7CiAgSEFWRV9GREFUQVNZTkM9MTsKICBIQVZFX0ZTWU5DPTE7
CiAgSEFWRV9GVFJVTkNBVEU9MTsKICBIQVZFX0dFVERUQUJMRVNJWkU9MTsKICBIQVZFX0dFVEdS
T1VQUz0xOwogIEhBVkVfR0VUSE9TVE5BTUU9MTsKICBIQVZFX0dFVExPR0lOPTE7CiAgSEFWRV9H
RVRQQUdFU0laRT0xOwogIEhBVkVfR1JPVVBfTUVNQkVSPTE7CiAgSEFWRV9MQ0hPV049MTsKICBI
QVZFX0xJTks9MTsKICBIQVZFX0xJTktBVD0xOwogIEhBVkVfUElQRT0xOwogIEhBVkVfUElQRTI9
MTsKICBIQVZFX1BSRUFEPTE7CiAgSEFWRV9QV1JJVEU9MTsKICBIQVZFX1JFQURMSU5LPTE7CiAg
SEFWRV9SRUFETElOS0FUPTE7CiAgSEFWRV9TRVRIT1NUTkFNRT0xOwogIEhBVkVfU0xFRVA9MTsK
ICBIQVZFX1NZTUxJTks9MTsKICBIQVZFX1NZTUxJTktBVD0xOwogIEhBVkVfVU5MSU5LQVQ9MTsK
ICBIQVZFX1VTTEVFUD0xOwogIEhBVkVfREVDTF9FTlZJUk9OPTE7CiAgSEFWRV9ERUNMX0ZDSERJ
Uj0xOwogIEhBVkVfREVDTF9GREFUQVNZTkM9MTsKICBIQVZFX0RFQ0xfR0VURE9NQUlOTkFNRT0x
OwogIEhBVkVfREVDTF9HRVRMT0dJTl9SPTE7CiAgSEFWRV9ERUNMX0dFVFBBR0VTSVpFPTE7CiAg
SEFWRV9ERUNMX0dFVFVTRVJTSEVMTD0xOwogIEhBVkVfREVDTF9TRVRIT1NUTkFNRT0xOwogIEhB
VkVfREVDTF9UVFlOQU1FX1I9MTsKICBIQVZFX09TX0g9MDsKICBIQVZFX1NZU19QQVJBTV9IPTA7
CiAgUkVQTEFDRV9DSE9XTj0wOwogIFJFUExBQ0VfQ0xPU0U9MDsKICBSRVBMQUNFX0RVUD0wOwog
IFJFUExBQ0VfRFVQMj0wOwogIFJFUExBQ0VfRkNIT1dOQVQ9MDsKICBSRVBMQUNFX0ZUUlVOQ0FU
RT0wOwogIFJFUExBQ0VfR0VUQ1dEPTA7CiAgUkVQTEFDRV9HRVRET01BSU5OQU1FPTA7CiAgUkVQ
TEFDRV9HRVRMT0dJTl9SPTA7CiAgUkVQTEFDRV9HRVRHUk9VUFM9MDsKICBSRVBMQUNFX0dFVFBB
R0VTSVpFPTA7CiAgUkVQTEFDRV9JU0FUVFk9MDsKICBSRVBMQUNFX0xDSE9XTj0wOwogIFJFUExB
Q0VfTElOSz0wOwogIFJFUExBQ0VfTElOS0FUPTA7CiAgUkVQTEFDRV9MU0VFSz0wOwogIFJFUExB
Q0VfUFJFQUQ9MDsKICBSRVBMQUNFX1BXUklURT0wOwogIFJFUExBQ0VfUkVBRD0wOwogIFJFUExB
Q0VfUkVBRExJTks9MDsKICBSRVBMQUNFX1JNRElSPTA7CiAgUkVQTEFDRV9TTEVFUD0wOwogIFJF
UExBQ0VfU1lNTElOSz0wOwogIFJFUExBQ0VfVFRZTkFNRV9SPTA7CiAgUkVQTEFDRV9VTkxJTks9
MDsKICBSRVBMQUNFX1VOTElOS0FUPTA7CiAgUkVQTEFDRV9VU0xFRVA9MDsKICBSRVBMQUNFX1dS
SVRFPTA7CiAgVU5JU1REX0hfSEFWRV9XSU5TT0NLMl9IPTA7CiAgVU5JU1REX0hfSEFWRV9XSU5T
T0NLMl9IX0FORF9VU0VfU09DS0VUUz0wOwoKCgogICAgIEdOVUxJQl9PUEVORElSPTA7CiAgR05V
TElCX1JFQURESVI9MDsKICBHTlVMSUJfUkVXSU5ERElSPTA7CiAgR05VTElCX0NMT1NFRElSPTA7
CiAgR05VTElCX0RJUkZEPTA7CiAgR05VTElCX0ZET1BFTkRJUj0wOwogIEdOVUxJQl9TQ0FORElS
PTA7CiAgR05VTElCX0FMUEhBU09SVD0wOwogICAgSEFWRV9PUEVORElSPTE7CiAgSEFWRV9SRUFE
RElSPTE7CiAgSEFWRV9SRVdJTkRESVI9MTsKICBIQVZFX0NMT1NFRElSPTE7CiAgSEFWRV9ERUNM
X0RJUkZEPTE7CiAgSEFWRV9ERUNMX0ZET1BFTkRJUj0xOwogIEhBVkVfRkRPUEVORElSPTE7CiAg
SEFWRV9TQ0FORElSPTE7CiAgSEFWRV9BTFBIQVNPUlQ9MTsKICBSRVBMQUNFX09QRU5ESVI9MDsK
ICBSRVBMQUNFX0NMT1NFRElSPTA7CiAgUkVQTEFDRV9ESVJGRD0wOwogIFJFUExBQ0VfRkRPUEVO
RElSPTA7CgoKCgoKICBmb3IgYWNfZnVuYyBpbiAkZ2xfZnVuY19saXN0CmRvIDoKICBhc19hY192
YXI9YCRhc19lY2hvICJhY19jdl9mdW5jXyRhY19mdW5jIiB8ICRhc190cl9zaGAKYWNfZm5fY19j
aGVja19mdW5jICIkTElORU5PIiAiJGFjX2Z1bmMiICIkYXNfYWNfdmFyIgppZiBldmFsIHRlc3Qg
XCJ4XCQiJGFzX2FjX3ZhciJcIiA9IHgieWVzIjsgdGhlbiA6CiAgY2F0ID4+Y29uZmRlZnMuaCA8
PF9BQ0VPRgojZGVmaW5lIGAkYXNfZWNobyAiSEFWRV8kYWNfZnVuYyIgfCAkYXNfdHJfY3BwYCAx
Cl9BQ0VPRgoKZmkKZG9uZQoKCgoKCgoKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlIHByZXByb2Nlc3NvciBzdXBwb3J0cyBpbmNs
dWRlX25leHQiID4mNQokYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBwcmVwcm9jZXNz
b3Igc3VwcG9ydHMgaW5jbHVkZV9uZXh0Li4uICIgPiY2OyB9CmlmICR7Z2xfY3ZfaGF2ZV9pbmNs
dWRlX25leHQrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVs
c2UKICBybSAtcmYgY29uZnRlc3RkMWEgY29uZnRlc3RkMWIgY29uZnRlc3RkMgogICAgIG1rZGly
IGNvbmZ0ZXN0ZDFhIGNvbmZ0ZXN0ZDFiIGNvbmZ0ZXN0ZDIKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXQgPDxFT0YgPiBjb25mdGVzdGQxYS9jb25m
dGVzdC5oCiNkZWZpbmUgREVGSU5FRF9JTl9DT05GVEVTVEQxCiNpbmNsdWRlX25leHQgPGNvbmZ0
ZXN0Lmg+CiNpZmRlZiBERUZJTkVEX0lOX0NPTkZURVNURDIKaW50IGZvbzsKI2Vsc2UKI2Vycm9y
ICJpbmNsdWRlX25leHQgZG9lc24ndCB3b3JrIgojZW5kaWYKRU9GCiAgICAgY2F0IDw8RU9GID4g
Y29uZnRlc3RkMWIvY29uZnRlc3QuaAojZGVmaW5lIERFRklORURfSU5fQ09ORlRFU1REMQojaW5j
bHVkZSA8c3RkaW8uaD4KI2luY2x1ZGVfbmV4dCA8Y29uZnRlc3QuaD4KI2lmZGVmIERFRklORURf
SU5fQ09ORlRFU1REMgppbnQgZm9vOwojZWxzZQojZXJyb3IgImluY2x1ZGVfbmV4dCBkb2Vzbid0
IHdvcmsiCiNlbmRpZgpFT0YKICAgICBjYXQgPDxFT0YgPiBjb25mdGVzdGQyL2NvbmZ0ZXN0LmgK
I2lmbmRlZiBERUZJTkVEX0lOX0NPTkZURVNURDEKI2Vycm9yICJpbmNsdWRlX25leHQgdGVzdCBk
b2Vzbid0IHdvcmsiCiNlbmRpZgojZGVmaW5lIERFRklORURfSU5fQ09ORlRFU1REMgpFT0YKICAg
ICBnbF9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCiAgICAgQ1BQRkxBR1M9IiRnbF9zYXZlX0NQ
UEZMQUdTIC1JY29uZnRlc3RkMWIgLUljb25mdGVzdGQyIgogICAgIGNhdCBjb25mZGVmcy5oIC0g
PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVk
ZSA8Y29uZnRlc3QuaD4KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0
aGVuIDoKICBnbF9jdl9oYXZlX2luY2x1ZGVfbmV4dD15ZXMKZWxzZQogIENQUEZMQUdTPSIkZ2xf
c2F2ZV9DUFBGTEFHUyAtSWNvbmZ0ZXN0ZDFhIC1JY29uZnRlc3RkMiIKICAgICAgICBjYXQgY29u
ZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAg
Ki8KI2luY2x1ZGUgPGNvbmZ0ZXN0Lmg+Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9jb21waWxlICIk
TElORU5PIjsgdGhlbiA6CiAgZ2xfY3ZfaGF2ZV9pbmNsdWRlX25leHQ9YnVnZ3kKZWxzZQogIGds
X2N2X2hhdmVfaW5jbHVkZV9uZXh0PW5vCmZpCnJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0
ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAoKZmkKcm0gLWYgY29yZSBjb25mdGVzdC5l
cnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiAgICAgQ1BQRkxBR1M9IiRn
bF9zYXZlX0NQUEZMQUdTIgogICAgIHJtIC1yZiBjb25mdGVzdGQxYSBjb25mdGVzdGQxYiBjb25m
dGVzdGQyCgpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs
dDogJGdsX2N2X2hhdmVfaW5jbHVkZV9uZXh0IiA+JjUKJGFzX2VjaG8gIiRnbF9jdl9oYXZlX2lu
Y2x1ZGVfbmV4dCIgPiY2OyB9CiAgUFJBR01BX1NZU1RFTV9IRUFERVI9CiAgaWYgdGVzdCAkZ2xf
Y3ZfaGF2ZV9pbmNsdWRlX25leHQgPSB5ZXM7IHRoZW4KICAgIElOQ0xVREVfTkVYVD1pbmNsdWRl
X25leHQKICAgIElOQ0xVREVfTkVYVF9BU19GSVJTVF9ESVJFQ1RJVkU9aW5jbHVkZV9uZXh0CiAg
ICBpZiB0ZXN0IC1uICIkR0NDIjsgdGhlbgogICAgICBQUkFHTUFfU1lTVEVNX0hFQURFUj0nI3By
YWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcicKICAgIGZpCiAgZWxzZQogICAgaWYgdGVzdCAkZ2xfY3Zf
aGF2ZV9pbmNsdWRlX25leHQgPSBidWdneTsgdGhlbgogICAgICBJTkNMVURFX05FWFQ9aW5jbHVk
ZQogICAgICBJTkNMVURFX05FWFRfQVNfRklSU1RfRElSRUNUSVZFPWluY2x1ZGVfbmV4dAogICAg
ZWxzZQogICAgICBJTkNMVURFX05FWFQ9aW5jbHVkZQogICAgICBJTkNMVURFX05FWFRfQVNfRklS
U1RfRElSRUNUSVZFPWluY2x1ZGUKICAgIGZpCiAgZmkKCgoKICB7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgc3lzdGVtIGhlYWRlciBmaWxl
cyBsaW1pdCB0aGUgbGluZSBsZW5ndGgiID4mNQokYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVy
IHN5c3RlbSBoZWFkZXIgZmlsZXMgbGltaXQgdGhlIGxpbmUgbGVuZ3RoLi4uICIgPiY2OyB9Cmlm
ICR7Z2xfY3ZfcHJhZ21hX2NvbHVtbnMrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihj
YWNoZWQpICIgPiY2CmVsc2UKICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0
ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwoKI2lmZGVmIF9fVEFOREVNCmNob2tl
IG1lCiNlbmRpZgoKX0FDRU9GCmlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAy
PiY1IHwKICAkRUdSRVAgImNob2tlIG1lIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgogIGdsX2N2
X3ByYWdtYV9jb2x1bW5zPXllcwplbHNlCiAgZ2xfY3ZfcHJhZ21hX2NvbHVtbnM9bm8KZmkKcm0g
LWYgY29uZnRlc3QqCgoKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiByZXN1bHQ6ICRnbF9jdl9wcmFnbWFfY29sdW1ucyIgPiY1CiRhc19lY2hvICIkZ2xfY3ZfcHJh
Z21hX2NvbHVtbnMiID4mNjsgfQogIGlmIHRlc3QgJGdsX2N2X3ByYWdtYV9jb2x1bW5zID0geWVz
OyB0aGVuCiAgICBQUkFHTUFfQ09MVU1OUz0iI3ByYWdtYSBDT0xVTU5TIDEwMDAwIgogIGVsc2UK
ICAgIFBSQUdNQV9DT0xVTU5TPQogIGZpCgoKCgoKCiAgZm9yIGFjX2hlYWRlciBpbiAkZ2xfaGVh
ZGVyX2xpc3QKZG8gOgogIGFzX2FjX0hlYWRlcj1gJGFzX2VjaG8gImFjX2N2X2hlYWRlcl8kYWNf
aGVhZGVyIiB8ICRhc190cl9zaGAKYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVO
TyIgIiRhY19oZWFkZXIiICIkYXNfYWNfSGVhZGVyIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCmlm
IGV2YWwgdGVzdCBcInhcJCIkYXNfYWNfSGVhZGVyIlwiID0geCJ5ZXMiOyB0aGVuIDoKICBjYXQg
Pj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgYCRhc19lY2hvICJIQVZFXyRhY19oZWFkZXIi
IHwgJGFzX3RyX2NwcGAgMQpfQUNFT0YKCmZpCgpkb25lCgoKCgoKCgogIHsgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGNvbXBsZXRlIGVycm5vLmgi
ID4mNQokYXNfZWNob19uICJjaGVja2luZyBmb3IgY29tcGxldGUgZXJybm8uaC4uLiAiID4mNjsg
fQppZiAke2dsX2N2X2hlYWRlcl9lcnJub19oX2NvbXBsZXRlKzp9IGZhbHNlOyB0aGVuIDoKICAk
YXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCgogICAgY2F0IGNvbmZkZWZzLmggLSA8PF9B
Q0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCgojaW5jbHVkZSA8
ZXJybm8uaD4KI2lmICFkZWZpbmVkIEVUWFRCU1kKYm9vYm9vCiNlbmRpZgojaWYgIWRlZmluZWQg
RU5PTVNHCmJvb2JvbwojZW5kaWYKI2lmICFkZWZpbmVkIEVJRFJNCmJvb2JvbwojZW5kaWYKI2lm
ICFkZWZpbmVkIEVOT0xJTksKYm9vYm9vCiNlbmRpZgojaWYgIWRlZmluZWQgRVBST1RPCmJvb2Jv
bwojZW5kaWYKI2lmICFkZWZpbmVkIEVNVUxUSUhPUApib29ib28KI2VuZGlmCiNpZiAhZGVmaW5l
ZCBFQkFETVNHCmJvb2JvbwojZW5kaWYKI2lmICFkZWZpbmVkIEVPVkVSRkxPVwpib29ib28KI2Vu
ZGlmCiNpZiAhZGVmaW5lZCBFTk9UU1VQCmJvb2JvbwojZW5kaWYKI2lmICFkZWZpbmVkIEVORVRS
RVNFVApib29ib28KI2VuZGlmCiNpZiAhZGVmaW5lZCBFQ09OTkFCT1JURUQKYm9vYm9vCiNlbmRp
ZgojaWYgIWRlZmluZWQgRVNUQUxFCmJvb2JvbwojZW5kaWYKI2lmICFkZWZpbmVkIEVEUVVPVApi
b29ib28KI2VuZGlmCiNpZiAhZGVmaW5lZCBFQ0FOQ0VMRUQKYm9vYm9vCiNlbmRpZgojaWYgIWRl
ZmluZWQgRU9XTkVSREVBRApib29ib28KI2VuZGlmCiNpZiAhZGVmaW5lZCBFTk9UUkVDT1ZFUkFC
TEUKYm9vYm9vCiNlbmRpZgojaWYgIWRlZmluZWQgRUlMU0VRCmJvb2JvbwojZW5kaWYKCl9BQ0VP
RgppZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CiAgJEVHUkVQICJi
b29ib28iID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CiAgZ2xfY3ZfaGVhZGVyX2Vycm5vX2hfY29t
cGxldGU9bm8KZWxzZQogIGdsX2N2X2hlYWRlcl9lcnJub19oX2NvbXBsZXRlPXllcwpmaQpybSAt
ZiBjb25mdGVzdCoKCgpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IHJlc3VsdDogJGdsX2N2X2hlYWRlcl9lcnJub19oX2NvbXBsZXRlIiA+JjUKJGFzX2VjaG8gIiRn
bF9jdl9oZWFkZXJfZXJybm9faF9jb21wbGV0ZSIgPiY2OyB9CiAgaWYgdGVzdCAkZ2xfY3ZfaGVh
ZGVyX2Vycm5vX2hfY29tcGxldGUgPSB5ZXM7IHRoZW4KICAgIEVSUk5PX0g9JycKICBlbHNlCgoK
CgoKCgoKICAgICBpZiB0ZXN0ICRnbF9jdl9oYXZlX2luY2x1ZGVfbmV4dCA9IHllczsgdGhlbgog
ICAgICAgZ2xfY3ZfbmV4dF9lcnJub19oPSc8J2Vycm5vLmgnPicKICAgICBlbHNlCiAgICAgICB7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGFic29sdXRl
IG5hbWUgb2YgPGVycm5vLmg+IiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgYWJzb2x1dGUgbmFt
ZSBvZiA8ZXJybm8uaD4uLi4gIiA+JjY7IH0KaWYgJHtnbF9jdl9uZXh0X2Vycm5vX2grOn0gZmFs
c2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKCiAgICAgICAgICAg
ICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNv
bmZkZWZzLmguICAqLwojaW5jbHVkZSA8ZXJybm8uaD4KCl9BQ0VPRgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICIkaG9z
dF9vcyIgaW4KICAgICAgICAgICAgICAgICBhaXgqKSBnbF9hYnNuYW1lX2NwcD0iJGFjX2NwcCAt
QyIgOzsKICAgICAgICAgICAgICAgICAqKSAgICBnbF9hYnNuYW1lX2NwcD0iJGFjX2NwcCIgOzsK
ICAgICAgICAgICAgICAgZXNhYwoKICAgICAgICAgICAgICAgY2FzZSAiJGhvc3Rfb3MiIGluCiAg
ICAgICAgICAgICAgICAgbWluZ3cqKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfZGlyc2VwX3JlZ2V4
PSdbL1xcXScKICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgKikKICAgICAg
ICAgICAgICAgICAgIGdsX2RpcnNlcF9yZWdleD0nXC8nCiAgICAgICAgICAgICAgICAgICA7Owog
ICAgICAgICAgICAgICBlc2FjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsX21ha2VfbGl0ZXJhbF9yZWdleF9zZWQ9J3MsW10kXlxcLiovW10sXFwmLGcnCgog
ICAgICAgICAgICAgICBnbF9oZWFkZXJfbGl0ZXJhbF9yZWdleD1gZWNobyAnZXJybm8uaCcgXAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZWQgLWUgIiRnbF9tYWtl
X2xpdGVyYWxfcmVnZXhfc2VkImAKICAgICAgICAgICAgICAgZ2xfYWJzb2x1dGVfaGVhZGVyX3Nl
ZD0iLyR7Z2xfZGlyc2VwX3JlZ2V4fSR7Z2xfaGVhZGVyX2xpdGVyYWxfcmVnZXh9LyInewogICAg
ICAgICAgICAgICAgICAgcy8uKiJcKC4qJyIke2dsX2RpcnNlcF9yZWdleH0ke2dsX2hlYWRlcl9s
aXRlcmFsX3JlZ2V4fSInXCkiLiovXDEvCiAgICAgICAgICAgICAgICAgICBzfF4vW14vXXwvLyZ8
CiAgICAgICAgICAgICAgICAgICBwCiAgICAgICAgICAgICAgICAgICBxCiAgICAgICAgICAgICAg
ICAgfScKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2xfY3ZfbmV4dF9lcnJub19oPSciJ2AoZXZhbCAiJGdsX2Fic25hbWVfY3BwIGNv
bmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKICAgICAgICAgICAgICAgICAgICAgIHNlZCAtbiAiJGds
X2Fic29sdXRlX2hlYWRlcl9zZWQiYCciJwoKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfbmV4dF9lcnJub19oIiA+JjUKJGFzX2VjaG8g
IiRnbF9jdl9uZXh0X2Vycm5vX2giID4mNjsgfQogICAgIGZpCiAgICAgTkVYVF9FUlJOT19IPSRn
bF9jdl9uZXh0X2Vycm5vX2gKCiAgICAgaWYgdGVzdCAkZ2xfY3ZfaGF2ZV9pbmNsdWRlX25leHQg
PSB5ZXMgfHwgdGVzdCAkZ2xfY3ZfaGF2ZV9pbmNsdWRlX25leHQgPSBidWdneTsgdGhlbgogICAg
ICAgIyBJTkNMVURFX05FWFRfQVNfRklSU1RfRElSRUNUSVZFPSdpbmNsdWRlX25leHQnCiAgICAg
ICBnbF9uZXh0X2FzX2ZpcnN0X2RpcmVjdGl2ZT0nPCdlcnJuby5oJz4nCiAgICAgZWxzZQogICAg
ICAgIyBJTkNMVURFX05FWFRfQVNfRklSU1RfRElSRUNUSVZFPSdpbmNsdWRlJwogICAgICAgZ2xf
bmV4dF9hc19maXJzdF9kaXJlY3RpdmU9JGdsX2N2X25leHRfZXJybm9faAogICAgIGZpCiAgICAg
TkVYVF9BU19GSVJTVF9ESVJFQ1RJVkVfRVJSTk9fSD0kZ2xfbmV4dF9hc19maXJzdF9kaXJlY3Rp
dmUKCgoKCiAgICBFUlJOT19IPSdlcnJuby5oJwogIGZpCgogICBpZiB0ZXN0IC1uICIkRVJSTk9f
SCI7IHRoZW4KICBHTF9HRU5FUkFURV9FUlJOT19IX1RSVUU9CiAgR0xfR0VORVJBVEVfRVJSTk9f
SF9GQUxTRT0nIycKZWxzZQogIEdMX0dFTkVSQVRFX0VSUk5PX0hfVFJVRT0nIycKICBHTF9HRU5F
UkFURV9FUlJOT19IX0ZBTFNFPQpmaQoKCiAgaWYgdGVzdCAtbiAiJEVSUk5PX0giOyB0aGVuCiAg
ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBF
TVVMVElIT1AgdmFsdWUiID4mNQokYXNfZWNob19uICJjaGVja2luZyBmb3IgRU1VTFRJSE9QIHZh
bHVlLi4uICIgPiY2OyB9CmlmICR7Z2xfY3ZfaGVhZGVyX2Vycm5vX2hfRU1VTFRJSE9QKzp9IGZh
bHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCgogICAgICBjYXQg
Y29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5o
LiAgKi8KCiNpbmNsdWRlIDxlcnJuby5oPgojaWZkZWYgRU1VTFRJSE9QCnllcwojZW5kaWYKCl9B
Q0VPRgppZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CiAgJEVHUkVQ
ICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CiAgZ2xfY3ZfaGVhZGVyX2Vycm5vX2hfRU1V
TFRJSE9QPXllcwplbHNlCiAgZ2xfY3ZfaGVhZGVyX2Vycm5vX2hfRU1VTFRJSE9QPW5vCmZpCnJt
IC1mIGNvbmZ0ZXN0KgoKICAgICAgaWYgdGVzdCAkZ2xfY3ZfaGVhZGVyX2Vycm5vX2hfRU1VTFRJ
SE9QID0gbm87IHRoZW4KICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVz
dC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCiNkZWZpbmUgX1hPUEVOX1NPVVJDRV9F
WFRFTkRFRCAxCiNpbmNsdWRlIDxlcnJuby5oPgojaWZkZWYgRU1VTFRJSE9QCnllcwojZW5kaWYK
Cl9BQ0VPRgppZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CiAgJEVH
UkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CiAgZ2xfY3ZfaGVhZGVyX2Vycm5vX2hf
RU1VTFRJSE9QPWhpZGRlbgpmaQpybSAtZiBjb25mdGVzdCoKCiAgICAgICAgaWYgdGVzdCAkZ2xf
Y3ZfaGVhZGVyX2Vycm5vX2hfRU1VTFRJSE9QID0gaGlkZGVuOyB0aGVuCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIGFjX2ZuX2NfY29tcHV0ZV9pbnQgIiRMSU5FTk8iICJFTVVMVElI
T1AiICJnbF9jdl9oZWFkZXJfZXJybm9faF9FTVVMVElIT1AiICAgICAgICAiCiNkZWZpbmUgX1hP
UEVOX1NPVVJDRV9FWFRFTkRFRCAxCiNpbmNsdWRlIDxlcnJuby5oPgovKiBUaGUgZm9sbG93aW5n
IHR3byBsaW5lcyBhcmUgYSB3b3JrYXJvdW5kIGFnYWluc3QgYW4gYXV0b2NvbmYtMi41MiBidWcu
ICAqLwojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoiOyB0aGVuIDoKCmZp
CgogICAgICAgIGZpCiAgICAgIGZpCgpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IHJlc3VsdDogJGdsX2N2X2hlYWRlcl9lcnJub19oX0VNVUxUSUhPUCIgPiY1CiRh
c19lY2hvICIkZ2xfY3ZfaGVhZGVyX2Vycm5vX2hfRU1VTFRJSE9QIiA+JjY7IH0KICAgIGNhc2Ug
JGdsX2N2X2hlYWRlcl9lcnJub19oX0VNVUxUSUhPUCBpbgogICAgICB5ZXMgfCBubykKICAgICAg
ICBFTVVMVElIT1BfSElEREVOPTA7IEVNVUxUSUhPUF9WQUxVRT0KICAgICAgICA7OwogICAgICAq
KQogICAgICAgIEVNVUxUSUhPUF9ISURERU49MTsgRU1VTFRJSE9QX1ZBTFVFPSIkZ2xfY3ZfaGVh
ZGVyX2Vycm5vX2hfRU1VTFRJSE9QIgogICAgICAgIDs7CiAgICBlc2FjCgoKICBmaQoKCiAgaWYg
dGVzdCAtbiAiJEVSUk5PX0giOyB0aGVuCiAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IGNoZWNraW5nIGZvciBFTk9MSU5LIHZhbHVlIiA+JjUKJGFzX2VjaG9fbiAi
Y2hlY2tpbmcgZm9yIEVOT0xJTksgdmFsdWUuLi4gIiA+JjY7IH0KaWYgJHtnbF9jdl9oZWFkZXJf
ZXJybm9faF9FTk9MSU5LKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAi
ID4mNgplbHNlCgogICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNf
ZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCiNpbmNsdWRlIDxlcnJuby5oPgojaWZkZWYgRU5P
TElOSwp5ZXMKI2VuZGlmCgpfQUNFT0YKaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4
dCIpIDI+JjUgfAogICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgogIGdsX2N2
X2hlYWRlcl9lcnJub19oX0VOT0xJTks9eWVzCmVsc2UKICBnbF9jdl9oZWFkZXJfZXJybm9faF9F
Tk9MSU5LPW5vCmZpCnJtIC1mIGNvbmZ0ZXN0KgoKICAgICAgaWYgdGVzdCAkZ2xfY3ZfaGVhZGVy
X2Vycm5vX2hfRU5PTElOSyA9IG5vOyB0aGVuCiAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9B
Q0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCgojZGVmaW5lIF9Y
T1BFTl9TT1VSQ0VfRVhURU5ERUQgMQojaW5jbHVkZSA8ZXJybm8uaD4KI2lmZGVmIEVOT0xJTksK
eWVzCiNlbmRpZgoKX0FDRU9GCmlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAy
PiY1IHwKICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKICBnbF9jdl9oZWFk
ZXJfZXJybm9faF9FTk9MSU5LPWhpZGRlbgpmaQpybSAtZiBjb25mdGVzdCoKCiAgICAgICAgaWYg
dGVzdCAkZ2xfY3ZfaGVhZGVyX2Vycm5vX2hfRU5PTElOSyA9IGhpZGRlbjsgdGhlbgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiBhY19mbl9jX2NvbXB1dGVfaW50ICIkTElORU5PIiAi
RU5PTElOSyIgImdsX2N2X2hlYWRlcl9lcnJub19oX0VOT0xJTksiICAgICAgICAiCiNkZWZpbmUg
X1hPUEVOX1NPVVJDRV9FWFRFTkRFRCAxCiNpbmNsdWRlIDxlcnJuby5oPgovKiBUaGUgZm9sbG93
aW5nIHR3byBsaW5lcyBhcmUgYSB3b3JrYXJvdW5kIGFnYWluc3QgYW4gYXV0b2NvbmYtMi41MiBi
dWcuICAqLwojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoiOyB0aGVuIDoK
CmZpCgogICAgICAgIGZpCiAgICAgIGZpCgpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2X2hlYWRlcl9lcnJub19oX0VOT0xJTksiID4mNQok
YXNfZWNobyAiJGdsX2N2X2hlYWRlcl9lcnJub19oX0VOT0xJTksiID4mNjsgfQogICAgY2FzZSAk
Z2xfY3ZfaGVhZGVyX2Vycm5vX2hfRU5PTElOSyBpbgogICAgICB5ZXMgfCBubykKICAgICAgICBF
Tk9MSU5LX0hJRERFTj0wOyBFTk9MSU5LX1ZBTFVFPQogICAgICAgIDs7CiAgICAgICopCiAgICAg
ICAgRU5PTElOS19ISURERU49MTsgRU5PTElOS19WQUxVRT0iJGdsX2N2X2hlYWRlcl9lcnJub19o
X0VOT0xJTksiCiAgICAgICAgOzsKICAgIGVzYWMKCgogIGZpCgoKICBpZiB0ZXN0IC1uICIkRVJS
Tk9fSCI7IHRoZW4KICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
Y2hlY2tpbmcgZm9yIEVPVkVSRkxPVyB2YWx1ZSIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIGZv
ciBFT1ZFUkZMT1cgdmFsdWUuLi4gIiA+JjY7IH0KaWYgJHtnbF9jdl9oZWFkZXJfZXJybm9faF9F
T1ZFUkZMT1crOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVs
c2UKCiAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyog
ZW5kIGNvbmZkZWZzLmguICAqLwoKI2luY2x1ZGUgPGVycm5vLmg+CiNpZmRlZiBFT1ZFUkZMT1cK
eWVzCiNlbmRpZgoKX0FDRU9GCmlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAy
PiY1IHwKICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKICBnbF9jdl9oZWFk
ZXJfZXJybm9faF9FT1ZFUkZMT1c9eWVzCmVsc2UKICBnbF9jdl9oZWFkZXJfZXJybm9faF9FT1ZF
UkZMT1c9bm8KZmkKcm0gLWYgY29uZnRlc3QqCgogICAgICBpZiB0ZXN0ICRnbF9jdl9oZWFkZXJf
ZXJybm9faF9FT1ZFUkZMT1cgPSBubzsgdGhlbgogICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxf
QUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwoKI2RlZmluZSBf
WE9QRU5fU09VUkNFX0VYVEVOREVEIDEKI2luY2x1ZGUgPGVycm5vLmg+CiNpZmRlZiBFT1ZFUkZM
T1cKeWVzCiNlbmRpZgoKX0FDRU9GCmlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQi
KSAyPiY1IHwKICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKICBnbF9jdl9o
ZWFkZXJfZXJybm9faF9FT1ZFUkZMT1c9aGlkZGVuCmZpCnJtIC1mIGNvbmZ0ZXN0KgoKICAgICAg
ICBpZiB0ZXN0ICRnbF9jdl9oZWFkZXJfZXJybm9faF9FT1ZFUkZMT1cgPSBoaWRkZW47IHRoZW4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgYWNfZm5fY19jb21wdXRlX2ludCAiJExJ
TkVOTyIgIkVPVkVSRkxPVyIgImdsX2N2X2hlYWRlcl9lcnJub19oX0VPVkVSRkxPVyIgICAgICAg
ICIKI2RlZmluZSBfWE9QRU5fU09VUkNFX0VYVEVOREVEIDEKI2luY2x1ZGUgPGVycm5vLmg+Ci8q
IFRoZSBmb2xsb3dpbmcgdHdvIGxpbmVzIGFyZSBhIHdvcmthcm91bmQgYWdhaW5zdCBhbiBhdXRv
Y29uZi0yLjUyIGJ1Zy4gICovCiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+
CiI7IHRoZW4gOgoKZmkKCiAgICAgICAgZmkKICAgICAgZmkKCmZpCnsgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfaGVhZGVyX2Vycm5vX2hfRU9W
RVJGTE9XIiA+JjUKJGFzX2VjaG8gIiRnbF9jdl9oZWFkZXJfZXJybm9faF9FT1ZFUkZMT1ciID4m
NjsgfQogICAgY2FzZSAkZ2xfY3ZfaGVhZGVyX2Vycm5vX2hfRU9WRVJGTE9XIGluCiAgICAgIHll
cyB8IG5vKQogICAgICAgIEVPVkVSRkxPV19ISURERU49MDsgRU9WRVJGTE9XX1ZBTFVFPQogICAg
ICAgIDs7CiAgICAgICopCiAgICAgICAgRU9WRVJGTE9XX0hJRERFTj0xOyBFT1ZFUkZMT1dfVkFM
VUU9IiRnbF9jdl9oZWFkZXJfZXJybm9faF9FT1ZFUkZMT1ciCiAgICAgICAgOzsKICAgIGVzYWMK
CgogIGZpCgoKYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAic3RyZXJyb3JfciIgImFjX2N2
X2hhdmVfZGVjbF9zdHJlcnJvcl9yIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCmlmIHRlc3QgIngk
YWNfY3ZfaGF2ZV9kZWNsX3N0cmVycm9yX3IiID0geHllczsgdGhlbiA6CiAgYWNfaGF2ZV9kZWNs
PTEKZWxzZQogIGFjX2hhdmVfZGVjbD0wCmZpCgpjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNk
ZWZpbmUgSEFWRV9ERUNMX1NUUkVSUk9SX1IgJGFjX2hhdmVfZGVjbApfQUNFT0YKCmZvciBhY19m
dW5jIGluIHN0cmVycm9yX3IKZG8gOgogIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgInN0
cmVycm9yX3IiICJhY19jdl9mdW5jX3N0cmVycm9yX3IiCmlmIHRlc3QgIngkYWNfY3ZfZnVuY19z
dHJlcnJvcl9yIiA9IHh5ZXM7IHRoZW4gOgogIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2Rl
ZmluZSBIQVZFX1NUUkVSUk9SX1IgMQpfQUNFT0YKCmZpCmRvbmUKCnsgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBzdHJlcnJvcl9yIHJldHVy
bnMgY2hhciAqIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBzdHJlcnJvcl9yIHJl
dHVybnMgY2hhciAqLi4uICIgPiY2OyB9CmlmICR7YWNfY3ZfZnVuY19zdHJlcnJvcl9yX2NoYXJf
cCs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQoKICAg
IGFjX2N2X2Z1bmNfc3RyZXJyb3Jfcl9jaGFyX3A9bm8KICAgIGlmIHRlc3QgJGFjX2N2X2hhdmVf
ZGVjbF9zdHJlcnJvcl9yID0geWVzOyB0aGVuCiAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNF
T0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwokYWNfaW5jbHVkZXNf
ZGVmYXVsdAppbnQKbWFpbiAoKQp7CgoJICBjaGFyIGJ1ZlsxMDBdOwoJICBjaGFyIHggPSAqc3Ry
ZXJyb3JfciAoMCwgYnVmLCBzaXplb2YgYnVmKTsKCSAgY2hhciAqcCA9IHN0cmVycm9yX3IgKDAs
IGJ1Ziwgc2l6ZW9mIGJ1Zik7CgkgIHJldHVybiAhcCB8fCB4OwoKICA7CiAgcmV0dXJuIDA7Cn0K
X0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKICBhY19jdl9m
dW5jX3N0cmVycm9yX3JfY2hhcl9wPXllcwpmaQpybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25m
dGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKICAgIGVsc2UKICAgICAgIyBzdHJlcnJv
cl9yIGlzIG5vdCBkZWNsYXJlZC4gIENob29zZSBiZXR3ZWVuCiAgICAgICMgc3lzdGVtcyB0aGF0
IGhhdmUgcmVsYXRpdmVseSBpbmFjY2Vzc2libGUgZGVjbGFyYXRpb25zIGZvciB0aGUKICAgICAg
IyBmdW5jdGlvbi4gIEJlT1MgYW5kIERFQyBVTklYIDQuMCBmYWxsIGluIHRoaXMgY2F0ZWdvcnks
IGJ1dCB0aGUKICAgICAgIyBmb3JtZXIgaGFzIGEgc3RyZXJyb3JfciB0aGF0IHJldHVybnMgY2hh
ciosIHdoaWxlIHRoZSBsYXR0ZXIKICAgICAgIyBoYXMgYSBzdHJlcnJvcl9yIHRoYXQgcmV0dXJu
cyBgaW50Jy4KICAgICAgIyBUaGlzIHRlc3Qgc2hvdWxkIHNlZ2ZhdWx0IG9uIHRoZSBERUMgc3lz
dGVtLgogICAgICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CiAgOgpl
bHNlCiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQg
Y29uZmRlZnMuaC4gICovCiRhY19pbmNsdWRlc19kZWZhdWx0CglleHRlcm4gY2hhciAqc3RyZXJy
b3JfciAoKTsKaW50Cm1haW4gKCkKewpjaGFyIGJ1ZlsxMDBdOwoJICBjaGFyIHggPSAqc3RyZXJy
b3JfciAoMCwgYnVmLCBzaXplb2YgYnVmKTsKCSAgcmV0dXJuICEgaXNhbHBoYSAoeCk7CiAgOwog
IHJldHVybiAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoK
ICBhY19jdl9mdW5jX3N0cmVycm9yX3JfY2hhcl9wPXllcwpmaQpybSAtZiBjb3JlICouY29yZSBj
b3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCiAgY29u
ZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKZmkKCiAgICBm
aQoKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRh
Y19jdl9mdW5jX3N0cmVycm9yX3JfY2hhcl9wIiA+JjUKJGFzX2VjaG8gIiRhY19jdl9mdW5jX3N0
cmVycm9yX3JfY2hhcl9wIiA+JjY7IH0KaWYgdGVzdCAkYWNfY3ZfZnVuY19zdHJlcnJvcl9yX2No
YXJfcCA9IHllczsgdGhlbgoKJGFzX2VjaG8gIiNkZWZpbmUgU1RSRVJST1JfUl9DSEFSX1AgMSIg
Pj5jb25mZGVmcy5oCgpmaQoKCiAgWEdFVFRFWFRfRVhUUkFfT1BUSU9OUz0KCgoKCgogIEdOVUxJ
Ql9GQ05UTD0wOwogIEdOVUxJQl9OT05CTE9DS0lORz0wOwogIEdOVUxJQl9PUEVOPTA7CiAgR05V
TElCX09QRU5BVD0wOwogICAgSEFWRV9GQ05UTD0xOwogIEhBVkVfT1BFTkFUPTE7CiAgUkVQTEFD
RV9GQ05UTD0wOwogIFJFUExBQ0VfT1BFTj0wOwogIFJFUExBQ0VfT1BFTkFUPTA7CgoKCgoKCgoK
CgoKCgoKCgoKCgoKICA6CgoKCgoKCiAgOgoKCgoKCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igd29ya2luZyBmY250bC5oIiA+JjUKJGFzX2Vj
aG9fbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgZmNudGwuaC4uLiAiID4mNjsgfQppZiAke2dsX2N2
X2hlYWRlcl93b3JraW5nX2ZjbnRsX2grOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihj
YWNoZWQpICIgPiY2CmVsc2UKICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhl
biA6CiAgZ2xfY3ZfaGVhZGVyX3dvcmtpbmdfZmNudGxfaD1jcm9zcy1jb21waWxpbmcKZWxzZQog
IGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZk
ZWZzLmguICAqLwojaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAgICAgICAgICAgI2luY2x1ZGUgPHN5
cy9zdGF0Lmg+CiAgICAgICAgICAgI2lmIEhBVkVfVU5JU1REX0gKICAgICAgICAgICAjIGluY2x1
ZGUgPHVuaXN0ZC5oPgogICAgICAgICAgICNlbHNlIC8qIG9uIFdpbmRvd3Mgd2l0aCBNU1ZDICov
CiAgICAgICAgICAgIyBpbmNsdWRlIDxpby5oPgogICAgICAgICAgICMgaW5jbHVkZSA8c3RkbGli
Lmg+CiAgICAgICAgICAgIyBkZWZpbmVkIHNsZWVwKG4pIF9zbGVlcCAoKG4pICogMTAwMCkKICAg
ICAgICAgICAjZW5kaWYKICAgICAgICAgICAjaW5jbHVkZSA8ZmNudGwuaD4KICAgICAgICAgICAj
aWZuZGVmIE9fTk9BVElNRQogICAgICAgICAgICAjZGVmaW5lIE9fTk9BVElNRSAwCiAgICAgICAg
ICAgI2VuZGlmCiAgICAgICAgICAgI2lmbmRlZiBPX05PRk9MTE9XCiAgICAgICAgICAgICNkZWZp
bmUgT19OT0ZPTExPVyAwCiAgICAgICAgICAgI2VuZGlmCiAgICAgICAgICAgc3RhdGljIGludCBj
b25zdCBjb25zdGFudHNbXSA9CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBPX0NSRUFULCBP
X0VYQ0wsIE9fTk9DVFRZLCBPX1RSVU5DLCBPX0FQUEVORCwKICAgICAgICAgICAgICBPX05PTkJM
T0NLLCBPX1NZTkMsIE9fQUNDTU9ERSwgT19SRE9OTFksIE9fUkRXUiwgT19XUk9OTFkKICAgICAg
ICAgICAgfTsKCmludAptYWluICgpCnsKCiAgICAgICAgICAgIGludCByZXN1bHQgPSAhY29uc3Rh
bnRzOwogICAgICAgICAgICAjaWYgSEFWRV9TWU1MSU5LCiAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICBzdGF0aWMgY2hhciBjb25zdCBzeW1bXSA9ICJjb25mdGVzdC5zeW0iOwogICAgICAgICAg
ICAgIGlmIChzeW1saW5rICgiL2Rldi9udWxsIiwgc3ltKSAhPSAwKQogICAgICAgICAgICAgICAg
cmVzdWx0IHw9IDI7CiAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgICBpbnQgZmQgPSBvcGVuIChzeW0sIE9fV1JPTkxZIHwgT19OT0ZPTExPVyB8IE9f
Q1JFQVQsIDApOwogICAgICAgICAgICAgICAgICBpZiAoZmQgPj0gMCkKICAgICAgICAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICBjbG9zZSAoZmQpOwogICAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0IHw9IDQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgIGlmICh1bmxpbmsgKHN5bSkgIT0gMCB8fCBzeW1saW5rICgiLiIsIHN5
bSkgIT0gMCkKICAgICAgICAgICAgICAgIHJlc3VsdCB8PSAyOwogICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgaW50IGZkID0gb3BlbiAoc3ltLCBP
X1JET05MWSB8IE9fTk9GT0xMT1cpOwogICAgICAgICAgICAgICAgICBpZiAoZmQgPj0gMCkKICAg
ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICBjbG9zZSAoZmQpOwogICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0IHw9IDQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgIHVubGluayAoc3ltKTsKICAgICAgICAgICAgfQog
ICAgICAgICAgICAjZW5kaWYKICAgICAgICAgICAgewogICAgICAgICAgICAgIHN0YXRpYyBjaGFy
IGNvbnN0IGZpbGVbXSA9ICJjb25mZGVmcy5oIjsKICAgICAgICAgICAgICBpbnQgZmQgPSBvcGVu
IChmaWxlLCBPX1JET05MWSB8IE9fTk9BVElNRSk7CiAgICAgICAgICAgICAgaWYgKGZkIDwgMCkK
ICAgICAgICAgICAgICAgIHJlc3VsdCB8PSA4OwogICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgc3QwOwogICAgICAgICAgICAg
ICAgICBpZiAoZnN0YXQgKGZkLCAmc3QwKSAhPSAwKQogICAgICAgICAgICAgICAgICAgIHJlc3Vs
dCB8PSAxNjsKICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgYzsKICAgICAgICAgICAgICAgICAgICAgIHNsZWVwICgx
KTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWFkIChmZCwgJmMsIDEpICE9IDEpCiAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdCB8PSAyNDsKICAgICAgICAgICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChjbG9zZSAoZmQpICE9IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgfD0g
MzI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCBzdDE7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0IChmaWxlLCAmc3QxKSAhPSAwKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCB8PSA0MDsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChzdDAuc3RfYXRpbWUgIT0gc3QxLnN0X2F0aW1lKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0IHw9IDY0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgOwogIHJldHVy
biAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKICBnbF9j
dl9oZWFkZXJfd29ya2luZ19mY250bF9oPXllcwplbHNlCiAgY2FzZSAkPyBpbiAjKAogICAgICAg
IDQpIGdsX2N2X2hlYWRlcl93b3JraW5nX2ZjbnRsX2g9J25vIChiYWQgT19OT0ZPTExPVyknOzsg
IygKICAgICAgICA2NCkgZ2xfY3ZfaGVhZGVyX3dvcmtpbmdfZmNudGxfaD0nbm8gKGJhZCBPX05P
QVRJTUUpJzs7ICMoCiAgICAgICAgNjgpIGdsX2N2X2hlYWRlcl93b3JraW5nX2ZjbnRsX2g9J25v
IChiYWQgT19OT0FUSU1FLCBPX05PRk9MTE9XKSc7OyAjKAogICAgICAgICAqKSBnbF9jdl9oZWFk
ZXJfd29ya2luZ19mY250bF9oPSdubyc7OwogICAgICAgIGVzYWMKZmkKcm0gLWYgY29yZSAqLmNv
cmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAog
IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CmZpCgpm
aQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2
X2hlYWRlcl93b3JraW5nX2ZjbnRsX2giID4mNQokYXNfZWNobyAiJGdsX2N2X2hlYWRlcl93b3Jr
aW5nX2ZjbnRsX2giID4mNjsgfQoKICBjYXNlICRnbF9jdl9oZWFkZXJfd29ya2luZ19mY250bF9o
IGluICMoCiAgKk9fTk9BVElNRSogfCBubyB8IGNyb3NzLWNvbXBpbGluZykgYWNfdmFsPTA7OyAj
KAogICopIGFjX3ZhbD0xOzsKICBlc2FjCgpjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZp
bmUgSEFWRV9XT1JLSU5HX09fTk9BVElNRSAkYWNfdmFsCl9BQ0VPRgoKCiAgY2FzZSAkZ2xfY3Zf
aGVhZGVyX3dvcmtpbmdfZmNudGxfaCBpbiAjKAogICpPX05PRk9MTE9XKiB8IG5vIHwgY3Jvc3Mt
Y29tcGlsaW5nKSBhY192YWw9MDs7ICMoCiAgKikgYWNfdmFsPTE7OwogIGVzYWMKCmNhdCA+PmNv
bmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBIQVZFX1dPUktJTkdfT19OT0ZPTExPVyAkYWNfdmFs
Cl9BQ0VPRgoKCmFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgInBpZF90IiAiYWNfY3ZfdHlw
ZV9waWRfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgppZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfcGlk
X3QiID0geHllczsgdGhlbiA6CgplbHNlCgpjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZp
bmUgcGlkX3QgaW50Cl9BQ0VPRgoKZmkKCmFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgIm1v
ZGVfdCIgImFjX2N2X3R5cGVfbW9kZV90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCmlmIHRlc3Qg
IngkYWNfY3ZfdHlwZV9tb2RlX3QiID0geHllczsgdGhlbiA6CgplbHNlCgpjYXQgPj5jb25mZGVm
cy5oIDw8X0FDRU9GCiNkZWZpbmUgbW9kZV90IGludApfQUNFT0YKCmZpCgoKICBhY19mbl9jX2No
ZWNrX2Z1bmMgIiRMSU5FTk8iICJlYWNjZXNzIiAiYWNfY3ZfZnVuY19lYWNjZXNzIgppZiB0ZXN0
ICJ4JGFjX2N2X2Z1bmNfZWFjY2VzcyIgPSB4eWVzOyB0aGVuIDoKCmVsc2UKCiRhc19lY2hvICIj
ZGVmaW5lIGVhY2Nlc3MgYWNjZXNzIiA+PmNvbmZkZWZzLmgKCmZpCgoKCiAgICAgR05VTElCX0ZD
SE1PREFUPTA7CiAgR05VTElCX0ZTVEFUPTA7CiAgR05VTElCX0ZTVEFUQVQ9MDsKICBHTlVMSUJf
RlVUSU1FTlM9MDsKICBHTlVMSUJfTENITU9EPTA7CiAgR05VTElCX0xTVEFUPTA7CiAgR05VTElC
X01LRElSQVQ9MDsKICBHTlVMSUJfTUtGSUZPPTA7CiAgR05VTElCX01LRklGT0FUPTA7CiAgR05V
TElCX01LTk9EPTA7CiAgR05VTElCX01LTk9EQVQ9MDsKICBHTlVMSUJfU1RBVD0wOwogIEdOVUxJ
Ql9VVElNRU5TQVQ9MDsKICAgIEhBVkVfRkNITU9EQVQ9MTsKICBIQVZFX0ZTVEFUQVQ9MTsKICBI
QVZFX0ZVVElNRU5TPTE7CiAgSEFWRV9MQ0hNT0Q9MTsKICBIQVZFX0xTVEFUPTE7CiAgSEFWRV9N
S0RJUkFUPTE7CiAgSEFWRV9NS0ZJRk89MTsKICBIQVZFX01LRklGT0FUPTE7CiAgSEFWRV9NS05P
RD0xOwogIEhBVkVfTUtOT0RBVD0xOwogIEhBVkVfVVRJTUVOU0FUPTE7CiAgUkVQTEFDRV9GU1RB
VD0wOwogIFJFUExBQ0VfRlNUQVRBVD0wOwogIFJFUExBQ0VfRlVUSU1FTlM9MDsKICBSRVBMQUNF
X0xTVEFUPTA7CiAgUkVQTEFDRV9NS0RJUj0wOwogIFJFUExBQ0VfTUtGSUZPPTA7CiAgUkVQTEFD
RV9NS05PRD0wOwogIFJFUExBQ0VfU1RBVD0wOwogIFJFUExBQ0VfVVRJTUVOU0FUPTA7CgoKCgoK
CgoKICA6CgoKCgoKICBpZiB0ZXN0ICRhY19jdl9mdW5jX19zZXRfaW52YWxpZF9wYXJhbWV0ZXJf
aGFuZGxlciA9IHllczsgdGhlbgogICAgSEFWRV9NU1ZDX0lOVkFMSURfUEFSQU1FVEVSX0hBTkRM
RVI9MQoKJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9NU1ZDX0lOVkFMSURfUEFSQU1FVEVSX0hBTkRM
RVIgMSIgPj5jb25mZGVmcy5oCgogIGVsc2UKICAgIEhBVkVfTVNWQ19JTlZBTElEX1BBUkFNRVRF
Ul9IQU5ETEVSPTAKICBmaQoKCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogY2hlY2tpbmcgd2hldGhlciBzdGF0IGZpbGUtbW9kZSBtYWNyb3MgYXJlIGJyb2tlbiIgPiY1
CiRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgc3RhdCBmaWxlLW1vZGUgbWFjcm9zIGFyZSBi
cm9rZW4uLi4gIiA+JjY7IH0KaWYgJHthY19jdl9oZWFkZXJfc3RhdF9icm9rZW4rOn0gZmFsc2U7
IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKICBjYXQgY29uZmRlZnMu
aCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2lu
Y2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8c3lzL3N0YXQuaD4KCiNpZiBkZWZpbmVkIFNf
SVNCTEsgJiYgZGVmaW5lZCBTX0lGRElSCmV4dGVybiBjaGFyIGMxW1NfSVNCTEsgKFNfSUZESVIp
ID8gLTEgOiAxXTsKI2VuZGlmCgojaWYgZGVmaW5lZCBTX0lTQkxLICYmIGRlZmluZWQgU19JRkNI
UgpleHRlcm4gY2hhciBjMltTX0lTQkxLIChTX0lGQ0hSKSA/IC0xIDogMV07CiNlbmRpZgoKI2lm
IGRlZmluZWQgU19JU0xOSyAmJiBkZWZpbmVkIFNfSUZSRUcKZXh0ZXJuIGNoYXIgYzNbU19JU0xO
SyAoU19JRlJFRykgPyAtMSA6IDFdOwojZW5kaWYKCiNpZiBkZWZpbmVkIFNfSVNTT0NLICYmIGRl
ZmluZWQgU19JRlJFRwpleHRlcm4gY2hhciBjNFtTX0lTU09DSyAoU19JRlJFRykgPyAtMSA6IDFd
OwojZW5kaWYKCl9BQ0VPRgppZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6
CiAgYWNfY3ZfaGVhZGVyX3N0YXRfYnJva2VuPW5vCmVsc2UKICBhY19jdl9oZWFkZXJfc3RhdF9i
cm9rZW49eWVzCmZpCnJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQg
Y29uZnRlc3QuJGFjX2V4dApmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IHJlc3VsdDogJGFjX2N2X2hlYWRlcl9zdGF0X2Jyb2tlbiIgPiY1CiRhc19lY2hvICIkYWNf
Y3ZfaGVhZGVyX3N0YXRfYnJva2VuIiA+JjY7IH0KaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0YXRf
YnJva2VuID0geWVzOyB0aGVuCgokYXNfZWNobyAiI2RlZmluZSBTVEFUX01BQ1JPU19CUk9LRU4g
MSIgPj5jb25mZGVmcy5oCgpmaQoKCgoKCgoKCiAgY2FzZSAiJGhvc3Rfb3MiIGluCiAgICBtaW5n
dyopCiAgICAgICAgICAgICAgICAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu
by0kTElORU5PfTogY2hlY2tpbmcgZm9yIDY0LWJpdCBvZmZfdCIgPiY1CiRhc19lY2hvX24gImNo
ZWNraW5nIGZvciA2NC1iaXQgb2ZmX3QuLi4gIiA+JjY7IH0KaWYgJHtnbF9jdl90eXBlX29mZl90
XzY0Kzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCiAg
Y2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRl
ZnMuaC4gICovCiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICAgICAgICAgICAgICAgIGludCB2ZXJp
Znlfb2ZmX3Rfc2l6ZVtzaXplb2YgKG9mZl90KSA+PSA4ID8gMSA6IC0xXTsKCmludAptYWluICgp
CnsKCiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElO
RU5PIjsgdGhlbiA6CiAgZ2xfY3ZfdHlwZV9vZmZfdF82ND15ZXMKZWxzZQogIGdsX2N2X3R5cGVf
b2ZmX3RfNjQ9bm8KZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4
dCBjb25mdGVzdC4kYWNfZXh0CgpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IHJlc3VsdDogJGdsX2N2X3R5cGVfb2ZmX3RfNjQiID4mNQokYXNfZWNobyAiJGdsX2N2
X3R5cGVfb2ZmX3RfNjQiID4mNjsgfQogICAgICBpZiB0ZXN0ICRnbF9jdl90eXBlX29mZl90XzY0
ID0gbm87IHRoZW4KICAgICAgICBXSU5ET1dTXzY0X0JJVF9PRkZfVD0xCiAgICAgIGVsc2UKICAg
ICAgICBXSU5ET1dTXzY0X0JJVF9PRkZfVD0wCiAgICAgIGZpCiAgICAgICAgICAgICAgICAgIFdJ
TkRPV1NfNjRfQklUX1NUX1NJWkU9MQogICAgICA7OwogICAgKikKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0lORE9XU182NF9CSVRfT0ZGX1Q9
MAogICAgICBXSU5ET1dTXzY0X0JJVF9TVF9TSVpFPTAKICAgICAgOzsKICBlc2FjCgoKCgoKCgoK
CgoKCiAgOgoKCgoKCgoKCiAgICAgaWYgdGVzdCAkZ2xfY3ZfaGF2ZV9pbmNsdWRlX25leHQgPSB5
ZXM7IHRoZW4KICAgICAgIGdsX2N2X25leHRfc3lzX3N0YXRfaD0nPCdzeXMvc3RhdC5oJz4nCiAg
ICAgZWxzZQogICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj
aGVja2luZyBhYnNvbHV0ZSBuYW1lIG9mIDxzeXMvc3RhdC5oPiIgPiY1CiRhc19lY2hvX24gImNo
ZWNraW5nIGFic29sdXRlIG5hbWUgb2YgPHN5cy9zdGF0Lmg+Li4uICIgPiY2OyB9CmlmICR7Z2xf
Y3ZfbmV4dF9zeXNfc3RhdF9oKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVk
KSAiID4mNgplbHNlCgogICAgICAgICAgICAgaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N5c19zdGF0
X2ggPSB5ZXM7IHRoZW4KCgogICAgICAgICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9G
ID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPHN5cy9z
dGF0Lmg+CgpfQUNFT0YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSAiJGhvc3Rfb3MiIGluCiAgICAgICAgICAgICAgICAg
YWl4KikgZ2xfYWJzbmFtZV9jcHA9IiRhY19jcHAgLUMiIDs7CiAgICAgICAgICAgICAgICAgKikg
ICAgZ2xfYWJzbmFtZV9jcHA9IiRhY19jcHAiIDs7CiAgICAgICAgICAgICAgIGVzYWMKCiAgICAg
ICAgICAgICAgIGNhc2UgIiRob3N0X29zIiBpbgogICAgICAgICAgICAgICAgIG1pbmd3KikKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsX2RpcnNlcF9yZWdleD0nWy9cXF0nCiAgICAgICAgICAgICAgICAg
ICA7OwogICAgICAgICAgICAgICAgICopCiAgICAgICAgICAgICAgICAgICBnbF9kaXJzZXBfcmVn
ZXg9J1wvJwogICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgZXNhYwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9tYWtlX2xpdGVyYWxfcmVn
ZXhfc2VkPSdzLFtdJF5cXC4qL1tdLFxcJixnJwoKICAgICAgICAgICAgICAgZ2xfaGVhZGVyX2xp
dGVyYWxfcmVnZXg9YGVjaG8gJ3N5cy9zdGF0LmgnIFwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgc2VkIC1lICIkZ2xfbWFrZV9saXRlcmFsX3JlZ2V4X3NlZCJgCiAg
ICAgICAgICAgICAgIGdsX2Fic29sdXRlX2hlYWRlcl9zZWQ9Ii8ke2dsX2RpcnNlcF9yZWdleH0k
e2dsX2hlYWRlcl9saXRlcmFsX3JlZ2V4fS8iJ3sKICAgICAgICAgICAgICAgICAgIHMvLioiXCgu
KiciJHtnbF9kaXJzZXBfcmVnZXh9JHtnbF9oZWFkZXJfbGl0ZXJhbF9yZWdleH0iJ1wpIi4qL1wx
LwogICAgICAgICAgICAgICAgICAgc3xeL1teL118Ly8mfAogICAgICAgICAgICAgICAgICAgcAog
ICAgICAgICAgICAgICAgICAgcQogICAgICAgICAgICAgICAgIH0nCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2N2X25leHRfc3lz
X3N0YXRfaD0nIidgKGV2YWwgIiRnbF9hYnNuYW1lX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4m
NSB8CiAgICAgICAgICAgICAgICAgICAgICBzZWQgLW4gIiRnbF9hYnNvbHV0ZV9oZWFkZXJfc2Vk
ImAnIicKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgZ2xfY3ZfbmV4dF9zeXNfc3RhdF9o
PSc8J3N5cy9zdGF0LmgnPicKICAgICAgICAgICAgIGZpCgoKZmkKeyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbF9jdl9uZXh0X3N5c19zdGF0X2giID4m
NQokYXNfZWNobyAiJGdsX2N2X25leHRfc3lzX3N0YXRfaCIgPiY2OyB9CiAgICAgZmkKICAgICBO
RVhUX1NZU19TVEFUX0g9JGdsX2N2X25leHRfc3lzX3N0YXRfaAoKICAgICBpZiB0ZXN0ICRnbF9j
dl9oYXZlX2luY2x1ZGVfbmV4dCA9IHllcyB8fCB0ZXN0ICRnbF9jdl9oYXZlX2luY2x1ZGVfbmV4
dCA9IGJ1Z2d5OyB0aGVuCiAgICAgICAjIElOQ0xVREVfTkVYVF9BU19GSVJTVF9ESVJFQ1RJVkU9
J2luY2x1ZGVfbmV4dCcKICAgICAgIGdsX25leHRfYXNfZmlyc3RfZGlyZWN0aXZlPSc8J3N5cy9z
dGF0LmgnPicKICAgICBlbHNlCiAgICAgICAjIElOQ0xVREVfTkVYVF9BU19GSVJTVF9ESVJFQ1RJ
VkU9J2luY2x1ZGUnCiAgICAgICBnbF9uZXh0X2FzX2ZpcnN0X2RpcmVjdGl2ZT0kZ2xfY3ZfbmV4
dF9zeXNfc3RhdF9oCiAgICAgZmkKICAgICBORVhUX0FTX0ZJUlNUX0RJUkVDVElWRV9TWVNfU1RB
VF9IPSRnbF9uZXh0X2FzX2ZpcnN0X2RpcmVjdGl2ZQoKCgoKCgoKCgoKCiAgaWYgdGVzdCAkV0lO
RE9XU182NF9CSVRfU1RfU0laRSA9IDE7IHRoZW4KCiRhc19lY2hvICIjZGVmaW5lIF9HTF9XSU5E
T1dTXzY0X0JJVF9TVF9TSVpFIDEiID4+Y29uZmRlZnMuaAoKICBmaQoKICAgICAgYWNfZm5fY19j
aGVja190eXBlICIkTElORU5PIiAibmxpbmtfdCIgImFjX2N2X3R5cGVfbmxpbmtfdCIgIiNpbmNs
dWRlIDxzeXMvdHlwZXMuaD4KICAgICAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KIgppZiB0ZXN0ICJ4
JGFjX2N2X3R5cGVfbmxpbmtfdCIgPSB4eWVzOyB0aGVuIDoKCmVsc2UKCiRhc19lY2hvICIjZGVm
aW5lIG5saW5rX3QgaW50IiA+PmNvbmZkZWZzLmgKCmZpCgoKCiAgICBmb3IgZ2xfZnVuYyBpbiBm
Y2htb2RhdCBmc3RhdCBmc3RhdGF0IGZ1dGltZW5zIGxjaG1vZCBsc3RhdCBta2RpcmF0IG1rZmlm
byBta2ZpZm9hdCAgICAgbWtub2QgbWtub2RhdCBzdGF0IHV0aW1lbnNhdDsgZG8KICAgIGFzX2ds
X1N5bWJvbD1gJGFzX2VjaG8gImdsX2N2X2hhdmVfcmF3X2RlY2xfJGdsX2Z1bmMiIHwgJGFzX3Ry
X3NoYAogICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu
ZyB3aGV0aGVyICRnbF9mdW5jIGlzIGRlY2xhcmVkIHdpdGhvdXQgYSBtYWNybyIgPiY1CiRhc19l
Y2hvX24gImNoZWNraW5nIHdoZXRoZXIgJGdsX2Z1bmMgaXMgZGVjbGFyZWQgd2l0aG91dCBhIG1h
Y3JvLi4uICIgPiY2OyB9CmlmIGV2YWwgXCR7JGFzX2dsX1N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6
CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxf
QUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVkZSA8
c3lzL3N0YXQuaD4KCmludAptYWluICgpCnsKI3VuZGVmICRnbF9mdW5jCiAgKHZvaWQpICRnbF9m
dW5jOwogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJ
TkVOTyI7IHRoZW4gOgogIGV2YWwgIiRhc19nbF9TeW1ib2w9eWVzIgplbHNlCiAgZXZhbCAiJGFz
X2dsX1N5bWJvbD1ubyIKZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29i
amV4dCBjb25mdGVzdC4kYWNfZXh0CmZpCmV2YWwgYWNfcmVzPVwkJGFzX2dsX1N5bWJvbAoJICAg
ICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNf
cmVzIiA+JjUKJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQogICAgaWYgZXZhbCB0ZXN0IFwieFwk
IiRhc19nbF9TeW1ib2wiXCIgPSB4InllcyI7IHRoZW4gOgogIGNhdCA+PmNvbmZkZWZzLmggPDxf
QUNFT0YKI2RlZmluZSBgJGFzX2VjaG8gIkhBVkVfUkFXX0RFQ0xfJGdsX2Z1bmMiIHwgJGFzX3Ry
X2NwcGAgMQpfQUNFT0YKCiAgICAgICAgICAgICAgICAgICAgIGV2YWwgYWNfY3ZfaGF2ZV9kZWNs
XyRnbF9mdW5jPXllcwpmaQogICAgICBkb25lCgoKCgogIDoKCgoKCgogICB7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgZ2V0Y3dkIChOVUxM
LCAwKSBhbGxvY2F0ZXMgbWVtb3J5IGZvciByZXN1bHQiID4mNQokYXNfZWNob19uICJjaGVja2lu
ZyB3aGV0aGVyIGdldGN3ZCAoTlVMTCwgMCkgYWxsb2NhdGVzIG1lbW9yeSBmb3IgcmVzdWx0Li4u
ICIgPiY2OyB9CmlmICR7Z2xfY3ZfZnVuY19nZXRjd2RfbnVsbCs6fSBmYWxzZTsgdGhlbiA6CiAg
JGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIGlmIHRlc3QgIiRjcm9zc19jb21waWxp
bmciID0geWVzOyB0aGVuIDoKICBjYXNlICIkaG9zdF9vcyIgaW4KICAgICAgICAgICAgICAgICAg
ICAgIyBHdWVzcyB5ZXMgb24gZ2xpYmMgc3lzdGVtcy4KICAgICAgICAgICAgKi1nbnUqKSAgZ2xf
Y3ZfZnVuY19nZXRjd2RfbnVsbD0iZ3Vlc3NpbmcgeWVzIjs7CiAgICAgICAgICAgICAgICAgICAg
ICMgR3Vlc3MgeWVzIG9uIEN5Z3dpbi4KICAgICAgICAgICAgY3lnd2luKikgZ2xfY3ZfZnVuY19n
ZXRjd2RfbnVsbD0iZ3Vlc3NpbmcgeWVzIjs7CiAgICAgICAgICAgICAgICAgICAgICMgSWYgd2Ug
ZG9uJ3Qga25vdywgYXNzdW1lIHRoZSB3b3JzdC4KICAgICAgICAgICAgKikgICAgICAgZ2xfY3Zf
ZnVuY19nZXRjd2RfbnVsbD0iZ3Vlc3Npbmcgbm8iOzsKICAgICAgICAgIGVzYWMKCmVsc2UKICBj
YXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVm
cy5oLiAgKi8KCiMgICAgICAgIGlmIEhBVkVfVU5JU1REX0gKIyAgICAgICAgIGluY2x1ZGUgPHVu
aXN0ZC5oPgojICAgICAgICBlbHNlIC8qIG9uIFdpbmRvd3Mgd2l0aCBNU1ZDICovCiMgICAgICAg
ICBpbmNsdWRlIDxkaXJlY3QuaD4KIyAgICAgICAgZW5kaWYKIyAgICAgICAgaWZuZGVmIGdldGN3
ZAogICAgICAgICBjaGFyICpnZXRjd2QgKCk7CiMgICAgICAgIGVuZGlmCgppbnQKbWFpbiAoKQp7
CgojaWYgKGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19XSU4zMl9fKSAmJiAhIGRlZmluZWQg
X19DWUdXSU5fXwovKiBtaW5ndyBjd2QgZG9lcyBub3Qgc3RhcnQgd2l0aCAnLycsIGJ1dCBnZXRj
d2QgZG9lcyBhbGxvY2F0ZS4KICAgSG93ZXZlciwgbWluZ3cgZmFpbHMgdG8gaG9ub3Igbm9uLXpl
cm8gc2l6ZS4gICovCiNlbHNlCiAgICAgICAgICAgaWYgKGNoZGlyICgiLyIpICE9IDApCiAgICAg
ICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgIGNoYXIgKmYgPSBnZXRjd2QgKE5VTEwsIDApOwogICAgICAgICAgICAgICBpZiAoISBm
KQogICAgICAgICAgICAgICAgIHJldHVybiAyOwogICAgICAgICAgICAgICBpZiAoZlswXSAhPSAn
LycpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDM7CiAgICAgICAgICAgICAgIGlmIChmWzFdICE9
ICdcMCcpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDQ7CiAgICAgICAgICAgICAgIHJldHVybiAw
OwogICAgICAgICAgICAgfQojZW5kaWYKCiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgppZiBhY19m
bl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKICBnbF9jdl9mdW5jX2dldGN3ZF9udWxsPXll
cwplbHNlCiAgZ2xfY3ZfZnVuY19nZXRjd2RfbnVsbD1ubwpmaQpybSAtZiBjb3JlICouY29yZSBj
b3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCiAgY29u
ZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKZmkKCmZpCnsg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfZnVu
Y19nZXRjd2RfbnVsbCIgPiY1CiRhc19lY2hvICIkZ2xfY3ZfZnVuY19nZXRjd2RfbnVsbCIgPiY2
OyB9CgoKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5n
IGZvciBnZXRjd2Qgd2l0aCBQT1NJWCBzaWduYXR1cmUiID4mNQokYXNfZWNob19uICJjaGVja2lu
ZyBmb3IgZ2V0Y3dkIHdpdGggUE9TSVggc2lnbmF0dXJlLi4uICIgPiY2OyB9CmlmICR7Z2xfY3Zf
ZnVuY19nZXRjd2RfcG9zaXhfc2lnbmF0dXJlKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19u
ICIoY2FjaGVkKSAiID4mNgplbHNlCiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRl
c3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCiNpbmNsdWRlIDx1bmlzdGQuaD4KaW50
Cm1haW4gKCkKewpleHRlcm4KICAgICAgICAgICAjaWZkZWYgX19jcGx1c3BsdXMKICAgICAgICAg
ICAiQyIKICAgICAgICAgICAjZW5kaWYKICAgICAgICAgICBjaGFyICpnZXRjd2QgKGNoYXIgKiwg
c2l6ZV90KTsKCiAgOwogIHJldHVybiAwOwp9CgpfQUNFT0YKaWYgYWNfZm5fY190cnlfY29tcGls
ZSAiJExJTkVOTyI7IHRoZW4gOgogIGdsX2N2X2Z1bmNfZ2V0Y3dkX3Bvc2l4X3NpZ25hdHVyZT15
ZXMKZWxzZQogIGdsX2N2X2Z1bmNfZ2V0Y3dkX3Bvc2l4X3NpZ25hdHVyZT1ubwpmaQpybSAtZiBj
b3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKCmZp
CnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3Zf
ZnVuY19nZXRjd2RfcG9zaXhfc2lnbmF0dXJlIiA+JjUKJGFzX2VjaG8gIiRnbF9jdl9mdW5jX2dl
dGN3ZF9wb3NpeF9zaWduYXR1cmUiID4mNjsgfQoKCiAgICAgIGFjX2ZuX2NfY2hlY2tfZGVjbCAi
JExJTkVOTyIgImdldGN3ZCIgImFjX2N2X2hhdmVfZGVjbF9nZXRjd2QiICIkYWNfaW5jbHVkZXNf
ZGVmYXVsdCIKaWYgdGVzdCAieCRhY19jdl9oYXZlX2RlY2xfZ2V0Y3dkIiA9IHh5ZXM7IHRoZW4g
OgogIGFjX2hhdmVfZGVjbD0xCmVsc2UKICBhY19oYXZlX2RlY2w9MApmaQoKY2F0ID4+Y29uZmRl
ZnMuaCA8PF9BQ0VPRgojZGVmaW5lIEhBVkVfREVDTF9HRVRDV0QgJGFjX2hhdmVfZGVjbApfQUNF
T0YKCgoKCgoKCgoKICA6CgoKCgoKCgoKCiAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IGNoZWNraW5nIGZvciBkX2lubyBtZW1iZXIgaW4gZGlyZWN0b3J5IHN0cnVj
dCIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIGZvciBkX2lubyBtZW1iZXIgaW4gZGlyZWN0b3J5
IHN0cnVjdC4uLiAiID4mNjsgfQppZiAke2dsX2N2X3N0cnVjdF9kaXJlbnRfZF9pbm8rOn0gZmFs
c2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKICBpZiB0ZXN0ICIk
Y3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CiAgY2FzZSAiJGhvc3Rfb3MiIGluCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMgR3Vlc3MgeWVzIG9uIGdsaWJjIHN5c3RlbXMgd2l0aCBM
aW51eCBrZXJuZWwuCiAgICAgICAgICAgICAgbGludXgqLWdudSopIGdsX2N2X3N0cnVjdF9kaXJl
bnRfZF9pbm89Imd1ZXNzaW5nIHllcyIgOzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJ
ZiB3ZSBkb24ndCBrbm93LCBhc3N1bWUgdGhlIHdvcnN0LgogICAgICAgICAgICAgICopICAgICAg
ICAgICBnbF9jdl9zdHJ1Y3RfZGlyZW50X2RfaW5vPSJndWVzc2luZyBubyIgOzsKICAgICAgICAg
ICAgZXNhYwoKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19l
eHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAgICAgICAg
ICAgICAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICAgICAgICAgICAgICNpbmNsdWRlIDxkaXJlbnQu
aD4KCmludAptYWluICgpCnsKRElSICpkcCA9IG9wZW5kaXIgKCIuIik7CiAgICAgICAgICAgICBz
dHJ1Y3QgZGlyZW50ICplOwogICAgICAgICAgICAgc3RydWN0IHN0YXQgc3Q7CiAgICAgICAgICAg
ICBpZiAoISBkcCkKICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICBlID0gcmVh
ZGRpciAoZHApOwogICAgICAgICAgICAgaWYgKCEgZSkKICAgICAgICAgICAgICAgcmV0dXJuIDI7
CiAgICAgICAgICAgICBpZiAoc3RhdCAoZS0+ZF9uYW1lLCAmc3QpICE9IDApCiAgICAgICAgICAg
ICAgIHJldHVybiAzOwogICAgICAgICAgICAgaWYgKGUtPmRfaW5vICE9IHN0LnN0X2lubykKICAg
ICAgICAgICAgICAgcmV0dXJuIDQ7CiAgICAgICAgICAgICByZXR1cm4gMDsKCiAgOwogIHJldHVy
biAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKICBnbF9j
dl9zdHJ1Y3RfZGlyZW50X2RfaW5vPXllcwplbHNlCiAgZ2xfY3Zfc3RydWN0X2RpcmVudF9kX2lu
bz1ubwpmaQpybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0
IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCiAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFt
IGNvbmZ0ZXN0LiRhY19leHQKZmkKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogcmVzdWx0OiAkZ2xfY3Zfc3RydWN0X2RpcmVudF9kX2lubyIgPiY1CiRhc19lY2hv
ICIkZ2xfY3Zfc3RydWN0X2RpcmVudF9kX2lubyIgPiY2OyB9CiAgIGNhc2UgIiRnbF9jdl9zdHJ1
Y3RfZGlyZW50X2RfaW5vIiBpbgogICAgICp5ZXMpCgokYXNfZWNobyAiI2RlZmluZSBEX0lOT19J
Tl9ESVJFTlQgMSIgPj5jb25mZGVmcy5oCgogICAgICAgOzsKICAgZXNhYwoKCgogICAgICBhY19m
bl9jX2NoZWNrX2RlY2wgIiRMSU5FTk8iICJnZXRsb2dpbl9yIiAiYWNfY3ZfaGF2ZV9kZWNsX2dl
dGxvZ2luX3IiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKaWYgdGVzdCAieCRhY19jdl9oYXZlX2Rl
Y2xfZ2V0bG9naW5fciIgPSB4eWVzOyB0aGVuIDoKICBhY19oYXZlX2RlY2w9MQplbHNlCiAgYWNf
aGF2ZV9kZWNsPTAKZmkKCmNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBIQVZFX0RF
Q0xfR0VUTE9HSU5fUiAkYWNfaGF2ZV9kZWNsCl9BQ0VPRgoKCgoKCgoKCiAgICAgIGFjX2ZuX2Nf
Y2hlY2tfZGVjbCAiJExJTkVOTyIgImdldGxvZ2luIiAiYWNfY3ZfaGF2ZV9kZWNsX2dldGxvZ2lu
IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCmlmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX2dldGxv
Z2luIiA9IHh5ZXM7IHRoZW4gOgogIGFjX2hhdmVfZGVjbD0xCmVsc2UKICBhY19oYXZlX2RlY2w9
MApmaQoKY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5lIEhBVkVfREVDTF9HRVRMT0dJ
TiAkYWNfaGF2ZV9kZWNsCl9BQ0VPRgoKCgoKCgoKCgoKCgoKCgoKCiAgOgoKCgoKCgoKCiAgICAg
aWYgdGVzdCAkZ2xfY3ZfaGF2ZV9pbmNsdWRlX25leHQgPSB5ZXM7IHRoZW4KICAgICAgIGdsX2N2
X25leHRfZ2V0b3B0X2g9JzwnZ2V0b3B0LmgnPicKICAgICBlbHNlCiAgICAgICB7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGFic29sdXRlIG5hbWUgb2Yg
PGdldG9wdC5oPiIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIGFic29sdXRlIG5hbWUgb2YgPGdl
dG9wdC5oPi4uLiAiID4mNjsgfQppZiAke2dsX2N2X25leHRfZ2V0b3B0X2grOn0gZmFsc2U7IHRo
ZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKCiAgICAgICAgICAgICBpZiB0
ZXN0ICRhY19jdl9oZWFkZXJfZ2V0b3B0X2ggPSB5ZXM7IHRoZW4KCgogICAgICAgICAgICAgICBj
YXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVm
cy5oLiAgKi8KI2luY2x1ZGUgPGdldG9wdC5oPgoKX0FDRU9GCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIiRob3N0X29z
IiBpbgogICAgICAgICAgICAgICAgIGFpeCopIGdsX2Fic25hbWVfY3BwPSIkYWNfY3BwIC1DIiA7
OwogICAgICAgICAgICAgICAgICopICAgIGdsX2Fic25hbWVfY3BwPSIkYWNfY3BwIiA7OwogICAg
ICAgICAgICAgICBlc2FjCgogICAgICAgICAgICAgICBjYXNlICIkaG9zdF9vcyIgaW4KICAgICAg
ICAgICAgICAgICBtaW5ndyopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9kaXJzZXBfcmVnZXg9J1sv
XFxdJwogICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAqKQogICAgICAgICAg
ICAgICAgICAgZ2xfZGlyc2VwX3JlZ2V4PSdcLycKICAgICAgICAgICAgICAgICAgIDs7CiAgICAg
ICAgICAgICAgIGVzYWMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2xfbWFrZV9saXRlcmFsX3JlZ2V4X3NlZD0ncyxbXSReXFwuKi9bXSxcXCYsZycKCiAgICAg
ICAgICAgICAgIGdsX2hlYWRlcl9saXRlcmFsX3JlZ2V4PWBlY2hvICdnZXRvcHQuaCcgXAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZWQgLWUgIiRnbF9tYWtlX2xp
dGVyYWxfcmVnZXhfc2VkImAKICAgICAgICAgICAgICAgZ2xfYWJzb2x1dGVfaGVhZGVyX3NlZD0i
LyR7Z2xfZGlyc2VwX3JlZ2V4fSR7Z2xfaGVhZGVyX2xpdGVyYWxfcmVnZXh9LyInewogICAgICAg
ICAgICAgICAgICAgcy8uKiJcKC4qJyIke2dsX2RpcnNlcF9yZWdleH0ke2dsX2hlYWRlcl9saXRl
cmFsX3JlZ2V4fSInXCkiLiovXDEvCiAgICAgICAgICAgICAgICAgICBzfF4vW14vXXwvLyZ8CiAg
ICAgICAgICAgICAgICAgICBwCiAgICAgICAgICAgICAgICAgICBxCiAgICAgICAgICAgICAgICAg
fScKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2xfY3ZfbmV4dF9nZXRvcHRfaD0nIidgKGV2YWwgIiRnbF9hYnNuYW1lX2NwcCBjb25m
dGVzdC4kYWNfZXh0IikgMj4mNSB8CiAgICAgICAgICAgICAgICAgICAgICBzZWQgLW4gIiRnbF9h
YnNvbHV0ZV9oZWFkZXJfc2VkImAnIicKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgZ2xf
Y3ZfbmV4dF9nZXRvcHRfaD0nPCdnZXRvcHQuaCc+JwogICAgICAgICAgICAgZmkKCgpmaQp7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2X25leHRf
Z2V0b3B0X2giID4mNQokYXNfZWNobyAiJGdsX2N2X25leHRfZ2V0b3B0X2giID4mNjsgfQogICAg
IGZpCiAgICAgTkVYVF9HRVRPUFRfSD0kZ2xfY3ZfbmV4dF9nZXRvcHRfaAoKICAgICBpZiB0ZXN0
ICRnbF9jdl9oYXZlX2luY2x1ZGVfbmV4dCA9IHllcyB8fCB0ZXN0ICRnbF9jdl9oYXZlX2luY2x1
ZGVfbmV4dCA9IGJ1Z2d5OyB0aGVuCiAgICAgICAjIElOQ0xVREVfTkVYVF9BU19GSVJTVF9ESVJF
Q1RJVkU9J2luY2x1ZGVfbmV4dCcKICAgICAgIGdsX25leHRfYXNfZmlyc3RfZGlyZWN0aXZlPSc8
J2dldG9wdC5oJz4nCiAgICAgZWxzZQogICAgICAgIyBJTkNMVURFX05FWFRfQVNfRklSU1RfRElS
RUNUSVZFPSdpbmNsdWRlJwogICAgICAgZ2xfbmV4dF9hc19maXJzdF9kaXJlY3RpdmU9JGdsX2N2
X25leHRfZ2V0b3B0X2gKICAgICBmaQogICAgIE5FWFRfQVNfRklSU1RfRElSRUNUSVZFX0dFVE9Q
VF9IPSRnbF9uZXh0X2FzX2ZpcnN0X2RpcmVjdGl2ZQoKCgoKICBpZiB0ZXN0ICRhY19jdl9oZWFk
ZXJfZ2V0b3B0X2ggPSB5ZXM7IHRoZW4KICAgIEhBVkVfR0VUT1BUX0g9MQogIGVsc2UKICAgIEhB
VkVfR0VUT1BUX0g9MAogIGZpCgoKICBnbF9yZXBsYWNlX2dldG9wdD0KCiAgICBpZiB0ZXN0IC16
ICIkZ2xfcmVwbGFjZV9nZXRvcHQiICYmIHRlc3QgJGdsX2dldG9wdF9yZXF1aXJlZCA9IEdOVTsg
dGhlbgogICAgZm9yIGFjX2hlYWRlciBpbiBnZXRvcHQuaApkbyA6CiAgYWNfZm5fY19jaGVja19o
ZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgImdldG9wdC5oIiAiYWNfY3ZfaGVhZGVyX2dldG9wdF9o
IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCmlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX2dldG9wdF9o
IiA9IHh5ZXM7IHRoZW4gOgogIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBIQVZF
X0dFVE9QVF9IIDEKX0FDRU9GCgplbHNlCiAgZ2xfcmVwbGFjZV9nZXRvcHQ9eWVzCmZpCgpkb25l
CgogIGZpCgogICAgaWYgdGVzdCAteiAiJGdsX3JlcGxhY2VfZ2V0b3B0IiAmJiB0ZXN0ICRnbF9n
ZXRvcHRfcmVxdWlyZWQgPSBHTlU7IHRoZW4KICAgIGZvciBhY19mdW5jIGluIGdldG9wdF9sb25n
X29ubHkKZG8gOgogIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImdldG9wdF9sb25nX29u
bHkiICJhY19jdl9mdW5jX2dldG9wdF9sb25nX29ubHkiCmlmIHRlc3QgIngkYWNfY3ZfZnVuY19n
ZXRvcHRfbG9uZ19vbmx5IiA9IHh5ZXM7IHRoZW4gOgogIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNF
T0YKI2RlZmluZSBIQVZFX0dFVE9QVF9MT05HX09OTFkgMQpfQUNFT0YKCmVsc2UKICBnbF9yZXBs
YWNlX2dldG9wdD15ZXMKZmkKZG9uZQoKICBmaQoKICAgICAgICAgIGlmIHRlc3QgLXogIiRnbF9y
ZXBsYWNlX2dldG9wdCI7IHRoZW4KICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogY2hlY2tpbmcgd2hldGhlciBnZXRvcHQgaXMgUE9TSVggY29tcGF0aWJsZSIgPiY1
CiRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgZ2V0b3B0IGlzIFBPU0lYIGNvbXBhdGlibGUu
Li4gIiA+JjY7IH0KaWYgJHtnbF9jdl9mdW5jX2dldG9wdF9wb3NpeCs6fSBmYWxzZTsgdGhlbiA6
CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAkY3Jvc3NfY29tcGlsaW5nID0gbm87
IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBp
bGluZyIgPSB5ZXM7IHRoZW4gOgogIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQokYXNfZWNobyAiJGFzX21lOiBlcnJv
cjogaW4gXGAkYWNfcHdkJzoiID4mMjt9CmFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgcnVuIHRlc3Qg
cHJvZ3JhbSB3aGlsZSBjcm9zcyBjb21waWxpbmcKU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUg
ZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0Yg
PmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwoKI2luY2x1ZGUgPHVuaXN0
ZC5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCmludAptYWluICgp
CnsKICBzdGF0aWMgY2hhciBwcm9ncmFtW10gPSAicHJvZ3JhbSI7CiAgc3RhdGljIGNoYXIgYVtd
ID0gIi1hIjsKICBzdGF0aWMgY2hhciBmb29bXSA9ICJmb28iOwogIHN0YXRpYyBjaGFyIGJhcltd
ID0gImJhciI7CiAgY2hhciAqYXJndltdID0geyBwcm9ncmFtLCBhLCBmb28sIGJhciwgTlVMTCB9
OwogIGludCBjOwoKICBjID0gZ2V0b3B0ICg0LCBhcmd2LCAiYWIiKTsKICBpZiAoIShjID09ICdh
JykpCiAgICByZXR1cm4gMTsKICBjID0gZ2V0b3B0ICg0LCBhcmd2LCAiYWIiKTsKICBpZiAoIShj
ID09IC0xKSkKICAgIHJldHVybiAyOwogIGlmICghKG9wdGluZCA9PSAyKSkKICAgIHJldHVybiAz
OwogIHJldHVybiAwOwp9CgpfQUNFT0YKaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhl
biA6CiAgZ2xfY3ZfZnVuY19nZXRvcHRfcG9zaXg9bWF5YmUKZWxzZQogIGdsX2N2X2Z1bmNfZ2V0
b3B0X3Bvc2l4PW5vCmZpCnJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91
dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0
ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dApmaQoKICAgICAgICAgIGlmIHRlc3QgJGdsX2N2X2Z1
bmNfZ2V0b3B0X3Bvc2l4ID0gbWF5YmU7IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgogIHsgeyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdk
JzoiID4mNQokYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9CmFz
X2ZuX2Vycm9yICQ/ICJjYW5ub3QgcnVuIHRlc3QgcHJvZ3JhbSB3aGlsZSBjcm9zcyBjb21waWxp
bmcKU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KZWxz
ZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNv
bmZkZWZzLmguICAqLwoKI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNp
bmNsdWRlIDxzdHJpbmcuaD4KCmludAptYWluICgpCnsKICBzdGF0aWMgY2hhciBwcm9ncmFtW10g
PSAicHJvZ3JhbSI7CiAgc3RhdGljIGNoYXIgZG9uYWxkW10gPSAiZG9uYWxkIjsKICBzdGF0aWMg
Y2hhciBwW10gPSAiLXAiOwogIHN0YXRpYyBjaGFyIGJpbGx5W10gPSAiYmlsbHkiOwogIHN0YXRp
YyBjaGFyIGR1Y2tbXSA9ICJkdWNrIjsKICBzdGF0aWMgY2hhciBhW10gPSAiLWEiOwogIHN0YXRp
YyBjaGFyIGJhcltdID0gImJhciI7CiAgY2hhciAqYXJndltdID0geyBwcm9ncmFtLCBkb25hbGQs
IHAsIGJpbGx5LCBkdWNrLCBhLCBiYXIsIE5VTEwgfTsKICBpbnQgYzsKCiAgYyA9IGdldG9wdCAo
NywgYXJndiwgIithYnA6cToiKTsKICBpZiAoIShjID09IC0xKSkKICAgIHJldHVybiA0OwogIGlm
ICghKHN0cmNtcCAoYXJndlswXSwgInByb2dyYW0iKSA9PSAwKSkKICAgIHJldHVybiA1OwogIGlm
ICghKHN0cmNtcCAoYXJndlsxXSwgImRvbmFsZCIpID09IDApKQogICAgcmV0dXJuIDY7CiAgaWYg
KCEoc3RyY21wIChhcmd2WzJdLCAiLXAiKSA9PSAwKSkKICAgIHJldHVybiA3OwogIGlmICghKHN0
cmNtcCAoYXJndlszXSwgImJpbGx5IikgPT0gMCkpCiAgICByZXR1cm4gODsKICBpZiAoIShzdHJj
bXAgKGFyZ3ZbNF0sICJkdWNrIikgPT0gMCkpCiAgICByZXR1cm4gOTsKICBpZiAoIShzdHJjbXAg
KGFyZ3ZbNV0sICItYSIpID09IDApKQogICAgcmV0dXJuIDEwOwogIGlmICghKHN0cmNtcCAoYXJn
dls2XSwgImJhciIpID09IDApKQogICAgcmV0dXJuIDExOwogIGlmICghKG9wdGluZCA9PSAxKSkK
ICAgIHJldHVybiAxMjsKICByZXR1cm4gMDsKfQoKX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X3J1biAi
JExJTkVOTyI7IHRoZW4gOgogIGdsX2N2X2Z1bmNfZ2V0b3B0X3Bvc2l4PW1heWJlCmVsc2UKICBn
bF9jdl9mdW5jX2dldG9wdF9wb3NpeD1ubwpmaQpybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0
ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCiAgY29uZnRlc3QuJGFj
X29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKZmkKCiAgICAgICAgICBmaQog
ICAgICAgICAgaWYgdGVzdCAkZ2xfY3ZfZnVuY19nZXRvcHRfcG9zaXggPSBtYXliZTsgdGhlbgog
ICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsg
dGhlbiA6CiAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9y
OiBpbiBcYCRhY19wd2QnOiIgPiY1CiRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19w
d2QnOiIgPiYyO30KYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBydW4gdGVzdCBwcm9ncmFtIHdoaWxl
IGNyb3NzIGNvbXBpbGluZwpTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJ
TkVOTyIgNTsgfQplbHNlCiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFj
X2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCgojaW5jbHVkZSA8dW5pc3RkLmg+CiNpbmNsdWRl
IDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKaW50Cm1haW4gKCkKewogIHN0YXRpYyBj
aGFyIHByb2dyYW1bXSA9ICJwcm9ncmFtIjsKICBzdGF0aWMgY2hhciBhYltdID0gIi1hYiI7CiAg
Y2hhciAqYXJndlszXSA9IHsgcHJvZ3JhbSwgYWIsIE5VTEwgfTsKICBpZiAoZ2V0b3B0ICgyLCBh
cmd2LCAiYWI6IikgIT0gJ2EnKQogICAgcmV0dXJuIDEzOwogIGlmIChnZXRvcHQgKDIsIGFyZ3Ys
ICJhYjoiKSAhPSAnPycpCiAgICByZXR1cm4gMTQ7CiAgaWYgKG9wdG9wdCAhPSAnYicpCiAgICBy
ZXR1cm4gMTU7CiAgaWYgKG9wdGluZCAhPSAyKQogICAgcmV0dXJuIDE2OwogIHJldHVybiAwOwp9
CgpfQUNFT0YKaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CiAgZ2xfY3ZfZnVu
Y19nZXRvcHRfcG9zaXg9eWVzCmVsc2UKICBnbF9jdl9mdW5jX2dldG9wdF9wb3NpeD1ubwpmaQpy
bSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0
JGFjX2V4ZWV4dCBcCiAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0
LiRhY19leHQKZmkKCiAgICAgICAgICBmaQogICAgICAgIGVsc2UKICAgICAgICAgIGNhc2UgIiRo
b3N0X29zIiBpbgogICAgICAgICAgICBkYXJ3aW4qIHwgYWl4KiB8IG1pbmd3KikgZ2xfY3ZfZnVu
Y19nZXRvcHRfcG9zaXg9Imd1ZXNzaW5nIG5vIjs7CiAgICAgICAgICAgICopICAgICAgICAgICAg
ICAgICAgICAgICBnbF9jdl9mdW5jX2dldG9wdF9wb3NpeD0iZ3Vlc3NpbmcgeWVzIjs7CiAgICAg
ICAgICBlc2FjCiAgICAgICAgZmkKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfZnVuY19nZXRvcHRfcG9zaXgiID4mNQokYXNfZWNobyAi
JGdsX2N2X2Z1bmNfZ2V0b3B0X3Bvc2l4IiA+JjY7IH0KICAgIGNhc2UgIiRnbF9jdl9mdW5jX2dl
dG9wdF9wb3NpeCIgaW4KICAgICAgKm5vKSBnbF9yZXBsYWNlX2dldG9wdD15ZXMgOzsKICAgIGVz
YWMKICBmaQoKICBpZiB0ZXN0IC16ICIkZ2xfcmVwbGFjZV9nZXRvcHQiICYmIHRlc3QgJGdsX2dl
dG9wdF9yZXF1aXJlZCA9IEdOVTsgdGhlbgogICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igd29ya2luZyBHTlUgZ2V0b3B0IGZ1bmN0aW9uIiA+
JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgR05VIGdldG9wdCBmdW5jdGlvbi4u
LiAiID4mNjsgfQppZiAke2dsX2N2X2Z1bmNfZ2V0b3B0X2dudSs6fSBmYWxzZTsgdGhlbiA6CiAg
JGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQogICMgRXZlbiB3aXRoIFBPU0lYTFlfQ09S
UkVDVCwgdGhlIEdOVSBleHRlbnNpb24gb2YgbGVhZGluZyAnLScgaW4gdGhlCiAgICAgICAjIG9w
dHN0cmluZyBpcyBuZWNlc3NhcnkgZm9yIHByb2dyYW1zIGxpa2UgbTQgdGhhdCBoYXZlIFBPU0lY
LW1hbmRhdGVkCiAgICAgICAjIHNlbWFudGljcyBmb3Igc3VwcG9ydGluZyBvcHRpb25zIGludGVy
c3BlcnNlZCB3aXRoIGZpbGVzLgogICAgICAgIyBBbHNvLCBzaW5jZSBnZXRvcHRfbG9uZyBpcyBh
IEdOVSBleHRlbnNpb24sIHdlIHJlcXVpcmUgb3B0aW5kPTAuCiAgICAgICAjIEJhc2ggdGllcyAn
c2V0IC1vIHBvc2l4JyB0byBhIG5vbi1leHBvcnRlZCBQT1NJWExZX0NPUlJFQ1Q7CiAgICAgICAj
IHNvIHRha2UgY2FyZSB0byByZXZlcnQgdG8gdGhlIGNvcnJlY3QgKG5vbi0pZXhwb3J0IHN0YXRl
LgogICAgICAgZ2xfYXdrX3Byb2JlPSdCRUdJTiB7IGlmICgiUE9TSVhMWV9DT1JSRUNUIiBpbiBF
TlZJUk9OKSBwcmludCAieCIgfScKICAgICAgIGNhc2UgJHtQT1NJWExZX0NPUlJFQ1QreH1gJEFX
SyAiJGdsX2F3a19wcm9iZSIgPC9kZXYvbnVsbGAgaW4KICAgICAgICAgeHgpIGdsX2hhZF9QT1NJ
WExZX0NPUlJFQ1Q9ZXhwb3J0ZWQgOzsKICAgICAgICAgeCkgIGdsX2hhZF9QT1NJWExZX0NPUlJF
Q1Q9eWVzICAgICAgOzsKICAgICAgICAgKikgIGdsX2hhZF9QT1NJWExZX0NPUlJFQ1Q9ICAgICAg
ICAgOzsKICAgICAgIGVzYWMKICAgICAgIFBPU0lYTFlfQ09SUkVDVD0xCiAgICAgICBleHBvcnQg
UE9TSVhMWV9DT1JSRUNUCiAgICAgICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsg
dGhlbiA6CiAgICAgICAgICAgZ2xfY3ZfZnVuY19nZXRvcHRfZ251PSJndWVzc2luZyBubyIKCmVs
c2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBj
b25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPGdldG9wdC5oPgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAjaW5jbHVkZSA8c3RkZGVmLmg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICNpbmNs
dWRlIDxzdHJpbmcuaD4KCiNpbmNsdWRlIDxzdGRsaWIuaD4KI2lmIGRlZmluZWQgX19NQUNIX18g
JiYgZGVmaW5lZCBfX0FQUExFX18KLyogQXZvaWQgYSBjcmFzaCBvbiBNYWMgT1MgWC4gICovCiNp
bmNsdWRlIDxtYWNoL21hY2guaD4KI2luY2x1ZGUgPG1hY2gvbWFjaF9lcnJvci5oPgojaW5jbHVk
ZSA8bWFjaC90aHJlYWRfc3RhdHVzLmg+CiNpbmNsdWRlIDxtYWNoL2V4Y2VwdGlvbi5oPgojaW5j
bHVkZSA8bWFjaC90YXNrLmg+CiNpbmNsdWRlIDxwdGhyZWFkLmg+Ci8qIFRoZSBleGNlcHRpb24g
cG9ydCBvbiB3aGljaCBvdXIgdGhyZWFkIGxpc3RlbnMuICAqLwpzdGF0aWMgbWFjaF9wb3J0X3Qg
b3VyX2V4Y2VwdGlvbl9wb3J0OwovKiBUaGUgbWFpbiBmdW5jdGlvbiBvZiB0aGUgdGhyZWFkIGxp
c3RlbmluZyBmb3IgZXhjZXB0aW9ucyBvZiB0eXBlCiAgIEVYQ19CQURfQUNDRVNTLiAgKi8Kc3Rh
dGljIHZvaWQgKgptYWNoX2V4Y2VwdGlvbl90aHJlYWQgKHZvaWQgKmFyZykKewogIC8qIEJ1ZmZl
ciBmb3IgYSBtZXNzYWdlIHRvIGJlIHJlY2VpdmVkLiAgKi8KICBzdHJ1Y3QgewogICAgbWFjaF9t
c2dfaGVhZGVyX3QgaGVhZDsKICAgIG1hY2hfbXNnX2JvZHlfdCBtc2doX2JvZHk7CiAgICBjaGFy
IGRhdGFbMTAyNF07CiAgfSBtc2c7CiAgbWFjaF9tc2dfcmV0dXJuX3QgcmV0dmFsOwogIC8qIFdh
aXQgZm9yIGEgbWVzc2FnZSBvbiB0aGUgZXhjZXB0aW9uIHBvcnQuICAqLwogIHJldHZhbCA9IG1h
Y2hfbXNnICgmbXNnLmhlYWQsIE1BQ0hfUkNWX01TRyB8IE1BQ0hfUkNWX0xBUkdFLCAwLCBzaXpl
b2YgKG1zZyksCiAgICAgICAgICAgICAgICAgICAgIG91cl9leGNlcHRpb25fcG9ydCwgTUFDSF9N
U0dfVElNRU9VVF9OT05FLCBNQUNIX1BPUlRfTlVMTCk7CiAgaWYgKHJldHZhbCAhPSBNQUNIX01T
R19TVUNDRVNTKQogICAgYWJvcnQgKCk7CiAgZXhpdCAoMSk7Cn0Kc3RhdGljIHZvaWQKbm9jcmFz
aF9pbml0ICh2b2lkKQp7CiAgbWFjaF9wb3J0X3Qgc2VsZiA9IG1hY2hfdGFza19zZWxmICgpOwog
IC8qIEFsbG9jYXRlIGEgcG9ydCBvbiB3aGljaCB0aGUgdGhyZWFkIHNoYWxsIGxpc3RlbiBmb3Ig
ZXhjZXB0aW9ucy4gICovCiAgaWYgKG1hY2hfcG9ydF9hbGxvY2F0ZSAoc2VsZiwgTUFDSF9QT1JU
X1JJR0hUX1JFQ0VJVkUsICZvdXJfZXhjZXB0aW9uX3BvcnQpCiAgICAgID09IEtFUk5fU1VDQ0VT
UykgewogICAgLyogU2VlIGh0dHA6Ly93ZWIubWl0LmVkdS9kYXJ3aW4vc3JjL21vZHVsZXMveG51
L29zZm1rL21hbi9tYWNoX3BvcnRfaW5zZXJ0X3JpZ2h0Lmh0bWwuICAqLwogICAgaWYgKG1hY2hf
cG9ydF9pbnNlcnRfcmlnaHQgKHNlbGYsIG91cl9leGNlcHRpb25fcG9ydCwgb3VyX2V4Y2VwdGlv
bl9wb3J0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BQ0hfTVNHX1RZUEVfTUFL
RV9TRU5EKQogICAgICAgID09IEtFUk5fU1VDQ0VTUykgewogICAgICAvKiBUaGUgZXhjZXB0aW9u
cyB3ZSB3YW50IHRvIGNhdGNoLiAgT25seSBFWENfQkFEX0FDQ0VTUyBpcyBpbnRlcmVzdGluZwog
ICAgICAgICBmb3IgdXMuICAqLwogICAgICBleGNlcHRpb25fbWFza190IG1hc2sgPSBFWENfTUFT
S19CQURfQUNDRVNTOwogICAgICAvKiBDcmVhdGUgdGhlIHRocmVhZCBsaXN0ZW5pbmcgb24gdGhl
IGV4Y2VwdGlvbiBwb3J0LiAgKi8KICAgICAgcHRocmVhZF9hdHRyX3QgYXR0cjsKICAgICAgcHRo
cmVhZF90IHRocmVhZDsKICAgICAgaWYgKHB0aHJlYWRfYXR0cl9pbml0ICgmYXR0cikgPT0gMAog
ICAgICAgICAgJiYgcHRocmVhZF9hdHRyX3NldGRldGFjaHN0YXRlICgmYXR0ciwgUFRIUkVBRF9D
UkVBVEVfREVUQUNIRUQpID09IDAKICAgICAgICAgICYmIHB0aHJlYWRfY3JlYXRlICgmdGhyZWFk
LCAmYXR0ciwgbWFjaF9leGNlcHRpb25fdGhyZWFkLCBOVUxMKSA9PSAwKSB7CiAgICAgICAgcHRo
cmVhZF9hdHRyX2Rlc3Ryb3kgKCZhdHRyKTsKICAgICAgICAvKiBSZXBsYWNlIHRoZSBleGNlcHRp
b24gcG9ydCBpbmZvIGZvciB0aGVzZSBleGNlcHRpb25zIHdpdGggb3VyIG93bi4KICAgICAgICAg
ICBOb3RlIHRoYXQgd2UgcmVwbGFjZSB0aGUgZXhjZXB0aW9uIHBvcnQgZm9yIHRoZSBlbnRpcmUg
dGFzaywgbm90IG9ubHkKICAgICAgICAgICBmb3IgYSBwYXJ0aWN1bGFyIHRocmVhZC4gIFRoaXMg
aGFzIHRoZSBlZmZlY3QgdGhhdCB3aGVuIG91ciBleGNlcHRpb24KICAgICAgICAgICBwb3J0IGdl
dHMgdGhlIG1lc3NhZ2UsIHRoZSB0aHJlYWQgc3BlY2lmaWMgZXhjZXB0aW9uIHBvcnQgaGFzIGFs
cmVhZHkKICAgICAgICAgICBiZWVuIGFza2VkLCBhbmQgd2UgZG9uJ3QgbmVlZCB0byBib3RoZXIg
YWJvdXQgaXQuCiAgICAgICAgICAgU2VlIGh0dHA6Ly93ZWIubWl0LmVkdS9kYXJ3aW4vc3JjL21v
ZHVsZXMveG51L29zZm1rL21hbi90YXNrX3NldF9leGNlcHRpb25fcG9ydHMuaHRtbC4gICovCiAg
ICAgICAgdGFza19zZXRfZXhjZXB0aW9uX3BvcnRzIChzZWxmLCBtYXNrLCBvdXJfZXhjZXB0aW9u
X3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWENFUFRJT05fREVGQVVM
VCwgTUFDSElORV9USFJFQURfU1RBVEUpOwogICAgICB9CiAgICB9CiAgfQp9CiNlbGlmIChkZWZp
bmVkIF9XSU4zMiB8fCBkZWZpbmVkIF9fV0lOMzJfXykgJiYgISBkZWZpbmVkIF9fQ1lHV0lOX18K
LyogQXZvaWQgYSBjcmFzaCBvbiBuYXRpdmUgV2luZG93cy4gICovCiNkZWZpbmUgV0lOMzJfTEVB
Tl9BTkRfTUVBTgojaW5jbHVkZSA8d2luZG93cy5oPgojaW5jbHVkZSA8d2luZXJyb3IuaD4Kc3Rh
dGljIExPTkcgV0lOQVBJCmV4Y2VwdGlvbl9maWx0ZXIgKEVYQ0VQVElPTl9QT0lOVEVSUyAqRXhj
ZXB0aW9uSW5mbykKewogIHN3aXRjaCAoRXhjZXB0aW9uSW5mby0+RXhjZXB0aW9uUmVjb3JkLT5F
eGNlcHRpb25Db2RlKQogICAgewogICAgY2FzZSBFWENFUFRJT05fQUNDRVNTX1ZJT0xBVElPTjoK
ICAgIGNhc2UgRVhDRVBUSU9OX0lOX1BBR0VfRVJST1I6CiAgICBjYXNlIEVYQ0VQVElPTl9TVEFD
S19PVkVSRkxPVzoKICAgIGNhc2UgRVhDRVBUSU9OX0dVQVJEX1BBR0U6CiAgICBjYXNlIEVYQ0VQ
VElPTl9QUklWX0lOU1RSVUNUSU9OOgogICAgY2FzZSBFWENFUFRJT05fSUxMRUdBTF9JTlNUUlVD
VElPTjoKICAgIGNhc2UgRVhDRVBUSU9OX0RBVEFUWVBFX01JU0FMSUdOTUVOVDoKICAgIGNhc2Ug
RVhDRVBUSU9OX0FSUkFZX0JPVU5EU19FWENFRURFRDoKICAgIGNhc2UgRVhDRVBUSU9OX05PTkNP
TlRJTlVBQkxFX0VYQ0VQVElPTjoKICAgICAgZXhpdCAoMSk7CiAgICB9CiAgcmV0dXJuIEVYQ0VQ
VElPTl9DT05USU5VRV9TRUFSQ0g7Cn0Kc3RhdGljIHZvaWQKbm9jcmFzaF9pbml0ICh2b2lkKQp7
CiAgU2V0VW5oYW5kbGVkRXhjZXB0aW9uRmlsdGVyICgoTFBUT1BfTEVWRUxfRVhDRVBUSU9OX0ZJ
TFRFUikgZXhjZXB0aW9uX2ZpbHRlcik7Cn0KI2Vsc2UKLyogQXZvaWQgYSBjcmFzaCBvbiBQT1NJ
WCBzeXN0ZW1zLiAgKi8KI2luY2x1ZGUgPHNpZ25hbC5oPgovKiBBIFBPU0lYIHNpZ25hbCBoYW5k
bGVyLiAgKi8Kc3RhdGljIHZvaWQKZXhjZXB0aW9uX2hhbmRsZXIgKGludCBzaWcpCnsKICBleGl0
ICgxKTsKfQpzdGF0aWMgdm9pZApub2NyYXNoX2luaXQgKHZvaWQpCnsKI2lmZGVmIFNJR1NFR1YK
ICBzaWduYWwgKFNJR1NFR1YsIGV4Y2VwdGlvbl9oYW5kbGVyKTsKI2VuZGlmCiNpZmRlZiBTSUdC
VVMKICBzaWduYWwgKFNJR0JVUywgZXhjZXB0aW9uX2hhbmRsZXIpOwojZW5kaWYKfQojZW5kaWYK
CgppbnQKbWFpbiAoKQp7CgogICAgICAgICAgICAgaW50IHJlc3VsdCA9IDA7CgogICAgICAgICAg
ICAgbm9jcmFzaF9pbml0KCk7CgogICAgICAgICAgICAgLyogVGhpcyBjb2RlIHN1Y2NlZWRzIG9u
IGdsaWJjIDIuOCwgT3BlbkJTRCA0LjAsIEN5Z3dpbiwgbWluZ3csCiAgICAgICAgICAgICAgICBh
bmQgZmFpbHMgb24gTWFjIE9TIFggMTAuNSwgQUlYIDUuMiwgSFAtVVggMTEsIElSSVggNi41LAog
ICAgICAgICAgICAgICAgT1NGLzEgNS4xLCBTb2xhcmlzIDEwLiAgKi8KICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgc3RhdGljIGNoYXIgY29uZnRlc3RbXSA9ICJjb25mdGVzdCI7CiAgICAg
ICAgICAgICAgIHN0YXRpYyBjaGFyIHBsdXNbXSA9ICItKyI7CiAgICAgICAgICAgICAgIGNoYXIg
KmFyZ3ZbM10gPSB7IGNvbmZ0ZXN0LCBwbHVzLCBOVUxMIH07CiAgICAgICAgICAgICAgIG9wdGVy
ciA9IDA7CiAgICAgICAgICAgICAgIGlmIChnZXRvcHQgKDIsIGFyZ3YsICIrYSIpICE9ICc/JykK
ICAgICAgICAgICAgICAgICByZXN1bHQgfD0gMTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IC8qIFRoaXMgY29kZSBzdWNjZWVkcyBvbiBnbGliYyAyLjgsIG1pbmd3LAogICAgICAgICAgICAg
ICAgYW5kIGZhaWxzIG9uIE1hYyBPUyBYIDEwLjUsIE9wZW5CU0QgNC4wLCBBSVggNS4yLCBIUC1V
WCAxMSwKICAgICAgICAgICAgICAgIElSSVggNi41LCBPU0YvMSA1LjEsIFNvbGFyaXMgMTAsIEN5
Z3dpbiAxLjUueC4gICovCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgIHN0YXRpYyBjaGFy
IHByb2dyYW1bXSA9ICJwcm9ncmFtIjsKICAgICAgICAgICAgICAgc3RhdGljIGNoYXIgcFtdID0g
Ii1wIjsKICAgICAgICAgICAgICAgc3RhdGljIGNoYXIgZm9vW10gPSAiZm9vIjsKICAgICAgICAg
ICAgICAgc3RhdGljIGNoYXIgYmFyW10gPSAiYmFyIjsKICAgICAgICAgICAgICAgY2hhciAqYXJn
dltdID0geyBwcm9ncmFtLCBwLCBmb28sIGJhciwgTlVMTCB9OwoKICAgICAgICAgICAgICAgb3B0
aW5kID0gMTsKICAgICAgICAgICAgICAgaWYgKGdldG9wdCAoNCwgYXJndiwgInA6OiIpICE9ICdw
JykKICAgICAgICAgICAgICAgICByZXN1bHQgfD0gMjsKICAgICAgICAgICAgICAgZWxzZSBpZiAo
b3B0YXJnICE9IE5VTEwpCiAgICAgICAgICAgICAgICAgcmVzdWx0IHw9IDQ7CiAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGdldG9wdCAoNCwgYXJndiwgInA6OiIpICE9IC0xKQogICAgICAgICAgICAg
ICAgIHJlc3VsdCB8PSA2OwogICAgICAgICAgICAgICBlbHNlIGlmIChvcHRpbmQgIT0gMikKICAg
ICAgICAgICAgICAgICByZXN1bHQgfD0gODsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8q
IFRoaXMgY29kZSBzdWNjZWVkcyBvbiBnbGliYyAyLjggYW5kIGZhaWxzIG9uIEN5Z3dpbiAxLjcu
MC4gICovCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgIHN0YXRpYyBjaGFyIHByb2dyYW1b
XSA9ICJwcm9ncmFtIjsKICAgICAgICAgICAgICAgc3RhdGljIGNoYXIgZm9vW10gPSAiZm9vIjsK
ICAgICAgICAgICAgICAgc3RhdGljIGNoYXIgcFtdID0gIi1wIjsKICAgICAgICAgICAgICAgY2hh
ciAqYXJndltdID0geyBwcm9ncmFtLCBmb28sIHAsIE5VTEwgfTsKICAgICAgICAgICAgICAgb3B0
aW5kID0gMDsKICAgICAgICAgICAgICAgaWYgKGdldG9wdCAoMywgYXJndiwgIi1wIikgIT0gMSkK
ICAgICAgICAgICAgICAgICByZXN1bHQgfD0gMTY7CiAgICAgICAgICAgICAgIGVsc2UgaWYgKGdl
dG9wdCAoMywgYXJndiwgIi1wIikgIT0gJ3AnKQogICAgICAgICAgICAgICAgIHJlc3VsdCB8PSAx
NjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8qIFRoaXMgY29kZSBmYWlscyBvbiBnbGli
YyAyLjExLiAgKi8KICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgc3RhdGljIGNoYXIgcHJv
Z3JhbVtdID0gInByb2dyYW0iOwogICAgICAgICAgICAgICBzdGF0aWMgY2hhciBiW10gPSAiLWIi
OwogICAgICAgICAgICAgICBzdGF0aWMgY2hhciBhW10gPSAiLWEiOwogICAgICAgICAgICAgICBj
aGFyICphcmd2W10gPSB7IHByb2dyYW0sIGIsIGEsIE5VTEwgfTsKICAgICAgICAgICAgICAgb3B0
aW5kID0gb3B0ZXJyID0gMDsKICAgICAgICAgICAgICAgaWYgKGdldG9wdCAoMywgYXJndiwgIis6
YTpiIikgIT0gJ2InKQogICAgICAgICAgICAgICAgIHJlc3VsdCB8PSAzMjsKICAgICAgICAgICAg
ICAgZWxzZSBpZiAoZ2V0b3B0ICgzLCBhcmd2LCAiKzphOmIiKSAhPSAnOicpCiAgICAgICAgICAg
ICAgICAgcmVzdWx0IHw9IDMyOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogVGhpcyBj
b2RlIGR1bXBzIGNvcmUgb24gZ2xpYmMgMi4xNC4gICovCiAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgIHN0YXRpYyBjaGFyIHByb2dyYW1bXSA9ICJwcm9ncmFtIjsKICAgICAgICAgICAgICAg
c3RhdGljIGNoYXIgd1tdID0gIi1XIjsKICAgICAgICAgICAgICAgc3RhdGljIGNoYXIgZHVtbXlb
XSA9ICJkdW1teSI7CiAgICAgICAgICAgICAgIGNoYXIgKmFyZ3ZbXSA9IHsgcHJvZ3JhbSwgdywg
ZHVtbXksIE5VTEwgfTsKICAgICAgICAgICAgICAgb3B0aW5kID0gb3B0ZXJyID0gMTsKICAgICAg
ICAgICAgICAgaWYgKGdldG9wdCAoMywgYXJndiwgIlc7IikgIT0gJ1cnKQogICAgICAgICAgICAg
ICAgIHJlc3VsdCB8PSA2NDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CgogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5P
IjsgdGhlbiA6CiAgZ2xfY3ZfZnVuY19nZXRvcHRfZ251PXllcwplbHNlCiAgZ2xfY3ZfZnVuY19n
ZXRvcHRfZ251PW5vCmZpCnJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91
dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0
ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dApmaQoKICAgICAgIGNhc2UgJGdsX2hhZF9QT1NJWExZ
X0NPUlJFQ1QgaW4KICAgICAgICAgZXhwb3J0ZWQpIDs7CiAgICAgICAgIHllcykgeyBQT1NJWExZ
X0NPUlJFQ1Q9OyB1bnNldCBQT1NJWExZX0NPUlJFQ1Q7fTsgUE9TSVhMWV9DT1JSRUNUPTEgOzsK
ICAgICAgICAgKikgeyBQT1NJWExZX0NPUlJFQ1Q9OyB1bnNldCBQT1NJWExZX0NPUlJFQ1Q7fSA7
OwogICAgICAgZXNhYwoKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiByZXN1bHQ6ICRnbF9jdl9mdW5jX2dldG9wdF9nbnUiID4mNQokYXNfZWNobyAiJGdsX2N2X2Z1
bmNfZ2V0b3B0X2dudSIgPiY2OyB9CiAgICBpZiB0ZXN0ICIkZ2xfY3ZfZnVuY19nZXRvcHRfZ251
IiAhPSB5ZXM7IHRoZW4KICAgICAgZ2xfcmVwbGFjZV9nZXRvcHQ9eWVzCiAgICBlbHNlCiAgICAg
IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHdv
cmtpbmcgR05VIGdldG9wdF9sb25nIGZ1bmN0aW9uIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcg
Zm9yIHdvcmtpbmcgR05VIGdldG9wdF9sb25nIGZ1bmN0aW9uLi4uICIgPiY2OyB9CmlmICR7Z2xf
Y3ZfZnVuY19nZXRvcHRfbG9uZ19nbnUrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihj
YWNoZWQpICIgPiY2CmVsc2UKICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhl
biA6CiAgICAgICAgICAgICAgY2FzZSAiJGhvc3Rfb3MiIGluCiAgICAgICAgICAgICAgb3BlbmJz
ZCopIGdsX2N2X2Z1bmNfZ2V0b3B0X2xvbmdfZ251PSJndWVzc2luZyBubyI7OwogICAgICAgICAg
ICAgICopICAgICAgICBnbF9jdl9mdW5jX2dldG9wdF9sb25nX2dudT0iZ3Vlc3NpbmcgeWVzIjs7
CiAgICAgICAgICAgIGVzYWMKCmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25m
dGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPGdldG9wdC5oPgog
ICAgICAgICAgICAgICAgI2luY2x1ZGUgPHN0ZGRlZi5oPgogICAgICAgICAgICAgICAgI2luY2x1
ZGUgPHN0cmluZy5oPgoKaW50Cm1haW4gKCkKewpzdGF0aWMgY29uc3Qgc3RydWN0IG9wdGlvbiBs
b25nX29wdGlvbnNbXSA9CiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB7
ICJ4dHJlbWVseS0iLG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAxMDAzIH0sCiAgICAgICAgICAg
ICAgICAgICAgeyAieHRyYSIsICAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgMTAwMSB9LAog
ICAgICAgICAgICAgICAgICAgIHsgInh0cmVtZSIsICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEws
IDEwMDIgfSwKICAgICAgICAgICAgICAgICAgICB7ICJ4dHJlbWVseSIsIG5vX2FyZ3VtZW50LCAg
ICAgICBOVUxMLCAxMDAzIH0sCiAgICAgICAgICAgICAgICAgICAgeyBOVUxMLCAgICAgICAwLCAg
ICAgICAgICAgICAgICAgTlVMTCwgMCB9CiAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAg
ICAgICAvKiBUaGlzIGNvZGUgZmFpbHMgb24gT3BlbkJTRCA1LjAuICAqLwogICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICBzdGF0aWMgY2hhciBwcm9ncmFtW10gPSAicHJvZ3JhbSI7
CiAgICAgICAgICAgICAgICAgIHN0YXRpYyBjaGFyIHh0cmVtZWxbXSA9ICItLXh0cmVtZWwiOwog
ICAgICAgICAgICAgICAgICBjaGFyICphcmd2W10gPSB7IHByb2dyYW0sIHh0cmVtZWwsIE5VTEwg
fTsKICAgICAgICAgICAgICAgICAgaW50IG9wdGlvbl9pbmRleDsKICAgICAgICAgICAgICAgICAg
b3B0aW5kID0gMTsgb3B0ZXJyID0gMDsKICAgICAgICAgICAgICAgICAgaWYgKGdldG9wdF9sb25n
ICgyLCBhcmd2LCAiIiwgbG9uZ19vcHRpb25zLCAmb3B0aW9uX2luZGV4KSAhPSAxMDAzKQogICAg
ICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgcmV0dXJuIDA7CgogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNfZm5fY190cnlfcnVu
ICIkTElORU5PIjsgdGhlbiA6CiAgZ2xfY3ZfZnVuY19nZXRvcHRfbG9uZ19nbnU9eWVzCmVsc2UK
ICBnbF9jdl9mdW5jX2dldG9wdF9sb25nX2dudT1ubwpmaQpybSAtZiBjb3JlICouY29yZSBjb3Jl
LmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCiAgY29uZnRl
c3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKZmkKCgpmaQp7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2X2Z1bmNf
Z2V0b3B0X2xvbmdfZ251IiA+JjUKJGFzX2VjaG8gIiRnbF9jdl9mdW5jX2dldG9wdF9sb25nX2du
dSIgPiY2OyB9CiAgICAgIGNhc2UgIiRnbF9jdl9mdW5jX2dldG9wdF9sb25nX2dudSIgaW4KICAg
ICAgICAqeWVzKSA7OwogICAgICAgICopIGdsX3JlcGxhY2VfZ2V0b3B0PXllcyA7OwogICAgICBl
c2FjCiAgICBmaQogIGZpCgoKCgoKCiAgICBSRVBMQUNFX0dFVE9QVD0wCiAgICBpZiB0ZXN0IC1u
ICIkZ2xfcmVwbGFjZV9nZXRvcHQiOyB0aGVuCiAgICAgIFJFUExBQ0VfR0VUT1BUPTEKICAgIGZp
CgogIGlmIHRlc3QgJFJFUExBQ0VfR0VUT1BUID0gMTsgdGhlbgoKICBHRVRPUFRfSD1nZXRvcHQu
aAoKJGFzX2VjaG8gIiNkZWZpbmUgX19HRVRPUFRfUFJFRklYIHJwbF8iID4+Y29uZmRlZnMuaAoK
CgogIGZpCgoKICAgICAgYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAiZ2V0ZW52IiAiYWNf
Y3ZfaGF2ZV9kZWNsX2dldGVudiIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgppZiB0ZXN0ICJ4JGFj
X2N2X2hhdmVfZGVjbF9nZXRlbnYiID0geHllczsgdGhlbiA6CiAgYWNfaGF2ZV9kZWNsPTEKZWxz
ZQogIGFjX2hhdmVfZGVjbD0wCmZpCgpjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUg
SEFWRV9ERUNMX0dFVEVOViAkYWNfaGF2ZV9kZWNsCl9BQ0VPRgoKCnsgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEMvQysrIHJlc3RyaWN0IGtleXdv
cmQiID4mNQokYXNfZWNob19uICJjaGVja2luZyBmb3IgQy9DKysgcmVzdHJpY3Qga2V5d29yZC4u
LiAiID4mNjsgfQppZiAke2FjX2N2X2NfcmVzdHJpY3QrOn0gZmFsc2U7IHRoZW4gOgogICRhc19l
Y2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKICBhY19jdl9jX3Jlc3RyaWN0PW5vCiAgICMgVGhl
IG9yZGVyIGhlcmUgY2F0ZXJzIHRvIHRoZSBmYWN0IHRoYXQgQysrIGRvZXMgbm90IHJlcXVpcmUg
cmVzdHJpY3QuCiAgIGZvciBhY19rdyBpbiBfX3Jlc3RyaWN0IF9fcmVzdHJpY3RfXyBfUmVzdHJp
Y3QgcmVzdHJpY3Q7IGRvCiAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3Qu
JGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCnR5cGVkZWYgaW50ICogaW50X3B0cjsKCWlu
dCBmb28gKGludF9wdHIgJGFjX2t3IGlwKSB7CglyZXR1cm4gaXBbMF07CiAgICAgICB9CmludApt
YWluICgpCnsKaW50IHNbMV07CglpbnQgKiAkYWNfa3cgdCA9IHM7Cgl0WzBdID0gMDsKCXJldHVy
biBmb28odCkKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUg
IiRMSU5FTk8iOyB0aGVuIDoKICBhY19jdl9jX3Jlc3RyaWN0PSRhY19rdwpmaQpybSAtZiBjb3Jl
IGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKICAgICB0
ZXN0ICIkYWNfY3ZfY19yZXN0cmljdCIgIT0gbm8gJiYgYnJlYWsKICAgZG9uZQoKZmkKeyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9jX3Jlc3Ry
aWN0IiA+JjUKJGFzX2VjaG8gIiRhY19jdl9jX3Jlc3RyaWN0IiA+JjY7IH0KCiBjYXNlICRhY19j
dl9jX3Jlc3RyaWN0IGluCiAgIHJlc3RyaWN0KSA7OwogICBubykgJGFzX2VjaG8gIiNkZWZpbmUg
cmVzdHJpY3QgLyoqLyIgPj5jb25mZGVmcy5oCiA7OwogICAqKSAgY2F0ID4+Y29uZmRlZnMuaCA8
PF9BQ0VPRgojZGVmaW5lIHJlc3RyaWN0ICRhY19jdl9jX3Jlc3RyaWN0Cl9BQ0VPRgogOzsKIGVz
YWMKCgogIEdOVUxJQl9HRVRUSU1FT0ZEQVk9MDsKICAgIEhBVkVfR0VUVElNRU9GREFZPTE7CiAg
SEFWRV9TVFJVQ1RfVElNRVZBTD0xOwogIEhBVkVfU1lTX1RJTUVfSD0xOwogIFJFUExBQ0VfR0VU
VElNRU9GREFZPTA7CiAgUkVQTEFDRV9TVFJVQ1RfVElNRVZBTD0wOwoKCgoKCgoKCgoKCgoKCgog
IDoKCgoKCgoKCgoKCgogIDoKCgoKCgoKCgogICAgIGlmIHRlc3QgJGdsX2N2X2hhdmVfaW5jbHVk
ZV9uZXh0ID0geWVzOyB0aGVuCiAgICAgICBnbF9jdl9uZXh0X3N5c190aW1lX2g9Jzwnc3lzL3Rp
bWUuaCc+JwogICAgIGVsc2UKICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogY2hlY2tpbmcgYWJzb2x1dGUgbmFtZSBvZiA8c3lzL3RpbWUuaD4iID4mNQokYXNf
ZWNob19uICJjaGVja2luZyBhYnNvbHV0ZSBuYW1lIG9mIDxzeXMvdGltZS5oPi4uLiAiID4mNjsg
fQppZiAke2dsX2N2X25leHRfc3lzX3RpbWVfaCs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9f
biAiKGNhY2hlZCkgIiA+JjYKZWxzZQoKICAgICAgICAgICAgIGlmIHRlc3QgJGFjX2N2X2hlYWRl
cl9zeXNfdGltZV9oID0geWVzOyB0aGVuCgoKICAgICAgICAgICAgICAgY2F0IGNvbmZkZWZzLmgg
LSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCiNpbmNs
dWRlIDxzeXMvdGltZS5oPgoKX0FDRU9GCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIiRob3N0X29zIiBpbgogICAgICAg
ICAgICAgICAgIGFpeCopIGdsX2Fic25hbWVfY3BwPSIkYWNfY3BwIC1DIiA7OwogICAgICAgICAg
ICAgICAgICopICAgIGdsX2Fic25hbWVfY3BwPSIkYWNfY3BwIiA7OwogICAgICAgICAgICAgICBl
c2FjCgogICAgICAgICAgICAgICBjYXNlICIkaG9zdF9vcyIgaW4KICAgICAgICAgICAgICAgICBt
aW5ndyopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9kaXJzZXBfcmVnZXg9J1svXFxdJwogICAgICAg
ICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAqKQogICAgICAgICAgICAgICAgICAgZ2xf
ZGlyc2VwX3JlZ2V4PSdcLycKICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgIGVz
YWMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfbWFrZV9s
aXRlcmFsX3JlZ2V4X3NlZD0ncyxbXSReXFwuKi9bXSxcXCYsZycKCiAgICAgICAgICAgICAgIGds
X2hlYWRlcl9saXRlcmFsX3JlZ2V4PWBlY2hvICdzeXMvdGltZS5oJyBcCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlZCAtZSAiJGdsX21ha2VfbGl0ZXJhbF9yZWdl
eF9zZWQiYAogICAgICAgICAgICAgICBnbF9hYnNvbHV0ZV9oZWFkZXJfc2VkPSIvJHtnbF9kaXJz
ZXBfcmVnZXh9JHtnbF9oZWFkZXJfbGl0ZXJhbF9yZWdleH0vIid7CiAgICAgICAgICAgICAgICAg
ICBzLy4qIlwoLionIiR7Z2xfZGlyc2VwX3JlZ2V4fSR7Z2xfaGVhZGVyX2xpdGVyYWxfcmVnZXh9
IidcKSIuKi9cMS8KICAgICAgICAgICAgICAgICAgIHN8Xi9bXi9dfC8vJnwKICAgICAgICAgICAg
ICAgICAgIHAKICAgICAgICAgICAgICAgICAgIHEKICAgICAgICAgICAgICAgICB9JwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9j
dl9uZXh0X3N5c190aW1lX2g9JyInYChldmFsICIkZ2xfYWJzbmFtZV9jcHAgY29uZnRlc3QuJGFj
X2V4dCIpIDI+JjUgfAogICAgICAgICAgICAgICAgICAgICAgc2VkIC1uICIkZ2xfYWJzb2x1dGVf
aGVhZGVyX3NlZCJgJyInCiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgIGdsX2N2X25leHRf
c3lzX3RpbWVfaD0nPCdzeXMvdGltZS5oJz4nCiAgICAgICAgICAgICBmaQoKCmZpCnsgJGFzX2Vj
aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfbmV4dF9zeXNf
dGltZV9oIiA+JjUKJGFzX2VjaG8gIiRnbF9jdl9uZXh0X3N5c190aW1lX2giID4mNjsgfQogICAg
IGZpCiAgICAgTkVYVF9TWVNfVElNRV9IPSRnbF9jdl9uZXh0X3N5c190aW1lX2gKCiAgICAgaWYg
dGVzdCAkZ2xfY3ZfaGF2ZV9pbmNsdWRlX25leHQgPSB5ZXMgfHwgdGVzdCAkZ2xfY3ZfaGF2ZV9p
bmNsdWRlX25leHQgPSBidWdneTsgdGhlbgogICAgICAgIyBJTkNMVURFX05FWFRfQVNfRklSU1Rf
RElSRUNUSVZFPSdpbmNsdWRlX25leHQnCiAgICAgICBnbF9uZXh0X2FzX2ZpcnN0X2RpcmVjdGl2
ZT0nPCdzeXMvdGltZS5oJz4nCiAgICAgZWxzZQogICAgICAgIyBJTkNMVURFX05FWFRfQVNfRklS
U1RfRElSRUNUSVZFPSdpbmNsdWRlJwogICAgICAgZ2xfbmV4dF9hc19maXJzdF9kaXJlY3RpdmU9
JGdsX2N2X25leHRfc3lzX3RpbWVfaAogICAgIGZpCiAgICAgTkVYVF9BU19GSVJTVF9ESVJFQ1RJ
VkVfU1lTX1RJTUVfSD0kZ2xfbmV4dF9hc19maXJzdF9kaXJlY3RpdmUKCgoKCgogIGlmIHRlc3Qg
JGFjX2N2X2hlYWRlcl9zeXNfdGltZV9oICE9IHllczsgdGhlbgogICAgSEFWRV9TWVNfVElNRV9I
PTAKICBmaQoKCgoKCiAgOgoKCgoKCiAgaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N5c19zb2NrZXRf
aCAhPSB5ZXM7IHRoZW4KICAgICAgICAgICAgICAgICAgICBmb3IgYWNfaGVhZGVyIGluIHdpbnNv
Y2syLmgKZG8gOgogIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICJ3aW5z
b2NrMi5oIiAiYWNfY3ZfaGVhZGVyX3dpbnNvY2syX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIK
aWYgdGVzdCAieCRhY19jdl9oZWFkZXJfd2luc29jazJfaCIgPSB4eWVzOyB0aGVuIDoKICBjYXQg
Pj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgSEFWRV9XSU5TT0NLMl9IIDEKX0FDRU9GCgpm
aQoKZG9uZQoKICBmaQogIGlmIHRlc3QgIiRhY19jdl9oZWFkZXJfd2luc29jazJfaCIgPSB5ZXM7
IHRoZW4KICAgIEhBVkVfV0lOU09DSzJfSD0xCiAgICBVTklTVERfSF9IQVZFX1dJTlNPQ0syX0g9
MQogICAgU1lTX0lPQ1RMX0hfSEFWRV9XSU5TT0NLMl9IPTEKICBlbHNlCiAgICBIQVZFX1dJTlNP
Q0syX0g9MAogIGZpCgoKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IGNoZWNraW5nIGZvciBzdHJ1Y3QgdGltZXZhbCIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIGZv
ciBzdHJ1Y3QgdGltZXZhbC4uLiAiID4mNjsgfQppZiAke2dsX2N2X3N5c19zdHJ1Y3RfdGltZXZh
bCs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIGNh
dCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZz
LmguICAqLwojaWYgSEFWRV9TWVNfVElNRV9ICiAgICAgICAgICAgICAjaW5jbHVkZSA8c3lzL3Rp
bWUuaD4KICAgICAgICAgICAgI2VuZGlmCiAgICAgICAgICAgICNpbmNsdWRlIDx0aW1lLmg+CiAg
ICAgICAgICAgICNpZiBIQVZFX1dJTlNPQ0syX0gKICAgICAgICAgICAgIyBpbmNsdWRlIDx3aW5z
b2NrMi5oPgogICAgICAgICAgICAjZW5kaWYKCmludAptYWluICgpCnsKc3RhdGljIHN0cnVjdCB0
aW1ldmFsIHg7IHgudHZfc2VjID0geC50dl91c2VjOwogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YK
aWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgogIGdsX2N2X3N5c19zdHJ1
Y3RfdGltZXZhbD15ZXMKZWxzZQogIGdsX2N2X3N5c19zdHJ1Y3RfdGltZXZhbD1ubwpmaQpybSAt
ZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQK
CmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xf
Y3Zfc3lzX3N0cnVjdF90aW1ldmFsIiA+JjUKJGFzX2VjaG8gIiRnbF9jdl9zeXNfc3RydWN0X3Rp
bWV2YWwiID4mNjsgfQogIGlmIHRlc3QgJGdsX2N2X3N5c19zdHJ1Y3RfdGltZXZhbCAhPSB5ZXM7
IHRoZW4KICAgIEhBVkVfU1RSVUNUX1RJTUVWQUw9MAogIGVsc2UKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tp
bmcgZm9yIHdpZGUtZW5vdWdoIHN0cnVjdCB0aW1ldmFsLnR2X3NlYyBtZW1iZXIiID4mNQokYXNf
ZWNob19uICJjaGVja2luZyBmb3Igd2lkZS1lbm91Z2ggc3RydWN0IHRpbWV2YWwudHZfc2VjIG1l
bWJlci4uLiAiID4mNjsgfQppZiAke2dsX2N2X3N5c19zdHJ1Y3RfdGltZXZhbF90dl9zZWMrOn0g
ZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKICBjYXQgY29u
ZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAg
Ki8KI2lmIEhBVkVfU1lTX1RJTUVfSAogICAgICAgICAgICAgICAjaW5jbHVkZSA8c3lzL3RpbWUu
aD4KICAgICAgICAgICAgICAjZW5kaWYKICAgICAgICAgICAgICAjaW5jbHVkZSA8dGltZS5oPgog
ICAgICAgICAgICAgICNpZiBIQVZFX1dJTlNPQ0syX0gKICAgICAgICAgICAgICAjIGluY2x1ZGUg
PHdpbnNvY2syLmg+CiAgICAgICAgICAgICAgI2VuZGlmCgppbnQKbWFpbiAoKQp7CnN0YXRpYyBz
dHJ1Y3QgdGltZXZhbCB4OwogICAgICAgICAgICAgIHR5cGVkZWYgaW50IHZlcmlmeV90dl9zZWNf
dHlwZVsKICAgICAgICAgICAgICAgIHNpemVvZiAodGltZV90KSA8PSBzaXplb2YgeC50dl9zZWMg
PyAxIDogLTEKICAgICAgICAgICAgICBdOwoKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFj
X2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKICBnbF9jdl9zeXNfc3RydWN0X3Rp
bWV2YWxfdHZfc2VjPXllcwplbHNlCiAgZ2xfY3Zfc3lzX3N0cnVjdF90aW1ldmFsX3R2X3NlYz1u
bwpmaQpybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0
LiRhY19leHQKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz
dWx0OiAkZ2xfY3Zfc3lzX3N0cnVjdF90aW1ldmFsX3R2X3NlYyIgPiY1CiRhc19lY2hvICIkZ2xf
Y3Zfc3lzX3N0cnVjdF90aW1ldmFsX3R2X3NlYyIgPiY2OyB9CiAgICBpZiB0ZXN0ICRnbF9jdl9z
eXNfc3RydWN0X3RpbWV2YWxfdHZfc2VjICE9IHllczsgdGhlbgogICAgICBSRVBMQUNFX1NUUlVD
VF9USU1FVkFMPTEKICAgIGZpCiAgZmkKCgogICAgZm9yIGdsX2Z1bmMgaW4gZ2V0dGltZW9mZGF5
OyBkbwogICAgYXNfZ2xfU3ltYm9sPWAkYXNfZWNobyAiZ2xfY3ZfaGF2ZV9yYXdfZGVjbF8kZ2xf
ZnVuYyIgfCAkYXNfdHJfc2hgCiAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IGNoZWNraW5nIHdoZXRoZXIgJGdsX2Z1bmMgaXMgZGVjbGFyZWQgd2l0aG91dCBhIG1h
Y3JvIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAkZ2xfZnVuYyBpcyBkZWNsYXJl
ZCB3aXRob3V0IGEgbWFjcm8uLi4gIiA+JjY7IH0KaWYgZXZhbCBcJHskYXNfZ2xfU3ltYm9sKzp9
IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCiAgY2F0IGNv
bmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4g
ICovCgojaWYgSEFWRV9TWVNfVElNRV9ICiMgaW5jbHVkZSA8c3lzL3RpbWUuaD4KI2VuZGlmCiNp
bmNsdWRlIDx0aW1lLmg+CgppbnQKbWFpbiAoKQp7CiN1bmRlZiAkZ2xfZnVuYwogICh2b2lkKSAk
Z2xfZnVuYzsKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUg
IiRMSU5FTk8iOyB0aGVuIDoKICBldmFsICIkYXNfZ2xfU3ltYm9sPXllcyIKZWxzZQogIGV2YWwg
IiRhc19nbF9TeW1ib2w9bm8iCmZpCnJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRh
Y19vYmpleHQgY29uZnRlc3QuJGFjX2V4dApmaQpldmFsIGFjX3Jlcz1cJCRhc19nbF9TeW1ib2wK
CSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog
JGFjX3JlcyIgPiY1CiRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KICAgIGlmIGV2YWwgdGVzdCBc
InhcJCIkYXNfZ2xfU3ltYm9sIlwiID0geCJ5ZXMiOyB0aGVuIDoKICBjYXQgPj5jb25mZGVmcy5o
IDw8X0FDRU9GCiNkZWZpbmUgYCRhc19lY2hvICJIQVZFX1JBV19ERUNMXyRnbF9mdW5jIiB8ICRh
c190cl9jcHBgIDEKX0FDRU9GCgogICAgICAgICAgICAgICAgICAgICBldmFsIGFjX2N2X2hhdmVf
ZGVjbF8kZ2xfZnVuYz15ZXMKZmkKICAgICAgZG9uZQoKCgoKCgoKCgoKeyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgaW5saW5lIiA+JjUKJGFzX2Vj
aG9fbiAiY2hlY2tpbmcgZm9yIGlubGluZS4uLiAiID4mNjsgfQppZiAke2FjX2N2X2NfaW5saW5l
Kzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCiAgYWNf
Y3ZfY19pbmxpbmU9bm8KZm9yIGFjX2t3IGluIGlubGluZSBfX2lubGluZV9fIF9faW5saW5lOyBk
bwogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNv
bmZkZWZzLmguICAqLwojaWZuZGVmIF9fY3BsdXNwbHVzCnR5cGVkZWYgaW50IGZvb190OwpzdGF0
aWMgJGFjX2t3IGZvb190IHN0YXRpY19mb28gKCkge3JldHVybiAwOyB9CiRhY19rdyBmb29fdCBm
b28gKCkge3JldHVybiAwOyB9CiNlbmRpZgoKX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUg
IiRMSU5FTk8iOyB0aGVuIDoKICBhY19jdl9jX2lubGluZT0kYWNfa3cKZmkKcm0gLWYgY29yZSBj
b25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiAgdGVzdCAi
JGFjX2N2X2NfaW5saW5lIiAhPSBubyAmJiBicmVhawpkb25lCgpmaQp7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2NfaW5saW5lIiA+JjUKJGFz
X2VjaG8gIiRhY19jdl9jX2lubGluZSIgPiY2OyB9CgpjYXNlICRhY19jdl9jX2lubGluZSBpbgog
IGlubGluZSB8IHllcykgOzsKICAqKQogICAgY2FzZSAkYWNfY3ZfY19pbmxpbmUgaW4KICAgICAg
bm8pIGFjX3ZhbD07OwogICAgICAqKSBhY192YWw9JGFjX2N2X2NfaW5saW5lOzsKICAgIGVzYWMK
ICAgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2lmbmRlZiBfX2NwbHVzcGx1cwojZGVmaW5l
IGlubGluZSAkYWNfdmFsCiNlbmRpZgpfQUNFT0YKICAgIDs7CmVzYWMKCgogIHsgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBtYWxsb2MsIHJl
YWxsb2MsIGNhbGxvYyBhcmUgUE9TSVggY29tcGxpYW50IiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tp
bmcgd2hldGhlciBtYWxsb2MsIHJlYWxsb2MsIGNhbGxvYyBhcmUgUE9TSVggY29tcGxpYW50Li4u
ICIgPiY2OyB9CmlmICR7Z2xfY3ZfZnVuY19tYWxsb2NfcG9zaXgrOn0gZmFsc2U7IHRoZW4gOgog
ICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKCiAgICAgICAgICAgICAgICAgICAgICAg
IGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZk
ZWZzLmguICAqLwoKaW50Cm1haW4gKCkKewojaWYgKGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQg
X19XSU4zMl9fKSAmJiAhIGRlZmluZWQgX19DWUdXSU5fXwogICAgICAgICAgICAgY2hva2UgbWUK
ICAgICAgICAgICAgICNlbmRpZgoKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2Nf
dHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKICBnbF9jdl9mdW5jX21hbGxvY19wb3NpeD15
ZXMKZWxzZQogIGdsX2N2X2Z1bmNfbWFsbG9jX3Bvc2l4PW5vCmZpCnJtIC1mIGNvcmUgY29uZnRl
c3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAoKZmkKeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbF9jdl9mdW5jX21hbGxv
Y19wb3NpeCIgPiY1CiRhc19lY2hvICIkZ2xfY3ZfZnVuY19tYWxsb2NfcG9zaXgiID4mNjsgfQoK
CgoKCgoKCgoKCgogIEdOVUxJQl9GRlNMPTA7CiAgR05VTElCX0ZGU0xMPTA7CiAgR05VTElCX01F
TUNIUj0wOwogIEdOVUxJQl9NRU1NRU09MDsKICBHTlVMSUJfTUVNUENQWT0wOwogIEdOVUxJQl9N
RU1SQ0hSPTA7CiAgR05VTElCX1JBV01FTUNIUj0wOwogIEdOVUxJQl9TVFBDUFk9MDsKICBHTlVM
SUJfU1RQTkNQWT0wOwogIEdOVUxJQl9TVFJDSFJOVUw9MDsKICBHTlVMSUJfU1RSRFVQPTA7CiAg
R05VTElCX1NUUk5DQVQ9MDsKICBHTlVMSUJfU1RSTkRVUD0wOwogIEdOVUxJQl9TVFJOTEVOPTA7
CiAgR05VTElCX1NUUlBCUks9MDsKICBHTlVMSUJfU1RSU0VQPTA7CiAgR05VTElCX1NUUlNUUj0w
OwogIEdOVUxJQl9TVFJDQVNFU1RSPTA7CiAgR05VTElCX1NUUlRPS19SPTA7CiAgR05VTElCX01C
U0xFTj0wOwogIEdOVUxJQl9NQlNOTEVOPTA7CiAgR05VTElCX01CU0NIUj0wOwogIEdOVUxJQl9N
QlNSQ0hSPTA7CiAgR05VTElCX01CU1NUUj0wOwogIEdOVUxJQl9NQlNDQVNFQ01QPTA7CiAgR05V
TElCX01CU05DQVNFQ01QPTA7CiAgR05VTElCX01CU1BDQVNFQ01QPTA7CiAgR05VTElCX01CU0NB
U0VTVFI9MDsKICBHTlVMSUJfTUJTQ1NQTj0wOwogIEdOVUxJQl9NQlNQQlJLPTA7CiAgR05VTElC
X01CU1NQTj0wOwogIEdOVUxJQl9NQlNTRVA9MDsKICBHTlVMSUJfTUJTVE9LX1I9MDsKICBHTlVM
SUJfU1RSRVJST1I9MDsKICBHTlVMSUJfU1RSRVJST1JfUj0wOwogIEdOVUxJQl9TVFJTSUdOQUw9
MDsKICBHTlVMSUJfU1RSVkVSU0NNUD0wOwogIEhBVkVfTUJTTEVOPTA7CiAgICBIQVZFX0ZGU0w9
MTsKICBIQVZFX0ZGU0xMPTE7CiAgSEFWRV9NRU1DSFI9MTsKICBIQVZFX0RFQ0xfTUVNTUVNPTE7
CiAgSEFWRV9NRU1QQ1BZPTE7CiAgSEFWRV9ERUNMX01FTVJDSFI9MTsKICBIQVZFX1JBV01FTUNI
Uj0xOwogIEhBVkVfU1RQQ1BZPTE7CiAgSEFWRV9TVFBOQ1BZPTE7CiAgSEFWRV9TVFJDSFJOVUw9
MTsKICBIQVZFX0RFQ0xfU1RSRFVQPTE7CiAgSEFWRV9ERUNMX1NUUk5EVVA9MTsKICBIQVZFX0RF
Q0xfU1RSTkxFTj0xOwogIEhBVkVfU1RSUEJSSz0xOwogIEhBVkVfU1RSU0VQPTE7CiAgSEFWRV9T
VFJDQVNFU1RSPTE7CiAgSEFWRV9ERUNMX1NUUlRPS19SPTE7CiAgSEFWRV9ERUNMX1NUUkVSUk9S
X1I9MTsKICBIQVZFX0RFQ0xfU1RSU0lHTkFMPTE7CiAgSEFWRV9TVFJWRVJTQ01QPTE7CiAgUkVQ
TEFDRV9NRU1DSFI9MDsKICBSRVBMQUNFX01FTU1FTT0wOwogIFJFUExBQ0VfU1RQTkNQWT0wOwog
IFJFUExBQ0VfU1RSRFVQPTA7CiAgUkVQTEFDRV9TVFJTVFI9MDsKICBSRVBMQUNFX1NUUkNBU0VT
VFI9MDsKICBSRVBMQUNFX1NUUkNIUk5VTD0wOwogIFJFUExBQ0VfU1RSRVJST1I9MDsKICBSRVBM
QUNFX1NUUkVSUk9SX1I9MDsKICBSRVBMQUNFX1NUUk5DQVQ9MDsKICBSRVBMQUNFX1NUUk5EVVA9
MDsKICBSRVBMQUNFX1NUUk5MRU49MDsKICBSRVBMQUNFX1NUUlNJR05BTD0wOwogIFJFUExBQ0Vf
U1RSVE9LX1I9MDsKICBVTkRFRklORV9TVFJUT0tfUj0wOwoKCgoKCiAgIyBDaGVjayBmb3IgbW1h
cCgpLiBEb24ndCB1c2UgQUNfRlVOQ19NTUFQLCBiZWNhdXNlIGl0IGNoZWNrcyB0b28gbXVjaDog
aXQKICAjIGZhaWxzIG9uIEhQLVVYIDExLCBiZWNhdXNlIE1BUF9GSVhFRCBtYXBwaW5ncyBkbyBu
b3Qgd29yay4gQnV0IHRoaXMgaXMKICAjIGlycmVsZXZhbnQgZm9yIGFub255bW91cyBtYXBwaW5n
cy4KICBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJtbWFwIiAiYWNfY3ZfZnVuY19tbWFw
IgppZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfbW1hcCIgPSB4eWVzOyB0aGVuIDoKICBnbF9oYXZlX21t
YXA9eWVzCmVsc2UKICBnbF9oYXZlX21tYXA9bm8KZmkKCgogICMgVHJ5IHRvIGFsbG93IE1BUF9B
Tk9OWU1PVVMuCiAgZ2xfaGF2ZV9tbWFwX2Fub255bW91cz1ubwogIGlmIHRlc3QgJGdsX2hhdmVf
bW1hcCA9IHllczsgdGhlbgogICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiBjaGVja2luZyBmb3IgTUFQX0FOT05ZTU9VUyIgPiY1CiRhc19lY2hvX24gImNoZWNraW5n
IGZvciBNQVBfQU5PTllNT1VTLi4uICIgPiY2OyB9CiAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FD
RU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCiNpbmNsdWRlIDxz
eXMvbW1hbi5oPgojaWZkZWYgTUFQX0FOT05ZTU9VUwogICAgSSBjYW5ub3QgaWRlbnRpZnkgdGhp
cyBtYXAKI2VuZGlmCgpfQUNFT0YKaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIp
IDI+JjUgfAogICRFR1JFUCAiSSBjYW5ub3QgaWRlbnRpZnkgdGhpcyBtYXAiID4vZGV2L251bGwg
Mj4mMTsgdGhlbiA6CiAgZ2xfaGF2ZV9tbWFwX2Fub255bW91cz15ZXMKZmkKcm0gLWYgY29uZnRl
c3QqCgogICAgaWYgdGVzdCAkZ2xfaGF2ZV9tbWFwX2Fub255bW91cyAhPSB5ZXM7IHRoZW4KICAg
ICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29u
ZmRlZnMuaC4gICovCgojaW5jbHVkZSA8c3lzL21tYW4uaD4KI2lmZGVmIE1BUF9BTk9OCiAgICBJ
IGNhbm5vdCBpZGVudGlmeSB0aGlzIG1hcAojZW5kaWYKCl9BQ0VPRgppZiAoZXZhbCAiJGFjX2Nw
cCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CiAgJEVHUkVQICJJIGNhbm5vdCBpZGVudGlmeSB0
aGlzIG1hcCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKCiRhc19lY2hvICIjZGVmaW5lIE1BUF9B
Tk9OWU1PVVMgTUFQX0FOT04iID4+Y29uZmRlZnMuaAoKICAgICAgICAgZ2xfaGF2ZV9tbWFwX2Fu
b255bW91cz15ZXMKZmkKcm0gLWYgY29uZnRlc3QqCgogICAgZmkKICAgIHsgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfaGF2ZV9tbWFwX2Fub255bW91
cyIgPiY1CiRhc19lY2hvICIkZ2xfaGF2ZV9tbWFwX2Fub255bW91cyIgPiY2OyB9CiAgICBpZiB0
ZXN0ICRnbF9oYXZlX21tYXBfYW5vbnltb3VzID0geWVzOyB0aGVuCgokYXNfZWNobyAiI2RlZmlu
ZSBIQVZFX01BUF9BTk9OWU1PVVMgMSIgPj5jb25mZGVmcy5oCgogICAgZmkKICBmaQoKCiAgOgoK
CgoKCgogIDoKCgoKCgoKCgogIGlmIHRlc3QgJEhBVkVfTUVNQ0hSID0gMTsgdGhlbgogICAgIyBE
ZXRlY3QgcGxhdGZvcm0tc3BlY2lmaWMgYnVncyBpbiBzb21lIHZlcnNpb25zIG9mIGdsaWJjOgog
ICAgIyBtZW1jaHIgc2hvdWxkIG5vdCBkZXJlZmVyZW5jZSBhbnl0aGluZyB3aXRoIGxlbmd0aCAw
CiAgICAjICAgaHR0cDovL2J1Z3ppbGxhLnJlZGhhdC5jb20vNDk5Njg5CiAgICAjIG1lbWNociBz
aG91bGQgbm90IGRlcmVmZXJlbmNlIG92ZXJlc3RpbWF0ZWQgbGVuZ3RoIGFmdGVyIGEgbWF0Y2gK
ICAgICMgICBodHRwOi8vYnVncy5kZWJpYW4ub3JnL2NnaS1iaW4vYnVncmVwb3J0LmNnaT9idWc9
NTIxNzM3CiAgICAjICAgaHR0cDovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNn
aT9pZD0xMDE2MgogICAgIyBBc3N1bWUgdGhhdCBtZW1jaHIgd29ya3Mgb24gcGxhdGZvcm1zIHRo
YXQgbGFjayBtcHJvdGVjdC4KICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogY2hlY2tpbmcgd2hldGhlciBtZW1jaHIgd29ya3MiID4mNQokYXNfZWNob19uICJjaGVj
a2luZyB3aGV0aGVyIG1lbWNociB3b3Jrcy4uLiAiID4mNjsgfQppZiAke2dsX2N2X2Z1bmNfbWVt
Y2hyX3dvcmtzKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgpl
bHNlCiAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgogICAgICAgICBn
bF9jdl9mdW5jX21lbWNocl93b3Jrcz0iZ3Vlc3Npbmcgbm8iCmVsc2UKICBjYXQgY29uZmRlZnMu
aCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCiNp
bmNsdWRlIDxzdHJpbmcuaD4KI2lmIEhBVkVfU1lTX01NQU5fSAojIGluY2x1ZGUgPGZjbnRsLmg+
CiMgaW5jbHVkZSA8dW5pc3RkLmg+CiMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiMgaW5jbHVkZSA8
c3lzL21tYW4uaD4KIyBpZm5kZWYgTUFQX0ZJTEUKIyAgZGVmaW5lIE1BUF9GSUxFIDAKIyBlbmRp
ZgojZW5kaWYKCmludAptYWluICgpCnsKCiAgaW50IHJlc3VsdCA9IDA7CiAgY2hhciAqZmVuY2Ug
PSBOVUxMOwojaWYgSEFWRV9TWVNfTU1BTl9IICYmIEhBVkVfTVBST1RFQ1QKIyBpZiBIQVZFX01B
UF9BTk9OWU1PVVMKICBjb25zdCBpbnQgZmxhZ3MgPSBNQVBfQU5PTllNT1VTIHwgTUFQX1BSSVZB
VEU7CiAgY29uc3QgaW50IGZkID0gLTE7CiMgZWxzZSAvKiAhSEFWRV9NQVBfQU5PTllNT1VTICov
CiAgY29uc3QgaW50IGZsYWdzID0gTUFQX0ZJTEUgfCBNQVBfUFJJVkFURTsKICBpbnQgZmQgPSBv
cGVuICgiL2Rldi96ZXJvIiwgT19SRE9OTFksIDA2NjYpOwogIGlmIChmZCA+PSAwKQojIGVuZGlm
CiAgICB7CiAgICAgIGludCBwYWdlc2l6ZSA9IGdldHBhZ2VzaXplICgpOwogICAgICBjaGFyICp0
d29fcGFnZXMgPQogICAgICAgIChjaGFyICopIG1tYXAgKE5VTEwsIDIgKiBwYWdlc2l6ZSwgUFJP
VF9SRUFEIHwgUFJPVF9XUklURSwKICAgICAgICAgICAgICAgICAgICAgICBmbGFncywgZmQsIDAp
OwogICAgICBpZiAodHdvX3BhZ2VzICE9IChjaGFyICopKC0xKQogICAgICAgICAgJiYgbXByb3Rl
Y3QgKHR3b19wYWdlcyArIHBhZ2VzaXplLCBwYWdlc2l6ZSwgUFJPVF9OT05FKSA9PSAwKQogICAg
ICAgIGZlbmNlID0gdHdvX3BhZ2VzICsgcGFnZXNpemU7CiAgICB9CiNlbmRpZgogIGlmIChmZW5j
ZSkKICAgIHsKICAgICAgaWYgKG1lbWNociAoZmVuY2UsIDAsIDApKQogICAgICAgIHJlc3VsdCB8
PSAxOwogICAgICBzdHJjcHkgKGZlbmNlIC0gOSwgIjEyMzQ1Njc4Iik7CiAgICAgIGlmIChtZW1j
aHIgKGZlbmNlIC0gOSwgMCwgNzkpICE9IGZlbmNlIC0gMSkKICAgICAgICByZXN1bHQgfD0gMjsK
ICAgICAgaWYgKG1lbWNociAoZmVuY2UgLSAxLCAwLCAzKSAhPSBmZW5jZSAtIDEpCiAgICAgICAg
cmVzdWx0IHw9IDQ7CiAgICB9CiAgcmV0dXJuIHJlc3VsdDsKCiAgOwogIHJldHVybiAwOwp9Cl9B
Q0VPRgppZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKICBnbF9jdl9mdW5jX21l
bWNocl93b3Jrcz15ZXMKZWxzZQogIGdsX2N2X2Z1bmNfbWVtY2hyX3dvcmtzPW5vCmZpCnJtIC1m
IGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNf
ZXhlZXh0IFwKICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFj
X2V4dApmaQoKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1
bHQ6ICRnbF9jdl9mdW5jX21lbWNocl93b3JrcyIgPiY1CiRhc19lY2hvICIkZ2xfY3ZfZnVuY19t
ZW1jaHJfd29ya3MiID4mNjsgfQogICAgaWYgdGVzdCAiJGdsX2N2X2Z1bmNfbWVtY2hyX3dvcmtz
IiAhPSB5ZXM7IHRoZW4KICAgICAgUkVQTEFDRV9NRU1DSFI9MQogICAgZmkKICBmaQoKCgoKCgoK
ICAgIGdsX2N2X2NfbXVsdGlhcmNoPW5vCiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29u
ZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCiNpZm5kZWYgX19BUFBMRV9DQ19f
CiAgICAgICAgIG5vdCBhIHVuaXZlcnNhbCBjYXBhYmxlIGNvbXBpbGVyCiAgICAgICAgI2VuZGlm
CiAgICAgICAgdHlwZWRlZiBpbnQgZHVtbXk7CgpfQUNFT0YKaWYgYWNfZm5fY190cnlfY29tcGls
ZSAiJExJTkVOTyI7IHRoZW4gOgoKICAgICAgICAgICAgICAgYXJjaD0KICAgICBwcmV2PQogICAg
IGZvciB3b3JkIGluICR7Q0N9ICR7Q0ZMQUdTfSAke0NQUEZMQUdTfSAke0xERkxBR1N9OyBkbwog
ICAgICAgaWYgdGVzdCAtbiAiJHByZXYiOyB0aGVuCiAgICAgICAgIGNhc2UgJHdvcmQgaW4KICAg
ICAgICAgICBpPzg2IHwgeDg2XzY0IHwgcHBjIHwgcHBjNjQpCiAgICAgICAgICAgICBpZiB0ZXN0
IC16ICIkYXJjaCIgfHwgdGVzdCAiJGFyY2giID0gIiR3b3JkIjsgdGhlbgogICAgICAgICAgICAg
ICBhcmNoPSIkd29yZCIKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgZ2xfY3ZfY19t
dWx0aWFyY2g9eWVzCiAgICAgICAgICAgICBmaQogICAgICAgICAgICAgOzsKICAgICAgICAgZXNh
YwogICAgICAgICBwcmV2PQogICAgICAgZWxzZQogICAgICAgICBpZiB0ZXN0ICJ4JHdvcmQiID0g
IngtYXJjaCI7IHRoZW4KICAgICAgICAgICBwcmV2PWFyY2gKICAgICAgICAgZmkKICAgICAgIGZp
CiAgICAgZG9uZQoKZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4
dCBjb25mdGVzdC4kYWNfZXh0CiAgaWYgdGVzdCAkZ2xfY3ZfY19tdWx0aWFyY2ggPSB5ZXM7IHRo
ZW4KICAgIEFQUExFX1VOSVZFUlNBTF9CVUlMRD0xCiAgZWxzZQogICAgQVBQTEVfVU5JVkVSU0FM
X0JVSUxEPTAKICBmaQoKCgogIEdOVUxJQl9EUFJJTlRGPTA7CiAgR05VTElCX0ZDTE9TRT0wOwog
IEdOVUxJQl9GRE9QRU49MDsKICBHTlVMSUJfRkZMVVNIPTA7CiAgR05VTElCX0ZHRVRDPTA7CiAg
R05VTElCX0ZHRVRTPTA7CiAgR05VTElCX0ZPUEVOPTA7CiAgR05VTElCX0ZQUklOVEY9MDsKICBH
TlVMSUJfRlBSSU5URl9QT1NJWD0wOwogIEdOVUxJQl9GUFVSR0U9MDsKICBHTlVMSUJfRlBVVEM9
MDsKICBHTlVMSUJfRlBVVFM9MDsKICBHTlVMSUJfRlJFQUQ9MDsKICBHTlVMSUJfRlJFT1BFTj0w
OwogIEdOVUxJQl9GU0NBTkY9MDsKICBHTlVMSUJfRlNFRUs9MDsKICBHTlVMSUJfRlNFRUtPPTA7
CiAgR05VTElCX0ZURUxMPTA7CiAgR05VTElCX0ZURUxMTz0wOwogIEdOVUxJQl9GV1JJVEU9MDsK
ICBHTlVMSUJfR0VUQz0wOwogIEdOVUxJQl9HRVRDSEFSPTA7CiAgR05VTElCX0dFVERFTElNPTA7
CiAgR05VTElCX0dFVExJTkU9MDsKICBHTlVMSUJfT0JTVEFDS19QUklOVEY9MDsKICBHTlVMSUJf
T0JTVEFDS19QUklOVEZfUE9TSVg9MDsKICBHTlVMSUJfUENMT1NFPTA7CiAgR05VTElCX1BFUlJP
Uj0wOwogIEdOVUxJQl9QT1BFTj0wOwogIEdOVUxJQl9QUklOVEY9MDsKICBHTlVMSUJfUFJJTlRG
X1BPU0lYPTA7CiAgR05VTElCX1BVVEM9MDsKICBHTlVMSUJfUFVUQ0hBUj0wOwogIEdOVUxJQl9Q
VVRTPTA7CiAgR05VTElCX1JFTU9WRT0wOwogIEdOVUxJQl9SRU5BTUU9MDsKICBHTlVMSUJfUkVO
QU1FQVQ9MDsKICBHTlVMSUJfU0NBTkY9MDsKICBHTlVMSUJfU05QUklOVEY9MDsKICBHTlVMSUJf
U1BSSU5URl9QT1NJWD0wOwogIEdOVUxJQl9TVERJT19IX05PTkJMT0NLSU5HPTA7CiAgR05VTElC
X1NURElPX0hfU0lHUElQRT0wOwogIEdOVUxJQl9UTVBGSUxFPTA7CiAgR05VTElCX1ZBU1BSSU5U
Rj0wOwogIEdOVUxJQl9WRlNDQU5GPTA7CiAgR05VTElCX1ZTQ0FORj0wOwogIEdOVUxJQl9WRFBS
SU5URj0wOwogIEdOVUxJQl9WRlBSSU5URj0wOwogIEdOVUxJQl9WRlBSSU5URl9QT1NJWD0wOwog
IEdOVUxJQl9WUFJJTlRGPTA7CiAgR05VTElCX1ZQUklOVEZfUE9TSVg9MDsKICBHTlVMSUJfVlNO
UFJJTlRGPTA7CiAgR05VTElCX1ZTUFJJTlRGX1BPU0lYPTA7CiAgICBIQVZFX0RFQ0xfRlBVUkdF
PTE7CiAgSEFWRV9ERUNMX0ZTRUVLTz0xOwogIEhBVkVfREVDTF9GVEVMTE89MTsKICBIQVZFX0RF
Q0xfR0VUREVMSU09MTsKICBIQVZFX0RFQ0xfR0VUTElORT0xOwogIEhBVkVfREVDTF9PQlNUQUNL
X1BSSU5URj0xOwogIEhBVkVfREVDTF9TTlBSSU5URj0xOwogIEhBVkVfREVDTF9WU05QUklOVEY9
MTsKICBIQVZFX0RQUklOVEY9MTsKICBIQVZFX0ZTRUVLTz0xOwogIEhBVkVfRlRFTExPPTE7CiAg
SEFWRV9QQ0xPU0U9MTsKICBIQVZFX1BPUEVOPTE7CiAgSEFWRV9SRU5BTUVBVD0xOwogIEhBVkVf
VkFTUFJJTlRGPTE7CiAgSEFWRV9WRFBSSU5URj0xOwogIFJFUExBQ0VfRFBSSU5URj0wOwogIFJF
UExBQ0VfRkNMT1NFPTA7CiAgUkVQTEFDRV9GRE9QRU49MDsKICBSRVBMQUNFX0ZGTFVTSD0wOwog
IFJFUExBQ0VfRk9QRU49MDsKICBSRVBMQUNFX0ZQUklOVEY9MDsKICBSRVBMQUNFX0ZQVVJHRT0w
OwogIFJFUExBQ0VfRlJFT1BFTj0wOwogIFJFUExBQ0VfRlNFRUs9MDsKICBSRVBMQUNFX0ZTRUVL
Tz0wOwogIFJFUExBQ0VfRlRFTEw9MDsKICBSRVBMQUNFX0ZURUxMTz0wOwogIFJFUExBQ0VfR0VU
REVMSU09MDsKICBSRVBMQUNFX0dFVExJTkU9MDsKICBSRVBMQUNFX09CU1RBQ0tfUFJJTlRGPTA7
CiAgUkVQTEFDRV9QRVJST1I9MDsKICBSRVBMQUNFX1BPUEVOPTA7CiAgUkVQTEFDRV9QUklOVEY9
MDsKICBSRVBMQUNFX1JFTU9WRT0wOwogIFJFUExBQ0VfUkVOQU1FPTA7CiAgUkVQTEFDRV9SRU5B
TUVBVD0wOwogIFJFUExBQ0VfU05QUklOVEY9MDsKICBSRVBMQUNFX1NQUklOVEY9MDsKICBSRVBM
QUNFX1NURElPX1JFQURfRlVOQ1M9MDsKICBSRVBMQUNFX1NURElPX1dSSVRFX0ZVTkNTPTA7CiAg
UkVQTEFDRV9UTVBGSUxFPTA7CiAgUkVQTEFDRV9WQVNQUklOVEY9MDsKICBSRVBMQUNFX1ZEUFJJ
TlRGPTA7CiAgUkVQTEFDRV9WRlBSSU5URj0wOwogIFJFUExBQ0VfVlBSSU5URj0wOwogIFJFUExB
Q0VfVlNOUFJJTlRGPTA7CiAgUkVQTEFDRV9WU1BSSU5URj0wOwoKCgoKCgoKICAgICAgYWNfZm5f
Y19jaGVja19kZWNsICIkTElORU5PIiAib2JzdGFja19wcmludGYiICJhY19jdl9oYXZlX2RlY2xf
b2JzdGFja19wcmludGYiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKaWYgdGVzdCAieCRhY19jdl9o
YXZlX2RlY2xfb2JzdGFja19wcmludGYiID0geHllczsgdGhlbiA6CiAgYWNfaGF2ZV9kZWNsPTEK
ZWxzZQogIGFjX2hhdmVfZGVjbD0wCmZpCgpjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZp
bmUgSEFWRV9ERUNMX09CU1RBQ0tfUFJJTlRGICRhY19oYXZlX2RlY2wKX0FDRU9GCgoKCgoKCgoK
CiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig
cHJvbW90ZWQgbW9kZV90IHR5cGUiID4mNQokYXNfZWNob19uICJjaGVja2luZyBmb3IgcHJvbW90
ZWQgbW9kZV90IHR5cGUuLi4gIiA+JjY7IH0KaWYgJHtnbF9jdl9wcm9tb3RlZF9tb2RlX3QrOn0g
ZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKCiAgICAgICAg
ICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVu
ZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPHN5cy90eXBlcy5oPgppbnQKbWFpbiAoKQp7CnR5
cGVkZWYgaW50IGFycmF5WzIgKiAoc2l6ZW9mIChtb2RlX3QpIDwgc2l6ZW9mIChpbnQpKSAtIDFd
OwogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVO
TyI7IHRoZW4gOgogIGdsX2N2X3Byb21vdGVkX21vZGVfdD0naW50JwplbHNlCiAgZ2xfY3ZfcHJv
bW90ZWRfbW9kZV90PSdtb2RlX3QnCmZpCnJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0
LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAoKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbF9jdl9wcm9tb3RlZF9tb2RlX3QiID4mNQokYXNf
ZWNobyAiJGdsX2N2X3Byb21vdGVkX21vZGVfdCIgPiY2OyB9CgpjYXQgPj5jb25mZGVmcy5oIDw8
X0FDRU9GCiNkZWZpbmUgUFJPTU9URURfTU9ERV9UICRnbF9jdl9wcm9tb3RlZF9tb2RlX3QKX0FD
RU9GCgoKCgoKCgoKICBHTlVMSUJfUFRIUkVBRF9TSUdNQVNLPTA7CiAgR05VTElCX1JBSVNFPTA7
CiAgR05VTElCX1NJR05BTF9IX1NJR1BJUEU9MDsKICBHTlVMSUJfU0lHUFJPQ01BU0s9MDsKICBH
TlVMSUJfU0lHQUNUSU9OPTA7CiAgICBIQVZFX1BPU0lYX1NJR05BTEJMT0NLSU5HPTE7CiAgSEFW
RV9QVEhSRUFEX1NJR01BU0s9MTsKICBIQVZFX1JBSVNFPTE7CiAgSEFWRV9TSUdTRVRfVD0xOwog
IEhBVkVfU0lHSU5GT19UPTE7CiAgSEFWRV9TSUdBQ1RJT049MTsKICBIQVZFX1NUUlVDVF9TSUdB
Q1RJT05fU0FfU0lHQUNUSU9OPTE7CgogIEhBVkVfVFlQRV9WT0xBVElMRV9TSUdfQVRPTUlDX1Q9
MTsKCiAgSEFWRV9TSUdIQU5ETEVSX1Q9MTsKICBSRVBMQUNFX1BUSFJFQURfU0lHTUFTSz0wOwog
IFJFUExBQ0VfUkFJU0U9MDsKCgoKCgoKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBjaGVja2luZyBmb3IgdWlkX3QgaW4gc3lzL3R5cGVzLmgiID4mNQokYXNfZWNob19u
ICJjaGVja2luZyBmb3IgdWlkX3QgaW4gc3lzL3R5cGVzLmguLi4gIiA+JjY7IH0KaWYgJHthY19j
dl90eXBlX3VpZF90Kzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4m
NgplbHNlCiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBl
bmQgY29uZmRlZnMuaC4gICovCiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KCl9BQ0VPRgppZiAoZXZh
bCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CiAgJEVHUkVQICJ1aWRfdCIgPi9k
ZXYvbnVsbCAyPiYxOyB0aGVuIDoKICBhY19jdl90eXBlX3VpZF90PXllcwplbHNlCiAgYWNfY3Zf
dHlwZV91aWRfdD1ubwpmaQpybSAtZiBjb25mdGVzdCoKCmZpCnsgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfdHlwZV91aWRfdCIgPiY1CiRhc19l
Y2hvICIkYWNfY3ZfdHlwZV91aWRfdCIgPiY2OyB9CmlmIHRlc3QgJGFjX2N2X3R5cGVfdWlkX3Qg
PSBubzsgdGhlbgoKJGFzX2VjaG8gIiNkZWZpbmUgdWlkX3QgaW50IiA+PmNvbmZkZWZzLmgKCgok
YXNfZWNobyAiI2RlZmluZSBnaWRfdCBpbnQiID4+Y29uZmRlZnMuaAoKZmkKCjoKCgoKCgoKCgoK
CgogIGFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgInNpZ3NldF90IiAiYWNfY3ZfdHlwZV9z
aWdzZXRfdCIgIgogICAgICAjaW5jbHVkZSA8c2lnbmFsLmg+CiAgICAgIC8qIE1pbmd3IGRlZmlu
ZXMgc2lnc2V0X3Qgbm90IGluIDxzaWduYWwuaD4sIGJ1dCBpbiA8c3lzL3R5cGVzLmg+LiAgKi8K
ICAgICAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgoKIgppZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfc2ln
c2V0X3QiID0geHllczsgdGhlbiA6CgpjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUg
SEFWRV9TSUdTRVRfVCAxCl9BQ0VPRgoKZ2xfY3ZfdHlwZV9zaWdzZXRfdD15ZXMKZWxzZQogIGds
X2N2X3R5cGVfc2lnc2V0X3Q9bm8KZmkKCiAgaWYgdGVzdCAkZ2xfY3ZfdHlwZV9zaWdzZXRfdCAh
PSB5ZXM7IHRoZW4KICAgIEhBVkVfU0lHU0VUX1Q9MAogIGZpCgoKCgoKCgoKICA6CgoKCgoKCgoK
CiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0
aGVyIHNucHJpbnRmIHJldHVybnMgYSBieXRlIGNvdW50IGFzIGluIEM5OSIgPiY1CiRhc19lY2hv
X24gImNoZWNraW5nIHdoZXRoZXIgc25wcmludGYgcmV0dXJucyBhIGJ5dGUgY291bnQgYXMgaW4g
Qzk5Li4uICIgPiY2OyB9CmlmICR7Z2xfY3ZfZnVuY19zbnByaW50Zl9yZXR2YWxfYzk5Kzp9IGZh
bHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCgogICAgICBpZiB0
ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CgogICAgICAgICBjYXNlICIkaG9z
dF9vcyIgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBHdWVzcyB5ZXMgb24g
Z2xpYmMgc3lzdGVtcy4KICAgICAgICAgICAqLWdudSopICAgICAgICAgICAgICAgZ2xfY3ZfZnVu
Y19zbnByaW50Zl9yZXR2YWxfYzk5PSJndWVzc2luZyB5ZXMiOzsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIyBHdWVzcyB5ZXMgb24gRnJlZUJTRCA+PSA1LgogICAgICAgICAgIGZy
ZWVic2RbMS00XSopICAgICAgICBnbF9jdl9mdW5jX3NucHJpbnRmX3JldHZhbF9jOTk9Imd1ZXNz
aW5nIG5vIjs7CiAgICAgICAgICAgZnJlZWJzZCogfCBrZnJlZWJzZCopIGdsX2N2X2Z1bmNfc25w
cmludGZfcmV0dmFsX2M5OT0iZ3Vlc3NpbmcgeWVzIjs7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMgR3Vlc3MgeWVzIG9uIE1hYyBPUyBYID49IDEwLjMuCiAgICAgICAgICAgZGFy
d2luWzEtNl0uKikgICAgICAgIGdsX2N2X2Z1bmNfc25wcmludGZfcmV0dmFsX2M5OT0iZ3Vlc3Np
bmcgbm8iOzsKICAgICAgICAgICBkYXJ3aW4qKSAgICAgICAgICAgICAgZ2xfY3ZfZnVuY19zbnBy
aW50Zl9yZXR2YWxfYzk5PSJndWVzc2luZyB5ZXMiOzsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIyBHdWVzcyB5ZXMgb24gT3BlbkJTRCA+PSAzLjkuCiAgICAgICAgICAgb3BlbmJz
ZFsxLTJdLiogfCBvcGVuYnNkMy5bMC04XSB8IG9wZW5ic2QzLlswLThdLiopCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdsX2N2X2Z1bmNfc25wcmludGZfcmV0dmFsX2M5OT0iZ3Vl
c3Npbmcgbm8iOzsKICAgICAgICAgICBvcGVuYnNkKikgICAgICAgICAgICAgZ2xfY3ZfZnVuY19z
bnByaW50Zl9yZXR2YWxfYzk5PSJndWVzc2luZyB5ZXMiOzsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIyBHdWVzcyB5ZXMgb24gU29sYXJpcyA+PSAyLjEwLgogICAgICAgICAgIHNv
bGFyaXMyLlsxLTldWzAtOV0qKSBnbF9jdl9mdW5jX3ByaW50Zl9zaXplc19jOTk9Imd1ZXNzaW5n
IHllcyI7OwogICAgICAgICAgIHNvbGFyaXMqKSAgICAgICAgICAgICBnbF9jdl9mdW5jX3ByaW50
Zl9zaXplc19jOTk9Imd1ZXNzaW5nIG5vIjs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMgR3Vlc3MgeWVzIG9uIEFJWCA+PSA0LgogICAgICAgICAgIGFpeFsxLTNdKikgICAgICAg
ICAgICBnbF9jdl9mdW5jX3NucHJpbnRmX3JldHZhbF9jOTk9Imd1ZXNzaW5nIG5vIjs7CiAgICAg
ICAgICAgYWl4KikgICAgICAgICAgICAgICAgIGdsX2N2X2Z1bmNfc25wcmludGZfcmV0dmFsX2M5
OT0iZ3Vlc3NpbmcgeWVzIjs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgR3Vl
c3MgeWVzIG9uIE5ldEJTRCA+PSAzLgogICAgICAgICAgIG5ldGJzZFsxLTJdKiB8IG5ldGJzZGVs
ZlsxLTJdKiB8IG5ldGJzZGFvdXRbMS0yXSogfCBuZXRic2Rjb2ZmWzEtMl0qKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbF9jdl9mdW5jX3NucHJpbnRmX3JldHZhbF9jOTk9Imd1
ZXNzaW5nIG5vIjs7CiAgICAgICAgICAgbmV0YnNkKikgICAgICAgICAgICAgIGdsX2N2X2Z1bmNf
c25wcmludGZfcmV0dmFsX2M5OT0iZ3Vlc3NpbmcgeWVzIjs7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMgR3Vlc3MgeWVzIG9uIEJlT1MuCiAgICAgICAgICAgYmVvcyopICAgICAg
ICAgICAgICAgIGdsX2N2X2Z1bmNfc25wcmludGZfcmV0dmFsX2M5OT0iZ3Vlc3NpbmcgeWVzIjs7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgd2UgZG9uJ3Qga25vdywgYXNz
dW1lIHRoZSB3b3JzdC4KICAgICAgICAgICAqKSAgICAgICAgICAgICAgICAgICAgZ2xfY3ZfZnVu
Y19zbnByaW50Zl9yZXR2YWxfYzk5PSJndWVzc2luZyBubyI7OwogICAgICAgICBlc2FjCgplbHNl
CiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29u
ZmRlZnMuaC4gICovCgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaWYg
SEFWRV9TTlBSSU5URgojIGRlZmluZSBteV9zbnByaW50ZiBzbnByaW50ZgojZWxzZQojIGluY2x1
ZGUgPHN0ZGFyZy5oPgpzdGF0aWMgaW50IG15X3NucHJpbnRmIChjaGFyICpidWYsIGludCBzaXpl
LCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKewogIHZhX2xpc3QgYXJnczsKICBpbnQgcmV0Owog
IHZhX3N0YXJ0IChhcmdzLCBmb3JtYXQpOwogIHJldCA9IHZzbnByaW50ZiAoYnVmLCBzaXplLCBm
b3JtYXQsIGFyZ3MpOwogIHZhX2VuZCAoYXJncyk7CiAgcmV0dXJuIHJldDsKfQojZW5kaWYKc3Rh
dGljIGNoYXIgYnVmWzEwMF07CmludCBtYWluICgpCnsKICBzdHJjcHkgKGJ1ZiwgIkFCQ0RFRiIp
OwogIGlmIChteV9zbnByaW50ZiAoYnVmLCAzLCAiJWQgJWQiLCA0NTY3LCA4OSkgIT0gNykKICAg
IHJldHVybiAxOwogIGlmIChteV9zbnByaW50ZiAoYnVmLCAwLCAiJWQgJWQiLCA0NTY3LCA4OSkg
IT0gNykKICAgIHJldHVybiAyOwogIGlmIChteV9zbnByaW50ZiAoTlVMTCwgMCwgIiVkICVkIiwg
NDU2NywgODkpICE9IDcpCiAgICByZXR1cm4gMzsKICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNf
Zm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CiAgZ2xfY3ZfZnVuY19zbnByaW50Zl9yZXR2
YWxfYzk5PXllcwplbHNlCiAgZ2xfY3ZfZnVuY19zbnByaW50Zl9yZXR2YWxfYzk5PW5vCmZpCnJt
IC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3Qk
YWNfZXhlZXh0IFwKICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3Qu
JGFjX2V4dApmaQoKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
cmVzdWx0OiAkZ2xfY3ZfZnVuY19zbnByaW50Zl9yZXR2YWxfYzk5IiA+JjUKJGFzX2VjaG8gIiRn
bF9jdl9mdW5jX3NucHJpbnRmX3JldHZhbF9jOTkiID4mNjsgfQoKCiAgICAgIGFjX2ZuX2NfY2hl
Y2tfZGVjbCAiJExJTkVOTyIgInNucHJpbnRmIiAiYWNfY3ZfaGF2ZV9kZWNsX3NucHJpbnRmIiAi
JGFjX2luY2x1ZGVzX2RlZmF1bHQiCmlmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX3NucHJpbnRm
IiA9IHh5ZXM7IHRoZW4gOgogIGFjX2hhdmVfZGVjbD0xCmVsc2UKICBhY19oYXZlX2RlY2w9MApm
aQoKY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5lIEhBVkVfREVDTF9TTlBSSU5URiAk
YWNfaGF2ZV9kZWNsCl9BQ0VPRgoKCgogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogY2hlY2tpbmcgZm9yIHN0ZGludC5oIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcg
Zm9yIHN0ZGludC5oLi4uICIgPiY2OyB9CmlmICR7Z2xfY3ZfaGVhZGVyX3N0ZGludF9oKzp9IGZh
bHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCiAgY2F0IGNvbmZk
ZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICov
CiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICAgICAgICAgICAgI2luY2x1ZGUgPHN0ZGludC5oPgpp
bnQKbWFpbiAoKQp7CnVpbnRtYXhfdCBpID0gKHVpbnRtYXhfdCkgLTE7IHJldHVybiAhaTsKICA7
CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0
aGVuIDoKICBnbF9jdl9oZWFkZXJfc3RkaW50X2g9eWVzCmVsc2UKICBnbF9jdl9oZWFkZXJfc3Rk
aW50X2g9bm8KZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBj
b25mdGVzdC4kYWNfZXh0CmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiAkZ2xfY3ZfaGVhZGVyX3N0ZGludF9oIiA+JjUKJGFzX2VjaG8gIiRnbF9jdl9o
ZWFkZXJfc3RkaW50X2giID4mNjsgfQogIGlmIHRlc3QgJGdsX2N2X2hlYWRlcl9zdGRpbnRfaCA9
IHllczsgdGhlbgoKY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5lIEhBVkVfU1RESU5U
X0hfV0lUSF9VSU5UTUFYIDEKX0FDRU9GCgogIGZpCgoKICB7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBpbnR0eXBlcy5oIiA+JjUKJGFzX2VjaG9f
biAiY2hlY2tpbmcgZm9yIGludHR5cGVzLmguLi4gIiA+JjY7IH0KaWYgJHtnbF9jdl9oZWFkZXJf
aW50dHlwZXNfaCs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYK
ZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5k
IGNvbmZkZWZzLmguICAqLwoKI2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8aW50dHlw
ZXMuaD4KCmludAptYWluICgpCnsKdWludG1heF90IGkgPSAodWludG1heF90KSAtMTsgcmV0dXJu
ICFpOwogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJ
TkVOTyI7IHRoZW4gOgogIGdsX2N2X2hlYWRlcl9pbnR0eXBlc19oPXllcwplbHNlCiAgZ2xfY3Zf
aGVhZGVyX2ludHR5cGVzX2g9bm8KZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3Qu
JGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfaGVhZGVyX2ludHR5cGVzX2giID4mNQokYXNf
ZWNobyAiJGdsX2N2X2hlYWRlcl9pbnR0eXBlc19oIiA+JjY7IH0KICBpZiB0ZXN0ICRnbF9jdl9o
ZWFkZXJfaW50dHlwZXNfaCA9IHllczsgdGhlbgoKY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgoj
ZGVmaW5lIEhBVkVfSU5UVFlQRVNfSF9XSVRIX1VJTlRNQVggMQpfQUNFT0YKCiAgZmkKCgoKCgog
ICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hl
dGhlciBwcmludGYgc3VwcG9ydHMgc2l6ZSBzcGVjaWZpZXJzIGFzIGluIEM5OSIgPiY1CiRhc19l
Y2hvX24gImNoZWNraW5nIHdoZXRoZXIgcHJpbnRmIHN1cHBvcnRzIHNpemUgc3BlY2lmaWVycyBh
cyBpbiBDOTkuLi4gIiA+JjY7IH0KaWYgJHtnbF9jdl9mdW5jX3ByaW50Zl9zaXplc19jOTkrOn0g
ZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKCiAgICAgIGlm
IHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKCiAgICAgICAgIGNhc2UgIiRo
b3N0X29zIiBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEd1ZXNzIHllcyBv
biBnbGliYyBzeXN0ZW1zLgogICAgICAgICAgICotZ251KikgICAgICAgICAgICAgICBnbF9jdl9m
dW5jX3ByaW50Zl9zaXplc19jOTk9Imd1ZXNzaW5nIHllcyI7OwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjIEd1ZXNzIHllcyBvbiBGcmVlQlNEID49IDUuCiAgICAgICAgICAgZnJl
ZWJzZFsxLTRdKikgICAgICAgIGdsX2N2X2Z1bmNfcHJpbnRmX3NpemVzX2M5OT0iZ3Vlc3Npbmcg
bm8iOzsKICAgICAgICAgICBmcmVlYnNkKiB8IGtmcmVlYnNkKikgZ2xfY3ZfZnVuY19wcmludGZf
c2l6ZXNfYzk5PSJndWVzc2luZyB5ZXMiOzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIyBHdWVzcyB5ZXMgb24gTWFjIE9TIFggPj0gMTAuMy4KICAgICAgICAgICBkYXJ3aW5bMS02
XS4qKSAgICAgICAgZ2xfY3ZfZnVuY19wcmludGZfc2l6ZXNfYzk5PSJndWVzc2luZyBubyI7Owog
ICAgICAgICAgIGRhcndpbiopICAgICAgICAgICAgICBnbF9jdl9mdW5jX3ByaW50Zl9zaXplc19j
OTk9Imd1ZXNzaW5nIHllcyI7OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEd1
ZXNzIHllcyBvbiBPcGVuQlNEID49IDMuOS4KICAgICAgICAgICBvcGVuYnNkWzEtMl0uKiB8IG9w
ZW5ic2QzLlswLThdIHwgb3BlbmJzZDMuWzAtOF0uKikKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2xfY3ZfZnVuY19wcmludGZfc2l6ZXNfYzk5PSJndWVzc2luZyBubyI7OwogICAg
ICAgICAgIG9wZW5ic2QqKSAgICAgICAgICAgICBnbF9jdl9mdW5jX3ByaW50Zl9zaXplc19jOTk9
Imd1ZXNzaW5nIHllcyI7OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEd1ZXNz
IHllcyBvbiBTb2xhcmlzID49IDIuMTAuCiAgICAgICAgICAgc29sYXJpczIuWzEtOV1bMC05XSop
IGdsX2N2X2Z1bmNfcHJpbnRmX3NpemVzX2M5OT0iZ3Vlc3NpbmcgeWVzIjs7CiAgICAgICAgICAg
c29sYXJpcyopICAgICAgICAgICAgIGdsX2N2X2Z1bmNfcHJpbnRmX3NpemVzX2M5OT0iZ3Vlc3Np
bmcgbm8iOzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBHdWVzcyB5ZXMgb24g
TmV0QlNEID49IDMuCiAgICAgICAgICAgbmV0YnNkWzEtMl0qIHwgbmV0YnNkZWxmWzEtMl0qIHwg
bmV0YnNkYW91dFsxLTJdKiB8IG5ldGJzZGNvZmZbMS0yXSopCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsX2N2X2Z1bmNfcHJpbnRmX3NpemVzX2M5OT0iZ3Vlc3Npbmcgbm8iOzsK
ICAgICAgICAgICBuZXRic2QqKSAgICAgICAgICAgICAgZ2xfY3ZfZnVuY19wcmludGZfc2l6ZXNf
Yzk5PSJndWVzc2luZyB5ZXMiOzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJ
ZiB3ZSBkb24ndCBrbm93LCBhc3N1bWUgdGhlIHdvcnN0LgogICAgICAgICAgICopICAgICAgICAg
ICAgICAgICAgICBnbF9jdl9mdW5jX3ByaW50Zl9zaXplc19jOTk9Imd1ZXNzaW5nIG5vIjs7CiAg
ICAgICAgIGVzYWMKCmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4k
YWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCiNpbmNsdWRlIDxzdGRkZWYuaD4KI2luY2x1
ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN5cy90eXBlcy5oPgoj
aWYgSEFWRV9TVERJTlRfSF9XSVRIX1VJTlRNQVgKIyBpbmNsdWRlIDxzdGRpbnQuaD4KI2VuZGlm
CiNpZiBIQVZFX0lOVFRZUEVTX0hfV0lUSF9VSU5UTUFYCiMgaW5jbHVkZSA8aW50dHlwZXMuaD4K
I2VuZGlmCnN0YXRpYyBjaGFyIGJ1ZlsxMDBdOwppbnQgbWFpbiAoKQp7CiAgaW50IHJlc3VsdCA9
IDA7CiNpZiBIQVZFX1NURElOVF9IX1dJVEhfVUlOVE1BWCB8fCBIQVZFX0lOVFRZUEVTX0hfV0lU
SF9VSU5UTUFYCiAgYnVmWzBdID0gJ1wwJzsKICBpZiAoc3ByaW50ZiAoYnVmLCAiJWp1ICVkIiwg
KHVpbnRtYXhfdCkgMTIzNDU2NzEsIDMzLCA0NCwgNTUpIDwgMAogICAgICB8fCBzdHJjbXAgKGJ1
ZiwgIjEyMzQ1NjcxIDMzIikgIT0gMCkKICAgIHJlc3VsdCB8PSAxOwojZW5kaWYKICBidWZbMF0g
PSAnXDAnOwogIGlmIChzcHJpbnRmIChidWYsICIlenUgJWQiLCAoc2l6ZV90KSAxMjM0NTY3Miwg
MzMsIDQ0LCA1NSkgPCAwCiAgICAgIHx8IHN0cmNtcCAoYnVmLCAiMTIzNDU2NzIgMzMiKSAhPSAw
KQogICAgcmVzdWx0IHw9IDI7CiAgYnVmWzBdID0gJ1wwJzsKICBpZiAoc3ByaW50ZiAoYnVmLCAi
JXR1ICVkIiwgKHB0cmRpZmZfdCkgMTIzNDU2NzMsIDMzLCA0NCwgNTUpIDwgMAogICAgICB8fCBz
dHJjbXAgKGJ1ZiwgIjEyMzQ1NjczIDMzIikgIT0gMCkKICAgIHJlc3VsdCB8PSA0OwogIGJ1Zlsw
XSA9ICdcMCc7CiAgaWYgKHNwcmludGYgKGJ1ZiwgIiVMZyAlZCIsIChsb25nIGRvdWJsZSkgMS41
LCAzMywgNDQsIDU1KSA8IDAKICAgICAgfHwgc3RyY21wIChidWYsICIxLjUgMzMiKSAhPSAwKQog
ICAgcmVzdWx0IHw9IDg7CiAgcmV0dXJuIHJlc3VsdDsKfQpfQUNFT0YKaWYgYWNfZm5fY190cnlf
cnVuICIkTElORU5PIjsgdGhlbiA6CiAgZ2xfY3ZfZnVuY19wcmludGZfc2l6ZXNfYzk5PXllcwpl
bHNlCiAgZ2xfY3ZfZnVuY19wcmludGZfc2l6ZXNfYzk5PW5vCmZpCnJtIC1mIGNvcmUgKi5jb3Jl
IGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKICBj
b25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dApmaQoKCmZp
CnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3Zf
ZnVuY19wcmludGZfc2l6ZXNfYzk5IiA+JjUKJGFzX2VjaG8gIiRnbF9jdl9mdW5jX3ByaW50Zl9z
aXplc19jOTkiID4mNjsgfQoKCgogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogY2hlY2tpbmcgd2hldGhlciBwcmludGYgc3VwcG9ydHMgJ2xvbmcgZG91YmxlJyBh
cmd1bWVudHMiID4mNQokYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHByaW50ZiBzdXBwb3J0
cyAnbG9uZyBkb3VibGUnIGFyZ3VtZW50cy4uLiAiID4mNjsgfQppZiAke2dsX2N2X2Z1bmNfcHJp
bnRmX2xvbmdfZG91YmxlKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAi
ID4mNgplbHNlCgogICAgICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6
CgogICAgICAgICBjYXNlICIkaG9zdF9vcyIgaW4KICAgICAgICAgICBiZW9zKikgICAgICAgIGds
X2N2X2Z1bmNfcHJpbnRmX2xvbmdfZG91YmxlPSJndWVzc2luZyBubyI7OwogICAgICAgICAgIG1p
bmd3KiB8IHB3KikgZ2xfY3ZfZnVuY19wcmludGZfbG9uZ19kb3VibGU9Imd1ZXNzaW5nIG5vIjs7
CiAgICAgICAgICAgKikgICAgICAgICAgICBnbF9jdl9mdW5jX3ByaW50Zl9sb25nX2RvdWJsZT0i
Z3Vlc3NpbmcgeWVzIjs7CiAgICAgICAgIGVzYWMKCmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8
X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCiNpbmNsdWRl
IDxzdGRpby5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CnN0YXRpYyBjaGFyIGJ1ZlsxMDAwMF07Cmlu
dCBtYWluICgpCnsKICBpbnQgcmVzdWx0ID0gMDsKICBidWZbMF0gPSAnXDAnOwogIGlmIChzcHJp
bnRmIChidWYsICIlTGYgJWQiLCAxLjc1TCwgMzMsIDQ0LCA1NSkgPCAwCiAgICAgIHx8IHN0cmNt
cCAoYnVmLCAiMS43NTAwMDAgMzMiKSAhPSAwKQogICAgcmVzdWx0IHw9IDE7CiAgYnVmWzBdID0g
J1wwJzsKICBpZiAoc3ByaW50ZiAoYnVmLCAiJUxlICVkIiwgMS43NUwsIDMzLCA0NCwgNTUpIDwg
MAogICAgICB8fCBzdHJjbXAgKGJ1ZiwgIjEuNzUwMDAwZSswMCAzMyIpICE9IDApCiAgICByZXN1
bHQgfD0gMjsKICBidWZbMF0gPSAnXDAnOwogIGlmIChzcHJpbnRmIChidWYsICIlTGcgJWQiLCAx
Ljc1TCwgMzMsIDQ0LCA1NSkgPCAwCiAgICAgIHx8IHN0cmNtcCAoYnVmLCAiMS43NSAzMyIpICE9
IDApCiAgICByZXN1bHQgfD0gNDsKICByZXR1cm4gcmVzdWx0Owp9Cl9BQ0VPRgppZiBhY19mbl9j
X3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKICBnbF9jdl9mdW5jX3ByaW50Zl9sb25nX2RvdWJs
ZT15ZXMKZWxzZQogIGdsX2N2X2Z1bmNfcHJpbnRmX2xvbmdfZG91YmxlPW5vCmZpCnJtIC1mIGNv
cmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhl
ZXh0IFwKICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4
dApmaQoKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0
OiAkZ2xfY3ZfZnVuY19wcmludGZfbG9uZ19kb3VibGUiID4mNQokYXNfZWNobyAiJGdsX2N2X2Z1
bmNfcHJpbnRmX2xvbmdfZG91YmxlIiA+JjY7IH0KCgoKICAgICB7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgcHJpbnRmIHN1cHBvcnRzIGlu
ZmluaXRlICdkb3VibGUnIGFyZ3VtZW50cyIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIHdoZXRo
ZXIgcHJpbnRmIHN1cHBvcnRzIGluZmluaXRlICdkb3VibGUnIGFyZ3VtZW50cy4uLiAiID4mNjsg
fQppZiAke2dsX2N2X2Z1bmNfcHJpbnRmX2luZmluaXRlKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNf
ZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCgogICAgICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGls
aW5nIiA9IHllczsgdGhlbiA6CgogICAgICAgICBjYXNlICIkaG9zdF9vcyIgaW4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIyBHdWVzcyB5ZXMgb24gZ2xpYmMgc3lzdGVtcy4KICAg
ICAgICAgICAqLWdudSopICAgICAgICAgICAgICAgZ2xfY3ZfZnVuY19wcmludGZfaW5maW5pdGU9
Imd1ZXNzaW5nIHllcyI7OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEd1ZXNz
IHllcyBvbiBGcmVlQlNEID49IDYuCiAgICAgICAgICAgZnJlZWJzZFsxLTVdKikgICAgICAgIGds
X2N2X2Z1bmNfcHJpbnRmX2luZmluaXRlPSJndWVzc2luZyBubyI7OwogICAgICAgICAgIGZyZWVi
c2QqIHwga2ZyZWVic2QqKSBnbF9jdl9mdW5jX3ByaW50Zl9pbmZpbml0ZT0iZ3Vlc3NpbmcgeWVz
Ijs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgR3Vlc3MgeWVzIG9uIE1hYyBP
UyBYID49IDEwLjMuCiAgICAgICAgICAgZGFyd2luWzEtNl0uKikgICAgICAgIGdsX2N2X2Z1bmNf
cHJpbnRmX2luZmluaXRlPSJndWVzc2luZyBubyI7OwogICAgICAgICAgIGRhcndpbiopICAgICAg
ICAgICAgICBnbF9jdl9mdW5jX3ByaW50Zl9pbmZpbml0ZT0iZ3Vlc3NpbmcgeWVzIjs7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgR3Vlc3MgeWVzIG9uIEhQLVVYID49IDExLgog
ICAgICAgICAgIGhwdXhbNy05XSogfCBocHV4MTAqKSBnbF9jdl9mdW5jX3ByaW50Zl9pbmZpbml0
ZT0iZ3Vlc3Npbmcgbm8iOzsKICAgICAgICAgICBocHV4KikgICAgICAgICAgICAgICAgZ2xfY3Zf
ZnVuY19wcmludGZfaW5maW5pdGU9Imd1ZXNzaW5nIHllcyI7OwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjIEd1ZXNzIHllcyBvbiBOZXRCU0QgPj0gMy4KICAgICAgICAgICBuZXRi
c2RbMS0yXSogfCBuZXRic2RlbGZbMS0yXSogfCBuZXRic2Rhb3V0WzEtMl0qIHwgbmV0YnNkY29m
ZlsxLTJdKikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfY3ZfZnVuY19wcmlu
dGZfaW5maW5pdGU9Imd1ZXNzaW5nIG5vIjs7CiAgICAgICAgICAgbmV0YnNkKikgICAgICAgICAg
ICAgIGdsX2N2X2Z1bmNfcHJpbnRmX2luZmluaXRlPSJndWVzc2luZyB5ZXMiOzsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIyBHdWVzcyB5ZXMgb24gQmVPUy4KICAgICAgICAgICBi
ZW9zKikgICAgICAgICAgICAgICAgZ2xfY3ZfZnVuY19wcmludGZfaW5maW5pdGU9Imd1ZXNzaW5n
IHllcyI7OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIElmIHdlIGRvbid0IGtu
b3csIGFzc3VtZSB0aGUgd29yc3QuCiAgICAgICAgICAgKikgICAgICAgICAgICAgICAgICAgIGds
X2N2X2Z1bmNfcHJpbnRmX2luZmluaXRlPSJndWVzc2luZyBubyI7OwogICAgICAgICBlc2FjCgpl
bHNlCiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQg
Y29uZmRlZnMuaC4gICovCgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0cmluZy5oPgpz
dGF0aWMgaW50CnN0cmlzbmFuIChjb25zdCBjaGFyICpzdHJpbmcsIHNpemVfdCBzdGFydF9pbmRl
eCwgc2l6ZV90IGVuZF9pbmRleCkKewogIGlmIChzdGFydF9pbmRleCA8IGVuZF9pbmRleCkKICAg
IHsKICAgICAgaWYgKHN0cmluZ1tzdGFydF9pbmRleF0gPT0gJy0nKQogICAgICAgIHN0YXJ0X2lu
ZGV4Kys7CiAgICAgIGlmIChzdGFydF9pbmRleCArIDMgPD0gZW5kX2luZGV4CiAgICAgICAgICAm
JiBtZW1jbXAgKHN0cmluZyArIHN0YXJ0X2luZGV4LCAibmFuIiwgMykgPT0gMCkKICAgICAgICB7
CiAgICAgICAgICBzdGFydF9pbmRleCArPSAzOwogICAgICAgICAgaWYgKHN0YXJ0X2luZGV4ID09
IGVuZF9pbmRleAogICAgICAgICAgICAgIHx8IChzdHJpbmdbc3RhcnRfaW5kZXhdID09ICcoJyAm
JiBzdHJpbmdbZW5kX2luZGV4IC0gMV0gPT0gJyknKSkKICAgICAgICAgICAgcmV0dXJuIDE7CiAg
ICAgICAgfQogICAgfQogIHJldHVybiAwOwp9CnN0YXRpYyBpbnQKaGF2ZV9taW51c196ZXJvICgp
CnsKICBzdGF0aWMgZG91YmxlIHBsdXNfemVybyA9IDAuMDsKICBkb3VibGUgbWludXNfemVybyA9
IC0gcGx1c196ZXJvOwogIHJldHVybiBtZW1jbXAgKCZwbHVzX3plcm8sICZtaW51c196ZXJvLCBz
aXplb2YgKGRvdWJsZSkpICE9IDA7Cn0Kc3RhdGljIGNoYXIgYnVmWzEwMDAwXTsKc3RhdGljIGRv
dWJsZSB6ZXJvID0gMC4wOwppbnQgbWFpbiAoKQp7CiAgaW50IHJlc3VsdCA9IDA7CiAgaWYgKHNw
cmludGYgKGJ1ZiwgIiVmIiwgMS4wIC8gemVybykgPCAwCiAgICAgIHx8IChzdHJjbXAgKGJ1Ziwg
ImluZiIpICE9IDAgJiYgc3RyY21wIChidWYsICJpbmZpbml0eSIpICE9IDApKQogICAgcmVzdWx0
IHw9IDE7CiAgaWYgKHNwcmludGYgKGJ1ZiwgIiVmIiwgLTEuMCAvIHplcm8pIDwgMAogICAgICB8
fCAoc3RyY21wIChidWYsICItaW5mIikgIT0gMCAmJiBzdHJjbXAgKGJ1ZiwgIi1pbmZpbml0eSIp
ICE9IDApKQogICAgcmVzdWx0IHw9IDE7CiAgaWYgKHNwcmludGYgKGJ1ZiwgIiVmIiwgemVybyAv
IHplcm8pIDwgMAogICAgICB8fCAhc3RyaXNuYW4gKGJ1ZiwgMCwgc3RybGVuIChidWYpKSkKICAg
IHJlc3VsdCB8PSAyOwogIGlmIChzcHJpbnRmIChidWYsICIlZSIsIDEuMCAvIHplcm8pIDwgMAog
ICAgICB8fCAoc3RyY21wIChidWYsICJpbmYiKSAhPSAwICYmIHN0cmNtcCAoYnVmLCAiaW5maW5p
dHkiKSAhPSAwKSkKICAgIHJlc3VsdCB8PSA0OwogIGlmIChzcHJpbnRmIChidWYsICIlZSIsIC0x
LjAgLyB6ZXJvKSA8IDAKICAgICAgfHwgKHN0cmNtcCAoYnVmLCAiLWluZiIpICE9IDAgJiYgc3Ry
Y21wIChidWYsICItaW5maW5pdHkiKSAhPSAwKSkKICAgIHJlc3VsdCB8PSA0OwogIGlmIChzcHJp
bnRmIChidWYsICIlZSIsIHplcm8gLyB6ZXJvKSA8IDAKICAgICAgfHwgIXN0cmlzbmFuIChidWYs
IDAsIHN0cmxlbiAoYnVmKSkpCiAgICByZXN1bHQgfD0gODsKICBpZiAoc3ByaW50ZiAoYnVmLCAi
JWciLCAxLjAgLyB6ZXJvKSA8IDAKICAgICAgfHwgKHN0cmNtcCAoYnVmLCAiaW5mIikgIT0gMCAm
JiBzdHJjbXAgKGJ1ZiwgImluZmluaXR5IikgIT0gMCkpCiAgICByZXN1bHQgfD0gMTY7CiAgaWYg
KHNwcmludGYgKGJ1ZiwgIiVnIiwgLTEuMCAvIHplcm8pIDwgMAogICAgICB8fCAoc3RyY21wIChi
dWYsICItaW5mIikgIT0gMCAmJiBzdHJjbXAgKGJ1ZiwgIi1pbmZpbml0eSIpICE9IDApKQogICAg
cmVzdWx0IHw9IDE2OwogIGlmIChzcHJpbnRmIChidWYsICIlZyIsIHplcm8gLyB6ZXJvKSA8IDAK
ICAgICAgfHwgIXN0cmlzbmFuIChidWYsIDAsIHN0cmxlbiAoYnVmKSkpCiAgICByZXN1bHQgfD0g
MzI7CiAgLyogVGhpcyB0ZXN0IGZhaWxzIG9uIEhQLVVYIDEwLjIwLiAgKi8KICBpZiAoaGF2ZV9t
aW51c196ZXJvICgpKQogICAgaWYgKHNwcmludGYgKGJ1ZiwgIiVnIiwgLSB6ZXJvKSA8IDAKICAg
ICAgICB8fCBzdHJjbXAgKGJ1ZiwgIi0wIikgIT0gMCkKICAgIHJlc3VsdCB8PSA2NDsKICByZXR1
cm4gcmVzdWx0Owp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoK
ICBnbF9jdl9mdW5jX3ByaW50Zl9pbmZpbml0ZT15ZXMKZWxzZQogIGdsX2N2X2Z1bmNfcHJpbnRm
X2luZmluaXRlPW5vCmZpCnJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91
dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0
ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dApmaQoKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfZnVuY19wcmludGZfaW5maW5pdGUiID4m
NQokYXNfZWNobyAiJGdsX2N2X2Z1bmNfcHJpbnRmX2luZmluaXRlIiA+JjY7IH0KCgogICB7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgYnl0
ZSBvcmRlcmluZyBpcyBiaWdlbmRpYW4iID4mNQokYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVy
IGJ5dGUgb3JkZXJpbmcgaXMgYmlnZW5kaWFuLi4uICIgPiY2OyB9CmlmICR7YWNfY3ZfY19iaWdl
bmRpYW4rOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UK
ICBhY19jdl9jX2JpZ2VuZGlhbj11bmtub3duCiAgICAjIFNlZSBpZiB3ZSdyZSBkZWFsaW5nIHdp
dGggYSB1bml2ZXJzYWwgY29tcGlsZXIuCiAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5j
b25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2lmbmRlZiBfX0FQUExFX0ND
X18KCSAgICAgICBub3QgYSB1bml2ZXJzYWwgY2FwYWJsZSBjb21waWxlcgoJICAgICAjZW5kaWYK
CSAgICAgdHlwZWRlZiBpbnQgZHVtbXk7CgpfQUNFT0YKaWYgYWNfZm5fY190cnlfY29tcGlsZSAi
JExJTkVOTyI7IHRoZW4gOgoKCSMgQ2hlY2sgZm9yIHBvdGVudGlhbCAtYXJjaCBmbGFncy4gIEl0
IGlzIG5vdCB1bml2ZXJzYWwgdW5sZXNzCgkjIHRoZXJlIGFyZSBhdCBsZWFzdCB0d28gLWFyY2gg
ZmxhZ3Mgd2l0aCBkaWZmZXJlbnQgdmFsdWVzLgoJYWNfYXJjaD0KCWFjX3ByZXY9Cglmb3IgYWNf
d29yZCBpbiAkQ0MgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1M7IGRvCgkgaWYgdGVzdCAtbiAi
JGFjX3ByZXYiOyB0aGVuCgkgICBjYXNlICRhY193b3JkIGluCgkgICAgIGk/ODYgfCB4ODZfNjQg
fCBwcGMgfCBwcGM2NCkKCSAgICAgICBpZiB0ZXN0IC16ICIkYWNfYXJjaCIgfHwgdGVzdCAiJGFj
X2FyY2giID0gIiRhY193b3JkIjsgdGhlbgoJCSBhY19hcmNoPSRhY193b3JkCgkgICAgICAgZWxz
ZQoJCSBhY19jdl9jX2JpZ2VuZGlhbj11bml2ZXJzYWwKCQkgYnJlYWsKCSAgICAgICBmaQoJICAg
ICAgIDs7CgkgICBlc2FjCgkgICBhY19wcmV2PQoJIGVsaWYgdGVzdCAieCRhY193b3JkIiA9ICJ4
LWFyY2giOyB0aGVuCgkgICBhY19wcmV2PWFyY2gKCSBmaQogICAgICAgZG9uZQpmaQpybSAtZiBj
b3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKICAg
IGlmIHRlc3QgJGFjX2N2X2NfYmlnZW5kaWFuID0gdW5rbm93bjsgdGhlbgogICAgICAjIFNlZSBp
ZiBzeXMvcGFyYW0uaCBkZWZpbmVzIHRoZSBCWVRFX09SREVSIG1hY3JvLgogICAgICBjYXQgY29u
ZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAg
Ki8KI2luY2x1ZGUgPHN5cy90eXBlcy5oPgoJICAgICAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Cgpp
bnQKbWFpbiAoKQp7CiNpZiAhIChkZWZpbmVkIEJZVEVfT1JERVIgJiYgZGVmaW5lZCBCSUdfRU5E
SUFOIFwKCQkgICAgICYmIGRlZmluZWQgTElUVExFX0VORElBTiAmJiBCWVRFX09SREVSICYmIEJJ
R19FTkRJQU4gXAoJCSAgICAgJiYgTElUVExFX0VORElBTikKCSAgICAgIGJvZ3VzIGVuZGlhbiBt
YWNyb3MKCSAgICAgI2VuZGlmCgogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNfZm5fY190
cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgogICMgSXQgZG9lczsgbm93IHNlZSB3aGV0aGVy
IGl0IGRlZmluZWQgdG8gQklHX0VORElBTiBvciBub3QuCgkgY2F0IGNvbmZkZWZzLmggLSA8PF9B
Q0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCiNpbmNsdWRlIDxz
eXMvdHlwZXMuaD4KCQkjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CgppbnQKbWFpbiAoKQp7CiNpZiBC
WVRFX09SREVSICE9IEJJR19FTkRJQU4KCQkgbm90IGJpZyBlbmRpYW4KCQkjZW5kaWYKCiAgOwog
IHJldHVybiAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhl
biA6CiAgYWNfY3ZfY19iaWdlbmRpYW49eWVzCmVsc2UKICBhY19jdl9jX2JpZ2VuZGlhbj1ubwpm
aQpybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRh
Y19leHQKZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25m
dGVzdC4kYWNfZXh0CiAgICBmaQogICAgaWYgdGVzdCAkYWNfY3ZfY19iaWdlbmRpYW4gPSB1bmtu
b3duOyB0aGVuCiAgICAgICMgU2VlIGlmIDxsaW1pdHMuaD4gZGVmaW5lcyBfTElUVExFX0VORElB
TiBvciBfQklHX0VORElBTiAoZS5nLiwgU29sYXJpcykuCiAgICAgIGNhdCBjb25mZGVmcy5oIC0g
PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVk
ZSA8bGltaXRzLmg+CgppbnQKbWFpbiAoKQp7CiNpZiAhIChkZWZpbmVkIF9MSVRUTEVfRU5ESUFO
IHx8IGRlZmluZWQgX0JJR19FTkRJQU4pCgkgICAgICBib2d1cyBlbmRpYW4gbWFjcm9zCgkgICAg
ICNlbmRpZgoKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUg
IiRMSU5FTk8iOyB0aGVuIDoKICAjIEl0IGRvZXM7IG5vdyBzZWUgd2hldGhlciBpdCBkZWZpbmVk
IHRvIF9CSUdfRU5ESUFOIG9yIG5vdC4KCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25m
dGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPGxpbWl0cy5oPgoK
aW50Cm1haW4gKCkKewojaWZuZGVmIF9CSUdfRU5ESUFOCgkJIG5vdCBiaWcgZW5kaWFuCgkJI2Vu
ZGlmCgogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJ
TkVOTyI7IHRoZW4gOgogIGFjX2N2X2NfYmlnZW5kaWFuPXllcwplbHNlCiAgYWNfY3ZfY19iaWdl
bmRpYW49bm8KZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBj
b25mdGVzdC4kYWNfZXh0CmZpCnJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19v
YmpleHQgY29uZnRlc3QuJGFjX2V4dAogICAgZmkKICAgIGlmIHRlc3QgJGFjX2N2X2NfYmlnZW5k
aWFuID0gdW5rbm93bjsgdGhlbgogICAgICAjIENvbXBpbGUgYSB0ZXN0IHByb2dyYW0uCiAgICAg
IGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKICAjIFRyeSB0byBndWVz
cyBieSBncmVwcGluZyB2YWx1ZXMgZnJvbSBhbiBvYmplY3QgZmlsZS4KCSBjYXQgY29uZmRlZnMu
aCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8Kc2hv
cnQgaW50IGFzY2lpX21tW10gPQoJCSAgeyAweDQyNDksIDB4NDc2NSwgMHg2RTQ0LCAweDY5NjEs
IDB4NkU1MywgMHg3OTUzLCAwIH07CgkJc2hvcnQgaW50IGFzY2lpX2lpW10gPQoJCSAgeyAweDY5
NEMsIDB4NTQ1NCwgMHg2NTZDLCAweDZFNDUsIDB4Njk0NCwgMHg2RTYxLCAwIH07CgkJaW50IHVz
ZV9hc2NpaSAoaW50IGkpIHsKCQkgIHJldHVybiBhc2NpaV9tbVtpXSArIGFzY2lpX2lpW2ldOwoJ
CX0KCQlzaG9ydCBpbnQgZWJjZGljX2lpW10gPQoJCSAgeyAweDg5RDMsIDB4RTNFMywgMHg4NTkz
LCAweDk1QzUsIDB4ODlDNCwgMHg5NTgxLCAwIH07CgkJc2hvcnQgaW50IGViY2RpY19tbVtdID0K
CQkgIHsgMHhDMkM5LCAweEM3ODUsIDB4OTVDNCwgMHg4OTgxLCAweDk1RTIsIDB4QThFMiwgMCB9
OwoJCWludCB1c2VfZWJjZGljIChpbnQgaSkgewoJCSAgcmV0dXJuIGViY2RpY19tbVtpXSArIGVi
Y2RpY19paVtpXTsKCQl9CgkJZXh0ZXJuIGludCBmb287CgppbnQKbWFpbiAoKQp7CnJldHVybiB1
c2VfYXNjaWkgKGZvbykgPT0gdXNlX2ViY2RpYyAoZm9vKTsKICA7CiAgcmV0dXJuIDA7Cn0KX0FD
RU9GCmlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKICBpZiBncmVwIEJJ
R2VuRGlhblN5UyBjb25mdGVzdC4kYWNfb2JqZXh0ID4vZGV2L251bGw7IHRoZW4KCSAgICAgIGFj
X2N2X2NfYmlnZW5kaWFuPXllcwoJICAgIGZpCgkgICAgaWYgZ3JlcCBMaVRUbGVFbkRpYW4gY29u
ZnRlc3QuJGFjX29iamV4dCA+L2Rldi9udWxsIDsgdGhlbgoJICAgICAgaWYgdGVzdCAiJGFjX2N2
X2NfYmlnZW5kaWFuIiA9IHVua25vd247IHRoZW4KCQlhY19jdl9jX2JpZ2VuZGlhbj1ubwoJICAg
ICAgZWxzZQoJCSMgZmluZGluZyBib3RoIHN0cmluZ3MgaXMgdW5saWtlbHkgdG8gaGFwcGVuLCBi
dXQgd2hvIGtub3dzPwoJCWFjX2N2X2NfYmlnZW5kaWFuPXVua25vd24KCSAgICAgIGZpCgkgICAg
ZmkKZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVz
dC4kYWNfZXh0CmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNf
ZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KJGFjX2luY2x1ZGVzX2RlZmF1bHQKaW50Cm1haW4g
KCkKewoKCSAgICAgLyogQXJlIHdlIGxpdHRsZSBvciBiaWcgZW5kaWFuPyAgRnJvbSBIYXJiaXNv
biZTdGVlbGUuICAqLwoJICAgICB1bmlvbgoJICAgICB7CgkgICAgICAgbG9uZyBpbnQgbDsKCSAg
ICAgICBjaGFyIGNbc2l6ZW9mIChsb25nIGludCldOwoJICAgICB9IHU7CgkgICAgIHUubCA9IDE7
CgkgICAgIHJldHVybiB1LmNbc2l6ZW9mIChsb25nIGludCkgLSAxXSA9PSAxOwoKICA7CiAgcmV0
dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgogIGFj
X2N2X2NfYmlnZW5kaWFuPW5vCmVsc2UKICBhY19jdl9jX2JpZ2VuZGlhbj15ZXMKZmkKcm0gLWYg
Y29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19l
eGVleHQgXAogIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNf
ZXh0CmZpCgogICAgZmkKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiByZXN1bHQ6ICRhY19jdl9jX2JpZ2VuZGlhbiIgPiY1CiRhc19lY2hvICIkYWNfY3ZfY19iaWdl
bmRpYW4iID4mNjsgfQogY2FzZSAkYWNfY3ZfY19iaWdlbmRpYW4gaW4gIygKICAgeWVzKQogICAg
ICRhc19lY2hvICIjZGVmaW5lIFdPUkRTX0JJR0VORElBTiAxIiA+PmNvbmZkZWZzLmgKOzsgIygK
ICAgbm8pCiAgICAgIDs7ICMoCiAgIHVuaXZlcnNhbCkKCiRhc19lY2hvICIjZGVmaW5lIEFDX0FQ
UExFX1VOSVZFUlNBTF9CVUlMRCAxIiA+PmNvbmZkZWZzLmgKCiAgICAgOzsgIygKICAgKikKICAg
ICBhc19mbl9lcnJvciAkPyAidW5rbm93biBlbmRpYW5uZXNzCiBwcmVzZXR0aW5nIGFjX2N2X2Nf
YmlnZW5kaWFuPW5vIChvciB5ZXMpIHdpbGwgaGVscCIgIiRMSU5FTk8iIDUgOzsKIGVzYWMKCgoK
ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRo
ZXIgbG9uZyBkb3VibGUgYW5kIGRvdWJsZSBhcmUgdGhlIHNhbWUiID4mNQokYXNfZWNob19uICJj
aGVja2luZyB3aGV0aGVyIGxvbmcgZG91YmxlIGFuZCBkb3VibGUgYXJlIHRoZSBzYW1lLi4uICIg
PiY2OyB9CmlmICR7Z2xfY3ZfbG9uZ19kb3VibGVfZXF1YWxzX2RvdWJsZSs6fSBmYWxzZTsgdGhl
biA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0g
PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVk
ZSA8ZmxvYXQuaD4KaW50Cm1haW4gKCkKewp0eXBlZGVmIGludCBjaGVja1tzaXplb2YgKGxvbmcg
ZG91YmxlKSA9PSBzaXplb2YgKGRvdWJsZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JiYgTERCTF9NQU5UX0RJRyA9PSBEQkxfTUFOVF9ESUcKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJiYgTERCTF9NQVhfRVhQID09IERCTF9NQVhfRVhQCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICYmIExEQkxfTUlOX0VYUCA9PSBEQkxfTUlOX0VYUAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA/IDEgOiAtMV07CgogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNf
Zm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgogIGdsX2N2X2xvbmdfZG91YmxlX2Vx
dWFsc19kb3VibGU9eWVzCmVsc2UKICBnbF9jdl9sb25nX2RvdWJsZV9lcXVhbHNfZG91YmxlPW5v
CmZpCnJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3Qu
JGFjX2V4dAoKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1
bHQ6ICRnbF9jdl9sb25nX2RvdWJsZV9lcXVhbHNfZG91YmxlIiA+JjUKJGFzX2VjaG8gIiRnbF9j
dl9sb25nX2RvdWJsZV9lcXVhbHNfZG91YmxlIiA+JjY7IH0KICBpZiB0ZXN0ICRnbF9jdl9sb25n
X2RvdWJsZV9lcXVhbHNfZG91YmxlID0geWVzOyB0aGVuCgokYXNfZWNobyAiI2RlZmluZSBIQVZF
X1NBTUVfTE9OR19ET1VCTEVfQVNfRE9VQkxFIDEiID4+Y29uZmRlZnMuaAoKICAgIEhBVkVfU0FN
RV9MT05HX0RPVUJMRV9BU19ET1VCTEU9MQogIGVsc2UKICAgIEhBVkVfU0FNRV9MT05HX0RPVUJM
RV9BU19ET1VCTEU9MAogIGZpCgoKCgoKCgogICAgICAgICBpZiB0ZXN0IC1uICIkZ2xfcHJpbnRm
X3NhZmUiOyB0aGVuCgokYXNfZWNobyAiI2RlZmluZSBDSEVDS19QUklOVEZfU0FGRSAxIiA+PmNv
bmZkZWZzLmgKCiAgZmkKICBjYXNlICIkZ2xfY3ZfZnVuY19wcmludGZfbG9uZ19kb3VibGUiIGlu
CiAgICAqeWVzKQogICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IGNoZWNraW5nIHdoZXRoZXIgcHJpbnRmIHN1cHBvcnRzIGluZmluaXRlICdsb25nIGRvdWJsZScg
YXJndW1lbnRzIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBwcmludGYgc3VwcG9y
dHMgaW5maW5pdGUgJ2xvbmcgZG91YmxlJyBhcmd1bWVudHMuLi4gIiA+JjY7IH0KaWYgJHtnbF9j
dl9mdW5jX3ByaW50Zl9pbmZpbml0ZV9sb25nX2RvdWJsZSs6fSBmYWxzZTsgdGhlbiA6CiAgJGFz
X2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQoKICAgICAgICAgIGlmIHRlc3QgIiRjcm9zc19j
b21waWxpbmciID0geWVzOyB0aGVuIDoKCiAgICAgICAgICAgICBjYXNlICIkaG9zdF9jcHUiIGlu
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEd1ZXNzIG5vIG9uIGlhNjQs
IHg4Nl82NCwgaTM4Ni4KICAgICAgICAgICAgICAgaWE2NCB8IHg4Nl82NCB8IGkqODYpIGdsX2N2
X2Z1bmNfcHJpbnRmX2luZmluaXRlX2xvbmdfZG91YmxlPSJndWVzc2luZyBubyI7OwogICAgICAg
ICAgICAgICAqKQogICAgICAgICAgICAgICAgIGNhc2UgIiRob3N0X29zIiBpbgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgR3Vlc3MgeWVzIG9uIGdsaWJjIHN5c3Rl
bXMuCiAgICAgICAgICAgICAgICAgICAqLWdudSopICAgICAgICAgICAgICAgZ2xfY3ZfZnVuY19w
cmludGZfaW5maW5pdGVfbG9uZ19kb3VibGU9Imd1ZXNzaW5nIHllcyI7OwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgR3Vlc3MgeWVzIG9uIEZyZWVCU0QgPj0gNi4K
ICAgICAgICAgICAgICAgICAgIGZyZWVic2RbMS01XSopICAgICAgICBnbF9jdl9mdW5jX3ByaW50
Zl9pbmZpbml0ZV9sb25nX2RvdWJsZT0iZ3Vlc3Npbmcgbm8iOzsKICAgICAgICAgICAgICAgICAg
IGZyZWVic2QqIHwga2ZyZWVic2QqKSBnbF9jdl9mdW5jX3ByaW50Zl9pbmZpbml0ZV9sb25nX2Rv
dWJsZT0iZ3Vlc3NpbmcgeWVzIjs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIyBHdWVzcyB5ZXMgb24gSFAtVVggPj0gMTEuCiAgICAgICAgICAgICAgICAgICBocHV4
WzctOV0qIHwgaHB1eDEwKikgZ2xfY3ZfZnVuY19wcmludGZfaW5maW5pdGVfbG9uZ19kb3VibGU9
Imd1ZXNzaW5nIG5vIjs7CiAgICAgICAgICAgICAgICAgICBocHV4KikgICAgICAgICAgICAgICAg
Z2xfY3ZfZnVuY19wcmludGZfaW5maW5pdGVfbG9uZ19kb3VibGU9Imd1ZXNzaW5nIHllcyI7Owog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgd2UgZG9uJ3Qga25v
dywgYXNzdW1lIHRoZSB3b3JzdC4KICAgICAgICAgICAgICAgICAgICopICAgICAgICAgICAgICAg
ICAgICBnbF9jdl9mdW5jX3ByaW50Zl9pbmZpbml0ZV9sb25nX2RvdWJsZT0iZ3Vlc3Npbmcgbm8i
OzsKICAgICAgICAgICAgICAgICBlc2FjCiAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAg
IGVzYWMKCmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0
Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCgojaW5jbHVkZSA8c3RkbGliLmg+CiNpZiBkZWZpbmVk
IF9fTUFDSF9fICYmIGRlZmluZWQgX19BUFBMRV9fCi8qIEF2b2lkIGEgY3Jhc2ggb24gTWFjIE9T
IFguICAqLwojaW5jbHVkZSA8bWFjaC9tYWNoLmg+CiNpbmNsdWRlIDxtYWNoL21hY2hfZXJyb3Iu
aD4KI2luY2x1ZGUgPG1hY2gvdGhyZWFkX3N0YXR1cy5oPgojaW5jbHVkZSA8bWFjaC9leGNlcHRp
b24uaD4KI2luY2x1ZGUgPG1hY2gvdGFzay5oPgojaW5jbHVkZSA8cHRocmVhZC5oPgovKiBUaGUg
ZXhjZXB0aW9uIHBvcnQgb24gd2hpY2ggb3VyIHRocmVhZCBsaXN0ZW5zLiAgKi8Kc3RhdGljIG1h
Y2hfcG9ydF90IG91cl9leGNlcHRpb25fcG9ydDsKLyogVGhlIG1haW4gZnVuY3Rpb24gb2YgdGhl
IHRocmVhZCBsaXN0ZW5pbmcgZm9yIGV4Y2VwdGlvbnMgb2YgdHlwZQogICBFWENfQkFEX0FDQ0VT
Uy4gICovCnN0YXRpYyB2b2lkICoKbWFjaF9leGNlcHRpb25fdGhyZWFkICh2b2lkICphcmcpCnsK
ICAvKiBCdWZmZXIgZm9yIGEgbWVzc2FnZSB0byBiZSByZWNlaXZlZC4gICovCiAgc3RydWN0IHsK
ICAgIG1hY2hfbXNnX2hlYWRlcl90IGhlYWQ7CiAgICBtYWNoX21zZ19ib2R5X3QgbXNnaF9ib2R5
OwogICAgY2hhciBkYXRhWzEwMjRdOwogIH0gbXNnOwogIG1hY2hfbXNnX3JldHVybl90IHJldHZh
bDsKICAvKiBXYWl0IGZvciBhIG1lc3NhZ2Ugb24gdGhlIGV4Y2VwdGlvbiBwb3J0LiAgKi8KICBy
ZXR2YWwgPSBtYWNoX21zZyAoJm1zZy5oZWFkLCBNQUNIX1JDVl9NU0cgfCBNQUNIX1JDVl9MQVJH
RSwgMCwgc2l6ZW9mIChtc2cpLAogICAgICAgICAgICAgICAgICAgICBvdXJfZXhjZXB0aW9uX3Bv
cnQsIE1BQ0hfTVNHX1RJTUVPVVRfTk9ORSwgTUFDSF9QT1JUX05VTEwpOwogIGlmIChyZXR2YWwg
IT0gTUFDSF9NU0dfU1VDQ0VTUykKICAgIGFib3J0ICgpOwogIGV4aXQgKDEpOwp9CnN0YXRpYyB2
b2lkCm5vY3Jhc2hfaW5pdCAodm9pZCkKewogIG1hY2hfcG9ydF90IHNlbGYgPSBtYWNoX3Rhc2tf
c2VsZiAoKTsKICAvKiBBbGxvY2F0ZSBhIHBvcnQgb24gd2hpY2ggdGhlIHRocmVhZCBzaGFsbCBs
aXN0ZW4gZm9yIGV4Y2VwdGlvbnMuICAqLwogIGlmIChtYWNoX3BvcnRfYWxsb2NhdGUgKHNlbGYs
IE1BQ0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAmb3VyX2V4Y2VwdGlvbl9wb3J0KQogICAgICA9PSBL
RVJOX1NVQ0NFU1MpIHsKICAgIC8qIFNlZSBodHRwOi8vd2ViLm1pdC5lZHUvZGFyd2luL3NyYy9t
b2R1bGVzL3hudS9vc2Ztay9tYW4vbWFjaF9wb3J0X2luc2VydF9yaWdodC5odG1sLiAgKi8KICAg
IGlmIChtYWNoX3BvcnRfaW5zZXJ0X3JpZ2h0IChzZWxmLCBvdXJfZXhjZXB0aW9uX3BvcnQsIG91
cl9leGNlcHRpb25fcG9ydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQUNIX01T
R19UWVBFX01BS0VfU0VORCkKICAgICAgICA9PSBLRVJOX1NVQ0NFU1MpIHsKICAgICAgLyogVGhl
IGV4Y2VwdGlvbnMgd2Ugd2FudCB0byBjYXRjaC4gIE9ubHkgRVhDX0JBRF9BQ0NFU1MgaXMgaW50
ZXJlc3RpbmcKICAgICAgICAgZm9yIHVzLiAgKi8KICAgICAgZXhjZXB0aW9uX21hc2tfdCBtYXNr
ID0gRVhDX01BU0tfQkFEX0FDQ0VTUzsKICAgICAgLyogQ3JlYXRlIHRoZSB0aHJlYWQgbGlzdGVu
aW5nIG9uIHRoZSBleGNlcHRpb24gcG9ydC4gICovCiAgICAgIHB0aHJlYWRfYXR0cl90IGF0dHI7
CiAgICAgIHB0aHJlYWRfdCB0aHJlYWQ7CiAgICAgIGlmIChwdGhyZWFkX2F0dHJfaW5pdCAoJmF0
dHIpID09IDAKICAgICAgICAgICYmIHB0aHJlYWRfYXR0cl9zZXRkZXRhY2hzdGF0ZSAoJmF0dHIs
IFBUSFJFQURfQ1JFQVRFX0RFVEFDSEVEKSA9PSAwCiAgICAgICAgICAmJiBwdGhyZWFkX2NyZWF0
ZSAoJnRocmVhZCwgJmF0dHIsIG1hY2hfZXhjZXB0aW9uX3RocmVhZCwgTlVMTCkgPT0gMCkgewog
ICAgICAgIHB0aHJlYWRfYXR0cl9kZXN0cm95ICgmYXR0cik7CiAgICAgICAgLyogUmVwbGFjZSB0
aGUgZXhjZXB0aW9uIHBvcnQgaW5mbyBmb3IgdGhlc2UgZXhjZXB0aW9ucyB3aXRoIG91ciBvd24u
CiAgICAgICAgICAgTm90ZSB0aGF0IHdlIHJlcGxhY2UgdGhlIGV4Y2VwdGlvbiBwb3J0IGZvciB0
aGUgZW50aXJlIHRhc2ssIG5vdCBvbmx5CiAgICAgICAgICAgZm9yIGEgcGFydGljdWxhciB0aHJl
YWQuICBUaGlzIGhhcyB0aGUgZWZmZWN0IHRoYXQgd2hlbiBvdXIgZXhjZXB0aW9uCiAgICAgICAg
ICAgcG9ydCBnZXRzIHRoZSBtZXNzYWdlLCB0aGUgdGhyZWFkIHNwZWNpZmljIGV4Y2VwdGlvbiBw
b3J0IGhhcyBhbHJlYWR5CiAgICAgICAgICAgYmVlbiBhc2tlZCwgYW5kIHdlIGRvbid0IG5lZWQg
dG8gYm90aGVyIGFib3V0IGl0LgogICAgICAgICAgIFNlZSBodHRwOi8vd2ViLm1pdC5lZHUvZGFy
d2luL3NyYy9tb2R1bGVzL3hudS9vc2Ztay9tYW4vdGFza19zZXRfZXhjZXB0aW9uX3BvcnRzLmh0
bWwuICAqLwogICAgICAgIHRhc2tfc2V0X2V4Y2VwdGlvbl9wb3J0cyAoc2VsZiwgbWFzaywgb3Vy
X2V4Y2VwdGlvbl9wb3J0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhDRVBU
SU9OX0RFRkFVTFQsIE1BQ0hJTkVfVEhSRUFEX1NUQVRFKTsKICAgICAgfQogICAgfQogIH0KfQoj
ZWxpZiAoZGVmaW5lZCBfV0lOMzIgfHwgZGVmaW5lZCBfX1dJTjMyX18pICYmICEgZGVmaW5lZCBf
X0NZR1dJTl9fCi8qIEF2b2lkIGEgY3Jhc2ggb24gbmF0aXZlIFdpbmRvd3MuICAqLwojZGVmaW5l
IFdJTjMyX0xFQU5fQU5EX01FQU4KI2luY2x1ZGUgPHdpbmRvd3MuaD4KI2luY2x1ZGUgPHdpbmVy
cm9yLmg+CnN0YXRpYyBMT05HIFdJTkFQSQpleGNlcHRpb25fZmlsdGVyIChFWENFUFRJT05fUE9J
TlRFUlMgKkV4Y2VwdGlvbkluZm8pCnsKICBzd2l0Y2ggKEV4Y2VwdGlvbkluZm8tPkV4Y2VwdGlv
blJlY29yZC0+RXhjZXB0aW9uQ29kZSkKICAgIHsKICAgIGNhc2UgRVhDRVBUSU9OX0FDQ0VTU19W
SU9MQVRJT046CiAgICBjYXNlIEVYQ0VQVElPTl9JTl9QQUdFX0VSUk9SOgogICAgY2FzZSBFWENF
UFRJT05fU1RBQ0tfT1ZFUkZMT1c6CiAgICBjYXNlIEVYQ0VQVElPTl9HVUFSRF9QQUdFOgogICAg
Y2FzZSBFWENFUFRJT05fUFJJVl9JTlNUUlVDVElPTjoKICAgIGNhc2UgRVhDRVBUSU9OX0lMTEVH
QUxfSU5TVFJVQ1RJT046CiAgICBjYXNlIEVYQ0VQVElPTl9EQVRBVFlQRV9NSVNBTElHTk1FTlQ6
CiAgICBjYXNlIEVYQ0VQVElPTl9BUlJBWV9CT1VORFNfRVhDRUVERUQ6CiAgICBjYXNlIEVYQ0VQ
VElPTl9OT05DT05USU5VQUJMRV9FWENFUFRJT046CiAgICAgIGV4aXQgKDEpOwogICAgfQogIHJl
dHVybiBFWENFUFRJT05fQ09OVElOVUVfU0VBUkNIOwp9CnN0YXRpYyB2b2lkCm5vY3Jhc2hfaW5p
dCAodm9pZCkKewogIFNldFVuaGFuZGxlZEV4Y2VwdGlvbkZpbHRlciAoKExQVE9QX0xFVkVMX0VY
Q0VQVElPTl9GSUxURVIpIGV4Y2VwdGlvbl9maWx0ZXIpOwp9CiNlbHNlCi8qIEF2b2lkIGEgY3Jh
c2ggb24gUE9TSVggc3lzdGVtcy4gICovCiNpbmNsdWRlIDxzaWduYWwuaD4KLyogQSBQT1NJWCBz
aWduYWwgaGFuZGxlci4gICovCnN0YXRpYyB2b2lkCmV4Y2VwdGlvbl9oYW5kbGVyIChpbnQgc2ln
KQp7CiAgZXhpdCAoMSk7Cn0Kc3RhdGljIHZvaWQKbm9jcmFzaF9pbml0ICh2b2lkKQp7CiNpZmRl
ZiBTSUdTRUdWCiAgc2lnbmFsIChTSUdTRUdWLCBleGNlcHRpb25faGFuZGxlcik7CiNlbmRpZgoj
aWZkZWYgU0lHQlVTCiAgc2lnbmFsIChTSUdCVVMsIGV4Y2VwdGlvbl9oYW5kbGVyKTsKI2VuZGlm
Cn0KI2VuZGlmCgojaW5jbHVkZSA8ZmxvYXQuaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRl
IDxzdHJpbmcuaD4Kc3RhdGljIGludApzdHJpc25hbiAoY29uc3QgY2hhciAqc3RyaW5nLCBzaXpl
X3Qgc3RhcnRfaW5kZXgsIHNpemVfdCBlbmRfaW5kZXgpCnsKICBpZiAoc3RhcnRfaW5kZXggPCBl
bmRfaW5kZXgpCiAgICB7CiAgICAgIGlmIChzdHJpbmdbc3RhcnRfaW5kZXhdID09ICctJykKICAg
ICAgICBzdGFydF9pbmRleCsrOwogICAgICBpZiAoc3RhcnRfaW5kZXggKyAzIDw9IGVuZF9pbmRl
eAogICAgICAgICAgJiYgbWVtY21wIChzdHJpbmcgKyBzdGFydF9pbmRleCwgIm5hbiIsIDMpID09
IDApCiAgICAgICAgewogICAgICAgICAgc3RhcnRfaW5kZXggKz0gMzsKICAgICAgICAgIGlmIChz
dGFydF9pbmRleCA9PSBlbmRfaW5kZXgKICAgICAgICAgICAgICB8fCAoc3RyaW5nW3N0YXJ0X2lu
ZGV4XSA9PSAnKCcgJiYgc3RyaW5nW2VuZF9pbmRleCAtIDFdID09ICcpJykpCiAgICAgICAgICAg
IHJldHVybiAxOwogICAgICAgIH0KICAgIH0KICByZXR1cm4gMDsKfQpzdGF0aWMgY2hhciBidWZb
MTAwMDBdOwpzdGF0aWMgbG9uZyBkb3VibGUgemVyb0wgPSAwLjBMOwppbnQgbWFpbiAoKQp7CiAg
aW50IHJlc3VsdCA9IDA7CiAgbm9jcmFzaF9pbml0KCk7CiAgaWYgKHNwcmludGYgKGJ1ZiwgIiVM
ZiIsIDEuMEwgLyB6ZXJvTCkgPCAwCiAgICAgIHx8IChzdHJjbXAgKGJ1ZiwgImluZiIpICE9IDAg
JiYgc3RyY21wIChidWYsICJpbmZpbml0eSIpICE9IDApKQogICAgcmVzdWx0IHw9IDE7CiAgaWYg
KHNwcmludGYgKGJ1ZiwgIiVMZiIsIC0xLjBMIC8gemVyb0wpIDwgMAogICAgICB8fCAoc3RyY21w
IChidWYsICItaW5mIikgIT0gMCAmJiBzdHJjbXAgKGJ1ZiwgIi1pbmZpbml0eSIpICE9IDApKQog
ICAgcmVzdWx0IHw9IDE7CiAgaWYgKHNwcmludGYgKGJ1ZiwgIiVMZiIsIHplcm9MIC8gemVyb0wp
IDwgMAogICAgICB8fCAhc3RyaXNuYW4gKGJ1ZiwgMCwgc3RybGVuIChidWYpKSkKICAgIHJlc3Vs
dCB8PSAxOwogIGlmIChzcHJpbnRmIChidWYsICIlTGUiLCAxLjBMIC8gemVyb0wpIDwgMAogICAg
ICB8fCAoc3RyY21wIChidWYsICJpbmYiKSAhPSAwICYmIHN0cmNtcCAoYnVmLCAiaW5maW5pdHki
KSAhPSAwKSkKICAgIHJlc3VsdCB8PSAxOwogIGlmIChzcHJpbnRmIChidWYsICIlTGUiLCAtMS4w
TCAvIHplcm9MKSA8IDAKICAgICAgfHwgKHN0cmNtcCAoYnVmLCAiLWluZiIpICE9IDAgJiYgc3Ry
Y21wIChidWYsICItaW5maW5pdHkiKSAhPSAwKSkKICAgIHJlc3VsdCB8PSAxOwogIGlmIChzcHJp
bnRmIChidWYsICIlTGUiLCB6ZXJvTCAvIHplcm9MKSA8IDAKICAgICAgfHwgIXN0cmlzbmFuIChi
dWYsIDAsIHN0cmxlbiAoYnVmKSkpCiAgICByZXN1bHQgfD0gMTsKICBpZiAoc3ByaW50ZiAoYnVm
LCAiJUxnIiwgMS4wTCAvIHplcm9MKSA8IDAKICAgICAgfHwgKHN0cmNtcCAoYnVmLCAiaW5mIikg
IT0gMCAmJiBzdHJjbXAgKGJ1ZiwgImluZmluaXR5IikgIT0gMCkpCiAgICByZXN1bHQgfD0gMTsK
ICBpZiAoc3ByaW50ZiAoYnVmLCAiJUxnIiwgLTEuMEwgLyB6ZXJvTCkgPCAwCiAgICAgIHx8IChz
dHJjbXAgKGJ1ZiwgIi1pbmYiKSAhPSAwICYmIHN0cmNtcCAoYnVmLCAiLWluZmluaXR5IikgIT0g
MCkpCiAgICByZXN1bHQgfD0gMTsKICBpZiAoc3ByaW50ZiAoYnVmLCAiJUxnIiwgemVyb0wgLyB6
ZXJvTCkgPCAwCiAgICAgIHx8ICFzdHJpc25hbiAoYnVmLCAwLCBzdHJsZW4gKGJ1ZikpKQogICAg
cmVzdWx0IHw9IDE7CiNpZiBDSEVDS19QUklOVEZfU0FGRSAmJiAoKGRlZmluZWQgX19pYTY0ICYm
IExEQkxfTUFOVF9ESUcgPT0gNjQpIHx8IChkZWZpbmVkIF9feDg2XzY0X18gfHwgZGVmaW5lZCBf
X2FtZDY0X18pIHx8IChkZWZpbmVkIF9faTM4NiB8fCBkZWZpbmVkIF9faTM4Nl9fIHx8IGRlZmlu
ZWQgX0kzODYgfHwgZGVmaW5lZCBfTV9JWDg2IHx8IGRlZmluZWQgX1g4Nl8pKSAmJiAhSEFWRV9T
QU1FX0xPTkdfRE9VQkxFX0FTX0RPVUJMRQovKiBSZXByZXNlbnRhdGlvbiBvZiBhbiA4MC1iaXQg
J2xvbmcgZG91YmxlJyBhcyBhbiBpbml0aWFsaXplciBmb3IgYSBzZXF1ZW5jZQogICBvZiAndW5z
aWduZWQgaW50JyB3b3Jkcy4gICovCiMgaWZkZWYgV09SRFNfQklHRU5ESUFOCiMgIGRlZmluZSBM
REJMODBfV09SRFMoZXhwb25lbnQsbWFudGhpLG1hbnRsbykgXAogICAgIHsgKCh1bnNpZ25lZCBp
bnQpIChleHBvbmVudCkgPDwgMTYpIHwgKCh1bnNpZ25lZCBpbnQpIChtYW50aGkpID4+IDE2KSwg
XAogICAgICAgKCh1bnNpZ25lZCBpbnQpIChtYW50aGkpIDw8IDE2KSB8ICh1bnNpZ25lZCBpbnQp
IChtYW50bG8pID4+IDE2KSwgICAgXAogICAgICAgKHVuc2lnbmVkIGludCkgKG1hbnRsbykgPDwg
MTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0KIyBlbHNl
CiMgIGRlZmluZSBMREJMODBfV09SRFMoZXhwb25lbnQsbWFudGhpLG1hbnRsbykgXAogICAgIHsg
bWFudGxvLCBtYW50aGksIGV4cG9uZW50IH0KIyBlbmRpZgogIHsgLyogUXVpZXQgTmFOLiAgKi8K
ICAgIHN0YXRpYyB1bmlvbiB7IHVuc2lnbmVkIGludCB3b3JkWzRdOyBsb25nIGRvdWJsZSB2YWx1
ZTsgfSB4ID0KICAgICAgeyBMREJMODBfV09SRFMgKDB4RkZGRiwgMHhDMzMzMzMzMywgMHgwMDAw
MDAwMCkgfTsKICAgIGlmIChzcHJpbnRmIChidWYsICIlTGYiLCB4LnZhbHVlKSA8IDAKICAgICAg
ICB8fCAhc3RyaXNuYW4gKGJ1ZiwgMCwgc3RybGVuIChidWYpKSkKICAgICAgcmVzdWx0IHw9IDI7
CiAgICBpZiAoc3ByaW50ZiAoYnVmLCAiJUxlIiwgeC52YWx1ZSkgPCAwCiAgICAgICAgfHwgIXN0
cmlzbmFuIChidWYsIDAsIHN0cmxlbiAoYnVmKSkpCiAgICAgIHJlc3VsdCB8PSAyOwogICAgaWYg
KHNwcmludGYgKGJ1ZiwgIiVMZyIsIHgudmFsdWUpIDwgMAogICAgICAgIHx8ICFzdHJpc25hbiAo
YnVmLCAwLCBzdHJsZW4gKGJ1ZikpKQogICAgICByZXN1bHQgfD0gMjsKICB9CiAgewogICAgLyog
U2lnbmFsbGluZyBOYU4uICAqLwogICAgc3RhdGljIHVuaW9uIHsgdW5zaWduZWQgaW50IHdvcmRb
NF07IGxvbmcgZG91YmxlIHZhbHVlOyB9IHggPQogICAgICB7IExEQkw4MF9XT1JEUyAoMHhGRkZG
LCAweDgzMzMzMzMzLCAweDAwMDAwMDAwKSB9OwogICAgaWYgKHNwcmludGYgKGJ1ZiwgIiVMZiIs
IHgudmFsdWUpIDwgMAogICAgICAgIHx8ICFzdHJpc25hbiAoYnVmLCAwLCBzdHJsZW4gKGJ1Zikp
KQogICAgICByZXN1bHQgfD0gMjsKICAgIGlmIChzcHJpbnRmIChidWYsICIlTGUiLCB4LnZhbHVl
KSA8IDAKICAgICAgICB8fCAhc3RyaXNuYW4gKGJ1ZiwgMCwgc3RybGVuIChidWYpKSkKICAgICAg
cmVzdWx0IHw9IDI7CiAgICBpZiAoc3ByaW50ZiAoYnVmLCAiJUxnIiwgeC52YWx1ZSkgPCAwCiAg
ICAgICAgfHwgIXN0cmlzbmFuIChidWYsIDAsIHN0cmxlbiAoYnVmKSkpCiAgICAgIHJlc3VsdCB8
PSAyOwogIH0KICB7IC8qIFBzZXVkby1OYU4uICAqLwogICAgc3RhdGljIHVuaW9uIHsgdW5zaWdu
ZWQgaW50IHdvcmRbNF07IGxvbmcgZG91YmxlIHZhbHVlOyB9IHggPQogICAgICB7IExEQkw4MF9X
T1JEUyAoMHhGRkZGLCAweDQwMDAwMDAxLCAweDAwMDAwMDAwKSB9OwogICAgaWYgKHNwcmludGYg
KGJ1ZiwgIiVMZiIsIHgudmFsdWUpIDwgMAogICAgICAgIHx8ICFzdHJpc25hbiAoYnVmLCAwLCBz
dHJsZW4gKGJ1ZikpKQogICAgICByZXN1bHQgfD0gNDsKICAgIGlmIChzcHJpbnRmIChidWYsICIl
TGUiLCB4LnZhbHVlKSA8IDAKICAgICAgICB8fCAhc3RyaXNuYW4gKGJ1ZiwgMCwgc3RybGVuIChi
dWYpKSkKICAgICAgcmVzdWx0IHw9IDQ7CiAgICBpZiAoc3ByaW50ZiAoYnVmLCAiJUxnIiwgeC52
YWx1ZSkgPCAwCiAgICAgICAgfHwgIXN0cmlzbmFuIChidWYsIDAsIHN0cmxlbiAoYnVmKSkpCiAg
ICAgIHJlc3VsdCB8PSA0OwogIH0KICB7IC8qIFBzZXVkby1JbmZpbml0eS4gICovCiAgICBzdGF0
aWMgdW5pb24geyB1bnNpZ25lZCBpbnQgd29yZFs0XTsgbG9uZyBkb3VibGUgdmFsdWU7IH0geCA9
CiAgICAgIHsgTERCTDgwX1dPUkRTICgweEZGRkYsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApIH07
CiAgICBpZiAoc3ByaW50ZiAoYnVmLCAiJUxmIiwgeC52YWx1ZSkgPCAwCiAgICAgICAgfHwgIXN0
cmlzbmFuIChidWYsIDAsIHN0cmxlbiAoYnVmKSkpCiAgICAgIHJlc3VsdCB8PSA4OwogICAgaWYg
KHNwcmludGYgKGJ1ZiwgIiVMZSIsIHgudmFsdWUpIDwgMAogICAgICAgIHx8ICFzdHJpc25hbiAo
YnVmLCAwLCBzdHJsZW4gKGJ1ZikpKQogICAgICByZXN1bHQgfD0gODsKICAgIGlmIChzcHJpbnRm
IChidWYsICIlTGciLCB4LnZhbHVlKSA8IDAKICAgICAgICB8fCAhc3RyaXNuYW4gKGJ1ZiwgMCwg
c3RybGVuIChidWYpKSkKICAgICAgcmVzdWx0IHw9IDg7CiAgfQogIHsgLyogUHNldWRvLVplcm8u
ICAqLwogICAgc3RhdGljIHVuaW9uIHsgdW5zaWduZWQgaW50IHdvcmRbNF07IGxvbmcgZG91Ymxl
IHZhbHVlOyB9IHggPQogICAgICB7IExEQkw4MF9XT1JEUyAoMHg0MDA0LCAweDAwMDAwMDAwLCAw
eDAwMDAwMDAwKSB9OwogICAgaWYgKHNwcmludGYgKGJ1ZiwgIiVMZiIsIHgudmFsdWUpIDwgMAog
ICAgICAgIHx8ICFzdHJpc25hbiAoYnVmLCAwLCBzdHJsZW4gKGJ1ZikpKQogICAgICByZXN1bHQg
fD0gMTY7CiAgICBpZiAoc3ByaW50ZiAoYnVmLCAiJUxlIiwgeC52YWx1ZSkgPCAwCiAgICAgICAg
fHwgIXN0cmlzbmFuIChidWYsIDAsIHN0cmxlbiAoYnVmKSkpCiAgICAgIHJlc3VsdCB8PSAxNjsK
ICAgIGlmIChzcHJpbnRmIChidWYsICIlTGciLCB4LnZhbHVlKSA8IDAKICAgICAgICB8fCAhc3Ry
aXNuYW4gKGJ1ZiwgMCwgc3RybGVuIChidWYpKSkKICAgICAgcmVzdWx0IHw9IDE2OwogIH0KICB7
IC8qIFVubm9ybWFsaXplZCBudW1iZXIuICAqLwogICAgc3RhdGljIHVuaW9uIHsgdW5zaWduZWQg
aW50IHdvcmRbNF07IGxvbmcgZG91YmxlIHZhbHVlOyB9IHggPQogICAgICB7IExEQkw4MF9XT1JE
UyAoMHg0MDAwLCAweDYzMzMzMzMzLCAweDAwMDAwMDAwKSB9OwogICAgaWYgKHNwcmludGYgKGJ1
ZiwgIiVMZiIsIHgudmFsdWUpIDwgMAogICAgICAgIHx8ICFzdHJpc25hbiAoYnVmLCAwLCBzdHJs
ZW4gKGJ1ZikpKQogICAgICByZXN1bHQgfD0gMzI7CiAgICBpZiAoc3ByaW50ZiAoYnVmLCAiJUxl
IiwgeC52YWx1ZSkgPCAwCiAgICAgICAgfHwgIXN0cmlzbmFuIChidWYsIDAsIHN0cmxlbiAoYnVm
KSkpCiAgICAgIHJlc3VsdCB8PSAzMjsKICAgIGlmIChzcHJpbnRmIChidWYsICIlTGciLCB4LnZh
bHVlKSA8IDAKICAgICAgICB8fCAhc3RyaXNuYW4gKGJ1ZiwgMCwgc3RybGVuIChidWYpKSkKICAg
ICAgcmVzdWx0IHw9IDMyOwogIH0KICB7IC8qIFBzZXVkby1EZW5vcm1hbC4gICovCiAgICBzdGF0
aWMgdW5pb24geyB1bnNpZ25lZCBpbnQgd29yZFs0XTsgbG9uZyBkb3VibGUgdmFsdWU7IH0geCA9
CiAgICAgIHsgTERCTDgwX1dPUkRTICgweDAwMDAsIDB4ODMzMzMzMzMsIDB4MDAwMDAwMDApIH07
CiAgICBpZiAoc3ByaW50ZiAoYnVmLCAiJUxmIiwgeC52YWx1ZSkgPCAwCiAgICAgICAgfHwgIXN0
cmlzbmFuIChidWYsIDAsIHN0cmxlbiAoYnVmKSkpCiAgICAgIHJlc3VsdCB8PSA2NDsKICAgIGlm
IChzcHJpbnRmIChidWYsICIlTGUiLCB4LnZhbHVlKSA8IDAKICAgICAgICB8fCAhc3RyaXNuYW4g
KGJ1ZiwgMCwgc3RybGVuIChidWYpKSkKICAgICAgcmVzdWx0IHw9IDY0OwogICAgaWYgKHNwcmlu
dGYgKGJ1ZiwgIiVMZyIsIHgudmFsdWUpIDwgMAogICAgICAgIHx8ICFzdHJpc25hbiAoYnVmLCAw
LCBzdHJsZW4gKGJ1ZikpKQogICAgICByZXN1bHQgfD0gNjQ7CiAgfQojZW5kaWYKICByZXR1cm4g
cmVzdWx0Owp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKICBn
bF9jdl9mdW5jX3ByaW50Zl9pbmZpbml0ZV9sb25nX2RvdWJsZT15ZXMKZWxzZQogIGdsX2N2X2Z1
bmNfcHJpbnRmX2luZmluaXRlX2xvbmdfZG91YmxlPW5vCmZpCnJtIC1mIGNvcmUgKi5jb3JlIGNv
cmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKICBjb25m
dGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dApmaQoKCmZpCnsg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfZnVu
Y19wcmludGZfaW5maW5pdGVfbG9uZ19kb3VibGUiID4mNQokYXNfZWNobyAiJGdsX2N2X2Z1bmNf
cHJpbnRmX2luZmluaXRlX2xvbmdfZG91YmxlIiA+JjY7IH0KICAgICAgOzsKICAgICopCiAgICAg
IGdsX2N2X2Z1bmNfcHJpbnRmX2luZmluaXRlX2xvbmdfZG91YmxlPSJpcnJlbGV2YW50IgogICAg
ICA7OwogIGVzYWMKCgoKICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGNoZWNraW5nIHdoZXRoZXIgcHJpbnRmIHN1cHBvcnRzIHRoZSAnYScgYW5kICdBJyBkaXJl
Y3RpdmVzIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBwcmludGYgc3VwcG9ydHMg
dGhlICdhJyBhbmQgJ0EnIGRpcmVjdGl2ZXMuLi4gIiA+JjY7IH0KaWYgJHtnbF9jdl9mdW5jX3By
aW50Zl9kaXJlY3RpdmVfYSs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkg
IiA+JjYKZWxzZQoKICAgICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4g
OgoKICAgICAgICAgY2FzZSAiJGhvc3Rfb3MiIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMgR3Vlc3MgeWVzIG9uIGdsaWJjID49IDIuNSBzeXN0ZW1zLgogICAgICAgICAgICot
Z251KikKICAgICAgICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRh
Y19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwoKICAgICAgICAgICAgICAgI2luY2x1ZGUgPGZl
YXR1cmVzLmg+CiAgICAgICAgICAgICAgICNpZmRlZiBfX0dOVV9MSUJSQVJZX18KICAgICAgICAg
ICAgICAgICNpZiAoKF9fR0xJQkNfXyA9PSAyICYmIF9fR0xJQkNfTUlOT1JfXyA+PSA1KSB8fCAo
X19HTElCQ19fID4gMikpICYmICFkZWZpbmVkIF9fVUNMSUJDX18KICAgICAgICAgICAgICAgICBC
WjI5MDgKICAgICAgICAgICAgICAgICNlbmRpZgogICAgICAgICAgICAgICAjZW5kaWYKCl9BQ0VP
RgppZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CiAgJEVHUkVQICJC
WjI5MDgiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CiAgZ2xfY3ZfZnVuY19wcmludGZfZGlyZWN0
aXZlX2E9Imd1ZXNzaW5nIHllcyIKZWxzZQogIGdsX2N2X2Z1bmNfcHJpbnRmX2RpcmVjdGl2ZV9h
PSJndWVzc2luZyBubyIKZmkKcm0gLWYgY29uZnRlc3QqCgogICAgICAgICAgICAgOzsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiB3ZSBkb24ndCBrbm93LCBhc3N1bWUgdGhl
IHdvcnN0LgogICAgICAgICAgICopICAgICAgICAgICAgICAgICAgICBnbF9jdl9mdW5jX3ByaW50
Zl9kaXJlY3RpdmVfYT0iZ3Vlc3Npbmcgbm8iOzsKICAgICAgICAgZXNhYwoKZWxzZQogIGNhdCBj
b25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmgu
ICAqLwoKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4Kc3RhdGljIGNoYXIg
YnVmWzEwMF07CnN0YXRpYyBkb3VibGUgemVybyA9IDAuMDsKaW50IG1haW4gKCkKewogIGludCBy
ZXN1bHQgPSAwOwogIGlmIChzcHJpbnRmIChidWYsICIlYSAlZCIsIDMuMTQxNjAxNTYyNSwgMzMs
IDQ0LCA1NSkgPCAwCiAgICAgIHx8IChzdHJjbXAgKGJ1ZiwgIjB4MS45MjJwKzEgMzMiKSAhPSAw
CiAgICAgICAgICAmJiBzdHJjbXAgKGJ1ZiwgIjB4My4yNDRwKzAgMzMiKSAhPSAwCiAgICAgICAg
ICAmJiBzdHJjbXAgKGJ1ZiwgIjB4Ni40ODhwLTEgMzMiKSAhPSAwCiAgICAgICAgICAmJiBzdHJj
bXAgKGJ1ZiwgIjB4Yy45MXAtMiAzMyIpICE9IDApKQogICAgcmVzdWx0IHw9IDE7CiAgaWYgKHNw
cmludGYgKGJ1ZiwgIiVBICVkIiwgLTMuMTQxNjAxNTYyNSwgMzMsIDQ0LCA1NSkgPCAwCiAgICAg
IHx8IChzdHJjbXAgKGJ1ZiwgIi0wWDEuOTIyUCsxIDMzIikgIT0gMAogICAgICAgICAgJiYgc3Ry
Y21wIChidWYsICItMFgzLjI0NFArMCAzMyIpICE9IDAKICAgICAgICAgICYmIHN0cmNtcCAoYnVm
LCAiLTBYNi40ODhQLTEgMzMiKSAhPSAwCiAgICAgICAgICAmJiBzdHJjbXAgKGJ1ZiwgIi0wWEMu
OTFQLTIgMzMiKSAhPSAwKSkKICAgIHJlc3VsdCB8PSAyOwogIC8qIFRoaXMgY2F0Y2hlcyBhIEZy
ZWVCU0QgNi4xIGJ1ZzogaXQgZG9lc24ndCByb3VuZC4gICovCiAgaWYgKHNwcmludGYgKGJ1Ziwg
IiUuMmEgJWQiLCAxLjUxLCAzMywgNDQsIDU1KSA8IDAKICAgICAgfHwgKHN0cmNtcCAoYnVmLCAi
MHgxLjgzcCswIDMzIikgIT0gMAogICAgICAgICAgJiYgc3RyY21wIChidWYsICIweDMuMDVwLTEg
MzMiKSAhPSAwCiAgICAgICAgICAmJiBzdHJjbXAgKGJ1ZiwgIjB4Ni4wYXAtMiAzMyIpICE9IDAK
ICAgICAgICAgICYmIHN0cmNtcCAoYnVmLCAiMHhjLjE0cC0zIDMzIikgIT0gMCkpCiAgICByZXN1
bHQgfD0gNDsKICAvKiBUaGlzIGNhdGNoZXMgYSBGcmVlQlNEIDYuMSBidWcuICBTZWUKICAgICA8
aHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1nbnVsaWIvMjAwNy0wNC9tc2cw
MDEwNy5odG1sPiAqLwogIGlmIChzcHJpbnRmIChidWYsICIlMDEwYSAlZCIsIDEuMCAvIHplcm8s
IDMzLCA0NCwgNTUpIDwgMAogICAgICB8fCBidWZbMF0gPT0gJzAnKQogICAgcmVzdWx0IHw9IDg7
CiAgLyogVGhpcyBjYXRjaGVzIGEgTWFjIE9TIFggMTAuMy45IChEYXJ3aW4gNy45KSBidWcuICAq
LwogIGlmIChzcHJpbnRmIChidWYsICIlLjFhIiwgMS45OTkpIDwgMAogICAgICB8fCAoc3RyY21w
IChidWYsICIweDEuMHArMSIpICE9IDAKICAgICAgICAgICYmIHN0cmNtcCAoYnVmLCAiMHgyLjBw
KzAiKSAhPSAwCiAgICAgICAgICAmJiBzdHJjbXAgKGJ1ZiwgIjB4NC4wcC0xIikgIT0gMAogICAg
ICAgICAgJiYgc3RyY21wIChidWYsICIweDguMHAtMiIpICE9IDApKQogICAgcmVzdWx0IHw9IDE2
OwogIC8qIFRoaXMgY2F0Y2hlcyB0aGUgc2FtZSBNYWMgT1MgWCAxMC4zLjkgKERhcndpbiA3Ljkp
IGJ1ZyBhbmQgYWxzbyBhCiAgICAgZ2xpYmMgMi40IGJ1ZyA8aHR0cDovL3NvdXJjZXdhcmUub3Jn
L2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yOTA4Pi4gICovCiAgaWYgKHNwcmludGYgKGJ1Ziwg
IiUuMUxhIiwgMS45OTlMKSA8IDAKICAgICAgfHwgKHN0cmNtcCAoYnVmLCAiMHgxLjBwKzEiKSAh
PSAwCiAgICAgICAgICAmJiBzdHJjbXAgKGJ1ZiwgIjB4Mi4wcCswIikgIT0gMAogICAgICAgICAg
JiYgc3RyY21wIChidWYsICIweDQuMHAtMSIpICE9IDAKICAgICAgICAgICYmIHN0cmNtcCAoYnVm
LCAiMHg4LjBwLTIiKSAhPSAwKSkKICAgIHJlc3VsdCB8PSAzMjsKICByZXR1cm4gcmVzdWx0Owp9
Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKICBnbF9jdl9mdW5j
X3ByaW50Zl9kaXJlY3RpdmVfYT15ZXMKZWxzZQogIGdsX2N2X2Z1bmNfcHJpbnRmX2RpcmVjdGl2
ZV9hPW5vCmZpCnJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5v
dXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJl
YW0gY29uZnRlc3QuJGFjX2V4dApmaQoKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu
by0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfZnVuY19wcmludGZfZGlyZWN0aXZlX2EiID4mNQok
YXNfZWNobyAiJGdsX2N2X2Z1bmNfcHJpbnRmX2RpcmVjdGl2ZV9hIiA+JjY7IH0KCgoKICAgICB7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIg
cHJpbnRmIHN1cHBvcnRzIHRoZSAnRicgZGlyZWN0aXZlIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tp
bmcgd2hldGhlciBwcmludGYgc3VwcG9ydHMgdGhlICdGJyBkaXJlY3RpdmUuLi4gIiA+JjY7IH0K
aWYgJHtnbF9jdl9mdW5jX3ByaW50Zl9kaXJlY3RpdmVfZis6fSBmYWxzZTsgdGhlbiA6CiAgJGFz
X2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQoKICAgICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBp
bGluZyIgPSB5ZXM7IHRoZW4gOgoKICAgICAgICAgY2FzZSAiJGhvc3Rfb3MiIGluCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMgR3Vlc3MgeWVzIG9uIGdsaWJjIHN5c3RlbXMuCiAg
ICAgICAgICAgKi1nbnUqKSAgICAgICAgICAgICAgIGdsX2N2X2Z1bmNfcHJpbnRmX2RpcmVjdGl2
ZV9mPSJndWVzc2luZyB5ZXMiOzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBH
dWVzcyB5ZXMgb24gRnJlZUJTRCA+PSA2LgogICAgICAgICAgIGZyZWVic2RbMS01XSopICAgICAg
ICBnbF9jdl9mdW5jX3ByaW50Zl9kaXJlY3RpdmVfZj0iZ3Vlc3Npbmcgbm8iOzsKICAgICAgICAg
ICBmcmVlYnNkKiB8IGtmcmVlYnNkKikgZ2xfY3ZfZnVuY19wcmludGZfZGlyZWN0aXZlX2Y9Imd1
ZXNzaW5nIHllcyI7OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEd1ZXNzIHll
cyBvbiBNYWMgT1MgWCA+PSAxMC4zLgogICAgICAgICAgIGRhcndpblsxLTZdLiopICAgICAgICBn
bF9jdl9mdW5jX3ByaW50Zl9kaXJlY3RpdmVfZj0iZ3Vlc3Npbmcgbm8iOzsKICAgICAgICAgICBk
YXJ3aW4qKSAgICAgICAgICAgICAgZ2xfY3ZfZnVuY19wcmludGZfZGlyZWN0aXZlX2Y9Imd1ZXNz
aW5nIHllcyI7OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEd1ZXNzIHllcyBv
biBTb2xhcmlzID49IDIuMTAuCiAgICAgICAgICAgc29sYXJpczIuWzEtOV1bMC05XSopIGdsX2N2
X2Z1bmNfcHJpbnRmX3NpemVzX2M5OT0iZ3Vlc3NpbmcgeWVzIjs7CiAgICAgICAgICAgc29sYXJp
cyopICAgICAgICAgICAgIGdsX2N2X2Z1bmNfcHJpbnRmX3NpemVzX2M5OT0iZ3Vlc3Npbmcgbm8i
OzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiB3ZSBkb24ndCBrbm93LCBh
c3N1bWUgdGhlIHdvcnN0LgogICAgICAgICAgICopICAgICAgICAgICAgICAgICAgICBnbF9jdl9m
dW5jX3ByaW50Zl9kaXJlY3RpdmVfZj0iZ3Vlc3Npbmcgbm8iOzsKICAgICAgICAgZXNhYwoKZWxz
ZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNv
bmZkZWZzLmguICAqLwoKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4Kc3Rh
dGljIGNoYXIgYnVmWzEwMF07CnN0YXRpYyBkb3VibGUgemVybyA9IDAuMDsKaW50IG1haW4gKCkK
ewogIGludCByZXN1bHQgPSAwOwogIGlmIChzcHJpbnRmIChidWYsICIlRiAlZCIsIDEyMzQ1Njcu
MCwgMzMsIDQ0LCA1NSkgPCAwCiAgICAgIHx8IHN0cmNtcCAoYnVmLCAiMTIzNDU2Ny4wMDAwMDAg
MzMiKSAhPSAwKQogICAgcmVzdWx0IHw9IDE7CiAgaWYgKHNwcmludGYgKGJ1ZiwgIiVGIiwgMS4w
IC8gemVybykgPCAwCiAgICAgIHx8IChzdHJjbXAgKGJ1ZiwgIklORiIpICE9IDAgJiYgc3RyY21w
IChidWYsICJJTkZJTklUWSIpICE9IDApKQogICAgcmVzdWx0IHw9IDI7CiAgLyogVGhpcyBjYXRj
aGVzIGEgQ3lnd2luIDEuNS54IGJ1Zy4gICovCiAgaWYgKHNwcmludGYgKGJ1ZiwgIiUuRiIsIDEy
MzQuMCkgPCAwCiAgICAgIHx8IHN0cmNtcCAoYnVmLCAiMTIzNCIpICE9IDApCiAgICByZXN1bHQg
fD0gNDsKICByZXR1cm4gcmVzdWx0Owp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5F
Tk8iOyB0aGVuIDoKICBnbF9jdl9mdW5jX3ByaW50Zl9kaXJlY3RpdmVfZj15ZXMKZWxzZQogIGds
X2N2X2Z1bmNfcHJpbnRmX2RpcmVjdGl2ZV9mPW5vCmZpCnJtIC1mIGNvcmUgKi5jb3JlIGNvcmUu
Y29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKICBjb25mdGVz
dC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dApmaQoKCmZpCnsgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfZnVuY19w
cmludGZfZGlyZWN0aXZlX2YiID4mNQokYXNfZWNobyAiJGdsX2N2X2Z1bmNfcHJpbnRmX2RpcmVj
dGl2ZV9mIiA+JjY7IH0KCgoKICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IGNoZWNraW5nIHdoZXRoZXIgcHJpbnRmIHN1cHBvcnRzIHRoZSAnbicgZGlyZWN0aXZl
IiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBwcmludGYgc3VwcG9ydHMgdGhlICdu
JyBkaXJlY3RpdmUuLi4gIiA+JjY7IH0KaWYgJHtnbF9jdl9mdW5jX3ByaW50Zl9kaXJlY3RpdmVf
bis6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQoKICAg
ICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgoKICAgICAgICAgY2Fz
ZSAiJGhvc3Rfb3MiIGluCiAgICAgICAgICAgbWluZ3cqKSBnbF9jdl9mdW5jX3ByaW50Zl9kaXJl
Y3RpdmVfbj0iZ3Vlc3Npbmcgbm8iOzsKICAgICAgICAgICAqKSAgICAgIGdsX2N2X2Z1bmNfcHJp
bnRmX2RpcmVjdGl2ZV9uPSJndWVzc2luZyB5ZXMiOzsKICAgICAgICAgZXNhYwoKZWxzZQogIGNh
dCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZz
LmguICAqLwoKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUg
PHN0cmluZy5oPgojaWZkZWYgX01TQ19WRVIKLyogU2VlIHBhZ2UgYWJvdXQgIlBhcmFtZXRlciBW
YWxpZGF0aW9uIiBvbiBtc2RuLm1pY3Jvc29mdC5jb20uICAqLwpzdGF0aWMgdm9pZCBjZGVjbApp
bnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyIChjb25zdCB3Y2hhcl90ICpleHByZXNzaW9uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90ICpmdW5jdGlvbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCAqZmlsZSwgdW5zaWduZWQgaW50IGxpbmUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnRwdHJfdCBkdW1teSkKewogIGV4aXQgKDEp
Owp9CiNlbmRpZgpzdGF0aWMgY2hhciBmbXRzdHJpbmdbMTBdOwpzdGF0aWMgY2hhciBidWZbMTAw
XTsKaW50IG1haW4gKCkKewogIGludCBjb3VudCA9IC0xOwojaWZkZWYgX01TQ19WRVIKICBfc2V0
X2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIgKGludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIpOwoj
ZW5kaWYKICAvKiBDb3B5IHRoZSBmb3JtYXQgc3RyaW5nLiAgU29tZSBzeXN0ZW1zIChnbGliYyB3
aXRoIF9GT1JUSUZZX1NPVVJDRT0yKQogICAgIHN1cHBvcnQgJW4gaW4gZm9ybWF0IHN0cmluZ3Mg
aW4gcmVhZC1vbmx5IG1lbW9yeSBidXQgbm90IGluIHdyaXRhYmxlCiAgICAgbWVtb3J5LiAgKi8K
ICBzdHJjcHkgKGZtdHN0cmluZywgIiVkICVuIik7CiAgaWYgKHNwcmludGYgKGJ1ZiwgZm10c3Ry
aW5nLCAxMjMsICZjb3VudCwgMzMsIDQ0LCA1NSkgPCAwCiAgICAgIHx8IHN0cmNtcCAoYnVmLCAi
MTIzICIpICE9IDAKICAgICAgfHwgY291bnQgIT0gNCkKICAgIHJldHVybiAxOwogIHJldHVybiAw
Owp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKICBnbF9jdl9m
dW5jX3ByaW50Zl9kaXJlY3RpdmVfbj15ZXMKZWxzZQogIGdsX2N2X2Z1bmNfcHJpbnRmX2RpcmVj
dGl2ZV9uPW5vCmZpCnJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBi
Yi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0
LmJlYW0gY29uZnRlc3QuJGFjX2V4dApmaQoKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfZnVuY19wcmludGZfZGlyZWN0aXZlX24iID4m
NQokYXNfZWNobyAiJGdsX2N2X2Z1bmNfcHJpbnRmX2RpcmVjdGl2ZV9uIiA+JjY7IH0KCgoKICAg
ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRo
ZXIgcHJpbnRmIHN1cHBvcnRzIHRoZSAnbHMnIGRpcmVjdGl2ZSIgPiY1CiRhc19lY2hvX24gImNo
ZWNraW5nIHdoZXRoZXIgcHJpbnRmIHN1cHBvcnRzIHRoZSAnbHMnIGRpcmVjdGl2ZS4uLiAiID4m
NjsgfQppZiAke2dsX2N2X2Z1bmNfcHJpbnRmX2RpcmVjdGl2ZV9scys6fSBmYWxzZTsgdGhlbiA6
CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQoKICAgICAgaWYgdGVzdCAiJGNyb3Nz
X2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgoKICAgICAgICAgY2FzZSAiJGhvc3Rfb3MiIGluCiAg
ICAgICAgICAgb3BlbmJzZCopICAgICAgICBnbF9jdl9mdW5jX3ByaW50Zl9kaXJlY3RpdmVfbHM9
Imd1ZXNzaW5nIG5vIjs7CiAgICAgICAgICAgaXJpeCopICAgICAgICAgICBnbF9jdl9mdW5jX3By
aW50Zl9kaXJlY3RpdmVfbHM9Imd1ZXNzaW5nIG5vIjs7CiAgICAgICAgICAgc29sYXJpcyopICAg
ICAgICBnbF9jdl9mdW5jX3ByaW50Zl9kaXJlY3RpdmVfbHM9Imd1ZXNzaW5nIG5vIjs7CiAgICAg
ICAgICAgY3lnd2luKikgICAgICAgICBnbF9jdl9mdW5jX3ByaW50Zl9kaXJlY3RpdmVfbHM9Imd1
ZXNzaW5nIG5vIjs7CiAgICAgICAgICAgYmVvcyogfCBoYWlrdSopICBnbF9jdl9mdW5jX3ByaW50
Zl9kaXJlY3RpdmVfbHM9Imd1ZXNzaW5nIG5vIjs7CiAgICAgICAgICAgKikgICAgICAgICAgICAg
ICBnbF9jdl9mdW5jX3ByaW50Zl9kaXJlY3RpdmVfbHM9Imd1ZXNzaW5nIHllcyI7OwogICAgICAg
ICBlc2FjCgplbHNlCiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4
dAovKiBlbmQgY29uZmRlZnMuaC4gICovCgovKiBUcnU2NCB3aXRoIERlc2t0b3AgVG9vbGtpdCBD
IGhhcyBhIGJ1ZzogPHN0ZGlvLmg+IG11c3QgYmUgaW5jbHVkZWQgYmVmb3JlCiAgIDx3Y2hhci5o
Pi4KICAgQlNEL09TIDQuMC4xIGhhcyBhIGJ1ZzogPHN0ZGRlZi5oPiwgPHN0ZGlvLmg+IGFuZCA8
dGltZS5oPiBtdXN0IGJlCiAgIGluY2x1ZGVkIGJlZm9yZSA8d2NoYXIuaD4uICAqLwojaW5jbHVk
ZSA8c3RkZGVmLmg+CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8dGltZS5oPgojaW5jbHVk
ZSA8d2NoYXIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgppbnQgbWFpbiAoKQp7CiAgaW50IHJlc3Vs
dCA9IDA7CiAgY2hhciBidWZbMTAwXTsKICAvKiBUZXN0IHdoZXRoZXIgJWxzIHdvcmtzIGF0IGFs
bC4KICAgICBUaGlzIHRlc3QgZmFpbHMgb24gT3BlbkJTRCA0LjAsIElSSVggNi41LCBTb2xhcmlz
IDIuNiwgSGFpa3UsIGJ1dCBub3Qgb24KICAgICBDeWd3aW4gMS41LiAgKi8KICB7CiAgICBzdGF0
aWMgY29uc3Qgd2NoYXJfdCB3c3RyaW5nW10gPSB7ICdhJywgJ2InLCAnYycsIDAgfTsKICAgIGJ1
ZlswXSA9ICdcMCc7CiAgICBpZiAoc3ByaW50ZiAoYnVmLCAiJWxzIiwgd3N0cmluZykgPCAwCiAg
ICAgICAgfHwgc3RyY21wIChidWYsICJhYmMiKSAhPSAwKQogICAgICByZXN1bHQgfD0gMTsKICB9
CiAgLyogVGhpcyB0ZXN0IGZhaWxzIG9uIElSSVggNi41LCBTb2xhcmlzIDIuNiwgQ3lnd2luIDEu
NSwgSGFpa3UgKHdpdGggYW4KICAgICBhc3NlcnRpb24gZmFpbHVyZSBpbnNpZGUgbGliYyksIGJ1
dCBub3Qgb24gT3BlbkJTRCA0LjAuICAqLwogIHsKICAgIHN0YXRpYyBjb25zdCB3Y2hhcl90IHdz
dHJpbmdbXSA9IHsgJ2EnLCAwIH07CiAgICBidWZbMF0gPSAnXDAnOwogICAgaWYgKHNwcmludGYg
KGJ1ZiwgIiVscyIsIHdzdHJpbmcpIDwgMAogICAgICAgIHx8IHN0cmNtcCAoYnVmLCAiYSIpICE9
IDApCiAgICAgIHJlc3VsdCB8PSAyOwogIH0KICAvKiBUZXN0IHdoZXRoZXIgcHJlY2lzaW9ucyBp
biAlbHMgYXJlIHN1cHBvcnRlZCBhcyBzcGVjaWZpZWQgaW4gSVNPIEMgOTkKICAgICBzZWN0aW9u
IDcuMTkuNi4xOgogICAgICAgIklmIGEgcHJlY2lzaW9uIGlzIHNwZWNpZmllZCwgbm8gbW9yZSB0
aGFuIHRoYXQgbWFueSBieXRlcyBhcmUgd3JpdHRlbgogICAgICAgIChpbmNsdWRpbmcgc2hpZnQg
c2VxdWVuY2VzLCBpZiBhbnkpLCBhbmQgdGhlIGFycmF5IHNoYWxsIGNvbnRhaW4gYQogICAgICAg
IG51bGwgd2lkZSBjaGFyYWN0ZXIgaWYsIHRvIGVxdWFsIHRoZSBtdWx0aWJ5dGUgY2hhcmFjdGVy
IHNlcXVlbmNlCiAgICAgICAgbGVuZ3RoIGdpdmVuIGJ5IHRoZSBwcmVjaXNpb24sIHRoZSBmdW5j
dGlvbiB3b3VsZCBuZWVkIHRvIGFjY2VzcyBhCiAgICAgICAgd2lkZSBjaGFyYWN0ZXIgb25lIHBh
c3QgdGhlIGVuZCBvZiB0aGUgYXJyYXkuIgogICAgIFRoaXMgdGVzdCBmYWlscyBvbiBTb2xhcmlz
IDEwLiAgKi8KICB7CiAgICBzdGF0aWMgY29uc3Qgd2NoYXJfdCB3c3RyaW5nW10gPSB7ICdhJywg
J2InLCAod2NoYXJfdCkgMHhmZGZkZmRmZCwgMCB9OwogICAgYnVmWzBdID0gJ1wwJzsKICAgIGlm
IChzcHJpbnRmIChidWYsICIlLjJscyIsIHdzdHJpbmcpIDwgMAogICAgICAgIHx8IHN0cmNtcCAo
YnVmLCAiYWIiKSAhPSAwKQogICAgICByZXN1bHQgfD0gODsKICB9CiAgcmV0dXJuIHJlc3VsdDsK
fQpfQUNFT0YKaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CiAgZ2xfY3ZfZnVu
Y19wcmludGZfZGlyZWN0aXZlX2xzPXllcwplbHNlCiAgZ2xfY3ZfZnVuY19wcmludGZfZGlyZWN0
aXZlX2xzPW5vCmZpCnJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBi
Yi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0
LmJlYW0gY29uZnRlc3QuJGFjX2V4dApmaQoKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfZnVuY19wcmludGZfZGlyZWN0aXZlX2xzIiA+
JjUKJGFzX2VjaG8gIiRnbF9jdl9mdW5jX3ByaW50Zl9kaXJlY3RpdmVfbHMiID4mNjsgfQoKCgog
ICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hl
dGhlciBwcmludGYgc3VwcG9ydHMgdGhlIGdyb3VwaW5nIGZsYWciID4mNQokYXNfZWNob19uICJj
aGVja2luZyB3aGV0aGVyIHByaW50ZiBzdXBwb3J0cyB0aGUgZ3JvdXBpbmcgZmxhZy4uLiAiID4m
NjsgfQppZiAke2dsX2N2X2Z1bmNfcHJpbnRmX2ZsYWdfZ3JvdXBpbmcrOn0gZmFsc2U7IHRoZW4g
OgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKCiAgICAgIGlmIHRlc3QgIiRjcm9z
c19jb21waWxpbmciID0geWVzOyB0aGVuIDoKCiAgICAgICAgIGNhc2UgIiRob3N0X29zIiBpbgog
ICAgICAgICAgIGN5Z3dpbiopICAgICAgZ2xfY3ZfZnVuY19wcmludGZfZmxhZ19ncm91cGluZz0i
Z3Vlc3Npbmcgbm8iOzsKICAgICAgICAgICBuZXRic2QqKSAgICAgIGdsX2N2X2Z1bmNfcHJpbnRm
X2ZsYWdfZ3JvdXBpbmc9Imd1ZXNzaW5nIG5vIjs7CiAgICAgICAgICAgbWluZ3cqIHwgcHcqKSBn
bF9jdl9mdW5jX3ByaW50Zl9mbGFnX2dyb3VwaW5nPSJndWVzc2luZyBubyI7OwogICAgICAgICAg
ICopICAgICAgICAgICAgZ2xfY3ZfZnVuY19wcmludGZfZmxhZ19ncm91cGluZz0iZ3Vlc3Npbmcg
eWVzIjs7CiAgICAgICAgIGVzYWMKCmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5j
b25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCiNpbmNsdWRlIDxzdGRpby5o
PgojaW5jbHVkZSA8c3RyaW5nLmg+CnN0YXRpYyBjaGFyIGJ1ZlsxMDBdOwppbnQgbWFpbiAoKQp7
CiAgaWYgKHNwcmludGYgKGJ1ZiwgIiUnZCAlZCIsIDEyMzQ1NjcsIDk5KSA8IDAKICAgICAgfHwg
YnVmW3N0cmxlbiAoYnVmKSAtIDFdICE9ICc5JykKICAgIHJldHVybiAxOwogIHJldHVybiAwOwp9
Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKICBnbF9jdl9mdW5j
X3ByaW50Zl9mbGFnX2dyb3VwaW5nPXllcwplbHNlCiAgZ2xfY3ZfZnVuY19wcmludGZfZmxhZ19n
cm91cGluZz1ubwpmaQpybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQg
YmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCiAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVz
dC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKZmkKCgpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2X2Z1bmNfcHJpbnRmX2ZsYWdfZ3JvdXBpbmci
ID4mNQokYXNfZWNobyAiJGdsX2N2X2Z1bmNfcHJpbnRmX2ZsYWdfZ3JvdXBpbmciID4mNjsgfQoK
CgogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcg
d2hldGhlciBwcmludGYgc3VwcG9ydHMgdGhlIGxlZnQtYWRqdXN0IGZsYWcgY29ycmVjdGx5IiA+
JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBwcmludGYgc3VwcG9ydHMgdGhlIGxlZnQt
YWRqdXN0IGZsYWcgY29ycmVjdGx5Li4uICIgPiY2OyB9CmlmICR7Z2xfY3ZfZnVuY19wcmludGZf
ZmxhZ19sZWZ0YWRqdXN0Kzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAi
ID4mNgplbHNlCgogICAgICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6
CgogICAgICAgICBjYXNlICIkaG9zdF9vcyIgaW4KICAgICAgICAgICAgICAgICAgICAjIEd1ZXNz
IHllcyBvbiBIUC1VWCAxMS4KICAgICAgICAgICBocHV4MTEqKSBnbF9jdl9mdW5jX3ByaW50Zl9m
bGFnX2xlZnRhZGp1c3Q9Imd1ZXNzaW5nIHllcyI7OwogICAgICAgICAgICAgICAgICAgICMgR3Vl
c3Mgbm8gb24gSFAtVVggMTAgYW5kIG9sZGVyLgogICAgICAgICAgIGhwdXgqKSAgIGdsX2N2X2Z1
bmNfcHJpbnRmX2ZsYWdfbGVmdGFkanVzdD0iZ3Vlc3Npbmcgbm8iOzsKICAgICAgICAgICAgICAg
ICAgICAjIEd1ZXNzIHllcyBvdGhlcndpc2UuCiAgICAgICAgICAgKikgICAgICAgZ2xfY3ZfZnVu
Y19wcmludGZfZmxhZ19sZWZ0YWRqdXN0PSJndWVzc2luZyB5ZXMiOzsKICAgICAgICAgZXNhYwoK
ZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5k
IGNvbmZkZWZzLmguICAqLwoKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4K
c3RhdGljIGNoYXIgYnVmWzEwMF07CmludCBtYWluICgpCnsKICAvKiBDaGVjayB0aGF0IGEgJy0n
IGZsYWcgaXMgbm90IGFubmloaWxhdGVkIGJ5IGEgbmVnYXRpdmUgd2lkdGguICAqLwogIGlmIChz
cHJpbnRmIChidWYsICJhJS0qc2MiLCAtMywgImIiKSA8IDAKICAgICAgfHwgc3RyY21wIChidWYs
ICJhYiAgYyIpICE9IDApCiAgICByZXR1cm4gMTsKICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNf
Zm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CiAgZ2xfY3ZfZnVuY19wcmludGZfZmxhZ19s
ZWZ0YWRqdXN0PXllcwplbHNlCiAgZ2xfY3ZfZnVuY19wcmludGZfZmxhZ19sZWZ0YWRqdXN0PW5v
CmZpCnJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29u
ZnRlc3QkYWNfZXhlZXh0IFwKICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29u
ZnRlc3QuJGFjX2V4dApmaQoKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogcmVzdWx0OiAkZ2xfY3ZfZnVuY19wcmludGZfZmxhZ19sZWZ0YWRqdXN0IiA+JjUKJGFz
X2VjaG8gIiRnbF9jdl9mdW5jX3ByaW50Zl9mbGFnX2xlZnRhZGp1c3QiID4mNjsgfQoKCgogICAg
IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhl
ciBwcmludGYgc3VwcG9ydHMgdGhlIHplcm8gZmxhZyBjb3JyZWN0bHkiID4mNQokYXNfZWNob19u
ICJjaGVja2luZyB3aGV0aGVyIHByaW50ZiBzdXBwb3J0cyB0aGUgemVybyBmbGFnIGNvcnJlY3Rs
eS4uLiAiID4mNjsgfQppZiAke2dsX2N2X2Z1bmNfcHJpbnRmX2ZsYWdfemVybys6fSBmYWxzZTsg
dGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQoKICAgICAgaWYgdGVzdCAi
JGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgoKICAgICAgICAgY2FzZSAiJGhvc3Rfb3Mi
IGluCiAgICAgICAgICAgICAgICAgICAjIEd1ZXNzIHllcyBvbiBnbGliYyBzeXN0ZW1zLgogICAg
ICAgICAgICotZ251KikgZ2xfY3ZfZnVuY19wcmludGZfZmxhZ196ZXJvPSJndWVzc2luZyB5ZXMi
OzsKICAgICAgICAgICAgICAgICAgICMgR3Vlc3MgeWVzIG9uIEJlT1MuCiAgICAgICAgICAgYmVv
cyopICBnbF9jdl9mdW5jX3ByaW50Zl9mbGFnX3plcm89Imd1ZXNzaW5nIHllcyI7OwogICAgICAg
ICAgICAgICAgICAgIyBJZiB3ZSBkb24ndCBrbm93LCBhc3N1bWUgdGhlIHdvcnN0LgogICAgICAg
ICAgICopICAgICAgZ2xfY3ZfZnVuY19wcmludGZfZmxhZ196ZXJvPSJndWVzc2luZyBubyI7Owog
ICAgICAgICBlc2FjCgplbHNlCiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3Qu
JGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1
ZGUgPHN0cmluZy5oPgpzdGF0aWMgY2hhciBidWZbMTAwXTsKc3RhdGljIGRvdWJsZSB6ZXJvID0g
MC4wOwppbnQgbWFpbiAoKQp7CiAgaWYgKHNwcmludGYgKGJ1ZiwgIiUwMTBmIiwgMS4wIC8gemVy
bywgMzMsIDQ0LCA1NSkgPCAwCiAgICAgIHx8IChzdHJjbXAgKGJ1ZiwgIiAgICAgICBpbmYiKSAh
PSAwCiAgICAgICAgICAmJiBzdHJjbXAgKGJ1ZiwgIiAgaW5maW5pdHkiKSAhPSAwKSkKICAgIHJl
dHVybiAxOwogIHJldHVybiAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8i
OyB0aGVuIDoKICBnbF9jdl9mdW5jX3ByaW50Zl9mbGFnX3plcm89eWVzCmVsc2UKICBnbF9jdl9m
dW5jX3ByaW50Zl9mbGFnX3plcm89bm8KZmkKcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVz
dC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAogIGNvbmZ0ZXN0LiRhY19v
YmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CmZpCgoKZmkKeyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbF9jdl9mdW5jX3ByaW50Zl9m
bGFnX3plcm8iID4mNQokYXNfZWNobyAiJGdsX2N2X2Z1bmNfcHJpbnRmX2ZsYWdfemVybyIgPiY2
OyB9CgoKCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVj
a2luZyB3aGV0aGVyIHByaW50ZiBzdXBwb3J0cyBsYXJnZSBwcmVjaXNpb25zIiA+JjUKJGFzX2Vj
aG9fbiAiY2hlY2tpbmcgd2hldGhlciBwcmludGYgc3VwcG9ydHMgbGFyZ2UgcHJlY2lzaW9ucy4u
LiAiID4mNjsgfQppZiAke2dsX2N2X2Z1bmNfcHJpbnRmX3ByZWNpc2lvbis6fSBmYWxzZTsgdGhl
biA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQoKICAgICAgaWYgdGVzdCAiJGNy
b3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgoKICAgICAgICAgY2FzZSAiJGhvc3Rfb3MiIGlu
CiAgICAgICAgICAgIyBHdWVzcyBubyBvbmx5IG9uIFNvbGFyaXMsIG5hdGl2ZSBXaW5kb3dzLCBh
bmQgQmVPUyBzeXN0ZW1zLgogICAgICAgICAgIHNvbGFyaXMqKSAgICAgZ2xfY3ZfZnVuY19wcmlu
dGZfcHJlY2lzaW9uPSJndWVzc2luZyBubyIgOzsKICAgICAgICAgICBtaW5ndyogfCBwdyopIGds
X2N2X2Z1bmNfcHJpbnRmX3ByZWNpc2lvbj0iZ3Vlc3Npbmcgbm8iIDs7CiAgICAgICAgICAgYmVv
cyopICAgICAgICBnbF9jdl9mdW5jX3ByaW50Zl9wcmVjaXNpb249Imd1ZXNzaW5nIG5vIiA7Owog
ICAgICAgICAgICopICAgICAgICAgICAgZ2xfY3ZfZnVuY19wcmludGZfcHJlY2lzaW9uPSJndWVz
c2luZyB5ZXMiIDs7CiAgICAgICAgIGVzYWMKCmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FD
RU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCiNpbmNsdWRlIDxz
dGRpby5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CnN0YXRpYyBjaGFyIGJ1Zls1MDAwXTsKaW50IG1h
aW4gKCkKewogIGludCByZXN1bHQgPSAwOwojaWZkZWYgX19CRU9TX18KICAvKiBPbiBCZU9TLCB0
aGlzIHdvdWxkIGNyYXNoIGFuZCBzaG93IGEgZGlhbG9nIGJveC4gIEF2b2lkIHRoZSBjcmFzaC4g
ICovCiAgcmV0dXJuIDE7CiNlbmRpZgogIGlmIChzcHJpbnRmIChidWYsICIlLjQwMDBkICVkIiwg
MSwgMzMsIDQ0KSA8IDQwMDAgKyAzKQogICAgcmVzdWx0IHw9IDE7CiAgaWYgKHNwcmludGYgKGJ1
ZiwgIiUuNDAwMGYgJWQiLCAxLjAsIDMzLCA0NCkgPCA0MDAwICsgNSkKICAgIHJlc3VsdCB8PSAy
OwogIGlmIChzcHJpbnRmIChidWYsICIlLjUxMWYgJWQiLCAxLjAsIDMzLCA0NCkgPCA1MTEgKyA1
CiAgICAgIHx8IGJ1ZlswXSAhPSAnMScpCiAgICByZXN1bHQgfD0gNDsKICBpZiAoc3ByaW50ZiAo
YnVmLCAiJS45OTlmICVkIiwgMS4wLCAzMywgNDQpIDwgOTk5ICsgNQogICAgICB8fCBidWZbMF0g
IT0gJzEnKQogICAgcmVzdWx0IHw9IDQ7CiAgcmV0dXJuIHJlc3VsdDsKfQpfQUNFT0YKaWYgYWNf
Zm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CiAgZ2xfY3ZfZnVuY19wcmludGZfcHJlY2lz
aW9uPXllcwplbHNlCiAgZ2xfY3ZfZnVuY19wcmludGZfcHJlY2lzaW9uPW5vCmZpCnJtIC1mIGNv
cmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhl
ZXh0IFwKICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4
dApmaQoKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0
OiAkZ2xfY3ZfZnVuY19wcmludGZfcHJlY2lzaW9uIiA+JjUKJGFzX2VjaG8gIiRnbF9jdl9mdW5j
X3ByaW50Zl9wcmVjaXNpb24iID4mNjsgfQoKCgoKICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgcHJpbnRmIHN1cnZpdmVzIG91dC1v
Zi1tZW1vcnkgY29uZGl0aW9ucyIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgcHJp
bnRmIHN1cnZpdmVzIG91dC1vZi1tZW1vcnkgY29uZGl0aW9ucy4uLiAiID4mNjsgfQppZiAke2ds
X2N2X2Z1bmNfcHJpbnRmX2Vub21lbSs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNh
Y2hlZCkgIiA+JjYKZWxzZQoKICAgICAgZ2xfY3ZfZnVuY19wcmludGZfZW5vbWVtPSJndWVzc2lu
ZyBubyIKICAgICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSBubzsgdGhlbgogICAgICAg
IGlmIHRlc3QgJEFQUExFX1VOSVZFUlNBTF9CVUlMRCA9IDA7IHRoZW4KICAgICAgICAgIGNhdCBj
b25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmgu
ICAqLwoKCiNpbmNsdWRlIDxzdGRsaWIuaD4KI2lmIGRlZmluZWQgX19NQUNIX18gJiYgZGVmaW5l
ZCBfX0FQUExFX18KLyogQXZvaWQgYSBjcmFzaCBvbiBNYWMgT1MgWC4gICovCiNpbmNsdWRlIDxt
YWNoL21hY2guaD4KI2luY2x1ZGUgPG1hY2gvbWFjaF9lcnJvci5oPgojaW5jbHVkZSA8bWFjaC90
aHJlYWRfc3RhdHVzLmg+CiNpbmNsdWRlIDxtYWNoL2V4Y2VwdGlvbi5oPgojaW5jbHVkZSA8bWFj
aC90YXNrLmg+CiNpbmNsdWRlIDxwdGhyZWFkLmg+Ci8qIFRoZSBleGNlcHRpb24gcG9ydCBvbiB3
aGljaCBvdXIgdGhyZWFkIGxpc3RlbnMuICAqLwpzdGF0aWMgbWFjaF9wb3J0X3Qgb3VyX2V4Y2Vw
dGlvbl9wb3J0OwovKiBUaGUgbWFpbiBmdW5jdGlvbiBvZiB0aGUgdGhyZWFkIGxpc3RlbmluZyBm
b3IgZXhjZXB0aW9ucyBvZiB0eXBlCiAgIEVYQ19CQURfQUNDRVNTLiAgKi8Kc3RhdGljIHZvaWQg
KgptYWNoX2V4Y2VwdGlvbl90aHJlYWQgKHZvaWQgKmFyZykKewogIC8qIEJ1ZmZlciBmb3IgYSBt
ZXNzYWdlIHRvIGJlIHJlY2VpdmVkLiAgKi8KICBzdHJ1Y3QgewogICAgbWFjaF9tc2dfaGVhZGVy
X3QgaGVhZDsKICAgIG1hY2hfbXNnX2JvZHlfdCBtc2doX2JvZHk7CiAgICBjaGFyIGRhdGExMDI0
OwogIH0gbXNnOwogIG1hY2hfbXNnX3JldHVybl90IHJldHZhbDsKICAvKiBXYWl0IGZvciBhIG1l
c3NhZ2Ugb24gdGhlIGV4Y2VwdGlvbiBwb3J0LiAgKi8KICByZXR2YWwgPSBtYWNoX21zZyAoJm1z
Zy5oZWFkLCBNQUNIX1JDVl9NU0cgfCBNQUNIX1JDVl9MQVJHRSwgMCwgc2l6ZW9mIChtc2cpLAog
ICAgICAgICAgICAgICAgICAgICBvdXJfZXhjZXB0aW9uX3BvcnQsIE1BQ0hfTVNHX1RJTUVPVVRf
Tk9ORSwgTUFDSF9QT1JUX05VTEwpOwogIGlmIChyZXR2YWwgIT0gTUFDSF9NU0dfU1VDQ0VTUykK
ICAgIGFib3J0ICgpOwogIGV4aXQgKDEpOwp9CnN0YXRpYyB2b2lkCm5vY3Jhc2hfaW5pdCAodm9p
ZCkKewogIG1hY2hfcG9ydF90IHNlbGYgPSBtYWNoX3Rhc2tfc2VsZiAoKTsKICAvKiBBbGxvY2F0
ZSBhIHBvcnQgb24gd2hpY2ggdGhlIHRocmVhZCBzaGFsbCBsaXN0ZW4gZm9yIGV4Y2VwdGlvbnMu
ICAqLwogIGlmIChtYWNoX3BvcnRfYWxsb2NhdGUgKHNlbGYsIE1BQ0hfUE9SVF9SSUdIVF9SRUNF
SVZFLCAmb3VyX2V4Y2VwdGlvbl9wb3J0KQogICAgICA9PSBLRVJOX1NVQ0NFU1MpIHsKICAgIC8q
IFNlZSBodHRwOi8vd2ViLm1pdC5lZHUvZGFyd2luL3NyYy9tb2R1bGVzL3hudS9vc2Ztay9tYW4v
bWFjaF9wb3J0X2luc2VydF9yaWdodC5odG1sLiAgKi8KICAgIGlmIChtYWNoX3BvcnRfaW5zZXJ0
X3JpZ2h0IChzZWxmLCBvdXJfZXhjZXB0aW9uX3BvcnQsIG91cl9leGNlcHRpb25fcG9ydCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQUNIX01TR19UWVBFX01BS0VfU0VORCkKICAg
ICAgICA9PSBLRVJOX1NVQ0NFU1MpIHsKICAgICAgLyogVGhlIGV4Y2VwdGlvbnMgd2Ugd2FudCB0
byBjYXRjaC4gIE9ubHkgRVhDX0JBRF9BQ0NFU1MgaXMgaW50ZXJlc3RpbmcKICAgICAgICAgZm9y
IHVzLiAgKi8KICAgICAgZXhjZXB0aW9uX21hc2tfdCBtYXNrID0gRVhDX01BU0tfQkFEX0FDQ0VT
UzsKICAgICAgLyogQ3JlYXRlIHRoZSB0aHJlYWQgbGlzdGVuaW5nIG9uIHRoZSBleGNlcHRpb24g
cG9ydC4gICovCiAgICAgIHB0aHJlYWRfYXR0cl90IGF0dHI7CiAgICAgIHB0aHJlYWRfdCB0aHJl
YWQ7CiAgICAgIGlmIChwdGhyZWFkX2F0dHJfaW5pdCAoJmF0dHIpID09IDAKICAgICAgICAgICYm
IHB0aHJlYWRfYXR0cl9zZXRkZXRhY2hzdGF0ZSAoJmF0dHIsIFBUSFJFQURfQ1JFQVRFX0RFVEFD
SEVEKSA9PSAwCiAgICAgICAgICAmJiBwdGhyZWFkX2NyZWF0ZSAoJnRocmVhZCwgJmF0dHIsIG1h
Y2hfZXhjZXB0aW9uX3RocmVhZCwgTlVMTCkgPT0gMCkgewogICAgICAgIHB0aHJlYWRfYXR0cl9k
ZXN0cm95ICgmYXR0cik7CiAgICAgICAgLyogUmVwbGFjZSB0aGUgZXhjZXB0aW9uIHBvcnQgaW5m
byBmb3IgdGhlc2UgZXhjZXB0aW9ucyB3aXRoIG91ciBvd24uCiAgICAgICAgICAgTm90ZSB0aGF0
IHdlIHJlcGxhY2UgdGhlIGV4Y2VwdGlvbiBwb3J0IGZvciB0aGUgZW50aXJlIHRhc2ssIG5vdCBv
bmx5CiAgICAgICAgICAgZm9yIGEgcGFydGljdWxhciB0aHJlYWQuICBUaGlzIGhhcyB0aGUgZWZm
ZWN0IHRoYXQgd2hlbiBvdXIgZXhjZXB0aW9uCiAgICAgICAgICAgcG9ydCBnZXRzIHRoZSBtZXNz
YWdlLCB0aGUgdGhyZWFkIHNwZWNpZmljIGV4Y2VwdGlvbiBwb3J0IGhhcyBhbHJlYWR5CiAgICAg
ICAgICAgYmVlbiBhc2tlZCwgYW5kIHdlIGRvbid0IG5lZWQgdG8gYm90aGVyIGFib3V0IGl0Lgog
ICAgICAgICAgIFNlZSBodHRwOi8vd2ViLm1pdC5lZHUvZGFyd2luL3NyYy9tb2R1bGVzL3hudS9v
c2Ztay9tYW4vdGFza19zZXRfZXhjZXB0aW9uX3BvcnRzLmh0bWwuICAqLwogICAgICAgIHRhc2tf
c2V0X2V4Y2VwdGlvbl9wb3J0cyAoc2VsZiwgbWFzaywgb3VyX2V4Y2VwdGlvbl9wb3J0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhDRVBUSU9OX0RFRkFVTFQsIE1BQ0hJTkVf
VEhSRUFEX1NUQVRFKTsKICAgICAgfQogICAgfQogIH0KfQojZWxpZiAoZGVmaW5lZCBfV0lOMzIg
fHwgZGVmaW5lZCBfX1dJTjMyX18pICYmICEgZGVmaW5lZCBfX0NZR1dJTl9fCi8qIEF2b2lkIGEg
Y3Jhc2ggb24gbmF0aXZlIFdpbmRvd3MuICAqLwojZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4K
I2luY2x1ZGUgPHdpbmRvd3MuaD4KI2luY2x1ZGUgPHdpbmVycm9yLmg+CnN0YXRpYyBMT05HIFdJ
TkFQSQpleGNlcHRpb25fZmlsdGVyIChFWENFUFRJT05fUE9JTlRFUlMgKkV4Y2VwdGlvbkluZm8p
CnsKICBzd2l0Y2ggKEV4Y2VwdGlvbkluZm8tPkV4Y2VwdGlvblJlY29yZC0+RXhjZXB0aW9uQ29k
ZSkKICAgIHsKICAgIGNhc2UgRVhDRVBUSU9OX0FDQ0VTU19WSU9MQVRJT046CiAgICBjYXNlIEVY
Q0VQVElPTl9JTl9QQUdFX0VSUk9SOgogICAgY2FzZSBFWENFUFRJT05fU1RBQ0tfT1ZFUkZMT1c6
CiAgICBjYXNlIEVYQ0VQVElPTl9HVUFSRF9QQUdFOgogICAgY2FzZSBFWENFUFRJT05fUFJJVl9J
TlNUUlVDVElPTjoKICAgIGNhc2UgRVhDRVBUSU9OX0lMTEVHQUxfSU5TVFJVQ1RJT046CiAgICBj
YXNlIEVYQ0VQVElPTl9EQVRBVFlQRV9NSVNBTElHTk1FTlQ6CiAgICBjYXNlIEVYQ0VQVElPTl9B
UlJBWV9CT1VORFNfRVhDRUVERUQ6CiAgICBjYXNlIEVYQ0VQVElPTl9OT05DT05USU5VQUJMRV9F
WENFUFRJT046CiAgICAgIGV4aXQgKDEpOwogICAgfQogIHJldHVybiBFWENFUFRJT05fQ09OVElO
VUVfU0VBUkNIOwp9CnN0YXRpYyB2b2lkCm5vY3Jhc2hfaW5pdCAodm9pZCkKewogIFNldFVuaGFu
ZGxlZEV4Y2VwdGlvbkZpbHRlciAoKExQVE9QX0xFVkVMX0VYQ0VQVElPTl9GSUxURVIpIGV4Y2Vw
dGlvbl9maWx0ZXIpOwp9CiNlbHNlCi8qIEF2b2lkIGEgY3Jhc2ggb24gUE9TSVggc3lzdGVtcy4g
ICovCiNpbmNsdWRlIDxzaWduYWwuaD4KLyogQSBQT1NJWCBzaWduYWwgaGFuZGxlci4gICovCnN0
YXRpYyB2b2lkCmV4Y2VwdGlvbl9oYW5kbGVyIChpbnQgc2lnKQp7CiAgZXhpdCAoMSk7Cn0Kc3Rh
dGljIHZvaWQKbm9jcmFzaF9pbml0ICh2b2lkKQp7CiNpZmRlZiBTSUdTRUdWCiAgc2lnbmFsIChT
SUdTRUdWLCBleGNlcHRpb25faGFuZGxlcik7CiNlbmRpZgojaWZkZWYgU0lHQlVTCiAgc2lnbmFs
IChTSUdCVVMsIGV4Y2VwdGlvbl9oYW5kbGVyKTsKI2VuZGlmCn0KI2VuZGlmCgojaW5jbHVkZSA8
c3RkaW8uaD4KI2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8c3lzL3RpbWUuaD4KI2lu
Y2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgojaW5jbHVkZSA8ZXJybm8uaD4KaW50IG1haW4oKQp7CiAg
c3RydWN0IHJsaW1pdCBsaW1pdDsKICBpbnQgcmV0OwogIG5vY3Jhc2hfaW5pdCAoKTsKICAvKiBT
b21lIHByaW50ZiBpbXBsZW1lbnRhdGlvbnMgYWxsb2NhdGUgdGVtcG9yYXJ5IHNwYWNlIHdpdGgg
bWFsbG9jLiAgKi8KICAvKiBPbiBCU0Qgc3lzdGVtcywgbWFsbG9jKCkgaXMgbGltaXRlZCBieSBS
TElNSVRfREFUQS4gICovCiNpZmRlZiBSTElNSVRfREFUQQogIGlmIChnZXRybGltaXQgKFJMSU1J
VF9EQVRBLCAmbGltaXQpIDwgMCkKICAgIHJldHVybiA3NzsKICBpZiAobGltaXQucmxpbV9tYXgg
PT0gUkxJTV9JTkZJTklUWSB8fCBsaW1pdC5ybGltX21heCA+IDUwMDAwMDApCiAgICBsaW1pdC5y
bGltX21heCA9IDUwMDAwMDA7CiAgbGltaXQucmxpbV9jdXIgPSBsaW1pdC5ybGltX21heDsKICBp
ZiAoc2V0cmxpbWl0IChSTElNSVRfREFUQSwgJmxpbWl0KSA8IDApCiAgICByZXR1cm4gNzc7CiNl
bmRpZgogIC8qIE9uIExpbnV4IHN5c3RlbXMsIG1hbGxvYygpIGlzIGxpbWl0ZWQgYnkgUkxJTUlU
X0FTLiAgKi8KI2lmZGVmIFJMSU1JVF9BUwogIGlmIChnZXRybGltaXQgKFJMSU1JVF9BUywgJmxp
bWl0KSA8IDApCiAgICByZXR1cm4gNzc7CiAgaWYgKGxpbWl0LnJsaW1fbWF4ID09IFJMSU1fSU5G
SU5JVFkgfHwgbGltaXQucmxpbV9tYXggPiA1MDAwMDAwKQogICAgbGltaXQucmxpbV9tYXggPSA1
MDAwMDAwOwogIGxpbWl0LnJsaW1fY3VyID0gbGltaXQucmxpbV9tYXg7CiAgaWYgKHNldHJsaW1p
dCAoUkxJTUlUX0FTLCAmbGltaXQpIDwgMCkKICAgIHJldHVybiA3NzsKI2VuZGlmCiAgLyogU29t
ZSBwcmludGYgaW1wbGVtZW50YXRpb25zIGFsbG9jYXRlIHRlbXBvcmFyeSBzcGFjZSBvbiB0aGUg
c3RhY2suICAqLwojaWZkZWYgUkxJTUlUX1NUQUNLCiAgaWYgKGdldHJsaW1pdCAoUkxJTUlUX1NU
QUNLLCAmbGltaXQpIDwgMCkKICAgIHJldHVybiA3NzsKICBpZiAobGltaXQucmxpbV9tYXggPT0g
UkxJTV9JTkZJTklUWSB8fCBsaW1pdC5ybGltX21heCA+IDUwMDAwMDApCiAgICBsaW1pdC5ybGlt
X21heCA9IDUwMDAwMDA7CiAgbGltaXQucmxpbV9jdXIgPSBsaW1pdC5ybGltX21heDsKICBpZiAo
c2V0cmxpbWl0IChSTElNSVRfU1RBQ0ssICZsaW1pdCkgPCAwKQogICAgcmV0dXJuIDc3OwojZW5k
aWYKICByZXQgPSBwcmludGYgKCIlLjUwMDAwMDBmIiwgMS4wKTsKICByZXR1cm4gIShyZXQgPT0g
NTAwMDAwMiB8fCAocmV0IDwgMCAmJiBlcnJubyA9PSBFTk9NRU0pKTsKfQoKX0FDRU9GCiAgICAg
ICAgICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTog
XCIkYWNfbGlua1wiIjsgfSA+JjUKICAoZXZhbCAkYWNfbGluaykgMj4mNQogIGFjX3N0YXR1cz0k
PwogICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0
dXMiID4mNQogIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCRhY19l
eGVleHQ7IHRoZW4KICAgICAgICAgICAgKC4vY29uZnRlc3QgMj4mNQogICAgICAgICAgICAgcmVz
dWx0PSQ/CiAgICAgICAgICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiBcJD8gPSAkcmVzdWx0IiA+JjUKICAgICAgICAgICAgIGlmIHRlc3QgJHJlc3VsdCAhPSAwICYm
IHRlc3QgJHJlc3VsdCAhPSA3NzsgdGhlbiByZXN1bHQ9MTsgZmkKICAgICAgICAgICAgIGV4aXQg
JHJlc3VsdAogICAgICAgICAgICApID4vZGV2L251bGwgMj4vZGV2L251bGwKICAgICAgICAgICAg
Y2FzZSAkPyBpbgogICAgICAgICAgICAgIDApIGdsX2N2X2Z1bmNfcHJpbnRmX2Vub21lbT0ieWVz
IiA7OwogICAgICAgICAgICAgIDc3KSBnbF9jdl9mdW5jX3ByaW50Zl9lbm9tZW09Imd1ZXNzaW5n
IG5vIiA7OwogICAgICAgICAgICAgICopIGdsX2N2X2Z1bmNfcHJpbnRmX2Vub21lbT0ibm8iIDs7
CiAgICAgICAgICAgIGVzYWMKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgZ2xfY3ZfZnVuY19w
cmludGZfZW5vbWVtPSJndWVzc2luZyBubyIKICAgICAgICAgIGZpCiAgICAgICAgICBybSAtZnIg
Y29uZnRlc3QqCiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2xfY3ZfZnVuY19wcmludGZfZW5vbWVtPSJndWVzc2luZyBubyIKICAgICAgICBmaQog
ICAgICBmaQogICAgICBpZiB0ZXN0ICIkZ2xfY3ZfZnVuY19wcmludGZfZW5vbWVtIiA9ICJndWVz
c2luZyBubyI7IHRoZW4KICAgICAgICBjYXNlICIkaG9zdF9vcyIgaW4KICAgICAgICAgICAgICAg
ICAgICAjIEd1ZXNzIHllcyBvbiBnbGliYyBzeXN0ZW1zLgogICAgICAgICAgKi1nbnUqKSAgIGds
X2N2X2Z1bmNfcHJpbnRmX2Vub21lbT0iZ3Vlc3NpbmcgeWVzIjs7CiAgICAgICAgICAgICAgICAg
ICAgIyBHdWVzcyB5ZXMgb24gU29sYXJpcy4KICAgICAgICAgIHNvbGFyaXMqKSBnbF9jdl9mdW5j
X3ByaW50Zl9lbm9tZW09Imd1ZXNzaW5nIHllcyI7OwogICAgICAgICAgICAgICAgICAgICMgR3Vl
c3MgeWVzIG9uIEFJWC4KICAgICAgICAgIGFpeCopICAgICBnbF9jdl9mdW5jX3ByaW50Zl9lbm9t
ZW09Imd1ZXNzaW5nIHllcyI7OwogICAgICAgICAgICAgICAgICAgICMgR3Vlc3MgeWVzIG9uIEhQ
LVVYL2hwcGEuCiAgICAgICAgICBocHV4KikgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgogICAgICAg
ICAgICAgICAgICAgICAgaHBwYSopIGdsX2N2X2Z1bmNfcHJpbnRmX2Vub21lbT0iZ3Vlc3Npbmcg
eWVzIjs7CiAgICAgICAgICAgICAgICAgICAgICAqKSAgICAgZ2xfY3ZfZnVuY19wcmludGZfZW5v
bWVtPSJndWVzc2luZyBubyI7OwogICAgICAgICAgICAgICAgICAgIGVzYWMKICAgICAgICAgICAg
ICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgICMgR3Vlc3MgeWVzIG9uIElSSVguCiAgICAg
ICAgICBpcml4KikgICAgZ2xfY3ZfZnVuY19wcmludGZfZW5vbWVtPSJndWVzc2luZyB5ZXMiOzsK
ICAgICAgICAgICAgICAgICAgICAjIEd1ZXNzIHllcyBvbiBPU0YvMS4KICAgICAgICAgIG9zZiop
ICAgICBnbF9jdl9mdW5jX3ByaW50Zl9lbm9tZW09Imd1ZXNzaW5nIHllcyI7OwogICAgICAgICAg
ICAgICAgICAgICMgR3Vlc3MgeWVzIG9uIEJlT1MuCiAgICAgICAgICBiZW9zKikgICAgZ2xfY3Zf
ZnVuY19wcmludGZfZW5vbWVtPSJndWVzc2luZyB5ZXMiOzsKICAgICAgICAgICAgICAgICAgICAj
IEd1ZXNzIHllcyBvbiBIYWlrdS4KICAgICAgICAgIGhhaWt1KikgICBnbF9jdl9mdW5jX3ByaW50
Zl9lbm9tZW09Imd1ZXNzaW5nIHllcyI7OwogICAgICAgICAgICAgICAgICAgICMgSWYgd2UgZG9u
J3Qga25vdywgYXNzdW1lIHRoZSB3b3JzdC4KICAgICAgICAgICopICAgICAgICBnbF9jdl9mdW5j
X3ByaW50Zl9lbm9tZW09Imd1ZXNzaW5nIG5vIjs7CiAgICAgICAgZXNhYwogICAgICBmaQoKZmkK
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbF9jdl9m
dW5jX3ByaW50Zl9lbm9tZW0iID4mNQokYXNfZWNobyAiJGdsX2N2X2Z1bmNfcHJpbnRmX2Vub21l
bSIgPiY2OyB9CgoKCiAgY2FzZSAiJGdsX2N2X2Z1bmNfcHJpbnRmX2xvbmdfZG91YmxlIiBpbgog
ICAgKnllcykKICAgICAgOzsKICAgICopCgokYXNfZWNobyAiI2RlZmluZSBORUVEX1BSSU5URl9M
T05HX0RPVUJMRSAxIiA+PmNvbmZkZWZzLmgKCiAgICAgIDs7CiAgZXNhYwoKCgoKCgoKICB7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB1bnNpZ25l
ZCBsb25nIGxvbmcgaW50IiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHVuc2lnbmVkIGxv
bmcgbG9uZyBpbnQuLi4gIiA+JjY7IH0KaWYgJHthY19jdl90eXBlX3Vuc2lnbmVkX2xvbmdfbG9u
Z19pbnQrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UK
ICBhY19jdl90eXBlX3Vuc2lnbmVkX2xvbmdfbG9uZ19pbnQ9eWVzCiAgICAgaWYgdGVzdCAieCR7
YWNfY3ZfcHJvZ19jY19jOTktbm99IiA9IHhubzsgdGhlbgogICAgICAgY2F0IGNvbmZkZWZzLmgg
LSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCgogIC8q
IEZvciBub3csIGRvIG5vdCB0ZXN0IHRoZSBwcmVwcm9jZXNzb3I7IGFzIG9mIDIwMDcgdGhlcmUg
YXJlIHRvbyBtYW55CiAgICAgICAgIGltcGxlbWVudGF0aW9ucyB3aXRoIGJyb2tlbiBwcmVwcm9j
ZXNzb3JzLiAgUGVyaGFwcyB0aGlzIGNhbgogICAgICAgICBiZSByZXZpc2l0ZWQgaW4gMjAxMi4g
IEluIHRoZSBtZWFudGltZSwgY29kZSBzaG91bGQgbm90IGV4cGVjdAogICAgICAgICAjaWYgdG8g
d29yayB3aXRoIGxpdGVyYWxzIHdpZGVyIHRoYW4gMzIgYml0cy4gICovCiAgICAgIC8qIFRlc3Qg
bGl0ZXJhbHMuICAqLwogICAgICBsb25nIGxvbmcgaW50IGxsID0gOTIyMzM3MjAzNjg1NDc3NTgw
N2xsOwogICAgICBsb25nIGxvbmcgaW50IG5sbCA9IC05MjIzMzcyMDM2ODU0Nzc1ODA3TEw7CiAg
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgdWxsID0gMTg0NDY3NDQwNzM3MDk1NTE2MTVVTEw7
CiAgICAgIC8qIFRlc3QgY29uc3RhbnQgZXhwcmVzc2lvbnMuICAgKi8KICAgICAgdHlwZWRlZiBp
bnQgYVsoKC05MjIzMzcyMDM2ODU0Nzc1ODA3TEwgPCAwICYmIDAgPCA5MjIzMzcyMDM2ODU0Nzc1
ODA3bGwpCiAgICAgICAgICAgICAgICAgICAgID8gMSA6IC0xKV07CiAgICAgIHR5cGVkZWYgaW50
IGJbKDE4NDQ2NzQ0MDczNzA5NTUxNjE1VUxMIDw9ICh1bnNpZ25lZCBsb25nIGxvbmcgaW50KSAt
MQogICAgICAgICAgICAgICAgICAgICA/IDEgOiAtMSldOwogICAgICBpbnQgaSA9IDYzOwppbnQK
bWFpbiAoKQp7Ci8qIFRlc3QgYXZhaWxhYmlsaXR5IG9mIHJ1bnRpbWUgcm91dGluZXMgZm9yIHNo
aWZ0IGFuZCBkaXZpc2lvbi4gICovCiAgICAgIGxvbmcgbG9uZyBpbnQgbGxtYXggPSA5MjIzMzcy
MDM2ODU0Nzc1ODA3bGw7CiAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgdWxsbWF4ID0gMTg0
NDY3NDQwNzM3MDk1NTE2MTV1bGw7CiAgICAgIHJldHVybiAoKGxsIDw8IDYzKSB8IChsbCA+PiA2
MykgfCAobGwgPCBpKSB8IChsbCA+IGkpCiAgICAgICAgICAgICAgfCAobGxtYXggLyBsbCkgfCAo
bGxtYXggJSBsbCkKICAgICAgICAgICAgICB8ICh1bGwgPDwgNjMpIHwgKHVsbCA+PiA2MykgfCAo
dWxsIDw8IGkpIHwgKHVsbCA+PiBpKQogICAgICAgICAgICAgIHwgKHVsbG1heCAvIHVsbCkgfCAo
dWxsbWF4ICUgdWxsKSk7CiAgOwogIHJldHVybiAwOwp9CgpfQUNFT0YKaWYgYWNfZm5fY190cnlf
bGluayAiJExJTkVOTyI7IHRoZW4gOgoKZWxzZQogIGFjX2N2X3R5cGVfdW5zaWduZWRfbG9uZ19s
b25nX2ludD1ubwpmaQpybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0
IFwKICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CiAgICAgZmkKZmkKeyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl90eXBl
X3Vuc2lnbmVkX2xvbmdfbG9uZ19pbnQiID4mNQokYXNfZWNobyAiJGFjX2N2X3R5cGVfdW5zaWdu
ZWRfbG9uZ19sb25nX2ludCIgPiY2OyB9CiAgaWYgdGVzdCAkYWNfY3ZfdHlwZV91bnNpZ25lZF9s
b25nX2xvbmdfaW50ID0geWVzOyB0aGVuCgokYXNfZWNobyAiI2RlZmluZSBIQVZFX1VOU0lHTkVE
X0xPTkdfTE9OR19JTlQgMSIgPj5jb25mZGVmcy5oCgogIGZpCgoKCiAgeyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbG9uZyBsb25nIGludCIgPiY1
CiRhc19lY2hvX24gImNoZWNraW5nIGZvciBsb25nIGxvbmcgaW50Li4uICIgPiY2OyB9CmlmICR7
YWNfY3ZfdHlwZV9sb25nX2xvbmdfaW50Kzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIo
Y2FjaGVkKSAiID4mNgplbHNlCiAgYWNfY3ZfdHlwZV9sb25nX2xvbmdfaW50PXllcwogICAgICBp
ZiB0ZXN0ICJ4JHthY19jdl9wcm9nX2NjX2M5OS1ub30iID0geG5vOyB0aGVuCiAgICAgICAgYWNf
Y3ZfdHlwZV9sb25nX2xvbmdfaW50PSRhY19jdl90eXBlX3Vuc2lnbmVkX2xvbmdfbG9uZ19pbnQK
ICAgICAgICBpZiB0ZXN0ICRhY19jdl90eXBlX2xvbmdfbG9uZ19pbnQgPSB5ZXM7IHRoZW4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRjcm9zc19jb21w
aWxpbmciID0geWVzOyB0aGVuIDoKICA6CmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9G
ID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPGxpbWl0
cy5oPgogICAgICAgICAgICAgICAgICNpZm5kZWYgTExPTkdfTUFYCiAgICAgICAgICAgICAgICAg
IyBkZWZpbmUgSEFMRiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgKDFMTCA8PCAoc2l6ZW9m
IChsb25nIGxvbmcgaW50KSAqIENIQVJfQklUIC0gMikpCiAgICAgICAgICAgICAgICAgIyBkZWZp
bmUgTExPTkdfTUFYIChIQUxGIC0gMSArIEhBTEYpCiAgICAgICAgICAgICAgICAgI2VuZGlmCmlu
dAptYWluICgpCnsKbG9uZyBsb25nIGludCBuID0gMTsKICAgICAgICAgICAgICAgICBpbnQgaTsK
ICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyA7IGkrKykKICAgICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGludCBtID0gbiA8PCBpOwogICAgICAgICAg
ICAgICAgICAgICBpZiAobSA+PiBpICE9IG4pCiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDE7CiAgICAgICAgICAgICAgICAgICAgIGlmIChMTE9OR19NQVggLyAyIDwgbSkKICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X3J1biAi
JExJTkVOTyI7IHRoZW4gOgoKZWxzZQogIGFjX2N2X3R5cGVfbG9uZ19sb25nX2ludD1ubwpmaQpy
bSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0
JGFjX2V4ZWV4dCBcCiAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0
LiRhY19leHQKZmkKCiAgICAgICAgZmkKICAgICAgZmkKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl90eXBlX2xvbmdfbG9uZ19pbnQiID4m
NQokYXNfZWNobyAiJGFjX2N2X3R5cGVfbG9uZ19sb25nX2ludCIgPiY2OyB9CiAgaWYgdGVzdCAk
YWNfY3ZfdHlwZV9sb25nX2xvbmdfaW50ID0geWVzOyB0aGVuCgokYXNfZWNobyAiI2RlZmluZSBI
QVZFX0xPTkdfTE9OR19JTlQgMSIgPj5jb25mZGVmcy5oCgogIGZpCgoKICB7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB3Y2hhcl90IiA+JjUKJGFz
X2VjaG9fbiAiY2hlY2tpbmcgZm9yIHdjaGFyX3QuLi4gIiA+JjY7IH0KaWYgJHtndF9jdl9jX3dj
aGFyX3QrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UK
ICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25m
ZGVmcy5oLiAgKi8KI2luY2x1ZGUgPHN0ZGRlZi5oPgogICAgICAgICAgICB3Y2hhcl90IGZvbyA9
ICh3Y2hhcl90KSdcMCc7CmludAptYWluICgpCnsKCiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgpp
ZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CiAgZ3RfY3ZfY193Y2hhcl90
PXllcwplbHNlCiAgZ3RfY3ZfY193Y2hhcl90PW5vCmZpCnJtIC1mIGNvcmUgY29uZnRlc3QuZXJy
IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dApmaQp7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGd0X2N2X2Nfd2NoYXJfdCIgPiY1CiRh
c19lY2hvICIkZ3RfY3ZfY193Y2hhcl90IiA+JjY7IH0KICBpZiB0ZXN0ICRndF9jdl9jX3djaGFy
X3QgPSB5ZXM7IHRoZW4KCiRhc19lY2hvICIjZGVmaW5lIEhBVkVfV0NIQVJfVCAxIiA+PmNvbmZk
ZWZzLmgKCiAgZmkKCgogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
Y2hlY2tpbmcgZm9yIHdpbnRfdCIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIGZvciB3aW50X3Qu
Li4gIiA+JjY7IH0KaWYgJHtndF9jdl9jX3dpbnRfdCs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2Vj
aG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNv
bmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwoKLyogVHJ1NjQgd2l0aCBEZXNr
dG9wIFRvb2xraXQgQyBoYXMgYSBidWc6IDxzdGRpby5oPiBtdXN0IGJlIGluY2x1ZGVkIGJlZm9y
ZQogICA8d2NoYXIuaD4uCiAgIEJTRC9PUyA0LjAuMSBoYXMgYSBidWc6IDxzdGRkZWYuaD4sIDxz
dGRpby5oPiBhbmQgPHRpbWUuaD4gbXVzdCBiZSBpbmNsdWRlZAogICBiZWZvcmUgPHdjaGFyLmg+
LiAgKi8KI2luY2x1ZGUgPHN0ZGRlZi5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHRp
bWUuaD4KI2luY2x1ZGUgPHdjaGFyLmg+CiAgICAgICAgICAgIHdpbnRfdCBmb28gPSAod2NoYXJf
dCknXDAnOwppbnQKbWFpbiAoKQp7CgogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNfZm5f
Y190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgogIGd0X2N2X2Nfd2ludF90PXllcwplbHNl
CiAgZ3RfY3ZfY193aW50X3Q9bm8KZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3Qu
JGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogcmVzdWx0OiAkZ3RfY3ZfY193aW50X3QiID4mNQokYXNfZWNobyAiJGd0
X2N2X2Nfd2ludF90IiA+JjY7IH0KICBpZiB0ZXN0ICRndF9jdl9jX3dpbnRfdCA9IHllczsgdGhl
bgoKJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9XSU5UX1QgMSIgPj5jb25mZGVmcy5oCgogIGZpCgoK
CgoKCgoKICA6CgoKCgoKICBpZiB0ZXN0ICRhY19jdl9oZWFkZXJfZmVhdHVyZXNfaCA9IHllczsg
dGhlbgogICAgSEFWRV9GRUFUVVJFU19IPTEKICBlbHNlCiAgICBIQVZFX0ZFQVRVUkVTX0g9MAog
IGZpCgoKCgoKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr
aW5nIGZvciBpbnRtYXhfdCIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIGZvciBpbnRtYXhfdC4u
LiAiID4mNjsgfQppZiAke2d0X2N2X2NfaW50bWF4X3QrOn0gZmFsc2U7IHRoZW4gOgogICRhc19l
Y2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5j
b25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCiNpbmNsdWRlIDxzdGRkZWYu
aD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaWYgSEFWRV9TVERJTlRfSF9XSVRIX1VJTlRNQVgKI2lu
Y2x1ZGUgPHN0ZGludC5oPgojZW5kaWYKI2lmIEhBVkVfSU5UVFlQRVNfSF9XSVRIX1VJTlRNQVgK
I2luY2x1ZGUgPGludHR5cGVzLmg+CiNlbmRpZgoKaW50Cm1haW4gKCkKewppbnRtYXhfdCB4ID0g
LTE7IHJldHVybiAheDsKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2Nv
bXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKICBndF9jdl9jX2ludG1heF90PXllcwplbHNlCiAgZ3Rf
Y3ZfY19pbnRtYXhfdD1ubwpmaQpybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNf
b2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiByZXN1bHQ6ICRndF9jdl9jX2ludG1heF90IiA+JjUKJGFzX2VjaG8gIiRndF9j
dl9jX2ludG1heF90IiA+JjY7IH0KICBpZiB0ZXN0ICRndF9jdl9jX2ludG1heF90ID0geWVzOyB0
aGVuCgokYXNfZWNobyAiI2RlZmluZSBIQVZFX0lOVE1BWF9UIDEiID4+Y29uZmRlZnMuaAoKICBl
bHNlCgogICAgdGVzdCAkYWNfY3ZfdHlwZV9sb25nX2xvbmdfaW50ID0geWVzIFwKICAgICAgJiYg
YWNfdHlwZT0nbG9uZyBsb25nJyBcCiAgICAgIHx8IGFjX3R5cGU9J2xvbmcnCgpjYXQgPj5jb25m
ZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgaW50bWF4X3QgJGFjX3R5cGUKX0FDRU9GCgogIGZpCgoK
ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXJl
IHRvIGZpbmQgdGhlIGV4cG9uZW50IGluIGEgJ2RvdWJsZSciID4mNQokYXNfZWNob19uICJjaGVj
a2luZyB3aGVyZSB0byBmaW5kIHRoZSBleHBvbmVudCBpbiBhICdkb3VibGUnLi4uICIgPiY2OyB9
CmlmICR7Z2xfY3ZfY2NfZG91YmxlX2V4cGJpdDArOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hv
X24gIihjYWNoZWQpICIgPiY2CmVsc2UKCiAgICAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmci
ID0geWVzOyB0aGVuIDoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5j
b25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCiNpZiBkZWZpbmVkIGFybSB8
fCBkZWZpbmVkIF9fYXJtIHx8IGRlZmluZWQgX19hcm1fXwogIG1peGVkX2VuZGlhbm5lc3MKI2Vu
ZGlmCgpfQUNFT0YKaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAog
ICRFR1JFUCAibWl4ZWRfZW5kaWFubmVzcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKICBnbF9j
dl9jY19kb3VibGVfZXhwYml0MD0idW5rbm93biIKZWxzZQoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOgppZiAke2FjX2N2X2NfYmlnZW5k
aWFuKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCiAg
YWNfY3ZfY19iaWdlbmRpYW49dW5rbm93bgogICAgIyBTZWUgaWYgd2UncmUgZGVhbGluZyB3aXRo
IGEgdW5pdmVyc2FsIGNvbXBpbGVyLgogICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29u
ZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCiNpZm5kZWYgX19BUFBMRV9DQ19f
CgkgICAgICAgbm90IGEgdW5pdmVyc2FsIGNhcGFibGUgY29tcGlsZXIKCSAgICAgI2VuZGlmCgkg
ICAgIHR5cGVkZWYgaW50IGR1bW15OwoKX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRM
SU5FTk8iOyB0aGVuIDoKCgkjIENoZWNrIGZvciBwb3RlbnRpYWwgLWFyY2ggZmxhZ3MuICBJdCBp
cyBub3QgdW5pdmVyc2FsIHVubGVzcwoJIyB0aGVyZSBhcmUgYXQgbGVhc3QgdHdvIC1hcmNoIGZs
YWdzIHdpdGggZGlmZmVyZW50IHZhbHVlcy4KCWFjX2FyY2g9CglhY19wcmV2PQoJZm9yIGFjX3dv
cmQgaW4gJENDICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTOyBkbwoJIGlmIHRlc3QgLW4gIiRh
Y19wcmV2IjsgdGhlbgoJICAgY2FzZSAkYWNfd29yZCBpbgoJICAgICBpPzg2IHwgeDg2XzY0IHwg
cHBjIHwgcHBjNjQpCgkgICAgICAgaWYgdGVzdCAteiAiJGFjX2FyY2giIHx8IHRlc3QgIiRhY19h
cmNoIiA9ICIkYWNfd29yZCI7IHRoZW4KCQkgYWNfYXJjaD0kYWNfd29yZAoJICAgICAgIGVsc2UK
CQkgYWNfY3ZfY19iaWdlbmRpYW49dW5pdmVyc2FsCgkJIGJyZWFrCgkgICAgICAgZmkKCSAgICAg
ICA7OwoJICAgZXNhYwoJICAgYWNfcHJldj0KCSBlbGlmIHRlc3QgIngkYWNfd29yZCIgPSAieC1h
cmNoIjsgdGhlbgoJICAgYWNfcHJldj1hcmNoCgkgZmkKICAgICAgIGRvbmUKZmkKcm0gLWYgY29y
ZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiAgICBp
ZiB0ZXN0ICRhY19jdl9jX2JpZ2VuZGlhbiA9IHVua25vd247IHRoZW4KICAgICAgIyBTZWUgaWYg
c3lzL3BhcmFtLmggZGVmaW5lcyB0aGUgQllURV9PUkRFUiBtYWNyby4KICAgICAgY2F0IGNvbmZk
ZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICov
CiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KCSAgICAgI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgoKaW50
Cm1haW4gKCkKewojaWYgISAoZGVmaW5lZCBCWVRFX09SREVSICYmIGRlZmluZWQgQklHX0VORElB
TiBcCgkJICAgICAmJiBkZWZpbmVkIExJVFRMRV9FTkRJQU4gJiYgQllURV9PUkRFUiAmJiBCSUdf
RU5ESUFOIFwKCQkgICAgICYmIExJVFRMRV9FTkRJQU4pCgkgICAgICBib2d1cyBlbmRpYW4gbWFj
cm9zCgkgICAgICNlbmRpZgoKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5
X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKICAjIEl0IGRvZXM7IG5vdyBzZWUgd2hldGhlciBp
dCBkZWZpbmVkIHRvIEJJR19FTkRJQU4gb3Igbm90LgoJIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNF
T0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVkZSA8c3lz
L3R5cGVzLmg+CgkJI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgoKaW50Cm1haW4gKCkKewojaWYgQllU
RV9PUkRFUiAhPSBCSUdfRU5ESUFOCgkJIG5vdCBiaWcgZW5kaWFuCgkJI2VuZGlmCgogIDsKICBy
ZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4g
OgogIGFjX2N2X2NfYmlnZW5kaWFuPXllcwplbHNlCiAgYWNfY3ZfY19iaWdlbmRpYW49bm8KZmkK
cm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNf
ZXh0CmZpCnJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRl
c3QuJGFjX2V4dAogICAgZmkKICAgIGlmIHRlc3QgJGFjX2N2X2NfYmlnZW5kaWFuID0gdW5rbm93
bjsgdGhlbgogICAgICAjIFNlZSBpZiA8bGltaXRzLmg+IGRlZmluZXMgX0xJVFRMRV9FTkRJQU4g
b3IgX0JJR19FTkRJQU4gKGUuZy4sIFNvbGFyaXMpLgogICAgICBjYXQgY29uZmRlZnMuaCAtIDw8
X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1ZGUg
PGxpbWl0cy5oPgoKaW50Cm1haW4gKCkKewojaWYgISAoZGVmaW5lZCBfTElUVExFX0VORElBTiB8
fCBkZWZpbmVkIF9CSUdfRU5ESUFOKQoJICAgICAgYm9ndXMgZW5kaWFuIG1hY3JvcwoJICAgICAj
ZW5kaWYKCiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9jb21waWxlICIk
TElORU5PIjsgdGhlbiA6CiAgIyBJdCBkb2VzOyBub3cgc2VlIHdoZXRoZXIgaXQgZGVmaW5lZCB0
byBfQklHX0VORElBTiBvciBub3QuCgkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRl
c3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCiNpbmNsdWRlIDxsaW1pdHMuaD4KCmlu
dAptYWluICgpCnsKI2lmbmRlZiBfQklHX0VORElBTgoJCSBub3QgYmlnIGVuZGlhbgoJCSNlbmRp
ZgoKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5F
Tk8iOyB0aGVuIDoKICBhY19jdl9jX2JpZ2VuZGlhbj15ZXMKZWxzZQogIGFjX2N2X2NfYmlnZW5k
aWFuPW5vCmZpCnJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29u
ZnRlc3QuJGFjX2V4dApmaQpybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2Jq
ZXh0IGNvbmZ0ZXN0LiRhY19leHQKICAgIGZpCiAgICBpZiB0ZXN0ICRhY19jdl9jX2JpZ2VuZGlh
biA9IHVua25vd247IHRoZW4KICAgICAgIyBDb21waWxlIGEgdGVzdCBwcm9ncmFtLgogICAgICBp
ZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CiAgIyBUcnkgdG8gZ3Vlc3Mg
YnkgZ3JlcHBpbmcgdmFsdWVzIGZyb20gYW4gb2JqZWN0IGZpbGUuCgkgY2F0IGNvbmZkZWZzLmgg
LSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCnNob3J0
IGludCBhc2NpaV9tbVtdID0KCQkgIHsgMHg0MjQ5LCAweDQ3NjUsIDB4NkU0NCwgMHg2OTYxLCAw
eDZFNTMsIDB4Nzk1MywgMCB9OwoJCXNob3J0IGludCBhc2NpaV9paVtdID0KCQkgIHsgMHg2OTRD
LCAweDU0NTQsIDB4NjU2QywgMHg2RTQ1LCAweDY5NDQsIDB4NkU2MSwgMCB9OwoJCWludCB1c2Vf
YXNjaWkgKGludCBpKSB7CgkJICByZXR1cm4gYXNjaWlfbW1baV0gKyBhc2NpaV9paVtpXTsKCQl9
CgkJc2hvcnQgaW50IGViY2RpY19paVtdID0KCQkgIHsgMHg4OUQzLCAweEUzRTMsIDB4ODU5Mywg
MHg5NUM1LCAweDg5QzQsIDB4OTU4MSwgMCB9OwoJCXNob3J0IGludCBlYmNkaWNfbW1bXSA9CgkJ
ICB7IDB4QzJDOSwgMHhDNzg1LCAweDk1QzQsIDB4ODk4MSwgMHg5NUUyLCAweEE4RTIsIDAgfTsK
CQlpbnQgdXNlX2ViY2RpYyAoaW50IGkpIHsKCQkgIHJldHVybiBlYmNkaWNfbW1baV0gKyBlYmNk
aWNfaWlbaV07CgkJfQoJCWV4dGVybiBpbnQgZm9vOwoKaW50Cm1haW4gKCkKewpyZXR1cm4gdXNl
X2FzY2lpIChmb28pID09IHVzZV9lYmNkaWMgKGZvbyk7CiAgOwogIHJldHVybiAwOwp9Cl9BQ0VP
RgppZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CiAgaWYgZ3JlcCBCSUdl
bkRpYW5TeVMgY29uZnRlc3QuJGFjX29iamV4dCA+L2Rldi9udWxsOyB0aGVuCgkgICAgICBhY19j
dl9jX2JpZ2VuZGlhbj15ZXMKCSAgICBmaQoJICAgIGlmIGdyZXAgTGlUVGxlRW5EaWFuIGNvbmZ0
ZXN0LiRhY19vYmpleHQgPi9kZXYvbnVsbCA7IHRoZW4KCSAgICAgIGlmIHRlc3QgIiRhY19jdl9j
X2JpZ2VuZGlhbiIgPSB1bmtub3duOyB0aGVuCgkJYWNfY3ZfY19iaWdlbmRpYW49bm8KCSAgICAg
IGVsc2UKCQkjIGZpbmRpbmcgYm90aCBzdHJpbmdzIGlzIHVubGlrZWx5IHRvIGhhcHBlbiwgYnV0
IHdobyBrbm93cz8KCQlhY19jdl9jX2JpZ2VuZGlhbj11bmtub3duCgkgICAgICBmaQoJICAgIGZp
CmZpCnJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3Qu
JGFjX2V4dAplbHNlCiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4
dAovKiBlbmQgY29uZmRlZnMuaC4gICovCiRhY19pbmNsdWRlc19kZWZhdWx0CmludAptYWluICgp
CnsKCgkgICAgIC8qIEFyZSB3ZSBsaXR0bGUgb3IgYmlnIGVuZGlhbj8gIEZyb20gSGFyYmlzb24m
U3RlZWxlLiAgKi8KCSAgICAgdW5pb24KCSAgICAgewoJICAgICAgIGxvbmcgaW50IGw7CgkgICAg
ICAgY2hhciBjW3NpemVvZiAobG9uZyBpbnQpXTsKCSAgICAgfSB1OwoJICAgICB1LmwgPSAxOwoJ
ICAgICByZXR1cm4gdS5jW3NpemVvZiAobG9uZyBpbnQpIC0gMV0gPT0gMTsKCiAgOwogIHJldHVy
biAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKICBhY19j
dl9jX2JpZ2VuZGlhbj1ubwplbHNlCiAgYWNfY3ZfY19iaWdlbmRpYW49eWVzCmZpCnJtIC1mIGNv
cmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhl
ZXh0IFwKICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4
dApmaQoKICAgIGZpCmZpCjoKIGNhc2UgJGFjX2N2X2NfYmlnZW5kaWFuIGluICMoCiAgIHllcykK
ICAgICBnbF9jdl9jY19kb3VibGVfZXhwYml0MD0id29yZCAwIGJpdCAyMCI7OyAjKAogICBubykK
ICAgICBnbF9jdl9jY19kb3VibGVfZXhwYml0MD0id29yZCAxIGJpdCAyMCIgOzsgIygKICAgdW5p
dmVyc2FsKQoKJGFzX2VjaG8gIiNkZWZpbmUgQUNfQVBQTEVfVU5JVkVSU0FMX0JVSUxEIDEiID4+
Y29uZmRlZnMuaAoKICAgICA7OyAjKAogICAqKQogICAgIGdsX2N2X2NjX2RvdWJsZV9leHBiaXQw
PSJ1bmtub3duIiA7OwogZXNhYwoKCmZpCnJtIC1mIGNvbmZ0ZXN0KgoKCmVsc2UKICBjYXQgY29u
ZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAg
Ki8KCiNpbmNsdWRlIDxmbG9hdC5oPgojaW5jbHVkZSA8c3RkZGVmLmg+CiNpbmNsdWRlIDxzdGRp
by5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CiNkZWZpbmUgTldPUkRTIFwKICAoKHNpemVvZiAoZG91
YmxlKSArIHNpemVvZiAodW5zaWduZWQgaW50KSAtIDEpIC8gc2l6ZW9mICh1bnNpZ25lZCBpbnQp
KQp0eXBlZGVmIHVuaW9uIHsgZG91YmxlIHZhbHVlOyB1bnNpZ25lZCBpbnQgd29yZFtOV09SRFNd
OyB9IG1lbW9yeV9kb3VibGU7CnN0YXRpYyB1bnNpZ25lZCBpbnQgb3JlZF93b3Jkc1tOV09SRFNd
OwpzdGF0aWMgdW5zaWduZWQgaW50IGFuZGVkX3dvcmRzW05XT1JEU107CnN0YXRpYyB2b2lkIGFk
ZF90b19vcmVkX3dvcmRzIChkb3VibGUgeCkKewogIG1lbW9yeV9kb3VibGUgbTsKICBzaXplX3Qg
aTsKICAvKiBDbGVhciBpdCBmaXJzdCwgaW4gY2FzZSBzaXplb2YgKGRvdWJsZSkgPCBzaXplb2Yg
KG1lbW9yeV9kb3VibGUpLiAgKi8KICBtZW1zZXQgKCZtLCAwLCBzaXplb2YgKG1lbW9yeV9kb3Vi
bGUpKTsKICBtLnZhbHVlID0geDsKICBmb3IgKGkgPSAwOyBpIDwgTldPUkRTOyBpKyspCiAgICB7
CiAgICAgIG9yZWRfd29yZHNbaV0gfD0gbS53b3JkW2ldOwogICAgICBhbmRlZF93b3Jkc1tpXSAm
PSBtLndvcmRbaV07CiAgICB9Cn0KaW50IG1haW4gKCkKewogIHNpemVfdCBqOwogIEZJTEUgKmZw
ID0gZm9wZW4gKCJjb25mdGVzdC5vdXQiLCAidyIpOwogIGlmIChmcCA9PSBOVUxMKQogICAgcmV0
dXJuIDE7CiAgZm9yIChqID0gMDsgaiA8IE5XT1JEUzsgaisrKQogICAgYW5kZWRfd29yZHNbal0g
PSB+ICh1bnNpZ25lZCBpbnQpIDA7CiAgYWRkX3RvX29yZWRfd29yZHMgKDAuMjUpOwogIGFkZF90
b19vcmVkX3dvcmRzICgwLjUpOwogIGFkZF90b19vcmVkX3dvcmRzICgxLjApOwogIGFkZF90b19v
cmVkX3dvcmRzICgyLjApOwogIGFkZF90b19vcmVkX3dvcmRzICg0LjApOwogIC8qIFJlbW92ZSBi
aXRzIHRoYXQgYXJlIGNvbW1vbiAoZS5nLiBpZiByZXByZXNlbnRhdGlvbiBvZiB0aGUgZmlyc3Qg
bWFudGlzc2EKICAgICBiaXQgaXMgZXhwbGljaXQpLiAgKi8KICBmb3IgKGogPSAwOyBqIDwgTldP
UkRTOyBqKyspCiAgICBvcmVkX3dvcmRzW2pdICY9IH5hbmRlZF93b3Jkc1tqXTsKICAvKiBOb3cg
ZmluZCB0aGUgbm9uemVybyB3b3JkLiAgKi8KICBmb3IgKGogPSAwOyBqIDwgTldPUkRTOyBqKysp
CiAgICBpZiAob3JlZF93b3Jkc1tqXSAhPSAwKQogICAgICBicmVhazsKICBpZiAoaiA8IE5XT1JE
UykKICAgIHsKICAgICAgc2l6ZV90IGk7CiAgICAgIGZvciAoaSA9IGogKyAxOyBpIDwgTldPUkRT
OyBpKyspCiAgICAgICAgaWYgKG9yZWRfd29yZHNbaV0gIT0gMCkKICAgICAgICAgIHsKICAgICAg
ICAgICAgZnByaW50ZiAoZnAsICJ1bmtub3duIik7CiAgICAgICAgICAgIHJldHVybiAoZmNsb3Nl
IChmcCkgIT0gMCk7CiAgICAgICAgICB9CiAgICAgIGZvciAoaSA9IDA7IDsgaSsrKQogICAgICAg
IGlmICgob3JlZF93b3Jkc1tqXSA+PiBpKSAmIDEpCiAgICAgICAgICB7CiAgICAgICAgICAgIGZw
cmludGYgKGZwLCAid29yZCAlZCBiaXQgJWQiLCAoaW50KSBqLCAoaW50KSBpKTsKICAgICAgICAg
ICAgcmV0dXJuIChmY2xvc2UgKGZwKSAhPSAwKTsKICAgICAgICAgIH0KICAgIH0KICBmcHJpbnRm
IChmcCwgInVua25vd24iKTsKICByZXR1cm4gKGZjbG9zZSAoZnApICE9IDApOwp9CgpfQUNFT0YK
aWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CiAgZ2xfY3ZfY2NfZG91YmxlX2V4
cGJpdDA9YGNhdCBjb25mdGVzdC5vdXRgCmVsc2UKICBnbF9jdl9jY19kb3VibGVfZXhwYml0MD0i
dW5rbm93biIKZmkKcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJi
Lm91dCBjb25mdGVzdCRhY19leGVleHQgXAogIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3Qu
YmVhbSBjb25mdGVzdC4kYWNfZXh0CmZpCgogICAgICBybSAtZiBjb25mdGVzdC5vdXQKCmZpCnsg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfY2Nf
ZG91YmxlX2V4cGJpdDAiID4mNQokYXNfZWNobyAiJGdsX2N2X2NjX2RvdWJsZV9leHBiaXQwIiA+
JjY7IH0KICBjYXNlICIkZ2xfY3ZfY2NfZG91YmxlX2V4cGJpdDAiIGluCiAgICB3b3JkKmJpdCop
CiAgICAgIHdvcmQ9YGVjaG8gIiRnbF9jdl9jY19kb3VibGVfZXhwYml0MCIgfCBzZWQgLWUgJ3Mv
d29yZCAvLycgLWUgJ3MvIGJpdC4qLy8nYAogICAgICBiaXQ9YGVjaG8gIiRnbF9jdl9jY19kb3Vi
bGVfZXhwYml0MCIgfCBzZWQgLWUgJ3Mvd29yZC4qYml0IC8vJ2AKCmNhdCA+PmNvbmZkZWZzLmgg
PDxfQUNFT0YKI2RlZmluZSBEQkxfRVhQQklUMF9XT1JEICR3b3JkCl9BQ0VPRgoKCmNhdCA+PmNv
bmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBEQkxfRVhQQklUMF9CSVQgJGJpdApfQUNFT0YKCiAg
ICAgIDs7CiAgZXNhYwoKCgoKCgogIGZvciBhY19mdW5jIGluIHNucHJpbnRmIHN0cm5sZW4gd2Nz
bGVuIHdjc25sZW4gbWJydG93YyB3Y3J0b21iCmRvIDoKICBhc19hY192YXI9YCRhc19lY2hvICJh
Y19jdl9mdW5jXyRhY19mdW5jIiB8ICRhc190cl9zaGAKYWNfZm5fY19jaGVja19mdW5jICIkTElO
RU5PIiAiJGFjX2Z1bmMiICIkYXNfYWNfdmFyIgppZiBldmFsIHRlc3QgXCJ4XCQiJGFzX2FjX3Zh
ciJcIiA9IHgieWVzIjsgdGhlbiA6CiAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5l
IGAkYXNfZWNobyAiSEFWRV8kYWNfZnVuYyIgfCAkYXNfdHJfY3BwYCAxCl9BQ0VPRgoKZmkKZG9u
ZQoKICAgICAgYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAiX3NucHJpbnRmIiAiYWNfY3Zf
aGF2ZV9kZWNsX19zbnByaW50ZiIgIiNpbmNsdWRlIDxzdGRpby5oPgoiCmlmIHRlc3QgIngkYWNf
Y3ZfaGF2ZV9kZWNsX19zbnByaW50ZiIgPSB4eWVzOyB0aGVuIDoKICBhY19oYXZlX2RlY2w9MQpl
bHNlCiAgYWNfaGF2ZV9kZWNsPTAKZmkKCmNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmlu
ZSBIQVZFX0RFQ0xfX1NOUFJJTlRGICRhY19oYXZlX2RlY2wKX0FDRU9GCgoKCiAgY2FzZSAiJGds
X2N2X2Z1bmNfc25wcmludGZfcmV0dmFsX2M5OSIgaW4KICAgICp5ZXMpCgokYXNfZWNobyAiI2Rl
ZmluZSBIQVZFX1NOUFJJTlRGX1JFVFZBTF9DOTkgMSIgPj5jb25mZGVmcy5oCgogICAgICA7Owog
IGVzYWMKCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcg
Zm9yIHN0ZGJvb2wuaCB0aGF0IGNvbmZvcm1zIHRvIEM5OSIgPiY1CiRhc19lY2hvX24gImNoZWNr
aW5nIGZvciBzdGRib29sLmggdGhhdCBjb25mb3JtcyB0byBDOTkuLi4gIiA+JjY7IH0KaWYgJHth
Y19jdl9oZWFkZXJfc3RkYm9vbF9oKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2Fj
aGVkKSAiID4mNgplbHNlCiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFj
X2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCgogICAgICAgICAgICAgI2luY2x1ZGUgPHN0ZGJv
b2wuaD4KICAgICAgICAgICAgICNpZm5kZWYgYm9vbAogICAgICAgICAgICAgICJlcnJvcjogYm9v
bCBpcyBub3QgZGVmaW5lZCIKICAgICAgICAgICAgICNlbmRpZgogICAgICAgICAgICAgI2lmbmRl
ZiBmYWxzZQogICAgICAgICAgICAgICJlcnJvcjogZmFsc2UgaXMgbm90IGRlZmluZWQiCiAgICAg
ICAgICAgICAjZW5kaWYKICAgICAgICAgICAgICNpZiBmYWxzZQogICAgICAgICAgICAgICJlcnJv
cjogZmFsc2UgaXMgbm90IDAiCiAgICAgICAgICAgICAjZW5kaWYKICAgICAgICAgICAgICNpZm5k
ZWYgdHJ1ZQogICAgICAgICAgICAgICJlcnJvcjogdHJ1ZSBpcyBub3QgZGVmaW5lZCIKICAgICAg
ICAgICAgICNlbmRpZgogICAgICAgICAgICAgI2lmIHRydWUgIT0gMQogICAgICAgICAgICAgICJl
cnJvcjogdHJ1ZSBpcyBub3QgMSIKICAgICAgICAgICAgICNlbmRpZgogICAgICAgICAgICAgI2lm
bmRlZiBfX2Jvb2xfdHJ1ZV9mYWxzZV9hcmVfZGVmaW5lZAogICAgICAgICAgICAgICJlcnJvcjog
X19ib29sX3RydWVfZmFsc2VfYXJlX2RlZmluZWQgaXMgbm90IGRlZmluZWQiCiAgICAgICAgICAg
ICAjZW5kaWYKCiAgICAgICAgICAgICBzdHJ1Y3QgcyB7IF9Cb29sIHM6IDE7IF9Cb29sIHQ7IH0g
czsKCiAgICAgICAgICAgICBjaGFyIGFbdHJ1ZSA9PSAxID8gMSA6IC0xXTsKICAgICAgICAgICAg
IGNoYXIgYltmYWxzZSA9PSAwID8gMSA6IC0xXTsKICAgICAgICAgICAgIGNoYXIgY1tfX2Jvb2xf
dHJ1ZV9mYWxzZV9hcmVfZGVmaW5lZCA9PSAxID8gMSA6IC0xXTsKICAgICAgICAgICAgIGNoYXIg
ZFsoYm9vbCkgMC41ID09IHRydWUgPyAxIDogLTFdOwogICAgICAgICAgICAgLyogU2VlIGJvZHkg
b2YgbWFpbiBwcm9ncmFtIGZvciAnZScuICAqLwogICAgICAgICAgICAgY2hhciBmWyhfQm9vbCkg
MC4wID09IGZhbHNlID8gMSA6IC0xXTsKICAgICAgICAgICAgIGNoYXIgZ1t0cnVlXTsKICAgICAg
ICAgICAgIGNoYXIgaFtzaXplb2YgKF9Cb29sKV07CiAgICAgICAgICAgICBjaGFyIGlbc2l6ZW9m
IHMudF07CiAgICAgICAgICAgICBlbnVtIHsgaiA9IGZhbHNlLCBrID0gdHJ1ZSwgbCA9IGZhbHNl
ICogdHJ1ZSwgbSA9IHRydWUgKiAyNTYgfTsKICAgICAgICAgICAgIC8qIFRoZSBmb2xsb3dpbmcg
ZmFpbHMgZm9yCiAgICAgICAgICAgICAgICBIUCBhQysrL0FOU0kgQyBCMzkxMEIgQS4wNS41NSBb
RGVjIDA0IDIwMDNdLiAqLwogICAgICAgICAgICAgX0Jvb2wgblttXTsKICAgICAgICAgICAgIGNo
YXIgb1tzaXplb2YgbiA9PSBtICogc2l6ZW9mIG5bMF0gPyAxIDogLTFdOwogICAgICAgICAgICAg
Y2hhciBwWy0xIC0gKF9Cb29sKSAwIDwgMCAmJiAtMSAtIChib29sKSAwIDwgMCA/IDEgOiAtMV07
CiAgICAgICAgICAgICAvKiBDYXRjaCBhIGJ1ZyBpbiBhbiBIUC1VWCBDIGNvbXBpbGVyLiAgU2Vl
CiAgICAgICAgICAgICAgICBodHRwOi8vZ2NjLmdudS5vcmcvbWwvZ2NjLXBhdGNoZXMvMjAwMy0x
Mi9tc2cwMjMwMy5odG1sCiAgICAgICAgICAgICAgICBodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNo
aXZlL2h0bWwvYnVnLWNvcmV1dGlscy8yMDA1LTExL21zZzAwMTYxLmh0bWwKICAgICAgICAgICAg
ICAqLwogICAgICAgICAgICAgX0Jvb2wgcSA9IHRydWU7CiAgICAgICAgICAgICBfQm9vbCAqcHEg
PSAmcTsKCmludAptYWluICgpCnsKCiAgICAgICAgICAgICBib29sIGUgPSAmczsKICAgICAgICAg
ICAgICpwcSB8PSBxOwogICAgICAgICAgICAgKnBxIHw9ICEgcTsKICAgICAgICAgICAgIC8qIFJl
ZmVyIHRvIGV2ZXJ5IGRlY2xhcmVkIHZhbHVlLCB0byBhdm9pZCBjb21waWxlciBvcHRpbWl6YXRp
b25zLiAgKi8KICAgICAgICAgICAgIHJldHVybiAoIWEgKyAhYiArICFjICsgIWQgKyAhZSArICFm
ICsgIWcgKyAhaCArICFpICsgISFqICsgIWsgKyAhIWwKICAgICAgICAgICAgICAgICAgICAgKyAh
bSArICFuICsgIW8gKyAhcCArICFxICsgIXBxKTsKCiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgpp
ZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CiAgYWNfY3ZfaGVhZGVyX3N0
ZGJvb2xfaD15ZXMKZWxzZQogIGFjX2N2X2hlYWRlcl9zdGRib29sX2g9bm8KZmkKcm0gLWYgY29y
ZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CmZpCnsg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfaGVh
ZGVyX3N0ZGJvb2xfaCIgPiY1CiRhc19lY2hvICIkYWNfY3ZfaGVhZGVyX3N0ZGJvb2xfaCIgPiY2
OyB9CiAgIGFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgIl9Cb29sIiAiYWNfY3ZfdHlwZV9f
Qm9vbCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgppZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfX0Jvb2wi
ID0geHllczsgdGhlbiA6CgpjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgSEFWRV9f
Qk9PTCAxCl9BQ0VPRgoKCmZpCgoKCiAgICBSRVBMQUNFX05VTEw9MDsKICBIQVZFX1dDSEFSX1Q9
MTsKCgoKCgoKCgoKCgoKCgogIGlmIHRlc3QgJGFjX2N2X3R5cGVfbG9uZ19sb25nX2ludCA9IHll
czsgdGhlbgogICAgSEFWRV9MT05HX0xPTkdfSU5UPTEKICBlbHNlCiAgICBIQVZFX0xPTkdfTE9O
R19JTlQ9MAogIGZpCgoKICBpZiB0ZXN0ICRhY19jdl90eXBlX3Vuc2lnbmVkX2xvbmdfbG9uZ19p
bnQgPSB5ZXM7IHRoZW4KICAgIEhBVkVfVU5TSUdORURfTE9OR19MT05HX0lOVD0xCiAgZWxzZQog
ICAgSEFWRV9VTlNJR05FRF9MT05HX0xPTkdfSU5UPTAKICBmaQoKCgogIDoKCgoKCgogIGlmIHRl
c3QgJGFjX2N2X2hlYWRlcl93Y2hhcl9oID0geWVzOyB0aGVuCiAgICBIQVZFX1dDSEFSX0g9MQog
IGVsc2UKICAgIEhBVkVfV0NIQVJfSD0wCiAgZmkKCgogICAgICBpZiB0ZXN0ICRhY19jdl9oZWFk
ZXJfaW50dHlwZXNfaCA9IHllczsgdGhlbgogICAgSEFWRV9JTlRUWVBFU19IPTEKICBlbHNlCiAg
ICBIQVZFX0lOVFRZUEVTX0g9MAogIGZpCgoKICAgICAgaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N5
c190eXBlc19oID0geWVzOyB0aGVuCiAgICBIQVZFX1NZU19UWVBFU19IPTEKICBlbHNlCiAgICBI
QVZFX1NZU19UWVBFU19IPTAKICBmaQoKCgoKCgoKCiAgOgoKCgoKCgoKCiAgICAgaWYgdGVzdCAk
Z2xfY3ZfaGF2ZV9pbmNsdWRlX25leHQgPSB5ZXM7IHRoZW4KICAgICAgIGdsX2N2X25leHRfc3Rk
aW50X2g9Jzwnc3RkaW50LmgnPicKICAgICBlbHNlCiAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGFic29sdXRlIG5hbWUgb2YgPHN0ZGludC5o
PiIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIGFic29sdXRlIG5hbWUgb2YgPHN0ZGludC5oPi4u
LiAiID4mNjsgfQppZiAke2dsX2N2X25leHRfc3RkaW50X2grOn0gZmFsc2U7IHRoZW4gOgogICRh
c19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKCiAgICAgICAgICAgICBpZiB0ZXN0ICRhY19j
dl9oZWFkZXJfc3RkaW50X2ggPSB5ZXM7IHRoZW4KCgogICAgICAgICAgICAgICBjYXQgY29uZmRl
ZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8K
I2luY2x1ZGUgPHN0ZGludC5oPgoKX0FDRU9GCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIiRob3N0X29zIiBpbgogICAg
ICAgICAgICAgICAgIGFpeCopIGdsX2Fic25hbWVfY3BwPSIkYWNfY3BwIC1DIiA7OwogICAgICAg
ICAgICAgICAgICopICAgIGdsX2Fic25hbWVfY3BwPSIkYWNfY3BwIiA7OwogICAgICAgICAgICAg
ICBlc2FjCgogICAgICAgICAgICAgICBjYXNlICIkaG9zdF9vcyIgaW4KICAgICAgICAgICAgICAg
ICBtaW5ndyopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9kaXJzZXBfcmVnZXg9J1svXFxdJwogICAg
ICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAqKQogICAgICAgICAgICAgICAgICAg
Z2xfZGlyc2VwX3JlZ2V4PSdcLycKICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAg
IGVzYWMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfbWFr
ZV9saXRlcmFsX3JlZ2V4X3NlZD0ncyxbXSReXFwuKi9bXSxcXCYsZycKCiAgICAgICAgICAgICAg
IGdsX2hlYWRlcl9saXRlcmFsX3JlZ2V4PWBlY2hvICdzdGRpbnQuaCcgXAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZWQgLWUgIiRnbF9tYWtlX2xpdGVyYWxfcmVn
ZXhfc2VkImAKICAgICAgICAgICAgICAgZ2xfYWJzb2x1dGVfaGVhZGVyX3NlZD0iLyR7Z2xfZGly
c2VwX3JlZ2V4fSR7Z2xfaGVhZGVyX2xpdGVyYWxfcmVnZXh9LyInewogICAgICAgICAgICAgICAg
ICAgcy8uKiJcKC4qJyIke2dsX2RpcnNlcF9yZWdleH0ke2dsX2hlYWRlcl9saXRlcmFsX3JlZ2V4
fSInXCkiLiovXDEvCiAgICAgICAgICAgICAgICAgICBzfF4vW14vXXwvLyZ8CiAgICAgICAgICAg
ICAgICAgICBwCiAgICAgICAgICAgICAgICAgICBxCiAgICAgICAgICAgICAgICAgfScKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xf
Y3ZfbmV4dF9zdGRpbnRfaD0nIidgKGV2YWwgIiRnbF9hYnNuYW1lX2NwcCBjb25mdGVzdC4kYWNf
ZXh0IikgMj4mNSB8CiAgICAgICAgICAgICAgICAgICAgICBzZWQgLW4gIiRnbF9hYnNvbHV0ZV9o
ZWFkZXJfc2VkImAnIicKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgZ2xfY3ZfbmV4dF9z
dGRpbnRfaD0nPCdzdGRpbnQuaCc+JwogICAgICAgICAgICAgZmkKCgpmaQp7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2X25leHRfc3RkaW50X2gi
ID4mNQokYXNfZWNobyAiJGdsX2N2X25leHRfc3RkaW50X2giID4mNjsgfQogICAgIGZpCiAgICAg
TkVYVF9TVERJTlRfSD0kZ2xfY3ZfbmV4dF9zdGRpbnRfaAoKICAgICBpZiB0ZXN0ICRnbF9jdl9o
YXZlX2luY2x1ZGVfbmV4dCA9IHllcyB8fCB0ZXN0ICRnbF9jdl9oYXZlX2luY2x1ZGVfbmV4dCA9
IGJ1Z2d5OyB0aGVuCiAgICAgICAjIElOQ0xVREVfTkVYVF9BU19GSVJTVF9ESVJFQ1RJVkU9J2lu
Y2x1ZGVfbmV4dCcKICAgICAgIGdsX25leHRfYXNfZmlyc3RfZGlyZWN0aXZlPSc8J3N0ZGludC5o
Jz4nCiAgICAgZWxzZQogICAgICAgIyBJTkNMVURFX05FWFRfQVNfRklSU1RfRElSRUNUSVZFPSdp
bmNsdWRlJwogICAgICAgZ2xfbmV4dF9hc19maXJzdF9kaXJlY3RpdmU9JGdsX2N2X25leHRfc3Rk
aW50X2gKICAgICBmaQogICAgIE5FWFRfQVNfRklSU1RfRElSRUNUSVZFX1NURElOVF9IPSRnbF9u
ZXh0X2FzX2ZpcnN0X2RpcmVjdGl2ZQoKCgoKICBpZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3RkaW50
X2ggPSB5ZXM7IHRoZW4KICAgIEhBVkVfU1RESU5UX0g9MQogIGVsc2UKICAgIEhBVkVfU1RESU5U
X0g9MAogIGZpCgoKICAgIGlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRpbnRfaCA9IHllczsgdGhl
bgogICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3
aGV0aGVyIHN0ZGludC5oIGNvbmZvcm1zIHRvIEM5OSIgPiY1CiRhc19lY2hvX24gImNoZWNraW5n
IHdoZXRoZXIgc3RkaW50LmggY29uZm9ybXMgdG8gQzk5Li4uICIgPiY2OyB9CmlmICR7Z2xfY3Zf
aGVhZGVyX3dvcmtpbmdfc3RkaW50X2grOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihj
YWNoZWQpICIgPiY2CmVsc2UKICBnbF9jdl9oZWFkZXJfd29ya2luZ19zdGRpbnRfaD1ubwogICAg
ICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29u
ZmRlZnMuaC4gICovCgoKI2RlZmluZSBfR0xfSlVTVF9JTkNMVURFX1NZU1RFTV9TVERJTlRfSCAx
IC8qIHdvcmsgaWYgYnVpbGQgaXNuJ3QgY2xlYW4gKi8KI2luY2x1ZGUgPHN0ZGludC5oPgovKiBE
cmFnb25mbHkgZGVmaW5lcyBXQ0hBUl9NSU4sIFdDSEFSX01BWCBvbmx5IGluIDx3Y2hhci5oPi4g
ICovCiNpZiAhKGRlZmluZWQgV0NIQVJfTUlOICYmIGRlZmluZWQgV0NIQVJfTUFYKQojZXJyb3Ig
IldDSEFSX01JTiwgV0NIQVJfTUFYIG5vdCBkZWZpbmVkIGluIDxzdGRpbnQuaD4iCiNlbmRpZgoK
CiAgLyogQlNEL09TIDQuMC4xIGhhcyBhIGJ1ZzogPHN0ZGRlZi5oPiwgPHN0ZGlvLmg+IGFuZCA8
dGltZS5oPiBtdXN0IGJlCiAgICAgaW5jbHVkZWQgYmVmb3JlIDx3Y2hhci5oPi4gICovCiAgI2lu
Y2x1ZGUgPHN0ZGRlZi5oPgogICNpbmNsdWRlIDxzaWduYWwuaD4KICAjaWYgSEFWRV9XQ0hBUl9I
CiAgIyBpbmNsdWRlIDxzdGRpby5oPgogICMgaW5jbHVkZSA8dGltZS5oPgogICMgaW5jbHVkZSA8
d2NoYXIuaD4KICAjZW5kaWYKCgojaWZkZWYgSU5UOF9NQVgKaW50OF90IGExID0gSU5UOF9NQVg7
CmludDhfdCBhMW1pbiA9IElOVDhfTUlOOwojZW5kaWYKI2lmZGVmIElOVDE2X01BWAppbnQxNl90
IGEyID0gSU5UMTZfTUFYOwppbnQxNl90IGEybWluID0gSU5UMTZfTUlOOwojZW5kaWYKI2lmZGVm
IElOVDMyX01BWAppbnQzMl90IGEzID0gSU5UMzJfTUFYOwppbnQzMl90IGEzbWluID0gSU5UMzJf
TUlOOwojZW5kaWYKI2lmZGVmIElOVDY0X01BWAppbnQ2NF90IGE0ID0gSU5UNjRfTUFYOwppbnQ2
NF90IGE0bWluID0gSU5UNjRfTUlOOwojZW5kaWYKI2lmZGVmIFVJTlQ4X01BWAp1aW50OF90IGIx
ID0gVUlOVDhfTUFYOwojZWxzZQp0eXBlZGVmIGludCBiMVsodW5zaWduZWQgY2hhcikgLTEgIT0g
MjU1ID8gMSA6IC0xXTsKI2VuZGlmCiNpZmRlZiBVSU5UMTZfTUFYCnVpbnQxNl90IGIyID0gVUlO
VDE2X01BWDsKI2VuZGlmCiNpZmRlZiBVSU5UMzJfTUFYCnVpbnQzMl90IGIzID0gVUlOVDMyX01B
WDsKI2VuZGlmCiNpZmRlZiBVSU5UNjRfTUFYCnVpbnQ2NF90IGI0ID0gVUlOVDY0X01BWDsKI2Vu
ZGlmCmludF9sZWFzdDhfdCBjMSA9IElOVDhfQyAoMHg3Zik7CmludF9sZWFzdDhfdCBjMW1heCA9
IElOVF9MRUFTVDhfTUFYOwppbnRfbGVhc3Q4X3QgYzFtaW4gPSBJTlRfTEVBU1Q4X01JTjsKaW50
X2xlYXN0MTZfdCBjMiA9IElOVDE2X0MgKDB4N2ZmZik7CmludF9sZWFzdDE2X3QgYzJtYXggPSBJ
TlRfTEVBU1QxNl9NQVg7CmludF9sZWFzdDE2X3QgYzJtaW4gPSBJTlRfTEVBU1QxNl9NSU47Cmlu
dF9sZWFzdDMyX3QgYzMgPSBJTlQzMl9DICgweDdmZmZmZmZmKTsKaW50X2xlYXN0MzJfdCBjM21h
eCA9IElOVF9MRUFTVDMyX01BWDsKaW50X2xlYXN0MzJfdCBjM21pbiA9IElOVF9MRUFTVDMyX01J
TjsKaW50X2xlYXN0NjRfdCBjNCA9IElOVDY0X0MgKDB4N2ZmZmZmZmZmZmZmZmZmZik7CmludF9s
ZWFzdDY0X3QgYzRtYXggPSBJTlRfTEVBU1Q2NF9NQVg7CmludF9sZWFzdDY0X3QgYzRtaW4gPSBJ
TlRfTEVBU1Q2NF9NSU47CnVpbnRfbGVhc3Q4X3QgZDEgPSBVSU5UOF9DICgweGZmKTsKdWludF9s
ZWFzdDhfdCBkMW1heCA9IFVJTlRfTEVBU1Q4X01BWDsKdWludF9sZWFzdDE2X3QgZDIgPSBVSU5U
MTZfQyAoMHhmZmZmKTsKdWludF9sZWFzdDE2X3QgZDJtYXggPSBVSU5UX0xFQVNUMTZfTUFYOwp1
aW50X2xlYXN0MzJfdCBkMyA9IFVJTlQzMl9DICgweGZmZmZmZmZmKTsKdWludF9sZWFzdDMyX3Qg
ZDNtYXggPSBVSU5UX0xFQVNUMzJfTUFYOwp1aW50X2xlYXN0NjRfdCBkNCA9IFVJTlQ2NF9DICgw
eGZmZmZmZmZmZmZmZmZmZmYpOwp1aW50X2xlYXN0NjRfdCBkNG1heCA9IFVJTlRfTEVBU1Q2NF9N
QVg7CmludF9mYXN0OF90IGUxID0gSU5UX0ZBU1Q4X01BWDsKaW50X2Zhc3Q4X3QgZTFtaW4gPSBJ
TlRfRkFTVDhfTUlOOwppbnRfZmFzdDE2X3QgZTIgPSBJTlRfRkFTVDE2X01BWDsKaW50X2Zhc3Qx
Nl90IGUybWluID0gSU5UX0ZBU1QxNl9NSU47CmludF9mYXN0MzJfdCBlMyA9IElOVF9GQVNUMzJf
TUFYOwppbnRfZmFzdDMyX3QgZTNtaW4gPSBJTlRfRkFTVDMyX01JTjsKaW50X2Zhc3Q2NF90IGU0
ID0gSU5UX0ZBU1Q2NF9NQVg7CmludF9mYXN0NjRfdCBlNG1pbiA9IElOVF9GQVNUNjRfTUlOOwp1
aW50X2Zhc3Q4X3QgZjEgPSBVSU5UX0ZBU1Q4X01BWDsKdWludF9mYXN0MTZfdCBmMiA9IFVJTlRf
RkFTVDE2X01BWDsKdWludF9mYXN0MzJfdCBmMyA9IFVJTlRfRkFTVDMyX01BWDsKdWludF9mYXN0
NjRfdCBmNCA9IFVJTlRfRkFTVDY0X01BWDsKI2lmZGVmIElOVFBUUl9NQVgKaW50cHRyX3QgZyA9
IElOVFBUUl9NQVg7CmludHB0cl90IGdtaW4gPSBJTlRQVFJfTUlOOwojZW5kaWYKI2lmZGVmIFVJ
TlRQVFJfTUFYCnVpbnRwdHJfdCBoID0gVUlOVFBUUl9NQVg7CiNlbmRpZgppbnRtYXhfdCBpID0g
SU5UTUFYX01BWDsKdWludG1heF90IGogPSBVSU5UTUFYX01BWDsKCiNpbmNsdWRlIDxsaW1pdHMu
aD4gLyogZm9yIENIQVJfQklUICovCiNkZWZpbmUgVFlQRV9NSU5JTVVNKHQpIFwKICAoKHQpICgo
dCkgMCA8ICh0KSAtMSA/ICh0KSAwIDogfiBUWVBFX01BWElNVU0gKHQpKSkKI2RlZmluZSBUWVBF
X01BWElNVU0odCkgXAogICgodCkgKCh0KSAwIDwgKHQpIC0xIFwKICAgICAgICA/ICh0KSAtMSBc
CiAgICAgICAgOiAoKCgodCkgMSA8PCAoc2l6ZW9mICh0KSAqIENIQVJfQklUIC0gMikpIC0gMSkg
KiAyICsgMSkpKQpzdHJ1Y3QgcyB7CiAgaW50IGNoZWNrX1BUUkRJRkY6CiAgICAgIFBUUkRJRkZf
TUlOID09IFRZUEVfTUlOSU1VTSAocHRyZGlmZl90KQogICAgICAmJiBQVFJESUZGX01BWCA9PSBU
WVBFX01BWElNVU0gKHB0cmRpZmZfdCkKICAgICAgPyAxIDogLTE7CiAgLyogRGV0ZWN0IGJ1ZyBp
biBGcmVlQlNEIDYuMCAvIGlhNjQuICAqLwogIGludCBjaGVja19TSUdfQVRPTUlDOgogICAgICBT
SUdfQVRPTUlDX01JTiA9PSBUWVBFX01JTklNVU0gKHNpZ19hdG9taWNfdCkKICAgICAgJiYgU0lH
X0FUT01JQ19NQVggPT0gVFlQRV9NQVhJTVVNIChzaWdfYXRvbWljX3QpCiAgICAgID8gMSA6IC0x
OwogIGludCBjaGVja19TSVpFOiBTSVpFX01BWCA9PSBUWVBFX01BWElNVU0gKHNpemVfdCkgPyAx
IDogLTE7CiAgaW50IGNoZWNrX1dDSEFSOgogICAgICBXQ0hBUl9NSU4gPT0gVFlQRV9NSU5JTVVN
ICh3Y2hhcl90KQogICAgICAmJiBXQ0hBUl9NQVggPT0gVFlQRV9NQVhJTVVNICh3Y2hhcl90KQog
ICAgICA/IDEgOiAtMTsKICAvKiBEZXRlY3QgYnVnIGluIG1pbmd3LiAgKi8KICBpbnQgY2hlY2tf
V0lOVDoKICAgICAgV0lOVF9NSU4gPT0gVFlQRV9NSU5JTVVNICh3aW50X3QpCiAgICAgICYmIFdJ
TlRfTUFYID09IFRZUEVfTUFYSU1VTSAod2ludF90KQogICAgICA/IDEgOiAtMTsKCiAgLyogRGV0
ZWN0IGJ1Z3MgaW4gZ2xpYmMgMi40IGFuZCBTb2xhcmlzIDEwIHN0ZGludC5oLCBhbW9uZyBvdGhl
cnMuICAqLwogIGludCBjaGVja19VSU5UOF9DOgogICAgICAgICgtMSA8IFVJTlQ4X0MgKDApKSA9
PSAoLTEgPCAodWludF9sZWFzdDhfdCkgMCkgPyAxIDogLTE7CiAgaW50IGNoZWNrX1VJTlQxNl9D
OgogICAgICAgICgtMSA8IFVJTlQxNl9DICgwKSkgPT0gKC0xIDwgKHVpbnRfbGVhc3QxNl90KSAw
KSA/IDEgOiAtMTsKCiAgLyogRGV0ZWN0IGJ1Z3MgaW4gT3BlbkJTRCAzLjkgc3RkaW50LmguICAq
LwojaWZkZWYgVUlOVDhfTUFYCiAgaW50IGNoZWNrX3VpbnQ4OiAodWludDhfdCkgLTEgPT0gVUlO
VDhfTUFYID8gMSA6IC0xOwojZW5kaWYKI2lmZGVmIFVJTlQxNl9NQVgKICBpbnQgY2hlY2tfdWlu
dDE2OiAodWludDE2X3QpIC0xID09IFVJTlQxNl9NQVggPyAxIDogLTE7CiNlbmRpZgojaWZkZWYg
VUlOVDMyX01BWAogIGludCBjaGVja191aW50MzI6ICh1aW50MzJfdCkgLTEgPT0gVUlOVDMyX01B
WCA/IDEgOiAtMTsKI2VuZGlmCiNpZmRlZiBVSU5UNjRfTUFYCiAgaW50IGNoZWNrX3VpbnQ2NDog
KHVpbnQ2NF90KSAtMSA9PSBVSU5UNjRfTUFYID8gMSA6IC0xOwojZW5kaWYKICBpbnQgY2hlY2tf
dWludF9sZWFzdDg6ICh1aW50X2xlYXN0OF90KSAtMSA9PSBVSU5UX0xFQVNUOF9NQVggPyAxIDog
LTE7CiAgaW50IGNoZWNrX3VpbnRfbGVhc3QxNjogKHVpbnRfbGVhc3QxNl90KSAtMSA9PSBVSU5U
X0xFQVNUMTZfTUFYID8gMSA6IC0xOwogIGludCBjaGVja191aW50X2xlYXN0MzI6ICh1aW50X2xl
YXN0MzJfdCkgLTEgPT0gVUlOVF9MRUFTVDMyX01BWCA/IDEgOiAtMTsKICBpbnQgY2hlY2tfdWlu
dF9sZWFzdDY0OiAodWludF9sZWFzdDY0X3QpIC0xID09IFVJTlRfTEVBU1Q2NF9NQVggPyAxIDog
LTE7CiAgaW50IGNoZWNrX3VpbnRfZmFzdDg6ICh1aW50X2Zhc3Q4X3QpIC0xID09IFVJTlRfRkFT
VDhfTUFYID8gMSA6IC0xOwogIGludCBjaGVja191aW50X2Zhc3QxNjogKHVpbnRfZmFzdDE2X3Qp
IC0xID09IFVJTlRfRkFTVDE2X01BWCA/IDEgOiAtMTsKICBpbnQgY2hlY2tfdWludF9mYXN0MzI6
ICh1aW50X2Zhc3QzMl90KSAtMSA9PSBVSU5UX0ZBU1QzMl9NQVggPyAxIDogLTE7CiAgaW50IGNo
ZWNrX3VpbnRfZmFzdDY0OiAodWludF9mYXN0NjRfdCkgLTEgPT0gVUlOVF9GQVNUNjRfTUFYID8g
MSA6IC0xOwogIGludCBjaGVja191aW50cHRyOiAodWludHB0cl90KSAtMSA9PSBVSU5UUFRSX01B
WCA/IDEgOiAtMTsKICBpbnQgY2hlY2tfdWludG1heDogKHVpbnRtYXhfdCkgLTEgPT0gVUlOVE1B
WF9NQVggPyAxIDogLTE7CiAgaW50IGNoZWNrX3NpemU6IChzaXplX3QpIC0xID09IFNJWkVfTUFY
ID8gMSA6IC0xOwp9OwoKaW50Cm1haW4gKCkKewoKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlm
IGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxp
bmciID0geWVzOyB0aGVuIDoKICAgICAgICAgICAgICAgICBnbF9jdl9oZWFkZXJfd29ya2luZ19z
dGRpbnRfaD15ZXMKCmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4k
YWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCgojZGVmaW5lIF9HTF9KVVNUX0lOQ0xVREVf
U1lTVEVNX1NURElOVF9IIDEgLyogd29yayBpZiBidWlsZCBpc24ndCBjbGVhbiAqLwojaW5jbHVk
ZSA8c3RkaW50Lmg+CgoKICAvKiBCU0QvT1MgNC4wLjEgaGFzIGEgYnVnOiA8c3RkZGVmLmg+LCA8
c3RkaW8uaD4gYW5kIDx0aW1lLmg+IG11c3QgYmUKICAgICBpbmNsdWRlZCBiZWZvcmUgPHdjaGFy
Lmg+LiAgKi8KICAjaW5jbHVkZSA8c3RkZGVmLmg+CiAgI2luY2x1ZGUgPHNpZ25hbC5oPgogICNp
ZiBIQVZFX1dDSEFSX0gKICAjIGluY2x1ZGUgPHN0ZGlvLmg+CiAgIyBpbmNsdWRlIDx0aW1lLmg+
CiAgIyBpbmNsdWRlIDx3Y2hhci5oPgogICNlbmRpZgoKCiNpbmNsdWRlIDxzdGRpby5oPgojaW5j
bHVkZSA8c3RyaW5nLmg+CiNkZWZpbmUgTVZBTChtYWNybykgTVZBTDEobWFjcm8pCiNkZWZpbmUg
TVZBTDEoZXhwcmVzc2lvbikgI2V4cHJlc3Npb24Kc3RhdGljIGNvbnN0IGNoYXIgKm1hY3JvX3Zh
bHVlc1tdID0KICB7CiNpZmRlZiBJTlQ4X01BWAogICAgTVZBTCAoSU5UOF9NQVgpLAojZW5kaWYK
I2lmZGVmIElOVDE2X01BWAogICAgTVZBTCAoSU5UMTZfTUFYKSwKI2VuZGlmCiNpZmRlZiBJTlQz
Ml9NQVgKICAgIE1WQUwgKElOVDMyX01BWCksCiNlbmRpZgojaWZkZWYgSU5UNjRfTUFYCiAgICBN
VkFMIChJTlQ2NF9NQVgpLAojZW5kaWYKI2lmZGVmIFVJTlQ4X01BWAogICAgTVZBTCAoVUlOVDhf
TUFYKSwKI2VuZGlmCiNpZmRlZiBVSU5UMTZfTUFYCiAgICBNVkFMIChVSU5UMTZfTUFYKSwKI2Vu
ZGlmCiNpZmRlZiBVSU5UMzJfTUFYCiAgICBNVkFMIChVSU5UMzJfTUFYKSwKI2VuZGlmCiNpZmRl
ZiBVSU5UNjRfTUFYCiAgICBNVkFMIChVSU5UNjRfTUFYKSwKI2VuZGlmCiAgICBOVUxMCiAgfTsK
CmludAptYWluICgpCnsKCiAgY29uc3QgY2hhciAqKm12OwogIGZvciAobXYgPSBtYWNyb192YWx1
ZXM7ICptdiAhPSBOVUxMOyBtdisrKQogICAgewogICAgICBjb25zdCBjaGFyICp2YWx1ZSA9ICpt
djsKICAgICAgLyogVGVzdCB3aGV0aGVyIGl0IGxvb2tzIGxpa2UgYSBjYXN0IGV4cHJlc3Npb24u
ICAqLwogICAgICBpZiAoc3RybmNtcCAodmFsdWUsICIoKHVuc2lnbmVkIGludCkiLyopKi8sIDE1
KSA9PSAwCiAgICAgICAgICB8fCBzdHJuY21wICh2YWx1ZSwgIigodW5zaWduZWQgc2hvcnQpIi8q
KSovLCAxNykgPT0gMAogICAgICAgICAgfHwgc3RybmNtcCAodmFsdWUsICIoKHVuc2lnbmVkIGNo
YXIpIi8qKSovLCAxNikgPT0gMAogICAgICAgICAgfHwgc3RybmNtcCAodmFsdWUsICIoKGludCki
LyopKi8sIDYpID09IDAKICAgICAgICAgIHx8IHN0cm5jbXAgKHZhbHVlLCAiKChzaWduZWQgc2hv
cnQpIi8qKSovLCAxNSkgPT0gMAogICAgICAgICAgfHwgc3RybmNtcCAodmFsdWUsICIoKHNpZ25l
ZCBjaGFyKSIvKikqLywgMTQpID09IDApCiAgICAgICAgcmV0dXJuIG12IC0gbWFjcm9fdmFsdWVz
ICsgMTsKICAgIH0KICByZXR1cm4gMDsKCiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgppZiBhY19m
bl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKICBnbF9jdl9oZWFkZXJfd29ya2luZ19zdGRp
bnRfaD15ZXMKZmkKcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJi
Lm91dCBjb25mdGVzdCRhY19leGVleHQgXAogIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3Qu
YmVhbSBjb25mdGVzdC4kYWNfZXh0CmZpCgoKZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29u
ZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CgpmaQp7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2X2hlYWRlcl93b3JraW5nX3N0ZGlu
dF9oIiA+JjUKJGFzX2VjaG8gIiRnbF9jdl9oZWFkZXJfd29ya2luZ19zdGRpbnRfaCIgPiY2OyB9
CiAgZmkKICBpZiB0ZXN0ICIkZ2xfY3ZfaGVhZGVyX3dvcmtpbmdfc3RkaW50X2giID0geWVzOyB0
aGVuCiAgICBTVERJTlRfSD0KICBlbHNlCiAgICAgICAgICAgIGZvciBhY19oZWFkZXIgaW4gc3lz
L2ludHR5cGVzLmggc3lzL2JpdHlwZXMuaApkbyA6CiAgYXNfYWNfSGVhZGVyPWAkYXNfZWNobyAi
YWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3RyX3NoYAphY19mbl9jX2NoZWNrX2hlYWRl
cl9tb25ncmVsICIkTElORU5PIiAiJGFjX2hlYWRlciIgIiRhc19hY19IZWFkZXIiICIkYWNfaW5j
bHVkZXNfZGVmYXVsdCIKaWYgZXZhbCB0ZXN0IFwieFwkIiRhc19hY19IZWFkZXIiXCIgPSB4Inll
cyI7IHRoZW4gOgogIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBgJGFzX2VjaG8g
IkhBVkVfJGFjX2hlYWRlciIgfCAkYXNfdHJfY3BwYCAxCl9BQ0VPRgoKZmkKCmRvbmUKCiAgICBp
ZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3lzX2ludHR5cGVzX2ggPSB5ZXM7IHRoZW4KICAgICAgSEFW
RV9TWVNfSU5UVFlQRVNfSD0xCiAgICBlbHNlCiAgICAgIEhBVkVfU1lTX0lOVFRZUEVTX0g9MAog
ICAgZmkKCiAgICBpZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3lzX2JpdHlwZXNfaCA9IHllczsgdGhl
bgogICAgICBIQVZFX1NZU19CSVRZUEVTX0g9MQogICAgZWxzZQogICAgICBIQVZFX1NZU19CSVRZ
UEVTX0g9MAogICAgZmkKCgoKCiAgaWYgdGVzdCAkQVBQTEVfVU5JVkVSU0FMX0JVSUxEID0gMDsg
dGhlbgoKCiAgZm9yIGdsdHlwZSBpbiBwdHJkaWZmX3Qgc2l6ZV90IDsgZG8KICAgIHsgJGFzX2Vj
aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGJpdCBzaXplIG9m
ICRnbHR5cGUiID4mNQokYXNfZWNob19uICJjaGVja2luZyBmb3IgYml0IHNpemUgb2YgJGdsdHlw
ZS4uLiAiID4mNjsgfQppZiBldmFsIFwke2dsX2N2X2JpdHNpemVvZl8ke2dsdHlwZX0rOn0gZmFs
c2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKICBpZiBhY19mbl9j
X2NvbXB1dGVfaW50ICIkTElORU5PIiAic2l6ZW9mICgkZ2x0eXBlKSAqIENIQVJfQklUIiAicmVz
dWx0IiAgICAgICAgIgogIC8qIEJTRC9PUyA0LjAuMSBoYXMgYSBidWc6IDxzdGRkZWYuaD4sIDxz
dGRpby5oPiBhbmQgPHRpbWUuaD4gbXVzdCBiZQogICAgIGluY2x1ZGVkIGJlZm9yZSA8d2NoYXIu
aD4uICAqLwogICNpbmNsdWRlIDxzdGRkZWYuaD4KICAjaW5jbHVkZSA8c2lnbmFsLmg+CiAgI2lm
IEhBVkVfV0NIQVJfSAogICMgaW5jbHVkZSA8c3RkaW8uaD4KICAjIGluY2x1ZGUgPHRpbWUuaD4K
ICAjIGluY2x1ZGUgPHdjaGFyLmg+CiAgI2VuZGlmCgojaW5jbHVkZSA8bGltaXRzLmg+IjsgdGhl
biA6CgplbHNlCiAgcmVzdWx0PXVua25vd24KZmkKCiAgICAgICBldmFsIGdsX2N2X2JpdHNpemVv
Zl8ke2dsdHlwZX09XCRyZXN1bHQKCmZpCmV2YWwgYWNfcmVzPVwkZ2xfY3ZfYml0c2l6ZW9mXyR7
Z2x0eXBlfQoJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
cmVzdWx0OiAkYWNfcmVzIiA+JjUKJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQogICAgZXZhbCBy
ZXN1bHQ9XCRnbF9jdl9iaXRzaXplb2ZfJHtnbHR5cGV9CiAgICBpZiB0ZXN0ICRyZXN1bHQgPSB1
bmtub3duOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdD0wCiAgICBmaQogICAgR0xUWVBFPWBlY2hvICIkZ2x0eXBlIiB8IHRyICdhYmNk
ZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiAnICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl8nYAog
ICAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5lIEJJVFNJWkVPRl8ke0dMVFlQRX0g
JHJlc3VsdApfQUNFT0YKCiAgICBldmFsIEJJVFNJWkVPRl8ke0dMVFlQRX09XCRyZXN1bHQKICBk
b25lCgoKICBmaQoKCiAgZm9yIGdsdHlwZSBpbiBzaWdfYXRvbWljX3Qgd2NoYXJfdCB3aW50X3Qg
OyBkbwogICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu
ZyBmb3IgYml0IHNpemUgb2YgJGdsdHlwZSIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIGZvciBi
aXQgc2l6ZSBvZiAkZ2x0eXBlLi4uICIgPiY2OyB9CmlmIGV2YWwgXCR7Z2xfY3ZfYml0c2l6ZW9m
XyR7Z2x0eXBlfSs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYK
ZWxzZQogIGlmIGFjX2ZuX2NfY29tcHV0ZV9pbnQgIiRMSU5FTk8iICJzaXplb2YgKCRnbHR5cGUp
ICogQ0hBUl9CSVQiICJyZXN1bHQiICAgICAgICAiCiAgLyogQlNEL09TIDQuMC4xIGhhcyBhIGJ1
ZzogPHN0ZGRlZi5oPiwgPHN0ZGlvLmg+IGFuZCA8dGltZS5oPiBtdXN0IGJlCiAgICAgaW5jbHVk
ZWQgYmVmb3JlIDx3Y2hhci5oPi4gICovCiAgI2luY2x1ZGUgPHN0ZGRlZi5oPgogICNpbmNsdWRl
IDxzaWduYWwuaD4KICAjaWYgSEFWRV9XQ0hBUl9ICiAgIyBpbmNsdWRlIDxzdGRpby5oPgogICMg
aW5jbHVkZSA8dGltZS5oPgogICMgaW5jbHVkZSA8d2NoYXIuaD4KICAjZW5kaWYKCiNpbmNsdWRl
IDxsaW1pdHMuaD4iOyB0aGVuIDoKCmVsc2UKICByZXN1bHQ9dW5rbm93bgpmaQoKICAgICAgIGV2
YWwgZ2xfY3ZfYml0c2l6ZW9mXyR7Z2x0eXBlfT1cJHJlc3VsdAoKZmkKZXZhbCBhY19yZXM9XCRn
bF9jdl9iaXRzaXplb2ZfJHtnbHR5cGV9CgkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQokYXNfZWNobyAiJGFjX3JlcyIg
PiY2OyB9CiAgICBldmFsIHJlc3VsdD1cJGdsX2N2X2JpdHNpemVvZl8ke2dsdHlwZX0KICAgIGlm
IHRlc3QgJHJlc3VsdCA9IHVua25vd247IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PTAKICAgIGZpCiAgICBHTFRZUEU9YGVjaG8gIiRn
bHR5cGUiIHwgdHIgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6ICcgJ0FCQ0RFRkdISUpLTE1O
T1BRUlNUVVZXWFlaXydgCiAgICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgQklU
U0laRU9GXyR7R0xUWVBFfSAkcmVzdWx0Cl9BQ0VPRgoKICAgIGV2YWwgQklUU0laRU9GXyR7R0xU
WVBFfT1cJHJlc3VsdAogIGRvbmUKCgoKCiAgZm9yIGdsdHlwZSBpbiBzaWdfYXRvbWljX3Qgd2No
YXJfdCB3aW50X3QgOyBkbwogICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiBjaGVja2luZyB3aGV0aGVyICRnbHR5cGUgaXMgc2lnbmVkIiA+JjUKJGFzX2VjaG9fbiAi
Y2hlY2tpbmcgd2hldGhlciAkZ2x0eXBlIGlzIHNpZ25lZC4uLiAiID4mNjsgfQppZiBldmFsIFwk
e2dsX2N2X3R5cGVfJHtnbHR5cGV9X3NpZ25lZCs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9f
biAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0
ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwoKICAvKiBCU0QvT1MgNC4wLjEgaGFz
IGEgYnVnOiA8c3RkZGVmLmg+LCA8c3RkaW8uaD4gYW5kIDx0aW1lLmg+IG11c3QgYmUKICAgICBp
bmNsdWRlZCBiZWZvcmUgPHdjaGFyLmg+LiAgKi8KICAjaW5jbHVkZSA8c3RkZGVmLmg+CiAgI2lu
Y2x1ZGUgPHNpZ25hbC5oPgogICNpZiBIQVZFX1dDSEFSX0gKICAjIGluY2x1ZGUgPHN0ZGlvLmg+
CiAgIyBpbmNsdWRlIDx0aW1lLmg+CiAgIyBpbmNsdWRlIDx3Y2hhci5oPgogICNlbmRpZgoKICAg
ICAgICAgICAgaW50IHZlcmlmeVsyICogKCgkZ2x0eXBlKSAtMSA8ICgkZ2x0eXBlKSAwKSAtIDFd
OwppbnQKbWFpbiAoKQp7CgogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNfZm5fY190cnlf
Y29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgogIHJlc3VsdD15ZXMKZWxzZQogIHJlc3VsdD1ubwpm
aQpybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRh
Y19leHQKICAgICAgIGV2YWwgZ2xfY3ZfdHlwZV8ke2dsdHlwZX1fc2lnbmVkPVwkcmVzdWx0Cgpm
aQpldmFsIGFjX3Jlcz1cJGdsX2N2X3R5cGVfJHtnbHR5cGV9X3NpZ25lZAoJICAgICAgIHsgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUK
JGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQogICAgZXZhbCByZXN1bHQ9XCRnbF9jdl90eXBlXyR7
Z2x0eXBlfV9zaWduZWQKICAgIEdMVFlQRT1gZWNobyAkZ2x0eXBlIHwgdHIgJ2FiY2RlZmdoaWpr
bG1ub3BxcnN0dXZ3eHl6ICcgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaXydgCiAgICBpZiB0
ZXN0ICIkcmVzdWx0IiA9IHllczsgdGhlbgogICAgICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9G
CiNkZWZpbmUgSEFWRV9TSUdORURfJHtHTFRZUEV9IDEKX0FDRU9GCgogICAgICBldmFsIEhBVkVf
U0lHTkVEXyR7R0xUWVBFfT0xCiAgICBlbHNlCiAgICAgIGV2YWwgSEFWRV9TSUdORURfJHtHTFRZ
UEV9PTAKICAgIGZpCiAgZG9uZQoKCiAgZ2xfY3ZfdHlwZV9wdHJkaWZmX3Rfc2lnbmVkPXllcwog
IGdsX2N2X3R5cGVfc2l6ZV90X3NpZ25lZD1ubwogIGlmIHRlc3QgJEFQUExFX1VOSVZFUlNBTF9C
VUlMRCA9IDA7IHRoZW4KCgogIGZvciBnbHR5cGUgaW4gcHRyZGlmZl90IHNpemVfdCA7IGRvCiAg
ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAk
Z2x0eXBlIGludGVnZXIgbGl0ZXJhbCBzdWZmaXgiID4mNQokYXNfZWNob19uICJjaGVja2luZyBm
b3IgJGdsdHlwZSBpbnRlZ2VyIGxpdGVyYWwgc3VmZml4Li4uICIgPiY2OyB9CmlmIGV2YWwgXCR7
Z2xfY3ZfdHlwZV8ke2dsdHlwZX1fc3VmZml4Kzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19u
ICIoY2FjaGVkKSAiID4mNgplbHNlCiAgZXZhbCBnbF9jdl90eXBlXyR7Z2x0eXBlfV9zdWZmaXg9
bm8KICAgICAgIGV2YWwgcmVzdWx0PVwkZ2xfY3ZfdHlwZV8ke2dsdHlwZX1fc2lnbmVkCiAgICAg
ICBpZiB0ZXN0ICIkcmVzdWx0IiA9IHllczsgdGhlbgogICAgICAgICBnbHN1ZnU9CiAgICAgICBl
bHNlCiAgICAgICAgIGdsc3VmdT11CiAgICAgICBmaQogICAgICAgZm9yIGdsc3VmIGluICIkZ2xz
dWZ1IiAke2dsc3VmdX1sICR7Z2xzdWZ1fWxsICR7Z2xzdWZ1fWk2NDsgZG8KICAgICAgICAgY2Fz
ZSAkZ2xzdWYgaW4KICAgICAgICAgICAnJykgIGdsdHlwZTE9J2ludCc7OwogICAgICAgICAgIGwp
ICAgZ2x0eXBlMT0nbG9uZyBpbnQnOzsKICAgICAgICAgICBsbCkgIGdsdHlwZTE9J2xvbmcgbG9u
ZyBpbnQnOzsKICAgICAgICAgICBpNjQpIGdsdHlwZTE9J19faW50NjQnOzsKICAgICAgICAgICB1
KSAgIGdsdHlwZTE9J3Vuc2lnbmVkIGludCc7OwogICAgICAgICAgIHVsKSAgZ2x0eXBlMT0ndW5z
aWduZWQgbG9uZyBpbnQnOzsKICAgICAgICAgICB1bGwpIGdsdHlwZTE9J3Vuc2lnbmVkIGxvbmcg
bG9uZyBpbnQnOzsKICAgICAgICAgICB1aTY0KWdsdHlwZTE9J3Vuc2lnbmVkIF9faW50NjQnOzsK
ICAgICAgICAgZXNhYwogICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVz
dC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCiAgLyogQlNEL09TIDQuMC4xIGhhcyBh
IGJ1ZzogPHN0ZGRlZi5oPiwgPHN0ZGlvLmg+IGFuZCA8dGltZS5oPiBtdXN0IGJlCiAgICAgaW5j
bHVkZWQgYmVmb3JlIDx3Y2hhci5oPi4gICovCiAgI2luY2x1ZGUgPHN0ZGRlZi5oPgogICNpbmNs
dWRlIDxzaWduYWwuaD4KICAjaWYgSEFWRV9XQ0hBUl9ICiAgIyBpbmNsdWRlIDxzdGRpby5oPgog
ICMgaW5jbHVkZSA8dGltZS5oPgogICMgaW5jbHVkZSA8d2NoYXIuaD4KICAjZW5kaWYKCiAgICAg
ICAgICAgICAgZXh0ZXJuICRnbHR5cGUgZm9vOwogICAgICAgICAgICAgIGV4dGVybiAkZ2x0eXBl
MSBmb287CmludAptYWluICgpCnsKCiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgppZiBhY19mbl9j
X3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CiAgZXZhbCBnbF9jdl90eXBlXyR7Z2x0eXBl
fV9zdWZmaXg9XCRnbHN1ZgpmaQpybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNf
b2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKICAgICAgICAgZXZhbCByZXN1bHQ9XCRnbF9jdl90eXBl
XyR7Z2x0eXBlfV9zdWZmaXgKICAgICAgICAgdGVzdCAiJHJlc3VsdCIgIT0gbm8gJiYgYnJlYWsK
ICAgICAgIGRvbmUKZmkKZXZhbCBhY19yZXM9XCRnbF9jdl90eXBlXyR7Z2x0eXBlfV9zdWZmaXgK
CSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog
JGFjX3JlcyIgPiY1CiRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KICAgIEdMVFlQRT1gZWNobyAk
Z2x0eXBlIHwgdHIgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6ICcgJ0FCQ0RFRkdISUpLTE1O
T1BRUlNUVVZXWFlaXydgCiAgICBldmFsIHJlc3VsdD1cJGdsX2N2X3R5cGVfJHtnbHR5cGV9X3N1
ZmZpeAogICAgdGVzdCAiJHJlc3VsdCIgPSBubyAmJiByZXN1bHQ9CiAgICBldmFsICR7R0xUWVBF
fV9TVUZGSVg9XCRyZXN1bHQKICAgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSAk
e0dMVFlQRX1fU1VGRklYICRyZXN1bHQKX0FDRU9GCgogIGRvbmUKCgogIGZpCgoKICBmb3IgZ2x0
eXBlIGluIHNpZ19hdG9taWNfdCB3Y2hhcl90IHdpbnRfdCA7IGRvCiAgICB7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkZ2x0eXBlIGludGVnZXIg
bGl0ZXJhbCBzdWZmaXgiID4mNQokYXNfZWNob19uICJjaGVja2luZyBmb3IgJGdsdHlwZSBpbnRl
Z2VyIGxpdGVyYWwgc3VmZml4Li4uICIgPiY2OyB9CmlmIGV2YWwgXCR7Z2xfY3ZfdHlwZV8ke2ds
dHlwZX1fc3VmZml4Kzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4m
NgplbHNlCiAgZXZhbCBnbF9jdl90eXBlXyR7Z2x0eXBlfV9zdWZmaXg9bm8KICAgICAgIGV2YWwg
cmVzdWx0PVwkZ2xfY3ZfdHlwZV8ke2dsdHlwZX1fc2lnbmVkCiAgICAgICBpZiB0ZXN0ICIkcmVz
dWx0IiA9IHllczsgdGhlbgogICAgICAgICBnbHN1ZnU9CiAgICAgICBlbHNlCiAgICAgICAgIGds
c3VmdT11CiAgICAgICBmaQogICAgICAgZm9yIGdsc3VmIGluICIkZ2xzdWZ1IiAke2dsc3VmdX1s
ICR7Z2xzdWZ1fWxsICR7Z2xzdWZ1fWk2NDsgZG8KICAgICAgICAgY2FzZSAkZ2xzdWYgaW4KICAg
ICAgICAgICAnJykgIGdsdHlwZTE9J2ludCc7OwogICAgICAgICAgIGwpICAgZ2x0eXBlMT0nbG9u
ZyBpbnQnOzsKICAgICAgICAgICBsbCkgIGdsdHlwZTE9J2xvbmcgbG9uZyBpbnQnOzsKICAgICAg
ICAgICBpNjQpIGdsdHlwZTE9J19faW50NjQnOzsKICAgICAgICAgICB1KSAgIGdsdHlwZTE9J3Vu
c2lnbmVkIGludCc7OwogICAgICAgICAgIHVsKSAgZ2x0eXBlMT0ndW5zaWduZWQgbG9uZyBpbnQn
OzsKICAgICAgICAgICB1bGwpIGdsdHlwZTE9J3Vuc2lnbmVkIGxvbmcgbG9uZyBpbnQnOzsKICAg
ICAgICAgICB1aTY0KWdsdHlwZTE9J3Vuc2lnbmVkIF9faW50NjQnOzsKICAgICAgICAgZXNhYwog
ICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVu
ZCBjb25mZGVmcy5oLiAgKi8KCiAgLyogQlNEL09TIDQuMC4xIGhhcyBhIGJ1ZzogPHN0ZGRlZi5o
PiwgPHN0ZGlvLmg+IGFuZCA8dGltZS5oPiBtdXN0IGJlCiAgICAgaW5jbHVkZWQgYmVmb3JlIDx3
Y2hhci5oPi4gICovCiAgI2luY2x1ZGUgPHN0ZGRlZi5oPgogICNpbmNsdWRlIDxzaWduYWwuaD4K
ICAjaWYgSEFWRV9XQ0hBUl9ICiAgIyBpbmNsdWRlIDxzdGRpby5oPgogICMgaW5jbHVkZSA8dGlt
ZS5oPgogICMgaW5jbHVkZSA8d2NoYXIuaD4KICAjZW5kaWYKCiAgICAgICAgICAgICAgZXh0ZXJu
ICRnbHR5cGUgZm9vOwogICAgICAgICAgICAgIGV4dGVybiAkZ2x0eXBlMSBmb287CmludAptYWlu
ICgpCnsKCiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9jb21waWxlICIk
TElORU5PIjsgdGhlbiA6CiAgZXZhbCBnbF9jdl90eXBlXyR7Z2x0eXBlfV9zdWZmaXg9XCRnbHN1
ZgpmaQpybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0
LiRhY19leHQKICAgICAgICAgZXZhbCByZXN1bHQ9XCRnbF9jdl90eXBlXyR7Z2x0eXBlfV9zdWZm
aXgKICAgICAgICAgdGVzdCAiJHJlc3VsdCIgIT0gbm8gJiYgYnJlYWsKICAgICAgIGRvbmUKZmkK
ZXZhbCBhY19yZXM9XCRnbF9jdl90eXBlXyR7Z2x0eXBlfV9zdWZmaXgKCSAgICAgICB7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiRh
c19lY2hvICIkYWNfcmVzIiA+JjY7IH0KICAgIEdMVFlQRT1gZWNobyAkZ2x0eXBlIHwgdHIgJ2Fi
Y2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6ICcgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaXydg
CiAgICBldmFsIHJlc3VsdD1cJGdsX2N2X3R5cGVfJHtnbHR5cGV9X3N1ZmZpeAogICAgdGVzdCAi
JHJlc3VsdCIgPSBubyAmJiByZXN1bHQ9CiAgICBldmFsICR7R0xUWVBFfV9TVUZGSVg9XCRyZXN1
bHQKICAgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSAke0dMVFlQRX1fU1VGRklY
ICRyZXN1bHQKX0FDRU9GCgogIGRvbmUKCgoKICAgICAgICAgIGlmIHRlc3QgJEJJVFNJWkVPRl9X
SU5UX1QgLWx0IDMyOyB0aGVuCiAgICBCSVRTSVpFT0ZfV0lOVF9UPTMyCiAgZmkKCiAgICBTVERJ
TlRfSD1zdGRpbnQuaAogIGZpCgogICBpZiB0ZXN0IC1uICIkU1RESU5UX0giOyB0aGVuCiAgR0xf
R0VORVJBVEVfU1RESU5UX0hfVFJVRT0KICBHTF9HRU5FUkFURV9TVERJTlRfSF9GQUxTRT0nIycK
ZWxzZQogIEdMX0dFTkVSQVRFX1NURElOVF9IX1RSVUU9JyMnCiAgR0xfR0VORVJBVEVfU1RESU5U
X0hfRkFMU0U9CmZpCgoKCgoKCgoKCgoKCgogICAgIGlmIHRlc3QgJGdsX2N2X2hhdmVfaW5jbHVk
ZV9uZXh0ID0geWVzOyB0aGVuCiAgICAgICBnbF9jdl9uZXh0X3N0cmluZ19oPSc8J3N0cmluZy5o
Jz4nCiAgICAgZWxzZQogICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiBjaGVja2luZyBhYnNvbHV0ZSBuYW1lIG9mIDxzdHJpbmcuaD4iID4mNQokYXNfZWNob19u
ICJjaGVja2luZyBhYnNvbHV0ZSBuYW1lIG9mIDxzdHJpbmcuaD4uLi4gIiA+JjY7IH0KaWYgJHtn
bF9jdl9uZXh0X3N0cmluZ19oKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVk
KSAiID4mNgplbHNlCgogICAgICAgICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5j
b25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPHN0cmluZy5o
PgoKX0FDRU9GCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgIiRob3N0X29zIiBpbgogICAgICAgICAgICAgICAgIGFpeCop
IGdsX2Fic25hbWVfY3BwPSIkYWNfY3BwIC1DIiA7OwogICAgICAgICAgICAgICAgICopICAgIGds
X2Fic25hbWVfY3BwPSIkYWNfY3BwIiA7OwogICAgICAgICAgICAgICBlc2FjCgogICAgICAgICAg
ICAgICBjYXNlICIkaG9zdF9vcyIgaW4KICAgICAgICAgICAgICAgICBtaW5ndyopCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnbF9kaXJzZXBfcmVnZXg9J1svXFxdJwogICAgICAgICAgICAgICAgICAgOzsK
ICAgICAgICAgICAgICAgICAqKQogICAgICAgICAgICAgICAgICAgZ2xfZGlyc2VwX3JlZ2V4PSdc
LycKICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgIGVzYWMKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfbWFrZV9saXRlcmFsX3JlZ2V4X3Nl
ZD0ncyxbXSReXFwuKi9bXSxcXCYsZycKCiAgICAgICAgICAgICAgIGdsX2hlYWRlcl9saXRlcmFs
X3JlZ2V4PWBlY2hvICdzdHJpbmcuaCcgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCBzZWQgLWUgIiRnbF9tYWtlX2xpdGVyYWxfcmVnZXhfc2VkImAKICAgICAgICAg
ICAgICAgZ2xfYWJzb2x1dGVfaGVhZGVyX3NlZD0iLyR7Z2xfZGlyc2VwX3JlZ2V4fSR7Z2xfaGVh
ZGVyX2xpdGVyYWxfcmVnZXh9LyInewogICAgICAgICAgICAgICAgICAgcy8uKiJcKC4qJyIke2ds
X2RpcnNlcF9yZWdleH0ke2dsX2hlYWRlcl9saXRlcmFsX3JlZ2V4fSInXCkiLiovXDEvCiAgICAg
ICAgICAgICAgICAgICBzfF4vW14vXXwvLyZ8CiAgICAgICAgICAgICAgICAgICBwCiAgICAgICAg
ICAgICAgICAgICBxCiAgICAgICAgICAgICAgICAgfScKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfY3ZfbmV4dF9zdHJpbmdfaD0n
IidgKGV2YWwgIiRnbF9hYnNuYW1lX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CiAgICAg
ICAgICAgICAgICAgICAgICBzZWQgLW4gIiRnbF9hYnNvbHV0ZV9oZWFkZXJfc2VkImAnIicKCgpm
aQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2
X25leHRfc3RyaW5nX2giID4mNQokYXNfZWNobyAiJGdsX2N2X25leHRfc3RyaW5nX2giID4mNjsg
fQogICAgIGZpCiAgICAgTkVYVF9TVFJJTkdfSD0kZ2xfY3ZfbmV4dF9zdHJpbmdfaAoKICAgICBp
ZiB0ZXN0ICRnbF9jdl9oYXZlX2luY2x1ZGVfbmV4dCA9IHllcyB8fCB0ZXN0ICRnbF9jdl9oYXZl
X2luY2x1ZGVfbmV4dCA9IGJ1Z2d5OyB0aGVuCiAgICAgICAjIElOQ0xVREVfTkVYVF9BU19GSVJT
VF9ESVJFQ1RJVkU9J2luY2x1ZGVfbmV4dCcKICAgICAgIGdsX25leHRfYXNfZmlyc3RfZGlyZWN0
aXZlPSc8J3N0cmluZy5oJz4nCiAgICAgZWxzZQogICAgICAgIyBJTkNMVURFX05FWFRfQVNfRklS
U1RfRElSRUNUSVZFPSdpbmNsdWRlJwogICAgICAgZ2xfbmV4dF9hc19maXJzdF9kaXJlY3RpdmU9
JGdsX2N2X25leHRfc3RyaW5nX2gKICAgICBmaQogICAgIE5FWFRfQVNfRklSU1RfRElSRUNUSVZF
X1NUUklOR19IPSRnbF9uZXh0X2FzX2ZpcnN0X2RpcmVjdGl2ZQoKCgoKCgogICAgZm9yIGdsX2Z1
bmMgaW4gZmZzbCBmZnNsbCBtZW1tZW0gbWVtcGNweSBtZW1yY2hyIHJhd21lbWNociBzdHBjcHkg
c3RwbmNweSBzdHJjaHJudWwgICAgICBzdHJkdXAgc3RybmNhdCBzdHJuZHVwIHN0cm5sZW4gc3Ry
cGJyayBzdHJzZXAgc3RyY2FzZXN0ciBzdHJ0b2tfciAgICAgIHN0cmVycm9yX3Igc3Ryc2lnbmFs
IHN0cnZlcnNjbXA7IGRvCiAgICBhc19nbF9TeW1ib2w9YCRhc19lY2hvICJnbF9jdl9oYXZlX3Jh
d19kZWNsXyRnbF9mdW5jIiB8ICRhc190cl9zaGAKICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAkZ2xfZnVuYyBpcyBkZWNsYXJlZCB3
aXRob3V0IGEgbWFjcm8iID4mNQokYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyICRnbF9mdW5j
IGlzIGRlY2xhcmVkIHdpdGhvdXQgYSBtYWNyby4uLiAiID4mNjsgfQppZiBldmFsIFwkeyRhc19n
bF9TeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVs
c2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBj
b25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPHN0cmluZy5oPgoKaW50Cm1haW4gKCkKewojdW5kZWYg
JGdsX2Z1bmMKICAodm9pZCkgJGdsX2Z1bmM7CiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgppZiBh
Y19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CiAgZXZhbCAiJGFzX2dsX1N5bWJv
bD15ZXMiCmVsc2UKICBldmFsICIkYXNfZ2xfU3ltYm9sPW5vIgpmaQpybSAtZiBjb3JlIGNvbmZ0
ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKZmkKZXZhbCBhY19y
ZXM9XCQkYXNfZ2xfU3ltYm9sCgkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQokYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9
CiAgICBpZiBldmFsIHRlc3QgXCJ4XCQiJGFzX2dsX1N5bWJvbCJcIiA9IHgieWVzIjsgdGhlbiA6
CiAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5lIGAkYXNfZWNobyAiSEFWRV9SQVdf
REVDTF8kZ2xfZnVuYyIgfCAkYXNfdHJfY3BwYCAxCl9BQ0VPRgoKICAgICAgICAgICAgICAgICAg
ICAgZXZhbCBhY19jdl9oYXZlX2RlY2xfJGdsX2Z1bmM9eWVzCmZpCiAgICAgIGRvbmUKCgoKICAg
ICAgYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAic3Ryc2lnbmFsIiAiYWNfY3ZfaGF2ZV9k
ZWNsX3N0cnNpZ25hbCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgppZiB0ZXN0ICJ4JGFjX2N2X2hh
dmVfZGVjbF9zdHJzaWduYWwiID0geHllczsgdGhlbiA6CiAgYWNfaGF2ZV9kZWNsPTEKZWxzZQog
IGFjX2hhdmVfZGVjbD0wCmZpCgpjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgSEFW
RV9ERUNMX1NUUlNJR05BTCAkYWNfaGF2ZV9kZWNsCl9BQ0VPRgoKCmFjX2ZuX2NfY2hlY2tfZGVj
bCAiJExJTkVOTyIgInN5c19zaWdsaXN0IiAiYWNfY3ZfaGF2ZV9kZWNsX3N5c19zaWdsaXN0IiAi
I2luY2x1ZGUgPHNpZ25hbC5oPgovKiBOZXRCU0QgZGVjbGFyZXMgc3lzX3NpZ2xpc3QgaW4gdW5p
c3RkLmguICAqLwojaWZkZWYgSEFWRV9VTklTVERfSAojIGluY2x1ZGUgPHVuaXN0ZC5oPgojZW5k
aWYKCiIKaWYgdGVzdCAieCRhY19jdl9oYXZlX2RlY2xfc3lzX3NpZ2xpc3QiID0geHllczsgdGhl
biA6CiAgYWNfaGF2ZV9kZWNsPTEKZWxzZQogIGFjX2hhdmVfZGVjbD0wCmZpCgpjYXQgPj5jb25m
ZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgSEFWRV9ERUNMX1NZU19TSUdMSVNUICRhY19oYXZlX2Rl
Y2wKX0FDRU9GCgoKCgoKCgoKCgoKCgoKCgoKCgoKICAgICBpZiB0ZXN0ICRnbF9jdl9oYXZlX2lu
Y2x1ZGVfbmV4dCA9IHllczsgdGhlbgogICAgICAgZ2xfY3ZfbmV4dF9zeXNfdHlwZXNfaD0nPCdz
eXMvdHlwZXMuaCc+JwogICAgIGVsc2UKICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogY2hlY2tpbmcgYWJzb2x1dGUgbmFtZSBvZiA8c3lzL3R5cGVzLmg+IiA+
JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgYWJzb2x1dGUgbmFtZSBvZiA8c3lzL3R5cGVzLmg+Li4u
ICIgPiY2OyB9CmlmICR7Z2xfY3ZfbmV4dF9zeXNfdHlwZXNfaCs6fSBmYWxzZTsgdGhlbiA6CiAg
JGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQoKICAgICAgICAgICAgICAgY2F0IGNvbmZk
ZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICov
CiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KCl9BQ0VPRgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICIkaG9zdF9vcyIgaW4K
ICAgICAgICAgICAgICAgICBhaXgqKSBnbF9hYnNuYW1lX2NwcD0iJGFjX2NwcCAtQyIgOzsKICAg
ICAgICAgICAgICAgICAqKSAgICBnbF9hYnNuYW1lX2NwcD0iJGFjX2NwcCIgOzsKICAgICAgICAg
ICAgICAgZXNhYwoKICAgICAgICAgICAgICAgY2FzZSAiJGhvc3Rfb3MiIGluCiAgICAgICAgICAg
ICAgICAgbWluZ3cqKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfZGlyc2VwX3JlZ2V4PSdbL1xcXScK
ICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgKikKICAgICAgICAgICAgICAg
ICAgIGdsX2RpcnNlcF9yZWdleD0nXC8nCiAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAg
ICAgICBlc2FjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGds
X21ha2VfbGl0ZXJhbF9yZWdleF9zZWQ9J3MsW10kXlxcLiovW10sXFwmLGcnCgogICAgICAgICAg
ICAgICBnbF9oZWFkZXJfbGl0ZXJhbF9yZWdleD1gZWNobyAnc3lzL3R5cGVzLmgnIFwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VkIC1lICIkZ2xfbWFrZV9saXRl
cmFsX3JlZ2V4X3NlZCJgCiAgICAgICAgICAgICAgIGdsX2Fic29sdXRlX2hlYWRlcl9zZWQ9Ii8k
e2dsX2RpcnNlcF9yZWdleH0ke2dsX2hlYWRlcl9saXRlcmFsX3JlZ2V4fS8iJ3sKICAgICAgICAg
ICAgICAgICAgIHMvLioiXCguKiciJHtnbF9kaXJzZXBfcmVnZXh9JHtnbF9oZWFkZXJfbGl0ZXJh
bF9yZWdleH0iJ1wpIi4qL1wxLwogICAgICAgICAgICAgICAgICAgc3xeL1teL118Ly8mfAogICAg
ICAgICAgICAgICAgICAgcAogICAgICAgICAgICAgICAgICAgcQogICAgICAgICAgICAgICAgIH0n
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdsX2N2X25leHRfc3lzX3R5cGVzX2g9JyInYChldmFsICIkZ2xfYWJzbmFtZV9jcHAgY29u
ZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAogICAgICAgICAgICAgICAgICAgICAgc2VkIC1uICIkZ2xf
YWJzb2x1dGVfaGVhZGVyX3NlZCJgJyInCgoKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbF9jdl9uZXh0X3N5c190eXBlc19oIiA+JjUKJGFzX2Vj
aG8gIiRnbF9jdl9uZXh0X3N5c190eXBlc19oIiA+JjY7IH0KICAgICBmaQogICAgIE5FWFRfU1lT
X1RZUEVTX0g9JGdsX2N2X25leHRfc3lzX3R5cGVzX2gKCiAgICAgaWYgdGVzdCAkZ2xfY3ZfaGF2
ZV9pbmNsdWRlX25leHQgPSB5ZXMgfHwgdGVzdCAkZ2xfY3ZfaGF2ZV9pbmNsdWRlX25leHQgPSBi
dWdneTsgdGhlbgogICAgICAgIyBJTkNMVURFX05FWFRfQVNfRklSU1RfRElSRUNUSVZFPSdpbmNs
dWRlX25leHQnCiAgICAgICBnbF9uZXh0X2FzX2ZpcnN0X2RpcmVjdGl2ZT0nPCdzeXMvdHlwZXMu
aCc+JwogICAgIGVsc2UKICAgICAgICMgSU5DTFVERV9ORVhUX0FTX0ZJUlNUX0RJUkVDVElWRT0n
aW5jbHVkZScKICAgICAgIGdsX25leHRfYXNfZmlyc3RfZGlyZWN0aXZlPSRnbF9jdl9uZXh0X3N5
c190eXBlc19oCiAgICAgZmkKICAgICBORVhUX0FTX0ZJUlNUX0RJUkVDVElWRV9TWVNfVFlQRVNf
SD0kZ2xfbmV4dF9hc19maXJzdF9kaXJlY3RpdmUKCgoKCgoKCgoKCgoKICBHTlVMSUJfV0FJVFBJ
RD0wOwoKCgoKCgoKICBHTlVMSUJfTUtUSU1FPTA7CiAgR05VTElCX05BTk9TTEVFUD0wOwogIEdO
VUxJQl9TVFJQVElNRT0wOwogIEdOVUxJQl9USU1FR009MDsKICBHTlVMSUJfVElNRV9SPTA7CiAg
ICBIQVZFX0RFQ0xfTE9DQUxUSU1FX1I9MTsKICBIQVZFX05BTk9TTEVFUD0xOwogIEhBVkVfU1RS
UFRJTUU9MTsKICBIQVZFX1RJTUVHTT0xOwogICAgICAgIFJFUExBQ0VfTE9DQUxUSU1FX1I9R05V
TElCX1BPUlRDSEVDSzsKICBSRVBMQUNFX01LVElNRT1HTlVMSUJfUE9SVENIRUNLOwogIFJFUExB
Q0VfTkFOT1NMRUVQPUdOVUxJQl9QT1JUQ0hFQ0s7CiAgUkVQTEFDRV9USU1FR009R05VTElCX1BP
UlRDSEVDSzsKCgoKICA6CgoKCgoKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IGNoZWNraW5nIGZvciBzdHJ1Y3QgdGltZXNwZWMgaW4gPHRpbWUuaD4iID4mNQokYXNf
ZWNob19uICJjaGVja2luZyBmb3Igc3RydWN0IHRpbWVzcGVjIGluIDx0aW1lLmg+Li4uICIgPiY2
OyB9CmlmICR7Z2xfY3Zfc3lzX3N0cnVjdF90aW1lc3BlY19pbl90aW1lX2grOn0gZmFsc2U7IHRo
ZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKICBjYXQgY29uZmRlZnMuaCAt
IDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1
ZGUgPHRpbWUuaD4KCmludAptYWluICgpCnsKc3RhdGljIHN0cnVjdCB0aW1lc3BlYyB4OyB4LnR2
X3NlYyA9IHgudHZfbnNlYzsKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5
X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKICBnbF9jdl9zeXNfc3RydWN0X3RpbWVzcGVjX2lu
X3RpbWVfaD15ZXMKZWxzZQogIGdsX2N2X3N5c19zdHJ1Y3RfdGltZXNwZWNfaW5fdGltZV9oPW5v
CmZpCnJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3Qu
JGFjX2V4dApmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs
dDogJGdsX2N2X3N5c19zdHJ1Y3RfdGltZXNwZWNfaW5fdGltZV9oIiA+JjUKJGFzX2VjaG8gIiRn
bF9jdl9zeXNfc3RydWN0X3RpbWVzcGVjX2luX3RpbWVfaCIgPiY2OyB9CgogIFRJTUVfSF9ERUZJ
TkVTX1NUUlVDVF9USU1FU1BFQz0wCiAgU1lTX1RJTUVfSF9ERUZJTkVTX1NUUlVDVF9USU1FU1BF
Qz0wCiAgUFRIUkVBRF9IX0RFRklORVNfU1RSVUNUX1RJTUVTUEVDPTAKICBpZiB0ZXN0ICRnbF9j
dl9zeXNfc3RydWN0X3RpbWVzcGVjX2luX3RpbWVfaCA9IHllczsgdGhlbgogICAgVElNRV9IX0RF
RklORVNfU1RSVUNUX1RJTUVTUEVDPTEKICBlbHNlCiAgICB7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzdHJ1Y3QgdGltZXNwZWMgaW4gPHN5cy90
aW1lLmg+IiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN0cnVjdCB0aW1lc3BlYyBpbiA8
c3lzL3RpbWUuaD4uLi4gIiA+JjY7IH0KaWYgJHtnbF9jdl9zeXNfc3RydWN0X3RpbWVzcGVjX2lu
X3N5c190aW1lX2grOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2
CmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVu
ZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPHN5cy90aW1lLmg+CgppbnQKbWFpbiAoKQp7CnN0
YXRpYyBzdHJ1Y3QgdGltZXNwZWMgeDsgeC50dl9zZWMgPSB4LnR2X25zZWM7CiAgOwogIHJldHVy
biAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CiAg
Z2xfY3Zfc3lzX3N0cnVjdF90aW1lc3BlY19pbl9zeXNfdGltZV9oPXllcwplbHNlCiAgZ2xfY3Zf
c3lzX3N0cnVjdF90aW1lc3BlY19pbl9zeXNfdGltZV9oPW5vCmZpCnJtIC1mIGNvcmUgY29uZnRl
c3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dApmaQp7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2X3N5c19zdHJ1Y3Rf
dGltZXNwZWNfaW5fc3lzX3RpbWVfaCIgPiY1CiRhc19lY2hvICIkZ2xfY3Zfc3lzX3N0cnVjdF90
aW1lc3BlY19pbl9zeXNfdGltZV9oIiA+JjY7IH0KICAgIGlmIHRlc3QgJGdsX2N2X3N5c19zdHJ1
Y3RfdGltZXNwZWNfaW5fc3lzX3RpbWVfaCA9IHllczsgdGhlbgogICAgICBTWVNfVElNRV9IX0RF
RklORVNfU1RSVUNUX1RJTUVTUEVDPTEKICAgIGVsc2UKICAgICAgeyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3RydWN0IHRpbWVzcGVjIGluIDxw
dGhyZWFkLmg+IiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN0cnVjdCB0aW1lc3BlYyBp
biA8cHRocmVhZC5oPi4uLiAiID4mNjsgfQppZiAke2dsX2N2X3N5c19zdHJ1Y3RfdGltZXNwZWNf
aW5fcHRocmVhZF9oKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4m
NgplbHNlCiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBl
bmQgY29uZmRlZnMuaC4gICovCiNpbmNsdWRlIDxwdGhyZWFkLmg+CgppbnQKbWFpbiAoKQp7CnN0
YXRpYyBzdHJ1Y3QgdGltZXNwZWMgeDsgeC50dl9zZWMgPSB4LnR2X25zZWM7CiAgOwogIHJldHVy
biAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CiAg
Z2xfY3Zfc3lzX3N0cnVjdF90aW1lc3BlY19pbl9wdGhyZWFkX2g9eWVzCmVsc2UKICBnbF9jdl9z
eXNfc3RydWN0X3RpbWVzcGVjX2luX3B0aHJlYWRfaD1ubwpmaQpybSAtZiBjb3JlIGNvbmZ0ZXN0
LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKZmkKeyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbF9jdl9zeXNfc3RydWN0X3Rp
bWVzcGVjX2luX3B0aHJlYWRfaCIgPiY1CiRhc19lY2hvICIkZ2xfY3Zfc3lzX3N0cnVjdF90aW1l
c3BlY19pbl9wdGhyZWFkX2giID4mNjsgfQogICAgICBpZiB0ZXN0ICRnbF9jdl9zeXNfc3RydWN0
X3RpbWVzcGVjX2luX3B0aHJlYWRfaCA9IHllczsgdGhlbgogICAgICAgIFBUSFJFQURfSF9ERUZJ
TkVTX1NUUlVDVF9USU1FU1BFQz0xCiAgICAgIGZpCiAgICBmaQogIGZpCgoKCgoKCgoKCgoKCgoK
CiAgICAgaWYgdGVzdCAkZ2xfY3ZfaGF2ZV9pbmNsdWRlX25leHQgPSB5ZXM7IHRoZW4KICAgICAg
IGdsX2N2X25leHRfdGltZV9oPSc8J3RpbWUuaCc+JwogICAgIGVsc2UKICAgICAgIHsgJGFzX2Vj
aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgYWJzb2x1dGUgbmFtZSBv
ZiA8dGltZS5oPiIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIGFic29sdXRlIG5hbWUgb2YgPHRp
bWUuaD4uLi4gIiA+JjY7IH0KaWYgJHtnbF9jdl9uZXh0X3RpbWVfaCs6fSBmYWxzZTsgdGhlbiA6
CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQoKICAgICAgICAgICAgICAgY2F0IGNv
bmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4g
ICovCiNpbmNsdWRlIDx0aW1lLmg+CgpfQUNFT0YKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiJGhvc3Rfb3MiIGluCiAg
ICAgICAgICAgICAgICAgYWl4KikgZ2xfYWJzbmFtZV9jcHA9IiRhY19jcHAgLUMiIDs7CiAgICAg
ICAgICAgICAgICAgKikgICAgZ2xfYWJzbmFtZV9jcHA9IiRhY19jcHAiIDs7CiAgICAgICAgICAg
ICAgIGVzYWMKCiAgICAgICAgICAgICAgIGNhc2UgIiRob3N0X29zIiBpbgogICAgICAgICAgICAg
ICAgIG1pbmd3KikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2RpcnNlcF9yZWdleD0nWy9cXF0nCiAg
ICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICopCiAgICAgICAgICAgICAgICAg
ICBnbF9kaXJzZXBfcmVnZXg9J1wvJwogICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAg
ICAgZXNhYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9t
YWtlX2xpdGVyYWxfcmVnZXhfc2VkPSdzLFtdJF5cXC4qL1tdLFxcJixnJwoKICAgICAgICAgICAg
ICAgZ2xfaGVhZGVyX2xpdGVyYWxfcmVnZXg9YGVjaG8gJ3RpbWUuaCcgXAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZWQgLWUgIiRnbF9tYWtlX2xpdGVyYWxfcmVn
ZXhfc2VkImAKICAgICAgICAgICAgICAgZ2xfYWJzb2x1dGVfaGVhZGVyX3NlZD0iLyR7Z2xfZGly
c2VwX3JlZ2V4fSR7Z2xfaGVhZGVyX2xpdGVyYWxfcmVnZXh9LyInewogICAgICAgICAgICAgICAg
ICAgcy8uKiJcKC4qJyIke2dsX2RpcnNlcF9yZWdleH0ke2dsX2hlYWRlcl9saXRlcmFsX3JlZ2V4
fSInXCkiLiovXDEvCiAgICAgICAgICAgICAgICAgICBzfF4vW14vXXwvLyZ8CiAgICAgICAgICAg
ICAgICAgICBwCiAgICAgICAgICAgICAgICAgICBxCiAgICAgICAgICAgICAgICAgfScKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xf
Y3ZfbmV4dF90aW1lX2g9JyInYChldmFsICIkZ2xfYWJzbmFtZV9jcHAgY29uZnRlc3QuJGFjX2V4
dCIpIDI+JjUgfAogICAgICAgICAgICAgICAgICAgICAgc2VkIC1uICIkZ2xfYWJzb2x1dGVfaGVh
ZGVyX3NlZCJgJyInCgoKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiByZXN1bHQ6ICRnbF9jdl9uZXh0X3RpbWVfaCIgPiY1CiRhc19lY2hvICIkZ2xfY3ZfbmV4dF90
aW1lX2giID4mNjsgfQogICAgIGZpCiAgICAgTkVYVF9USU1FX0g9JGdsX2N2X25leHRfdGltZV9o
CgogICAgIGlmIHRlc3QgJGdsX2N2X2hhdmVfaW5jbHVkZV9uZXh0ID0geWVzIHx8IHRlc3QgJGds
X2N2X2hhdmVfaW5jbHVkZV9uZXh0ID0gYnVnZ3k7IHRoZW4KICAgICAgICMgSU5DTFVERV9ORVhU
X0FTX0ZJUlNUX0RJUkVDVElWRT0naW5jbHVkZV9uZXh0JwogICAgICAgZ2xfbmV4dF9hc19maXJz
dF9kaXJlY3RpdmU9JzwndGltZS5oJz4nCiAgICAgZWxzZQogICAgICAgIyBJTkNMVURFX05FWFRf
QVNfRklSU1RfRElSRUNUSVZFPSdpbmNsdWRlJwogICAgICAgZ2xfbmV4dF9hc19maXJzdF9kaXJl
Y3RpdmU9JGdsX2N2X25leHRfdGltZV9oCiAgICAgZmkKICAgICBORVhUX0FTX0ZJUlNUX0RJUkVD
VElWRV9USU1FX0g9JGdsX25leHRfYXNfZmlyc3RfZGlyZWN0aXZlCgoKCgoKCgoKCgoKCgoKCgoK
ICBHTlVMSUJfQlRPV0M9MDsKICBHTlVMSUJfV0NUT0I9MDsKICBHTlVMSUJfTUJTSU5JVD0wOwog
IEdOVUxJQl9NQlJUT1dDPTA7CiAgR05VTElCX01CUkxFTj0wOwogIEdOVUxJQl9NQlNSVE9XQ1M9
MDsKICBHTlVMSUJfTUJTTlJUT1dDUz0wOwogIEdOVUxJQl9XQ1JUT01CPTA7CiAgR05VTElCX1dD
U1JUT01CUz0wOwogIEdOVUxJQl9XQ1NOUlRPTUJTPTA7CiAgR05VTElCX1dDV0lEVEg9MDsKICBH
TlVMSUJfV01FTUNIUj0wOwogIEdOVUxJQl9XTUVNQ01QPTA7CiAgR05VTElCX1dNRU1DUFk9MDsK
ICBHTlVMSUJfV01FTU1PVkU9MDsKICBHTlVMSUJfV01FTVNFVD0wOwogIEdOVUxJQl9XQ1NMRU49
MDsKICBHTlVMSUJfV0NTTkxFTj0wOwogIEdOVUxJQl9XQ1NDUFk9MDsKICBHTlVMSUJfV0NQQ1BZ
PTA7CiAgR05VTElCX1dDU05DUFk9MDsKICBHTlVMSUJfV0NQTkNQWT0wOwogIEdOVUxJQl9XQ1ND
QVQ9MDsKICBHTlVMSUJfV0NTTkNBVD0wOwogIEdOVUxJQl9XQ1NDTVA9MDsKICBHTlVMSUJfV0NT
TkNNUD0wOwogIEdOVUxJQl9XQ1NDQVNFQ01QPTA7CiAgR05VTElCX1dDU05DQVNFQ01QPTA7CiAg
R05VTElCX1dDU0NPTEw9MDsKICBHTlVMSUJfV0NTWEZSTT0wOwogIEdOVUxJQl9XQ1NEVVA9MDsK
ICBHTlVMSUJfV0NTQ0hSPTA7CiAgR05VTElCX1dDU1JDSFI9MDsKICBHTlVMSUJfV0NTQ1NQTj0w
OwogIEdOVUxJQl9XQ1NTUE49MDsKICBHTlVMSUJfV0NTUEJSSz0wOwogIEdOVUxJQl9XQ1NTVFI9
MDsKICBHTlVMSUJfV0NTVE9LPTA7CiAgR05VTElCX1dDU1dJRFRIPTA7CiAgICBIQVZFX0JUT1dD
PTE7CiAgSEFWRV9NQlNJTklUPTE7CiAgSEFWRV9NQlJUT1dDPTE7CiAgSEFWRV9NQlJMRU49MTsK
ICBIQVZFX01CU1JUT1dDUz0xOwogIEhBVkVfTUJTTlJUT1dDUz0xOwogIEhBVkVfV0NSVE9NQj0x
OwogIEhBVkVfV0NTUlRPTUJTPTE7CiAgSEFWRV9XQ1NOUlRPTUJTPTE7CiAgSEFWRV9XTUVNQ0hS
PTE7CiAgSEFWRV9XTUVNQ01QPTE7CiAgSEFWRV9XTUVNQ1BZPTE7CiAgSEFWRV9XTUVNTU9WRT0x
OwogIEhBVkVfV01FTVNFVD0xOwogIEhBVkVfV0NTTEVOPTE7CiAgSEFWRV9XQ1NOTEVOPTE7CiAg
SEFWRV9XQ1NDUFk9MTsKICBIQVZFX1dDUENQWT0xOwogIEhBVkVfV0NTTkNQWT0xOwogIEhBVkVf
V0NQTkNQWT0xOwogIEhBVkVfV0NTQ0FUPTE7CiAgSEFWRV9XQ1NOQ0FUPTE7CiAgSEFWRV9XQ1ND
TVA9MTsKICBIQVZFX1dDU05DTVA9MTsKICBIQVZFX1dDU0NBU0VDTVA9MTsKICBIQVZFX1dDU05D
QVNFQ01QPTE7CiAgSEFWRV9XQ1NDT0xMPTE7CiAgSEFWRV9XQ1NYRlJNPTE7CiAgSEFWRV9XQ1NE
VVA9MTsKICBIQVZFX1dDU0NIUj0xOwogIEhBVkVfV0NTUkNIUj0xOwogIEhBVkVfV0NTQ1NQTj0x
OwogIEhBVkVfV0NTU1BOPTE7CiAgSEFWRV9XQ1NQQlJLPTE7CiAgSEFWRV9XQ1NTVFI9MTsKICBI
QVZFX1dDU1RPSz0xOwogIEhBVkVfV0NTV0lEVEg9MTsKICBIQVZFX0RFQ0xfV0NUT0I9MTsKICBI
QVZFX0RFQ0xfV0NXSURUSD0xOwogIFJFUExBQ0VfTUJTVEFURV9UPTA7CiAgUkVQTEFDRV9CVE9X
Qz0wOwogIFJFUExBQ0VfV0NUT0I9MDsKICBSRVBMQUNFX01CU0lOSVQ9MDsKICBSRVBMQUNFX01C
UlRPV0M9MDsKICBSRVBMQUNFX01CUkxFTj0wOwogIFJFUExBQ0VfTUJTUlRPV0NTPTA7CiAgUkVQ
TEFDRV9NQlNOUlRPV0NTPTA7CiAgUkVQTEFDRV9XQ1JUT01CPTA7CiAgUkVQTEFDRV9XQ1NSVE9N
QlM9MDsKICBSRVBMQUNFX1dDU05SVE9NQlM9MDsKICBSRVBMQUNFX1dDV0lEVEg9MDsKICBSRVBM
QUNFX1dDU1dJRFRIPTA7CgoKICAgICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIDx3Y2hhci5oPiB1c2VzICdpbmxpbmUnIGNv
cnJlY3RseSIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgPHdjaGFyLmg+IHVzZXMg
J2lubGluZScgY29ycmVjdGx5Li4uICIgPiY2OyB9CmlmICR7Z2xfY3ZfaGVhZGVyX3djaGFyX2hf
Y29ycmVjdF9pbmxpbmUrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIg
PiY2CmVsc2UKICBnbF9jdl9oZWFkZXJfd2NoYXJfaF9jb3JyZWN0X2lubGluZT15ZXMKICAgICBj
YXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVm
cy5oLiAgKi8KCiAgICAgICAjZGVmaW5lIHdjc3RvZCByZW5hbWVkX3djc3RvZAovKiBUcnU2NCB3
aXRoIERlc2t0b3AgVG9vbGtpdCBDIGhhcyBhIGJ1ZzogPHN0ZGlvLmg+IG11c3QgYmUgaW5jbHVk
ZWQgYmVmb3JlCiAgIDx3Y2hhci5oPi4KICAgQlNEL09TIDQuMC4xIGhhcyBhIGJ1ZzogPHN0ZGRl
Zi5oPiwgPHN0ZGlvLmg+IGFuZCA8dGltZS5oPiBtdXN0IGJlCiAgIGluY2x1ZGVkIGJlZm9yZSA8
d2NoYXIuaD4uICAqLwojaW5jbHVkZSA8c3RkZGVmLmg+CiNpbmNsdWRlIDxzdGRpby5oPgojaW5j
bHVkZSA8dGltZS5oPgojaW5jbHVkZSA8d2NoYXIuaD4KZXh0ZXJuIGludCB6ZXJvICh2b2lkKTsK
aW50IG1haW4gKCkgeyByZXR1cm4gemVybygpOyB9CgpfQUNFT0YKICAgICBpZiB7IHsgZXZhbCBl
Y2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsg
fSA+JjUKICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogIGFjX3N0YXR1cz0kPwogICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQogIHRl
c3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KICAgICAgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQg
Y29uZnRlc3QxLiRhY19vYmpleHQKICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNv
bmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwoKICAgICAgICAgI2RlZmluZSB3
Y3N0b2QgcmVuYW1lZF93Y3N0b2QKLyogVHJ1NjQgd2l0aCBEZXNrdG9wIFRvb2xraXQgQyBoYXMg
YSBidWc6IDxzdGRpby5oPiBtdXN0IGJlIGluY2x1ZGVkIGJlZm9yZQogICA8d2NoYXIuaD4uCiAg
IEJTRC9PUyA0LjAuMSBoYXMgYSBidWc6IDxzdGRkZWYuaD4sIDxzdGRpby5oPiBhbmQgPHRpbWUu
aD4gbXVzdCBiZQogICBpbmNsdWRlZCBiZWZvcmUgPHdjaGFyLmg+LiAgKi8KI2luY2x1ZGUgPHN0
ZGRlZi5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHRpbWUuaD4KI2luY2x1ZGUgPHdj
aGFyLmg+CmludCB6ZXJvICh2b2lkKSB7IHJldHVybiAwOyB9CgpfQUNFT0YKICAgICAgIGlmIHsg
eyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21w
aWxlXCIiOyB9ID4mNQogIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgYWNfc3RhdHVzPSQ/CiAg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIg
PiY1CiAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgogICAgICAgICBtdiBjb25mdGVzdC4k
YWNfb2JqZXh0IGNvbmZ0ZXN0Mi4kYWNfb2JqZXh0CiAgICAgICAgIGlmICRDQyAtbyBjb25mdGVz
dCRhY19leGVleHQgJENGTEFHUyAkTERGTEFHUyBjb25mdGVzdDEuJGFjX29iamV4dCBjb25mdGVz
dDIuJGFjX29iamV4dCAkTElCUyA+JjUgMj4mMTsgdGhlbgogICAgICAgICAgIDoKICAgICAgICAg
ZWxzZQogICAgICAgICAgIGdsX2N2X2hlYWRlcl93Y2hhcl9oX2NvcnJlY3RfaW5saW5lPW5vCiAg
ICAgICAgIGZpCiAgICAgICBmaQogICAgIGZpCiAgICAgcm0gLWYgY29uZnRlc3QxLiRhY19vYmpl
eHQgY29uZnRlc3QyLiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CgpmaQp7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2X2hlYWRlcl93Y2hh
cl9oX2NvcnJlY3RfaW5saW5lIiA+JjUKJGFzX2VjaG8gIiRnbF9jdl9oZWFkZXJfd2NoYXJfaF9j
b3JyZWN0X2lubGluZSIgPiY2OyB9CiAgaWYgdGVzdCAkZ2xfY3ZfaGVhZGVyX3djaGFyX2hfY29y
cmVjdF9pbmxpbmUgPSBubzsgdGhlbgogICAgYXNfZm5fZXJyb3IgJD8gIjx3Y2hhci5oPiBjYW5u
b3QgYmUgdXNlZCB3aXRoIHRoaXMgY29tcGlsZXIgKCRDQyAkQ0ZMQUdTICRDUFBGTEFHUykuClRo
aXMgaXMgYSBrbm93biBpbnRlcm9wZXJhYmlsaXR5IHByb2JsZW0gb2YgZ2xpYmMgPD0gMi41IHdp
dGggZ2NjID49IDQuMyBpbgpDOTkgbW9kZS4gWW91IGhhdmUgZm91ciBvcHRpb25zOgogIC0gQWRk
IHRoZSBmbGFnIC1mZ251ODktaW5saW5lIHRvIENDIGFuZCByZWNvbmZpZ3VyZSwgb3IKICAtIEZp
eCB5b3VyIGluY2x1ZGUgZmlsZXMsIHVzaW5nIHBhcnRzIG9mCiAgICA8aHR0cDovL3NvdXJjZXdh
cmUub3JnL2dpdC8/cD1nbGliYy5naXQ7YT1jb21taXRkaWZmO2g9YjAzN2EyOTNhNDg3MThhZjMw
ZDcwNmMyZTE4YzkyOWQwZTY5YTYyMT4sIG9yCiAgLSBVc2UgYSBnY2MgdmVyc2lvbiBvbGRlciB0
aGFuIDQuMywgb3IKICAtIERvbid0IHVzZSB0aGUgZmxhZ3MgLXN0ZD1jOTkgb3IgLXN0ZD1nbnU5
OS4KQ29uZmlndXJhdGlvbiBhYm9ydGVkLiIgIiRMSU5FTk8iIDUKICBmaQoKCiAgICAgIGFjX2Zu
X2NfY2hlY2tfZGVjbCAiJExJTkVOTyIgImZjaGRpciIgImFjX2N2X2hhdmVfZGVjbF9mY2hkaXIi
ICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKaWYgdGVzdCAieCRhY19jdl9oYXZlX2RlY2xfZmNoZGly
IiA9IHh5ZXM7IHRoZW4gOgogIGFjX2hhdmVfZGVjbD0xCmVsc2UKICBhY19oYXZlX2RlY2w9MApm
aQoKY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5lIEhBVkVfREVDTF9GQ0hESVIgJGFj
X2hhdmVfZGVjbApfQUNFT0YKCgoKCgoKCgoKCgoKCiAgR05VTElCX0FDT1NGPTA7CiAgR05VTElC
X0FDT1NMPTA7CiAgR05VTElCX0FTSU5GPTA7CiAgR05VTElCX0FTSU5MPTA7CiAgR05VTElCX0FU
QU5GPTA7CiAgR05VTElCX0FUQU5MPTA7CiAgR05VTElCX0FUQU4yRj0wOwogIEdOVUxJQl9DQlJU
PTA7CiAgR05VTElCX0NCUlRGPTA7CiAgR05VTElCX0NCUlRMPTA7CiAgR05VTElCX0NFSUw9MDsK
ICBHTlVMSUJfQ0VJTEY9MDsKICBHTlVMSUJfQ0VJTEw9MDsKICBHTlVMSUJfQ09QWVNJR049MDsK
ICBHTlVMSUJfQ09QWVNJR05GPTA7CiAgR05VTElCX0NPUFlTSUdOTD0wOwogIEdOVUxJQl9DT1NG
PTA7CiAgR05VTElCX0NPU0w9MDsKICBHTlVMSUJfQ09TSEY9MDsKICBHTlVMSUJfRVhQRj0wOwog
IEdOVUxJQl9FWFBMPTA7CiAgR05VTElCX0VYUDI9MDsKICBHTlVMSUJfRVhQMkY9MDsKICBHTlVM
SUJfRVhQMkw9MDsKICBHTlVMSUJfRVhQTTE9MDsKICBHTlVMSUJfRVhQTTFGPTA7CiAgR05VTElC
X0VYUE0xTD0wOwogIEdOVUxJQl9GQUJTRj0wOwogIEdOVUxJQl9GQUJTTD0wOwogIEdOVUxJQl9G
TE9PUj0wOwogIEdOVUxJQl9GTE9PUkY9MDsKICBHTlVMSUJfRkxPT1JMPTA7CiAgR05VTElCX0ZN
QT0wOwogIEdOVUxJQl9GTUFGPTA7CiAgR05VTElCX0ZNQUw9MDsKICBHTlVMSUJfRk1PRD0wOwog
IEdOVUxJQl9GTU9ERj0wOwogIEdOVUxJQl9GTU9ETD0wOwogIEdOVUxJQl9GUkVYUEY9MDsKICBH
TlVMSUJfRlJFWFA9MDsKICBHTlVMSUJfRlJFWFBMPTA7CiAgR05VTElCX0hZUE9UPTA7CiAgR05V
TElCX0hZUE9URj0wOwogIEdOVUxJQl9IWVBPVEw9MDsKICBHTlVMSUJfSUxPR0I9MDsKICBHTlVM
SUJfSUxPR0JGPTA7CiAgR05VTElCX0lMT0dCTD0wOwogIEdOVUxJQl9JU0ZJTklURT0wOwogIEdO
VUxJQl9JU0lORj0wOwogIEdOVUxJQl9JU05BTj0wOwogIEdOVUxJQl9JU05BTkY9MDsKICBHTlVM
SUJfSVNOQU5EPTA7CiAgR05VTElCX0lTTkFOTD0wOwogIEdOVUxJQl9MREVYUEY9MDsKICBHTlVM
SUJfTERFWFBMPTA7CiAgR05VTElCX0xPRz0wOwogIEdOVUxJQl9MT0dGPTA7CiAgR05VTElCX0xP
R0w9MDsKICBHTlVMSUJfTE9HMTA9MDsKICBHTlVMSUJfTE9HMTBGPTA7CiAgR05VTElCX0xPRzEw
TD0wOwogIEdOVUxJQl9MT0cxUD0wOwogIEdOVUxJQl9MT0cxUEY9MDsKICBHTlVMSUJfTE9HMVBM
PTA7CiAgR05VTElCX0xPRzI9MDsKICBHTlVMSUJfTE9HMkY9MDsKICBHTlVMSUJfTE9HMkw9MDsK
ICBHTlVMSUJfTE9HQj0wOwogIEdOVUxJQl9MT0dCRj0wOwogIEdOVUxJQl9MT0dCTD0wOwogIEdO
VUxJQl9NT0RGPTA7CiAgR05VTElCX01PREZGPTA7CiAgR05VTElCX01PREZMPTA7CiAgR05VTElC
X1BPV0Y9MDsKICBHTlVMSUJfUkVNQUlOREVSPTA7CiAgR05VTElCX1JFTUFJTkRFUkY9MDsKICBH
TlVMSUJfUkVNQUlOREVSTD0wOwogIEdOVUxJQl9SSU5UPTA7CiAgR05VTElCX1JJTlRGPTA7CiAg
R05VTElCX1JJTlRMPTA7CiAgR05VTElCX1JPVU5EPTA7CiAgR05VTElCX1JPVU5ERj0wOwogIEdO
VUxJQl9ST1VOREw9MDsKICBHTlVMSUJfU0lHTkJJVD0wOwogIEdOVUxJQl9TSU5GPTA7CiAgR05V
TElCX1NJTkw9MDsKICBHTlVMSUJfU0lOSEY9MDsKICBHTlVMSUJfU1FSVEY9MDsKICBHTlVMSUJf
U1FSVEw9MDsKICBHTlVMSUJfVEFORj0wOwogIEdOVUxJQl9UQU5MPTA7CiAgR05VTElCX1RBTkhG
PTA7CiAgR05VTElCX1RSVU5DPTA7CiAgR05VTElCX1RSVU5DRj0wOwogIEdOVUxJQl9UUlVOQ0w9
MDsKICAgIEhBVkVfQUNPU0Y9MTsKICBIQVZFX0FDT1NMPTE7CiAgSEFWRV9BU0lORj0xOwogIEhB
VkVfQVNJTkw9MTsKICBIQVZFX0FUQU5GPTE7CiAgSEFWRV9BVEFOTD0xOwogIEhBVkVfQVRBTjJG
PTE7CiAgSEFWRV9DQlJUPTE7CiAgSEFWRV9DQlJURj0xOwogIEhBVkVfQ0JSVEw9MTsKICBIQVZF
X0NPUFlTSUdOPTE7CiAgSEFWRV9DT1BZU0lHTkw9MTsKICBIQVZFX0NPU0Y9MTsKICBIQVZFX0NP
U0w9MTsKICBIQVZFX0NPU0hGPTE7CiAgSEFWRV9FWFBGPTE7CiAgSEFWRV9FWFBMPTE7CiAgSEFW
RV9FWFBNMT0xOwogIEhBVkVfRVhQTTFGPTE7CiAgSEFWRV9GQUJTRj0xOwogIEhBVkVfRkFCU0w9
MTsKICBIQVZFX0ZNQT0xOwogIEhBVkVfRk1BRj0xOwogIEhBVkVfRk1BTD0xOwogIEhBVkVfRk1P
REY9MTsKICBIQVZFX0ZNT0RMPTE7CiAgSEFWRV9GUkVYUEY9MTsKICBIQVZFX0hZUE9URj0xOwog
IEhBVkVfSFlQT1RMPTE7CiAgSEFWRV9JTE9HQj0xOwogIEhBVkVfSUxPR0JGPTE7CiAgSEFWRV9J
TE9HQkw9MTsKICBIQVZFX0lTTkFORj0xOwogIEhBVkVfSVNOQU5EPTE7CiAgSEFWRV9JU05BTkw9
MTsKICBIQVZFX0xERVhQRj0xOwogIEhBVkVfTE9HRj0xOwogIEhBVkVfTE9HTD0xOwogIEhBVkVf
TE9HMTBGPTE7CiAgSEFWRV9MT0cxMEw9MTsKICBIQVZFX0xPRzFQPTE7CiAgSEFWRV9MT0cxUEY9
MTsKICBIQVZFX0xPRzFQTD0xOwogIEhBVkVfTE9HQkY9MTsKICBIQVZFX0xPR0JMPTE7CiAgSEFW
RV9NT0RGRj0xOwogIEhBVkVfTU9ERkw9MTsKICBIQVZFX1BPV0Y9MTsKICBIQVZFX1JFTUFJTkRF
Uj0xOwogIEhBVkVfUkVNQUlOREVSRj0xOwogIEhBVkVfUklOVD0xOwogIEhBVkVfUklOVEw9MTsK
ICBIQVZFX1NJTkY9MTsKICBIQVZFX1NJTkw9MTsKICBIQVZFX1NJTkhGPTE7CiAgSEFWRV9TUVJU
Rj0xOwogIEhBVkVfU1FSVEw9MTsKICBIQVZFX1RBTkY9MTsKICBIQVZFX1RBTkw9MTsKICBIQVZF
X1RBTkhGPTE7CiAgSEFWRV9ERUNMX0FDT1NMPTE7CiAgSEFWRV9ERUNMX0FTSU5MPTE7CiAgSEFW
RV9ERUNMX0FUQU5MPTE7CiAgSEFWRV9ERUNMX0NCUlRGPTE7CiAgSEFWRV9ERUNMX0NCUlRMPTE7
CiAgSEFWRV9ERUNMX0NFSUxGPTE7CiAgSEFWRV9ERUNMX0NFSUxMPTE7CiAgSEFWRV9ERUNMX0NP
UFlTSUdORj0xOwogIEhBVkVfREVDTF9DT1NMPTE7CiAgSEFWRV9ERUNMX0VYUEw9MTsKICBIQVZF
X0RFQ0xfRVhQMj0xOwogIEhBVkVfREVDTF9FWFAyRj0xOwogIEhBVkVfREVDTF9FWFAyTD0xOwog
IEhBVkVfREVDTF9FWFBNMUw9MTsKICBIQVZFX0RFQ0xfRkxPT1JGPTE7CiAgSEFWRV9ERUNMX0ZM
T09STD0xOwogIEhBVkVfREVDTF9GUkVYUEw9MTsKICBIQVZFX0RFQ0xfTERFWFBMPTE7CiAgSEFW
RV9ERUNMX0xPR0w9MTsKICBIQVZFX0RFQ0xfTE9HMTBMPTE7CiAgSEFWRV9ERUNMX0xPRzI9MTsK
ICBIQVZFX0RFQ0xfTE9HMkY9MTsKICBIQVZFX0RFQ0xfTE9HMkw9MTsKICBIQVZFX0RFQ0xfTE9H
Qj0xOwogIEhBVkVfREVDTF9SRU1BSU5ERVI9MTsKICBIQVZFX0RFQ0xfUkVNQUlOREVSTD0xOwog
IEhBVkVfREVDTF9SSU5URj0xOwogIEhBVkVfREVDTF9ST1VORD0xOwogIEhBVkVfREVDTF9ST1VO
REY9MTsKICBIQVZFX0RFQ0xfUk9VTkRMPTE7CiAgSEFWRV9ERUNMX1NJTkw9MTsKICBIQVZFX0RF
Q0xfU1FSVEw9MTsKICBIQVZFX0RFQ0xfVEFOTD0xOwogIEhBVkVfREVDTF9UUlVOQz0xOwogIEhB
VkVfREVDTF9UUlVOQ0Y9MTsKICBIQVZFX0RFQ0xfVFJVTkNMPTE7CiAgUkVQTEFDRV9DQlJURj0w
OwogIFJFUExBQ0VfQ0JSVEw9MDsKICBSRVBMQUNFX0NFSUw9MDsKICBSRVBMQUNFX0NFSUxGPTA7
CiAgUkVQTEFDRV9DRUlMTD0wOwogIFJFUExBQ0VfRVhQTTE9MDsKICBSRVBMQUNFX0VYUE0xRj0w
OwogIFJFUExBQ0VfRVhQMj0wOwogIFJFUExBQ0VfRVhQMkw9MDsKICBSRVBMQUNFX0ZBQlNMPTA7
CiAgUkVQTEFDRV9GTE9PUj0wOwogIFJFUExBQ0VfRkxPT1JGPTA7CiAgUkVQTEFDRV9GTE9PUkw9
MDsKICBSRVBMQUNFX0ZNQT0wOwogIFJFUExBQ0VfRk1BRj0wOwogIFJFUExBQ0VfRk1BTD0wOwog
IFJFUExBQ0VfRk1PRD0wOwogIFJFUExBQ0VfRk1PREY9MDsKICBSRVBMQUNFX0ZNT0RMPTA7CiAg
UkVQTEFDRV9GUkVYUEY9MDsKICBSRVBMQUNFX0ZSRVhQPTA7CiAgUkVQTEFDRV9GUkVYUEw9MDsK
ICBSRVBMQUNFX0hVR0VfVkFMPTA7CiAgUkVQTEFDRV9IWVBPVD0wOwogIFJFUExBQ0VfSFlQT1RG
PTA7CiAgUkVQTEFDRV9IWVBPVEw9MDsKICBSRVBMQUNFX0lMT0dCPTA7CiAgUkVQTEFDRV9JTE9H
QkY9MDsKICBSRVBMQUNFX0lTRklOSVRFPTA7CiAgUkVQTEFDRV9JU0lORj0wOwogIFJFUExBQ0Vf
SVNOQU49MDsKICBSRVBMQUNFX0xERVhQTD0wOwogIFJFUExBQ0VfTE9HPTA7CiAgUkVQTEFDRV9M
T0dGPTA7CiAgUkVQTEFDRV9MT0dMPTA7CiAgUkVQTEFDRV9MT0cxMD0wOwogIFJFUExBQ0VfTE9H
MTBGPTA7CiAgUkVQTEFDRV9MT0cxMEw9MDsKICBSRVBMQUNFX0xPRzFQPTA7CiAgUkVQTEFDRV9M
T0cxUEY9MDsKICBSRVBMQUNFX0xPRzFQTD0wOwogIFJFUExBQ0VfTE9HMj0wOwogIFJFUExBQ0Vf
TE9HMkY9MDsKICBSRVBMQUNFX0xPRzJMPTA7CiAgUkVQTEFDRV9MT0dCPTA7CiAgUkVQTEFDRV9M
T0dCRj0wOwogIFJFUExBQ0VfTE9HQkw9MDsKICBSRVBMQUNFX01PREY9MDsKICBSRVBMQUNFX01P
REZGPTA7CiAgUkVQTEFDRV9NT0RGTD0wOwogIFJFUExBQ0VfTkFOPTA7CiAgUkVQTEFDRV9SRU1B
SU5ERVI9MDsKICBSRVBMQUNFX1JFTUFJTkRFUkY9MDsKICBSRVBMQUNFX1JFTUFJTkRFUkw9MDsK
ICBSRVBMQUNFX1JPVU5EPTA7CiAgUkVQTEFDRV9ST1VOREY9MDsKICBSRVBMQUNFX1JPVU5ETD0w
OwogIFJFUExBQ0VfU0lHTkJJVD0wOwogIFJFUExBQ0VfU0lHTkJJVF9VU0lOR19HQ0M9MDsKICBS
RVBMQUNFX1NRUlRMPTA7CiAgUkVQTEFDRV9UUlVOQz0wOwogIFJFUExBQ0VfVFJVTkNGPTA7CiAg
UkVQTEFDRV9UUlVOQ0w9MDsKCgogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogY2hlY2tpbmcgd2hldGhlciBmcmV4cCgpIGNhbiBiZSB1c2VkIHdpdGhvdXQgbGlua2lu
ZyB3aXRoIGxpYm0iID4mNQokYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIGZyZXhwKCkgY2Fu
IGJlIHVzZWQgd2l0aG91dCBsaW5raW5nIHdpdGggbGlibS4uLiAiID4mNjsgfQppZiAke2dsX2N2
X2Z1bmNfZnJleHBfbm9fbGlibSs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hl
ZCkgIiA+JjYKZWxzZQoKICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3Qu
JGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCiNpbmNsdWRlIDxtYXRoLmg+CiAgICAgICAg
ICAgICBkb3VibGUgeDsKaW50Cm1haW4gKCkKewppbnQgZTsgcmV0dXJuIGZyZXhwICh4LCAmZSkg
PiAwOwogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVO
TyI7IHRoZW4gOgogIGdsX2N2X2Z1bmNfZnJleHBfbm9fbGlibT15ZXMKZWxzZQogIGdsX2N2X2Z1
bmNfZnJleHBfbm9fbGlibT1ubwpmaQpybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4k
YWNfb2JqZXh0IFwKICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CgpmaQp7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2X2Z1
bmNfZnJleHBfbm9fbGlibSIgPiY1CiRhc19lY2hvICIkZ2xfY3ZfZnVuY19mcmV4cF9ub19saWJt
IiA+JjY7IH0KCgogICAgICBhY19mbl9jX2NoZWNrX2RlY2wgIiRMSU5FTk8iICJhbGFybSIgImFj
X2N2X2hhdmVfZGVjbF9hbGFybSIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgppZiB0ZXN0ICJ4JGFj
X2N2X2hhdmVfZGVjbF9hbGFybSIgPSB4eWVzOyB0aGVuIDoKICBhY19oYXZlX2RlY2w9MQplbHNl
CiAgYWNfaGF2ZV9kZWNsPTAKZmkKCmNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBI
QVZFX0RFQ0xfQUxBUk0gJGFjX2hhdmVfZGVjbApfQUNFT0YKCgoKICAgICAgeyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGxzdGF0IGNvcnJl
Y3RseSBoYW5kbGVzIHRyYWlsaW5nIHNsYXNoIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hl
dGhlciBsc3RhdCBjb3JyZWN0bHkgaGFuZGxlcyB0cmFpbGluZyBzbGFzaC4uLiAiID4mNjsgfQpp
ZiAke2dsX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluays6fSBmYWxz
ZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIHJtIC1mIGNvbmZ0
ZXN0LnN5bSBjb25mdGVzdC5maWxlCiAgICAgZWNobyA+Y29uZnRlc3QuZmlsZQogICAgIGlmIHRl
c3QgIiRhc19sbl9zIiA9ICJsbiAtcyIgJiYgbG4gLXMgY29uZnRlc3QuZmlsZSBjb25mdGVzdC5z
eW07IHRoZW4KICAgICAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoK
ICBjYXNlICIkaG9zdF9vcyIgaW4KICAgICAgICAgICAgICAgICAgICAjIEd1ZXNzIHllcyBvbiBn
bGliYyBzeXN0ZW1zLgogICAgICAgICAgICAqLWdudSopIGdsX2N2X2Z1bmNfbHN0YXRfZGVyZWZl
cmVuY2VzX3NsYXNoZWRfc3ltbGluaz0iZ3Vlc3NpbmcgeWVzIiA7OwogICAgICAgICAgICAgICAg
ICAgICMgSWYgd2UgZG9uJ3Qga25vdywgYXNzdW1lIHRoZSB3b3JzdC4KICAgICAgICAgICAgKikg
ICAgICBnbF9jdl9mdW5jX2xzdGF0X2RlcmVmZXJlbmNlc19zbGFzaGVkX3N5bWxpbms9Imd1ZXNz
aW5nIG5vIiA7OwogICAgICAgICAgZXNhYwoKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNF
T0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwokYWNfaW5jbHVkZXNf
ZGVmYXVsdAppbnQKbWFpbiAoKQp7CnN0cnVjdCBzdGF0IHNidWY7CiAgICAgICAgICAgICAgLyog
TGludXggd2lsbCBkZXJlZmVyZW5jZSB0aGUgc3ltbGluayBhbmQgZmFpbCwgYXMgcmVxdWlyZWQg
YnkKICAgICAgICAgICAgICAgICBQT1NJWC4gIFRoYXQgaXMgYmV0dGVyIGluIHRoZSBzZW5zZSB0
aGF0IGl0IG1lYW5zIHdlIHdpbGwgbm90CiAgICAgICAgICAgICAgICAgaGF2ZSB0byBjb21waWxl
IGFuZCB1c2UgdGhlIGxzdGF0IHdyYXBwZXIuICAqLwogICAgICAgICAgICAgIHJldHVybiBsc3Rh
dCAoImNvbmZ0ZXN0LnN5bS8iLCAmc2J1ZikgPT0gMDsKCiAgOwogIHJldHVybiAwOwp9Cl9BQ0VP
RgppZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKICBnbF9jdl9mdW5jX2xzdGF0
X2RlcmVmZXJlbmNlc19zbGFzaGVkX3N5bWxpbms9eWVzCmVsc2UKICBnbF9jdl9mdW5jX2xzdGF0
X2RlcmVmZXJlbmNlc19zbGFzaGVkX3N5bWxpbms9bm8KZmkKcm0gLWYgY29yZSAqLmNvcmUgY29y
ZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAogIGNvbmZ0
ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CmZpCgogICAgIGVs
c2UKICAgICAgICMgSWYgdGhlICdsbiAtcycgY29tbWFuZCBmYWlsZWQsIHRoZW4gd2UgcHJvYmFi
bHkgZG9uJ3QgZXZlbgogICAgICAgIyBoYXZlIGFuIGxzdGF0IGZ1bmN0aW9uLgogICAgICAgZ2xf
Y3ZfZnVuY19sc3RhdF9kZXJlZmVyZW5jZXNfc2xhc2hlZF9zeW1saW5rPSJndWVzc2luZyBubyIK
ICAgICBmaQogICAgIHJtIC1mIGNvbmZ0ZXN0LnN5bSBjb25mdGVzdC5maWxlCgpmaQp7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2X2Z1bmNfbHN0
YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluayIgPiY1CiRhc19lY2hvICIkZ2xfY3ZfZnVu
Y19sc3RhdF9kZXJlZmVyZW5jZXNfc2xhc2hlZF9zeW1saW5rIiA+JjY7IH0KICBjYXNlICIkZ2xf
Y3ZfZnVuY19sc3RhdF9kZXJlZmVyZW5jZXNfc2xhc2hlZF9zeW1saW5rIiBpbgogICAgKnllcykK
CmNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBMU1RBVF9GT0xMT1dTX1NMQVNIRURf
U1lNTElOSyAxCl9BQ0VPRgoKICAgICAgOzsKICBlc2FjCgoKCgoKCgoKCgoKCiAgeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGVyZSB0byBmaW5kIHRo
ZSBleHBvbmVudCBpbiBhICdmbG9hdCciID4mNQokYXNfZWNob19uICJjaGVja2luZyB3aGVyZSB0
byBmaW5kIHRoZSBleHBvbmVudCBpbiBhICdmbG9hdCcuLi4gIiA+JjY7IH0KaWYgJHtnbF9jdl9j
Y19mbG9hdF9leHBiaXQwKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAi
ID4mNgplbHNlCgogICAgICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6
CiAgZ2xfY3ZfY2NfZmxvYXRfZXhwYml0MD0id29yZCAwIGJpdCAyMyIKZWxzZQogIGNhdCBjb25m
ZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAq
LwoKI2luY2x1ZGUgPGZsb2F0Lmg+CiNpbmNsdWRlIDxzdGRkZWYuaD4KI2luY2x1ZGUgPHN0ZGlv
Lmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2RlZmluZSBOV09SRFMgXAogICgoc2l6ZW9mIChmbG9h
dCkgKyBzaXplb2YgKHVuc2lnbmVkIGludCkgLSAxKSAvIHNpemVvZiAodW5zaWduZWQgaW50KSkK
dHlwZWRlZiB1bmlvbiB7IGZsb2F0IHZhbHVlOyB1bnNpZ25lZCBpbnQgd29yZFtOV09SRFNdOyB9
IG1lbW9yeV9mbG9hdDsKc3RhdGljIHVuc2lnbmVkIGludCBvcmVkX3dvcmRzW05XT1JEU107CnN0
YXRpYyB1bnNpZ25lZCBpbnQgYW5kZWRfd29yZHNbTldPUkRTXTsKc3RhdGljIHZvaWQgYWRkX3Rv
X29yZWRfd29yZHMgKGZsb2F0IHgpCnsKICBtZW1vcnlfZmxvYXQgbTsKICBzaXplX3QgaTsKICAv
KiBDbGVhciBpdCBmaXJzdCwgaW4gY2FzZQogICAgIHNpemVvZiAoZmxvYXQpIDwgc2l6ZW9mICht
ZW1vcnlfZmxvYXQpLiAgKi8KICBtZW1zZXQgKCZtLCAwLCBzaXplb2YgKG1lbW9yeV9mbG9hdCkp
OwogIG0udmFsdWUgPSB4OwogIGZvciAoaSA9IDA7IGkgPCBOV09SRFM7IGkrKykKICAgIHsKICAg
ICAgb3JlZF93b3Jkc1tpXSB8PSBtLndvcmRbaV07CiAgICAgIGFuZGVkX3dvcmRzW2ldICY9IG0u
d29yZFtpXTsKICAgIH0KfQppbnQgbWFpbiAoKQp7CiAgc2l6ZV90IGo7CiAgRklMRSAqZnAgPSBm
b3BlbiAoImNvbmZ0ZXN0Lm91dCIsICJ3Iik7CiAgaWYgKGZwID09IE5VTEwpCiAgICByZXR1cm4g
MTsKICBmb3IgKGogPSAwOyBqIDwgTldPUkRTOyBqKyspCiAgICBhbmRlZF93b3Jkc1tqXSA9IH4g
KHVuc2lnbmVkIGludCkgMDsKICBhZGRfdG9fb3JlZF93b3JkcyAoMC4yNWYpOwogIGFkZF90b19v
cmVkX3dvcmRzICgwLjVmKTsKICBhZGRfdG9fb3JlZF93b3JkcyAoMS4wZik7CiAgYWRkX3RvX29y
ZWRfd29yZHMgKDIuMGYpOwogIGFkZF90b19vcmVkX3dvcmRzICg0LjBmKTsKICAvKiBSZW1vdmUg
Yml0cyB0aGF0IGFyZSBjb21tb24gKGUuZy4gaWYgcmVwcmVzZW50YXRpb24gb2YgdGhlIGZpcnN0
IG1hbnRpc3NhCiAgICAgYml0IGlzIGV4cGxpY2l0KS4gICovCiAgZm9yIChqID0gMDsgaiA8IE5X
T1JEUzsgaisrKQogICAgb3JlZF93b3Jkc1tqXSAmPSB+YW5kZWRfd29yZHNbal07CiAgLyogTm93
IGZpbmQgdGhlIG5vbnplcm8gd29yZC4gICovCiAgZm9yIChqID0gMDsgaiA8IE5XT1JEUzsgaisr
KQogICAgaWYgKG9yZWRfd29yZHNbal0gIT0gMCkKICAgICAgYnJlYWs7CiAgaWYgKGogPCBOV09S
RFMpCiAgICB7CiAgICAgIHNpemVfdCBpOwogICAgICBmb3IgKGkgPSBqICsgMTsgaSA8IE5XT1JE
UzsgaSsrKQogICAgICAgIGlmIChvcmVkX3dvcmRzW2ldICE9IDApCiAgICAgICAgICB7CiAgICAg
ICAgICAgIGZwcmludGYgKGZwLCAidW5rbm93biIpOwogICAgICAgICAgICByZXR1cm4gKGZjbG9z
ZSAoZnApICE9IDApOwogICAgICAgICAgfQogICAgICBmb3IgKGkgPSAwOyA7IGkrKykKICAgICAg
ICBpZiAoKG9yZWRfd29yZHNbal0gPj4gaSkgJiAxKQogICAgICAgICAgewogICAgICAgICAgICBm
cHJpbnRmIChmcCwgIndvcmQgJWQgYml0ICVkIiwgKGludCkgaiwgKGludCkgaSk7CiAgICAgICAg
ICAgIHJldHVybiAoZmNsb3NlIChmcCkgIT0gMCk7CiAgICAgICAgICB9CiAgICB9CiAgZnByaW50
ZiAoZnAsICJ1bmtub3duIik7CiAgcmV0dXJuIChmY2xvc2UgKGZwKSAhPSAwKTsKfQoKX0FDRU9G
CmlmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgogIGdsX2N2X2NjX2Zsb2F0X2V4
cGJpdDA9YGNhdCBjb25mdGVzdC5vdXRgCmVsc2UKICBnbF9jdl9jY19mbG9hdF9leHBiaXQwPSJ1
bmtub3duIgpmaQpybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIu
b3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCiAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5i
ZWFtIGNvbmZ0ZXN0LiRhY19leHQKZmkKCiAgICAgIHJtIC1mIGNvbmZ0ZXN0Lm91dAoKZmkKeyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbF9jdl9jY19m
bG9hdF9leHBiaXQwIiA+JjUKJGFzX2VjaG8gIiRnbF9jdl9jY19mbG9hdF9leHBiaXQwIiA+JjY7
IH0KICBjYXNlICIkZ2xfY3ZfY2NfZmxvYXRfZXhwYml0MCIgaW4KICAgIHdvcmQqYml0KikKICAg
ICAgd29yZD1gZWNobyAiJGdsX2N2X2NjX2Zsb2F0X2V4cGJpdDAiIHwgc2VkIC1lICdzL3dvcmQg
Ly8nIC1lICdzLyBiaXQuKi8vJ2AKICAgICAgYml0PWBlY2hvICIkZ2xfY3ZfY2NfZmxvYXRfZXhw
Yml0MCIgfCBzZWQgLWUgJ3Mvd29yZC4qYml0IC8vJ2AKCmNhdCA+PmNvbmZkZWZzLmggPDxfQUNF
T0YKI2RlZmluZSBGTFRfRVhQQklUMF9XT1JEICR3b3JkCl9BQ0VPRgoKCmNhdCA+PmNvbmZkZWZz
LmggPDxfQUNFT0YKI2RlZmluZSBGTFRfRVhQQklUMF9CSVQgJGJpdApfQUNFT0YKCiAgICAgIDs7
CiAgZXNhYwoKCiAgICAgIGlmIHRlc3QgIlgkcHJlZml4IiA9ICJYTk9ORSI7IHRoZW4KICAgIGFj
bF9maW5hbF9wcmVmaXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKICBlbHNlCiAgICBhY2xfZmluYWxf
cHJlZml4PSIkcHJlZml4IgogIGZpCiAgaWYgdGVzdCAiWCRleGVjX3ByZWZpeCIgPSAiWE5PTkUi
OyB0aGVuCiAgICBhY2xfZmluYWxfZXhlY19wcmVmaXg9JyR7cHJlZml4fScKICBlbHNlCiAgICBh
Y2xfZmluYWxfZXhlY19wcmVmaXg9IiRleGVjX3ByZWZpeCIKICBmaQogIGFjbF9zYXZlX3ByZWZp
eD0iJHByZWZpeCIKICBwcmVmaXg9IiRhY2xfZmluYWxfcHJlZml4IgogIGV2YWwgYWNsX2ZpbmFs
X2V4ZWNfcHJlZml4PVwiJGFjbF9maW5hbF9leGVjX3ByZWZpeFwiCiAgcHJlZml4PSIkYWNsX3Nh
dmVfcHJlZml4IgoKCgojIENoZWNrIHdoZXRoZXIgLS13aXRoLWdudS1sZCB3YXMgZ2l2ZW4uCmlm
IHRlc3QgIiR7d2l0aF9nbnVfbGQrc2V0fSIgPSBzZXQ7IHRoZW4gOgogIHdpdGh2YWw9JHdpdGhf
Z251X2xkOyB0ZXN0ICIkd2l0aHZhbCIgPSBubyB8fCB3aXRoX2dudV9sZD15ZXMKZWxzZQogIHdp
dGhfZ251X2xkPW5vCmZpCgojIFByZXBhcmUgUEFUSF9TRVBBUkFUT1IuCiMgVGhlIHVzZXIgaXMg
YWx3YXlzIHJpZ2h0LgppZiB0ZXN0ICIke1BBVEhfU0VQQVJBVE9SK3NldH0iICE9IHNldDsgdGhl
bgogICMgRGV0ZXJtaW5lIFBBVEhfU0VQQVJBVE9SIGJ5IHRyeWluZyB0byBmaW5kIC9iaW4vc2gg
aW4gYSBQQVRIIHdoaWNoCiAgIyBjb250YWlucyBvbmx5IC9iaW4uIE5vdGUgdGhhdCBrc2ggbG9v
a3MgYWxzbyBhdCB0aGUgRlBBVEggdmFyaWFibGUsCiAgIyBzbyB3ZSBoYXZlIHRvIHNldCB0aGF0
IGFzIHdlbGwgZm9yIHRoZSB0ZXN0LgogIFBBVEhfU0VQQVJBVE9SPToKICAoUEFUSD0nL2Jpbjsv
YmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSBcCiAgICAmJiB7IChQ
QVRIPScvYmluOi9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxIFwK
ICAgICAgICAgICB8fCBQQVRIX1NFUEFSQVRPUj0nOycKICAgICAgIH0KZmkKCmFjX3Byb2c9bGQK
aWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAjIENoZWNrIGlmIGdjYyAtcHJpbnQtcHJvZy1u
YW1lPWxkIGdpdmVzIGEgcGF0aC4KICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IGNoZWNraW5nIGZvciBsZCB1c2VkIGJ5ICRDQyIgPiY1CiRhc19lY2hvX24gImNoZWNr
aW5nIGZvciBsZCB1c2VkIGJ5ICRDQy4uLiAiID4mNjsgfQogIGNhc2UgJGhvc3QgaW4KICAqLSot
bWluZ3cqKQogICAgIyBnY2MgbGVhdmVzIGEgdHJhaWxpbmcgY2FycmlhZ2UgcmV0dXJuIHdoaWNo
IHVwc2V0cyBtaW5ndwogICAgYWNfcHJvZz1gKCRDQyAtcHJpbnQtcHJvZy1uYW1lPWxkKSAyPiY1
IHwgdHIgLWQgJ1wwMTUnYCA7OwogICopCiAgICBhY19wcm9nPWAoJENDIC1wcmludC1wcm9nLW5h
bWU9bGQpIDI+JjVgIDs7CiAgZXNhYwogIGNhc2UgJGFjX3Byb2cgaW4KICAgICMgQWNjZXB0IGFi
c29sdXRlIHBhdGhzLgogICAgW1xcL10qIHwgPzpbXFwvXSopCiAgICAgIHJlX2RpcmVsdD0nL1te
L11bXi9dKi9cLlwuLycKICAgICAgIyBDYW5vbmljYWxpemUgdGhlIHBhdGhuYW1lIG9mIGxkCiAg
ICAgIGFjX3Byb2c9YGVjaG8gIiRhY19wcm9nInwgc2VkICdzJVxcXFwlLyVnJ2AKICAgICAgd2hp
bGUgZWNobyAiJGFjX3Byb2ciIHwgZ3JlcCAiJHJlX2RpcmVsdCIgPiAvZGV2L251bGwgMj4mMTsg
ZG8KICAgICAgICBhY19wcm9nPWBlY2hvICRhY19wcm9nfCBzZWQgInMlJHJlX2RpcmVsdCUvJSJg
CiAgICAgIGRvbmUKICAgICAgdGVzdCAteiAiJExEIiAmJiBMRD0iJGFjX3Byb2ciCiAgICAgIDs7
CiAgIiIpCiAgICAjIElmIGl0IGZhaWxzLCB0aGVuIHByZXRlbmQgd2UgYXJlbid0IHVzaW5nIEdD
Qy4KICAgIGFjX3Byb2c9bGQKICAgIDs7CiAgKikKICAgICMgSWYgaXQgaXMgcmVsYXRpdmUsIHRo
ZW4gc2VhcmNoIGZvciB0aGUgZmlyc3QgbGQgaW4gUEFUSC4KICAgIHdpdGhfZ251X2xkPXVua25v
d24KICAgIDs7CiAgZXNhYwplbGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KICB7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBHTlUg
bGQiID4mNQokYXNfZWNob19uICJjaGVja2luZyBmb3IgR05VIGxkLi4uICIgPiY2OyB9CmVsc2UK
ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBu
b24tR05VIGxkIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIG5vbi1HTlUgbGQuLi4gIiA+
JjY7IH0KZmkKaWYgJHthY2xfY3ZfcGF0aF9MRCs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9f
biAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIGlmIHRlc3QgLXogIiRMRCI7IHRoZW4KICBhY2xfc2F2
ZV9pZnM9IiRJRlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCiAgZm9yIGFjX2RpciBpbiAkUEFUSDsg
ZG8KICAgIElGUz0iJGFjbF9zYXZlX2lmcyIKICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rp
cj0uCiAgICBpZiB0ZXN0IC1mICIkYWNfZGlyLyRhY19wcm9nIiB8fCB0ZXN0IC1mICIkYWNfZGly
LyRhY19wcm9nJGFjX2V4ZWV4dCI7IHRoZW4KICAgICAgYWNsX2N2X3BhdGhfTEQ9IiRhY19kaXIv
JGFjX3Byb2ciCiAgICAgICMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBwcm9ncmFtIGlzIEdOVSBsZC4g
IEknZCByYXRoZXIgdXNlIC0tdmVyc2lvbiwKICAgICAgIyBidXQgYXBwYXJlbnRseSBzb21lIHZh
cmlhbnRzIG9mIEdOVSBsZCBvbmx5IGFjY2VwdCAtdi4KICAgICAgIyBCcmVhayBvbmx5IGlmIGl0
IHdhcyB0aGUgR05VL25vbi1HTlUgbGQgdGhhdCB3ZSBwcmVmZXIuCiAgICAgIGNhc2UgYCIkYWNs
X2N2X3BhdGhfTEQiIC12IDI+JjEgPC9kZXYvbnVsbGAgaW4KICAgICAgKkdOVSogfCAqJ3dpdGgg
QkZEJyopCiAgICAgICAgdGVzdCAiJHdpdGhfZ251X2xkIiAhPSBubyAmJiBicmVhawogICAgICAg
IDs7CiAgICAgICopCiAgICAgICAgdGVzdCAiJHdpdGhfZ251X2xkIiAhPSB5ZXMgJiYgYnJlYWsK
ICAgICAgICA7OwogICAgICBlc2FjCiAgICBmaQogIGRvbmUKICBJRlM9IiRhY2xfc2F2ZV9pZnMi
CmVsc2UKICBhY2xfY3ZfcGF0aF9MRD0iJExEIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUg
dGVzdCB3aXRoIGEgcGF0aC4KZmkKZmkKCkxEPSIkYWNsX2N2X3BhdGhfTEQiCmlmIHRlc3QgLW4g
IiRMRCI7IHRoZW4KICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl
c3VsdDogJExEIiA+JjUKJGFzX2VjaG8gIiRMRCIgPiY2OyB9CmVsc2UKICB7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQokYXNfZWNobyAibm8i
ID4mNjsgfQpmaQp0ZXN0IC16ICIkTEQiICYmIGFzX2ZuX2Vycm9yICQ/ICJubyBhY2NlcHRhYmxl
IGxkIGZvdW5kIGluIFwkUEFUSCIgIiRMSU5FTk8iIDUKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiB0aGUgbGlua2VyICgkTEQpIGlzIEdOVSBsZCIg
PiY1CiRhc19lY2hvX24gImNoZWNraW5nIGlmIHRoZSBsaW5rZXIgKCRMRCkgaXMgR05VIGxkLi4u
ICIgPiY2OyB9CmlmICR7YWNsX2N2X3Byb2dfZ251X2xkKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNf
ZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCiAgIyBJJ2QgcmF0aGVyIHVzZSAtLXZlcnNpb24g
aGVyZSwgYnV0IGFwcGFyZW50bHkgc29tZSBHTlUgbGRzIG9ubHkgYWNjZXB0IC12LgpjYXNlIGAk
TEQgLXYgMj4mMSA8L2Rldi9udWxsYCBpbgoqR05VKiB8ICond2l0aCBCRkQnKikKICBhY2xfY3Zf
cHJvZ19nbnVfbGQ9eWVzCiAgOzsKKikKICBhY2xfY3ZfcHJvZ19nbnVfbGQ9bm8KICA7Owplc2Fj
CmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNs
X2N2X3Byb2dfZ251X2xkIiA+JjUKJGFzX2VjaG8gIiRhY2xfY3ZfcHJvZ19nbnVfbGQiID4mNjsg
fQp3aXRoX2dudV9sZD0kYWNsX2N2X3Byb2dfZ251X2xkCgoKCgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzaGFyZWQgbGlicmFyeSBydW4gcGF0aCBvcmlnaW4i
ID4mNQokYXNfZWNob19uICJjaGVja2luZyBmb3Igc2hhcmVkIGxpYnJhcnkgcnVuIHBhdGggb3Jp
Z2luLi4uICIgPiY2OyB9CmlmICR7YWNsX2N2X3JwYXRoKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNf
ZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCgogICAgQ0M9IiRDQyIgR0NDPSIkR0NDIiBMREZM
QUdTPSIkTERGTEFHUyIgTEQ9IiRMRCIgd2l0aF9nbnVfbGQ9IiR3aXRoX2dudV9sZCIgXAogICAg
JHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0gIiRhY19hdXhfZGlyL2NvbmZpZy5ycGF0aCIgIiRob3N0
IiA+IGNvbmZ0ZXN0LnNoCiAgICAuIC4vY29uZnRlc3Quc2gKICAgIHJtIC1mIC4vY29uZnRlc3Qu
c2gKICAgIGFjbF9jdl9ycGF0aD1kb25lCgpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IHJlc3VsdDogJGFjbF9jdl9ycGF0aCIgPiY1CiRhc19lY2hvICIkYWNsX2N2
X3JwYXRoIiA+JjY7IH0KICB3bD0iJGFjbF9jdl93bCIKICBhY2xfbGliZXh0PSIkYWNsX2N2X2xp
YmV4dCIKICBhY2xfc2hsaWJleHQ9IiRhY2xfY3Zfc2hsaWJleHQiCiAgYWNsX2xpYm5hbWVfc3Bl
Yz0iJGFjbF9jdl9saWJuYW1lX3NwZWMiCiAgYWNsX2xpYnJhcnlfbmFtZXNfc3BlYz0iJGFjbF9j
dl9saWJyYXJ5X25hbWVzX3NwZWMiCiAgYWNsX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9IiRh
Y2xfY3ZfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyIKICBhY2xfaGFyZGNvZGVfbGliZGlyX3Nl
cGFyYXRvcj0iJGFjbF9jdl9oYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIgogIGFjbF9oYXJkY29k
ZV9kaXJlY3Q9IiRhY2xfY3ZfaGFyZGNvZGVfZGlyZWN0IgogIGFjbF9oYXJkY29kZV9taW51c19M
PSIkYWNsX2N2X2hhcmRjb2RlX21pbnVzX0wiCiAgICAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUt
cnBhdGggd2FzIGdpdmVuLgppZiB0ZXN0ICIke2VuYWJsZV9ycGF0aCtzZXR9IiA9IHNldDsgdGhl
biA6CiAgZW5hYmxldmFsPSRlbmFibGVfcnBhdGg7IDoKZWxzZQogIGVuYWJsZV9ycGF0aD15ZXMK
ZmkKCgoKCiAgYWNsX2xpYmRpcnN0ZW09bGliCiAgYWNsX2xpYmRpcnN0ZW0yPQogIGNhc2UgIiRo
b3N0X29zIiBpbgogICAgc29sYXJpcyopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y
IDY0LWJpdCBob3N0IiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIDY0LWJpdCBob3N0Li4u
ICIgPiY2OyB9CmlmICR7Z2xfY3Zfc29sYXJpc182NGJpdCs6fSBmYWxzZTsgdGhlbiA6CiAgJGFz
X2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0Yg
PmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwoKI2lmZGVmIF9MUDY0CnNp
eHR5Zm91ciBiaXRzCiNlbmRpZgoKX0FDRU9GCmlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRh
Y19leHQiKSAyPiY1IHwKICAkRUdSRVAgInNpeHR5Zm91ciBiaXRzIiA+L2Rldi9udWxsIDI+JjE7
IHRoZW4gOgogIGdsX2N2X3NvbGFyaXNfNjRiaXQ9eWVzCmVsc2UKICBnbF9jdl9zb2xhcmlzXzY0
Yml0PW5vCmZpCnJtIC1mIGNvbmZ0ZXN0KgoKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3Zfc29sYXJpc182NGJpdCIgPiY1CiRhc19lY2hv
ICIkZ2xfY3Zfc29sYXJpc182NGJpdCIgPiY2OyB9CiAgICAgIGlmIHRlc3QgJGdsX2N2X3NvbGFy
aXNfNjRiaXQgPSB5ZXM7IHRoZW4KICAgICAgICBhY2xfbGliZGlyc3RlbT1saWIvNjQKICAgICAg
ICBjYXNlICIkaG9zdF9jcHUiIGluCiAgICAgICAgICBzcGFyYyopICAgICAgICBhY2xfbGliZGly
c3RlbTI9bGliL3NwYXJjdjkgOzsKICAgICAgICAgIGkqODYgfCB4ODZfNjQpIGFjbF9saWJkaXJz
dGVtMj1saWIvYW1kNjQgOzsKICAgICAgICBlc2FjCiAgICAgIGZpCiAgICAgIDs7CiAgICAqKQog
ICAgICBzZWFyY2hwYXRoPWAoTENfQUxMPUMgJENDIC1wcmludC1zZWFyY2gtZGlycykgMj4vZGV2
L251bGwgfCBzZWQgLW4gLWUgJ3MsXmxpYnJhcmllczogLCxwJyB8IHNlZCAtZSAncyxePSwsJ2AK
ICAgICAgaWYgdGVzdCAtbiAiJHNlYXJjaHBhdGgiOyB0aGVuCiAgICAgICAgYWNsX3NhdmVfSUZT
PSIke0lGUz0gCX0iOyBJRlM9IjoiCiAgICAgICAgZm9yIHNlYXJjaGRpciBpbiAkc2VhcmNocGF0
aDsgZG8KICAgICAgICAgIGlmIHRlc3QgLWQgIiRzZWFyY2hkaXIiOyB0aGVuCiAgICAgICAgICAg
IGNhc2UgIiRzZWFyY2hkaXIiIGluCiAgICAgICAgICAgICAgKi9saWI2NC8gfCAqL2xpYjY0ICkg
YWNsX2xpYmRpcnN0ZW09bGliNjQgOzsKICAgICAgICAgICAgICAqLy4uLyB8ICovLi4gKQogICAg
ICAgICAgICAgICAgIyBCZXR0ZXIgaWdub3JlIGRpcmVjdG9yaWVzIG9mIHRoaXMgZm9ybS4gVGhl
eSBhcmUgbWlzbGVhZGluZy4KICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgKikgc2Vh
cmNoZGlyPWBjZCAiJHNlYXJjaGRpciIgJiYgcHdkYAogICAgICAgICAgICAgICAgIGNhc2UgIiRz
ZWFyY2hkaXIiIGluCiAgICAgICAgICAgICAgICAgICAqL2xpYjY0ICkgYWNsX2xpYmRpcnN0ZW09
bGliNjQgOzsKICAgICAgICAgICAgICAgICBlc2FjIDs7CiAgICAgICAgICAgIGVzYWMKICAgICAg
ICAgIGZpCiAgICAgICAgZG9uZQogICAgICAgIElGUz0iJGFjbF9zYXZlX0lGUyIKICAgICAgZmkK
ICAgICAgOzsKICBlc2FjCiAgdGVzdCAtbiAiJGFjbF9saWJkaXJzdGVtMiIgfHwgYWNsX2xpYmRp
cnN0ZW0yPSIkYWNsX2xpYmRpcnN0ZW0iCgoKCiAgZ2xfdGhyZWFkc19hcGk9bm9uZQogIExJQlRI
UkVBRD0KICBMVExJQlRIUkVBRD0KICBMSUJNVUxUSVRIUkVBRD0KICBMVExJQk1VTFRJVEhSRUFE
PQogIGlmIHRlc3QgIiRnbF91c2VfdGhyZWFkcyIgIT0gbm87IHRoZW4KICAgICAgICB7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgaW1wb3J0
ZWQgc3ltYm9scyBjYW4gYmUgZGVjbGFyZWQgd2VhayIgPiY1CiRhc19lY2hvX24gImNoZWNraW5n
IHdoZXRoZXIgaW1wb3J0ZWQgc3ltYm9scyBjYW4gYmUgZGVjbGFyZWQgd2Vhay4uLiAiID4mNjsg
fQppZiAke2dsX2N2X2hhdmVfd2Vhays6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNh
Y2hlZCkgIiA+JjYKZWxzZQogIGdsX2N2X2hhdmVfd2Vhaz1ubwogICAgICAgICAgICAgIGNhdCBj
b25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmgu
ICAqLwpleHRlcm4gdm9pZCB4eXp6eSAoKTsKI3ByYWdtYSB3ZWFrIHh5enp5CmludAptYWluICgp
CnsKeHl6enkoKTsKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2xpbmsg
IiRMSU5FTk8iOyB0aGVuIDoKICBnbF9jdl9oYXZlX3dlYWs9bWF5YmUKZmkKcm0gLWYgY29yZSBj
b25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCiAgICBjb25mdGVzdCRhY19leGVleHQg
Y29uZnRlc3QuJGFjX2V4dAogICAgICAgaWYgdGVzdCAkZ2xfY3ZfaGF2ZV93ZWFrID0gbWF5YmU7
IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGlu
ZyIgPSB5ZXM7IHRoZW4gOgogICAgICAgICAgICAgICAgICAgICAgICAgIGNhdCBjb25mZGVmcy5o
IC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaWZk
ZWYgX19FTEZfXwogICAgICAgICAgICAgICBFeHRlbnNpYmxlIExpbmtpbmcgRm9ybWF0CiAgICAg
ICAgICAgICAgICNlbmRpZgoKX0FDRU9GCmlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19l
eHQiKSAyPiY1IHwKICAkRUdSRVAgIkV4dGVuc2libGUgTGlua2luZyBGb3JtYXQiID4vZGV2L251
bGwgMj4mMTsgdGhlbiA6CiAgZ2xfY3ZfaGF2ZV93ZWFrPSJndWVzc2luZyB5ZXMiCmVsc2UKICBn
bF9jdl9oYXZlX3dlYWs9Imd1ZXNzaW5nIG5vIgpmaQpybSAtZiBjb25mdGVzdCoKCgplbHNlCiAg
Y2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRl
ZnMuaC4gICovCgojaW5jbHVkZSA8c3RkaW8uaD4KI3ByYWdtYSB3ZWFrIGZwdXRzCmludCBtYWlu
ICgpCnsKICByZXR1cm4gKGZwdXRzID09IE5VTEwpOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9y
dW4gIiRMSU5FTk8iOyB0aGVuIDoKICBnbF9jdl9oYXZlX3dlYWs9eWVzCmVsc2UKICBnbF9jdl9o
YXZlX3dlYWs9bm8KZmkKcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0
IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAogIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRl
c3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CmZpCgogICAgICAgZmkKCmZpCnsgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfaGF2ZV93ZWFrIiA+JjUK
JGFzX2VjaG8gIiRnbF9jdl9oYXZlX3dlYWsiID4mNjsgfQogICAgaWYgdGVzdCAiJGdsX3VzZV90
aHJlYWRzIiA9IHllcyB8fCB0ZXN0ICIkZ2xfdXNlX3RocmVhZHMiID0gcG9zaXg7IHRoZW4KICAg
ICAgIyBPbiBPU0YvMSwgdGhlIGNvbXBpbGVyIG5lZWRzIHRoZSBmbGFnIC1wdGhyZWFkIG9yIC1E
X1JFRU5UUkFOVCBzbyB0aGF0CiAgICAgICMgaXQgZ3Jva3MgPHB0aHJlYWQuaD4uIEl0J3MgYWRk
ZWQgYWJvdmUsIGluIGdsX1RIUkVBRExJQl9FQVJMWV9CT0RZLgogICAgICBhY19mbl9jX2NoZWNr
X2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAicHRocmVhZC5oIiAiYWNfY3ZfaGVhZGVyX3B0aHJl
YWRfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgppZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9wdGhy
ZWFkX2giID0geHllczsgdGhlbiA6CiAgZ2xfaGF2ZV9wdGhyZWFkX2g9eWVzCmVsc2UKICBnbF9o
YXZlX3B0aHJlYWRfaD1ubwpmaQoKCiAgICAgIGlmIHRlc3QgIiRnbF9oYXZlX3B0aHJlYWRfaCIg
PSB5ZXM7IHRoZW4KICAgICAgICAjIE90aGVyIHBvc3NpYmxlIHRlc3RzOgogICAgICAgICMgICAt
bHB0aHJlYWRzIChGU1UgdGhyZWFkcywgUEN0aHJlYWRzKQogICAgICAgICMgICAtbGd0aHJlYWRz
CiAgICAgICAgZ2xfaGF2ZV9wdGhyZWFkPQogICAgICAgICMgVGVzdCB3aGV0aGVyIGJvdGggcHRo
cmVhZF9tdXRleF9sb2NrIGFuZCBwdGhyZWFkX211dGV4YXR0cl9pbml0IGV4aXN0CiAgICAgICAg
IyBpbiBsaWJjLiBJUklYIDYuNSBoYXMgdGhlIGZpcnN0IG9uZSBpbiBib3RoIGxpYmMgYW5kIGxp
YnB0aHJlYWQsIGJ1dAogICAgICAgICMgdGhlIHNlY29uZCBvbmUgb25seSBpbiBsaWJwdGhyZWFk
LCBhbmQgbG9jay5jIG5lZWRzIGl0LgogICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0Yg
PmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVkZSA8cHRocmVh
ZC5oPgppbnQKbWFpbiAoKQp7CnB0aHJlYWRfbXV0ZXhfbG9jaygocHRocmVhZF9tdXRleF90Kikw
KTsKICAgICAgICAgICAgICAgcHRocmVhZF9tdXRleGF0dHJfaW5pdCgocHRocmVhZF9tdXRleGF0
dHJfdCopMCk7CiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9saW5rICIk
TElORU5PIjsgdGhlbiA6CiAgZ2xfaGF2ZV9wdGhyZWFkPXllcwpmaQpybSAtZiBjb3JlIGNvbmZ0
ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25m
dGVzdC4kYWNfZXh0CiAgICAgICAgIyBUZXN0IGZvciBsaWJwdGhyZWFkIGJ5IGxvb2tpbmcgZm9y
IHB0aHJlYWRfa2lsbC4gKE5vdCBwdGhyZWFkX3NlbGYsCiAgICAgICAgIyBzaW5jZSBpdCBpcyBk
ZWZpbmVkIGFzIGEgbWFjcm8gb24gT1NGLzEuKQogICAgICAgIGlmIHRlc3QgLW4gIiRnbF9oYXZl
X3B0aHJlYWQiOyB0aGVuCiAgICAgICAgICAjIFRoZSBwcm9ncmFtIGxpbmtzIGZpbmUgd2l0aG91
dCBsaWJwdGhyZWFkLiBCdXQgaXQgbWF5IGFjdHVhbGx5CiAgICAgICAgICAjIG5lZWQgdG8gbGlu
ayB3aXRoIGxpYnB0aHJlYWQgaW4gb3JkZXIgdG8gY3JlYXRlIG11bHRpcGxlIHRocmVhZHMuCiAg
ICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5n
IGZvciBwdGhyZWFkX2tpbGwgaW4gLWxwdGhyZWFkIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcg
Zm9yIHB0aHJlYWRfa2lsbCBpbiAtbHB0aHJlYWQuLi4gIiA+JjY7IH0KaWYgJHthY19jdl9saWJf
cHRocmVhZF9wdGhyZWFkX2tpbGwrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNo
ZWQpICIgPiY2CmVsc2UKICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCkxJQlM9Ii1scHRo
cmVhZCAgJExJQlMiCmNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQK
LyogZW5kIGNvbmZkZWZzLmguICAqLwoKLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90
b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCiAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1h
dGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQwogICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1
bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwojaWZkZWYgX19jcGx1c3BsdXMK
ZXh0ZXJuICJDIgojZW5kaWYKY2hhciBwdGhyZWFkX2tpbGwgKCk7CmludAptYWluICgpCnsKcmV0
dXJuIHB0aHJlYWRfa2lsbCAoKTsKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2Nf
dHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKICBhY19jdl9saWJfcHRocmVhZF9wdGhyZWFkX2tp
bGw9eWVzCmVsc2UKICBhY19jdl9saWJfcHRocmVhZF9wdGhyZWFkX2tpbGw9bm8KZmkKcm0gLWYg
Y29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCiAgICBjb25mdGVzdCRhY19l
eGVleHQgY29uZnRlc3QuJGFjX2V4dApMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCmZpCnsg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGli
X3B0aHJlYWRfcHRocmVhZF9raWxsIiA+JjUKJGFzX2VjaG8gIiRhY19jdl9saWJfcHRocmVhZF9w
dGhyZWFkX2tpbGwiID4mNjsgfQppZiB0ZXN0ICJ4JGFjX2N2X2xpYl9wdGhyZWFkX3B0aHJlYWRf
a2lsbCIgPSB4eWVzOyB0aGVuIDoKICBMSUJNVUxUSVRIUkVBRD0tbHB0aHJlYWQgTFRMSUJNVUxU
SVRIUkVBRD0tbHB0aHJlYWQKICAgICAgICAgICAgICMgT24gU29sYXJpcyBhbmQgSFAtVVgsIG1v
c3QgcHRocmVhZCBmdW5jdGlvbnMgZXhpc3QgYWxzbyBpbiBsaWJjLgogICAgICAgICAgICAgIyBU
aGVyZWZvcmUgcHRocmVhZF9pbl91c2UoKSBuZWVkcyB0byBhY3R1YWxseSB0cnkgdG8gY3JlYXRl
IGEKICAgICAgICAgICAgICMgdGhyZWFkOiBwdGhyZWFkX2NyZWF0ZSBmcm9tIGxpYmMgd2lsbCBm
YWlsLCB3aGVyZWFzCiAgICAgICAgICAgICAjIHB0aHJlYWRfY3JlYXRlIHdpbGwgYWN0dWFsbHkg
Y3JlYXRlIGEgdGhyZWFkLgogICAgICAgICAgICAgY2FzZSAiJGhvc3Rfb3MiIGluCiAgICAgICAg
ICAgICAgIHNvbGFyaXMqIHwgaHB1eCopCgokYXNfZWNobyAiI2RlZmluZSBQVEhSRUFEX0lOX1VT
RV9ERVRFQ1RJT05fSEFSRCAxIiA+PmNvbmZkZWZzLmgKCiAgICAgICAgICAgICBlc2FjCgpmaQoK
ICAgICAgICBlbHNlCiAgICAgICAgICAjIFNvbWUgbGlicmFyeSBpcyBuZWVkZWQuIFRyeSBsaWJw
dGhyZWFkIGFuZCBsaWJjX3IuCiAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IGNoZWNraW5nIGZvciBwdGhyZWFkX2tpbGwgaW4gLWxwdGhyZWFkIiA+JjUK
JGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHB0aHJlYWRfa2lsbCBpbiAtbHB0aHJlYWQuLi4gIiA+
JjY7IH0KaWYgJHthY19jdl9saWJfcHRocmVhZF9wdGhyZWFkX2tpbGwrOn0gZmFsc2U7IHRoZW4g
OgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKICBhY19jaGVja19saWJfc2F2ZV9M
SUJTPSRMSUJTCkxJQlM9Ii1scHRocmVhZCAgJExJQlMiCmNhdCBjb25mZGVmcy5oIC0gPDxfQUNF
T0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwoKLyogT3ZlcnJpZGUg
YW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCiAgIFVzZSBjaGFy
IGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQwogICBidWls
dGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAq
LwojaWZkZWYgX19jcGx1c3BsdXMKZXh0ZXJuICJDIgojZW5kaWYKY2hhciBwdGhyZWFkX2tpbGwg
KCk7CmludAptYWluICgpCnsKcmV0dXJuIHB0aHJlYWRfa2lsbCAoKTsKICA7CiAgcmV0dXJuIDA7
Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKICBhY19jdl9s
aWJfcHRocmVhZF9wdGhyZWFkX2tpbGw9eWVzCmVsc2UKICBhY19jdl9saWJfcHRocmVhZF9wdGhy
ZWFkX2tpbGw9bm8KZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4
dCBcCiAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dApMSUJTPSRhY19jaGVj
a19saWJfc2F2ZV9MSUJTCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiAkYWNfY3ZfbGliX3B0aHJlYWRfcHRocmVhZF9raWxsIiA+JjUKJGFzX2VjaG8g
IiRhY19jdl9saWJfcHRocmVhZF9wdGhyZWFkX2tpbGwiID4mNjsgfQppZiB0ZXN0ICJ4JGFjX2N2
X2xpYl9wdGhyZWFkX3B0aHJlYWRfa2lsbCIgPSB4eWVzOyB0aGVuIDoKICBnbF9oYXZlX3B0aHJl
YWQ9eWVzCiAgICAgICAgICAgICBMSUJUSFJFQUQ9LWxwdGhyZWFkIExUTElCVEhSRUFEPS1scHRo
cmVhZAogICAgICAgICAgICAgTElCTVVMVElUSFJFQUQ9LWxwdGhyZWFkIExUTElCTVVMVElUSFJF
QUQ9LWxwdGhyZWFkCmZpCgogICAgICAgICAgaWYgdGVzdCAteiAiJGdsX2hhdmVfcHRocmVhZCI7
IHRoZW4KICAgICAgICAgICAgIyBGb3IgRnJlZUJTRCA0LgogICAgICAgICAgICB7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBwdGhyZWFkX2tpbGwg
aW4gLWxjX3IiID4mNQokYXNfZWNob19uICJjaGVja2luZyBmb3IgcHRocmVhZF9raWxsIGluIC1s
Y19yLi4uICIgPiY2OyB9CmlmICR7YWNfY3ZfbGliX2Nfcl9wdGhyZWFkX2tpbGwrOn0gZmFsc2U7
IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKICBhY19jaGVja19saWJf
c2F2ZV9MSUJTPSRMSUJTCkxJQlM9Ii1sY19yICAkTElCUyIKY2F0IGNvbmZkZWZzLmggLSA8PF9B
Q0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCgovKiBPdmVycmlk
ZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KICAgVXNlIGNo
YXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCiAgIGJ1
aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4g
ICovCiNpZmRlZiBfX2NwbHVzcGx1cwpleHRlcm4gIkMiCiNlbmRpZgpjaGFyIHB0aHJlYWRfa2ls
bCAoKTsKaW50Cm1haW4gKCkKewpyZXR1cm4gcHRocmVhZF9raWxsICgpOwogIDsKICByZXR1cm4g
MDsKfQpfQUNFT0YKaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgogIGFjX2N2
X2xpYl9jX3JfcHRocmVhZF9raWxsPXllcwplbHNlCiAgYWNfY3ZfbGliX2Nfcl9wdGhyZWFkX2tp
bGw9bm8KZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCiAg
ICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dApMSUJTPSRhY19jaGVja19saWJf
c2F2ZV9MSUJTCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz
dWx0OiAkYWNfY3ZfbGliX2Nfcl9wdGhyZWFkX2tpbGwiID4mNQokYXNfZWNobyAiJGFjX2N2X2xp
Yl9jX3JfcHRocmVhZF9raWxsIiA+JjY7IH0KaWYgdGVzdCAieCRhY19jdl9saWJfY19yX3B0aHJl
YWRfa2lsbCIgPSB4eWVzOyB0aGVuIDoKICBnbF9oYXZlX3B0aHJlYWQ9eWVzCiAgICAgICAgICAg
ICAgIExJQlRIUkVBRD0tbGNfciBMVExJQlRIUkVBRD0tbGNfcgogICAgICAgICAgICAgICBMSUJN
VUxUSVRIUkVBRD0tbGNfciBMVExJQk1VTFRJVEhSRUFEPS1sY19yCmZpCgogICAgICAgICAgZmkK
ICAgICAgICBmaQogICAgICAgIGlmIHRlc3QgLW4gIiRnbF9oYXZlX3B0aHJlYWQiOyB0aGVuCiAg
ICAgICAgICBnbF90aHJlYWRzX2FwaT1wb3NpeAoKJGFzX2VjaG8gIiNkZWZpbmUgVVNFX1BPU0lY
X1RIUkVBRFMgMSIgPj5jb25mZGVmcy5oCgogICAgICAgICAgaWYgdGVzdCAtbiAiJExJQk1VTFRJ
VEhSRUFEIiB8fCB0ZXN0IC1uICIkTFRMSUJNVUxUSVRIUkVBRCI7IHRoZW4KICAgICAgICAgICAg
aWYgY2FzZSAiJGdsX2N2X2hhdmVfd2VhayIgaW4gKnllcykgdHJ1ZTs7ICopIGZhbHNlOzsgZXNh
YzsgdGhlbgoKJGFzX2VjaG8gIiNkZWZpbmUgVVNFX1BPU0lYX1RIUkVBRFNfV0VBSyAxIiA+PmNv
bmZkZWZzLmgKCiAgICAgICAgICAgICAgTElCVEhSRUFEPQogICAgICAgICAgICAgIExUTElCVEhS
RUFEPQogICAgICAgICAgICBmaQogICAgICAgICAgZmkKICAgICAgICBmaQogICAgICBmaQogICAg
ZmkKICAgIGlmIHRlc3QgLXogIiRnbF9oYXZlX3B0aHJlYWQiOyB0aGVuCiAgICAgIGlmIHRlc3Qg
IiRnbF91c2VfdGhyZWFkcyIgPSB5ZXMgfHwgdGVzdCAiJGdsX3VzZV90aHJlYWRzIiA9IHNvbGFy
aXM7IHRoZW4KICAgICAgICBnbF9oYXZlX3NvbGFyaXN0aHJlYWQ9CiAgICAgICAgZ2xfc2F2ZV9M
SUJTPSIkTElCUyIKICAgICAgICBMSUJTPSIkTElCUyAtbHRocmVhZCIKICAgICAgICBjYXQgY29u
ZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAg
Ki8KCiNpbmNsdWRlIDx0aHJlYWQuaD4KI2luY2x1ZGUgPHN5bmNoLmg+CgppbnQKbWFpbiAoKQp7
CnRocl9zZWxmKCk7CiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9saW5r
ICIkTElORU5PIjsgdGhlbiA6CiAgZ2xfaGF2ZV9zb2xhcmlzdGhyZWFkPXllcwpmaQpybSAtZiBj
b3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAgIGNvbmZ0ZXN0JGFjX2V4
ZWV4dCBjb25mdGVzdC4kYWNfZXh0CiAgICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyIKICAgICAg
ICBpZiB0ZXN0IC1uICIkZ2xfaGF2ZV9zb2xhcmlzdGhyZWFkIjsgdGhlbgogICAgICAgICAgZ2xf
dGhyZWFkc19hcGk9c29sYXJpcwogICAgICAgICAgTElCVEhSRUFEPS1sdGhyZWFkCiAgICAgICAg
ICBMVExJQlRIUkVBRD0tbHRocmVhZAogICAgICAgICAgTElCTVVMVElUSFJFQUQ9IiRMSUJUSFJF
QUQiCiAgICAgICAgICBMVExJQk1VTFRJVEhSRUFEPSIkTFRMSUJUSFJFQUQiCgokYXNfZWNobyAi
I2RlZmluZSBVU0VfU09MQVJJU19USFJFQURTIDEiID4+Y29uZmRlZnMuaAoKICAgICAgICAgIGlm
IGNhc2UgIiRnbF9jdl9oYXZlX3dlYWsiIGluICp5ZXMpIHRydWU7OyAqKSBmYWxzZTs7IGVzYWM7
IHRoZW4KCiRhc19lY2hvICIjZGVmaW5lIFVTRV9TT0xBUklTX1RIUkVBRFNfV0VBSyAxIiA+PmNv
bmZkZWZzLmgKCiAgICAgICAgICAgIExJQlRIUkVBRD0KICAgICAgICAgICAgTFRMSUJUSFJFQUQ9
CiAgICAgICAgICBmaQogICAgICAgIGZpCiAgICAgIGZpCiAgICBmaQogICAgaWYgdGVzdCAiJGds
X3VzZV90aHJlYWRzIiA9IHB0aDsgdGhlbgogICAgICBnbF9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxB
R1MiCgoKCgoKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr
aW5nIGhvdyB0byBsaW5rIHdpdGggbGlicHRoIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93
IHRvIGxpbmsgd2l0aCBsaWJwdGguLi4gIiA+JjY7IH0KaWYgJHthY19jdl9saWJwdGhfbGlicys6
fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQoKCgoKCgoK
CiAgICB1c2VfYWRkaXRpb25hbD15ZXMKCiAgYWNsX3NhdmVfcHJlZml4PSIkcHJlZml4IgogIHBy
ZWZpeD0iJGFjbF9maW5hbF9wcmVmaXgiCiAgYWNsX3NhdmVfZXhlY19wcmVmaXg9IiRleGVjX3By
ZWZpeCIKICBleGVjX3ByZWZpeD0iJGFjbF9maW5hbF9leGVjX3ByZWZpeCIKCiAgICBldmFsIGFk
ZGl0aW9uYWxfaW5jbHVkZWRpcj1cIiRpbmNsdWRlZGlyXCIKICAgIGV2YWwgYWRkaXRpb25hbF9s
aWJkaXI9XCIkbGliZGlyXCIKCiAgZXhlY19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3ByZWZpeCIK
ICBwcmVmaXg9IiRhY2xfc2F2ZV9wcmVmaXgiCgoKIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJw
dGgtcHJlZml4IHdhcyBnaXZlbi4KaWYgdGVzdCAiJHt3aXRoX2xpYnB0aF9wcmVmaXgrc2V0fSIg
PSBzZXQ7IHRoZW4gOgogIHdpdGh2YWw9JHdpdGhfbGlicHRoX3ByZWZpeDsKICAgIGlmIHRlc3Qg
Ilgkd2l0aHZhbCIgPSAiWG5vIjsgdGhlbgogICAgICB1c2VfYWRkaXRpb25hbD1ubwogICAgZWxz
ZQogICAgICBpZiB0ZXN0ICJYJHdpdGh2YWwiID0gIlgiOyB0aGVuCgogIGFjbF9zYXZlX3ByZWZp
eD0iJHByZWZpeCIKICBwcmVmaXg9IiRhY2xfZmluYWxfcHJlZml4IgogIGFjbF9zYXZlX2V4ZWNf
cHJlZml4PSIkZXhlY19wcmVmaXgiCiAgZXhlY19wcmVmaXg9IiRhY2xfZmluYWxfZXhlY19wcmVm
aXgiCgogICAgICAgICAgZXZhbCBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9XCIkaW5jbHVkZWRpclwi
CiAgICAgICAgICBldmFsIGFkZGl0aW9uYWxfbGliZGlyPVwiJGxpYmRpclwiCgogIGV4ZWNfcHJl
Zml4PSIkYWNsX3NhdmVfZXhlY19wcmVmaXgiCiAgcHJlZml4PSIkYWNsX3NhdmVfcHJlZml4IgoK
ICAgICAgZWxzZQogICAgICAgIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj0iJHdpdGh2YWwvaW5jbHVk
ZSIKICAgICAgICBhZGRpdGlvbmFsX2xpYmRpcj0iJHdpdGh2YWwvJGFjbF9saWJkaXJzdGVtIgog
ICAgICAgIGlmIHRlc3QgIiRhY2xfbGliZGlyc3RlbTIiICE9ICIkYWNsX2xpYmRpcnN0ZW0iIFwK
ICAgICAgICAgICAmJiAhIHRlc3QgLWQgIiR3aXRodmFsLyRhY2xfbGliZGlyc3RlbSI7IHRoZW4K
ICAgICAgICAgIGFkZGl0aW9uYWxfbGliZGlyPSIkd2l0aHZhbC8kYWNsX2xpYmRpcnN0ZW0yIgog
ICAgICAgIGZpCiAgICAgIGZpCiAgICBmaQoKZmkKCiAgICAgIExJQlBUSD0KICBMVExJQlBUSD0K
ICBJTkNQVEg9CiAgTElCUFRIX1BSRUZJWD0KICAgICAgSEFWRV9MSUJQVEg9CiAgcnBhdGhkaXJz
PQogIGx0cnBhdGhkaXJzPQogIG5hbWVzX2FscmVhZHlfaGFuZGxlZD0KICBuYW1lc19uZXh0X3Jv
dW5kPSdwdGggJwogIHdoaWxlIHRlc3QgLW4gIiRuYW1lc19uZXh0X3JvdW5kIjsgZG8KICAgIG5h
bWVzX3RoaXNfcm91bmQ9IiRuYW1lc19uZXh0X3JvdW5kIgogICAgbmFtZXNfbmV4dF9yb3VuZD0K
ICAgIGZvciBuYW1lIGluICRuYW1lc190aGlzX3JvdW5kOyBkbwogICAgICBhbHJlYWR5X2hhbmRs
ZWQ9CiAgICAgIGZvciBuIGluICRuYW1lc19hbHJlYWR5X2hhbmRsZWQ7IGRvCiAgICAgICAgaWYg
dGVzdCAiJG4iID0gIiRuYW1lIjsgdGhlbgogICAgICAgICAgYWxyZWFkeV9oYW5kbGVkPXllcwog
ICAgICAgICAgYnJlYWsKICAgICAgICBmaQogICAgICBkb25lCiAgICAgIGlmIHRlc3QgLXogIiRh
bHJlYWR5X2hhbmRsZWQiOyB0aGVuCiAgICAgICAgbmFtZXNfYWxyZWFkeV9oYW5kbGVkPSIkbmFt
ZXNfYWxyZWFkeV9oYW5kbGVkICRuYW1lIgogICAgICAgICAgICAgICAgICAgICAgICB1cHBlcm5h
bWU9YGVjaG8gIiRuYW1lIiB8IHNlZCAtZSAneXxhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4v
Ky18QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX19ffCdgCiAgICAgICAgZXZhbCB2YWx1ZT1c
IlwkSEFWRV9MSUIkdXBwZXJuYW1lXCIKICAgICAgICBpZiB0ZXN0IC1uICIkdmFsdWUiOyB0aGVu
CiAgICAgICAgICBpZiB0ZXN0ICIkdmFsdWUiID0geWVzOyB0aGVuCiAgICAgICAgICAgIGV2YWwg
dmFsdWU9XCJcJExJQiR1cHBlcm5hbWVcIgogICAgICAgICAgICB0ZXN0IC16ICIkdmFsdWUiIHx8
IExJQlBUSD0iJHtMSUJQVEh9JHtMSUJQVEg6KyB9JHZhbHVlIgogICAgICAgICAgICBldmFsIHZh
bHVlPVwiXCRMVExJQiR1cHBlcm5hbWVcIgogICAgICAgICAgICB0ZXN0IC16ICIkdmFsdWUiIHx8
IExUTElCUFRIPSIke0xUTElCUFRIfSR7TFRMSUJQVEg6KyB9JHZhbHVlIgogICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6CiAgICAgICAgICBmaQogICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPQogICAgICAg
ICAgZm91bmRfbGE9CiAgICAgICAgICBmb3VuZF9zbz0KICAgICAgICAgIGZvdW5kX2E9CiAgICAg
ICAgICBldmFsIGxpYm5hbWU9XCIkYWNsX2xpYm5hbWVfc3BlY1wiICAgICMgdHlwaWNhbGx5OiBs
aWJuYW1lPWxpYiRuYW1lCiAgICAgICAgICBpZiB0ZXN0IC1uICIkYWNsX3NobGliZXh0IjsgdGhl
bgogICAgICAgICAgICBzaHJleHQ9Ii4kYWNsX3NobGliZXh0IiAgICAgICAgICAgICAjIHR5cGlj
YWxseTogc2hyZXh0PS5zbwogICAgICAgICAgZWxzZQogICAgICAgICAgICBzaHJleHQ9CiAgICAg
ICAgICBmaQogICAgICAgICAgaWYgdGVzdCAkdXNlX2FkZGl0aW9uYWwgPSB5ZXM7IHRoZW4KICAg
ICAgICAgICAgZGlyPSIkYWRkaXRpb25hbF9saWJkaXIiCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRhY2xfc2hsaWJleHQiOyB0aGVuCiAgICAgICAgICAg
ICAgaWYgdGVzdCAtZiAiJGRpci8kbGlibmFtZSRzaHJleHQiOyB0aGVuCiAgICAgICAgICAgICAg
ICBmb3VuZF9kaXI9IiRkaXIiCiAgICAgICAgICAgICAgICBmb3VuZF9zbz0iJGRpci8kbGlibmFt
ZSRzaHJleHQiCiAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgaWYgdGVzdCAiJGFj
bF9saWJyYXJ5X25hbWVzX3NwZWMiID0gJyRsaWJuYW1lJHNocmV4dCR2ZXJzdWZmaXgnOyB0aGVu
CiAgICAgICAgICAgICAgICAgIHZlcj1gKGNkICIkZGlyIiAmJiBcCiAgICAgICAgICAgICAgICAg
ICAgICAgIGZvciBmIGluICIkbGlibmFtZSRzaHJleHQiLio7IGRvIGVjaG8gIiRmIjsgZG9uZSBc
CiAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VkIC1lICJzLF4kbGlibmFtZSRzaHJleHRcXFxc
LiwsIiBcCiAgICAgICAgICAgICAgICAgICAgICAgIHwgc29ydCAtdCAnLicgLW4gLXIgLWsxLDEg
LWsyLDIgLWszLDMgLWs0LDQgLWs1LDUgXAogICAgICAgICAgICAgICAgICAgICAgICB8IHNlZCAx
cSApIDI+L2Rldi9udWxsYAogICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkdmVyIiAmJiB0
ZXN0IC1mICIkZGlyLyRsaWJuYW1lJHNocmV4dC4kdmVyIjsgdGhlbgogICAgICAgICAgICAgICAg
ICAgIGZvdW5kX2Rpcj0iJGRpciIKICAgICAgICAgICAgICAgICAgICBmb3VuZF9zbz0iJGRpci8k
bGlibmFtZSRzaHJleHQuJHZlciIKICAgICAgICAgICAgICAgICAgZmkKICAgICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICAgZXZhbCBsaWJyYXJ5X25hbWVzPVwiJGFjbF9saWJyYXJ5
X25hbWVzX3NwZWNcIgogICAgICAgICAgICAgICAgICBmb3IgZiBpbiAkbGlicmFyeV9uYW1lczsg
ZG8KICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyLyRmIjsgdGhlbgogICAgICAg
ICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgogICAgICAgICAgICAgICAgICAgICAgZm91
bmRfc289IiRkaXIvJGYiCiAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAg
ICAgICAgIGZpCiAgICAgICAgICAgICAgICAgIGRvbmUKICAgICAgICAgICAgICAgIGZpCiAgICAg
ICAgICAgICAgZmkKICAgICAgICAgICAgZmkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVz
dCAiWCRmb3VuZF9kaXIiID0gIlgiOyB0aGVuCiAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRp
ci8kbGlibmFtZS4kYWNsX2xpYmV4dCI7IHRoZW4KICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0i
JGRpciIKICAgICAgICAgICAgICAgIGZvdW5kX2E9IiRkaXIvJGxpYm5hbWUuJGFjbF9saWJleHQi
CiAgICAgICAgICAgICAgZmkKICAgICAgICAgICAgZmkKICAgICAgICAgICAgaWYgdGVzdCAiWCRm
b3VuZF9kaXIiICE9ICJYIjsgdGhlbgogICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvJGxp
Ym5hbWUubGEiOyB0aGVuCiAgICAgICAgICAgICAgICBmb3VuZF9sYT0iJGRpci8kbGlibmFtZS5s
YSIKICAgICAgICAgICAgICBmaQogICAgICAgICAgICBmaQogICAgICAgICAgZmkKICAgICAgICAg
IGlmIHRlc3QgIlgkZm91bmRfZGlyIiA9ICJYIjsgdGhlbgogICAgICAgICAgICBmb3IgeCBpbiAk
TERGTEFHUyAkTFRMSUJQVEg7IGRvCgogIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKICBwcmVm
aXg9IiRhY2xfZmluYWxfcHJlZml4IgogIGFjbF9zYXZlX2V4ZWNfcHJlZml4PSIkZXhlY19wcmVm
aXgiCiAgZXhlY19wcmVmaXg9IiRhY2xfZmluYWxfZXhlY19wcmVmaXgiCiAgZXZhbCB4PVwiJHhc
IgogIGV4ZWNfcHJlZml4PSIkYWNsX3NhdmVfZXhlY19wcmVmaXgiCiAgcHJlZml4PSIkYWNsX3Nh
dmVfcHJlZml4IgoKICAgICAgICAgICAgICBjYXNlICIkeCIgaW4KICAgICAgICAgICAgICAgIC1M
KikKICAgICAgICAgICAgICAgICAgZGlyPWBlY2hvICJYJHgiIHwgc2VkIC1lICdzL15YLUwvLydg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRhY2xfc2hs
aWJleHQiOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kbGlibmFt
ZSRzaHJleHQiOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9kaXI9IiRkaXIiCiAg
ICAgICAgICAgICAgICAgICAgICBmb3VuZF9zbz0iJGRpci8kbGlibmFtZSRzaHJleHQiCiAgICAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiJGFjbF9s
aWJyYXJ5X25hbWVzX3NwZWMiID0gJyRsaWJuYW1lJHNocmV4dCR2ZXJzdWZmaXgnOyB0aGVuCiAg
ICAgICAgICAgICAgICAgICAgICAgIHZlcj1gKGNkICIkZGlyIiAmJiBcCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciBmIGluICIkbGlibmFtZSRzaHJleHQiLio7IGRvIGVjaG8gIiRm
IjsgZG9uZSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VkIC1lICJzLF4kbGli
bmFtZSRzaHJleHRcXFxcLiwsIiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc29y
dCAtdCAnLicgLW4gLXIgLWsxLDEgLWsyLDIgLWszLDMgLWs0LDQgLWs1LDUgXAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IHNlZCAxcSApIDI+L2Rldi9udWxsYAogICAgICAgICAgICAg
ICAgICAgICAgICBpZiB0ZXN0IC1uICIkdmVyIiAmJiB0ZXN0IC1mICIkZGlyLyRsaWJuYW1lJHNo
cmV4dC4kdmVyIjsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRp
ciIKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9zbz0iJGRpci8kbGlibmFtZSRzaHJl
eHQuJHZlciIKICAgICAgICAgICAgICAgICAgICAgICAgZmkKICAgICAgICAgICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgZXZhbCBsaWJyYXJ5X25hbWVzPVwiJGFjbF9s
aWJyYXJ5X25hbWVzX3NwZWNcIgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgZiBpbiAkbGli
cmFyeV9uYW1lczsgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGly
LyRmIjsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfc289IiRkaXIvJGYiCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgIGZpCiAgICAg
ICAgICAgICAgICAgICAgICAgIGRvbmUKICAgICAgICAgICAgICAgICAgICAgIGZpCiAgICAgICAg
ICAgICAgICAgICAgZmkKICAgICAgICAgICAgICAgICAgZmkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9kaXIiID0gIlgiOyB0aGVuCiAgICAgICAg
ICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kbGlibmFtZS4kYWNsX2xpYmV4dCI7IHRoZW4K
ICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKICAgICAgICAgICAgICAgICAg
ICAgIGZvdW5kX2E9IiRkaXIvJGxpYm5hbWUuJGFjbF9saWJleHQiCiAgICAgICAgICAgICAgICAg
ICAgZmkKICAgICAgICAgICAgICAgICAgZmkKICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRm
b3VuZF9kaXIiICE9ICJYIjsgdGhlbgogICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRk
aXIvJGxpYm5hbWUubGEiOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9sYT0iJGRp
ci8kbGlibmFtZS5sYSIKICAgICAgICAgICAgICAgICAgICBmaQogICAgICAgICAgICAgICAgICBm
aQogICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgIGVzYWMKICAgICAgICAgICAgICBp
ZiB0ZXN0ICJYJGZvdW5kX2RpciIgIT0gIlgiOyB0aGVuCiAgICAgICAgICAgICAgICBicmVhawog
ICAgICAgICAgICAgIGZpCiAgICAgICAgICAgIGRvbmUKICAgICAgICAgIGZpCiAgICAgICAgICBp
ZiB0ZXN0ICJYJGZvdW5kX2RpciIgIT0gIlgiOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAg
IExUTElCUFRIPSIke0xUTElCUFRIfSR7TFRMSUJQVEg6KyB9LUwkZm91bmRfZGlyIC1sJG5hbWUi
CiAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfc28iICE9ICJYIjsgdGhlbgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRl
bmFibGVfcnBhdGgiID0gbm8gXAogICAgICAgICAgICAgICAgIHx8IHRlc3QgIlgkZm91bmRfZGly
IiA9ICJYL3Vzci8kYWNsX2xpYmRpcnN0ZW0iIFwKICAgICAgICAgICAgICAgICB8fCB0ZXN0ICJY
JGZvdW5kX2RpciIgPSAiWC91c3IvJGFjbF9saWJkaXJzdGVtMiI7IHRoZW4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBMSUJQVEg9IiR7TElCUFRIfSR7TElCUFRIOisgfSRmb3VuZF9z
byIKICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQogICAg
ICAgICAgICAgICAgZm9yIHggaW4gJGx0cnBhdGhkaXJzOyBkbwogICAgICAgICAgICAgICAgICBp
ZiB0ZXN0ICJYJHgiID0gIlgkZm91bmRfZGlyIjsgdGhlbgogICAgICAgICAgICAgICAgICAgIGhh
dmVpdD15ZXMKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICBmaQog
ICAgICAgICAgICAgICAgZG9uZQogICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7
IHRoZW4KICAgICAgICAgICAgICAgICAgbHRycGF0aGRpcnM9IiRsdHJwYXRoZGlycyAkZm91bmRf
ZGlyIgogICAgICAgICAgICAgICAgZmkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiB0ZXN0ICIkYWNsX2hhcmRjb2RlX2RpcmVjdCIgPSB5ZXM7IHRoZW4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCUFRIPSIke0xJQlBUSH0k
e0xJQlBUSDorIH0kZm91bmRfc28iCiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgIGlmIHRlc3QgLW4gIiRhY2xfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyIgJiYgdGVzdCAi
JGFjbF9oYXJkY29kZV9taW51c19MIiA9IG5vOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlBUSD0iJHtMSUJQVEh9JHtM
SUJQVEg6KyB9JGZvdW5kX3NvIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9CiAgICAgICAgICAgICAgICAgICAgZm9yIHgg
aW4gJHJwYXRoZGlyczsgZG8KICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAi
WCRmb3VuZF9kaXIiOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgIGZpCiAgICAg
ICAgICAgICAgICAgICAgZG9uZQogICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZl
aXQiOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICBycGF0aGRpcnM9IiRycGF0aGRpcnMgJGZv
dW5kX2RpciIKICAgICAgICAgICAgICAgICAgICBmaQogICAgICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQogICAgICAgICAgICAgICAgICAgIGZvciB4IGlu
ICRMREZMQUdTICRMSUJQVEg7IGRvCgogIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKICBwcmVm
aXg9IiRhY2xfZmluYWxfcHJlZml4IgogIGFjbF9zYXZlX2V4ZWNfcHJlZml4PSIkZXhlY19wcmVm
aXgiCiAgZXhlY19wcmVmaXg9IiRhY2xfZmluYWxfZXhlY19wcmVmaXgiCiAgZXZhbCB4PVwiJHhc
IgogIGV4ZWNfcHJlZml4PSIkYWNsX3NhdmVfZXhlY19wcmVmaXgiCiAgcHJlZml4PSIkYWNsX3Nh
dmVfcHJlZml4IgoKICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWC1MJGZv
dW5kX2RpciI7IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcwogICAgICAg
ICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgZmkKICAgICAgICAg
ICAgICAgICAgICBkb25lCiAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7
IHRoZW4KICAgICAgICAgICAgICAgICAgICAgIExJQlBUSD0iJHtMSUJQVEh9JHtMSUJQVEg6KyB9
LUwkZm91bmRfZGlyIgogICAgICAgICAgICAgICAgICAgIGZpCiAgICAgICAgICAgICAgICAgICAg
aWYgdGVzdCAiJGFjbF9oYXJkY29kZV9taW51c19MIiAhPSBubzsgdGhlbgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTElCUFRIPSIke0xJQlBUSH0ke0xJQlBUSDorIH0kZm91bmRfc28i
CiAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlBUSD0iJHtMSUJQVEh9JHtMSUJQVEg6
KyB9LWwkbmFtZSIKICAgICAgICAgICAgICAgICAgICBmaQogICAgICAgICAgICAgICAgICBmaQog
ICAgICAgICAgICAgICAgZmkKICAgICAgICAgICAgICBmaQogICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9hIiAhPSAiWCI7IHRoZW4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBMSUJQVEg9IiR7TElCUFRIfSR7TElCUFRIOisgfSRmb3VuZF9hIgog
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTElCUFRIPSIke0xJQlBUSH0ke0xJQlBUSDorIH0tTCRmb3VuZF9kaXIgLWwkbmFt
ZSIKICAgICAgICAgICAgICBmaQogICAgICAgICAgICBmaQogICAgICAgICAgICAgICAgICAgICAg
ICBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9CiAgICAgICAgICAgIGNhc2UgIiRmb3VuZF9kaXIiIGlu
CiAgICAgICAgICAgICAgKi8kYWNsX2xpYmRpcnN0ZW0gfCAqLyRhY2xfbGliZGlyc3RlbS8pCiAg
ICAgICAgICAgICAgICBiYXNlZGlyPWBlY2hvICJYJGZvdW5kX2RpciIgfCBzZWQgLWUgJ3MsXlgs
LCcgLWUgInMsLyRhY2xfbGliZGlyc3RlbS8iJyokLCwnYAogICAgICAgICAgICAgICAgaWYgdGVz
dCAiJG5hbWUiID0gJ3B0aCc7IHRoZW4KICAgICAgICAgICAgICAgICAgTElCUFRIX1BSRUZJWD0i
JGJhc2VkaXIiCiAgICAgICAgICAgICAgICBmaQogICAgICAgICAgICAgICAgYWRkaXRpb25hbF9p
bmNsdWRlZGlyPSIkYmFzZWRpci9pbmNsdWRlIgogICAgICAgICAgICAgICAgOzsKICAgICAgICAg
ICAgICAqLyRhY2xfbGliZGlyc3RlbTIgfCAqLyRhY2xfbGliZGlyc3RlbTIvKQogICAgICAgICAg
ICAgICAgYmFzZWRpcj1gZWNobyAiWCRmb3VuZF9kaXIiIHwgc2VkIC1lICdzLF5YLCwnIC1lICJz
LC8kYWNsX2xpYmRpcnN0ZW0yLyInKiQsLCdgCiAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkbmFt
ZSIgPSAncHRoJzsgdGhlbgogICAgICAgICAgICAgICAgICBMSUJQVEhfUFJFRklYPSIkYmFzZWRp
ciIKICAgICAgICAgICAgICAgIGZpCiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsX2luY2x1ZGVk
aXI9IiRiYXNlZGlyL2luY2x1ZGUiCiAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICBlc2Fj
CiAgICAgICAgICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9pbmNsdWRlZGlyIiAhPSAiWCI7IHRo
ZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIHRlc3QgIlgkYWRkaXRpb25hbF9pbmNsdWRlZGlyIiAhPSAiWC91c3IvaW5jbHVkZSI7IHRo
ZW4KICAgICAgICAgICAgICAgIGhhdmVpdD0KICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkYWRk
aXRpb25hbF9pbmNsdWRlZGlyIiA9ICJYL3Vzci9sb2NhbC9pbmNsdWRlIjsgdGhlbgogICAgICAg
ICAgICAgICAgICBpZiB0ZXN0IC1uICIkR0NDIjsgdGhlbgogICAgICAgICAgICAgICAgICAgIGNh
c2UgJGhvc3Rfb3MgaW4KICAgICAgICAgICAgICAgICAgICAgIGxpbnV4KiB8IGdudSogfCBrKmJz
ZCotZ251KSBoYXZlaXQ9eWVzOzsKICAgICAgICAgICAgICAgICAgICBlc2FjCiAgICAgICAgICAg
ICAgICAgIGZpCiAgICAgICAgICAgICAgICBmaQogICAgICAgICAgICAgICAgaWYgdGVzdCAteiAi
JGhhdmVpdCI7IHRoZW4KICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJENQUEZMQUdTICRJTkNQ
VEg7IGRvCgogIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKICBwcmVmaXg9IiRhY2xfZmluYWxf
cHJlZml4IgogIGFjbF9zYXZlX2V4ZWNfcHJlZml4PSIkZXhlY19wcmVmaXgiCiAgZXhlY19wcmVm
aXg9IiRhY2xfZmluYWxfZXhlY19wcmVmaXgiCiAgZXZhbCB4PVwiJHhcIgogIGV4ZWNfcHJlZml4
PSIkYWNsX3NhdmVfZXhlY19wcmVmaXgiCiAgcHJlZml4PSIkYWNsX3NhdmVfcHJlZml4IgoKICAg
ICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtSSRhZGRpdGlvbmFsX2luY2x1ZGVk
aXIiOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCiAgICAgICAgICAgICAg
ICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgIGZpCiAgICAgICAgICAgICAgICAgIGRv
bmUKICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KICAgICAgICAg
ICAgICAgICAgICBpZiB0ZXN0IC1kICIkYWRkaXRpb25hbF9pbmNsdWRlZGlyIjsgdGhlbgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOQ1BUSD0iJHtJTkNQVEh9
JHtJTkNQVEg6KyB9LUkkYWRkaXRpb25hbF9pbmNsdWRlZGlyIgogICAgICAgICAgICAgICAgICAg
IGZpCiAgICAgICAgICAgICAgICAgIGZpCiAgICAgICAgICAgICAgICBmaQogICAgICAgICAgICAg
IGZpCiAgICAgICAgICAgIGZpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRm
b3VuZF9sYSI7IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzYXZlX2xpYmRpcj0iJGxpYmRpciIKICAgICAgICAgICAgICBjYXNlICIk
Zm91bmRfbGEiIGluCiAgICAgICAgICAgICAgICAqLyogfCAqXFwqKSAuICIkZm91bmRfbGEiIDs7
CiAgICAgICAgICAgICAgICAqKSAuICIuLyRmb3VuZF9sYSIgOzsKICAgICAgICAgICAgICBlc2Fj
CiAgICAgICAgICAgICAgbGliZGlyPSIkc2F2ZV9saWJkaXIiCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmb3IgZGVwIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCiAgICAgICAgICAgICAgICBj
YXNlICIkZGVwIiBpbgogICAgICAgICAgICAgICAgICAtTCopCiAgICAgICAgICAgICAgICAgICAg
YWRkaXRpb25hbF9saWJkaXI9YGVjaG8gIlgkZGVwIiB8IHNlZCAtZSAncy9eWC1MLy8nYAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRhZGRp
dGlvbmFsX2xpYmRpciIgIT0gIlgvdXNyLyRhY2xfbGliZGlyc3RlbSIgXAogICAgICAgICAgICAg
ICAgICAgICAgICYmIHRlc3QgIlgkYWRkaXRpb25hbF9saWJkaXIiICE9ICJYL3Vzci8kYWNsX2xp
YmRpcnN0ZW0yIjsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQogICAgICAgICAg
ICAgICAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2xpYmRpciIgPSAiWC91c3IvbG9jYWwv
JGFjbF9saWJkaXJzdGVtIiBcCiAgICAgICAgICAgICAgICAgICAgICAgICB8fCB0ZXN0ICJYJGFk
ZGl0aW9uYWxfbGliZGlyIiA9ICJYL3Vzci9sb2NhbC8kYWNsX2xpYmRpcnN0ZW0yIjsgdGhlbgog
ICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkR0NDIjsgdGhlbgogICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxpbnV4KiB8IGdudSogfCBrKmJzZCotZ251KSBoYXZlaXQ9eWVzOzsKICAgICAgICAgICAg
ICAgICAgICAgICAgICBlc2FjCiAgICAgICAgICAgICAgICAgICAgICAgIGZpCiAgICAgICAgICAg
ICAgICAgICAgICBmaQogICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7
IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQogICAgICAgICAgICAgICAgICAg
ICAgICBmb3IgeCBpbiAkTERGTEFHUyAkTElCUFRIOyBkbwoKICBhY2xfc2F2ZV9wcmVmaXg9IiRw
cmVmaXgiCiAgcHJlZml4PSIkYWNsX2ZpbmFsX3ByZWZpeCIKICBhY2xfc2F2ZV9leGVjX3ByZWZp
eD0iJGV4ZWNfcHJlZml4IgogIGV4ZWNfcHJlZml4PSIkYWNsX2ZpbmFsX2V4ZWNfcHJlZml4Igog
IGV2YWwgeD1cIiR4XCIKICBleGVjX3ByZWZpeD0iJGFjbF9zYXZlX2V4ZWNfcHJlZml4IgogIHBy
ZWZpeD0iJGFjbF9zYXZlX3ByZWZpeCIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVz
dCAiWCR4IiA9ICJYLUwkYWRkaXRpb25hbF9saWJkaXIiOyB0aGVuCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBoYXZlaXQ9eWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawog
ICAgICAgICAgICAgICAgICAgICAgICAgIGZpCiAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUK
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkYWRkaXRpb25hbF9saWJkaXIiOyB0aGVu
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TElCUFRIPSIke0xJQlBUSH0ke0xJQlBUSDorIH0tTCRhZGRpdGlvbmFsX2xpYmRpciIKICAgICAg
ICAgICAgICAgICAgICAgICAgICBmaQogICAgICAgICAgICAgICAgICAgICAgICBmaQogICAgICAg
ICAgICAgICAgICAgICAgICBoYXZlaXQ9CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGlu
ICRMREZMQUdTICRMVExJQlBUSDsgZG8KCiAgYWNsX3NhdmVfcHJlZml4PSIkcHJlZml4IgogIHBy
ZWZpeD0iJGFjbF9maW5hbF9wcmVmaXgiCiAgYWNsX3NhdmVfZXhlY19wcmVmaXg9IiRleGVjX3By
ZWZpeCIKICBleGVjX3ByZWZpeD0iJGFjbF9maW5hbF9leGVjX3ByZWZpeCIKICBldmFsIHg9XCIk
eFwiCiAgZXhlY19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3ByZWZpeCIKICBwcmVmaXg9IiRhY2xf
c2F2ZV9wcmVmaXgiCgogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAi
WC1MJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
aGF2ZWl0PXllcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAg
ICAgICAgICAgICAgICBmaQogICAgICAgICAgICAgICAgICAgICAgICBkb25lCiAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgdGVzdCAtZCAiJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExUTElCUFRIPSIk
e0xUTElCUFRIfSR7TFRMSUJQVEg6KyB9LUwkYWRkaXRpb25hbF9saWJkaXIiCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmkKICAgICAgICAgICAgICAgICAgICAgICAgZmkKICAgICAgICAgICAg
ICAgICAgICAgIGZpCiAgICAgICAgICAgICAgICAgICAgZmkKICAgICAgICAgICAgICAgICAgICA7
OwogICAgICAgICAgICAgICAgICAtUiopCiAgICAgICAgICAgICAgICAgICAgZGlyPWBlY2hvICJY
JGRlcCIgfCBzZWQgLWUgJ3MvXlgtUi8vJ2AKICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIk
ZW5hYmxlX3JwYXRoIiAhPSBubzsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9CiAgICAgICAgICAgICAg
ICAgICAgICBmb3IgeCBpbiAkcnBhdGhkaXJzOyBkbwogICAgICAgICAgICAgICAgICAgICAgICBp
ZiB0ZXN0ICJYJHgiID0gIlgkZGlyIjsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgIGhh
dmVpdD15ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAg
ICAgICAgICBmaQogICAgICAgICAgICAgICAgICAgICAgZG9uZQogICAgICAgICAgICAgICAgICAg
ICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgcnBh
dGhkaXJzPSIkcnBhdGhkaXJzICRkaXIiCiAgICAgICAgICAgICAgICAgICAgICBmaQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoYXZlaXQ9CiAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkbHRycGF0aGRpcnM7IGRv
CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRkaXIiOyB0aGVuCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcwogICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgIGZpCiAgICAgICAgICAgICAgICAgICAg
ICBkb25lCiAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgog
ICAgICAgICAgICAgICAgICAgICAgICBsdHJwYXRoZGlycz0iJGx0cnBhdGhkaXJzICRkaXIiCiAg
ICAgICAgICAgICAgICAgICAgICBmaQogICAgICAgICAgICAgICAgICAgIGZpCiAgICAgICAgICAg
ICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgLWwqKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbmFtZXNfbmV4dF9yb3VuZD0iJG5hbWVzX25leHRfcm91bmQgImBl
Y2hvICJYJGRlcCIgfCBzZWQgLWUgJ3MvXlgtbC8vJ2AKICAgICAgICAgICAgICAgICAgICA7Owog
ICAgICAgICAgICAgICAgICAqLmxhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzX25leHRf
cm91bmQ9IiRuYW1lc19uZXh0X3JvdW5kICJgZWNobyAiWCRkZXAiIHwgc2VkIC1lICdzLF5YLiov
LCwnIC1lICdzLF5saWIsLCcgLWUgJ3MsXC5sYSQsLCdgCiAgICAgICAgICAgICAgICAgICAgOzsK
ICAgICAgICAgICAgICAgICAgKikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIExJQlBUSD0iJHtMSUJQVEh9JHtMSUJQVEg6KyB9JGRlcCIKICAgICAgICAgICAgICAgICAg
ICBMVExJQlBUSD0iJHtMVExJQlBUSH0ke0xUTElCUFRIOisgfSRkZXAiCiAgICAgICAgICAgICAg
ICAgICAgOzsKICAgICAgICAgICAgICAgIGVzYWMKICAgICAgICAgICAgICBkb25lCiAgICAgICAg
ICAgIGZpCiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIExJQlBUSD0iJHtMSUJQVEh9JHtMSUJQVEg6KyB9LWwk
bmFtZSIKICAgICAgICAgICAgTFRMSUJQVEg9IiR7TFRMSUJQVEh9JHtMVExJQlBUSDorIH0tbCRu
YW1lIgogICAgICAgICAgZmkKICAgICAgICBmaQogICAgICBmaQogICAgZG9uZQogIGRvbmUKICBp
ZiB0ZXN0ICJYJHJwYXRoZGlycyIgIT0gIlgiOyB0aGVuCiAgICBpZiB0ZXN0IC1uICIkYWNsX2hh
cmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgIGFs
bGRpcnM9CiAgICAgIGZvciBmb3VuZF9kaXIgaW4gJHJwYXRoZGlyczsgZG8KICAgICAgICBhbGxk
aXJzPSIke2FsbGRpcnN9JHthbGxkaXJzOiskYWNsX2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3J9
JGZvdW5kX2RpciIKICAgICAgZG9uZQogICAgICAgICAgICBhY2xfc2F2ZV9saWJkaXI9IiRsaWJk
aXIiCiAgICAgIGxpYmRpcj0iJGFsbGRpcnMiCiAgICAgIGV2YWwgZmxhZz1cIiRhY2xfaGFyZGNv
ZGVfbGliZGlyX2ZsYWdfc3BlY1wiCiAgICAgIGxpYmRpcj0iJGFjbF9zYXZlX2xpYmRpciIKICAg
ICAgTElCUFRIPSIke0xJQlBUSH0ke0xJQlBUSDorIH0kZmxhZyIKICAgIGVsc2UKICAgICAgICAg
ICAgZm9yIGZvdW5kX2RpciBpbiAkcnBhdGhkaXJzOyBkbwogICAgICAgIGFjbF9zYXZlX2xpYmRp
cj0iJGxpYmRpciIKICAgICAgICBsaWJkaXI9IiRmb3VuZF9kaXIiCiAgICAgICAgZXZhbCBmbGFn
PVwiJGFjbF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKICAgICAgICBsaWJkaXI9IiRhY2xf
c2F2ZV9saWJkaXIiCiAgICAgICAgTElCUFRIPSIke0xJQlBUSH0ke0xJQlBUSDorIH0kZmxhZyIK
ICAgICAgZG9uZQogICAgZmkKICBmaQogIGlmIHRlc3QgIlgkbHRycGF0aGRpcnMiICE9ICJYIjsg
dGhlbgogICAgICAgICAgICBmb3IgZm91bmRfZGlyIGluICRsdHJwYXRoZGlyczsgZG8KICAgICAg
TFRMSUJQVEg9IiR7TFRMSUJQVEh9JHtMVExJQlBUSDorIH0tUiRmb3VuZF9kaXIiCiAgICBkb25l
CiAgZmkKCgoKCgoKICAgIGFjX2N2X2xpYnB0aF9saWJzPSIkTElCUFRIIgogICAgYWNfY3ZfbGli
cHRoX2x0bGlicz0iJExUTElCUFRIIgogICAgYWNfY3ZfbGlicHRoX2NwcGZsYWdzPSIkSU5DUFRI
IgogICAgYWNfY3ZfbGlicHRoX3ByZWZpeD0iJExJQlBUSF9QUkVGSVgiCgpmaQp7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYnB0aF9saWJz
IiA+JjUKJGFzX2VjaG8gIiRhY19jdl9saWJwdGhfbGlicyIgPiY2OyB9CiAgTElCUFRIPSIkYWNf
Y3ZfbGlicHRoX2xpYnMiCiAgTFRMSUJQVEg9IiRhY19jdl9saWJwdGhfbHRsaWJzIgogIElOQ1BU
SD0iJGFjX2N2X2xpYnB0aF9jcHBmbGFncyIKICBMSUJQVEhfUFJFRklYPSIkYWNfY3ZfbGlicHRo
X3ByZWZpeCIKCiAgZm9yIGVsZW1lbnQgaW4gJElOQ1BUSDsgZG8KICAgIGhhdmVpdD0KICAgIGZv
ciB4IGluICRDUFBGTEFHUzsgZG8KCiAgYWNsX3NhdmVfcHJlZml4PSIkcHJlZml4IgogIHByZWZp
eD0iJGFjbF9maW5hbF9wcmVmaXgiCiAgYWNsX3NhdmVfZXhlY19wcmVmaXg9IiRleGVjX3ByZWZp
eCIKICBleGVjX3ByZWZpeD0iJGFjbF9maW5hbF9leGVjX3ByZWZpeCIKICBldmFsIHg9XCIkeFwi
CiAgZXhlY19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3ByZWZpeCIKICBwcmVmaXg9IiRhY2xfc2F2
ZV9wcmVmaXgiCgogICAgICBpZiB0ZXN0ICJYJHgiID0gIlgkZWxlbWVudCI7IHRoZW4KICAgICAg
ICBoYXZlaXQ9eWVzCiAgICAgICAgYnJlYWsKICAgICAgZmkKICAgIGRvbmUKICAgIGlmIHRlc3Qg
LXogIiRoYXZlaXQiOyB0aGVuCiAgICAgIENQUEZMQUdTPSIke0NQUEZMQUdTfSR7Q1BQRkxBR1M6
KyB9JGVsZW1lbnQiCiAgICBmaQogIGRvbmUKCgoKCiAgICAgIEhBVkVfTElCUFRIPXllcwoKCgog
ICAgICBnbF9oYXZlX3B0aD0KICAgICAgZ2xfc2F2ZV9MSUJTPSIkTElCUyIKICAgICAgTElCUz0i
JExJQlMgJExJQlBUSCIKICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3Qu
JGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCiNpbmNsdWRlIDxwdGguaD4KaW50Cm1haW4g
KCkKewpwdGhfc2VsZigpOwogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNfZm5fY190cnlf
bGluayAiJExJTkVOTyI7IHRoZW4gOgogIGdsX2hhdmVfcHRoPXllcwpmaQpybSAtZiBjb3JlIGNv
bmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBj
b25mdGVzdC4kYWNfZXh0CiAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMiCiAgICAgIGlmIHRlc3Qg
LW4gIiRnbF9oYXZlX3B0aCI7IHRoZW4KICAgICAgICBnbF90aHJlYWRzX2FwaT1wdGgKICAgICAg
ICBMSUJUSFJFQUQ9IiRMSUJQVEgiCiAgICAgICAgTFRMSUJUSFJFQUQ9IiRMVExJQlBUSCIKICAg
ICAgICBMSUJNVUxUSVRIUkVBRD0iJExJQlRIUkVBRCIKICAgICAgICBMVExJQk1VTFRJVEhSRUFE
PSIkTFRMSUJUSFJFQUQiCgokYXNfZWNobyAiI2RlZmluZSBVU0VfUFRIX1RIUkVBRFMgMSIgPj5j
b25mZGVmcy5oCgogICAgICAgIGlmIHRlc3QgLW4gIiRMSUJNVUxUSVRIUkVBRCIgfHwgdGVzdCAt
biAiJExUTElCTVVMVElUSFJFQUQiOyB0aGVuCiAgICAgICAgICBpZiBjYXNlICIkZ2xfY3ZfaGF2
ZV93ZWFrIiBpbiAqeWVzKSB0cnVlOzsgKikgZmFsc2U7OyBlc2FjOyB0aGVuCgokYXNfZWNobyAi
I2RlZmluZSBVU0VfUFRIX1RIUkVBRFNfV0VBSyAxIiA+PmNvbmZkZWZzLmgKCiAgICAgICAgICAg
IExJQlRIUkVBRD0KICAgICAgICAgICAgTFRMSUJUSFJFQUQ9CiAgICAgICAgICBmaQogICAgICAg
IGZpCiAgICAgIGVsc2UKICAgICAgICBDUFBGTEFHUz0iJGdsX3NhdmVfQ1BQRkxBR1MiCiAgICAg
IGZpCiAgICBmaQogICAgaWYgdGVzdCAteiAiJGdsX2hhdmVfcHRocmVhZCI7IHRoZW4KICAgICAg
Y2FzZSAiJGdsX3VzZV90aHJlYWRzIiBpbgogICAgICAgIHllcyB8IHdpbmRvd3MgfCB3aW4zMikg
IyBUaGUgJ3dpbjMyJyBpcyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KICAgICAgICAgIGlm
IHsgY2FzZSAiJGhvc3Rfb3MiIGluCiAgICAgICAgICAgICAgICAgbWluZ3cqKSB0cnVlOzsKICAg
ICAgICAgICAgICAgICAqKSBmYWxzZTs7CiAgICAgICAgICAgICAgIGVzYWMKICAgICAgICAgICAg
IH07IHRoZW4KICAgICAgICAgICAgZ2xfdGhyZWFkc19hcGk9d2luZG93cwoKJGFzX2VjaG8gIiNk
ZWZpbmUgVVNFX1dJTkRPV1NfVEhSRUFEUyAxIiA+PmNvbmZkZWZzLmgKCiAgICAgICAgICBmaQog
ICAgICAgICAgOzsKICAgICAgZXNhYwogICAgZmkKICBmaQogIHsgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIG11bHRpdGhyZWFkIEFQSSB0byB1c2Ui
ID4mNQokYXNfZWNob19uICJjaGVja2luZyBmb3IgbXVsdGl0aHJlYWQgQVBJIHRvIHVzZS4uLiAi
ID4mNjsgfQogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0
OiAkZ2xfdGhyZWFkc19hcGkiID4mNQokYXNfZWNobyAiJGdsX3RocmVhZHNfYXBpIiA+JjY7IH0K
CgoKCgoKCgoKCgoKCgoKICAgICAgYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAibWVtcmNo
ciIgImFjX2N2X2hhdmVfZGVjbF9tZW1yY2hyIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCmlmIHRl
c3QgIngkYWNfY3ZfaGF2ZV9kZWNsX21lbXJjaHIiID0geHllczsgdGhlbiA6CiAgYWNfaGF2ZV9k
ZWNsPTEKZWxzZQogIGFjX2hhdmVfZGVjbD0wCmZpCgpjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9G
CiNkZWZpbmUgSEFWRV9ERUNMX01FTVJDSFIgJGFjX2hhdmVfZGVjbApfQUNFT0YKCgoKCgoKCgoK
CgoKCgoKCgoKICAgICAgYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAic3RyZHVwIiAiYWNf
Y3ZfaGF2ZV9kZWNsX3N0cmR1cCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgppZiB0ZXN0ICJ4JGFj
X2N2X2hhdmVfZGVjbF9zdHJkdXAiID0geHllczsgdGhlbiA6CiAgYWNfaGF2ZV9kZWNsPTEKZWxz
ZQogIGFjX2hhdmVfZGVjbD0wCmZpCgpjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUg
SEFWRV9ERUNMX1NUUkRVUCAkYWNfaGF2ZV9kZWNsCl9BQ0VPRgoKCgogICAgIFJFUExBQ0VfU1RS
RVJST1JfMD0wCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVj
a2luZyB3aGV0aGVyIHN0cmVycm9yKDApIHN1Y2NlZWRzIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tp
bmcgd2hldGhlciBzdHJlcnJvcigwKSBzdWNjZWVkcy4uLiAiID4mNjsgfQppZiAke2dsX2N2X2Z1
bmNfc3RyZXJyb3JfMF93b3Jrcys6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hl
ZCkgIiA+JjYKZWxzZQogIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoK
ICBjYXNlICIkaG9zdF9vcyIgaW4KICAgICAgICAgICAgICAgICAjIEd1ZXNzIHllcyBvbiBnbGli
YyBzeXN0ZW1zLgogICAgICAgICAqLWdudSopIGdsX2N2X2Z1bmNfc3RyZXJyb3JfMF93b3Jrcz0i
Z3Vlc3NpbmcgeWVzIiA7OwogICAgICAgICAgICAgICAgICMgSWYgd2UgZG9uJ3Qga25vdywgYXNz
dW1lIHRoZSB3b3JzdC4KICAgICAgICAgKikgICAgICBnbF9jdl9mdW5jX3N0cmVycm9yXzBfd29y
a3M9Imd1ZXNzaW5nIG5vIiA7OwogICAgICAgZXNhYwoKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0g
PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVk
ZSA8c3RyaW5nLmg+CiAgICAgICAgICAgI2luY2x1ZGUgPGVycm5vLmg+CgppbnQKbWFpbiAoKQp7
CmludCByZXN1bHQgPSAwOwogICAgICAgICAgIGNoYXIgKnN0cjsKICAgICAgICAgICBlcnJubyA9
IDA7CiAgICAgICAgICAgc3RyID0gc3RyZXJyb3IgKDApOwogICAgICAgICAgIGlmICghKnN0cikg
cmVzdWx0IHw9IDE7CiAgICAgICAgICAgaWYgKGVycm5vKSByZXN1bHQgfD0gMjsKICAgICAgICAg
ICBpZiAoc3Ryc3RyIChzdHIsICJua25vd24iKSB8fCBzdHJzdHIgKHN0ciwgIm5kZWZpbmVkIikp
CiAgICAgICAgICAgICByZXN1bHQgfD0gNDsKICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogIDsK
ICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6
CiAgZ2xfY3ZfZnVuY19zdHJlcnJvcl8wX3dvcmtzPXllcwplbHNlCiAgZ2xfY3ZfZnVuY19zdHJl
cnJvcl8wX3dvcmtzPW5vCmZpCnJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9u
Lm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKICBjb25mdGVzdC4kYWNfb2JqZXh0IGNv
bmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dApmaQoKCmZpCnsgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfZnVuY19zdHJlcnJvcl8wX3dvcmtz
IiA+JjUKJGFzX2VjaG8gIiRnbF9jdl9mdW5jX3N0cmVycm9yXzBfd29ya3MiID4mNjsgfQogIGNh
c2UgIiRnbF9jdl9mdW5jX3N0cmVycm9yXzBfd29ya3MiIGluCiAgICAqeWVzKSA7OwogICAgKikK
ICAgICAgUkVQTEFDRV9TVFJFUlJPUl8wPTEKCiRhc19lY2hvICIjZGVmaW5lIFJFUExBQ0VfU1RS
RVJST1JfMCAxIiA+PmNvbmZkZWZzLmgKCiAgICAgIDs7CiAgZXNhYwoKCiAgIGlmIGZhbHNlOyB0
aGVuCiAgR0xfQ09ORF9MSUJUT09MX1RSVUU9CiAgR0xfQ09ORF9MSUJUT09MX0ZBTFNFPScjJwpl
bHNlCiAgR0xfQ09ORF9MSUJUT09MX1RSVUU9JyMnCiAgR0xfQ09ORF9MSUJUT09MX0ZBTFNFPQpm
aQoKICBnbF9jb25kX2xpYnRvb2w9ZmFsc2UKICBnbF9saWJkZXBzPQogIGdsX2x0bGliZGVwcz0K
ICBnbF9tNF9iYXNlPSdtNCcKCgoKCgoKCgoKICBnbF9zb3VyY2VfYmFzZT0nbGliJwoKCiAgZm9y
IGFjX2Z1bmMgaW4gX0V4aXQKZG8gOgogIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIl9F
eGl0IiAiYWNfY3ZfZnVuY19fRXhpdCIKaWYgdGVzdCAieCRhY19jdl9mdW5jX19FeGl0IiA9IHh5
ZXM7IHRoZW4gOgogIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBIQVZFX19FWElU
IDEKX0FDRU9GCgpmaQpkb25lCgogIGlmIHRlc3QgJGFjX2N2X2Z1bmNfX0V4aXQgPSBubzsgdGhl
bgogICAgSEFWRV9fRVhJVD0wCiAgZmkKCiAgaWYgdGVzdCAkSEFWRV9fRVhJVCA9IDA7IHRoZW4K
CgoKCgoKCgogIGdsX0xJQk9CSlM9IiRnbF9MSUJPQkpTIF9FeGl0LiRhY19vYmpleHQiCgoKICA6
CgogIGZpCgoKCgoKICAgICAgICAgIEdOVUxJQl9fRVhJVD0xCgoKCgoKJGFzX2VjaG8gIiNkZWZp
bmUgR05VTElCX1RFU1RfX0VYSVQgMSIgPj5jb25mZGVmcy5oCgoKCgoKICBpZiB0ZXN0ICRhY19j
dl9mdW5jX2FsbG9jYV93b3JrcyA9IG5vOyB0aGVuCiAgICA6CiAgZmkKCiAgIyBEZWZpbmUgYW4g
YWRkaXRpb25hbCB2YXJpYWJsZSB1c2VkIGluIHRoZSBNYWtlZmlsZSBzdWJzdGl0dXRpb24uCiAg
aWYgdGVzdCAkYWNfY3Zfd29ya2luZ19hbGxvY2FfaCA9IHllczsgdGhlbgogICAgeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYWxsb2NhIGFzIGEg
Y29tcGlsZXIgYnVpbHQtaW4iID4mNQokYXNfZWNob19uICJjaGVja2luZyBmb3IgYWxsb2NhIGFz
IGEgY29tcGlsZXIgYnVpbHQtaW4uLi4gIiA+JjY7IH0KaWYgJHtnbF9jdl9ycGxfYWxsb2NhKzp9
IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCgogICAgICBj
YXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVm
cy5oLiAgKi8KCiNpZiBkZWZpbmVkIF9fR05VQ19fIHx8IGRlZmluZWQgX0FJWCB8fCBkZWZpbmVk
IF9NU0NfVkVSCiAgICAgICAgTmVlZCBvd24gYWxsb2NhCiNlbmRpZgoKX0FDRU9GCmlmIChldmFs
ICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKICAkRUdSRVAgIk5lZWQgb3duIGFs
bG9jYSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKICBnbF9jdl9ycGxfYWxsb2NhPXllcwplbHNl
CiAgZ2xfY3ZfcnBsX2FsbG9jYT1ubwpmaQpybSAtZiBjb25mdGVzdCoKCgpmaQp7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2X3JwbF9hbGxvY2Ei
ID4mNQokYXNfZWNobyAiJGdsX2N2X3JwbF9hbGxvY2EiID4mNjsgfQogICAgaWYgdGVzdCAkZ2xf
Y3ZfcnBsX2FsbG9jYSA9IHllczsgdGhlbgoKJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9BTExPQ0Eg
MSIgPj5jb25mZGVmcy5oCgogICAgICBBTExPQ0FfSD1hbGxvY2EuaAogICAgZWxzZQogICAgICAg
ICAgICAgICAgICBBTExPQ0FfSD0KICAgIGZpCiAgZWxzZQogICAgQUxMT0NBX0g9YWxsb2NhLmgK
ICBmaQoKICAgaWYgdGVzdCAtbiAiJEFMTE9DQV9IIjsgdGhlbgogIEdMX0dFTkVSQVRFX0FMTE9D
QV9IX1RSVUU9CiAgR0xfR0VORVJBVEVfQUxMT0NBX0hfRkFMU0U9JyMnCmVsc2UKICBHTF9HRU5F
UkFURV9BTExPQ0FfSF9UUlVFPScjJwogIEdMX0dFTkVSQVRFX0FMTE9DQV9IX0ZBTFNFPQpmaQoK
CgoKCiAgZm9yIGFjX2Z1bmMgaW4gY2xvc2VkaXIKZG8gOgogIGFjX2ZuX2NfY2hlY2tfZnVuYyAi
JExJTkVOTyIgImNsb3NlZGlyIiAiYWNfY3ZfZnVuY19jbG9zZWRpciIKaWYgdGVzdCAieCRhY19j
dl9mdW5jX2Nsb3NlZGlyIiA9IHh5ZXM7IHRoZW4gOgogIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNF
T0YKI2RlZmluZSBIQVZFX0NMT1NFRElSIDEKX0FDRU9GCgpmaQpkb25lCgogIGlmIHRlc3QgJGFj
X2N2X2Z1bmNfY2xvc2VkaXIgPSBubzsgdGhlbgogICAgSEFWRV9DTE9TRURJUj0wCiAgZmkKCgoK
CiAgOgoKCgoKCiAgaWYgdGVzdCAkYWNfY3ZfZnVuY19mY2hkaXIgPSBubzsgdGhlbgogICAgSEFW
RV9GQ0hESVI9MAogIGZpCgogICAgaWYgdGVzdCAkSEFWRV9GQ0hESVIgPSAwOyB0aGVuCiAgICAg
IGlmIHRlc3QgJEhBVkVfQ0xPU0VESVIgPSAxOyB0aGVuCiAgICAgICAgUkVQTEFDRV9DTE9TRURJ
Uj0xCiAgICAgIGZpCiAgICBmaQoKCiAgaWYgdGVzdCAkSEFWRV9DTE9TRURJUiA9IDAgfHwgdGVz
dCAkUkVQTEFDRV9DTE9TRURJUiA9IDE7IHRoZW4KCgoKCgoKCgogIGdsX0xJQk9CSlM9IiRnbF9M
SUJPQkpTIGNsb3NlZGlyLiRhY19vYmpleHQiCgogIGZpCgoKCgoKICAgICAgICAgIEdOVUxJQl9D
TE9TRURJUj0xCgoKCgoKJGFzX2VjaG8gIiNkZWZpbmUgR05VTElCX1RFU1RfQ0xPU0VESVIgMSIg
Pj5jb25mZGVmcy5oCgoKCgoKCgoKCgoKCiAgOgoKCgoKCgoKCiAgICAgaWYgdGVzdCAkZ2xfY3Zf
aGF2ZV9pbmNsdWRlX25leHQgPSB5ZXM7IHRoZW4KICAgICAgIGdsX2N2X25leHRfZGlyZW50X2g9
JzwnZGlyZW50LmgnPicKICAgICBlbHNlCiAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IGNoZWNraW5nIGFic29sdXRlIG5hbWUgb2YgPGRpcmVudC5oPiIgPiY1
CiRhc19lY2hvX24gImNoZWNraW5nIGFic29sdXRlIG5hbWUgb2YgPGRpcmVudC5oPi4uLiAiID4m
NjsgfQppZiAke2dsX2N2X25leHRfZGlyZW50X2grOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hv
X24gIihjYWNoZWQpICIgPiY2CmVsc2UKCiAgICAgICAgICAgICBpZiB0ZXN0ICRhY19jdl9oZWFk
ZXJfZGlyZW50X2ggPSB5ZXM7IHRoZW4KCgogICAgICAgICAgICAgICBjYXQgY29uZmRlZnMuaCAt
IDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1
ZGUgPGRpcmVudC5oPgoKX0FDRU9GCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIiRob3N0X29zIiBpbgogICAgICAgICAg
ICAgICAgIGFpeCopIGdsX2Fic25hbWVfY3BwPSIkYWNfY3BwIC1DIiA7OwogICAgICAgICAgICAg
ICAgICopICAgIGdsX2Fic25hbWVfY3BwPSIkYWNfY3BwIiA7OwogICAgICAgICAgICAgICBlc2Fj
CgogICAgICAgICAgICAgICBjYXNlICIkaG9zdF9vcyIgaW4KICAgICAgICAgICAgICAgICBtaW5n
dyopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbF9kaXJzZXBfcmVnZXg9J1svXFxdJwogICAgICAgICAg
ICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAqKQogICAgICAgICAgICAgICAgICAgZ2xfZGly
c2VwX3JlZ2V4PSdcLycKICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgIGVzYWMK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfbWFrZV9saXRl
cmFsX3JlZ2V4X3NlZD0ncyxbXSReXFwuKi9bXSxcXCYsZycKCiAgICAgICAgICAgICAgIGdsX2hl
YWRlcl9saXRlcmFsX3JlZ2V4PWBlY2hvICdkaXJlbnQuaCcgXAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCBzZWQgLWUgIiRnbF9tYWtlX2xpdGVyYWxfcmVnZXhfc2Vk
ImAKICAgICAgICAgICAgICAgZ2xfYWJzb2x1dGVfaGVhZGVyX3NlZD0iLyR7Z2xfZGlyc2VwX3Jl
Z2V4fSR7Z2xfaGVhZGVyX2xpdGVyYWxfcmVnZXh9LyInewogICAgICAgICAgICAgICAgICAgcy8u
KiJcKC4qJyIke2dsX2RpcnNlcF9yZWdleH0ke2dsX2hlYWRlcl9saXRlcmFsX3JlZ2V4fSInXCki
LiovXDEvCiAgICAgICAgICAgICAgICAgICBzfF4vW14vXXwvLyZ8CiAgICAgICAgICAgICAgICAg
ICBwCiAgICAgICAgICAgICAgICAgICBxCiAgICAgICAgICAgICAgICAgfScKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfY3ZfbmV4
dF9kaXJlbnRfaD0nIidgKGV2YWwgIiRnbF9hYnNuYW1lX2NwcCBjb25mdGVzdC4kYWNfZXh0Iikg
Mj4mNSB8CiAgICAgICAgICAgICAgICAgICAgICBzZWQgLW4gIiRnbF9hYnNvbHV0ZV9oZWFkZXJf
c2VkImAnIicKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgZ2xfY3ZfbmV4dF9kaXJlbnRf
aD0nPCdkaXJlbnQuaCc+JwogICAgICAgICAgICAgZmkKCgpmaQp7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2X25leHRfZGlyZW50X2giID4mNQok
YXNfZWNobyAiJGdsX2N2X25leHRfZGlyZW50X2giID4mNjsgfQogICAgIGZpCiAgICAgTkVYVF9E
SVJFTlRfSD0kZ2xfY3ZfbmV4dF9kaXJlbnRfaAoKICAgICBpZiB0ZXN0ICRnbF9jdl9oYXZlX2lu
Y2x1ZGVfbmV4dCA9IHllcyB8fCB0ZXN0ICRnbF9jdl9oYXZlX2luY2x1ZGVfbmV4dCA9IGJ1Z2d5
OyB0aGVuCiAgICAgICAjIElOQ0xVREVfTkVYVF9BU19GSVJTVF9ESVJFQ1RJVkU9J2luY2x1ZGVf
bmV4dCcKICAgICAgIGdsX25leHRfYXNfZmlyc3RfZGlyZWN0aXZlPSc8J2RpcmVudC5oJz4nCiAg
ICAgZWxzZQogICAgICAgIyBJTkNMVURFX05FWFRfQVNfRklSU1RfRElSRUNUSVZFPSdpbmNsdWRl
JwogICAgICAgZ2xfbmV4dF9hc19maXJzdF9kaXJlY3RpdmU9JGdsX2N2X25leHRfZGlyZW50X2gK
ICAgICBmaQogICAgIE5FWFRfQVNfRklSU1RfRElSRUNUSVZFX0RJUkVOVF9IPSRnbF9uZXh0X2Fz
X2ZpcnN0X2RpcmVjdGl2ZQoKCgoKICBpZiB0ZXN0ICRhY19jdl9oZWFkZXJfZGlyZW50X2ggPSB5
ZXM7IHRoZW4KICAgIEhBVkVfRElSRU5UX0g9MQogIGVsc2UKICAgIEhBVkVfRElSRU5UX0g9MAog
IGZpCgoKCiAgICBmb3IgZ2xfZnVuYyBpbiBhbHBoYXNvcnQgY2xvc2VkaXIgZGlyZmQgZmRvcGVu
ZGlyIG9wZW5kaXIgcmVhZGRpciByZXdpbmRkaXIgc2NhbmRpcjsgZG8KICAgIGFzX2dsX1N5bWJv
bD1gJGFzX2VjaG8gImdsX2N2X2hhdmVfcmF3X2RlY2xfJGdsX2Z1bmMiIHwgJGFzX3RyX3NoYAog
ICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0
aGVyICRnbF9mdW5jIGlzIGRlY2xhcmVkIHdpdGhvdXQgYSBtYWNybyIgPiY1CiRhc19lY2hvX24g
ImNoZWNraW5nIHdoZXRoZXIgJGdsX2Z1bmMgaXMgZGVjbGFyZWQgd2l0aG91dCBhIG1hY3JvLi4u
ICIgPiY2OyB9CmlmIGV2YWwgXCR7JGFzX2dsX1N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6CiAgJGFz
X2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0Yg
PmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVkZSA8ZGlyZW50
Lmg+CgppbnQKbWFpbiAoKQp7CiN1bmRlZiAkZ2xfZnVuYwogICh2b2lkKSAkZ2xfZnVuYzsKICA7
CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0
aGVuIDoKICBldmFsICIkYXNfZ2xfU3ltYm9sPXllcyIKZWxzZQogIGV2YWwgIiRhc19nbF9TeW1i
b2w9bm8iCmZpCnJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29u
ZnRlc3QuJGFjX2V4dApmaQpldmFsIGFjX3Jlcz1cJCRhc19nbF9TeW1ib2wKCSAgICAgICB7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1
CiRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KICAgIGlmIGV2YWwgdGVzdCBcInhcJCIkYXNfZ2xf
U3ltYm9sIlwiID0geCJ5ZXMiOyB0aGVuIDoKICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNk
ZWZpbmUgYCRhc19lY2hvICJIQVZFX1JBV19ERUNMXyRnbF9mdW5jIiB8ICRhc190cl9jcHBgIDEK
X0FDRU9GCgogICAgICAgICAgICAgICAgICAgICBldmFsIGFjX2N2X2hhdmVfZGVjbF8kZ2xfZnVu
Yz15ZXMKZmkKICAgICAgZG9uZQoKCgoKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgLy8gaXMgZGlzdGluY3QgZnJvbSAvIiA+JjUKJGFz
X2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAvLyBpcyBkaXN0aW5jdCBmcm9tIC8uLi4gIiA+JjY7
IH0KaWYgJHtnbF9jdl9kb3VibGVfc2xhc2hfcm9vdCs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2Vj
aG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQogICBpZiB0ZXN0IHgiJGNyb3NzX2NvbXBpbGluZyIg
PSB4eWVzIDsgdGhlbgogICAgICAgICMgV2hlbiBjcm9zcy1jb21waWxpbmcsIHRoZXJlIGlzIG5v
IHdheSB0byB0ZWxsIHdoZXRoZXIgLy8gaXMgc3BlY2lhbAogICAgICAgICMgc2hvcnQgb2YgYSBs
aXN0IG9mIGhvc3RzLiAgSG93ZXZlciwgdGhlIG9ubHkga25vd24gaG9zdHMgdG8gZGF0ZQogICAg
ICAgICMgdGhhdCBoYXZlIGEgZGlzdGluY3QgLy8gYXJlIEFwb2xsbyBEb21haW5PUyAodG9vIG9s
ZCB0byBwb3J0IHRvKSwKICAgICAgICAjIEN5Z3dpbiwgYW5kIHovT1MuICBJZiBhbnlvbmUga25v
d3Mgb2YgYW5vdGhlciBzeXN0ZW0gZm9yIHdoaWNoIC8vIGhhcwogICAgICAgICMgc3BlY2lhbCBz
ZW1hbnRpY3MgYW5kIGlzIGRpc3RpbmN0IGZyb20gLywgcGxlYXNlIHJlcG9ydCBpdCB0bwogICAg
ICAgICMgPGJ1Zy1nbnVsaWJAZ251Lm9yZz4uCiAgICAgICAgY2FzZSAkaG9zdCBpbgogICAgICAg
ICAgKi1jeWd3aW4gfCBpMzcwLWlibS1vcGVuZWRpdGlvbikKICAgICAgICAgICAgZ2xfY3ZfZG91
YmxlX3NsYXNoX3Jvb3Q9eWVzIDs7CiAgICAgICAgICAqKQogICAgICAgICAgICAjIEJlIG9wdGlt
aXN0aWMgYW5kIGFzc3VtZSB0aGF0IC8gYW5kIC8vIGFyZSB0aGUgc2FtZSB3aGVuIHdlCiAgICAg
ICAgICAgICMgZG9uJ3Qga25vdy4KICAgICAgICAgICAgZ2xfY3ZfZG91YmxlX3NsYXNoX3Jvb3Q9
J3Vua25vd24sIGFzc3VtaW5nIG5vJyA7OwogICAgICAgIGVzYWMKICAgICAgZWxzZQogICAgICAg
IHNldCB4IGBscyAtZGkgLyAvLyAyPi9kZXYvbnVsbGAKICAgICAgICBpZiB0ZXN0ICIkMiIgPSAi
JDQiICYmIHdjIC8vZGV2L251bGwgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgICAgICAgICBnbF9j
dl9kb3VibGVfc2xhc2hfcm9vdD1ubwogICAgICAgIGVsc2UKICAgICAgICAgIGdsX2N2X2RvdWJs
ZV9zbGFzaF9yb290PXllcwogICAgICAgIGZpCiAgICAgIGZpCmZpCnsgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfZG91YmxlX3NsYXNoX3Jvb3Qi
ID4mNQokYXNfZWNobyAiJGdsX2N2X2RvdWJsZV9zbGFzaF9yb290IiA+JjY7IH0KICBpZiB0ZXN0
ICIkZ2xfY3ZfZG91YmxlX3NsYXNoX3Jvb3QiID0geWVzOyB0aGVuCgokYXNfZWNobyAiI2RlZmlu
ZSBET1VCTEVfU0xBU0hfSVNfRElTVElOQ1RfUk9PVCAxIiA+PmNvbmZkZWZzLmgKCiAgZmkKCgoK
ICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBm
b3IgZXJyb3JfYXRfbGluZSIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIGZvciBlcnJvcl9hdF9s
aW5lLi4uICIgPiY2OyB9CmlmICR7YWNfY3ZfbGliX2Vycm9yX2F0X2xpbmUrOn0gZmFsc2U7IHRo
ZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKICBjYXQgY29uZmRlZnMuaCAt
IDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1
ZGUgPGVycm9yLmg+CmludAptYWluICgpCnsKZXJyb3JfYXRfbGluZSAoMCwgMCwgIiIsIDAsICJh
biBlcnJvciBvY2N1cnJlZCIpOwogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNfZm5fY190
cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgogIGFjX2N2X2xpYl9lcnJvcl9hdF9saW5lPXllcwpl
bHNlCiAgYWNfY3ZfbGliX2Vycm9yX2F0X2xpbmU9bm8KZmkKcm0gLWYgY29yZSBjb25mdGVzdC5l
cnIgY29uZnRlc3QuJGFjX29iamV4dCBcCiAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3Qu
JGFjX2V4dApmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs
dDogJGFjX2N2X2xpYl9lcnJvcl9hdF9saW5lIiA+JjUKJGFzX2VjaG8gIiRhY19jdl9saWJfZXJy
b3JfYXRfbGluZSIgPiY2OyB9CgogIGlmIHRlc3QgJGFjX2N2X2xpYl9lcnJvcl9hdF9saW5lID0g
bm87IHRoZW4KCgoKCgoKCgogIGdsX0xJQk9CSlM9IiRnbF9MSUJPQkpTIGVycm9yLiRhY19vYmpl
eHQiCgoKCiAgOgoKICBmaQoKCiAgWEdFVFRFWFRfRVhUUkFfT1BUSU9OUz0iJFhHRVRURVhUX0VY
VFJBX09QVElPTlMgLS1mbGFnPWVycm9yOjM6Yy1mb3JtYXQiCgoKCiAgWEdFVFRFWFRfRVhUUkFf
T1BUSU9OUz0iJFhHRVRURVhUX0VYVFJBX09QVElPTlMgLS1mbGFnPWVycm9yX2F0X2xpbmU6NTpj
LWZvcm1hdCIKCgoKCgoKCiAgOgoKCgoKCiAgaWYgdGVzdCAkYWNfY3ZfZnVuY19mY250bCA9IG5v
OyB0aGVuCgoKCiAgOgoKCgoKCiAgaWYgdGVzdCAkYWNfY3ZfZnVuY19mY250bCA9IG5vOyB0aGVu
CiAgICBIQVZFX0ZDTlRMPTAKICBlbHNlCiAgICBSRVBMQUNFX0ZDTlRMPTEKICBmaQoKICBlbHNl
CiAgICAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl
Y2tpbmcgd2hldGhlciBmY250bCBoYW5kbGVzIEZfRFVQRkQgY29ycmVjdGx5IiA+JjUKJGFzX2Vj
aG9fbiAiY2hlY2tpbmcgd2hldGhlciBmY250bCBoYW5kbGVzIEZfRFVQRkQgY29ycmVjdGx5Li4u
ICIgPiY2OyB9CmlmICR7Z2xfY3ZfZnVuY19mY250bF9mX2R1cGZkX3dvcmtzKzp9IGZhbHNlOyB0
aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCiAgaWYgdGVzdCAiJGNyb3Nz
X2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgogICMgR3Vlc3MgdGhhdCBpdCB3b3JrcyBvbiBnbGli
YyBzeXN0ZW1zCiAgICAgICAgICBjYXNlICRob3N0X29zIGluICMoKAogICAgICAgICAgICAqLWdu
dSopIGdsX2N2X2Z1bmNfZmNudGxfZl9kdXBmZF93b3Jrcz0iZ3Vlc3NpbmcgeWVzIjs7CiAgICAg
ICAgICAgICopICAgICAgZ2xfY3ZfZnVuY19mY250bF9mX2R1cGZkX3dvcmtzPSJndWVzc2luZyBu
byI7OwogICAgICAgICAgZXNhYwplbHNlCiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29u
ZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCgojaW5jbHVkZSA8ZmNudGwuaD4K
I2luY2x1ZGUgPGVycm5vLmg+CgppbnQKbWFpbiAoKQp7CmludCByZXN1bHQgPSAwOwogICAgICBp
ZiAoZmNudGwgKDAsIEZfRFVQRkQsIC0xKSAhPSAtMSkgcmVzdWx0IHw9IDE7CiAgICAgIGlmIChl
cnJubyAhPSBFSU5WQUwpIHJlc3VsdCB8PSAyOwogICAgICByZXR1cm4gcmVzdWx0OwoKICA7CiAg
cmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgog
IGdsX2N2X2Z1bmNfZmNudGxfZl9kdXBmZF93b3Jrcz15ZXMKZWxzZQogIGdsX2N2X2Z1bmNfZmNu
dGxfZl9kdXBmZF93b3Jrcz1ubwpmaQpybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0Liog
Z21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCiAgY29uZnRlc3QuJGFjX29iamV4
dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKZmkKCmZpCnsgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfZnVuY19mY250bF9mX2R1cGZk
X3dvcmtzIiA+JjUKJGFzX2VjaG8gIiRnbF9jdl9mdW5jX2ZjbnRsX2ZfZHVwZmRfd29ya3MiID4m
NjsgfQogICAgY2FzZSAkZ2xfY3ZfZnVuY19mY250bF9mX2R1cGZkX3dvcmtzIGluCiAgICAgICp5
ZXMpIDs7CiAgICAgICopCgoKICA6CgoKCgoKICBpZiB0ZXN0ICRhY19jdl9mdW5jX2ZjbnRsID0g
bm87IHRoZW4KICAgIEhBVkVfRkNOVEw9MAogIGVsc2UKICAgIFJFUExBQ0VfRkNOVEw9MQogIGZp
CgoKJGFzX2VjaG8gIiNkZWZpbmUgRkNOVExfRFVQRkRfQlVHR1kgMSIgPj5jb25mZGVmcy5oCiA7
OwogICAgZXNhYwoKICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGNoZWNraW5nIHdoZXRoZXIgZmNudGwgdW5kZXJzdGFuZHMgRl9EVVBGRF9DTE9FWEVDIiA+
JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBmY250bCB1bmRlcnN0YW5kcyBGX0RVUEZE
X0NMT0VYRUMuLi4gIiA+JjY7IH0KaWYgJHtnbF9jdl9mdW5jX2ZjbnRsX2ZfZHVwZmRfY2xvZXhl
Yys6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIGNh
dCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZz
LmguICAqLwoKI2luY2x1ZGUgPGZjbnRsLmg+CiNpZm5kZWYgRl9EVVBGRF9DTE9FWEVDCmNob2tl
IG1lCiNlbmRpZgoKaW50Cm1haW4gKCkKewoKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFj
X2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKICBjYXQgY29uZmRlZnMuaCAtIDw8
X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCiNpZmRlZiBf
X2xpbnV4X18KLyogVGhlIExpbnV4IGtlcm5lbCBvbmx5IGFkZGVkIEZfRFVQRkRfQ0xPRVhFQyBp
biAyLjYuMjQsIHNvIHdlIGFsd2F5cyByZXBsYWNlCiAgIGl0IHRvIHN1cHBvcnQgdGhlIHNlbWFu
dGljcyBvbiBvbGRlciBrZXJuZWxzIHRoYXQgZmFpbGVkIHdpdGggRUlOVkFMLiAgKi8KY2hva2Ug
bWUKI2VuZGlmCgppbnQKbWFpbiAoKQp7CgogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNf
Zm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgogIGdsX2N2X2Z1bmNfZmNudGxfZl9k
dXBmZF9jbG9leGVjPXllcwplbHNlCiAgZ2xfY3ZfZnVuY19mY250bF9mX2R1cGZkX2Nsb2V4ZWM9
Im5lZWRzIHJ1bnRpbWUgY2hlY2siCmZpCnJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0
LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAplbHNlCiAgZ2xfY3ZfZnVuY19mY250bF9mX2R1
cGZkX2Nsb2V4ZWM9bm8KZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29i
amV4dCBjb25mdGVzdC4kYWNfZXh0CmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfZnVuY19mY250bF9mX2R1cGZkX2Nsb2V4ZWMiID4mNQok
YXNfZWNobyAiJGdsX2N2X2Z1bmNfZmNudGxfZl9kdXBmZF9jbG9leGVjIiA+JjY7IH0KICAgIGlm
IHRlc3QgIiRnbF9jdl9mdW5jX2ZjbnRsX2ZfZHVwZmRfY2xvZXhlYyIgIT0geWVzOyB0aGVuCgoK
CiAgOgoKCgoKCiAgaWYgdGVzdCAkYWNfY3ZfZnVuY19mY250bCA9IG5vOyB0aGVuCiAgICBIQVZF
X0ZDTlRMPTAKICBlbHNlCiAgICBSRVBMQUNFX0ZDTlRMPTEKICBmaQoKICAgICAgICAgIGZpCiAg
ZmkKCgoKCiAgOgoKCgoKCiAgaWYgdGVzdCAkYWNfY3ZfZnVuY19mY2hkaXIgPSBubzsgdGhlbgog
ICAgSEFWRV9GQ0hESVI9MAogIGZpCgogICAgaWYgdGVzdCAkSEFWRV9GQ0hESVIgPSAwOyB0aGVu
CgoKCiAgOgoKCgoKCiAgaWYgdGVzdCAkYWNfY3ZfZnVuY19mY250bCA9IG5vOyB0aGVuCiAgICBI
QVZFX0ZDTlRMPTAKICBlbHNlCiAgICBSRVBMQUNFX0ZDTlRMPTEKICBmaQoKICAgIGZpCgoKICBp
ZiB0ZXN0ICRIQVZFX0ZDTlRMID0gMCB8fCB0ZXN0ICRSRVBMQUNFX0ZDTlRMID0gMTsgdGhlbgoK
CgoKCgoKCiAgZ2xfTElCT0JKUz0iJGdsX0xJQk9CSlMgZmNudGwuJGFjX29iamV4dCIKCiAgZmkK
CgoKCgogICAgICAgICAgR05VTElCX0ZDTlRMPTEKCgoKCgokYXNfZWNobyAiI2RlZmluZSBHTlVM
SUJfVEVTVF9GQ05UTCAxIiA+PmNvbmZkZWZzLmgKCgoKCgoKCgoKCgoKCgogICAgIGlmIHRlc3Qg
JGdsX2N2X2hhdmVfaW5jbHVkZV9uZXh0ID0geWVzOyB0aGVuCiAgICAgICBnbF9jdl9uZXh0X2Zj
bnRsX2g9JzwnZmNudGwuaCc+JwogICAgIGVsc2UKICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgYWJzb2x1dGUgbmFtZSBvZiA8ZmNudGwuaD4i
ID4mNQokYXNfZWNob19uICJjaGVja2luZyBhYnNvbHV0ZSBuYW1lIG9mIDxmY250bC5oPi4uLiAi
ID4mNjsgfQppZiAke2dsX2N2X25leHRfZmNudGxfaCs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2Vj
aG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQoKICAgICAgICAgICAgICAgY2F0IGNvbmZkZWZzLmgg
LSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCiNpbmNs
dWRlIDxmY250bC5oPgoKX0FDRU9GCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIiRob3N0X29zIiBpbgogICAgICAgICAg
ICAgICAgIGFpeCopIGdsX2Fic25hbWVfY3BwPSIkYWNfY3BwIC1DIiA7OwogICAgICAgICAgICAg
ICAgICopICAgIGdsX2Fic25hbWVfY3BwPSIkYWNfY3BwIiA7OwogICAgICAgICAgICAgICBlc2Fj
CgogICAgICAgICAgICAgICBjYXNlICIkaG9zdF9vcyIgaW4KICAgICAgICAgICAgICAgICBtaW5n
dyopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbF9kaXJzZXBfcmVnZXg9J1svXFxdJwogICAgICAgICAg
ICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAqKQogICAgICAgICAgICAgICAgICAgZ2xfZGly
c2VwX3JlZ2V4PSdcLycKICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgIGVzYWMK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfbWFrZV9saXRl
cmFsX3JlZ2V4X3NlZD0ncyxbXSReXFwuKi9bXSxcXCYsZycKCiAgICAgICAgICAgICAgIGdsX2hl
YWRlcl9saXRlcmFsX3JlZ2V4PWBlY2hvICdmY250bC5oJyBcCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IHNlZCAtZSAiJGdsX21ha2VfbGl0ZXJhbF9yZWdleF9zZWQi
YAogICAgICAgICAgICAgICBnbF9hYnNvbHV0ZV9oZWFkZXJfc2VkPSIvJHtnbF9kaXJzZXBfcmVn
ZXh9JHtnbF9oZWFkZXJfbGl0ZXJhbF9yZWdleH0vIid7CiAgICAgICAgICAgICAgICAgICBzLy4q
IlwoLionIiR7Z2xfZGlyc2VwX3JlZ2V4fSR7Z2xfaGVhZGVyX2xpdGVyYWxfcmVnZXh9IidcKSIu
Ki9cMS8KICAgICAgICAgICAgICAgICAgIHN8Xi9bXi9dfC8vJnwKICAgICAgICAgICAgICAgICAg
IHAKICAgICAgICAgICAgICAgICAgIHEKICAgICAgICAgICAgICAgICB9JwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9jdl9uZXh0
X2ZjbnRsX2g9JyInYChldmFsICIkZ2xfYWJzbmFtZV9jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+
JjUgfAogICAgICAgICAgICAgICAgICAgICAgc2VkIC1uICIkZ2xfYWJzb2x1dGVfaGVhZGVyX3Nl
ZCJgJyInCgoKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1
bHQ6ICRnbF9jdl9uZXh0X2ZjbnRsX2giID4mNQokYXNfZWNobyAiJGdsX2N2X25leHRfZmNudGxf
aCIgPiY2OyB9CiAgICAgZmkKICAgICBORVhUX0ZDTlRMX0g9JGdsX2N2X25leHRfZmNudGxfaAoK
ICAgICBpZiB0ZXN0ICRnbF9jdl9oYXZlX2luY2x1ZGVfbmV4dCA9IHllcyB8fCB0ZXN0ICRnbF9j
dl9oYXZlX2luY2x1ZGVfbmV4dCA9IGJ1Z2d5OyB0aGVuCiAgICAgICAjIElOQ0xVREVfTkVYVF9B
U19GSVJTVF9ESVJFQ1RJVkU9J2luY2x1ZGVfbmV4dCcKICAgICAgIGdsX25leHRfYXNfZmlyc3Rf
ZGlyZWN0aXZlPSc8J2ZjbnRsLmgnPicKICAgICBlbHNlCiAgICAgICAjIElOQ0xVREVfTkVYVF9B
U19GSVJTVF9ESVJFQ1RJVkU9J2luY2x1ZGUnCiAgICAgICBnbF9uZXh0X2FzX2ZpcnN0X2RpcmVj
dGl2ZT0kZ2xfY3ZfbmV4dF9mY250bF9oCiAgICAgZmkKICAgICBORVhUX0FTX0ZJUlNUX0RJUkVD
VElWRV9GQ05UTF9IPSRnbF9uZXh0X2FzX2ZpcnN0X2RpcmVjdGl2ZQoKCgoKCgoKCgoKICAgIGZv
ciBnbF9mdW5jIGluIGZjbnRsIG9wZW5hdDsgZG8KICAgIGFzX2dsX1N5bWJvbD1gJGFzX2VjaG8g
ImdsX2N2X2hhdmVfcmF3X2RlY2xfJGdsX2Z1bmMiIHwgJGFzX3RyX3NoYAogICAgeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyICRnbF9mdW5j
IGlzIGRlY2xhcmVkIHdpdGhvdXQgYSBtYWNybyIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIHdo
ZXRoZXIgJGdsX2Z1bmMgaXMgZGVjbGFyZWQgd2l0aG91dCBhIG1hY3JvLi4uICIgPiY2OyB9Cmlm
IGV2YWwgXCR7JGFzX2dsX1N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNh
Y2hlZCkgIiA+JjYKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRh
Y19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVkZSA8ZmNudGwuaD4KCmludAptYWlu
ICgpCnsKI3VuZGVmICRnbF9mdW5jCiAgKHZvaWQpICRnbF9mdW5jOwogIDsKICByZXR1cm4gMDsK
fQpfQUNFT0YKaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgogIGV2YWwg
IiRhc19nbF9TeW1ib2w9eWVzIgplbHNlCiAgZXZhbCAiJGFzX2dsX1N5bWJvbD1ubyIKZmkKcm0g
LWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0
CmZpCmV2YWwgYWNfcmVzPVwkJGFzX2dsX1N5bWJvbAoJICAgICAgIHsgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKJGFzX2VjaG8gIiRh
Y19yZXMiID4mNjsgfQogICAgaWYgZXZhbCB0ZXN0IFwieFwkIiRhc19nbF9TeW1ib2wiXCIgPSB4
InllcyI7IHRoZW4gOgogIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBgJGFzX2Vj
aG8gIkhBVkVfUkFXX0RFQ0xfJGdsX2Z1bmMiIHwgJGFzX3RyX2NwcGAgMQpfQUNFT0YKCiAgICAg
ICAgICAgICAgICAgICAgIGV2YWwgYWNfY3ZfaGF2ZV9kZWNsXyRnbF9mdW5jPXllcwpmaQogICAg
ICBkb25lCgoKCgogIDoKCgoKCgoKCgoKCiAgRkxPQVRfSD0KICBSRVBMQUNFX0ZMT0FUX0xEQkw9
MAogIGNhc2UgIiRob3N0X29zIiBpbgogICAgYWl4KiB8IGJlb3MqIHwgb3BlbmJzZCogfCBtaXJi
c2QqIHwgaXJpeCopCiAgICAgIEZMT0FUX0g9ZmxvYXQuaAogICAgICA7OwogICAgZnJlZWJzZCop
CiAgICAgIGNhc2UgIiRob3N0X2NwdSIgaW4KICAgICAgICBpWzM0NTY3XTg2ICkKICAgICAgICAg
IEZMT0FUX0g9ZmxvYXQuaAogICAgICAgICAgOzsKICAgICAgICB4ODZfNjQgKQogICAgICAgICAg
IyBPbiB4ODZfNjQgc3lzdGVtcywgdGhlIEMgY29tcGlsZXIgbWF5IHN0aWxsIGJlIGdlbmVyYXRp
bmcKICAgICAgICAgICMgMzItYml0IGNvZGUuCiAgICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8
X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2lmIGRlZmlu
ZWQgX19MUDY0X18gfHwgZGVmaW5lZCBfX3g4Nl82NF9fIHx8IGRlZmluZWQgX19hbWQ2NF9fCiAg
ICAgICAgICAgICB5ZXMKICAgICAgICAgICAgICNlbmRpZgpfQUNFT0YKaWYgKGV2YWwgIiRhY19j
cHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAogICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+
JjE7IHRoZW4gOgoKZWxzZQogIEZMT0FUX0g9ZmxvYXQuaApmaQpybSAtZiBjb25mdGVzdCoKCiAg
ICAgICAgICA7OwogICAgICBlc2FjCiAgICAgIDs7CiAgICBsaW51eCopCiAgICAgIGNhc2UgIiRo
b3N0X2NwdSIgaW4KICAgICAgICBwb3dlcnBjKikKICAgICAgICAgIEZMT0FUX0g9ZmxvYXQuaAog
ICAgICAgICAgOzsKICAgICAgZXNhYwogICAgICA7OwogIGVzYWMKICBjYXNlICIkaG9zdF9vcyIg
aW4KICAgIGFpeCogfCBmcmVlYnNkKiB8IGxpbnV4KikKICAgICAgaWYgdGVzdCAtbiAiJEZMT0FU
X0giOyB0aGVuCiAgICAgICAgUkVQTEFDRV9GTE9BVF9MREJMPTEKICAgICAgZmkKICAgICAgOzsK
ICBlc2FjCgogICAgUkVQTEFDRV9JVE9MRD0wCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGNvbnZlcnNpb24gZnJvbSAnaW50JyB0byAn
bG9uZyBkb3VibGUnIHdvcmtzIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBjb252
ZXJzaW9uIGZyb20gJ2ludCcgdG8gJ2xvbmcgZG91YmxlJyB3b3Jrcy4uLiAiID4mNjsgfQppZiAk
e2dsX2N2X2Z1bmNfaXRvbGRfd29ya3MrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihj
YWNoZWQpICIgPiY2CmVsc2UKCiAgICAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVz
OyB0aGVuIDoKICBjYXNlICIkaG9zdCIgaW4KICAgICAgICAgICBzcGFyYyotKi1saW51eCopCiAg
ICAgICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8q
IGVuZCBjb25mZGVmcy5oLiAgKi8KI2lmIGRlZmluZWQgX19MUDY0X18gfHwgZGVmaW5lZCBfX2Fy
Y2g2NF9fCiAgICAgICAgICAgICAgICB5ZXMKICAgICAgICAgICAgICAgICNlbmRpZgpfQUNFT0YK
aWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAogICRFR1JFUCAieWVz
IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgogIGdsX2N2X2Z1bmNfaXRvbGRfd29ya3M9Imd1ZXNz
aW5nIG5vIgplbHNlCiAgZ2xfY3ZfZnVuY19pdG9sZF93b3Jrcz0iZ3Vlc3NpbmcgeWVzIgpmaQpy
bSAtZiBjb25mdGVzdCoKCiAgICAgICAgICAgICA7OwogICAgICAgICAgICopIGdsX2N2X2Z1bmNf
aXRvbGRfd29ya3M9Imd1ZXNzaW5nIHllcyIgOzsKICAgICAgICAgZXNhYwoKZWxzZQogIGNhdCBj
b25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmgu
ICAqLwoKaW50IGkgPSAtMTsKdm9sYXRpbGUgbG9uZyBkb3VibGUgbGQ7CmludCBtYWluICgpCnsK
ICBsZCArPSBpICogMS4wTDsKICBpZiAobGQgPiAwKQogICAgcmV0dXJuIDE7CiAgcmV0dXJuIDA7
Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgogIGdsX2N2X2Z1
bmNfaXRvbGRfd29ya3M9eWVzCmVsc2UKICBnbF9jdl9mdW5jX2l0b2xkX3dvcmtzPW5vCmZpCnJt
IC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3Qk
YWNfZXhlZXh0IFwKICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3Qu
JGFjX2V4dApmaQoKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
cmVzdWx0OiAkZ2xfY3ZfZnVuY19pdG9sZF93b3JrcyIgPiY1CiRhc19lY2hvICIkZ2xfY3ZfZnVu
Y19pdG9sZF93b3JrcyIgPiY2OyB9CiAgY2FzZSAiJGdsX2N2X2Z1bmNfaXRvbGRfd29ya3MiIGlu
CiAgICAqbm8pCiAgICAgIFJFUExBQ0VfSVRPTEQ9MQogICAgICAgICAgICAgICAgICBGTE9BVF9I
PWZsb2F0LmgKICAgICAgOzsKICBlc2FjCgogIGlmIHRlc3QgLW4gIiRGTE9BVF9IIjsgdGhlbgoK
CgoKCgoKCiAgICAgaWYgdGVzdCAkZ2xfY3ZfaGF2ZV9pbmNsdWRlX25leHQgPSB5ZXM7IHRoZW4K
ICAgICAgIGdsX2N2X25leHRfZmxvYXRfaD0nPCdmbG9hdC5oJz4nCiAgICAgZWxzZQogICAgICAg
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBhYnNvbHV0
ZSBuYW1lIG9mIDxmbG9hdC5oPiIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIGFic29sdXRlIG5h
bWUgb2YgPGZsb2F0Lmg+Li4uICIgPiY2OyB9CmlmICR7Z2xfY3ZfbmV4dF9mbG9hdF9oKzp9IGZh
bHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCgogICAgICAgICAg
ICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBj
b25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPGZsb2F0Lmg+CgpfQUNFT0YKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiJGhv
c3Rfb3MiIGluCiAgICAgICAgICAgICAgICAgYWl4KikgZ2xfYWJzbmFtZV9jcHA9IiRhY19jcHAg
LUMiIDs7CiAgICAgICAgICAgICAgICAgKikgICAgZ2xfYWJzbmFtZV9jcHA9IiRhY19jcHAiIDs7
CiAgICAgICAgICAgICAgIGVzYWMKCiAgICAgICAgICAgICAgIGNhc2UgIiRob3N0X29zIiBpbgog
ICAgICAgICAgICAgICAgIG1pbmd3KikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2RpcnNlcF9yZWdl
eD0nWy9cXF0nCiAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICopCiAgICAg
ICAgICAgICAgICAgICBnbF9kaXJzZXBfcmVnZXg9J1wvJwogICAgICAgICAgICAgICAgICAgOzsK
ICAgICAgICAgICAgICAgZXNhYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnbF9tYWtlX2xpdGVyYWxfcmVnZXhfc2VkPSdzLFtdJF5cXC4qL1tdLFxcJixnJwoK
ICAgICAgICAgICAgICAgZ2xfaGVhZGVyX2xpdGVyYWxfcmVnZXg9YGVjaG8gJ2Zsb2F0LmgnIFwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VkIC1lICIkZ2xfbWFr
ZV9saXRlcmFsX3JlZ2V4X3NlZCJgCiAgICAgICAgICAgICAgIGdsX2Fic29sdXRlX2hlYWRlcl9z
ZWQ9Ii8ke2dsX2RpcnNlcF9yZWdleH0ke2dsX2hlYWRlcl9saXRlcmFsX3JlZ2V4fS8iJ3sKICAg
ICAgICAgICAgICAgICAgIHMvLioiXCguKiciJHtnbF9kaXJzZXBfcmVnZXh9JHtnbF9oZWFkZXJf
bGl0ZXJhbF9yZWdleH0iJ1wpIi4qL1wxLwogICAgICAgICAgICAgICAgICAgc3xeL1teL118Ly8m
fAogICAgICAgICAgICAgICAgICAgcAogICAgICAgICAgICAgICAgICAgcQogICAgICAgICAgICAg
ICAgIH0nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdsX2N2X25leHRfZmxvYXRfaD0nIidgKGV2YWwgIiRnbF9hYnNuYW1lX2NwcCBj
b25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CiAgICAgICAgICAgICAgICAgICAgICBzZWQgLW4gIiRn
bF9hYnNvbHV0ZV9oZWFkZXJfc2VkImAnIicKCgpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2X25leHRfZmxvYXRfaCIgPiY1CiRhc19lY2hv
ICIkZ2xfY3ZfbmV4dF9mbG9hdF9oIiA+JjY7IH0KICAgICBmaQogICAgIE5FWFRfRkxPQVRfSD0k
Z2xfY3ZfbmV4dF9mbG9hdF9oCgogICAgIGlmIHRlc3QgJGdsX2N2X2hhdmVfaW5jbHVkZV9uZXh0
ID0geWVzIHx8IHRlc3QgJGdsX2N2X2hhdmVfaW5jbHVkZV9uZXh0ID0gYnVnZ3k7IHRoZW4KICAg
ICAgICMgSU5DTFVERV9ORVhUX0FTX0ZJUlNUX0RJUkVDVElWRT0naW5jbHVkZV9uZXh0JwogICAg
ICAgZ2xfbmV4dF9hc19maXJzdF9kaXJlY3RpdmU9JzwnZmxvYXQuaCc+JwogICAgIGVsc2UKICAg
ICAgICMgSU5DTFVERV9ORVhUX0FTX0ZJUlNUX0RJUkVDVElWRT0naW5jbHVkZScKICAgICAgIGds
X25leHRfYXNfZmlyc3RfZGlyZWN0aXZlPSRnbF9jdl9uZXh0X2Zsb2F0X2gKICAgICBmaQogICAg
IE5FWFRfQVNfRklSU1RfRElSRUNUSVZFX0ZMT0FUX0g9JGdsX25leHRfYXNfZmlyc3RfZGlyZWN0
aXZlCgoKCgogIGZpCgogICBpZiB0ZXN0IC1uICIkRkxPQVRfSCI7IHRoZW4KICBHTF9HRU5FUkFU
RV9GTE9BVF9IX1RSVUU9CiAgR0xfR0VORVJBVEVfRkxPQVRfSF9GQUxTRT0nIycKZWxzZQogIEdM
X0dFTkVSQVRFX0ZMT0FUX0hfVFJVRT0nIycKICBHTF9HRU5FUkFURV9GTE9BVF9IX0ZBTFNFPQpm
aQoKCgogIGlmIHRlc3QgJFJFUExBQ0VfRkxPQVRfTERCTCA9IDE7IHRoZW4KCgoKCgoKCgogIGds
X0xJQk9CSlM9IiRnbF9MSUJPQkpTIGZsb2F0LiRhY19vYmpleHQiCgogIGZpCiAgaWYgdGVzdCAk
UkVQTEFDRV9JVE9MRCA9IDE7IHRoZW4KCgoKCgoKCgogIGdsX0xJQk9CSlM9IiRnbF9MSUJPQkpT
IGl0b2xkLiRhY19vYmpleHQiCgogIGZpCgoKCgogIGlmIHRlc3QgJEhBVkVfTVNWQ19JTlZBTElE
X1BBUkFNRVRFUl9IQU5ETEVSID0gMTsgdGhlbgogICAgUkVQTEFDRV9GU1RBVD0xCiAgZmkKCgog
IGlmIHRlc3QgJFdJTkRPV1NfNjRfQklUX1NUX1NJWkUgPSAxOyB0aGVuCiAgICBSRVBMQUNFX0ZT
VEFUPTEKICBmaQoKCgoKCiAgOgoKCgoKCiAgaWYgdGVzdCAkYWNfY3ZfZnVuY19mY2hkaXIgPSBu
bzsgdGhlbgogICAgSEFWRV9GQ0hESVI9MAogIGZpCgogICAgaWYgdGVzdCAkSEFWRV9GQ0hESVIg
PSAwOyB0aGVuCiAgICAgIGNhc2UgIiRnbF9jdl9mdW5jX29wZW5fZGlyZWN0b3J5X3dvcmtzIiBp
bgogICAgICAgICp5ZXMpIDs7CiAgICAgICAgKikKICAgICAgICAgIFJFUExBQ0VfRlNUQVQ9MQog
ICAgICAgICAgOzsKICAgICAgZXNhYwogICAgZmkKCgogIGlmIHRlc3QgJFJFUExBQ0VfRlNUQVQg
PSAxOyB0aGVuCgoKCgoKCgoKICBnbF9MSUJPQkpTPSIkZ2xfTElCT0JKUyBmc3RhdC4kYWNfb2Jq
ZXh0IgoKICAgIDoKICBmaQoKCgoKCiAgICAgICAgICBHTlVMSUJfRlNUQVQ9MQoKCgoKCiRhc19l
Y2hvICIjZGVmaW5lIEdOVUxJQl9URVNUX0ZTVEFUIDEiID4+Y29uZmRlZnMuaAoKCgoKCgoKCiAg
Z2xfYWJvcnRfYnVnPW5vCiAgY2FzZSAiJGhvc3Rfb3MiIGluCiAgICBtaW5ndyopCiAgICAgIGds
X2N2X2Z1bmNfZ2V0Y3dkX3BhdGhfbWF4PXllcwogICAgICA7OwogICAgKikKCgogIDoKCgoKCgoK
CiAgOgoKCgoKCgogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl
Y2tpbmcgd2hldGhlciBnZXRjd2QgaGFuZGxlcyBsb25nIGZpbGUgbmFtZXMgcHJvcGVybHkiID4m
NQokYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIGdldGN3ZCBoYW5kbGVzIGxvbmcgZmlsZSBu
YW1lcyBwcm9wZXJseS4uLiAiID4mNjsgfQppZiAke2dsX2N2X2Z1bmNfZ2V0Y3dkX3BhdGhfbWF4
Kzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCiAgIyBB
cnJhbmdlIGZvciBkZWxldGlvbiBvZiB0aGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSB0aGlzIHRlc3Qg
Y3JlYXRlcy4KICAgICBhY19jbGVhbl9maWxlcz0iJGFjX2NsZWFuX2ZpbGVzIGNvbmZkaXIzIgog
ICAgICAgICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgogIGNhc2Ug
IiRob3N0X29zIiBpbgogICAgICAgYWl4KikgZ2xfY3ZfZnVuY19nZXRjd2RfcGF0aF9tYXg9J25v
LCBpdCBoYXMgdGhlIEFJWCBidWcnOzsKICAgICAgICopIGdsX2N2X2Z1bmNfZ2V0Y3dkX3BhdGhf
bWF4PW5vOzsKICAgICBlc2FjCmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25m
dGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCiNpbmNsdWRlIDxlcnJuby5oPgoj
aW5jbHVkZSA8c3RkbGliLmg+CiNpZiBIQVZFX1VOSVNURF9ICiMgaW5jbHVkZSA8dW5pc3RkLmg+
CiNlbHNlCiMgaW5jbHVkZSA8ZGlyZWN0Lmg+CiNlbmRpZgojaW5jbHVkZSA8c3RyaW5nLmg+CiNp
bmNsdWRlIDxsaW1pdHMuaD4KI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiNpbmNsdWRlIDxzeXMvdHlw
ZXMuaD4KI2luY2x1ZGUgPGZjbnRsLmg+CgoKLyogQXJyYW5nZSB0byBkZWZpbmUgUEFUSF9NQVgs
IGxpa2UgInBhdGhtYXguaCIgZG9lcy4gKi8KI2lmIEhBVkVfVU5JU1REX0gKIyBpbmNsdWRlIDx1
bmlzdGQuaD4KI2VuZGlmCiNpbmNsdWRlIDxsaW1pdHMuaD4KI2lmIGRlZmluZWQgSEFWRV9TWVNf
UEFSQU1fSCAmJiAhZGVmaW5lZCBQQVRIX01BWCAmJiAhZGVmaW5lZCBNQVhQQVRITEVOCiMgaW5j
bHVkZSA8c3lzL3BhcmFtLmg+CiNlbmRpZgojaWYgIWRlZmluZWQgUEFUSF9NQVggJiYgZGVmaW5l
ZCBNQVhQQVRITEVOCiMgZGVmaW5lIFBBVEhfTUFYIE1BWFBBVEhMRU4KI2VuZGlmCiNpZmRlZiBf
X2hwdXgKIyB1bmRlZiBQQVRIX01BWAojIGRlZmluZSBQQVRIX01BWCAxMDI0CiNlbmRpZgojaWYg
KGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19XSU4zMl9fKSAmJiAhIGRlZmluZWQgX19DWUdX
SU5fXwojIHVuZGVmIFBBVEhfTUFYCiMgZGVmaW5lIFBBVEhfTUFYIDI2MAojZW5kaWYKCgojaWZu
ZGVmIEFUX0ZEQ1dECiMgZGVmaW5lIEFUX0ZEQ1dEIDAKI2VuZGlmCiNpZmRlZiBFTkFNRVRPT0xP
TkcKIyBkZWZpbmUgaXNfRU5BTUVUT09MT05HKHgpICgoeCkgPT0gRU5BTUVUT09MT05HKQojZWxz
ZQojIGRlZmluZSBpc19FTkFNRVRPT0xPTkcoeCkgMAojZW5kaWYKCi8qIFVzZSB0aGUgZ2V0Y3dk
IGZ1bmN0aW9uLCBub3QgYW55IG1hY3JvLiAgKi8KI3VuZGVmIGdldGN3ZAoKLyogRG9uJ3QgZ2V0
IGxpbmsgZXJyb3JzIGJlY2F1c2UgbWtkaXIgaXMgcmVkZWZpbmVkIHRvIHJwbF9ta2Rpci4gICov
CiN1bmRlZiBta2RpcgoKI2lmbmRlZiBTX0lSV1hVCiMgZGVmaW5lIFNfSVJXWFUgMDcwMAojZW5k
aWYKCi8qIFRoZSBsZW5ndGggb2YgdGhpcyBuYW1lIG11c3QgYmUgOC4gICovCiNkZWZpbmUgRElS
X05BTUUgImNvbmZkaXIzIgojZGVmaW5lIERJUl9OQU1FX0xFTiA4CiNkZWZpbmUgRElSX05BTUVf
U0laRSAoRElSX05BTUVfTEVOICsgMSkKCi8qIFRoZSBsZW5ndGggb2YgIi4uLyIuICAqLwojZGVm
aW5lIERPVERPVFNMQVNIX0xFTiAzCgovKiBMZWZ0b3ZlciBieXRlcyBpbiB0aGUgYnVmZmVyLCB0
byB3b3JrIGFyb3VuZCBsaWJyYXJ5IG9yIE9TIGJ1Z3MuICAqLwojZGVmaW5lIEJVRl9TTE9QIDIw
CgppbnQKbWFpbiAoKQp7CiNpZm5kZWYgUEFUSF9NQVgKICAvKiBUaGUgSHVyZCBkb2Vzbid0IGRl
ZmluZSB0aGlzLCBzbyBnZXRjd2QgY2FuJ3QgZXhoaWJpdCB0aGUgYnVnIC0tCiAgICAgYXQgbGVh
c3Qgbm90IG9uIGEgbG9jYWwgZmlsZSBzeXN0ZW0uICBBbmQgaWYgd2Ugd2VyZSB0byBzdGFydCB3
b3JyeWluZwogICAgIGFib3V0IHJlbW90ZSBmaWxlIHN5c3RlbXMsIHdlJ2QgaGF2ZSB0byBlbmFi
bGUgdGhlIHdyYXBwZXIgZnVuY3Rpb24KICAgICBhbGwgb2YgdGhlIHRpbWUsIGp1c3QgdG8gYmUg
c2FmZS4gIFRoYXQncyBub3Qgd29ydGggdGhlIGNvc3QuICAqLwogIGV4aXQgKDApOwojZWxpZiAo
KElOVF9NQVggLyAoRElSX05BTUVfU0laRSAvIERPVERPVFNMQVNIX0xFTiArIDEpIFwKICAgICAg
ICAtIERJUl9OQU1FX1NJWkUgLSBCVUZfU0xPUCkgXAogICAgICAgPD0gUEFUSF9NQVgpCiAgLyog
RklYTUU6IEFzc3VtaW5nIHRoZXJlJ3MgYSBzeXN0ZW0gZm9yIHdoaWNoIHRoaXMgaXMgdHJ1ZSwK
ICAgICB0aGlzIHNob3VsZCBiZSBkb25lIGluIGEgY29tcGlsZSB0ZXN0LiAgKi8KICBleGl0ICgw
KTsKI2Vsc2UKICBjaGFyIGJ1ZltQQVRIX01BWCAqIChESVJfTkFNRV9TSVpFIC8gRE9URE9UU0xB
U0hfTEVOICsgMSkKICAgICAgICAgICArIERJUl9OQU1FX1NJWkUgKyBCVUZfU0xPUF07CiAgY2hh
ciAqY3dkID0gZ2V0Y3dkIChidWYsIFBBVEhfTUFYKTsKICBzaXplX3QgaW5pdGlhbF9jd2RfbGVu
OwogIHNpemVfdCBjd2RfbGVuOwogIGludCBmYWlsID0gMDsKICBzaXplX3Qgbl9jaGRpcnMgPSAw
OwoKICBpZiAoY3dkID09IE5VTEwpCiAgICBleGl0ICgxMCk7CgogIGN3ZF9sZW4gPSBpbml0aWFs
X2N3ZF9sZW4gPSBzdHJsZW4gKGN3ZCk7CgogIHdoaWxlICgxKQogICAgewogICAgICBzaXplX3Qg
ZG90ZG90X21heCA9IFBBVEhfTUFYICogKERJUl9OQU1FX1NJWkUgLyBET1RET1RTTEFTSF9MRU4p
OwogICAgICBjaGFyICpjID0gTlVMTDsKCiAgICAgIGN3ZF9sZW4gKz0gRElSX05BTUVfU0laRTsK
ICAgICAgLyogSWYgbWtkaXIgb3IgY2hkaXIgZmFpbHMsIGl0IGNvdWxkIGJlIHRoYXQgdGhpcyBz
eXN0ZW0gY2Fubm90IGNyZWF0ZQogICAgICAgICBhbnkgZmlsZSB3aXRoIGFuIGFic29sdXRlIG5h
bWUgbG9uZ2VyIHRoYW4gUEFUSF9NQVgsIHN1Y2ggYXMgY3lnd2luLgogICAgICAgICBJZiBzbywg
bGVhdmUgZmFpbCBhcyAwLCBiZWNhdXNlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGNh
bid0CiAgICAgICAgIGJlIHRvbyBsb25nIGZvciBnZXRjd2QgaWYgaXQgY2FuJ3QgZXZlbiBiZSBj
cmVhdGVkLiAgRm9yIG90aGVyCiAgICAgICAgIGVycm9ycywgYmUgcGVzc2ltaXN0aWMgYW5kIGNv
bnNpZGVyIHRoYXQgYXMgYSBmYWlsdXJlLCB0b28uICAqLwogICAgICBpZiAobWtkaXIgKERJUl9O
QU1FLCBTX0lSV1hVKSA8IDAgfHwgY2hkaXIgKERJUl9OQU1FKSA8IDApCiAgICAgICAgewogICAg
ICAgICAgaWYgKCEgKGVycm5vID09IEVSQU5HRSB8fCBpc19FTkFNRVRPT0xPTkcgKGVycm5vKSkp
CiAgICAgICAgICAgIGZhaWwgPSAyMDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAg
IGlmIChQQVRIX01BWCA8PSBjd2RfbGVuICYmIGN3ZF9sZW4gPCBQQVRIX01BWCArIERJUl9OQU1F
X1NJWkUpCiAgICAgICAgewogICAgICAgICAgYyA9IGdldGN3ZCAoYnVmLCBQQVRIX01BWCk7CiAg
ICAgICAgICBpZiAoIWMgJiYgZXJybm8gPT0gRU5PRU5UKQogICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgZmFpbCA9IDExOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAg
ICAgICBpZiAoYykKICAgICAgICAgICAgewogICAgICAgICAgICAgIGZhaWwgPSAzMTsKICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgaWYgKCEgKGVycm5vID09IEVS
QU5HRSB8fCBpc19FTkFNRVRPT0xPTkcgKGVycm5vKSkpCiAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICBmYWlsID0gMjE7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAg
ICB9CgogICAgICBpZiAoZG90ZG90X21heCA8PSBjd2RfbGVuIC0gaW5pdGlhbF9jd2RfbGVuKQog
ICAgICAgIHsKICAgICAgICAgIGlmIChkb3Rkb3RfbWF4ICsgRElSX05BTUVfU0laRSA8IGN3ZF9s
ZW4gLSBpbml0aWFsX2N3ZF9sZW4pCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgYyA9IGdl
dGN3ZCAoYnVmLCBjd2RfbGVuICsgMSk7CiAgICAgICAgICBpZiAoIWMpCiAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICBpZiAoISAoZXJybm8gPT0gRVJBTkdFIHx8IGVycm5vID09IEVOT0VOVAog
ICAgICAgICAgICAgICAgICAgICB8fCBpc19FTkFNRVRPT0xPTkcgKGVycm5vKSkpCiAgICAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgIGZhaWwgPSAyMjsKICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKEFUX0ZEQ1dEIHx8IGVy
cm5vID09IEVSQU5HRSB8fCBlcnJubyA9PSBFTk9FTlQpCiAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgIGZhaWwgPSAxMjsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICBpZiAoYyAmJiBzdHJsZW4g
KGMpICE9IGN3ZF9sZW4pCiAgICAgICAgewogICAgICAgICAgZmFpbCA9IDIzOwogICAgICAgICAg
YnJlYWs7CiAgICAgICAgfQogICAgICArK25fY2hkaXJzOwogICAgfQoKICAvKiBMZWF2aW5nIGJl
aGluZCBzdWNoIGEgZGVlcCBkaXJlY3RvcnkgaXMgbm90IHBvbGl0ZS4KICAgICBTbyBjbGVhbiB1
cCBoZXJlLCByaWdodCBhd2F5LCBldmVuIHRob3VnaCB0aGUgZHJpdmluZwogICAgIHNoZWxsIHNj
cmlwdCB3b3VsZCBhbHNvIGNsZWFuIHVwLiAgKi8KICB7CiAgICBzaXplX3QgaTsKCiAgICAvKiBU
cnkgcm1kaXIgZmlyc3QsIGluIGNhc2UgdGhlIGNoZGlyIGZhaWxlZC4gICovCiAgICBybWRpciAo
RElSX05BTUUpOwogICAgZm9yIChpID0gMDsgaSA8PSBuX2NoZGlyczsgaSsrKQogICAgICB7CiAg
ICAgICAgaWYgKGNoZGlyICgiLi4iKSA8IDApCiAgICAgICAgICBicmVhazsKICAgICAgICBpZiAo
cm1kaXIgKERJUl9OQU1FKSAhPSAwKQogICAgICAgICAgYnJlYWs7CiAgICAgIH0KICB9CgogIGV4
aXQgKGZhaWwpOwojZW5kaWYKfQoKX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7
IHRoZW4gOgogIGdsX2N2X2Z1bmNfZ2V0Y3dkX3BhdGhfbWF4PXllcwplbHNlCiAgY2FzZSAkPyBp
bgogICAgIDEwfDExfDEyKSBnbF9jdl9mdW5jX2dldGN3ZF9wYXRoX21heD0nbm8sIGJ1dCBpdCBp
cyBwYXJ0bHkgd29ya2luZyc7OwogICAgIDMxKSBnbF9jdl9mdW5jX2dldGN3ZF9wYXRoX21heD0n
bm8sIGl0IGhhcyB0aGUgQUlYIGJ1Zyc7OwogICAgICopIGdsX2N2X2Z1bmNfZ2V0Y3dkX3BhdGhf
bWF4PW5vOzsKICAgICBlc2FjCmZpCnJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBn
bW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKICBjb25mdGVzdC4kYWNfb2JqZXh0
IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dApmaQoKCmZpCnsgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfZnVuY19nZXRjd2RfcGF0aF9t
YXgiID4mNQokYXNfZWNobyAiJGdsX2N2X2Z1bmNfZ2V0Y3dkX3BhdGhfbWF4IiA+JjY7IH0KCiAg
ICAgIGNhc2UgIiRnbF9jdl9mdW5jX2dldGN3ZF9udWxsIiBpbgogICAgICAgICp5ZXMpCgoKICA6
CgoKCgoKCiAgOgoKCgoKCgogIGZvciBhY19mdW5jIGluIGdldHBhZ2VzaXplCmRvIDoKICBhY19m
bl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJnZXRwYWdlc2l6ZSIgImFjX2N2X2Z1bmNfZ2V0cGFn
ZXNpemUiCmlmIHRlc3QgIngkYWNfY3ZfZnVuY19nZXRwYWdlc2l6ZSIgPSB4eWVzOyB0aGVuIDoK
ICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgSEFWRV9HRVRQQUdFU0laRSAxCl9B
Q0VPRgoKZmkKZG9uZQoKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IGNoZWNraW5nIHdoZXRoZXIgZ2V0Y3dkIGFib3J0cyB3aGVuIDRrIDwgY3dkX2xlbmd0aCA8IDE2
ayIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgZ2V0Y3dkIGFib3J0cyB3aGVuIDRr
IDwgY3dkX2xlbmd0aCA8IDE2ay4uLiAiID4mNjsgfQppZiAke2dsX2N2X2Z1bmNfZ2V0Y3dkX2Fi
b3J0X2J1Zys6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxz
ZQogICMgUmVtb3ZlIGFueSByZW1uYW50cyBvZiBhIHByZXZpb3VzIHRlc3QuCiAgICAgcm0gLXJm
IGNvbmZkaXItMTRCLS0tCiAgICAgIyBBcnJhbmdlIGZvciBkZWxldGlvbiBvZiB0aGUgdGVtcG9y
YXJ5IGRpcmVjdG9yeSB0aGlzIHRlc3QgY3JlYXRlcy4KICAgICBhY19jbGVhbl9maWxlcz0iJGFj
X2NsZWFuX2ZpbGVzIGNvbmZkaXItMTRCLS0tIgogICAgICAgICAgaWYgdGVzdCAiJGNyb3NzX2Nv
bXBpbGluZyIgPSB5ZXM7IHRoZW4gOgogIGdsX2N2X2Z1bmNfZ2V0Y3dkX2Fib3J0X2J1Zz15ZXMK
ZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5k
IGNvbmZkZWZzLmguICAqLwoKI2luY2x1ZGUgPHN0ZGxpYi5oPgojaWYgSEFWRV9VTklTVERfSAoj
IGluY2x1ZGUgPHVuaXN0ZC5oPgojZWxzZSAvKiBvbiBXaW5kb3dzIHdpdGggTVNWQyAqLwojIGlu
Y2x1ZGUgPGRpcmVjdC5oPgojZW5kaWYKI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8c3lz
L3N0YXQuaD4KCgovKiBBcnJhbmdlIHRvIGRlZmluZSBQQVRIX01BWCwgbGlrZSAicGF0aG1heC5o
IiBkb2VzLiAqLwojaWYgSEFWRV9VTklTVERfSAojIGluY2x1ZGUgPHVuaXN0ZC5oPgojZW5kaWYK
I2luY2x1ZGUgPGxpbWl0cy5oPgojaWYgZGVmaW5lZCBIQVZFX1NZU19QQVJBTV9IICYmICFkZWZp
bmVkIFBBVEhfTUFYICYmICFkZWZpbmVkIE1BWFBBVEhMRU4KIyBpbmNsdWRlIDxzeXMvcGFyYW0u
aD4KI2VuZGlmCiNpZiAhZGVmaW5lZCBQQVRIX01BWCAmJiBkZWZpbmVkIE1BWFBBVEhMRU4KIyBk
ZWZpbmUgUEFUSF9NQVggTUFYUEFUSExFTgojZW5kaWYKI2lmZGVmIF9faHB1eAojIHVuZGVmIFBB
VEhfTUFYCiMgZGVmaW5lIFBBVEhfTUFYIDEwMjQKI2VuZGlmCiNpZiAoZGVmaW5lZCBfV0lOMzIg
fHwgZGVmaW5lZCBfX1dJTjMyX18pICYmICEgZGVmaW5lZCBfX0NZR1dJTl9fCiMgdW5kZWYgUEFU
SF9NQVgKIyBkZWZpbmUgUEFUSF9NQVggMjYwCiNlbmRpZgoKCi8qIERvbid0IGdldCBsaW5rIGVy
cm9ycyBiZWNhdXNlIG1rZGlyIGlzIHJlZGVmaW5lZCB0byBycGxfbWtkaXIuICAqLwojdW5kZWYg
bWtkaXIKCiNpZm5kZWYgU19JUldYVQojIGRlZmluZSBTX0lSV1hVIDA3MDAKI2VuZGlmCgovKiBG
SVhNRTogc2tpcCB0aGUgcnVuLXRlc3QgYWx0b2dldGhlciBvbiBzeXN0ZW1zIHdpdGhvdXQgZ2V0
cGFnZXNpemUuICAqLwojaWYgISBIQVZFX0dFVFBBR0VTSVpFCiMgZGVmaW5lIGdldHBhZ2VzaXpl
KCkgMAojZW5kaWYKCi8qIFRoaXMgc2l6ZSBpcyBjaG9zZW4gdG8gYmUgbGFyZ2VyIHRoYW4gUEFU
SF9NQVggKDRrKSwgeWV0IHNtYWxsZXIgdGhhbgogICB0aGUgMTZrQiBwYWdlc2l6ZSBvbiBpYTY0
IGxpbnV4LiAgVGhvc2UgY29uZGl0aW9ucyBtYWtlIHRoZSBjb2RlIGJlbG93CiAgIHRyaWdnZXIg
YSBidWcgaW4gZ2xpYmMncyBnZXRjd2QgaW1wbGVtZW50YXRpb24gYmVmb3JlIDIuNC45MC0xMC4g
ICovCiNkZWZpbmUgVEFSR0VUX0xFTiAoNSAqIDEwMjQpCgppbnQKbWFpbiAoKQp7CiAgY2hhciAq
Y3dkOwogIHNpemVfdCBpbml0aWFsX2N3ZF9sZW47CiAgaW50IGZhaWwgPSAwOwoKICAvKiBUaGUg
YnVnIGlzIHRyaWdnZXJlZCB3aGVuIFBBVEhfTUFYIDwgZ2V0cGFnZXNpemUgKCksIHNvIHNraXAK
ICAgICB0aGlzIHJlbGF0aXZlbHkgZXhwZW5zaXZlIGFuZCBpbnZhc2l2ZSB0ZXN0IGlmIHRoYXQn
cyBub3QgdHJ1ZS4gICovCiNpZmRlZiBQQVRIX01BWAogIGludCBidWdfcG9zc2libGUgPSBQQVRI
X01BWCA8IGdldHBhZ2VzaXplICgpOwojZWxzZQogIGludCBidWdfcG9zc2libGUgPSAwOwojZW5k
aWYKICBpZiAoISBidWdfcG9zc2libGUpCiAgICByZXR1cm4gMDsKCiAgY3dkID0gZ2V0Y3dkIChO
VUxMLCAwKTsKICBpZiAoY3dkID09IE5VTEwpCiAgICByZXR1cm4gMjsKCiAgaW5pdGlhbF9jd2Rf
bGVuID0gc3RybGVuIChjd2QpOwogIGZyZWUgKGN3ZCk7CgogIGlmICgxKQogICAgewogICAgICBz
dGF0aWMgY2hhciBjb25zdCBkaXJfbmFtZVtdID0gImNvbmZkaXItMTRCLS0tIjsKICAgICAgc2l6
ZV90IGRlc2lyZWRfZGVwdGggPSAoKFRBUkdFVF9MRU4gLSAxIC0gaW5pdGlhbF9jd2RfbGVuKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIHNpemVvZiBkaXJfbmFtZSk7CiAgICAgIHNp
emVfdCBkOwogICAgICBmb3IgKGQgPSAwOyBkIDwgZGVzaXJlZF9kZXB0aDsgZCsrKQogICAgICAg
IHsKICAgICAgICAgIGlmIChta2RpciAoZGlyX25hbWUsIFNfSVJXWFUpIDwgMCB8fCBjaGRpciAo
ZGlyX25hbWUpIDwgMCkKICAgICAgICAgICAgewogICAgICAgICAgICAgIGlmICghIChlcnJubyA9
PSBFUkFOR0UgfHwgZXJybm8gPT0gRU5BTUVUT09MT05HCiAgICAgICAgICAgICAgICAgICAgIHx8
IGVycm5vID09IEVOT0VOVCkpCiAgICAgICAgICAgICAgICBmYWlsID0gMzsgLyogVW5hYmxlIHRv
IGNvbnN0cnVjdCBkZWVwIGhpZXJhcmNoeS4gICovCiAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgIH0KICAgICAgICB9CgogICAgICAvKiBJZiBsaWJjIGhhcyB0aGUgYnVnIGluIHF1ZXN0
aW9uLCB0aGlzIGludm9jYXRpb24gb2YgZ2V0Y3dkCiAgICAgICAgIHJlc3VsdHMgaW4gYSBmYWls
ZWQgYXNzZXJ0aW9uLiAgKi8KICAgICAgY3dkID0gZ2V0Y3dkIChOVUxMLCAwKTsKICAgICAgaWYg
KGN3ZCA9PSBOVUxMKQogICAgICAgIGZhaWwgPSA0OyAvKiBnZXRjd2QgZGlkbid0IGFzc2VydCwg
YnV0IGl0IGZhaWxlZCBmb3IgYSBsb25nIG5hbWUKICAgICAgICAgICAgICAgICAgICAgd2hlcmUg
dGhlIGFuc3dlciBjb3VsZCBoYXZlIGJlZW4gbGVhcm5lZC4gICovCiAgICAgIGZyZWUgKGN3ZCk7
CgogICAgICAvKiBDYWxsIHJtZGlyIGZpcnN0LCBpbiBjYXNlIHRoZSBhYm92ZSBjaGRpciBmYWls
ZWQuICAqLwogICAgICBybWRpciAoZGlyX25hbWUpOwogICAgICB3aGlsZSAoMCA8IGQtLSkKICAg
ICAgICB7CiAgICAgICAgICBpZiAoY2hkaXIgKCIuLiIpIDwgMCkKICAgICAgICAgICAgewogICAg
ICAgICAgICAgIGZhaWwgPSA1OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAg
ICAgICAgICBybWRpciAoZGlyX25hbWUpOwogICAgICAgIH0KICAgIH0KCiAgcmV0dXJuIGZhaWw7
Cn0KCl9BQ0VPRgppZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKICBnbF9jdl9m
dW5jX2dldGN3ZF9hYm9ydF9idWc9bm8KZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldD0kPwogICAgIGlmIHRlc3QgJHJldCAtZ2UgMTI4IHx8IHRlc3QgJHJldCA9IDQ7IHRo
ZW4KICAgICAgIGdsX2N2X2Z1bmNfZ2V0Y3dkX2Fib3J0X2J1Zz15ZXMKICAgICBlbHNlCiAgICAg
ICBnbF9jdl9mdW5jX2dldGN3ZF9hYm9ydF9idWc9bm8KICAgICBmaQpmaQpybSAtZiBjb3JlICou
Y29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBc
CiAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKZmkK
CgpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGds
X2N2X2Z1bmNfZ2V0Y3dkX2Fib3J0X2J1ZyIgPiY1CiRhc19lY2hvICIkZ2xfY3ZfZnVuY19nZXRj
d2RfYWJvcnRfYnVnIiA+JjY7IH0KICBpZiB0ZXN0ICRnbF9jdl9mdW5jX2dldGN3ZF9hYm9ydF9i
dWcgPSB5ZXM7IHRoZW4gOgogIGdsX2Fib3J0X2J1Zz15ZXMKZmkKCiAgICAgICAgICA7OwogICAg
ICBlc2FjCiAgICAgIDs7CiAgZXNhYwogICAgICBjYXNlICIkZ2xfY3ZfZnVuY19nZXRjd2RfcGF0
aF9tYXgiIGluCiAgICAibm8ifCJubywgaXQgaGFzIHRoZSBBSVggYnVnIikgOzsKICAgICopCgok
YXNfZWNobyAiI2RlZmluZSBIQVZFX01JTklNQUxMWV9XT1JLSU5HX0dFVENXRCAxIiA+PmNvbmZk
ZWZzLmgKCiAgICAgIDs7CiAgZXNhYwogIGNhc2UgIiRnbF9jdl9mdW5jX2dldGN3ZF9wYXRoX21h
eCIgaW4KICAgICJubywgYnV0IGl0IGlzIHBhcnRseSB3b3JraW5nIikKCiRhc19lY2hvICIjZGVm
aW5lIEhBVkVfUEFSVExZX1dPUktJTkdfR0VUQ1dEIDEiID4+Y29uZmRlZnMuaAoKICAgICAgOzsK
ICBlc2FjCgogIGlmIHsgY2FzZSAiJGdsX2N2X2Z1bmNfZ2V0Y3dkX251bGwiIGluICp5ZXMpIGZh
bHNlOzsgKikgdHJ1ZTs7IGVzYWM7IH0gXAogICAgIHx8IHRlc3QgJGdsX2N2X2Z1bmNfZ2V0Y3dk
X3Bvc2l4X3NpZ25hdHVyZSAhPSB5ZXMgXAogICAgIHx8IHRlc3QgIiRnbF9jdl9mdW5jX2dldGN3
ZF9wYXRoX21heCIgIT0geWVzIFwKICAgICB8fCB0ZXN0ICRnbF9hYm9ydF9idWcgPSB5ZXM7IHRo
ZW4KICAgIFJFUExBQ0VfR0VUQ1dEPTEKICBmaQoKICBpZiB0ZXN0ICRSRVBMQUNFX0dFVENXRCA9
IDE7IHRoZW4KCgoKCgoKCgogIGdsX0xJQk9CSlM9IiRnbF9MSUJPQkpTIGdldGN3ZC4kYWNfb2Jq
ZXh0IgoKCgoKICA6CgogIGZpCgoKY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5lIEdO
VUxJQl9HRVRDV0QgMQpfQUNFT0YKCgoKCgoKCiAgICAgICAgICBHTlVMSUJfR0VUQ1dEPTEKCgoK
CgokYXNfZWNobyAiI2RlZmluZSBHTlVMSUJfVEVTVF9HRVRDV0QgMSIgPj5jb25mZGVmcy5oCgoK
CgoKCgoKCiAgOgoKCgoKCiAgaWYgdGVzdCAkYWNfY3ZfaGF2ZV9kZWNsX2dldGxvZ2luX3IgPSBu
bzsgdGhlbgogICAgSEFWRV9ERUNMX0dFVExPR0lOX1I9MAogIGZpCgoKICA6CgoKCgoKICBpZiB0
ZXN0ICRhY19jdl9mdW5jX2dldGxvZ2luX3IgPSBubzsgdGhlbgogICAgSEFWRV9HRVRMT0dJTl9S
PTAKICBlbHNlCiAgICBIQVZFX0dFVExPR0lOX1I9MQoKICAgIHsgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBnZXRsb2dpbl9yIHdvcmtzIHdp
dGggc21hbGwgYnVmZmVycyIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgZ2V0bG9n
aW5fciB3b3JrcyB3aXRoIHNtYWxsIGJ1ZmZlcnMuLi4gIiA+JjY7IH0KaWYgJHtnbF9jdl9mdW5j
X2dldGxvZ2luX3Jfd29ya3MrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQp
ICIgPiY2CmVsc2UKCiAgICAgICAgICAgICAgICBjYXNlICIkaG9zdF9vcyIgaW4KICAgICAgICAg
ICAgICAgICMgR3Vlc3Mgbm8gb24gT1NGLzEuCiAgICAgICAgICBvc2YqKSBnbF9jdl9mdW5jX2dl
dGxvZ2luX3Jfd29ya3M9Imd1ZXNzaW5nIG5vIiA7OwogICAgICAgICAgICAgICAgIyBHdWVzcyB5
ZXMgb3RoZXJ3aXNlLgogICAgICAgICAgKikgICAgZ2xfY3ZfZnVuY19nZXRsb2dpbl9yX3dvcmtz
PSJndWVzc2luZyB5ZXMiIDs7CiAgICAgICAgZXNhYwogICAgICAgIGlmIHRlc3QgIiRjcm9zc19j
b21waWxpbmciID0geWVzOyB0aGVuIDoKICA6CmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FD
RU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCiNpbmNsdWRlIDxz
dGRkZWYuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaWYgIUhBVkVfREVDTF9HRVRMT0dJTl9SCmV4
dGVybgojIGlmZGVmIF9fY3BsdXNwbHVzCiJDIgojIGVuZGlmCmludCBnZXRsb2dpbl9yIChjaGFy
ICosIHNpemVfdCk7CiNlbmRpZgppbnQKbWFpbiAodm9pZCkKewogIGludCByZXN1bHQgPSAwOwog
IGNoYXIgYnVmWzEwMF07CgogIGlmIChnZXRsb2dpbl9yIChidWYsIDApID09IDApCiAgICByZXN1
bHQgfD0gMTY7CiAgaWYgKGdldGxvZ2luX3IgKGJ1ZiwgMSkgPT0gMCkKICAgIHJlc3VsdCB8PSAx
NzsKICByZXR1cm4gcmVzdWx0Owp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8i
OyB0aGVuIDoKICBnbF9jdl9mdW5jX2dldGxvZ2luX3Jfd29ya3M9eWVzCmVsc2UKICBjYXNlICQ/
IGluCiAgICAgICAgICAgICAxNiB8IDE3KSBnbF9jdl9mdW5jX2dldGxvZ2luX3Jfd29ya3M9bm8g
OzsKICAgICAgICAgICBlc2FjCgpmaQpybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0Liog
Z21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCiAgY29uZnRlc3QuJGFjX29iamV4
dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKZmkKCgpmaQp7ICRhc19lY2hvICIkYXNf
bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2X2Z1bmNfZ2V0bG9naW5fcl93
b3JrcyIgPiY1CiRhc19lY2hvICIkZ2xfY3ZfZnVuY19nZXRsb2dpbl9yX3dvcmtzIiA+JjY7IH0K
ICAgIGNhc2UgIiRnbF9jdl9mdW5jX2dldGxvZ2luX3Jfd29ya3MiIGluCiAgICAgICp5ZXMpIDs7
CiAgICAgICopIFJFUExBQ0VfR0VUTE9HSU5fUj0xIDs7CiAgICBlc2FjCiAgZmkKCiAgaWYgdGVz
dCAkSEFWRV9HRVRMT0dJTl9SID0gMCB8fCB0ZXN0ICRSRVBMQUNFX0dFVExPR0lOX1IgPSAxOyB0
aGVuCgoKCgoKCgoKICBnbF9MSUJPQkpTPSIkZ2xfTElCT0JKUyBnZXRsb2dpbl9yLiRhY19vYmpl
eHQiCgoKCiAgOgoKCgoKCgogIGZpCgoKCgoKICAgICAgICAgIEdOVUxJQl9HRVRMT0dJTl9SPTEK
CgoKCgokYXNfZWNobyAiI2RlZmluZSBHTlVMSUJfVEVTVF9HRVRMT0dJTl9SIDEiID4+Y29uZmRl
ZnMuaAoKCgoKCgoKCiAgaWYgdGVzdCAkUkVQTEFDRV9HRVRPUFQgPSAxOyB0aGVuCgoKCgoKCgoK
ICBnbF9MSUJPQkpTPSIkZ2xfTElCT0JKUyBnZXRvcHQuJGFjX29iamV4dCIKCgoKCgoKCgoKICBn
bF9MSUJPQkpTPSIkZ2xfTElCT0JKUyBnZXRvcHQxLiRhY19vYmpleHQiCgoKCiAgOgoKCgoKCgog
ICAgICAgIEdOVUxJQl9HTF9VTklTVERfSF9HRVRPUFQ9MQogIGZpCgoKCiRhc19lY2hvICIjZGVm
aW5lIEdOVUxJQl9URVNUX0dFVE9QVF9HTlUgMSIgPj5jb25mZGVmcy5oCgoKCgoKCgogICAgUkVQ
TEFDRV9HRVRPUFQ9MAogICAgaWYgdGVzdCAtbiAiJGdsX3JlcGxhY2VfZ2V0b3B0IjsgdGhlbgog
ICAgICBSRVBMQUNFX0dFVE9QVD0xCiAgICBmaQoKICBpZiB0ZXN0ICRSRVBMQUNFX0dFVE9QVCA9
IDE7IHRoZW4KCiAgR0VUT1BUX0g9Z2V0b3B0LmgKCiRhc19lY2hvICIjZGVmaW5lIF9fR0VUT1BU
X1BSRUZJWCBycGxfIiA+PmNvbmZkZWZzLmgKCgoKICBmaQoKICBpZiB0ZXN0ICRSRVBMQUNFX0dF
VE9QVCA9IDE7IHRoZW4KCgoKCgoKCgogIGdsX0xJQk9CSlM9IiRnbF9MSUJPQkpTIGdldG9wdC4k
YWNfb2JqZXh0IgoKCgoKCgoKCgogIGdsX0xJQk9CSlM9IiRnbF9MSUJPQkpTIGdldG9wdDEuJGFj
X29iamV4dCIKCgoKICA6CgoKCgoKCiAgICAgICAgR05VTElCX0dMX1VOSVNURF9IX0dFVE9QVD0x
CiAgZmkKCgoKCgoKCgogIDoKCgoKCgoKICBnbF9nZXR0aW1lb2ZkYXlfdGltZXpvbmU9dm9pZAog
IGlmIHRlc3QgJGFjX2N2X2Z1bmNfZ2V0dGltZW9mZGF5ICE9IHllczsgdGhlbgogICAgSEFWRV9H
RVRUSU1FT0ZEQVk9MAogIGVsc2UKCgoKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogY2hlY2tpbmcgd2hldGhlciBnZXR0aW1lb2ZkYXkgY2xvYmJlcnMgbG9jYWx0aW1l
IGJ1ZmZlciIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgZ2V0dGltZW9mZGF5IGNs
b2JiZXJzIGxvY2FsdGltZSBidWZmZXIuLi4gIiA+JjY7IH0KaWYgJHtnbF9jdl9mdW5jX2dldHRp
bWVvZmRheV9jbG9iYmVyKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAi
ID4mNgplbHNlCiAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgogICMg
V2hlbiBjcm9zcy1jb21waWxpbmc6CiAgICAgIGNhc2UgIiRob3N0X29zIiBpbgogICAgICAgICAg
ICAgICAgIyBHdWVzcyBhbGwgaXMgZmluZSBvbiBnbGliYyBzeXN0ZW1zLgogICAgICAgICotZ251
KikgZ2xfY3ZfZnVuY19nZXR0aW1lb2ZkYXlfY2xvYmJlcj0iZ3Vlc3Npbmcgbm8iIDs7CiAgICAg
ICAgICAgICAgICAjIElmIHdlIGRvbid0IGtub3csIGFzc3VtZSB0aGUgd29yc3QuCiAgICAgICAg
KikgICAgICBnbF9jdl9mdW5jX2dldHRpbWVvZmRheV9jbG9iYmVyPSJndWVzc2luZyB5ZXMiIDs7
CiAgICAgIGVzYWMKCmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4k
YWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPHN0cmluZy5oPgogICAgICAg
ICAgI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAgICAgICAgICAjaW5jbHVkZSA8dGltZS5oPgogICAg
ICAgICAgI2luY2x1ZGUgPHN0ZGxpYi5oPgoKaW50Cm1haW4gKCkKewoKICAgICAgICAgIHRpbWVf
dCB0ID0gMDsKICAgICAgICAgIHN0cnVjdCB0bSAqbHQ7CiAgICAgICAgICBzdHJ1Y3QgdG0gc2F2
ZWRfbHQ7CiAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCB0djsKICAgICAgICAgIGx0ID0gbG9jYWx0
aW1lICgmdCk7CiAgICAgICAgICBzYXZlZF9sdCA9ICpsdDsKICAgICAgICAgIGdldHRpbWVvZmRh
eSAoJnR2LCBOVUxMKTsKICAgICAgICAgIHJldHVybiBtZW1jbXAgKGx0LCAmc2F2ZWRfbHQsIHNp
emVvZiAoc3RydWN0IHRtKSkgIT0gMDsKCiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgppZiBhY19m
bl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKICBnbF9jdl9mdW5jX2dldHRpbWVvZmRheV9j
bG9iYmVyPW5vCmVsc2UKICBnbF9jdl9mdW5jX2dldHRpbWVvZmRheV9jbG9iYmVyPXllcwpmaQpy
bSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0
JGFjX2V4ZWV4dCBcCiAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0
LiRhY19leHQKZmkKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
cmVzdWx0OiAkZ2xfY3ZfZnVuY19nZXR0aW1lb2ZkYXlfY2xvYmJlciIgPiY1CiRhc19lY2hvICIk
Z2xfY3ZfZnVuY19nZXR0aW1lb2ZkYXlfY2xvYmJlciIgPiY2OyB9CgogY2FzZSAiJGdsX2N2X2Z1
bmNfZ2V0dGltZW9mZGF5X2Nsb2JiZXIiIGluCiAgICp5ZXMpCiAgICAgUkVQTEFDRV9HRVRUSU1F
T0ZEQVk9MQoKCiRhc19lY2hvICIjZGVmaW5lIGdtdGltZSBycGxfZ210aW1lIiA+PmNvbmZkZWZz
LmgKCgokYXNfZWNobyAiI2RlZmluZSBsb2NhbHRpbWUgcnBsX2xvY2FsdGltZSIgPj5jb25mZGVm
cy5oCgoKCiRhc19lY2hvICIjZGVmaW5lIEdFVFRJTUVPRkRBWV9DTE9CQkVSU19MT0NBTFRJTUUg
MSIgPj5jb25mZGVmcy5oCgogICAgIDs7CiBlc2FjCgogICAgeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZ2V0dGltZW9mZGF5IHdpdGggUE9TSVgg
c2lnbmF0dXJlIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGdldHRpbWVvZmRheSB3aXRo
IFBPU0lYIHNpZ25hdHVyZS4uLiAiID4mNjsgfQppZiAke2dsX2N2X2Z1bmNfZ2V0dGltZW9mZGF5
X3Bvc2l4X3NpZ25hdHVyZSs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkg
IiA+JjYKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQK
LyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVkZSA8c3lzL3RpbWUuaD4KICAgICAgICAgICAg
ICBzdHJ1Y3QgdGltZXZhbCBjOwogICAgICAgICAgICAgIGludCBnZXR0aW1lb2ZkYXkgKHN0cnVj
dCB0aW1ldmFsICpyZXN0cmljdCwgdm9pZCAqcmVzdHJpY3QpOwoKaW50Cm1haW4gKCkKewovKiBn
bGliYyB1c2VzIHN0cnVjdCB0aW1lem9uZSAqIHJhdGhlciB0aGFuIHRoZSBQT1NJWCB2b2lkICoK
ICAgICAgICAgICAgICAgICBpZiBfR05VX1NPVVJDRSBpcyBkZWZpbmVkLiAgSG93ZXZlciwgc2lu
Y2UgdGhlIG9ubHkgcG9ydGFibGUKICAgICAgICAgICAgICAgICB1c2Ugb2YgZ2V0dGltZW9mZGF5
IHVzZXMgTlVMTCBhcyB0aGUgc2Vjb25kIHBhcmFtZXRlciwgYW5kCiAgICAgICAgICAgICAgICAg
c2luY2UgdGhlIGdsaWJjIGRlZmluaXRpb24gaXMgYWN0dWFsbHkgbW9yZSB0eXBlc2FmZSwgaXQg
aXMKICAgICAgICAgICAgICAgICBub3Qgd29ydGggd3JhcHBpbmcgdGhpcyB0byBnZXQgYSBjb21w
bGlhbnQgc2lnbmF0dXJlLiAgKi8KICAgICAgICAgICAgICBpbnQgKCpmKSAoc3RydWN0IHRpbWV2
YWwgKnJlc3RyaWN0LCB2b2lkICpyZXN0cmljdCkKICAgICAgICAgICAgICAgID0gZ2V0dGltZW9m
ZGF5OwogICAgICAgICAgICAgIGludCB4ID0gZiAoJmMsIDApOwogICAgICAgICAgICAgIHJldHVy
biAhKHggfCBjLnR2X3NlYyB8IGMudHZfdXNlYyk7CgogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YK
aWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgogIGdsX2N2X2Z1bmNfZ2V0
dGltZW9mZGF5X3Bvc2l4X3NpZ25hdHVyZT15ZXMKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxf
QUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVkZSA8
c3lzL3RpbWUuaD4KaW50IGdldHRpbWVvZmRheSAoc3RydWN0IHRpbWV2YWwgKnJlc3RyaWN0LCBz
dHJ1Y3QgdGltZXpvbmUgKnJlc3RyaWN0KTsKCmludAptYWluICgpCnsKCiAgOwogIHJldHVybiAw
Owp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CiAgZ2xf
Y3ZfZnVuY19nZXR0aW1lb2ZkYXlfcG9zaXhfc2lnbmF0dXJlPWFsbW9zdAplbHNlCiAgZ2xfY3Zf
ZnVuY19nZXR0aW1lb2ZkYXlfcG9zaXhfc2lnbmF0dXJlPW5vCmZpCnJtIC1mIGNvcmUgY29uZnRl
c3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dApmaQpybSAtZiBjb3Jl
IGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKZmkKeyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbF9jdl9mdW5j
X2dldHRpbWVvZmRheV9wb3NpeF9zaWduYXR1cmUiID4mNQokYXNfZWNobyAiJGdsX2N2X2Z1bmNf
Z2V0dGltZW9mZGF5X3Bvc2l4X3NpZ25hdHVyZSIgPiY2OyB9CiAgICBpZiB0ZXN0ICRnbF9jdl9m
dW5jX2dldHRpbWVvZmRheV9wb3NpeF9zaWduYXR1cmUgPSBhbG1vc3Q7IHRoZW4KICAgICAgZ2xf
Z2V0dGltZW9mZGF5X3RpbWV6b25lPSdzdHJ1Y3QgdGltZXpvbmUnCiAgICBlbGlmIHRlc3QgJGds
X2N2X2Z1bmNfZ2V0dGltZW9mZGF5X3Bvc2l4X3NpZ25hdHVyZSAhPSB5ZXM7IHRoZW4KICAgICAg
UkVQTEFDRV9HRVRUSU1FT0ZEQVk9MQogICAgZmkKICAgICAgICBpZiB0ZXN0ICRSRVBMQUNFX1NU
UlVDVF9USU1FVkFMID0gMTsgdGhlbgogICAgICBSRVBMQUNFX0dFVFRJTUVPRkRBWT0xCiAgICBm
aQoKCgogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tp
bmcgd2hldGhlciB0enNldCBjbG9iYmVycyBsb2NhbHRpbWUgYnVmZmVyIiA+JjUKJGFzX2VjaG9f
biAiY2hlY2tpbmcgd2hldGhlciB0enNldCBjbG9iYmVycyBsb2NhbHRpbWUgYnVmZmVyLi4uICIg
PiY2OyB9CmlmICR7Z2xfY3ZfZnVuY190enNldF9jbG9iYmVyKzp9IGZhbHNlOyB0aGVuIDoKICAk
YXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCgogIGlmIHRlc3QgIiRjcm9zc19jb21waWxp
bmciID0geWVzOyB0aGVuIDoKICBjYXNlICIkaG9zdF9vcyIgaW4KICAgICAgICAgICAgICAgICAg
IyBHdWVzcyBhbGwgaXMgZmluZSBvbiBnbGliYyBzeXN0ZW1zLgogICAgICAgICAgKi1nbnUqKSBn
bF9jdl9mdW5jX3R6c2V0X2Nsb2JiZXI9Imd1ZXNzaW5nIG5vIiA7OwogICAgICAgICAgICAgICAg
ICAjIElmIHdlIGRvbid0IGtub3csIGFzc3VtZSB0aGUgd29yc3QuCiAgICAgICAgICAqKSAgICAg
IGdsX2N2X2Z1bmNfdHpzZXRfY2xvYmJlcj0iZ3Vlc3NpbmcgeWVzIiA7OwogICAgICAgIGVzYWMK
CmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVu
ZCBjb25mZGVmcy5oLiAgKi8KCiNpbmNsdWRlIDx0aW1lLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4K
CmludAptYWluICgpCnsKICB0aW1lX3QgdDEgPSA4NTM5NTgxMjE7CiAgc3RydWN0IHRtICpwLCBz
OwogIHB1dGVudiAoIlRaPUdNVDAiKTsKICBwID0gbG9jYWx0aW1lICgmdDEpOwogIHMgPSAqcDsK
ICBwdXRlbnYgKCJUWj1FU1QrM0VEVCsyLE0xMC4xLjAvMDA6MDA6MDAsTTIuMy4wLzAwOjAwOjAw
Iik7CiAgdHpzZXQgKCk7CiAgcmV0dXJuIChwLT50bV95ZWFyICE9IHMudG1feWVhcgogICAgICAg
ICAgfHwgcC0+dG1fbW9uICE9IHMudG1fbW9uCiAgICAgICAgICB8fCBwLT50bV9tZGF5ICE9IHMu
dG1fbWRheQogICAgICAgICAgfHwgcC0+dG1faG91ciAhPSBzLnRtX2hvdXIKICAgICAgICAgIHx8
IHAtPnRtX21pbiAhPSBzLnRtX21pbgogICAgICAgICAgfHwgcC0+dG1fc2VjICE9IHMudG1fc2Vj
KTsKfQoKX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgogIGdsX2N2
X2Z1bmNfdHpzZXRfY2xvYmJlcj1ubwplbHNlCiAgZ2xfY3ZfZnVuY190enNldF9jbG9iYmVyPXll
cwpmaQpybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNv
bmZ0ZXN0JGFjX2V4ZWV4dCBcCiAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNv
bmZ0ZXN0LiRhY19leHQKZmkKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogcmVzdWx0OiAkZ2xfY3ZfZnVuY190enNldF9jbG9iYmVyIiA+JjUKJGFzX2VjaG8gIiRn
bF9jdl9mdW5jX3R6c2V0X2Nsb2JiZXIiID4mNjsgfQoKCiRhc19lY2hvICIjZGVmaW5lIEhBVkVf
UlVOX1RaU0VUX1RFU1QgMSIgPj5jb25mZGVmcy5oCgoKICAgICAgY2FzZSAiJGdsX2N2X2Z1bmNf
dHpzZXRfY2xvYmJlciIgaW4KICAgICAgICAqeWVzKQogICAgICAgICAgUkVQTEFDRV9HRVRUSU1F
T0ZEQVk9MQoKCiRhc19lY2hvICIjZGVmaW5lIGdtdGltZSBycGxfZ210aW1lIiA+PmNvbmZkZWZz
LmgKCgokYXNfZWNobyAiI2RlZmluZSBsb2NhbHRpbWUgcnBsX2xvY2FsdGltZSIgPj5jb25mZGVm
cy5oCgoKCiRhc19lY2hvICIjZGVmaW5lIHR6c2V0IHJwbF90enNldCIgPj5jb25mZGVmcy5oCgoK
JGFzX2VjaG8gIiNkZWZpbmUgVFpTRVRfQ0xPQkJFUlNfTE9DQUxUSU1FIDEiID4+Y29uZmRlZnMu
aAoKICAgICAgICAgIDs7CiAgICAgIGVzYWMKCiAgZmkKCmNhdCA+PmNvbmZkZWZzLmggPDxfQUNF
T0YKI2RlZmluZSBHRVRUSU1FT0ZEQVlfVElNRVpPTkUgJGdsX2dldHRpbWVvZmRheV90aW1lem9u
ZQpfQUNFT0YKCgogIGlmIHRlc3QgJEhBVkVfR0VUVElNRU9GREFZID0gMCB8fCB0ZXN0ICRSRVBM
QUNFX0dFVFRJTUVPRkRBWSA9IDE7IHRoZW4KCgoKCgoKCgogIGdsX0xJQk9CSlM9IiRnbF9MSUJP
QkpTIGdldHRpbWVvZmRheS4kYWNfb2JqZXh0IgoKCiAgZm9yIGFjX2hlYWRlciBpbiBzeXMvdGlt
ZWIuaApkbyA6CiAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgInN5cy90
aW1lYi5oIiAiYWNfY3ZfaGVhZGVyX3N5c190aW1lYl9oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQi
CmlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3N5c190aW1lYl9oIiA9IHh5ZXM7IHRoZW4gOgogIGNh
dCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBIQVZFX1NZU19USU1FQl9IIDEKX0FDRU9G
CgpmaQoKZG9uZQoKICBmb3IgYWNfZnVuYyBpbiBfZnRpbWUKZG8gOgogIGFjX2ZuX2NfY2hlY2tf
ZnVuYyAiJExJTkVOTyIgIl9mdGltZSIgImFjX2N2X2Z1bmNfX2Z0aW1lIgppZiB0ZXN0ICJ4JGFj
X2N2X2Z1bmNfX2Z0aW1lIiA9IHh5ZXM7IHRoZW4gOgogIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNF
T0YKI2RlZmluZSBIQVZFX19GVElNRSAxCl9BQ0VPRgoKZmkKZG9uZQoKCiAgZmkKCgoKCgogICAg
ICAgICAgR05VTElCX0dFVFRJTUVPRkRBWT0xCgoKCgoKJGFzX2VjaG8gIiNkZWZpbmUgR05VTElC
X1RFU1RfR0VUVElNRU9GREFZIDEiID4+Y29uZmRlZnMuaAoKCgoKCiAgeyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSBjb21waWxlciBn
ZW5lcmFsbHkgcmVzcGVjdHMgaW5saW5lIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhl
ciB0aGUgY29tcGlsZXIgZ2VuZXJhbGx5IHJlc3BlY3RzIGlubGluZS4uLiAiID4mNjsgfQppZiAk
e2dsX2N2X2NfaW5saW5lX2VmZmVjdGl2ZSs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAi
KGNhY2hlZCkgIiA+JjYKZWxzZQogIGlmIHRlc3QgJGFjX2N2X2NfaW5saW5lID0gbm87IHRoZW4K
ICAgICAgIGdsX2N2X2NfaW5saW5lX2VmZmVjdGl2ZT1ubwogICAgIGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+
Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCgppbnQKbWFpbiAoKQp7CiNp
ZmRlZiBfX05PX0lOTElORV9fCiAgICAgICAgICAgICAgICNlcnJvciAiaW5saW5lIGlzIG5vdCBl
ZmZlY3RpdmUiCiAgICAgICAgICAgICAjZW5kaWYKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlm
IGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKICBnbF9jdl9jX2lubGluZV9l
ZmZlY3RpdmU9eWVzCmVsc2UKICBnbF9jdl9jX2lubGluZV9lZmZlY3RpdmU9bm8KZmkKcm0gLWYg
Y29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiAg
ICAgZmkKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0
OiAkZ2xfY3ZfY19pbmxpbmVfZWZmZWN0aXZlIiA+JjUKJGFzX2VjaG8gIiRnbF9jdl9jX2lubGlu
ZV9lZmZlY3RpdmUiID4mNjsgfQogIGlmIHRlc3QgJGdsX2N2X2NfaW5saW5lX2VmZmVjdGl2ZSA9
IHllczsgdGhlbgoKJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9JTkxJTkUgMSIgPj5jb25mZGVmcy5o
CgogIGZpCgoKCgoKICBpZiB0ZXN0ICRnbF9jdl9mdW5jX21hbGxvY19wb3NpeCA9IHllczsgdGhl
bgoKJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9NQUxMT0NfUE9TSVggMSIgPj5jb25mZGVmcy5oCgog
IGVsc2UKICAgIFJFUExBQ0VfTUFMTE9DPTEKICBmaQoKICBpZiB0ZXN0ICRSRVBMQUNFX01BTExP
QyA9IDE7IHRoZW4KCgoKCgoKCgogIGdsX0xJQk9CSlM9IiRnbF9MSUJPQkpTIG1hbGxvYy4kYWNf
b2JqZXh0IgoKICBmaQoKCgoKCiAgICAgICAgICBHTlVMSUJfTUFMTE9DX1BPU0lYPTEKCgoKCgok
YXNfZWNobyAiI2RlZmluZSBHTlVMSUJfVEVTVF9NQUxMT0NfUE9TSVggMSIgPj5jb25mZGVmcy5o
CgoKCgogIGlmIHRlc3QgJEhBVkVfTUVNQ0hSID0gMCB8fCB0ZXN0ICRSRVBMQUNFX01FTUNIUiA9
IDE7IHRoZW4KCgoKCgoKCgogIGdsX0xJQk9CSlM9IiRnbF9MSUJPQkpTIG1lbWNoci4kYWNfb2Jq
ZXh0IgoKCiAgZm9yIGFjX2hlYWRlciBpbiBicC1zeW0uaApkbyA6CiAgYWNfZm5fY19jaGVja19o
ZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgImJwLXN5bS5oIiAiYWNfY3ZfaGVhZGVyX2JwX3N5bV9o
IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCmlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX2JwX3N5bV9o
IiA9IHh5ZXM7IHRoZW4gOgogIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBIQVZF
X0JQX1NZTV9IIDEKX0FDRU9GCgpmaQoKZG9uZQoKCiAgZmkKCgoKCgogICAgICAgICAgR05VTElC
X01FTUNIUj0xCgoKCgoKJGFzX2VjaG8gIiNkZWZpbmUgR05VTElCX1RFU1RfTUVNQ0hSIDEiID4+
Y29uZmRlZnMuaAoKCgoKCgoKICA6CgoKCgoKICBpZiB0ZXN0ICRhY19jdl9mdW5jX21rc3RlbXAg
PSB5ZXM7IHRoZW4KICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
Y2hlY2tpbmcgZm9yIHdvcmtpbmcgbWtzdGVtcCIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIGZv
ciB3b3JraW5nIG1rc3RlbXAuLi4gIiA+JjY7IH0KaWYgJHtnbF9jdl9mdW5jX3dvcmtpbmdfbWtz
dGVtcCs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQoK
ICAgICAgICBta2RpciBjb25mdGVzdC5ta3N0ZW1wCiAgICAgICAgaWYgdGVzdCAiJGNyb3NzX2Nv
bXBpbGluZyIgPSB5ZXM7IHRoZW4gOgogIGNhc2UgIiRob3N0X29zIiBpbgogICAgICAgICAgICAg
ICAgICAgICAjIEd1ZXNzIHllcyBvbiBnbGliYyBzeXN0ZW1zLgogICAgICAgICAgICAgKi1nbnUq
KSBnbF9jdl9mdW5jX3dvcmtpbmdfbWtzdGVtcD0iZ3Vlc3NpbmcgeWVzIiA7OwogICAgICAgICAg
ICAgICAgICAgICAjIElmIHdlIGRvbid0IGtub3csIGFzc3VtZSB0aGUgd29yc3QuCiAgICAgICAg
ICAgICAqKSAgICAgIGdsX2N2X2Z1bmNfd29ya2luZ19ta3N0ZW1wPSJndWVzc2luZyBubyIgOzsK
ICAgICAgICAgICBlc2FjCgplbHNlCiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRl
c3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCiRhY19pbmNsdWRlc19kZWZhdWx0Cmlu
dAptYWluICgpCnsKaW50IHJlc3VsdCA9IDA7CiAgICAgICAgICAgICAgaW50IGk7CiAgICAgICAg
ICAgICAgb2ZmX3QgbGFyZ2UgPSAob2ZmX3QpIDQyOTQ5NjcyOTV1OwogICAgICAgICAgICAgIGlm
IChsYXJnZSA8IDApCiAgICAgICAgICAgICAgICBsYXJnZSA9IDIxNDc0ODM2NDc7CiAgICAgICAg
ICAgICAgdW1hc2sgKDApOwogICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA3MDsgaSsrKQog
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICBjaGFyIHRlbXBsW10gPSAiY29uZnRl
c3QubWtzdGVtcC9jb1hYWFhYWCI7CiAgICAgICAgICAgICAgICAgIGludCAoKm1rc3RlbXBfZnVu
Y3Rpb24pIChjaGFyICopID0gbWtzdGVtcDsKICAgICAgICAgICAgICAgICAgaW50IGZkID0gbWtz
dGVtcF9mdW5jdGlvbiAodGVtcGwpOwogICAgICAgICAgICAgICAgICBpZiAoZmQgPCAwKQogICAg
ICAgICAgICAgICAgICAgIHJlc3VsdCB8PSAxOwogICAgICAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgc3Q7CiAg
ICAgICAgICAgICAgICAgICAgICBpZiAobHNlZWsgKGZkLCBsYXJnZSwgU0VFS19TRVQpICE9IGxh
cmdlKQogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgfD0gMjsKICAgICAgICAgICAgICAg
ICAgICAgIGlmIChmc3RhdCAoZmQsICZzdCkgPCAwKQogICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQgfD0gNDsKICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0LnN0X21vZGUgJiAw
MDc3KQogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgfD0gODsKICAgICAgICAgICAgICAg
ICAgICAgIGlmIChjbG9zZSAoZmQpKQogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgfD0g
MTY7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9y
dW4gIiRMSU5FTk8iOyB0aGVuIDoKICBnbF9jdl9mdW5jX3dvcmtpbmdfbWtzdGVtcD15ZXMKZWxz
ZQogIGdsX2N2X2Z1bmNfd29ya2luZ19ta3N0ZW1wPW5vCmZpCnJtIC1mIGNvcmUgKi5jb3JlIGNv
cmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKICBjb25m
dGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dApmaQoKICAgICAg
ICBybSAtcmYgY29uZnRlc3QubWtzdGVtcAoKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbF9jdl9mdW5jX3dvcmtpbmdfbWtzdGVtcCIgPiY1CiRh
c19lY2hvICIkZ2xfY3ZfZnVuY193b3JraW5nX21rc3RlbXAiID4mNjsgfQogICAgY2FzZSAiJGds
X2N2X2Z1bmNfd29ya2luZ19ta3N0ZW1wIiBpbgogICAgICAqeWVzKSA7OwogICAgICAqKQogICAg
ICAgIFJFUExBQ0VfTUtTVEVNUD0xCiAgICAgICAgOzsKICAgIGVzYWMKICBlbHNlCiAgICBIQVZF
X01LU1RFTVA9MAogIGZpCgogIGlmIHRlc3QgJEhBVkVfTUtTVEVNUCA9IDAgfHwgdGVzdCAkUkVQ
TEFDRV9NS1NURU1QID0gMTsgdGhlbgoKCgoKCgoKCiAgZ2xfTElCT0JKUz0iJGdsX0xJQk9CSlMg
bWtzdGVtcC4kYWNfb2JqZXh0IgoKCgogIGZpCgoKCgoKICAgICAgICAgIEdOVUxJQl9NS1NURU1Q
PTEKCgoKCgokYXNfZWNobyAiI2RlZmluZSBHTlVMSUJfVEVTVF9NS1NURU1QIDEiID4+Y29uZmRl
ZnMuaAoKCgoKCgoKCgoKCgoKCgoKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiBjaGVja2luZyBmb3Igb2JzdGFja3MiID4mNQokYXNfZWNob19uICJjaGVja2luZyBmb3Ig
b2JzdGFja3MuLi4gIiA+JjY7IH0KaWYgJHthY19jdl9mdW5jX29ic3RhY2srOn0gZmFsc2U7IHRo
ZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKICBjYXQgY29uZmRlZnMuaCAt
IDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KJGFjX2lu
Y2x1ZGVzX2RlZmF1bHQKCQkgICAgICAjaW5jbHVkZSAib2JzdGFjay5oIgppbnQKbWFpbiAoKQp7
CnN0cnVjdCBvYnN0YWNrIG1lbTsKCQkgICAgICAgI2RlZmluZSBvYnN0YWNrX2NodW5rX2FsbG9j
IG1hbGxvYwoJCSAgICAgICAjZGVmaW5lIG9ic3RhY2tfY2h1bmtfZnJlZSBmcmVlCgkJICAgICAg
IG9ic3RhY2tfaW5pdCAoJm1lbSk7CgkJICAgICAgIG9ic3RhY2tfZnJlZSAoJm1lbSwgMCk7CiAg
OwogIHJldHVybiAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhl
biA6CiAgYWNfY3ZfZnVuY19vYnN0YWNrPXllcwplbHNlCiAgYWNfY3ZfZnVuY19vYnN0YWNrPW5v
CmZpCnJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAogICAgY29u
ZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9mdW5jX29ic3RhY2siID4mNQokYXNf
ZWNobyAiJGFjX2N2X2Z1bmNfb2JzdGFjayIgPiY2OyB9CmlmIHRlc3QgJGFjX2N2X2Z1bmNfb2Jz
dGFjayA9IHllczsgdGhlbgoKJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9PQlNUQUNLIDEiID4+Y29u
ZmRlZnMuaAoKZWxzZQoKCgoKCgoKCiAgZ2xfTElCT0JKUz0iJGdsX0xJQk9CSlMgb2JzdGFjay4k
YWNfb2JqZXh0IgoKZmkKCgoKCgoKICA6CgoKCgoKICBpZiB0ZXN0ICRhY19jdl9mdW5jX29ic3Rh
Y2tfcHJpbnRmID0gbm8gOyB0aGVuCgoKICBpZiB0ZXN0ICRhY19jdl9mdW5jX29ic3RhY2tfcHJp
bnRmID0geWVzOyB0aGVuCiAgICBSRVBMQUNFX09CU1RBQ0tfUFJJTlRGPTEKICBmaQoKICBmaQoK
CgogIDoKCgoKCgogIGlmIHRlc3QgJGFjX2N2X2hhdmVfZGVjbF9vYnN0YWNrX3ByaW50ZiA9IG5v
OyB0aGVuCiAgICBIQVZFX0RFQ0xfT0JTVEFDS19QUklOVEY9MAogIGZpCgoKICBpZiB0ZXN0ICRh
Y19jdl9mdW5jX29ic3RhY2tfcHJpbnRmID0gbm8gfHwgdGVzdCAkUkVQTEFDRV9PQlNUQUNLX1BS
SU5URiA9IDE7IHRoZW4KCgoKCgoKCgogIGdsX0xJQk9CSlM9IiRnbF9MSUJPQkpTIG9ic3RhY2tf
cHJpbnRmLiRhY19vYmpleHQiCgogIGZpCgoKCgoKICAgICAgICAgIEdOVUxJQl9PQlNUQUNLX1BS
SU5URj0xCgoKCgoKJGFzX2VjaG8gIiNkZWZpbmUgR05VTElCX1RFU1RfT0JTVEFDS19QUklOVEYg
MSIgPj5jb25mZGVmcy5oCgoKCgoKICBjYXNlICIkaG9zdF9vcyIgaW4KICAgIG1pbmd3KiB8IHB3
KikKICAgICAgUkVQTEFDRV9PUEVOPTEKICAgICAgOzsKICAgICopCgogIDoKCgoKCgogICAgICB7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIg
b3BlbiByZWNvZ25pemVzIGEgdHJhaWxpbmcgc2xhc2giID4mNQokYXNfZWNob19uICJjaGVja2lu
ZyB3aGV0aGVyIG9wZW4gcmVjb2duaXplcyBhIHRyYWlsaW5nIHNsYXNoLi4uICIgPiY2OyB9Cmlm
ICR7Z2xfY3ZfZnVuY19vcGVuX3NsYXNoKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIo
Y2FjaGVkKSAiID4mNgplbHNlCiAgIyBBc3N1bWUgdGhhdCBpZiB3ZSBoYXZlIGxzdGF0LCB3ZSBj
YW4gYWxzbyBjaGVjayBzeW1saW5rcy4KICAgICAgICAgIGlmIHRlc3QgJGFjX2N2X2Z1bmNfbHN0
YXQgPSB5ZXM7IHRoZW4KICAgICAgICAgICAgdG91Y2ggY29uZnRlc3QudG1wCiAgICAgICAgICAg
IGxuIC1zIGNvbmZ0ZXN0LnRtcCBjb25mdGVzdC5sbmsKICAgICAgICAgIGZpCiAgICAgICAgICBp
ZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CgogICAgICAgICAgICAgY2Fz
ZSAiJGhvc3Rfb3MiIGluCiAgICAgICAgICAgICAgIGZyZWVic2QqIHwgYWl4KiB8IGhwdXgqIHwg
c29sYXJpczIuWzAtOV0gfCBzb2xhcmlzMi5bMC05XS4qKQogICAgICAgICAgICAgICAgIGdsX2N2
X2Z1bmNfb3Blbl9zbGFzaD0iZ3Vlc3Npbmcgbm8iIDs7CiAgICAgICAgICAgICAgICopCiAgICAg
ICAgICAgICAgICAgZ2xfY3ZfZnVuY19vcGVuX3NsYXNoPSJndWVzc2luZyB5ZXMiIDs7CiAgICAg
ICAgICAgICBlc2FjCgplbHNlCiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3Qu
JGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCgojaW5jbHVkZSA8ZmNudGwuaD4KI2lmIEhB
VkVfVU5JU1REX0gKIyBpbmNsdWRlIDx1bmlzdGQuaD4KI2VuZGlmCmludCBtYWluICgpCnsKICBp
bnQgcmVzdWx0ID0gMDsKI2lmIEhBVkVfTFNUQVQKICBpZiAob3BlbiAoImNvbmZ0ZXN0Lmxuay8i
LCBPX1JET05MWSkgIT0gLTEpCiAgICByZXN1bHQgfD0gMTsKI2VuZGlmCiAgaWYgKG9wZW4gKCJj
b25mdGVzdC5zbC8iLCBPX0NSRUFULCAwNjAwKSA+PSAwKQogICAgcmVzdWx0IHw9IDI7CiAgcmV0
dXJuIHJlc3VsdDsKfQpfQUNFT0YKaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6
CiAgZ2xfY3ZfZnVuY19vcGVuX3NsYXNoPXllcwplbHNlCiAgZ2xfY3ZfZnVuY19vcGVuX3NsYXNo
PW5vCmZpCnJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQg
Y29uZnRlc3QkYWNfZXhlZXh0IFwKICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0g
Y29uZnRlc3QuJGFjX2V4dApmaQoKICAgICAgICAgIHJtIC1mIGNvbmZ0ZXN0LnNsIGNvbmZ0ZXN0
LnRtcCBjb25mdGVzdC5sbmsKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogcmVzdWx0OiAkZ2xfY3ZfZnVuY19vcGVuX3NsYXNoIiA+JjUKJGFzX2VjaG8gIiRnbF9j
dl9mdW5jX29wZW5fc2xhc2giID4mNjsgfQogICAgICBjYXNlICIkZ2xfY3ZfZnVuY19vcGVuX3Ns
YXNoIiBpbgogICAgICAgICpubykKCiRhc19lY2hvICIjZGVmaW5lIE9QRU5fVFJBSUxJTkdfU0xB
U0hfQlVHIDEiID4+Y29uZmRlZnMuaAoKICAgICAgICAgIFJFUExBQ0VfT1BFTj0xCiAgICAgICAg
ICA7OwogICAgICBlc2FjCiAgICAgIDs7CiAgZXNhYwoKICAgIGlmIHRlc3QgJFJFUExBQ0VfT1BF
TiA9IDA7IHRoZW4KCgoKICA6CgoKCgoKICBpZiB0ZXN0ICRhY19jdl9mdW5jX2ZjaGRpciA9IG5v
OyB0aGVuCiAgICBIQVZFX0ZDSERJUj0wCiAgZmkKCiAgICAgIGlmIHRlc3QgJEhBVkVfRkNIRElS
ID0gMDsgdGhlbgogICAgICAgIFJFUExBQ0VfT1BFTj0xCiAgICAgIGZpCiAgICBmaQoKCgogIGlm
IHRlc3QgJFJFUExBQ0VfT1BFTiA9IDE7IHRoZW4KCgoKCgoKCgogIGdsX0xJQk9CSlM9IiRnbF9M
SUJPQkpTIG9wZW4uJGFjX29iamV4dCIKCgoKICA6CgogIGZpCgoKCgoKICAgICAgICAgIEdOVUxJ
Ql9PUEVOPTEKCgoKCgokYXNfZWNobyAiI2RlZmluZSBHTlVMSUJfVEVTVF9PUEVOIDEiID4+Y29u
ZmRlZnMuaAoKCgoKCgogIGZvciBhY19mdW5jIGluIG9wZW5kaXIKZG8gOgogIGFjX2ZuX2NfY2hl
Y2tfZnVuYyAiJExJTkVOTyIgIm9wZW5kaXIiICJhY19jdl9mdW5jX29wZW5kaXIiCmlmIHRlc3Qg
IngkYWNfY3ZfZnVuY19vcGVuZGlyIiA9IHh5ZXM7IHRoZW4gOgogIGNhdCA+PmNvbmZkZWZzLmgg
PDxfQUNFT0YKI2RlZmluZSBIQVZFX09QRU5ESVIgMQpfQUNFT0YKCmZpCmRvbmUKCiAgaWYgdGVz
dCAkYWNfY3ZfZnVuY19vcGVuZGlyID0gbm87IHRoZW4KICAgIEhBVkVfT1BFTkRJUj0wCiAgZmkK
CgoKCiAgOgoKCgoKCiAgaWYgdGVzdCAkYWNfY3ZfZnVuY19mY2hkaXIgPSBubzsgdGhlbgogICAg
SEFWRV9GQ0hESVI9MAogIGZpCgogICAgaWYgdGVzdCAkSEFWRV9GQ0hESVIgPSAwOyB0aGVuCiAg
ICAgIGlmIHRlc3QgJEhBVkVfT1BFTkRJUiA9IDE7IHRoZW4KICAgICAgICBSRVBMQUNFX09QRU5E
SVI9MQogICAgICBmaQogICAgZmkKCgogIGlmIHRlc3QgJEhBVkVfT1BFTkRJUiA9IDAgfHwgdGVz
dCAkUkVQTEFDRV9PUEVORElSID0gMTsgdGhlbgoKCgoKCgoKCiAgZ2xfTElCT0JKUz0iJGdsX0xJ
Qk9CSlMgb3BlbmRpci4kYWNfb2JqZXh0IgoKICBmaQoKCgoKCiAgICAgICAgICBHTlVMSUJfT1BF
TkRJUj0xCgoKCgoKJGFzX2VjaG8gIiNkZWZpbmUgR05VTElCX1RFU1RfT1BFTkRJUiAxIiA+PmNv
bmZkZWZzLmgKCgoKCiAgYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAicHJvZ3JhbV9pbnZv
Y2F0aW9uX25hbWUiICJhY19jdl9oYXZlX2RlY2xfcHJvZ3JhbV9pbnZvY2F0aW9uX25hbWUiICIj
aW5jbHVkZSA8ZXJybm8uaD4KIgppZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9wcm9ncmFtX2lu
dm9jYXRpb25fbmFtZSIgPSB4eWVzOyB0aGVuIDoKICBhY19oYXZlX2RlY2w9MQplbHNlCiAgYWNf
aGF2ZV9kZWNsPTAKZmkKCmNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBIQVZFX0RF
Q0xfUFJPR1JBTV9JTlZPQ0FUSU9OX05BTUUgJGFjX2hhdmVfZGVjbApfQUNFT0YKCiAgYWNfZm5f
Y19jaGVja19kZWNsICIkTElORU5PIiAicHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUiICJh
Y19jdl9oYXZlX2RlY2xfcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUiICIjaW5jbHVkZSA8
ZXJybm8uaD4KIgppZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9wcm9ncmFtX2ludm9jYXRpb25f
c2hvcnRfbmFtZSIgPSB4eWVzOyB0aGVuIDoKICBhY19oYXZlX2RlY2w9MQplbHNlCiAgYWNfaGF2
ZV9kZWNsPTAKZmkKCmNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBIQVZFX0RFQ0xf
UFJPR1JBTV9JTlZPQ0FUSU9OX1NIT1JUX05BTUUgJGFjX2hhdmVfZGVjbApfQUNFT0YKCgoKCiAg
OgoKCgoKCiAgaWYgdGVzdCAkYWNfY3ZfZnVuY19yZWFkbGluayA9IG5vOyB0aGVuCiAgICBIQVZF
X1JFQURMSU5LPTAKICBlbHNlCiAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IGNoZWNraW5nIHdoZXRoZXIgcmVhZGxpbmsgc2lnbmF0dXJlIGlzIGNvcnJlY3QiID4m
NQokYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHJlYWRsaW5rIHNpZ25hdHVyZSBpcyBjb3Jy
ZWN0Li4uICIgPiY2OyB9CmlmICR7Z2xfY3ZfZGVjbF9yZWFkbGlua193b3Jrcys6fSBmYWxzZTsg
dGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIGNhdCBjb25mZGVmcy5o
IC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5j
bHVkZSA8dW5pc3RkLmg+CiAgICAgIC8qIENhdXNlIGNvbXBpbGF0aW9uIGZhaWx1cmUgaWYgb3Jp
Z2luYWwgZGVjbGFyYXRpb24gaGFzIHdyb25nIHR5cGUuICAqLwogICAgICBzc2l6ZV90IHJlYWRs
aW5rIChjb25zdCBjaGFyICosIGNoYXIgKiwgc2l6ZV90KTsKaW50Cm1haW4gKCkKewoKICA7CiAg
cmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVu
IDoKICBnbF9jdl9kZWNsX3JlYWRsaW5rX3dvcmtzPXllcwplbHNlCiAgZ2xfY3ZfZGVjbF9yZWFk
bGlua193b3Jrcz1ubwpmaQpybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2Jq
ZXh0IGNvbmZ0ZXN0LiRhY19leHQKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiByZXN1bHQ6ICRnbF9jdl9kZWNsX3JlYWRsaW5rX3dvcmtzIiA+JjUKJGFzX2VjaG8g
IiRnbF9jdl9kZWNsX3JlYWRsaW5rX3dvcmtzIiA+JjY7IH0KICAgICAgICAgICAgeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHJlYWRsaW5r
IGhhbmRsZXMgdHJhaWxpbmcgc2xhc2ggY29ycmVjdGx5IiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tp
bmcgd2hldGhlciByZWFkbGluayBoYW5kbGVzIHRyYWlsaW5nIHNsYXNoIGNvcnJlY3RseS4uLiAi
ID4mNjsgfQppZiAke2dsX2N2X2Z1bmNfcmVhZGxpbmtfd29ya3MrOn0gZmFsc2U7IHRoZW4gOgog
ICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKICAjIFdlIGhhdmUgcmVhZGxpbmssIHNv
IGFzc3VtZSBsbiAtcyB3b3Jrcy4KICAgICAgIGxuIC1zIGNvbmZ0ZXN0Lm5vLXN1Y2ggY29uZnRl
c3QubGluawogICAgICAgbG4gLXMgY29uZnRlc3QubGluayBjb25mdGVzdC5sbmsyCiAgICAgICBp
ZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CiAgY2FzZSAiJGhvc3Rfb3Mi
IGluCiAgICAgICAgICAgICAgICAgICAgIyBHdWVzcyB5ZXMgb24gZ2xpYmMgc3lzdGVtcy4KICAg
ICAgICAgICAgKi1nbnUqKSBnbF9jdl9mdW5jX3JlYWRsaW5rX3dvcmtzPSJndWVzc2luZyB5ZXMi
IDs7CiAgICAgICAgICAgICAgICAgICAgIyBJZiB3ZSBkb24ndCBrbm93LCBhc3N1bWUgdGhlIHdv
cnN0LgogICAgICAgICAgICAqKSAgICAgIGdsX2N2X2Z1bmNfcmVhZGxpbmtfd29ya3M9Imd1ZXNz
aW5nIG5vIiA7OwogICAgICAgICAgZXNhYwoKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNF
T0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVkZSA8dW5p
c3RkLmg+CgppbnQKbWFpbiAoKQp7CmNoYXIgYnVmWzIwXTsKICAgICAgcmV0dXJuIHJlYWRsaW5r
ICgiY29uZnRlc3QubG5rMi8iLCBidWYsIHNpemVvZiBidWYpICE9IC0xOwogIDsKICByZXR1cm4g
MDsKfQpfQUNFT0YKaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CiAgZ2xfY3Zf
ZnVuY19yZWFkbGlua193b3Jrcz15ZXMKZWxzZQogIGdsX2N2X2Z1bmNfcmVhZGxpbmtfd29ya3M9
bm8KZmkKcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBj
b25mdGVzdCRhY19leGVleHQgXAogIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBj
b25mdGVzdC4kYWNfZXh0CmZpCgogICAgICBybSAtZiBjb25mdGVzdC5saW5rIGNvbmZ0ZXN0Lmxu
azIKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRn
bF9jdl9mdW5jX3JlYWRsaW5rX3dvcmtzIiA+JjUKJGFzX2VjaG8gIiRnbF9jdl9mdW5jX3JlYWRs
aW5rX3dvcmtzIiA+JjY7IH0KICAgIGNhc2UgIiRnbF9jdl9mdW5jX3JlYWRsaW5rX3dvcmtzIiBp
bgogICAgICAqeWVzKQogICAgICAgIGlmIHRlc3QgIiRnbF9jdl9kZWNsX3JlYWRsaW5rX3dvcmtz
IiAhPSB5ZXM7IHRoZW4KICAgICAgICAgIFJFUExBQ0VfUkVBRExJTks9MQogICAgICAgIGZpCiAg
ICAgICAgOzsKICAgICAgKikKCiRhc19lY2hvICIjZGVmaW5lIFJFQURMSU5LX1RSQUlMSU5HX1NM
QVNIX0JVRyAxIiA+PmNvbmZkZWZzLmgKCiAgICAgICAgUkVQTEFDRV9SRUFETElOSz0xCiAgICAg
ICAgOzsKICAgIGVzYWMKICBmaQoKICBpZiB0ZXN0ICRIQVZFX1JFQURMSU5LID0gMCB8fCB0ZXN0
ICRSRVBMQUNFX1JFQURMSU5LID0gMTsgdGhlbgoKCgoKCgoKCiAgZ2xfTElCT0JKUz0iJGdsX0xJ
Qk9CSlMgcmVhZGxpbmsuJGFjX29iamV4dCIKCgogIDoKCiAgZmkKCgoKCgogICAgICAgICAgR05V
TElCX1JFQURMSU5LPTEKCgoKCgokYXNfZWNobyAiI2RlZmluZSBHTlVMSUJfVEVTVF9SRUFETElO
SyAxIiA+PmNvbmZkZWZzLmgKCgoKCgoKICA6CgoKCgoKICBpZiB0ZXN0ICRhY19jdl9mdW5jX3Np
Z2FjdGlvbiA9IHllczsgdGhlbgogICAgYWNfZm5fY19jaGVja19tZW1iZXIgIiRMSU5FTk8iICJz
dHJ1Y3Qgc2lnYWN0aW9uIiAic2Ffc2lnYWN0aW9uIiAiYWNfY3ZfbWVtYmVyX3N0cnVjdF9zaWdh
Y3Rpb25fc2Ffc2lnYWN0aW9uIiAiI2luY2x1ZGUgPHNpZ25hbC5oPgoiCmlmIHRlc3QgIngkYWNf
Y3ZfbWVtYmVyX3N0cnVjdF9zaWdhY3Rpb25fc2Ffc2lnYWN0aW9uIiA9IHh5ZXM7IHRoZW4gOgoK
Y2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5lIEhBVkVfU1RSVUNUX1NJR0FDVElPTl9T
QV9TSUdBQ1RJT04gMQpfQUNFT0YKCgpmaQoKICAgIGlmIHRlc3QgJGFjX2N2X21lbWJlcl9zdHJ1
Y3Rfc2lnYWN0aW9uX3NhX3NpZ2FjdGlvbiA9IG5vOyB0aGVuCiAgICAgIEhBVkVfU1RSVUNUX1NJ
R0FDVElPTl9TQV9TSUdBQ1RJT049MAogICAgZmkKICBlbHNlCiAgICBIQVZFX1NJR0FDVElPTj0w
CiAgZmkKCiAgaWYgdGVzdCAkSEFWRV9TSUdBQ1RJT04gPSAwOyB0aGVuCgoKCgoKCgoKICBnbF9M
SUJPQkpTPSIkZ2xfTElCT0JKUyBzaWdhY3Rpb24uJGFjX29iamV4dCIKCgoKCgoKCiAgOgoKCgoK
CgoKCiAgYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAic2lnaW5mb190IiAiYWNfY3ZfdHlw
ZV9zaWdpbmZvX3QiICIKI2luY2x1ZGUgPHNpZ25hbC5oPgoKIgppZiB0ZXN0ICJ4JGFjX2N2X3R5
cGVfc2lnaW5mb190IiA9IHh5ZXM7IHRoZW4gOgoKY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgoj
ZGVmaW5lIEhBVkVfU0lHSU5GT19UIDEKX0FDRU9GCgoKZmkKCiAgaWYgdGVzdCAkYWNfY3ZfdHlw
ZV9zaWdpbmZvX3QgPSBubzsgdGhlbgogICAgSEFWRV9TSUdJTkZPX1Q9MAogIGZpCgogIGZpCgoK
CgoKICAgICAgICAgIEdOVUxJQl9TSUdBQ1RJT049MQoKCgoKCiRhc19lY2hvICIjZGVmaW5lIEdO
VUxJQl9URVNUX1NJR0FDVElPTiAxIiA+PmNvbmZkZWZzLmgKCgoKCgoKCgoKCgoKCgogICAgIGlm
IHRlc3QgJGdsX2N2X2hhdmVfaW5jbHVkZV9uZXh0ID0geWVzOyB0aGVuCiAgICAgICBnbF9jdl9u
ZXh0X3NpZ25hbF9oPSc8J3NpZ25hbC5oJz4nCiAgICAgZWxzZQogICAgICAgeyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBhYnNvbHV0ZSBuYW1lIG9mIDxz
aWduYWwuaD4iID4mNQokYXNfZWNob19uICJjaGVja2luZyBhYnNvbHV0ZSBuYW1lIG9mIDxzaWdu
YWwuaD4uLi4gIiA+JjY7IH0KaWYgJHtnbF9jdl9uZXh0X3NpZ25hbF9oKzp9IGZhbHNlOyB0aGVu
IDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCgogICAgICAgICAgICAgICBjYXQg
Y29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5o
LiAgKi8KI2luY2x1ZGUgPHNpZ25hbC5oPgoKX0FDRU9GCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIiRob3N0X29zIiBp
bgogICAgICAgICAgICAgICAgIGFpeCopIGdsX2Fic25hbWVfY3BwPSIkYWNfY3BwIC1DIiA7Owog
ICAgICAgICAgICAgICAgICopICAgIGdsX2Fic25hbWVfY3BwPSIkYWNfY3BwIiA7OwogICAgICAg
ICAgICAgICBlc2FjCgogICAgICAgICAgICAgICBjYXNlICIkaG9zdF9vcyIgaW4KICAgICAgICAg
ICAgICAgICBtaW5ndyopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9kaXJzZXBfcmVnZXg9J1svXFxd
JwogICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAqKQogICAgICAgICAgICAg
ICAgICAgZ2xfZGlyc2VwX3JlZ2V4PSdcLycKICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAg
ICAgICAgIGVzYWMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2xfbWFrZV9saXRlcmFsX3JlZ2V4X3NlZD0ncyxbXSReXFwuKi9bXSxcXCYsZycKCiAgICAgICAg
ICAgICAgIGdsX2hlYWRlcl9saXRlcmFsX3JlZ2V4PWBlY2hvICdzaWduYWwuaCcgXAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZWQgLWUgIiRnbF9tYWtlX2xpdGVy
YWxfcmVnZXhfc2VkImAKICAgICAgICAgICAgICAgZ2xfYWJzb2x1dGVfaGVhZGVyX3NlZD0iLyR7
Z2xfZGlyc2VwX3JlZ2V4fSR7Z2xfaGVhZGVyX2xpdGVyYWxfcmVnZXh9LyInewogICAgICAgICAg
ICAgICAgICAgcy8uKiJcKC4qJyIke2dsX2RpcnNlcF9yZWdleH0ke2dsX2hlYWRlcl9saXRlcmFs
X3JlZ2V4fSInXCkiLiovXDEvCiAgICAgICAgICAgICAgICAgICBzfF4vW14vXXwvLyZ8CiAgICAg
ICAgICAgICAgICAgICBwCiAgICAgICAgICAgICAgICAgICBxCiAgICAgICAgICAgICAgICAgfScK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2xfY3ZfbmV4dF9zaWduYWxfaD0nIidgKGV2YWwgIiRnbF9hYnNuYW1lX2NwcCBjb25mdGVz
dC4kYWNfZXh0IikgMj4mNSB8CiAgICAgICAgICAgICAgICAgICAgICBzZWQgLW4gIiRnbF9hYnNv
bHV0ZV9oZWFkZXJfc2VkImAnIicKCgpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IHJlc3VsdDogJGdsX2N2X25leHRfc2lnbmFsX2giID4mNQokYXNfZWNobyAiJGds
X2N2X25leHRfc2lnbmFsX2giID4mNjsgfQogICAgIGZpCiAgICAgTkVYVF9TSUdOQUxfSD0kZ2xf
Y3ZfbmV4dF9zaWduYWxfaAoKICAgICBpZiB0ZXN0ICRnbF9jdl9oYXZlX2luY2x1ZGVfbmV4dCA9
IHllcyB8fCB0ZXN0ICRnbF9jdl9oYXZlX2luY2x1ZGVfbmV4dCA9IGJ1Z2d5OyB0aGVuCiAgICAg
ICAjIElOQ0xVREVfTkVYVF9BU19GSVJTVF9ESVJFQ1RJVkU9J2luY2x1ZGVfbmV4dCcKICAgICAg
IGdsX25leHRfYXNfZmlyc3RfZGlyZWN0aXZlPSc8J3NpZ25hbC5oJz4nCiAgICAgZWxzZQogICAg
ICAgIyBJTkNMVURFX05FWFRfQVNfRklSU1RfRElSRUNUSVZFPSdpbmNsdWRlJwogICAgICAgZ2xf
bmV4dF9hc19maXJzdF9kaXJlY3RpdmU9JGdsX2N2X25leHRfc2lnbmFsX2gKICAgICBmaQogICAg
IE5FWFRfQVNfRklSU1RfRElSRUNUSVZFX1NJR05BTF9IPSRnbF9uZXh0X2FzX2ZpcnN0X2RpcmVj
dGl2ZQoKCgoKCiMgQUlYIGRlY2xhcmVzIHNpZ19hdG9taWNfdCB0byBhbHJlYWR5IGluY2x1ZGUg
dm9sYXRpbGUsIGFuZCBDODkgY29tcGlsZXJzCiMgdGhlbiBjaG9rZSBvbiAndm9sYXRpbGUgc2ln
X2F0b21pY190Jy4gIEM5OSByZXF1aXJlcyB0aGF0IGl0IGNvbXBpbGUuCiAgYWNfZm5fY19jaGVj
a190eXBlICIkTElORU5PIiAidm9sYXRpbGUgc2lnX2F0b21pY190IiAiYWNfY3ZfdHlwZV92b2xh
dGlsZV9zaWdfYXRvbWljX3QiICIKI2luY2x1ZGUgPHNpZ25hbC5oPgoKIgppZiB0ZXN0ICJ4JGFj
X2N2X3R5cGVfdm9sYXRpbGVfc2lnX2F0b21pY190IiA9IHh5ZXM7IHRoZW4gOgoKZWxzZQogIEhB
VkVfVFlQRV9WT0xBVElMRV9TSUdfQVRPTUlDX1Q9MApmaQoKCgoKCgoKICBhY19mbl9jX2NoZWNr
X3R5cGUgIiRMSU5FTk8iICJzaWdoYW5kbGVyX3QiICJhY19jdl90eXBlX3NpZ2hhbmRsZXJfdCIg
IgojaW5jbHVkZSA8c2lnbmFsLmg+CgoiCmlmIHRlc3QgIngkYWNfY3ZfdHlwZV9zaWdoYW5kbGVy
X3QiID0geHllczsgdGhlbiA6CgplbHNlCiAgSEFWRV9TSUdIQU5ETEVSX1Q9MApmaQoKCgogICAg
Zm9yIGdsX2Z1bmMgaW4gcHRocmVhZF9zaWdtYXNrIHNpZ2FjdGlvbiAgICAgc2lnYWRkc2V0IHNp
Z2RlbHNldCBzaWdlbXB0eXNldCBzaWdmaWxsc2V0IHNpZ2lzbWVtYmVyICAgICBzaWdwZW5kaW5n
IHNpZ3Byb2NtYXNrOyBkbwogICAgYXNfZ2xfU3ltYm9sPWAkYXNfZWNobyAiZ2xfY3ZfaGF2ZV9y
YXdfZGVjbF8kZ2xfZnVuYyIgfCAkYXNfdHJfc2hgCiAgICB7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgJGdsX2Z1bmMgaXMgZGVjbGFyZWQg
d2l0aG91dCBhIG1hY3JvIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAkZ2xfZnVu
YyBpcyBkZWNsYXJlZCB3aXRob3V0IGEgbWFjcm8uLi4gIiA+JjY7IH0KaWYgZXZhbCBcJHskYXNf
Z2xfU3ltYm9sKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgpl
bHNlCiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQg
Y29uZmRlZnMuaC4gICovCiNpbmNsdWRlIDxzaWduYWwuaD4KCmludAptYWluICgpCnsKI3VuZGVm
ICRnbF9mdW5jCiAgKHZvaWQpICRnbF9mdW5jOwogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKaWYg
YWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgogIGV2YWwgIiRhc19nbF9TeW1i
b2w9eWVzIgplbHNlCiAgZXZhbCAiJGFzX2dsX1N5bWJvbD1ubyIKZmkKcm0gLWYgY29yZSBjb25m
dGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CmZpCmV2YWwgYWNf
cmVzPVwkJGFzX2dsX1N5bWJvbAoJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu
by0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKJGFzX2VjaG8gIiRhY19yZXMiID4mNjsg
fQogICAgaWYgZXZhbCB0ZXN0IFwieFwkIiRhc19nbF9TeW1ib2wiXCIgPSB4InllcyI7IHRoZW4g
OgogIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBgJGFzX2VjaG8gIkhBVkVfUkFX
X0RFQ0xfJGdsX2Z1bmMiIHwgJGFzX3RyX2NwcGAgMQpfQUNFT0YKCiAgICAgICAgICAgICAgICAg
ICAgIGV2YWwgYWNfY3ZfaGF2ZV9kZWNsXyRnbF9mdW5jPXllcwpmaQogICAgICBkb25lCgoKCiAg
Zm9yIGFjX2hlYWRlciBpbiBzdGRpbnQuaApkbyA6CiAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9u
Z3JlbCAiJExJTkVOTyIgInN0ZGludC5oIiAiYWNfY3ZfaGVhZGVyX3N0ZGludF9oIiAiJGFjX2lu
Y2x1ZGVzX2RlZmF1bHQiCmlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3N0ZGludF9oIiA9IHh5ZXM7
IHRoZW4gOgogIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBIQVZFX1NURElOVF9I
IDEKX0FDRU9GCgpmaQoKZG9uZQoKICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogY2hlY2tpbmcgZm9yIFNJWkVfTUFYIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcg
Zm9yIFNJWkVfTUFYLi4uICIgPiY2OyB9CmlmICR7Z2xfY3Zfc2l6ZV9tYXgrOn0gZmFsc2U7IHRo
ZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKCiAgICBnbF9jdl9zaXplX21h
eD0KICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5k
IGNvbmZkZWZzLmguICAqLwoKI2luY2x1ZGUgPGxpbWl0cy5oPgojaWYgSEFWRV9TVERJTlRfSAoj
aW5jbHVkZSA8c3RkaW50Lmg+CiNlbmRpZgojaWZkZWYgU0laRV9NQVgKRm91bmQgaXQKI2VuZGlm
CgpfQUNFT0YKaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAogICRF
R1JFUCAiRm91bmQgaXQiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CiAgZ2xfY3Zfc2l6ZV9tYXg9
eWVzCmZpCnJtIC1mIGNvbmZ0ZXN0KgoKICAgIGlmIHRlc3QgLXogIiRnbF9jdl9zaXplX21heCI7
IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgYWNfZm5fY19jb21wdXRlX2ludCAiJExJ
TkVOTyIgInNpemVvZiAoc2l6ZV90KSAqIENIQVJfQklUIC0gMSIgInNpemVfdF9iaXRzX21pbnVz
XzEiICAgICAgICAiI2luY2x1ZGUgPHN0ZGRlZi5oPgojaW5jbHVkZSA8bGltaXRzLmg+IjsgdGhl
biA6CgplbHNlCiAgc2l6ZV90X2JpdHNfbWludXNfMT0KZmkKCiAgICAgIGlmIGFjX2ZuX2NfY29t
cHV0ZV9pbnQgIiRMSU5FTk8iICJzaXplb2YgKHNpemVfdCkgPD0gc2l6ZW9mICh1bnNpZ25lZCBp
bnQpIiAiZml0c19pbl91aW50IiAgICAgICAgIiNpbmNsdWRlIDxzdGRkZWYuaD4iOyB0aGVuIDoK
CmVsc2UKICBmaXRzX2luX3VpbnQ9CmZpCgogICAgICBpZiB0ZXN0IC1uICIkc2l6ZV90X2JpdHNf
bWludXNfMSIgJiYgdGVzdCAtbiAiJGZpdHNfaW5fdWludCI7IHRoZW4KICAgICAgICBpZiB0ZXN0
ICRmaXRzX2luX3VpbnQgPSAxOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh
dCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZz
LmguICAqLwojaW5jbHVkZSA8c3RkZGVmLmg+CiAgICAgICAgICAgICAgICAgZXh0ZXJuIHNpemVf
dCBmb287CiAgICAgICAgICAgICAgICAgZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZm9vOwoKaW50Cm1h
aW4gKCkKewoKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUg
IiRMSU5FTk8iOyB0aGVuIDoKICBmaXRzX2luX3VpbnQ9MApmaQpybSAtZiBjb3JlIGNvbmZ0ZXN0
LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKICAgICAgICBmaQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgJGZpdHNfaW5fdWludCA9IDE7IHRo
ZW4KICAgICAgICAgIGdsX2N2X3NpemVfbWF4PSIoKCgxVSA8PCAkc2l6ZV90X2JpdHNfbWludXNf
MSkgLSAxKSAqIDIgKyAxKSIKICAgICAgICBlbHNlCiAgICAgICAgICBnbF9jdl9zaXplX21heD0i
KCgoMVVMIDw8ICRzaXplX3RfYml0c19taW51c18xKSAtIDEpICogMiArIDEpIgogICAgICAgIGZp
CiAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGdsX2N2X3NpemVfbWF4PScoKHNpemVfdCl+KHNp
emVfdCkwKScKICAgICAgZmkKICAgIGZpCgpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2X3NpemVfbWF4IiA+JjUKJGFzX2VjaG8gIiRnbF9j
dl9zaXplX21heCIgPiY2OyB9CiAgaWYgdGVzdCAiJGdsX2N2X3NpemVfbWF4IiAhPSB5ZXM7IHRo
ZW4KCmNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBTSVpFX01BWCAkZ2xfY3Zfc2l6
ZV9tYXgKX0FDRU9GCgogIGZpCgoKCgogIGdsX2N2X2Z1bmNfc25wcmludGZfdXNhYmxlPW5vCiAg
Zm9yIGFjX2Z1bmMgaW4gc25wcmludGYKZG8gOgogIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVO
TyIgInNucHJpbnRmIiAiYWNfY3ZfZnVuY19zbnByaW50ZiIKaWYgdGVzdCAieCRhY19jdl9mdW5j
X3NucHJpbnRmIiA9IHh5ZXM7IHRoZW4gOgogIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2Rl
ZmluZSBIQVZFX1NOUFJJTlRGIDEKX0FDRU9GCgpmaQpkb25lCgogIGlmIHRlc3QgJGFjX2N2X2Z1
bmNfc25wcmludGYgPSB5ZXM7IHRoZW4KCgoKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgc25wcmludGYgcmVzcGVjdHMgYSBzaXplIG9m
IDEiID4mNQokYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHNucHJpbnRmIHJlc3BlY3RzIGEg
c2l6ZSBvZiAxLi4uICIgPiY2OyB9CmlmICR7Z2xfY3ZfZnVuY19zbnByaW50Zl9zaXplMSs6fSBm
YWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQoKICAgICAgaWYg
dGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgogIGdsX2N2X2Z1bmNfc25wcmlu
dGZfc2l6ZTE9Imd1ZXNzaW5nIHllcyIKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0Yg
PmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwoKI2luY2x1ZGUgPHN0ZGlv
Lmg+CiNpZiBIQVZFX1NOUFJJTlRGCiMgZGVmaW5lIG15X3NucHJpbnRmIHNucHJpbnRmCiNlbHNl
CiMgaW5jbHVkZSA8c3RkYXJnLmg+CnN0YXRpYyBpbnQgbXlfc25wcmludGYgKGNoYXIgKmJ1Ziwg
aW50IHNpemUsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQp7CiAgdmFfbGlzdCBhcmdzOwogIGlu
dCByZXQ7CiAgdmFfc3RhcnQgKGFyZ3MsIGZvcm1hdCk7CiAgcmV0ID0gdnNucHJpbnRmIChidWYs
IHNpemUsIGZvcm1hdCwgYXJncyk7CiAgdmFfZW5kIChhcmdzKTsKICByZXR1cm4gcmV0Owp9CiNl
bmRpZgppbnQgbWFpbigpCnsKICBzdGF0aWMgY2hhciBidWZbOF0gPSB7ICdEJywgJ0UnLCAnQScs
ICdEJywgJ0InLCAnRScsICdFJywgJ0YnIH07CiAgbXlfc25wcmludGYgKGJ1ZiwgMSwgIiVkIiwg
MTIzNDUpOwogIHJldHVybiBidWZbMV0gIT0gJ0UnOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9y
dW4gIiRMSU5FTk8iOyB0aGVuIDoKICBnbF9jdl9mdW5jX3NucHJpbnRmX3NpemUxPXllcwplbHNl
CiAgZ2xfY3ZfZnVuY19zbnByaW50Zl9zaXplMT1ubwpmaQpybSAtZiBjb3JlICouY29yZSBjb3Jl
LmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCiAgY29uZnRl
c3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKZmkKCgpmaQp7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2X2Z1bmNf
c25wcmludGZfc2l6ZTEiID4mNQokYXNfZWNobyAiJGdsX2N2X2Z1bmNfc25wcmludGZfc2l6ZTEi
ID4mNjsgfQoKICAgIGNhc2UgIiRnbF9jdl9mdW5jX3NucHJpbnRmX3NpemUxIiBpbgogICAgICAq
eWVzKQoKICAgICAgICBjYXNlICIkZ2xfY3ZfZnVuY19zbnByaW50Zl9yZXR2YWxfYzk5IiBpbgog
ICAgICAgICAgKnllcykKCgogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogY2hlY2tpbmcgd2hldGhlciBwcmludGYgc3VwcG9ydHMgUE9TSVgvWFNJIGZvcm1hdCBz
dHJpbmdzIHdpdGggcG9zaXRpb25zIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBw
cmludGYgc3VwcG9ydHMgUE9TSVgvWFNJIGZvcm1hdCBzdHJpbmdzIHdpdGggcG9zaXRpb25zLi4u
ICIgPiY2OyB9CmlmICR7Z2xfY3ZfZnVuY19wcmludGZfcG9zaXRpb25zKzp9IGZhbHNlOyB0aGVu
IDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCgogICAgICBpZiB0ZXN0ICIkY3Jv
c3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CgogICAgICAgICBjYXNlICIkaG9zdF9vcyIgaW4K
ICAgICAgICAgICBuZXRic2RbMS0zXSogfCBuZXRic2RlbGZbMS0zXSogfCBuZXRic2Rhb3V0WzEt
M10qIHwgbmV0YnNkY29mZlsxLTNdKikKICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2N2X2Z1
bmNfcHJpbnRmX3Bvc2l0aW9ucz0iZ3Vlc3Npbmcgbm8iOzsKICAgICAgICAgICBiZW9zKikgICAg
ICAgIGdsX2N2X2Z1bmNfcHJpbnRmX3Bvc2l0aW9ucz0iZ3Vlc3Npbmcgbm8iOzsKICAgICAgICAg
ICBtaW5ndyogfCBwdyopIGdsX2N2X2Z1bmNfcHJpbnRmX3Bvc2l0aW9ucz0iZ3Vlc3Npbmcgbm8i
OzsKICAgICAgICAgICAqKSAgICAgICAgICAgIGdsX2N2X2Z1bmNfcHJpbnRmX3Bvc2l0aW9ucz0i
Z3Vlc3NpbmcgeWVzIjs7CiAgICAgICAgIGVzYWMKCmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8
X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCiNpbmNsdWRl
IDxzdGRpby5oPgojaW5jbHVkZSA8c3RyaW5nLmg+Ci8qIFRoZSBzdHJpbmcgIiUyJGQgJTEkZCIs
IHdpdGggZG9sbGFyIGNoYXJhY3RlcnMgcHJvdGVjdGVkIGZyb20gdGhlIHNoZWxsJ3MKICAgZG9s
bGFyIGV4cGFuc2lvbiAocG9zc2libHkgYW4gYXV0b2NvbmYgYnVnKS4gICovCnN0YXRpYyBjaGFy
IGZvcm1hdFtdID0geyAnJScsICcyJywgJyQnLCAnZCcsICcgJywgJyUnLCAnMScsICckJywgJ2Qn
LCAnXDAnIH07CnN0YXRpYyBjaGFyIGJ1ZlsxMDBdOwppbnQgbWFpbiAoKQp7CiAgc3ByaW50ZiAo
YnVmLCBmb3JtYXQsIDMzLCA1NSk7CiAgcmV0dXJuIChzdHJjbXAgKGJ1ZiwgIjU1IDMzIikgIT0g
MCk7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgogIGdsX2N2
X2Z1bmNfcHJpbnRmX3Bvc2l0aW9ucz15ZXMKZWxzZQogIGdsX2N2X2Z1bmNfcHJpbnRmX3Bvc2l0
aW9ucz1ubwpmaQpybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIu
b3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCiAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5i
ZWFtIGNvbmZ0ZXN0LiRhY19leHQKZmkKCgpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2X2Z1bmNfcHJpbnRmX3Bvc2l0aW9ucyIgPiY1CiRh
c19lY2hvICIkZ2xfY3ZfZnVuY19wcmludGZfcG9zaXRpb25zIiA+JjY7IH0KCiAgICAgICAgICAg
IGNhc2UgIiRnbF9jdl9mdW5jX3ByaW50Zl9wb3NpdGlvbnMiIGluCiAgICAgICAgICAgICAgKnll
cykKICAgICAgICAgICAgICAgIGdsX2N2X2Z1bmNfc25wcmludGZfdXNhYmxlPXllcwogICAgICAg
ICAgICAgICAgOzsKICAgICAgICAgICAgZXNhYwogICAgICAgICAgICA7OwogICAgICAgIGVzYWMK
ICAgICAgICA7OwogICAgZXNhYwogIGZpCiAgaWYgdGVzdCAkZ2xfY3ZfZnVuY19zbnByaW50Zl91
c2FibGUgPSBubzsgdGhlbgoKCgoKCgoKCgoKICBnbF9MSUJPQkpTPSIkZ2xfTElCT0JKUyBzbnBy
aW50Zi4kYWNfb2JqZXh0IgoKICBpZiB0ZXN0ICRhY19jdl9mdW5jX3NucHJpbnRmID0geWVzOyB0
aGVuCiAgICBSRVBMQUNFX1NOUFJJTlRGPTEKICBmaQogIDoKCiAgZmkKCiAgOgoKCgoKCiAgaWYg
dGVzdCAkYWNfY3ZfaGF2ZV9kZWNsX3NucHJpbnRmID0gbm87IHRoZW4KICAgIEhBVkVfREVDTF9T
TlBSSU5URj0wCiAgZmkKCgoKCgoKICAgICAgICAgIEdOVUxJQl9TTlBSSU5URj0xCgoKCgoKJGFz
X2VjaG8gIiNkZWZpbmUgR05VTElCX1RFU1RfU05QUklOVEYgMSIgPj5jb25mZGVmcy5oCgoKCgoK
Y2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5lIEdOVUxJQl9TTlBSSU5URiAxCl9BQ0VP
RgoKCgoKCgoKCgoKCgoKCgoKCiAgZ2xfY3ZfZnVuY19zcHJpbnRmX3Bvc2l4PW5vCiAgY2FzZSAi
JGdsX2N2X2Z1bmNfcHJpbnRmX3NpemVzX2M5OSIgaW4KICAgICp5ZXMpCiAgICAgIGNhc2UgIiRn
bF9jdl9mdW5jX3ByaW50Zl9sb25nX2RvdWJsZSIgaW4KICAgICAgICAqeWVzKQogICAgICAgICAg
Y2FzZSAiJGdsX2N2X2Z1bmNfcHJpbnRmX2luZmluaXRlIiBpbgogICAgICAgICAgICAqeWVzKQog
ICAgICAgICAgICAgIGNhc2UgIiRnbF9jdl9mdW5jX3ByaW50Zl9pbmZpbml0ZV9sb25nX2RvdWJs
ZSIgaW4KICAgICAgICAgICAgICAgICp5ZXMpCiAgICAgICAgICAgICAgICAgIGNhc2UgIiRnbF9j
dl9mdW5jX3ByaW50Zl9kaXJlY3RpdmVfYSIgaW4KICAgICAgICAgICAgICAgICAgICAqeWVzKQog
ICAgICAgICAgICAgICAgICAgICAgY2FzZSAiJGdsX2N2X2Z1bmNfcHJpbnRmX2RpcmVjdGl2ZV9m
IiBpbgogICAgICAgICAgICAgICAgICAgICAgICAqeWVzKQogICAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgIiRnbF9jdl9mdW5jX3ByaW50Zl9kaXJlY3RpdmVfbiIgaW4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICp5ZXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
IiRnbF9jdl9mdW5jX3ByaW50Zl9kaXJlY3RpdmVfbHMiIGluCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKnllcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
IiRnbF9jdl9mdW5jX3ByaW50Zl9wb3NpdGlvbnMiIGluCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICp5ZXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSAiJGdsX2N2X2Z1bmNfcHJpbnRmX2ZsYWdfZ3JvdXBpbmciIGluCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqeWVzKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlICIkZ2xfY3ZfZnVuY19wcmludGZfZmxhZ19sZWZ0YWRqdXN0
IiBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp5ZXMpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICIkZ2xfY3Zf
ZnVuY19wcmludGZfZmxhZ196ZXJvIiBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqeWVzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgIiRnbF9jdl9mdW5jX3ByaW50Zl9wcmVjaXNpb24iIGluCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqeWVzKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNl
ICIkZ2xfY3ZfZnVuY19wcmludGZfZW5vbWVtIiBpbgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp5ZXMpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNwcmludGYgZXhpc3RzIGFu
ZCBpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIyBhbHJlYWR5IFBPU0lYIGNvbXBsaWFudC4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2N2X2Z1bmNfc3ByaW50Zl9wb3Np
eD15ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVzYWMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlc2FjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzYWMK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzYWMKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlc2FjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzYWMKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzYWMKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICAgICAgICBlc2Fj
CiAgICAgICAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICAgIGVzYWMK
ICAgICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgIGVzYWMKICAgICAgICAg
ICAgICAgICAgOzsKICAgICAgICAgICAgICBlc2FjCiAgICAgICAgICAgICAgOzsKICAgICAgICAg
IGVzYWMKICAgICAgICAgIDs7CiAgICAgIGVzYWMKICAgICAgOzsKICBlc2FjCiAgaWYgdGVzdCAk
Z2xfY3ZfZnVuY19zcHJpbnRmX3Bvc2l4ID0gbm87IHRoZW4KCgoKICBjYXNlICIkZ2xfY3ZfZnVu
Y19wcmludGZfaW5maW5pdGUiIGluCiAgICAqeWVzKQogICAgICA7OwogICAgKikKCiRhc19lY2hv
ICIjZGVmaW5lIE5FRURfUFJJTlRGX0lORklOSVRFX0RPVUJMRSAxIiA+PmNvbmZkZWZzLmgKCiAg
ICAgIDs7CiAgZXNhYwoKCgoKICBjYXNlICIkZ2xfY3ZfZnVuY19wcmludGZfbG9uZ19kb3VibGUi
IGluCiAgICAqeWVzKQogICAgICBjYXNlICIkZ2xfY3ZfZnVuY19wcmludGZfaW5maW5pdGVfbG9u
Z19kb3VibGUiIGluCiAgICAgICAgKnllcykKICAgICAgICAgIDs7CiAgICAgICAgKikKCiRhc19l
Y2hvICIjZGVmaW5lIE5FRURfUFJJTlRGX0lORklOSVRFX0xPTkdfRE9VQkxFIDEiID4+Y29uZmRl
ZnMuaAoKICAgICAgICAgIDs7CiAgICAgIGVzYWMKICAgICAgOzsKICBlc2FjCgoKCiAgY2FzZSAi
JGdsX2N2X2Z1bmNfcHJpbnRmX2RpcmVjdGl2ZV9hIiBpbgogICAgKnllcykKICAgICAgOzsKICAg
ICopCgokYXNfZWNobyAiI2RlZmluZSBORUVEX1BSSU5URl9ESVJFQ1RJVkVfQSAxIiA+PmNvbmZk
ZWZzLmgKCiAgICAgIGZvciBhY19mdW5jIGluIG5sX2xhbmdpbmZvCmRvIDoKICBhY19mbl9jX2No
ZWNrX2Z1bmMgIiRMSU5FTk8iICJubF9sYW5naW5mbyIgImFjX2N2X2Z1bmNfbmxfbGFuZ2luZm8i
CmlmIHRlc3QgIngkYWNfY3ZfZnVuY19ubF9sYW5naW5mbyIgPSB4eWVzOyB0aGVuIDoKICBjYXQg
Pj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgSEFWRV9OTF9MQU5HSU5GTyAxCl9BQ0VPRgoK
ZmkKZG9uZQoKICAgICAgOzsKICBlc2FjCgoKCiAgY2FzZSAiJGdsX2N2X2Z1bmNfcHJpbnRmX2Rp
cmVjdGl2ZV9mIiBpbgogICAgKnllcykKICAgICAgOzsKICAgICopCgokYXNfZWNobyAiI2RlZmlu
ZSBORUVEX1BSSU5URl9ESVJFQ1RJVkVfRiAxIiA+PmNvbmZkZWZzLmgKCiAgICAgIDs7CiAgZXNh
YwoKCgogIGNhc2UgIiRnbF9jdl9mdW5jX3ByaW50Zl9kaXJlY3RpdmVfbHMiIGluCiAgICAqeWVz
KQogICAgICA7OwogICAgKikKCiRhc19lY2hvICIjZGVmaW5lIE5FRURfUFJJTlRGX0RJUkVDVElW
RV9MUyAxIiA+PmNvbmZkZWZzLmgKCiAgICAgIDs7CiAgZXNhYwoKCgogIGNhc2UgIiRnbF9jdl9m
dW5jX3ByaW50Zl9mbGFnX2dyb3VwaW5nIiBpbgogICAgKnllcykKICAgICAgOzsKICAgICopCgok
YXNfZWNobyAiI2RlZmluZSBORUVEX1BSSU5URl9GTEFHX0dST1VQSU5HIDEiID4+Y29uZmRlZnMu
aAoKICAgICAgOzsKICBlc2FjCgoKCiAgY2FzZSAiJGdsX2N2X2Z1bmNfcHJpbnRmX2ZsYWdfbGVm
dGFkanVzdCIgaW4KICAgICp5ZXMpCiAgICAgIDs7CiAgICAqKQoKJGFzX2VjaG8gIiNkZWZpbmUg
TkVFRF9QUklOVEZfRkxBR19MRUZUQURKVVNUIDEiID4+Y29uZmRlZnMuaAoKICAgICAgOzsKICBl
c2FjCgoKCiAgY2FzZSAiJGdsX2N2X2Z1bmNfcHJpbnRmX2ZsYWdfemVybyIgaW4KICAgICp5ZXMp
CiAgICAgIDs7CiAgICAqKQoKJGFzX2VjaG8gIiNkZWZpbmUgTkVFRF9QUklOVEZfRkxBR19aRVJP
IDEiID4+Y29uZmRlZnMuaAoKICAgICAgOzsKICBlc2FjCgoKCiAgY2FzZSAiJGdsX2N2X2Z1bmNf
cHJpbnRmX3ByZWNpc2lvbiIgaW4KICAgICp5ZXMpCiAgICAgIDs7CiAgICAqKQoKJGFzX2VjaG8g
IiNkZWZpbmUgTkVFRF9QUklOVEZfVU5CT1VOREVEX1BSRUNJU0lPTiAxIiA+PmNvbmZkZWZzLmgK
CgokYXNfZWNobyAiI2RlZmluZSBORUVEX1BSSU5URl9ET1VCTEUgMSIgPj5jb25mZGVmcy5oCgoK
JGFzX2VjaG8gIiNkZWZpbmUgTkVFRF9QUklOVEZfTE9OR19ET1VCTEUgMSIgPj5jb25mZGVmcy5o
CgogICAgICA7OwogIGVzYWMKCgoKICBjYXNlICIkZ2xfY3ZfZnVuY19wcmludGZfZW5vbWVtIiBp
bgogICAgKnllcykKICAgICAgOzsKICAgICopCgokYXNfZWNobyAiI2RlZmluZSBORUVEX1BSSU5U
Rl9FTk9NRU0gMSIgPj5jb25mZGVmcy5oCgoKJGFzX2VjaG8gIiNkZWZpbmUgTkVFRF9QUklOVEZf
RE9VQkxFIDEiID4+Y29uZmRlZnMuaAoKCiRhc19lY2hvICIjZGVmaW5lIE5FRURfUFJJTlRGX0xP
TkdfRE9VQkxFIDEiID4+Y29uZmRlZnMuaAoKICAgICAgOzsKICBlc2FjCgoKCiAgOgoKCgoKCgoK
CgoKCgoKICBnbF9MSUJPQkpTPSIkZ2xfTElCT0JKUyB2YXNucHJpbnRmLiRhY19vYmpleHQiCgoK
CgoKCgoKCiAgZ2xfTElCT0JKUz0iJGdsX0xJQk9CSlMgcHJpbnRmLWFyZ3MuJGFjX29iamV4dCIK
CgoKCgoKCgoKICBnbF9MSUJPQkpTPSIkZ2xfTElCT0JKUyBwcmludGYtcGFyc2UuJGFjX29iamV4
dCIKCgoKCgoKCgoKICBnbF9MSUJPQkpTPSIkZ2xfTElCT0JKUyBhc25wcmludGYuJGFjX29iamV4
dCIKCiAgaWYgdGVzdCAkYWNfY3ZfZnVuY192YXNucHJpbnRmID0geWVzOyB0aGVuCgokYXNfZWNo
byAiI2RlZmluZSBSRVBMQUNFX1ZBU05QUklOVEYgMSIgPj5jb25mZGVmcy5oCgogIGZpCgoKCgoK
CgoKCgoKICBhY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJwdHJkaWZmX3QiICJhY19jdl90
eXBlX3B0cmRpZmZfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgppZiB0ZXN0ICJ4JGFjX2N2X3R5
cGVfcHRyZGlmZl90IiA9IHh5ZXM7IHRoZW4gOgoKZWxzZQoKJGFzX2VjaG8gIiNkZWZpbmUgcHRy
ZGlmZl90IGxvbmciID4+Y29uZmRlZnMuaAoKCmZpCgoKCgoKCgoKCgoKCgoKCgoKICBnbF9MSUJP
QkpTPSIkZ2xfTElCT0JKUyBzcHJpbnRmLiRhY19vYmpleHQiCgogIFJFUExBQ0VfU1BSSU5URj0x
CiAgOgoKICBmaQoKCgoKCgogICAgICAgICAgR05VTElCX1NQUklOVEZfUE9TSVg9MQoKCgoKCiRh
c19lY2hvICIjZGVmaW5lIEdOVUxJQl9URVNUX1NQUklOVEZfUE9TSVggMSIgPj5jb25mZGVmcy5o
CgoKCgogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcg
Zm9yIHNzaXplX3QiID4mNQokYXNfZWNob19uICJjaGVja2luZyBmb3Igc3NpemVfdC4uLiAiID4m
NjsgfQppZiAke2d0X2N2X3NzaXplX3QrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihj
YWNoZWQpICIgPiY2CmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4k
YWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPHN5cy90eXBlcy5oPgppbnQK
bWFpbiAoKQp7CmludCB4ID0gc2l6ZW9mIChzc2l6ZV90ICopICsgc2l6ZW9mIChzc2l6ZV90KTsK
ICAgICAgICAgICAgcmV0dXJuICF4OwogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNfZm5f
Y190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgogIGd0X2N2X3NzaXplX3Q9eWVzCmVsc2UK
ICBndF9jdl9zc2l6ZV90PW5vCmZpCnJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRh
Y19vYmpleHQgY29uZnRlc3QuJGFjX2V4dApmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IHJlc3VsdDogJGd0X2N2X3NzaXplX3QiID4mNQokYXNfZWNobyAiJGd0X2N2
X3NzaXplX3QiID4mNjsgfQogIGlmIHRlc3QgJGd0X2N2X3NzaXplX3QgPSBubzsgdGhlbgoKJGFz
X2VjaG8gIiNkZWZpbmUgc3NpemVfdCBpbnQiID4+Y29uZmRlZnMuaAoKICBmaQoKCgoKICA6CgoK
CgoKICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcg
d2hldGhlciBzdGF0IGhhbmRsZXMgdHJhaWxpbmcgc2xhc2hlcyBvbiBkaXJlY3RvcmllcyIgPiY1
CiRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgc3RhdCBoYW5kbGVzIHRyYWlsaW5nIHNsYXNo
ZXMgb24gZGlyZWN0b3JpZXMuLi4gIiA+JjY7IH0KaWYgJHtnbF9jdl9mdW5jX3N0YXRfZGlyX3Ns
YXNoKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCiAg
aWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgogIGNhc2UgJGhvc3Rfb3Mg
aW4KICAgICAgICAgICAgbWluZ3cqKSBnbF9jdl9mdW5jX3N0YXRfZGlyX3NsYXNoPSJndWVzc2lu
ZyBubyI7OwogICAgICAgICAgICAqKSBnbF9jdl9mdW5jX3N0YXRfZGlyX3NsYXNoPSJndWVzc2lu
ZyB5ZXMiOzsKICAgICAgICAgIGVzYWMKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0Yg
PmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVkZSA8c3lzL3N0
YXQuaD4KCmludAptYWluICgpCnsKc3RydWN0IHN0YXQgc3Q7IHJldHVybiBzdGF0ICgiLiIsICZz
dCkgIT0gc3RhdCAoIi4vIiwgJnN0KTsKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2Zu
X2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgogIGdsX2N2X2Z1bmNfc3RhdF9kaXJfc2xhc2g9
eWVzCmVsc2UKICBnbF9jdl9mdW5jX3N0YXRfZGlyX3NsYXNoPW5vCmZpCnJtIC1mIGNvcmUgKi5j
b3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwK
ICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dApmaQoK
ZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbF9j
dl9mdW5jX3N0YXRfZGlyX3NsYXNoIiA+JjUKJGFzX2VjaG8gIiRnbF9jdl9mdW5jX3N0YXRfZGly
X3NsYXNoIiA+JjY7IH0KICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IGNoZWNraW5nIHdoZXRoZXIgc3RhdCBoYW5kbGVzIHRyYWlsaW5nIHNsYXNoZXMgb24g
ZmlsZXMiID4mNQokYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHN0YXQgaGFuZGxlcyB0cmFp
bGluZyBzbGFzaGVzIG9uIGZpbGVzLi4uICIgPiY2OyB9CmlmICR7Z2xfY3ZfZnVuY19zdGF0X2Zp
bGVfc2xhc2grOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVs
c2UKICB0b3VjaCBjb25mdGVzdC50bXAKICAgICAgICMgQXNzdW1lIHRoYXQgaWYgd2UgaGF2ZSBs
c3RhdCwgd2UgY2FuIGFsc28gY2hlY2sgc3ltbGlua3MuCiAgICAgICBpZiB0ZXN0ICRhY19jdl9m
dW5jX2xzdGF0ID0geWVzOyB0aGVuCiAgICAgICAgIGxuIC1zIGNvbmZ0ZXN0LnRtcCBjb25mdGVz
dC5sbmsKICAgICAgIGZpCiAgICAgICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsg
dGhlbiA6CiAgY2FzZSAiJGhvc3Rfb3MiIGluCiAgICAgICAgICAgICAgICAgICAgIyBHdWVzcyB5
ZXMgb24gZ2xpYmMgc3lzdGVtcy4KICAgICAgICAgICAgKi1nbnUqKSBnbF9jdl9mdW5jX3N0YXRf
ZmlsZV9zbGFzaD0iZ3Vlc3NpbmcgeWVzIiA7OwogICAgICAgICAgICAgICAgICAgICMgSWYgd2Ug
ZG9uJ3Qga25vdywgYXNzdW1lIHRoZSB3b3JzdC4KICAgICAgICAgICAgKikgICAgICBnbF9jdl9m
dW5jX3N0YXRfZmlsZV9zbGFzaD0iZ3Vlc3Npbmcgbm8iIDs7CiAgICAgICAgICBlc2FjCgplbHNl
CiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29u
ZmRlZnMuaC4gICovCiNpbmNsdWRlIDxzeXMvc3RhdC5oPgoKaW50Cm1haW4gKCkKewppbnQgcmVz
dWx0ID0gMDsKICAgICAgc3RydWN0IHN0YXQgc3Q7CiAgICAgIGlmICghc3RhdCAoImNvbmZ0ZXN0
LnRtcC8iLCAmc3QpKQogICAgICAgIHJlc3VsdCB8PSAxOwojaWYgSEFWRV9MU1RBVAogICAgICBp
ZiAoIXN0YXQgKCJjb25mdGVzdC5sbmsvIiwgJnN0KSkKICAgICAgICByZXN1bHQgfD0gMjsKI2Vu
ZGlmCiAgICAgIHJldHVybiByZXN1bHQ7CgogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNf
Zm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CiAgZ2xfY3ZfZnVuY19zdGF0X2ZpbGVfc2xh
c2g9eWVzCmVsc2UKICBnbF9jdl9mdW5jX3N0YXRfZmlsZV9zbGFzaD1ubwpmaQpybSAtZiBjb3Jl
ICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4
dCBcCiAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQK
ZmkKCiAgICAgICBybSAtZiBjb25mdGVzdC50bXAgY29uZnRlc3QubG5rCmZpCnsgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfZnVuY19zdGF0X2Zp
bGVfc2xhc2giID4mNQokYXNfZWNobyAiJGdsX2N2X2Z1bmNfc3RhdF9maWxlX3NsYXNoIiA+JjY7
IH0KICBjYXNlICRnbF9jdl9mdW5jX3N0YXRfZGlyX3NsYXNoIGluCiAgICAqbm8pIFJFUExBQ0Vf
U1RBVD0xCgokYXNfZWNobyAiI2RlZmluZSBSRVBMQUNFX0ZVTkNfU1RBVF9ESVIgMSIgPj5jb25m
ZGVmcy5oCjs7CiAgZXNhYwogIGNhc2UgJGdsX2N2X2Z1bmNfc3RhdF9maWxlX3NsYXNoIGluCiAg
ICAqbm8pIFJFUExBQ0VfU1RBVD0xCgokYXNfZWNobyAiI2RlZmluZSBSRVBMQUNFX0ZVTkNfU1RB
VF9GSUxFIDEiID4+Y29uZmRlZnMuaAo7OwogIGVzYWMKCiAgaWYgdGVzdCAkUkVQTEFDRV9TVEFU
ID0gMTsgdGhlbgoKCgoKCgoKCiAgZ2xfTElCT0JKUz0iJGdsX0xJQk9CSlMgc3RhdC4kYWNfb2Jq
ZXh0IgoKICAgIDoKICBmaQoKCgoKCiAgICAgICAgICBHTlVMSUJfU1RBVD0xCgoKCgoKJGFzX2Vj
aG8gIiNkZWZpbmUgR05VTElCX1RFU1RfU1RBVCAxIiA+PmNvbmZkZWZzLmgKCgoKCiAgU1REQVJH
X0g9JycKICBORVhUX1NUREFSR19IPSc8c3RkYXJnLmg+JwogIHsgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHZhX2NvcHkiID4mNQokYXNfZWNob19u
ICJjaGVja2luZyBmb3IgdmFfY29weS4uLiAiID4mNjsgfQogIGlmICR7Z2xfY3ZfZnVuY192YV9j
b3B5Kzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCgog
ICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29u
ZmRlZnMuaC4gICovCiNpbmNsdWRlIDxzdGRhcmcuaD4KaW50Cm1haW4gKCkKewoKI2lmbmRlZiB2
YV9jb3B5CnZvaWQgKCpmdW5jKSAodmFfbGlzdCwgdmFfbGlzdCkgPSB2YV9jb3B5OwojZW5kaWYK
CiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5P
IjsgdGhlbiA6CiAgZ2xfY3ZfZnVuY192YV9jb3B5PXllcwplbHNlCiAgZ2xfY3ZfZnVuY192YV9j
b3B5PW5vCmZpCnJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29u
ZnRlc3QuJGFjX2V4dApmaQoKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IHJlc3VsdDogJGdsX2N2X2Z1bmNfdmFfY29weSIgPiY1CiRhc19lY2hvICIkZ2xfY3ZfZnVu
Y192YV9jb3B5IiA+JjY7IH0KICBpZiB0ZXN0ICRnbF9jdl9mdW5jX3ZhX2NvcHkgPSBubzsgdGhl
bgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8
X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2lmIGRlZmlu
ZWQgX0FJWCAmJiAhZGVmaW5lZCBfX0dOVUNfXwogICAgICAgIEFJWCB2YWNjaW5lCiAgICAgICAj
ZW5kaWYKCl9BQ0VPRgppZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8
CiAgJEVHUkVQICJ2YWNjaW5lIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgogIGdsX2FpeGNjPXll
cwplbHNlCiAgZ2xfYWl4Y2M9bm8KZmkKcm0gLWYgY29uZnRlc3QqCgogICAgaWYgdGVzdCAkZ2xf
YWl4Y2MgPSB5ZXM7IHRoZW4KICAgICAgICAgICAgU1REQVJHX0g9c3RkYXJnLmgKCgoKCgoKCgog
ICAgIGlmIHRlc3QgJGdsX2N2X2hhdmVfaW5jbHVkZV9uZXh0ID0geWVzOyB0aGVuCiAgICAgICBn
bF9jdl9uZXh0X3N0ZGFyZ19oPSc8J3N0ZGFyZy5oJz4nCiAgICAgZWxzZQogICAgICAgeyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBhYnNvbHV0ZSBuYW1l
IG9mIDxzdGRhcmcuaD4iID4mNQokYXNfZWNob19uICJjaGVja2luZyBhYnNvbHV0ZSBuYW1lIG9m
IDxzdGRhcmcuaD4uLi4gIiA+JjY7IH0KaWYgJHtnbF9jdl9uZXh0X3N0ZGFyZ19oKzp9IGZhbHNl
OyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCgogICAgICAgICAgICAg
ICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25m
ZGVmcy5oLiAgKi8KI2luY2x1ZGUgPHN0ZGFyZy5oPgoKX0FDRU9GCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIiRob3N0
X29zIiBpbgogICAgICAgICAgICAgICAgIGFpeCopIGdsX2Fic25hbWVfY3BwPSIkYWNfY3BwIC1D
IiA7OwogICAgICAgICAgICAgICAgICopICAgIGdsX2Fic25hbWVfY3BwPSIkYWNfY3BwIiA7Owog
ICAgICAgICAgICAgICBlc2FjCgogICAgICAgICAgICAgICBjYXNlICIkaG9zdF9vcyIgaW4KICAg
ICAgICAgICAgICAgICBtaW5ndyopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9kaXJzZXBfcmVnZXg9
J1svXFxdJwogICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAqKQogICAgICAg
ICAgICAgICAgICAgZ2xfZGlyc2VwX3JlZ2V4PSdcLycKICAgICAgICAgICAgICAgICAgIDs7CiAg
ICAgICAgICAgICAgIGVzYWMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2xfbWFrZV9saXRlcmFsX3JlZ2V4X3NlZD0ncyxbXSReXFwuKi9bXSxcXCYsZycKCiAg
ICAgICAgICAgICAgIGdsX2hlYWRlcl9saXRlcmFsX3JlZ2V4PWBlY2hvICdzdGRhcmcuaCcgXAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZWQgLWUgIiRnbF9tYWtl
X2xpdGVyYWxfcmVnZXhfc2VkImAKICAgICAgICAgICAgICAgZ2xfYWJzb2x1dGVfaGVhZGVyX3Nl
ZD0iLyR7Z2xfZGlyc2VwX3JlZ2V4fSR7Z2xfaGVhZGVyX2xpdGVyYWxfcmVnZXh9LyInewogICAg
ICAgICAgICAgICAgICAgcy8uKiJcKC4qJyIke2dsX2RpcnNlcF9yZWdleH0ke2dsX2hlYWRlcl9s
aXRlcmFsX3JlZ2V4fSInXCkiLiovXDEvCiAgICAgICAgICAgICAgICAgICBzfF4vW14vXXwvLyZ8
CiAgICAgICAgICAgICAgICAgICBwCiAgICAgICAgICAgICAgICAgICBxCiAgICAgICAgICAgICAg
ICAgfScKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2xfY3ZfbmV4dF9zdGRhcmdfaD0nIidgKGV2YWwgIiRnbF9hYnNuYW1lX2NwcCBj
b25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CiAgICAgICAgICAgICAgICAgICAgICBzZWQgLW4gIiRn
bF9hYnNvbHV0ZV9oZWFkZXJfc2VkImAnIicKCgpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19s
aW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2X25leHRfc3RkYXJnX2giID4mNQokYXNfZWNo
byAiJGdsX2N2X25leHRfc3RkYXJnX2giID4mNjsgfQogICAgIGZpCiAgICAgTkVYVF9TVERBUkdf
SD0kZ2xfY3ZfbmV4dF9zdGRhcmdfaAoKICAgICBpZiB0ZXN0ICRnbF9jdl9oYXZlX2luY2x1ZGVf
bmV4dCA9IHllcyB8fCB0ZXN0ICRnbF9jdl9oYXZlX2luY2x1ZGVfbmV4dCA9IGJ1Z2d5OyB0aGVu
CiAgICAgICAjIElOQ0xVREVfTkVYVF9BU19GSVJTVF9ESVJFQ1RJVkU9J2luY2x1ZGVfbmV4dCcK
ICAgICAgIGdsX25leHRfYXNfZmlyc3RfZGlyZWN0aXZlPSc8J3N0ZGFyZy5oJz4nCiAgICAgZWxz
ZQogICAgICAgIyBJTkNMVURFX05FWFRfQVNfRklSU1RfRElSRUNUSVZFPSdpbmNsdWRlJwogICAg
ICAgZ2xfbmV4dF9hc19maXJzdF9kaXJlY3RpdmU9JGdsX2N2X25leHRfc3RkYXJnX2gKICAgICBm
aQogICAgIE5FWFRfQVNfRklSU1RfRElSRUNUSVZFX1NUREFSR19IPSRnbF9uZXh0X2FzX2ZpcnN0
X2RpcmVjdGl2ZQoKCgoKICAgICAgICAgICAgaWYgdGVzdCAiJGdsX2N2X25leHRfc3RkYXJnX2gi
ID0gJyIiJzsgdGhlbgogICAgICAgIGdsX2N2X25leHRfc3RkYXJnX2g9JyIvLy91c3IvaW5jbHVk
ZS9zdGRhcmcuaCInCiAgICAgICAgTkVYVF9TVERBUkdfSD0iJGdsX2N2X25leHRfc3RkYXJnX2gi
CiAgICAgIGZpCiAgICBlbHNlCgogIHNhdmVkX2FzX2VjaG9fbj0iJGFzX2VjaG9fbiIKICBhc19l
Y2hvX249JzonCiAgaWYgJHtnbF9jdl9mdW5jX19fdmFfY29weSs6fSBmYWxzZTsgdGhlbiA6CiAg
JGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQoKICAgICAgICBjYXQgY29uZmRlZnMuaCAt
IDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1
ZGUgPHN0ZGFyZy5oPgppbnQKbWFpbiAoKQp7CgojaWZuZGVmIF9fdmFfY29weQplcnJvciwgYmFp
bCBvdXQKI2VuZGlmCgogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNfZm5fY190cnlfY29t
cGlsZSAiJExJTkVOTyI7IHRoZW4gOgogIGdsX2N2X2Z1bmNfX192YV9jb3B5PXllcwplbHNlCiAg
Z2xfY3ZfZnVuY19fX3ZhX2NvcHk9bm8KZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRl
c3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CmZpCgogIGFzX2VjaG9fbj0iJHNhdmVkX2Fz
X2VjaG9fbiIKCiAgICAgIGlmIHRlc3QgJGdsX2N2X2Z1bmNfX192YV9jb3B5ID0geWVzOyB0aGVu
CgokYXNfZWNobyAiI2RlZmluZSB2YV9jb3B5IF9fdmFfY29weSIgPj5jb25mZGVmcy5oCgogICAg
ICBlbHNlCgoKJGFzX2VjaG8gIiNkZWZpbmUgdmFfY29weSBnbF92YV9jb3B5IiA+PmNvbmZkZWZz
LmgKCiAgICAgIGZpCiAgICBmaQogIGZpCgogICBpZiB0ZXN0IC1uICIkU1REQVJHX0giOyB0aGVu
CiAgR0xfR0VORVJBVEVfU1REQVJHX0hfVFJVRT0KICBHTF9HRU5FUkFURV9TVERBUkdfSF9GQUxT
RT0nIycKZWxzZQogIEdMX0dFTkVSQVRFX1NUREFSR19IX1RSVUU9JyMnCiAgR0xfR0VORVJBVEVf
U1REQVJHX0hfRkFMU0U9CmZpCgoKCgoKCiAgIyBEZWZpbmUgdHdvIGFkZGl0aW9uYWwgdmFyaWFi
bGVzIHVzZWQgaW4gdGhlIE1ha2VmaWxlIHN1YnN0aXR1dGlvbi4KCiAgaWYgdGVzdCAiJGFjX2N2
X2hlYWRlcl9zdGRib29sX2giID0geWVzOyB0aGVuCiAgICBTVERCT09MX0g9JycKICBlbHNlCiAg
ICBTVERCT09MX0g9J3N0ZGJvb2wuaCcKICBmaQoKICAgaWYgdGVzdCAtbiAiJFNUREJPT0xfSCI7
IHRoZW4KICBHTF9HRU5FUkFURV9TVERCT09MX0hfVFJVRT0KICBHTF9HRU5FUkFURV9TVERCT09M
X0hfRkFMU0U9JyMnCmVsc2UKICBHTF9HRU5FUkFURV9TVERCT09MX0hfVFJVRT0nIycKICBHTF9H
RU5FUkFURV9TVERCT09MX0hfRkFMU0U9CmZpCgoKICBpZiB0ZXN0ICIkYWNfY3ZfdHlwZV9fQm9v
bCIgPSB5ZXM7IHRoZW4KICAgIEhBVkVfX0JPT0w9MQogIGVsc2UKICAgIEhBVkVfX0JPT0w9MAog
IGZpCgoKCgoKICBTVERERUZfSD0KICBpZiB0ZXN0ICRndF9jdl9jX3djaGFyX3QgPSBubzsgdGhl
bgogICAgSEFWRV9XQ0hBUl9UPTAKICAgIFNURERFRl9IPXN0ZGRlZi5oCiAgZmkKICB7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgTlVMTCBj
YW4gYmUgdXNlZCBpbiBhcmJpdHJhcnkgZXhwcmVzc2lvbnMiID4mNQokYXNfZWNob19uICJjaGVj
a2luZyB3aGV0aGVyIE5VTEwgY2FuIGJlIHVzZWQgaW4gYXJiaXRyYXJ5IGV4cHJlc3Npb25zLi4u
ICIgPiY2OyB9CmlmICR7Z2xfY3ZfZGVjbF9udWxsX3dvcmtzKzp9IGZhbHNlOyB0aGVuIDoKICAk
YXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VP
RiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCiNpbmNsdWRlIDxzdGRk
ZWYuaD4KICAgICAgaW50IHRlc3RbMiAqIChzaXplb2YgTlVMTCA9PSBzaXplb2YgKHZvaWQgKikp
IC0xXTsKCmludAptYWluICgpCnsKCiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgppZiBhY19mbl9j
X3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CiAgZ2xfY3ZfZGVjbF9udWxsX3dvcmtzPXll
cwplbHNlCiAgZ2xfY3ZfZGVjbF9udWxsX3dvcmtzPW5vCmZpCnJtIC1mIGNvcmUgY29uZnRlc3Qu
ZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dApmaQp7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2X2RlY2xfbnVsbF93b3Jr
cyIgPiY1CiRhc19lY2hvICIkZ2xfY3ZfZGVjbF9udWxsX3dvcmtzIiA+JjY7IH0KICBpZiB0ZXN0
ICRnbF9jdl9kZWNsX251bGxfd29ya3MgPSBubzsgdGhlbgogICAgUkVQTEFDRV9OVUxMPTEKICAg
IFNURERFRl9IPXN0ZGRlZi5oCiAgZmkKCiAgIGlmIHRlc3QgLW4gIiRTVERERUZfSCI7IHRoZW4K
ICBHTF9HRU5FUkFURV9TVERERUZfSF9UUlVFPQogIEdMX0dFTkVSQVRFX1NURERFRl9IX0ZBTFNF
PScjJwplbHNlCiAgR0xfR0VORVJBVEVfU1REREVGX0hfVFJVRT0nIycKICBHTF9HRU5FUkFURV9T
VERERUZfSF9GQUxTRT0KZmkKCiAgaWYgdGVzdCAtbiAiJFNURERFRl9IIjsgdGhlbgoKCgoKCgoK
CiAgICAgaWYgdGVzdCAkZ2xfY3ZfaGF2ZV9pbmNsdWRlX25leHQgPSB5ZXM7IHRoZW4KICAgICAg
IGdsX2N2X25leHRfc3RkZGVmX2g9Jzwnc3RkZGVmLmgnPicKICAgICBlbHNlCiAgICAgICB7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGFic29sdXRlIG5h
bWUgb2YgPHN0ZGRlZi5oPiIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIGFic29sdXRlIG5hbWUg
b2YgPHN0ZGRlZi5oPi4uLiAiID4mNjsgfQppZiAke2dsX2N2X25leHRfc3RkZGVmX2grOn0gZmFs
c2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKCiAgICAgICAgICAg
ICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNv
bmZkZWZzLmguICAqLwojaW5jbHVkZSA8c3RkZGVmLmg+CgpfQUNFT0YKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiJGhv
c3Rfb3MiIGluCiAgICAgICAgICAgICAgICAgYWl4KikgZ2xfYWJzbmFtZV9jcHA9IiRhY19jcHAg
LUMiIDs7CiAgICAgICAgICAgICAgICAgKikgICAgZ2xfYWJzbmFtZV9jcHA9IiRhY19jcHAiIDs7
CiAgICAgICAgICAgICAgIGVzYWMKCiAgICAgICAgICAgICAgIGNhc2UgIiRob3N0X29zIiBpbgog
ICAgICAgICAgICAgICAgIG1pbmd3KikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2RpcnNlcF9yZWdl
eD0nWy9cXF0nCiAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICopCiAgICAg
ICAgICAgICAgICAgICBnbF9kaXJzZXBfcmVnZXg9J1wvJwogICAgICAgICAgICAgICAgICAgOzsK
ICAgICAgICAgICAgICAgZXNhYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnbF9tYWtlX2xpdGVyYWxfcmVnZXhfc2VkPSdzLFtdJF5cXC4qL1tdLFxcJixnJwoK
ICAgICAgICAgICAgICAgZ2xfaGVhZGVyX2xpdGVyYWxfcmVnZXg9YGVjaG8gJ3N0ZGRlZi5oJyBc
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlZCAtZSAiJGdsX21h
a2VfbGl0ZXJhbF9yZWdleF9zZWQiYAogICAgICAgICAgICAgICBnbF9hYnNvbHV0ZV9oZWFkZXJf
c2VkPSIvJHtnbF9kaXJzZXBfcmVnZXh9JHtnbF9oZWFkZXJfbGl0ZXJhbF9yZWdleH0vIid7CiAg
ICAgICAgICAgICAgICAgICBzLy4qIlwoLionIiR7Z2xfZGlyc2VwX3JlZ2V4fSR7Z2xfaGVhZGVy
X2xpdGVyYWxfcmVnZXh9IidcKSIuKi9cMS8KICAgICAgICAgICAgICAgICAgIHN8Xi9bXi9dfC8v
JnwKICAgICAgICAgICAgICAgICAgIHAKICAgICAgICAgICAgICAgICAgIHEKICAgICAgICAgICAg
ICAgICB9JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnbF9jdl9uZXh0X3N0ZGRlZl9oPSciJ2AoZXZhbCAiJGdsX2Fic25hbWVfY3Bw
IGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKICAgICAgICAgICAgICAgICAgICAgIHNlZCAtbiAi
JGdsX2Fic29sdXRlX2hlYWRlcl9zZWQiYCciJwoKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfbmV4dF9zdGRkZWZfaCIgPiY1CiRhc19l
Y2hvICIkZ2xfY3ZfbmV4dF9zdGRkZWZfaCIgPiY2OyB9CiAgICAgZmkKICAgICBORVhUX1NURERF
Rl9IPSRnbF9jdl9uZXh0X3N0ZGRlZl9oCgogICAgIGlmIHRlc3QgJGdsX2N2X2hhdmVfaW5jbHVk
ZV9uZXh0ID0geWVzIHx8IHRlc3QgJGdsX2N2X2hhdmVfaW5jbHVkZV9uZXh0ID0gYnVnZ3k7IHRo
ZW4KICAgICAgICMgSU5DTFVERV9ORVhUX0FTX0ZJUlNUX0RJUkVDVElWRT0naW5jbHVkZV9uZXh0
JwogICAgICAgZ2xfbmV4dF9hc19maXJzdF9kaXJlY3RpdmU9Jzwnc3RkZGVmLmgnPicKICAgICBl
bHNlCiAgICAgICAjIElOQ0xVREVfTkVYVF9BU19GSVJTVF9ESVJFQ1RJVkU9J2luY2x1ZGUnCiAg
ICAgICBnbF9uZXh0X2FzX2ZpcnN0X2RpcmVjdGl2ZT0kZ2xfY3ZfbmV4dF9zdGRkZWZfaAogICAg
IGZpCiAgICAgTkVYVF9BU19GSVJTVF9ESVJFQ1RJVkVfU1REREVGX0g9JGdsX25leHRfYXNfZmly
c3RfZGlyZWN0aXZlCgoKCgogIGZpCgoKCgoKCgoKCgoKCiAgICAgaWYgdGVzdCAkZ2xfY3ZfaGF2
ZV9pbmNsdWRlX25leHQgPSB5ZXM7IHRoZW4KICAgICAgIGdsX2N2X25leHRfc3RkaW9faD0nPCdz
dGRpby5oJz4nCiAgICAgZWxzZQogICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v
LSRMSU5FTk99OiBjaGVja2luZyBhYnNvbHV0ZSBuYW1lIG9mIDxzdGRpby5oPiIgPiY1CiRhc19l
Y2hvX24gImNoZWNraW5nIGFic29sdXRlIG5hbWUgb2YgPHN0ZGlvLmg+Li4uICIgPiY2OyB9Cmlm
ICR7Z2xfY3ZfbmV4dF9zdGRpb19oKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2Fj
aGVkKSAiID4mNgplbHNlCgogICAgICAgICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9G
ID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPHN0ZGlv
Lmg+CgpfQUNFT0YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2FzZSAiJGhvc3Rfb3MiIGluCiAgICAgICAgICAgICAgICAgYWl4
KikgZ2xfYWJzbmFtZV9jcHA9IiRhY19jcHAgLUMiIDs7CiAgICAgICAgICAgICAgICAgKikgICAg
Z2xfYWJzbmFtZV9jcHA9IiRhY19jcHAiIDs7CiAgICAgICAgICAgICAgIGVzYWMKCiAgICAgICAg
ICAgICAgIGNhc2UgIiRob3N0X29zIiBpbgogICAgICAgICAgICAgICAgIG1pbmd3KikKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsX2RpcnNlcF9yZWdleD0nWy9cXF0nCiAgICAgICAgICAgICAgICAgICA7
OwogICAgICAgICAgICAgICAgICopCiAgICAgICAgICAgICAgICAgICBnbF9kaXJzZXBfcmVnZXg9
J1wvJwogICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgZXNhYwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9tYWtlX2xpdGVyYWxfcmVnZXhf
c2VkPSdzLFtdJF5cXC4qL1tdLFxcJixnJwoKICAgICAgICAgICAgICAgZ2xfaGVhZGVyX2xpdGVy
YWxfcmVnZXg9YGVjaG8gJ3N0ZGlvLmgnIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgc2VkIC1lICIkZ2xfbWFrZV9saXRlcmFsX3JlZ2V4X3NlZCJgCiAgICAgICAg
ICAgICAgIGdsX2Fic29sdXRlX2hlYWRlcl9zZWQ9Ii8ke2dsX2RpcnNlcF9yZWdleH0ke2dsX2hl
YWRlcl9saXRlcmFsX3JlZ2V4fS8iJ3sKICAgICAgICAgICAgICAgICAgIHMvLioiXCguKiciJHtn
bF9kaXJzZXBfcmVnZXh9JHtnbF9oZWFkZXJfbGl0ZXJhbF9yZWdleH0iJ1wpIi4qL1wxLwogICAg
ICAgICAgICAgICAgICAgc3xeL1teL118Ly8mfAogICAgICAgICAgICAgICAgICAgcAogICAgICAg
ICAgICAgICAgICAgcQogICAgICAgICAgICAgICAgIH0nCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2N2X25leHRfc3RkaW9faD0n
IidgKGV2YWwgIiRnbF9hYnNuYW1lX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CiAgICAg
ICAgICAgICAgICAgICAgICBzZWQgLW4gIiRnbF9hYnNvbHV0ZV9oZWFkZXJfc2VkImAnIicKCgpm
aQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2
X25leHRfc3RkaW9faCIgPiY1CiRhc19lY2hvICIkZ2xfY3ZfbmV4dF9zdGRpb19oIiA+JjY7IH0K
ICAgICBmaQogICAgIE5FWFRfU1RESU9fSD0kZ2xfY3ZfbmV4dF9zdGRpb19oCgogICAgIGlmIHRl
c3QgJGdsX2N2X2hhdmVfaW5jbHVkZV9uZXh0ID0geWVzIHx8IHRlc3QgJGdsX2N2X2hhdmVfaW5j
bHVkZV9uZXh0ID0gYnVnZ3k7IHRoZW4KICAgICAgICMgSU5DTFVERV9ORVhUX0FTX0ZJUlNUX0RJ
UkVDVElWRT0naW5jbHVkZV9uZXh0JwogICAgICAgZ2xfbmV4dF9hc19maXJzdF9kaXJlY3RpdmU9
Jzwnc3RkaW8uaCc+JwogICAgIGVsc2UKICAgICAgICMgSU5DTFVERV9ORVhUX0FTX0ZJUlNUX0RJ
UkVDVElWRT0naW5jbHVkZScKICAgICAgIGdsX25leHRfYXNfZmlyc3RfZGlyZWN0aXZlPSRnbF9j
dl9uZXh0X3N0ZGlvX2gKICAgICBmaQogICAgIE5FWFRfQVNfRklSU1RfRElSRUNUSVZFX1NURElP
X0g9JGdsX25leHRfYXNfZmlyc3RfZGlyZWN0aXZlCgoKCgoKICAgICAgR05VTElCX0ZTQ0FORj0x
CgoKY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5lIEdOVUxJQl9GU0NBTkYgMQpfQUNF
T0YKCgogIEdOVUxJQl9TQ0FORj0xCgoKY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5l
IEdOVUxJQl9TQ0FORiAxCl9BQ0VPRgoKCiAgR05VTElCX0ZHRVRDPTEKICBHTlVMSUJfR0VUQz0x
CiAgR05VTElCX0dFVENIQVI9MQogIEdOVUxJQl9GR0VUUz0xCiAgR05VTElCX0ZSRUFEPTEKCgog
ICAgICBHTlVMSUJfRlBSSU5URj0xCiAgR05VTElCX1BSSU5URj0xCiAgR05VTElCX1ZGUFJJTlRG
PTEKICBHTlVMSUJfVlBSSU5URj0xCiAgR05VTElCX0ZQVVRDPTEKICBHTlVMSUJfUFVUQz0xCiAg
R05VTElCX1BVVENIQVI9MQogIEdOVUxJQl9GUFVUUz0xCiAgR05VTElCX1BVVFM9MQogIEdOVUxJ
Ql9GV1JJVEU9MQoKCgoKICAgIGZvciBnbF9mdW5jIGluIGRwcmludGYgZnB1cmdlIGZzZWVrbyBm
dGVsbG8gZ2V0ZGVsaW0gZ2V0bGluZSBnZXRzIHBjbG9zZSBwb3BlbiAgICAgcmVuYW1lYXQgc25w
cmludGYgdG1wZmlsZSB2ZHByaW50ZiB2c25wcmludGY7IGRvCiAgICBhc19nbF9TeW1ib2w9YCRh
c19lY2hvICJnbF9jdl9oYXZlX3Jhd19kZWNsXyRnbF9mdW5jIiB8ICRhc190cl9zaGAKICAgIHsg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAk
Z2xfZnVuYyBpcyBkZWNsYXJlZCB3aXRob3V0IGEgbWFjcm8iID4mNQokYXNfZWNob19uICJjaGVj
a2luZyB3aGV0aGVyICRnbF9mdW5jIGlzIGRlY2xhcmVkIHdpdGhvdXQgYSBtYWNyby4uLiAiID4m
NjsgfQppZiBldmFsIFwkeyRhc19nbF9TeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hv
X24gIihjYWNoZWQpICIgPiY2CmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25m
dGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPHN0ZGlvLmg+Cgpp
bnQKbWFpbiAoKQp7CiN1bmRlZiAkZ2xfZnVuYwogICh2b2lkKSAkZ2xfZnVuYzsKICA7CiAgcmV0
dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoK
ICBldmFsICIkYXNfZ2xfU3ltYm9sPXllcyIKZWxzZQogIGV2YWwgIiRhc19nbF9TeW1ib2w9bm8i
CmZpCnJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3Qu
JGFjX2V4dApmaQpldmFsIGFjX3Jlcz1cJCRhc19nbF9TeW1ib2wKCSAgICAgICB7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiRhc19l
Y2hvICIkYWNfcmVzIiA+JjY7IH0KICAgIGlmIGV2YWwgdGVzdCBcInhcJCIkYXNfZ2xfU3ltYm9s
IlwiID0geCJ5ZXMiOyB0aGVuIDoKICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUg
YCRhc19lY2hvICJIQVZFX1JBV19ERUNMXyRnbF9mdW5jIiB8ICRhc190cl9jcHBgIDEKX0FDRU9G
CgogICAgICAgICAgICAgICAgICAgICBldmFsIGFjX2N2X2hhdmVfZGVjbF8kZ2xfZnVuYz15ZXMK
ZmkKICAgICAgZG9uZQoKCgoKCgoKCgoKCgogICAgIGlmIHRlc3QgJGdsX2N2X2hhdmVfaW5jbHVk
ZV9uZXh0ID0geWVzOyB0aGVuCiAgICAgICBnbF9jdl9uZXh0X3N0ZGxpYl9oPSc8J3N0ZGxpYi5o
Jz4nCiAgICAgZWxzZQogICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiBjaGVja2luZyBhYnNvbHV0ZSBuYW1lIG9mIDxzdGRsaWIuaD4iID4mNQokYXNfZWNob19u
ICJjaGVja2luZyBhYnNvbHV0ZSBuYW1lIG9mIDxzdGRsaWIuaD4uLi4gIiA+JjY7IH0KaWYgJHtn
bF9jdl9uZXh0X3N0ZGxpYl9oKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVk
KSAiID4mNgplbHNlCgogICAgICAgICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5j
b25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPHN0ZGxpYi5o
PgoKX0FDRU9GCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgIiRob3N0X29zIiBpbgogICAgICAgICAgICAgICAgIGFpeCop
IGdsX2Fic25hbWVfY3BwPSIkYWNfY3BwIC1DIiA7OwogICAgICAgICAgICAgICAgICopICAgIGds
X2Fic25hbWVfY3BwPSIkYWNfY3BwIiA7OwogICAgICAgICAgICAgICBlc2FjCgogICAgICAgICAg
ICAgICBjYXNlICIkaG9zdF9vcyIgaW4KICAgICAgICAgICAgICAgICBtaW5ndyopCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnbF9kaXJzZXBfcmVnZXg9J1svXFxdJwogICAgICAgICAgICAgICAgICAgOzsK
ICAgICAgICAgICAgICAgICAqKQogICAgICAgICAgICAgICAgICAgZ2xfZGlyc2VwX3JlZ2V4PSdc
LycKICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgIGVzYWMKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfbWFrZV9saXRlcmFsX3JlZ2V4X3Nl
ZD0ncyxbXSReXFwuKi9bXSxcXCYsZycKCiAgICAgICAgICAgICAgIGdsX2hlYWRlcl9saXRlcmFs
X3JlZ2V4PWBlY2hvICdzdGRsaWIuaCcgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCBzZWQgLWUgIiRnbF9tYWtlX2xpdGVyYWxfcmVnZXhfc2VkImAKICAgICAgICAg
ICAgICAgZ2xfYWJzb2x1dGVfaGVhZGVyX3NlZD0iLyR7Z2xfZGlyc2VwX3JlZ2V4fSR7Z2xfaGVh
ZGVyX2xpdGVyYWxfcmVnZXh9LyInewogICAgICAgICAgICAgICAgICAgcy8uKiJcKC4qJyIke2ds
X2RpcnNlcF9yZWdleH0ke2dsX2hlYWRlcl9saXRlcmFsX3JlZ2V4fSInXCkiLiovXDEvCiAgICAg
ICAgICAgICAgICAgICBzfF4vW14vXXwvLyZ8CiAgICAgICAgICAgICAgICAgICBwCiAgICAgICAg
ICAgICAgICAgICBxCiAgICAgICAgICAgICAgICAgfScKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfY3ZfbmV4dF9zdGRsaWJfaD0n
IidgKGV2YWwgIiRnbF9hYnNuYW1lX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CiAgICAg
ICAgICAgICAgICAgICAgICBzZWQgLW4gIiRnbF9hYnNvbHV0ZV9oZWFkZXJfc2VkImAnIicKCgpm
aQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2
X25leHRfc3RkbGliX2giID4mNQokYXNfZWNobyAiJGdsX2N2X25leHRfc3RkbGliX2giID4mNjsg
fQogICAgIGZpCiAgICAgTkVYVF9TVERMSUJfSD0kZ2xfY3ZfbmV4dF9zdGRsaWJfaAoKICAgICBp
ZiB0ZXN0ICRnbF9jdl9oYXZlX2luY2x1ZGVfbmV4dCA9IHllcyB8fCB0ZXN0ICRnbF9jdl9oYXZl
X2luY2x1ZGVfbmV4dCA9IGJ1Z2d5OyB0aGVuCiAgICAgICAjIElOQ0xVREVfTkVYVF9BU19GSVJT
VF9ESVJFQ1RJVkU9J2luY2x1ZGVfbmV4dCcKICAgICAgIGdsX25leHRfYXNfZmlyc3RfZGlyZWN0
aXZlPSc8J3N0ZGxpYi5oJz4nCiAgICAgZWxzZQogICAgICAgIyBJTkNMVURFX05FWFRfQVNfRklS
U1RfRElSRUNUSVZFPSdpbmNsdWRlJwogICAgICAgZ2xfbmV4dF9hc19maXJzdF9kaXJlY3RpdmU9
JGdsX2N2X25leHRfc3RkbGliX2gKICAgICBmaQogICAgIE5FWFRfQVNfRklSU1RfRElSRUNUSVZF
X1NURExJQl9IPSRnbF9uZXh0X2FzX2ZpcnN0X2RpcmVjdGl2ZQoKCgoKCgogICAgZm9yIGdsX2Z1
bmMgaW4gX0V4aXQgYXRvbGwgY2Fub25pY2FsaXplX2ZpbGVfbmFtZSBnZXRsb2FkYXZnIGdldHN1
Ym9wdCBncmFudHB0ICAgICBpbml0c3RhdGUgaW5pdHN0YXRlX3IgbWtkdGVtcCBta29zdGVtcCBt
a29zdGVtcHMgbWtzdGVtcCBta3N0ZW1wcyAgICAgcG9zaXhfb3BlbnB0IHB0c25hbWUgcHRzbmFt
ZV9yIHJhbmRvbSByYW5kb21fciByZWFscGF0aCBycG1hdGNoICAgICBzZWN1cmVfZ2V0ZW52IHNl
dGVudiBzZXRzdGF0ZSBzZXRzdGF0ZV9yIHNyYW5kb20gc3JhbmRvbV9yICAgICBzdHJ0b2Qgc3Ry
dG9sbCBzdHJ0b3VsbCB1bmxvY2twdCB1bnNldGVudjsgZG8KICAgIGFzX2dsX1N5bWJvbD1gJGFz
X2VjaG8gImdsX2N2X2hhdmVfcmF3X2RlY2xfJGdsX2Z1bmMiIHwgJGFzX3RyX3NoYAogICAgeyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyICRn
bF9mdW5jIGlzIGRlY2xhcmVkIHdpdGhvdXQgYSBtYWNybyIgPiY1CiRhc19lY2hvX24gImNoZWNr
aW5nIHdoZXRoZXIgJGdsX2Z1bmMgaXMgZGVjbGFyZWQgd2l0aG91dCBhIG1hY3JvLi4uICIgPiY2
OyB9CmlmIGV2YWwgXCR7JGFzX2dsX1N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9f
biAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0
ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVkZSA8c3RkbGliLmg+CiNp
ZiBIQVZFX1NZU19MT0FEQVZHX0gKIyBpbmNsdWRlIDxzeXMvbG9hZGF2Zy5oPgojZW5kaWYKI2lm
IEhBVkVfUkFORE9NX0gKIyBpbmNsdWRlIDxyYW5kb20uaD4KI2VuZGlmCgppbnQKbWFpbiAoKQp7
CiN1bmRlZiAkZ2xfZnVuYwogICh2b2lkKSAkZ2xfZnVuYzsKICA7CiAgcmV0dXJuIDA7Cn0KX0FD
RU9GCmlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKICBldmFsICIkYXNf
Z2xfU3ltYm9sPXllcyIKZWxzZQogIGV2YWwgIiRhc19nbF9TeW1ib2w9bm8iCmZpCnJtIC1mIGNv
cmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dApmaQpl
dmFsIGFjX3Jlcz1cJCRhc19nbF9TeW1ib2wKCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiRhc19lY2hvICIkYWNfcmVz
IiA+JjY7IH0KICAgIGlmIGV2YWwgdGVzdCBcInhcJCIkYXNfZ2xfU3ltYm9sIlwiID0geCJ5ZXMi
OyB0aGVuIDoKICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgYCRhc19lY2hvICJI
QVZFX1JBV19ERUNMXyRnbF9mdW5jIiB8ICRhc190cl9jcHBgIDEKX0FDRU9GCgogICAgICAgICAg
ICAgICAgICAgICBldmFsIGFjX2N2X2hhdmVfZGVjbF8kZ2xfZnVuYz15ZXMKZmkKICAgICAgZG9u
ZQoKCgoKCgoKCiAgZm9yIGFjX2Z1bmMgaW4gc3RwY3B5CmRvIDoKICBhY19mbl9jX2NoZWNrX2Z1
bmMgIiRMSU5FTk8iICJzdHBjcHkiICJhY19jdl9mdW5jX3N0cGNweSIKaWYgdGVzdCAieCRhY19j
dl9mdW5jX3N0cGNweSIgPSB4eWVzOyB0aGVuIDoKICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9G
CiNkZWZpbmUgSEFWRV9TVFBDUFkgMQpfQUNFT0YKCmZpCmRvbmUKCiAgaWYgdGVzdCAkYWNfY3Zf
ZnVuY19zdHBjcHkgPSBubzsgdGhlbgogICAgSEFWRV9TVFBDUFk9MAogIGZpCgogIGlmIHRlc3Qg
JEhBVkVfU1RQQ1BZID0gMDsgdGhlbgoKCgoKCgoKCiAgZ2xfTElCT0JKUz0iJGdsX0xJQk9CSlMg
c3RwY3B5LiRhY19vYmpleHQiCgoKICA6CgogIGZpCgoKCgoKICAgICAgICAgIEdOVUxJQl9TVFBD
UFk9MQoKCgoKCiRhc19lY2hvICIjZGVmaW5lIEdOVUxJQl9URVNUX1NUUENQWSAxIiA+PmNvbmZk
ZWZzLmgKCgoKCgoKCgoKCgoKICA6CgoKCgoKICBpZiB0ZXN0ICRhY19jdl9oYXZlX2RlY2xfc3Ry
c2lnbmFsID0gbm87IHRoZW4KICAgIEhBVkVfREVDTF9TVFJTSUdOQUw9MAogIGZpCgogIGZvciBh
Y19mdW5jIGluIHN0cnNpZ25hbApkbyA6CiAgYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAi
c3Ryc2lnbmFsIiAiYWNfY3ZfZnVuY19zdHJzaWduYWwiCmlmIHRlc3QgIngkYWNfY3ZfZnVuY19z
dHJzaWduYWwiID0geHllczsgdGhlbiA6CiAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVm
aW5lIEhBVkVfU1RSU0lHTkFMIDEKX0FDRU9GCgpmaQpkb25lCgogIGlmIHRlc3QgJGFjX2N2X2Z1
bmNfc3Ryc2lnbmFsID0geWVzOyB0aGVuCiAgICBIQVZFX1NUUlNJR05BTD0xCiAgICAgICAgICAg
IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhl
ciBzdHJzaWduYWwgYWx3YXlzIHJldHVybnMgYSBzdHJpbmciID4mNQokYXNfZWNob19uICJjaGVj
a2luZyB3aGV0aGVyIHN0cnNpZ25hbCBhbHdheXMgcmV0dXJucyBhIHN0cmluZy4uLiAiID4mNjsg
fQppZiAke2dsX2N2X2Z1bmNfd29ya2luZ19zdHJzaWduYWwrOn0gZmFsc2U7IHRoZW4gOgogICRh
c19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5n
IiA9IHllczsgdGhlbiA6CiAgY2FzZSAiJGhvc3Rfb3MiIGluCiAgICAgICAgICAgIHNvbGFyaXMq
IHwgYWl4KikgZ2xfY3ZfZnVuY193b3JraW5nX3N0cnNpZ25hbD1ubzs7CiAgICAgICAgICAgICop
ICAgICAgICAgICAgICAgZ2xfY3ZfZnVuY193b3JraW5nX3N0cnNpZ25hbD0iZ3Vlc3NpbmcgeWVz
Ijs7CiAgICAgICAgICBlc2FjCmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25m
dGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPHN0cmluZy5oPgoj
aW5jbHVkZSA8dW5pc3RkLmg+IC8qIE5ldEJTRCA1LjAgZGVjbGFyZXMgaXQgaW4gd3JvbmcgaGVh
ZGVyLiAqLwoKaW50Cm1haW4gKCkKewppbnQgcmVzdWx0ID0gMDsKICAgICAgICAgICAgICBjaGFy
ICpzID0gc3Ryc2lnbmFsICgtMSk7CiAgICAgICAgICAgICAgaWYgKHMgPT0gKGNoYXIgKikgMCkK
ICAgICAgICAgICAgICAgIHJlc3VsdCB8PSAxOwogICAgICAgICAgICAgIGlmIChzID09IChjaGFy
ICopIC0xKQogICAgICAgICAgICAgICAgcmVzdWx0IHw9IDI7CiAgICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKCiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9ydW4gIiRM
SU5FTk8iOyB0aGVuIDoKICBnbF9jdl9mdW5jX3dvcmtpbmdfc3Ryc2lnbmFsPXllcwplbHNlCiAg
Z2xfY3ZfZnVuY193b3JraW5nX3N0cnNpZ25hbD1ubwpmaQpybSAtZiBjb3JlICouY29yZSBjb3Jl
LmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCiAgY29uZnRl
c3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKZmkKCmZpCnsgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfZnVuY193
b3JraW5nX3N0cnNpZ25hbCIgPiY1CiRhc19lY2hvICIkZ2xfY3ZfZnVuY193b3JraW5nX3N0cnNp
Z25hbCIgPiY2OyB9CiAgICBpZiB0ZXN0ICIkZ2xfY3ZfZnVuY193b3JraW5nX3N0cnNpZ25hbCIg
PSBubzsgdGhlbgogICAgICBSRVBMQUNFX1NUUlNJR05BTD0xCiAgICBmaQogIGVsc2UKICAgIEhB
VkVfU1RSU0lHTkFMPTAKICBmaQoKICBpZiB0ZXN0ICRIQVZFX1NUUlNJR05BTCA9IDAgfHwgdGVz
dCAkUkVQTEFDRV9TVFJTSUdOQUwgPSAxOyB0aGVuCgoKCgoKCgoKICBnbF9MSUJPQkpTPSIkZ2xf
TElCT0JKUyBzdHJzaWduYWwuJGFjX29iamV4dCIKCgoKICA6CgoKCgoKCiAgYWNfZm5fY19jaGVj
a19kZWNsICIkTElORU5PIiAiX3N5c19zaWdsaXN0IiAiYWNfY3ZfaGF2ZV9kZWNsX19zeXNfc2ln
bGlzdCIgIiNpbmNsdWRlIDxzaWduYWwuaD4KIgppZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9f
c3lzX3NpZ2xpc3QiID0geHllczsgdGhlbiA6CiAgYWNfaGF2ZV9kZWNsPTEKZWxzZQogIGFjX2hh
dmVfZGVjbD0wCmZpCgpjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgSEFWRV9ERUNM
X19TWVNfU0lHTElTVCAkYWNfaGF2ZV9kZWNsCl9BQ0VPRgoKCiAgZmkKCgoKCgogICAgICAgICAg
R05VTElCX1NUUlNJR05BTD0xCgoKCgoKJGFzX2VjaG8gIiNkZWZpbmUgR05VTElCX1RFU1RfU1RS
U0lHTkFMIDEiID4+Y29uZmRlZnMuaAoKCgoKCgoKCgoKCgoKCiAgOgoKCgoKCgoKCiAgICAgaWYg
dGVzdCAkZ2xfY3ZfaGF2ZV9pbmNsdWRlX25leHQgPSB5ZXM7IHRoZW4KICAgICAgIGdsX2N2X25l
eHRfc3lzX3N0YXRfaD0nPCdzeXMvc3RhdC5oJz4nCiAgICAgZWxzZQogICAgICAgeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBhYnNvbHV0ZSBuYW1lIG9m
IDxzeXMvc3RhdC5oPiIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIGFic29sdXRlIG5hbWUgb2Yg
PHN5cy9zdGF0Lmg+Li4uICIgPiY2OyB9CmlmICR7Z2xfY3ZfbmV4dF9zeXNfc3RhdF9oKzp9IGZh
bHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCgogICAgICAgICAg
ICAgaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N5c19zdGF0X2ggPSB5ZXM7IHRoZW4KCgogICAgICAg
ICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVu
ZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CgpfQUNFT0YKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAiJGhvc3Rfb3MiIGluCiAgICAgICAgICAgICAgICAgYWl4KikgZ2xfYWJzbmFtZV9jcHA9IiRh
Y19jcHAgLUMiIDs7CiAgICAgICAgICAgICAgICAgKikgICAgZ2xfYWJzbmFtZV9jcHA9IiRhY19j
cHAiIDs7CiAgICAgICAgICAgICAgIGVzYWMKCiAgICAgICAgICAgICAgIGNhc2UgIiRob3N0X29z
IiBpbgogICAgICAgICAgICAgICAgIG1pbmd3KikKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2RpcnNl
cF9yZWdleD0nWy9cXF0nCiAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICop
CiAgICAgICAgICAgICAgICAgICBnbF9kaXJzZXBfcmVnZXg9J1wvJwogICAgICAgICAgICAgICAg
ICAgOzsKICAgICAgICAgICAgICAgZXNhYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnbF9tYWtlX2xpdGVyYWxfcmVnZXhfc2VkPSdzLFtdJF5cXC4qL1tdLFxc
JixnJwoKICAgICAgICAgICAgICAgZ2xfaGVhZGVyX2xpdGVyYWxfcmVnZXg9YGVjaG8gJ3N5cy9z
dGF0LmgnIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VkIC1l
ICIkZ2xfbWFrZV9saXRlcmFsX3JlZ2V4X3NlZCJgCiAgICAgICAgICAgICAgIGdsX2Fic29sdXRl
X2hlYWRlcl9zZWQ9Ii8ke2dsX2RpcnNlcF9yZWdleH0ke2dsX2hlYWRlcl9saXRlcmFsX3JlZ2V4
fS8iJ3sKICAgICAgICAgICAgICAgICAgIHMvLioiXCguKiciJHtnbF9kaXJzZXBfcmVnZXh9JHtn
bF9oZWFkZXJfbGl0ZXJhbF9yZWdleH0iJ1wpIi4qL1wxLwogICAgICAgICAgICAgICAgICAgc3xe
L1teL118Ly8mfAogICAgICAgICAgICAgICAgICAgcAogICAgICAgICAgICAgICAgICAgcQogICAg
ICAgICAgICAgICAgIH0nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdsX2N2X25leHRfc3lzX3N0YXRfaD0nIidgKGV2YWwgIiRnbF9h
YnNuYW1lX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CiAgICAgICAgICAgICAgICAgICAg
ICBzZWQgLW4gIiRnbF9hYnNvbHV0ZV9oZWFkZXJfc2VkImAnIicKICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgZ2xfY3ZfbmV4dF9zeXNfc3RhdF9oPSc8J3N5cy9zdGF0LmgnPicKICAgICAg
ICAgICAgIGZpCgoKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy
ZXN1bHQ6ICRnbF9jdl9uZXh0X3N5c19zdGF0X2giID4mNQokYXNfZWNobyAiJGdsX2N2X25leHRf
c3lzX3N0YXRfaCIgPiY2OyB9CiAgICAgZmkKICAgICBORVhUX1NZU19TVEFUX0g9JGdsX2N2X25l
eHRfc3lzX3N0YXRfaAoKICAgICBpZiB0ZXN0ICRnbF9jdl9oYXZlX2luY2x1ZGVfbmV4dCA9IHll
cyB8fCB0ZXN0ICRnbF9jdl9oYXZlX2luY2x1ZGVfbmV4dCA9IGJ1Z2d5OyB0aGVuCiAgICAgICAj
IElOQ0xVREVfTkVYVF9BU19GSVJTVF9ESVJFQ1RJVkU9J2luY2x1ZGVfbmV4dCcKICAgICAgIGds
X25leHRfYXNfZmlyc3RfZGlyZWN0aXZlPSc8J3N5cy9zdGF0LmgnPicKICAgICBlbHNlCiAgICAg
ICAjIElOQ0xVREVfTkVYVF9BU19GSVJTVF9ESVJFQ1RJVkU9J2luY2x1ZGUnCiAgICAgICBnbF9u
ZXh0X2FzX2ZpcnN0X2RpcmVjdGl2ZT0kZ2xfY3ZfbmV4dF9zeXNfc3RhdF9oCiAgICAgZmkKICAg
ICBORVhUX0FTX0ZJUlNUX0RJUkVDVElWRV9TWVNfU1RBVF9IPSRnbF9uZXh0X2FzX2ZpcnN0X2Rp
cmVjdGl2ZQoKCgoKCgoKCgoKCiAgaWYgdGVzdCAkV0lORE9XU182NF9CSVRfU1RfU0laRSA9IDE7
IHRoZW4KCiRhc19lY2hvICIjZGVmaW5lIF9HTF9XSU5ET1dTXzY0X0JJVF9TVF9TSVpFIDEiID4+
Y29uZmRlZnMuaAoKICBmaQoKICAgICAgYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAibmxp
bmtfdCIgImFjX2N2X3R5cGVfbmxpbmtfdCIgIiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICAgICAj
aW5jbHVkZSA8c3lzL3N0YXQuaD4KIgppZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfbmxpbmtfdCIgPSB4
eWVzOyB0aGVuIDoKCmVsc2UKCiRhc19lY2hvICIjZGVmaW5lIG5saW5rX3QgaW50IiA+PmNvbmZk
ZWZzLmgKCmZpCgoKCiAgICBmb3IgZ2xfZnVuYyBpbiBmY2htb2RhdCBmc3RhdCBmc3RhdGF0IGZ1
dGltZW5zIGxjaG1vZCBsc3RhdCBta2RpcmF0IG1rZmlmbyBta2ZpZm9hdCAgICAgbWtub2QgbWtu
b2RhdCBzdGF0IHV0aW1lbnNhdDsgZG8KICAgIGFzX2dsX1N5bWJvbD1gJGFzX2VjaG8gImdsX2N2
X2hhdmVfcmF3X2RlY2xfJGdsX2Z1bmMiIHwgJGFzX3RyX3NoYAogICAgeyAkYXNfZWNobyAiJGFz
X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyICRnbF9mdW5jIGlzIGRl
Y2xhcmVkIHdpdGhvdXQgYSBtYWNybyIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIg
JGdsX2Z1bmMgaXMgZGVjbGFyZWQgd2l0aG91dCBhIG1hY3JvLi4uICIgPiY2OyB9CmlmIGV2YWwg
XCR7JGFzX2dsX1N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkg
IiA+JjYKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQK
LyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVkZSA8c3lzL3N0YXQuaD4KCmludAptYWluICgp
CnsKI3VuZGVmICRnbF9mdW5jCiAgKHZvaWQpICRnbF9mdW5jOwogIDsKICByZXR1cm4gMDsKfQpf
QUNFT0YKaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgogIGV2YWwgIiRh
c19nbF9TeW1ib2w9eWVzIgplbHNlCiAgZXZhbCAiJGFzX2dsX1N5bWJvbD1ubyIKZmkKcm0gLWYg
Y29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CmZp
CmV2YWwgYWNfcmVzPVwkJGFzX2dsX1N5bWJvbAoJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZTok
e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKJGFzX2VjaG8gIiRhY19y
ZXMiID4mNjsgfQogICAgaWYgZXZhbCB0ZXN0IFwieFwkIiRhc19nbF9TeW1ib2wiXCIgPSB4Inll
cyI7IHRoZW4gOgogIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBgJGFzX2VjaG8g
IkhBVkVfUkFXX0RFQ0xfJGdsX2Z1bmMiIHwgJGFzX3RyX2NwcGAgMQpfQUNFT0YKCiAgICAgICAg
ICAgICAgICAgICAgIGV2YWwgYWNfY3ZfaGF2ZV9kZWNsXyRnbF9mdW5jPXllcwpmaQogICAgICBk
b25lCgoKCgoKCgoKCgoKCgoKCgoKCiAgOgoKCgoKCgoKCiAgICAgaWYgdGVzdCAkZ2xfY3ZfaGF2
ZV9pbmNsdWRlX25leHQgPSB5ZXM7IHRoZW4KICAgICAgIGdsX2N2X25leHRfc3lzX3dhaXRfaD0n
PCdzeXMvd2FpdC5oJz4nCiAgICAgZWxzZQogICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBhYnNvbHV0ZSBuYW1lIG9mIDxzeXMvd2FpdC5oPiIg
PiY1CiRhc19lY2hvX24gImNoZWNraW5nIGFic29sdXRlIG5hbWUgb2YgPHN5cy93YWl0Lmg+Li4u
ICIgPiY2OyB9CmlmICR7Z2xfY3ZfbmV4dF9zeXNfd2FpdF9oKzp9IGZhbHNlOyB0aGVuIDoKICAk
YXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCgogICAgICAgICAgICAgaWYgdGVzdCAkYWNf
Y3ZfaGVhZGVyX3N5c193YWl0X2ggPSB5ZXM7IHRoZW4KCgogICAgICAgICAgICAgICBjYXQgY29u
ZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAg
Ki8KI2luY2x1ZGUgPHN5cy93YWl0Lmg+CgpfQUNFT0YKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiJGhvc3Rfb3MiIGlu
CiAgICAgICAgICAgICAgICAgYWl4KikgZ2xfYWJzbmFtZV9jcHA9IiRhY19jcHAgLUMiIDs7CiAg
ICAgICAgICAgICAgICAgKikgICAgZ2xfYWJzbmFtZV9jcHA9IiRhY19jcHAiIDs7CiAgICAgICAg
ICAgICAgIGVzYWMKCiAgICAgICAgICAgICAgIGNhc2UgIiRob3N0X29zIiBpbgogICAgICAgICAg
ICAgICAgIG1pbmd3KikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2RpcnNlcF9yZWdleD0nWy9cXF0n
CiAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICopCiAgICAgICAgICAgICAg
ICAgICBnbF9kaXJzZXBfcmVnZXg9J1wvJwogICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAg
ICAgICAgZXNhYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
bF9tYWtlX2xpdGVyYWxfcmVnZXhfc2VkPSdzLFtdJF5cXC4qL1tdLFxcJixnJwoKICAgICAgICAg
ICAgICAgZ2xfaGVhZGVyX2xpdGVyYWxfcmVnZXg9YGVjaG8gJ3N5cy93YWl0LmgnIFwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VkIC1lICIkZ2xfbWFrZV9saXRl
cmFsX3JlZ2V4X3NlZCJgCiAgICAgICAgICAgICAgIGdsX2Fic29sdXRlX2hlYWRlcl9zZWQ9Ii8k
e2dsX2RpcnNlcF9yZWdleH0ke2dsX2hlYWRlcl9saXRlcmFsX3JlZ2V4fS8iJ3sKICAgICAgICAg
ICAgICAgICAgIHMvLioiXCguKiciJHtnbF9kaXJzZXBfcmVnZXh9JHtnbF9oZWFkZXJfbGl0ZXJh
bF9yZWdleH0iJ1wpIi4qL1wxLwogICAgICAgICAgICAgICAgICAgc3xeL1teL118Ly8mfAogICAg
ICAgICAgICAgICAgICAgcAogICAgICAgICAgICAgICAgICAgcQogICAgICAgICAgICAgICAgIH0n
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdsX2N2X25leHRfc3lzX3dhaXRfaD0nIidgKGV2YWwgIiRnbF9hYnNuYW1lX2NwcCBjb25m
dGVzdC4kYWNfZXh0IikgMj4mNSB8CiAgICAgICAgICAgICAgICAgICAgICBzZWQgLW4gIiRnbF9h
YnNvbHV0ZV9oZWFkZXJfc2VkImAnIicKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgZ2xf
Y3ZfbmV4dF9zeXNfd2FpdF9oPSc8J3N5cy93YWl0LmgnPicKICAgICAgICAgICAgIGZpCgoKZmkK
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbF9jdl9u
ZXh0X3N5c193YWl0X2giID4mNQokYXNfZWNobyAiJGdsX2N2X25leHRfc3lzX3dhaXRfaCIgPiY2
OyB9CiAgICAgZmkKICAgICBORVhUX1NZU19XQUlUX0g9JGdsX2N2X25leHRfc3lzX3dhaXRfaAoK
ICAgICBpZiB0ZXN0ICRnbF9jdl9oYXZlX2luY2x1ZGVfbmV4dCA9IHllcyB8fCB0ZXN0ICRnbF9j
dl9oYXZlX2luY2x1ZGVfbmV4dCA9IGJ1Z2d5OyB0aGVuCiAgICAgICAjIElOQ0xVREVfTkVYVF9B
U19GSVJTVF9ESVJFQ1RJVkU9J2luY2x1ZGVfbmV4dCcKICAgICAgIGdsX25leHRfYXNfZmlyc3Rf
ZGlyZWN0aXZlPSc8J3N5cy93YWl0LmgnPicKICAgICBlbHNlCiAgICAgICAjIElOQ0xVREVfTkVY
VF9BU19GSVJTVF9ESVJFQ1RJVkU9J2luY2x1ZGUnCiAgICAgICBnbF9uZXh0X2FzX2ZpcnN0X2Rp
cmVjdGl2ZT0kZ2xfY3ZfbmV4dF9zeXNfd2FpdF9oCiAgICAgZmkKICAgICBORVhUX0FTX0ZJUlNU
X0RJUkVDVElWRV9TWVNfV0FJVF9IPSRnbF9uZXh0X2FzX2ZpcnN0X2RpcmVjdGl2ZQoKCgoKCgoK
CiAgICBmb3IgZ2xfZnVuYyBpbiB3YWl0cGlkOyBkbwogICAgYXNfZ2xfU3ltYm9sPWAkYXNfZWNo
byAiZ2xfY3ZfaGF2ZV9yYXdfZGVjbF8kZ2xfZnVuYyIgfCAkYXNfdHJfc2hgCiAgICB7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgJGdsX2Z1
bmMgaXMgZGVjbGFyZWQgd2l0aG91dCBhIG1hY3JvIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcg
d2hldGhlciAkZ2xfZnVuYyBpcyBkZWNsYXJlZCB3aXRob3V0IGEgbWFjcm8uLi4gIiA+JjY7IH0K
aWYgZXZhbCBcJHskYXNfZ2xfU3ltYm9sKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIo
Y2FjaGVkKSAiID4mNgplbHNlCiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3Qu
JGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCiNpbmNsdWRlIDxzeXMvd2FpdC5oPgppbnQK
bWFpbiAoKQp7CiN1bmRlZiAkZ2xfZnVuYwogICh2b2lkKSAkZ2xfZnVuYzsKICA7CiAgcmV0dXJu
IDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKICBl
dmFsICIkYXNfZ2xfU3ltYm9sPXllcyIKZWxzZQogIGV2YWwgIiRhc19nbF9TeW1ib2w9bm8iCmZp
CnJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFj
X2V4dApmaQpldmFsIGFjX3Jlcz1cJCRhc19nbF9TeW1ib2wKCSAgICAgICB7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiRhc19lY2hv
ICIkYWNfcmVzIiA+JjY7IH0KICAgIGlmIGV2YWwgdGVzdCBcInhcJCIkYXNfZ2xfU3ltYm9sIlwi
ID0geCJ5ZXMiOyB0aGVuIDoKICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgYCRh
c19lY2hvICJIQVZFX1JBV19ERUNMXyRnbF9mdW5jIiB8ICRhc190cl9jcHBgIDEKX0FDRU9GCgog
ICAgICAgICAgICAgICAgICAgICBldmFsIGFjX2N2X2hhdmVfZGVjbF8kZ2xfZnVuYz15ZXMKZmkK
ICAgICAgZG9uZQoKCgoKCgoKCgoKCgogICAgICBhY19mbl9jX2NoZWNrX2RlY2wgIiRMSU5FTk8i
ICJsb2NhbHRpbWVfciIgImFjX2N2X2hhdmVfZGVjbF9sb2NhbHRpbWVfciIgIiNpbmNsdWRlIDx0
aW1lLmg+CiIKaWYgdGVzdCAieCRhY19jdl9oYXZlX2RlY2xfbG9jYWx0aW1lX3IiID0geHllczsg
dGhlbiA6CiAgYWNfaGF2ZV9kZWNsPTEKZWxzZQogIGFjX2hhdmVfZGVjbD0wCmZpCgpjYXQgPj5j
b25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgSEFWRV9ERUNMX0xPQ0FMVElNRV9SICRhY19oYXZl
X2RlY2wKX0FDRU9GCgogIGlmIHRlc3QgJGFjX2N2X2hhdmVfZGVjbF9sb2NhbHRpbWVfciA9IG5v
OyB0aGVuCiAgICBIQVZFX0RFQ0xfTE9DQUxUSU1FX1I9MAogIGZpCgoKICA6CgoKCgoKICBpZiB0
ZXN0ICRhY19jdl9mdW5jX2xvY2FsdGltZV9yID0geWVzOyB0aGVuCiAgICBIQVZFX0xPQ0FMVElN
RV9SPTEKICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tp
bmcgd2hldGhlciBsb2NhbHRpbWVfciBpcyBjb21wYXRpYmxlIHdpdGggaXRzIFBPU0lYIHNpZ25h
dHVyZSIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgbG9jYWx0aW1lX3IgaXMgY29t
cGF0aWJsZSB3aXRoIGl0cyBQT1NJWCBzaWduYXR1cmUuLi4gIiA+JjY7IH0KaWYgJHtnbF9jdl90
aW1lX3JfcG9zaXgrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2
CmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVu
ZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPHRpbWUuaD4KaW50Cm1haW4gKCkKewovKiBXZSBk
b24ndCBuZWVkIHRvIGFwcGVuZCAncmVzdHJpY3QncyB0byB0aGUgYXJndW1lbnQgdHlwZXMsCiAg
ICAgICAgICAgICAgICAgZXZlbiB0aG91Z2ggdGhlIFBPU0lYIHNpZ25hdHVyZSBoYXMgdGhlICdy
ZXN0cmljdCdzLAogICAgICAgICAgICAgICAgIHNpbmNlIEM5OSBzYXlzIHRoZXkgY2FuJ3QgYWZm
ZWN0IHR5cGUgY29tcGF0aWJpbGl0eS4gICovCiAgICAgICAgICAgICAgc3RydWN0IHRtICogKCpw
dHIpICh0aW1lX3QgY29uc3QgKiwgc3RydWN0IHRtICopID0gbG9jYWx0aW1lX3I7CiAgICAgICAg
ICAgICAgaWYgKHB0cikgcmV0dXJuIDA7CiAgICAgICAgICAgICAgLyogQ2hlY2sgdGhlIHJldHVy
biB0eXBlIGlzIGEgcG9pbnRlci4KICAgICAgICAgICAgICAgICBPbiBIUC1VWCAxMCBpdCBpcyAn
aW50Jy4gICovCiAgICAgICAgICAgICAgKmxvY2FsdGltZV9yICgwLCAwKTsKICA7CiAgcmV0dXJu
IDA7Cn0KCl9BQ0VPRgppZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CiAg
Z2xfY3ZfdGltZV9yX3Bvc2l4PXllcwplbHNlCiAgZ2xfY3ZfdGltZV9yX3Bvc2l4PW5vCmZpCnJt
IC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4
dAoKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRn
bF9jdl90aW1lX3JfcG9zaXgiID4mNQokYXNfZWNobyAiJGdsX2N2X3RpbWVfcl9wb3NpeCIgPiY2
OyB9CiAgICBpZiB0ZXN0ICRnbF9jdl90aW1lX3JfcG9zaXggPSB5ZXM7IHRoZW4KICAgICAgUkVQ
TEFDRV9MT0NBTFRJTUVfUj0wCiAgICBlbHNlCiAgICAgIFJFUExBQ0VfTE9DQUxUSU1FX1I9MQog
ICAgZmkKICBlbHNlCiAgICBIQVZFX0xPQ0FMVElNRV9SPTAKICBmaQoKICBpZiB0ZXN0ICRIQVZF
X0xPQ0FMVElNRV9SID0gMCB8fCB0ZXN0ICRSRVBMQUNFX0xPQ0FMVElNRV9SID0gMTsgdGhlbgoK
CgoKCgoKCiAgZ2xfTElCT0JKUz0iJGdsX0xJQk9CSlMgdGltZV9yLiRhY19vYmpleHQiCgoKICA6
CgogIGZpCgoKCgoKICAgICAgICAgIEdOVUxJQl9USU1FX1I9MQoKCgoKCiRhc19lY2hvICIjZGVm
aW5lIEdOVUxJQl9URVNUX1RJTUVfUiAxIiA+PmNvbmZkZWZzLmgKCgoKCgoKCgoKCgoKCiAgOgoK
CgoKCgoKCiAgICAgaWYgdGVzdCAkZ2xfY3ZfaGF2ZV9pbmNsdWRlX25leHQgPSB5ZXM7IHRoZW4K
ICAgICAgIGdsX2N2X25leHRfdW5pc3RkX2g9JzwndW5pc3RkLmgnPicKICAgICBlbHNlCiAgICAg
ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGFic29s
dXRlIG5hbWUgb2YgPHVuaXN0ZC5oPiIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIGFic29sdXRl
IG5hbWUgb2YgPHVuaXN0ZC5oPi4uLiAiID4mNjsgfQppZiAke2dsX2N2X25leHRfdW5pc3RkX2gr
On0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKCiAgICAg
ICAgICAgICBpZiB0ZXN0ICRhY19jdl9oZWFkZXJfdW5pc3RkX2ggPSB5ZXM7IHRoZW4KCgogICAg
ICAgICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8q
IGVuZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPHVuaXN0ZC5oPgoKX0FDRU9GCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgIiRob3N0X29zIiBpbgogICAgICAgICAgICAgICAgIGFpeCopIGdsX2Fic25hbWVfY3BwPSIk
YWNfY3BwIC1DIiA7OwogICAgICAgICAgICAgICAgICopICAgIGdsX2Fic25hbWVfY3BwPSIkYWNf
Y3BwIiA7OwogICAgICAgICAgICAgICBlc2FjCgogICAgICAgICAgICAgICBjYXNlICIkaG9zdF9v
cyIgaW4KICAgICAgICAgICAgICAgICBtaW5ndyopCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9kaXJz
ZXBfcmVnZXg9J1svXFxdJwogICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAq
KQogICAgICAgICAgICAgICAgICAgZ2xfZGlyc2VwX3JlZ2V4PSdcLycKICAgICAgICAgICAgICAg
ICAgIDs7CiAgICAgICAgICAgICAgIGVzYWMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2xfbWFrZV9saXRlcmFsX3JlZ2V4X3NlZD0ncyxbXSReXFwuKi9bXSxc
XCYsZycKCiAgICAgICAgICAgICAgIGdsX2hlYWRlcl9saXRlcmFsX3JlZ2V4PWBlY2hvICd1bmlz
dGQuaCcgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZWQgLWUg
IiRnbF9tYWtlX2xpdGVyYWxfcmVnZXhfc2VkImAKICAgICAgICAgICAgICAgZ2xfYWJzb2x1dGVf
aGVhZGVyX3NlZD0iLyR7Z2xfZGlyc2VwX3JlZ2V4fSR7Z2xfaGVhZGVyX2xpdGVyYWxfcmVnZXh9
LyInewogICAgICAgICAgICAgICAgICAgcy8uKiJcKC4qJyIke2dsX2RpcnNlcF9yZWdleH0ke2ds
X2hlYWRlcl9saXRlcmFsX3JlZ2V4fSInXCkiLiovXDEvCiAgICAgICAgICAgICAgICAgICBzfF4v
W14vXXwvLyZ8CiAgICAgICAgICAgICAgICAgICBwCiAgICAgICAgICAgICAgICAgICBxCiAgICAg
ICAgICAgICAgICAgfScKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2xfY3ZfbmV4dF91bmlzdGRfaD0nIidgKGV2YWwgIiRnbF9hYnNu
YW1lX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CiAgICAgICAgICAgICAgICAgICAgICBz
ZWQgLW4gIiRnbF9hYnNvbHV0ZV9oZWFkZXJfc2VkImAnIicKICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgZ2xfY3ZfbmV4dF91bmlzdGRfaD0nPCd1bmlzdGQuaCc+JwogICAgICAgICAgICAg
ZmkKCgpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog
JGdsX2N2X25leHRfdW5pc3RkX2giID4mNQokYXNfZWNobyAiJGdsX2N2X25leHRfdW5pc3RkX2gi
ID4mNjsgfQogICAgIGZpCiAgICAgTkVYVF9VTklTVERfSD0kZ2xfY3ZfbmV4dF91bmlzdGRfaAoK
ICAgICBpZiB0ZXN0ICRnbF9jdl9oYXZlX2luY2x1ZGVfbmV4dCA9IHllcyB8fCB0ZXN0ICRnbF9j
dl9oYXZlX2luY2x1ZGVfbmV4dCA9IGJ1Z2d5OyB0aGVuCiAgICAgICAjIElOQ0xVREVfTkVYVF9B
U19GSVJTVF9ESVJFQ1RJVkU9J2luY2x1ZGVfbmV4dCcKICAgICAgIGdsX25leHRfYXNfZmlyc3Rf
ZGlyZWN0aXZlPSc8J3VuaXN0ZC5oJz4nCiAgICAgZWxzZQogICAgICAgIyBJTkNMVURFX05FWFRf
QVNfRklSU1RfRElSRUNUSVZFPSdpbmNsdWRlJwogICAgICAgZ2xfbmV4dF9hc19maXJzdF9kaXJl
Y3RpdmU9JGdsX2N2X25leHRfdW5pc3RkX2gKICAgICBmaQogICAgIE5FWFRfQVNfRklSU1RfRElS
RUNUSVZFX1VOSVNURF9IPSRnbF9uZXh0X2FzX2ZpcnN0X2RpcmVjdGl2ZQoKCgoKICBpZiB0ZXN0
ICRhY19jdl9oZWFkZXJfdW5pc3RkX2ggPSB5ZXM7IHRoZW4KICAgIEhBVkVfVU5JU1REX0g9MQog
IGVsc2UKICAgIEhBVkVfVU5JU1REX0g9MAogIGZpCgoKCgoKCgogICAgZm9yIGdsX2Z1bmMgaW4g
Y2hkaXIgY2hvd24gZHVwIGR1cDIgZHVwMyBlbnZpcm9uIGV1aWRhY2Nlc3MgZmFjY2Vzc2F0IGZj
aGRpciBmY2hvd25hdCAgICAgZmRhdGFzeW5jIGZzeW5jIGZ0cnVuY2F0ZSBnZXRjd2QgZ2V0ZG9t
YWlubmFtZSBnZXRkdGFibGVzaXplIGdldGdyb3VwcyAgICAgZ2V0aG9zdG5hbWUgZ2V0bG9naW4g
Z2V0bG9naW5fciBnZXRwYWdlc2l6ZSAgICAgZ2V0dXNlcnNoZWxsIHNldHVzZXJzaGVsbCBlbmR1
c2Vyc2hlbGwgICAgIGdyb3VwX21lbWJlciBpc2F0dHkgbGNob3duIGxpbmsgbGlua2F0IGxzZWVr
IHBpcGUgcGlwZTIgcHJlYWQgcHdyaXRlICAgICByZWFkbGluayByZWFkbGlua2F0IHJtZGlyIHNl
dGhvc3RuYW1lIHNsZWVwIHN5bWxpbmsgc3ltbGlua2F0IHR0eW5hbWVfciAgICAgdW5saW5rIHVu
bGlua2F0IHVzbGVlcDsgZG8KICAgIGFzX2dsX1N5bWJvbD1gJGFzX2VjaG8gImdsX2N2X2hhdmVf
cmF3X2RlY2xfJGdsX2Z1bmMiIHwgJGFzX3RyX3NoYAogICAgeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyICRnbF9mdW5jIGlzIGRlY2xhcmVk
IHdpdGhvdXQgYSBtYWNybyIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgJGdsX2Z1
bmMgaXMgZGVjbGFyZWQgd2l0aG91dCBhIG1hY3JvLi4uICIgPiY2OyB9CmlmIGV2YWwgXCR7JGFz
X2dsX1N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYK
ZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5k
IGNvbmZkZWZzLmguICAqLwoKI2lmIEhBVkVfVU5JU1REX0gKIyBpbmNsdWRlIDx1bmlzdGQuaD4K
I2VuZGlmCi8qIFNvbWUgc3lzdGVtcyBkZWNsYXJlIHZhcmlvdXMgaXRlbXMgaW4gdGhlIHdyb25n
IGhlYWRlcnMuICAqLwojaWYgIShkZWZpbmVkIF9fR0xJQkNfXyAmJiAhZGVmaW5lZCBfX1VDTElC
Q19fKQojIGluY2x1ZGUgPGZjbnRsLmg+CiMgaW5jbHVkZSA8c3RkaW8uaD4KIyBpbmNsdWRlIDxz
dGRsaWIuaD4KIyBpZiAoZGVmaW5lZCBfV0lOMzIgfHwgZGVmaW5lZCBfX1dJTjMyX18pICYmICEg
ZGVmaW5lZCBfX0NZR1dJTl9fCiMgIGluY2x1ZGUgPGlvLmg+CiMgZW5kaWYKI2VuZGlmCgppbnQK
bWFpbiAoKQp7CiN1bmRlZiAkZ2xfZnVuYwogICh2b2lkKSAkZ2xfZnVuYzsKICA7CiAgcmV0dXJu
IDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKICBl
dmFsICIkYXNfZ2xfU3ltYm9sPXllcyIKZWxzZQogIGV2YWwgIiRhc19nbF9TeW1ib2w9bm8iCmZp
CnJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFj
X2V4dApmaQpldmFsIGFjX3Jlcz1cJCRhc19nbF9TeW1ib2wKCSAgICAgICB7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiRhc19lY2hv
ICIkYWNfcmVzIiA+JjY7IH0KICAgIGlmIGV2YWwgdGVzdCBcInhcJCIkYXNfZ2xfU3ltYm9sIlwi
ID0geCJ5ZXMiOyB0aGVuIDoKICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgYCRh
c19lY2hvICJIQVZFX1JBV19ERUNMXyRnbF9mdW5jIiB8ICRhc190cl9jcHBgIDEKX0FDRU9GCgog
ICAgICAgICAgICAgICAgICAgICBldmFsIGFjX2N2X2hhdmVfZGVjbF8kZ2xfZnVuYz15ZXMKZmkK
ICAgICAgZG9uZQoKCgoKICA6CgoKCgoKCgoKICA6CgoKCgoKICBpZiB0ZXN0ICRhY19jdl9mdW5j
X3Zhc25wcmludGYgPSBubzsgdGhlbgoKCiAgOgoKCgoKCgoKCgoKCgoKICBnbF9MSUJPQkpTPSIk
Z2xfTElCT0JKUyB2YXNucHJpbnRmLiRhY19vYmpleHQiCgoKCgoKCgoKCiAgZ2xfTElCT0JKUz0i
JGdsX0xJQk9CSlMgcHJpbnRmLWFyZ3MuJGFjX29iamV4dCIKCgoKCgoKCgoKICBnbF9MSUJPQkpT
PSIkZ2xfTElCT0JKUyBwcmludGYtcGFyc2UuJGFjX29iamV4dCIKCgoKCgoKCgoKICBnbF9MSUJP
QkpTPSIkZ2xfTElCT0JKUyBhc25wcmludGYuJGFjX29iamV4dCIKCiAgaWYgdGVzdCAkYWNfY3Zf
ZnVuY192YXNucHJpbnRmID0geWVzOyB0aGVuCgokYXNfZWNobyAiI2RlZmluZSBSRVBMQUNFX1ZB
U05QUklOVEYgMSIgPj5jb25mZGVmcy5oCgogIGZpCgoKCgoKCgoKCgoKICBhY19mbl9jX2NoZWNr
X3R5cGUgIiRMSU5FTk8iICJwdHJkaWZmX3QiICJhY19jdl90eXBlX3B0cmRpZmZfdCIgIiRhY19p
bmNsdWRlc19kZWZhdWx0IgppZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfcHRyZGlmZl90IiA9IHh5ZXM7
IHRoZW4gOgoKZWxzZQoKJGFzX2VjaG8gIiNkZWZpbmUgcHRyZGlmZl90IGxvbmciID4+Y29uZmRl
ZnMuaAoKCmZpCgoKCgoKCgogIGZpCgoKCiAgSEFWRV9XQUlUUElEPTEKICBjYXNlICRob3N0X29z
IGluCiAgICBtaW5ndyopIEhBVkVfV0FJVFBJRD0wIDs7CiAgZXNhYwoKICBpZiB0ZXN0ICRIQVZF
X1dBSVRQSUQgPSAwOyB0aGVuCgoKCgoKCgoKICBnbF9MSUJPQkpTPSIkZ2xfTElCT0JKUyB3YWl0
cGlkLiRhY19vYmpleHQiCgogIGZpCgoKCgoKICAgICAgICAgIEdOVUxJQl9XQUlUUElEPTEKCgoK
CgokYXNfZWNobyAiI2RlZmluZSBHTlVMSUJfVEVTVF9XQUlUUElEIDEiID4+Y29uZmRlZnMuaAoK
CgoKCgoKCgoKCgogIDoKCgoKCgoKCgogICAgIGlmIHRlc3QgJGdsX2N2X2hhdmVfaW5jbHVkZV9u
ZXh0ID0geWVzOyB0aGVuCiAgICAgICBnbF9jdl9uZXh0X3djaGFyX2g9Jzwnd2NoYXIuaCc+Jwog
ICAgIGVsc2UKICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
Y2hlY2tpbmcgYWJzb2x1dGUgbmFtZSBvZiA8d2NoYXIuaD4iID4mNQokYXNfZWNob19uICJjaGVj
a2luZyBhYnNvbHV0ZSBuYW1lIG9mIDx3Y2hhci5oPi4uLiAiID4mNjsgfQppZiAke2dsX2N2X25l
eHRfd2NoYXJfaCs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYK
ZWxzZQoKICAgICAgICAgICAgIGlmIHRlc3QgJGFjX2N2X2hlYWRlcl93Y2hhcl9oID0geWVzOyB0
aGVuCgoKICAgICAgICAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3Qu
JGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCiNpbmNsdWRlIDx3Y2hhci5oPgoKX0FDRU9G
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgIiRob3N0X29zIiBpbgogICAgICAgICAgICAgICAgIGFpeCopIGdsX2Fic25h
bWVfY3BwPSIkYWNfY3BwIC1DIiA7OwogICAgICAgICAgICAgICAgICopICAgIGdsX2Fic25hbWVf
Y3BwPSIkYWNfY3BwIiA7OwogICAgICAgICAgICAgICBlc2FjCgogICAgICAgICAgICAgICBjYXNl
ICIkaG9zdF9vcyIgaW4KICAgICAgICAgICAgICAgICBtaW5ndyopCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnbF9kaXJzZXBfcmVnZXg9J1svXFxdJwogICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAg
ICAgICAgICAqKQogICAgICAgICAgICAgICAgICAgZ2xfZGlyc2VwX3JlZ2V4PSdcLycKICAgICAg
ICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgIGVzYWMKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2xfbWFrZV9saXRlcmFsX3JlZ2V4X3NlZD0ncyxbXSRe
XFwuKi9bXSxcXCYsZycKCiAgICAgICAgICAgICAgIGdsX2hlYWRlcl9saXRlcmFsX3JlZ2V4PWBl
Y2hvICd3Y2hhci5oJyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IHNlZCAtZSAiJGdsX21ha2VfbGl0ZXJhbF9yZWdleF9zZWQiYAogICAgICAgICAgICAgICBnbF9h
YnNvbHV0ZV9oZWFkZXJfc2VkPSIvJHtnbF9kaXJzZXBfcmVnZXh9JHtnbF9oZWFkZXJfbGl0ZXJh
bF9yZWdleH0vIid7CiAgICAgICAgICAgICAgICAgICBzLy4qIlwoLionIiR7Z2xfZGlyc2VwX3Jl
Z2V4fSR7Z2xfaGVhZGVyX2xpdGVyYWxfcmVnZXh9IidcKSIuKi9cMS8KICAgICAgICAgICAgICAg
ICAgIHN8Xi9bXi9dfC8vJnwKICAgICAgICAgICAgICAgICAgIHAKICAgICAgICAgICAgICAgICAg
IHEKICAgICAgICAgICAgICAgICB9JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9jdl9uZXh0X3djaGFyX2g9JyInYChldmFsICIk
Z2xfYWJzbmFtZV9jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAogICAgICAgICAgICAgICAg
ICAgICAgc2VkIC1uICIkZ2xfYWJzb2x1dGVfaGVhZGVyX3NlZCJgJyInCiAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgIGdsX2N2X25leHRfd2NoYXJfaD0nPCd3Y2hhci5oJz4nCiAgICAgICAg
ICAgICBmaQoKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz
dWx0OiAkZ2xfY3ZfbmV4dF93Y2hhcl9oIiA+JjUKJGFzX2VjaG8gIiRnbF9jdl9uZXh0X3djaGFy
X2giID4mNjsgfQogICAgIGZpCiAgICAgTkVYVF9XQ0hBUl9IPSRnbF9jdl9uZXh0X3djaGFyX2gK
CiAgICAgaWYgdGVzdCAkZ2xfY3ZfaGF2ZV9pbmNsdWRlX25leHQgPSB5ZXMgfHwgdGVzdCAkZ2xf
Y3ZfaGF2ZV9pbmNsdWRlX25leHQgPSBidWdneTsgdGhlbgogICAgICAgIyBJTkNMVURFX05FWFRf
QVNfRklSU1RfRElSRUNUSVZFPSdpbmNsdWRlX25leHQnCiAgICAgICBnbF9uZXh0X2FzX2ZpcnN0
X2RpcmVjdGl2ZT0nPCd3Y2hhci5oJz4nCiAgICAgZWxzZQogICAgICAgIyBJTkNMVURFX05FWFRf
QVNfRklSU1RfRElSRUNUSVZFPSdpbmNsdWRlJwogICAgICAgZ2xfbmV4dF9hc19maXJzdF9kaXJl
Y3RpdmU9JGdsX2N2X25leHRfd2NoYXJfaAogICAgIGZpCiAgICAgTkVYVF9BU19GSVJTVF9ESVJF
Q1RJVkVfV0NIQVJfSD0kZ2xfbmV4dF9hc19maXJzdF9kaXJlY3RpdmUKCgoKCiAgaWYgdGVzdCAk
YWNfY3ZfaGVhZGVyX3djaGFyX2ggPSB5ZXM7IHRoZW4KICAgIEhBVkVfV0NIQVJfSD0xCiAgZWxz
ZQogICAgSEFWRV9XQ0hBUl9IPTAKICBmaQoKCgoKCiAgaWYgdGVzdCAkZ3RfY3ZfY193aW50X3Qg
PSB5ZXM7IHRoZW4KICAgIEhBVkVfV0lOVF9UPTEKICBlbHNlCiAgICBIQVZFX1dJTlRfVD0wCiAg
ZmkKCgoKICAgIGZvciBnbF9mdW5jIGluIGJ0b3djIHdjdG9iIG1ic2luaXQgbWJydG93YyBtYnJs
ZW4gbWJzcnRvd2NzIG1ic25ydG93Y3Mgd2NydG9tYiAgICAgIHdjc3J0b21icyB3Y3NucnRvbWJz
IHdjd2lkdGggd21lbWNociB3bWVtY21wIHdtZW1jcHkgd21lbW1vdmUgd21lbXNldCAgICAgIHdj
c2xlbiB3Y3NubGVuIHdjc2NweSB3Y3BjcHkgd2NzbmNweSB3Y3BuY3B5IHdjc2NhdCB3Y3NuY2F0
IHdjc2NtcCAgICAgIHdjc25jbXAgd2NzY2FzZWNtcCB3Y3NuY2FzZWNtcCB3Y3Njb2xsIHdjc3hm
cm0gd2NzZHVwIHdjc2NociB3Y3NyY2hyICAgICAgd2NzY3NwbiB3Y3NzcG4gd2NzcGJyayB3Y3Nz
dHIgd2NzdG9rIHdjc3dpZHRoICAgICA7IGRvCiAgICBhc19nbF9TeW1ib2w9YCRhc19lY2hvICJn
bF9jdl9oYXZlX3Jhd19kZWNsXyRnbF9mdW5jIiB8ICRhc190cl9zaGAKICAgIHsgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAkZ2xfZnVuYyBp
cyBkZWNsYXJlZCB3aXRob3V0IGEgbWFjcm8iID4mNQokYXNfZWNob19uICJjaGVja2luZyB3aGV0
aGVyICRnbF9mdW5jIGlzIGRlY2xhcmVkIHdpdGhvdXQgYSBtYWNyby4uLiAiID4mNjsgfQppZiBl
dmFsIFwkeyRhc19nbF9TeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNo
ZWQpICIgPiY2CmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNf
ZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCi8qIFRydTY0IHdpdGggRGVza3RvcCBUb29sa2l0
IEMgaGFzIGEgYnVnOiA8c3RkaW8uaD4gbXVzdCBiZSBpbmNsdWRlZCBiZWZvcmUKICAgPHdjaGFy
Lmg+LgogICBCU0QvT1MgNC4wLjEgaGFzIGEgYnVnOiA8c3RkZGVmLmg+LCA8c3RkaW8uaD4gYW5k
IDx0aW1lLmg+IG11c3QgYmUKICAgaW5jbHVkZWQgYmVmb3JlIDx3Y2hhci5oPi4gICovCiNpZiAh
KGRlZmluZWQgX19HTElCQ19fICYmICFkZWZpbmVkIF9fVUNMSUJDX18pCiMgaW5jbHVkZSA8c3Rk
ZGVmLmg+CiMgaW5jbHVkZSA8c3RkaW8uaD4KIyBpbmNsdWRlIDx0aW1lLmg+CiNlbmRpZgojaW5j
bHVkZSA8d2NoYXIuaD4KCmludAptYWluICgpCnsKI3VuZGVmICRnbF9mdW5jCiAgKHZvaWQpICRn
bF9mdW5jOwogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNfZm5fY190cnlfY29tcGlsZSAi
JExJTkVOTyI7IHRoZW4gOgogIGV2YWwgIiRhc19nbF9TeW1ib2w9eWVzIgplbHNlCiAgZXZhbCAi
JGFzX2dsX1N5bWJvbD1ubyIKZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFj
X29iamV4dCBjb25mdGVzdC4kYWNfZXh0CmZpCmV2YWwgYWNfcmVzPVwkJGFzX2dsX1N5bWJvbAoJ
ICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAk
YWNfcmVzIiA+JjUKJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQogICAgaWYgZXZhbCB0ZXN0IFwi
eFwkIiRhc19nbF9TeW1ib2wiXCIgPSB4InllcyI7IHRoZW4gOgogIGNhdCA+PmNvbmZkZWZzLmgg
PDxfQUNFT0YKI2RlZmluZSBgJGFzX2VjaG8gIkhBVkVfUkFXX0RFQ0xfJGdsX2Z1bmMiIHwgJGFz
X3RyX2NwcGAgMQpfQUNFT0YKCiAgICAgICAgICAgICAgICAgICAgIGV2YWwgYWNfY3ZfaGF2ZV9k
ZWNsXyRnbF9mdW5jPXllcwpmaQogICAgICBkb25lCgoKICA6CgoKICBmb3IgYWNfaGVhZGVyIGlu
IHN0ZGludC5oCmRvIDoKICBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAi
c3RkaW50LmgiICJhY19jdl9oZWFkZXJfc3RkaW50X2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIK
aWYgdGVzdCAieCRhY19jdl9oZWFkZXJfc3RkaW50X2giID0geHllczsgdGhlbiA6CiAgY2F0ID4+
Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5lIEhBVkVfU1RESU5UX0ggMQpfQUNFT0YKCmZpCgpk
b25lCgoKICBnbF9nbnVsaWJfZW5hYmxlZF8yNjA5NDFjMGU1ZGM2N2VjOWU4N2QxZmIzMjFjMzAw
Yj1mYWxzZQogIGdsX2dudWxpYl9lbmFibGVkX2NoZGlyPWZhbHNlCiAgZ2xfZ251bGliX2VuYWJs
ZWRfODE5OGRhYWUyNjFiOTMyZDY0YTk5OGY4NTg2ZjUwMDU9ZmFsc2UKICBnbF9nbnVsaWJfZW5h
YmxlZF9jbG9leGVjPWZhbHNlCiAgZ2xfZ251bGliX2VuYWJsZWRfY2xvc2U9ZmFsc2UKICBnbF9n
bnVsaWJfZW5hYmxlZF83NWM2NWEyYzAxNGNmODIzNWRkOTUyODk2NzYzMDJhND1mYWxzZQogIGds
X2dudWxpYl9lbmFibGVkX2RpcmZkPWZhbHNlCiAgZ2xfZ251bGliX2VuYWJsZWRfYTY5MWRhOTlj
MWQ4M2I4MzIzOGU0NWY0MWE2OTZmNWM9ZmFsc2UKICBnbF9nbnVsaWJfZW5hYmxlZF9kb3NuYW1l
PWZhbHNlCiAgZ2xfZ251bGliX2VuYWJsZWRfZHVwPWZhbHNlCiAgZ2xfZ251bGliX2VuYWJsZWRf
ZHVwMj1mYWxzZQogIGdsX2dudWxpYl9lbmFibGVkX2ZjaGRpcj1mYWxzZQogIGdsX2dudWxpYl9l
bmFibGVkXzQzZmU4N2EzNDFkOWI0YjkzYzQ3YzNhZDgxOWE1MjM5PWZhbHNlCiAgZ2xfZ251bGli
X2VuYWJsZWRfZmRvcGVuZGlyPWZhbHNlCiAgZ2xfZ251bGliX2VuYWJsZWRfZmNhOTg1MmRiMmE0
M2JiMzNmMDJmMGZiZGJjMTc0ZjY9ZmFsc2UKICBnbF9nbnVsaWJfZW5hYmxlZF9mcGllZWU9ZmFs
c2UKICBnbF9nbnVsaWJfZW5hYmxlZF9mcHVjdz1mYWxzZQogIGdsX2dudWxpYl9lbmFibGVkX2Ux
YzZhMTI4MWNlMmNjNTljNzE2ODk0NTUwYmNiMmI1PWZhbHNlCiAgZ2xfZ251bGliX2VuYWJsZWRf
ZTBjYTgxOTEyZjIzMjE0ZTQ0ZjU3MDA5MjJkYjM0YmU9ZmFsc2UKICBnbF9nbnVsaWJfZW5hYmxl
ZF9mc3RhdGF0PWZhbHNlCiAgZ2xfZ251bGliX2VuYWJsZWRfM2QwOTRlZjU0MmJmZGQyMzhhNTE5
NGUxNzJiZmU1ZjY9ZmFsc2UKICBnbF9nbnVsaWJfZW5hYmxlZF9nZXRkdGFibGVzaXplPWZhbHNl
CiAgZ2xfZ251bGliX2VuYWJsZWRfaGF2ZWxpYj1mYWxzZQogIGdsX2dudWxpYl9lbmFibGVkX2lu
dHByb3BzPWZhbHNlCiAgZ2xfZ251bGliX2VuYWJsZWRfYjFkZjcxMTdiNDc5ZDJkYTU5ZDc2ZGVi
YTQ2OGVlMjE9ZmFsc2UKICBnbF9nbnVsaWJfZW5hYmxlZF8zZjBlNTkzMDMzZDFmYzJjMTI3NTgx
OTYwZjY0MWI2Nj1mYWxzZQogIGdsX2dudWxpYl9lbmFibGVkX2RiZGYyMjg2OGE1MzY3ZjI4YmYx
OGUwMDEzYWM2ZjhmPWZhbHNlCiAgZ2xfZ251bGliX2VuYWJsZWRfbG9jaz1mYWxzZQogIGdsX2du
dWxpYl9lbmFibGVkX2xzdGF0PWZhbHNlCiAgZ2xfZ251bGliX2VuYWJsZWRfbWF0aD1mYWxzZQog
IGdsX2dudWxpYl9lbmFibGVkX21lbXBjcHk9ZmFsc2UKICBnbF9nbnVsaWJfZW5hYmxlZF9tZW1y
Y2hyPWZhbHNlCiAgZ2xfZ251bGliX2VuYWJsZWRfZjY5MWYwNzZmNjUwOTY0YzlmNTU5OGMzZWU0
ODc2MTY9ZmFsc2UKICBnbF9nbnVsaWJfZW5hYmxlZF82NzYyMjBmYTQzNjZlZmE5YmRiZmNjZjEx
YTg1N2MwNz1mYWxzZQogIGdsX2dudWxpYl9lbmFibGVkX29wZW5hdD1mYWxzZQogIGdsX2dudWxp
Yl9lbmFibGVkXzE4NDAxMjlkNDkwZjNhMDBjOGEwOTgzMTZkMGZhMzQ1PWZhbHNlCiAgZ2xfZ251
bGliX2VuYWJsZWRfMDNlMGFhYWQ0Y2I4OWNhNzU3NjUzYmQzNjdhNmNjYjc9ZmFsc2UKICBnbF9n
bnVsaWJfZW5hYmxlZF9wYXRobWF4PWZhbHNlCiAgZ2xfZ251bGliX2VuYWJsZWRfMmY1NTFhNjg0
YWFiNTQwMDYzM2NiZmQ1NmRmM2JmOTQ9ZmFsc2UKICBnbF9nbnVsaWJfZW5hYmxlZF9iYmE2Mzlm
MGNmZDY1ODU0MGQ3MTZmM2EyYmE1ZTY4Zj1mYWxzZQogIGdsX2dudWxpYl9lbmFibGVkX3JhaXNl
PWZhbHNlCiAgZ2xfZ251bGliX2VuYWJsZWRfcmVhZGRpcj1mYWxzZQogIGdsX2dudWxpYl9lbmFi
bGVkXzYxYmNhY2E3NmIzZTZmOWFlNTVkNTdhMWMzMTkzYmM0PWZhbHNlCiAgZ2xfZ251bGliX2Vu
YWJsZWRfcmV3aW5kZGlyPWZhbHNlCiAgZ2xfZ251bGliX2VuYWJsZWRfZDQ4NTA1MzI2ODhiYTE2
ZDY4NWYwMzYwNzY2MTFmMjE9ZmFsc2UKICBnbF9nbnVsaWJfZW5hYmxlZF9zZWN1cmVfZ2V0ZW52
PWZhbHNlCiAgZ2xfZ251bGliX2VuYWJsZWRfc2lnbmJpdD1mYWxzZQogIGdsX2dudWxpYl9lbmFi
bGVkX3NpZ3Byb2NtYXNrPWZhbHNlCiAgZ2xfZ251bGliX2VuYWJsZWRfZjk4NTA2MzFkY2E5MTg1
OWU5Y2RkYWM5MzU5OTIxYzA9ZmFsc2UKICBnbF9nbnVsaWJfZW5hYmxlZF9zdHJlcnJvcj1mYWxz
ZQogIGdsX2dudWxpYl9lbmFibGVkX2RiYjU3ZjQ5MzUyYmU4ZmI4Njg2OTYyOWEyNTRmYjcyPWZh
bHNlCiAgZ2xfZ251bGliX2VuYWJsZWRfdGVtcG5hbWU9ZmFsc2UKICBnbF9nbnVsaWJfZW5hYmxl
ZF90aHJlYWRsaWI9ZmFsc2UKICBnbF9nbnVsaWJfZW5hYmxlZF90bHM9ZmFsc2UKICBmdW5jX2ds
X2dudWxpYl9tNGNvZGVfMjYwOTQxYzBlNWRjNjdlYzllODdkMWZiMzIxYzMwMGIgKCkKICB7CiAg
ICBpZiAhICRnbF9nbnVsaWJfZW5hYmxlZF8yNjA5NDFjMGU1ZGM2N2VjOWU4N2QxZmIzMjFjMzAw
YjsgdGhlbgoKCgoKCgoKCiAgZ2xfTElCT0JKUz0iJGdsX0xJQk9CSlMgb3BlbmF0LXByb2MuJGFj
X29iamV4dCIKCiAgICAgIGdsX2dudWxpYl9lbmFibGVkXzI2MDk0MWMwZTVkYzY3ZWM5ZTg3ZDFm
YjMyMWMzMDBiPXRydWUKICAgICAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX2ludHByb3BzCiAgICBm
aQogIH0KICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfY2hkaXIgKCkKICB7CiAgICBpZiAhICRnbF9n
bnVsaWJfZW5hYmxlZF9jaGRpcjsgdGhlbgoKCgoKCiAgICAgICAgICBHTlVMSUJfQ0hESVI9MQoK
CgoKCiRhc19lY2hvICIjZGVmaW5lIEdOVUxJQl9URVNUX0NIRElSIDEiID4+Y29uZmRlZnMuaAoK
CgogICAgICBnbF9nbnVsaWJfZW5hYmxlZF9jaGRpcj10cnVlCiAgICBmaQogIH0KICBmdW5jX2ds
X2dudWxpYl9tNGNvZGVfODE5OGRhYWUyNjFiOTMyZDY0YTk5OGY4NTg2ZjUwMDUgKCkKICB7CiAg
ICBpZiAhICRnbF9nbnVsaWJfZW5hYmxlZF84MTk4ZGFhZTI2MWI5MzJkNjRhOTk4Zjg1ODZmNTAw
NTsgdGhlbgoKCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVj
a2luZyB3aGV0aGVyIHRoaXMgc3lzdGVtIGhhcyBhbiBhcmJpdHJhcnkgZmlsZSBuYW1lIGxlbmd0
aCBsaW1pdCIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhpcyBzeXN0ZW0gaGFz
IGFuIGFyYml0cmFyeSBmaWxlIG5hbWUgbGVuZ3RoIGxpbWl0Li4uICIgPiY2OyB9CmlmICR7Z2xf
Y3ZfaGF2ZV9hcmJpdHJhcnlfZmlsZV9uYW1lX2xlbmd0aF9saW1pdCs6fSBmYWxzZTsgdGhlbiA6
CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxf
QUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwoKLyogQXJyYW5n
ZSB0byBkZWZpbmUgUEFUSF9NQVgsIGxpa2UgInBhdGhtYXguaCIgZG9lcy4gKi8KI2lmIEhBVkVf
VU5JU1REX0gKIyBpbmNsdWRlIDx1bmlzdGQuaD4KI2VuZGlmCiNpbmNsdWRlIDxsaW1pdHMuaD4K
I2lmIGRlZmluZWQgSEFWRV9TWVNfUEFSQU1fSCAmJiAhZGVmaW5lZCBQQVRIX01BWCAmJiAhZGVm
aW5lZCBNQVhQQVRITEVOCiMgaW5jbHVkZSA8c3lzL3BhcmFtLmg+CiNlbmRpZgojaWYgIWRlZmlu
ZWQgUEFUSF9NQVggJiYgZGVmaW5lZCBNQVhQQVRITEVOCiMgZGVmaW5lIFBBVEhfTUFYIE1BWFBB
VEhMRU4KI2VuZGlmCiNpZmRlZiBfX2hwdXgKIyB1bmRlZiBQQVRIX01BWAojIGRlZmluZSBQQVRI
X01BWCAxMDI0CiNlbmRpZgojaWYgKGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19XSU4zMl9f
KSAmJiAhIGRlZmluZWQgX19DWUdXSU5fXwojIHVuZGVmIFBBVEhfTUFYCiMgZGVmaW5lIFBBVEhf
TUFYIDI2MAojZW5kaWYKCiNpZmRlZiBQQVRIX01BWApoYXZlX2FyYml0cmFyeV9maWxlX25hbWVf
bGVuZ3RoX2xpbWl0CiNlbmRpZgpfQUNFT0YKaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFj
X2V4dCIpIDI+JjUgfAogICRFR1JFUCAiaGF2ZV9hcmJpdHJhcnlfZmlsZV9uYW1lX2xlbmd0aF9s
aW1pdCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKICBnbF9jdl9oYXZlX2FyYml0cmFyeV9maWxl
X25hbWVfbGVuZ3RoX2xpbWl0PXllcwplbHNlCiAgZ2xfY3ZfaGF2ZV9hcmJpdHJhcnlfZmlsZV9u
YW1lX2xlbmd0aF9saW1pdD1ubwpmaQpybSAtZiBjb25mdGVzdCoKCmZpCnsgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfaGF2ZV9hcmJpdHJhcnlf
ZmlsZV9uYW1lX2xlbmd0aF9saW1pdCIgPiY1CiRhc19lY2hvICIkZ2xfY3ZfaGF2ZV9hcmJpdHJh
cnlfZmlsZV9uYW1lX2xlbmd0aF9saW1pdCIgPiY2OyB9CgogICAgICBpZiB0ZXN0ICRnbF9jdl9o
YXZlX2FyYml0cmFyeV9maWxlX25hbWVfbGVuZ3RoX2xpbWl0ID0geWVzOyB0aGVuCgoKCgoKCgoK
ICBnbF9MSUJPQkpTPSIkZ2xfTElCT0JKUyBjaGRpci1sb25nLiRhY19vYmpleHQiCgogICAgICAg
IDoKICAgICAgZmkKICAgICAgZ2xfZ251bGliX2VuYWJsZWRfODE5OGRhYWUyNjFiOTMyZDY0YTk5
OGY4NTg2ZjUwMDU9dHJ1ZQogICAgICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfY2hkaXIKICAgICAg
aWYgdGVzdCAkZ2xfY3ZfaGF2ZV9hcmJpdHJhcnlfZmlsZV9uYW1lX2xlbmd0aF9saW1pdCA9IHll
czsgdGhlbgogICAgICAgIGZ1bmNfZ2xfZ251bGliX200Y29kZV9mY2hkaXIKICAgICAgZmkKICAg
ICAgaWYgdGVzdCAkZ2xfY3ZfaGF2ZV9hcmJpdHJhcnlfZmlsZV9uYW1lX2xlbmd0aF9saW1pdCA9
IHllczsgdGhlbgogICAgICAgIGZ1bmNfZ2xfZ251bGliX200Y29kZV9tZW1wY3B5CiAgICAgIGZp
CiAgICAgIGlmIHRlc3QgJGdsX2N2X2hhdmVfYXJiaXRyYXJ5X2ZpbGVfbmFtZV9sZW5ndGhfbGlt
aXQgPSB5ZXM7IHRoZW4KICAgICAgICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfbWVtcmNocgogICAg
ICBmaQogICAgICBpZiB0ZXN0ICRnbF9jdl9oYXZlX2FyYml0cmFyeV9maWxlX25hbWVfbGVuZ3Ro
X2xpbWl0ID0geWVzOyB0aGVuCiAgICAgICAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX29wZW5hdAog
ICAgICBmaQogICAgICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfcGF0aG1heAogICAgZmkKICB9CiAg
ZnVuY19nbF9nbnVsaWJfbTRjb2RlX2Nsb2V4ZWMgKCkKICB7CiAgICBpZiAhICRnbF9nbnVsaWJf
ZW5hYmxlZF9jbG9leGVjOyB0aGVuCgoKJGFzX2VjaG8gIiNkZWZpbmUgR05VTElCX1RFU1RfQ0xP
RVhFQyAxIiA+PmNvbmZkZWZzLmgKCgogICAgICBnbF9nbnVsaWJfZW5hYmxlZF9jbG9leGVjPXRy
dWUKICAgICAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX2R1cDIKICAgIGZpCiAgfQogIGZ1bmNfZ2xf
Z251bGliX200Y29kZV9jbG9zZSAoKQogIHsKICAgIGlmICEgJGdsX2dudWxpYl9lbmFibGVkX2Ns
b3NlOyB0aGVuCgoKCiAgaWYgdGVzdCAkSEFWRV9NU1ZDX0lOVkFMSURfUEFSQU1FVEVSX0hBTkRM
RVIgPSAxOyB0aGVuCiAgICBSRVBMQUNFX0NMT1NFPTEKICBmaQoKCgoKCiAgOgoKCgoKCiAgaWYg
dGVzdCAkYWNfY3ZfaGVhZGVyX3N5c19zb2NrZXRfaCAhPSB5ZXM7IHRoZW4KICAgICAgICAgICAg
ICAgICAgICBmb3IgYWNfaGVhZGVyIGluIHdpbnNvY2syLmgKZG8gOgogIGFjX2ZuX2NfY2hlY2tf
aGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICJ3aW5zb2NrMi5oIiAiYWNfY3ZfaGVhZGVyX3dpbnNv
Y2syX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfd2lu
c29jazJfaCIgPSB4eWVzOyB0aGVuIDoKICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZp
bmUgSEFWRV9XSU5TT0NLMl9IIDEKX0FDRU9GCgpmaQoKZG9uZQoKICBmaQogIGlmIHRlc3QgIiRh
Y19jdl9oZWFkZXJfd2luc29jazJfaCIgPSB5ZXM7IHRoZW4KICAgIEhBVkVfV0lOU09DSzJfSD0x
CiAgICBVTklTVERfSF9IQVZFX1dJTlNPQ0syX0g9MQogICAgU1lTX0lPQ1RMX0hfSEFWRV9XSU5T
T0NLMl9IPTEKICBlbHNlCiAgICBIQVZFX1dJTlNPQ0syX0g9MAogIGZpCgoKICAgIGlmIHRlc3Qg
JFVOSVNURF9IX0hBVkVfV0lOU09DSzJfSCA9IDE7IHRoZW4KICAgICAgICAgICAgICAgICAgICAg
ICAgUkVQTEFDRV9DTE9TRT0xCiAgICBmaQoKCiAgICBpZiB0ZXN0ICRSRVBMQUNFX0NMT1NFID0g
MDsgdGhlbgoKCgogIDoKCgoKCgogIGlmIHRlc3QgJGFjX2N2X2Z1bmNfZmNoZGlyID0gbm87IHRo
ZW4KICAgIEhBVkVfRkNIRElSPTAKICBmaQoKICAgICAgaWYgdGVzdCAkSEFWRV9GQ0hESVIgPSAw
OyB0aGVuCiAgICAgICAgUkVQTEFDRV9DTE9TRT0xCiAgICAgIGZpCiAgICBmaQoKCiAgICAgIGlm
IHRlc3QgJFJFUExBQ0VfQ0xPU0UgPSAxOyB0aGVuCgoKCgoKCgoKICBnbF9MSUJPQkpTPSIkZ2xf
TElCT0JKUyBjbG9zZS4kYWNfb2JqZXh0IgoKICAgICAgZmkKCgoKCgogICAgICAgICAgR05VTElC
X0NMT1NFPTEKCgoKCgokYXNfZWNobyAiI2RlZmluZSBHTlVMSUJfVEVTVF9DTE9TRSAxIiA+PmNv
bmZkZWZzLmgKCgoKICAgICAgZ2xfZ251bGliX2VuYWJsZWRfY2xvc2U9dHJ1ZQogICAgICBpZiB0
ZXN0ICRSRVBMQUNFX0NMT1NFID0gMTsgdGhlbgogICAgICAgIGZ1bmNfZ2xfZ251bGliX200Y29k
ZV80M2ZlODdhMzQxZDliNGI5M2M0N2MzYWQ4MTlhNTIzOQogICAgICBmaQogICAgICBpZiB0ZXN0
ICRSRVBMQUNFX0NMT1NFID0gMTsgdGhlbgogICAgICAgIGZ1bmNfZ2xfZ251bGliX200Y29kZV9m
NjkxZjA3NmY2NTA5NjRjOWY1NTk4YzNlZTQ4NzYxNgogICAgICBmaQogICAgZmkKICB9CiAgZnVu
Y19nbF9nbnVsaWJfbTRjb2RlXzc1YzY1YTJjMDE0Y2Y4MjM1ZGQ5NTI4OTY3NjMwMmE0ICgpCiAg
ewogICAgaWYgISAkZ2xfZ251bGliX2VuYWJsZWRfNzVjNjVhMmMwMTRjZjgyMzVkZDk1Mjg5Njc2
MzAyYTQ7IHRoZW4KICAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO
RU5PfTogY2hlY2tpbmcgZm9yIGRfaW5vIG1lbWJlciBpbiBkaXJlY3Rvcnkgc3RydWN0IiA+JjUK
JGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGRfaW5vIG1lbWJlciBpbiBkaXJlY3Rvcnkgc3RydWN0
Li4uICIgPiY2OyB9CmlmICR7Z2xfY3Zfc3RydWN0X2RpcmVudF9kX2lubys6fSBmYWxzZTsgdGhl
biA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIGlmIHRlc3QgIiRjcm9zc19j
b21waWxpbmciID0geWVzOyB0aGVuIDoKICBjYXNlICIkaG9zdF9vcyIgaW4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIyBHdWVzcyB5ZXMgb24gZ2xpYmMgc3lzdGVtcyB3aXRoIExpbnV4IGtl
cm5lbC4KICAgICAgICAgICAgICBsaW51eCotZ251KikgZ2xfY3Zfc3RydWN0X2RpcmVudF9kX2lu
bz0iZ3Vlc3NpbmcgeWVzIiA7OwogICAgICAgICAgICAgICAgICAgICAgICAgICAjIElmIHdlIGRv
bid0IGtub3csIGFzc3VtZSB0aGUgd29yc3QuCiAgICAgICAgICAgICAgKikgICAgICAgICAgIGds
X2N2X3N0cnVjdF9kaXJlbnRfZF9pbm89Imd1ZXNzaW5nIG5vIiA7OwogICAgICAgICAgICBlc2Fj
CgplbHNlCiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBl
bmQgY29uZmRlZnMuaC4gICovCiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICAgICAgICAgICAgICNp
bmNsdWRlIDxzeXMvc3RhdC5oPgogICAgICAgICAgICAgI2luY2x1ZGUgPGRpcmVudC5oPgoKaW50
Cm1haW4gKCkKewpESVIgKmRwID0gb3BlbmRpciAoIi4iKTsKICAgICAgICAgICAgIHN0cnVjdCBk
aXJlbnQgKmU7CiAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCBzdDsKICAgICAgICAgICAgIGlmICgh
IGRwKQogICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgIGUgPSByZWFkZGlyIChk
cCk7CiAgICAgICAgICAgICBpZiAoISBlKQogICAgICAgICAgICAgICByZXR1cm4gMjsKICAgICAg
ICAgICAgIGlmIChzdGF0IChlLT5kX25hbWUsICZzdCkgIT0gMCkKICAgICAgICAgICAgICAgcmV0
dXJuIDM7CiAgICAgICAgICAgICBpZiAoZS0+ZF9pbm8gIT0gc3Quc3RfaW5vKQogICAgICAgICAg
ICAgICByZXR1cm4gNDsKICAgICAgICAgICAgIHJldHVybiAwOwoKICA7CiAgcmV0dXJuIDA7Cn0K
X0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgogIGdsX2N2X3N0cnVj
dF9kaXJlbnRfZF9pbm89eWVzCmVsc2UKICBnbF9jdl9zdHJ1Y3RfZGlyZW50X2RfaW5vPW5vCmZp
CnJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRl
c3QkYWNfZXhlZXh0IFwKICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRl
c3QuJGFjX2V4dApmaQoKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99
OiByZXN1bHQ6ICRnbF9jdl9zdHJ1Y3RfZGlyZW50X2RfaW5vIiA+JjUKJGFzX2VjaG8gIiRnbF9j
dl9zdHJ1Y3RfZGlyZW50X2RfaW5vIiA+JjY7IH0KICAgY2FzZSAiJGdsX2N2X3N0cnVjdF9kaXJl
bnRfZF9pbm8iIGluCiAgICAgKnllcykKCiRhc19lY2hvICIjZGVmaW5lIERfSU5PX0lOX0RJUkVO
VCAxIiA+PmNvbmZkZWZzLmgKCiAgICAgICA7OwogICBlc2FjCgoKICAgICAgZ2xfZ251bGliX2Vu
YWJsZWRfNzVjNjVhMmMwMTRjZjgyMzVkZDk1Mjg5Njc2MzAyYTQ9dHJ1ZQogICAgZmkKICB9CiAg
ZnVuY19nbF9nbnVsaWJfbTRjb2RlX2RpcmZkICgpCiAgewogICAgaWYgISAkZ2xfZ251bGliX2Vu
YWJsZWRfZGlyZmQ7IHRoZW4KCgoKCgogIGZvciBhY19mdW5jIGluIGRpcmZkCmRvIDoKICBhY19m
bl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJkaXJmZCIgImFjX2N2X2Z1bmNfZGlyZmQiCmlmIHRl
c3QgIngkYWNfY3ZfZnVuY19kaXJmZCIgPSB4eWVzOyB0aGVuIDoKICBjYXQgPj5jb25mZGVmcy5o
IDw8X0FDRU9GCiNkZWZpbmUgSEFWRV9ESVJGRCAxCl9BQ0VPRgoKZmkKZG9uZQoKICBhY19mbl9j
X2NoZWNrX2RlY2wgIiRMSU5FTk8iICJkaXJmZCIgImFjX2N2X2hhdmVfZGVjbF9kaXJmZCIgIiNp
bmNsdWRlIDxzeXMvdHlwZXMuaD4KICAgICAgI2luY2x1ZGUgPGRpcmVudC5oPgoiCmlmIHRlc3Qg
IngkYWNfY3ZfaGF2ZV9kZWNsX2RpcmZkIiA9IHh5ZXM7IHRoZW4gOgogIGFjX2hhdmVfZGVjbD0x
CmVsc2UKICBhY19oYXZlX2RlY2w9MApmaQoKY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVm
aW5lIEhBVkVfREVDTF9ESVJGRCAkYWNfaGF2ZV9kZWNsCl9BQ0VPRgoKICBpZiB0ZXN0ICRhY19j
dl9oYXZlX2RlY2xfZGlyZmQgPSBubzsgdGhlbgogICAgSEFWRV9ERUNMX0RJUkZEPTAKICBmaQoK
ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRo
ZXIgZGlyZmQgaXMgYSBtYWNybyIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgZGly
ZmQgaXMgYSBtYWNyby4uLiAiID4mNjsgfQppZiAke2dsX2N2X2Z1bmNfZGlyZmRfbWFjcm8rOn0g
ZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKICBjYXQgY29u
ZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAg
Ki8KCiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KI2luY2x1ZGUgPGRpcmVudC5oPgojaWZkZWYgZGly
ZmQKIGRpcmVudF9oZWFkZXJfZGVmaW5lc19kaXJmZAojZW5kaWYKX0FDRU9GCmlmIChldmFsICIk
YWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKICAkRUdSRVAgImRpcmVudF9oZWFkZXJf
ZGVmaW5lc19kaXJmZCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKICBnbF9jdl9mdW5jX2RpcmZk
X21hY3JvPXllcwplbHNlCiAgZ2xfY3ZfZnVuY19kaXJmZF9tYWNybz1ubwpmaQpybSAtZiBjb25m
dGVzdCoKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0
OiAkZ2xfY3ZfZnVuY19kaXJmZF9tYWNybyIgPiY1CiRhc19lY2hvICIkZ2xfY3ZfZnVuY19kaXJm
ZF9tYWNybyIgPiY2OyB9CgogICMgVXNlIHRoZSByZXBsYWNlbWVudCBvbmx5IGlmIHdlIGhhdmUg
bm8gZnVuY3Rpb24gb3IgbWFjcm8gd2l0aCB0aGF0IG5hbWUuCiAgaWYgdGVzdCAkYWNfY3ZfZnVu
Y19kaXJmZCA9IG5vICYmIHRlc3QgJGdsX2N2X2Z1bmNfZGlyZmRfbWFjcm8gPSBubzsgdGhlbgog
ICAgaWYgdGVzdCAkYWNfY3ZfaGF2ZV9kZWNsX2RpcmZkID0geWVzOyB0aGVuCiAgICAgICMgSWYg
dGhlIHN5c3RlbSBkZWNsYXJlcyBkaXJmZCBhbHJlYWR5LCBsZXQncyBkZWNsYXJlIHJwbF9kaXJm
ZCBpbnN0ZWFkLgogICAgICBSRVBMQUNFX0RJUkZEPTEKICAgIGZpCiAgZmkKCiAgICAgIGlmIHRl
c3QgJGFjX2N2X2Z1bmNfZGlyZmQgPSBubyAmJiB0ZXN0ICRnbF9jdl9mdW5jX2RpcmZkX21hY3Jv
ID0gbm87IHRoZW4KCgoKCgoKCgogIGdsX0xJQk9CSlM9IiRnbF9MSUJPQkpTIGRpcmZkLiRhY19v
YmpleHQiCgoKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr
aW5nIGhvdyB0byBnZXQgdGhlIGZpbGUgZGVzY3JpcHRvciBhc3NvY2lhdGVkIHdpdGggYW4gb3Bl
biBESVIqIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGdldCB0aGUgZmlsZSBkZXNj
cmlwdG9yIGFzc29jaWF0ZWQgd2l0aCBhbiBvcGVuIERJUiouLi4gIiA+JjY7IH0KaWYgJHtnbF9j
dl9zeXNfZGlyX2ZkX21lbWJlcl9uYW1lKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIo
Y2FjaGVkKSAiID4mNgplbHNlCgogICAgICBkaXJmZF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCiAgICAg
IGZvciBhY19leHByIGluIGRfZmQgZGRfZmQ7IGRvCgogICAgICAgIENGTEFHUz0iJENGTEFHUyAt
RERJUl9GRF9NRU1CRVJfTkFNRT0kYWNfZXhwciIKICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8
X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCiAgICAgICAg
ICAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogICAgICAgICAgICNpbmNsdWRlIDxkaXJlbnQuaD4K
aW50Cm1haW4gKCkKewpESVIgKmRpcl9wID0gb3BlbmRpcigiLiIpOyAodm9pZCkgZGlyX3AtPkRJ
Ul9GRF9NRU1CRVJfTkFNRTsKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5
X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKICBkaXJfZmRfZm91bmQ9eWVzCgpmaQpybSAtZiBj
b3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKICAg
ICAgICBDRkxBR1M9JGRpcmZkX3NhdmVfQ0ZMQUdTCiAgICAgICAgdGVzdCAiJGRpcl9mZF9mb3Vu
ZCIgPSB5ZXMgJiYgYnJlYWsKICAgICAgZG9uZQogICAgICB0ZXN0ICIkZGlyX2ZkX2ZvdW5kIiA9
IHllcyB8fCBhY19leHByPW5vX3N1Y2hfbWVtYmVyCgogICAgICBnbF9jdl9zeXNfZGlyX2ZkX21l
bWJlcl9uYW1lPSRhY19leHByCgoKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiByZXN1bHQ6ICRnbF9jdl9zeXNfZGlyX2ZkX21lbWJlcl9uYW1lIiA+JjUKJGFzX2Vj
aG8gIiRnbF9jdl9zeXNfZGlyX2ZkX21lbWJlcl9uYW1lIiA+JjY7IH0KICBpZiB0ZXN0ICRnbF9j
dl9zeXNfZGlyX2ZkX21lbWJlcl9uYW1lICE9IG5vX3N1Y2hfbWVtYmVyOyB0aGVuCgpjYXQgPj5j
b25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgRElSX0ZEX01FTUJFUl9OQU1FICRnbF9jdl9zeXNf
ZGlyX2ZkX21lbWJlcl9uYW1lCl9BQ0VPRgoKICBmaQoKCiAgICAgIGZpCgoKCgoKICAgICAgICAg
IEdOVUxJQl9ESVJGRD0xCgoKCgoKJGFzX2VjaG8gIiNkZWZpbmUgR05VTElCX1RFU1RfRElSRkQg
MSIgPj5jb25mZGVmcy5oCgoKCiAgICAgIGdsX2dudWxpYl9lbmFibGVkX2RpcmZkPXRydWUKICAg
IGZpCiAgfQogIGZ1bmNfZ2xfZ251bGliX200Y29kZV9hNjkxZGE5OWMxZDgzYjgzMjM4ZTQ1ZjQx
YTY5NmY1YyAoKQogIHsKICAgIGlmICEgJGdsX2dudWxpYl9lbmFibGVkX2E2OTFkYTk5YzFkODNi
ODMyMzhlNDVmNDFhNjk2ZjVjOyB0aGVuCgoKCgogICAgICBnbF9nbnVsaWJfZW5hYmxlZF9hNjkx
ZGE5OWMxZDgzYjgzMjM4ZTQ1ZjQxYTY5NmY1Yz10cnVlCiAgICAgIGZ1bmNfZ2xfZ251bGliX200
Y29kZV9kb3NuYW1lCiAgICBmaQogIH0KICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfZG9zbmFtZSAo
KQogIHsKICAgIGlmICEgJGdsX2dudWxpYl9lbmFibGVkX2Rvc25hbWU7IHRoZW4KICAgICAgZ2xf
Z251bGliX2VuYWJsZWRfZG9zbmFtZT10cnVlCiAgICBmaQogIH0KICBmdW5jX2dsX2dudWxpYl9t
NGNvZGVfZHVwICgpCiAgewogICAgaWYgISAkZ2xfZ251bGliX2VuYWJsZWRfZHVwOyB0aGVuCgoK
CiAgaWYgdGVzdCAkSEFWRV9NU1ZDX0lOVkFMSURfUEFSQU1FVEVSX0hBTkRMRVIgPSAxOyB0aGVu
CiAgICBSRVBMQUNFX0RVUD0xCiAgZmkKCgoKCiAgOgoKCgoKCiAgaWYgdGVzdCAkYWNfY3ZfZnVu
Y19mY2hkaXIgPSBubzsgdGhlbgogICAgSEFWRV9GQ0hESVI9MAogIGZpCgogICAgaWYgdGVzdCAk
SEFWRV9GQ0hESVIgPSAwOyB0aGVuCiAgICAgIFJFUExBQ0VfRFVQPTEKICAgIGZpCgoKICAgICAg
aWYgdGVzdCAkUkVQTEFDRV9EVVAgPSAxOyB0aGVuCgoKCgoKCgoKICBnbF9MSUJPQkpTPSIkZ2xf
TElCT0JKUyBkdXAuJGFjX29iamV4dCIKCiAgICAgICAgOgogICAgICBmaQoKCgoKCiAgICAgICAg
ICBHTlVMSUJfRFVQPTEKCgoKCgokYXNfZWNobyAiI2RlZmluZSBHTlVMSUJfVEVTVF9EVVAgMSIg
Pj5jb25mZGVmcy5oCgoKCiAgICAgIGdsX2dudWxpYl9lbmFibGVkX2R1cD10cnVlCiAgICAgIGlm
IHRlc3QgJFJFUExBQ0VfRFVQID0gMTsgdGhlbgogICAgICAgIGZ1bmNfZ2xfZ251bGliX200Y29k
ZV9mNjkxZjA3NmY2NTA5NjRjOWY1NTk4YzNlZTQ4NzYxNgogICAgICBmaQogICAgZmkKICB9CiAg
ZnVuY19nbF9nbnVsaWJfbTRjb2RlX2R1cDIgKCkKICB7CiAgICBpZiAhICRnbF9nbnVsaWJfZW5h
YmxlZF9kdXAyOyB0aGVuCgoKCgoKJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9EVVAyIDEiID4+Y29u
ZmRlZnMuaAoKCiAgaWYgdGVzdCAkSEFWRV9EVVAyID0gMTsgdGhlbgogICAgeyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGR1cDIgd29ya3Mi
ID4mNQokYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIGR1cDIgd29ya3MuLi4gIiA+JjY7IH0K
aWYgJHtnbF9jdl9mdW5jX2R1cDJfd29ya3MrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24g
IihjYWNoZWQpICIgPiY2CmVsc2UKICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsg
dGhlbiA6CiAgY2FzZSAiJGhvc3Rfb3MiIGluCiAgICAgICAgICAgbWluZ3cqKSAjIG9uIHRoaXMg
cGxhdGZvcm0sIGR1cDIgYWx3YXlzIHJldHVybnMgMCBmb3Igc3VjY2VzcwogICAgICAgICAgICAg
Z2xfY3ZfZnVuY19kdXAyX3dvcmtzPSJndWVzc2luZyBubyIgOzsKICAgICAgICAgICBjeWd3aW4q
KSAjIG9uIGN5Z3dpbiAxLjUueCwgZHVwMigxLDEpIHJldHVybnMgMAogICAgICAgICAgICAgZ2xf
Y3ZfZnVuY19kdXAyX3dvcmtzPSJndWVzc2luZyBubyIgOzsKICAgICAgICAgICBsaW51eCopICMg
T24gbGludXggYmV0d2VlbiAyMDA4LTA3LTI3IGFuZCAyMDA5LTA1LTExLCBkdXAyIG9mIGEKICAg
ICAgICAgICAgICAgICAgICMgY2xvc2VkIGZkIG1heSB5aWVsZCAtRUJBREYgaW5zdGVhZCBvZiAt
MSAvIGVycm5vPUVCQURGLgogICAgICAgICAgICAgZ2xfY3ZfZnVuY19kdXAyX3dvcmtzPSJndWVz
c2luZyBubyIgOzsKICAgICAgICAgICBmcmVlYnNkKikgIyBvbiBGcmVlQlNEIDYuMSwgZHVwMigx
LDEwMDAwMDApIGdpdmVzIEVNRklMRSwgbm90IEVCQURGLgogICAgICAgICAgICAgZ2xfY3ZfZnVu
Y19kdXAyX3dvcmtzPSJndWVzc2luZyBubyIgOzsKICAgICAgICAgICBoYWlrdSopICMgb24gSGFp
a3UgYWxwaGEgMiwgZHVwMigxLCAxKSByZXNldHMgRkRfQ0xPRVhFQy4KICAgICAgICAgICAgIGds
X2N2X2Z1bmNfZHVwMl93b3Jrcz0iZ3Vlc3Npbmcgbm8iIDs7CiAgICAgICAgICAgKikgZ2xfY3Zf
ZnVuY19kdXAyX3dvcmtzPSJndWVzc2luZyB5ZXMiIDs7CiAgICAgICAgIGVzYWMKZWxzZQogIGNh
dCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZz
LmguICAqLwoKICAgICAgICAgI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8ZmNudGwuaD4K
I2luY2x1ZGUgPGVycm5vLmg+CmludAptYWluICgpCnsKaW50IHJlc3VsdCA9IDA7CiNpZmRlZiBG
RF9DTE9FWEVDCiAgICAgICAgICAgIGlmIChmY250bCAoMSwgRl9TRVRGRCwgRkRfQ0xPRVhFQykg
PT0gLTEpCiAgICAgICAgICAgICAgcmVzdWx0IHw9IDE7CiNlbmRpZgogICAgICAgICAgICBpZiAo
ZHVwMiAoMSwgMSkgPT0gMCkKICAgICAgICAgICAgICByZXN1bHQgfD0gMjsKI2lmZGVmIEZEX0NM
T0VYRUMKICAgICAgICAgICAgaWYgKGZjbnRsICgxLCBGX0dFVEZEKSAhPSBGRF9DTE9FWEVDKQog
ICAgICAgICAgICAgIHJlc3VsdCB8PSA0OwojZW5kaWYKICAgICAgICAgICAgY2xvc2UgKDApOwog
ICAgICAgICAgICBpZiAoZHVwMiAoMCwgMCkgIT0gLTEpCiAgICAgICAgICAgICAgcmVzdWx0IHw9
IDg7CiAgICAgICAgICAgIC8qIE1hbnkgZ251bGliIG1vZHVsZXMgcmVxdWlyZSBQT1NJWCBjb25m
b3JtYW5jZSBvZiBFQkFERi4gICovCiAgICAgICAgICAgIGlmIChkdXAyICgyLCAxMDAwMDAwKSA9
PSAtMSAmJiBlcnJubyAhPSBFQkFERikKICAgICAgICAgICAgICByZXN1bHQgfD0gMTY7CiAgICAg
ICAgICAgIC8qIEZsdXNoIG91dCBhIGN5Z3dpbiBjb3JlIGR1bXAuICAqLwogICAgICAgICAgICBp
ZiAoZHVwMiAoMiwgLTEpICE9IC0xIHx8IGVycm5vICE9IEVCQURGKQogICAgICAgICAgICAgIHJl
c3VsdCB8PSAzMjsKICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKCiAgOwogIHJldHVybiAwOwp9
CgpfQUNFT0YKaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CiAgZ2xfY3ZfZnVu
Y19kdXAyX3dvcmtzPXllcwplbHNlCiAgZ2xfY3ZfZnVuY19kdXAyX3dvcmtzPW5vCmZpCnJtIC1m
IGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNf
ZXhlZXh0IFwKICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFj
X2V4dApmaQoKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz
dWx0OiAkZ2xfY3ZfZnVuY19kdXAyX3dvcmtzIiA+JjUKJGFzX2VjaG8gIiRnbF9jdl9mdW5jX2R1
cDJfd29ya3MiID4mNjsgfQogICAgY2FzZSAiJGdsX2N2X2Z1bmNfZHVwMl93b3JrcyIgaW4KICAg
ICAgKnllcykgOzsKICAgICAgKikKICAgICAgICBSRVBMQUNFX0RVUDI9MQogICAgICAgIDs7CiAg
ICBlc2FjCiAgZmkKCgoKCiAgOgoKCgoKCiAgaWYgdGVzdCAkYWNfY3ZfZnVuY19mY2hkaXIgPSBu
bzsgdGhlbgogICAgSEFWRV9GQ0hESVI9MAogIGZpCgogICAgaWYgdGVzdCAkSEFWRV9GQ0hESVIg
PSAwOyB0aGVuCiAgICAgIGlmIHRlc3QgJEhBVkVfRFVQMiA9IDE7IHRoZW4KICAgICAgICBSRVBM
QUNFX0RVUDI9MQogICAgICBmaQogICAgZmkKCgogICAgICBpZiB0ZXN0ICRIQVZFX0RVUDIgPSAw
IHx8IHRlc3QgJFJFUExBQ0VfRFVQMiA9IDE7IHRoZW4KCgoKCgoKCgogIGdsX0xJQk9CSlM9IiRn
bF9MSUJPQkpTIGR1cDIuJGFjX29iamV4dCIKCgogICAgICBmaQoKCgoKCiAgICAgICAgICBHTlVM
SUJfRFVQMj0xCgoKCgoKJGFzX2VjaG8gIiNkZWZpbmUgR05VTElCX1RFU1RfRFVQMiAxIiA+PmNv
bmZkZWZzLmgKCgoKICAgICAgZ2xfZ251bGliX2VuYWJsZWRfZHVwMj10cnVlCiAgICAgIGlmIHRl
c3QgJEhBVkVfRFVQMiA9IDAgfHwgdGVzdCAkUkVQTEFDRV9EVVAyID0gMTsgdGhlbgogICAgICAg
IGZ1bmNfZ2xfZ251bGliX200Y29kZV9mNjkxZjA3NmY2NTA5NjRjOWY1NTk4YzNlZTQ4NzYxNgog
ICAgICBmaQogICAgICBpZiB0ZXN0ICRIQVZFX0RVUDIgPSAwIHx8IHRlc3QgJFJFUExBQ0VfRFVQ
MiA9IDE7IHRoZW4KICAgICAgICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfNjc2MjIwZmE0MzY2ZWZh
OWJkYmZjY2YxMWE4NTdjMDcKICAgICAgZmkKICAgIGZpCiAgfQogIGZ1bmNfZ2xfZ251bGliX200
Y29kZV9mY2hkaXIgKCkKICB7CiAgICBpZiAhICRnbF9nbnVsaWJfZW5hYmxlZF9mY2hkaXI7IHRo
ZW4KCgoKCgogIDoKCgoKCgogIGlmIHRlc3QgJGFjX2N2X2hhdmVfZGVjbF9mY2hkaXIgPSBubzsg
dGhlbgogICAgSEFWRV9ERUNMX0ZDSERJUj0wCiAgZmkKCgogIGlmIHRlc3QgJEhBVkVfRkNIRElS
ID0gMDsgdGhlbgoKCgoKCgoKCiAgZ2xfTElCT0JKUz0iJGdsX0xJQk9CSlMgZmNoZGlyLiRhY19v
YmpleHQiCgogICAgOgoKJGFzX2VjaG8gIiNkZWZpbmUgUkVQTEFDRV9GQ0hESVIgMSIgPj5jb25m
ZGVmcy5oCgogICAgICAgICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBjaGVja2luZyB3aGV0aGVyIG9wZW4gY2FuIHZpc2l0IGRpcmVjdG9yaWVzIiA+JjUK
JGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBvcGVuIGNhbiB2aXNpdCBkaXJlY3Rvcmllcy4u
LiAiID4mNjsgfQppZiAke2dsX2N2X2Z1bmNfb3Blbl9kaXJlY3Rvcnlfd29ya3MrOn0gZmFsc2U7
IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKICBpZiB0ZXN0ICIkY3Jv
c3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CiAgY2FzZSAiJGhvc3Rfb3MiIGluCiAgICAgICAg
ICAgICAgICAgICAjIEd1ZXNzIHllcyBvbiBnbGliYyBzeXN0ZW1zLgogICAgICAgICAgICotZ251
KikgZ2xfY3ZfZnVuY19vcGVuX2RpcmVjdG9yeV93b3Jrcz0iZ3Vlc3NpbmcgeWVzIiA7OwogICAg
ICAgICAgICAgICAgICAgIyBJZiB3ZSBkb24ndCBrbm93LCBhc3N1bWUgdGhlIHdvcnN0LgogICAg
ICAgICAgICopICAgICAgZ2xfY3ZfZnVuY19vcGVuX2RpcmVjdG9yeV93b3Jrcz0iZ3Vlc3Npbmcg
bm8iIDs7CiAgICAgICAgIGVzYWMKCmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5j
b25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPGZjbnRsLmg+
CgppbnQKbWFpbiAoKQp7CnJldHVybiBvcGVuKCIuIiwgT19SRE9OTFkpIDwgMDsKICA7CiAgcmV0
dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgogIGds
X2N2X2Z1bmNfb3Blbl9kaXJlY3Rvcnlfd29ya3M9eWVzCmVsc2UKICBnbF9jdl9mdW5jX29wZW5f
ZGlyZWN0b3J5X3dvcmtzPW5vCmZpCnJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBn
bW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKICBjb25mdGVzdC4kYWNfb2JqZXh0
IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dApmaQoKZmkKeyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbF9jdl9mdW5jX29wZW5fZGlyZWN0b3J5
X3dvcmtzIiA+JjUKJGFzX2VjaG8gIiRnbF9jdl9mdW5jX29wZW5fZGlyZWN0b3J5X3dvcmtzIiA+
JjY7IH0KICAgIGNhc2UgIiRnbF9jdl9mdW5jX29wZW5fZGlyZWN0b3J5X3dvcmtzIiBpbgogICAg
ICAqeWVzKSA7OwogICAgICAqKQoKJGFzX2VjaG8gIiNkZWZpbmUgUkVQTEFDRV9PUEVOX0RJUkVD
VE9SWSAxIiA+PmNvbmZkZWZzLmgKCiAgICAgICAgOzsKICAgIGVzYWMKICBmaQoKCgoKCgogICAg
ICAgICAgR05VTElCX0ZDSERJUj0xCgoKCgoKJGFzX2VjaG8gIiNkZWZpbmUgR05VTElCX1RFU1Rf
RkNIRElSIDEiID4+Y29uZmRlZnMuaAoKCgogICAgICBnbF9nbnVsaWJfZW5hYmxlZF9mY2hkaXI9
dHJ1ZQogICAgICBpZiB0ZXN0ICRIQVZFX0ZDSERJUiA9IDA7IHRoZW4KICAgICAgICBmdW5jX2ds
X2dudWxpYl9tNGNvZGVfY2hkaXIKICAgICAgZmkKICAgICAgaWYgdGVzdCAkSEFWRV9GQ0hESVIg
PSAwOyB0aGVuCiAgICAgICAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX2Nsb3NlCiAgICAgIGZpCiAg
ICAgIGlmIHRlc3QgJEhBVkVfRkNIRElSID0gMDsgdGhlbgogICAgICAgIGZ1bmNfZ2xfZ251bGli
X200Y29kZV9kaXJmZAogICAgICBmaQogICAgICBpZiB0ZXN0ICRIQVZFX0ZDSERJUiA9IDA7IHRo
ZW4KICAgICAgICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfZG9zbmFtZQogICAgICBmaQogICAgICBp
ZiB0ZXN0ICRIQVZFX0ZDSERJUiA9IDA7IHRoZW4KICAgICAgICBmdW5jX2dsX2dudWxpYl9tNGNv
ZGVfZHVwMgogICAgICBmaQogICAgICBpZiB0ZXN0ICRIQVZFX0ZDSERJUiA9IDA7IHRoZW4KICAg
ICAgICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfZmNhOTg1MmRiMmE0M2JiMzNmMDJmMGZiZGJjMTc0
ZjYKICAgICAgZmkKICAgICAgaWYgdGVzdCAkSEFWRV9GQ0hESVIgPSAwOyB0aGVuCiAgICAgICAg
ZnVuY19nbF9nbnVsaWJfbTRjb2RlXzNkMDk0ZWY1NDJiZmRkMjM4YTUxOTRlMTcyYmZlNWY2CiAg
ICAgIGZpCiAgICAgIGlmIHRlc3QgJEhBVkVfRkNIRElSID0gMDsgdGhlbgogICAgICAgIGZ1bmNf
Z2xfZ251bGliX200Y29kZV82MWJjYWNhNzZiM2U2ZjlhZTU1ZDU3YTFjMzE5M2JjNAogICAgICBm
aQogICAgICBpZiB0ZXN0ICRIQVZFX0ZDSERJUiA9IDA7IHRoZW4KICAgICAgICBmdW5jX2dsX2du
dWxpYl9tNGNvZGVfZjk4NTA2MzFkY2E5MTg1OWU5Y2RkYWM5MzU5OTIxYzAKICAgICAgZmkKICAg
IGZpCiAgfQogIGZ1bmNfZ2xfZ251bGliX200Y29kZV80M2ZlODdhMzQxZDliNGI5M2M0N2MzYWQ4
MTlhNTIzOSAoKQogIHsKICAgIGlmICEgJGdsX2dudWxpYl9lbmFibGVkXzQzZmU4N2EzNDFkOWI0
YjkzYzQ3YzNhZDgxOWE1MjM5OyB0aGVuCiAgICAgIGdsX2dudWxpYl9lbmFibGVkXzQzZmU4N2Ez
NDFkOWI0YjkzYzQ3YzNhZDgxOWE1MjM5PXRydWUKICAgIGZpCiAgfQogIGZ1bmNfZ2xfZ251bGli
X200Y29kZV9mZG9wZW5kaXIgKCkKICB7CiAgICBpZiAhICRnbF9nbnVsaWJfZW5hYmxlZF9mZG9w
ZW5kaXI7IHRoZW4KCgoKCgogICAgYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAiZmRvcGVu
ZGlyIiAiYWNfY3ZfaGF2ZV9kZWNsX2Zkb3BlbmRpciIgIgojaW5jbHVkZSA8ZGlyZW50Lmg+Cgoi
CmlmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX2Zkb3BlbmRpciIgPSB4eWVzOyB0aGVuIDoKICBh
Y19oYXZlX2RlY2w9MQplbHNlCiAgYWNfaGF2ZV9kZWNsPTAKZmkKCmNhdCA+PmNvbmZkZWZzLmgg
PDxfQUNFT0YKI2RlZmluZSBIQVZFX0RFQ0xfRkRPUEVORElSICRhY19oYXZlX2RlY2wKX0FDRU9G
CmlmIHRlc3QgJGFjX2hhdmVfZGVjbCA9IDE7IHRoZW4gOgoKZWxzZQogIEhBVkVfREVDTF9GRE9Q
RU5ESVI9MApmaQoKCiAgOgoKCgoKCiAgaWYgdGVzdCAkYWNfY3ZfZnVuY19mZG9wZW5kaXIgPSBu
bzsgdGhlbgogICAgSEFWRV9GRE9QRU5ESVI9MAogIGVsc2UKICAgIHsgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBmZG9wZW5kaXIgd29ya3Mi
ID4mNQokYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIGZkb3BlbmRpciB3b3Jrcy4uLiAiID4m
NjsgfQppZiAke2dsX2N2X2Z1bmNfZmRvcGVuZGlyX3dvcmtzKzp9IGZhbHNlOyB0aGVuIDoKICAk
YXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCiAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGlu
ZyIgPSB5ZXM7IHRoZW4gOgogIGNhc2UgIiRob3N0X29zIiBpbgogICAgICAgICAgICAgICAgICAg
ICMgR3Vlc3MgeWVzIG9uIGdsaWJjIHN5c3RlbXMuCiAgICAgICAgICAgICotZ251KikgZ2xfY3Zf
ZnVuY19mZG9wZW5kaXJfd29ya3M9Imd1ZXNzaW5nIHllcyIgOzsKICAgICAgICAgICAgICAgICAg
ICAjIElmIHdlIGRvbid0IGtub3csIGFzc3VtZSB0aGUgd29yc3QuCiAgICAgICAgICAgICopICAg
ICAgZ2xfY3ZfZnVuY19mZG9wZW5kaXJfd29ya3M9Imd1ZXNzaW5nIG5vIiA7OwogICAgICAgICAg
ZXNhYwoKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQK
LyogZW5kIGNvbmZkZWZzLmguICAqLwoKI2luY2x1ZGUgPGRpcmVudC5oPgojaW5jbHVkZSA8ZmNu
dGwuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaWYgIUhBVkVfREVDTF9GRE9QRU5ESVIKZXh0ZXJu
CiMgaWZkZWYgX19jcGx1c3BsdXMKIkMiCiMgZW5kaWYKRElSICpmZG9wZW5kaXIgKGludCk7CiNl
bmRpZgoKaW50Cm1haW4gKCkKewppbnQgcmVzdWx0ID0gMDsKICAgICBpbnQgZmQgPSBvcGVuICgi
Y29uZnRlc3QuYyIsIE9fUkRPTkxZKTsKICAgICBpZiAoZmQgPCAwKSByZXN1bHQgfD0gMTsKICAg
ICBpZiAoZmRvcGVuZGlyIChmZCkpIHJlc3VsdCB8PSAyOwogICAgIGlmIChjbG9zZSAoZmQpKSBy
ZXN1bHQgfD0gNDsKICAgICByZXR1cm4gcmVzdWx0OwogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YK
aWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CiAgZ2xfY3ZfZnVuY19mZG9wZW5k
aXJfd29ya3M9eWVzCmVsc2UKICBnbF9jdl9mdW5jX2Zkb3BlbmRpcl93b3Jrcz1ubwpmaQpybSAt
ZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFj
X2V4ZWV4dCBcCiAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRh
Y19leHQKZmkKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz
dWx0OiAkZ2xfY3ZfZnVuY19mZG9wZW5kaXJfd29ya3MiID4mNQokYXNfZWNobyAiJGdsX2N2X2Z1
bmNfZmRvcGVuZGlyX3dvcmtzIiA+JjY7IH0KICAgIGNhc2UgIiRnbF9jdl9mdW5jX2Zkb3BlbmRp
cl93b3JrcyIgaW4KICAgICAgKnllcykgOzsKICAgICAgKikKICAgICAgICBSRVBMQUNFX0ZET1BF
TkRJUj0xCiAgICAgICAgOzsKICAgIGVzYWMKICBmaQoKICAgICAgaWYgdGVzdCAkSEFWRV9GRE9Q
RU5ESVIgPSAwIHx8IHRlc3QgJFJFUExBQ0VfRkRPUEVORElSID0gMTsgdGhlbgoKCgoKCgoKCiAg
Z2xfTElCT0JKUz0iJGdsX0xJQk9CSlMgZmRvcGVuZGlyLiRhY19vYmpleHQiCgogICAgICBmaQoK
CgoKCiAgICAgICAgICBHTlVMSUJfRkRPUEVORElSPTEKCgoKCgokYXNfZWNobyAiI2RlZmluZSBH
TlVMSUJfVEVTVF9GRE9QRU5ESVIgMSIgPj5jb25mZGVmcy5oCgoKCgoKY2F0ID4+Y29uZmRlZnMu
aCA8PF9BQ0VPRgojZGVmaW5lIEdOVUxJQl9GRE9QRU5ESVIgMQpfQUNFT0YKCgogICAgICBnbF9n
bnVsaWJfZW5hYmxlZF9mZG9wZW5kaXI9dHJ1ZQogICAgICBpZiB0ZXN0ICRIQVZFX0ZET1BFTkRJ
UiA9IDA7IHRoZW4KICAgICAgICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfMjYwOTQxYzBlNWRjNjdl
YzllODdkMWZiMzIxYzMwMGIKICAgICAgZmkKICAgICAgaWYgdGVzdCAkSEFWRV9GRE9QRU5ESVIg
PSAwOyB0aGVuCiAgICAgICAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX2R1cAogICAgICBmaQogICAg
ICBpZiB0ZXN0ICRIQVZFX0ZET1BFTkRJUiA9IDA7IHRoZW4KICAgICAgICBmdW5jX2dsX2dudWxp
Yl9tNGNvZGVfZmNoZGlyCiAgICAgIGZpCiAgICAgIGlmIHRlc3QgJEhBVkVfRkRPUEVORElSID0g
MDsgdGhlbgogICAgICAgIGZ1bmNfZ2xfZ251bGliX200Y29kZV8xODQwMTI5ZDQ5MGYzYTAwYzhh
MDk4MzE2ZDBmYTM0NQogICAgICBmaQogICAgICBpZiB0ZXN0ICRIQVZFX0ZET1BFTkRJUiA9IDA7
IHRoZW4KICAgICAgICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfZDQ4NTA1MzI2ODhiYTE2ZDY4NWYw
MzYwNzY2MTFmMjEKICAgICAgZmkKICAgIGZpCiAgfQogIGZ1bmNfZ2xfZ251bGliX200Y29kZV9m
Y2E5ODUyZGIyYTQzYmIzM2YwMmYwZmJkYmMxNzRmNiAoKQogIHsKICAgIGlmICEgJGdsX2dudWxp
Yl9lbmFibGVkX2ZjYTk4NTJkYjJhNDNiYjMzZjAyZjBmYmRiYzE3NGY2OyB0aGVuCgoKICA6CgoK
CgoKCiAgICAgIGdsX2dudWxpYl9lbmFibGVkX2ZjYTk4NTJkYjJhNDNiYjMzZjAyZjBmYmRiYzE3
NGY2PXRydWUKICAgICAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX2E2OTFkYTk5YzFkODNiODMyMzhl
NDVmNDFhNjk2ZjVjCiAgICBmaQogIH0KICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfZnBpZWVlICgp
CiAgewogICAgaWYgISAkZ2xfZ251bGliX2VuYWJsZWRfZnBpZWVlOyB0aGVuCiAgICAgIGdsX2du
dWxpYl9lbmFibGVkX2ZwaWVlZT10cnVlCiAgICBmaQogIH0KICBmdW5jX2dsX2dudWxpYl9tNGNv
ZGVfZnB1Y3cgKCkKICB7CiAgICBpZiAhICRnbF9nbnVsaWJfZW5hYmxlZF9mcHVjdzsgdGhlbgog
ICAgICBnbF9nbnVsaWJfZW5hYmxlZF9mcHVjdz10cnVlCiAgICBmaQogIH0KICBmdW5jX2dsX2du
dWxpYl9tNGNvZGVfZTFjNmExMjgxY2UyY2M1OWM3MTY4OTQ1NTBiY2IyYjUgKCkKICB7CiAgICBp
ZiAhICRnbF9nbnVsaWJfZW5hYmxlZF9lMWM2YTEyODFjZTJjYzU5YzcxNjg5NDU1MGJjYjJiNTsg
dGhlbgoKCgogIGlmIHRlc3QgJGdsX2N2X2Z1bmNfZnJleHBfbm9fbGlibSA9IHllczsgdGhlbgoK
CgogIDoKCgoKCgogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl
Y2tpbmcgd2hldGhlciBmcmV4cCB3b3JrcyIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIHdoZXRo
ZXIgZnJleHAgd29ya3MuLi4gIiA+JjY7IH0KaWYgJHtnbF9jdl9mdW5jX2ZyZXhwX3dvcmtzKzp9
IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCgogICAgICBp
ZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CiAgY2FzZSAiJGhvc3Rfb3Mi
IGluCiAgICAgICAgICAgbmV0YnNkKiB8IGlyaXgqIHwgbWluZ3cqKSBnbF9jdl9mdW5jX2ZyZXhw
X3dvcmtzPSJndWVzc2luZyBubyI7OwogICAgICAgICAgICopICAgICAgICAgICAgICAgICAgICAg
ICAgZ2xfY3ZfZnVuY19mcmV4cF93b3Jrcz0iZ3Vlc3NpbmcgeWVzIjs7CiAgICAgICAgIGVzYWMK
CmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVu
ZCBjb25mZGVmcy5oLiAgKi8KCiNpbmNsdWRlIDxmbG9hdC5oPgojaW5jbHVkZSA8bWF0aC5oPgoj
aW5jbHVkZSA8c3RyaW5nLmg+CiNpZiBIQVZFX0RFQ0xfQUxBUk0KIyBpbmNsdWRlIDxzaWduYWwu
aD4KIyBpbmNsdWRlIDx1bmlzdGQuaD4KI2VuZGlmCi8qIEhQIGNjIG9uIEhQLVVYIDEwLjIwIGhh
cyBhIGJ1ZyB3aXRoIHRoZSBjb25zdGFudCBleHByZXNzaW9uIC0wLjAuCiAgIElDQyAxMC4wIGhh
cyBhIGJ1ZyB3aGVuIG9wdGltaXppbmcgdGhlIGV4cHJlc3Npb24gLXplcm8uCiAgIFRoZSBleHBy
ZXNzaW9uIC1EQkxfTUlOICogREJMX01JTiBkb2VzIG5vdCB3b3JrIHdoZW4gY3Jvc3MtY29tcGls
aW5nCiAgIHRvIFBvd2VyUEMgb24gTWFjIE9TIFggMTAuNS4gICovCiNpZiBkZWZpbmVkIF9faHB1
eCB8fCBkZWZpbmVkIF9fc2dpIHx8IGRlZmluZWQgX19JQ0MKc3RhdGljIGRvdWJsZQpjb21wdXRl
X21pbnVzX3plcm8gKHZvaWQpCnsKICByZXR1cm4gLURCTF9NSU4gKiBEQkxfTUlOOwp9CiMgZGVm
aW5lIG1pbnVzX3plcm8gY29tcHV0ZV9taW51c196ZXJvICgpCiNlbHNlCmRvdWJsZSBtaW51c196
ZXJvID0gLTAuMDsKI2VuZGlmCmludCBtYWluKCkKewogIGludCByZXN1bHQgPSAwOwogIGludCBp
OwogIHZvbGF0aWxlIGRvdWJsZSB4OwogIGRvdWJsZSB6ZXJvID0gMC4wOwojaWYgSEFWRV9ERUNM
X0FMQVJNCiAgLyogTmVYVHN0ZXAgMy4zIGZyZXhwKCkgcnVucyBpbnRvIGFuIGVuZGxlc3MgbG9v
cCB3aGVuIGNhbGxlZCBvbiBhbiBpbmZpbml0ZQogICAgIG51bWJlci4gIExldCB0aGUgdGVzdCBm
YWlsIGluIHRoaXMgY2FzZS4gICovCiAgc2lnbmFsIChTSUdBTFJNLCBTSUdfREZMKTsKICBhbGFy
bSAoNSk7CiNlbmRpZgogIC8qIFRlc3Qgb24gZGVub3JtYWxpemVkIG51bWJlcnMuICAqLwogIGZv
ciAoaSA9IDEsIHggPSAxLjA7IGkgPj0gREJMX01JTl9FWFA7IGktLSwgeCAqPSAwLjUpCiAgICA7
CiAgaWYgKHggPiAwLjApCiAgICB7CiAgICAgIGludCBleHA7CiAgICAgIGRvdWJsZSB5ID0gZnJl
eHAgKHgsICZleHApOwogICAgICAvKiBPbiBtYWNoaW5lcyB3aXRoIElFRUU3NTQgYXJpdGhtZXRp
YzogeCA9IDEuMTEyNTRlLTMwOCwgZXhwID0gLTEwMjIuCiAgICAgICAgIE9uIE5ldEJTRDogeSA9
IDAuNzUuIENvcnJlY3Q6IHkgPSAwLjUuICAqLwogICAgICBpZiAoeSAhPSAwLjUpCiAgICAgICAg
cmVzdWx0IHw9IDE7CiAgICB9CiAgLyogVGVzdCBvbiBpbmZpbml0ZSBudW1iZXJzLiAgKi8KICB4
ID0gMS4wIC8gemVybzsKICB7CiAgICBpbnQgZXhwOwogICAgZG91YmxlIHkgPSBmcmV4cCAoeCwg
JmV4cCk7CiAgICBpZiAoeSAhPSB4KQogICAgICByZXN1bHQgfD0gMjsKICB9CiAgLyogVGVzdCBv
biBuZWdhdGl2ZSB6ZXJvLiAgKi8KICB4ID0gbWludXNfemVybzsKICB7CiAgICBpbnQgZXhwOwog
ICAgZG91YmxlIHkgPSBmcmV4cCAoeCwgJmV4cCk7CiAgICBpZiAobWVtY21wICgmeSwgJngsIHNp
emVvZiB4KSkKICAgICAgcmVzdWx0IHw9IDQ7CiAgfQogIHJldHVybiByZXN1bHQ7Cn0KX0FDRU9G
CmlmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgogIGdsX2N2X2Z1bmNfZnJleHBf
d29ya3M9eWVzCmVsc2UKICBnbF9jdl9mdW5jX2ZyZXhwX3dvcmtzPW5vCmZpCnJtIC1mIGNvcmUg
Ki5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0
IFwKICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dApm
aQoKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAk
Z2xfY3ZfZnVuY19mcmV4cF93b3JrcyIgPiY1CiRhc19lY2hvICIkZ2xfY3ZfZnVuY19mcmV4cF93
b3JrcyIgPiY2OyB9CgogICAgY2FzZSAiJGdsX2N2X2Z1bmNfZnJleHBfd29ya3MiIGluCiAgICAg
ICp5ZXMpIGdsX2Z1bmNfZnJleHBfbm9fbGlibT15ZXMgOzsKICAgICAgKikgICAgZ2xfZnVuY19m
cmV4cF9ub19saWJtPW5vOyBSRVBMQUNFX0ZSRVhQPTEgOzsKICAgIGVzYWMKICBlbHNlCiAgICBn
bF9mdW5jX2ZyZXhwX25vX2xpYm09bm8KICAgICAgICBSRVBMQUNFX0ZSRVhQPTEKICBmaQogIGlm
IHRlc3QgJGdsX2Z1bmNfZnJleHBfbm9fbGlibSA9IHllczsgdGhlbgoKJGFzX2VjaG8gIiNkZWZp
bmUgSEFWRV9GUkVYUF9JTl9MSUJDIDEiID4+Y29uZmRlZnMuaAoKICBmaQoKICAgICAgaWYgdGVz
dCAkZ2xfZnVuY19mcmV4cF9ub19saWJtICE9IHllczsgdGhlbgoKCgoKCgoKCiAgZ2xfTElCT0JK
Uz0iJGdsX0xJQk9CSlMgZnJleHAuJGFjX29iamV4dCIKCiAgICAgIGZpCgoKCgoKICAgICAgICAg
IEdOVUxJQl9GUkVYUD0xCgoKCgoKJGFzX2VjaG8gIiNkZWZpbmUgR05VTElCX1RFU1RfRlJFWFAg
MSIgPj5jb25mZGVmcy5oCgoKCiAgICAgIGdsX2dudWxpYl9lbmFibGVkX2UxYzZhMTI4MWNlMmNj
NTljNzE2ODk0NTUwYmNiMmI1PXRydWUKICAgICAgaWYgdGVzdCAkZ2xfZnVuY19mcmV4cF9ub19s
aWJtICE9IHllczsgdGhlbgogICAgICAgIGZ1bmNfZ2xfZ251bGliX200Y29kZV9iMWRmNzExN2I0
NzlkMmRhNTlkNzZkZWJhNDY4ZWUyMQogICAgICBmaQogICAgICBmdW5jX2dsX2dudWxpYl9tNGNv
ZGVfbWF0aAogICAgZmkKICB9CiAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX2UwY2E4MTkxMmYyMzIx
NGU0NGY1NzAwOTIyZGIzNGJlICgpCiAgewogICAgaWYgISAkZ2xfZ251bGliX2VuYWJsZWRfZTBj
YTgxOTEyZjIzMjE0ZTQ0ZjU3MDA5MjJkYjM0YmU7IHRoZW4KCgoKICAgICAgYWNfZm5fY19jaGVj
a19kZWNsICIkTElORU5PIiAiZnJleHBsIiAiYWNfY3ZfaGF2ZV9kZWNsX2ZyZXhwbCIgIiNpbmNs
dWRlIDxtYXRoLmg+CiIKaWYgdGVzdCAieCRhY19jdl9oYXZlX2RlY2xfZnJleHBsIiA9IHh5ZXM7
IHRoZW4gOgoKZWxzZQogIEhBVkVfREVDTF9GUkVYUEw9MApmaQoKICBpZiB0ZXN0ICRIQVZFX0RF
Q0xfRlJFWFBMID0gMTsgdGhlbgoKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ
TkVOT306IGNoZWNraW5nIHdoZXRoZXIgZnJleHBsKCkgY2FuIGJlIHVzZWQgd2l0aG91dCBsaW5r
aW5nIHdpdGggbGlibSIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgZnJleHBsKCkg
Y2FuIGJlIHVzZWQgd2l0aG91dCBsaW5raW5nIHdpdGggbGlibS4uLiAiID4mNjsgfQppZiAke2ds
X2N2X2Z1bmNfZnJleHBsX25vX2xpYm0rOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihj
YWNoZWQpICIgPiY2CmVsc2UKCiAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0
ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVkZSA8bWF0aC5oPgogICAg
ICAgICAgICAgbG9uZyBkb3VibGUgeDsKaW50Cm1haW4gKCkKewppbnQgZTsgcmV0dXJuIGZyZXhw
bCAoeCwgJmUpID4gMDsKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2xp
bmsgIiRMSU5FTk8iOyB0aGVuIDoKICBnbF9jdl9mdW5jX2ZyZXhwbF9ub19saWJtPXllcwplbHNl
CiAgZ2xfY3ZfZnVuY19mcmV4cGxfbm9fbGlibT1ubwpmaQpybSAtZiBjb3JlIGNvbmZ0ZXN0LmVy
ciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4k
YWNfZXh0CgpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs
dDogJGdsX2N2X2Z1bmNfZnJleHBsX25vX2xpYm0iID4mNQokYXNfZWNobyAiJGdsX2N2X2Z1bmNf
ZnJleHBsX25vX2xpYm0iID4mNjsgfQoKICAgIGlmIHRlc3QgJGdsX2N2X2Z1bmNfZnJleHBsX25v
X2xpYm0gPSB5ZXM7IHRoZW4KCgogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k
TElORU5PfTogY2hlY2tpbmcgd2hldGhlciBmcmV4cGwgd29ya3MiID4mNQokYXNfZWNob19uICJj
aGVja2luZyB3aGV0aGVyIGZyZXhwbCB3b3Jrcy4uLiAiID4mNjsgfQppZiAke2dsX2N2X2Z1bmNf
ZnJleHBsX3dvcmtzKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4m
NgplbHNlCgogICAgICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6Cgog
ICAgICAgICBjYXNlICIkaG9zdF9vcyIgaW4KICAgICAgICAgICBhaXggfCBhaXhbMy02XSogfCBi
ZW9zKiB8IGRhcndpbiogfCBpcml4KiB8IG1pbmd3KiB8IHB3KikKICAgICAgICAgICAgICBnbF9j
dl9mdW5jX2ZyZXhwbF93b3Jrcz0iZ3Vlc3Npbmcgbm8iOzsKICAgICAgICAgICAqKSBnbF9jdl9m
dW5jX2ZyZXhwbF93b3Jrcz0iZ3Vlc3NpbmcgeWVzIjs7CiAgICAgICAgIGVzYWMKCmVsc2UKICBj
YXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVm
cy5oLiAgKi8KCiNpbmNsdWRlIDxmbG9hdC5oPgojaW5jbHVkZSA8bWF0aC5oPgovKiBPdmVycmlk
ZSB0aGUgdmFsdWVzIG9mIDxmbG9hdC5oPiwgbGlrZSBkb25lIGluIGZsb2F0LmluLmguICAqLwoj
aWYgZGVmaW5lZCBfX2kzODZfXyAmJiAoZGVmaW5lZCBfX0JFT1NfXyB8fCBkZWZpbmVkIF9fT3Bl
bkJTRF9fKQojIHVuZGVmIExEQkxfTUlOX0VYUAojIGRlZmluZSBMREJMX01JTl9FWFAgICAgKC0x
NjM4MSkKI2VuZGlmCiNpZiBkZWZpbmVkIF9faTM4Nl9fICYmIGRlZmluZWQgX19GcmVlQlNEX18K
IyB1bmRlZiBMREJMX01JTl9FWFAKIyBkZWZpbmUgTERCTF9NSU5fRVhQICAgICgtMTYzODEpCiNl
bmRpZgojaWYgKGRlZmluZWQgX0FSQ0hfUFBDIHx8IGRlZmluZWQgX1BPV0VSKSAmJiBkZWZpbmVk
IF9BSVggJiYgKExEQkxfTUFOVF9ESUcgPT0gMTA2KSAmJiBkZWZpbmVkIF9fR05VQ19fCiMgdW5k
ZWYgTERCTF9NSU5fRVhQCiMgZGVmaW5lIExEQkxfTUlOX0VYUCBEQkxfTUlOX0VYUAojZW5kaWYK
I2lmIGRlZmluZWQgX19zZ2kgJiYgKExEQkxfTUFOVF9ESUcgPj0gMTA2KQojIGlmIGRlZmluZWQg
X19HTlVDX18KIyAgdW5kZWYgTERCTF9NSU5fRVhQCiMgIGRlZmluZSBMREJMX01JTl9FWFAgREJM
X01JTl9FWFAKIyBlbmRpZgojZW5kaWYKZXh0ZXJuCiNpZmRlZiBfX2NwbHVzcGx1cwoiQyIKI2Vu
ZGlmCmxvbmcgZG91YmxlIGZyZXhwbCAobG9uZyBkb3VibGUsIGludCAqKTsKaW50IG1haW4oKQp7
CiAgaW50IHJlc3VsdCA9IDA7CiAgdm9sYXRpbGUgbG9uZyBkb3VibGUgeDsKICAvKiBUZXN0IG9u
IGZpbml0ZSBudW1iZXJzIHRoYXQgZmFpbHMgb24gQUlYIDUuMS4gICovCiAgeCA9IDE2LjBMOwog
IHsKICAgIGludCBleHAgPSAtOTk5OTsKICAgIGZyZXhwbCAoeCwgJmV4cCk7CiAgICBpZiAoZXhw
ICE9IDUpCiAgICAgIHJlc3VsdCB8PSAxOwogIH0KICAvKiBUZXN0IG9uIGZpbml0ZSBudW1iZXJz
IHRoYXQgZmFpbHMgb24gTWFjIE9TIFggMTAuNCwgYmVjYXVzZSBpdHMgZnJleHBsCiAgICAgZnVu
Y3Rpb24gcmV0dXJucyBhbiBpbnZhbGlkIChpbmNvcnJlY3RseSBub3JtYWxpemVkKSB2YWx1ZTog
aXQgcmV0dXJucwogICAgICAgICAgICAgICB5ID0geyAweDNmZTAyOGY1LCAweGMyOGY1YzI4LCAw
eDNjOWViODUxLCAweGViODUxZWI4IH0KICAgICBidXQgdGhlIGNvcnJlY3QgcmVzdWx0IGlzCiAg
ICAgICAgICAwLjUwNUwgPSB7IDB4M2ZlMDI4ZjUsIDB4YzI4ZjVjMjksIDB4YmM1NDdhZTEsIDB4
NDdhZTE0ODAgfSAgKi8KICB4ID0gMS4wMUw7CiAgewogICAgaW50IGV4cCA9IC05OTk5OwogICAg
bG9uZyBkb3VibGUgeSA9IGZyZXhwbCAoeCwgJmV4cCk7CiAgICBpZiAoIShleHAgPT0gMSAmJiB5
ID09IDAuNTA1TCkpCiAgICAgIHJlc3VsdCB8PSAyOwogIH0KICAvKiBUZXN0IG9uIGxhcmdlIGZp
bml0ZSBudW1iZXJzLiAgVGhpcyBmYWlscyBvbiBCZU9TIGF0IGkgPSAxNjMyMiwgd2hpbGUKICAg
ICBMREJMX01BWF9FWFAgPSAxNjM4NC4KICAgICBJbiB0aGUgbG9vcCBlbmQgdGVzdCwgd2UgdGVz
dCB4IGFnYWluc3QgSW5maW5pdHksIHJhdGhlciB0aGFuIGNvbXBhcmluZwogICAgIGkgd2l0aCBM
REJMX01BWF9FWFAsIGJlY2F1c2UgQmVPUyA8ZmxvYXQuaD4gaGFzIGEgd3JvbmcgTERCTF9NQVhf
RVhQLiAgKi8KICB7CiAgICBpbnQgaTsKICAgIGZvciAoaSA9IDEsIHggPSAxLjBMOyB4ICE9IHgg
KyB4OyBpKyssIHggKj0gMi4wTCkKICAgICAgewogICAgICAgIGludCBleHAgPSAtOTk5OTsKICAg
ICAgICBmcmV4cGwgKHgsICZleHApOwogICAgICAgIGlmIChleHAgIT0gaSkKICAgICAgICAgIHsK
ICAgICAgICAgICAgcmVzdWx0IHw9IDQ7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQog
ICAgICB9CiAgfQogIC8qIFRlc3Qgb24gZGVub3JtYWxpemVkIG51bWJlcnMuICAqLwogIHsKICAg
IGludCBpOwogICAgZm9yIChpID0gMSwgeCA9IDEuMEw7IGkgPj0gTERCTF9NSU5fRVhQOyBpLS0s
IHggKj0gMC41TCkKICAgICAgOwogICAgaWYgKHggPiAwLjBMKQogICAgICB7CiAgICAgICAgaW50
IGV4cDsKICAgICAgICBsb25nIGRvdWJsZSB5ID0gZnJleHBsICh4LCAmZXhwKTsKICAgICAgICAv
KiBPbiBtYWNoaW5lcyB3aXRoIElFRUU4NTQgYXJpdGhtZXRpYzogeCA9IDEuNjgxMDVlLTQ5MzIs
CiAgICAgICAgICAgZXhwID0gLTE2MzgyLCB5ID0gMC41LiAgT24gTWFjIE9TIFggMTAuNTogZXhw
ID0gLTE2Mzg0LCB5ID0gMC41LiAgKi8KICAgICAgICBpZiAoZXhwICE9IExEQkxfTUlOX0VYUCAt
IDEpCiAgICAgICAgICByZXN1bHQgfD0gODsKICAgICAgfQogIH0KICAvKiBUZXN0IG9uIGluZmlu
aXRlIG51bWJlcnMuICAqLwogIHggPSAxLjBMIC8gMC4wTDsKICB7CiAgICBpbnQgZXhwOwogICAg
bG9uZyBkb3VibGUgeSA9IGZyZXhwbCAoeCwgJmV4cCk7CiAgICBpZiAoeSAhPSB4KQogICAgICBy
ZXN1bHQgfD0gMTY7CiAgfQogIHJldHVybiByZXN1bHQ7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5
X3J1biAiJExJTkVOTyI7IHRoZW4gOgogIGdsX2N2X2Z1bmNfZnJleHBsX3dvcmtzPXllcwplbHNl
CiAgZ2xfY3ZfZnVuY19mcmV4cGxfd29ya3M9bm8KZmkKcm0gLWYgY29yZSAqLmNvcmUgY29yZS5j
b25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAogIGNvbmZ0ZXN0
LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CmZpCgoKZmkKeyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbF9jdl9mdW5jX2Zy
ZXhwbF93b3JrcyIgPiY1CiRhc19lY2hvICIkZ2xfY3ZfZnVuY19mcmV4cGxfd29ya3MiID4mNjsg
fQoKICAgICAgY2FzZSAiJGdsX2N2X2Z1bmNfZnJleHBsX3dvcmtzIiBpbgogICAgICAgICp5ZXMp
IGdsX2Z1bmNfZnJleHBsX25vX2xpYm09eWVzIDs7CiAgICAgICAgKikgICAgZ2xfZnVuY19mcmV4
cGxfbm9fbGlibT1ubzsgUkVQTEFDRV9GUkVYUEw9MSA7OwogICAgICBlc2FjCiAgICBlbHNlCiAg
ICAgIGdsX2Z1bmNfZnJleHBsX25vX2xpYm09bm8KICAgICAgICAgICAgUkVQTEFDRV9GUkVYUEw9
MQogICAgZmkKICAgIGlmIHRlc3QgJGdsX2Z1bmNfZnJleHBsX25vX2xpYm0gPSB5ZXM7IHRoZW4K
CiRhc19lY2hvICIjZGVmaW5lIEhBVkVfRlJFWFBMX0lOX0xJQkMgMSIgPj5jb25mZGVmcy5oCgog
ICAgZmkKICBmaQoKICAgICAgaWYgdGVzdCAkSEFWRV9ERUNMX0ZSRVhQTCA9IDAgfHwgdGVzdCAk
Z2xfZnVuY19mcmV4cGxfbm9fbGlibSA9IG5vOyB0aGVuCgoKCgoKCgoKICBnbF9MSUJPQkpTPSIk
Z2xfTElCT0JKUyBmcmV4cGwuJGFjX29iamV4dCIKCiAgICAgIGZpCgoKCgoKICAgICAgICAgIEdO
VUxJQl9GUkVYUEw9MQoKCgoKCiRhc19lY2hvICIjZGVmaW5lIEdOVUxJQl9URVNUX0ZSRVhQTCAx
IiA+PmNvbmZkZWZzLmgKCgoKICAgICAgZ2xfZ251bGliX2VuYWJsZWRfZTBjYTgxOTEyZjIzMjE0
ZTQ0ZjU3MDA5MjJkYjM0YmU9dHJ1ZQogICAgICBpZiB7IHRlc3QgJEhBVkVfREVDTF9GUkVYUEwg
PSAwIHx8IHRlc3QgJGdsX2Z1bmNfZnJleHBsX25vX2xpYm0gPSBubzsgfSAmJiB0ZXN0ICRIQVZF
X1NBTUVfTE9OR19ET1VCTEVfQVNfRE9VQkxFID0gMDsgdGhlbgogICAgICAgIGZ1bmNfZ2xfZ251
bGliX200Y29kZV9mcHVjdwogICAgICBmaQogICAgICBpZiB7IHRlc3QgJEhBVkVfREVDTF9GUkVY
UEwgPSAwIHx8IHRlc3QgJGdsX2Z1bmNfZnJleHBsX25vX2xpYm0gPSBubzsgfSAmJiB0ZXN0ICRI
QVZFX1NBTUVfTE9OR19ET1VCTEVfQVNfRE9VQkxFID0gMTsgdGhlbgogICAgICAgIGZ1bmNfZ2xf
Z251bGliX200Y29kZV9lMWM2YTEyODFjZTJjYzU5YzcxNjg5NDU1MGJjYjJiNQogICAgICBmaQog
ICAgICBpZiB7IHRlc3QgJEhBVkVfREVDTF9GUkVYUEwgPSAwIHx8IHRlc3QgJGdsX2Z1bmNfZnJl
eHBsX25vX2xpYm0gPSBubzsgfSAmJiB0ZXN0ICRIQVZFX1NBTUVfTE9OR19ET1VCTEVfQVNfRE9V
QkxFID0gMDsgdGhlbgogICAgICAgIGZ1bmNfZ2xfZ251bGliX200Y29kZV9kYmRmMjI4NjhhNTM2
N2YyOGJmMThlMDAxM2FjNmY4ZgogICAgICBmaQogICAgICBmdW5jX2dsX2dudWxpYl9tNGNvZGVf
bWF0aAogICAgZmkKICB9CiAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX2ZzdGF0YXQgKCkKICB7CiAg
ICBpZiAhICRnbF9nbnVsaWJfZW5hYmxlZF9mc3RhdGF0OyB0aGVuCgoKCgoKICA6CgoKCgoKCiAg
aWYgdGVzdCAkYWNfY3ZfZnVuY19mc3RhdGF0ID0gbm87IHRoZW4KICAgIEhBVkVfRlNUQVRBVD0w
CiAgZWxzZQogICAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IGNoZWNraW5nIHdoZXRoZXIgZnN0YXRhdCAoLi4uLCAwKSB3b3JrcyIgPiY1CiRhc19lY2hv
X24gImNoZWNraW5nIHdoZXRoZXIgZnN0YXRhdCAoLi4uLCAwKSB3b3Jrcy4uLiAiID4mNjsgfQpp
ZiAke2dsX2N2X2Z1bmNfZnN0YXRhdF96ZXJvX2ZsYWcrOn0gZmFsc2U7IHRoZW4gOgogICRhc19l
Y2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9
IHllczsgdGhlbiA6CiAgY2FzZSAiJGhvc3Rfb3MiIGluCiAgICAgICAgICAgIGFpeCopIGdsX2N2
X2Z1bmNfZnN0YXRhdF96ZXJvX2ZsYWc9Imd1ZXNzaW5nIG5vIjs7CiAgICAgICAgICAgICopICAg
IGdsX2N2X2Z1bmNfZnN0YXRhdF96ZXJvX2ZsYWc9Imd1ZXNzaW5nIHllcyI7OwogICAgICAgICAg
ZXNhYwoKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQK
LyogZW5kIGNvbmZkZWZzLmguICAqLwoKICAgICAgICAgICAgICAjaW5jbHVkZSA8ZmNudGwuaD4K
ICAgICAgICAgICAgICAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICAgICAgICAgICAgICBpbnQKICAg
ICAgICAgICAgICBtYWluICh2b2lkKQogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHN0
cnVjdCBzdGF0IGE7CiAgICAgICAgICAgICAgICByZXR1cm4gZnN0YXRhdCAoQVRfRkRDV0QsICIu
IiwgJmEsIDApICE9IDA7CiAgICAgICAgICAgICAgfQoKX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X3J1
biAiJExJTkVOTyI7IHRoZW4gOgogIGdsX2N2X2Z1bmNfZnN0YXRhdF96ZXJvX2ZsYWc9eWVzCmVs
c2UKICBnbF9jdl9mdW5jX2ZzdGF0YXRfemVyb19mbGFnPW5vCmZpCnJtIC1mIGNvcmUgKi5jb3Jl
IGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKICBj
b25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dApmaQoKCmZp
CnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3Zf
ZnVuY19mc3RhdGF0X3plcm9fZmxhZyIgPiY1CiRhc19lY2hvICIkZ2xfY3ZfZnVuY19mc3RhdGF0
X3plcm9fZmxhZyIgPiY2OyB9CgogICAgY2FzZSAkZ2xfY3ZfZnVuY19mc3RhdGF0X3plcm9fZmxh
ZyskZ2xfY3ZfZnVuY19sc3RhdF9kZXJlZmVyZW5jZXNfc2xhc2hlZF9zeW1saW5rIGluCiAgICAq
eWVzKyp5ZXMpIDs7CiAgICAqKSBSRVBMQUNFX0ZTVEFUQVQ9MQogICAgICAgY2FzZSAkZ2xfY3Zf
ZnVuY19mc3RhdGF0X3plcm9fZmxhZyBpbgogICAgICAgKnllcykKCiRhc19lY2hvICIjZGVmaW5l
IEhBVkVfV09SS0lOR19GU1RBVEFUX1pFUk9fRkxBRyAxIiA+PmNvbmZkZWZzLmgKCiAgICAgICAg
IDs7CiAgICAgICBlc2FjCiAgICAgICA7OwogICAgZXNhYwogIGZpCgogICAgICBpZiB0ZXN0ICRI
QVZFX0ZTVEFUQVQgPSAwIHx8IHRlc3QgJFJFUExBQ0VfRlNUQVRBVCA9IDE7IHRoZW4KCgoKCgoK
CgogIGdsX0xJQk9CSlM9IiRnbF9MSUJPQkpTIGZzdGF0YXQuJGFjX29iamV4dCIKCiAgICAgIGZp
CgoKCgoKICAgICAgICAgIEdOVUxJQl9GU1RBVEFUPTEKCgoKCgokYXNfZWNobyAiI2RlZmluZSBH
TlVMSUJfVEVTVF9GU1RBVEFUIDEiID4+Y29uZmRlZnMuaAoKCgogICAgICBnbF9nbnVsaWJfZW5h
YmxlZF9mc3RhdGF0PXRydWUKICAgICAgaWYgdGVzdCAkSEFWRV9GU1RBVEFUID0gMCB8fCB0ZXN0
ICRSRVBMQUNFX0ZTVEFUQVQgPSAxOyB0aGVuCiAgICAgICAgZnVuY19nbF9nbnVsaWJfbTRjb2Rl
XzI2MDk0MWMwZTVkYzY3ZWM5ZTg3ZDFmYjMyMWMzMDBiCiAgICAgIGZpCiAgICAgIGlmIHRlc3Qg
JEhBVkVfRlNUQVRBVCA9IDAgfHwgdGVzdCAkUkVQTEFDRV9GU1RBVEFUID0gMTsgdGhlbgogICAg
ICAgIGZ1bmNfZ2xfZ251bGliX200Y29kZV9kb3NuYW1lCiAgICAgIGZpCiAgICAgIGlmIHRlc3Qg
JEhBVkVfRlNUQVRBVCA9IDAgfHwgdGVzdCAkUkVQTEFDRV9GU1RBVEFUID0gMTsgdGhlbgogICAg
ICAgIGZ1bmNfZ2xfZ251bGliX200Y29kZV9mY2hkaXIKICAgICAgZmkKICAgICAgaWYgdGVzdCAk
SEFWRV9GU1RBVEFUID0gMCB8fCB0ZXN0ICRSRVBMQUNFX0ZTVEFUQVQgPSAxOyB0aGVuCiAgICAg
ICAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX2xzdGF0CiAgICAgIGZpCiAgICAgIGlmIHRlc3QgJEhB
VkVfRlNUQVRBVCA9IDAgfHwgdGVzdCAkUkVQTEFDRV9GU1RBVEFUID0gMTsgdGhlbgogICAgICAg
IGZ1bmNfZ2xfZ251bGliX200Y29kZV8xODQwMTI5ZDQ5MGYzYTAwYzhhMDk4MzE2ZDBmYTM0NQog
ICAgICBmaQogICAgICBpZiB0ZXN0ICRIQVZFX0ZTVEFUQVQgPSAwIHx8IHRlc3QgJFJFUExBQ0Vf
RlNUQVRBVCA9IDE7IHRoZW4KICAgICAgICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfMDNlMGFhYWQ0
Y2I4OWNhNzU3NjUzYmQzNjdhNmNjYjcKICAgICAgZmkKICAgICAgaWYgdGVzdCAkSEFWRV9GU1RB
VEFUID0gMCB8fCB0ZXN0ICRSRVBMQUNFX0ZTVEFUQVQgPSAxOyB0aGVuCiAgICAgICAgZnVuY19n
bF9nbnVsaWJfbTRjb2RlX2Q0ODUwNTMyNjg4YmExNmQ2ODVmMDM2MDc2NjExZjIxCiAgICAgIGZp
CiAgICBmaQogIH0KICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfM2QwOTRlZjU0MmJmZGQyMzhhNTE5
NGUxNzJiZmU1ZjYgKCkKICB7CiAgICBpZiAhICRnbF9nbnVsaWJfZW5hYmxlZF8zZDA5NGVmNTQy
YmZkZDIzOGE1MTk0ZTE3MmJmZTVmNjsgdGhlbgoKCgoKCiAgY2FzZSAkZ2xfY3ZfZnVuY19nZXRj
d2RfbnVsbCwkZ2xfY3ZfZnVuY19nZXRjd2RfcG9zaXhfc2lnbmF0dXJlIGluCiAgKnllcyx5ZXMp
IDs7CiAgKikKICAgICAgICBSRVBMQUNFX0dFVENXRD0xCiAgICA7OwogIGVzYWMKCiAgICAgIGlm
IHRlc3QgJFJFUExBQ0VfR0VUQ1dEID0gMTsgdGhlbgoKCgoKCgoKCiAgZ2xfTElCT0JKUz0iJGds
X0xJQk9CSlMgZ2V0Y3dkLWxncGwuJGFjX29iamV4dCIKCiAgICAgIGZpCgoKCgoKICAgICAgICAg
IEdOVUxJQl9HRVRDV0Q9MQoKCgoKCiRhc19lY2hvICIjZGVmaW5lIEdOVUxJQl9URVNUX0dFVENX
RCAxIiA+PmNvbmZkZWZzLmgKCgoKICAgICAgZ2xfZ251bGliX2VuYWJsZWRfM2QwOTRlZjU0MmJm
ZGQyMzhhNTE5NGUxNzJiZmU1ZjY9dHJ1ZQogICAgZmkKICB9CiAgZnVuY19nbF9nbnVsaWJfbTRj
b2RlX2dldGR0YWJsZXNpemUgKCkKICB7CiAgICBpZiAhICRnbF9nbnVsaWJfZW5hYmxlZF9nZXRk
dGFibGVzaXplOyB0aGVuCgoKCiAgOgoKCgoKCiAgaWYgdGVzdCAkYWNfY3ZfZnVuY19nZXRkdGFi
bGVzaXplICE9IHllczsgdGhlbgogICAgSEFWRV9HRVREVEFCTEVTSVpFPTAKICBmaQoKICAgICAg
aWYgdGVzdCAkSEFWRV9HRVREVEFCTEVTSVpFID0gMDsgdGhlbgoKCgoKCgoKCiAgZ2xfTElCT0JK
Uz0iJGdsX0xJQk9CSlMgZ2V0ZHRhYmxlc2l6ZS4kYWNfb2JqZXh0IgoKICAgICAgICA6CiAgICAg
IGZpCgoKCgoKICAgICAgICAgIEdOVUxJQl9HRVREVEFCTEVTSVpFPTEKCgoKCgokYXNfZWNobyAi
I2RlZmluZSBHTlVMSUJfVEVTVF9HRVREVEFCTEVTSVpFIDEiID4+Y29uZmRlZnMuaAoKCgogICAg
ICBnbF9nbnVsaWJfZW5hYmxlZF9nZXRkdGFibGVzaXplPXRydWUKICAgICAgaWYgdGVzdCAkSEFW
RV9HRVREVEFCTEVTSVpFID0gMDsgdGhlbgogICAgICAgIGZ1bmNfZ2xfZ251bGliX200Y29kZV9m
NjkxZjA3NmY2NTA5NjRjOWY1NTk4YzNlZTQ4NzYxNgogICAgICBmaQogICAgZmkKICB9CiAgZnVu
Y19nbF9nbnVsaWJfbTRjb2RlX2hhdmVsaWIgKCkKICB7CiAgICBpZiAhICRnbF9nbnVsaWJfZW5h
YmxlZF9oYXZlbGliOyB0aGVuCiAgICAgIGdsX2dudWxpYl9lbmFibGVkX2hhdmVsaWI9dHJ1ZQog
ICAgZmkKICB9CiAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX2ludHByb3BzICgpCiAgewogICAgaWYg
ISAkZ2xfZ251bGliX2VuYWJsZWRfaW50cHJvcHM7IHRoZW4KICAgICAgZ2xfZ251bGliX2VuYWJs
ZWRfaW50cHJvcHM9dHJ1ZQogICAgZmkKICB9CiAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX2IxZGY3
MTE3YjQ3OWQyZGE1OWQ3NmRlYmE0NjhlZTIxICgpCiAgewogICAgaWYgISAkZ2xfZ251bGliX2Vu
YWJsZWRfYjFkZjcxMTdiNDc5ZDJkYTU5ZDc2ZGViYTQ2OGVlMjE7IHRoZW4KCgogIHsgJGFzX2Vj
aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBpc25hbihk
b3VibGUpIGNhbiBiZSB1c2VkIHdpdGhvdXQgbGlua2luZyB3aXRoIGxpYm0iID4mNQokYXNfZWNo
b19uICJjaGVja2luZyB3aGV0aGVyIGlzbmFuKGRvdWJsZSkgY2FuIGJlIHVzZWQgd2l0aG91dCBs
aW5raW5nIHdpdGggbGlibS4uLiAiID4mNjsgfQppZiAke2dsX2N2X2Z1bmNfaXNuYW5kX25vX2xp
Ym0rOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKCiAg
ICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNv
bmZkZWZzLmguICAqLwojaW5jbHVkZSA8bWF0aC5oPgogICAgICAgICAgICAgI2lmIF9fR05VQ19f
ID49IDQKICAgICAgICAgICAgICMgdW5kZWYgaXNuYW5kCiAgICAgICAgICAgICAjIGRlZmluZSBp
c25hbmQoeCkgX19idWlsdGluX2lzbmFuICgoZG91YmxlKSh4KSkKICAgICAgICAgICAgICNlbHNl
CiAgICAgICAgICAgICAjIHVuZGVmIGlzbmFuZAogICAgICAgICAgICAgIyBkZWZpbmUgaXNuYW5k
KHgpIGlzbmFuICgoZG91YmxlKSh4KSkKICAgICAgICAgICAgICNlbmRpZgogICAgICAgICAgICAg
ZG91YmxlIHg7CmludAptYWluICgpCnsKcmV0dXJuIGlzbmFuZCAoeCk7CiAgOwogIHJldHVybiAw
Owp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAgZ2xfY3Zf
ZnVuY19pc25hbmRfbm9fbGlibT15ZXMKZWxzZQogIGdsX2N2X2Z1bmNfaXNuYW5kX25vX2xpYm09
bm8KZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCiAgICBj
b25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAoKZmkKeyAkYXNfZWNobyAiJGFzX21l
OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbF9jdl9mdW5jX2lzbmFuZF9ub19saWJt
IiA+JjUKJGFzX2VjaG8gIiRnbF9jdl9mdW5jX2lzbmFuZF9ub19saWJtIiA+JjY7IH0KCiAgZ2xf
ZnVuY19pc25hbmRfbm9fbGlibT0kZ2xfY3ZfZnVuY19pc25hbmRfbm9fbGlibQogIGlmIHRlc3Qg
JGdsX2N2X2Z1bmNfaXNuYW5kX25vX2xpYm0gPSB5ZXM7IHRoZW4KCiRhc19lY2hvICIjZGVmaW5l
IEhBVkVfSVNOQU5EX0lOX0xJQkMgMSIgPj5jb25mZGVmcy5oCgogIGZpCgogICAgICBpZiB0ZXN0
ICRnbF9mdW5jX2lzbmFuZF9ub19saWJtICE9IHllczsgdGhlbgoKCgoKCgoKCiAgZ2xfTElCT0JK
Uz0iJGdsX0xJQk9CSlMgaXNuYW5kLiRhY19vYmpleHQiCgoKCgogICAgICBmaQogICAgICBnbF9n
bnVsaWJfZW5hYmxlZF9iMWRmNzExN2I0NzlkMmRhNTlkNzZkZWJhNDY4ZWUyMT10cnVlCiAgICAg
IGZ1bmNfZ2xfZ251bGliX200Y29kZV9mcGllZWUKICAgIGZpCiAgfQogIGZ1bmNfZ2xfZ251bGli
X200Y29kZV8zZjBlNTkzMDMzZDFmYzJjMTI3NTgxOTYwZjY0MWI2NiAoKQogIHsKICAgIGlmICEg
JGdsX2dudWxpYl9lbmFibGVkXzNmMGU1OTMwMzNkMWZjMmMxMjc1ODE5NjBmNjQxYjY2OyB0aGVu
CgoKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdo
ZXRoZXIgaXNuYW4oZmxvYXQpIGNhbiBiZSB1c2VkIHdpdGhvdXQgbGlua2luZyB3aXRoIGxpYm0i
ID4mNQokYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIGlzbmFuKGZsb2F0KSBjYW4gYmUgdXNl
ZCB3aXRob3V0IGxpbmtpbmcgd2l0aCBsaWJtLi4uICIgPiY2OyB9CmlmICR7Z2xfY3ZfZnVuY19p
c25hbmZfbm9fbGlibSs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+
JjYKZWxzZQoKICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4
dAovKiBlbmQgY29uZmRlZnMuaC4gICovCiNpbmNsdWRlIDxtYXRoLmg+CiAgICAgICAgICAgICAj
aWYgX19HTlVDX18gPj0gNAogICAgICAgICAgICAgIyB1bmRlZiBpc25hbmYKICAgICAgICAgICAg
ICMgZGVmaW5lIGlzbmFuZih4KSBfX2J1aWx0aW5faXNuYW5mICgoZmxvYXQpKHgpKQogICAgICAg
ICAgICAgI2VsaWYgZGVmaW5lZCBpc25hbgogICAgICAgICAgICAgIyB1bmRlZiBpc25hbmYKICAg
ICAgICAgICAgICMgZGVmaW5lIGlzbmFuZih4KSBpc25hbiAoKGZsb2F0KSh4KSkKICAgICAgICAg
ICAgICNlbmRpZgogICAgICAgICAgICAgZmxvYXQgeDsKaW50Cm1haW4gKCkKewpyZXR1cm4gaXNu
YW5mICh4KTsKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRM
SU5FTk8iOyB0aGVuIDoKICBnbF9jdl9mdW5jX2lzbmFuZl9ub19saWJtPXllcwplbHNlCiAgZ2xf
Y3ZfZnVuY19pc25hbmZfbm9fbGlibT1ubwpmaQpybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25m
dGVzdC4kYWNfb2JqZXh0IFwKICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0
CgpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGds
X2N2X2Z1bmNfaXNuYW5mX25vX2xpYm0iID4mNQokYXNfZWNobyAiJGdsX2N2X2Z1bmNfaXNuYW5m
X25vX2xpYm0iID4mNjsgfQoKICBpZiB0ZXN0ICRnbF9jdl9mdW5jX2lzbmFuZl9ub19saWJtID0g
eWVzOyB0aGVuCgoKCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj
aGVja2luZyB3aGV0aGVyIGlzbmFuKGZsb2F0KSB3b3JrcyIgPiY1CiRhc19lY2hvX24gImNoZWNr
aW5nIHdoZXRoZXIgaXNuYW4oZmxvYXQpIHdvcmtzLi4uICIgPiY2OyB9CmlmICR7Z2xfY3ZfZnVu
Y19pc25hbmZfd29ya3MrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIg
PiY2CmVsc2UKCiAgICAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoK
ICBjYXNlICIkaG9zdF9vcyIgaW4KICAgICAgICAgICBpcml4KiB8IHNvbGFyaXMqKSBnbF9jdl9m
dW5jX2lzbmFuZl93b3Jrcz0iZ3Vlc3Npbmcgbm8iOzsKICAgICAgICAgICAqKSAgICAgICAgICAg
ICAgICBnbF9jdl9mdW5jX2lzbmFuZl93b3Jrcz0iZ3Vlc3NpbmcgeWVzIjs7CiAgICAgICAgIGVz
YWMKCmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8q
IGVuZCBjb25mZGVmcy5oLiAgKi8KCiNpbmNsdWRlIDxtYXRoLmg+CiNpZiBfX0dOVUNfXyA+PSA0
CiMgdW5kZWYgaXNuYW5mCiMgZGVmaW5lIGlzbmFuZih4KSBfX2J1aWx0aW5faXNuYW5mICgoZmxv
YXQpKHgpKQojZWxpZiBkZWZpbmVkIGlzbmFuCiMgdW5kZWYgaXNuYW5mCiMgZGVmaW5lIGlzbmFu
Zih4KSBpc25hbiAoKGZsb2F0KSh4KSkKI2VuZGlmCi8qIFRoZSBDb21wYXEgKGV4LURFQykgQyA2
LjQgY29tcGlsZXIgY2hva2VzIG9uIHRoZSBleHByZXNzaW9uIDAuMCAvIDAuMC4gICovCiNpZmRl
ZiBfX0RFQ0MKc3RhdGljIGZsb2F0Ck5hTiAoKQp7CiAgc3RhdGljIGZsb2F0IHplcm8gPSAwLjBm
OwogIHJldHVybiB6ZXJvIC8gemVybzsKfQojZWxzZQojIGRlZmluZSBOYU4oKSAoMC4wZiAvIDAu
MGYpCiNlbmRpZgojZGVmaW5lIE5XT1JEUyBcCiAgKChzaXplb2YgKGZsb2F0KSArIHNpemVvZiAo
dW5zaWduZWQgaW50KSAtIDEpIC8gc2l6ZW9mICh1bnNpZ25lZCBpbnQpKQp0eXBlZGVmIHVuaW9u
IHsgdW5zaWduZWQgaW50IHdvcmRbTldPUkRTXTsgZmxvYXQgdmFsdWU7IH0gbWVtb3J5X2Zsb2F0
OwppbnQgbWFpbigpCnsKICBpbnQgcmVzdWx0ID0gMDsKCiAgaWYgKGlzbmFuZiAoMS4wZiAvIDAu
MGYpKQogICAgcmVzdWx0IHw9IDE7CgogIGlmICghaXNuYW5mIChOYU4gKCkpKQogICAgcmVzdWx0
IHw9IDI7CgojaWYgZGVmaW5lZCBGTFRfRVhQQklUMF9XT1JEICYmIGRlZmluZWQgRkxUX0VYUEJJ
VDBfQklUCiAgLyogVGhlIGlzbmFuZiBmdW5jdGlvbiBzaG91bGQgYmUgaW1tdW5lIGFnYWluc3Qg
Y2hhbmdlcyBpbiB0aGUgc2lnbiBiaXQgYW5kCiAgICAgaW4gdGhlIG1hbnRpc3NhIGJpdHMuICBU
aGUgeG9yIG9wZXJhdGlvbiB0d2lkZGxlcyBhIGJpdCB0aGF0IGNhbiBvbmx5IGJlCiAgICAgYSBz
aWduIGJpdCBvciBhIG1hbnRpc3NhIGJpdC4gICovCiAgaWYgKEZMVF9FWFBCSVQwX1dPUkQgPT0g
MCAmJiBGTFRfRVhQQklUMF9CSVQgPiAwKQogICAgewogICAgICBtZW1vcnlfZmxvYXQgbTsKCiAg
ICAgIG0udmFsdWUgPSBOYU4gKCk7CiAgICAgIC8qIFNldCB0aGUgYml0cyBiZWxvdyB0aGUgZXhw
b25lbnQgdG8gMDExMTEuLi4xMTEuICAqLwogICAgICBtLndvcmRbMF0gJj0gLTFVIDw8IEZMVF9F
WFBCSVQwX0JJVDsKICAgICAgbS53b3JkWzBdIHw9IDFVIDw8IChGTFRfRVhQQklUMF9CSVQgLSAx
KSAtIDE7CiAgICAgIGlmICghaXNuYW5mIChtLnZhbHVlKSkKICAgICAgICByZXN1bHQgfD0gNDsK
ICAgIH0KI2VuZGlmCgogIHJldHVybiByZXN1bHQ7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X3J1
biAiJExJTkVOTyI7IHRoZW4gOgogIGdsX2N2X2Z1bmNfaXNuYW5mX3dvcmtzPXllcwplbHNlCiAg
Z2xfY3ZfZnVuY19pc25hbmZfd29ya3M9bm8KZmkKcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25m
dGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAogIGNvbmZ0ZXN0LiRh
Y19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CmZpCgoKZmkKeyAkYXNfZWNo
byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbF9jdl9mdW5jX2lzbmFu
Zl93b3JrcyIgPiY1CiRhc19lY2hvICIkZ2xfY3ZfZnVuY19pc25hbmZfd29ya3MiID4mNjsgfQoK
ICBmaQogIGlmIHRlc3QgJGdsX2N2X2Z1bmNfaXNuYW5mX25vX2xpYm0gPSB5ZXMgXAogICAgICYm
IHsgY2FzZSAiJGdsX2N2X2Z1bmNfaXNuYW5mX3dvcmtzIiBpbgogICAgICAgICAgICAqeWVzKSB0
cnVlOzsKICAgICAgICAgICAgKikgZmFsc2U7OwogICAgICAgICAgZXNhYwogICAgICAgIH07IHRo
ZW4KICAgIGdsX2Z1bmNfaXNuYW5mX25vX2xpYm09eWVzCgokYXNfZWNobyAiI2RlZmluZSBIQVZF
X0lTTkFORl9JTl9MSUJDIDEiID4+Y29uZmRlZnMuaAoKICBlbHNlCiAgICBnbF9mdW5jX2lzbmFu
Zl9ub19saWJtPW5vCiAgZmkKCiAgICAgIGlmIHRlc3QgJGdsX2Z1bmNfaXNuYW5mX25vX2xpYm0g
IT0geWVzOyB0aGVuCgoKCgoKCgoKICBnbF9MSUJPQkpTPSIkZ2xfTElCT0JKUyBpc25hbmYuJGFj
X29iamV4dCIKCgoKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNo
ZWNraW5nIHdoZXJlIHRvIGZpbmQgdGhlIGV4cG9uZW50IGluIGEgJ2Zsb2F0JyIgPiY1CiRhc19l
Y2hvX24gImNoZWNraW5nIHdoZXJlIHRvIGZpbmQgdGhlIGV4cG9uZW50IGluIGEgJ2Zsb2F0Jy4u
LiAiID4mNjsgfQppZiAke2dsX2N2X2NjX2Zsb2F0X2V4cGJpdDArOn0gZmFsc2U7IHRoZW4gOgog
ICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKCiAgICAgIGlmIHRlc3QgIiRjcm9zc19j
b21waWxpbmciID0geWVzOyB0aGVuIDoKICBnbF9jdl9jY19mbG9hdF9leHBiaXQwPSJ3b3JkIDAg
Yml0IDIzIgplbHNlCiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4
dAovKiBlbmQgY29uZmRlZnMuaC4gICovCgojaW5jbHVkZSA8ZmxvYXQuaD4KI2luY2x1ZGUgPHN0
ZGRlZi5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojZGVmaW5lIE5X
T1JEUyBcCiAgKChzaXplb2YgKGZsb2F0KSArIHNpemVvZiAodW5zaWduZWQgaW50KSAtIDEpIC8g
c2l6ZW9mICh1bnNpZ25lZCBpbnQpKQp0eXBlZGVmIHVuaW9uIHsgZmxvYXQgdmFsdWU7IHVuc2ln
bmVkIGludCB3b3JkW05XT1JEU107IH0gbWVtb3J5X2Zsb2F0OwpzdGF0aWMgdW5zaWduZWQgaW50
IG9yZWRfd29yZHNbTldPUkRTXTsKc3RhdGljIHVuc2lnbmVkIGludCBhbmRlZF93b3Jkc1tOV09S
RFNdOwpzdGF0aWMgdm9pZCBhZGRfdG9fb3JlZF93b3JkcyAoZmxvYXQgeCkKewogIG1lbW9yeV9m
bG9hdCBtOwogIHNpemVfdCBpOwogIC8qIENsZWFyIGl0IGZpcnN0LCBpbiBjYXNlCiAgICAgc2l6
ZW9mIChmbG9hdCkgPCBzaXplb2YgKG1lbW9yeV9mbG9hdCkuICAqLwogIG1lbXNldCAoJm0sIDAs
IHNpemVvZiAobWVtb3J5X2Zsb2F0KSk7CiAgbS52YWx1ZSA9IHg7CiAgZm9yIChpID0gMDsgaSA8
IE5XT1JEUzsgaSsrKQogICAgewogICAgICBvcmVkX3dvcmRzW2ldIHw9IG0ud29yZFtpXTsKICAg
ICAgYW5kZWRfd29yZHNbaV0gJj0gbS53b3JkW2ldOwogICAgfQp9CmludCBtYWluICgpCnsKICBz
aXplX3QgajsKICBGSUxFICpmcCA9IGZvcGVuICgiY29uZnRlc3Qub3V0IiwgInciKTsKICBpZiAo
ZnAgPT0gTlVMTCkKICAgIHJldHVybiAxOwogIGZvciAoaiA9IDA7IGogPCBOV09SRFM7IGorKykK
ICAgIGFuZGVkX3dvcmRzW2pdID0gfiAodW5zaWduZWQgaW50KSAwOwogIGFkZF90b19vcmVkX3dv
cmRzICgwLjI1Zik7CiAgYWRkX3RvX29yZWRfd29yZHMgKDAuNWYpOwogIGFkZF90b19vcmVkX3dv
cmRzICgxLjBmKTsKICBhZGRfdG9fb3JlZF93b3JkcyAoMi4wZik7CiAgYWRkX3RvX29yZWRfd29y
ZHMgKDQuMGYpOwogIC8qIFJlbW92ZSBiaXRzIHRoYXQgYXJlIGNvbW1vbiAoZS5nLiBpZiByZXBy
ZXNlbnRhdGlvbiBvZiB0aGUgZmlyc3QgbWFudGlzc2EKICAgICBiaXQgaXMgZXhwbGljaXQpLiAg
Ki8KICBmb3IgKGogPSAwOyBqIDwgTldPUkRTOyBqKyspCiAgICBvcmVkX3dvcmRzW2pdICY9IH5h
bmRlZF93b3Jkc1tqXTsKICAvKiBOb3cgZmluZCB0aGUgbm9uemVybyB3b3JkLiAgKi8KICBmb3Ig
KGogPSAwOyBqIDwgTldPUkRTOyBqKyspCiAgICBpZiAob3JlZF93b3Jkc1tqXSAhPSAwKQogICAg
ICBicmVhazsKICBpZiAoaiA8IE5XT1JEUykKICAgIHsKICAgICAgc2l6ZV90IGk7CiAgICAgIGZv
ciAoaSA9IGogKyAxOyBpIDwgTldPUkRTOyBpKyspCiAgICAgICAgaWYgKG9yZWRfd29yZHNbaV0g
IT0gMCkKICAgICAgICAgIHsKICAgICAgICAgICAgZnByaW50ZiAoZnAsICJ1bmtub3duIik7CiAg
ICAgICAgICAgIHJldHVybiAoZmNsb3NlIChmcCkgIT0gMCk7CiAgICAgICAgICB9CiAgICAgIGZv
ciAoaSA9IDA7IDsgaSsrKQogICAgICAgIGlmICgob3JlZF93b3Jkc1tqXSA+PiBpKSAmIDEpCiAg
ICAgICAgICB7CiAgICAgICAgICAgIGZwcmludGYgKGZwLCAid29yZCAlZCBiaXQgJWQiLCAoaW50
KSBqLCAoaW50KSBpKTsKICAgICAgICAgICAgcmV0dXJuIChmY2xvc2UgKGZwKSAhPSAwKTsKICAg
ICAgICAgIH0KICAgIH0KICBmcHJpbnRmIChmcCwgInVua25vd24iKTsKICByZXR1cm4gKGZjbG9z
ZSAoZnApICE9IDApOwp9CgpfQUNFT0YKaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhl
biA6CiAgZ2xfY3ZfY2NfZmxvYXRfZXhwYml0MD1gY2F0IGNvbmZ0ZXN0Lm91dGAKZWxzZQogIGds
X2N2X2NjX2Zsb2F0X2V4cGJpdDA9InVua25vd24iCmZpCnJtIC1mIGNvcmUgKi5jb3JlIGNvcmUu
Y29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKICBjb25mdGVz
dC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dApmaQoKICAgICAgcm0g
LWYgY29uZnRlc3Qub3V0CgpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IHJlc3VsdDogJGdsX2N2X2NjX2Zsb2F0X2V4cGJpdDAiID4mNQokYXNfZWNobyAiJGdsX2N2
X2NjX2Zsb2F0X2V4cGJpdDAiID4mNjsgfQogIGNhc2UgIiRnbF9jdl9jY19mbG9hdF9leHBiaXQw
IiBpbgogICAgd29yZCpiaXQqKQogICAgICB3b3JkPWBlY2hvICIkZ2xfY3ZfY2NfZmxvYXRfZXhw
Yml0MCIgfCBzZWQgLWUgJ3Mvd29yZCAvLycgLWUgJ3MvIGJpdC4qLy8nYAogICAgICBiaXQ9YGVj
aG8gIiRnbF9jdl9jY19mbG9hdF9leHBiaXQwIiB8IHNlZCAtZSAncy93b3JkLipiaXQgLy8nYAoK
Y2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5lIEZMVF9FWFBCSVQwX1dPUkQgJHdvcmQK
X0FDRU9GCgoKY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5lIEZMVF9FWFBCSVQwX0JJ
VCAkYml0Cl9BQ0VPRgoKICAgICAgOzsKICBlc2FjCgoKICAgICAgZmkKICAgICAgZ2xfZ251bGli
X2VuYWJsZWRfM2YwZTU5MzAzM2QxZmMyYzEyNzU4MTk2MGY2NDFiNjY9dHJ1ZQogICAgICBmdW5j
X2dsX2dudWxpYl9tNGNvZGVfZnBpZWVlCiAgICBmaQogIH0KICBmdW5jX2dsX2dudWxpYl9tNGNv
ZGVfZGJkZjIyODY4YTUzNjdmMjhiZjE4ZTAwMTNhYzZmOGYgKCkKICB7CiAgICBpZiAhICRnbF9n
bnVsaWJfZW5hYmxlZF9kYmRmMjI4NjhhNTM2N2YyOGJmMThlMDAxM2FjNmY4ZjsgdGhlbgoKCiAg
eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVy
IGlzbmFuKGxvbmcgZG91YmxlKSBjYW4gYmUgdXNlZCB3aXRob3V0IGxpbmtpbmcgd2l0aCBsaWJt
IiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBpc25hbihsb25nIGRvdWJsZSkgY2Fu
IGJlIHVzZWQgd2l0aG91dCBsaW5raW5nIHdpdGggbGlibS4uLiAiID4mNjsgfQppZiAke2dsX2N2
X2Z1bmNfaXNuYW5sX25vX2xpYm0rOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNo
ZWQpICIgPiY2CmVsc2UKCiAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0
LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVkZSA8bWF0aC5oPgogICAgICAg
ICAgICAgI2lmIF9fR05VQ19fID49IDQKICAgICAgICAgICAgICMgdW5kZWYgaXNuYW5sCiAgICAg
ICAgICAgICAjIGRlZmluZSBpc25hbmwoeCkgX19idWlsdGluX2lzbmFubCAoKGxvbmcgZG91Ymxl
KSh4KSkKICAgICAgICAgICAgICNlbGlmIGRlZmluZWQgaXNuYW4KICAgICAgICAgICAgICMgdW5k
ZWYgaXNuYW5sCiAgICAgICAgICAgICAjIGRlZmluZSBpc25hbmwoeCkgaXNuYW4gKChsb25nIGRv
dWJsZSkoeCkpCiAgICAgICAgICAgICAjZW5kaWYKICAgICAgICAgICAgIGxvbmcgZG91YmxlIHg7
CmludAptYWluICgpCnsKcmV0dXJuIGlzbmFubCAoeCk7CiAgOwogIHJldHVybiAwOwp9Cl9BQ0VP
RgppZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAgZ2xfY3ZfZnVuY19pc25h
bmxfbm9fbGlibT15ZXMKZWxzZQogIGdsX2N2X2Z1bmNfaXNuYW5sX25vX2xpYm09bm8KZmkKcm0g
LWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCiAgICBjb25mdGVzdCRh
Y19leGVleHQgY29uZnRlc3QuJGFjX2V4dAoKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbF9jdl9mdW5jX2lzbmFubF9ub19saWJtIiA+JjUKJGFz
X2VjaG8gIiRnbF9jdl9mdW5jX2lzbmFubF9ub19saWJtIiA+JjY7IH0KCiAgZ2xfZnVuY19pc25h
bmxfbm9fbGlibT0kZ2xfY3ZfZnVuY19pc25hbmxfbm9fbGlibQogIGlmIHRlc3QgJGdsX2Z1bmNf
aXNuYW5sX25vX2xpYm0gPSB5ZXM7IHRoZW4KCgoKCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGlzbmFubCB3b3JrcyIgPiY1CiRh
c19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgaXNuYW5sIHdvcmtzLi4uICIgPiY2OyB9CmlmICR7
Z2xfY3ZfZnVuY19pc25hbmxfd29ya3MrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihj
YWNoZWQpICIgPiY2CmVsc2UKCiAgICAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVz
OyB0aGVuIDoKICBjYXNlICIkaG9zdF9jcHUiIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMgR3Vlc3Mgbm8gb24gaWE2NCwgeDg2XzY0LCBpMzg2LgogICAgICAgICAgIGlhNjQg
fCB4ODZfNjQgfCBpKjg2KSBnbF9jdl9mdW5jX2lzbmFubF93b3Jrcz0iZ3Vlc3Npbmcgbm8iOzsK
ICAgICAgICAgICAqKQogICAgICAgICAgICAgY2FzZSAiJGhvc3Rfb3MiIGluCiAgICAgICAgICAg
ICAgIG5ldGJzZCopIGdsX2N2X2Z1bmNfaXNuYW5sX3dvcmtzPSJndWVzc2luZyBubyI7OwogICAg
ICAgICAgICAgICAqKSAgICAgICBnbF9jdl9mdW5jX2lzbmFubF93b3Jrcz0iZ3Vlc3NpbmcgeWVz
Ijs7CiAgICAgICAgICAgICBlc2FjCiAgICAgICAgICAgICA7OwogICAgICAgICBlc2FjCgplbHNl
CiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29u
ZmRlZnMuaC4gICovCgojaW5jbHVkZSA8ZmxvYXQuaD4KI2luY2x1ZGUgPGxpbWl0cy5oPgojaW5j
bHVkZSA8bWF0aC5oPgojaWYgX19HTlVDX18gPj0gNAojIHVuZGVmIGlzbmFubAojIGRlZmluZSBp
c25hbmwoeCkgX19idWlsdGluX2lzbmFubCAoKGxvbmcgZG91YmxlKSh4KSkKI2VsaWYgZGVmaW5l
ZCBpc25hbgojIHVuZGVmIGlzbmFubAojIGRlZmluZSBpc25hbmwoeCkgaXNuYW4gKChsb25nIGRv
dWJsZSkoeCkpCiNlbmRpZgojZGVmaW5lIE5XT1JEUyBcCiAgKChzaXplb2YgKGxvbmcgZG91Ymxl
KSArIHNpemVvZiAodW5zaWduZWQgaW50KSAtIDEpIC8gc2l6ZW9mICh1bnNpZ25lZCBpbnQpKQp0
eXBlZGVmIHVuaW9uIHsgdW5zaWduZWQgaW50IHdvcmRbTldPUkRTXTsgbG9uZyBkb3VibGUgdmFs
dWU7IH0KICAgICAgICBtZW1vcnlfbG9uZ19kb3VibGU7Ci8qIE9uIElyaXggNi41LCBnY2MgMy40
LjMgY2FuJ3QgY29tcHV0ZSBjb21waWxlLXRpbWUgTmFOLCBhbmQgbmVlZHMgdGhlCiAgIHJ1bnRp
bWUgdHlwZSBjb252ZXJzaW9uLiAgKi8KI2lmZGVmIF9fc2dpCnN0YXRpYyBsb25nIGRvdWJsZSBO
YU5sICgpCnsKICBkb3VibGUgemVybyA9IDAuMDsKICByZXR1cm4gemVybyAvIHplcm87Cn0KI2Vs
c2UKIyBkZWZpbmUgTmFObCgpICgwLjBMIC8gMC4wTCkKI2VuZGlmCmludCBtYWluICgpCnsKICBp
bnQgcmVzdWx0ID0gMDsKCiAgaWYgKCFpc25hbmwgKE5hTmwgKCkpKQogICAgcmVzdWx0IHw9IDE7
CgogIHsKICAgIG1lbW9yeV9sb25nX2RvdWJsZSBtOwogICAgdW5zaWduZWQgaW50IGk7CgogICAg
LyogVGhlIGlzbmFubCBmdW5jdGlvbiBzaG91bGQgYmUgaW1tdW5lIGFnYWluc3QgY2hhbmdlcyBp
biB0aGUgc2lnbiBiaXQgYW5kCiAgICAgICBpbiB0aGUgbWFudGlzc2EgYml0cy4gIFRoZSB4b3Ig
b3BlcmF0aW9uIHR3aWRkbGVzIGEgYml0IHRoYXQgY2FuIG9ubHkgYmUKICAgICAgIGEgc2lnbiBi
aXQgb3IgYSBtYW50aXNzYSBiaXQgKHNpbmNlIHRoZSBleHBvbmVudCBuZXZlciBleHRlbmRzIHRv
CiAgICAgICBiaXQgMzEpLiAgKi8KICAgIG0udmFsdWUgPSBOYU5sICgpOwogICAgbS53b3JkW05X
T1JEUyAvIDJdIF49ICh1bnNpZ25lZCBpbnQpIDEgPDwgKHNpemVvZiAodW5zaWduZWQgaW50KSAq
IENIQVJfQklUIC0gMSk7CiAgICBmb3IgKGkgPSAwOyBpIDwgTldPUkRTOyBpKyspCiAgICAgIG0u
d29yZFtpXSB8PSAxOwogICAgaWYgKCFpc25hbmwgKG0udmFsdWUpKQogICAgICByZXN1bHQgfD0g
MTsKICB9CgojaWYgKChkZWZpbmVkIF9faWE2NCAmJiBMREJMX01BTlRfRElHID09IDY0KSB8fCAo
ZGVmaW5lZCBfX3g4Nl82NF9fIHx8IGRlZmluZWQgX19hbWQ2NF9fKSB8fCAoZGVmaW5lZCBfX2kz
ODYgfHwgZGVmaW5lZCBfX2kzODZfXyB8fCBkZWZpbmVkIF9JMzg2IHx8IGRlZmluZWQgX01fSVg4
NiB8fCBkZWZpbmVkIF9YODZfKSkgJiYgIUhBVkVfU0FNRV9MT05HX0RPVUJMRV9BU19ET1VCTEUK
LyogUmVwcmVzZW50YXRpb24gb2YgYW4gODAtYml0ICdsb25nIGRvdWJsZScgYXMgYW4gaW5pdGlh
bGl6ZXIgZm9yIGEgc2VxdWVuY2UKICAgb2YgJ3Vuc2lnbmVkIGludCcgd29yZHMuICAqLwojIGlm
ZGVmIFdPUkRTX0JJR0VORElBTgojICBkZWZpbmUgTERCTDgwX1dPUkRTKGV4cG9uZW50LG1hbnRo
aSxtYW50bG8pIFwKICAgICB7ICgodW5zaWduZWQgaW50KSAoZXhwb25lbnQpIDw8IDE2KSB8ICgo
dW5zaWduZWQgaW50KSAobWFudGhpKSA+PiAxNiksIFwKICAgICAgICgodW5zaWduZWQgaW50KSAo
bWFudGhpKSA8PCAxNikgfCAodW5zaWduZWQgaW50KSAobWFudGxvKSA+PiAxNiksICAgIFwKICAg
ICAgICh1bnNpZ25lZCBpbnQpIChtYW50bG8pIDw8IDE2ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKICAgICB9CiMgZWxzZQojICBkZWZpbmUgTERCTDgwX1dPUkRTKGV4
cG9uZW50LG1hbnRoaSxtYW50bG8pIFwKICAgICB7IG1hbnRsbywgbWFudGhpLCBleHBvbmVudCB9
CiMgZW5kaWYKICB7IC8qIFF1aWV0IE5hTi4gICovCiAgICBzdGF0aWMgbWVtb3J5X2xvbmdfZG91
YmxlIHggPQogICAgICB7IExEQkw4MF9XT1JEUyAoMHhGRkZGLCAweEMzMzMzMzMzLCAweDAwMDAw
MDAwKSB9OwogICAgaWYgKCFpc25hbmwgKHgudmFsdWUpKQogICAgICByZXN1bHQgfD0gMjsKICB9
CiAgewogICAgLyogU2lnbmFsbGluZyBOYU4uICAqLwogICAgc3RhdGljIG1lbW9yeV9sb25nX2Rv
dWJsZSB4ID0KICAgICAgeyBMREJMODBfV09SRFMgKDB4RkZGRiwgMHg4MzMzMzMzMywgMHgwMDAw
MDAwMCkgfTsKICAgIGlmICghaXNuYW5sICh4LnZhbHVlKSkKICAgICAgcmVzdWx0IHw9IDI7CiAg
fQogIC8qIFRoZSBpc25hbmwgZnVuY3Rpb24gc2hvdWxkIHJlY29nbml6ZSBQc2V1ZG8tTmFOcywg
UHNldWRvLUluZmluaXRpZXMsCiAgICAgUHNldWRvLVplcm9lcywgVW5ub3JtYWxpemVkIE51bWJl
cnMsIGFuZCBQc2V1ZG8tRGVub3JtYWxzLCBhcyBkZWZpbmVkIGluCiAgICAgICBJbnRlbCBJQS02
NCBBcmNoaXRlY3R1cmUgU29mdHdhcmUgRGV2ZWxvcGVyJ3MgTWFudWFsLCBWb2x1bWUgMToKICAg
ICAgIEFwcGxpY2F0aW9uIEFyY2hpdGVjdHVyZS4KICAgICAgIFRhYmxlIDUtMiAiRmxvYXRpbmct
UG9pbnQgUmVnaXN0ZXIgRW5jb2RpbmdzIgogICAgICAgRmlndXJlIDUtNiAiTWVtb3J5IHRvIEZs
b2F0aW5nLVBvaW50IFJlZ2lzdGVyIERhdGEgVHJhbnNsYXRpb24iCiAgICovCiAgeyAvKiBQc2V1
ZG8tTmFOLiAgKi8KICAgIHN0YXRpYyBtZW1vcnlfbG9uZ19kb3VibGUgeCA9CiAgICAgIHsgTERC
TDgwX1dPUkRTICgweEZGRkYsIDB4NDAwMDAwMDEsIDB4MDAwMDAwMDApIH07CiAgICBpZiAoIWlz
bmFubCAoeC52YWx1ZSkpCiAgICAgIHJlc3VsdCB8PSA0OwogIH0KICB7IC8qIFBzZXVkby1JbmZp
bml0eS4gICovCiAgICBzdGF0aWMgbWVtb3J5X2xvbmdfZG91YmxlIHggPQogICAgICB7IExEQkw4
MF9XT1JEUyAoMHhGRkZGLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwKSB9OwogICAgaWYgKCFpc25h
bmwgKHgudmFsdWUpKQogICAgICByZXN1bHQgfD0gODsKICB9CiAgeyAvKiBQc2V1ZG8tWmVyby4g
ICovCiAgICBzdGF0aWMgbWVtb3J5X2xvbmdfZG91YmxlIHggPQogICAgICB7IExEQkw4MF9XT1JE
UyAoMHg0MDA0LCAweDAwMDAwMDAwLCAweDAwMDAwMDAwKSB9OwogICAgaWYgKCFpc25hbmwgKHgu
dmFsdWUpKQogICAgICByZXN1bHQgfD0gMTY7CiAgfQogIHsgLyogVW5ub3JtYWxpemVkIG51bWJl
ci4gICovCiAgICBzdGF0aWMgbWVtb3J5X2xvbmdfZG91YmxlIHggPQogICAgICB7IExEQkw4MF9X
T1JEUyAoMHg0MDAwLCAweDYzMzMzMzMzLCAweDAwMDAwMDAwKSB9OwogICAgaWYgKCFpc25hbmwg
KHgudmFsdWUpKQogICAgICByZXN1bHQgfD0gMzI7CiAgfQogIHsgLyogUHNldWRvLURlbm9ybWFs
LiAgKi8KICAgIHN0YXRpYyBtZW1vcnlfbG9uZ19kb3VibGUgeCA9CiAgICAgIHsgTERCTDgwX1dP
UkRTICgweDAwMDAsIDB4ODMzMzMzMzMsIDB4MDAwMDAwMDApIH07CiAgICBpZiAoIWlzbmFubCAo
eC52YWx1ZSkpCiAgICAgIHJlc3VsdCB8PSA2NDsKICB9CiNlbmRpZgoKICByZXR1cm4gcmVzdWx0
Owp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKICBnbF9jdl9m
dW5jX2lzbmFubF93b3Jrcz15ZXMKZWxzZQogIGdsX2N2X2Z1bmNfaXNuYW5sX3dvcmtzPW5vCmZp
CnJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRl
c3QkYWNfZXhlZXh0IFwKICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRl
c3QuJGFjX2V4dApmaQoKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiAkZ2xfY3ZfZnVuY19pc25hbmxfd29ya3MiID4mNQokYXNfZWNobyAiJGdsX2N2
X2Z1bmNfaXNuYW5sX3dvcmtzIiA+JjY7IH0KCiAgICBjYXNlICIkZ2xfY3ZfZnVuY19pc25hbmxf
d29ya3MiIGluCiAgICAgICp5ZXMpIDs7CiAgICAgICopICAgIGdsX2Z1bmNfaXNuYW5sX25vX2xp
Ym09bm8gOzsKICAgIGVzYWMKICBmaQogIGlmIHRlc3QgJGdsX2Z1bmNfaXNuYW5sX25vX2xpYm0g
PSB5ZXM7IHRoZW4KCiRhc19lY2hvICIjZGVmaW5lIEhBVkVfSVNOQU5MX0lOX0xJQkMgMSIgPj5j
b25mZGVmcy5oCgogIGZpCgogICAgICBpZiB0ZXN0ICRnbF9mdW5jX2lzbmFubF9ub19saWJtICE9
IHllczsgdGhlbgoKCgoKCgoKCiAgZ2xfTElCT0JKUz0iJGdsX0xJQk9CSlMgaXNuYW5sLiRhY19v
YmpleHQiCgoKCgogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl
Y2tpbmcgd2hlcmUgdG8gZmluZCB0aGUgZXhwb25lbnQgaW4gYSAnbG9uZyBkb3VibGUnIiA+JjUK
JGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hlcmUgdG8gZmluZCB0aGUgZXhwb25lbnQgaW4gYSAnbG9u
ZyBkb3VibGUnLi4uICIgPiY2OyB9CmlmICR7Z2xfY3ZfY2NfbG9uZ19kb3VibGVfZXhwYml0MCs6
fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQoKICAgICAg
aWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2xfY3ZfY2NfbG9uZ19kb3VibGVfZXhwYml0MD0idW5rbm93biIKCmVs
c2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBj
b25mZGVmcy5oLiAgKi8KCiNpbmNsdWRlIDxmbG9hdC5oPgojaW5jbHVkZSA8c3RkZGVmLmg+CiNp
bmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CiNkZWZpbmUgTldPUkRTIFwKICAo
KHNpemVvZiAobG9uZyBkb3VibGUpICsgc2l6ZW9mICh1bnNpZ25lZCBpbnQpIC0gMSkgLyBzaXpl
b2YgKHVuc2lnbmVkIGludCkpCnR5cGVkZWYgdW5pb24geyBsb25nIGRvdWJsZSB2YWx1ZTsgdW5z
aWduZWQgaW50IHdvcmRbTldPUkRTXTsgfQogICAgICAgIG1lbW9yeV9sb25nX2RvdWJsZTsKc3Rh
dGljIHVuc2lnbmVkIGludCBvcmVkX3dvcmRzW05XT1JEU107CnN0YXRpYyB1bnNpZ25lZCBpbnQg
YW5kZWRfd29yZHNbTldPUkRTXTsKc3RhdGljIHZvaWQgYWRkX3RvX29yZWRfd29yZHMgKGxvbmcg
ZG91YmxlIHgpCnsKICBtZW1vcnlfbG9uZ19kb3VibGUgbTsKICBzaXplX3QgaTsKICAvKiBDbGVh
ciBpdCBmaXJzdCwgaW4gY2FzZQogICAgIHNpemVvZiAobG9uZyBkb3VibGUpIDwgc2l6ZW9mICht
ZW1vcnlfbG9uZ19kb3VibGUpLiAgKi8KICBtZW1zZXQgKCZtLCAwLCBzaXplb2YgKG1lbW9yeV9s
b25nX2RvdWJsZSkpOwogIG0udmFsdWUgPSB4OwogIGZvciAoaSA9IDA7IGkgPCBOV09SRFM7IGkr
KykKICAgIHsKICAgICAgb3JlZF93b3Jkc1tpXSB8PSBtLndvcmRbaV07CiAgICAgIGFuZGVkX3dv
cmRzW2ldICY9IG0ud29yZFtpXTsKICAgIH0KfQppbnQgbWFpbiAoKQp7CiAgc2l6ZV90IGo7CiAg
RklMRSAqZnAgPSBmb3BlbiAoImNvbmZ0ZXN0Lm91dCIsICJ3Iik7CiAgaWYgKGZwID09IE5VTEwp
CiAgICByZXR1cm4gMTsKICBmb3IgKGogPSAwOyBqIDwgTldPUkRTOyBqKyspCiAgICBhbmRlZF93
b3Jkc1tqXSA9IH4gKHVuc2lnbmVkIGludCkgMDsKICBhZGRfdG9fb3JlZF93b3JkcyAoMC4yNUwp
OwogIGFkZF90b19vcmVkX3dvcmRzICgwLjVMKTsKICBhZGRfdG9fb3JlZF93b3JkcyAoMS4wTCk7
CiAgYWRkX3RvX29yZWRfd29yZHMgKDIuMEwpOwogIGFkZF90b19vcmVkX3dvcmRzICg0LjBMKTsK
ICAvKiBSZW1vdmUgYml0cyB0aGF0IGFyZSBjb21tb24gKGUuZy4gaWYgcmVwcmVzZW50YXRpb24g
b2YgdGhlIGZpcnN0IG1hbnRpc3NhCiAgICAgYml0IGlzIGV4cGxpY2l0KS4gICovCiAgZm9yIChq
ID0gMDsgaiA8IE5XT1JEUzsgaisrKQogICAgb3JlZF93b3Jkc1tqXSAmPSB+YW5kZWRfd29yZHNb
al07CiAgLyogTm93IGZpbmQgdGhlIG5vbnplcm8gd29yZC4gICovCiAgZm9yIChqID0gMDsgaiA8
IE5XT1JEUzsgaisrKQogICAgaWYgKG9yZWRfd29yZHNbal0gIT0gMCkKICAgICAgYnJlYWs7CiAg
aWYgKGogPCBOV09SRFMpCiAgICB7CiAgICAgIHNpemVfdCBpOwogICAgICBmb3IgKGkgPSBqICsg
MTsgaSA8IE5XT1JEUzsgaSsrKQogICAgICAgIGlmIChvcmVkX3dvcmRzW2ldICE9IDApCiAgICAg
ICAgICB7CiAgICAgICAgICAgIGZwcmludGYgKGZwLCAidW5rbm93biIpOwogICAgICAgICAgICBy
ZXR1cm4gKGZjbG9zZSAoZnApICE9IDApOwogICAgICAgICAgfQogICAgICBmb3IgKGkgPSAwOyA7
IGkrKykKICAgICAgICBpZiAoKG9yZWRfd29yZHNbal0gPj4gaSkgJiAxKQogICAgICAgICAgewog
ICAgICAgICAgICBmcHJpbnRmIChmcCwgIndvcmQgJWQgYml0ICVkIiwgKGludCkgaiwgKGludCkg
aSk7CiAgICAgICAgICAgIHJldHVybiAoZmNsb3NlIChmcCkgIT0gMCk7CiAgICAgICAgICB9CiAg
ICB9CiAgZnByaW50ZiAoZnAsICJ1bmtub3duIik7CiAgcmV0dXJuIChmY2xvc2UgKGZwKSAhPSAw
KTsKfQoKX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgogIGdsX2N2
X2NjX2xvbmdfZG91YmxlX2V4cGJpdDA9YGNhdCBjb25mdGVzdC5vdXRgCmVsc2UKICBnbF9jdl9j
Y19sb25nX2RvdWJsZV9leHBiaXQwPSJ1bmtub3duIgpmaQpybSAtZiBjb3JlICouY29yZSBjb3Jl
LmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCiAgY29uZnRl
c3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKZmkKCiAgICAgIHJt
IC1mIGNvbmZ0ZXN0Lm91dAoKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiByZXN1bHQ6ICRnbF9jdl9jY19sb25nX2RvdWJsZV9leHBiaXQwIiA+JjUKJGFzX2VjaG8g
IiRnbF9jdl9jY19sb25nX2RvdWJsZV9leHBiaXQwIiA+JjY7IH0KICBjYXNlICIkZ2xfY3ZfY2Nf
bG9uZ19kb3VibGVfZXhwYml0MCIgaW4KICAgIHdvcmQqYml0KikKICAgICAgd29yZD1gZWNobyAi
JGdsX2N2X2NjX2xvbmdfZG91YmxlX2V4cGJpdDAiIHwgc2VkIC1lICdzL3dvcmQgLy8nIC1lICdz
LyBiaXQuKi8vJ2AKICAgICAgYml0PWBlY2hvICIkZ2xfY3ZfY2NfbG9uZ19kb3VibGVfZXhwYml0
MCIgfCBzZWQgLWUgJ3Mvd29yZC4qYml0IC8vJ2AKCmNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YK
I2RlZmluZSBMREJMX0VYUEJJVDBfV09SRCAkd29yZApfQUNFT0YKCgpjYXQgPj5jb25mZGVmcy5o
IDw8X0FDRU9GCiNkZWZpbmUgTERCTF9FWFBCSVQwX0JJVCAkYml0Cl9BQ0VPRgoKICAgICAgOzsK
ICBlc2FjCgoKCiAgICAgIGZpCiAgICAgIGdsX2dudWxpYl9lbmFibGVkX2RiZGYyMjg2OGE1MzY3
ZjI4YmYxOGUwMDEzYWM2ZjhmPXRydWUKICAgICAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX2ZwaWVl
ZQogICAgZmkKICB9CiAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX2xvY2sgKCkKICB7CiAgICBpZiAh
ICRnbF9nbnVsaWJfZW5hYmxlZF9sb2NrOyB0aGVuCgoKICBpZiB0ZXN0ICIkZ2xfdGhyZWFkc19h
cGkiID0gcG9zaXg7IHRoZW4KICAgICMgT1NGLzEgNC4wIGFuZCBNYWMgT1MgWCAxMC4xIGxhY2sg
dGhlIHB0aHJlYWRfcndsb2NrX3QgdHlwZSBhbmQgdGhlCiAgICAjIHB0aHJlYWRfcndsb2NrXyog
ZnVuY3Rpb25zLgogICAgYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAicHRocmVhZF9yd2xv
Y2tfdCIgImFjX2N2X3R5cGVfcHRocmVhZF9yd2xvY2tfdCIgIiNpbmNsdWRlIDxwdGhyZWFkLmg+
CiIKaWYgdGVzdCAieCRhY19jdl90eXBlX3B0aHJlYWRfcndsb2NrX3QiID0geHllczsgdGhlbiA6
CgokYXNfZWNobyAiI2RlZmluZSBIQVZFX1BUSFJFQURfUldMT0NLIDEiID4+Y29uZmRlZnMuaAoK
ZmkKCiAgICAjIGdsaWJjIGRlZmluZXMgUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUgYXMgZW51bSwg
bm90IGFzIGEgbWFjcm8uCiAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4k
YWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCiAgICAgICNpbmNsdWRlIDxwdGhyZWFkLmg+
CmludAptYWluICgpCnsKCiNpZiBfX0ZyZWVCU0RfXyA9PSA0CmVycm9yICJObywgaW4gRnJlZUJT
RCA0LjAgcmVjdXJzaXZlIG11dGV4ZXMgYWN0dWFsbHkgZG9uJ3Qgd29yay4iCiNlbHNlCmludCB4
ID0gKGludClQVEhSRUFEX01VVEVYX1JFQ1VSU0lWRTsKcmV0dXJuICF4OwojZW5kaWYKCiAgOwog
IHJldHVybiAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhl
biA6CgokYXNfZWNobyAiI2RlZmluZSBIQVZFX1BUSFJFQURfTVVURVhfUkVDVVJTSVZFIDEiID4+
Y29uZmRlZnMuaAoKZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4
dCBjb25mdGVzdC4kYWNfZXh0CiAgZmkKICA6CgogICAgICBnbF9nbnVsaWJfZW5hYmxlZF9sb2Nr
PXRydWUKICAgICAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX3RocmVhZGxpYgogICAgZmkKICB9CiAg
ZnVuY19nbF9nbnVsaWJfbTRjb2RlX2xzdGF0ICgpCiAgewogICAgaWYgISAkZ2xfZ251bGliX2Vu
YWJsZWRfbHN0YXQ7IHRoZW4KCgoKICA6CgoKCgoKICBpZiB0ZXN0ICRhY19jdl9mdW5jX2xzdGF0
ID0geWVzOyB0aGVuCgogICAgY2FzZSAiJGdsX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3Ns
YXNoZWRfc3ltbGluayIgaW4KICAgICAgKm5vKQogICAgICAgIFJFUExBQ0VfTFNUQVQ9MQogICAg
ICAgIDs7CiAgICBlc2FjCiAgZWxzZQogICAgSEFWRV9MU1RBVD0wCiAgZmkKCiAgICAgIGlmIHRl
c3QgJFJFUExBQ0VfTFNUQVQgPSAxOyB0aGVuCgoKCgoKCgoKICBnbF9MSUJPQkpTPSIkZ2xfTElC
T0JKUyBsc3RhdC4kYWNfb2JqZXh0IgoKICAgICAgICA6CiAgICAgIGZpCgoKCgoKICAgICAgICAg
IEdOVUxJQl9MU1RBVD0xCgoKCgoKJGFzX2VjaG8gIiNkZWZpbmUgR05VTElCX1RFU1RfTFNUQVQg
MSIgPj5jb25mZGVmcy5oCgoKCiAgICAgIGdsX2dudWxpYl9lbmFibGVkX2xzdGF0PXRydWUKICAg
ICAgaWYgdGVzdCAkUkVQTEFDRV9MU1RBVCA9IDE7IHRoZW4KICAgICAgICBmdW5jX2dsX2dudWxp
Yl9tNGNvZGVfZG9zbmFtZQogICAgICBmaQogICAgZmkKICB9CiAgZnVuY19nbF9nbnVsaWJfbTRj
b2RlX21hdGggKCkKICB7CiAgICBpZiAhICRnbF9nbnVsaWJfZW5hYmxlZF9tYXRoOyB0aGVuCgoK
CgoKCgoKICA6CgoKCgoKCgoKICAgICBpZiB0ZXN0ICRnbF9jdl9oYXZlX2luY2x1ZGVfbmV4dCA9
IHllczsgdGhlbgogICAgICAgZ2xfY3ZfbmV4dF9tYXRoX2g9JzwnbWF0aC5oJz4nCiAgICAgZWxz
ZQogICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu
ZyBhYnNvbHV0ZSBuYW1lIG9mIDxtYXRoLmg+IiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgYWJz
b2x1dGUgbmFtZSBvZiA8bWF0aC5oPi4uLiAiID4mNjsgfQppZiAke2dsX2N2X25leHRfbWF0aF9o
Kzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCgogICAg
ICAgICAgICAgaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX21hdGhfaCA9IHllczsgdGhlbgoKCiAgICAg
ICAgICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyog
ZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVkZSA8bWF0aC5oPgoKX0FDRU9GCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
IiRob3N0X29zIiBpbgogICAgICAgICAgICAgICAgIGFpeCopIGdsX2Fic25hbWVfY3BwPSIkYWNf
Y3BwIC1DIiA7OwogICAgICAgICAgICAgICAgICopICAgIGdsX2Fic25hbWVfY3BwPSIkYWNfY3Bw
IiA7OwogICAgICAgICAgICAgICBlc2FjCgogICAgICAgICAgICAgICBjYXNlICIkaG9zdF9vcyIg
aW4KICAgICAgICAgICAgICAgICBtaW5ndyopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9kaXJzZXBf
cmVnZXg9J1svXFxdJwogICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAqKQog
ICAgICAgICAgICAgICAgICAgZ2xfZGlyc2VwX3JlZ2V4PSdcLycKICAgICAgICAgICAgICAgICAg
IDs7CiAgICAgICAgICAgICAgIGVzYWMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2xfbWFrZV9saXRlcmFsX3JlZ2V4X3NlZD0ncyxbXSReXFwuKi9bXSxcXCYs
ZycKCiAgICAgICAgICAgICAgIGdsX2hlYWRlcl9saXRlcmFsX3JlZ2V4PWBlY2hvICdtYXRoLmgn
IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VkIC1lICIkZ2xf
bWFrZV9saXRlcmFsX3JlZ2V4X3NlZCJgCiAgICAgICAgICAgICAgIGdsX2Fic29sdXRlX2hlYWRl
cl9zZWQ9Ii8ke2dsX2RpcnNlcF9yZWdleH0ke2dsX2hlYWRlcl9saXRlcmFsX3JlZ2V4fS8iJ3sK
ICAgICAgICAgICAgICAgICAgIHMvLioiXCguKiciJHtnbF9kaXJzZXBfcmVnZXh9JHtnbF9oZWFk
ZXJfbGl0ZXJhbF9yZWdleH0iJ1wpIi4qL1wxLwogICAgICAgICAgICAgICAgICAgc3xeL1teL118
Ly8mfAogICAgICAgICAgICAgICAgICAgcAogICAgICAgICAgICAgICAgICAgcQogICAgICAgICAg
ICAgICAgIH0nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsX2N2X25leHRfbWF0aF9oPSciJ2AoZXZhbCAiJGdsX2Fic25hbWVfY3Bw
IGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKICAgICAgICAgICAgICAgICAgICAgIHNlZCAtbiAi
JGdsX2Fic29sdXRlX2hlYWRlcl9zZWQiYCciJwogICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICBnbF9jdl9uZXh0X21hdGhfaD0nPCdtYXRoLmgnPicKICAgICAgICAgICAgIGZpCgoKZmkKeyAk
YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbF9jdl9uZXh0
X21hdGhfaCIgPiY1CiRhc19lY2hvICIkZ2xfY3ZfbmV4dF9tYXRoX2giID4mNjsgfQogICAgIGZp
CiAgICAgTkVYVF9NQVRIX0g9JGdsX2N2X25leHRfbWF0aF9oCgogICAgIGlmIHRlc3QgJGdsX2N2
X2hhdmVfaW5jbHVkZV9uZXh0ID0geWVzIHx8IHRlc3QgJGdsX2N2X2hhdmVfaW5jbHVkZV9uZXh0
ID0gYnVnZ3k7IHRoZW4KICAgICAgICMgSU5DTFVERV9ORVhUX0FTX0ZJUlNUX0RJUkVDVElWRT0n
aW5jbHVkZV9uZXh0JwogICAgICAgZ2xfbmV4dF9hc19maXJzdF9kaXJlY3RpdmU9JzwnbWF0aC5o
Jz4nCiAgICAgZWxzZQogICAgICAgIyBJTkNMVURFX05FWFRfQVNfRklSU1RfRElSRUNUSVZFPSdp
bmNsdWRlJwogICAgICAgZ2xfbmV4dF9hc19maXJzdF9kaXJlY3RpdmU9JGdsX2N2X25leHRfbWF0
aF9oCiAgICAgZmkKICAgICBORVhUX0FTX0ZJUlNUX0RJUkVDVElWRV9NQVRIX0g9JGdsX25leHRf
YXNfZmlyc3RfZGlyZWN0aXZlCgoKCgoKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t
JExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgTkFOIG1hY3JvIHdvcmtzIiA+JjUKJGFzX2VjaG9f
biAiY2hlY2tpbmcgd2hldGhlciBOQU4gbWFjcm8gd29ya3MuLi4gIiA+JjY7IH0KaWYgJHtnbF9j
dl9oZWFkZXJfbWF0aF9uYW5fd29ya3MrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihj
YWNoZWQpICIgPiY2CmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4k
YWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPG1hdGguaD4KaW50Cm1haW4g
KCkKewovKiBTb2xhcmlzIDEwIGhhcyBhIGJyb2tlbiBkZWZpbml0aW9uIG9mIE5BTi4gIE90aGVy
IHBsYXRmb3JtcwogICAgICAgIGZhaWwgdG8gcHJvdmlkZSBOQU4sIG9yIHByb3ZpZGUgaXQgb25s
eSBpbiBDOTkgbW9kZTsgdGhpcwogICAgICAgIHRlc3Qgb25seSBuZWVkcyB0byBmYWlsIHdoZW4g
TkFOIGlzIHByb3ZpZGVkIGJ1dCB3cm9uZy4gICovCiAgICAgICAgIGZsb2F0IGYgPSAxLjBmOwoj
aWZkZWYgTkFOCiAgICAgICAgIGYgPSBOQU47CiNlbmRpZgogICAgICAgICByZXR1cm4gZiA9PSAw
OwogIDsKICByZXR1cm4gMDsKfQpfQUNFT0YKaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVO
TyI7IHRoZW4gOgogIGdsX2N2X2hlYWRlcl9tYXRoX25hbl93b3Jrcz15ZXMKZWxzZQogIGdsX2N2
X2hlYWRlcl9tYXRoX25hbl93b3Jrcz1ubwpmaQpybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25m
dGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbF9jdl9oZWFkZXJfbWF0aF9uYW5fd29ya3Mi
ID4mNQokYXNfZWNobyAiJGdsX2N2X2hlYWRlcl9tYXRoX25hbl93b3JrcyIgPiY2OyB9CiAgaWYg
dGVzdCAkZ2xfY3ZfaGVhZGVyX21hdGhfbmFuX3dvcmtzID0gbm87IHRoZW4KICAgIFJFUExBQ0Vf
TkFOPTEKICBmaQogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl
Y2tpbmcgd2hldGhlciBIVUdFX1ZBTCB3b3JrcyIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIHdo
ZXRoZXIgSFVHRV9WQUwgd29ya3MuLi4gIiA+JjY7IH0KaWYgJHtnbF9jdl9oZWFkZXJfbWF0aF9o
dWdlX3ZhbF93b3Jrcys6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+
JjYKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyog
ZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVkZSA8bWF0aC5oPgppbnQKbWFpbiAoKQp7Ci8qIFNv
bGFyaXMgMTAgaGFzIGEgYnJva2VuIGRlZmluaXRpb24gb2YgSFVHRV9WQUwuICAqLwogICAgICAg
ICBkb3VibGUgZCA9IEhVR0VfVkFMOwogICAgICAgICByZXR1cm4gZCA9PSAwOwogIDsKICByZXR1
cm4gMDsKfQpfQUNFT0YKaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgog
IGdsX2N2X2hlYWRlcl9tYXRoX2h1Z2VfdmFsX3dvcmtzPXllcwplbHNlCiAgZ2xfY3ZfaGVhZGVy
X21hdGhfaHVnZV92YWxfd29ya3M9bm8KZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRl
c3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfaGVhZGVyX21hdGhfaHVnZV92YWxfd29y
a3MiID4mNQokYXNfZWNobyAiJGdsX2N2X2hlYWRlcl9tYXRoX2h1Z2VfdmFsX3dvcmtzIiA+JjY7
IH0KICBpZiB0ZXN0ICRnbF9jdl9oZWFkZXJfbWF0aF9odWdlX3ZhbF93b3JrcyA9IG5vOyB0aGVu
CiAgICBSRVBMQUNFX0hVR0VfVkFMPTEKICBmaQoKCiAgICBmb3IgZ2xfZnVuYyBpbiBhY29zZiBh
Y29zbCBhc2luZiBhc2lubCBhdGFuZiBhdGFubCAgICAgIGNicnQgY2JydGYgY2JydGwgY2VpbGYg
Y2VpbGwgY29weXNpZ24gY29weXNpZ25mIGNvcHlzaWdubCBjb3NmIGNvc2wgY29zaGYgICAgICBl
eHBmIGV4cGwgZXhwMiBleHAyZiBleHAybCBleHBtMSBleHBtMWYgZXhwbTFsICAgICAgZmFic2Yg
ZmFic2wgZmxvb3JmIGZsb29ybCBmbWEgZm1hZiBmbWFsICAgICAgZm1vZCBmbW9kZiBmbW9kbCBm
cmV4cGYgZnJleHBsIGh5cG90ZiBoeXBvdGwgICAgICBpbG9nYiBpbG9nYmYgaWxvZ2JsICAgICAg
bGRleHBmIGxkZXhwbCAgICAgIGxvZyBsb2dmIGxvZ2wgbG9nMTAgbG9nMTBmIGxvZzEwbCBsb2cx
cCBsb2cxcGYgbG9nMXBsIGxvZzIgbG9nMmYgbG9nMmwgICAgICBsb2diIGxvZ2JmIGxvZ2JsICAg
ICAgbW9kZiBtb2RmZiBtb2RmbCBwb3dmICAgICAgcmVtYWluZGVyIHJlbWFpbmRlcmYgcmVtYWlu
ZGVybCAgICAgIHJpbnQgcmludGYgcmludGwgcm91bmQgcm91bmRmIHJvdW5kbCBzaW5mIHNpbmwg
c2luaGYgc3FydGYgc3FydGwgICAgICB0YW5mIHRhbmwgdGFuaGYgdHJ1bmMgdHJ1bmNmIHRydW5j
bDsgZG8KICAgIGFzX2dsX1N5bWJvbD1gJGFzX2VjaG8gImdsX2N2X2hhdmVfcmF3X2RlY2xfJGds
X2Z1bmMiIHwgJGFzX3RyX3NoYAogICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBjaGVja2luZyB3aGV0aGVyICRnbF9mdW5jIGlzIGRlY2xhcmVkIHdpdGhvdXQgYSBt
YWNybyIgPiY1CiRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgJGdsX2Z1bmMgaXMgZGVjbGFy
ZWQgd2l0aG91dCBhIG1hY3JvLi4uICIgPiY2OyB9CmlmIGV2YWwgXCR7JGFzX2dsX1N5bWJvbCs6
fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIGNhdCBj
b25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmgu
ICAqLwojaW5jbHVkZSA8bWF0aC5oPgppbnQKbWFpbiAoKQp7CiN1bmRlZiAkZ2xfZnVuYwogICh2
b2lkKSAkZ2xfZnVuYzsKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2Nv
bXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKICBldmFsICIkYXNfZ2xfU3ltYm9sPXllcyIKZWxzZQog
IGV2YWwgIiRhc19nbF9TeW1ib2w9bm8iCmZpCnJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0
ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dApmaQpldmFsIGFjX3Jlcz1cJCRhc19nbF9T
eW1ib2wKCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl
c3VsdDogJGFjX3JlcyIgPiY1CiRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KICAgIGlmIGV2YWwg
dGVzdCBcInhcJCIkYXNfZ2xfU3ltYm9sIlwiID0geCJ5ZXMiOyB0aGVuIDoKICBjYXQgPj5jb25m
ZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgYCRhc19lY2hvICJIQVZFX1JBV19ERUNMXyRnbF9mdW5j
IiB8ICRhc190cl9jcHBgIDEKX0FDRU9GCgogICAgICAgICAgICAgICAgICAgICBldmFsIGFjX2N2
X2hhdmVfZGVjbF8kZ2xfZnVuYz15ZXMKZmkKICAgICAgZG9uZQoKCiAgICAgIGdsX2dudWxpYl9l
bmFibGVkX21hdGg9dHJ1ZQogICAgZmkKICB9CiAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX21lbXBj
cHkgKCkKICB7CiAgICBpZiAhICRnbF9nbnVsaWJfZW5hYmxlZF9tZW1wY3B5OyB0aGVuCgoKCgoK
CiAgZm9yIGFjX2Z1bmMgaW4gbWVtcGNweQpkbyA6CiAgYWNfZm5fY19jaGVja19mdW5jICIkTElO
RU5PIiAibWVtcGNweSIgImFjX2N2X2Z1bmNfbWVtcGNweSIKaWYgdGVzdCAieCRhY19jdl9mdW5j
X21lbXBjcHkiID0geHllczsgdGhlbiA6CiAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVm
aW5lIEhBVkVfTUVNUENQWSAxCl9BQ0VPRgoKZmkKZG9uZQoKICBpZiB0ZXN0ICRhY19jdl9mdW5j
X21lbXBjcHkgPSBubzsgdGhlbgogICAgSEFWRV9NRU1QQ1BZPTAKICBmaQoKICAgICAgaWYgdGVz
dCAkSEFWRV9NRU1QQ1BZID0gMDsgdGhlbgoKCgoKCgoKCiAgZ2xfTElCT0JKUz0iJGdsX0xJQk9C
SlMgbWVtcGNweS4kYWNfb2JqZXh0IgoKCiAgOgoKICAgICAgZmkKCgoKCgogICAgICAgICAgR05V
TElCX01FTVBDUFk9MQoKCgoKCiRhc19lY2hvICIjZGVmaW5lIEdOVUxJQl9URVNUX01FTVBDUFkg
MSIgPj5jb25mZGVmcy5oCgoKCiAgICAgIGdsX2dudWxpYl9lbmFibGVkX21lbXBjcHk9dHJ1ZQog
ICAgZmkKICB9CiAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX21lbXJjaHIgKCkKICB7CiAgICBpZiAh
ICRnbF9nbnVsaWJfZW5hYmxlZF9tZW1yY2hyOyB0aGVuCgoKCgoKICA6CgoKCgoKICBpZiB0ZXN0
ICRhY19jdl9oYXZlX2RlY2xfbWVtcmNociA9IG5vOyB0aGVuCiAgICBIQVZFX0RFQ0xfTUVNUkNI
Uj0wCiAgZmkKCiAgZm9yIGFjX2Z1bmMgaW4gbWVtcmNocgpkbyA6CiAgYWNfZm5fY19jaGVja19m
dW5jICIkTElORU5PIiAibWVtcmNociIgImFjX2N2X2Z1bmNfbWVtcmNociIKaWYgdGVzdCAieCRh
Y19jdl9mdW5jX21lbXJjaHIiID0geHllczsgdGhlbiA6CiAgY2F0ID4+Y29uZmRlZnMuaCA8PF9B
Q0VPRgojZGVmaW5lIEhBVkVfTUVNUkNIUiAxCl9BQ0VPRgoKZmkKZG9uZQoKCiAgICAgIGlmIHRl
c3QgJGFjX2N2X2Z1bmNfbWVtcmNociA9IG5vOyB0aGVuCgoKCgoKCgoKICBnbF9MSUJPQkpTPSIk
Z2xfTElCT0JKUyBtZW1yY2hyLiRhY19vYmpleHQiCgogICAgICAgIDoKICAgICAgZmkKCgoKCgog
ICAgICAgICAgR05VTElCX01FTVJDSFI9MQoKCgoKCiRhc19lY2hvICIjZGVmaW5lIEdOVUxJQl9U
RVNUX01FTVJDSFIgMSIgPj5jb25mZGVmcy5oCgoKCiAgICAgIGdsX2dudWxpYl9lbmFibGVkX21l
bXJjaHI9dHJ1ZQogICAgZmkKICB9CiAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX2Y2OTFmMDc2ZjY1
MDk2NGM5ZjU1OThjM2VlNDg3NjE2ICgpCiAgewogICAgaWYgISAkZ2xfZ251bGliX2VuYWJsZWRf
ZjY5MWYwNzZmNjUwOTY0YzlmNTU5OGMzZWU0ODc2MTY7IHRoZW4KCgogIDoKCgoKCgogIGlmIHRl
c3QgJGFjX2N2X2Z1bmNfX3NldF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyID0geWVzOyB0aGVu
CiAgICBIQVZFX01TVkNfSU5WQUxJRF9QQVJBTUVURVJfSEFORExFUj0xCgokYXNfZWNobyAiI2Rl
ZmluZSBIQVZFX01TVkNfSU5WQUxJRF9QQVJBTUVURVJfSEFORExFUiAxIiA+PmNvbmZkZWZzLmgK
CiAgZWxzZQogICAgSEFWRV9NU1ZDX0lOVkFMSURfUEFSQU1FVEVSX0hBTkRMRVI9MAogIGZpCgoK
ICAgICAgaWYgdGVzdCAkSEFWRV9NU1ZDX0lOVkFMSURfUEFSQU1FVEVSX0hBTkRMRVIgPSAxOyB0
aGVuCgoKCgoKCgoKICBnbF9MSUJPQkpTPSIkZ2xfTElCT0JKUyBtc3ZjLWludmFsLiRhY19vYmpl
eHQiCgogICAgICBmaQogICAgICBnbF9nbnVsaWJfZW5hYmxlZF9mNjkxZjA3NmY2NTA5NjRjOWY1
NTk4YzNlZTQ4NzYxNj10cnVlCiAgICBmaQogIH0KICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfNjc2
MjIwZmE0MzY2ZWZhOWJkYmZjY2YxMWE4NTdjMDcgKCkKICB7CiAgICBpZiAhICRnbF9nbnVsaWJf
ZW5hYmxlZF82NzYyMjBmYTQzNjZlZmE5YmRiZmNjZjExYTg1N2MwNzsgdGhlbgoKCgogICAgICBp
ZiB0ZXN0ICRIQVZFX01TVkNfSU5WQUxJRF9QQVJBTUVURVJfSEFORExFUiA9IDE7IHRoZW4KCgoK
CgoKCgogIGdsX0xJQk9CSlM9IiRnbF9MSUJPQkpTIG1zdmMtbm90aHJvdy4kYWNfb2JqZXh0IgoK
ICAgICAgZmkKICAgICAgZ2xfZ251bGliX2VuYWJsZWRfNjc2MjIwZmE0MzY2ZWZhOWJkYmZjY2Yx
MWE4NTdjMDc9dHJ1ZQogICAgICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfZjY5MWYwNzZmNjUwOTY0
YzlmNTU5OGMzZWU0ODc2MTYKICAgIGZpCiAgfQogIGZ1bmNfZ2xfZ251bGliX200Y29kZV9vcGVu
YXQgKCkKICB7CiAgICBpZiAhICRnbF9nbnVsaWJfZW5hYmxlZF9vcGVuYXQ7IHRoZW4KCgoKCiAg
OgoKCgoKCgogIGNhc2UgJGFjX2N2X2Z1bmNfb3BlbmF0KyRnbF9jdl9mdW5jX2xzdGF0X2RlcmVm
ZXJlbmNlc19zbGFzaGVkX3N5bWxpbmsgaW4KICB5ZXMrKnllcykKICAgIDs7CiAgeWVzKyopCiAg
ICAjIFNvbGFyaXMgOSBoYXMgKmF0IGZ1bmN0aW9ucywgYnV0IHVuaWZvcm1seSBtaXNoYW5kbGVz
IHRyYWlsaW5nCiAgICAjIHNsYXNoIGluIGFsbCBvZiB0aGVtLgogICAgUkVQTEFDRV9PUEVOQVQ9
MQogICAgOzsKICAqKQogICAgSEFWRV9PUEVOQVQ9MAogICAgOzsKICBlc2FjCgogICAgICBpZiB0
ZXN0ICRIQVZFX09QRU5BVCA9IDAgfHwgdGVzdCAkUkVQTEFDRV9PUEVOQVQgPSAxOyB0aGVuCgoK
CgoKCgoKICBnbF9MSUJPQkpTPSIkZ2xfTElCT0JKUyBvcGVuYXQuJGFjX29iamV4dCIKCgoKICA6
CgogICAgICBmaQoKCmNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBHTlVMSUJfT1BF
TkFUIDEKX0FDRU9GCgoKCgoKCiAgICAgICAgICBHTlVMSUJfT1BFTkFUPTEKCgoKCgokYXNfZWNo
byAiI2RlZmluZSBHTlVMSUJfVEVTVF9PUEVOQVQgMSIgPj5jb25mZGVmcy5oCgoKCiAgICAgIGds
X2dudWxpYl9lbmFibGVkX29wZW5hdD10cnVlCiAgICAgIGlmIHRlc3QgJEhBVkVfT1BFTkFUID0g
MDsgdGhlbgogICAgICAgIGZ1bmNfZ2xfZ251bGliX200Y29kZV8yNjA5NDFjMGU1ZGM2N2VjOWU4
N2QxZmIzMjFjMzAwYgogICAgICBmaQogICAgICBpZiB0ZXN0ICRIQVZFX09QRU5BVCA9IDA7IHRo
ZW4KICAgICAgICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfZG9zbmFtZQogICAgICBmaQogICAgICBp
ZiB0ZXN0ICRIQVZFX09QRU5BVCA9IDA7IHRoZW4KICAgICAgICBmdW5jX2dsX2dudWxpYl9tNGNv
ZGVfZmNoZGlyCiAgICAgIGZpCiAgICAgIGlmIHRlc3QgJEhBVkVfT1BFTkFUID0gMDsgdGhlbgog
ICAgICAgIGZ1bmNfZ2xfZ251bGliX200Y29kZV8xODQwMTI5ZDQ5MGYzYTAwYzhhMDk4MzE2ZDBm
YTM0NQogICAgICBmaQogICAgICBpZiB0ZXN0ICRIQVZFX09QRU5BVCA9IDAgfHwgdGVzdCAkUkVQ
TEFDRV9PUEVOQVQgPSAxOyB0aGVuCiAgICAgICAgZnVuY19nbF9nbnVsaWJfbTRjb2RlXzAzZTBh
YWFkNGNiODljYTc1NzY1M2JkMzY3YTZjY2I3CiAgICAgIGZpCiAgICAgIGlmIHRlc3QgJEhBVkVf
T1BFTkFUID0gMDsgdGhlbgogICAgICAgIGZ1bmNfZ2xfZ251bGliX200Y29kZV9kNDg1MDUzMjY4
OGJhMTZkNjg1ZjAzNjA3NjYxMWYyMQogICAgICBmaQogICAgZmkKICB9CiAgZnVuY19nbF9nbnVs
aWJfbTRjb2RlXzE4NDAxMjlkNDkwZjNhMDBjOGEwOTgzMTZkMGZhMzQ1ICgpCiAgewogICAgaWYg
ISAkZ2xfZ251bGliX2VuYWJsZWRfMTg0MDEyOWQ0OTBmM2EwMGM4YTA5ODMxNmQwZmEzNDU7IHRo
ZW4KICAgICAgZ2xfZ251bGliX2VuYWJsZWRfMTg0MDEyOWQ0OTBmM2EwMGM4YTA5ODMxNmQwZmEz
NDU9dHJ1ZQogICAgICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfMDNlMGFhYWQ0Y2I4OWNhNzU3NjUz
YmQzNjdhNmNjYjcKICAgIGZpCiAgfQogIGZ1bmNfZ2xfZ251bGliX200Y29kZV8wM2UwYWFhZDRj
Yjg5Y2E3NTc2NTNiZDM2N2E2Y2NiNyAoKQogIHsKICAgIGlmICEgJGdsX2dudWxpYl9lbmFibGVk
XzAzZTBhYWFkNGNiODljYTc1NzY1M2JkMzY3YTZjY2I3OyB0aGVuCiAgICAgIGdsX2dudWxpYl9l
bmFibGVkXzAzZTBhYWFkNGNiODljYTc1NzY1M2JkMzY3YTZjY2I3PXRydWUKICAgIGZpCiAgfQog
IGZ1bmNfZ2xfZ251bGliX200Y29kZV9wYXRobWF4ICgpCiAgewogICAgaWYgISAkZ2xfZ251bGli
X2VuYWJsZWRfcGF0aG1heDsgdGhlbgoKCiAgOgoKCgoKCgogICAgICBnbF9nbnVsaWJfZW5hYmxl
ZF9wYXRobWF4PXRydWUKICAgIGZpCiAgfQogIGZ1bmNfZ2xfZ251bGliX200Y29kZV8yZjU1MWE2
ODRhYWI1NDAwNjMzY2JmZDU2ZGYzYmY5NCAoKQogIHsKICAgIGlmICEgJGdsX2dudWxpYl9lbmFi
bGVkXzJmNTUxYTY4NGFhYjU0MDA2MzNjYmZkNTZkZjNiZjk0OyB0aGVuCgoKICBpZiB0ZXN0ICRn
bF9jdl9mdW5jX2ZyZXhwX25vX2xpYm0gPSB5ZXM7IHRoZW4KCgoKICA6CgoKCgoKICB7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgZnJleHAg
d29ya3MiID4mNQokYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIGZyZXhwIHdvcmtzLi4uICIg
PiY2OyB9CmlmICR7Z2xfY3ZfZnVuY19mcmV4cF93b3Jrcys6fSBmYWxzZTsgdGhlbiA6CiAgJGFz
X2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQoKICAgICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBp
bGluZyIgPSB5ZXM7IHRoZW4gOgogIGNhc2UgIiRob3N0X29zIiBpbgogICAgICAgICAgIG5ldGJz
ZCogfCBpcml4KiB8IG1pbmd3KikgZ2xfY3ZfZnVuY19mcmV4cF93b3Jrcz0iZ3Vlc3Npbmcgbm8i
OzsKICAgICAgICAgICAqKSAgICAgICAgICAgICAgICAgICAgICAgIGdsX2N2X2Z1bmNfZnJleHBf
d29ya3M9Imd1ZXNzaW5nIHllcyI7OwogICAgICAgICBlc2FjCgplbHNlCiAgY2F0IGNvbmZkZWZz
LmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCgoj
aW5jbHVkZSA8ZmxvYXQuaD4KI2luY2x1ZGUgPG1hdGguaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoj
aWYgSEFWRV9ERUNMX0FMQVJNCiMgaW5jbHVkZSA8c2lnbmFsLmg+CiMgaW5jbHVkZSA8dW5pc3Rk
Lmg+CiNlbmRpZgovKiBIUCBjYyBvbiBIUC1VWCAxMC4yMCBoYXMgYSBidWcgd2l0aCB0aGUgY29u
c3RhbnQgZXhwcmVzc2lvbiAtMC4wLgogICBJQ0MgMTAuMCBoYXMgYSBidWcgd2hlbiBvcHRpbWl6
aW5nIHRoZSBleHByZXNzaW9uIC16ZXJvLgogICBUaGUgZXhwcmVzc2lvbiAtREJMX01JTiAqIERC
TF9NSU4gZG9lcyBub3Qgd29yayB3aGVuIGNyb3NzLWNvbXBpbGluZwogICB0byBQb3dlclBDIG9u
IE1hYyBPUyBYIDEwLjUuICAqLwojaWYgZGVmaW5lZCBfX2hwdXggfHwgZGVmaW5lZCBfX3NnaSB8
fCBkZWZpbmVkIF9fSUNDCnN0YXRpYyBkb3VibGUKY29tcHV0ZV9taW51c196ZXJvICh2b2lkKQp7
CiAgcmV0dXJuIC1EQkxfTUlOICogREJMX01JTjsKfQojIGRlZmluZSBtaW51c196ZXJvIGNvbXB1
dGVfbWludXNfemVybyAoKQojZWxzZQpkb3VibGUgbWludXNfemVybyA9IC0wLjA7CiNlbmRpZgpp
bnQgbWFpbigpCnsKICBpbnQgcmVzdWx0ID0gMDsKICBpbnQgaTsKICB2b2xhdGlsZSBkb3VibGUg
eDsKICBkb3VibGUgemVybyA9IDAuMDsKI2lmIEhBVkVfREVDTF9BTEFSTQogIC8qIE5lWFRzdGVw
IDMuMyBmcmV4cCgpIHJ1bnMgaW50byBhbiBlbmRsZXNzIGxvb3Agd2hlbiBjYWxsZWQgb24gYW4g
aW5maW5pdGUKICAgICBudW1iZXIuICBMZXQgdGhlIHRlc3QgZmFpbCBpbiB0aGlzIGNhc2UuICAq
LwogIHNpZ25hbCAoU0lHQUxSTSwgU0lHX0RGTCk7CiAgYWxhcm0gKDUpOwojZW5kaWYKICAvKiBU
ZXN0IG9uIGRlbm9ybWFsaXplZCBudW1iZXJzLiAgKi8KICBmb3IgKGkgPSAxLCB4ID0gMS4wOyBp
ID49IERCTF9NSU5fRVhQOyBpLS0sIHggKj0gMC41KQogICAgOwogIGlmICh4ID4gMC4wKQogICAg
ewogICAgICBpbnQgZXhwOwogICAgICBkb3VibGUgeSA9IGZyZXhwICh4LCAmZXhwKTsKICAgICAg
LyogT24gbWFjaGluZXMgd2l0aCBJRUVFNzU0IGFyaXRobWV0aWM6IHggPSAxLjExMjU0ZS0zMDgs
IGV4cCA9IC0xMDIyLgogICAgICAgICBPbiBOZXRCU0Q6IHkgPSAwLjc1LiBDb3JyZWN0OiB5ID0g
MC41LiAgKi8KICAgICAgaWYgKHkgIT0gMC41KQogICAgICAgIHJlc3VsdCB8PSAxOwogICAgfQog
IC8qIFRlc3Qgb24gaW5maW5pdGUgbnVtYmVycy4gICovCiAgeCA9IDEuMCAvIHplcm87CiAgewog
ICAgaW50IGV4cDsKICAgIGRvdWJsZSB5ID0gZnJleHAgKHgsICZleHApOwogICAgaWYgKHkgIT0g
eCkKICAgICAgcmVzdWx0IHw9IDI7CiAgfQogIC8qIFRlc3Qgb24gbmVnYXRpdmUgemVyby4gICov
CiAgeCA9IG1pbnVzX3plcm87CiAgewogICAgaW50IGV4cDsKICAgIGRvdWJsZSB5ID0gZnJleHAg
KHgsICZleHApOwogICAgaWYgKG1lbWNtcCAoJnksICZ4LCBzaXplb2YgeCkpCiAgICAgIHJlc3Vs
dCB8PSA0OwogIH0KICByZXR1cm4gcmVzdWx0Owp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9ydW4g
IiRMSU5FTk8iOyB0aGVuIDoKICBnbF9jdl9mdW5jX2ZyZXhwX3dvcmtzPXllcwplbHNlCiAgZ2xf
Y3ZfZnVuY19mcmV4cF93b3Jrcz1ubwpmaQpybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0
LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCiAgY29uZnRlc3QuJGFjX29i
amV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKZmkKCgpmaQp7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2X2Z1bmNfZnJleHBfd29y
a3MiID4mNQokYXNfZWNobyAiJGdsX2N2X2Z1bmNfZnJleHBfd29ya3MiID4mNjsgfQoKICAgIGNh
c2UgIiRnbF9jdl9mdW5jX2ZyZXhwX3dvcmtzIiBpbgogICAgICAqeWVzKQoKJGFzX2VjaG8gIiNk
ZWZpbmUgSEFWRV9GUkVYUF9JTl9MSUJDIDEiID4+Y29uZmRlZnMuaAoKICAgICAgICA7OwogICAg
ZXNhYwogIGZpCgogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl
Y2tpbmcgd2hldGhlciBsZGV4cCBjYW4gYmUgdXNlZCB3aXRob3V0IGxpbmtpbmcgd2l0aCBsaWJt
IiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBsZGV4cCBjYW4gYmUgdXNlZCB3aXRo
b3V0IGxpbmtpbmcgd2l0aCBsaWJtLi4uICIgPiY2OyB9CmlmICR7Z2xfY3ZfZnVuY19sZGV4cF9u
b19saWJtKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNl
CgogICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVu
ZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPG1hdGguaD4KICAgICAgICAgICAgIGRvdWJsZSB4
OwogICAgICAgICAgICAgaW50IHk7CmludAptYWluICgpCnsKcmV0dXJuIGxkZXhwICh4LCB5KSA8
IDE7CiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5P
IjsgdGhlbiA6CiAgZ2xfY3ZfZnVuY19sZGV4cF9ub19saWJtPXllcwplbHNlCiAgZ2xfY3ZfZnVu
Y19sZGV4cF9ub19saWJtPW5vCmZpCnJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRh
Y19vYmpleHQgXAogICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKCmZpCnsg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfZnVu
Y19sZGV4cF9ub19saWJtIiA+JjUKJGFzX2VjaG8gIiRnbF9jdl9mdW5jX2xkZXhwX25vX2xpYm0i
ID4mNjsgfQogIGlmIHRlc3QgJGdsX2N2X2Z1bmNfbGRleHBfbm9fbGlibSA9IHllczsgdGhlbgoK
JGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9MREVYUF9JTl9MSUJDIDEiID4+Y29uZmRlZnMuaAoKICBm
aQoKICAgICAgZ2xfZ251bGliX2VuYWJsZWRfMmY1NTFhNjg0YWFiNTQwMDYzM2NiZmQ1NmRmM2Jm
OTQ9dHJ1ZQogICAgZmkKICB9CiAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX2JiYTYzOWYwY2ZkNjU4
NTQwZDcxNmYzYTJiYTVlNjhmICgpCiAgewogICAgaWYgISAkZ2xfZ251bGliX2VuYWJsZWRfYmJh
NjM5ZjBjZmQ2NTg1NDBkNzE2ZjNhMmJhNWU2OGY7IHRoZW4KCgoKCgogIHsgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBmcmV4cGwoKSBjYW4g
YmUgdXNlZCB3aXRob3V0IGxpbmtpbmcgd2l0aCBsaWJtIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tp
bmcgd2hldGhlciBmcmV4cGwoKSBjYW4gYmUgdXNlZCB3aXRob3V0IGxpbmtpbmcgd2l0aCBsaWJt
Li4uICIgPiY2OyB9CmlmICR7Z2xfY3ZfZnVuY19mcmV4cGxfbm9fbGlibSs6fSBmYWxzZTsgdGhl
biA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQoKICAgICAgY2F0IGNvbmZkZWZz
LmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCiNp
bmNsdWRlIDxtYXRoLmg+CiAgICAgICAgICAgICBsb25nIGRvdWJsZSB4OwppbnQKbWFpbiAoKQp7
CmludCBlOyByZXR1cm4gZnJleHBsICh4LCAmZSkgPiAwOwogIDsKICByZXR1cm4gMDsKfQpfQUNF
T0YKaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgogIGdsX2N2X2Z1bmNfZnJl
eHBsX25vX2xpYm09eWVzCmVsc2UKICBnbF9jdl9mdW5jX2ZyZXhwbF9ub19saWJtPW5vCmZpCnJt
IC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAogICAgY29uZnRlc3Qk
YWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfZnVuY19mcmV4cGxfbm9fbGlibSIgPiY1CiRh
c19lY2hvICIkZ2xfY3ZfZnVuY19mcmV4cGxfbm9fbGlibSIgPiY2OyB9CgogIGlmIHRlc3QgJGds
X2N2X2Z1bmNfZnJleHBsX25vX2xpYm0gPSB5ZXM7IHRoZW4KCgogICAgIHsgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBmcmV4cGwgd29ya3Mi
ID4mNQokYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIGZyZXhwbCB3b3Jrcy4uLiAiID4mNjsg
fQppZiAke2dsX2N2X2Z1bmNfZnJleHBsX3dvcmtzKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNo
b19uICIoY2FjaGVkKSAiID4mNgplbHNlCgogICAgICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5n
IiA9IHllczsgdGhlbiA6CgogICAgICAgICBjYXNlICIkaG9zdF9vcyIgaW4KICAgICAgICAgICBh
aXggfCBhaXhbMy02XSogfCBiZW9zKiB8IGRhcndpbiogfCBpcml4KiB8IG1pbmd3KiB8IHB3KikK
ICAgICAgICAgICAgICBnbF9jdl9mdW5jX2ZyZXhwbF93b3Jrcz0iZ3Vlc3Npbmcgbm8iOzsKICAg
ICAgICAgICAqKSBnbF9jdl9mdW5jX2ZyZXhwbF93b3Jrcz0iZ3Vlc3NpbmcgeWVzIjs7CiAgICAg
ICAgIGVzYWMKCmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNf
ZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCiNpbmNsdWRlIDxmbG9hdC5oPgojaW5jbHVkZSA8
bWF0aC5oPgovKiBPdmVycmlkZSB0aGUgdmFsdWVzIG9mIDxmbG9hdC5oPiwgbGlrZSBkb25lIGlu
IGZsb2F0LmluLmguICAqLwojaWYgZGVmaW5lZCBfX2kzODZfXyAmJiAoZGVmaW5lZCBfX0JFT1Nf
XyB8fCBkZWZpbmVkIF9fT3BlbkJTRF9fKQojIHVuZGVmIExEQkxfTUlOX0VYUAojIGRlZmluZSBM
REJMX01JTl9FWFAgICAgKC0xNjM4MSkKI2VuZGlmCiNpZiBkZWZpbmVkIF9faTM4Nl9fICYmIGRl
ZmluZWQgX19GcmVlQlNEX18KIyB1bmRlZiBMREJMX01JTl9FWFAKIyBkZWZpbmUgTERCTF9NSU5f
RVhQICAgICgtMTYzODEpCiNlbmRpZgojaWYgKGRlZmluZWQgX0FSQ0hfUFBDIHx8IGRlZmluZWQg
X1BPV0VSKSAmJiBkZWZpbmVkIF9BSVggJiYgKExEQkxfTUFOVF9ESUcgPT0gMTA2KSAmJiBkZWZp
bmVkIF9fR05VQ19fCiMgdW5kZWYgTERCTF9NSU5fRVhQCiMgZGVmaW5lIExEQkxfTUlOX0VYUCBE
QkxfTUlOX0VYUAojZW5kaWYKI2lmIGRlZmluZWQgX19zZ2kgJiYgKExEQkxfTUFOVF9ESUcgPj0g
MTA2KQojIGlmIGRlZmluZWQgX19HTlVDX18KIyAgdW5kZWYgTERCTF9NSU5fRVhQCiMgIGRlZmlu
ZSBMREJMX01JTl9FWFAgREJMX01JTl9FWFAKIyBlbmRpZgojZW5kaWYKZXh0ZXJuCiNpZmRlZiBf
X2NwbHVzcGx1cwoiQyIKI2VuZGlmCmxvbmcgZG91YmxlIGZyZXhwbCAobG9uZyBkb3VibGUsIGlu
dCAqKTsKaW50IG1haW4oKQp7CiAgaW50IHJlc3VsdCA9IDA7CiAgdm9sYXRpbGUgbG9uZyBkb3Vi
bGUgeDsKICAvKiBUZXN0IG9uIGZpbml0ZSBudW1iZXJzIHRoYXQgZmFpbHMgb24gQUlYIDUuMS4g
ICovCiAgeCA9IDE2LjBMOwogIHsKICAgIGludCBleHAgPSAtOTk5OTsKICAgIGZyZXhwbCAoeCwg
JmV4cCk7CiAgICBpZiAoZXhwICE9IDUpCiAgICAgIHJlc3VsdCB8PSAxOwogIH0KICAvKiBUZXN0
IG9uIGZpbml0ZSBudW1iZXJzIHRoYXQgZmFpbHMgb24gTWFjIE9TIFggMTAuNCwgYmVjYXVzZSBp
dHMgZnJleHBsCiAgICAgZnVuY3Rpb24gcmV0dXJucyBhbiBpbnZhbGlkIChpbmNvcnJlY3RseSBu
b3JtYWxpemVkKSB2YWx1ZTogaXQgcmV0dXJucwogICAgICAgICAgICAgICB5ID0geyAweDNmZTAy
OGY1LCAweGMyOGY1YzI4LCAweDNjOWViODUxLCAweGViODUxZWI4IH0KICAgICBidXQgdGhlIGNv
cnJlY3QgcmVzdWx0IGlzCiAgICAgICAgICAwLjUwNUwgPSB7IDB4M2ZlMDI4ZjUsIDB4YzI4ZjVj
MjksIDB4YmM1NDdhZTEsIDB4NDdhZTE0ODAgfSAgKi8KICB4ID0gMS4wMUw7CiAgewogICAgaW50
IGV4cCA9IC05OTk5OwogICAgbG9uZyBkb3VibGUgeSA9IGZyZXhwbCAoeCwgJmV4cCk7CiAgICBp
ZiAoIShleHAgPT0gMSAmJiB5ID09IDAuNTA1TCkpCiAgICAgIHJlc3VsdCB8PSAyOwogIH0KICAv
KiBUZXN0IG9uIGxhcmdlIGZpbml0ZSBudW1iZXJzLiAgVGhpcyBmYWlscyBvbiBCZU9TIGF0IGkg
PSAxNjMyMiwgd2hpbGUKICAgICBMREJMX01BWF9FWFAgPSAxNjM4NC4KICAgICBJbiB0aGUgbG9v
cCBlbmQgdGVzdCwgd2UgdGVzdCB4IGFnYWluc3QgSW5maW5pdHksIHJhdGhlciB0aGFuIGNvbXBh
cmluZwogICAgIGkgd2l0aCBMREJMX01BWF9FWFAsIGJlY2F1c2UgQmVPUyA8ZmxvYXQuaD4gaGFz
IGEgd3JvbmcgTERCTF9NQVhfRVhQLiAgKi8KICB7CiAgICBpbnQgaTsKICAgIGZvciAoaSA9IDEs
IHggPSAxLjBMOyB4ICE9IHggKyB4OyBpKyssIHggKj0gMi4wTCkKICAgICAgewogICAgICAgIGlu
dCBleHAgPSAtOTk5OTsKICAgICAgICBmcmV4cGwgKHgsICZleHApOwogICAgICAgIGlmIChleHAg
IT0gaSkKICAgICAgICAgIHsKICAgICAgICAgICAgcmVzdWx0IHw9IDQ7CiAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgfQogICAgICB9CiAgfQogIC8qIFRlc3Qgb24gZGVub3JtYWxpemVkIG51
bWJlcnMuICAqLwogIHsKICAgIGludCBpOwogICAgZm9yIChpID0gMSwgeCA9IDEuMEw7IGkgPj0g
TERCTF9NSU5fRVhQOyBpLS0sIHggKj0gMC41TCkKICAgICAgOwogICAgaWYgKHggPiAwLjBMKQog
ICAgICB7CiAgICAgICAgaW50IGV4cDsKICAgICAgICBsb25nIGRvdWJsZSB5ID0gZnJleHBsICh4
LCAmZXhwKTsKICAgICAgICAvKiBPbiBtYWNoaW5lcyB3aXRoIElFRUU4NTQgYXJpdGhtZXRpYzog
eCA9IDEuNjgxMDVlLTQ5MzIsCiAgICAgICAgICAgZXhwID0gLTE2MzgyLCB5ID0gMC41LiAgT24g
TWFjIE9TIFggMTAuNTogZXhwID0gLTE2Mzg0LCB5ID0gMC41LiAgKi8KICAgICAgICBpZiAoZXhw
ICE9IExEQkxfTUlOX0VYUCAtIDEpCiAgICAgICAgICByZXN1bHQgfD0gODsKICAgICAgfQogIH0K
ICAvKiBUZXN0IG9uIGluZmluaXRlIG51bWJlcnMuICAqLwogIHggPSAxLjBMIC8gMC4wTDsKICB7
CiAgICBpbnQgZXhwOwogICAgbG9uZyBkb3VibGUgeSA9IGZyZXhwbCAoeCwgJmV4cCk7CiAgICBp
ZiAoeSAhPSB4KQogICAgICByZXN1bHQgfD0gMTY7CiAgfQogIHJldHVybiByZXN1bHQ7Cn0KX0FD
RU9GCmlmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgogIGdsX2N2X2Z1bmNfZnJl
eHBsX3dvcmtzPXllcwplbHNlCiAgZ2xfY3ZfZnVuY19mcmV4cGxfd29ya3M9bm8KZmkKcm0gLWYg
Y29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19l
eGVleHQgXAogIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNf
ZXh0CmZpCgoKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1
bHQ6ICRnbF9jdl9mdW5jX2ZyZXhwbF93b3JrcyIgPiY1CiRhc19lY2hvICIkZ2xfY3ZfZnVuY19m
cmV4cGxfd29ya3MiID4mNjsgfQoKICAgIGNhc2UgIiRnbF9jdl9mdW5jX2ZyZXhwbF93b3JrcyIg
aW4KICAgICAgKnllcykgZ2xfZnVuY19mcmV4cGxfbm9fbGlibT15ZXMgOzsKICAgICAgKikgICAg
Z2xfZnVuY19mcmV4cGxfbm9fbGlibT1ubzsgUkVQTEFDRV9GUkVYUEw9MSA7OwogICAgZXNhYwog
IGVsc2UKICAgIGdsX2Z1bmNfZnJleHBsX25vX2xpYm09bm8KICAgICAgICBSRVBMQUNFX0ZSRVhQ
TD0xCiAgZmkKICBpZiB0ZXN0ICRnbF9mdW5jX2ZyZXhwbF9ub19saWJtID0geWVzOyB0aGVuCgok
YXNfZWNobyAiI2RlZmluZSBIQVZFX0ZSRVhQTF9JTl9MSUJDIDEiID4+Y29uZmRlZnMuaAoKICAg
ICAgICAgICAgYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAiZnJleHBsIiAiYWNfY3ZfaGF2
ZV9kZWNsX2ZyZXhwbCIgIiNpbmNsdWRlIDxtYXRoLmg+CiIKaWYgdGVzdCAieCRhY19jdl9oYXZl
X2RlY2xfZnJleHBsIiA9IHh5ZXM7IHRoZW4gOgoKZWxzZQogIEhBVkVfREVDTF9GUkVYUEw9MApm
aQoKICBmaQoKCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVj
a2luZyB3aGV0aGVyIGxkZXhwbCgpIGNhbiBiZSB1c2VkIHdpdGhvdXQgbGlua2luZyB3aXRoIGxp
Ym0iID4mNQokYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIGxkZXhwbCgpIGNhbiBiZSB1c2Vk
IHdpdGhvdXQgbGlua2luZyB3aXRoIGxpYm0uLi4gIiA+JjY7IH0KaWYgJHtnbF9jdl9mdW5jX2xk
ZXhwbF9ub19saWJtKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4m
NgplbHNlCgogICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0
Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KI2luY2x1ZGUgPG1hdGguaD4KICAgICAgICAgICAgIGxv
bmcgZG91YmxlIHg7CmludAptYWluICgpCnsKcmV0dXJuIGxkZXhwbCAoeCwgLTEpID4gMDsKICA7
CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVu
IDoKICBnbF9jdl9mdW5jX2xkZXhwbF9ub19saWJtPXllcwplbHNlCiAgZ2xfY3ZfZnVuY19sZGV4
cGxfbm9fbGlibT1ubwpmaQpybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2Jq
ZXh0IFwKICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CgpmaQp7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2X2Z1bmNfbGRl
eHBsX25vX2xpYm0iID4mNQokYXNfZWNobyAiJGdsX2N2X2Z1bmNfbGRleHBsX25vX2xpYm0iID4m
NjsgfQoKICBpZiB0ZXN0ICRnbF9jdl9mdW5jX2xkZXhwbF9ub19saWJtID0geWVzOyB0aGVuCgoK
ICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdo
ZXRoZXIgbGRleHBsIHdvcmtzIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBsZGV4
cGwgd29ya3MuLi4gIiA+JjY7IH0KaWYgJHtnbF9jdl9mdW5jX2xkZXhwbF93b3Jrcys6fSBmYWxz
ZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQoKICAgICAgaWYgdGVz
dCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgoKICAgICAgICAgY2FzZSAiJGhvc3Rf
b3MiIGluCiAgICAgICAgICAgYWl4IHwgYWl4WzMtNl0qKSBnbF9jdl9mdW5jX2xkZXhwbF93b3Jr
cz0iZ3Vlc3Npbmcgbm8iOzsKICAgICAgICAgICAqKSAgICAgICAgICAgICAgIGdsX2N2X2Z1bmNf
bGRleHBsX3dvcmtzPSJndWVzc2luZyB5ZXMiOzsKICAgICAgICAgZXNhYwoKZWxzZQogIGNhdCBj
b25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmgu
ICAqLwoKI2luY2x1ZGUgPG1hdGguaD4KZXh0ZXJuCiNpZmRlZiBfX2NwbHVzcGx1cwoiQyIKI2Vu
ZGlmCmxvbmcgZG91YmxlIGxkZXhwbCAobG9uZyBkb3VibGUsIGludCk7CmludCBtYWluKCkKewog
IGludCByZXN1bHQgPSAwOwogIHsKICAgIHZvbGF0aWxlIGxvbmcgZG91YmxlIHggPSAxLjA7CiAg
ICB2b2xhdGlsZSBsb25nIGRvdWJsZSB5ID0gbGRleHBsICh4LCAtMSk7CiAgICBpZiAoeSAhPSAw
LjVMKQogICAgICByZXN1bHQgfD0gMTsKICB9CiAgewogICAgdm9sYXRpbGUgbG9uZyBkb3VibGUg
eCA9IDEuNzMyMDVMOwogICAgdm9sYXRpbGUgbG9uZyBkb3VibGUgeSA9IGxkZXhwbCAoeCwgMCk7
CiAgICBpZiAoeSAhPSB4KQogICAgICByZXN1bHQgfD0gMjsKICB9CiAgcmV0dXJuIHJlc3VsdDsK
fQpfQUNFT0YKaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CiAgZ2xfY3ZfZnVu
Y19sZGV4cGxfd29ya3M9eWVzCmVsc2UKICBnbF9jdl9mdW5jX2xkZXhwbF93b3Jrcz1ubwpmaQpy
bSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0
JGFjX2V4ZWV4dCBcCiAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0
LiRhY19leHQKZmkKCgpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IHJlc3VsdDogJGdsX2N2X2Z1bmNfbGRleHBsX3dvcmtzIiA+JjUKJGFzX2VjaG8gIiRnbF9jdl9m
dW5jX2xkZXhwbF93b3JrcyIgPiY2OyB9CgogICAgY2FzZSAiJGdsX2N2X2Z1bmNfbGRleHBsX3dv
cmtzIiBpbgogICAgICAqeWVzKQoKJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9MREVYUExfSU5fTElC
QyAxIiA+PmNvbmZkZWZzLmgKCiAgICAgICAgICAgICAgICAgICAgICAgIGFjX2ZuX2NfY2hlY2tf
ZGVjbCAiJExJTkVOTyIgImxkZXhwbCIgImFjX2N2X2hhdmVfZGVjbF9sZGV4cGwiICIjaW5jbHVk
ZSA8bWF0aC5oPgoiCmlmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX2xkZXhwbCIgPSB4eWVzOyB0
aGVuIDoKCmVsc2UKICBIQVZFX0RFQ0xfTERFWFBMPTAKZmkKCiAgICAgICAgOzsKICAgIGVzYWMK
ICBmaQoKICAgICAgZ2xfZ251bGliX2VuYWJsZWRfYmJhNjM5ZjBjZmQ2NTg1NDBkNzE2ZjNhMmJh
NWU2OGY9dHJ1ZQogICAgICBpZiB0ZXN0ICRIQVZFX1NBTUVfTE9OR19ET1VCTEVfQVNfRE9VQkxF
ID0gMDsgdGhlbgogICAgICAgIGZ1bmNfZ2xfZ251bGliX200Y29kZV9mcHVjdwogICAgICBmaQog
ICAgICBpZiB0ZXN0ICRIQVZFX1NBTUVfTE9OR19ET1VCTEVfQVNfRE9VQkxFID0gMDsgdGhlbgog
ICAgICAgIGZ1bmNfZ2xfZ251bGliX200Y29kZV9tYXRoCiAgICAgIGZpCiAgICAgIGlmIHRlc3Qg
JEhBVkVfU0FNRV9MT05HX0RPVUJMRV9BU19ET1VCTEUgPSAxOyB0aGVuCiAgICAgICAgZnVuY19n
bF9nbnVsaWJfbTRjb2RlXzJmNTUxYTY4NGFhYjU0MDA2MzNjYmZkNTZkZjNiZjk0CiAgICAgIGZp
CiAgICBmaQogIH0KICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfcmFpc2UgKCkKICB7CiAgICBpZiAh
ICRnbF9nbnVsaWJfZW5hYmxlZF9yYWlzZTsgdGhlbgoKCgoKICBmb3IgYWNfZnVuYyBpbiByYWlz
ZQpkbyA6CiAgYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAicmFpc2UiICJhY19jdl9mdW5j
X3JhaXNlIgppZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfcmFpc2UiID0geHllczsgdGhlbiA6CiAgY2F0
ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5lIEhBVkVfUkFJU0UgMQpfQUNFT0YKCmZpCmRv
bmUKCiAgaWYgdGVzdCAkYWNfY3ZfZnVuY19yYWlzZSA9IG5vOyB0aGVuCiAgICBIQVZFX1JBSVNF
PTAKICBlbHNlCiAgICBpZiB0ZXN0ICRIQVZFX01TVkNfSU5WQUxJRF9QQVJBTUVURVJfSEFORExF
UiA9IDE7IHRoZW4KICAgICAgUkVQTEFDRV9SQUlTRT0xCiAgICBmaQoKCgoKICBpZiB0ZXN0ICRn
bF9jdl90eXBlX3NpZ3NldF90ID0geWVzOyB0aGVuCiAgICBhY19mbl9jX2NoZWNrX2Z1bmMgIiRM
SU5FTk8iICJzaWdwcm9jbWFzayIgImFjX2N2X2Z1bmNfc2lncHJvY21hc2siCmlmIHRlc3QgIngk
YWNfY3ZfZnVuY19zaWdwcm9jbWFzayIgPSB4eWVzOyB0aGVuIDoKICBnbF9jdl9mdW5jX3NpZ3By
b2NtYXNrPTEKZmkKCiAgZmkKICBpZiB0ZXN0IC16ICIkZ2xfY3ZfZnVuY19zaWdwcm9jbWFzayI7
IHRoZW4KICAgIEhBVkVfUE9TSVhfU0lHTkFMQkxPQ0tJTkc9MAogIGZpCgogICAgICBpZiB0ZXN0
ICRIQVZFX1BPU0lYX1NJR05BTEJMT0NLSU5HID0gMDsgdGhlbgogICAgICAgIDoKICAgICAgZmkK
CiAgZmkKCiAgICAgIGlmIHRlc3QgJEhBVkVfUkFJU0UgPSAwIHx8IHRlc3QgJFJFUExBQ0VfUkFJ
U0UgPSAxOyB0aGVuCgoKCgoKCgoKICBnbF9MSUJPQkpTPSIkZ2xfTElCT0JKUyByYWlzZS4kYWNf
b2JqZXh0IgoKICAgICAgICA6CiAgICAgIGZpCgoKCgoKICAgICAgICAgIEdOVUxJQl9SQUlTRT0x
CgoKCgoKJGFzX2VjaG8gIiNkZWZpbmUgR05VTElCX1RFU1RfUkFJU0UgMSIgPj5jb25mZGVmcy5o
CgoKCiAgICAgIGdsX2dudWxpYl9lbmFibGVkX3JhaXNlPXRydWUKICAgICAgaWYgdGVzdCAkSEFW
RV9SQUlTRSA9IDAgfHwgdGVzdCAkUkVQTEFDRV9SQUlTRSA9IDE7IHRoZW4KICAgICAgICBmdW5j
X2dsX2dudWxpYl9tNGNvZGVfZjY5MWYwNzZmNjUwOTY0YzlmNTU5OGMzZWU0ODc2MTYKICAgICAg
ZmkKICAgIGZpCiAgfQogIGZ1bmNfZ2xfZ251bGliX200Y29kZV9yZWFkZGlyICgpCiAgewogICAg
aWYgISAkZ2xfZ251bGliX2VuYWJsZWRfcmVhZGRpcjsgdGhlbgoKCgogIGZvciBhY19mdW5jIGlu
IHJlYWRkaXIKZG8gOgogIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgInJlYWRkaXIiICJh
Y19jdl9mdW5jX3JlYWRkaXIiCmlmIHRlc3QgIngkYWNfY3ZfZnVuY19yZWFkZGlyIiA9IHh5ZXM7
IHRoZW4gOgogIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBIQVZFX1JFQURESVIg
MQpfQUNFT0YKCmZpCmRvbmUKCiAgaWYgdGVzdCAkYWNfY3ZfZnVuY19yZWFkZGlyID0gbm87IHRo
ZW4KICAgIEhBVkVfUkVBRERJUj0wCiAgZmkKCiAgICAgIGlmIHRlc3QgJEhBVkVfUkVBRERJUiA9
IDA7IHRoZW4KCgoKCgoKCgogIGdsX0xJQk9CSlM9IiRnbF9MSUJPQkpTIHJlYWRkaXIuJGFjX29i
amV4dCIKCiAgICAgIGZpCgoKCgoKICAgICAgICAgIEdOVUxJQl9SRUFERElSPTEKCgoKCgokYXNf
ZWNobyAiI2RlZmluZSBHTlVMSUJfVEVTVF9SRUFERElSIDEiID4+Y29uZmRlZnMuaAoKCgogICAg
ICBnbF9nbnVsaWJfZW5hYmxlZF9yZWFkZGlyPXRydWUKICAgIGZpCiAgfQogIGZ1bmNfZ2xfZ251
bGliX200Y29kZV82MWJjYWNhNzZiM2U2ZjlhZTU1ZDU3YTFjMzE5M2JjNCAoKQogIHsKICAgIGlm
ICEgJGdsX2dudWxpYl9lbmFibGVkXzYxYmNhY2E3NmIzZTZmOWFlNTVkNTdhMWMzMTkzYmM0OyB0
aGVuCgoKCiAgaWYgdGVzdCAkZ2xfY3ZfZnVuY19tYWxsb2NfcG9zaXggPSB5ZXM7IHRoZW4KCiRh
c19lY2hvICIjZGVmaW5lIEhBVkVfUkVBTExPQ19QT1NJWCAxIiA+PmNvbmZkZWZzLmgKCiAgZWxz
ZQogICAgUkVQTEFDRV9SRUFMTE9DPTEKICBmaQoKICAgICAgaWYgdGVzdCAkUkVQTEFDRV9SRUFM
TE9DID0gMTsgdGhlbgoKCgoKCgoKCiAgZ2xfTElCT0JKUz0iJGdsX0xJQk9CSlMgcmVhbGxvYy4k
YWNfb2JqZXh0IgoKICAgICAgZmkKCgoKCgogICAgICAgICAgR05VTElCX1JFQUxMT0NfUE9TSVg9
MQoKCgoKCiRhc19lY2hvICIjZGVmaW5lIEdOVUxJQl9URVNUX1JFQUxMT0NfUE9TSVggMSIgPj5j
b25mZGVmcy5oCgoKCiAgICAgIGdsX2dudWxpYl9lbmFibGVkXzYxYmNhY2E3NmIzZTZmOWFlNTVk
NTdhMWMzMTkzYmM0PXRydWUKICAgIGZpCiAgfQogIGZ1bmNfZ2xfZ251bGliX200Y29kZV9yZXdp
bmRkaXIgKCkKICB7CiAgICBpZiAhICRnbF9nbnVsaWJfZW5hYmxlZF9yZXdpbmRkaXI7IHRoZW4K
CgoKICBmb3IgYWNfZnVuYyBpbiByZXdpbmRkaXIKZG8gOgogIGFjX2ZuX2NfY2hlY2tfZnVuYyAi
JExJTkVOTyIgInJld2luZGRpciIgImFjX2N2X2Z1bmNfcmV3aW5kZGlyIgppZiB0ZXN0ICJ4JGFj
X2N2X2Z1bmNfcmV3aW5kZGlyIiA9IHh5ZXM7IHRoZW4gOgogIGNhdCA+PmNvbmZkZWZzLmggPDxf
QUNFT0YKI2RlZmluZSBIQVZFX1JFV0lORERJUiAxCl9BQ0VPRgoKZmkKZG9uZQoKICBpZiB0ZXN0
ICRhY19jdl9mdW5jX3Jld2luZGRpciA9IG5vOyB0aGVuCiAgICBIQVZFX1JFV0lORERJUj0wCiAg
ZmkKCiAgICAgIGlmIHRlc3QgJEhBVkVfUkVXSU5ERElSID0gMDsgdGhlbgoKCgoKCgoKCiAgZ2xf
TElCT0JKUz0iJGdsX0xJQk9CSlMgcmV3aW5kZGlyLiRhY19vYmpleHQiCgogICAgICBmaQoKCgoK
CiAgICAgICAgICBHTlVMSUJfUkVXSU5ERElSPTEKCgoKCgokYXNfZWNobyAiI2RlZmluZSBHTlVM
SUJfVEVTVF9SRVdJTkRESVIgMSIgPj5jb25mZGVmcy5oCgoKCiAgICAgIGdsX2dudWxpYl9lbmFi
bGVkX3Jld2luZGRpcj10cnVlCiAgICBmaQogIH0KICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfZDQ4
NTA1MzI2ODhiYTE2ZDY4NWYwMzYwNzY2MTFmMjEgKCkKICB7CiAgICBpZiAhICRnbF9nbnVsaWJf
ZW5hYmxlZF9kNDg1MDUzMjY4OGJhMTZkNjg1ZjAzNjA3NjYxMWYyMTsgdGhlbgoKCiAgOgoKCgoK
CgogICAgICBnbF9nbnVsaWJfZW5hYmxlZF9kNDg1MDUzMjY4OGJhMTZkNjg1ZjAzNjA3NjYxMWYy
MT10cnVlCiAgICAgIGZ1bmNfZ2xfZ251bGliX200Y29kZV84MTk4ZGFhZTI2MWI5MzJkNjRhOTk4
Zjg1ODZmNTAwNQogICAgICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfY2xvZXhlYwogICAgICBmdW5j
X2dsX2dudWxpYl9tNGNvZGVfZmNoZGlyCiAgICAgIGZ1bmNfZ2xfZ251bGliX200Y29kZV8zZDA5
NGVmNTQyYmZkZDIzOGE1MTk0ZTE3MmJmZTVmNgogICAgZmkKICB9CiAgZnVuY19nbF9nbnVsaWJf
bTRjb2RlX3NlY3VyZV9nZXRlbnYgKCkKICB7CiAgICBpZiAhICRnbF9nbnVsaWJfZW5hYmxlZF9z
ZWN1cmVfZ2V0ZW52OyB0aGVuCgoKCgoKICA6CgoKCgoKICBpZiB0ZXN0ICRhY19jdl9mdW5jX3Nl
Y3VyZV9nZXRlbnYgPSBubzsgdGhlbgogICAgSEFWRV9TRUNVUkVfR0VURU5WPTAKICBmaQoKICAg
ICAgaWYgdGVzdCAkSEFWRV9TRUNVUkVfR0VURU5WID0gMDsgdGhlbgoKCgoKCgoKCiAgZ2xfTElC
T0JKUz0iJGdsX0xJQk9CSlMgc2VjdXJlX2dldGVudi4kYWNfb2JqZXh0IgoKCiAgZm9yIGFjX2Z1
bmMgaW4gX19zZWN1cmVfZ2V0ZW52CmRvIDoKICBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8i
ICJfX3NlY3VyZV9nZXRlbnYiICJhY19jdl9mdW5jX19fc2VjdXJlX2dldGVudiIKaWYgdGVzdCAi
eCRhY19jdl9mdW5jX19fc2VjdXJlX2dldGVudiIgPSB4eWVzOyB0aGVuIDoKICBjYXQgPj5jb25m
ZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgSEFWRV9fX1NFQ1VSRV9HRVRFTlYgMQpfQUNFT0YKCmZp
CmRvbmUKCiAgaWYgdGVzdCAkYWNfY3ZfZnVuY19fX3NlY3VyZV9nZXRlbnYgPSBubzsgdGhlbgog
ICAgZm9yIGFjX2Z1bmMgaW4gaXNzZXR1Z2lkCmRvIDoKICBhY19mbl9jX2NoZWNrX2Z1bmMgIiRM
SU5FTk8iICJpc3NldHVnaWQiICJhY19jdl9mdW5jX2lzc2V0dWdpZCIKaWYgdGVzdCAieCRhY19j
dl9mdW5jX2lzc2V0dWdpZCIgPSB4eWVzOyB0aGVuIDoKICBjYXQgPj5jb25mZGVmcy5oIDw8X0FD
RU9GCiNkZWZpbmUgSEFWRV9JU1NFVFVHSUQgMQpfQUNFT0YKCmZpCmRvbmUKCiAgZmkKCiAgICAg
IGZpCgoKCgoKICAgICAgICAgIEdOVUxJQl9TRUNVUkVfR0VURU5WPTEKCgoKCgokYXNfZWNobyAi
I2RlZmluZSBHTlVMSUJfVEVTVF9TRUNVUkVfR0VURU5WIDEiID4+Y29uZmRlZnMuaAoKCgogICAg
ICBnbF9nbnVsaWJfZW5hYmxlZF9zZWN1cmVfZ2V0ZW52PXRydWUKICAgIGZpCiAgfQogIGZ1bmNf
Z2xfZ251bGliX200Y29kZV9zaWduYml0ICgpCiAgewogICAgaWYgISAkZ2xfZ251bGliX2VuYWJs
ZWRfc2lnbmJpdDsgdGhlbgoKCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBjaGVja2luZyBmb3Igc2lnbmJpdCBtYWNybyIgPiY1CiRhc19lY2hvX24gImNoZWNr
aW5nIGZvciBzaWduYml0IG1hY3JvLi4uICIgPiY2OyB9CmlmICR7Z2xfY3ZfZnVuY19zaWduYml0
Kzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCgogICAg
ICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CiAgY2FzZSAiJGhvc3Rf
b3MiIGluCiAgICAgICAgICAgICAgICAgICAjIEd1ZXNzIHllcyBvbiBnbGliYyBzeXN0ZW1zLgog
ICAgICAgICAgICotZ251KikgZ2xfY3ZfZnVuY19zaWduYml0PSJndWVzc2luZyB5ZXMiIDs7CiAg
ICAgICAgICAgICAgICAgICAjIElmIHdlIGRvbid0IGtub3csIGFzc3VtZSB0aGUgd29yc3QuCiAg
ICAgICAgICAgKikgICAgICBnbF9jdl9mdW5jX3NpZ25iaXQ9Imd1ZXNzaW5nIG5vIiA7OwogICAg
ICAgICBlc2FjCgplbHNlCiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFj
X2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCgojaW5jbHVkZSA8bWF0aC5oPgovKiBJZiBzaWdu
Yml0IGlzIGRlZmluZWQgYXMgYSBmdW5jdGlvbiwgZG9uJ3QgdXNlIGl0LCBzaW5jZSBjYWxsaW5n
IGl0IGZvcgogICAnZmxvYXQnIG9yICdsb25nIGRvdWJsZScgYXJndW1lbnRzIHdvdWxkIGludm9s
dmUgY29udmVyc2lvbnMuCiAgIElmIHNpZ25iaXQgaXMgbm90IGRlY2xhcmVkIGF0IGFsbCBidXQg
ZXhpc3RzIGFzIGEgbGlicmFyeSBmdW5jdGlvbiwgZG9uJ3QKICAgdXNlIGl0LCBzaW5jZSB0aGUg
cHJvdG90eXBlIG1heSBub3QgbWF0Y2guCiAgIElmIHNpZ25iaXQgaXMgbm90IGRlY2xhcmVkIGF0
IGFsbCBidXQgZXhpc3RzIGFzIGEgY29tcGlsZXIgYnVpbHQtaW4sIGRvbid0CiAgIHVzZSBpdCwg
c2luY2UgaXQncyBwcmVmZXJhYmxlIHRvIHVzZSBfX2J1aWx0aW5fc2lnbmJpdCogKG5vIHdhcm5p
bmdzLAogICBubyBjb252ZXJzaW9ucykuICAqLwojaWZuZGVmIHNpZ25iaXQKIyBlcnJvciAic2ln
bmJpdCBzaG91bGQgYmUgYSBtYWNybyIKI2VuZGlmCiNpbmNsdWRlIDxzdHJpbmcuaD4KCi8qIEds
b2JhbCB2YXJpYWJsZXMuCiAgIE5lZWRlZCBiZWNhdXNlIEdDQyA0IGNvbnN0YW50LWZvbGRzIF9f
YnVpbHRpbl9zaWduYml0bCAobGl0ZXJhbCkKICAgYnV0IGNhbm5vdCBjb25zdGFudC1mb2xkICAg
ICAgICAgICAgX19idWlsdGluX3NpZ25iaXRsICh2YXJpYWJsZSkuICAqLwpmbG9hdCB2ZjsKZG91
YmxlIHZkOwpsb25nIGRvdWJsZSB2bDsKaW50IG1haW4gKCkKewovKiBIUCBjYyBvbiBIUC1VWCAx
MC4yMCBoYXMgYSBidWcgd2l0aCB0aGUgY29uc3RhbnQgZXhwcmVzc2lvbiAtMC4wLgogICBTbyB3
ZSB1c2UgLXAwZiBhbmQgLXAwZCBpbnN0ZWFkLiAgKi8KZmxvYXQgcDBmID0gMC4wZjsKZmxvYXQg
bTBmID0gLXAwZjsKZG91YmxlIHAwZCA9IDAuMDsKZG91YmxlIG0wZCA9IC1wMGQ7Ci8qIE9uIEhQ
LVVYIDEwLjIwLCBuZWdhdGluZyAwLjBMIGRvZXMgbm90IHlpZWxkIC0wLjBMLgogICBTbyB3ZSB1
c2UgYW5vdGhlciBjb25zdGFudCBleHByZXNzaW9uIGluc3RlYWQuCiAgIEJ1dCB0aGF0IGV4cHJl
c3Npb24gZG9lcyBub3Qgd29yayBvbiBvdGhlciBwbGF0Zm9ybXMsIHN1Y2ggYXMgd2hlbgogICBj
cm9zcy1jb21waWxpbmcgdG8gUG93ZXJQQyBvbiBNYWMgT1MgWCAxMC41LiAgKi8KbG9uZyBkb3Vi
bGUgcDBsID0gMC4wTDsKI2lmIGRlZmluZWQgX19ocHV4IHx8IGRlZmluZWQgX19zZ2kKbG9uZyBk
b3VibGUgbTBsID0gLUxEQkxfTUlOICogTERCTF9NSU47CiNlbHNlCmxvbmcgZG91YmxlIG0wbCA9
IC1wMGw7CiNlbmRpZgogIGludCByZXN1bHQgPSAwOwogIGlmIChzaWduYml0ICh2ZikpIC8qIGxp
bmsgY2hlY2sgKi8KICAgIHZmKys7CiAgewogICAgZmxvYXQgcGx1c19pbmYgPSAxLjBmIC8gcDBm
OwogICAgZmxvYXQgbWludXNfaW5mID0gLTEuMGYgLyBwMGY7CiAgICBpZiAoISghc2lnbmJpdCAo
MjU1LjBmKQogICAgICAgICAgJiYgc2lnbmJpdCAoLTI1NS4wZikKICAgICAgICAgICYmICFzaWdu
Yml0IChwMGYpCiAgICAgICAgICAmJiAobWVtY21wICgmbTBmLCAmcDBmLCBzaXplb2YgKGZsb2F0
KSkgPT0gMCB8fCBzaWduYml0IChtMGYpKQogICAgICAgICAgJiYgIXNpZ25iaXQgKHBsdXNfaW5m
KQogICAgICAgICAgJiYgc2lnbmJpdCAobWludXNfaW5mKSkpCiAgICAgIHJlc3VsdCB8PSAxOwog
IH0KICBpZiAoc2lnbmJpdCAodmQpKSAvKiBsaW5rIGNoZWNrICovCiAgICB2ZCsrOwogIHsKICAg
IGRvdWJsZSBwbHVzX2luZiA9IDEuMCAvIHAwZDsKICAgIGRvdWJsZSBtaW51c19pbmYgPSAtMS4w
IC8gcDBkOwogICAgaWYgKCEoIXNpZ25iaXQgKDI1NS4wKQogICAgICAgICAgJiYgc2lnbmJpdCAo
LTI1NS4wKQogICAgICAgICAgJiYgIXNpZ25iaXQgKHAwZCkKICAgICAgICAgICYmIChtZW1jbXAg
KCZtMGQsICZwMGQsIHNpemVvZiAoZG91YmxlKSkgPT0gMCB8fCBzaWduYml0IChtMGQpKQogICAg
ICAgICAgJiYgIXNpZ25iaXQgKHBsdXNfaW5mKQogICAgICAgICAgJiYgc2lnbmJpdCAobWludXNf
aW5mKSkpCiAgICAgIHJlc3VsdCB8PSAyOwogIH0KICBpZiAoc2lnbmJpdCAodmwpKSAvKiBsaW5r
IGNoZWNrICovCiAgICB2bCsrOwogIHsKICAgIGxvbmcgZG91YmxlIHBsdXNfaW5mID0gMS4wTCAv
IHAwbDsKICAgIGxvbmcgZG91YmxlIG1pbnVzX2luZiA9IC0xLjBMIC8gcDBsOwogICAgaWYgKHNp
Z25iaXQgKDI1NS4wTCkpCiAgICAgIHJlc3VsdCB8PSA0OwogICAgaWYgKCFzaWduYml0ICgtMjU1
LjBMKSkKICAgICAgcmVzdWx0IHw9IDQ7CiAgICBpZiAoc2lnbmJpdCAocDBsKSkKICAgICAgcmVz
dWx0IHw9IDg7CiAgICBpZiAoIShtZW1jbXAgKCZtMGwsICZwMGwsIHNpemVvZiAobG9uZyBkb3Vi
bGUpKSA9PSAwIHx8IHNpZ25iaXQgKG0wbCkpKQogICAgICByZXN1bHQgfD0gMTY7CiAgICBpZiAo
c2lnbmJpdCAocGx1c19pbmYpKQogICAgICByZXN1bHQgfD0gMzI7CiAgICBpZiAoIXNpZ25iaXQg
KG1pbnVzX2luZikpCiAgICAgIHJlc3VsdCB8PSA2NDsKICB9CiAgcmV0dXJuIHJlc3VsdDsKfQoK
Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKICBnbF9jdl9mdW5j
X3NpZ25iaXQ9eWVzCmVsc2UKICBnbF9jdl9mdW5jX3NpZ25iaXQ9bm8KZmkKcm0gLWYgY29yZSAq
LmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQg
XAogIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CmZp
CgoKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRn
bF9jdl9mdW5jX3NpZ25iaXQiID4mNQokYXNfZWNobyAiJGdsX2N2X2Z1bmNfc2lnbmJpdCIgPiY2
OyB9CiAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNo
ZWNraW5nIGZvciBzaWduYml0IGNvbXBpbGVyIGJ1aWx0LWlucyIgPiY1CiRhc19lY2hvX24gImNo
ZWNraW5nIGZvciBzaWduYml0IGNvbXBpbGVyIGJ1aWx0LWlucy4uLiAiID4mNjsgfQppZiAke2ds
X2N2X2Z1bmNfc2lnbmJpdF9nY2MrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNo
ZWQpICIgPiY2CmVsc2UKCiAgICAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0
aGVuIDoKICBjYXNlICIkaG9zdF9vcyIgaW4KICAgICAgICAgICAgICAgICAgICMgR3Vlc3MgeWVz
IG9uIGdsaWJjIHN5c3RlbXMuCiAgICAgICAgICAgKi1nbnUqKSBnbF9jdl9mdW5jX3NpZ25iaXRf
Z2NjPSJndWVzc2luZyB5ZXMiIDs7CiAgICAgICAgICAgICAgICAgICAjIElmIHdlIGRvbid0IGtu
b3csIGFzc3VtZSB0aGUgd29yc3QuCiAgICAgICAgICAgKikgICAgICBnbF9jdl9mdW5jX3NpZ25i
aXRfZ2NjPSJndWVzc2luZyBubyIgOzsKICAgICAgICAgZXNhYwoKZWxzZQogIGNhdCBjb25mZGVm
cy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwoK
I2lmIF9fR05VQ19fID49IDQKIyBkZWZpbmUgc2lnbmJpdCh4KSBcCiAgIChzaXplb2YgKHgpID09
IHNpemVvZiAobG9uZyBkb3VibGUpID8gX19idWlsdGluX3NpZ25iaXRsICh4KSA6IFwKICAgIHNp
emVvZiAoeCkgPT0gc2l6ZW9mIChkb3VibGUpID8gX19idWlsdGluX3NpZ25iaXQgKHgpIDogXAog
ICAgX19idWlsdGluX3NpZ25iaXRmICh4KSkKI2Vsc2UKIyBlcnJvciAic2lnbmJpdCBzaG91bGQg
YmUgdGhyZWUgY29tcGlsZXIgYnVpbHQtaW5zIgojZW5kaWYKI2luY2x1ZGUgPHN0cmluZy5oPgoK
LyogR2xvYmFsIHZhcmlhYmxlcy4KICAgTmVlZGVkIGJlY2F1c2UgR0NDIDQgY29uc3RhbnQtZm9s
ZHMgX19idWlsdGluX3NpZ25iaXRsIChsaXRlcmFsKQogICBidXQgY2Fubm90IGNvbnN0YW50LWZv
bGQgICAgICAgICAgICBfX2J1aWx0aW5fc2lnbmJpdGwgKHZhcmlhYmxlKS4gICovCmZsb2F0IHZm
Owpkb3VibGUgdmQ7CmxvbmcgZG91YmxlIHZsOwppbnQgbWFpbiAoKQp7Ci8qIEhQIGNjIG9uIEhQ
LVVYIDEwLjIwIGhhcyBhIGJ1ZyB3aXRoIHRoZSBjb25zdGFudCBleHByZXNzaW9uIC0wLjAuCiAg
IFNvIHdlIHVzZSAtcDBmIGFuZCAtcDBkIGluc3RlYWQuICAqLwpmbG9hdCBwMGYgPSAwLjBmOwpm
bG9hdCBtMGYgPSAtcDBmOwpkb3VibGUgcDBkID0gMC4wOwpkb3VibGUgbTBkID0gLXAwZDsKLyog
T24gSFAtVVggMTAuMjAsIG5lZ2F0aW5nIDAuMEwgZG9lcyBub3QgeWllbGQgLTAuMEwuCiAgIFNv
IHdlIHVzZSBhbm90aGVyIGNvbnN0YW50IGV4cHJlc3Npb24gaW5zdGVhZC4KICAgQnV0IHRoYXQg
ZXhwcmVzc2lvbiBkb2VzIG5vdCB3b3JrIG9uIG90aGVyIHBsYXRmb3Jtcywgc3VjaCBhcyB3aGVu
CiAgIGNyb3NzLWNvbXBpbGluZyB0byBQb3dlclBDIG9uIE1hYyBPUyBYIDEwLjUuICAqLwpsb25n
IGRvdWJsZSBwMGwgPSAwLjBMOwojaWYgZGVmaW5lZCBfX2hwdXggfHwgZGVmaW5lZCBfX3NnaQps
b25nIGRvdWJsZSBtMGwgPSAtTERCTF9NSU4gKiBMREJMX01JTjsKI2Vsc2UKbG9uZyBkb3VibGUg
bTBsID0gLXAwbDsKI2VuZGlmCiAgaW50IHJlc3VsdCA9IDA7CiAgaWYgKHNpZ25iaXQgKHZmKSkg
LyogbGluayBjaGVjayAqLwogICAgdmYrKzsKICB7CiAgICBmbG9hdCBwbHVzX2luZiA9IDEuMGYg
LyBwMGY7CiAgICBmbG9hdCBtaW51c19pbmYgPSAtMS4wZiAvIHAwZjsKICAgIGlmICghKCFzaWdu
Yml0ICgyNTUuMGYpCiAgICAgICAgICAmJiBzaWduYml0ICgtMjU1LjBmKQogICAgICAgICAgJiYg
IXNpZ25iaXQgKHAwZikKICAgICAgICAgICYmIChtZW1jbXAgKCZtMGYsICZwMGYsIHNpemVvZiAo
ZmxvYXQpKSA9PSAwIHx8IHNpZ25iaXQgKG0wZikpCiAgICAgICAgICAmJiAhc2lnbmJpdCAocGx1
c19pbmYpCiAgICAgICAgICAmJiBzaWduYml0IChtaW51c19pbmYpKSkKICAgICAgcmVzdWx0IHw9
IDE7CiAgfQogIGlmIChzaWduYml0ICh2ZCkpIC8qIGxpbmsgY2hlY2sgKi8KICAgIHZkKys7CiAg
ewogICAgZG91YmxlIHBsdXNfaW5mID0gMS4wIC8gcDBkOwogICAgZG91YmxlIG1pbnVzX2luZiA9
IC0xLjAgLyBwMGQ7CiAgICBpZiAoISghc2lnbmJpdCAoMjU1LjApCiAgICAgICAgICAmJiBzaWdu
Yml0ICgtMjU1LjApCiAgICAgICAgICAmJiAhc2lnbmJpdCAocDBkKQogICAgICAgICAgJiYgKG1l
bWNtcCAoJm0wZCwgJnAwZCwgc2l6ZW9mIChkb3VibGUpKSA9PSAwIHx8IHNpZ25iaXQgKG0wZCkp
CiAgICAgICAgICAmJiAhc2lnbmJpdCAocGx1c19pbmYpCiAgICAgICAgICAmJiBzaWduYml0ICht
aW51c19pbmYpKSkKICAgICAgcmVzdWx0IHw9IDI7CiAgfQogIGlmIChzaWduYml0ICh2bCkpIC8q
IGxpbmsgY2hlY2sgKi8KICAgIHZsKys7CiAgewogICAgbG9uZyBkb3VibGUgcGx1c19pbmYgPSAx
LjBMIC8gcDBsOwogICAgbG9uZyBkb3VibGUgbWludXNfaW5mID0gLTEuMEwgLyBwMGw7CiAgICBp
ZiAoc2lnbmJpdCAoMjU1LjBMKSkKICAgICAgcmVzdWx0IHw9IDQ7CiAgICBpZiAoIXNpZ25iaXQg
KC0yNTUuMEwpKQogICAgICByZXN1bHQgfD0gNDsKICAgIGlmIChzaWduYml0IChwMGwpKQogICAg
ICByZXN1bHQgfD0gODsKICAgIGlmICghKG1lbWNtcCAoJm0wbCwgJnAwbCwgc2l6ZW9mIChsb25n
IGRvdWJsZSkpID09IDAgfHwgc2lnbmJpdCAobTBsKSkpCiAgICAgIHJlc3VsdCB8PSAxNjsKICAg
IGlmIChzaWduYml0IChwbHVzX2luZikpCiAgICAgIHJlc3VsdCB8PSAzMjsKICAgIGlmICghc2ln
bmJpdCAobWludXNfaW5mKSkKICAgICAgcmVzdWx0IHw9IDY0OwogIH0KICByZXR1cm4gcmVzdWx0
Owp9CgoKX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgogIGdsX2N2
X2Z1bmNfc2lnbmJpdF9nY2M9eWVzCmVsc2UKICBnbF9jdl9mdW5jX3NpZ25iaXRfZ2NjPW5vCmZp
CnJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRl
c3QkYWNfZXhlZXh0IFwKICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRl
c3QuJGFjX2V4dApmaQoKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiAkZ2xfY3ZfZnVuY19zaWduYml0X2djYyIgPiY1CiRhc19lY2hvICIkZ2xfY3Zf
ZnVuY19zaWduYml0X2djYyIgPiY2OyB9CiAgICAgIGNhc2UgIiRnbF9jdl9mdW5jX3NpZ25iaXRf
Z2NjIiBpbgogICAgKnllcykKICAgICAgUkVQTEFDRV9TSUdOQklUX1VTSU5HX0dDQz0xCiAgICAg
IDs7CiAgICAqKQogICAgICBjYXNlICIkZ2xfY3ZfZnVuY19zaWduYml0IiBpbgogICAgICAgICp5
ZXMpIDs7CiAgICAgICAgKikKICAgICAgICAgICAgICAgICAgICBSRVBMQUNFX1NJR05CSVQ9MQoK
CiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGVy
ZSB0byBmaW5kIHRoZSBzaWduIGJpdCBpbiBhICdmbG9hdCciID4mNQokYXNfZWNob19uICJjaGVj
a2luZyB3aGVyZSB0byBmaW5kIHRoZSBzaWduIGJpdCBpbiBhICdmbG9hdCcuLi4gIiA+JjY7IH0K
aWYgJHtnbF9jdl9jY19mbG9hdF9zaWduYml0Kzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19u
ICIoY2FjaGVkKSAiID4mNgplbHNlCgogICAgICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9
IHllczsgdGhlbiA6CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9jdl9jY19mbG9h
dF9zaWduYml0PSJ1bmtub3duIgoKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNv
bmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwoKI2luY2x1ZGUgPHN0ZGRlZi5o
PgojaW5jbHVkZSA8c3RkaW8uaD4KI2RlZmluZSBOV09SRFMgXAogICgoc2l6ZW9mIChmbG9hdCkg
KyBzaXplb2YgKHVuc2lnbmVkIGludCkgLSAxKSAvIHNpemVvZiAodW5zaWduZWQgaW50KSkKdHlw
ZWRlZiB1bmlvbiB7IGZsb2F0IHZhbHVlOyB1bnNpZ25lZCBpbnQgd29yZFtOV09SRFNdOyB9CiAg
ICAgICAgbWVtb3J5X2Zsb2F0OwpzdGF0aWMgbWVtb3J5X2Zsb2F0IHBsdXMgPSB7IDEuMGYgfTsK
c3RhdGljIG1lbW9yeV9mbG9hdCBtaW51cyA9IHsgLTEuMGYgfTsKaW50IG1haW4gKCkKewogIHNp
emVfdCBqLCBrLCBpOwogIHVuc2lnbmVkIGludCBtOwogIEZJTEUgKmZwID0gZm9wZW4gKCJjb25m
dGVzdC5vdXQiLCAidyIpOwogIGlmIChmcCA9PSBOVUxMKQogICAgcmV0dXJuIDE7CiAgLyogRmlu
ZCB0aGUgZGlmZmVyZW50IGJpdC4gICovCiAgayA9IDA7IG0gPSAwOwogIGZvciAoaiA9IDA7IGog
PCBOV09SRFM7IGorKykKICAgIHsKICAgICAgdW5zaWduZWQgaW50IHggPSBwbHVzLndvcmRbal0g
XiBtaW51cy53b3JkW2pdOwogICAgICBpZiAoKHggJiAoeCAtIDEpKSB8fCAoeCAmJiBtKSkKICAg
ICAgICB7CiAgICAgICAgICAvKiBNb3JlIHRoYW4gb25lIGJpdCBkaWZmZXJlbmNlLiAgKi8KICAg
ICAgICAgIGZwcmludGYgKGZwLCAidW5rbm93biIpOwogICAgICAgICAgcmV0dXJuIDI7CiAgICAg
ICAgfQogICAgICBpZiAoeCkKICAgICAgICB7CiAgICAgICAgICBrID0gajsKICAgICAgICAgIG0g
PSB4OwogICAgICAgIH0KICAgIH0KICBpZiAobSA9PSAwKQogICAgewogICAgICAvKiBObyBkaWZm
ZXJlbmNlLiAgKi8KICAgICAgZnByaW50ZiAoZnAsICJ1bmtub3duIik7CiAgICAgIHJldHVybiAz
OwogICAgfQogIC8qIE5vdyBtID0gcGx1cy53b3JkW2tdIF4gfm1pbnVzLndvcmRba10uICAqLwog
IGlmIChwbHVzLndvcmRba10gJiB+bWludXMud29yZFtrXSkKICAgIHsKICAgICAgLyogT2g/IFRo
ZSBzaWduIGJpdCBpcyBzZXQgaW4gdGhlIHBvc2l0aXZlIGFuZCBjbGVhcmVkIGluIHRoZSBuZWdh
dGl2ZQogICAgICAgICBudW1iZXJzPyAgKi8KICAgICAgZnByaW50ZiAoZnAsICJ1bmtub3duIik7
CiAgICAgIHJldHVybiA0OwogICAgfQogIGZvciAoaSA9IDA7IDsgaSsrKQogICAgaWYgKChtID4+
IGkpICYgMSkKICAgICAgYnJlYWs7CiAgZnByaW50ZiAoZnAsICJ3b3JkICVkIGJpdCAlZCIsIChp
bnQpIGssIChpbnQpIGkpOwogIGlmIChmY2xvc2UgKGZwKSAhPSAwKQogICAgcmV0dXJuIDU7CiAg
cmV0dXJuIDA7Cn0KCl9BQ0VPRgppZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoK
ICBnbF9jdl9jY19mbG9hdF9zaWduYml0PWBjYXQgY29uZnRlc3Qub3V0YAplbHNlCiAgZ2xfY3Zf
Y2NfZmxvYXRfc2lnbmJpdD0idW5rbm93biIKZmkKcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25m
dGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAogIGNvbmZ0ZXN0LiRh
Y19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CmZpCgogICAgICBybSAtZiBj
b25mdGVzdC5vdXQKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
cmVzdWx0OiAkZ2xfY3ZfY2NfZmxvYXRfc2lnbmJpdCIgPiY1CiRhc19lY2hvICIkZ2xfY3ZfY2Nf
ZmxvYXRfc2lnbmJpdCIgPiY2OyB9CiAgY2FzZSAiJGdsX2N2X2NjX2Zsb2F0X3NpZ25iaXQiIGlu
CiAgICB3b3JkKmJpdCopCiAgICAgIHdvcmQ9YGVjaG8gIiRnbF9jdl9jY19mbG9hdF9zaWduYml0
IiB8IHNlZCAtZSAncy93b3JkIC8vJyAtZSAncy8gYml0LiovLydgCiAgICAgIGJpdD1gZWNobyAi
JGdsX2N2X2NjX2Zsb2F0X3NpZ25iaXQiIHwgc2VkIC1lICdzL3dvcmQuKmJpdCAvLydgCgpjYXQg
Pj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgRkxUX1NJR05CSVRfV09SRCAkd29yZApfQUNF
T0YKCgpjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgRkxUX1NJR05CSVRfQklUICRi
aXQKX0FDRU9GCgogICAgICA7OwogIGVzYWMKCgoKCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf
bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGVyZSB0byBmaW5kIHRoZSBzaWduIGJpdCBpbiBh
ICdkb3VibGUnIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hlcmUgdG8gZmluZCB0aGUgc2ln
biBiaXQgaW4gYSAnZG91YmxlJy4uLiAiID4mNjsgfQppZiAke2dsX2N2X2NjX2RvdWJsZV9zaWdu
Yml0Kzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCgog
ICAgICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnbF9jdl9jY19kb3VibGVfc2lnbmJpdD0idW5rbm93biIKCmVs
c2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBj
b25mZGVmcy5oLiAgKi8KCiNpbmNsdWRlIDxzdGRkZWYuaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CiNk
ZWZpbmUgTldPUkRTIFwKICAoKHNpemVvZiAoZG91YmxlKSArIHNpemVvZiAodW5zaWduZWQgaW50
KSAtIDEpIC8gc2l6ZW9mICh1bnNpZ25lZCBpbnQpKQp0eXBlZGVmIHVuaW9uIHsgZG91YmxlIHZh
bHVlOyB1bnNpZ25lZCBpbnQgd29yZFtOV09SRFNdOyB9CiAgICAgICAgbWVtb3J5X2Zsb2F0Owpz
dGF0aWMgbWVtb3J5X2Zsb2F0IHBsdXMgPSB7IDEuMCB9OwpzdGF0aWMgbWVtb3J5X2Zsb2F0IG1p
bnVzID0geyAtMS4wIH07CmludCBtYWluICgpCnsKICBzaXplX3QgaiwgaywgaTsKICB1bnNpZ25l
ZCBpbnQgbTsKICBGSUxFICpmcCA9IGZvcGVuICgiY29uZnRlc3Qub3V0IiwgInciKTsKICBpZiAo
ZnAgPT0gTlVMTCkKICAgIHJldHVybiAxOwogIC8qIEZpbmQgdGhlIGRpZmZlcmVudCBiaXQuICAq
LwogIGsgPSAwOyBtID0gMDsKICBmb3IgKGogPSAwOyBqIDwgTldPUkRTOyBqKyspCiAgICB7CiAg
ICAgIHVuc2lnbmVkIGludCB4ID0gcGx1cy53b3JkW2pdIF4gbWludXMud29yZFtqXTsKICAgICAg
aWYgKCh4ICYgKHggLSAxKSkgfHwgKHggJiYgbSkpCiAgICAgICAgewogICAgICAgICAgLyogTW9y
ZSB0aGFuIG9uZSBiaXQgZGlmZmVyZW5jZS4gICovCiAgICAgICAgICBmcHJpbnRmIChmcCwgInVu
a25vd24iKTsKICAgICAgICAgIHJldHVybiAyOwogICAgICAgIH0KICAgICAgaWYgKHgpCiAgICAg
ICAgewogICAgICAgICAgayA9IGo7CiAgICAgICAgICBtID0geDsKICAgICAgICB9CiAgICB9CiAg
aWYgKG0gPT0gMCkKICAgIHsKICAgICAgLyogTm8gZGlmZmVyZW5jZS4gICovCiAgICAgIGZwcmlu
dGYgKGZwLCAidW5rbm93biIpOwogICAgICByZXR1cm4gMzsKICAgIH0KICAvKiBOb3cgbSA9IHBs
dXMud29yZFtrXSBeIH5taW51cy53b3JkW2tdLiAgKi8KICBpZiAocGx1cy53b3JkW2tdICYgfm1p
bnVzLndvcmRba10pCiAgICB7CiAgICAgIC8qIE9oPyBUaGUgc2lnbiBiaXQgaXMgc2V0IGluIHRo
ZSBwb3NpdGl2ZSBhbmQgY2xlYXJlZCBpbiB0aGUgbmVnYXRpdmUKICAgICAgICAgbnVtYmVycz8g
ICovCiAgICAgIGZwcmludGYgKGZwLCAidW5rbm93biIpOwogICAgICByZXR1cm4gNDsKICAgIH0K
ICBmb3IgKGkgPSAwOyA7IGkrKykKICAgIGlmICgobSA+PiBpKSAmIDEpCiAgICAgIGJyZWFrOwog
IGZwcmludGYgKGZwLCAid29yZCAlZCBiaXQgJWQiLCAoaW50KSBrLCAoaW50KSBpKTsKICBpZiAo
ZmNsb3NlIChmcCkgIT0gMCkKICAgIHJldHVybiA1OwogIHJldHVybiAwOwp9CgpfQUNFT0YKaWYg
YWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CiAgZ2xfY3ZfY2NfZG91YmxlX3NpZ25i
aXQ9YGNhdCBjb25mdGVzdC5vdXRgCmVsc2UKICBnbF9jdl9jY19kb3VibGVfc2lnbmJpdD0idW5r
bm93biIKZmkKcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91
dCBjb25mdGVzdCRhY19leGVleHQgXAogIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVh
bSBjb25mdGVzdC4kYWNfZXh0CmZpCgogICAgICBybSAtZiBjb25mdGVzdC5vdXQKCmZpCnsgJGFz
X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfY2NfZG91
YmxlX3NpZ25iaXQiID4mNQokYXNfZWNobyAiJGdsX2N2X2NjX2RvdWJsZV9zaWduYml0IiA+JjY7
IH0KICBjYXNlICIkZ2xfY3ZfY2NfZG91YmxlX3NpZ25iaXQiIGluCiAgICB3b3JkKmJpdCopCiAg
ICAgIHdvcmQ9YGVjaG8gIiRnbF9jdl9jY19kb3VibGVfc2lnbmJpdCIgfCBzZWQgLWUgJ3Mvd29y
ZCAvLycgLWUgJ3MvIGJpdC4qLy8nYAogICAgICBiaXQ9YGVjaG8gIiRnbF9jdl9jY19kb3VibGVf
c2lnbmJpdCIgfCBzZWQgLWUgJ3Mvd29yZC4qYml0IC8vJ2AKCmNhdCA+PmNvbmZkZWZzLmggPDxf
QUNFT0YKI2RlZmluZSBEQkxfU0lHTkJJVF9XT1JEICR3b3JkCl9BQ0VPRgoKCmNhdCA+PmNvbmZk
ZWZzLmggPDxfQUNFT0YKI2RlZmluZSBEQkxfU0lHTkJJVF9CSVQgJGJpdApfQUNFT0YKCiAgICAg
IDs7CiAgZXNhYwoKCgoKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306
IGNoZWNraW5nIHdoZXJlIHRvIGZpbmQgdGhlIHNpZ24gYml0IGluIGEgJ2xvbmcgZG91YmxlJyIg
PiY1CiRhc19lY2hvX24gImNoZWNraW5nIHdoZXJlIHRvIGZpbmQgdGhlIHNpZ24gYml0IGluIGEg
J2xvbmcgZG91YmxlJy4uLiAiID4mNjsgfQppZiAke2dsX2N2X2NjX2xvbmdfZG91YmxlX3NpZ25i
aXQrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKCiAg
ICAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdsX2N2X2NjX2xvbmdfZG91YmxlX3NpZ25iaXQ9InVua25vd24i
CgplbHNlCiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBl
bmQgY29uZmRlZnMuaC4gICovCgojaW5jbHVkZSA8c3RkZGVmLmg+CiNpbmNsdWRlIDxzdGRpby5o
PgojZGVmaW5lIE5XT1JEUyBcCiAgKChzaXplb2YgKGxvbmcgZG91YmxlKSArIHNpemVvZiAodW5z
aWduZWQgaW50KSAtIDEpIC8gc2l6ZW9mICh1bnNpZ25lZCBpbnQpKQp0eXBlZGVmIHVuaW9uIHsg
bG9uZyBkb3VibGUgdmFsdWU7IHVuc2lnbmVkIGludCB3b3JkW05XT1JEU107IH0KICAgICAgICBt
ZW1vcnlfZmxvYXQ7CnN0YXRpYyBtZW1vcnlfZmxvYXQgcGx1cyA9IHsgMS4wTCB9OwpzdGF0aWMg
bWVtb3J5X2Zsb2F0IG1pbnVzID0geyAtMS4wTCB9OwppbnQgbWFpbiAoKQp7CiAgc2l6ZV90IGos
IGssIGk7CiAgdW5zaWduZWQgaW50IG07CiAgRklMRSAqZnAgPSBmb3BlbiAoImNvbmZ0ZXN0Lm91
dCIsICJ3Iik7CiAgaWYgKGZwID09IE5VTEwpCiAgICByZXR1cm4gMTsKICAvKiBGaW5kIHRoZSBk
aWZmZXJlbnQgYml0LiAgKi8KICBrID0gMDsgbSA9IDA7CiAgZm9yIChqID0gMDsgaiA8IE5XT1JE
UzsgaisrKQogICAgewogICAgICB1bnNpZ25lZCBpbnQgeCA9IHBsdXMud29yZFtqXSBeIG1pbnVz
LndvcmRbal07CiAgICAgIGlmICgoeCAmICh4IC0gMSkpIHx8ICh4ICYmIG0pKQogICAgICAgIHsK
ICAgICAgICAgIC8qIE1vcmUgdGhhbiBvbmUgYml0IGRpZmZlcmVuY2UuICAqLwogICAgICAgICAg
ZnByaW50ZiAoZnAsICJ1bmtub3duIik7CiAgICAgICAgICByZXR1cm4gMjsKICAgICAgICB9CiAg
ICAgIGlmICh4KQogICAgICAgIHsKICAgICAgICAgIGsgPSBqOwogICAgICAgICAgbSA9IHg7CiAg
ICAgICAgfQogICAgfQogIGlmIChtID09IDApCiAgICB7CiAgICAgIC8qIE5vIGRpZmZlcmVuY2Uu
ICAqLwogICAgICBmcHJpbnRmIChmcCwgInVua25vd24iKTsKICAgICAgcmV0dXJuIDM7CiAgICB9
CiAgLyogTm93IG0gPSBwbHVzLndvcmRba10gXiB+bWludXMud29yZFtrXS4gICovCiAgaWYgKHBs
dXMud29yZFtrXSAmIH5taW51cy53b3JkW2tdKQogICAgewogICAgICAvKiBPaD8gVGhlIHNpZ24g
Yml0IGlzIHNldCBpbiB0aGUgcG9zaXRpdmUgYW5kIGNsZWFyZWQgaW4gdGhlIG5lZ2F0aXZlCiAg
ICAgICAgIG51bWJlcnM/ICAqLwogICAgICBmcHJpbnRmIChmcCwgInVua25vd24iKTsKICAgICAg
cmV0dXJuIDQ7CiAgICB9CiAgZm9yIChpID0gMDsgOyBpKyspCiAgICBpZiAoKG0gPj4gaSkgJiAx
KQogICAgICBicmVhazsKICBmcHJpbnRmIChmcCwgIndvcmQgJWQgYml0ICVkIiwgKGludCkgaywg
KGludCkgaSk7CiAgaWYgKGZjbG9zZSAoZnApICE9IDApCiAgICByZXR1cm4gNTsKICByZXR1cm4g
MDsKfQoKX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgogIGdsX2N2
X2NjX2xvbmdfZG91YmxlX3NpZ25iaXQ9YGNhdCBjb25mdGVzdC5vdXRgCmVsc2UKICBnbF9jdl9j
Y19sb25nX2RvdWJsZV9zaWduYml0PSJ1bmtub3duIgpmaQpybSAtZiBjb3JlICouY29yZSBjb3Jl
LmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCiAgY29uZnRl
c3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKZmkKCiAgICAgIHJt
IC1mIGNvbmZ0ZXN0Lm91dAoKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F
Tk99OiByZXN1bHQ6ICRnbF9jdl9jY19sb25nX2RvdWJsZV9zaWduYml0IiA+JjUKJGFzX2VjaG8g
IiRnbF9jdl9jY19sb25nX2RvdWJsZV9zaWduYml0IiA+JjY7IH0KICBjYXNlICIkZ2xfY3ZfY2Nf
bG9uZ19kb3VibGVfc2lnbmJpdCIgaW4KICAgIHdvcmQqYml0KikKICAgICAgd29yZD1gZWNobyAi
JGdsX2N2X2NjX2xvbmdfZG91YmxlX3NpZ25iaXQiIHwgc2VkIC1lICdzL3dvcmQgLy8nIC1lICdz
LyBiaXQuKi8vJ2AKICAgICAgYml0PWBlY2hvICIkZ2xfY3ZfY2NfbG9uZ19kb3VibGVfc2lnbmJp
dCIgfCBzZWQgLWUgJ3Mvd29yZC4qYml0IC8vJ2AKCmNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YK
I2RlZmluZSBMREJMX1NJR05CSVRfV09SRCAkd29yZApfQUNFT0YKCgpjYXQgPj5jb25mZGVmcy5o
IDw8X0FDRU9GCiNkZWZpbmUgTERCTF9TSUdOQklUX0JJVCAkYml0Cl9BQ0VPRgoKICAgICAgOzsK
ICBlc2FjCgoKICAgICAgICAgIGlmIHRlc3QgIiRnbF9jdl9jY19mbG9hdF9zaWduYml0IiA9IHVu
a25vd247IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgYWNfZm5fY19jaGVja19kZWNsICIk
TElORU5PIiAiY29weXNpZ25mIiAiYWNfY3ZfaGF2ZV9kZWNsX2NvcHlzaWduZiIgIiNpbmNsdWRl
IDxtYXRoLmg+CiIKaWYgdGVzdCAieCRhY19jdl9oYXZlX2RlY2xfY29weXNpZ25mIiA9IHh5ZXM7
IHRoZW4gOgogIGFjX2hhdmVfZGVjbD0xCmVsc2UKICBhY19oYXZlX2RlY2w9MApmaQoKY2F0ID4+
Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5lIEhBVkVfREVDTF9DT1BZU0lHTkYgJGFjX2hhdmVf
ZGVjbApfQUNFT0YKCiAgICAgICAgICAgIGlmIHRlc3QgIiRhY19jdl9oYXZlX2RlY2xfY29weXNp
Z25mIiA9IHllczsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAkYXNfZWNobyAi
JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGNvcHlzaWduZiBj
YW4gYmUgdXNlZCB3aXRob3V0IGxpbmtpbmcgd2l0aCBsaWJtIiA+JjUKJGFzX2VjaG9fbiAiY2hl
Y2tpbmcgd2hldGhlciBjb3B5c2lnbmYgY2FuIGJlIHVzZWQgd2l0aG91dCBsaW5raW5nIHdpdGgg
bGlibS4uLiAiID4mNjsgfQppZiAke2dsX2N2X2Z1bmNfY29weXNpZ25mX25vX2xpYm0rOn0gZmFs
c2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKCiAgICAgICAgICAg
ICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5k
IGNvbmZkZWZzLmguICAqLwojaW5jbHVkZSA8bWF0aC5oPgogICAgICAgICAgICAgICAgICAgICAg
ICAgZmxvYXQgeCwgeTsKaW50Cm1haW4gKCkKewpyZXR1cm4gY29weXNpZ25mICh4LCB5KSA8IDA7
CiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsg
dGhlbiA6CiAgZ2xfY3ZfZnVuY19jb3B5c2lnbmZfbm9fbGlibT15ZXMKZWxzZQogIGdsX2N2X2Z1
bmNfY29weXNpZ25mX25vX2xpYm09bm8KZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRl
c3QuJGFjX29iamV4dCBcCiAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAoK
ZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbF9j
dl9mdW5jX2NvcHlzaWduZl9ub19saWJtIiA+JjUKJGFzX2VjaG8gIiRnbF9jdl9mdW5jX2NvcHlz
aWduZl9ub19saWJtIiA+JjY7IH0KICAgICAgICAgICAgICBpZiB0ZXN0ICRnbF9jdl9mdW5jX2Nv
cHlzaWduZl9ub19saWJtID0geWVzOyB0aGVuCgokYXNfZWNobyAiI2RlZmluZSBIQVZFX0NPUFlT
SUdORl9JTl9MSUJDIDEiID4+Y29uZmRlZnMuaAoKICAgICAgICAgICAgICBmaQogICAgICAgICAg
ICBmaQogICAgICAgICAgZmkKICAgICAgICAgIGlmIHRlc3QgIiRnbF9jdl9jY19kb3VibGVfc2ln
bmJpdCIgPSB1bmtub3duOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgIGFjX2ZuX2NfY2hl
Y2tfZGVjbCAiJExJTkVOTyIgImNvcHlzaWduIiAiYWNfY3ZfaGF2ZV9kZWNsX2NvcHlzaWduIiAi
I2luY2x1ZGUgPG1hdGguaD4KIgppZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9jb3B5c2lnbiIg
PSB4eWVzOyB0aGVuIDoKICBhY19oYXZlX2RlY2w9MQplbHNlCiAgYWNfaGF2ZV9kZWNsPTAKZmkK
CmNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBIQVZFX0RFQ0xfQ09QWVNJR04gJGFj
X2hhdmVfZGVjbApfQUNFT0YKCiAgICAgICAgICAgIGlmIHRlc3QgIiRhY19jdl9oYXZlX2RlY2xf
Y29weXNpZ24iID0geWVzOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICRhc19l
Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgY29weXNp
Z24gY2FuIGJlIHVzZWQgd2l0aG91dCBsaW5raW5nIHdpdGggbGlibSIgPiY1CiRhc19lY2hvX24g
ImNoZWNraW5nIHdoZXRoZXIgY29weXNpZ24gY2FuIGJlIHVzZWQgd2l0aG91dCBsaW5raW5nIHdp
dGggbGlibS4uLiAiID4mNjsgfQppZiAke2dsX2N2X2Z1bmNfY29weXNpZ25fbm9fbGlibSs6fSBm
YWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQoKICAgICAgICAg
ICAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBl
bmQgY29uZmRlZnMuaC4gICovCiNpbmNsdWRlIDxtYXRoLmg+CiAgICAgICAgICAgICAgICAgICAg
ICAgICBkb3VibGUgeCwgeTsKaW50Cm1haW4gKCkKewpyZXR1cm4gY29weXNpZ24gKHgsIHkpIDwg
MDsKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8i
OyB0aGVuIDoKICBnbF9jdl9mdW5jX2NvcHlzaWduX25vX2xpYm09eWVzCmVsc2UKICBnbF9jdl9m
dW5jX2NvcHlzaWduX25vX2xpYm09bm8KZmkKcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRl
c3QuJGFjX29iamV4dCBcCiAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAoK
ZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbF9j
dl9mdW5jX2NvcHlzaWduX25vX2xpYm0iID4mNQokYXNfZWNobyAiJGdsX2N2X2Z1bmNfY29weXNp
Z25fbm9fbGlibSIgPiY2OyB9CiAgICAgICAgICAgICAgaWYgdGVzdCAkZ2xfY3ZfZnVuY19jb3B5
c2lnbl9ub19saWJtID0geWVzOyB0aGVuCgokYXNfZWNobyAiI2RlZmluZSBIQVZFX0NPUFlTSUdO
X0lOX0xJQkMgMSIgPj5jb25mZGVmcy5oCgogICAgICAgICAgICAgIGZpCiAgICAgICAgICAgIGZp
CiAgICAgICAgICBmaQogICAgICAgICAgaWYgdGVzdCAiJGdsX2N2X2NjX2xvbmdfZG91YmxlX3Np
Z25iaXQiID0gdW5rbm93bjsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICBhY19mbl9jX2No
ZWNrX2RlY2wgIiRMSU5FTk8iICJjb3B5c2lnbmwiICJhY19jdl9oYXZlX2RlY2xfY29weXNpZ25s
IiAiI2luY2x1ZGUgPG1hdGguaD4KIgppZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9jb3B5c2ln
bmwiID0geHllczsgdGhlbiA6CiAgYWNfaGF2ZV9kZWNsPTEKZWxzZQogIGFjX2hhdmVfZGVjbD0w
CmZpCgpjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgSEFWRV9ERUNMX0NPUFlTSUdO
TCAkYWNfaGF2ZV9kZWNsCl9BQ0VPRgoKICAgICAgICAgICAgaWYgdGVzdCAiJGFjX2N2X2hhdmVf
ZGVjbF9jb3B5c2lnbmwiID0geWVzOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIg
Y29weXNpZ25sIGNhbiBiZSB1c2VkIHdpdGhvdXQgbGlua2luZyB3aXRoIGxpYm0iID4mNQokYXNf
ZWNob19uICJjaGVja2luZyB3aGV0aGVyIGNvcHlzaWdubCBjYW4gYmUgdXNlZCB3aXRob3V0IGxp
bmtpbmcgd2l0aCBsaWJtLi4uICIgPiY2OyB9CmlmICR7Z2xfY3ZfZnVuY19jb3B5c2lnbmxfbm9f
bGlibSs6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQoK
ICAgICAgICAgICAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFj
X2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCiNpbmNsdWRlIDxtYXRoLmg+CiAgICAgICAgICAg
ICAgICAgICAgICAgICBsb25nIGRvdWJsZSB4LCB5OwppbnQKbWFpbiAoKQp7CnJldHVybiBjb3B5
c2lnbmwgKHgsIHkpIDwgMDsKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5
X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKICBnbF9jdl9mdW5jX2NvcHlzaWdubF9ub19saWJtPXll
cwplbHNlCiAgZ2xfY3ZfZnVuY19jb3B5c2lnbmxfbm9fbGlibT1ubwpmaQpybSAtZiBjb3JlIGNv
bmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBj
b25mdGVzdC4kYWNfZXh0CgpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IHJlc3VsdDogJGdsX2N2X2Z1bmNfY29weXNpZ25sX25vX2xpYm0iID4mNQokYXNfZWNobyAi
JGdsX2N2X2Z1bmNfY29weXNpZ25sX25vX2xpYm0iID4mNjsgfQogICAgICAgICAgICAgIGlmIHRl
c3QgJGdsX2N2X2Z1bmNfY29weXNpZ25sX25vX2xpYm0gPSB5ZXM7IHRoZW4KCiRhc19lY2hvICIj
ZGVmaW5lIEhBVkVfQ09QWVNJR05MX0lOX0xJQkMgMSIgPj5jb25mZGVmcy5oCgogICAgICAgICAg
ICAgIGZpCiAgICAgICAgICAgIGZpCiAgICAgICAgICBmaQogICAgICAgICAgOzsKICAgICAgZXNh
YwogICAgICA7OwogIGVzYWMKCiAgICAgIGlmIHRlc3QgJFJFUExBQ0VfU0lHTkJJVCA9IDE7IHRo
ZW4KCgoKCgoKCgogIGdsX0xJQk9CSlM9IiRnbF9MSUJPQkpTIHNpZ25iaXRmLiRhY19vYmpleHQi
CgoKCgoKCgoKCiAgZ2xfTElCT0JKUz0iJGdsX0xJQk9CSlMgc2lnbmJpdGQuJGFjX29iamV4dCIK
CgoKCgoKCgoKICBnbF9MSUJPQkpTPSIkZ2xfTElCT0JKUyBzaWduYml0bC4kYWNfb2JqZXh0IgoK
ICAgICAgZmkKCgoKCgogICAgICAgICAgR05VTElCX1NJR05CSVQ9MQoKCgoKCiRhc19lY2hvICIj
ZGVmaW5lIEdOVUxJQl9URVNUX1NJR05CSVQgMSIgPj5jb25mZGVmcy5oCgoKCiAgICAgIGdsX2du
dWxpYl9lbmFibGVkX3NpZ25iaXQ9dHJ1ZQogICAgICBpZiB0ZXN0ICRSRVBMQUNFX1NJR05CSVQg
PSAxOyB0aGVuCiAgICAgICAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX2ZwaWVlZQogICAgICBmaQog
ICAgICBpZiB0ZXN0ICRSRVBMQUNFX1NJR05CSVQgPSAxOyB0aGVuCiAgICAgICAgZnVuY19nbF9n
bnVsaWJfbTRjb2RlX2IxZGY3MTE3YjQ3OWQyZGE1OWQ3NmRlYmE0NjhlZTIxCiAgICAgIGZpCiAg
ICAgIGlmIHRlc3QgJFJFUExBQ0VfU0lHTkJJVCA9IDE7IHRoZW4KICAgICAgICBmdW5jX2dsX2du
dWxpYl9tNGNvZGVfM2YwZTU5MzAzM2QxZmMyYzEyNzU4MTk2MGY2NDFiNjYKICAgICAgZmkKICAg
ICAgaWYgdGVzdCAkUkVQTEFDRV9TSUdOQklUID0gMTsgdGhlbgogICAgICAgIGZ1bmNfZ2xfZ251
bGliX200Y29kZV9kYmRmMjI4NjhhNTM2N2YyOGJmMThlMDAxM2FjNmY4ZgogICAgICBmaQogICAg
ICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfbWF0aAogICAgZmkKICB9CiAgZnVuY19nbF9nbnVsaWJf
bTRjb2RlX3NpZ3Byb2NtYXNrICgpCiAgewogICAgaWYgISAkZ2xfZ251bGliX2VuYWJsZWRfc2ln
cHJvY21hc2s7IHRoZW4KCgoKICBpZiB0ZXN0ICRnbF9jdl90eXBlX3NpZ3NldF90ID0geWVzOyB0
aGVuCiAgICBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJzaWdwcm9jbWFzayIgImFjX2N2
X2Z1bmNfc2lncHJvY21hc2siCmlmIHRlc3QgIngkYWNfY3ZfZnVuY19zaWdwcm9jbWFzayIgPSB4
eWVzOyB0aGVuIDoKICBnbF9jdl9mdW5jX3NpZ3Byb2NtYXNrPTEKZmkKCiAgZmkKICBpZiB0ZXN0
IC16ICIkZ2xfY3ZfZnVuY19zaWdwcm9jbWFzayI7IHRoZW4KICAgIEhBVkVfUE9TSVhfU0lHTkFM
QkxPQ0tJTkc9MAogIGZpCgogICAgICBpZiB0ZXN0ICRIQVZFX1BPU0lYX1NJR05BTEJMT0NLSU5H
ID0gMDsgdGhlbgoKCgoKCgoKCiAgZ2xfTElCT0JKUz0iJGdsX0xJQk9CSlMgc2lncHJvY21hc2su
JGFjX29iamV4dCIKCiAgICAgICAgOgogICAgICBmaQoKCgoKCiAgICAgICAgICBHTlVMSUJfU0lH
UFJPQ01BU0s9MQoKCgoKCiRhc19lY2hvICIjZGVmaW5lIEdOVUxJQl9URVNUX1NJR1BST0NNQVNL
IDEiID4+Y29uZmRlZnMuaAoKCgogICAgICBnbF9nbnVsaWJfZW5hYmxlZF9zaWdwcm9jbWFzaz10
cnVlCiAgICAgIGlmIHRlc3QgJEhBVkVfUE9TSVhfU0lHTkFMQkxPQ0tJTkcgPSAwOyB0aGVuCiAg
ICAgICAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX2Y2OTFmMDc2ZjY1MDk2NGM5ZjU1OThjM2VlNDg3
NjE2CiAgICAgIGZpCiAgICAgIGlmIHRlc3QgJEhBVkVfUE9TSVhfU0lHTkFMQkxPQ0tJTkcgPSAw
OyB0aGVuCiAgICAgICAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX3JhaXNlCiAgICAgIGZpCiAgICBm
aQogIH0KICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfZjk4NTA2MzFkY2E5MTg1OWU5Y2RkYWM5MzU5
OTIxYzAgKCkKICB7CiAgICBpZiAhICRnbF9nbnVsaWJfZW5hYmxlZF9mOTg1MDYzMWRjYTkxODU5
ZTljZGRhYzkzNTk5MjFjMDsgdGhlbgoKCgoKICA6CgoKCgoKICBpZiB0ZXN0ICRhY19jdl9mdW5j
X3N0cmR1cCA9IHllczsgdGhlbgogICAgaWYgdGVzdCAkZ2xfY3ZfZnVuY19tYWxsb2NfcG9zaXgg
IT0geWVzOyB0aGVuCiAgICAgIFJFUExBQ0VfU1RSRFVQPTEKICAgIGZpCiAgZmkKCiAgOgoKCgoK
CiAgaWYgdGVzdCAkYWNfY3ZfaGF2ZV9kZWNsX3N0cmR1cCA9IG5vOyB0aGVuCiAgICBIQVZFX0RF
Q0xfU1RSRFVQPTAKICBmaQoKICAgICAgaWYgdGVzdCAkYWNfY3ZfZnVuY19zdHJkdXAgPSBubyB8
fCB0ZXN0ICRSRVBMQUNFX1NUUkRVUCA9IDE7IHRoZW4KCgoKCgoKCgogIGdsX0xJQk9CSlM9IiRn
bF9MSUJPQkpTIHN0cmR1cC4kYWNfb2JqZXh0IgoKICAgICAgICA6CiAgICAgIGZpCgoKCgoKICAg
ICAgICAgIEdOVUxJQl9TVFJEVVA9MQoKCgoKCiRhc19lY2hvICIjZGVmaW5lIEdOVUxJQl9URVNU
X1NUUkRVUCAxIiA+PmNvbmZkZWZzLmgKCgoKICAgICAgZ2xfZ251bGliX2VuYWJsZWRfZjk4NTA2
MzFkY2E5MTg1OWU5Y2RkYWM5MzU5OTIxYzA9dHJ1ZQogICAgZmkKICB9CiAgZnVuY19nbF9nbnVs
aWJfbTRjb2RlX3N0cmVycm9yICgpCiAgewogICAgaWYgISAkZ2xfZ251bGliX2VuYWJsZWRfc3Ry
ZXJyb3I7IHRoZW4KCgoKCgogIGlmIHRlc3QgIiRFUlJOT19IOiRSRVBMQUNFX1NUUkVSUk9SXzAi
ID0gOjA7IHRoZW4KICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog
Y2hlY2tpbmcgZm9yIHdvcmtpbmcgc3RyZXJyb3IgZnVuY3Rpb24iID4mNQokYXNfZWNob19uICJj
aGVja2luZyBmb3Igd29ya2luZyBzdHJlcnJvciBmdW5jdGlvbi4uLiAiID4mNjsgfQppZiAke2ds
X2N2X2Z1bmNfd29ya2luZ19zdHJlcnJvcis6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAi
KGNhY2hlZCkgIiA+JjYKZWxzZQogIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0
aGVuIDoKICBjYXNlICIkaG9zdF9vcyIgaW4KICAgICAgICAgICAgICAgICAgICMgR3Vlc3MgeWVz
IG9uIGdsaWJjIHN5c3RlbXMuCiAgICAgICAgICAgKi1nbnUqKSBnbF9jdl9mdW5jX3dvcmtpbmdf
c3RyZXJyb3I9Imd1ZXNzaW5nIHllcyIgOzsKICAgICAgICAgICAgICAgICAgICMgSWYgd2UgZG9u
J3Qga25vdywgYXNzdW1lIHRoZSB3b3JzdC4KICAgICAgICAgICAqKSAgICAgIGdsX2N2X2Z1bmNf
d29ya2luZ19zdHJlcnJvcj0iZ3Vlc3Npbmcgbm8iIDs7CiAgICAgICAgIGVzYWMKCmVsc2UKICBj
YXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVm
cy5oLiAgKi8KI2luY2x1ZGUgPHN0cmluZy5oPgoKaW50Cm1haW4gKCkKewppZiAoISpzdHJlcnJv
ciAoLTIpKSByZXR1cm4gMTsKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5
X3J1biAiJExJTkVOTyI7IHRoZW4gOgogIGdsX2N2X2Z1bmNfd29ya2luZ19zdHJlcnJvcj15ZXMK
ZWxzZQogIGdsX2N2X2Z1bmNfd29ya2luZ19zdHJlcnJvcj1ubwpmaQpybSAtZiBjb3JlICouY29y
ZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCiAg
Y29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKZmkKCgpm
aQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2
X2Z1bmNfd29ya2luZ19zdHJlcnJvciIgPiY1CiRhc19lY2hvICIkZ2xfY3ZfZnVuY193b3JraW5n
X3N0cmVycm9yIiA+JjY7IH0KICAgIGNhc2UgIiRnbF9jdl9mdW5jX3dvcmtpbmdfc3RyZXJyb3Ii
IGluCiAgICAgICp5ZXMpIDs7CiAgICAgICopCiAgICAgICAgICAgICAgICAgICAgICAgIFJFUExB
Q0VfU1RSRVJST1I9MQogICAgICAgIDs7CiAgICBlc2FjCgogIGVsc2UKICAgICAgICAgICAgUkVQ
TEFDRV9TVFJFUlJPUj0xCiAgZmkKCiAgICAgIGlmIHRlc3QgJFJFUExBQ0VfU1RSRVJST1IgPSAx
OyB0aGVuCgoKCgoKCgoKICBnbF9MSUJPQkpTPSIkZ2xfTElCT0JKUyBzdHJlcnJvci4kYWNfb2Jq
ZXh0IgoKICAgICAgZmkKCgpjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgR05VTElC
X1NUUkVSUk9SIDEKX0FDRU9GCgoKCgoKCgogICAgICAgICAgR05VTElCX1NUUkVSUk9SPTEKCgoK
CgokYXNfZWNobyAiI2RlZmluZSBHTlVMSUJfVEVTVF9TVFJFUlJPUiAxIiA+PmNvbmZkZWZzLmgK
CgoKICAgICAgZ2xfZ251bGliX2VuYWJsZWRfc3RyZXJyb3I9dHJ1ZQogICAgICBpZiB0ZXN0ICRS
RVBMQUNFX1NUUkVSUk9SID0gMTsgdGhlbgogICAgICAgIGZ1bmNfZ2xfZ251bGliX200Y29kZV9p
bnRwcm9wcwogICAgICBmaQogICAgICBpZiB0ZXN0ICRSRVBMQUNFX1NUUkVSUk9SID0gMTsgdGhl
bgogICAgICAgIGZ1bmNfZ2xfZ251bGliX200Y29kZV9kYmI1N2Y0OTM1MmJlOGZiODY4Njk2Mjlh
MjU0ZmI3MgogICAgICBmaQogICAgZmkKICB9CiAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX2RiYjU3
ZjQ5MzUyYmU4ZmI4Njg2OTYyOWEyNTRmYjcyICgpCiAgewogICAgaWYgISAkZ2xfZ251bGliX2Vu
YWJsZWRfZGJiNTdmNDkzNTJiZThmYjg2ODY5NjI5YTI1NGZiNzI7IHRoZW4KCgogICAgICBpZiB0
ZXN0IC1uICIkRVJSTk9fSCIgfHwgdGVzdCAkUkVQTEFDRV9TVFJFUlJPUl8wID0gMTsgdGhlbgoK
CgoKCgoKCiAgZ2xfTElCT0JKUz0iJGdsX0xJQk9CSlMgc3RyZXJyb3Itb3ZlcnJpZGUuJGFjX29i
amV4dCIKCgoKCgogIDoKCgoKCgogIGlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zeXNfc29ja2V0X2gg
IT0geWVzOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgZm9yIGFjX2hlYWRlciBpbiB3aW5zb2Nr
Mi5oCmRvIDoKICBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAid2luc29j
azIuaCIgImFjX2N2X2hlYWRlcl93aW5zb2NrMl9oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCmlm
IHRlc3QgIngkYWNfY3ZfaGVhZGVyX3dpbnNvY2syX2giID0geHllczsgdGhlbiA6CiAgY2F0ID4+
Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5lIEhBVkVfV0lOU09DSzJfSCAxCl9BQ0VPRgoKZmkK
CmRvbmUKCiAgZmkKICBpZiB0ZXN0ICIkYWNfY3ZfaGVhZGVyX3dpbnNvY2syX2giID0geWVzOyB0
aGVuCiAgICBIQVZFX1dJTlNPQ0syX0g9MQogICAgVU5JU1REX0hfSEFWRV9XSU5TT0NLMl9IPTEK
ICAgIFNZU19JT0NUTF9IX0hBVkVfV0lOU09DSzJfSD0xCiAgZWxzZQogICAgSEFWRV9XSU5TT0NL
Ml9IPTAKICBmaQoKCiAgICAgIGZpCiAgICAgIGdsX2dudWxpYl9lbmFibGVkX2RiYjU3ZjQ5MzUy
YmU4ZmI4Njg2OTYyOWEyNTRmYjcyPXRydWUKICAgIGZpCiAgfQogIGZ1bmNfZ2xfZ251bGliX200
Y29kZV90ZW1wbmFtZSAoKQogIHsKICAgIGlmICEgJGdsX2dudWxpYl9lbmFibGVkX3RlbXBuYW1l
OyB0aGVuCgoKICA6CgoKICAgICAgZ2xfZ251bGliX2VuYWJsZWRfdGVtcG5hbWU9dHJ1ZQogICAg
ICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfbHN0YXQKICAgICAgZnVuY19nbF9nbnVsaWJfbTRjb2Rl
X3NlY3VyZV9nZXRlbnYKICAgIGZpCiAgfQogIGZ1bmNfZ2xfZ251bGliX200Y29kZV90aHJlYWRs
aWIgKCkKICB7CiAgICBpZiAhICRnbF9nbnVsaWJfZW5hYmxlZF90aHJlYWRsaWI7IHRoZW4KCgoK
CiAgICAgIGdsX2dudWxpYl9lbmFibGVkX3RocmVhZGxpYj10cnVlCiAgICAgIGZ1bmNfZ2xfZ251
bGliX200Y29kZV9oYXZlbGliCiAgICBmaQogIH0KICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfdGxz
ICgpCiAgewogICAgaWYgISAkZ2xfZ251bGliX2VuYWJsZWRfdGxzOyB0aGVuCgoKCiAgICAgIGds
X2dudWxpYl9lbmFibGVkX3Rscz10cnVlCiAgICAgIGZ1bmNfZ2xfZ251bGliX200Y29kZV90aHJl
YWRsaWIKICAgIGZpCiAgfQogIGlmIHRlc3QgJGFjX2N2X2xpYl9lcnJvcl9hdF9saW5lID0gbm87
IHRoZW4KICAgIGZ1bmNfZ2xfZ251bGliX200Y29kZV82NzYyMjBmYTQzNjZlZmE5YmRiZmNjZjEx
YTg1N2MwNwogIGZpCiAgaWYgdGVzdCAkYWNfY3ZfbGliX2Vycm9yX2F0X2xpbmUgPSBubzsgdGhl
bgogICAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX3N0cmVycm9yCiAgZmkKICBpZiB0ZXN0ICRIQVZF
X0ZDTlRMID0gMCB8fCB0ZXN0ICRSRVBMQUNFX0ZDTlRMID0gMTsgdGhlbgogICAgZnVuY19nbF9n
bnVsaWJfbTRjb2RlX2Nsb3NlCiAgZmkKICBpZiB0ZXN0ICRIQVZFX0ZDTlRMID0gMCB8fCB0ZXN0
ICRSRVBMQUNFX0ZDTlRMID0gMTsgdGhlbgogICAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX2R1cDIK
ICBmaQogIGlmIHRlc3QgJEhBVkVfRkNOVEwgPSAwIHx8IHRlc3QgJFJFUExBQ0VfRkNOVEwgPSAx
OyB0aGVuCiAgICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfZ2V0ZHRhYmxlc2l6ZQogIGZpCiAgaWYg
dGVzdCAkSEFWRV9GQ05UTCA9IDAgfHwgdGVzdCAkUkVQTEFDRV9GQ05UTCA9IDE7IHRoZW4KICAg
IGZ1bmNfZ2xfZ251bGliX200Y29kZV82NzYyMjBmYTQzNjZlZmE5YmRiZmNjZjExYTg1N2MwNwog
IGZpCiAgaWYgdGVzdCAkUkVQTEFDRV9TVEFUID0gMTsgdGhlbgogICAgZnVuY19nbF9nbnVsaWJf
bTRjb2RlX2Y2OTFmMDc2ZjY1MDk2NGM5ZjU1OThjM2VlNDg3NjE2CiAgZmkKICBpZiB0ZXN0ICRS
RVBMQUNFX0dFVENXRCA9IDE7IHRoZW4KICAgIGZ1bmNfZ2xfZ251bGliX200Y29kZV83NWM2NWEy
YzAxNGNmODIzNWRkOTUyODk2NzYzMDJhNAogIGZpCiAgaWYgdGVzdCAkUkVQTEFDRV9HRVRDV0Qg
PSAxOyB0aGVuCiAgICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfZmRvcGVuZGlyCiAgZmkKICBpZiB0
ZXN0ICRSRVBMQUNFX0dFVENXRCA9IDE7IHRoZW4KICAgIGZ1bmNfZ2xfZ251bGliX200Y29kZV9m
c3RhdGF0CiAgZmkKICBpZiB0ZXN0ICRSRVBMQUNFX0dFVENXRCA9IDE7IHRoZW4KICAgIGZ1bmNf
Z2xfZ251bGliX200Y29kZV9tZW1wY3B5CiAgZmkKICBpZiB0ZXN0ICRSRVBMQUNFX0dFVENXRCA9
IDE7IHRoZW4KICAgIGZ1bmNfZ2xfZ251bGliX200Y29kZV9vcGVuYXQKICBmaQogIGlmIHRlc3Qg
JFJFUExBQ0VfR0VUQ1dEID0gMTsgdGhlbgogICAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX3BhdGht
YXgKICBmaQogIGlmIHRlc3QgJFJFUExBQ0VfR0VUQ1dEID0gMTsgdGhlbgogICAgZnVuY19nbF9n
bnVsaWJfbTRjb2RlX3JlYWRkaXIKICBmaQogIGlmIHRlc3QgJFJFUExBQ0VfR0VUQ1dEID0gMTsg
dGhlbgogICAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX3Jld2luZGRpcgogIGZpCiAgaWYgdGVzdCAk
UkVQTEFDRV9HRVRDV0QgPSAxOyB0aGVuCiAgICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfZjk4NTA2
MzFkY2E5MTg1OWU5Y2RkYWM5MzU5OTIxYzAKICBmaQogIGlmIHRlc3QgJEhBVkVfTUtTVEVNUCA9
IDAgfHwgdGVzdCAkUkVQTEFDRV9NS1NURU1QID0gMTsgdGhlbgogICAgZnVuY19nbF9nbnVsaWJf
bTRjb2RlX3RlbXBuYW1lCiAgZmkKICBpZiB0ZXN0ICRIQVZFX1NJR0FDVElPTiA9IDA7IHRoZW4K
ICAgIGZ1bmNfZ2xfZ251bGliX200Y29kZV9zaWdwcm9jbWFzawogIGZpCiAgaWYgdGVzdCAkUkVQ
TEFDRV9TUFJJTlRGID0gMTsgdGhlbgogICAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX2ZwdWN3CiAg
ZmkKICBpZiB0ZXN0ICRSRVBMQUNFX1NQUklOVEYgPSAxOyB0aGVuCiAgICBmdW5jX2dsX2dudWxp
Yl9tNGNvZGVfZTFjNmExMjgxY2UyY2M1OWM3MTY4OTQ1NTBiY2IyYjUKICBmaQogIGlmIHRlc3Qg
JFJFUExBQ0VfU1BSSU5URiA9IDE7IHRoZW4KICAgIGZ1bmNfZ2xfZ251bGliX200Y29kZV9lMGNh
ODE5MTJmMjMyMTRlNDRmNTcwMDkyMmRiMzRiZQogIGZpCiAgaWYgdGVzdCAkUkVQTEFDRV9TUFJJ
TlRGID0gMTsgdGhlbgogICAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX2IxZGY3MTE3YjQ3OWQyZGE1
OWQ3NmRlYmE0NjhlZTIxCiAgZmkKICBpZiB0ZXN0ICRSRVBMQUNFX1NQUklOVEYgPSAxOyB0aGVu
CiAgICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfZGJkZjIyODY4YTUzNjdmMjhiZjE4ZTAwMTNhYzZm
OGYKICBmaQogIGlmIHRlc3QgJFJFUExBQ0VfU1BSSU5URiA9IDE7IHRoZW4KICAgIGZ1bmNfZ2xf
Z251bGliX200Y29kZV8yZjU1MWE2ODRhYWI1NDAwNjMzY2JmZDU2ZGYzYmY5NAogIGZpCiAgaWYg
dGVzdCAkUkVQTEFDRV9TUFJJTlRGID0gMTsgdGhlbgogICAgZnVuY19nbF9nbnVsaWJfbTRjb2Rl
X2JiYTYzOWYwY2ZkNjU4NTQwZDcxNmYzYTJiYTVlNjhmCiAgZmkKICBpZiB0ZXN0ICRSRVBMQUNF
X1NQUklOVEYgPSAxOyB0aGVuCiAgICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfc2lnbmJpdAogIGZp
CiAgaWYgdGVzdCAkUkVQTEFDRV9TVEFUID0gMTsgdGhlbgogICAgZnVuY19nbF9nbnVsaWJfbTRj
b2RlX2Rvc25hbWUKICBmaQogIGlmIHRlc3QgJFJFUExBQ0VfU1RBVCA9IDE7IHRoZW4KICAgIGZ1
bmNfZ2xfZ251bGliX200Y29kZV9wYXRobWF4CiAgZmkKICBpZiB0ZXN0ICRIQVZFX1NUUlNJR05B
TCA9IDAgfHwgdGVzdCAkUkVQTEFDRV9TVFJTSUdOQUwgPSAxOyB0aGVuCiAgICBmdW5jX2dsX2du
dWxpYl9tNGNvZGVfbG9jawogIGZpCiAgaWYgdGVzdCAkSEFWRV9TVFJTSUdOQUwgPSAwIHx8IHRl
c3QgJFJFUExBQ0VfU1RSU0lHTkFMID0gMTsgdGhlbgogICAgZnVuY19nbF9nbnVsaWJfbTRjb2Rl
X3RscwogIGZpCgogICBpZiAkZ2xfZ251bGliX2VuYWJsZWRfMjYwOTQxYzBlNWRjNjdlYzllODdk
MWZiMzIxYzMwMGI7IHRoZW4KICBnbF9HTlVMSUJfRU5BQkxFRF8yNjA5NDFjMGU1ZGM2N2VjOWU4
N2QxZmIzMjFjMzAwYl9UUlVFPQogIGdsX0dOVUxJQl9FTkFCTEVEXzI2MDk0MWMwZTVkYzY3ZWM5
ZTg3ZDFmYjMyMWMzMDBiX0ZBTFNFPScjJwplbHNlCiAgZ2xfR05VTElCX0VOQUJMRURfMjYwOTQx
YzBlNWRjNjdlYzllODdkMWZiMzIxYzMwMGJfVFJVRT0nIycKICBnbF9HTlVMSUJfRU5BQkxFRF8y
NjA5NDFjMGU1ZGM2N2VjOWU4N2QxZmIzMjFjMzAwYl9GQUxTRT0KZmkKCiAgIGlmICRnbF9nbnVs
aWJfZW5hYmxlZF9jaGRpcjsgdGhlbgogIGdsX0dOVUxJQl9FTkFCTEVEX2NoZGlyX1RSVUU9CiAg
Z2xfR05VTElCX0VOQUJMRURfY2hkaXJfRkFMU0U9JyMnCmVsc2UKICBnbF9HTlVMSUJfRU5BQkxF
RF9jaGRpcl9UUlVFPScjJwogIGdsX0dOVUxJQl9FTkFCTEVEX2NoZGlyX0ZBTFNFPQpmaQoKICAg
aWYgJGdsX2dudWxpYl9lbmFibGVkXzgxOThkYWFlMjYxYjkzMmQ2NGE5OThmODU4NmY1MDA1OyB0
aGVuCiAgZ2xfR05VTElCX0VOQUJMRURfODE5OGRhYWUyNjFiOTMyZDY0YTk5OGY4NTg2ZjUwMDVf
VFJVRT0KICBnbF9HTlVMSUJfRU5BQkxFRF84MTk4ZGFhZTI2MWI5MzJkNjRhOTk4Zjg1ODZmNTAw
NV9GQUxTRT0nIycKZWxzZQogIGdsX0dOVUxJQl9FTkFCTEVEXzgxOThkYWFlMjYxYjkzMmQ2NGE5
OThmODU4NmY1MDA1X1RSVUU9JyMnCiAgZ2xfR05VTElCX0VOQUJMRURfODE5OGRhYWUyNjFiOTMy
ZDY0YTk5OGY4NTg2ZjUwMDVfRkFMU0U9CmZpCgogICBpZiAkZ2xfZ251bGliX2VuYWJsZWRfY2xv
ZXhlYzsgdGhlbgogIGdsX0dOVUxJQl9FTkFCTEVEX2Nsb2V4ZWNfVFJVRT0KICBnbF9HTlVMSUJf
RU5BQkxFRF9jbG9leGVjX0ZBTFNFPScjJwplbHNlCiAgZ2xfR05VTElCX0VOQUJMRURfY2xvZXhl
Y19UUlVFPScjJwogIGdsX0dOVUxJQl9FTkFCTEVEX2Nsb2V4ZWNfRkFMU0U9CmZpCgogICBpZiAk
Z2xfZ251bGliX2VuYWJsZWRfY2xvc2U7IHRoZW4KICBnbF9HTlVMSUJfRU5BQkxFRF9jbG9zZV9U
UlVFPQogIGdsX0dOVUxJQl9FTkFCTEVEX2Nsb3NlX0ZBTFNFPScjJwplbHNlCiAgZ2xfR05VTElC
X0VOQUJMRURfY2xvc2VfVFJVRT0nIycKICBnbF9HTlVMSUJfRU5BQkxFRF9jbG9zZV9GQUxTRT0K
ZmkKCiAgIGlmICRnbF9nbnVsaWJfZW5hYmxlZF83NWM2NWEyYzAxNGNmODIzNWRkOTUyODk2NzYz
MDJhNDsgdGhlbgogIGdsX0dOVUxJQl9FTkFCTEVEXzc1YzY1YTJjMDE0Y2Y4MjM1ZGQ5NTI4OTY3
NjMwMmE0X1RSVUU9CiAgZ2xfR05VTElCX0VOQUJMRURfNzVjNjVhMmMwMTRjZjgyMzVkZDk1Mjg5
Njc2MzAyYTRfRkFMU0U9JyMnCmVsc2UKICBnbF9HTlVMSUJfRU5BQkxFRF83NWM2NWEyYzAxNGNm
ODIzNWRkOTUyODk2NzYzMDJhNF9UUlVFPScjJwogIGdsX0dOVUxJQl9FTkFCTEVEXzc1YzY1YTJj
MDE0Y2Y4MjM1ZGQ5NTI4OTY3NjMwMmE0X0ZBTFNFPQpmaQoKICAgaWYgJGdsX2dudWxpYl9lbmFi
bGVkX2RpcmZkOyB0aGVuCiAgZ2xfR05VTElCX0VOQUJMRURfZGlyZmRfVFJVRT0KICBnbF9HTlVM
SUJfRU5BQkxFRF9kaXJmZF9GQUxTRT0nIycKZWxzZQogIGdsX0dOVUxJQl9FTkFCTEVEX2RpcmZk
X1RSVUU9JyMnCiAgZ2xfR05VTElCX0VOQUJMRURfZGlyZmRfRkFMU0U9CmZpCgogICBpZiAkZ2xf
Z251bGliX2VuYWJsZWRfYTY5MWRhOTljMWQ4M2I4MzIzOGU0NWY0MWE2OTZmNWM7IHRoZW4KICBn
bF9HTlVMSUJfRU5BQkxFRF9hNjkxZGE5OWMxZDgzYjgzMjM4ZTQ1ZjQxYTY5NmY1Y19UUlVFPQog
IGdsX0dOVUxJQl9FTkFCTEVEX2E2OTFkYTk5YzFkODNiODMyMzhlNDVmNDFhNjk2ZjVjX0ZBTFNF
PScjJwplbHNlCiAgZ2xfR05VTElCX0VOQUJMRURfYTY5MWRhOTljMWQ4M2I4MzIzOGU0NWY0MWE2
OTZmNWNfVFJVRT0nIycKICBnbF9HTlVMSUJfRU5BQkxFRF9hNjkxZGE5OWMxZDgzYjgzMjM4ZTQ1
ZjQxYTY5NmY1Y19GQUxTRT0KZmkKCiAgIGlmICRnbF9nbnVsaWJfZW5hYmxlZF9kb3NuYW1lOyB0
aGVuCiAgZ2xfR05VTElCX0VOQUJMRURfZG9zbmFtZV9UUlVFPQogIGdsX0dOVUxJQl9FTkFCTEVE
X2Rvc25hbWVfRkFMU0U9JyMnCmVsc2UKICBnbF9HTlVMSUJfRU5BQkxFRF9kb3NuYW1lX1RSVUU9
JyMnCiAgZ2xfR05VTElCX0VOQUJMRURfZG9zbmFtZV9GQUxTRT0KZmkKCiAgIGlmICRnbF9nbnVs
aWJfZW5hYmxlZF9kdXA7IHRoZW4KICBnbF9HTlVMSUJfRU5BQkxFRF9kdXBfVFJVRT0KICBnbF9H
TlVMSUJfRU5BQkxFRF9kdXBfRkFMU0U9JyMnCmVsc2UKICBnbF9HTlVMSUJfRU5BQkxFRF9kdXBf
VFJVRT0nIycKICBnbF9HTlVMSUJfRU5BQkxFRF9kdXBfRkFMU0U9CmZpCgogICBpZiAkZ2xfZ251
bGliX2VuYWJsZWRfZHVwMjsgdGhlbgogIGdsX0dOVUxJQl9FTkFCTEVEX2R1cDJfVFJVRT0KICBn
bF9HTlVMSUJfRU5BQkxFRF9kdXAyX0ZBTFNFPScjJwplbHNlCiAgZ2xfR05VTElCX0VOQUJMRURf
ZHVwMl9UUlVFPScjJwogIGdsX0dOVUxJQl9FTkFCTEVEX2R1cDJfRkFMU0U9CmZpCgogICBpZiAk
Z2xfZ251bGliX2VuYWJsZWRfZmNoZGlyOyB0aGVuCiAgZ2xfR05VTElCX0VOQUJMRURfZmNoZGly
X1RSVUU9CiAgZ2xfR05VTElCX0VOQUJMRURfZmNoZGlyX0ZBTFNFPScjJwplbHNlCiAgZ2xfR05V
TElCX0VOQUJMRURfZmNoZGlyX1RSVUU9JyMnCiAgZ2xfR05VTElCX0VOQUJMRURfZmNoZGlyX0ZB
TFNFPQpmaQoKICAgaWYgJGdsX2dudWxpYl9lbmFibGVkXzQzZmU4N2EzNDFkOWI0YjkzYzQ3YzNh
ZDgxOWE1MjM5OyB0aGVuCiAgZ2xfR05VTElCX0VOQUJMRURfNDNmZTg3YTM0MWQ5YjRiOTNjNDdj
M2FkODE5YTUyMzlfVFJVRT0KICBnbF9HTlVMSUJfRU5BQkxFRF80M2ZlODdhMzQxZDliNGI5M2M0
N2MzYWQ4MTlhNTIzOV9GQUxTRT0nIycKZWxzZQogIGdsX0dOVUxJQl9FTkFCTEVEXzQzZmU4N2Ez
NDFkOWI0YjkzYzQ3YzNhZDgxOWE1MjM5X1RSVUU9JyMnCiAgZ2xfR05VTElCX0VOQUJMRURfNDNm
ZTg3YTM0MWQ5YjRiOTNjNDdjM2FkODE5YTUyMzlfRkFMU0U9CmZpCgogICBpZiAkZ2xfZ251bGli
X2VuYWJsZWRfZmRvcGVuZGlyOyB0aGVuCiAgZ2xfR05VTElCX0VOQUJMRURfZmRvcGVuZGlyX1RS
VUU9CiAgZ2xfR05VTElCX0VOQUJMRURfZmRvcGVuZGlyX0ZBTFNFPScjJwplbHNlCiAgZ2xfR05V
TElCX0VOQUJMRURfZmRvcGVuZGlyX1RSVUU9JyMnCiAgZ2xfR05VTElCX0VOQUJMRURfZmRvcGVu
ZGlyX0ZBTFNFPQpmaQoKICAgaWYgJGdsX2dudWxpYl9lbmFibGVkX2ZjYTk4NTJkYjJhNDNiYjMz
ZjAyZjBmYmRiYzE3NGY2OyB0aGVuCiAgZ2xfR05VTElCX0VOQUJMRURfZmNhOTg1MmRiMmE0M2Ji
MzNmMDJmMGZiZGJjMTc0ZjZfVFJVRT0KICBnbF9HTlVMSUJfRU5BQkxFRF9mY2E5ODUyZGIyYTQz
YmIzM2YwMmYwZmJkYmMxNzRmNl9GQUxTRT0nIycKZWxzZQogIGdsX0dOVUxJQl9FTkFCTEVEX2Zj
YTk4NTJkYjJhNDNiYjMzZjAyZjBmYmRiYzE3NGY2X1RSVUU9JyMnCiAgZ2xfR05VTElCX0VOQUJM
RURfZmNhOTg1MmRiMmE0M2JiMzNmMDJmMGZiZGJjMTc0ZjZfRkFMU0U9CmZpCgogICBpZiAkZ2xf
Z251bGliX2VuYWJsZWRfZnBpZWVlOyB0aGVuCiAgZ2xfR05VTElCX0VOQUJMRURfZnBpZWVlX1RS
VUU9CiAgZ2xfR05VTElCX0VOQUJMRURfZnBpZWVlX0ZBTFNFPScjJwplbHNlCiAgZ2xfR05VTElC
X0VOQUJMRURfZnBpZWVlX1RSVUU9JyMnCiAgZ2xfR05VTElCX0VOQUJMRURfZnBpZWVlX0ZBTFNF
PQpmaQoKICAgaWYgJGdsX2dudWxpYl9lbmFibGVkX2ZwdWN3OyB0aGVuCiAgZ2xfR05VTElCX0VO
QUJMRURfZnB1Y3dfVFJVRT0KICBnbF9HTlVMSUJfRU5BQkxFRF9mcHVjd19GQUxTRT0nIycKZWxz
ZQogIGdsX0dOVUxJQl9FTkFCTEVEX2ZwdWN3X1RSVUU9JyMnCiAgZ2xfR05VTElCX0VOQUJMRURf
ZnB1Y3dfRkFMU0U9CmZpCgogICBpZiAkZ2xfZ251bGliX2VuYWJsZWRfZTFjNmExMjgxY2UyY2M1
OWM3MTY4OTQ1NTBiY2IyYjU7IHRoZW4KICBnbF9HTlVMSUJfRU5BQkxFRF9lMWM2YTEyODFjZTJj
YzU5YzcxNjg5NDU1MGJjYjJiNV9UUlVFPQogIGdsX0dOVUxJQl9FTkFCTEVEX2UxYzZhMTI4MWNl
MmNjNTljNzE2ODk0NTUwYmNiMmI1X0ZBTFNFPScjJwplbHNlCiAgZ2xfR05VTElCX0VOQUJMRURf
ZTFjNmExMjgxY2UyY2M1OWM3MTY4OTQ1NTBiY2IyYjVfVFJVRT0nIycKICBnbF9HTlVMSUJfRU5B
QkxFRF9lMWM2YTEyODFjZTJjYzU5YzcxNjg5NDU1MGJjYjJiNV9GQUxTRT0KZmkKCiAgIGlmICRn
bF9nbnVsaWJfZW5hYmxlZF9lMGNhODE5MTJmMjMyMTRlNDRmNTcwMDkyMmRiMzRiZTsgdGhlbgog
IGdsX0dOVUxJQl9FTkFCTEVEX2UwY2E4MTkxMmYyMzIxNGU0NGY1NzAwOTIyZGIzNGJlX1RSVUU9
CiAgZ2xfR05VTElCX0VOQUJMRURfZTBjYTgxOTEyZjIzMjE0ZTQ0ZjU3MDA5MjJkYjM0YmVfRkFM
U0U9JyMnCmVsc2UKICBnbF9HTlVMSUJfRU5BQkxFRF9lMGNhODE5MTJmMjMyMTRlNDRmNTcwMDky
MmRiMzRiZV9UUlVFPScjJwogIGdsX0dOVUxJQl9FTkFCTEVEX2UwY2E4MTkxMmYyMzIxNGU0NGY1
NzAwOTIyZGIzNGJlX0ZBTFNFPQpmaQoKICAgaWYgJGdsX2dudWxpYl9lbmFibGVkX2ZzdGF0YXQ7
IHRoZW4KICBnbF9HTlVMSUJfRU5BQkxFRF9mc3RhdGF0X1RSVUU9CiAgZ2xfR05VTElCX0VOQUJM
RURfZnN0YXRhdF9GQUxTRT0nIycKZWxzZQogIGdsX0dOVUxJQl9FTkFCTEVEX2ZzdGF0YXRfVFJV
RT0nIycKICBnbF9HTlVMSUJfRU5BQkxFRF9mc3RhdGF0X0ZBTFNFPQpmaQoKICAgaWYgJGdsX2du
dWxpYl9lbmFibGVkXzNkMDk0ZWY1NDJiZmRkMjM4YTUxOTRlMTcyYmZlNWY2OyB0aGVuCiAgZ2xf
R05VTElCX0VOQUJMRURfM2QwOTRlZjU0MmJmZGQyMzhhNTE5NGUxNzJiZmU1ZjZfVFJVRT0KICBn
bF9HTlVMSUJfRU5BQkxFRF8zZDA5NGVmNTQyYmZkZDIzOGE1MTk0ZTE3MmJmZTVmNl9GQUxTRT0n
IycKZWxzZQogIGdsX0dOVUxJQl9FTkFCTEVEXzNkMDk0ZWY1NDJiZmRkMjM4YTUxOTRlMTcyYmZl
NWY2X1RSVUU9JyMnCiAgZ2xfR05VTElCX0VOQUJMRURfM2QwOTRlZjU0MmJmZGQyMzhhNTE5NGUx
NzJiZmU1ZjZfRkFMU0U9CmZpCgogICBpZiAkZ2xfZ251bGliX2VuYWJsZWRfZ2V0ZHRhYmxlc2l6
ZTsgdGhlbgogIGdsX0dOVUxJQl9FTkFCTEVEX2dldGR0YWJsZXNpemVfVFJVRT0KICBnbF9HTlVM
SUJfRU5BQkxFRF9nZXRkdGFibGVzaXplX0ZBTFNFPScjJwplbHNlCiAgZ2xfR05VTElCX0VOQUJM
RURfZ2V0ZHRhYmxlc2l6ZV9UUlVFPScjJwogIGdsX0dOVUxJQl9FTkFCTEVEX2dldGR0YWJsZXNp
emVfRkFMU0U9CmZpCgogICBpZiAkZ2xfZ251bGliX2VuYWJsZWRfaGF2ZWxpYjsgdGhlbgogIGds
X0dOVUxJQl9FTkFCTEVEX2hhdmVsaWJfVFJVRT0KICBnbF9HTlVMSUJfRU5BQkxFRF9oYXZlbGli
X0ZBTFNFPScjJwplbHNlCiAgZ2xfR05VTElCX0VOQUJMRURfaGF2ZWxpYl9UUlVFPScjJwogIGds
X0dOVUxJQl9FTkFCTEVEX2hhdmVsaWJfRkFMU0U9CmZpCgogICBpZiAkZ2xfZ251bGliX2VuYWJs
ZWRfaW50cHJvcHM7IHRoZW4KICBnbF9HTlVMSUJfRU5BQkxFRF9pbnRwcm9wc19UUlVFPQogIGds
X0dOVUxJQl9FTkFCTEVEX2ludHByb3BzX0ZBTFNFPScjJwplbHNlCiAgZ2xfR05VTElCX0VOQUJM
RURfaW50cHJvcHNfVFJVRT0nIycKICBnbF9HTlVMSUJfRU5BQkxFRF9pbnRwcm9wc19GQUxTRT0K
ZmkKCiAgIGlmICRnbF9nbnVsaWJfZW5hYmxlZF9iMWRmNzExN2I0NzlkMmRhNTlkNzZkZWJhNDY4
ZWUyMTsgdGhlbgogIGdsX0dOVUxJQl9FTkFCTEVEX2IxZGY3MTE3YjQ3OWQyZGE1OWQ3NmRlYmE0
NjhlZTIxX1RSVUU9CiAgZ2xfR05VTElCX0VOQUJMRURfYjFkZjcxMTdiNDc5ZDJkYTU5ZDc2ZGVi
YTQ2OGVlMjFfRkFMU0U9JyMnCmVsc2UKICBnbF9HTlVMSUJfRU5BQkxFRF9iMWRmNzExN2I0Nzlk
MmRhNTlkNzZkZWJhNDY4ZWUyMV9UUlVFPScjJwogIGdsX0dOVUxJQl9FTkFCTEVEX2IxZGY3MTE3
YjQ3OWQyZGE1OWQ3NmRlYmE0NjhlZTIxX0ZBTFNFPQpmaQoKICAgaWYgJGdsX2dudWxpYl9lbmFi
bGVkXzNmMGU1OTMwMzNkMWZjMmMxMjc1ODE5NjBmNjQxYjY2OyB0aGVuCiAgZ2xfR05VTElCX0VO
QUJMRURfM2YwZTU5MzAzM2QxZmMyYzEyNzU4MTk2MGY2NDFiNjZfVFJVRT0KICBnbF9HTlVMSUJf
RU5BQkxFRF8zZjBlNTkzMDMzZDFmYzJjMTI3NTgxOTYwZjY0MWI2Nl9GQUxTRT0nIycKZWxzZQog
IGdsX0dOVUxJQl9FTkFCTEVEXzNmMGU1OTMwMzNkMWZjMmMxMjc1ODE5NjBmNjQxYjY2X1RSVUU9
JyMnCiAgZ2xfR05VTElCX0VOQUJMRURfM2YwZTU5MzAzM2QxZmMyYzEyNzU4MTk2MGY2NDFiNjZf
RkFMU0U9CmZpCgogICBpZiAkZ2xfZ251bGliX2VuYWJsZWRfZGJkZjIyODY4YTUzNjdmMjhiZjE4
ZTAwMTNhYzZmOGY7IHRoZW4KICBnbF9HTlVMSUJfRU5BQkxFRF9kYmRmMjI4NjhhNTM2N2YyOGJm
MThlMDAxM2FjNmY4Zl9UUlVFPQogIGdsX0dOVUxJQl9FTkFCTEVEX2RiZGYyMjg2OGE1MzY3ZjI4
YmYxOGUwMDEzYWM2ZjhmX0ZBTFNFPScjJwplbHNlCiAgZ2xfR05VTElCX0VOQUJMRURfZGJkZjIy
ODY4YTUzNjdmMjhiZjE4ZTAwMTNhYzZmOGZfVFJVRT0nIycKICBnbF9HTlVMSUJfRU5BQkxFRF9k
YmRmMjI4NjhhNTM2N2YyOGJmMThlMDAxM2FjNmY4Zl9GQUxTRT0KZmkKCiAgIGlmICRnbF9nbnVs
aWJfZW5hYmxlZF9sb2NrOyB0aGVuCiAgZ2xfR05VTElCX0VOQUJMRURfbG9ja19UUlVFPQogIGds
X0dOVUxJQl9FTkFCTEVEX2xvY2tfRkFMU0U9JyMnCmVsc2UKICBnbF9HTlVMSUJfRU5BQkxFRF9s
b2NrX1RSVUU9JyMnCiAgZ2xfR05VTElCX0VOQUJMRURfbG9ja19GQUxTRT0KZmkKCiAgIGlmICRn
bF9nbnVsaWJfZW5hYmxlZF9sc3RhdDsgdGhlbgogIGdsX0dOVUxJQl9FTkFCTEVEX2xzdGF0X1RS
VUU9CiAgZ2xfR05VTElCX0VOQUJMRURfbHN0YXRfRkFMU0U9JyMnCmVsc2UKICBnbF9HTlVMSUJf
RU5BQkxFRF9sc3RhdF9UUlVFPScjJwogIGdsX0dOVUxJQl9FTkFCTEVEX2xzdGF0X0ZBTFNFPQpm
aQoKICAgaWYgJGdsX2dudWxpYl9lbmFibGVkX21hdGg7IHRoZW4KICBnbF9HTlVMSUJfRU5BQkxF
RF9tYXRoX1RSVUU9CiAgZ2xfR05VTElCX0VOQUJMRURfbWF0aF9GQUxTRT0nIycKZWxzZQogIGds
X0dOVUxJQl9FTkFCTEVEX21hdGhfVFJVRT0nIycKICBnbF9HTlVMSUJfRU5BQkxFRF9tYXRoX0ZB
TFNFPQpmaQoKICAgaWYgJGdsX2dudWxpYl9lbmFibGVkX21lbXBjcHk7IHRoZW4KICBnbF9HTlVM
SUJfRU5BQkxFRF9tZW1wY3B5X1RSVUU9CiAgZ2xfR05VTElCX0VOQUJMRURfbWVtcGNweV9GQUxT
RT0nIycKZWxzZQogIGdsX0dOVUxJQl9FTkFCTEVEX21lbXBjcHlfVFJVRT0nIycKICBnbF9HTlVM
SUJfRU5BQkxFRF9tZW1wY3B5X0ZBTFNFPQpmaQoKICAgaWYgJGdsX2dudWxpYl9lbmFibGVkX21l
bXJjaHI7IHRoZW4KICBnbF9HTlVMSUJfRU5BQkxFRF9tZW1yY2hyX1RSVUU9CiAgZ2xfR05VTElC
X0VOQUJMRURfbWVtcmNocl9GQUxTRT0nIycKZWxzZQogIGdsX0dOVUxJQl9FTkFCTEVEX21lbXJj
aHJfVFJVRT0nIycKICBnbF9HTlVMSUJfRU5BQkxFRF9tZW1yY2hyX0ZBTFNFPQpmaQoKICAgaWYg
JGdsX2dudWxpYl9lbmFibGVkX2Y2OTFmMDc2ZjY1MDk2NGM5ZjU1OThjM2VlNDg3NjE2OyB0aGVu
CiAgZ2xfR05VTElCX0VOQUJMRURfZjY5MWYwNzZmNjUwOTY0YzlmNTU5OGMzZWU0ODc2MTZfVFJV
RT0KICBnbF9HTlVMSUJfRU5BQkxFRF9mNjkxZjA3NmY2NTA5NjRjOWY1NTk4YzNlZTQ4NzYxNl9G
QUxTRT0nIycKZWxzZQogIGdsX0dOVUxJQl9FTkFCTEVEX2Y2OTFmMDc2ZjY1MDk2NGM5ZjU1OThj
M2VlNDg3NjE2X1RSVUU9JyMnCiAgZ2xfR05VTElCX0VOQUJMRURfZjY5MWYwNzZmNjUwOTY0Yzlm
NTU5OGMzZWU0ODc2MTZfRkFMU0U9CmZpCgogICBpZiAkZ2xfZ251bGliX2VuYWJsZWRfNjc2MjIw
ZmE0MzY2ZWZhOWJkYmZjY2YxMWE4NTdjMDc7IHRoZW4KICBnbF9HTlVMSUJfRU5BQkxFRF82NzYy
MjBmYTQzNjZlZmE5YmRiZmNjZjExYTg1N2MwN19UUlVFPQogIGdsX0dOVUxJQl9FTkFCTEVEXzY3
NjIyMGZhNDM2NmVmYTliZGJmY2NmMTFhODU3YzA3X0ZBTFNFPScjJwplbHNlCiAgZ2xfR05VTElC
X0VOQUJMRURfNjc2MjIwZmE0MzY2ZWZhOWJkYmZjY2YxMWE4NTdjMDdfVFJVRT0nIycKICBnbF9H
TlVMSUJfRU5BQkxFRF82NzYyMjBmYTQzNjZlZmE5YmRiZmNjZjExYTg1N2MwN19GQUxTRT0KZmkK
CiAgIGlmICRnbF9nbnVsaWJfZW5hYmxlZF9vcGVuYXQ7IHRoZW4KICBnbF9HTlVMSUJfRU5BQkxF
RF9vcGVuYXRfVFJVRT0KICBnbF9HTlVMSUJfRU5BQkxFRF9vcGVuYXRfRkFMU0U9JyMnCmVsc2UK
ICBnbF9HTlVMSUJfRU5BQkxFRF9vcGVuYXRfVFJVRT0nIycKICBnbF9HTlVMSUJfRU5BQkxFRF9v
cGVuYXRfRkFMU0U9CmZpCgogICBpZiAkZ2xfZ251bGliX2VuYWJsZWRfMTg0MDEyOWQ0OTBmM2Ew
MGM4YTA5ODMxNmQwZmEzNDU7IHRoZW4KICBnbF9HTlVMSUJfRU5BQkxFRF8xODQwMTI5ZDQ5MGYz
YTAwYzhhMDk4MzE2ZDBmYTM0NV9UUlVFPQogIGdsX0dOVUxJQl9FTkFCTEVEXzE4NDAxMjlkNDkw
ZjNhMDBjOGEwOTgzMTZkMGZhMzQ1X0ZBTFNFPScjJwplbHNlCiAgZ2xfR05VTElCX0VOQUJMRURf
MTg0MDEyOWQ0OTBmM2EwMGM4YTA5ODMxNmQwZmEzNDVfVFJVRT0nIycKICBnbF9HTlVMSUJfRU5B
QkxFRF8xODQwMTI5ZDQ5MGYzYTAwYzhhMDk4MzE2ZDBmYTM0NV9GQUxTRT0KZmkKCiAgIGlmICRn
bF9nbnVsaWJfZW5hYmxlZF8wM2UwYWFhZDRjYjg5Y2E3NTc2NTNiZDM2N2E2Y2NiNzsgdGhlbgog
IGdsX0dOVUxJQl9FTkFCTEVEXzAzZTBhYWFkNGNiODljYTc1NzY1M2JkMzY3YTZjY2I3X1RSVUU9
CiAgZ2xfR05VTElCX0VOQUJMRURfMDNlMGFhYWQ0Y2I4OWNhNzU3NjUzYmQzNjdhNmNjYjdfRkFM
U0U9JyMnCmVsc2UKICBnbF9HTlVMSUJfRU5BQkxFRF8wM2UwYWFhZDRjYjg5Y2E3NTc2NTNiZDM2
N2E2Y2NiN19UUlVFPScjJwogIGdsX0dOVUxJQl9FTkFCTEVEXzAzZTBhYWFkNGNiODljYTc1NzY1
M2JkMzY3YTZjY2I3X0ZBTFNFPQpmaQoKICAgaWYgJGdsX2dudWxpYl9lbmFibGVkX3BhdGhtYXg7
IHRoZW4KICBnbF9HTlVMSUJfRU5BQkxFRF9wYXRobWF4X1RSVUU9CiAgZ2xfR05VTElCX0VOQUJM
RURfcGF0aG1heF9GQUxTRT0nIycKZWxzZQogIGdsX0dOVUxJQl9FTkFCTEVEX3BhdGhtYXhfVFJV
RT0nIycKICBnbF9HTlVMSUJfRU5BQkxFRF9wYXRobWF4X0ZBTFNFPQpmaQoKICAgaWYgJGdsX2du
dWxpYl9lbmFibGVkXzJmNTUxYTY4NGFhYjU0MDA2MzNjYmZkNTZkZjNiZjk0OyB0aGVuCiAgZ2xf
R05VTElCX0VOQUJMRURfMmY1NTFhNjg0YWFiNTQwMDYzM2NiZmQ1NmRmM2JmOTRfVFJVRT0KICBn
bF9HTlVMSUJfRU5BQkxFRF8yZjU1MWE2ODRhYWI1NDAwNjMzY2JmZDU2ZGYzYmY5NF9GQUxTRT0n
IycKZWxzZQogIGdsX0dOVUxJQl9FTkFCTEVEXzJmNTUxYTY4NGFhYjU0MDA2MzNjYmZkNTZkZjNi
Zjk0X1RSVUU9JyMnCiAgZ2xfR05VTElCX0VOQUJMRURfMmY1NTFhNjg0YWFiNTQwMDYzM2NiZmQ1
NmRmM2JmOTRfRkFMU0U9CmZpCgogICBpZiAkZ2xfZ251bGliX2VuYWJsZWRfYmJhNjM5ZjBjZmQ2
NTg1NDBkNzE2ZjNhMmJhNWU2OGY7IHRoZW4KICBnbF9HTlVMSUJfRU5BQkxFRF9iYmE2MzlmMGNm
ZDY1ODU0MGQ3MTZmM2EyYmE1ZTY4Zl9UUlVFPQogIGdsX0dOVUxJQl9FTkFCTEVEX2JiYTYzOWYw
Y2ZkNjU4NTQwZDcxNmYzYTJiYTVlNjhmX0ZBTFNFPScjJwplbHNlCiAgZ2xfR05VTElCX0VOQUJM
RURfYmJhNjM5ZjBjZmQ2NTg1NDBkNzE2ZjNhMmJhNWU2OGZfVFJVRT0nIycKICBnbF9HTlVMSUJf
RU5BQkxFRF9iYmE2MzlmMGNmZDY1ODU0MGQ3MTZmM2EyYmE1ZTY4Zl9GQUxTRT0KZmkKCiAgIGlm
ICRnbF9nbnVsaWJfZW5hYmxlZF9yYWlzZTsgdGhlbgogIGdsX0dOVUxJQl9FTkFCTEVEX3JhaXNl
X1RSVUU9CiAgZ2xfR05VTElCX0VOQUJMRURfcmFpc2VfRkFMU0U9JyMnCmVsc2UKICBnbF9HTlVM
SUJfRU5BQkxFRF9yYWlzZV9UUlVFPScjJwogIGdsX0dOVUxJQl9FTkFCTEVEX3JhaXNlX0ZBTFNF
PQpmaQoKICAgaWYgJGdsX2dudWxpYl9lbmFibGVkX3JlYWRkaXI7IHRoZW4KICBnbF9HTlVMSUJf
RU5BQkxFRF9yZWFkZGlyX1RSVUU9CiAgZ2xfR05VTElCX0VOQUJMRURfcmVhZGRpcl9GQUxTRT0n
IycKZWxzZQogIGdsX0dOVUxJQl9FTkFCTEVEX3JlYWRkaXJfVFJVRT0nIycKICBnbF9HTlVMSUJf
RU5BQkxFRF9yZWFkZGlyX0ZBTFNFPQpmaQoKICAgaWYgJGdsX2dudWxpYl9lbmFibGVkXzYxYmNh
Y2E3NmIzZTZmOWFlNTVkNTdhMWMzMTkzYmM0OyB0aGVuCiAgZ2xfR05VTElCX0VOQUJMRURfNjFi
Y2FjYTc2YjNlNmY5YWU1NWQ1N2ExYzMxOTNiYzRfVFJVRT0KICBnbF9HTlVMSUJfRU5BQkxFRF82
MWJjYWNhNzZiM2U2ZjlhZTU1ZDU3YTFjMzE5M2JjNF9GQUxTRT0nIycKZWxzZQogIGdsX0dOVUxJ
Ql9FTkFCTEVEXzYxYmNhY2E3NmIzZTZmOWFlNTVkNTdhMWMzMTkzYmM0X1RSVUU9JyMnCiAgZ2xf
R05VTElCX0VOQUJMRURfNjFiY2FjYTc2YjNlNmY5YWU1NWQ1N2ExYzMxOTNiYzRfRkFMU0U9CmZp
CgogICBpZiAkZ2xfZ251bGliX2VuYWJsZWRfcmV3aW5kZGlyOyB0aGVuCiAgZ2xfR05VTElCX0VO
QUJMRURfcmV3aW5kZGlyX1RSVUU9CiAgZ2xfR05VTElCX0VOQUJMRURfcmV3aW5kZGlyX0ZBTFNF
PScjJwplbHNlCiAgZ2xfR05VTElCX0VOQUJMRURfcmV3aW5kZGlyX1RSVUU9JyMnCiAgZ2xfR05V
TElCX0VOQUJMRURfcmV3aW5kZGlyX0ZBTFNFPQpmaQoKICAgaWYgJGdsX2dudWxpYl9lbmFibGVk
X2Q0ODUwNTMyNjg4YmExNmQ2ODVmMDM2MDc2NjExZjIxOyB0aGVuCiAgZ2xfR05VTElCX0VOQUJM
RURfZDQ4NTA1MzI2ODhiYTE2ZDY4NWYwMzYwNzY2MTFmMjFfVFJVRT0KICBnbF9HTlVMSUJfRU5B
QkxFRF9kNDg1MDUzMjY4OGJhMTZkNjg1ZjAzNjA3NjYxMWYyMV9GQUxTRT0nIycKZWxzZQogIGds
X0dOVUxJQl9FTkFCTEVEX2Q0ODUwNTMyNjg4YmExNmQ2ODVmMDM2MDc2NjExZjIxX1RSVUU9JyMn
CiAgZ2xfR05VTElCX0VOQUJMRURfZDQ4NTA1MzI2ODhiYTE2ZDY4NWYwMzYwNzY2MTFmMjFfRkFM
U0U9CmZpCgogICBpZiAkZ2xfZ251bGliX2VuYWJsZWRfc2VjdXJlX2dldGVudjsgdGhlbgogIGds
X0dOVUxJQl9FTkFCTEVEX3NlY3VyZV9nZXRlbnZfVFJVRT0KICBnbF9HTlVMSUJfRU5BQkxFRF9z
ZWN1cmVfZ2V0ZW52X0ZBTFNFPScjJwplbHNlCiAgZ2xfR05VTElCX0VOQUJMRURfc2VjdXJlX2dl
dGVudl9UUlVFPScjJwogIGdsX0dOVUxJQl9FTkFCTEVEX3NlY3VyZV9nZXRlbnZfRkFMU0U9CmZp
CgogICBpZiAkZ2xfZ251bGliX2VuYWJsZWRfc2lnbmJpdDsgdGhlbgogIGdsX0dOVUxJQl9FTkFC
TEVEX3NpZ25iaXRfVFJVRT0KICBnbF9HTlVMSUJfRU5BQkxFRF9zaWduYml0X0ZBTFNFPScjJwpl
bHNlCiAgZ2xfR05VTElCX0VOQUJMRURfc2lnbmJpdF9UUlVFPScjJwogIGdsX0dOVUxJQl9FTkFC
TEVEX3NpZ25iaXRfRkFMU0U9CmZpCgogICBpZiAkZ2xfZ251bGliX2VuYWJsZWRfc2lncHJvY21h
c2s7IHRoZW4KICBnbF9HTlVMSUJfRU5BQkxFRF9zaWdwcm9jbWFza19UUlVFPQogIGdsX0dOVUxJ
Ql9FTkFCTEVEX3NpZ3Byb2NtYXNrX0ZBTFNFPScjJwplbHNlCiAgZ2xfR05VTElCX0VOQUJMRURf
c2lncHJvY21hc2tfVFJVRT0nIycKICBnbF9HTlVMSUJfRU5BQkxFRF9zaWdwcm9jbWFza19GQUxT
RT0KZmkKCiAgIGlmICRnbF9nbnVsaWJfZW5hYmxlZF9mOTg1MDYzMWRjYTkxODU5ZTljZGRhYzkz
NTk5MjFjMDsgdGhlbgogIGdsX0dOVUxJQl9FTkFCTEVEX2Y5ODUwNjMxZGNhOTE4NTllOWNkZGFj
OTM1OTkyMWMwX1RSVUU9CiAgZ2xfR05VTElCX0VOQUJMRURfZjk4NTA2MzFkY2E5MTg1OWU5Y2Rk
YWM5MzU5OTIxYzBfRkFMU0U9JyMnCmVsc2UKICBnbF9HTlVMSUJfRU5BQkxFRF9mOTg1MDYzMWRj
YTkxODU5ZTljZGRhYzkzNTk5MjFjMF9UUlVFPScjJwogIGdsX0dOVUxJQl9FTkFCTEVEX2Y5ODUw
NjMxZGNhOTE4NTllOWNkZGFjOTM1OTkyMWMwX0ZBTFNFPQpmaQoKICAgaWYgJGdsX2dudWxpYl9l
bmFibGVkX3N0cmVycm9yOyB0aGVuCiAgZ2xfR05VTElCX0VOQUJMRURfc3RyZXJyb3JfVFJVRT0K
ICBnbF9HTlVMSUJfRU5BQkxFRF9zdHJlcnJvcl9GQUxTRT0nIycKZWxzZQogIGdsX0dOVUxJQl9F
TkFCTEVEX3N0cmVycm9yX1RSVUU9JyMnCiAgZ2xfR05VTElCX0VOQUJMRURfc3RyZXJyb3JfRkFM
U0U9CmZpCgogICBpZiAkZ2xfZ251bGliX2VuYWJsZWRfZGJiNTdmNDkzNTJiZThmYjg2ODY5NjI5
YTI1NGZiNzI7IHRoZW4KICBnbF9HTlVMSUJfRU5BQkxFRF9kYmI1N2Y0OTM1MmJlOGZiODY4Njk2
MjlhMjU0ZmI3Ml9UUlVFPQogIGdsX0dOVUxJQl9FTkFCTEVEX2RiYjU3ZjQ5MzUyYmU4ZmI4Njg2
OTYyOWEyNTRmYjcyX0ZBTFNFPScjJwplbHNlCiAgZ2xfR05VTElCX0VOQUJMRURfZGJiNTdmNDkz
NTJiZThmYjg2ODY5NjI5YTI1NGZiNzJfVFJVRT0nIycKICBnbF9HTlVMSUJfRU5BQkxFRF9kYmI1
N2Y0OTM1MmJlOGZiODY4Njk2MjlhMjU0ZmI3Ml9GQUxTRT0KZmkKCiAgIGlmICRnbF9nbnVsaWJf
ZW5hYmxlZF90ZW1wbmFtZTsgdGhlbgogIGdsX0dOVUxJQl9FTkFCTEVEX3RlbXBuYW1lX1RSVUU9
CiAgZ2xfR05VTElCX0VOQUJMRURfdGVtcG5hbWVfRkFMU0U9JyMnCmVsc2UKICBnbF9HTlVMSUJf
RU5BQkxFRF90ZW1wbmFtZV9UUlVFPScjJwogIGdsX0dOVUxJQl9FTkFCTEVEX3RlbXBuYW1lX0ZB
TFNFPQpmaQoKICAgaWYgJGdsX2dudWxpYl9lbmFibGVkX3RocmVhZGxpYjsgdGhlbgogIGdsX0dO
VUxJQl9FTkFCTEVEX3RocmVhZGxpYl9UUlVFPQogIGdsX0dOVUxJQl9FTkFCTEVEX3RocmVhZGxp
Yl9GQUxTRT0nIycKZWxzZQogIGdsX0dOVUxJQl9FTkFCTEVEX3RocmVhZGxpYl9UUlVFPScjJwog
IGdsX0dOVUxJQl9FTkFCTEVEX3RocmVhZGxpYl9GQUxTRT0KZmkKCiAgIGlmICRnbF9nbnVsaWJf
ZW5hYmxlZF90bHM7IHRoZW4KICBnbF9HTlVMSUJfRU5BQkxFRF90bHNfVFJVRT0KICBnbF9HTlVM
SUJfRU5BQkxFRF90bHNfRkFMU0U9JyMnCmVsc2UKICBnbF9HTlVMSUJfRU5BQkxFRF90bHNfVFJV
RT0nIycKICBnbF9HTlVMSUJfRU5BQkxFRF90bHNfRkFMU0U9CmZpCgogICMgRW5kIG9mIGNvZGUg
ZnJvbSBtb2R1bGVzCgoKCgoKCgoKCiAgZ2x0ZXN0c19saWJkZXBzPQogIGdsdGVzdHNfbHRsaWJk
ZXBzPQoKCgoKCgoKCgogIGdsX3NvdXJjZV9iYXNlPSd0ZXN0cycKICBnbHRlc3RzX1dJVE5FU1M9
SU5fYGVjaG8gIiR7UEFDS0FHRS0kUEFDS0FHRV9UQVJOQU1FfSIgfCBMQ19BTEw9QyB0ciBhYmNk
ZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiBBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiB8IExDX0FM
TD1DIHNlZCAtZSAncy9bXkEtWjAtOV9dL18vZydgX0dOVUxJQl9URVNUUwoKICBnbF9tb2R1bGVf
aW5kaWNhdG9yX2NvbmRpdGlvbj0kZ2x0ZXN0c19XSVRORVNTCgoKCgoKCgoKCgogIExJQkdOVV9M
SUJERVBTPSIkZ2xfbGliZGVwcyIKCiAgTElCR05VX0xUTElCREVQUz0iJGdsX2x0bGliZGVwcyIK
CgoKIyBoZWFkZXJzCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogIDoKCgoKCgoKCgoK
CgoKCgoKCgoKCgppZiB0ZXN0IHllcyA9ICIkdXNlX21tYXAiOyB0aGVuIDoKICBmb3IgYWNfaGVh
ZGVyIGluIHN5cy9tbWFuLmgKZG8gOgogIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRM
SU5FTk8iICJzeXMvbW1hbi5oIiAiYWNfY3ZfaGVhZGVyX3N5c19tbWFuX2giICIkYWNfaW5jbHVk
ZXNfZGVmYXVsdCIKaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfc3lzX21tYW5faCIgPSB4eWVzOyB0
aGVuIDoKICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgSEFWRV9TWVNfTU1BTl9I
IDEKX0FDRU9GCgpmaQoKZG9uZQoKZmkKCiMgdHlwZXMgLS0gc2VlIGFsc286IChpbmZvICIoYXV0
b2NvbmYpIFBhcnRpY3VsYXIgVHlwZXMiKQphY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJt
b2RlX3QiICJhY19jdl90eXBlX21vZGVfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgppZiB0ZXN0
ICJ4JGFjX2N2X3R5cGVfbW9kZV90IiA9IHh5ZXM7IHRoZW4gOgoKZWxzZQoKY2F0ID4+Y29uZmRl
ZnMuaCA8PF9BQ0VPRgojZGVmaW5lIG1vZGVfdCBpbnQKX0FDRU9GCgpmaQoKYWNfZm5fY19jaGVj
a190eXBlICIkTElORU5PIiAib2ZmX3QiICJhY19jdl90eXBlX29mZl90IiAiJGFjX2luY2x1ZGVz
X2RlZmF1bHQiCmlmIHRlc3QgIngkYWNfY3ZfdHlwZV9vZmZfdCIgPSB4eWVzOyB0aGVuIDoKCmVs
c2UKCmNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBvZmZfdCBsb25nIGludApfQUNF
T0YKCmZpCgphY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJwaWRfdCIgImFjX2N2X3R5cGVf
cGlkX3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKaWYgdGVzdCAieCRhY19jdl90eXBlX3BpZF90
IiA9IHh5ZXM7IHRoZW4gOgoKZWxzZQoKY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVmaW5l
IHBpZF90IGludApfQUNFT0YKCmZpCgphY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJzc2l6
ZV90IiAiYWNfY3ZfdHlwZV9zc2l6ZV90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCmlmIHRlc3Qg
IngkYWNfY3ZfdHlwZV9zc2l6ZV90IiA9IHh5ZXM7IHRoZW4gOgoKZWxzZQoKY2F0ID4+Y29uZmRl
ZnMuaCA8PF9BQ0VPRgojZGVmaW5lIHNzaXplX3QgaW50Cl9BQ0VPRgoKZmkKCnsgJGFzX2VjaG8g
IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHVpZF90IGluIHN5cy90
eXBlcy5oIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHVpZF90IGluIHN5cy90eXBlcy5o
Li4uICIgPiY2OyB9CmlmICR7YWNfY3ZfdHlwZV91aWRfdCs6fSBmYWxzZTsgdGhlbiA6CiAgJGFz
X2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0Yg
PmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwojaW5jbHVkZSA8c3lzL3R5
cGVzLmg+CgpfQUNFT0YKaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUg
fAogICRFR1JFUCAidWlkX3QiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CiAgYWNfY3ZfdHlwZV91
aWRfdD15ZXMKZWxzZQogIGFjX2N2X3R5cGVfdWlkX3Q9bm8KZmkKcm0gLWYgY29uZnRlc3QqCgpm
aQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2
X3R5cGVfdWlkX3QiID4mNQokYXNfZWNobyAiJGFjX2N2X3R5cGVfdWlkX3QiID4mNjsgfQppZiB0
ZXN0ICRhY19jdl90eXBlX3VpZF90ID0gbm87IHRoZW4KCiRhc19lY2hvICIjZGVmaW5lIHVpZF90
IGludCIgPj5jb25mZGVmcy5oCgoKJGFzX2VjaG8gIiNkZWZpbmUgZ2lkX3QgaW50IiA+PmNvbmZk
ZWZzLmgKCmZpCgoKIyBmdW5jcwoKZm9yIGFjX2hlYWRlciBpbiB2Zm9yay5oCmRvIDoKICBhY19m
bl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAidmZvcmsuaCIgImFjX2N2X2hlYWRl
cl92Zm9ya19oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCmlmIHRlc3QgIngkYWNfY3ZfaGVhZGVy
X3Zmb3JrX2giID0geHllczsgdGhlbiA6CiAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgojZGVm
aW5lIEhBVkVfVkZPUktfSCAxCl9BQ0VPRgoKZmkKCmRvbmUKCmZvciBhY19mdW5jIGluIGZvcmsg
dmZvcmsKZG8gOgogIGFzX2FjX3Zhcj1gJGFzX2VjaG8gImFjX2N2X2Z1bmNfJGFjX2Z1bmMiIHwg
JGFzX3RyX3NoYAphY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICIkYWNfZnVuYyIgIiRhc19h
Y192YXIiCmlmIGV2YWwgdGVzdCBcInhcJCIkYXNfYWNfdmFyIlwiID0geCJ5ZXMiOyB0aGVuIDoK
ICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgYCRhc19lY2hvICJIQVZFXyRhY19m
dW5jIiB8ICRhc190cl9jcHBgIDEKX0FDRU9GCgpmaQpkb25lCgppZiB0ZXN0ICJ4JGFjX2N2X2Z1
bmNfZm9yayIgPSB4eWVzOyB0aGVuCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM
SU5FTk99OiBjaGVja2luZyBmb3Igd29ya2luZyBmb3JrIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tp
bmcgZm9yIHdvcmtpbmcgZm9yay4uLiAiID4mNjsgfQppZiAke2FjX2N2X2Z1bmNfZm9ya193b3Jr
cys6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQogIGlm
IHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKICBhY19jdl9mdW5jX2Zvcmtf
d29ya3M9Y3Jvc3MKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRh
Y19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwokYWNfaW5jbHVkZXNfZGVmYXVsdAppbnQKbWFp
biAoKQp7CgoJICAvKiBCeSBSdWVkaWdlciBLdWhsbWFubi4gKi8KCSAgcmV0dXJuIGZvcmsgKCkg
PCAwOwoKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVO
TyI7IHRoZW4gOgogIGFjX2N2X2Z1bmNfZm9ya193b3Jrcz15ZXMKZWxzZQogIGFjX2N2X2Z1bmNf
Zm9ya193b3Jrcz1ubwpmaQpybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5v
dXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCiAgY29uZnRlc3QuJGFjX29iamV4dCBjb25m
dGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKZmkKCmZpCnsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZnVuY19mb3JrX3dvcmtzIiA+JjUKJGFz
X2VjaG8gIiRhY19jdl9mdW5jX2Zvcmtfd29ya3MiID4mNjsgfQoKZWxzZQogIGFjX2N2X2Z1bmNf
Zm9ya193b3Jrcz0kYWNfY3ZfZnVuY19mb3JrCmZpCmlmIHRlc3QgIngkYWNfY3ZfZnVuY19mb3Jr
X3dvcmtzIiA9IHhjcm9zczsgdGhlbgogIGNhc2UgJGhvc3QgaW4KICAgICotKi1hbWlnYW9zKiB8
ICotKi1tc2Rvc2RqZ3BwKikKICAgICAgIyBPdmVycmlkZSwgYXMgdGhlc2Ugc3lzdGVtcyBoYXZl
IG9ubHkgYSBkdW1teSBmb3JrKCkgc3R1YgogICAgICBhY19jdl9mdW5jX2Zvcmtfd29ya3M9bm8K
ICAgICAgOzsKICAgICopCiAgICAgIGFjX2N2X2Z1bmNfZm9ya193b3Jrcz15ZXMKICAgICAgOzsK
ICBlc2FjCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5H
OiByZXN1bHQgJGFjX2N2X2Z1bmNfZm9ya193b3JrcyBndWVzc2VkIGJlY2F1c2Ugb2YgY3Jvc3Mg
Y29tcGlsYXRpb24iID4mNQokYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiByZXN1bHQgJGFjX2N2
X2Z1bmNfZm9ya193b3JrcyBndWVzc2VkIGJlY2F1c2Ugb2YgY3Jvc3MgY29tcGlsYXRpb24iID4m
Mjt9CmZpCmFjX2N2X2Z1bmNfdmZvcmtfd29ya3M9JGFjX2N2X2Z1bmNfdmZvcmsKaWYgdGVzdCAi
eCRhY19jdl9mdW5jX3Zmb3JrIiA9IHh5ZXM7IHRoZW4KICB7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB3b3JraW5nIHZmb3JrIiA+JjUKJGFzX2Vj
aG9fbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgdmZvcmsuLi4gIiA+JjY7IH0KaWYgJHthY19jdl9m
dW5jX3Zmb3JrX3dvcmtzKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAi
ID4mNgplbHNlCiAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgogIGFj
X2N2X2Z1bmNfdmZvcmtfd29ya3M9Y3Jvc3MKZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNF
T0YgPmNvbmZ0ZXN0LiRhY19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwovKiBUaGFua3MgdG8g
UGF1bCBFZ2dlcnQgZm9yIHRoaXMgdGVzdC4gICovCiRhY19pbmNsdWRlc19kZWZhdWx0CiNpbmNs
dWRlIDxzeXMvd2FpdC5oPgojaWZkZWYgSEFWRV9WRk9SS19ICiMgaW5jbHVkZSA8dmZvcmsuaD4K
I2VuZGlmCi8qIE9uIHNvbWUgc3BhcmMgc3lzdGVtcywgY2hhbmdlcyBieSB0aGUgY2hpbGQgdG8g
bG9jYWwgYW5kIGluY29taW5nCiAgIGFyZ3VtZW50IHJlZ2lzdGVycyBhcmUgcHJvcGFnYXRlZCBi
YWNrIHRvIHRoZSBwYXJlbnQuICBUaGUgY29tcGlsZXIKICAgaXMgdG9sZCBhYm91dCB0aGlzIHdp
dGggI2luY2x1ZGUgPHZmb3JrLmg+LCBidXQgc29tZSBjb21waWxlcnMKICAgKGUuZy4gZ2NjIC1P
KSBkb24ndCBncm9rIDx2Zm9yay5oPi4gIFRlc3QgZm9yIHRoaXMgYnkgdXNpbmcgYQogICBzdGF0
aWMgdmFyaWFibGUgd2hvc2UgYWRkcmVzcyBpcyBwdXQgaW50byBhIHJlZ2lzdGVyIHRoYXQgaXMK
ICAgY2xvYmJlcmVkIGJ5IHRoZSB2Zm9yay4gICovCnN0YXRpYyB2b2lkCiNpZmRlZiBfX2NwbHVz
cGx1cwpzcGFyY19hZGRyZXNzX3Rlc3QgKGludCBhcmcpCiMgZWxzZQpzcGFyY19hZGRyZXNzX3Rl
c3QgKGFyZykgaW50IGFyZzsKI2VuZGlmCnsKICBzdGF0aWMgcGlkX3QgY2hpbGQ7CiAgaWYgKCFj
aGlsZCkgewogICAgY2hpbGQgPSB2Zm9yayAoKTsKICAgIGlmIChjaGlsZCA8IDApIHsKICAgICAg
cGVycm9yICgidmZvcmsiKTsKICAgICAgX2V4aXQoMik7CiAgICB9CiAgICBpZiAoIWNoaWxkKSB7
CiAgICAgIGFyZyA9IGdldHBpZCgpOwogICAgICB3cml0ZSgtMSwgIiIsIDApOwogICAgICBfZXhp
dCAoYXJnKTsKICAgIH0KICB9Cn0KCmludAptYWluICgpCnsKICBwaWRfdCBwYXJlbnQgPSBnZXRw
aWQgKCk7CiAgcGlkX3QgY2hpbGQ7CgogIHNwYXJjX2FkZHJlc3NfdGVzdCAoMCk7CgogIGNoaWxk
ID0gdmZvcmsgKCk7CgogIGlmIChjaGlsZCA9PSAwKSB7CiAgICAvKiBIZXJlIGlzIGFub3RoZXIg
dGVzdCBmb3Igc3BhcmMgdmZvcmsgcmVnaXN0ZXIgcHJvYmxlbXMuICBUaGlzCiAgICAgICB0ZXN0
IHVzZXMgbG90cyBvZiBsb2NhbCB2YXJpYWJsZXMsIGF0IGxlYXN0IGFzIG1hbnkgbG9jYWwKICAg
ICAgIHZhcmlhYmxlcyBhcyBtYWluIGhhcyBhbGxvY2F0ZWQgc28gZmFyIGluY2x1ZGluZyBjb21w
aWxlcgogICAgICAgdGVtcG9yYXJpZXMuICA0IGxvY2FscyBhcmUgZW5vdWdoIGZvciBnY2MgMS40
MC4zIG9uIGEgU29sYXJpcwogICAgICAgNC4xLjMgc3BhcmMsIGJ1dCB3ZSB1c2UgOCB0byBiZSBz
YWZlLiAgQSBidWdneSBjb21waWxlciBzaG91bGQKICAgICAgIHJldXNlIHRoZSByZWdpc3RlciBv
ZiBwYXJlbnQgZm9yIG9uZSBvZiB0aGUgbG9jYWwgdmFyaWFibGVzLAogICAgICAgc2luY2UgaXQg
d2lsbCB0aGluayB0aGF0IHBhcmVudCBjYW4ndCBwb3NzaWJseSBiZSB1c2VkIGFueSBtb3JlCiAg
ICAgICBpbiB0aGlzIHJvdXRpbmUuICBBc3NpZ25pbmcgdG8gdGhlIGxvY2FsIHZhcmlhYmxlIHdp
bGwgdGh1cwogICAgICAgbXVuZ2UgcGFyZW50IGluIHRoZSBwYXJlbnQgcHJvY2Vzcy4gICovCiAg
ICBwaWRfdAogICAgICBwID0gZ2V0cGlkKCksIHAxID0gZ2V0cGlkKCksIHAyID0gZ2V0cGlkKCks
IHAzID0gZ2V0cGlkKCksCiAgICAgIHA0ID0gZ2V0cGlkKCksIHA1ID0gZ2V0cGlkKCksIHA2ID0g
Z2V0cGlkKCksIHA3ID0gZ2V0cGlkKCk7CiAgICAvKiBDb252aW5jZSB0aGUgY29tcGlsZXIgdGhh
dCBwLi5wNyBhcmUgbGl2ZTsgb3RoZXJ3aXNlLCBpdCBtaWdodAogICAgICAgdXNlIHRoZSBzYW1l
IGhhcmR3YXJlIHJlZ2lzdGVyIGZvciBhbGwgOCBsb2NhbCB2YXJpYWJsZXMuICAqLwogICAgaWYg
KHAgIT0gcDEgfHwgcCAhPSBwMiB8fCBwICE9IHAzIHx8IHAgIT0gcDQKCXx8IHAgIT0gcDUgfHwg
cCAhPSBwNiB8fCBwICE9IHA3KQogICAgICBfZXhpdCgxKTsKCiAgICAvKiBPbiBzb21lIHN5c3Rl
bXMgKGUuZy4gSVJJWCAzLjMpLCB2Zm9yayBkb2Vzbid0IHNlcGFyYXRlIHBhcmVudAogICAgICAg
ZnJvbSBjaGlsZCBmaWxlIGRlc2NyaXB0b3JzLiAgSWYgdGhlIGNoaWxkIGNsb3NlcyBhIGRlc2Ny
aXB0b3IKICAgICAgIGJlZm9yZSBpdCBleGVjcyBvciBleGl0cywgdGhpcyBtdW5nZXMgdGhlIHBh
cmVudCdzIGRlc2NyaXB0b3IKICAgICAgIGFzIHdlbGwuICBUZXN0IGZvciB0aGlzIGJ5IGNsb3Np
bmcgc3Rkb3V0IGluIHRoZSBjaGlsZC4gICovCiAgICBfZXhpdChjbG9zZShmaWxlbm8oc3Rkb3V0
KSkgIT0gMCk7CiAgfSBlbHNlIHsKICAgIGludCBzdGF0dXM7CiAgICBzdHJ1Y3Qgc3RhdCBzdDsK
CiAgICB3aGlsZSAod2FpdCgmc3RhdHVzKSAhPSBjaGlsZCkKICAgICAgOwogICAgcmV0dXJuICgK
CSAvKiBXYXMgdGhlcmUgc29tZSBwcm9ibGVtIHdpdGggdmZvcmtpbmc/ICAqLwoJIGNoaWxkIDwg
MAoKCSAvKiBEaWQgdGhlIGNoaWxkIGZhaWw/ICAoVGhpcyBzaG91bGRuJ3QgaGFwcGVuLikgICov
CgkgfHwgc3RhdHVzCgoJIC8qIERpZCB0aGUgdmZvcmsvY29tcGlsZXIgYnVnIG9jY3VyPyAgKi8K
CSB8fCBwYXJlbnQgIT0gZ2V0cGlkKCkKCgkgLyogRGlkIHRoZSBmaWxlIGRlc2NyaXB0b3IgYnVn
IG9jY3VyPyAgKi8KCSB8fCBmc3RhdChmaWxlbm8oc3Rkb3V0KSwgJnN0KSAhPSAwCgkgKTsKICB9
Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgogIGFjX2N2X2Z1
bmNfdmZvcmtfd29ya3M9eWVzCmVsc2UKICBhY19jdl9mdW5jX3Zmb3JrX3dvcmtzPW5vCmZpCnJt
IC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3Qk
YWNfZXhlZXh0IFwKICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3Qu
JGFjX2V4dApmaQoKZmkKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy
ZXN1bHQ6ICRhY19jdl9mdW5jX3Zmb3JrX3dvcmtzIiA+JjUKJGFzX2VjaG8gIiRhY19jdl9mdW5j
X3Zmb3JrX3dvcmtzIiA+JjY7IH0KCmZpOwppZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfZm9ya193b3Jr
cyIgPSB4Y3Jvc3M7IHRoZW4KICBhY19jdl9mdW5jX3Zmb3JrX3dvcmtzPSRhY19jdl9mdW5jX3Zm
b3JrCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBy
ZXN1bHQgJGFjX2N2X2Z1bmNfdmZvcmtfd29ya3MgZ3Vlc3NlZCBiZWNhdXNlIG9mIGNyb3NzIGNv
bXBpbGF0aW9uIiA+JjUKJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogcmVzdWx0ICRhY19jdl9m
dW5jX3Zmb3JrX3dvcmtzIGd1ZXNzZWQgYmVjYXVzZSBvZiBjcm9zcyBjb21waWxhdGlvbiIgPiYy
O30KZmkKCmlmIHRlc3QgIngkYWNfY3ZfZnVuY192Zm9ya193b3JrcyIgPSB4eWVzOyB0aGVuCgok
YXNfZWNobyAiI2RlZmluZSBIQVZFX1dPUktJTkdfVkZPUksgMSIgPj5jb25mZGVmcy5oCgplbHNl
CgokYXNfZWNobyAiI2RlZmluZSB2Zm9yayBmb3JrIiA+PmNvbmZkZWZzLmgKCmZpCmlmIHRlc3Qg
IngkYWNfY3ZfZnVuY19mb3JrX3dvcmtzIiA9IHh5ZXM7IHRoZW4KCiRhc19lY2hvICIjZGVmaW5l
IEhBVkVfV09SS0lOR19GT1JLIDEiID4+Y29uZmRlZnMuaAoKZmkKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiAgOgoKCgoKCgoKCgoKCgoKCmlmIHRlc3QgeWVzID0gIiR1c2VfbW1hcCI7IHRoZW4gOgog
IGZvciBhY19mdW5jIGluIG1tYXAgbWFkdmlzZQpkbyA6CiAgYXNfYWNfdmFyPWAkYXNfZWNobyAi
YWNfY3ZfZnVuY18kYWNfZnVuYyIgfCAkYXNfdHJfc2hgCmFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJ
TkVOTyIgIiRhY19mdW5jIiAiJGFzX2FjX3ZhciIKaWYgZXZhbCB0ZXN0IFwieFwkIiRhc19hY192
YXIiXCIgPSB4InllcyI7IHRoZW4gOgogIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmlu
ZSBgJGFzX2VjaG8gIkhBVkVfJGFjX2Z1bmMiIHwgJGFzX3RyX2NwcGAgMQpfQUNFT0YKCmZpCmRv
bmUKCmZpCmlmIHRlc3QgeHNldHJldWlkID0geCIkZW5hYmxlX3N1aWQiOyB0aGVuIDoKICBlbmFi
bGVfc3VpZD15ZXMKICBmb3IgYWNfZnVuYyBpbiBzZXRyZXVpZApkbyA6CiAgYWNfZm5fY19jaGVj
a19mdW5jICIkTElORU5PIiAic2V0cmV1aWQiICJhY19jdl9mdW5jX3NldHJldWlkIgppZiB0ZXN0
ICJ4JGFjX2N2X2Z1bmNfc2V0cmV1aWQiID0geHllczsgdGhlbiA6CiAgY2F0ID4+Y29uZmRlZnMu
aCA8PF9BQ0VPRgojZGVmaW5lIEhBVkVfU0VUUkVVSUQgMQpfQUNFT0YKCmZpCmRvbmUKCmZpCmlm
IHRlc3QgeWVzID0gIiRlbmFibGVfc3VpZCI7IHRoZW4gOgogIGZvciBhY19mdW5jIGluIGdldHVp
ZCBzZXRldWlkIHNldHVpZApkbyA6CiAgYXNfYWNfdmFyPWAkYXNfZWNobyAiYWNfY3ZfZnVuY18k
YWNfZnVuYyIgfCAkYXNfdHJfc2hgCmFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIiRhY19m
dW5jIiAiJGFzX2FjX3ZhciIKaWYgZXZhbCB0ZXN0IFwieFwkIiRhc19hY192YXIiXCIgPSB4Inll
cyI7IHRoZW4gOgogIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBgJGFzX2VjaG8g
IkhBVkVfJGFjX2Z1bmMiIHwgJGFzX3RyX2NwcGAgMQpfQUNFT0YKCmZpCmRvbmUKCmZpCgojIHN5
c3RlbSBzZXJ2aWNlcwoKIyBzcGVjaWZpYyBiZWhhdmlvcnMgKHRoYXQgdW5mb3J0dW5hdGVseSBy
ZXF1aXJlIHJ1bm5pbmcgYSBwcm9ncmFtIHRvIGNoZWNrKQoKeyAkYXNfZWNobyAiJGFzX21lOiR7
YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiB0aW55c3ltIGluaXQgaW5jbHVkZXMgTlVM
IiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgdGlueXN5bSBpbml0IGluY2x1ZGVzIE5VTC4u
LiAiID4mNjsgfQppZiAke3Jjc19jdl90aW55aW5pdF9vays6fSBmYWxzZTsgdGhlbiA6CiAgJGFz
X2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKZWxzZQoKaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZ3gi
ID0geWVzOyB0aGVuIDoKICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGlu
IFxgJGFjX3B3ZCc6IiA+JjI7fQphc19mbl9lcnJvciAkPyAiY2Fubm90IHJ1biB0ZXN0IHByb2dy
YW0gd2hpbGUgY3Jvc3MgY29tcGlsaW5nClNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFp
bHMiICIkTElORU5PIiA1OyB9CmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25m
dGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCiNpbmNsdWRlIDxzdGRpbnQuaD4K
CnN0cnVjdCB0aW55c3ltCnsKICB1aW50OF90IGxlbjsKICB1aW50OF90IGJ5dGVzW107Cn07Cgoj
ZGVmaW5lIFRJTlkoeCkgICAgICAgKHRpbnlfICMjIHgpCiNkZWZpbmUgVElOWV9ERUNMKHgpICBj
b25zdCBzdHJ1Y3QgdGlueXN5bSAoVElOWSAoeCkpCiNkZWZpbmUgVElOWV9JTklUKHgpICB7IC5s
ZW4gPSBzaXplb2YgKHgpIC0gMSwgLmJ5dGVzID0geCB9CiNkZWZpbmUgVElOWUsoeCkgICAgICBU
SU5ZX0RFQ0wgKHgpID0gVElOWV9JTklUICgjeCkKCi8qIEFwcGFyZW50bHksIFN1bk9TIDUuMTEg
Y29tcGlsZXJzIGNjIGFuZCBjOTkgb21pdCB0aGUgJ1wwJwogICBmcm9tIHRoZXNlIGRhdGEgaW5p
dGlhbGl6YXRpb24gZm9ybXMuICAqLwpUSU5ZSyAoYWNjZXNzKTsKVElOWUsgKGludGVncml0eSk7
CgppbnQKbWFpbiAoKQp7CgogIGNvbnN0IHN0cnVjdCB0aW55c3ltICpvbmUgPSAmVElOWSAoYWNj
ZXNzKTsKICBjb25zdCBzdHJ1Y3QgdGlueXN5bSAqdHdvID0gJlRJTlkgKGludGVncml0eSk7Cgog
IGlmICg2ICE9IG9uZS0+bGVuIHx8ICdcMCcgIT0gb25lLT5ieXRlc1s2XSkKICAgIHJldHVybiAx
OwogIGlmICg5ICE9IHR3by0+bGVuIHx8ICdcMCcgIT0gdHdvLT5ieXRlc1s5XSkKICAgIHJldHVy
biAyOwoKICA7CiAgcmV0dXJuIDA7Cn0KX0FDRU9GCmlmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVO
TyI7IHRoZW4gOgogIHJjc19jdl90aW55aW5pdF9vaz15ZXMKZWxzZQogIHJjc19jdl90aW55aW5p
dF9vaz1ubwpmaQpybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIu
b3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCiAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5i
ZWFtIGNvbmZ0ZXN0LiRhY19leHQKZmkKCgpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l
bm8tJExJTkVOT306IHJlc3VsdDogJHJjc19jdl90aW55aW5pdF9vayIgPiY1CiRhc19lY2hvICIk
cmNzX2N2X3Rpbnlpbml0X29rIiA+JjY7IH0KaWYgdGVzdCBubyA9ICRyY3NfY3ZfdGlueWluaXRf
b2s7IHRoZW4gOgogIGNib29sPTEKZWxzZQogIGNib29sPTAKZmkKCmNhdCA+PmNvbmZkZWZzLmgg
PDxfQUNFT0YKI2RlZmluZSBUSU5ZX0lOSVRfTkVFRFNfRVhQTElDSVRfTlVMICRjYm9vbApfQUNF
T0YKCgp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlm
IFxgZm9wZW4gKEYsIFwidytcIiknIHRydW5jYXRlcyIgPiY1CiRhc19lY2hvX24gImNoZWNraW5n
IGlmIFxgZm9wZW4gKEYsIFwidytcIiknIHRydW5jYXRlcy4uLiAiID4mNjsgfQppZiAke3Jjc19j
dl9mb3Blbl90cnVuY2F0ZXMrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQp
ICIgPiY2CmVsc2UKCiAgZWNobyBub25lbXB0eSA+IGNvbmZ0ZXN0LmRhdGEKaWYgdGVzdCAiJGNy
b3NzX2NvbXBpbGluZ3giID0geWVzOyB0aGVuIDoKICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKJGFzX2VjaG8gIiRh
c19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQphc19mbl9lcnJvciAkPyAiY2Fubm90
IHJ1biB0ZXN0IHByb2dyYW0gd2hpbGUgY3Jvc3MgY29tcGlsaW5nClNlZSBcYGNvbmZpZy5sb2cn
IGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CmVsc2UKICBjYXQgY29uZmRlZnMuaCAt
IDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCiNpbmNs
dWRlIDxzdGRpby5oPgoKaW50Cm1haW4gKCkKewoKICByZXR1cm4gISBmb3BlbiAoImNvbmZ0ZXN0
LmRhdGEiLCAidysiKTsKCiAgOwogIHJldHVybiAwOwp9CgpfQUNFT0YKaWYgYWNfZm5fY190cnlf
cnVuICIkTElORU5PIjsgdGhlbiA6CiAgcmVzPXllcwplbHNlCiAgcmVzPW5vCmZpCnJtIC1mIGNv
cmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhl
ZXh0IFwKICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4
dApmaQoKICB0ZXN0IHllcyA9ICRyZXMgJiYgdGVzdCAhIC1zIGNvbmZ0ZXN0LmRhdGEgfHwgcmVz
PW5vCiAgcmNzX2N2X2ZvcGVuX3RydW5jYXRlcz0kcmVzCgpmaQp7ICRhc19lY2hvICIkYXNfbWU6
JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHJjc19jdl9mb3Blbl90cnVuY2F0ZXMiID4m
NQokYXNfZWNobyAiJHJjc19jdl9mb3Blbl90cnVuY2F0ZXMiID4mNjsgfQppZiB0ZXN0IG5vID0g
JHJjc19jdl9mb3Blbl90cnVuY2F0ZXM7IHRoZW4gOgogIGNib29sPTEKZWxzZQogIGNib29sPTAK
ZmkKCmNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBCQURfRk9QRU5fV1BMVVMgJGNi
b29sCl9BQ0VPRgoKCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl
Y2tpbmcgaWYgXGB3cml0ZScgYWZ0ZXIgXGBjcmVhdCAoRiwgMCknIHdvcmtzIiA+JjUKJGFzX2Vj
aG9fbiAiY2hlY2tpbmcgaWYgXGB3cml0ZScgYWZ0ZXIgXGBjcmVhdCAoRiwgMCknIHdvcmtzLi4u
ICIgPiY2OyB9CmlmICR7cmNzX2N2X3dhY19vays6fSBmYWxzZTsgdGhlbiA6CiAgJGFzX2VjaG9f
biAiKGNhY2hlZCkgIiA+JjYKZWxzZQoKICBybSAtZiBjb25mdGVzdC5kYXRhCmlmIHRlc3QgIiRj
cm9zc19jb21waWxpbmd4IiA9IHllczsgdGhlbiA6CiAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiRhc19lY2hvICIk
YXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KYXNfZm5fZXJyb3IgJD8gImNhbm5v
dCBydW4gdGVzdCBwcm9ncmFtIHdoaWxlIGNyb3NzIGNvbXBpbGluZwpTZWUgXGBjb25maWcubG9n
JyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQplbHNlCiAgY2F0IGNvbmZkZWZzLmgg
LSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCgojaW5j
bHVkZSA8dW5pc3RkLmg+CiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KI2luY2x1ZGUgPHN5cy9zdGF0
Lmg+CiNpbmNsdWRlIDxmY250bC5oPgojaWYgZGVmaW5lZCBPX0NSRUFUICYmIGRlZmluZWQgT19X
Uk9OTFkKIyBkZWZpbmUgY3JlYXQwKGYpIG9wZW4oZiwgT19DUkVBVHxPX1dST05MWSwgMCkKI2Vs
c2UKIyBkZWZpbmUgY3JlYXQwKGYpIGNyZWF0KGYsIDApCiNlbmRpZgpjaGFyIGJ1ZlsxNzAwMF07
CgppbnQKbWFpbiAoKQp7CgogIGludCBmOwogIHJldHVybiAoMCA+IChmID0gY3JlYXQwICgiY29u
ZnRlc3QuZGF0YSIpKQogICAgICAgICAgfHwgc2l6ZW9mIChidWYpICE9IHdyaXRlIChmLCBidWYs
IHNpemVvZiAoYnVmKSkKICAgICAgICAgIHx8IDAgPiBjbG9zZSAoZikpOwoKICA7CiAgcmV0dXJu
IDA7Cn0KCl9BQ0VPRgppZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKICByZXM9
eWVzCmVsc2UKICByZXM9bm8KZmkKcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdt
b24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAogIGNvbmZ0ZXN0LiRhY19vYmpleHQg
Y29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CmZpCgogIGlmIHRlc3QgeWVzID0gIiRyZXMi
ICYmIHRlc3QgLWYgY29uZnRlc3QuZGF0YSAmJiB0ZXN0ICEgLXcgY29uZnRlc3QuZGF0YQogICAg
dGhlbiA6CiAgICBlbHNlIHJlcz1ubwogIGZpCiAgcmNzX2N2X3dhY19vaz0kcmVzCgpmaQp7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHJjc19jdl93YWNf
b2siID4mNQokYXNfZWNobyAiJHJjc19jdl93YWNfb2siID4mNjsgfQppZiB0ZXN0IG5vID0gJHJj
c19jdl93YWNfb2s7IHRoZW4gOgogIGNib29sPTEKZWxzZQogIGNib29sPTAKZmkKCmNhdCA+PmNv
bmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBCQURfQ1JFQVQwICRjYm9vbApfQUNFT0YKCgp7ICRh
c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmIFxgdW5saW5r
JyB3b3JrcyBvbiB1bndyaXRhYmxlIGZpbGVzIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYg
XGB1bmxpbmsnIHdvcmtzIG9uIHVud3JpdGFibGUgZmlsZXMuLi4gIiA+JjY7IH0KaWYgJHtyY3Nf
Y3ZfdW5saW5rX213X29rKzp9IGZhbHNlOyB0aGVuIDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAi
ID4mNgplbHNlCgogIHRvdWNoIGNvbmZ0ZXN0LmRhdGEKICBjaG1vZCAtdyBjb25mdGVzdC5kYXRh
CmlmIHRlc3QgIiRjcm9zc19jb21waWxpbmd4IiA9IHllczsgdGhlbiA6CiAgeyB7ICRhc19lY2hv
ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1
CiRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KYXNfZm5fZXJy
b3IgJD8gImNhbm5vdCBydW4gdGVzdCBwcm9ncmFtIHdoaWxlIGNyb3NzIGNvbXBpbGluZwpTZWUg
XGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQplbHNlCiAgY2F0
IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAovKiBlbmQgY29uZmRlZnMu
aC4gICovCgojaW5jbHVkZSA8dW5pc3RkLmg+CgppbnQKbWFpbiAoKQp7CgogIHJldHVybiAwID4g
dW5saW5rICgiY29uZnRlc3QuZGF0YSIpOwoKICA7CiAgcmV0dXJuIDA7Cn0KCl9BQ0VPRgppZiBh
Y19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKICByZXM9eWVzCmVsc2UKICByZXM9bm8K
ZmkKcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25m
dGVzdCRhY19leGVleHQgXAogIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25m
dGVzdC4kYWNfZXh0CmZpCgogIHRlc3QgeWVzID0gJHJlcyAmJiB0ZXN0IC1mIGNvbmZ0ZXN0LmRh
dGEgJiYgcmVzPW5vCiAgcmNzX2N2X3VubGlua19td19vaz0kcmVzCgpmaQp7ICRhc19lY2hvICIk
YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHJjc19jdl91bmxpbmtfbXdfb2si
ID4mNQokYXNfZWNobyAiJHJjc19jdl91bmxpbmtfbXdfb2siID4mNjsgfQppZiB0ZXN0IG5vID0g
JHJjc19jdl91bmxpbmtfbXdfb2s7IHRoZW4gOgogIGNib29sPTEKZWxzZQogIGNib29sPTAKZmkK
CmNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBCQURfVU5MSU5LICRjYm9vbApfQUNF
T0YKCgp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlm
IFxgcmVuYW1lJyBoYW5kbGVzIHVud3JpdGFibGUgc291cmNlL3RhcmdldCIgPiY1CiRhc19lY2hv
X24gImNoZWNraW5nIGlmIFxgcmVuYW1lJyBoYW5kbGVzIHVud3JpdGFibGUgc291cmNlL3Rhcmdl
dC4uLiAiID4mNjsgfQppZiAke3Jjc19jdl9yZW5hbWVfbXcrOn0gZmFsc2U7IHRoZW4gOgogICRh
c19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UKCiAgcm0gLWYgY29uZnRlc3QtQSBjb25mdGVz
dC1CICYmIGVjaG8gQSA+IGNvbmZ0ZXN0LUEKICByZXM9aG9wZWxlc3MKaWYgdGVzdCAiJGNyb3Nz
X2NvbXBpbGluZ3giID0geWVzOyB0aGVuIDoKICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp
bmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKJGFzX2VjaG8gIiRhc19t
ZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQphc19mbl9lcnJvciAkPyAiY2Fubm90IHJ1
biB0ZXN0IHByb2dyYW0gd2hpbGUgY3Jvc3MgY29tcGlsaW5nClNlZSBcYGNvbmZpZy5sb2cnIGZv
ciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CmVsc2UKICBjYXQgY29uZmRlZnMuaCAtIDw8
X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAgKi8KCiNpbmNsdWRl
IDx1bmlzdGQuaD4KCmludAptYWluICgpCnsKCiAgcmV0dXJuIDAgPiByZW5hbWUgKCJjb25mdGVz
dC1BIiwgImNvbmZ0ZXN0LUIiKTsKCiAgOwogIHJldHVybiAwOwp9CgpfQUNFT0YKaWYgYWNfZm5f
Y190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CgogIGlmIHRlc3QgISAtZiBjb25mdGVzdC1BICYm
IHRlc3QgLWYgY29uZnRlc3QtQiA7IHRoZW4KICAgIHJlcz1vawogICAgIyB1bndyaXRhYmxlIHNv
dXJjZQogICAgcm0gLWYgY29uZnRlc3QtQSBjb25mdGVzdC1CICYmIGVjaG8gQSA+IGNvbmZ0ZXN0
LUEgOyBjaG1vZCAtdyBjb25mdGVzdC1BCiAgICAuL2NvbmZ0ZXN0JEVYRUVYVCAmJiB0ZXN0ICEg
LWYgY29uZnRlc3QtQSAmJiB0ZXN0IC1mIGNvbmZ0ZXN0LUIgJiYgYXNfZm5fYXBwZW5kIHJlcyAs
c291cmNlPW9rCiAgICAjIHVud3JpdGFibGUgdGFyZ2V0CiAgICBybSAtZiBjb25mdGVzdC1BIGNv
bmZ0ZXN0LUIgJiYgZWNobyBBID4gY29uZnRlc3QtQSA7IGVjaG8gQiA+IGNvbmZ0ZXN0LUIgOyBj
aG1vZCAtdyBjb25mdGVzdC1CCiAgICAuL2NvbmZ0ZXN0JEVYRUVYVCAmJiB0ZXN0ICEgLWYgY29u
ZnRlc3QtQSAmJiB0ZXN0IC1mIGNvbmZ0ZXN0LUIgJiYgYXNfZm5fYXBwZW5kIHJlcyAsdGFyZ2V0
PW9rCiAgZmkKCmZpCnJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBi
Yi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0
LmJlYW0gY29uZnRlc3QuJGFjX2V4dApmaQoKICByY3NfY3ZfcmVuYW1lX213PSRyZXMKCmZpCnsg
JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkcmNzX2N2X3Jl
bmFtZV9tdyIgPiY1CiRhc19lY2hvICIkcmNzX2N2X3JlbmFtZV9tdyIgPiY2OyB9CnJlbmFtZV9z
b3VyY2U9bm8KcmVuYW1lX3RhcmdldD1ubwppZiB0ZXN0IGhvcGVsZXNzID0gJHJjc19jdl9yZW5h
bWVfbXc7IHRoZW4gOgoKZWxzZQogIGV2YWwgYGVjaG8gJHJjc19jdl9yZW5hbWVfbXcgfCBzZWQg
J3MvXi4uLy87cy8sLyByZW5hbWVfL2cnYApmaQppZiB0ZXN0IG5vID0gJHJlbmFtZV9zb3VyY2U7
IHRoZW4gOgogIGNib29sPTEKZWxzZQogIGNib29sPTAKZmkKCmNhdCA+PmNvbmZkZWZzLmggPDxf
QUNFT0YKI2RlZmluZSBCQURfQV9SRU5BTUUgJGNib29sCl9BQ0VPRgoKaWYgdGVzdCBubyA9ICRy
ZW5hbWVfdGFyZ2V0OyB0aGVuIDoKICBjYm9vbD0xCmVsc2UKICBjYm9vbD0wCmZpCgpjYXQgPj5j
b25mZGVmcy5oIDw8X0FDRU9GCiNkZWZpbmUgQkFEX0JfUkVOQU1FICRjYm9vbApfQUNFT0YKCgoK
aWYgdGVzdCB5ZXMgPSAiJHVzZV9tbWFwIiAmJgogICAgIHRlc3QgeWVzID0gIiRhY19jdl9mdW5j
X21tYXAiICYmCiAgICAgdGVzdCB5ZXMgPSAiJGFjX2N2X2hlYWRlcl9zeXNfbW1hbl9oIjsgdGhl
biA6Cgp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHRo
YXQgXGBtbWFwJyBpcyBzYW5lIiA+JjUKJGFzX2VjaG9fbiAiY2hlY2tpbmcgdGhhdCBcYG1tYXAn
IGlzIHNhbmUuLi4gIiA+JjY7IH0KaWYgJHtyY3NfY3Zfc2FuZV9tbWFwKzp9IGZhbHNlOyB0aGVu
IDoKICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgplbHNlCgogIHJjc19jdl9zYW5lX21tYXA9
eWVzCiAgIyBBSVggMy4yLjAgcmVhZC1vbmx5IG1tYXAgdXBkYXRlcyBsYXN0LW1vZGlmaWVkIHRp
bWUgb2YgZmlsZSEKICBpZiB1bmFtZSAtYSB8IGdyZXAgQUlYID4vZGV2L251bGwgOyB0aGVuCiAg
ICBlY2hvIG5vbmVtcHR5ID4gY29uZnRlc3QuZGF0YQogICAgYmVmPWBkYXRlIC1yIGNvbmZ0ZXN0
LmRhdGFgCiAgICBzbGVlcCAyCiAgICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5neCIgPSB5ZXM7
IHRoZW4gOgogIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJv
cjogaW4gXGAkYWNfcHdkJzoiID4mNQokYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNf
cHdkJzoiID4mMjt9CmFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgcnVuIHRlc3QgcHJvZ3JhbSB3aGls
ZSBjcm9zcyBjb21waWxpbmcKU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRM
SU5FTk8iIDU7IH0KZWxzZQogIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRh
Y19leHQKLyogZW5kIGNvbmZkZWZzLmguICAqLwoKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRl
IDxmY250bC5oPgojaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiNpbmNsdWRlIDxzeXMvc3RhdC5oPgoj
aW5jbHVkZSA8c3lzL21tYW4uaD4KCmludAptYWluICgpCnsKCiAgc3RydWN0IHN0YXQgYjsKICBj
aGFyICphOwogIGludCBmZCwgZmM7CgogIGZkID0gb3BlbiAoImNvbmZ0ZXN0LmRhdGEiLCBPX1JE
T05MWSk7CiAgZnN0YXQgKGZkLCAmYik7CiAgYSA9IG1tYXAgKE5VTEwsIGIuc3Rfc2l6ZSwgUFJP
VF9SRUFELCBNQVBfU0hBUkVELCBmZCwgMCk7CiAgaWYgKChjaGFyICopIE1BUF9GQUlMRUQgPT0g
YSkKICAgIHsKICAgICAgcGVycm9yICgibW1hcCIpOwogICAgICByZXR1cm4gMTsKICAgIH0KICAv
KiBGaW5pc2guICAqLwoKCiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9y
dW4gIiRMSU5FTk8iOyB0aGVuIDoKCmZpCnJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3Qu
KiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKICBjb25mdGVzdC4kYWNfb2Jq
ZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dApmaQoKICAgIGFmdD1gZGF0ZSAtciBj
b25mdGVzdC5kYXRhYAogICAgdGVzdCAiJGJlZiIgPSAiJGFmdCIgfHwgcmNzX2N2X3NhbmVfbW1h
cD1ubwogIGZpCgpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl
c3VsdDogJHJjc19jdl9zYW5lX21tYXAiID4mNQokYXNfZWNobyAiJHJjc19jdl9zYW5lX21tYXAi
ID4mNjsgfQppZiB0ZXN0IHllcyA9ICIkcmNzX2N2X3NhbmVfbW1hcCI7IHRoZW4gOgoKeyAkYXNf
ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzaWduYWwgcmVjZWl2
ZWQgaWYgcmVmZXJlbmNpbmcgbm9uZXhpc3RlbnQgcGFydCBvZiBtbWFwcGVkIGZpbGUiID4mNQok
YXNfZWNob19uICJjaGVja2luZyBzaWduYWwgcmVjZWl2ZWQgaWYgcmVmZXJlbmNpbmcgbm9uZXhp
c3RlbnQgcGFydCBvZiBtbWFwcGVkIGZpbGUuLi4gIiA+JjY7IH0KaWYgJHtyY3NfY3ZfbW1hcF9z
aWduYWwrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CmVsc2UK
CiAgICByZXM9U0lHQlVTCiAgICBlY2hvIG5vbmVtcHR5ID4gY29uZnRlc3QuZGF0YQogICAgaWYg
dGVzdCAiJGNyb3NzX2NvbXBpbGluZ3giID0geWVzOyB0aGVuIDoKICB7IHsgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKJGFz
X2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQphc19mbl9lcnJvciAk
PyAiY2Fubm90IHJ1biB0ZXN0IHByb2dyYW0gd2hpbGUgY3Jvc3MgY29tcGlsaW5nClNlZSBcYGNv
bmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CmVsc2UKICBjYXQgY29u
ZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci8qIGVuZCBjb25mZGVmcy5oLiAg
Ki8KCiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8ZmNudGwuaD4KI2luY2x1ZGUgPHN5cy90
eXBlcy5oPgojaW5jbHVkZSA8c3lzL3N0YXQuaD4KI2luY2x1ZGUgPHN5cy9tbWFuLmg+CgppbnQK
bWFpbiAoKQp7CgogIHN0cnVjdCBzdGF0IGI7CiAgY2hhciAqYTsKICBpbnQgZmQsIGZjOwoKICBm
ZCA9IG9wZW4gKCJjb25mdGVzdC5kYXRhIiwgT19SRE9OTFkpOwogIGZzdGF0IChmZCwgJmIpOwog
IGEgPSBtbWFwIChOVUxMLCBiLnN0X3NpemUsIFBST1RfUkVBRCwgTUFQX1NIQVJFRCwgZmQsIDAp
OwogIGlmICgoY2hhciAqKSBNQVBfRkFJTEVEID09IGEpCiAgICB7CiAgICAgIHBlcnJvciAoIm1t
YXAiKTsKICAgICAgcmV0dXJuIDE7CiAgICB9CiAgLyogRmluaXNoLiAgKi8KICAgICAgZmMgPSBj
cmVhdCAoImNvbmZ0ZXN0LmRhdGEiLCAwKTsKICAgICAgLyogUmVmZXIgdG8gbm9uZXhpc3RlbnQg
c3RvcmFnZSwgY2F1c2luZyBhIHNpZ25hbC4gICovCiAgICAgIHByaW50ZiAoIiVkICVjXG4iLCBm
YywgKmEpOwoKCiAgOwogIHJldHVybiAwOwp9Cl9BQ0VPRgppZiBhY19mbl9jX3RyeV9ydW4gIiRM
SU5FTk8iOyB0aGVuIDoKICByZXM9dW5rbm93bgplbHNlCiAgcmVzPSQ/CmZpCnJtIC1mIGNvcmUg
Ki5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0
IFwKICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dApm
aQoKICAgICMgSWYgdGhlcmUgaXMgbm8gc2lnbmFsLCBiZXR0ZXIgdG8gZGlzYWJsZSBtbWFwIGVu
dGlyZWx5LgogICAgaWYgdGVzdCB1bmtub3duID0gJHJlczsgdGhlbiA6CiAgcmVzPTAKZWxpZiB0
ZXN0IFNJR0JVUyA9ICRyZXM7IHRoZW4gOgogIDoKZWxpZiB0ZXN0IDEyOCAtZ2UgJHJlczsgdGhl
biA6CiAgcmVzPVNJR0JVUwplbHNlCiAgYXNfZm5fYXJpdGggJHJlcyAtIDEyOCAmJiByZXM9JGFz
X3ZhbApmaQogICAgcmNzX2N2X21tYXBfc2lnbmFsPSRyZXMKCmZpCnsgJGFzX2VjaG8gIiRhc19t
ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkcmNzX2N2X21tYXBfc2lnbmFsIiA+JjUK
JGFzX2VjaG8gIiRyY3NfY3ZfbW1hcF9zaWduYWwiID4mNjsgfQoKZmkKZmkKCmNhdCA+PmNvbmZk
ZWZzLmggPDxfQUNFT0YKI2RlZmluZSBNTUFQX1NJR05BTCAke3Jjc19jdl9tbWFwX3NpZ25hbC0w
fQpfQUNFT0YKCgp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr
aW5nIGlmIFxgd2FpdCcgY2FuIGhhbmRsZSBpZ25vcmVkIFNJR0NITEQiID4mNQokYXNfZWNob19u
ICJjaGVja2luZyBpZiBcYHdhaXQnIGNhbiBoYW5kbGUgaWdub3JlZCBTSUdDSExELi4uICIgPiY2
OyB9CmlmICR7cmNzX2N2X3RvbGVyYW50X3dhaXQrOn0gZmFsc2U7IHRoZW4gOgogICRhc19lY2hv
X24gIihjYWNoZWQpICIgPiY2CmVsc2UKCmlmIHRlc3QgIiRjcm9zc19jb21waWxpbmd4IiA9IHll
czsgdGhlbiA6CiAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVy
cm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRh
Y19wd2QnOiIgPiYyO30KYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBydW4gdGVzdCBwcm9ncmFtIHdo
aWxlIGNyb3NzIGNvbXBpbGluZwpTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAi
JExJTkVOTyIgNTsgfQplbHNlCiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3Qu
JGFjX2V4dAovKiBlbmQgY29uZmRlZnMuaC4gICovCgojaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiNp
bmNsdWRlIDxlcnJuby5oPgojaW5jbHVkZSA8c2lnbmFsLmg+CiNpbmNsdWRlIDxzeXMvd2FpdC5o
PgojaW5jbHVkZSA8dW5pc3RkLmg+CgppbnQKbWFpbiAoKQp7CgogIHNpZ25hbCAoU0lHQ0hMRCwg
U0lHX0lHTik7CiNpZmRlZiBIQVZFX1dPUktJTkdfRk9SSwogIHsKICAgIGludCBzdGF0dXM7CiAg
ICBwaWRfdCBwID0gZm9yayAoKTsKICAgIGlmIChwIDwgMCkKICAgICAgewogICAgICAgIHBlcnJv
ciAoImZvcmsiKTsKICAgICAgICByZXR1cm4gMjsKICAgICAgfQogICAgaWYgKCFwKQogICAgICBf
ZXhpdCAoMCk7CiAgICB3aGlsZSAod2FpdCAoJnN0YXR1cykgIT0gcCkKICAgICAgewogICAgICAg
IGlmIChFQ0hJTEQgPT0gZXJybm8pCiAgICAgICAgICByZXR1cm4gMTsKICAgICAgICBpZiAoRUlO
VFIgIT0gZXJybm8pCiAgICAgICAgICB7CiAgICAgICAgICAgIHBlcnJvciAoIndhaXQiKTsKICAg
ICAgICAgICAgcmV0dXJuIDI7CiAgICAgICAgICB9CiAgICAgIH0KICB9CiNlbHNlCiAgaWYgKDAg
PiBzeXN0ZW0gKCJ0cnVlIikpCiAgICByZXR1cm4gMTsKI2VuZGlmCgogIDsKICByZXR1cm4gMDsK
fQpfQUNFT0YKaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CiAgcmVzPXllcwpl
bHNlCiAgcmVzPW5vCmZpCnJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91
dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0
ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dApmaQoKICByY3NfY3ZfdG9sZXJhbnRfd2FpdD0kcmVz
CgpmaQp7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHJj
c19jdl90b2xlcmFudF93YWl0IiA+JjUKJGFzX2VjaG8gIiRyY3NfY3ZfdG9sZXJhbnRfd2FpdCIg
PiY2OyB9CmlmIHRlc3Qgbm8gPSAkcmNzX2N2X3RvbGVyYW50X3dhaXQ7IHRoZW4gOgogIGNib29s
PTEKZWxzZQogIGNib29sPTAKZmkKCmNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBC
QURfV0FJVF9JRl9TSUdDSExEX0lHTk9SRUQgJGNib29sCl9BQ0VPRgoKCiMgbWlzY2VsbGFuZW91
cwoKaWYgdGVzdCB5ZXMgPSAiJEdDQyI7IHRoZW4gOgoKZWxzZQogIGVuYWJsZV9jb3ZlcmFnZT1u
bwpmaQppZiB0ZXN0IHllcyA9ICIkZW5hYmxlX2NvdmVyYWdlIjsgdGhlbiA6CiAgQ0ZMQUdTPSIk
Q0ZMQUdTIC0tY292ZXJhZ2UiCmZpCmlmIHRlc3QgeWVzID0gJGVuYWJsZV9jb3ZlcmFnZTsgdGhl
biA6CiAgY2Jvb2w9MQplbHNlCiAgY2Jvb2w9MApmaQoKY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VP
RgojZGVmaW5lIFVTRV9OT1JNQUxfRVhJVCAkY2Jvb2wKX0FDRU9GCgoKaWYgdGVzdCAxID0gYGV4
cHIgIiRhY19wd2QiIDogJy8qJ2A7IHRoZW4gOgogIHdvZT1ubwplbHNlCiAgd29lPXllcwpmaQpp
ZiB0ZXN0IHllcyA9ICR3b2U7IHRoZW4gOgogIGNib29sPTEKZWxzZQogIGNib29sPTAKZmkKCmNh
dCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKI2RlZmluZSBXT0UgJGNib29sCl9BQ0VPRgoKCgoKaWYg
dGVzdCB5ZXMgPSAkd29lOyB0aGVuIDoKICBBQlNGSUxFTkFNRUdMT0I9Jz86KicKZWxzZQogIEFC
U0ZJTEVOQU1FR0xPQj0nLyonCmZpCgoKIyBFbmNvdXJhZ2UgdXNlciBmZWVkYmFjayBmb3Igd2Vp
cmQgc3lzdGVtcy4Kd2Fybl93ZWlyZF9wPXllcwoKCgppZiB0ZXN0IHllcyA9ICIkd2Fybl93ZWly
ZF9wIjsgdGhlbiA6CgogIGlmIHRlc3QgeWVzID0gIiRhY19jdl9oZWFkZXJfdXRpbWVfaCIgJiYK
ICAgICB0ZXN0IHllcyA9ICIkYWNfY3ZfaGVhZGVyX3B3ZF9oIiAmJgogICAgIHRlc3QgeWVzID0g
IiRhY19jdl9mdW5jX2ZjaG1vZCIgJiYKICAgICB0ZXN0IHllcyA9ICIkYWNfY3ZfZnVuY19mdHJ1
bmNhdGUiICYmCiAgICAgdGVzdCB5ZXMgPSAiJHJjc19jdl9mb3Blbl90cnVuY2F0ZXMiICYmCiAg
ICAgdGVzdCB5ZXMgPSAiJHJjc19jdl91bmxpbmtfbXdfb2siICYmCiAgICAgdGVzdCB5ZXMgPSAi
JHJjc19jdl93YWNfb2siOyB0aGVuIDoKICA6CmVsc2UKICB7ICRhc19lY2hvICIkYXNfbWU6JHth
c19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFlvdXIgcGxhdGZvcm0gbWlnaHQgYmUgZGVzdXBw
b3J0ZWQgaW4gdGhlIGZ1dHVyZToKCSR7YWNfY3ZfaGVhZGVyX3V0aW1lX2gtKHVuc2V0KX0JYWNf
Y3ZfaGVhZGVyX3V0aW1lX2gKCSR7YWNfY3ZfaGVhZGVyX3B3ZF9oLSh1bnNldCl9CWFjX2N2X2hl
YWRlcl9wd2RfaAoJJHthY19jdl9mdW5jX2ZjaG1vZC0odW5zZXQpfQlhY19jdl9mdW5jX2ZjaG1v
ZAoJJHthY19jdl9mdW5jX2Z0cnVuY2F0ZS0odW5zZXQpfQlhY19jdl9mdW5jX2Z0cnVuY2F0ZQoJ
JHtyY3NfY3ZfZm9wZW5fdHJ1bmNhdGVzLSh1bnNldCl9CXJjc19jdl9mb3Blbl90cnVuY2F0ZXMK
CSR7cmNzX2N2X3VubGlua19td19vay0odW5zZXQpfQlyY3NfY3ZfdW5saW5rX213X29rCgkke3Jj
c19jdl93YWNfb2stKHVuc2V0KX0JcmNzX2N2X3dhY19vawoiID4mNQokYXNfZWNobyAiJGFzX21l
OiBXQVJOSU5HOiBZb3VyIHBsYXRmb3JtIG1pZ2h0IGJlIGRlc3VwcG9ydGVkIGluIHRoZSBmdXR1
cmU6Cgkke2FjX2N2X2hlYWRlcl91dGltZV9oLSh1bnNldCl9CWFjX2N2X2hlYWRlcl91dGltZV9o
Cgkke2FjX2N2X2hlYWRlcl9wd2RfaC0odW5zZXQpfQlhY19jdl9oZWFkZXJfcHdkX2gKCSR7YWNf
Y3ZfZnVuY19mY2htb2QtKHVuc2V0KX0JYWNfY3ZfZnVuY19mY2htb2QKCSR7YWNfY3ZfZnVuY19m
dHJ1bmNhdGUtKHVuc2V0KX0JYWNfY3ZfZnVuY19mdHJ1bmNhdGUKCSR7cmNzX2N2X2ZvcGVuX3Ry
dW5jYXRlcy0odW5zZXQpfQlyY3NfY3ZfZm9wZW5fdHJ1bmNhdGVzCgkke3Jjc19jdl91bmxpbmtf
bXdfb2stKHVuc2V0KX0JcmNzX2N2X3VubGlua19td19vawoJJHtyY3NfY3Zfd2FjX29rLSh1bnNl
dCl9CXJjc19jdl93YWNfb2sKIiA+JjI7fQpmaQpmaQoKIyB3cml0ZSBpdCBvdXQKCmFjX2NvbmZp
Z19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBsaWIvTWFrZWZpbGUgTWFrZWZpbGUgZG9jL01ha2Vm
aWxlIG1hbi9NYWtlZmlsZSBzcmMvTWFrZWZpbGUgdGVzdHMvTWFrZWZpbGUiCgoKIyBXZSBkb24n
dCB1c2Ugb3IgaW5zdGFsbCByY3NmcmVlemUsIHNvIHRoZXJlIGlzIG5vIHBvaW50IG1ha2luZyBp
dCBleGVjdXRhYmxlLgphY19jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMgc3JjL3Jjc2Zy
ZWV6ZTpzcmMvcmNzZnJlZXplLnNoIgoKCiMgV2UgY291bGQgZG8gdGhpcyAibWFudWFsbHkiIGlu
IHRlc3RzL01ha2VmaWxlLmFtLCBzcGVjaWZ5aW5nCiMgYW5vdGhlciBmaWxlIGZvciDigJhjaGVj
a19TQ1JJUFRT4oCZIGFuZCB3cml0aW5nIGEgY3VzdG9tIHRhcmdldCwKIyBhbGwgdG8gc2F2ZSB0
aGUgY29uZmlndXJlIHNjcmlwdCBmcm9tIHByb2Nlc3NpbmcgYSBwb3NzaWJseQojIHVudXNlZCBm
aWxlIChpbiB0aGUgY2FzZSB0aGUgdXNlciBkb2VzIG5vdCBkbyAibWFrZSBjaGVjayIpLgojIEJ1
dCBpdCdzIG5vdCBtdWNoIG9mIGEgYnVyZGVuLCBhbmQgdXNlcnMgU0hPVUxEIGJlIGRvaW5nCiMg
Im1ha2UgY2hlY2siIGFueXdheS4KYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIHRl
c3RzL2tub3duLWZhaWx1cmVzIgoKCmNhdCA+Y29uZmNhY2hlIDw8XF9BQ0VPRgojIFRoaXMgZmls
ZSBpcyBhIHNoZWxsIHNjcmlwdCB0aGF0IGNhY2hlcyB0aGUgcmVzdWx0cyBvZiBjb25maWd1cmUK
IyB0ZXN0cyBydW4gb24gdGhpcyBzeXN0ZW0gc28gdGhleSBjYW4gYmUgc2hhcmVkIGJldHdlZW4g
Y29uZmlndXJlCiMgc2NyaXB0cyBhbmQgY29uZmlndXJlIHJ1bnMsIHNlZSBjb25maWd1cmUncyBv
cHRpb24gLS1jb25maWctY2FjaGUuCiMgSXQgaXMgbm90IHVzZWZ1bCBvbiBvdGhlciBzeXN0ZW1z
LiAgSWYgaXQgY29udGFpbnMgcmVzdWx0cyB5b3UgZG9uJ3QKIyB3YW50IHRvIGtlZXAsIHlvdSBt
YXkgcmVtb3ZlIG9yIGVkaXQgaXQuCiMKIyBjb25maWcuc3RhdHVzIG9ubHkgcGF5cyBhdHRlbnRp
b24gdG8gdGhlIGNhY2hlIGZpbGUgaWYgeW91IGdpdmUgaXQKIyB0aGUgLS1yZWNoZWNrIG9wdGlv
biB0byByZXJ1biBjb25maWd1cmUuCiMKIyBgYWNfY3ZfZW52X2ZvbycgdmFyaWFibGVzIChzZXQg
b3IgdW5zZXQpIHdpbGwgYmUgb3ZlcnJpZGRlbiB3aGVuCiMgbG9hZGluZyB0aGlzIGZpbGUsIG90
aGVyICp1bnNldCogYGFjX2N2X2Zvbycgd2lsbCBiZSBhc3NpZ25lZCB0aGUKIyBmb2xsb3dpbmcg
dmFsdWVzLgoKX0FDRU9GCgojIFRoZSBmb2xsb3dpbmcgd2F5IG9mIHdyaXRpbmcgdGhlIGNhY2hl
IG1pc2hhbmRsZXMgbmV3bGluZXMgaW4gdmFsdWVzLAojIGJ1dCB3ZSBrbm93IG9mIG5vIHdvcmth
cm91bmQgdGhhdCBpcyBzaW1wbGUsIHBvcnRhYmxlLCBhbmQgZWZmaWNpZW50LgojIFNvLCB3ZSBr
aWxsIHZhcmlhYmxlcyBjb250YWluaW5nIG5ld2xpbmVzLgojIFVsdHJpeCBzaCBzZXQgd3JpdGVz
IHRvIHN0ZGVyciBhbmQgY2FuJ3QgYmUgcmVkaXJlY3RlZCBkaXJlY3RseSwKIyBhbmQgc2V0cyB0
aGUgaGlnaCBiaXQgaW4gdGhlIGNhY2hlIGZpbGUgdW5sZXNzIHdlIGFzc2lnbiB0byB0aGUgdmFy
cy4KKAogIGZvciBhY192YXIgaW4gYChzZXQpIDI+JjEgfCBzZWQgLW4gJ3MvXlwoW2EtekEtWl9d
W2EtekEtWjAtOV9dKlwpPS4qL1wxL3AnYDsgZG8KICAgIGV2YWwgYWNfdmFsPVwkJGFjX3Zhcgog
ICAgY2FzZSAkYWNfdmFsIGluICMoCiAgICAqJHthc19ubH0qKQogICAgICBjYXNlICRhY192YXIg
aW4gIygKICAgICAgKl9jdl8qKSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO
T306IFdBUk5JTkc6IGNhY2hlIHZhcmlhYmxlICRhY192YXIgY29udGFpbnMgYSBuZXdsaW5lIiA+
JjUKJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogY2FjaGUgdmFyaWFibGUgJGFjX3ZhciBjb250
YWlucyBhIG5ld2xpbmUiID4mMjt9IDs7CiAgICAgIGVzYWMKICAgICAgY2FzZSAkYWNfdmFyIGlu
ICMoCiAgICAgIF8gfCBJRlMgfCBhc19ubCkgOzsgIygKICAgICAgQkFTSF9BUkdWIHwgQkFTSF9T
T1VSQ0UpIGV2YWwgJGFjX3Zhcj0gOzsgIygKICAgICAgKikgeyBldmFsICRhY192YXI9OyB1bnNl
dCAkYWNfdmFyO30gOzsKICAgICAgZXNhYyA7OwogICAgZXNhYwogIGRvbmUKCiAgKHNldCkgMj4m
MSB8CiAgICBjYXNlICRhc19ubGAoYWNfc3BhY2U9JyAnOyBzZXQpIDI+JjFgIGluICMoCiAgICAq
JHthc19ubH1hY19zcGFjZT1cICopCiAgICAgICMgYHNldCcgZG9lcyBub3QgcXVvdGUgY29ycmVj
dGx5LCBzbyBhZGQgcXVvdGVzOiBkb3VibGUtcXVvdGUKICAgICAgIyBzdWJzdGl0dXRpb24gdHVy
bnMgXFxcXCBpbnRvIFxcLCBhbmQgc2VkIHR1cm5zIFxcIGludG8gXC4KICAgICAgc2VkIC1uIFwK
CSJzLycvJ1xcXFwnJy9nOwoJICBzL15cXChbXyRhc19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2Fs
bnVtXSpcXCk9XFwoLipcXCkvXFwxPSdcXDInL3AiCiAgICAgIDs7ICMoCiAgICAqKQogICAgICAj
IGBzZXQnIHF1b3RlcyBjb3JyZWN0bHkgYXMgcmVxdWlyZWQgYnkgUE9TSVgsIHNvIGRvIG5vdCBh
ZGQgcXVvdGVzLgogICAgICBzZWQgLW4gIi9eW18kYXNfY3JfYWxudW1dKl9jdl9bXyRhc19jcl9h
bG51bV0qPS9wIgogICAgICA7OwogICAgZXNhYyB8CiAgICBzb3J0CikgfAogIHNlZCAnCiAgICAg
L15hY19jdl9lbnZfL2IgZW5kCiAgICAgdCBjbGVhcgogICAgIDpjbGVhcgogICAgIHMvXlwoW149
XSpcKT1cKC4qW3t9XS4qXCkkL3Rlc3QgIiR7XDErc2V0fSIgPSBzZXQgfHwgJi8KICAgICB0IGVu
ZAogICAgIHMvXlwoW149XSpcKT1cKC4qXCkkL1wxPSR7XDE9XDJ9LwogICAgIDplbmQnID4+Y29u
ZmNhY2hlCmlmIGRpZmYgIiRjYWNoZV9maWxlIiBjb25mY2FjaGUgPi9kZXYvbnVsbCAyPiYxOyB0
aGVuIDo7IGVsc2UKICBpZiB0ZXN0IC13ICIkY2FjaGVfZmlsZSI7IHRoZW4KICAgIGlmIHRlc3Qg
IngkY2FjaGVfZmlsZSIgIT0gIngvZGV2L251bGwiOyB0aGVuCiAgICAgIHsgJGFzX2VjaG8gIiRh
c19tZToke2FzX2xpbmVuby0kTElORU5PfTogdXBkYXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4m
NQokYXNfZWNobyAiJGFzX21lOiB1cGRhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY2O30KICAg
ICAgaWYgdGVzdCAhIC1mICIkY2FjaGVfZmlsZSIgfHwgdGVzdCAtaCAiJGNhY2hlX2ZpbGUiOyB0
aGVuCgljYXQgY29uZmNhY2hlID4iJGNhY2hlX2ZpbGUiCiAgICAgIGVsc2UKICAgICAgICBjYXNl
ICRjYWNoZV9maWxlIGluICMoCiAgICAgICAgKi8qIHwgPzoqKQoJICBtdiAtZiBjb25mY2FjaGUg
IiRjYWNoZV9maWxlIiQkICYmCgkgIG12IC1mICIkY2FjaGVfZmlsZSIkJCAiJGNhY2hlX2ZpbGUi
IDs7ICMoCiAgICAgICAgKikKCSAgbXYgLWYgY29uZmNhY2hlICIkY2FjaGVfZmlsZSIgOzsKCWVz
YWMKICAgICAgZmkKICAgIGZpCiAgZWxzZQogICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu
ZW5vLSRMSU5FTk99OiBub3QgdXBkYXRpbmcgdW53cml0YWJsZSBjYWNoZSAkY2FjaGVfZmlsZSIg
PiY1CiRhc19lY2hvICIkYXNfbWU6IG5vdCB1cGRhdGluZyB1bndyaXRhYmxlIGNhY2hlICRjYWNo
ZV9maWxlIiA+JjY7fQogIGZpCmZpCnJtIC1mIGNvbmZjYWNoZQoKdGVzdCAieCRwcmVmaXgiID0g
eE5PTkUgJiYgcHJlZml4PSRhY19kZWZhdWx0X3ByZWZpeAojIExldCBtYWtlIGV4cGFuZCBleGVj
X3ByZWZpeC4KdGVzdCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSAmJiBleGVjX3ByZWZpeD0nJHtw
cmVmaXh9JwoKREVGUz0tREhBVkVfQ09ORklHX0gKCmFjX2xpYm9ianM9CmFjX2x0bGlib2Jqcz0K
VT0KZm9yIGFjX2kgaW4gOiAkTElCT0JKUzsgZG8gdGVzdCAieCRhY19pIiA9IHg6ICYmIGNvbnRp
bnVlCiAgIyAxLiBSZW1vdmUgdGhlIGV4dGVuc2lvbiwgYW5kICRVIGlmIGFscmVhZHkgaW5zdGFs
bGVkLgogIGFjX3NjcmlwdD0ncy9cJFVcLi8uLztzL1wubyQvLztzL1wub2JqJC8vJwogIGFjX2k9
YCRhc19lY2hvICIkYWNfaSIgfCBzZWQgIiRhY19zY3JpcHQiYAogICMgMi4gUHJlcGVuZCBMSUJP
QkpESVIuICBXaGVuIHVzZWQgd2l0aCBhdXRvbWFrZT49MS4xMCBMSUJPQkpESVIKICAjICAgIHdp
bGwgYmUgc2V0IHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgTElCT0JKUyBvYmplY3RzIGFyZSBidWls
dC4KICBhc19mbl9hcHBlbmQgYWNfbGlib2JqcyAiIFwke0xJQk9CSkRJUn0kYWNfaVwkVS4kYWNf
b2JqZXh0IgogIGFzX2ZuX2FwcGVuZCBhY19sdGxpYm9ianMgIiBcJHtMSUJPQkpESVJ9JGFjX2ki
JyRVLmxvJwpkb25lCkxJQk9CSlM9JGFjX2xpYm9ianMKCkxUTElCT0JKUz0kYWNfbHRsaWJvYmpz
CgoKeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB0aGF0
IGdlbmVyYXRlZCBmaWxlcyBhcmUgbmV3ZXIgdGhhbiBjb25maWd1cmUiID4mNQokYXNfZWNob19u
ICJjaGVja2luZyB0aGF0IGdlbmVyYXRlZCBmaWxlcyBhcmUgbmV3ZXIgdGhhbiBjb25maWd1cmUu
Li4gIiA+JjY7IH0KICAgaWYgdGVzdCAtbiAiJGFtX3NsZWVwX3BpZCI7IHRoZW4KICAgICAjIEhp
ZGUgd2FybmluZ3MgYWJvdXQgcmV1c2VkIFBJRHMuCiAgICAgd2FpdCAkYW1fc2xlZXBfcGlkIDI+
L2Rldi9udWxsCiAgIGZpCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P
fTogcmVzdWx0OiBkb25lIiA+JjUKJGFzX2VjaG8gImRvbmUiID4mNjsgfQogaWYgdGVzdCAtbiAi
JEVYRUVYVCI7IHRoZW4KICBhbV9fRVhFRVhUX1RSVUU9CiAgYW1fX0VYRUVYVF9GQUxTRT0nIycK
ZWxzZQogIGFtX19FWEVFWFRfVFJVRT0nIycKICBhbV9fRVhFRVhUX0ZBTFNFPQpmaQoKaWYgdGVz
dCAteiAiJHtBTURFUF9UUlVFfSIgJiYgdGVzdCAteiAiJHtBTURFUF9GQUxTRX0iOyB0aGVuCiAg
YXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiQU1ERVBcIiB3YXMgbmV2ZXIgZGVmaW5lZC4K
VXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFs
bHkuIiAiJExJTkVOTyIgNQpmaQppZiB0ZXN0IC16ICIke2FtX19mYXN0ZGVwQ0NfVFJVRX0iICYm
IHRlc3QgLXogIiR7YW1fX2Zhc3RkZXBDQ19GQUxTRX0iOyB0aGVuCiAgYXNfZm5fZXJyb3IgJD8g
ImNvbmRpdGlvbmFsIFwiYW1fX2Zhc3RkZXBDQ1wiIHdhcyBuZXZlciBkZWZpbmVkLgpVc3VhbGx5
IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIk
TElORU5PIiA1CmZpCmlmIHRlc3QgLXogIiR7R0xfQ09ORF9MSUJUT09MX1RSVUV9IiAmJiB0ZXN0
IC16ICIke0dMX0NPTkRfTElCVE9PTF9GQUxTRX0iOyB0aGVuCiAgYXNfZm5fZXJyb3IgJD8gImNv
bmRpdGlvbmFsIFwiR0xfQ09ORF9MSUJUT09MXCIgd2FzIG5ldmVyIGRlZmluZWQuClVzdWFsbHkg
dGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRM
SU5FTk8iIDUKZmkKaWYgdGVzdCAteiAiJHtHTF9HRU5FUkFURV9BTExPQ0FfSF9UUlVFfSIgJiYg
dGVzdCAteiAiJHtHTF9HRU5FUkFURV9BTExPQ0FfSF9GQUxTRX0iOyB0aGVuCiAgYXNfZm5fZXJy
b3IgJD8gImNvbmRpdGlvbmFsIFwiR0xfR0VORVJBVEVfQUxMT0NBX0hcIiB3YXMgbmV2ZXIgZGVm
aW5lZC4KVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRp
dGlvbmFsbHkuIiAiJExJTkVOTyIgNQpmaQppZiB0ZXN0IC16ICIke0dMX0dFTkVSQVRFX0VSUk5P
X0hfVFJVRX0iICYmIHRlc3QgLXogIiR7R0xfR0VORVJBVEVfRVJSTk9fSF9GQUxTRX0iOyB0aGVu
CiAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiR0xfR0VORVJBVEVfRVJSTk9fSFwiIHdh
cyBuZXZlciBkZWZpbmVkLgpVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGlu
dm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CmZpCmlmIHRlc3QgLXogIiR7R0xfR0VO
RVJBVEVfRkxPQVRfSF9UUlVFfSIgJiYgdGVzdCAteiAiJHtHTF9HRU5FUkFURV9GTE9BVF9IX0ZB
TFNFfSI7IHRoZW4KICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJHTF9HRU5FUkFURV9G
TE9BVF9IXCIgd2FzIG5ldmVyIGRlZmluZWQuClVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8g
d2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKZmkKCgppZiB0ZXN0
IC16ICIke0dMX0dFTkVSQVRFX1NUREFSR19IX1RSVUV9IiAmJiB0ZXN0IC16ICIke0dMX0dFTkVS
QVRFX1NUREFSR19IX0ZBTFNFfSI7IHRoZW4KICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwg
XCJHTF9HRU5FUkFURV9TVERBUkdfSFwiIHdhcyBuZXZlciBkZWZpbmVkLgpVc3VhbGx5IHRoaXMg
bWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5P
IiA1CmZpCmlmIHRlc3QgLXogIiR7R0xfR0VORVJBVEVfU1REQk9PTF9IX1RSVUV9IiAmJiB0ZXN0
IC16ICIke0dMX0dFTkVSQVRFX1NUREJPT0xfSF9GQUxTRX0iOyB0aGVuCiAgYXNfZm5fZXJyb3Ig
JD8gImNvbmRpdGlvbmFsIFwiR0xfR0VORVJBVEVfU1REQk9PTF9IXCIgd2FzIG5ldmVyIGRlZmlu
ZWQuClVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRp
b25hbGx5LiIgIiRMSU5FTk8iIDUKZmkKaWYgdGVzdCAteiAiJHtHTF9HRU5FUkFURV9TVERERUZf
SF9UUlVFfSIgJiYgdGVzdCAteiAiJHtHTF9HRU5FUkFURV9TVERERUZfSF9GQUxTRX0iOyB0aGVu
CiAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiR0xfR0VORVJBVEVfU1REREVGX0hcIiB3
YXMgbmV2ZXIgZGVmaW5lZC4KVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBp
bnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQpmaQppZiB0ZXN0IC16ICIke0dMX0dF
TkVSQVRFX1NURElOVF9IX1RSVUV9IiAmJiB0ZXN0IC16ICIke0dMX0dFTkVSQVRFX1NURElOVF9I
X0ZBTFNFfSI7IHRoZW4KICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJHTF9HRU5FUkFU
RV9TVERJTlRfSFwiIHdhcyBuZXZlciBkZWZpbmVkLgpVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1h
Y3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CmZpCmlmIHRl
c3QgLXogIiR7Z2xfR05VTElCX0VOQUJMRURfMjYwOTQxYzBlNWRjNjdlYzllODdkMWZiMzIxYzMw
MGJfVFJVRX0iICYmIHRlc3QgLXogIiR7Z2xfR05VTElCX0VOQUJMRURfMjYwOTQxYzBlNWRjNjdl
YzllODdkMWZiMzIxYzMwMGJfRkFMU0V9IjsgdGhlbgogIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRp
b25hbCBcImdsX0dOVUxJQl9FTkFCTEVEXzI2MDk0MWMwZTVkYzY3ZWM5ZTg3ZDFmYjMyMWMzMDBi
XCIgd2FzIG5ldmVyIGRlZmluZWQuClVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9u
bHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKZmkKaWYgdGVzdCAteiAiJHtn
bF9HTlVMSUJfRU5BQkxFRF9jaGRpcl9UUlVFfSIgJiYgdGVzdCAteiAiJHtnbF9HTlVMSUJfRU5B
QkxFRF9jaGRpcl9GQUxTRX0iOyB0aGVuCiAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwi
Z2xfR05VTElCX0VOQUJMRURfY2hkaXJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KVXN1YWxseSB0aGlz
IG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVO
TyIgNQpmaQppZiB0ZXN0IC16ICIke2dsX0dOVUxJQl9FTkFCTEVEXzgxOThkYWFlMjYxYjkzMmQ2
NGE5OThmODU4NmY1MDA1X1RSVUV9IiAmJiB0ZXN0IC16ICIke2dsX0dOVUxJQl9FTkFCTEVEXzgx
OThkYWFlMjYxYjkzMmQ2NGE5OThmODU4NmY1MDA1X0ZBTFNFfSI7IHRoZW4KICBhc19mbl9lcnJv
ciAkPyAiY29uZGl0aW9uYWwgXCJnbF9HTlVMSUJfRU5BQkxFRF84MTk4ZGFhZTI2MWI5MzJkNjRh
OTk4Zjg1ODZmNTAwNVwiIHdhcyBuZXZlciBkZWZpbmVkLgpVc3VhbGx5IHRoaXMgbWVhbnMgdGhl
IG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CmZpCmlm
IHRlc3QgLXogIiR7Z2xfR05VTElCX0VOQUJMRURfY2xvZXhlY19UUlVFfSIgJiYgdGVzdCAteiAi
JHtnbF9HTlVMSUJfRU5BQkxFRF9jbG9leGVjX0ZBTFNFfSI7IHRoZW4KICBhc19mbl9lcnJvciAk
PyAiY29uZGl0aW9uYWwgXCJnbF9HTlVMSUJfRU5BQkxFRF9jbG9leGVjXCIgd2FzIG5ldmVyIGRl
ZmluZWQuClVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25k
aXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKZmkKaWYgdGVzdCAteiAiJHtnbF9HTlVMSUJfRU5BQkxF
RF9jbG9zZV9UUlVFfSIgJiYgdGVzdCAteiAiJHtnbF9HTlVMSUJfRU5BQkxFRF9jbG9zZV9GQUxT
RX0iOyB0aGVuCiAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiZ2xfR05VTElCX0VOQUJM
RURfY2xvc2VcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNy
byB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQpmaQppZiB0ZXN0
IC16ICIke2dsX0dOVUxJQl9FTkFCTEVEXzc1YzY1YTJjMDE0Y2Y4MjM1ZGQ5NTI4OTY3NjMwMmE0
X1RSVUV9IiAmJiB0ZXN0IC16ICIke2dsX0dOVUxJQl9FTkFCTEVEXzc1YzY1YTJjMDE0Y2Y4MjM1
ZGQ5NTI4OTY3NjMwMmE0X0ZBTFNFfSI7IHRoZW4KICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9u
YWwgXCJnbF9HTlVMSUJfRU5BQkxFRF83NWM2NWEyYzAxNGNmODIzNWRkOTUyODk2NzYzMDJhNFwi
IHdhcyBuZXZlciBkZWZpbmVkLgpVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5
IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CmZpCmlmIHRlc3QgLXogIiR7Z2xf
R05VTElCX0VOQUJMRURfZGlyZmRfVFJVRX0iICYmIHRlc3QgLXogIiR7Z2xfR05VTElCX0VOQUJM
RURfZGlyZmRfRkFMU0V9IjsgdGhlbgogIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcImds
X0dOVUxJQl9FTkFCTEVEX2RpcmZkXCIgd2FzIG5ldmVyIGRlZmluZWQuClVzdWFsbHkgdGhpcyBt
ZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8i
IDUKZmkKaWYgdGVzdCAteiAiJHtnbF9HTlVMSUJfRU5BQkxFRF9hNjkxZGE5OWMxZDgzYjgzMjM4
ZTQ1ZjQxYTY5NmY1Y19UUlVFfSIgJiYgdGVzdCAteiAiJHtnbF9HTlVMSUJfRU5BQkxFRF9hNjkx
ZGE5OWMxZDgzYjgzMjM4ZTQ1ZjQxYTY5NmY1Y19GQUxTRX0iOyB0aGVuCiAgYXNfZm5fZXJyb3Ig
JD8gImNvbmRpdGlvbmFsIFwiZ2xfR05VTElCX0VOQUJMRURfYTY5MWRhOTljMWQ4M2I4MzIzOGU0
NWY0MWE2OTZmNWNcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBt
YWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQpmaQppZiB0
ZXN0IC16ICIke2dsX0dOVUxJQl9FTkFCTEVEX2Rvc25hbWVfVFJVRX0iICYmIHRlc3QgLXogIiR7
Z2xfR05VTElCX0VOQUJMRURfZG9zbmFtZV9GQUxTRX0iOyB0aGVuCiAgYXNfZm5fZXJyb3IgJD8g
ImNvbmRpdGlvbmFsIFwiZ2xfR05VTElCX0VOQUJMRURfZG9zbmFtZVwiIHdhcyBuZXZlciBkZWZp
bmVkLgpVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0
aW9uYWxseS4iICIkTElORU5PIiA1CmZpCmlmIHRlc3QgLXogIiR7Z2xfR05VTElCX0VOQUJMRURf
ZHVwX1RSVUV9IiAmJiB0ZXN0IC16ICIke2dsX0dOVUxJQl9FTkFCTEVEX2R1cF9GQUxTRX0iOyB0
aGVuCiAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiZ2xfR05VTElCX0VOQUJMRURfZHVw
XCIgd2FzIG5ldmVyIGRlZmluZWQuClVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9u
bHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKZmkKaWYgdGVzdCAteiAiJHtn
bF9HTlVMSUJfRU5BQkxFRF9kdXAyX1RSVUV9IiAmJiB0ZXN0IC16ICIke2dsX0dOVUxJQl9FTkFC
TEVEX2R1cDJfRkFMU0V9IjsgdGhlbgogIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcImds
X0dOVUxJQl9FTkFCTEVEX2R1cDJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KVXN1YWxseSB0aGlzIG1l
YW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIg
NQpmaQppZiB0ZXN0IC16ICIke2dsX0dOVUxJQl9FTkFCTEVEX2ZjaGRpcl9UUlVFfSIgJiYgdGVz
dCAteiAiJHtnbF9HTlVMSUJfRU5BQkxFRF9mY2hkaXJfRkFMU0V9IjsgdGhlbgogIGFzX2ZuX2Vy
cm9yICQ/ICJjb25kaXRpb25hbCBcImdsX0dOVUxJQl9FTkFCTEVEX2ZjaGRpclwiIHdhcyBuZXZl
ciBkZWZpbmVkLgpVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQg
Y29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CmZpCmlmIHRlc3QgLXogIiR7Z2xfR05VTElCX0VO
QUJMRURfNDNmZTg3YTM0MWQ5YjRiOTNjNDdjM2FkODE5YTUyMzlfVFJVRX0iICYmIHRlc3QgLXog
IiR7Z2xfR05VTElCX0VOQUJMRURfNDNmZTg3YTM0MWQ5YjRiOTNjNDdjM2FkODE5YTUyMzlfRkFM
U0V9IjsgdGhlbgogIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcImdsX0dOVUxJQl9FTkFC
TEVEXzQzZmU4N2EzNDFkOWI0YjkzYzQ3YzNhZDgxOWE1MjM5XCIgd2FzIG5ldmVyIGRlZmluZWQu
ClVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25h
bGx5LiIgIiRMSU5FTk8iIDUKZmkKaWYgdGVzdCAteiAiJHtnbF9HTlVMSUJfRU5BQkxFRF9mZG9w
ZW5kaXJfVFJVRX0iICYmIHRlc3QgLXogIiR7Z2xfR05VTElCX0VOQUJMRURfZmRvcGVuZGlyX0ZB
TFNFfSI7IHRoZW4KICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJnbF9HTlVMSUJfRU5B
QkxFRF9mZG9wZW5kaXJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KVXN1YWxseSB0aGlzIG1lYW5zIHRo
ZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQpmaQpp
ZiB0ZXN0IC16ICIke2dsX0dOVUxJQl9FTkFCTEVEX2ZjYTk4NTJkYjJhNDNiYjMzZjAyZjBmYmRi
YzE3NGY2X1RSVUV9IiAmJiB0ZXN0IC16ICIke2dsX0dOVUxJQl9FTkFCTEVEX2ZjYTk4NTJkYjJh
NDNiYjMzZjAyZjBmYmRiYzE3NGY2X0ZBTFNFfSI7IHRoZW4KICBhc19mbl9lcnJvciAkPyAiY29u
ZGl0aW9uYWwgXCJnbF9HTlVMSUJfRU5BQkxFRF9mY2E5ODUyZGIyYTQzYmIzM2YwMmYwZmJkYmMx
NzRmNlwiIHdhcyBuZXZlciBkZWZpbmVkLgpVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdh
cyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CmZpCmlmIHRlc3QgLXog
IiR7Z2xfR05VTElCX0VOQUJMRURfZnBpZWVlX1RSVUV9IiAmJiB0ZXN0IC16ICIke2dsX0dOVUxJ
Ql9FTkFCTEVEX2ZwaWVlZV9GQUxTRX0iOyB0aGVuCiAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlv
bmFsIFwiZ2xfR05VTElCX0VOQUJMRURfZnBpZWVlXCIgd2FzIG5ldmVyIGRlZmluZWQuClVzdWFs
bHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIg
IiRMSU5FTk8iIDUKZmkKaWYgdGVzdCAteiAiJHtnbF9HTlVMSUJfRU5BQkxFRF9mcHVjd19UUlVF
fSIgJiYgdGVzdCAteiAiJHtnbF9HTlVMSUJfRU5BQkxFRF9mcHVjd19GQUxTRX0iOyB0aGVuCiAg
YXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiZ2xfR05VTElCX0VOQUJMRURfZnB1Y3dcIiB3
YXMgbmV2ZXIgZGVmaW5lZC4KVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBp
bnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQpmaQppZiB0ZXN0IC16ICIke2dsX0dO
VUxJQl9FTkFCTEVEX2UxYzZhMTI4MWNlMmNjNTljNzE2ODk0NTUwYmNiMmI1X1RSVUV9IiAmJiB0
ZXN0IC16ICIke2dsX0dOVUxJQl9FTkFCTEVEX2UxYzZhMTI4MWNlMmNjNTljNzE2ODk0NTUwYmNi
MmI1X0ZBTFNFfSI7IHRoZW4KICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJnbF9HTlVM
SUJfRU5BQkxFRF9lMWM2YTEyODFjZTJjYzU5YzcxNjg5NDU1MGJjYjJiNVwiIHdhcyBuZXZlciBk
ZWZpbmVkLgpVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29u
ZGl0aW9uYWxseS4iICIkTElORU5PIiA1CmZpCmlmIHRlc3QgLXogIiR7Z2xfR05VTElCX0VOQUJM
RURfZTBjYTgxOTEyZjIzMjE0ZTQ0ZjU3MDA5MjJkYjM0YmVfVFJVRX0iICYmIHRlc3QgLXogIiR7
Z2xfR05VTElCX0VOQUJMRURfZTBjYTgxOTEyZjIzMjE0ZTQ0ZjU3MDA5MjJkYjM0YmVfRkFMU0V9
IjsgdGhlbgogIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcImdsX0dOVUxJQl9FTkFCTEVE
X2UwY2E4MTkxMmYyMzIxNGU0NGY1NzAwOTIyZGIzNGJlXCIgd2FzIG5ldmVyIGRlZmluZWQuClVz
dWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5
LiIgIiRMSU5FTk8iIDUKZmkKaWYgdGVzdCAteiAiJHtnbF9HTlVMSUJfRU5BQkxFRF9mc3RhdGF0
X1RSVUV9IiAmJiB0ZXN0IC16ICIke2dsX0dOVUxJQl9FTkFCTEVEX2ZzdGF0YXRfRkFMU0V9Ijsg
dGhlbgogIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcImdsX0dOVUxJQl9FTkFCTEVEX2Zz
dGF0YXRcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3
YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQpmaQppZiB0ZXN0IC16
ICIke2dsX0dOVUxJQl9FTkFCTEVEXzNkMDk0ZWY1NDJiZmRkMjM4YTUxOTRlMTcyYmZlNWY2X1RS
VUV9IiAmJiB0ZXN0IC16ICIke2dsX0dOVUxJQl9FTkFCTEVEXzNkMDk0ZWY1NDJiZmRkMjM4YTUx
OTRlMTcyYmZlNWY2X0ZBTFNFfSI7IHRoZW4KICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwg
XCJnbF9HTlVMSUJfRU5BQkxFRF8zZDA5NGVmNTQyYmZkZDIzOGE1MTk0ZTE3MmJmZTVmNlwiIHdh
cyBuZXZlciBkZWZpbmVkLgpVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGlu
dm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CmZpCmlmIHRlc3QgLXogIiR7Z2xfR05V
TElCX0VOQUJMRURfZ2V0ZHRhYmxlc2l6ZV9UUlVFfSIgJiYgdGVzdCAteiAiJHtnbF9HTlVMSUJf
RU5BQkxFRF9nZXRkdGFibGVzaXplX0ZBTFNFfSI7IHRoZW4KICBhc19mbl9lcnJvciAkPyAiY29u
ZGl0aW9uYWwgXCJnbF9HTlVMSUJfRU5BQkxFRF9nZXRkdGFibGVzaXplXCIgd2FzIG5ldmVyIGRl
ZmluZWQuClVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25k
aXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKZmkKaWYgdGVzdCAteiAiJHtnbF9HTlVMSUJfRU5BQkxF
RF9oYXZlbGliX1RSVUV9IiAmJiB0ZXN0IC16ICIke2dsX0dOVUxJQl9FTkFCTEVEX2hhdmVsaWJf
RkFMU0V9IjsgdGhlbgogIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcImdsX0dOVUxJQl9F
TkFCTEVEX2hhdmVsaWJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KVXN1YWxseSB0aGlzIG1lYW5zIHRo
ZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQpmaQpp
ZiB0ZXN0IC16ICIke2dsX0dOVUxJQl9FTkFCTEVEX2ludHByb3BzX1RSVUV9IiAmJiB0ZXN0IC16
ICIke2dsX0dOVUxJQl9FTkFCTEVEX2ludHByb3BzX0ZBTFNFfSI7IHRoZW4KICBhc19mbl9lcnJv
ciAkPyAiY29uZGl0aW9uYWwgXCJnbF9HTlVMSUJfRU5BQkxFRF9pbnRwcm9wc1wiIHdhcyBuZXZl
ciBkZWZpbmVkLgpVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQg
Y29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CmZpCmlmIHRlc3QgLXogIiR7Z2xfR05VTElCX0VO
QUJMRURfYjFkZjcxMTdiNDc5ZDJkYTU5ZDc2ZGViYTQ2OGVlMjFfVFJVRX0iICYmIHRlc3QgLXog
IiR7Z2xfR05VTElCX0VOQUJMRURfYjFkZjcxMTdiNDc5ZDJkYTU5ZDc2ZGViYTQ2OGVlMjFfRkFM
U0V9IjsgdGhlbgogIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcImdsX0dOVUxJQl9FTkFC
TEVEX2IxZGY3MTE3YjQ3OWQyZGE1OWQ3NmRlYmE0NjhlZTIxXCIgd2FzIG5ldmVyIGRlZmluZWQu
ClVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25h
bGx5LiIgIiRMSU5FTk8iIDUKZmkKaWYgdGVzdCAteiAiJHtnbF9HTlVMSUJfRU5BQkxFRF8zZjBl
NTkzMDMzZDFmYzJjMTI3NTgxOTYwZjY0MWI2Nl9UUlVFfSIgJiYgdGVzdCAteiAiJHtnbF9HTlVM
SUJfRU5BQkxFRF8zZjBlNTkzMDMzZDFmYzJjMTI3NTgxOTYwZjY0MWI2Nl9GQUxTRX0iOyB0aGVu
CiAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiZ2xfR05VTElCX0VOQUJMRURfM2YwZTU5
MzAzM2QxZmMyYzEyNzU4MTk2MGY2NDFiNjZcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KVXN1YWxseSB0
aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJ
TkVOTyIgNQpmaQppZiB0ZXN0IC16ICIke2dsX0dOVUxJQl9FTkFCTEVEX2RiZGYyMjg2OGE1MzY3
ZjI4YmYxOGUwMDEzYWM2ZjhmX1RSVUV9IiAmJiB0ZXN0IC16ICIke2dsX0dOVUxJQl9FTkFCTEVE
X2RiZGYyMjg2OGE1MzY3ZjI4YmYxOGUwMDEzYWM2ZjhmX0ZBTFNFfSI7IHRoZW4KICBhc19mbl9l
cnJvciAkPyAiY29uZGl0aW9uYWwgXCJnbF9HTlVMSUJfRU5BQkxFRF9kYmRmMjI4NjhhNTM2N2Yy
OGJmMThlMDAxM2FjNmY4ZlwiIHdhcyBuZXZlciBkZWZpbmVkLgpVc3VhbGx5IHRoaXMgbWVhbnMg
dGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CmZp
CmlmIHRlc3QgLXogIiR7Z2xfR05VTElCX0VOQUJMRURfbG9ja19UUlVFfSIgJiYgdGVzdCAteiAi
JHtnbF9HTlVMSUJfRU5BQkxFRF9sb2NrX0ZBTFNFfSI7IHRoZW4KICBhc19mbl9lcnJvciAkPyAi
Y29uZGl0aW9uYWwgXCJnbF9HTlVMSUJfRU5BQkxFRF9sb2NrXCIgd2FzIG5ldmVyIGRlZmluZWQu
ClVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25h
bGx5LiIgIiRMSU5FTk8iIDUKZmkKaWYgdGVzdCAteiAiJHtnbF9HTlVMSUJfRU5BQkxFRF9sc3Rh
dF9UUlVFfSIgJiYgdGVzdCAteiAiJHtnbF9HTlVMSUJfRU5BQkxFRF9sc3RhdF9GQUxTRX0iOyB0
aGVuCiAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiZ2xfR05VTElCX0VOQUJMRURfbHN0
YXRcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMg
b25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQpmaQppZiB0ZXN0IC16ICIk
e2dsX0dOVUxJQl9FTkFCTEVEX21hdGhfVFJVRX0iICYmIHRlc3QgLXogIiR7Z2xfR05VTElCX0VO
QUJMRURfbWF0aF9GQUxTRX0iOyB0aGVuCiAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwi
Z2xfR05VTElCX0VOQUJMRURfbWF0aFwiIHdhcyBuZXZlciBkZWZpbmVkLgpVc3VhbGx5IHRoaXMg
bWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5P
IiA1CmZpCmlmIHRlc3QgLXogIiR7Z2xfR05VTElCX0VOQUJMRURfbWVtcGNweV9UUlVFfSIgJiYg
dGVzdCAteiAiJHtnbF9HTlVMSUJfRU5BQkxFRF9tZW1wY3B5X0ZBTFNFfSI7IHRoZW4KICBhc19m
bl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJnbF9HTlVMSUJfRU5BQkxFRF9tZW1wY3B5XCIgd2Fz
IG5ldmVyIGRlZmluZWQuClVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52
b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKZmkKaWYgdGVzdCAteiAiJHtnbF9HTlVM
SUJfRU5BQkxFRF9tZW1yY2hyX1RSVUV9IiAmJiB0ZXN0IC16ICIke2dsX0dOVUxJQl9FTkFCTEVE
X21lbXJjaHJfRkFMU0V9IjsgdGhlbgogIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcImds
X0dOVUxJQl9FTkFCTEVEX21lbXJjaHJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KVXN1YWxseSB0aGlz
IG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVO
TyIgNQpmaQppZiB0ZXN0IC16ICIke2dsX0dOVUxJQl9FTkFCTEVEX2Y2OTFmMDc2ZjY1MDk2NGM5
ZjU1OThjM2VlNDg3NjE2X1RSVUV9IiAmJiB0ZXN0IC16ICIke2dsX0dOVUxJQl9FTkFCTEVEX2Y2
OTFmMDc2ZjY1MDk2NGM5ZjU1OThjM2VlNDg3NjE2X0ZBTFNFfSI7IHRoZW4KICBhc19mbl9lcnJv
ciAkPyAiY29uZGl0aW9uYWwgXCJnbF9HTlVMSUJfRU5BQkxFRF9mNjkxZjA3NmY2NTA5NjRjOWY1
NTk4YzNlZTQ4NzYxNlwiIHdhcyBuZXZlciBkZWZpbmVkLgpVc3VhbGx5IHRoaXMgbWVhbnMgdGhl
IG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CmZpCmlm
IHRlc3QgLXogIiR7Z2xfR05VTElCX0VOQUJMRURfNjc2MjIwZmE0MzY2ZWZhOWJkYmZjY2YxMWE4
NTdjMDdfVFJVRX0iICYmIHRlc3QgLXogIiR7Z2xfR05VTElCX0VOQUJMRURfNjc2MjIwZmE0MzY2
ZWZhOWJkYmZjY2YxMWE4NTdjMDdfRkFMU0V9IjsgdGhlbgogIGFzX2ZuX2Vycm9yICQ/ICJjb25k
aXRpb25hbCBcImdsX0dOVUxJQl9FTkFCTEVEXzY3NjIyMGZhNDM2NmVmYTliZGJmY2NmMTFhODU3
YzA3XCIgd2FzIG5ldmVyIGRlZmluZWQuClVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2Fz
IG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKZmkKaWYgdGVzdCAteiAi
JHtnbF9HTlVMSUJfRU5BQkxFRF9vcGVuYXRfVFJVRX0iICYmIHRlc3QgLXogIiR7Z2xfR05VTElC
X0VOQUJMRURfb3BlbmF0X0ZBTFNFfSI7IHRoZW4KICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9u
YWwgXCJnbF9HTlVMSUJfRU5BQkxFRF9vcGVuYXRcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KVXN1YWxs
eSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAi
JExJTkVOTyIgNQpmaQppZiB0ZXN0IC16ICIke2dsX0dOVUxJQl9FTkFCTEVEXzE4NDAxMjlkNDkw
ZjNhMDBjOGEwOTgzMTZkMGZhMzQ1X1RSVUV9IiAmJiB0ZXN0IC16ICIke2dsX0dOVUxJQl9FTkFC
TEVEXzE4NDAxMjlkNDkwZjNhMDBjOGEwOTgzMTZkMGZhMzQ1X0ZBTFNFfSI7IHRoZW4KICBhc19m
bl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJnbF9HTlVMSUJfRU5BQkxFRF8xODQwMTI5ZDQ5MGYz
YTAwYzhhMDk4MzE2ZDBmYTM0NVwiIHdhcyBuZXZlciBkZWZpbmVkLgpVc3VhbGx5IHRoaXMgbWVh
bnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1
CmZpCmlmIHRlc3QgLXogIiR7Z2xfR05VTElCX0VOQUJMRURfMDNlMGFhYWQ0Y2I4OWNhNzU3NjUz
YmQzNjdhNmNjYjdfVFJVRX0iICYmIHRlc3QgLXogIiR7Z2xfR05VTElCX0VOQUJMRURfMDNlMGFh
YWQ0Y2I4OWNhNzU3NjUzYmQzNjdhNmNjYjdfRkFMU0V9IjsgdGhlbgogIGFzX2ZuX2Vycm9yICQ/
ICJjb25kaXRpb25hbCBcImdsX0dOVUxJQl9FTkFCTEVEXzAzZTBhYWFkNGNiODljYTc1NzY1M2Jk
MzY3YTZjY2I3XCIgd2FzIG5ldmVyIGRlZmluZWQuClVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFj
cm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKZmkKaWYgdGVz
dCAteiAiJHtnbF9HTlVMSUJfRU5BQkxFRF9wYXRobWF4X1RSVUV9IiAmJiB0ZXN0IC16ICIke2ds
X0dOVUxJQl9FTkFCTEVEX3BhdGhtYXhfRkFMU0V9IjsgdGhlbgogIGFzX2ZuX2Vycm9yICQ/ICJj
b25kaXRpb25hbCBcImdsX0dOVUxJQl9FTkFCTEVEX3BhdGhtYXhcIiB3YXMgbmV2ZXIgZGVmaW5l
ZC4KVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlv
bmFsbHkuIiAiJExJTkVOTyIgNQpmaQppZiB0ZXN0IC16ICIke2dsX0dOVUxJQl9FTkFCTEVEXzJm
NTUxYTY4NGFhYjU0MDA2MzNjYmZkNTZkZjNiZjk0X1RSVUV9IiAmJiB0ZXN0IC16ICIke2dsX0dO
VUxJQl9FTkFCTEVEXzJmNTUxYTY4NGFhYjU0MDA2MzNjYmZkNTZkZjNiZjk0X0ZBTFNFfSI7IHRo
ZW4KICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJnbF9HTlVMSUJfRU5BQkxFRF8yZjU1
MWE2ODRhYWI1NDAwNjMzY2JmZDU2ZGYzYmY5NFwiIHdhcyBuZXZlciBkZWZpbmVkLgpVc3VhbGx5
IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIk
TElORU5PIiA1CmZpCmlmIHRlc3QgLXogIiR7Z2xfR05VTElCX0VOQUJMRURfYmJhNjM5ZjBjZmQ2
NTg1NDBkNzE2ZjNhMmJhNWU2OGZfVFJVRX0iICYmIHRlc3QgLXogIiR7Z2xfR05VTElCX0VOQUJM
RURfYmJhNjM5ZjBjZmQ2NTg1NDBkNzE2ZjNhMmJhNWU2OGZfRkFMU0V9IjsgdGhlbgogIGFzX2Zu
X2Vycm9yICQ/ICJjb25kaXRpb25hbCBcImdsX0dOVUxJQl9FTkFCTEVEX2JiYTYzOWYwY2ZkNjU4
NTQwZDcxNmYzYTJiYTVlNjhmXCIgd2FzIG5ldmVyIGRlZmluZWQuClVzdWFsbHkgdGhpcyBtZWFu
cyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUK
ZmkKaWYgdGVzdCAteiAiJHtnbF9HTlVMSUJfRU5BQkxFRF9yYWlzZV9UUlVFfSIgJiYgdGVzdCAt
eiAiJHtnbF9HTlVMSUJfRU5BQkxFRF9yYWlzZV9GQUxTRX0iOyB0aGVuCiAgYXNfZm5fZXJyb3Ig
JD8gImNvbmRpdGlvbmFsIFwiZ2xfR05VTElCX0VOQUJMRURfcmFpc2VcIiB3YXMgbmV2ZXIgZGVm
aW5lZC4KVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRp
dGlvbmFsbHkuIiAiJExJTkVOTyIgNQpmaQppZiB0ZXN0IC16ICIke2dsX0dOVUxJQl9FTkFCTEVE
X3JlYWRkaXJfVFJVRX0iICYmIHRlc3QgLXogIiR7Z2xfR05VTElCX0VOQUJMRURfcmVhZGRpcl9G
QUxTRX0iOyB0aGVuCiAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiZ2xfR05VTElCX0VO
QUJMRURfcmVhZGRpclwiIHdhcyBuZXZlciBkZWZpbmVkLgpVc3VhbGx5IHRoaXMgbWVhbnMgdGhl
IG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CmZpCmlm
IHRlc3QgLXogIiR7Z2xfR05VTElCX0VOQUJMRURfNjFiY2FjYTc2YjNlNmY5YWU1NWQ1N2ExYzMx
OTNiYzRfVFJVRX0iICYmIHRlc3QgLXogIiR7Z2xfR05VTElCX0VOQUJMRURfNjFiY2FjYTc2YjNl
NmY5YWU1NWQ1N2ExYzMxOTNiYzRfRkFMU0V9IjsgdGhlbgogIGFzX2ZuX2Vycm9yICQ/ICJjb25k
aXRpb25hbCBcImdsX0dOVUxJQl9FTkFCTEVEXzYxYmNhY2E3NmIzZTZmOWFlNTVkNTdhMWMzMTkz
YmM0XCIgd2FzIG5ldmVyIGRlZmluZWQuClVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2Fz
IG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKZmkKaWYgdGVzdCAteiAi
JHtnbF9HTlVMSUJfRU5BQkxFRF9yZXdpbmRkaXJfVFJVRX0iICYmIHRlc3QgLXogIiR7Z2xfR05V
TElCX0VOQUJMRURfcmV3aW5kZGlyX0ZBTFNFfSI7IHRoZW4KICBhc19mbl9lcnJvciAkPyAiY29u
ZGl0aW9uYWwgXCJnbF9HTlVMSUJfRU5BQkxFRF9yZXdpbmRkaXJcIiB3YXMgbmV2ZXIgZGVmaW5l
ZC4KVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlv
bmFsbHkuIiAiJExJTkVOTyIgNQpmaQppZiB0ZXN0IC16ICIke2dsX0dOVUxJQl9FTkFCTEVEX2Q0
ODUwNTMyNjg4YmExNmQ2ODVmMDM2MDc2NjExZjIxX1RSVUV9IiAmJiB0ZXN0IC16ICIke2dsX0dO
VUxJQl9FTkFCTEVEX2Q0ODUwNTMyNjg4YmExNmQ2ODVmMDM2MDc2NjExZjIxX0ZBTFNFfSI7IHRo
ZW4KICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJnbF9HTlVMSUJfRU5BQkxFRF9kNDg1
MDUzMjY4OGJhMTZkNjg1ZjAzNjA3NjYxMWYyMVwiIHdhcyBuZXZlciBkZWZpbmVkLgpVc3VhbGx5
IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIk
TElORU5PIiA1CmZpCmlmIHRlc3QgLXogIiR7Z2xfR05VTElCX0VOQUJMRURfc2VjdXJlX2dldGVu
dl9UUlVFfSIgJiYgdGVzdCAteiAiJHtnbF9HTlVMSUJfRU5BQkxFRF9zZWN1cmVfZ2V0ZW52X0ZB
TFNFfSI7IHRoZW4KICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJnbF9HTlVMSUJfRU5B
QkxFRF9zZWN1cmVfZ2V0ZW52XCIgd2FzIG5ldmVyIGRlZmluZWQuClVzdWFsbHkgdGhpcyBtZWFu
cyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUK
ZmkKaWYgdGVzdCAteiAiJHtnbF9HTlVMSUJfRU5BQkxFRF9zaWduYml0X1RSVUV9IiAmJiB0ZXN0
IC16ICIke2dsX0dOVUxJQl9FTkFCTEVEX3NpZ25iaXRfRkFMU0V9IjsgdGhlbgogIGFzX2ZuX2Vy
cm9yICQ/ICJjb25kaXRpb25hbCBcImdsX0dOVUxJQl9FTkFCTEVEX3NpZ25iaXRcIiB3YXMgbmV2
ZXIgZGVmaW5lZC4KVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2Vk
IGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQpmaQppZiB0ZXN0IC16ICIke2dsX0dOVUxJQl9F
TkFCTEVEX3NpZ3Byb2NtYXNrX1RSVUV9IiAmJiB0ZXN0IC16ICIke2dsX0dOVUxJQl9FTkFCTEVE
X3NpZ3Byb2NtYXNrX0ZBTFNFfSI7IHRoZW4KICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwg
XCJnbF9HTlVMSUJfRU5BQkxFRF9zaWdwcm9jbWFza1wiIHdhcyBuZXZlciBkZWZpbmVkLgpVc3Vh
bGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4i
ICIkTElORU5PIiA1CmZpCmlmIHRlc3QgLXogIiR7Z2xfR05VTElCX0VOQUJMRURfZjk4NTA2MzFk
Y2E5MTg1OWU5Y2RkYWM5MzU5OTIxYzBfVFJVRX0iICYmIHRlc3QgLXogIiR7Z2xfR05VTElCX0VO
QUJMRURfZjk4NTA2MzFkY2E5MTg1OWU5Y2RkYWM5MzU5OTIxYzBfRkFMU0V9IjsgdGhlbgogIGFz
X2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcImdsX0dOVUxJQl9FTkFCTEVEX2Y5ODUwNjMxZGNh
OTE4NTllOWNkZGFjOTM1OTkyMWMwXCIgd2FzIG5ldmVyIGRlZmluZWQuClVzdWFsbHkgdGhpcyBt
ZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8i
IDUKZmkKaWYgdGVzdCAteiAiJHtnbF9HTlVMSUJfRU5BQkxFRF9zdHJlcnJvcl9UUlVFfSIgJiYg
dGVzdCAteiAiJHtnbF9HTlVMSUJfRU5BQkxFRF9zdHJlcnJvcl9GQUxTRX0iOyB0aGVuCiAgYXNf
Zm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiZ2xfR05VTElCX0VOQUJMRURfc3RyZXJyb3JcIiB3
YXMgbmV2ZXIgZGVmaW5lZC4KVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBp
bnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQpmaQppZiB0ZXN0IC16ICIke2dsX0dO
VUxJQl9FTkFCTEVEX2RiYjU3ZjQ5MzUyYmU4ZmI4Njg2OTYyOWEyNTRmYjcyX1RSVUV9IiAmJiB0
ZXN0IC16ICIke2dsX0dOVUxJQl9FTkFCTEVEX2RiYjU3ZjQ5MzUyYmU4ZmI4Njg2OTYyOWEyNTRm
YjcyX0ZBTFNFfSI7IHRoZW4KICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJnbF9HTlVM
SUJfRU5BQkxFRF9kYmI1N2Y0OTM1MmJlOGZiODY4Njk2MjlhMjU0ZmI3MlwiIHdhcyBuZXZlciBk
ZWZpbmVkLgpVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29u
ZGl0aW9uYWxseS4iICIkTElORU5PIiA1CmZpCmlmIHRlc3QgLXogIiR7Z2xfR05VTElCX0VOQUJM
RURfdGVtcG5hbWVfVFJVRX0iICYmIHRlc3QgLXogIiR7Z2xfR05VTElCX0VOQUJMRURfdGVtcG5h
bWVfRkFMU0V9IjsgdGhlbgogIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcImdsX0dOVUxJ
Ql9FTkFCTEVEX3RlbXBuYW1lXCIgd2FzIG5ldmVyIGRlZmluZWQuClVzdWFsbHkgdGhpcyBtZWFu
cyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUK
ZmkKaWYgdGVzdCAteiAiJHtnbF9HTlVMSUJfRU5BQkxFRF90aHJlYWRsaWJfVFJVRX0iICYmIHRl
c3QgLXogIiR7Z2xfR05VTElCX0VOQUJMRURfdGhyZWFkbGliX0ZBTFNFfSI7IHRoZW4KICBhc19m
bl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJnbF9HTlVMSUJfRU5BQkxFRF90aHJlYWRsaWJcIiB3
YXMgbmV2ZXIgZGVmaW5lZC4KVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBp
bnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQpmaQppZiB0ZXN0IC16ICIke2dsX0dO
VUxJQl9FTkFCTEVEX3Rsc19UUlVFfSIgJiYgdGVzdCAteiAiJHtnbF9HTlVMSUJfRU5BQkxFRF90
bHNfRkFMU0V9IjsgdGhlbgogIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcImdsX0dOVUxJ
Ql9FTkFCTEVEX3Rsc1wiIHdhcyBuZXZlciBkZWZpbmVkLgpVc3VhbGx5IHRoaXMgbWVhbnMgdGhl
IG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CmZpCgog
ICAgZ2xfbGlib2Jqcz0KICAgIGdsX2x0bGlib2Jqcz0KICAgIGlmIHRlc3QgLW4gIiRnbF9MSUJP
QkpTIjsgdGhlbgogICAgICAjIFJlbW92ZSB0aGUgZXh0ZW5zaW9uLgogICAgICBzZWRfZHJvcF9v
YmpleHQ9J3MvXC5vJC8vO3MvXC5vYmokLy8nCiAgICAgIGZvciBpIGluIGBmb3IgaSBpbiAkZ2xf
TElCT0JKUzsgZG8gZWNobyAiJGkiOyBkb25lIHwgc2VkIC1lICIkc2VkX2Ryb3Bfb2JqZXh0IiB8
IHNvcnQgfCB1bmlxYDsgZG8KICAgICAgICBnbF9saWJvYmpzPSIkZ2xfbGlib2JqcyAkaS4kYWNf
b2JqZXh0IgogICAgICAgIGdsX2x0bGlib2Jqcz0iJGdsX2x0bGlib2JqcyAkaS5sbyIKICAgICAg
ZG9uZQogICAgZmkKICAgIGdsX0xJQk9CSlM9JGdsX2xpYm9ianMKCiAgICBnbF9MVExJQk9CSlM9
JGdsX2x0bGlib2JqcwoKCgogICAgZ2x0ZXN0c19saWJvYmpzPQogICAgZ2x0ZXN0c19sdGxpYm9i
anM9CiAgICBpZiB0ZXN0IC1uICIkZ2x0ZXN0c19MSUJPQkpTIjsgdGhlbgogICAgICAjIFJlbW92
ZSB0aGUgZXh0ZW5zaW9uLgogICAgICBzZWRfZHJvcF9vYmpleHQ9J3MvXC5vJC8vO3MvXC5vYmok
Ly8nCiAgICAgIGZvciBpIGluIGBmb3IgaSBpbiAkZ2x0ZXN0c19MSUJPQkpTOyBkbyBlY2hvICIk
aSI7IGRvbmUgfCBzZWQgLWUgIiRzZWRfZHJvcF9vYmpleHQiIHwgc29ydCB8IHVuaXFgOyBkbwog
ICAgICAgIGdsdGVzdHNfbGlib2Jqcz0iJGdsdGVzdHNfbGlib2JqcyAkaS4kYWNfb2JqZXh0Igog
ICAgICAgIGdsdGVzdHNfbHRsaWJvYmpzPSIkZ2x0ZXN0c19sdGxpYm9ianMgJGkubG8iCiAgICAg
IGRvbmUKICAgIGZpCiAgICBnbHRlc3RzX0xJQk9CSlM9JGdsdGVzdHNfbGlib2JqcwoKICAgIGds
dGVzdHNfTFRMSUJPQkpTPSRnbHRlc3RzX2x0bGlib2JqcwoKCgo6ICIke0NPTkZJR19TVEFUVVM9
Li9jb25maWcuc3RhdHVzfSIKYWNfd3JpdGVfZmFpbD0wCmFjX2NsZWFuX2ZpbGVzX3NhdmU9JGFj
X2NsZWFuX2ZpbGVzCmFjX2NsZWFuX2ZpbGVzPSIkYWNfY2xlYW5fZmlsZXMgJENPTkZJR19TVEFU
VVMiCnsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY3JlYXRpbmcgJENP
TkZJR19TVEFUVVMiID4mNQokYXNfZWNobyAiJGFzX21lOiBjcmVhdGluZyAkQ09ORklHX1NUQVRV
UyIgPiY2O30KYXNfd3JpdGVfZmFpbD0wCmNhdCA+JENPTkZJR19TVEFUVVMgPDxfQVNFT0YgfHwg
YXNfd3JpdGVfZmFpbD0xCiMhICRTSEVMTAojIEdlbmVyYXRlZCBieSAkYXNfbWUuCiMgUnVuIHRo
aXMgZmlsZSB0byByZWNyZWF0ZSB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLgojIENvbXBpbGVy
IG91dHB1dCBwcm9kdWNlZCBieSBjb25maWd1cmUsIHVzZWZ1bCBmb3IgZGVidWdnaW5nCiMgY29u
ZmlndXJlLCBpcyBpbiBjb25maWcubG9nIGlmIGl0IGV4aXN0cy4KCmRlYnVnPWZhbHNlCmFjX2Nz
X3JlY2hlY2s9ZmFsc2UKYWNfY3Nfc2lsZW50PWZhbHNlCgpTSEVMTD1cJHtDT05GSUdfU0hFTEwt
JFNIRUxMfQpleHBvcnQgU0hFTEwKX0FTRU9GCmNhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BU0VP
RiB8fCBhc193cml0ZV9mYWlsPTEKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKIyMgTTRzaCBJ
bml0aWFsaXphdGlvbi4gIyMKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKCiMgQmUgbW9yZSBC
b3VybmUgY29tcGF0aWJsZQpEVUFMQ0FTRT0xOyBleHBvcnQgRFVBTENBU0UgIyBmb3IgTUtTIHNo
CmlmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251
bGwgMj4mMTsgdGhlbiA6CiAgZW11bGF0ZSBzaAogIE5VTExDTUQ9OgogICMgUHJlLTQuMiB2ZXJz
aW9ucyBvZiBac2ggZG8gd29yZCBzcGxpdHRpbmcgb24gJHsxKyIkQCJ9LCB3aGljaAogICMgaXMg
Y29udHJhcnkgdG8gb3VyIHVzYWdlLiAgRGlzYWJsZSB0aGlzIGZlYXR1cmUuCiAgYWxpYXMgLWcg
JyR7MSsiJEAifSc9JyIkQCInCiAgc2V0b3B0IE5PX0dMT0JfU1VCU1QKZWxzZQogIGNhc2UgYChz
ZXQgLW8pIDI+L2Rldi9udWxsYCBpbiAjKAogICpwb3NpeCopIDoKICAgIHNldCAtbyBwb3NpeCA7
OyAjKAogICopIDoKICAgICA7Owplc2FjCmZpCgoKYXNfbmw9JwonCmV4cG9ydCBhc19ubAojIFBy
aW50aW5nIGEgbG9uZyBzdHJpbmcgY3Jhc2hlcyBTb2xhcmlzIDcgL3Vzci9iaW4vcHJpbnRmLgph
c19lY2hvPSdcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc
XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcJwph
c19lY2hvPSRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8KYXNfZWNobz0k
YXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8KIyBQcmVmZXIg
YSBrc2ggc2hlbGwgYnVpbHRpbiBvdmVyIGFuIGV4dGVybmFsIHByaW50ZiBwcm9ncmFtIG9uIFNv
bGFyaXMsCiMgYnV0IHdpdGhvdXQgd2FzdGluZyBmb3JrcyBmb3IgYmFzaCBvciB6c2guCmlmIHRl
c3QgLXogIiRCQVNIX1ZFUlNJT04kWlNIX1ZFUlNJT04iIFwKICAgICYmICh0ZXN0ICJYYHByaW50
IC1yIC0tICRhc19lY2hvYCIgPSAiWCRhc19lY2hvIikgMj4vZGV2L251bGw7IHRoZW4KICBhc19l
Y2hvPSdwcmludCAtciAtLScKICBhc19lY2hvX249J3ByaW50IC1ybiAtLScKZWxpZiAodGVzdCAi
WGBwcmludGYgJXMgJGFzX2VjaG9gIiA9ICJYJGFzX2VjaG8iKSAyPi9kZXYvbnVsbDsgdGhlbgog
IGFzX2VjaG89J3ByaW50ZiAlc1xuJwogIGFzX2VjaG9fbj0ncHJpbnRmICVzJwplbHNlCiAgaWYg
dGVzdCAiWGAoL3Vzci91Y2IvZWNobyAtbiAtbiAkYXNfZWNobykgMj4vZGV2L251bGxgIiA9ICJY
LW4gJGFzX2VjaG8iOyB0aGVuCiAgICBhc19lY2hvX2JvZHk9J2V2YWwgL3Vzci91Y2IvZWNobyAt
biAiJDEkYXNfbmwiJwogICAgYXNfZWNob19uPScvdXNyL3VjYi9lY2hvIC1uJwogIGVsc2UKICAg
IGFzX2VjaG9fYm9keT0nZXZhbCBleHByICJYJDEiIDogIlhcXCguKlxcKSInCiAgICBhc19lY2hv
X25fYm9keT0nZXZhbAogICAgICBhcmc9JDE7CiAgICAgIGNhc2UgJGFyZyBpbiAjKAogICAgICAq
IiRhc19ubCIqKQoJZXhwciAiWCRhcmciIDogIlhcXCguKlxcKSRhc19ubCI7Cglhcmc9YGV4cHIg
IlgkYXJnIiA6ICIuKiRhc19ubFxcKC4qXFwpImA7OwogICAgICBlc2FjOwogICAgICBleHByICJY
JGFyZyIgOiAiWFxcKC4qXFwpIiB8IHRyIC1kICIkYXNfbmwiCiAgICAnCiAgICBleHBvcnQgYXNf
ZWNob19uX2JvZHkKICAgIGFzX2VjaG9fbj0nc2ggLWMgJGFzX2VjaG9fbl9ib2R5IGFzX2VjaG8n
CiAgZmkKICBleHBvcnQgYXNfZWNob19ib2R5CiAgYXNfZWNobz0nc2ggLWMgJGFzX2VjaG9fYm9k
eSBhc19lY2hvJwpmaQoKIyBUaGUgdXNlciBpcyBhbHdheXMgcmlnaHQuCmlmIHRlc3QgIiR7UEFU
SF9TRVBBUkFUT1Irc2V0fSIgIT0gc2V0OyB0aGVuCiAgUEFUSF9TRVBBUkFUT1I9OgogIChQQVRI
PScvYmluOy9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxICYmIHsK
ICAgIChQQVRIPScvYmluOi9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAy
PiYxIHx8CiAgICAgIFBBVEhfU0VQQVJBVE9SPSc7JwogIH0KZmkKCgojIElGUwojIFdlIG5lZWQg
c3BhY2UsIHRhYiBhbmQgbmV3IGxpbmUsIGluIHByZWNpc2VseSB0aGF0IG9yZGVyLiAgUXVvdGlu
ZyBpcwojIHRoZXJlIHRvIHByZXZlbnQgZWRpdG9ycyBmcm9tIGNvbXBsYWluaW5nIGFib3V0IHNw
YWNlLXRhYi4KIyAoSWYgX0FTX1BBVEhfV0FMSyB3ZXJlIGNhbGxlZCB3aXRoIElGUyB1bnNldCwg
aXQgd291bGQgZGlzYWJsZSB3b3JkCiMgc3BsaXR0aW5nIGJ5IHNldHRpbmcgSUZTIHRvIGVtcHR5
IHZhbHVlLikKSUZTPSIgIiIJJGFzX25sIgoKIyBGaW5kIHdobyB3ZSBhcmUuICBMb29rIGluIHRo
ZSBwYXRoIGlmIHdlIGNvbnRhaW4gbm8gZGlyZWN0b3J5IHNlcGFyYXRvci4KYXNfbXlzZWxmPQpj
YXNlICQwIGluICMoKAogICpbXFwvXSogKSBhc19teXNlbGY9JDAgOzsKICAqKSBhc19zYXZlX0lG
Uz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCmZvciBhc19kaXIgaW4gJFBBVEgKZG8KICBJRlM9
JGFzX3NhdmVfSUZTCiAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgIHRlc3QgLXIg
IiRhc19kaXIvJDAiICYmIGFzX215c2VsZj0kYXNfZGlyLyQwICYmIGJyZWFrCiAgZG9uZQpJRlM9
JGFzX3NhdmVfSUZTCgogICAgIDs7CmVzYWMKIyBXZSBkaWQgbm90IGZpbmQgb3Vyc2VsdmVzLCBt
b3N0IHByb2JhYmx5IHdlIHdlcmUgcnVuIGFzIGBzaCBDT01NQU5EJwojIGluIHdoaWNoIGNhc2Ug
d2UgYXJlIG5vdCB0byBiZSBmb3VuZCBpbiB0aGUgcGF0aC4KaWYgdGVzdCAieCRhc19teXNlbGYi
ID0geDsgdGhlbgogIGFzX215c2VsZj0kMApmaQppZiB0ZXN0ICEgLWYgIiRhc19teXNlbGYiOyB0
aGVuCiAgJGFzX2VjaG8gIiRhc19teXNlbGY6IGVycm9yOiBjYW5ub3QgZmluZCBteXNlbGY7IHJl
cnVuIHdpdGggYW4gYWJzb2x1dGUgZmlsZSBuYW1lIiA+JjIKICBleGl0IDEKZmkKCiMgVW5zZXQg
dmFyaWFibGVzIHRoYXQgd2UgZG8gbm90IG5lZWQgYW5kIHdoaWNoIGNhdXNlIGJ1Z3MgKGUuZy4g
aW4KIyBwcmUtMy4wIFVXSU4ga3NoKS4gIEJ1dCBkbyBub3QgY2F1c2UgYnVncyBpbiBiYXNoIDIu
MDE7IHRoZSAifHwgZXhpdCAxIgojIHN1cHByZXNzZXMgYW55ICJTZWdtZW50YXRpb24gZmF1bHQi
IG1lc3NhZ2UgdGhlcmUuICAnKCgnIGNvdWxkCiMgdHJpZ2dlciBhIGJ1ZyBpbiBwZGtzaCA1LjIu
MTQuCmZvciBhc192YXIgaW4gQkFTSF9FTlYgRU5WIE1BSUwgTUFJTFBBVEgKZG8gZXZhbCB0ZXN0
IHhcJHskYXNfdmFyK3NldH0gPSB4c2V0IFwKICAmJiAoICh1bnNldCAkYXNfdmFyKSB8fCBleGl0
IDEpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCAkYXNfdmFyIHx8IDoKZG9uZQpQUzE9JyQgJwpQ
UzI9Jz4gJwpQUzQ9JysgJwoKIyBOTFMgbnVpc2FuY2VzLgpMQ19BTEw9QwpleHBvcnQgTENfQUxM
CkxBTkdVQUdFPUMKZXhwb3J0IExBTkdVQUdFCgojIENEUEFUSC4KKHVuc2V0IENEUEFUSCkgPi9k
ZXYvbnVsbCAyPiYxICYmIHVuc2V0IENEUEFUSAoKCiMgYXNfZm5fZXJyb3IgU1RBVFVTIEVSUk9S
IFtMSU5FTk8gTE9HX0ZEXQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIyBPdXRwdXQgImBiYXNlbmFtZSAkMGA6IGVycm9yOiBFUlJPUiIgdG8gc3RkZXJyLiBJZiBM
SU5FTk8gYW5kIExPR19GRCBhcmUKIyBwcm92aWRlZCwgYWxzbyBvdXRwdXQgdGhlIGVycm9yIHRv
IExPR19GRCwgcmVmZXJlbmNpbmcgTElORU5PLiBUaGVuIGV4aXQgdGhlCiMgc2NyaXB0IHdpdGgg
U1RBVFVTLCB1c2luZyAxIGlmIHRoYXQgd2FzIDAuCmFzX2ZuX2Vycm9yICgpCnsKICBhc19zdGF0
dXM9JDE7IHRlc3QgJGFzX3N0YXR1cyAtZXEgMCAmJiBhc19zdGF0dXM9MQogIGlmIHRlc3QgIiQ0
IjsgdGhlbgogICAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMyJ9IGFzX2xpbmVub19zdGFjaz1h
c19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjawogICAgJGFzX2VjaG8gIiRhc19tZToke2Fz
X2xpbmVuby0kTElORU5PfTogZXJyb3I6ICQyIiA+JiQ0CiAgZmkKICAkYXNfZWNobyAiJGFzX21l
OiBlcnJvcjogJDIiID4mMgogIGFzX2ZuX2V4aXQgJGFzX3N0YXR1cwp9ICMgYXNfZm5fZXJyb3IK
CgojIGFzX2ZuX3NldF9zdGF0dXMgU1RBVFVTCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBT
ZXQgJD8gdG8gU1RBVFVTLCB3aXRob3V0IGZvcmtpbmcuCmFzX2ZuX3NldF9zdGF0dXMgKCkKewog
IHJldHVybiAkMQp9ICMgYXNfZm5fc2V0X3N0YXR1cwoKIyBhc19mbl9leGl0IFNUQVRVUwojIC0t
LS0tLS0tLS0tLS0tLS0tCiMgRXhpdCB0aGUgc2hlbGwgd2l0aCBTVEFUVVMsIGV2ZW4gaW4gYSAi
dHJhcCAwIiBvciAic2V0IC1lIiBjb250ZXh0Lgphc19mbl9leGl0ICgpCnsKICBzZXQgK2UKICBh
c19mbl9zZXRfc3RhdHVzICQxCiAgZXhpdCAkMQp9ICMgYXNfZm5fZXhpdAoKIyBhc19mbl91bnNl
dCBWQVIKIyAtLS0tLS0tLS0tLS0tLS0KIyBQb3J0YWJseSB1bnNldCBWQVIuCmFzX2ZuX3Vuc2V0
ICgpCnsKICB7IGV2YWwgJDE9OyB1bnNldCAkMTt9Cn0KYXNfdW5zZXQ9YXNfZm5fdW5zZXQKIyBh
c19mbl9hcHBlbmQgVkFSIFZBTFVFCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEFwcGVuZCB0
aGUgdGV4dCBpbiBWQUxVRSB0byB0aGUgZW5kIG9mIHRoZSBkZWZpbml0aW9uIGNvbnRhaW5lZCBp
biBWQVIuIFRha2UKIyBhZHZhbnRhZ2Ugb2YgYW55IHNoZWxsIG9wdGltaXphdGlvbnMgdGhhdCBh
bGxvdyBhbW9ydGl6ZWQgbGluZWFyIGdyb3d0aCBvdmVyCiMgcmVwZWF0ZWQgYXBwZW5kcywgaW5z
dGVhZCBvZiB0aGUgdHlwaWNhbCBxdWFkcmF0aWMgZ3Jvd3RoIHByZXNlbnQgaW4gbmFpdmUKIyBp
bXBsZW1lbnRhdGlvbnMuCmlmIChldmFsICJhc192YXI9MTsgYXNfdmFyKz0yOyB0ZXN0IHhcJGFz
X3ZhciA9IHgxMiIpIDI+L2Rldi9udWxsOyB0aGVuIDoKICBldmFsICdhc19mbl9hcHBlbmQgKCkK
ICB7CiAgICBldmFsICQxKz1cJDIKICB9JwplbHNlCiAgYXNfZm5fYXBwZW5kICgpCiAgewogICAg
ZXZhbCAkMT1cJCQxXCQyCiAgfQpmaSAjIGFzX2ZuX2FwcGVuZAoKIyBhc19mbl9hcml0aCBBUkcu
Li4KIyAtLS0tLS0tLS0tLS0tLS0tLS0KIyBQZXJmb3JtIGFyaXRobWV0aWMgZXZhbHVhdGlvbiBv
biB0aGUgQVJHcywgYW5kIHN0b3JlIHRoZSByZXN1bHQgaW4gdGhlCiMgZ2xvYmFsICRhc192YWwu
IFRha2UgYWR2YW50YWdlIG9mIHNoZWxscyB0aGF0IGNhbiBhdm9pZCBmb3Jrcy4gVGhlIGFyZ3Vt
ZW50cwojIG11c3QgYmUgcG9ydGFibGUgYWNyb3NzICQoKCkpIGFuZCBleHByLgppZiAoZXZhbCAi
dGVzdCBcJCgoIDEgKyAxICkpID0gMiIpIDI+L2Rldi9udWxsOyB0aGVuIDoKICBldmFsICdhc19m
bl9hcml0aCAoKQogIHsKICAgIGFzX3ZhbD0kKCggJCogKSkKICB9JwplbHNlCiAgYXNfZm5fYXJp
dGggKCkKICB7CiAgICBhc192YWw9YGV4cHIgIiRAIiB8fCB0ZXN0ICQ/IC1lcSAxYAogIH0KZmkg
IyBhc19mbl9hcml0aAoKCmlmIGV4cHIgYSA6ICdcKGFcKScgPi9kZXYvbnVsbCAyPiYxICYmCiAg
IHRlc3QgIlhgZXhwciAwMDAwMSA6ICcuKlwoLi4uXCknYCIgPSBYMDAxOyB0aGVuCiAgYXNfZXhw
cj1leHByCmVsc2UKICBhc19leHByPWZhbHNlCmZpCgppZiAoYmFzZW5hbWUgLS0gLykgPi9kZXYv
bnVsbCAyPiYxICYmIHRlc3QgIlhgYmFzZW5hbWUgLS0gLyAyPiYxYCIgPSAiWC8iOyB0aGVuCiAg
YXNfYmFzZW5hbWU9YmFzZW5hbWUKZWxzZQogIGFzX2Jhc2VuYW1lPWZhbHNlCmZpCgppZiAoYXNf
ZGlyPWBkaXJuYW1lIC0tIC9gICYmIHRlc3QgIlgkYXNfZGlyIiA9IFgvKSA+L2Rldi9udWxsIDI+
JjE7IHRoZW4KICBhc19kaXJuYW1lPWRpcm5hbWUKZWxzZQogIGFzX2Rpcm5hbWU9ZmFsc2UKZmkK
CmFzX21lPWAkYXNfYmFzZW5hbWUgLS0gIiQwIiB8fAokYXNfZXhwciBYLyIkMCIgOiAnLiovXChb
Xi9dW14vXSpcKS8qJCcgXHwgXAoJIFgiJDAiIDogJ1hcKC8vXCkkJyBcfCBcCgkgWCIkMCIgOiAn
WFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8CiRhc19lY2hvIFgvIiQwIiB8CiAgICBzZWQgJy9e
LipcL1woW14vXVteL10qXClcLyokL3sKCSAgICBzLy9cMS8KCSAgICBxCgkgIH0KCSAgL15YXC9c
KFwvXC9cKSQvewoJICAgIHMvL1wxLwoJICAgIHEKCSAgfQoJICAvXlhcL1woXC9cKS4qL3sKCSAg
ICBzLy9cMS8KCSAgICBxCgkgIH0KCSAgcy8uKi8uLzsgcSdgCgojIEF2b2lkIGRlcGVuZGluZyB1
cG9uIENoYXJhY3RlciBSYW5nZXMuCmFzX2NyX2xldHRlcnM9J2FiY2RlZmdoaWprbG1ub3BxcnN0
dXZ3eHl6Jwphc19jcl9MRVRURVJTPSdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicKYXNfY3Jf
TGV0dGVycz0kYXNfY3JfbGV0dGVycyRhc19jcl9MRVRURVJTCmFzX2NyX2RpZ2l0cz0nMDEyMzQ1
Njc4OScKYXNfY3JfYWxudW09JGFzX2NyX0xldHRlcnMkYXNfY3JfZGlnaXRzCgpFQ0hPX0M9IEVD
SE9fTj0gRUNIT19UPQpjYXNlIGBlY2hvIC1uIHhgIGluICMoKCgoKAotbiopCiAgY2FzZSBgZWNo
byAneHlcYydgIGluCiAgKmMqKSBFQ0hPX1Q9JwknOzsJIyBFQ0hPX1QgaXMgc2luZ2xlIHRhYiBj
aGFyYWN0ZXIuCiAgeHkpICBFQ0hPX0M9J1xjJzs7CiAgKikgICBlY2hvIGBlY2hvIGtzaDg4IGJ1
ZyBvbiBBSVggNi4xYCA+IC9kZXYvbnVsbAogICAgICAgRUNIT19UPScJJzs7CiAgZXNhYzs7Ciop
CiAgRUNIT19OPSctbic7Owplc2FjCgpybSAtZiBjb25mJCQgY29uZiQkLmV4ZSBjb25mJCQuZmls
ZQppZiB0ZXN0IC1kIGNvbmYkJC5kaXI7IHRoZW4KICBybSAtZiBjb25mJCQuZGlyL2NvbmYkJC5m
aWxlCmVsc2UKICBybSAtZiBjb25mJCQuZGlyCiAgbWtkaXIgY29uZiQkLmRpciAyPi9kZXYvbnVs
bApmaQppZiAoZWNobyA+Y29uZiQkLmZpbGUpIDI+L2Rldi9udWxsOyB0aGVuCiAgaWYgbG4gLXMg
Y29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuCiAgICBhc19sbl9zPSdsbiAtcycK
ICAgICMgLi4uIGJ1dCB0aGVyZSBhcmUgdHdvIGdvdGNoYXM6CiAgICAjIDEpIE9uIE1TWVMsIGJv
dGggYGxuIC1zIGZpbGUgZGlyJyBhbmQgYGxuIGZpbGUgZGlyJyBmYWlsLgogICAgIyAyKSBESkdQ
UCA8IDIuMDQgaGFzIG5vIHN5bWxpbmtzOyBgbG4gLXMnIGNyZWF0ZXMgYSB3cmFwcGVyIGV4ZWN1
dGFibGUuCiAgICAjIEluIGJvdGggY2FzZXMsIHdlIGhhdmUgdG8gZGVmYXVsdCB0byBgY3AgLXBS
Jy4KICAgIGxuIC1zIGNvbmYkJC5maWxlIGNvbmYkJC5kaXIgMj4vZGV2L251bGwgJiYgdGVzdCAh
IC1mIGNvbmYkJC5leGUgfHwKICAgICAgYXNfbG5fcz0nY3AgLXBSJwogIGVsaWYgbG4gY29uZiQk
LmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuCiAgICBhc19sbl9zPWxuCiAgZWxzZQogICAg
YXNfbG5fcz0nY3AgLXBSJwogIGZpCmVsc2UKICBhc19sbl9zPSdjcCAtcFInCmZpCnJtIC1mIGNv
bmYkJCBjb25mJCQuZXhlIGNvbmYkJC5kaXIvY29uZiQkLmZpbGUgY29uZiQkLmZpbGUKcm1kaXIg
Y29uZiQkLmRpciAyPi9kZXYvbnVsbAoKCiMgYXNfZm5fbWtkaXJfcAojIC0tLS0tLS0tLS0tLS0K
IyBDcmVhdGUgIiRhc19kaXIiIGFzIGEgZGlyZWN0b3J5LCBpbmNsdWRpbmcgcGFyZW50cyBpZiBu
ZWNlc3NhcnkuCmFzX2ZuX21rZGlyX3AgKCkKewoKICBjYXNlICRhc19kaXIgaW4gIygKICAtKikg
YXNfZGlyPS4vJGFzX2Rpcjs7CiAgZXNhYwogIHRlc3QgLWQgIiRhc19kaXIiIHx8IGV2YWwgJGFz
X21rZGlyX3AgfHwgewogICAgYXNfZGlycz0KICAgIHdoaWxlIDo7IGRvCiAgICAgIGNhc2UgJGFz
X2RpciBpbiAjKAogICAgICAqXCcqKSBhc19xZGlyPWAkYXNfZWNobyAiJGFzX2RpciIgfCBzZWQg
InMvJy8nXFxcXFxcXFwnJy9nImA7OyAjJygKICAgICAgKikgYXNfcWRpcj0kYXNfZGlyOzsKICAg
ICAgZXNhYwogICAgICBhc19kaXJzPSInJGFzX3FkaXInICRhc19kaXJzIgogICAgICBhc19kaXI9
YCRhc19kaXJuYW1lIC0tICIkYXNfZGlyIiB8fAokYXNfZXhwciBYIiRhc19kaXIiIDogJ1hcKC4q
W14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcCgkgWCIkYXNfZGlyIiA6ICdYXCgvL1wpW14vXScg
XHwgXAoJIFgiJGFzX2RpciIgOiAnWFwoLy9cKSQnIFx8IFwKCSBYIiRhc19kaXIiIDogJ1hcKC9c
KScgXHwgLiAyPi9kZXYvbnVsbCB8fAokYXNfZWNobyBYIiRhc19kaXIiIHwKICAgIHNlZCAnL15Y
XCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97CgkgICAgcy8vXDEvCgkgICAgcQoJICB9Cgkg
IC9eWFwoXC9cL1wpW14vXS4qL3sKCSAgICBzLy9cMS8KCSAgICBxCgkgIH0KCSAgL15YXChcL1wv
XCkkL3sKCSAgICBzLy9cMS8KCSAgICBxCgkgIH0KCSAgL15YXChcL1wpLiovewoJICAgIHMvL1wx
LwoJICAgIHEKCSAgfQoJICBzLy4qLy4vOyBxJ2AKICAgICAgdGVzdCAtZCAiJGFzX2RpciIgJiYg
YnJlYWsKICAgIGRvbmUKICAgIHRlc3QgLXogIiRhc19kaXJzIiB8fCBldmFsICJta2RpciAkYXNf
ZGlycyIKICB9IHx8IHRlc3QgLWQgIiRhc19kaXIiIHx8IGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3Qg
Y3JlYXRlIGRpcmVjdG9yeSAkYXNfZGlyIgoKCn0gIyBhc19mbl9ta2Rpcl9wCmlmIG1rZGlyIC1w
IC4gMj4vZGV2L251bGw7IHRoZW4KICBhc19ta2Rpcl9wPSdta2RpciAtcCAiJGFzX2RpciInCmVs
c2UKICB0ZXN0IC1kIC4vLXAgJiYgcm1kaXIgLi8tcAogIGFzX21rZGlyX3A9ZmFsc2UKZmkKCgoj
IGFzX2ZuX2V4ZWN1dGFibGVfcCBGSUxFCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUZXN0
IGlmIEZJTEUgaXMgYW4gZXhlY3V0YWJsZSByZWd1bGFyIGZpbGUuCmFzX2ZuX2V4ZWN1dGFibGVf
cCAoKQp7CiAgdGVzdCAtZiAiJDEiICYmIHRlc3QgLXggIiQxIgp9ICMgYXNfZm5fZXhlY3V0YWJs
ZV9wCmFzX3Rlc3RfeD0ndGVzdCAteCcKYXNfZXhlY3V0YWJsZV9wPWFzX2ZuX2V4ZWN1dGFibGVf
cAoKIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlkIENQUCBuYW1l
Lgphc190cl9jcHA9ImV2YWwgc2VkICd5JSokYXNfY3JfbGV0dGVycyVQJGFzX2NyX0xFVFRFUlMl
O3MlW15fJGFzX2NyX2FsbnVtXSVfJWcnIgoKIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJp
bmcgb250byBhIHZhbGlkIHZhcmlhYmxlIG5hbWUuCmFzX3RyX3NoPSJldmFsIHNlZCAneSUqKyVw
cCU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyciCgoKZXhlYyA2PiYxCiMjIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCiMjIE1haW4gYm9keSBvZiAkQ09ORklHX1NUQVRVUyBz
Y3JpcHQuICMjCiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCl9BU0VP
Rgp0ZXN0ICRhc193cml0ZV9mYWlsID0gMCAmJiBjaG1vZCAreCAkQ09ORklHX1NUQVRVUyB8fCBh
Y193cml0ZV9mYWlsPTEKCmNhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0
ZV9mYWlsPTEKIyBTYXZlIHRoZSBsb2cgbWVzc2FnZSwgdG8ga2VlcCAkMCBhbmQgc28gb24gbWVh
bmluZ2Z1bCwgYW5kIHRvCiMgcmVwb3J0IGFjdHVhbCBpbnB1dCB2YWx1ZXMgb2YgQ09ORklHX0ZJ
TEVTIGV0Yy4gaW5zdGVhZCBvZiB0aGVpcgojIHZhbHVlcyBhZnRlciBvcHRpb25zIGhhbmRsaW5n
LgphY19sb2c9IgpUaGlzIGZpbGUgd2FzIGV4dGVuZGVkIGJ5IEdOVSBSQ1MgJGFzX21lIDUuOC4y
LCB3aGljaCB3YXMKZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5LiAgSW52b2NhdGlvbiBj
b21tYW5kIGxpbmUgd2FzCgogIENPTkZJR19GSUxFUyAgICA9ICRDT05GSUdfRklMRVMKICBDT05G
SUdfSEVBREVSUyAgPSAkQ09ORklHX0hFQURFUlMKICBDT05GSUdfTElOS1MgICAgPSAkQ09ORklH
X0xJTktTCiAgQ09ORklHX0NPTU1BTkRTID0gJENPTkZJR19DT01NQU5EUwogICQgJDAgJEAKCm9u
IGAoaG9zdG5hbWUgfHwgdW5hbWUgLW4pIDI+L2Rldi9udWxsIHwgc2VkIDFxYAoiCgpfQUNFT0YK
CmNhc2UgJGFjX2NvbmZpZ19maWxlcyBpbiAqIgoiKikgc2V0IHggJGFjX2NvbmZpZ19maWxlczsg
c2hpZnQ7IGFjX2NvbmZpZ19maWxlcz0kKjs7CmVzYWMKCmNhc2UgJGFjX2NvbmZpZ19oZWFkZXJz
IGluICoiCiIqKSBzZXQgeCAkYWNfY29uZmlnX2hlYWRlcnM7IHNoaWZ0OyBhY19jb25maWdfaGVh
ZGVycz0kKjs7CmVzYWMKCgpjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0
ZV9mYWlsPTEKIyBGaWxlcyB0aGF0IGNvbmZpZy5zdGF0dXMgd2FzIG1hZGUgZm9yLgpjb25maWdf
ZmlsZXM9IiRhY19jb25maWdfZmlsZXMiCmNvbmZpZ19oZWFkZXJzPSIkYWNfY29uZmlnX2hlYWRl
cnMiCmNvbmZpZ19jb21tYW5kcz0iJGFjX2NvbmZpZ19jb21tYW5kcyIKCl9BQ0VPRgoKY2F0ID4+
JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQphY19jc191c2FnZT0i
XApcYCRhc19tZScgaW5zdGFudGlhdGVzIGZpbGVzIGFuZCBvdGhlciBjb25maWd1cmF0aW9uIGFj
dGlvbnMKZnJvbSB0ZW1wbGF0ZXMgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRp
b24uICBVbmxlc3MgdGhlIGZpbGVzCmFuZCBhY3Rpb25zIGFyZSBzcGVjaWZpZWQgYXMgVEFHcywg
YWxsIGFyZSBpbnN0YW50aWF0ZWQgYnkgZGVmYXVsdC4KClVzYWdlOiAkMCBbT1BUSU9OXS4uLiBb
VEFHXS4uLgoKICAtaCwgLS1oZWxwICAgICAgIHByaW50IHRoaXMgaGVscCwgdGhlbiBleGl0CiAg
LVYsIC0tdmVyc2lvbiAgICBwcmludCB2ZXJzaW9uIG51bWJlciBhbmQgY29uZmlndXJhdGlvbiBz
ZXR0aW5ncywgdGhlbiBleGl0CiAgICAgIC0tY29uZmlnICAgICBwcmludCBjb25maWd1cmF0aW9u
LCB0aGVuIGV4aXQKICAtcSwgLS1xdWlldCwgLS1zaWxlbnQKICAgICAgICAgICAgICAgICAgIGRv
IG5vdCBwcmludCBwcm9ncmVzcyBtZXNzYWdlcwogIC1kLCAtLWRlYnVnICAgICAgZG9uJ3QgcmVt
b3ZlIHRlbXBvcmFyeSBmaWxlcwogICAgICAtLXJlY2hlY2sgICAgdXBkYXRlICRhc19tZSBieSBy
ZWNvbmZpZ3VyaW5nIGluIHRoZSBzYW1lIGNvbmRpdGlvbnMKICAgICAgLS1maWxlPUZJTEVbOlRF
TVBMQVRFXQogICAgICAgICAgICAgICAgICAgaW5zdGFudGlhdGUgdGhlIGNvbmZpZ3VyYXRpb24g
ZmlsZSBGSUxFCiAgICAgIC0taGVhZGVyPUZJTEVbOlRFTVBMQVRFXQogICAgICAgICAgICAgICAg
ICAgaW5zdGFudGlhdGUgdGhlIGNvbmZpZ3VyYXRpb24gaGVhZGVyIEZJTEUKCkNvbmZpZ3VyYXRp
b24gZmlsZXM6CiRjb25maWdfZmlsZXMKCkNvbmZpZ3VyYXRpb24gaGVhZGVyczoKJGNvbmZpZ19o
ZWFkZXJzCgpDb25maWd1cmF0aW9uIGNvbW1hbmRzOgokY29uZmlnX2NvbW1hbmRzCgpSZXBvcnQg
YnVncyB0byA8YnVnLXJjc0BnbnUub3JnPi4KR05VIFJDUyBob21lIHBhZ2U6IDxodHRwOi8vd3d3
LmdudS5vcmcvc29mdHdhcmUvcmNzLz4uCkdlbmVyYWwgaGVscCB1c2luZyBHTlUgc29mdHdhcmU6
IDxodHRwOi8vd3d3LmdudS5vcmcvZ2V0aGVscC8+LiIKCl9BQ0VPRgpjYXQgPj4kQ09ORklHX1NU
QVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKYWNfY3NfY29uZmlnPSJgJGFzX2VjaG8g
IiRhY19jb25maWd1cmVfYXJncyIgfCBzZWQgJ3MvXiAvLzsgcy9bXFwiIlxgXCRdL1xcXFwmL2cn
YCIKYWNfY3NfdmVyc2lvbj0iXFwKR05VIFJDUyBjb25maWcuc3RhdHVzIDUuOC4yCmNvbmZpZ3Vy
ZWQgYnkgJDAsIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OSwKICB3aXRoIG9wdGlvbnMg
XFwiXCRhY19jc19jb25maWdcXCIKCkNvcHlyaWdodCAoQykgMjAxMiBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4KVGhpcyBjb25maWcuc3RhdHVzIHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJl
OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCmdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9u
IHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4iCgphY19wd2Q9JyRhY19wd2QnCnNy
Y2Rpcj0nJHNyY2RpcicKSU5TVEFMTD0nJElOU1RBTEwnCk1LRElSX1A9JyRNS0RJUl9QJwpBV0s9
JyRBV0snCnRlc3QgLW4gIlwkQVdLIiB8fCBBV0s9YXdrCl9BQ0VPRgoKY2F0ID4+JENPTkZJR19T
VEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQojIFRoZSBkZWZhdWx0IGxpc3RzIGFw
cGx5IGlmIHRoZSB1c2VyIGRvZXMgbm90IHNwZWNpZnkgYW55IGZpbGUuCmFjX25lZWRfZGVmYXVs
dHM9Ogp3aGlsZSB0ZXN0ICQjICE9IDAKZG8KICBjYXNlICQxIGluCiAgLS0qPT8qKQogICAgYWNf
b3B0aW9uPWBleHByICJYJDEiIDogJ1hcKFtePV0qXCk9J2AKICAgIGFjX29wdGFyZz1gZXhwciAi
WCQxIiA6ICdYW149XSo9XCguKlwpJ2AKICAgIGFjX3NoaWZ0PToKICAgIDs7CiAgLS0qPSkKICAg
IGFjX29wdGlvbj1gZXhwciAiWCQxIiA6ICdYXChbXj1dKlwpPSdgCiAgICBhY19vcHRhcmc9CiAg
ICBhY19zaGlmdD06CiAgICA7OwogICopCiAgICBhY19vcHRpb249JDEKICAgIGFjX29wdGFyZz0k
MgogICAgYWNfc2hpZnQ9c2hpZnQKICAgIDs7CiAgZXNhYwoKICBjYXNlICRhY19vcHRpb24gaW4K
ICAjIEhhbmRsaW5nIG9mIHRoZSBvcHRpb25zLgogIC1yZWNoZWNrIHwgLS1yZWNoZWNrIHwgLS1y
ZWNoZWMgfCAtLXJlY2hlIHwgLS1yZWNoIHwgLS1yZWMgfCAtLXJlIHwgLS1yKQogICAgYWNfY3Nf
cmVjaGVjaz06IDs7CiAgLS12ZXJzaW9uIHwgLS12ZXJzaW8gfCAtLXZlcnNpIHwgLS12ZXJzIHwg
LS12ZXIgfCAtLXZlIHwgLS12IHwgLVYgKQogICAgJGFzX2VjaG8gIiRhY19jc192ZXJzaW9uIjsg
ZXhpdCA7OwogIC0tY29uZmlnIHwgLS1jb25maSB8IC0tY29uZiB8IC0tY29uIHwgLS1jbyB8IC0t
YyApCiAgICAkYXNfZWNobyAiJGFjX2NzX2NvbmZpZyI7IGV4aXQgOzsKICAtLWRlYnVnIHwgLS1k
ZWJ1IHwgLS1kZWIgfCAtLWRlIHwgLS1kIHwgLWQgKQogICAgZGVidWc9OiA7OwogIC0tZmlsZSB8
IC0tZmlsIHwgLS1maSB8IC0tZiApCiAgICAkYWNfc2hpZnQKICAgIGNhc2UgJGFjX29wdGFyZyBp
bgogICAgKlwnKikgYWNfb3B0YXJnPWAkYXNfZWNobyAiJGFjX29wdGFyZyIgfCBzZWQgInMvJy8n
XFxcXFxcXFwnJy9nImAgOzsKICAgICcnKSBhc19mbl9lcnJvciAkPyAibWlzc2luZyBmaWxlIGFy
Z3VtZW50IiA7OwogICAgZXNhYwogICAgYXNfZm5fYXBwZW5kIENPTkZJR19GSUxFUyAiICckYWNf
b3B0YXJnJyIKICAgIGFjX25lZWRfZGVmYXVsdHM9ZmFsc2U7OwogIC0taGVhZGVyIHwgLS1oZWFk
ZSB8IC0taGVhZCB8IC0taGVhICkKICAgICRhY19zaGlmdAogICAgY2FzZSAkYWNfb3B0YXJnIGlu
CiAgICAqXCcqKSBhY19vcHRhcmc9YCRhc19lY2hvICIkYWNfb3B0YXJnIiB8IHNlZCAicy8nLydc
XFxcXFxcXCcnL2ciYCA7OwogICAgZXNhYwogICAgYXNfZm5fYXBwZW5kIENPTkZJR19IRUFERVJT
ICIgJyRhY19vcHRhcmcnIgogICAgYWNfbmVlZF9kZWZhdWx0cz1mYWxzZTs7CiAgLS1oZSB8IC0t
aCkKICAgICMgQ29uZmxpY3QgYmV0d2VlbiAtLWhlbHAgYW5kIC0taGVhZGVyCiAgICBhc19mbl9l
cnJvciAkPyAiYW1iaWd1b3VzIG9wdGlvbjogXGAkMScKVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9y
ZSBpbmZvcm1hdGlvbi4iOzsKICAtLWhlbHAgfCAtLWhlbCB8IC1oICkKICAgICRhc19lY2hvICIk
YWNfY3NfdXNhZ2UiOyBleGl0IDs7CiAgLXEgfCAtcXVpZXQgfCAtLXF1aWV0IHwgLS1xdWllIHwg
LS1xdWkgfCAtLXF1IHwgLS1xIFwKICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0tc2lsZW4gfCAt
LXNpbGUgfCAtLXNpbCB8IC0tc2kgfCAtLXMpCiAgICBhY19jc19zaWxlbnQ9OiA7OwoKICAjIFRo
aXMgaXMgYW4gZXJyb3IuCiAgLSopIGFzX2ZuX2Vycm9yICQ/ICJ1bnJlY29nbml6ZWQgb3B0aW9u
OiBcYCQxJwpUcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgOzsKCiAgKikg
YXNfZm5fYXBwZW5kIGFjX2NvbmZpZ190YXJnZXRzICIgJDEiCiAgICAgYWNfbmVlZF9kZWZhdWx0
cz1mYWxzZSA7OwoKICBlc2FjCiAgc2hpZnQKZG9uZQoKYWNfY29uZmlndXJlX2V4dHJhX2FyZ3M9
CgppZiAkYWNfY3Nfc2lsZW50OyB0aGVuCiAgZXhlYyA2Pi9kZXYvbnVsbAogIGFjX2NvbmZpZ3Vy
ZV9leHRyYV9hcmdzPSIkYWNfY29uZmlndXJlX2V4dHJhX2FyZ3MgLS1zaWxlbnQiCmZpCgpfQUNF
T0YKY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCmlmIFwk
YWNfY3NfcmVjaGVjazsgdGhlbgogIHNldCBYICRTSEVMTCAnJDAnICRhY19jb25maWd1cmVfYXJn
cyBcJGFjX2NvbmZpZ3VyZV9leHRyYV9hcmdzIC0tbm8tY3JlYXRlIC0tbm8tcmVjdXJzaW9uCiAg
c2hpZnQKICBcJGFzX2VjaG8gInJ1bm5pbmcgQ09ORklHX1NIRUxMPSRTSEVMTCBcJCoiID4mNgog
IENPTkZJR19TSEVMTD0nJFNIRUxMJwogIGV4cG9ydCBDT05GSUdfU0hFTEwKICBleGVjICJcJEAi
CmZpCgpfQUNFT0YKY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2Zh
aWw9MQpleGVjIDU+PmNvbmZpZy5sb2cKewogIGVjaG8KICBzZWQgJ2g7cy8uLy0vZztzL14uLi4v
IyMgLztzLy4uLiQvICMjLztwO3g7cDt4JyA8PF9BU0JPWAojIyBSdW5uaW5nICRhc19tZS4gIyMK
X0FTQk9YCiAgJGFzX2VjaG8gIiRhY19sb2ciCn0gPiY1CgpfQUNFT0YKY2F0ID4+JENPTkZJR19T
VEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCiMKIyBJTklULUNPTU1BTkRTCiMKQU1E
RVBfVFJVRT0iJEFNREVQX1RSVUUiIGFjX2F1eF9kaXI9IiRhY19hdXhfZGlyIgoKX0FDRU9GCgpj
YXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCgojIEhhbmRs
aW5nIG9mIGFyZ3VtZW50cy4KZm9yIGFjX2NvbmZpZ190YXJnZXQgaW4gJGFjX2NvbmZpZ190YXJn
ZXRzCmRvCiAgY2FzZSAkYWNfY29uZmlnX3RhcmdldCBpbgogICAgImxpYi9jb25maWcuaCIpIENP
TkZJR19IRUFERVJTPSIkQ09ORklHX0hFQURFUlMgbGliL2NvbmZpZy5oIiA7OwogICAgImRlcGZp
bGVzIikgQ09ORklHX0NPTU1BTkRTPSIkQ09ORklHX0NPTU1BTkRTIGRlcGZpbGVzIiA7OwogICAg
ImxpYi9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBsaWIvTWFrZWZpbGUi
IDs7CiAgICAiTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgTWFrZWZpbGUi
IDs7CiAgICAiZG9jL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGRvYy9N
YWtlZmlsZSIgOzsKICAgICJtYW4vTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklM
RVMgbWFuL01ha2VmaWxlIiA7OwogICAgInNyYy9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENP
TkZJR19GSUxFUyBzcmMvTWFrZWZpbGUiIDs7CiAgICAidGVzdHMvTWFrZWZpbGUiKSBDT05GSUdf
RklMRVM9IiRDT05GSUdfRklMRVMgdGVzdHMvTWFrZWZpbGUiIDs7CiAgICAic3JjL3Jjc2ZyZWV6
ZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBzcmMvcmNzZnJlZXplOnNyYy9yY3NmcmVl
emUuc2giIDs7CiAgICAidGVzdHMva25vd24tZmFpbHVyZXMiKSBDT05GSUdfRklMRVM9IiRDT05G
SUdfRklMRVMgdGVzdHMva25vd24tZmFpbHVyZXMiIDs7CgogICopIGFzX2ZuX2Vycm9yICQ/ICJp
bnZhbGlkIGFyZ3VtZW50OiBcYCRhY19jb25maWdfdGFyZ2V0JyIgIiRMSU5FTk8iIDU7OwogIGVz
YWMKZG9uZQoKCiMgSWYgdGhlIHVzZXIgZGlkIG5vdCB1c2UgdGhlIGFyZ3VtZW50cyB0byBzcGVj
aWZ5IHRoZSBpdGVtcyB0byBpbnN0YW50aWF0ZSwKIyB0aGVuIHRoZSBlbnZ2YXIgaW50ZXJmYWNl
IGlzIHVzZWQuICBTZXQgb25seSB0aG9zZSB0aGF0IGFyZSBub3QuCiMgV2UgdXNlIHRoZSBsb25n
IGZvcm0gZm9yIHRoZSBkZWZhdWx0IGFzc2lnbm1lbnQgYmVjYXVzZSBvZiBhbiBleHRyZW1lbHkK
IyBiaXphcnJlIGJ1ZyBvbiBTdW5PUyA0LjEuMy4KaWYgJGFjX25lZWRfZGVmYXVsdHM7IHRoZW4K
ICB0ZXN0ICIke0NPTkZJR19GSUxFUytzZXR9IiA9IHNldCB8fCBDT05GSUdfRklMRVM9JGNvbmZp
Z19maWxlcwogIHRlc3QgIiR7Q09ORklHX0hFQURFUlMrc2V0fSIgPSBzZXQgfHwgQ09ORklHX0hF
QURFUlM9JGNvbmZpZ19oZWFkZXJzCiAgdGVzdCAiJHtDT05GSUdfQ09NTUFORFMrc2V0fSIgPSBz
ZXQgfHwgQ09ORklHX0NPTU1BTkRTPSRjb25maWdfY29tbWFuZHMKZmkKCiMgSGF2ZSBhIHRlbXBv
cmFyeSBkaXJlY3RvcnkgZm9yIGNvbnZlbmllbmNlLiAgTWFrZSBpdCBpbiB0aGUgYnVpbGQgdHJl
ZQojIHNpbXBseSBiZWNhdXNlIHRoZXJlIGlzIG5vIHJlYXNvbiBhZ2FpbnN0IGhhdmluZyBpdCBo
ZXJlLCBhbmQgaW4gYWRkaXRpb24sCiMgY3JlYXRpbmcgYW5kIG1vdmluZyBmaWxlcyBmcm9tIC90
bXAgY2FuIHNvbWV0aW1lcyBjYXVzZSBwcm9ibGVtcy4KIyBIb29rIGZvciBpdHMgcmVtb3ZhbCB1
bmxlc3MgZGVidWdnaW5nLgojIE5vdGUgdGhhdCB0aGVyZSBpcyBhIHNtYWxsIHdpbmRvdyBpbiB3
aGljaCB0aGUgZGlyZWN0b3J5IHdpbGwgbm90IGJlIGNsZWFuZWQ6CiMgYWZ0ZXIgaXRzIGNyZWF0
aW9uIGJ1dCBiZWZvcmUgaXRzIG5hbWUgaGFzIGJlZW4gYXNzaWduZWQgdG8gYCR0bXAnLgokZGVi
dWcgfHwKewogIHRtcD0gYWNfdG1wPQogIHRyYXAgJ2V4aXRfc3RhdHVzPSQ/CiAgOiAiJHthY190
bXA6PSR0bXB9IgogIHsgdGVzdCAhIC1kICIkYWNfdG1wIiB8fCBybSAtZnIgIiRhY190bXAiOyB9
ICYmIGV4aXQgJGV4aXRfc3RhdHVzCicgMAogIHRyYXAgJ2FzX2ZuX2V4aXQgMScgMSAyIDEzIDE1
Cn0KIyBDcmVhdGUgYSAoc2VjdXJlKSB0bXAgZGlyZWN0b3J5IGZvciB0bXAgZmlsZXMuCgp7CiAg
dG1wPWAodW1hc2sgMDc3ICYmIG1rdGVtcCAtZCAiLi9jb25mWFhYWFhYIikgMj4vZGV2L251bGxg
ICYmCiAgdGVzdCAtZCAiJHRtcCIKfSAgfHwKewogIHRtcD0uL2NvbmYkJC0kUkFORE9NCiAgKHVt
YXNrIDA3NyAmJiBta2RpciAiJHRtcCIpCn0gfHwgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBjcmVh
dGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGluIC4iICIkTElORU5PIiA1CmFjX3RtcD0kdG1wCgoj
IFNldCB1cCB0aGUgc2NyaXB0cyBmb3IgQ09ORklHX0ZJTEVTIHNlY3Rpb24uCiMgTm8gbmVlZCB0
byBnZW5lcmF0ZSB0aGVtIGlmIHRoZXJlIGFyZSBubyBDT05GSUdfRklMRVMuCiMgVGhpcyBoYXBw
ZW5zIGZvciBpbnN0YW5jZSB3aXRoIGAuL2NvbmZpZy5zdGF0dXMgY29uZmlnLmgnLgppZiB0ZXN0
IC1uICIkQ09ORklHX0ZJTEVTIjsgdGhlbgoKCmFjX2NyPWBlY2hvIFggfCB0ciBYICdcMDE1J2AK
IyBPbiBjeWd3aW4sIGJhc2ggY2FuIGVhdCBcciBpbnNpZGUgYGAgaWYgdGhlIHVzZXIgcmVxdWVz
dGVkIGlnbmNyLgojIEJ1dCB3ZSBrbm93IG9mIG5vIG90aGVyIHNoZWxsIHdoZXJlIGFjX2NyIHdv
dWxkIGJlIGVtcHR5IGF0IHRoaXMKIyBwb2ludCwgc28gd2UgY2FuIHVzZSBhIGJhc2hpc20gYXMg
YSBmYWxsYmFjay4KaWYgdGVzdCAieCRhY19jciIgPSB4OyB0aGVuCiAgZXZhbCBhY19jcj1cJFwn
XFxyXCcKZmkKYWNfY3NfYXdrX2NyPWAkQVdLICdCRUdJTiB7IHByaW50ICJhXHJiIiB9JyA8L2Rl
di9udWxsIDI+L2Rldi9udWxsYAppZiB0ZXN0ICIkYWNfY3NfYXdrX2NyIiA9ICJhJHthY19jcn1i
IjsgdGhlbgogIGFjX2NzX2F3a19jcj0nXFxyJwplbHNlCiAgYWNfY3NfYXdrX2NyPSRhY19jcgpm
aQoKZWNobyAnQkVHSU4geycgPiIkYWNfdG1wL3N1YnMxLmF3ayIgJiYKX0FDRU9GCgoKewogIGVj
aG8gImNhdCA+Y29uZiQkc3Vicy5hd2sgPDxfQUNFT0YiICYmCiAgZWNobyAiJGFjX3N1YnN0X3Zh
cnMiIHwgc2VkICdzLy4qLyYhJCYkYWNfZGVsaW0vJyAmJgogIGVjaG8gIl9BQ0VPRiIKfSA+Y29u
ZiQkc3Vicy5zaCB8fAogIGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgbWFrZSAkQ09ORklHX1NU
QVRVUyIgIiRMSU5FTk8iIDUKYWNfZGVsaW1fbnVtPWBlY2hvICIkYWNfc3Vic3RfdmFycyIgfCBn
cmVwIC1jICdeJ2AKYWNfZGVsaW09JyUhXyEjICcKZm9yIGFjX2xhc3RfdHJ5IGluIGZhbHNlIGZh
bHNlIGZhbHNlIGZhbHNlIGZhbHNlIDo7IGRvCiAgLiAuL2NvbmYkJHN1YnMuc2ggfHwKICAgIGFz
X2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgbWFrZSAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUK
CiAgYWNfZGVsaW1fbj1gc2VkIC1uICJzLy4qJGFjX2RlbGltXCQvWC9wIiBjb25mJCRzdWJzLmF3
ayB8IGdyZXAgLWMgWGAKICBpZiB0ZXN0ICRhY19kZWxpbV9uID0gJGFjX2RlbGltX251bTsgdGhl
bgogICAgYnJlYWsKICBlbGlmICRhY19sYXN0X3RyeTsgdGhlbgogICAgYXNfZm5fZXJyb3IgJD8g
ImNvdWxkIG5vdCBtYWtlICRDT05GSUdfU1RBVFVTIiAiJExJTkVOTyIgNQogIGVsc2UKICAgIGFj
X2RlbGltPSIkYWNfZGVsaW0hJGFjX2RlbGltIF8kYWNfZGVsaW0hISAiCiAgZmkKZG9uZQpybSAt
ZiBjb25mJCRzdWJzLnNoCgpjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0
ZV9mYWlsPTEKY2F0ID4+IlwkYWNfdG1wL3N1YnMxLmF3ayIgPDxcXF9BQ0FXSyAmJgpfQUNFT0YK
c2VkIC1uICcKaApzL14vU1siLzsgcy8hLiovIl09LwpwCmcKcy9eW14hXSohLy8KOnJlcGwKdCBy
ZXBsCnMvJyIkYWNfZGVsaW0iJyQvLwp0IGRlbGltCjpubApoCnMvXCguXHsxNDhcfVwpLi4qL1wx
Lwp0IG1vcmUxCnMvWyJcXF0vXFwmL2c7IHMvXi8iLzsgcy8kL1xcbiJcXC8KcApuCmIgcmVwbAo6
bW9yZTEKcy9bIlxcXS9cXCYvZzsgcy9eLyIvOyBzLyQvIlxcLwpwCmcKcy8uXHsxNDhcfS8vCnQg
bmwKOmRlbGltCmgKcy9cKC5cezE0OFx9XCkuLiovXDEvCnQgbW9yZTIKcy9bIlxcXS9cXCYvZzsg
cy9eLyIvOyBzLyQvIi8KcApiCjptb3JlMgpzL1siXFxdL1xcJi9nOyBzL14vIi87IHMvJC8iXFwv
CnAKZwpzLy5cezE0OFx9Ly8KdCBkZWxpbQonIDxjb25mJCRzdWJzLmF3ayB8IHNlZCAnCi9eW14i
Il0vewogIE4KICBzL1xuLy8KfQonID4+JENPTkZJR19TVEFUVVMgfHwgYWNfd3JpdGVfZmFpbD0x
CnJtIC1mIGNvbmYkJHN1YnMuYXdrCmNhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFj
X3dyaXRlX2ZhaWw9MQpfQUNBV0sKY2F0ID4+IlwkYWNfdG1wL3N1YnMxLmF3ayIgPDxfQUNBV0sg
JiYKICBmb3IgKGtleSBpbiBTKSBTX2lzX3NldFtrZXldID0gMQogIEZTID0gIgciCgp9CnsKICBs
aW5lID0gJCAwCiAgbmZpZWxkcyA9IHNwbGl0KGxpbmUsIGZpZWxkLCAiQCIpCiAgc3Vic3RlZCA9
IDAKICBsZW4gPSBsZW5ndGgoZmllbGRbMV0pCiAgZm9yIChpID0gMjsgaSA8IG5maWVsZHM7IGkr
KykgewogICAga2V5ID0gZmllbGRbaV0KICAgIGtleWxlbiA9IGxlbmd0aChrZXkpCiAgICBpZiAo
U19pc19zZXRba2V5XSkgewogICAgICB2YWx1ZSA9IFNba2V5XQogICAgICBsaW5lID0gc3Vic3Ry
KGxpbmUsIDEsIGxlbikgIiIgdmFsdWUgIiIgc3Vic3RyKGxpbmUsIGxlbiArIGtleWxlbiArIDMp
CiAgICAgIGxlbiArPSBsZW5ndGgodmFsdWUpICsgbGVuZ3RoKGZpZWxkWysraV0pCiAgICAgIHN1
YnN0ZWQgPSAxCiAgICB9IGVsc2UKICAgICAgbGVuICs9IDEgKyBrZXlsZW4KICB9CgogIHByaW50
IGxpbmUKfQoKX0FDQVdLCl9BQ0VPRgpjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwg
YWNfd3JpdGVfZmFpbD0xCmlmIHNlZCAicy8kYWNfY3IvLyIgPCAvZGV2L251bGwgPiAvZGV2L251
bGwgMj4mMTsgdGhlbgogIHNlZCAicy8kYWNfY3JcJC8vOyBzLyRhY19jci8kYWNfY3NfYXdrX2Ny
L2ciCmVsc2UKICBjYXQKZmkgPCAiJGFjX3RtcC9zdWJzMS5hd2siID4gIiRhY190bXAvc3Vicy5h
d2siIFwKICB8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IHNldHVwIGNvbmZpZyBmaWxlcyBt
YWNoaW5lcnkiICIkTElORU5PIiA1Cl9BQ0VPRgoKIyBWUEFUSCBtYXkgY2F1c2UgdHJvdWJsZSB3
aXRoIHNvbWUgbWFrZXMsIHNvIHdlIHJlbW92ZSBzb2xlICQoc3JjZGlyKSwKIyAke3NyY2Rpcn0g
YW5kIEBzcmNkaXJAIGVudHJpZXMgZnJvbSBWUEFUSCBpZiBzcmNkaXIgaXMgIi4iLCBzdHJpcCBs
ZWFkaW5nIGFuZAojIHRyYWlsaW5nIGNvbG9ucyBhbmQgdGhlbiByZW1vdmUgdGhlIHdob2xlIGxp
bmUgaWYgVlBBVEggYmVjb21lcyBlbXB0eQojIChhY3R1YWxseSB3ZSBsZWF2ZSBhbiBlbXB0eSBs
aW5lIHRvIHByZXNlcnZlIGxpbmUgbnVtYmVycykuCmlmIHRlc3QgIngkc3JjZGlyIiA9IHguOyB0
aGVuCiAgYWNfdnBzdWI9Jy9eWwkgXSpWUEFUSFsJIF0qPVsJIF0qL3sKaApzLy8vCnMvXi86Lwpz
L1sJIF0qJC86LwpzLzpcJChzcmNkaXIpOi86L2cKcy86XCR7c3JjZGlyfTovOi9nCnMvOkBzcmNk
aXJAOi86L2cKcy9eOiovLwpzLzoqJC8vCngKcy9cKD1bCSBdKlwpLiovXDEvCkcKcy9cbi8vCnMv
XltePV0qPVsJIF0qJC8vCn0nCmZpCgpjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwg
YWNfd3JpdGVfZmFpbD0xCmZpICMgdGVzdCAtbiAiJENPTkZJR19GSUxFUyIKCiMgU2V0IHVwIHRo
ZSBzY3JpcHRzIGZvciBDT05GSUdfSEVBREVSUyBzZWN0aW9uLgojIE5vIG5lZWQgdG8gZ2VuZXJh
dGUgdGhlbSBpZiB0aGVyZSBhcmUgbm8gQ09ORklHX0hFQURFUlMuCiMgVGhpcyBoYXBwZW5zIGZv
ciBpbnN0YW5jZSB3aXRoIGAuL2NvbmZpZy5zdGF0dXMgTWFrZWZpbGUnLgppZiB0ZXN0IC1uICIk
Q09ORklHX0hFQURFUlMiOyB0aGVuCmNhdCA+IiRhY190bXAvZGVmaW5lcy5hd2siIDw8XF9BQ0FX
SyB8fApCRUdJTiB7Cl9BQ0VPRgoKIyBUcmFuc2Zvcm0gY29uZmRlZnMuaCBpbnRvIGFuIGF3ayBz
Y3JpcHQgYGRlZmluZXMuYXdrJywgZW1iZWRkZWQgYXMKIyBoZXJlLWRvY3VtZW50IGluIGNvbmZp
Zy5zdGF0dXMsIHRoYXQgc3Vic3RpdHV0ZXMgdGhlIHByb3BlciB2YWx1ZXMgaW50bwojIGNvbmZp
Zy5oLmluIHRvIHByb2R1Y2UgY29uZmlnLmguCgojIENyZWF0ZSBhIGRlbGltaXRlciBzdHJpbmcg
dGhhdCBkb2VzIG5vdCBleGlzdCBpbiBjb25mZGVmcy5oLCB0byBlYXNlCiMgaGFuZGxpbmcgb2Yg
bG9uZyBsaW5lcy4KYWNfZGVsaW09JyUhXyEjICcKZm9yIGFjX2xhc3RfdHJ5IGluIGZhbHNlIGZh
bHNlIDo7IGRvCiAgYWNfdHQ9YHNlZCAtbiAiLyRhY19kZWxpbS9wIiBjb25mZGVmcy5oYAogIGlm