public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c++/8533: [mainline regression] When compiling qt contradicting aliasing class created for bitfield constructor
@ 2002-11-19 15:25 hubicka
  0 siblings, 0 replies; 3+ messages in thread
From: hubicka @ 2002-11-19 15:25 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, jh, kenner, nobody

Synopsis: [mainline regression] When compiling qt contradicting aliasing class created for bitfield constructor

State-Changed-From-To: open->closed
State-Changed-By: hubicka
State-Changed-When: Tue Nov 12 07:07:34 2002
State-Changed-Why:
    duplicate of 8534

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=8533


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: c++/8533: [mainline regression] When compiling qt contradicting aliasing class created for bitfield constructor
@ 2002-11-19 15:26 Eric Craine
  0 siblings, 0 replies; 3+ messages in thread
From: Eric Craine @ 2002-11-19 15:26 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR c++/8533; it has been noted by GNATS.

From: "Eric Craine" <craine@northlink.com>
To: <hubicka@gcc.gnu.org>,
	<gcc-bugs@gcc.gnu.org>,
	<gcc-prs@gcc.gnu.org>,
	<jh@suse.cz>,
	<kenner@gnat.org>,
	<nobody@gcc.gnu.org>,
	<gcc-gnats@gcc.gnu.org>
Cc:  
Subject: Re: c++/8533: [mainline regression] When compiling qt contradicting aliasing class created for bitfield constructor
Date: Tue, 12 Nov 2002 05:16:37 -0700

 Please get me off your mailing list!!!
 
 
 
 
 ----- Original Message -----
 From: <hubicka@gcc.gnu.org>
 To: <gcc-bugs@gcc.gnu.org>; <gcc-prs@gcc.gnu.org>; <jh@suse.cz>;
 <kenner@gnat.org>; <nobody@gcc.gnu.org>
 Sent: Tuesday, November 12, 2002 8:07 AM
 Subject: Re: c++/8533: [mainline regression] When compiling qt contradicting
 aliasing class created for bitfield constructor
 
 
 > Synopsis: [mainline regression] When compiling qt contradicting aliasing
 class created for bitfield constructor
 >
 > State-Changed-From-To: open->closed
 > State-Changed-By: hubicka
 > State-Changed-When: Tue Nov 12 07:07:34 2002
 > State-Changed-Why:
 >     duplicate of 8534
 >
 >
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&p
 r=8533
 >
 


^ permalink raw reply	[flat|nested] 3+ messages in thread

* c++/8533: [mainline regression] When compiling qt contradicting aliasing class created for bitfield constructor
@ 2002-11-19 12:25 jh
  0 siblings, 0 replies; 3+ messages in thread
From: jh @ 2002-11-19 12:25 UTC (permalink / raw)
  To: gcc-gnats; +Cc: kenner


>Number:         8533
>Category:       c++
>Synopsis:       [mainline regression] When compiling qt contradicting aliasing class created for bitfield constructor
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Mon Nov 11 14:56:02 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     jh@suse.cz
>Release:        mainline CVS
>Organization:
>Environment:
x86_64-unknown-linux
>Description:
We fail to compile qt with the following error
/xgcc -B ./ -O2 qq.ii
kernel/moc_qwidget.cpp: In static member function `static QMetaObject*
   QWidget::staticMetaObject()':
kernel/moc_qwidget.cpp:1016: internal compiler error: in set_mem_alias_set, at
   emit-rtl.c:1937
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.

>How-To-Repeat:
./xgcc -B ./ -O2 qq.ii
kernel/moc_qwidget.cpp: In static member function `static QMetaObject*
   QWidget::staticMetaObject()':
kernel/moc_qwidget.cpp:1016: internal compiler error: in set_mem_alias_set, at
   emit-rtl.c:1937
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="qq.ii"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="qq.ii"

IyAxICJrZXJuZWwvbW9jX3F3aWRnZXQuY3BwIgojIDEgIjxidWlsdC1pbj4iCiMgMSAiPGNvbW1h
bmQgbGluZT4iCiMgMSAia2VybmVsL21vY19xd2lkZ2V0LmNwcCIKIyAxNiAia2VybmVsL21vY19x
d2lkZ2V0LmNwcCIKIyAxICJrZXJuZWwvcXdpZGdldC5oIiAxCiMgNDIgImtlcm5lbC9xd2lkZ2V0
LmgiCiMgMSAia2VybmVsL3F3aW5kb3dkZWZzLmgiIDEKIyA0MyAia2VybmVsL3F3aW5kb3dkZWZz
LmgiCiMgMSAia2VybmVsL3FvYmplY3RkZWZzLmgiIDEKIyA0MiAia2VybmVsL3FvYmplY3RkZWZz
LmgiCiMgMSAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xZ2xvYmFs
LmgiIDEKIyAzNzYgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUvcWds
b2JhbC5oIgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWNoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hv
cnQgdXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIHVpbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1
bG9uZzsKdHlwZWRlZiBjaGFyICpwY2hhcjsKdHlwZWRlZiB1Y2hhciAqcHVjaGFyOwp0eXBlZGVm
IGNvbnN0IGNoYXIgKnBjY2hhcjsKCgoKCgoKCmNvbnN0IGJvb2wgRkFMU0UgPSAwOwpjb25zdCBi
b29sIFRSVUUgPSAhMDsKIyA0MTQgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2lu
Y2x1ZGUvcWdsb2JhbC5oIgppbmxpbmUgaW50IHFSb3VuZCggZG91YmxlIGQgKQp7CiAgICByZXR1
cm4gZCA+IDAuMCA/IGludChkKzAuNSkgOiBpbnQoZC0wLjUpOwp9CiMgNDI3ICIvdXNyL3NyYy9w
YWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3FnbG9iYWwuaCIKdHlwZWRlZiBzaWduZWQg
Y2hhciBJTlQ4Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgVUlOVDg7CnR5cGVkZWYgc2hvcnQgSU5U
MTY7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgVUlOVDE2Owp0eXBlZGVmIGludCBJTlQzMjsKdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgVUlOVDMyOwoKCnR5cGVkZWYgc2lnbmVkIGNoYXIgUV9JTlQ4Owp0
eXBlZGVmIHVuc2lnbmVkIGNoYXIgUV9VSU5UODsKdHlwZWRlZiBzaG9ydCBRX0lOVDE2Owp0eXBl
ZGVmIHVuc2lnbmVkIHNob3J0IFFfVUlOVDE2Owp0eXBlZGVmIGludCBRX0lOVDMyOwp0eXBlZGVm
IHVuc2lnbmVkIGludCBRX1VJTlQzMjsKdHlwZWRlZiBsb25nIFFfSU5UNjQ7CnR5cGVkZWYgdW5z
aWduZWQgbG9uZyBRX1VJTlQ2NDsKCgoKCgpjbGFzcyBRRGF0YVN0cmVhbTsKIyA0NTcgIi91c3Iv
c3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUvcWdsb2JhbC5oIgojIDEgIi91c3Iv
c3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUvcWZlYXR1cmVzLmgiIDEKIyA1MyAi
L3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xZmVhdHVyZXMuaCIKIyAx
ICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3Fjb25maWcuaCIgMQoj
IDU0ICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3FmZWF0dXJlcy5o
IiAyCiMgNDU4ICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3FnbG9i
YWwuaCIgMgojIDQ5NSAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9x
Z2xvYmFsLmgiCiBjb25zdCBjaGFyICpxVmVyc2lvbigpOwogYm9vbCBxU3lzSW5mbyggaW50ICp3
b3JkU2l6ZSwgYm9vbCAqYmlnRW5kaWFuICk7CiMgNTU5ICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlM
RC9xdC0yLjMuMi9pbmNsdWRlL3FnbG9iYWwuaCIKIHZvaWQgcURlYnVnKCBjb25zdCBjaGFyICos
IC4uLiApCgogICAgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAxLCAyKSkpCgo7Cgog
dm9pZCBxV2FybmluZyggY29uc3QgY2hhciAqLCAuLi4gKQoKICAgIF9fYXR0cmlidXRlX18gKChm
b3JtYXQgKHByaW50ZiwgMSwgMikpKQoKOwoKIHZvaWQgcUZhdGFsKCBjb25zdCBjaGFyICosIC4u
LiApCgogICAgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAxLCAyKSkpCgo7CgoKCgoK
Cgogdm9pZCBkZWJ1ZyggY29uc3QgY2hhciAqLCAuLi4gKQoKICAgIF9fYXR0cmlidXRlX18gKChm
b3JtYXQgKHByaW50ZiwgMSwgMikpKQoKOwoKIHZvaWQgd2FybmluZyggY29uc3QgY2hhciAqLCAu
Li4gKQoKICAgIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMSwgMikpKQoKOwoKIHZv
aWQgZmF0YWwoIGNvbnN0IGNoYXIgKiwgLi4uICkKCiAgICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0
IChwcmludGYsIDEsIDIpKSkKCjsKIyA2MTYgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIu
My4yL2luY2x1ZGUvcWdsb2JhbC5oIgogYm9vbCBxdF9jaGVja19wb2ludGVyKCBib29sIGMsIGNv
bnN0IGNoYXIgKiwgaW50ICk7CgoKCgoKCgplbnVtIFF0TXNnVHlwZSB7IFF0RGVidWdNc2csIFF0
V2FybmluZ01zZywgUXRGYXRhbE1zZyB9OwoKdHlwZWRlZiB2b2lkICgqbXNnX2hhbmRsZXIpKFF0
TXNnVHlwZSwgY29uc3QgY2hhciAqKTsKIG1zZ19oYW5kbGVyIHFJbnN0YWxsTXNnSGFuZGxlcigg
bXNnX2hhbmRsZXIgKTsKCgogdm9pZCBxU3VwcHJlc3NPYnNvbGV0ZVdhcm5pbmdzKCBib29sID0g
VFJVRSApOwoKCgogdm9pZCBxT2Jzb2xldGUoIGNvbnN0IGNoYXIgKm9iaiwgY29uc3QgY2hhciAq
b2xkZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5ld2Z1bmMgKTsK
IHZvaWQgcU9ic29sZXRlKCBjb25zdCBjaGFyICpvYmosIGNvbnN0IGNoYXIgKm9sZGZ1bmMgKTsK
IHZvaWQgcU9ic29sZXRlKCBjb25zdCBjaGFyICptZXNzYWdlICk7CiMgNDMgImtlcm5lbC9xb2Jq
ZWN0ZGVmcy5oIiAyCiMgMTE3ICJrZXJuZWwvcW9iamVjdGRlZnMuaCIKY2xhc3MgUU9iamVjdDsK
Y2xhc3MgUU1ldGFPYmplY3Q7CmNsYXNzIFFTaWduYWw7CmNsYXNzIFFDb25uZWN0aW9uOwpjbGFz
cyBRRXZlbnQ7CnN0cnVjdCBRTWV0YURhdGE7CmNsYXNzIFFDb25uZWN0aW9uTGlzdDsKY2xhc3Mg
UUNvbm5lY3Rpb25MaXN0SXQ7CmNsYXNzIFFTaWduYWxEaWN0OwpjbGFzcyBRU2lnbmFsRGljdEl0
OwpjbGFzcyBRT2JqZWN0TGlzdDsKY2xhc3MgUU9iamVjdExpc3RJdDsKY2xhc3MgUU1lbWJlckRp
Y3Q7CiMgNDQgImtlcm5lbC9xd2luZG93ZGVmcy5oIiAyCiMgMSAiL3Vzci9zcmMvcGFja2FnZXMv
QlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xc3RyaW5nLmgiIDEKIyA0MyAiL3Vzci9zcmMvcGFja2Fn
ZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xc3RyaW5nLmgiCiMgMSAiL3Vzci9zcmMvcGFja2Fn
ZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xY3N0cmluZy5oIiAxCiMgNDMgIi91c3Ivc3JjL3Bh
Y2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUvcWNzdHJpbmcuaCIKIyAxICIvdXNyL3NyYy9w
YWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3FhcnJheS5oIiAxCiMgNDIgIi91c3Ivc3Jj
L3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUvcWFycmF5LmgiCiMgMSAiL3Vzci9zcmMv
cGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xZ2FycmF5LmgiIDEKIyA0MiAiL3Vzci9z
cmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xZ2FycmF5LmgiCiMgMSAiL3Vzci9z
cmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xc2hhcmVkLmgiIDEKIyA0NiAiL3Vz
ci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xc2hhcmVkLmgiCnN0cnVjdCBR
U2hhcmVkCnsKICAgIFFTaGFyZWQoKSB7IGNvdW50ID0gMTsgfQogICAgdm9pZCByZWYoKSB7IGNv
dW50Kys7IH0KICAgIGJvb2wgZGVyZWYoKSB7IHJldHVybiAhLS1jb3VudDsgfQogICAgdWludCBj
b3VudDsKfTsKIyA0MyAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9x
Z2FycmF5LmgiIDIKCgoKY2xhc3MgUUdBcnJheQp7CmZyaWVuZCBjbGFzcyBRQnVmZmVyOwpwdWJs
aWM6CgogICAgc3RydWN0IGFycmF5X2RhdGEgOiBwdWJsaWMgUVNoYXJlZCB7CiAgICAgICAgYXJy
YXlfZGF0YSgpIHsgZGF0YT0wOyBsZW49MDsgfQogICAgICAgIGNoYXIgKmRhdGE7CiAgICAgICAg
dWludCBsZW47CiAgICB9OwogICAgUUdBcnJheSgpOwpwcm90ZWN0ZWQ6CiAgICBRR0FycmF5KCBp
bnQsIGludCApOwogICAgUUdBcnJheSggaW50IHNpemUgKTsKICAgIFFHQXJyYXkoIGNvbnN0IFFH
QXJyYXkgJmEgKTsKICAgIHZpcnR1YWwgflFHQXJyYXkoKTsKCiAgICBRR0FycmF5ICZvcGVyYXRv
cj0oIGNvbnN0IFFHQXJyYXkgJmEgKSB7IHJldHVybiBhc3NpZ24oIGEgKTsgfQoKICAgIHZpcnR1
YWwgdm9pZCBkZXRhY2goKSB7IGR1cGxpY2F0ZSgqdGhpcyk7IH0KCiAgICBjaGFyICpkYXRhKCkg
Y29uc3QgeyByZXR1cm4gc2hkLT5kYXRhOyB9CiAgICB1aW50IG5yZWZzKCkgY29uc3QgeyByZXR1
cm4gc2hkLT5jb3VudDsgfQogICAgdWludCBzaXplKCkgY29uc3QgeyByZXR1cm4gc2hkLT5sZW47
IH0KICAgIGJvb2wgaXNFcXVhbCggY29uc3QgUUdBcnJheSAmYSApIGNvbnN0OwoKICAgIGJvb2wg
cmVzaXplKCB1aW50IG5ld3NpemUgKTsKCiAgICBib29sIGZpbGwoIGNvbnN0IGNoYXIgKmQsIGlu
dCBsZW4sIHVpbnQgc3ogKTsKCiAgICBRR0FycmF5ICZhc3NpZ24oIGNvbnN0IFFHQXJyYXkgJmEg
KTsKICAgIFFHQXJyYXkgJmFzc2lnbiggY29uc3QgY2hhciAqZCwgdWludCBsZW4gKTsKICAgIFFH
QXJyYXkgJmR1cGxpY2F0ZSggY29uc3QgUUdBcnJheSAmYSApOwogICAgUUdBcnJheSAmZHVwbGlj
YXRlKCBjb25zdCBjaGFyICpkLCB1aW50IGxlbiApOwogICAgdm9pZCBzdG9yZSggY29uc3QgY2hh
ciAqZCwgdWludCBsZW4gKTsKCiAgICBhcnJheV9kYXRhICpzaGFyZWRCbG9jaygpIGNvbnN0IHsg
cmV0dXJuIHNoZDsgfQogICAgdm9pZCBzZXRTaGFyZWRCbG9jayggYXJyYXlfZGF0YSAqcCApIHsg
c2hkPShhcnJheV9kYXRhKilwOyB9CgogICAgUUdBcnJheSAmc2V0UmF3RGF0YSggY29uc3QgY2hh
ciAqZCwgdWludCBsZW4gKTsKICAgIHZvaWQgcmVzZXRSYXdEYXRhKCBjb25zdCBjaGFyICpkLCB1
aW50IGxlbiApOwoKICAgIGludCBmaW5kKCBjb25zdCBjaGFyICpkLCB1aW50IGluZGV4LCB1aW50
IHN6ICkgY29uc3Q7CiAgICBpbnQgY29udGFpbnMoIGNvbnN0IGNoYXIgKmQsIHVpbnQgc3ogKSBj
b25zdDsKCiAgICB2b2lkIHNvcnQoIHVpbnQgc3ogKTsKICAgIGludCBic2VhcmNoKCBjb25zdCBj
aGFyICpkLCB1aW50IHN6ICkgY29uc3Q7CgogICAgY2hhciAqYXQoIHVpbnQgaW5kZXggKSBjb25z
dDsKCiAgICBib29sIHNldEV4cGFuZCggdWludCBpbmRleCwgY29uc3QgY2hhciAqZCwgdWludCBz
eiApOwoKcHJvdGVjdGVkOgogICAgdmlydHVhbCBhcnJheV9kYXRhICpuZXdEYXRhKCk7CiAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YSggYXJyYXlfZGF0YSAqcCApOwoKcHJpdmF0ZToKICAgIHN0
YXRpYyB2b2lkIG1zZ19pbmRleCggdWludCApOwogICAgYXJyYXlfZGF0YSAqc2hkOwp9OwoKCmlu
bGluZSBjaGFyICpRR0FycmF5OjphdCggdWludCBpbmRleCApIGNvbnN0CnsKCiAgICBpZiAoIGlu
ZGV4ID49IHNpemUoKSApIHsKICAgICAgICBtc2dfaW5kZXgoIGluZGV4ICk7CiAgICAgICAgaW5k
ZXggPSAwOwogICAgfQoKICAgIHJldHVybiAmc2hkLT5kYXRhW2luZGV4XTsKfQojIDQzICIvdXNy
L3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3FhcnJheS5oIiAyCgoKCnRlbXBs
YXRlPGNsYXNzIHR5cGU+IGNsYXNzIFFBcnJheSA6IHB1YmxpYyBRR0FycmF5CnsKcHVibGljOgog
ICAgdHlwZWRlZiB0eXBlKiBJdGVyYXRvcjsKICAgIHR5cGVkZWYgY29uc3QgdHlwZSogQ29uc3RJ
dGVyYXRvcjsKICAgIHR5cGVkZWYgdHlwZSBWYWx1ZVR5cGU7Cgpwcm90ZWN0ZWQ6CiAgICBRQXJy
YXkoIGludCwgaW50ICkgOiBRR0FycmF5KCAwLCAwICkge30KCnB1YmxpYzoKICAgIFFBcnJheSgp
IHt9CiAgICBRQXJyYXkoIGludCBzaXplICkgOiBRR0FycmF5KHNpemUqc2l6ZW9mKHR5cGUpKSB7
fQogICAgUUFycmF5KCBjb25zdCBRQXJyYXk8dHlwZT4gJmEgKSA6IFFHQXJyYXkoYSkge30KICAg
flFBcnJheSgpIHt9CiAgICBRQXJyYXk8dHlwZT4gJm9wZXJhdG9yPShjb25zdCBRQXJyYXk8dHlw
ZT4gJmEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gKFFBcnJheTx0
eXBlPiYpUUdBcnJheTo6YXNzaWduKGEpOyB9CiAgICB0eXBlICpkYXRhKCkgY29uc3QgeyByZXR1
cm4gKHR5cGUgKilRR0FycmF5OjpkYXRhKCk7IH0KICAgIHVpbnQgbnJlZnMoKSBjb25zdCB7IHJl
dHVybiBRR0FycmF5OjpucmVmcygpOyB9CiAgICB1aW50IHNpemUoKSBjb25zdCB7IHJldHVybiBR
R0FycmF5OjpzaXplKCkvc2l6ZW9mKHR5cGUpOyB9CiAgICB1aW50IGNvdW50KCkgY29uc3QgeyBy
ZXR1cm4gc2l6ZSgpOyB9CiAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBRR0FycmF5
OjpzaXplKCkgPT0gMDsgfQogICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBRR0FycmF5
OjpkYXRhKCkgPT0gMDsgfQogICAgYm9vbCByZXNpemUoIHVpbnQgc2l6ZSApIHsgcmV0dXJuIFFH
QXJyYXk6OnJlc2l6ZShzaXplKnNpemVvZih0eXBlKSk7IH0KICAgIGJvb2wgdHJ1bmNhdGUoIHVp
bnQgcG9zICkgeyByZXR1cm4gUUdBcnJheTo6cmVzaXplKHBvcypzaXplb2YodHlwZSkpOyB9CiAg
ICBib29sIGZpbGwoIGNvbnN0IHR5cGUgJmQsIGludCBzaXplID0gLTEgKQogICAgICAgIHsgcmV0
dXJuIFFHQXJyYXk6OmZpbGwoKGNoYXIqKSZkLHNpemUsc2l6ZW9mKHR5cGUpICk7IH0KICAgIHZv
aWQgZGV0YWNoKCkgeyBRR0FycmF5OjpkZXRhY2goKTsgfQogICAgUUFycmF5PHR5cGU+IGNvcHko
KSBjb25zdAogICAgICAgIHsgUUFycmF5PHR5cGU+IHRtcDsgcmV0dXJuIHRtcC5kdXBsaWNhdGUo
KnRoaXMpOyB9CiAgICBRQXJyYXk8dHlwZT4mIGFzc2lnbiggY29uc3QgUUFycmF5PHR5cGU+JiBh
ICkKICAgICAgICB7IHJldHVybiAoUUFycmF5PHR5cGU+JilRR0FycmF5Ojphc3NpZ24oYSk7IH0K
ICAgIFFBcnJheTx0eXBlPiYgYXNzaWduKCBjb25zdCB0eXBlICphLCB1aW50IG4gKQogICAgICAg
IHsgcmV0dXJuIChRQXJyYXk8dHlwZT4mKVFHQXJyYXk6OmFzc2lnbigoY2hhciopYSxuKnNpemVv
Zih0eXBlKSk7IH0KICAgIFFBcnJheTx0eXBlPiYgZHVwbGljYXRlKCBjb25zdCBRQXJyYXk8dHlw
ZT4mIGEgKQogICAgICAgIHsgcmV0dXJuIChRQXJyYXk8dHlwZT4mKVFHQXJyYXk6OmR1cGxpY2F0
ZShhKTsgfQogICAgUUFycmF5PHR5cGU+JiBkdXBsaWNhdGUoIGNvbnN0IHR5cGUgKmEsIHVpbnQg
biApCiAgICAgICAgeyByZXR1cm4gKFFBcnJheTx0eXBlPiYpUUdBcnJheTo6ZHVwbGljYXRlKChj
aGFyKilhLG4qc2l6ZW9mKHR5cGUpKTsgfQogICAgUUFycmF5PHR5cGU+JiBzZXRSYXdEYXRhKCBj
b25zdCB0eXBlICphLCB1aW50IG4gKQogICAgICAgIHsgcmV0dXJuIChRQXJyYXk8dHlwZT4mKVFH
QXJyYXk6OnNldFJhd0RhdGEoKGNoYXIqKWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbipzaXplb2YodHlwZSkpOyB9CiAgICB2b2lkIHJlc2V0
UmF3RGF0YSggY29uc3QgdHlwZSAqYSwgdWludCBuICkKICAgICAgICB7IFFHQXJyYXk6OnJlc2V0
UmF3RGF0YSgoY2hhciopYSxuKnNpemVvZih0eXBlKSk7IH0KICAgIGludCBmaW5kKCBjb25zdCB0
eXBlICZkLCB1aW50IGk9MCApIGNvbnN0CiAgICAgICAgeyByZXR1cm4gUUdBcnJheTo6ZmluZCgo
Y2hhciopJmQsaSxzaXplb2YodHlwZSkpOyB9CiAgICBpbnQgY29udGFpbnMoIGNvbnN0IHR5cGUg
JmQgKSBjb25zdAogICAgICAgIHsgcmV0dXJuIFFHQXJyYXk6OmNvbnRhaW5zKChjaGFyKikmZCxz
aXplb2YodHlwZSkpOyB9CiAgICB2b2lkIHNvcnQoKSB7IFFHQXJyYXk6OnNvcnQoc2l6ZW9mKHR5
cGUpKTsgfQogICAgaW50IGJzZWFyY2goIGNvbnN0IHR5cGUgJmQgKSBjb25zdAogICAgICAgIHsg
cmV0dXJuIFFHQXJyYXk6OmJzZWFyY2goKGNvbnN0IGNoYXIqKSZkLHNpemVvZih0eXBlKSk7IH0K
ICAgIHR5cGUmIG9wZXJhdG9yW10oIGludCBpICkgY29uc3QKICAgICAgICB7IHJldHVybiAodHlw
ZSAmKSgqKHR5cGUgKilRR0FycmF5OjphdChpKnNpemVvZih0eXBlKSkpOyB9CiAgICB0eXBlJiBh
dCggdWludCBpICkgY29uc3QKICAgICAgICB7IHJldHVybiAodHlwZSAmKSgqKHR5cGUgKilRR0Fy
cmF5OjphdChpKnNpemVvZih0eXBlKSkpOyB9CiAgICAgICAgIG9wZXJhdG9yIGNvbnN0IHR5cGUq
KCkgY29uc3QgeyByZXR1cm4gKGNvbnN0IHR5cGUgKilRR0FycmF5OjpkYXRhKCk7IH0KICAgIGJv
b2wgb3BlcmF0b3I9PSggY29uc3QgUUFycmF5PHR5cGU+ICZhICkgY29uc3QgeyByZXR1cm4gaXNF
cXVhbChhKTsgfQogICAgYm9vbCBvcGVyYXRvciE9KCBjb25zdCBRQXJyYXk8dHlwZT4gJmEgKSBj
b25zdCB7IHJldHVybiAhaXNFcXVhbChhKTsgfQogICAgSXRlcmF0b3IgYmVnaW4oKSB7IHJldHVy
biBkYXRhKCk7IH0KICAgIEl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIGRhdGEoKSArIHNpemUoKTsg
fQogICAgQ29uc3RJdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGRhdGEoKTsgfQogICAg
Q29uc3RJdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBkYXRhKCkgKyBzaXplKCk7IH0KfTsK
IyA0NCAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xY3N0cmluZy5o
IiAyCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAxIDMgNAojIDI2ICIvdXNyL2lu
Y2x1ZGUvc3RyaW5nLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMgNAoj
IDI5MSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9zeXMv
Y2RlZnMuaCIgMSAzIDQKIyAyOTIgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMgNAojIDMx
NCAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9nbnUvc3R1
YnMuaCIgMSAzIDQKIyAzMTUgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMgNAojIDI3ICIv
dXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMyA0CgpleHRlcm4gIkMiIHsKCgoKCiMgMSAiL3Vzci9s
aWI2NC9nY2MtbGliL3g4Nl82NC1zdXNlLWxpbnV4LzMuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMg
NAojIDIxMyAiL3Vzci9saWI2NC9nY2MtbGliL3g4Nl82NC1zdXNlLWxpbnV4LzMuMy9pbmNsdWRl
L3N0ZGRlZi5oIiAzIDQKdHlwZWRlZiBsb25nIHVuc2lnbmVkIGludCBzaXplX3Q7CiMgMzQgIi91
c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzIDQKCgoKCmV4dGVybiB2b2lkICptZW1jcHkgKHZvaWQg
Kl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9f
cmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCmV4dGVybiB2b2lkICptZW1t
b3ZlICh2b2lkICpfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqX19zcmMsIHNpemVfdCBfX24pCiAgICAg
dGhyb3cgKCk7CgoKCgoKCmV4dGVybiB2b2lkICptZW1jY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9f
ZGVzdCwgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLAogICAgICAgICAgICAgICAgICAg
ICAgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9pZCAq
bWVtc2V0ICh2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCmV4dGVy
biBpbnQgbWVtY21wIChfX2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6
ZV90IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRl
cm4gdm9pZCAqbWVtY2hyIChfX2NvbnN0IHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikK
ICAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoKZXh0ZXJuIHZv
aWQgKnJhd21lbWNociAoX19jb25zdCB2b2lkICpfX3MsIGludCBfX2MpIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiB2b2lkICptZW1yY2hyIChfX2NvbnN0IHZv
aWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fcHVyZV9fKSk7CgoKCgoKZXh0ZXJuIGNoYXIgKnN0cmNweSAoY2hhciAqX19yZXN0cmlj
dCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICB0aHJvdyAoKTsK
CmV4dGVybiBjaGFyICpzdHJuY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAg
ICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikg
dGhyb3cgKCk7CgoKZXh0ZXJuIGNoYXIgKnN0cmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3Qs
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBj
aGFyICpzdHJuY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fc3JjLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbikgdGhyb3cgKCk7
CgoKZXh0ZXJuIGludCBzdHJjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpf
X3MyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGlu
dCBzdHJuY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90
IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4g
aW50IHN0cmNvbGwgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAg
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIHNpemVfdCBzdHJ4
ZnJtIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgoKCgoj
IDEgIi91c3IvaW5jbHVkZS94bG9jYWxlLmgiIDEgMyA0CiMgMjggIi91c3IvaW5jbHVkZS94bG9j
YWxlLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCBfX2xvY2FsZV9zdHJ1Y3QKewoKICBzdHJ1Y3QgbG9j
YWxlX2RhdGEgKl9fbG9jYWxlc1sxM107CgoKICBjb25zdCB1bnNpZ25lZCBzaG9ydCBpbnQgKl9f
Y3R5cGVfYjsKICBjb25zdCBpbnQgKl9fY3R5cGVfdG9sb3dlcjsKICBjb25zdCBpbnQgKl9fY3R5
cGVfdG91cHBlcjsKCgogIGNvbnN0IGNoYXIgKl9fbmFtZXNbMTNdOwp9ICpfX2xvY2FsZV90Owoj
IDExNSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMgNAoKCmV4dGVybiBpbnQgc3RyY29sbF9s
IChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgX19sb2NhbGVfdCBfX2wp
CiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gc2l6ZV90
IHN0cnhmcm1fbCAoY2hhciAqX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fc3JjLCBzaXplX3QgX19u
LAogICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2wpIHRocm93ICgpOwoKCgoK
ZXh0ZXJuIGNoYXIgKnN0cmR1cCAoX19jb25zdCBjaGFyICpfX3MpIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX21hbGxvY19fKSk7CgoKCgoKCmV4dGVybiBjaGFyICpzdHJuZHVwIChfX2NvbnN0
IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX21hbGxvY19fKSk7CiMgMTYwICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNAoKCmV4dGVy
biBjaGFyICpzdHJjaHIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpzdHJyY2hyIChfX2NvbnN0IGNo
YXIgKl9fcywgaW50IF9fYykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoK
CgoKZXh0ZXJuIGNoYXIgKnN0cmNocm51bCAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBzaXplX3Qgc3Ry
Y3NwbiAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19yZWplY3QpCiAgICAgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHNpemVfdCBzdHJzcG4g
KF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgIHRocm93ICgp
IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnBicmsgKF9fY29u
c3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnN0ciAoX19jb25zdCBjaGFy
ICpfX2hheXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9fbmVlZGxlKQogICAgIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gY2hhciAqc3RydG9rIChjaGFyICpfX3Jl
c3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pCiAgICAgdGhyb3cg
KCk7CgoKCgpleHRlcm4gY2hhciAqX19zdHJ0b2tfciAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpIHRo
cm93ICgpOwoKZXh0ZXJuIGNoYXIgKnN0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sCiAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqc3Ry
Y2FzZXN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9fbmVlZGxl
KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCgpleHRlcm4g
dm9pZCAqbWVtbWVtIChfX2NvbnN0IHZvaWQgKl9faGF5c3RhY2ssIHNpemVfdCBfX2hheXN0YWNr
bGVuLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fbmVlZGxlLCBzaXplX3Qg
X19uZWVkbGVsZW4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoK
CmV4dGVybiB2b2lkICpfX21lbXBjcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBf
X24pIHRocm93ICgpOwpleHRlcm4gdm9pZCAqbWVtcGNweSAodm9pZCAqX19yZXN0cmljdCBfX2Rl
c3QsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMs
IHNpemVfdCBfX24pIHRocm93ICgpOwoKCgoKCmV4dGVybiBzaXplX3Qgc3RybGVuIChfX2NvbnN0
IGNoYXIgKl9fcykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoKZXh0
ZXJuIHNpemVfdCBzdHJubGVuIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19tYXhs
ZW4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoKZXh0ZXJu
IGNoYXIgKnN0cmVycm9yIChpbnQgX19lcnJudW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIg
KnN0cmVycm9yX3IgKGludCBfX2Vycm51bSwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1Zmxlbikg
dGhyb3cgKCk7CgoKCgpleHRlcm4gdm9pZCBfX2J6ZXJvICh2b2lkICpfX3MsIHNpemVfdCBfX24p
IHRocm93ICgpOwoKCgpleHRlcm4gdm9pZCBiY29weSAoX19jb25zdCB2b2lkICpfX3NyYywgdm9p
ZCAqX19kZXN0LCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gdm9pZCBiemVybyAodm9p
ZCAqX19zLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGJjbXAgKF9fY29uc3Qg
dm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogICAgIHRocm93ICgp
IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFyICppbmRleCAoX19jb25z
dCBjaGFyICpfX3MsIGludCBfX2MpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwoKCmV4dGVybiBjaGFyICpyaW5kZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIGludCBmZnMgKGludCBf
X2kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQg
ZmZzbCAobG9uZyBpbnQgX19sKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBpbnQgZmZzbGwgKGxvbmcgbG9uZyBpbnQgX19sbCkKICAg
ICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IHN0
cmNhc2VjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBpbnQgc3RybmNhc2Vj
bXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQog
ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBpbnQg
c3RyY2FzZWNtcF9sIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwKICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCBzdHJuY2FzZWNtcF9sIChfX2NvbnN0IGNo
YXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwKICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgX19uLCBfX2xvY2FsZV90IF9fbG9jKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBjaGFyICpzdHJzZXAgKGNoYXIgKipfX3Jlc3RyaWN0
IF9fc3RyaW5ncCwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZGVsaW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBzdHJ2ZXJzY21wIChfX2NvbnN0IGNo
YXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAqc3Ryc2lnbmFsIChpbnQgX19zaWcpIHRocm93
ICgpOwoKCmV4dGVybiBjaGFyICpfX3N0cGNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICB0aHJvdyAoKTsKZXh0ZXJuIGNoYXIg
KnN0cGNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX3NyYykKICAgICB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNoYXIgKl9fc3RwbmNweSAoY2hhciAq
X19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CmV4dGVybiBjaGFyICpzdHBu
Y3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJu
IGNoYXIgKnN0cmZyeSAoY2hhciAqX19zdHJpbmcpIHRocm93ICgpOwoKCmV4dGVybiB2b2lkICpt
ZW1mcm9iICh2b2lkICpfX3MsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgoKCgpleHRlcm4gY2hh
ciAqYmFzZW5hbWUgKF9fY29uc3QgY2hhciAqX19maWxlbmFtZSkgdGhyb3cgKCk7CiMgMzc5ICIv
dXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNAp9CiMgNTEgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxE
L3F0LTIuMy4yL2luY2x1ZGUvcWNzdHJpbmcuaCIgMgojIDc4ICIvdXNyL3NyYy9wYWNrYWdlcy9C
VUlMRC9xdC0yLjMuMi9pbmNsdWRlL3Fjc3RyaW5nLmgiCiB2b2lkICpxbWVtbW92ZSggdm9pZCAq
ZHN0LCBjb25zdCB2b2lkICpzcmMsIHVpbnQgbGVuICk7CgoKCgoKIGNoYXIgKnFzdHJkdXAoIGNv
bnN0IGNoYXIgKiApOwoKIGlubGluZSB1aW50IGNzdHJsZW4oIGNvbnN0IGNoYXIgKnN0ciApCnsg
cmV0dXJuIHN0cmxlbihzdHIpOyB9CgogaW5saW5lIHVpbnQgcXN0cmxlbiggY29uc3QgY2hhciAq
c3RyICkKeyByZXR1cm4gc3RyID8gc3RybGVuKHN0cikgOiAwOyB9CgogaW5saW5lIGNoYXIgKmNz
dHJjcHkoIGNoYXIgKmRzdCwgY29uc3QgY2hhciAqc3JjICkKeyByZXR1cm4gc3RyY3B5KGRzdCxz
cmMpOyB9CgogaW5saW5lIGNoYXIgKnFzdHJjcHkoIGNoYXIgKmRzdCwgY29uc3QgY2hhciAqc3Jj
ICkKeyByZXR1cm4gc3JjID8gc3RyY3B5KGRzdCwgc3JjKSA6IDA7IH0KCiBjaGFyICpxc3RybmNw
eSggY2hhciAqZHN0LCBjb25zdCBjaGFyICpzcmMsIHVpbnQgbGVuICk7CgogaW5saW5lIGludCBj
c3RyY21wKCBjb25zdCBjaGFyICpzdHIxLCBjb25zdCBjaGFyICpzdHIyICkKeyByZXR1cm4gc3Ry
Y21wKHN0cjEsc3RyMik7IH0KCiBpbmxpbmUgaW50IHFzdHJjbXAoIGNvbnN0IGNoYXIgKnN0cjEs
IGNvbnN0IGNoYXIgKnN0cjIgKQp7IHJldHVybiAoc3RyMSAmJiBzdHIyKSA/IHN0cmNtcChzdHIx
LHN0cjIpIDogKGludCkoKGxvbmcpc3RyMiAtIChsb25nKXN0cjEpOyB9CgogaW5saW5lIGludCBj
c3RybmNtcCggY29uc3QgY2hhciAqc3RyMSwgY29uc3QgY2hhciAqc3RyMiwgdWludCBsZW4gKQp7
IHJldHVybiBzdHJuY21wKHN0cjEsc3RyMixsZW4pOyB9CgogaW5saW5lIGludCBxc3RybmNtcCgg
Y29uc3QgY2hhciAqc3RyMSwgY29uc3QgY2hhciAqc3RyMiwgdWludCBsZW4gKQp7IHJldHVybiAo
c3RyMSAmJiBzdHIyKSA/IHN0cm5jbXAoc3RyMSxzdHIyLGxlbikgOgogICAgICAgICAgICAgICAg
ICAgICAgICAgIChpbnQpKChsb25nKXN0cjIgLSAobG9uZylzdHIxKTsgfQoKIGludCBxc3RyaWNt
cCggY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICogKTsKCiBpbnQgcXN0cm5pY21wKCBjb25zdCBj
aGFyICosIGNvbnN0IGNoYXIgKiwgdWludCBsZW4gKTsKIyAxNDcgIi91c3Ivc3JjL3BhY2thZ2Vz
L0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUvcWNzdHJpbmcuaCIKIFFfVUlOVDE2IHFDaGVja3N1bSgg
Y29uc3QgY2hhciAqcywgdWludCBsZW4gKTsKIyAxNTYgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxE
L3F0LTIuMy4yL2luY2x1ZGUvcWNzdHJpbmcuaCIKdHlwZWRlZiBRQXJyYXk8Y2hhcj4gUUJ5dGVB
cnJheTsKCgoKCgoKIFFEYXRhU3RyZWFtICZvcGVyYXRvcjw8KCBRRGF0YVN0cmVhbSAmLCBjb25z
dCBRQnl0ZUFycmF5ICYgKTsKIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+KCBRRGF0YVN0cmVhbSAm
LCBRQnl0ZUFycmF5ICYgKTsKIyAxNzMgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4y
L2luY2x1ZGUvcWNzdHJpbmcuaCIKY2xhc3MgUVJlZ0V4cDsKCmNsYXNzIFFDU3RyaW5nIDogcHVi
bGljIFFCeXRlQXJyYXkKewpwdWJsaWM6CiAgICBRQ1N0cmluZygpIHt9CiAgICBRQ1N0cmluZygg
aW50IHNpemUgKTsKICAgIFFDU3RyaW5nKCBjb25zdCBRQ1N0cmluZyAmcyApIDogUUJ5dGVBcnJh
eSggcyApIHt9CiAgICBRQ1N0cmluZyggY29uc3QgY2hhciAqc3RyICk7CiAgICBRQ1N0cmluZygg
Y29uc3QgY2hhciAqc3RyLCB1aW50IG1heGxlbiApOwoKICAgIFFDU3RyaW5nICZvcGVyYXRvcj0o
IGNvbnN0IFFDU3RyaW5nICZzICk7CiAgICBRQ1N0cmluZyAmb3BlcmF0b3I9KCBjb25zdCBjaGFy
ICpzdHIgKTsKCiAgICBib29sIGlzTnVsbCgpIGNvbnN0OwogICAgYm9vbCBpc0VtcHR5KCkgY29u
c3Q7CiAgICB1aW50IGxlbmd0aCgpIGNvbnN0OwogICAgYm9vbCByZXNpemUoIHVpbnQgbmV3bGVu
ICk7CiAgICBib29sIHRydW5jYXRlKCB1aW50IHBvcyApOwogICAgYm9vbCBmaWxsKCBjaGFyIGMs
IGludCBsZW4gPSAtMSApOwoKICAgIFFDU3RyaW5nIGNvcHkoKSBjb25zdDsKCiAgICBRQ1N0cmlu
ZyAmc3ByaW50ZiggY29uc3QgY2hhciAqZm9ybWF0LCAuLi4gKTsKCiAgICBpbnQgZmluZCggY2hh
ciBjLCBpbnQgaW5kZXg9MCwgYm9vbCBjcz1UUlVFICkgY29uc3Q7CiAgICBpbnQgZmluZCggY29u
c3QgY2hhciAqc3RyLCBpbnQgaW5kZXg9MCwgYm9vbCBjcz1UUlVFICkgY29uc3Q7CiAgICBpbnQg
ZmluZCggY29uc3QgUVJlZ0V4cCAmLCBpbnQgaW5kZXg9MCApIGNvbnN0OwogICAgaW50IGZpbmRS
ZXYoIGNoYXIgYywgaW50IGluZGV4PS0xLCBib29sIGNzPVRSVUUpIGNvbnN0OwogICAgaW50IGZp
bmRSZXYoIGNvbnN0IGNoYXIgKnN0ciwgaW50IGluZGV4PS0xLCBib29sIGNzPVRSVUUpIGNvbnN0
OwogICAgaW50IGZpbmRSZXYoIGNvbnN0IFFSZWdFeHAgJiwgaW50IGluZGV4PS0xICkgY29uc3Q7
CiAgICBpbnQgY29udGFpbnMoIGNoYXIgYywgYm9vbCBjcz1UUlVFICkgY29uc3Q7CiAgICBpbnQg
Y29udGFpbnMoIGNvbnN0IGNoYXIgKnN0ciwgYm9vbCBjcz1UUlVFICkgY29uc3Q7CiAgICBpbnQg
Y29udGFpbnMoIGNvbnN0IFFSZWdFeHAgJiApIGNvbnN0OwoKICAgIFFDU3RyaW5nIGxlZnQoIHVp
bnQgbGVuICkgY29uc3Q7CiAgICBRQ1N0cmluZyByaWdodCggdWludCBsZW4gKSBjb25zdDsKICAg
IFFDU3RyaW5nIG1pZCggdWludCBpbmRleCwgdWludCBsZW49MHhmZmZmZmZmZikgY29uc3Q7Cgog
ICAgUUNTdHJpbmcgbGVmdEp1c3RpZnkoIHVpbnQgd2lkdGgsIGNoYXIgZmlsbD0nICcsIGJvb2wg
dHJ1bmM9RkFMU0UpY29uc3Q7CiAgICBRQ1N0cmluZyByaWdodEp1c3RpZnkoIHVpbnQgd2lkdGgs
IGNoYXIgZmlsbD0nICcsYm9vbCB0cnVuYz1GQUxTRSljb25zdDsKCiAgICBRQ1N0cmluZyBsb3dl
cigpIGNvbnN0OwogICAgUUNTdHJpbmcgdXBwZXIoKSBjb25zdDsKCiAgICBRQ1N0cmluZyBzdHJp
cFdoaXRlU3BhY2UoKSBjb25zdDsKICAgIFFDU3RyaW5nIHNpbXBsaWZ5V2hpdGVTcGFjZSgpIGNv
bnN0OwoKICAgIFFDU3RyaW5nICZpbnNlcnQoIHVpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKiApOwog
ICAgUUNTdHJpbmcgJmluc2VydCggdWludCBpbmRleCwgY2hhciApOwogICAgUUNTdHJpbmcgJmFw
cGVuZCggY29uc3QgY2hhciAqICk7CiAgICBRQ1N0cmluZyAmcHJlcGVuZCggY29uc3QgY2hhciAq
ICk7CiAgICBRQ1N0cmluZyAmcmVtb3ZlKCB1aW50IGluZGV4LCB1aW50IGxlbiApOwogICAgUUNT
dHJpbmcgJnJlcGxhY2UoIHVpbnQgaW5kZXgsIHVpbnQgbGVuLCBjb25zdCBjaGFyICogKTsKICAg
IFFDU3RyaW5nICZyZXBsYWNlKCBjb25zdCBRUmVnRXhwICYsIGNvbnN0IGNoYXIgKiApOwoKICAg
IHNob3J0IHRvU2hvcnQoIGJvb2wgKm9rPTAgKSBjb25zdDsKICAgIHVzaG9ydCB0b1VTaG9ydCgg
Ym9vbCAqb2s9MCApIGNvbnN0OwogICAgaW50IHRvSW50KCBib29sICpvaz0wICkgY29uc3Q7CiAg
ICB1aW50IHRvVUludCggYm9vbCAqb2s9MCApIGNvbnN0OwogICAgbG9uZyB0b0xvbmcoIGJvb2wg
Km9rPTAgKSBjb25zdDsKICAgIHVsb25nIHRvVUxvbmcoIGJvb2wgKm9rPTAgKSBjb25zdDsKICAg
IGZsb2F0IHRvRmxvYXQoIGJvb2wgKm9rPTAgKSBjb25zdDsKICAgIGRvdWJsZSB0b0RvdWJsZSgg
Ym9vbCAqb2s9MCApIGNvbnN0OwoKICAgIFFDU3RyaW5nICZzZXRTdHIoIGNvbnN0IGNoYXIgKnMg
KTsKICAgIFFDU3RyaW5nICZzZXROdW0oIHNob3J0ICk7CiAgICBRQ1N0cmluZyAmc2V0TnVtKCB1
c2hvcnQgKTsKICAgIFFDU3RyaW5nICZzZXROdW0oIGludCApOwogICAgUUNTdHJpbmcgJnNldE51
bSggdWludCApOwogICAgUUNTdHJpbmcgJnNldE51bSggbG9uZyApOwogICAgUUNTdHJpbmcgJnNl
dE51bSggdWxvbmcgKTsKICAgIFFDU3RyaW5nICZzZXROdW0oIGZsb2F0LCBjaGFyIGY9J2cnLCBp
bnQgcHJlYz02ICk7CiAgICBRQ1N0cmluZyAmc2V0TnVtKCBkb3VibGUsIGNoYXIgZj0nZycsIGlu
dCBwcmVjPTYgKTsKCiAgICBib29sIHNldEV4cGFuZCggdWludCBpbmRleCwgY2hhciBjICk7Cgog
ICAgICAgICAgICAgICAgb3BlcmF0b3IgY29uc3QgY2hhciAqKCkgY29uc3Q7CiAgICBRQ1N0cmlu
ZyAmb3BlcmF0b3IrPSggY29uc3QgY2hhciAqc3RyICk7CiAgICBRQ1N0cmluZyAmb3BlcmF0b3Ir
PSggY2hhciBjICk7Cn07CgoKCgoKCiBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PCggUURhdGFTdHJl
YW0gJiwgY29uc3QgUUNTdHJpbmcgJiApOwogUURhdGFTdHJlYW0gJm9wZXJhdG9yPj4oIFFEYXRh
U3RyZWFtICYsIFFDU3RyaW5nICYgKTsKCgoKCgoKaW5saW5lIFFDU3RyaW5nICZRQ1N0cmluZzo6
b3BlcmF0b3I9KCBjb25zdCBRQ1N0cmluZyAmcyApCnsgcmV0dXJuIChRQ1N0cmluZyYpYXNzaWdu
KCBzICk7IH0KCmlubGluZSBRQ1N0cmluZyAmUUNTdHJpbmc6Om9wZXJhdG9yPSggY29uc3QgY2hh
ciAqc3RyICkKeyByZXR1cm4gKFFDU3RyaW5nJilkdXBsaWNhdGUoIHN0ciwgcXN0cmxlbihzdHIp
KzEgKTsgfQoKaW5saW5lIGJvb2wgUUNTdHJpbmc6OmlzTnVsbCgpIGNvbnN0CnsgcmV0dXJuIGRh
dGEoKSA9PSAwOyB9CgppbmxpbmUgYm9vbCBRQ1N0cmluZzo6aXNFbXB0eSgpIGNvbnN0CnsgcmV0
dXJuIGRhdGEoKSA9PSAwIHx8ICpkYXRhKCkgPT0gJ1wwJzsgfQoKaW5saW5lIHVpbnQgUUNTdHJp
bmc6Omxlbmd0aCgpIGNvbnN0CnsgcmV0dXJuIHFzdHJsZW4oIGRhdGEoKSApOyB9CgppbmxpbmUg
Ym9vbCBRQ1N0cmluZzo6dHJ1bmNhdGUoIHVpbnQgcG9zICkKeyByZXR1cm4gcmVzaXplKHBvcysx
KTsgfQoKaW5saW5lIFFDU3RyaW5nIFFDU3RyaW5nOjpjb3B5KCkgY29uc3QKeyByZXR1cm4gUUNT
dHJpbmcoIGRhdGEoKSApOyB9CgppbmxpbmUgUUNTdHJpbmcgJlFDU3RyaW5nOjpwcmVwZW5kKCBj
b25zdCBjaGFyICpzICkKeyByZXR1cm4gaW5zZXJ0KDAscyk7IH0KCmlubGluZSBRQ1N0cmluZyAm
UUNTdHJpbmc6OmFwcGVuZCggY29uc3QgY2hhciAqcyApCnsgcmV0dXJuIG9wZXJhdG9yKz0ocyk7
IH0KCmlubGluZSBRQ1N0cmluZyAmUUNTdHJpbmc6OnNldE51bSggc2hvcnQgbiApCnsgcmV0dXJu
IHNldE51bSgobG9uZyluKTsgfQoKaW5saW5lIFFDU3RyaW5nICZRQ1N0cmluZzo6c2V0TnVtKCB1
c2hvcnQgbiApCnsgcmV0dXJuIHNldE51bSgodWxvbmcpbik7IH0KCmlubGluZSBRQ1N0cmluZyAm
UUNTdHJpbmc6OnNldE51bSggaW50IG4gKQp7IHJldHVybiBzZXROdW0oKGxvbmcpbik7IH0KCmlu
bGluZSBRQ1N0cmluZyAmUUNTdHJpbmc6OnNldE51bSggdWludCBuICkKeyByZXR1cm4gc2V0TnVt
KCh1bG9uZyluKTsgfQoKaW5saW5lIFFDU3RyaW5nICZRQ1N0cmluZzo6c2V0TnVtKCBmbG9hdCBu
LCBjaGFyIGYsIGludCBwcmVjICkKeyByZXR1cm4gc2V0TnVtKChkb3VibGUpbixmLHByZWMpOyB9
CgppbmxpbmUgUUNTdHJpbmc6Om9wZXJhdG9yIGNvbnN0IGNoYXIgKigpIGNvbnN0CnsgcmV0dXJu
IChjb25zdCBjaGFyICopZGF0YSgpOyB9CgoKCgoKCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KCBj
b25zdCBRQ1N0cmluZyAmczEsIGNvbnN0IFFDU3RyaW5nICZzMiApCnsgcmV0dXJuIHFzdHJjbXAo
czEuZGF0YSgpLHMyLmRhdGEoKSkgPT0gMDsgfQoKIGlubGluZSBib29sIG9wZXJhdG9yPT0oIGNv
bnN0IFFDU3RyaW5nICZzMSwgY29uc3QgY2hhciAqczIgKQp7IHJldHVybiBxc3RyY21wKHMxLmRh
dGEoKSxzMikgPT0gMDsgfQoKIGlubGluZSBib29sIG9wZXJhdG9yPT0oIGNvbnN0IGNoYXIgKnMx
LCBjb25zdCBRQ1N0cmluZyAmczIgKQp7IHJldHVybiBxc3RyY21wKHMxLHMyLmRhdGEoKSkgPT0g
MDsgfQoKIGlubGluZSBib29sIG9wZXJhdG9yIT0oIGNvbnN0IFFDU3RyaW5nICZzMSwgY29uc3Qg
UUNTdHJpbmcgJnMyICkKeyByZXR1cm4gcXN0cmNtcChzMS5kYXRhKCksczIuZGF0YSgpKSAhPSAw
OyB9CgogaW5saW5lIGJvb2wgb3BlcmF0b3IhPSggY29uc3QgUUNTdHJpbmcgJnMxLCBjb25zdCBj
aGFyICpzMiApCnsgcmV0dXJuIHFzdHJjbXAoczEuZGF0YSgpLHMyKSAhPSAwOyB9CgogaW5saW5l
IGJvb2wgb3BlcmF0b3IhPSggY29uc3QgY2hhciAqczEsIGNvbnN0IFFDU3RyaW5nICZzMiApCnsg
cmV0dXJuIHFzdHJjbXAoczEsczIuZGF0YSgpKSAhPSAwOyB9CgogaW5saW5lIGJvb2wgb3BlcmF0
b3I8KCBjb25zdCBRQ1N0cmluZyAmczEsIGNvbnN0IFFDU3RyaW5nJiBzMiApCnsgcmV0dXJuIHFz
dHJjbXAoczEuZGF0YSgpLHMyLmRhdGEoKSkgPCAwOyB9CgogaW5saW5lIGJvb2wgb3BlcmF0b3I8
KCBjb25zdCBRQ1N0cmluZyAmczEsIGNvbnN0IGNoYXIgKnMyICkKeyByZXR1cm4gcXN0cmNtcChz
MS5kYXRhKCksczIpIDwgMDsgfQoKIGlubGluZSBib29sIG9wZXJhdG9yPCggY29uc3QgY2hhciAq
czEsIGNvbnN0IFFDU3RyaW5nICZzMiApCnsgcmV0dXJuIHFzdHJjbXAoczEsczIuZGF0YSgpKSA8
IDA7IH0KCiBpbmxpbmUgYm9vbCBvcGVyYXRvcjw9KCBjb25zdCBRQ1N0cmluZyAmczEsIGNvbnN0
IGNoYXIgKnMyICkKeyByZXR1cm4gcXN0cmNtcChzMS5kYXRhKCksczIpIDw9IDA7IH0KCiBpbmxp
bmUgYm9vbCBvcGVyYXRvcjw9KCBjb25zdCBjaGFyICpzMSwgY29uc3QgUUNTdHJpbmcgJnMyICkK
eyByZXR1cm4gcXN0cmNtcChzMSxzMi5kYXRhKCkpIDw9IDA7IH0KCiBpbmxpbmUgYm9vbCBvcGVy
YXRvcj4oIGNvbnN0IFFDU3RyaW5nICZzMSwgY29uc3QgY2hhciAqczIgKQp7IHJldHVybiBxc3Ry
Y21wKHMxLmRhdGEoKSxzMikgPiAwOyB9CgogaW5saW5lIGJvb2wgb3BlcmF0b3I+KCBjb25zdCBj
aGFyICpzMSwgY29uc3QgUUNTdHJpbmcgJnMyICkKeyByZXR1cm4gcXN0cmNtcChzMSxzMi5kYXRh
KCkpID4gMDsgfQoKIGlubGluZSBib29sIG9wZXJhdG9yPj0oIGNvbnN0IFFDU3RyaW5nICZzMSwg
Y29uc3QgY2hhciAqczIgKQp7IHJldHVybiBxc3RyY21wKHMxLmRhdGEoKSxzMikgPj0gMDsgfQoK
IGlubGluZSBib29sIG9wZXJhdG9yPj0oIGNvbnN0IGNoYXIgKnMxLCBjb25zdCBRQ1N0cmluZyAm
czIgKQp7IHJldHVybiBxc3RyY21wKHMxLHMyLmRhdGEoKSkgPj0gMDsgfQoKIGlubGluZSBRQ1N0
cmluZyBvcGVyYXRvcisoIGNvbnN0IFFDU3RyaW5nICZzMSwgY29uc3QgUUNTdHJpbmcgJnMyICkK
ewogICAgUUNTdHJpbmcgdG1wKCBzMS5kYXRhKCkgKTsKICAgIHRtcCArPSBzMjsKICAgIHJldHVy
biB0bXA7Cn0KCiBpbmxpbmUgUUNTdHJpbmcgb3BlcmF0b3IrKCBjb25zdCBRQ1N0cmluZyAmczEs
IGNvbnN0IGNoYXIgKnMyICkKewogICAgUUNTdHJpbmcgdG1wKCBzMS5kYXRhKCkgKTsKICAgIHRt
cCArPSBzMjsKICAgIHJldHVybiB0bXA7Cn0KCiBpbmxpbmUgUUNTdHJpbmcgb3BlcmF0b3IrKCBj
b25zdCBjaGFyICpzMSwgY29uc3QgUUNTdHJpbmcgJnMyICkKewogICAgUUNTdHJpbmcgdG1wKCBz
MSApOwogICAgdG1wICs9IHMyOwogICAgcmV0dXJuIHRtcDsKfQoKIGlubGluZSBRQ1N0cmluZyBv
cGVyYXRvcisoIGNvbnN0IFFDU3RyaW5nICZzMSwgY2hhciBjMiApCnsKICAgIFFDU3RyaW5nIHRt
cCggczEuZGF0YSgpICk7CiAgICB0bXAgKz0gYzI7CiAgICByZXR1cm4gdG1wOwp9CgogaW5saW5l
IFFDU3RyaW5nIG9wZXJhdG9yKyggY2hhciBjMSwgY29uc3QgUUNTdHJpbmcgJnMyICkKewogICAg
UUNTdHJpbmcgdG1wOwogICAgdG1wICs9IGMxOwogICAgdG1wICs9IHMyOwogICAgcmV0dXJuIHRt
cDsKfQojIDQ0ICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3FzdHJp
bmcuaCIgMgoKCgoKCgoKY2xhc3MgUVJlZ0V4cDsKY2xhc3MgUVN0cmluZzsKY2xhc3MgUUNoYXJS
ZWY7CgpjbGFzcyBRQ2hhciB7CnB1YmxpYzoKICAgIFFDaGFyKCk7CiAgICBRQ2hhciggY2hhciBj
ICk7CiAgICBRQ2hhciggdWNoYXIgYyApOwogICAgUUNoYXIoIHVjaGFyIGMsIHVjaGFyIHIgKTsK
ICAgIFFDaGFyKCBjb25zdCBRQ2hhciYgYyApOwogICAgUUNoYXIoIHVzaG9ydCByYyApOwogICAg
UUNoYXIoIHNob3J0IHJjICk7CiAgICBRQ2hhciggdWludCByYyApOwogICAgUUNoYXIoIGludCBy
YyApOwoKICAgIHN0YXRpYyBjb25zdCBRQ2hhciBudWxsOwogICAgc3RhdGljIGNvbnN0IFFDaGFy
IHJlcGxhY2VtZW50OwogICAgc3RhdGljIGNvbnN0IFFDaGFyIGJ5dGVPcmRlck1hcms7CiAgICBz
dGF0aWMgY29uc3QgUUNoYXIgYnl0ZU9yZGVyU3dhcHBlZDsKICAgIHN0YXRpYyBjb25zdCBRQ2hh
ciBuYnNwOwoKCgogICAgZW51bSBDYXRlZ29yeQogICAgewogICAgICAgIE5vQ2F0ZWdvcnksCgog
ICAgICAgIE1hcmtfTm9uU3BhY2luZywKICAgICAgICBNYXJrX1NwYWNpbmdDb21iaW5pbmcsCiAg
ICAgICAgTWFya19FbmNsb3NpbmcsCgogICAgICAgIE51bWJlcl9EZWNpbWFsRGlnaXQsCiAgICAg
ICAgTnVtYmVyX0xldHRlciwKICAgICAgICBOdW1iZXJfT3RoZXIsCgogICAgICAgIFNlcGFyYXRv
cl9TcGFjZSwKICAgICAgICBTZXBhcmF0b3JfTGluZSwKICAgICAgICBTZXBhcmF0b3JfUGFyYWdy
YXBoLAoKICAgICAgICBPdGhlcl9Db250cm9sLAogICAgICAgIE90aGVyX0Zvcm1hdCwKICAgICAg
ICBPdGhlcl9TdXJyb2dhdGUsCiAgICAgICAgT3RoZXJfUHJpdmF0ZVVzZSwKICAgICAgICBPdGhl
cl9Ob3RBc3NpZ25lZCwKCiAgICAgICAgTGV0dGVyX1VwcGVyY2FzZSwKICAgICAgICBMZXR0ZXJf
TG93ZXJjYXNlLAogICAgICAgIExldHRlcl9UaXRsZWNhc2UsCiAgICAgICAgTGV0dGVyX01vZGlm
aWVyLAogICAgICAgIExldHRlcl9PdGhlciwKCiAgICAgICAgUHVuY3R1YXRpb25fQ29ubmVjdG9y
LAogICAgICAgIFB1bmN0dWF0aW9uX0Rhc2ssCiAgICAgICAgUHVuY3R1YXRpb25fT3BlbiwKICAg
ICAgICBQdW5jdHVhdGlvbl9DbG9zZSwKICAgICAgICBQdW5jdHVhdGlvbl9Jbml0aWFsUXVvdGUs
CiAgICAgICAgUHVuY3R1YXRpb25fRmluYWxRdW90ZSwKICAgICAgICBQdW5jdHVhdGlvbl9PdGhl
ciwKCiAgICAgICAgU3ltYm9sX01hdGgsCiAgICAgICAgU3ltYm9sX0N1cnJlbmN5LAogICAgICAg
IFN5bWJvbF9Nb2RpZmllciwKICAgICAgICBTeW1ib2xfT3RoZXIKICAgIH07CgogICAgZW51bSBE
aXJlY3Rpb24KICAgIHsKICAgICAgICBEaXJMLCBEaXJSLCBEaXJFTiwgRGlyRVMsIERpckVULCBE
aXJBTiwgRGlyQ1MsIERpckIsIERpclMsIERpcldTLCBEaXJPTiwKICAgICAgICBEaXJMUkUsIERp
ckxSTywgRGlyQUwsIERpclJMRSwgRGlyUkxPLCBEaXJQREYsIERpck5TTSwgRGlyQk4KICAgIH07
CgogICAgZW51bSBEZWNvbXBvc2l0aW9uCiAgICB7CiAgICAgICAgU2luZ2xlLCBDYW5vbmljYWws
IEZvbnQsIE5vQnJlYWssIEluaXRpYWwsIE1lZGlhbCwKICAgICAgICBGaW5hbCwgSXNvbGF0ZWQs
IENpcmNsZSwgU3VwZXIsIFN1YiwgVmVydGljYWwsCiAgICAgICAgV2lkZSwgTmFycm93LCBTbWFs
bCwgU3F1YXJlLCBDb21wYXQsIEZyYWN0aW9uCiAgICB9OwoKICAgIGVudW0gSm9pbmluZwogICAg
ewogICAgICAgIE90aGVySm9pbmluZywgRHVhbCwgUmlnaHQsIENlbnRlcgogICAgfTsKCgoKICAg
IGludCBkaWdpdFZhbHVlKCkgY29uc3Q7CiAgICBRQ2hhciBsb3dlcigpIGNvbnN0OwogICAgUUNo
YXIgdXBwZXIoKSBjb25zdDsKCiAgICBDYXRlZ29yeSBjYXRlZ29yeSgpIGNvbnN0OwogICAgRGly
ZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0OwogICAgSm9pbmluZyBqb2luaW5nKCkgY29uc3Q7CiAg
ICBib29sIG1pcnJvcmVkKCkgY29uc3Q7CiAgICBRQ2hhciBtaXJyb3JlZENoYXIoKSBjb25zdDsK
ICAgIFFTdHJpbmcgZGVjb21wb3NpdGlvbigpIGNvbnN0OwogICAgRGVjb21wb3NpdGlvbiBkZWNv
bXBvc2l0aW9uVGFnKCkgY29uc3Q7CgogICAgY2hhciBsYXRpbjEoKSBjb25zdCB7IHJldHVybiBy
dyA/IDAgOiBjbDsgfQogICAgdXNob3J0IHVuaWNvZGUoKSBjb25zdCB7IHJldHVybiAocncgPDwg
OCkgfCBjbDsgfQoKCiAgICBvcGVyYXRvciBjaGFyKCkgY29uc3QgeyByZXR1cm4gbGF0aW4xKCk7
IH0KCgogICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiB1bmljb2RlKCk9PTA7IH0KICAg
IGJvb2wgaXNQcmludCgpIGNvbnN0OwogICAgYm9vbCBpc1B1bmN0KCkgY29uc3Q7CiAgICBib29s
IGlzU3BhY2UoKSBjb25zdDsKICAgIGJvb2wgaXNNYXJrKCkgY29uc3Q7CiAgICBib29sIGlzTGV0
dGVyKCkgY29uc3Q7CiAgICBib29sIGlzTnVtYmVyKCkgY29uc3Q7CiAgICBib29sIGlzTGV0dGVy
T3JOdW1iZXIoKSBjb25zdDsKICAgIGJvb2wgaXNEaWdpdCgpIGNvbnN0OwoKICAgIHVjaGFyJiBj
ZWxsKCkgeyByZXR1cm4gY2w7IH0KICAgIHVjaGFyJiByb3coKSB7IHJldHVybiBydzsgfQogICAg
dWNoYXIgY2VsbCgpIGNvbnN0IHsgcmV0dXJuIGNsOyB9CiAgICB1Y2hhciByb3coKSBjb25zdCB7
IHJldHVybiBydzsgfQoKICAgIHN0YXRpYyBib29sIG5ldHdvcmtPcmRlcmVkKCkgeyByZXR1cm4g
KGludCluZXRfb3JkZXJlZCA9PSAxOyB9CgogICAgZnJpZW5kIGlubGluZSBpbnQgb3BlcmF0b3I9
PSggY2hhciBjaCwgUUNoYXIgYyApOwogICAgZnJpZW5kIGlubGluZSBpbnQgb3BlcmF0b3I9PSgg
UUNoYXIgYywgY2hhciBjaCApOwogICAgZnJpZW5kIGlubGluZSBpbnQgb3BlcmF0b3I9PSggUUNo
YXIgYzEsIFFDaGFyIGMyICk7CiAgICBmcmllbmQgaW5saW5lIGludCBvcGVyYXRvciE9KCBRQ2hh
ciBjMSwgUUNoYXIgYzIgKTsKICAgIGZyaWVuZCBpbmxpbmUgaW50IG9wZXJhdG9yIT0oIGNoYXIg
Y2gsIFFDaGFyIGMgKTsKICAgIGZyaWVuZCBpbmxpbmUgaW50IG9wZXJhdG9yIT0oIFFDaGFyIGMs
IGNoYXIgY2ggKTsKICAgIGZyaWVuZCBpbmxpbmUgaW50IG9wZXJhdG9yPD0oIFFDaGFyIGMsIGNo
YXIgY2ggKTsKICAgIGZyaWVuZCBpbmxpbmUgaW50IG9wZXJhdG9yPD0oIGNoYXIgY2gsIFFDaGFy
IGMgKTsKICAgIGZyaWVuZCBpbmxpbmUgaW50IG9wZXJhdG9yPD0oIFFDaGFyIGMxLCBRQ2hhciBj
MiApOwoKcHJpdmF0ZToKCgoKICAgIHVjaGFyIHJ3OwogICAgdWNoYXIgY2w7CgoKCiAgICBlbnVt
IHsgbmV0X29yZGVyZWQgPSAxIH07CiMgMjAyICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0y
LjMuMi9pbmNsdWRlL3FzdHJpbmcuaCIKfSA7CgppbmxpbmUgUUNoYXI6OlFDaGFyKCkKewogICAg
cncgPSAwOyBjbCA9IDA7CgoKCn0KaW5saW5lIFFDaGFyOjpRQ2hhciggY2hhciBjICkKewogICAg
cncgPSAwOyBjbCA9ICh1Y2hhciljOwoKCgp9CmlubGluZSBRQ2hhcjo6UUNoYXIoIHVjaGFyIGMg
KQp7CiAgICBydyA9IDA7IGNsID0gYzsKCgoKfQppbmxpbmUgUUNoYXI6OlFDaGFyKCB1Y2hhciBj
LCB1Y2hhciByICkKewogICAgcncgPSByOyBjbCA9IGM7CgoKCn0KaW5saW5lIFFDaGFyOjpRQ2hh
ciggY29uc3QgUUNoYXImIGMgKQp7CiAgICBydyA9IGMucnc7IGNsID0gYy5jbDsKCgoKfQppbmxp
bmUgUUNoYXI6OlFDaGFyKCB1c2hvcnQgcmMgKQp7CiAgICBydyA9ICh1Y2hhcikoKHJjPj44KSYw
eGZmKTsgY2wgPSAodWNoYXIpKHJjJjB4ZmYpOwoKCgp9CmlubGluZSBRQ2hhcjo6UUNoYXIoIHNo
b3J0IHJjICkKewogICAgcncgPSAodWNoYXIpKChyYz4+OCkmMHhmZik7IGNsID0gKHVjaGFyKShy
YyYweGZmKTsKCgoKfQppbmxpbmUgUUNoYXI6OlFDaGFyKCB1aW50IHJjICkKewogICAgcncgPSAo
dWNoYXIpKChyYz4+OCkmMHhmZik7IGNsID0gKHVjaGFyKShyYyYweGZmKTsKCgoKfQppbmxpbmUg
UUNoYXI6OlFDaGFyKCBpbnQgcmMgKQp7CiAgICBydyA9ICh1Y2hhcikoKHJjPj44KSYweGZmKTsg
Y2wgPSAodWNoYXIpKHJjJjB4ZmYpOwoKCgp9CgoKaW5saW5lIGludCBvcGVyYXRvcj09KCBjaGFy
IGNoLCBRQ2hhciBjICkKewogICAgcmV0dXJuIGNoID09IGMuY2wgJiYgIWMucnc7Cn0KCmlubGlu
ZSBpbnQgb3BlcmF0b3I9PSggUUNoYXIgYywgY2hhciBjaCApCnsKICAgIHJldHVybiBjaCA9PSBj
LmNsICYmICFjLnJ3Owp9CgppbmxpbmUgaW50IG9wZXJhdG9yPT0oIFFDaGFyIGMxLCBRQ2hhciBj
MiApCnsKICAgIHJldHVybiBjMS5jbCA9PSBjMi5jbAogICAgICAgICYmIGMxLnJ3ID09IGMyLnJ3
Owp9CgppbmxpbmUgaW50IG9wZXJhdG9yIT0oIFFDaGFyIGMxLCBRQ2hhciBjMiApCnsKICAgIHJl
dHVybiBjMS5jbCAhPSBjMi5jbAogICAgICAgIHx8IGMxLnJ3ICE9IGMyLnJ3Owp9CgppbmxpbmUg
aW50IG9wZXJhdG9yIT0oIGNoYXIgY2gsIFFDaGFyIGMgKQp7CiAgICByZXR1cm4gY2ggIT0gYy5j
bCB8fCBjLnJ3Owp9CgppbmxpbmUgaW50IG9wZXJhdG9yIT0oIFFDaGFyIGMsIGNoYXIgY2ggKQp7
CiAgICByZXR1cm4gY2ggIT0gYy5jbCB8fCBjLnJ3Owp9CgppbmxpbmUgaW50IG9wZXJhdG9yPD0o
IFFDaGFyIGMsIGNoYXIgY2ggKQp7CiAgICByZXR1cm4gIShjaCA8IGMuY2wgfHwgYy5ydyk7Cn0K
CmlubGluZSBpbnQgb3BlcmF0b3I8PSggY2hhciBjaCwgUUNoYXIgYyApCnsKICAgIHJldHVybiBj
aCA8PSBjLmNsIHx8IGMucnc7Cn0KCmlubGluZSBpbnQgb3BlcmF0b3I8PSggUUNoYXIgYzEsIFFD
aGFyIGMyICkKewogICAgcmV0dXJuIGMxLnJ3ID4gYzIucncKICAgICAgICA/IEZBTFNFCiAgICAg
ICAgOiBjMS5ydyA8IGMyLnJ3CiAgICAgICAgICAgID8gVFJVRQogICAgICAgICAgICA6IGMxLmNs
IDw9IGMyLmNsOwp9CgppbmxpbmUgaW50IG9wZXJhdG9yPj0oIFFDaGFyIGMsIGNoYXIgY2ggKSB7
IHJldHVybiBjaCA8PSBjOyB9CmlubGluZSBpbnQgb3BlcmF0b3I+PSggY2hhciBjaCwgUUNoYXIg
YyApIHsgcmV0dXJuIGMgPD0gY2g7IH0KaW5saW5lIGludCBvcGVyYXRvcj49KCBRQ2hhciBjMSwg
UUNoYXIgYzIgKSB7IHJldHVybiBjMiA8PSBjMTsgfQppbmxpbmUgaW50IG9wZXJhdG9yPCggUUNo
YXIgYywgY2hhciBjaCApIHsgcmV0dXJuICEoY2g8PWMpOyB9CmlubGluZSBpbnQgb3BlcmF0b3I8
KCBjaGFyIGNoLCBRQ2hhciBjICkgeyByZXR1cm4gIShjPD1jaCk7IH0KaW5saW5lIGludCBvcGVy
YXRvcjwoIFFDaGFyIGMxLCBRQ2hhciBjMiApIHsgcmV0dXJuICEoYzI8PWMxKTsgfQppbmxpbmUg
aW50IG9wZXJhdG9yPiggUUNoYXIgYywgY2hhciBjaCApIHsgcmV0dXJuICEoY2g+PWMpOyB9Cmlu
bGluZSBpbnQgb3BlcmF0b3I+KCBjaGFyIGNoLCBRQ2hhciBjICkgeyByZXR1cm4gIShjPj1jaCk7
IH0KaW5saW5lIGludCBvcGVyYXRvcj4oIFFDaGFyIGMxLCBRQ2hhciBjMiApIHsgcmV0dXJuICEo
YzI+PWMxKTsgfQoKCnN0cnVjdCBRU3RyaW5nRGF0YSA6IHB1YmxpYyBRU2hhcmVkIHsKICAgIFFT
dHJpbmdEYXRhKCkgOgogICAgICAgIHVuaWNvZGUoMCksIGFzY2lpKDApLCBsZW4oMCksIG1heGwo
MCksIGRpcnR5YXNjaWkoMCkgeyByZWYoKTsgfQogICAgUVN0cmluZ0RhdGEoUUNoYXIgKnUsIHVp
bnQgbCwgdWludCBtKSA6CiAgICAgICAgdW5pY29kZSh1KSwgYXNjaWkoMCksIGxlbihsKSwgbWF4
bChtKSwgZGlydHlhc2NpaSgwKSB7IH0KCiAgICB+UVN0cmluZ0RhdGEoKSB7IGlmICggdW5pY29k
ZSApIGRlbGV0ZVtdICgoY2hhciopdW5pY29kZSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICgg
YXNjaWkgKSBkZWxldGVbXSBhc2NpaTsgfQoKICAgIHZvaWQgZGVsZXRlU2VsZigpOwogICAgUUNo
YXIgKnVuaWNvZGU7CiAgICBjaGFyICphc2NpaTsKICAgIHVpbnQgbGVuOwogICAgdWludCBtYXhs
OjMwOwogICAgdWludCBkaXJ0eWFzY2lpOjE7Cn07CgoKY2xhc3MgUVN0cmluZwp7CnB1YmxpYzoK
ICAgIFFTdHJpbmcoKTsKICAgIFFTdHJpbmcoIFFDaGFyICk7CiAgICBRU3RyaW5nKCBjb25zdCBR
U3RyaW5nICYgKTsKICAgIFFTdHJpbmcoIGNvbnN0IFFCeXRlQXJyYXkmICk7CiAgICBRU3RyaW5n
KCBjb25zdCBRQ2hhciogdW5pY29kZSwgdWludCBsZW5ndGggKTsKCiAgICBRU3RyaW5nKCBjb25z
dCBjaGFyICpzdHIgKTsKCiAgICB+UVN0cmluZygpOwoKICAgIFFTdHJpbmcgJm9wZXJhdG9yPSgg
Y29uc3QgUVN0cmluZyAmICk7CgogICAgUVN0cmluZyAmb3BlcmF0b3I9KCBjb25zdCBjaGFyICog
KTsKCiAgICBRU3RyaW5nICZvcGVyYXRvcj0oIGNvbnN0IFFDU3RyaW5nJiApOwogICAgUVN0cmlu
ZyAmb3BlcmF0b3I9KCBRQ2hhciBjICk7CiAgICBRU3RyaW5nICZvcGVyYXRvcj0oIGNoYXIgYyAp
OwoKICAgIHN0YXRpYyBjb25zdCBRU3RyaW5nIG51bGw7CgogICAgYm9vbCBpc051bGwoKSBjb25z
dDsKICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogICAgdWludCBsZW5ndGgoKSBjb25zdDsKICAg
IHZvaWQgdHJ1bmNhdGUoIHVpbnQgcG9zICk7CgoKCgogICAgdm9pZCBmaWxsKCBRQ2hhciBjLCBp
bnQgbGVuID0gLTEgKTsKCiAgICBRU3RyaW5nIGNvcHkoKSBjb25zdDsKCiAgICBRU3RyaW5nIGFy
Zyhsb25nIGEsIGludCBmaWVsZHdpZHRoPTAsIGludCBiYXNlPTEwKSBjb25zdDsKICAgIFFTdHJp
bmcgYXJnKHVsb25nIGEsIGludCBmaWVsZHdpZHRoPTAsIGludCBiYXNlPTEwKSBjb25zdDsKICAg
IFFTdHJpbmcgYXJnKGludCBhLCBpbnQgZmllbGR3aWR0aD0wLCBpbnQgYmFzZT0xMCkgY29uc3Q7
CiAgICBRU3RyaW5nIGFyZyh1aW50IGEsIGludCBmaWVsZHdpZHRoPTAsIGludCBiYXNlPTEwKSBj
b25zdDsKICAgIFFTdHJpbmcgYXJnKHNob3J0IGEsIGludCBmaWVsZHdpZHRoPTAsIGludCBiYXNl
PTEwKSBjb25zdDsKICAgIFFTdHJpbmcgYXJnKHVzaG9ydCBhLCBpbnQgZmllbGR3aWR0aD0wLCBp
bnQgYmFzZT0xMCkgY29uc3Q7CiAgICBRU3RyaW5nIGFyZyhjaGFyIGEsIGludCBmaWVsZHdpZHRo
PTApIGNvbnN0OwogICAgUVN0cmluZyBhcmcoUUNoYXIgYSwgaW50IGZpZWxkd2lkdGg9MCkgY29u
c3Q7CiAgICBRU3RyaW5nIGFyZyhjb25zdCBRU3RyaW5nJiBhLCBpbnQgZmllbGR3aWR0aD0wKSBj
b25zdDsKICAgIFFTdHJpbmcgYXJnKGRvdWJsZSBhLCBpbnQgZmllbGR3aWR0aD0wLCBjaGFyIGZt
dD0nZycsIGludCBwcmVjPS0xKSBjb25zdDsKCiAgICBRU3RyaW5nICZzcHJpbnRmKCBjb25zdCBj
aGFyKiBmb3JtYXQsIC4uLiApCgogICAgICAgIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50
ZiwgMiwgMykpKQoKICAgICAgICA7CgogICAgaW50IGZpbmQoIFFDaGFyIGMsIGludCBpbmRleD0w
LCBib29sIGNzPVRSVUUgKSBjb25zdDsKICAgIGludCBmaW5kKCBjaGFyIGMsIGludCBpbmRleD0w
LCBib29sIGNzPVRSVUUgKSBjb25zdDsKICAgIGludCBmaW5kKCBjb25zdCBRU3RyaW5nICZzdHIs
IGludCBpbmRleD0wLCBib29sIGNzPVRSVUUgKSBjb25zdDsKICAgIGludCBmaW5kKCBjb25zdCBR
UmVnRXhwICYsIGludCBpbmRleD0wICkgY29uc3Q7CgogICAgaW50IGZpbmQoIGNvbnN0IGNoYXIq
IHN0ciwgaW50IGluZGV4PTAgKSBjb25zdDsKCiAgICBpbnQgZmluZFJldiggUUNoYXIgYywgaW50
IGluZGV4PS0xLCBib29sIGNzPVRSVUUpIGNvbnN0OwogICAgaW50IGZpbmRSZXYoIGNoYXIgYywg
aW50IGluZGV4PS0xLCBib29sIGNzPVRSVUUpIGNvbnN0OwogICAgaW50IGZpbmRSZXYoIGNvbnN0
IFFTdHJpbmcgJnN0ciwgaW50IGluZGV4PS0xLCBib29sIGNzPVRSVUUpIGNvbnN0OwogICAgaW50
IGZpbmRSZXYoIGNvbnN0IFFSZWdFeHAgJiwgaW50IGluZGV4PS0xICkgY29uc3Q7CgogICAgaW50
IGZpbmRSZXYoIGNvbnN0IGNoYXIqIHN0ciwgaW50IGluZGV4PS0xICkgY29uc3Q7CgogICAgaW50
IGNvbnRhaW5zKCBRQ2hhciBjLCBib29sIGNzPVRSVUUgKSBjb25zdDsKICAgIGludCBjb250YWlu
cyggY2hhciBjLCBib29sIGNzPVRSVUUgKSBjb25zdAogICAgICAgICAgICAgICAgICAgIHsgcmV0
dXJuIGNvbnRhaW5zKFFDaGFyKGMpLCBjcyk7IH0KCiAgICBpbnQgY29udGFpbnMoIGNvbnN0IGNo
YXIqIHN0ciwgYm9vbCBjcz1UUlVFICkgY29uc3Q7CgogICAgaW50IGNvbnRhaW5zKCBjb25zdCBR
U3RyaW5nICZzdHIsIGJvb2wgY3M9VFJVRSApIGNvbnN0OwogICAgaW50IGNvbnRhaW5zKCBjb25z
dCBRUmVnRXhwICYgKSBjb25zdDsKCiAgICBRU3RyaW5nIGxlZnQoIHVpbnQgbGVuICkgY29uc3Q7
CiAgICBRU3RyaW5nIHJpZ2h0KCB1aW50IGxlbiApIGNvbnN0OwogICAgUVN0cmluZyBtaWQoIHVp
bnQgaW5kZXgsIHVpbnQgbGVuPTB4ZmZmZmZmZmYpIGNvbnN0OwoKICAgIFFTdHJpbmcgbGVmdEp1
c3RpZnkoIHVpbnQgd2lkdGgsIFFDaGFyIGZpbGw9JyAnLCBib29sIHRydW5jPUZBTFNFKWNvbnN0
OwogICAgUVN0cmluZyByaWdodEp1c3RpZnkoIHVpbnQgd2lkdGgsIFFDaGFyIGZpbGw9JyAnLGJv
b2wgdHJ1bmM9RkFMU0UpY29uc3Q7CgogICAgUVN0cmluZyBsb3dlcigpIGNvbnN0OwogICAgUVN0
cmluZyB1cHBlcigpIGNvbnN0OwoKICAgIFFTdHJpbmcgc3RyaXBXaGl0ZVNwYWNlKCkgY29uc3Q7
CiAgICBRU3RyaW5nIHNpbXBsaWZ5V2hpdGVTcGFjZSgpIGNvbnN0OwoKICAgIFFTdHJpbmcgJmlu
c2VydCggdWludCBpbmRleCwgY29uc3QgUVN0cmluZyAmICk7CiAgICBRU3RyaW5nICZpbnNlcnQo
IHVpbnQgaW5kZXgsIGNvbnN0IFFDaGFyKiwgdWludCBsZW4gKTsKICAgIFFTdHJpbmcgJmluc2Vy
dCggdWludCBpbmRleCwgUUNoYXIgKTsKICAgIFFTdHJpbmcgJmluc2VydCggdWludCBpbmRleCwg
Y2hhciBjICkgeyByZXR1cm4gaW5zZXJ0KGluZGV4LFFDaGFyKGMpKTsgfQogICAgUVN0cmluZyAm
YXBwZW5kKCBjaGFyICk7CiAgICBRU3RyaW5nICZhcHBlbmQoIFFDaGFyICk7CiAgICBRU3RyaW5n
ICZhcHBlbmQoIGNvbnN0IFFTdHJpbmcgJiApOwogICAgUVN0cmluZyAmcHJlcGVuZCggY2hhciAp
OwogICAgUVN0cmluZyAmcHJlcGVuZCggUUNoYXIgKTsKICAgIFFTdHJpbmcgJnByZXBlbmQoIGNv
bnN0IFFTdHJpbmcgJiApOwogICAgUVN0cmluZyAmcmVtb3ZlKCB1aW50IGluZGV4LCB1aW50IGxl
biApOwogICAgUVN0cmluZyAmcmVwbGFjZSggdWludCBpbmRleCwgdWludCBsZW4sIGNvbnN0IFFT
dHJpbmcgJiApOwogICAgUVN0cmluZyAmcmVwbGFjZSggdWludCBpbmRleCwgdWludCBsZW4sIGNv
bnN0IFFDaGFyKiwgdWludCBjbGVuICk7CiAgICBRU3RyaW5nICZyZXBsYWNlKCBjb25zdCBRUmVn
RXhwICYsIGNvbnN0IFFTdHJpbmcgJiApOwoKICAgIHNob3J0IHRvU2hvcnQoIGJvb2wgKm9rPTAs
IGludCBiYXNlPTEwICkgY29uc3Q7CiAgICB1c2hvcnQgdG9VU2hvcnQoIGJvb2wgKm9rPTAsIGlu
dCBiYXNlPTEwICkgY29uc3Q7CiAgICBpbnQgdG9JbnQoIGJvb2wgKm9rPTAsIGludCBiYXNlPTEw
ICkgY29uc3Q7CiAgICB1aW50IHRvVUludCggYm9vbCAqb2s9MCwgaW50IGJhc2U9MTAgKSBjb25z
dDsKICAgIGxvbmcgdG9Mb25nKCBib29sICpvaz0wLCBpbnQgYmFzZT0xMCApIGNvbnN0OwogICAg
dWxvbmcgdG9VTG9uZyggYm9vbCAqb2s9MCwgaW50IGJhc2U9MTAgKSBjb25zdDsKICAgIGZsb2F0
IHRvRmxvYXQoIGJvb2wgKm9rPTAgKSBjb25zdDsKICAgIGRvdWJsZSB0b0RvdWJsZSggYm9vbCAq
b2s9MCApIGNvbnN0OwoKICAgIFFTdHJpbmcgJnNldE51bSggc2hvcnQsIGludCBiYXNlPTEwICk7
CiAgICBRU3RyaW5nICZzZXROdW0oIHVzaG9ydCwgaW50IGJhc2U9MTAgKTsKICAgIFFTdHJpbmcg
JnNldE51bSggaW50LCBpbnQgYmFzZT0xMCApOwogICAgUVN0cmluZyAmc2V0TnVtKCB1aW50LCBp
bnQgYmFzZT0xMCApOwogICAgUVN0cmluZyAmc2V0TnVtKCBsb25nLCBpbnQgYmFzZT0xMCApOwog
ICAgUVN0cmluZyAmc2V0TnVtKCB1bG9uZywgaW50IGJhc2U9MTAgKTsKICAgIFFTdHJpbmcgJnNl
dE51bSggZmxvYXQsIGNoYXIgZj0nZycsIGludCBwcmVjPTYgKTsKICAgIFFTdHJpbmcgJnNldE51
bSggZG91YmxlLCBjaGFyIGY9J2cnLCBpbnQgcHJlYz02ICk7CgogICAgc3RhdGljIFFTdHJpbmcg
bnVtYmVyKCBsb25nLCBpbnQgYmFzZT0xMCApOwogICAgc3RhdGljIFFTdHJpbmcgbnVtYmVyKCB1
bG9uZywgaW50IGJhc2U9MTApOwogICAgc3RhdGljIFFTdHJpbmcgbnVtYmVyKCBpbnQsIGludCBi
YXNlPTEwICk7CiAgICBzdGF0aWMgUVN0cmluZyBudW1iZXIoIHVpbnQsIGludCBiYXNlPTEwKTsK
ICAgIHN0YXRpYyBRU3RyaW5nIG51bWJlciggZG91YmxlLCBjaGFyIGY9J2cnLCBpbnQgcHJlYz02
ICk7CgogICAgdm9pZCBzZXRFeHBhbmQoIHVpbnQgaW5kZXgsIFFDaGFyIGMgKTsKCiAgICBRU3Ry
aW5nICZvcGVyYXRvcis9KCBjb25zdCBRU3RyaW5nICZzdHIgKTsKICAgIFFTdHJpbmcgJm9wZXJh
dG9yKz0oIFFDaGFyIGMgKTsKICAgIFFTdHJpbmcgJm9wZXJhdG9yKz0oIGNoYXIgYyApOwoKCiAg
ICBRQ2hhciBhdCggdWludCBpICkgY29uc3QKICAgICAgICB7IHJldHVybiBpPGQtPmxlbiA/IGQt
PnVuaWNvZGVbaV0gOiBRQ2hhcjo6bnVsbDsgfQogICAgUUNoYXIgb3BlcmF0b3JbXSggaW50IGkg
KSBjb25zdCB7IHJldHVybiBhdCgodWludClpKTsgfQogICAgUUNoYXJSZWYgYXQoIHVpbnQgaSAp
OwogICAgUUNoYXJSZWYgb3BlcmF0b3JbXSggaW50IGkgKTsKCiAgICBRQ2hhciBjb25zdHJlZih1
aW50IGkpIGNvbnN0CiAgICAgICAgeyByZXR1cm4gYXQoaSk7IH0KICAgIFFDaGFyJiByZWYodWlu
dCBpKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKGQtPmNvdW50IT0xIHx8IGk+PWQtPmxlbikK
ICAgICAgICAgICAgICAgIHN1YmF0KGkpOwogICAgICAgICAgICBkLT5kaXJ0eWFzY2lpPTE7CiAg
ICAgICAgICAgIHJldHVybiBkLT51bmljb2RlW2ldOwogICAgICAgIH0KCiAgICBjb25zdCBRQ2hh
ciogdW5pY29kZSgpIGNvbnN0IHsgcmV0dXJuIGQtPnVuaWNvZGU7IH0KICAgIGNvbnN0IGNoYXIq
IGFzY2lpKCkgY29uc3Q7CiAgICBjb25zdCBjaGFyKiBsYXRpbjEoKSBjb25zdDsKICAgIHN0YXRp
YyBRU3RyaW5nIGZyb21MYXRpbjEoY29uc3QgY2hhciosIGludCBsZW49LTEpOwoKICAgIFFDU3Ry
aW5nIHV0ZjgoKSBjb25zdDsKICAgIHN0YXRpYyBRU3RyaW5nIGZyb21VdGY4KGNvbnN0IGNoYXIq
LCBpbnQgbGVuPS0xKTsKCiAgICBRQ1N0cmluZyBsb2NhbDhCaXQoKSBjb25zdDsKICAgIHN0YXRp
YyBRU3RyaW5nIGZyb21Mb2NhbDhCaXQoY29uc3QgY2hhciosIGludCBsZW49LTEpOwogICAgYm9v
bCBvcGVyYXRvciEoKSBjb25zdDsKCiAgICBvcGVyYXRvciBjb25zdCBjaGFyICooKSBjb25zdCB7
IHJldHVybiBsYXRpbjEoKTsgfQoKCiAgICBRU3RyaW5nICZzZXRVbmljb2RlKCBjb25zdCBRQ2hh
ciogdW5pY29kZSwgdWludCBsZW4gKTsKICAgIFFTdHJpbmcgJnNldFVuaWNvZGVDb2RlcyggY29u
c3QgdXNob3J0KiB1bmljb2RlX2FzX3VzaG9ydHMsIHVpbnQgbGVuICk7CiAgICBRU3RyaW5nICZz
ZXRMYXRpbjEoIGNvbnN0IGNoYXIqLCBpbnQgbGVuPS0xICk7CgogICAgaW50IGNvbXBhcmUoIGNv
bnN0IFFTdHJpbmcmIHMgKSBjb25zdDsKICAgIHN0YXRpYyBpbnQgY29tcGFyZSggY29uc3QgUVN0
cmluZyYgczEsIGNvbnN0IFFTdHJpbmcmIHMyICkKICAgICAgICB7IHJldHVybiBzMS5jb21wYXJl
KHMyKTsgfQoKCiAgICBmcmllbmQgUURhdGFTdHJlYW0gJm9wZXJhdG9yPj4oIFFEYXRhU3RyZWFt
ICYsIFFTdHJpbmcgJiApOwoKCiAgICB2b2lkIGNvbXBvc2UoKTsKICAgIFFDaGFyOjpEaXJlY3Rp
b24gYmFzaWNEaXJlY3Rpb24oKTsKICAgIFFTdHJpbmcgdmlzdWFsKGludCBpbmRleCA9IDAsIGlu
dCBsZW4gPSAtMSk7CgoKICAgIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBsYXRp
bjEoKTsgfQoKCiAgICBib29sIHN0YXJ0c1dpdGgoIGNvbnN0IFFTdHJpbmcmICkgY29uc3Q7Cgpw
cml2YXRlOgogICAgUVN0cmluZyggaW50IHNpemUsIGJvb2wgKTsKCiAgICB2b2lkIGRlcmVmKCk7
CiAgICB2b2lkIHJlYWxfZGV0YWNoKCk7CiAgICB2b2lkIHNldExlbmd0aCggdWludCBwb3MgKTsK
ICAgIHZvaWQgc3ViYXQoIHVpbnQgKTsKICAgIGJvb2wgZmluZEFyZyhpbnQmIHBvcywgaW50JiBs
ZW4pIGNvbnN0OwoKICAgIHN0YXRpYyBRQ2hhciogYXNjaWlUb1VuaWNvZGUoIGNvbnN0IGNoYXIq
LCB1aW50ICogbGVuLCB1aW50IG1heGxlbj0odWludCktMSApOwogICAgc3RhdGljIFFDaGFyKiBh
c2NpaVRvVW5pY29kZSggY29uc3QgUUJ5dGVBcnJheSYsIHVpbnQgKiBsZW4gKTsKICAgIHN0YXRp
YyBjaGFyKiB1bmljb2RlVG9Bc2NpaSggY29uc3QgUUNoYXIqLCB1aW50IGxlbiApOwoKICAgIFFT
dHJpbmdEYXRhICpkOwogICAgc3RhdGljIFFTdHJpbmdEYXRhKiBzaGFyZWRfbnVsbDsKICAgIHN0
YXRpYyBRU3RyaW5nRGF0YSogbWFrZVNoYXJlZE51bGwoKTsKCiAgICBmcmllbmQgY2xhc3MgUUNv
bnN0U3RyaW5nOwogICAgUVN0cmluZyhRU3RyaW5nRGF0YSogZGQsIGJvb2wgKSA6IGQoZGQpIHsg
fQp9OwoKY2xhc3MgUUNoYXJSZWYgewogICAgZnJpZW5kIGNsYXNzIFFTdHJpbmc7CiAgICBRU3Ry
aW5nJiBzOwogICAgdWludCBwOwogICAgUUNoYXJSZWYoUVN0cmluZyogc3RyLCB1aW50IHBvcykg
OiBzKCpzdHIpLCBwKHBvcykgeyB9CgpwdWJsaWM6CgoKCgogICAgdXNob3J0IHVuaWNvZGUoKSBj
b25zdCB7IHJldHVybiBzLmNvbnN0cmVmKHApLnVuaWNvZGUoKTsgfQogICAgY2hhciBsYXRpbjEo
KSBjb25zdCB7IHJldHVybiBzLmNvbnN0cmVmKHApLmxhdGluMSgpOyB9CgoKICAgIFFDaGFyUmVm
IG9wZXJhdG9yPShjaGFyIGMgKSB7IHMucmVmKHApPWM7IHJldHVybiAqdGhpczsgfQogICAgUUNo
YXJSZWYgb3BlcmF0b3I9KHVjaGFyIGMgKSB7IHMucmVmKHApPWM7IHJldHVybiAqdGhpczsgfQog
ICAgUUNoYXJSZWYgb3BlcmF0b3I9KFFDaGFyIGMgKSB7IHMucmVmKHApPWM7IHJldHVybiAqdGhp
czsgfQogICAgUUNoYXJSZWYgb3BlcmF0b3I9KGNvbnN0IFFDaGFyUmVmJiBjICkgeyBzLnJlZihw
KT1jLnVuaWNvZGUoKTsgcmV0dXJuICp0aGlzOyB9CiAgICBRQ2hhclJlZiBvcGVyYXRvcj0odXNo
b3J0IHJjICkgeyBzLnJlZihwKT1yYzsgcmV0dXJuICp0aGlzOyB9CiAgICBRQ2hhclJlZiBvcGVy
YXRvcj0oc2hvcnQgcmMgKSB7IHMucmVmKHApPXJjOyByZXR1cm4gKnRoaXM7IH0KICAgIFFDaGFy
UmVmIG9wZXJhdG9yPSh1aW50IHJjICkgeyBzLnJlZihwKT1yYzsgcmV0dXJuICp0aGlzOyB9CiAg
ICBRQ2hhclJlZiBvcGVyYXRvcj0oaW50IHJjICkgeyBzLnJlZihwKT1yYzsgcmV0dXJuICp0aGlz
OyB9CgogICAgb3BlcmF0b3IgUUNoYXIgKCkgY29uc3QgeyByZXR1cm4gcy5jb25zdHJlZihwKTsg
fQoKCiAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIHVuaWNvZGUoKT09MDsgfQogICAg
Ym9vbCBpc1ByaW50KCkgY29uc3QgeyByZXR1cm4gcy5jb25zdHJlZihwKS5pc1ByaW50KCk7IH0K
ICAgIGJvb2wgaXNQdW5jdCgpIGNvbnN0IHsgcmV0dXJuIHMuY29uc3RyZWYocCkuaXNQdW5jdCgp
OyB9CiAgICBib29sIGlzU3BhY2UoKSBjb25zdCB7IHJldHVybiBzLmNvbnN0cmVmKHApLmlzU3Bh
Y2UoKTsgfQogICAgYm9vbCBpc01hcmsoKSBjb25zdCB7IHJldHVybiBzLmNvbnN0cmVmKHApLmlz
TWFyaygpOyB9CiAgICBib29sIGlzTGV0dGVyKCkgY29uc3QgeyByZXR1cm4gcy5jb25zdHJlZihw
KS5pc0xldHRlcigpOyB9CiAgICBib29sIGlzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gcy5jb25z
dHJlZihwKS5pc051bWJlcigpOyB9CiAgICBib29sIGlzTGV0dGVyT3JOdW1iZXIoKSB7IHJldHVy
biBzLmNvbnN0cmVmKHApLmlzTGV0dGVyT3JOdW1iZXIoKTsgfQogICAgYm9vbCBpc0RpZ2l0KCkg
Y29uc3QgeyByZXR1cm4gcy5jb25zdHJlZihwKS5pc0RpZ2l0KCk7IH0KCiAgICBpbnQgZGlnaXRW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHMuY29uc3RyZWYocCkuZGlnaXRWYWx1ZSgpOyB9CiAgICBR
Q2hhciBsb3dlcigpIHsgcmV0dXJuIHMuY29uc3RyZWYocCkubG93ZXIoKTsgfQogICAgUUNoYXIg
dXBwZXIoKSB7IHJldHVybiBzLmNvbnN0cmVmKHApLnVwcGVyKCk7IH0KCiAgICBRQ2hhcjo6Q2F0
ZWdvcnkgY2F0ZWdvcnkoKSBjb25zdCB7IHJldHVybiBzLmNvbnN0cmVmKHApLmNhdGVnb3J5KCk7
IH0KICAgIFFDaGFyOjpEaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gcy5jb25z
dHJlZihwKS5kaXJlY3Rpb24oKTsgfQogICAgUUNoYXI6OkpvaW5pbmcgam9pbmluZygpIGNvbnN0
IHsgcmV0dXJuIHMuY29uc3RyZWYocCkuam9pbmluZygpOyB9CiAgICBib29sIG1pcnJvcmVkKCkg
Y29uc3QgeyByZXR1cm4gcy5jb25zdHJlZihwKS5taXJyb3JlZCgpOyB9CiAgICBRQ2hhciBtaXJy
b3JlZENoYXIoKSBjb25zdCB7IHJldHVybiBzLmNvbnN0cmVmKHApLm1pcnJvcmVkQ2hhcigpOyB9
CiAgICBRU3RyaW5nIGRlY29tcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBzLmNvbnN0cmVmKHAp
LmRlY29tcG9zaXRpb24oKTsgfQogICAgUUNoYXI6OkRlY29tcG9zaXRpb24gZGVjb21wb3NpdGlv
blRhZygpIGNvbnN0IHsgcmV0dXJuIHMuY29uc3RyZWYocCkuZGVjb21wb3NpdGlvblRhZygpOyB9
CgoKICAgIHVjaGFyIGNlbGwoKSBjb25zdCB7IHJldHVybiBzLmNvbnN0cmVmKHApLmNlbGwoKTsg
fQogICAgdWNoYXIgcm93KCkgY29uc3QgeyByZXR1cm4gcy5jb25zdHJlZihwKS5yb3coKTsgfQoK
fTsKCmlubGluZSBRQ2hhclJlZiBRU3RyaW5nOjphdCggdWludCBpICkgeyByZXR1cm4gUUNoYXJS
ZWYodGhpcyxpKTsgfQppbmxpbmUgUUNoYXJSZWYgUVN0cmluZzo6b3BlcmF0b3JbXSggaW50IGkg
KSB7IHJldHVybiBhdCgodWludClpKTsgfQoKCmNsYXNzIFFDb25zdFN0cmluZyA6IHByaXZhdGUg
UVN0cmluZyB7CnB1YmxpYzoKICAgIFFDb25zdFN0cmluZyggUUNoYXIqIHVuaWNvZGUsIHVpbnQg
bGVuZ3RoICk7CiAgICB+UUNvbnN0U3RyaW5nKCk7CiAgICBjb25zdCBRU3RyaW5nJiBzdHJpbmco
KSBjb25zdCB7IHJldHVybiAqdGhpczsgfQp9OwoKCgoKCgogUURhdGFTdHJlYW0gJm9wZXJhdG9y
PDwoIFFEYXRhU3RyZWFtICYsIGNvbnN0IFFTdHJpbmcgJiApOwogUURhdGFTdHJlYW0gJm9wZXJh
dG9yPj4oIFFEYXRhU3RyZWFtICYsIFFTdHJpbmcgJiApOwojIDY0MSAiL3Vzci9zcmMvcGFja2Fn
ZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xc3RyaW5nLmgiCmlubGluZSBRU3RyaW5nOjpRU3Ry
aW5nKCkgOgogICAgZChzaGFyZWRfbnVsbCA/IHNoYXJlZF9udWxsIDogbWFrZVNoYXJlZE51bGwo
KSkKewogICAgZC0+cmVmKCk7Cn0KCmlubGluZSBRU3RyaW5nOjp+UVN0cmluZygpCnsKICAgIGlm
ICggZC0+ZGVyZWYoKSApIHsKICAgICAgICBpZiAoIGQgPT0gc2hhcmVkX251bGwgKQogICAgICAg
ICAgICBzaGFyZWRfbnVsbCA9IDA7CiAgICAgICAgZC0+ZGVsZXRlU2VsZigpOwogICAgfQp9Cgpp
bmxpbmUgUVN0cmluZyAmUVN0cmluZzo6b3BlcmF0b3I9KCBRQ2hhciBjICkKeyByZXR1cm4gKnRo
aXMgPSBRU3RyaW5nKGMpOyB9CgppbmxpbmUgUVN0cmluZyAmUVN0cmluZzo6b3BlcmF0b3I9KCBj
aGFyIGMgKQp7IHJldHVybiAqdGhpcyA9IFFTdHJpbmcoUUNoYXIoYykpOyB9CgppbmxpbmUgYm9v
bCBRU3RyaW5nOjppc051bGwoKSBjb25zdAp7IHJldHVybiB1bmljb2RlKCkgPT0gMDsgfQoKaW5s
aW5lIGJvb2wgUVN0cmluZzo6b3BlcmF0b3IhKCkgY29uc3QKeyByZXR1cm4gaXNOdWxsKCk7IH0K
CmlubGluZSB1aW50IFFTdHJpbmc6Omxlbmd0aCgpIGNvbnN0CnsgcmV0dXJuIGQtPmxlbjsgfQoK
aW5saW5lIGJvb2wgUVN0cmluZzo6aXNFbXB0eSgpIGNvbnN0CnsgcmV0dXJuIGxlbmd0aCgpID09
IDA7IH0KCmlubGluZSBRU3RyaW5nIFFTdHJpbmc6OmNvcHkoKSBjb25zdAp7IHJldHVybiBRU3Ry
aW5nKCAqdGhpcyApOyB9CgppbmxpbmUgUVN0cmluZyAmUVN0cmluZzo6cHJlcGVuZCggY29uc3Qg
UVN0cmluZyAmIHMgKQp7IHJldHVybiBpbnNlcnQoMCxzKTsgfQoKaW5saW5lIFFTdHJpbmcgJlFT
dHJpbmc6OnByZXBlbmQoIFFDaGFyIGMgKQp7IHJldHVybiBpbnNlcnQoMCxjKTsgfQoKaW5saW5l
IFFTdHJpbmcgJlFTdHJpbmc6OnByZXBlbmQoIGNoYXIgYyApCnsgcmV0dXJuIGluc2VydCgwLGMp
OyB9CgppbmxpbmUgUVN0cmluZyAmUVN0cmluZzo6YXBwZW5kKCBjb25zdCBRU3RyaW5nICYgcyAp
CnsgcmV0dXJuIG9wZXJhdG9yKz0ocyk7IH0KCmlubGluZSBRU3RyaW5nICZRU3RyaW5nOjphcHBl
bmQoIFFDaGFyIGMgKQp7IHJldHVybiBvcGVyYXRvcis9KGMpOyB9CgppbmxpbmUgUVN0cmluZyAm
UVN0cmluZzo6YXBwZW5kKCBjaGFyIGMgKQp7IHJldHVybiBvcGVyYXRvcis9KGMpOyB9Cgppbmxp
bmUgUVN0cmluZyAmUVN0cmluZzo6c2V0TnVtKCBzaG9ydCBuLCBpbnQgYmFzZSApCnsgcmV0dXJu
IHNldE51bSgobG9uZyluLCBiYXNlKTsgfQoKaW5saW5lIFFTdHJpbmcgJlFTdHJpbmc6OnNldE51
bSggdXNob3J0IG4sIGludCBiYXNlICkKeyByZXR1cm4gc2V0TnVtKCh1bG9uZyluLCBiYXNlKTsg
fQoKaW5saW5lIFFTdHJpbmcgJlFTdHJpbmc6OnNldE51bSggaW50IG4sIGludCBiYXNlICkKeyBy
ZXR1cm4gc2V0TnVtKChsb25nKW4sIGJhc2UpOyB9CgppbmxpbmUgUVN0cmluZyAmUVN0cmluZzo6
c2V0TnVtKCB1aW50IG4sIGludCBiYXNlICkKeyByZXR1cm4gc2V0TnVtKCh1bG9uZyluLCBiYXNl
KTsgfQoKaW5saW5lIFFTdHJpbmcgJlFTdHJpbmc6OnNldE51bSggZmxvYXQgbiwgY2hhciBmLCBp
bnQgcHJlYyApCnsgcmV0dXJuIHNldE51bSgoZG91YmxlKW4sZixwcmVjKTsgfQoKaW5saW5lIFFT
dHJpbmcgUVN0cmluZzo6YXJnKGludCBhLCBpbnQgZmllbGR3aWR0aCwgaW50IGJhc2UpIGNvbnN0
CnsgcmV0dXJuIGFyZygobG9uZylhLCBmaWVsZHdpZHRoLCBiYXNlKTsgfQoKaW5saW5lIFFTdHJp
bmcgUVN0cmluZzo6YXJnKHVpbnQgYSwgaW50IGZpZWxkd2lkdGgsIGludCBiYXNlKSBjb25zdAp7
IHJldHVybiBhcmcoKHVsb25nKWEsIGZpZWxkd2lkdGgsIGJhc2UpOyB9CgppbmxpbmUgUVN0cmlu
ZyBRU3RyaW5nOjphcmcoc2hvcnQgYSwgaW50IGZpZWxkd2lkdGgsIGludCBiYXNlKSBjb25zdAp7
IHJldHVybiBhcmcoKGxvbmcpYSwgZmllbGR3aWR0aCwgYmFzZSk7IH0KCmlubGluZSBRU3RyaW5n
IFFTdHJpbmc6OmFyZyh1c2hvcnQgYSwgaW50IGZpZWxkd2lkdGgsIGludCBiYXNlKSBjb25zdAp7
IHJldHVybiBhcmcoKHVsb25nKWEsIGZpZWxkd2lkdGgsIGJhc2UpOyB9CgppbmxpbmUgaW50IFFT
dHJpbmc6OmZpbmQoIGNoYXIgYywgaW50IGluZGV4LCBib29sIGNzICkgY29uc3QKeyByZXR1cm4g
ZmluZChRQ2hhcihjKSwgaW5kZXgsIGNzKTsgfQoKaW5saW5lIGludCBRU3RyaW5nOjpmaW5kUmV2
KCBjaGFyIGMsIGludCBpbmRleCwgYm9vbCBjcykgY29uc3QKeyByZXR1cm4gZmluZFJldiggUUNo
YXIoYyksIGluZGV4LCBjcyApOyB9CgoKCmlubGluZSBpbnQgUVN0cmluZzo6ZmluZCggY29uc3Qg
Y2hhciogc3RyLCBpbnQgaW5kZXggKSBjb25zdAp7IHJldHVybiBmaW5kKFFTdHJpbmc6OmZyb21M
YXRpbjEoc3RyKSwgaW5kZXgpOyB9CgppbmxpbmUgaW50IFFTdHJpbmc6OmZpbmRSZXYoIGNvbnN0
IGNoYXIqIHN0ciwgaW50IGluZGV4ICkgY29uc3QKeyByZXR1cm4gZmluZFJldihRU3RyaW5nOjpm
cm9tTGF0aW4xKHN0ciksIGluZGV4KTsgfQoKCgoKCgoKIGJvb2wgb3BlcmF0b3IhPSggY29uc3Qg
UVN0cmluZyAmczEsIGNvbnN0IFFTdHJpbmcgJnMyICk7CiBib29sIG9wZXJhdG9yPCggY29uc3Qg
UVN0cmluZyAmczEsIGNvbnN0IFFTdHJpbmcgJnMyICk7CiBib29sIG9wZXJhdG9yPD0oIGNvbnN0
IFFTdHJpbmcgJnMxLCBjb25zdCBRU3RyaW5nICZzMiApOwogYm9vbCBvcGVyYXRvcj09KCBjb25z
dCBRU3RyaW5nICZzMSwgY29uc3QgUVN0cmluZyAmczIgKTsKIGJvb2wgb3BlcmF0b3I+KCBjb25z
dCBRU3RyaW5nICZzMSwgY29uc3QgUVN0cmluZyAmczIgKTsKIGJvb2wgb3BlcmF0b3I+PSggY29u
c3QgUVN0cmluZyAmczEsIGNvbnN0IFFTdHJpbmcgJnMyICk7CgogYm9vbCBvcGVyYXRvciE9KCBj
b25zdCBRU3RyaW5nICZzMSwgY29uc3QgY2hhciAqczIgKTsKIGJvb2wgb3BlcmF0b3I8KCBjb25z
dCBRU3RyaW5nICZzMSwgY29uc3QgY2hhciAqczIgKTsKIGJvb2wgb3BlcmF0b3I8PSggY29uc3Qg
UVN0cmluZyAmczEsIGNvbnN0IGNoYXIgKnMyICk7CiBib29sIG9wZXJhdG9yPT0oIGNvbnN0IFFT
dHJpbmcgJnMxLCBjb25zdCBjaGFyICpzMiApOwogYm9vbCBvcGVyYXRvcj4oIGNvbnN0IFFTdHJp
bmcgJnMxLCBjb25zdCBjaGFyICpzMiApOwogYm9vbCBvcGVyYXRvcj49KCBjb25zdCBRU3RyaW5n
ICZzMSwgY29uc3QgY2hhciAqczIgKTsKIGJvb2wgb3BlcmF0b3IhPSggY29uc3QgY2hhciAqczEs
IGNvbnN0IFFTdHJpbmcgJnMyICk7CiBib29sIG9wZXJhdG9yPCggY29uc3QgY2hhciAqczEsIGNv
bnN0IFFTdHJpbmcgJnMyICk7CiBib29sIG9wZXJhdG9yPD0oIGNvbnN0IGNoYXIgKnMxLCBjb25z
dCBRU3RyaW5nICZzMiApOwogYm9vbCBvcGVyYXRvcj09KCBjb25zdCBjaGFyICpzMSwgY29uc3Qg
UVN0cmluZyAmczIgKTsKCiBib29sIG9wZXJhdG9yPj0oIGNvbnN0IGNoYXIgKnMxLCBjb25zdCBR
U3RyaW5nICZzMiApOwoKCiBpbmxpbmUgUVN0cmluZyBvcGVyYXRvcisoIGNvbnN0IFFTdHJpbmcg
JnMxLCBjb25zdCBRU3RyaW5nICZzMiApCnsKICAgIFFTdHJpbmcgdG1wKCBzMSApOwogICAgdG1w
ICs9IHMyOwogICAgcmV0dXJuIHRtcDsKfQoKCiBpbmxpbmUgUVN0cmluZyBvcGVyYXRvcisoIGNv
bnN0IFFTdHJpbmcgJnMxLCBjb25zdCBjaGFyICpzMiApCnsKICAgIFFTdHJpbmcgdG1wKCBzMSAp
OwogICAgdG1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoczIpOwogICAgcmV0dXJuIHRtcDsKfQoK
IGlubGluZSBRU3RyaW5nIG9wZXJhdG9yKyggY29uc3QgY2hhciAqczEsIGNvbnN0IFFTdHJpbmcg
JnMyICkKewogICAgUVN0cmluZyB0bXAgPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCBzMSApOwogICAg
dG1wICs9IHMyOwogICAgcmV0dXJuIHRtcDsKfQoKCiBpbmxpbmUgUVN0cmluZyBvcGVyYXRvciso
IGNvbnN0IFFTdHJpbmcgJnMxLCBRQ2hhciBjMiApCnsKICAgIFFTdHJpbmcgdG1wKCBzMSApOwog
ICAgdG1wICs9IGMyOwogICAgcmV0dXJuIHRtcDsKfQoKIGlubGluZSBRU3RyaW5nIG9wZXJhdG9y
KyggY29uc3QgUVN0cmluZyAmczEsIGNoYXIgYzIgKQp7CiAgICBRU3RyaW5nIHRtcCggczEgKTsK
ICAgIHRtcCArPSBjMjsKICAgIHJldHVybiB0bXA7Cn0KCiBpbmxpbmUgUVN0cmluZyBvcGVyYXRv
cisoIFFDaGFyIGMxLCBjb25zdCBRU3RyaW5nICZzMiApCnsKICAgIFFTdHJpbmcgdG1wOwogICAg
dG1wICs9IGMxOwogICAgdG1wICs9IHMyOwogICAgcmV0dXJuIHRtcDsKfQoKIGlubGluZSBRU3Ry
aW5nIG9wZXJhdG9yKyggY2hhciBjMSwgY29uc3QgUVN0cmluZyAmczIgKQp7CiAgICBRU3RyaW5n
IHRtcDsKICAgIHRtcCArPSBjMTsKICAgIHRtcCArPSBzMjsKICAgIHJldHVybiB0bXA7Cn0KIyA0
NSAia2VybmVsL3F3aW5kb3dkZWZzLmgiIDIKIyAxICJrZXJuZWwvcW5hbWVzcGFjZS5oIiAxCiMg
NDYgImtlcm5lbC9xbmFtZXNwYWNlLmgiCmNsYXNzIFFDb2xvcjsKY2xhc3MgUUN1cnNvcjsKCgpj
bGFzcyBRdCB7CnB1YmxpYzoKICAgIHN0YXRpYyBjb25zdCBRQ29sb3IgJiBjb2xvcjA7CiAgICBz
dGF0aWMgY29uc3QgUUNvbG9yICYgY29sb3IxOwogICAgc3RhdGljIGNvbnN0IFFDb2xvciAmIGJs
YWNrOwogICAgc3RhdGljIGNvbnN0IFFDb2xvciAmIHdoaXRlOwogICAgc3RhdGljIGNvbnN0IFFD
b2xvciAmIGRhcmtHcmF5OwogICAgc3RhdGljIGNvbnN0IFFDb2xvciAmIGdyYXk7CiAgICBzdGF0
aWMgY29uc3QgUUNvbG9yICYgbGlnaHRHcmF5OwogICAgc3RhdGljIGNvbnN0IFFDb2xvciAmIHJl
ZDsKICAgIHN0YXRpYyBjb25zdCBRQ29sb3IgJiBncmVlbjsKICAgIHN0YXRpYyBjb25zdCBRQ29s
b3IgJiBibHVlOwogICAgc3RhdGljIGNvbnN0IFFDb2xvciAmIGN5YW47CiAgICBzdGF0aWMgY29u
c3QgUUNvbG9yICYgbWFnZW50YTsKICAgIHN0YXRpYyBjb25zdCBRQ29sb3IgJiB5ZWxsb3c7CiAg
ICBzdGF0aWMgY29uc3QgUUNvbG9yICYgZGFya1JlZDsKICAgIHN0YXRpYyBjb25zdCBRQ29sb3Ig
JiBkYXJrR3JlZW47CiAgICBzdGF0aWMgY29uc3QgUUNvbG9yICYgZGFya0JsdWU7CiAgICBzdGF0
aWMgY29uc3QgUUNvbG9yICYgZGFya0N5YW47CiAgICBzdGF0aWMgY29uc3QgUUNvbG9yICYgZGFy
a01hZ2VudGE7CiAgICBzdGF0aWMgY29uc3QgUUNvbG9yICYgZGFya1llbGxvdzsKCgogICAgZW51
bSBCdXR0b25TdGF0ZSB7CiAgICAgICAgTm9CdXR0b24gPSAweDAwMDAsCiAgICAgICAgTGVmdEJ1
dHRvbiA9IDB4MDAwMSwKICAgICAgICBSaWdodEJ1dHRvbiA9IDB4MDAwMiwKICAgICAgICBNaWRC
dXR0b24gPSAweDAwMDQsCiAgICAgICAgTW91c2VCdXR0b25NYXNrID0gMHgwMDA3LAogICAgICAg
IFNoaWZ0QnV0dG9uID0gMHgwMDA4LAogICAgICAgIENvbnRyb2xCdXR0b24gPSAweDAwMTAsCiAg
ICAgICAgQWx0QnV0dG9uID0gMHgwMDIwLAogICAgICAgIEtleUJ1dHRvbk1hc2sgPSAweDAwMzgs
CiAgICAgICAgS2V5cGFkID0gMHg0MDAwCiAgICB9OwoKCiAgICBlbnVtIE9yaWVudGF0aW9uIHsK
ICAgICAgICBIb3Jpem9udGFsLAogICAgICAgIFZlcnRpY2FsCiAgICB9OwoKCgoKICAgIGVudW0g
QWxpZ25tZW50RmxhZ3MgewogICAgICAgIEFsaWduTGVmdCA9IDB4MDAwMSwKICAgICAgICBBbGln
blJpZ2h0ID0gMHgwMDAyLAogICAgICAgIEFsaWduSENlbnRlciA9IDB4MDAwNCwKICAgICAgICBB
bGlnblRvcCA9IDB4MDAwOCwKICAgICAgICBBbGlnbkJvdHRvbSA9IDB4MDAxMCwKICAgICAgICBB
bGlnblZDZW50ZXIgPSAweDAwMjAsCiAgICAgICAgQWxpZ25DZW50ZXIgPSBBbGlnblZDZW50ZXIg
fCBBbGlnbkhDZW50ZXIsCgogICAgICAgIFNpbmdsZUxpbmUgPSAweDAwNDAsCiAgICAgICAgRG9u
dENsaXAgPSAweDAwODAsCiAgICAgICAgRXhwYW5kVGFicyA9IDB4MDEwMCwKICAgICAgICBTaG93
UHJlZml4ID0gMHgwMjAwLAogICAgICAgIFdvcmRCcmVhayA9IDB4MDQwMCwKICAgICAgICBEb250
UHJpbnQgPSAweDEwMDAKICAgIH07CgoKICAgIGVudW0gV2lkZ2V0U3RhdGUgewogICAgICAgIFdT
dGF0ZV9DcmVhdGVkID0gMHgwMDAwMDAwMSwKICAgICAgICBXU3RhdGVfRGlzYWJsZWQgPSAweDAw
MDAwMDAyLAogICAgICAgIFdTdGF0ZV9WaXNpYmxlID0gMHgwMDAwMDAwNCwKICAgICAgICBXU3Rh
dGVfRm9yY2VIaWRlID0gMHgwMDAwMDAwOCwKICAgICAgICBXU3RhdGVfT3duQ3Vyc29yID0gMHgw
MDAwMDAxMCwKICAgICAgICBXU3RhdGVfTW91c2VUcmFja2luZyA9IDB4MDAwMDAwMjAsCiAgICAg
ICAgV1N0YXRlX0NvbXByZXNzS2V5cyA9IDB4MDAwMDAwNDAsCiAgICAgICAgV1N0YXRlX0Jsb2Nr
VXBkYXRlcyA9IDB4MDAwMDAwODAsCiAgICAgICAgV1N0YXRlX0luUGFpbnRFdmVudCA9IDB4MDAw
MDAxMDAsCiAgICAgICAgV1N0YXRlX1JlcGFyZW50ZWQgPSAweDAwMDAwMjAwLAogICAgICAgIFdT
dGF0ZV9Db25maWdQZW5kaW5nID0gMHgwMDAwMDQwMCwKICAgICAgICBXU3RhdGVfUmVzaXplZCA9
IDB4MDAwMDA4MDAsCiAgICAgICAgV1N0YXRlX0F1dG9NYXNrID0gMHgwMDAwMTAwMCwKICAgICAg
ICBXU3RhdGVfUG9saXNoZWQgPSAweDAwMDAyMDAwLAogICAgICAgIFdTdGF0ZV9ETkQgPSAweDAw
MDA0MDAwLAogICAgICAgIFdTdGF0ZV9Nb2RhbCA9IDB4MDAwMDgwMDAsCiAgICAgICAgV1N0YXRl
X1Jlc2VydmVkMSA9IDB4MDAwMTAwMDAsCiAgICAgICAgV1N0YXRlX1Jlc2VydmVkMiA9IDB4MDAw
MjAwMDAsCiAgICAgICAgV1N0YXRlX1Jlc2VydmVkMyA9IDB4MDAwNDAwMDAsCiAgICAgICAgV1N0
YXRlX01heGltaXplZCA9IDB4MDAwODAwMDAsCiAgICAgICAgV1N0YXRlX1RyYW5zbGF0ZUJhY2tn
cm91bmQgPSAweDAwMTAwMDAwLAogICAgICAgIFdTdGF0ZV9Gb3JjZURpc2FibGVkID0gMHgwMDIw
MDAwMCwKICAgICAgICBXU3RhdGVfRXhwb3NlZCA9IDB4MDA0MDAwMDAKICAgIH07CgoKICAgIHR5
cGVkZWYgdWludCBXRmxhZ3M7CgoKICAgIGVudW0gV2lkZ2V0RmxhZ3MgewogICAgICAgIFdUeXBl
X1RvcExldmVsID0gMHgwMDAwMDAwMSwKICAgICAgICBXVHlwZV9Nb2RhbCA9IDB4MDAwMDAwMDIs
CiAgICAgICAgV1R5cGVfUG9wdXAgPSAweDAwMDAwMDA0LAogICAgICAgIFdUeXBlX0Rlc2t0b3Ag
PSAweDAwMDAwMDA4LAogICAgICAgIFdUeXBlX01hc2sgPSAweDAwMDAwMDBmLAoKICAgICAgICBX
U3R5bGVfQ3VzdG9taXplID0gMHgwMDAwMDAxMCwKICAgICAgICBXU3R5bGVfTm9ybWFsQm9yZGVy
ID0gMHgwMDAwMDAyMCwKICAgICAgICBXU3R5bGVfRGlhbG9nQm9yZGVyID0gMHgwMDAwMDA0MCwK
ICAgICAgICBXU3R5bGVfTm9Cb3JkZXIgPSAweDAwMDAwMDAwLAogICAgICAgIFdTdHlsZV9UaXRs
ZSA9IDB4MDAwMDAwODAsCiAgICAgICAgV1N0eWxlX1N5c01lbnUgPSAweDAwMDAwMTAwLAogICAg
ICAgIFdTdHlsZV9NaW5pbWl6ZSA9IDB4MDAwMDAyMDAsCiAgICAgICAgV1N0eWxlX01heGltaXpl
ID0gMHgwMDAwMDQwMCwKICAgICAgICBXU3R5bGVfTWluTWF4ID0gV1N0eWxlX01pbmltaXplIHwg
V1N0eWxlX01heGltaXplLAogICAgICAgIFdTdHlsZV9Ub29sID0gMHgwMDAwMDgwMCwKICAgICAg
ICBXU3R5bGVfU3RheXNPblRvcCA9IDB4MDAwMDEwMDAsCiAgICAgICAgV1N0eWxlX0RpYWxvZyA9
IDB4MDAwMDIwMDAsCiAgICAgICAgV1N0eWxlX0NvbnRleHRIZWxwID0gMHgwMDAwNDAwMCwKICAg
ICAgICBXU3R5bGVfTm9Cb3JkZXJFeCA9IDB4MDAwMDgwMDAsCiAgICAgICAgV1N0eWxlX01hc2sg
PSAweDAwMDBmZmYwLAoKICAgICAgICBXRGVzdHJ1Y3RpdmVDbG9zZSA9IDB4MDAwMTAwMDAsCiAg
ICAgICAgV1BhaW50RGVza3RvcCA9IDB4MDAwMjAwMDAsCiAgICAgICAgV1BhaW50VW5jbGlwcGVk
ID0gMHgwMDA0MDAwMCwKICAgICAgICBXUGFpbnRDbGV2ZXIgPSAweDAwMDgwMDAwLAogICAgICAg
IFdSZXNpemVOb0VyYXNlID0gMHgwMDEwMDAwMCwKICAgICAgICBXTW91c2VOb01hc2sgPSAweDAw
MjAwMDAwLAogICAgICAgIFdOb3J0aFdlc3RHcmF2aXR5ID0gMHgwMDQwMDAwMCwKICAgICAgICBX
UmVwYWludE5vRXJhc2UgPSAweDAwODAwMDAwLAogICAgICAgIFdYMTFCeXBhc3NXTSA9IDB4MDEw
MDAwMDAsCiAgICAgICAgV0dyb3VwTGVhZGVyID0gMHgwMjAwMDAwMAoKICAgIH07CgoKCgogICAg
ZW51bSBJbWFnZUNvbnZlcnNpb25GbGFncyB7CiAgICAgICAgQ29sb3JNb2RlX01hc2sgPSAweDAw
MDAwMDAzLAogICAgICAgIEF1dG9Db2xvciA9IDB4MDAwMDAwMDAsCiAgICAgICAgQ29sb3JPbmx5
ID0gMHgwMDAwMDAwMywKICAgICAgICBNb25vT25seSA9IDB4MDAwMDAwMDIsCgoKICAgICAgICBB
bHBoYURpdGhlcl9NYXNrID0gMHgwMDAwMDAwYywKICAgICAgICBUaHJlc2hvbGRBbHBoYURpdGhl
ciA9IDB4MDAwMDAwMDAsCiAgICAgICAgT3JkZXJlZEFscGhhRGl0aGVyID0gMHgwMDAwMDAwNCwK
ICAgICAgICBEaWZmdXNlQWxwaGFEaXRoZXIgPSAweDAwMDAwMDA4LAogICAgICAgIE5vQWxwaGEg
PSAweDAwMDAwMDBjLAoKICAgICAgICBEaXRoZXJfTWFzayA9IDB4MDAwMDAwMzAsCiAgICAgICAg
RGlmZnVzZURpdGhlciA9IDB4MDAwMDAwMDAsCiAgICAgICAgT3JkZXJlZERpdGhlciA9IDB4MDAw
MDAwMTAsCiAgICAgICAgVGhyZXNob2xkRGl0aGVyID0gMHgwMDAwMDAyMCwKCgogICAgICAgIERp
dGhlck1vZGVfTWFzayA9IDB4MDAwMDAwYzAsCiAgICAgICAgQXV0b0RpdGhlciA9IDB4MDAwMDAw
MDAsCiAgICAgICAgUHJlZmVyRGl0aGVyID0gMHgwMDAwMDA0MCwKICAgICAgICBBdm9pZERpdGhl
ciA9IDB4MDAwMDAwODAKICAgIH07CgogICAgZW51bSBCR01vZGUgewogICAgICAgIFRyYW5zcGFy
ZW50TW9kZSwKICAgICAgICBPcGFxdWVNb2RlCiAgICB9OwoKICAgIGVudW0gUGFpbnRVbml0IHsK
ICAgICAgICBQaXhlbFVuaXQsCiAgICAgICAgTG9NZXRyaWNVbml0LAogICAgICAgIEhpTWV0cmlj
VW5pdCwKICAgICAgICBMb0VuZ2xpc2hVbml0LAogICAgICAgIEhpRW5nbGlzaFVuaXQsCiAgICAg
ICAgVHdpcHNVbml0CiAgICB9OwoKICAgIGVudW0gR1VJU3R5bGUgewogICAgICAgIE1hY1N0eWxl
LAogICAgICAgIFdpbmRvd3NTdHlsZSwKICAgICAgICBXaW4zU3R5bGUsCiAgICAgICAgUE1TdHls
ZSwKICAgICAgICBNb3RpZlN0eWxlCiAgICB9OwoKICAgIGVudW0gTW9kaWZpZXIgewogICAgICAg
IFNISUZUID0gMHgwMDIwMDAwMCwKICAgICAgICBDVFJMID0gMHgwMDQwMDAwMCwKICAgICAgICBB
TFQgPSAweDAwODAwMDAwLAogICAgICAgIE1PRElGSUVSX01BU0sgPSAweDAwZTAwMDAwLAogICAg
ICAgIFVOSUNPREVfQUNDRUwgPSAweDEwMDAwMDAwLAoKICAgICAgICBBU0NJSV9BQ0NFTCA9IFVO
SUNPREVfQUNDRUwKICAgIH07CgogICAgZW51bSBLZXkgewogICAgICAgIEtleV9Fc2NhcGUgPSAw
eDEwMDAsCiAgICAgICAgS2V5X1RhYiA9IDB4MTAwMSwKICAgICAgICBLZXlfQmFja3RhYiA9IDB4
MTAwMiwgS2V5X0JhY2tUYWIgPSBLZXlfQmFja3RhYiwKICAgICAgICBLZXlfQmFja3NwYWNlID0g
MHgxMDAzLCBLZXlfQmFja1NwYWNlID0gS2V5X0JhY2tzcGFjZSwKICAgICAgICBLZXlfUmV0dXJu
ID0gMHgxMDA0LAogICAgICAgIEtleV9FbnRlciA9IDB4MTAwNSwKICAgICAgICBLZXlfSW5zZXJ0
ID0gMHgxMDA2LAogICAgICAgIEtleV9EZWxldGUgPSAweDEwMDcsCiAgICAgICAgS2V5X1BhdXNl
ID0gMHgxMDA4LAogICAgICAgIEtleV9QcmludCA9IDB4MTAwOSwKICAgICAgICBLZXlfU3lzUmVx
ID0gMHgxMDBhLAogICAgICAgIEtleV9Ib21lID0gMHgxMDEwLAogICAgICAgIEtleV9FbmQgPSAw
eDEwMTEsCiAgICAgICAgS2V5X0xlZnQgPSAweDEwMTIsCiAgICAgICAgS2V5X1VwID0gMHgxMDEz
LAogICAgICAgIEtleV9SaWdodCA9IDB4MTAxNCwKICAgICAgICBLZXlfRG93biA9IDB4MTAxNSwK
ICAgICAgICBLZXlfUHJpb3IgPSAweDEwMTYsIEtleV9QYWdlVXAgPSBLZXlfUHJpb3IsCiAgICAg
ICAgS2V5X05leHQgPSAweDEwMTcsIEtleV9QYWdlRG93biA9IEtleV9OZXh0LAogICAgICAgIEtl
eV9TaGlmdCA9IDB4MTAyMCwKICAgICAgICBLZXlfQ29udHJvbCA9IDB4MTAyMSwKICAgICAgICBL
ZXlfTWV0YSA9IDB4MTAyMiwKICAgICAgICBLZXlfQWx0ID0gMHgxMDIzLAogICAgICAgIEtleV9D
YXBzTG9jayA9IDB4MTAyNCwKICAgICAgICBLZXlfTnVtTG9jayA9IDB4MTAyNSwKICAgICAgICBL
ZXlfU2Nyb2xsTG9jayA9IDB4MTAyNiwKICAgICAgICBLZXlfRjEgPSAweDEwMzAsCiAgICAgICAg
S2V5X0YyID0gMHgxMDMxLAogICAgICAgIEtleV9GMyA9IDB4MTAzMiwKICAgICAgICBLZXlfRjQg
PSAweDEwMzMsCiAgICAgICAgS2V5X0Y1ID0gMHgxMDM0LAogICAgICAgIEtleV9GNiA9IDB4MTAz
NSwKICAgICAgICBLZXlfRjcgPSAweDEwMzYsCiAgICAgICAgS2V5X0Y4ID0gMHgxMDM3LAogICAg
ICAgIEtleV9GOSA9IDB4MTAzOCwKICAgICAgICBLZXlfRjEwID0gMHgxMDM5LAogICAgICAgIEtl
eV9GMTEgPSAweDEwM2EsCiAgICAgICAgS2V5X0YxMiA9IDB4MTAzYiwKICAgICAgICBLZXlfRjEz
ID0gMHgxMDNjLAogICAgICAgIEtleV9GMTQgPSAweDEwM2QsCiAgICAgICAgS2V5X0YxNSA9IDB4
MTAzZSwKICAgICAgICBLZXlfRjE2ID0gMHgxMDNmLAogICAgICAgIEtleV9GMTcgPSAweDEwNDAs
CiAgICAgICAgS2V5X0YxOCA9IDB4MTA0MSwKICAgICAgICBLZXlfRjE5ID0gMHgxMDQyLAogICAg
ICAgIEtleV9GMjAgPSAweDEwNDMsCiAgICAgICAgS2V5X0YyMSA9IDB4MTA0NCwKICAgICAgICBL
ZXlfRjIyID0gMHgxMDQ1LAogICAgICAgIEtleV9GMjMgPSAweDEwNDYsCiAgICAgICAgS2V5X0Yy
NCA9IDB4MTA0NywKICAgICAgICBLZXlfRjI1ID0gMHgxMDQ4LAogICAgICAgIEtleV9GMjYgPSAw
eDEwNDksCiAgICAgICAgS2V5X0YyNyA9IDB4MTA0YSwKICAgICAgICBLZXlfRjI4ID0gMHgxMDRi
LAogICAgICAgIEtleV9GMjkgPSAweDEwNGMsCiAgICAgICAgS2V5X0YzMCA9IDB4MTA0ZCwKICAg
ICAgICBLZXlfRjMxID0gMHgxMDRlLAogICAgICAgIEtleV9GMzIgPSAweDEwNGYsCiAgICAgICAg
S2V5X0YzMyA9IDB4MTA1MCwKICAgICAgICBLZXlfRjM0ID0gMHgxMDUxLAogICAgICAgIEtleV9G
MzUgPSAweDEwNTIsCiAgICAgICAgS2V5X1N1cGVyX0wgPSAweDEwNTMsCiAgICAgICAgS2V5X1N1
cGVyX1IgPSAweDEwNTQsCiAgICAgICAgS2V5X01lbnUgPSAweDEwNTUsCiAgICAgICAgS2V5X0h5
cGVyX0wgPSAweDEwNTYsCiAgICAgICAgS2V5X0h5cGVyX1IgPSAweDEwNTcsCiAgICAgICAgS2V5
X0hlbHAgPSAweDEwNTgsCiAgICAgICAgS2V5X1NwYWNlID0gMHgyMCwKICAgICAgICBLZXlfQW55
ID0gS2V5X1NwYWNlLAogICAgICAgIEtleV9FeGNsYW0gPSAweDIxLAogICAgICAgIEtleV9RdW90
ZURibCA9IDB4MjIsCiAgICAgICAgS2V5X051bWJlclNpZ24gPSAweDIzLAogICAgICAgIEtleV9E
b2xsYXIgPSAweDI0LAogICAgICAgIEtleV9QZXJjZW50ID0gMHgyNSwKICAgICAgICBLZXlfQW1w
ZXJzYW5kID0gMHgyNiwKICAgICAgICBLZXlfQXBvc3Ryb3BoZSA9IDB4MjcsCiAgICAgICAgS2V5
X1BhcmVuTGVmdCA9IDB4MjgsCiAgICAgICAgS2V5X1BhcmVuUmlnaHQgPSAweDI5LAogICAgICAg
IEtleV9Bc3RlcmlzayA9IDB4MmEsCiAgICAgICAgS2V5X1BsdXMgPSAweDJiLAogICAgICAgIEtl
eV9Db21tYSA9IDB4MmMsCiAgICAgICAgS2V5X01pbnVzID0gMHgyZCwKICAgICAgICBLZXlfUGVy
aW9kID0gMHgyZSwKICAgICAgICBLZXlfU2xhc2ggPSAweDJmLAogICAgICAgIEtleV8wID0gMHgz
MCwKICAgICAgICBLZXlfMSA9IDB4MzEsCiAgICAgICAgS2V5XzIgPSAweDMyLAogICAgICAgIEtl
eV8zID0gMHgzMywKICAgICAgICBLZXlfNCA9IDB4MzQsCiAgICAgICAgS2V5XzUgPSAweDM1LAog
ICAgICAgIEtleV82ID0gMHgzNiwKICAgICAgICBLZXlfNyA9IDB4MzcsCiAgICAgICAgS2V5Xzgg
PSAweDM4LAogICAgICAgIEtleV85ID0gMHgzOSwKICAgICAgICBLZXlfQ29sb24gPSAweDNhLAog
ICAgICAgIEtleV9TZW1pY29sb24gPSAweDNiLAogICAgICAgIEtleV9MZXNzID0gMHgzYywKICAg
ICAgICBLZXlfRXF1YWwgPSAweDNkLAogICAgICAgIEtleV9HcmVhdGVyID0gMHgzZSwKICAgICAg
ICBLZXlfUXVlc3Rpb24gPSAweDNmLAogICAgICAgIEtleV9BdCA9IDB4NDAsCiAgICAgICAgS2V5
X0EgPSAweDQxLAogICAgICAgIEtleV9CID0gMHg0MiwKICAgICAgICBLZXlfQyA9IDB4NDMsCiAg
ICAgICAgS2V5X0QgPSAweDQ0LAogICAgICAgIEtleV9FID0gMHg0NSwKICAgICAgICBLZXlfRiA9
IDB4NDYsCiAgICAgICAgS2V5X0cgPSAweDQ3LAogICAgICAgIEtleV9IID0gMHg0OCwKICAgICAg
ICBLZXlfSSA9IDB4NDksCiAgICAgICAgS2V5X0ogPSAweDRhLAogICAgICAgIEtleV9LID0gMHg0
YiwKICAgICAgICBLZXlfTCA9IDB4NGMsCiAgICAgICAgS2V5X00gPSAweDRkLAogICAgICAgIEtl
eV9OID0gMHg0ZSwKICAgICAgICBLZXlfTyA9IDB4NGYsCiAgICAgICAgS2V5X1AgPSAweDUwLAog
ICAgICAgIEtleV9RID0gMHg1MSwKICAgICAgICBLZXlfUiA9IDB4NTIsCiAgICAgICAgS2V5X1Mg
PSAweDUzLAogICAgICAgIEtleV9UID0gMHg1NCwKICAgICAgICBLZXlfVSA9IDB4NTUsCiAgICAg
ICAgS2V5X1YgPSAweDU2LAogICAgICAgIEtleV9XID0gMHg1NywKICAgICAgICBLZXlfWCA9IDB4
NTgsCiAgICAgICAgS2V5X1kgPSAweDU5LAogICAgICAgIEtleV9aID0gMHg1YSwKICAgICAgICBL
ZXlfQnJhY2tldExlZnQgPSAweDViLAogICAgICAgIEtleV9CYWNrc2xhc2ggPSAweDVjLAogICAg
ICAgIEtleV9CcmFja2V0UmlnaHQgPSAweDVkLAogICAgICAgIEtleV9Bc2NpaUNpcmN1bSA9IDB4
NWUsCiAgICAgICAgS2V5X1VuZGVyc2NvcmUgPSAweDVmLAogICAgICAgIEtleV9RdW90ZUxlZnQg
PSAweDYwLAogICAgICAgIEtleV9CcmFjZUxlZnQgPSAweDdiLAogICAgICAgIEtleV9CYXIgPSAw
eDdjLAogICAgICAgIEtleV9CcmFjZVJpZ2h0ID0gMHg3ZCwKICAgICAgICBLZXlfQXNjaWlUaWxk
ZSA9IDB4N2UsCgoKCiAgICAgICAgS2V5X25vYnJlYWtzcGFjZSA9IDB4MGEwLAogICAgICAgIEtl
eV9leGNsYW1kb3duID0gMHgwYTEsCiAgICAgICAgS2V5X2NlbnQgPSAweDBhMiwKICAgICAgICBL
ZXlfc3RlcmxpbmcgPSAweDBhMywKICAgICAgICBLZXlfY3VycmVuY3kgPSAweDBhNCwKICAgICAg
ICBLZXlfeWVuID0gMHgwYTUsCiAgICAgICAgS2V5X2Jyb2tlbmJhciA9IDB4MGE2LAogICAgICAg
IEtleV9zZWN0aW9uID0gMHgwYTcsCiAgICAgICAgS2V5X2RpYWVyZXNpcyA9IDB4MGE4LAogICAg
ICAgIEtleV9jb3B5cmlnaHQgPSAweDBhOSwKICAgICAgICBLZXlfb3JkZmVtaW5pbmUgPSAweDBh
YSwKICAgICAgICBLZXlfZ3VpbGxlbW90bGVmdCA9IDB4MGFiLAogICAgICAgIEtleV9ub3RzaWdu
ID0gMHgwYWMsCiAgICAgICAgS2V5X2h5cGhlbiA9IDB4MGFkLAogICAgICAgIEtleV9yZWdpc3Rl
cmVkID0gMHgwYWUsCiAgICAgICAgS2V5X21hY3JvbiA9IDB4MGFmLAogICAgICAgIEtleV9kZWdy
ZWUgPSAweDBiMCwKICAgICAgICBLZXlfcGx1c21pbnVzID0gMHgwYjEsCiAgICAgICAgS2V5X3R3
b3N1cGVyaW9yID0gMHgwYjIsCiAgICAgICAgS2V5X3RocmVlc3VwZXJpb3IgPSAweDBiMywKICAg
ICAgICBLZXlfYWN1dGUgPSAweDBiNCwKICAgICAgICBLZXlfbXUgPSAweDBiNSwKICAgICAgICBL
ZXlfcGFyYWdyYXBoID0gMHgwYjYsCiAgICAgICAgS2V5X3BlcmlvZGNlbnRlcmVkID0gMHgwYjcs
CiAgICAgICAgS2V5X2NlZGlsbGEgPSAweDBiOCwKICAgICAgICBLZXlfb25lc3VwZXJpb3IgPSAw
eDBiOSwKICAgICAgICBLZXlfbWFzY3VsaW5lID0gMHgwYmEsCiAgICAgICAgS2V5X2d1aWxsZW1v
dHJpZ2h0ID0gMHgwYmIsCiAgICAgICAgS2V5X29uZXF1YXJ0ZXIgPSAweDBiYywKICAgICAgICBL
ZXlfb25laGFsZiA9IDB4MGJkLAogICAgICAgIEtleV90aHJlZXF1YXJ0ZXJzID0gMHgwYmUsCiAg
ICAgICAgS2V5X3F1ZXN0aW9uZG93biA9IDB4MGJmLAogICAgICAgIEtleV9BZ3JhdmUgPSAweDBj
MCwKICAgICAgICBLZXlfQWFjdXRlID0gMHgwYzEsCiAgICAgICAgS2V5X0FjaXJjdW1mbGV4ID0g
MHgwYzIsCiAgICAgICAgS2V5X0F0aWxkZSA9IDB4MGMzLAogICAgICAgIEtleV9BZGlhZXJlc2lz
ID0gMHgwYzQsCiAgICAgICAgS2V5X0FyaW5nID0gMHgwYzUsCiAgICAgICAgS2V5X0FFID0gMHgw
YzYsCiAgICAgICAgS2V5X0NjZWRpbGxhID0gMHgwYzcsCiAgICAgICAgS2V5X0VncmF2ZSA9IDB4
MGM4LAogICAgICAgIEtleV9FYWN1dGUgPSAweDBjOSwKICAgICAgICBLZXlfRWNpcmN1bWZsZXgg
PSAweDBjYSwKICAgICAgICBLZXlfRWRpYWVyZXNpcyA9IDB4MGNiLAogICAgICAgIEtleV9JZ3Jh
dmUgPSAweDBjYywKICAgICAgICBLZXlfSWFjdXRlID0gMHgwY2QsCiAgICAgICAgS2V5X0ljaXJj
dW1mbGV4ID0gMHgwY2UsCiAgICAgICAgS2V5X0lkaWFlcmVzaXMgPSAweDBjZiwKICAgICAgICBL
ZXlfRVRIID0gMHgwZDAsCiAgICAgICAgS2V5X050aWxkZSA9IDB4MGQxLAogICAgICAgIEtleV9P
Z3JhdmUgPSAweDBkMiwKICAgICAgICBLZXlfT2FjdXRlID0gMHgwZDMsCiAgICAgICAgS2V5X09j
aXJjdW1mbGV4ID0gMHgwZDQsCiAgICAgICAgS2V5X090aWxkZSA9IDB4MGQ1LAogICAgICAgIEtl
eV9PZGlhZXJlc2lzID0gMHgwZDYsCiAgICAgICAgS2V5X211bHRpcGx5ID0gMHgwZDcsCiAgICAg
ICAgS2V5X09vYmxpcXVlID0gMHgwZDgsCiAgICAgICAgS2V5X1VncmF2ZSA9IDB4MGQ5LAogICAg
ICAgIEtleV9VYWN1dGUgPSAweDBkYSwKICAgICAgICBLZXlfVWNpcmN1bWZsZXggPSAweDBkYiwK
ICAgICAgICBLZXlfVWRpYWVyZXNpcyA9IDB4MGRjLAogICAgICAgIEtleV9ZYWN1dGUgPSAweDBk
ZCwKICAgICAgICBLZXlfVEhPUk4gPSAweDBkZSwKICAgICAgICBLZXlfc3NoYXJwID0gMHgwZGYs
CiAgICAgICAgS2V5X2FncmF2ZSA9IDB4MGUwLAogICAgICAgIEtleV9hYWN1dGUgPSAweDBlMSwK
ICAgICAgICBLZXlfYWNpcmN1bWZsZXggPSAweDBlMiwKICAgICAgICBLZXlfYXRpbGRlID0gMHgw
ZTMsCiAgICAgICAgS2V5X2FkaWFlcmVzaXMgPSAweDBlNCwKICAgICAgICBLZXlfYXJpbmcgPSAw
eDBlNSwKICAgICAgICBLZXlfYWUgPSAweDBlNiwKICAgICAgICBLZXlfY2NlZGlsbGEgPSAweDBl
NywKICAgICAgICBLZXlfZWdyYXZlID0gMHgwZTgsCiAgICAgICAgS2V5X2VhY3V0ZSA9IDB4MGU5
LAogICAgICAgIEtleV9lY2lyY3VtZmxleCA9IDB4MGVhLAogICAgICAgIEtleV9lZGlhZXJlc2lz
ID0gMHgwZWIsCiAgICAgICAgS2V5X2lncmF2ZSA9IDB4MGVjLAogICAgICAgIEtleV9pYWN1dGUg
PSAweDBlZCwKICAgICAgICBLZXlfaWNpcmN1bWZsZXggPSAweDBlZSwKICAgICAgICBLZXlfaWRp
YWVyZXNpcyA9IDB4MGVmLAogICAgICAgIEtleV9ldGggPSAweDBmMCwKICAgICAgICBLZXlfbnRp
bGRlID0gMHgwZjEsCiAgICAgICAgS2V5X29ncmF2ZSA9IDB4MGYyLAogICAgICAgIEtleV9vYWN1
dGUgPSAweDBmMywKICAgICAgICBLZXlfb2NpcmN1bWZsZXggPSAweDBmNCwKICAgICAgICBLZXlf
b3RpbGRlID0gMHgwZjUsCiAgICAgICAgS2V5X29kaWFlcmVzaXMgPSAweDBmNiwKICAgICAgICBL
ZXlfZGl2aXNpb24gPSAweDBmNywKICAgICAgICBLZXlfb3NsYXNoID0gMHgwZjgsCiAgICAgICAg
S2V5X3VncmF2ZSA9IDB4MGY5LAogICAgICAgIEtleV91YWN1dGUgPSAweDBmYSwKICAgICAgICBL
ZXlfdWNpcmN1bWZsZXggPSAweDBmYiwKICAgICAgICBLZXlfdWRpYWVyZXNpcyA9IDB4MGZjLAog
ICAgICAgIEtleV95YWN1dGUgPSAweDBmZCwKICAgICAgICBLZXlfdGhvcm4gPSAweDBmZSwKICAg
ICAgICBLZXlfeWRpYWVyZXNpcyA9IDB4MGZmLAoKICAgICAgICBLZXlfdW5rbm93biA9IDB4ZmZm
ZgogICAgfTsKCiAgICBlbnVtIEFycm93VHlwZSB7CiAgICAgICAgVXBBcnJvdywKICAgICAgICBE
b3duQXJyb3csCiAgICAgICAgTGVmdEFycm93LAogICAgICAgIFJpZ2h0QXJyb3cKICAgIH07CgoK
ICAgIGVudW0gUmFzdGVyT3AgewogICAgICAgIENvcHlST1AsCiAgICAgICAgT3JST1AsCiAgICAg
ICAgWG9yUk9QLAogICAgICAgIE5vdEFuZFJPUCwKICAgICAgICBFcmFzZVJPUD1Ob3RBbmRST1As
CiAgICAgICAgTm90Q29weVJPUCwKICAgICAgICBOb3RPclJPUCwKICAgICAgICBOb3RYb3JST1As
CiAgICAgICAgQW5kUk9QLCBOb3RFcmFzZVJPUD1BbmRST1AsCiAgICAgICAgTm90Uk9QLAogICAg
ICAgIENsZWFyUk9QLAogICAgICAgIFNldFJPUCwKICAgICAgICBOb3BST1AsCiAgICAgICAgQW5k
Tm90Uk9QLAogICAgICAgIE9yTm90Uk9QLAogICAgICAgIE5hbmRST1AsCiAgICAgICAgTm9yUk9Q
LCBMYXN0Uk9QPU5vclJPUAogICAgfTsKCgogICAgZW51bSBQZW5TdHlsZSB7CiAgICAgICAgTm9Q
ZW4sCiAgICAgICAgU29saWRMaW5lLAogICAgICAgIERhc2hMaW5lLAogICAgICAgIERvdExpbmUs
CiAgICAgICAgRGFzaERvdExpbmUsCiAgICAgICAgRGFzaERvdERvdExpbmUsCiAgICAgICAgTVBl
blN0eWxlID0gMHgwZgogICAgfTsKCiAgICBlbnVtIFBlbkNhcFN0eWxlIHsKICAgICAgICBGbGF0
Q2FwID0gMHgwMCwKICAgICAgICBTcXVhcmVDYXAgPSAweDEwLAogICAgICAgIFJvdW5kQ2FwID0g
MHgyMCwKICAgICAgICBNUGVuQ2FwU3R5bGUgPSAweDMwCiAgICB9OwoKICAgIGVudW0gUGVuSm9p
blN0eWxlIHsKICAgICAgICBNaXRlckpvaW4gPSAweDAwLAogICAgICAgIEJldmVsSm9pbiA9IDB4
NDAsCiAgICAgICAgUm91bmRKb2luID0gMHg4MCwKICAgICAgICBNUGVuSm9pblN0eWxlID0gMHhj
MAogICAgfTsKCiAgICBlbnVtIEJydXNoU3R5bGUgewogICAgICAgIE5vQnJ1c2gsCiAgICAgICAg
U29saWRQYXR0ZXJuLAogICAgICAgIERlbnNlMVBhdHRlcm4sCiAgICAgICAgRGVuc2UyUGF0dGVy
biwKICAgICAgICBEZW5zZTNQYXR0ZXJuLAogICAgICAgIERlbnNlNFBhdHRlcm4sCiAgICAgICAg
RGVuc2U1UGF0dGVybiwKICAgICAgICBEZW5zZTZQYXR0ZXJuLAogICAgICAgIERlbnNlN1BhdHRl
cm4sCiAgICAgICAgSG9yUGF0dGVybiwKICAgICAgICBWZXJQYXR0ZXJuLAogICAgICAgIENyb3Nz
UGF0dGVybiwKICAgICAgICBCRGlhZ1BhdHRlcm4sCiAgICAgICAgRkRpYWdQYXR0ZXJuLAogICAg
ICAgIERpYWdDcm9zc1BhdHRlcm4sCiAgICAgICAgQ3VzdG9tUGF0dGVybj0yNAogICAgfTsKCiAg
ICBlbnVtIFdpbmRvd3NWZXJzaW9uIHsKICAgICAgICBXVl8zMnMgPSAweDAwMDEsCiAgICAgICAg
V1ZfOTUgPSAweDAwMDIsCiAgICAgICAgV1ZfOTggPSAweDAwMDMsCiAgICAgICAgV1ZfRE9TX2Jh
c2VkID0gMHgwMDBmLAoKICAgICAgICBXVl9OVCA9IDB4MDAxMCwKICAgICAgICBXVl8yMDAwID0g
MHgwMDIwLAogICAgICAgIFdWX05UX2Jhc2VkID0gMHgwMGYwCiAgICB9OwoKICAgIGVudW0gVUlF
ZmZlY3QgewogICAgICAgIFVJX0dlbmVyYWwsCiAgICAgICAgVUlfQW5pbWF0ZU1lbnUsCiAgICAg
ICAgVUlfRmFkZU1lbnUsCiAgICAgICAgVUlfQW5pbWF0ZUNvbWJvLAogICAgICAgIFVJX0FuaW1h
dGVUb29sdGlwLAogICAgICAgIFVJX0ZhZGVUb29sdGlwCiAgICB9OwoKCgoKICAgIHN0YXRpYyBj
b25zdCBRQ3Vyc29yICYgYXJyb3dDdXJzb3I7CiAgICBzdGF0aWMgY29uc3QgUUN1cnNvciAmIHVw
QXJyb3dDdXJzb3I7CiAgICBzdGF0aWMgY29uc3QgUUN1cnNvciAmIGNyb3NzQ3Vyc29yOwogICAg
c3RhdGljIGNvbnN0IFFDdXJzb3IgJiB3YWl0Q3Vyc29yOwogICAgc3RhdGljIGNvbnN0IFFDdXJz
b3IgJiBpYmVhbUN1cnNvcjsKICAgIHN0YXRpYyBjb25zdCBRQ3Vyc29yICYgc2l6ZVZlckN1cnNv
cjsKICAgIHN0YXRpYyBjb25zdCBRQ3Vyc29yICYgc2l6ZUhvckN1cnNvcjsKICAgIHN0YXRpYyBj
b25zdCBRQ3Vyc29yICYgc2l6ZUJEaWFnQ3Vyc29yOwogICAgc3RhdGljIGNvbnN0IFFDdXJzb3Ig
JiBzaXplRkRpYWdDdXJzb3I7CiAgICBzdGF0aWMgY29uc3QgUUN1cnNvciAmIHNpemVBbGxDdXJz
b3I7CiAgICBzdGF0aWMgY29uc3QgUUN1cnNvciAmIGJsYW5rQ3Vyc29yOwogICAgc3RhdGljIGNv
bnN0IFFDdXJzb3IgJiBzcGxpdFZDdXJzb3I7CgogICAgc3RhdGljIGNvbnN0IFFDdXJzb3IgJiBz
cGxpdEhDdXJzb3I7CgogICAgc3RhdGljIGNvbnN0IFFDdXJzb3IgJiBwb2ludGluZ0hhbmRDdXJz
b3I7CiAgICBzdGF0aWMgY29uc3QgUUN1cnNvciAmIGZvcmJpZGRlbkN1cnNvcjsKCgogICAgZW51
bSBUZXh0Rm9ybWF0IHsKICAgICAgICBQbGFpblRleHQsCiAgICAgICAgUmljaFRleHQsCiAgICAg
ICAgQXV0b1RleHQKICAgIH07Cn07CgoKY2xhc3MgUUludGVybmFsIHsKcHVibGljOgogICAgZW51
bSBQYWludERldmljZUZsYWdzIHsKICAgICAgICBVbmRlZmluZWREZXZpY2UgPSAweDAwLAogICAg
ICAgIFdpZGdldCA9IDB4MDEsCiAgICAgICAgUGl4bWFwID0gMHgwMiwKICAgICAgICBQcmludGVy
ID0gMHgwMywKICAgICAgICBQaWN0dXJlID0gMHgwNCwKICAgICAgICBTeXN0ZW0gPSAweDA1LAog
ICAgICAgIERldmljZVR5cGVNYXNrID0gMHgwZiwKICAgICAgICBFeHRlcm5hbERldmljZSA9IDB4
MTAKICAgIH07Cn07CiMgNDYgImtlcm5lbC9xd2luZG93ZGVmcy5oIiAyCgoKIyAxICIvdXNyL2xp
YjY0L2djYy1saWIveDg2XzY0LXN1c2UtbGludXgvMy4zL2luY2x1ZGUvbGltaXRzLmgiIDEgMyA0
CiMgMTEgIi91c3IvbGliNjQvZ2NjLWxpYi94ODZfNjQtc3VzZS1saW51eC8zLjMvaW5jbHVkZS9s
aW1pdHMuaCIgMyA0CiMgMSAiL3Vzci9saWI2NC9nY2MtbGliL3g4Nl82NC1zdXNlLWxpbnV4LzMu
My9pbmNsdWRlL3N5c2xpbWl0cy5oIiAxIDMgNAoKCgoKCgojIDEgIi91c3IvbGliNjQvZ2NjLWxp
Yi94ODZfNjQtc3VzZS1saW51eC8zLjMvaW5jbHVkZS9saW1pdHMuaCIgMSAzIDQKIyAxMjIgIi91
c3IvbGliNjQvZ2NjLWxpYi94ODZfNjQtc3VzZS1saW51eC8zLjMvaW5jbHVkZS9saW1pdHMuaCIg
MyA0CiMgMSAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAxIDMgNAojIDE0NCAiL3Vzci9pbmNsdWRl
L2xpbWl0cy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDEgMyA0
CiMgMTI2ICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDMgNAojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL2xvY2FsX2xpbS5oIiAxIDMgNAojIDM2ICIvdXNyL2luY2x1ZGUvYml0cy9sb2Nh
bF9saW0uaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2xpbnV4L2xpbWl0cy5oIiAxIDMgNAojIDM3
ICIvdXNyL2luY2x1ZGUvYml0cy9sb2NhbF9saW0uaCIgMiAzIDQKIyAxMjcgIi91c3IvaW5jbHVk
ZS9iaXRzL3Bvc2l4MV9saW0uaCIgMiAzIDQKIyAxNDUgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIg
MiAzIDQKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDJfbGltLmgiIDEgMyA0CiMgMTQ5
ICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDIgMyA0CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv
eG9wZW5fbGltLmgiIDEgMyA0CiMgMzQgIi91c3IvaW5jbHVkZS9iaXRzL3hvcGVuX2xpbS5oIiAz
IDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpb19saW0uaCIgMSAzIDQKIyAzNSAiL3Vzci9p
bmNsdWRlL2JpdHMveG9wZW5fbGltLmgiIDIgMyA0CiMgMTUzICIvdXNyL2luY2x1ZGUvbGltaXRz
LmgiIDIgMyA0CiMgMTIzICIvdXNyL2xpYjY0L2djYy1saWIveDg2XzY0LXN1c2UtbGludXgvMy4z
L2luY2x1ZGUvbGltaXRzLmgiIDIgMyA0CiMgOCAiL3Vzci9saWI2NC9nY2MtbGliL3g4Nl82NC1z
dXNlLWxpbnV4LzMuMy9pbmNsdWRlL3N5c2xpbWl0cy5oIiAyIDMgNAojIDEyICIvdXNyL2xpYjY0
L2djYy1saWIveDg2XzY0LXN1c2UtbGludXgvMy4zL2luY2x1ZGUvbGltaXRzLmgiIDIgMyA0CiMg
NDkgImtlcm5lbC9xd2luZG93ZGVmcy5oIiAyCgoKCmNsYXNzIFFQYWludERldmljZTsKY2xhc3Mg
UVBhaW50RGV2aWNlTWV0cmljczsKY2xhc3MgUVdpZGdldDsKY2xhc3MgUVdpZGdldE1hcHBlcjsK
Y2xhc3MgUURpYWxvZzsKY2xhc3MgUUNvbG9yOwpjbGFzcyBRQ29sb3JHcm91cDsKY2xhc3MgUVBh
bGV0dGU7CmNsYXNzIFFDdXJzb3I7CmNsYXNzIFFQb2ludDsKY2xhc3MgUVNpemU7CmNsYXNzIFFS
ZWN0OwpjbGFzcyBRUG9pbnRBcnJheTsKY2xhc3MgUVBhaW50ZXI7CmNsYXNzIFFSZWdpb247CmNs
YXNzIFFGb250OwpjbGFzcyBRRm9udE1ldHJpY3M7CmNsYXNzIFFGb250SW5mbzsKY2xhc3MgUVBl
bjsKY2xhc3MgUUJydXNoOwpjbGFzcyBRV01hdHJpeDsKY2xhc3MgUVBpeG1hcDsKY2xhc3MgUUJp
dG1hcDsKY2xhc3MgUU1vdmllOwpjbGFzcyBRSW1hZ2U7CmNsYXNzIFFJbWFnZUlPOwpjbGFzcyBR
UGljdHVyZTsKY2xhc3MgUVByaW50ZXI7CmNsYXNzIFFBY2NlbDsKY2xhc3MgUVRpbWVyOwpjbGFz
cyBRVGltZTsKY2xhc3MgUUNsaXBib2FyZDsKCgoKCmNsYXNzIFFXaWRnZXRMaXN0OwpjbGFzcyBR
V2lkZ2V0TGlzdEl0OwojIDExNiAia2VybmVsL3F3aW5kb3dkZWZzLmgiCnR5cGVkZWYgdW5zaWdu
ZWQgbG9uZyBXSWQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBIQU5ETEU7CgoKCgoKdHlwZWRlZiBz
dHJ1Y3QgX1hEaXNwbGF5IERpc3BsYXk7CnR5cGVkZWYgdW5pb24gX1hFdmVudCBYRXZlbnQ7CnR5
cGVkZWYgc3RydWN0IF9YR0MgKkdDOwp0eXBlZGVmIHN0cnVjdCBfWFJlZ2lvbiAqUmVnaW9uOwoK
IERpc3BsYXkgKnF0X3hkaXNwbGF5KCk7CiBpbnQgcXRfeHNjcmVlbigpOwogV0lkIHF0X3hyb290
d2luKCk7CiBHQyBxdF94Z2V0X3JlYWRvbmx5X2djKCBib29sIG1vbm9jaHJvbWU9RkFMU0UgKTsK
IEdDIHF0X3hnZXRfdGVtcF9nYyggYm9vbCBtb25vY2hyb21lPUZBTFNFICk7CiMgMTQ1ICJrZXJu
ZWwvcXdpbmRvd2RlZnMuaCIKY2xhc3MgUUFwcGxpY2F0aW9uOwojIDE1NCAia2VybmVsL3F3aW5k
b3dkZWZzLmgiCnR5cGVkZWYgUV9JTlQzMiBRQ09PUkQ7CmNvbnN0IFFDT09SRCBRQ09PUkRfTUFY
ID0gMjE0NzQ4MzY0NzsKY29uc3QgUUNPT1JEIFFDT09SRF9NSU4gPSAtUUNPT1JEX01BWCAtIDE7
Cgp0eXBlZGVmIHVuc2lnbmVkIGludCBRUmdiOwoKIGNoYXIgKnFBcHBOYW1lKCk7CgoKCgp0eXBl
ZGVmIHZvaWQgKCpRX0NsZWFuVXBGdW5jdGlvbikoKTsKIHZvaWQgcUFkZFBvc3RSb3V0aW5lKCBR
X0NsZWFuVXBGdW5jdGlvbiApOwogdm9pZCBxUmVtb3ZlUG9zdFJvdXRpbmUoIFFfQ2xlYW5VcEZ1
bmN0aW9uICk7CgoKIHZvaWQgKnF0X2ZpbmRfb2JqX2NoaWxkKCBRT2JqZWN0ICosIGNvbnN0IGNo
YXIgKiwgY29uc3QgY2hhciAqICk7CiMgNDMgImtlcm5lbC9xd2lkZ2V0LmgiIDIKIyAxICJrZXJu
ZWwvcW9iamVjdC5oIiAxCiMgNDUgImtlcm5lbC9xb2JqZWN0LmgiCiMgMSAia2VybmVsL3FldmVu
dC5oIiAxCiMgNDMgImtlcm5lbC9xZXZlbnQuaCIKIyAxICJrZXJuZWwvcXJlZ2lvbi5oIiAxCiMg
NDMgImtlcm5lbC9xcmVnaW9uLmgiCiMgMSAia2VybmVsL3FyZWN0LmgiIDEKIyA0MiAia2VybmVs
L3FyZWN0LmgiCiMgMSAia2VybmVsL3FzaXplLmgiIDEKIyA0MiAia2VybmVsL3FzaXplLmgiCiMg
MSAia2VybmVsL3Fwb2ludC5oIiAxCiMgNDYgImtlcm5lbC9xcG9pbnQuaCIKY2xhc3MgUVBvaW50
CnsKcHVibGljOgogICAgUVBvaW50KCk7CiAgICBRUG9pbnQoIGludCB4cG9zLCBpbnQgeXBvcyAp
OwoKICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CgogICAgaW50IHgoKSBjb25zdDsKICAgIGludCB5
KCkgY29uc3Q7CiAgICB2b2lkIHNldFgoIGludCB4ICk7CiAgICB2b2lkIHNldFkoIGludCB5ICk7
CgogICAgaW50IG1hbmhhdHRhbkxlbmd0aCgpIGNvbnN0OwoKICAgIFFDT09SRCAmcngoKTsKICAg
IFFDT09SRCAmcnkoKTsKCiAgICBRUG9pbnQgJm9wZXJhdG9yKz0oIGNvbnN0IFFQb2ludCAmcCAp
OwogICAgUVBvaW50ICZvcGVyYXRvci09KCBjb25zdCBRUG9pbnQgJnAgKTsKICAgIFFQb2ludCAm
b3BlcmF0b3IqPSggaW50IGMgKTsKICAgIFFQb2ludCAmb3BlcmF0b3IqPSggZG91YmxlIGMgKTsK
ICAgIFFQb2ludCAmb3BlcmF0b3IvPSggaW50IGMgKTsKICAgIFFQb2ludCAmb3BlcmF0b3IvPSgg
ZG91YmxlIGMgKTsKCiAgICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3I9PSggY29uc3QgUVBv
aW50ICYsIGNvbnN0IFFQb2ludCAmICk7CiAgICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3Ih
PSggY29uc3QgUVBvaW50ICYsIGNvbnN0IFFQb2ludCAmICk7CiAgICBmcmllbmQgaW5saW5lIFFQ
b2ludCBvcGVyYXRvcisoIGNvbnN0IFFQb2ludCAmLCBjb25zdCBRUG9pbnQgJiApOwogICAgZnJp
ZW5kIGlubGluZSBRUG9pbnQgb3BlcmF0b3ItKCBjb25zdCBRUG9pbnQgJiwgY29uc3QgUVBvaW50
ICYgKTsKICAgIGZyaWVuZCBpbmxpbmUgUVBvaW50IG9wZXJhdG9yKiggY29uc3QgUVBvaW50ICYs
IGludCApOwogICAgZnJpZW5kIGlubGluZSBRUG9pbnQgb3BlcmF0b3IqKCBpbnQsIGNvbnN0IFFQ
b2ludCAmICk7CiAgICBmcmllbmQgaW5saW5lIFFQb2ludCBvcGVyYXRvciooIGNvbnN0IFFQb2lu
dCAmLCBkb3VibGUgKTsKICAgIGZyaWVuZCBpbmxpbmUgUVBvaW50IG9wZXJhdG9yKiggZG91Ymxl
LCBjb25zdCBRUG9pbnQgJiApOwogICAgZnJpZW5kIGlubGluZSBRUG9pbnQgb3BlcmF0b3ItKCBj
b25zdCBRUG9pbnQgJiApOwogICAgZnJpZW5kIGlubGluZSBRUG9pbnQgb3BlcmF0b3IvKCBjb25z
dCBRUG9pbnQgJiwgaW50ICk7CiAgICBmcmllbmQgaW5saW5lIFFQb2ludCBvcGVyYXRvci8oIGNv
bnN0IFFQb2ludCAmLCBkb3VibGUgKTsKCnByaXZhdGU6CiAgICBzdGF0aWMgdm9pZCB3YXJuaW5n
RGl2QnlaZXJvKCk7CgoKCgoKICAgIFFDT09SRCB4cDsKICAgIFFDT09SRCB5cDsKCn07CgoKCgoK
CiBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PCggUURhdGFTdHJlYW0gJiwgY29uc3QgUVBvaW50ICYg
KTsKIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+KCBRRGF0YVN0cmVhbSAmLCBRUG9pbnQgJiApOwoK
CgoKCgppbmxpbmUgUVBvaW50OjpRUG9pbnQoKQp7IHhwPTA7IHlwPTA7IH0KCmlubGluZSBRUG9p
bnQ6OlFQb2ludCggaW50IHhwb3MsIGludCB5cG9zICkKeyB4cD0oUUNPT1JEKXhwb3M7IHlwPShR
Q09PUkQpeXBvczsgfQoKaW5saW5lIGJvb2wgUVBvaW50Ojppc051bGwoKSBjb25zdAp7IHJldHVy
biB4cCA9PSAwICYmIHlwID09IDA7IH0KCmlubGluZSBpbnQgUVBvaW50Ojp4KCkgY29uc3QKeyBy
ZXR1cm4geHA7IH0KCmlubGluZSBpbnQgUVBvaW50Ojp5KCkgY29uc3QKeyByZXR1cm4geXA7IH0K
CmlubGluZSB2b2lkIFFQb2ludDo6c2V0WCggaW50IHggKQp7IHhwID0gKFFDT09SRCl4OyB9Cgpp
bmxpbmUgdm9pZCBRUG9pbnQ6OnNldFkoIGludCB5ICkKeyB5cCA9IChRQ09PUkQpeTsgfQoKaW5s
aW5lIFFDT09SRCAmUVBvaW50OjpyeCgpCnsgcmV0dXJuIHhwOyB9CgppbmxpbmUgUUNPT1JEICZR
UG9pbnQ6OnJ5KCkKeyByZXR1cm4geXA7IH0KCmlubGluZSBRUG9pbnQgJlFQb2ludDo6b3BlcmF0
b3IrPSggY29uc3QgUVBvaW50ICZwICkKeyB4cCs9cC54cDsgeXArPXAueXA7IHJldHVybiAqdGhp
czsgfQoKaW5saW5lIFFQb2ludCAmUVBvaW50OjpvcGVyYXRvci09KCBjb25zdCBRUG9pbnQgJnAg
KQp7IHhwLT1wLnhwOyB5cC09cC55cDsgcmV0dXJuICp0aGlzOyB9CgppbmxpbmUgUVBvaW50ICZR
UG9pbnQ6Om9wZXJhdG9yKj0oIGludCBjICkKeyB4cCo9KFFDT09SRCljOyB5cCo9KFFDT09SRClj
OyByZXR1cm4gKnRoaXM7IH0KCmlubGluZSBRUG9pbnQgJlFQb2ludDo6b3BlcmF0b3IqPSggZG91
YmxlIGMgKQp7IHhwPShRQ09PUkQpKHhwKmMpOyB5cD0oUUNPT1JEKSh5cCpjKTsgcmV0dXJuICp0
aGlzOyB9CgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KCBjb25zdCBRUG9pbnQgJnAxLCBjb25zdCBR
UG9pbnQgJnAyICkKeyByZXR1cm4gcDEueHAgPT0gcDIueHAgJiYgcDEueXAgPT0gcDIueXA7IH0K
CmlubGluZSBib29sIG9wZXJhdG9yIT0oIGNvbnN0IFFQb2ludCAmcDEsIGNvbnN0IFFQb2ludCAm
cDIgKQp7IHJldHVybiBwMS54cCAhPSBwMi54cCB8fCBwMS55cCAhPSBwMi55cDsgfQoKaW5saW5l
IFFQb2ludCBvcGVyYXRvcisoIGNvbnN0IFFQb2ludCAmcDEsIGNvbnN0IFFQb2ludCAmcDIgKQp7
IHJldHVybiBRUG9pbnQocDEueHArcDIueHAsIHAxLnlwK3AyLnlwKTsgfQoKaW5saW5lIFFQb2lu
dCBvcGVyYXRvci0oIGNvbnN0IFFQb2ludCAmcDEsIGNvbnN0IFFQb2ludCAmcDIgKQp7IHJldHVy
biBRUG9pbnQocDEueHAtcDIueHAsIHAxLnlwLXAyLnlwKTsgfQoKaW5saW5lIFFQb2ludCBvcGVy
YXRvciooIGNvbnN0IFFQb2ludCAmcCwgaW50IGMgKQp7IHJldHVybiBRUG9pbnQocC54cCpjLCBw
LnlwKmMpOyB9CgppbmxpbmUgUVBvaW50IG9wZXJhdG9yKiggaW50IGMsIGNvbnN0IFFQb2ludCAm
cCApCnsgcmV0dXJuIFFQb2ludChwLnhwKmMsIHAueXAqYyk7IH0KCmlubGluZSBRUG9pbnQgb3Bl
cmF0b3IqKCBjb25zdCBRUG9pbnQgJnAsIGRvdWJsZSBjICkKeyByZXR1cm4gUVBvaW50KChRQ09P
UkQpKHAueHAqYyksIChRQ09PUkQpKHAueXAqYykpOyB9CgppbmxpbmUgUVBvaW50IG9wZXJhdG9y
KiggZG91YmxlIGMsIGNvbnN0IFFQb2ludCAmcCApCnsgcmV0dXJuIFFQb2ludCgoUUNPT1JEKShw
LnhwKmMpLCAoUUNPT1JEKShwLnlwKmMpKTsgfQoKaW5saW5lIFFQb2ludCBvcGVyYXRvci0oIGNv
bnN0IFFQb2ludCAmcCApCnsgcmV0dXJuIFFQb2ludCgtcC54cCwgLXAueXApOyB9CgppbmxpbmUg
UVBvaW50ICZRUG9pbnQ6Om9wZXJhdG9yLz0oIGludCBjICkKewoKICAgIGlmICggYyA9PSAwICkK
ICAgICAgICB3YXJuaW5nRGl2QnlaZXJvKCk7CgogICAgeHAvPShRQ09PUkQpYzsKICAgIHlwLz0o
UUNPT1JEKWM7CiAgICByZXR1cm4gKnRoaXM7Cn0KCmlubGluZSBRUG9pbnQgJlFQb2ludDo6b3Bl
cmF0b3IvPSggZG91YmxlIGMgKQp7CgogICAgaWYgKCBjID09IDAuMCApCiAgICAgICAgd2Fybmlu
Z0RpdkJ5WmVybygpOwoKICAgIHhwPShRQ09PUkQpKHhwL2MpOwogICAgeXA9KFFDT09SRCkoeXAv
Yyk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCmlubGluZSBRUG9pbnQgb3BlcmF0b3IvKCBjb25zdCBR
UG9pbnQgJnAsIGludCBjICkKewoKICAgIGlmICggYyA9PSAwICkKICAgICAgICBRUG9pbnQ6Ondh
cm5pbmdEaXZCeVplcm8oKTsKCiAgICByZXR1cm4gUVBvaW50KHAueHAvYywgcC55cC9jKTsKfQoK
aW5saW5lIFFQb2ludCBvcGVyYXRvci8oIGNvbnN0IFFQb2ludCAmcCwgZG91YmxlIGMgKQp7Cgog
ICAgaWYgKCBjID09IDAuMCApCiAgICAgICAgUVBvaW50Ojp3YXJuaW5nRGl2QnlaZXJvKCk7Cgog
ICAgcmV0dXJuIFFQb2ludCgoUUNPT1JEKShwLnhwL2MpLCAoUUNPT1JEKShwLnlwL2MpKTsKfQoj
IDQzICJrZXJuZWwvcXNpemUuaCIgMgoKCgpjbGFzcyBRU2l6ZQp7CnB1YmxpYzoKICAgIFFTaXpl
KCk7CiAgICBRU2l6ZSggaW50IHcsIGludCBoICk7CgogICAgYm9vbCBpc051bGwoKSBjb25zdDsK
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CgogICAg
aW50IHdpZHRoKCkgY29uc3Q7CiAgICBpbnQgaGVpZ2h0KCkgY29uc3Q7CiAgICB2b2lkIHNldFdp
ZHRoKCBpbnQgdyApOwogICAgdm9pZCBzZXRIZWlnaHQoIGludCBoICk7CiAgICB2b2lkIHRyYW5z
cG9zZSgpOwoKICAgIFFTaXplIGV4cGFuZGVkVG8oIGNvbnN0IFFTaXplICYgKSBjb25zdDsKICAg
IFFTaXplIGJvdW5kZWRUbyggY29uc3QgUVNpemUgJiApIGNvbnN0OwoKICAgIFFDT09SRCAmcndp
ZHRoKCk7CiAgICBRQ09PUkQgJnJoZWlnaHQoKTsKCiAgICBRU2l6ZSAmb3BlcmF0b3IrPSggY29u
c3QgUVNpemUgJiApOwogICAgUVNpemUgJm9wZXJhdG9yLT0oIGNvbnN0IFFTaXplICYgKTsKICAg
IFFTaXplICZvcGVyYXRvcio9KCBpbnQgYyApOwogICAgUVNpemUgJm9wZXJhdG9yKj0oIGRvdWJs
ZSBjICk7CiAgICBRU2l6ZSAmb3BlcmF0b3IvPSggaW50IGMgKTsKICAgIFFTaXplICZvcGVyYXRv
ci89KCBkb3VibGUgYyApOwoKICAgIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KCBjb25z
dCBRU2l6ZSAmLCBjb25zdCBRU2l6ZSAmICk7CiAgICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0
b3IhPSggY29uc3QgUVNpemUgJiwgY29uc3QgUVNpemUgJiApOwogICAgZnJpZW5kIGlubGluZSBR
U2l6ZSBvcGVyYXRvcisoIGNvbnN0IFFTaXplICYsIGNvbnN0IFFTaXplICYgKTsKICAgIGZyaWVu
ZCBpbmxpbmUgUVNpemUgb3BlcmF0b3ItKCBjb25zdCBRU2l6ZSAmLCBjb25zdCBRU2l6ZSAmICk7
CiAgICBmcmllbmQgaW5saW5lIFFTaXplIG9wZXJhdG9yKiggY29uc3QgUVNpemUgJiwgaW50ICk7
CiAgICBmcmllbmQgaW5saW5lIFFTaXplIG9wZXJhdG9yKiggaW50LCBjb25zdCBRU2l6ZSAmICk7
CiAgICBmcmllbmQgaW5saW5lIFFTaXplIG9wZXJhdG9yKiggY29uc3QgUVNpemUgJiwgZG91Ymxl
ICk7CiAgICBmcmllbmQgaW5saW5lIFFTaXplIG9wZXJhdG9yKiggZG91YmxlLCBjb25zdCBRU2l6
ZSAmICk7CiAgICBmcmllbmQgaW5saW5lIFFTaXplIG9wZXJhdG9yLyggY29uc3QgUVNpemUgJiwg
aW50ICk7CiAgICBmcmllbmQgaW5saW5lIFFTaXplIG9wZXJhdG9yLyggY29uc3QgUVNpemUgJiwg
ZG91YmxlICk7Cgpwcml2YXRlOgogICAgc3RhdGljIHZvaWQgd2FybmluZ0RpdkJ5WmVybygpOwoK
ICAgIFFDT09SRCB3ZDsKICAgIFFDT09SRCBodDsKfTsKCgoKCgoKIFFEYXRhU3RyZWFtICZvcGVy
YXRvcjw8KCBRRGF0YVN0cmVhbSAmLCBjb25zdCBRU2l6ZSAmICk7CiBRRGF0YVN0cmVhbSAmb3Bl
cmF0b3I+PiggUURhdGFTdHJlYW0gJiwgUVNpemUgJiApOwoKCgoKCgppbmxpbmUgUVNpemU6OlFT
aXplKCkKeyB3ZCA9IGh0ID0gLTE7IH0KCmlubGluZSBRU2l6ZTo6UVNpemUoIGludCB3LCBpbnQg
aCApCnsgd2Q9KFFDT09SRCl3OyBodD0oUUNPT1JEKWg7IH0KCmlubGluZSBib29sIFFTaXplOjpp
c051bGwoKSBjb25zdAp7IHJldHVybiB3ZD09MCAmJiBodD09MDsgfQoKaW5saW5lIGJvb2wgUVNp
emU6OmlzRW1wdHkoKSBjb25zdAp7IHJldHVybiB3ZDwxIHx8IGh0PDE7IH0KCmlubGluZSBib29s
IFFTaXplOjppc1ZhbGlkKCkgY29uc3QKeyByZXR1cm4gd2Q+PTAgJiYgaHQ+PTA7IH0KCmlubGlu
ZSBpbnQgUVNpemU6OndpZHRoKCkgY29uc3QKeyByZXR1cm4gd2Q7IH0KCmlubGluZSBpbnQgUVNp
emU6OmhlaWdodCgpIGNvbnN0CnsgcmV0dXJuIGh0OyB9CgppbmxpbmUgdm9pZCBRU2l6ZTo6c2V0
V2lkdGgoIGludCB3ICkKeyB3ZD0oUUNPT1JEKXc7IH0KCmlubGluZSB2b2lkIFFTaXplOjpzZXRI
ZWlnaHQoIGludCBoICkKeyBodD0oUUNPT1JEKWg7IH0KCmlubGluZSBRQ09PUkQgJlFTaXplOjpy
d2lkdGgoKQp7IHJldHVybiB3ZDsgfQoKaW5saW5lIFFDT09SRCAmUVNpemU6OnJoZWlnaHQoKQp7
IHJldHVybiBodDsgfQoKaW5saW5lIFFTaXplICZRU2l6ZTo6b3BlcmF0b3IrPSggY29uc3QgUVNp
emUgJnMgKQp7IHdkKz1zLndkOyBodCs9cy5odDsgcmV0dXJuICp0aGlzOyB9CgppbmxpbmUgUVNp
emUgJlFTaXplOjpvcGVyYXRvci09KCBjb25zdCBRU2l6ZSAmcyApCnsgd2QtPXMud2Q7IGh0LT1z
Lmh0OyByZXR1cm4gKnRoaXM7IH0KCmlubGluZSBRU2l6ZSAmUVNpemU6Om9wZXJhdG9yKj0oIGlu
dCBjICkKeyB3ZCo9KFFDT09SRCljOyBodCo9KFFDT09SRCljOyByZXR1cm4gKnRoaXM7IH0KCmlu
bGluZSBRU2l6ZSAmUVNpemU6Om9wZXJhdG9yKj0oIGRvdWJsZSBjICkKeyB3ZD0oUUNPT1JEKSh3
ZCpjKTsgaHQ9KFFDT09SRCkoaHQqYyk7IHJldHVybiAqdGhpczsgfQoKaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PSggY29uc3QgUVNpemUgJnMxLCBjb25zdCBRU2l6ZSAmczIgKQp7IHJldHVybiBzMS53
ZCA9PSBzMi53ZCAmJiBzMS5odCA9PSBzMi5odDsgfQoKaW5saW5lIGJvb2wgb3BlcmF0b3IhPSgg
Y29uc3QgUVNpemUgJnMxLCBjb25zdCBRU2l6ZSAmczIgKQp7IHJldHVybiBzMS53ZCAhPSBzMi53
ZCB8fCBzMS5odCAhPSBzMi5odDsgfQoKaW5saW5lIFFTaXplIG9wZXJhdG9yKyggY29uc3QgUVNp
emUgJiBzMSwgY29uc3QgUVNpemUgJiBzMiApCnsgcmV0dXJuIFFTaXplKHMxLndkK3MyLndkLCBz
MS5odCtzMi5odCk7IH0KCmlubGluZSBRU2l6ZSBvcGVyYXRvci0oIGNvbnN0IFFTaXplICZzMSwg
Y29uc3QgUVNpemUgJnMyICkKeyByZXR1cm4gUVNpemUoczEud2QtczIud2QsIHMxLmh0LXMyLmh0
KTsgfQoKaW5saW5lIFFTaXplIG9wZXJhdG9yKiggY29uc3QgUVNpemUgJnMsIGludCBjICkKeyBy
ZXR1cm4gUVNpemUocy53ZCpjLCBzLmh0KmMpOyB9CgppbmxpbmUgUVNpemUgb3BlcmF0b3IqKCBp
bnQgYywgY29uc3QgUVNpemUgJnMgKQp7IHJldHVybiBRU2l6ZShzLndkKmMsIHMuaHQqYyk7IH0K
CmlubGluZSBRU2l6ZSBvcGVyYXRvciooIGNvbnN0IFFTaXplICZzLCBkb3VibGUgYyApCnsgcmV0
dXJuIFFTaXplKChRQ09PUkQpKHMud2QqYyksIChRQ09PUkQpKHMuaHQqYykpOyB9CgppbmxpbmUg
UVNpemUgb3BlcmF0b3IqKCBkb3VibGUgYywgY29uc3QgUVNpemUgJnMgKQp7IHJldHVybiBRU2l6
ZSgoUUNPT1JEKShzLndkKmMpLCAoUUNPT1JEKShzLmh0KmMpKTsgfQoKaW5saW5lIFFTaXplICZR
U2l6ZTo6b3BlcmF0b3IvPSggaW50IGMgKQp7CgogICAgaWYgKCBjID09IDAgKQogICAgICAgIHdh
cm5pbmdEaXZCeVplcm8oKTsKCiAgICB3ZC89KFFDT09SRCljOyBodC89KFFDT09SRCljOwogICAg
cmV0dXJuICp0aGlzOwp9CgppbmxpbmUgUVNpemUgJlFTaXplOjpvcGVyYXRvci89KCBkb3VibGUg
YyApCnsKCiAgICBpZiAoIGMgPT0gMC4wICkKICAgICAgICB3YXJuaW5nRGl2QnlaZXJvKCk7Cgog
ICAgd2Q9KFFDT09SRCkod2QvYyk7IGh0PShRQ09PUkQpKGh0L2MpOwogICAgcmV0dXJuICp0aGlz
Owp9CgppbmxpbmUgUVNpemUgb3BlcmF0b3IvKCBjb25zdCBRU2l6ZSAmcywgaW50IGMgKQp7Cgog
ICAgaWYgKCBjID09IDAgKQogICAgICAgIFFTaXplOjp3YXJuaW5nRGl2QnlaZXJvKCk7CgogICAg
cmV0dXJuIFFTaXplKHMud2QvYywgcy5odC9jKTsKfQoKaW5saW5lIFFTaXplIG9wZXJhdG9yLygg
Y29uc3QgUVNpemUgJnMsIGRvdWJsZSBjICkKewoKICAgIGlmICggYyA9PSAwLjAgKQogICAgICAg
IFFTaXplOjp3YXJuaW5nRGl2QnlaZXJvKCk7CgogICAgcmV0dXJuIFFTaXplKChRQ09PUkQpKHMu
d2QvYyksIChRQ09PUkQpKHMuaHQvYykpOwp9CgppbmxpbmUgUVNpemUgUVNpemU6OmV4cGFuZGVk
VG8oIGNvbnN0IFFTaXplICYgb3RoZXJTaXplICkgY29uc3QKewogICAgcmV0dXJuIFFTaXplKCAo
KHdkKSA+IChvdGhlclNpemUud2QpID8gKHdkKSA6IChvdGhlclNpemUud2QpKSwgKChodCkgPiAo
b3RoZXJTaXplLmh0KSA/IChodCkgOiAob3RoZXJTaXplLmh0KSkgKTsKfQoKaW5saW5lIFFTaXpl
IFFTaXplOjpib3VuZGVkVG8oIGNvbnN0IFFTaXplICYgb3RoZXJTaXplICkgY29uc3QKewogICAg
cmV0dXJuIFFTaXplKCAoKHdkKSA8IChvdGhlclNpemUud2QpID8gKHdkKSA6IChvdGhlclNpemUu
d2QpKSwgKChodCkgPCAob3RoZXJTaXplLmh0KSA/IChodCkgOiAob3RoZXJTaXplLmh0KSkgKTsK
fQojIDQzICJrZXJuZWwvcXJlY3QuaCIgMgoKCgoKCgoKY2xhc3MgUVJlY3QKewpwdWJsaWM6CiAg
ICBRUmVjdCgpIHsgeDEgPSB5MSA9IDA7IHgyID0geTIgPSAtMTsgfQogICAgUVJlY3QoIGNvbnN0
IFFQb2ludCAmdG9wbGVmdCwgY29uc3QgUVBvaW50ICZib3R0b21yaWdodCApOwogICAgUVJlY3Qo
IGNvbnN0IFFQb2ludCAmdG9wbGVmdCwgY29uc3QgUVNpemUgJnNpemUgKTsKICAgIFFSZWN0KCBp
bnQgbGVmdCwgaW50IHRvcCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0ICk7CgogICAgYm9vbCBpc051
bGwoKSBjb25zdDsKICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogICAgYm9vbCBpc1ZhbGlkKCkg
Y29uc3Q7CiAgICBRUmVjdCBub3JtYWxpemUoKSBjb25zdDsKCiAgICBpbnQgbGVmdCgpIGNvbnN0
OwogICAgaW50IHRvcCgpIGNvbnN0OwogICAgaW50IHJpZ2h0KCkgY29uc3Q7CiAgICBpbnQgYm90
dG9tKCkgY29uc3Q7CgogICAgUUNPT1JEICZyTGVmdCgpOwogICAgUUNPT1JEICZyVG9wKCk7CiAg
ICBRQ09PUkQgJnJSaWdodCgpOwogICAgUUNPT1JEICZyQm90dG9tKCk7CgogICAgaW50IHgoKSBj
b25zdDsKICAgIGludCB5KCkgY29uc3Q7CiAgICB2b2lkIHNldExlZnQoIGludCBwb3MgKTsKICAg
IHZvaWQgc2V0VG9wKCBpbnQgcG9zICk7CiAgICB2b2lkIHNldFJpZ2h0KCBpbnQgcG9zICk7CiAg
ICB2b2lkIHNldEJvdHRvbSggaW50IHBvcyApOwogICAgdm9pZCBzZXRYKCBpbnQgeCApOwogICAg
dm9pZCBzZXRZKCBpbnQgeSApOwoKICAgIFFQb2ludCB0b3BMZWZ0KCkgY29uc3Q7CiAgICBRUG9p
bnQgYm90dG9tUmlnaHQoKSBjb25zdDsKICAgIFFQb2ludCB0b3BSaWdodCgpIGNvbnN0OwogICAg
UVBvaW50IGJvdHRvbUxlZnQoKSBjb25zdDsKICAgIFFQb2ludCBjZW50ZXIoKSBjb25zdDsKCiAg
ICB2b2lkIHJlY3QoIGludCAqeCwgaW50ICp5LCBpbnQgKncsIGludCAqaCApIGNvbnN0OwogICAg
dm9pZCBjb29yZHMoIGludCAqeDEsIGludCAqeTEsIGludCAqeDIsIGludCAqeTIgKSBjb25zdDsK
CiAgICB2b2lkIG1vdmVUb3BMZWZ0KCBjb25zdCBRUG9pbnQgJnAgKTsKICAgIHZvaWQgbW92ZUJv
dHRvbVJpZ2h0KCBjb25zdCBRUG9pbnQgJnAgKTsKICAgIHZvaWQgbW92ZVRvcFJpZ2h0KCBjb25z
dCBRUG9pbnQgJnAgKTsKICAgIHZvaWQgbW92ZUJvdHRvbUxlZnQoIGNvbnN0IFFQb2ludCAmcCAp
OwogICAgdm9pZCBtb3ZlQ2VudGVyKCBjb25zdCBRUG9pbnQgJnAgKTsKICAgIHZvaWQgbW92ZUJ5
KCBpbnQgZHgsIGludCBkeSApOwoKICAgIHZvaWQgc2V0UmVjdCggaW50IHgsIGludCB5LCBpbnQg
dywgaW50IGggKTsKICAgIHZvaWQgc2V0Q29vcmRzKCBpbnQgeDEsIGludCB5MSwgaW50IHgyLCBp
bnQgeTIgKTsKCiAgICBRU2l6ZSBzaXplKCkgY29uc3Q7CiAgICBpbnQgd2lkdGgoKSBjb25zdDsK
ICAgIGludCBoZWlnaHQoKSBjb25zdDsKICAgIHZvaWQgc2V0V2lkdGgoIGludCB3ICk7CiAgICB2
b2lkIHNldEhlaWdodCggaW50IGggKTsKICAgIHZvaWQgc2V0U2l6ZSggY29uc3QgUVNpemUgJnMg
KTsKCiAgICBRUmVjdCBvcGVyYXRvcnwoY29uc3QgUVJlY3QgJnIpIGNvbnN0OwogICAgUVJlY3Qg
b3BlcmF0b3ImKGNvbnN0IFFSZWN0ICZyKSBjb25zdDsKICAgIFFSZWN0JiBvcGVyYXRvcnw9KGNv
bnN0IFFSZWN0ICZyKTsKICAgIFFSZWN0JiBvcGVyYXRvciY9KGNvbnN0IFFSZWN0ICZyKTsKCiAg
ICBib29sIGNvbnRhaW5zKCBjb25zdCBRUG9pbnQgJnAsIGJvb2wgcHJvcGVyPUZBTFNFICkgY29u
c3Q7CiAgICBib29sIGNvbnRhaW5zKCBpbnQgeCwgaW50IHksIGJvb2wgcHJvcGVyPUZBTFNFICkg
Y29uc3Q7CiAgICBib29sIGNvbnRhaW5zKCBjb25zdCBRUmVjdCAmciwgYm9vbCBwcm9wZXI9RkFM
U0UgKSBjb25zdDsKICAgIFFSZWN0IHVuaXRlKCBjb25zdCBRUmVjdCAmciApIGNvbnN0OwogICAg
UVJlY3QgaW50ZXJzZWN0KCBjb25zdCBRUmVjdCAmciApIGNvbnN0OwogICAgYm9vbCBpbnRlcnNl
Y3RzKCBjb25zdCBRUmVjdCAmciApIGNvbnN0OwoKICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0o
IGNvbnN0IFFSZWN0ICYsIGNvbnN0IFFSZWN0ICYgKTsKICAgIGZyaWVuZCBib29sIG9wZXJhdG9y
IT0oIGNvbnN0IFFSZWN0ICYsIGNvbnN0IFFSZWN0ICYgKTsKCnByaXZhdGU6CgoKCgoKCiAgICBR
Q09PUkQgeDE7CiAgICBRQ09PUkQgeTE7CiAgICBRQ09PUkQgeDI7CiAgICBRQ09PUkQgeTI7Cgp9
OwoKIGJvb2wgb3BlcmF0b3I9PSggY29uc3QgUVJlY3QgJiwgY29uc3QgUVJlY3QgJiApOwogYm9v
bCBvcGVyYXRvciE9KCBjb25zdCBRUmVjdCAmLCBjb25zdCBRUmVjdCAmICk7CgoKCgoKCiBRRGF0
YVN0cmVhbSAmb3BlcmF0b3I8PCggUURhdGFTdHJlYW0gJiwgY29uc3QgUVJlY3QgJiApOwogUURh
dGFTdHJlYW0gJm9wZXJhdG9yPj4oIFFEYXRhU3RyZWFtICYsIFFSZWN0ICYgKTsKCgoKCgoKaW5s
aW5lIFFSZWN0OjpRUmVjdCggaW50IGxlZnQsIGludCB0b3AsIGludCB3aWR0aCwgaW50IGhlaWdo
dCApCnsKICAgIHgxID0gKFFDT09SRClsZWZ0OwogICAgeTEgPSAoUUNPT1JEKXRvcDsKICAgIHgy
ID0gKFFDT09SRCkobGVmdCt3aWR0aC0xKTsKICAgIHkyID0gKFFDT09SRCkodG9wK2hlaWdodC0x
KTsKfQoKaW5saW5lIGJvb2wgUVJlY3Q6OmlzTnVsbCgpIGNvbnN0CnsgcmV0dXJuIHgyID09IHgx
LTEgJiYgeTIgPT0geTEtMTsgfQoKaW5saW5lIGJvb2wgUVJlY3Q6OmlzRW1wdHkoKSBjb25zdAp7
IHJldHVybiB4MSA+IHgyIHx8IHkxID4geTI7IH0KCmlubGluZSBib29sIFFSZWN0Ojppc1ZhbGlk
KCkgY29uc3QKeyByZXR1cm4geDEgPD0geDIgJiYgeTEgPD0geTI7IH0KCmlubGluZSBpbnQgUVJl
Y3Q6OmxlZnQoKSBjb25zdAp7IHJldHVybiB4MTsgfQoKaW5saW5lIGludCBRUmVjdDo6dG9wKCkg
Y29uc3QKeyByZXR1cm4geTE7IH0KCmlubGluZSBpbnQgUVJlY3Q6OnJpZ2h0KCkgY29uc3QKeyBy
ZXR1cm4geDI7IH0KCmlubGluZSBpbnQgUVJlY3Q6OmJvdHRvbSgpIGNvbnN0CnsgcmV0dXJuIHky
OyB9CgppbmxpbmUgUUNPT1JEICZRUmVjdDo6ckxlZnQoKQp7IHJldHVybiB4MTsgfQoKaW5saW5l
IFFDT09SRCAmIFFSZWN0OjpyVG9wKCkKeyByZXR1cm4geTE7IH0KCmlubGluZSBRQ09PUkQgJiBR
UmVjdDo6clJpZ2h0KCkKeyByZXR1cm4geDI7IH0KCmlubGluZSBRQ09PUkQgJiBRUmVjdDo6ckJv
dHRvbSgpCnsgcmV0dXJuIHkyOyB9CgppbmxpbmUgaW50IFFSZWN0Ojp4KCkgY29uc3QKeyByZXR1
cm4geDE7IH0KCmlubGluZSBpbnQgUVJlY3Q6OnkoKSBjb25zdAp7IHJldHVybiB5MTsgfQoKaW5s
aW5lIHZvaWQgUVJlY3Q6OnNldExlZnQoIGludCBwb3MgKQp7IHgxID0gKFFDT09SRClwb3M7IH0K
CmlubGluZSB2b2lkIFFSZWN0OjpzZXRUb3AoIGludCBwb3MgKQp7IHkxID0gKFFDT09SRClwb3M7
IH0KCmlubGluZSB2b2lkIFFSZWN0OjpzZXRSaWdodCggaW50IHBvcyApCnsgeDIgPSAoUUNPT1JE
KXBvczsgfQoKaW5saW5lIHZvaWQgUVJlY3Q6OnNldEJvdHRvbSggaW50IHBvcyApCnsgeTIgPSAo
UUNPT1JEKXBvczsgfQoKaW5saW5lIHZvaWQgUVJlY3Q6OnNldFgoIGludCB4ICkKeyB4MSA9IChR
Q09PUkQpeDsgfQoKaW5saW5lIHZvaWQgUVJlY3Q6OnNldFkoIGludCB5ICkKeyB5MSA9IChRQ09P
UkQpeTsgfQoKaW5saW5lIFFQb2ludCBRUmVjdDo6dG9wTGVmdCgpIGNvbnN0CnsgcmV0dXJuIFFQ
b2ludCh4MSwgeTEpOyB9CgppbmxpbmUgUVBvaW50IFFSZWN0Ojpib3R0b21SaWdodCgpIGNvbnN0
CnsgcmV0dXJuIFFQb2ludCh4MiwgeTIpOyB9CgppbmxpbmUgUVBvaW50IFFSZWN0Ojp0b3BSaWdo
dCgpIGNvbnN0CnsgcmV0dXJuIFFQb2ludCh4MiwgeTEpOyB9CgppbmxpbmUgUVBvaW50IFFSZWN0
Ojpib3R0b21MZWZ0KCkgY29uc3QKeyByZXR1cm4gUVBvaW50KHgxLCB5Mik7IH0KCmlubGluZSBR
UG9pbnQgUVJlY3Q6OmNlbnRlcigpIGNvbnN0CnsgcmV0dXJuIFFQb2ludCgoeDEreDIpLzIsICh5
MSt5MikvMik7IH0KCmlubGluZSBpbnQgUVJlY3Q6OndpZHRoKCkgY29uc3QKeyByZXR1cm4geDIg
LSB4MSArIDE7IH0KCmlubGluZSBpbnQgUVJlY3Q6OmhlaWdodCgpIGNvbnN0CnsgcmV0dXJuIHky
IC0geTEgKyAxOyB9CgppbmxpbmUgUVNpemUgUVJlY3Q6OnNpemUoKSBjb25zdAp7IHJldHVybiBR
U2l6ZSh4Mi14MSsxLCB5Mi15MSsxKTsgfQoKaW5saW5lIGJvb2wgUVJlY3Q6OmNvbnRhaW5zKCBp
bnQgeCwgaW50IHksIGJvb2wgcHJvcGVyICkgY29uc3QKewogICAgaWYgKCBwcm9wZXIgKQogICAg
ICAgIHJldHVybiB4ID4geDEgJiYgeCA8IHgyICYmCiAgICAgICAgICAgICAgIHkgPiB5MSAmJiB5
IDwgeTI7CiAgICBlbHNlCiAgICAgICAgcmV0dXJuIHggPj0geDEgJiYgeCA8PSB4MiAmJgogICAg
ICAgICAgICAgICB5ID49IHkxICYmIHkgPD0geTI7Cn0KIyA0NCAia2VybmVsL3FyZWdpb24uaCIg
MgoKCgoKY2xhc3MgUVJlZ2lvbgp7CnB1YmxpYzoKICAgIGVudW0gUmVnaW9uVHlwZSB7IFJlY3Rh
bmdsZSwgRWxsaXBzZSB9OwoKICAgIFFSZWdpb24oKTsKICAgIFFSZWdpb24oIGludCB4LCBpbnQg
eSwgaW50IHcsIGludCBoLCBSZWdpb25UeXBlID0gUmVjdGFuZ2xlICk7CiAgICBRUmVnaW9uKCBj
b25zdCBRUmVjdCAmLCBSZWdpb25UeXBlID0gUmVjdGFuZ2xlICk7CiAgICBRUmVnaW9uKCBjb25z
dCBRUG9pbnRBcnJheSAmLCBib29sIHdpbmRpbmc9RkFMU0UgKTsKICAgIFFSZWdpb24oIGNvbnN0
IFFSZWdpb24gJiApOwogICAgUVJlZ2lvbiggY29uc3QgUUJpdG1hcCAmICk7CiAgIH5RUmVnaW9u
KCk7CiAgICBRUmVnaW9uICZvcGVyYXRvcj0oIGNvbnN0IFFSZWdpb24gJiApOwoKICAgIGJvb2wg
aXNOdWxsKCkgY29uc3Q7CiAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKCiAgICBib29sIGNvbnRh
aW5zKCBjb25zdCBRUG9pbnQgJnAgKSBjb25zdDsKICAgIGJvb2wgY29udGFpbnMoIGNvbnN0IFFS
ZWN0ICZyICkgY29uc3Q7CgogICAgdm9pZCB0cmFuc2xhdGUoIGludCBkeCwgaW50IGR5ICk7Cgog
ICAgUVJlZ2lvbiB1bml0ZSggY29uc3QgUVJlZ2lvbiAmICkgY29uc3Q7CiAgICBRUmVnaW9uIGlu
dGVyc2VjdCggY29uc3QgUVJlZ2lvbiAmKSBjb25zdDsKICAgIFFSZWdpb24gc3VidHJhY3QoIGNv
bnN0IFFSZWdpb24gJiApIGNvbnN0OwogICAgUVJlZ2lvbiBlb3IoIGNvbnN0IFFSZWdpb24gJiAp
IGNvbnN0OwoKICAgIFFSZWN0IGJvdW5kaW5nUmVjdCgpIGNvbnN0OwogICAgUUFycmF5PFFSZWN0
PiByZWN0cygpIGNvbnN0OwogICAgdm9pZCBzZXRSZWN0cyggY29uc3QgUVJlY3QgKiwgaW50ICk7
CgogICAgUVJlZ2lvbiBvcGVyYXRvcnwoIGNvbnN0IFFSZWdpb24gJiApIGNvbnN0OwogICAgUVJl
Z2lvbiBvcGVyYXRvcisoIGNvbnN0IFFSZWdpb24gJiApIGNvbnN0OwogICAgUVJlZ2lvbiBvcGVy
YXRvciYoIGNvbnN0IFFSZWdpb24gJiApIGNvbnN0OwogICAgUVJlZ2lvbiBvcGVyYXRvci0oIGNv
bnN0IFFSZWdpb24gJiApIGNvbnN0OwogICAgUVJlZ2lvbiBvcGVyYXRvcl4oIGNvbnN0IFFSZWdp
b24gJiApIGNvbnN0OwogICAgUVJlZ2lvbiYgb3BlcmF0b3J8PSggY29uc3QgUVJlZ2lvbiAmICk7
CiAgICBRUmVnaW9uJiBvcGVyYXRvcis9KCBjb25zdCBRUmVnaW9uICYgKTsKICAgIFFSZWdpb24m
IG9wZXJhdG9yJj0oIGNvbnN0IFFSZWdpb24gJiApOwogICAgUVJlZ2lvbiYgb3BlcmF0b3ItPSgg
Y29uc3QgUVJlZ2lvbiAmICk7CiAgICBRUmVnaW9uJiBvcGVyYXRvcl49KCBjb25zdCBRUmVnaW9u
ICYgKTsKCiAgICBib29sIG9wZXJhdG9yPT0oIGNvbnN0IFFSZWdpb24gJiApIGNvbnN0OwogICAg
Ym9vbCBvcGVyYXRvciE9KCBjb25zdCBRUmVnaW9uICZyICkgY29uc3QKICAgICAgICAgICAgICAg
ICAgICAgICAgeyByZXR1cm4gIShvcGVyYXRvcj09KHIpKTsgfQoKCgoKICAgIFJlZ2lvbiBoYW5k
bGUoKSBjb25zdCB7IHJldHVybiBkYXRhLT5yZ247IH0KIyAxMDYgImtlcm5lbC9xcmVnaW9uLmgi
CiAgICBmcmllbmQgUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoIFFEYXRhU3RyZWFtICYsIGNvbnN0
IFFSZWdpb24gJiApOwogICAgZnJpZW5kIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+KCBRRGF0YVN0
cmVhbSAmLCBRUmVnaW9uICYgKTsKCnByaXZhdGU6CiAgICBRUmVnaW9uKCBib29sICk7CiAgICBR
UmVnaW9uIGNvcHkoKSBjb25zdDsKICAgIHZvaWQgZGV0YWNoKCk7CgoKCiAgICB2b2lkIGV4ZWMo
IGNvbnN0IFFCeXRlQXJyYXkgJiwgaW50IHZlciA9IDAgKTsKICAgIHN0cnVjdCBRUmVnaW9uRGF0
YSA6IHB1YmxpYyBRU2hhcmVkIHsKCgoKICAgICAgICBSZWdpb24gcmduOwogICAgICAgIFFSZWN0
IGJyOwoKCgoKCiAgICAgICAgYm9vbCBpc19udWxsOwogICAgfSAqZGF0YTsKfTsKIyAxNTAgImtl
cm5lbC9xcmVnaW9uLmgiCiBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PCggUURhdGFTdHJlYW0gJiwg
Y29uc3QgUVJlZ2lvbiAmICk7CiBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PiggUURhdGFTdHJlYW0g
JiwgUVJlZ2lvbiAmICk7CiMgNDQgImtlcm5lbC9xZXZlbnQuaCIgMgoKIyAxICJrZXJuZWwvcW1p
bWUuaCIgMQojIDQ3ICJrZXJuZWwvcW1pbWUuaCIKY2xhc3MgUU1pbWVTb3VyY2UgewpwdWJsaWM6
CiAgICB2aXJ0dWFsIH5RTWltZVNvdXJjZSgpOwogICAgdmlydHVhbCBjb25zdCBjaGFyKiBmb3Jt
YXQoIGludCBuID0gMCApIGNvbnN0ID0gMDsKICAgIHZpcnR1YWwgYm9vbCBwcm92aWRlcyggY29u
c3QgY2hhciogKSBjb25zdDsKICAgIHZpcnR1YWwgUUJ5dGVBcnJheSBlbmNvZGVkRGF0YSggY29u
c3QgY2hhciogKSBjb25zdCA9IDA7Cn07CgpjbGFzcyBRTWltZVNvdXJjZUZhY3RvcnlEYXRhOwpj
bGFzcyBRU3RyaW5nTGlzdDsKCmNsYXNzIFFNaW1lU291cmNlRmFjdG9yeSB7CnB1YmxpYzoKICAg
IFFNaW1lU291cmNlRmFjdG9yeSgpOwogICAgdmlydHVhbCB+UU1pbWVTb3VyY2VGYWN0b3J5KCk7
CgogICAgc3RhdGljIFFNaW1lU291cmNlRmFjdG9yeSogZGVmYXVsdEZhY3RvcnkoKTsKICAgIHN0
YXRpYyB2b2lkIHNldERlZmF1bHRGYWN0b3J5KCBRTWltZVNvdXJjZUZhY3RvcnkqICk7CgogICAg
dmlydHVhbCBjb25zdCBRTWltZVNvdXJjZSogZGF0YShjb25zdCBRU3RyaW5nJiBhYnNfbmFtZSkg
Y29uc3Q7CiAgICB2aXJ0dWFsIFFTdHJpbmcgbWFrZUFic29sdXRlKGNvbnN0IFFTdHJpbmcmIGFi
c19vcl9yZWxfbmFtZSwgY29uc3QgUVN0cmluZyYgY29udGV4dCkgY29uc3Q7CiAgICBjb25zdCBR
TWltZVNvdXJjZSogZGF0YShjb25zdCBRU3RyaW5nJiBhYnNfb3JfcmVsX25hbWUsIGNvbnN0IFFT
dHJpbmcmIGNvbnRleHQpIGNvbnN0OwoKICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0KCBjb25zdCBR
U3RyaW5nJiBhYnNfbmFtZSwgY29uc3QgUVN0cmluZyYgdGV4dCApOwogICAgdmlydHVhbCB2b2lk
IHNldEltYWdlKCBjb25zdCBRU3RyaW5nJiBhYnNfbmFtZSwgY29uc3QgUUltYWdlJiBpbSApOwog
ICAgdmlydHVhbCB2b2lkIHNldFBpeG1hcCggY29uc3QgUVN0cmluZyYgYWJzX25hbWUsIGNvbnN0
IFFQaXhtYXAmIHBtICk7CiAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YSggY29uc3QgUVN0cmluZyYg
YWJzX25hbWUsIFFNaW1lU291cmNlKiBkYXRhICk7CiAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsZVBh
dGgoIGNvbnN0IFFTdHJpbmdMaXN0JiApOwogICAgdmlydHVhbCBRU3RyaW5nTGlzdCBmaWxlUGF0
aCgpIGNvbnN0OwogICAgdm9pZCBhZGRGaWxlUGF0aCggY29uc3QgUVN0cmluZyYgKTsKICAgIHZp
cnR1YWwgdm9pZCBzZXRFeHRlbnNpb25UeXBlKCBjb25zdCBRU3RyaW5nJiBleHQsIGNvbnN0IGNo
YXIqIG1pbWV0eXBlICk7Cgpwcml2YXRlOgogICAgUU1pbWVTb3VyY2VGYWN0b3J5RGF0YSogZDsK
fTsKIyA0NiAia2VybmVsL3FldmVudC5oIiAyCgoKCmNsYXNzIFFFdmVudDogcHVibGljIFF0CnsK
cHVibGljOgogICAgZW51bSBUeXBlIHsKCgoKCgoKICAgICAgICBOb25lID0gMCwKCgogICAgICAg
IFRpbWVyID0gMSwKICAgICAgICBNb3VzZUJ1dHRvblByZXNzID0gMiwKICAgICAgICBNb3VzZUJ1
dHRvblJlbGVhc2UgPSAzLAogICAgICAgIE1vdXNlQnV0dG9uRGJsQ2xpY2s9IDQsCiAgICAgICAg
TW91c2VNb3ZlID0gNSwKICAgICAgICBLZXlQcmVzcyA9IDYsCiAgICAgICAgS2V5UmVsZWFzZSA9
IDcsCiAgICAgICAgRm9jdXNJbiA9IDgsCiAgICAgICAgRm9jdXNPdXQgPSA5LAogICAgICAgIEVu
dGVyID0gMTAsCiAgICAgICAgTGVhdmUgPSAxMSwKICAgICAgICBQYWludCA9IDEyLAogICAgICAg
IE1vdmUgPSAxMywKICAgICAgICBSZXNpemUgPSAxNCwKICAgICAgICBDcmVhdGUgPSAxNSwKICAg
ICAgICBEZXN0cm95ID0gMTYsCiAgICAgICAgU2hvdyA9IDE3LAogICAgICAgIEhpZGUgPSAxOCwK
ICAgICAgICBDbG9zZSA9IDE5LAogICAgICAgIFF1aXQgPSAyMCwKICAgICAgICBSZXBhcmVudCA9
IDIxLAogICAgICAgIFNob3dNaW5pbWl6ZWQgPSAyMiwKICAgICAgICBTaG93Tm9ybWFsID0gMjMs
CiAgICAgICAgV2luZG93QWN0aXZhdGUgPSAyNCwKICAgICAgICBXaW5kb3dEZWFjdGl2YXRlID0g
MjUsCiAgICAgICAgU2hvd1RvUGFyZW50ID0gMjYsCiAgICAgICAgSGlkZVRvUGFyZW50ID0gMjcs
CiAgICAgICAgU2hvd01heGltaXplZCA9IDI4LAogICAgICAgIEFjY2VsID0gMzAsCiAgICAgICAg
V2hlZWwgPSAzMSwKICAgICAgICBBY2NlbEF2YWlsYWJsZSA9IDMyLAogICAgICAgIENhcHRpb25D
aGFuZ2UgPSAzMywKICAgICAgICBJY29uQ2hhbmdlID0gMzQsCiAgICAgICAgUGFyZW50Rm9udENo
YW5nZSA9IDM1LAogICAgICAgIEFwcGxpY2F0aW9uRm9udENoYW5nZSA9IDM2LAogICAgICAgIFBh
cmVudFBhbGV0dGVDaGFuZ2UgPSAzNywKICAgICAgICBBcHBsaWNhdGlvblBhbGV0dGVDaGFuZ2Ug
PSAzOCwKICAgICAgICBDbGlwYm9hcmQgPSA0MCwKICAgICAgICBTcGVlY2ggPSA0MiwKICAgICAg
ICBTb2NrQWN0ID0gNTAsCiAgICAgICAgQWNjZWxPdmVycmlkZSA9IDUxLAogICAgICAgIERyYWdF
bnRlciA9IDYwLAogICAgICAgIERyYWdNb3ZlID0gNjEsCiAgICAgICAgRHJhZ0xlYXZlID0gNjIs
CiAgICAgICAgRHJvcCA9IDYzLAogICAgICAgIERyYWdSZXNwb25zZSA9IDY0LAogICAgICAgIENo
aWxkSW5zZXJ0ZWQgPSA3MCwKICAgICAgICBDaGlsZFJlbW92ZWQgPSA3MSwKICAgICAgICBMYXlv
dXRIaW50ID0gNzIsCiAgICAgICAgU2hvd1dpbmRvd1JlcXVlc3QgPSA3MywKICAgICAgICBBY3Rp
dmF0ZUNvbnRyb2wgPSA4MCwKICAgICAgICBEZWFjdGl2YXRlQ29udHJvbCA9IDgxLAogICAgICAg
IFVzZXIgPSAxMDAwCiAgICB9OwoKICAgIFFFdmVudCggVHlwZSB0eXBlICkgOiB0KHR5cGUpLCBw
b3N0ZWQoRkFMU0UpIHt9CiAgICB2aXJ0dWFsIH5RRXZlbnQoKTsKICAgIFR5cGUgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIHQ7IH0KcHJvdGVjdGVkOgogICAgVHlwZSB0Owpwcml2YXRlOgogICAgYm9v
bCBwb3N0ZWQ7CgoKCgogICAgZnJpZW5kIGNsYXNzIFFBcHBsaWNhdGlvbjsKICAgIGZyaWVuZCBj
bGFzcyBRQmFzZUFwcGxpY2F0aW9uOwp9OwoKCmNsYXNzIFFUaW1lckV2ZW50IDogcHVibGljIFFF
dmVudAp7CnB1YmxpYzoKICAgIFFUaW1lckV2ZW50KCBpbnQgdGltZXJJZCApCiAgICAgICAgOiBR
RXZlbnQoVGltZXIpLCBpZCh0aW1lcklkKSB7fQogICAgaW50IHRpbWVySWQoKSBjb25zdCB7IHJl
dHVybiBpZDsgfQpwcm90ZWN0ZWQ6CiAgICBpbnQgaWQ7Cn07CgoKY2xhc3MgUU1vdXNlRXZlbnQg
OiBwdWJsaWMgUUV2ZW50CnsKcHVibGljOgogICAgUU1vdXNlRXZlbnQoIFR5cGUgdHlwZSwgY29u
c3QgUVBvaW50ICZwb3MsIGludCBidXR0b24sIGludCBzdGF0ZSApOwoKICAgIFFNb3VzZUV2ZW50
KCBUeXBlIHR5cGUsIGNvbnN0IFFQb2ludCAmcG9zLCBjb25zdCBRUG9pbnQmZ2xvYmFsUG9zLAog
ICAgICAgICAgICAgICAgIGludCBidXR0b24sIGludCBzdGF0ZSApCiAgICAgICAgOiBRRXZlbnQo
dHlwZSksIHAocG9zKSwgZyhnbG9iYWxQb3MpLCBiKGJ1dHRvbikscygodXNob3J0KXN0YXRlKSB7
fTsKCiAgICBjb25zdCBRUG9pbnQgJnBvcygpIGNvbnN0IHsgcmV0dXJuIHA7IH0KICAgIGNvbnN0
IFFQb2ludCAmZ2xvYmFsUG9zKCkgY29uc3QgeyByZXR1cm4gZzsgfQogICAgaW50IHgoKSBjb25z
dCB7IHJldHVybiBwLngoKTsgfQogICAgaW50IHkoKSBjb25zdCB7IHJldHVybiBwLnkoKTsgfQog
ICAgaW50IGdsb2JhbFgoKSBjb25zdCB7IHJldHVybiBnLngoKTsgfQogICAgaW50IGdsb2JhbFko
KSBjb25zdCB7IHJldHVybiBnLnkoKTsgfQogICAgQnV0dG9uU3RhdGUgYnV0dG9uKCkgY29uc3Qg
eyByZXR1cm4gKEJ1dHRvblN0YXRlKSBiOyB9CiAgICBCdXR0b25TdGF0ZSBzdGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIChCdXR0b25TdGF0ZSkgczsgfQogICAgQnV0dG9uU3RhdGUgc3RhdGVBZnRlcigp
IGNvbnN0Owpwcm90ZWN0ZWQ6CiAgICBRUG9pbnQgcDsKICAgIFFQb2ludCBnOwogICAgaW50IGI7
CiAgICB1c2hvcnQgczsKfTsKCgoKY2xhc3MgUVdoZWVsRXZlbnQgOiBwdWJsaWMgUUV2ZW50CnsK
cHVibGljOgogICAgUVdoZWVsRXZlbnQoIGNvbnN0IFFQb2ludCAmcG9zLCBpbnQgZGVsdGEsIGlu
dCBzdGF0ZSApOwogICAgUVdoZWVsRXZlbnQoIGNvbnN0IFFQb2ludCAmcG9zLCBjb25zdCBRUG9p
bnQmIGdsb2JhbFBvcywgaW50IGRlbHRhLCBpbnQgc3RhdGUgKQogICAgICAgIDogUUV2ZW50KFdo
ZWVsKSwgcChwb3MpLCBnKGdsb2JhbFBvcyksIGQoZGVsdGEpLCBzKCh1c2hvcnQpc3RhdGUpLAog
ICAgICAgICAgYWNjcHQoVFJVRSkge30KICAgIGludCBkZWx0YSgpIGNvbnN0IHsgcmV0dXJuIGQ7
IH0KICAgIGNvbnN0IFFQb2ludCAmcG9zKCkgY29uc3QgeyByZXR1cm4gcDsgfQogICAgY29uc3Qg
UVBvaW50ICZnbG9iYWxQb3MoKSBjb25zdCB7IHJldHVybiBnOyB9CiAgICBpbnQgeCgpIGNvbnN0
IHsgcmV0dXJuIHAueCgpOyB9CiAgICBpbnQgeSgpIGNvbnN0IHsgcmV0dXJuIHAueSgpOyB9CiAg
ICBpbnQgZ2xvYmFsWCgpIGNvbnN0IHsgcmV0dXJuIGcueCgpOyB9CiAgICBpbnQgZ2xvYmFsWSgp
IGNvbnN0IHsgcmV0dXJuIGcueSgpOyB9CiAgICBCdXR0b25TdGF0ZSBzdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIEJ1dHRvblN0YXRlKHMpOyB9CiAgICBib29sIGlzQWNjZXB0ZWQoKSBjb25zdCB7IHJl
dHVybiBhY2NwdDsgfQogICAgdm9pZCBhY2NlcHQoKSB7IGFjY3B0ID0gVFJVRTsgfQogICAgdm9p
ZCBpZ25vcmUoKSB7IGFjY3B0ID0gRkFMU0U7IH0KcHJvdGVjdGVkOgogICAgUVBvaW50IHA7CiAg
ICBRUG9pbnQgZzsKICAgIGludCBkOwogICAgdXNob3J0IHM7CiAgICBib29sIGFjY3B0Owp9OwoK
CmNsYXNzIFFLZXlFdmVudCA6IHB1YmxpYyBRRXZlbnQKewpwdWJsaWM6CiAgICBRS2V5RXZlbnQo
IFR5cGUgdHlwZSwgaW50IGtleSwgaW50IGFzY2lpLCBpbnQgc3RhdGUsCiAgICAgICAgICAgICAg
ICBjb25zdCBRU3RyaW5nJiB0ZXh0PVFTdHJpbmc6Om51bGwsIGJvb2wgYXV0b3JlcD1GQUxTRSwg
dXNob3J0IGNvdW50PTEgKQogICAgICAgIDogUUV2ZW50KHR5cGUpLCB0eHQodGV4dCksIGsoKHVz
aG9ydClrZXkpLCBzKCh1c2hvcnQpc3RhdGUpLAogICAgICAgICAgICBhKCh1Y2hhcilhc2NpaSks
IGFjY3B0KFRSVUUpLCBhdXRvcihhdXRvcmVwKSwgYyhjb3VudCkge30KICAgIGludCBrZXkoKSBj
b25zdCB7IHJldHVybiBrOyB9CiAgICBpbnQgYXNjaWkoKSBjb25zdCB7IHJldHVybiBhOyB9CiAg
ICBCdXR0b25TdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIEJ1dHRvblN0YXRlKHMpOyB9CiAg
ICBCdXR0b25TdGF0ZSBzdGF0ZUFmdGVyKCkgY29uc3Q7CiAgICBib29sIGlzQWNjZXB0ZWQoKSBj
b25zdCB7IHJldHVybiBhY2NwdDsgfQogICAgUVN0cmluZyB0ZXh0KCkgY29uc3QgeyByZXR1cm4g
dHh0OyB9CiAgICBib29sIGlzQXV0b1JlcGVhdCgpIGNvbnN0IHsgcmV0dXJuIGF1dG9yOyB9CiAg
ICBpbnQgY291bnQoKSBjb25zdCB7IHJldHVybiBpbnQoYyk7IH0KICAgIHZvaWQgYWNjZXB0KCkg
eyBhY2NwdCA9IFRSVUU7IH0KICAgIHZvaWQgaWdub3JlKCkgeyBhY2NwdCA9IEZBTFNFOyB9Cgpw
cm90ZWN0ZWQ6CiAgICBRU3RyaW5nIHR4dDsKICAgIHVzaG9ydCBrLCBzOwogICAgdWNoYXIgYTsK
ICAgIHVpbnQgYWNjcHQ6MTsKICAgIHVpbnQgYXV0b3I6MTsKICAgIHVzaG9ydCBjOwp9OwoKCmNs
YXNzIFFGb2N1c0V2ZW50IDogcHVibGljIFFFdmVudAp7CnB1YmxpYzoKCiAgICBRRm9jdXNFdmVu
dCggVHlwZSB0eXBlICkKICAgICAgICA6IFFFdmVudCh0eXBlKSB7fQoKICAgIGJvb2wgZ290Rm9j
dXMoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gRm9jdXNJbjsgfQogICAgYm9vbCBsb3N0Rm9j
dXMoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gRm9jdXNPdXQ7IH0KCiAgICBlbnVtIFJlYXNv
biB7IE1vdXNlLCBUYWIsIEFjdGl2ZVdpbmRvdywgUG9wdXAsIFNob3J0Y3V0LCBPdGhlciB9Owog
ICAgc3RhdGljIFJlYXNvbiByZWFzb24oKTsKICAgIHN0YXRpYyB2b2lkIHNldFJlYXNvbiggUmVh
c29uIHJlYXNvbiApOwogICAgc3RhdGljIHZvaWQgcmVzZXRSZWFzb24oKTsKCnByaXZhdGU6CiAg
ICBzdGF0aWMgUmVhc29uIG1fcmVhc29uOwogICAgc3RhdGljIFJlYXNvbiBwcmV2X3JlYXNvbjsK
fTsKCgpjbGFzcyBRUGFpbnRFdmVudCA6IHB1YmxpYyBRRXZlbnQKewpwdWJsaWM6CiAgICBRUGFp
bnRFdmVudCggY29uc3QgUVJlZ2lvbiYgcGFpbnRSZWdpb24sIGJvb2wgZXJhc2VkID0gVFJVRSkK
ICAgICAgICA6IFFFdmVudChQYWludCksCiAgICAgICAgICByZWMocGFpbnRSZWdpb24uYm91bmRp
bmdSZWN0KCkpLAogICAgICAgICAgcmVnKHBhaW50UmVnaW9uKSwKICAgICAgICAgIGVyYXNlKGVy
YXNlZCl7fQogICAgUVBhaW50RXZlbnQoIGNvbnN0IFFSZWN0ICZwYWludFJlY3QsIGJvb2wgZXJh
c2VkID0gVFJVRSApCiAgICAgICAgOiBRRXZlbnQoUGFpbnQpLAogICAgICAgICAgcmVjKHBhaW50
UmVjdCksCiAgICAgICAgICByZWcocGFpbnRSZWN0KSwKICAgICAgICAgIGVyYXNlKGVyYXNlZCl7
fQogICAgY29uc3QgUVJlY3QgJnJlY3QoKSBjb25zdCB7IHJldHVybiByZWM7IH0KICAgIGNvbnN0
IFFSZWdpb24gJnJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIHJlZzsgfQogICAgYm9vbCBlcmFzZWQo
KSBjb25zdCB7IHJldHVybiBlcmFzZTsgfQpwcm90ZWN0ZWQ6CiAgICBmcmllbmQgY2xhc3MgUUFw
cGxpY2F0aW9uOwogICAgZnJpZW5kIGNsYXNzIFFCYXNlQXBwbGljYXRpb247CiAgICBRUmVjdCBy
ZWM7CiAgICBRUmVnaW9uIHJlZzsKICAgIGJvb2wgZXJhc2U7Cn07CgoKY2xhc3MgUU1vdmVFdmVu
dCA6IHB1YmxpYyBRRXZlbnQKewpwdWJsaWM6CiAgICBRTW92ZUV2ZW50KCBjb25zdCBRUG9pbnQg
JnBvcywgY29uc3QgUVBvaW50ICZvbGRQb3MgKQogICAgICAgIDogUUV2ZW50KE1vdmUpLCBwKHBv
cyksIG9sZHAob2xkUG9zKSB7fQogICAgY29uc3QgUVBvaW50ICZwb3MoKSBjb25zdCB7IHJldHVy
biBwOyB9CiAgICBjb25zdCBRUG9pbnQgJm9sZFBvcygpY29uc3QgeyByZXR1cm4gb2xkcDt9CnBy
b3RlY3RlZDoKICAgIFFQb2ludCBwLCBvbGRwOwogICAgZnJpZW5kIGNsYXNzIFFBcHBsaWNhdGlv
bjsKICAgIGZyaWVuZCBjbGFzcyBRQmFzZUFwcGxpY2F0aW9uOwp9OwoKCmNsYXNzIFFSZXNpemVF
dmVudCA6IHB1YmxpYyBRRXZlbnQKewpwdWJsaWM6CiAgICBRUmVzaXplRXZlbnQoIGNvbnN0IFFT
aXplICZzaXplLCBjb25zdCBRU2l6ZSAmb2xkU2l6ZSApCiAgICAgICAgOiBRRXZlbnQoUmVzaXpl
KSwgcyhzaXplKSwgb2xkcyhvbGRTaXplKSB7fQogICAgY29uc3QgUVNpemUgJnNpemUoKSBjb25z
dCB7IHJldHVybiBzOyB9CiAgICBjb25zdCBRU2l6ZSAmb2xkU2l6ZSgpY29uc3QgeyByZXR1cm4g
b2xkczt9CnByb3RlY3RlZDoKICAgIFFTaXplIHMsIG9sZHM7CiAgICBmcmllbmQgY2xhc3MgUUFw
cGxpY2F0aW9uOwogICAgZnJpZW5kIGNsYXNzIFFCYXNlQXBwbGljYXRpb247Cn07CgoKY2xhc3Mg
UUNsb3NlRXZlbnQgOiBwdWJsaWMgUUV2ZW50CnsKcHVibGljOgogICAgUUNsb3NlRXZlbnQoKQog
ICAgICAgIDogUUV2ZW50KENsb3NlKSwgYWNjcHQoRkFMU0UpIHt9CiAgICBib29sIGlzQWNjZXB0
ZWQoKSBjb25zdCB7IHJldHVybiBhY2NwdDsgfQogICAgdm9pZCBhY2NlcHQoKSB7IGFjY3B0ID0g
VFJVRTsgfQogICAgdm9pZCBpZ25vcmUoKSB7IGFjY3B0ID0gRkFMU0U7IH0KcHJvdGVjdGVkOgog
ICAgYm9vbCBhY2NwdDsKfTsKCgpjbGFzcyBRU2hvd0V2ZW50IDogcHVibGljIFFFdmVudAp7CnB1
YmxpYzoKICAgIFFTaG93RXZlbnQoYm9vbCBzcG9udGFuZW91cykKICAgICAgICA6IFFFdmVudChT
aG93KSwgc3BvbnQoc3BvbnRhbmVvdXMpIHt9CiAgICBib29sIHNwb250YW5lb3VzKCkgY29uc3Qg
eyByZXR1cm4gc3BvbnQ7IH0KcHJvdGVjdGVkOgogICAgYm9vbCBzcG9udDsKfTsKCgpjbGFzcyBR
SGlkZUV2ZW50IDogcHVibGljIFFFdmVudAp7CnB1YmxpYzoKICAgIFFIaWRlRXZlbnQoYm9vbCBz
cG9udGFuZW91cykKICAgICAgICA6IFFFdmVudChIaWRlKSwgc3BvbnQoc3BvbnRhbmVvdXMpIHt9
CiAgICBib29sIHNwb250YW5lb3VzKCkgY29uc3QgeyByZXR1cm4gc3BvbnQ7IH0KcHJvdGVjdGVk
OgogICAgYm9vbCBzcG9udDsKfTsKCgoKCgoKCmNsYXNzIFFEcm9wRXZlbnQgOiBwdWJsaWMgUUV2
ZW50LCBwdWJsaWMgUU1pbWVTb3VyY2UKewpwdWJsaWM6CiAgICBRRHJvcEV2ZW50KCBjb25zdCBR
UG9pbnQmIHBvcywgVHlwZSB0eXA9RHJvcCApCiAgICAgICAgOiBRRXZlbnQodHlwKSwgcChwb3Mp
LAogICAgICAgICAgYWN0KDApLCBhY2NwdCgwKSwgYWNjcHRhY3QoMCksIHJlc3YoMCksCiAgICAg
ICAgICBkKDApCiAgICAgICAge30KICAgIGNvbnN0IFFQb2ludCAmcG9zKCkgY29uc3QgeyByZXR1
cm4gcDsgfQogICAgYm9vbCBpc0FjY2VwdGVkKCkgY29uc3QgeyByZXR1cm4gYWNjcHQgfHwgYWNj
cHRhY3Q7IH0KICAgIHZvaWQgYWNjZXB0KGJvb2wgeT1UUlVFKSB7IGFjY3B0ID0geTsgfQogICAg
dm9pZCBpZ25vcmUoKSB7IGFjY3B0ID0gRkFMU0U7IH0KCiAgICBib29sIGlzQWN0aW9uQWNjZXB0
ZWQoKSBjb25zdCB7IHJldHVybiBhY2NwdGFjdDsgfQogICAgdm9pZCBhY2NlcHRBY3Rpb24oYm9v
bCB5PVRSVUUpIHsgYWNjcHRhY3QgPSB5OyB9CiAgICBlbnVtIEFjdGlvbiB7IENvcHksIExpbmss
IE1vdmUsIFByaXZhdGUsIFVzZXJBY3Rpb249MTAwIH07CiAgICB2b2lkIHNldEFjdGlvbiggQWN0
aW9uIGEgKSB7IGFjdCA9ICh1aW50KWE7IH0KICAgIEFjdGlvbiBhY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBBY3Rpb24oYWN0KTsgfQoKICAgIFFXaWRnZXQqIHNvdXJjZSgpIGNvbnN0OwogICAgY29u
c3QgY2hhciogZm9ybWF0KCBpbnQgbiA9IDAgKSBjb25zdDsKICAgIFFCeXRlQXJyYXkgZW5jb2Rl
ZERhdGEoIGNvbnN0IGNoYXIqICkgY29uc3Q7CiAgICBib29sIHByb3ZpZGVzKCBjb25zdCBjaGFy
KiApIGNvbnN0OwoKICAgIFFCeXRlQXJyYXkgZGF0YShjb25zdCBjaGFyKiBmKSBjb25zdCB7IHJl
dHVybiBlbmNvZGVkRGF0YShmKTsgfQoKICAgIHZvaWQgc2V0UG9pbnQoIGNvbnN0IFFQb2ludCYg
bnAgKSB7IHAgPSBucDsgfQoKcHJvdGVjdGVkOgogICAgUVBvaW50IHA7CiAgICB1aW50IGFjdDo4
OwogICAgdWludCBhY2NwdDoxOwogICAgdWludCBhY2NwdGFjdDoxOwogICAgdWludCByZXN2OjU7
CiAgICB2b2lkICogZDsKfTsKCgoKY2xhc3MgUURyYWdNb3ZlRXZlbnQgOiBwdWJsaWMgUURyb3BF
dmVudAp7CnB1YmxpYzoKICAgIFFEcmFnTW92ZUV2ZW50KCBjb25zdCBRUG9pbnQmIHBvcywgVHlw
ZSB0eXA9RHJhZ01vdmUgKQogICAgICAgIDogUURyb3BFdmVudChwb3MsdHlwKSwKICAgICAgICAg
IHJlY3QoIHBvcywgUVNpemUoIDEsIDEgKSApIHt9CiAgICBRUmVjdCBhbnN3ZXJSZWN0KCkgY29u
c3QgeyByZXR1cm4gcmVjdDsgfQogICAgdm9pZCBhY2NlcHQoIGJvb2wgeT1UUlVFICkgeyBRRHJv
cEV2ZW50OjphY2NlcHQoeSk7IH0KICAgIHZvaWQgYWNjZXB0KCBjb25zdCBRUmVjdCAmIHIpIHsg
YWNjcHQgPSBUUlVFOyByZWN0ID0gcjsgfQogICAgdm9pZCBpZ25vcmUoIGNvbnN0IFFSZWN0ICYg
cikgeyBhY2NwdCA9RkFMU0U7IHJlY3QgPSByOyB9CiAgICB2b2lkIGlnbm9yZSgpIHsgUURyb3BF
dmVudDo6aWdub3JlKCk7IH0KCnByb3RlY3RlZDoKICAgIFFSZWN0IHJlY3Q7Cn07CgoKY2xhc3Mg
UURyYWdFbnRlckV2ZW50IDogcHVibGljIFFEcmFnTW92ZUV2ZW50CnsKcHVibGljOgogICAgUURy
YWdFbnRlckV2ZW50KCBjb25zdCBRUG9pbnQmIHBvcyApIDoKICAgICAgICBRRHJhZ01vdmVFdmVu
dChwb3MsIERyYWdFbnRlcikgeyB9Cn07CgoKCmNsYXNzIFFEcmFnUmVzcG9uc2VFdmVudCA6IHB1
YmxpYyBRRXZlbnQKewpwdWJsaWM6CiAgICBRRHJhZ1Jlc3BvbnNlRXZlbnQoIGJvb2wgYWNjZXB0
ZWQgKQogICAgICAgIDogUUV2ZW50KERyYWdSZXNwb25zZSksIGEoYWNjZXB0ZWQpIHt9CiAgICBi
b29sIGRyYWdBY2NlcHRlZCgpIGNvbnN0IHsgcmV0dXJuIGE7IH0KcHJvdGVjdGVkOgogICAgYm9v
bCBhOwp9OwoKCmNsYXNzIFFEcmFnTGVhdmVFdmVudCA6IHB1YmxpYyBRRXZlbnQKewpwdWJsaWM6
CiAgICBRRHJhZ0xlYXZlRXZlbnQoKQogICAgICAgIDogUUV2ZW50KERyYWdMZWF2ZSkge30KfTsK
CgoKY2xhc3MgUUNoaWxkRXZlbnQgOiBwdWJsaWMgUUV2ZW50CnsKcHVibGljOgogICAgUUNoaWxk
RXZlbnQoIFR5cGUgdHlwZSwgUU9iamVjdCAqY2hpbGQgKQogICAgICAgIDogUUV2ZW50KHR5cGUp
LCBjKGNoaWxkKSB7fQogICAgUU9iamVjdCAqY2hpbGQoKSBjb25zdCB7IHJldHVybiBjOyB9CiAg
ICBib29sIGluc2VydGVkKCkgY29uc3QgeyByZXR1cm4gdCA9PSBDaGlsZEluc2VydGVkOyB9CiAg
ICBib29sIHJlbW92ZWQoKSBjb25zdCB7IHJldHVybiB0ID09IENoaWxkUmVtb3ZlZDsgfQpwcm90
ZWN0ZWQ6CiAgICBRT2JqZWN0ICpjOwp9OwoKCmNsYXNzIFFDdXN0b21FdmVudCA6IHB1YmxpYyBR
RXZlbnQKewpwdWJsaWM6CiAgICBRQ3VzdG9tRXZlbnQoIGludCB0eXBlICk7CiAgICBRQ3VzdG9t
RXZlbnQoIFR5cGUgdHlwZSwgdm9pZCAqZGF0YSApCiAgICAgICAgOiBRRXZlbnQodHlwZSksIGQo
ZGF0YSkge307CiAgICB2b2lkICpkYXRhKCkgY29uc3QgeyByZXR1cm4gZDsgfQogICAgdm9pZCBz
ZXREYXRhKCB2b2lkKiBkYXRhICkgeyBkID0gZGF0YTsgfQpwcml2YXRlOgogICAgdm9pZCAqZDsK
fTsKIyA0NiAia2VybmVsL3FvYmplY3QuaCIgMgoKIyAxICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlM
RC9xdC0yLjMuMi9pbmNsdWRlL3FzdHJpbmdsaXN0LmgiIDEKIyA0MiAiL3Vzci9zcmMvcGFja2Fn
ZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xc3RyaW5nbGlzdC5oIgojIDEgIi91c3Ivc3JjL3Bh
Y2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUvcXZhbHVlbGlzdC5oIiAxCiMgNDMgIi91c3Iv
c3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUvcXZhbHVlbGlzdC5oIgojIDEgIi91
c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUvcWRhdGFzdHJlYW0uaCIgMQoj
IDQyICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3FkYXRhc3RyZWFt
LmgiCiMgMSAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xaW9kZXZp
Y2UuaCIgMQojIDg4ICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3Fp
b2RldmljZS5oIgpjbGFzcyBRSU9EZXZpY2UKewpwdWJsaWM6CiAgICBRSU9EZXZpY2UoKTsKICAg
IHZpcnR1YWwgflFJT0RldmljZSgpOwoKICAgIGludCBmbGFncygpIGNvbnN0IHsgcmV0dXJuIGlv
TW9kZTsgfQogICAgaW50IG1vZGUoKSBjb25zdCB7IHJldHVybiBpb01vZGUgJiAweDAwZmY7IH0K
ICAgIGludCBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGlvTW9kZSAmIDB4ZjAwMDsgfQoKICAgIGJv
b2wgaXNEaXJlY3RBY2Nlc3MoKSBjb25zdCB7IHJldHVybiAoKGlvTW9kZSAmIDB4MDEwMCkgPT0g
MHgwMTAwKTsgfQogICAgYm9vbCBpc1NlcXVlbnRpYWxBY2Nlc3MoKSBjb25zdCB7IHJldHVybiAo
KGlvTW9kZSAmIDB4MDIwMCkgPT0gMHgwMjAwKTsgfQogICAgYm9vbCBpc0NvbWJpbmVkQWNjZXNz
KCkgY29uc3QgeyByZXR1cm4gKChpb01vZGUgJiAweDAzMDApID09IDB4MDMwMCk7IH0KICAgIGJv
b2wgaXNCdWZmZXJlZCgpIGNvbnN0IHsgcmV0dXJuICgoaW9Nb2RlICYgMHgwMDQwKSAhPSAweDAw
NDApOyB9CiAgICBib29sIGlzUmF3KCkgY29uc3QgeyByZXR1cm4gKChpb01vZGUgJiAweDAwNDAp
ID09IDB4MDA0MCk7IH0KICAgIGJvb2wgaXNTeW5jaHJvbm91cygpIGNvbnN0IHsgcmV0dXJuICgo
aW9Nb2RlICYgMHgwMDgwKSAhPSAweDAwODApOyB9CiAgICBib29sIGlzQXN5bmNocm9ub3VzKCkg
Y29uc3QgeyByZXR1cm4gKChpb01vZGUgJiAweDAwODApID09IDB4MDA4MCk7IH0KICAgIGJvb2wg
aXNUcmFuc2xhdGVkKCkgY29uc3QgeyByZXR1cm4gKChpb01vZGUgJiAweDAwMTApID09IDB4MDAx
MCk7IH0KICAgIGJvb2wgaXNSZWFkYWJsZSgpIGNvbnN0IHsgcmV0dXJuICgoaW9Nb2RlICYgMHgw
MDAxKSA9PSAweDAwMDEpOyB9CiAgICBib29sIGlzV3JpdGFibGUoKSBjb25zdCB7IHJldHVybiAo
KGlvTW9kZSAmIDB4MDAwMikgPT0gMHgwMDAyKTsgfQogICAgYm9vbCBpc1JlYWRXcml0ZSgpIGNv
bnN0IHsgcmV0dXJuICgoaW9Nb2RlICYgMHgwMDAzKSA9PSAweDAwMDMpOyB9CiAgICBib29sIGlz
SW5hY3RpdmUoKSBjb25zdCB7IHJldHVybiBzdGF0ZSgpID09IDA7IH0KICAgIGJvb2wgaXNPcGVu
KCkgY29uc3QgeyByZXR1cm4gc3RhdGUoKSA9PSAweDEwMDA7IH0KCiAgICBpbnQgc3RhdHVzKCkg
Y29uc3QgeyByZXR1cm4gaW9TdDsgfQogICAgdm9pZCByZXNldFN0YXR1cygpIHsgaW9TdCA9IDA7
IH0KCiAgICB2aXJ0dWFsIGJvb2wgb3BlbiggaW50IG1vZGUgKSA9IDA7CiAgICB2aXJ0dWFsIHZv
aWQgY2xvc2UoKSA9IDA7CiAgICB2aXJ0dWFsIHZvaWQgZmx1c2goKSA9IDA7CgogICAgdmlydHVh
bCB1aW50IHNpemUoKSBjb25zdCA9IDA7CiAgICB2aXJ0dWFsIGludCBhdCgpIGNvbnN0OwogICAg
dmlydHVhbCBib29sIGF0KCBpbnQgKTsKICAgIHZpcnR1YWwgYm9vbCBhdEVuZCgpIGNvbnN0Owog
ICAgYm9vbCByZXNldCgpIHsgcmV0dXJuIGF0KDApOyB9CgogICAgdmlydHVhbCBpbnQgcmVhZEJs
b2NrKCBjaGFyICpkYXRhLCB1aW50IG1heGxlbiApID0gMDsKICAgIHZpcnR1YWwgaW50IHdyaXRl
QmxvY2soIGNvbnN0IGNoYXIgKmRhdGEsIHVpbnQgbGVuICkgPSAwOwogICAgdmlydHVhbCBpbnQg
cmVhZExpbmUoIGNoYXIgKmRhdGEsIHVpbnQgbWF4bGVuICk7CiAgICBpbnQgd3JpdGVCbG9jaygg
Y29uc3QgUUJ5dGVBcnJheSYgZGF0YSApOwogICAgUUJ5dGVBcnJheSByZWFkQWxsKCk7CgogICAg
dmlydHVhbCBpbnQgZ2V0Y2goKSA9IDA7CiAgICB2aXJ0dWFsIGludCBwdXRjaCggaW50ICkgPSAw
OwogICAgdmlydHVhbCBpbnQgdW5nZXRjaCggaW50ICkgPSAwOwoKcHJvdGVjdGVkOgogICAgdm9p
ZCBzZXRGbGFncyggaW50IGYgKSB7IGlvTW9kZSA9IGY7IH0KICAgIHZvaWQgc2V0VHlwZSggaW50
ICk7CiAgICB2b2lkIHNldE1vZGUoIGludCApOwogICAgdm9pZCBzZXRTdGF0ZSggaW50ICk7CiAg
ICB2b2lkIHNldFN0YXR1cyggaW50ICk7CiAgICBpbnQgaW9JbmRleDsKCnByaXZhdGU6CiAgICBp
bnQgaW9Nb2RlOwogICAgaW50IGlvU3Q7Cgpwcml2YXRlOgoKICAgIFFJT0RldmljZSggY29uc3Qg
UUlPRGV2aWNlICYgKTsKICAgIFFJT0RldmljZSAmb3BlcmF0b3I9KCBjb25zdCBRSU9EZXZpY2Ug
JiApOwoKfTsKIyA0MyAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9x
ZGF0YXN0cmVhbS5oIiAyCgoKCgpjbGFzcyBRRGF0YVN0cmVhbQp7CnB1YmxpYzoKICAgIFFEYXRh
U3RyZWFtKCk7CiAgICBRRGF0YVN0cmVhbSggUUlPRGV2aWNlICogKTsKICAgIFFEYXRhU3RyZWFt
KCBRQnl0ZUFycmF5LCBpbnQgbW9kZSApOwogICAgdmlydHVhbCB+UURhdGFTdHJlYW0oKTsKCiAg
ICBRSU9EZXZpY2UgKmRldmljZSgpIGNvbnN0OwogICAgdm9pZCBzZXREZXZpY2UoIFFJT0Rldmlj
ZSAqICk7CiAgICB2b2lkIHVuc2V0RGV2aWNlKCk7CgogICAgYm9vbCBhdEVuZCgpIGNvbnN0Owog
ICAgYm9vbCBlb2YoKSBjb25zdDsKCiAgICBlbnVtIEJ5dGVPcmRlciB7IEJpZ0VuZGlhbiwgTGl0
dGxlRW5kaWFuIH07CiAgICBpbnQgYnl0ZU9yZGVyKCkgY29uc3Q7CiAgICB2b2lkIHNldEJ5dGVP
cmRlciggaW50ICk7CgogICAgYm9vbCBpc1ByaW50YWJsZURhdGEoKSBjb25zdDsKICAgIHZvaWQg
c2V0UHJpbnRhYmxlRGF0YSggYm9vbCApOwoKICAgIGludCB2ZXJzaW9uKCkgY29uc3Q7CiAgICB2
b2lkIHNldFZlcnNpb24oIGludCApOwoKICAgIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+KCBRX0lO
VDggJmkgKTsKICAgIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+KCBRX1VJTlQ4ICZpICk7CiAgICBR
RGF0YVN0cmVhbSAmb3BlcmF0b3I+PiggUV9JTlQxNiAmaSApOwogICAgUURhdGFTdHJlYW0gJm9w
ZXJhdG9yPj4oIFFfVUlOVDE2ICZpICk7CiAgICBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PiggUV9J
TlQzMiAmaSApOwogICAgUURhdGFTdHJlYW0gJm9wZXJhdG9yPj4oIFFfVUlOVDMyICZpICk7CiAg
ICBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PiggUV9JTlQ2NCAmaSApOwogICAgUURhdGFTdHJlYW0g
Jm9wZXJhdG9yPj4oIFFfVUlOVDY0ICZpICk7CgogICAgUURhdGFTdHJlYW0gJm9wZXJhdG9yPj4o
IGZsb2F0ICZmICk7CiAgICBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PiggZG91YmxlICZmICk7CiAg
ICBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PiggY2hhciAqJnN0ciApOwoKICAgIFFEYXRhU3RyZWFt
ICZvcGVyYXRvcjw8KCBRX0lOVDggaSApOwogICAgUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoIFFf
VUlOVDggaSApOwogICAgUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoIFFfSU5UMTYgaSApOwogICAg
UURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoIFFfVUlOVDE2IGkgKTsKICAgIFFEYXRhU3RyZWFtICZv
cGVyYXRvcjw8KCBRX0lOVDMyIGkgKTsKICAgIFFEYXRhU3RyZWFtICZvcGVyYXRvcjw8KCBRX1VJ
TlQzMiBpICk7CiAgICBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PCggUV9JTlQ2NCBpICk7CiAgICBR
RGF0YVN0cmVhbSAmb3BlcmF0b3I8PCggUV9VSU5UNjQgaSApOwogICAgUURhdGFTdHJlYW0gJm9w
ZXJhdG9yPDwoIGZsb2F0IGYgKTsKICAgIFFEYXRhU3RyZWFtICZvcGVyYXRvcjw8KCBkb3VibGUg
ZiApOwogICAgUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoIGNvbnN0IGNoYXIgKnN0ciApOwoKICAg
IFFEYXRhU3RyZWFtICZyZWFkQnl0ZXMoIGNoYXIgKiYsIHVpbnQgJmxlbiApOwogICAgUURhdGFT
dHJlYW0gJnJlYWRSYXdCeXRlcyggY2hhciAqLCB1aW50IGxlbiApOwoKICAgIFFEYXRhU3RyZWFt
ICZ3cml0ZUJ5dGVzKCBjb25zdCBjaGFyICosIHVpbnQgbGVuICk7CiAgICBRRGF0YVN0cmVhbSAm
d3JpdGVSYXdCeXRlcyggY29uc3QgY2hhciAqLCB1aW50IGxlbiApOwoKcHJpdmF0ZToKICAgIFFJ
T0RldmljZSAqZGV2OwogICAgYm9vbCBvd25kZXY7CiAgICBpbnQgYnl0ZW9yZGVyOwogICAgYm9v
bCBwcmludGFibGU7CiAgICBib29sIG5vc3dhcDsKICAgIGludCB2ZXI7Cgpwcml2YXRlOgoKICAg
IFFEYXRhU3RyZWFtKCBjb25zdCBRRGF0YVN0cmVhbSAmICk7CiAgICBRRGF0YVN0cmVhbSAmb3Bl
cmF0b3I9KCBjb25zdCBRRGF0YVN0cmVhbSAmICk7Cgp9OwoKCgoKCgppbmxpbmUgUUlPRGV2aWNl
ICpRRGF0YVN0cmVhbTo6ZGV2aWNlKCkgY29uc3QKeyByZXR1cm4gZGV2OyB9CgppbmxpbmUgYm9v
bCBRRGF0YVN0cmVhbTo6YXRFbmQoKSBjb25zdAp7IHJldHVybiBkZXYgPyBkZXYtPmF0RW5kKCkg
OiBUUlVFOyB9CgppbmxpbmUgYm9vbCBRRGF0YVN0cmVhbTo6ZW9mKCkgY29uc3QKeyByZXR1cm4g
YXRFbmQoKTsgfQoKaW5saW5lIGludCBRRGF0YVN0cmVhbTo6Ynl0ZU9yZGVyKCkgY29uc3QKeyBy
ZXR1cm4gYnl0ZW9yZGVyOyB9CgppbmxpbmUgYm9vbCBRRGF0YVN0cmVhbTo6aXNQcmludGFibGVE
YXRhKCkgY29uc3QKeyByZXR1cm4gcHJpbnRhYmxlOyB9CgppbmxpbmUgdm9pZCBRRGF0YVN0cmVh
bTo6c2V0UHJpbnRhYmxlRGF0YSggYm9vbCBwICkKeyBwcmludGFibGUgPSBwOyB9CgppbmxpbmUg
aW50IFFEYXRhU3RyZWFtOjp2ZXJzaW9uKCkgY29uc3QKeyByZXR1cm4gdmVyOyB9CgppbmxpbmUg
dm9pZCBRRGF0YVN0cmVhbTo6c2V0VmVyc2lvbiggaW50IHYgKQp7IHZlciA9IHY7IH0KCmlubGlu
ZSBRRGF0YVN0cmVhbSAmUURhdGFTdHJlYW06Om9wZXJhdG9yPj4oIFFfVUlOVDggJmkgKQp7IHJl
dHVybiAqdGhpcyA+PiAoUV9JTlQ4JilpOyB9CgppbmxpbmUgUURhdGFTdHJlYW0gJlFEYXRhU3Ry
ZWFtOjpvcGVyYXRvcj4+KCBRX1VJTlQxNiAmaSApCnsgcmV0dXJuICp0aGlzID4+IChRX0lOVDE2
JilpOyB9CgppbmxpbmUgUURhdGFTdHJlYW0gJlFEYXRhU3RyZWFtOjpvcGVyYXRvcj4+KCBRX1VJ
TlQzMiAmaSApCnsgcmV0dXJuICp0aGlzID4+IChRX0lOVDMyJilpOyB9CgppbmxpbmUgUURhdGFT
dHJlYW0gJlFEYXRhU3RyZWFtOjpvcGVyYXRvcj4+KCBRX1VJTlQ2NCAmaSApCnsgcmV0dXJuICp0
aGlzID4+IChRX0lOVDY0JilpOyB9CgppbmxpbmUgUURhdGFTdHJlYW0gJlFEYXRhU3RyZWFtOjpv
cGVyYXRvcjw8KCBRX1VJTlQ4IGkgKQp7IHJldHVybiAqdGhpcyA8PCAoUV9JTlQ4KWk7IH0KCmlu
bGluZSBRRGF0YVN0cmVhbSAmUURhdGFTdHJlYW06Om9wZXJhdG9yPDwoIFFfVUlOVDE2IGkgKQp7
IHJldHVybiAqdGhpcyA8PCAoUV9JTlQxNilpOyB9CgppbmxpbmUgUURhdGFTdHJlYW0gJlFEYXRh
U3RyZWFtOjpvcGVyYXRvcjw8KCBRX1VJTlQzMiBpICkKeyByZXR1cm4gKnRoaXMgPDwgKFFfSU5U
MzIpaTsgfQoKaW5saW5lIFFEYXRhU3RyZWFtICZRRGF0YVN0cmVhbTo6b3BlcmF0b3I8PCggUV9V
SU5UNjQgaSApCnsgcmV0dXJuICp0aGlzIDw8IChRX0lOVDY0KWk7IH0KIyA0NCAiL3Vzci9zcmMv
cGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xdmFsdWVsaXN0LmgiIDIKCgoKCgoKdGVt
cGxhdGUgPGNsYXNzIFQ+CmNsYXNzIFFWYWx1ZUxpc3ROb2RlCnsKcHVibGljOgogICAgUVZhbHVl
TGlzdE5vZGUoIGNvbnN0IFQmIHQgKSA6IGRhdGEoIHQgKSB7IH0KICAgIFFWYWx1ZUxpc3ROb2Rl
KCkgeyB9CgoKCgoKICAgIFFWYWx1ZUxpc3ROb2RlPFQ+KiBuZXh0OwogICAgUVZhbHVlTGlzdE5v
ZGU8VD4qIHByZXY7CiAgICBUIGRhdGE7Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBUPgpjbGFzcyBRVmFs
dWVMaXN0SXRlcmF0b3IKewogcHVibGljOgoKCgogICAgdHlwZWRlZiBRVmFsdWVMaXN0Tm9kZTxU
PiogTm9kZVB0cjsKCgoKCiAgICBOb2RlUHRyIG5vZGU7CgoKCgogICAgUVZhbHVlTGlzdEl0ZXJh
dG9yKCkgOiBub2RlKCAwICkge30KICAgIFFWYWx1ZUxpc3RJdGVyYXRvciggTm9kZVB0ciBwICkg
OiBub2RlKCBwICkge30KICAgIFFWYWx1ZUxpc3RJdGVyYXRvciggY29uc3QgUVZhbHVlTGlzdEl0
ZXJhdG9yPFQ+JiBpdCApIDogbm9kZSggaXQubm9kZSApIHt9CgogICAgYm9vbCBvcGVyYXRvcj09
KCBjb25zdCBRVmFsdWVMaXN0SXRlcmF0b3I8VD4mIGl0ICkgY29uc3QgeyByZXR1cm4gbm9kZSA9
PSBpdC5ub2RlOyB9CiAgICBib29sIG9wZXJhdG9yIT0oIGNvbnN0IFFWYWx1ZUxpc3RJdGVyYXRv
cjxUPiYgaXQgKSBjb25zdCB7IHJldHVybiBub2RlICE9IGl0Lm5vZGU7IH0KICAgIGNvbnN0IFQm
IG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG5vZGUtPmRhdGE7IH0KICAgIFQmIG9wZXJhdG9y
KigpIHsgcmV0dXJuIG5vZGUtPmRhdGE7IH0KCgoKCiAgICBRVmFsdWVMaXN0SXRlcmF0b3I8VD4m
IG9wZXJhdG9yKysoKSB7CiAgICAgICAgbm9kZSA9IG5vZGUtPm5leHQ7CiAgICAgICAgcmV0dXJu
ICp0aGlzOwogICAgfQoKICAgIFFWYWx1ZUxpc3RJdGVyYXRvcjxUPiBvcGVyYXRvcisrKGludCkg
ewogICAgICAgIFFWYWx1ZUxpc3RJdGVyYXRvcjxUPiB0bXAgPSAqdGhpczsKICAgICAgICBub2Rl
ID0gbm9kZS0+bmV4dDsKICAgICAgICByZXR1cm4gdG1wOwogICAgfQoKICAgIFFWYWx1ZUxpc3RJ
dGVyYXRvcjxUPiYgb3BlcmF0b3ItLSgpIHsKICAgICAgICBub2RlID0gbm9kZS0+cHJldjsKICAg
ICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogICAgUVZhbHVlTGlzdEl0ZXJhdG9yPFQ+IG9wZXJh
dG9yLS0oaW50KSB7CiAgICAgICAgUVZhbHVlTGlzdEl0ZXJhdG9yPFQ+IHRtcCA9ICp0aGlzOwog
ICAgICAgIG5vZGUgPSBub2RlLT5wcmV2OwogICAgICAgIHJldHVybiB0bXA7CiAgICB9Cn07Cgp0
ZW1wbGF0ZTxjbGFzcyBUPgpjbGFzcyBRVmFsdWVMaXN0Q29uc3RJdGVyYXRvcgp7CiBwdWJsaWM6
CgoKCiAgICB0eXBlZGVmIFFWYWx1ZUxpc3ROb2RlPFQ+KiBOb2RlUHRyOwoKCgoKICAgIE5vZGVQ
dHIgbm9kZTsKCgoKCiAgICBRVmFsdWVMaXN0Q29uc3RJdGVyYXRvcigpIDogbm9kZSggMCApIHt9
CiAgICBRVmFsdWVMaXN0Q29uc3RJdGVyYXRvciggTm9kZVB0ciBwICkgOiBub2RlKCBwICkge30K
ICAgIFFWYWx1ZUxpc3RDb25zdEl0ZXJhdG9yKCBjb25zdCBRVmFsdWVMaXN0Q29uc3RJdGVyYXRv
cjxUPiYgaXQgKSA6IG5vZGUoIGl0Lm5vZGUgKSB7fQogICAgUVZhbHVlTGlzdENvbnN0SXRlcmF0
b3IoIGNvbnN0IFFWYWx1ZUxpc3RJdGVyYXRvcjxUPiYgaXQgKSA6IG5vZGUoIGl0Lm5vZGUgKSB7
fQoKICAgIGJvb2wgb3BlcmF0b3I9PSggY29uc3QgUVZhbHVlTGlzdENvbnN0SXRlcmF0b3I8VD4m
IGl0ICkgY29uc3QgeyByZXR1cm4gbm9kZSA9PSBpdC5ub2RlOyB9CiAgICBib29sIG9wZXJhdG9y
IT0oIGNvbnN0IFFWYWx1ZUxpc3RDb25zdEl0ZXJhdG9yPFQ+JiBpdCApIGNvbnN0IHsgcmV0dXJu
IG5vZGUgIT0gaXQubm9kZTsgfQogICAgY29uc3QgVCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1
cm4gbm9kZS0+ZGF0YTsgfQoKCgoKICAgIFFWYWx1ZUxpc3RDb25zdEl0ZXJhdG9yPFQ+JiBvcGVy
YXRvcisrKCkgewogICAgICAgIG5vZGUgPSBub2RlLT5uZXh0OwogICAgICAgIHJldHVybiAqdGhp
czsKICAgIH0KCiAgICBRVmFsdWVMaXN0Q29uc3RJdGVyYXRvcjxUPiBvcGVyYXRvcisrKGludCkg
ewogICAgICAgIFFWYWx1ZUxpc3RDb25zdEl0ZXJhdG9yPFQ+IHRtcCA9ICp0aGlzOwogICAgICAg
IG5vZGUgPSBub2RlLT5uZXh0OwogICAgICAgIHJldHVybiB0bXA7CiAgICB9CgogICAgUVZhbHVl
TGlzdENvbnN0SXRlcmF0b3I8VD4mIG9wZXJhdG9yLS0oKSB7CiAgICAgICAgbm9kZSA9IG5vZGUt
PnByZXY7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIFFWYWx1ZUxpc3RDb25zdEl0
ZXJhdG9yPFQ+IG9wZXJhdG9yLS0oaW50KSB7CiAgICAgICAgUVZhbHVlTGlzdENvbnN0SXRlcmF0
b3I8VD4gdG1wID0gKnRoaXM7CiAgICAgICAgbm9kZSA9IG5vZGUtPnByZXY7CiAgICAgICAgcmV0
dXJuIHRtcDsKICAgIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBUPgpjbGFzcyBRVmFsdWVMaXN0UHJp
dmF0ZSA6IHB1YmxpYyBRU2hhcmVkCnsKcHVibGljOgoKCgogICAgdHlwZWRlZiBRVmFsdWVMaXN0
SXRlcmF0b3I8VD4gSXRlcmF0b3I7CiAgICB0eXBlZGVmIFFWYWx1ZUxpc3RDb25zdEl0ZXJhdG9y
PFQ+IENvbnN0SXRlcmF0b3I7CiAgICB0eXBlZGVmIFFWYWx1ZUxpc3ROb2RlPFQ+IE5vZGU7CiAg
ICB0eXBlZGVmIFFWYWx1ZUxpc3ROb2RlPFQ+KiBOb2RlUHRyOwoKCgoKICAgIFFWYWx1ZUxpc3RQ
cml2YXRlKCkgeyBub2RlID0gbmV3IE5vZGU7IG5vZGUtPm5leHQgPSBub2RlLT5wcmV2ID0gbm9k
ZTsgbm9kZXMgPSAwOyB9CiAgICBRVmFsdWVMaXN0UHJpdmF0ZSggY29uc3QgUVZhbHVlTGlzdFBy
aXZhdGU8VD4mIF9wICkgOiBRU2hhcmVkKCkgewogICAgICAgIG5vZGUgPSBuZXcgTm9kZTsgbm9k
ZS0+bmV4dCA9IG5vZGUtPnByZXYgPSBub2RlOyBub2RlcyA9IDA7CiAgICAgICAgSXRlcmF0b3Ig
YiggX3Aubm9kZS0+bmV4dCApOwogICAgICAgIEl0ZXJhdG9yIGUoIF9wLm5vZGUgKTsKICAgICAg
ICBJdGVyYXRvciBpKCBub2RlICk7CiAgICAgICAgd2hpbGUoIGIgIT0gZSApCiAgICAgICAgICAg
IGluc2VydCggaSwgKmIrKyApOwogICAgfQoKICAgIHZvaWQgZGVyZWZBbmREZWxldGUoKQogICAg
ewogICAgICAgIGlmICggZGVyZWYoKSApCiAgICAgICAgICAgIGRlbGV0ZSB0aGlzOwogICAgfQoK
CgoKCiAgICB+UVZhbHVlTGlzdFByaXZhdGUoKSB7CiAgICAgICAgTm9kZVB0ciBwID0gbm9kZS0+
bmV4dDsKICAgICAgICB3aGlsZSggcCAhPSBub2RlICkgewogICAgICAgICAgICBOb2RlUHRyIHgg
PSBwLT5uZXh0OwogICAgICAgICAgICBkZWxldGUgcDsKICAgICAgICAgICAgcCA9IHg7CiAgICAg
ICAgfQogICAgICAgIGRlbGV0ZSBub2RlOwogICAgfQoKICAgIEl0ZXJhdG9yIGluc2VydCggSXRl
cmF0b3IgaXQsIGNvbnN0IFQmIHggKSB7CiAgICAgICAgTm9kZVB0ciBwID0gbmV3IE5vZGUoIHgg
KTsKICAgICAgICBwLT5uZXh0ID0gaXQubm9kZTsKICAgICAgICBwLT5wcmV2ID0gaXQubm9kZS0+
cHJldjsKICAgICAgICBpdC5ub2RlLT5wcmV2LT5uZXh0ID0gcDsKICAgICAgICBpdC5ub2RlLT5w
cmV2ID0gcDsKICAgICAgICBub2RlcysrOwogICAgICAgIHJldHVybiBwOwogICAgfQoKICAgIEl0
ZXJhdG9yIHJlbW92ZSggSXRlcmF0b3IgaXQgKSB7CiAgICAgICAgKChpdC5ub2RlICE9IG5vZGUp
ID8gKHZvaWQpMCA6IHFXYXJuaW5nKCJBU1NFUlQ6IFwiJXNcIiBpbiAlcyAoJWQpIiwiaXQubm9k
ZSAhPSBub2RlIiwiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xdmFs
dWVsaXN0LmgiLDIyNikpOwogICAgICAgIE5vZGVQdHIgbmV4dCA9IGl0Lm5vZGUtPm5leHQ7CiAg
ICAgICAgTm9kZVB0ciBwcmV2ID0gaXQubm9kZS0+cHJldjsKICAgICAgICBwcmV2LT5uZXh0ID0g
bmV4dDsKICAgICAgICBuZXh0LT5wcmV2ID0gcHJldjsKICAgICAgICBkZWxldGUgaXQubm9kZTsK
ICAgICAgICBub2Rlcy0tOwogICAgICAgIHJldHVybiBJdGVyYXRvciggbmV4dCApOwogICAgfQoK
ICAgIE5vZGVQdHIgZmluZCggTm9kZVB0ciBzdGFydCwgY29uc3QgVCYgeCApIGNvbnN0IHsKICAg
ICAgICBDb25zdEl0ZXJhdG9yIGZpcnN0KCBzdGFydCApOwogICAgICAgIENvbnN0SXRlcmF0b3Ig
bGFzdCggbm9kZSApOwogICAgICAgIHdoaWxlKCBmaXJzdCAhPSBsYXN0KSB7CiAgICAgICAgICAg
IGlmICggKmZpcnN0ID09IHggKQogICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0Lm5vZGU7CiAg
ICAgICAgICAgICsrZmlyc3Q7CiAgICAgICAgfQogICAgICAgIHJldHVybiBsYXN0Lm5vZGU7CiAg
ICB9CgogICAgaW50IGZpbmRJbmRleCggTm9kZVB0ciBzdGFydCwgY29uc3QgVCYgeCApIGNvbnN0
IHsKICAgICAgICBDb25zdEl0ZXJhdG9yIGZpcnN0KCBzdGFydCApOwogICAgICAgIENvbnN0SXRl
cmF0b3IgbGFzdCggbm9kZSApOwogICAgICAgIGludCBwb3MgPSAwOwogICAgICAgIHdoaWxlKCBm
aXJzdCAhPSBsYXN0KSB7CiAgICAgICAgICAgIGlmICggKmZpcnN0ID09IHggKQogICAgICAgICAg
ICAgICAgcmV0dXJuIHBvczsKICAgICAgICAgICAgKytmaXJzdDsKICAgICAgICAgICAgKytwb3M7
CiAgICAgICAgfQogICAgICAgIHJldHVybiAtMTsKICAgIH0KCiAgICB1aW50IGNvbnRhaW5zKCBj
b25zdCBUJiB4ICkgY29uc3QgewogICAgICAgIHVpbnQgcmVzdWx0ID0gMDsKICAgICAgICBJdGVy
YXRvciBmaXJzdCA9IEl0ZXJhdG9yKCBub2RlLT5uZXh0ICk7CiAgICAgICAgSXRlcmF0b3IgbGFz
dCA9IEl0ZXJhdG9yKCBub2RlICk7CiAgICAgICAgd2hpbGUoIGZpcnN0ICE9IGxhc3QpIHsKICAg
ICAgICAgICAgaWYgKCAqZmlyc3QgPT0geCApCiAgICAgICAgICAgICAgICArK3Jlc3VsdDsKICAg
ICAgICAgICAgKytmaXJzdDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0K
CiAgICB2b2lkIHJlbW92ZSggY29uc3QgVCYgeCApIHsKICAgICAgICBJdGVyYXRvciBmaXJzdCA9
IEl0ZXJhdG9yKCBub2RlLT5uZXh0ICk7CiAgICAgICAgSXRlcmF0b3IgbGFzdCA9IEl0ZXJhdG9y
KCBub2RlICk7CiAgICAgICAgd2hpbGUoIGZpcnN0ICE9IGxhc3QpIHsKICAgICAgICAgICAgaWYg
KCAqZmlyc3QgPT0geCApCiAgICAgICAgICAgICAgICBmaXJzdCA9IHJlbW92ZSggZmlyc3QgKTsK
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgKytmaXJzdDsKICAgICAgICB9CiAgICB9
CgogICAgTm9kZVB0ciBhdCggdWludCBpICkgY29uc3QgewogICAgICAgICgoaSA8PSBub2Rlcykg
PyAodm9pZCkwIDogcVdhcm5pbmcoIkFTU0VSVDogXCIlc1wiIGluICVzICglZCkiLCJpIDw9IG5v
ZGVzIiwiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xdmFsdWVsaXN0
LmgiLDI4NCkpOwogICAgICAgIE5vZGVQdHIgcCA9IG5vZGUtPm5leHQ7CiAgICAgICAgZm9yKCB1
aW50IHggPSAwOyB4IDwgaTsgKyt4ICkKICAgICAgICAgICAgcCA9IHAtPm5leHQ7CiAgICAgICAg
cmV0dXJuIHA7CiAgICB9CgogICAgdm9pZCBjbGVhcigpIHsKICAgICAgICBub2RlcyA9IDA7CiAg
ICAgICAgTm9kZVB0ciBwID0gbm9kZS0+bmV4dDsKICAgICAgICB3aGlsZSggcCAhPSBub2RlICkg
ewogICAgICAgICAgICBOb2RlUHRyIG5leHQgPSBwLT5uZXh0OwogICAgICAgICAgICBkZWxldGUg
cDsKICAgICAgICAgICAgcCA9IG5leHQ7CiAgICAgICAgfQogICAgICAgIG5vZGUtPm5leHQgPSBu
b2RlLT5wcmV2ID0gbm9kZTsKICAgIH0KCiAgICBOb2RlUHRyIG5vZGU7CiAgICB1aW50IG5vZGVz
Owp9OwoKdGVtcGxhdGUgPGNsYXNzIFQ+CmNsYXNzIFFWYWx1ZUxpc3QKewpwdWJsaWM6CgoKCiAg
ICB0eXBlZGVmIFFWYWx1ZUxpc3RJdGVyYXRvcjxUPiBJdGVyYXRvcjsKICAgIHR5cGVkZWYgUVZh
bHVlTGlzdENvbnN0SXRlcmF0b3I8VD4gQ29uc3RJdGVyYXRvcjsKICAgIHR5cGVkZWYgVCBWYWx1
ZVR5cGU7CgoKCgogICAgUVZhbHVlTGlzdCgpIHsgc2ggPSBuZXcgUVZhbHVlTGlzdFByaXZhdGU8
VD47IH0KICAgIFFWYWx1ZUxpc3QoIGNvbnN0IFFWYWx1ZUxpc3Q8VD4mIGwgKSB7IHNoID0gbC5z
aDsgc2gtPnJlZigpOyB9CiAgICB+UVZhbHVlTGlzdCgpIHsgc2gtPmRlcmVmQW5kRGVsZXRlKCk7
IH0KCiAgICBRVmFsdWVMaXN0PFQ+JiBvcGVyYXRvcj0gKCBjb25zdCBRVmFsdWVMaXN0PFQ+JiBs
ICkKICAgIHsKICAgICAgICBsLnNoLT5yZWYoKTsKICAgICAgICBzaC0+ZGVyZWZBbmREZWxldGUo
KTsKICAgICAgICBzaCA9IGwuc2g7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIFFW
YWx1ZUxpc3Q8VD4gb3BlcmF0b3IrICggY29uc3QgUVZhbHVlTGlzdDxUPiYgbCApIGNvbnN0CiAg
ICB7CiAgICAgICAgUVZhbHVlTGlzdDxUPiBsMiggKnRoaXMgKTsKICAgICAgICBmb3IoIENvbnN0
SXRlcmF0b3IgaXQgPSBsLmJlZ2luKCk7IGl0ICE9IGwuZW5kKCk7ICsraXQgKQogICAgICAgICAg
ICBsMi5hcHBlbmQoICppdCApOwogICAgICAgIHJldHVybiBsMjsKICAgIH0KCiAgICBRVmFsdWVM
aXN0PFQ+JiBvcGVyYXRvcis9ICggY29uc3QgUVZhbHVlTGlzdDxUPiYgbCApCiAgICB7CiAgICAg
ICAgZm9yKCBDb25zdEl0ZXJhdG9yIGl0ID0gbC5iZWdpbigpOyBpdCAhPSBsLmVuZCgpOyArK2l0
ICkKICAgICAgICAgICAgYXBwZW5kKCAqaXQgKTsKICAgICAgICByZXR1cm4gKnRoaXM7CiAgICB9
CgogICAgYm9vbCBvcGVyYXRvcj09ICggY29uc3QgUVZhbHVlTGlzdDxUPiYgbCApIGNvbnN0CiAg
ICB7CiAgICAgICAgaWYgKCBjb3VudCgpICE9IGwuY291bnQoKSApCiAgICAgICAgICAgIHJldHVy
biBGQUxTRTsKICAgICAgICBDb25zdEl0ZXJhdG9yIGl0MiA9IGJlZ2luKCk7CiAgICAgICAgQ29u
c3RJdGVyYXRvciBpdCA9IGwuYmVnaW4oKTsKICAgICAgICBmb3IoIDsgaXQgIT0gbC5lbmQoKTsg
KytpdCwgKytpdDIgKQogICAgICAgICAgICBpZiAoICEoICppdCA9PSAqaXQyICkgKQogICAgICAg
ICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgIHJldHVybiBUUlVFOwogICAgfQoKICAgIGJv
b2wgb3BlcmF0b3IhPSAoIGNvbnN0IFFWYWx1ZUxpc3Q8VD4mIGwgKSBjb25zdCB7IHJldHVybiAh
KCAqdGhpcyA9PSBsICk7IH0KCiAgICBJdGVyYXRvciBiZWdpbigpIHsgZGV0YWNoKCk7IHJldHVy
biBJdGVyYXRvciggc2gtPm5vZGUtPm5leHQgKTsgfQogICAgQ29uc3RJdGVyYXRvciBiZWdpbigp
IGNvbnN0IHsgcmV0dXJuIENvbnN0SXRlcmF0b3IoIHNoLT5ub2RlLT5uZXh0ICk7IH0KICAgIEl0
ZXJhdG9yIGVuZCgpIHsgZGV0YWNoKCk7IHJldHVybiBJdGVyYXRvciggc2gtPm5vZGUgKTsgfQog
ICAgQ29uc3RJdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBDb25zdEl0ZXJhdG9yKCBzaC0+
bm9kZSApOyB9CiAgICBJdGVyYXRvciBmcm9tTGFzdCgpIHsgZGV0YWNoKCk7IHJldHVybiBJdGVy
YXRvciggc2gtPm5vZGUtPnByZXYgKTsgfQogICAgQ29uc3RJdGVyYXRvciBmcm9tTGFzdCgpIGNv
bnN0IHsgcmV0dXJuIENvbnN0SXRlcmF0b3IoIHNoLT5ub2RlLT5wcmV2ICk7IH0KCiAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAoIHNoLT5ub2RlcyA9PSAwICk7IH0KCiAgICBJdGVy
YXRvciBpbnNlcnQoIEl0ZXJhdG9yIGl0LCBjb25zdCBUJiB4ICkgeyBkZXRhY2goKTsgcmV0dXJu
IHNoLT5pbnNlcnQoIGl0LCB4ICk7IH0KCiAgICBJdGVyYXRvciBhcHBlbmQoIGNvbnN0IFQmIHgg
KSB7IGRldGFjaCgpOyByZXR1cm4gc2gtPmluc2VydCggZW5kKCksIHggKTsgfQogICAgSXRlcmF0
b3IgcHJlcGVuZCggY29uc3QgVCYgeCApIHsgZGV0YWNoKCk7IHJldHVybiBzaC0+aW5zZXJ0KCBi
ZWdpbigpLCB4ICk7IH0KCiAgICBJdGVyYXRvciByZW1vdmUoIEl0ZXJhdG9yIGl0ICkgeyBkZXRh
Y2goKTsgcmV0dXJuIHNoLT5yZW1vdmUoIGl0ICk7IH0KICAgIHZvaWQgcmVtb3ZlKCBjb25zdCBU
JiB4ICkgeyBkZXRhY2goKTsgc2gtPnJlbW92ZSggeCApOyB9CgogICAgVCYgZmlyc3QoKSB7IGRl
dGFjaCgpOyByZXR1cm4gc2gtPm5vZGUtPm5leHQtPmRhdGE7IH0KICAgIGNvbnN0IFQmIGZpcnN0
KCkgY29uc3QgeyByZXR1cm4gc2gtPm5vZGUtPm5leHQtPmRhdGE7IH0KICAgIFQmIGxhc3QoKSB7
IGRldGFjaCgpOyByZXR1cm4gc2gtPm5vZGUtPnByZXYtPmRhdGE7IH0KICAgIGNvbnN0IFQmIGxh
c3QoKSBjb25zdCB7IHJldHVybiBzaC0+bm9kZS0+cHJldi0+ZGF0YTsgfQoKICAgIFQmIG9wZXJh
dG9yW10gKCB1aW50IGkgKSB7IGRldGFjaCgpOyByZXR1cm4gc2gtPmF0KGkpLT5kYXRhOyB9CiAg
ICBjb25zdCBUJiBvcGVyYXRvcltdICggdWludCBpICkgY29uc3QgeyByZXR1cm4gc2gtPmF0KGkp
LT5kYXRhOyB9CiAgICBJdGVyYXRvciBhdCggdWludCBpICkgeyBkZXRhY2goKTsgcmV0dXJuIEl0
ZXJhdG9yKCBzaC0+YXQoaSkgKTsgfQogICAgQ29uc3RJdGVyYXRvciBhdCggdWludCBpICkgY29u
c3QgeyByZXR1cm4gQ29uc3RJdGVyYXRvciggc2gtPmF0KGkpICk7IH0KICAgIEl0ZXJhdG9yIGZp
bmQgKCBjb25zdCBUJiB4ICkgeyBkZXRhY2goKTsgcmV0dXJuIEl0ZXJhdG9yKCBzaC0+ZmluZCgg
c2gtPm5vZGUtPm5leHQsIHgpICk7IH0KICAgIENvbnN0SXRlcmF0b3IgZmluZCAoIGNvbnN0IFQm
IHggKSBjb25zdCB7IHJldHVybiBDb25zdEl0ZXJhdG9yKCBzaC0+ZmluZCggc2gtPm5vZGUtPm5l
eHQsIHgpICk7IH0KICAgIEl0ZXJhdG9yIGZpbmQgKCBJdGVyYXRvciBpdCwgY29uc3QgVCYgeCAp
IHsgZGV0YWNoKCk7IHJldHVybiBJdGVyYXRvciggc2gtPmZpbmQoIGl0Lm5vZGUsIHggKSApOyB9
CiAgICBDb25zdEl0ZXJhdG9yIGZpbmQgKCBDb25zdEl0ZXJhdG9yIGl0LCBjb25zdCBUJiB4ICkg
Y29uc3QgeyByZXR1cm4gQ29uc3RJdGVyYXRvciggc2gtPmZpbmQoIGl0Lm5vZGUsIHggKSApOyB9
CiAgICBpbnQgZmluZEluZGV4KCBjb25zdCBUJiB4ICkgY29uc3QgeyByZXR1cm4gc2gtPmZpbmRJ
bmRleCggc2gtPm5vZGUtPm5leHQsIHgpIDsgfQogICAgdWludCBjb250YWlucyggY29uc3QgVCYg
eCApIGNvbnN0IHsgcmV0dXJuIHNoLT5jb250YWlucyggeCApOyB9CgogICAgdWludCBjb3VudCgp
IGNvbnN0IHsgcmV0dXJuIHNoLT5ub2RlczsgfQoKICAgIHZvaWQgY2xlYXIoKSB7IGlmICggc2gt
PmNvdW50ID09IDEgKSBzaC0+Y2xlYXIoKTsgZWxzZSB7IHNoLT5kZXJlZigpOyBzaCA9IG5ldyBR
VmFsdWVMaXN0UHJpdmF0ZTxUPjsgfSB9CgoKICAgIFFWYWx1ZUxpc3Q8VD4mIG9wZXJhdG9yKz0g
KCBjb25zdCBUJiB4ICkKICAgIHsKICAgICAgICBhcHBlbmQoIHggKTsKICAgICAgICByZXR1cm4g
KnRoaXM7CiAgICB9CiAgICBRVmFsdWVMaXN0PFQ+JiBvcGVyYXRvcjw8ICggY29uc3QgVCYgeCAp
CiAgICB7CiAgICAgICAgYXBwZW5kKCB4ICk7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoK
CnByb3RlY3RlZDoKCgoKICAgIHZvaWQgZGV0YWNoKCkgeyBpZiAoIHNoLT5jb3VudCA+IDEgKSB7
IHNoLT5kZXJlZigpOyBzaCA9IG5ldyBRVmFsdWVMaXN0UHJpdmF0ZTxUPiggKnNoICk7IH0gfQoK
CgoKICAgIFFWYWx1ZUxpc3RQcml2YXRlPFQ+KiBzaDsKfTsKCgp0ZW1wbGF0ZTxjbGFzcyBUPgpp
bmxpbmUgUURhdGFTdHJlYW0mIG9wZXJhdG9yPj4oIFFEYXRhU3RyZWFtJiBzLCBRVmFsdWVMaXN0
PFQ+JiBsICkKewogICAgbC5jbGVhcigpOwogICAgUV9VSU5UMzIgYzsKICAgIHMgPj4gYzsKICAg
IGZvciggUV9VSU5UMzIgaSA9IDA7IGkgPCBjOyArK2kgKQogICAgewogICAgICAgIFQgdDsKICAg
ICAgICBzID4+IHQ7CiAgICAgICAgbC5hcHBlbmQoIHQgKTsKICAgIH0KICAgIHJldHVybiBzOwp9
Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgUURhdGFTdHJlYW0mIG9wZXJhdG9yPDwoIFFEYXRh
U3RyZWFtJiBzLCBjb25zdCBRVmFsdWVMaXN0PFQ+JiBsICkKewogICAgcyA8PCAoUV9VSU5UMzIp
bC5jb3VudCgpOwogICAgUVZhbHVlTGlzdENvbnN0SXRlcmF0b3I8VD4gaXQgPSBsLmJlZ2luKCk7
CiAgICBmb3IoIDsgaXQgIT0gbC5lbmQoKTsgKytpdCApCiAgICAgICAgcyA8PCAqaXQ7CiAgICBy
ZXR1cm4gczsKfQojIDQzICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRl
L3FzdHJpbmdsaXN0LmgiIDIKCiMgMSAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIv
aW5jbHVkZS9xcmVnZXhwLmgiIDEKIyA0NiAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4z
LjIvaW5jbHVkZS9xcmVnZXhwLmgiCmNsYXNzIFFSZWdFeHAKewpwdWJsaWM6CiAgICBRUmVnRXhw
KCk7CiAgICBRUmVnRXhwKCBjb25zdCBRU3RyaW5nICYsIGJvb2wgY2FzZVNlbnNpdGl2ZT1UUlVF
LCBib29sIHdpbGRjYXJkPUZBTFNFICk7CiAgICBRUmVnRXhwKCBjb25zdCBRUmVnRXhwICYgKTsK
ICAgflFSZWdFeHAoKTsKICAgIFFSZWdFeHAgJm9wZXJhdG9yPSggY29uc3QgUVJlZ0V4cCAmICk7
CiAgICBRUmVnRXhwICZvcGVyYXRvcj0oIGNvbnN0IFFTdHJpbmcgJnBhdHRlcm4gKTsKCiAgICBi
b29sIG9wZXJhdG9yPT0oIGNvbnN0IFFSZWdFeHAgJiApIGNvbnN0OwogICAgYm9vbCBvcGVyYXRv
ciE9KCBjb25zdCBRUmVnRXhwICZyICkgY29uc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsgcmV0dXJuICEodGhpcy0+b3BlcmF0b3I9PShyKSk7IH0KCiAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiByeGRhdGEgPT0gMDsgfQogICAgYm9vbCBpc1ZhbGlk
KCkgY29uc3QgeyByZXR1cm4gZXJyb3IgPT0gMDsgfQoKICAgIGJvb2wgY2FzZVNlbnNpdGl2ZSgp
IGNvbnN0IHsgcmV0dXJuIGNzOyB9CiAgICB2b2lkIHNldENhc2VTZW5zaXRpdmUoIGJvb2wgKTsK
CiAgICBib29sIHdpbGRjYXJkKCkgY29uc3QgeyByZXR1cm4gd2M7IH0KICAgIHZvaWQgc2V0V2ls
ZGNhcmQoIGJvb2wgKTsKCiAgICBRU3RyaW5nIHBhdHRlcm4oKSBjb25zdCB7IHJldHVybiByeHN0
cmluZzsgfQoKICAgIHZvaWQgc2V0UGF0dGVybiggY29uc3QgUVN0cmluZyYgcGF0dGVybiApCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG9wZXJhdG9yPSggcGF0dGVy
biApOyB9CgogICAgaW50IG1hdGNoKCBjb25zdCBRU3RyaW5nICZzdHIsIGludCBpbmRleD0wLCBp
bnQgKmxlbj0wLAogICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW5kZXhJc1N0YXJ0ID0gVFJV
RSApIGNvbnN0OwogICAgaW50IGZpbmQoIGNvbnN0IFFTdHJpbmcmIHN0ciwgaW50IGluZGV4ICkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIG1hdGNoKCBz
dHIsIGluZGV4ICk7IH0KCnByb3RlY3RlZDoKICAgIHZvaWQgY29tcGlsZSgpOwogICAgY29uc3Qg
UUNoYXIgKm1hdGNoc3RyKCB1aW50ICosIGNvbnN0IFFDaGFyICosIHVpbnQsIGNvbnN0IFFDaGFy
ICogKSBjb25zdDsKCnByaXZhdGU6CiAgICBRU3RyaW5nIHJ4c3RyaW5nOwogICAgdWludCAqcnhk
YXRhOwogICAgaW50IGVycm9yOwogICAgYm9vbCBjczsKICAgIGJvb2wgd2M7Cn07CiMgNDUgIi91
c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUvcXN0cmluZ2xpc3QuaCIgMgoK
CgoKY2xhc3MgUVN0ckxpc3Q7CgpjbGFzcyBRU3RyaW5nTGlzdCA6IHB1YmxpYyBRVmFsdWVMaXN0
PFFTdHJpbmc+CnsKcHVibGljOgogICAgUVN0cmluZ0xpc3QoKSB7IH0KICAgIFFTdHJpbmdMaXN0
KCBjb25zdCBRU3RyaW5nTGlzdCYgbCApIDogUVZhbHVlTGlzdDxRU3RyaW5nPihsKSB7IH0KICAg
IFFTdHJpbmdMaXN0KCBjb25zdCBRVmFsdWVMaXN0PFFTdHJpbmc+JiBsICkgOiBRVmFsdWVMaXN0
PFFTdHJpbmc+KGwpIHsgfQogICAgUVN0cmluZ0xpc3QoIGNvbnN0IFFTdHJpbmcmIGkgKSB7IGFw
cGVuZChpKTsgfQoKICAgIFFTdHJpbmdMaXN0KCBjb25zdCBjaGFyKiBpICkgeyBhcHBlbmQoaSk7
IH0KCgogICAgc3RhdGljIFFTdHJpbmdMaXN0IGZyb21TdHJMaXN0KGNvbnN0IFFTdHJMaXN0Jik7
CgogICAgdm9pZCBzb3J0KCk7CgogICAgc3RhdGljIFFTdHJpbmdMaXN0IHNwbGl0KCBjb25zdCBR
U3RyaW5nICZzZXAsIGNvbnN0IFFTdHJpbmcgJnN0ciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcyA9
IEZBTFNFICk7CiAgICBzdGF0aWMgUVN0cmluZ0xpc3Qgc3BsaXQoIGNvbnN0IFFDaGFyICZzZXAs
IGNvbnN0IFFTdHJpbmcgJnN0ciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcyA9IEZBTFNFICk7CiAg
ICBzdGF0aWMgUVN0cmluZ0xpc3Qgc3BsaXQoIGNvbnN0IFFSZWdFeHAgJnNlcCwgY29uc3QgUVN0
cmluZyAmc3RyLCBib29sIGFsbG93RW1wdHlFbnRyaWVzID0gRkFMU0UgKTsKICAgIFFTdHJpbmcg
am9pbiggY29uc3QgUVN0cmluZyAmc2VwICkgY29uc3Q7CgogICAgUVN0cmluZ0xpc3QgZ3JlcCgg
Y29uc3QgUVN0cmluZyAmc3RyLCBib29sIGNzID0gVFJVRSApIGNvbnN0OwogICAgUVN0cmluZ0xp
c3QgZ3JlcCggY29uc3QgUVJlZ0V4cCAmZXhwciApIGNvbnN0Owp9OwoKCmNsYXNzIFFEYXRhU3Ry
ZWFtOwpleHRlcm4gUURhdGFTdHJlYW0gJm9wZXJhdG9yPj4oIFFEYXRhU3RyZWFtICYsIFFTdHJp
bmdMaXN0JiApOwpleHRlcm4gUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoIFFEYXRhU3RyZWFtICYs
IGNvbnN0IFFTdHJpbmdMaXN0JiApOwojIDQ4ICJrZXJuZWwvcW9iamVjdC5oIiAyCgoKCgoKY2xh
c3MgUU1ldGFPYmplY3Q7CmNsYXNzIFFWYXJpYW50OwoKCgpjbGFzcyBRT2JqZWN0OiBwdWJsaWMg
UXQKewogICAKCnB1YmxpYzoKICAgIFFPYmplY3QoIFFPYmplY3QgKnBhcmVudD0wLCBjb25zdCBj
aGFyICpuYW1lPTAgKTsKICAgIHZpcnR1YWwgflFPYmplY3QoKTsKCiAgICBzdGF0aWMgUVN0cmlu
ZyB0ciggY29uc3QgY2hhciAqICk7CiAgICBzdGF0aWMgUVN0cmluZyB0ciggY29uc3QgY2hhciAq
LCBjb25zdCBjaGFyICogKTsKCiAgICB2aXJ0dWFsIGJvb2wgZXZlbnQoIFFFdmVudCAqICk7CiAg
ICB2aXJ0dWFsIGJvb2wgZXZlbnRGaWx0ZXIoIFFPYmplY3QgKiwgUUV2ZW50ICogKTsKCiAgICB2
aXJ0dWFsIFFNZXRhT2JqZWN0ICptZXRhT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljTWV0
YU9iamVjdCgpOyB9CiAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKmNsYXNzTmFtZSgpIGNvbnN0OwoK
ICAgIGJvb2wgaXNBKCBjb25zdCBjaGFyICogKSBjb25zdDsKICAgIGJvb2wgaW5oZXJpdHMoIGNv
bnN0IGNoYXIgKiApIGNvbnN0OwoKICAgIGNvbnN0IGNoYXIgKm5hbWUoKSBjb25zdDsKICAgIGNv
bnN0IGNoYXIgKm5hbWUoIGNvbnN0IGNoYXIgKiBkZWZhdWx0TmFtZSApIGNvbnN0OwoKICAgIHZp
cnR1YWwgdm9pZCBzZXROYW1lKCBjb25zdCBjaGFyICpuYW1lICk7CiAgICBib29sIGlzV2lkZ2V0
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIGlzV2lkZ2V0OyB9CiAgICBib29sIGhpZ2hQcmlvcml0eSgp
IGNvbnN0IHsgcmV0dXJuIEZBTFNFOyB9CgogICAgYm9vbCBzaWduYWxzQmxvY2tlZCgpIGNvbnN0
IHsgcmV0dXJuIGJsb2NrU2lnOyB9CiAgICB2b2lkIGJsb2NrU2lnbmFscyggYm9vbCBiICk7Cgog
ICAgaW50IHN0YXJ0VGltZXIoIGludCBpbnRlcnZhbCApOwogICAgdm9pZCBraWxsVGltZXIoIGlu
dCBpZCApOwogICAgdm9pZCBraWxsVGltZXJzKCk7CgogICAgUU9iamVjdCAqY2hpbGQoIGNvbnN0
IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnR5cGUgPSAwICk7CiAgICBjb25zdCBRT2JqZWN0TGlz
dCAqY2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBjaGlsZE9iamVjdHM7IH0KCiAgICBzdGF0aWMg
Y29uc3QgUU9iamVjdExpc3QgKm9iamVjdFRyZWVzKCk7CgoKICAgIFFPYmplY3RMaXN0ICpxdWVy
eUxpc3QoIGNvbnN0IGNoYXIgKmluaGVyaXRzQ2xhc3MgPSAwLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqb2JqTmFtZSA9IDAsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIHJlZ2V4cE1hdGNoID0gVFJVRSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgcmVjdXJzaXZlU2VhcmNoID0gVFJVRSApOwoKICAgIHZp
cnR1YWwgdm9pZCBpbnNlcnRDaGlsZCggUU9iamVjdCAqICk7CiAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlQ2hpbGQoIFFPYmplY3QgKiApOwoKICAgIHZvaWQgaW5zdGFsbEV2ZW50RmlsdGVyKCBjb25z
dCBRT2JqZWN0ICogKTsKICAgIHZvaWQgcmVtb3ZlRXZlbnRGaWx0ZXIoIGNvbnN0IFFPYmplY3Qg
KiApOwoKICAgIHN0YXRpYyBib29sIGNvbm5lY3QoIGNvbnN0IFFPYmplY3QgKnNlbmRlciwgY29u
c3QgY2hhciAqc2lnbmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFPYmplY3Qg
KnJlY2VpdmVyLCBjb25zdCBjaGFyICptZW1iZXIgKTsKICAgIGJvb2wgY29ubmVjdCggY29uc3Qg
UU9iamVjdCAqc2VuZGVyLCBjb25zdCBjaGFyICpzaWduYWwsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciAqbWVtYmVyICkgY29uc3Q7CiAgICBzdGF0aWMgYm9vbCBkaXNjb25u
ZWN0KCBjb25zdCBRT2JqZWN0ICpzZW5kZXIsIGNvbnN0IGNoYXIgKnNpZ25hbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBRT2JqZWN0ICpyZWNlaXZlciwgY29uc3QgY2hhciAq
bWVtYmVyICk7CiAgICBib29sIGRpc2Nvbm5lY3QoIGNvbnN0IGNoYXIgKnNpZ25hbD0wLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFPYmplY3QgKnJlY2VpdmVyPTAsIGNvbnN0
IGNoYXIgKm1lbWJlcj0wICk7CiAgICBib29sIGRpc2Nvbm5lY3QoIGNvbnN0IFFPYmplY3QgKnJl
Y2VpdmVyLCBjb25zdCBjaGFyICptZW1iZXI9MCApOwoKICAgIHZvaWQgZHVtcE9iamVjdFRyZWUo
KTsKICAgIHZvaWQgZHVtcE9iamVjdEluZm8oKTsKCgogICAgYm9vbCBzZXRQcm9wZXJ0eSggY29u
c3QgY2hhciAqbmFtZSwgY29uc3QgUVZhcmlhbnQmIHZhbHVlICk7CiAgICBRVmFyaWFudCBwcm9w
ZXJ0eSggY29uc3QgY2hhciAqbmFtZSApIGNvbnN0OwoKCnByb3RlY3RlZDoKICAgIHZvaWQgZGVz
dHJveWVkKCk7CgpwdWJsaWM6CiAgICBRT2JqZWN0ICpwYXJlbnQoKSBjb25zdCB7IHJldHVybiBw
YXJlbnRPYmo7IH0KCnByaXZhdGUgOgogICAgdm9pZCBjbGVhbnVwRXZlbnRGaWx0ZXIoKTsKCnBy
b3RlY3RlZDoKICAgIGJvb2wgYWN0aXZhdGVfZmlsdGVycyggUUV2ZW50ICogKTsKICAgIFFDb25u
ZWN0aW9uTGlzdCAqcmVjZWl2ZXJzKCBjb25zdCBjaGFyICpzaWduYWwgKSBjb25zdDsKICAgIHZv
aWQgYWN0aXZhdGVfc2lnbmFsKCBjb25zdCBjaGFyICpzaWduYWwgKTsKICAgIHZvaWQgYWN0aXZh
dGVfc2lnbmFsKCBjb25zdCBjaGFyICpzaWduYWwsIHNob3J0ICk7CiAgICB2b2lkIGFjdGl2YXRl
X3NpZ25hbCggY29uc3QgY2hhciAqc2lnbmFsLCBpbnQgKTsKICAgIHZvaWQgYWN0aXZhdGVfc2ln
bmFsKCBjb25zdCBjaGFyICpzaWduYWwsIGxvbmcgKTsKICAgIHZvaWQgYWN0aXZhdGVfc2lnbmFs
KCBjb25zdCBjaGFyICpzaWduYWwsIGNvbnN0IGNoYXIgKiApOwogICAgdm9pZCBhY3RpdmF0ZV9z
aWduYWxfYm9vbCggY29uc3QgY2hhciAqc2lnbmFsLCBib29sICk7CiAgICB2b2lkIGFjdGl2YXRl
X3NpZ25hbF9zdHJpbmcoIGNvbnN0IGNoYXIgKnNpZ25hbCwgUVN0cmluZyApOwogICAgdm9pZCBh
Y3RpdmF0ZV9zaWduYWxfc3RycmVmKCBjb25zdCBjaGFyICpzaWduYWwsIGNvbnN0IFFTdHJpbmcg
JiApOwoKICAgIGNvbnN0IFFPYmplY3QgKnNlbmRlcigpOwoKCiAgICB2aXJ0dWFsIHZvaWQgaW5p
dE1ldGFPYmplY3QoKTsKICAgIHN0YXRpYyBRTWV0YU9iamVjdCogc3RhdGljTWV0YU9iamVjdCgp
OwoKICAgIHZpcnR1YWwgdm9pZCB0aW1lckV2ZW50KCBRVGltZXJFdmVudCAqICk7CiAgICB2aXJ0
dWFsIHZvaWQgY2hpbGRFdmVudCggUUNoaWxkRXZlbnQgKiApOwoKICAgIHZpcnR1YWwgdm9pZCBj
b25uZWN0Tm90aWZ5KCBjb25zdCBjaGFyICpzaWduYWwgKTsKICAgIHZpcnR1YWwgdm9pZCBkaXNj
b25uZWN0Tm90aWZ5KCBjb25zdCBjaGFyICpzaWduYWwgKTsKICAgIHZpcnR1YWwgYm9vbCBjaGVj
a0Nvbm5lY3RBcmdzKCBjb25zdCBjaGFyICpzaWduYWwsIGNvbnN0IFFPYmplY3QgKnJlY2VpdmVy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1lbWJlciAp
OwogICAgc3RhdGljIFFDU3RyaW5nIG5vcm1hbGl6ZVNpZ25hbFNsb3QoIGNvbnN0IGNoYXIgKnNp
Z25hbFNsb3QgKTsKCiAgICBzdGF0aWMgdm9pZCBiYWRTdXBlcmNsYXNzV2FybmluZyggY29uc3Qg
Y2hhciAqY2xhc3NOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICpzdXBlcmNsYXNzTmFtZSApOwoKcHJpdmF0ZToKICAgIHVpbnQgaXNTaWduYWwg
OiAxOwogICAgdWludCBpc1dpZGdldCA6IDE7CiAgICB1aW50IHBlbmRUaW1lciA6IDE7CiAgICB1
aW50IHBlbmRFdmVudCA6IDE7CiAgICB1aW50IGJsb2NrU2lnIDogMTsKICAgIHVpbnQgd2FzRGVs
ZXRlZCA6IDE7CiAgICB1aW50IGlzVHJlZSA6IDE7CgogICAgUU1ldGFPYmplY3QgKnF1ZXJ5TWV0
YU9iamVjdCgpIGNvbnN0OwogICAgc3RhdGljIFFNZXRhT2JqZWN0ICptZXRhT2JqOwogICAgY29u
c3QgY2hhciAqb2JqbmFtZTsKICAgIFFPYmplY3QgKnBhcmVudE9iajsKICAgIFFPYmplY3RMaXN0
ICpjaGlsZE9iamVjdHM7CiAgICBRU2lnbmFsRGljdCAqY29ubmVjdGlvbnM7CiAgICBRT2JqZWN0
TGlzdCAqc2VuZGVyT2JqZWN0czsKICAgIFFPYmplY3RMaXN0ICpldmVudEZpbHRlcnM7CgoKICAg
IFFPYmplY3QgKnNpZ1NlbmRlcjsKCiAgICBmcmllbmQgY2xhc3MgUUFwcGxpY2F0aW9uOwogICAg
ZnJpZW5kIGNsYXNzIFFCYXNlQXBwbGljYXRpb247CiAgICBmcmllbmQgY2xhc3MgUVdpZGdldDsK
ICAgIGZyaWVuZCBjbGFzcyBRU2lnbmFsOwogICAgZnJpZW5kIGNsYXNzIFFTZW5kZXJPYmplY3Q7
Cgpwcml2YXRlOgoKICAgIFFPYmplY3QoIGNvbnN0IFFPYmplY3QgJiApOwogICAgUU9iamVjdCAm
b3BlcmF0b3I9KCBjb25zdCBRT2JqZWN0ICYgKTsKCgpwdWJsaWM6CgoKICAgIFFTdHJpbmdMaXN0
IHN1cGVyQ2xhc3NlcyggYm9vbCBpbmNsdWRlVGhpcyA9IEZBTFNFICkgY29uc3Q7Cgp9OwoKCgpp
bmxpbmUgYm9vbCBRT2JqZWN0Ojpjb25uZWN0KCBjb25zdCBRT2JqZWN0ICpzZW5kZXIsIGNvbnN0
IGNoYXIgKnNpZ25hbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq
bWVtYmVyICkgY29uc3QKewogICAgcmV0dXJuIGNvbm5lY3QoIHNlbmRlciwgc2lnbmFsLCB0aGlz
LCBtZW1iZXIgKTsKfQoKaW5saW5lIGJvb2wgUU9iamVjdDo6ZGlzY29ubmVjdCggY29uc3QgY2hh
ciAqc2lnbmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRT2JqZWN0
ICpyZWNlaXZlciwgY29uc3QgY2hhciAqbWVtYmVyICkKewogICAgcmV0dXJuIGRpc2Nvbm5lY3Qo
IHRoaXMsIHNpZ25hbCwgcmVjZWl2ZXIsIG1lbWJlciApOwp9CgppbmxpbmUgYm9vbCBRT2JqZWN0
OjpkaXNjb25uZWN0KCBjb25zdCBRT2JqZWN0ICpyZWNlaXZlciwgY29uc3QgY2hhciAqbWVtYmVy
ICkKewogICAgcmV0dXJuIGRpc2Nvbm5lY3QoIHRoaXMsIDAsIHJlY2VpdmVyLCBtZW1iZXIgKTsK
fQoKaW5saW5lIGNvbnN0IFFPYmplY3QgKlFPYmplY3Q6OnNlbmRlcigpCnsKICAgIHJldHVybiBz
aWdTZW5kZXI7Cn0KCgpjbGFzcyBRU2VuZGVyT2JqZWN0IDogcHVibGljIFFPYmplY3QKewpwdWJs
aWM6CiAgICB2b2lkIHNldFNlbmRlciggUU9iamVjdCAqcyApIHsgc2lnU2VuZGVyPXM7IH0KfTsK
IyA0NCAia2VybmVsL3F3aWRnZXQuaCIgMgojIDEgImtlcm5lbC9xcGFpbnRkZXZpY2UuaCIgMQoj
IDUxICJrZXJuZWwvcXBhaW50ZGV2aWNlLmgiCmNsYXNzIFFJT0RldmljZTsKY2xhc3MgUVN0cmlu
ZzsKCgoKc3RydWN0IFFQYWludERldmljZVgxMURhdGE7CgoKdW5pb24gUVBEZXZDbWRQYXJhbSB7
CiAgICBpbnQgaXZhbDsKICAgIGludCAqaXZlYzsKICAgIFFTdHJpbmcgKnN0cjsKICAgIGNvbnN0
IFFQb2ludCAqcG9pbnQ7CiAgICBjb25zdCBRUmVjdCAqcmVjdDsKICAgIGNvbnN0IFFQb2ludEFy
cmF5ICpwdGFycjsKICAgIGNvbnN0IFFQaXhtYXAgKnBpeG1hcDsKICAgIGNvbnN0IFFJbWFnZSAq
aW1hZ2U7CiAgICBjb25zdCBRQ29sb3IgKmNvbG9yOwogICAgY29uc3QgUUZvbnQgKmZvbnQ7CiAg
ICBjb25zdCBRUGVuICpwZW47CiAgICBjb25zdCBRQnJ1c2ggKmJydXNoOwogICAgY29uc3QgUVJl
Z2lvbiAqcmduOwogICAgY29uc3QgUVdNYXRyaXggKm1hdHJpeDsKICAgIFFJT0RldmljZSAqZGV2
aWNlOwp9OwoKCgpjbGFzcyBRUGFpbnREZXZpY2UKewpwdWJsaWM6CiAgICB2aXJ0dWFsIH5RUGFp
bnREZXZpY2UoKTsKCiAgICBpbnQgZGV2VHlwZSgpIGNvbnN0OwogICAgYm9vbCBpc0V4dERldigp
IGNvbnN0OwogICAgYm9vbCBwYWludGluZ0FjdGl2ZSgpIGNvbnN0OwoKCgoKCgogICAgSEFORExF
IGhhbmRsZSgpIGNvbnN0OwoKCgoKCgoKICAgIERpc3BsYXkgKngxMURpc3BsYXkoKSBjb25zdDsK
ICAgIGludCB4MTFTY3JlZW4oKSBjb25zdDsKICAgIGludCB4MTFEZXB0aCgpIGNvbnN0OwogICAg
aW50IHgxMUNlbGxzKCkgY29uc3Q7CiAgICBIQU5ETEUgeDExQ29sb3JtYXAoKSBjb25zdDsKICAg
IGJvb2wgeDExRGVmYXVsdENvbG9ybWFwKCkgY29uc3Q7CiAgICB2b2lkICp4MTFWaXN1YWwoKSBj
b25zdDsKICAgIGJvb2wgeDExRGVmYXVsdFZpc3VhbCgpIGNvbnN0OwoKICAgIHN0YXRpYyBEaXNw
bGF5ICp4MTFBcHBEaXNwbGF5KCk7CiAgICBzdGF0aWMgaW50IHgxMUFwcFNjcmVlbigpOwogICAg
c3RhdGljIGludCB4MTFBcHBEZXB0aCgpOwogICAgc3RhdGljIGludCB4MTFBcHBDZWxscygpOwog
ICAgc3RhdGljIGludCB4MTFBcHBEcGlYKCk7CiAgICBzdGF0aWMgaW50IHgxMUFwcERwaVkoKTsK
ICAgIHN0YXRpYyBIQU5ETEUgeDExQXBwQ29sb3JtYXAoKTsKICAgIHN0YXRpYyBib29sIHgxMUFw
cERlZmF1bHRDb2xvcm1hcCgpOwogICAgc3RhdGljIHZvaWQgKngxMUFwcFZpc3VhbCgpOwogICAg
c3RhdGljIGJvb2wgeDExQXBwRGVmYXVsdFZpc3VhbCgpOwogICAgc3RhdGljIHZvaWQgeDExU2V0
QXBwRHBpWChpbnQpOwogICAgc3RhdGljIHZvaWQgeDExU2V0QXBwRHBpWShpbnQpOwojIDEzMSAi
a2VybmVsL3FwYWludGRldmljZS5oIgogICAgZW51bSBQRGV2Q21kIHsKICAgICAgICBQZGNOT1Ag
PSAwLAogICAgICAgIFBkY0RyYXdQb2ludCA9IDEsCiAgICAgICAgUGRjRHJhd0ZpcnN0ID0gUGRj
RHJhd1BvaW50LAogICAgICAgIFBkY01vdmVUbyA9IDIsCiAgICAgICAgUGRjTGluZVRvID0gMywK
ICAgICAgICBQZGNEcmF3TGluZSA9IDQsCiAgICAgICAgUGRjRHJhd1JlY3QgPSA1LAogICAgICAg
IFBkY0RyYXdSb3VuZFJlY3QgPSA2LAogICAgICAgIFBkY0RyYXdFbGxpcHNlID0gNywKICAgICAg
ICBQZGNEcmF3QXJjID0gOCwKICAgICAgICBQZGNEcmF3UGllID0gOSwKICAgICAgICBQZGNEcmF3
Q2hvcmQgPSAxMCwKICAgICAgICBQZGNEcmF3TGluZVNlZ21lbnRzID0gMTEsCiAgICAgICAgUGRj
RHJhd1BvbHlsaW5lID0gMTIsCiAgICAgICAgUGRjRHJhd1BvbHlnb24gPSAxMywKICAgICAgICBQ
ZGNEcmF3UXVhZEJlemllciA9IDE0LAogICAgICAgIFBkY0RyYXdUZXh0ID0gMTUsCiAgICAgICAg
UGRjRHJhd1RleHRGb3JtYXR0ZWQgPSAxNiwKICAgICAgICBQZGNEcmF3UGl4bWFwID0gMTcsCiAg
ICAgICAgUGRjRHJhd0ltYWdlID0gMTgsCiAgICAgICAgUGRjRHJhd1RleHQyID0gMTksCiAgICAg
ICAgUGRjRHJhd1RleHQyRm9ybWF0dGVkID0gMjAsCiAgICAgICAgUGRjRHJhd0xhc3QgPSBQZGNE
cmF3VGV4dDJGb3JtYXR0ZWQsCgoKCiAgICAgICAgUGRjQmVnaW4gPSAzMCwKICAgICAgICBQZGNF
bmQgPSAzMSwKICAgICAgICBQZGNTYXZlID0gMzIsCiAgICAgICAgUGRjUmVzdG9yZSA9IDMzLAog
ICAgICAgIFBkY1NldGRldiA9IDM0LAogICAgICAgIFBkY1NldEJrQ29sb3IgPSA0MCwKICAgICAg
ICBQZGNTZXRCa01vZGUgPSA0MSwKICAgICAgICBQZGNTZXRST1AgPSA0MiwKICAgICAgICBQZGNT
ZXRCcnVzaE9yaWdpbiA9IDQzLAogICAgICAgIFBkY1NldEZvbnQgPSA0NSwKICAgICAgICBQZGNT
ZXRQZW4gPSA0NiwKICAgICAgICBQZGNTZXRCcnVzaCA9IDQ3LAogICAgICAgIFBkY1NldFRhYlN0
b3BzID0gNDgsCiAgICAgICAgUGRjU2V0VGFiQXJyYXkgPSA0OSwKICAgICAgICBQZGNTZXRVbml0
ID0gNTAsCiAgICAgICAgUGRjU2V0Vlhmb3JtID0gNTEsCiAgICAgICAgUGRjU2V0V2luZG93ID0g
NTIsCiAgICAgICAgUGRjU2V0Vmlld3BvcnQgPSA1MywKICAgICAgICBQZGNTZXRXWGZvcm0gPSA1
NCwKICAgICAgICBQZGNTZXRXTWF0cml4ID0gNTUsCiAgICAgICAgUGRjU2F2ZVdNYXRyaXggPSA1
NiwKICAgICAgICBQZGNSZXN0b3JlV01hdHJpeCA9IDU3LAogICAgICAgIFBkY1NldENsaXAgPSA2
MCwKICAgICAgICBQZGNTZXRDbGlwUmVnaW9uID0gNjEsCgogICAgICAgIFBkY1Jlc2VydmVkU3Rh
cnQgPSAwLAogICAgICAgIFBkY1Jlc2VydmVkU3RvcCA9IDE5OQogICAgfTsKCnByb3RlY3RlZDoK
ICAgIFFQYWludERldmljZSggdWludCBkZXZmbGFncyApOwoKCgoKICAgIEhBTkRMRSBoZDsKICAg
IHZvaWQgY29weVgxMURhdGEoIGNvbnN0IFFQYWludERldmljZSAqICk7CiAgICB2aXJ0dWFsIHZv
aWQgc2V0WDExRGF0YSggY29uc3QgUVBhaW50RGV2aWNlWDExRGF0YSogKTsKICAgIFFQYWludERl
dmljZVgxMURhdGEqIGdldFgxMURhdGEoIGJvb2wgZGVmPUZBTFNFICkgY29uc3Q7CgoKCgoKCgog
ICAgdmlydHVhbCBib29sIGNtZCggaW50LCBRUGFpbnRlciAqLCBRUERldkNtZFBhcmFtICogKTsK
ICAgIHZpcnR1YWwgaW50IG1ldHJpYyggaW50ICkgY29uc3Q7CiAgICB2aXJ0dWFsIGludCBmb250
TWV0KCBRRm9udCAqLCBpbnQsIGNvbnN0IGNoYXIgKiA9IDAsIGludCA9IDAgKSBjb25zdDsKICAg
IHZpcnR1YWwgaW50IGZvbnRJbmYoIFFGb250ICosIGludCApIGNvbnN0OwoKICAgIHVzaG9ydCBk
ZXZGbGFnczsKICAgIHVzaG9ydCBwYWludGVyczsKCiAgICBmcmllbmQgY2xhc3MgUVBhaW50ZXI7
CiAgICBmcmllbmQgY2xhc3MgUVBhaW50RGV2aWNlTWV0cmljczsKICAgIGZyaWVuZCB2b2lkIGJp
dEJsdCggUVBhaW50RGV2aWNlICosIGludCwgaW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBRUGFpbnREZXZpY2UgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50LCBpbnQsIGludCwgaW50LCBRdDo6UmFzdGVyT3AsIGJvb2wgKTsKCiAgICBmcmll
bmQgdm9pZCBxdF9pbml0X2ludGVybmFsKCBpbnQgKiwgY2hhciAqKiwgRGlzcGxheSAqICk7CgoK
cHJpdmF0ZToKCiAgICBzdGF0aWMgRGlzcGxheSAqeF9hcHBkaXNwbGF5OwogICAgc3RhdGljIGlu
dCB4X2FwcHNjcmVlbjsKICAgIHN0YXRpYyBpbnQgeF9hcHBkZXB0aDsKICAgIHN0YXRpYyBpbnQg
eF9hcHBjZWxsczsKICAgIHN0YXRpYyBIQU5ETEUgeF9hcHBjb2xvcm1hcDsKICAgIHN0YXRpYyBi
b29sIHhfYXBwZGVmY29sb3JtYXA7CiAgICBzdGF0aWMgdm9pZCAqeF9hcHB2aXN1YWw7CiAgICBz
dGF0aWMgYm9vbCB4X2FwcGRlZnZpc3VhbDsKCiAgICBRUGFpbnREZXZpY2VYMTFEYXRhKiB4MTFE
YXRhOwoKCnByaXZhdGU6CgogICAgUVBhaW50RGV2aWNlKCBjb25zdCBRUGFpbnREZXZpY2UgJiAp
OwogICAgUVBhaW50RGV2aWNlICZvcGVyYXRvcj0oIGNvbnN0IFFQYWludERldmljZSAmICk7Cgp9
OwoKCgp2b2lkIGJpdEJsdCggUVBhaW50RGV2aWNlICpkc3QsIGludCBkeCwgaW50IGR5LAogICAg
ICAgICAgICAgY29uc3QgUVBhaW50RGV2aWNlICpzcmMsIGludCBzeD0wLCBpbnQgc3k9MCwgaW50
IHN3PS0xLCBpbnQgc2g9LTEsCiAgICAgICAgICAgICBRdDo6UmFzdGVyT3AgPSBRdDo6Q29weVJP
UCwgYm9vbCBpZ25vcmVNYXNrPUZBTFNFICk7CgoKdm9pZCBiaXRCbHQoIFFQYWludERldmljZSAq
ZHN0LCBpbnQgZHgsIGludCBkeSwKICAgICAgICAgICAgIGNvbnN0IFFJbWFnZSAqc3JjLCBpbnQg
c3g9MCwgaW50IHN5PTAsIGludCBzdz0tMSwgaW50IHNoPS0xLAogICAgICAgICAgICAgaW50IGNv
bnZlcnNpb25fZmxhZ3M9MCApOwoKCgoKc3RydWN0IFFQYWludERldmljZVgxMURhdGEgewogICAg
RGlzcGxheSogeF9kaXNwbGF5OwogICAgaW50IHhfc2NyZWVuOwogICAgaW50IHhfZGVwdGg7CiAg
ICBpbnQgeF9jZWxsczsKICAgIEhBTkRMRSB4X2NvbG9ybWFwOwogICAgYm9vbCB4X2RlZmNvbG9y
bWFwOwogICAgdm9pZCogeF92aXN1YWw7CiAgICBib29sIHhfZGVmdmlzdWFsOwp9OwoKCgoKCgoK
aW5saW5lIGludCBRUGFpbnREZXZpY2U6OmRldlR5cGUoKSBjb25zdAp7IHJldHVybiBkZXZGbGFn
cyAmIFFJbnRlcm5hbDo6RGV2aWNlVHlwZU1hc2s7IH0KCmlubGluZSBib29sIFFQYWludERldmlj
ZTo6aXNFeHREZXYoKSBjb25zdAp7IHJldHVybiAoZGV2RmxhZ3MgJiBRSW50ZXJuYWw6OkV4dGVy
bmFsRGV2aWNlKSAhPSAwOyB9CgppbmxpbmUgYm9vbCBRUGFpbnREZXZpY2U6OnBhaW50aW5nQWN0
aXZlKCkgY29uc3QKeyByZXR1cm4gcGFpbnRlcnMgIT0gMDsgfQoKCgoKaW5saW5lIEhBTkRMRSBR
UGFpbnREZXZpY2U6OmhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIGhkOyB9CgoKCmlubGluZSBEaXNw
bGF5ICpRUGFpbnREZXZpY2U6OngxMURpc3BsYXkoKSBjb25zdAp7IHJldHVybiB4MTFEYXRhID8g
eDExRGF0YS0+eF9kaXNwbGF5IDogeF9hcHBkaXNwbGF5OyB9CgppbmxpbmUgaW50IFFQYWludERl
dmljZTo6eDExU2NyZWVuKCkgY29uc3QKeyByZXR1cm4geDExRGF0YSA/IHgxMURhdGEtPnhfc2Ny
ZWVuIDogeF9hcHBzY3JlZW47IH0KCmlubGluZSBpbnQgUVBhaW50RGV2aWNlOjp4MTFEZXB0aCgp
IGNvbnN0CnsgcmV0dXJuIHgxMURhdGEgPyB4MTFEYXRhLT54X2RlcHRoIDogeF9hcHBkZXB0aDsg
fQoKaW5saW5lIGludCBRUGFpbnREZXZpY2U6OngxMUNlbGxzKCkgY29uc3QKeyByZXR1cm4geDEx
RGF0YSA/IHgxMURhdGEtPnhfY2VsbHMgOiB4X2FwcGNlbGxzOyB9CgppbmxpbmUgSEFORExFIFFQ
YWludERldmljZTo6eDExQ29sb3JtYXAoKSBjb25zdAp7IHJldHVybiB4MTFEYXRhID8geDExRGF0
YS0+eF9jb2xvcm1hcCA6IHhfYXBwY29sb3JtYXA7IH0KCmlubGluZSBib29sIFFQYWludERldmlj
ZTo6eDExRGVmYXVsdENvbG9ybWFwKCkgY29uc3QKeyByZXR1cm4geDExRGF0YSA/IHgxMURhdGEt
PnhfZGVmY29sb3JtYXAgOiB4X2FwcGRlZmNvbG9ybWFwOyB9CgppbmxpbmUgdm9pZCAqUVBhaW50
RGV2aWNlOjp4MTFWaXN1YWwoKSBjb25zdAp7IHJldHVybiB4MTFEYXRhID8geDExRGF0YS0+eF92
aXN1YWwgOiB4X2FwcHZpc3VhbDsgfQoKaW5saW5lIGJvb2wgUVBhaW50RGV2aWNlOjp4MTFEZWZh
dWx0VmlzdWFsKCkgY29uc3QKeyByZXR1cm4geDExRGF0YSA/IHgxMURhdGEtPnhfZGVmdmlzdWFs
IDogeF9hcHBkZWZ2aXN1YWw7IH0KCmlubGluZSBEaXNwbGF5ICpRUGFpbnREZXZpY2U6OngxMUFw
cERpc3BsYXkoKQp7IHJldHVybiB4X2FwcGRpc3BsYXk7IH0KCmlubGluZSBpbnQgUVBhaW50RGV2
aWNlOjp4MTFBcHBTY3JlZW4oKQp7IHJldHVybiB4X2FwcHNjcmVlbjsgfQoKaW5saW5lIGludCBR
UGFpbnREZXZpY2U6OngxMUFwcERlcHRoKCkKeyByZXR1cm4geF9hcHBkZXB0aDsgfQoKaW5saW5l
IGludCBRUGFpbnREZXZpY2U6OngxMUFwcENlbGxzKCkKeyByZXR1cm4geF9hcHBjZWxsczsgfQoK
aW5saW5lIEhBTkRMRSBRUGFpbnREZXZpY2U6OngxMUFwcENvbG9ybWFwKCkKeyByZXR1cm4geF9h
cHBjb2xvcm1hcDsgfQoKaW5saW5lIGJvb2wgUVBhaW50RGV2aWNlOjp4MTFBcHBEZWZhdWx0Q29s
b3JtYXAoKQp7IHJldHVybiB4X2FwcGRlZmNvbG9ybWFwOyB9CgppbmxpbmUgdm9pZCAqUVBhaW50
RGV2aWNlOjp4MTFBcHBWaXN1YWwoKQp7IHJldHVybiB4X2FwcHZpc3VhbDsgfQoKaW5saW5lIGJv
b2wgUVBhaW50RGV2aWNlOjp4MTFBcHBEZWZhdWx0VmlzdWFsKCkKeyByZXR1cm4geF9hcHBkZWZ2
aXN1YWw7IH0KCgoKCmlubGluZSB2b2lkIGJpdEJsdCggUVBhaW50RGV2aWNlICpkc3QsIGNvbnN0
IFFQb2ludCAmZHAsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgUVBhaW50RGV2aWNlICpzcmMs
IGNvbnN0IFFSZWN0ICZzciA9UVJlY3QoMCwwLC0xLC0xKSwKICAgICAgICAgICAgICAgICAgICBR
dDo6UmFzdGVyT3Agcm9wPVF0OjpDb3B5Uk9QLCBib29sIGlnbm9yZU1hc2s9RkFMU0UgKQp7CiAg
ICBiaXRCbHQoIGRzdCwgZHAueCgpLCBkcC55KCksIHNyYywgc3IueCgpLCBzci55KCksIHNyLndp
ZHRoKCksIHNyLmhlaWdodCgpLAogICAgICAgICAgICByb3AsIGlnbm9yZU1hc2sgKTsKfQojIDQ1
ICJrZXJuZWwvcXdpZGdldC5oIiAyCiMgMSAia2VybmVsL3FwYWxldHRlLmgiIDEKIyA0MyAia2Vy
bmVsL3FwYWxldHRlLmgiCiMgMSAia2VybmVsL3Fjb2xvci5oIiAxCiMgNDUgImtlcm5lbC9xY29s
b3IuaCIKY29uc3QgUVJnYiBSR0JfRElSVFkgPSAweDgwMDAwMDAwOwpjb25zdCBRUmdiIFJHQl9J
TlZBTElEID0gMHg0MDAwMDAwMDsKY29uc3QgUVJnYiBSR0JfRElSRUNUID0gMHgyMDAwMDAwMDsK
Y29uc3QgUVJnYiBSR0JfTUFTSyA9IDB4MDBmZmZmZmY7CgoKIGlubGluZSBpbnQgcVJlZCggUVJn
YiByZ2IgKQp7IHJldHVybiAoaW50KSgocmdiID4+IDE2KSAmIDB4ZmYpOyB9CgogaW5saW5lIGlu
dCBxR3JlZW4oIFFSZ2IgcmdiICkKeyByZXR1cm4gKGludCkoKHJnYiA+PiA4KSAmIDB4ZmYpOyB9
CgogaW5saW5lIGludCBxQmx1ZSggUVJnYiByZ2IgKQp7IHJldHVybiAoaW50KShyZ2IgJiAweGZm
KTsgfQoKIGlubGluZSBpbnQgcUFscGhhKCBRUmdiIHJnYiApCnsgcmV0dXJuIChpbnQpKChyZ2Ig
Pj4gMjQpICYgMHhmZik7IH0KCiBpbmxpbmUgUVJnYiBxUmdiKCBpbnQgciwgaW50IGcsIGludCBi
ICkKeyByZXR1cm4gKDB4ZmYgPDwgMjQpIHwgKChyICYgMHhmZikgPDwgMTYpIHwgKChnICYgMHhm
ZikgPDwgOCkgfCAoYiAmIDB4ZmYpOyB9CgogaW5saW5lIFFSZ2IgcVJnYmEoIGludCByLCBpbnQg
ZywgaW50IGIsIGludCBhICkKeyByZXR1cm4gKChhICYgMHhmZikgPDwgMjQpIHwgKChyICYgMHhm
ZikgPDwgMTYpIHwgKChnICYgMHhmZikgPDwgOCkgfCAoYiAmIDB4ZmYpOyB9CgogaW5saW5lIGlu
dCBxR3JheSggaW50IHIsIGludCBnLCBpbnQgYiApCnsgcmV0dXJuIChyKjExK2cqMTYrYio1KS8z
MjsgfQoKIGlubGluZSBpbnQgcUdyYXkoIFFSZ2IgcmdiICkKeyByZXR1cm4gcUdyYXkoIHFSZWQo
cmdiKSwgcUdyZWVuKHJnYiksIHFCbHVlKHJnYikgKTsgfQoKCmNsYXNzIFFDb2xvcgp7CnB1Ymxp
YzoKICAgIGVudW0gU3BlYyB7IFJnYiwgSHN2IH07CgogICAgUUNvbG9yKCk7CiAgICBRQ29sb3Io
IGludCByLCBpbnQgZywgaW50IGIgKTsKICAgIFFDb2xvciggaW50IHgsIGludCB5LCBpbnQgeiwg
U3BlYyApOwogICAgUUNvbG9yKCBRUmdiIHJnYiwgdWludCBwaXhlbD0weGZmZmZmZmZmKTsKICAg
IFFDb2xvciggY29uc3QgUVN0cmluZyYgbmFtZSApOwogICAgUUNvbG9yKCBjb25zdCBjaGFyICpu
YW1lICk7CiAgICBRQ29sb3IoIGNvbnN0IFFDb2xvciAmICk7CiAgICBRQ29sb3IgJm9wZXJhdG9y
PSggY29uc3QgUUNvbG9yICYgKTsKCiAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKICAgIGJvb2wg
aXNEaXJ0eSgpIGNvbnN0OwoKICAgIFFTdHJpbmcgbmFtZSgpIGNvbnN0OwogICAgdm9pZCBzZXRO
YW1lZENvbG9yKCBjb25zdCBRU3RyaW5nJiBuYW1lICk7CgogICAgdm9pZCByZ2IoIGludCAqciwg
aW50ICpnLCBpbnQgKmIgKSBjb25zdDsKICAgIFFSZ2IgcmdiKCkgY29uc3Q7CiAgICB2b2lkIHNl
dFJnYiggaW50IHIsIGludCBnLCBpbnQgYiApOwogICAgdm9pZCBzZXRSZ2IoIFFSZ2IgcmdiICk7
CgogICAgaW50IHJlZCgpIGNvbnN0OwogICAgaW50IGdyZWVuKCkgY29uc3Q7CiAgICBpbnQgYmx1
ZSgpIGNvbnN0OwoKICAgIHZvaWQgaHN2KCBpbnQgKmgsIGludCAqcywgaW50ICp2ICkgY29uc3Q7
CiAgICB2b2lkIGdldEhzdiggaW50ICZoLCBpbnQgJnMsIGludCAmdiApIGNvbnN0OwogICAgdm9p
ZCBzZXRIc3YoIGludCBoLCBpbnQgcywgaW50IHYgKTsKCiAgICBRQ29sb3IgbGlnaHQoIGludCBm
ID0gMTUwICkgY29uc3Q7CiAgICBRQ29sb3IgZGFyayggaW50IGYgPSAyMDAgKSBjb25zdDsKCiAg
ICBib29sIG9wZXJhdG9yPT0oIGNvbnN0IFFDb2xvciAmYyApIGNvbnN0OwogICAgYm9vbCBvcGVy
YXRvciE9KCBjb25zdCBRQ29sb3IgJmMgKSBjb25zdDsKCiAgICBzdGF0aWMgYm9vbCBsYXp5QWxs
b2MoKTsKICAgIHN0YXRpYyB2b2lkIHNldExhenlBbGxvYyggYm9vbCApOwogICAgdWludCBhbGxv
YygpOwogICAgdWludCBwaXhlbCgpIGNvbnN0OwoKICAgIHN0YXRpYyBpbnQgbWF4Q29sb3JzKCk7
CiAgICBzdGF0aWMgaW50IG51bUJpdFBsYW5lcygpOwoKICAgIHN0YXRpYyBpbnQgZW50ZXJBbGxv
Y0NvbnRleHQoKTsKICAgIHN0YXRpYyB2b2lkIGxlYXZlQWxsb2NDb250ZXh0KCk7CiAgICBzdGF0
aWMgaW50IGN1cnJlbnRBbGxvY0NvbnRleHQoKTsKICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lBbGxv
Y0NvbnRleHQoIGludCApOwoKCgoKCgogICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpOwogICAg
c3RhdGljIHZvaWQgY2xlYW51cCgpOwoKcHJpdmF0ZToKICAgIHZvaWQgc2V0U3lzdGVtTmFtZWRD
b2xvciggY29uc3QgUVN0cmluZyYgbmFtZSApOwogICAgc3RhdGljIHZvaWQgaW5pdEdsb2JhbENv
bG9ycygpOwogICAgc3RhdGljIFFDb2xvciogZ2xvYmFsQ29sb3JzKCk7CiAgICBzdGF0aWMgYm9v
bCBjb2xvcl9pbml0OwogICAgc3RhdGljIGJvb2wgZ2xvYmFsc19pbml0OwogICAgc3RhdGljIGJv
b2wgbGF6eV9hbGxvYzsKCgoKICAgIHVpbnQgcGl4OwogICAgUVJnYiByZ2JWYWw7Cn07CgoKaW5s
aW5lIFFDb2xvcjo6UUNvbG9yKCkKeyByZ2JWYWwgPSBSR0JfSU5WQUxJRDsgcGl4ID0gMDsgfQoK
aW5saW5lIFFDb2xvcjo6UUNvbG9yKCBpbnQgciwgaW50IGcsIGludCBiICkKeyBzZXRSZ2IoIHIs
IGcsIGIgKTsgfQoKaW5saW5lIGJvb2wgUUNvbG9yOjppc1ZhbGlkKCkgY29uc3QKeyByZXR1cm4g
KHJnYlZhbCAmIFJHQl9JTlZBTElEKSA9PSAwOyB9CgppbmxpbmUgYm9vbCBRQ29sb3I6OmlzRGly
dHkoKSBjb25zdAp7IHJldHVybiAocmdiVmFsICYgUkdCX0RJUlRZKSAhPSAwOyB9CgppbmxpbmUg
UVJnYiBRQ29sb3I6OnJnYigpIGNvbnN0CnsgcmV0dXJuIHJnYlZhbCB8IH5SR0JfTUFTSzsgfQoK
aW5saW5lIGludCBRQ29sb3I6OnJlZCgpIGNvbnN0CnsgcmV0dXJuIHFSZWQocmdiVmFsKTsgfQoK
aW5saW5lIGludCBRQ29sb3I6OmdyZWVuKCkgY29uc3QKeyByZXR1cm4gcUdyZWVuKHJnYlZhbCk7
IH0KCmlubGluZSBpbnQgUUNvbG9yOjpibHVlKCkgY29uc3QKeyByZXR1cm4gcUJsdWUocmdiVmFs
KTsgfQoKaW5saW5lIHVpbnQgUUNvbG9yOjpwaXhlbCgpIGNvbnN0CnsgcmV0dXJuIChyZ2JWYWwg
JiBSR0JfRElSVFkpID09IDAgPyBwaXggOiAoKFFDb2xvciopdGhpcyktPmFsbG9jKCk7IH0KCmlu
bGluZSBib29sIFFDb2xvcjo6bGF6eUFsbG9jKCkKeyByZXR1cm4gbGF6eV9hbGxvYzsgfQoKCmlu
bGluZSBib29sIFFDb2xvcjo6b3BlcmF0b3I9PSggY29uc3QgUUNvbG9yICZjICkgY29uc3QKewog
ICAgcmV0dXJuIGlzVmFsaWQoKT09Yy5pc1ZhbGlkKCkgJiYKICAgICAgICAoKCgocmdiVmFsIHwg
Yy5yZ2JWYWwpICYgUkdCX0RJUkVDVCkgPT0gMCAmJgogICAgICAgICAgICAocmdiVmFsICYgUkdC
X01BU0spID09IChjLnJnYlZhbCAmIFJHQl9NQVNLKSkgfHwKICAgICAgICAgICAoKHJnYlZhbCAm
IGMucmdiVmFsICYgUkdCX0RJUkVDVCkgIT0gMCAmJgogICAgICAgICAgICAocmdiVmFsICYgUkdC
X01BU0spID09IChjLnJnYlZhbCAmIFJHQl9NQVNLKSAmJiBwaXggPT0gYy5waXgpKTsKfQoKaW5s
aW5lIGJvb2wgUUNvbG9yOjpvcGVyYXRvciE9KCBjb25zdCBRQ29sb3IgJmMgKSBjb25zdAp7CiAg
ICByZXR1cm4gIW9wZXJhdG9yPT0oYyk7Cn0KCgoKCgoKCiBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8
PCggUURhdGFTdHJlYW0gJiwgY29uc3QgUUNvbG9yICYgKTsKIFFEYXRhU3RyZWFtICZvcGVyYXRv
cj4+KCBRRGF0YVN0cmVhbSAmLCBRQ29sb3IgJiApOwojIDQ0ICJrZXJuZWwvcXBhbGV0dGUuaCIg
MgoKIyAxICJrZXJuZWwvcWJydXNoLmgiIDEKIyA0NyAia2VybmVsL3FicnVzaC5oIgpjbGFzcyBR
QnJ1c2g6IHB1YmxpYyBRdAp7CmZyaWVuZCBjbGFzcyBRUGFpbnRlcjsKcHVibGljOgogICAgUUJy
dXNoKCk7CiAgICBRQnJ1c2goIEJydXNoU3R5bGUgKTsKICAgIFFCcnVzaCggY29uc3QgUUNvbG9y
ICYsIEJydXNoU3R5bGU9U29saWRQYXR0ZXJuICk7CiAgICBRQnJ1c2goIGNvbnN0IFFDb2xvciAm
LCBjb25zdCBRUGl4bWFwICYgKTsKICAgIFFCcnVzaCggY29uc3QgUUJydXNoICYgKTsKICAgflFC
cnVzaCgpOwogICAgUUJydXNoICZvcGVyYXRvcj0oIGNvbnN0IFFCcnVzaCAmICk7CgogICAgQnJ1
c2hTdHlsZSBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIGRhdGEtPnN0eWxlOyB9CiAgICB2b2lkIHNl
dFN0eWxlKCBCcnVzaFN0eWxlICk7CiAgICBjb25zdCBRQ29sb3IgJmNvbG9yKCljb25zdCB7IHJl
dHVybiBkYXRhLT5jb2xvcjsgfQogICAgdm9pZCBzZXRDb2xvciggY29uc3QgUUNvbG9yICYgKTsK
ICAgIFFQaXhtYXAgKnBpeG1hcCgpIGNvbnN0IHsgcmV0dXJuIGRhdGEtPnBpeG1hcDsgfQogICAg
dm9pZCBzZXRQaXhtYXAoIGNvbnN0IFFQaXhtYXAgJiApOwoKICAgIGJvb2wgb3BlcmF0b3I9PSgg
Y29uc3QgUUJydXNoICZwICkgY29uc3Q7CiAgICBib29sIG9wZXJhdG9yIT0oIGNvbnN0IFFCcnVz
aCAmYiApIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHJl
dHVybiAhKG9wZXJhdG9yPT0oYikpOyB9Cgpwcml2YXRlOgogICAgUUJydXNoIGNvcHkoKSBjb25z
dDsKICAgIHZvaWQgZGV0YWNoKCk7CiAgICB2b2lkIGluaXQoIGNvbnN0IFFDb2xvciAmLCBCcnVz
aFN0eWxlICk7CiAgICBzdHJ1Y3QgUUJydXNoRGF0YSA6IHB1YmxpYyBRU2hhcmVkIHsKICAgICAg
ICBCcnVzaFN0eWxlIHN0eWxlOwogICAgICAgIFFDb2xvciBjb2xvcjsKICAgICAgICBRUGl4bWFw
ICpwaXhtYXA7CiAgICB9ICpkYXRhOwp9OwoKCgoKCgoKIFFEYXRhU3RyZWFtICZvcGVyYXRvcjw8
KCBRRGF0YVN0cmVhbSAmLCBjb25zdCBRQnJ1c2ggJiApOwogUURhdGFTdHJlYW0gJm9wZXJhdG9y
Pj4oIFFEYXRhU3RyZWFtICYsIFFCcnVzaCAmICk7CiMgNDYgImtlcm5lbC9xcGFsZXR0ZS5oIiAy
CgoKCmNsYXNzIFFDb2xvckdyb3VwUHJpdmF0ZTsKCgpjbGFzcyBRQ29sb3JHcm91cAp7CnB1Ymxp
YzoKICAgIFFDb2xvckdyb3VwKCk7CiAgICBRQ29sb3JHcm91cCggY29uc3QgUUNvbG9yICZmb3Jl
Z3JvdW5kLCBjb25zdCBRQ29sb3IgJmJ1dHRvbiwKICAgICAgICAgICAgICAgICBjb25zdCBRQ29s
b3IgJmxpZ2h0LCBjb25zdCBRQ29sb3IgJmRhcmssIGNvbnN0IFFDb2xvciAmbWlkLAogICAgICAg
ICAgICAgICAgIGNvbnN0IFFDb2xvciAmdGV4dCwgY29uc3QgUUNvbG9yICZiYXNlICk7CiAgICBR
Q29sb3JHcm91cCggY29uc3QgUUJydXNoICZmb3JlZ3JvdW5kLCBjb25zdCBRQnJ1c2ggJmJ1dHRv
biwKICAgICAgICAgICAgICAgICBjb25zdCBRQnJ1c2ggJmxpZ2h0LCBjb25zdCBRQnJ1c2ggJmRh
cmssIGNvbnN0IFFCcnVzaCAmbWlkLAogICAgICAgICAgICAgICAgIGNvbnN0IFFCcnVzaCAmdGV4
dCwgY29uc3QgUUJydXNoICZicmlnaHRfdGV4dCwKICAgICAgICAgICAgICAgICBjb25zdCBRQnJ1
c2ggJmJhc2UsIGNvbnN0IFFCcnVzaCAmYmFja2dyb3VuZCk7CiAgICBRQ29sb3JHcm91cCggY29u
c3QgUUNvbG9yR3JvdXAgJiApOwoKICAgflFDb2xvckdyb3VwKCk7CgogICAgUUNvbG9yR3JvdXAm
IG9wZXJhdG9yID0oY29uc3QgUUNvbG9yR3JvdXAmKTsKCgogICAgZW51bSBDb2xvclJvbGUgeyBG
b3JlZ3JvdW5kLCBCdXR0b24sIExpZ2h0LCBNaWRsaWdodCwgRGFyaywgTWlkLAogICAgICAgICAg
ICAgICAgICAgICBUZXh0LCBCcmlnaHRUZXh0LCBCdXR0b25UZXh0LCBCYXNlLCBCYWNrZ3JvdW5k
LCBTaGFkb3csCiAgICAgICAgICAgICAgICAgICAgIEhpZ2hsaWdodCwgSGlnaGxpZ2h0ZWRUZXh0
LAogICAgICAgICAgICAgICAgICAgICBOQ29sb3JSb2xlcyB9OwoKICAgIGNvbnN0IFFDb2xvciAm
Y29sb3IoIENvbG9yUm9sZSApIGNvbnN0OwogICAgY29uc3QgUUJydXNoICZicnVzaCggQ29sb3JS
b2xlICkgY29uc3Q7CiAgICB2b2lkIHNldENvbG9yKCBDb2xvclJvbGUsIGNvbnN0IFFDb2xvciAm
ICk7CiAgICB2b2lkIHNldEJydXNoKCBDb2xvclJvbGUsIGNvbnN0IFFCcnVzaCAmICk7CgogICAg
Y29uc3QgUUNvbG9yICZmb3JlZ3JvdW5kKCkgY29uc3QgeyByZXR1cm4gYnJbRm9yZWdyb3VuZF0u
Y29sb3IoKTsgfQogICAgY29uc3QgUUNvbG9yICZidXR0b24oKSBjb25zdCB7IHJldHVybiBicltC
dXR0b25dLmNvbG9yKCk7IH0KICAgIGNvbnN0IFFDb2xvciAmbGlnaHQoKSBjb25zdCB7IHJldHVy
biBicltMaWdodF0uY29sb3IoKTsgfQogICAgY29uc3QgUUNvbG9yICZkYXJrKCkgY29uc3QgeyBy
ZXR1cm4gYnJbRGFya10uY29sb3IoKTsgfQogICAgY29uc3QgUUNvbG9yICZtaWQoKSBjb25zdCB7
IHJldHVybiBicltNaWRdLmNvbG9yKCk7IH0KICAgIGNvbnN0IFFDb2xvciAmdGV4dCgpIGNvbnN0
IHsgcmV0dXJuIGJyW1RleHRdLmNvbG9yKCk7IH0KICAgIGNvbnN0IFFDb2xvciAmYmFzZSgpIGNv
bnN0IHsgcmV0dXJuIGJyW0Jhc2VdLmNvbG9yKCk7IH0KICAgIGNvbnN0IFFDb2xvciAmYmFja2dy
b3VuZCgpIGNvbnN0IHsgcmV0dXJuIGJyW0JhY2tncm91bmRdLmNvbG9yKCk7IH0KCiAgICBjb25z
dCBRQ29sb3IgJm1pZGxpZ2h0KCkgY29uc3QgeyByZXR1cm4gYnJbTWlkbGlnaHRdLmNvbG9yKCk7
IH0KICAgIGNvbnN0IFFDb2xvciAmYnJpZ2h0VGV4dCgpIGNvbnN0IHsgcmV0dXJuIGJyW0JyaWdo
dFRleHRdLmNvbG9yKCk7IH0KICAgIGNvbnN0IFFDb2xvciAmYnV0dG9uVGV4dCgpIGNvbnN0IHsg
cmV0dXJuIGJyW0J1dHRvblRleHRdLmNvbG9yKCk7IH0KICAgIGNvbnN0IFFDb2xvciAmc2hhZG93
KCkgY29uc3QgeyByZXR1cm4gYnJbU2hhZG93XS5jb2xvcigpOyB9CiAgICBjb25zdCBRQ29sb3Ig
JmhpZ2hsaWdodCgpIGNvbnN0IHsgcmV0dXJuIGJyW0hpZ2hsaWdodF0uY29sb3IoKTsgfQogICAg
Y29uc3QgUUNvbG9yICZoaWdobGlnaHRlZFRleHQoKSBjb25zdHtyZXR1cm4gYnJbSGlnaGxpZ2h0
ZWRUZXh0XS5jb2xvcigpOyB9CgogICAgYm9vbCBvcGVyYXRvcj09KCBjb25zdCBRQ29sb3JHcm91
cCAmZyApIGNvbnN0OwogICAgYm9vbCBvcGVyYXRvciE9KCBjb25zdCBRQ29sb3JHcm91cCAmZyAp
IGNvbnN0CiAgICAgICAgeyByZXR1cm4gIShvcGVyYXRvcj09KGcpKTsgfQoKcHJpdmF0ZToKICAg
IFFCcnVzaCAqYnI7CiAgICBRQ29sb3JHcm91cFByaXZhdGUgKiBkOwoKICAgIGZyaWVuZCBjbGFz
cyBRUGFsZXR0ZTsKfTsKCgpjbGFzcyBRUGFsZXR0ZQp7CnB1YmxpYzoKICAgIFFQYWxldHRlKCk7
CiAgICBRUGFsZXR0ZSggY29uc3QgUUNvbG9yICZidXR0b24gKTsKICAgIFFQYWxldHRlKCBjb25z
dCBRQ29sb3IgJmJ1dHRvbiwgY29uc3QgUUNvbG9yICZiYWNrZ3JvdW5kICk7CiAgICBRUGFsZXR0
ZSggY29uc3QgUUNvbG9yR3JvdXAgJmFjdGl2ZSwgY29uc3QgUUNvbG9yR3JvdXAgJmRpc2FibGVk
LAogICAgICAgICAgICAgIGNvbnN0IFFDb2xvckdyb3VwICZpbmFjdGl2ZSApOwogICAgUVBhbGV0
dGUoIGNvbnN0IFFQYWxldHRlICYgKTsKICAgflFQYWxldHRlKCk7CiAgICBRUGFsZXR0ZSAmb3Bl
cmF0b3I9KCBjb25zdCBRUGFsZXR0ZSAmICk7CgogICAgZW51bSBDb2xvckdyb3VwIHsgTm9ybWFs
LCBEaXNhYmxlZCwgQWN0aXZlLCBJbmFjdGl2ZSwgTkNvbG9yR3JvdXBzIH07CgogICAgY29uc3Qg
UUNvbG9yICZjb2xvciggQ29sb3JHcm91cCwgUUNvbG9yR3JvdXA6OkNvbG9yUm9sZSApIGNvbnN0
OwogICAgY29uc3QgUUJydXNoICZicnVzaCggQ29sb3JHcm91cCwgUUNvbG9yR3JvdXA6OkNvbG9y
Um9sZSApIGNvbnN0OwogICAgdm9pZCBzZXRDb2xvciggQ29sb3JHcm91cCwgUUNvbG9yR3JvdXA6
OkNvbG9yUm9sZSwgY29uc3QgUUNvbG9yICYgKTsKICAgIHZvaWQgc2V0QnJ1c2goIENvbG9yR3Jv
dXAsIFFDb2xvckdyb3VwOjpDb2xvclJvbGUsIGNvbnN0IFFCcnVzaCAmICk7CgogICAgdm9pZCBz
ZXRDb2xvciggUUNvbG9yR3JvdXA6OkNvbG9yUm9sZSwgY29uc3QgUUNvbG9yICYgKTsKICAgIHZv
aWQgc2V0QnJ1c2goIFFDb2xvckdyb3VwOjpDb2xvclJvbGUsIGNvbnN0IFFCcnVzaCAmICk7Cgog
ICAgUVBhbGV0dGUgY29weSgpIGNvbnN0OwoKICAgIGNvbnN0IFFDb2xvckdyb3VwICZhY3RpdmUo
KSBjb25zdCB7IHJldHVybiBkYXRhLT5hY3RpdmU7IH0KICAgIGNvbnN0IFFDb2xvckdyb3VwICZk
aXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGRhdGEtPmRpc2FibGVkOyB9CiAgICBjb25zdCBRQ29s
b3JHcm91cCAmaW5hY3RpdmUoKSBjb25zdCB7IHJldHVybiBkYXRhLT5pbmFjdGl2ZTsgfQogICAg
Y29uc3QgUUNvbG9yR3JvdXAgJm5vcm1hbCgpIGNvbnN0IHsgcmV0dXJuIGRhdGEtPm5vcm1hbDsg
fQoKICAgIHZvaWQgc2V0QWN0aXZlKCBjb25zdCBRQ29sb3JHcm91cCAmICk7CiAgICB2b2lkIHNl
dERpc2FibGVkKCBjb25zdCBRQ29sb3JHcm91cCAmICk7CiAgICB2b2lkIHNldEluYWN0aXZlKCBj
b25zdCBRQ29sb3JHcm91cCAmICk7CiAgICB2b2lkIHNldE5vcm1hbCggY29uc3QgUUNvbG9yR3Jv
dXAgJiApOwoKICAgIGJvb2wgb3BlcmF0b3I9PSggY29uc3QgUVBhbGV0dGUgJnAgKSBjb25zdDsK
ICAgIGJvb2wgb3BlcmF0b3IhPSggY29uc3QgUVBhbGV0dGUgJnAgKSBjb25zdAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gIShvcGVyYXRvcj09KHApKTsg
fQogICAgYm9vbCBpc0NvcHlPZiggY29uc3QgUVBhbGV0dGUgJiApOwoKICAgIGludCBzZXJpYWxO
dW1iZXIoKSBjb25zdCB7IHJldHVybiBkYXRhLT5zZXJfbm87IH0KCnByaXZhdGU6CiAgICB2b2lk
IGRldGFjaCgpOwogICAgUUJydXNoICZkaXJlY3RCcnVzaCggQ29sb3JHcm91cCwgUUNvbG9yR3Jv
dXA6OkNvbG9yUm9sZSApIGNvbnN0OwoKICAgIHN0cnVjdCBRUGFsRGF0YSA6IHB1YmxpYyBRU2hh
cmVkIHsKICAgICAgICBRQ29sb3JHcm91cCBub3JtYWw7CiAgICAgICAgUUNvbG9yR3JvdXAgZGlz
YWJsZWQ7CiAgICAgICAgUUNvbG9yR3JvdXAgYWN0aXZlOwogICAgICAgIGludCBzZXJfbm87CiAg
ICAgICAgUUNvbG9yR3JvdXAgaW5hY3RpdmU7CiAgICB9ICpkYXRhOwogICAgc3RhdGljIFFQYWxE
YXRhICpkZWZQYWxEYXRhOwogICAgc3RhdGljIHZvaWQgY2xlYW51cERlZlBhbCgpOwp9OwoKCgoK
CgoKIFFEYXRhU3RyZWFtICZvcGVyYXRvcjw8KCBRRGF0YVN0cmVhbSAmLCBjb25zdCBRQ29sb3JH
cm91cCAmICk7CiBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PiggUURhdGFTdHJlYW0gJiwgUUNvbG9y
R3JvdXAgJiApOwoKIFFEYXRhU3RyZWFtICZvcGVyYXRvcjw8KCBRRGF0YVN0cmVhbSAmLCBjb25z
dCBRUGFsZXR0ZSAmICk7CiBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PiggUURhdGFTdHJlYW0gJiwg
UVBhbGV0dGUgJiApOwojIDQ2ICJrZXJuZWwvcXdpZGdldC5oIiAyCiMgMSAia2VybmVsL3FjdXJz
b3IuaCIgMQojIDY2ICJrZXJuZWwvcWN1cnNvci5oIgpzdHJ1Y3QgUUN1cnNvckRhdGE7CgoKY2xh
c3MgUUN1cnNvcgp7CnB1YmxpYzoKICAgIFFDdXJzb3IoKTsKICAgIFFDdXJzb3IoIGludCBzaGFw
ZSApOwogICAgUUN1cnNvciggY29uc3QgUUJpdG1hcCAmYml0bWFwLCBjb25zdCBRQml0bWFwICZt
YXNrLAogICAgICAgICAgICAgaW50IGhvdFg9LTEsIGludCBob3RZPS0xICk7CiAgICBRQ3Vyc29y
KCBjb25zdCBRUGl4bWFwICZwaXhtYXAsCiAgICAgICAgICAgICBpbnQgaG90WD0tMSwgaW50IGhv
dFk9LTEgKTsKICAgIFFDdXJzb3IoIGNvbnN0IFFDdXJzb3IgJiApOwogICB+UUN1cnNvcigpOwog
ICAgUUN1cnNvciAmb3BlcmF0b3I9KCBjb25zdCBRQ3Vyc29yICYgKTsKCiAgICBpbnQgc2hhcGUo
KSBjb25zdDsKICAgIHZvaWQgc2V0U2hhcGUoIGludCApOwoKICAgIGNvbnN0IFFCaXRtYXAgKmJp
dG1hcCgpIGNvbnN0OwogICAgY29uc3QgUUJpdG1hcCAqbWFzaygpIGNvbnN0OwogICAgUVBvaW50
IGhvdFNwb3QoKSBjb25zdDsKCgoKCiAgICBIQU5ETEUgaGFuZGxlKCkgY29uc3Q7CgoKCgoKCiAg
ICBzdGF0aWMgUVBvaW50IHBvcygpOwogICAgc3RhdGljIHZvaWQgc2V0UG9zKCBpbnQgeCwgaW50
IHkgKTsKICAgIHN0YXRpYyB2b2lkIHNldFBvcyggY29uc3QgUVBvaW50ICYgKTsKCiAgICBzdGF0
aWMgdm9pZCBpbml0aWFsaXplKCk7CiAgICBzdGF0aWMgdm9pZCBjbGVhbnVwKCk7Cgpwcml2YXRl
OgogICAgdm9pZCBzZXRCaXRtYXAoIGNvbnN0IFFCaXRtYXAgJmJpdG1hcCwgY29uc3QgUUJpdG1h
cCAmbWFzaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhvdFgsIGludCBo
b3RZICk7CiAgICB2b2lkIHVwZGF0ZSgpIGNvbnN0OwogICAgUUN1cnNvckRhdGEgKmRhdGE7CiAg
ICBRQ3Vyc29yICpmaW5kX2N1cihpbnQpOwp9OwojIDEyMSAia2VybmVsL3FjdXJzb3IuaCIKZW51
bSBRQ3Vyc29yU2hhcGUgewogICAgQXJyb3dDdXJzb3IsIFVwQXJyb3dDdXJzb3IsIENyb3NzQ3Vy
c29yLCBXYWl0Q3Vyc29yLCBJYmVhbUN1cnNvciwKICAgIFNpemVWZXJDdXJzb3IsIFNpemVIb3JD
dXJzb3IsIFNpemVCRGlhZ0N1cnNvciwgU2l6ZUZEaWFnQ3Vyc29yLAogICAgU2l6ZUFsbEN1cnNv
ciwgQmxhbmtDdXJzb3IsIFNwbGl0VkN1cnNvciwgU3BsaXRIQ3Vyc29yLCBQb2ludGluZ0hhbmRD
dXJzb3IsCiAgICBGb3JiaWRkZW5DdXJzb3IsIExhc3RDdXJzb3IgPSBGb3JiaWRkZW5DdXJzb3Is
IEJpdG1hcEN1cnNvcj0yNCB9OwoKCgoKCgogUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoIFFEYXRh
U3RyZWFtICYsIGNvbnN0IFFDdXJzb3IgJiApOwogUURhdGFTdHJlYW0gJm9wZXJhdG9yPj4oIFFE
YXRhU3RyZWFtICYsIFFDdXJzb3IgJiApOwoKCgoKaW5saW5lIHZvaWQgUUN1cnNvcjo6c2V0UG9z
KCBjb25zdCBRUG9pbnQgJnAgKQp7CiAgICBzZXRQb3MoIHAueCgpLCBwLnkoKSApOwp9CiMgNDcg
Imtlcm5lbC9xd2lkZ2V0LmgiIDIKIyAxICJrZXJuZWwvcWZvbnQuaCIgMQojIDQ3ICJrZXJuZWwv
cWZvbnQuaCIKY2xhc3MgUVN0cmluZ0xpc3Q7CnN0cnVjdCBRRm9udERlZjsKc3RydWN0IFFGb250
RGF0YTsKY2xhc3MgUUZvbnRJbnRlcm5hbDsKY2xhc3MgUVJlbmRlcmVkRm9udDsKCmNsYXNzIFFG
b250CnsKcHVibGljOgogICAgZW51bSBDaGFyU2V0IHsgSVNPXzg4NTlfMSwgTGF0aW4xID0gSVNP
Xzg4NTlfMSwgQW55Q2hhclNldCwKICAgICAgICAgICAgICAgICAgICAgSVNPXzg4NTlfMiwgTGF0
aW4yID0gSVNPXzg4NTlfMiwKICAgICAgICAgICAgICAgICAgICAgSVNPXzg4NTlfMywgTGF0aW4z
ID0gSVNPXzg4NTlfMywKICAgICAgICAgICAgICAgICAgICAgSVNPXzg4NTlfNCwgTGF0aW40ID0g
SVNPXzg4NTlfNCwKICAgICAgICAgICAgICAgICAgICAgSVNPXzg4NTlfNSwKICAgICAgICAgICAg
ICAgICAgICAgSVNPXzg4NTlfNiwKICAgICAgICAgICAgICAgICAgICAgSVNPXzg4NTlfNywKICAg
ICAgICAgICAgICAgICAgICAgSVNPXzg4NTlfOCwKICAgICAgICAgICAgICAgICAgICAgSVNPXzg4
NTlfOSwgTGF0aW41ID0gSVNPXzg4NTlfOSwKICAgICAgICAgICAgICAgICAgICAgSVNPXzg4NTlf
MTAsIExhdGluNiA9IElTT184ODU5XzEwLAogICAgICAgICAgICAgICAgICAgICBJU09fODg1OV8x
MSwgVElTNjIwID0gSVNPXzg4NTlfMTEsCiAgICAgICAgICAgICAgICAgICAgIElTT184ODU5XzEy
LAogICAgICAgICAgICAgICAgICAgICBJU09fODg1OV8xMywgTGF0aW43ID0gSVNPXzg4NTlfMTMs
CiAgICAgICAgICAgICAgICAgICAgIElTT184ODU5XzE0LCBMYXRpbjggPSBJU09fODg1OV8xNCwK
ICAgICAgICAgICAgICAgICAgICAgSVNPXzg4NTlfMTUsIExhdGluOSA9IElTT184ODU5XzE1LAog
ICAgICAgICAgICAgICAgICAgICBLT0k4UiwKICAgICAgICAgICAgICAgICAgICAgU2V0X0phLCBT
ZXRfMSA9IFNldF9KYSwKICAgICAgICAgICAgICAgICAgICAgU2V0X0tvLAogICAgICAgICAgICAg
ICAgICAgICBTZXRfVGhfVEgsCiAgICAgICAgICAgICAgICAgICAgIFNldF9aaCwKICAgICAgICAg
ICAgICAgICAgICAgU2V0X1poX1RXLAogICAgICAgICAgICAgICAgICAgICBTZXRfTiA9IFNldF9a
aF9UVywKICAgICAgICAgICAgICAgICAgICAgVW5pY29kZSwKCgoKCgoKICAgICAgICAgICAgICAg
ICAgICAgU2V0X0dCSywKICAgICAgICAgICAgICAgICAgICAgU2V0X0JpZzUsCgogICAgICAgICAg
ICAgICAgICAgICBUU0NJSSwKICAgICAgICAgICAgICAgICAgICAgS09JOFUsCiAgICAgICAgICAg
ICAgICAgICAgIENQMTI1MSwKICAgICAgICAgICAgICAgICAgICAgUFQxNTQsCgoKCgogICAgICAg
ICAgICAgICAgICAgICBKSVNfWF8wMjAxID0gMHhhMCwKCiAgICAgICAgICAgICAgICAgICAgIEpJ
U19YXzAyMDggPSAweGMwLCBFbmMxNiA9IEpJU19YXzAyMDgsCiAgICAgICAgICAgICAgICAgICAg
IEtTQ181NjAxLAogICAgICAgICAgICAgICAgICAgICBHQl8yMzEyLAogICAgICAgICAgICAgICAg
ICAgICBCaWc1CiAgICB9OwogICAgZW51bSBTdHlsZUhpbnQgeyBIZWx2ZXRpY2EsIFRpbWVzLCBD
b3VyaWVyLCBPbGRFbmdsaXNoLCBTeXN0ZW0sIEFueVN0eWxlLAogICAgICAgICAgICAgICAgICAg
ICBTYW5zU2VyaWYgPSBIZWx2ZXRpY2EsCiAgICAgICAgICAgICAgICAgICAgIFNlcmlmID0gVGlt
ZXMsCiAgICAgICAgICAgICAgICAgICAgIFR5cGVXcml0ZXIgPSBDb3VyaWVyLAogICAgICAgICAg
ICAgICAgICAgICBEZWNvcmF0aXZlID0gT2xkRW5nbGlzaH07CiAgICBlbnVtIFN0eWxlU3RyYXRl
Z3kgeyBQcmVmZXJEZWZhdWx0ID0gMHgwMDAxLAogICAgICAgICAgICAgICAgICAgICAgICAgIFBy
ZWZlckJpdG1hcCA9IDB4MDAwMiwKICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVmZXJEZXZp
Y2UgPSAweDAwMDQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlZmVyT3V0bGluZSA9IDB4
MDAwOCwKICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZU91dGxpbmUgPSAweDAwMTAsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgUHJlZmVyTWF0Y2ggPSAweDAwMjAsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgUHJlZmVyUXVhbGl0eSA9IDB4MDA0MCB9OwogICAgZW51bSBXZWlnaHQg
eyBMaWdodCA9IDI1LCBOb3JtYWwgPSA1MCwgRGVtaUJvbGQgPSA2MywKICAgICAgICAgICAgICAg
ICAgICAgQm9sZCA9IDc1LCBCbGFjayA9IDg3IH07CiAgICBRRm9udCgpOwogICAgUUZvbnQoIGNv
bnN0IFFTdHJpbmcgJmZhbWlseSwgaW50IHBvaW50U2l6ZSA9IDEyLAogICAgICAgICAgIGludCB3
ZWlnaHQgPSBOb3JtYWwsIGJvb2wgaXRhbGljID0gRkFMU0UgKTsKICAgIFFGb250KCBjb25zdCBR
U3RyaW5nICZmYW1pbHksIGludCBwb2ludFNpemUsCiAgICAgICAgICAgaW50IHdlaWdodCwgYm9v
bCBpdGFsaWMsIENoYXJTZXQgY2hhclNldCApOwogICAgUUZvbnQoIGNvbnN0IFFGb250ICYgKTsK
ICAgIH5RRm9udCgpOwogICAgUUZvbnQgJm9wZXJhdG9yPSggY29uc3QgUUZvbnQgJiApOwoKICAg
IFFTdHJpbmcgZmFtaWx5KCkgY29uc3Q7CiAgICB2b2lkIHNldEZhbWlseSggY29uc3QgUVN0cmlu
ZyAmKTsKICAgIGludCBwb2ludFNpemUoKSBjb25zdDsKICAgIGZsb2F0IHBvaW50U2l6ZUZsb2F0
KCkgY29uc3Q7CiAgICB2b2lkIHNldFBvaW50U2l6ZSggaW50ICk7CiAgICB2b2lkIHNldFBvaW50
U2l6ZUZsb2F0KCBmbG9hdCApOwogICAgaW50IHBpeGVsU2l6ZSgpIGNvbnN0OwogICAgdm9pZCBz
ZXRQaXhlbFNpemUoIGludCApOwogICAgdm9pZCBzZXRQaXhlbFNpemVGbG9hdCggZmxvYXQgKTsK
ICAgIGludCB3ZWlnaHQoKSBjb25zdDsKICAgIHZvaWQgc2V0V2VpZ2h0KCBpbnQgKTsKICAgIGJv
b2wgYm9sZCgpIGNvbnN0OwogICAgdm9pZCBzZXRCb2xkKCBib29sICk7CiAgICBib29sIGl0YWxp
YygpIGNvbnN0OwogICAgdm9pZCBzZXRJdGFsaWMoIGJvb2wgKTsKICAgIGJvb2wgdW5kZXJsaW5l
KCkgY29uc3Q7CiAgICB2b2lkIHNldFVuZGVybGluZSggYm9vbCApOwogICAgYm9vbCBzdHJpa2VP
dXQoKSBjb25zdDsKICAgIHZvaWQgc2V0U3RyaWtlT3V0KCBib29sICk7CiAgICBib29sIGZpeGVk
UGl0Y2goKSBjb25zdDsKICAgIHZvaWQgc2V0Rml4ZWRQaXRjaCggYm9vbCApOwogICAgU3R5bGVI
aW50IHN0eWxlSGludCgpIGNvbnN0OwogICAgdm9pZCBzZXRTdHlsZUhpbnQoIFN0eWxlSGludCAp
OwogICAgU3R5bGVTdHJhdGVneSBzdHlsZVN0cmF0ZWd5KCkgY29uc3Q7CiAgICB2b2lkIHNldFN0
eWxlSGludCggU3R5bGVIaW50LCBTdHlsZVN0cmF0ZWd5ICk7CiAgICBDaGFyU2V0IGNoYXJTZXQo
KSBjb25zdDsKICAgIHZvaWQgc2V0Q2hhclNldCggQ2hhclNldCApOwoKICAgIHN0YXRpYyBDaGFy
U2V0IGNoYXJTZXRGb3JMb2NhbGUoKTsKCiAgICBib29sIHJhd01vZGUoKSBjb25zdDsKICAgIHZv
aWQgc2V0UmF3TW9kZSggYm9vbCApOwoKICAgIGJvb2wgZXhhY3RNYXRjaCgpIGNvbnN0OwoKICAg
IGJvb2wgb3BlcmF0b3I9PSggY29uc3QgUUZvbnQgJiApIGNvbnN0OwogICAgYm9vbCBvcGVyYXRv
ciE9KCBjb25zdCBRRm9udCAmICkgY29uc3Q7CiAgICBib29sIGlzQ29weU9mKCBjb25zdCBRRm9u
dCAmICkgY29uc3Q7CgoKCgoKCiAgICBIQU5ETEUgaGFuZGxlKCkgY29uc3Q7CgoKCgogICAgdm9p
ZCBzZXRSYXdOYW1lKCBjb25zdCBRU3RyaW5nICYgKTsKICAgIFFTdHJpbmcgcmF3TmFtZSgpIGNv
bnN0OwoKICAgIFFTdHJpbmcga2V5KCkgY29uc3Q7CgogICAgc3RhdGljIFFTdHJpbmcgZW5jb2Rp
bmdOYW1lKCBDaGFyU2V0ICk7CgogICAgc3RhdGljIFFGb250IGRlZmF1bHRGb250KCk7CiAgICBz
dGF0aWMgdm9pZCBzZXREZWZhdWx0Rm9udCggY29uc3QgUUZvbnQgJiApOwoKICAgIHN0YXRpYyBR
U3RyaW5nIHN1YnN0aXR1dGUoIGNvbnN0IFFTdHJpbmcgJmZhbWlseU5hbWUgKTsKICAgIHN0YXRp
YyB2b2lkIGluc2VydFN1YnN0aXR1dGlvbiggY29uc3QgUVN0cmluZyYsIGNvbnN0IFFTdHJpbmcg
Jik7CiAgICBzdGF0aWMgdm9pZCByZW1vdmVTdWJzdGl0dXRpb24oIGNvbnN0IFFTdHJpbmcgJik7
CiAgICBzdGF0aWMgUVN0cmluZ0xpc3Qgc3Vic3RpdHV0aW9ucygpOwoKICAgIHN0YXRpYyB2b2lk
IGluaXRpYWxpemUoKTsKICAgIHN0YXRpYyB2b2lkIGxvY2FsZV9pbml0KCk7CiAgICBzdGF0aWMg
dm9pZCBjbGVhbnVwKCk7CiAgICBzdGF0aWMgdm9pZCBjYWNoZVN0YXRpc3RpY3MoKTsKCgoKCgpw
cm90ZWN0ZWQ6CiAgICBib29sIGRpcnR5KCkgY29uc3Q7CgogICAgUVN0cmluZyBkZWZhdWx0RmFt
aWx5KCkgY29uc3Q7CiAgICBRU3RyaW5nIGxhc3RSZXNvcnRGYW1pbHkoKSBjb25zdDsKICAgIFFT
dHJpbmcgbGFzdFJlc29ydEZvbnQoKSBjb25zdDsKICAgIGludCBkZWNpUG9pbnRTaXplKCkgY29u
c3Q7Cgpwcml2YXRlOgogICAgUUZvbnQoIFFGb250RGF0YSAqICk7CiAgICB2b2lkIGluaXQoKTsK
ICAgIHZvaWQgZGV0YWNoKCk7CiAgICB2b2lkIGluaXRGb250SW5mbygpIGNvbnN0OwogICAgdm9p
ZCBsb2FkKCkgY29uc3Q7CiMgMjIxICJrZXJuZWwvcWZvbnQuaCIKICAgIGZyaWVuZCBjbGFzcyBR
Rm9udF9Qcml2YXRlOwogICAgZnJpZW5kIGNsYXNzIFFGb250SW50ZXJuYWw7CiAgICBmcmllbmQg
Y2xhc3MgUUZvbnRNZXRyaWNzOwogICAgZnJpZW5kIGNsYXNzIFFGb250SW5mbzsKICAgIGZyaWVu
ZCBjbGFzcyBRUGFpbnRlcjsKCiAgICBmcmllbmQgdm9pZCAqIHF0X2Z0X2ZvbnQgKGNvbnN0IFFG
b250ICpmKTsKCgoKICAgIGZyaWVuZCBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PCggUURhdGFTdHJl
YW0gJiwgY29uc3QgUUZvbnQgJiApOwogICAgZnJpZW5kIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+
KCBRRGF0YVN0cmVhbSAmLCBRRm9udCAmICk7CgogICAgUUZvbnREYXRhICpkOwogICAgc3RhdGlj
IENoYXJTZXQgZGVmYXVsdENoYXJTZXQ7Cn07CgppbmxpbmUgYm9vbCBRRm9udDo6Ym9sZCgpIGNv
bnN0CnsgcmV0dXJuIHdlaWdodCgpID4gTm9ybWFsOyB9CgppbmxpbmUgdm9pZCBRRm9udDo6c2V0
Qm9sZCggYm9vbCBlbmFibGUgKQp7IHNldFdlaWdodCggZW5hYmxlID8gQm9sZCA6IE5vcm1hbCAp
OyB9CgoKCgoKCgogUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoIFFEYXRhU3RyZWFtICYsIGNvbnN0
IFFGb250ICYgKTsKIFFEYXRhU3RyZWFtICZvcGVyYXRvcj4+KCBRRGF0YVN0cmVhbSAmLCBRRm9u
dCAmICk7CiMgNDggImtlcm5lbC9xd2lkZ2V0LmgiIDIKIyAxICJrZXJuZWwvcWZvbnRtZXRyaWNz
LmgiIDEKIyA0NiAia2VybmVsL3Fmb250bWV0cmljcy5oIgpjbGFzcyBRVGV4dENvZGVjOwoKCmNs
YXNzIFFGb250TWV0cmljcwp7CnB1YmxpYzoKICAgIFFGb250TWV0cmljcyggY29uc3QgUUZvbnQg
JiApOwogICAgUUZvbnRNZXRyaWNzKCBjb25zdCBRRm9udE1ldHJpY3MgJiApOwogICB+UUZvbnRN
ZXRyaWNzKCk7CgogICAgUUZvbnRNZXRyaWNzICZvcGVyYXRvcj0oIGNvbnN0IFFGb250TWV0cmlj
cyAmICk7CgogICAgaW50IGFzY2VudCgpIGNvbnN0OwogICAgaW50IGRlc2NlbnQoKSBjb25zdDsK
ICAgIGludCBoZWlnaHQoKSBjb25zdDsKICAgIGludCBsZWFkaW5nKCkgY29uc3Q7CiAgICBpbnQg
bGluZVNwYWNpbmcoKSBjb25zdDsKICAgIGludCBtaW5MZWZ0QmVhcmluZygpIGNvbnN0OwogICAg
aW50IG1pblJpZ2h0QmVhcmluZygpIGNvbnN0OwogICAgaW50IG1heFdpZHRoKCkgY29uc3Q7Cgog
ICAgYm9vbCBpbkZvbnQoUUNoYXIpIGNvbnN0OwoKICAgIGludCBsZWZ0QmVhcmluZyhRQ2hhcikg
Y29uc3Q7CiAgICBpbnQgcmlnaHRCZWFyaW5nKFFDaGFyKSBjb25zdDsKICAgIGludCB3aWR0aCgg
Y29uc3QgUVN0cmluZyAmLCBpbnQgbGVuID0gLTEgKSBjb25zdDsKICAgIGludCB3aWR0aCggUUNo
YXIgKSBjb25zdDsKICAgIGludCB3aWR0aCggY2hhciBjICkgY29uc3QgeyByZXR1cm4gd2lkdGgo
IChRQ2hhcikgYyApOyB9CiAgICBRUmVjdCBib3VuZGluZ1JlY3QoIGNvbnN0IFFTdHJpbmcgJiwg
aW50IGxlbiA9IC0xICkgY29uc3Q7CiAgICBRUmVjdCBib3VuZGluZ1JlY3QoIFFDaGFyICkgY29u
c3Q7CiAgICBRUmVjdCBib3VuZGluZ1JlY3QoIGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoLCBp
bnQgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcmIHN0
ciwgaW50IGxlbj0tMSwgaW50IHRhYnN0b3BzPTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCAqdGFiYXJyYXk9MCwgY2hhciAqKmludGVybj0wICkgY29uc3Q7CiAgICBRU2l6ZSBz
aXplKCBpbnQgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRU3RyaW5nJiBzdHIs
IGludCBsZW49LTEsIGludCB0YWJzdG9wcz0wLAogICAgICAgICAgICAgICAgICAgICAgaW50ICp0
YWJhcnJheT0wLCBjaGFyICoqaW50ZXJuPTAgKSBjb25zdDsKCiAgICBpbnQgdW5kZXJsaW5lUG9z
KCkgY29uc3Q7CiAgICBpbnQgc3RyaWtlT3V0UG9zKCkgY29uc3Q7CiAgICBpbnQgbGluZVdpZHRo
KCkgY29uc3Q7Cgpwcml2YXRlOgogICAgUUZvbnRNZXRyaWNzKCBjb25zdCBRUGFpbnRlciAqICk7
CiAgICBzdGF0aWMgdm9pZCByZXNldCggY29uc3QgUVBhaW50ZXIgKiApOwogICAgY29uc3QgUUZv
bnREZWYgKnNwZWMoKSBjb25zdDsKCgoKCgogICAgdm9pZCAqZm9udFN0cnVjdCgpIGNvbnN0Owog
ICAgdm9pZCAqZm9udFNldCgpIGNvbnN0OwogICAgY29uc3QgUVRleHRDb2RlYyAqbWFwcGVyKCkg
Y29uc3Q7CiAgICBpbnQgcHJpbnRlckFkanVzdGVkKGludCkgY29uc3Q7CgoKCgogICAgZnJpZW5k
IGNsYXNzIFFXaWRnZXQ7CiAgICBmcmllbmQgY2xhc3MgUVBhaW50ZXI7CgogICAgUUZvbnRJbnRl
cm5hbCAqZmluOwogICAgUVBhaW50ZXIgKnBhaW50ZXI7CiAgICBpbnQgZmxhZ3M7CgogICAgYm9v
bCB1bmRlcmxpbmVGbGFnKCkgY29uc3QgeyByZXR1cm4gKGZsYWdzICYgMHgxKSAhPSAwOyB9CiAg
ICBib29sIHN0cmlrZU91dEZsYWcoKSBjb25zdCB7IHJldHVybiAoZmxhZ3MgJiAweDIpICE9IDA7
IH0KICAgIHZvaWQgc2V0VW5kZXJsaW5lRmxhZygpIHsgZmxhZ3MgfD0gMHgxOyB9CiAgICB2b2lk
IHNldFN0cmlrZU91dEZsYWcoKSB7IGZsYWdzIHw9IDB4MjsgfQp9OwojIDQ5ICJrZXJuZWwvcXdp
ZGdldC5oIiAyCiMgMSAia2VybmVsL3Fmb250aW5mby5oIiAxCiMgNDYgImtlcm5lbC9xZm9udGlu
Zm8uaCIKY2xhc3MgUUZvbnRJbmZvCnsKcHVibGljOgogICAgUUZvbnRJbmZvKCBjb25zdCBRRm9u
dCAmICk7CiAgICBRRm9udEluZm8oIGNvbnN0IFFGb250SW5mbyAmICk7CiAgIH5RRm9udEluZm8o
KTsKCiAgICBRRm9udEluZm8gJm9wZXJhdG9yPSggY29uc3QgUUZvbnRJbmZvICYgKTsKCiAgICBR
U3RyaW5nIGZhbWlseSgpIGNvbnN0OwogICAgaW50IHBvaW50U2l6ZSgpIGNvbnN0OwogICAgYm9v
bCBpdGFsaWMoKSBjb25zdDsKICAgIGludCB3ZWlnaHQoKSBjb25zdDsKICAgIGJvb2wgYm9sZCgp
IGNvbnN0OwogICAgYm9vbCB1bmRlcmxpbmUoKSBjb25zdDsKICAgIGJvb2wgc3RyaWtlT3V0KCkg
Y29uc3Q7CiAgICBib29sIGZpeGVkUGl0Y2goKSBjb25zdDsKICAgIFFGb250OjpTdHlsZUhpbnQg
c3R5bGVIaW50KCkgY29uc3Q7CiAgICBRRm9udDo6Q2hhclNldCBjaGFyU2V0KCkgY29uc3Q7CiAg
ICBib29sIHJhd01vZGUoKSBjb25zdDsKCiAgICBib29sIGV4YWN0TWF0Y2goKSBjb25zdDsKCgog
ICAgY29uc3QgUUZvbnQgJmZvbnQoKSBjb25zdDsKCgpwcml2YXRlOgogICAgUUZvbnRJbmZvKCBj
b25zdCBRUGFpbnRlciAqICk7CiAgICBzdGF0aWMgdm9pZCByZXNldCggY29uc3QgUVBhaW50ZXIg
KiApOwogICAgY29uc3QgUUZvbnREZWYgKnNwZWMoKSBjb25zdDsKCiAgICBRRm9udEludGVybmFs
ICpmaW47CiAgICBRUGFpbnRlciAqcGFpbnRlcjsKICAgIGludCBmbGFnczsKCiAgICBib29sIHVu
ZGVybGluZUZsYWcoKSBjb25zdCB7IHJldHVybiAoZmxhZ3MgJiAweDEpICE9IDA7IH0KICAgIGJv
b2wgc3RyaWtlT3V0RmxhZygpIGNvbnN0IHsgcmV0dXJuIChmbGFncyAmIDB4MikgIT0gMDsgfQog
ICAgYm9vbCBleGFjdE1hdGNoRmxhZygpIGNvbnN0IHsgcmV0dXJuIChmbGFncyAmIDB4NCkgIT0g
MDsgfQogICAgdm9pZCBzZXRVbmRlcmxpbmVGbGFnKCkgeyBmbGFncyB8PSAweDE7IH0KICAgIHZv
aWQgc2V0U3RyaWtlT3V0RmxhZygpIHsgZmxhZ3MgfD0gMHgyOyB9CiAgICB2b2lkIHNldEV4YWN0
TWF0Y2hGbGFnKCkgeyBmbGFncyB8PSAweDQ7IH0KCiAgICBmcmllbmQgY2xhc3MgUVdpZGdldDsK
ICAgIGZyaWVuZCBjbGFzcyBRUGFpbnRlcjsKfTsKCgppbmxpbmUgYm9vbCBRRm9udEluZm86OmJv
bGQoKSBjb25zdAp7IHJldHVybiB3ZWlnaHQoKSA+IFFGb250OjpOb3JtYWw7IH0KIyA1MCAia2Vy
bmVsL3F3aWRnZXQuaCIgMgojIDEgImtlcm5lbC9xc3R5bGUuaCIgMQojIDQ2ICJrZXJuZWwvcXN0
eWxlLmgiCmNsYXNzIFFCdXR0b247CmNsYXNzIFFQdXNoQnV0dG9uOwpjbGFzcyBRU2Nyb2xsQmFy
OwpjbGFzcyBRVGFiQmFyOwpjbGFzcyBRVGFiOwpjbGFzcyBRUG9wdXBNZW51OwpjbGFzcyBRTWVu
dUl0ZW07CmNsYXNzIFFUb29sQnV0dG9uOwoKY2xhc3MgUVN0eWxlOiBwdWJsaWMgUU9iamVjdAp7
CiAgICBwdWJsaWM6IFFNZXRhT2JqZWN0ICptZXRhT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljTWV0YU9iamVjdCgpOyB9IGNvbnN0IGNoYXIgKmNsYXNzTmFtZSgpIGNvbnN0OyBzdGF0aWMg
UU1ldGFPYmplY3QqIHN0YXRpY01ldGFPYmplY3QoKTsgc3RhdGljIFFTdHJpbmcgdHIoY29uc3Qg
Y2hhciopOyBzdGF0aWMgUVN0cmluZyB0cihjb25zdCBjaGFyKiwgY29uc3QgY2hhciopOyBwcm90
ZWN0ZWQ6IHZvaWQgaW5pdE1ldGFPYmplY3QoKTsgcHJpdmF0ZTogc3RhdGljIFFNZXRhT2JqZWN0
ICptZXRhT2JqOwogICAgR1VJU3R5bGUgZ3M7Cgpwcml2YXRlOgogICAgUVN0eWxlKEdVSVN0eWxl
KTsKICAgIFFTdHlsZSgpOwogICAgZnJpZW5kIGNsYXNzIFFDb21tb25TdHlsZTsKCnB1YmxpYzoK
ICAgIHZpcnR1YWwgflFTdHlsZSgpOwoKCiAgICBvcGVyYXRvciBHVUlTdHlsZSgpIGNvbnN0IHsg
cmV0dXJuIGdzOyB9CiAgICBpbnQgb3BlcmF0b3I9PShHVUlTdHlsZSBzKSBjb25zdCB7IHJldHVy
biBncz09czsgfQogICAgaW50IG9wZXJhdG9yIT0oR1VJU3R5bGUgcykgY29uc3QgeyByZXR1cm4g
Z3MhPXM7IH0KCgogICAgR1VJU3R5bGUgZ3VpU3R5bGUoKSBjb25zdCB7IHJldHVybiBnczsgfQoK
CgogICAgdmlydHVhbCB2b2lkIHBvbGlzaCggUVdpZGdldCogKTsKICAgIHZpcnR1YWwgdm9pZCB1
blBvbGlzaCggUVdpZGdldCogKTsKCiAgICB2aXJ0dWFsIHZvaWQgcG9saXNoKCBRQXBwbGljYXRp
b24qKTsKICAgIHZpcnR1YWwgdm9pZCB1blBvbGlzaCggUUFwcGxpY2F0aW9uKik7CgogICAgdmly
dHVhbCB2b2lkIHBvbGlzaCggUVBhbGV0dGUmKTsKCiAgICB2aXJ0dWFsIFFSZWN0IGl0ZW1SZWN0
KCBRUGFpbnRlciAqcCwgaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgsCiAgICAgICAgICAgICAg
ICAgICAgaW50IGZsYWdzLCBib29sIGVuYWJsZWQsCiAgICAgICAgICAgICAgICAgICAgY29uc3Qg
UVBpeG1hcCAqcGl4bWFwLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcmIHRleHQs
IGludCBsZW49LTEgKTsKCiAgICB2aXJ0dWFsIHZvaWQgZHJhd0l0ZW0oIFFQYWludGVyICpwLCBp
bnQgeCwgaW50IHksIGludCB3LCBpbnQgaCwKICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3Ms
IGNvbnN0IFFDb2xvckdyb3VwICZnLCBib29sIGVuYWJsZWQsCiAgICAgICAgICAgICAgICAgICAg
Y29uc3QgUVBpeG1hcCAqcGl4bWFwLCBjb25zdCBRU3RyaW5nJiB0ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgbGVuPS0xLCBjb25zdCBRQ29sb3IqIHBlbkNvbG9yID0gMCApOwoK
CiAgICB2aXJ0dWFsIHZvaWQgZHJhd1NlcGFyYXRvciggUVBhaW50ZXIgKnAsIGludCB4MSwgaW50
IHkxLCBpbnQgeDIsIGludCB5MiwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgUUNvbG9yR3Jv
dXAgJmcsIGJvb2wgc3Vua2VuID0gVFJVRSwKICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVX
aWR0aCA9IDEsIGludCBtaWRMaW5lV2lkdGggPSAwICk7CgogICAgdmlydHVhbCB2b2lkIGRyYXdS
ZWN0KCBRUGFpbnRlciAqcCwgaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgsCiAgICAgICAgICAg
ICAgICAgICAgY29uc3QgUUNvbG9yICYsIGludCBsaW5lV2lkdGggPSAxLAogICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFFCcnVzaCAqZmlsbCA9IDAgKTsKCiAgICB2aXJ0dWFsIHZvaWQgZHJhd1Jl
Y3RTdHJvbmcoIFFQYWludGVyICpwLCBpbnQgeCwgaW50IHksIGludCB3LCBpbnQgaCwKICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgUUNvbG9yR3JvdXAgJiwgYm9vbCBzdW5rZW49RkFMU0UsCiAg
ICAgICAgICAgICAgICAgICAgIGludCBsaW5lV2lkdGggPSAxLCBpbnQgbWlkTGluZVdpZHRoID0g
MCwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgUUJydXNoICpmaWxsID0gMCApOwoKICAgIHZp
cnR1YWwgdm9pZCBkcmF3QnV0dG9uKCBRUGFpbnRlciAqcCwgaW50IHgsIGludCB5LCBpbnQgdywg
aW50IGgsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFDb2xvckdyb3VwICZnLCBib29sIHN1
bmtlbiA9IEZBTFNFLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBRQnJ1c2ggKmZpbGwgPSAw
ICkgPSAwOwoKICAgIHZpcnR1YWwgUVJlY3QgYnV0dG9uUmVjdCggaW50IHgsIGludCB5LCBpbnQg
dywgaW50IGgpOwoKICAgIHZpcnR1YWwgdm9pZCBkcmF3QnV0dG9uTWFzayggUVBhaW50ZXIgKnAs
IGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoKTsKCiAgICB2aXJ0dWFsIHZvaWQgZHJhd0JldmVs
QnV0dG9uKCBRUGFpbnRlciAqcCwgaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgsCiAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFFDb2xvckdyb3VwICZnLCBib29sIHN1bmtlbiA9IEZBTFNFLAog
ICAgICAgICAgICAgICAgICAgICBjb25zdCBRQnJ1c2ggKmZpbGwgPSAwICkgPSAwOwoKICAgIFFS
ZWN0IGJldmVsQnV0dG9uUmVjdCggaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgpOwoKICAgIHZp
cnR1YWwgdm9pZCBkcmF3VG9vbEJ1dHRvbiggUVBhaW50ZXIgKnAsIGludCB4LCBpbnQgeSwgaW50
IHcsIGludCBoLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBRQ29sb3JHcm91cCAmZywgYm9v
bCBzdW5rZW4gPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgUUJydXNoICpmaWxs
ID0gMCApOwogICAgdm9pZCBkcmF3VG9vbEJ1dHRvbiggUVRvb2xCdXR0b24qIGJ0biwgUVBhaW50
ZXIgKnApOwoKICAgIFFSZWN0IHRvb2xCdXR0b25SZWN0KCBpbnQgeCwgaW50IHksIGludCB3LCBp
bnQgaCk7CgogICAgdmlydHVhbCB2b2lkIGRyYXdQYW5lbCggUVBhaW50ZXIgKnAsIGludCB4LCBp
bnQgeSwgaW50IHcsIGludCBoLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IFFDb2xvckdyb3Vw
ICYsIGJvb2wgc3Vua2VuPUZBTFNFLAogICAgICAgICAgICAgICAgICAgIGludCBsaW5lV2lkdGgg
PSAxLCBjb25zdCBRQnJ1c2ggKmZpbGwgPSAwICk7CgogICAgdmlydHVhbCB2b2lkIGRyYXdQb3B1
cFBhbmVsKCBRUGFpbnRlciAqcCwgaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFDb2xvckdyb3VwICYsIGludCBsaW5lV2lk
dGggPSAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRQnJ1c2ggKmZp
bGwgPSAwICk7CgogICAgdmlydHVhbCB2b2lkIGRyYXdBcnJvdyggUVBhaW50ZXIgKnAsIFF0OjpB
cnJvd1R5cGUgdHlwZSwgYm9vbCBkb3duLAogICAgICAgICAgICAgICAgICAgICBpbnQgeCwgaW50
IHksIGludCB3LCBpbnQgaCwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgUUNvbG9yR3JvdXAg
JmcsIGJvb2wgZW5hYmxlZCwgY29uc3QgUUJydXNoICpmaWxsID0gMCApID0gMDsKCgogICAgdmly
dHVhbCBRU2l6ZSBleGNsdXNpdmVJbmRpY2F0b3JTaXplKCkgY29uc3QgPSAwOwogICAgdmlydHVh
bCB2b2lkIGRyYXdFeGNsdXNpdmVJbmRpY2F0b3IoIFFQYWludGVyKiBwLCBpbnQgeCwgaW50IHks
IGludCB3LCBpbnQgaCwKICAgICAgICAgICAgICAgICAgICBjb25zdCBRQ29sb3JHcm91cCAmZywg
Ym9vbCBvbiwgYm9vbCBkb3duID0gRkFMU0UsIGJvb2wgZW5hYmxlZCA9IFRSVUUgKSA9IDA7CiAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0V4Y2x1c2l2ZUluZGljYXRvck1hc2soIFFQYWludGVyICpwLCBp
bnQgeCwgaW50IHksIGludCB3LCBpbnQgaCwgYm9vbCBvbik7CgoKICAgIHZpcnR1YWwgUVNpemUg
aW5kaWNhdG9yU2l6ZSgpIGNvbnN0ID0gMDsKICAgIHZpcnR1YWwgdm9pZCBkcmF3SW5kaWNhdG9y
KCBRUGFpbnRlciogcCwgaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgsIGNvbnN0IFFDb2xvckdy
b3VwICZnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0ZSwgYm9vbCBk
b3duID0gRkFMU0UsIGJvb2wgZW5hYmxlZCA9IFRSVUUgKSA9IDA7CiAgICB2aXJ0dWFsIHZvaWQg
ZHJhd0luZGljYXRvck1hc2soIFFQYWludGVyICpwLCBpbnQgeCwgaW50IHksIGludCB3LCBpbnQg
aCwgaW50IHN0YXRlKTsKCgoKICAgIHZpcnR1YWwgdm9pZCBkcmF3Rm9jdXNSZWN0KCBRUGFpbnRl
ciosIGNvbnN0IFFSZWN0ICYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
UUNvbG9yR3JvdXAgJiwgY29uc3QgUUNvbG9yKiBiZyA9IDAsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCA9IEZBTFNFICkgPSAwOwoKCgoKCiAgICB2aXJ0dWFsIHZvaWQgZHJh
d0NvbWJvQnV0dG9uKCBRUGFpbnRlciAqcCwgaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRQ29sb3JHcm91cCAmZywgYm9v
bCBzdW5rZW4gPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
ZWRpdGFibGUgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
ZW5hYmxlZCA9IFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBR
QnJ1c2ggKmZpbGwgPSAwICkgPSAwOwogICAgdmlydHVhbCBRUmVjdCBjb21ib0J1dHRvblJlY3Qo
IGludCB4LCBpbnQgeSwKICAgICAgICAgICAgICAgICAgICBpbnQgdywgaW50IGgpID0gMDsKICAg
IHZpcnR1YWwgUVJlY3QgY29tYm9CdXR0b25Gb2N1c1JlY3QoIGludCB4LCBpbnQgeSwKICAgICAg
ICAgICAgICAgICAgICBpbnQgdywgaW50IGgpID0gMDsKCiAgICB2aXJ0dWFsIHZvaWQgZHJhd0Nv
bWJvQnV0dG9uTWFzayggUVBhaW50ZXIgKnAsIGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoKSA9
IDA7CgoKICAgIHZpcnR1YWwgdm9pZCBkcmF3UHVzaEJ1dHRvbiggUVB1c2hCdXR0b24qIGJ0biwg
UVBhaW50ZXIgKnApID0gMDsKCiAgICB2aXJ0dWFsIHZvaWQgZHJhd1B1c2hCdXR0b25MYWJlbCgg
UVB1c2hCdXR0b24qIGJ0biwgUVBhaW50ZXIgKnApID0gMDsKICAgIFFSZWN0IHB1c2hCdXR0b25D
b250ZW50c1JlY3QoIFFQdXNoQnV0dG9uKiBidG4gKTsKICAgIGludCBtZW51QnV0dG9uSW5kaWNh
dG9yV2lkdGgoIGludCBoICk7CiAgICB2aXJ0dWFsIHZvaWQgZ2V0QnV0dG9uU2hpZnQoIGludCAm
eCwgaW50ICZ5KSA9IDA7CgoKICAgIHZpcnR1YWwgaW50IGRlZmF1bHRGcmFtZVdpZHRoKCkgY29u
c3QgPSAwOwoKCiAgICB2aXJ0dWFsIHZvaWQgdGFiYmFyTWV0cmljcyggY29uc3QgUVRhYkJhcios
CiAgICAgICAgICAgICAgICAgICAgaW50JiwgaW50JiwgaW50JiApID0gMDsKICAgIHZpcnR1YWwg
dm9pZCBkcmF3VGFiKCBRUGFpbnRlciosIGNvbnN0IFFUYWJCYXIqLCBRVGFiKiwgYm9vbCBzZWxl
Y3RlZCApID0gMDsKICAgIHZpcnR1YWwgdm9pZCBkcmF3VGFiTWFzayggUVBhaW50ZXIqLCBjb25z
dCBRVGFiQmFyKiwgUVRhYiosIGJvb2wgc2VsZWN0ZWQgKSA9IDA7CgoKICAgIGVudW0gU2Nyb2xs
Q29udHJvbCB7IEFkZExpbmUgPSAweDEgLCBTdWJMaW5lID0gMHgyICwgQWRkUGFnZSA9IDB4NCwK
ICAgICAgICAgICAgICAgICAgICAgICAgIFN1YlBhZ2UgPSAweDggLCBGaXJzdCA9IDB4MTAsIExh
c3QgPSAweDIwLAogICAgICAgICAgICAgICAgICAgICAgICAgU2xpZGVyID0gMHg0MCwgTm9TY3Jv
bGwgPSAweDgwIH07CgogICAgdmlydHVhbCB2b2lkIHNjcm9sbEJhck1ldHJpY3MoIGNvbnN0IFFT
Y3JvbGxCYXIqLAogICAgICAgICAgICAgICAgICAgIGludCYsIGludCYsIGludCYsIGludCYpID0g
MDsKICAgIHZpcnR1YWwgdm9pZCBkcmF3U2Nyb2xsQmFyQ29udHJvbHMoIFFQYWludGVyKiwgY29u
c3QgUVNjcm9sbEJhciosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgc2xpZGVyU3RhcnQsIHVpbnQgY29udHJvbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50IGFjdGl2ZUNvbnRyb2wgKSA9IDA7CiAgICB2aXJ0dWFsIFNjcm9s
bENvbnRyb2wgc2Nyb2xsQmFyUG9pbnRPdmVyKCBjb25zdCBRU2Nyb2xsQmFyKiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzbGlkZXJTdGFydCwgY29uc3QgUVBv
aW50JiApID0gMDsKCgogICAgdmlydHVhbCBpbnQgc2xpZGVyTGVuZ3RoKCkgY29uc3QgPSAwOwog
ICAgdmlydHVhbCB2b2lkIGRyYXdTbGlkZXIoIFFQYWludGVyICpwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFFDb2xvckdyb3VwICZnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE9yaWVudGF0aW9uLCBib29sIHRpY2tBYm92ZSwgYm9vbCB0aWNrQmVsb3cpID0gMDsK
CiAgICB2aXJ0dWFsIHZvaWQgZHJhd1NsaWRlck1hc2soIFFQYWludGVyICpwLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCwgaW50IHksIGludCB3LCBpbnQgaCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JpZW50YXRpb24sIGJvb2wgdGlja0Fib3ZlLCBi
b29sIHRpY2tCZWxvdykgPSAwOwogICAgdmlydHVhbCB2b2lkIGRyYXdTbGlkZXJHcm9vdmUoIFFQ
YWludGVyICpwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4LCBpbnQg
eSwgaW50IHcsIGludCBoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFFDb2xvckdyb3VwJiBnLCBRQ09PUkQgYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBPcmllbnRhdGlvbiApID0gMDsKICAgIHZpcnR1YWwgdm9pZCBkcmF3U2xpZGVyR3Jvb3Zl
TWFzayggUVBhaW50ZXIgKnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBRQ09PUkQgYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgT3JpZW50YXRpb24gKSA9IDA7CiAgICB2aXJ0dWFsIGludCBtYXhpbXVtU2xpZGVyRHJhZ0Rp
c3RhbmNlKCkgY29uc3QgPSAwOwoKICAgIHZpcnR1YWwgaW50IHNwbGl0dGVyV2lkdGgoKSBjb25z
dCA9IDA7CiAgICB2aXJ0dWFsIHZvaWQgZHJhd1NwbGl0dGVyKCBRUGFpbnRlciAqcCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCwgaW50IHksIGludCB3LCBpbnQgaCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRQ29sb3JHcm91cCAmZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBPcmllbnRhdGlvbikgPSAwOwoKICAgIHZpcnR1YWwgdm9pZCBkcmF3
Q2hlY2tNYXJrKCBRUGFpbnRlciAqcCwgaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUUNvbG9yR3JvdXAgJmcsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhY3QsIGJvb2wgZGlzICkgPSAwOwogICAgdmly
dHVhbCB2b2lkIHBvbGlzaFBvcHVwTWVudSggUVBvcHVwTWVudSogKSA9IDA7CgogICAgdmlydHVh
bCBpbnQgZXh0cmFQb3B1cE1lbnVJdGVtV2lkdGgoIGJvb2wgY2hlY2thYmxlLCBpbnQgbWF4cG13
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNZW51SXRlbSogbWksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUUZvbnRNZXRyaWNzJiBmbSApID0gMDsKICAg
IHZpcnR1YWwgaW50IHBvcHVwU3VibWVudUluZGljYXRvcldpZHRoKAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFFGb250TWV0cmljcyYgZm0gKSA9IDA7CiAgICB2aXJ0dWFs
IGludCBwb3B1cE1lbnVJdGVtSGVpZ2h0KCBib29sIGNoZWNrYWJsZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBRTWVudUl0ZW0qIG1pLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFFGb250TWV0cmljcyYgZm0gKSA9IDA7CiAgICB2aXJ0dWFsIHZvaWQgZHJh
d1BvcHVwTWVudUl0ZW0oIFFQYWludGVyKiBwLCBib29sIGNoZWNrYWJsZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1heHBtdywgaW50IHRhYiwgUU1lbnVJdGVtKiBt
aSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUVBhbGV0dGUmIHBh
bCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhY3QsIGJvb2wgZW5h
YmxlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHgsIGludCB5LCBp
bnQgdywgaW50IGgpID0gMDsKICAgIHZvaWQgZHJhd01lbnVCYXJJdGVtKCBRUGFpbnRlciogcCwg
aW50IHgsIGludCB5LCBpbnQgdywgaW50IGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFFNZW51SXRlbSogbWksIFFDb2xvckdyb3VwJiBnLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGVuYWJsZWQsIGJvb2wgYWN0aXZlICk7CgoKICAgIFFTaXpl
IHNjcm9sbEJhckV4dGVudCgpOwogICAgaW50IGJ1dHRvbkRlZmF1bHRJbmRpY2F0b3JXaWR0aCgp
IGNvbnN0OwogICAgaW50IGJ1dHRvbk1hcmdpbigpIGNvbnN0OwogICAgaW50IHRvb2xCYXJIYW5k
bGVFeHRlbnQoKSBjb25zdDsKICAgIGludCB0b29sQmFySGFuZGxlRXh0ZW5kKCkgY29uc3Q7CiAg
ICBpbnQgc2xpZGVyVGhpY2tuZXNzKCkgY29uc3QgOwogICAgdm9pZCBkcmF3VG9vbEJhckhhbmRs
ZSggUVBhaW50ZXIgKnAsIGNvbnN0IFFSZWN0ICZyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUXQ6Ok9yaWVudGF0aW9uIG9yaWVudGF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBoaWdobGlnaHQsIGNvbnN0IFFDb2xvckdyb3VwICZjZywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgZHJhd0JvcmRlciA9IEZBTFNFICk7Cgpwcm90ZWN0ZWQ6CiAgICB2
b2lkIHNldFNjcm9sbEJhckV4dGVudCggaW50IHcsIGludCBoPS0xICk7CiAgICB2b2lkIHNldEJ1
dHRvbkRlZmF1bHRJbmRpY2F0b3JXaWR0aCggaW50IHcgKTsKICAgIHZvaWQgc2V0QnV0dG9uTWFy
Z2luKCBpbnQgdyApOwogICAgdm9pZCBzZXRTbGlkZXJUaGlja25lc3MoaW50IHQpOwoKCnByaXZh
dGU6CgogICAgUVN0eWxlKCBjb25zdCBRU3R5bGUgJiApOwogICAgUVN0eWxlJiBvcGVyYXRvcj0o
IGNvbnN0IFFTdHlsZSAmICk7Cgp9OwojIDUxICJrZXJuZWwvcXdpZGdldC5oIiAyCiMgMSAia2Vy
bmVsL3FzaXplcG9saWN5LmgiIDEKIyA0NSAia2VybmVsL3FzaXplcG9saWN5LmgiCmNsYXNzIFFT
aXplUG9saWN5CnsKcHJpdmF0ZToKICAgIGVudW0geyBIU2l6ZSA9IDYsIEhNYXNrID0gMHgzZiwg
Vk1hc2sgPSBITWFzayA8PCBIU2l6ZSwKICAgICAgICAgICBNYXlHcm93ID0gMSwgRXhwTWFzayA9
IDIsIE1heVNocmluayA9IDQgfTsKcHVibGljOgogICAgZW51bSBTaXplVHlwZSB7IEZpeGVkID0g
MCwKICAgICAgICAgICAgICAgICAgICBNaW5pbXVtID0gTWF5R3JvdywKICAgICAgICAgICAgICAg
ICAgICBNYXhpbXVtID0gTWF5U2hyaW5rLAogICAgICAgICAgICAgICAgICAgIFByZWZlcnJlZCA9
IE1heUdyb3d8TWF5U2hyaW5rICwKICAgICAgICAgICAgICAgICAgICBNaW5pbXVtRXhwYW5kaW5n
ID0gTWluaW11bXxFeHBNYXNrLAogICAgICAgICAgICAgICAgICAgIEV4cGFuZGluZyA9IE1pbmlt
dW1FeHBhbmRpbmd8TWF5U2hyaW5rIH07CgogICAgZW51bSBFeHBhbmREYXRhIHsgTm9EaXJlY3Rp
b24gPSAwLAogICAgICAgICAgICAgICAgICAgICAgSG9yaXpvbnRhbCA9IDEsCiAgICAgICAgICAg
ICAgICAgICAgICBWZXJ0aWNhbCA9IDIsCiAgICAgICAgICAgICAgICAgICAgICBCb3RoRGlyZWN0
aW9ucyA9IEhvcml6b250YWwgfCBWZXJ0aWNhbCB9OwoKICAgIFFTaXplUG9saWN5KCkgeyBkYXRh
ID0gMDsgfQoKICAgIFFTaXplUG9saWN5KCBTaXplVHlwZSBob3IsIFNpemVUeXBlIHZlciwgYm9v
bCBoZncgPSBGQUxTRSApOwoKICAgIFNpemVUeXBlIGhvckRhdGEoKSBjb25zdCB7IHJldHVybiAo
U2l6ZVR5cGUpKCBkYXRhICYgSE1hc2sgKTsgfQogICAgU2l6ZVR5cGUgdmVyRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIChTaXplVHlwZSkoKCBkYXRhICYgVk1hc2sgKSA+PiBIU2l6ZSk7IH0KCiAgICBi
b29sIG1heVNocmlua0hvcml6b250YWxseSgpIGNvbnN0IHsgcmV0dXJuIGhvckRhdGEoKSAmIE1h
eVNocmluazsgfQogICAgYm9vbCBtYXlTaHJpbmtWZXJ0aWNhbGx5KCkgY29uc3QgeyByZXR1cm4g
dmVyRGF0YSgpICYgTWF5U2hyaW5rOyB9CiAgICBib29sIG1heUdyb3dIb3Jpem9udGFsbHkoKSBj
b25zdCB7IHJldHVybiBob3JEYXRhKCkgJiBNYXlHcm93OyB9CiAgICBib29sIG1heUdyb3dWZXJ0
aWNhbGx5KCkgY29uc3QgeyByZXR1cm4gdmVyRGF0YSgpICYgTWF5R3JvdzsgfQoKICAgIEV4cGFu
ZERhdGEgZXhwYW5kaW5nKCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gKEV4cGFuZERhdGEp
KCAoaW50KSh2ZXJEYXRhKCkmRXhwTWFzayA/IFZlcnRpY2FsIDogMCkrCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGludCkoaG9yRGF0YSgpJkV4cE1hc2sgPyBIb3Jpem9udGFsIDogMCkg
KTsKICAgIH0KCiAgICB2b2lkIHNldEhvckRhdGEoIFNpemVUeXBlIGQgKSB7IGRhdGEgPSAoZGF0
YSAmIH5ITWFzaykgfCBkOyB9CiAgICB2b2lkIHNldFZlckRhdGEoIFNpemVUeXBlIGQgKSB7IGRh
dGEgPSAoZGF0YSAmIH4oSE1hc2s8PEhTaXplKSkgfAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGQ8PEhTaXplKTsgfQoKICAgIHZvaWQgc2V0SGVpZ2h0Rm9yV2lk
dGgoIGJvb2wgYiApIHsgZGF0YSA9IGIgPyAoIGRhdGEgfCAoIDEgPDwgMipIU2l6ZSApICkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKCBkYXRhICYgfigg
MSA8PCAyKkhTaXplICkgKTsgfQogICAgYm9vbCBoYXNIZWlnaHRGb3JXaWR0aCgpIGNvbnN0IHsg
cmV0dXJuIGRhdGEgJiAoIDEgPDwgMipIU2l6ZSApOyB9CgogICAgYm9vbCBvcGVyYXRvcj09KCBj
b25zdCBRU2l6ZVBvbGljeSYgcyApIGNvbnN0IHsgcmV0dXJuIGRhdGEgPT0gcy5kYXRhOyB9CiAg
ICBib29sIG9wZXJhdG9yIT0oIGNvbnN0IFFTaXplUG9saWN5JiBzICkgY29uc3QgeyByZXR1cm4g
ZGF0YSAhPSBzLmRhdGE7IH0KCnByaXZhdGU6CiAgICBRU2l6ZVBvbGljeSggaW50IGkgKTogZGF0
YSggaSApIHt9CgogICAgUV9VSU5UMTYgZGF0YTsKfTsKCgppbmxpbmUgUVNpemVQb2xpY3k6OlFT
aXplUG9saWN5KCBTaXplVHlwZSBob3IsIFNpemVUeXBlIHZlciwgYm9vbCBoZncgKQogICAgICAg
IDogZGF0YSggaG9yIHwgKHZlcjw8SFNpemUpIHwgKGhmdyA/ICgxPDwyKkhTaXplKSA6IDApICkg
e30KIyA1MiAia2VybmVsL3F3aWRnZXQuaCIgMgoKCmNsYXNzIFFMYXlvdXQ7CnN0cnVjdCBRV0V4
dHJhOwpzdHJ1Y3QgUVRMV0V4dHJhOwpjbGFzcyBRRm9jdXNEYXRhOwpjbGFzcyBRU3R5bGU7CmNs
YXNzIFFXU1JlZ2lvbk1hbmFnZXI7CgpjbGFzcyBRV2lkZ2V0IDogcHVibGljIFFPYmplY3QsIHB1
YmxpYyBRUGFpbnREZXZpY2UKewogICAgcHVibGljOiBRTWV0YU9iamVjdCAqbWV0YU9iamVjdCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY01ldGFPYmplY3QoKTsgfSBjb25zdCBjaGFyICpjbGFzc05h
bWUoKSBjb25zdDsgc3RhdGljIFFNZXRhT2JqZWN0KiBzdGF0aWNNZXRhT2JqZWN0KCk7IHN0YXRp
YyBRU3RyaW5nIHRyKGNvbnN0IGNoYXIqKTsgc3RhdGljIFFTdHJpbmcgdHIoY29uc3QgY2hhcios
IGNvbnN0IGNoYXIqKTsgcHJvdGVjdGVkOiB2b2lkIGluaXRNZXRhT2JqZWN0KCk7IHByaXZhdGU6
IHN0YXRpYyBRTWV0YU9iamVjdCAqbWV0YU9iajsKICAgCiAgIAogICAKICAgCiAgIAogICAKICAg
CiAgIAogICAKICAgCiAgIAogICAKICAgCiAgIAogICAKICAgCiAgIAogICAKICAgCiAgIAogICAK
ICAgCiAgIAogICAKICAgCiAgIAogICAKICAgCiAgIAogICAKICAgCiAgIAogICAKICAgCiAgIAog
ICAKCiAgIAogICAKCiAgIAogICAKICAgCiAgIAogICAKICAgCiAgIAogICAKICAgCiAgIAogICAK
ICAgCiAgIAogICAKICAgCiAgIAogICAKICAgCiAgIAogICAKCnB1YmxpYzoKICAgIFFXaWRnZXQo
IFFXaWRnZXQgKnBhcmVudD0wLCBjb25zdCBjaGFyICpuYW1lPTAsIFdGbGFncyBmPTAgKTsKICAg
IH5RV2lkZ2V0KCk7CgogICAgV0lkIHdpbklkKCkgY29uc3Q7CiAgICB2b2lkIHNldE5hbWUoIGNv
bnN0IGNoYXIgKm5hbWUgKTsKCgoKICAgIFFTdHlsZSAmc3R5bGUoKSBjb25zdDsKICAgIHZvaWQg
c2V0U3R5bGUoIFFTdHlsZSAqICk7CgoKCiAgICBib29sIGlzVG9wTGV2ZWwoKSBjb25zdDsKICAg
IGJvb2wgaXNNb2RhbCgpIGNvbnN0OwogICAgYm9vbCBpc1BvcHVwKCkgY29uc3Q7CiAgICBib29s
IGlzRGVza3RvcCgpIGNvbnN0OwoKICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3Q7CiAgICBib29s
IGlzRW5hYmxlZFRvKFFXaWRnZXQqKSBjb25zdDsKICAgIGJvb2wgaXNFbmFibGVkVG9UTFcoKSBj
b25zdDsKCnB1YmxpYyA6CiAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZCggYm9vbCApOwogICAg
dm9pZCBzZXREaXNhYmxlZCggYm9vbCApOwoKCgpwdWJsaWM6CiAgICBRUmVjdCBmcmFtZUdlb21l
dHJ5KCkgY29uc3Q7CiAgICBjb25zdCBRUmVjdCAmZ2VvbWV0cnkoKSBjb25zdDsKICAgIGludCB4
KCkgY29uc3Q7CiAgICBpbnQgeSgpIGNvbnN0OwogICAgUVBvaW50IHBvcygpIGNvbnN0OwogICAg
UVNpemUgZnJhbWVTaXplKCkgY29uc3Q7CiAgICBRU2l6ZSBzaXplKCkgY29uc3Q7CiAgICBpbnQg
d2lkdGgoKSBjb25zdDsKICAgIGludCBoZWlnaHQoKSBjb25zdDsKICAgIFFSZWN0IHJlY3QoKSBj
b25zdDsKICAgIFFSZWN0IGNoaWxkcmVuUmVjdCgpIGNvbnN0OwogICAgUVJlZ2lvbiBjaGlsZHJl
blJlZ2lvbigpIGNvbnN0OwoKICAgIFFTaXplIG1pbmltdW1TaXplKCkgY29uc3Q7CiAgICBRU2l6
ZSBtYXhpbXVtU2l6ZSgpIGNvbnN0OwogICAgaW50IG1pbmltdW1XaWR0aCgpIGNvbnN0OwogICAg
aW50IG1pbmltdW1IZWlnaHQoKSBjb25zdDsKICAgIGludCBtYXhpbXVtV2lkdGgoKSBjb25zdDsK
ICAgIGludCBtYXhpbXVtSGVpZ2h0KCkgY29uc3Q7CiAgICB2b2lkIHNldE1pbmltdW1TaXplKCBj
b25zdCBRU2l6ZSAmICk7CiAgICB2aXJ0dWFsIHZvaWQgc2V0TWluaW11bVNpemUoIGludCBtaW53
LCBpbnQgbWluaCApOwogICAgdm9pZCBzZXRNYXhpbXVtU2l6ZSggY29uc3QgUVNpemUgJiApOwog
ICAgdmlydHVhbCB2b2lkIHNldE1heGltdW1TaXplKCBpbnQgbWF4dywgaW50IG1heGggKTsKICAg
IHZvaWQgc2V0TWluaW11bVdpZHRoKCBpbnQgbWludyApOwogICAgdm9pZCBzZXRNaW5pbXVtSGVp
Z2h0KCBpbnQgbWluaCApOwogICAgdm9pZCBzZXRNYXhpbXVtV2lkdGgoIGludCBtYXh3ICk7CiAg
ICB2b2lkIHNldE1heGltdW1IZWlnaHQoIGludCBtYXhoICk7CgogICAgUVNpemUgc2l6ZUluY3Jl
bWVudCgpIGNvbnN0OwogICAgdm9pZCBzZXRTaXplSW5jcmVtZW50KCBjb25zdCBRU2l6ZSAmICk7
CiAgICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZUluY3JlbWVudCggaW50IHcsIGludCBoICk7CiAgICBR
U2l6ZSBiYXNlU2l6ZSgpIGNvbnN0OwogICAgdm9pZCBzZXRCYXNlU2l6ZSggY29uc3QgUVNpemUg
JiApOwogICAgdm9pZCBzZXRCYXNlU2l6ZSggaW50IGJhc2V3LCBpbnQgYmFzZWggKTsKCiAgICB2
b2lkIHNldEZpeGVkU2l6ZSggY29uc3QgUVNpemUgJiApOwogICAgdm9pZCBzZXRGaXhlZFNpemUo
IGludCB3LCBpbnQgaCApOwogICAgdm9pZCBzZXRGaXhlZFdpZHRoKCBpbnQgdyApOwogICAgdm9p
ZCBzZXRGaXhlZEhlaWdodCggaW50IGggKTsKCgoKICAgIFFQb2ludCBtYXBUb0dsb2JhbCggY29u
c3QgUVBvaW50ICYgKSBjb25zdDsKICAgIFFQb2ludCBtYXBGcm9tR2xvYmFsKCBjb25zdCBRUG9p
bnQgJiApIGNvbnN0OwogICAgUVBvaW50IG1hcFRvUGFyZW50KCBjb25zdCBRUG9pbnQgJiApIGNv
bnN0OwogICAgUVBvaW50IG1hcEZyb21QYXJlbnQoIGNvbnN0IFFQb2ludCAmICkgY29uc3Q7CiAg
ICBRUG9pbnQgbWFwVG8oIFFXaWRnZXQgKiwgY29uc3QgUVBvaW50ICYgKSBjb25zdDsKICAgIFFQ
b2ludCBtYXBGcm9tKCBRV2lkZ2V0ICosIGNvbnN0IFFQb2ludCAmICkgY29uc3Q7CgogICAgUVdp
ZGdldCAqdG9wTGV2ZWxXaWRnZXQoKSBjb25zdDsKCgoKICAgIGVudW0gQmFja2dyb3VuZE1vZGUg
eyBGaXhlZENvbG9yLCBGaXhlZFBpeG1hcCwgTm9CYWNrZ3JvdW5kLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIFBhbGV0dGVGb3JlZ3JvdW5kLCBQYWxldHRlQnV0dG9uLCBQYWxldHRlTGlnaHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgUGFsZXR0ZU1pZGxpZ2h0LCBQYWxldHRlRGFyaywg
UGFsZXR0ZU1pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICBQYWxldHRlVGV4dCwgUGFsZXR0
ZUJyaWdodFRleHQsIFBhbGV0dGVCYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgIFBhbGV0
dGVCYWNrZ3JvdW5kLCBQYWxldHRlU2hhZG93LCBQYWxldHRlSGlnaGxpZ2h0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgIFBhbGV0dGVIaWdobGlnaHRlZFRleHQsIFBhbGV0dGVCdXR0b25UZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgIFgxMVBhcmVudFJlbGF0aXZlIH07CgogICAgQmFj
a2dyb3VuZE1vZGUgYmFja2dyb3VuZE1vZGUoKSBjb25zdDsKICAgIHZpcnR1YWwgdm9pZCBzZXRC
YWNrZ3JvdW5kTW9kZSggQmFja2dyb3VuZE1vZGUgKTsKCiAgICBjb25zdCBRQ29sb3IgJiBiYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdDsKICAgIGNvbnN0IFFDb2xvciAmIGZvcmVncm91bmRDb2xvcigp
IGNvbnN0OwogICAgdmlydHVhbCB2b2lkIHNldEJhY2tncm91bmRDb2xvciggY29uc3QgUUNvbG9y
ICYgKTsKCiAgICBjb25zdCBRUGl4bWFwICogYmFja2dyb3VuZFBpeG1hcCgpIGNvbnN0OwogICAg
dmlydHVhbCB2b2lkIHNldEJhY2tncm91bmRQaXhtYXAoIGNvbnN0IFFQaXhtYXAgJiApOwoKCiAg
ICBjb25zdCBRQ29sb3JHcm91cCAmIGNvbG9yR3JvdXAoKSBjb25zdDsKICAgIGNvbnN0IFFQYWxl
dHRlICYgcGFsZXR0ZSgpIGNvbnN0OwogICAgYm9vbCBvd25QYWxldHRlKCkgY29uc3Q7CiAgICB2
aXJ0dWFsIHZvaWQgc2V0UGFsZXR0ZSggY29uc3QgUVBhbGV0dGUgJiApOwogICAgdm9pZCB1bnNl
dFBhbGV0dGUoKTsKCiAgICBRRm9udCBmb250KCkgY29uc3Q7CiAgICBib29sIG93bkZvbnQoKSBj
b25zdDsKICAgIHZpcnR1YWwgdm9pZCBzZXRGb250KCBjb25zdCBRRm9udCAmICk7CiAgICB2b2lk
IHVuc2V0Rm9udCgpOwogICAgUUZvbnRNZXRyaWNzIGZvbnRNZXRyaWNzKCkgY29uc3Q7CiAgICBR
Rm9udEluZm8gZm9udEluZm8oKSBjb25zdDsKCiAgICBlbnVtIFByb3BhZ2F0aW9uTW9kZSB7IE5v
Q2hpbGRyZW4sIEFsbENoaWxkcmVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICBTYW1lRm9u
dCwgU2FtZVBhbGV0dGUgPSBTYW1lRm9udCB9OwoKICAgIFByb3BhZ2F0aW9uTW9kZSBmb250UHJv
cGFnYXRpb24oKSBjb25zdDsKICAgIHZpcnR1YWwgdm9pZCBzZXRGb250UHJvcGFnYXRpb24oIFBy
b3BhZ2F0aW9uTW9kZSApOwoKICAgIFByb3BhZ2F0aW9uTW9kZSBwYWxldHRlUHJvcGFnYXRpb24o
KSBjb25zdDsKICAgIHZpcnR1YWwgdm9pZCBzZXRQYWxldHRlUHJvcGFnYXRpb24oIFByb3BhZ2F0
aW9uTW9kZSApOwoKICAgIGNvbnN0IFFDdXJzb3IgJmN1cnNvcigpIGNvbnN0OwogICAgYm9vbCBv
d25DdXJzb3IoKSBjb25zdDsKICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3IoIGNvbnN0IFFDdXJz
b3IgJiApOwogICAgdmlydHVhbCB2b2lkIHVuc2V0Q3Vyc29yKCk7CgogICAgUVN0cmluZyBjYXB0
aW9uKCkgY29uc3Q7CiAgICBjb25zdCBRUGl4bWFwICppY29uKCkgY29uc3Q7CiAgICBRU3RyaW5n
IGljb25UZXh0KCkgY29uc3Q7CiAgICBib29sIGhhc01vdXNlVHJhY2tpbmcoKSBjb25zdDsKCiAg
ICB2aXJ0dWFsIHZvaWQgc2V0TWFzayggY29uc3QgUUJpdG1hcCAmICk7CiAgICB2aXJ0dWFsIHZv
aWQgc2V0TWFzayggY29uc3QgUVJlZ2lvbiAmICk7CiAgICB2b2lkIGNsZWFyTWFzaygpOwoKcHVi
bGljIDoKICAgIHZpcnR1YWwgdm9pZCBzZXRDYXB0aW9uKCBjb25zdCBRU3RyaW5nICYpOwogICAg
dmlydHVhbCB2b2lkIHNldEljb24oIGNvbnN0IFFQaXhtYXAgJiApOwogICAgdmlydHVhbCB2b2lk
IHNldEljb25UZXh0KCBjb25zdCBRU3RyaW5nICYpOwogICAgdmlydHVhbCB2b2lkIHNldE1vdXNl
VHJhY2tpbmcoIGJvb2wgZW5hYmxlICk7CgoKCiAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXMoKTsK
ICAgIHZvaWQgY2xlYXJGb2N1cygpOwoKcHVibGljOgogICAgZW51bSBGb2N1c1BvbGljeSB7CiAg
ICAgICAgTm9Gb2N1cyA9IDAsCiAgICAgICAgVGFiRm9jdXMgPSAweDEsCiAgICAgICAgQ2xpY2tG
b2N1cyA9IDB4MiwKICAgICAgICBTdHJvbmdGb2N1cyA9IDB4MywKICAgICAgICBXaGVlbEZvY3Vz
ID0gMHg3CiAgICB9OwoKICAgIGJvb2wgaXNBY3RpdmVXaW5kb3coKSBjb25zdDsKICAgIHZpcnR1
YWwgdm9pZCBzZXRBY3RpdmVXaW5kb3coKTsKICAgIGJvb2wgaXNGb2N1c0VuYWJsZWQoKSBjb25z
dDsKCiAgICBGb2N1c1BvbGljeSBmb2N1c1BvbGljeSgpIGNvbnN0OwogICAgdmlydHVhbCB2b2lk
IHNldEZvY3VzUG9saWN5KCBGb2N1c1BvbGljeSApOwogICAgYm9vbCBoYXNGb2N1cygpIGNvbnN0
OwogICAgc3RhdGljIHZvaWQgc2V0VGFiT3JkZXIoIFFXaWRnZXQgKiwgUVdpZGdldCAqICk7CiAg
ICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXNQcm94eSggUVdpZGdldCAqICk7CiAgICBRV2lkZ2V0ICog
Zm9jdXNQcm94eSgpIGNvbnN0OwoKCgogICAgdm9pZCBncmFiTW91c2UoKTsKCiAgICB2b2lkIGdy
YWJNb3VzZSggY29uc3QgUUN1cnNvciAmICk7CgogICAgdm9pZCByZWxlYXNlTW91c2UoKTsKICAg
IHZvaWQgZ3JhYktleWJvYXJkKCk7CiAgICB2b2lkIHJlbGVhc2VLZXlib2FyZCgpOwogICAgc3Rh
dGljIFFXaWRnZXQgKiBtb3VzZUdyYWJiZXIoKTsKICAgIHN0YXRpYyBRV2lkZ2V0ICoga2V5Ym9h
cmRHcmFiYmVyKCk7CgoKCiAgICBib29sIGlzVXBkYXRlc0VuYWJsZWQoKSBjb25zdDsKCgoKCnB1
YmxpYyA6CiAgICB2aXJ0dWFsIHZvaWQgc2V0VXBkYXRlc0VuYWJsZWQoIGJvb2wgZW5hYmxlICk7
CiAgICB2b2lkIHVwZGF0ZSgpOwogICAgdm9pZCB1cGRhdGUoIGludCB4LCBpbnQgeSwgaW50IHcs
IGludCBoICk7CiAgICB2b2lkIHVwZGF0ZSggY29uc3QgUVJlY3QmICk7CiAgICB2b2lkIHJlcGFp
bnQoKTsKICAgIHZvaWQgcmVwYWludCggYm9vbCBlcmFzZSApOwogICAgdm9pZCByZXBhaW50KCBp
bnQgeCwgaW50IHksIGludCB3LCBpbnQgaCwgYm9vbCBlcmFzZT1UUlVFICk7CiAgICB2b2lkIHJl
cGFpbnQoIGNvbnN0IFFSZWN0ICYsIGJvb2wgZXJhc2U9VFJVRSApOwogICAgdm9pZCByZXBhaW50
KCBjb25zdCBRUmVnaW9uICYsIGJvb2wgZXJhc2U9VFJVRSApOwoKCgogICAgdmlydHVhbCB2b2lk
IHNob3coKTsKICAgIHZpcnR1YWwgdm9pZCBoaWRlKCk7CgogICAgdm9pZCBpY29uaWZ5KCkgeyBz
aG93TWluaW1pemVkKCk7IH0KCiAgICB2aXJ0dWFsIHZvaWQgc2hvd01pbmltaXplZCgpOwogICAg
dmlydHVhbCB2b2lkIHNob3dNYXhpbWl6ZWQoKTsKICAgIHZvaWQgc2hvd0Z1bGxTY3JlZW4oKTsK
ICAgIHZpcnR1YWwgdm9pZCBzaG93Tm9ybWFsKCk7CiAgICB2aXJ0dWFsIHZvaWQgcG9saXNoKCk7
CiAgICB2b2lkIGNvbnN0UG9saXNoKCkgY29uc3Q7CiAgICBib29sIGNsb3NlKCk7CgogICAgdm9p
ZCByYWlzZSgpOwogICAgdm9pZCBsb3dlcigpOwogICAgdm9pZCBzdGFja1VuZGVyKCBRV2lkZ2V0
KiApOwogICAgdmlydHVhbCB2b2lkIG1vdmUoIGludCB4LCBpbnQgeSApOwogICAgdm9pZCBtb3Zl
KCBjb25zdCBRUG9pbnQgJiApOwogICAgdmlydHVhbCB2b2lkIHJlc2l6ZSggaW50IHcsIGludCBo
ICk7CiAgICB2b2lkIHJlc2l6ZSggY29uc3QgUVNpemUgJiApOwogICAgdmlydHVhbCB2b2lkIHNl
dEdlb21ldHJ5KCBpbnQgeCwgaW50IHksIGludCB3LCBpbnQgaCApOwogICAgdmlydHVhbCB2b2lk
IHNldEdlb21ldHJ5KCBjb25zdCBRUmVjdCAmICk7CgpwdWJsaWM6CiAgICB2aXJ0dWFsIGJvb2wg
Y2xvc2UoIGJvb2wgYWxzb0RlbGV0ZSApOwogICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdDsKICAg
IGJvb2wgaXNWaXNpYmxlVG8oUVdpZGdldCopIGNvbnN0OwogICAgYm9vbCBpc1Zpc2libGVUb1RM
VygpIGNvbnN0OwogICAgUVJlY3QgdmlzaWJsZVJlY3QoKSBjb25zdDsKICAgIGJvb2wgaXNIaWRk
ZW4oKSBjb25zdDsKICAgIGJvb2wgaXNNaW5pbWl6ZWQoKSBjb25zdDsKICAgIGJvb2wgaXNNYXhp
bWl6ZWQoKSBjb25zdDsKCiAgICB2aXJ0dWFsIFFTaXplIHNpemVIaW50KCkgY29uc3Q7CiAgICB2
aXJ0dWFsIFFTaXplIG1pbmltdW1TaXplSGludCgpIGNvbnN0OwogICAgdmlydHVhbCBRU2l6ZVBv
bGljeSBzaXplUG9saWN5KCkgY29uc3Q7CiAgICB2b2lkIHNldFNpemVQb2xpY3koIFFTaXplUG9s
aWN5ICk7CiAgICB2aXJ0dWFsIGludCBoZWlnaHRGb3JXaWR0aChpbnQpIGNvbnN0OwoKICAgIHZp
cnR1YWwgdm9pZCBhZGp1c3RTaXplKCk7CgogICAgUUxheW91dCAqIGxheW91dCgpIGNvbnN0IHsg
cmV0dXJuIGxheV9vdXQ7IH0KCiAgICB2b2lkIHVwZGF0ZUdlb21ldHJ5KCk7CiAgICB2aXJ0dWFs
IHZvaWQgcmVwYXJlbnQoIFFXaWRnZXQgKnBhcmVudCwgV0ZsYWdzLCBjb25zdCBRUG9pbnQgJiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2hvd0l0PUZBTFNFICk7CiAg
ICB2b2lkIHJlcGFyZW50KCBRV2lkZ2V0ICpwYXJlbnQsIGNvbnN0IFFQb2ludCAmLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzaG93SXQ9RkFMU0UgKTsKCiAgICB2b2lk
IHJlY3JlYXRlKCBRV2lkZ2V0ICpwYXJlbnQsIFdGbGFncyBmLCBjb25zdCBRUG9pbnQgJiBwLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzaG93SXQ9RkFMU0UgKQogICAg
eyByZXBhcmVudChwYXJlbnQsZixwLHNob3dJdCk7IH0KCgogICAgdm9pZCBlcmFzZSgpOwogICAg
dm9pZCBlcmFzZSggaW50IHgsIGludCB5LCBpbnQgdywgaW50IGggKTsKICAgIHZvaWQgZXJhc2Uo
IGNvbnN0IFFSZWN0ICYgKTsKICAgIHZvaWQgZXJhc2UoIGNvbnN0IFFSZWdpb24gJiApOwogICAg
dm9pZCBzY3JvbGwoIGludCBkeCwgaW50IGR5ICk7CiAgICB2b2lkIHNjcm9sbCggaW50IGR4LCBp
bnQgZHksIGNvbnN0IFFSZWN0JiApOwoKICAgIHZvaWQgZHJhd1RleHQoIGludCB4LCBpbnQgeSwg
Y29uc3QgUVN0cmluZyAmKTsKICAgIHZvaWQgZHJhd1RleHQoIGNvbnN0IFFQb2ludCAmLCBjb25z
dCBRU3RyaW5nICYpOwoKCgogICAgUVdpZGdldCAqIGZvY3VzV2lkZ2V0KCkgY29uc3Q7CiAgICBR
UmVjdCBtaWNyb0ZvY3VzSGludCgpIGNvbnN0OwoKCgogICAgYm9vbCBhY2NlcHREcm9wcygpIGNv
bnN0OwogICAgdmlydHVhbCB2b2lkIHNldEFjY2VwdERyb3BzKCBib29sIG9uICk7CgoKCiAgICB2
aXJ0dWFsIHZvaWQgc2V0QXV0b01hc2soYm9vbCk7CiAgICBib29sIGF1dG9NYXNrKCkgY29uc3Q7
CgogICAgZW51bSBCYWNrZ3JvdW5kT3JpZ2luIHsgV2lkZ2V0T3JpZ2luLCBQYXJlbnRPcmlnaW4g
fTsKCiAgICB2b2lkIHNldEJhY2tncm91bmRPcmlnaW4oIEJhY2tncm91bmRPcmlnaW4gKTsKICAg
IEJhY2tncm91bmRPcmlnaW4gYmFja2dyb3VuZE9yaWdpbigpIGNvbnN0OwoKCgogICAgdmlydHVh
bCBib29sIGN1c3RvbVdoYXRzVGhpcygpIGNvbnN0OwoKICAgIFFXaWRnZXQgKiBwYXJlbnRXaWRn
ZXQoKSBjb25zdDsKICAgIGJvb2wgdGVzdFdTdGF0ZSggdWludCBuICkgY29uc3Q7CiAgICBib29s
IHRlc3RXRmxhZ3MoIFdGbGFncyBmICkgY29uc3Q7CiAgICBzdGF0aWMgUVdpZGdldCAqIGZpbmQo
IFdJZCApOwogICAgc3RhdGljIFFXaWRnZXRNYXBwZXIgKndtYXBwZXIoKTsKCgoKCgpwcm90ZWN0
ZWQ6CgogICAgYm9vbCBldmVudCggUUV2ZW50ICogKTsKICAgIHZpcnR1YWwgdm9pZCBtb3VzZVBy
ZXNzRXZlbnQoIFFNb3VzZUV2ZW50ICogKTsKICAgIHZpcnR1YWwgdm9pZCBtb3VzZVJlbGVhc2VF
dmVudCggUU1vdXNlRXZlbnQgKiApOwogICAgdmlydHVhbCB2b2lkIG1vdXNlRG91YmxlQ2xpY2tF
dmVudCggUU1vdXNlRXZlbnQgKiApOwogICAgdmlydHVhbCB2b2lkIG1vdXNlTW92ZUV2ZW50KCBR
TW91c2VFdmVudCAqICk7CiAgICB2aXJ0dWFsIHZvaWQgd2hlZWxFdmVudCggUVdoZWVsRXZlbnQg
KiApOwogICAgdmlydHVhbCB2b2lkIGtleVByZXNzRXZlbnQoIFFLZXlFdmVudCAqICk7CiAgICB2
aXJ0dWFsIHZvaWQga2V5UmVsZWFzZUV2ZW50KCBRS2V5RXZlbnQgKiApOwogICAgdmlydHVhbCB2
b2lkIGZvY3VzSW5FdmVudCggUUZvY3VzRXZlbnQgKiApOwogICAgdmlydHVhbCB2b2lkIGZvY3Vz
T3V0RXZlbnQoIFFGb2N1c0V2ZW50ICogKTsKICAgIHZpcnR1YWwgdm9pZCBlbnRlckV2ZW50KCBR
RXZlbnQgKiApOwogICAgdmlydHVhbCB2b2lkIGxlYXZlRXZlbnQoIFFFdmVudCAqICk7CiAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRFdmVudCggUVBhaW50RXZlbnQgKiApOwogICAgdmlydHVhbCB2b2lk
IG1vdmVFdmVudCggUU1vdmVFdmVudCAqICk7CiAgICB2aXJ0dWFsIHZvaWQgcmVzaXplRXZlbnQo
IFFSZXNpemVFdmVudCAqICk7CiAgICB2aXJ0dWFsIHZvaWQgY2xvc2VFdmVudCggUUNsb3NlRXZl
bnQgKiApOwoKCiAgICB2aXJ0dWFsIHZvaWQgZHJhZ0VudGVyRXZlbnQoIFFEcmFnRW50ZXJFdmVu
dCAqICk7CiAgICB2aXJ0dWFsIHZvaWQgZHJhZ01vdmVFdmVudCggUURyYWdNb3ZlRXZlbnQgKiAp
OwogICAgdmlydHVhbCB2b2lkIGRyYWdMZWF2ZUV2ZW50KCBRRHJhZ0xlYXZlRXZlbnQgKiApOwog
ICAgdmlydHVhbCB2b2lkIGRyb3BFdmVudCggUURyb3BFdmVudCAqICk7CgoKICAgIHZpcnR1YWwg
dm9pZCBzaG93RXZlbnQoIFFTaG93RXZlbnQgKiApOwogICAgdmlydHVhbCB2b2lkIGhpZGVFdmVu
dCggUUhpZGVFdmVudCAqICk7CiAgICB2aXJ0dWFsIHZvaWQgY3VzdG9tRXZlbnQoIFFDdXN0b21F
dmVudCAqICk7CiMgNDY0ICJrZXJuZWwvcXdpZGdldC5oIgogICAgdmlydHVhbCBib29sIHgxMUV2
ZW50KCBYRXZlbnQgKiApOwoKCgoKCgogICAgdmlydHVhbCB2b2lkIHVwZGF0ZU1hc2soKTsKCgoK
cHJvdGVjdGVkOgoKICAgIHZpcnR1YWwgdm9pZCBzdHlsZUNoYW5nZSggUVN0eWxlJiApOwoKICAg
IHZpcnR1YWwgdm9pZCBlbmFibGVkQ2hhbmdlKCBib29sICk7CiAgICB2aXJ0dWFsIHZvaWQgYmFj
a2dyb3VuZENvbG9yQ2hhbmdlKCBjb25zdCBRQ29sb3IgJiApOwogICAgdmlydHVhbCB2b2lkIGJh
Y2tncm91bmRQaXhtYXBDaGFuZ2UoIGNvbnN0IFFQaXhtYXAgJiApOwoKICAgIHZpcnR1YWwgdm9p
ZCBwYWxldHRlQ2hhbmdlKCBjb25zdCBRUGFsZXR0ZSAmICk7CgogICAgdmlydHVhbCB2b2lkIGZv
bnRDaGFuZ2UoIGNvbnN0IFFGb250ICYgKTsKCiAgICBpbnQgbWV0cmljKCBpbnQgKSBjb25zdDsK
CiAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlKCBXSWQgPSAwLCBib29sIGluaXRpYWxpemVXaW5kb3cg
PSBUUlVFLAogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZXN0cm95T2xkV2luZG93ID0g
VFJVRSApOwogICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koIGJvb2wgZGVzdHJveVdpbmRvdyA9IFRS
VUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZXN0cm95U3ViV2luZG93cyA9IFRS
VUUgKTsKICAgIHVpbnQgZ2V0V1N0YXRlKCkgY29uc3Q7CiAgICB2aXJ0dWFsIHZvaWQgc2V0V1N0
YXRlKCB1aW50ICk7CiAgICB2b2lkIGNsZWFyV1N0YXRlKCB1aW50IG4gKTsKICAgIFdGbGFncyBn
ZXRXRmxhZ3MoKSBjb25zdDsKICAgIHZpcnR1YWwgdm9pZCBzZXRXRmxhZ3MoIFdGbGFncyApOwog
ICAgdm9pZCBjbGVhcldGbGFncyggV0ZsYWdzIG4gKTsKCiAgICB2aXJ0dWFsIHZvaWQgc2V0RlJl
Y3QoIGNvbnN0IFFSZWN0ICYgKTsKICAgIHZpcnR1YWwgdm9pZCBzZXRDUmVjdCggY29uc3QgUVJl
Y3QgJiApOwoKICAgIHZpcnR1YWwgYm9vbCBmb2N1c05leHRQcmV2Q2hpbGQoIGJvb2wgbmV4dCAp
OwoKICAgIFFXRXh0cmEgKmV4dHJhRGF0YSgpOwogICAgUVRMV0V4dHJhICp0b3BEYXRhKCk7CiAg
ICBRRm9jdXNEYXRhICpmb2N1c0RhdGEoKTsKCiAgICB2aXJ0dWFsIHZvaWQgc2V0S2V5Q29tcHJl
c3Npb24oYm9vbCk7CiAgICB2aXJ0dWFsIHZvaWQgc2V0TWljcm9Gb2N1c0hpbnQoaW50IHgsIGlu
dCB5LCBpbnQgdywgaW50IGgsIGJvb2wgdGV4dD1UUlVFKTsKCnByaXZhdGUgOgogICAgdm9pZCBm
b2N1c1Byb3h5RGVzdHJveWVkKCk7Cgpwcml2YXRlOgogICAgdm9pZCBzZXRGb250U3lzKCk7Cgog
ICAgdm9pZCBzZXRMYXlvdXQoIFFMYXlvdXQgKmwgKTsKCiAgICB2b2lkIHNldFdpbklkKCBXSWQg
KTsKICAgIHZvaWQgc2hvd1dpbmRvdygpOwogICAgdm9pZCBoaWRlV2luZG93KCk7CiAgICB2b2lk
IHNlbmRTaG93RXZlbnRzVG9DaGlsZHJlbiggYm9vbCBzcG9udGFuZW91cyApOwogICAgdm9pZCBz
ZW5kSGlkZUV2ZW50c1RvQ2hpbGRyZW4oIGJvb2wgc3BvbnRhbmVvdXMgKTsKICAgIHZvaWQgY3Jl
YXRlVExFeHRyYSgpOwogICAgdm9pZCBjcmVhdGVFeHRyYSgpOwogICAgdm9pZCBkZWxldGVFeHRy
YSgpOwogICAgdm9pZCBjcmVhdGVTeXNFeHRyYSgpOwogICAgdm9pZCBkZWxldGVTeXNFeHRyYSgp
OwogICAgdm9pZCBjcmVhdGVUTFN5c0V4dHJhKCk7CiAgICB2b2lkIGRlbGV0ZVRMU3lzRXh0cmEo
KTsKICAgIHZvaWQgZGVhY3RpdmF0ZVdpZGdldENsZWFudXAoKTsKICAgIHZvaWQgaW50ZXJuYWxT
ZXRHZW9tZXRyeSggaW50LCBpbnQsIGludCwgaW50LCBib29sICk7CiAgICB2b2lkIHJlcGFyZW50
Rm9jdXNXaWRnZXRzKCBRV2lkZ2V0ICogKTsKICAgIFFGb2N1c0RhdGEgKmZvY3VzRGF0YSggYm9v
bCBjcmVhdGUgKTsKICAgIHZvaWQgc2V0QmFja2dyb3VuZEZyb21Nb2RlKCk7CiAgICB2b2lkIHNl
dEJhY2tncm91bmRDb2xvckRpcmVjdCggY29uc3QgUUNvbG9yICYgKTsKICAgIHZvaWQgc2V0QmFj
a2dyb3VuZFBpeG1hcERpcmVjdCggY29uc3QgUVBpeG1hcCAmICk7CiAgICB2b2lkIHNldEJhY2tn
cm91bmRNb2RlRGlyZWN0KCBCYWNrZ3JvdW5kTW9kZSApOwogICAgdm9pZCBzZXRCYWNrZ3JvdW5k
RW1wdHkoKTsKCiAgICB2b2lkIHNldEJhY2tncm91bmRYMTFSZWxhdGl2ZSgpOwogICAgdm9pZCBj
aGVja0NoaWxkcmVuRG5kKCk7CgoKICAgIFdJZCB3aW5pZDsKICAgIHVpbnQgd2lkZ2V0X3N0YXRl
OwogICAgdWludCB3aWRnZXRfZmxhZ3M7CiAgICB1aW50IHByb3BhZ2F0ZV9mb250IDogMjsKICAg
IHVpbnQgcHJvcGFnYXRlX3BhbGV0dGUgOiAyOwogICAgdWludCBmb2N1c19wb2xpY3kgOiA0Owog
ICAgdWludCBvd25fZm9udCA6MTsKICAgIHVpbnQgb3duX3BhbGV0dGUgOjE7CiAgICB1aW50IHNp
emVoaW50X2ZvcmNlZCA6MTsKICAgIHVpbnQgaXNfY2xvc2luZyA6MTsKICAgIHVpbnQgaW5fc2hv
dyA6IDE7CiAgICB1aW50IGluX3Nob3dfbWF4aW1pemVkIDogMTsKICAgIFFQb2ludCBmcG9zOwog
ICAgUVJlY3QgY3JlY3Q7CiAgICBRQ29sb3IgYmdfY29sOwoKICAgIFFQYWxldHRlIHBhbDsKCiAg
ICBRRm9udCBmbnQ7CgogICAgUUxheW91dCAqbGF5X291dDsKCiAgICBRV0V4dHJhICpleHRyYTsK
IyA1OTMgImtlcm5lbC9xd2lkZ2V0LmgiCiAgICBzdGF0aWMgdm9pZCBjcmVhdGVNYXBwZXIoKTsK
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lNYXBwZXIoKTsKICAgIHN0YXRpYyBRV2lkZ2V0TGlzdCAq
d0xpc3QoKTsKICAgIHN0YXRpYyBRV2lkZ2V0TGlzdCAqdGx3TGlzdCgpOwogICAgc3RhdGljIFFX
aWRnZXRNYXBwZXIgKm1hcHBlcjsKICAgIGZyaWVuZCBjbGFzcyBRQXBwbGljYXRpb247CiAgICBm
cmllbmQgY2xhc3MgUUJhc2VBcHBsaWNhdGlvbjsKICAgIGZyaWVuZCBjbGFzcyBRUGFpbnRlcjsK
ICAgIGZyaWVuZCBjbGFzcyBRRm9udE1ldHJpY3M7CiAgICBmcmllbmQgY2xhc3MgUUZvbnRJbmZv
OwogICAgZnJpZW5kIGNsYXNzIFFFVFdpZGdldDsKCiAgICBmcmllbmQgY2xhc3MgUUxheW91dDsK
CgoKcHJpdmF0ZToKCiAgICBRV2lkZ2V0KCBjb25zdCBRV2lkZ2V0ICYgKTsKICAgIFFXaWRnZXQg
Jm9wZXJhdG9yPSggY29uc3QgUVdpZGdldCAmICk7CgoKcHVibGljOgoKICAgIHZvaWQgc2V0UGFs
ZXR0ZSggY29uc3QgUVBhbGV0dGUgJiwgYm9vbCBpUmVhbGx5TWVhbkl0ICk7CgogICAgdm9pZCBz
ZXRGb250KCBjb25zdCBRRm9udCAmLCBib29sIGlSZWFsbHlNZWFuSXQgKTsKfTsKCgppbmxpbmUg
Ym9vbCBRV2lkZ2V0Ojp0ZXN0V1N0YXRlKCB1aW50IGYgKSBjb25zdAp7IHJldHVybiAod2lkZ2V0
X3N0YXRlICYgZikgIT0gMDsgfQoKaW5saW5lIGJvb2wgUVdpZGdldDo6dGVzdFdGbGFncyggV0Zs
YWdzIGYgKSBjb25zdAp7IHJldHVybiAod2lkZ2V0X2ZsYWdzICYgZikgIT0gMDsgfQoKCmlubGlu
ZSBXSWQgUVdpZGdldDo6d2luSWQoKSBjb25zdAp7IHJldHVybiB3aW5pZDsgfQoKaW5saW5lIGJv
b2wgUVdpZGdldDo6aXNUb3BMZXZlbCgpIGNvbnN0CnsgcmV0dXJuIHRlc3RXRmxhZ3MoV1R5cGVf
VG9wTGV2ZWwpOyB9CgppbmxpbmUgYm9vbCBRV2lkZ2V0Ojppc01vZGFsKCkgY29uc3QKeyByZXR1
cm4gdGVzdFdGbGFncyhXVHlwZV9Nb2RhbCk7IH0KCmlubGluZSBib29sIFFXaWRnZXQ6OmlzUG9w
dXAoKSBjb25zdAp7IHJldHVybiB0ZXN0V0ZsYWdzKFdUeXBlX1BvcHVwKTsgfQoKaW5saW5lIGJv
b2wgUVdpZGdldDo6aXNEZXNrdG9wKCkgY29uc3QKeyByZXR1cm4gdGVzdFdGbGFncyhXVHlwZV9E
ZXNrdG9wKTsgfQoKaW5saW5lIGJvb2wgUVdpZGdldDo6aXNFbmFibGVkKCkgY29uc3QKeyByZXR1
cm4gIXRlc3RXU3RhdGUoV1N0YXRlX0Rpc2FibGVkKTsgfQoKaW5saW5lIGNvbnN0IFFSZWN0ICZR
V2lkZ2V0OjpnZW9tZXRyeSgpIGNvbnN0CnsgcmV0dXJuIGNyZWN0OyB9CgppbmxpbmUgaW50IFFX
aWRnZXQ6OngoKSBjb25zdAp7IHJldHVybiBmcG9zLngoKTsgfQoKaW5saW5lIGludCBRV2lkZ2V0
Ojp5KCkgY29uc3QKeyByZXR1cm4gZnBvcy55KCk7IH0KCmlubGluZSBRUG9pbnQgUVdpZGdldDo6
cG9zKCkgY29uc3QKeyByZXR1cm4gZnBvczsgfQoKaW5saW5lIFFTaXplIFFXaWRnZXQ6OnNpemUo
KSBjb25zdAp7IHJldHVybiBjcmVjdC5zaXplKCk7IH0KCmlubGluZSBpbnQgUVdpZGdldDo6d2lk
dGgoKSBjb25zdAp7IHJldHVybiBjcmVjdC53aWR0aCgpOyB9CgppbmxpbmUgaW50IFFXaWRnZXQ6
OmhlaWdodCgpIGNvbnN0CnsgcmV0dXJuIGNyZWN0LmhlaWdodCgpOyB9CgppbmxpbmUgUVJlY3Qg
UVdpZGdldDo6cmVjdCgpIGNvbnN0CnsgcmV0dXJuIFFSZWN0KDAsMCxjcmVjdC53aWR0aCgpLGNy
ZWN0LmhlaWdodCgpKTsgfQoKaW5saW5lIGludCBRV2lkZ2V0OjptaW5pbXVtV2lkdGgoKSBjb25z
dAp7IHJldHVybiBtaW5pbXVtU2l6ZSgpLndpZHRoKCk7IH0KCmlubGluZSBpbnQgUVdpZGdldDo6
bWluaW11bUhlaWdodCgpIGNvbnN0CnsgcmV0dXJuIG1pbmltdW1TaXplKCkuaGVpZ2h0KCk7IH0K
CmlubGluZSBpbnQgUVdpZGdldDo6bWF4aW11bVdpZHRoKCkgY29uc3QKeyByZXR1cm4gbWF4aW11
bVNpemUoKS53aWR0aCgpOyB9CgppbmxpbmUgaW50IFFXaWRnZXQ6Om1heGltdW1IZWlnaHQoKSBj
b25zdAp7IHJldHVybiBtYXhpbXVtU2l6ZSgpLmhlaWdodCgpOyB9CgppbmxpbmUgdm9pZCBRV2lk
Z2V0OjpzZXRNaW5pbXVtU2l6ZSggY29uc3QgUVNpemUgJnMgKQp7IHNldE1pbmltdW1TaXplKHMu
d2lkdGgoKSxzLmhlaWdodCgpKTsgfQoKaW5saW5lIHZvaWQgUVdpZGdldDo6c2V0TWF4aW11bVNp
emUoIGNvbnN0IFFTaXplICZzICkKeyBzZXRNYXhpbXVtU2l6ZShzLndpZHRoKCkscy5oZWlnaHQo
KSk7IH0KCmlubGluZSB2b2lkIFFXaWRnZXQ6OnNldFNpemVJbmNyZW1lbnQoIGNvbnN0IFFTaXpl
ICZzICkKeyBzZXRTaXplSW5jcmVtZW50KHMud2lkdGgoKSxzLmhlaWdodCgpKTsgfQoKaW5saW5l
IHZvaWQgUVdpZGdldDo6c2V0QmFzZVNpemUoIGNvbnN0IFFTaXplICZzICkKeyBzZXRCYXNlU2l6
ZShzLndpZHRoKCkscy5oZWlnaHQoKSk7IH0KCmlubGluZSBjb25zdCBRQ29sb3IgJlFXaWRnZXQ6
OmJhY2tncm91bmRDb2xvcigpIGNvbnN0CnsgcmV0dXJuIGJnX2NvbDsgfQoKCmlubGluZSBjb25z
dCBRUGFsZXR0ZSAmUVdpZGdldDo6cGFsZXR0ZSgpIGNvbnN0CnsgcmV0dXJuIHBhbDsgfQoKCmlu
bGluZSBRRm9udCBRV2lkZ2V0Ojpmb250KCkgY29uc3QKeyByZXR1cm4gZm50OyB9CgppbmxpbmUg
UUZvbnRNZXRyaWNzIFFXaWRnZXQ6OmZvbnRNZXRyaWNzKCkgY29uc3QKeyByZXR1cm4gUUZvbnRN
ZXRyaWNzKGZvbnQoKSk7IH0KCmlubGluZSBRRm9udEluZm8gUVdpZGdldDo6Zm9udEluZm8oKSBj
b25zdAp7IHJldHVybiBRRm9udEluZm8oZm9udCgpKTsgfQoKaW5saW5lIGJvb2wgUVdpZGdldDo6
aGFzTW91c2VUcmFja2luZygpIGNvbnN0CnsgcmV0dXJuIHRlc3RXU3RhdGUoV1N0YXRlX01vdXNl
VHJhY2tpbmcpOyB9CgppbmxpbmUgYm9vbCBRV2lkZ2V0Ojppc0ZvY3VzRW5hYmxlZCgpIGNvbnN0
CnsgcmV0dXJuIChGb2N1c1BvbGljeSlmb2N1c19wb2xpY3kgIT0gTm9Gb2N1czsgfQoKaW5saW5l
IFFXaWRnZXQ6OkZvY3VzUG9saWN5IFFXaWRnZXQ6OmZvY3VzUG9saWN5KCkgY29uc3QKeyByZXR1
cm4gKEZvY3VzUG9saWN5KWZvY3VzX3BvbGljeTsgfQoKaW5saW5lIGJvb2wgUVdpZGdldDo6aXNV
cGRhdGVzRW5hYmxlZCgpIGNvbnN0CnsgcmV0dXJuICF0ZXN0V1N0YXRlKFdTdGF0ZV9CbG9ja1Vw
ZGF0ZXMpOyB9CgppbmxpbmUgdm9pZCBRV2lkZ2V0Ojp1cGRhdGUoIGNvbnN0IFFSZWN0ICZyICkK
eyB1cGRhdGUoIHIueCgpLCByLnkoKSwgci53aWR0aCgpLCByLmhlaWdodCgpICk7IH0KCmlubGlu
ZSB2b2lkIFFXaWRnZXQ6OnJlcGFpbnQoKQp7IHJlcGFpbnQoIDAsIDAsIGNyZWN0LndpZHRoKCks
IGNyZWN0LmhlaWdodCgpLCBUUlVFICk7IH0KCmlubGluZSB2b2lkIFFXaWRnZXQ6OnJlcGFpbnQo
IGJvb2wgZXJhc2UgKQp7IHJlcGFpbnQoIDAsIDAsIGNyZWN0LndpZHRoKCksIGNyZWN0LmhlaWdo
dCgpLCBlcmFzZSApOyB9CgppbmxpbmUgdm9pZCBRV2lkZ2V0OjpyZXBhaW50KCBjb25zdCBRUmVj
dCAmciwgYm9vbCBlcmFzZSApCnsgcmVwYWludCggci54KCksIHIueSgpLCByLndpZHRoKCksIHIu
aGVpZ2h0KCksIGVyYXNlICk7IH0KCmlubGluZSB2b2lkIFFXaWRnZXQ6OmVyYXNlKCkKeyBlcmFz
ZSggMCwgMCwgY3JlY3Qud2lkdGgoKSwgY3JlY3QuaGVpZ2h0KCkgKTsgfQoKaW5saW5lIHZvaWQg
UVdpZGdldDo6ZXJhc2UoIGNvbnN0IFFSZWN0ICZyICkKeyBlcmFzZSggci54KCksIHIueSgpLCBy
LndpZHRoKCksIHIuaGVpZ2h0KCkgKTsgfQoKaW5saW5lIGJvb2wgUVdpZGdldDo6Y2xvc2UoKQp7
IHJldHVybiBjbG9zZSggRkFMU0UgKTsgfQoKaW5saW5lIGJvb2wgUVdpZGdldDo6aXNWaXNpYmxl
KCkgY29uc3QKeyByZXR1cm4gdGVzdFdTdGF0ZShXU3RhdGVfVmlzaWJsZSk7IH0KCmlubGluZSBi
b29sIFFXaWRnZXQ6OmlzSGlkZGVuKCkgY29uc3QKeyByZXR1cm4gdGVzdFdTdGF0ZShXU3RhdGVf
Rm9yY2VIaWRlKTsgfQoKaW5saW5lIHZvaWQgUVdpZGdldDo6bW92ZSggY29uc3QgUVBvaW50ICZw
ICkKeyBtb3ZlKCBwLngoKSwgcC55KCkgKTsgfQoKaW5saW5lIHZvaWQgUVdpZGdldDo6cmVzaXpl
KCBjb25zdCBRU2l6ZSAmcyApCnsgcmVzaXplKCBzLndpZHRoKCksIHMuaGVpZ2h0KCkpOyB9Cgpp
bmxpbmUgdm9pZCBRV2lkZ2V0OjpzZXRHZW9tZXRyeSggY29uc3QgUVJlY3QgJnIgKQp7IHNldEdl
b21ldHJ5KCByLmxlZnQoKSwgci50b3AoKSwgci53aWR0aCgpLCByLmhlaWdodCgpICk7IH0KCmlu
bGluZSB2b2lkIFFXaWRnZXQ6OmRyYXdUZXh0KCBjb25zdCBRUG9pbnQgJnAsIGNvbnN0IFFTdHJp
bmcgJnMgKQp7IGRyYXdUZXh0KCBwLngoKSwgcC55KCksIHMgKTsgfQoKaW5saW5lIFFXaWRnZXQg
KlFXaWRnZXQ6OnBhcmVudFdpZGdldCgpIGNvbnN0CnsgcmV0dXJuIChRV2lkZ2V0ICopUU9iamVj
dDo6cGFyZW50KCk7IH0KCmlubGluZSBRV2lkZ2V0TWFwcGVyICpRV2lkZ2V0Ojp3bWFwcGVyKCkK
eyByZXR1cm4gbWFwcGVyOyB9CgppbmxpbmUgdWludCBRV2lkZ2V0OjpnZXRXU3RhdGUoKSBjb25z
dAp7IHJldHVybiB3aWRnZXRfc3RhdGU7IH0KCmlubGluZSB2b2lkIFFXaWRnZXQ6OnNldFdTdGF0
ZSggdWludCBmICkKeyB3aWRnZXRfc3RhdGUgfD0gZjsgfQoKaW5saW5lIHZvaWQgUVdpZGdldDo6
Y2xlYXJXU3RhdGUoIHVpbnQgZiApCnsgd2lkZ2V0X3N0YXRlICY9IH5mOyB9CgppbmxpbmUgUXQ6
OldGbGFncyBRV2lkZ2V0OjpnZXRXRmxhZ3MoKSBjb25zdAp7IHJldHVybiB3aWRnZXRfZmxhZ3M7
IH0KCmlubGluZSB2b2lkIFFXaWRnZXQ6OnNldFdGbGFncyggV0ZsYWdzIGYgKQp7IHdpZGdldF9m
bGFncyB8PSBmOyB9CgppbmxpbmUgdm9pZCBRV2lkZ2V0OjpjbGVhcldGbGFncyggV0ZsYWdzIGYg
KQp7IHdpZGdldF9mbGFncyAmPSB+ZjsgfQoKaW5saW5lIHZvaWQgUVdpZGdldDo6Y29uc3RQb2xp
c2goKSBjb25zdAp7CiAgICBpZiAoICF0ZXN0V1N0YXRlKFdTdGF0ZV9Qb2xpc2hlZCkgKSB7CiAg
ICAgICAgUVdpZGdldCogdGhhdCA9IChRV2lkZ2V0KikgdGhpczsKICAgICAgICB0aGF0LT5wb2xp
c2goKTsKICAgICAgICB0aGF0LT5zZXRXU3RhdGUoV1N0YXRlX1BvbGlzaGVkKTsKICAgIH0KfQoK
aW5saW5lIGJvb2wgUVdpZGdldDo6b3duQ3Vyc29yKCkgY29uc3QKewogICAgcmV0dXJuIHRlc3RX
U3RhdGUoIFdTdGF0ZV9Pd25DdXJzb3IgKTsKfQoKaW5saW5lIGJvb2wgUVdpZGdldDo6b3duRm9u
dCgpIGNvbnN0CnsKICAgIHJldHVybiBvd25fZm9udDsKfQoKaW5saW5lIGJvb2wgUVdpZGdldDo6
b3duUGFsZXR0ZSgpIGNvbnN0CnsKICAgIHJldHVybiBvd25fcGFsZXR0ZTsKfQoKCgoKCgpjbGFz
cyBRRm9jdXNEYXRhOwpjbGFzcyBRV1NNYW5hZ2VyOwoKCgoKc3RydWN0IFFUTFdFeHRyYSB7CiAg
ICBRU3RyaW5nIGNhcHRpb247CiAgICBRU3RyaW5nIGljb25UZXh0OwogICAgUVBpeG1hcCAqaWNv
bjsKICAgIFFGb2N1c0RhdGEgKmZvY3VzRGF0YTsKICAgIFFTaXplIGZzaXplOwogICAgc2hvcnQg
aW5jdywgaW5jaDsKICAgIHVpbnQgaWNvbmljOiAxOwogICAgdWludCBmdWxsc2NyZWVuIDogMTsK
ICAgIHVpbnQgc2hvd01vZGU6IDI7CiAgICBzaG9ydCBiYXNldywgYmFzZWg7CgogICAgV0lkIHBh
cmVudFdpbklkOwogICAgdWludCBlbWJlZGRlZCA6IDE7CiAgICB1aW50IHJlc2VydmVkOiAyOwog
ICAgdWludCBkbmQgOiAxOwogICAgdWludCB1c3BvcyA6IDE7CiAgICB1aW50IHVzc2l6ZSA6IDE7
CiAgICB2b2lkICp4aWM7CiMgODUwICJrZXJuZWwvcXdpZGdldC5oIgogICAgUVJlY3Qgbm9ybWFs
R2VvbWV0cnk7Cn07CgoKCgoKCnN0cnVjdCBRV0V4dHJhIHsKICAgIFFfSU5UMTYgbWludywgbWlu
aDsKICAgIFFfSU5UMTYgbWF4dywgbWF4aDsKICAgIFFQaXhtYXAgKmJnX3BpeDsKICAgIFFXaWRn
ZXQgKmZvY3VzX3Byb3h5OwoKICAgIFFDdXJzb3IgKmN1cnM7CgogICAgUVRMV0V4dHJhICp0b3Bl
eHRyYTsKCgoKCiAgICBXSWQgeERuZFByb3h5OwoKCgoKICAgIGNoYXIgYmdfbW9kZTsKCiAgICBR
U3R5bGUqIHN0eWxlOwoKICAgIFFSZWN0IG1pY3JvX2ZvY3VzX2hpbnQ7CiAgICBRU2l6ZVBvbGlj
eSBzaXplX3BvbGljeTsKICAgIHZvaWQgKiBwb3N0ZWRfZXZlbnRzOwoKICAgIHVpbnQgY2hpbGRy
ZW5fdXNlX2RuZCA6IDE7Cgp9OwojIDE3ICJrZXJuZWwvbW9jX3F3aWRnZXQuY3BwIiAyCiMgMSAi
L3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xbWV0YW9iamVjdC5oIiAx
CiMgNDIgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUvcW1ldGFvYmpl
Y3QuaCIKIyAxICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3Fjb25u
ZWN0aW9uLmgiIDEKIyA0MiAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVk
ZS9xY29ubmVjdGlvbi5oIgojIDEgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2lu
Y2x1ZGUvcW9iamVjdC5oIiAxCiMgNDMgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4y
L2luY2x1ZGUvcWNvbm5lY3Rpb24uaCIgMgoKCgp0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipRTWVt
YmVyKSgpOwoKCmNsYXNzIFFDb25uZWN0aW9uCnsKcHVibGljOgogICAgUUNvbm5lY3Rpb24oIGNv
bnN0IFFPYmplY3QgKiwgUU1lbWJlciwgY29uc3QgY2hhciAqbWVtYmVyTmFtZSApOwogICB+UUNv
bm5lY3Rpb24oKSB7fQoKICAgIGJvb2wgaXNDb25uZWN0ZWQoKSBjb25zdCB7IHJldHVybiBvYmog
IT0gMDsgfQoKICAgIFFPYmplY3QgKm9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG9iajsgfQogICAg
UU1lbWJlciAqbWVtYmVyKCkgY29uc3QgeyByZXR1cm4gKFFNZW1iZXIqKSZtYnI7IH0KICAgIGNv
bnN0IGNoYXIgKm1lbWJlck5hbWUoKSBjb25zdCB7IHJldHVybiBtYnJfbmFtZTsgfQogICAgaW50
IG51bUFyZ3MoKSBjb25zdCB7IHJldHVybiBuYXJnczsgfQoKcHJpdmF0ZToKICAgIFFPYmplY3Qg
Km9iajsKICAgIFFNZW1iZXIgbWJyOwogICAgY29uc3QgY2hhciAqbWJyX25hbWU7CiAgICBpbnQg
bmFyZ3M7Cgpwcml2YXRlOgoKICAgIFFDb25uZWN0aW9uKCBjb25zdCBRQ29ubmVjdGlvbiAmICk7
CiAgICBRQ29ubmVjdGlvbiAmb3BlcmF0b3I9KCBjb25zdCBRQ29ubmVjdGlvbiAmICk7Cgp9Owoj
IDQzICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3FtZXRhb2JqZWN0
LmgiIDIKIyAxICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3FzdHJs
aXN0LmgiIDEKIyA0MyAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9x
c3RybGlzdC5oIgojIDEgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUv
cWxpc3QuaCIgMQojIDQyICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRl
L3FsaXN0LmgiCiMgMSAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9x
Z2xpc3QuaCIgMQojIDQyICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRl
L3FnbGlzdC5oIgojIDEgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUv
cWNvbGxlY3Rpb24uaCIgMQojIDQ2ICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9p
bmNsdWRlL3Fjb2xsZWN0aW9uLmgiCmNsYXNzIFFHVmVjdG9yOwpjbGFzcyBRR0xpc3Q7CmNsYXNz
IFFHRGljdDsKCgpjbGFzcyBRQ29sbGVjdGlvbgp7CnB1YmxpYzoKICAgIGJvb2wgYXV0b0RlbGV0
ZSgpIGNvbnN0IHsgcmV0dXJuIGRlbF9pdGVtOyB9CiAgICB2b2lkIHNldEF1dG9EZWxldGUoIGJv
b2wgZW5hYmxlICkgeyBkZWxfaXRlbSA9IGVuYWJsZTsgfQoKICAgIHZpcnR1YWwgdWludCBjb3Vu
dCgpIGNvbnN0ID0gMDsKICAgIHZpcnR1YWwgdm9pZCBjbGVhcigpID0gMDsKCiAgICB0eXBlZGVm
IHZvaWQgKkl0ZW07Cgpwcm90ZWN0ZWQ6CiAgICBRQ29sbGVjdGlvbigpIHsgZGVsX2l0ZW0gPSBG
QUxTRTsgfQogICAgUUNvbGxlY3Rpb24oY29uc3QgUUNvbGxlY3Rpb24gJikgeyBkZWxfaXRlbSA9
IEZBTFNFOyB9CiAgICB2aXJ0dWFsIH5RQ29sbGVjdGlvbigpIHt9CgogICAgYm9vbCBkZWxfaXRl
bTsKCiAgICB2aXJ0dWFsIEl0ZW0gbmV3SXRlbSggSXRlbSApOwogICAgdmlydHVhbCB2b2lkIGRl
bGV0ZUl0ZW0oIEl0ZW0gKTsKfTsKIyA0MyAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4z
LjIvaW5jbHVkZS9xZ2xpc3QuaCIgMgoKCgoKCgoKY2xhc3MgUUxOb2RlCnsKZnJpZW5kIGNsYXNz
IFFHTGlzdDsKZnJpZW5kIGNsYXNzIFFHTGlzdEl0ZXJhdG9yOwpwdWJsaWM6CiAgICBRQ29sbGVj
dGlvbjo6SXRlbSBnZXREYXRhKCkgeyByZXR1cm4gZGF0YTsgfQpwcml2YXRlOgogICAgUUNvbGxl
Y3Rpb246Okl0ZW0gZGF0YTsKICAgIFFMTm9kZSAqcHJldjsKICAgIFFMTm9kZSAqbmV4dDsKICAg
IFFMTm9kZSggUUNvbGxlY3Rpb246Okl0ZW0gZCApIHsgZGF0YSA9IGQ7IH0KfTsKCgoKCgoKY2xh
c3MgUUdMaXN0IDogcHVibGljIFFDb2xsZWN0aW9uCnsKZnJpZW5kIGNsYXNzIFFHTGlzdEl0ZXJh
dG9yOwpmcmllbmQgY2xhc3MgUUdWZWN0b3I7CnB1YmxpYzoKICAgIHVpbnQgY291bnQoKSBjb25z
dDsKCgogICAgUURhdGFTdHJlYW0gJnJlYWQoIFFEYXRhU3RyZWFtICYgKTsKICAgIFFEYXRhU3Ry
ZWFtICZ3cml0ZSggUURhdGFTdHJlYW0gJiApIGNvbnN0OwoKcHJvdGVjdGVkOgogICAgUUdMaXN0
KCk7CiAgICBRR0xpc3QoIGNvbnN0IFFHTGlzdCAmICk7CiAgICB2aXJ0dWFsIH5RR0xpc3QoKTsK
CiAgICBRR0xpc3QgJm9wZXJhdG9yPSggY29uc3QgUUdMaXN0ICYgKTsKICAgIGJvb2wgb3BlcmF0
b3I9PSggY29uc3QgUUdMaXN0JiApIGNvbnN0OwoKICAgIHZvaWQgaW5Tb3J0KCBRQ29sbGVjdGlv
bjo6SXRlbSApOwogICAgdm9pZCBhcHBlbmQoIFFDb2xsZWN0aW9uOjpJdGVtICk7CiAgICBib29s
IGluc2VydEF0KCB1aW50IGluZGV4LCBRQ29sbGVjdGlvbjo6SXRlbSApOwogICAgdm9pZCByZWxp
bmtOb2RlKCBRTE5vZGUgKiApOwogICAgYm9vbCByZW1vdmVOb2RlKCBRTE5vZGUgKiApOwogICAg
Ym9vbCByZW1vdmUoIFFDb2xsZWN0aW9uOjpJdGVtID0gMCApOwogICAgYm9vbCByZW1vdmVSZWYo
IFFDb2xsZWN0aW9uOjpJdGVtID0gMCApOwogICAgYm9vbCByZW1vdmVGaXJzdCgpOwogICAgYm9v
bCByZW1vdmVMYXN0KCk7CiAgICBib29sIHJlbW92ZUF0KCB1aW50IGluZGV4ICk7CiAgICBRQ29s
bGVjdGlvbjo6SXRlbSB0YWtlTm9kZSggUUxOb2RlICogKTsKICAgIFFDb2xsZWN0aW9uOjpJdGVt
IHRha2UoKTsKICAgIFFDb2xsZWN0aW9uOjpJdGVtIHRha2VBdCggdWludCBpbmRleCApOwogICAg
UUNvbGxlY3Rpb246Okl0ZW0gdGFrZUZpcnN0KCk7CiAgICBRQ29sbGVjdGlvbjo6SXRlbSB0YWtl
TGFzdCgpOwoKICAgIHZvaWQgc29ydCgpOwogICAgdm9pZCBjbGVhcigpOwoKICAgIGludCBmaW5k
UmVmKCBRQ29sbGVjdGlvbjo6SXRlbSwgYm9vbCA9IFRSVUUgKTsKICAgIGludCBmaW5kKCBRQ29s
bGVjdGlvbjo6SXRlbSwgYm9vbCA9IFRSVUUgKTsKCiAgICB1aW50IGNvbnRhaW5zUmVmKCBRQ29s
bGVjdGlvbjo6SXRlbSApIGNvbnN0OwogICAgdWludCBjb250YWlucyggUUNvbGxlY3Rpb246Okl0
ZW0gKSBjb25zdDsKCiAgICBRQ29sbGVjdGlvbjo6SXRlbSBhdCggdWludCBpbmRleCApOwogICAg
aW50IGF0KCkgY29uc3Q7CiAgICBRTE5vZGUgKmN1cnJlbnROb2RlKCkgY29uc3Q7CgogICAgUUNv
bGxlY3Rpb246Okl0ZW0gZ2V0KCkgY29uc3Q7CgogICAgUUNvbGxlY3Rpb246Okl0ZW0gY2ZpcnN0
KCkgY29uc3Q7CiAgICBRQ29sbGVjdGlvbjo6SXRlbSBjbGFzdCgpIGNvbnN0OwogICAgUUNvbGxl
Y3Rpb246Okl0ZW0gZmlyc3QoKTsKICAgIFFDb2xsZWN0aW9uOjpJdGVtIGxhc3QoKTsKICAgIFFD
b2xsZWN0aW9uOjpJdGVtIG5leHQoKTsKICAgIFFDb2xsZWN0aW9uOjpJdGVtIHByZXYoKTsKCiAg
ICB2b2lkIHRvVmVjdG9yKCBRR1ZlY3RvciAqICkgY29uc3Q7CgogICAgdmlydHVhbCBpbnQgY29t
cGFyZUl0ZW1zKCBRQ29sbGVjdGlvbjo6SXRlbSwgUUNvbGxlY3Rpb246Okl0ZW0gKTsKCgogICAg
dmlydHVhbCBRRGF0YVN0cmVhbSAmcmVhZCggUURhdGFTdHJlYW0gJiwgUUNvbGxlY3Rpb246Okl0
ZW0gJiApOwogICAgdmlydHVhbCBRRGF0YVN0cmVhbSAmd3JpdGUoIFFEYXRhU3RyZWFtICYsIFFD
b2xsZWN0aW9uOjpJdGVtICkgY29uc3Q7Cgpwcml2YXRlOgogICAgdm9pZCBwcmVwZW5kKCBRQ29s
bGVjdGlvbjo6SXRlbSApOwoKICAgIHZvaWQgaGVhcFNvcnRQdXNoRG93biggUUNvbGxlY3Rpb246
Okl0ZW0qIGhlYXAsIGludCBmaXJzdCwgaW50IGxhc3QgKTsKCiAgICBRTE5vZGUgKmZpcnN0Tm9k
ZTsKICAgIFFMTm9kZSAqbGFzdE5vZGU7CiAgICBRTE5vZGUgKmN1ck5vZGU7CiAgICBpbnQgY3Vy
SW5kZXg7CiAgICB1aW50IG51bU5vZGVzOwogICAgUUdMaXN0ICppdGVyYXRvcnM7CgogICAgUUxO
b2RlICpsb2NhdGUoIHVpbnQgKTsKICAgIFFMTm9kZSAqdW5saW5rKCk7Cn07CgoKaW5saW5lIHVp
bnQgUUdMaXN0Ojpjb3VudCgpIGNvbnN0CnsKICAgIHJldHVybiBudW1Ob2RlczsKfQoKaW5saW5l
IGJvb2wgUUdMaXN0OjpyZW1vdmVGaXJzdCgpCnsKICAgIGZpcnN0KCk7CiAgICByZXR1cm4gcmVt
b3ZlKCk7Cn0KCmlubGluZSBib29sIFFHTGlzdDo6cmVtb3ZlTGFzdCgpCnsKICAgIGxhc3QoKTsK
ICAgIHJldHVybiByZW1vdmUoKTsKfQoKaW5saW5lIGludCBRR0xpc3Q6OmF0KCkgY29uc3QKewog
ICAgcmV0dXJuIGN1ckluZGV4Owp9CgppbmxpbmUgUUNvbGxlY3Rpb246Okl0ZW0gUUdMaXN0Ojph
dCggdWludCBpbmRleCApCnsKICAgIFFMTm9kZSAqbiA9IGxvY2F0ZSggaW5kZXggKTsKICAgIHJl
dHVybiBuID8gbi0+ZGF0YSA6IDA7Cn0KCmlubGluZSBRTE5vZGUgKlFHTGlzdDo6Y3VycmVudE5v
ZGUoKSBjb25zdAp7CiAgICByZXR1cm4gY3VyTm9kZTsKfQoKaW5saW5lIFFDb2xsZWN0aW9uOjpJ
dGVtIFFHTGlzdDo6Z2V0KCkgY29uc3QKewogICAgcmV0dXJuIGN1ck5vZGUgPyBjdXJOb2RlLT5k
YXRhIDogMDsKfQoKaW5saW5lIFFDb2xsZWN0aW9uOjpJdGVtIFFHTGlzdDo6Y2ZpcnN0KCkgY29u
c3QKewogICAgcmV0dXJuIGZpcnN0Tm9kZSA/IGZpcnN0Tm9kZS0+ZGF0YSA6IDA7Cn0KCmlubGlu
ZSBRQ29sbGVjdGlvbjo6SXRlbSBRR0xpc3Q6OmNsYXN0KCkgY29uc3QKewogICAgcmV0dXJuIGxh
c3ROb2RlID8gbGFzdE5vZGUtPmRhdGEgOiAwOwp9CgoKCgoKCgogUURhdGFTdHJlYW0gJm9wZXJh
dG9yPj4oIFFEYXRhU3RyZWFtICYsIFFHTGlzdCAmICk7CiBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8
PCggUURhdGFTdHJlYW0gJiwgY29uc3QgUUdMaXN0ICYgKTsKCgoKCgoKY2xhc3MgUUdMaXN0SXRl
cmF0b3IKewpmcmllbmQgY2xhc3MgUUdMaXN0Owpwcm90ZWN0ZWQ6CiAgICBRR0xpc3RJdGVyYXRv
ciggY29uc3QgUUdMaXN0ICYgKTsKICAgIFFHTGlzdEl0ZXJhdG9yKCBjb25zdCBRR0xpc3RJdGVy
YXRvciAmICk7CiAgICBRR0xpc3RJdGVyYXRvciAmb3BlcmF0b3I9KCBjb25zdCBRR0xpc3RJdGVy
YXRvciAmICk7CiAgIH5RR0xpc3RJdGVyYXRvcigpOwoKICAgIGJvb2wgYXRGaXJzdCgpIGNvbnN0
OwogICAgYm9vbCBhdExhc3QoKSBjb25zdDsKICAgIFFDb2xsZWN0aW9uOjpJdGVtIHRvRmlyc3Qo
KTsKICAgIFFDb2xsZWN0aW9uOjpJdGVtIHRvTGFzdCgpOwoKICAgIFFDb2xsZWN0aW9uOjpJdGVt
IGdldCgpIGNvbnN0OwogICAgUUNvbGxlY3Rpb246Okl0ZW0gb3BlcmF0b3IoKSgpOwogICAgUUNv
bGxlY3Rpb246Okl0ZW0gb3BlcmF0b3IrKygpOwogICAgUUNvbGxlY3Rpb246Okl0ZW0gb3BlcmF0
b3IrPSh1aW50KTsKICAgIFFDb2xsZWN0aW9uOjpJdGVtIG9wZXJhdG9yLS0oKTsKICAgIFFDb2xs
ZWN0aW9uOjpJdGVtIG9wZXJhdG9yLT0odWludCk7Cgpwcm90ZWN0ZWQ6CiAgICBRR0xpc3QgKmxp
c3Q7Cgpwcml2YXRlOgogICAgUUxOb2RlICpjdXJOb2RlOwp9OwoKCmlubGluZSBib29sIFFHTGlz
dEl0ZXJhdG9yOjphdEZpcnN0KCkgY29uc3QKewogICAgcmV0dXJuIGN1ck5vZGUgPT0gbGlzdC0+
Zmlyc3ROb2RlOwp9CgppbmxpbmUgYm9vbCBRR0xpc3RJdGVyYXRvcjo6YXRMYXN0KCkgY29uc3QK
ewogICAgcmV0dXJuIGN1ck5vZGUgPT0gbGlzdC0+bGFzdE5vZGU7Cn0KCmlubGluZSBRQ29sbGVj
dGlvbjo6SXRlbSBRR0xpc3RJdGVyYXRvcjo6Z2V0KCkgY29uc3QKewogICAgcmV0dXJuIGN1ck5v
ZGUgPyBjdXJOb2RlLT5kYXRhIDogMDsKfQojIDQzICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9x
dC0yLjMuMi9pbmNsdWRlL3FsaXN0LmgiIDIKCgoKdGVtcGxhdGU8Y2xhc3MgdHlwZT4gY2xhc3Mg
UUxpc3QgOiBwdWJsaWMgUUdMaXN0CnsKcHVibGljOgogICAgUUxpc3QoKSB7fQogICAgUUxpc3Qo
IGNvbnN0IFFMaXN0PHR5cGU+ICZsICkgOiBRR0xpc3QobCkge30KICAgflFMaXN0KCkgeyBjbGVh
cigpOyB9CiAgICBRTGlzdDx0eXBlPiAmb3BlcmF0b3I9KGNvbnN0IFFMaXN0PHR5cGU+ICZsKQog
ICAgICAgICAgICAgICAgICAgICAgICB7IHJldHVybiAoUUxpc3Q8dHlwZT4mKVFHTGlzdDo6b3Bl
cmF0b3I9KGwpOyB9CiAgICBib29sIG9wZXJhdG9yPT0oIGNvbnN0IFFMaXN0PHR5cGU+ICZsaXN0
ICkgY29uc3QKICAgIHsgcmV0dXJuIFFHTGlzdDo6b3BlcmF0b3I9PSggbGlzdCApOyB9CiAgICB1
aW50IGNvdW50KCkgY29uc3QgeyByZXR1cm4gUUdMaXN0Ojpjb3VudCgpOyB9CiAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiBRR0xpc3Q6OmNvdW50KCkgPT0gMDsgfQogICAgYm9vbCBp
bnNlcnQoIHVpbnQgaSwgY29uc3QgdHlwZSAqZCl7IHJldHVybiBRR0xpc3Q6Omluc2VydEF0KGks
KFFDb2xsZWN0aW9uOjpJdGVtKWQpOyB9CiAgICB2b2lkIGluU29ydCggY29uc3QgdHlwZSAqZCAp
IHsgUUdMaXN0OjppblNvcnQoKFFDb2xsZWN0aW9uOjpJdGVtKWQpOyB9CiAgICB2b2lkIHByZXBl
bmQoIGNvbnN0IHR5cGUgKmQgKSB7IFFHTGlzdDo6aW5zZXJ0QXQoMCwoUUNvbGxlY3Rpb246Okl0
ZW0pZCk7IH0KICAgIHZvaWQgYXBwZW5kKCBjb25zdCB0eXBlICpkICkgeyBRR0xpc3Q6OmFwcGVu
ZCgoUUNvbGxlY3Rpb246Okl0ZW0pZCk7IH0KICAgIGJvb2wgcmVtb3ZlKCB1aW50IGkgKSB7IHJl
dHVybiBRR0xpc3Q6OnJlbW92ZUF0KGkpOyB9CiAgICBib29sIHJlbW92ZSgpIHsgcmV0dXJuIFFH
TGlzdDo6cmVtb3ZlKChRQ29sbGVjdGlvbjo6SXRlbSkwKTsgfQogICAgYm9vbCByZW1vdmUoIGNv
bnN0IHR5cGUgKmQgKSB7IHJldHVybiBRR0xpc3Q6OnJlbW92ZSgoUUNvbGxlY3Rpb246Okl0ZW0p
ZCk7IH0KICAgIGJvb2wgcmVtb3ZlUmVmKCBjb25zdCB0eXBlICpkICkgeyByZXR1cm4gUUdMaXN0
OjpyZW1vdmVSZWYoKFFDb2xsZWN0aW9uOjpJdGVtKWQpOyB9CiAgICB2b2lkIHJlbW92ZU5vZGUo
IFFMTm9kZSAqbiApIHsgUUdMaXN0OjpyZW1vdmVOb2RlKG4pOyB9CiAgICBib29sIHJlbW92ZUZp
cnN0KCkgeyByZXR1cm4gUUdMaXN0OjpyZW1vdmVGaXJzdCgpOyB9CiAgICBib29sIHJlbW92ZUxh
c3QoKSB7IHJldHVybiBRR0xpc3Q6OnJlbW92ZUxhc3QoKTsgfQogICAgdHlwZSAqdGFrZSggdWlu
dCBpICkgeyByZXR1cm4gKHR5cGUgKilRR0xpc3Q6OnRha2VBdChpKTsgfQogICAgdHlwZSAqdGFr
ZSgpIHsgcmV0dXJuICh0eXBlICopUUdMaXN0Ojp0YWtlKCk7IH0KICAgIHR5cGUgKnRha2VOb2Rl
KCBRTE5vZGUgKm4gKSB7IHJldHVybiAodHlwZSAqKVFHTGlzdDo6dGFrZU5vZGUobik7IH0KICAg
IHZvaWQgY2xlYXIoKSB7IFFHTGlzdDo6Y2xlYXIoKTsgfQogICAgdm9pZCBzb3J0KCkgeyBRR0xp
c3Q6OnNvcnQoKTsgfQogICAgaW50IGZpbmQoIGNvbnN0IHR5cGUgKmQgKSB7IHJldHVybiBRR0xp
c3Q6OmZpbmQoKFFDb2xsZWN0aW9uOjpJdGVtKWQpOyB9CiAgICBpbnQgZmluZE5leHQoIGNvbnN0
IHR5cGUgKmQgKSB7IHJldHVybiBRR0xpc3Q6OmZpbmQoKFFDb2xsZWN0aW9uOjpJdGVtKWQsRkFM
U0UpOyB9CiAgICBpbnQgZmluZFJlZiggY29uc3QgdHlwZSAqZCApIHsgcmV0dXJuIFFHTGlzdDo6
ZmluZFJlZigoUUNvbGxlY3Rpb246Okl0ZW0pZCk7IH0KICAgIGludCBmaW5kTmV4dFJlZiggY29u
c3QgdHlwZSAqZCApeyByZXR1cm4gUUdMaXN0OjpmaW5kUmVmKChRQ29sbGVjdGlvbjo6SXRlbSlk
LEZBTFNFKTt9CiAgICB1aW50IGNvbnRhaW5zKCBjb25zdCB0eXBlICpkICkgY29uc3QgeyByZXR1
cm4gUUdMaXN0Ojpjb250YWlucygoUUNvbGxlY3Rpb246Okl0ZW0pZCk7IH0KICAgIHVpbnQgY29u
dGFpbnNSZWYoIGNvbnN0IHR5cGUgKmQgKSBjb25zdAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeyByZXR1cm4gUUdMaXN0Ojpjb250YWluc1JlZigoUUNvbGxlY3Rpb246
Okl0ZW0pZCk7IH0KICAgIHR5cGUgKmF0KCB1aW50IGkgKSB7IHJldHVybiAodHlwZSAqKVFHTGlz
dDo6YXQoaSk7IH0KICAgIGludCBhdCgpIGNvbnN0IHsgcmV0dXJuIFFHTGlzdDo6YXQoKTsgfQog
ICAgdHlwZSAqY3VycmVudCgpIGNvbnN0IHsgcmV0dXJuICh0eXBlICopUUdMaXN0OjpnZXQoKTsg
fQogICAgUUxOb2RlICpjdXJyZW50Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIFFHTGlzdDo6Y3VycmVu
dE5vZGUoKTsgfQogICAgdHlwZSAqZ2V0Rmlyc3QoKSBjb25zdCB7IHJldHVybiAodHlwZSAqKVFH
TGlzdDo6Y2ZpcnN0KCk7IH0KICAgIHR5cGUgKmdldExhc3QoKSBjb25zdCB7IHJldHVybiAodHlw
ZSAqKVFHTGlzdDo6Y2xhc3QoKTsgfQogICAgdHlwZSAqZmlyc3QoKSB7IHJldHVybiAodHlwZSAq
KVFHTGlzdDo6Zmlyc3QoKTsgfQogICAgdHlwZSAqbGFzdCgpIHsgcmV0dXJuICh0eXBlICopUUdM
aXN0OjpsYXN0KCk7IH0KICAgIHR5cGUgKm5leHQoKSB7IHJldHVybiAodHlwZSAqKVFHTGlzdDo6
bmV4dCgpOyB9CiAgICB0eXBlICpwcmV2KCkgeyByZXR1cm4gKHR5cGUgKilRR0xpc3Q6OnByZXYo
KTsgfQogICAgdm9pZCB0b1ZlY3RvciggUUdWZWN0b3IgKnZlYyApY29uc3R7IFFHTGlzdDo6dG9W
ZWN0b3IodmVjKTsgfQpwcml2YXRlOgogICAgdm9pZCBkZWxldGVJdGVtKCBRQ29sbGVjdGlvbjo6
SXRlbSBkICk7Cn07CgoKdGVtcGxhdGU8PiBpbmxpbmUgdm9pZCBRTGlzdDx2b2lkPjo6ZGVsZXRl
SXRlbSggUUNvbGxlY3Rpb246Okl0ZW0gKQp7Cn0KCgp0ZW1wbGF0ZTxjbGFzcyB0eXBlPiBpbmxp
bmUgdm9pZCBRTGlzdDx0eXBlPjo6ZGVsZXRlSXRlbSggUUNvbGxlY3Rpb246Okl0ZW0gZCApCnsK
ICAgIGlmICggZGVsX2l0ZW0gKSBkZWxldGUgKHR5cGUgKilkOwp9CgoKdGVtcGxhdGU8Y2xhc3Mg
dHlwZT4gY2xhc3MgUUxpc3RJdGVyYXRvciA6IHB1YmxpYyBRR0xpc3RJdGVyYXRvcgp7CnB1Ymxp
YzoKICAgIFFMaXN0SXRlcmF0b3IoY29uc3QgUUxpc3Q8dHlwZT4gJmwpIDpRR0xpc3RJdGVyYXRv
cigoUUdMaXN0ICYpbCkge30KICAgflFMaXN0SXRlcmF0b3IoKSB7fQogICAgdWludCBjb3VudCgp
IGNvbnN0IHsgcmV0dXJuIGxpc3QtPmNvdW50KCk7IH0KICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuIGxpc3QtPmNvdW50KCkgPT0gMDsgfQogICAgYm9vbCBhdEZpcnN0KCkgY29uc3Qg
eyByZXR1cm4gUUdMaXN0SXRlcmF0b3I6OmF0Rmlyc3QoKTsgfQogICAgYm9vbCBhdExhc3QoKSBj
b25zdCB7IHJldHVybiBRR0xpc3RJdGVyYXRvcjo6YXRMYXN0KCk7IH0KICAgIHR5cGUgKnRvRmly
c3QoKSB7IHJldHVybiAodHlwZSAqKVFHTGlzdEl0ZXJhdG9yOjp0b0ZpcnN0KCk7IH0KICAgIHR5
cGUgKnRvTGFzdCgpIHsgcmV0dXJuICh0eXBlICopUUdMaXN0SXRlcmF0b3I6OnRvTGFzdCgpOyB9
CiAgICBvcGVyYXRvciB0eXBlICooKSBjb25zdCB7IHJldHVybiAodHlwZSAqKVFHTGlzdEl0ZXJh
dG9yOjpnZXQoKTsgfQogICAgdHlwZSAqb3BlcmF0b3IqKCkgeyByZXR1cm4gKHR5cGUgKilRR0xp
c3RJdGVyYXRvcjo6Z2V0KCk7IH0KCgoKCgoKCiAgICB0eXBlICpjdXJyZW50KCkgY29uc3QgeyBy
ZXR1cm4gKHR5cGUgKilRR0xpc3RJdGVyYXRvcjo6Z2V0KCk7IH0KICAgIHR5cGUgKm9wZXJhdG9y
KCkoKSB7IHJldHVybiAodHlwZSAqKVFHTGlzdEl0ZXJhdG9yOjpvcGVyYXRvcigpKCk7fQogICAg
dHlwZSAqb3BlcmF0b3IrKygpIHsgcmV0dXJuICh0eXBlICopUUdMaXN0SXRlcmF0b3I6Om9wZXJh
dG9yKysoKTsgfQogICAgdHlwZSAqb3BlcmF0b3IrPSh1aW50IGopIHsgcmV0dXJuICh0eXBlICop
UUdMaXN0SXRlcmF0b3I6Om9wZXJhdG9yKz0oaik7fQogICAgdHlwZSAqb3BlcmF0b3ItLSgpIHsg
cmV0dXJuICh0eXBlICopUUdMaXN0SXRlcmF0b3I6Om9wZXJhdG9yLS0oKTsgfQogICAgdHlwZSAq
b3BlcmF0b3ItPSh1aW50IGopIHsgcmV0dXJuICh0eXBlICopUUdMaXN0SXRlcmF0b3I6Om9wZXJh
dG9yLT0oaik7fQogICAgUUxpc3RJdGVyYXRvcjx0eXBlPiYgb3BlcmF0b3I9KGNvbnN0IFFMaXN0
SXRlcmF0b3I8dHlwZT4maXQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgUUdMaXN0
SXRlcmF0b3I6Om9wZXJhdG9yPShpdCk7IHJldHVybiAqdGhpczsgfQp9OwojIDQ0ICIvdXNyL3Ny
Yy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3FzdHJsaXN0LmgiIDIKIyA1MyAiL3Vz
ci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xc3RybGlzdC5oIgp0eXBlZGVm
IFFMaXN0PGNoYXI+IFFTdHJMaXN0QmFzZTsKdHlwZWRlZiBRTGlzdEl0ZXJhdG9yPGNoYXI+IFFT
dHJMaXN0SXRlcmF0b3I7CgoKY2xhc3MgUVN0ckxpc3QgOiBwdWJsaWMgUVN0ckxpc3RCYXNlCnsK
cHVibGljOgogICAgUVN0ckxpc3QoIGJvb2wgZGVlcENvcGllcz1UUlVFICkgeyBkYyA9IGRlZXBD
b3BpZXM7IGRlbF9pdGVtID0gZGVlcENvcGllczsgfQogICAgUVN0ckxpc3QoIGNvbnN0IFFTdHJM
aXN0ICYgKTsKICAgflFTdHJMaXN0KCkgeyBjbGVhcigpOyB9CiAgICBRU3RyTGlzdCYgb3BlcmF0
b3I9KCBjb25zdCBRU3RyTGlzdCAmICk7Cgpwcml2YXRlOgogICAgUUNvbGxlY3Rpb246Okl0ZW0g
bmV3SXRlbSggUUNvbGxlY3Rpb246Okl0ZW0gZCApIHsgcmV0dXJuIGRjID8gcXN0cmR1cCggKGNv
bnN0IGNoYXIqKWQgKSA6IGQ7IH0KICAgIHZvaWQgZGVsZXRlSXRlbSggUUNvbGxlY3Rpb246Okl0
ZW0gZCApIHsgaWYgKCBkZWxfaXRlbSApIGRlbGV0ZVtdIChjaGFyKilkOyB9CiAgICBpbnQgY29t
cGFyZUl0ZW1zKCBRQ29sbGVjdGlvbjo6SXRlbSBzMSwgUUNvbGxlY3Rpb246Okl0ZW0gczIgKSB7
IHJldHVybiBxc3RyY21wKChjb25zdCBjaGFyKilzMSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIqKXMyKTsgfQoKICAg
IFFEYXRhU3RyZWFtICZyZWFkKCBRRGF0YVN0cmVhbSAmcywgUUNvbGxlY3Rpb246Okl0ZW0gJmQg
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcyA+PiAoY2hhciAqJilkOyByZXR1
cm4gczsgfQogICAgUURhdGFTdHJlYW0gJndyaXRlKCBRRGF0YVN0cmVhbSAmcywgUUNvbGxlY3Rp
b246Okl0ZW0gZCApIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyByZXR1
cm4gcyA8PCAoY29uc3QgY2hhciAqKWQ7IH0KCiAgICBib29sIGRjOwp9OwoKCmNsYXNzIFFTdHJJ
TGlzdCA6IHB1YmxpYyBRU3RyTGlzdAp7CnB1YmxpYzoKICAgIFFTdHJJTGlzdCggYm9vbCBkZWVw
Q29waWVzPVRSVUUgKSA6IFFTdHJMaXN0KCBkZWVwQ29waWVzICkge30KICAgflFTdHJJTGlzdCgp
IHsgY2xlYXIoKTsgfQpwcml2YXRlOgogICAgaW50IGNvbXBhcmVJdGVtcyggUUNvbGxlY3Rpb246
Okl0ZW0gczEsIFFDb2xsZWN0aW9uOjpJdGVtIHMyICkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7IHJldHVybiBxc3RyaWNtcCgoY29uc3QgY2hhciopczEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciopczIpOyB9
Cn07CgoKaW5saW5lIFFTdHJMaXN0ICYgUVN0ckxpc3Q6Om9wZXJhdG9yPSggY29uc3QgUVN0ckxp
c3QgJnN0ckxpc3QgKQp7CiAgICBjbGVhcigpOwogICAgZGMgPSBzdHJMaXN0LmRjOwogICAgZGVs
X2l0ZW0gPSBkYzsKICAgIFFTdHJMaXN0QmFzZTo6b3BlcmF0b3I9KHN0ckxpc3QpOwogICAgcmV0
dXJuICp0aGlzOwp9CgppbmxpbmUgUVN0ckxpc3Q6OlFTdHJMaXN0KCBjb25zdCBRU3RyTGlzdCAm
c3RyTGlzdCApCiAgICA6IFFTdHJMaXN0QmFzZSggc3RyTGlzdCApCnsKICAgIGRjID0gRkFMU0U7
CiAgICBvcGVyYXRvcj0oc3RyTGlzdCk7Cn0KIyA0NCAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQv
cXQtMi4zLjIvaW5jbHVkZS9xbWV0YW9iamVjdC5oIiAyCgoKY2xhc3MgUU9iamVjdDsKCnN0cnVj
dCBRTWV0YURhdGEKewogICAgY29uc3QgY2hhciAqbmFtZTsKICAgIFFNZW1iZXIgcHRyOwogICAg
ZW51bSBBY2Nlc3MgeyBQcml2YXRlLCBQcm90ZWN0ZWQsIFB1YmxpYyB9OwoKCgp9OwoKCnN0cnVj
dCBRTWV0YUVudW0KewogICAgUU1ldGFFbnVtKCkgeyB9CiAgICB+UU1ldGFFbnVtKCkgeyBkZWxl
dGUgW10gaXRlbXM7IH0KICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICB1aW50IGNvdW50OwogICAg
c3RydWN0IEl0ZW0KICAgIHsKICAgICAgICBjb25zdCBjaGFyICprZXk7CiAgICAgICAgaW50IHZh
bHVlOwogICAgfTsKICAgIEl0ZW0gKml0ZW1zOwogICAgYm9vbCBzZXQ7Cn07CgoKY2xhc3MgUU1l
dGFQcm9wZXJ0eQp7CnB1YmxpYzoKICAgIFFNZXRhUHJvcGVydHkoKTsKICAgIH5RTWV0YVByb3Bl
cnR5KCk7CgogICAgY29uc3QgY2hhciAqdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHQ7IH0KICAgIGNv
bnN0IGNoYXIqIG5hbWUoKSBjb25zdCB7IHJldHVybiBuOyB9CgogICAgYm9vbCB3cml0YWJsZSgp
IGNvbnN0OwogICAgYm9vbCB3cml0ZWFibGUoKSBjb25zdDsKICAgIGJvb2wgaXNWYWxpZCgpIGNv
bnN0OwoKICAgIGJvb2wgaXNTZXRUeXBlKCkgY29uc3Q7CiAgICBib29sIGlzRW51bVR5cGUoKSBj
b25zdDsKICAgIFFTdHJMaXN0IGVudW1LZXlzKCkgY29uc3Q7CgogICAgaW50IGtleVRvVmFsdWUo
IGNvbnN0IGNoYXIqIGtleSApIGNvbnN0OwogICAgY29uc3QgY2hhciogdmFsdWVUb0tleSggaW50
IHZhbHVlICkgY29uc3Q7CiAgICBpbnQga2V5c1RvVmFsdWUoIGNvbnN0IFFTdHJMaXN0JiBrZXlz
ICkgY29uc3Q7CiAgICBRU3RyTGlzdCB2YWx1ZVRvS2V5cyggaW50IHZhbHVlICkgY29uc3Q7Cgog
ICAgYm9vbCBzdG9yZWQoIFFPYmplY3QqICkgY29uc3Q7CiAgICBib29sIGRlc2lnbmFibGUoKSBj
b25zdDsKCiAgICBjb25zdCBjaGFyKiB0OwogICAgY29uc3QgY2hhciogbjsKICAgIFFNZW1iZXIg
Z2V0OwogICAgUU1lbWJlciBzZXQ7CiAgICBRTWVtYmVyIHN0b3JlOwogICAgUU1lbWJlciByZXNl
dDsKICAgIFFNZXRhRW51bSAqZW51bURhdGE7CgogICAgZW51bSBTcGVjaWZpY2F0aW9uIHsgVW5z
cGVjaWZpZWQsIENsYXNzLCBSZWZlcmVuY2UsIFBvaW50ZXIsIENvbnN0Q2hhclN0YXIgfTsKICAg
IFNwZWNpZmljYXRpb24gZ3NwZWM7CiAgICBTcGVjaWZpY2F0aW9uIHNzcGVjOwoKICAgIGVudW0g
RmxhZ3MgewogICAgICAgIFVucmVzb2x2ZWRFbnVtID0gMHgwMDAwMDAwMSwKICAgICAgICBVbnJl
c29sdmVkU2V0ID0gMHgwMDAwMDAwMiwKICAgICAgICBVbnJlc29sdmVkRW51bU9yU2V0ID0gMHgw
MDAwMDAwNCwKICAgICAgICBVbnJlc29sdmVkU3RvcmVkID0gMHgwMDAwMDAwOCwKICAgICAgICBV
bnJlc29sdmVkRGVzaWduYWJsZSA9IDB4MDAwMDAwMTAsCiAgICAgICAgTm90RGVzaWduYWJsZSA9
IDB4MDAwMDAwMjAsCiAgICAgICAgTm90U3RvcmVkID0gMHgwMDAwMDA0MCwKICAgICAgICBTdGRT
ZXQgPSAweDAwMDAwMDgwCiAgICB9OwoKICAgIGJvb2wgdGVzdEZsYWdzKCB1aW50IGYgKSBjb25z
dDsKICAgIHZvaWQgc2V0RmxhZ3MoIHVpbnQgZiApOwogICAgdm9pZCBjbGVhckZsYWdzKCB1aW50
IGYgKTsKCnByaXZhdGU6CiAgICB1aW50IGZsYWdzOwp9OwoKCnN0cnVjdCBRQ2xhc3NJbmZvCnsK
ICAgIGNvbnN0IGNoYXIqIG5hbWU7CiAgICBjb25zdCBjaGFyKiB2YWx1ZTsKfTsKCmNsYXNzIFFN
ZXRhT2JqZWN0UHJpdmF0ZTsKCmNsYXNzIFFNZXRhT2JqZWN0CnsKcHVibGljOgogICAgUU1ldGFP
YmplY3QoIGNvbnN0IGNoYXIgKmNsYXNzX25hbWUsIGNvbnN0IGNoYXIgKnN1cGVyY2xhc3NfbmFt
ZSwKICAgICAgICAgICAgICAgICBRTWV0YURhdGEgKnNsb3RfZGF0YSwgaW50IG5fc2xvdHMsCiAg
ICAgICAgICAgICAgICAgUU1ldGFEYXRhICpzaWduYWxfZGF0YSwgaW50IG5fc2lnbmFscyApOwog
ICAgUU1ldGFPYmplY3QoIGNvbnN0IGNoYXIgKmNsYXNzX25hbWUsIGNvbnN0IGNoYXIgKnN1cGVy
Y2xhc3NfbmFtZSwKICAgICAgICAgICAgICAgICBRTWV0YURhdGEgKnNsb3RfZGF0YSwgaW50IG5f
c2xvdHMsCiAgICAgICAgICAgICAgICAgUU1ldGFEYXRhICpzaWduYWxfZGF0YSwgaW50IG5fc2ln
bmFscywKCiAgICAgICAgICAgICAgICAgUU1ldGFQcm9wZXJ0eSAqcHJvcF9kYXRhLCBpbnQgbl9w
cm9wcywKICAgICAgICAgICAgICAgICBRTWV0YUVudW0gKmVudW1fZGF0YSwgaW50IG5fZW51bXMs
CgogICAgICAgICAgICAgICAgIFFDbGFzc0luZm8gKmNsYXNzX2luZm8sIGludCBuX2luZm8gKTsK
CgogICAgdmlydHVhbCB+UU1ldGFPYmplY3QoKTsKCiAgICBjb25zdCBjaGFyICpjbGFzc05hbWUo
KSBjb25zdCB7IHJldHVybiBjbGFzc25hbWU7IH0KICAgIGNvbnN0IGNoYXIgKnN1cGVyQ2xhc3NO
YW1lKCkgY29uc3QgeyByZXR1cm4gc3VwZXJjbGFzc25hbWU7IH0KCiAgICBRTWV0YU9iamVjdCAq
c3VwZXJDbGFzcygpIGNvbnN0IHsgcmV0dXJuIHN1cGVyY2xhc3M7IH0KCiAgICBib29sIGluaGVy
aXRzKCBjb25zdCBjaGFyKiBjbG5hbWUgKSBjb25zdDsKCiAgICBpbnQgbnVtU2xvdHMoIGJvb2wg
c3VwZXIgPSBGQUxTRSApIGNvbnN0OwogICAgaW50IG51bVNpZ25hbHMoIGJvb2wgc3VwZXIgPSBG
QUxTRSApIGNvbnN0OwoKICAgIFFNZXRhRGF0YSAqc2xvdCggaW50IGluZGV4LCBib29sIHN1cGVy
ID0gRkFMU0UgKSBjb25zdDsKICAgIFFNZXRhRGF0YSAqc2lnbmFsKCBpbnQgaW5kZXgsIGJvb2wg
c3VwZXIgPSBGQUxTRSApIGNvbnN0OwoKICAgIFFNZXRhRGF0YSAqc2xvdCggY29uc3QgY2hhciAq
LCBib29sIHN1cGVyID0gRkFMU0UgKSBjb25zdDsKICAgIFFNZXRhRGF0YSAqc2lnbmFsKCBjb25z
dCBjaGFyICosIGJvb2wgc3VwZXIgPSBGQUxTRSApIGNvbnN0OwoKICAgIFFTdHJMaXN0IHNsb3RO
YW1lcyggYm9vbCBzdXBlciA9IEZBTFNFICkgY29uc3Q7CiAgICBRU3RyTGlzdCBzaWduYWxOYW1l
cyggYm9vbCBzdXBlciA9IEZBTFNFICkgY29uc3Q7CgogICAgaW50IG51bUNsYXNzSW5mbyggYm9v
bCBzdXBlciA9IEZBTFNFICkgY29uc3Q7CiAgICBRQ2xhc3NJbmZvICpjbGFzc0luZm8oIGludCBp
bmRleCwgYm9vbCBzdXBlciA9IEZBTFNFICkgY29uc3Q7CiAgICBjb25zdCBjaGFyICpjbGFzc0lu
Zm8oIGNvbnN0IGNoYXIqIG5hbWUsIGJvb2wgc3VwZXIgPSBGQUxTRSApIGNvbnN0OwoKCiAgICBj
b25zdCBRTWV0YVByb3BlcnR5ICpwcm9wZXJ0eSggY29uc3QgY2hhciogbmFtZSwgYm9vbCBzdXBl
ciA9IEZBTFNFICkgY29uc3Q7CiAgICBRU3RyTGlzdCBwcm9wZXJ0eU5hbWVzKCBib29sIHN1cGVy
ID0gRkFMU0UgKSBjb25zdDsKICAgIHZvaWQgcmVzb2x2ZVByb3BlcnR5KCBRTWV0YVByb3BlcnR5
KiBwcm9wICk7CgoKCgoKICAgIHN0YXRpYyBRTWV0YU9iamVjdCAqbmV3X21ldGFvYmplY3QoIGNv
bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUU1ldGFEYXRhICosIGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFFNZXRhRGF0YSAqLCBpbnQsCgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUU1ldGFQcm9wZXJ0eSAqcHJvcF9kYXRhLCBpbnQgbl9wcm9wcywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNZXRhRW51bSAqZW51bV9kYXRhLCBp
bnQgbl9lbnVtcywKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRQ2xh
c3NJbmZvICogY2xhc3NfaW5mbywgaW50IG5faW5mbyApOwogICAgc3RhdGljIFFNZXRhT2JqZWN0
ICpuZXdfbWV0YW9iamVjdCggY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWV0YURhdGEgKiwgaW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUU1ldGFEYXRhICosIGludCApOwogICAgc3Rh
dGljIFFNZXRhRGF0YSAqbmV3X21ldGFkYXRhKCBpbnQgKTsKICAgIHN0YXRpYyBRTWV0YURhdGE6
OkFjY2VzcyAqbmV3X21ldGFhY2Nlc3MoIGludCApOwogICAgdm9pZCBzZXRfc2xvdF9hY2Nlc3Mo
IFFNZXRhRGF0YTo6QWNjZXNzKiApOwogICAgUU1ldGFEYXRhOjpBY2Nlc3Mgc2xvdF9hY2Nlc3Mo
aW50IGluZGV4LCBib29sIHN1cGVyID0gRkFMU0UgKTsKICAgIHN0YXRpYyBRTWV0YUVudW0gKm5l
d19tZXRhZW51bSggaW50ICk7CiAgICBzdGF0aWMgUU1ldGFFbnVtOjpJdGVtICpuZXdfbWV0YWVu
dW1faXRlbSggaW50ICk7CgogICAgc3RhdGljIFFNZXRhUHJvcGVydHkgKm5ld19tZXRhcHJvcGVy
dHkoIGludCApOwoKICAgIHN0YXRpYyBRQ2xhc3NJbmZvICpuZXdfY2xhc3NpbmZvKCBpbnQgKTsK
CnByaXZhdGU6CiAgICBRTWVtYmVyRGljdCAqaW5pdCggUU1ldGFEYXRhICosIGludCApOwogICAg
UU1ldGFEYXRhICptZGF0YSggaW50IGNvZGUsIGNvbnN0IGNoYXIgKiwgYm9vbCApIGNvbnN0Owog
ICAgUU1ldGFEYXRhICptZGF0YSggaW50IGNvZGUsIGludCBpbmRleCwgYm9vbCBzdXBlciApIGNv
bnN0OwoKICAgIGNvbnN0IGNoYXIgKmNsYXNzbmFtZTsKICAgIGNvbnN0IGNoYXIgKnN1cGVyY2xh
c3NuYW1lOwogICAgUU1ldGFPYmplY3QgKnN1cGVyY2xhc3M7CiAgICBRTWV0YU9iamVjdFByaXZh
dGUgKmQ7CiAgICB2b2lkICpyZXNlcnZlZDsKICAgIFFNZXRhRGF0YSAqc2xvdERhdGE7CiAgICBR
TWVtYmVyRGljdCAqc2xvdERpY3Q7CiAgICBRTWV0YURhdGEgKnNpZ25hbERhdGE7CiAgICBRTWVt
YmVyRGljdCAqc2lnbmFsRGljdDsKICAgIFFNZXRhRW51bSAqZW51bWVyYXRvciggY29uc3QgY2hh
ciogbmFtZSwgYm9vbCBzdXBlciA9IEZBTFNFICkgY29uc3Q7Cgpwcml2YXRlOgoKICAgIFFNZXRh
T2JqZWN0KCBjb25zdCBRTWV0YU9iamVjdCAmICk7CiAgICBRTWV0YU9iamVjdCAmb3BlcmF0b3I9
KCBjb25zdCBRTWV0YU9iamVjdCAmICk7Cgp9OwoKCmlubGluZSBib29sIFFNZXRhUHJvcGVydHk6
OndyaXRhYmxlKCkgY29uc3QKeyByZXR1cm4gc2V0ICE9IDA7IH0KaW5saW5lIGJvb2wgUU1ldGFQ
cm9wZXJ0eTo6d3JpdGVhYmxlKCkgY29uc3QKeyByZXR1cm4gc2V0ICE9IDA7IH0KaW5saW5lIGJv
b2wgUU1ldGFQcm9wZXJ0eTo6dGVzdEZsYWdzKCB1aW50IGYgKSBjb25zdAp7IHJldHVybiAoZmxh
Z3MgJiAodWludClmKSAhPSAodWludCkwOyB9CmlubGluZSBib29sIFFNZXRhUHJvcGVydHk6Omlz
VmFsaWQoKSBjb25zdAp7IHJldHVybiBnZXQgIT0gMCAmJiAhdGVzdEZsYWdzKCBVbnJlc29sdmVk
RW51bSB8IFVucmVzb2x2ZWREZXNpZ25hYmxlIHwgVW5yZXNvbHZlZFN0b3JlZCApIDsgfQppbmxp
bmUgYm9vbCBRTWV0YVByb3BlcnR5Ojppc1NldFR5cGUoKSBjb25zdAp7IHJldHVybiAoIGVudW1E
YXRhICE9IDAgJiYgZW51bURhdGEtPnNldCApOyB9CmlubGluZSBib29sIFFNZXRhUHJvcGVydHk6
OmlzRW51bVR5cGUoKSBjb25zdAp7IHJldHVybiAoIGVudW1EYXRhICE9IDAgKTsgfQppbmxpbmUg
Ym9vbCBRTWV0YVByb3BlcnR5OjpkZXNpZ25hYmxlKCkgY29uc3QKeyByZXR1cm4gKCBpc1ZhbGlk
KCkgJiYgc2V0ICE9IDAgJiYgIXRlc3RGbGFncyggTm90RGVzaWduYWJsZSB8IFVucmVzb2x2ZWRE
ZXNpZ25hYmxlICkgKTsgfQppbmxpbmUgdm9pZCBRTWV0YVByb3BlcnR5OjpzZXRGbGFncyggdWlu
dCBmICkKeyBmbGFncyB8PSAodWludClmOyB9CmlubGluZSB2b2lkIFFNZXRhUHJvcGVydHk6OmNs
ZWFyRmxhZ3MoIHVpbnQgZiApCnsgZmxhZ3MgJj0gfih1aW50KWY7IH0KCgoKY2xhc3MgUU1ldGFP
YmplY3RJbml0IHsKcHVibGljOgogICAgUU1ldGFPYmplY3RJbml0KHZvaWQoKikoKSk7CiAgICBz
dGF0aWMgaW50IGluaXQoKTsKfTsKIyAxOCAia2VybmVsL21vY19xd2lkZ2V0LmNwcCIgMgojIDEg
Ii91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUvcWFwcGxpY2F0aW9uLmgi
IDEKIyA0MiAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xYXBwbGlj
YXRpb24uaCIKIyAxICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3F3
aWRnZXQuaCIgMQojIDQzICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRl
L3FhcHBsaWNhdGlvbi5oIiAyCiMgMSAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIv
aW5jbHVkZS9xYXNjaWlkaWN0LmgiIDEKIyA0MiAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQt
Mi4zLjIvaW5jbHVkZS9xYXNjaWlkaWN0LmgiCiMgMSAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQv
cXQtMi4zLjIvaW5jbHVkZS9xZ2RpY3QuaCIgMQojIDQ2ICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlM
RC9xdC0yLjMuMi9pbmNsdWRlL3FnZGljdC5oIgpjbGFzcyBRR0RpY3RJdGVyYXRvcjsKY2xhc3Mg
UUdESXRMaXN0OwoKCmNsYXNzIFFCYXNlQnVja2V0CnsKcHVibGljOgogICAgUUNvbGxlY3Rpb246
Okl0ZW0gZ2V0RGF0YSgpIHsgcmV0dXJuIGRhdGE7IH0KICAgIFFDb2xsZWN0aW9uOjpJdGVtIHNl
dERhdGEoIFFDb2xsZWN0aW9uOjpJdGVtIGQgKSB7IHJldHVybiBkYXRhID0gZDsgfQogICAgUUJh
c2VCdWNrZXQgKmdldE5leHQoKSB7IHJldHVybiBuZXh0OyB9CiAgICB2b2lkIHNldE5leHQoIFFC
YXNlQnVja2V0ICpuKSB7IG5leHQgPSBuOyB9CnByb3RlY3RlZDoKICAgIFFCYXNlQnVja2V0KCBR
Q29sbGVjdGlvbjo6SXRlbSBkLCBRQmFzZUJ1Y2tldCAqbiApIDogZGF0YShkKSwgbmV4dChuKSB7
fQogICAgUUNvbGxlY3Rpb246Okl0ZW0gZGF0YTsKICAgIFFCYXNlQnVja2V0ICpuZXh0Owp9OwoK
Y2xhc3MgUVN0cmluZ0J1Y2tldCA6IHB1YmxpYyBRQmFzZUJ1Y2tldAp7CnB1YmxpYzoKICAgIFFT
dHJpbmdCdWNrZXQoIGNvbnN0IFFTdHJpbmcgJmssIFFDb2xsZWN0aW9uOjpJdGVtIGQsIFFCYXNl
QnVja2V0ICpuICkKICAgICAgICA6IFFCYXNlQnVja2V0KGQsbiksIGtleShrKSB7fQogICAgY29u
c3QgUVN0cmluZyAmZ2V0S2V5KCkgY29uc3QgeyByZXR1cm4ga2V5OyB9CnByaXZhdGU6CiAgICBR
U3RyaW5nIGtleTsKfTsKCmNsYXNzIFFBc2NpaUJ1Y2tldCA6IHB1YmxpYyBRQmFzZUJ1Y2tldAp7
CnB1YmxpYzoKICAgIFFBc2NpaUJ1Y2tldCggY29uc3QgY2hhciAqaywgUUNvbGxlY3Rpb246Okl0
ZW0gZCwgUUJhc2VCdWNrZXQgKm4gKQogICAgICAgIDogUUJhc2VCdWNrZXQoZCxuKSwga2V5KGsp
IHt9CiAgICBjb25zdCBjaGFyICpnZXRLZXkoKSBjb25zdCB7IHJldHVybiBrZXk7IH0KcHJpdmF0
ZToKICAgIGNvbnN0IGNoYXIgKmtleTsKfTsKCmNsYXNzIFFJbnRCdWNrZXQgOiBwdWJsaWMgUUJh
c2VCdWNrZXQKewpwdWJsaWM6CiAgICBRSW50QnVja2V0KCBsb25nIGssIFFDb2xsZWN0aW9uOjpJ
dGVtIGQsIFFCYXNlQnVja2V0ICpuICkKICAgICAgICA6IFFCYXNlQnVja2V0KGQsbiksIGtleShr
KSB7fQogICAgbG9uZyBnZXRLZXkoKSBjb25zdCB7IHJldHVybiBrZXk7IH0KcHJpdmF0ZToKICAg
IGxvbmcga2V5Owp9OwoKY2xhc3MgUVB0ckJ1Y2tldCA6IHB1YmxpYyBRQmFzZUJ1Y2tldAp7CnB1
YmxpYzoKICAgIFFQdHJCdWNrZXQoIHZvaWQgKmssIFFDb2xsZWN0aW9uOjpJdGVtIGQsIFFCYXNl
QnVja2V0ICpuICkKICAgICAgICA6IFFCYXNlQnVja2V0KGQsbiksIGtleShrKSB7fQogICAgdm9p
ZCAqZ2V0S2V5KCkgY29uc3QgeyByZXR1cm4ga2V5OyB9CnByaXZhdGU6CiAgICB2b2lkICprZXk7
Cn07CgoKY2xhc3MgUUdEaWN0IDogcHVibGljIFFDb2xsZWN0aW9uCnsKcHVibGljOgogICAgdWlu
dCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG51bUl0ZW1zOyB9CiAgICB1aW50IHNpemUoKSBjb25z
dCB7IHJldHVybiB2bGVuOyB9CiAgICBRQ29sbGVjdGlvbjo6SXRlbSBsb29rX3N0cmluZyggY29u
c3QgUVN0cmluZyYga2V5LCBRQ29sbGVjdGlvbjo6SXRlbSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgKTsKICAgIFFDb2xsZWN0aW9uOjpJdGVtIGxvb2tfYXNjaWkoIGNv
bnN0IGNoYXIgKmtleSwgUUNvbGxlY3Rpb246Okl0ZW0sIGludCApOwogICAgUUNvbGxlY3Rpb246
Okl0ZW0gbG9va19pbnQoIGxvbmcga2V5LCBRQ29sbGVjdGlvbjo6SXRlbSwgaW50ICk7CiAgICBR
Q29sbGVjdGlvbjo6SXRlbSBsb29rX3B0ciggdm9pZCAqa2V5LCBRQ29sbGVjdGlvbjo6SXRlbSwg
aW50ICk7CgogICAgUURhdGFTdHJlYW0gJnJlYWQoIFFEYXRhU3RyZWFtICYgKTsKICAgIFFEYXRh
U3RyZWFtICZ3cml0ZSggUURhdGFTdHJlYW0gJiApIGNvbnN0OwoKcHJvdGVjdGVkOgogICAgZW51
bSBLZXlUeXBlIHsgU3RyaW5nS2V5LCBBc2NpaUtleSwgSW50S2V5LCBQdHJLZXkgfTsKCiAgICBR
R0RpY3QoIHVpbnQgbGVuLCBLZXlUeXBlIGt0LCBib29sIGNzLCBib29sIGNrICk7CiAgICBRR0Rp
Y3QoIGNvbnN0IFFHRGljdCAmICk7CiAgIH5RR0RpY3QoKTsKCiAgICBRR0RpY3QgJm9wZXJhdG9y
PSggY29uc3QgUUdEaWN0ICYgKTsKCiAgICBib29sIHJlbW92ZV9zdHJpbmcoIGNvbnN0IFFTdHJp
bmcgJmtleSwgUUNvbGxlY3Rpb246Okl0ZW0gaXRlbT0wICk7CiAgICBib29sIHJlbW92ZV9hc2Np
aSggY29uc3QgY2hhciAqa2V5LCBRQ29sbGVjdGlvbjo6SXRlbSBpdGVtPTAgKTsKICAgIGJvb2wg
cmVtb3ZlX2ludCggbG9uZyBrZXksIFFDb2xsZWN0aW9uOjpJdGVtIGl0ZW09MCApOwogICAgYm9v
bCByZW1vdmVfcHRyKCB2b2lkICprZXksIFFDb2xsZWN0aW9uOjpJdGVtIGl0ZW09MCApOwogICAg
UUNvbGxlY3Rpb246Okl0ZW0gdGFrZV9zdHJpbmcoIGNvbnN0IFFTdHJpbmcgJmtleSApOwogICAg
UUNvbGxlY3Rpb246Okl0ZW0gdGFrZV9hc2NpaSggY29uc3QgY2hhciAqa2V5ICk7CiAgICBRQ29s
bGVjdGlvbjo6SXRlbSB0YWtlX2ludCggbG9uZyBrZXkgKTsKICAgIFFDb2xsZWN0aW9uOjpJdGVt
IHRha2VfcHRyKCB2b2lkICprZXkgKTsKCiAgICB2b2lkIGNsZWFyKCk7CiAgICB2b2lkIHJlc2l6
ZSggdWludCApOwoKICAgIGludCBoYXNoS2V5U3RyaW5nKCBjb25zdCBRU3RyaW5nICYgKTsKICAg
IGludCBoYXNoS2V5QXNjaWkoIGNvbnN0IGNoYXIgKiApOwoKICAgIHZvaWQgc3RhdGlzdGljcygp
IGNvbnN0OwoKCiAgICB2aXJ0dWFsIFFEYXRhU3RyZWFtICZyZWFkKCBRRGF0YVN0cmVhbSAmLCBR
Q29sbGVjdGlvbjo6SXRlbSAmICk7CiAgICB2aXJ0dWFsIFFEYXRhU3RyZWFtICZ3cml0ZSggUURh
dGFTdHJlYW0gJiwgUUNvbGxlY3Rpb246Okl0ZW0gKSBjb25zdDsKCnByaXZhdGU6CiAgICBRQmFz
ZUJ1Y2tldCAqKnZlYzsKICAgIHVpbnQgdmxlbjsKICAgIHVpbnQgbnVtSXRlbXM7CiAgICB1aW50
IGtleXR5cGUgOiAyOwogICAgdWludCBjYXNlcyA6IDE7CiAgICB1aW50IGNvcHlrIDogMTsKICAg
IFFHREl0TGlzdCAqaXRlcmF0b3JzOwogICAgdm9pZCB1bmxpbmtfY29tbW9uKCBpbnQsIFFCYXNl
QnVja2V0ICosIFFCYXNlQnVja2V0ICogKTsKICAgIFFTdHJpbmdCdWNrZXQgKnVubGlua19zdHJp
bmcoIGNvbnN0IFFTdHJpbmcgJiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFD
b2xsZWN0aW9uOjpJdGVtIGl0ZW0gPSAwICk7CiAgICBRQXNjaWlCdWNrZXQgKnVubGlua19hc2Np
aSggY29uc3QgY2hhciAqLCBRQ29sbGVjdGlvbjo6SXRlbSBpdGVtID0gMCApOwogICAgUUludEJ1
Y2tldCAqdW5saW5rX2ludCggbG9uZywgUUNvbGxlY3Rpb246Okl0ZW0gaXRlbSA9IDAgKTsKICAg
IFFQdHJCdWNrZXQgKnVubGlua19wdHIoIHZvaWQgKiwgUUNvbGxlY3Rpb246Okl0ZW0gaXRlbSA9
IDAgKTsKICAgIHZvaWQgaW5pdCggdWludCwgS2V5VHlwZSwgYm9vbCwgYm9vbCApOwogICAgZnJp
ZW5kIGNsYXNzIFFHRGljdEl0ZXJhdG9yOwp9OwoKCmNsYXNzIFFHRGljdEl0ZXJhdG9yCnsKZnJp
ZW5kIGNsYXNzIFFHRGljdDsKcHVibGljOgogICAgUUdEaWN0SXRlcmF0b3IoIGNvbnN0IFFHRGlj
dCAmICk7CiAgICBRR0RpY3RJdGVyYXRvciggY29uc3QgUUdEaWN0SXRlcmF0b3IgJiApOwogICAg
UUdEaWN0SXRlcmF0b3IgJm9wZXJhdG9yPSggY29uc3QgUUdEaWN0SXRlcmF0b3IgJiApOwogICB+
UUdEaWN0SXRlcmF0b3IoKTsKCiAgICBRQ29sbGVjdGlvbjo6SXRlbSB0b0ZpcnN0KCk7CgogICAg
UUNvbGxlY3Rpb246Okl0ZW0gZ2V0KCkgY29uc3Q7CiAgICBRU3RyaW5nIGdldEtleVN0cmluZygp
IGNvbnN0OwogICAgY29uc3QgY2hhciAqZ2V0S2V5QXNjaWkoKSBjb25zdDsKICAgIGxvbmcgZ2V0
S2V5SW50KCkgY29uc3Q7CiAgICB2b2lkICpnZXRLZXlQdHIoKSBjb25zdDsKCiAgICBRQ29sbGVj
dGlvbjo6SXRlbSBvcGVyYXRvcigpKCk7CiAgICBRQ29sbGVjdGlvbjo6SXRlbSBvcGVyYXRvcisr
KCk7CiAgICBRQ29sbGVjdGlvbjo6SXRlbSBvcGVyYXRvcis9KHVpbnQpOwoKcHJvdGVjdGVkOgog
ICAgUUdEaWN0ICpkaWN0OwoKcHJpdmF0ZToKICAgIFFCYXNlQnVja2V0ICpjdXJOb2RlOwogICAg
dWludCBjdXJJbmRleDsKfTsKCmlubGluZSBRQ29sbGVjdGlvbjo6SXRlbSBRR0RpY3RJdGVyYXRv
cjo6Z2V0KCkgY29uc3QKewogICAgcmV0dXJuIGN1ck5vZGUgPyBjdXJOb2RlLT5nZXREYXRhKCkg
OiAwOwp9CgppbmxpbmUgUVN0cmluZyBRR0RpY3RJdGVyYXRvcjo6Z2V0S2V5U3RyaW5nKCkgY29u
c3QKewogICAgcmV0dXJuIGN1ck5vZGUgPyAoKFFTdHJpbmdCdWNrZXQqKWN1ck5vZGUpLT5nZXRL
ZXkoKSA6IFFTdHJpbmc6Om51bGw7Cn0KCmlubGluZSBjb25zdCBjaGFyICpRR0RpY3RJdGVyYXRv
cjo6Z2V0S2V5QXNjaWkoKSBjb25zdAp7CiAgICByZXR1cm4gY3VyTm9kZSA/ICgoUUFzY2lpQnVj
a2V0KiljdXJOb2RlKS0+Z2V0S2V5KCkgOiAwOwp9CgppbmxpbmUgbG9uZyBRR0RpY3RJdGVyYXRv
cjo6Z2V0S2V5SW50KCkgY29uc3QKewogICAgcmV0dXJuIGN1ck5vZGUgPyAoKFFJbnRCdWNrZXQq
KWN1ck5vZGUpLT5nZXRLZXkoKSA6IDA7Cn0KCmlubGluZSB2b2lkICpRR0RpY3RJdGVyYXRvcjo6
Z2V0S2V5UHRyKCkgY29uc3QKewogICAgcmV0dXJuIGN1ck5vZGUgPyAoKFFQdHJCdWNrZXQqKWN1
ck5vZGUpLT5nZXRLZXkoKSA6IDA7Cn0KIyA0MyAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQt
Mi4zLjIvaW5jbHVkZS9xYXNjaWlkaWN0LmgiIDIKCgoKdGVtcGxhdGU8Y2xhc3MgdHlwZT4gY2xh
c3MgUUFzY2lpRGljdCA6IHB1YmxpYyBRR0RpY3QKewpwdWJsaWM6CiAgICBRQXNjaWlEaWN0KGlu
dCBzaXplPTE3LCBib29sIGNhc2VTZW5zaXRpdmU9VFJVRSwgYm9vbCBjb3B5S2V5cz1UUlVFICkK
ICAgICAgICA6IFFHRGljdChzaXplLEFzY2lpS2V5LGNhc2VTZW5zaXRpdmUsY29weUtleXMpIHt9
CiAgICBRQXNjaWlEaWN0KCBjb25zdCBRQXNjaWlEaWN0PHR5cGU+ICZkICkgOiBRR0RpY3QoZCkg
e30KICAgflFBc2NpaURpY3QoKSB7IGNsZWFyKCk7IH0KICAgIFFBc2NpaURpY3Q8dHlwZT4gJm9w
ZXJhdG9yPShjb25zdCBRQXNjaWlEaWN0PHR5cGU+ICZkKQogICAgICAgICAgICAgICAgICAgICAg
ICB7IHJldHVybiAoUUFzY2lpRGljdDx0eXBlPiYpUUdEaWN0OjpvcGVyYXRvcj0oZCk7IH0KICAg
IHVpbnQgY291bnQoKSBjb25zdCB7IHJldHVybiBRR0RpY3Q6OmNvdW50KCk7IH0KICAgIHVpbnQg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIFFHRGljdDo6c2l6ZSgpOyB9CiAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiBRR0RpY3Q6OmNvdW50KCkgPT0gMDsgfQoKICAgIHZvaWQgaW5zZXJ0
KCBjb25zdCBjaGFyICprLCBjb25zdCB0eXBlICpkICkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsgUUdEaWN0Ojpsb29rX2FzY2lpKGssKEl0ZW0pZCwxKTsgfQogICAg
dm9pZCByZXBsYWNlKCBjb25zdCBjaGFyICprLCBjb25zdCB0eXBlICpkICkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgUUdEaWN0Ojpsb29rX2FzY2lpKGssKEl0ZW0p
ZCwyKTsgfQogICAgYm9vbCByZW1vdmUoIGNvbnN0IGNoYXIgKmsgKSB7IHJldHVybiBRR0RpY3Q6
OnJlbW92ZV9hc2NpaShrKTsgfQogICAgdHlwZSAqdGFrZSggY29uc3QgY2hhciAqayApIHsgcmV0
dXJuICh0eXBlICopUUdEaWN0Ojp0YWtlX2FzY2lpKGspOyB9CiAgICB0eXBlICpmaW5kKCBjb25z
dCBjaGFyICprICkgY29uc3QKICAgICAgICAgICAgICAgIHsgcmV0dXJuICh0eXBlICopKChRR0Rp
Y3QqKXRoaXMpLT5RR0RpY3Q6Omxvb2tfYXNjaWkoaywwLDApOyB9CiAgICB0eXBlICpvcGVyYXRv
cltdKCBjb25zdCBjaGFyICprICkgY29uc3QKICAgICAgICAgICAgICAgIHsgcmV0dXJuICh0eXBl
ICopKChRR0RpY3QqKXRoaXMpLT5RR0RpY3Q6Omxvb2tfYXNjaWkoaywwLDApOyB9CgogICAgdm9p
ZCBjbGVhcigpIHsgUUdEaWN0OjpjbGVhcigpOyB9CiAgICB2b2lkIHJlc2l6ZSggdWludCBuICkg
eyBRR0RpY3Q6OnJlc2l6ZShuKTsgfQogICAgdm9pZCBzdGF0aXN0aWNzKCkgY29uc3QgeyBRR0Rp
Y3Q6OnN0YXRpc3RpY3MoKTsgfQpwcml2YXRlOgogICAgdm9pZCBkZWxldGVJdGVtKCBJdGVtIGQg
KTsKfTsKCgp0ZW1wbGF0ZTw+IGlubGluZSB2b2lkIFFBc2NpaURpY3Q8dm9pZD46OmRlbGV0ZUl0
ZW0oIEl0ZW0gKQp7Cn0KCgp0ZW1wbGF0ZTxjbGFzcyB0eXBlPiBpbmxpbmUgdm9pZCBRQXNjaWlE
aWN0PHR5cGU+OjpkZWxldGVJdGVtKCBRQ29sbGVjdGlvbjo6SXRlbSBkICkKewogICAgaWYgKCBk
ZWxfaXRlbSApIGRlbGV0ZSAodHlwZSAqKWQ7Cn0KCgp0ZW1wbGF0ZTxjbGFzcyB0eXBlPiBjbGFz
cyBRQXNjaWlEaWN0SXRlcmF0b3IgOiBwdWJsaWMgUUdEaWN0SXRlcmF0b3IKewpwdWJsaWM6CiAg
ICBRQXNjaWlEaWN0SXRlcmF0b3IoY29uc3QgUUFzY2lpRGljdDx0eXBlPiAmZCkKICAgICAgICA6
IFFHRGljdEl0ZXJhdG9yKChRR0RpY3QgJilkKSB7fQogICB+UUFzY2lpRGljdEl0ZXJhdG9yKCkg
e30KICAgIHVpbnQgY291bnQoKSBjb25zdCB7IHJldHVybiBkaWN0LT5jb3VudCgpOyB9CiAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBkaWN0LT5jb3VudCgpID09IDA7IH0KICAgIHR5
cGUgKnRvRmlyc3QoKSB7IHJldHVybiAodHlwZSAqKVFHRGljdEl0ZXJhdG9yOjp0b0ZpcnN0KCk7
IH0KICAgIG9wZXJhdG9yIHR5cGUgKigpIGNvbnN0IHsgcmV0dXJuICh0eXBlICopUUdEaWN0SXRl
cmF0b3I6OmdldCgpOyB9CiAgICB0eXBlICpjdXJyZW50KCkgY29uc3QgeyByZXR1cm4gKHR5cGUg
KilRR0RpY3RJdGVyYXRvcjo6Z2V0KCk7IH0KICAgIGNvbnN0IGNoYXIgKmN1cnJlbnRLZXkoKSBj
b25zdCB7IHJldHVybiBRR0RpY3RJdGVyYXRvcjo6Z2V0S2V5QXNjaWkoKTsgfQogICAgdHlwZSAq
b3BlcmF0b3IoKSgpIHsgcmV0dXJuICh0eXBlICopUUdEaWN0SXRlcmF0b3I6Om9wZXJhdG9yKCko
KTsgfQogICAgdHlwZSAqb3BlcmF0b3IrKygpIHsgcmV0dXJuICh0eXBlICopUUdEaWN0SXRlcmF0
b3I6Om9wZXJhdG9yKysoKTsgfQogICAgdHlwZSAqb3BlcmF0b3IrPSh1aW50IGopIHsgcmV0dXJu
ICh0eXBlICopUUdEaWN0SXRlcmF0b3I6Om9wZXJhdG9yKz0oaik7fQp9OwojIDQ0ICIvdXNyL3Ny
Yy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3FhcHBsaWNhdGlvbi5oIiAyCiMgMSAi
L3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xcGFsZXR0ZS5oIiAxCiMg
NDUgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2luY2x1ZGUvcWFwcGxpY2F0aW9u
LmgiIDIKIyAxICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3F0cmFu
c2xhdG9yLmgiIDEKIyA0NCAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVk
ZS9xdHJhbnNsYXRvci5oIgojIDEgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3F0LTIuMy4yL2lu
Y2x1ZGUvcWludGRpY3QuaCIgMQojIDQ2ICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMu
Mi9pbmNsdWRlL3FpbnRkaWN0LmgiCnRlbXBsYXRlPGNsYXNzIHR5cGU+IGNsYXNzIFFJbnREaWN0
IDogcHVibGljIFFHRGljdAp7CnB1YmxpYzoKICAgIFFJbnREaWN0KGludCBzaXplPTE3KSA6IFFH
RGljdChzaXplLEludEtleSwwLDApIHt9CiAgICBRSW50RGljdCggY29uc3QgUUludERpY3Q8dHlw
ZT4gJmQgKSA6IFFHRGljdChkKSB7fQogICB+UUludERpY3QoKSB7IGNsZWFyKCk7IH0KICAgIFFJ
bnREaWN0PHR5cGU+ICZvcGVyYXRvcj0oY29uc3QgUUludERpY3Q8dHlwZT4gJmQpCiAgICAgICAg
ICAgICAgICAgICAgICAgIHsgcmV0dXJuIChRSW50RGljdDx0eXBlPiYpUUdEaWN0OjpvcGVyYXRv
cj0oZCk7IH0KICAgIHVpbnQgY291bnQoKSBjb25zdCB7IHJldHVybiBRR0RpY3Q6OmNvdW50KCk7
IH0KICAgIHVpbnQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIFFHRGljdDo6c2l6ZSgpOyB9CiAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBRR0RpY3Q6OmNvdW50KCkgPT0gMDsgfQogICAg
dm9pZCBpbnNlcnQoIGxvbmcgaywgY29uc3QgdHlwZSAqZCApCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7IFFHRGljdDo6bG9va19pbnQoaywoSXRlbSlkLDEpOyB9CiAg
ICB2b2lkIHJlcGxhY2UoIGxvbmcgaywgY29uc3QgdHlwZSAqZCApCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7IFFHRGljdDo6bG9va19pbnQoaywoSXRlbSlkLDIpOyB9
CiAgICBib29sIHJlbW92ZSggbG9uZyBrICkgeyByZXR1cm4gUUdEaWN0OjpyZW1vdmVfaW50KGsp
OyB9CiAgICB0eXBlICp0YWtlKCBsb25nIGsgKSB7IHJldHVybiAodHlwZSopUUdEaWN0Ojp0YWtl
X2ludChrKTsgfQogICAgdHlwZSAqZmluZCggbG9uZyBrICkgY29uc3QKICAgICAgICAgICAgICAg
IHsgcmV0dXJuICh0eXBlICopKChRR0RpY3QqKXRoaXMpLT5RR0RpY3Q6Omxvb2tfaW50KGssMCww
KTsgfQogICAgdHlwZSAqb3BlcmF0b3JbXSggbG9uZyBrICkgY29uc3QKICAgICAgICAgICAgICAg
IHsgcmV0dXJuICh0eXBlICopKChRR0RpY3QqKXRoaXMpLT5RR0RpY3Q6Omxvb2tfaW50KGssMCww
KTsgfQogICAgdm9pZCBjbGVhcigpIHsgUUdEaWN0OjpjbGVhcigpOyB9CiAgICB2b2lkIHJlc2l6
ZSggdWludCBuICkgeyBRR0RpY3Q6OnJlc2l6ZShuKTsgfQogICAgdm9pZCBzdGF0aXN0aWNzKCkg
Y29uc3QgeyBRR0RpY3Q6OnN0YXRpc3RpY3MoKTsgfQpwcml2YXRlOgogICAgdm9pZCBkZWxldGVJ
dGVtKCBJdGVtIGQgKTsKfTsKCgp0ZW1wbGF0ZTw+IGlubGluZSB2b2lkIFFJbnREaWN0PHZvaWQ+
OjpkZWxldGVJdGVtKCBRQ29sbGVjdGlvbjo6SXRlbSApCnsKfQoKCnRlbXBsYXRlPGNsYXNzIHR5
cGU+IGlubGluZSB2b2lkIFFJbnREaWN0PHR5cGU+OjpkZWxldGVJdGVtKCBRQ29sbGVjdGlvbjo6
SXRlbSBkICkKewogICAgaWYgKCBkZWxfaXRlbSApIGRlbGV0ZSAodHlwZSAqKWQ7Cn0KCnRlbXBs
YXRlPGNsYXNzIHR5cGU+IGNsYXNzIFFJbnREaWN0SXRlcmF0b3IgOiBwdWJsaWMgUUdEaWN0SXRl
cmF0b3IKewpwdWJsaWM6CiAgICBRSW50RGljdEl0ZXJhdG9yKGNvbnN0IFFJbnREaWN0PHR5cGU+
ICZkKSA6UUdEaWN0SXRlcmF0b3IoKFFHRGljdCAmKWQpIHt9CiAgIH5RSW50RGljdEl0ZXJhdG9y
KCkge30KICAgIHVpbnQgY291bnQoKSBjb25zdCB7IHJldHVybiBkaWN0LT5jb3VudCgpOyB9CiAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBkaWN0LT5jb3VudCgpID09IDA7IH0KICAg
IHR5cGUgKnRvRmlyc3QoKSB7IHJldHVybiAodHlwZSAqKVFHRGljdEl0ZXJhdG9yOjp0b0ZpcnN0
KCk7IH0KICAgIG9wZXJhdG9yIHR5cGUgKigpIGNvbnN0IHsgcmV0dXJuICh0eXBlICopUUdEaWN0
SXRlcmF0b3I6OmdldCgpOyB9CiAgICB0eXBlICpjdXJyZW50KCkgY29uc3QgeyByZXR1cm4gKHR5
cGUgKilRR0RpY3RJdGVyYXRvcjo6Z2V0KCk7IH0KICAgIGxvbmcgY3VycmVudEtleSgpIGNvbnN0
IHsgcmV0dXJuIFFHRGljdEl0ZXJhdG9yOjpnZXRLZXlJbnQoKTsgfQogICAgdHlwZSAqb3BlcmF0
b3IoKSgpIHsgcmV0dXJuICh0eXBlICopUUdEaWN0SXRlcmF0b3I6Om9wZXJhdG9yKCkoKTsgfQog
ICAgdHlwZSAqb3BlcmF0b3IrKygpIHsgcmV0dXJuICh0eXBlICopUUdEaWN0SXRlcmF0b3I6Om9w
ZXJhdG9yKysoKTsgfQogICAgdHlwZSAqb3BlcmF0b3IrPSh1aW50IGopIHsgcmV0dXJuICh0eXBl
ICopUUdEaWN0SXRlcmF0b3I6Om9wZXJhdG9yKz0oaik7fQp9OwojIDQ1ICIvdXNyL3NyYy9wYWNr
YWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3F0cmFuc2xhdG9yLmgiIDIKCgoKCmNsYXNzIFFU
cmFuc2xhdG9yUHJpdmF0ZTsKCgpjbGFzcyBRVHJhbnNsYXRvck1lc3NhZ2UKewpwdWJsaWM6CiAg
ICBRVHJhbnNsYXRvck1lc3NhZ2UoKTsKICAgIFFUcmFuc2xhdG9yTWVzc2FnZSggY29uc3QgY2hh
ciAqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBzb3VyY2VU
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogY29tbWVudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgUVN0cmluZyYgdHJhbnNsYXRpb24gPSBRU3RyaW5nOjpu
dWxsICk7CiAgICBRVHJhbnNsYXRvck1lc3NhZ2UoIFFEYXRhU3RyZWFtICYgKTsKICAgIFFUcmFu
c2xhdG9yTWVzc2FnZSggY29uc3QgUVRyYW5zbGF0b3JNZXNzYWdlICYgbSApOwoKICAgIFFUcmFu
c2xhdG9yTWVzc2FnZSAmIG9wZXJhdG9yPSggY29uc3QgUVRyYW5zbGF0b3JNZXNzYWdlICYgbSAp
OwoKICAgIHVpbnQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIGg7IH0KICAgIGNvbnN0IGNoYXIgKmNv
bnRleHQoKSBjb25zdCB7IHJldHVybiBjeDsgfQogICAgY29uc3QgY2hhciAqc291cmNlVGV4dCgp
IGNvbnN0IHsgcmV0dXJuIHN0OyB9CiAgICBjb25zdCBjaGFyICpjb21tZW50KCkgY29uc3QgeyBy
ZXR1cm4gY207IH0KCiAgICB2b2lkIHNldFRyYW5zbGF0aW9uKCBjb25zdCBRU3RyaW5nICYgdHJh
bnNsYXRpb24gKSB7IHRuID0gdHJhbnNsYXRpb247IH0KICAgIFFTdHJpbmcgdHJhbnNsYXRpb24o
KSBjb25zdCB7IHJldHVybiB0bjsgfQoKICAgIGVudW0gUHJlZml4IHsgTm9QcmVmaXgsIEhhc2gs
IEhhc2hDb250ZXh0LCBIYXNoQ29udGV4dFNvdXJjZVRleHQsCiAgICAgICAgICAgICAgICAgIEhh
c2hDb250ZXh0U291cmNlVGV4dENvbW1lbnQgfTsKICAgIHZvaWQgd3JpdGUoIFFEYXRhU3RyZWFt
ICYgcywgYm9vbCBzdHJpcCwKICAgICAgICAgICAgICAgIFByZWZpeCBwcmVmaXggPSBIYXNoQ29u
dGV4dFNvdXJjZVRleHRDb21tZW50ICkgY29uc3Q7CiAgICBQcmVmaXggY29tbW9uUHJlZml4KCBj
b25zdCBRVHJhbnNsYXRvck1lc3NhZ2UmICkgY29uc3Q7CgogICAgYm9vbCBvcGVyYXRvcj09KCBj
b25zdCBRVHJhbnNsYXRvck1lc3NhZ2UmIG0gKSBjb25zdDsKICAgIGJvb2wgb3BlcmF0b3IhPSgg
Y29uc3QgUVRyYW5zbGF0b3JNZXNzYWdlJiBtICkgY29uc3QKICAgIHsgcmV0dXJuICFvcGVyYXRv
cj09KCBtICk7IH0KICAgIGJvb2wgb3BlcmF0b3I8KCBjb25zdCBRVHJhbnNsYXRvck1lc3NhZ2Um
IG0gKSBjb25zdDsKICAgIGJvb2wgb3BlcmF0b3I8PSggY29uc3QgUVRyYW5zbGF0b3JNZXNzYWdl
JiBtICkgY29uc3QKICAgIHsgcmV0dXJuICFvcGVyYXRvcj4oIG0gKTsgfQogICAgYm9vbCBvcGVy
YXRvcj4oIGNvbnN0IFFUcmFuc2xhdG9yTWVzc2FnZSYgbSApIGNvbnN0CiAgICB7IHJldHVybiB0
aGlzLT5vcGVyYXRvcjwoIG0gKTsgfQogICAgYm9vbCBvcGVyYXRvcj49KCBjb25zdCBRVHJhbnNs
YXRvck1lc3NhZ2UmIG0gKSBjb25zdAogICAgeyByZXR1cm4gIW9wZXJhdG9yPCggbSApOyB9Cgpw
cml2YXRlOgogICAgdWludCBoOwogICAgUUNTdHJpbmcgY3g7CiAgICBRQ1N0cmluZyBzdDsKICAg
IFFDU3RyaW5nIGNtOwogICAgUVN0cmluZyB0bjsKCiAgICBlbnVtIFRhZyB7IFRhZ19FbmQgPSAx
LCBUYWdfU291cmNlVGV4dDE2LCBUYWdfVHJhbnNsYXRpb24sIFRhZ19Db250ZXh0MTYsCiAgICAg
ICAgICAgICAgIFRhZ19IYXNoLCBUYWdfU291cmNlVGV4dCwgVGFnX0NvbnRleHQsIFRhZ19Db21t
ZW50LAogICAgICAgICAgICAgICBUYWdfT2Jzb2xldGUxIH07Cn07CgoKY2xhc3MgUVRyYW5zbGF0
b3I6IHB1YmxpYyBRT2JqZWN0CnsKICAgIHB1YmxpYzogUU1ldGFPYmplY3QgKm1ldGFPYmplY3Qo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNNZXRhT2JqZWN0KCk7IH0gY29uc3QgY2hhciAqY2xhc3NO
YW1lKCkgY29uc3Q7IHN0YXRpYyBRTWV0YU9iamVjdCogc3RhdGljTWV0YU9iamVjdCgpOyBzdGF0
aWMgUVN0cmluZyB0cihjb25zdCBjaGFyKik7IHN0YXRpYyBRU3RyaW5nIHRyKGNvbnN0IGNoYXIq
LCBjb25zdCBjaGFyKik7IHByb3RlY3RlZDogdm9pZCBpbml0TWV0YU9iamVjdCgpOyBwcml2YXRl
OiBzdGF0aWMgUU1ldGFPYmplY3QgKm1ldGFPYmo7CnB1YmxpYzoKICAgIFFUcmFuc2xhdG9yKCBR
T2JqZWN0ICogcGFyZW50LCBjb25zdCBjaGFyICogbmFtZSA9IDAgKTsKICAgIH5RVHJhbnNsYXRv
cigpOwoKCiAgICBRU3RyaW5nIGZpbmQoIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25z
dCBjaGFyICogKSBjb25zdDsKCiAgICB2aXJ0dWFsIFFTdHJpbmcgZmluZCggY29uc3QgY2hhciAq
LCBjb25zdCBjaGFyICogKSBjb25zdDsKCiAgICBRVHJhbnNsYXRvck1lc3NhZ2UgZmluZE1lc3Nh
Z2UoIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICogKSBjb25zdDsKCiAgICBib29sIGxvYWQoIGNvbnN0IFFT
dHJpbmcgJiBmaWxlbmFtZSwKICAgICAgICAgICAgICAgY29uc3QgUVN0cmluZyAmIGRpcmVjdG9y
eSA9IFFTdHJpbmc6Om51bGwsCiAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgJiBzZWFyY2hf
ZGVsaW1pdGVycyA9IFFTdHJpbmc6Om51bGwsCiAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcg
JiBzdWZmaXggPSBRU3RyaW5nOjpudWxsICk7CgogICAgZW51bSBTYXZlTW9kZSB7IEV2ZXJ5dGhp
bmcsIFN0cmlwcGVkIH07CgogICAgYm9vbCBzYXZlKCBjb25zdCBRU3RyaW5nICYgZmlsZW5hbWUs
IFNhdmVNb2RlIG1vZGUgPSBFdmVyeXRoaW5nICk7CgogICAgdm9pZCBjbGVhcigpOwoKICAgIHZv
aWQgaW5zZXJ0KCBjb25zdCBRVHJhbnNsYXRvck1lc3NhZ2UmICk7CgogICAgdm9pZCBpbnNlcnQo
IGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBRU3RyaW5nICYgKTsKICAgIHZvaWQg
cmVtb3ZlKCBjb25zdCBRVHJhbnNsYXRvck1lc3NhZ2UmICk7CgogICAgdm9pZCByZW1vdmUoIGNv
bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqICk7CiAgICBib29sIGNvbnRhaW5zKCBjb25zdCBjaGFy
ICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqICkgY29uc3Q7CgogICAgYm9vbCBjb250YWlu
cyggY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICogKSBjb25zdDsKCgoKICAgIHZvaWQgc3F1ZWV6
ZSggU2F2ZU1vZGUgKTsKICAgIHZvaWQgc3F1ZWV6ZSgpOwogICAgdm9pZCB1bnNxdWVlemUoKTsK
CiAgICBRVmFsdWVMaXN0PFFUcmFuc2xhdG9yTWVzc2FnZT4gbWVzc2FnZXMoKSBjb25zdDsKCnBy
aXZhdGU6CiAgICBRVHJhbnNsYXRvclByaXZhdGUgKiBkOwoKcHJpdmF0ZToKCiAgICBRVHJhbnNs
YXRvciggY29uc3QgUVRyYW5zbGF0b3IgJiApOwogICAgUVRyYW5zbGF0b3IgJm9wZXJhdG9yPSgg
Y29uc3QgUVRyYW5zbGF0b3IgJiApOwoKfTsKIyA0NiAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQv
cXQtMi4zLjIvaW5jbHVkZS9xYXBwbGljYXRpb24uaCIgMgoKCmNsYXNzIFFTZXNzaW9uTWFuYWdl
cjsKY2xhc3MgUVN0eWxlOwpjbGFzcyBRVHJhbnNsYXRvcjsKCgoKdGVtcGxhdGUgPGNsYXNzIHR5
cGU+IGNsYXNzIFFMaXN0OwoKY2xhc3MgUUFwcGxpY2F0aW9uOwpleHRlcm4gUUFwcGxpY2F0aW9u
ICpxQXBwOwojIDY3ICIvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9xdC0yLjMuMi9pbmNsdWRlL3Fh
cHBsaWNhdGlvbi5oIgpjbGFzcyBRQXBwbGljYXRpb24gOiBwdWJsaWMgUU9iamVjdAp7CiAgICBw
dWJsaWM6IFFNZXRhT2JqZWN0ICptZXRhT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljTWV0
YU9iamVjdCgpOyB9IGNvbnN0IGNoYXIgKmNsYXNzTmFtZSgpIGNvbnN0OyBzdGF0aWMgUU1ldGFP
YmplY3QqIHN0YXRpY01ldGFPYmplY3QoKTsgc3RhdGljIFFTdHJpbmcgdHIoY29uc3QgY2hhciop
OyBzdGF0aWMgUVN0cmluZyB0cihjb25zdCBjaGFyKiwgY29uc3QgY2hhciopOyBwcm90ZWN0ZWQ6
IHZvaWQgaW5pdE1ldGFPYmplY3QoKTsgcHJpdmF0ZTogc3RhdGljIFFNZXRhT2JqZWN0ICptZXRh
T2JqOwpwdWJsaWM6CiAgICBRQXBwbGljYXRpb24oIGludCAmYXJnYywgY2hhciAqKmFyZ3YpOwog
ICAgUUFwcGxpY2F0aW9uKCBpbnQgJmFyZ2MsIGNoYXIgKiphcmd2LCBib29sIEdVSWVuYWJsZWQg
KTsKICAgIGVudW0gVHlwZSB7IFR0eSwgR3VpQ2xpZW50LCBHdWlTZXJ2ZXIgfTsKICAgIFFBcHBs
aWNhdGlvbiggaW50ICZhcmdjLCBjaGFyICoqYXJndiwgVHlwZSApOwoKICAgIFFBcHBsaWNhdGlv
biggRGlzcGxheSogZHB5ICk7CiAgICBRQXBwbGljYXRpb24oIERpc3BsYXkgKmRweSwgaW50IGFy
Z2MsIGNoYXIgKiphcmd2KTsKCiAgICB2aXJ0dWFsIH5RQXBwbGljYXRpb24oKTsKCiAgICBpbnQg
YXJnYygpIGNvbnN0OwogICAgY2hhciAqKmFyZ3YoKSBjb25zdDsKCiAgICBUeXBlIHR5cGUoKSBj
b25zdDsKCgogICAgc3RhdGljIFFTdHlsZSAmc3R5bGUoKTsKICAgIHN0YXRpYyB2b2lkIHNldFN0
eWxlKCBRU3R5bGUqICk7CgoKICAgIGVudW0gQ29sb3JNb2RlIHsgTm9ybWFsQ29sb3JzLCBDdXN0
b21Db2xvcnMgfTsKICAgIHN0YXRpYyBDb2xvck1vZGUgY29sb3JNb2RlKCk7CiAgICBzdGF0aWMg
dm9pZCBzZXRDb2xvck1vZGUoIFFBcHBsaWNhdGlvbjo6Q29sb3JNb2RlICk7CgoKICAgIGVudW0g
Q29sb3JTcGVjIHsgTm9ybWFsQ29sb3I9MCwgQ3VzdG9tQ29sb3I9MSwgTWFueUNvbG9yPTIgfTsK
ICAgIHN0YXRpYyBpbnQgY29sb3JTcGVjKCk7CiAgICBzdGF0aWMgdm9pZCBzZXRDb2xvclNwZWMo
IGludCApOwoKICAgIHN0YXRpYyBRQ3Vyc29yICpvdmVycmlkZUN1cnNvcigpOwogICAgc3RhdGlj
IHZvaWQgc2V0T3ZlcnJpZGVDdXJzb3IoIGNvbnN0IFFDdXJzb3IgJiwgYm9vbCByZXBsYWNlPUZB
TFNFICk7CiAgICBzdGF0aWMgdm9pZCByZXN0b3JlT3ZlcnJpZGVDdXJzb3IoKTsKCiAgICBzdGF0
aWMgYm9vbCBoYXNHbG9iYWxNb3VzZVRyYWNraW5nKCk7CiAgICBzdGF0aWMgdm9pZCBzZXRHbG9i
YWxNb3VzZVRyYWNraW5nKCBib29sIGVuYWJsZSApOwoKICAgIHN0YXRpYyBRUGFsZXR0ZSBwYWxl
dHRlKCBjb25zdCBRV2lkZ2V0KiA9IDAgKTsKICAgIHN0YXRpYyB2b2lkIHNldFBhbGV0dGUoIGNv
bnN0IFFQYWxldHRlICYsIGJvb2wgaW5mb3JtV2lkZ2V0cz1GQUxTRSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogY2xhc3NOYW1lID0gMCApOwoKICAgIHN0YXRp
YyBRRm9udCBmb250KCBjb25zdCBRV2lkZ2V0KiA9IDAgKTsKICAgIHN0YXRpYyB2b2lkIHNldEZv
bnQoIGNvbnN0IFFGb250ICYsIGJvb2wgaW5mb3JtV2lkZ2V0cz1GQUxTRSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogY2xhc3NOYW1lID0gMCApOwogICAgc3RhdGlj
IFFGb250TWV0cmljcyBmb250TWV0cmljcygpOwoKICAgIFFXaWRnZXQgKm1haW5XaWRnZXQoKSBj
b25zdDsKICAgIHZpcnR1YWwgdm9pZCBzZXRNYWluV2lkZ2V0KCBRV2lkZ2V0ICogKTsKICAgIHZp
cnR1YWwgdm9pZCBwb2xpc2goIFFXaWRnZXQgKiApOwoKICAgIHN0YXRpYyBRV2lkZ2V0TGlzdCAq
YWxsV2lkZ2V0cygpOwogICAgc3RhdGljIFFXaWRnZXRMaXN0ICp0b3BMZXZlbFdpZGdldHMoKTsK
ICAgIHN0YXRpYyBRV2lkZ2V0ICpkZXNrdG9wKCk7CiAgICBzdGF0aWMgUVdpZGdldCAqYWN0aXZl
UG9wdXBXaWRnZXQoKTsKICAgIHN0YXRpYyBRV2lkZ2V0ICphY3RpdmVNb2RhbFdpZGdldCgpOwog
ICAgc3RhdGljIFFDbGlwYm9hcmQgKmNsaXBib2FyZCgpOwogICAgUVdpZGdldCAqZm9jdXNXaWRn
ZXQoKSBjb25zdDsKICAgIFFXaWRnZXQgKmFjdGl2ZVdpbmRvdygpIGNvbnN0OwoKICAgIHN0YXRp
YyBRV2lkZ2V0ICp3aWRnZXRBdCggaW50IHgsIGludCB5LCBib29sIGNoaWxkPUZBTFNFICk7CiAg
ICBzdGF0aWMgUVdpZGdldCAqd2lkZ2V0QXQoIGNvbnN0IFFQb2ludCAmLCBib29sIGNoaWxkPUZB
TFNFICk7CgogICAgaW50IGV4ZWMoKTsKICAgIHZvaWQgcHJvY2Vzc0V2ZW50cygpOwogICAgdm9p
ZCBwcm9jZXNzRXZlbnRzKCBpbnQgbWF4dGltZSApOwogICAgdm9pZCBwcm9jZXNzT25lRXZlbnQo
KTsKICAgIGludCBlbnRlcl9sb29wKCk7CiAgICB2b2lkIGV4aXRfbG9vcCgpOwogICAgaW50IGxv
b3BMZXZlbCgpIGNvbnN0OwogICAgc3RhdGljIHZvaWQgZXhpdCggaW50IHJldGNvZGU9MCApOwoK
ICAgIHN0YXRpYyBib29sIHNlbmRFdmVudCggUU9iamVjdCAqcmVjZWl2ZXIsIFFFdmVudCAqZXZl
bnQgKTsKICAgIHN0YXRpYyB2b2lkIHBvc3RFdmVudCggUU9iamVjdCAqcmVjZWl2ZXIsIFFFdmVu
dCAqZXZlbnQgKTsKICAgIHN0YXRpYyB2b2lkIHNlbmRQb3N0ZWRFdmVudHMoIFFPYmplY3QgKnJl
Y2VpdmVyLCBpbnQgZXZlbnRfdHlwZSApOwogICAgc3RhdGljIHZvaWQgc2VuZFBvc3RlZEV2ZW50
cygpOwoKICAgIHN0YXRpYyB2b2lkIHJlbW92ZVBvc3RlZEV2ZW50cyggUU9iamVjdCAqcmVjZWl2
ZXIgKTsKCiAgICB2aXJ0dWFsIGJvb2wgbm90aWZ5KCBRT2JqZWN0ICosIFFFdmVudCAqICk7Cgog
ICAgc3RhdGljIGJvb2wgc3RhcnRpbmdVcCgpOwogICAgc3RhdGljIGJvb2wgY2xvc2luZ0Rvd24o
KTsKCiAgICBzdGF0aWMgdm9pZCBmbHVzaFgoKTsKICAgIHN0YXRpYyB2b2lkIHN5bmNYKCk7Cgog
ICAgc3RhdGljIHZvaWQgYmVlcCgpOwoKCiAgICB2b2lkIHNldERlZmF1bHRDb2RlYyggUVRleHRD
b2RlYyogKTsKICAgIFFUZXh0Q29kZWMqIGRlZmF1bHRDb2RlYygpIGNvbnN0OwogICAgdm9pZCBp
bnN0YWxsVHJhbnNsYXRvciggUVRyYW5zbGF0b3IgKiApOwogICAgdm9pZCByZW1vdmVUcmFuc2xh
dG9yKCBRVHJhbnNsYXRvciAqICk7CgogICAgUVN0cmluZyB0cmFuc2xhdGUoIGNvbnN0IGNoYXIg
KiwgY29uc3QgY2hhciAqICkgY29uc3Q7CiAgICBRU3RyaW5nIHRyYW5zbGF0ZSggY29uc3QgY2hh
ciAqLCBjb25zdCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAqICkgY29uc3Q7CgogICAgc3RhdGljIHZvaWQgc2V0V2luU3R5bGVIaWdobGlnaHRDb2xv
ciggY29uc3QgUUNvbG9yICYgKTsKICAgIHN0YXRpYyBjb25zdCBRQ29sb3IgJndpblN0eWxlSGln
aGxpZ2h0Q29sb3IoKTsKCiAgICBzdGF0aWMgdm9pZCBzZXREZXNrdG9wU2V0dGluZ3NBd2FyZSgg
Ym9vbCApOwogICAgc3RhdGljIGJvb2wgZGVza3RvcFNldHRpbmdzQXdhcmUoKTsKCiAgICBzdGF0
aWMgdm9pZCBzZXRDdXJzb3JGbGFzaFRpbWUoIGludCApOwogICAgc3RhdGljIGludCBjdXJzb3JG
bGFzaFRpbWUoKTsKCiAgICBzdGF0aWMgdm9pZCBzZXREb3VibGVDbGlja0ludGVydmFsKCBpbnQg
KTsKICAgIHN0YXRpYyBpbnQgZG91YmxlQ2xpY2tJbnRlcnZhbCgpOwoKICAgIHN0YXRpYyB2b2lk
IHNldFdoZWVsU2Nyb2xsTGluZXMoIGludCApOwogICAgc3RhdGljIGludCB3aGVlbFNjcm9sbExp
bmVzKCk7CgogICAgc3RhdGljIHZvaWQgc2V0R2xvYmFsU3RydXQoIGNvbnN0IFFTaXplICYgKTsK
ICAgIHN0YXRpYyBRU2l6ZSBnbG9iYWxTdHJ1dCgpOwoKICAgIHN0YXRpYyB2b2lkIHNldFN0YXJ0
RHJhZ1RpbWUoIGludCBtcyApOwogICAgc3RhdGljIGludCBzdGFydERyYWdUaW1lKCk7CiAgICBz
dGF0aWMgdm9pZCBzZXRTdGFydERyYWdEaXN0YW5jZSggaW50IGwgKTsKICAgIHN0YXRpYyBpbnQg
c3RhcnREcmFnRGlzdGFuY2UoKTsKCiAgICBzdGF0aWMgYm9vbCBpc0VmZmVjdEVuYWJsZWQoIFF0
OjpVSUVmZmVjdCApOwogICAgc3RhdGljIHZvaWQgc2V0RWZmZWN0RW5hYmxlZCggUXQ6OlVJRWZm
ZWN0LCBib29sIGVuYWJsZSA9IFRSVUUgKTsKIyAyMDEgIi91c3Ivc3JjL3BhY2thZ2VzL0JVSUxE
L3F0LTIuMy4yL2luY2x1ZGUvcWFwcGxpY2F0aW9uLmgiCiAgICB2aXJ0dWFsIGJvb2wgeDExRXZl
bnRGaWx0ZXIoIFhFdmVudCAqICk7CiAgICB2aXJ0dWFsIGludCB4MTFDbGllbnRNZXNzYWdlKCBR
V2lkZ2V0KiwgWEV2ZW50KiwgYm9vbCBwYXNzaXZlX29ubHkpOwogICAgaW50IHgxMVByb2Nlc3NF
dmVudCggWEV2ZW50KiApOwojIDIyMiAiL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIv
aW5jbHVkZS9xYXBwbGljYXRpb24uaCIKICAgIGJvb2wgaXNTZXNzaW9uUmVzdG9yZWQoKSBjb25z
dDsKICAgIFFTdHJpbmcgc2Vzc2lvbklkKCkgY29uc3Q7CiAgICB2aXJ0dWFsIHZvaWQgY29tbWl0
RGF0YSggUVNlc3Npb25NYW5hZ2VyJiBzbSApOwogICAgdmlydHVhbCB2b2lkIHNhdmVTdGF0ZSgg
UVNlc3Npb25NYW5hZ2VyJiBzbSApOwoKCiAgICBzdGF0aWMgdm9pZCBjcmVhdGVfeGltKCk7CiAg
ICBzdGF0aWMgdm9pZCBjbG9zZV94aW0oKTsKCiAgICB2b2lkIHdha2VVcEd1aVRocmVhZCgpOwoK
CgoKCgpwcm90ZWN0ZWQ6CiAgICB2b2lkIGxhc3RXaW5kb3dDbG9zZWQoKTsKICAgIHZvaWQgYWJv
dXRUb1F1aXQoKTsKICAgIHZvaWQgZ3VpVGhyZWFkQXdha2UoKTsKCnB1YmxpYyA6CiAgICB2b2lk
IHF1aXQoKTsKICAgIHZvaWQgY2xvc2VBbGxXaW5kb3dzKCk7CgoKCgoKCnByaXZhdGU6CiAgICB2
b2lkIGNvbnN0cnVjdCggaW50ICZhcmdjLCBjaGFyICoqYXJndiwgVHlwZSApOwogICAgYm9vbCBw
cm9jZXNzTmV4dEV2ZW50KCBib29sICk7CiAgICB2b2lkIGluaXRpYWxpemUoIGludCwgY2hhciAq
KiApOwogICAgdm9pZCBpbml0X3ByZWNtZGxpbmUoKTsKICAgIHZvaWQgcHJvY2Vzc19jbWRsaW5l
KCBpbnQqIGFyZ2NwdHIsIGNoYXIgKiogYXJndiApOwojIDI2NyAiL3Vzci9zcmMvcGFja2FnZXMv
QlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xYXBwbGljYXRpb24uaCIKICAgIGludCBhcHBfYXJnYzsK
ICAgIGNoYXIgKiphcHBfYXJndjsKICAgIGJvb2wgcXVpdF9ub3c7CiAgICBpbnQgcXVpdF9jb2Rl
OwogICAgc3RhdGljIFFTdHlsZSAqYXBwX3N0eWxlOwogICAgc3RhdGljIGludCBhcHBfY3NwZWM7
CgogICAgc3RhdGljIFFQYWxldHRlICphcHBfcGFsOwoKICAgIHN0YXRpYyBRRm9udCAqYXBwX2Zv
bnQ7CgogICAgc3RhdGljIFFDdXJzb3IgKmFwcF9jdXJzb3I7CgogICAgc3RhdGljIGludCBhcHBf
dHJhY2tpbmc7CiAgICBzdGF0aWMgYm9vbCBpc19hcHBfcnVubmluZzsKICAgIHN0YXRpYyBib29s
IGlzX2FwcF9jbG9zaW5nOwogICAgc3RhdGljIGJvb2wgYXBwX2V4aXRfbG9vcDsKICAgIHN0YXRp
YyBpbnQgbG9vcF9sZXZlbDsKICAgIHN0YXRpYyBRV2lkZ2V0ICptYWluX3dpZGdldDsKICAgIHN0
YXRpYyBRV2lkZ2V0ICpmb2N1c193aWRnZXQ7CiAgICBzdGF0aWMgUVdpZGdldCAqYWN0aXZlX3dp
bmRvdzsKICAgIHN0YXRpYyBib29sIG9iZXlfZGVza3RvcF9zZXR0aW5nczsKICAgIHN0YXRpYyBp
bnQgY3Vyc29yX2ZsYXNoX3RpbWU7CiAgICBzdGF0aWMgaW50IG1vdXNlX2RvdWJsZV9jbGlja190
aW1lOwogICAgc3RhdGljIGludCB3aGVlbF9zY3JvbGxfbGluZXM7CgogICAgc3RhdGljIGJvb2wg
YW5pbWF0ZV91aTsKICAgIHN0YXRpYyBib29sIGFuaW1hdGVfbWVudTsKICAgIHN0YXRpYyBib29s
IGFuaW1hdGVfdG9vbHRpcDsKICAgIHN0YXRpYyBib29sIGFuaW1hdGVfY29tYm87CiAgICBzdGF0
aWMgYm9vbCBmYWRlX21lbnU7CiAgICBzdGF0aWMgYm9vbCBmYWRlX3Rvb2x0aXA7CgogICAgUUxp
c3Q8UVRyYW5zbGF0b3I+ICp0cmFuc2xhdG9yczsKCiAgICBRU2Vzc2lvbk1hbmFnZXIgKnNlc3Np
b25fbWFuYWdlcjsKICAgIFFTdHJpbmcgc2Vzc2lvbl9pZDsKICAgIGJvb2wgaXNfc2Vzc2lvbl9y
ZXN0b3JlZDsKCgogICAgc3RhdGljIHZvaWQgeDExX2luaXRpYWxpemVfc3R5bGUoKTsKCgogICAg
c3RhdGljIFFTaXplIGFwcF9zdHJ1dDsKCiAgICBzdGF0aWMgUUFzY2lpRGljdDxRUGFsZXR0ZT4g
KmFwcF9wYWxldHRlczsKICAgIHN0YXRpYyBRQXNjaWlEaWN0PFFGb250PiAqYXBwX2ZvbnRzOwoK
ICAgIHN0YXRpYyBRV2lkZ2V0TGlzdCAqcG9wdXBXaWRnZXRzOwogICAgYm9vbCBpblBvcHVwTW9k
ZSgpIGNvbnN0OwogICAgdm9pZCBjbG9zZVBvcHVwKCBRV2lkZ2V0ICpwb3B1cCApOwogICAgdm9p
ZCBvcGVuUG9wdXAoIFFXaWRnZXQgKnBvcHVwICk7CiAgICB2b2lkIHNldEFjdGl2ZVdpbmRvdygg
UVdpZGdldCogYWN0ICk7CgogICAgc3RhdGljIHZvaWQgcmVtb3ZlUG9zdGVkRXZlbnQoIFFFdmVu
dCAqICk7CgogICAgZnJpZW5kIGNsYXNzIFFXaWRnZXQ7CiAgICBmcmllbmQgY2xhc3MgUUVUV2lk
Z2V0OwogICAgZnJpZW5kIGNsYXNzIFFFdmVudDsKCnByaXZhdGU6CgogICAgUUFwcGxpY2F0aW9u
KCBjb25zdCBRQXBwbGljYXRpb24gJiApOwogICAgUUFwcGxpY2F0aW9uICZvcGVyYXRvcj0oIGNv
bnN0IFFBcHBsaWNhdGlvbiAmICk7Cgp9OwoKCmlubGluZSBpbnQgUUFwcGxpY2F0aW9uOjphcmdj
KCkgY29uc3QKewogICAgcmV0dXJuIGFwcF9hcmdjOwp9CgppbmxpbmUgY2hhciAqKlFBcHBsaWNh
dGlvbjo6YXJndigpIGNvbnN0CnsKICAgIHJldHVybiBhcHBfYXJndjsKfQojIDM1NCAiL3Vzci9z
cmMvcGFja2FnZXMvQlVJTEQvcXQtMi4zLjIvaW5jbHVkZS9xYXBwbGljYXRpb24uaCIKaW5saW5l
IFFTdHlsZSYgUUFwcGxpY2F0aW9uOjpzdHlsZSgpCnsKICAgIHJldHVybiAqYXBwX3N0eWxlOwp9
CgoKaW5saW5lIFFDdXJzb3IgKlFBcHBsaWNhdGlvbjo6b3ZlcnJpZGVDdXJzb3IoKQp7CiAgICBy
ZXR1cm4gYXBwX2N1cnNvcjsKfQoKaW5saW5lIGJvb2wgUUFwcGxpY2F0aW9uOjpoYXNHbG9iYWxN
b3VzZVRyYWNraW5nKCkKewogICAgcmV0dXJuIGFwcF90cmFja2luZyA+IDA7Cn0KCmlubGluZSBR
V2lkZ2V0ICpRQXBwbGljYXRpb246Om1haW5XaWRnZXQoKSBjb25zdAp7CiAgICByZXR1cm4gbWFp
bl93aWRnZXQ7Cn0KCmlubGluZSBRV2lkZ2V0ICpRQXBwbGljYXRpb246OmZvY3VzV2lkZ2V0KCkg
Y29uc3QKewogICAgcmV0dXJuIGZvY3VzX3dpZGdldDsKfQoKaW5saW5lIFFXaWRnZXQgKlFBcHBs
aWNhdGlvbjo6YWN0aXZlV2luZG93KCkgY29uc3QKewogICAgcmV0dXJuIGFjdGl2ZV93aW5kb3c7
Cn0KCmlubGluZSBRV2lkZ2V0ICpRQXBwbGljYXRpb246OndpZGdldEF0KCBjb25zdCBRUG9pbnQg
JnAsIGJvb2wgY2hpbGQgKQp7CiAgICByZXR1cm4gd2lkZ2V0QXQoIHAueCgpLCBwLnkoKSwgY2hp
bGQgKTsKfQoKaW5saW5lIGJvb2wgUUFwcGxpY2F0aW9uOjppblBvcHVwTW9kZSgpIGNvbnN0CnsK
ICAgIHJldHVybiBwb3B1cFdpZGdldHMgIT0gMDsKfQoKaW5saW5lIGJvb2wgUUFwcGxpY2F0aW9u
Ojppc1Nlc3Npb25SZXN0b3JlZCgpIGNvbnN0CnsKICAgIHJldHVybiBpc19zZXNzaW9uX3Jlc3Rv
cmVkOwp9CgppbmxpbmUgUVN0cmluZyBRQXBwbGljYXRpb246OnNlc3Npb25JZCgpIGNvbnN0CnsK
ICAgIHJldHVybiBzZXNzaW9uX2lkOwp9CgppbmxpbmUgUVNpemUgUUFwcGxpY2F0aW9uOjpnbG9i
YWxTdHJ1dCgpCnsKICAgIHJldHVybiBhcHBfc3RydXQ7Cn0KCmlubGluZSBib29sIFFBcHBsaWNh
dGlvbjo6c2VuZEV2ZW50KCBRT2JqZWN0ICpyZWNlaXZlciwgUUV2ZW50ICpldmVudCApCnsgcmV0
dXJuIHFBcHAtPm5vdGlmeSggcmVjZWl2ZXIsIGV2ZW50ICk7IH0KIyAxOSAia2VybmVsL21vY19x
d2lkZ2V0LmNwcCIgMgoKCgpjb25zdCBjaGFyICpRV2lkZ2V0OjpjbGFzc05hbWUoKSBjb25zdAp7
CiAgICByZXR1cm4gIlFXaWRnZXQiOwp9CgpRTWV0YU9iamVjdCAqUVdpZGdldDo6bWV0YU9iaiA9
IDA7Cgp2b2lkIFFXaWRnZXQ6OmluaXRNZXRhT2JqZWN0KCkKewogICAgaWYgKCBtZXRhT2JqICkK
ICAgICAgICByZXR1cm47CiAgICBpZiAoIHFzdHJjbXAoUU9iamVjdDo6Y2xhc3NOYW1lKCksICJR
T2JqZWN0IikgIT0gMCApCiAgICAgICAgYmFkU3VwZXJjbGFzc1dhcm5pbmcoIlFXaWRnZXQiLCJR
T2JqZWN0Iik7CiAgICAodm9pZCkgc3RhdGljTWV0YU9iamVjdCgpOwp9CgoKClFTdHJpbmcgUVdp
ZGdldDo6dHIoY29uc3QgY2hhciogcykKewogICAgcmV0dXJuIHFBcHAtPnRyYW5zbGF0ZSggIlFX
aWRnZXQiLCBzLCAwICk7Cn0KClFTdHJpbmcgUVdpZGdldDo6dHIoY29uc3QgY2hhciogcywgY29u
c3QgY2hhciAqIGMpCnsKICAgIHJldHVybiBxQXBwLT50cmFuc2xhdGUoICJRV2lkZ2V0Iiwgcywg
YyApOwp9CgoKClFNZXRhT2JqZWN0KiBRV2lkZ2V0OjpzdGF0aWNNZXRhT2JqZWN0KCkKewogICAg
aWYgKCBtZXRhT2JqICkKICAgICAgICByZXR1cm4gbWV0YU9iajsKICAgICh2b2lkKSBRT2JqZWN0
OjpzdGF0aWNNZXRhT2JqZWN0KCk7CgogICAgUU1ldGFFbnVtKiBlbnVtX3RibCA9IFFNZXRhT2Jq
ZWN0OjpuZXdfbWV0YWVudW0oIDQgKTsKICAgIGVudW1fdGJsWzBdLm5hbWUgPSAiQmFja2dyb3Vu
ZE1vZGUiOwogICAgZW51bV90YmxbMF0uY291bnQgPSAxODsKICAgIGVudW1fdGJsWzBdLml0ZW1z
ID0gUU1ldGFPYmplY3Q6Om5ld19tZXRhZW51bV9pdGVtKCAxOCApOwogICAgZW51bV90YmxbMF0u
c2V0ID0gRkFMU0U7CiAgICBlbnVtX3RibFswXS5pdGVtc1swXS5rZXkgPSAiRml4ZWRDb2xvciI7
CiAgICBlbnVtX3RibFswXS5pdGVtc1swXS52YWx1ZSA9IChpbnQpIFFXaWRnZXQ6OkZpeGVkQ29s
b3I7CiAgICBlbnVtX3RibFswXS5pdGVtc1sxXS5rZXkgPSAiRml4ZWRQaXhtYXAiOwogICAgZW51
bV90YmxbMF0uaXRlbXNbMV0udmFsdWUgPSAoaW50KSBRV2lkZ2V0OjpGaXhlZFBpeG1hcDsKICAg
IGVudW1fdGJsWzBdLml0ZW1zWzJdLmtleSA9ICJOb0JhY2tncm91bmQiOwogICAgZW51bV90Ymxb
MF0uaXRlbXNbMl0udmFsdWUgPSAoaW50KSBRV2lkZ2V0OjpOb0JhY2tncm91bmQ7CiAgICBlbnVt
X3RibFswXS5pdGVtc1szXS5rZXkgPSAiUGFsZXR0ZUZvcmVncm91bmQiOwogICAgZW51bV90Ymxb
MF0uaXRlbXNbM10udmFsdWUgPSAoaW50KSBRV2lkZ2V0OjpQYWxldHRlRm9yZWdyb3VuZDsKICAg
IGVudW1fdGJsWzBdLml0ZW1zWzRdLmtleSA9ICJQYWxldHRlQnV0dG9uIjsKICAgIGVudW1fdGJs
WzBdLml0ZW1zWzRdLnZhbHVlID0gKGludCkgUVdpZGdldDo6UGFsZXR0ZUJ1dHRvbjsKICAgIGVu
dW1fdGJsWzBdLml0ZW1zWzVdLmtleSA9ICJQYWxldHRlTGlnaHQiOwogICAgZW51bV90YmxbMF0u
aXRlbXNbNV0udmFsdWUgPSAoaW50KSBRV2lkZ2V0OjpQYWxldHRlTGlnaHQ7CiAgICBlbnVtX3Ri
bFswXS5pdGVtc1s2XS5rZXkgPSAiUGFsZXR0ZU1pZGxpZ2h0IjsKICAgIGVudW1fdGJsWzBdLml0
ZW1zWzZdLnZhbHVlID0gKGludCkgUVdpZGdldDo6UGFsZXR0ZU1pZGxpZ2h0OwogICAgZW51bV90
YmxbMF0uaXRlbXNbN10ua2V5ID0gIlBhbGV0dGVEYXJrIjsKICAgIGVudW1fdGJsWzBdLml0ZW1z
WzddLnZhbHVlID0gKGludCkgUVdpZGdldDo6UGFsZXR0ZURhcms7CiAgICBlbnVtX3RibFswXS5p
dGVtc1s4XS5rZXkgPSAiUGFsZXR0ZU1pZCI7CiAgICBlbnVtX3RibFswXS5pdGVtc1s4XS52YWx1
ZSA9IChpbnQpIFFXaWRnZXQ6OlBhbGV0dGVNaWQ7CiAgICBlbnVtX3RibFswXS5pdGVtc1s5XS5r
ZXkgPSAiUGFsZXR0ZVRleHQiOwogICAgZW51bV90YmxbMF0uaXRlbXNbOV0udmFsdWUgPSAoaW50
KSBRV2lkZ2V0OjpQYWxldHRlVGV4dDsKICAgIGVudW1fdGJsWzBdLml0ZW1zWzEwXS5rZXkgPSAi
UGFsZXR0ZUJyaWdodFRleHQiOwogICAgZW51bV90YmxbMF0uaXRlbXNbMTBdLnZhbHVlID0gKGlu
dCkgUVdpZGdldDo6UGFsZXR0ZUJyaWdodFRleHQ7CiAgICBlbnVtX3RibFswXS5pdGVtc1sxMV0u
a2V5ID0gIlBhbGV0dGVCYXNlIjsKICAgIGVudW1fdGJsWzBdLml0ZW1zWzExXS52YWx1ZSA9IChp
bnQpIFFXaWRnZXQ6OlBhbGV0dGVCYXNlOwogICAgZW51bV90YmxbMF0uaXRlbXNbMTJdLmtleSA9
ICJQYWxldHRlQmFja2dyb3VuZCI7CiAgICBlbnVtX3RibFswXS5pdGVtc1sxMl0udmFsdWUgPSAo
aW50KSBRV2lkZ2V0OjpQYWxldHRlQmFja2dyb3VuZDsKICAgIGVudW1fdGJsWzBdLml0ZW1zWzEz
XS5rZXkgPSAiUGFsZXR0ZVNoYWRvdyI7CiAgICBlbnVtX3RibFswXS5pdGVtc1sxM10udmFsdWUg
PSAoaW50KSBRV2lkZ2V0OjpQYWxldHRlU2hhZG93OwogICAgZW51bV90YmxbMF0uaXRlbXNbMTRd
LmtleSA9ICJQYWxldHRlSGlnaGxpZ2h0IjsKICAgIGVudW1fdGJsWzBdLml0ZW1zWzE0XS52YWx1
ZSA9IChpbnQpIFFXaWRnZXQ6OlBhbGV0dGVIaWdobGlnaHQ7CiAgICBlbnVtX3RibFswXS5pdGVt
c1sxNV0ua2V5ID0gIlBhbGV0dGVIaWdobGlnaHRlZFRleHQiOwogICAgZW51bV90YmxbMF0uaXRl
bXNbMTVdLnZhbHVlID0gKGludCkgUVdpZGdldDo6UGFsZXR0ZUhpZ2hsaWdodGVkVGV4dDsKICAg
IGVudW1fdGJsWzBdLml0ZW1zWzE2XS5rZXkgPSAiUGFsZXR0ZUJ1dHRvblRleHQiOwogICAgZW51
bV90YmxbMF0uaXRlbXNbMTZdLnZhbHVlID0gKGludCkgUVdpZGdldDo6UGFsZXR0ZUJ1dHRvblRl
eHQ7CiAgICBlbnVtX3RibFswXS5pdGVtc1sxN10ua2V5ID0gIlgxMVBhcmVudFJlbGF0aXZlIjsK
ICAgIGVudW1fdGJsWzBdLml0ZW1zWzE3XS52YWx1ZSA9IChpbnQpIFFXaWRnZXQ6OlgxMVBhcmVu
dFJlbGF0aXZlOwogICAgZW51bV90YmxbMV0ubmFtZSA9ICJQcm9wYWdhdGlvbk1vZGUiOwogICAg
ZW51bV90YmxbMV0uY291bnQgPSA0OwogICAgZW51bV90YmxbMV0uaXRlbXMgPSBRTWV0YU9iamVj
dDo6bmV3X21ldGFlbnVtX2l0ZW0oIDQgKTsKICAgIGVudW1fdGJsWzFdLnNldCA9IEZBTFNFOwog
ICAgZW51bV90YmxbMV0uaXRlbXNbMF0ua2V5ID0gIk5vQ2hpbGRyZW4iOwogICAgZW51bV90Ymxb
MV0uaXRlbXNbMF0udmFsdWUgPSAoaW50KSBRV2lkZ2V0OjpOb0NoaWxkcmVuOwogICAgZW51bV90
YmxbMV0uaXRlbXNbMV0ua2V5ID0gIkFsbENoaWxkcmVuIjsKICAgIGVudW1fdGJsWzFdLml0ZW1z
WzFdLnZhbHVlID0gKGludCkgUVdpZGdldDo6QWxsQ2hpbGRyZW47CiAgICBlbnVtX3RibFsxXS5p
dGVtc1syXS5rZXkgPSAiU2FtZUZvbnQiOwogICAgZW51bV90YmxbMV0uaXRlbXNbMl0udmFsdWUg
PSAoaW50KSBRV2lkZ2V0OjpTYW1lRm9udDsKICAgIGVudW1fdGJsWzFdLml0ZW1zWzNdLmtleSA9
ICJTYW1lUGFsZXR0ZSI7CiAgICBlbnVtX3RibFsxXS5pdGVtc1szXS52YWx1ZSA9IChpbnQpIFFX
aWRnZXQ6OlNhbWVQYWxldHRlOwogICAgZW51bV90YmxbMl0ubmFtZSA9ICJGb2N1c1BvbGljeSI7
CiAgICBlbnVtX3RibFsyXS5jb3VudCA9IDU7CiAgICBlbnVtX3RibFsyXS5pdGVtcyA9IFFNZXRh
T2JqZWN0OjpuZXdfbWV0YWVudW1faXRlbSggNSApOwogICAgZW51bV90YmxbMl0uc2V0ID0gRkFM
U0U7CiAgICBlbnVtX3RibFsyXS5pdGVtc1swXS5rZXkgPSAiTm9Gb2N1cyI7CiAgICBlbnVtX3Ri
bFsyXS5pdGVtc1swXS52YWx1ZSA9IChpbnQpIFFXaWRnZXQ6Ok5vRm9jdXM7CiAgICBlbnVtX3Ri
bFsyXS5pdGVtc1sxXS5rZXkgPSAiVGFiRm9jdXMiOwogICAgZW51bV90YmxbMl0uaXRlbXNbMV0u
dmFsdWUgPSAoaW50KSBRV2lkZ2V0OjpUYWJGb2N1czsKICAgIGVudW1fdGJsWzJdLml0ZW1zWzJd
LmtleSA9ICJDbGlja0ZvY3VzIjsKICAgIGVudW1fdGJsWzJdLml0ZW1zWzJdLnZhbHVlID0gKGlu
dCkgUVdpZGdldDo6Q2xpY2tGb2N1czsKICAgIGVudW1fdGJsWzJdLml0ZW1zWzNdLmtleSA9ICJT
dHJvbmdGb2N1cyI7CiAgICBlbnVtX3RibFsyXS5pdGVtc1szXS52YWx1ZSA9IChpbnQpIFFXaWRn
ZXQ6OlN0cm9uZ0ZvY3VzOwogICAgZW51bV90YmxbMl0uaXRlbXNbNF0ua2V5ID0gIldoZWVsRm9j
dXMiOwogICAgZW51bV90YmxbMl0uaXRlbXNbNF0udmFsdWUgPSAoaW50KSBRV2lkZ2V0OjpXaGVl
bEZvY3VzOwogICAgZW51bV90YmxbM10ubmFtZSA9ICJCYWNrZ3JvdW5kT3JpZ2luIjsKICAgIGVu
dW1fdGJsWzNdLmNvdW50ID0gMjsKICAgIGVudW1fdGJsWzNdLml0ZW1zID0gUU1ldGFPYmplY3Q6
Om5ld19tZXRhZW51bV9pdGVtKCAyICk7CiAgICBlbnVtX3RibFszXS5zZXQgPSBGQUxTRTsKICAg
IGVudW1fdGJsWzNdLml0ZW1zWzBdLmtleSA9ICJXaWRnZXRPcmlnaW4iOwogICAgZW51bV90Ymxb
M10uaXRlbXNbMF0udmFsdWUgPSAoaW50KSBRV2lkZ2V0OjpXaWRnZXRPcmlnaW47CiAgICBlbnVt
X3RibFszXS5pdGVtc1sxXS5rZXkgPSAiUGFyZW50T3JpZ2luIjsKICAgIGVudW1fdGJsWzNdLml0
ZW1zWzFdLnZhbHVlID0gKGludCkgUVdpZGdldDo6UGFyZW50T3JpZ2luOwoKCiAgICB0eXBlZGVm
IGJvb2wgKFFXaWRnZXQ6OiptM190MCkoKWNvbnN0OwogICAgdHlwZWRlZiBib29sIChRT2JqZWN0
Ojoqb20zX3QwKSgpY29uc3Q7CiAgICB0eXBlZGVmIGJvb2wgKFFXaWRnZXQ6OiptM190MykoKWNv
bnN0OwogICAgdHlwZWRlZiBib29sIChRT2JqZWN0Ojoqb20zX3QzKSgpY29uc3Q7CiAgICB0eXBl
ZGVmIGJvb2wgKFFXaWRnZXQ6OiptM190NikoKWNvbnN0OwogICAgdHlwZWRlZiBib29sIChRT2Jq
ZWN0Ojoqb20zX3Q2KSgpY29uc3Q7CiAgICB0eXBlZGVmIGJvb2wgKFFXaWRnZXQ6OiptM190OSko
KWNvbnN0OwogICAgdHlwZWRlZiBib29sIChRT2JqZWN0Ojoqb20zX3Q5KSgpY29uc3Q7CiAgICB0
eXBlZGVmIGJvb2wgKFFXaWRnZXQ6OiptM190MTIpKCljb25zdDsKICAgIHR5cGVkZWYgYm9vbCAo
UU9iamVjdDo6Km9tM190MTIpKCljb25zdDsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdldDo6Km0z
X3QxMykoYm9vbCk7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTNfdDEzKShib29sKTsK
ICAgIHR5cGVkZWYgY29uc3QgUVJlY3QmIChRV2lkZ2V0OjoqbTNfdDE1KSgpY29uc3Q7CiAgICB0
eXBlZGVmIGNvbnN0IFFSZWN0JiAoUU9iamVjdDo6Km9tM190MTUpKCljb25zdDsKICAgIHR5cGVk
ZWYgdm9pZCAoUVdpZGdldDo6Km0zX3QxNikoY29uc3QgUVJlY3QmKTsKICAgIHR5cGVkZWYgdm9p
ZCAoUU9iamVjdDo6Km9tM190MTYpKGNvbnN0IFFSZWN0Jik7CiAgICB0eXBlZGVmIFFSZWN0IChR
V2lkZ2V0OjoqbTNfdDE4KSgpY29uc3Q7CiAgICB0eXBlZGVmIFFSZWN0IChRT2JqZWN0Ojoqb20z
X3QxOCkoKWNvbnN0OwogICAgdHlwZWRlZiBpbnQgKFFXaWRnZXQ6OiptM190MjEpKCljb25zdDsK
ICAgIHR5cGVkZWYgaW50IChRT2JqZWN0Ojoqb20zX3QyMSkoKWNvbnN0OwogICAgdHlwZWRlZiBp
bnQgKFFXaWRnZXQ6OiptM190MjQpKCljb25zdDsKICAgIHR5cGVkZWYgaW50IChRT2JqZWN0Ojoq
b20zX3QyNCkoKWNvbnN0OwogICAgdHlwZWRlZiBRUG9pbnQgKFFXaWRnZXQ6OiptM190MjcpKClj
b25zdDsKICAgIHR5cGVkZWYgUVBvaW50IChRT2JqZWN0Ojoqb20zX3QyNykoKWNvbnN0OwogICAg
dHlwZWRlZiBRU2l6ZSAoUVdpZGdldDo6Km0zX3QzMCkoKWNvbnN0OwogICAgdHlwZWRlZiBRU2l6
ZSAoUU9iamVjdDo6Km9tM190MzApKCljb25zdDsKICAgIHR5cGVkZWYgUVNpemUgKFFXaWRnZXQ6
OiptM190MzMpKCljb25zdDsKICAgIHR5cGVkZWYgUVNpemUgKFFPYmplY3Q6OipvbTNfdDMzKSgp
Y29uc3Q7CiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptM190MzQpKGNvbnN0IFFTaXplJik7
CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTNfdDM0KShjb25zdCBRU2l6ZSYpOwogICAg
dHlwZWRlZiBpbnQgKFFXaWRnZXQ6OiptM190MzYpKCljb25zdDsKICAgIHR5cGVkZWYgaW50IChR
T2JqZWN0Ojoqb20zX3QzNikoKWNvbnN0OwogICAgdHlwZWRlZiBpbnQgKFFXaWRnZXQ6OiptM190
MzkpKCljb25zdDsKICAgIHR5cGVkZWYgaW50IChRT2JqZWN0Ojoqb20zX3QzOSkoKWNvbnN0Owog
ICAgdHlwZWRlZiBRUmVjdCAoUVdpZGdldDo6Km0zX3Q0MikoKWNvbnN0OwogICAgdHlwZWRlZiBR
UmVjdCAoUU9iamVjdDo6Km9tM190NDIpKCljb25zdDsKICAgIHR5cGVkZWYgUVJlY3QgKFFXaWRn
ZXQ6OiptM190NDUpKCljb25zdDsKICAgIHR5cGVkZWYgUVJlY3QgKFFPYmplY3Q6OipvbTNfdDQ1
KSgpY29uc3Q7CiAgICB0eXBlZGVmIFFSZWdpb24gKFFXaWRnZXQ6OiptM190NDgpKCljb25zdDsK
ICAgIHR5cGVkZWYgUVJlZ2lvbiAoUU9iamVjdDo6Km9tM190NDgpKCljb25zdDsKICAgIHR5cGVk
ZWYgUVNpemVQb2xpY3kgKFFXaWRnZXQ6OiptM190NTEpKCljb25zdDsKICAgIHR5cGVkZWYgUVNp
emVQb2xpY3kgKFFPYmplY3Q6OipvbTNfdDUxKSgpY29uc3Q7CiAgICB0eXBlZGVmIHZvaWQgKFFX
aWRnZXQ6OiptM190NTIpKFFTaXplUG9saWN5KTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6
Km9tM190NTIpKFFTaXplUG9saWN5KTsKICAgIHR5cGVkZWYgUVNpemUgKFFXaWRnZXQ6OiptM190
NTQpKCljb25zdDsKICAgIHR5cGVkZWYgUVNpemUgKFFPYmplY3Q6OipvbTNfdDU0KSgpY29uc3Q7
CiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptM190NTUpKGNvbnN0IFFTaXplJik7CiAgICB0
eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTNfdDU1KShjb25zdCBRU2l6ZSYpOwogICAgdHlwZWRl
ZiBRU2l6ZSAoUVdpZGdldDo6Km0zX3Q1NykoKWNvbnN0OwogICAgdHlwZWRlZiBRU2l6ZSAoUU9i
amVjdDo6Km9tM190NTcpKCljb25zdDsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdldDo6Km0zX3Q1
OCkoY29uc3QgUVNpemUmKTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tM190NTgpKGNv
bnN0IFFTaXplJik7CiAgICB0eXBlZGVmIGludCAoUVdpZGdldDo6Km0zX3Q2MCkoKWNvbnN0Owog
ICAgdHlwZWRlZiBpbnQgKFFPYmplY3Q6OipvbTNfdDYwKSgpY29uc3Q7CiAgICB0eXBlZGVmIHZv
aWQgKFFXaWRnZXQ6OiptM190NjEpKGludCk7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6Oipv
bTNfdDYxKShpbnQpOwogICAgdHlwZWRlZiBpbnQgKFFXaWRnZXQ6OiptM190NjMpKCljb25zdDsK
ICAgIHR5cGVkZWYgaW50IChRT2JqZWN0Ojoqb20zX3Q2MykoKWNvbnN0OwogICAgdHlwZWRlZiB2
b2lkIChRV2lkZ2V0OjoqbTNfdDY0KShpbnQpOwogICAgdHlwZWRlZiB2b2lkIChRT2JqZWN0Ojoq
b20zX3Q2NCkoaW50KTsKICAgIHR5cGVkZWYgaW50IChRV2lkZ2V0OjoqbTNfdDY2KSgpY29uc3Q7
CiAgICB0eXBlZGVmIGludCAoUU9iamVjdDo6Km9tM190NjYpKCljb25zdDsKICAgIHR5cGVkZWYg
dm9pZCAoUVdpZGdldDo6Km0zX3Q2NykoaW50KTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6
Km9tM190NjcpKGludCk7CiAgICB0eXBlZGVmIGludCAoUVdpZGdldDo6Km0zX3Q2OSkoKWNvbnN0
OwogICAgdHlwZWRlZiBpbnQgKFFPYmplY3Q6OipvbTNfdDY5KSgpY29uc3Q7CiAgICB0eXBlZGVm
IHZvaWQgKFFXaWRnZXQ6OiptM190NzApKGludCk7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6
OipvbTNfdDcwKShpbnQpOwogICAgdHlwZWRlZiBRU2l6ZSAoUVdpZGdldDo6Km0zX3Q3MikoKWNv
bnN0OwogICAgdHlwZWRlZiBRU2l6ZSAoUU9iamVjdDo6Km9tM190NzIpKCljb25zdDsKICAgIHR5
cGVkZWYgdm9pZCAoUVdpZGdldDo6Km0zX3Q3MykoY29uc3QgUVNpemUmKTsKICAgIHR5cGVkZWYg
dm9pZCAoUU9iamVjdDo6Km9tM190NzMpKGNvbnN0IFFTaXplJik7CiAgICB0eXBlZGVmIFFTaXpl
IChRV2lkZ2V0OjoqbTNfdDc1KSgpY29uc3Q7CiAgICB0eXBlZGVmIFFTaXplIChRT2JqZWN0Ojoq
b20zX3Q3NSkoKWNvbnN0OwogICAgdHlwZWRlZiB2b2lkIChRV2lkZ2V0OjoqbTNfdDc2KShjb25z
dCBRU2l6ZSYpOwogICAgdHlwZWRlZiB2b2lkIChRT2JqZWN0Ojoqb20zX3Q3NikoY29uc3QgUVNp
emUmKTsKICAgIHR5cGVkZWYgQmFja2dyb3VuZE1vZGUgKFFXaWRnZXQ6OiptM190NzgpKCljb25z
dDsKICAgIHR5cGVkZWYgQmFja2dyb3VuZE1vZGUgKFFPYmplY3Q6OipvbTNfdDc4KSgpY29uc3Q7
CiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptM190NzkpKEJhY2tncm91bmRNb2RlKTsKICAg
IHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tM190NzkpKEJhY2tncm91bmRNb2RlKTsKICAgIHR5
cGVkZWYgY29uc3QgUUNvbG9yJiAoUVdpZGdldDo6Km0zX3Q4MSkoKWNvbnN0OwogICAgdHlwZWRl
ZiBjb25zdCBRQ29sb3ImIChRT2JqZWN0Ojoqb20zX3Q4MSkoKWNvbnN0OwogICAgdHlwZWRlZiB2
b2lkIChRV2lkZ2V0OjoqbTNfdDgyKShjb25zdCBRQ29sb3ImKTsKICAgIHR5cGVkZWYgdm9pZCAo
UU9iamVjdDo6Km9tM190ODIpKGNvbnN0IFFDb2xvciYpOwogICAgdHlwZWRlZiBjb25zdCBRQ29s
b3ImIChRV2lkZ2V0OjoqbTNfdDg0KSgpY29uc3Q7CiAgICB0eXBlZGVmIGNvbnN0IFFDb2xvciYg
KFFPYmplY3Q6OipvbTNfdDg0KSgpY29uc3Q7CiAgICB0eXBlZGVmIGNvbnN0IFFQaXhtYXAqIChR
V2lkZ2V0OjoqbTNfdDg3KSgpY29uc3Q7CiAgICB0eXBlZGVmIGNvbnN0IFFQaXhtYXAqIChRT2Jq
ZWN0Ojoqb20zX3Q4NykoKWNvbnN0OwogICAgdHlwZWRlZiB2b2lkIChRV2lkZ2V0OjoqbTNfdDg4
KShjb25zdCBRUGl4bWFwJik7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTNfdDg4KShj
b25zdCBRUGl4bWFwJik7CiAgICB0eXBlZGVmIGNvbnN0IFFDb2xvckdyb3VwJiAoUVdpZGdldDo6
Km0zX3Q5MCkoKWNvbnN0OwogICAgdHlwZWRlZiBjb25zdCBRQ29sb3JHcm91cCYgKFFPYmplY3Q6
OipvbTNfdDkwKSgpY29uc3Q7CiAgICB0eXBlZGVmIGNvbnN0IFFQYWxldHRlJiAoUVdpZGdldDo6
Km0zX3Q5MykoKWNvbnN0OwogICAgdHlwZWRlZiBjb25zdCBRUGFsZXR0ZSYgKFFPYmplY3Q6Oipv
bTNfdDkzKSgpY29uc3Q7CiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptM190OTQpKGNvbnN0
IFFQYWxldHRlJik7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTNfdDk0KShjb25zdCBR
UGFsZXR0ZSYpOwogICAgdHlwZWRlZiB2b2lkIChRV2lkZ2V0OjoqbTNfdDk1KSgpOwogICAgdHlw
ZWRlZiB2b2lkIChRT2JqZWN0Ojoqb20zX3Q5NSkoKTsKICAgIHR5cGVkZWYgYm9vbCAoUVdpZGdl
dDo6Km0zX3Q5NikoKWNvbnN0OwogICAgdHlwZWRlZiBib29sIChRT2JqZWN0Ojoqb20zX3Q5Niko
KWNvbnN0OwogICAgdHlwZWRlZiBRRm9udCAoUVdpZGdldDo6Km0zX3Q5OSkoKWNvbnN0OwogICAg
dHlwZWRlZiBRRm9udCAoUU9iamVjdDo6Km9tM190OTkpKCljb25zdDsKICAgIHR5cGVkZWYgdm9p
ZCAoUVdpZGdldDo6Km0zX3QxMDApKGNvbnN0IFFGb250Jik7CiAgICB0eXBlZGVmIHZvaWQgKFFP
YmplY3Q6OipvbTNfdDEwMCkoY29uc3QgUUZvbnQmKTsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdl
dDo6Km0zX3QxMDEpKCk7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTNfdDEwMSkoKTsK
ICAgIHR5cGVkZWYgYm9vbCAoUVdpZGdldDo6Km0zX3QxMDIpKCljb25zdDsKICAgIHR5cGVkZWYg
Ym9vbCAoUU9iamVjdDo6Km9tM190MTAyKSgpY29uc3Q7CiAgICB0eXBlZGVmIGNvbnN0IFFDdXJz
b3ImIChRV2lkZ2V0OjoqbTNfdDEwNSkoKWNvbnN0OwogICAgdHlwZWRlZiBjb25zdCBRQ3Vyc29y
JiAoUU9iamVjdDo6Km9tM190MTA1KSgpY29uc3Q7CiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6
OiptM190MTA2KShjb25zdCBRQ3Vyc29yJik7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6Oipv
bTNfdDEwNikoY29uc3QgUUN1cnNvciYpOwogICAgdHlwZWRlZiB2b2lkIChRV2lkZ2V0OjoqbTNf
dDEwNykoKTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tM190MTA3KSgpOwogICAgdHlw
ZWRlZiBib29sIChRV2lkZ2V0OjoqbTNfdDEwOCkoKWNvbnN0OwogICAgdHlwZWRlZiBib29sIChR
T2JqZWN0Ojoqb20zX3QxMDgpKCljb25zdDsKICAgIHR5cGVkZWYgUVN0cmluZyAoUVdpZGdldDo6
Km0zX3QxMTEpKCljb25zdDsKICAgIHR5cGVkZWYgUVN0cmluZyAoUU9iamVjdDo6Km9tM190MTEx
KSgpY29uc3Q7CiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptM190MTEyKShjb25zdCBRU3Ry
aW5nJik7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTNfdDExMikoY29uc3QgUVN0cmlu
ZyYpOwogICAgdHlwZWRlZiBjb25zdCBRUGl4bWFwKiAoUVdpZGdldDo6Km0zX3QxMTQpKCljb25z
dDsKICAgIHR5cGVkZWYgY29uc3QgUVBpeG1hcCogKFFPYmplY3Q6OipvbTNfdDExNCkoKWNvbnN0
OwogICAgdHlwZWRlZiB2b2lkIChRV2lkZ2V0OjoqbTNfdDExNSkoY29uc3QgUVBpeG1hcCYpOwog
ICAgdHlwZWRlZiB2b2lkIChRT2JqZWN0Ojoqb20zX3QxMTUpKGNvbnN0IFFQaXhtYXAmKTsKICAg
IHR5cGVkZWYgUVN0cmluZyAoUVdpZGdldDo6Km0zX3QxMTcpKCljb25zdDsKICAgIHR5cGVkZWYg
UVN0cmluZyAoUU9iamVjdDo6Km9tM190MTE3KSgpY29uc3Q7CiAgICB0eXBlZGVmIHZvaWQgKFFX
aWRnZXQ6OiptM190MTE4KShjb25zdCBRU3RyaW5nJik7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmpl
Y3Q6OipvbTNfdDExOCkoY29uc3QgUVN0cmluZyYpOwogICAgdHlwZWRlZiBib29sIChRV2lkZ2V0
OjoqbTNfdDEyMCkoKWNvbnN0OwogICAgdHlwZWRlZiBib29sIChRT2JqZWN0Ojoqb20zX3QxMjAp
KCljb25zdDsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdldDo6Km0zX3QxMjEpKGJvb2wpOwogICAg
dHlwZWRlZiB2b2lkIChRT2JqZWN0Ojoqb20zX3QxMjEpKGJvb2wpOwogICAgdHlwZWRlZiBib29s
IChRV2lkZ2V0OjoqbTNfdDEyMykoKWNvbnN0OwogICAgdHlwZWRlZiBib29sIChRT2JqZWN0Ojoq
b20zX3QxMjMpKCljb25zdDsKICAgIHR5cGVkZWYgYm9vbCAoUVdpZGdldDo6Km0zX3QxMjYpKClj
b25zdDsKICAgIHR5cGVkZWYgYm9vbCAoUU9iamVjdDo6Km9tM190MTI2KSgpY29uc3Q7CiAgICB0
eXBlZGVmIEZvY3VzUG9saWN5IChRV2lkZ2V0OjoqbTNfdDEyOSkoKWNvbnN0OwogICAgdHlwZWRl
ZiBGb2N1c1BvbGljeSAoUU9iamVjdDo6Km9tM190MTI5KSgpY29uc3Q7CiAgICB0eXBlZGVmIHZv
aWQgKFFXaWRnZXQ6OiptM190MTMwKShGb2N1c1BvbGljeSk7CiAgICB0eXBlZGVmIHZvaWQgKFFP
YmplY3Q6OipvbTNfdDEzMCkoRm9jdXNQb2xpY3kpOwogICAgdHlwZWRlZiBib29sIChRV2lkZ2V0
OjoqbTNfdDEzMikoKWNvbnN0OwogICAgdHlwZWRlZiBib29sIChRT2JqZWN0Ojoqb20zX3QxMzIp
KCljb25zdDsKICAgIHR5cGVkZWYgYm9vbCAoUVdpZGdldDo6Km0zX3QxMzUpKCljb25zdDsKICAg
IHR5cGVkZWYgYm9vbCAoUU9iamVjdDo6Km9tM190MTM1KSgpY29uc3Q7CiAgICB0eXBlZGVmIHZv
aWQgKFFXaWRnZXQ6OiptM190MTM2KShib29sKTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6
Km9tM190MTM2KShib29sKTsKICAgIHR5cGVkZWYgYm9vbCAoUVdpZGdldDo6Km0zX3QxMzgpKClj
b25zdDsKICAgIHR5cGVkZWYgYm9vbCAoUU9iamVjdDo6Km9tM190MTM4KSgpY29uc3Q7CiAgICB0
eXBlZGVmIFFSZWN0IChRV2lkZ2V0OjoqbTNfdDE0MSkoKWNvbnN0OwogICAgdHlwZWRlZiBRUmVj
dCAoUU9iamVjdDo6Km9tM190MTQxKSgpY29uc3Q7CiAgICB0eXBlZGVmIGJvb2wgKFFXaWRnZXQ6
OiptM190MTQ0KSgpY29uc3Q7CiAgICB0eXBlZGVmIGJvb2wgKFFPYmplY3Q6OipvbTNfdDE0NCko
KWNvbnN0OwogICAgdHlwZWRlZiBib29sIChRV2lkZ2V0OjoqbTNfdDE0NykoKWNvbnN0OwogICAg
dHlwZWRlZiBib29sIChRT2JqZWN0Ojoqb20zX3QxNDcpKCljb25zdDsKICAgIHR5cGVkZWYgUVNp
emUgKFFXaWRnZXQ6OiptM190MTUwKSgpY29uc3Q7CiAgICB0eXBlZGVmIFFTaXplIChRT2JqZWN0
Ojoqb20zX3QxNTApKCljb25zdDsKICAgIHR5cGVkZWYgUVNpemUgKFFXaWRnZXQ6OiptM190MTUz
KSgpY29uc3Q7CiAgICB0eXBlZGVmIFFTaXplIChRT2JqZWN0Ojoqb20zX3QxNTMpKCljb25zdDsK
ICAgIHR5cGVkZWYgUVJlY3QgKFFXaWRnZXQ6OiptM190MTU2KSgpY29uc3Q7CiAgICB0eXBlZGVm
IFFSZWN0IChRT2JqZWN0Ojoqb20zX3QxNTYpKCljb25zdDsKICAgIHR5cGVkZWYgYm9vbCAoUVdp
ZGdldDo6Km0zX3QxNTkpKCljb25zdDsKICAgIHR5cGVkZWYgYm9vbCAoUU9iamVjdDo6Km9tM190
MTU5KSgpY29uc3Q7CiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptM190MTYwKShib29sKTsK
ICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tM190MTYwKShib29sKTsKICAgIHR5cGVkZWYg
Ym9vbCAoUVdpZGdldDo6Km0zX3QxNjIpKCljb25zdDsKICAgIHR5cGVkZWYgYm9vbCAoUU9iamVj
dDo6Km9tM190MTYyKSgpY29uc3Q7CiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptM190MTYz
KShib29sKTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tM190MTYzKShib29sKTsKICAg
IHR5cGVkZWYgQmFja2dyb3VuZE9yaWdpbiAoUVdpZGdldDo6Km0zX3QxNjUpKCljb25zdDsKICAg
IHR5cGVkZWYgQmFja2dyb3VuZE9yaWdpbiAoUU9iamVjdDo6Km9tM190MTY1KSgpY29uc3Q7CiAg
ICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptM190MTY2KShCYWNrZ3JvdW5kT3JpZ2luKTsKICAg
IHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tM190MTY2KShCYWNrZ3JvdW5kT3JpZ2luKTsKICAg
IHR5cGVkZWYgYm9vbCAoUVdpZGdldDo6Km0zX3QxNjgpKCljb25zdDsKICAgIHR5cGVkZWYgYm9v
bCAoUU9iamVjdDo6Km9tM190MTY4KSgpY29uc3Q7CiAgICBtM190MCB2M18wID0gJlFXaWRnZXQ6
OmlzVG9wTGV2ZWw7CiAgICBvbTNfdDAgb3YzXzAgPSAob20zX3QwKXYzXzA7CiAgICBtM190MyB2
M18zID0gJlFXaWRnZXQ6OmlzTW9kYWw7CiAgICBvbTNfdDMgb3YzXzMgPSAob20zX3QzKXYzXzM7
CiAgICBtM190NiB2M182ID0gJlFXaWRnZXQ6OmlzUG9wdXA7CiAgICBvbTNfdDYgb3YzXzYgPSAo
b20zX3Q2KXYzXzY7CiAgICBtM190OSB2M185ID0gJlFXaWRnZXQ6OmlzRGVza3RvcDsKICAgIG9t
M190OSBvdjNfOSA9IChvbTNfdDkpdjNfOTsKICAgIG0zX3QxMiB2M18xMiA9ICZRV2lkZ2V0Ojpp
c0VuYWJsZWQ7CiAgICBvbTNfdDEyIG92M18xMiA9IChvbTNfdDEyKXYzXzEyOwogICAgbTNfdDEz
IHYzXzEzID0gJlFXaWRnZXQ6OnNldEVuYWJsZWQ7CiAgICBvbTNfdDEzIG92M18xMyA9IChvbTNf
dDEzKXYzXzEzOwogICAgbTNfdDE1IHYzXzE1ID0gJlFXaWRnZXQ6Omdlb21ldHJ5OwogICAgb20z
X3QxNSBvdjNfMTUgPSAob20zX3QxNSl2M18xNTsKICAgIG0zX3QxNiB2M18xNiA9ICZRV2lkZ2V0
OjpzZXRHZW9tZXRyeTsKICAgIG9tM190MTYgb3YzXzE2ID0gKG9tM190MTYpdjNfMTY7CiAgICBt
M190MTggdjNfMTggPSAmUVdpZGdldDo6ZnJhbWVHZW9tZXRyeTsKICAgIG9tM190MTggb3YzXzE4
ID0gKG9tM190MTgpdjNfMTg7CiAgICBtM190MjEgdjNfMjEgPSAmUVdpZGdldDo6eDsKICAgIG9t
M190MjEgb3YzXzIxID0gKG9tM190MjEpdjNfMjE7CiAgICBtM190MjQgdjNfMjQgPSAmUVdpZGdl
dDo6eTsKICAgIG9tM190MjQgb3YzXzI0ID0gKG9tM190MjQpdjNfMjQ7CiAgICBtM190MjcgdjNf
MjcgPSAmUVdpZGdldDo6cG9zOwogICAgb20zX3QyNyBvdjNfMjcgPSAob20zX3QyNyl2M18yNzsK
ICAgIG0zX3QzMCB2M18zMCA9ICZRV2lkZ2V0OjpmcmFtZVNpemU7CiAgICBvbTNfdDMwIG92M18z
MCA9IChvbTNfdDMwKXYzXzMwOwogICAgbTNfdDMzIHYzXzMzID0gJlFXaWRnZXQ6OnNpemU7CiAg
ICBvbTNfdDMzIG92M18zMyA9IChvbTNfdDMzKXYzXzMzOwogICAgbTNfdDM0IHYzXzM0ID0gJlFX
aWRnZXQ6OnJlc2l6ZTsKICAgIG9tM190MzQgb3YzXzM0ID0gKG9tM190MzQpdjNfMzQ7CiAgICBt
M190MzYgdjNfMzYgPSAmUVdpZGdldDo6d2lkdGg7CiAgICBvbTNfdDM2IG92M18zNiA9IChvbTNf
dDM2KXYzXzM2OwogICAgbTNfdDM5IHYzXzM5ID0gJlFXaWRnZXQ6OmhlaWdodDsKICAgIG9tM190
Mzkgb3YzXzM5ID0gKG9tM190MzkpdjNfMzk7CiAgICBtM190NDIgdjNfNDIgPSAmUVdpZGdldDo6
cmVjdDsKICAgIG9tM190NDIgb3YzXzQyID0gKG9tM190NDIpdjNfNDI7CiAgICBtM190NDUgdjNf
NDUgPSAmUVdpZGdldDo6Y2hpbGRyZW5SZWN0OwogICAgb20zX3Q0NSBvdjNfNDUgPSAob20zX3Q0
NSl2M180NTsKICAgIG0zX3Q0OCB2M180OCA9ICZRV2lkZ2V0OjpjaGlsZHJlblJlZ2lvbjsKICAg
IG9tM190NDggb3YzXzQ4ID0gKG9tM190NDgpdjNfNDg7CiAgICBtM190NTEgdjNfNTEgPSAmUVdp
ZGdldDo6c2l6ZVBvbGljeTsKICAgIG9tM190NTEgb3YzXzUxID0gKG9tM190NTEpdjNfNTE7CiAg
ICBtM190NTIgdjNfNTIgPSAmUVdpZGdldDo6c2V0U2l6ZVBvbGljeTsKICAgIG9tM190NTIgb3Yz
XzUyID0gKG9tM190NTIpdjNfNTI7CiAgICBtM190NTQgdjNfNTQgPSAmUVdpZGdldDo6bWluaW11
bVNpemU7CiAgICBvbTNfdDU0IG92M181NCA9IChvbTNfdDU0KXYzXzU0OwogICAgbTNfdDU1IHYz
XzU1ID0gJlFXaWRnZXQ6OnNldE1pbmltdW1TaXplOwogICAgb20zX3Q1NSBvdjNfNTUgPSAob20z
X3Q1NSl2M181NTsKICAgIG0zX3Q1NyB2M181NyA9ICZRV2lkZ2V0OjptYXhpbXVtU2l6ZTsKICAg
IG9tM190NTcgb3YzXzU3ID0gKG9tM190NTcpdjNfNTc7CiAgICBtM190NTggdjNfNTggPSAmUVdp
ZGdldDo6c2V0TWF4aW11bVNpemU7CiAgICBvbTNfdDU4IG92M181OCA9IChvbTNfdDU4KXYzXzU4
OwogICAgbTNfdDYwIHYzXzYwID0gJlFXaWRnZXQ6Om1pbmltdW1XaWR0aDsKICAgIG9tM190NjAg
b3YzXzYwID0gKG9tM190NjApdjNfNjA7CiAgICBtM190NjEgdjNfNjEgPSAmUVdpZGdldDo6c2V0
TWluaW11bVdpZHRoOwogICAgb20zX3Q2MSBvdjNfNjEgPSAob20zX3Q2MSl2M182MTsKICAgIG0z
X3Q2MyB2M182MyA9ICZRV2lkZ2V0OjptaW5pbXVtSGVpZ2h0OwogICAgb20zX3Q2MyBvdjNfNjMg
PSAob20zX3Q2Myl2M182MzsKICAgIG0zX3Q2NCB2M182NCA9ICZRV2lkZ2V0OjpzZXRNaW5pbXVt
SGVpZ2h0OwogICAgb20zX3Q2NCBvdjNfNjQgPSAob20zX3Q2NCl2M182NDsKICAgIG0zX3Q2NiB2
M182NiA9ICZRV2lkZ2V0OjptYXhpbXVtV2lkdGg7CiAgICBvbTNfdDY2IG92M182NiA9IChvbTNf
dDY2KXYzXzY2OwogICAgbTNfdDY3IHYzXzY3ID0gJlFXaWRnZXQ6OnNldE1heGltdW1XaWR0aDsK
ICAgIG9tM190Njcgb3YzXzY3ID0gKG9tM190NjcpdjNfNjc7CiAgICBtM190NjkgdjNfNjkgPSAm
UVdpZGdldDo6bWF4aW11bUhlaWdodDsKICAgIG9tM190Njkgb3YzXzY5ID0gKG9tM190NjkpdjNf
Njk7CiAgICBtM190NzAgdjNfNzAgPSAmUVdpZGdldDo6c2V0TWF4aW11bUhlaWdodDsKICAgIG9t
M190NzAgb3YzXzcwID0gKG9tM190NzApdjNfNzA7CiAgICBtM190NzIgdjNfNzIgPSAmUVdpZGdl
dDo6c2l6ZUluY3JlbWVudDsKICAgIG9tM190NzIgb3YzXzcyID0gKG9tM190NzIpdjNfNzI7CiAg
ICBtM190NzMgdjNfNzMgPSAmUVdpZGdldDo6c2V0U2l6ZUluY3JlbWVudDsKICAgIG9tM190NzMg
b3YzXzczID0gKG9tM190NzMpdjNfNzM7CiAgICBtM190NzUgdjNfNzUgPSAmUVdpZGdldDo6YmFz
ZVNpemU7CiAgICBvbTNfdDc1IG92M183NSA9IChvbTNfdDc1KXYzXzc1OwogICAgbTNfdDc2IHYz
Xzc2ID0gJlFXaWRnZXQ6OnNldEJhc2VTaXplOwogICAgb20zX3Q3NiBvdjNfNzYgPSAob20zX3Q3
Nil2M183NjsKICAgIG0zX3Q3OCB2M183OCA9ICZRV2lkZ2V0OjpiYWNrZ3JvdW5kTW9kZTsKICAg
IG9tM190Nzggb3YzXzc4ID0gKG9tM190NzgpdjNfNzg7CiAgICBtM190NzkgdjNfNzkgPSAmUVdp
ZGdldDo6c2V0QmFja2dyb3VuZE1vZGU7CiAgICBvbTNfdDc5IG92M183OSA9IChvbTNfdDc5KXYz
Xzc5OwogICAgbTNfdDgxIHYzXzgxID0gJlFXaWRnZXQ6OmJhY2tncm91bmRDb2xvcjsKICAgIG9t
M190ODEgb3YzXzgxID0gKG9tM190ODEpdjNfODE7CiAgICBtM190ODIgdjNfODIgPSAmUVdpZGdl
dDo6c2V0QmFja2dyb3VuZENvbG9yOwogICAgb20zX3Q4MiBvdjNfODIgPSAob20zX3Q4Mil2M184
MjsKICAgIG0zX3Q4NCB2M184NCA9ICZRV2lkZ2V0Ojpmb3JlZ3JvdW5kQ29sb3I7CiAgICBvbTNf
dDg0IG92M184NCA9IChvbTNfdDg0KXYzXzg0OwogICAgbTNfdDg3IHYzXzg3ID0gJlFXaWRnZXQ6
OmJhY2tncm91bmRQaXhtYXA7CiAgICBvbTNfdDg3IG92M184NyA9IChvbTNfdDg3KXYzXzg3Owog
ICAgbTNfdDg4IHYzXzg4ID0gJlFXaWRnZXQ6OnNldEJhY2tncm91bmRQaXhtYXA7CiAgICBvbTNf
dDg4IG92M184OCA9IChvbTNfdDg4KXYzXzg4OwogICAgbTNfdDkwIHYzXzkwID0gJlFXaWRnZXQ6
OmNvbG9yR3JvdXA7CiAgICBvbTNfdDkwIG92M185MCA9IChvbTNfdDkwKXYzXzkwOwogICAgbTNf
dDkzIHYzXzkzID0gJlFXaWRnZXQ6OnBhbGV0dGU7CiAgICBvbTNfdDkzIG92M185MyA9IChvbTNf
dDkzKXYzXzkzOwogICAgbTNfdDk0IHYzXzk0ID0gJlFXaWRnZXQ6OnNldFBhbGV0dGU7CiAgICBv
bTNfdDk0IG92M185NCA9IChvbTNfdDk0KXYzXzk0OwogICAgbTNfdDk1IHYzXzk1ID0gJlFXaWRn
ZXQ6OnVuc2V0UGFsZXR0ZTsKICAgIG9tM190OTUgb3YzXzk1ID0gKG9tM190OTUpdjNfOTU7CiAg
ICBtM190OTYgdjNfOTYgPSAmUVdpZGdldDo6b3duUGFsZXR0ZTsKICAgIG9tM190OTYgb3YzXzk2
ID0gKG9tM190OTYpdjNfOTY7CiAgICBtM190OTkgdjNfOTkgPSAmUVdpZGdldDo6Zm9udDsKICAg
IG9tM190OTkgb3YzXzk5ID0gKG9tM190OTkpdjNfOTk7CiAgICBtM190MTAwIHYzXzEwMCA9ICZR
V2lkZ2V0OjpzZXRGb250OwogICAgb20zX3QxMDAgb3YzXzEwMCA9IChvbTNfdDEwMCl2M18xMDA7
CiAgICBtM190MTAxIHYzXzEwMSA9ICZRV2lkZ2V0Ojp1bnNldEZvbnQ7CiAgICBvbTNfdDEwMSBv
djNfMTAxID0gKG9tM190MTAxKXYzXzEwMTsKICAgIG0zX3QxMDIgdjNfMTAyID0gJlFXaWRnZXQ6
Om93bkZvbnQ7CiAgICBvbTNfdDEwMiBvdjNfMTAyID0gKG9tM190MTAyKXYzXzEwMjsKICAgIG0z
X3QxMDUgdjNfMTA1ID0gJlFXaWRnZXQ6OmN1cnNvcjsKICAgIG9tM190MTA1IG92M18xMDUgPSAo
b20zX3QxMDUpdjNfMTA1OwogICAgbTNfdDEwNiB2M18xMDYgPSAmUVdpZGdldDo6c2V0Q3Vyc29y
OwogICAgb20zX3QxMDYgb3YzXzEwNiA9IChvbTNfdDEwNil2M18xMDY7CiAgICBtM190MTA3IHYz
XzEwNyA9ICZRV2lkZ2V0Ojp1bnNldEN1cnNvcjsKICAgIG9tM190MTA3IG92M18xMDcgPSAob20z
X3QxMDcpdjNfMTA3OwogICAgbTNfdDEwOCB2M18xMDggPSAmUVdpZGdldDo6b3duQ3Vyc29yOwog
ICAgb20zX3QxMDggb3YzXzEwOCA9IChvbTNfdDEwOCl2M18xMDg7CiAgICBtM190MTExIHYzXzEx
MSA9ICZRV2lkZ2V0OjpjYXB0aW9uOwogICAgb20zX3QxMTEgb3YzXzExMSA9IChvbTNfdDExMSl2
M18xMTE7CiAgICBtM190MTEyIHYzXzExMiA9ICZRV2lkZ2V0OjpzZXRDYXB0aW9uOwogICAgb20z
X3QxMTIgb3YzXzExMiA9IChvbTNfdDExMil2M18xMTI7CiAgICBtM190MTE0IHYzXzExNCA9ICZR
V2lkZ2V0OjppY29uOwogICAgb20zX3QxMTQgb3YzXzExNCA9IChvbTNfdDExNCl2M18xMTQ7CiAg
ICBtM190MTE1IHYzXzExNSA9ICZRV2lkZ2V0OjpzZXRJY29uOwogICAgb20zX3QxMTUgb3YzXzEx
NSA9IChvbTNfdDExNSl2M18xMTU7CiAgICBtM190MTE3IHYzXzExNyA9ICZRV2lkZ2V0OjppY29u
VGV4dDsKICAgIG9tM190MTE3IG92M18xMTcgPSAob20zX3QxMTcpdjNfMTE3OwogICAgbTNfdDEx
OCB2M18xMTggPSAmUVdpZGdldDo6c2V0SWNvblRleHQ7CiAgICBvbTNfdDExOCBvdjNfMTE4ID0g
KG9tM190MTE4KXYzXzExODsKICAgIG0zX3QxMjAgdjNfMTIwID0gJlFXaWRnZXQ6Omhhc01vdXNl
VHJhY2tpbmc7CiAgICBvbTNfdDEyMCBvdjNfMTIwID0gKG9tM190MTIwKXYzXzEyMDsKICAgIG0z
X3QxMjEgdjNfMTIxID0gJlFXaWRnZXQ6OnNldE1vdXNlVHJhY2tpbmc7CiAgICBvbTNfdDEyMSBv
djNfMTIxID0gKG9tM190MTIxKXYzXzEyMTsKICAgIG0zX3QxMjMgdjNfMTIzID0gJlFXaWRnZXQ6
OmlzQWN0aXZlV2luZG93OwogICAgb20zX3QxMjMgb3YzXzEyMyA9IChvbTNfdDEyMyl2M18xMjM7
CiAgICBtM190MTI2IHYzXzEyNiA9ICZRV2lkZ2V0Ojppc0ZvY3VzRW5hYmxlZDsKICAgIG9tM190
MTI2IG92M18xMjYgPSAob20zX3QxMjYpdjNfMTI2OwogICAgbTNfdDEyOSB2M18xMjkgPSAmUVdp
ZGdldDo6Zm9jdXNQb2xpY3k7CiAgICBvbTNfdDEyOSBvdjNfMTI5ID0gKG9tM190MTI5KXYzXzEy
OTsKICAgIG0zX3QxMzAgdjNfMTMwID0gJlFXaWRnZXQ6OnNldEZvY3VzUG9saWN5OwogICAgb20z
X3QxMzAgb3YzXzEzMCA9IChvbTNfdDEzMCl2M18xMzA7CiAgICBtM190MTMyIHYzXzEzMiA9ICZR
V2lkZ2V0OjpoYXNGb2N1czsKICAgIG9tM190MTMyIG92M18xMzIgPSAob20zX3QxMzIpdjNfMTMy
OwogICAgbTNfdDEzNSB2M18xMzUgPSAmUVdpZGdldDo6aXNVcGRhdGVzRW5hYmxlZDsKICAgIG9t
M190MTM1IG92M18xMzUgPSAob20zX3QxMzUpdjNfMTM1OwogICAgbTNfdDEzNiB2M18xMzYgPSAm
UVdpZGdldDo6c2V0VXBkYXRlc0VuYWJsZWQ7CiAgICBvbTNfdDEzNiBvdjNfMTM2ID0gKG9tM190
MTM2KXYzXzEzNjsKICAgIG0zX3QxMzggdjNfMTM4ID0gJlFXaWRnZXQ6OmlzVmlzaWJsZTsKICAg
IG9tM190MTM4IG92M18xMzggPSAob20zX3QxMzgpdjNfMTM4OwogICAgbTNfdDE0MSB2M18xNDEg
PSAmUVdpZGdldDo6dmlzaWJsZVJlY3Q7CiAgICBvbTNfdDE0MSBvdjNfMTQxID0gKG9tM190MTQx
KXYzXzE0MTsKICAgIG0zX3QxNDQgdjNfMTQ0ID0gJlFXaWRnZXQ6OmlzSGlkZGVuOwogICAgb20z
X3QxNDQgb3YzXzE0NCA9IChvbTNfdDE0NCl2M18xNDQ7CiAgICBtM190MTQ3IHYzXzE0NyA9ICZR
V2lkZ2V0Ojppc01pbmltaXplZDsKICAgIG9tM190MTQ3IG92M18xNDcgPSAob20zX3QxNDcpdjNf
MTQ3OwogICAgbTNfdDE1MCB2M18xNTAgPSAmUVdpZGdldDo6c2l6ZUhpbnQ7CiAgICBvbTNfdDE1
MCBvdjNfMTUwID0gKG9tM190MTUwKXYzXzE1MDsKICAgIG0zX3QxNTMgdjNfMTUzID0gJlFXaWRn
ZXQ6Om1pbmltdW1TaXplSGludDsKICAgIG9tM190MTUzIG92M18xNTMgPSAob20zX3QxNTMpdjNf
MTUzOwogICAgbTNfdDE1NiB2M18xNTYgPSAmUVdpZGdldDo6bWljcm9Gb2N1c0hpbnQ7CiAgICBv
bTNfdDE1NiBvdjNfMTU2ID0gKG9tM190MTU2KXYzXzE1NjsKICAgIG0zX3QxNTkgdjNfMTU5ID0g
JlFXaWRnZXQ6OmFjY2VwdERyb3BzOwogICAgb20zX3QxNTkgb3YzXzE1OSA9IChvbTNfdDE1OSl2
M18xNTk7CiAgICBtM190MTYwIHYzXzE2MCA9ICZRV2lkZ2V0OjpzZXRBY2NlcHREcm9wczsKICAg
IG9tM190MTYwIG92M18xNjAgPSAob20zX3QxNjApdjNfMTYwOwogICAgbTNfdDE2MiB2M18xNjIg
PSAmUVdpZGdldDo6YXV0b01hc2s7CiAgICBvbTNfdDE2MiBvdjNfMTYyID0gKG9tM190MTYyKXYz
XzE2MjsKICAgIG0zX3QxNjMgdjNfMTYzID0gJlFXaWRnZXQ6OnNldEF1dG9NYXNrOwogICAgb20z
X3QxNjMgb3YzXzE2MyA9IChvbTNfdDE2Myl2M18xNjM7CiAgICBtM190MTY1IHYzXzE2NSA9ICZR
V2lkZ2V0OjpiYWNrZ3JvdW5kT3JpZ2luOwogICAgb20zX3QxNjUgb3YzXzE2NSA9IChvbTNfdDE2
NSl2M18xNjU7CiAgICBtM190MTY2IHYzXzE2NiA9ICZRV2lkZ2V0OjpzZXRCYWNrZ3JvdW5kT3Jp
Z2luOwogICAgb20zX3QxNjYgb3YzXzE2NiA9IChvbTNfdDE2Nil2M18xNjY7CiAgICBtM190MTY4
IHYzXzE2OCA9ICZRV2lkZ2V0OjpjdXN0b21XaGF0c1RoaXM7CiAgICBvbTNfdDE2OCBvdjNfMTY4
ID0gKG9tM190MTY4KXYzXzE2ODsKICAgIFFNZXRhUHJvcGVydHkgKnByb3BzX3RibCA9IFFNZXRh
T2JqZWN0OjpuZXdfbWV0YXByb3BlcnR5KCA1NyApOwogICAgcHJvcHNfdGJsWzBdLnQgPSAiYm9v
bCI7CiAgICBwcm9wc190YmxbMF0ubiA9ICJpc1RvcExldmVsIjsKICAgIHByb3BzX3RibFswXS5n
ZXQgPSAoUU1lbWJlcilvdjNfMDsKICAgIHByb3BzX3RibFswXS5zZXQgPSAwOwogICAgcHJvcHNf
dGJsWzBdLnJlc2V0ID0gMDsKICAgIHByb3BzX3RibFswXS5nc3BlYyA9IFFNZXRhUHJvcGVydHk6
OkNsYXNzOwogICAgcHJvcHNfdGJsWzBdLnNzcGVjID0gUU1ldGFQcm9wZXJ0eTo6VW5zcGVjaWZp
ZWQ7CiAgICBwcm9wc190YmxbMV0udCA9ICJib29sIjsKICAgIHByb3BzX3RibFsxXS5uID0gImlz
TW9kYWwiOwogICAgcHJvcHNfdGJsWzFdLmdldCA9IChRTWVtYmVyKW92M18zOwogICAgcHJvcHNf
dGJsWzFdLnNldCA9IDA7CiAgICBwcm9wc190YmxbMV0ucmVzZXQgPSAwOwogICAgcHJvcHNfdGJs
WzFdLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAgICBwcm9wc190YmxbMV0uc3NwZWMg
PSBRTWV0YVByb3BlcnR5OjpVbnNwZWNpZmllZDsKICAgIHByb3BzX3RibFsyXS50ID0gImJvb2wi
OwogICAgcHJvcHNfdGJsWzJdLm4gPSAiaXNQb3B1cCI7CiAgICBwcm9wc190YmxbMl0uZ2V0ID0g
KFFNZW1iZXIpb3YzXzY7CiAgICBwcm9wc190YmxbMl0uc2V0ID0gMDsKICAgIHByb3BzX3RibFsy
XS5yZXNldCA9IDA7CiAgICBwcm9wc190YmxbMl0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFz
czsKICAgIHByb3BzX3RibFsyXS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6OlVuc3BlY2lmaWVkOwog
ICAgcHJvcHNfdGJsWzNdLnQgPSAiYm9vbCI7CiAgICBwcm9wc190YmxbM10ubiA9ICJpc0Rlc2t0
b3AiOwogICAgcHJvcHNfdGJsWzNdLmdldCA9IChRTWVtYmVyKW92M185OwogICAgcHJvcHNfdGJs
WzNdLnNldCA9IDA7CiAgICBwcm9wc190YmxbM10ucmVzZXQgPSAwOwogICAgcHJvcHNfdGJsWzNd
LmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAgICBwcm9wc190YmxbM10uc3NwZWMgPSBR
TWV0YVByb3BlcnR5OjpVbnNwZWNpZmllZDsKICAgIHByb3BzX3RibFs0XS50ID0gImJvb2wiOwog
ICAgcHJvcHNfdGJsWzRdLm4gPSAiZW5hYmxlZCI7CiAgICBwcm9wc190YmxbNF0uZ2V0ID0gKFFN
ZW1iZXIpb3YzXzEyOwogICAgcHJvcHNfdGJsWzRdLnNldCA9IChRTWVtYmVyKW92M18xMzsKICAg
IHByb3BzX3RibFs0XS5yZXNldCA9IDA7CiAgICBwcm9wc190YmxbNF0uZ3NwZWMgPSBRTWV0YVBy
b3BlcnR5OjpDbGFzczsKICAgIHByb3BzX3RibFs0XS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6OkNs
YXNzOwogICAgcHJvcHNfdGJsWzRdLnNldEZsYWdzKFFNZXRhUHJvcGVydHk6OlN0ZFNldCk7CiAg
ICBwcm9wc190YmxbNV0udCA9ICJRUmVjdCI7CiAgICBwcm9wc190YmxbNV0ubiA9ICJnZW9tZXRy
eSI7CiAgICBwcm9wc190YmxbNV0uZ2V0ID0gKFFNZW1iZXIpb3YzXzE1OwogICAgcHJvcHNfdGJs
WzVdLnNldCA9IChRTWVtYmVyKW92M18xNjsKICAgIHByb3BzX3RibFs1XS5yZXNldCA9IDA7CiAg
ICBwcm9wc190YmxbNV0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5OjpSZWZlcmVuY2U7CiAgICBwcm9w
c190YmxbNV0uc3NwZWMgPSBRTWV0YVByb3BlcnR5OjpSZWZlcmVuY2U7CiAgICBwcm9wc190Ymxb
NV0uc2V0RmxhZ3MoUU1ldGFQcm9wZXJ0eTo6U3RkU2V0KTsKICAgIHByb3BzX3RibFs2XS50ID0g
IlFSZWN0IjsKICAgIHByb3BzX3RibFs2XS5uID0gImZyYW1lR2VvbWV0cnkiOwogICAgcHJvcHNf
dGJsWzZdLmdldCA9IChRTWVtYmVyKW92M18xODsKICAgIHByb3BzX3RibFs2XS5zZXQgPSAwOwog
ICAgcHJvcHNfdGJsWzZdLnJlc2V0ID0gMDsKICAgIHByb3BzX3RibFs2XS5nc3BlYyA9IFFNZXRh
UHJvcGVydHk6OkNsYXNzOwogICAgcHJvcHNfdGJsWzZdLnNzcGVjID0gUU1ldGFQcm9wZXJ0eTo6
VW5zcGVjaWZpZWQ7CiAgICBwcm9wc190YmxbN10udCA9ICJpbnQiOwogICAgcHJvcHNfdGJsWzdd
Lm4gPSAieCI7CiAgICBwcm9wc190YmxbN10uZ2V0ID0gKFFNZW1iZXIpb3YzXzIxOwogICAgcHJv
cHNfdGJsWzddLnNldCA9IDA7CiAgICBwcm9wc190YmxbN10ucmVzZXQgPSAwOwogICAgcHJvcHNf
dGJsWzddLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAgICBwcm9wc190YmxbN10uc3Nw
ZWMgPSBRTWV0YVByb3BlcnR5OjpVbnNwZWNpZmllZDsKICAgIHByb3BzX3RibFs4XS50ID0gImlu
dCI7CiAgICBwcm9wc190YmxbOF0ubiA9ICJ5IjsKICAgIHByb3BzX3RibFs4XS5nZXQgPSAoUU1l
bWJlcilvdjNfMjQ7CiAgICBwcm9wc190YmxbOF0uc2V0ID0gMDsKICAgIHByb3BzX3RibFs4XS5y
ZXNldCA9IDA7CiAgICBwcm9wc190YmxbOF0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsK
ICAgIHByb3BzX3RibFs4XS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6OlVuc3BlY2lmaWVkOwogICAg
cHJvcHNfdGJsWzldLnQgPSAiUVBvaW50IjsKICAgIHByb3BzX3RibFs5XS5uID0gInBvcyI7CiAg
ICBwcm9wc190YmxbOV0uZ2V0ID0gKFFNZW1iZXIpb3YzXzI3OwogICAgcHJvcHNfdGJsWzldLnNl
dCA9IDA7CiAgICBwcm9wc190YmxbOV0ucmVzZXQgPSAwOwogICAgcHJvcHNfdGJsWzldLmdzcGVj
ID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAgICBwcm9wc190YmxbOV0uc3NwZWMgPSBRTWV0YVBy
b3BlcnR5OjpVbnNwZWNpZmllZDsKICAgIHByb3BzX3RibFsxMF0udCA9ICJRU2l6ZSI7CiAgICBw
cm9wc190YmxbMTBdLm4gPSAiZnJhbWVTaXplIjsKICAgIHByb3BzX3RibFsxMF0uZ2V0ID0gKFFN
ZW1iZXIpb3YzXzMwOwogICAgcHJvcHNfdGJsWzEwXS5zZXQgPSAwOwogICAgcHJvcHNfdGJsWzEw
XS5yZXNldCA9IDA7CiAgICBwcm9wc190YmxbMTBdLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xh
c3M7CiAgICBwcm9wc190YmxbMTBdLnNzcGVjID0gUU1ldGFQcm9wZXJ0eTo6VW5zcGVjaWZpZWQ7
CiAgICBwcm9wc190YmxbMTFdLnQgPSAiUVNpemUiOwogICAgcHJvcHNfdGJsWzExXS5uID0gInNp
emUiOwogICAgcHJvcHNfdGJsWzExXS5nZXQgPSAoUU1lbWJlcilvdjNfMzM7CiAgICBwcm9wc190
YmxbMTFdLnNldCA9IChRTWVtYmVyKW92M18zNDsKICAgIHByb3BzX3RibFsxMV0ucmVzZXQgPSAw
OwogICAgcHJvcHNfdGJsWzExXS5nc3BlYyA9IFFNZXRhUHJvcGVydHk6OkNsYXNzOwogICAgcHJv
cHNfdGJsWzExXS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6OlJlZmVyZW5jZTsKICAgIHByb3BzX3Ri
bFsxMV0uc2V0RmxhZ3MoUU1ldGFQcm9wZXJ0eTo6Tm90RGVzaWduYWJsZSk7CiAgICBwcm9wc190
YmxbMTJdLnQgPSAiaW50IjsKICAgIHByb3BzX3RibFsxMl0ubiA9ICJ3aWR0aCI7CiAgICBwcm9w
c190YmxbMTJdLmdldCA9IChRTWVtYmVyKW92M18zNjsKICAgIHByb3BzX3RibFsxMl0uc2V0ID0g
MDsKICAgIHByb3BzX3RibFsxMl0ucmVzZXQgPSAwOwogICAgcHJvcHNfdGJsWzEyXS5nc3BlYyA9
IFFNZXRhUHJvcGVydHk6OkNsYXNzOwogICAgcHJvcHNfdGJsWzEyXS5zc3BlYyA9IFFNZXRhUHJv
cGVydHk6OlVuc3BlY2lmaWVkOwogICAgcHJvcHNfdGJsWzEzXS50ID0gImludCI7CiAgICBwcm9w
c190YmxbMTNdLm4gPSAiaGVpZ2h0IjsKICAgIHByb3BzX3RibFsxM10uZ2V0ID0gKFFNZW1iZXIp
b3YzXzM5OwogICAgcHJvcHNfdGJsWzEzXS5zZXQgPSAwOwogICAgcHJvcHNfdGJsWzEzXS5yZXNl
dCA9IDA7CiAgICBwcm9wc190YmxbMTNdLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAg
ICBwcm9wc190YmxbMTNdLnNzcGVjID0gUU1ldGFQcm9wZXJ0eTo6VW5zcGVjaWZpZWQ7CiAgICBw
cm9wc190YmxbMTRdLnQgPSAiUVJlY3QiOwogICAgcHJvcHNfdGJsWzE0XS5uID0gInJlY3QiOwog
ICAgcHJvcHNfdGJsWzE0XS5nZXQgPSAoUU1lbWJlcilvdjNfNDI7CiAgICBwcm9wc190YmxbMTRd
LnNldCA9IDA7CiAgICBwcm9wc190YmxbMTRdLnJlc2V0ID0gMDsKICAgIHByb3BzX3RibFsxNF0u
Z3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsKICAgIHByb3BzX3RibFsxNF0uc3NwZWMgPSBR
TWV0YVByb3BlcnR5OjpVbnNwZWNpZmllZDsKICAgIHByb3BzX3RibFsxNV0udCA9ICJRUmVjdCI7
CiAgICBwcm9wc190YmxbMTVdLm4gPSAiY2hpbGRyZW5SZWN0IjsKICAgIHByb3BzX3RibFsxNV0u
Z2V0ID0gKFFNZW1iZXIpb3YzXzQ1OwogICAgcHJvcHNfdGJsWzE1XS5zZXQgPSAwOwogICAgcHJv
cHNfdGJsWzE1XS5yZXNldCA9IDA7CiAgICBwcm9wc190YmxbMTVdLmdzcGVjID0gUU1ldGFQcm9w
ZXJ0eTo6Q2xhc3M7CiAgICBwcm9wc190YmxbMTVdLnNzcGVjID0gUU1ldGFQcm9wZXJ0eTo6VW5z
cGVjaWZpZWQ7CiAgICBwcm9wc190YmxbMTZdLnQgPSAiUVJlZ2lvbiI7CiAgICBwcm9wc190Ymxb
MTZdLm4gPSAiY2hpbGRyZW5SZWdpb24iOwogICAgcHJvcHNfdGJsWzE2XS5nZXQgPSAoUU1lbWJl
cilvdjNfNDg7CiAgICBwcm9wc190YmxbMTZdLnNldCA9IDA7CiAgICBwcm9wc190YmxbMTZdLnJl
c2V0ID0gMDsKICAgIHByb3BzX3RibFsxNl0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsK
ICAgIHByb3BzX3RibFsxNl0uc3NwZWMgPSBRTWV0YVByb3BlcnR5OjpVbnNwZWNpZmllZDsKICAg
IHByb3BzX3RibFsxN10udCA9ICJRU2l6ZVBvbGljeSI7CiAgICBwcm9wc190YmxbMTddLm4gPSAi
c2l6ZVBvbGljeSI7CiAgICBwcm9wc190YmxbMTddLmdldCA9IChRTWVtYmVyKW92M181MTsKICAg
IHByb3BzX3RibFsxN10uc2V0ID0gKFFNZW1iZXIpb3YzXzUyOwogICAgcHJvcHNfdGJsWzE3XS5y
ZXNldCA9IDA7CiAgICBwcm9wc190YmxbMTddLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7
CiAgICBwcm9wc190YmxbMTddLnNzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAgICBwcm9w
c190YmxbMTddLnNldEZsYWdzKFFNZXRhUHJvcGVydHk6OlN0ZFNldCk7CiAgICBwcm9wc190Ymxb
MThdLnQgPSAiUVNpemUiOwogICAgcHJvcHNfdGJsWzE4XS5uID0gIm1pbmltdW1TaXplIjsKICAg
IHByb3BzX3RibFsxOF0uZ2V0ID0gKFFNZW1iZXIpb3YzXzU0OwogICAgcHJvcHNfdGJsWzE4XS5z
ZXQgPSAoUU1lbWJlcilvdjNfNTU7CiAgICBwcm9wc190YmxbMThdLnJlc2V0ID0gMDsKICAgIHBy
b3BzX3RibFsxOF0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsKICAgIHByb3BzX3RibFsx
OF0uc3NwZWMgPSBRTWV0YVByb3BlcnR5OjpSZWZlcmVuY2U7CiAgICBwcm9wc190YmxbMThdLnNl
dEZsYWdzKFFNZXRhUHJvcGVydHk6OlN0ZFNldCk7CiAgICBwcm9wc190YmxbMTldLnQgPSAiUVNp
emUiOwogICAgcHJvcHNfdGJsWzE5XS5uID0gIm1heGltdW1TaXplIjsKICAgIHByb3BzX3RibFsx
OV0uZ2V0ID0gKFFNZW1iZXIpb3YzXzU3OwogICAgcHJvcHNfdGJsWzE5XS5zZXQgPSAoUU1lbWJl
cilvdjNfNTg7CiAgICBwcm9wc190YmxbMTldLnJlc2V0ID0gMDsKICAgIHByb3BzX3RibFsxOV0u
Z3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsKICAgIHByb3BzX3RibFsxOV0uc3NwZWMgPSBR
TWV0YVByb3BlcnR5OjpSZWZlcmVuY2U7CiAgICBwcm9wc190YmxbMTldLnNldEZsYWdzKFFNZXRh
UHJvcGVydHk6OlN0ZFNldCk7CiAgICBwcm9wc190YmxbMjBdLnQgPSAiaW50IjsKICAgIHByb3Bz
X3RibFsyMF0ubiA9ICJtaW5pbXVtV2lkdGgiOwogICAgcHJvcHNfdGJsWzIwXS5nZXQgPSAoUU1l
bWJlcilvdjNfNjA7CiAgICBwcm9wc190YmxbMjBdLnNldCA9IChRTWVtYmVyKW92M182MTsKICAg
IHByb3BzX3RibFsyMF0ucmVzZXQgPSAwOwogICAgcHJvcHNfdGJsWzIwXS5nc3BlYyA9IFFNZXRh
UHJvcGVydHk6OkNsYXNzOwogICAgcHJvcHNfdGJsWzIwXS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6
OkNsYXNzOwogICAgcHJvcHNfdGJsWzIwXS5zZXRGbGFncyhRTWV0YVByb3BlcnR5OjpOb3RTdG9y
ZWR8UU1ldGFQcm9wZXJ0eTo6U3RkU2V0KTsKICAgIHByb3BzX3RibFsyMV0udCA9ICJpbnQiOwog
ICAgcHJvcHNfdGJsWzIxXS5uID0gIm1pbmltdW1IZWlnaHQiOwogICAgcHJvcHNfdGJsWzIxXS5n
ZXQgPSAoUU1lbWJlcilvdjNfNjM7CiAgICBwcm9wc190YmxbMjFdLnNldCA9IChRTWVtYmVyKW92
M182NDsKICAgIHByb3BzX3RibFsyMV0ucmVzZXQgPSAwOwogICAgcHJvcHNfdGJsWzIxXS5nc3Bl
YyA9IFFNZXRhUHJvcGVydHk6OkNsYXNzOwogICAgcHJvcHNfdGJsWzIxXS5zc3BlYyA9IFFNZXRh
UHJvcGVydHk6OkNsYXNzOwogICAgcHJvcHNfdGJsWzIxXS5zZXRGbGFncyhRTWV0YVByb3BlcnR5
OjpOb3RTdG9yZWR8UU1ldGFQcm9wZXJ0eTo6U3RkU2V0KTsKICAgIHByb3BzX3RibFsyMl0udCA9
ICJpbnQiOwogICAgcHJvcHNfdGJsWzIyXS5uID0gIm1heGltdW1XaWR0aCI7CiAgICBwcm9wc190
YmxbMjJdLmdldCA9IChRTWVtYmVyKW92M182NjsKICAgIHByb3BzX3RibFsyMl0uc2V0ID0gKFFN
ZW1iZXIpb3YzXzY3OwogICAgcHJvcHNfdGJsWzIyXS5yZXNldCA9IDA7CiAgICBwcm9wc190Ymxb
MjJdLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAgICBwcm9wc190YmxbMjJdLnNzcGVj
ID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAgICBwcm9wc190YmxbMjJdLnNldEZsYWdzKFFNZXRh
UHJvcGVydHk6Ok5vdFN0b3JlZHxRTWV0YVByb3BlcnR5OjpTdGRTZXQpOwogICAgcHJvcHNfdGJs
WzIzXS50ID0gImludCI7CiAgICBwcm9wc190YmxbMjNdLm4gPSAibWF4aW11bUhlaWdodCI7CiAg
ICBwcm9wc190YmxbMjNdLmdldCA9IChRTWVtYmVyKW92M182OTsKICAgIHByb3BzX3RibFsyM10u
c2V0ID0gKFFNZW1iZXIpb3YzXzcwOwogICAgcHJvcHNfdGJsWzIzXS5yZXNldCA9IDA7CiAgICBw
cm9wc190YmxbMjNdLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAgICBwcm9wc190Ymxb
MjNdLnNzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAgICBwcm9wc190YmxbMjNdLnNldEZs
YWdzKFFNZXRhUHJvcGVydHk6Ok5vdFN0b3JlZHxRTWV0YVByb3BlcnR5OjpTdGRTZXQpOwogICAg
cHJvcHNfdGJsWzI0XS50ID0gIlFTaXplIjsKICAgIHByb3BzX3RibFsyNF0ubiA9ICJzaXplSW5j
cmVtZW50IjsKICAgIHByb3BzX3RibFsyNF0uZ2V0ID0gKFFNZW1iZXIpb3YzXzcyOwogICAgcHJv
cHNfdGJsWzI0XS5zZXQgPSAoUU1lbWJlcilvdjNfNzM7CiAgICBwcm9wc190YmxbMjRdLnJlc2V0
ID0gMDsKICAgIHByb3BzX3RibFsyNF0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsKICAg
IHByb3BzX3RibFsyNF0uc3NwZWMgPSBRTWV0YVByb3BlcnR5OjpSZWZlcmVuY2U7CiAgICBwcm9w
c190YmxbMjRdLnNldEZsYWdzKFFNZXRhUHJvcGVydHk6OlN0ZFNldCk7CiAgICBwcm9wc190Ymxb
MjVdLnQgPSAiUVNpemUiOwogICAgcHJvcHNfdGJsWzI1XS5uID0gImJhc2VTaXplIjsKICAgIHBy
b3BzX3RibFsyNV0uZ2V0ID0gKFFNZW1iZXIpb3YzXzc1OwogICAgcHJvcHNfdGJsWzI1XS5zZXQg
PSAoUU1lbWJlcilvdjNfNzY7CiAgICBwcm9wc190YmxbMjVdLnJlc2V0ID0gMDsKICAgIHByb3Bz
X3RibFsyNV0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsKICAgIHByb3BzX3RibFsyNV0u
c3NwZWMgPSBRTWV0YVByb3BlcnR5OjpSZWZlcmVuY2U7CiAgICBwcm9wc190YmxbMjVdLnNldEZs
YWdzKFFNZXRhUHJvcGVydHk6OlN0ZFNldCk7CiAgICBwcm9wc190YmxbMjZdLnQgPSAiQmFja2dy
b3VuZE1vZGUiOwogICAgcHJvcHNfdGJsWzI2XS5uID0gImJhY2tncm91bmRNb2RlIjsKICAgIHBy
b3BzX3RibFsyNl0uZ2V0ID0gKFFNZW1iZXIpb3YzXzc4OwogICAgcHJvcHNfdGJsWzI2XS5zZXQg
PSAoUU1lbWJlcilvdjNfNzk7CiAgICBwcm9wc190YmxbMjZdLnJlc2V0ID0gMDsKICAgIHByb3Bz
X3RibFsyNl0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsKICAgIHByb3BzX3RibFsyNl0u
c3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsKICAgIHByb3BzX3RibFsyNl0uZW51bURhdGEg
PSAmZW51bV90YmxbMF07CiAgICBwcm9wc190YmxbMjZdLnNldEZsYWdzKFFNZXRhUHJvcGVydHk6
Ok5vdERlc2lnbmFibGV8UU1ldGFQcm9wZXJ0eTo6U3RkU2V0KTsKICAgIHByb3BzX3RibFsyN10u
dCA9ICJRQ29sb3IiOwogICAgcHJvcHNfdGJsWzI3XS5uID0gImJhY2tncm91bmRDb2xvciI7CiAg
ICBwcm9wc190YmxbMjddLmdldCA9IChRTWVtYmVyKW92M184MTsKICAgIHByb3BzX3RibFsyN10u
c2V0ID0gKFFNZW1iZXIpb3YzXzgyOwogICAgcHJvcHNfdGJsWzI3XS5yZXNldCA9IDA7CiAgICBw
cm9wc190YmxbMjddLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6UmVmZXJlbmNlOwogICAgcHJvcHNf
dGJsWzI3XS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6OlJlZmVyZW5jZTsKICAgIHByb3BzX3RibFsy
N10uc2V0RmxhZ3MoUU1ldGFQcm9wZXJ0eTo6Tm90RGVzaWduYWJsZXxRTWV0YVByb3BlcnR5OjpT
dGRTZXQpOwogICAgcHJvcHNfdGJsWzI4XS50ID0gIlFDb2xvciI7CiAgICBwcm9wc190YmxbMjhd
Lm4gPSAiZm9yZWdyb3VuZENvbG9yIjsKICAgIHByb3BzX3RibFsyOF0uZ2V0ID0gKFFNZW1iZXIp
b3YzXzg0OwogICAgcHJvcHNfdGJsWzI4XS5zZXQgPSAwOwogICAgcHJvcHNfdGJsWzI4XS5yZXNl
dCA9IDA7CiAgICBwcm9wc190YmxbMjhdLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6UmVmZXJlbmNl
OwogICAgcHJvcHNfdGJsWzI4XS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6OlVuc3BlY2lmaWVkOwog
ICAgcHJvcHNfdGJsWzI5XS50ID0gIlFQaXhtYXAiOwogICAgcHJvcHNfdGJsWzI5XS5uID0gImJh
Y2tncm91bmRQaXhtYXAiOwogICAgcHJvcHNfdGJsWzI5XS5nZXQgPSAoUU1lbWJlcilvdjNfODc7
CiAgICBwcm9wc190YmxbMjldLnNldCA9IChRTWVtYmVyKW92M184ODsKICAgIHByb3BzX3RibFsy
OV0ucmVzZXQgPSAwOwogICAgcHJvcHNfdGJsWzI5XS5nc3BlYyA9IFFNZXRhUHJvcGVydHk6OlBv
aW50ZXI7CiAgICBwcm9wc190YmxbMjldLnNzcGVjID0gUU1ldGFQcm9wZXJ0eTo6UmVmZXJlbmNl
OwogICAgcHJvcHNfdGJsWzI5XS5zZXRGbGFncyhRTWV0YVByb3BlcnR5OjpOb3REZXNpZ25hYmxl
fFFNZXRhUHJvcGVydHk6OlN0ZFNldCk7CiAgICBwcm9wc190YmxbMzBdLnQgPSAiUUNvbG9yR3Jv
dXAiOwogICAgcHJvcHNfdGJsWzMwXS5uID0gImNvbG9yR3JvdXAiOwogICAgcHJvcHNfdGJsWzMw
XS5nZXQgPSAoUU1lbWJlcilvdjNfOTA7CiAgICBwcm9wc190YmxbMzBdLnNldCA9IDA7CiAgICBw
cm9wc190YmxbMzBdLnJlc2V0ID0gMDsKICAgIHByb3BzX3RibFszMF0uZ3NwZWMgPSBRTWV0YVBy
b3BlcnR5OjpSZWZlcmVuY2U7CiAgICBwcm9wc190YmxbMzBdLnNzcGVjID0gUU1ldGFQcm9wZXJ0
eTo6VW5zcGVjaWZpZWQ7CiAgICBwcm9wc190YmxbMzFdLnQgPSAiUVBhbGV0dGUiOwogICAgcHJv
cHNfdGJsWzMxXS5uID0gInBhbGV0dGUiOwogICAgcHJvcHNfdGJsWzMxXS5nZXQgPSAoUU1lbWJl
cilvdjNfOTM7CiAgICBwcm9wc190YmxbMzFdLnNldCA9IChRTWVtYmVyKW92M185NDsKICAgIHBy
b3BzX3RibFszMV0ucmVzZXQgPSAoUU1lbWJlcilvdjNfOTU7CiAgICBwcm9wc190YmxbMzFdLmdz
cGVjID0gUU1ldGFQcm9wZXJ0eTo6UmVmZXJlbmNlOwogICAgcHJvcHNfdGJsWzMxXS5zc3BlYyA9
IFFNZXRhUHJvcGVydHk6OlJlZmVyZW5jZTsKICAgIHByb3BzX3RibFszMV0uc2V0RmxhZ3MoUU1l
dGFQcm9wZXJ0eTo6U3RkU2V0KTsKICAgIHByb3BzX3RibFszMl0udCA9ICJib29sIjsKICAgIHBy
b3BzX3RibFszMl0ubiA9ICJvd25QYWxldHRlIjsKICAgIHByb3BzX3RibFszMl0uZ2V0ID0gKFFN
ZW1iZXIpb3YzXzk2OwogICAgcHJvcHNfdGJsWzMyXS5zZXQgPSAwOwogICAgcHJvcHNfdGJsWzMy
XS5yZXNldCA9IDA7CiAgICBwcm9wc190YmxbMzJdLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xh
c3M7CiAgICBwcm9wc190YmxbMzJdLnNzcGVjID0gUU1ldGFQcm9wZXJ0eTo6VW5zcGVjaWZpZWQ7
CiAgICBwcm9wc190YmxbMzNdLnQgPSAiUUZvbnQiOwogICAgcHJvcHNfdGJsWzMzXS5uID0gImZv
bnQiOwogICAgcHJvcHNfdGJsWzMzXS5nZXQgPSAoUU1lbWJlcilvdjNfOTk7CiAgICBwcm9wc190
YmxbMzNdLnNldCA9IChRTWVtYmVyKW92M18xMDA7CiAgICBwcm9wc190YmxbMzNdLnJlc2V0ID0g
KFFNZW1iZXIpb3YzXzEwMTsKICAgIHByb3BzX3RibFszM10uZ3NwZWMgPSBRTWV0YVByb3BlcnR5
OjpDbGFzczsKICAgIHByb3BzX3RibFszM10uc3NwZWMgPSBRTWV0YVByb3BlcnR5OjpSZWZlcmVu
Y2U7CiAgICBwcm9wc190YmxbMzNdLnNldEZsYWdzKFFNZXRhUHJvcGVydHk6OlN0ZFNldCk7CiAg
ICBwcm9wc190YmxbMzRdLnQgPSAiYm9vbCI7CiAgICBwcm9wc190YmxbMzRdLm4gPSAib3duRm9u
dCI7CiAgICBwcm9wc190YmxbMzRdLmdldCA9IChRTWVtYmVyKW92M18xMDI7CiAgICBwcm9wc190
YmxbMzRdLnNldCA9IDA7CiAgICBwcm9wc190YmxbMzRdLnJlc2V0ID0gMDsKICAgIHByb3BzX3Ri
bFszNF0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsKICAgIHByb3BzX3RibFszNF0uc3Nw
ZWMgPSBRTWV0YVByb3BlcnR5OjpVbnNwZWNpZmllZDsKICAgIHByb3BzX3RibFszNV0udCA9ICJR
Q3Vyc29yIjsKICAgIHByb3BzX3RibFszNV0ubiA9ICJjdXJzb3IiOwogICAgcHJvcHNfdGJsWzM1
XS5nZXQgPSAoUU1lbWJlcilvdjNfMTA1OwogICAgcHJvcHNfdGJsWzM1XS5zZXQgPSAoUU1lbWJl
cilvdjNfMTA2OwogICAgcHJvcHNfdGJsWzM1XS5yZXNldCA9IChRTWVtYmVyKW92M18xMDc7CiAg
ICBwcm9wc190YmxbMzVdLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6UmVmZXJlbmNlOwogICAgcHJv
cHNfdGJsWzM1XS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6OlJlZmVyZW5jZTsKICAgIHByb3BzX3Ri
bFszNV0uc2V0RmxhZ3MoUU1ldGFQcm9wZXJ0eTo6U3RkU2V0KTsKICAgIHByb3BzX3RibFszNl0u
dCA9ICJib29sIjsKICAgIHByb3BzX3RibFszNl0ubiA9ICJvd25DdXJzb3IiOwogICAgcHJvcHNf
dGJsWzM2XS5nZXQgPSAoUU1lbWJlcilvdjNfMTA4OwogICAgcHJvcHNfdGJsWzM2XS5zZXQgPSAw
OwogICAgcHJvcHNfdGJsWzM2XS5yZXNldCA9IDA7CiAgICBwcm9wc190YmxbMzZdLmdzcGVjID0g
UU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAgICBwcm9wc190YmxbMzZdLnNzcGVjID0gUU1ldGFQcm9w
ZXJ0eTo6VW5zcGVjaWZpZWQ7CiAgICBwcm9wc190YmxbMzddLnQgPSAiUVN0cmluZyI7CiAgICBw
cm9wc190YmxbMzddLm4gPSAiY2FwdGlvbiI7CiAgICBwcm9wc190YmxbMzddLmdldCA9IChRTWVt
YmVyKW92M18xMTE7CiAgICBwcm9wc190YmxbMzddLnNldCA9IChRTWVtYmVyKW92M18xMTI7CiAg
ICBwcm9wc190YmxbMzddLnJlc2V0ID0gMDsKICAgIHByb3BzX3RibFszN10uZ3NwZWMgPSBRTWV0
YVByb3BlcnR5OjpDbGFzczsKICAgIHByb3BzX3RibFszN10uc3NwZWMgPSBRTWV0YVByb3BlcnR5
OjpSZWZlcmVuY2U7CiAgICBwcm9wc190YmxbMzddLnNldEZsYWdzKFFNZXRhUHJvcGVydHk6OlN0
ZFNldCk7CiAgICBwcm9wc190YmxbMzhdLnQgPSAiUVBpeG1hcCI7CiAgICBwcm9wc190YmxbMzhd
Lm4gPSAiaWNvbiI7CiAgICBwcm9wc190YmxbMzhdLmdldCA9IChRTWVtYmVyKW92M18xMTQ7CiAg
ICBwcm9wc190YmxbMzhdLnNldCA9IChRTWVtYmVyKW92M18xMTU7CiAgICBwcm9wc190YmxbMzhd
LnJlc2V0ID0gMDsKICAgIHByb3BzX3RibFszOF0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5OjpQb2lu
dGVyOwogICAgcHJvcHNfdGJsWzM4XS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6OlJlZmVyZW5jZTsK
ICAgIHByb3BzX3RibFszOF0uc2V0RmxhZ3MoUU1ldGFQcm9wZXJ0eTo6U3RkU2V0KTsKICAgIHBy
b3BzX3RibFszOV0udCA9ICJRU3RyaW5nIjsKICAgIHByb3BzX3RibFszOV0ubiA9ICJpY29uVGV4
dCI7CiAgICBwcm9wc190YmxbMzldLmdldCA9IChRTWVtYmVyKW92M18xMTc7CiAgICBwcm9wc190
YmxbMzldLnNldCA9IChRTWVtYmVyKW92M18xMTg7CiAgICBwcm9wc190YmxbMzldLnJlc2V0ID0g
MDsKICAgIHByb3BzX3RibFszOV0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsKICAgIHBy
b3BzX3RibFszOV0uc3NwZWMgPSBRTWV0YVByb3BlcnR5OjpSZWZlcmVuY2U7CiAgICBwcm9wc190
YmxbMzldLnNldEZsYWdzKFFNZXRhUHJvcGVydHk6OlN0ZFNldCk7CiAgICBwcm9wc190YmxbNDBd
LnQgPSAiYm9vbCI7CiAgICBwcm9wc190YmxbNDBdLm4gPSAibW91c2VUcmFja2luZyI7CiAgICBw
cm9wc190YmxbNDBdLmdldCA9IChRTWVtYmVyKW92M18xMjA7CiAgICBwcm9wc190YmxbNDBdLnNl
dCA9IChRTWVtYmVyKW92M18xMjE7CiAgICBwcm9wc190YmxbNDBdLnJlc2V0ID0gMDsKICAgIHBy
b3BzX3RibFs0MF0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsKICAgIHByb3BzX3RibFs0
MF0uc3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsKICAgIHByb3BzX3RibFs0MF0uc2V0Rmxh
Z3MoUU1ldGFQcm9wZXJ0eTo6U3RkU2V0KTsKICAgIHByb3BzX3RibFs0MV0udCA9ICJib29sIjsK
ICAgIHByb3BzX3RibFs0MV0ubiA9ICJpc0FjdGl2ZVdpbmRvdyI7CiAgICBwcm9wc190YmxbNDFd
LmdldCA9IChRTWVtYmVyKW92M18xMjM7CiAgICBwcm9wc190YmxbNDFdLnNldCA9IDA7CiAgICBw
cm9wc190YmxbNDFdLnJlc2V0ID0gMDsKICAgIHByb3BzX3RibFs0MV0uZ3NwZWMgPSBRTWV0YVBy
b3BlcnR5OjpDbGFzczsKICAgIHByb3BzX3RibFs0MV0uc3NwZWMgPSBRTWV0YVByb3BlcnR5OjpV
bnNwZWNpZmllZDsKICAgIHByb3BzX3RibFs0Ml0udCA9ICJib29sIjsKICAgIHByb3BzX3RibFs0
Ml0ubiA9ICJmb2N1c0VuYWJsZWQiOwogICAgcHJvcHNfdGJsWzQyXS5nZXQgPSAoUU1lbWJlcilv
djNfMTI2OwogICAgcHJvcHNfdGJsWzQyXS5zZXQgPSAwOwogICAgcHJvcHNfdGJsWzQyXS5yZXNl
dCA9IDA7CiAgICBwcm9wc190YmxbNDJdLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAg
ICBwcm9wc190YmxbNDJdLnNzcGVjID0gUU1ldGFQcm9wZXJ0eTo6VW5zcGVjaWZpZWQ7CiAgICBw
cm9wc190YmxbNDNdLnQgPSAiRm9jdXNQb2xpY3kiOwogICAgcHJvcHNfdGJsWzQzXS5uID0gImZv
Y3VzUG9saWN5IjsKICAgIHByb3BzX3RibFs0M10uZ2V0ID0gKFFNZW1iZXIpb3YzXzEyOTsKICAg
IHByb3BzX3RibFs0M10uc2V0ID0gKFFNZW1iZXIpb3YzXzEzMDsKICAgIHByb3BzX3RibFs0M10u
cmVzZXQgPSAwOwogICAgcHJvcHNfdGJsWzQzXS5nc3BlYyA9IFFNZXRhUHJvcGVydHk6OkNsYXNz
OwogICAgcHJvcHNfdGJsWzQzXS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6OkNsYXNzOwogICAgcHJv
cHNfdGJsWzQzXS5lbnVtRGF0YSA9ICZlbnVtX3RibFsyXTsKICAgIHByb3BzX3RibFs0M10uc2V0
RmxhZ3MoUU1ldGFQcm9wZXJ0eTo6U3RkU2V0KTsKICAgIHByb3BzX3RibFs0NF0udCA9ICJib29s
IjsKICAgIHByb3BzX3RibFs0NF0ubiA9ICJmb2N1cyI7CiAgICBwcm9wc190YmxbNDRdLmdldCA9
IChRTWVtYmVyKW92M18xMzI7CiAgICBwcm9wc190YmxbNDRdLnNldCA9IDA7CiAgICBwcm9wc190
YmxbNDRdLnJlc2V0ID0gMDsKICAgIHByb3BzX3RibFs0NF0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5
OjpDbGFzczsKICAgIHByb3BzX3RibFs0NF0uc3NwZWMgPSBRTWV0YVByb3BlcnR5OjpVbnNwZWNp
ZmllZDsKICAgIHByb3BzX3RibFs0NV0udCA9ICJib29sIjsKICAgIHByb3BzX3RibFs0NV0ubiA9
ICJ1cGRhdGVzRW5hYmxlZCI7CiAgICBwcm9wc190YmxbNDVdLmdldCA9IChRTWVtYmVyKW92M18x
MzU7CiAgICBwcm9wc190YmxbNDVdLnNldCA9IChRTWVtYmVyKW92M18xMzY7CiAgICBwcm9wc190
YmxbNDVdLnJlc2V0ID0gMDsKICAgIHByb3BzX3RibFs0NV0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5
OjpDbGFzczsKICAgIHByb3BzX3RibFs0NV0uc3NwZWMgPSBRTWV0YVByb3BlcnR5OjpDbGFzczsK
ICAgIHByb3BzX3RibFs0NV0uc2V0RmxhZ3MoUU1ldGFQcm9wZXJ0eTo6Tm90RGVzaWduYWJsZXxR
TWV0YVByb3BlcnR5OjpTdGRTZXQpOwogICAgcHJvcHNfdGJsWzQ2XS50ID0gImJvb2wiOwogICAg
cHJvcHNfdGJsWzQ2XS5uID0gInZpc2libGUiOwogICAgcHJvcHNfdGJsWzQ2XS5nZXQgPSAoUU1l
bWJlcilvdjNfMTM4OwogICAgcHJvcHNfdGJsWzQ2XS5zZXQgPSAwOwogICAgcHJvcHNfdGJsWzQ2
XS5yZXNldCA9IDA7CiAgICBwcm9wc190YmxbNDZdLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xh
c3M7CiAgICBwcm9wc190YmxbNDZdLnNzcGVjID0gUU1ldGFQcm9wZXJ0eTo6VW5zcGVjaWZpZWQ7
CiAgICBwcm9wc190YmxbNDddLnQgPSAiUVJlY3QiOwogICAgcHJvcHNfdGJsWzQ3XS5uID0gInZp
c2libGVSZWN0IjsKICAgIHByb3BzX3RibFs0N10uZ2V0ID0gKFFNZW1iZXIpb3YzXzE0MTsKICAg
IHByb3BzX3RibFs0N10uc2V0ID0gMDsKICAgIHByb3BzX3RibFs0N10ucmVzZXQgPSAwOwogICAg
cHJvcHNfdGJsWzQ3XS5nc3BlYyA9IFFNZXRhUHJvcGVydHk6OkNsYXNzOwogICAgcHJvcHNfdGJs
WzQ3XS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6OlVuc3BlY2lmaWVkOwogICAgcHJvcHNfdGJsWzQ4
XS50ID0gImJvb2wiOwogICAgcHJvcHNfdGJsWzQ4XS5uID0gImhpZGRlbiI7CiAgICBwcm9wc190
YmxbNDhdLmdldCA9IChRTWVtYmVyKW92M18xNDQ7CiAgICBwcm9wc190YmxbNDhdLnNldCA9IDA7
CiAgICBwcm9wc190YmxbNDhdLnJlc2V0ID0gMDsKICAgIHByb3BzX3RibFs0OF0uZ3NwZWMgPSBR
TWV0YVByb3BlcnR5OjpDbGFzczsKICAgIHByb3BzX3RibFs0OF0uc3NwZWMgPSBRTWV0YVByb3Bl
cnR5OjpVbnNwZWNpZmllZDsKICAgIHByb3BzX3RibFs0OV0udCA9ICJib29sIjsKICAgIHByb3Bz
X3RibFs0OV0ubiA9ICJtaW5pbWl6ZWQiOwogICAgcHJvcHNfdGJsWzQ5XS5nZXQgPSAoUU1lbWJl
cilvdjNfMTQ3OwogICAgcHJvcHNfdGJsWzQ5XS5zZXQgPSAwOwogICAgcHJvcHNfdGJsWzQ5XS5y
ZXNldCA9IDA7CiAgICBwcm9wc190YmxbNDldLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7
CiAgICBwcm9wc190YmxbNDldLnNzcGVjID0gUU1ldGFQcm9wZXJ0eTo6VW5zcGVjaWZpZWQ7CiAg
ICBwcm9wc190YmxbNTBdLnQgPSAiUVNpemUiOwogICAgcHJvcHNfdGJsWzUwXS5uID0gInNpemVI
aW50IjsKICAgIHByb3BzX3RibFs1MF0uZ2V0ID0gKFFNZW1iZXIpb3YzXzE1MDsKICAgIHByb3Bz
X3RibFs1MF0uc2V0ID0gMDsKICAgIHByb3BzX3RibFs1MF0ucmVzZXQgPSAwOwogICAgcHJvcHNf
dGJsWzUwXS5nc3BlYyA9IFFNZXRhUHJvcGVydHk6OkNsYXNzOwogICAgcHJvcHNfdGJsWzUwXS5z
c3BlYyA9IFFNZXRhUHJvcGVydHk6OlVuc3BlY2lmaWVkOwogICAgcHJvcHNfdGJsWzUxXS50ID0g
IlFTaXplIjsKICAgIHByb3BzX3RibFs1MV0ubiA9ICJtaW5pbXVtU2l6ZUhpbnQiOwogICAgcHJv
cHNfdGJsWzUxXS5nZXQgPSAoUU1lbWJlcilvdjNfMTUzOwogICAgcHJvcHNfdGJsWzUxXS5zZXQg
PSAwOwogICAgcHJvcHNfdGJsWzUxXS5yZXNldCA9IDA7CiAgICBwcm9wc190YmxbNTFdLmdzcGVj
ID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAgICBwcm9wc190YmxbNTFdLnNzcGVjID0gUU1ldGFQ
cm9wZXJ0eTo6VW5zcGVjaWZpZWQ7CiAgICBwcm9wc190YmxbNTJdLnQgPSAiUVJlY3QiOwogICAg
cHJvcHNfdGJsWzUyXS5uID0gIm1pY3JvRm9jdXNIaW50IjsKICAgIHByb3BzX3RibFs1Ml0uZ2V0
ID0gKFFNZW1iZXIpb3YzXzE1NjsKICAgIHByb3BzX3RibFs1Ml0uc2V0ID0gMDsKICAgIHByb3Bz
X3RibFs1Ml0ucmVzZXQgPSAwOwogICAgcHJvcHNfdGJsWzUyXS5nc3BlYyA9IFFNZXRhUHJvcGVy
dHk6OkNsYXNzOwogICAgcHJvcHNfdGJsWzUyXS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6OlVuc3Bl
Y2lmaWVkOwogICAgcHJvcHNfdGJsWzUzXS50ID0gImJvb2wiOwogICAgcHJvcHNfdGJsWzUzXS5u
ID0gImFjY2VwdERyb3BzIjsKICAgIHByb3BzX3RibFs1M10uZ2V0ID0gKFFNZW1iZXIpb3YzXzE1
OTsKICAgIHByb3BzX3RibFs1M10uc2V0ID0gKFFNZW1iZXIpb3YzXzE2MDsKICAgIHByb3BzX3Ri
bFs1M10ucmVzZXQgPSAwOwogICAgcHJvcHNfdGJsWzUzXS5nc3BlYyA9IFFNZXRhUHJvcGVydHk6
OkNsYXNzOwogICAgcHJvcHNfdGJsWzUzXS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6OkNsYXNzOwog
ICAgcHJvcHNfdGJsWzUzXS5zZXRGbGFncyhRTWV0YVByb3BlcnR5OjpTdGRTZXQpOwogICAgcHJv
cHNfdGJsWzU0XS50ID0gImJvb2wiOwogICAgcHJvcHNfdGJsWzU0XS5uID0gImF1dG9NYXNrIjsK
ICAgIHByb3BzX3RibFs1NF0uZ2V0ID0gKFFNZW1iZXIpb3YzXzE2MjsKICAgIHByb3BzX3RibFs1
NF0uc2V0ID0gKFFNZW1iZXIpb3YzXzE2MzsKICAgIHByb3BzX3RibFs1NF0ucmVzZXQgPSAwOwog
ICAgcHJvcHNfdGJsWzU0XS5nc3BlYyA9IFFNZXRhUHJvcGVydHk6OkNsYXNzOwogICAgcHJvcHNf
dGJsWzU0XS5zc3BlYyA9IFFNZXRhUHJvcGVydHk6OkNsYXNzOwogICAgcHJvcHNfdGJsWzU0XS5z
ZXRGbGFncyhRTWV0YVByb3BlcnR5OjpTdGRTZXQpOwogICAgcHJvcHNfdGJsWzU1XS50ID0gIkJh
Y2tncm91bmRPcmlnaW4iOwogICAgcHJvcHNfdGJsWzU1XS5uID0gImJhY2tncm91bmRPcmlnaW4i
OwogICAgcHJvcHNfdGJsWzU1XS5nZXQgPSAoUU1lbWJlcilvdjNfMTY1OwogICAgcHJvcHNfdGJs
WzU1XS5zZXQgPSAoUU1lbWJlcilvdjNfMTY2OwogICAgcHJvcHNfdGJsWzU1XS5yZXNldCA9IDA7
CiAgICBwcm9wc190YmxbNTVdLmdzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAgICBwcm9w
c190YmxbNTVdLnNzcGVjID0gUU1ldGFQcm9wZXJ0eTo6Q2xhc3M7CiAgICBwcm9wc190YmxbNTVd
LmVudW1EYXRhID0gJmVudW1fdGJsWzNdOwogICAgcHJvcHNfdGJsWzU1XS5zZXRGbGFncyhRTWV0
YVByb3BlcnR5OjpTdGRTZXQpOwogICAgcHJvcHNfdGJsWzU2XS50ID0gImJvb2wiOwogICAgcHJv
cHNfdGJsWzU2XS5uID0gImN1c3RvbVdoYXRzVGhpcyI7CiAgICBwcm9wc190YmxbNTZdLmdldCA9
IChRTWVtYmVyKW92M18xNjg7CiAgICBwcm9wc190YmxbNTZdLnNldCA9IDA7CiAgICBwcm9wc190
YmxbNTZdLnJlc2V0ID0gMDsKICAgIHByb3BzX3RibFs1Nl0uZ3NwZWMgPSBRTWV0YVByb3BlcnR5
OjpDbGFzczsKICAgIHByb3BzX3RibFs1Nl0uc3NwZWMgPSBRTWV0YVByb3BlcnR5OjpVbnNwZWNp
ZmllZDsKCiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptMV90MCkoYm9vbCk7CiAgICB0eXBl
ZGVmIHZvaWQgKFFPYmplY3Q6OipvbTFfdDApKGJvb2wpOwogICAgdHlwZWRlZiB2b2lkIChRV2lk
Z2V0OjoqbTFfdDEpKGJvb2wpOwogICAgdHlwZWRlZiB2b2lkIChRT2JqZWN0Ojoqb20xX3QxKShi
b29sKTsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdldDo6Km0xX3QyKShjb25zdCBRU3RyaW5nJik7
CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTFfdDIpKGNvbnN0IFFTdHJpbmcmKTsKICAg
IHR5cGVkZWYgdm9pZCAoUVdpZGdldDo6Km0xX3QzKShjb25zdCBRUGl4bWFwJik7CiAgICB0eXBl
ZGVmIHZvaWQgKFFPYmplY3Q6OipvbTFfdDMpKGNvbnN0IFFQaXhtYXAmKTsKICAgIHR5cGVkZWYg
dm9pZCAoUVdpZGdldDo6Km0xX3Q0KShjb25zdCBRU3RyaW5nJik7CiAgICB0eXBlZGVmIHZvaWQg
KFFPYmplY3Q6OipvbTFfdDQpKGNvbnN0IFFTdHJpbmcmKTsKICAgIHR5cGVkZWYgdm9pZCAoUVdp
ZGdldDo6Km0xX3Q1KShib29sKTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tMV90NSko
Ym9vbCk7CiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptMV90NikoKTsKICAgIHR5cGVkZWYg
dm9pZCAoUU9iamVjdDo6Km9tMV90NikoKTsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdldDo6Km0x
X3Q3KSgpOwogICAgdHlwZWRlZiB2b2lkIChRT2JqZWN0Ojoqb20xX3Q3KSgpOwogICAgdHlwZWRl
ZiB2b2lkIChRV2lkZ2V0OjoqbTFfdDgpKGJvb2wpOwogICAgdHlwZWRlZiB2b2lkIChRT2JqZWN0
Ojoqb20xX3Q4KShib29sKTsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdldDo6Km0xX3Q5KSgpOwog
ICAgdHlwZWRlZiB2b2lkIChRT2JqZWN0Ojoqb20xX3Q5KSgpOwogICAgdHlwZWRlZiB2b2lkIChR
V2lkZ2V0OjoqbTFfdDEwKShpbnQsaW50LGludCxpbnQpOwogICAgdHlwZWRlZiB2b2lkIChRT2Jq
ZWN0Ojoqb20xX3QxMCkoaW50LGludCxpbnQsaW50KTsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdl
dDo6Km0xX3QxMSkoY29uc3QgUVJlY3QmKTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9t
MV90MTEpKGNvbnN0IFFSZWN0Jik7CiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptMV90MTIp
KCk7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTFfdDEyKSgpOwogICAgdHlwZWRlZiB2
b2lkIChRV2lkZ2V0OjoqbTFfdDEzKShib29sKTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6
Km9tMV90MTMpKGJvb2wpOwogICAgdHlwZWRlZiB2b2lkIChRV2lkZ2V0OjoqbTFfdDE0KShpbnQs
aW50LGludCxpbnQsYm9vbCk7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTFfdDE0KShp
bnQsaW50LGludCxpbnQsYm9vbCk7CiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptMV90MTUp
KGNvbnN0IFFSZWN0Jixib29sKTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tMV90MTUp
KGNvbnN0IFFSZWN0Jixib29sKTsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdldDo6Km0xX3QxNiko
Y29uc3QgUVJlZ2lvbiYsYm9vbCk7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTFfdDE2
KShjb25zdCBRUmVnaW9uJixib29sKTsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdldDo6Km0xX3Qx
NykoKTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tMV90MTcpKCk7CiAgICB0eXBlZGVm
IHZvaWQgKFFXaWRnZXQ6OiptMV90MTgpKCk7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6Oipv
bTFfdDE4KSgpOwogICAgdHlwZWRlZiB2b2lkIChRV2lkZ2V0OjoqbTFfdDE5KSgpOwogICAgdHlw
ZWRlZiB2b2lkIChRT2JqZWN0Ojoqb20xX3QxOSkoKTsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdl
dDo6Km0xX3QyMCkoKTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tMV90MjApKCk7CiAg
ICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptMV90MjEpKCk7CiAgICB0eXBlZGVmIHZvaWQgKFFP
YmplY3Q6OipvbTFfdDIxKSgpOwogICAgdHlwZWRlZiB2b2lkIChRV2lkZ2V0OjoqbTFfdDIyKSgp
OwogICAgdHlwZWRlZiB2b2lkIChRT2JqZWN0Ojoqb20xX3QyMikoKTsKICAgIHR5cGVkZWYgdm9p
ZCAoUVdpZGdldDo6Km0xX3QyMykoKTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tMV90
MjMpKCk7CiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptMV90MjQpKCk7CiAgICB0eXBlZGVm
IHZvaWQgKFFPYmplY3Q6OipvbTFfdDI0KSgpOwogICAgdHlwZWRlZiB2b2lkIChRV2lkZ2V0Ojoq
bTFfdDI1KSgpY29uc3Q7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTFfdDI1KSgpY29u
c3Q7CiAgICB0eXBlZGVmIGJvb2wgKFFXaWRnZXQ6OiptMV90MjYpKCk7CiAgICB0eXBlZGVmIGJv
b2wgKFFPYmplY3Q6OipvbTFfdDI2KSgpOwogICAgdHlwZWRlZiB2b2lkIChRV2lkZ2V0OjoqbTFf
dDI3KSgpOwogICAgdHlwZWRlZiB2b2lkIChRT2JqZWN0Ojoqb20xX3QyNykoKTsKICAgIHR5cGVk
ZWYgdm9pZCAoUVdpZGdldDo6Km0xX3QyOCkoKTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6
Km9tMV90MjgpKCk7CiAgICB0eXBlZGVmIHZvaWQgKFFXaWRnZXQ6OiptMV90MjkpKFFXaWRnZXQq
KTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tMV90MjkpKFFXaWRnZXQqKTsKICAgIHR5
cGVkZWYgdm9pZCAoUVdpZGdldDo6Km0xX3QzMCkoaW50LGludCk7CiAgICB0eXBlZGVmIHZvaWQg
KFFPYmplY3Q6OipvbTFfdDMwKShpbnQsaW50KTsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdldDo6
Km0xX3QzMSkoY29uc3QgUVBvaW50Jik7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTFf
dDMxKShjb25zdCBRUG9pbnQmKTsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdldDo6Km0xX3QzMiko
aW50LGludCk7CiAgICB0eXBlZGVmIHZvaWQgKFFPYmplY3Q6OipvbTFfdDMyKShpbnQsaW50KTsK
ICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdldDo6Km0xX3QzMykoY29uc3QgUVNpemUmKTsKICAgIHR5
cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tMV90MzMpKGNvbnN0IFFTaXplJik7CiAgICB0eXBlZGVm
IHZvaWQgKFFXaWRnZXQ6OiptMV90MzQpKGludCxpbnQsaW50LGludCk7CiAgICB0eXBlZGVmIHZv
aWQgKFFPYmplY3Q6OipvbTFfdDM0KShpbnQsaW50LGludCxpbnQpOwogICAgdHlwZWRlZiB2b2lk
IChRV2lkZ2V0OjoqbTFfdDM1KShjb25zdCBRUmVjdCYpOwogICAgdHlwZWRlZiB2b2lkIChRT2Jq
ZWN0Ojoqb20xX3QzNSkoY29uc3QgUVJlY3QmKTsKICAgIHR5cGVkZWYgdm9pZCAoUVdpZGdldDo6
Km0xX3QzNikoKTsKICAgIHR5cGVkZWYgdm9pZCAoUU9iamVjdDo6Km9tMV90MzYpKCk7CiAgICBt
MV90MCB2MV8wID0gJlFXaWRnZXQ6OnNldEVuYWJsZWQ7CiAgICBvbTFfdDAgb3YxXzAgPSAob20x
X3QwKXYxXzA7CiAgICBtMV90MSB2MV8xID0gJlFXaWRnZXQ6OnNldERpc2FibGVkOwogICAgb20x
X3QxIG92MV8xID0gKG9tMV90MSl2MV8xOwogICAgbTFfdDIgdjFfMiA9ICZRV2lkZ2V0OjpzZXRD
YXB0aW9uOwogICAgb20xX3QyIG92MV8yID0gKG9tMV90Mil2MV8yOwogICAgbTFfdDMgdjFfMyA9
ICZRV2lkZ2V0OjpzZXRJY29uOwogICAgb20xX3QzIG92MV8zID0gKG9tMV90Myl2MV8zOwogICAg
bTFfdDQgdjFfNCA9ICZRV2lkZ2V0OjpzZXRJY29uVGV4dDsKICAgIG9tMV90NCBvdjFfNCA9IChv
bTFfdDQpdjFfNDsKICAgIG0xX3Q1IHYxXzUgPSAmUVdpZGdldDo6c2V0TW91c2VUcmFja2luZzsK
ICAgIG9tMV90NSBvdjFfNSA9IChvbTFfdDUpdjFfNTsKICAgIG0xX3Q2IHYxXzYgPSAmUVdpZGdl
dDo6c2V0Rm9jdXM7CiAgICBvbTFfdDYgb3YxXzYgPSAob20xX3Q2KXYxXzY7CiAgICBtMV90NyB2
MV83ID0gJlFXaWRnZXQ6OmNsZWFyRm9jdXM7CiAgICBvbTFfdDcgb3YxXzcgPSAob20xX3Q3KXYx
Xzc7CiAgICBtMV90OCB2MV84ID0gJlFXaWRnZXQ6OnNldFVwZGF0ZXNFbmFibGVkOwogICAgb20x
X3Q4IG92MV84ID0gKG9tMV90OCl2MV84OwogICAgbTFfdDkgdjFfOSA9ICZRV2lkZ2V0Ojp1cGRh
dGU7CiAgICBvbTFfdDkgb3YxXzkgPSAob20xX3Q5KXYxXzk7CiAgICBtMV90MTAgdjFfMTAgPSAm
UVdpZGdldDo6dXBkYXRlOwogICAgb20xX3QxMCBvdjFfMTAgPSAob20xX3QxMCl2MV8xMDsKICAg
IG0xX3QxMSB2MV8xMSA9ICZRV2lkZ2V0Ojp1cGRhdGU7CiAgICBvbTFfdDExIG92MV8xMSA9IChv
bTFfdDExKXYxXzExOwogICAgbTFfdDEyIHYxXzEyID0gJlFXaWRnZXQ6OnJlcGFpbnQ7CiAgICBv
bTFfdDEyIG92MV8xMiA9IChvbTFfdDEyKXYxXzEyOwogICAgbTFfdDEzIHYxXzEzID0gJlFXaWRn
ZXQ6OnJlcGFpbnQ7CiAgICBvbTFfdDEzIG92MV8xMyA9IChvbTFfdDEzKXYxXzEzOwogICAgbTFf
dDE0IHYxXzE0ID0gJlFXaWRnZXQ6OnJlcGFpbnQ7CiAgICBvbTFfdDE0IG92MV8xNCA9IChvbTFf
dDE0KXYxXzE0OwogICAgbTFfdDE1IHYxXzE1ID0gJlFXaWRnZXQ6OnJlcGFpbnQ7CiAgICBvbTFf
dDE1IG92MV8xNSA9IChvbTFfdDE1KXYxXzE1OwogICAgbTFfdDE2IHYxXzE2ID0gJlFXaWRnZXQ6
OnJlcGFpbnQ7CiAgICBvbTFfdDE2IG92MV8xNiA9IChvbTFfdDE2KXYxXzE2OwogICAgbTFfdDE3
IHYxXzE3ID0gJlFXaWRnZXQ6OnNob3c7CiAgICBvbTFfdDE3IG92MV8xNyA9IChvbTFfdDE3KXYx
XzE3OwogICAgbTFfdDE4IHYxXzE4ID0gJlFXaWRnZXQ6OmhpZGU7CiAgICBvbTFfdDE4IG92MV8x
OCA9IChvbTFfdDE4KXYxXzE4OwogICAgbTFfdDE5IHYxXzE5ID0gJlFXaWRnZXQ6Omljb25pZnk7
CiAgICBvbTFfdDE5IG92MV8xOSA9IChvbTFfdDE5KXYxXzE5OwogICAgbTFfdDIwIHYxXzIwID0g
JlFXaWRnZXQ6OnNob3dNaW5pbWl6ZWQ7CiAgICBvbTFfdDIwIG92MV8yMCA9IChvbTFfdDIwKXYx
XzIwOwogICAgbTFfdDIxIHYxXzIxID0gJlFXaWRnZXQ6OnNob3dNYXhpbWl6ZWQ7CiAgICBvbTFf
dDIxIG92MV8yMSA9IChvbTFfdDIxKXYxXzIxOwogICAgbTFfdDIyIHYxXzIyID0gJlFXaWRnZXQ6
OnNob3dGdWxsU2NyZWVuOwogICAgb20xX3QyMiBvdjFfMjIgPSAob20xX3QyMil2MV8yMjsKICAg
IG0xX3QyMyB2MV8yMyA9ICZRV2lkZ2V0OjpzaG93Tm9ybWFsOwogICAgb20xX3QyMyBvdjFfMjMg
PSAob20xX3QyMyl2MV8yMzsKICAgIG0xX3QyNCB2MV8yNCA9ICZRV2lkZ2V0Ojpwb2xpc2g7CiAg
ICBvbTFfdDI0IG92MV8yNCA9IChvbTFfdDI0KXYxXzI0OwogICAgbTFfdDI1IHYxXzI1ID0gJlFX
aWRnZXQ6OmNvbnN0UG9saXNoOwogICAgb20xX3QyNSBvdjFfMjUgPSAob20xX3QyNSl2MV8yNTsK
ICAgIG0xX3QyNiB2MV8yNiA9ICZRV2lkZ2V0OjpjbG9zZTsKICAgIG9tMV90MjYgb3YxXzI2ID0g
KG9tMV90MjYpdjFfMjY7CiAgICBtMV90MjcgdjFfMjcgPSAmUVdpZGdldDo6cmFpc2U7CiAgICBv
bTFfdDI3IG92MV8yNyA9IChvbTFfdDI3KXYxXzI3OwogICAgbTFfdDI4IHYxXzI4ID0gJlFXaWRn
ZXQ6Omxvd2VyOwogICAgb20xX3QyOCBvdjFfMjggPSAob20xX3QyOCl2MV8yODsKICAgIG0xX3Qy
OSB2MV8yOSA9ICZRV2lkZ2V0OjpzdGFja1VuZGVyOwogICAgb20xX3QyOSBvdjFfMjkgPSAob20x
X3QyOSl2MV8yOTsKICAgIG0xX3QzMCB2MV8zMCA9ICZRV2lkZ2V0Ojptb3ZlOwogICAgb20xX3Qz
MCBvdjFfMzAgPSAob20xX3QzMCl2MV8zMDsKICAgIG0xX3QzMSB2MV8zMSA9ICZRV2lkZ2V0Ojpt
b3ZlOwogICAgb20xX3QzMSBvdjFfMzEgPSAob20xX3QzMSl2MV8zMTsKICAgIG0xX3QzMiB2MV8z
MiA9ICZRV2lkZ2V0OjpyZXNpemU7CiAgICBvbTFfdDMyIG92MV8zMiA9IChvbTFfdDMyKXYxXzMy
OwogICAgbTFfdDMzIHYxXzMzID0gJlFXaWRnZXQ6OnJlc2l6ZTsKICAgIG9tMV90MzMgb3YxXzMz
ID0gKG9tMV90MzMpdjFfMzM7CiAgICBtMV90MzQgdjFfMzQgPSAmUVdpZGdldDo6c2V0R2VvbWV0
cnk7CiAgICBvbTFfdDM0IG92MV8zNCA9IChvbTFfdDM0KXYxXzM0OwogICAgbTFfdDM1IHYxXzM1
ID0gJlFXaWRnZXQ6OnNldEdlb21ldHJ5OwogICAgb20xX3QzNSBvdjFfMzUgPSAob20xX3QzNSl2
MV8zNTsKICAgIG0xX3QzNiB2MV8zNiA9ICZRV2lkZ2V0Ojpmb2N1c1Byb3h5RGVzdHJveWVkOwog
ICAgb20xX3QzNiBvdjFfMzYgPSAob20xX3QzNil2MV8zNjsKICAgIFFNZXRhRGF0YSAqc2xvdF90
YmwgPSBRTWV0YU9iamVjdDo6bmV3X21ldGFkYXRhKDM3KTsKICAgIFFNZXRhRGF0YTo6QWNjZXNz
ICpzbG90X3RibF9hY2Nlc3MgPSBRTWV0YU9iamVjdDo6bmV3X21ldGFhY2Nlc3MoMzcpOwogICAg
c2xvdF90YmxbMF0ubmFtZSA9ICJzZXRFbmFibGVkKGJvb2wpIjsKICAgIHNsb3RfdGJsWzBdLnB0
ciA9IChRTWVtYmVyKW92MV8wOwogICAgc2xvdF90YmxfYWNjZXNzWzBdID0gUU1ldGFEYXRhOjpQ
dWJsaWM7CiAgICBzbG90X3RibFsxXS5uYW1lID0gInNldERpc2FibGVkKGJvb2wpIjsKICAgIHNs
b3RfdGJsWzFdLnB0ciA9IChRTWVtYmVyKW92MV8xOwogICAgc2xvdF90YmxfYWNjZXNzWzFdID0g
UU1ldGFEYXRhOjpQdWJsaWM7CiAgICBzbG90X3RibFsyXS5uYW1lID0gInNldENhcHRpb24oY29u
c3QgUVN0cmluZyYpIjsKICAgIHNsb3RfdGJsWzJdLnB0ciA9IChRTWVtYmVyKW92MV8yOwogICAg
c2xvdF90YmxfYWNjZXNzWzJdID0gUU1ldGFEYXRhOjpQdWJsaWM7CiAgICBzbG90X3RibFszXS5u
YW1lID0gInNldEljb24oY29uc3QgUVBpeG1hcCYpIjsKICAgIHNsb3RfdGJsWzNdLnB0ciA9IChR
TWVtYmVyKW92MV8zOwogICAgc2xvdF90YmxfYWNjZXNzWzNdID0gUU1ldGFEYXRhOjpQdWJsaWM7
CiAgICBzbG90X3RibFs0XS5uYW1lID0gInNldEljb25UZXh0KGNvbnN0IFFTdHJpbmcmKSI7CiAg
ICBzbG90X3RibFs0XS5wdHIgPSAoUU1lbWJlcilvdjFfNDsKICAgIHNsb3RfdGJsX2FjY2Vzc1s0
XSA9IFFNZXRhRGF0YTo6UHVibGljOwogICAgc2xvdF90YmxbNV0ubmFtZSA9ICJzZXRNb3VzZVRy
YWNraW5nKGJvb2wpIjsKICAgIHNsb3RfdGJsWzVdLnB0ciA9IChRTWVtYmVyKW92MV81OwogICAg
c2xvdF90YmxfYWNjZXNzWzVdID0gUU1ldGFEYXRhOjpQdWJsaWM7CiAgICBzbG90X3RibFs2XS5u
YW1lID0gInNldEZvY3VzKCkiOwogICAgc2xvdF90YmxbNl0ucHRyID0gKFFNZW1iZXIpb3YxXzY7
CiAgICBzbG90X3RibF9hY2Nlc3NbNl0gPSBRTWV0YURhdGE6OlB1YmxpYzsKICAgIHNsb3RfdGJs
WzddLm5hbWUgPSAiY2xlYXJGb2N1cygpIjsKICAgIHNsb3RfdGJsWzddLnB0ciA9IChRTWVtYmVy
KW92MV83OwogICAgc2xvdF90YmxfYWNjZXNzWzddID0gUU1ldGFEYXRhOjpQdWJsaWM7CiAgICBz
bG90X3RibFs4XS5uYW1lID0gInNldFVwZGF0ZXNFbmFibGVkKGJvb2wpIjsKICAgIHNsb3RfdGJs
WzhdLnB0ciA9IChRTWVtYmVyKW92MV84OwogICAgc2xvdF90YmxfYWNjZXNzWzhdID0gUU1ldGFE
YXRhOjpQdWJsaWM7CiAgICBzbG90X3RibFs5XS5uYW1lID0gInVwZGF0ZSgpIjsKICAgIHNsb3Rf
dGJsWzldLnB0ciA9IChRTWVtYmVyKW92MV85OwogICAgc2xvdF90YmxfYWNjZXNzWzldID0gUU1l
dGFEYXRhOjpQdWJsaWM7CiAgICBzbG90X3RibFsxMF0ubmFtZSA9ICJ1cGRhdGUoaW50LGludCxp
bnQsaW50KSI7CiAgICBzbG90X3RibFsxMF0ucHRyID0gKFFNZW1iZXIpb3YxXzEwOwogICAgc2xv
dF90YmxfYWNjZXNzWzEwXSA9IFFNZXRhRGF0YTo6UHVibGljOwogICAgc2xvdF90YmxbMTFdLm5h
bWUgPSAidXBkYXRlKGNvbnN0IFFSZWN0JikiOwogICAgc2xvdF90YmxbMTFdLnB0ciA9IChRTWVt
YmVyKW92MV8xMTsKICAgIHNsb3RfdGJsX2FjY2Vzc1sxMV0gPSBRTWV0YURhdGE6OlB1YmxpYzsK
ICAgIHNsb3RfdGJsWzEyXS5uYW1lID0gInJlcGFpbnQoKSI7CiAgICBzbG90X3RibFsxMl0ucHRy
ID0gKFFNZW1iZXIpb3YxXzEyOwogICAgc2xvdF90YmxfYWNjZXNzWzEyXSA9IFFNZXRhRGF0YTo6
UHVibGljOwogICAgc2xvdF90YmxbMTNdLm5hbWUgPSAicmVwYWludChib29sKSI7CiAgICBzbG90
X3RibFsxM10ucHRyID0gKFFNZW1iZXIpb3YxXzEzOwogICAgc2xvdF90YmxfYWNjZXNzWzEzXSA9
IFFNZXRhRGF0YTo6UHVibGljOwogICAgc2xvdF90YmxbMTRdLm5hbWUgPSAicmVwYWludChpbnQs
aW50LGludCxpbnQsYm9vbCkiOwogICAgc2xvdF90YmxbMTRdLnB0ciA9IChRTWVtYmVyKW92MV8x
NDsKICAgIHNsb3RfdGJsX2FjY2Vzc1sxNF0gPSBRTWV0YURhdGE6OlB1YmxpYzsKICAgIHNsb3Rf
dGJsWzE1XS5uYW1lID0gInJlcGFpbnQoY29uc3QgUVJlY3QmLGJvb2wpIjsKICAgIHNsb3RfdGJs
WzE1XS5wdHIgPSAoUU1lbWJlcilvdjFfMTU7CiAgICBzbG90X3RibF9hY2Nlc3NbMTVdID0gUU1l
dGFEYXRhOjpQdWJsaWM7CiAgICBzbG90X3RibFsxNl0ubmFtZSA9ICJyZXBhaW50KGNvbnN0IFFS
ZWdpb24mLGJvb2wpIjsKICAgIHNsb3RfdGJsWzE2XS5wdHIgPSAoUU1lbWJlcilvdjFfMTY7CiAg
ICBzbG90X3RibF9hY2Nlc3NbMTZdID0gUU1ldGFEYXRhOjpQdWJsaWM7CiAgICBzbG90X3RibFsx
N10ubmFtZSA9ICJzaG93KCkiOwogICAgc2xvdF90YmxbMTddLnB0ciA9IChRTWVtYmVyKW92MV8x
NzsKICAgIHNsb3RfdGJsX2FjY2Vzc1sxN10gPSBRTWV0YURhdGE6OlB1YmxpYzsKICAgIHNsb3Rf
dGJsWzE4XS5uYW1lID0gImhpZGUoKSI7CiAgICBzbG90X3RibFsxOF0ucHRyID0gKFFNZW1iZXIp
b3YxXzE4OwogICAgc2xvdF90YmxfYWNjZXNzWzE4XSA9IFFNZXRhRGF0YTo6UHVibGljOwogICAg
c2xvdF90YmxbMTldLm5hbWUgPSAiaWNvbmlmeSgpIjsKICAgIHNsb3RfdGJsWzE5XS5wdHIgPSAo
UU1lbWJlcilvdjFfMTk7CiAgICBzbG90X3RibF9hY2Nlc3NbMTldID0gUU1ldGFEYXRhOjpQdWJs
aWM7CiAgICBzbG90X3RibFsyMF0ubmFtZSA9ICJzaG93TWluaW1pemVkKCkiOwogICAgc2xvdF90
YmxbMjBdLnB0ciA9IChRTWVtYmVyKW92MV8yMDsKICAgIHNsb3RfdGJsX2FjY2Vzc1syMF0gPSBR
TWV0YURhdGE6OlB1YmxpYzsKICAgIHNsb3RfdGJsWzIxXS5uYW1lID0gInNob3dNYXhpbWl6ZWQo
KSI7CiAgICBzbG90X3RibFsyMV0ucHRyID0gKFFNZW1iZXIpb3YxXzIxOwogICAgc2xvdF90Ymxf
YWNjZXNzWzIxXSA9IFFNZXRhRGF0YTo6UHVibGljOwogICAgc2xvdF90YmxbMjJdLm5hbWUgPSAi
c2hvd0Z1bGxTY3JlZW4oKSI7CiAgICBzbG90X3RibFsyMl0ucHRyID0gKFFNZW1iZXIpb3YxXzIy
OwogICAgc2xvdF90YmxfYWNjZXNzWzIyXSA9IFFNZXRhRGF0YTo6UHVibGljOwogICAgc2xvdF90
YmxbMjNdLm5hbWUgPSAic2hvd05vcm1hbCgpIjsKICAgIHNsb3RfdGJsWzIzXS5wdHIgPSAoUU1l
bWJlcilvdjFfMjM7CiAgICBzbG90X3RibF9hY2Nlc3NbMjNdID0gUU1ldGFEYXRhOjpQdWJsaWM7
CiAgICBzbG90X3RibFsyNF0ubmFtZSA9ICJwb2xpc2goKSI7CiAgICBzbG90X3RibFsyNF0ucHRy
ID0gKFFNZW1iZXIpb3YxXzI0OwogICAgc2xvdF90YmxfYWNjZXNzWzI0XSA9IFFNZXRhRGF0YTo6
UHVibGljOwogICAgc2xvdF90YmxbMjVdLm5hbWUgPSAiY29uc3RQb2xpc2goKSI7CiAgICBzbG90
X3RibFsyNV0ucHRyID0gKFFNZW1iZXIpb3YxXzI1OwogICAgc2xvdF90YmxfYWNjZXNzWzI1XSA9
IFFNZXRhRGF0YTo6UHVibGljOwogICAgc2xvdF90YmxbMjZdLm5hbWUgPSAiY2xvc2UoKSI7CiAg
ICBzbG90X3RibFsyNl0ucHRyID0gKFFNZW1iZXIpb3YxXzI2OwogICAgc2xvdF90YmxfYWNjZXNz
WzI2XSA9IFFNZXRhRGF0YTo6UHVibGljOwogICAgc2xvdF90YmxbMjddLm5hbWUgPSAicmFpc2Uo
KSI7CiAgICBzbG90X3RibFsyN10ucHRyID0gKFFNZW1iZXIpb3YxXzI3OwogICAgc2xvdF90Ymxf
YWNjZXNzWzI3XSA9IFFNZXRhRGF0YTo6UHVibGljOwogICAgc2xvdF90YmxbMjhdLm5hbWUgPSAi
bG93ZXIoKSI7CiAgICBzbG90X3RibFsyOF0ucHRyID0gKFFNZW1iZXIpb3YxXzI4OwogICAgc2xv
dF90YmxfYWNjZXNzWzI4XSA9IFFNZXRhRGF0YTo6UHVibGljOwogICAgc2xvdF90YmxbMjldLm5h
bWUgPSAic3RhY2tVbmRlcihRV2lkZ2V0KikiOwogICAgc2xvdF90YmxbMjldLnB0ciA9IChRTWVt
YmVyKW92MV8yOTsKICAgIHNsb3RfdGJsX2FjY2Vzc1syOV0gPSBRTWV0YURhdGE6OlB1YmxpYzsK
ICAgIHNsb3RfdGJsWzMwXS5uYW1lID0gIm1vdmUoaW50LGludCkiOwogICAgc2xvdF90YmxbMzBd
LnB0ciA9IChRTWVtYmVyKW92MV8zMDsKICAgIHNsb3RfdGJsX2FjY2Vzc1szMF0gPSBRTWV0YURh
dGE6OlB1YmxpYzsKICAgIHNsb3RfdGJsWzMxXS5uYW1lID0gIm1vdmUoY29uc3QgUVBvaW50Jiki
OwogICAgc2xvdF90YmxbMzFdLnB0ciA9IChRTWVtYmVyKW92MV8zMTsKICAgIHNsb3RfdGJsX2Fj
Y2Vzc1szMV0gPSBRTWV0YURhdGE6OlB1YmxpYzsKICAgIHNsb3RfdGJsWzMyXS5uYW1lID0gInJl
c2l6ZShpbnQsaW50KSI7CiAgICBzbG90X3RibFszMl0ucHRyID0gKFFNZW1iZXIpb3YxXzMyOwog
ICAgc2xvdF90YmxfYWNjZXNzWzMyXSA9IFFNZXRhRGF0YTo6UHVibGljOwogICAgc2xvdF90Ymxb
MzNdLm5hbWUgPSAicmVzaXplKGNvbnN0IFFTaXplJikiOwogICAgc2xvdF90YmxbMzNdLnB0ciA9
IChRTWVtYmVyKW92MV8zMzsKICAgIHNsb3RfdGJsX2FjY2Vzc1szM10gPSBRTWV0YURhdGE6OlB1
YmxpYzsKICAgIHNsb3RfdGJsWzM0XS5uYW1lID0gInNldEdlb21ldHJ5KGludCxpbnQsaW50LGlu
dCkiOwogICAgc2xvdF90YmxbMzRdLnB0ciA9IChRTWVtYmVyKW92MV8zNDsKICAgIHNsb3RfdGJs
X2FjY2Vzc1szNF0gPSBRTWV0YURhdGE6OlB1YmxpYzsKICAgIHNsb3RfdGJsWzM1XS5uYW1lID0g
InNldEdlb21ldHJ5KGNvbnN0IFFSZWN0JikiOwogICAgc2xvdF90YmxbMzVdLnB0ciA9IChRTWVt
YmVyKW92MV8zNTsKICAgIHNsb3RfdGJsX2FjY2Vzc1szNV0gPSBRTWV0YURhdGE6OlB1YmxpYzsK
ICAgIHNsb3RfdGJsWzM2XS5uYW1lID0gImZvY3VzUHJveHlEZXN0cm95ZWQoKSI7CiAgICBzbG90
X3RibFszNl0ucHRyID0gKFFNZW1iZXIpb3YxXzM2OwogICAgc2xvdF90YmxfYWNjZXNzWzM2XSA9
IFFNZXRhRGF0YTo6UHJpdmF0ZTsKICAgIG1ldGFPYmogPSBRTWV0YU9iamVjdDo6bmV3X21ldGFv
YmplY3QoCiAgICAgICAgIlFXaWRnZXQiLCAiUU9iamVjdCIsCiAgICAgICAgc2xvdF90YmwsIDM3
LAogICAgICAgIDAsIDAsCgogICAgICAgIHByb3BzX3RibCwgNTcsCiAgICAgICAgZW51bV90Ymws
IDQsCgogICAgICAgIDAsIDAgKTsKICAgIG1ldGFPYmotPnNldF9zbG90X2FjY2Vzcyggc2xvdF90
YmxfYWNjZXNzICk7CgoKICAgIHJldHVybiBtZXRhT2JqOwp9Cg==


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2002-11-12 15:26 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-11-19 15:25 c++/8533: [mainline regression] When compiling qt contradicting aliasing class created for bitfield constructor hubicka
  -- strict thread matches above, loose matches on Subject: below --
2002-11-19 15:26 Eric Craine
2002-11-19 12:25 jh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).