This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

c++/10874: ICE: unrecognized symbol type ""


>Number:         10874
>Category:       c++
>Synopsis:       ICE: unrecognized symbol type ""
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Mon May 19 21:36:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     Paul Jones
>Release:        gcc version 3.2.2
>Organization:
>Environment:
gentoo rc1.4
>Description:
Configured with: /var/tmp/portage/gcc-3.2.2/work/gcc-3.2.2/configure --prefix=/usr --bindir=/usr/i586-pc-linux-gnu/gcc-bin/3.2 --includedir=/usr/lib/gcc-lib/i586-pc-linux-gnu/3.2.2/include --datadir=/usr/share/gcc-data/i586-pc-linux-gnu/3.2 --mandir=/usr/share/gcc-data/i586-pc-linux-gnu/3.2/man --infodir=/usr/share/gcc-data/i586-pc-linux-gnu/3.2/info --enable-shared --host=i586-pc-linux-gnu --target=i586-pc-linux-gnu --with-system-zlib --enable-languages=c,c++,ada,f77,objc,java --enable-threads=posix --enable-long-long --disable-checking --enable-cstdio=stdio --enable-clocale=generic --enable-__cxa_atexit --enable-version-specific-runtime-libs --with-gxx-include-dir=/usr/lib/gcc-lib/i586-pc-linux-gnu/3.2.2/include/g++-v3 --with-local-prefix=/usr/local --enable-shared --enable-nls --without-included-gettext
Thread model: posix
gcc version 3.2.2

This command line triggers the bug:
g++ -o nsDOMClassInfo.o -c -DOSTYPE=\"Linux2.4\" -DOSARCH=\"Linux\" -DOJI  -I../../../dist/include/xpcom -I../../../dist/include/string -I../../../dist/include/webbrwsr -I../../../dist/include/js -I../../../dist/include/widget -I../../../dist/include/gfx -I../../../dist/include/layout -I../../../dist/include/content -I../../../dist/include/caps -I../../../dist/include/docshell -I../../../dist/include/xpconnect -I../../../dist/include/pref -I../../../dist/include/oji -I../../../dist/include/necko -I../../../dist/include/java -I../../../dist/include/locale -I../../../dist/include/uriloader -I../../../dist/include/sidebar -I../../../dist/include/xuldoc -I../../../dist/include/webshell -I../../../dist/include/view
-I../../../dist/include/uconv -I../../../dist/include/shistory -I../../../dist/include/plugin -I../../../dist/include/windowwatcher -I../../../dist/include/htmlparser -I../../../dist/include/chardet -I../../../dist/include/find -I../../../dist/include/appshell -I../../../dist/include/intl -I../../../dist/include/dom -I../../../dist/include -I/var/tmp/portage/mozilla-1.3-r1/work/mozilla/dist/include/nspr      -I/usr/X11R6/include   -fPIC  -I/usr/X11R6/include -fno-rtti -fno-exceptions -Wall -Wconversion -Wpointer-arith -Wcast-align -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-long-long -march=pentium2 -pipe -Wno-deprecated -fshort-wchar -pthread -pipe  -DNDEBUG -DTRIMMED -ffunction-sections -O2 -I. -I./../build  -I/usr/X11R6/include -DMOZILLA_CLIENT -include ../../../mozilla-config.h -Wp,-MD,.deps/nsDOMClassInfo.pp nsDOMClassInfo.cpp

Error Output:
{standard input}: Assembler messages:
{standard input}:6542: Warning: end of file not at end of a line; newline inserted
{standard input}:7087: Error: unrecognized symbol type ""
g++: Internal error: Terminated (program cc1plus)
Please submit a full bug report.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
make[4]: *** [nsDOMClassInfo.o] Error 1
make[4]: *** Deleting file `nsDOMClassInfo.o'




>How-To-Repeat:
emerge mozilla-1.3 under gentoo
Does not crash when only the one file is compiled
>Fix:

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

IyAxICJuc0RPTUNsYXNzSW5mby5jcHAiCiMgMSAiPGJ1aWx0LWluPiIKIyAxICI8Y29tbWFuZCBs
aW5lPiIKIyAxICIuLi8uLi8uLi9tb3ppbGxhLWNvbmZpZy5oIiAxCiMgMiAiPGNvbW1hbmQgbGlu
ZT4iIDIKIyAxICJuc0RPTUNsYXNzSW5mby5jcHAiCiMgNDAgIm5zRE9NQ2xhc3NJbmZvLmNwcCIK
IyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNjb3JlLmgiIDEKIyA0MyAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL3hwY29tL25zY29yZS5oIgojIDEgIi92YXIvdG1wL3BvcnRhZ2UvbW96
aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3BydHlwZXMuaCIgMQoj
IDU1ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2lu
Y2x1ZGUvbnNwci9wcnR5cGVzLmgiCiMgMSAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1y
MS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJjcHVjZmcuaCIgMQojIDU2ICIvdmFy
L3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNw
ci9wcnR5cGVzLmgiIDIKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUv
My4yLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMTUxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYt
cGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiBpbnQgcHRyZGlm
Zl90OwojIDIxMyAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNs
dWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVfdDsKIyA1OSAiL3Zhci90
bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIv
cHJ0eXBlcy5oIiAyCiMgMjUyICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsv
bW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcnR5cGVzLmgiCmV4dGVybiAiQyIgewojIDI2MiAi
L3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRl
L25zcHIvcHJ0eXBlcy5oIgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgUFJVaW50ODsKIyAyNzYgIi92
YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9u
c3ByL3BydHlwZXMuaCIKdHlwZWRlZiBzaWduZWQgY2hhciBQUkludDg7CiMgMzAxICIvdmFyL3Rt
cC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9w
cnR5cGVzLmgiCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgUFJVaW50MTY7CnR5cGVkZWYgc2hvcnQg
UFJJbnQxNjsKIyAzMjYgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3pp
bGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3BydHlwZXMuaCIKdHlwZWRlZiB1bnNpZ25lZCBpbnQgUFJV
aW50MzI7CnR5cGVkZWYgaW50IFBSSW50MzI7CiMgMzcyICIvdmFyL3RtcC9wb3J0YWdlL21vemls
bGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcnR5cGVzLmgiCnR5cGVk
ZWYgbG9uZyBsb25nIFBSSW50NjQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIFBSVWludDY0
OwojIDM5NiAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlz
dC9pbmNsdWRlL25zcHIvcHJ0eXBlcy5oIgp0eXBlZGVmIGludCBQUkludG47CnR5cGVkZWYgdW5z
aWduZWQgaW50IFBSVWludG47CiMgNDA3ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIx
L3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcnR5cGVzLmgiCnR5cGVkZWYgZG91Ymxl
IFBSRmxvYXQ2NDsKCgoKCgoKdHlwZWRlZiBzaXplX3QgUFJTaXplOwoKCgoKCgoKdHlwZWRlZiBQ
UkludDMyIFBST2Zmc2V0MzI7CnR5cGVkZWYgUFJJbnQ2NCBQUk9mZnNldDY0OwoKCgoKCgoKdHlw
ZWRlZiBwdHJkaWZmX3QgUFJQdHJkaWZmOwoKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIFBS
VXB0cmRpZmY7CiMgNDQ5ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96
aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcnR5cGVzLmgiCnR5cGVkZWYgUFJJbnRuIFBSQm9vbDsK
IyA0NTkgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3Qv
aW5jbHVkZS9uc3ByL3BydHlwZXMuaCIKdHlwZWRlZiBQUlVpbnQ4IFBSUGFja2VkQm9vbDsKCgoK
Cgp0eXBlZGVmIGVudW0geyBQUl9GQUlMVVJFID0gLTEsIFBSX1NVQ0NFU1MgPSAwIH0gUFJTdGF0
dXM7CiMgNDkyICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9k
aXN0L2luY2x1ZGUvbnNwci9wcnR5cGVzLmgiCnR5cGVkZWYgbG9uZyBQUldvcmQ7CnR5cGVkZWYg
dW5zaWduZWQgbG9uZyBQUlV3b3JkOwojIDUzNCAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEu
My1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJ0eXBlcy5oIgojIDEgIi92YXIv
dG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3By
L29ic29sZXRlL3Byb3R5cGVzLmgiIDEKIyA0NSAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEu
My1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvb2Jzb2xldGUvcHJvdHlwZXMuaCIK
dHlwZWRlZiBQUlVpbnRuIHVpbnRuOwoKdHlwZWRlZiBQUkludG4gaW50bjsKIyA4MyAiL3Zhci90
bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIv
b2Jzb2xldGUvcHJvdHlwZXMuaCIKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwoj
IDI2ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVy
ZXMuaCIgMSAzCiMgMjkxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91c3IvaW5j
bHVkZS9zeXMvY2RlZnMuaCIgMSAzCiMgMjkyICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAz
CiMgMzIwICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9nbnUv
c3R1YnMuaCIgMSAzCiMgMzIxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMjcgIi91
c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgpleHRlcm4gIkMiIHsKCiMgMSAiL3Vzci9pbmNs
dWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMK
IyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3Rk
ZGVmLmgiIDEgMwojIDMwICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgp0eXBlZGVm
IHVuc2lnbmVkIGNoYXIgX191X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191X3Nob3J0
Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX191
X2xvbmc7CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3Vf
cXVhZF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nIGludCBfX3F1YWRfdDsKIyA0
OSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMwp0eXBlZGVmIHNpZ25lZCBjaGFyIF9faW50
OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191aW50OF90Owp0eXBlZGVmIHNpZ25lZCBzaG9y
dCBpbnQgX19pbnQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX3VpbnQxNl90Owp0
eXBlZGVmIHNpZ25lZCBpbnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpbnQz
Ml90OwoKX19leHRlbnNpb25fXyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50IF9faW50NjRf
dDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191aW50NjRf
dDsKCnR5cGVkZWYgX19xdWFkX3QgKl9fcWFkZHJfdDsKCnR5cGVkZWYgX191X3F1YWRfdCBfX2Rl
dl90Owp0eXBlZGVmIF9fdV9pbnQgX191aWRfdDsKdHlwZWRlZiBfX3VfaW50IF9fZ2lkX3Q7CnR5
cGVkZWYgX191X2xvbmcgX19pbm9fdDsKdHlwZWRlZiBfX3VfaW50IF9fbW9kZV90Owp0eXBlZGVm
IF9fdV9pbnQgX19ubGlua190Owp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7CnR5cGVkZWYgX19x
dWFkX3QgX19sb2ZmX3Q7CnR5cGVkZWYgaW50IF9fcGlkX3Q7CnR5cGVkZWYgaW50IF9fc3NpemVf
dDsKdHlwZWRlZiBfX3VfbG9uZyBfX3JsaW1fdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fcmxpbTY0
X3Q7CnR5cGVkZWYgX191X2ludCBfX2lkX3Q7Cgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBf
X3ZhbFsyXTsKICB9IF9fZnNpZF90OwoKCnR5cGVkZWYgaW50IF9fZGFkZHJfdDsKdHlwZWRlZiBj
aGFyICpfX2NhZGRyX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX190aW1lX3Q7CnR5cGVkZWYgdW5zaWdu
ZWQgaW50IF9fdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIGludCBfX3N1c2Vjb25kc190Owp0eXBl
ZGVmIGxvbmcgaW50IF9fc3dibGtfdDsKCnR5cGVkZWYgbG9uZyBpbnQgX19jbG9ja190OwoKCnR5
cGVkZWYgaW50IF9fY2xvY2tpZF90OwoKCnR5cGVkZWYgaW50IF9fdGltZXJfdDsKCgoKCgoKdHlw
ZWRlZiBpbnQgX19rZXlfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX2lwY19waWRf
dDsKCgoKdHlwZWRlZiBsb25nIGludCBfX2Jsa3NpemVfdDsKCgoKCnR5cGVkZWYgbG9uZyBpbnQg
X19ibGtjbnRfdDsKdHlwZWRlZiBfX3F1YWRfdCBfX2Jsa2NudDY0X3Q7CgoKdHlwZWRlZiBfX3Vf
bG9uZyBfX2ZzYmxrY250X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzYmxrY250NjRfdDsKCgp0
eXBlZGVmIF9fdV9sb25nIF9fZnNmaWxjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNmaWxj
bnQ2NF90OwoKCnR5cGVkZWYgX191X3F1YWRfdCBfX2lubzY0X3Q7CgoKdHlwZWRlZiBfX2xvZmZf
dCBfX29mZjY0X3Q7CgoKdHlwZWRlZiBsb25nIGludCBfX3Rfc2NhbGFyX3Q7CnR5cGVkZWYgdW5z
aWduZWQgbG9uZyBpbnQgX190X3VzY2FsYXJfdDsKCgp0eXBlZGVmIGludCBfX2ludHB0cl90OwoK
CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fc29ja2xlbl90OwoKCgoKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy9wdGhyZWFkdHlwZXMuaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0
eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2NoZWQuaCIgMSAzCiMgNjggIi91c3Iv
aW5jbHVkZS9iaXRzL3NjaGVkLmgiIDMKc3RydWN0IF9fc2NoZWRfcGFyYW0KICB7CiAgICBpbnQg
X19zY2hlZF9wcmlvcml0eTsKICB9OwojIDI0ICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlw
ZXMuaCIgMiAzCgoKc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrCnsKICBsb25nIGludCBfX3N0YXR1
czsKICBpbnQgX19zcGlubG9jazsKCn07CgoKCnR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX2Rlc2Ny
X3N0cnVjdCAqX3B0aHJlYWRfZGVzY3I7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX19wdGhyZWFkX2F0
dHJfcwp7CiAgaW50IF9fZGV0YWNoc3RhdGU7CiAgaW50IF9fc2NoZWRwb2xpY3k7CiAgc3RydWN0
IF9fc2NoZWRfcGFyYW0gX19zY2hlZHBhcmFtOwogIGludCBfX2luaGVyaXRzY2hlZDsKICBpbnQg
X19zY29wZTsKICBzaXplX3QgX19ndWFyZHNpemU7CiAgaW50IF9fc3RhY2thZGRyX3NldDsKICB2
b2lkICpfX3N0YWNrYWRkcjsKICBzaXplX3QgX19zdGFja3NpemU7Cn0gcHRocmVhZF9hdHRyX3Q7
CgoKCnR5cGVkZWYgc3RydWN0CnsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19jX2xvY2s7
CiAgX3B0aHJlYWRfZGVzY3IgX19jX3dhaXRpbmc7Cn0gcHRocmVhZF9jb25kX3Q7CgoKCnR5cGVk
ZWYgc3RydWN0CnsKICBpbnQgX19kdW1teTsKfSBwdGhyZWFkX2NvbmRhdHRyX3Q7CgoKdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgcHRocmVhZF9rZXlfdDsKCgoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50
IF9fbV9yZXNlcnZlZDsKICBpbnQgX19tX2NvdW50OwogIF9wdGhyZWFkX2Rlc2NyIF9fbV9vd25l
cjsKICBpbnQgX19tX2tpbmQ7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fbV9sb2NrOwp9
IHB0aHJlYWRfbXV0ZXhfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX211dGV4a2luZDsK
fSBwdGhyZWFkX211dGV4YXR0cl90OwoKCgp0eXBlZGVmIGludCBwdGhyZWFkX29uY2VfdDsKCgoK
CnR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX3J3bG9ja190CnsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFz
dGxvY2sgX19yd19sb2NrOwogIGludCBfX3J3X3JlYWRlcnM7CiAgX3B0aHJlYWRfZGVzY3IgX19y
d193cml0ZXI7CiAgX3B0aHJlYWRfZGVzY3IgX19yd19yZWFkX3dhaXRpbmc7CiAgX3B0aHJlYWRf
ZGVzY3IgX19yd193cml0ZV93YWl0aW5nOwogIGludCBfX3J3X2tpbmQ7CiAgaW50IF9fcndfcHNo
YXJlZDsKfSBwdGhyZWFkX3J3bG9ja190OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbG9j
a2tpbmQ7CiAgaW50IF9fcHNoYXJlZDsKfSBwdGhyZWFkX3J3bG9ja2F0dHJfdDsKCgoKCnR5cGVk
ZWYgdm9sYXRpbGUgaW50IHB0aHJlYWRfc3BpbmxvY2tfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CiAg
c3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fYmFfbG9jazsKICBpbnQgX19iYV9yZXF1aXJlZDsK
ICBpbnQgX19iYV9wcmVzZW50OwogIF9wdGhyZWFkX2Rlc2NyIF9fYmFfd2FpdGluZzsKfSBwdGhy
ZWFkX2JhcnJpZXJfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgaW50IF9fcHNoYXJlZDsKfSBwdGhy
ZWFkX2JhcnJpZXJhdHRyX3Q7CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBwdGhyZWFk
X3Q7CiMgMTQ0ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKIyAzMSAiL3Vzci9pbmNs
dWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKdHlwZWRlZiBfX3VfY2hhciB1X2NoYXI7CnR5cGVkZWYg
X191X3Nob3J0IHVfc2hvcnQ7CnR5cGVkZWYgX191X2ludCB1X2ludDsKdHlwZWRlZiBfX3VfbG9u
ZyB1X2xvbmc7CnR5cGVkZWYgX19xdWFkX3QgcXVhZF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgdV9x
dWFkX3Q7CnR5cGVkZWYgX19mc2lkX3QgZnNpZF90OwoKCgoKdHlwZWRlZiBfX2xvZmZfdCBsb2Zm
X3Q7CgoKCnR5cGVkZWYgX19pbm9fdCBpbm9fdDsKCgoKCgoKdHlwZWRlZiBfX2lubzY0X3QgaW5v
NjRfdDsKCgoKCnR5cGVkZWYgX19kZXZfdCBkZXZfdDsKCgoKCnR5cGVkZWYgX19naWRfdCBnaWRf
dDsKCgoKCnR5cGVkZWYgX19tb2RlX3QgbW9kZV90OwoKCgoKdHlwZWRlZiBfX25saW5rX3Qgbmxp
bmtfdDsKCgoKCnR5cGVkZWYgX191aWRfdCB1aWRfdDsKCgoKCgp0eXBlZGVmIF9fb2ZmX3Qgb2Zm
X3Q7CgoKCgoKCnR5cGVkZWYgX19vZmY2NF90IG9mZjY0X3Q7CgoKCgp0eXBlZGVmIF9fcGlkX3Qg
cGlkX3Q7CgoKCgp0eXBlZGVmIF9faWRfdCBpZF90OwoKCgoKdHlwZWRlZiBfX3NzaXplX3Qgc3Np
emVfdDsKCgoKCgp0eXBlZGVmIF9fZGFkZHJfdCBkYWRkcl90Owp0eXBlZGVmIF9fY2FkZHJfdCBj
YWRkcl90OwoKCgoKCnR5cGVkZWYgX19rZXlfdCBrZXlfdDsKIyAxMzIgIi91c3IvaW5jbHVkZS9z
eXMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwojIDU4ICIvdXNyL2lu
Y2x1ZGUvdGltZS5oIiAzCgoKdHlwZWRlZiBfX2Nsb2NrX3QgY2xvY2tfdDsKCgoKIyA3NCAiL3Vz
ci9pbmNsdWRlL3RpbWUuaCIgMwoKCnR5cGVkZWYgX190aW1lX3QgdGltZV90OwoKCgojIDkyICIv
dXNyL2luY2x1ZGUvdGltZS5oIiAzCnR5cGVkZWYgX19jbG9ja2lkX3QgY2xvY2tpZF90OwojIDEw
NCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwp0eXBlZGVmIF9fdGltZXJfdCB0aW1lcl90OwojIDEz
MyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKdHlwZWRlZiBfX3VzZWNvbmRzX3Qg
dXNlY29uZHNfdDsKCgoKdHlwZWRlZiBfX3N1c2Vjb25kc190IHN1c2Vjb25kc190OwoKCgoKCiMg
MSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGRl
Zi5oIiAxIDMKIyAxNDcgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCnR5cGVkZWYg
dW5zaWduZWQgbG9uZyBpbnQgdWxvbmc7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVzaG9y
dDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKIyAxOTAgIi91c3IvaW5jbHVkZS9zeXMvdHlw
ZXMuaCIgMwp0eXBlZGVmIGludCBpbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1FJ
X18pKSk7CnR5cGVkZWYgaW50IGludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJ
X18pKSk7CnR5cGVkZWYgaW50IGludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJ
X18pKSk7CnR5cGVkZWYgaW50IGludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJ
X18pKSk7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9f
bW9kZV9fIChfX1FJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MTZfdCBfX2F0dHJp
YnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQz
Ml90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVk
IGludCB1X2ludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJX18pKSk7Cgp0eXBl
ZGVmIGludCByZWdpc3Rlcl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX193b3JkX18pKSk7
CiMgMjEyICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZW5k
aWFuLmgiIDEgMwojIDM3ICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy9lbmRpYW4uaCIgMSAzCiMgMzggIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMiAzCiMg
MjEzICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5
cy9zZWxlY3QuaCIgMSAzCiMgMzEgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9zZWxlY3QuaCIgMSAzCiMgMzIgIi91c3IvaW5jbHVkZS9zeXMvc2Vs
ZWN0LmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDEgMwojIDIzICIv
dXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMwp0eXBlZGVmIGludCBfX3NpZ19hdG9taWNfdDsK
CgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgdW5zaWduZWQgbG9uZyBpbnQgX192YWxbKDEwMjQg
LyAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSldOwogIH0gX19zaWdzZXRfdDsKIyAz
NSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKCnR5cGVkZWYgX19zaWdzZXRfdCBz
aWdzZXRfdDsKCgoKCgojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwojIDExNiAiL3Vzci9p
bmNsdWRlL3RpbWUuaCIgMwpzdHJ1Y3QgdGltZXNwZWMKICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7
CiAgICBsb25nIGludCB0dl9uc2VjOwogIH07CiMgNDUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0
LmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDEgMwojIDY3ICIvdXNyL2lu
Y2x1ZGUvYml0cy90aW1lLmgiIDMKc3RydWN0IHRpbWV2YWwKICB7CiAgICBfX3RpbWVfdCB0dl9z
ZWM7CiAgICBfX3N1c2Vjb25kc190IHR2X3VzZWM7CiAgfTsKIyA0NyAiL3Vzci9pbmNsdWRlL3N5
cy9zZWxlY3QuaCIgMiAzCiMgNTUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKdHlwZWRl
ZiBsb25nIGludCBfX2ZkX21hc2s7CiMgNjcgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMK
dHlwZWRlZiBzdHJ1Y3QKICB7CgoKCiAgICBfX2ZkX21hc2sgZmRzX2JpdHNbMTAyNCAvICg4ICog
c2l6ZW9mIChfX2ZkX21hc2spKV07CgoKCgoKICB9IGZkX3NldDsKCgoKCgoKdHlwZWRlZiBfX2Zk
X21hc2sgZmRfbWFzazsKIyA5OSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwpleHRlcm4g
IkMiIHsKCgoKCgoKZXh0ZXJuIGludCBzZWxlY3QgKGludCBfX25mZHMsIGZkX3NldCAqX19yZXN0
cmljdCBfX3JlYWRmZHMsCiAgICAgICAgICAgICAgICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX193
cml0ZWZkcywKICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZk
cywKICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0IF9fdGltZW91
dCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBwc2VsZWN0IChpbnQgX19uZmRzLCBmZF9zZXQg
Kl9fcmVzdHJpY3QgX19yZWFkZmRzLAogICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0
cmljdCBfX3dyaXRlZmRzLAogICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBf
X2V4Y2VwdGZkcywKICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9f
cmVzdHJpY3QgX190aW1lb3V0LAogICAgICAgICAgICAgICAgICAgIGNvbnN0IF9fc2lnc2V0X3Qg
Kl9fcmVzdHJpY3QgX19zaWdtYXNrKSB0aHJvdyAoKTsKCgp9CiMgMjE2ICIvdXNyL2luY2x1ZGUv
c3lzL3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCIgMSAz
CiMgMjE5ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgoKdHlwZWRlZiBfX2Jsa3Np
emVfdCBibGtzaXplX3Q7CgoKCgoKCnR5cGVkZWYgX19ibGtjbnRfdCBibGtjbnRfdDsKCgoKdHlw
ZWRlZiBfX2ZzYmxrY250X3QgZnNibGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzZmlsY250X3QgZnNm
aWxjbnRfdDsKIyAyNTcgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIF9fYmxr
Y250NjRfdCBibGtjbnQ2NF90Owp0eXBlZGVmIF9fZnNibGtjbnQ2NF90IGZzYmxrY250NjRfdDsK
dHlwZWRlZiBfX2ZzZmlsY250NjRfdCBmc2ZpbGNudDY0X3Q7CgoKfQojIDg0ICIvdmFyL3RtcC9w
b3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9vYnNv
bGV0ZS9wcm90eXBlcy5oIiAyCiMgMTA1ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIx
L3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9vYnNvbGV0ZS9wcm90eXBlcy5oIgp0eXBl
ZGVmIFBSVWludDY0IHVpbnQ2NDsKIyAxMTQgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMt
cjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL29ic29sZXRlL3Byb3R5cGVzLmgiCnR5
cGVkZWYgUFJVaW50MzIgdWludDMyOwojIDEyNSAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEu
My1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvb2Jzb2xldGUvcHJvdHlwZXMuaCIK
dHlwZWRlZiBQUlVpbnQxNiB1aW50MTY7CgoKCgoKCgp0eXBlZGVmIFBSVWludDggdWludDg7CiMg
MTQyICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2lu
Y2x1ZGUvbnNwci9vYnNvbGV0ZS9wcm90eXBlcy5oIgp0eXBlZGVmIFBSSW50NjQgaW50NjQ7CiMg
MTU0ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2lu
Y2x1ZGUvbnNwci9vYnNvbGV0ZS9wcm90eXBlcy5oIgp0eXBlZGVmIFBSSW50MzIgaW50MzI7CiMg
MTY4ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2lu
Y2x1ZGUvbnNwci9vYnNvbGV0ZS9wcm90eXBlcy5oIgp0eXBlZGVmIFBSSW50MTYgaW50MTY7CiMg
MTc4ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2lu
Y2x1ZGUvbnNwci9vYnNvbGV0ZS9wcm90eXBlcy5oIgp0eXBlZGVmIFBSSW50OCBpbnQ4OwoKCnR5
cGVkZWYgUFJGbG9hdDY0IGZsb2F0NjQ7CnR5cGVkZWYgUFJVcHRyZGlmZiB1cHRyZGlmZl90Owp0
eXBlZGVmIFBSVXdvcmQgdXByd29yZF90Owp0eXBlZGVmIFBSV29yZCBwcndvcmRfdDsKIyA1MzUg
Ii92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVk
ZS9uc3ByL3BydHlwZXMuaCIgMgoKCgoKCn0KIyA0NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29tL25zY29yZS5oIiAyCiMgMTQ5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNjb3Jl
LmgiCnR5cGVkZWYgUFJVaW50MzIgbnNyZXN1bHQ7CgoKCgoKCiMgMSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL3hwY29tL25zRXJyb3IuaCIgMQojIDI5NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29tL25zRXJyb3IuaCIKZXh0ZXJuIG5zcmVzdWx0Ck5TX0Vycm9yQWNjb3JkaW5nVG9OU1BSKCk7
CiMgMTU3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNjb3JlLmgiIDIKIyAyMjQgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc2NvcmUuaCIKICAgIHR5cGVkZWYgUFJVaW50MTYg
UFJVbmljaGFyOwojIDQxICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICJuc0RPTUNsYXNzSW5m
by5oIiAxCiMgNDMgIm5zRE9NQ2xhc3NJbmZvLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L2RvbS9uc0lET01DbGFzc0luZm8uaCIgMQojIDQzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9t
L25zSURPTUNsYXNzSW5mby5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lD
bGFzc0luZm8uaCIgMQojIDEwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJQ2xhc3NJ
bmZvLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN1cHBvcnRzLmgiIDEK
IyAxMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN1cHBvcnRzLmgiCiMgMSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zcm9vdGlkbC5oIiAxCiMgMTIgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS94cGNvbS9uc3Jvb3RpZGwuaCIKIyAxICIvdmFyL3RtcC9wb3J0YWdlL21vemls
bGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcnRpbWUuaCIgMQojIDQ4
ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1
ZGUvbnNwci9wcnRpbWUuaCIKIyAxICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dv
cmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmxvbmcuaCIgMQojIDQ4ICIvdmFyL3RtcC9w
b3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmxv
bmcuaCIKZXh0ZXJuICJDIiB7CiMgNjYgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEv
d29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3BybG9uZy5oIgpleHRlcm4gUFJJbnQ2NCBM
TF9NYXhJbnQodm9pZCk7CmV4dGVybiBQUkludDY0IExMX01pbkludCh2b2lkKTsKZXh0ZXJuIFBS
SW50NjQgTExfWmVybyh2b2lkKTsKIyA0MjMgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMt
cjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3BybG9uZy5oIgp9CiMgNDkgIi92YXIv
dG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3By
L3BydGltZS5oIiAyCgpleHRlcm4gIkMiIHsKIyA3NyAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxh
LTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJ0aW1lLmgiCnR5cGVkZWYg
UFJJbnQ2NCBQUlRpbWU7CgoKCgoKCnR5cGVkZWYgc3RydWN0IFBSVGltZVBhcmFtZXRlcnMgewog
ICAgUFJJbnQzMiB0cF9nbXRfb2Zmc2V0OwogICAgUFJJbnQzMiB0cF9kc3Rfb2Zmc2V0Owp9IFBS
VGltZVBhcmFtZXRlcnM7CiMgMTEyICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dv
cmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcnRpbWUuaCIKdHlwZWRlZiBzdHJ1Y3QgUFJF
eHBsb2RlZFRpbWUgewogICAgUFJJbnQzMiB0bV91c2VjOwogICAgUFJJbnQzMiB0bV9zZWM7Cgog
ICAgUFJJbnQzMiB0bV9taW47CiAgICBQUkludDMyIHRtX2hvdXI7CiAgICBQUkludDMyIHRtX21k
YXk7CgogICAgUFJJbnQzMiB0bV9tb250aDsKICAgIFBSSW50MTYgdG1feWVhcjsKCgogICAgUFJJ
bnQ4IHRtX3dkYXk7CgogICAgUFJJbnQxNiB0bV95ZGF5OwoKCiAgICBQUlRpbWVQYXJhbWV0ZXJz
IHRtX3BhcmFtczsKfSBQUkV4cGxvZGVkVGltZTsKIyAxNTUgIi92YXIvdG1wL3BvcnRhZ2UvbW96
aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3BydGltZS5oIgp0eXBl
ZGVmIFBSVGltZVBhcmFtZXRlcnMgKCAqUFJUaW1lUGFyYW1GbikoY29uc3QgUFJFeHBsb2RlZFRp
bWUgKmdtdCk7CiMgMTc3ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96
aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcnRpbWUuaCIKZXh0ZXJuIFBSVGltZQoKUFJfTm93KHZv
aWQpOwojIDE5MSAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEv
ZGlzdC9pbmNsdWRlL25zcHIvcHJ0aW1lLmgiCmV4dGVybiB2b2lkIFBSX0V4cGxvZGVUaW1lKAog
ICAgUFJUaW1lIHVzZWNzLCBQUlRpbWVQYXJhbUZuIHBhcmFtcywgUFJFeHBsb2RlZFRpbWUgKmV4
cGxvZGVkKTsKCgoKCgpleHRlcm4gUFJUaW1lCgpQUl9JbXBsb2RlVGltZShjb25zdCBQUkV4cGxv
ZGVkVGltZSAqZXhwbG9kZWQpOwojIDIxNCAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1y
MS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJ0aW1lLmgiCmV4dGVybiB2b2lkIFBS
X05vcm1hbGl6ZVRpbWUoCiAgICBQUkV4cGxvZGVkVGltZSAqZXhwbG9kZWQsIFBSVGltZVBhcmFt
Rm4gcGFyYW1zKTsKCgoKCgoKZXh0ZXJuIFBSVGltZVBhcmFtZXRlcnMgUFJfTG9jYWxUaW1lUGFy
YW1ldGVycyhjb25zdCBQUkV4cGxvZGVkVGltZSAqZ210KTsKCgpleHRlcm4gUFJUaW1lUGFyYW1l
dGVycyBQUl9HTVRQYXJhbWV0ZXJzKGNvbnN0IFBSRXhwbG9kZWRUaW1lICpnbXQpOwoKCgoKCmV4
dGVybiBQUlRpbWVQYXJhbWV0ZXJzIFBSX1VTUGFjaWZpY1RpbWVQYXJhbWV0ZXJzKGNvbnN0IFBS
RXhwbG9kZWRUaW1lICpnbXQpOwojIDI2NCAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1y
MS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJ0aW1lLmgiCmV4dGVybiBQUlN0YXR1
cyBQUl9QYXJzZVRpbWVTdHJpbmcgKAogICAgICAgIGNvbnN0IGNoYXIgKnN0cmluZywKICAgICAg
ICBQUkJvb2wgZGVmYXVsdF90b19nbXQsCiAgICAgICAgUFJUaW1lICpyZXN1bHQpOwojIDI4MSAi
L3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRl
L25zcHIvcHJ0aW1lLmgiCmV4dGVybiBQUlVpbnQzMiBQUl9Gb3JtYXRUaW1lKGNoYXIgKmJ1Ziwg
aW50IGJ1ZmxlbiwgY29uc3QgY2hhciAqZm10LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgUFJFeHBsb2RlZFRpbWUgKnRtKTsKCgoKCmV4dGVybiBQUlVp
bnQzMgpQUl9Gb3JtYXRUaW1lVVNFbmdsaXNoKCBjaGFyKiBidWYsIFBSVWludDMyIGJ1ZlNpemUs
CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZvcm1hdCwgY29uc3QgUFJFeHBs
b2RlZFRpbWUqIHRtICk7CgoKCn0KIyAxMyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25z
cm9vdGlkbC5oIiAyCgoKCmNsYXNzIG5zQVN0cmluZzsKY2xhc3MgbnNBQ1N0cmluZzsKIyAxMSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN1cHBvcnRzLmgiIDIKIyAxMTYgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0cy5oIgojIDEgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0c0Jhc2UuaCIgMQojIDQ0ICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUveHBjb20vbnNJU3VwcG9ydHNCYXNlLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3hwY29tL25zSUQuaCIgMQojIDQxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJRC5o
IgojIDEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMSAzCiMgMjggIi91c3IvaW5jbHVkZS9zdHJp
bmcuaCIgMwpleHRlcm4gIkMiIHsKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxp
bnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzNCAiL3Vzci9pbmNsdWRlL3N0
cmluZy5oIiAyIDMKCgoKCmV4dGVybiB2b2lkICptZW1jcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19k
ZXN0LAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMs
IHNpemVfdCBfX24pIHRocm93ICgpOwoKCmV4dGVybiB2b2lkICptZW1tb3ZlICh2b2lkICpfX2Rl
c3QsIF9fY29uc3Qgdm9pZCAqX19zcmMsIHNpemVfdCBfX24pCiAgICAgdGhyb3cgKCk7CgoKCgoK
CmV4dGVybiB2b2lkICptZW1jY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCB2
b2lkICpfX3Jlc3RyaWN0IF9fc3JjLAogICAgICAgICAgICAgICAgICAgICAgaW50IF9fYywgc2l6
ZV90IF9fbikKICAgICB0aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9pZCAqbWVtc2V0ICh2b2lkICpf
X3MsIGludCBfX2MsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgbWVtY21wIChf
X2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9fbikKICAgICB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gdm9pZCAqbWVtY2hy
IChfX2NvbnN0IHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICAgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoKZXh0ZXJuIHZvaWQgKnJhd21lbWNociAo
X19jb25zdCB2b2lkICpfX3MsIGludCBfX2MpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwoKCmV4dGVybiB2b2lkICptZW1yY2hyIChfX2NvbnN0IHZvaWQgKl9fcywgaW50IF9f
Yywgc2l6ZV90IF9fbikKICAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CgoKCgoKZXh0ZXJuIGNoYXIgKnN0cmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBjaGFyICpz
dHJuY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0
ZXJuIGNoYXIgKnN0cmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX3NyYykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBjaGFyICpzdHJuY2F0IChj
aGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLAog
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBz
dHJjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCBzdHJuY21wIChfX2Nv
bnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90IF9fbikKICAgICB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gaW50IHN0cmNvbGwgKF9f
Y29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtIChjaGFyICpfX3Jl
c3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19zcmMsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgoKCgojIDEgIi91c3IvaW5jbHVk
ZS94bG9jYWxlLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUveGxvY2FsZS5oIiAzCnR5cGVkZWYg
c3RydWN0IF9fbG9jYWxlX3N0cnVjdAp7CgogIHN0cnVjdCBsb2NhbGVfZGF0YSAqX19sb2NhbGVz
WzEzXTsKCgogIGNvbnN0IHVuc2lnbmVkIHNob3J0IGludCAqX19jdHlwZV9iOwogIGNvbnN0IGlu
dCAqX19jdHlwZV90b2xvd2VyOwogIGNvbnN0IGludCAqX19jdHlwZV90b3VwcGVyOwoKCiAgY29u
c3QgY2hhciAqX19uYW1lc1sxM107Cn0gKl9fbG9jYWxlX3Q7CiMgMTE1ICIvdXNyL2luY2x1ZGUv
c3RyaW5nLmgiIDIgMwoKCmV4dGVybiBpbnQgc3RyY29sbF9sIChfX2NvbnN0IGNoYXIgKl9fczEs
IF9fY29uc3QgY2hhciAqX19zMiwgX19sb2NhbGVfdCBfX2wpCiAgICAgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gc2l6ZV90IHN0cnhmcm1fbCAoY2hhciAqX19k
ZXN0LCBfX2NvbnN0IGNoYXIgKl9fc3JjLCBzaXplX3QgX19uLAogICAgICAgICAgICAgICAgICAg
ICAgICAgX19sb2NhbGVfdCBfX2wpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmR1cCAo
X19jb25zdCBjaGFyICpfX3MpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7
CgoKCgoKCmV4dGVybiBjaGFyICpzdHJuZHVwIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXpl
X3QgX19uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMTYw
ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKCgpleHRlcm4gY2hhciAqc3RyY2hyIChfX2NvbnN0
IGNoYXIgKl9fcywgaW50IF9fYykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CgpleHRlcm4gY2hhciAqc3RycmNociAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBjaGFyICpzdHJjaHJu
dWwgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCgoKCgpleHRlcm4gc2l6ZV90IHN0cmNzcG4gKF9fY29uc3QgY2hhciAqX19z
LCBfX2NvbnN0IGNoYXIgKl9fcmVqZWN0KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOwoKCmV4dGVybiBzaXplX3Qgc3Ryc3BuIChfX2NvbnN0IGNoYXIgKl9fcywgX19j
b25zdCBjaGFyICpfX2FjY2VwdCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJl
X18pKTsKCmV4dGVybiBjaGFyICpzdHJwYnJrIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBj
aGFyICpfX2FjY2VwdCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
CmV4dGVybiBjaGFyICpzdHJzdHIgKF9fY29uc3QgY2hhciAqX19oYXlzdGFjaywgX19jb25zdCBj
aGFyICpfX25lZWRsZSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
CgoKZXh0ZXJuIGNoYXIgKnN0cnRvayAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2RlbGltKQogICAgIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKl9f
c3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgICAg
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sCiAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVfcHRyKSB0aHJvdyAoKTsKCmV4dGVybiBjaGFyICpz
dHJ0b2tfciAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X2RlbGltLAogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9w
dHIpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmNhc2VzdHIgKF9fY29uc3QgY2hhciAq
X19oYXlzdGFjaywgX19jb25zdCBjaGFyICpfX25lZWRsZSkKICAgICB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgoKZXh0ZXJuIHZvaWQgKm1lbW1lbSAoX19jb25zdCB2
b2lkICpfX2hheXN0YWNrLCBzaXplX3QgX19oYXlzdGFja2xlbiwKICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCB2b2lkICpfX25lZWRsZSwgc2l6ZV90IF9fbmVlZGxlbGVuKQogICAgIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gdm9pZCAqX19tZW1wY3B5
ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKZXh0ZXJuIHZv
aWQgKm1lbXBjcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAoKTsK
CgoKCgpleHRlcm4gc2l6ZV90IHN0cmxlbiAoX19jb25zdCBjaGFyICpfX3MpIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBzaXplX3Qgc3RybmxlbiAoX19j
b25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9fbWF4bGVuKQogICAgIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBjaGFyICpzdHJlcnJvciAoaW50IF9f
ZXJybnVtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFyICpzdHJlcnJvcl9yIChpbnQgX19lcnJu
dW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pIHRocm93ICgpOwoKCgoKZXh0ZXJuIHZv
aWQgX19iemVybyAodm9pZCAqX19zLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHZv
aWQgYmNvcHkgKF9fY29uc3Qgdm9pZCAqX19zcmMsIHZvaWQgKl9fZGVzdCwgc2l6ZV90IF9fbikg
dGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90IF9fbikgdGhy
b3cgKCk7CgoKZXh0ZXJuIGludCBiY21wIChfX2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9p
ZCAqX19zMiwgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJl
X18pKTsKCgpleHRlcm4gY2hhciAqaW5kZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAqcmluZGV4
IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CgoKCmV4dGVybiBpbnQgZmZzIChpbnQgX19pKSB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IGZmc2wgKGxvbmcgaW50IF9fbCkgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4g
aW50IGZmc2xsIChsb25nIGxvbmcgaW50IF9fbGwpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBzdHJjYXNlY21wIChfX2NvbnN0IGNoYXIg
Kl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCgpleHRlcm4gaW50IHN0cm5jYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEs
IF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19wdXJlX18pKTsKCgoKCgpleHRlcm4gaW50IHN0cmNhc2VjbXBfbCAoX19jb25zdCBj
aGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsCiAgICAgICAgICAgICAgICAgICAgICAgICBf
X2xvY2FsZV90IF9fbG9jKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4
dGVybiBpbnQgc3RybmNhc2VjbXBfbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIg
Kl9fczIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgX19sb2NhbGVfdCBf
X2xvYykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgpleHRl
cm4gY2hhciAqc3Ryc2VwIChjaGFyICoqX19yZXN0cmljdCBfX3N0cmluZ3AsCiAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltKSB0aHJvdyAoKTsKCgoK
CmV4dGVybiBpbnQgc3RydmVyc2NtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIg
Kl9fczIpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJu
IGNoYXIgKnN0cnNpZ25hbCAoaW50IF9fc2lnKSB0aHJvdyAoKTsKCgpleHRlcm4gY2hhciAqX19z
dHBjcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19zcmMpCiAgICAgdGhyb3cgKCk7CmV4dGVybiBjaGFyICpzdHBjcHkgKGNoYXIgKl9fcmVzdHJp
Y3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAgdGhyb3cgKCk7
CgoKCmV4dGVybiBjaGFyICpfX3N0cG5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAg
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVf
dCBfX24pIHRocm93ICgpOwpleHRlcm4gY2hhciAqc3RwbmNweSAoY2hhciAqX19yZXN0cmljdCBf
X2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19z
cmMsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCmV4dGVybiBjaGFyICpzdHJmcnkgKGNoYXIgKl9f
c3RyaW5nKSB0aHJvdyAoKTsKCgpleHRlcm4gdm9pZCAqbWVtZnJvYiAodm9pZCAqX19zLCBzaXpl
X3QgX19uKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKmJhc2VuYW1lIChfX2NvbnN0IGNo
YXIgKl9fZmlsZW5hbWUpIHRocm93ICgpOwojIDM3OSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAz
Cn0KIyA0MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUQuaCIgMgojIDUyICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJRC5oIgpzdHJ1Y3QgbnNJRCB7CgoKCgoKICBQUlVp
bnQzMiBtMDsKICBQUlVpbnQxNiBtMTsKICBQUlVpbnQxNiBtMjsKICBQUlVpbnQ4IG0zWzhdOwoj
IDc0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJRC5oIgogIGlubGluZSBQUkJvb2wg
RXF1YWxzKGNvbnN0IG5zSUQmIG90aGVyKSBjb25zdCB7CgoKCgoKCgogICAgcmV0dXJuIChQUkJv
b2wpCiAgICAgICgoKChQUlVpbnQzMiopICZtMClbMF0gPT0gKChQUlVpbnQzMiopICZvdGhlci5t
MClbMF0pICYmCiAgICAgICAoKChQUlVpbnQzMiopICZtMClbMV0gPT0gKChQUlVpbnQzMiopICZv
dGhlci5tMClbMV0pICYmCiAgICAgICAoKChQUlVpbnQzMiopICZtMClbMl0gPT0gKChQUlVpbnQz
MiopICZvdGhlci5tMClbMl0pICYmCiAgICAgICAoKChQUlVpbnQzMiopICZtMClbM10gPT0gKChQ
UlVpbnQzMiopICZvdGhlci5tMClbM10pKTsKICB9CgoKCgoKICBQUkJvb2wgUGFyc2UoY29uc3Qg
Y2hhciAqYUlEU3RyKTsKCgoKCgogIGNoYXIqIFRvU3RyaW5nKCkgY29uc3Q7Cgp9OwoKCgoKCnR5
cGVkZWYgbnNJRCBuc0NJRDsKIyAxMjAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lE
LmgiCnR5cGVkZWYgbnNJRCBuc0lJRDsKIyA0NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29t
L25zSVN1cHBvcnRzQmFzZS5oIiAyCiMgNzEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9u
c0lTdXBwb3J0c0Jhc2UuaCIKdHlwZWRlZiBQUlVpbnQzMiBuc3JlZmNudDsKIyA4MCAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN1cHBvcnRzQmFzZS5oIgpjbGFzcyBuc0lTdXBwb3J0
cyB7CnB1YmxpYzoKIyA5NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN1cHBvcnRz
QmFzZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgUXVlcnlJbnRlcmZhY2UoY29uc3QgbnNJSUQmIGFJ
SUQsIHZvaWQqKiBhSW5zdGFuY2VQdHIpID0gMDsKCgoKCgoKCiAgdmlydHVhbCBuc3JlZmNudCBB
ZGRSZWYodm9pZCkgPSAwOwojIDExNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN1
cHBvcnRzQmFzZS5oIgogIHZpcnR1YWwgbnNyZWZjbnQgUmVsZWFzZSh2b2lkKSA9IDA7CgoKfTsK
IyAxMTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0cy5oIiAyCgojIDEg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0c1V0aWxzLmgiIDEKIyA1NyAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN1cHBvcnRzVXRpbHMuaCIKIyAxICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNEZWJ1Zy5oIiAxCiMgNjIgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS94cGNvbS9uc0RlYnVnLmgiCmNsYXNzIG5zRGVidWcgewpwdWJsaWM6CgoKCgoKCiAg
c3RhdGljIHZvaWQgQWJvcnRJZkZhbHNlKGNvbnN0IGNoYXIqIGFTdHIsIGNvbnN0IGNoYXIqIGFF
eHByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYUZpbGUs
IFBSSW50biBhTGluZSk7CiMgODAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0RlYnVn
LmgiCiAgc3RhdGljIHZvaWQgV2FybklmRmFsc2UoY29uc3QgY2hhciogYVN0ciwgY29uc3QgY2hh
ciogYUV4cHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFG
aWxlLCBQUkludG4gYUxpbmUpOwojIDk4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNE
ZWJ1Zy5oIgogIHN0YXRpYyB2b2lkIFNldFdhcm5pbmdNZXNzYWdlQm94RW5hYmxlKFBSQm9vbCBh
T25PZmYpOwoKCgoKICBzdGF0aWMgUFJCb29sIEdldFdhcm5pbmdNZXNzYWdlQm94RW5hYmxlKHZv
aWQpOwojIDExNiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zRGVidWcuaCIKICBzdGF0
aWMgdm9pZCBBYm9ydChjb25zdCBjaGFyKiBhRmlsZSwgUFJJbnRuIGFMaW5lKTsKCgoKCiAgc3Rh
dGljIHZvaWQgQnJlYWsoY29uc3QgY2hhciogYUZpbGUsIFBSSW50biBhTGluZSk7CgoKCgogIHN0
YXRpYyB2b2lkIFByZUNvbmRpdGlvbihjb25zdCBjaGFyKiBhU3RyLCBjb25zdCBjaGFyKiBhRXhw
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFGaWxlLCBQ
UkludG4gYUxpbmUpOwoKCgoKICBzdGF0aWMgdm9pZCBQb3N0Q29uZGl0aW9uKGNvbnN0IGNoYXIq
IGFTdHIsIGNvbnN0IGNoYXIqIGFFeHByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGFGaWxlLCBQUkludG4gYUxpbmUpOwoKCgoKICBzdGF0aWMgdm9pZCBB
c3NlcnRpb24oY29uc3QgY2hhciogYVN0ciwgY29uc3QgY2hhciogYUV4cHIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhRmlsZSwgUFJJbnRuIGFMaW5lKTsKCgoK
CiAgc3RhdGljIHZvaWQgTm90WWV0SW1wbGVtZW50ZWQoY29uc3QgY2hhciogYU1lc3NhZ2UsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFGaWxlLCBQ
UkludG4gYUxpbmUpOwoKCgoKICBzdGF0aWMgdm9pZCBOb3RSZWFjaGVkKGNvbnN0IGNoYXIqIGFN
ZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFGaWxl
LCBQUkludG4gYUxpbmUpOwoKCgoKICBzdGF0aWMgdm9pZCBFcnJvcihjb25zdCBjaGFyKiBhTWVz
c2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYUZpbGUsIFBSSW50
biBhTGluZSk7CgoKCgogIHN0YXRpYyB2b2lkIFdhcm5pbmcoY29uc3QgY2hhciogYU1lc3NhZ2Us
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYUZpbGUsIFBSSW50biBh
TGluZSk7Cn07CiMgNTggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0c1V0
aWxzLmgiIDIKCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJU3VwcG9ydHNJ
bXBsLmgiIDEKIyA0OCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN1cHBvcnRzSW1w
bC5oIgojIDEgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rp
c3QvaW5jbHVkZS9uc3ByL3ByYXRvbS5oIiAxCiMgNDQgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxs
YS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3ByYXRvbS5oIgojIDEgIi92
YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9u
c3ByL3BybG9jay5oIiAxCiMgNTAgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29y
ay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3BybG9jay5oIgpleHRlcm4gIkMiIHsKIyA2MyAi
L3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRl
L25zcHIvcHJsb2NrLmgiCnR5cGVkZWYgc3RydWN0IFBSTG9jayBQUkxvY2s7CiMgODAgIi92YXIv
dG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3By
L3BybG9jay5oIgpleHRlcm4gUFJMb2NrKiBQUl9OZXdMb2NrKHZvaWQpOwojIDkxICIvdmFyL3Rt
cC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9w
cmxvY2suaCIKZXh0ZXJuIHZvaWQgUFJfRGVzdHJveUxvY2soUFJMb2NrICpsb2NrKTsKIyAxMDIg
Ii92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVk
ZS9uc3ByL3BybG9jay5oIgpleHRlcm4gdm9pZCBQUl9Mb2NrKFBSTG9jayAqbG9jayk7CiMgMTE0
ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1
ZGUvbnNwci9wcmxvY2suaCIKZXh0ZXJuIFBSU3RhdHVzIFBSX1VubG9jayhQUkxvY2sgKmxvY2sp
OwoKfQojIDQ1ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9k
aXN0L2luY2x1ZGUvbnNwci9wcmF0b20uaCIgMgoKZXh0ZXJuICJDIiB7CiMgNTcgIi92YXIvdG1w
L3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3By
YXRvbS5oIgpleHRlcm4gUFJJbnQzMiBQUl9BdG9taWNJbmNyZW1lbnQoUFJJbnQzMiAqdmFsKTsK
IyA2OCAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9p
bmNsdWRlL25zcHIvcHJhdG9tLmgiCmV4dGVybiBQUkludDMyIFBSX0F0b21pY0RlY3JlbWVudChQ
UkludDMyICp2YWwpOwojIDgwICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsv
bW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmF0b20uaCIKZXh0ZXJuIFBSSW50MzIgUFJfQXRv
bWljU2V0KFBSSW50MzIgKnZhbCwgUFJJbnQzMiBuZXd2YWwpOwojIDkyICIvdmFyL3RtcC9wb3J0
YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmF0b20u
aCIKZXh0ZXJuIFBSSW50MzIgUFJfQXRvbWljQWRkKFBSSW50MzIgKnB0ciwgUFJJbnQzMiB2YWwp
OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgUFJTdGFja0VsZW1TdHIgUFJTdGFja0VsZW07CgpzdHJ1Y3Qg
UFJTdGFja0VsZW1TdHIgewogICAgUFJTdGFja0VsZW0gKnByc3RrX2VsZW1fbmV4dDsKCn07Cgp0
eXBlZGVmIHN0cnVjdCBQUlN0YWNrU3RyIFBSU3RhY2s7CiMgMTE1ICIvdmFyL3RtcC9wb3J0YWdl
L21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmF0b20uaCIK
ZXh0ZXJuIFBSU3RhY2sgKiBQUl9DcmVhdGVTdGFjayhjb25zdCBjaGFyICpzdGFja19uYW1lKTsK
IyAxMjcgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3Qv
aW5jbHVkZS9uc3ByL3ByYXRvbS5oIgpleHRlcm4gdm9pZCBQUl9TdGFja1B1c2goUFJTdGFjayAq
c3RhY2ssIFBSU3RhY2tFbGVtICpzdGFja19lbGVtKTsKIyAxNDAgIi92YXIvdG1wL3BvcnRhZ2Uv
bW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3ByYXRvbS5oIgpl
eHRlcm4gUFJTdGFja0VsZW0gKiBQUl9TdGFja1BvcChQUlN0YWNrICpzdGFjayk7CiMgMTU0ICIv
dmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUv
bnNwci9wcmF0b20uaCIKZXh0ZXJuIFBSU3RhdHVzIFBSX0Rlc3Ryb3lTdGFjayhQUlN0YWNrICpz
dGFjayk7Cgp9CiMgNDkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0c0lt
cGwuaCIgMgojIDYyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJU3VwcG9ydHNJbXBs
LmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zVHJhY2VSZWZjbnQuaCIgMQoj
IDQxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNUcmFjZVJlZmNudC5oIgojIDEgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0NvbS5oIiAxCiMgNDIgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS94cGNvbS9uc1RyYWNlUmVmY250LmgiIDIKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9p
NTg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGlvLmgiIDEgMwojIDM5ICIvdXNyL2xp
Yi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRl
cm4gIkMiIHsKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4y
L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDQ0ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGlu
dXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkaW8uaCIgMiAzCiMgNTMgIi91c3IvbGliL2djYy1saWIv
aTU4Ni1wYy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRpby5oIiAzCgoKdHlwZWRlZiBzdHJ1
Y3QgX0lPX0ZJTEUgRklMRTsKCgoKCgojIDcxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGlu
dXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkaW8uaCIgMwp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBf
X0ZJTEU7CiMgODEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4yLjIvaW5j
bHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDEgMwojIDMyICIvdXNy
L2luY2x1ZGUvbGliaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMSAzCiMg
MTQgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMwojIDEgIi91c3IvbGliL2djYy1saWIvaTU4
Ni1wYy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzU0ICIvdXNyL2xp
Yi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgd2ludF90OwojIDE1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgi
IDIgMwojIDI0ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUv
d2NoYXIuaCIgMSAzCiMgNDggIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzCiMgMSAiL3Vzci9saWIv
Z2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyA0
OSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93Y2hh
ci5oIiAxIDMKIyA1MSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwojIDYzICIvdXNyL2luY2x1
ZGUvd2NoYXIuaCIgMwoKCgoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19jb3VudDsKICB1
bmlvbgogIHsKICAgIHdpbnRfdCBfX3djaDsKICAgIGNoYXIgX193Y2hiWzRdOwogIH0gX192YWx1
ZTsKfSBfX21ic3RhdGVfdDsKIyAyNSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKCnR5
cGVkZWYgc3RydWN0CnsKICBfX29mZl90IF9fcG9zOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7Cn0g
X0dfZnBvc190Owp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmY2NF90IF9fcG9zOwogIF9fbWJzdGF0
ZV90IF9fc3RhdGU7Cn0gX0dfZnBvczY0X3Q7CiMgNDQgIi91c3IvaW5jbHVkZS9fR19jb25maWcu
aCIgMwojIDEgIi91c3IvaW5jbHVkZS9nY29udi5oIiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRlL2dj
b252LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAzCiMgNDggIi91c3IvaW5jbHVk
ZS93Y2hhci5oIiAzCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIu
Mi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyA0OSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwoj
IDYzICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwoKIyAyOSAiL3Vzci9pbmNsdWRlL2djb252Lmgi
IDIgMwoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNs
dWRlL3N0ZGRlZi5oIiAxIDMKIyAzMiAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMwoKCgoKCmVu
dW0KewogIF9fR0NPTlZfT0sgPSAwLAogIF9fR0NPTlZfTk9DT05WLAogIF9fR0NPTlZfTk9EQiwK
ICBfX0dDT05WX05PTUVNLAoKICBfX0dDT05WX0VNUFRZX0lOUFVULAogIF9fR0NPTlZfRlVMTF9P
VVRQVVQsCiAgX19HQ09OVl9JTExFR0FMX0lOUFVULAogIF9fR0NPTlZfSU5DT01QTEVURV9JTlBV
VCwKCiAgX19HQ09OVl9JTExFR0FMX0RFU0NSSVBUT1IsCiAgX19HQ09OVl9JTlRFUk5BTF9FUlJP
Ugp9OwoKCgplbnVtCnsKICBfX0dDT05WX0lTX0xBU1QgPSAweDAwMDEsCiAgX19HQ09OVl9JR05P
UkVfRVJST1JTID0gMHgwMDAyCn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXA7CnN0cnVjdCBfX2dj
b252X3N0ZXBfZGF0YTsKc3RydWN0IF9fZ2NvbnZfbG9hZGVkX29iamVjdDsKc3RydWN0IF9fZ2Nv
bnZfdHJhbnNfZGF0YTsKCgoKdHlwZWRlZiBpbnQgKCpfX2djb252X2ZjdCkgKHN0cnVjdCBfX2dj
b252X3N0ZXAgKiwgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhICosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiosIF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqKiwgc2l6ZV90
ICosIGludCwgaW50KTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfaW5pdF9mY3QpIChzdHJ1Y3Qg
X19nY29udl9zdGVwICopOwp0eXBlZGVmIHZvaWQgKCpfX2djb252X2VuZF9mY3QpIChzdHJ1Y3Qg
X19nY29udl9zdGVwICopOwoKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfZmN0KSAoc3Ry
dWN0IF9fZ2NvbnZfc3RlcCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IF9fZ2NvbnZfc3RlcF9kYXRhICosIHZvaWQgKiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICoqLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNoYXIgKios
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKik7CgoKdHlwZWRlZiBp
bnQgKCpfX2djb252X3RyYW5zX2NvbnRleHRfZmN0KSAodm9pZCAqLCBfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciAqKTsKCgp0eXBlZGVmIGludCAoKl9f
Z2NvbnZfdHJhbnNfcXVlcnlfZmN0KSAoX19jb25zdCBjaGFyICosIF9fY29uc3QgY2hhciAqKios
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKik7CgoKdHlw
ZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX2luaXRfZmN0KSAodm9pZCAqKiwgY29uc3QgY2hhciAq
KTsKdHlwZWRlZiB2b2lkICgqX19nY29udl90cmFuc19lbmRfZmN0KSAodm9pZCAqKTsKCnN0cnVj
dCBfX2djb252X3RyYW5zX2RhdGEKewoKICBfX2djb252X3RyYW5zX2ZjdCBfX3RyYW5zX2ZjdDsK
ICBfX2djb252X3RyYW5zX2NvbnRleHRfZmN0IF9fdHJhbnNfY29udGV4dF9mY3Q7CiAgX19nY29u
dl90cmFuc19lbmRfZmN0IF9fdHJhbnNfZW5kX2ZjdDsKICB2b2lkICpfX2RhdGE7CiAgc3RydWN0
IF9fZ2NvbnZfdHJhbnNfZGF0YSAqX19uZXh0Owp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwCnsK
ICBzdHJ1Y3QgX19nY29udl9sb2FkZWRfb2JqZWN0ICpfX3NobGliX2hhbmRsZTsKICBfX2NvbnN0
IGNoYXIgKl9fbW9kbmFtZTsKCiAgaW50IF9fY291bnRlcjsKCiAgY2hhciAqX19mcm9tX25hbWU7
CiAgY2hhciAqX190b19uYW1lOwoKICBfX2djb252X2ZjdCBfX2ZjdDsKICBfX2djb252X2luaXRf
ZmN0IF9faW5pdF9mY3Q7CiAgX19nY29udl9lbmRfZmN0IF9fZW5kX2ZjdDsKCgoKICBpbnQgX19t
aW5fbmVlZGVkX2Zyb207CiAgaW50IF9fbWF4X25lZWRlZF9mcm9tOwogIGludCBfX21pbl9uZWVk
ZWRfdG87CiAgaW50IF9fbWF4X25lZWRlZF90bzsKCgogIGludCBfX3N0YXRlZnVsOwoKICB2b2lk
ICpfX2RhdGE7Cn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXBfZGF0YQp7CiAgdW5zaWduZWQgY2hh
ciAqX19vdXRidWY7CiAgdW5zaWduZWQgY2hhciAqX19vdXRidWZlbmQ7CgoKCiAgaW50IF9fZmxh
Z3M7CgoKCiAgaW50IF9faW52b2NhdGlvbl9jb3VudGVyOwoKCgogIGludCBfX2ludGVybmFsX3Vz
ZTsKCiAgX19tYnN0YXRlX3QgKl9fc3RhdGVwOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7CgoKCiAg
c3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YSAqX190cmFuczsKfTsKCgoKdHlwZWRlZiBzdHJ1Y3Qg
X19nY29udl9pbmZvCnsKICBzaXplX3QgX19uc3RlcHM7CiAgc3RydWN0IF9fZ2NvbnZfc3RlcCAq
X19zdGVwczsKICBfX2V4dGVuc2lvbl9fIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSBfX2RhdGEg
W107Cn0gKl9fZ2NvbnZfdDsKIyA0NSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKdHlw
ZWRlZiB1bmlvbgp7CiAgc3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogIHN0cnVjdAogIHsKICAg
IHN0cnVjdCBfX2djb252X2luZm8gX19jZDsKICAgIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSBf
X2RhdGE7CiAgfSBfX2NvbWJpbmVkOwp9IF9HX2ljb252X3Q7Cgp0eXBlZGVmIGludCBfR19pbnQx
Nl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBfR19p
bnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2ln
bmVkIGludCBfR191aW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsK
dHlwZWRlZiB1bnNpZ25lZCBpbnQgX0dfdWludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChfX1NJX18pKSk7CiMgMzMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKIyA1MyAiL3Vzci9p
bmNsdWRlL2xpYmlvLmgiIDMKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251
LzMuMi4yL2luY2x1ZGUvc3RkYXJnLmgiIDEgMwojIDQzICIvdXNyL2xpYi9nY2MtbGliL2k1ODYt
cGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkYXJnLmgiIDMKdHlwZWRlZiBfX2J1aWx0aW5f
dmFfbGlzdCBfX2dudWNfdmFfbGlzdDsKIyA1NCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDIgMwoj
IDE2MiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKc3RydWN0IF9JT19qdW1wX3Q7IHN0cnVjdCBf
SU9fRklMRTsKIyAxNzIgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVkZWYgdm9pZCBfSU9f
bG9ja190OwoKCgoKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1Y3QgX0lPX21hcmtlciAqX25l
eHQ7CiAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsKCgoKICBpbnQgX3BvczsKIyAxOTUgIi91c3Iv
aW5jbHVkZS9saWJpby5oIiAzCn07CgoKZW51bSBfX2NvZGVjdnRfcmVzdWx0CnsKICBfX2NvZGVj
dnRfb2ssCiAgX19jb2RlY3Z0X3BhcnRpYWwsCiAgX19jb2RlY3Z0X2Vycm9yLAogIF9fY29kZWN2
dF9ub2NvbnYKfTsKIyAyNjMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnN0cnVjdCBfSU9fRklM
RSB7CiAgaW50IF9mbGFnczsKCgoKCiAgY2hhciogX0lPX3JlYWRfcHRyOwogIGNoYXIqIF9JT19y
ZWFkX2VuZDsKICBjaGFyKiBfSU9fcmVhZF9iYXNlOwogIGNoYXIqIF9JT193cml0ZV9iYXNlOwog
IGNoYXIqIF9JT193cml0ZV9wdHI7CiAgY2hhciogX0lPX3dyaXRlX2VuZDsKICBjaGFyKiBfSU9f
YnVmX2Jhc2U7CiAgY2hhciogX0lPX2J1Zl9lbmQ7CgogIGNoYXIgKl9JT19zYXZlX2Jhc2U7CiAg
Y2hhciAqX0lPX2JhY2t1cF9iYXNlOwogIGNoYXIgKl9JT19zYXZlX2VuZDsKCiAgc3RydWN0IF9J
T19tYXJrZXIgKl9tYXJrZXJzOwoKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9jaGFpbjsKCiAgaW50IF9m
aWxlbm87CgoKCiAgaW50IF9mbGFnczI7CgogIF9fb2ZmX3QgX29sZF9vZmZzZXQ7CgoKCiAgdW5z
aWduZWQgc2hvcnQgX2N1cl9jb2x1bW47CiAgc2lnbmVkIGNoYXIgX3Z0YWJsZV9vZmZzZXQ7CiAg
Y2hhciBfc2hvcnRidWZbMV07CgoKCiAgX0lPX2xvY2tfdCAqX2xvY2s7CiMgMzExICIvdXNyL2lu
Y2x1ZGUvbGliaW8uaCIgMwogIF9fb2ZmNjRfdCBfb2Zmc2V0OwoKCgoKCiAgdm9pZCAqX19wYWQx
OwogIHZvaWQgKl9fcGFkMjsKCiAgaW50IF9tb2RlOwoKICBjaGFyIF91bnVzZWQyWzE1ICogc2l6
ZW9mIChpbnQpIC0gMiAqIHNpemVvZiAodm9pZCAqKV07Cgp9OwoKCgoKCnN0cnVjdCBfSU9fRklM
RV9wbHVzOwoKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkaW5fOwpleHRl
cm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRvdXRfOwpleHRlcm4gc3RydWN0IF9J
T19GSUxFX3BsdXMgX0lPXzJfMV9zdGRlcnJfOwojIDM1MCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgi
IDMKdHlwZWRlZiBfX3NzaXplX3QgX19pb19yZWFkX2ZuICh2b2lkICpfX2Nvb2tpZSwgY2hhciAq
X19idWYsIHNpemVfdCBfX25ieXRlcyk7CgoKCgoKCgp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3dy
aXRlX2ZuICh2b2lkICpfX2Nvb2tpZSwgX19jb25zdCBjaGFyICpfX2J1ZiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbik7CgoKCgoKCgp0eXBlZGVmIGludCBfX2lv
X3NlZWtfZm4gKHZvaWQgKl9fY29va2llLCBfX29mZjY0X3QgKl9fcG9zLCBpbnQgX193KTsKCgp0
eXBlZGVmIGludCBfX2lvX2Nsb3NlX2ZuICh2b2lkICpfX2Nvb2tpZSk7CgoKCgp0eXBlZGVmIF9f
aW9fcmVhZF9mbiBjb29raWVfcmVhZF9mdW5jdGlvbl90Owp0eXBlZGVmIF9faW9fd3JpdGVfZm4g
Y29va2llX3dyaXRlX2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb19zZWVrX2ZuIGNvb2tpZV9zZWVr
X2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb19jbG9zZV9mbiBjb29raWVfY2xvc2VfZnVuY3Rpb25f
dDsKCgp0eXBlZGVmIHN0cnVjdAp7CiAgX19pb19yZWFkX2ZuICpyZWFkOwogIF9faW9fd3JpdGVf
Zm4gKndyaXRlOwogIF9faW9fc2Vla19mbiAqc2VlazsKICBfX2lvX2Nsb3NlX2ZuICpjbG9zZTsK
fSBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190Owp0eXBlZGVmIF9JT19jb29raWVfaW9fZnVuY3Rp
b25zX3QgY29va2llX2lvX2Z1bmN0aW9uc190OwoKc3RydWN0IF9JT19jb29raWVfZmlsZTsKCgpl
eHRlcm4gdm9pZCBfSU9fY29va2llX2luaXQgKHN0cnVjdCBfSU9fY29va2llX2ZpbGUgKl9fY2Zp
bGUsIGludCBfX3JlYWRfd3JpdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAq
X19jb29raWUsIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgX19mbnMpOwoKCgoKZXh0ZXJuICJD
IiB7CgoKZXh0ZXJuIGludCBfX3VuZGVyZmxvdyAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7CmV4dGVy
biBpbnQgX191ZmxvdyAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7CmV4dGVybiBpbnQgX19vdmVyZmxv
dyAoX0lPX0ZJTEUgKiwgaW50KSB0aHJvdyAoKTsKZXh0ZXJuIHdpbnRfdCBfX3d1bmRlcmZsb3cg
KF9JT19GSUxFICopIHRocm93ICgpOwpleHRlcm4gd2ludF90IF9fd3VmbG93IChfSU9fRklMRSAq
KSB0aHJvdyAoKTsKZXh0ZXJuIHdpbnRfdCBfX3dvdmVyZmxvdyAoX0lPX0ZJTEUgKiwgd2ludF90
KSB0aHJvdyAoKTsKIyA0MzIgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4dGVybiBpbnQgX0lP
X2dldGMgKF9JT19GSUxFICpfX2ZwKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfSU9fcHV0YyAoaW50
IF9fYywgX0lPX0ZJTEUgKl9fZnApIHRocm93ICgpOwpleHRlcm4gaW50IF9JT19mZW9mIChfSU9f
RklMRSAqX19mcCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX0lPX2ZlcnJvciAoX0lPX0ZJTEUgKl9f
ZnApIHRocm93ICgpOwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkIChfSU9fRklMRSAqX19m
cCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHZvaWQgX0lPX2Zsb2NrZmlsZSAoX0lPX0ZJTEUgKikg
dGhyb3cgKCk7CmV4dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAoX0lPX0ZJTEUgKikgdGhyb3cg
KCk7CmV4dGVybiBpbnQgX0lPX2Z0cnlsb2NrZmlsZSAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7CiMg
NDYyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50IF9JT192ZnNjYW5mIChfSU9f
RklMRSAqIF9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LAogICAgICAgICAgICAg
ICAgICAgICAgICBfX2dudWNfdmFfbGlzdCwgaW50ICpfX3Jlc3RyaWN0KSB0aHJvdyAoKTsKZXh0
ZXJuIGludCBfSU9fdmZwcmludGYgKF9JT19GSUxFICpfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICpf
X3Jlc3RyaWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QpIHRocm93
ICgpOwpleHRlcm4gX19zc2l6ZV90IF9JT19wYWRuIChfSU9fRklMRSAqLCBpbnQsIF9fc3NpemVf
dCkgdGhyb3cgKCk7CmV4dGVybiBzaXplX3QgX0lPX3NnZXRuIChfSU9fRklMRSAqLCB2b2lkICos
IHNpemVfdCkgdGhyb3cgKCk7CgpleHRlcm4gX19vZmY2NF90IF9JT19zZWVrb2ZmIChfSU9fRklM
RSAqLCBfX29mZjY0X3QsIGludCwgaW50KSB0aHJvdyAoKTsKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9f
c2Vla3BvcyAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQpIHRocm93ICgpOwoKZXh0ZXJuIHZv
aWQgX0lPX2ZyZWVfYmFja3VwX2FyZWEgKF9JT19GSUxFICopIHRocm93ICgpOwojIDUyMCAiL3Vz
ci9pbmNsdWRlL2xpYmlvLmgiIDMKfQojIDgyICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGlu
dXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCgp0eXBlZGVmIF9fZ251Y192YV9s
aXN0IF9fbm90X3ZhX2xpc3RfXzsKIyA5NSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4
LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGlvLmgiIDMKCgp0eXBlZGVmIF9HX2Zwb3NfdCBmcG9zX3Q7
CgoKCgoKdHlwZWRlZiBfR19mcG9zNjRfdCBmcG9zNjRfdDsKIyAxNDcgIi91c3IvbGliL2djYy1s
aWIvaTU4Ni1wYy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvc3RkaW9fbGltLmgiIDEgMwojIDE0OCAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2
LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgpleHRlcm4gc3RydWN0
IF9JT19GSUxFICpzdGRpbjsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRSAqc3Rkb3V0OwpleHRlcm4g
c3RydWN0IF9JT19GSUxFICpzdGRlcnI7CgoKCgoKCgpleHRlcm4gaW50IHJlbW92ZSAoX19jb25z
dCBjaGFyICpfX2ZpbGVuYW1lKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgcmVuYW1lIChfX2NvbnN0
IGNoYXIgKl9fb2xkLCBfX2NvbnN0IGNoYXIgKl9fbmV3KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJu
IEZJTEUgKnRtcGZpbGUgKHZvaWQpIHRocm93ICgpOwojIDE4MCAiL3Vzci9saWIvZ2NjLWxpYi9p
NTg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGNoYXIgKnRt
cG5hbSAoY2hhciAqX19zKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIEZJTEUgKnRtcGZpbGU2NCAodm9p
ZCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGNoYXIgKnRtcG5hbV9yIChjaGFyICpfX3MpIHRocm93
ICgpOwojIDIwMiAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNs
dWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGNoYXIgKnRlbXBuYW0gKF9fY29uc3QgY2hhciAqX19kaXIs
IF9fY29uc3QgY2hhciAqX19wZngpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFs
bG9jX18pKTsKCgoKCgpleHRlcm4gaW50IGZjbG9zZSAoRklMRSAqX19zdHJlYW0pIHRocm93ICgp
OwoKZXh0ZXJuIGludCBmZmx1c2ggKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVy
biBpbnQgZmZsdXNoX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRl
cm4gaW50IGZjbG9zZWFsbCAodm9pZCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBGSUxFICpmb3Bl
biAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMpIHRocm93ICgpOwoKZXh0ZXJuIEZJ
TEUgKmZyZW9wZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAg
ICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKIyAyNDgg
Ii91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRpby5o
IiAzCgoKZXh0ZXJuIEZJTEUgKmZvcGVuNjQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zp
bGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bW9kZXMpIHRocm93ICgpOwpleHRlcm4gRklMRSAqZnJlb3BlbjY0IChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVz
dHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIEZJTEUgKmZkb3BlbiAoaW50IF9f
ZmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIEZJTEUgKmZv
cGVuY29va2llICh2b2lkICpfX3Jlc3RyaWN0IF9fbWFnaWNfY29va2llLAogICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgX19pb19mdW5jcykgdGhy
b3cgKCk7CgoKZXh0ZXJuIEZJTEUgKmZtZW1vcGVuICh2b2lkICpfX3MsIHNpemVfdCBfX2xlbiwg
X19jb25zdCBjaGFyICpfX21vZGVzKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBGSUxFICpvcGVuX21l
bXN0cmVhbSAoY2hhciAqKl9fcmVzdHJpY3QgX19idWZsb2MsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fc2l6ZWxvYykgdGhyb3cgKCk7CgoKCgoKCmV4
dGVybiB2b2lkIHNldGJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0
cmljdCBfX2J1ZikgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgc2V0dmJ1ZiAoRklMRSAqX19yZXN0
cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAg
ICBpbnQgX19tb2Rlcywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHZvaWQgc2V0
YnVmZmVyIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVm
LAogICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3NpemUpIHRocm93ICgpOwoKCmV4dGVy
biB2b2lkIHNldGxpbmVidWYgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4g
aW50IGZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIHRocm93ICgpOwoKZXh0
ZXJuIGludCBwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0
aHJvdyAoKTsKCmV4dGVybiBpbnQgc3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIHRo
cm93ICgpOwoKCmV4dGVybiBpbnQgdmZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zLCBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgIF9fZ251
Y192YV9saXN0IF9fYXJnKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgdnByaW50ZiAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICB0aHJv
dyAoKTsKCmV4dGVybiBpbnQgdnNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192
YV9saXN0IF9fYXJnKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IHNucHJpbnRmIChjaGFyICpf
X3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAgICB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgNCkpKTsKCmV4dGVybiBpbnQgdnNu
cHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFf
bGlzdCBfX2FyZykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19w
cmludGZfXywgMywgMCkpKTsKCgoKCgoKZXh0ZXJuIGludCB2YXNwcmludGYgKGNoYXIgKipfX3Jl
c3RyaWN0IF9fcHRyLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mLAogICAgICAgICAgICAg
ICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSk7CmV4dGVybiBpbnQgX19hc3ByaW50
ZiAoY2hhciAqKl9fcmVzdHJpY3QgX19wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CmV4dGVybiBpbnQgYXNwcmludGYg
KGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKCgpleHRlcm4gaW50IHZkcHJpbnRmIChp
bnQgX19mZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LAogICAgICAgICAgICAgICAg
ICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMCkpKTsKZXh0ZXJuIGludCBkcHJpbnRmIChpbnQg
X19mZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CgoKCgoKZXh0
ZXJuIGludCBmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgdGhyb3cgKCk7Cgpl
eHRlcm4gaW50IHNjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikg
dGhyb3cgKCk7CgpleHRlcm4gaW50IHNzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
cywKICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwg
Li4uKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IHZmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3Qg
X19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAg
ICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
Zm9ybWF0X18gKF9fc2NhbmZfXywgMiwgMCkpKTsKCgpleHRlcm4gaW50IHZzY2FuZiAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAxLCAwKSkpOwoK
CmV4dGVybiBpbnQgdnNzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192
YV9saXN0IF9fYXJnKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChf
X3NjYW5mX18sIDIsIDApKSk7CgoKCgoKCmV4dGVybiBpbnQgZmdldGMgKEZJTEUgKl9fc3RyZWFt
KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBnZXRjIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoK
ZXh0ZXJuIGludCBnZXRjaGFyICh2b2lkKSB0aHJvdyAoKTsKCgoKCgoKCgpleHRlcm4gaW50IGdl
dGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBnZXRjaGFy
X3VubG9ja2VkICh2b2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZmdldGNfdW5sb2NrZWQg
KEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IGZwdXRjIChpbnQgX19j
LCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgcHV0YyAoaW50IF9fYywgRklM
RSAqX19zdHJlYW0pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgcHV0Y2hhciAoaW50IF9fYykgdGhy
b3cgKCk7CgoKCgoKCgoKZXh0ZXJuIGludCBmcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAq
X19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBwdXRjX3VubG9ja2VkIChpbnQgX19j
LCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgcHV0Y2hhcl91bmxvY2tlZCAo
aW50IF9fYykgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBnZXR3IChGSUxFICpfX3N0cmVhbSkg
dGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwdXR3IChpbnQgX193LCBGSUxFICpfX3N0cmVhbSkgdGhy
b3cgKCk7CgoKCgoKZXh0ZXJuIGNoYXIgKmZnZXRzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50
IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICB0aHJvdyAoKTsKCgoKZXh0ZXJu
IGNoYXIgKmdldHMgKGNoYXIgKl9fcykgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqZmdldHNf
dW5sb2NrZWQgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBpbnQgX19uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwojIDQ3MCAi
L3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGlvLmgi
IDMKZXh0ZXJuIF9fc3NpemVfdCBfX2dldGRlbGltIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVw
dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9fcmVzdHJpY3QgX19u
LCBpbnQgX19kZWxpbWl0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIF9fc3NpemVfdCBnZXRkZWxpbSAo
Y2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCAqX19yZXN0cmljdCBfX24sIGludCBfX2RlbGltaXRlciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKCgpleHRl
cm4gX19zc2l6ZV90IGdldGxpbmUgKGNoYXIgKipfX3Jlc3RyaWN0IF9fbGluZXB0ciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKCgoK
CgpleHRlcm4gaW50IGZwdXRzIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtKQogICAgIHRocm93ICgpOwoKCmV4dGVybiBpbnQgcHV0cyAoX19j
b25zdCBjaGFyICpfX3MpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHVuZ2V0YyAoaW50IF9fYywg
RklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkICh2b2lkICpf
X3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKCmV4dGVybiBzaXpl
X3QgZndyaXRlIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUs
CiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fcykg
dGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGZwdXRzX3VubG9ja2VkIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0
IF9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBzaXplX3QgZnJlYWRfdW5sb2NrZWQgKHZv
aWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgp
OwpleHRlcm4gc2l6ZV90IGZ3cml0ZV91bmxvY2tlZCAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0
IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJu
IGludCBmc2VlayAoRklMRSAqX19zdHJlYW0sIGxvbmcgaW50IF9fb2ZmLCBpbnQgX193aGVuY2Up
IHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsIChGSUxFICpfX3N0cmVhbSkgdGhyb3cg
KCk7CgpleHRlcm4gdm9pZCByZXdpbmQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCiMgNTM3
ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkaW8u
aCIgMwpleHRlcm4gaW50IGZzZWVrbyAoRklMRSAqX19zdHJlYW0sIF9fb2ZmX3QgX19vZmYsIGlu
dCBfX3doZW5jZSkgdGhyb3cgKCk7CgpleHRlcm4gX19vZmZfdCBmdGVsbG8gKEZJTEUgKl9fc3Ry
ZWFtKSB0aHJvdyAoKTsKIyA1NTMgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUv
My4yLjIvaW5jbHVkZS9zdGRpby5oIiAzCgoKCmV4dGVybiBpbnQgZmdldHBvcyAoRklMRSAqX19y
ZXN0cmljdCBfX3N0cmVhbSwgZnBvc190ICpfX3Jlc3RyaWN0IF9fcG9zKQogICAgIHRocm93ICgp
OwoKZXh0ZXJuIGludCBmc2V0cG9zIChGSUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9zX3QgKl9f
cG9zKSB0aHJvdyAoKTsKIyA1NzIgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUv
My4yLjIvaW5jbHVkZS9zdGRpby5oIiAzCgoKCmV4dGVybiBpbnQgZnNlZWtvNjQgKEZJTEUgKl9f
c3RyZWFtLCBfX29mZjY0X3QgX19vZmYsIGludCBfX3doZW5jZSkgdGhyb3cgKCk7CmV4dGVybiBf
X29mZjY0X3QgZnRlbGxvNjQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBm
Z2V0cG9zNjQgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGZwb3M2NF90ICpfX3Jlc3RyaWN0
IF9fcG9zKQogICAgIHRocm93ICgpOwpleHRlcm4gaW50IGZzZXRwb3M2NCAoRklMRSAqX19zdHJl
YW0sIF9fY29uc3QgZnBvczY0X3QgKl9fcG9zKSB0aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkIGNs
ZWFyZXJyIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgpleHRlcm4gaW50IGZlb2YgKEZJTEUg
Kl9fc3RyZWFtKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgZmVycm9yIChGSUxFICpfX3N0cmVhbSkg
dGhyb3cgKCk7CgoKCgpleHRlcm4gdm9pZCBjbGVhcmVycl91bmxvY2tlZCAoRklMRSAqX19zdHJl
YW0pIHRocm93ICgpOwpleHRlcm4gaW50IGZlb2ZfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0
aHJvdyAoKTsKZXh0ZXJuIGludCBmZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJv
dyAoKTsKCgoKCgpleHRlcm4gdm9pZCBwZXJyb3IgKF9fY29uc3QgY2hhciAqX19zKSB0aHJvdyAo
KTsKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zeXNfZXJybGlzdC5oIiAxIDMKIyAyNyAi
L3Vzci9pbmNsdWRlL2JpdHMvc3lzX2Vycmxpc3QuaCIgMwpleHRlcm4gaW50IHN5c19uZXJyOwpl
eHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IHN5c19lcnJsaXN0W107CgoKZXh0ZXJuIGludCBf
c3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3QgX3N5c19lcnJsaXN0W107CiMg
NjA5ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3Rk
aW8uaCIgMiAzCgoKCgpleHRlcm4gaW50IGZpbGVubyAoRklMRSAqX19zdHJlYW0pIHRocm93ICgp
OwoKCgoKZXh0ZXJuIGludCBmaWxlbm9fdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAo
KTsKCgoKCgoKZXh0ZXJuIEZJTEUgKnBvcGVuIChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCwgX19j
b25zdCBjaGFyICpfX21vZGVzKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHBjbG9zZSAoRklMRSAq
X19zdHJlYW0pIHRocm93ICgpOwoKCgoKCmV4dGVybiBjaGFyICpjdGVybWlkIChjaGFyICpfX3Mp
IHRocm93ICgpOwoKCgoKCmV4dGVybiBjaGFyICpjdXNlcmlkIChjaGFyICpfX3MpIHRocm93ICgp
OwoKCgoKc3RydWN0IG9ic3RhY2s7CgoKZXh0ZXJuIGludCBvYnN0YWNrX3ByaW50ZiAoc3RydWN0
IG9ic3RhY2sgKl9fcmVzdHJpY3QgX19vYnN0YWNrLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAgICB0aHJvdyAoKSBf
X2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKZXh0ZXJuIGlu
dCBvYnN0YWNrX3ZwcmludGYgKHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zv
cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJncykK
ICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwg
MCkpKTsKCgoKCgoKCmV4dGVybiB2b2lkIGZsb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIHRocm93
ICgpOwoKCgpleHRlcm4gaW50IGZ0cnlsb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIHRocm93ICgp
OwoKCmV4dGVybiB2b2lkIGZ1bmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CiMg
NjgzICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3Rk
aW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvLmgiIDEgMwojIDMzICIvdXNyL2lu
Y2x1ZGUvYml0cy9zdGRpby5oIiAzCmlubGluZSBpbnQKdnByaW50ZiAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZm10LCBfX2dudWNfdmFfbGlzdCBfX2FyZykgdGhyb3cgKCkKewogIHJldHVy
biB2ZnByaW50ZiAoc3Rkb3V0LCBfX2ZtdCwgX19hcmcpOwp9CgoKaW5saW5lIGludApnZXRjaGFy
ICh2b2lkKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9JT19nZXRjIChzdGRpbik7Cn0KCgoKCmlubGlu
ZSBpbnQKZ2V0Y191bmxvY2tlZCAoRklMRSAqX19mcCkgdGhyb3cgKCkKewogIHJldHVybiAoKF9f
ZnApLT5fSU9fcmVhZF9wdHIgPj0gKF9fZnApLT5fSU9fcmVhZF9lbmQgPyBfX3VmbG93IChfX2Zw
KSA6ICoodW5zaWduZWQgY2hhciAqKSAoX19mcCktPl9JT19yZWFkX3B0cisrKTsKfQoKCmlubGlu
ZSBpbnQKZ2V0Y2hhcl91bmxvY2tlZCAodm9pZCkgdGhyb3cgKCkKewogIHJldHVybiAoKHN0ZGlu
KS0+X0lPX3JlYWRfcHRyID49IChzdGRpbiktPl9JT19yZWFkX2VuZCA/IF9fdWZsb3cgKHN0ZGlu
KSA6ICoodW5zaWduZWQgY2hhciAqKSAoc3RkaW4pLT5fSU9fcmVhZF9wdHIrKyk7Cn0KCgoKCmlu
bGluZSBpbnQKcHV0Y2hhciAoaW50IF9fYykgdGhyb3cgKCkKewogIHJldHVybiBfSU9fcHV0YyAo
X19jLCBzdGRvdXQpOwp9CgoKCgppbmxpbmUgaW50CmZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBG
SUxFICpfX3N0cmVhbSkgdGhyb3cgKCkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9JT193cml0
ZV9wdHIgPj0gKF9fc3RyZWFtKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChfX3N0cmVh
bSwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihfX3N0cmVhbSkt
Pl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0KCgoKCgppbmxpbmUgaW50CnB1dGNfdW5sb2Nr
ZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKQp7CiAgcmV0dXJuICgoKF9fc3Ry
ZWFtKS0+X0lPX3dyaXRlX3B0ciA+PSAoX19zdHJlYW0pLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3Zl
cmZsb3cgKF9fc3RyZWFtLCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIp
ICgqKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQoKCmlubGluZSBpbnQK
cHV0Y2hhcl91bmxvY2tlZCAoaW50IF9fYykgdGhyb3cgKCkKewogIHJldHVybiAoKChzdGRvdXQp
LT5fSU9fd3JpdGVfcHRyID49IChzdGRvdXQpLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cg
KHN0ZG91dCwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihzdGRv
dXQpLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoKCgoKaW5saW5lIF9fc3NpemVfdApn
ZXRsaW5lIChjaGFyICoqX19saW5lcHRyLCBzaXplX3QgKl9fbiwgRklMRSAqX19zdHJlYW0pIHRo
cm93ICgpCnsKICByZXR1cm4gX19nZXRkZWxpbSAoX19saW5lcHRyLCBfX24sICdcbicsIF9fc3Ry
ZWFtKTsKfQoKCgoKCmlubGluZSBpbnQKZmVvZl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRo
cm93ICgpCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fZmxhZ3MgJiAweDEwKSAhPSAwKTsKfQoK
CmlubGluZSBpbnQKZmVycm9yX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCkKewog
IHJldHVybiAoKChfX3N0cmVhbSktPl9mbGFncyAmIDB4MjApICE9IDApOwp9CiMgNjg0ICIvdXNy
L2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkaW8uaCIgMiAz
CgoKfQojIDQ0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNUcmFjZVJlZmNudC5oIiAy
CgpjbGFzcyBuc0lTdXBwb3J0czsKIyAxNTQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9u
c1RyYWNlUmVmY250LmgiCnN0cnVjdCBuc1RyYWNlUmVmY250U3RhdHMgewogIG5zcmVmY250IG1B
ZGRSZWZzOwogIG5zcmVmY250IG1SZWxlYXNlczsKICBuc3JlZmNudCBtQ3JlYXRlczsKICBuc3Jl
ZmNudCBtRGVzdHJveXM7CiAgZG91YmxlIG1SZWZzT3V0c3RhbmRpbmdUb3RhbDsKICBkb3VibGUg
bVJlZnNPdXRzdGFuZGluZ1NxdWFyZWQ7CiAgZG91YmxlIG1PYmpzT3V0c3RhbmRpbmdUb3RhbDsK
ICBkb3VibGUgbU9ianNPdXRzdGFuZGluZ1NxdWFyZWQ7Cn07CiMgMTczICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUveHBjb20vbnNUcmFjZVJlZmNudC5oIgp0eXBlZGVmIFBSQm9vbCAoICpuc1RyYWNl
UmVmY250U3RhdEZ1bmMpCiAgKGNvbnN0IGNoYXIqIGFUeXBlTmFtZSwKICAgUFJVaW50MzIgYUlu
c3RhbmNlU2l6ZSwKICAgbnNUcmFjZVJlZmNudFN0YXRzKiBhQ3VycmVudFN0YXRzLAogICBuc1Ry
YWNlUmVmY250U3RhdHMqIGFQcmV2U3RhdHMsCiAgIHZvaWQgKmFDbG9zdXJlKTsKCgoKCgpjbGFz
cyBuc1RyYWNlUmVmY250IHsKcHVibGljOgogIHN0YXRpYyB2b2lkIFN0YXJ0dXAoKTsKCiAgc3Rh
dGljIHZvaWQgU2h1dGRvd24oKTsKCiAgc3RhdGljIHZvaWQgTG9nQWRkUmVmKHZvaWQqIGFQdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc3JlZmNudCBhTmV3UmVmQ250LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYVR5cGVOYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUFJVaW50MzIgYUluc3RhbmNlU2l6ZSk7CgogIHN0YXRp
YyB2b2lkIExvZ1JlbGVhc2Uodm9pZCogYVB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuc3JlZmNudCBhTmV3UmVmQ250LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGFUeXBlTmFtZSk7CgogIHN0YXRpYyB2b2lkIExvZ05ld1hQQ09NKHZvaWQq
IGFQdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFUeXBl
TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJVaW50MzIgYUluc3RhbmNl
U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYUZpbGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhTGluZSk7CgogIHN0YXRpYyB2
b2lkIExvZ0RlbGV0ZVhQQ09NKHZvaWQqIGFQdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGFGaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgYUxpbmUpOwoKICBzdGF0aWMgbnNyZWZjbnQgTG9nQWRkUmVmQ2FsbCh2b2lk
KiBhUHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc3JlZmNudCBh
TmV3UmVmY250LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBhRmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFM
aW5lKTsKCiAgc3RhdGljIG5zcmVmY250IExvZ1JlbGVhc2VDYWxsKHZvaWQqIGFQdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc3JlZmNudCBhTmV3UmVmY250LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYUZpbGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYUxpbmUpOwoKICBz
dGF0aWMgdm9pZCBMb2dDdG9yKHZvaWQqIGFQdHIsIGNvbnN0IGNoYXIqIGFUeXBlTmFtZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQUlVpbnQzMiBhSW5zdGFuY2VTaXplKTsKCiAgc3Rh
dGljIHZvaWQgTG9nRHRvcih2b2lkKiBhUHRyLCBjb25zdCBjaGFyKiBhVHlwZU5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUFJVaW50MzIgYUluc3RhbmNlU2l6ZSk7CgogIHN0YXRp
YyB2b2lkIExvZ0FkZENPTVB0cih2b2lkICphQ09NUHRyLCBuc0lTdXBwb3J0cyAqYU9iamVjdCk7
CgogIHN0YXRpYyB2b2lkIExvZ1JlbGVhc2VDT01QdHIodm9pZCAqYUNPTVB0ciwgbnNJU3VwcG9y
dHMgKmFPYmplY3QpOwoKICBlbnVtIFN0YXRpc3RpY3NUeXBlIHsKICAgIEFMTF9TVEFUUywKICAg
IE5FV19TVEFUUwogIH07CgogIHN0YXRpYyBuc3Jlc3VsdCBEdW1wU3RhdGlzdGljcyhTdGF0aXN0
aWNzVHlwZSB0eXBlID0gQUxMX1NUQVRTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRklMRSogb3V0ID0gMCk7CgogIHN0YXRpYyB2b2lkIFJlc2V0U3RhdGlzdGljcyh2
b2lkKTsKCiAgc3RhdGljIHZvaWQgR2F0aGVyU3RhdGlzdGljcyhuc1RyYWNlUmVmY250U3RhdEZ1
bmMgYUZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogYUNs
b3N1cmUpOwoKICBzdGF0aWMgdm9pZCBMb2FkTGlicmFyeVN5bWJvbHMoY29uc3QgY2hhciogYUxp
YnJhcnlOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCog
YUxpYnJheUhhbmRsZSk7CgogIHN0YXRpYyB2b2lkIERlbWFuZ2xlU3ltYm9sKGNvbnN0IGNoYXIg
KiBhU3ltYm9sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICogYUJ1
ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFCdWZMZW4pOwoK
ICBzdGF0aWMgdm9pZCBXYWxrVGhlU3RhY2soRklMRSogYVN0cmVhbSk7CgogIHN0YXRpYyB2b2lk
IFNldFByZWZTZXJ2aWNlQXZhaWxhYmlsaXR5KFBSQm9vbCBhdmFpbCk7CgoKCgoKCiAgc3RhdGlj
IHZvaWQgU2V0QWN0aXZpdHlJc0xlZ2FsKFBSQm9vbCBhTGVnYWwpOwp9OwoKCgoKZXh0ZXJuICJD
IiB2b2lkCk5TX01lYW5BbmRTdGREZXYoZG91YmxlIG4sIGRvdWJsZSBzdW1PZlZhbHVlcywgZG91
YmxlIHN1bU9mU3F1YXJlZFZhbHVlcywKICAgICAgICAgICAgICAgICBkb3VibGUgKm1lYW5SZXN1
bHQsIGRvdWJsZSAqc3RkRGV2UmVzdWx0KTsKIyA2MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29tL25zSVN1cHBvcnRzSW1wbC5oIiAyCiMgOTQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNv
bS9uc0lTdXBwb3J0c0ltcGwuaCIKY2xhc3MgbnNBdXRvUmVmQ250IHsKCiBwdWJsaWM6CiAgICBu
c0F1dG9SZWZDbnQoKSA6IG1WYWx1ZSgwKSB7fQogICAgbnNBdXRvUmVmQ250KG5zcmVmY250IGFW
YWx1ZSkgOiBtVmFsdWUoYVZhbHVlKSB7fQoKCiAgICBuc3JlZmNudCBvcGVyYXRvcisrKCkgeyBy
ZXR1cm4gKyttVmFsdWU7IH0KICAgIG5zcmVmY250IG9wZXJhdG9yLS0oKSB7IHJldHVybiAtLW1W
YWx1ZTsgfQoKICAgIG5zcmVmY250IG9wZXJhdG9yPShuc3JlZmNudCBhVmFsdWUpIHsgcmV0dXJu
IChtVmFsdWUgPSBhVmFsdWUpOyB9CiAgICBvcGVyYXRvciBuc3JlZmNudCgpIGNvbnN0IHsgcmV0
dXJuIG1WYWx1ZTsgfQogICAgbnNyZWZjbnQgZ2V0KCkgY29uc3QgeyByZXR1cm4gbVZhbHVlOyB9
CiBwcml2YXRlOgoKICAgIG5zcmVmY250IG9wZXJhdG9yKysoaW50KTsKICAgIG5zcmVmY250IG9w
ZXJhdG9yLS0oaW50KTsKICAgIG5zcmVmY250IG1WYWx1ZTsKfTsKIyA4MjkgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0c0ltcGwuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUveHBjb20vbnNJQ2xhc3NJbmZvLmgiIDEKIyA4MzAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS94cGNvbS9uc0lTdXBwb3J0c0ltcGwuaCIgMgojIDYyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
eHBjb20vbnNJU3VwcG9ydHNVdGlscy5oIiAyCiMgMTA2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
eHBjb20vbnNJU3VwcG9ydHNVdGlscy5oIgpleHRlcm4gIkMrKyIgewoKCgp0ZW1wbGF0ZSA8Y2xh
c3MgVD4KaW5saW5lCm5zcmVmY250Cm5zX2lmX2FkZHJlZiggVCBleHByICkKCgoKICB7CiAgICBy
ZXR1cm4gZXhwciA/IGV4cHItPkFkZFJlZigpIDogMDsKICB9Cgp9CiMgMjM0ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUveHBjb20vbnNJU3VwcG9ydHNVdGlscy5oIgpleHRlcm4gIkMrKyIgewoKCgpj
bGFzcyBuc0lTdXBwb3J0czsKCnRlbXBsYXRlIDxjbGFzcyBUPgpzdHJ1Y3QgbnNDT01UeXBlSW5m
bwogIHsKICAgIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkgeyByZXR1cm4gVDo6R2V0SUlE
KCk7IH0KICB9OwoKdGVtcGxhdGUgPD4Kc3RydWN0IG5zQ09NVHlwZUluZm88bnNJU3VwcG9ydHM+
CiAgewogICAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7CiAgICAgICAgc3RhdGljIGNv
bnN0IG5zSUlEIGlpZF9OU19JU1VQUE9SVFNfSUlEID0geyAweDAwMDAwMDAwLCAweDAwMDAsIDB4
MDAwMCwgezB4YzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDZ9IH07
IHJldHVybiBpaWRfTlNfSVNVUFBPUlRTX0lJRDsKICAgIH0KICB9OwoKCgoKdGVtcGxhdGUgPGNs
YXNzIFQsIGNsYXNzIERlc3RpbmF0aW9uVHlwZT4KaW5saW5lCm5zcmVzdWx0CkNhbGxRdWVyeUlu
dGVyZmFjZSggVCogYVNvdXJjZSwgRGVzdGluYXRpb25UeXBlKiogYURlc3RpbmF0aW9uICkKICB7
CiAgICA7CiAgICA7CgogICAgcmV0dXJuIGFTb3VyY2UtPlF1ZXJ5SW50ZXJmYWNlKG5zQ09NVHlw
ZUluZm88RGVzdGluYXRpb25UeXBlPjo6R2V0SUlEKCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDwgdm9pZCoqID4oYURlc3RpbmF0aW9uKSk7CiAg
fQoKfQojIDExOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN1cHBvcnRzLmgiIDIK
IyAxMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUNsYXNzSW5mby5oIiAyCgoKCiMg
MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVByb2dyYW1taW5nTGFuZ3VhZ2UuaCIg
MQojIDMyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJUHJvZ3JhbW1pbmdMYW5ndWFn
ZS5oIgpjbGFzcyBuc0lQcm9ncmFtbWluZ0xhbmd1YWdlIDogcHVibGljIG5zSVN1cHBvcnRzIHsK
IHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5z
SUlEIGlpZCA9IHsweGVhNjA0ZTkwLCAweDQwYmEsIDB4MTFkNSwgeyAweDkwLCAweGJiLCAweDAw
LCAweDEwLCAweGE0LCAweGU3LCAweDNkLCAweDlhIH19OyByZXR1cm4gaWlkO30KCgoKCiAgZW51
bSB7IFVOS05PV04gPSAwVSB9OwoKICBlbnVtIHsgQ1BMVVNQTFVTID0gMVUgfTsKCiAgZW51bSB7
IEpBVkFTQ1JJUFQgPSAyVSB9OwoKICBlbnVtIHsgUFlUSE9OID0gM1UgfTsKCiAgZW51bSB7IFBF
UkwgPSA0VSB9OwoKICBlbnVtIHsgSkFWQSA9IDVVIH07CgogIGVudW0geyBaWDgxX0JBU0lDID0g
NlUgfTsKCiAgZW51bSB7IEpBVkFTQ1JJUFQyID0gN1UgfTsKCn07CiMgMTUgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS94cGNvbS9uc0lDbGFzc0luZm8uaCIgMgojIDMzICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUveHBjb20vbnNJQ2xhc3NJbmZvLmgiCmNsYXNzIG5zSUNsYXNzSW5mbyA6IHB1YmxpYyBu
c0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0
YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHg5ODZjMTFkMCwgMHhmMzQwLCAweDExZDQsIHsgMHg5
MCwgMHg3NSwgMHgwMCwgMHgxMCwgMHhhNCwgMHhlNywgMHgzZCwgMHg5YSB9fTsgcmV0dXJuIGlp
ZDt9CiMgNDcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDbGFzc0luZm8uaCIKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldEludGVyZmFjZXMoUFJVaW50MzIgKmNvdW50LCBuc0lJRCAqICoq
YXJyYXkpID0gMDsKIyA2MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUNsYXNzSW5m
by5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SGVscGVyRm9yTGFuZ3VhZ2UoUFJVaW50MzIgbGFu
Z3VhZ2UsIG5zSVN1cHBvcnRzICoqX3JldHZhbCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0Q29udHJhY3RJRChjaGFyICogKmFDb250cmFjdElEKSA9IDA7CgoKCgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldENsYXNzRGVzY3JpcHRpb24oY2hhciAqICphQ2xhc3NEZXNjcmlwdGlvbikg
PSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q2xhc3NJRChuc0NJRCAqICphQ2xhc3NJ
RCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRJbXBsZW1lbnRhdGlvbkxhbmd1YWdl
KFBSVWludDMyICphSW1wbGVtZW50YXRpb25MYW5ndWFnZSkgPSAwOwoKCgoKICBlbnVtIHsgU0lO
R0xFVE9OID0gMVUgfTsKCiAgZW51bSB7IFRIUkVBRFNBRkUgPSAyVSB9OwoKICBlbnVtIHsgTUFJ
Tl9USFJFQURfT05MWSA9IDRVIH07CgogIGVudW0geyBET01fT0JKRUNUID0gOFUgfTsKCiAgZW51
bSB7IFBMVUdJTl9PQkpFQ1QgPSAxNlUgfTsKCiAgZW51bSB7IEVBR0VSX0NMQVNTSU5GTyA9IDMy
VSB9OwoKCgoKCiAgZW51bSB7IENPTlRFTlRfTk9ERSA9IDY0VSB9OwoKICBlbnVtIHsgUkVTRVJW
RUQgPSAyMTQ3NDgzNjQ4VSB9OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGbGFncyhQUlVpbnQz
MiAqYUZsYWdzKSA9IDA7CiMgMTI0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJQ2xh
c3NJbmZvLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDbGFzc0lETm9BbGxvYyhuc0NJRCAqYUNs
YXNzSUROb0FsbG9jKSA9IDA7Cgp9OwojIDQ0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25z
SURPTUNsYXNzSW5mby5oIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zVm9p
ZEFycmF5LmgiIDEKIyA0MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zVm9pZEFycmF5
LmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc0FTdHJpbmcuaCIgMQojIDI4
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zQVN0cmluZy5oIgojIDEgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHJpbmdGd2QuaCIgMQojIDMwICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvc3RyaW5nL25zU3RyaW5nRndkLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3N0cmluZy9uc1N0cmluZ0RlZmluZXMuaCIgMQojIDMxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
c3RyaW5nL25zU3RyaW5nRndkLmgiIDIKCgoKCgoKCmNsYXNzIG5zQVN0cmluZzsKY2xhc3MgbnNB
Q1N0cmluZzsKCgoKCgoKY2xhc3MgbnNBRmxhdFN0cmluZzsKY2xhc3MgbnNBRmxhdENTdHJpbmc7
CgoKCgoKCmNsYXNzIG5zRGVwZW5kZW50U3RyaW5nOwpjbGFzcyBuc0RlcGVuZGVudENTdHJpbmc7
CiMgMjkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNBU3RyaW5nLmgiIDIKCgoKIyAx
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zQnVmZmVySGFuZGxlLmgiIDEKIyA4OSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc0J1ZmZlckhhbmRsZS5oIgp0ZW1wbGF0ZSA8
Y2xhc3MgQ2hhclQ+CmNsYXNzIG5zQnVmZmVySGFuZGxlCiAgewogICAgcHVibGljOgogICAgICB0
eXBlZGVmIFBSVWludDMyIHNpemVfdHlwZTsKCiAgICAgIG5zQnVmZmVySGFuZGxlKCkgeyB9CiAg
ICAgIG5zQnVmZmVySGFuZGxlKCBDaGFyVCogYURhdGFTdGFydCwgQ2hhclQqIGFEYXRhRW5kICkg
OiBtRGF0YVN0YXJ0KGFEYXRhU3RhcnQpLCBtRGF0YUVuZChhRGF0YUVuZCkgeyB9CgogICAgICB2
b2lkIERhdGFTdGFydCggQ2hhclQqIGFOZXdEYXRhU3RhcnQgKSB7IG1EYXRhU3RhcnQgPSBhTmV3
RGF0YVN0YXJ0OyB9CiAgICAgIENoYXJUKiBEYXRhU3RhcnQoKSB7IHJldHVybiBtRGF0YVN0YXJ0
OyB9CiAgICAgIGNvbnN0IENoYXJUKiBEYXRhU3RhcnQoKSBjb25zdCB7IHJldHVybiBtRGF0YVN0
YXJ0OyB9CgogICAgICB2b2lkIERhdGFFbmQoIENoYXJUKiBhTmV3RGF0YUVuZCApIHsgbURhdGFF
bmQgPSBhTmV3RGF0YUVuZDsgfQogICAgICBDaGFyVCogRGF0YUVuZCgpIHsgcmV0dXJuIG1EYXRh
RW5kOyB9CiAgICAgIGNvbnN0IENoYXJUKiBEYXRhRW5kKCkgY29uc3QgeyByZXR1cm4gbURhdGFF
bmQ7IH0KCiAgICAgIHNpemVfdHlwZSBEYXRhTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbURhdGFF
bmQgLSBtRGF0YVN0YXJ0OyB9CgogICAgcHJvdGVjdGVkOgogICAgICBDaGFyVCogbURhdGFTdGFy
dDsKICAgICAgQ2hhclQqIG1EYXRhRW5kOwogIH07CgoKCgoKdGVtcGxhdGUgPGNsYXNzIENoYXJU
PgpjbGFzcyBuc0NvbnN0QnVmZmVySGFuZGxlCiAgewogICAgcHVibGljOgogICAgICB0eXBlZGVm
IFBSVWludDMyIHNpemVfdHlwZTsKCiAgICAgIG5zQ29uc3RCdWZmZXJIYW5kbGUoKSB7IH0KICAg
ICAgbnNDb25zdEJ1ZmZlckhhbmRsZSggY29uc3QgQ2hhclQqIGFEYXRhU3RhcnQsIGNvbnN0IENo
YXJUKiBhRGF0YUVuZCApIDogbURhdGFTdGFydChhRGF0YVN0YXJ0KSwgbURhdGFFbmQoYURhdGFF
bmQpIHsgfQoKICAgICAgdm9pZCBEYXRhU3RhcnQoIGNvbnN0IENoYXJUKiBhTmV3RGF0YVN0YXJ0
ICkgeyBtRGF0YVN0YXJ0ID0gYU5ld0RhdGFTdGFydDsgfQogICAgICBjb25zdCBDaGFyVCogRGF0
YVN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbURhdGFTdGFydDsgfQoKICAgICAgdm9pZCBEYXRhRW5k
KCBjb25zdCBDaGFyVCogYU5ld0RhdGFFbmQgKSB7IG1EYXRhRW5kID0gYU5ld0RhdGFFbmQ7IH0K
ICAgICAgY29uc3QgQ2hhclQqIERhdGFFbmQoKSBjb25zdCB7IHJldHVybiBtRGF0YUVuZDsgfQoK
ICAgICAgc2l6ZV90eXBlIERhdGFMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtRGF0YUVuZCAtIG1E
YXRhU3RhcnQ7IH0KCiAgICBwcm90ZWN0ZWQ6CiAgICAgIGNvbnN0IENoYXJUKiBtRGF0YVN0YXJ0
OwogICAgICBjb25zdCBDaGFyVCogbURhdGFFbmQ7CiAgfTsKCgoKCgoKCnRlbXBsYXRlIDxjbGFz
cyBDaGFyVD4KY2xhc3MgbnNTdHJpbmdBbGxvY2F0b3IKICB7CiAgICBwdWJsaWM6CgogICAgICB2
aXJ0dWFsIHZvaWQgRGVhbGxvY2F0ZSggQ2hhclQqICkgY29uc3QgPSAwOwogIH07CgoKCgogbnNT
dHJpbmdBbGxvY2F0b3I8Y2hhcj4mIFN0cmluZ0FsbG9jYXRvcl9jaGFyKCk7CiBuc1N0cmluZ0Fs
bG9jYXRvcjxQUlVuaWNoYXI+JiBTdHJpbmdBbGxvY2F0b3Jfd2NoYXJfdCgpOwoKCgoKCnRlbXBs
YXRlIDxjbGFzcyBUPgpzdHJ1Y3QgbnNTdHJpbmdBbGxvY2F0b3JUcmFpdHMKICB7CiAgfTsKCnRl
bXBsYXRlIDw+CnN0cnVjdCBuc1N0cmluZ0FsbG9jYXRvclRyYWl0czxjaGFyPgogIHsKICAgIHN0
YXRpYyBuc1N0cmluZ0FsbG9jYXRvcjxjaGFyPiYgZ2xvYmFsX3N0cmluZ19hbGxvY2F0b3IoKSB7
IHJldHVybiBTdHJpbmdBbGxvY2F0b3JfY2hhcigpOyB9CiAgfTsKCnRlbXBsYXRlIDw+CnN0cnVj
dCBuc1N0cmluZ0FsbG9jYXRvclRyYWl0czxQUlVuaWNoYXI+CiAgewogICAgc3RhdGljIG5zU3Ry
aW5nQWxsb2NhdG9yPFBSVW5pY2hhcj4mIGdsb2JhbF9zdHJpbmdfYWxsb2NhdG9yKCkgeyByZXR1
cm4gU3RyaW5nQWxsb2NhdG9yX3djaGFyX3QoKTsgfQogIH07CgoKCgp0ZW1wbGF0ZSA8Y2xhc3Mg
Q2hhclQ+CmNsYXNzIG5zU2hhcmVkQnVmZmVySGFuZGxlCiAgICA6IHB1YmxpYyBuc0J1ZmZlckhh
bmRsZTxDaGFyVD4KICB7CiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgUFJVaW50MzIgc2l6ZV90
eXBlOwoKICAgICAgZW51bQogICAgICAgIHsKICAgICAgICAgIGtJc0ltbXV0YWJsZSA9IDB4MDEw
MDAwMDAsCiAgICAgICAgICBrSXNTaW5nbGVBbGxvY2F0aW9uV2l0aEJ1ZmZlciA9IDB4MDIwMDAw
MDAsCiAgICAgICAgICBrSXNVc2VyQWxsb2NhdG9yID0gMHgwNDAwMDAwMCwKCgogICAgICAgICAg
a0lzTlVMTCA9IDB4ODAwMDAwMDAsCiAgICAgICAgICBrSW1wbGVtZW50YXRpb25GbGFnc01hc2sg
PSAweEYwMDAwMDAwLAoKICAgICAgICAgIGtGbGFnc01hc2sgPSAweEZGMDAwMDAwLAogICAgICAg
ICAga1JlZkNvdW50TWFzayA9IDB4MDBGRkZGRkYKICAgICAgICB9OwoKICAgIHB1YmxpYzoKICAg
ICAgbnNTaGFyZWRCdWZmZXJIYW5kbGUoIENoYXJUKiBhRGF0YVN0YXJ0LCBDaGFyVCogYURhdGFF
bmQsIHNpemVfdHlwZSBhU3RvcmFnZUxlbmd0aCwgUFJCb29sIGlzU2luZ2xlQWxsb2NhdGlvbiAp
CiAgICAgICAgICA6IG5zQnVmZmVySGFuZGxlPENoYXJUPihhRGF0YVN0YXJ0LCBhRGF0YUVuZCks
CiAgICAgICAgICAgIG1GbGFncygwKSwKICAgICAgICAgICAgbVN0b3JhZ2VMZW5ndGgoYVN0b3Jh
Z2VMZW5ndGgpCiAgICAgICAgewogICAgICAgICAgaWYgKCBpc1NpbmdsZUFsbG9jYXRpb24gKQog
ICAgICAgICAgICBtRmxhZ3MgfD0ga0lzU2luZ2xlQWxsb2NhdGlvbldpdGhCdWZmZXI7CiAgICAg
ICAgfQoKICAgICAgfm5zU2hhcmVkQnVmZmVySGFuZGxlKCk7CgogICAgICB2b2lkCiAgICAgIEFj
cXVpcmVSZWZlcmVuY2UoKSBjb25zdAogICAgICAgIHsKICAgICAgICAgIG5zU2hhcmVkQnVmZmVy
SGFuZGxlPENoYXJUPiogbXV0YWJsZV90aGlzID0gY29uc3RfY2FzdDwgbnNTaGFyZWRCdWZmZXJI
YW5kbGU8Q2hhclQ+KiA+KHRoaXMpOwogICAgICAgICAgbXV0YWJsZV90aGlzLT5zZXRfcmVmY291
bnQoIGdldF9yZWZjb3VudCgpKzEgKTsKICAgICAgICB9CgogICAgICB2b2lkIFJlbGVhc2VSZWZl
cmVuY2UoKSBjb25zdDsKCiAgICAgIFBSQm9vbAogICAgICBJc1JlZmVyZW5jZWQoKSBjb25zdAog
ICAgICAgIHsKICAgICAgICAgIHJldHVybiBnZXRfcmVmY291bnQoKSAhPSAwOwogICAgICAgIH0K
CiAgICAgIFBSQm9vbAogICAgICBJc011dGFibGUoKSBjb25zdAogICAgICAgIHsKCiAgICAgICAg
ICByZXR1cm4gKG1GbGFncyAmIChrUmVmQ291bnRNYXNrIHwga0lzSW1tdXRhYmxlKSA9PSAxKTsK
ICAgICAgICB9CgogICAgICB2b2lkIFN0b3JhZ2VMZW5ndGgoIHNpemVfdHlwZSBhTmV3U3RvcmFn
ZUxlbmd0aCApCiAgICAgICAgewogICAgICAgICAgbVN0b3JhZ2VMZW5ndGggPSBhTmV3U3RvcmFn
ZUxlbmd0aDsKICAgICAgICB9CgogICAgICBzaXplX3R5cGUKICAgICAgU3RvcmFnZUxlbmd0aCgp
IGNvbnN0CiAgICAgICAgewogICAgICAgICAgcmV0dXJuIG1TdG9yYWdlTGVuZ3RoOwogICAgICAg
IH0KCiAgICAgIFBSVWludDMyCiAgICAgIEdldEltcGxlbWVudGF0aW9uRmxhZ3MoKSBjb25zdAog
ICAgICAgIHsKICAgICAgICAgIHJldHVybiBtRmxhZ3MgJiBrSW1wbGVtZW50YXRpb25GbGFnc01h
c2s7CiAgICAgICAgfQoKICAgICAgdm9pZAogICAgICBTZXRJbXBsZW1lbnRhdGlvbkZsYWdzKCBQ
UlVpbnQzMiBhTmV3RmxhZ3MgKQogICAgICAgIHsKICAgICAgICAgIG1GbGFncyA9IChtRmxhZ3Mg
JiB+a0ltcGxlbWVudGF0aW9uRmxhZ3NNYXNrKSB8IChhTmV3RmxhZ3MgJiBrSW1wbGVtZW50YXRp
b25GbGFnc01hc2spOwogICAgICAgIH0KCiAgICBwcm90ZWN0ZWQ6CiAgICAgIFBSVWludDMyIG1G
bGFnczsKICAgICAgc2l6ZV90eXBlIG1TdG9yYWdlTGVuZ3RoOwoKICAgICAgUFJVaW50MzIKICAg
ICAgZ2V0X3JlZmNvdW50KCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICByZXR1cm4gbUZsYWdz
ICYga1JlZkNvdW50TWFzazsKICAgICAgICB9CgogICAgICBQUlVpbnQzMgogICAgICBzZXRfcmVm
Y291bnQoIFBSVWludDMyIGFOZXdSZWZDb3VudCApCiAgICAgICAgewogICAgICAgICAgOwoKICAg
ICAgICAgIG1GbGFncyA9IChtRmxhZ3MgJiBrRmxhZ3NNYXNrKSB8IGFOZXdSZWZDb3VudDsKICAg
ICAgICAgIHJldHVybiBhTmV3UmVmQ291bnQ7CiAgICAgICAgfQoKICAgICAgbnNTdHJpbmdBbGxv
Y2F0b3I8Q2hhclQ+JiBnZXRfYWxsb2NhdG9yKCkgY29uc3Q7CiAgfTsKCgp0ZW1wbGF0ZSA8Y2xh
c3MgQ2hhclQ+CmNsYXNzIG5zU2hhcmVkQnVmZmVySGFuZGxlV2l0aEFsbG9jYXRvcgogICAgOiBw
dWJsaWMgbnNTaGFyZWRCdWZmZXJIYW5kbGU8Q2hhclQ+CiAgewogICAgcHVibGljOgoKICAgICAg
dHlwZWRlZiBQUlVpbnQzMiBzaXplX3R5cGU7CgogICAgICBuc1NoYXJlZEJ1ZmZlckhhbmRsZVdp
dGhBbGxvY2F0b3IoIENoYXJUKiBhRGF0YVN0YXJ0LCBDaGFyVCogYURhdGFFbmQsIHNpemVfdHlw
ZSBhU3RvcmFnZUxlbmd0aCwgbnNTdHJpbmdBbGxvY2F0b3I8Q2hhclQ+JiBhQWxsb2NhdG9yICkK
ICAgICAgICAgIDogbnNTaGFyZWRCdWZmZXJIYW5kbGU8Q2hhclQ+KGFEYXRhU3RhcnQsIGFEYXRh
RW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYVN0b3JhZ2VMZW5n
dGgsIDApLAogICAgICAgICAgICBtQWxsb2NhdG9yKGFBbGxvY2F0b3IpCiAgICAgICAgewogICAg
ICAgICAgdGhpcy0+bUZsYWdzIHw9IHRoaXMtPmtJc1VzZXJBbGxvY2F0b3I7CiAgICAgICAgfQoK
ICAgICAgbnNTdHJpbmdBbGxvY2F0b3I8Q2hhclQ+JiBnZXRfYWxsb2NhdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbUFsbG9jYXRvcjsgfQoKICAgIHByb3RlY3RlZDoKICAgICAgbnNTdHJpbmdBbGxvY2F0
b3I8Q2hhclQ+JiBtQWxsb2NhdG9yOwogIH07CgoKCnRlbXBsYXRlIDxjbGFzcyBDaGFyVD4KY2xh
c3MgbnNTaGFyZWRCdWZmZXJIYW5kbGVXaXRoRGVzdHJveQogICAgOiBwdWJsaWMgbnNTaGFyZWRC
dWZmZXJIYW5kbGU8Q2hhclQ+CiAgewogICAgcHVibGljOgoKICAgICAgdHlwZWRlZiBQUlVpbnQz
MiBzaXplX3R5cGU7CgogICAgICBuc1NoYXJlZEJ1ZmZlckhhbmRsZVdpdGhEZXN0cm95KCBDaGFy
VCogYURhdGFTdGFydCwgQ2hhclQqIGFEYXRhRW5kLCBzaXplX3R5cGUgYVN0b3JhZ2VMZW5ndGgp
CiAgICAgICAgICA6IG5zU2hhcmVkQnVmZmVySGFuZGxlPENoYXJUPihhRGF0YVN0YXJ0LCBhRGF0
YUVuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFTdG9yYWdlTGVu
Z3RoLCAwKQogICAgICAgIHsKICAgICAgICAgIHRoaXMtPm1GbGFncyB8PQogICAgICAgICAgICAg
IHRoaXMtPmtJc1VzZXJBbGxvY2F0b3IgfCB0aGlzLT5rSXNTaW5nbGVBbGxvY2F0aW9uV2l0aEJ1
ZmZlcjsKICAgICAgICB9CgogICAgICB2aXJ0dWFsIHZvaWQgRGVzdHJveSgpID0gMDsKCgoKCiAg
ICAgIHZpcnR1YWwgfm5zU2hhcmVkQnVmZmVySGFuZGxlV2l0aERlc3Ryb3koKSB7IH0KCgogIH07
Cgp0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQ+CmNsYXNzIG5zTm9uRGVzdHJ1Y3RpbmdTaGFyZWRCdWZm
ZXJIYW5kbGUKICAgIDogcHVibGljIG5zU2hhcmVkQnVmZmVySGFuZGxlV2l0aERlc3Ryb3k8Q2hh
clQ+CiAgewogICAgcHVibGljOgoKICAgICAgdHlwZWRlZiBQUlVpbnQzMiBzaXplX3R5cGU7Cgog
ICAgICBuc05vbkRlc3RydWN0aW5nU2hhcmVkQnVmZmVySGFuZGxlKCBDaGFyVCogYURhdGFTdGFy
dCwgQ2hhclQqIGFEYXRhRW5kLCBzaXplX3R5cGUgYVN0b3JhZ2VMZW5ndGgpCiAgICAgICAgICA6
IG5zU2hhcmVkQnVmZmVySGFuZGxlV2l0aERlc3Ryb3k8Q2hhclQ+KGFEYXRhU3RhcnQsIGFEYXRh
RW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
U3RvcmFnZUxlbmd0aCkKICAgICAgICB7CiAgICAgICAgfQoKICAgICAgdmlydHVhbCB2b2lkIERl
c3Ryb3koKQogICAgICAgIHsKCgogICAgICAgICAgdGhpcy0+c2V0X3JlZmNvdW50KDEpOwogICAg
ICAgIH0KCiAgfTsKCgp0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQ+Cm5zU3RyaW5nQWxsb2NhdG9yPENo
YXJUPiYKbnNTaGFyZWRCdWZmZXJIYW5kbGU8Q2hhclQ+OjpnZXRfYWxsb2NhdG9yKCkgY29uc3QK
CiAgewogICAgaWYgKCBtRmxhZ3MgJiBrSXNVc2VyQWxsb2NhdG9yICkKICAgICAgewogICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PCBjb25zdCBuc1NoYXJlZEJ1ZmZlckhhbmRsZVdpdGhB
bGxvY2F0b3I8Q2hhclQ+KiA+KHRoaXMpLT5nZXRfYWxsb2NhdG9yKCk7CiAgICAgIH0KCiAgICBy
ZXR1cm4gbnNTdHJpbmdBbGxvY2F0b3JUcmFpdHM8Q2hhclQ+OjpnbG9iYWxfc3RyaW5nX2FsbG9j
YXRvcigpOwogIH0KCgp0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQ+Cm5zU2hhcmVkQnVmZmVySGFuZGxl
PENoYXJUPjo6fm5zU2hhcmVkQnVmZmVySGFuZGxlKCkKCiAgewogICAgOwoKICAgIGlmICggISht
RmxhZ3MgJiBrSXNTaW5nbGVBbGxvY2F0aW9uV2l0aEJ1ZmZlcikgKQogICAgICB7CiAgICAgICAg
Q2hhclQqIHN0cmluZ19zdG9yYWdlID0gdGhpcy0+bURhdGFTdGFydDsKICAgICAgICBnZXRfYWxs
b2NhdG9yKCkuRGVhbGxvY2F0ZShzdHJpbmdfc3RvcmFnZSk7CiAgICAgIH0KICB9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgQ2hhclQ+CnZvaWQKbnNTaGFyZWRCdWZmZXJIYW5kbGU8Q2hhclQ+OjpSZWxlYXNl
UmVmZXJlbmNlKCkgY29uc3QKICB7CiAgICBuc1NoYXJlZEJ1ZmZlckhhbmRsZTxDaGFyVD4qIG11
dGFibGVfdGhpcyA9IGNvbnN0X2Nhc3Q8IG5zU2hhcmVkQnVmZmVySGFuZGxlPENoYXJUPiogPih0
aGlzKTsKICAgIGlmICggIW11dGFibGVfdGhpcy0+c2V0X3JlZmNvdW50KCBnZXRfcmVmY291bnQo
KS0xICkgKQogICAgICB7CiAgICAgICAgaWYgKCB+bUZsYWdzICYgKGtJc1VzZXJBbGxvY2F0b3J8
a0lzU2luZ2xlQWxsb2NhdGlvbldpdGhCdWZmZXIpICkKICAgICAgICAgIGRlbGV0ZSBtdXRhYmxl
X3RoaXM7CiAgICAgICAgZWxzZQoKCgogICAgICAgICAgc3RhdGljX2Nhc3Q8IG5zU2hhcmVkQnVm
ZmVySGFuZGxlV2l0aERlc3Ryb3k8Q2hhclQ+KiA+KG11dGFibGVfdGhpcyktPkRlc3Ryb3koKTsK
CiAgICAgIH0KICB9CiMgMzMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNBU3RyaW5n
LmgiIDIKCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zQ2hhclRyYWl0cy5o
IiAxCiMgNDYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNDaGFyVHJhaXRzLmgiCiMg
MSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDEgMwojIDMwICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIg
MwpleHRlcm4gIkMiIHsKIyA0OCAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMKZW51bQp7CiAgX0lT
dXBwZXIgPSAoKDApIDwgOCA/ICgoMSA8PCAoMCkpIDw8IDgpIDogKCgxIDw8ICgwKSkgPj4gOCkp
LAogIF9JU2xvd2VyID0gKCgxKSA8IDggPyAoKDEgPDwgKDEpKSA8PCA4KSA6ICgoMSA8PCAoMSkp
ID4+IDgpKSwKICBfSVNhbHBoYSA9ICgoMikgPCA4ID8gKCgxIDw8ICgyKSkgPDwgOCkgOiAoKDEg
PDwgKDIpKSA+PiA4KSksCiAgX0lTZGlnaXQgPSAoKDMpIDwgOCA/ICgoMSA8PCAoMykpIDw8IDgp
IDogKCgxIDw8ICgzKSkgPj4gOCkpLAogIF9JU3hkaWdpdCA9ICgoNCkgPCA4ID8gKCgxIDw8ICg0
KSkgPDwgOCkgOiAoKDEgPDwgKDQpKSA+PiA4KSksCiAgX0lTc3BhY2UgPSAoKDUpIDwgOCA/ICgo
MSA8PCAoNSkpIDw8IDgpIDogKCgxIDw8ICg1KSkgPj4gOCkpLAogIF9JU3ByaW50ID0gKCg2KSA8
IDggPyAoKDEgPDwgKDYpKSA8PCA4KSA6ICgoMSA8PCAoNikpID4+IDgpKSwKICBfSVNncmFwaCA9
ICgoNykgPCA4ID8gKCgxIDw8ICg3KSkgPDwgOCkgOiAoKDEgPDwgKDcpKSA+PiA4KSksCiAgX0lT
YmxhbmsgPSAoKDgpIDwgOCA/ICgoMSA8PCAoOCkpIDw8IDgpIDogKCgxIDw8ICg4KSkgPj4gOCkp
LAogIF9JU2NudHJsID0gKCg5KSA8IDggPyAoKDEgPDwgKDkpKSA8PCA4KSA6ICgoMSA8PCAoOSkp
ID4+IDgpKSwKICBfSVNwdW5jdCA9ICgoMTApIDwgOCA/ICgoMSA8PCAoMTApKSA8PCA4KSA6ICgo
MSA8PCAoMTApKSA+PiA4KSksCiAgX0lTYWxudW0gPSAoKDExKSA8IDggPyAoKDEgPDwgKDExKSkg
PDwgOCkgOiAoKDEgPDwgKDExKSkgPj4gOCkpCn07CiMgODEgIi91c3IvaW5jbHVkZS9jdHlwZS5o
IiAzCmV4dGVybiBfX2NvbnN0IHVuc2lnbmVkIHNob3J0IGludCAqKl9fY3R5cGVfYl9sb2MgKHZv
aWQpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3QpKTsKZXh0ZXJuIF9fY29uc3QgX19pbnQz
Ml90ICoqX19jdHlwZV90b2xvd2VyX2xvYyAodm9pZCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdCkpOwpleHRlcm4gX19jb25zdCBfX2ludDMyX3QgKipfX2N0eXBlX3RvdXBwZXJfbG9jICh2
b2lkKQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0KSk7CiMgOTYgIi91c3IvaW5jbHVkZS9j
dHlwZS5oIiAzCgoKCgoKCmV4dGVybiBpbnQgaXNhbG51bSAoaW50KSB0aHJvdyAoKTsKZXh0ZXJu
IGludCBpc2FscGhhIChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzY250cmwgKGludCkgdGhy
b3cgKCk7CmV4dGVybiBpbnQgaXNkaWdpdCAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc2xv
d2VyIChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzZ3JhcGggKGludCkgdGhyb3cgKCk7CmV4
dGVybiBpbnQgaXNwcmludCAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc3B1bmN0IChpbnQp
IHRocm93ICgpOwpleHRlcm4gaW50IGlzc3BhY2UgKGludCkgdGhyb3cgKCk7CmV4dGVybiBpbnQg
aXN1cHBlciAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc3hkaWdpdCAoaW50KSB0aHJvdyAo
KTsKCgoKZXh0ZXJuIGludCB0b2xvd2VyIChpbnQgX19jKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50
IHRvdXBwZXIgKGludCBfX2MpIHRocm93ICgpOwoKCgoKCgoKCmV4dGVybiBpbnQgaXNibGFuayAo
aW50KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBpc2N0eXBlIChpbnQgX19jLCBpbnQgX19t
YXNrKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBpc2FzY2lpIChpbnQgX19jKSB0aHJvdyAo
KTsKCgoKZXh0ZXJuIGludCB0b2FzY2lpIChpbnQgX19jKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGlu
dCBfdG91cHBlciAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfdG9sb3dlciAoaW50KSB0aHJv
dyAoKTsKIyAyNDcgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzCmV4dGVybiBpbnQgaXNhbG51bV9s
IChpbnQsIF9fbG9jYWxlX3QpIHRocm93ICgpOwpleHRlcm4gaW50IGlzYWxwaGFfbCAoaW50LCBf
X2xvY2FsZV90KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc2NudHJsX2wgKGludCwgX19sb2NhbGVf
dCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgaXNkaWdpdF9sIChpbnQsIF9fbG9jYWxlX3QpIHRocm93
ICgpOwpleHRlcm4gaW50IGlzbG93ZXJfbCAoaW50LCBfX2xvY2FsZV90KSB0aHJvdyAoKTsKZXh0
ZXJuIGludCBpc2dyYXBoX2wgKGludCwgX19sb2NhbGVfdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQg
aXNwcmludF9sIChpbnQsIF9fbG9jYWxlX3QpIHRocm93ICgpOwpleHRlcm4gaW50IGlzcHVuY3Rf
bCAoaW50LCBfX2xvY2FsZV90KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc3NwYWNlX2wgKGludCwg
X19sb2NhbGVfdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgaXN1cHBlcl9sIChpbnQsIF9fbG9jYWxl
X3QpIHRocm93ICgpOwpleHRlcm4gaW50IGlzeGRpZ2l0X2wgKGludCwgX19sb2NhbGVfdCkgdGhy
b3cgKCk7CgpleHRlcm4gaW50IGlzYmxhbmtfbCAoaW50LCBfX2xvY2FsZV90KSB0aHJvdyAoKTsK
CgoKZXh0ZXJuIGludCBfX3RvbG93ZXJfbCAoaW50IF9fYywgX19sb2NhbGVfdCBfX2wpIHRocm93
ICgpOwpleHRlcm4gaW50IHRvbG93ZXJfbCAoaW50IF9fYywgX19sb2NhbGVfdCBfX2wpIHRocm93
ICgpOwoKCmV4dGVybiBpbnQgX190b3VwcGVyX2wgKGludCBfX2MsIF9fbG9jYWxlX3QgX19sKSB0
aHJvdyAoKTsKZXh0ZXJuIGludCB0b3VwcGVyX2wgKGludCBfX2MsIF9fbG9jYWxlX3QgX19sKSB0
aHJvdyAoKTsKIyAzMjMgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzCn0KIyA0NyAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL3N0cmluZy9uc0NoYXJUcmFpdHMuaCIgMgojIDcwICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvc3RyaW5nL25zQ2hhclRyYWl0cy5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9zdHJpbmcvbnNTdHJpbmdJdGVyYXRvclV0aWxzLmgiIDEKIyAzMSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL3N0cmluZy9uc1N0cmluZ0l0ZXJhdG9yVXRpbHMuaCIKdGVtcGxhdGUgPGNsYXNzIEl0
ZXJhdG9yPgppbmxpbmUKUFJCb29sClNhbWVGcmFnbWVudCggY29uc3QgSXRlcmF0b3ImIGxocywg
Y29uc3QgSXRlcmF0b3ImIHJocyApCiAgewogICAgcmV0dXJuIGxocy5mcmFnbWVudCgpLm1TdGFy
dCA9PSByaHMuZnJhZ21lbnQoKS5tU3RhcnQ7CiAgfQoKdGVtcGxhdGUgPGNsYXNzIENoYXJUPiBj
bGFzcyBuc1JlYWRpbmdJdGVyYXRvcjsKCgoKCiBzaXplX3QgRGlzdGFuY2UoIGNvbnN0IG5zUmVh
ZGluZ0l0ZXJhdG9yPFBSVW5pY2hhcj4mLCBjb25zdCBuc1JlYWRpbmdJdGVyYXRvcjxQUlVuaWNo
YXI+JiApOwogc2l6ZV90IERpc3RhbmNlKCBjb25zdCBuc1JlYWRpbmdJdGVyYXRvcjxjaGFyPiYs
IGNvbnN0IG5zUmVhZGluZ0l0ZXJhdG9yPGNoYXI+JiApOwojIDcxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvc3RyaW5nL25zQ2hhclRyYWl0cy5oIiAyCgoKCgoKICB0eXBlZGVmIFBSQm9vbCBuc0No
YXJUcmFpdHNfYm9vbDsKCgp0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQ+IHN0cnVjdCBuc0NoYXJUcmFp
dHMge307Cgp0ZW1wbGF0ZSA8PgpzdHJ1Y3QgbnNDaGFyVHJhaXRzPFBSVW5pY2hhcj4KICB7CiAg
ICB0eXBlZGVmIFBSVW5pY2hhciBjaGFyX3R5cGU7CiAgICB0eXBlZGVmIFBSVWludDE2IHVuc2ln
bmVkX2NoYXJfdHlwZTsKICAgIHR5cGVkZWYgY2hhciBpbmNvbXBhdGlibGVfY2hhcl90eXBlOwoK
ICAgIHN0YXRpYwogICAgdm9pZAogICAgYXNzaWduKCBjaGFyX3R5cGUmIGxocywgY2hhcl90eXBl
IHJocyApCiAgICAgIHsKICAgICAgICBsaHMgPSByaHM7CiAgICAgIH0KCgoKCgoKCiAgICB0eXBl
ZGVmIGludCBpbnRfdHlwZTsKCgogICAgc3RhdGljCiAgICBjaGFyX3R5cGUKICAgIHRvX2NoYXJf
dHlwZSggaW50X3R5cGUgYyApCiAgICAgIHsKICAgICAgICByZXR1cm4gY2hhcl90eXBlKGMpOwog
ICAgICB9CgogICAgc3RhdGljCiAgICBpbnRfdHlwZQogICAgdG9faW50X3R5cGUoIGNoYXJfdHlw
ZSBjICkKICAgICAgewogICAgICAgIHJldHVybiBpbnRfdHlwZSggc3RhdGljX2Nhc3Q8IHVuc2ln
bmVkX2NoYXJfdHlwZSA+KGMpICk7CiAgICAgIH0KCiAgICBzdGF0aWMKICAgIG5zQ2hhclRyYWl0
c19ib29sCiAgICBlcV9pbnRfdHlwZSggaW50X3R5cGUgbGhzLCBpbnRfdHlwZSByaHMgKQogICAg
ICB7CiAgICAgICAgcmV0dXJuIGxocyA9PSByaHM7CiAgICAgIH0KCgoKCiAgICBzdGF0aWMKICAg
IG5zQ2hhclRyYWl0c19ib29sCiAgICBlcSggY2hhcl90eXBlIGxocywgY2hhcl90eXBlIHJocyAp
CiAgICAgIHsKICAgICAgICByZXR1cm4gbGhzID09IHJoczsKICAgICAgfQoKICAgIHN0YXRpYwog
ICAgbnNDaGFyVHJhaXRzX2Jvb2wKICAgIGx0KCBjaGFyX3R5cGUgbGhzLCBjaGFyX3R5cGUgcmhz
ICkKICAgICAgewogICAgICAgIHJldHVybiBsaHMgPCByaHM7CiAgICAgIH0KCgoKCiAgICBzdGF0
aWMKICAgIGNoYXJfdHlwZSoKICAgIG1vdmUoIGNoYXJfdHlwZSogczEsIGNvbnN0IGNoYXJfdHlw
ZSogczIsIHNpemVfdCBuICkKICAgICAgewogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDwgY2hh
cl90eXBlKiA+KG1lbW1vdmUoczEsIHMyLCBuICogc2l6ZW9mKGNoYXJfdHlwZSkpKTsKICAgICAg
fQoKICAgIHN0YXRpYwogICAgY2hhcl90eXBlKgogICAgY29weSggY2hhcl90eXBlKiBzMSwgY29u
c3QgY2hhcl90eXBlKiBzMiwgc2l6ZV90IG4gKQogICAgICB7CiAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PCBjaGFyX3R5cGUqID4obWVtY3B5KHMxLCBzMiwgbiAqIHNpemVvZihjaGFyX3R5cGUp
KSk7CiAgICAgIH0KCiAgICBzdGF0aWMKICAgIGNoYXJfdHlwZSoKICAgIGFzc2lnbiggY2hhcl90
eXBlKiBzLCBzaXplX3QgbiwgY2hhcl90eXBlIGMgKQogICAgICB7CgoKCiAgICAgICAgY2hhcl90
eXBlKiByZXN1bHQgPSBzOwogICAgICAgIHdoaWxlICggbi0tICkKICAgICAgICAgIGFzc2lnbigq
cysrLCBjKTsKICAgICAgICByZXR1cm4gcmVzdWx0OwoKICAgICAgfQoKICAgIHN0YXRpYwogICAg
aW50CiAgICBjb21wYXJlKCBjb25zdCBjaGFyX3R5cGUqIHMxLCBjb25zdCBjaGFyX3R5cGUqIHMy
LCBzaXplX3QgbiApCiAgICAgIHsKCgoKICAgICAgICBmb3IgKCA7IG4tLTsgKytzMSwgKytzMiAp
CiAgICAgICAgICB7CiAgICAgICAgICAgIGlmICggbHQoKnMxLCAqczIpICkKICAgICAgICAgICAg
ICByZXR1cm4gLTE7CiAgICAgICAgICAgIGlmICggbHQoKnMyLCAqczEpICkKICAgICAgICAgICAg
ICByZXR1cm4gMTsKICAgICAgICAgIH0KCiAgICAgICAgcmV0dXJuIDA7CgogICAgICB9CgogICAg
c3RhdGljCiAgICBzaXplX3QKICAgIGxlbmd0aCggY29uc3QgY2hhcl90eXBlKiBzICkKICAgICAg
ewoKCgogICAgICAgIHNpemVfdCByZXN1bHQgPSAwOwogICAgICAgIHdoaWxlICggIWVxKCpzKyss
IGNoYXJfdHlwZSgwKSkgKQogICAgICAgICAgKytyZXN1bHQ7CiAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKCiAgICAgIH0KCiAgICBzdGF0aWMKICAgIGNvbnN0IGNoYXJfdHlwZSoKICAgIGZpbmQoIGNv
bnN0IGNoYXJfdHlwZSogcywgc2l6ZV90IG4sIGNoYXJfdHlwZSBjICkKICAgICAgewoKCgogICAg
ICAgIHdoaWxlICggbi0tICkKICAgICAgICAgIHsKICAgICAgICAgICAgaWYgKCBlcSgqcywgYykg
KQogICAgICAgICAgICAgIHJldHVybiBzOwogICAgICAgICAgICArK3M7CiAgICAgICAgICB9Cgog
ICAgICAgIHJldHVybiAwOwoKICAgICAgfQojIDI1MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0
cmluZy9uc0NoYXJUcmFpdHMuaCIKICB9OwoKdGVtcGxhdGUgPD4Kc3RydWN0IG5zQ2hhclRyYWl0
czxjaGFyPgogIHsKICAgIHR5cGVkZWYgY2hhciBjaGFyX3R5cGU7CiAgICB0eXBlZGVmIHVuc2ln
bmVkIGNoYXIgdW5zaWduZWRfY2hhcl90eXBlOwogICAgdHlwZWRlZiBQUlVuaWNoYXIgaW5jb21w
YXRpYmxlX2NoYXJfdHlwZTsKCiAgICBzdGF0aWMKICAgIHZvaWQKICAgIGFzc2lnbiggY2hhcl90
eXBlJiBsaHMsIGNoYXJfdHlwZSByaHMgKQogICAgICB7CiAgICAgICAgbGhzID0gcmhzOwogICAg
ICB9CgoKCgogICAgdHlwZWRlZiBpbnQgaW50X3R5cGU7CgogICAgc3RhdGljCiAgICBjaGFyX3R5
cGUKICAgIHRvX2NoYXJfdHlwZSggaW50X3R5cGUgYyApCiAgICAgIHsKICAgICAgICByZXR1cm4g
Y2hhcl90eXBlKGMpOwogICAgICB9CgogICAgc3RhdGljCiAgICBpbnRfdHlwZQogICAgdG9faW50
X3R5cGUoIGNoYXJfdHlwZSBjICkKICAgICAgewogICAgICAgIHJldHVybiBpbnRfdHlwZSggc3Rh
dGljX2Nhc3Q8IHVuc2lnbmVkX2NoYXJfdHlwZSA+KGMpICk7CiAgICAgIH0KCiAgICBzdGF0aWMK
ICAgIG5zQ2hhclRyYWl0c19ib29sCiAgICBlcV9pbnRfdHlwZSggaW50X3R5cGUgbGhzLCBpbnRf
dHlwZSByaHMgKQogICAgICB7CiAgICAgICAgcmV0dXJuIGxocyA9PSByaHM7CiAgICAgIH0KCgoK
CiAgICBzdGF0aWMKICAgIG5zQ2hhclRyYWl0c19ib29sCiAgICBlcSggY2hhcl90eXBlIGxocywg
Y2hhcl90eXBlIHJocyApCiAgICAgIHsKICAgICAgICByZXR1cm4gbGhzID09IHJoczsKICAgICAg
fQoKICAgIHN0YXRpYwogICAgbnNDaGFyVHJhaXRzX2Jvb2wKICAgIGx0KCBjaGFyX3R5cGUgbGhz
LCBjaGFyX3R5cGUgcmhzICkKICAgICAgewogICAgICAgIHJldHVybiBsaHMgPCByaHM7CiAgICAg
IH0KCgoKCiAgICBzdGF0aWMKICAgIGNoYXJfdHlwZSoKICAgIG1vdmUoIGNoYXJfdHlwZSogczEs
IGNvbnN0IGNoYXJfdHlwZSogczIsIHNpemVfdCBuICkKICAgICAgewogICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDwgY2hhcl90eXBlKiA+KG1lbW1vdmUoczEsIHMyLCBuICogc2l6ZW9mKGNoYXJf
dHlwZSkpKTsKICAgICAgfQoKICAgIHN0YXRpYwogICAgY2hhcl90eXBlKgogICAgY29weSggY2hh
cl90eXBlKiBzMSwgY29uc3QgY2hhcl90eXBlKiBzMiwgc2l6ZV90IG4gKQogICAgICB7CiAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PCBjaGFyX3R5cGUqID4obWVtY3B5KHMxLCBzMiwgbiAqIHNp
emVvZihjaGFyX3R5cGUpKSk7CiAgICAgIH0KCiAgICBzdGF0aWMKICAgIGNoYXJfdHlwZSoKICAg
IGFzc2lnbiggY2hhcl90eXBlKiBzLCBzaXplX3QgbiwgY2hhcl90eXBlIGMgKQogICAgICB7CiAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PCBjaGFyX3R5cGUqID4obWVtc2V0KHMsIHRvX2ludF90
eXBlKGMpLCBuKSk7CiAgICAgIH0KCiAgICBzdGF0aWMKICAgIGludAogICAgY29tcGFyZSggY29u
c3QgY2hhcl90eXBlKiBzMSwgY29uc3QgY2hhcl90eXBlKiBzMiwgc2l6ZV90IG4gKQogICAgICB7
CiAgICAgICAgcmV0dXJuIG1lbWNtcChzMSwgczIsIG4pOwogICAgICB9CgogICAgc3RhdGljCiAg
ICBzaXplX3QKICAgIGxlbmd0aCggY29uc3QgY2hhcl90eXBlKiBzICkKICAgICAgewogICAgICAg
IHJldHVybiBzdHJsZW4ocyk7CiAgICAgIH0KCiAgICBzdGF0aWMKICAgIGNvbnN0IGNoYXJfdHlw
ZSoKICAgIGZpbmQoIGNvbnN0IGNoYXJfdHlwZSogcywgc2l6ZV90IG4sIGNoYXJfdHlwZSBjICkK
ICAgICAgewogICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PCBjb25zdCBjaGFyX3R5cGUq
ID4obWVtY2hyKHMsIHRvX2ludF90eXBlKGMpLCBuKSk7CiAgICAgIH0KIyAzNzggIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNDaGFyVHJhaXRzLmgiCiAgfTsKCnRlbXBsYXRlIDxjbGFz
cyBJbnB1dEl0ZXJhdG9yPgpzdHJ1Y3QgbnNDaGFyU291cmNlVHJhaXRzCiAgewogICAgdHlwZWRl
ZiB0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yOjpkaWZmZXJlbmNlX3R5cGUgZGlmZmVyZW5jZV90eXBl
OwojIDM5NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc0NoYXJUcmFpdHMuaCIKICAg
IHN0YXRpYwogICAgUFJVaW50MzIKICAgIHJlYWRhYmxlX2Rpc3RhbmNlKCBjb25zdCBJbnB1dEl0
ZXJhdG9yJiBpdGVyICkKICAgICAgewogICAgICAgIHJldHVybiBpdGVyLnNpemVfZm9yd2FyZCgp
OwogICAgICB9CgogICAgc3RhdGljCiAgICBQUlVpbnQzMgogICAgcmVhZGFibGVfZGlzdGFuY2Uo
IGNvbnN0IElucHV0SXRlcmF0b3ImIGZpcnN0LCBjb25zdCBJbnB1dEl0ZXJhdG9yJiBsYXN0ICkK
ICAgICAgewogICAgICAgIHJldHVybiBQUlVpbnQzMihTYW1lRnJhZ21lbnQoZmlyc3QsIGxhc3Qp
ID8gbGFzdC5nZXQoKS1maXJzdC5nZXQoKSA6IGZpcnN0LnNpemVfZm9yd2FyZCgpKTsKICAgICAg
fQoKICAgIHN0YXRpYwogICAgY29uc3QgdHlwZW5hbWUgSW5wdXRJdGVyYXRvcjo6dmFsdWVfdHlw
ZSoKICAgIHJlYWQoIGNvbnN0IElucHV0SXRlcmF0b3ImIGl0ZXIgKQogICAgICB7CiAgICAgICAg
cmV0dXJuIGl0ZXIuZ2V0KCk7CiAgICAgIH0KCiAgICBzdGF0aWMKICAgIHZvaWQKICAgIGFkdmFu
Y2UoIElucHV0SXRlcmF0b3ImIHMsIGRpZmZlcmVuY2VfdHlwZSBuICkKICAgICAgewogICAgICAg
IHMuYWR2YW5jZShuKTsKICAgICAgfQogIH07CgoKCnRlbXBsYXRlIDxjbGFzcyBDaGFyVD4Kc3Ry
dWN0IG5zQ2hhclNvdXJjZVRyYWl0czxDaGFyVCo+CiAgewogICAgdHlwZWRlZiBwdHJkaWZmX3Qg
ZGlmZmVyZW5jZV90eXBlOwojIDQzOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc0No
YXJUcmFpdHMuaCIKICAgIHN0YXRpYwogICAgUFJVaW50MzIKICAgIHJlYWRhYmxlX2Rpc3RhbmNl
KCBDaGFyVCogcyApCiAgICAgIHsKICAgICAgICByZXR1cm4gUFJVaW50MzIobnNDaGFyVHJhaXRz
PENoYXJUPjo6bGVuZ3RoKHMpKTsKCiAgICAgIH0KCiAgICBzdGF0aWMKICAgIFBSVWludDMyCiAg
ICByZWFkYWJsZV9kaXN0YW5jZSggQ2hhclQqIGZpcnN0LCBDaGFyVCogbGFzdCApCiAgICAgIHsK
ICAgICAgICByZXR1cm4gUFJVaW50MzIobGFzdC1maXJzdCk7CiAgICAgIH0KCiAgICBzdGF0aWMK
ICAgIGNvbnN0IENoYXJUKgogICAgcmVhZCggQ2hhclQqIHMgKQogICAgICB7CiAgICAgICAgcmV0
dXJuIHM7CiAgICAgIH0KCiAgICBzdGF0aWMKICAgIHZvaWQKICAgIGFkdmFuY2UoIENoYXJUKiYg
cywgZGlmZmVyZW5jZV90eXBlIG4gKQogICAgICB7CiAgICAgICAgcyArPSBuOwogICAgICB9CiAg
fTsKIyA1NjMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNDaGFyVHJhaXRzLmgiCnRl
bXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvcj4Kc3RydWN0IG5zQ2hhclNpbmtUcmFpdHMKICB7
CiAgICBzdGF0aWMKICAgIFBSVWludDMyCiAgICB3cml0ZSggT3V0cHV0SXRlcmF0b3ImIGl0ZXIs
IGNvbnN0IHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yOjp2YWx1ZV90eXBlKiBzLCBQUlVpbnQzMiBu
ICkKICAgICAgewogICAgICAgIHJldHVybiBpdGVyLndyaXRlKHMsIG4pOwogICAgICB9CiAgfTsK
CgoKdGVtcGxhdGUgPGNsYXNzIENoYXJUPgpzdHJ1Y3QgbnNDaGFyU2lua1RyYWl0czxDaGFyVCo+
CiAgewogICAgc3RhdGljCiAgICBQUlVpbnQzMgogICAgd3JpdGUoIENoYXJUKiYgaXRlciwgY29u
c3QgQ2hhclQqIHMsIFBSVWludDMyIG4gKQogICAgICB7CiAgICAgICAgbnNDaGFyVHJhaXRzPENo
YXJUPjo6bW92ZShpdGVyLCBzLCBuKTsKICAgICAgICBpdGVyICs9IG47CiAgICAgICAgcmV0dXJu
IG47CiAgICAgIH0KICB9OwojIDM3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zQVN0
cmluZy5oIiAyCgoKCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZ0l0
ZXJhdG9yLmgiIDEKIyAyOCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZ0l0
ZXJhdG9yLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZ0ZyYWdt
ZW50LmgiIDEKIyA0MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZ0ZyYWdt
ZW50LmgiCmVudW0gbnNGcmFnbWVudFJlcXVlc3QgeyBrUHJldkZyYWdtZW50LCBrRmlyc3RGcmFn
bWVudCwga0xhc3RGcmFnbWVudCwga05leHRGcmFnbWVudCwga0ZyYWdtZW50QXQgfTsKIyA1NyAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZ0ZyYWdtZW50LmgiCnRlbXBsYXRl
IDxjbGFzcyBDaGFyVD4Kc3RydWN0IG5zUmVhZGFibGVGcmFnbWVudAogIHsKICAgIGNvbnN0IENo
YXJUKiBtU3RhcnQ7CiAgICBjb25zdCBDaGFyVCogbUVuZDsKICAgIGNvbnN0IHZvaWQqIG1GcmFn
bWVudElkZW50aWZpZXI7CgogICAgbnNSZWFkYWJsZUZyYWdtZW50KCkKICAgICAgICA6IG1TdGFy
dCgwKSwgbUVuZCgwKSwgbUZyYWdtZW50SWRlbnRpZmllcigwKQogICAgICB7CgogICAgICB9Cgog
ICAgY29uc3Qgdm9pZCoKICAgIEdldElEKCkgY29uc3QKICAgICAgewogICAgICAgIHJldHVybiBt
RnJhZ21lbnRJZGVudGlmaWVyOwogICAgICB9CgogICAgdW5zaWduZWQgbG9uZwogICAgR2V0SURB
c0ludCgpIGNvbnN0CiAgICAgIHsKICAgICAgICB0eXBlZGVmIGNoYXIqIGNoYXJfcHRyOwogICAg
ICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyB1bG9uZzsKICAgICAgICByZXR1cm4gdWxvbmcoY2hh
cl9wdHIobUZyYWdtZW50SWRlbnRpZmllciktY2hhcl9wdHIoMCkpOwogICAgICB9CgogICAgdm9p
ZAogICAgU2V0SUQoIGNvbnN0IHZvaWQqIGFJRCApCiAgICAgIHsKICAgICAgICBtRnJhZ21lbnRJ
ZGVudGlmaWVyID0gYUlEOwogICAgICB9CgogICAgdm9pZAogICAgU2V0SUQoIHVuc2lnbmVkIGxv
bmcgYUlEICkKICAgICAgewogICAgICAgIHR5cGVkZWYgY2hhciogY2hhcl9wdHI7CiAgICAgICAg
dHlwZWRlZiB2b2lkKiB2b2lkX3B0cjsKICAgICAgICBtRnJhZ21lbnRJZGVudGlmaWVyID0gdm9p
ZF9wdHIoY2hhcl9wdHIoMCkrYUlEKTsKICAgICAgfQogIH07CiMgMTEzICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvc3RyaW5nL25zU3RyaW5nRnJhZ21lbnQuaCIKdGVtcGxhdGUgPGNsYXNzIENoYXJU
PgpzdHJ1Y3QgbnNXcml0YWJsZUZyYWdtZW50CiAgewogICAgQ2hhclQqIG1TdGFydDsKICAgIENo
YXJUKiBtRW5kOwogICAgdm9pZCogbUZyYWdtZW50SWRlbnRpZmllcjsKCiAgICBuc1dyaXRhYmxl
RnJhZ21lbnQoKQogICAgICAgIDogbVN0YXJ0KDApLCBtRW5kKDApLCBtRnJhZ21lbnRJZGVudGlm
aWVyKDApCiAgICAgIHsKCiAgICAgIH0KICB9OwojIDI5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
c3RyaW5nL25zU3RyaW5nSXRlcmF0b3IuaCIgMgoKCgoKCgoKIyAxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvc3RyaW5nL25zU3RyaW5nVHJhaXRzLmgiIDEKIyA0NCAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL3N0cmluZy9uc1N0cmluZ1RyYWl0cy5oIgp0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQ+CnN0cnVj
dCBuc1N0cmluZ1RyYWl0cwogIHsKICAgIHR5cGVkZWYgbnNBU3RyaW5nIGFic3RyYWN0X3N0cmlu
Z190eXBlOwogICAgdHlwZWRlZiBuc0FGbGF0U3RyaW5nIGFic3RyYWN0X2ZsYXRfdHlwZTsKICAg
IHR5cGVkZWYgY29uc3QgbnNEZXBlbmRlbnRTdHJpbmcgbGl0ZXJhbF9zdHJpbmdfdHlwZTsKICB9
OwojIDY0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zU3RyaW5nVHJhaXRzLmgiCnRl
bXBsYXRlIDw+CnN0cnVjdCBuc1N0cmluZ1RyYWl0czxjaGFyPgogIHsKICAgIHR5cGVkZWYgbnNB
Q1N0cmluZyBhYnN0cmFjdF9zdHJpbmdfdHlwZTsKICAgIHR5cGVkZWYgbnNBRmxhdENTdHJpbmcg
YWJzdHJhY3RfZmxhdF90eXBlOwogICAgdHlwZWRlZiBjb25zdCBuc0RlcGVuZGVudENTdHJpbmcg
bGl0ZXJhbF9zdHJpbmdfdHlwZTsKICB9OwojIDM3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3Ry
aW5nL25zU3RyaW5nSXRlcmF0b3IuaCIgMgoKCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9z
dHJpbmcvbnNBbGdvcml0aG0uaCIgMQojIDUyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5n
L25zQWxnb3JpdGhtLmgiCnRlbXBsYXRlIDxjbGFzcyBUPgppbmxpbmUKY29uc3QgVCYKTlNfTUlO
KCBjb25zdCBUJiBhLCBjb25zdCBUJiBiICkKICB7CiAgICByZXR1cm4gYiA8IGEgPyBiIDogYTsK
ICB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgVD4KaW5saW5lCmNvbnN0IFQmCk5TX01BWCggY29uc3QgVCYg
YSwgY29uc3QgVCYgYiApCiAgewogICAgcmV0dXJuIGEgPiBiID8gYSA6IGI7CiAgfQoKdGVtcGxh
dGUgPGNsYXNzIElucHV0SXRlcmF0b3IsIGNsYXNzIFQ+CmlubGluZQpQUlVpbnQzMgpOU19DT1VO
VCggSW5wdXRJdGVyYXRvciYgZmlyc3QsIGNvbnN0IElucHV0SXRlcmF0b3ImIGxhc3QsIGNvbnN0
IFQmIHZhbHVlICkKICB7CiAgICBQUlVpbnQzMiByZXN1bHQgPSAwOwogICAgZm9yICggOyBmaXJz
dCAhPSBsYXN0OyArK2ZpcnN0ICkKICAgICAgaWYgKCAqZmlyc3QgPT0gdmFsdWUgKQogICAgICAg
ICsrcmVzdWx0OwogICAgcmV0dXJuIHJlc3VsdDsKICB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJ
dGVyYXRvciwgY2xhc3MgT3V0cHV0SXRlcmF0b3I+CmlubGluZQpPdXRwdXRJdGVyYXRvciYKY29w
eV9zdHJpbmcoIElucHV0SXRlcmF0b3ImIGZpcnN0LCBjb25zdCBJbnB1dEl0ZXJhdG9yJiBsYXN0
LCBPdXRwdXRJdGVyYXRvciYgcmVzdWx0ICkKICB7CiAgICB0eXBlZGVmIG5zQ2hhclNvdXJjZVRy
YWl0czxJbnB1dEl0ZXJhdG9yPiBzb3VyY2VfdHJhaXRzOwogICAgdHlwZWRlZiBuc0NoYXJTaW5r
VHJhaXRzPE91dHB1dEl0ZXJhdG9yPiBzaW5rX3RyYWl0czsKCiAgICB3aGlsZSAoIGZpcnN0ICE9
IGxhc3QgKQogICAgICB7CiAgICAgICAgUFJJbnQzMiBjb3VudF9jb3BpZWQgPSBQUkludDMyKHNp
bmtfdHJhaXRzOjp3cml0ZShyZXN1bHQsIHNvdXJjZV90cmFpdHM6OnJlYWQoZmlyc3QpLCBzb3Vy
Y2VfdHJhaXRzOjpyZWFkYWJsZV9kaXN0YW5jZShmaXJzdCwgbGFzdCkpKTsKICAgICAgICA7CiAg
ICAgICAgc291cmNlX3RyYWl0czo6YWR2YW5jZShmaXJzdCwgY291bnRfY29waWVkKTsKICAgICAg
fQoKICAgIHJldHVybiByZXN1bHQ7CiAgfQoKdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3Is
IGNsYXNzIE91dHB1dEl0ZXJhdG9yPgpPdXRwdXRJdGVyYXRvciYKY29weV9zdHJpbmdfYmFja3dh
cmQoIGNvbnN0IElucHV0SXRlcmF0b3ImIGZpcnN0LCBJbnB1dEl0ZXJhdG9yJiBsYXN0LCBPdXRw
dXRJdGVyYXRvciYgcmVzdWx0ICkKICB7CiAgICB3aGlsZSAoIGZpcnN0ICE9IGxhc3QgKQogICAg
ICB7CiAgICAgICAgbGFzdC5ub3JtYWxpemVfYmFja3dhcmQoKTsKICAgICAgICByZXN1bHQubm9y
bWFsaXplX2JhY2t3YXJkKCk7CiAgICAgICAgUFJVaW50MzIgbGVuZ3RoVG9Db3B5ID0gUFJVaW50
MzIoIE5TX01JTihsYXN0LnNpemVfYmFja3dhcmQoKSwgcmVzdWx0LnNpemVfYmFja3dhcmQoKSkg
KTsKICAgICAgICBpZiAoIGZpcnN0LmZyYWdtZW50KCkubVN0YXJ0ID09IGxhc3QuZnJhZ21lbnQo
KS5tU3RhcnQgKQogICAgICAgICAgbGVuZ3RoVG9Db3B5ID0gTlNfTUlOKGxlbmd0aFRvQ29weSwg
UFJVaW50MzIobGFzdC5nZXQoKSAtIGZpcnN0LmdldCgpKSk7CgogICAgICAgIDsKCgoKCgogICAg
ICAgIG5zQ2hhclRyYWl0czx0eXBlbmFtZSBPdXRwdXRJdGVyYXRvcjo6dmFsdWVfdHlwZT46Om1v
dmUocmVzdWx0LmdldCgpLWxlbmd0aFRvQ29weSwgbGFzdC5nZXQoKS1sZW5ndGhUb0NvcHksIGxl
bmd0aFRvQ29weSk7CgoKICAgICAgICBsYXN0LmFkdmFuY2UoIC1QUkludDMyKGxlbmd0aFRvQ29w
eSkgKTsKICAgICAgICByZXN1bHQuYWR2YW5jZSggLVBSSW50MzIobGVuZ3RoVG9Db3B5KSApOwog
ICAgICB9CgogICAgcmV0dXJuIHJlc3VsdDsKICB9CiMgNDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9zdHJpbmcvbnNTdHJpbmdJdGVyYXRvci5oIiAyCiMgNTYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9zdHJpbmcvbnNTdHJpbmdJdGVyYXRvci5oIgp0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQ+CmNsYXNz
IG5zUmVhZGluZ0l0ZXJhdG9yCgogIHsKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBwdHJkaWZm
X3QgZGlmZmVyZW5jZV90eXBlOwogICAgICB0eXBlZGVmIENoYXJUIHZhbHVlX3R5cGU7CiAgICAg
IHR5cGVkZWYgY29uc3QgQ2hhclQqIHBvaW50ZXI7CiAgICAgIHR5cGVkZWYgY29uc3QgQ2hhclQm
IHJlZmVyZW5jZTsKCgogICAgICB0eXBlZGVmIG5zUmVhZGFibGVGcmFnbWVudDxDaGFyVD4gY29u
c3RfZnJhZ21lbnRfdHlwZTsKICAgICAgdHlwZWRlZiBuc1dyaXRhYmxlRnJhZ21lbnQ8Q2hhclQ+
IGZyYWdtZW50X3R5cGU7CgogICAgcHJpdmF0ZToKICAgICAgZnJpZW5kIGNsYXNzIG5zQVN0cmlu
ZzsKICAgICAgZnJpZW5kIGNsYXNzIG5zQUNTdHJpbmc7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
bnNTdHJpbmdUcmFpdHM8Q2hhclQ+OjphYnN0cmFjdF9zdHJpbmdfdHlwZSBhYnN0cmFjdF9zdHJp
bmdfdHlwZTsKCiAgICAgIGNvbnN0X2ZyYWdtZW50X3R5cGUgbUZyYWdtZW50OwogICAgICBjb25z
dCBDaGFyVCogbVBvc2l0aW9uOwogICAgICBjb25zdCBhYnN0cmFjdF9zdHJpbmdfdHlwZSogbU93
bmluZ1N0cmluZzsKCiAgICBwdWJsaWM6CiAgICAgIG5zUmVhZGluZ0l0ZXJhdG9yKCkgeyB9CgoK
CiAgICAgIGlubGluZSB2b2lkIG5vcm1hbGl6ZV9mb3J3YXJkKCk7CiAgICAgIGlubGluZSB2b2lk
IG5vcm1hbGl6ZV9iYWNrd2FyZCgpOwoKICAgICAgcG9pbnRlcgogICAgICBnZXQoKSBjb25zdAog
ICAgICAgIHsKICAgICAgICAgIHJldHVybiBtUG9zaXRpb247CiAgICAgICAgfQoKICAgICAgQ2hh
clQKICAgICAgb3BlcmF0b3IqKCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICByZXR1cm4gKmdl
dCgpOwogICAgICAgIH0KIyAxMDkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHJp
bmdJdGVyYXRvci5oIgogICAgICBuc1JlYWRpbmdJdGVyYXRvcjxDaGFyVD4mCiAgICAgIG9wZXJh
dG9yKysoKQogICAgICAgIHsKICAgICAgICAgICsrbVBvc2l0aW9uOwogICAgICAgICAgbm9ybWFs
aXplX2ZvcndhcmQoKTsKICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAgICB9CgogICAgICBu
c1JlYWRpbmdJdGVyYXRvcjxDaGFyVD4KICAgICAgb3BlcmF0b3IrKyggaW50ICkKICAgICAgICB7
CiAgICAgICAgICBuc1JlYWRpbmdJdGVyYXRvcjxDaGFyVD4gcmVzdWx0KCp0aGlzKTsKICAgICAg
ICAgICsrbVBvc2l0aW9uOwogICAgICAgICAgbm9ybWFsaXplX2ZvcndhcmQoKTsKICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgfQoKICAgICAgbnNSZWFkaW5nSXRlcmF0b3I8Q2hhclQ+
JgogICAgICBvcGVyYXRvci0tKCkKICAgICAgICB7CiAgICAgICAgICBub3JtYWxpemVfYmFja3dh
cmQoKTsKICAgICAgICAgIC0tbVBvc2l0aW9uOwogICAgICAgICAgcmV0dXJuICp0aGlzOwogICAg
ICAgIH0KCiAgICAgIG5zUmVhZGluZ0l0ZXJhdG9yPENoYXJUPgogICAgICBvcGVyYXRvci0tKCBp
bnQgKQogICAgICAgIHsKICAgICAgICAgIG5zUmVhZGluZ0l0ZXJhdG9yPENoYXJUPiByZXN1bHQo
KnRoaXMpOwogICAgICAgICAgbm9ybWFsaXplX2JhY2t3YXJkKCk7CiAgICAgICAgICAtLW1Qb3Np
dGlvbjsKICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgfQoKICAgICAgY29uc3QgY29u
c3RfZnJhZ21lbnRfdHlwZSYKICAgICAgZnJhZ21lbnQoKSBjb25zdAogICAgICAgIHsKICAgICAg
ICAgIHJldHVybiBtRnJhZ21lbnQ7CiAgICAgICAgfQoKICAgICAgY29uc3QgYWJzdHJhY3Rfc3Ry
aW5nX3R5cGUmCiAgICAgIHN0cmluZygpIGNvbnN0CiAgICAgICAgewogICAgICAgICAgOwogICAg
ICAgICAgcmV0dXJuICptT3duaW5nU3RyaW5nOwogICAgICAgIH0KCiAgICAgIGRpZmZlcmVuY2Vf
dHlwZQogICAgICBzaXplX2ZvcndhcmQoKSBjb25zdAogICAgICAgIHsKICAgICAgICAgIHJldHVy
biBtRnJhZ21lbnQubUVuZCAtIG1Qb3NpdGlvbjsKICAgICAgICB9CgogICAgICBkaWZmZXJlbmNl
X3R5cGUKICAgICAgc2l6ZV9iYWNrd2FyZCgpIGNvbnN0CiAgICAgICAgewogICAgICAgICAgcmV0
dXJuIG1Qb3NpdGlvbiAtIG1GcmFnbWVudC5tU3RhcnQ7CiAgICAgICAgfQoKICAgICAgbnNSZWFk
aW5nSXRlcmF0b3I8Q2hhclQ+JgogICAgICBhZHZhbmNlKCBkaWZmZXJlbmNlX3R5cGUgbiApCiAg
ICAgICAgewogICAgICAgICAgd2hpbGUgKCBuID4gMCApCiAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICBkaWZmZXJlbmNlX3R5cGUgb25lX2hvcCA9IE5TX01JTihuLCBzaXplX2ZvcndhcmQoKSk7
CgogICAgICAgICAgICAgIDsKCgogICAgICAgICAgICAgIG1Qb3NpdGlvbiArPSBvbmVfaG9wOwog
ICAgICAgICAgICAgIG5vcm1hbGl6ZV9mb3J3YXJkKCk7CiAgICAgICAgICAgICAgbiAtPSBvbmVf
aG9wOwogICAgICAgICAgICB9CgogICAgICAgICAgd2hpbGUgKCBuIDwgMCApCiAgICAgICAgICAg
IHsKICAgICAgICAgICAgICBub3JtYWxpemVfYmFja3dhcmQoKTsKICAgICAgICAgICAgICBkaWZm
ZXJlbmNlX3R5cGUgb25lX2hvcCA9IE5TX01BWChuLCAtc2l6ZV9iYWNrd2FyZCgpKTsKCiAgICAg
ICAgICAgICAgOwoKCiAgICAgICAgICAgICAgbVBvc2l0aW9uICs9IG9uZV9ob3A7CiAgICAgICAg
ICAgICAgbiAtPSBvbmVfaG9wOwogICAgICAgICAgICB9CgogICAgICAgICAgcmV0dXJuICp0aGlz
OwogICAgICAgIH0KICB9OwojIDIwNiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0
cmluZ0l0ZXJhdG9yLmgiCnRlbXBsYXRlIDxjbGFzcyBDaGFyVD4KY2xhc3MgbnNXcml0aW5nSXRl
cmF0b3IKCiAgewogICAgcHVibGljOgogICAgICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNl
X3R5cGU7CiAgICAgIHR5cGVkZWYgQ2hhclQgdmFsdWVfdHlwZTsKICAgICAgdHlwZWRlZiBDaGFy
VCogcG9pbnRlcjsKICAgICAgdHlwZWRlZiBDaGFyVCYgcmVmZXJlbmNlOwoKCiAgICAgIHR5cGVk
ZWYgbnNSZWFkYWJsZUZyYWdtZW50PENoYXJUPiBjb25zdF9mcmFnbWVudF90eXBlOwogICAgICB0
eXBlZGVmIG5zV3JpdGFibGVGcmFnbWVudDxDaGFyVD4gZnJhZ21lbnRfdHlwZTsKCiAgICBwcml2
YXRlOgogICAgICBmcmllbmQgY2xhc3MgbnNBU3RyaW5nOwogICAgICBmcmllbmQgY2xhc3MgbnNB
Q1N0cmluZzsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuc1N0cmluZ1RyYWl0czxDaGFyVD46OmFi
c3RyYWN0X3N0cmluZ190eXBlIGFic3RyYWN0X3N0cmluZ190eXBlOwoKICAgICAgZnJhZ21lbnRf
dHlwZSBtRnJhZ21lbnQ7CiAgICAgIENoYXJUKiBtUG9zaXRpb247CiAgICAgIGFic3RyYWN0X3N0
cmluZ190eXBlKiBtT3duaW5nU3RyaW5nOwoKICAgIHB1YmxpYzoKICAgICAgbnNXcml0aW5nSXRl
cmF0b3IoKSB7IH0KCgoKICAgICAgaW5saW5lIHZvaWQgbm9ybWFsaXplX2ZvcndhcmQoKTsKICAg
ICAgaW5saW5lIHZvaWQgbm9ybWFsaXplX2JhY2t3YXJkKCk7CgogICAgICBwb2ludGVyCiAgICAg
IGdldCgpIGNvbnN0CiAgICAgICAgewogICAgICAgICAgcmV0dXJuIG1Qb3NpdGlvbjsKICAgICAg
ICB9CgogICAgICByZWZlcmVuY2UKICAgICAgb3BlcmF0b3IqKCkgY29uc3QKICAgICAgICB7CiAg
ICAgICAgICByZXR1cm4gKmdldCgpOwogICAgICAgIH0KIyAyNTkgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9zdHJpbmcvbnNTdHJpbmdJdGVyYXRvci5oIgogICAgICBuc1dyaXRpbmdJdGVyYXRvcjxD
aGFyVD4mCiAgICAgIG9wZXJhdG9yKysoKQogICAgICAgIHsKICAgICAgICAgICsrbVBvc2l0aW9u
OwogICAgICAgICAgbm9ybWFsaXplX2ZvcndhcmQoKTsKICAgICAgICAgIHJldHVybiAqdGhpczsK
ICAgICAgICB9CgogICAgICBuc1dyaXRpbmdJdGVyYXRvcjxDaGFyVD4KICAgICAgb3BlcmF0b3Ir
KyggaW50ICkKICAgICAgICB7CiAgICAgICAgICBuc1dyaXRpbmdJdGVyYXRvcjxDaGFyVD4gcmVz
dWx0KCp0aGlzKTsKICAgICAgICAgICsrbVBvc2l0aW9uOwogICAgICAgICAgbm9ybWFsaXplX2Zv
cndhcmQoKTsKICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgfQoKICAgICAgbnNXcml0
aW5nSXRlcmF0b3I8Q2hhclQ+JgogICAgICBvcGVyYXRvci0tKCkKICAgICAgICB7CiAgICAgICAg
ICBub3JtYWxpemVfYmFja3dhcmQoKTsKICAgICAgICAgIC0tbVBvc2l0aW9uOwogICAgICAgICAg
cmV0dXJuICp0aGlzOwogICAgICAgIH0KCiAgICAgIG5zV3JpdGluZ0l0ZXJhdG9yPENoYXJUPgog
ICAgICBvcGVyYXRvci0tKCBpbnQgKQogICAgICAgIHsKICAgICAgICAgIG5zV3JpdGluZ0l0ZXJh
dG9yPENoYXJUPiByZXN1bHQoKnRoaXMpOwogICAgICAgICAgbm9ybWFsaXplX2JhY2t3YXJkKCk7
CiAgICAgICAgICAtLW1Qb3NpdGlvbjsKICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAg
fQoKICAgICAgY29uc3QgZnJhZ21lbnRfdHlwZSYKICAgICAgZnJhZ21lbnQoKSBjb25zdAogICAg
ICAgIHsKICAgICAgICAgIHJldHVybiBtRnJhZ21lbnQ7CiAgICAgICAgfQoKICAgICAgZnJhZ21l
bnRfdHlwZSYKICAgICAgZnJhZ21lbnQoKQogICAgICAgIHsKICAgICAgICAgIHJldHVybiBtRnJh
Z21lbnQ7CiAgICAgICAgfQoKICAgICAgY29uc3QgYWJzdHJhY3Rfc3RyaW5nX3R5cGUmCiAgICAg
IHN0cmluZygpIGNvbnN0CiAgICAgICAgewogICAgICAgICAgOwogICAgICAgICAgcmV0dXJuICpt
T3duaW5nU3RyaW5nOwogICAgICAgIH0KCiAgICAgIGFic3RyYWN0X3N0cmluZ190eXBlJgogICAg
ICBzdHJpbmcoKQogICAgICAgIHsKICAgICAgICAgIDsKICAgICAgICAgIHJldHVybiAqbU93bmlu
Z1N0cmluZzsKICAgICAgICB9CgogICAgICBkaWZmZXJlbmNlX3R5cGUKICAgICAgc2l6ZV9mb3J3
YXJkKCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICByZXR1cm4gbUZyYWdtZW50Lm1FbmQgLSBt
UG9zaXRpb247CiAgICAgICAgfQoKICAgICAgZGlmZmVyZW5jZV90eXBlCiAgICAgIHNpemVfYmFj
a3dhcmQoKSBjb25zdAogICAgICAgIHsKICAgICAgICAgIHJldHVybiBtUG9zaXRpb24gLSBtRnJh
Z21lbnQubVN0YXJ0OwogICAgICAgIH0KCiAgICAgIG5zV3JpdGluZ0l0ZXJhdG9yPENoYXJUPiYK
ICAgICAgYWR2YW5jZSggZGlmZmVyZW5jZV90eXBlIG4gKQogICAgICAgIHsKICAgICAgICAgIHdo
aWxlICggbiA+IDAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBl
IG9uZV9ob3AgPSBOU19NSU4obiwgc2l6ZV9mb3J3YXJkKCkpOwoKICAgICAgICAgICAgICA7CgoK
ICAgICAgICAgICAgICBtUG9zaXRpb24gKz0gb25lX2hvcDsKICAgICAgICAgICAgICBub3JtYWxp
emVfZm9yd2FyZCgpOwogICAgICAgICAgICAgIG4gLT0gb25lX2hvcDsKICAgICAgICAgICAgfQoK
ICAgICAgICAgIHdoaWxlICggbiA8IDAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgbm9y
bWFsaXplX2JhY2t3YXJkKCk7CiAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlIG9uZV9ob3Ag
PSBOU19NQVgobiwgLXNpemVfYmFja3dhcmQoKSk7CgogICAgICAgICAgICAgIDsKCgogICAgICAg
ICAgICAgIG1Qb3NpdGlvbiArPSBvbmVfaG9wOwogICAgICAgICAgICAgIG4gLT0gb25lX2hvcDsK
ICAgICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAgICB9CgogICAgICBQ
UlVpbnQzMgogICAgICB3cml0ZSggY29uc3QgdmFsdWVfdHlwZSogcywgUFJVaW50MzIgbiApCiAg
ICAgICAgewogICAgICAgICAgOwoKICAgICAgICAgIG4gPSBOU19NSU4obiwgUFJVaW50MzIoc2l6
ZV9mb3J3YXJkKCkpKTsKICAgICAgICAgIG5zQ2hhclRyYWl0czx2YWx1ZV90eXBlPjo6bW92ZSht
UG9zaXRpb24sIHMsIG4pOwogICAgICAgICAgYWR2YW5jZSggZGlmZmVyZW5jZV90eXBlKG4pICk7
CiAgICAgICAgICByZXR1cm4gbjsKICAgICAgICB9CiAgfTsKCnRlbXBsYXRlIDxjbGFzcyBDaGFy
VD4KaW5saW5lCnZvaWQKbnNSZWFkaW5nSXRlcmF0b3I8Q2hhclQ+Ojpub3JtYWxpemVfZm9yd2Fy
ZCgpCiAgewogICAgd2hpbGUgKCBtUG9zaXRpb24gPT0gbUZyYWdtZW50Lm1FbmQKICAgICAgICAg
JiYgbU93bmluZ1N0cmluZy0+R2V0UmVhZGFibGVGcmFnbWVudChtRnJhZ21lbnQsIGtOZXh0RnJh
Z21lbnQpICkKICAgICAgICBtUG9zaXRpb24gPSBtRnJhZ21lbnQubVN0YXJ0OwogIH0KCnRlbXBs
YXRlIDxjbGFzcyBDaGFyVD4KaW5saW5lCnZvaWQKbnNSZWFkaW5nSXRlcmF0b3I8Q2hhclQ+Ojpu
b3JtYWxpemVfYmFja3dhcmQoKQogIHsKICAgIHdoaWxlICggbVBvc2l0aW9uID09IG1GcmFnbWVu
dC5tU3RhcnQKICAgICAgICAgJiYgbU93bmluZ1N0cmluZy0+R2V0UmVhZGFibGVGcmFnbWVudCht
RnJhZ21lbnQsIGtQcmV2RnJhZ21lbnQpICkKICAgICAgICBtUG9zaXRpb24gPSBtRnJhZ21lbnQu
bUVuZDsKICB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQ+CmlubGluZQpQUkJvb2wKb3BlcmF0b3I9
PSggY29uc3QgbnNSZWFkaW5nSXRlcmF0b3I8Q2hhclQ+JiBsaHMsIGNvbnN0IG5zUmVhZGluZ0l0
ZXJhdG9yPENoYXJUPiYgcmhzICkKICB7CiAgICByZXR1cm4gbGhzLmdldCgpID09IHJocy5nZXQo
KTsKICB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQ+CmlubGluZQpQUkJvb2wKb3BlcmF0b3IhPSgg
Y29uc3QgbnNSZWFkaW5nSXRlcmF0b3I8Q2hhclQ+JiBsaHMsIGNvbnN0IG5zUmVhZGluZ0l0ZXJh
dG9yPENoYXJUPiYgcmhzICkKICB7CiAgICByZXR1cm4gbGhzLmdldCgpICE9IHJocy5nZXQoKTsK
ICB9CgoKCgoKCnRlbXBsYXRlIDxjbGFzcyBDaGFyVD4KaW5saW5lCnZvaWQKbnNXcml0aW5nSXRl
cmF0b3I8Q2hhclQ+Ojpub3JtYWxpemVfZm9yd2FyZCgpCiAgewogICAgd2hpbGUgKCBtUG9zaXRp
b24gPT0gbUZyYWdtZW50Lm1FbmQKICAgICAgICAgJiYgbU93bmluZ1N0cmluZy0+R2V0V3JpdGFi
bGVGcmFnbWVudChtRnJhZ21lbnQsIGtOZXh0RnJhZ21lbnQpICkKICAgICAgbVBvc2l0aW9uID0g
bUZyYWdtZW50Lm1TdGFydDsKICB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQ+CmlubGluZQp2b2lk
Cm5zV3JpdGluZ0l0ZXJhdG9yPENoYXJUPjo6bm9ybWFsaXplX2JhY2t3YXJkKCkKICB7CiAgICB3
aGlsZSAoIG1Qb3NpdGlvbiA9PSBtRnJhZ21lbnQubVN0YXJ0CiAgICAgICAgICYmIG1Pd25pbmdT
dHJpbmctPkdldFdyaXRhYmxlRnJhZ21lbnQobUZyYWdtZW50LCBrUHJldkZyYWdtZW50KSApCiAg
ICAgIG1Qb3NpdGlvbiA9IG1GcmFnbWVudC5tRW5kOwogIH0KCnRlbXBsYXRlIDxjbGFzcyBDaGFy
VD4KaW5saW5lClBSQm9vbApvcGVyYXRvcj09KCBjb25zdCBuc1dyaXRpbmdJdGVyYXRvcjxDaGFy
VD4mIGxocywgY29uc3QgbnNXcml0aW5nSXRlcmF0b3I8Q2hhclQ+JiByaHMgKQogIHsKICAgIHJl
dHVybiBsaHMuZ2V0KCkgPT0gcmhzLmdldCgpOwogIH0KCnRlbXBsYXRlIDxjbGFzcyBDaGFyVD4K
aW5saW5lClBSQm9vbApvcGVyYXRvciE9KCBjb25zdCBuc1dyaXRpbmdJdGVyYXRvcjxDaGFyVD4m
IGxocywgY29uc3QgbnNXcml0aW5nSXRlcmF0b3I8Q2hhclQ+JiByaHMgKQogIHsKICAgIHJldHVy
biBsaHMuZ2V0KCkgIT0gcmhzLmdldCgpOwogIH0KIyA0MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3N0cmluZy9uc0FTdHJpbmcuaCIgMgoKCgoKCgpjbGFzcyBuc1N0cmluZ0NvbXBhcmF0b3IKICB7
CiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgUFJVbmljaGFyIGNoYXJfdHlwZTsKCiAgICAgIHZp
cnR1YWwgaW50IG9wZXJhdG9yKCkoIGNvbnN0IGNoYXJfdHlwZSosIGNvbnN0IGNoYXJfdHlwZSos
IFBSVWludDMyIGFMZW5ndGggKSBjb25zdCA9IDA7CiAgICAgIHZpcnR1YWwgaW50IG9wZXJhdG9y
KCkoIGNoYXJfdHlwZSwgY2hhcl90eXBlICkgY29uc3QgPSAwOwogIH07CgpjbGFzcyBuc0RlZmF1
bHRTdHJpbmdDb21wYXJhdG9yCiAgICA6IHB1YmxpYyBuc1N0cmluZ0NvbXBhcmF0b3IKICB7CiAg
ICBwdWJsaWM6CiAgICAgIHZpcnR1YWwgaW50IG9wZXJhdG9yKCkoIGNvbnN0IGNoYXJfdHlwZSos
IGNvbnN0IGNoYXJfdHlwZSosIFBSVWludDMyIGFMZW5ndGggKSBjb25zdDsKICAgICAgdmlydHVh
bCBpbnQgb3BlcmF0b3IoKSAoIGNoYXJfdHlwZSwgY2hhcl90eXBlICkgY29uc3Q7CiAgfTsKCgoK
CgoKY2xhc3MgbnNDU3RyaW5nQ29tcGFyYXRvcgogIHsKICAgIHB1YmxpYzoKICAgICAgdHlwZWRl
ZiBjaGFyIGNoYXJfdHlwZTsKCiAgICAgIHZpcnR1YWwgaW50IG9wZXJhdG9yKCkoIGNvbnN0IGNo
YXJfdHlwZSosIGNvbnN0IGNoYXJfdHlwZSosIFBSVWludDMyIGFMZW5ndGggKSBjb25zdCA9IDA7
CiAgICAgIHZpcnR1YWwgaW50IG9wZXJhdG9yKCkgKCBjaGFyX3R5cGUsIGNoYXJfdHlwZSApIGNv
bnN0ID0gMDsKICB9OwoKY2xhc3MgbnNEZWZhdWx0Q1N0cmluZ0NvbXBhcmF0b3IKICAgIDogcHVi
bGljIG5zQ1N0cmluZ0NvbXBhcmF0b3IKICB7CiAgICBwdWJsaWM6CiAgICAgIHZpcnR1YWwgaW50
IG9wZXJhdG9yKCkoIGNvbnN0IGNoYXJfdHlwZSosIGNvbnN0IGNoYXJfdHlwZSosIFBSVWludDMy
IGFMZW5ndGggKSBjb25zdDsKICAgICAgdmlydHVhbCBpbnQgb3BlcmF0b3IoKSggY2hhcl90eXBl
LCBjaGFyX3R5cGUgKSBjb25zdDsKICB9OwojIDk5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3Ry
aW5nL25zQVN0cmluZy5oIgpjbGFzcyBuc0FTdHJpbmcKICB7CiAgICBwdWJsaWM6CiAgICAgIHR5
cGVkZWYgUFJVbmljaGFyIGNoYXJfdHlwZTsKICAgICAgdHlwZWRlZiBjaGFyIGluY29tcGF0aWJs
ZV9jaGFyX3R5cGU7CgogICAgICB0eXBlZGVmIG5zQnVmZmVySGFuZGxlPGNoYXJfdHlwZT4gYnVm
ZmVyX2hhbmRsZV90eXBlOwogICAgICB0eXBlZGVmIG5zQ29uc3RCdWZmZXJIYW5kbGU8Y2hhcl90
eXBlPiBjb25zdF9idWZmZXJfaGFuZGxlX3R5cGU7CiAgICAgIHR5cGVkZWYgbnNTaGFyZWRCdWZm
ZXJIYW5kbGU8Y2hhcl90eXBlPiBzaGFyZWRfYnVmZmVyX2hhbmRsZV90eXBlOwoKICAgICAgdHlw
ZWRlZiBuc1JlYWRhYmxlRnJhZ21lbnQ8Y2hhcl90eXBlPiBjb25zdF9mcmFnbWVudF90eXBlOwog
ICAgICB0eXBlZGVmIG5zV3JpdGFibGVGcmFnbWVudDxjaGFyX3R5cGU+IGZyYWdtZW50X3R5cGU7
CgogICAgICB0eXBlZGVmIG5zQVN0cmluZyBzZWxmX3R5cGU7CiAgICAgIHR5cGVkZWYgbnNBU3Ry
aW5nIGFic3RyYWN0X3N0cmluZ190eXBlOwoKICAgICAgdHlwZWRlZiBuc1JlYWRpbmdJdGVyYXRv
cjxjaGFyX3R5cGU+IGNvbnN0X2l0ZXJhdG9yOwogICAgICB0eXBlZGVmIG5zV3JpdGluZ0l0ZXJh
dG9yPGNoYXJfdHlwZT4gaXRlcmF0b3I7CgogICAgICB0eXBlZGVmIFBSVWludDMyIHNpemVfdHlw
ZTsKICAgICAgdHlwZWRlZiBQUlVpbnQzMiBpbmRleF90eXBlOwoKCiAgICBwdWJsaWM6CgoKICAg
ICAgdmlydHVhbCB+bnNBU3RyaW5nKCkgeyB9CgogICAgICBlbnVtIHsKICAgICAgICBrSGFzU3Rh
Y2tCdWZmZXIgPSAweDAwMDAwMDAxCgoKCgogICAgICB9OwogICAgICB2aXJ0dWFsIFBSVWludDMy
IEdldEltcGxlbWVudGF0aW9uRmxhZ3MoKSBjb25zdDsKCiAgICAgIHZpcnR1YWwgY29uc3QgYnVm
ZmVyX2hhbmRsZV90eXBlKiBHZXRGbGF0QnVmZmVySGFuZGxlKCkgY29uc3Q7CiAgICAgIHZpcnR1
YWwgY29uc3QgYnVmZmVyX2hhbmRsZV90eXBlKiBHZXRCdWZmZXJIYW5kbGUoKSBjb25zdDsKICAg
ICAgdmlydHVhbCBjb25zdCBzaGFyZWRfYnVmZmVyX2hhbmRsZV90eXBlKiBHZXRTaGFyZWRCdWZm
ZXJIYW5kbGUoKSBjb25zdDsKIyAxNDggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNB
U3RyaW5nLmgiCiAgICAgIGlubGluZSBjb25zdF9pdGVyYXRvciYgQmVnaW5SZWFkaW5nKCBjb25z
dF9pdGVyYXRvciYgKSBjb25zdDsKICAgICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yJiBFbmRSZWFk
aW5nKCBjb25zdF9pdGVyYXRvciYgKSBjb25zdDsKCiAgICAgIGlubGluZSBpdGVyYXRvciYgQmVn
aW5Xcml0aW5nKCBpdGVyYXRvciYgKTsKICAgICAgaW5saW5lIGl0ZXJhdG9yJiBFbmRXcml0aW5n
KCBpdGVyYXRvciYgKTsKCiAgICAgIHZpcnR1YWwgc2l6ZV90eXBlIExlbmd0aCgpIGNvbnN0ID0g
MDsKICAgICAgUFJCb29sIElzRW1wdHkoKSBjb25zdCB7IHJldHVybiBMZW5ndGgoKSA9PSAwOyB9
CgogICAgICBpbmxpbmUgUFJCb29sIEVxdWFscyggY29uc3QgYWJzdHJhY3Rfc3RyaW5nX3R5cGUm
LCBjb25zdCBuc1N0cmluZ0NvbXBhcmF0b3ImID0gbnNEZWZhdWx0U3RyaW5nQ29tcGFyYXRvcigp
ICkgY29uc3Q7CiAgICAgIFBSQm9vbCBFcXVhbHMoIGNvbnN0IGNoYXJfdHlwZSosIGNvbnN0IG5z
U3RyaW5nQ29tcGFyYXRvciYgPSBuc0RlZmF1bHRTdHJpbmdDb21wYXJhdG9yKCkgKSBjb25zdDsK
CiAgICAgIHZpcnR1YWwgUFJCb29sIElzVm9pZCgpIGNvbnN0OwogICAgICB2aXJ0dWFsIHZvaWQg
U2V0SXNWb2lkKCBQUkJvb2wgKTsKIyAxNzggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcv
bnNBU3RyaW5nLmgiCiAgICAgIGNoYXJfdHlwZSBGaXJzdCgpIGNvbnN0OwogICAgICBjaGFyX3R5
cGUgTGFzdCgpIGNvbnN0OwoKICAgICAgc2l6ZV90eXBlIENvdW50Q2hhciggY2hhcl90eXBlICkg
Y29uc3Q7CgoKCgogICAgICBQUkludDMyIEZpbmRDaGFyKCBjaGFyX3R5cGUsIGluZGV4X3R5cGUg
YU9mZnNldCA9IDAgKSBjb25zdDsKIyAxOTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcv
bnNBU3RyaW5nLmgiCiAgICAgIHZpcnR1YWwgdm9pZCBTZXRDYXBhY2l0eSggc2l6ZV90eXBlICkg
eyB9CiMgMjE5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zQVN0cmluZy5oIgogICAg
ICB2aXJ0dWFsIHZvaWQgU2V0TGVuZ3RoKCBzaXplX3R5cGUgKSB7IH0KCgogICAgICB2b2lkCiAg
ICAgIFRydW5jYXRlKCBzaXplX3R5cGUgYU5ld0xlbmd0aD0wICkKICAgICAgICB7CiAgICAgICAg
ICA7CgoKICAgICAgICAgIFNldExlbmd0aChhTmV3TGVuZ3RoKTsKICAgICAgICB9CiMgMjU4ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zQVN0cmluZy5oIgogICAgICB2b2lkIEFzc2ln
biggY29uc3Qgc2VsZl90eXBlJiBhUmVhZGFibGUgKSB7IGRvX0Fzc2lnbkZyb21SZWFkYWJsZShh
UmVhZGFibGUpOyB9CiAgICAgIHZvaWQgQXNzaWduKCBjb25zdCBjaGFyX3R5cGUqIGFQdHIgKSB7
IGFQdHIgPyBkb19Bc3NpZ25Gcm9tRWxlbWVudFB0cihhUHRyKSA6IFNldExlbmd0aCgwKTsgfQog
ICAgICB2b2lkIEFzc2lnbiggY29uc3QgY2hhcl90eXBlKiBhUHRyLCBzaXplX3R5cGUgYUxlbmd0
aCApIHsgZG9fQXNzaWduRnJvbUVsZW1lbnRQdHJMZW5ndGgoYVB0ciwgYUxlbmd0aCk7IH0KICAg
ICAgdm9pZCBBc3NpZ24oIGNoYXJfdHlwZSBhQ2hhciApIHsgZG9fQXNzaWduRnJvbUVsZW1lbnQo
YUNoYXIpOyB9CgoKICAgICAgc2VsZl90eXBlJiBvcGVyYXRvcj0oIGNvbnN0IHNlbGZfdHlwZSYg
YVJlYWRhYmxlICkgeyBBc3NpZ24oYVJlYWRhYmxlKTsgcmV0dXJuICp0aGlzOyB9CgogICAgICBz
ZWxmX3R5cGUmIG9wZXJhdG9yPSggY29uc3QgY2hhcl90eXBlKiBhUHRyICkgeyBBc3NpZ24oYVB0
cik7IHJldHVybiAqdGhpczsgfQogICAgICBzZWxmX3R5cGUmIG9wZXJhdG9yPSggY2hhcl90eXBl
IGFDaGFyICkgeyBBc3NpZ24oYUNoYXIpOyByZXR1cm4gKnRoaXM7IH0KCgoKCgoKCiAgICAgIHZv
aWQgQXBwZW5kKCBjb25zdCBzZWxmX3R5cGUmIGFSZWFkYWJsZSApIHsgZG9fQXBwZW5kRnJvbVJl
YWRhYmxlKGFSZWFkYWJsZSk7IH0KICAgICAgdm9pZCBBcHBlbmQoIGNvbnN0IGNoYXJfdHlwZSog
YVB0ciApIHsgaWYgKGFQdHIpIGRvX0FwcGVuZEZyb21FbGVtZW50UHRyKGFQdHIpOyB9CiAgICAg
IHZvaWQgQXBwZW5kKCBjb25zdCBjaGFyX3R5cGUqIGFQdHIsIHNpemVfdHlwZSBhTGVuZ3RoICkg
eyBkb19BcHBlbmRGcm9tRWxlbWVudFB0ckxlbmd0aChhUHRyLCBhTGVuZ3RoKTsgfQogICAgICB2
b2lkIEFwcGVuZCggY2hhcl90eXBlIGFDaGFyICkgeyBkb19BcHBlbmRGcm9tRWxlbWVudChhQ2hh
cik7IH0KCiAgICAgIHNlbGZfdHlwZSYgb3BlcmF0b3IrPSggY29uc3Qgc2VsZl90eXBlJiBhUmVh
ZGFibGUgKSB7IEFwcGVuZChhUmVhZGFibGUpOyByZXR1cm4gKnRoaXM7IH0KICAgICAgc2VsZl90
eXBlJiBvcGVyYXRvcis9KCBjb25zdCBjaGFyX3R5cGUqIGFQdHIgKSB7IEFwcGVuZChhUHRyKTsg
cmV0dXJuICp0aGlzOyB9CiAgICAgIHNlbGZfdHlwZSYgb3BlcmF0b3IrPSggY2hhcl90eXBlIGFD
aGFyICkgeyBBcHBlbmQoYUNoYXIpOyByZXR1cm4gKnRoaXM7IH0KIyAyOTUgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9zdHJpbmcvbnNBU3RyaW5nLmgiCiAgICAgIHZvaWQgSW5zZXJ0KCBjb25zdCBz
ZWxmX3R5cGUmIGFSZWFkYWJsZSwgaW5kZXhfdHlwZSBhdFBvc2l0aW9uICkgeyBkb19JbnNlcnRG
cm9tUmVhZGFibGUoYVJlYWRhYmxlLCBhdFBvc2l0aW9uKTsgfQogICAgICB2b2lkIEluc2VydCgg
Y29uc3QgY2hhcl90eXBlKiBhUHRyLCBpbmRleF90eXBlIGF0UG9zaXRpb24gKSB7IGlmIChhUHRy
KSBkb19JbnNlcnRGcm9tRWxlbWVudFB0cihhUHRyLCBhdFBvc2l0aW9uKTsgfQogICAgICB2b2lk
IEluc2VydCggY29uc3QgY2hhcl90eXBlKiBhUHRyLCBpbmRleF90eXBlIGF0UG9zaXRpb24sIHNp
emVfdHlwZSBhTGVuZ3RoICkgeyBkb19JbnNlcnRGcm9tRWxlbWVudFB0ckxlbmd0aChhUHRyLCBh
dFBvc2l0aW9uLCBhTGVuZ3RoKTsgfQogICAgICB2b2lkIEluc2VydCggY2hhcl90eXBlIGFDaGFy
LCBpbmRleF90eXBlIGF0UG9zaXRpb24gKSB7IGRvX0luc2VydEZyb21FbGVtZW50KGFDaGFyLCBh
dFBvc2l0aW9uKTsgfQoKCgogICAgICB2aXJ0dWFsIHZvaWQgQ3V0KCBpbmRleF90eXBlIGN1dFN0
YXJ0LCBzaXplX3R5cGUgY3V0TGVuZ3RoICk7CgoKCiAgICAgIHZvaWQgUmVwbGFjZSggaW5kZXhf
dHlwZSBjdXRTdGFydCwgc2l6ZV90eXBlIGN1dExlbmd0aCwgY29uc3Qgc2VsZl90eXBlJiBhUmVh
ZGFibGUgKSB7IGRvX1JlcGxhY2VGcm9tUmVhZGFibGUoY3V0U3RhcnQsIGN1dExlbmd0aCwgYVJl
YWRhYmxlKTsgfQoKICAgIHByaXZhdGU6CgogICAgICBpbmRleF90eXBlIENvdW50Q2hhciggaW5j
b21wYXRpYmxlX2NoYXJfdHlwZSApIGNvbnN0OwogICAgICB2b2lkIG9wZXJhdG9yPSAoIGluY29t
cGF0aWJsZV9jaGFyX3R5cGUgKTsKICAgICAgdm9pZCBBc3NpZ24gKCBpbmNvbXBhdGlibGVfY2hh
cl90eXBlICk7CiAgICAgIHZvaWQgb3BlcmF0b3IrPSAoIGluY29tcGF0aWJsZV9jaGFyX3R5cGUg
KTsKICAgICAgdm9pZCBBcHBlbmQgKCBpbmNvbXBhdGlibGVfY2hhcl90eXBlICk7CiAgICAgIHZv
aWQgSW5zZXJ0ICggaW5jb21wYXRpYmxlX2NoYXJfdHlwZSwgaW5kZXhfdHlwZSApOwoKCiAgICBw
cm90ZWN0ZWQ6CiAgICAgICAgICAgICAgdm9pZCBVbmNoZWNrZWRBc3NpZ25Gcm9tUmVhZGFibGUo
IGNvbnN0IHNlbGZfdHlwZSYgKTsKICAgICAgdmlydHVhbCB2b2lkIGRvX0Fzc2lnbkZyb21SZWFk
YWJsZSggY29uc3Qgc2VsZl90eXBlJiApOwogICAgICB2aXJ0dWFsIHZvaWQgZG9fQXNzaWduRnJv
bUVsZW1lbnRQdHIoIGNvbnN0IGNoYXJfdHlwZSogKTsKICAgICAgdmlydHVhbCB2b2lkIGRvX0Fz
c2lnbkZyb21FbGVtZW50UHRyTGVuZ3RoKCBjb25zdCBjaGFyX3R5cGUqLCBzaXplX3R5cGUgKTsK
ICAgICAgdmlydHVhbCB2b2lkIGRvX0Fzc2lnbkZyb21FbGVtZW50KCBjaGFyX3R5cGUgKTsKCiAg
ICAgICAgICAgICAgdm9pZCBVbmNoZWNrZWRBcHBlbmRGcm9tUmVhZGFibGUoIGNvbnN0IHNlbGZf
dHlwZSYgKTsKICAgICAgdmlydHVhbCB2b2lkIGRvX0FwcGVuZEZyb21SZWFkYWJsZSggY29uc3Qg
c2VsZl90eXBlJiApOwogICAgICB2aXJ0dWFsIHZvaWQgZG9fQXBwZW5kRnJvbUVsZW1lbnRQdHIo
IGNvbnN0IGNoYXJfdHlwZSogKTsKICAgICAgdmlydHVhbCB2b2lkIGRvX0FwcGVuZEZyb21FbGVt
ZW50UHRyTGVuZ3RoKCBjb25zdCBjaGFyX3R5cGUqLCBzaXplX3R5cGUgKTsKICAgICAgdmlydHVh
bCB2b2lkIGRvX0FwcGVuZEZyb21FbGVtZW50KCBjaGFyX3R5cGUgKTsKCiAgICAgICAgICAgICAg
dm9pZCBVbmNoZWNrZWRJbnNlcnRGcm9tUmVhZGFibGUoIGNvbnN0IHNlbGZfdHlwZSYsIGluZGV4
X3R5cGUgKTsKICAgICAgdmlydHVhbCB2b2lkIGRvX0luc2VydEZyb21SZWFkYWJsZSggY29uc3Qg
c2VsZl90eXBlJiwgaW5kZXhfdHlwZSApOwogICAgICB2aXJ0dWFsIHZvaWQgZG9fSW5zZXJ0RnJv
bUVsZW1lbnRQdHIoIGNvbnN0IGNoYXJfdHlwZSosIGluZGV4X3R5cGUgKTsKICAgICAgdmlydHVh
bCB2b2lkIGRvX0luc2VydEZyb21FbGVtZW50UHRyTGVuZ3RoKCBjb25zdCBjaGFyX3R5cGUqLCBp
bmRleF90eXBlLCBzaXplX3R5cGUgKTsKICAgICAgdmlydHVhbCB2b2lkIGRvX0luc2VydEZyb21F
bGVtZW50KCBjaGFyX3R5cGUsIGluZGV4X3R5cGUgKTsKCiAgICAgICAgICAgICAgdm9pZCBVbmNo
ZWNrZWRSZXBsYWNlRnJvbVJlYWRhYmxlKCBpbmRleF90eXBlLCBzaXplX3R5cGUsIGNvbnN0IHNl
bGZfdHlwZSYgKTsKICAgICAgdmlydHVhbCB2b2lkIGRvX1JlcGxhY2VGcm9tUmVhZGFibGUoIGlu
ZGV4X3R5cGUsIHNpemVfdHlwZSwgY29uc3Qgc2VsZl90eXBlJiApOwoKCgogICAgcHVibGljOgog
ICAgICB2aXJ0dWFsIGNvbnN0IGNoYXJfdHlwZSogR2V0UmVhZGFibGVGcmFnbWVudCggY29uc3Rf
ZnJhZ21lbnRfdHlwZSYsIG5zRnJhZ21lbnRSZXF1ZXN0LCBQUlVpbnQzMiA9IDAgKSBjb25zdCA9
IDA7CiAgICAgIHZpcnR1YWwgY2hhcl90eXBlKiBHZXRXcml0YWJsZUZyYWdtZW50KCBmcmFnbWVu
dF90eXBlJiwgbnNGcmFnbWVudFJlcXVlc3QsIFBSVWludDMyID0gMCApID0gMDsKCiAgICAgIFBS
Qm9vbCBJc0RlcGVuZGVudE9uKCBjb25zdCBzZWxmX3R5cGUmIGFTdHJpbmcgKSBjb25zdDsKICB9
OwoKCgoKCmNsYXNzIG5zQUNTdHJpbmcKICB7CiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgY2hh
ciBjaGFyX3R5cGU7CiAgICAgIHR5cGVkZWYgUFJVbmljaGFyIGluY29tcGF0aWJsZV9jaGFyX3R5
cGU7CgogICAgICB0eXBlZGVmIG5zQnVmZmVySGFuZGxlPGNoYXJfdHlwZT4gYnVmZmVyX2hhbmRs
ZV90eXBlOwogICAgICB0eXBlZGVmIG5zQ29uc3RCdWZmZXJIYW5kbGU8Y2hhcl90eXBlPiBjb25z
dF9idWZmZXJfaGFuZGxlX3R5cGU7CiAgICAgIHR5cGVkZWYgbnNTaGFyZWRCdWZmZXJIYW5kbGU8
Y2hhcl90eXBlPiBzaGFyZWRfYnVmZmVyX2hhbmRsZV90eXBlOwoKICAgICAgdHlwZWRlZiBuc1Jl
YWRhYmxlRnJhZ21lbnQ8Y2hhcl90eXBlPiBjb25zdF9mcmFnbWVudF90eXBlOwogICAgICB0eXBl
ZGVmIG5zV3JpdGFibGVGcmFnbWVudDxjaGFyX3R5cGU+IGZyYWdtZW50X3R5cGU7CgogICAgICB0
eXBlZGVmIG5zQUNTdHJpbmcgc2VsZl90eXBlOwogICAgICB0eXBlZGVmIG5zQUNTdHJpbmcgYWJz
dHJhY3Rfc3RyaW5nX3R5cGU7CgogICAgICB0eXBlZGVmIG5zUmVhZGluZ0l0ZXJhdG9yPGNoYXJf
dHlwZT4gY29uc3RfaXRlcmF0b3I7CiAgICAgIHR5cGVkZWYgbnNXcml0aW5nSXRlcmF0b3I8Y2hh
cl90eXBlPiBpdGVyYXRvcjsKCiAgICAgIHR5cGVkZWYgUFJVaW50MzIgc2l6ZV90eXBlOwogICAg
ICB0eXBlZGVmIFBSVWludDMyIGluZGV4X3R5cGU7CgoKCgoKCiAgICAgIHZpcnR1YWwgfm5zQUNT
dHJpbmcoKSB7IH0KCiAgICAgIGVudW0gewogICAgICAgIGtIYXNTdGFja0J1ZmZlciA9IDB4MDAw
MDAwMDEKCgoKCiAgICAgIH07CiAgICAgIHZpcnR1YWwgUFJVaW50MzIgR2V0SW1wbGVtZW50YXRp
b25GbGFncygpIGNvbnN0OwoKICAgICAgdmlydHVhbCBjb25zdCBidWZmZXJfaGFuZGxlX3R5cGUq
IEdldEZsYXRCdWZmZXJIYW5kbGUoKSBjb25zdDsKICAgICAgdmlydHVhbCBjb25zdCBidWZmZXJf
aGFuZGxlX3R5cGUqIEdldEJ1ZmZlckhhbmRsZSgpIGNvbnN0OwogICAgICB2aXJ0dWFsIGNvbnN0
IHNoYXJlZF9idWZmZXJfaGFuZGxlX3R5cGUqIEdldFNoYXJlZEJ1ZmZlckhhbmRsZSgpIGNvbnN0
OwojIDQwMyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc0FTdHJpbmcuaCIKICAgICAg
aW5saW5lIGNvbnN0X2l0ZXJhdG9yJiBCZWdpblJlYWRpbmcoIGNvbnN0X2l0ZXJhdG9yJiApIGNv
bnN0OwogICAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3ImIEVuZFJlYWRpbmcoIGNvbnN0X2l0ZXJh
dG9yJiApIGNvbnN0OwoKICAgICAgaW5saW5lIGl0ZXJhdG9yJiBCZWdpbldyaXRpbmcoIGl0ZXJh
dG9yJiApOwogICAgICBpbmxpbmUgaXRlcmF0b3ImIEVuZFdyaXRpbmcoIGl0ZXJhdG9yJiApOwoK
ICAgICAgdmlydHVhbCBzaXplX3R5cGUgTGVuZ3RoKCkgY29uc3QgPSAwOwogICAgICBQUkJvb2wg
SXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIExlbmd0aCgpID09IDA7IH0KCiAgICAgIGlubGluZSBQ
UkJvb2wgRXF1YWxzKCBjb25zdCBhYnN0cmFjdF9zdHJpbmdfdHlwZSYsIGNvbnN0IG5zQ1N0cmlu
Z0NvbXBhcmF0b3ImID0gbnNEZWZhdWx0Q1N0cmluZ0NvbXBhcmF0b3IoKSApIGNvbnN0OwogICAg
ICBQUkJvb2wgRXF1YWxzKCBjb25zdCBjaGFyX3R5cGUqLCBjb25zdCBuc0NTdHJpbmdDb21wYXJh
dG9yJiA9IG5zRGVmYXVsdENTdHJpbmdDb21wYXJhdG9yKCkgKSBjb25zdDsKCiAgICAgIHZpcnR1
YWwgUFJCb29sIElzVm9pZCgpIGNvbnN0OwogICAgICB2aXJ0dWFsIHZvaWQgU2V0SXNWb2lkKCBQ
UkJvb2wgKTsKIyA0MzMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNBU3RyaW5nLmgi
CiAgICAgIGNoYXJfdHlwZSBGaXJzdCgpIGNvbnN0OwogICAgICBjaGFyX3R5cGUgTGFzdCgpIGNv
bnN0OwoKICAgICAgc2l6ZV90eXBlIENvdW50Q2hhciggY2hhcl90eXBlICkgY29uc3Q7CgoKCiAg
ICAgIFBSSW50MzIgRmluZENoYXIoIGNoYXJfdHlwZSwgaW5kZXhfdHlwZSBhT2Zmc2V0ID0gMCAp
IGNvbnN0OwojIDQ1MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc0FTdHJpbmcuaCIK
ICAgICAgdmlydHVhbCB2b2lkIFNldENhcGFjaXR5KCBzaXplX3R5cGUgKSB7IH0KIyA0NzMgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNBU3RyaW5nLmgiCiAgICAgIHZpcnR1YWwgdm9p
ZCBTZXRMZW5ndGgoIHNpemVfdHlwZSApIHsgfQoKCiAgICAgIHZvaWQKICAgICAgVHJ1bmNhdGUo
IHNpemVfdHlwZSBhTmV3TGVuZ3RoPTAgKQogICAgICAgIHsKICAgICAgICAgIDsKCgogICAgICAg
ICAgU2V0TGVuZ3RoKGFOZXdMZW5ndGgpOwogICAgICAgIH0KIyA1MTIgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9zdHJpbmcvbnNBU3RyaW5nLmgiCiAgICAgIHZvaWQgQXNzaWduKCBjb25zdCBzZWxm
X3R5cGUmIGFSZWFkYWJsZSApIHsgZG9fQXNzaWduRnJvbVJlYWRhYmxlKGFSZWFkYWJsZSk7IH0K
ICAgICAgdm9pZCBBc3NpZ24oIGNvbnN0IGNoYXJfdHlwZSogYVB0ciApIHsgYVB0ciA/IGRvX0Fz
c2lnbkZyb21FbGVtZW50UHRyKGFQdHIpIDogU2V0TGVuZ3RoKDApOyB9CiAgICAgIHZvaWQgQXNz
aWduKCBjb25zdCBjaGFyX3R5cGUqIGFQdHIsIHNpemVfdHlwZSBhTGVuZ3RoICkgeyBkb19Bc3Np
Z25Gcm9tRWxlbWVudFB0ckxlbmd0aChhUHRyLCBhTGVuZ3RoKTsgfQogICAgICB2b2lkIEFzc2ln
biggY2hhcl90eXBlIGFDaGFyICkgeyBkb19Bc3NpZ25Gcm9tRWxlbWVudChhQ2hhcik7IH0KCgog
ICAgICBzZWxmX3R5cGUmIG9wZXJhdG9yPSggY29uc3Qgc2VsZl90eXBlJiBhUmVhZGFibGUgKSB7
IEFzc2lnbihhUmVhZGFibGUpOyByZXR1cm4gKnRoaXM7IH0KCiAgICAgIHNlbGZfdHlwZSYgb3Bl
cmF0b3I9KCBjb25zdCBjaGFyX3R5cGUqIGFQdHIgKSB7IEFzc2lnbihhUHRyKTsgcmV0dXJuICp0
aGlzOyB9CiAgICAgIHNlbGZfdHlwZSYgb3BlcmF0b3I9KCBjaGFyX3R5cGUgYUNoYXIgKSB7IEFz
c2lnbihhQ2hhcik7IHJldHVybiAqdGhpczsgfQoKCgoKCgoKICAgICAgdm9pZCBBcHBlbmQoIGNv
bnN0IHNlbGZfdHlwZSYgYVJlYWRhYmxlICkgeyBkb19BcHBlbmRGcm9tUmVhZGFibGUoYVJlYWRh
YmxlKTsgfQogICAgICB2b2lkIEFwcGVuZCggY29uc3QgY2hhcl90eXBlKiBhUHRyICkgeyBpZiAo
YVB0cikgZG9fQXBwZW5kRnJvbUVsZW1lbnRQdHIoYVB0cik7IH0KICAgICAgdm9pZCBBcHBlbmQo
IGNvbnN0IGNoYXJfdHlwZSogYVB0ciwgc2l6ZV90eXBlIGFMZW5ndGggKSB7IGRvX0FwcGVuZEZy
b21FbGVtZW50UHRyTGVuZ3RoKGFQdHIsIGFMZW5ndGgpOyB9CiAgICAgIHZvaWQgQXBwZW5kKCBj
aGFyX3R5cGUgYUNoYXIgKSB7IGRvX0FwcGVuZEZyb21FbGVtZW50KGFDaGFyKTsgfQoKICAgICAg
c2VsZl90eXBlJiBvcGVyYXRvcis9KCBjb25zdCBzZWxmX3R5cGUmIGFSZWFkYWJsZSApIHsgQXBw
ZW5kKGFSZWFkYWJsZSk7IHJldHVybiAqdGhpczsgfQogICAgICBzZWxmX3R5cGUmIG9wZXJhdG9y
Kz0oIGNvbnN0IGNoYXJfdHlwZSogYVB0ciApIHsgQXBwZW5kKGFQdHIpOyByZXR1cm4gKnRoaXM7
IH0KICAgICAgc2VsZl90eXBlJiBvcGVyYXRvcis9KCBjaGFyX3R5cGUgYUNoYXIgKSB7IEFwcGVu
ZChhQ2hhcik7IHJldHVybiAqdGhpczsgfQojIDU0OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0
cmluZy9uc0FTdHJpbmcuaCIKICAgICAgdm9pZCBJbnNlcnQoIGNvbnN0IHNlbGZfdHlwZSYgYVJl
YWRhYmxlLCBpbmRleF90eXBlIGF0UG9zaXRpb24gKSB7IGRvX0luc2VydEZyb21SZWFkYWJsZShh
UmVhZGFibGUsIGF0UG9zaXRpb24pOyB9CiAgICAgIHZvaWQgSW5zZXJ0KCBjb25zdCBjaGFyX3R5
cGUqIGFQdHIsIGluZGV4X3R5cGUgYXRQb3NpdGlvbiApIHsgaWYgKGFQdHIpIGRvX0luc2VydEZy
b21FbGVtZW50UHRyKGFQdHIsIGF0UG9zaXRpb24pOyB9CiAgICAgIHZvaWQgSW5zZXJ0KCBjb25z
dCBjaGFyX3R5cGUqIGFQdHIsIGluZGV4X3R5cGUgYXRQb3NpdGlvbiwgc2l6ZV90eXBlIGFMZW5n
dGggKSB7IGRvX0luc2VydEZyb21FbGVtZW50UHRyTGVuZ3RoKGFQdHIsIGF0UG9zaXRpb24sIGFM
ZW5ndGgpOyB9CiAgICAgIHZvaWQgSW5zZXJ0KCBjaGFyX3R5cGUgYUNoYXIsIGluZGV4X3R5cGUg
YXRQb3NpdGlvbiApIHsgZG9fSW5zZXJ0RnJvbUVsZW1lbnQoYUNoYXIsIGF0UG9zaXRpb24pOyB9
CgoKCiAgICAgIHZpcnR1YWwgdm9pZCBDdXQoIGluZGV4X3R5cGUgY3V0U3RhcnQsIHNpemVfdHlw
ZSBjdXRMZW5ndGggKTsKCgoKICAgICAgdm9pZCBSZXBsYWNlKCBpbmRleF90eXBlIGN1dFN0YXJ0
LCBzaXplX3R5cGUgY3V0TGVuZ3RoLCBjb25zdCBzZWxmX3R5cGUmIGFSZWFkYWJsZSApIHsgZG9f
UmVwbGFjZUZyb21SZWFkYWJsZShjdXRTdGFydCwgY3V0TGVuZ3RoLCBhUmVhZGFibGUpOyB9Cgog
ICAgcHJpdmF0ZToKCiAgICAgIGluZGV4X3R5cGUgQ291bnRDaGFyKCBpbmNvbXBhdGlibGVfY2hh
cl90eXBlICkgY29uc3Q7CiAgICAgIHZvaWQgb3BlcmF0b3I9ICggaW5jb21wYXRpYmxlX2NoYXJf
dHlwZSApOwogICAgICB2b2lkIEFzc2lnbiAoIGluY29tcGF0aWJsZV9jaGFyX3R5cGUgKTsKICAg
ICAgdm9pZCBvcGVyYXRvcis9ICggaW5jb21wYXRpYmxlX2NoYXJfdHlwZSApOwogICAgICB2b2lk
IEFwcGVuZCAoIGluY29tcGF0aWJsZV9jaGFyX3R5cGUgKTsKICAgICAgdm9pZCBJbnNlcnQgKCBp
bmNvbXBhdGlibGVfY2hhcl90eXBlLCBpbmRleF90eXBlICk7CgoKICAgIHByb3RlY3RlZDoKICAg
ICAgICAgICAgICB2b2lkIFVuY2hlY2tlZEFzc2lnbkZyb21SZWFkYWJsZSggY29uc3Qgc2VsZl90
eXBlJiApOwogICAgICB2aXJ0dWFsIHZvaWQgZG9fQXNzaWduRnJvbVJlYWRhYmxlKCBjb25zdCBz
ZWxmX3R5cGUmICk7CiAgICAgIHZpcnR1YWwgdm9pZCBkb19Bc3NpZ25Gcm9tRWxlbWVudFB0cigg
Y29uc3QgY2hhcl90eXBlKiApOwogICAgICB2aXJ0dWFsIHZvaWQgZG9fQXNzaWduRnJvbUVsZW1l
bnRQdHJMZW5ndGgoIGNvbnN0IGNoYXJfdHlwZSosIHNpemVfdHlwZSApOwogICAgICB2aXJ0dWFs
IHZvaWQgZG9fQXNzaWduRnJvbUVsZW1lbnQoIGNoYXJfdHlwZSApOwoKICAgICAgICAgICAgICB2
b2lkIFVuY2hlY2tlZEFwcGVuZEZyb21SZWFkYWJsZSggY29uc3Qgc2VsZl90eXBlJiApOwogICAg
ICB2aXJ0dWFsIHZvaWQgZG9fQXBwZW5kRnJvbVJlYWRhYmxlKCBjb25zdCBzZWxmX3R5cGUmICk7
CiAgICAgIHZpcnR1YWwgdm9pZCBkb19BcHBlbmRGcm9tRWxlbWVudFB0ciggY29uc3QgY2hhcl90
eXBlKiApOwogICAgICB2aXJ0dWFsIHZvaWQgZG9fQXBwZW5kRnJvbUVsZW1lbnRQdHJMZW5ndGgo
IGNvbnN0IGNoYXJfdHlwZSosIHNpemVfdHlwZSApOwogICAgICB2aXJ0dWFsIHZvaWQgZG9fQXBw
ZW5kRnJvbUVsZW1lbnQoIGNoYXJfdHlwZSApOwoKICAgICAgICAgICAgICB2b2lkIFVuY2hlY2tl
ZEluc2VydEZyb21SZWFkYWJsZSggY29uc3Qgc2VsZl90eXBlJiwgaW5kZXhfdHlwZSApOwogICAg
ICB2aXJ0dWFsIHZvaWQgZG9fSW5zZXJ0RnJvbVJlYWRhYmxlKCBjb25zdCBzZWxmX3R5cGUmLCBp
bmRleF90eXBlICk7CiAgICAgIHZpcnR1YWwgdm9pZCBkb19JbnNlcnRGcm9tRWxlbWVudFB0cigg
Y29uc3QgY2hhcl90eXBlKiwgaW5kZXhfdHlwZSApOwogICAgICB2aXJ0dWFsIHZvaWQgZG9fSW5z
ZXJ0RnJvbUVsZW1lbnRQdHJMZW5ndGgoIGNvbnN0IGNoYXJfdHlwZSosIGluZGV4X3R5cGUsIHNp
emVfdHlwZSApOwogICAgICB2aXJ0dWFsIHZvaWQgZG9fSW5zZXJ0RnJvbUVsZW1lbnQoIGNoYXJf
dHlwZSwgaW5kZXhfdHlwZSApOwoKICAgICAgICAgICAgICB2b2lkIFVuY2hlY2tlZFJlcGxhY2VG
cm9tUmVhZGFibGUoIGluZGV4X3R5cGUsIHNpemVfdHlwZSwgY29uc3Qgc2VsZl90eXBlJiApOwog
ICAgICB2aXJ0dWFsIHZvaWQgZG9fUmVwbGFjZUZyb21SZWFkYWJsZSggaW5kZXhfdHlwZSwgc2l6
ZV90eXBlLCBjb25zdCBzZWxmX3R5cGUmICk7CgoKCiAgICBwdWJsaWM6CiAgICAgIHZpcnR1YWwg
Y29uc3QgY2hhcl90eXBlKiBHZXRSZWFkYWJsZUZyYWdtZW50KCBjb25zdF9mcmFnbWVudF90eXBl
JiwgbnNGcmFnbWVudFJlcXVlc3QsIFBSVWludDMyID0gMCApIGNvbnN0ID0gMDsKICAgICAgdmly
dHVhbCBjaGFyX3R5cGUqIEdldFdyaXRhYmxlRnJhZ21lbnQoIGZyYWdtZW50X3R5cGUmLCBuc0Zy
YWdtZW50UmVxdWVzdCwgUFJVaW50MzIgPSAwICkgPSAwOwoKICAgICAgUFJCb29sIElzRGVwZW5k
ZW50T24oIGNvbnN0IGFic3RyYWN0X3N0cmluZ190eXBlJiBhU3RyaW5nICkgY29uc3Q7CiAgfTsK
CgoKCmlubGluZQpuc0FTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yJgpuc0FTdHJpbmc6OkJlZ2luUmVh
ZGluZyggY29uc3RfaXRlcmF0b3ImIGFSZXN1bHQgKSBjb25zdAogIHsKICAgIGFSZXN1bHQubU93
bmluZ1N0cmluZyA9IHRoaXM7CiAgICBHZXRSZWFkYWJsZUZyYWdtZW50KGFSZXN1bHQubUZyYWdt
ZW50LCBrRmlyc3RGcmFnbWVudCk7CiAgICBhUmVzdWx0Lm1Qb3NpdGlvbiA9IGFSZXN1bHQubUZy
YWdtZW50Lm1TdGFydDsKICAgIGFSZXN1bHQubm9ybWFsaXplX2ZvcndhcmQoKTsKICAgIHJldHVy
biBhUmVzdWx0OwogIH0KCmlubGluZQpuc0FTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yJgpuc0FTdHJp
bmc6OkVuZFJlYWRpbmcoIGNvbnN0X2l0ZXJhdG9yJiBhUmVzdWx0ICkgY29uc3QKICB7CiAgICBh
UmVzdWx0Lm1Pd25pbmdTdHJpbmcgPSB0aGlzOwogICAgR2V0UmVhZGFibGVGcmFnbWVudChhUmVz
dWx0Lm1GcmFnbWVudCwga0xhc3RGcmFnbWVudCk7CiAgICBhUmVzdWx0Lm1Qb3NpdGlvbiA9IGFS
ZXN1bHQubUZyYWdtZW50Lm1FbmQ7CgogICAgcmV0dXJuIGFSZXN1bHQ7CiAgfQoKaW5saW5lCm5z
QVN0cmluZzo6aXRlcmF0b3ImCm5zQVN0cmluZzo6QmVnaW5Xcml0aW5nKCBpdGVyYXRvciYgYVJl
c3VsdCApCiAgewogICAgYVJlc3VsdC5tT3duaW5nU3RyaW5nID0gdGhpczsKICAgIEdldFdyaXRh
YmxlRnJhZ21lbnQoYVJlc3VsdC5tRnJhZ21lbnQsIGtGaXJzdEZyYWdtZW50KTsKICAgIGFSZXN1
bHQubVBvc2l0aW9uID0gYVJlc3VsdC5tRnJhZ21lbnQubVN0YXJ0OwogICAgYVJlc3VsdC5ub3Jt
YWxpemVfZm9yd2FyZCgpOwogICAgcmV0dXJuIGFSZXN1bHQ7CiAgfQoKCmlubGluZQpuc0FTdHJp
bmc6Oml0ZXJhdG9yJgpuc0FTdHJpbmc6OkVuZFdyaXRpbmcoIGl0ZXJhdG9yJiBhUmVzdWx0ICkK
ICB7CiAgICBhUmVzdWx0Lm1Pd25pbmdTdHJpbmcgPSB0aGlzOwogICAgR2V0V3JpdGFibGVGcmFn
bWVudChhUmVzdWx0Lm1GcmFnbWVudCwga0xhc3RGcmFnbWVudCk7CiAgICBhUmVzdWx0Lm1Qb3Np
dGlvbiA9IGFSZXN1bHQubUZyYWdtZW50Lm1FbmQ7CgogICAgcmV0dXJuIGFSZXN1bHQ7CiAgfQoK
IGludCBDb21wYXJlKCBjb25zdCBuc0FTdHJpbmcmIGxocywgY29uc3QgbnNBU3RyaW5nJiByaHMs
IGNvbnN0IG5zU3RyaW5nQ29tcGFyYXRvciYgPSBuc0RlZmF1bHRTdHJpbmdDb21wYXJhdG9yKCkg
KTsKCmlubGluZQpQUkJvb2wKbnNBU3RyaW5nOjpFcXVhbHMoIGNvbnN0IGFic3RyYWN0X3N0cmlu
Z190eXBlJiByaHMsIGNvbnN0IG5zU3RyaW5nQ29tcGFyYXRvciYgYUNvbXBhcmF0b3IgKSBjb25z
dAogIHsKICAgIHJldHVybiBMZW5ndGgoKT09cmhzLkxlbmd0aCgpICYmIENvbXBhcmUoKnRoaXMs
IHJocywgYUNvbXBhcmF0b3IpPT0wOwogIH0KCmlubGluZQpQUkJvb2wKb3BlcmF0b3IhPSggY29u
c3QgbnNBU3RyaW5nJiBsaHMsIGNvbnN0IG5zQVN0cmluZyYgcmhzICkKICB7CiAgICByZXR1cm4g
IWxocy5FcXVhbHMocmhzKTsKICB9CgppbmxpbmUKUFJCb29sCm9wZXJhdG9yPCAoIGNvbnN0IG5z
QVN0cmluZyYgbGhzLCBjb25zdCBuc0FTdHJpbmcmIHJocyApCiAgewogICAgcmV0dXJuIENvbXBh
cmUobGhzLCByaHMpPCAwOwogIH0KCmlubGluZQpQUkJvb2wKb3BlcmF0b3I8PSggY29uc3QgbnNB
U3RyaW5nJiBsaHMsIGNvbnN0IG5zQVN0cmluZyYgcmhzICkKICB7CiAgICByZXR1cm4gQ29tcGFy
ZShsaHMsIHJocyk8PTA7CiAgfQoKaW5saW5lClBSQm9vbApvcGVyYXRvcj09KCBjb25zdCBuc0FT
dHJpbmcmIGxocywgY29uc3QgbnNBU3RyaW5nJiByaHMgKQogIHsKICAgIHJldHVybiBsaHMuRXF1
YWxzKHJocyk7CiAgfQoKaW5saW5lClBSQm9vbApvcGVyYXRvcj49KCBjb25zdCBuc0FTdHJpbmcm
IGxocywgY29uc3QgbnNBU3RyaW5nJiByaHMgKQogIHsKICAgIHJldHVybiBDb21wYXJlKGxocywg
cmhzKT49MDsKICB9CgppbmxpbmUKUFJCb29sCm9wZXJhdG9yPiAoIGNvbnN0IG5zQVN0cmluZyYg
bGhzLCBjb25zdCBuc0FTdHJpbmcmIHJocyApCiAgewogICAgcmV0dXJuIENvbXBhcmUobGhzLCBy
aHMpPiAwOwogIH0KCgoKCgoKaW5saW5lCm5zQUNTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yJgpuc0FD
U3RyaW5nOjpCZWdpblJlYWRpbmcoIGNvbnN0X2l0ZXJhdG9yJiBhUmVzdWx0ICkgY29uc3QKICB7
CiAgICBhUmVzdWx0Lm1Pd25pbmdTdHJpbmcgPSB0aGlzOwogICAgR2V0UmVhZGFibGVGcmFnbWVu
dChhUmVzdWx0Lm1GcmFnbWVudCwga0ZpcnN0RnJhZ21lbnQpOwogICAgYVJlc3VsdC5tUG9zaXRp
b24gPSBhUmVzdWx0Lm1GcmFnbWVudC5tU3RhcnQ7CiAgICBhUmVzdWx0Lm5vcm1hbGl6ZV9mb3J3
YXJkKCk7CiAgICByZXR1cm4gYVJlc3VsdDsKICB9CgppbmxpbmUKbnNBQ1N0cmluZzo6Y29uc3Rf
aXRlcmF0b3ImCm5zQUNTdHJpbmc6OkVuZFJlYWRpbmcoIGNvbnN0X2l0ZXJhdG9yJiBhUmVzdWx0
ICkgY29uc3QKICB7CiAgICBhUmVzdWx0Lm1Pd25pbmdTdHJpbmcgPSB0aGlzOwogICAgR2V0UmVh
ZGFibGVGcmFnbWVudChhUmVzdWx0Lm1GcmFnbWVudCwga0xhc3RGcmFnbWVudCk7CiAgICBhUmVz
dWx0Lm1Qb3NpdGlvbiA9IGFSZXN1bHQubUZyYWdtZW50Lm1FbmQ7CgogICAgcmV0dXJuIGFSZXN1
bHQ7CiAgfQoKaW5saW5lCm5zQUNTdHJpbmc6Oml0ZXJhdG9yJgpuc0FDU3RyaW5nOjpCZWdpbldy
aXRpbmcoIGl0ZXJhdG9yJiBhUmVzdWx0ICkKICB7CiAgICBhUmVzdWx0Lm1Pd25pbmdTdHJpbmcg
PSB0aGlzOwogICAgR2V0V3JpdGFibGVGcmFnbWVudChhUmVzdWx0Lm1GcmFnbWVudCwga0ZpcnN0
RnJhZ21lbnQpOwogICAgYVJlc3VsdC5tUG9zaXRpb24gPSBhUmVzdWx0Lm1GcmFnbWVudC5tU3Rh
cnQ7CiAgICBhUmVzdWx0Lm5vcm1hbGl6ZV9mb3J3YXJkKCk7CiAgICByZXR1cm4gYVJlc3VsdDsK
ICB9CgoKaW5saW5lCm5zQUNTdHJpbmc6Oml0ZXJhdG9yJgpuc0FDU3RyaW5nOjpFbmRXcml0aW5n
KCBpdGVyYXRvciYgYVJlc3VsdCApCiAgewogICAgYVJlc3VsdC5tT3duaW5nU3RyaW5nID0gdGhp
czsKICAgIEdldFdyaXRhYmxlRnJhZ21lbnQoYVJlc3VsdC5tRnJhZ21lbnQsIGtMYXN0RnJhZ21l
bnQpOwogICAgYVJlc3VsdC5tUG9zaXRpb24gPSBhUmVzdWx0Lm1GcmFnbWVudC5tRW5kOwoKICAg
IHJldHVybiBhUmVzdWx0OwogIH0KCgpjbGFzcyBuc0Nhc2VJbnNlbnNpdGl2ZUNTdHJpbmdDb21w
YXJhdG9yCiAgICA6IHB1YmxpYyBuc0NTdHJpbmdDb21wYXJhdG9yCiAgewogICAgcHVibGljOgog
ICAgICB2aXJ0dWFsIGludCBvcGVyYXRvcigpKCBjb25zdCBjaGFyX3R5cGUqLCBjb25zdCBjaGFy
X3R5cGUqLCBQUlVpbnQzMiBhTGVuZ3RoICkgY29uc3Q7CiAgICAgIHZpcnR1YWwgaW50IG9wZXJh
dG9yKCkoIGNoYXJfdHlwZSwgY2hhcl90eXBlICkgY29uc3Q7CiAgfTsKCiBpbnQgQ29tcGFyZSgg
Y29uc3QgbnNBQ1N0cmluZyYgbGhzLCBjb25zdCBuc0FDU3RyaW5nJiByaHMsIGNvbnN0IG5zQ1N0
cmluZ0NvbXBhcmF0b3ImID0gbnNEZWZhdWx0Q1N0cmluZ0NvbXBhcmF0b3IoKSApOwoKaW5saW5l
ClBSQm9vbApuc0FDU3RyaW5nOjpFcXVhbHMoIGNvbnN0IGFic3RyYWN0X3N0cmluZ190eXBlJiBy
aHMsIGNvbnN0IG5zQ1N0cmluZ0NvbXBhcmF0b3ImIGFDb21wYXJhdG9yICkgY29uc3QKICB7CiAg
ICByZXR1cm4gTGVuZ3RoKCk9PXJocy5MZW5ndGgoKSAmJiBDb21wYXJlKCp0aGlzLCByaHMsIGFD
b21wYXJhdG9yKT09MDsKICB9CgppbmxpbmUKUFJCb29sCm9wZXJhdG9yIT0oIGNvbnN0IG5zQUNT
dHJpbmcmIGxocywgY29uc3QgbnNBQ1N0cmluZyYgcmhzICkKICB7CiAgICByZXR1cm4gIWxocy5F
cXVhbHMocmhzKTsKICB9CgppbmxpbmUKUFJCb29sCm9wZXJhdG9yPCAoIGNvbnN0IG5zQUNTdHJp
bmcmIGxocywgY29uc3QgbnNBQ1N0cmluZyYgcmhzICkKICB7CiAgICByZXR1cm4gQ29tcGFyZShs
aHMsIHJocyk8IDA7CiAgfQoKaW5saW5lClBSQm9vbApvcGVyYXRvcjw9KCBjb25zdCBuc0FDU3Ry
aW5nJiBsaHMsIGNvbnN0IG5zQUNTdHJpbmcmIHJocyApCiAgewogICAgcmV0dXJuIENvbXBhcmUo
bGhzLCByaHMpPD0wOwogIH0KCmlubGluZQpQUkJvb2wKb3BlcmF0b3I9PSggY29uc3QgbnNBQ1N0
cmluZyYgbGhzLCBjb25zdCBuc0FDU3RyaW5nJiByaHMgKQogIHsKICAgIHJldHVybiBsaHMuRXF1
YWxzKHJocyk7CiAgfQoKaW5saW5lClBSQm9vbApvcGVyYXRvcj49KCBjb25zdCBuc0FDU3RyaW5n
JiBsaHMsIGNvbnN0IG5zQUNTdHJpbmcmIHJocyApCiAgewogICAgcmV0dXJuIENvbXBhcmUobGhz
LCByaHMpPj0wOwogIH0KCmlubGluZQpQUkJvb2wKb3BlcmF0b3I+ICggY29uc3QgbnNBQ1N0cmlu
ZyYgbGhzLCBjb25zdCBuc0FDU3RyaW5nJiByaHMgKQogIHsKICAgIHJldHVybiBDb21wYXJlKGxo
cywgcmhzKT4gMDsKICB9CgoKCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNE
ZXBlbmRlbnRDb25jYXRlbmF0aW9uLmgiIDEKIyA1MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0
cmluZy9uc0RlcGVuZGVudENvbmNhdGVuYXRpb24uaCIKY2xhc3MgbnNEZXBlbmRlbnRDb25jYXRl
bmF0aW9uCiAgICA6IHB1YmxpYyBuc0FTdHJpbmcKICB7CiAgICBwdWJsaWM6CiAgICAgIHR5cGVk
ZWYgbnNEZXBlbmRlbnRDb25jYXRlbmF0aW9uIHNlbGZfdHlwZTsKCiAgICBwcm90ZWN0ZWQ6CiAg
ICAgIHZpcnR1YWwgY29uc3QgY2hhcl90eXBlKiBHZXRSZWFkYWJsZUZyYWdtZW50KCBjb25zdF9m
cmFnbWVudF90eXBlJiwgbnNGcmFnbWVudFJlcXVlc3QsIFBSVWludDMyICkgY29uc3Q7CiAgICAg
IHZpcnR1YWwgY2hhcl90eXBlKiBHZXRXcml0YWJsZUZyYWdtZW50KCBmcmFnbWVudF90eXBlJiwg
bnNGcmFnbWVudFJlcXVlc3QsIFBSVWludDMyICkgeyByZXR1cm4gMDsgfQoKICAgICAgZW51bSB7
IGtGaXJzdFN0cmluZywga0xhc3RTdHJpbmcgfTsKCiAgICAgIGludAogICAgICBHZXRDdXJyZW50
U3RyaW5nRnJvbUZyYWdtZW50KCBjb25zdCBjb25zdF9mcmFnbWVudF90eXBlJiBhRnJhZ21lbnQg
KSBjb25zdAogICAgICAgIHsKICAgICAgICAgIHJldHVybiAoYUZyYWdtZW50LkdldElEQXNJbnQo
KSAmIG1GcmFnbWVudElkZW50aWZpZXJNYXNrKSA/IGtMYXN0U3RyaW5nIDoga0ZpcnN0U3RyaW5n
OwogICAgICAgIH0KCiAgICAgIGludAogICAgICBTZXRGaXJzdFN0cmluZ0luRnJhZ21lbnQoIGNv
bnN0X2ZyYWdtZW50X3R5cGUmIGFGcmFnbWVudCApIGNvbnN0CiAgICAgICAgewogICAgICAgICAg
YUZyYWdtZW50LlNldElEKGFGcmFnbWVudC5HZXRJREFzSW50KCkgJiB+bUZyYWdtZW50SWRlbnRp
Zmllck1hc2spOwogICAgICAgICAgcmV0dXJuIGtGaXJzdFN0cmluZzsKICAgICAgICB9CgogICAg
ICBpbnQKICAgICAgU2V0TGFzdFN0cmluZ0luRnJhZ21lbnQoIGNvbnN0X2ZyYWdtZW50X3R5cGUm
IGFGcmFnbWVudCApIGNvbnN0CiAgICAgICAgewogICAgICAgICAgYUZyYWdtZW50LlNldElEKGFG
cmFnbWVudC5HZXRJREFzSW50KCkgfCBtRnJhZ21lbnRJZGVudGlmaWVyTWFzayk7CiAgICAgICAg
ICByZXR1cm4ga0xhc3RTdHJpbmc7CiAgICAgICAgfQoKICAgIHB1YmxpYzoKICAgICAgbnNEZXBl
bmRlbnRDb25jYXRlbmF0aW9uKCBjb25zdCBhYnN0cmFjdF9zdHJpbmdfdHlwZSYgYUZpcnN0U3Ry
aW5nLCBjb25zdCBhYnN0cmFjdF9zdHJpbmdfdHlwZSYgYUxhc3RTdHJpbmcsIFBSVWludDMyIGFN
YXNrID0gMSApCiAgICAgICAgICA6IG1GcmFnbWVudElkZW50aWZpZXJNYXNrKGFNYXNrKQogICAg
ICAgIHsKICAgICAgICAgIG1TdHJpbmdzW2tGaXJzdFN0cmluZ10gPSAmYUZpcnN0U3RyaW5nOwog
ICAgICAgICAgbVN0cmluZ3Nba0xhc3RTdHJpbmddID0gJmFMYXN0U3RyaW5nOwogICAgICAgIH0K
CiAgICAgIG5zRGVwZW5kZW50Q29uY2F0ZW5hdGlvbiggY29uc3Qgc2VsZl90eXBlJiBhRmlyc3RT
dHJpbmcsIGNvbnN0IGFic3RyYWN0X3N0cmluZ190eXBlJiBhTGFzdFN0cmluZyApCiAgICAgICAg
ICA6IG1GcmFnbWVudElkZW50aWZpZXJNYXNrKGFGaXJzdFN0cmluZy5tRnJhZ21lbnRJZGVudGlm
aWVyTWFzazw8MSkKICAgICAgICB7CiAgICAgICAgICBtU3RyaW5nc1trRmlyc3RTdHJpbmddID0g
JmFGaXJzdFN0cmluZzsKICAgICAgICAgIG1TdHJpbmdzW2tMYXN0U3RyaW5nXSA9ICZhTGFzdFN0
cmluZzsKICAgICAgICB9CgoKCgogICAgcHJpdmF0ZToKCiAgICAgIHZvaWQgb3BlcmF0b3I9KCBj
b25zdCBzZWxmX3R5cGUmICk7CgogICAgcHVibGljOgoKICAgICAgdmlydHVhbCBQUlVpbnQzMiBM
ZW5ndGgoKSBjb25zdDsKCgoKCiAgICAgIFBSVWludDMyIEdldEZyYWdtZW50SWRlbnRpZmllck1h
c2soKSBjb25zdCB7IHJldHVybiBtRnJhZ21lbnRJZGVudGlmaWVyTWFzazsgfQoKICAgIHByaXZh
dGU6CiAgICAgIHZvaWQgb3BlcmF0b3IrKCBjb25zdCBzZWxmX3R5cGUmICk7CgoKCiAgICBwcml2
YXRlOgogICAgICBjb25zdCBhYnN0cmFjdF9zdHJpbmdfdHlwZSogbVN0cmluZ3NbMl07CiAgICAg
IFBSVWludDMyIG1GcmFnbWVudElkZW50aWZpZXJNYXNrOwogIH07CgpjbGFzcyBuc0RlcGVuZGVu
dENDb25jYXRlbmF0aW9uCiAgICA6IHB1YmxpYyBuc0FDU3RyaW5nCiAgewogICAgcHVibGljOgog
ICAgICB0eXBlZGVmIG5zRGVwZW5kZW50Q0NvbmNhdGVuYXRpb24gc2VsZl90eXBlOwoKICAgIHBy
b3RlY3RlZDoKICAgICAgdmlydHVhbCBjb25zdCBjaGFyX3R5cGUqIEdldFJlYWRhYmxlRnJhZ21l
bnQoIGNvbnN0X2ZyYWdtZW50X3R5cGUmLCBuc0ZyYWdtZW50UmVxdWVzdCwgUFJVaW50MzIgKSBj
b25zdDsKICAgICAgdmlydHVhbCBjaGFyX3R5cGUqIEdldFdyaXRhYmxlRnJhZ21lbnQoIGZyYWdt
ZW50X3R5cGUmLCBuc0ZyYWdtZW50UmVxdWVzdCwgUFJVaW50MzIgKSB7IHJldHVybiAwOyB9Cgog
ICAgICBlbnVtIHsga0ZpcnN0U3RyaW5nLCBrTGFzdFN0cmluZyB9OwoKICAgICAgaW50CiAgICAg
IEdldEN1cnJlbnRTdHJpbmdGcm9tRnJhZ21lbnQoIGNvbnN0IGNvbnN0X2ZyYWdtZW50X3R5cGUm
IGFGcmFnbWVudCApIGNvbnN0CiAgICAgICAgewogICAgICAgICAgcmV0dXJuIChhRnJhZ21lbnQu
R2V0SURBc0ludCgpICYgbUZyYWdtZW50SWRlbnRpZmllck1hc2spID8ga0xhc3RTdHJpbmcgOiBr
Rmlyc3RTdHJpbmc7CiAgICAgICAgfQoKICAgICAgaW50CiAgICAgIFNldEZpcnN0U3RyaW5nSW5G
cmFnbWVudCggY29uc3RfZnJhZ21lbnRfdHlwZSYgYUZyYWdtZW50ICkgY29uc3QKICAgICAgICB7
CiAgICAgICAgICBhRnJhZ21lbnQuU2V0SUQoYUZyYWdtZW50LkdldElEQXNJbnQoKSAmIH5tRnJh
Z21lbnRJZGVudGlmaWVyTWFzayk7CiAgICAgICAgICByZXR1cm4ga0ZpcnN0U3RyaW5nOwogICAg
ICAgIH0KCiAgICAgIGludAogICAgICBTZXRMYXN0U3RyaW5nSW5GcmFnbWVudCggY29uc3RfZnJh
Z21lbnRfdHlwZSYgYUZyYWdtZW50ICkgY29uc3QKICAgICAgICB7CiAgICAgICAgICBhRnJhZ21l
bnQuU2V0SUQoYUZyYWdtZW50LkdldElEQXNJbnQoKSB8IG1GcmFnbWVudElkZW50aWZpZXJNYXNr
KTsKICAgICAgICAgIHJldHVybiBrTGFzdFN0cmluZzsKICAgICAgICB9CgogICAgcHVibGljOgog
ICAgICBuc0RlcGVuZGVudENDb25jYXRlbmF0aW9uKCBjb25zdCBhYnN0cmFjdF9zdHJpbmdfdHlw
ZSYgYUZpcnN0U3RyaW5nLCBjb25zdCBhYnN0cmFjdF9zdHJpbmdfdHlwZSYgYUxhc3RTdHJpbmcs
IFBSVWludDMyIGFNYXNrID0gMSApCiAgICAgICAgICA6IG1GcmFnbWVudElkZW50aWZpZXJNYXNr
KGFNYXNrKQogICAgICAgIHsKICAgICAgICAgIG1TdHJpbmdzW2tGaXJzdFN0cmluZ10gPSAmYUZp
cnN0U3RyaW5nOwogICAgICAgICAgbVN0cmluZ3Nba0xhc3RTdHJpbmddID0gJmFMYXN0U3RyaW5n
OwogICAgICAgIH0KCiAgICAgIG5zRGVwZW5kZW50Q0NvbmNhdGVuYXRpb24oIGNvbnN0IHNlbGZf
dHlwZSYgYUZpcnN0U3RyaW5nLCBjb25zdCBhYnN0cmFjdF9zdHJpbmdfdHlwZSYgYUxhc3RTdHJp
bmcgKQogICAgICAgICAgOiBtRnJhZ21lbnRJZGVudGlmaWVyTWFzayhhRmlyc3RTdHJpbmcubUZy
YWdtZW50SWRlbnRpZmllck1hc2s8PDEpCiAgICAgICAgewogICAgICAgICAgbVN0cmluZ3Nba0Zp
cnN0U3RyaW5nXSA9ICZhRmlyc3RTdHJpbmc7CiAgICAgICAgICBtU3RyaW5nc1trTGFzdFN0cmlu
Z10gPSAmYUxhc3RTdHJpbmc7CiAgICAgICAgfQoKCgoKICAgIHByaXZhdGU6CgogICAgICB2b2lk
IG9wZXJhdG9yPSggY29uc3Qgc2VsZl90eXBlJiApOwoKICAgIHB1YmxpYzoKCiAgICAgIHZpcnR1
YWwgUFJVaW50MzIgTGVuZ3RoKCkgY29uc3Q7CgoKCgogICAgICBQUlVpbnQzMiBHZXRGcmFnbWVu
dElkZW50aWZpZXJNYXNrKCkgY29uc3QgeyByZXR1cm4gbUZyYWdtZW50SWRlbnRpZmllck1hc2s7
IH0KCiAgICBwcml2YXRlOgogICAgICB2b2lkIG9wZXJhdG9yKyggY29uc3Qgc2VsZl90eXBlJiAp
OwoKCgogICAgcHJpdmF0ZToKICAgICAgY29uc3QgYWJzdHJhY3Rfc3RyaW5nX3R5cGUqIG1TdHJp
bmdzWzJdOwogICAgICBQUlVpbnQzMiBtRnJhZ21lbnRJZGVudGlmaWVyTWFzazsKICB9OwojIDIx
NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc0RlcGVuZGVudENvbmNhdGVuYXRpb24u
aCIKaW5saW5lCmNvbnN0IG5zRGVwZW5kZW50Q29uY2F0ZW5hdGlvbgpvcGVyYXRvcisoIGNvbnN0
IG5zRGVwZW5kZW50Q29uY2F0ZW5hdGlvbiYgbGhzLCBjb25zdCBuc0FTdHJpbmcmIHJocyApCiAg
ewogICAgcmV0dXJuIG5zRGVwZW5kZW50Q29uY2F0ZW5hdGlvbihsaHMsIHJocywgbGhzLkdldEZy
YWdtZW50SWRlbnRpZmllck1hc2soKTw8MSk7CiAgfQoKaW5saW5lCmNvbnN0IG5zRGVwZW5kZW50
Q0NvbmNhdGVuYXRpb24Kb3BlcmF0b3IrKCBjb25zdCBuc0RlcGVuZGVudENDb25jYXRlbmF0aW9u
JiBsaHMsIGNvbnN0IG5zQUNTdHJpbmcmIHJocyApCiAgewogICAgcmV0dXJuIG5zRGVwZW5kZW50
Q0NvbmNhdGVuYXRpb24obGhzLCByaHMsIGxocy5HZXRGcmFnbWVudElkZW50aWZpZXJNYXNrKCk8
PDEpOwogIH0KCmlubGluZQpjb25zdCBuc0RlcGVuZGVudENvbmNhdGVuYXRpb24Kb3BlcmF0b3Ir
KCBjb25zdCBuc0FTdHJpbmcmIGxocywgY29uc3QgbnNBU3RyaW5nJiByaHMgKQogIHsKICAgIHJl
dHVybiBuc0RlcGVuZGVudENvbmNhdGVuYXRpb24obGhzLCByaHMpOwogIH0KCmlubGluZQpjb25z
dCBuc0RlcGVuZGVudENDb25jYXRlbmF0aW9uCm9wZXJhdG9yKyggY29uc3QgbnNBQ1N0cmluZyYg
bGhzLCBjb25zdCBuc0FDU3RyaW5nJiByaHMgKQogIHsKICAgIHJldHVybiBuc0RlcGVuZGVudEND
b25jYXRlbmF0aW9uKGxocywgcmhzKTsKICB9CiMgODE2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
c3RyaW5nL25zQVN0cmluZy5oIiAyCiMgNDQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9u
c1ZvaWRBcnJheS5oIiAyCgpjbGFzcyBuc0lTaXplT2ZIYW5kbGVyOwoKCnR5cGVkZWYgaW50ICgq
IG5zVm9pZEFycmF5Q29tcGFyYXRvckZ1bmMpCiAgICAgICAgICAgIChjb25zdCB2b2lkKiBhRWxl
bWVudDEsIGNvbnN0IHZvaWQqIGFFbGVtZW50Miwgdm9pZCogYURhdGEpOwoKCnR5cGVkZWYgUFJC
b29sICgqIG5zVm9pZEFycmF5RW51bUZ1bmMpKHZvaWQqIGFFbGVtZW50LCB2b2lkICphRGF0YSk7
CgoKY2xhc3MgbnNWb2lkQXJyYXkgewpwdWJsaWM6CiAgbnNWb2lkQXJyYXkoKTsKICBuc1ZvaWRB
cnJheShQUkludDMyIGFDb3VudCk7CiAgdmlydHVhbCB+bnNWb2lkQXJyYXkoKTsKCiAgbnNWb2lk
QXJyYXkmIG9wZXJhdG9yPShjb25zdCBuc1ZvaWRBcnJheSYgb3RoZXIpOwoKCgoKCiAgaW5saW5l
IFBSSW50MzIgQ291bnQoKSBjb25zdCB7CiAgICByZXR1cm4gbUltcGwgPyBtSW1wbC0+bUNvdW50
IDogMDsKICB9CgogIGlubGluZSBQUkludDMyIEdldEFycmF5U2l6ZSgpIGNvbnN0IHsKICAgIHJl
dHVybiBtSW1wbCA/IChQUkludDMyKG1JbXBsLT5tQml0cykgJiBrQXJyYXlTaXplTWFzaykgOiAw
OwogIH0KCiAgdm9pZCogRWxlbWVudEF0KFBSSW50MzIgYUluZGV4KSBjb25zdAogIHsKICAgIDsK
ICAgIDsKCgoKICAgIGlmIChhSW5kZXggPj0gQ291bnQoKSkKICAgIHsKICAgICAgcmV0dXJuIDA7
CiAgICB9CiAgICByZXR1cm4gbUltcGwgPyBtSW1wbC0+bUFycmF5W2FJbmRleF0gOiAwOwogIH0K
CgogIHZvaWQqIFNhZmVFbGVtZW50QXQoUFJJbnQzMiBhSW5kZXgpIGNvbnN0CiAgewogICAgaWYg
KGFJbmRleCA8IDAgfHwgYUluZGV4ID49IENvdW50KCkpCiAgICB7CiAgICAgIHJldHVybiAwOwog
ICAgfQogICAgcmV0dXJuIG1JbXBsID8gbUltcGwtPm1BcnJheVthSW5kZXhdIDogMDsKICB9Cgog
IHZvaWQqIG9wZXJhdG9yW10oUFJJbnQzMiBhSW5kZXgpIGNvbnN0IHsgcmV0dXJuIEVsZW1lbnRB
dChhSW5kZXgpOyB9CgogIFBSSW50MzIgSW5kZXhPZih2b2lkKiBhUG9zc2libGVFbGVtZW50KSBj
b25zdDsKCiAgUFJCb29sIEluc2VydEVsZW1lbnRBdCh2b2lkKiBhRWxlbWVudCwgUFJJbnQzMiBh
SW5kZXgpOwogIFBSQm9vbCBJbnNlcnRFbGVtZW50c0F0KGNvbnN0IG5zVm9pZEFycmF5ICZvdGhl
ciwgUFJJbnQzMiBhSW5kZXgpOwoKICBQUkJvb2wgUmVwbGFjZUVsZW1lbnRBdCh2b2lkKiBhRWxl
bWVudCwgUFJJbnQzMiBhSW5kZXgpOwoKCiAgUFJCb29sIE1vdmVFbGVtZW50KFBSSW50MzIgYUZy
b20sIFBSSW50MzIgYVRvKTsKCiAgUFJCb29sIEFwcGVuZEVsZW1lbnQodm9pZCogYUVsZW1lbnQp
IHsKICAgIHJldHVybiBJbnNlcnRFbGVtZW50QXQoYUVsZW1lbnQsIENvdW50KCkpOwogIH0KCiAg
UFJCb29sIEFwcGVuZEVsZW1lbnRzKG5zVm9pZEFycmF5JiBhRWxlbWVudHMpIHsKICAgIHJldHVy
biBJbnNlcnRFbGVtZW50c0F0KGFFbGVtZW50cywgQ291bnQoKSk7CiAgfQoKICBQUkJvb2wgUmVt
b3ZlRWxlbWVudCh2b2lkKiBhRWxlbWVudCk7CiAgUFJCb29sIFJlbW92ZUVsZW1lbnRzQXQoUFJJ
bnQzMiBhSW5kZXgsIFBSSW50MzIgYUNvdW50KTsKICBQUkJvb2wgUmVtb3ZlRWxlbWVudEF0KFBS
SW50MzIgYUluZGV4KSB7IHJldHVybiBSZW1vdmVFbGVtZW50c0F0KGFJbmRleCwxKTsgfQoKICB2
aXJ0dWFsIHZvaWQgQ2xlYXIoKTsKCiAgdmlydHVhbCBQUkJvb2wgU2l6ZVRvKFBSSW50MzIgYU1p
bik7CgoKICB2aXJ0dWFsIHZvaWQgQ29tcGFjdCgpOwoKICB2b2lkIFNvcnQobnNWb2lkQXJyYXlD
b21wYXJhdG9yRnVuYyBhRnVuYywgdm9pZCogYURhdGEpOwoKICBQUkJvb2wgRW51bWVyYXRlRm9y
d2FyZHMobnNWb2lkQXJyYXlFbnVtRnVuYyBhRnVuYywgdm9pZCogYURhdGEpOwogIFBSQm9vbCBF
bnVtZXJhdGVCYWNrd2FyZHMobnNWb2lkQXJyYXlFbnVtRnVuYyBhRnVuYywgdm9pZCogYURhdGEp
OwoKcHJvdGVjdGVkOgogIHZpcnR1YWwgUFJCb29sIEdyb3dBcnJheUJ5KFBSSW50MzIgYUdyb3dC
eSk7CgogIHN0cnVjdCBJbXBsIHsKCgoKCgoKICAgIFBSVWludDMyIG1CaXRzOwoKCgoKICAgIFBS
SW50MzIgbUNvdW50OwoKCgoKICAgIHZvaWQqIG1BcnJheVsxXTsKICB9OwoKICBJbXBsKiBtSW1w
bDsKCgoKCgoKICBlbnVtIHsKICAgIGtBcnJheU93bmVyTWFzayA9IDEgPDwgMzEsCiAgICBrQXJy
YXlTaXplTWFzayA9IH5rQXJyYXlPd25lck1hc2sKICB9OwoKCgogIHZvaWQgU2V0QXJyYXkoSW1w
bCAqbmV3SW1wbCwgUFJJbnQzMiBhU2l6ZSwgUFJJbnQzMiBhQ291bnQsIFBSQm9vbCBvd25lcik7
CiAgaW5saW5lIFBSQm9vbCBJc0FycmF5T3duZXIoKSBjb25zdCB7CiAgICByZXR1cm4gbUltcGwg
PyAoUFJCb29sKG1JbXBsLT5tQml0cykgJiBrQXJyYXlPd25lck1hc2spIDogMDsKICB9Cgpwcml2
YXRlOgoKICBuc1ZvaWRBcnJheShjb25zdCBuc1ZvaWRBcnJheSYgb3RoZXIpOwp9OwoKCgpjbGFz
cyBuc0F1dG9Wb2lkQXJyYXkgOiBwdWJsaWMgbnNWb2lkQXJyYXkgewpwdWJsaWM6CiAgbnNBdXRv
Vm9pZEFycmF5KCk7CiAgdm9pZCBDbGVhcigpOwoKICB2aXJ0dWFsIFBSQm9vbCBTaXplVG8oUFJJ
bnQzMiBhTWluKTsKICB2aXJ0dWFsIHZvaWQgQ29tcGFjdCgpOwoKcHJvdGVjdGVkOgoKICBlbnVt
IHsga0F1dG9CdWZTaXplID0gOCB9OwogIGNoYXIgbUF1dG9CdWZbc2l6ZW9mKEltcGwpICsgKGtB
dXRvQnVmU2l6ZSAtIDEpICogc2l6ZW9mKHZvaWQqKV07Cn07CgoKY2xhc3MgbnNTdHJpbmc7Cgp0
eXBlZGVmIGludCAoKiBuc1N0cmluZ0FycmF5Q29tcGFyYXRvckZ1bmMpCiAgICAgICAgICAgIChj
b25zdCBuc1N0cmluZyogYUVsZW1lbnQxLCBjb25zdCBuc1N0cmluZyogYUVsZW1lbnQyLCB2b2lk
KiBhRGF0YSk7Cgp0eXBlZGVmIFBSQm9vbCAoKm5zU3RyaW5nQXJyYXlFbnVtRnVuYykobnNTdHJp
bmcmIGFFbGVtZW50LCB2b2lkICphRGF0YSk7CgpjbGFzcyBuc1N0cmluZ0FycmF5OiBwcm90ZWN0
ZWQgbnNWb2lkQXJyYXkKewpwdWJsaWM6CiAgbnNTdHJpbmdBcnJheSh2b2lkKTsKICBuc1N0cmlu
Z0FycmF5KFBSSW50MzIgYUNvdW50KTsKICB2aXJ0dWFsIH5uc1N0cmluZ0FycmF5KHZvaWQpOwoK
ICBuc1N0cmluZ0FycmF5JiBvcGVyYXRvcj0oY29uc3QgbnNTdHJpbmdBcnJheSYgb3RoZXIpOwoK
CgoKCiAgUFJJbnQzMiBDb3VudCh2b2lkKSBjb25zdCB7CiAgICByZXR1cm4gbnNWb2lkQXJyYXk6
OkNvdW50KCk7CiAgfQoKICB2b2lkIFN0cmluZ0F0KFBSSW50MzIgYUluZGV4LCBuc0FTdHJpbmcm
IGFTdHJpbmcpIGNvbnN0OwogIG5zU3RyaW5nKiBTdHJpbmdBdChQUkludDMyIGFJbmRleCkgY29u
c3Q7CiAgbnNTdHJpbmcqIG9wZXJhdG9yW10oUFJJbnQzMiBhSW5kZXgpIGNvbnN0IHsgcmV0dXJu
IFN0cmluZ0F0KGFJbmRleCk7IH0KCiAgUFJJbnQzMiBJbmRleE9mKGNvbnN0IG5zQVN0cmluZyYg
YVBvc3NpYmxlU3RyaW5nKSBjb25zdDsKCiAgUFJCb29sIEluc2VydFN0cmluZ0F0KGNvbnN0IG5z
QVN0cmluZyYgYVN0cmluZywgUFJJbnQzMiBhSW5kZXgpOwoKICBQUkJvb2wgUmVwbGFjZVN0cmlu
Z0F0KGNvbnN0IG5zQVN0cmluZyYgYVN0cmluZywgUFJJbnQzMiBhSW5kZXgpOwoKICBQUkJvb2wg
QXBwZW5kU3RyaW5nKGNvbnN0IG5zQVN0cmluZyYgYVN0cmluZykgewogICAgcmV0dXJuIEluc2Vy
dFN0cmluZ0F0KGFTdHJpbmcsIENvdW50KCkpOwogIH0KCiAgUFJCb29sIFJlbW92ZVN0cmluZyhj
b25zdCBuc0FTdHJpbmcmIGFTdHJpbmcpOwogIFBSQm9vbCBSZW1vdmVTdHJpbmdBdChQUkludDMy
IGFJbmRleCk7CiAgdm9pZCBDbGVhcih2b2lkKTsKCiAgdm9pZCBDb21wYWN0KHZvaWQpIHsKICAg
IG5zVm9pZEFycmF5OjpDb21wYWN0KCk7CiAgfQoKICB2b2lkIFNvcnQodm9pZCk7CiAgdm9pZCBT
b3J0KG5zU3RyaW5nQXJyYXlDb21wYXJhdG9yRnVuYyBhRnVuYywgdm9pZCogYURhdGEpOwoKICBQ
UkJvb2wgRW51bWVyYXRlRm9yd2FyZHMobnNTdHJpbmdBcnJheUVudW1GdW5jIGFGdW5jLCB2b2lk
KiBhRGF0YSk7CiAgUFJCb29sIEVudW1lcmF0ZUJhY2t3YXJkcyhuc1N0cmluZ0FycmF5RW51bUZ1
bmMgYUZ1bmMsIHZvaWQqIGFEYXRhKTsKCnByaXZhdGU6CgogIG5zU3RyaW5nQXJyYXkoY29uc3Qg
bnNTdHJpbmdBcnJheSYgb3RoZXIpOwp9OwoKCmNsYXNzIG5zQ1N0cmluZzsKCnR5cGVkZWYgaW50
ICgqIG5zQ1N0cmluZ0FycmF5Q29tcGFyYXRvckZ1bmMpCiAgICAgICAgICAgIChjb25zdCBuc0NT
dHJpbmcqIGFFbGVtZW50MSwgY29uc3QgbnNDU3RyaW5nKiBhRWxlbWVudDIsIHZvaWQqIGFEYXRh
KTsKCnR5cGVkZWYgUFJCb29sICgqbnNDU3RyaW5nQXJyYXlFbnVtRnVuYykobnNDU3RyaW5nJiBh
RWxlbWVudCwgdm9pZCAqYURhdGEpOwoKY2xhc3MgbnNDU3RyaW5nQXJyYXk6IHByb3RlY3RlZCBu
c1ZvaWRBcnJheQp7CnB1YmxpYzoKICBuc0NTdHJpbmdBcnJheSh2b2lkKTsKICBuc0NTdHJpbmdB
cnJheShQUkludDMyIGFDb3VudCk7CiAgdmlydHVhbCB+bnNDU3RyaW5nQXJyYXkodm9pZCk7Cgog
IG5zQ1N0cmluZ0FycmF5JiBvcGVyYXRvcj0oY29uc3QgbnNDU3RyaW5nQXJyYXkmIG90aGVyKTsK
CgoKCgoKICB2b2lkIFBhcnNlU3RyaW5nKGNvbnN0IGNoYXIqIHN0cmluZywgY29uc3QgY2hhciog
ZGVsaW1pdGVyKTsKCgoKCgogIFBSSW50MzIgQ291bnQodm9pZCkgY29uc3QgewogICAgcmV0dXJu
IG5zVm9pZEFycmF5OjpDb3VudCgpOwogIH0KCiAgdm9pZCBDU3RyaW5nQXQoUFJJbnQzMiBhSW5k
ZXgsIG5zQ1N0cmluZyYgYUNTdHJpbmcpIGNvbnN0OwogIG5zQ1N0cmluZyogQ1N0cmluZ0F0KFBS
SW50MzIgYUluZGV4KSBjb25zdDsKICBuc0NTdHJpbmcqIG9wZXJhdG9yW10oUFJJbnQzMiBhSW5k
ZXgpIGNvbnN0IHsgcmV0dXJuIENTdHJpbmdBdChhSW5kZXgpOyB9CgogIFBSSW50MzIgSW5kZXhP
Zihjb25zdCBuc0NTdHJpbmcmIGFQb3NzaWJsZVN0cmluZykgY29uc3Q7CiAgUFJJbnQzMiBJbmRl
eE9mSWdub3JlQ2FzZShjb25zdCBuc0NTdHJpbmcmIGFQb3NzaWJsZVN0cmluZykgY29uc3Q7Cgog
IFBSQm9vbCBJbnNlcnRDU3RyaW5nQXQoY29uc3QgbnNDU3RyaW5nJiBhQ1N0cmluZywgUFJJbnQz
MiBhSW5kZXgpOwoKICBQUkJvb2wgUmVwbGFjZUNTdHJpbmdBdChjb25zdCBuc0NTdHJpbmcmIGFD
U3RyaW5nLCBQUkludDMyIGFJbmRleCk7CgogIFBSQm9vbCBBcHBlbmRDU3RyaW5nKGNvbnN0IG5z
Q1N0cmluZyYgYUNTdHJpbmcpIHsKICAgIHJldHVybiBJbnNlcnRDU3RyaW5nQXQoYUNTdHJpbmcs
IENvdW50KCkpOwogIH0KCiAgUFJCb29sIFJlbW92ZUNTdHJpbmcoY29uc3QgbnNDU3RyaW5nJiBh
Q1N0cmluZyk7CiAgUFJCb29sIFJlbW92ZUNTdHJpbmdJZ25vcmVDYXNlKGNvbnN0IG5zQ1N0cmlu
ZyYgYUNTdHJpbmcpOwogIFBSQm9vbCBSZW1vdmVDU3RyaW5nQXQoUFJJbnQzMiBhSW5kZXgpOwog
IHZvaWQgQ2xlYXIodm9pZCk7CgogIHZvaWQgQ29tcGFjdCh2b2lkKSB7CiAgICBuc1ZvaWRBcnJh
eTo6Q29tcGFjdCgpOwogIH0KCiAgdm9pZCBTb3J0KHZvaWQpOwogIHZvaWQgU29ydElnbm9yZUNh
c2Uodm9pZCk7CiAgdm9pZCBTb3J0KG5zQ1N0cmluZ0FycmF5Q29tcGFyYXRvckZ1bmMgYUZ1bmMs
IHZvaWQqIGFEYXRhKTsKCiAgUFJCb29sIEVudW1lcmF0ZUZvcndhcmRzKG5zQ1N0cmluZ0FycmF5
RW51bUZ1bmMgYUZ1bmMsIHZvaWQqIGFEYXRhKTsKICBQUkJvb2wgRW51bWVyYXRlQmFja3dhcmRz
KG5zQ1N0cmluZ0FycmF5RW51bUZ1bmMgYUZ1bmMsIHZvaWQqIGFEYXRhKTsKCnByaXZhdGU6Cgog
IG5zQ1N0cmluZ0FycmF5KGNvbnN0IG5zQ1N0cmluZ0FycmF5JiBvdGhlcik7Cn07CiMgMzQ5ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNWb2lkQXJyYXkuaCIKY2xhc3MgbnNTbWFsbFZv
aWRBcnJheQp7CnB1YmxpYzoKICBuc1NtYWxsVm9pZEFycmF5KCk7CiAgfm5zU21hbGxWb2lkQXJy
YXkoKTsKCiAgbnNTbWFsbFZvaWRBcnJheSYgb3BlcmF0b3I9KG5zU21hbGxWb2lkQXJyYXkmIG90
aGVyKTsKICB2b2lkKiBvcGVyYXRvcltdKFBSSW50MzIgYUluZGV4KSBjb25zdCB7IHJldHVybiBF
bGVtZW50QXQoYUluZGV4KTsgfQoKCgoKICBQUkludDMyIEdldEFycmF5U2l6ZSgpIGNvbnN0OwoK
ICBQUkludDMyIENvdW50KCkgY29uc3Q7CiAgdm9pZCogRWxlbWVudEF0KFBSSW50MzIgYUluZGV4
KSBjb25zdDsKICB2b2lkKiBTYWZlRWxlbWVudEF0KFBSSW50MzIgYUluZGV4KSBjb25zdCB7Cgog
ICAgaWYgKGFJbmRleCA8IDAgfHwgYUluZGV4ID49IENvdW50KCkpCiAgICAgIHJldHVybiAwOwog
ICAgcmV0dXJuIEVsZW1lbnRBdChhSW5kZXgpOwogIH0KICBQUkludDMyIEluZGV4T2Yodm9pZCog
YVBvc3NpYmxlRWxlbWVudCkgY29uc3Q7CiAgUFJCb29sIEluc2VydEVsZW1lbnRBdCh2b2lkKiBh
RWxlbWVudCwgUFJJbnQzMiBhSW5kZXgpOwogIFBSQm9vbCBJbnNlcnRFbGVtZW50c0F0KGNvbnN0
IG5zVm9pZEFycmF5ICZvdGhlciwgUFJJbnQzMiBhSW5kZXgpOwogIFBSQm9vbCBSZXBsYWNlRWxl
bWVudEF0KHZvaWQqIGFFbGVtZW50LCBQUkludDMyIGFJbmRleCk7CiAgUFJCb29sIE1vdmVFbGVt
ZW50KFBSSW50MzIgYUZyb20sIFBSSW50MzIgYVRvKTsKICBQUkJvb2wgQXBwZW5kRWxlbWVudCh2
b2lkKiBhRWxlbWVudCk7CiAgUFJCb29sIEFwcGVuZEVsZW1lbnRzKG5zVm9pZEFycmF5JiBhRWxl
bWVudHMpIHsKICAgIHJldHVybiBJbnNlcnRFbGVtZW50c0F0KGFFbGVtZW50cywgQ291bnQoKSk7
CiAgfQogIFBSQm9vbCBSZW1vdmVFbGVtZW50KHZvaWQqIGFFbGVtZW50KTsKICBQUkJvb2wgUmVt
b3ZlRWxlbWVudHNBdChQUkludDMyIGFJbmRleCwgUFJJbnQzMiBhQ291bnQpOwogIFBSQm9vbCBS
ZW1vdmVFbGVtZW50QXQoUFJJbnQzMiBhSW5kZXgpOwoKICB2b2lkIENsZWFyKCk7CiAgUFJCb29s
IFNpemVUbyhQUkludDMyIGFNaW4pOwogIHZvaWQgQ29tcGFjdCgpOwogIHZvaWQgU29ydChuc1Zv
aWRBcnJheUNvbXBhcmF0b3JGdW5jIGFGdW5jLCB2b2lkKiBhRGF0YSk7CgogIFBSQm9vbCBFbnVt
ZXJhdGVGb3J3YXJkcyhuc1ZvaWRBcnJheUVudW1GdW5jIGFGdW5jLCB2b2lkKiBhRGF0YSk7CiAg
UFJCb29sIEVudW1lcmF0ZUJhY2t3YXJkcyhuc1ZvaWRBcnJheUVudW1GdW5jIGFGdW5jLCB2b2lk
KiBhRGF0YSk7Cgpwcml2YXRlOgogIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBQdHJCaXRzOwoKICBQ
UkJvb2wgSGFzU2luZ2xlQ2hpbGQoKSBjb25zdAogIHsKICAgIHJldHVybiAobUNoaWxkcmVuICYm
IChQdHJCaXRzKG1DaGlsZHJlbikgJiAweDEpKTsKICB9CiAgUFJCb29sIEhhc1ZlY3RvcigpIGNv
bnN0CiAgewogICAgcmV0dXJuIChtQ2hpbGRyZW4gJiYgIShQdHJCaXRzKG1DaGlsZHJlbikgJiAw
eDEpKTsKICB9CiAgdm9pZCogR2V0U2luZ2xlQ2hpbGQoKSBjb25zdAogIHsKICAgIHJldHVybiAo
bUNoaWxkcmVuID8gKCh2b2lkKikoUHRyQml0cyhtQ2hpbGRyZW4pICYgfjB4MSkpIDogMCk7CiAg
fQogIHZvaWQgU2V0U2luZ2xlQ2hpbGQodm9pZCAqYUNoaWxkKTsKICBuc1ZvaWRBcnJheSogR2V0
Q2hpbGRWZWN0b3IoKSBjb25zdAogIHsKICAgIHJldHVybiAobnNWb2lkQXJyYXkqKW1DaGlsZHJl
bjsKICB9CiAgbnNWb2lkQXJyYXkqIFN3aXRjaFRvVmVjdG9yKCk7CgoKCgoKICB2b2lkICptQ2hp
bGRyZW47Cn07CiMgNDUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NQ2xhc3NJbmZv
LmgiIDIKCmVudW0gbnNET01DbGFzc0luZm9JRCB7CgogIGVET01DbGFzc0luZm9fV2luZG93X2lk
LAogIGVET01DbGFzc0luZm9fTG9jYXRpb25faWQsCiAgZURPTUNsYXNzSW5mb19OYXZpZ2F0b3Jf
aWQsCiAgZURPTUNsYXNzSW5mb19QbHVnaW5faWQsCiAgZURPTUNsYXNzSW5mb19QbHVnaW5BcnJh
eV9pZCwKICBlRE9NQ2xhc3NJbmZvX01pbWVUeXBlX2lkLAogIGVET01DbGFzc0luZm9fTWltZVR5
cGVBcnJheV9pZCwKICBlRE9NQ2xhc3NJbmZvX0JhclByb3BfaWQsCiAgZURPTUNsYXNzSW5mb19I
aXN0b3J5X2lkLAogIGVET01DbGFzc0luZm9fU2NyZWVuX2lkLAoKCiAgZURPTUNsYXNzSW5mb19Y
TUxEb2N1bWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0RvY3VtZW50VHlwZV9pZCwKICBlRE9NQ2xh
c3NJbmZvX0RPTUltcGxlbWVudGF0aW9uX2lkLAogIGVET01DbGFzc0luZm9fRE9NRXhjZXB0aW9u
X2lkLAogIGVET01DbGFzc0luZm9fRG9jdW1lbnRGcmFnbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZv
X0VsZW1lbnRfaWQsCiAgZURPTUNsYXNzSW5mb19BdHRyX2lkLAogIGVET01DbGFzc0luZm9fVGV4
dF9pZCwKICBlRE9NQ2xhc3NJbmZvX0NvbW1lbnRfaWQsCiAgZURPTUNsYXNzSW5mb19DREFUQVNl
Y3Rpb25faWQsCiAgZURPTUNsYXNzSW5mb19Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25faWQsCiAgZURP
TUNsYXNzSW5mb19FbnRpdHlfaWQsCiAgZURPTUNsYXNzSW5mb19FbnRpdHlSZWZlcmVuY2VfaWQs
CiAgZURPTUNsYXNzSW5mb19Ob3RhdGlvbl9pZCwKICBlRE9NQ2xhc3NJbmZvX05vZGVMaXN0X2lk
LAogIGVET01DbGFzc0luZm9fTmFtZWROb2RlTWFwX2lkLAoKCiAgZURPTUNsYXNzSW5mb19Eb2N1
bWVudFN0eWxlU2hlZXRMaXN0X2lkLAoKCiAgZURPTUNsYXNzSW5mb19FdmVudF9pZCwKICBlRE9N
Q2xhc3NJbmZvX011dGF0aW9uRXZlbnRfaWQsCgoKICBlRE9NQ2xhc3NJbmZvX0hUTUxEb2N1bWVu
dF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxDb2xsZWN0aW9uX2lkLAogIGVET01DbGFzc0luZm9f
SFRNTE9wdGlvbkNvbGxlY3Rpb25faWQsCiAgZURPTUNsYXNzSW5mb19IVE1MRm9ybUNvbnRyb2xD
b2xsZWN0aW9uX2lkLAogIGVET01DbGFzc0luZm9fSFRNTEdlbmVyaWNDb2xsZWN0aW9uX2lkLAoK
CiAgZURPTUNsYXNzSW5mb19IVE1MQW5jaG9yRWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hU
TUxBcHBsZXRFbGVtZW50X2lkLAogIGVET01DbGFzc0luZm9fSFRNTEFyZWFFbGVtZW50X2lkLAog
IGVET01DbGFzc0luZm9fSFRNTEJSRWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxCYXNl
RWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxCYXNlRm9udEVsZW1lbnRfaWQsCiAgZURP
TUNsYXNzSW5mb19IVE1MQm9keUVsZW1lbnRfaWQsCiAgZURPTUNsYXNzSW5mb19IVE1MQnV0dG9u
RWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxETGlzdEVsZW1lbnRfaWQsCiAgZURPTUNs
YXNzSW5mb19IVE1MRGVsRWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxEaXJlY3RvcnlF
bGVtZW50X2lkLAogIGVET01DbGFzc0luZm9fSFRNTERpdkVsZW1lbnRfaWQsCiAgZURPTUNsYXNz
SW5mb19IVE1MRW1iZWRFbGVtZW50X2lkLAogIGVET01DbGFzc0luZm9fSFRNTEZpZWxkU2V0RWxl
bWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxGb250RWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJ
bmZvX0hUTUxGb3JtRWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxGcmFtZUVsZW1lbnRf
aWQsCiAgZURPTUNsYXNzSW5mb19IVE1MRnJhbWVTZXRFbGVtZW50X2lkLAogIGVET01DbGFzc0lu
Zm9fSFRNTEhSRWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxIZWFkRWxlbWVudF9pZCwK
ICBlRE9NQ2xhc3NJbmZvX0hUTUxIZWFkaW5nRWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hU
TUxIdG1sRWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxJRnJhbWVFbGVtZW50X2lkLAog
IGVET01DbGFzc0luZm9fSFRNTEltYWdlRWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxJ
bnB1dEVsZW1lbnRfaWQsCiAgZURPTUNsYXNzSW5mb19IVE1MSW5zRWxlbWVudF9pZCwKICBlRE9N
Q2xhc3NJbmZvX0hUTUxJc0luZGV4RWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxMSUVs
ZW1lbnRfaWQsCiAgZURPTUNsYXNzSW5mb19IVE1MTGFiZWxFbGVtZW50X2lkLAogIGVET01DbGFz
c0luZm9fSFRNTExlZ2VuZEVsZW1lbnRfaWQsCiAgZURPTUNsYXNzSW5mb19IVE1MTGlua0VsZW1l
bnRfaWQsCiAgZURPTUNsYXNzSW5mb19IVE1MTWFwRWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZv
X0hUTUxNZW51RWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxNZXRhRWxlbWVudF9pZCwK
ICBlRE9NQ2xhc3NJbmZvX0hUTUxNb2RFbGVtZW50X2lkLAogIGVET01DbGFzc0luZm9fSFRNTE9M
aXN0RWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxPYmplY3RFbGVtZW50X2lkLAogIGVE
T01DbGFzc0luZm9fSFRNTE9wdEdyb3VwRWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxP
cHRpb25FbGVtZW50X2lkLAogIGVET01DbGFzc0luZm9fSFRNTFBhcmFncmFwaEVsZW1lbnRfaWQs
CiAgZURPTUNsYXNzSW5mb19IVE1MUGFyYW1FbGVtZW50X2lkLAogIGVET01DbGFzc0luZm9fSFRN
TFByZUVsZW1lbnRfaWQsCiAgZURPTUNsYXNzSW5mb19IVE1MUXVvdGVFbGVtZW50X2lkLAogIGVE
T01DbGFzc0luZm9fSFRNTFNjcmlwdEVsZW1lbnRfaWQsCiAgZURPTUNsYXNzSW5mb19IVE1MU2Vs
ZWN0RWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxTcGFjZXJFbGVtZW50X2lkLAogIGVE
T01DbGFzc0luZm9fSFRNTFNwYW5FbGVtZW50X2lkLAogIGVET01DbGFzc0luZm9fSFRNTFN0eWxl
RWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxUYWJsZUNhcHRpb25FbGVtZW50X2lkLAog
IGVET01DbGFzc0luZm9fSFRNTFRhYmxlQ2VsbEVsZW1lbnRfaWQsCiAgZURPTUNsYXNzSW5mb19I
VE1MVGFibGVDb2xFbGVtZW50X2lkLAogIGVET01DbGFzc0luZm9fSFRNTFRhYmxlQ29sR3JvdXBF
bGVtZW50X2lkLAogIGVET01DbGFzc0luZm9fSFRNTFRhYmxlRWxlbWVudF9pZCwKICBlRE9NQ2xh
c3NJbmZvX0hUTUxUYWJsZVJvd0VsZW1lbnRfaWQsCiAgZURPTUNsYXNzSW5mb19IVE1MVGFibGVT
ZWN0aW9uRWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxUZXh0QXJlYUVsZW1lbnRfaWQs
CiAgZURPTUNsYXNzSW5mb19IVE1MVGl0bGVFbGVtZW50X2lkLAogIGVET01DbGFzc0luZm9fSFRN
TFVMaXN0RWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxVbmtub3duRWxlbWVudF9pZCwK
ICBlRE9NQ2xhc3NJbmZvX0hUTUxXQlJFbGVtZW50X2lkLAoKCiAgZURPTUNsYXNzSW5mb19DU1NT
dHlsZVJ1bGVfaWQsCiAgZURPTUNsYXNzSW5mb19DU1NDaGFyc2V0UnVsZV9pZCwKICBlRE9NQ2xh
c3NJbmZvX0NTU0ltcG9ydFJ1bGVfaWQsCiAgZURPTUNsYXNzSW5mb19DU1NNZWRpYVJ1bGVfaWQs
CiAgZURPTUNsYXNzSW5mb19DU1NOYW1lU3BhY2VSdWxlX2lkLAogIGVET01DbGFzc0luZm9fQ1NT
UnVsZUxpc3RfaWQsCiAgZURPTUNsYXNzSW5mb19DU1NHcm91cFJ1bGVSdWxlTGlzdF9pZCwKICBl
RE9NQ2xhc3NJbmZvX01lZGlhTGlzdF9pZCwKICBlRE9NQ2xhc3NJbmZvX1N0eWxlU2hlZXRMaXN0
X2lkLAogIGVET01DbGFzc0luZm9fQ1NTU3R5bGVTaGVldF9pZCwKICBlRE9NQ2xhc3NJbmZvX0NT
U1N0eWxlRGVjbGFyYXRpb25faWQsCiAgZURPTUNsYXNzSW5mb19Db21wdXRlZENTU1N0eWxlRGVj
bGFyYXRpb25faWQsCiAgZURPTUNsYXNzSW5mb19ST0NTU1ByaW1pdGl2ZVZhbHVlX2lkLAoKCiAg
ZURPTUNsYXNzSW5mb19SYW5nZV9pZCwKICBlRE9NQ2xhc3NJbmZvX1NlbGVjdGlvbl9pZCwKCgog
IGVET01DbGFzc0luZm9fWFVMRG9jdW1lbnRfaWQsCiAgZURPTUNsYXNzSW5mb19YVUxFbGVtZW50
X2lkLAogIGVET01DbGFzc0luZm9fWFVMQ29tbWFuZERpc3BhdGNoZXJfaWQsCiAgZURPTUNsYXNz
SW5mb19YVUxOb2RlTGlzdF9pZCwKICBlRE9NQ2xhc3NJbmZvX1hVTE5hbWVkTm9kZU1hcF9pZCwK
ICBlRE9NQ2xhc3NJbmZvX1hVTEF0dHJfaWQsCiAgZURPTUNsYXNzSW5mb19YVUxDb250cm9sbGVy
c19pZCwKICBlRE9NQ2xhc3NJbmZvX0JveE9iamVjdF9pZCwKICBlRE9NQ2xhc3NJbmZvX1RyZWVT
ZWxlY3Rpb25faWQsCiAgZURPTUNsYXNzSW5mb19UcmVlQ29udGVudFZpZXdfaWQsCgoKICBlRE9N
Q2xhc3NJbmZvX0NyeXB0b19pZCwKICBlRE9NQ2xhc3NJbmZvX0NSTUZPYmplY3RfaWQsCiAgZURP
TUNsYXNzSW5mb19Qa2NzMTFfaWQsCiMgMjQwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25z
SURPTUNsYXNzSW5mby5oIgogIGVET01DbGFzc0luZm9fVHJlZVdhbGtlcl9pZCwKCgoKCgoKICBl
RE9NQ2xhc3NJbmZvX0NTU1JlY3RfaWQsCgoKICBlRE9NQ2xhc3NJbmZvX0Nocm9tZVdpbmRvd19p
ZCwKCgogIGVET01DbGFzc0luZm9fQ1NTUkdCQ29sb3JfaWQsCgogIGVET01DbGFzc0luZm9fUmFu
Z2VFeGNlcHRpb25faWQsCgoKCiAgZURPTUNsYXNzSW5mb19DU1NWYWx1ZUxpc3RfaWQsCgoKICBl
RE9NQ2xhc3NJbmZvX0NvbnRlbnRMaXN0X2lkLAoKCiAgZURPTUNsYXNzSW5mb19YTUxTdHlsZXNo
ZWV0UHJvY2Vzc2luZ0luc3RydWN0aW9uX2lkLAoKICBlRE9NQ2xhc3NJbmZvX0ltYWdlRG9jdW1l
bnRfaWQsCgoKICBlRE9NQ2xhc3NJbmZvSURDb3VudAp9OwoKIyAxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUveHBjb25uZWN0L25zSVhQQ1NjcmlwdGFibGUuaCIgMQojIDE0ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUveHBjb25uZWN0L25zSVhQQ1NjcmlwdGFibGUuaCIKIyAxICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUveHBjb25uZWN0L25zSVhQQ29ubmVjdC5oIiAxCiMgMTggIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS94cGNvbm5lY3QvbnNJWFBDb25uZWN0LmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL3hwY29ubmVjdC94cGNjb21wb25lbnRzLmgiIDEKIyAxNCAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL3hwY29ubmVjdC94cGNjb21wb25lbnRzLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3hwY29ubmVjdC94cGNleGNlcHRpb24uaCIgMQojIDE0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
eHBjb25uZWN0L3hwY2V4Y2VwdGlvbi5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNv
bS9uc0lFeGNlcHRpb24uaCIgMQojIDI5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJ
RXhjZXB0aW9uLmgiCmNsYXNzIG5zSVN0YWNrRnJhbWUgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewog
cHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJ
SUQgaWlkID0gezB4OTFkODIxMDUsIDB4N2M2MiwgMHg0ZjhiLCB7IDB4OTcsIDB4NzksIDB4MTUs
IDB4NDIsIDB4NzcsIDB4YzAsIDB4ZWUsIDB4OTAgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRMYW5ndWFnZShQUlVpbnQzMiAqYUxhbmd1YWdlKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldExhbmd1YWdlTmFtZShjaGFyICogKmFMYW5ndWFnZU5hbWUpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RmlsZW5hbWUoY2hhciAqICphRmlsZW5hbWUpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TmFtZShjaGFyICogKmFOYW1lKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldExpbmVOdW1iZXIoUFJJbnQzMiAqYUxpbmVOdW1iZXIpID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0U291cmNlTGluZShjaGFyICogKmFTb3VyY2VMaW5lKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENhbGxlcihuc0lTdGFja0ZyYW1lICogKmFDYWxsZXIp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgVG9TdHJpbmcoY2hhciAqKl9yZXR2YWwpID0gMDsK
Cn07CiMgMTgwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJRXhjZXB0aW9uLmgiCmNs
YXNzIG5zSUV4Y2VwdGlvbiA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRp
YyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhmM2E4
ZDNiNCwgMHhjNDI0LCAweDRlZGMsIHsgMHg4YiwgMHhmNiwgMHg4OSwgMHg3NCwgMHhjOSwgMHg4
MywgMHhiYSwgMHg3OCB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1l
c3NhZ2UoY2hhciAqICphTWVzc2FnZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRSZXN1
bHQobnNyZXN1bHQgKmFSZXN1bHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TmFtZShj
aGFyICogKmFOYW1lKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEZpbGVuYW1lKGNoYXIg
KiAqYUZpbGVuYW1lKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldExpbmVOdW1iZXIoUFJV
aW50MzIgKmFMaW5lTnVtYmVyKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbHVtbk51
bWJlcihQUlVpbnQzMiAqYUNvbHVtbk51bWJlcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRMb2NhdGlvbihuc0lTdGFja0ZyYW1lICogKmFMb2NhdGlvbikgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRJbm5lcihuc0lFeGNlcHRpb24gKiAqYUlubmVyKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldERhdGEobnNJU3VwcG9ydHMgKiAqYURhdGEpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgVG9TdHJpbmcoY2hhciAqKl9yZXR2YWwpID0gMDsKCn07CiMgMTUgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS94cGNvbm5lY3QveHBjZXhjZXB0aW9uLmgiIDIKIyAyOSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL3hwY29ubmVjdC94cGNleGNlcHRpb24uaCIKY2xhc3MgbnNJWFBDRXhjZXB0
aW9uIDogcHVibGljIG5zSUV4Y2VwdGlvbiB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJ
RCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhiMmEzNDAxMCwgMHgzOTgz
LCAweDExZDMsIHsgMHg5OCwgMHg4OCwgMHgwMCwgMHg2MCwgMHgwOCwgMHg5NiwgMHgyNCwgMHgy
MiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEluaXRpYWxpemUoY29uc3Qg
Y2hhciAqYU1lc3NhZ2UsIG5zcmVzdWx0IGFSZXN1bHQsIGNvbnN0IGNoYXIgKmFOYW1lLCBuc0lT
dGFja0ZyYW1lICphTG9jYXRpb24sIG5zSVN1cHBvcnRzICphRGF0YSwgbnNJRXhjZXB0aW9uICph
SW5uZXIpID0gMDsKCn07CiMgMTUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbm5lY3QveHBj
Y29tcG9uZW50cy5oIiAyCgoKCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29ubmVjdC94
cGNqc2lkLmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29ubmVjdC94cGNqc2lk
LmgiCmNsYXNzIG5zSUpTSUQgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0
aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4Yzg2
YWUxMzEsIDB4ZDEwMSwgMHgxMWQyLCB7IDB4OTgsIDB4NDEsIDB4MDAsIDB4NjAsIDB4MDgsIDB4
OTYsIDB4MjQsIDB4MjIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRO
YW1lKGNoYXIgKiAqYU5hbWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TnVtYmVyKGNo
YXIgKiAqYU51bWJlcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRJZChuc0lEICogKmFJ
ZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRWYWxpZChQUkJvb2wgKmFWYWxpZCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBFcXVhbHMobnNJSlNJRCAqb3RoZXIsIFBSQm9vbCAqX3Jl
dHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJbml0aWFsaXplKGNvbnN0IGNoYXIgKmlk
U3RyaW5nKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFRvU3RyaW5nKGNoYXIgKipfcmV0dmFs
KSA9IDA7Cgp9OwojIDE2NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29ubmVjdC94cGNqc2lk
LmgiCmNsYXNzIG5zSUpTSUlEIDogcHVibGljIG5zSUpTSUQgewogcHVibGljOgoKICBzdGF0aWMg
Y29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4ZTA4ZGNk
YTAsIDB4ZDY1MSwgMHgxMWQyLCB7IDB4OTgsIDB4NDMsIDB4MDAsIDB4NjAsIDB4MDgsIDB4OTYs
IDB4MjQsIDB4MjIgfX07IHJldHVybiBpaWQ7fQoKfTsKIyAyMjIgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS94cGNvbm5lY3QveHBjanNpZC5oIgpjbGFzcyBuc0lKU0NJRCA6IHB1YmxpYyBuc0lKU0lE
IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0
IG5zSUlEIGlpZCA9IHsweGUzYTI0YTYwLCAweGQ2NTEsIDB4MTFkMiwgeyAweDk4LCAweDQzLCAw
eDAwLCAweDYwLCAweDA4LCAweDk2LCAweDI0LCAweDIyIH19OyByZXR1cm4gaWlkO30KCgogIHZp
cnR1YWwgbnNyZXN1bHQgQ3JlYXRlSW5zdGFuY2UobnNJU3VwcG9ydHMgKipfcmV0dmFsKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNlcnZpY2UobnNJU3VwcG9ydHMgKipfcmV0dmFsKSA9
IDA7Cgp9OwojIDE5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb25uZWN0L3hwY2NvbXBvbmVu
dHMuaCIgMgoKCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb21wb25lbnRN
YW5hZ2VyLmgiIDEKIyAxNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUNvbXBvbmVu
dE1hbmFnZXIuaCIKY2xhc3MgbnNJRmFjdG9yeTsKIyAyNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3hwY29tL25zSUNvbXBvbmVudE1hbmFnZXIuaCIKY2xhc3MgbnNJQ29tcG9uZW50TWFuYWdlciA6
IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0
SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhODhlNWE2MCwgMHgyMDVhLCAweDRi
YjEsIHsgMHg5NCwgMHhlMSwgMHgyNiwgMHgyOCwgMHhkYSwgMHhmNSwgMHgxZSwgMHhhZSB9fTsg
cmV0dXJuIGlpZDt9CiMgNDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb21wb25l
bnRNYW5hZ2VyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDbGFzc09iamVjdChjb25zdCBuc0NJ
RCAmIGFDbGFzcywgY29uc3QgbnNJSUQgJiBhSUlELCB2b2lkICogKnJlc3VsdCkgPSAwOwojIDUy
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJQ29tcG9uZW50TWFuYWdlci5oIgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0Q2xhc3NPYmplY3RCeUNvbnRyYWN0SUQoY29uc3QgY2hhciAqYUNv
bnRyYWN0SUQsIGNvbnN0IG5zSUlEICYgYUlJRCwgdm9pZCAqICpyZXN1bHQpID0gMDsKIyA2NCAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUNvbXBvbmVudE1hbmFnZXIuaCIKICB2aXJ0
dWFsIG5zcmVzdWx0IENyZWF0ZUluc3RhbmNlKGNvbnN0IG5zQ0lEICYgYUNsYXNzLCBuc0lTdXBw
b3J0cyAqYURlbGVnYXRlLCBjb25zdCBuc0lJRCAmIGFJSUQsIHZvaWQgKiAqcmVzdWx0KSA9IDA7
CiMgNzcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb21wb25lbnRNYW5hZ2VyLmgi
CiAgdmlydHVhbCBuc3Jlc3VsdCBDcmVhdGVJbnN0YW5jZUJ5Q29udHJhY3RJRChjb25zdCBjaGFy
ICphQ29udHJhY3RJRCwgbnNJU3VwcG9ydHMgKmFEZWxlZ2F0ZSwgY29uc3QgbnNJSUQgJiBhSUlE
LCB2b2lkICogKnJlc3VsdCkgPSAwOwoKfTsKIyAxNTggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94
cGNvbS9uc0lDb21wb25lbnRNYW5hZ2VyLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29tL25zQ29tcG9uZW50TWFuYWdlclV0aWxzLmgiIDEKIyAyOCAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL3hwY29tL25zQ29tcG9uZW50TWFuYWdlclV0aWxzLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL3hwY29tL25zQ09NUHRyLmgiIDEKIyAxMjIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94
cGNvbS9uc0NPTVB0ci5oIgogIHR5cGVkZWYgUFJCb29sIE5TQ0FQX0JPT0w7CiMgMTc0ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNDT01QdHIuaCIKdGVtcGxhdGUgPGNsYXNzIFQ+CmNs
YXNzIG5zRGVyaXZlZFNhZmUgOiBwdWJsaWMgVAojIDE4NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3hwY29tL25zQ09NUHRyLmgiCiAgewogICAgcHJpdmF0ZToKCiAgICAgIHVzaW5nIFQ6OkFkZFJl
ZjsKICAgICAgdXNpbmcgVDo6UmVsZWFzZTsKCgoKCgoKICAgICAgdm9pZCBvcGVyYXRvciBkZWxl
dGUoIHZvaWQqLCBzaXplX3QgKTsKCgoKICAgICAgbnNEZXJpdmVkU2FmZTxUPiYgb3BlcmF0b3I9
KCBjb25zdCBUJiApOwojIDIwOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zQ09NUHRy
LmgiCiAgfTsKIyAyMzAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0NPTVB0ci5oIgp0
ZW1wbGF0ZSA8Y2xhc3MgVD4Kc3RydWN0IGFscmVhZHlfQWRkUmVmZWQKIyAyNDcgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS94cGNvbS9uc0NPTVB0ci5oIgogIHsKICAgIGFscmVhZHlfQWRkUmVmZWQo
IFQqIGFSYXdQdHIgKQogICAgICAgIDogbVJhd1B0cihhUmF3UHRyKQogICAgICB7CgogICAgICB9
CgogICAgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4gbVJhd1B0cjsgfQoKICAgIFQqIG1SYXdQdHI7
CiAgfTsKCnRlbXBsYXRlIDxjbGFzcyBUPgppbmxpbmUKY29uc3QgYWxyZWFkeV9BZGRSZWZlZDxU
PgpnZXR0ZXJfQWRkUmVmcyggVCogYVJhd1B0ciApCgoKCgogIHsKICAgIHJldHVybiBhbHJlYWR5
X0FkZFJlZmVkPFQ+KGFSYXdQdHIpOwogIH0KCnRlbXBsYXRlIDxjbGFzcyBUPgppbmxpbmUKY29u
c3QgYWxyZWFkeV9BZGRSZWZlZDxUPgpnZXR0ZXJfQWRkUmVmcyggY29uc3QgYWxyZWFkeV9BZGRS
ZWZlZDxUPiYgYUFscmVhZHlBZGRSZWZlZFB0ciApCiAgewogICAgcmV0dXJuIGFBbHJlYWR5QWRk
UmVmZWRQdHI7CiAgfQoKdGVtcGxhdGUgPGNsYXNzIFQ+CmlubGluZQpjb25zdCBhbHJlYWR5X0Fk
ZFJlZmVkPFQ+CmRvbnRfQWRkUmVmKCBUKiBhUmF3UHRyICkKICB7CiAgICByZXR1cm4gYWxyZWFk
eV9BZGRSZWZlZDxUPihhUmF3UHRyKTsKICB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgVD4KaW5saW5lCmNv
bnN0IGFscmVhZHlfQWRkUmVmZWQ8VD4KZG9udF9BZGRSZWYoIGNvbnN0IGFscmVhZHlfQWRkUmVm
ZWQ8VD4gYUFscmVhZHlBZGRSZWZlZFB0ciApCiAgewogICAgcmV0dXJuIGFBbHJlYWR5QWRkUmVm
ZWRQdHI7CiAgfQojIDMwNiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zQ09NUHRyLmgi
CnRlbXBsYXRlIDxjbGFzcyBUPgppbmxpbmUKVCoKZG9udF9RdWVyeUludGVyZmFjZSggVCogZXhw
ciApCiAgewogICAgcmV0dXJuIGV4cHI7CiAgfQoKCgpjbGFzcyBuc0NPTVB0cl9oZWxwZXIKIyAz
MzIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0NPTVB0ci5oIgogIHsKICAgIHB1Ymxp
YzoKICAgICAgdmlydHVhbCBuc3Jlc3VsdCBvcGVyYXRvcigpKCBjb25zdCBuc0lJRCYsIHZvaWQq
KiApIGNvbnN0ID0gMDsKICB9OwoKY2xhc3MgbnNRdWVyeUludGVyZmFjZSA6IHB1YmxpYyBuc0NP
TVB0cl9oZWxwZXIKICB7CiAgICBwdWJsaWM6CiAgICAgIG5zUXVlcnlJbnRlcmZhY2UoIG5zSVN1
cHBvcnRzKiBhUmF3UHRyLCBuc3Jlc3VsdCogZXJyb3IgKQogICAgICAgICAgOiBtUmF3UHRyKGFS
YXdQdHIpLAogICAgICAgICAgICBtRXJyb3JQdHIoZXJyb3IpCiAgICAgICAgewoKICAgICAgICB9
CgogICAgICB2aXJ0dWFsIG5zcmVzdWx0IG9wZXJhdG9yKCkoIGNvbnN0IG5zSUlEJiBhSUlELCB2
b2lkKiogKSBjb25zdDsKCiAgICBwcml2YXRlOgogICAgICBuc0lTdXBwb3J0cyogbVJhd1B0cjsK
ICAgICAgbnNyZXN1bHQqIG1FcnJvclB0cjsKICB9OwoKaW5saW5lCmNvbnN0IG5zUXVlcnlJbnRl
cmZhY2UKZG9fUXVlcnlJbnRlcmZhY2UoIG5zSVN1cHBvcnRzKiBhUmF3UHRyLCBuc3Jlc3VsdCog
ZXJyb3IgPSAwICkKICB7CiAgICByZXR1cm4gbnNRdWVyeUludGVyZmFjZShhUmF3UHRyLCBlcnJv
cik7CiAgfQoKdGVtcGxhdGUgPGNsYXNzIFQ+CmlubGluZQp2b2lkCmRvX1F1ZXJ5SW50ZXJmYWNl
KCBhbHJlYWR5X0FkZFJlZmVkPFQ+JiApCiAgewoKCgogIH0KCnRlbXBsYXRlIDxjbGFzcyBUPgpp
bmxpbmUKdm9pZApkb19RdWVyeUludGVyZmFjZSggYWxyZWFkeV9BZGRSZWZlZDxUPiYsIG5zcmVz
dWx0KiApCiAgewoKCgogIH0KCgoKY2xhc3MgbnNDT01QdHJfYmFzZQojIDM5NiAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL3hwY29tL25zQ09NUHRyLmgiCiAgewogICAgcHVibGljOgoKICAgICAgbnND
T01QdHJfYmFzZSggbnNJU3VwcG9ydHMqIHJhd1B0ciA9IDAgKQogICAgICAgICAgOiBtUmF3UHRy
KHJhd1B0cikKICAgICAgICB7CgogICAgICAgIH0KCgogICAgICB+bnNDT01QdHJfYmFzZSgpOwoK
CgoKCgogICAgICB2b2lkIGFzc2lnbl93aXRoX0FkZFJlZiggbnNJU3VwcG9ydHMqICk7CiAgICAg
IHZvaWQgYXNzaWduX2Zyb21faGVscGVyKCBjb25zdCBuc0NPTVB0cl9oZWxwZXImLCBjb25zdCBu
c0lJRCYgKTsKICAgICAgdm9pZCoqIGJlZ2luX2Fzc2lnbm1lbnQoKTsKCiAgICBwcm90ZWN0ZWQ6
CiAgICAgIG5zSVN1cHBvcnRzKiBtUmF3UHRyOwoKICAgICAgdm9pZAogICAgICBhc3NpZ25fYXNz
dW1pbmdfQWRkUmVmKCBuc0lTdXBwb3J0cyogbmV3UHRyICkKICAgICAgICB7CiMgNDMxICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNDT01QdHIuaCIKICAgICAgICAgIG5zSVN1cHBvcnRz
KiBvbGRQdHIgPSBtUmF3UHRyOwogICAgICAgICAgbVJhd1B0ciA9IG5ld1B0cjsKICAgICAgICAg
IDs7CiAgICAgICAgICBpZiAoIG9sZFB0ciApCiAgICAgICAgICAgIChvbGRQdHIpLT5SZWxlYXNl
KCk7CiAgICAgICAgfQogIH07CgoKCnRlbXBsYXRlIDxjbGFzcyBUPgpjbGFzcyBuc0NPTVB0cgoK
ICAgIDogcHJpdmF0ZSBuc0NPTVB0cl9iYXNlCgogIHsKICAgIGVudW0geyBfZm9yY2VfZXZlbl9j
b21wbGlhbnRfY29tcGlsZXJzX3RvX2ZhaWxfID0gc2l6ZW9mKFQpIH07CiMgNDgzICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUveHBjb20vbnNDT01QdHIuaCIKICAgIHB1YmxpYzoKICAgICAgdHlwZWRl
ZiBUIGVsZW1lbnRfdHlwZTsKIyA1MTMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0NP
TVB0ci5oIgogICAgICBuc0NPTVB0cigpCiAgICAgICAgICAgIDogbnNDT01QdHJfYmFzZSgwKQoK
ICAgICAgICB7CiAgICAgICAgICA7OwogICAgICAgIH0KCiAgICAgIG5zQ09NUHRyKCBjb25zdCBu
c0NPTVB0cjxUPiYgYVNtYXJ0UHRyICkKICAgICAgICAgICAgOiBuc0NPTVB0cl9iYXNlKGFTbWFy
dFB0ci5tUmF3UHRyKQoKICAgICAgICB7CiAgICAgICAgICBpZiAoIG1SYXdQdHIgKQogICAgICAg
ICAgICAobVJhd1B0ciktPkFkZFJlZigpOwogICAgICAgICAgOzsKICAgICAgICB9CgogICAgICBu
c0NPTVB0ciggVCogYVJhd1B0ciApCiAgICAgICAgICAgIDogbnNDT01QdHJfYmFzZShhUmF3UHRy
KQoKICAgICAgICB7CiAgICAgICAgICBpZiAoIG1SYXdQdHIgKQogICAgICAgICAgICAobVJhd1B0
ciktPkFkZFJlZigpOwogICAgICAgICAgOzsKICAgICAgICAgIDsKICAgICAgICB9CgogICAgICBu
c0NPTVB0ciggY29uc3QgYWxyZWFkeV9BZGRSZWZlZDxUPiYgYVNtYXJ0UHRyICkKICAgICAgICAg
ICAgOiBuc0NPTVB0cl9iYXNlKGFTbWFydFB0ci5tUmF3UHRyKQoKICAgICAgICB7CiAgICAgICAg
ICA7OwogICAgICAgICAgOwogICAgICAgIH0KCiAgICAgIG5zQ09NUHRyKCBjb25zdCBuc0NPTVB0
cl9oZWxwZXImIGhlbHBlciApCiAgICAgICAgICAgIDogbnNDT01QdHJfYmFzZSgwKQoKCiAgICAg
ICAgewogICAgICAgICAgOzsKICAgICAgICAgIGFzc2lnbl9mcm9tX2hlbHBlcihoZWxwZXIsIG5z
Q09NVHlwZUluZm88VD46OkdldElJRCgpKTsKICAgICAgICAgIDsKICAgICAgICB9CiMgNTcyICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNDT01QdHIuaCIKICAgICAgbnNDT01QdHI8VD4m
CiAgICAgIG9wZXJhdG9yPSggY29uc3QgbnNDT01QdHI8VD4mIHJocyApCgogICAgICAgIHsKICAg
ICAgICAgIGFzc2lnbl93aXRoX0FkZFJlZihyaHMubVJhd1B0cik7CiAgICAgICAgICByZXR1cm4g
KnRoaXM7CiAgICAgICAgfQoKICAgICAgbnNDT01QdHI8VD4mCiAgICAgIG9wZXJhdG9yPSggVCog
cmhzICkKCiAgICAgICAgewogICAgICAgICAgYXNzaWduX3dpdGhfQWRkUmVmKHJocyk7CiAgICAg
ICAgICA7CiAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgfQoKICAgICAgbnNDT01QdHI8
VD4mCiAgICAgIG9wZXJhdG9yPSggY29uc3QgYWxyZWFkeV9BZGRSZWZlZDxUPiYgcmhzICkKCiAg
ICAgICAgewogICAgICAgICAgYXNzaWduX2Fzc3VtaW5nX0FkZFJlZihyaHMubVJhd1B0cik7CiAg
ICAgICAgICA7CiAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgfQoKICAgICAgbnNDT01Q
dHI8VD4mCiAgICAgIG9wZXJhdG9yPSggY29uc3QgbnNDT01QdHJfaGVscGVyJiByaHMgKQoKCiAg
ICAgICAgewogICAgICAgICAgYXNzaWduX2Zyb21faGVscGVyKHJocywgbnNDT01UeXBlSW5mbzxU
Pjo6R2V0SUlEKCkpOwogICAgICAgICAgOwogICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgICAg
IH0KIyA2MjMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0NPTVB0ci5oIgogICAgICBu
c0Rlcml2ZWRTYWZlPFQ+KgogICAgICBnZXQoKSBjb25zdAoKCgoKCgogICAgICAgIHsKICAgICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PCBuc0Rlcml2ZWRTYWZlPFQ+KiA+KG1SYXdQdHIp
OwogICAgICAgIH0KCiAgICAgIG9wZXJhdG9yIG5zRGVyaXZlZFNhZmU8VD4qKCkgY29uc3QKCgoK
CgoKCiAgICAgICAgewogICAgICAgICAgcmV0dXJuIGdldCgpOwogICAgICAgIH0KCiAgICAgIG5z
RGVyaXZlZFNhZmU8VD4qCiAgICAgIG9wZXJhdG9yLT4oKSBjb25zdAogICAgICAgIHsKICAgICAg
ICAgIDsKICAgICAgICAgIHJldHVybiBnZXQoKTsKICAgICAgICB9CiMgNjY3ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUveHBjb20vbnNDT01QdHIuaCIKICAgICAgbnNDT01QdHI8VD4qCiAgICAgIGdl
dF9hZGRyZXNzKCkKCgogICAgICAgIHsKICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgIH0K
CiAgICAgIGNvbnN0IG5zQ09NUHRyPFQ+KgogICAgICBnZXRfYWRkcmVzcygpIGNvbnN0CgoKICAg
ICAgICB7CiAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICB9CgoKCiAgICBwdWJsaWM6CiAg
ICAgIG5zRGVyaXZlZFNhZmU8VD4mCiAgICAgIG9wZXJhdG9yKigpIGNvbnN0CiAgICAgICAgewog
ICAgICAgICAgOwogICAgICAgICAgcmV0dXJuICpnZXQoKTsKICAgICAgICB9CgoKCgoKCiAgICAg
IFQqKgogICAgICBTdGFydEFzc2lnbm1lbnQoKQogICAgICAgIHsKCiAgICAgICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDwgVCoqID4oYmVnaW5fYXNzaWdubWVudCgpKTsKCgoKCiAgICAgICAg
fQogIH07CiMgNzIxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNDT01QdHIuaCIKdGVt
cGxhdGUgPD4KY2xhc3MgbnNDT01QdHI8bnNJU3VwcG9ydHM+CiAgICA6IHByaXZhdGUgbnNDT01Q
dHJfYmFzZQogIHsKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBuc0lTdXBwb3J0cyBlbGVtZW50
X3R5cGU7CiMgNzM5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNDT01QdHIuaCIKICAg
ICAgbnNDT01QdHIoKQogICAgICAgICAgICA6IG5zQ09NUHRyX2Jhc2UoMCkKCiAgICAgICAgewog
ICAgICAgICAgOzsKICAgICAgICB9CgogICAgICBuc0NPTVB0ciggY29uc3QgbnNDT01QdHI8bnNJ
U3VwcG9ydHM+JiBhU21hcnRQdHIgKQogICAgICAgICAgICA6IG5zQ09NUHRyX2Jhc2UoYVNtYXJ0
UHRyLm1SYXdQdHIpCgogICAgICAgIHsKICAgICAgICAgIGlmICggbVJhd1B0ciApCiAgICAgICAg
ICAgIChtUmF3UHRyKS0+QWRkUmVmKCk7CiAgICAgICAgICA7OwogICAgICAgIH0KCiAgICAgIG5z
Q09NUHRyKCBuc0lTdXBwb3J0cyogYVJhd1B0ciApCiAgICAgICAgICAgIDogbnNDT01QdHJfYmFz
ZShhUmF3UHRyKQoKICAgICAgICB7CiAgICAgICAgICBpZiAoIG1SYXdQdHIgKQogICAgICAgICAg
ICAobVJhd1B0ciktPkFkZFJlZigpOwogICAgICAgICAgOzsKICAgICAgICB9CgogICAgICBuc0NP
TVB0ciggY29uc3QgYWxyZWFkeV9BZGRSZWZlZDxuc0lTdXBwb3J0cz4mIGFTbWFydFB0ciApCiAg
ICAgICAgICAgIDogbnNDT01QdHJfYmFzZShhU21hcnRQdHIubVJhd1B0cikKCiAgICAgICAgewog
ICAgICAgICAgOzsKICAgICAgICB9CgogICAgICBuc0NPTVB0ciggY29uc3QgbnNDT01QdHJfaGVs
cGVyJiBoZWxwZXIgKQogICAgICAgICAgICA6IG5zQ09NUHRyX2Jhc2UoMCkKCgogICAgICAgIHsK
ICAgICAgICAgIDs7CiAgICAgICAgICBhc3NpZ25fZnJvbV9oZWxwZXIoaGVscGVyLCBuc0NPTVR5
cGVJbmZvPG5zSVN1cHBvcnRzPjo6R2V0SUlEKCkpOwogICAgICAgIH0KCgoKCiAgICAgIG5zQ09N
UHRyPG5zSVN1cHBvcnRzPiYKICAgICAgb3BlcmF0b3I9KCBjb25zdCBuc0NPTVB0cjxuc0lTdXBw
b3J0cz4mIHJocyApCgogICAgICAgIHsKICAgICAgICAgIGFzc2lnbl93aXRoX0FkZFJlZihyaHMu
bVJhd1B0cik7CiAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgfQoKICAgICAgbnNDT01Q
dHI8bnNJU3VwcG9ydHM+JgogICAgICBvcGVyYXRvcj0oIG5zSVN1cHBvcnRzKiByaHMgKQoKICAg
ICAgICB7CiAgICAgICAgICBhc3NpZ25fd2l0aF9BZGRSZWYocmhzKTsKICAgICAgICAgIHJldHVy
biAqdGhpczsKICAgICAgICB9CgogICAgICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4mCiAgICAgIG9w
ZXJhdG9yPSggY29uc3QgYWxyZWFkeV9BZGRSZWZlZDxuc0lTdXBwb3J0cz4mIHJocyApCgogICAg
ICAgIHsKICAgICAgICAgIGFzc2lnbl9hc3N1bWluZ19BZGRSZWYocmhzLm1SYXdQdHIpOwogICAg
ICAgICAgcmV0dXJuICp0aGlzOwogICAgICAgIH0KCiAgICAgIG5zQ09NUHRyPG5zSVN1cHBvcnRz
PiYKICAgICAgb3BlcmF0b3I9KCBjb25zdCBuc0NPTVB0cl9oZWxwZXImIHJocyApCgoKICAgICAg
ICB7CiAgICAgICAgICBhc3NpZ25fZnJvbV9oZWxwZXIocmhzLCBuc0NPTVR5cGVJbmZvPG5zSVN1
cHBvcnRzPjo6R2V0SUlEKCkpOwogICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgICAgIH0KCgoK
CiAgICAgIG5zRGVyaXZlZFNhZmU8bnNJU3VwcG9ydHM+KgogICAgICBnZXQoKSBjb25zdAoKCgoK
CgogICAgICAgIHsKICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PCBuc0Rlcml2ZWRT
YWZlPG5zSVN1cHBvcnRzPiogPihtUmF3UHRyKTsKICAgICAgICB9CgogICAgICBvcGVyYXRvciBu
c0Rlcml2ZWRTYWZlPG5zSVN1cHBvcnRzPiooKSBjb25zdAoKCgoKCgoKICAgICAgICB7CiAgICAg
ICAgICByZXR1cm4gZ2V0KCk7CiAgICAgICAgfQoKICAgICAgbnNEZXJpdmVkU2FmZTxuc0lTdXBw
b3J0cz4qCiAgICAgIG9wZXJhdG9yLT4oKSBjb25zdAogICAgICAgIHsKICAgICAgICAgIDsKICAg
ICAgICAgIHJldHVybiBnZXQoKTsKICAgICAgICB9CiMgODYzICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUveHBjb20vbnNDT01QdHIuaCIKICAgICAgbnNDT01QdHI8bnNJU3VwcG9ydHM+KgogICAgICBn
ZXRfYWRkcmVzcygpCgoKICAgICAgICB7CiAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICB9
CgogICAgICBjb25zdCBuc0NPTVB0cjxuc0lTdXBwb3J0cz4qCiAgICAgIGdldF9hZGRyZXNzKCkg
Y29uc3QKCgogICAgICAgIHsKICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgIH0KCgoKICAg
IHB1YmxpYzoKCiAgICAgIG5zRGVyaXZlZFNhZmU8bnNJU3VwcG9ydHM+JgogICAgICBvcGVyYXRv
ciooKSBjb25zdAogICAgICAgIHsKICAgICAgICAgIDsKICAgICAgICAgIHJldHVybiAqZ2V0KCk7
CiAgICAgICAgfQoKCgoKCgogICAgICBuc0lTdXBwb3J0cyoqCiAgICAgIFN0YXJ0QXNzaWdubWVu
dCgpCiAgICAgICAgewoKICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PCBuc0lTdXBw
b3J0cyoqID4oYmVnaW5fYXNzaWdubWVudCgpKTsKCgoKCiAgICAgICAgfQogIH07CiMgOTUwICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNDT01QdHIuaCIKdGVtcGxhdGUgPGNsYXNzIFQ+
CmlubGluZQpuc0NPTVB0cjxUPioKYWRkcmVzc19vZiggbnNDT01QdHI8VD4mIGFQdHIgKQogIHsK
ICAgIHJldHVybiBhUHRyLmdldF9hZGRyZXNzKCk7CiAgfQoKdGVtcGxhdGUgPGNsYXNzIFQ+Cmlu
bGluZQpjb25zdCBuc0NPTVB0cjxUPioKYWRkcmVzc19vZiggY29uc3QgbnNDT01QdHI8VD4mIGFQ
dHIgKQogIHsKICAgIHJldHVybiBhUHRyLmdldF9hZGRyZXNzKCk7CiAgfQoKCgp0ZW1wbGF0ZSA8
Y2xhc3MgVD4KY2xhc3MgbnNHZXR0ZXJBZGRSZWZzCiMgOTg3ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUveHBjb20vbnNDT01QdHIuaCIKICB7CiAgICBwdWJsaWM6CiAgICAgIGV4cGxpY2l0CiAgICAg
IG5zR2V0dGVyQWRkUmVmcyggbnNDT01QdHI8VD4mIGFTbWFydFB0ciApCiAgICAgICAgICA6IG1U
YXJnZXRTbWFydFB0cihhU21hcnRQdHIpCiAgICAgICAgewoKICAgICAgICB9CiMgMTAwOSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zQ09NUHRyLmgiCiAgICAgIG9wZXJhdG9yIHZvaWQq
KigpCiAgICAgICAgewogICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8IHZvaWQqKiA+
KG1UYXJnZXRTbWFydFB0ci5TdGFydEFzc2lnbm1lbnQoKSk7CiAgICAgICAgfQoKICAgICAgb3Bl
cmF0b3IgbnNJU3VwcG9ydHMqKigpCiAgICAgICAgewogICAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8IG5zSVN1cHBvcnRzKiogPihtVGFyZ2V0U21hcnRQdHIuU3RhcnRBc3NpZ25tZW50
KCkpOwogICAgICAgIH0KCiAgICAgIG9wZXJhdG9yIFQqKigpCiAgICAgICAgewogICAgICAgICAg
cmV0dXJuIG1UYXJnZXRTbWFydFB0ci5TdGFydEFzc2lnbm1lbnQoKTsKICAgICAgICB9CgogICAg
ICBUKiYKICAgICAgb3BlcmF0b3IqKCkKICAgICAgICB7CiAgICAgICAgICByZXR1cm4gKihtVGFy
Z2V0U21hcnRQdHIuU3RhcnRBc3NpZ25tZW50KCkpOwogICAgICAgIH0KCiAgICBwcml2YXRlOgog
ICAgICBuc0NPTVB0cjxUPiYgbVRhcmdldFNtYXJ0UHRyOwogIH07CgoKdGVtcGxhdGUgPD4KY2xh
c3MgbnNHZXR0ZXJBZGRSZWZzPG5zSVN1cHBvcnRzPgogIHsKICAgIHB1YmxpYzoKICAgICAgZXhw
bGljaXQKICAgICAgbnNHZXR0ZXJBZGRSZWZzKCBuc0NPTVB0cjxuc0lTdXBwb3J0cz4mIGFTbWFy
dFB0ciApCiAgICAgICAgICA6IG1UYXJnZXRTbWFydFB0cihhU21hcnRQdHIpCiAgICAgICAgewoK
ICAgICAgICB9CiMgMTA1MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zQ09NUHRyLmgi
CiAgICAgIG9wZXJhdG9yIHZvaWQqKigpCiAgICAgICAgewogICAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8IHZvaWQqKiA+KG1UYXJnZXRTbWFydFB0ci5TdGFydEFzc2lnbm1lbnQoKSk7
CiAgICAgICAgfQoKICAgICAgb3BlcmF0b3IgbnNJU3VwcG9ydHMqKigpCiAgICAgICAgewogICAg
ICAgICAgcmV0dXJuIG1UYXJnZXRTbWFydFB0ci5TdGFydEFzc2lnbm1lbnQoKTsKICAgICAgICB9
CgogICAgICBuc0lTdXBwb3J0cyomCiAgICAgIG9wZXJhdG9yKigpCiAgICAgICAgewogICAgICAg
ICAgcmV0dXJuICoobVRhcmdldFNtYXJ0UHRyLlN0YXJ0QXNzaWdubWVudCgpKTsKICAgICAgICB9
CgogICAgcHJpdmF0ZToKICAgICAgbnNDT01QdHI8bnNJU3VwcG9ydHM+JiBtVGFyZ2V0U21hcnRQ
dHI7CiAgfTsKCgp0ZW1wbGF0ZSA8Y2xhc3MgVD4KaW5saW5lCm5zR2V0dGVyQWRkUmVmczxUPgpn
ZXR0ZXJfQWRkUmVmcyggbnNDT01QdHI8VD4mIGFTbWFydFB0ciApCgoKCgogIHsKICAgIHJldHVy
biBuc0dldHRlckFkZFJlZnM8VD4oYVNtYXJ0UHRyKTsKICB9CgoKCgoKdGVtcGxhdGUgPGNsYXNz
IFQsIGNsYXNzIFU+CmlubGluZQpOU0NBUF9CT09MCm9wZXJhdG9yPT0oIGNvbnN0IG5zQ09NUHRy
PFQ+JiBsaHMsIGNvbnN0IG5zQ09NUHRyPFU+JiByaHMgKQogIHsKICAgIHJldHVybiBzdGF0aWNf
Y2FzdDwgY29uc3Qgdm9pZCogPihsaHMuZ2V0KCkpID09IHN0YXRpY19jYXN0PCBjb25zdCB2b2lk
KiA+KHJocy5nZXQoKSk7CiAgfQoKCnRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgppbmxpbmUK
TlNDQVBfQk9PTApvcGVyYXRvciE9KCBjb25zdCBuc0NPTVB0cjxUPiYgbGhzLCBjb25zdCBuc0NP
TVB0cjxVPiYgcmhzICkKICB7CiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8IGNvbnN0IHZvaWQqID4o
bGhzLmdldCgpKSAhPSBzdGF0aWNfY2FzdDwgY29uc3Qgdm9pZCogPihyaHMuZ2V0KCkpOwogIH0K
CgoKCnRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgppbmxpbmUKTlNDQVBfQk9PTApvcGVyYXRv
cj09KCBjb25zdCBuc0NPTVB0cjxUPiYgbGhzLCBjb25zdCBVKiByaHMgKQogIHsKICAgIHJldHVy
biBzdGF0aWNfY2FzdDwgY29uc3Qgdm9pZCogPihsaHMuZ2V0KCkpID09IHN0YXRpY19jYXN0PCBj
b25zdCB2b2lkKiA+KHJocyk7CiAgfQoKdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+CmlubGlu
ZQpOU0NBUF9CT09MCm9wZXJhdG9yPT0oIGNvbnN0IFUqIGxocywgY29uc3QgbnNDT01QdHI8VD4m
IHJocyApCiAgewogICAgcmV0dXJuIHN0YXRpY19jYXN0PCBjb25zdCB2b2lkKiA+KGxocykgPT0g
c3RhdGljX2Nhc3Q8IGNvbnN0IHZvaWQqID4ocmhzLmdldCgpKTsKICB9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgVCwgY2xhc3MgVT4KaW5saW5lCk5TQ0FQX0JPT0wKb3BlcmF0b3IhPSggY29uc3QgbnNDT01Q
dHI8VD4mIGxocywgY29uc3QgVSogcmhzICkKICB7CiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8IGNv
bnN0IHZvaWQqID4obGhzLmdldCgpKSAhPSBzdGF0aWNfY2FzdDwgY29uc3Qgdm9pZCogPihyaHMp
OwogIH0KCnRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgppbmxpbmUKTlNDQVBfQk9PTApvcGVy
YXRvciE9KCBjb25zdCBVKiBsaHMsIGNvbnN0IG5zQ09NUHRyPFQ+JiByaHMgKQogIHsKICAgIHJl
dHVybiBzdGF0aWNfY2FzdDwgY29uc3Qgdm9pZCogPihsaHMpICE9IHN0YXRpY19jYXN0PCBjb25z
dCB2b2lkKiA+KHJocy5nZXQoKSk7CiAgfQojIDExNTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94
cGNvbS9uc0NPTVB0ci5oIgp0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KaW5saW5lCk5TQ0FQ
X0JPT0wKb3BlcmF0b3I9PSggY29uc3QgbnNDT01QdHI8VD4mIGxocywgVSogcmhzICkKICB7CiAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8IGNvbnN0IHZvaWQqID4obGhzLmdldCgpKSA9PSBzdGF0aWNf
Y2FzdDwgdm9pZCogPihyaHMpOwogIH0KCnRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgppbmxp
bmUKTlNDQVBfQk9PTApvcGVyYXRvcj09KCBVKiBsaHMsIGNvbnN0IG5zQ09NUHRyPFQ+JiByaHMg
KQogIHsKICAgIHJldHVybiBzdGF0aWNfY2FzdDwgdm9pZCogPihsaHMpID09IHN0YXRpY19jYXN0
PCBjb25zdCB2b2lkKiA+KHJocy5nZXQoKSk7CiAgfQoKdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNz
IFU+CmlubGluZQpOU0NBUF9CT09MCm9wZXJhdG9yIT0oIGNvbnN0IG5zQ09NUHRyPFQ+JiBsaHMs
IFUqIHJocyApCiAgewogICAgcmV0dXJuIHN0YXRpY19jYXN0PCBjb25zdCB2b2lkKiA+KGxocy5n
ZXQoKSkgIT0gc3RhdGljX2Nhc3Q8IHZvaWQqID4ocmhzKTsKICB9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
VCwgY2xhc3MgVT4KaW5saW5lCk5TQ0FQX0JPT0wKb3BlcmF0b3IhPSggVSogbGhzLCBjb25zdCBu
c0NPTVB0cjxUPiYgcmhzICkKICB7CiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8IHZvaWQqID4obGhz
KSAhPSBzdGF0aWNfY2FzdDwgY29uc3Qgdm9pZCogPihyaHMuZ2V0KCkpOwogIH0KCgoKCgoKY2xh
c3MgTlNDQVBfWmVybzsKCnRlbXBsYXRlIDxjbGFzcyBUPgppbmxpbmUKTlNDQVBfQk9PTApvcGVy
YXRvcj09KCBjb25zdCBuc0NPTVB0cjxUPiYgbGhzLCBOU0NBUF9aZXJvKiByaHMgKQoKICB7CiAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8IGNvbnN0IHZvaWQqID4obGhzLmdldCgpKSA9PSByZWludGVy
cHJldF9jYXN0PCBjb25zdCB2b2lkKiA+KHJocyk7CiAgfQoKdGVtcGxhdGUgPGNsYXNzIFQ+Cmlu
bGluZQpOU0NBUF9CT09MCm9wZXJhdG9yPT0oIE5TQ0FQX1plcm8qIGxocywgY29uc3QgbnNDT01Q
dHI8VD4mIHJocyApCgogIHsKICAgIHJldHVybiByZWludGVycHJldF9jYXN0PCBjb25zdCB2b2lk
KiA+KGxocykgPT0gc3RhdGljX2Nhc3Q8IGNvbnN0IHZvaWQqID4ocmhzLmdldCgpKTsKICB9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgVD4KaW5saW5lCk5TQ0FQX0JPT0wKb3BlcmF0b3IhPSggY29uc3QgbnND
T01QdHI8VD4mIGxocywgTlNDQVBfWmVybyogcmhzICkKCiAgewogICAgcmV0dXJuIHN0YXRpY19j
YXN0PCBjb25zdCB2b2lkKiA+KGxocy5nZXQoKSkgIT0gcmVpbnRlcnByZXRfY2FzdDwgY29uc3Qg
dm9pZCogPihyaHMpOwogIH0KCnRlbXBsYXRlIDxjbGFzcyBUPgppbmxpbmUKTlNDQVBfQk9PTApv
cGVyYXRvciE9KCBOU0NBUF9aZXJvKiBsaHMsIGNvbnN0IG5zQ09NUHRyPFQ+JiByaHMgKQoKICB7
CiAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDwgY29uc3Qgdm9pZCogPihsaHMpICE9IHN0YXRp
Y19jYXN0PCBjb25zdCB2b2lkKiA+KHJocy5nZXQoKSk7CiAgfQojIDEyNjAgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS94cGNvbS9uc0NPTVB0ci5oIgppbmxpbmUKTlNDQVBfQk9PTApTYW1lQ09NSWRl
bnRpdHkoIG5zSVN1cHBvcnRzKiBsaHMsIG5zSVN1cHBvcnRzKiByaHMgKQogIHsKICAgIHJldHVy
biBuc0NPTVB0cjxuc0lTdXBwb3J0cz4oIGRvX1F1ZXJ5SW50ZXJmYWNlKGxocykgKSA9PSBuc0NP
TVB0cjxuc0lTdXBwb3J0cz4oIGRvX1F1ZXJ5SW50ZXJmYWNlKHJocykgKTsKICB9CgoKCnRlbXBs
YXRlIDxjbGFzcyBTb3VyY2VUeXBlLCBjbGFzcyBEZXN0aW5hdGlvblR5cGU+CmlubGluZQpuc3Jl
c3VsdApDYWxsUXVlcnlJbnRlcmZhY2UoIG5zQ09NUHRyPFNvdXJjZVR5cGU+JiBhU291cmNlUHRy
LCBEZXN0aW5hdGlvblR5cGUqKiBhRGVzdFB0ciApCiAgewogICAgcmV0dXJuIENhbGxRdWVyeUlu
dGVyZmFjZShhU291cmNlUHRyLmdldCgpLCBhRGVzdFB0cik7CiAgfQojIDI5ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUveHBjb20vbnNDb21wb25lbnRNYW5hZ2VyVXRpbHMuaCIgMgoKCgojIDEgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0NvbXBvbmVudE1hbmFnZXJPYnNvbGV0ZS5oIiAx
CiMgNDAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0NvbXBvbmVudE1hbmFnZXJPYnNv
bGV0ZS5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb21wb25lbnRNYW5h
Z2VyLmgiIDEKIyA0MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zQ29tcG9uZW50TWFu
YWdlck9ic29sZXRlLmgiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJQ29t
cG9uZW50TWFuYWdlck9ic29sZXRlLmgiIDEKIyAxNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29tL25zSUNvbXBvbmVudE1hbmFnZXJPYnNvbGV0ZS5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS94cGNvbS9uc0lGYWN0b3J5LmgiIDEKIyAzMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29tL25zSUZhY3RvcnkuaCIKY2xhc3MgbnNJRmFjdG9yeSA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7
CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBu
c0lJRCBpaWQgPSB7MHgwMDAwMDAwMSwgMHgwMDAwLCAweDAwMDAsIHsgMHhjMCwgMHgwMCwgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiB9fTsgcmV0dXJuIGlpZDt9CiMgNTMgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lGYWN0b3J5LmgiCiAgdmlydHVhbCBuc3Jlc3Vs
dCBDcmVhdGVJbnN0YW5jZShuc0lTdXBwb3J0cyAqYU91dGVyLCBjb25zdCBuc0lJRCAmIGlpZCwg
dm9pZCAqICpyZXN1bHQpID0gMDsKIyA2NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25z
SUZhY3RvcnkuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IExvY2tGYWN0b3J5KFBSQm9vbCBsb2NrKSA9
IDA7Cgp9OwojIDE1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJQ29tcG9uZW50TWFu
YWdlck9ic29sZXRlLmgiIDIKCgoKCgoKY2xhc3MgbnNJRmlsZTsKCmNsYXNzIG5zSUVudW1lcmF0
b3I7CiMgMzMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb21wb25lbnRNYW5hZ2Vy
T2Jzb2xldGUuaCIKY2xhc3MgbnNJQ29tcG9uZW50TWFuYWdlck9ic29sZXRlIDogcHVibGljIG5z
SVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3Rh
dGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDg0NThhNzQwLCAweGQ1ZGMsIDB4MTFkMiwgeyAweDky
LCAweGZiLCAweDAwLCAweGUwLCAweDk4LCAweDA1LCAweDU3LCAweDBmIH19OyByZXR1cm4gaWlk
O30KIyA0NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUNvbXBvbmVudE1hbmFnZXJP
YnNvbGV0ZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgRmluZEZhY3RvcnkoY29uc3QgbnNDSUQgJiBh
Q2xhc3MsIG5zSUZhY3RvcnkgKipfcmV0dmFsKSA9IDA7CiMgNTggIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS94cGNvbS9uc0lDb21wb25lbnRNYW5hZ2VyT2Jzb2xldGUuaCIKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldENsYXNzT2JqZWN0KGNvbnN0IG5zQ0lEICYgYUNsYXNzLCBjb25zdCBuc0lJRCAmIGFJ
SUQsIHZvaWQgKiAqX3JldHZhbCkgPSAwOwojIDcxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBj
b20vbnNJQ29tcG9uZW50TWFuYWdlck9ic29sZXRlLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBDb250
cmFjdElEVG9DbGFzc0lEKGNvbnN0IGNoYXIgKmFDb250cmFjdElELCBuc0NJRCAqYUNsYXNzKSA9
IDA7CiMgODQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb21wb25lbnRNYW5hZ2Vy
T2Jzb2xldGUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IENMU0lEVG9Db250cmFjdElEKGNvbnN0IG5z
Q0lEICYgYUNsYXNzLCBjaGFyICoqYUNsYXNzTmFtZSwgY2hhciAqKl9yZXR2YWwpID0gMDsKIyA5
NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUNvbXBvbmVudE1hbmFnZXJPYnNvbGV0
ZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgQ3JlYXRlSW5zdGFuY2UoY29uc3QgbnNDSUQgJiBhQ2xh
c3MsIG5zSVN1cHBvcnRzICphRGVsZWdhdGUsIGNvbnN0IG5zSUlEICYgYUlJRCwgdm9pZCAqICpf
cmV0dmFsKSA9IDA7CiMgMTEwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJQ29tcG9u
ZW50TWFuYWdlck9ic29sZXRlLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBDcmVhdGVJbnN0YW5jZUJ5
Q29udHJhY3RJRChjb25zdCBjaGFyICphQ29udHJhY3RJRCwgbnNJU3VwcG9ydHMgKmFEZWxlZ2F0
ZSwgY29uc3QgbnNJSUQgJiBJSUQsIHZvaWQgKiAqX3JldHZhbCkgPSAwOwojIDEyMiAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUNvbXBvbmVudE1hbmFnZXJPYnNvbGV0ZS5oIgogIHZp
cnR1YWwgbnNyZXN1bHQgUmVnaXN0cnlMb2NhdGlvbkZvclNwZWMobnNJRmlsZSAqYVNwZWMsIGNo
YXIgKipfcmV0dmFsKSA9IDA7CiMgMTMxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJ
Q29tcG9uZW50TWFuYWdlck9ic29sZXRlLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBTcGVjRm9yUmVn
aXN0cnlMb2NhdGlvbihjb25zdCBjaGFyICphTG9jYXRpb24sIG5zSUZpbGUgKipfcmV0dmFsKSA9
IDA7CiMgMTQ2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJQ29tcG9uZW50TWFuYWdl
ck9ic29sZXRlLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBSZWdpc3RlckZhY3RvcnkoY29uc3QgbnND
SUQgJiBhQ2xhc3MsIGNvbnN0IGNoYXIgKmFDbGFzc05hbWUsIGNvbnN0IGNoYXIgKmFDb250cmFj
dElELCBuc0lGYWN0b3J5ICphRmFjdG9yeSwgUFJCb29sIGFSZXBsYWNlKSA9IDA7CiMgMTY3ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJQ29tcG9uZW50TWFuYWdlck9ic29sZXRlLmgi
CiAgdmlydHVhbCBuc3Jlc3VsdCBSZWdpc3RlckNvbXBvbmVudChjb25zdCBuc0NJRCAmIGFDbGFz
cywgY29uc3QgY2hhciAqYUNsYXNzTmFtZSwgY29uc3QgY2hhciAqYUNvbnRyYWN0SUQsIGNvbnN0
IGNoYXIgKmFMb2NhdGlvbiwgUFJCb29sIGFSZXBsYWNlLCBQUkJvb2wgYVBlcnNpc3QpID0gMDsK
IyAxODkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb21wb25lbnRNYW5hZ2VyT2Jz
b2xldGUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFJlZ2lzdGVyQ29tcG9uZW50V2l0aFR5cGUoY29u
c3QgbnNDSUQgJiBhQ2xhc3MsIGNvbnN0IGNoYXIgKmFDbGFzc05hbWUsIGNvbnN0IGNoYXIgKmFD
b250cmFjdElELCBuc0lGaWxlICphU3BlYywgY29uc3QgY2hhciAqYUxvY2F0aW9uLCBQUkJvb2wg
YVJlcGxhY2UsIFBSQm9vbCBhUGVyc2lzdCwgY29uc3QgY2hhciAqYVR5cGUpID0gMDsKIyAyMDcg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb21wb25lbnRNYW5hZ2VyT2Jzb2xldGUu
aCIKICB2aXJ0dWFsIG5zcmVzdWx0IFJlZ2lzdGVyQ29tcG9uZW50U3BlYyhjb25zdCBuc0NJRCAm
IGFDbGFzcywgY29uc3QgY2hhciAqYUNsYXNzTmFtZSwgY29uc3QgY2hhciAqYUNvbnRyYWN0SUQs
IG5zSUZpbGUgKmFMaWJyYXJ5LCBQUkJvb2wgYVJlcGxhY2UsIFBSQm9vbCBhUGVyc2lzdCkgPSAw
OwojIDIyNiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUNvbXBvbmVudE1hbmFnZXJP
YnNvbGV0ZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgUmVnaXN0ZXJDb21wb25lbnRMaWIoY29uc3Qg
bnNDSUQgJiBhQ2xhc3MsIGNvbnN0IGNoYXIgKmFDbGFzc05hbWUsIGNvbnN0IGNoYXIgKmFDb250
cmFjdElELCBjb25zdCBjaGFyICphRGxsTmFtZSwgUFJCb29sIGFSZXBsYWNlLCBQUkJvb2wgYVBl
cnNpc3QpID0gMDsKIyAyMzggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb21wb25l
bnRNYW5hZ2VyT2Jzb2xldGUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFVucmVnaXN0ZXJGYWN0b3J5
KGNvbnN0IG5zQ0lEICYgYUNsYXNzLCBuc0lGYWN0b3J5ICphRmFjdG9yeSkgPSAwOwojIDI1MiAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUNvbXBvbmVudE1hbmFnZXJPYnNvbGV0ZS5o
IgogIHZpcnR1YWwgbnNyZXN1bHQgVW5yZWdpc3RlckNvbXBvbmVudChjb25zdCBuc0NJRCAmIGFD
bGFzcywgY29uc3QgY2hhciAqYUxvY2F0aW9uKSA9IDA7CiMgMjYxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUveHBjb20vbnNJQ29tcG9uZW50TWFuYWdlck9ic29sZXRlLmgiCiAgdmlydHVhbCBuc3Jl
c3VsdCBVbnJlZ2lzdGVyQ29tcG9uZW50U3BlYyhjb25zdCBuc0NJRCAmIGFDbGFzcywgbnNJRmls
ZSAqYUxpYnJhcnlTcGVjKSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgRnJlZUxpYnJh
cmllcyh2b2lkKSA9IDA7CgoKCgogIGVudW0geyBOU19TdGFydHVwID0gMCB9OwoKICBlbnVtIHsg
TlNfU2NyaXB0ID0gMSB9OwoKICBlbnVtIHsgTlNfVGltZXIgPSAyIH07CgogIGVudW0geyBOU19T
aHV0ZG93biA9IDMgfTsKIyAyOTMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb21w
b25lbnRNYW5hZ2VyT2Jzb2xldGUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEF1dG9SZWdpc3RlcihQ
UkludDMyIHdoZW4sIG5zSUZpbGUgKmRpcmVjdG9yeSkgPSAwOwojIDMwNiAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL3hwY29tL25zSUNvbXBvbmVudE1hbmFnZXJPYnNvbGV0ZS5oIgogIHZpcnR1YWwg
bnNyZXN1bHQgQXV0b1JlZ2lzdGVyQ29tcG9uZW50KFBSSW50MzIgd2hlbiwgbnNJRmlsZSAqYUZp
bGVMb2NhdGlvbikgPSAwOwojIDMxNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUNv
bXBvbmVudE1hbmFnZXJPYnNvbGV0ZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgQXV0b1VucmVnaXN0
ZXJDb21wb25lbnQoUFJJbnQzMiB3aGVuLCBuc0lGaWxlICphRmlsZUxvY2F0aW9uKSA9IDA7CiMg
MzI3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJQ29tcG9uZW50TWFuYWdlck9ic29s
ZXRlLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBJc1JlZ2lzdGVyZWQoY29uc3QgbnNDSUQgJiBhQ2xh
c3MsIFBSQm9vbCAqX3JldHZhbCkgPSAwOwojIDMzNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29tL25zSUNvbXBvbmVudE1hbmFnZXJPYnNvbGV0ZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgRW51
bWVyYXRlQ0xTSURzKG5zSUVudW1lcmF0b3IgKipfcmV0dmFsKSA9IDA7CiMgMzQ3ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUveHBjb20vbnNJQ29tcG9uZW50TWFuYWdlck9ic29sZXRlLmgiCiAgdmly
dHVhbCBuc3Jlc3VsdCBFbnVtZXJhdGVDb250cmFjdElEcyhuc0lFbnVtZXJhdG9yICoqX3JldHZh
bCkgPSAwOwoKfTsKIyA1OTkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb21wb25l
bnRNYW5hZ2VyT2Jzb2xldGUuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnND
b21wb25lbnRNYW5hZ2VyVXRpbHMuaCIgMQojIDYwMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29tL25zSUNvbXBvbmVudE1hbmFnZXJPYnNvbGV0ZS5oIiAyCiMgNDIgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS94cGNvbS9uc0NvbXBvbmVudE1hbmFnZXJPYnNvbGV0ZS5oIiAyCgpjbGFzcyBuc0lF
bnVtZXJhdG9yOwpjbGFzcyBuc0lGYWN0b3J5OwpjbGFzcyBuc0lGaWxlOwojIDY4ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUveHBjb20vbnNDb21wb25lbnRNYW5hZ2VyT2Jzb2xldGUuaCIKZXh0ZXJu
IG5zcmVzdWx0Ck5TX0dldEdsb2JhbENvbXBvbmVudE1hbmFnZXIobnNJQ29tcG9uZW50TWFuYWdl
ciogKnJlc3VsdCk7CgoKCgpjbGFzcyBuc0NvbXBvbmVudE1hbmFnZXIgewpwdWJsaWM6CiAgc3Rh
dGljIG5zcmVzdWx0IEluaXRpYWxpemUodm9pZCk7CgoKICBzdGF0aWMgbnNyZXN1bHQgRmluZEZh
Y3RvcnkoY29uc3QgbnNDSUQgJmFDbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnNJRmFjdG9yeSAqKmFGYWN0b3J5KTsKCgogIHN0YXRpYyBuc3Jlc3VsdCBHZXRDbGFzc09iamVj
dChjb25zdCBuc0NJRCAmYUNsYXNzLCBjb25zdCBuc0lJRCAmYUlJRCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm9pZCAqKmFSZXN1bHQpOwoKCiAgc3RhdGljIG5zcmVzdWx0IENv
bnRyYWN0SURUb0NsYXNzSUQoY29uc3QgY2hhciAqYUNvbnRyYWN0SUQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnNDSUQgKmFDbGFzcyk7CgoKCiAgc3RhdGljIG5zcmVzdWx0IENM
U0lEVG9Db250cmFjdElEKG5zQ0lEICphQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciogKmFDbGFzc05hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciogKmFDb250cmFjdElEKTsKCgogIHN0YXRpYyBuc3Jlc3VsdCBDcmVhdGVJbnN0YW5jZShj
b25zdCBuc0NJRCAmYUNsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lT
dXBwb3J0cyAqYURlbGVnYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBuc0lJRCAmYUlJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKmFS
ZXN1bHQpOwoKCiAgc3RhdGljIG5zcmVzdWx0IENyZWF0ZUluc3RhbmNlKGNvbnN0IGNoYXIgKmFD
b250cmFjdElELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdXBwb3J0cyAq
YURlbGVnYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuc0lJRCAm
YUlJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKmFSZXN1bHQpOwoK
CiAgc3RhdGljIG5zcmVzdWx0IFJlZ2lzdGVyRmFjdG9yeShjb25zdCBuc0NJRCAmYUNsYXNzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYUNsYXNzTmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmFDb250cmFjdElE
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJRmFjdG9yeSAqYUZhY3Rvcnks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkJvb2wgYVJlcGxhY2UpOwojIDEy
MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zQ29tcG9uZW50TWFuYWdlck9ic29sZXRl
LmgiCiAgc3RhdGljIG5zcmVzdWx0IFJlZ2lzdGVyQ29tcG9uZW50KGNvbnN0IG5zQ0lEICZhQ2xh
c3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICphQ2xhc3NOYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYUNvbnRyYWN0SUQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICphTGlicmFyeVBlcnNp
c3RlbnREZXNjcmlwdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJCb29sIGFS
ZXBsYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJCb29sIGFQZXJzaXN0KTsK
CgoKICBzdGF0aWMgbnNyZXN1bHQgUmVnaXN0ZXJDb21wb25lbnRTcGVjKGNvbnN0IG5zQ0lEICZh
Q2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYUNs
YXNzTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICph
Q29udHJhY3RJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lGaWxlICph
TGlicmFyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkJvb2wgYVJlcGxh
Y2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJCb29sIGFQZXJzaXN0KTsK
CgoKCiAgc3RhdGljIG5zcmVzdWx0IFJlZ2lzdGVyQ29tcG9uZW50TGliKGNvbnN0IG5zQ0lEICZh
Q2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
KmFDbGFzc05hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKmFDb250cmFjdElELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyICphZGxsTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUFJCb29sIGFSZXBsYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQUkJvb2wgYVBlcnNpc3QpOwoKCgogIHN0YXRpYyBuc3Jlc3VsdCBVbnJlZ2lzdGVyRmFj
dG9yeShjb25zdCBuc0NJRCAmYUNsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuc0lGYWN0b3J5ICphRmFjdG9yeSk7CgoKICBzdGF0aWMgbnNyZXN1bHQgVW5yZWdpc3Rl
ckNvbXBvbmVudChjb25zdCBuc0NJRCAmYUNsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmFMaWJyYXJ5KTsKCgogIHN0YXRpYyBuc3Jlc3VsdCBV
bnJlZ2lzdGVyQ29tcG9uZW50U3BlYyhjb25zdCBuc0NJRCAmYUNsYXNzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lGaWxlICphTGlicmFyeVNwZWMpOwoKCiAg
c3RhdGljIG5zcmVzdWx0IEZyZWVMaWJyYXJpZXModm9pZCk7CgoKCgoKICBzdGF0aWMgbnNyZXN1
bHQgQXV0b1JlZ2lzdGVyKFBSSW50MzIgd2hlbiwgbnNJRmlsZSogZGlyZWN0b3J5KTsKICBzdGF0
aWMgbnNyZXN1bHQgQXV0b1JlZ2lzdGVyQ29tcG9uZW50KFBSSW50MzIgd2hlbiwgbnNJRmlsZSAq
Y29tcG9uZW50KTsKICBzdGF0aWMgbnNyZXN1bHQgQXV0b1VucmVnaXN0ZXJDb21wb25lbnQoUFJJ
bnQzMiB3aGVuLCBuc0lGaWxlICpjb21wb25lbnQpOwoKCiAgc3RhdGljIG5zcmVzdWx0IElzUmVn
aXN0ZXJlZChjb25zdCBuc0NJRCAmYUNsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUFJCb29sICphUmVnaXN0ZXJlZCk7CgoKICBzdGF0aWMgbnNyZXN1bHQgRW51bWVyYXRlQ0xT
SURzKG5zSUVudW1lcmF0b3IqKiBhRW11bWVyYXRvcik7CgoKICBzdGF0aWMgbnNyZXN1bHQgRW51
bWVyYXRlQ29udHJhY3RJRHMobnNJRW51bWVyYXRvcioqIGFFbXVtZXJhdG9yKTsKCn07CiMgMzMg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0NvbXBvbmVudE1hbmFnZXJVdGlscy5oIiAy
CiMgNDMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0NvbXBvbmVudE1hbmFnZXJVdGls
cy5oIgpjbGFzcyBuc0NyZWF0ZUluc3RhbmNlQnlDSUQgOiBwdWJsaWMgbnNDT01QdHJfaGVscGVy
CnsKcHVibGljOgogICAgbnNDcmVhdGVJbnN0YW5jZUJ5Q0lEKCBjb25zdCBuc0NJRCYgYUNJRCwg
bnNJU3VwcG9ydHMqIGFPdXRlciwgbnNyZXN1bHQqIGFFcnJvclB0ciApCiAgICAgICAgOiBtQ0lE
KGFDSUQpLAogICAgICAgICAgbU91dGVyKGFPdXRlciksCiAgICAgICAgICBtRXJyb3JQdHIoYUVy
cm9yUHRyKQogICAgewoKICAgIH0KCiAgICB2aXJ0dWFsIG5zcmVzdWx0IG9wZXJhdG9yKCkoIGNv
bnN0IG5zSUlEJiwgdm9pZCoqICkgY29uc3Q7Cgpwcml2YXRlOgogICAgY29uc3QgbnNDSUQmIG1D
SUQ7CiAgICBuc0lTdXBwb3J0cyogbU91dGVyOwogICAgbnNyZXN1bHQqIG1FcnJvclB0cjsKfTsK
CmNsYXNzIG5zQ3JlYXRlSW5zdGFuY2VCeUNvbnRyYWN0SUQgOiBwdWJsaWMgbnNDT01QdHJfaGVs
cGVyCnsKcHVibGljOgogICAgbnNDcmVhdGVJbnN0YW5jZUJ5Q29udHJhY3RJRCggY29uc3QgY2hh
ciogYUNvbnRyYWN0SUQsIG5zSVN1cHBvcnRzKiBhT3V0ZXIsIG5zcmVzdWx0KiBhRXJyb3JQdHIg
KQogICAgICAgIDogbUNvbnRyYWN0SUQoYUNvbnRyYWN0SUQpLAogICAgICAgICAgbU91dGVyKGFP
dXRlciksCiAgICAgICAgICBtRXJyb3JQdHIoYUVycm9yUHRyKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgIHZp
cnR1YWwgbnNyZXN1bHQgb3BlcmF0b3IoKSggY29uc3QgbnNJSUQmLCB2b2lkKiogKSBjb25zdDsK
CnByaXZhdGU6CiAgICBjb25zdCBjaGFyKiBtQ29udHJhY3RJRDsKICAgIG5zSVN1cHBvcnRzKiBt
T3V0ZXI7CiAgICBuc3Jlc3VsdCogbUVycm9yUHRyOwp9OwoKaW5saW5lCmNvbnN0IG5zQ3JlYXRl
SW5zdGFuY2VCeUNJRApkb19DcmVhdGVJbnN0YW5jZSggY29uc3QgbnNDSUQmIGFDSUQsIG5zcmVz
dWx0KiBlcnJvciA9IDAgKQp7CiAgICByZXR1cm4gbnNDcmVhdGVJbnN0YW5jZUJ5Q0lEKGFDSUQs
IDAsIGVycm9yKTsKfQoKaW5saW5lCmNvbnN0IG5zQ3JlYXRlSW5zdGFuY2VCeUNJRApkb19DcmVh
dGVJbnN0YW5jZSggY29uc3QgbnNDSUQmIGFDSUQsIG5zSVN1cHBvcnRzKiBhT3V0ZXIsIG5zcmVz
dWx0KiBlcnJvciA9IDAgKQp7CiAgICByZXR1cm4gbnNDcmVhdGVJbnN0YW5jZUJ5Q0lEKGFDSUQs
IGFPdXRlciwgZXJyb3IpOwp9CgppbmxpbmUKY29uc3QgbnNDcmVhdGVJbnN0YW5jZUJ5Q29udHJh
Y3RJRApkb19DcmVhdGVJbnN0YW5jZSggY29uc3QgY2hhciogYUNvbnRyYWN0SUQsIG5zcmVzdWx0
KiBlcnJvciA9IDAgKQp7CiAgICByZXR1cm4gbnNDcmVhdGVJbnN0YW5jZUJ5Q29udHJhY3RJRChh
Q29udHJhY3RJRCwgMCwgZXJyb3IpOwp9CgppbmxpbmUKY29uc3QgbnNDcmVhdGVJbnN0YW5jZUJ5
Q29udHJhY3RJRApkb19DcmVhdGVJbnN0YW5jZSggY29uc3QgY2hhciogYUNvbnRyYWN0SUQsIG5z
SVN1cHBvcnRzKiBhT3V0ZXIsIG5zcmVzdWx0KiBlcnJvciA9IDAgKQp7CiAgICByZXR1cm4gbnND
cmVhdGVJbnN0YW5jZUJ5Q29udHJhY3RJRChhQ29udHJhY3RJRCwgYU91dGVyLCBlcnJvcik7Cn0K
Cgp0ZW1wbGF0ZSA8Y2xhc3MgRGVzdGluYXRpb25UeXBlPgppbmxpbmUKbnNyZXN1bHQKQ2FsbENy
ZWF0ZUluc3RhbmNlKCBjb25zdCBuc0NJRCAmYUNsYXNzLAogICAgICAgICAgICAgICAgICAgIG5z
SVN1cHBvcnRzICphRGVsZWdhdGUsCiAgICAgICAgICAgICAgICAgICAgRGVzdGluYXRpb25UeXBl
KiogYURlc3RpbmF0aW9uICkKewogICAgOwoKICAgIHJldHVybiBuc0NvbXBvbmVudE1hbmFnZXI6
OkNyZWF0ZUluc3RhbmNlKGFDbGFzcywgYURlbGVnYXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnNDT01UeXBlSW5mbzxEZXN0aW5hdGlvblR5cGU+OjpH
ZXRJSUQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8IHZvaWQqKiA+KGFEZXN0aW5hdGlvbikpOwp9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgRGVzdGluYXRpb25UeXBlPgppbmxpbmUKbnNyZXN1bHQKQ2FsbENyZWF0ZUluc3RhbmNlKCBj
b25zdCBuc0NJRCAmYUNsYXNzLAogICAgICAgICAgICAgICAgICAgIERlc3RpbmF0aW9uVHlwZSoq
IGFEZXN0aW5hdGlvbiApCnsKICAgIDsKCiAgICByZXR1cm4gbnNDb21wb25lbnRNYW5hZ2VyOjpD
cmVhdGVJbnN0YW5jZShhQ2xhc3MsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuc0NPTVR5cGVJbmZvPERlc3RpbmF0aW9uVHlwZT46OkdldElJRCgpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDwgdm9pZCoqID4oYURlc3RpbmF0aW9uKSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBEZXN0aW5h
dGlvblR5cGU+CmlubGluZQpuc3Jlc3VsdApDYWxsQ3JlYXRlSW5zdGFuY2UoIGNvbnN0IGNoYXIg
KmFDb250cmFjdElELAogICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzICphRGVsZWdhdGUs
CiAgICAgICAgICAgICAgICAgICAgRGVzdGluYXRpb25UeXBlKiogYURlc3RpbmF0aW9uICkKewog
ICAgOwogICAgOwoKICAgIHJldHVybiBuc0NvbXBvbmVudE1hbmFnZXI6OkNyZWF0ZUluc3RhbmNl
KGFDb250cmFjdElELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYURlbGVnYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnNDT01UeXBlSW5mbzxEZXN0aW5hdGlvblR5cGU+OjpHZXRJSUQoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8IHZvaWQq
KiA+KGFEZXN0aW5hdGlvbikpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRGVzdGluYXRpb25UeXBlPgpp
bmxpbmUKbnNyZXN1bHQKQ2FsbENyZWF0ZUluc3RhbmNlKCBjb25zdCBjaGFyICphQ29udHJhY3RJ
RCwKICAgICAgICAgICAgICAgICAgICBEZXN0aW5hdGlvblR5cGUqKiBhRGVzdGluYXRpb24gKQp7
CiAgICA7CiAgICA7CgogICAgcmV0dXJuIG5zQ29tcG9uZW50TWFuYWdlcjo6Q3JlYXRlSW5zdGFu
Y2UoYUNvbnRyYWN0SUQsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuc0NPTVR5cGVJbmZvPERlc3RpbmF0aW9uVHlwZT46OkdldElJRCgpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDwg
dm9pZCoqID4oYURlc3RpbmF0aW9uKSk7Cn0KCgpleHRlcm4gY29uc3QgY2hhciB4cGNvbUtleU5h
bWVbXTsKZXh0ZXJuIGNvbnN0IGNoYXIgeHBjb21Db21wb25lbnRzS2V5TmFtZVtdOwpleHRlcm4g
Y29uc3QgY2hhciBsYXN0TW9kVmFsdWVOYW1lW107CmV4dGVybiBjb25zdCBjaGFyIGZpbGVTaXpl
VmFsdWVOYW1lW107CmV4dGVybiBjb25zdCBjaGFyIG5hdGl2ZUNvbXBvbmVudFR5cGVbXTsKZXh0
ZXJuIGNvbnN0IGNoYXIgc3RhdGljQ29tcG9uZW50VHlwZVtdOwojIDE1OSAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL3hwY29tL25zSUNvbXBvbmVudE1hbmFnZXIuaCIgMgojIDIzICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUveHBjb25uZWN0L3hwY2NvbXBvbmVudHMuaCIgMgoKCgojIDEgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS94cGNvbm5lY3QvbnNJU2NyaXB0YWJsZUludGVyZmFjZXMuaCIgMQojIDE0
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb25uZWN0L25zSVNjcmlwdGFibGVJbnRlcmZhY2Vz
LmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUludGVyZmFjZUluZm9NYW5h
Z2VyLmgiIDEKIyAxNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUludGVyZmFjZUlu
Zm9NYW5hZ2VyLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUludGVyZmFj
ZUluZm8uaCIgMQojIDE3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJSW50ZXJmYWNl
SW5mby5oIgpjbGFzcyBuc1hQVE1ldGhvZEluZm87CmNsYXNzIG5zWFBUQ29uc3RhbnQ7CmNsYXNz
IG5zWFBUUGFyYW1JbmZvOwpjbGFzcyBuc1hQVFR5cGU7CiMgMjkgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS94cGNvbS9uc0lJbnRlcmZhY2VJbmZvLmgiCmNsYXNzIG5zSUludGVyZmFjZUluZm8gOiBw
dWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJ
RCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4MjE1ZGJlMDQsIDB4OTRhNywgMHgxMWQy
LCB7IDB4YmEsIDB4NTgsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4NWQsIDB4ZDcgfX07IHJl
dHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROYW1lKGNoYXIgKiAqYU5hbWUpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SW50ZXJmYWNlSUlEKG5zSUlEICogKmFJbnRlcmZh
Y2VJSUQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSXNTY3JpcHRhYmxlKFBSQm9vbCAqX3Jl
dHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQYXJlbnQobnNJSW50ZXJmYWNlSW5m
byAqICphUGFyZW50KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1ldGhvZENvdW50
KFBSVWludDE2ICphTWV0aG9kQ291bnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29u
c3RhbnRDb3VudChQUlVpbnQxNiAqYUNvbnN0YW50Q291bnQpID0gMDsKCgoKCgoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRNZXRob2RJbmZvKFBSVWludDE2IGluZGV4LCBjb25zdCBuc1hQVE1ldGhv
ZEluZm8gKiAqaW5mbykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNZXRob2RJbmZvRm9y
TmFtZShjb25zdCBjaGFyICptZXRob2ROYW1lLCBQUlVpbnQxNiAqaW5kZXgsIGNvbnN0IG5zWFBU
TWV0aG9kSW5mbyAqICppbmZvKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbnN0YW50
KFBSVWludDE2IGluZGV4LCBjb25zdCBuc1hQVENvbnN0YW50ICogKmNvbnN0YW50KSA9IDA7CgoK
CgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRJbmZvRm9yUGFyYW0oUFJVaW50MTYgbWV0aG9kSW5k
ZXgsIGNvbnN0IG5zWFBUUGFyYW1JbmZvICogcGFyYW0sIG5zSUludGVyZmFjZUluZm8gKipfcmV0
dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldElJREZvclBhcmFtKFBSVWludDE2IG1l
dGhvZEluZGV4LCBjb25zdCBuc1hQVFBhcmFtSW5mbyAqIHBhcmFtLCBuc0lJRCAqICpfcmV0dmFs
KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFR5cGVGb3JQYXJhbShQUlVpbnQxNiBt
ZXRob2RJbmRleCwgY29uc3QgbnNYUFRQYXJhbUluZm8gKiBwYXJhbSwgUFJVaW50MTYgZGltZW5z
aW9uLCBuc1hQVFR5cGUgKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2l6
ZUlzQXJnTnVtYmVyRm9yUGFyYW0oUFJVaW50MTYgbWV0aG9kSW5kZXgsIGNvbnN0IG5zWFBUUGFy
YW1JbmZvICogcGFyYW0sIFBSVWludDE2IGRpbWVuc2lvbiwgUFJVaW50OCAqX3JldHZhbCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMZW5ndGhJc0FyZ051bWJlckZvclBhcmFtKFBSVWlu
dDE2IG1ldGhvZEluZGV4LCBjb25zdCBuc1hQVFBhcmFtSW5mbyAqIHBhcmFtLCBQUlVpbnQxNiBk
aW1lbnNpb24sIFBSVWludDggKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
SW50ZXJmYWNlSXNBcmdOdW1iZXJGb3JQYXJhbShQUlVpbnQxNiBtZXRob2RJbmRleCwgY29uc3Qg
bnNYUFRQYXJhbUluZm8gKiBwYXJhbSwgUFJVaW50OCAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBJc0lJRChjb25zdCBuc0lJRCAqIElJRCwgUFJCb29sICpfcmV0dmFsKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5hbWVTaGFyZWQoY29uc3QgY2hhciAqKm5hbWUpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SUlEU2hhcmVkKGNvbnN0IG5zSUlEICogKmlpZCkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJc0Z1bmN0aW9uKFBSQm9vbCAqX3JldHZhbCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBIYXNBbmNlc3Rvcihjb25zdCBuc0lJRCAqIGlpZCwgUFJC
b29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldElJREZvclBhcmFtTm9B
bGxvYyhQUlVpbnQxNiBtZXRob2RJbmRleCwgY29uc3QgbnNYUFRQYXJhbUluZm8gKiBwYXJhbSwg
bnNJSUQgKmlpZCkgPSAwOwoKfTsKIyAxNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25z
SUludGVyZmFjZUluZm9NYW5hZ2VyLmgiIDIKCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
eHBjb20vbnNJRW51bWVyYXRvci5oIiAxCiMgMTAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNv
bS9uc0lFbnVtZXJhdG9yLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVNp
bXBsZUVudW1lcmF0b3IuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJ
U2ltcGxlRW51bWVyYXRvci5oIgpjbGFzcyBuc0lTaW1wbGVFbnVtZXJhdG9yIDogcHVibGljIG5z
SVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3Rh
dGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGQxODk5MjQwLCAweGY5ZDIsIDB4MTFkMiwgeyAweGJk
LCAweGQ2LCAweDAwLCAweDAwLCAweDY0LCAweDY1LCAweDczLCAweDc0IH19OyByZXR1cm4gaWlk
O30KIyA1MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVNpbXBsZUVudW1lcmF0b3Iu
aCIKICB2aXJ0dWFsIG5zcmVzdWx0IEhhc01vcmVFbGVtZW50cyhQUkJvb2wgKl9yZXR2YWwpID0g
MDsKIyA2OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVNpbXBsZUVudW1lcmF0b3Iu
aCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5leHQobnNJU3VwcG9ydHMgKipfcmV0dmFsKSA9IDA7
Cgp9OwojIDExICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJRW51bWVyYXRvci5oIiAy
CgoKCgoKCgpleHRlcm4gIkMiIG5zcmVzdWx0Ck5TX05ld0VtcHR5RW51bWVyYXRvcihuc0lTaW1w
bGVFbnVtZXJhdG9yKiogYVJlc3VsdCk7CiMgMjggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNv
bS9uc0lFbnVtZXJhdG9yLmgiCmNsYXNzIG5zSUVudW1lcmF0b3IgOiBwdWJsaWMgbnNJU3VwcG9y
dHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29u
c3QgbnNJSUQgaWlkID0gezB4YWQzODUyODYsIDB4Y2JjNCwgMHgxMWQyLCB7IDB4OGMsIDB4Y2Es
IDB4MDAsIDB4NjAsIDB4YjAsIDB4ZmMsIDB4MTQsIDB4YTMgfX07IHJldHVybiBpaWQ7fQoKCgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEZpcnN0KHZvaWQpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBOZXh0KHZvaWQpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ3VycmVudEl0ZW0obnNJ
U3VwcG9ydHMgKipfcmV0dmFsKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IElzRG9uZSh2
b2lkKSA9IDA7Cgp9OwojIDE0MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUVudW1l
cmF0b3IuaCIKY2xhc3MgbnNJQmlkaXJlY3Rpb25hbEVudW1lcmF0b3IgOiBwdWJsaWMgbnNJRW51
bWVyYXRvciB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRp
YyBjb25zdCBuc0lJRCBpaWQgPSB7MHg3NWYxNThhMCwgMHhjYWRkLCAweDExZDIsIHsgMHg4Yywg
MHhjYSwgMHgwMCwgMHg2MCwgMHhiMCwgMHhmYywgMHgxNCwgMHhhMyB9fTsgcmV0dXJuIGlpZDt9
CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgTGFzdCh2b2lkKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgUHJldih2b2lkKSA9IDA7Cgp9OwojIDE5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBj
b20vbnNJSW50ZXJmYWNlSW5mb01hbmFnZXIuaCIgMgojIDM3ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUveHBjb20vbnNJSW50ZXJmYWNlSW5mb01hbmFnZXIuaCIKY2xhc3MgbnNJSW50ZXJmYWNlSW5m
b01hbmFnZXIgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3Qg
bnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4OGIxNjE5MDAsIDB4
YmUyYiwgMHgxMWQyLCB7IDB4OTgsIDB4MzEsIDB4MDAsIDB4NjAsIDB4MDgsIDB4OTYsIDB4MjQs
IDB4MjIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRJbmZvRm9ySUlE
KGNvbnN0IG5zSUlEICogaWlkLCBuc0lJbnRlcmZhY2VJbmZvICoqX3JldHZhbCkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRJbmZvRm9yTmFtZShjb25zdCBjaGFyICpuYW1lLCBuc0lJbnRl
cmZhY2VJbmZvICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRJSURGb3JO
YW1lKGNvbnN0IGNoYXIgKm5hbWUsIG5zSUlEICogKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0TmFtZUZvcklJRChjb25zdCBuc0lJRCAqIGlpZCwgY2hhciAqKl9yZXR2YWwp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgRW51bWVyYXRlSW50ZXJmYWNlcyhuc0lFbnVtZXJh
dG9yICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBBdXRvUmVnaXN0ZXJJbnRl
cmZhY2VzKHZvaWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgRW51bWVyYXRlSW50ZXJmYWNl
c1dob3NlTmFtZXNTdGFydFdpdGgoY29uc3QgY2hhciAqcHJlZml4LCBuc0lFbnVtZXJhdG9yICoq
X3JldHZhbCkgPSAwOwoKfTsKIyAxNzYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lJ
bnRlcmZhY2VJbmZvTWFuYWdlci5oIgpjbGFzcyBuc0lJbnRlcmZhY2VJbmZvU3VwZXJNYW5hZ2Vy
IDogcHVibGljIG5zSUludGVyZmFjZUluZm9NYW5hZ2VyIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNv
bnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDBlZTIyODUw
LCAweGJjNmEsIDB4MTFkNSwgeyAweDkxLCAweDM0LCAweDAwLCAweDEwLCAweGE0LCAweGU3LCAw
eDNkLCAweDlhIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgQWRkQWRkaXRp
b25hbE1hbmFnZXIobnNJSW50ZXJmYWNlSW5mb01hbmFnZXIgKm1hbmFnZXIpID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgUmVtb3ZlQWRkaXRpb25hbE1hbmFnZXIobnNJSW50ZXJmYWNlSW5mb01h
bmFnZXIgKm1hbmFnZXIpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSGFzQWRkaXRpb25hbE1h
bmFnZXJzKFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBFbnVtZXJh
dGVBZGRpdGlvbmFsTWFuYWdlcnMobnNJU2ltcGxlRW51bWVyYXRvciAqKl9yZXR2YWwpID0gMDsK
Cn07CiMgMTUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbm5lY3QvbnNJU2NyaXB0YWJsZUlu
dGVyZmFjZXMuaCIgMgojIDMzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb25uZWN0L25zSVNj
cmlwdGFibGVJbnRlcmZhY2VzLmgiCmNsYXNzIG5zSVNjcmlwdGFibGVJbnRlcmZhY2VzIDogcHVi
bGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQo
KSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDAxYzc4YzY1LCAweDMxZGEsIDB4NDU2Yiwg
eyAweDkwLCAweGJmLCAweGRhLCAweDM5LCAweGQwLCAweDlmLCAweGRjLCAweGJmIH19OyByZXR1
cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TWFuYWdlcihuc0lJbnRlcmZhY2VJbmZv
TWFuYWdlciAqICphTWFuYWdlcikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TWFuYWdlcihu
c0lJbnRlcmZhY2VJbmZvTWFuYWdlciAqIGFNYW5hZ2VyKSA9IDA7Cgp9OwojIDI3ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUveHBjb25uZWN0L3hwY2NvbXBvbmVudHMuaCIgMgojIDQ1ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUveHBjb25uZWN0L3hwY2NvbXBvbmVudHMuaCIKY2xhc3MgbnNJWFBDQ29t
cG9uZW50c19DbGFzc2VzIDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGlj
IGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDk3OGZm
NTIwLCAweGQyNmMsIDB4MTFkMiwgeyAweDk4LCAweDQyLCAweDAwLCAweDYwLCAweDA4LCAweDk2
LCAweDI0LCAweDIyIH19OyByZXR1cm4gaWlkO30KCn07CiMgMTA3ICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUveHBjb25uZWN0L3hwY2NvbXBvbmVudHMuaCIKY2xhc3MgbnNJWFBDQ29tcG9uZW50c19D
bGFzc2VzQnlJRCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25z
dCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgzMzZhOTU5MCwg
MHg0ZDE5LCAweDExZDMsIHsgMHg5OCwgMHg5MywgMHgwMCwgMHg2MCwgMHgwOCwgMHg5NiwgMHgy
NCwgMHgyMiB9fTsgcmV0dXJuIGlpZDt9Cgp9OwojIDE2OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3hwY29ubmVjdC94cGNjb21wb25lbnRzLmgiCmNsYXNzIG5zSVhQQ0NvbXBvbmVudHNfUmVzdWx0
cyA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYg
R2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgyZmMyMjlhMCwgMHg1ODYwLCAw
eDExZDMsIHsgMHg5OCwgMHg5OSwgMHgwMCwgMHg2MCwgMHgwOCwgMHg5NiwgMHgyNCwgMHgyMiB9
fTsgcmV0dXJuIGlpZDt9Cgp9OwojIDIzMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29ubmVj
dC94cGNjb21wb25lbnRzLmgiCmNsYXNzIG5zSVhQQ0NvbXBvbmVudHNfSUQgOiBwdWJsaWMgbnNJ
U3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0
aWMgY29uc3QgbnNJSUQgaWlkID0gezB4Nzk5NGE2ZTAsIDB4ZTAyOCwgMHgxMWQzLCB7IDB4OGYs
IDB4NWQsIDB4MDAsIDB4MTAsIDB4YTQsIDB4ZTcsIDB4M2QsIDB4OWEgfX07IHJldHVybiBpaWQ7
fQoKfTsKIyAyOTMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbm5lY3QveHBjY29tcG9uZW50
cy5oIgpjbGFzcyBuc0lYUENDb21wb25lbnRzX0V4Y2VwdGlvbiA6IHB1YmxpYyBuc0lTdXBwb3J0
cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25z
dCBuc0lJRCBpaWQgPSB7MHg1YmYwMzljMCwgMHhlMDI4LCAweDExZDMsIHsgMHg4ZiwgMHg1ZCwg
MHgwMCwgMHgxMCwgMHhhNCwgMHhlNywgMHgzZCwgMHg5YSB9fTsgcmV0dXJuIGlpZDt9Cgp9Owoj
IDM1NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29ubmVjdC94cGNjb21wb25lbnRzLmgiCmNs
YXNzIG5zSVhQQ0NvbXBvbmVudHNfQ29uc3RydWN0b3IgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewog
cHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJ
SUQgaWlkID0gezB4ODg2NTU2NDAsIDB4ZTAyOCwgMHgxMWQzLCB7IDB4OGYsIDB4NWQsIDB4MDAs
IDB4MTAsIDB4YTQsIDB4ZTcsIDB4M2QsIDB4OWEgfX07IHJldHVybiBpaWQ7fQoKfTsKIyA0MTcg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbm5lY3QveHBjY29tcG9uZW50cy5oIgpjbGFzcyBu
c0lYUENDb25zdHJ1Y3RvciA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRp
YyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhjODE0
Y2EyMCwgMHhlMGRjLCAweDExZDMsIHsgMHg4ZiwgMHg1ZiwgMHgwMCwgMHgxMCwgMHhhNCwgMHhl
NywgMHgzZCwgMHg5YSB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENs
YXNzSUQobnNJSlNDSUQgKiAqYUNsYXNzSUQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
SW50ZXJmYWNlSUQobnNJSlNJSUQgKiAqYUludGVyZmFjZUlEKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldEluaXRpYWxpemVyKGNoYXIgKiAqYUluaXRpYWxpemVyKSA9IDA7Cgp9OwojIDUx
MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29ubmVjdC94cGNjb21wb25lbnRzLmgiCmNsYXNz
IG5zSVhQQ0NvbXBvbmVudHMgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0
aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4NDI2
MjRmODAsIDB4ZDI2YywgMHgxMWQyLCB7IDB4OTgsIDB4NDIsIDB4MDAsIDB4NjAsIDB4MDgsIDB4
OTYsIDB4MjQsIDB4MjIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRJ
bnRlcmZhY2VzKG5zSVNjcmlwdGFibGVJbnRlcmZhY2VzICogKmFJbnRlcmZhY2VzKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldENsYXNzZXMobnNJWFBDQ29tcG9uZW50c19DbGFzc2VzICog
KmFDbGFzc2VzKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENsYXNzZXNCeUlEKG5zSVhQ
Q0NvbXBvbmVudHNfQ2xhc3Nlc0J5SUQgKiAqYUNsYXNzZXNCeUlEKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldFN0YWNrKG5zSVN0YWNrRnJhbWUgKiAqYVN0YWNrKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldFJlc3VsdHMobnNJWFBDQ29tcG9uZW50c19SZXN1bHRzICogKmFSZXN1
bHRzKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1hbmFnZXIobnNJQ29tcG9uZW50TWFu
YWdlciAqICphTWFuYWdlcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRJRChuc0lYUEND
b21wb25lbnRzX0lEICogKmFJRCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRFeGNlcHRp
b24obnNJWFBDQ29tcG9uZW50c19FeGNlcHRpb24gKiAqYUV4Y2VwdGlvbikgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRDb25zdHJ1Y3Rvcihuc0lYUENDb21wb25lbnRzX0NvbnN0cnVjdG9y
ICogKmFDb25zdHJ1Y3RvcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJc1N1Y2Nlc3NDb2Rl
KG5zcmVzdWx0IHJlc3VsdCwgUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IExvb2t1cE1ldGhvZCh2b2lkKSA9IDA7Cgp9OwojIDE5ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUveHBjb25uZWN0L25zSVhQQ29ubmVjdC5oIiAyCiMgMzggIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS94cGNvbm5lY3QvbnNJWFBDb25uZWN0LmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29tL25zSUV4Y2VwdGlvblNlcnZpY2UuaCIgMQojIDI5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
eHBjb20vbnNJRXhjZXB0aW9uU2VydmljZS5oIgpjbGFzcyBuc0lFeGNlcHRpb25Qcm92aWRlciA6
IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0
SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgwNTc3NzQ0YywgMHhjMWQyLCAweDQ3
ZjIsIHsgMHg4YiwgMHhjYywgMHhjZSwgMHg3YSwgMHg5ZSwgMHg1YSwgMHg4OCwgMHhmYyB9fTsg
cmV0dXJuIGlpZDt9CgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRFeGNlcHRpb24obnNyZXN1bHQg
cmVzdWx0LCBuc0lFeGNlcHRpb24gKmRlZmF1bHRFeGNlcHRpb24sIG5zSUV4Y2VwdGlvbiAqKl9y
ZXR2YWwpID0gMDsKCn07CiMgOTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lFeGNl
cHRpb25TZXJ2aWNlLmgiCmNsYXNzIG5zSUV4Y2VwdGlvbk1hbmFnZXIgOiBwdWJsaWMgbnNJU3Vw
cG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMg
Y29uc3QgbnNJSUQgaWlkID0gezB4ZWZjOWQwMGIsIDB4MjMxYywgMHg0ZmViLCB7IDB4ODUsIDB4
MmMsIDB4YWMsIDB4MDEsIDB4NzIsIDB4NjYsIDB4YTQsIDB4MTUgfX07IHJldHVybiBpaWQ7fQoK
CgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q3VycmVudEV4Y2VwdGlvbihuc0lFeGNlcHRpb24gKmVy
cm9yKSA9IDA7CgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDdXJyZW50RXhjZXB0aW9uKG5zSUV4
Y2VwdGlvbiAqKl9yZXR2YWwpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRFeGNlcHRp
b25Gcm9tUHJvdmlkZXIobnNyZXN1bHQgcmMsIG5zSUV4Y2VwdGlvbiAqZGVmYXVsdEV4Y2VwdGlv
biwgbnNJRXhjZXB0aW9uICoqX3JldHZhbCkgPSAwOwoKfTsKIyAxOTIgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS94cGNvbS9uc0lFeGNlcHRpb25TZXJ2aWNlLmgiCmNsYXNzIG5zSUV4Y2VwdGlvblNl
cnZpY2UgOiBwdWJsaWMgbnNJRXhjZXB0aW9uTWFuYWdlciB7CiBwdWJsaWM6CgogIHN0YXRpYyBj
b25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgzNWE4OGY1
NCwgMHhmMjY3LCAweDQ0MTQsIHsgMHg5MiwgMHhhNywgMHgxOSwgMHgxZiwgMHg2NCwgMHg1NCwg
MHhhYiwgMHg1MiB9fTsgcmV0dXJuIGlpZDt9CgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDdXJy
ZW50RXhjZXB0aW9uTWFuYWdlcihuc0lFeGNlcHRpb25NYW5hZ2VyICogKmFDdXJyZW50RXhjZXB0
aW9uTWFuYWdlcikgPSAwOwojIDIxMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUV4
Y2VwdGlvblNlcnZpY2UuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFJlZ2lzdGVyRXhjZXB0aW9uUHJv
dmlkZXIobnNJRXhjZXB0aW9uUHJvdmlkZXIgKnByb3ZpZGVyLCBQUlVpbnQzMiBtb2R1bGVDb2Rl
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFVucmVnaXN0ZXJFeGNlcHRpb25Qcm92aWRlcihu
c0lFeGNlcHRpb25Qcm92aWRlciAqcHJvdmlkZXIsIFBSVWludDMyIG1vZHVsZUNvZGUpID0gMDsK
Cn07CiMgMzkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbm5lY3QvbnNJWFBDb25uZWN0Lmgi
IDIKCgoKCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNwdWJ0ZC5oIiAxCiMgNDAg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc3B1YnRkLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2pzL2pzdHlwZXMuaCIgMQojIDYzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanN0
eXBlcy5oIgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4yLjIvaW5j
bHVkZS9zdGRkZWYuaCIgMSAzCiMgNjQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc3R5cGVz
LmgiIDIKIyAyMzUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc3R5cGVzLmgiCiMgMSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzYXV0b2NmZy5oIiAxCiMgMjM2ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvanMvanN0eXBlcy5oIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pz
b3NkZXAuaCIgMQojIDIzNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzdHlwZXMuaCIgMgoK
CgoKZXh0ZXJuICJDIiB7CiMgMjUxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanN0eXBlcy5o
Igp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgSlNVaW50ODsKdHlwZWRlZiBzaWduZWQgY2hhciBKU0lu
dDg7CiMgMjY0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanN0eXBlcy5oIgp0eXBlZGVmIHVu
c2lnbmVkIHNob3J0IEpTVWludDE2Owp0eXBlZGVmIHNob3J0IEpTSW50MTY7CiMgMjc3ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvanMvanN0eXBlcy5oIgp0eXBlZGVmIHVuc2lnbmVkIGludCBKU1Vp
bnQzMjsKdHlwZWRlZiBpbnQgSlNJbnQzMjsKIyAzMTEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9q
cy9qc3R5cGVzLmgiCnR5cGVkZWYgbG9uZyBsb25nIEpTSW50NjQ7CnR5cGVkZWYgdW5zaWduZWQg
bG9uZyBsb25nIEpTVWludDY0OwojIDMzNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzdHlw
ZXMuaCIKdHlwZWRlZiBpbnQgSlNJbnRuOwp0eXBlZGVmIHVuc2lnbmVkIGludCBKU1VpbnRuOwoj
IDM0NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzdHlwZXMuaCIKdHlwZWRlZiBkb3VibGUg
SlNGbG9hdDY0OwoKCgoKCgp0eXBlZGVmIHNpemVfdCBKU1NpemU7CgoKCgoKCgp0eXBlZGVmIHB0
cmRpZmZfdCBKU1B0cmRpZmY7CgoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgSlNVcHRyZGlm
ZjsKIyAzNzkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc3R5cGVzLmgiCnR5cGVkZWYgSlNJ
bnRuIEpTQm9vbDsKIyAzODkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc3R5cGVzLmgiCnR5
cGVkZWYgSlNVaW50OCBKU1BhY2tlZEJvb2w7CgoKCgp0eXBlZGVmIGxvbmcgSlNXb3JkOwp0eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgSlNVd29yZDsKCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pz
L2pzb3R5cGVzLmgiIDEKIyAzOTggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc3R5cGVzLmgi
IDIKCn0KIyA0MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzcHVidGQuaCIgMgojIDEgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2NvbXBhdC5oIiAxCiMgNDUgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9qcy9qc2NvbXBhdC5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2xv
bmcuaCIgMQojIDQ4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNsb25nLmgiCmV4dGVybiAi
QyIgewojIDY2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNsb25nLmgiCmV4dGVybiBKU0lu
dDY0IEpTTExfTWF4SW50KHZvaWQpOwpleHRlcm4gSlNJbnQ2NCBKU0xMX01pbkludCh2b2lkKTsK
ZXh0ZXJuIEpTSW50NjQgSlNMTF9aZXJvKHZvaWQpOwojIDQzMSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2pzL2pzbG9uZy5oIgp9CiMgNDYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2NvbXBh
dC5oIiAyCgp0eXBlZGVmIEpTSW50biBpbnROOwp0eXBlZGVmIEpTVWludG4gdWludE47CnR5cGVk
ZWYgSlNVd29yZCBqc3V3b3JkOwp0eXBlZGVmIEpTV29yZCBqc3dvcmQ7CnR5cGVkZWYgZmxvYXQg
ZmxvYXQzMjsKIyA0MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzcHVidGQuaCIgMgoKZXh0
ZXJuICJDIiB7CgoKdHlwZWRlZiB1aW50MTYganNjaGFyOwp0eXBlZGVmIGludDMyIGpzaW50Owp0
eXBlZGVmIHVpbnQzMiBqc3VpbnQ7CnR5cGVkZWYgZmxvYXQ2NCBqc2RvdWJsZTsKdHlwZWRlZiBq
c3dvcmQganN2YWw7CnR5cGVkZWYganN3b3JkIGpzaWQ7CnR5cGVkZWYgaW50MzIganNyZWZjb3Vu
dDsKCnR5cGVkZWYgZW51bSBKU1ZlcnNpb24gewogICAgSlNWRVJTSU9OXzFfMCA9IDEwMCwKICAg
IEpTVkVSU0lPTl8xXzEgPSAxMTAsCiAgICBKU1ZFUlNJT05fMV8yID0gMTIwLAogICAgSlNWRVJT
SU9OXzFfMyA9IDEzMCwKICAgIEpTVkVSU0lPTl8xXzQgPSAxNDAsCiAgICBKU1ZFUlNJT05fMV81
ID0gMTUwLAogICAgSlNWRVJTSU9OX0RFRkFVTFQgPSAwLAogICAgSlNWRVJTSU9OX1VOS05PV04g
PSAtMQp9IEpTVmVyc2lvbjsKCgoKCgp0eXBlZGVmIGVudW0gSlNUeXBlIHsKICAgIEpTVFlQRV9W
T0lELAogICAgSlNUWVBFX09CSkVDVCwKICAgIEpTVFlQRV9GVU5DVElPTiwKICAgIEpTVFlQRV9T
VFJJTkcsCiAgICBKU1RZUEVfTlVNQkVSLAogICAgSlNUWVBFX0JPT0xFQU4sCiAgICBKU1RZUEVf
TElNSVQKfSBKU1R5cGU7CgoKdHlwZWRlZiBlbnVtIEpTQWNjZXNzTW9kZSB7CiAgICBKU0FDQ19Q
Uk9UTyA9IDAsCiAgICBKU0FDQ19QQVJFTlQgPSAxLAogICAgSlNBQ0NfSU1QT1JUID0gMiwKICAg
IEpTQUNDX1dBVENIID0gMywKICAgIEpTQUNDX1JFQUQgPSA0LAogICAgSlNBQ0NfV1JJVEUgPSA4
LAogICAgSlNBQ0NfTElNSVQKfSBKU0FjY2Vzc01vZGU7CgoKCgoKCgp0eXBlZGVmIGVudW0gSlNJ
dGVyYXRlT3AgewogICAgSlNFTlVNRVJBVEVfSU5JVCwKICAgIEpTRU5VTUVSQVRFX05FWFQsCiAg
ICBKU0VOVU1FUkFURV9ERVNUUk9ZCn0gSlNJdGVyYXRlT3A7CgoKdHlwZWRlZiBzdHJ1Y3QgSlND
bGFzcyBKU0NsYXNzOwp0eXBlZGVmIHN0cnVjdCBKU0NvbnN0RG91YmxlU3BlYyBKU0NvbnN0RG91
YmxlU3BlYzsKdHlwZWRlZiBzdHJ1Y3QgSlNDb250ZXh0IEpTQ29udGV4dDsKdHlwZWRlZiBzdHJ1
Y3QgSlNFcnJvclJlcG9ydCBKU0Vycm9yUmVwb3J0Owp0eXBlZGVmIHN0cnVjdCBKU0Z1bmN0aW9u
IEpTRnVuY3Rpb247CnR5cGVkZWYgc3RydWN0IEpTRnVuY3Rpb25TcGVjIEpTRnVuY3Rpb25TcGVj
Owp0eXBlZGVmIHN0cnVjdCBKU0lkQXJyYXkgSlNJZEFycmF5Owp0eXBlZGVmIHN0cnVjdCBKU1By
b3BlcnR5IEpTUHJvcGVydHk7CnR5cGVkZWYgc3RydWN0IEpTUHJvcGVydHlTcGVjIEpTUHJvcGVy
dHlTcGVjOwp0eXBlZGVmIHN0cnVjdCBKU09iamVjdCBKU09iamVjdDsKdHlwZWRlZiBzdHJ1Y3Qg
SlNPYmplY3RNYXAgSlNPYmplY3RNYXA7CnR5cGVkZWYgc3RydWN0IEpTT2JqZWN0T3BzIEpTT2Jq
ZWN0T3BzOwp0eXBlZGVmIHN0cnVjdCBKU1J1bnRpbWUgSlNSdW50aW1lOwp0eXBlZGVmIHN0cnVj
dCBKU1J1bnRpbWUgSlNUYXNrU3RhdGU7CnR5cGVkZWYgc3RydWN0IEpTU2NyaXB0IEpTU2NyaXB0
Owp0eXBlZGVmIHN0cnVjdCBKU1N0cmluZyBKU1N0cmluZzsKdHlwZWRlZiBzdHJ1Y3QgSlNYRFJT
dGF0ZSBKU1hEUlN0YXRlOwp0eXBlZGVmIHN0cnVjdCBKU0V4Y2VwdGlvblN0YXRlIEpTRXhjZXB0
aW9uU3RhdGU7CnR5cGVkZWYgc3RydWN0IEpTTG9jYWxlQ2FsbGJhY2tzIEpTTG9jYWxlQ2FsbGJh
Y2tzOwojIDEzMiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzcHVidGQuaCIKdHlwZWRlZiBK
U0Jvb2wKKCogSlNQcm9wZXJ0eU9wKShKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBqc3Zh
bCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganN2YWwgKnZwKTsKIyAxNjMg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc3B1YnRkLmgiCnR5cGVkZWYgSlNCb29sCigqIEpT
TmV3RW51bWVyYXRlT3ApKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBKU0l0ZXJhdGVPcCBlbnVtX29wLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAganN2YWwgKnN0YXRlcCwganNpZCAqaWRwKTsKCgoK
Cgp0eXBlZGVmIEpTQm9vbAooKiBKU0VudW1lcmF0ZU9wKShKU0NvbnRleHQgKmN4LCBKU09iamVj
dCAqb2JqKTsKIyAxODcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc3B1YnRkLmgiCnR5cGVk
ZWYgSlNCb29sCigqIEpTUmVzb2x2ZU9wKShKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBq
c3ZhbCBpZCk7CiMgMjAwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNwdWJ0ZC5oIgp0eXBl
ZGVmIEpTQm9vbAooKiBKU05ld1Jlc29sdmVPcCkoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9i
aiwganN2YWwgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludE4gZmxh
Z3MsIEpTT2JqZWN0ICoqb2JqcCk7CgoKCgoKdHlwZWRlZiBKU0Jvb2wKKCogSlNDb252ZXJ0T3Ap
KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIEpTVHlwZSB0eXBlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGpzdmFsICp2cCk7CgoKCgoKCnR5cGVkZWYgdm9pZAooKiBKU0Zp
bmFsaXplT3ApKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmopOwoKCgoKCnR5cGVkZWYgdm9p
ZAooKiBKU1N0cmluZ0ZpbmFsaXplT3ApKEpTQ29udGV4dCAqY3gsIEpTU3RyaW5nICpzdHIpOwoj
IDI0NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzcHVidGQuaCIKdHlwZWRlZiBKU09iamVj
dE9wcyAqCigqIEpTR2V0T2JqZWN0T3BzKShKU0NvbnRleHQgKmN4LCBKU0NsYXNzICpjbGFzcCk7
CiMgMjYxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNwdWJ0ZC5oIgp0eXBlZGVmIEpTQm9v
bAooKiBKU0NoZWNrQWNjZXNzT3ApKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzdmFs
IGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU0FjY2Vzc01vZGUgbW9k
ZSwganN2YWwgKnZwKTsKCgoKCgp0eXBlZGVmIEpTQm9vbAooKiBKU1hEUk9iamVjdE9wKShKU1hE
UlN0YXRlICp4ZHIsIEpTT2JqZWN0ICoqb2JqcCk7CgoKCgoKCnR5cGVkZWYgSlNCb29sCigqIEpT
SGFzSW5zdGFuY2VPcCkoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwganN2YWwgdiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNCb29sICpicCk7CiMgMjk5ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvanMvanNwdWJ0ZC5oIgp0eXBlZGVmIHVpbnQzMgooKiBKU01hcmtP
cCkoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgdm9pZCAqYXJnKTsKIyAzMTcgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9qcy9qc3B1YnRkLmgiCnR5cGVkZWYgSlNPYmplY3RNYXAgKgooKiBK
U05ld09iamVjdE1hcE9wKShKU0NvbnRleHQgKmN4LCBqc3JlZmNvdW50IG5yZWZzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3RPcHMgKm9wcywgSlNDbGFzcyAq
Y2xhc3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqb2Jq
KTsKCgoKCgp0eXBlZGVmIHZvaWQKKCogSlNPYmplY3RNYXBPcCkoSlNDb250ZXh0ICpjeCwgSlNP
YmplY3RNYXAgKm1hcCk7CiMgMzQ2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNwdWJ0ZC5o
Igp0eXBlZGVmIEpTQm9vbAooKiBKU0xvb2t1cFByb3BPcCkoSlNDb250ZXh0ICpjeCwgSlNPYmpl
Y3QgKm9iaiwganNpZCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09i
amVjdCAqKm9ianAsIEpTUHJvcGVydHkgKipwcm9wcAoKCgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKTsKIyAzNjYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc3B1YnRkLmgi
CnR5cGVkZWYgSlNCb29sCigqIEpTRGVmaW5lUHJvcE9wKShKU0NvbnRleHQgKmN4LCBKU09iamVj
dCAqb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzaWQgaWQsIGpzdmFs
IHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTUHJvcGVydHlPcCBn
ZXR0ZXIsIEpTUHJvcGVydHlPcCBzZXR0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludE4gYXR0cnMsIEpTUHJvcGVydHkgKipwcm9wcCk7CiMgMzgwICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvanMvanNwdWJ0ZC5oIgp0eXBlZGVmIEpTQm9vbAooKiBKU1Byb3BlcnR5SWRP
cCkoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwganNpZCBpZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqc3ZhbCAqdnApOwoKCgoKCgoKdHlwZWRlZiBKU0Jvb2wKKCog
SlNBdHRyaWJ1dGVzT3ApKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzaWQgaWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNQcm9wZXJ0eSAqcHJvcCwgdWludE4g
KmF0dHJzcCk7CgoKCgoKCnR5cGVkZWYgSlNCb29sCigqIEpTQ2hlY2tBY2Nlc3NJZE9wKShKU0Nv
bnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBqc2lkIGlkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEpTQWNjZXNzTW9kZSBtb2RlLCBqc3ZhbCAqdnAsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludE4gKmF0dHJzcCk7CgoKCgoKCnR5cGVkZWYg
SlNPYmplY3QgKgooKiBKU09iamVjdE9wKShKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqKTsK
CgoKCgoKCnR5cGVkZWYgdm9pZAooKiBKU1Byb3BlcnR5UmVmT3ApKEpTQ29udGV4dCAqY3gsIEpT
T2JqZWN0ICpvYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTUHJvcGVy
dHkgKnByb3ApOwoKCgoKCgp0eXBlZGVmIEpTQm9vbAooKiBKU1NldE9iamVjdFNsb3RPcCkoSlND
b250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50MzIgc2xvdCwgSlNPYmplY3QgKnBvYmopOwojIDQ0NCAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2pzL2pzcHVidGQuaCIKdHlwZWRlZiBqc3ZhbAooKiBKU0dldFJlcXVpcmVkU2xv
dE9wKShKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDMyIHNsb3QpOwoKdHlwZWRlZiB2b2lkCigqIEpTU2V0UmVx
dWlyZWRTbG90T3ApKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzIgc2xvdCwganN2YWwgdik7CgoKCnR5cGVk
ZWYgSlNCb29sCigqIEpTTmF0aXZlKShKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCB1aW50
TiBhcmdjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzdmFsICphcmd2LCBqc3ZhbCAq
cnZhbCk7CgoKCnR5cGVkZWYgZW51bSBKU0dDU3RhdHVzIHsKICAgIEpTR0NfQkVHSU4sCiAgICBK
U0dDX0VORCwKICAgIEpTR0NfTUFSS19FTkQsCiAgICBKU0dDX0ZJTkFMSVpFX0VORAp9IEpTR0NT
dGF0dXM7Cgp0eXBlZGVmIEpTQm9vbAooKiBKU0dDQ2FsbGJhY2spKEpTQ29udGV4dCAqY3gsIEpT
R0NTdGF0dXMgc3RhdHVzKTsKCnR5cGVkZWYgSlNCb29sCigqIEpTQnJhbmNoQ2FsbGJhY2spKEpT
Q29udGV4dCAqY3gsIEpTU2NyaXB0ICpzY3JpcHQpOwoKdHlwZWRlZiB2b2lkCigqIEpTRXJyb3JS
ZXBvcnRlcikoSlNDb250ZXh0ICpjeCwgY29uc3QgY2hhciAqbWVzc2FnZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSlNFcnJvclJlcG9ydCAqcmVwb3J0KTsKCnR5cGVkZWYg
c3RydWN0IEpTRXJyb3JGb3JtYXRTdHJpbmcgewogICAgY29uc3QgY2hhciAqZm9ybWF0OwogICAg
dWludE4gYXJnQ291bnQ7Cn0gSlNFcnJvckZvcm1hdFN0cmluZzsKCnR5cGVkZWYgY29uc3QgSlNF
cnJvckZvcm1hdFN0cmluZyAqCigqIEpTRXJyb3JDYWxsYmFjaykodm9pZCAqdXNlclJlZiwgY29u
c3QgY2hhciAqbG9jYWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB1aW50TiBlcnJvck51bWJlcik7CiMgNDk1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNw
dWJ0ZC5oIgp0eXBlZGVmIEpTQm9vbAooKiBKU0xvY2FsZVRvVXBwZXJDYXNlKShKU0NvbnRleHQg
KmN4LCBKU1N0cmluZyAqc3JjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAganN2YWwgKnJ2YWwpOwoKdHlwZWRlZiBKU0Jvb2wKKCogSlNMb2NhbGVUb0xvd2VyQ2FzZSko
SlNDb250ZXh0ICpjeCwgSlNTdHJpbmcgKnNyYywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGpzdmFsICpydmFsKTsKCnR5cGVkZWYgSlNCb29sCigqIEpTTG9jYWxlQ29t
cGFyZSkoSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SlNTdHJpbmcgKnNyYzEsIEpTU3RyaW5nICpzcmMyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqc3ZhbCAqcnZhbCk7CgoKCgp0eXBlZGVmIHN0cnVjdCBKU1ByaW5jaXBhbHMg
SlNQcmluY2lwYWxzOwojIDUyMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzcHVidGQuaCIK
dHlwZWRlZiBKU0Jvb2wKKCogSlNQcmluY2lwYWxzVHJhbnNjb2RlcikoSlNYRFJTdGF0ZSAqeGRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNQcmluY2lwYWxz
ICoqcHJpbmNpcGFsc3ApOwoKfQojIDQ2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb25uZWN0
L25zSVhQQ29ubmVjdC5oIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL3hwdGlu
Zm8uaCIgMQojIDQ0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20veHB0aW5mby5oIgojIDEg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS94cHRfc3RydWN0LmgiIDEKIyA0NiAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL3hwY29tL3hwdF9zdHJ1Y3QuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUveHBjb20veHB0X2FyZW5hLmgiIDEKIyA0NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29tL3hwdF9hcmVuYS5oIgojIDEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMSAzCiMgMzMgIi91
c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51
eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzQgIi91c3IvaW5jbHVkZS9zdGRs
aWIuaCIgMiAzCgpleHRlcm4gIkMiIHsKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93YWl0
ZmxhZ3MuaCIgMSAzCiMgNDMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvd2FpdHN0YXR1cy5oIiAxIDMKIyA2NSAiL3Vzci9pbmNsdWRlL2JpdHMvd2Fp
dHN0YXR1cy5oIiAzCnVuaW9uIHdhaXQKICB7CiAgICBpbnQgd19zdGF0dXM7CiAgICBzdHJ1Y3QK
ICAgICAgewoKICAgICAgICB1bnNpZ25lZCBpbnQgX193X3Rlcm1zaWc6NzsKICAgICAgICB1bnNp
Z25lZCBpbnQgX193X2NvcmVkdW1wOjE7CiAgICAgICAgdW5zaWduZWQgaW50IF9fd19yZXRjb2Rl
Ojg7CiAgICAgICAgdW5zaWduZWQgaW50OjE2OwoKCgoKCgoKICAgICAgfSBfX3dhaXRfdGVybWlu
YXRlZDsKICAgIHN0cnVjdAogICAgICB7CgogICAgICAgIHVuc2lnbmVkIGludCBfX3dfc3RvcHZh
bDo4OwogICAgICAgIHVuc2lnbmVkIGludCBfX3dfc3RvcHNpZzo4OwogICAgICAgIHVuc2lnbmVk
IGludDoxNjsKCgoKCgoKICAgICAgfSBfX3dhaXRfc3RvcHBlZDsKICB9OwojIDQ0ICIvdXNyL2lu
Y2x1ZGUvc3RkbGliLmgiIDIgMwojIDkzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKCgp0eXBl
ZGVmIHN0cnVjdAogIHsKICAgIGludCBxdW90OwogICAgaW50IHJlbTsKICB9IGRpdl90OwoKCgp0
eXBlZGVmIHN0cnVjdAogIHsKICAgIGxvbmcgaW50IHF1b3Q7CiAgICBsb25nIGludCByZW07CiAg
fSBsZGl2X3Q7CgoKCgoKCgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgc3RydWN0CiAgewogICAgbG9u
ZyBsb25nIGludCBxdW90OwogICAgbG9uZyBsb25nIGludCByZW07CiAgfSBsbGRpdl90OwoKCiMg
MTM3ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIHNpemVfdCBfX2N0eXBlX2dldF9t
Yl9jdXJfbWF4ICh2b2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBkb3VibGUgYXRvZiAoX19jb25z
dCBjaGFyICpfX25wdHIpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0
ZXJuIGludCBhdG9pIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gbG9uZyBpbnQgYXRvbCAoX19jb25zdCBjaGFyICpfX25w
dHIpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCl9fZXh0ZW5zaW9u
X18gZXh0ZXJuIGxvbmcgbG9uZyBpbnQgYXRvbGwgKF9fY29uc3QgY2hhciAqX19ucHRyKQogICAg
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBkb3VibGUg
c3RydG9kIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgpOwoKCgoKCmV4dGVybiBm
bG9hdCBzdHJ0b2YgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSB0aHJvdyAoKTsKCmV4dGVybiBs
b25nIGRvdWJsZSBzdHJ0b2xkIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93
ICgpOwoKCgoKCmV4dGVybiBsb25nIGludCBzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLCBpbnQgX19iYXNlKSB0aHJvdyAoKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBzdHJ0
b3VsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAg
ICAgdGhyb3cgKCk7CgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRv
cSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgdGhyb3cgKCk7
CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdXEgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAg
IHRocm93ICgpOwoKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgc3RydG9s
bCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIHRocm93ICgp
OwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VsbCAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQog
ICAgIHRocm93ICgpOwoKIyAyMjkgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gbG9u
ZyBpbnQgc3RydG9sX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2Us
CiAgICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7Cgpl
eHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgc3RydG91bF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7CgpfX2V4dGVuc2lvbl9fCmV4dGVy
biBsb25nIGxvbmcgaW50IHN0cnRvbGxfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwgaW50IF9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2Fs
ZV90IF9fbG9jKSB0aHJvdyAoKTsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcg
bG9uZyBpbnQgc3RydG91bGxfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3Qg
X19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBf
X2Jhc2UsIF9fbG9jYWxlX3QgX19sb2MpCiAgICAgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIHN0
cnRvZF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVfdCBfX2xvYykKICAg
ICB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBzdHJ0b2ZfbCAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwgX19sb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgc3Ry
dG9sZF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBk
b3VibGUgX19zdHJ0b2RfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLCBpbnQgX19ncm91cCkKICAgICB0aHJvdyAoKTsKZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2lu
dGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19ncm91cCkK
ICAgICB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3RydG9sZF9pbnRlcm5hbCAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBfX2dyb3VwKSB0aHJvdyAoKTsKCmV4dGVybiBsb25n
IGludCBfX3N0cnRvbF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQg
X19ncm91cCkgdGhyb3cgKCk7CgoKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxf
aW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNl
LCBpbnQgX19ncm91cCkgdGhyb3cgKCk7CgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxv
bmcgaW50IF9fc3RydG9sbF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgX19iYXNlLCBpbnQgX19ncm91cCkgdGhyb3cgKCk7CgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJu
IHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19zdHJ0b3VsbF9pbnRlcm5hbCAoX19jb25zdCBjaGFy
ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19y
ZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkK
ICAgICB0aHJvdyAoKTsKCgoKCgoKCgpleHRlcm4gX19pbmxpbmUgZG91YmxlCnN0cnRvZCAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIp
IHRocm93ICgpCnsKICByZXR1cm4gX19zdHJ0b2RfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIs
IDApOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGludApzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgIGludCBf
X2Jhc2UpIHRocm93ICgpCnsKICByZXR1cm4gX19zdHJ0b2xfaW50ZXJuYWwgKF9fbnB0ciwgX19l
bmRwdHIsIF9fYmFzZSwgMCk7Cn0KZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcgaW50CnN0
cnRvdWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLAogICAgICAgICBpbnQgX19iYXNlKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9fc3Ry
dG91bF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQoKCgoKZXh0ZXJu
IF9faW5saW5lIGZsb2F0CnN0cnRvZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgpCnsKICByZXR1cm4gX19zdHJ0b2Zf
aW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIDApOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGRv
dWJsZQpzdHJ0b2xkIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0cikgdGhyb3cgKCkKewogIHJldHVybiBfX3N0cnRvbGRfaW50ZXJuYWwg
KF9fbnB0ciwgX19lbmRwdHIsIDApOwp9CgoKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGlu
ZSBsb25nIGxvbmcgaW50CnN0cnRvcSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgaW50IF9fYmFzZSkgdGhyb3cgKCkK
ewogIHJldHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwg
MCk7Cn0KX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBsb25nIGlu
dApzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFzZSkgdGhyb3cgKCkKewogIHJldHVybiBf
X3N0cnRvdWxsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKCgpf
X2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CnN0cnRvbGwgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAog
ICAgICAgICBpbnQgX19iYXNlKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9fc3RydG9sbF9pbnRlcm5h
bCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQpfX2V4dGVuc2lvbl9fIGV4dGVybiBf
X2lubGluZSB1bnNpZ25lZCBsb25nIGxvbmcgaW50CnN0cnRvdWxsIChfX2NvbnN0IGNoYXIgKiBf
X3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICBp
bnQgX19iYXNlKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9fc3RydG91bGxfaW50ZXJuYWwgKF9fbnB0
ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KCgoKCmV4dGVybiBfX2lubGluZSBkb3VibGUKYXRv
ZiAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpCnsKICByZXR1cm4gc3RydG9kIChfX25w
dHIsIChjaGFyICoqKSBfX251bGwpOwp9CmV4dGVybiBfX2lubGluZSBpbnQKYXRvaSAoX19jb25z
dCBjaGFyICpfX25wdHIpIHRocm93ICgpCnsKICByZXR1cm4gKGludCkgc3RydG9sIChfX25wdHIs
IChjaGFyICoqKSBfX251bGwsIDEwKTsKfQpleHRlcm4gX19pbmxpbmUgbG9uZyBpbnQKYXRvbCAo
X19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpCnsKICByZXR1cm4gc3RydG9sIChfX25wdHIs
IChjaGFyICoqKSBfX251bGwsIDEwKTsKfQoKCgoKX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxp
bmUgbG9uZyBsb25nIGludAphdG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpCnsK
ICByZXR1cm4gc3RydG9sbCAoX19ucHRyLCAoY2hhciAqKikgX19udWxsLCAxMCk7Cn0KCiMgNDA4
ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKmw2NGEgKGxvbmcgaW50IF9f
bikgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgaW50IGE2NGwgKF9fY29uc3QgY2hhciAqX19zKSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKIyA0MjEgIi91c3IvaW5jbHVkZS9z
dGRsaWIuaCIgMwpleHRlcm4gbG9uZyBpbnQgcmFuZG9tICh2b2lkKSB0aHJvdyAoKTsKCgpleHRl
cm4gdm9pZCBzcmFuZG9tICh1bnNpZ25lZCBpbnQgX19zZWVkKSB0aHJvdyAoKTsKCgoKCgpleHRl
cm4gY2hhciAqaW5pdHN0YXRlICh1bnNpZ25lZCBpbnQgX19zZWVkLCBjaGFyICpfX3N0YXRlYnVm
LAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zdGF0ZWxlbikgdGhyb3cgKCk7CgoK
CmV4dGVybiBjaGFyICpzZXRzdGF0ZSAoY2hhciAqX19zdGF0ZWJ1ZikgdGhyb3cgKCk7CgoKCgoK
CgpzdHJ1Y3QgcmFuZG9tX2RhdGEKICB7CiAgICBpbnQzMl90ICpmcHRyOwogICAgaW50MzJfdCAq
cnB0cjsKICAgIGludDMyX3QgKnN0YXRlOwogICAgaW50IHJhbmRfdHlwZTsKICAgIGludCByYW5k
X2RlZzsKICAgIGludCByYW5kX3NlcDsKICAgIGludDMyX3QgKmVuZF9wdHI7CiAgfTsKCmV4dGVy
biBpbnQgcmFuZG9tX3IgKHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZiwKICAg
ICAgICAgICAgICAgICAgICAgaW50MzJfdCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7
CgpleHRlcm4gaW50IHNyYW5kb21fciAodW5zaWduZWQgaW50IF9fc2VlZCwgc3RydWN0IHJhbmRv
bV9kYXRhICpfX2J1ZikgdGhyb3cgKCk7CgpleHRlcm4gaW50IGluaXRzdGF0ZV9yICh1bnNpZ25l
ZCBpbnQgX19zZWVkLCBjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCiAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBfX3N0YXRlbGVuLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYpIHRocm93ICgpOwoKZXh0ZXJuIGludCBz
ZXRzdGF0ZV9yIChjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCiAgICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKSB0aHJvdyAoKTsKCgoK
CgoKZXh0ZXJuIGludCByYW5kICh2b2lkKSB0aHJvdyAoKTsKCmV4dGVybiB2b2lkIHNyYW5kICh1
bnNpZ25lZCBpbnQgX19zZWVkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgcmFuZF9yICh1bnNp
Z25lZCBpbnQgKl9fc2VlZCkgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gZG91YmxlIGRyYW5kNDgg
KHZvaWQpIHRocm93ICgpOwpleHRlcm4gZG91YmxlIGVyYW5kNDggKHVuc2lnbmVkIHNob3J0IGlu
dCBfX3hzdWJpWzNdKSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBpbnQgbHJhbmQ0OCAodm9pZCkg
dGhyb3cgKCk7CmV4dGVybiBsb25nIGludCBucmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194
c3ViaVszXSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgaW50IG1yYW5kNDggKHZvaWQpIHRocm93
ICgpOwpleHRlcm4gbG9uZyBpbnQganJhbmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1Ymlb
M10pIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIHNyYW5kNDggKGxvbmcgaW50IF9fc2VlZHZhbCkg
dGhyb3cgKCk7CmV4dGVybiB1bnNpZ25lZCBzaG9ydCBpbnQgKnNlZWQ0OCAodW5zaWduZWQgc2hv
cnQgaW50IF9fc2VlZDE2dlszXSkgdGhyb3cgKCk7CmV4dGVybiB2b2lkIGxjb25nNDggKHVuc2ln
bmVkIHNob3J0IGludCBfX3BhcmFtWzddKSB0aHJvdyAoKTsKCgoKCgpzdHJ1Y3QgZHJhbmQ0OF9k
YXRhCiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IF9feFszXTsKICAgIHVuc2lnbmVkIHNob3J0
IGludCBfX29sZF94WzNdOwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9fYzsKICAgIHVuc2lnbmVk
IHNob3J0IGludCBfX2luaXQ7CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fYTsKICB9OwoK
CmV4dGVybiBpbnQgZHJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9f
YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0
KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBlcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hz
dWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0
cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBf
X3Jlc3VsdCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBscmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4
X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGlu
dCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICh1
bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAg
ICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBt
cmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAg
ICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7
CmV4dGVybiBpbnQganJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZm
ZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkg
dGhyb3cgKCk7CgoKZXh0ZXJuIGludCBzcmFuZDQ4X3IgKGxvbmcgaW50IF9fc2VlZHZhbCwgc3Ry
dWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpCiAgICAgdGhyb3cgKCk7CgpleHRlcm4gaW50IHNl
ZWQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdLAogICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgdGhyb3cgKCk7CgpleHRlcm4gaW50
IGxjb25nNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10sCiAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgdGhyb3cgKCk7CgoKCgoKCgoK
CmV4dGVybiB2b2lkICptYWxsb2MgKHNpemVfdCBfX3NpemUpIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX21hbGxvY19fKSk7CgpleHRlcm4gdm9pZCAqY2FsbG9jIChzaXplX3QgX19ubWVtYiwg
c2l6ZV90IF9fc2l6ZSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykp
OwoKCgoKCgoKZXh0ZXJuIHZvaWQgKnJlYWxsb2MgKHZvaWQgKl9fcHRyLCBzaXplX3QgX19zaXpl
KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKZXh0ZXJuIHZvaWQgZnJl
ZSAodm9pZCAqX19wdHIpIHRocm93ICgpOwoKCgoKZXh0ZXJuIHZvaWQgY2ZyZWUgKHZvaWQgKl9f
cHRyKSB0aHJvdyAoKTsKCgoKIyAxICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDEgMwojIDI1ICIv
dXNyL2luY2x1ZGUvYWxsb2NhLmgiIDMKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGlu
dXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvYWxs
b2NhLmgiIDIgMwoKZXh0ZXJuICJDIiB7CgoKCgoKZXh0ZXJuIHZvaWQgKmFsbG9jYSAoc2l6ZV90
IF9fc2l6ZSkgdGhyb3cgKCk7CgoKCgoKfQojIDU3NyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAy
IDMKCgoKCmV4dGVybiB2b2lkICp2YWxsb2MgKHNpemVfdCBfX3NpemUpIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgpleHRlcm4gaW50IHBvc2l4X21lbWFsaWduICh2
b2lkICoqX19tZW1wdHIsIHNpemVfdCBfX2FsaWdubWVudCwgc2l6ZV90IF9fc2l6ZSkKICAgICB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgoKZXh0ZXJuIHZvaWQgYWJv
cnQgKHZvaWQpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKZXh0
ZXJuIGludCBhdGV4aXQgKHZvaWQgKCpfX2Z1bmMpICh2b2lkKSkgdGhyb3cgKCk7CgoKCgoKZXh0
ZXJuIGludCBvbl9leGl0ICh2b2lkICgqX19mdW5jKSAoaW50IF9fc3RhdHVzLCB2b2lkICpfX2Fy
ZyksIHZvaWQgKl9fYXJnKQogICAgIHRocm93ICgpOwoKCgoKCgpleHRlcm4gdm9pZCBleGl0IChp
bnQgX19zdGF0dXMpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoK
CgoKZXh0ZXJuIHZvaWQgX0V4aXQgKGludCBfX3N0YXR1cykgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKCgpleHRlcm4gY2hhciAqZ2V0ZW52IChfX2NvbnN0IGNo
YXIgKl9fbmFtZSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqX19zZWN1cmVfZ2V0ZW52IChf
X2NvbnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBwdXRlbnYgKGNo
YXIgKl9fc3RyaW5nKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IHNldGVudiAoX19jb25zdCBj
aGFyICpfX25hbWUsIF9fY29uc3QgY2hhciAqX192YWx1ZSwgaW50IF9fcmVwbGFjZSkKICAgICB0
aHJvdyAoKTsKCgpleHRlcm4gaW50IHVuc2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgdGhy
b3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgY2xlYXJlbnYgKHZvaWQpIHRocm93ICgpOwojIDY2MSAi
L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICpta3RlbXAgKGNoYXIgKl9fdGVt
cGxhdGUpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBta3N0ZW1wIChjaGFyICpfX3RlbXBs
YXRlKSB0aHJvdyAoKTsKIyA2NzggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gaW50
IG1rc3RlbXA2NCAoY2hhciAqX190ZW1wbGF0ZSkgdGhyb3cgKCk7CiMgNjg4ICIvdXNyL2luY2x1
ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKm1rZHRlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIHRo
cm93ICgpOwoKCgoKCmV4dGVybiBpbnQgc3lzdGVtIChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCkg
dGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gY2hhciAqY2Fub25pY2FsaXplX2ZpbGVfbmFtZSAoX19j
b25zdCBjaGFyICpfX25hbWUpIHRocm93ICgpOwojIDcxMiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5o
IiAzCmV4dGVybiBjaGFyICpyZWFscGF0aCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fcmVzb2x2ZWQpIHRo
cm93ICgpOwoKCgoKCgp0eXBlZGVmIGludCAoKl9fY29tcGFyX2ZuX3QpIChfX2NvbnN0IHZvaWQg
KiwgX19jb25zdCB2b2lkICopOwoKCnR5cGVkZWYgX19jb21wYXJfZm5fdCBjb21wYXJpc29uX2Zu
X3Q7CgoKCgoKCmV4dGVybiB2b2lkICpic2VhcmNoIChfX2NvbnN0IHZvaWQgKl9fa2V5LCBfX2Nv
bnN0IHZvaWQgKl9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX25tZW1iLCBz
aXplX3QgX19zaXplLCBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIHZvaWQgcXNv
cnQgKHZvaWQgKl9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCiAgICAgICAg
ICAgICAgICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIGludCBhYnMgKGlu
dCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxvbmcg
aW50IGxhYnMgKGxvbmcgaW50IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsb25nIGxvbmcgaW50IGxsYWJzIChsb25nIGxv
bmcgaW50IF9feCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoK
CgoKCgpleHRlcm4gZGl2X3QgZGl2IChpbnQgX19udW1lciwgaW50IF9fZGVub20pCiAgICAgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbGRpdl90IGxkaXYgKGxv
bmcgaW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVub20pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKX19leHRlbnNpb25fXyBleHRlcm4gbGxkaXZfdCBsbGRp
diAobG9uZyBsb25nIGludCBfX251bWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsb25nIGxvbmcgaW50IF9fZGVub20pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKIyA3NzYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hh
ciAqZWN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9f
ZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSB0aHJvdyAo
KTsKCgoKCmV4dGVybiBjaGFyICpmY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBp
bnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmlj
dCBfX3NpZ24pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKmdjdnQgKGRvdWJsZSBfX3ZhbHVl
LCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFyICpx
ZWN2dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAg
ICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSB0aHJv
dyAoKTsKZXh0ZXJuIGNoYXIgKnFmY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGln
aXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19y
ZXN0cmljdCBfX3NpZ24pIHRocm93ICgpOwpleHRlcm4gY2hhciAqcWdjdnQgKGxvbmcgZG91Ymxl
IF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYpIHRocm93ICgpOwoKCgoKZXh0ZXJu
IGludCBlY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmlj
dCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hh
ciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2xlbikgdGhy
b3cgKCk7CmV4dGVybiBpbnQgZmN2dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBp
bnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmlj
dCBfX3NpZ24sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICBzaXpl
X3QgX19sZW4pIHRocm93ICgpOwoKZXh0ZXJuIGludCBxZWN2dF9yIChsb25nIGRvdWJsZSBfX3Zh
bHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9f
ZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAgICAgICAgICAgICAgICAgY2hhciAq
X19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBxZmN2
dF9yIChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAg
ICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAg
ICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSB0aHJv
dyAoKTsKCgoKCgoKCmV4dGVybiBpbnQgbWJsZW4gKF9fY29uc3QgY2hhciAqX19zLCBzaXplX3Qg
X19uKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IG1idG93YyAod2NoYXJfdCAqX19yZXN0cmljdCBf
X3B3YywKICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNp
emVfdCBfX24pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgd2N0b21iIChjaGFyICpfX3MsIHdjaGFy
X3QgX193Y2hhcikgdGhyb3cgKCk7CgoKCmV4dGVybiBzaXplX3QgbWJzdG93Y3MgKHdjaGFyX3Qg
Kl9fcmVzdHJpY3QgX19wd2NzLAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCmV4dGVybiBzaXplX3Qgd2Nz
dG9tYnMgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19wd2NzLCBzaXplX3QgX19uKQogICAgIHRocm93ICgp
OwoKCgoKCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAoX19jb25zdCBjaGFyICpfX3Jlc3BvbnNlKSB0
aHJvdyAoKTsKIyA4NTggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gaW50IGdldHN1
Ym9wdCAoY2hhciAqKl9fcmVzdHJpY3QgX19vcHRpb25wLAogICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqX19jb25zdCAqX19yZXN0cmljdCBfX3Rva2VucywKICAgICAgICAgICAgICAgICAgICAg
IGNoYXIgKipfX3Jlc3RyaWN0IF9fdmFsdWVwKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9pZCBz
ZXRrZXkgKF9fY29uc3QgY2hhciAqX19rZXkpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBw
b3NpeF9vcGVucHQgKGludCBfX29mbGFnKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQgZ3Jh
bnRwdCAoaW50IF9fZmQpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHVubG9ja3B0IChpbnQgX19m
ZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqcHRzbmFtZSAoaW50IF9fZmQpIHRocm93ICgp
OwoKCgoKCgpleHRlcm4gaW50IHB0c25hbWVfciAoaW50IF9fZmQsIGNoYXIgKl9fYnVmLCBzaXpl
X3QgX19idWZsZW4pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgZ2V0cHQgKHZvaWQpIHRocm93ICgp
OwoKCgoKCgpleHRlcm4gaW50IGdldGxvYWRhdmcgKGRvdWJsZSBfX2xvYWRhdmdbXSwgaW50IF9f
bmVsZW0pIHRocm93ICgpOwoKCgoKCn0KIyA0NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29t
L3hwdF9hcmVuYS5oIiAyCiMgNzAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS94cHRfYXJl
bmEuaCIKZXh0ZXJuICJDIiB7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgWFBUQXJlbmEgWFBUQXJlbmE7
CgpYUFRBcmVuYSAqClhQVF9OZXdBcmVuYShQUlVpbnQzMiBibG9ja19zaXplLCBzaXplX3QgYWxp
Z25tZW50LCBjb25zdCBjaGFyKiBuYW1lKTsKCnZvaWQKWFBUX0Rlc3Ryb3lBcmVuYShYUFRBcmVu
YSAqYXJlbmEpOwoKdm9pZApYUFRfRHVtcFN0YXRzKFhQVEFyZW5hICphcmVuYSk7Cgp2b2lkICoK
WFBUX0FyZW5hTWFsbG9jKFhQVEFyZW5hICphcmVuYSwgc2l6ZV90IHNpemUpOwoKY2hhciAqClhQ
VF9BcmVuYVN0ckR1cChYUFRBcmVuYSAqYXJlbmEsIGNvbnN0IGNoYXIgKiBzKTsKCnZvaWQKWFBU
X05vdGlmeURvbmVMb2FkaW5nKFhQVEFyZW5hICphcmVuYSk7Cgp2b2lkClhQVF9BcmVuYUZyZWUo
WFBUQXJlbmEgKmFyZW5hLCB2b2lkKiBibG9jayk7CiMgMTMyICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUveHBjb20veHB0X2FyZW5hLmgiCn0KIyA0NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29t
L3hwdF9zdHJ1Y3QuaCIgMgoKZXh0ZXJuICJDIiB7CiMgNjEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS94cGNvbS94cHRfc3RydWN0LmgiCnR5cGVkZWYgc3RydWN0IFhQVEhlYWRlciBYUFRIZWFkZXI7
CnR5cGVkZWYgc3RydWN0IFhQVEludGVyZmFjZURpcmVjdG9yeUVudHJ5IFhQVEludGVyZmFjZURp
cmVjdG9yeUVudHJ5Owp0eXBlZGVmIHN0cnVjdCBYUFRJbnRlcmZhY2VEZXNjcmlwdG9yIFhQVElu
dGVyZmFjZURlc2NyaXB0b3I7CnR5cGVkZWYgc3RydWN0IFhQVENvbnN0RGVzY3JpcHRvciBYUFRD
b25zdERlc2NyaXB0b3I7CnR5cGVkZWYgc3RydWN0IFhQVE1ldGhvZERlc2NyaXB0b3IgWFBUTWV0
aG9kRGVzY3JpcHRvcjsKdHlwZWRlZiBzdHJ1Y3QgWFBUUGFyYW1EZXNjcmlwdG9yIFhQVFBhcmFt
RGVzY3JpcHRvcjsKdHlwZWRlZiBzdHJ1Y3QgWFBUVHlwZURlc2NyaXB0b3IgWFBUVHlwZURlc2Ny
aXB0b3I7CnR5cGVkZWYgc3RydWN0IFhQVFR5cGVEZXNjcmlwdG9yUHJlZml4IFhQVFR5cGVEZXNj
cmlwdG9yUHJlZml4Owp0eXBlZGVmIHN0cnVjdCBYUFRTdHJpbmcgWFBUU3RyaW5nOwp0eXBlZGVm
IHN0cnVjdCBYUFRBbm5vdGF0aW9uIFhQVEFubm90YXRpb247CiMgMTA0ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUveHBjb20veHB0X3N0cnVjdC5oIgpzdHJ1Y3QgWFBUSGVhZGVyIHsKICAgIFBSVWlu
dDggbWFnaWNbMTZdOwogICAgUFJVaW50OCBtYWpvcl92ZXJzaW9uOwogICAgUFJVaW50OCBtaW5v
cl92ZXJzaW9uOwogICAgUFJVaW50MTYgbnVtX2ludGVyZmFjZXM7CiAgICBQUlVpbnQzMiBmaWxl
X2xlbmd0aDsKICAgIFhQVEludGVyZmFjZURpcmVjdG9yeUVudHJ5ICppbnRlcmZhY2VfZGlyZWN0
b3J5OwogICAgUFJVaW50MzIgZGF0YV9wb29sOwogICAgWFBUQW5ub3RhdGlvbiAqYW5ub3RhdGlv
bnM7Cn07CiMgMTczICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20veHB0X3N0cnVjdC5oIgp0
eXBlZGVmIHN0cnVjdCB7CiAgICBjb25zdCBjaGFyKiBzdHI7CiAgICBQUlVpbnQ4IG1ham9yOwog
ICAgUFJVaW50OCBtaW5vcjsKICAgIFBSVWludDE2IGNvZGU7Cn0gWFBUX1RZUEVMSUJfVkVSU0lP
TlNfU1RSVUNUOwojIDE4NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL3hwdF9zdHJ1Y3Qu
aCIKZXh0ZXJuIFBSVWludDE2ClhQVF9QYXJzZVZlcnNpb25TdHJpbmcoY29uc3QgY2hhciogc3Ry
LCBQUlVpbnQ4KiBtYWpvciwgUFJVaW50OCogbWlub3IpOwoKZXh0ZXJuIFhQVEhlYWRlciAqClhQ
VF9OZXdIZWFkZXIoWFBUQXJlbmEgKmFyZW5hLCBQUlVpbnQxNiBudW1faW50ZXJmYWNlcywKICAg
ICAgICAgICAgICBQUlVpbnQ4IG1ham9yX3ZlcnNpb24sIFBSVWludDggbWlub3JfdmVyc2lvbik7
CgpleHRlcm4gdm9pZApYUFRfRnJlZUhlYWRlcihYUFRBcmVuYSAqYXJlbmEsIFhQVEhlYWRlciog
YUhlYWRlcik7CgoKZXh0ZXJuIFBSVWludDMyClhQVF9TaXplT2ZIZWFkZXIoWFBUSGVhZGVyICpo
ZWFkZXIpOwoKCmV4dGVybiBQUlVpbnQzMgpYUFRfU2l6ZU9mSGVhZGVyQmxvY2soWFBUSGVhZGVy
ICpoZWFkZXIpOwoKCgoKCgoKc3RydWN0IFhQVEludGVyZmFjZURpcmVjdG9yeUVudHJ5IHsKICAg
IG5zSUQgaWlkOwogICAgY2hhciAqbmFtZTsKICAgIGNoYXIgKm5hbWVfc3BhY2U7CiAgICBYUFRJ
bnRlcmZhY2VEZXNjcmlwdG9yICppbnRlcmZhY2VfZGVzY3JpcHRvcjsKCgoKCgp9OwoKZXh0ZXJu
IFBSQm9vbApYUFRfRmlsbEludGVyZmFjZURpcmVjdG9yeUVudHJ5KFhQVEFyZW5hICphcmVuYSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUFRJbnRlcmZhY2VEaXJlY3RvcnlFbnRy
eSAqaWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUQgKmlpZCwgY2hhciAq
bmFtZSwgY2hhciAqbmFtZV9zcGFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBY
UFRJbnRlcmZhY2VEZXNjcmlwdG9yICpkZXNjcmlwdG9yKTsKCmV4dGVybiB2b2lkClhQVF9EZXN0
cm95SW50ZXJmYWNlRGlyZWN0b3J5RW50cnkoWFBUQXJlbmEgKmFyZW5hLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFhQVEludGVyZmFjZURpcmVjdG9yeUVudHJ5KiBpZGUpOwoK
CgoKCnN0cnVjdCBYUFRJbnRlcmZhY2VEZXNjcmlwdG9yIHsKICAgIFBSVWludDE2IHBhcmVudF9p
bnRlcmZhY2U7CiAgICBQUlVpbnQxNiBudW1fbWV0aG9kczsKICAgIFhQVE1ldGhvZERlc2NyaXB0
b3IgKm1ldGhvZF9kZXNjcmlwdG9yczsKICAgIFBSVWludDE2IG51bV9jb25zdGFudHM7CiAgICBY
UFRDb25zdERlc2NyaXB0b3IgKmNvbnN0X2Rlc2NyaXB0b3JzOwogICAgUFJVaW50OCBmbGFnczsK
IyAyNjEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS94cHRfc3RydWN0LmgiCiAgICBYUFRU
eXBlRGVzY3JpcHRvciAqYWRkaXRpb25hbF90eXBlczsKICAgIFBSVWludDE2IG51bV9hZGRpdGlv
bmFsX3R5cGVzOwp9OwojIDI3NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL3hwdF9zdHJ1
Y3QuaCIKZXh0ZXJuIFBSQm9vbApYUFRfR2V0SW50ZXJmYWNlSW5kZXhCeU5hbWUoWFBUSW50ZXJm
YWNlRGlyZWN0b3J5RW50cnkgKmlkZV9ibG9jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBSVWludDE2IG51bV9pbnRlcmZhY2VzLCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUFJVaW50MTYgKmluZGV4cCk7CgpleHRlcm4gWFBUSW50ZXJmYWNlRGVzY3JpcHRv
ciAqClhQVF9OZXdJbnRlcmZhY2VEZXNjcmlwdG9yKFhQVEFyZW5hICphcmVuYSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUFJVaW50MTYgcGFyZW50X2ludGVyZmFjZSwgUFJVaW50MTYgbnVt
X21ldGhvZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSVWludDE2IG51bV9jb25zdGFu
dHMsIFBSVWludDggZmxhZ3MpOwoKZXh0ZXJuIHZvaWQKWFBUX0ZyZWVJbnRlcmZhY2VEZXNjcmlw
dG9yKFhQVEFyZW5hICphcmVuYSwgWFBUSW50ZXJmYWNlRGVzY3JpcHRvciogaWQpOwoKZXh0ZXJu
IFBSQm9vbApYUFRfSW50ZXJmYWNlRGVzY3JpcHRvckFkZFR5cGVzKFhQVEFyZW5hICphcmVuYSwg
WFBUSW50ZXJmYWNlRGVzY3JpcHRvciAqaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUFJVaW50MTYgbnVtKTsKCmV4dGVybiBQUkJvb2wKWFBUX0ludGVyZmFjZURlc2NyaXB0b3JB
ZGRNZXRob2RzKFhQVEFyZW5hICphcmVuYSwgWFBUSW50ZXJmYWNlRGVzY3JpcHRvciAqaWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUlVpbnQxNiBudW0pOwoKZXh0ZXJuIFBS
Qm9vbApYUFRfSW50ZXJmYWNlRGVzY3JpcHRvckFkZENvbnN0cyhYUFRBcmVuYSAqYXJlbmEsIFhQ
VEludGVyZmFjZURlc2NyaXB0b3IgKmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUlVpbnQxNiBudW0pOwoKCgoKCnN0cnVjdCBYUFRTdHJpbmcgewogICAgUFJVaW50MTYgbGVu
Z3RoOwogICAgY2hhciAqYnl0ZXM7Cn07CgpleHRlcm4gWFBUU3RyaW5nICoKWFBUX05ld1N0cmlu
ZyhYUFRBcmVuYSAqYXJlbmEsIFBSVWludDE2IGxlbmd0aCwgY2hhciAqYnl0ZXMpOwoKZXh0ZXJu
IFhQVFN0cmluZyAqClhQVF9OZXdTdHJpbmdaKFhQVEFyZW5hICphcmVuYSwgY2hhciAqYnl0ZXMp
OwojIDMzMiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL3hwdF9zdHJ1Y3QuaCIKc3RydWN0
IFhQVFR5cGVEZXNjcmlwdG9yUHJlZml4IHsKICAgIFBSVWludDggZmxhZ3M7Cn07CiMgMzUyICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20veHB0X3N0cnVjdC5oIgplbnVtIFhQVFR5cGVEZXNj
cmlwdG9yVGFncyB7CiAgICBURF9JTlQ4ID0gMCwKICAgIFREX0lOVDE2ID0gMSwKICAgIFREX0lO
VDMyID0gMiwKICAgIFREX0lOVDY0ID0gMywKICAgIFREX1VJTlQ4ID0gNCwKICAgIFREX1VJTlQx
NiA9IDUsCiAgICBURF9VSU5UMzIgPSA2LAogICAgVERfVUlOVDY0ID0gNywKICAgIFREX0ZMT0FU
ID0gOCwKICAgIFREX0RPVUJMRSA9IDksCiAgICBURF9CT09MID0gMTAsCiAgICBURF9DSEFSID0g
MTEsCiAgICBURF9XQ0hBUiA9IDEyLAogICAgVERfVk9JRCA9IDEzLAogICAgVERfUE5TSUlEID0g
MTQsCiAgICBURF9ET01TVFJJTkcgPSAxNSwKICAgIFREX1BTVFJJTkcgPSAxNiwKICAgIFREX1BX
U1RSSU5HID0gMTcsCiAgICBURF9JTlRFUkZBQ0VfVFlQRSA9IDE4LAogICAgVERfSU5URVJGQUNF
X0lTX1RZUEUgPSAxOSwKICAgIFREX0FSUkFZID0gMjAsCiAgICBURF9QU1RSSU5HX1NJWkVfSVMg
PSAyMSwKICAgIFREX1BXU1RSSU5HX1NJWkVfSVMgPSAyMiwKICAgIFREX1VURjhTVFJJTkcgPSAy
MywKICAgIFREX0NTVFJJTkcgPSAyNCwKICAgIFREX0FTVFJJTkcgPSAyNQp9OwoKc3RydWN0IFhQ
VFR5cGVEZXNjcmlwdG9yIHsKICAgIFhQVFR5cGVEZXNjcmlwdG9yUHJlZml4IHByZWZpeDsKICAg
IFBSVWludDggYXJnbnVtOwogICAgUFJVaW50OCBhcmdudW0yOwogICAgdW5pb24gewogICAgICAg
IFBSVWludDE2IGlmYWNlOwogICAgICAgIFBSVWludDE2IGFkZGl0aW9uYWxfdHlwZTsKICAgIH0g
dHlwZTsKfTsKIyA0MTQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS94cHRfc3RydWN0Lmgi
CnVuaW9uIFhQVENvbnN0VmFsdWUgewogICAgUFJJbnQ4IGk4OwogICAgUFJVaW50OCB1aTg7CiAg
ICBQUkludDE2IGkxNjsKICAgIFBSVWludDE2IHVpMTY7CiAgICBQUkludDMyIGkzMjsKICAgIFBS
VWludDMyIHVpMzI7CiAgICBQUkludDY0IGk2NDsKICAgIFBSVWludDY0IHVpNjQ7CiAgICBmbG9h
dCBmbHQ7CiAgICBkb3VibGUgZGJsOwogICAgUFJCb29sIGJ1bDsKICAgIGNoYXIgY2g7CiAgICBQ
UlVpbnQxNiB3Y2g7CiAgICBuc0lEICppaWQ7CiAgICBYUFRTdHJpbmcgKnN0cmluZzsKICAgIGNo
YXIgKnN0cjsKICAgIFBSVWludDE2ICp3c3RyOwp9OwoKc3RydWN0IFhQVENvbnN0RGVzY3JpcHRv
ciB7CiAgICBjaGFyICpuYW1lOwogICAgWFBUVHlwZURlc2NyaXB0b3IgdHlwZTsKICAgIHVuaW9u
IFhQVENvbnN0VmFsdWUgdmFsdWU7Cn07CgoKCgoKc3RydWN0IFhQVFBhcmFtRGVzY3JpcHRvciB7
CiAgICBQUlVpbnQ4IGZsYWdzOwogICAgWFBUVHlwZURlc2NyaXB0b3IgdHlwZTsKfTsKIyA0Njcg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS94cHRfc3RydWN0LmgiCmV4dGVybiBQUkJvb2wK
WFBUX0ZpbGxQYXJhbURlc2NyaXB0b3IoWFBUQXJlbmEgKmFyZW5hLAogICAgICAgICAgICAgICAg
ICAgICAgICBYUFRQYXJhbURlc2NyaXB0b3IgKnBkLCBQUlVpbnQ4IGZsYWdzLAogICAgICAgICAg
ICAgICAgICAgICAgICBYUFRUeXBlRGVzY3JpcHRvciAqdHlwZSk7CgoKCgoKc3RydWN0IFhQVE1l
dGhvZERlc2NyaXB0b3IgewogICAgY2hhciAqbmFtZTsKICAgIFhQVFBhcmFtRGVzY3JpcHRvciAq
cGFyYW1zOwogICAgWFBUUGFyYW1EZXNjcmlwdG9yICpyZXN1bHQ7CiAgICBQUlVpbnQ4IGZsYWdz
OwogICAgUFJVaW50OCBudW1fYXJnczsKfTsKIyA0OTggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94
cGNvbS94cHRfc3RydWN0LmgiCmV4dGVybiBQUkJvb2wKWFBUX0ZpbGxNZXRob2REZXNjcmlwdG9y
KFhQVEFyZW5hICphcmVuYSwKICAgICAgICAgICAgICAgICAgICAgICAgIFhQVE1ldGhvZERlc2Ny
aXB0b3IgKm1ldGgsIFBSVWludDggZmxhZ3MsIGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBQUlVpbnQ4IG51bV9hcmdzKTsKIyA1MjIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94
cGNvbS94cHRfc3RydWN0LmgiCnN0cnVjdCBYUFRBbm5vdGF0aW9uIHsKICAgIFhQVEFubm90YXRp
b24gKm5leHQ7CiAgICBQUlVpbnQ4IGZsYWdzOwoKICAgIFhQVFN0cmluZyAqY3JlYXRvcjsKICAg
IFhQVFN0cmluZyAqcHJpdmF0ZV9kYXRhOwp9OwoKCgoKCgpleHRlcm4gWFBUQW5ub3RhdGlvbiAq
ClhQVF9OZXdBbm5vdGF0aW9uKFhQVEFyZW5hICphcmVuYSwgUFJVaW50OCBmbGFncywgWFBUU3Ry
aW5nICpjcmVhdG9yLAogICAgICAgICAgICAgICAgICBYUFRTdHJpbmcgKnByaXZhdGVfZGF0YSk7
Cgp9CiMgNDUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS94cHRpbmZvLmgiIDIKIyA3NCAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL3hwdGluZm8uaCIKY2xhc3MgbnNJSW50ZXJmYWNl
SW5mb01hbmFnZXI7CmV4dGVybiAiQyIgewoKbnNJSW50ZXJmYWNlSW5mb01hbmFnZXIqClhQVElf
R2V0SW50ZXJmYWNlSW5mb01hbmFnZXIoKTsKCgp2b2lkClhQVElfRnJlZUludGVyZmFjZUluZm9N
YW5hZ2VyKCk7Cn0KCgoKCgoKCmNsYXNzIG5zWFBUVHlwZSA6IHB1YmxpYyBYUFRUeXBlRGVzY3Jp
cHRvclByZWZpeAp7CgpwdWJsaWM6CiAgICBuc1hQVFR5cGUoKQogICAgICAgIHt9CiAgICBuc1hQ
VFR5cGUoY29uc3QgWFBUVHlwZURlc2NyaXB0b3JQcmVmaXgmIHByZWZpeCkKICAgICAgICB7KihY
UFRUeXBlRGVzY3JpcHRvclByZWZpeCopdGhpcyA9IHByZWZpeDt9CgogICAgbnNYUFRUeXBlKGNv
bnN0IHVpbnQ4JiBwcmVmaXgpCiAgICAgICAgeyoodWludDgqKXRoaXMgPSBwcmVmaXg7fQoKICAg
IG5zWFBUVHlwZSYgb3BlcmF0b3I9KHVpbnQ4IHZhbCkKICAgICAgICB7ZmxhZ3MgPSB2YWw7IHJl
dHVybiAqdGhpczt9CgogICAgbnNYUFRUeXBlJiBvcGVyYXRvcj0oY29uc3QgbnNYUFRUeXBlJiBv
dGhlcikKICAgICAgICB7ZmxhZ3MgPSBvdGhlci5mbGFnczsgcmV0dXJuICp0aGlzO30KCiAgICBv
cGVyYXRvciB1aW50OCgpIGNvbnN0CiAgICAgICAge3JldHVybiBmbGFnczt9CgogICAgUFJCb29s
IElzUG9pbnRlcigpIGNvbnN0CiAgICAgICAge3JldHVybiAwICE9ICgoZmxhZ3MgJiAweDgwKSk7
fQoKICAgIFBSQm9vbCBJc1VuaXF1ZVBvaW50ZXIoKSBjb25zdAogICAgICAgIHtyZXR1cm4gMCAh
PSAoKGZsYWdzICYgMHg0MCkpO30KCiAgICBQUkJvb2wgSXNSZWZlcmVuY2UoKSBjb25zdAogICAg
ICAgIHtyZXR1cm4gMCAhPSAoKGZsYWdzICYgMHgyMCkpO30KCiAgICBQUkJvb2wgSXNBcml0aG1l
dGljKCkgY29uc3QKICAgICAgICB7cmV0dXJuIGZsYWdzIDw9IFRfV0NIQVI7fQoKICAgIFBSQm9v
bCBJc0ludGVyZmFjZVBvaW50ZXIoKSBjb25zdAogICAgICAgIHsgc3dpdGNoIChUYWdQYXJ0KCkp
IHsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICAgICAgY2FzZSBUX0lOVEVSRkFDRToKICAgICAgICAgICAgIGNhc2UgVF9JTlRFUkZBQ0VfSVM6
CiAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgIH0KICAgICAgICB9CgogICAgUFJC
b29sIElzQXJyYXkoKSBjb25zdAogICAgICAgIHtyZXR1cm4gKFBSQm9vbCkgVGFnUGFydCgpID09
IFRfQVJSQVk7fQoKCgoKICAgIFBSQm9vbCBJc0RlcGVuZGVudCgpIGNvbnN0CiAgICAgICAgeyBz
d2l0Y2ggKFRhZ1BhcnQoKSkgewogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgICAgICBjYXNlIFRfSU5URVJGQUNFX0lTOgogICAgICAgICAgICAg
Y2FzZSBURF9BUlJBWToKICAgICAgICAgICAgIGNhc2UgVF9QU1RSSU5HX1NJWkVfSVM6CiAgICAg
ICAgICAgICBjYXNlIFRfUFdTVFJJTkdfU0laRV9JUzoKICAgICAgICAgICAgICAgcmV0dXJuIDE7
CiAgICAgICAgICAgfQogICAgICAgIH0KCiAgICB1aW50OCBUYWdQYXJ0KCkgY29uc3QKICAgICAg
ICB7cmV0dXJuICh1aW50OCkgKGZsYWdzICYgKH4weGUwKSk7fQoKICAgIGVudW0KICAgIHsKICAg
ICAgICBUX0k4ID0gVERfSU5UOCAsCiAgICAgICAgVF9JMTYgPSBURF9JTlQxNiAsCiAgICAgICAg
VF9JMzIgPSBURF9JTlQzMiAsCiAgICAgICAgVF9JNjQgPSBURF9JTlQ2NCAsCiAgICAgICAgVF9V
OCA9IFREX1VJTlQ4ICwKICAgICAgICBUX1UxNiA9IFREX1VJTlQxNiAsCiAgICAgICAgVF9VMzIg
PSBURF9VSU5UMzIgLAogICAgICAgIFRfVTY0ID0gVERfVUlOVDY0ICwKICAgICAgICBUX0ZMT0FU
ID0gVERfRkxPQVQgLAogICAgICAgIFRfRE9VQkxFID0gVERfRE9VQkxFICwKICAgICAgICBUX0JP
T0wgPSBURF9CT09MICwKICAgICAgICBUX0NIQVIgPSBURF9DSEFSICwKICAgICAgICBUX1dDSEFS
ID0gVERfV0NIQVIgLAogICAgICAgIFRfVk9JRCA9IFREX1ZPSUQgLAogICAgICAgIFRfSUlEID0g
VERfUE5TSUlEICwKICAgICAgICBUX0RPTVNUUklORyA9IFREX0RPTVNUUklORyAsCiAgICAgICAg
VF9DSEFSX1NUUiA9IFREX1BTVFJJTkcgLAogICAgICAgIFRfV0NIQVJfU1RSID0gVERfUFdTVFJJ
TkcgLAogICAgICAgIFRfSU5URVJGQUNFID0gVERfSU5URVJGQUNFX1RZUEUgLAogICAgICAgIFRf
SU5URVJGQUNFX0lTID0gVERfSU5URVJGQUNFX0lTX1RZUEUsCiAgICAgICAgVF9BUlJBWSA9IFRE
X0FSUkFZICwKICAgICAgICBUX1BTVFJJTkdfU0laRV9JUyA9IFREX1BTVFJJTkdfU0laRV9JUyAs
CiAgICAgICAgVF9QV1NUUklOR19TSVpFX0lTID0gVERfUFdTVFJJTkdfU0laRV9JUyAsCiAgICAg
ICAgVF9VVEY4U1RSSU5HID0gVERfVVRGOFNUUklORyAsCiAgICAgICAgVF9DU1RSSU5HID0gVERf
Q1NUUklORyAsCiAgICAgICAgVF9BU1RSSU5HID0gVERfQVNUUklORwogICAgfTsKCn07CgpjbGFz
cyBuc1hQVFBhcmFtSW5mbyA6IHB1YmxpYyBYUFRQYXJhbURlc2NyaXB0b3IKewoKcHVibGljOgog
ICAgbnNYUFRQYXJhbUluZm8oY29uc3QgWFBUUGFyYW1EZXNjcmlwdG9yJiBkZXNjKQogICAgICAg
IHsqKFhQVFBhcmFtRGVzY3JpcHRvciopdGhpcyA9IGRlc2M7fQoKCiAgICBQUkJvb2wgSXNJbigp
IGNvbnN0IHtyZXR1cm4gMCAhPSAoKGZsYWdzICYgMHg4MCkpO30KICAgIFBSQm9vbCBJc091dCgp
IGNvbnN0IHtyZXR1cm4gMCAhPSAoKGZsYWdzICYgMHg0MCkpO30KICAgIFBSQm9vbCBJc1JldHZh
bCgpIGNvbnN0IHtyZXR1cm4gMCAhPSAoKGZsYWdzICYgMHgyMCkpO30KICAgIFBSQm9vbCBJc1No
YXJlZCgpIGNvbnN0IHtyZXR1cm4gMCAhPSAoKGZsYWdzICYgMHgxMCkpO30KICAgIFBSQm9vbCBJ
c0RpcHBlcigpIGNvbnN0IHtyZXR1cm4gMCAhPSAoKGZsYWdzICYgMHgwOCkpO30KICAgIGNvbnN0
IG5zWFBUVHlwZSBHZXRUeXBlKCkgY29uc3Qge3JldHVybiB0eXBlLnByZWZpeDt9CgoKCnByaXZh
dGU6CiAgICBuc1hQVFBhcmFtSW5mbygpOwoKfTsKCmNsYXNzIG5zWFBUTWV0aG9kSW5mbyA6IHB1
YmxpYyBYUFRNZXRob2REZXNjcmlwdG9yCnsKCnB1YmxpYzoKICAgIG5zWFBUTWV0aG9kSW5mbyhj
b25zdCBYUFRNZXRob2REZXNjcmlwdG9yJiBkZXNjKQogICAgICAgIHsqKFhQVE1ldGhvZERlc2Ny
aXB0b3IqKXRoaXMgPSBkZXNjO30KCiAgICBQUkJvb2wgSXNHZXR0ZXIoKSBjb25zdCB7cmV0dXJu
IDAgIT0gKChmbGFncyAmIDB4ODApICk7fQogICAgUFJCb29sIElzU2V0dGVyKCkgY29uc3Qge3Jl
dHVybiAwICE9ICgoZmxhZ3MgJiAweDQwKSApO30KICAgIFBSQm9vbCBJc05vdFhQQ09NKCkgY29u
c3Qge3JldHVybiAwICE9ICgoZmxhZ3MgJiAweDIwKSk7fQogICAgUFJCb29sIElzQ29uc3RydWN0
b3IoKSBjb25zdCB7cmV0dXJuIDAgIT0gKChmbGFncyAmIDB4MTApICk7fQogICAgUFJCb29sIElz
SGlkZGVuKCkgY29uc3Qge3JldHVybiAwICE9ICgoZmxhZ3MgJiAweDA4KSApO30KICAgIGNvbnN0
IGNoYXIqIEdldE5hbWUoKSBjb25zdCB7cmV0dXJuIG5hbWU7fQogICAgdWludDggR2V0UGFyYW1D
b3VudCgpIGNvbnN0IHtyZXR1cm4gbnVtX2FyZ3M7fQoKICAgIGNvbnN0IG5zWFBUUGFyYW1JbmZv
IEdldFBhcmFtKHVpbnQ4IGlkeCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICAgIDsKICAgICAg
ICAgICAgcmV0dXJuIHBhcmFtc1tpZHhdOwogICAgICAgIH0KICAgIGNvbnN0IG5zWFBUUGFyYW1J
bmZvIEdldFJlc3VsdCgpIGNvbnN0CiAgICAgICAge3JldHVybiAqcmVzdWx0O30KcHJpdmF0ZToK
ICAgIG5zWFBUTWV0aG9kSW5mbygpOwoKfTsKCgoKc3RydWN0IG5zWFBUQ01pbmlWYXJpYW50OwoK
Y2xhc3MgbnNYUFRDb25zdGFudCA6IHB1YmxpYyBYUFRDb25zdERlc2NyaXB0b3IKewoKcHVibGlj
OgogICAgbnNYUFRDb25zdGFudChjb25zdCBYUFRDb25zdERlc2NyaXB0b3ImIGRlc2MpCiAgICAg
ICAgeyooWFBUQ29uc3REZXNjcmlwdG9yKil0aGlzID0gZGVzYzt9CgogICAgY29uc3QgY2hhciog
R2V0TmFtZSgpIGNvbnN0CiAgICAgICAge3JldHVybiBuYW1lO30KCiAgICBjb25zdCBuc1hQVFR5
cGUgR2V0VHlwZSgpIGNvbnN0CiAgICAgICAge3JldHVybiB0eXBlLnByZWZpeDt9CgoKCgoKICAg
IGNvbnN0IG5zWFBUQ01pbmlWYXJpYW50KiBHZXRWYWx1ZSgpIGNvbnN0CiAgICAgICAge3JldHVy
biAobnNYUFRDTWluaVZhcmlhbnQqKSAmdmFsdWU7fQpwcml2YXRlOgogICAgbnNYUFRDb25zdGFu
dCgpOwoKfTsKIyA0NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29ubmVjdC9uc0lYUENvbm5l
Y3QuaCIgMgojIDExNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29ubmVjdC9uc0lYUENvbm5l
Y3QuaCIKY2xhc3MgbnNJWFBDU2NyaXB0YWJsZTsKCmNsYXNzIG5zSVhQQ29ubmVjdDsKCmNsYXNz
IG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmU7CgpjbGFzcyBuc0lJbnRlcmZhY2VJbmZvOwoKY2xh
c3MgbnNJWFBDU2VjdXJpdHlNYW5hZ2VyOwojIDEzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29ubmVjdC9uc0lYUENvbm5lY3QuaCIKY2xhc3MgbnNJWFBDb25uZWN0SlNPYmplY3RIb2xkZXIg
OiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdl
dElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4ODkxNmEzMjAsIDB4ZDExOCwgMHgx
MWQzLCB7IDB4OGYsIDB4M2EsIDB4MDAsIDB4MTAsIDB4YTQsIDB4ZTcsIDB4M2QsIDB4OWEgfX07
IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRKU09iamVjdChKU09iamVjdCAq
ICphSlNPYmplY3QpID0gMDsKCn07CiMgMjAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb25u
ZWN0L25zSVhQQ29ubmVjdC5oIgpjbGFzcyBuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlIDogcHVi
bGljIG5zSVhQQ29ubmVjdEpTT2JqZWN0SG9sZGVyIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0
IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDIxNWRiZTAyLCAw
eDk0YTcsIDB4MTFkMiwgeyAweGJhLCAweDU4LCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweDVk
LCAweGQ3IH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TmF0aXZlKG5z
SVN1cHBvcnRzICogKmFOYXRpdmUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SlNPYmpl
Y3RQcm90b3R5cGUoSlNPYmplY3QgKiAqYUpTT2JqZWN0UHJvdG90eXBlKSA9IDA7CgoKCgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldFhQQ29ubmVjdChuc0lYUENvbm5lY3QgKiAqYVhQQ29ubmVjdCkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBGaW5kSW50ZXJmYWNlV2l0aE1lbWJlcihqc3ZhbCBu
YW1lSUQsIG5zSUludGVyZmFjZUluZm8gKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEZpbmRJbnRlcmZhY2VXaXRoTmFtZShqc3ZhbCBuYW1lSUQsIG5zSUludGVyZmFjZUluZm8g
KipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IERlYnVnRHVtcChQUkludDE2IGRl
cHRoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFJlZnJlc2hQcm90b3R5cGUodm9pZCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTZWN1cml0eUluZm9BZGRyZXNzKHZvaWQqICogKl9y
ZXR2YWwpID0gMDsKCn07CiMgMzU1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb25uZWN0L25z
SVhQQ29ubmVjdC5oIgpjbGFzcyBuc0lYUENvbm5lY3RXcmFwcGVkSlMgOiBwdWJsaWMgbnNJWFBD
b25uZWN0SlNPYmplY3RIb2xkZXIgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdl
dElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YmVkNTIwMzAsIDB4YmNhNiwgMHgx
MWQyLCB7IDB4YmEsIDB4NzksIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4NWQsIDB4ZDcgfX07
IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRJbnRlcmZhY2VJbmZvKG5zSUlu
dGVyZmFjZUluZm8gKiAqYUludGVyZmFjZUluZm8pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0SW50ZXJmYWNlSUlEKG5zSUlEICogKmFJbnRlcmZhY2VJSUQpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgRGVidWdEdW1wKFBSSW50MTYgZGVwdGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgQWdncmVnYXRlZFF1ZXJ5SW50ZXJmYWNlKGNvbnN0IG5zSUlEICYgdXVpZCwgdm9pZCAqICpy
ZXN1bHQpID0gMDsKCn07CiMgNDY2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb25uZWN0L25z
SVhQQ29ubmVjdC5oIgpjbGFzcyBuc0lYUENOYXRpdmVDYWxsQ29udGV4dCA6IHB1YmxpYyBuc0lT
dXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRp
YyBjb25zdCBuc0lJRCBpaWQgPSB7MHgwZmE2OGE2MCwgMHg4Mjg5LCAweDExZDMsIHsgMHhiYiwg
MHgxYSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHg1ZCwgMHhkNyB9fTsgcmV0dXJuIGlpZDt9
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENhbGxlZShuc0lTdXBwb3J0cyAqICphQ2FsbGVlKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENhbGxlZU1ldGhvZEluZGV4KFBSVWludDE2ICph
Q2FsbGVlTWV0aG9kSW5kZXgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q2FsbGVlV3Jh
cHBlcihuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICogKmFDYWxsZWVXcmFwcGVyKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldEpTQ29udGV4dChKU0NvbnRleHQgKiAqYUpTQ29udGV4dCkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBcmdjKFBSVWludDMyICphQXJnYykgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBcmd2UHRyKGpzdmFsICogKmFBcmd2UHRyKSA9IDA7CgoK
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJldFZhbFB0cihqc3ZhbCAqICphUmV0VmFsUHRyKSA9
IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RXhjZXB0aW9uV2FzVGhyb3duKFBSQm9v
bCAqYUV4Y2VwdGlvbldhc1Rocm93bikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RXhjZXB0
aW9uV2FzVGhyb3duKFBSQm9vbCBhRXhjZXB0aW9uV2FzVGhyb3duKSA9IDA7CgoKCgoKCgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0UmV0dXJuVmFsdWVXYXNTZXQoUFJCb29sICphUmV0dXJuVmFsdWVX
YXNTZXQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFJldHVyblZhbHVlV2FzU2V0KFBSQm9v
bCBhUmV0dXJuVmFsdWVXYXNTZXQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q2FsbGVl
SW50ZXJmYWNlKG5zSUludGVyZmFjZUluZm8gKiAqYUNhbGxlZUludGVyZmFjZSkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRDYWxsZWVDbGFzc0luZm8obnNJQ2xhc3NJbmZvICogKmFDYWxs
ZWVDbGFzc0luZm8pID0gMDsKCn07CiMgNzUzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb25u
ZWN0L25zSVhQQ29ubmVjdC5oIgpjbGFzcyBuc0lYUENXcmFwcGVkSlNPYmplY3RHZXR0ZXIgOiBw
dWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJ
RCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4MjU0YmIyZTAsIDB4NjQzOSwgMHgxMWQ0
LCB7IDB4OGYsIDB4ZTAsIDB4MDAsIDB4MTAsIDB4YTQsIDB4ZTcsIDB4M2QsIDB4OWEgfX07IHJl
dHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROZXZlckNhbGxlZChuc0lTdXBwb3J0
cyAqICphTmV2ZXJDYWxsZWQpID0gMDsKCn07CiMgODIxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
eHBjb25uZWN0L25zSVhQQ29ubmVjdC5oIgpjbGFzcyBuc0lYUENGdW5jdGlvblRoaXNUcmFuc2xh
dG9yIDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlE
JiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDAzOWVmMjYwLCAweDJhMGQs
IDB4MTFkNSwgeyAweDkwLCAweGE3LCAweDAwLCAweDEwLCAweGE0LCAweGU3LCAweDNkLCAweDlh
IH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgVHJhbnNsYXRlVGhpcyhuc0lT
dXBwb3J0cyAqYUluaXRpYWxUaGlzLCBuc0lJbnRlcmZhY2VJbmZvICphSW50ZXJmYWNlSW5mbywg
UFJVaW50MTYgYU1ldGhvZEluZGV4LCBQUkJvb2wgKmFIaWRlRmlyc3RQYXJhbUZyb21KUywgbnNJ
SUQgKiAqYUlJRE9mUmVzdWx0LCBuc0lTdXBwb3J0cyAqKl9yZXR2YWwpID0gMDsKCn07CiMgODkz
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb25uZWN0L25zSVhQQ29ubmVjdC5oIgpjbGFzcyBu
c0lYUENvbm5lY3QgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29u
c3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4ZWZhZTM3YjAs
IDB4OTQ2ZCwgMHgxMWQyLCB7IDB4YmEsIDB4NTgsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4
NWQsIDB4ZDcgfX07IHJldHVybiBpaWQ7fQoKICBzdGF0aWMgY29uc3QgbnNJRCYgR2V0Q0lEKCkg
e3N0YXRpYyBjb25zdCBuc0lEIGNpZCA9IHsgMHhjYjY1OTNlMCwgMHhmOWIyLCAweDExZDIsIHsg
MHhiZCwgMHhkNiwgMHgwLCAweDAsIDB4NjQsIDB4NjUsIDB4NzMsIDB4NzQgfSB9OyByZXR1cm4g
Y2lkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgSW5pdENsYXNzZXMoSlNDb250ZXh0ICogYUpTQ29u
dGV4dCwgSlNPYmplY3QgKiBhR2xvYmFsSlNPYmopID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
SW5pdENsYXNzZXNXaXRoTmV3V3JhcHBlZEdsb2JhbChKU0NvbnRleHQgKiBhSlNDb250ZXh0LCBu
c0lTdXBwb3J0cyAqYUNPTU9iaiwgY29uc3QgbnNJSUQgJiBhSUlELCBQUkJvb2wgYUNhbGxKU19J
bml0U3RhbmRhcmRDbGFzc2VzLCBuc0lYUENvbm5lY3RKU09iamVjdEhvbGRlciAqKl9yZXR2YWwp
ID0gMDsKIyA5MzkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbm5lY3QvbnNJWFBDb25uZWN0
LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBXcmFwTmF0aXZlKEpTQ29udGV4dCAqIGFKU0NvbnRleHQs
IEpTT2JqZWN0ICogYVNjb3BlLCBuc0lTdXBwb3J0cyAqYUNPTU9iaiwgY29uc3QgbnNJSUQgJiBh
SUlELCBuc0lYUENvbm5lY3RKU09iamVjdEhvbGRlciAqKl9yZXR2YWwpID0gMDsKIyA5NjUgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbm5lY3QvbnNJWFBDb25uZWN0LmgiCiAgdmlydHVhbCBu
c3Jlc3VsdCBXcmFwSlMoSlNDb250ZXh0ICogYUpTQ29udGV4dCwgSlNPYmplY3QgKiBhSlNPYmos
IGNvbnN0IG5zSUlEICYgYUlJRCwgdm9pZCAqICpyZXN1bHQpID0gMDsKCgoKCgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldFdyYXBwZWROYXRpdmVPZkpTT2JqZWN0KEpTQ29udGV4dCAqIGFKU0NvbnRl
eHQsIEpTT2JqZWN0ICogYUpTT2JqLCBuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICoqX3JldHZh
bCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRTZWN1cml0eU1hbmFnZXJGb3JKU0NvbnRl
eHQoSlNDb250ZXh0ICogYUpTQ29udGV4dCwgbnNJWFBDU2VjdXJpdHlNYW5hZ2VyICphTWFuYWdl
ciwgUFJVaW50MTYgZmxhZ3MpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2VjdXJpdHlN
YW5hZ2VyRm9ySlNDb250ZXh0KEpTQ29udGV4dCAqIGFKU0NvbnRleHQsIG5zSVhQQ1NlY3VyaXR5
TWFuYWdlciAqKmFNYW5hZ2VyLCBQUlVpbnQxNiAqZmxhZ3MpID0gMDsKCgoKCgoKICB2aXJ0dWFs
IG5zcmVzdWx0IFNldERlZmF1bHRTZWN1cml0eU1hbmFnZXIobnNJWFBDU2VjdXJpdHlNYW5hZ2Vy
ICphTWFuYWdlciwgUFJVaW50MTYgZmxhZ3MpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
RGVmYXVsdFNlY3VyaXR5TWFuYWdlcihuc0lYUENTZWN1cml0eU1hbmFnZXIgKiphTWFuYWdlciwg
UFJVaW50MTYgKmZsYWdzKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENyZWF0ZVN0YWNrRnJh
bWVMb2NhdGlvbihQUlVpbnQzMiBhTGFuZ3VhZ2UsIGNvbnN0IGNoYXIgKmFGaWxlbmFtZSwgY29u
c3QgY2hhciAqYUZ1bmN0aW9uTmFtZSwgUFJJbnQzMiBhTGluZU51bWJlciwgbnNJU3RhY2tGcmFt
ZSAqYUNhbGxlciwgbnNJU3RhY2tGcmFtZSAqKl9yZXR2YWwpID0gMDsKIyAxMDAxICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUveHBjb25uZWN0L25zSVhQQ29ubmVjdC5oIgogIHZpcnR1YWwgbnNyZXN1
bHQgU3luY0pTQ29udGV4dHModm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDdXJy
ZW50SlNTdGFjayhuc0lTdGFja0ZyYW1lICogKmFDdXJyZW50SlNTdGFjaykgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRDdXJyZW50TmF0aXZlQ2FsbENvbnRleHQobnNJWFBDTmF0aXZlQ2Fs
bENvbnRleHQgKiAqYUN1cnJlbnROYXRpdmVDYWxsQ29udGV4dCkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRQZW5kaW5nRXhjZXB0aW9uKG5zSUV4Y2VwdGlvbiAqICphUGVuZGluZ0V4Y2Vw
dGlvbikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UGVuZGluZ0V4Y2VwdGlvbihuc0lFeGNl
cHRpb24gKiBhUGVuZGluZ0V4Y2VwdGlvbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBEZWJ1
Z0R1bXAoUFJJbnQxNiBkZXB0aCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBEZWJ1Z0R1bXBP
YmplY3QobnNJU3VwcG9ydHMgKmFDT01PYmosIFBSSW50MTYgZGVwdGgpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgRGVidWdEdW1wSlNTdGFjayhQUkJvb2wgc2hvd0FyZ3MsIFBSQm9vbCBzaG93
TG9jYWxzLCBQUkJvb2wgc2hvd1RoaXNQcm9wcykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBE
ZWJ1Z0R1bXBFdmFsSW5KU1N0YWNrRnJhbWUoUFJVaW50MzIgYUZyYW1lTnVtYmVyLCBjb25zdCBj
aGFyICphU291cmNlVGV4dCkgPSAwOwojIDEwMzMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNv
bm5lY3QvbnNJWFBDb25uZWN0LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRTYWZlSlNDb250ZXh0
Rm9yQ3VycmVudFRocmVhZChKU0NvbnRleHQgKiBjeCkgPSAwOwojIDEwNTAgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS94cGNvbm5lY3QvbnNJWFBDb25uZWN0LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBX
cmFwSlNBZ2dyZWdhdGVkVG9OYXRpdmUobnNJU3VwcG9ydHMgKmFPdXRlciwgSlNDb250ZXh0ICog
YUpTQ29udGV4dCwgSlNPYmplY3QgKiBhSlNPYmosIGNvbnN0IG5zSUlEICYgYUlJRCwgdm9pZCAq
ICpyZXN1bHQpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFdyYXBwZWROYXRpdmVP
Zk5hdGl2ZU9iamVjdChKU0NvbnRleHQgKiBhSlNDb250ZXh0LCBKU09iamVjdCAqIGFTY29wZSwg
bnNJU3VwcG9ydHMgKmFDT01PYmosIGNvbnN0IG5zSUlEICYgYUlJRCwgbnNJWFBDb25uZWN0V3Jh
cHBlZE5hdGl2ZSAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RnVuY3Rp
b25UaGlzVHJhbnNsYXRvcihjb25zdCBuc0lJRCAmIGFJSUQsIG5zSVhQQ0Z1bmN0aW9uVGhpc1Ry
YW5zbGF0b3IgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEZ1bmN0aW9u
VGhpc1RyYW5zbGF0b3IoY29uc3QgbnNJSUQgJiBhSUlELCBuc0lYUENGdW5jdGlvblRoaXNUcmFu
c2xhdG9yICphVHJhbnNsYXRvciwgbnNJWFBDRnVuY3Rpb25UaGlzVHJhbnNsYXRvciAqKl9yZXR2
YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVwYXJlbnRXcmFwcGVkTmF0aXZlSWZGb3Vu
ZChKU0NvbnRleHQgKiBhSlNDb250ZXh0LCBKU09iamVjdCAqIGFTY29wZSwgSlNPYmplY3QgKiBh
TmV3UGFyZW50LCBuc0lTdXBwb3J0cyAqYUNPTU9iaiwgbnNJWFBDb25uZWN0SlNPYmplY3RIb2xk
ZXIgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENsZWFyQWxsV3JhcHBlZE5h
dGl2ZVNlY3VyaXR5UG9saWNpZXModm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRX
cmFwcGVkTmF0aXZlUHJvdG90eXBlKEpTQ29udGV4dCAqIGFKU0NvbnRleHQsIEpTT2JqZWN0ICog
YVNjb3BlLCBuc0lDbGFzc0luZm8gKmFDbGFzc0luZm8sIG5zSVhQQ29ubmVjdEpTT2JqZWN0SG9s
ZGVyICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb2xsZWN0R2FyYmFn
ZU9uTWFpblRocmVhZE9ubHkoUFJCb29sICphQ29sbGVjdEdhcmJhZ2VPbk1haW5UaHJlYWRPbmx5
KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDb2xsZWN0R2FyYmFnZU9uTWFpblRocmVhZE9u
bHkoUFJCb29sIGFDb2xsZWN0R2FyYmFnZU9uTWFpblRocmVhZE9ubHkpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0RGVmZXJSZWxlYXNlc1VudGlsQWZ0ZXJHYXJiYWdlQ29sbGVjdGlvbihQ
UkJvb2wgKmFEZWZlclJlbGVhc2VzVW50aWxBZnRlckdhcmJhZ2VDb2xsZWN0aW9uKSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXREZWZlclJlbGVhc2VzVW50aWxBZnRlckdhcmJhZ2VDb2xsZWN0
aW9uKFBSQm9vbCBhRGVmZXJSZWxlYXNlc1VudGlsQWZ0ZXJHYXJiYWdlQ29sbGVjdGlvbikgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZWxlYXNlSlNDb250ZXh0KEpTQ29udGV4dCAqIGFKU0Nv
bnRleHQsIFBSQm9vbCBub0dDKSA9IDA7Cgp9OwojIDE1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
eHBjb25uZWN0L25zSVhQQ1NjcmlwdGFibGUuaCIgMgojIDMxICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUveHBjb25uZWN0L25zSVhQQ1NjcmlwdGFibGUuaCIKY2xhc3MgbnNJWFBDU2NyaXB0YWJsZSA6
IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0
SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhmYTJjM2I4MCwgMHgwZTlkLCAweDEx
ZDUsIHsgMHg5MCwgMHg5MiwgMHgwMCwgMHgxMCwgMHhhNCwgMHhlNywgMHgzZCwgMHg5YSB9fTsg
cmV0dXJuIGlpZDt9CgogIGVudW0geyBXQU5UX1BSRUNSRUFURSA9IDFVIH07CgogIGVudW0geyBX
QU5UX0NSRUFURSA9IDJVIH07CgogIGVudW0geyBXQU5UX1BPU1RDUkVBVEUgPSA0VSB9OwoKICBl
bnVtIHsgV0FOVF9BRERQUk9QRVJUWSA9IDhVIH07CgogIGVudW0geyBXQU5UX0RFTFBST1BFUlRZ
ID0gMTZVIH07CgogIGVudW0geyBXQU5UX0dFVFBST1BFUlRZID0gMzJVIH07CgogIGVudW0geyBX
QU5UX1NFVFBST1BFUlRZID0gNjRVIH07CgogIGVudW0geyBXQU5UX0VOVU1FUkFURSA9IDEyOFUg
fTsKCiAgZW51bSB7IFdBTlRfTkVXRU5VTUVSQVRFID0gMjU2VSB9OwoKICBlbnVtIHsgV0FOVF9O
RVdSRVNPTFZFID0gNTEyVSB9OwoKICBlbnVtIHsgV0FOVF9DT05WRVJUID0gMTAyNFUgfTsKCiAg
ZW51bSB7IFdBTlRfRklOQUxJWkUgPSAyMDQ4VSB9OwoKICBlbnVtIHsgV0FOVF9DSEVDS0FDQ0VT
UyA9IDQwOTZVIH07CgogIGVudW0geyBXQU5UX0NBTEwgPSA4MTkyVSB9OwoKICBlbnVtIHsgV0FO
VF9DT05TVFJVQ1QgPSAxNjM4NFUgfTsKCiAgZW51bSB7IFdBTlRfSEFTSU5TVEFOQ0UgPSAzMjc2
OFUgfTsKCiAgZW51bSB7IFdBTlRfTUFSSyA9IDY1NTM2VSB9OwoKICBlbnVtIHsgVVNFX0pTU1RV
Ql9GT1JfQUREUFJPUEVSVFkgPSAxMzEwNzJVIH07CgogIGVudW0geyBVU0VfSlNTVFVCX0ZPUl9E
RUxQUk9QRVJUWSA9IDI2MjE0NFUgfTsKCiAgZW51bSB7IFVTRV9KU1NUVUJfRk9SX1NFVFBST1BF
UlRZID0gNTI0Mjg4VSB9OwoKICBlbnVtIHsgRE9OVF9FTlVNX1NUQVRJQ19QUk9QUyA9IDEwNDg1
NzZVIH07CgogIGVudW0geyBET05UX0VOVU1fUVVFUllfSU5URVJGQUNFID0gMjA5NzE1MlUgfTsK
CiAgZW51bSB7IERPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFID0gNDE5NDMwNFUgfTsK
CiAgZW51bSB7IENMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkgPSA4Mzg4NjA4VSB9OwoKICBlbnVt
IHsgQUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFID0gMTY3NzcyMTZVIH07CgogIGVudW0g
eyBBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFID0gMzM1NTQ0MzJVIH07CgogIGVudW0geyBE
T05UX1NIQVJFX1BST1RPVFlQRSA9IDY3MTA4ODY0VSB9OwoKICBlbnVtIHsgRE9OVF9SRUZMRUNU
X0lOVEVSRkFDRV9OQU1FUyA9IDEzNDIxNzcyOFUgfTsKCiAgZW51bSB7IFJFU0VSVkVEID0gMjE0
NzQ4MzY0OFUgfTsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q2xhc3NOYW1lKGNoYXIgKiAqYUNs
YXNzTmFtZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTY3JpcHRhYmxlRmxhZ3MoUFJV
aW50MzIgKmFTY3JpcHRhYmxlRmxhZ3MpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUHJlQ3Jl
YXRlKG5zSVN1cHBvcnRzICpuYXRpdmVPYmosIEpTQ29udGV4dCAqIGN4LCBKU09iamVjdCAqIGds
b2JhbE9iaiwgSlNPYmplY3QgKiAqcGFyZW50T2JqKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IENyZWF0ZShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKiBj
eCwgSlNPYmplY3QgKiBvYmopID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUG9zdENyZWF0ZShu
c0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKiBjeCwgSlNPYmpl
Y3QgKiBvYmopID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQWRkUHJvcGVydHkobnNJWFBDb25u
ZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICogY3gsIEpTT2JqZWN0ICogb2Jq
LCBqc3ZhbCBpZCwganN2YWwgKiB2cCwgUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IERlbFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIs
IEpTQ29udGV4dCAqIGN4LCBKU09iamVjdCAqIG9iaiwganN2YWwgaWQsIGpzdmFsICogdnAsIFBS
Qm9vbCAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQcm9wZXJ0eShuc0lY
UENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKiBjeCwgSlNPYmplY3Qg
KiBvYmosIGpzdmFsIGlkLCBqc3ZhbCAqIHZwLCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgU2V0UHJvcGVydHkobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3Jh
cHBlciwgSlNDb250ZXh0ICogY3gsIEpTT2JqZWN0ICogb2JqLCBqc3ZhbCBpZCwganN2YWwgKiB2
cCwgUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEVudW1lcmF0ZShu
c0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKiBjeCwgSlNPYmpl
Y3QgKiBvYmosIFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBOZXdF
bnVtZXJhdGUobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICog
Y3gsIEpTT2JqZWN0ICogb2JqLCBQUlVpbnQzMiBlbnVtX29wLCBqc3ZhbCAqIHN0YXRlcCwganNp
ZCAqaWRwLCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgTmV3UmVz
b2x2ZShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKiBjeCwg
SlNPYmplY3QgKiBvYmosIGpzdmFsIGlkLCBQUlVpbnQzMiBmbGFncywgSlNPYmplY3QgKiAqb2Jq
cCwgUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENvbnZlcnQobnNJ
WFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICogY3gsIEpTT2JqZWN0
ICogb2JqLCBQUlVpbnQzMiB0eXBlLCBqc3ZhbCAqIHZwLCBQUkJvb2wgKl9yZXR2YWwpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgRmluYWxpemUobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAq
d3JhcHBlciwgSlNDb250ZXh0ICogY3gsIEpTT2JqZWN0ICogb2JqKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IENoZWNrQWNjZXNzKG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIs
IEpTQ29udGV4dCAqIGN4LCBKU09iamVjdCAqIG9iaiwganN2YWwgaWQsIFBSVWludDMyIG1vZGUs
IGpzdmFsICogdnAsIFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBD
YWxsKG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqIGN4LCBK
U09iamVjdCAqIG9iaiwgUFJVaW50MzIgYXJnYywganN2YWwgKiBhcmd2LCBqc3ZhbCAqIHZwLCBQ
UkJvb2wgKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ29uc3RydWN0KG5zSVhQ
Q29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqIGN4LCBKU09iamVjdCAq
IG9iaiwgUFJVaW50MzIgYXJnYywganN2YWwgKiBhcmd2LCBqc3ZhbCAqIHZwLCBQUkJvb2wgKl9y
ZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSGFzSW5zdGFuY2UobnNJWFBDb25uZWN0
V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICogY3gsIEpTT2JqZWN0ICogb2JqLCBq
c3ZhbCB2YWwsIFBSQm9vbCAqYnAsIFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBNYXJrKG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4
dCAqIGN4LCBKU09iamVjdCAqIG9iaiwgdm9pZCAqIGFyZywgUFJVaW50MzIgKl9yZXR2YWwpID0g
MDsKCn07CiMgMjc0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNsYXNzSW5mby5o
IiAyCiMgMjkzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNsYXNzSW5mby5oIgp0
eXBlZGVmIG5zSUNsYXNzSW5mbyogKCpuc0RPTUNsYXNzSW5mb0V4dGVybmFsQ29uc3RydWN0b3JG
bmMpCiAgKGNvbnN0IGNoYXIqIGFOYW1lKTsKIyAzMTIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9k
b20vbnNJRE9NQ2xhc3NJbmZvLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25z
SVNlcnZpY2VNYW5hZ2VyLmgiIDEKIyA0MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25z
SVNlcnZpY2VNYW5hZ2VyLmgiCmNsYXNzIG5zSVNlcnZpY2VNYW5hZ2VyIDogcHVibGljIG5zSVN1
cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGlj
IGNvbnN0IG5zSUlEIGlpZCA9IHsweDhiYjM1ZWQ5LCAweGUzMzIsIDB4NDYyZCwgeyAweDkxLCAw
eDU1LCAweDRhLCAweDAwLCAweDJhLCAweGI1LCAweGM5LCAweDU4IH19OyByZXR1cm4gaWlkO30K
IyA1NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVNlcnZpY2VNYW5hZ2VyLmgiCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRTZXJ2aWNlKGNvbnN0IG5zQ0lEICYgYUNsYXNzLCBjb25zdCBu
c0lJRCAmIGFJSUQsIHZvaWQgKiAqcmVzdWx0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dFNlcnZpY2VCeUNvbnRyYWN0SUQoY29uc3QgY2hhciAqYUNvbnRyYWN0SUQsIGNvbnN0IG5zSUlE
ICYgYUlJRCwgdm9pZCAqICpyZXN1bHQpID0gMDsKIyA3NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3hwY29tL25zSVNlcnZpY2VNYW5hZ2VyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBJc1NlcnZpY2VJ
bnN0YW50aWF0ZWQoY29uc3QgbnNDSUQgJiBhQ2xhc3MsIGNvbnN0IG5zSUlEICYgYUlJRCwgUFJC
b29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IElzU2VydmljZUluc3RhbnRp
YXRlZEJ5Q29udHJhY3RJRChjb25zdCBjaGFyICphQ29udHJhY3RJRCwgY29uc3QgbnNJSUQgJiBh
SUlELCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKCn07CiMgMTY2ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUveHBjb20vbnNJU2VydmljZU1hbmFnZXIuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
eHBjb20vbnNYUENPTS5oIiAxCiMgNDIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc1hQ
Q09NLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zWFBDT01DSUQuaCIgMQoj
IDQzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNYUENPTS5oIiAyCgpjbGFzcyBuc0FT
dHJpbmc7CmNsYXNzIG5zQUNTdHJpbmc7CgpjbGFzcyBuc0lDb21wb25lbnRNYW5hZ2VyOwpjbGFz
cyBuc0lDb21wb25lbnRSZWdpc3RyYXI7CmNsYXNzIG5zSVNlcnZpY2VNYW5hZ2VyOwpjbGFzcyBu
c0lGaWxlOwpjbGFzcyBuc0lMb2NhbEZpbGU7CmNsYXNzIG5zSURpcmVjdG9yeVNlcnZpY2VQcm92
aWRlcjsKY2xhc3MgbnNJTWVtb3J5OwojIDkwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20v
bnNYUENPTS5oIgpleHRlcm4gIkMiIG5zcmVzdWx0Ck5TX0luaXRYUENPTTIobnNJU2VydmljZU1h
bmFnZXIqICpyZXN1bHQsCiAgICAgICAgICAgICAgbnNJRmlsZSogYmluRGlyZWN0b3J5LAogICAg
ICAgICAgICAgIG5zSURpcmVjdG9yeVNlcnZpY2VQcm92aWRlciogYXBwRmlsZUxvY2F0aW9uUHJv
dmlkZXIpOwojIDEwNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zWFBDT00uaCIKZXh0
ZXJuICJDIiBuc3Jlc3VsdApOU19TaHV0ZG93blhQQ09NKG5zSVNlcnZpY2VNYW5hZ2VyKiBzZXJ2
TWdyKTsKIyAxMjEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc1hQQ09NLmgiCmV4dGVy
biAiQyIgbnNyZXN1bHQKTlNfR2V0U2VydmljZU1hbmFnZXIobnNJU2VydmljZU1hbmFnZXIqICpy
ZXN1bHQpOwojIDEzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zWFBDT00uaCIKZXh0
ZXJuICJDIiBuc3Jlc3VsdApOU19HZXRDb21wb25lbnRNYW5hZ2VyKG5zSUNvbXBvbmVudE1hbmFn
ZXIqICpyZXN1bHQpOwojIDE0NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zWFBDT00u
aCIKZXh0ZXJuICJDIiBuc3Jlc3VsdApOU19HZXRDb21wb25lbnRSZWdpc3RyYXIobnNJQ29tcG9u
ZW50UmVnaXN0cmFyKiAqcmVzdWx0KTsKIyAxNjAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNv
bS9uc1hQQ09NLmgiCmV4dGVybiAiQyIgbnNyZXN1bHQKTlNfR2V0TWVtb3J5TWFuYWdlcihuc0lN
ZW1vcnkqICpyZXN1bHQpOwojIDE4NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zWFBD
T00uaCIKZXh0ZXJuICJDIiBuc3Jlc3VsdApOU19OZXdMb2NhbEZpbGUoY29uc3QgbnNBU3RyaW5n
ICZwYXRoLAogICAgICAgICAgICAgICAgUFJCb29sIGZvbGxvd0xpbmtzLAogICAgICAgICAgICAg
ICAgbnNJTG9jYWxGaWxlKiAqcmVzdWx0KTsKCmV4dGVybiAiQyIgbnNyZXN1bHQKTlNfTmV3TmF0
aXZlTG9jYWxGaWxlKGNvbnN0IG5zQUNTdHJpbmcgJnBhdGgsCiAgICAgICAgICAgICAgICAgICAg
ICBQUkJvb2wgZm9sbG93TGlua3MsCiAgICAgICAgICAgICAgICAgICAgICBuc0lMb2NhbEZpbGUq
ICpyZXN1bHQpOwojIDE2NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVNlcnZpY2VN
YW5hZ2VyLmgiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJU2VydmljZU1h
bmFnZXJVdGlscy5oIiAxCiMgNDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTZXJ2
aWNlTWFuYWdlclV0aWxzLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVNl
cnZpY2VNYW5hZ2VyLmgiIDEKIyA0MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVNl
cnZpY2VNYW5hZ2VyVXRpbHMuaCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9u
c0lTZXJ2aWNlTWFuYWdlck9ic29sZXRlLmgiIDEKIyA1OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3hwY29tL25zSVNlcnZpY2VNYW5hZ2VyT2Jzb2xldGUuaCIKY2xhc3MgbnNJU2VydmljZU1hbmFn
ZXI7CmNsYXNzIG5zSVNodXRkb3duTGlzdGVuZXI7CmNsYXNzIG5zSURpcmVjdG9yeVNlcnZpY2VQ
cm92aWRlcjsKCmNsYXNzIG5zU2VydmljZU1hbmFnZXJPYnNvbGV0ZTsKIyA3NyAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL3hwY29tL25zSVNlcnZpY2VNYW5hZ2VyT2Jzb2xldGUuaCIKY2xhc3MgbnNJ
U2VydmljZU1hbmFnZXJPYnNvbGV0ZSA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CnB1YmxpYzoKCiAg
ICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0g
eyAweGNmMGRmM2IwLCAweDM0MDEsIDB4MTFkMiwgezB4ODEsIDB4NjMsIDB4MDAsIDB4NjAsIDB4
MDgsIDB4MTEsIDB4OWQsIDB4N2F9IH07IHJldHVybiBpaWQ7fTsKCgoKCgoKCiAgICB2aXJ0dWFs
IG5zcmVzdWx0CiAgICBSZWdpc3RlclNlcnZpY2UoY29uc3QgbnNDSUQmIGFDbGFzcywgbnNJU3Vw
cG9ydHMqIGFTZXJ2aWNlKSA9IDA7CiMgMTAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20v
bnNJU2VydmljZU1hbmFnZXJPYnNvbGV0ZS5oIgogICAgdmlydHVhbCBuc3Jlc3VsdAogICAgVW5y
ZWdpc3RlclNlcnZpY2UoY29uc3QgbnNDSUQmIGFDbGFzcykgPSAwOwoKICAgIHZpcnR1YWwgbnNy
ZXN1bHQKICAgIEdldFNlcnZpY2UoY29uc3QgbnNDSUQmIGFDbGFzcywgY29uc3QgbnNJSUQmIGFJ
SUQsCiAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzKiAqcmVzdWx0LAogICAgICAgICAgICAgICBu
c0lTaHV0ZG93bkxpc3RlbmVyKiBzaHV0ZG93bkxpc3RlbmVyID0gMCkgPSAwOwoKCiAgICB2aXJ0
dWFsIG5zcmVzdWx0CiAgICBSZWxlYXNlU2VydmljZShjb25zdCBuc0NJRCYgYUNsYXNzLCBuc0lT
dXBwb3J0cyogc2VydmljZSwKICAgICAgICAgICAgICAgICAgIG5zSVNodXRkb3duTGlzdGVuZXIq
IHNodXRkb3duTGlzdGVuZXIgPSAwKSA9IDA7CgoKCgogICAgdmlydHVhbCBuc3Jlc3VsdAogICAg
UmVnaXN0ZXJTZXJ2aWNlKGNvbnN0IGNoYXIqIGFDb250cmFjdElELCBuc0lTdXBwb3J0cyogYVNl
cnZpY2UpID0gMDsKCiAgICB2aXJ0dWFsIG5zcmVzdWx0CiAgICBVbnJlZ2lzdGVyU2VydmljZShj
b25zdCBjaGFyKiBhQ29udHJhY3RJRCkgPSAwOwoKICAgIHZpcnR1YWwgbnNyZXN1bHQKICAgIEdl
dFNlcnZpY2UoY29uc3QgY2hhciogYUNvbnRyYWN0SUQsIGNvbnN0IG5zSUlEJiBhSUlELAogICAg
ICAgICAgICAgICBuc0lTdXBwb3J0cyogKnJlc3VsdCwKICAgICAgICAgICAgICAgbnNJU2h1dGRv
d25MaXN0ZW5lciogc2h1dGRvd25MaXN0ZW5lciA9IDApID0gMDsKCgogICAgdmlydHVhbCBuc3Jl
c3VsdAogICAgUmVsZWFzZVNlcnZpY2UoY29uc3QgY2hhciogYUNvbnRyYWN0SUQsIG5zSVN1cHBv
cnRzKiBzZXJ2aWNlLAogICAgICAgICAgICAgICAgICAgbnNJU2h1dGRvd25MaXN0ZW5lciogc2h1
dGRvd25MaXN0ZW5lciA9IDApID0gMDsKCn07CgoKY2xhc3MgbnNTZXJ2aWNlTWFuYWdlciB7CnB1
YmxpYzoKCiAgICBzdGF0aWMgbnNyZXN1bHQKICAgIFJlZ2lzdGVyU2VydmljZShjb25zdCBuc0NJ
RCYgYUNsYXNzLCBuc0lTdXBwb3J0cyogYVNlcnZpY2UpOwoKICAgIHN0YXRpYyBuc3Jlc3VsdAog
ICAgVW5yZWdpc3RlclNlcnZpY2UoY29uc3QgbnNDSUQmIGFDbGFzcyk7CgogICAgc3RhdGljIG5z
cmVzdWx0CiAgICBHZXRTZXJ2aWNlKGNvbnN0IG5zQ0lEJiBhQ2xhc3MsIGNvbnN0IG5zSUlEJiBh
SUlELAogICAgICAgICAgICAgICBuc0lTdXBwb3J0cyogKnJlc3VsdCwKICAgICAgICAgICAgICAg
bnNJU2h1dGRvd25MaXN0ZW5lciogc2h1dGRvd25MaXN0ZW5lciA9IDApOwoKCiAgICBzdGF0aWMg
bnNyZXN1bHQKICAgIFJlbGVhc2VTZXJ2aWNlKGNvbnN0IG5zQ0lEJiBhQ2xhc3MsIG5zSVN1cHBv
cnRzKiBzZXJ2aWNlLAogICAgICAgICAgICAgICAgICAgbnNJU2h1dGRvd25MaXN0ZW5lciogc2h1
dGRvd25MaXN0ZW5lciA9IDApOwoKCgoKICAgIHN0YXRpYyBuc3Jlc3VsdAogICAgUmVnaXN0ZXJT
ZXJ2aWNlKGNvbnN0IGNoYXIqIGFDb250cmFjdElELCBuc0lTdXBwb3J0cyogYVNlcnZpY2UpOwoK
ICAgIHN0YXRpYyBuc3Jlc3VsdAogICAgVW5yZWdpc3RlclNlcnZpY2UoY29uc3QgY2hhciogYUNv
bnRyYWN0SUQpOwoKICAgIHN0YXRpYyBuc3Jlc3VsdAogICAgR2V0U2VydmljZShjb25zdCBjaGFy
KiBhQ29udHJhY3RJRCwgY29uc3QgbnNJSUQmIGFJSUQsCiAgICAgICAgICAgICAgIG5zSVN1cHBv
cnRzKiAqcmVzdWx0LAogICAgICAgICAgICAgICBuc0lTaHV0ZG93bkxpc3RlbmVyKiBzaHV0ZG93
bkxpc3RlbmVyID0gMCk7CgoKICAgIHN0YXRpYyBuc3Jlc3VsdAogICAgUmVsZWFzZVNlcnZpY2Uo
Y29uc3QgY2hhciogYUNvbnRyYWN0SUQsIG5zSVN1cHBvcnRzKiBzZXJ2aWNlLAogICAgICAgICAg
ICAgICAgICAgbnNJU2h1dGRvd25MaXN0ZW5lciogc2h1dGRvd25MaXN0ZW5lciA9IDApOwoKCgoK
CiAgICBzdGF0aWMgbnNyZXN1bHQgR2V0R2xvYmFsU2VydmljZU1hbmFnZXIobnNJU2VydmljZU1h
bmFnZXIqICpyZXN1bHQpOwogICAgc3RhdGljIG5zcmVzdWx0IFNodXRkb3duR2xvYmFsU2Vydmlj
ZU1hbmFnZXIobnNJU2VydmljZU1hbmFnZXIqICpyZXN1bHQpOwp9OwojIDIwMyAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL3hwY29tL25zSVNlcnZpY2VNYW5hZ2VyT2Jzb2xldGUuaCIKY2xhc3MgbnNJ
U2h1dGRvd25MaXN0ZW5lcjsKCgp0ZW1wbGF0ZSA8Y2xhc3MgRGVzdGluYXRpb25UeXBlPgppbmxp
bmUKbnNyZXN1bHQKQ2FsbEdldFNlcnZpY2UoIGNvbnN0IG5zQ0lEICZhQ2xhc3MsCiAgICAgICAg
ICAgICAgICBuc0lTaHV0ZG93bkxpc3RlbmVyKiBzaHV0ZG93bkxpc3RlbmVyLAogICAgICAgICAg
ICAgICAgRGVzdGluYXRpb25UeXBlKiogYURlc3RpbmF0aW9uKQp7CiAgICA7CgogICAgcmV0dXJu
IG5zU2VydmljZU1hbmFnZXI6OkdldFNlcnZpY2UoYUNsYXNzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnNDT01UeXBlSW5mbzxEZXN0aW5hdGlvblR5cGU+OjpHZXRJ
SUQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8IG5zSVN1cHBvcnRzKiogPihhRGVzdGluYXRpb24pLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2h1dGRvd25MaXN0ZW5lcik7Cn0KCnRlbXBsYXRlIDxjbGFz
cyBEZXN0aW5hdGlvblR5cGU+CmlubGluZQpuc3Jlc3VsdApDYWxsR2V0U2VydmljZSggY29uc3Qg
Y2hhciAqYUNvbnRyYWN0SUQsCiAgICAgICAgICAgICAgICBuc0lTaHV0ZG93bkxpc3RlbmVyKiBz
aHV0ZG93bkxpc3RlbmVyLAogICAgICAgICAgICAgICAgRGVzdGluYXRpb25UeXBlKiogYURlc3Rp
bmF0aW9uKQp7CiAgICA7CiAgICA7CgogICAgcmV0dXJuIG5zU2VydmljZU1hbmFnZXI6OkdldFNl
cnZpY2UoYUNvbnRyYWN0SUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuc0NPTVR5cGVJbmZvPERlc3RpbmF0aW9uVHlwZT46OkdldElJRCgpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDwgbnNJU3VwcG9ydHMq
KiA+KGFEZXN0aW5hdGlvbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaHV0ZG93bkxpc3RlbmVyKTsKfQojIDQzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20v
bnNJU2VydmljZU1hbmFnZXJVdGlscy5oIiAyCgoKCgpjbGFzcyBuc0dldFNlcnZpY2VCeUNJRCA6
IHB1YmxpYyBuc0NPTVB0cl9oZWxwZXIKewogcHVibGljOgogICAgbnNHZXRTZXJ2aWNlQnlDSUQo
IGNvbnN0IG5zQ0lEJiBhQ0lELCBuc0lTdXBwb3J0cyogYVNlcnZpY2VNYW5hZ2VyLCBuc3Jlc3Vs
dCogYUVycm9yUHRyICkKICAgICAgICA6IG1DSUQoYUNJRCksCiAgICAgICAgbVNlcnZpY2VNYW5h
Z2VyKCBkb19RdWVyeUludGVyZmFjZShhU2VydmljZU1hbmFnZXIpICksCiAgICAgICAgbUVycm9y
UHRyKGFFcnJvclB0cikKICAgICAgICB7CgogICAgICAgIH0KCiAgICB2aXJ0dWFsIG5zcmVzdWx0
IG9wZXJhdG9yKCkoIGNvbnN0IG5zSUlEJiwgdm9pZCoqICkgY29uc3Q7CiAgICB2aXJ0dWFsIH5u
c0dldFNlcnZpY2VCeUNJRCgpIHt9OwoKIHByaXZhdGU6CiAgICBjb25zdCBuc0NJRCYgbUNJRDsK
ICAgIG5zQ09NUHRyPG5zSVNlcnZpY2VNYW5hZ2VyPiBtU2VydmljZU1hbmFnZXI7CiAgICBuc3Jl
c3VsdCogbUVycm9yUHRyOwp9OwoKaW5saW5lCmNvbnN0IG5zR2V0U2VydmljZUJ5Q0lECmRvX0dl
dFNlcnZpY2UoIGNvbnN0IG5zQ0lEJiBhQ0lELCBuc3Jlc3VsdCogZXJyb3IgPSAwICkKewogICAg
cmV0dXJuIG5zR2V0U2VydmljZUJ5Q0lEKGFDSUQsIDAsIGVycm9yKTsKfQoKaW5saW5lCmNvbnN0
IG5zR2V0U2VydmljZUJ5Q0lECmRvX0dldFNlcnZpY2UoIGNvbnN0IG5zQ0lEJiBhQ0lELCBuc0lT
dXBwb3J0cyogYVNlcnZpY2VNYW5hZ2VyLCBuc3Jlc3VsdCogZXJyb3IgPSAwICkKewogICAgcmV0
dXJuIG5zR2V0U2VydmljZUJ5Q0lEKGFDSUQsIGFTZXJ2aWNlTWFuYWdlciwgZXJyb3IpOwp9Cgpj
bGFzcyBuc0dldFNlcnZpY2VCeUNvbnRyYWN0SUQgOiBwdWJsaWMgbnNDT01QdHJfaGVscGVyCnsK
IHB1YmxpYzoKICAgIG5zR2V0U2VydmljZUJ5Q29udHJhY3RJRCggY29uc3QgY2hhciogYUNvbnRy
YWN0SUQsIG5zSVN1cHBvcnRzKiBhU2VydmljZU1hbmFnZXIsIG5zcmVzdWx0KiBhRXJyb3JQdHIg
KQogICAgICAgIDogbUNvbnRyYWN0SUQoYUNvbnRyYWN0SUQpLAogICAgICAgIG1TZXJ2aWNlTWFu
YWdlciggZG9fUXVlcnlJbnRlcmZhY2UoYVNlcnZpY2VNYW5hZ2VyKSApLAogICAgICAgIG1FcnJv
clB0cihhRXJyb3JQdHIpCiAgICAgICAgewoKICAgICAgICB9CgogICAgdmlydHVhbCBuc3Jlc3Vs
dCBvcGVyYXRvcigpKCBjb25zdCBuc0lJRCYsIHZvaWQqKiApIGNvbnN0OwoKICAgIHZpcnR1YWwg
fm5zR2V0U2VydmljZUJ5Q29udHJhY3RJRCgpIHt9OwoKIHByaXZhdGU6CiAgICBjb25zdCBjaGFy
KiBtQ29udHJhY3RJRDsKICAgIG5zQ09NUHRyPG5zSVNlcnZpY2VNYW5hZ2VyPiBtU2VydmljZU1h
bmFnZXI7CiAgICBuc3Jlc3VsdCogbUVycm9yUHRyOwp9OwoKaW5saW5lCmNvbnN0IG5zR2V0U2Vy
dmljZUJ5Q29udHJhY3RJRApkb19HZXRTZXJ2aWNlKCBjb25zdCBjaGFyKiBhQ29udHJhY3RJRCwg
bnNyZXN1bHQqIGVycm9yID0gMCApCnsKICAgIHJldHVybiBuc0dldFNlcnZpY2VCeUNvbnRyYWN0
SUQoYUNvbnRyYWN0SUQsIDAsIGVycm9yKTsKfQoKaW5saW5lCmNvbnN0IG5zR2V0U2VydmljZUJ5
Q29udHJhY3RJRApkb19HZXRTZXJ2aWNlKCBjb25zdCBjaGFyKiBhQ29udHJhY3RJRCwgbnNJU3Vw
cG9ydHMqIGFTZXJ2aWNlTWFuYWdlciwgbnNyZXN1bHQqIGVycm9yID0gMCApCnsKICAgIHJldHVy
biBuc0dldFNlcnZpY2VCeUNvbnRyYWN0SUQoYUNvbnRyYWN0SUQsIGFTZXJ2aWNlTWFuYWdlciwg
ZXJyb3IpOwp9CgpjbGFzcyBuc0dldFNlcnZpY2VGcm9tQ2F0ZWdvcnkgOiBwdWJsaWMgbnNDT01Q
dHJfaGVscGVyCnsKIHB1YmxpYzoKICAgIG5zR2V0U2VydmljZUZyb21DYXRlZ29yeShjb25zdCBj
aGFyKiBhQ2F0ZWdvcnksIGNvbnN0IGNoYXIqIGFFbnRyeSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuc0lTdXBwb3J0cyogYVNlcnZpY2VNYW5hZ2VyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5zcmVzdWx0KiBhRXJyb3JQdHIpCiAgICAgICAgOiBtQ2F0ZWdvcnkoYUNhdGVn
b3J5KSwKICAgICAgICBtRW50cnkoYUVudHJ5KSwKICAgICAgICBtU2VydmljZU1hbmFnZXIoIGRv
X1F1ZXJ5SW50ZXJmYWNlKGFTZXJ2aWNlTWFuYWdlcikgKSwKICAgICAgICBtRXJyb3JQdHIoYUVy
cm9yUHRyKQogICAgICAgIHsKCiAgICAgICAgfQoKICAgIHZpcnR1YWwgbnNyZXN1bHQgb3BlcmF0
b3IoKSggY29uc3QgbnNJSUQmLCB2b2lkKiogKSBjb25zdDsKICAgIHZpcnR1YWwgfm5zR2V0U2Vy
dmljZUZyb21DYXRlZ29yeSgpIHt9OwogcHJvdGVjdGVkOgogICAgY29uc3QgY2hhciogbUNhdGVn
b3J5OwogICAgY29uc3QgY2hhciogbUVudHJ5OwogICAgbnNDT01QdHI8bnNJU2VydmljZU1hbmFn
ZXI+IG1TZXJ2aWNlTWFuYWdlcjsKICAgIG5zcmVzdWx0KiBtRXJyb3JQdHI7Cn07CgppbmxpbmUK
Y29uc3QgbnNHZXRTZXJ2aWNlRnJvbUNhdGVnb3J5CmRvX0dldFNlcnZpY2VGcm9tQ2F0ZWdvcnko
IGNvbnN0IGNoYXIqIGNhdGVnb3J5LCBjb25zdCBjaGFyKiBlbnRyeSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnNyZXN1bHQqIGVycm9yID0gMCkKewogICAgcmV0dXJuIG5zR2V0U2Vydmlj
ZUZyb21DYXRlZ29yeShjYXRlZ29yeSwgZW50cnksIDAsIGVycm9yKTsKfQoKCnRlbXBsYXRlIDxj
bGFzcyBEZXN0aW5hdGlvblR5cGU+CmlubGluZQpuc3Jlc3VsdApDYWxsR2V0U2VydmljZSggY29u
c3QgbnNDSUQgJmFDbGFzcywKICAgICAgICAgICAgICAgIERlc3RpbmF0aW9uVHlwZSoqIGFEZXN0
aW5hdGlvbikKewogICAgOwoKICAgIG5zQ09NUHRyPG5zSVNlcnZpY2VNYW5hZ2VyPiBtZ3I7CiAg
ICBuc3Jlc3VsdCBydiA9IE5TX0dldFNlcnZpY2VNYW5hZ2VyKGdldHRlcl9BZGRSZWZzKG1ncikp
OwoKICAgIGlmICgoKHJ2KSAmIDB4ODAwMDAwMDApKQogICAgICAgIHJldHVybiBydjsKCiAgICBy
ZXR1cm4gbWdyLT5HZXRTZXJ2aWNlKGFDbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnNDT01UeXBlSW5mbzxEZXN0aW5hdGlvblR5cGU+OjpHZXRJSUQoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDwgdm9pZCoqID4oYURlc3RpbmF0aW9uKSk7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBEZXN0aW5hdGlvblR5cGU+CmlubGluZQpuc3Jlc3VsdApDYWxsR2V0
U2VydmljZSggY29uc3QgY2hhciAqYUNvbnRyYWN0SUQsCiAgICAgICAgICAgICAgICBEZXN0aW5h
dGlvblR5cGUqKiBhRGVzdGluYXRpb24pCnsKICAgIDsKICAgIDsKCiAgICBuc0NPTVB0cjxuc0lT
ZXJ2aWNlTWFuYWdlcj4gbWdyOwogICAgbnNyZXN1bHQgcnYgPSBOU19HZXRTZXJ2aWNlTWFuYWdl
cihnZXR0ZXJfQWRkUmVmcyhtZ3IpKTsKCiAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkKICAg
ICAgICByZXR1cm4gcnY7CgogICAgcmV0dXJuIG1nci0+R2V0U2VydmljZUJ5Q29udHJhY3RJRChh
Q29udHJhY3RJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNDT01U
eXBlSW5mbzxEZXN0aW5hdGlvblR5cGU+OjpHZXRJSUQoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDwgdm9pZCoqID4oYURlc3RpbmF0aW9u
KSk7Cn0KIyAxNjggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTZXJ2aWNlTWFuYWdl
ci5oIiAyCiMgMzEzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNsYXNzSW5mby5o
IiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01TY3JpcHRPYmplY3RGYWN0
b3J5LmgiIDEKIyA0MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01TY3JpcHRPYmpl
Y3RGYWN0b3J5LmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01DbGFzc0lu
Zm8uaCIgMQojIDQ0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVNjcmlwdE9iamVj
dEZhY3RvcnkuaCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHJpbmcu
aCIgMQojIDU0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zU3RyaW5nLmgiCiMgMSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZzIuaCIgMQojIDU4ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvc3RyaW5nL25zU3RyaW5nMi5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9zdHJpbmcvbnNBRmxhdFN0cmluZy5oIiAxCiMgMzAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9zdHJpbmcvbnNBRmxhdFN0cmluZy5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJp
bmcvbnNBU2luZ2xlRnJhZ21lbnRTdHJpbmcuaCIgMQojIDQzICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvc3RyaW5nL25zQVNpbmdsZUZyYWdtZW50U3RyaW5nLmgiCmNsYXNzIG5zQVNpbmdsZUZyYWdt
ZW50U3RyaW5nCiAgICA6IHB1YmxpYyBuc0FTdHJpbmcKICB7CgoKCgoKICAgIHB1YmxpYzoKICAg
ICAgdHlwZWRlZiBjb25zdCBjaGFyX3R5cGUqIGNvbnN0X2NoYXJfaXRlcmF0b3I7CiAgICAgIHR5
cGVkZWYgY2hhcl90eXBlKiBjaGFyX2l0ZXJhdG9yOwoKCiAgICAgIHVzaW5nIGFic3RyYWN0X3N0
cmluZ190eXBlOjpCZWdpblJlYWRpbmc7CiAgICAgIHVzaW5nIGFic3RyYWN0X3N0cmluZ190eXBl
OjpFbmRSZWFkaW5nOwogICAgICB1c2luZyBhYnN0cmFjdF9zdHJpbmdfdHlwZTo6QmVnaW5Xcml0
aW5nOwogICAgICB1c2luZyBhYnN0cmFjdF9zdHJpbmdfdHlwZTo6RW5kV3JpdGluZzsKCgoKCgoK
CiAgICAgIGlubGluZQogICAgICBjb25zdF9jaGFyX2l0ZXJhdG9yJgogICAgICBCZWdpblJlYWRp
bmcoIGNvbnN0X2NoYXJfaXRlcmF0b3ImIGFSZXN1bHQgKSBjb25zdAogICAgICAgIHsKICAgICAg
ICAgIGNvbnN0X2ZyYWdtZW50X3R5cGUgZjsKICAgICAgICAgIEdldFJlYWRhYmxlRnJhZ21lbnQo
Ziwga0ZpcnN0RnJhZ21lbnQsIDApOwogICAgICAgICAgcmV0dXJuIGFSZXN1bHQgPSBmLm1TdGFy
dDsKICAgICAgICB9CgogICAgICBpbmxpbmUKICAgICAgY29uc3RfY2hhcl9pdGVyYXRvciYKICAg
ICAgRW5kUmVhZGluZyggY29uc3RfY2hhcl9pdGVyYXRvciYgYVJlc3VsdCApIGNvbnN0CiAgICAg
ICAgewogICAgICAgICAgY29uc3RfZnJhZ21lbnRfdHlwZSBmOwogICAgICAgICAgR2V0UmVhZGFi
bGVGcmFnbWVudChmLCBrTGFzdEZyYWdtZW50LCAwKTsKICAgICAgICAgIHJldHVybiBhUmVzdWx0
ID0gZi5tRW5kOwogICAgICAgIH0KCiAgICAgIGlubGluZQogICAgICBjaGFyX2l0ZXJhdG9yJgog
ICAgICBCZWdpbldyaXRpbmcoIGNoYXJfaXRlcmF0b3ImIGFSZXN1bHQgKQogICAgICAgIHsKICAg
ICAgICAgIGZyYWdtZW50X3R5cGUgZjsKICAgICAgICAgIEdldFdyaXRhYmxlRnJhZ21lbnQoZiwg
a0ZpcnN0RnJhZ21lbnQsIDApOwogICAgICAgICAgcmV0dXJuIGFSZXN1bHQgPSBjb25zdF9jYXN0
PCBjaGFyX2l0ZXJhdG9yID4oZi5tU3RhcnQpOwogICAgICAgIH0KCiAgICAgIGlubGluZQogICAg
ICBjaGFyX2l0ZXJhdG9yJgogICAgICBFbmRXcml0aW5nKCBjaGFyX2l0ZXJhdG9yJiBhUmVzdWx0
ICkKICAgICAgICB7CiAgICAgICAgICBmcmFnbWVudF90eXBlIGY7CiAgICAgICAgICBHZXRXcml0
YWJsZUZyYWdtZW50KGYsIGtMYXN0RnJhZ21lbnQsIDApOwogICAgICAgICAgcmV0dXJuIGFSZXN1
bHQgPSBjb25zdF9jYXN0PCBjaGFyX2l0ZXJhdG9yID4oZi5tRW5kKTsKICAgICAgICB9CgogICAg
ICBjaGFyX3R5cGUgb3BlcmF0b3JbXSggUFJVaW50MzIgaSApIGNvbnN0IHsgY29uc3RfY2hhcl9p
dGVyYXRvciB0ZW1wOyByZXR1cm4gQmVnaW5SZWFkaW5nKHRlbXApWyBpIF07IH0KICAgICAgY2hh
cl90eXBlIENoYXJBdCggUFJVaW50MzIgKSBjb25zdDsKCiAgICAgIHZpcnR1YWwgUFJVaW50MzIg
TGVuZ3RoKCkgY29uc3Q7CgoKICAgIHB1YmxpYzoKICAgICAgdmlydHVhbCBjb25zdCBjaGFyX3R5
cGUqIEdldFJlYWRhYmxlRnJhZ21lbnQoIGNvbnN0X2ZyYWdtZW50X3R5cGUmLCBuc0ZyYWdtZW50
UmVxdWVzdCwgUFJVaW50MzIgKSBjb25zdDsKICAgICAgdmlydHVhbCBjaGFyX3R5cGUqIEdldFdy
aXRhYmxlRnJhZ21lbnQoIGZyYWdtZW50X3R5cGUmLCBuc0ZyYWdtZW50UmVxdWVzdCwgUFJVaW50
MzIgKTsKICB9OwoKY2xhc3MgbnNBU2luZ2xlRnJhZ21lbnRDU3RyaW5nCiAgICA6IHB1YmxpYyBu
c0FDU3RyaW5nCiAgewoKCgoKCiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgY29uc3QgY2hhcl90
eXBlKiBjb25zdF9jaGFyX2l0ZXJhdG9yOwogICAgICB0eXBlZGVmIGNoYXJfdHlwZSogY2hhcl9p
dGVyYXRvcjsKCgogICAgICB1c2luZyBhYnN0cmFjdF9zdHJpbmdfdHlwZTo6QmVnaW5SZWFkaW5n
OwogICAgICB1c2luZyBhYnN0cmFjdF9zdHJpbmdfdHlwZTo6RW5kUmVhZGluZzsKICAgICAgdXNp
bmcgYWJzdHJhY3Rfc3RyaW5nX3R5cGU6OkJlZ2luV3JpdGluZzsKICAgICAgdXNpbmcgYWJzdHJh
Y3Rfc3RyaW5nX3R5cGU6OkVuZFdyaXRpbmc7CgoKCgoKCgogICAgICBpbmxpbmUKICAgICAgY29u
c3RfY2hhcl9pdGVyYXRvciYKICAgICAgQmVnaW5SZWFkaW5nKCBjb25zdF9jaGFyX2l0ZXJhdG9y
JiBhUmVzdWx0ICkgY29uc3QKICAgICAgICB7CiAgICAgICAgICBjb25zdF9mcmFnbWVudF90eXBl
IGY7CiAgICAgICAgICBHZXRSZWFkYWJsZUZyYWdtZW50KGYsIGtGaXJzdEZyYWdtZW50LCAwKTsK
ICAgICAgICAgIHJldHVybiBhUmVzdWx0ID0gZi5tU3RhcnQ7CiAgICAgICAgfQoKICAgICAgaW5s
aW5lCiAgICAgIGNvbnN0X2NoYXJfaXRlcmF0b3ImCiAgICAgIEVuZFJlYWRpbmcoIGNvbnN0X2No
YXJfaXRlcmF0b3ImIGFSZXN1bHQgKSBjb25zdAogICAgICAgIHsKICAgICAgICAgIGNvbnN0X2Zy
YWdtZW50X3R5cGUgZjsKICAgICAgICAgIEdldFJlYWRhYmxlRnJhZ21lbnQoZiwga0xhc3RGcmFn
bWVudCwgMCk7CiAgICAgICAgICByZXR1cm4gYVJlc3VsdCA9IGYubUVuZDsKICAgICAgICB9Cgog
ICAgICBpbmxpbmUKICAgICAgY2hhcl9pdGVyYXRvciYKICAgICAgQmVnaW5Xcml0aW5nKCBjaGFy
X2l0ZXJhdG9yJiBhUmVzdWx0ICkKICAgICAgICB7CiAgICAgICAgICBmcmFnbWVudF90eXBlIGY7
CiAgICAgICAgICBHZXRXcml0YWJsZUZyYWdtZW50KGYsIGtGaXJzdEZyYWdtZW50LCAwKTsKICAg
ICAgICAgIHJldHVybiBhUmVzdWx0ID0gY29uc3RfY2FzdDwgY2hhcl9pdGVyYXRvciA+KGYubVN0
YXJ0KTsKICAgICAgICB9CgogICAgICBpbmxpbmUKICAgICAgY2hhcl9pdGVyYXRvciYKICAgICAg
RW5kV3JpdGluZyggY2hhcl9pdGVyYXRvciYgYVJlc3VsdCApCiAgICAgICAgewogICAgICAgICAg
ZnJhZ21lbnRfdHlwZSBmOwogICAgICAgICAgR2V0V3JpdGFibGVGcmFnbWVudChmLCBrTGFzdEZy
YWdtZW50LCAwKTsKICAgICAgICAgIHJldHVybiBhUmVzdWx0ID0gY29uc3RfY2FzdDwgY2hhcl9p
dGVyYXRvciA+KGYubUVuZCk7CiAgICAgICAgfQoKICAgICAgY2hhcl90eXBlIG9wZXJhdG9yW10o
IFBSVWludDMyIGkgKSBjb25zdCB7IGNvbnN0X2NoYXJfaXRlcmF0b3IgdGVtcDsgcmV0dXJuIEJl
Z2luUmVhZGluZyh0ZW1wKVsgaSBdOyB9CiAgICAgIGNoYXJfdHlwZSBDaGFyQXQoIFBSVWludDMy
ICkgY29uc3Q7CgogICAgICB2aXJ0dWFsIFBSVWludDMyIExlbmd0aCgpIGNvbnN0OwoKCiAgICBw
dWJsaWM6CiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcl90eXBlKiBHZXRSZWFkYWJsZUZyYWdtZW50
KCBjb25zdF9mcmFnbWVudF90eXBlJiwgbnNGcmFnbWVudFJlcXVlc3QsIFBSVWludDMyICkgY29u
c3Q7CiAgICAgIHZpcnR1YWwgY2hhcl90eXBlKiBHZXRXcml0YWJsZUZyYWdtZW50KCBmcmFnbWVu
dF90eXBlJiwgbnNGcmFnbWVudFJlcXVlc3QsIFBSVWludDMyICk7CiAgfTsKCmlubGluZQpuc0FT
aW5nbGVGcmFnbWVudFN0cmluZzo6Y2hhcl90eXBlCm5zQVNpbmdsZUZyYWdtZW50U3RyaW5nOjpD
aGFyQXQoIFBSVWludDMyIGkgKSBjb25zdAogIHsKICAgIDsKICAgIHJldHVybiBvcGVyYXRvcltd
KGkpOwogIH0KCmlubGluZQpuc0FTaW5nbGVGcmFnbWVudENTdHJpbmc6OmNoYXJfdHlwZQpuc0FT
aW5nbGVGcmFnbWVudENTdHJpbmc6OkNoYXJBdCggUFJVaW50MzIgaSApIGNvbnN0CiAgewogICAg
OwogICAgcmV0dXJuIG9wZXJhdG9yW10oaSk7CiAgfQojIDMxICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvc3RyaW5nL25zQUZsYXRTdHJpbmcuaCIgMgojIDQzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
c3RyaW5nL25zQUZsYXRTdHJpbmcuaCIKY2xhc3MgbnNBRmxhdFN0cmluZwogICAgOiBwdWJsaWMg
bnNBU2luZ2xlRnJhZ21lbnRTdHJpbmcKICB7CiAgICBwdWJsaWM6CgoKCiAgICAgIHZpcnR1YWwg
Y29uc3QgY2hhcl90eXBlKiBnZXQoKSBjb25zdAogICAgICAgIHsKICAgICAgICAgIGNvbnN0IGNo
YXJfdHlwZSogdGVtcDsKICAgICAgICAgIHJldHVybiBCZWdpblJlYWRpbmcodGVtcCk7CiAgICAg
ICAgfQogIH07CgpjbGFzcyBuc0FGbGF0Q1N0cmluZwogICAgOiBwdWJsaWMgbnNBU2luZ2xlRnJh
Z21lbnRDU3RyaW5nCiAgewogICAgcHVibGljOgoKCgogICAgICB2aXJ0dWFsIGNvbnN0IGNoYXJf
dHlwZSogZ2V0KCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICBjb25zdCBjaGFyX3R5cGUqIHRl
bXA7CiAgICAgICAgICByZXR1cm4gQmVnaW5SZWFkaW5nKHRlbXApOwogICAgICAgIH0KCiAgfTsK
IyA1OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZzIuaCIgMgoKCgojIDEg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNMaXRlcmFsU3RyaW5nLmgiIDEKIyAzMiAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc0xpdGVyYWxTdHJpbmcuaCIKIyAxICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zRGVwZW5kZW50U3RyaW5nLmgiIDEKIyA0NSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc0RlcGVuZGVudFN0cmluZy5oIgpjbGFzcyBuc0Rl
cGVuZGVudFN0cmluZwogICAgICA6IHB1YmxpYyBuc0FGbGF0U3RyaW5nCiAgewogICAgcHVibGlj
OgogICAgICB0eXBlZGVmIG5zRGVwZW5kZW50U3RyaW5nIHNlbGZfdHlwZTsKCiAgICAgIHZvaWQK
ICAgICAgUmViaW5kKCBjb25zdCBjaGFyX3R5cGUqIGFQdHIgKQogICAgICAgIHsKICAgICAgICAg
IDsKICAgICAgICAgIG1IYW5kbGUuRGF0YVN0YXJ0KGFQdHIpOwoKCgogICAgICAgICAgbUhhbmRs
ZS5EYXRhRW5kKGFQdHIgPyAoYVB0cituc0NoYXJUcmFpdHM8Y2hhcl90eXBlPjo6bGVuZ3RoKGFQ
dHIpKSA6IDApOwogICAgICAgIH0KCiAgICAgIHZvaWQKICAgICAgUmViaW5kKCBjb25zdCBjaGFy
X3R5cGUqIGFTdGFydFB0ciwgY29uc3QgY2hhcl90eXBlKiBhRW5kUHRyICkKICAgICAgICB7CiAg
ICAgICAgICA7CiMgODYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNEZXBlbmRlbnRT
dHJpbmcuaCIKICAgICAgICAgIDsKICAgICAgICAgIG1IYW5kbGUuRGF0YVN0YXJ0KGFTdGFydFB0
cik7CiAgICAgICAgICBtSGFuZGxlLkRhdGFFbmQoYUVuZFB0cik7CiAgICAgICAgfQoKICAgICAg
dm9pZAogICAgICBSZWJpbmQoIGNvbnN0IGNoYXJfdHlwZSogYVB0ciwgUFJVaW50MzIgYUxlbmd0
aCApCiAgICAgICAgewogICAgICAgICAgOwogICAgICAgICAgUmViaW5kKGFQdHIsIGFQdHIrYUxl
bmd0aCk7CiAgICAgICAgfQoKICAgICAgbnNEZXBlbmRlbnRTdHJpbmcoIGNvbnN0IGNoYXJfdHlw
ZSogYVN0YXJ0UHRyLCBjb25zdCBjaGFyX3R5cGUqIGFFbmRQdHIgKSB7IFJlYmluZChhU3RhcnRQ
dHIsIGFFbmRQdHIpOyB9CiAgICAgIG5zRGVwZW5kZW50U3RyaW5nKCBjb25zdCBjaGFyX3R5cGUq
IGFQdHIsIFBSVWludDMyIGFMZW5ndGggKSB7IFJlYmluZChhUHRyLCBhTGVuZ3RoKTsgfQogICAg
ICBleHBsaWNpdCBuc0RlcGVuZGVudFN0cmluZyggY29uc3QgY2hhcl90eXBlKiBhUHRyICkgeyBS
ZWJpbmQoYVB0cik7IH0KCgoKCiAgICBwcml2YXRlOgoKICAgICAgdm9pZCBvcGVyYXRvcj0oIGNv
bnN0IHNlbGZfdHlwZSYgKTsKCiAgICBwdWJsaWM6CiAgICAgIHZpcnR1YWwgY29uc3QgYnVmZmVy
X2hhbmRsZV90eXBlKiBHZXRGbGF0QnVmZmVySGFuZGxlKCkgY29uc3QgeyByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDwgY29uc3QgYnVmZmVyX2hhbmRsZV90eXBlKiA+KCZtSGFuZGxlKTsgfQogICAg
ICB2aXJ0dWFsIGNvbnN0IGJ1ZmZlcl9oYW5kbGVfdHlwZSogR2V0QnVmZmVySGFuZGxlKCkgY29u
c3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDwgY29uc3QgYnVmZmVyX2hhbmRsZV90eXBlKiA+
KCZtSGFuZGxlKTsgfQoKICAgIHByaXZhdGU6CiAgICAgIGNvbnN0X2J1ZmZlcl9oYW5kbGVfdHlw
ZSBtSGFuZGxlOwogIH07CgoKCmNsYXNzIG5zRGVwZW5kZW50Q1N0cmluZwogICAgICA6IHB1Ymxp
YyBuc0FGbGF0Q1N0cmluZwogIHsKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBuc0RlcGVuZGVu
dENTdHJpbmcgc2VsZl90eXBlOwoKICAgICAgdm9pZAogICAgICBSZWJpbmQoIGNvbnN0IGNoYXJf
dHlwZSogYVB0ciApCiAgICAgICAgewogICAgICAgICAgOwogICAgICAgICAgbUhhbmRsZS5EYXRh
U3RhcnQoYVB0cik7CgoKCiAgICAgICAgICBtSGFuZGxlLkRhdGFFbmQoYVB0ciA/IChhUHRyK25z
Q2hhclRyYWl0czxjaGFyX3R5cGU+OjpsZW5ndGgoYVB0cikpIDogMCk7CiAgICAgICAgfQoKICAg
ICAgdm9pZAogICAgICBSZWJpbmQoIGNvbnN0IGNoYXJfdHlwZSogYVN0YXJ0UHRyLCBjb25zdCBj
aGFyX3R5cGUqIGFFbmRQdHIgKQogICAgICAgIHsKICAgICAgICAgIDsKIyAxNjAgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNEZXBlbmRlbnRTdHJpbmcuaCIKICAgICAgICAgIDsKICAg
ICAgICAgIG1IYW5kbGUuRGF0YVN0YXJ0KGFTdGFydFB0cik7CiAgICAgICAgICBtSGFuZGxlLkRh
dGFFbmQoYUVuZFB0cik7CiAgICAgICAgfQoKICAgICAgdm9pZAogICAgICBSZWJpbmQoIGNvbnN0
IGNoYXJfdHlwZSogYVB0ciwgUFJVaW50MzIgYUxlbmd0aCApCiAgICAgICAgewogICAgICAgICAg
OwogICAgICAgICAgUmViaW5kKGFQdHIsIGFQdHIrYUxlbmd0aCk7CiAgICAgICAgfQoKICAgICAg
bnNEZXBlbmRlbnRDU3RyaW5nKCBjb25zdCBjaGFyX3R5cGUqIGFTdGFydFB0ciwgY29uc3QgY2hh
cl90eXBlKiBhRW5kUHRyICkgeyBSZWJpbmQoYVN0YXJ0UHRyLCBhRW5kUHRyKTsgfQogICAgICBu
c0RlcGVuZGVudENTdHJpbmcoIGNvbnN0IGNoYXJfdHlwZSogYVB0ciwgUFJVaW50MzIgYUxlbmd0
aCApIHsgUmViaW5kKGFQdHIsIGFMZW5ndGgpOyB9CiAgICAgIGV4cGxpY2l0IG5zRGVwZW5kZW50
Q1N0cmluZyggY29uc3QgY2hhcl90eXBlKiBhUHRyICkgeyBSZWJpbmQoYVB0cik7IH0KCgoKCiAg
ICBwcml2YXRlOgoKICAgICAgdm9pZCBvcGVyYXRvcj0oIGNvbnN0IHNlbGZfdHlwZSYgKTsKCiAg
ICBwdWJsaWM6CiAgICAgIHZpcnR1YWwgY29uc3QgYnVmZmVyX2hhbmRsZV90eXBlKiBHZXRGbGF0
QnVmZmVySGFuZGxlKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDwgY29uc3QgYnVm
ZmVyX2hhbmRsZV90eXBlKiA+KCZtSGFuZGxlKTsgfQogICAgICB2aXJ0dWFsIGNvbnN0IGJ1ZmZl
cl9oYW5kbGVfdHlwZSogR2V0QnVmZmVySGFuZGxlKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDwgY29uc3QgYnVmZmVyX2hhbmRsZV90eXBlKiA+KCZtSGFuZGxlKTsgfQoKICAgIHBy
aXZhdGU6CiAgICAgIGNvbnN0X2J1ZmZlcl9oYW5kbGVfdHlwZSBtSGFuZGxlOwogIH07CiMgMzMg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNMaXRlcmFsU3RyaW5nLmgiIDIKIyA2MyAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZzIuaCIgMgoKCgojIDEgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNEZXBlbmRlbnRTdWJzdHJpbmcuaCIgMQojIDQ1ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zRGVwZW5kZW50U3Vic3RyaW5nLmgiCmNsYXNz
IG5zRGVwZW5kZW50U3Vic3RyaW5nCiAgICA6IHB1YmxpYyBuc0FTdHJpbmcKIyA1NSAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc0RlcGVuZGVudFN1YnN0cmluZy5oIgogIHsKICAgIHB1
YmxpYzoKICAgICAgdHlwZWRlZiBuc0RlcGVuZGVudFN1YnN0cmluZyBzZWxmX3R5cGU7CgogICAg
cHJvdGVjdGVkOgogICAgICB2aXJ0dWFsIGNvbnN0IGNoYXJfdHlwZSogR2V0UmVhZGFibGVGcmFn
bWVudCggY29uc3RfZnJhZ21lbnRfdHlwZSYsIG5zRnJhZ21lbnRSZXF1ZXN0LCBQUlVpbnQzMiAp
IGNvbnN0OwogICAgICB2aXJ0dWFsIGNoYXJfdHlwZSogR2V0V3JpdGFibGVGcmFnbWVudCggZnJh
Z21lbnRfdHlwZSYsIG5zRnJhZ21lbnRSZXF1ZXN0LCBQUlVpbnQzMiApIHsgcmV0dXJuIDA7IH0K
CiAgICBwdWJsaWM6CiAgICAgIG5zRGVwZW5kZW50U3Vic3RyaW5nKCBjb25zdCBhYnN0cmFjdF9z
dHJpbmdfdHlwZSYgYVN0cmluZywgUFJVaW50MzIgYVN0YXJ0UG9zLCBQUlVpbnQzMiBhTGVuZ3Ro
ICkKICAgICAgICAgIDogbVN0cmluZyhhU3RyaW5nKSwKICAgICAgICAgICAgbVN0YXJ0UG9zKCBO
U19NSU4oYVN0YXJ0UG9zLCBhU3RyaW5nLkxlbmd0aCgpKSApLAogICAgICAgICAgICBtTGVuZ3Ro
KCBOU19NSU4oYUxlbmd0aCwgYVN0cmluZy5MZW5ndGgoKS1tU3RhcnRQb3MpICkKICAgICAgICB7
CgogICAgICAgIH0KCiAgICAgIG5zRGVwZW5kZW50U3Vic3RyaW5nKCBjb25zdCBjb25zdF9pdGVy
YXRvciYgYVN0YXJ0LCBjb25zdCBjb25zdF9pdGVyYXRvciYgYUVuZCApCiAgICAgICAgICA6IG1T
dHJpbmcoYVN0YXJ0LnN0cmluZygpKQogICAgICAgIHsKICAgICAgICAgIGNvbnN0X2l0ZXJhdG9y
IHplcm9Qb2ludDsKICAgICAgICAgIG1TdHJpbmcuQmVnaW5SZWFkaW5nKHplcm9Qb2ludCk7CiAg
ICAgICAgICBtU3RhcnRQb3MgPSBEaXN0YW5jZSh6ZXJvUG9pbnQsIGFTdGFydCk7CiAgICAgICAg
ICBtTGVuZ3RoID0gRGlzdGFuY2UoYVN0YXJ0LCBhRW5kKTsKICAgICAgICB9CgoKCgogICAgcHJp
dmF0ZToKCiAgICAgIHZvaWQgb3BlcmF0b3I9KCBjb25zdCBzZWxmX3R5cGUmICk7CgogICAgcHVi
bGljOgogICAgICB2aXJ0dWFsIFBSVWludDMyIExlbmd0aCgpIGNvbnN0OwoKICAgIHByaXZhdGU6
CiAgICAgIGNvbnN0IGFic3RyYWN0X3N0cmluZ190eXBlJiBtU3RyaW5nOwogICAgICBQUlVpbnQz
MiBtU3RhcnRQb3M7CiAgICAgIFBSVWludDMyIG1MZW5ndGg7CiAgfTsKCmNsYXNzIG5zRGVwZW5k
ZW50Q1N1YnN0cmluZwogICAgOiBwdWJsaWMgbnNBQ1N0cmluZwojIDEwNyAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL3N0cmluZy9uc0RlcGVuZGVudFN1YnN0cmluZy5oIgogIHsKICAgIHB1YmxpYzoK
ICAgICAgdHlwZWRlZiBuc0RlcGVuZGVudENTdWJzdHJpbmcgc2VsZl90eXBlOwoKICAgIHByb3Rl
Y3RlZDoKICAgICAgdmlydHVhbCBjb25zdCBjaGFyX3R5cGUqIEdldFJlYWRhYmxlRnJhZ21lbnQo
IGNvbnN0X2ZyYWdtZW50X3R5cGUmLCBuc0ZyYWdtZW50UmVxdWVzdCwgUFJVaW50MzIgKSBjb25z
dDsKICAgICAgdmlydHVhbCBjaGFyX3R5cGUqIEdldFdyaXRhYmxlRnJhZ21lbnQoIGZyYWdtZW50
X3R5cGUmLCBuc0ZyYWdtZW50UmVxdWVzdCwgUFJVaW50MzIgKSB7IHJldHVybiAwOyB9CgogICAg
cHVibGljOgogICAgICBuc0RlcGVuZGVudENTdWJzdHJpbmcoIGNvbnN0IGFic3RyYWN0X3N0cmlu
Z190eXBlJiBhU3RyaW5nLCBQUlVpbnQzMiBhU3RhcnRQb3MsIFBSVWludDMyIGFMZW5ndGggKQog
ICAgICAgICAgOiBtU3RyaW5nKGFTdHJpbmcpLAogICAgICAgICAgICBtU3RhcnRQb3MoIE5TX01J
TihhU3RhcnRQb3MsIGFTdHJpbmcuTGVuZ3RoKCkpICksCiAgICAgICAgICAgIG1MZW5ndGgoIE5T
X01JTihhTGVuZ3RoLCBhU3RyaW5nLkxlbmd0aCgpLW1TdGFydFBvcykgKQogICAgICAgIHsKCiAg
ICAgICAgfQoKICAgICAgbnNEZXBlbmRlbnRDU3Vic3RyaW5nKCBjb25zdCBjb25zdF9pdGVyYXRv
ciYgYVN0YXJ0LCBjb25zdCBjb25zdF9pdGVyYXRvciYgYUVuZCApCiAgICAgICAgICA6IG1TdHJp
bmcoYVN0YXJ0LnN0cmluZygpKQogICAgICAgIHsKICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIHpl
cm9Qb2ludDsKICAgICAgICAgIG1TdHJpbmcuQmVnaW5SZWFkaW5nKHplcm9Qb2ludCk7CiAgICAg
ICAgICBtU3RhcnRQb3MgPSBEaXN0YW5jZSh6ZXJvUG9pbnQsIGFTdGFydCk7CiAgICAgICAgICBt
TGVuZ3RoID0gRGlzdGFuY2UoYVN0YXJ0LCBhRW5kKTsKICAgICAgICB9CgoKCgogICAgcHJpdmF0
ZToKCiAgICAgIHZvaWQgb3BlcmF0b3I9KCBjb25zdCBzZWxmX3R5cGUmICk7CgogICAgcHVibGlj
OgogICAgICB2aXJ0dWFsIFBSVWludDMyIExlbmd0aCgpIGNvbnN0OwoKICAgIHByaXZhdGU6CiAg
ICAgIGNvbnN0IGFic3RyYWN0X3N0cmluZ190eXBlJiBtU3RyaW5nOwogICAgICBQUlVpbnQzMiBt
U3RhcnRQb3M7CiAgICAgIFBSVWludDMyIG1MZW5ndGg7CiAgfTsKCgpjbGFzcyBuc0RlcGVuZGVu
dFNpbmdsZUZyYWdtZW50U3Vic3RyaW5nCiAgICAgIDogcHVibGljIG5zQVNpbmdsZUZyYWdtZW50
U3RyaW5nCiAgewogICAgcHVibGljOgogICAgICB0eXBlZGVmIG5zRGVwZW5kZW50U2luZ2xlRnJh
Z21lbnRTdWJzdHJpbmcgc2VsZl90eXBlOwogICAgICB0eXBlZGVmIG5zQVNpbmdsZUZyYWdtZW50
U3RyaW5nIGFic3RyYWN0X3NpbmdsZV9mcmFnbWVudF90eXBlOwoKICAgICAgdm9pZAogICAgICBS
ZWJpbmQoIGNvbnN0IGNoYXJfdHlwZSogYVN0YXJ0UHRyLCBjb25zdCBjaGFyX3R5cGUqIGFFbmRQ
dHIgKQogICAgICAgIHsKICAgICAgICAgIDsKICAgICAgICAgIG1IYW5kbGUuRGF0YVN0YXJ0KGFT
dGFydFB0cik7CiAgICAgICAgICBtSGFuZGxlLkRhdGFFbmQoYUVuZFB0cik7CiAgICAgICAgfQoK
ICAgICAgdm9pZAogICAgICBSZWJpbmQoIGNvbnN0IGFic3RyYWN0X3NpbmdsZV9mcmFnbWVudF90
eXBlJiBhU3RyaW5nLCBjb25zdCBQUlVpbnQzMiBhU3RhcnRQb3MsIGNvbnN0IFBSVWludDMyIGFM
ZW5ndGggKQogICAgICAgIHsKICAgICAgICAgIGNvbnN0X2NoYXJfaXRlcmF0b3IgaXRlcjsKICAg
ICAgICAgIG1IYW5kbGUuRGF0YVN0YXJ0KGFTdHJpbmcuQmVnaW5SZWFkaW5nKGl0ZXIpICsgTlNf
TUlOKGFTdGFydFBvcywgYVN0cmluZy5MZW5ndGgoKSkpOwogICAgICAgICAgbUhhbmRsZS5EYXRh
RW5kKCBOU19NSU4obUhhbmRsZS5EYXRhU3RhcnQoKSArIGFMZW5ndGgsIGFTdHJpbmcuRW5kUmVh
ZGluZyhpdGVyKSkgKTsKICAgICAgICB9CgogICAgICBuc0RlcGVuZGVudFNpbmdsZUZyYWdtZW50
U3Vic3RyaW5nKCBjb25zdCBjaGFyX3R5cGUqIGFTdGFydFB0ciwgY29uc3QgY2hhcl90eXBlKiBh
RW5kUHRyICkgeyBSZWJpbmQoYVN0YXJ0UHRyLCBhRW5kUHRyKTsgfQogICAgICBuc0RlcGVuZGVu
dFNpbmdsZUZyYWdtZW50U3Vic3RyaW5nKCBjb25zdCBhYnN0cmFjdF9zaW5nbGVfZnJhZ21lbnRf
dHlwZSYgYVN0cmluZywgY29uc3QgUFJVaW50MzIgYVN0YXJ0UG9zLCBjb25zdCBQUlVpbnQzMiBh
TGVuZ3RoICkgeyBSZWJpbmQoYVN0cmluZywgYVN0YXJ0UG9zLCBhTGVuZ3RoKTsgfQoKCgoKICAg
IHByaXZhdGU6CgogICAgICB2b2lkIG9wZXJhdG9yPSggY29uc3Qgc2VsZl90eXBlJiApOwoKICAg
IHB1YmxpYzoKICAgICAgdmlydHVhbCBjb25zdCBidWZmZXJfaGFuZGxlX3R5cGUqIEdldEJ1ZmZl
ckhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8IGNvbnN0IGJ1ZmZlcl9o
YW5kbGVfdHlwZSogPigmbUhhbmRsZSk7IH0KCiAgICBwcml2YXRlOgogICAgICBjb25zdF9idWZm
ZXJfaGFuZGxlX3R5cGUgbUhhbmRsZTsKICB9OwoKCmNsYXNzIG5zRGVwZW5kZW50U2luZ2xlRnJh
Z21lbnRDU3Vic3RyaW5nCiAgICAgIDogcHVibGljIG5zQVNpbmdsZUZyYWdtZW50Q1N0cmluZwog
IHsKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBuc0RlcGVuZGVudFNpbmdsZUZyYWdtZW50Q1N1
YnN0cmluZyBzZWxmX3R5cGU7CiAgICAgIHR5cGVkZWYgbnNBU2luZ2xlRnJhZ21lbnRDU3RyaW5n
IGFic3RyYWN0X3NpbmdsZV9mcmFnbWVudF90eXBlOwoKICAgICAgdm9pZAogICAgICBSZWJpbmQo
IGNvbnN0IGNoYXJfdHlwZSogYVN0YXJ0UHRyLCBjb25zdCBjaGFyX3R5cGUqIGFFbmRQdHIgKQog
ICAgICAgIHsKICAgICAgICAgIDsKICAgICAgICAgIG1IYW5kbGUuRGF0YVN0YXJ0KGFTdGFydFB0
cik7CiAgICAgICAgICBtSGFuZGxlLkRhdGFFbmQoYUVuZFB0cik7CiAgICAgICAgfQoKICAgICAg
dm9pZAogICAgICBSZWJpbmQoIGNvbnN0IGFic3RyYWN0X3NpbmdsZV9mcmFnbWVudF90eXBlJiBh
U3RyaW5nLCBjb25zdCBQUlVpbnQzMiBhU3RhcnRQb3MsIGNvbnN0IFBSVWludDMyIGFMZW5ndGgg
KQogICAgICAgIHsKICAgICAgICAgIGNvbnN0X2NoYXJfaXRlcmF0b3IgaXRlcjsKICAgICAgICAg
IG1IYW5kbGUuRGF0YVN0YXJ0KGFTdHJpbmcuQmVnaW5SZWFkaW5nKGl0ZXIpICsgTlNfTUlOKGFT
dGFydFBvcywgYVN0cmluZy5MZW5ndGgoKSkpOwogICAgICAgICAgbUhhbmRsZS5EYXRhRW5kKCBO
U19NSU4obUhhbmRsZS5EYXRhU3RhcnQoKSArIGFMZW5ndGgsIGFTdHJpbmcuRW5kUmVhZGluZyhp
dGVyKSkgKTsKICAgICAgICB9CgogICAgICBuc0RlcGVuZGVudFNpbmdsZUZyYWdtZW50Q1N1YnN0
cmluZyggY29uc3QgY2hhcl90eXBlKiBhU3RhcnRQdHIsIGNvbnN0IGNoYXJfdHlwZSogYUVuZFB0
ciApIHsgUmViaW5kKGFTdGFydFB0ciwgYUVuZFB0cik7IH0KICAgICAgbnNEZXBlbmRlbnRTaW5n
bGVGcmFnbWVudENTdWJzdHJpbmcoIGNvbnN0IGFic3RyYWN0X3NpbmdsZV9mcmFnbWVudF90eXBl
JiBhU3RyaW5nLCBjb25zdCBQUlVpbnQzMiBhU3RhcnRQb3MsIGNvbnN0IFBSVWludDMyIGFMZW5n
dGggKSB7IFJlYmluZChhU3RyaW5nLCBhU3RhcnRQb3MsIGFMZW5ndGgpOyB9CgoKCgogICAgcHJp
dmF0ZToKCiAgICAgIHZvaWQgb3BlcmF0b3I9KCBjb25zdCBzZWxmX3R5cGUmICk7CgogICAgcHVi
bGljOgogICAgICB2aXJ0dWFsIGNvbnN0IGJ1ZmZlcl9oYW5kbGVfdHlwZSogR2V0QnVmZmVySGFu
ZGxlKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDwgY29uc3QgYnVmZmVyX2hhbmRs
ZV90eXBlKiA+KCZtSGFuZGxlKTsgfQoKICAgIHByaXZhdGU6CiAgICAgIGNvbnN0X2J1ZmZlcl9o
YW5kbGVfdHlwZSBtSGFuZGxlOwogIH07CgoKCmlubGluZQpjb25zdCBuc0RlcGVuZGVudENTdWJz
dHJpbmcKU3Vic3RyaW5nKCBjb25zdCBuc0FDU3RyaW5nJiBhU3RyaW5nLCBQUlVpbnQzMiBhU3Rh
cnRQb3MsIFBSVWludDMyIGFTdWJzdHJpbmdMZW5ndGggKQogIHsKICAgIHJldHVybiBuc0RlcGVu
ZGVudENTdWJzdHJpbmcoYVN0cmluZywgYVN0YXJ0UG9zLCBhU3Vic3RyaW5nTGVuZ3RoKTsKICB9
CgppbmxpbmUKY29uc3QgbnNEZXBlbmRlbnRTdWJzdHJpbmcKU3Vic3RyaW5nKCBjb25zdCBuc0FT
dHJpbmcmIGFTdHJpbmcsIFBSVWludDMyIGFTdGFydFBvcywgUFJVaW50MzIgYVN1YnN0cmluZ0xl
bmd0aCApCiAgewogICAgcmV0dXJuIG5zRGVwZW5kZW50U3Vic3RyaW5nKGFTdHJpbmcsIGFTdGFy
dFBvcywgYVN1YnN0cmluZ0xlbmd0aCk7CiAgfQoKaW5saW5lCmNvbnN0IG5zRGVwZW5kZW50Q1N1
YnN0cmluZwpTdWJzdHJpbmcoIGNvbnN0IG5zQUNTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yJiBhU3Rh
cnQsIGNvbnN0IG5zQUNTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yJiBhRW5kICkKICB7CiAgICByZXR1
cm4gbnNEZXBlbmRlbnRDU3Vic3RyaW5nKGFTdGFydCwgYUVuZCk7CiAgfQoKaW5saW5lCmNvbnN0
IG5zRGVwZW5kZW50U3Vic3RyaW5nClN1YnN0cmluZyggY29uc3QgbnNBU3RyaW5nOjpjb25zdF9p
dGVyYXRvciYgYVN0YXJ0LCBjb25zdCBuc0FTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yJiBhRW5kICkK
ICB7CiAgICByZXR1cm4gbnNEZXBlbmRlbnRTdWJzdHJpbmcoYVN0YXJ0LCBhRW5kKTsKICB9CgoK
aW5saW5lCmNvbnN0IG5zRGVwZW5kZW50U2luZ2xlRnJhZ21lbnRDU3Vic3RyaW5nClN1YnN0cmlu
ZyggY29uc3QgbnNBU2luZ2xlRnJhZ21lbnRDU3RyaW5nJiBhU3RyaW5nLCBQUlVpbnQzMiBhU3Rh
cnRQb3MsIFBSVWludDMyIGFTdWJzdHJpbmdMZW5ndGggKQogIHsKICAgIHJldHVybiBuc0RlcGVu
ZGVudFNpbmdsZUZyYWdtZW50Q1N1YnN0cmluZyhhU3RyaW5nLCBhU3RhcnRQb3MsIGFTdWJzdHJp
bmdMZW5ndGgpOwogIH0KCmlubGluZQpjb25zdCBuc0RlcGVuZGVudFNpbmdsZUZyYWdtZW50U3Vi
c3RyaW5nClN1YnN0cmluZyggY29uc3QgbnNBU2luZ2xlRnJhZ21lbnRTdHJpbmcmIGFTdHJpbmcs
IFBSVWludDMyIGFTdGFydFBvcywgUFJVaW50MzIgYVN1YnN0cmluZ0xlbmd0aCApCiAgewogICAg
cmV0dXJuIG5zRGVwZW5kZW50U2luZ2xlRnJhZ21lbnRTdWJzdHJpbmcoYVN0cmluZywgYVN0YXJ0
UG9zLCBhU3Vic3RyaW5nTGVuZ3RoKTsKICB9CgppbmxpbmUKY29uc3QgbnNEZXBlbmRlbnRTaW5n
bGVGcmFnbWVudENTdWJzdHJpbmcKU3Vic3RyaW5nKCBjb25zdCBuc0FTaW5nbGVGcmFnbWVudENT
dHJpbmc6OmNvbnN0X2NoYXJfaXRlcmF0b3ImIGFTdGFydCwgY29uc3QgbnNBU2luZ2xlRnJhZ21l
bnRDU3RyaW5nOjpjb25zdF9jaGFyX2l0ZXJhdG9yJiBhRW5kICkKICB7CiAgICByZXR1cm4gbnNE
ZXBlbmRlbnRTaW5nbGVGcmFnbWVudENTdWJzdHJpbmcoYVN0YXJ0LCBhRW5kKTsKICB9Cgppbmxp
bmUKY29uc3QgbnNEZXBlbmRlbnRTaW5nbGVGcmFnbWVudFN1YnN0cmluZwpTdWJzdHJpbmcoIGNv
bnN0IG5zQVNpbmdsZUZyYWdtZW50U3RyaW5nOjpjb25zdF9jaGFyX2l0ZXJhdG9yJiBhU3RhcnQs
IGNvbnN0IG5zQVNpbmdsZUZyYWdtZW50U3RyaW5nOjpjb25zdF9jaGFyX2l0ZXJhdG9yJiBhRW5k
ICkKICB7CiAgICByZXR1cm4gbnNEZXBlbmRlbnRTaW5nbGVGcmFnbWVudFN1YnN0cmluZyhhU3Rh
cnQsIGFFbmQpOwogIH0KIyA2NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmlu
ZzIuaCIgMgoKCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNQcm9taXNlRmxh
dFN0cmluZy5oIiAxCiMgMjggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNQcm9taXNl
RmxhdFN0cmluZy5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTaGFyYWJs
ZVN0cmluZy5oIiAxCiMgMzUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTaGFyYWJs
ZVN0cmluZy5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNCdWZmZXJIYW5k
bGVVdGlscy5oIiAxCiMgMzYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNCdWZmZXJI
YW5kbGVVdGlscy5oIgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4y
LjIvaW5jbHVkZS9nKystdjMvbmV3IiAxIDMKIyA0MSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBj
LWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL2crKy12My9uZXciIDMKIyAxICIvdXNyL2xpYi9nY2Mt
bGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvZysrLXYzL2NzdGRkZWYiIDEgMwoj
IDQ3ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvZysr
LXYzL2NzdGRkZWYiIDMKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8z
LjIuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyA0OSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBj
LWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL2crKy12My9jc3RkZGVmIiAyIDMKCm5hbWVzcGFjZSBz
dGQKewogIHVzaW5nIDo6cHRyZGlmZl90OwogIHVzaW5nIDo6c2l6ZV90Owp9CiMgNDIgIi91c3Iv
bGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9nKystdjMvbmV3IiAy
IDMKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUv
ZysrLXYzL2V4Y2VwdGlvbiIgMSAzCiMgNDAgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51
eC1nbnUvMy4yLjIvaW5jbHVkZS9nKystdjMvZXhjZXB0aW9uIiAzCmV4dGVybiAiQysrIiB7Cgpu
YW1lc3BhY2Ugc3RkCnsKCgoKCgoKICBjbGFzcyBleGNlcHRpb24KICB7CiAgcHVibGljOgogICAg
ZXhjZXB0aW9uKCkgdGhyb3coKSB7IH0KICAgIHZpcnR1YWwgfmV4Y2VwdGlvbigpIHRocm93KCk7
CgoKICAgIHZpcnR1YWwgY29uc3QgY2hhciogd2hhdCgpIGNvbnN0IHRocm93KCk7CiAgfTsKCgoK
ICBjbGFzcyBiYWRfZXhjZXB0aW9uIDogcHVibGljIGV4Y2VwdGlvbgogIHsKICBwdWJsaWM6CiAg
ICBiYWRfZXhjZXB0aW9uKCkgdGhyb3coKSB7IH0KCgogICAgdmlydHVhbCB+YmFkX2V4Y2VwdGlv
bigpIHRocm93KCk7CiAgfTsKCgogIHR5cGVkZWYgdm9pZCAoKnRlcm1pbmF0ZV9oYW5kbGVyKSAo
KTsKCiAgdHlwZWRlZiB2b2lkICgqdW5leHBlY3RlZF9oYW5kbGVyKSAoKTsKCgogIHRlcm1pbmF0
ZV9oYW5kbGVyIHNldF90ZXJtaW5hdGUodGVybWluYXRlX2hhbmRsZXIpIHRocm93KCk7CgoKICB2
b2lkIHRlcm1pbmF0ZSgpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgogIHVuZXhw
ZWN0ZWRfaGFuZGxlciBzZXRfdW5leHBlY3RlZCh1bmV4cGVjdGVkX2hhbmRsZXIpIHRocm93KCk7
CgoKICB2b2lkIHVuZXhwZWN0ZWQoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CiMg
OTggIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9nKyst
djMvZXhjZXB0aW9uIiAzCiAgYm9vbCB1bmNhdWdodF9leGNlcHRpb24oKSB0aHJvdygpOwp9Cgpu
YW1lc3BhY2UgX19nbnVfY3h4CnsKIyAxMTEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51
eC1nbnUvMy4yLjIvaW5jbHVkZS9nKystdjMvZXhjZXB0aW9uIiAzCiAgdm9pZCBfX3ZlcmJvc2Vf
dGVybWluYXRlX2hhbmRsZXIgKCk7Cn0KCn0KIyA0MyAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBj
LWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL2crKy12My9uZXciIDIgMwoKZXh0ZXJuICJDKysiIHsK
Cm5hbWVzcGFjZSBzdGQKewoKCiAgY2xhc3MgYmFkX2FsbG9jIDogcHVibGljIGV4Y2VwdGlvbgog
IHsKICBwdWJsaWM6CiAgICBiYWRfYWxsb2MoKSB0aHJvdygpIHsgfQoKCiAgICB2aXJ0dWFsIH5i
YWRfYWxsb2MoKSB0aHJvdygpOwogIH07CgogIHN0cnVjdCBub3Rocm93X3QgeyB9OwogIGV4dGVy
biBjb25zdCBub3Rocm93X3Qgbm90aHJvdzsKCgogIHR5cGVkZWYgdm9pZCAoKm5ld19oYW5kbGVy
KSgpOwoKICBuZXdfaGFuZGxlciBzZXRfbmV3X2hhbmRsZXIobmV3X2hhbmRsZXIpIHRocm93KCk7
Cn0KIyA3OSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRl
L2crKy12My9uZXciIDMKdm9pZCogb3BlcmF0b3IgbmV3KHN0ZDo6c2l6ZV90KSB0aHJvdyAoc3Rk
OjpiYWRfYWxsb2MpOwp2b2lkKiBvcGVyYXRvciBuZXdbXShzdGQ6OnNpemVfdCkgdGhyb3cgKHN0
ZDo6YmFkX2FsbG9jKTsKdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCopIHRocm93KCk7CnZvaWQg
b3BlcmF0b3IgZGVsZXRlW10odm9pZCopIHRocm93KCk7CnZvaWQqIG9wZXJhdG9yIG5ldyhzdGQ6
OnNpemVfdCwgY29uc3Qgc3RkOjpub3Rocm93X3QmKSB0aHJvdygpOwp2b2lkKiBvcGVyYXRvciBu
ZXdbXShzdGQ6OnNpemVfdCwgY29uc3Qgc3RkOjpub3Rocm93X3QmKSB0aHJvdygpOwp2b2lkIG9w
ZXJhdG9yIGRlbGV0ZSh2b2lkKiwgY29uc3Qgc3RkOjpub3Rocm93X3QmKSB0aHJvdygpOwp2b2lk
IG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqLCBjb25zdCBzdGQ6Om5vdGhyb3dfdCYpIHRocm93KCk7
CgoKaW5saW5lIHZvaWQqIG9wZXJhdG9yIG5ldyhzdGQ6OnNpemVfdCwgdm9pZCogX19wKSB0aHJv
dygpIHsgcmV0dXJuIF9fcDsgfQppbmxpbmUgdm9pZCogb3BlcmF0b3IgbmV3W10oc3RkOjpzaXpl
X3QsIHZvaWQqIF9fcCkgdGhyb3coKSB7IHJldHVybiBfX3A7IH0KCgppbmxpbmUgdm9pZCBvcGVy
YXRvciBkZWxldGUgKHZvaWQqLCB2b2lkKikgdGhyb3coKSB7IH07CmlubGluZSB2b2lkIG9wZXJh
dG9yIGRlbGV0ZVtdKHZvaWQqLCB2b2lkKikgdGhyb3coKSB7IH07Cgp9CiMgMzcgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNCdWZmZXJIYW5kbGVVdGlscy5oIiAyCgoKCnRlbXBsYXRl
IDxjbGFzcyBDaGFyVD4KY2xhc3MgbnNBdXRvQnVmZmVySGFuZGxlCiAgewogICAgcHVibGljOgog
ICAgICBuc0F1dG9CdWZmZXJIYW5kbGUoKSA6IG1IYW5kbGUoMCkgeyB9CgogICAgICBuc0F1dG9C
dWZmZXJIYW5kbGUoIGNvbnN0IG5zQXV0b0J1ZmZlckhhbmRsZTxDaGFyVD4mIGFPdGhlciApCiAg
ICAgICAgICA6IG1IYW5kbGUoYU90aGVyLmdldCgpKQogICAgICAgIHsKICAgICAgICAgIGlmICgg
bUhhbmRsZSApCiAgICAgICAgICAgIG1IYW5kbGUtPkFjcXVpcmVSZWZlcmVuY2UoKTsKICAgICAg
ICB9CgogICAgICBleHBsaWNpdAogICAgICBuc0F1dG9CdWZmZXJIYW5kbGUoIGNvbnN0IG5zU2hh
cmVkQnVmZmVySGFuZGxlPENoYXJUPiogYUhhbmRsZSApCiAgICAgICAgICA6IG1IYW5kbGUoIGNv
bnN0X2Nhc3Q8IG5zU2hhcmVkQnVmZmVySGFuZGxlPENoYXJUPiogPihhSGFuZGxlKSApCiAgICAg
ICAgewogICAgICAgICAgaWYgKCBtSGFuZGxlICkKICAgICAgICAgICAgbUhhbmRsZS0+QWNxdWly
ZVJlZmVyZW5jZSgpOwogICAgICAgIH0KCiAgICAgfm5zQXV0b0J1ZmZlckhhbmRsZSgpCiAgICAg
ICAgewogICAgICAgICAgaWYgKCBtSGFuZGxlICkKICAgICAgICAgICAgbUhhbmRsZS0+UmVsZWFz
ZVJlZmVyZW5jZSgpOwogICAgICAgIH0KCiAgICAgIG5zQXV0b0J1ZmZlckhhbmRsZTxDaGFyVD4m
CiAgICAgIG9wZXJhdG9yPSggY29uc3QgbnNTaGFyZWRCdWZmZXJIYW5kbGU8Q2hhclQ+KiByaHMg
KQogICAgICAgIHsKICAgICAgICAgIG5zU2hhcmVkQnVmZmVySGFuZGxlPENoYXJUPiogb2xkX2hh
bmRsZSA9IG1IYW5kbGU7CiAgICAgICAgICBpZiAoIChtSGFuZGxlID0gY29uc3RfY2FzdDwgbnNT
aGFyZWRCdWZmZXJIYW5kbGU8Q2hhclQ+KiA+KHJocykpICkKICAgICAgICAgICAgbUhhbmRsZS0+
QWNxdWlyZVJlZmVyZW5jZSgpOwogICAgICAgICAgaWYgKCBvbGRfaGFuZGxlICkKICAgICAgICAg
ICAgb2xkX2hhbmRsZS0+UmVsZWFzZVJlZmVyZW5jZSgpOwogICAgICAgICAgcmV0dXJuICp0aGlz
OwogICAgICAgIH0KCiAgICAgIG5zQXV0b0J1ZmZlckhhbmRsZTxDaGFyVD4mCiAgICAgIG9wZXJh
dG9yPSggY29uc3QgbnNBdXRvQnVmZmVySGFuZGxlPENoYXJUPiYgcmhzICkKICAgICAgICB7CiAg
ICAgICAgICByZXR1cm4gb3BlcmF0b3I9KHJocy5nZXQoKSk7CiAgICAgICAgfQoKICAgICAgbnNT
aGFyZWRCdWZmZXJIYW5kbGU8Q2hhclQ+KgogICAgICBnZXQoKSBjb25zdAogICAgICAgIHsKICAg
ICAgICAgIHJldHVybiBtSGFuZGxlOwogICAgICAgIH0KCiAgICAgIG9wZXJhdG9yIG5zU2hhcmVk
QnVmZmVySGFuZGxlPENoYXJUPiooKSBjb25zdAogICAgICAgIHsKICAgICAgICAgIHJldHVybiBn
ZXQoKTsKICAgICAgICB9CgogICAgICBuc1NoYXJlZEJ1ZmZlckhhbmRsZTxDaGFyVD4qCiAgICAg
IG9wZXJhdG9yLT4oKSBjb25zdAogICAgICAgIHsKICAgICAgICAgIHJldHVybiBnZXQoKTsKICAg
ICAgICB9CgogICAgcHJpdmF0ZToKICAgICAgbnNTaGFyZWRCdWZmZXJIYW5kbGU8Q2hhclQ+KiBt
SGFuZGxlOwogIH07CgoKdGVtcGxhdGUgPGNsYXNzIEhhbmRsZVQsIGNsYXNzIENoYXJUPgppbmxp
bmUKc2l6ZV90Ck5TX0FsaWduZWRIYW5kbGVTaXplKCBjb25zdCBIYW5kbGVUKiwgY29uc3QgQ2hh
clQqICkKICB7CgogICAgcmV0dXJuICgoc2l6ZW9mKEhhbmRsZVQpICsgc2l6ZW9mKENoYXJUKSAt
IDEpIC8gc2l6ZW9mKENoYXJUKSkgKiBzaXplb2YoQ2hhclQpOwogIH0KCnRlbXBsYXRlIDxjbGFz
cyBIYW5kbGVULCBjbGFzcyBDaGFyVD4KaW5saW5lCmNvbnN0IENoYXJUKgpOU19EYXRhQWZ0ZXJI
YW5kbGUoIGNvbnN0IEhhbmRsZVQqIGFIYW5kbGVQdHIsIGNvbnN0IENoYXJUKiBhRHVtbXlDaGFy
VFB0ciApCiAgewogICAgdHlwZWRlZiBjb25zdCBDaGFyVCogQ2hhclRfcHRyOwogICAgcmV0dXJu
IENoYXJUX3B0cihzdGF0aWNfY2FzdDwgY29uc3QgdW5zaWduZWQgY2hhciogPihhSGFuZGxlUHRy
KSArIE5TX0FsaWduZWRIYW5kbGVTaXplKGFIYW5kbGVQdHIsIGFEdW1teUNoYXJUUHRyKSk7CiAg
fQoKdGVtcGxhdGUgPGNsYXNzIEhhbmRsZVQsIGNsYXNzIENoYXJUPgppbmxpbmUKQ2hhclQqCk5T
X0RhdGFBZnRlckhhbmRsZSggSGFuZGxlVCogYUhhbmRsZVB0ciwgY29uc3QgQ2hhclQqIGFEdW1t
eUNoYXJUUHRyICkKICB7CiAgICB0eXBlZGVmIENoYXJUKiBDaGFyVF9wdHI7CiAgICByZXR1cm4g
Q2hhclRfcHRyKHN0YXRpY19jYXN0PCB1bnNpZ25lZCBjaGFyKiA+KGFIYW5kbGVQdHIpICsgTlNf
QWxpZ25lZEhhbmRsZVNpemUoYUhhbmRsZVB0ciwgYUR1bW15Q2hhclRQdHIpKTsKICB9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgSGFuZGxlVCwgY2xhc3MgU3RyaW5nVD4KSGFuZGxlVCoKTlNfQWxsb2NhdGVD
b250aWd1b3VzSGFuZGxlV2l0aERhdGEoIGNvbnN0IEhhbmRsZVQqIGFEdW1teUhhbmRsZVB0ciwg
UFJVaW50MzIgYUFkZGl0aW9uYWxDYXBhY2l0eSwgY29uc3QgU3RyaW5nVCogYURhdGFTb3VyY2Ug
KQogIHsKICAgIHR5cGVkZWYgdHlwZW5hbWUgU3RyaW5nVDo6Y2hhcl90eXBlIGNoYXJfdHlwZTsK
ICAgIHR5cGVkZWYgY2hhcl90eXBlKiBjaGFyX3B0cjsKCgogICAgc2l6ZV90IGhhbmRsZV9zaXpl
ID0gTlNfQWxpZ25lZEhhbmRsZVNpemUoYUR1bW15SGFuZGxlUHRyLCBjaGFyX3B0cigwKSk7CgoK
ICAgIHNpemVfdCBkYXRhX2xlbmd0aCA9IGFEYXRhU291cmNlPyBhRGF0YVNvdXJjZS0+TGVuZ3Ro
KCkgOiAwOwogICAgc2l6ZV90IGJ1ZmZlcl9sZW5ndGggPSBkYXRhX2xlbmd0aCArIGFBZGRpdGlv
bmFsQ2FwYWNpdHk7CgoKICAgIHNpemVfdCBidWZmZXJfc2l6ZSA9IGJ1ZmZlcl9sZW5ndGggKiBz
aXplb2YoY2hhcl90eXBlKTsKCgogICAgSGFuZGxlVCogcmVzdWx0ID0gMDsKICAgIHZvaWQqIGhh
bmRsZV9wdHIgPSA6Om9wZXJhdG9yIG5ldyhoYW5kbGVfc2l6ZSArIGJ1ZmZlcl9zaXplKTsKCiAg
ICBpZiAoIGhhbmRsZV9wdHIgKQogICAgICB7CiAgICAgICAgY2hhcl9wdHIgZGF0YV9zdGFydF9w
dHIgPSBjaGFyX3B0cihzdGF0aWNfY2FzdDwgdW5zaWduZWQgY2hhciogPihoYW5kbGVfcHRyKSAr
IGhhbmRsZV9zaXplKTsKICAgICAgICBjaGFyX3B0ciBkYXRhX2VuZF9wdHIgPSBkYXRhX3N0YXJ0
X3B0ciArIGRhdGFfbGVuZ3RoOwogICAgICAgIGNoYXJfcHRyIGJ1ZmZlcl9lbmRfcHRyID0gZGF0
YV9zdGFydF9wdHIgKyBidWZmZXJfbGVuZ3RoOwoKICAgICAgICBjaGFyX3B0ciB0b0JlZ2luID0g
ZGF0YV9zdGFydF9wdHI7CgogICAgICAgIGlmICggZGF0YV9sZW5ndGggKQogICAgICAgICAgewog
ICAgICAgICAgICB0eXBlbmFtZSBTdHJpbmdUOjpjb25zdF9pdGVyYXRvciBmcm9tQmVnaW4sIGZy
b21FbmQ7CiAgICAgICAgICAgIGNvcHlfc3RyaW5nKGFEYXRhU291cmNlLT5CZWdpblJlYWRpbmco
ZnJvbUJlZ2luKSwgYURhdGFTb3VyY2UtPkVuZFJlYWRpbmcoZnJvbUVuZCksIHRvQmVnaW4pOwog
ICAgICAgICAgfQoKCiAgICAgICAgaWYgKCBhQWRkaXRpb25hbENhcGFjaXR5ID4gMCApCiAgICAg
ICAgICAqdG9CZWdpbiA9IGNoYXJfdHlwZSgwKTsKCiAgICAgICAgcmVzdWx0ID0gbmV3IChoYW5k
bGVfcHRyKSBIYW5kbGVUKGRhdGFfc3RhcnRfcHRyLCBkYXRhX2VuZF9wdHIsIGJ1ZmZlcl9lbmRf
cHRyIC0gZGF0YV9zdGFydF9wdHIsIDEpOwogICAgICB9CgogICAgcmV0dXJuIHJlc3VsdDsKICB9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgSGFuZGxlVCwgY2xhc3MgU3RyaW5nVD4KaW5saW5lCkhhbmRsZVQq
Ck5TX0FsbG9jYXRlQ29udGlndW91c0hhbmRsZVdpdGhEYXRhKCBjb25zdCBIYW5kbGVUKiBhRHVt
bXlIYW5kbGVQdHIsIGNvbnN0IFN0cmluZ1QmIGFEYXRhU291cmNlLCBQUlVpbnQzMiBhQWRkaXRp
b25hbENhcGFjaXR5ICkKICB7CiAgICByZXR1cm4gTlNfQWxsb2NhdGVDb250aWd1b3VzSGFuZGxl
V2l0aERhdGEoYUR1bW15SGFuZGxlUHRyLCBhQWRkaXRpb25hbENhcGFjaXR5LCAmYURhdGFTb3Vy
Y2UpOwogIH0KIyAzNiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1NoYXJhYmxlU3Ry
aW5nLmgiIDIKIyA0NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1NoYXJhYmxlU3Ry
aW5nLmgiCmNsYXNzIG5zU2hhcmFibGVTdHJpbmcKICAgIDogcHVibGljIG5zQUZsYXRTdHJpbmcK
ICB7CiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgbnNTaGFyYWJsZVN0cmluZyBzZWxmX3R5cGU7
CgogICAgcHVibGljOgogICAgICBuc1NoYXJhYmxlU3RyaW5nKCkgOiBtQnVmZmVyKEdldFNoYXJl
ZEVtcHR5QnVmZmVySGFuZGxlKCkpIHsgfQogICAgICBuc1NoYXJhYmxlU3RyaW5nKCBjb25zdCBz
ZWxmX3R5cGUmIGFPdGhlciApIDogbUJ1ZmZlcihhT3RoZXIubUJ1ZmZlcikgeyB9CiAgICAgIGV4
cGxpY2l0IG5zU2hhcmFibGVTdHJpbmcoIGNvbnN0IGFic3RyYWN0X3N0cmluZ190eXBlJiBhUmVh
ZGFibGUgKQogICAgICAgIHsKCgogICAgICAgICAgZG9fQXNzaWduRnJvbVJlYWRhYmxlKGFSZWFk
YWJsZSk7CiAgICAgICAgfQogICAgICBleHBsaWNpdCBuc1NoYXJhYmxlU3RyaW5nKCBjb25zdCBz
aGFyZWRfYnVmZmVyX2hhbmRsZV90eXBlKiBhSGFuZGxlICkKICAgICAgICAgIDogbUJ1ZmZlcihh
SGFuZGxlKQogICAgICAgIHsKICAgICAgICAgIDsKICAgICAgICB9CgoKICAgICAgc2VsZl90eXBl
JiBvcGVyYXRvcj0oIGNvbnN0IGFic3RyYWN0X3N0cmluZ190eXBlJiBhUmVhZGFibGUgKQogICAg
ICAgIHsKICAgICAgICAgIEFzc2lnbihhUmVhZGFibGUpOwogICAgICAgICAgcmV0dXJuICp0aGlz
OwogICAgICAgIH0KIyA4MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1NoYXJhYmxl
U3RyaW5nLmgiCiAgICAgIHZvaWQgQWRvcHQoIGNoYXJfdHlwZSogYU5ld1ZhbHVlICk7CgoKCgoK
CgogICAgcHVibGljOgogICAgICB2aXJ0dWFsIHZvaWQgU2V0Q2FwYWNpdHkoIHNpemVfdHlwZSBh
TmV3Q2FwYWNpdHkgKTsKICAgICAgdmlydHVhbCB2b2lkIFNldExlbmd0aCggc2l6ZV90eXBlIGFO
ZXdMZW5ndGggKTsKICAgIHByb3RlY3RlZDoKICAgICAgdmlydHVhbCB2b2lkIGRvX0Fzc2lnbkZy
b21SZWFkYWJsZSggY29uc3QgYWJzdHJhY3Rfc3RyaW5nX3R5cGUmIGFSZWFkYWJsZSApOwogICAg
ICB2aXJ0dWFsIGNvbnN0IHNoYXJlZF9idWZmZXJfaGFuZGxlX3R5cGUqIEdldFNoYXJlZEJ1ZmZl
ckhhbmRsZSgpIGNvbnN0OwoKICAgIHB1YmxpYzoKICAgICAgdmlydHVhbCBjaGFyX3R5cGUqIEdl
dFdyaXRhYmxlRnJhZ21lbnQoIGZyYWdtZW50X3R5cGUmLCBuc0ZyYWdtZW50UmVxdWVzdCwgUFJV
aW50MzIgKTsKCiAgICBwcm90ZWN0ZWQ6CiAgICAgIHN0YXRpYyBzaGFyZWRfYnVmZmVyX2hhbmRs
ZV90eXBlKiBHZXRTaGFyZWRFbXB0eUJ1ZmZlckhhbmRsZSgpOwoKICAgIHByb3RlY3RlZDoKICAg
ICAgbnNBdXRvQnVmZmVySGFuZGxlPGNoYXJfdHlwZT4gbUJ1ZmZlcjsKICB9OwoKCmNsYXNzIG5z
U2hhcmFibGVDU3RyaW5nCiAgICA6IHB1YmxpYyBuc0FGbGF0Q1N0cmluZwogIHsKICAgIHB1Ymxp
YzoKICAgICAgdHlwZWRlZiBuc1NoYXJhYmxlQ1N0cmluZyBzZWxmX3R5cGU7CgogICAgcHVibGlj
OgogICAgICBuc1NoYXJhYmxlQ1N0cmluZygpIDogbUJ1ZmZlcihHZXRTaGFyZWRFbXB0eUJ1ZmZl
ckhhbmRsZSgpKSB7IH0KICAgICAgbnNTaGFyYWJsZUNTdHJpbmcoIGNvbnN0IHNlbGZfdHlwZSYg
YU90aGVyICkgOiBtQnVmZmVyKGFPdGhlci5tQnVmZmVyKSB7IH0KICAgICAgZXhwbGljaXQgbnNT
aGFyYWJsZUNTdHJpbmcoIGNvbnN0IGFic3RyYWN0X3N0cmluZ190eXBlJiBhUmVhZGFibGUgKQog
ICAgICAgIHsKCgogICAgICAgICAgZG9fQXNzaWduRnJvbVJlYWRhYmxlKGFSZWFkYWJsZSk7CiAg
ICAgICAgfQogICAgICBleHBsaWNpdCBuc1NoYXJhYmxlQ1N0cmluZyggY29uc3Qgc2hhcmVkX2J1
ZmZlcl9oYW5kbGVfdHlwZSogYUhhbmRsZSApCiAgICAgICAgICA6IG1CdWZmZXIoYUhhbmRsZSkK
ICAgICAgICB7CiAgICAgICAgICA7CiAgICAgICAgfQoKCiAgICAgIHNlbGZfdHlwZSYgb3BlcmF0
b3I9KCBjb25zdCBhYnN0cmFjdF9zdHJpbmdfdHlwZSYgYVJlYWRhYmxlICkKICAgICAgICB7CiAg
ICAgICAgICBBc3NpZ24oYVJlYWRhYmxlKTsKICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAg
ICB9CiMgMTQ1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zU2hhcmFibGVTdHJpbmcu
aCIKICAgICAgdm9pZCBBZG9wdCggY2hhcl90eXBlKiBhTmV3VmFsdWUgKTsKCgoKCgoKCiAgICBw
dWJsaWM6CiAgICAgIHZpcnR1YWwgdm9pZCBTZXRDYXBhY2l0eSggc2l6ZV90eXBlIGFOZXdDYXBh
Y2l0eSApOwogICAgICB2aXJ0dWFsIHZvaWQgU2V0TGVuZ3RoKCBzaXplX3R5cGUgYU5ld0xlbmd0
aCApOwogICAgcHJvdGVjdGVkOgogICAgICB2aXJ0dWFsIHZvaWQgZG9fQXNzaWduRnJvbVJlYWRh
YmxlKCBjb25zdCBhYnN0cmFjdF9zdHJpbmdfdHlwZSYgYVJlYWRhYmxlICk7CiAgICAgIHZpcnR1
YWwgY29uc3Qgc2hhcmVkX2J1ZmZlcl9oYW5kbGVfdHlwZSogR2V0U2hhcmVkQnVmZmVySGFuZGxl
KCkgY29uc3Q7CgogICAgcHVibGljOgogICAgICB2aXJ0dWFsIGNoYXJfdHlwZSogR2V0V3JpdGFi
bGVGcmFnbWVudCggZnJhZ21lbnRfdHlwZSYsIG5zRnJhZ21lbnRSZXF1ZXN0LCBQUlVpbnQzMiAp
OwoKICAgIHByb3RlY3RlZDoKICAgICAgc3RhdGljIHNoYXJlZF9idWZmZXJfaGFuZGxlX3R5cGUq
IEdldFNoYXJlZEVtcHR5QnVmZmVySGFuZGxlKCk7CgogICAgcHJvdGVjdGVkOgogICAgICBuc0F1
dG9CdWZmZXJIYW5kbGU8Y2hhcl90eXBlPiBtQnVmZmVyOwogIH07CiMgMjkgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9zdHJpbmcvbnNQcm9taXNlRmxhdFN0cmluZy5oIiAyCiMgODMgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNQcm9taXNlRmxhdFN0cmluZy5oIgpjbGFzcyBuc1Byb21p
c2VGbGF0U3RyaW5nCiAgICA6IHB1YmxpYyBuc0FGbGF0U3RyaW5nCiAgewogICAgZnJpZW5kIGNv
bnN0IG5zUHJvbWlzZUZsYXRTdHJpbmcgUHJvbWlzZUZsYXRTdHJpbmcoIGNvbnN0IGFic3RyYWN0
X3N0cmluZ190eXBlJiApOwoKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBuc1Byb21pc2VGbGF0
U3RyaW5nIHNlbGZfdHlwZTsKCiAgICBwdWJsaWM6CiAgICAgIG5zUHJvbWlzZUZsYXRTdHJpbmco
IGNvbnN0IHNlbGZfdHlwZSYgKTsKCiAgICBwcm90ZWN0ZWQ6CiAgICAgIG5zUHJvbWlzZUZsYXRT
dHJpbmcoKSA6IG1Qcm9taXNlZFN0cmluZygmbUZsYXR0ZW5lZFN0cmluZykgeyB9CiAgICAgIGV4
cGxpY2l0IG5zUHJvbWlzZUZsYXRTdHJpbmcoIGNvbnN0IGFic3RyYWN0X3N0cmluZ190eXBlJiBh
U3RyaW5nICk7CgoKICAgICAgdmlydHVhbCBjb25zdCBidWZmZXJfaGFuZGxlX3R5cGUqIEdldEZs
YXRCdWZmZXJIYW5kbGUoKSBjb25zdDsKICAgICAgdmlydHVhbCBjb25zdCBidWZmZXJfaGFuZGxl
X3R5cGUqIEdldEJ1ZmZlckhhbmRsZSgpIGNvbnN0OwogICAgICB2aXJ0dWFsIGNvbnN0IHNoYXJl
ZF9idWZmZXJfaGFuZGxlX3R5cGUqIEdldFNoYXJlZEJ1ZmZlckhhbmRsZSgpIGNvbnN0OwoKCgog
ICAgcHVibGljOgogICAgICB2aXJ0dWFsIGNvbnN0IGNoYXJfdHlwZSogZ2V0KCkgY29uc3Q7CiAg
ICAgIHZpcnR1YWwgUFJVaW50MzIgTGVuZ3RoKCkgY29uc3Q7CiAgICBwcm90ZWN0ZWQ6CiAgICAg
IHZpcnR1YWwgY29uc3QgY2hhcl90eXBlKiBHZXRSZWFkYWJsZUZyYWdtZW50KCBjb25zdF9mcmFn
bWVudF90eXBlJiwgbnNGcmFnbWVudFJlcXVlc3QsIFBSVWludDMyICkgY29uc3Q7CgoKICAgIHBy
aXZhdGU6CgogICAgICB2b2lkIG9wZXJhdG9yPSggY29uc3QgbnNQcm9taXNlRmxhdFN0cmluZyYg
KTsKCiAgICBwcml2YXRlOgogICAgICBuc1NoYXJhYmxlU3RyaW5nIG1GbGF0dGVuZWRTdHJpbmc7
CiAgICAgIGNvbnN0IG5zQUZsYXRTdHJpbmcqIG1Qcm9taXNlZFN0cmluZzsKICB9OwoKY2xhc3Mg
bnNQcm9taXNlRmxhdENTdHJpbmcKICAgIDogcHVibGljIG5zQUZsYXRDU3RyaW5nCiAgewogICAg
ZnJpZW5kIGNvbnN0IG5zUHJvbWlzZUZsYXRDU3RyaW5nIFByb21pc2VGbGF0Q1N0cmluZyggY29u
c3QgYWJzdHJhY3Rfc3RyaW5nX3R5cGUmICk7CgogICAgcHVibGljOgogICAgICB0eXBlZGVmIG5z
UHJvbWlzZUZsYXRDU3RyaW5nIHNlbGZfdHlwZTsKCiAgICBwdWJsaWM6CiAgICAgIG5zUHJvbWlz
ZUZsYXRDU3RyaW5nKCBjb25zdCBzZWxmX3R5cGUmICk7CgogICAgcHJvdGVjdGVkOgogICAgICBu
c1Byb21pc2VGbGF0Q1N0cmluZygpIDogbVByb21pc2VkU3RyaW5nKCZtRmxhdHRlbmVkU3RyaW5n
KSB7IH0KICAgICAgZXhwbGljaXQgbnNQcm9taXNlRmxhdENTdHJpbmcoIGNvbnN0IGFic3RyYWN0
X3N0cmluZ190eXBlJiBhU3RyaW5nICk7CgoKICAgICAgdmlydHVhbCBjb25zdCBidWZmZXJfaGFu
ZGxlX3R5cGUqIEdldEZsYXRCdWZmZXJIYW5kbGUoKSBjb25zdDsKICAgICAgdmlydHVhbCBjb25z
dCBidWZmZXJfaGFuZGxlX3R5cGUqIEdldEJ1ZmZlckhhbmRsZSgpIGNvbnN0OwogICAgICB2aXJ0
dWFsIGNvbnN0IHNoYXJlZF9idWZmZXJfaGFuZGxlX3R5cGUqIEdldFNoYXJlZEJ1ZmZlckhhbmRs
ZSgpIGNvbnN0OwoKCgogICAgcHVibGljOgogICAgICB2aXJ0dWFsIGNvbnN0IGNoYXJfdHlwZSog
Z2V0KCkgY29uc3Q7CiAgICAgIHZpcnR1YWwgUFJVaW50MzIgTGVuZ3RoKCkgY29uc3Q7CiAgICBw
cm90ZWN0ZWQ6CiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcl90eXBlKiBHZXRSZWFkYWJsZUZyYWdt
ZW50KCBjb25zdF9mcmFnbWVudF90eXBlJiwgbnNGcmFnbWVudFJlcXVlc3QsIFBSVWludDMyICkg
Y29uc3Q7CgoKICAgIHByaXZhdGU6CgogICAgICB2b2lkIG9wZXJhdG9yPSggY29uc3Qgc2VsZl90
eXBlJiApOwoKICAgIHByaXZhdGU6CiAgICAgIG5zU2hhcmFibGVDU3RyaW5nIG1GbGF0dGVuZWRT
dHJpbmc7CiAgICAgIGNvbnN0IG5zQUZsYXRDU3RyaW5nKiBtUHJvbWlzZWRTdHJpbmc7CiAgfTsK
CgppbmxpbmUKY29uc3QgbnNQcm9taXNlRmxhdFN0cmluZwpQcm9taXNlRmxhdFN0cmluZyggY29u
c3QgbnNBU3RyaW5nJiBhU3RyaW5nICkKICB7CiAgICByZXR1cm4gbnNQcm9taXNlRmxhdFN0cmlu
ZyhhU3RyaW5nKTsKICB9CgppbmxpbmUKY29uc3QgbnNQcm9taXNlRmxhdENTdHJpbmcKUHJvbWlz
ZUZsYXRDU3RyaW5nKCBjb25zdCBuc0FDU3RyaW5nJiBhU3RyaW5nICkKICB7CiAgICByZXR1cm4g
bnNQcm9taXNlRmxhdENTdHJpbmcoYVN0cmluZyk7CiAgfQojIDcxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvc3RyaW5nL25zU3RyaW5nMi5oIiAyCgoKCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3N0cmluZy9uc1hQSURMU3RyaW5nLmgiIDEKIyAxMjggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9z
dHJpbmcvbnNYUElETFN0cmluZy5oIgpjbGFzcyBuc1hQSURMU3RyaW5nCiAgICA6IHB1YmxpYyBu
c1NoYXJhYmxlU3RyaW5nCiAgewogICAgcHVibGljOgogICAgICB0eXBlZGVmIG5zWFBJRExTdHJp
bmcgc2VsZl90eXBlOwoKICAgIHB1YmxpYzoKICAgICAgbnNYUElETFN0cmluZygpCiAgICAgICAg
ICA6IG5zU2hhcmFibGVTdHJpbmcoR2V0U2hhcmVkRW1wdHlCdWZmZXJIYW5kbGUoKSkKICAgICAg
ICB7CgoKCgoKICAgICAgICB9CgogICAgICBuc1hQSURMU3RyaW5nKCBjb25zdCBzZWxmX3R5cGUm
IGFTdHJpbmcgKQogICAgICAgICAgOiBuc1NoYXJhYmxlU3RyaW5nKGFTdHJpbmcubUJ1ZmZlci5n
ZXQoKSkKCiAgICAgICAgewoKCgoKCiAgICAgICAgfQoKICAgICAgZXhwbGljaXQgbnNYUElETFN0
cmluZyggY29uc3QgYWJzdHJhY3Rfc3RyaW5nX3R5cGUmIGFSZWFkYWJsZSApCiAgICAgICAgICA6
IG5zU2hhcmFibGVTdHJpbmcoYVJlYWRhYmxlKQogICAgICAgIHsKCgoKCgogICAgICAgIH0KIyAx
NzMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNYUElETFN0cmluZy5oIgogICAgICBz
ZWxmX3R5cGUmCiAgICAgIG9wZXJhdG9yPSggY29uc3QgYWJzdHJhY3Rfc3RyaW5nX3R5cGUmIGFS
ZWFkYWJsZSApCiAgICAgICAgewogICAgICAgICAgQXNzaWduKGFSZWFkYWJsZSk7CiAgICAgICAg
ICByZXR1cm4gKnRoaXM7CiAgICAgICAgfQoKCgoKCgoKICAgICAgdm9pZCBBZG9wdCggY2hhcl90
eXBlKiBhTmV3VmFsdWUgKSB7ICpQcmVwYXJlRm9yVXNlQXNPdXRQYXJhbSgpID0gYU5ld1ZhbHVl
OyB9CgoKICAgICAgdmlydHVhbCBjb25zdCBjaGFyX3R5cGUqIGdldCgpIGNvbnN0CiAgICAgICAg
ewogICAgICAgICAgcmV0dXJuIChtQnVmZmVyLT5HZXRJbXBsZW1lbnRhdGlvbkZsYWdzKCkgJiBz
aGFyZWRfYnVmZmVyX2hhbmRsZV90eXBlOjprSXNOVUxMKQogICAgICAgICAgICAgICAgICAgPyAw
CiAgICAgICAgICAgICAgICAgICA6IG1CdWZmZXItPkRhdGFTdGFydCgpOwogICAgICAgIH0KCgog
ICAgICBvcGVyYXRvciBjb25zdCBjaGFyX3R5cGUqKCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0K
ICAgICAgY2hhcl90eXBlIG9wZXJhdG9yW10oIGludCBpICkgY29uc3QgeyByZXR1cm4gZ2V0KClb
IGkgXTsgfQoKCiAgICAgIGNsYXNzIGdldHRlcl9Db3BpZXNfdAogICAgICAgIHsKICAgICAgICAg
IHB1YmxpYzoKICAgICAgICAgICAgZ2V0dGVyX0NvcGllc190KCBuc1hQSURMU3RyaW5nJiBhU3Ry
aW5nICkgOiBtU3RyaW5nKCZhU3RyaW5nKSB7IH0KCgoKICAgICAgICAgICAgb3BlcmF0b3IgY2hh
cl90eXBlKiooKSBjb25zdCB7IHJldHVybiBtU3RyaW5nLT5QcmVwYXJlRm9yVXNlQXNPdXRQYXJh
bSgpOyB9CgogICAgICAgICAgcHJpdmF0ZToKICAgICAgICAgICAgbnNYUElETFN0cmluZyogbVN0
cmluZzsKICAgICAgICB9OwoKICAgICAgZnJpZW5kIGNsYXNzIGdldHRlcl9Db3BpZXNfdDsKCiAg
ICBwcm90ZWN0ZWQ6CgoKCgogICAgICB2aXJ0dWFsIGNvbnN0IHNoYXJlZF9idWZmZXJfaGFuZGxl
X3R5cGUqIEdldFNoYXJlZEJ1ZmZlckhhbmRsZSgpIGNvbnN0OwoKCiAgICAgIGNoYXJfdHlwZSoq
IFByZXBhcmVGb3JVc2VBc091dFBhcmFtKCk7CgogICAgICBzdGF0aWMgc2hhcmVkX2J1ZmZlcl9o
YW5kbGVfdHlwZSogR2V0U2hhcmVkRW1wdHlCdWZmZXJIYW5kbGUoKTsKIyAyMzkgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNYUElETFN0cmluZy5oIgogIH07CgppbmxpbmUKbnNYUElE
TFN0cmluZzo6Z2V0dGVyX0NvcGllc190CmdldHRlcl9Db3BpZXMoIG5zWFBJRExTdHJpbmcmIGFT
dHJpbmcgKQogIHsKICAgIHJldHVybiBuc1hQSURMU3RyaW5nOjpnZXR0ZXJfQ29waWVzX3QoYVN0
cmluZyk7CiAgfQoKCgpjbGFzcyBuc1hQSURMQ1N0cmluZwogICAgOiBwdWJsaWMgbnNTaGFyYWJs
ZUNTdHJpbmcKICB7CiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgbnNYUElETENTdHJpbmcgc2Vs
Zl90eXBlOwoKICAgIHB1YmxpYzoKICAgICAgbnNYUElETENTdHJpbmcoKQogICAgICAgICAgOiBu
c1NoYXJhYmxlQ1N0cmluZyhHZXRTaGFyZWRFbXB0eUJ1ZmZlckhhbmRsZSgpKQogICAgICAgIHsK
CgoKCgogICAgICAgIH0KCiAgICAgIG5zWFBJRExDU3RyaW5nKCBjb25zdCBzZWxmX3R5cGUmIGFT
dHJpbmcgKQogICAgICAgICAgOiBuc1NoYXJhYmxlQ1N0cmluZyhhU3RyaW5nLm1CdWZmZXIuZ2V0
KCkpCgogICAgICAgIHsKCgoKCgogICAgICAgIH0KIyAyODUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9zdHJpbmcvbnNYUElETFN0cmluZy5oIgogICAgICBzZWxmX3R5cGUmCiAgICAgIG9wZXJhdG9y
PSggY29uc3QgYWJzdHJhY3Rfc3RyaW5nX3R5cGUmIGFSZWFkYWJsZSApCiAgICAgICAgewogICAg
ICAgICAgQXNzaWduKGFSZWFkYWJsZSk7CiAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAg
fQoKCgoKCgoKICAgICAgdm9pZCBBZG9wdCggY2hhcl90eXBlKiBhTmV3VmFsdWUgKSB7ICpQcmVw
YXJlRm9yVXNlQXNPdXRQYXJhbSgpID0gYU5ld1ZhbHVlOyB9CgoKICAgICAgdmlydHVhbCBjb25z
dCBjaGFyX3R5cGUqIGdldCgpIGNvbnN0CiAgICAgICAgewogICAgICAgICAgcmV0dXJuIChtQnVm
ZmVyLT5HZXRJbXBsZW1lbnRhdGlvbkZsYWdzKCkgJiBzaGFyZWRfYnVmZmVyX2hhbmRsZV90eXBl
OjprSXNOVUxMKQogICAgICAgICAgICAgICAgICAgPyAwCiAgICAgICAgICAgICAgICAgICA6IG1C
dWZmZXItPkRhdGFTdGFydCgpOwogICAgICAgIH0KCgogICAgICBvcGVyYXRvciBjb25zdCBjaGFy
X3R5cGUqKCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KICAgICAgY2hhcl90eXBlIG9wZXJhdG9y
W10oIGludCBpICkgY29uc3QgeyByZXR1cm4gZ2V0KClbIGkgXTsgfQoKCiAgICAgIGNsYXNzIGdl
dHRlcl9Db3BpZXNfdAogICAgICAgIHsKICAgICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgZ2V0
dGVyX0NvcGllc190KCBuc1hQSURMQ1N0cmluZyYgYVN0cmluZyApIDogbVN0cmluZygmYVN0cmlu
ZykgeyB9CgoKCiAgICAgICAgICAgIG9wZXJhdG9yIGNoYXJfdHlwZSoqKCkgY29uc3QgeyByZXR1
cm4gbVN0cmluZy0+UHJlcGFyZUZvclVzZUFzT3V0UGFyYW0oKTsgfQoKICAgICAgICAgIHByaXZh
dGU6CiAgICAgICAgICAgIG5zWFBJRExDU3RyaW5nKiBtU3RyaW5nOwogICAgICAgIH07CgogICAg
ICBmcmllbmQgY2xhc3MgZ2V0dGVyX0NvcGllc190OwoKICAgIHByb3RlY3RlZDoKCgoKCiAgICAg
IHZpcnR1YWwgY29uc3Qgc2hhcmVkX2J1ZmZlcl9oYW5kbGVfdHlwZSogR2V0U2hhcmVkQnVmZmVy
SGFuZGxlKCkgY29uc3Q7CgoKICAgICAgY2hhcl90eXBlKiogUHJlcGFyZUZvclVzZUFzT3V0UGFy
YW0oKTsKCiAgICAgIHN0YXRpYyBzaGFyZWRfYnVmZmVyX2hhbmRsZV90eXBlKiBHZXRTaGFyZWRF
bXB0eUJ1ZmZlckhhbmRsZSgpOwojIDM1MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9u
c1hQSURMU3RyaW5nLmgiCiAgfTsKCmlubGluZQpuc1hQSURMQ1N0cmluZzo6Z2V0dGVyX0NvcGll
c190CmdldHRlcl9Db3BpZXMoIG5zWFBJRExDU3RyaW5nJiBhU3RyaW5nICkKICB7CiAgICByZXR1
cm4gbnNYUElETENTdHJpbmc6OmdldHRlcl9Db3BpZXNfdChhU3RyaW5nKTsKICB9CiMgNzUgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHJpbmcyLmgiIDIKCgojIDEgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHIuaCIgMQojIDIxMiAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL3N0cmluZy9uc1N0ci5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc01l
bW9yeS5oIiAxCiMgNDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc01lbW9yeS5oIgoj
IDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lNZW1vcnkuaCIgMQojIDU0ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJTWVtb3J5LmgiCmNsYXNzIG5zSU1lbW9yeSA6IHB1
YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlE
KCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHg1OWU3ZTc3YSwgMHgzOGU0LCAweDExZDQs
IHsgMHg4YywgMHhmNSwgMHgwMCwgMHg2MCwgMHhiMCwgMHhmYywgMHgxNCwgMHhhMyB9fTsgcmV0
dXJuIGlpZDt9CiMgNjggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lNZW1vcnkuaCIK
ICB2aXJ0dWFsIHZvaWQgKiBBbGxvYyhzaXplX3Qgc2l6ZSkgPSAwOwojIDg1ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUveHBjb20vbnNJTWVtb3J5LmgiCiAgdmlydHVhbCB2b2lkICogUmVhbGxvYyh2
b2lkICogcHRyLCBzaXplX3QgbmV3U2l6ZSkgPSAwOwojIDk0ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUveHBjb20vbnNJTWVtb3J5LmgiCiAgdmlydHVhbCB2b2lkIEZyZWUodm9pZCAqIHB0cikgPSAw
OwojIDEwNiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSU1lbW9yeS5oIgogIHZpcnR1
YWwgbnNyZXN1bHQgSGVhcE1pbmltaXplKFBSQm9vbCBpbW1lZGlhdGUpID0gMDsKCgoKCgoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBJc0xvd01lbW9yeShQUkJvb2wgKl9yZXR2YWwpID0gMDsKCn07CiMg
NDIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc01lbW9yeS5oIiAyCiMgNjMgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc01lbW9yeS5oIgpjbGFzcyBuc01lbW9yeQp7CnB1Ymxp
YzoKICAgIHN0YXRpYyB2b2lkKiBBbGxvYyhzaXplX3Qgc2l6ZSk7CiAgICBzdGF0aWMgdm9pZCog
UmVhbGxvYyh2b2lkKiBwdHIsIHNpemVfdCBzaXplKTsKICAgIHN0YXRpYyB2b2lkIEZyZWUodm9p
ZCogcHRyKTsKICAgIHN0YXRpYyBuc3Jlc3VsdCBIZWFwTWluaW1pemUoUFJCb29sIGFJbW1lZGlh
dGUpOwogICAgc3RhdGljIHZvaWQqIENsb25lKGNvbnN0IHZvaWQqIHB0ciwgc2l6ZV90IHNpemUp
OwogICAgc3RhdGljIG5zSU1lbW9yeSogR2V0R2xvYmFsTWVtb3J5U2VydmljZSgpOwp9OwojIDIx
MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0ci5oIiAyCgoKIyAxICIvdmFyL3Rt
cC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9w
bGhhc2guaCIgMQojIDQzICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96
aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wbGhhc2guaCIKZXh0ZXJuICJDIiB7Cgp0eXBlZGVmIHN0
cnVjdCBQTEhhc2hFbnRyeSBQTEhhc2hFbnRyeTsKdHlwZWRlZiBzdHJ1Y3QgUExIYXNoVGFibGUg
UExIYXNoVGFibGU7CnR5cGVkZWYgUFJVaW50MzIgUExIYXNoTnVtYmVyOwoKdHlwZWRlZiBQTEhh
c2hOdW1iZXIgKCAqUExIYXNoRnVuY3Rpb24pKGNvbnN0IHZvaWQgKmtleSk7CnR5cGVkZWYgUFJJ
bnRuICggKlBMSGFzaENvbXBhcmF0b3IpKGNvbnN0IHZvaWQgKnYxLCBjb25zdCB2b2lkICp2Mik7
CgoKCgp0eXBlZGVmIFBSSW50biAoICpQTEhhc2hFbnVtZXJhdG9yKShQTEhhc2hFbnRyeSAqaGUs
IFBSSW50biBpLCB2b2lkICphcmcpOwojIDY3ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4z
LXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wbGhhc2guaCIKdHlwZWRlZiBzdHJ1
Y3QgUExIYXNoQWxsb2NPcHMgewogICAgdm9pZCAqICggKmFsbG9jVGFibGUpKHZvaWQgKnBvb2ws
IFBSU2l6ZSBzaXplKTsKICAgIHZvaWQgKCAqZnJlZVRhYmxlKSh2b2lkICpwb29sLCB2b2lkICpp
dGVtKTsKICAgIFBMSGFzaEVudHJ5ICogKCAqYWxsb2NFbnRyeSkodm9pZCAqcG9vbCwgY29uc3Qg
dm9pZCAqa2V5KTsKICAgIHZvaWQgKCAqZnJlZUVudHJ5KSh2b2lkICpwb29sLCBQTEhhc2hFbnRy
eSAqaGUsIFBSVWludG4gZmxhZyk7Cn0gUExIYXNoQWxsb2NPcHM7CgoKCgpzdHJ1Y3QgUExIYXNo
RW50cnkgewogICAgUExIYXNoRW50cnkgKm5leHQ7CiAgICBQTEhhc2hOdW1iZXIga2V5SGFzaDsK
ICAgIGNvbnN0IHZvaWQgKmtleTsKICAgIHZvaWQgKnZhbHVlOwp9OwoKc3RydWN0IFBMSGFzaFRh
YmxlIHsKICAgIFBMSGFzaEVudHJ5ICoqYnVja2V0czsKICAgIFBSVWludDMyIG5lbnRyaWVzOwog
ICAgUFJVaW50MzIgc2hpZnQ7CiAgICBQTEhhc2hGdW5jdGlvbiBrZXlIYXNoOwogICAgUExIYXNo
Q29tcGFyYXRvciBrZXlDb21wYXJlOwogICAgUExIYXNoQ29tcGFyYXRvciB2YWx1ZUNvbXBhcmU7
CiAgICBjb25zdCBQTEhhc2hBbGxvY09wcyAqYWxsb2NPcHM7CiAgICB2b2lkICphbGxvY1Bvb2w7
CgoKCgoKCn07CgoKCgoKZXh0ZXJuIFBMSGFzaFRhYmxlICoKUExfTmV3SGFzaFRhYmxlKFBSVWlu
dDMyIG51bUJ1Y2tldHMsIFBMSGFzaEZ1bmN0aW9uIGtleUhhc2gsCiAgICAgICAgICAgICAgICBQ
TEhhc2hDb21wYXJhdG9yIGtleUNvbXBhcmUsIFBMSGFzaENvbXBhcmF0b3IgdmFsdWVDb21wYXJl
LAogICAgICAgICAgICAgICAgY29uc3QgUExIYXNoQWxsb2NPcHMgKmFsbG9jT3BzLCB2b2lkICph
bGxvY1Bvb2wpOwoKZXh0ZXJuIHZvaWQKUExfSGFzaFRhYmxlRGVzdHJveShQTEhhc2hUYWJsZSAq
aHQpOwoKCmV4dGVybiBQTEhhc2hFbnRyeSAqClBMX0hhc2hUYWJsZUFkZChQTEhhc2hUYWJsZSAq
aHQsIGNvbnN0IHZvaWQgKmtleSwgdm9pZCAqdmFsdWUpOwoKZXh0ZXJuIFBSQm9vbApQTF9IYXNo
VGFibGVSZW1vdmUoUExIYXNoVGFibGUgKmh0LCBjb25zdCB2b2lkICprZXkpOwoKZXh0ZXJuIHZv
aWQgKgpQTF9IYXNoVGFibGVMb29rdXAoUExIYXNoVGFibGUgKmh0LCBjb25zdCB2b2lkICprZXkp
OwoKZXh0ZXJuIHZvaWQgKgpQTF9IYXNoVGFibGVMb29rdXBDb25zdChQTEhhc2hUYWJsZSAqaHQs
IGNvbnN0IHZvaWQgKmtleSk7CgpleHRlcm4gUFJJbnRuClBMX0hhc2hUYWJsZUVudW1lcmF0ZUVu
dHJpZXMoUExIYXNoVGFibGUgKmh0LCBQTEhhc2hFbnVtZXJhdG9yIGYsIHZvaWQgKmFyZyk7CgoK
ZXh0ZXJuIFBMSGFzaE51bWJlcgpQTF9IYXNoU3RyaW5nKGNvbnN0IHZvaWQgKmtleSk7CgoKZXh0
ZXJuIFBSSW50bgpQTF9Db21wYXJlU3RyaW5ncyhjb25zdCB2b2lkICp2MSwgY29uc3Qgdm9pZCAq
djIpOwoKCmV4dGVybiBQUkludG4KUExfQ29tcGFyZVZhbHVlcyhjb25zdCB2b2lkICp2MSwgY29u
c3Qgdm9pZCAqdjIpOwoKCmV4dGVybiBQTEhhc2hFbnRyeSAqKgpQTF9IYXNoVGFibGVSYXdMb29r
dXAoUExIYXNoVGFibGUgKmh0LCBQTEhhc2hOdW1iZXIga2V5SGFzaCwgY29uc3Qgdm9pZCAqa2V5
KTsKCmV4dGVybiBQTEhhc2hFbnRyeSAqKgpQTF9IYXNoVGFibGVSYXdMb29rdXBDb25zdChQTEhh
c2hUYWJsZSAqaHQsIFBMSGFzaE51bWJlciBrZXlIYXNoLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB2b2lkICprZXkpOwoKZXh0ZXJuIFBMSGFzaEVudHJ5ICoKUExfSGFzaFRhYmxl
UmF3QWRkKFBMSGFzaFRhYmxlICpodCwgUExIYXNoRW50cnkgKipoZXAsIFBMSGFzaE51bWJlciBr
ZXlIYXNoLAogICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqa2V5LCB2b2lkICp2YWx1ZSk7
CgpleHRlcm4gdm9pZApQTF9IYXNoVGFibGVSYXdSZW1vdmUoUExIYXNoVGFibGUgKmh0LCBQTEhh
c2hFbnRyeSAqKmhlcCwgUExIYXNoRW50cnkgKmhlKTsKCgpleHRlcm4gUFJJbnRuClBMX0hhc2hU
YWJsZUR1bXAoUExIYXNoVGFibGUgKmh0LCBQTEhhc2hFbnVtZXJhdG9yIGR1bXAsIEZJTEUgKmZw
KTsKCn0KIyAyMTYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHIuaCIgMgojIDEg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHJTaGFyZWQuaCIgMQoKCgoKCmVudW0g
ZUNoYXJTaXplIHtlT25lQnl0ZT0wLGVUd29CeXRlPTF9OwojIDIxNyAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL3N0cmluZy9uc1N0ci5oIiAyCiMgMjM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3Ry
aW5nL25zU3RyLmgiCmNvbnN0IFBSSW50MzIga0RlZmF1bHRTdHJpbmdTaXplID0gNjQ7CmNvbnN0
IFBSSW50MzIga05vdEZvdW5kID0gLTE7CgoKCmNsYXNzIG5zQVN0cmluZzsKY2xhc3MgQ0J1ZkRl
c2NyaXB0b3IgewpwdWJsaWM6CiAgQ0J1ZkRlc2NyaXB0b3IoY2hhciogYVN0cmluZywgUFJCb29s
IGFTdGFja0Jhc2VkLFBSVWludDMyIGFDYXBhY2l0eSxQUkludDMyIGFMZW5ndGg9LTEpOwogIENC
dWZEZXNjcmlwdG9yKGNvbnN0IGNoYXIqIGFTdHJpbmcsIFBSQm9vbCBhU3RhY2tCYXNlZCxQUlVp
bnQzMiBhQ2FwYWNpdHksUFJJbnQzMiBhTGVuZ3RoPS0xKTsKICBDQnVmRGVzY3JpcHRvcihQUlVu
aWNoYXIqIGFTdHJpbmcsIFBSQm9vbCBhU3RhY2tCYXNlZCxQUlVpbnQzMiBhQ2FwYWNpdHksUFJJ
bnQzMiBhTGVuZ3RoPS0xKTsKICBDQnVmRGVzY3JpcHRvcihjb25zdCBQUlVuaWNoYXIqIGFTdHJp
bmcsUFJCb29sIGFTdGFja0Jhc2VkLFBSVWludDMyIGFDYXBhY2l0eSxQUkludDMyIGFMZW5ndGg9
LTEpOwoKICBjaGFyKiBtQnVmZmVyOwogIGVDaGFyU2l6ZSBtQ2hhclNpemU7CiAgUFJVaW50MzIg
bUNhcGFjaXR5OwogIFBSSW50MzIgbUxlbmd0aDsKICBQUkJvb2wgbVN0YWNrQmFzZWQ7CiAgUFJC
b29sIG1Jc0NvbnN0Owp9OwoKCgoKc3RydWN0IG5zU3RyIHsKCnByb3RlY3RlZDoKICBuc1N0cigp
IHsKCgoKICB9CgogIH5uc1N0cigpIHsKCgoKICB9Cgpwcm90ZWN0ZWQ6CiAgdW5pb24gewogICAg
Y2hhciogbVN0cjsKICAgIFBSVW5pY2hhciogbVVTdHI7CiAgfTsKCiAgUFJVaW50MzIgbUxlbmd0
aDsKICBQUlVpbnQzMiBtQ2FwYWNpdHlBbmRGbGFnczsKCiAgaW5saW5lIFBSVWludDMyIEdldENh
cGFjaXR5KCkgY29uc3QgewoKICAgIHJldHVybiAobUNhcGFjaXR5QW5kRmxhZ3MgJiAofigoMTw8
KDMxKSkgfCAoMTw8KDMwKSkpKSk7CiAgfQoKICBpbmxpbmUgUFJCb29sIEdldE93bnNCdWZmZXIo
KSBjb25zdCB7CiAgICByZXR1cm4gKChtQ2FwYWNpdHlBbmRGbGFncyAmICgxPDwoMzApKSkgIT0g
MCk7CiAgfQoKICBpbmxpbmUgZUNoYXJTaXplIEdldENoYXJTaXplKCkgY29uc3QgewogICAgcmV0
dXJuIGVDaGFyU2l6ZShtQ2FwYWNpdHlBbmRGbGFncyA+PiAoMzEpKTsKICB9Cgpwcml2YXRlOgoK
ICBpbmxpbmUgdm9pZCBTZXRJbnRlcm5hbENhcGFjaXR5KFBSVWludDMyIGFDYXBhY2l0eSkgewog
ICAgbUNhcGFjaXR5QW5kRmxhZ3MgPQogICAgICAoKG1DYXBhY2l0eUFuZEZsYWdzICYgfih+KCgx
PDwoMzEpKSB8ICgxPDwoMzApKSkpKSB8CiAgICAgICAoYUNhcGFjaXR5ICYgKH4oKDE8PCgzMSkp
IHwgKDE8PCgzMCkpKSkpKTsKICB9CgogIGlubGluZSB2b2lkIFNldENoYXJTaXplKGVDaGFyU2l6
ZSBhQ2hhclNpemUpIHsKICAgIG1DYXBhY2l0eUFuZEZsYWdzID0KICAgICAgKChtQ2FwYWNpdHlB
bmRGbGFncyAmIH4oMTw8KDMxKSkpIHwKICAgICAgIChQUlVpbnQzMihhQ2hhclNpemUpIDw8ICgz
MSkpKTsKICB9CgogIGlubGluZSB2b2lkIFNldE93bnNCdWZmZXIoUFJCb29sIGFPd25zQnVmZmVy
KSB7CiAgICBtQ2FwYWNpdHlBbmRGbGFncyA9CiAgICAgIChtQ2FwYWNpdHlBbmRGbGFncyAmIH4o
MTw8KDMwKSkgfAogICAgICAgKGFPd25zQnVmZmVyID8gMSA6IDApIDw8ICgzMCkpOwogIH0KCiAg
aW5saW5lIFBSVW5pY2hhciBHZXRDaGFyQXQoUFJVaW50MzIgYW5JbmRleCkgY29uc3QgewogICAg
aWYoYW5JbmRleDxtTGVuZ3RoKSB7CiAgICAgIHJldHVybiAoZVR3b0J5dGU9PUdldENoYXJTaXpl
KCkpID8gbVVTdHJbYW5JbmRleF0gOiAoUFJVbmljaGFyKW1TdHJbYW5JbmRleF07CiAgICB9CiAg
ICByZXR1cm4gMDsKICB9CgpwdWJsaWM6CiAgZnJpZW5kCiAgY2hhcioKICBUb05ld1VURjhTdHJp
bmcoIGNvbnN0IG5zQVN0cmluZyYgYVNvdXJjZSApOwogIGZyaWVuZCBpbmxpbmUgdm9pZCBBZGRO
dWxsVGVybWluYXRvcihuc1N0ciYgYURlc3QpOwogIGZyaWVuZCBjbGFzcyBuc1N0clByaXZhdGU7
CiAgZnJpZW5kIGNsYXNzIG5zU3RyaW5nOwogIGZyaWVuZCBjbGFzcyBuc0NTdHJpbmc7Cn07CiMg
MzM5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zU3RyLmgiCmlubGluZSBQUkludDMy
IE1pbkludChQUkludDMyIGFuSW50MSxQUkludDMyIGFuSW50Mil7CiAgcmV0dXJuIChhbkludDE8
YW5JbnQyKSA/IGFuSW50MSA6IGFuSW50MjsKfQoKaW5saW5lIFBSSW50MzIgTWF4SW50KFBSSW50
MzIgYW5JbnQxLFBSSW50MzIgYW5JbnQyKXsKICByZXR1cm4gKGFuSW50MTxhbkludDIpID8gYW5J
bnQyIDogYW5JbnQxOwp9CgppbmxpbmUgdm9pZCBBZGROdWxsVGVybWluYXRvcihuc1N0ciYgYURl
c3QpIHsKICBpZihlVHdvQnl0ZT09YURlc3QuR2V0Q2hhclNpemUoKSkKICAgIGFEZXN0Lm1VU3Ry
W2FEZXN0Lm1MZW5ndGhdPTA7CiAgZWxzZSBhRGVzdC5tU3RyW2FEZXN0Lm1MZW5ndGhdPTA7Cn0K
CgoKCgoKCmlubGluZSB2b2lkIFJlY3ljbGUoIGNoYXIqIGFCdWZmZXIpIHsgbnNNZW1vcnk6OkZy
ZWUoYUJ1ZmZlcik7IH0KaW5saW5lIHZvaWQgUmVjeWNsZSggUFJVbmljaGFyKiBhQnVmZmVyKSB7
IG5zTWVtb3J5OjpGcmVlKGFCdWZmZXIpOyB9CiMgNzggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9z
dHJpbmcvbnNTdHJpbmcyLmgiIDIKCmNsYXNzIFVURjh0cmFpdHMKICB7CiAgICBwdWJsaWM6CiAg
ICAgIHN0YXRpYyBQUkJvb2wgaXNBU0NJSShjaGFyIGMpIHsgcmV0dXJuIChjICYgMHg4MCkgPT0g
MHgwMDsgfQogICAgICBzdGF0aWMgUFJCb29sIGlzSW5TZXEoY2hhciBjKSB7IHJldHVybiAoYyAm
IDB4QzApID09IDB4ODA7IH0KICAgICAgc3RhdGljIFBSQm9vbCBpczJieXRlKGNoYXIgYykgeyBy
ZXR1cm4gKGMgJiAweEUwKSA9PSAweEMwOyB9CiAgICAgIHN0YXRpYyBQUkJvb2wgaXMzYnl0ZShj
aGFyIGMpIHsgcmV0dXJuIChjICYgMHhGMCkgPT0gMHhFMDsgfQogICAgICBzdGF0aWMgUFJCb29s
IGlzNGJ5dGUoY2hhciBjKSB7IHJldHVybiAoYyAmIDB4RjgpID09IDB4RjA7IH0KICAgICAgc3Rh
dGljIFBSQm9vbCBpczVieXRlKGNoYXIgYykgeyByZXR1cm4gKGMgJiAweEZDKSA9PSAweEY4OyB9
CiAgICAgIHN0YXRpYyBQUkJvb2wgaXM2Ynl0ZShjaGFyIGMpIHsgcmV0dXJuIChjICYgMHhGRSkg
PT0gMHhGQzsgfQogIH07CgoKCgoKY2xhc3MgbnNJU2l6ZU9mSGFuZGxlcjsKY2xhc3MgbnNDU3Ry
aW5nOwoKCmNsYXNzIG5zU3RyaW5nIDoKICBwdWJsaWMgbnNBRmxhdFN0cmluZywKICBwdWJsaWMg
bnNTdHIgewoKcHVibGljOgogIGZyaWVuZCBjbGFzcyBuc0NTdHJpbmc7CiAgZnJpZW5kIGNsYXNz
IG5zTGluZWJyZWFrQ29udmVydGVyOwogIGZyaWVuZCB2b2lkIFRvTG93ZXJDYXNlKCBuc1N0cmlu
ZyYgKTsKICBmcmllbmQgdm9pZCBUb1VwcGVyQ2FzZSggbnNTdHJpbmcmICk7Cgpwcm90ZWN0ZWQ6
CiAgdmlydHVhbCBjb25zdCBuc0J1ZmZlckhhbmRsZTxQUlVuaWNoYXI+KiBHZXRGbGF0QnVmZmVy
SGFuZGxlKCkgY29uc3Q7CiAgdmlydHVhbCBjb25zdCBQUlVuaWNoYXIqIEdldFJlYWRhYmxlRnJh
Z21lbnQoIG5zUmVhZGFibGVGcmFnbWVudDxQUlVuaWNoYXI+JiwgbnNGcmFnbWVudFJlcXVlc3Qs
IFBSVWludDMyICkgY29uc3Q7CiAgdmlydHVhbCBQUlVuaWNoYXIqIEdldFdyaXRhYmxlRnJhZ21l
bnQoIG5zV3JpdGFibGVGcmFnbWVudDxQUlVuaWNoYXI+JiwgbnNGcmFnbWVudFJlcXVlc3QsIFBS
VWludDMyICk7CgpwdWJsaWM6CiAgdmlydHVhbCBjb25zdCBQUlVuaWNoYXIqIGdldCgpIGNvbnN0
OwoKcHVibGljOgoKCgogIG5zU3RyaW5nKCk7CgoKCgoKICBuc1N0cmluZyhjb25zdCBuc1N0cmlu
ZyYgYVN0cmluZyk7CgogIGV4cGxpY2l0IG5zU3RyaW5nKGNvbnN0IG5zQVN0cmluZyYpOwoKICBl
eHBsaWNpdCBuc1N0cmluZyhjb25zdCBQUlVuaWNoYXIqKTsKICBuc1N0cmluZyhjb25zdCBQUlVu
aWNoYXIqLCBQUkludDMyKTsKCgoKCgoKICB2aXJ0dWFsIH5uc1N0cmluZygpOwoKCgoKCiAgdmly
dHVhbCBQUlVpbnQzMiBMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtTGVuZ3RoOyB9CgoKCgoKCgog
IHZvaWQgU2V0TGVuZ3RoKFBSVWludDMyIGFMZW5ndGgpOwoKCgoKCgogIHZvaWQgU2V0Q2FwYWNp
dHkoUFJVaW50MzIgYUxlbmd0aCk7CiMgMTcwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5n
L25zU3RyaW5nMi5oIgogIFBSQm9vbCBTZXRDaGFyQXQoUFJVbmljaGFyIGFDaGFyLFBSVWludDMy
IGFuSW5kZXgpOwojIDE4NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZzIu
aCIKICB2b2lkIFN0cmlwQ2hhcnMoIGNvbnN0IGNoYXIqIGFTZXQgKTsKICB2b2lkIFN0cmlwQ2hh
ciggUFJVbmljaGFyIGFDaGFyLCBQUkludDMyIGFuT2Zmc2V0PTAgKTsKCgoKCgogIHZvaWQgU3Ry
aXBXaGl0ZXNwYWNlKCk7CgoKCgoKCiAgdm9pZCBSZXBsYWNlQ2hhciggUFJVbmljaGFyIGFuT2xk
Q2hhciwgUFJVbmljaGFyIGFOZXdDaGFyICk7CiAgdm9pZCBSZXBsYWNlQ2hhciggY29uc3QgY2hh
ciogYVNldCwgUFJVbmljaGFyIGFOZXdDaGFyICk7CgogIHZvaWQgUmVwbGFjZVN1YnN0cmluZygg
Y29uc3QgbnNTdHJpbmcmIGFUYXJnZXQsIGNvbnN0IG5zU3RyaW5nJiBhTmV3VmFsdWUgKTsKICB2
b2lkIFJlcGxhY2VTdWJzdHJpbmcoIGNvbnN0IFBSVW5pY2hhciogYVRhcmdldCwgY29uc3QgUFJV
bmljaGFyKiBhTmV3VmFsdWUgKTsKIyAyMTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcv
bnNTdHJpbmcyLmgiCiAgdm9pZCBUcmltKGNvbnN0IGNoYXIqIGFTZXQsUFJCb29sIGFFbGltaW5h
dGVMZWFkaW5nPTEsUFJCb29sIGFFbGltaW5hdGVUcmFpbGluZz0xLFBSQm9vbCBhSWdub3JlUXVv
dGVzPTApOwojIDIyOCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZzIuaCIK
ICB2b2lkIENvbXByZXNzV2hpdGVzcGFjZSggUFJCb29sIGFFbGltaW5hdGVMZWFkaW5nPTEsUFJC
b29sIGFFbGltaW5hdGVUcmFpbGluZz0xKTsKIyAyNDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9z
dHJpbmcvbnNTdHJpbmcyLmgiCiAgY2hhciogVG9DU3RyaW5nKGNoYXIqIGFCdWYsUFJVaW50MzIg
YUJ1Zkxlbmd0aCxQUlVpbnQzMiBhbk9mZnNldD0wKSBjb25zdDsKCgoKCgoKICBmbG9hdCBUb0Zs
b2F0KFBSSW50MzIqIGFFcnJvckNvZGUpIGNvbnN0OwoKCgoKCgoKICBQUkludDMyIFRvSW50ZWdl
cihQUkludDMyKiBhRXJyb3JDb2RlLFBSVWludDMyIGFSYWRpeD0oMTApKSBjb25zdDsKIyAyNzIg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHJpbmcyLmgiCiAgbnNTdHJpbmcmIG9w
ZXJhdG9yPSggY29uc3QgbnNTdHJpbmcmIGFTdHJpbmcgKSB7IEFzc2lnbihhU3RyaW5nKTsgcmV0
dXJuICp0aGlzOyB9CiAgbnNTdHJpbmcmIG9wZXJhdG9yPSggY29uc3QgbnNBU3RyaW5nJiBhUmVh
ZGFibGUgKSB7IEFzc2lnbihhUmVhZGFibGUpOyByZXR1cm4gKnRoaXM7IH0KCiAgbnNTdHJpbmcm
IG9wZXJhdG9yPSggY29uc3QgUFJVbmljaGFyKiBhUHRyICkgeyBBc3NpZ24oYVB0cik7IHJldHVy
biAqdGhpczsgfQogIG5zU3RyaW5nJiBvcGVyYXRvcj0oIFBSVW5pY2hhciBhQ2hhciApIHsgQXNz
aWduKGFDaGFyKTsgcmV0dXJuICp0aGlzOyB9CgogIHZvaWQgQXNzaWduV2l0aENvbnZlcnNpb24o
Y29uc3QgY2hhciopOwogIHZvaWQgQXNzaWduV2l0aENvbnZlcnNpb24oY29uc3QgY2hhciosIFBS
SW50MzIpOwojIDI5MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZzIuaCIK
ICB2b2lkIEFwcGVuZEludChQUkludDMyLCBQUkludDMyPTEwKTsKICB2b2lkIEFwcGVuZEZsb2F0
KGRvdWJsZSk7CiAgdm9pZCBBcHBlbmRXaXRoQ29udmVyc2lvbihjb25zdCBjaGFyKiwgUFJJbnQz
Mj0tMSk7CgogIHZpcnR1YWwgdm9pZCBkb19BcHBlbmRGcm9tRWxlbWVudCggUFJVbmljaGFyICk7
CgoKCiAgdm9pZCBJbnNlcnRXaXRoQ29udmVyc2lvbihjb25zdCBjaGFyKiwgUFJVaW50MzIsIFBS
SW50MzI9LTEpOwoKCiAgdm9pZCBBZG9wdCggUFJVbmljaGFyKiBhUHRyLCBQUkludDMyIGFMZW5n
dGggPSAtMSApOwojIDMyMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZzIu
aCIKICBzaXplX3R5cGUgTGVmdCggc2VsZl90eXBlJiwgc2l6ZV90eXBlICkgY29uc3Q7CiAgc2l6
ZV90eXBlIE1pZCggc2VsZl90eXBlJiwgUFJVaW50MzIsIFBSVWludDMyICkgY29uc3Q7CiAgc2l6
ZV90eXBlIFJpZ2h0KCBzZWxmX3R5cGUmLCBzaXplX3R5cGUgKSBjb25zdDsKIyAzMzcgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHJpbmcyLmgiCiAgUFJJbnQzMiBGaW5kQ2hhcihQ
UlVuaWNoYXIgYUNoYXIsIFBSSW50MzIgYW5PZmZzZXQ9MCwgUFJJbnQzMiBhQ291bnQ9LTEpIGNv
bnN0OwojIDM0OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZzIuaCIKICBQ
UkludDMyIEZpbmQoY29uc3QgbnNDU3RyaW5nJiBhU3RyaW5nLFBSQm9vbCBhSWdub3JlQ2FzZT0w
LFBSSW50MzIgYW5PZmZzZXQ9MCxQUkludDMyIGFDb3VudD0tMSkgY29uc3Q7CiAgUFJJbnQzMiBG
aW5kKGNvbnN0IGNoYXIqIGFTdHJpbmcsUFJCb29sIGFJZ25vcmVDYXNlPTAsUFJJbnQzMiBhbk9m
ZnNldD0wLFBSSW50MzIgYUNvdW50PS0xKSBjb25zdDsKCiAgUFJJbnQzMiBGaW5kKGNvbnN0IG5z
QUZsYXRTdHJpbmcmIGFTdHJpbmcsIFBSSW50MzIgYW5PZmZzZXQ9MCwgUFJJbnQzMiBhQ291bnQ9
LTEpIGNvbnN0OwoKICBQUkludDMyIEZpbmQoY29uc3QgUFJVbmljaGFyKiBhU3RyaW5nLCBQUklu
dDMyIGFuT2Zmc2V0PTAsIFBSSW50MzIgYUNvdW50PS0xKSBjb25zdDsKIyAzNjMgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHJpbmcyLmgiCiAgUFJJbnQzMiBGaW5kQ2hhckluU2V0
KGNvbnN0IGNoYXIqIGFTdHJpbmcsUFJJbnQzMiBhbk9mZnNldD0wKSBjb25zdDsKICBQUkludDMy
IEZpbmRDaGFySW5TZXQoY29uc3QgUFJVbmljaGFyKiBhU3RyaW5nLFBSSW50MzIgYW5PZmZzZXQ9
MCkgY29uc3Q7CiMgMzc0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zU3RyaW5nMi5o
IgogIFBSSW50MzIgUkZpbmQoY29uc3QgY2hhciogYUNTdHJpbmcsUFJCb29sIGFJZ25vcmVDYXNl
PTAsUFJJbnQzMiBhbk9mZnNldD0tMSxQUkludDMyIGFDb3VudD0tMSkgY29uc3Q7CgogIFBSSW50
MzIgUkZpbmQoY29uc3QgbnNBRmxhdFN0cmluZyYgYVN0cmluZywgUFJJbnQzMiBhbk9mZnNldD0t
MSxQUkludDMyIGFDb3VudD0tMSkgY29uc3Q7CiAgUFJJbnQzMiBSRmluZChjb25zdCBQUlVuaWNo
YXIqIGFTdHJpbmcsUFJJbnQzMiBhbk9mZnNldD0tMSxQUkludDMyIGFDb3VudD0tMSkgY29uc3Q7
CiMgMzg5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zU3RyaW5nMi5oIgogIFBSSW50
MzIgUkZpbmRDaGFyKFBSVW5pY2hhciBhQ2hhcixQUkludDMyIGFuT2Zmc2V0PS0xLFBSSW50MzIg
YUNvdW50PS0xKSBjb25zdDsKIyAzOTggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNT
dHJpbmcyLmgiCiAgUFJJbnQzMiBSRmluZENoYXJJblNldChjb25zdCBQUlVuaWNoYXIqIGFTdHJp
bmcsUFJJbnQzMiBhbk9mZnNldD0tMSkgY29uc3Q7CiMgNDE0ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvc3RyaW5nL25zU3RyaW5nMi5oIgogIFBSSW50MzIgQ29tcGFyZVdpdGhDb252ZXJzaW9uKGNv
bnN0IGNoYXIqIGFTdHJpbmcsIFBSQm9vbCBhSWdub3JlQ2FzZT0wLCBQUkludDMyIGFDb3VudD0t
MSkgY29uc3Q7CgogIFBSQm9vbCBFcXVhbHNXaXRoQ29udmVyc2lvbihjb25zdCBjaGFyKiBhU3Ry
aW5nLFBSQm9vbCBhSWdub3JlQ2FzZT0wLFBSSW50MzIgYUNvdW50PS0xKSBjb25zdDsKCiAgUFJC
b29sIEVxdWFsc0lnbm9yZUNhc2UoY29uc3QgY2hhciogYVN0cmluZyxQUkludDMyIGFDb3VudD0t
MSkgY29uc3Q7CgoKCgoKCgogIFBSQm9vbCBJc0FTQ0lJKGNvbnN0IFBSVW5pY2hhciogYUJ1ZmZl
cj0wKTsKCgoKCgoKCiAgc3RhdGljIFBSQm9vbCBJc1NwYWNlKFBSVW5pY2hhciBjaCk7CiMgNDQ0
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zU3RyaW5nMi5oIgpwcml2YXRlOgoKCiAg
dm9pZCBvcGVyYXRvcj0oIGNoYXIgKTsKICB2b2lkIEFzc2lnbldpdGhDb252ZXJzaW9uKCBjb25z
dCBQUlVuaWNoYXIqLCBQUkludDMyPS0xICk7CiAgdm9pZCBBcHBlbmRXaXRoQ29udmVyc2lvbigg
Y29uc3QgUFJVbmljaGFyKiwgUFJJbnQzMj0tMSApOwogIHZvaWQgSW5zZXJ0V2l0aENvbnZlcnNp
b24oIGNvbnN0IFBSVW5pY2hhciosIFBSVWludDMyLCBQUkludDMyPS0xICk7Cn07CgppbmxpbmUK
bnNTdHJpbmc6OnNpemVfdHlwZQpuc1N0cmluZzo6TGVmdCggbnNBU3RyaW5nJiBhUmVzdWx0LCBz
aXplX3R5cGUgYUxlbmd0aFRvQ29weSApIGNvbnN0CiAgewogICAgcmV0dXJuIE1pZChhUmVzdWx0
LCAwLCBhTGVuZ3RoVG9Db3B5KTsKICB9CgppbmxpbmUKbnNTdHJpbmc6OnNpemVfdHlwZQpuc1N0
cmluZzo6UmlnaHQoIHNlbGZfdHlwZSYgYVJlc3VsdCwgc2l6ZV90eXBlIGFMZW5ndGhUb0NvcHkg
KSBjb25zdAogIHsKICAgIHNpemVfdHlwZSBteUxlbmd0aCA9IExlbmd0aCgpOwogICAgYUxlbmd0
aFRvQ29weSA9IE5TX01JTihteUxlbmd0aCwgYUxlbmd0aFRvQ29weSk7CiAgICByZXR1cm4gTWlk
KGFSZXN1bHQsIG15TGVuZ3RoLWFMZW5ndGhUb0NvcHksIGFMZW5ndGhUb0NvcHkpOwogIH0KIyA0
NzggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHJpbmcyLmgiCmNsYXNzIG5zQXV0
b1N0cmluZyA6IHB1YmxpYyBuc1N0cmluZyB7CnB1YmxpYzoKCiAgICB2aXJ0dWFsIH5uc0F1dG9T
dHJpbmcoKSB7fQoKICAgIG5zQXV0b1N0cmluZygpOwogICAgbnNBdXRvU3RyaW5nKGNvbnN0IG5z
QXV0b1N0cmluZyYgYVN0cmluZyk7CiAgICBleHBsaWNpdCBuc0F1dG9TdHJpbmcoY29uc3QgbnNB
U3RyaW5nJiBhU3RyaW5nKTsKICAgIGV4cGxpY2l0IG5zQXV0b1N0cmluZyhjb25zdCBuc1N0cmlu
ZyYgYVN0cmluZyk7CiAgICBleHBsaWNpdCBuc0F1dG9TdHJpbmcoY29uc3QgUFJVbmljaGFyKiBh
U3RyaW5nKTsKICAgIG5zQXV0b1N0cmluZyhjb25zdCBQUlVuaWNoYXIqIGFTdHJpbmcsUFJJbnQz
MiBhTGVuZ3RoKTsKICAgIGV4cGxpY2l0IG5zQXV0b1N0cmluZyhQUlVuaWNoYXIgYUNoYXIpOwog
ICAgZXhwbGljaXQgbnNBdXRvU3RyaW5nKGNvbnN0IENCdWZEZXNjcmlwdG9yJiBhQnVmZmVyKTsK
CiAgICBuc0F1dG9TdHJpbmcmIG9wZXJhdG9yPSggY29uc3QgbnNBdXRvU3RyaW5nJiBhU3RyaW5n
ICkgeyBBc3NpZ24oYVN0cmluZyk7IHJldHVybiAqdGhpczsgfQogIHByaXZhdGU6CiAgICB2b2lk
IG9wZXJhdG9yPSggY2hhciApOwogIHB1YmxpYzoKICAgIG5zQXV0b1N0cmluZyYgb3BlcmF0b3I9
KCBjb25zdCBuc0FTdHJpbmcmIGFSZWFkYWJsZSApIHsgQXNzaWduKGFSZWFkYWJsZSk7IHJldHVy
biAqdGhpczsgfQoKICAgIG5zQXV0b1N0cmluZyYgb3BlcmF0b3I9KCBjb25zdCBQUlVuaWNoYXIq
IGFQdHIgKSB7IEFzc2lnbihhUHRyKTsgcmV0dXJuICp0aGlzOyB9CiAgICBuc0F1dG9TdHJpbmcm
IG9wZXJhdG9yPSggUFJVbmljaGFyIGFDaGFyICkgeyBBc3NpZ24oYUNoYXIpOyByZXR1cm4gKnRo
aXM7IH0KIyA1MDkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHJpbmcyLmgiCiAg
ICBQUlVuaWNoYXIgbUJ1ZmZlcltrRGVmYXVsdFN0cmluZ1NpemVdOwp9OwoKCgpjbGFzcyBOU19D
b252ZXJ0QVNDSUl0b1VDUzIKICAgICAgOiBwdWJsaWMgbnNBdXRvU3RyaW5nCgoKCiAgewogICAg
cHVibGljOgogICAgICBleHBsaWNpdAogICAgICBOU19Db252ZXJ0QVNDSUl0b1VDUzIoIGNvbnN0
IG5zQUNTdHJpbmcmIGFDU3RyaW5nICk7CgogICAgICBleHBsaWNpdAogICAgICBOU19Db252ZXJ0
QVNDSUl0b1VDUzIoIGNvbnN0IG5zQUZsYXRDU3RyaW5nJiBhQ1N0cmluZyApCiAgICAgICAgewog
ICAgICAgICAgSW5pdCggYUNTdHJpbmcuZ2V0KCksIGFDU3RyaW5nLkxlbmd0aCgpICk7CiAgICAg
ICAgfQoKICAgICAgZXhwbGljaXQKICAgICAgTlNfQ29udmVydEFTQ0lJdG9VQ1MyKCBjb25zdCBj
aGFyKiBhQ1N0cmluZyApCiAgICAgICAgewogICAgICAgICAgSW5pdCggYUNTdHJpbmcsIH5QUlVp
bnQzMigwKSApOwogICAgICAgIH0KCiAgICAgIE5TX0NvbnZlcnRBU0NJSXRvVUNTMiggY29uc3Qg
Y2hhciogYUNTdHJpbmcsIFBSVWludDMyIGFMZW5ndGggKQogICAgICAgIHsKICAgICAgICAgIElu
aXQoIGFDU3RyaW5nLCBhTGVuZ3RoICk7CiAgICAgICAgfQojIDU0OCAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL3N0cmluZy9uc1N0cmluZzIuaCIKICAgIHByb3RlY3RlZDoKICAgICAgdm9pZCBJbml0
KCBjb25zdCBjaGFyKiBhQ1N0cmluZywgUFJVaW50MzIgYUxlbmd0aCApOwoKICAgIHByaXZhdGU6
CgogICAgICBOU19Db252ZXJ0QVNDSUl0b1VDUzIoIFBSVW5pY2hhciApOwogIH07CgpjbGFzcyBO
U19Db252ZXJ0VVRGOHRvVUNTMgogICAgICA6IHB1YmxpYyBuc0F1dG9TdHJpbmcKICB7CiAgICBw
dWJsaWM6CiAgICAgIGV4cGxpY2l0CiAgICAgIE5TX0NvbnZlcnRVVEY4dG9VQ1MyKCBjb25zdCBu
c0FDU3RyaW5nJiBhQ1N0cmluZyApCiAgICAgICAgewogICAgICAgICAgSW5pdCggYUNTdHJpbmcg
KTsKICAgICAgICB9CgogICAgICBleHBsaWNpdAogICAgICBOU19Db252ZXJ0VVRGOHRvVUNTMigg
Y29uc3QgY2hhciogYUNTdHJpbmcgKQogICAgICAgIHsKICAgICAgICAgIEluaXQoIG5zRGVwZW5k
ZW50Q1N0cmluZyggYUNTdHJpbmcgKSApOwogICAgICAgIH0KCiAgICAgIE5TX0NvbnZlcnRVVEY4
dG9VQ1MyKCBjb25zdCBjaGFyKiBhQ1N0cmluZywgUFJVaW50MzIgYUxlbmd0aCApCiAgICAgICAg
ewogICAgICAgICAgSW5pdCggU3Vic3RyaW5nKCBhQ1N0cmluZywgYUNTdHJpbmcgKyBhTGVuZ3Ro
ICkgKTsKICAgICAgICB9CgogICAgcHJvdGVjdGVkOgogICAgICB2b2lkIEluaXQoIGNvbnN0IG5z
QUNTdHJpbmcmIGFDU3RyaW5nICk7CgogICAgcHJpdmF0ZToKICAgICAgTlNfQ29udmVydFVURjh0
b1VDUzIoIFBSVW5pY2hhciApOwogIH07CgoKCgpjbGFzcyBDb252ZXJ0VVRGOHRvVUNTMgogIHsK
ICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBuc0FDU3RyaW5nOjpjaGFyX3R5cGUgdmFsdWVfdHlw
ZTsKICAgICAgdHlwZWRlZiBuc0FTdHJpbmc6OmNoYXJfdHlwZSBidWZmZXJfdHlwZTsKCiAgICBD
b252ZXJ0VVRGOHRvVUNTMiggYnVmZmVyX3R5cGUqIGFCdWZmZXIgKQogICAgICAgIDogbVN0YXJ0
KGFCdWZmZXIpLCBtQnVmZmVyKGFCdWZmZXIpLCBtRXJyb3JFbmNvdW50ZXJlZCgwKSB7fQoKICAg
IHNpemVfdCBMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtQnVmZmVyIC0gbVN0YXJ0OyB9CgogICAg
UFJVaW50MzIgd3JpdGUoIGNvbnN0IHZhbHVlX3R5cGUqIHN0YXJ0LCBQUlVpbnQzMiBOICkKICAg
ICAgewogICAgICAgIGlmICggbUVycm9yRW5jb3VudGVyZWQgKQogICAgICAgICAgcmV0dXJuIE47
CgoKCiAgICAgICAgY29uc3QgdmFsdWVfdHlwZSogcCA9IHN0YXJ0OwogICAgICAgIGNvbnN0IHZh
bHVlX3R5cGUqIGVuZCA9IHN0YXJ0ICsgTjsKICAgICAgICBmb3IgKCA7IHAgIT0gZW5kIDsgKQog
ICAgICAgICAgewogICAgICAgICAgICBjaGFyIGMgPSAqcCsrOwoKICAgICAgICAgICAgaWYgKCBV
VEY4dHJhaXRzOjppc0FTQ0lJKGMpICkKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAq
bUJ1ZmZlcisrID0gYnVmZmVyX3R5cGUoYyk7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgICB9CgogICAgICAgICAgICBQUlVpbnQzMiB1Y3M0OwogICAgICAgICAgICBQUlVp
bnQzMiBtaW5VY3M0OwogICAgICAgICAgICBQUkludDMyIHN0YXRlID0gMDsKCiAgICAgICAgICAg
IGlmICggVVRGOHRyYWl0czo6aXMyYnl0ZShjKSApCiAgICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgdWNzNCA9IChQUlVpbnQzMihjKSA8PCA2KSAmIDB4MDAwMDA3QzBMOwogICAgICAgICAg
ICAgICAgc3RhdGUgPSAxOwogICAgICAgICAgICAgICAgbWluVWNzNCA9IDB4MDAwMDAwODA7CiAg
ICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmICggVVRGOHRyYWl0czo6aXMzYnl0ZShj
KSApCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdWNzNCA9IChQUlVpbnQzMihjKSA8
PCAxMikgJiAweDAwMDBGMDAwTDsKICAgICAgICAgICAgICAgIHN0YXRlID0gMjsKICAgICAgICAg
ICAgICAgIG1pblVjczQgPSAweDAwMDAwODAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ZWxzZSBpZiAoIFVURjh0cmFpdHM6OmlzNGJ5dGUoYykgKQogICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgIHVjczQgPSAoUFJVaW50MzIoYykgPDwgMTgpICYgMHgwMDFGMDAwMEw7CiAgICAg
ICAgICAgICAgICBzdGF0ZSA9IDM7CiAgICAgICAgICAgICAgICBtaW5VY3M0ID0gMHgwMDAxMDAw
MDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKCBVVEY4dHJhaXRzOjppczVi
eXRlKGMpICkKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB1Y3M0ID0gKFBSVWludDMy
KGMpIDw8IDI0KSAmIDB4MDMwMDAwMDBMOwogICAgICAgICAgICAgICAgc3RhdGUgPSA0OwogICAg
ICAgICAgICAgICAgbWluVWNzNCA9IDB4MDAyMDAwMDA7CiAgICAgICAgICAgICAgfQogICAgICAg
ICAgICBlbHNlIGlmICggVVRGOHRyYWl0czo6aXM2Ynl0ZShjKSApCiAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgdWNzNCA9IChQUlVpbnQzMihjKSA8PCAzMCkgJiAweDQwMDAwMDAwTDsK
ICAgICAgICAgICAgICAgIHN0YXRlID0gNTsKICAgICAgICAgICAgICAgIG1pblVjczQgPSAweDA0
MDAwMDAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIG1FcnJvckVuY291bnRlcmVkID0gMTsK
ICAgICAgICAgICAgICAgIHJldHVybiBOOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHdo
aWxlICggc3RhdGUtLSApCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgYyA9ICpwKys7
CgogICAgICAgICAgICAgICAgaWYgKCBVVEY4dHJhaXRzOjppc0luU2VxKGMpICkKICAgICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFBSSW50MzIgc2hpZnQgPSBzdGF0ZSAqIDY7
CiAgICAgICAgICAgICAgICAgICAgdWNzNCB8PSAoUFJVaW50MzIoYykgJiAweDNGKSA8PCBzaGlm
dDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgIG1FcnJvckVu
Y291bnRlcmVkID0gMTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTjsKICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggdWNzNCA8IG1pblVjczQg
KQogICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAqbUJ1ZmZlcisrID0gMHhmZmZkOwog
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoIHVjczQgPD0gMHhEN0ZGICkKICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAqbUJ1ZmZlcisrID0gdWNzNDsKICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKCB1Y3M0IDw9IDB4REZGRiApCiAgICAgICAgICAg
ICAgewoKICAgICAgICAgICAgICAgICptQnVmZmVyKysgPSAweGZmZmQ7CiAgICAgICAgICAgICAg
fQogICAgICAgICAgICBlbHNlIGlmICggdWNzNCA9PSAweEZGRkUgfHwgdWNzNCA9PSAweEZGRkYg
KQogICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAqbUJ1ZmZlcisrID0gMHhmZmZkOwog
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoIHVjczQgPj0gMHgwMDAxMDAwMCAp
CiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYgKCB1Y3M0ID49IDB4MDAxMTAwMDAg
KQogICAgICAgICAgICAgICAgICAqbUJ1ZmZlcisrID0gMHhmZmZkOwogICAgICAgICAgICAgICAg
ZWxzZSB7CgogICAgICAgICAgICAgICAgICB1Y3M0IC09IDB4MDAwMTAwMDA7CiAgICAgICAgICAg
ICAgICAgICptQnVmZmVyKysgPSAoUFJVbmljaGFyKSh1Y3M0ID4+IDEwKSB8IDB4ZDgwMHU7CiAg
ICAgICAgICAgICAgICAgICptQnVmZmVyKysgPSAoUFJVbmljaGFyKSh1Y3M0ICYgMHgzZmYpIHwg
MHhkYzAwdTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZiAoIHVjczQgIT0gMHhGRUZGICkK
ICAgICAgICAgICAgICAgICAgICAqbUJ1ZmZlcisrID0gdWNzNDsKICAgICAgICAgICAgICB9CiAg
ICAgICAgICB9CiAgICAgICAgcmV0dXJuIHAgLSBzdGFydDsKICAgICAgfQoKICAgIHByaXZhdGU6
CiAgICAgIGJ1ZmZlcl90eXBlKiBtU3RhcnQ7CiAgICAgIGJ1ZmZlcl90eXBlKiBtQnVmZmVyOwog
ICAgICBQUkJvb2wgbUVycm9yRW5jb3VudGVyZWQ7CiAgfTsKIyA1NSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL3N0cmluZy9uc1N0cmluZy5oIiAyCgoKY2xhc3MgbnNDU3RyaW5nIDoKICBwdWJsaWMg
bnNBRmxhdENTdHJpbmcsCiAgcHVibGljIG5zU3RyIHsKCnB1YmxpYzoKICBmcmllbmQgY2xhc3Mg
bnNTdHJpbmc7CiAgZnJpZW5kIHZvaWQgVG9VcHBlckNhc2UoIG5zQ1N0cmluZyYgKTsKICBmcmll
bmQgdm9pZCBUb0xvd2VyQ2FzZSggbnNDU3RyaW5nJiApOwoKcHJvdGVjdGVkOgogIHZpcnR1YWwg
Y29uc3QgbnNCdWZmZXJIYW5kbGU8Y2hhcj4qIEdldEZsYXRCdWZmZXJIYW5kbGUoKSBjb25zdDsK
ICB2aXJ0dWFsIGNvbnN0IGNoYXIqIEdldFJlYWRhYmxlRnJhZ21lbnQoIG5zUmVhZGFibGVGcmFn
bWVudDxjaGFyPiYsIG5zRnJhZ21lbnRSZXF1ZXN0LCBQUlVpbnQzMiApIGNvbnN0OwogIHZpcnR1
YWwgY2hhciogR2V0V3JpdGFibGVGcmFnbWVudCggbnNXcml0YWJsZUZyYWdtZW50PGNoYXI+Jiwg
bnNGcmFnbWVudFJlcXVlc3QsIFBSVWludDMyICk7CgpwdWJsaWM6CiAgdmlydHVhbCBjb25zdCBj
aGFyKiBnZXQoKSBjb25zdCB7IHJldHVybiBtU3RyOyB9CgpwdWJsaWM6CgoKCiAgbnNDU3RyaW5n
KCk7CgoKCgoKICBuc0NTdHJpbmcoY29uc3QgbnNDU3RyaW5nJiBhU3RyaW5nKTsKCiAgZXhwbGlj
aXQgbnNDU3RyaW5nKCBjb25zdCBuc0FDU3RyaW5nJiApOwoKICBleHBsaWNpdCBuc0NTdHJpbmco
Y29uc3QgY2hhciopOwogIG5zQ1N0cmluZyhjb25zdCBjaGFyKiwgUFJJbnQzMik7CgoKCgoKICB2
aXJ0dWFsIH5uc0NTdHJpbmcoKTsKCgoKCgogIHZpcnR1YWwgUFJVaW50MzIgTGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbUxlbmd0aDsgfQoKCgoKCgoKICB2b2lkIFNldExlbmd0aChQUlVpbnQzMiBh
TGVuZ3RoKTsKCgoKCgoKICB2b2lkIFNldENhcGFjaXR5KFBSVWludDMyIGFMZW5ndGgpOwoKCgoK
CiAgUFJCb29sIFNldENoYXJBdChQUlVuaWNoYXIgYUNoYXIsUFJVaW50MzIgYW5JbmRleCk7CiMg
MTM2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zU3RyaW5nLmgiCiAgdm9pZCBTdHJp
cENoYXJzKGNvbnN0IGNoYXIqIGFTZXQpOwogIHZvaWQgU3RyaXBDaGFyKGNoYXIgYUNoYXIsUFJJ
bnQzMiBhbk9mZnNldD0wKTsKCgoKCgoKICB2b2lkIFN0cmlwV2hpdGVzcGFjZSgpOwoKCgoKCgog
IHZvaWQgUmVwbGFjZUNoYXIoY2hhciBhT2xkQ2hhcixjaGFyIGFOZXdDaGFyKTsKICB2b2lkIFJl
cGxhY2VDaGFyKGNvbnN0IGNoYXIqIGFTZXQsY2hhciBhTmV3Q2hhcik7CgogIHZvaWQgUmVwbGFj
ZVN1YnN0cmluZyhjb25zdCBuc0NTdHJpbmcmIGFUYXJnZXQsY29uc3QgbnNDU3RyaW5nJiBhTmV3
VmFsdWUpOwogIHZvaWQgUmVwbGFjZVN1YnN0cmluZyhjb25zdCBjaGFyKiBhVGFyZ2V0LGNvbnN0
IGNoYXIqIGFOZXdWYWx1ZSk7CiMgMTY4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25z
U3RyaW5nLmgiCiAgdm9pZCBUcmltKGNvbnN0IGNoYXIqIGFTZXQsUFJCb29sIGFFbGltaW5hdGVM
ZWFkaW5nPTEsUFJCb29sIGFFbGltaW5hdGVUcmFpbGluZz0xLFBSQm9vbCBhSWdub3JlUXVvdGVz
PTApOwojIDE3OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZy5oIgogIHZv
aWQgQ29tcHJlc3NXaGl0ZXNwYWNlKCBQUkJvb2wgYUVsaW1pbmF0ZUxlYWRpbmc9MSxQUkJvb2wg
YUVsaW1pbmF0ZVRyYWlsaW5nPTEpOwojIDE5MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmlu
Zy9uc1N0cmluZy5oIgogIGZsb2F0IFRvRmxvYXQoUFJJbnQzMiogYUVycm9yQ29kZSkgY29uc3Q7
CiMgMTk5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zU3RyaW5nLmgiCiAgUFJJbnQz
MiBUb0ludGVnZXIoUFJJbnQzMiogYUVycm9yQ29kZSxQUlVpbnQzMiBhUmFkaXg9KDEwKSkgY29u
c3Q7CiMgMjE1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zU3RyaW5nLmgiCiAgbnND
U3RyaW5nJiBvcGVyYXRvcj0oIGNvbnN0IG5zQ1N0cmluZyYgYVN0cmluZyApIHsgQXNzaWduKGFT
dHJpbmcpOyByZXR1cm4gKnRoaXM7IH0KICBuc0NTdHJpbmcmIG9wZXJhdG9yPSggY29uc3QgbnNB
Q1N0cmluZyYgYVJlYWRhYmxlICkgeyBBc3NpZ24oYVJlYWRhYmxlKTsgcmV0dXJuICp0aGlzOyB9
CgogIG5zQ1N0cmluZyYgb3BlcmF0b3I9KCBjb25zdCBjaGFyKiBhUHRyICkgeyBBc3NpZ24oYVB0
cik7IHJldHVybiAqdGhpczsgfQogIG5zQ1N0cmluZyYgb3BlcmF0b3I9KCBjaGFyIGFDaGFyICkg
eyBBc3NpZ24oYUNoYXIpOyByZXR1cm4gKnRoaXM7IH0KCiAgdm9pZCBBc3NpZ25XaXRoQ29udmVy
c2lvbihjb25zdCBQUlVuaWNoYXIqLFBSSW50MzI9LTEpOwogIHZvaWQgQXNzaWduV2l0aENvbnZl
cnNpb24oIGNvbnN0IG5zU3RyaW5nJiBhU3RyaW5nICk7CiAgdm9pZCBBc3NpZ25XaXRoQ29udmVy
c2lvbiggY29uc3QgbnNBU3RyaW5nJiBhU3RyaW5nICk7CiMgMjM1ICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvc3RyaW5nL25zU3RyaW5nLmgiCiAgdm9pZCBBcHBlbmRXaXRoQ29udmVyc2lvbihjb25z
dCBuc1N0cmluZyYsIFBSSW50MzI9LTEpOwogIHZvaWQgQXBwZW5kV2l0aENvbnZlcnNpb24oIGNv
bnN0IG5zQVN0cmluZyYgYVN0cmluZyApOwogIHZvaWQgQXBwZW5kV2l0aENvbnZlcnNpb24oY29u
c3QgUFJVbmljaGFyKiwgUFJJbnQzMj0tMSk7CgogIHZvaWQgQXBwZW5kSW50KFBSSW50MzIgYUlu
dGVnZXIsUFJJbnQzMiBhUmFkaXg9MTApOwogIHZvaWQgQXBwZW5kRmxvYXQoIGRvdWJsZSBhRmxv
YXQgKTsKIyAyNTAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHJpbmcuaCIKICB2
b2lkIEFkb3B0KCBjaGFyKiBhUHRyLCBQUkludDMyIGFMZW5ndGggPSAtMSApOwojIDI2OSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZy5oIgogIHNpemVfdHlwZSBMZWZ0KCBz
ZWxmX3R5cGUmLCBzaXplX3R5cGUgKSBjb25zdDsKICBzaXplX3R5cGUgTWlkKCBzZWxmX3R5cGUm
LCBQUlVpbnQzMiwgUFJVaW50MzIgKSBjb25zdDsKICBzaXplX3R5cGUgUmlnaHQoIHNlbGZfdHlw
ZSYsIHNpemVfdHlwZSApIGNvbnN0OwojIDI4OCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmlu
Zy9uc1N0cmluZy5oIgogIFBSSW50MzIgRmluZChjb25zdCBuc0NTdHJpbmcmIGFTdHJpbmcsUFJC
b29sIGFJZ25vcmVDYXNlPTAsUFJJbnQzMiBhbk9mZnNldD0wLFBSSW50MzIgYUNvdW50PS0xKSBj
b25zdDsKICBQUkludDMyIEZpbmQoY29uc3QgY2hhciogYVN0cmluZyxQUkJvb2wgYUlnbm9yZUNh
c2U9MCxQUkludDMyIGFuT2Zmc2V0PTAsUFJJbnQzMiBhQ291bnQ9LTEpIGNvbnN0OwojIDI5OSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZy5oIgogIFBSSW50MzIgRmluZENo
YXIoUFJVbmljaGFyIGFDaGFyLFBSSW50MzIgYW5PZmZzZXQ9MCxQUkludDMyIGFDb3VudD0tMSkg
Y29uc3Q7CiMgMzA4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zU3RyaW5nLmgiCiAg
UFJJbnQzMiBGaW5kQ2hhckluU2V0KGNvbnN0IGNoYXIqIGFTdHJpbmcsUFJJbnQzMiBhbk9mZnNl
dD0wKSBjb25zdDsKICBQUkludDMyIEZpbmRDaGFySW5TZXQoY29uc3QgbnNDU3RyaW5nJiBhU3Ry
aW5nLFBSSW50MzIgYW5PZmZzZXQ9MCkgY29uc3Q7CiMgMzE5ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvc3RyaW5nL25zU3RyaW5nLmgiCiAgUFJJbnQzMiBSRmluZChjb25zdCBjaGFyKiBhQ1N0cmlu
ZyxQUkJvb2wgYUlnbm9yZUNhc2U9MCxQUkludDMyIGFuT2Zmc2V0PS0xLFBSSW50MzIgYUNvdW50
PS0xKSBjb25zdDsKICBQUkludDMyIFJGaW5kKGNvbnN0IG5zQ1N0cmluZyYgYVN0cmluZyxQUkJv
b2wgYUlnbm9yZUNhc2U9MCxQUkludDMyIGFuT2Zmc2V0PS0xLFBSSW50MzIgYUNvdW50PS0xKSBj
b25zdDsKIyAzMzAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHJpbmcuaCIKICBQ
UkludDMyIFJGaW5kQ2hhcihQUlVuaWNoYXIgYUNoYXIsUFJJbnQzMiBhbk9mZnNldD0tMSxQUklu
dDMyIGFDb3VudD0tMSkgY29uc3Q7CiMgMzM5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5n
L25zU3RyaW5nLmgiCiAgUFJJbnQzMiBSRmluZENoYXJJblNldChjb25zdCBjaGFyKiBhU3RyaW5n
LFBSSW50MzIgYW5PZmZzZXQ9LTEpIGNvbnN0OwogIFBSSW50MzIgUkZpbmRDaGFySW5TZXQoY29u
c3QgbnNDU3RyaW5nJiBhU3RyaW5nLFBSSW50MzIgYW5PZmZzZXQ9LTEpIGNvbnN0OwojIDM1NiAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZy5oIgogIFBSSW50MzIgQ29tcGFy
ZShjb25zdCBjaGFyKiBhU3RyaW5nLFBSQm9vbCBhSWdub3JlQ2FzZT0wLFBSSW50MzIgYUNvdW50
PS0xKSBjb25zdDsKCiAgUFJCb29sIEVxdWFsc1dpdGhDb252ZXJzaW9uKGNvbnN0IGNoYXIqIGFT
dHJpbmcsUFJCb29sIGFJZ25vcmVDYXNlPTAsUFJJbnQzMiBhQ291bnQ9LTEpIGNvbnN0OwoKICBQ
UkJvb2wgRXF1YWxzSWdub3JlQ2FzZShjb25zdCBjaGFyKiBhU3RyaW5nLFBSSW50MzIgYUNvdW50
PS0xKSBjb25zdDsKIyAzNzIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHJpbmcu
aCIKcHJpdmF0ZToKCgogIHZvaWQgb3BlcmF0b3I9KCBQUlVuaWNoYXIgKTsKICB2b2lkIEFzc2ln
bldpdGhDb252ZXJzaW9uKCBjb25zdCBjaGFyKiwgUFJJbnQzMj0tMSApOwogIHZvaWQgSW5zZXJ0
V2l0aENvbnZlcnNpb24oIGNoYXIsIFBSVWludDMyICk7Cn07CgppbmxpbmUKbnNDU3RyaW5nOjpz
aXplX3R5cGUKbnNDU3RyaW5nOjpMZWZ0KCBuc0FDU3RyaW5nJiBhUmVzdWx0LCBzaXplX3R5cGUg
YUxlbmd0aFRvQ29weSApIGNvbnN0CiAgewogICAgcmV0dXJuIE1pZChhUmVzdWx0LCAwLCBhTGVu
Z3RoVG9Db3B5KTsKICB9CgppbmxpbmUKbnNDU3RyaW5nOjpzaXplX3R5cGUKbnNDU3RyaW5nOjpS
aWdodCggc2VsZl90eXBlJiBhUmVzdWx0LCBzaXplX3R5cGUgYUxlbmd0aFRvQ29weSApIGNvbnN0
CiAgewogICAgc2l6ZV90eXBlIG15TGVuZ3RoID0gTGVuZ3RoKCk7CiAgICBhTGVuZ3RoVG9Db3B5
ID0gTlNfTUlOKG15TGVuZ3RoLCBhTGVuZ3RoVG9Db3B5KTsKICAgIHJldHVybiBNaWQoYVJlc3Vs
dCwgbXlMZW5ndGgtYUxlbmd0aFRvQ29weSwgYUxlbmd0aFRvQ29weSk7CiAgfQojIDQwNiAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZy5oIgpjbGFzcyBuc0NBdXRvU3RyaW5n
IDogcHVibGljIG5zQ1N0cmluZyB7CnB1YmxpYzoKCiAgICB2aXJ0dWFsIH5uc0NBdXRvU3RyaW5n
KCkge30KCiAgICBuc0NBdXRvU3RyaW5nKCk7CiAgICBleHBsaWNpdCBuc0NBdXRvU3RyaW5nKGNv
bnN0IG5zQ1N0cmluZyYgKTsKICAgIGV4cGxpY2l0IG5zQ0F1dG9TdHJpbmcoY29uc3QgbnNBQ1N0
cmluZyYgYVN0cmluZyk7CiAgICBleHBsaWNpdCBuc0NBdXRvU3RyaW5nKGNvbnN0IGNoYXIqIGFT
dHJpbmcpOwogICAgbnNDQXV0b1N0cmluZyhjb25zdCBjaGFyKiBhU3RyaW5nLFBSSW50MzIgYUxl
bmd0aCk7CiAgICBleHBsaWNpdCBuc0NBdXRvU3RyaW5nKGNvbnN0IENCdWZEZXNjcmlwdG9yJiBh
QnVmZmVyKTsKCiAgICBuc0NBdXRvU3RyaW5nJiBvcGVyYXRvcj0oIGNvbnN0IG5zQ0F1dG9TdHJp
bmcmIGFTdHJpbmcgKSB7IEFzc2lnbihhU3RyaW5nKTsgcmV0dXJuICp0aGlzOyB9CiAgcHJpdmF0
ZToKICAgIHZvaWQgb3BlcmF0b3I9KCBQUlVuaWNoYXIgKTsKICBwdWJsaWM6CiAgICBuc0NBdXRv
U3RyaW5nJiBvcGVyYXRvcj0oIGNvbnN0IG5zQUNTdHJpbmcmIGFSZWFkYWJsZSApIHsgQXNzaWdu
KGFSZWFkYWJsZSk7IHJldHVybiAqdGhpczsgfQoKICAgIG5zQ0F1dG9TdHJpbmcmIG9wZXJhdG9y
PSggY29uc3QgY2hhciogYVB0ciApIHsgQXNzaWduKGFQdHIpOyByZXR1cm4gKnRoaXM7IH0KICAg
IG5zQ0F1dG9TdHJpbmcmIG9wZXJhdG9yPSggY2hhciBhQ2hhciApIHsgQXNzaWduKGFDaGFyKTsg
cmV0dXJuICp0aGlzOyB9CiMgNDM1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zU3Ry
aW5nLmgiCiAgICBjaGFyIG1CdWZmZXJba0RlZmF1bHRTdHJpbmdTaXplXTsKfTsKCgoKCgoKY2xh
c3MgTlNfQ29udmVydFVDUzJ0b1VURjgKICAgICAgOiBwdWJsaWMgbnNDQXV0b1N0cmluZwoKCgog
IHsKICAgIHB1YmxpYzoKICAgICAgZnJpZW5kIGNoYXIqIFRvTmV3VVRGOFN0cmluZyggY29uc3Qg
bnNBU3RyaW5nJiBhU291cmNlICk7CgogICAgcHVibGljOgogICAgICBleHBsaWNpdAogICAgICBO
U19Db252ZXJ0VUNTMnRvVVRGOCggY29uc3QgUFJVbmljaGFyKiBhU3RyaW5nICkKICAgICAgICB7
CiAgICAgICAgICBBcHBlbmQoIGFTdHJpbmcsIH5QUlVpbnQzMigwKSApOwogICAgICAgIH0KCiAg
ICAgIE5TX0NvbnZlcnRVQ1MydG9VVEY4KCBjb25zdCBQUlVuaWNoYXIqIGFTdHJpbmcsIFBSVWlu
dDMyIGFMZW5ndGggKQogICAgICAgIHsKICAgICAgICAgIEFwcGVuZCggYVN0cmluZywgYUxlbmd0
aCApOwogICAgICAgIH0KCiAgICAgIGV4cGxpY2l0IE5TX0NvbnZlcnRVQ1MydG9VVEY4KCBjb25z
dCBuc0FTdHJpbmcmIGFTdHJpbmcgKTsKCiAgICBwcm90ZWN0ZWQ6CiAgICAgIHZvaWQgQXBwZW5k
KCBjb25zdCBQUlVuaWNoYXIqIGFTdHJpbmcsIFBSVWludDMyIGFMZW5ndGggKTsKCiAgICBwcml2
YXRlOgoKICAgICAgTlNfQ29udmVydFVDUzJ0b1VURjgoIGNoYXIgKTsKICB9OwoKCgoKY2xhc3Mg
TlNfTG9zc3lDb252ZXJ0VUNTMnRvQVNDSUkKICAgICAgOiBwdWJsaWMgbnNDQXV0b1N0cmluZwoK
CgogIHsKICAgIHB1YmxpYzoKICAgICAgZXhwbGljaXQKICAgICAgTlNfTG9zc3lDb252ZXJ0VUNT
MnRvQVNDSUkoIGNvbnN0IFBSVW5pY2hhciogYVN0cmluZyApCiAgICAgICAgewogICAgICAgICAg
QXBwZW5kV2l0aENvbnZlcnNpb24oIGFTdHJpbmcsIH5QUlVpbnQzMigwKSApOwogICAgICAgIH0K
CiAgICAgIE5TX0xvc3N5Q29udmVydFVDUzJ0b0FTQ0lJKCBjb25zdCBQUlVuaWNoYXIqIGFTdHJp
bmcsIFBSVWludDMyIGFMZW5ndGggKQogICAgICAgIHsKICAgICAgICAgIEFwcGVuZFdpdGhDb252
ZXJzaW9uKCBhU3RyaW5nLCBhTGVuZ3RoICk7CiAgICAgICAgfQoKICAgICAgZXhwbGljaXQgTlNf
TG9zc3lDb252ZXJ0VUNTMnRvQVNDSUkoIGNvbnN0IG5zQVN0cmluZyYgYVN0cmluZyApOwoKICAg
IHByaXZhdGU6CgogICAgICBOU19Mb3NzeUNvbnZlcnRVQ1MydG9BU0NJSSggY2hhciApOwogIH07
CiMgNDUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NU2NyaXB0T2JqZWN0RmFjdG9y
eS5oIiAyCgoKCgoKY2xhc3MgbnNJU2NyaXB0Q29udGV4dDsKY2xhc3MgbnNJU2NyaXB0R2xvYmFs
T2JqZWN0OwpjbGFzcyBuc0lET01FdmVudExpc3RlbmVyOwoKY2xhc3MgbnNJRE9NU2NyaXB0T2Jq
ZWN0RmFjdG9yeSA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CnB1YmxpYzoKICBzdGF0aWMgY29uc3Qg
bnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0geyAweGE2Y2Y5MDY0LCAw
eDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRk
LCAweDMyIH0gfTsgcmV0dXJuIGlpZDt9CgogIHZpcnR1YWwgbnNyZXN1bHQgTmV3U2NyaXB0Q29u
dGV4dChuc0lTY3JpcHRHbG9iYWxPYmplY3QgKmFHbG9iYWwsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5zSVNjcmlwdENvbnRleHQgKiphQ29udGV4dCkgPSAwOwoKICB2aXJ0dWFsIG5z
cmVzdWx0IE5ld0pTRXZlbnRMaXN0ZW5lcihuc0lTY3JpcHRDb250ZXh0ICphQ29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdXBwb3J0cyogYU9iamVjdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lET01FdmVudExpc3RlbmVyICoqIGFJbnN0YW5j
ZVB0clJlc3VsdCkgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IE5ld1NjcmlwdEdsb2JhbE9iamVj
dChQUkJvb2wgYUlzQ2hyb21lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5z
SVNjcmlwdEdsb2JhbE9iamVjdCAqKmFHbG9iYWwpID0gMDsKCiAgdmlydHVhbCBuc0lTdXBwb3J0
cyAqR2V0Q2xhc3NJbmZvSW5zdGFuY2UobnNET01DbGFzc0luZm9JRCBhSUQpID0gMDsKICB2aXJ0
dWFsIG5zSVN1cHBvcnRzICpHZXRFeHRlcm5hbENsYXNzSW5mb0luc3RhbmNlKGNvbnN0IG5zQVN0
cmluZyYgYU5hbWUpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFJlZ2lzdGVyRE9NQ2xh
c3NJbmZvKGNvbnN0IGNoYXIgKmFOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnNET01DbGFzc0luZm9FeHRlcm5hbENvbnN0cnVjdG9yRm5jIGFDb25zdHJ1Y3RvckZwdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuc0lJRCAqYVByb3RvQ2hh
aW5JbnRlcmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuc0lJ
RCAqKmFJbnRlcmZhY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJVaW50
MzIgYVNjcmlwdGFibGVGbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBS
Qm9vbCBhSGFzQ2xhc3NJbnRlcmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBuc0NJRCAqYUNvbnN0cnVjdG9yQ0lEKSA9IDA7Cn07CiMgMzE0ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvZG9tL25zSURPTUNsYXNzSW5mby5oIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2RvbS9uc0RPTUNJRC5oIiAxCiMgMzE1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9t
L25zSURPTUNsYXNzSW5mby5oIiAyCiMgMzc0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25z
SURPTUNsYXNzSW5mby5oIgpjbGFzcyBuc0lET01TY3JpcHRPYmplY3RGYWN0b3J5OwoKY2xhc3Mg
bnNJRE9NQ0lFeHRlbnNpb24gOiBwdWJsaWMgbnNJU3VwcG9ydHMgewpwdWJsaWM6CiAgc3RhdGlj
IGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsgMHg4OTFh
N2IwMSwgMHgxYjYxLCAweDExZDYsIHsgMHhhNywgMHhmMiwgMHhmNiwgMHg5MCwgMHhiNiwgMHgz
OCwgMHg4OSwgMHg5YyB9IH07IHJldHVybiBpaWQ7fQoKICB2aXJ0dWFsIG5zcmVzdWx0IFJlZ2lz
dGVyRE9NQ0koY29uc3QgY2hhciogYU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5z
SURPTVNjcmlwdE9iamVjdEZhY3RvcnkqIGFET01TT0ZhY3RvcnkpID0gMDsKfTsKIyA0NCAibnNE
T01DbGFzc0luZm8uaCIgMgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNhcGkuaCIg
MQojIDQwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNhcGkuaCIKIyAxICIvdXNyL2xpYi9n
Y2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDQx
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNhcGkuaCIgMgoKCgpleHRlcm4gIkMiIHsKIyAx
NDcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2FwaS5oIgpleHRlcm4gaW50NjQKSlNfTm93
KCk7CgoKZXh0ZXJuIGpzdmFsCkpTX0dldE5hTlZhbHVlKEpTQ29udGV4dCAqY3gpOwoKZXh0ZXJu
IGpzdmFsCkpTX0dldE5lZ2F0aXZlSW5maW5pdHlWYWx1ZShKU0NvbnRleHQgKmN4KTsKCmV4dGVy
biBqc3ZhbApKU19HZXRQb3NpdGl2ZUluZmluaXR5VmFsdWUoSlNDb250ZXh0ICpjeCk7CgpleHRl
cm4ganN2YWwKSlNfR2V0RW1wdHlTdHJpbmdWYWx1ZShKU0NvbnRleHQgKmN4KTsKIyAxOTYgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2FwaS5oIgpleHRlcm4gSlNCb29sCkpTX0NvbnZlcnRB
cmd1bWVudHMoSlNDb250ZXh0ICpjeCwgdWludE4gYXJnYywganN2YWwgKmFyZ3YsIGNvbnN0IGNo
YXIgKmZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAuLi4pOwojIDIxNiAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2pzL2pzYXBpLmgiCmV4dGVybiBqc3ZhbCAqCkpTX1B1c2hBcmd1bWVudHMoSlND
b250ZXh0ICpjeCwgdm9pZCAqKm1hcmtwLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLik7CgoKCgoK
CmV4dGVybiB2b2lkCkpTX1BvcEFyZ3VtZW50cyhKU0NvbnRleHQgKmN4LCB2b2lkICptYXJrKTsK
IyAyNzcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2FwaS5oIgpleHRlcm4gSlNCb29sCkpT
X0NvbnZlcnRWYWx1ZShKU0NvbnRleHQgKmN4LCBqc3ZhbCB2LCBKU1R5cGUgdHlwZSwganN2YWwg
KnZwKTsKCmV4dGVybiBKU0Jvb2wKSlNfVmFsdWVUb09iamVjdChKU0NvbnRleHQgKmN4LCBqc3Zh
bCB2LCBKU09iamVjdCAqKm9ianApOwoKZXh0ZXJuIEpTRnVuY3Rpb24gKgpKU19WYWx1ZVRvRnVu
Y3Rpb24oSlNDb250ZXh0ICpjeCwganN2YWwgdik7CgpleHRlcm4gSlNGdW5jdGlvbiAqCkpTX1Zh
bHVlVG9Db25zdHJ1Y3RvcihKU0NvbnRleHQgKmN4LCBqc3ZhbCB2KTsKCmV4dGVybiBKU1N0cmlu
ZyAqCkpTX1ZhbHVlVG9TdHJpbmcoSlNDb250ZXh0ICpjeCwganN2YWwgdik7CgpleHRlcm4gSlNC
b29sCkpTX1ZhbHVlVG9OdW1iZXIoSlNDb250ZXh0ICpjeCwganN2YWwgdiwganNkb3VibGUgKmRw
KTsKCgoKCgpleHRlcm4gSlNCb29sCkpTX1ZhbHVlVG9FQ01BSW50MzIoSlNDb250ZXh0ICpjeCwg
anN2YWwgdiwgaW50MzIgKmlwKTsKCgoKCgpleHRlcm4gSlNCb29sCkpTX1ZhbHVlVG9FQ01BVWlu
dDMyKEpTQ29udGV4dCAqY3gsIGpzdmFsIHYsIHVpbnQzMiAqaXApOwoKCgoKCgpleHRlcm4gSlNC
b29sCkpTX1ZhbHVlVG9JbnQzMihKU0NvbnRleHQgKmN4LCBqc3ZhbCB2LCBpbnQzMiAqaXApOwoK
CgoKZXh0ZXJuIEpTQm9vbApKU19WYWx1ZVRvVWludDE2KEpTQ29udGV4dCAqY3gsIGpzdmFsIHYs
IHVpbnQxNiAqaXApOwoKZXh0ZXJuIEpTQm9vbApKU19WYWx1ZVRvQm9vbGVhbihKU0NvbnRleHQg
KmN4LCBqc3ZhbCB2LCBKU0Jvb2wgKmJwKTsKCmV4dGVybiBKU1R5cGUKSlNfVHlwZU9mVmFsdWUo
SlNDb250ZXh0ICpjeCwganN2YWwgdik7CgpleHRlcm4gY29uc3QgY2hhciAqCkpTX0dldFR5cGVO
YW1lKEpTQ29udGV4dCAqY3gsIEpTVHlwZSB0eXBlKTsKIyAzNDIgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9qcy9qc2FwaS5oIgpleHRlcm4gSlNSdW50aW1lICoKSlNfSW5pdCh1aW50MzIgbWF4Ynl0
ZXMpOwoKZXh0ZXJuIHZvaWQKSlNfRmluaXNoKEpTUnVudGltZSAqcnQpOwoKZXh0ZXJuIHZvaWQK
SlNfU2h1dERvd24odm9pZCk7Cgp2b2lkICoKSlNfR2V0UnVudGltZVByaXZhdGUoSlNSdW50aW1l
ICpydCk7Cgp2b2lkCkpTX1NldFJ1bnRpbWVQcml2YXRlKEpTUnVudGltZSAqcnQsIHZvaWQgKmRh
dGEpOwoKCgpleHRlcm4gdm9pZApKU19CZWdpblJlcXVlc3QoSlNDb250ZXh0ICpjeCk7CgpleHRl
cm4gdm9pZApKU19FbmRSZXF1ZXN0KEpTQ29udGV4dCAqY3gpOwoKCmV4dGVybiB2b2lkCkpTX1lp
ZWxkUmVxdWVzdChKU0NvbnRleHQgKmN4KTsKCmV4dGVybiBqc3JlZmNvdW50CkpTX1N1c3BlbmRS
ZXF1ZXN0KEpTQ29udGV4dCAqY3gpOwoKZXh0ZXJuIHZvaWQKSlNfUmVzdW1lUmVxdWVzdChKU0Nv
bnRleHQgKmN4LCBqc3JlZmNvdW50IHNhdmVEZXB0aCk7CgoKCmV4dGVybiB2b2lkCkpTX0xvY2so
SlNSdW50aW1lICpydCk7CgpleHRlcm4gdm9pZApKU19VbmxvY2soSlNSdW50aW1lICpydCk7Cgpl
eHRlcm4gSlNDb250ZXh0ICoKSlNfTmV3Q29udGV4dChKU1J1bnRpbWUgKnJ0LCBzaXplX3Qgc3Rh
Y2tDaHVua1NpemUpOwoKZXh0ZXJuIHZvaWQKSlNfRGVzdHJveUNvbnRleHQoSlNDb250ZXh0ICpj
eCk7CgpleHRlcm4gdm9pZApKU19EZXN0cm95Q29udGV4dE5vR0MoSlNDb250ZXh0ICpjeCk7Cgpl
eHRlcm4gdm9pZApKU19EZXN0cm95Q29udGV4dE1heWJlR0MoSlNDb250ZXh0ICpjeCk7CgpleHRl
cm4gdm9pZCAqCkpTX0dldENvbnRleHRQcml2YXRlKEpTQ29udGV4dCAqY3gpOwoKZXh0ZXJuIHZv
aWQKSlNfU2V0Q29udGV4dFByaXZhdGUoSlNDb250ZXh0ICpjeCwgdm9pZCAqZGF0YSk7CgpleHRl
cm4gSlNSdW50aW1lICoKSlNfR2V0UnVudGltZShKU0NvbnRleHQgKmN4KTsKCmV4dGVybiBKU0Nv
bnRleHQgKgpKU19Db250ZXh0SXRlcmF0b3IoSlNSdW50aW1lICpydCwgSlNDb250ZXh0ICoqaXRl
cnApOwoKZXh0ZXJuIEpTVmVyc2lvbgpKU19HZXRWZXJzaW9uKEpTQ29udGV4dCAqY3gpOwoKZXh0
ZXJuIEpTVmVyc2lvbgpKU19TZXRWZXJzaW9uKEpTQ29udGV4dCAqY3gsIEpTVmVyc2lvbiB2ZXJz
aW9uKTsKCmV4dGVybiBjb25zdCBjaGFyICoKSlNfVmVyc2lvblRvU3RyaW5nKEpTVmVyc2lvbiB2
ZXJzaW9uKTsKCmV4dGVybiBKU1ZlcnNpb24KSlNfU3RyaW5nVG9WZXJzaW9uKGNvbnN0IGNoYXIg
KnN0cmluZyk7CiMgNDM2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNhcGkuaCIKZXh0ZXJu
IHVpbnQzMgpKU19HZXRPcHRpb25zKEpTQ29udGV4dCAqY3gpOwoKZXh0ZXJuIHVpbnQzMgpKU19T
ZXRPcHRpb25zKEpTQ29udGV4dCAqY3gsIHVpbnQzMiBvcHRpb25zKTsKCmV4dGVybiB1aW50MzIK
SlNfVG9nZ2xlT3B0aW9ucyhKU0NvbnRleHQgKmN4LCB1aW50MzIgb3B0aW9ucyk7CgpleHRlcm4g
Y29uc3QgY2hhciAqCkpTX0dldEltcGxlbWVudGF0aW9uVmVyc2lvbih2b2lkKTsKCmV4dGVybiBK
U09iamVjdCAqCkpTX0dldEdsb2JhbE9iamVjdChKU0NvbnRleHQgKmN4KTsKCmV4dGVybiB2b2lk
CkpTX1NldEdsb2JhbE9iamVjdChKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqKTsKIyA0NjEg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2FwaS5oIgpleHRlcm4gSlNCb29sCkpTX0luaXRT
dGFuZGFyZENsYXNzZXMoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaik7CiMgNDc3ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvanMvanNhcGkuaCIKZXh0ZXJuIEpTQm9vbApKU19SZXNvbHZlU3Rh
bmRhcmRDbGFzcyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBqc3ZhbCBpZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgSlNCb29sICpyZXNvbHZlZCk7CgpleHRlcm4gSlNCb29sCkpTX0Vu
dW1lcmF0ZVN0YW5kYXJkQ2xhc3NlcyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqKTsKCmV4
dGVybiBKU09iamVjdCAqCkpTX0dldFNjb3BlQ2hhaW4oSlNDb250ZXh0ICpjeCk7CgpleHRlcm4g
dm9pZCAqCkpTX21hbGxvYyhKU0NvbnRleHQgKmN4LCBzaXplX3QgbmJ5dGVzKTsKCmV4dGVybiB2
b2lkICoKSlNfcmVhbGxvYyhKU0NvbnRleHQgKmN4LCB2b2lkICpwLCBzaXplX3QgbmJ5dGVzKTsK
CmV4dGVybiB2b2lkCkpTX2ZyZWUoSlNDb250ZXh0ICpjeCwgdm9pZCAqcCk7CgpleHRlcm4gY2hh
ciAqCkpTX3N0cmR1cChKU0NvbnRleHQgKmN4LCBjb25zdCBjaGFyICpzKTsKCmV4dGVybiBqc2Rv
dWJsZSAqCkpTX05ld0RvdWJsZShKU0NvbnRleHQgKmN4LCBqc2RvdWJsZSBkKTsKCmV4dGVybiBK
U0Jvb2wKSlNfTmV3RG91YmxlVmFsdWUoSlNDb250ZXh0ICpjeCwganNkb3VibGUgZCwganN2YWwg
KnJ2YWwpOwoKZXh0ZXJuIEpTQm9vbApKU19OZXdOdW1iZXJWYWx1ZShKU0NvbnRleHQgKmN4LCBq
c2RvdWJsZSBkLCBqc3ZhbCAqcnZhbCk7CiMgNTI0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMv
anNhcGkuaCIKZXh0ZXJuIEpTQm9vbApKU19BZGRSb290KEpTQ29udGV4dCAqY3gsIHZvaWQgKnJw
KTsKCmV4dGVybiBKU0Jvb2wKSlNfQWRkTmFtZWRSb290KEpTQ29udGV4dCAqY3gsIHZvaWQgKnJw
LCBjb25zdCBjaGFyICpuYW1lKTsKCmV4dGVybiBKU0Jvb2wKSlNfQWRkTmFtZWRSb290UlQoSlNS
dW50aW1lICpydCwgdm9pZCAqcnAsIGNvbnN0IGNoYXIgKm5hbWUpOwoKZXh0ZXJuIEpTQm9vbApK
U19SZW1vdmVSb290KEpTQ29udGV4dCAqY3gsIHZvaWQgKnJwKTsKCmV4dGVybiBKU0Jvb2wKSlNf
UmVtb3ZlUm9vdFJUKEpTUnVudGltZSAqcnQsIHZvaWQgKnJwKTsKIyA1NTQgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9qcy9qc2FwaS5oIgpleHRlcm4gdm9pZApKU19DbGVhck5ld2Jvcm5Sb290cyhK
U0NvbnRleHQgKmN4KTsKIyA1ODYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2FwaS5oIgp0
eXBlZGVmIGludE4KKCogSlNHQ1Jvb3RNYXBGdW4pKHZvaWQgKnJwLCBjb25zdCBjaGFyICpuYW1l
LCB2b2lkICpkYXRhKTsKCmV4dGVybiB1aW50MzIKSlNfTWFwR0NSb290cyhKU1J1bnRpbWUgKnJ0
LCBKU0dDUm9vdE1hcEZ1biBtYXAsIHZvaWQgKmRhdGEpOwoKZXh0ZXJuIEpTQm9vbApKU19Mb2Nr
R0NUaGluZyhKU0NvbnRleHQgKmN4LCB2b2lkICp0aGluZyk7CgpleHRlcm4gSlNCb29sCkpTX0xv
Y2tHQ1RoaW5nUlQoSlNSdW50aW1lICpydCwgdm9pZCAqdGhpbmcpOwoKZXh0ZXJuIEpTQm9vbApK
U19VbmxvY2tHQ1RoaW5nKEpTQ29udGV4dCAqY3gsIHZvaWQgKnRoaW5nKTsKCmV4dGVybiBKU0Jv
b2wKSlNfVW5sb2NrR0NUaGluZ1JUKEpTUnVudGltZSAqcnQsIHZvaWQgKnRoaW5nKTsKIyA2MTcg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2FwaS5oIgpleHRlcm4gdm9pZApKU19NYXJrR0NU
aGluZyhKU0NvbnRleHQgKmN4LCB2b2lkICp0aGluZywgY29uc3QgY2hhciAqbmFtZSwgdm9pZCAq
YXJnKTsKCmV4dGVybiB2b2lkCkpTX0dDKEpTQ29udGV4dCAqY3gpOwoKZXh0ZXJuIHZvaWQKSlNf
TWF5YmVHQyhKU0NvbnRleHQgKmN4KTsKCmV4dGVybiBKU0dDQ2FsbGJhY2sKSlNfU2V0R0NDYWxs
YmFjayhKU0NvbnRleHQgKmN4LCBKU0dDQ2FsbGJhY2sgY2IpOwoKZXh0ZXJuIEpTR0NDYWxsYmFj
awpKU19TZXRHQ0NhbGxiYWNrUlQoSlNSdW50aW1lICpydCwgSlNHQ0NhbGxiYWNrIGNiKTsKCmV4
dGVybiBKU0Jvb2wKSlNfSXNBYm91dFRvQmVGaW5hbGl6ZWQoSlNDb250ZXh0ICpjeCwgdm9pZCAq
dGhpbmcpOwojIDY0NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzYXBpLmgiCmV4dGVybiBp
bnROCkpTX0FkZEV4dGVybmFsU3RyaW5nRmluYWxpemVyKEpTU3RyaW5nRmluYWxpemVPcCBmaW5h
bGl6ZXIpOwojIDY2MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzYXBpLmgiCmV4dGVybiBp
bnROCkpTX1JlbW92ZUV4dGVybmFsU3RyaW5nRmluYWxpemVyKEpTU3RyaW5nRmluYWxpemVPcCBm
aW5hbGl6ZXIpOwoKCgoKCgpleHRlcm4gSlNTdHJpbmcgKgpKU19OZXdFeHRlcm5hbFN0cmluZyhK
U0NvbnRleHQgKmN4LCBqc2NoYXIgKmNoYXJzLCBzaXplX3QgbGVuZ3RoLCBpbnROIHR5cGUpOwoK
CgoKCmV4dGVybiBpbnROCkpTX0dldEV4dGVybmFsU3RyaW5nR0NUeXBlKEpTUnVudGltZSAqcnQs
IEpTU3RyaW5nICpzdHIpOwojIDY4OCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzYXBpLmgi
CnN0cnVjdCBKU0NsYXNzIHsKICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICB1aW50MzIgZmxhZ3M7
CgoKICAgIEpTUHJvcGVydHlPcCBhZGRQcm9wZXJ0eTsKICAgIEpTUHJvcGVydHlPcCBkZWxQcm9w
ZXJ0eTsKICAgIEpTUHJvcGVydHlPcCBnZXRQcm9wZXJ0eTsKICAgIEpTUHJvcGVydHlPcCBzZXRQ
cm9wZXJ0eTsKICAgIEpTRW51bWVyYXRlT3AgZW51bWVyYXRlOwogICAgSlNSZXNvbHZlT3AgcmVz
b2x2ZTsKICAgIEpTQ29udmVydE9wIGNvbnZlcnQ7CiAgICBKU0ZpbmFsaXplT3AgZmluYWxpemU7
CgoKICAgIEpTR2V0T2JqZWN0T3BzIGdldE9iamVjdE9wczsKICAgIEpTQ2hlY2tBY2Nlc3NPcCBj
aGVja0FjY2VzczsKICAgIEpTTmF0aXZlIGNhbGw7CiAgICBKU05hdGl2ZSBjb25zdHJ1Y3Q7CiAg
ICBKU1hEUk9iamVjdE9wIHhkck9iamVjdDsKICAgIEpTSGFzSW5zdGFuY2VPcCBoYXNJbnN0YW5j
ZTsKICAgIEpTTWFya09wIG1hcms7CiAgICBqc3dvcmQgc3BhcmU7Cn07CiMgNzM3ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvanMvanNhcGkuaCIKc3RydWN0IEpTT2JqZWN0T3BzIHsKCiAgICBKU05l
d09iamVjdE1hcE9wIG5ld09iamVjdE1hcDsKICAgIEpTT2JqZWN0TWFwT3AgZGVzdHJveU9iamVj
dE1hcDsKICAgIEpTTG9va3VwUHJvcE9wIGxvb2t1cFByb3BlcnR5OwogICAgSlNEZWZpbmVQcm9w
T3AgZGVmaW5lUHJvcGVydHk7CiAgICBKU1Byb3BlcnR5SWRPcCBnZXRQcm9wZXJ0eTsKICAgIEpT
UHJvcGVydHlJZE9wIHNldFByb3BlcnR5OwogICAgSlNBdHRyaWJ1dGVzT3AgZ2V0QXR0cmlidXRl
czsKICAgIEpTQXR0cmlidXRlc09wIHNldEF0dHJpYnV0ZXM7CiAgICBKU1Byb3BlcnR5SWRPcCBk
ZWxldGVQcm9wZXJ0eTsKICAgIEpTQ29udmVydE9wIGRlZmF1bHRWYWx1ZTsKICAgIEpTTmV3RW51
bWVyYXRlT3AgZW51bWVyYXRlOwogICAgSlNDaGVja0FjY2Vzc0lkT3AgY2hlY2tBY2Nlc3M7CgoK
ICAgIEpTT2JqZWN0T3AgdGhpc09iamVjdDsKICAgIEpTUHJvcGVydHlSZWZPcCBkcm9wUHJvcGVy
dHk7CiAgICBKU05hdGl2ZSBjYWxsOwogICAgSlNOYXRpdmUgY29uc3RydWN0OwogICAgSlNYRFJP
YmplY3RPcCB4ZHJPYmplY3Q7CiAgICBKU0hhc0luc3RhbmNlT3AgaGFzSW5zdGFuY2U7CiAgICBK
U1NldE9iamVjdFNsb3RPcCBzZXRQcm90bzsKICAgIEpTU2V0T2JqZWN0U2xvdE9wIHNldFBhcmVu
dDsKICAgIEpTTWFya09wIG1hcms7CiAgICBKU0ZpbmFsaXplT3AgY2xlYXI7CiAgICBKU0dldFJl
cXVpcmVkU2xvdE9wIGdldFJlcXVpcmVkU2xvdDsKICAgIEpTU2V0UmVxdWlyZWRTbG90T3Agc2V0
UmVxdWlyZWRTbG90Owp9OwojIDc3NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzYXBpLmgi
CnN0cnVjdCBKU1Byb3BlcnR5IHsKICAgIGpzaWQgaWQ7Cn07CgpzdHJ1Y3QgSlNJZEFycmF5IHsK
ICAgIGpzaW50IGxlbmd0aDsKICAgIGpzaWQgdmVjdG9yWzFdOwp9OwoKZXh0ZXJuIHZvaWQKSlNf
RGVzdHJveUlkQXJyYXkoSlNDb250ZXh0ICpjeCwgSlNJZEFycmF5ICppZGEpOwoKZXh0ZXJuIEpT
Qm9vbApKU19WYWx1ZVRvSWQoSlNDb250ZXh0ICpjeCwganN2YWwgdiwganNpZCAqaWRwKTsKCmV4
dGVybiBKU0Jvb2wKSlNfSWRUb1ZhbHVlKEpTQ29udGV4dCAqY3gsIGpzaWQgaWQsIGpzdmFsICp2
cCk7CgoKCgpleHRlcm4gSlNCb29sCkpTX1Byb3BlcnR5U3R1YihKU0NvbnRleHQgKmN4LCBKU09i
amVjdCAqb2JqLCBqc3ZhbCBpZCwganN2YWwgKnZwKTsKCmV4dGVybiBKU0Jvb2wKSlNfRW51bWVy
YXRlU3R1YihKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqKTsKCmV4dGVybiBKU0Jvb2wKSlNf
UmVzb2x2ZVN0dWIoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwganN2YWwgaWQpOwoKZXh0
ZXJuIEpTQm9vbApKU19Db252ZXJ0U3R1YihKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBK
U1R5cGUgdHlwZSwganN2YWwgKnZwKTsKCmV4dGVybiB2b2lkCkpTX0ZpbmFsaXplU3R1YihKU0Nv
bnRleHQgKmN4LCBKU09iamVjdCAqb2JqKTsKCnN0cnVjdCBKU0NvbnN0RG91YmxlU3BlYyB7CiAg
ICBqc2RvdWJsZSBkdmFsOwogICAgY29uc3QgY2hhciAqbmFtZTsKICAgIHVpbnQ4IGZsYWdzOwog
ICAgdWludDggc3BhcmVbM107Cn07CgoKCgoKCnN0cnVjdCBKU1Byb3BlcnR5U3BlYyB7CiAgICBj
b25zdCBjaGFyICpuYW1lOwogICAgaW50OCB0aW55aWQ7CiAgICB1aW50OCBmbGFnczsKICAgIEpT
UHJvcGVydHlPcCBnZXR0ZXI7CiAgICBKU1Byb3BlcnR5T3Agc2V0dGVyOwp9OwoKc3RydWN0IEpT
RnVuY3Rpb25TcGVjIHsKICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICBKU05hdGl2ZSBjYWxsOwog
ICAgdWludDggbmFyZ3M7CiAgICB1aW50OCBmbGFnczsKICAgIHVpbnQxNiBleHRyYTsKfTsKCmV4
dGVybiBKU09iamVjdCAqCkpTX0luaXRDbGFzcyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2Jq
LCBKU09iamVjdCAqcGFyZW50X3Byb3RvLAogICAgICAgICAgICAgSlNDbGFzcyAqY2xhc3AsIEpT
TmF0aXZlIGNvbnN0cnVjdG9yLCB1aW50TiBuYXJncywKICAgICAgICAgICAgIEpTUHJvcGVydHlT
cGVjICpwcywgSlNGdW5jdGlvblNwZWMgKmZzLAogICAgICAgICAgICAgSlNQcm9wZXJ0eVNwZWMg
KnN0YXRpY19wcywgSlNGdW5jdGlvblNwZWMgKnN0YXRpY19mcyk7CgoKZXh0ZXJuIEpTQ2xhc3Mg
KgpKU19HZXRDbGFzcyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqKTsKIyA4NTkgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9qcy9qc2FwaS5oIgpleHRlcm4gSlNCb29sCkpTX0luc3RhbmNlT2Yo
SlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgSlNDbGFzcyAqY2xhc3AsIGpzdmFsICphcmd2
KTsKCmV4dGVybiB2b2lkICoKSlNfR2V0UHJpdmF0ZShKU0NvbnRleHQgKmN4LCBKU09iamVjdCAq
b2JqKTsKCmV4dGVybiBKU0Jvb2wKSlNfU2V0UHJpdmF0ZShKU0NvbnRleHQgKmN4LCBKU09iamVj
dCAqb2JqLCB2b2lkICpkYXRhKTsKCmV4dGVybiB2b2lkICoKSlNfR2V0SW5zdGFuY2VQcml2YXRl
KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIEpTQ2xhc3MgKmNsYXNwLAogICAgICAgICAg
ICAgICAgICAgICAganN2YWwgKmFyZ3YpOwoKZXh0ZXJuIEpTT2JqZWN0ICoKSlNfR2V0UHJvdG90
eXBlKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmopOwoKZXh0ZXJuIEpTQm9vbApKU19TZXRQ
cm90b3R5cGUoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgSlNPYmplY3QgKnByb3RvKTsK
CmV4dGVybiBKU09iamVjdCAqCkpTX0dldFBhcmVudChKU0NvbnRleHQgKmN4LCBKU09iamVjdCAq
b2JqKTsKCmV4dGVybiBKU0Jvb2wKSlNfU2V0UGFyZW50KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0
ICpvYmosIEpTT2JqZWN0ICpwYXJlbnQpOwoKZXh0ZXJuIEpTT2JqZWN0ICoKSlNfR2V0Q29uc3Ry
dWN0b3IoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKnByb3RvKTsKCmV4dGVybiBKU09iamVjdCAq
CkpTX05ld09iamVjdChKU0NvbnRleHQgKmN4LCBKU0NsYXNzICpjbGFzcCwgSlNPYmplY3QgKnBy
b3RvLCBKU09iamVjdCAqcGFyZW50KTsKCmV4dGVybiBKU09iamVjdCAqCkpTX0NvbnN0cnVjdE9i
amVjdChKU0NvbnRleHQgKmN4LCBKU0NsYXNzICpjbGFzcCwgSlNPYmplY3QgKnByb3RvLAogICAg
ICAgICAgICAgICAgICAgSlNPYmplY3QgKnBhcmVudCk7CgpleHRlcm4gSlNPYmplY3QgKgpKU19D
b25zdHJ1Y3RPYmplY3RXaXRoQXJndW1lbnRzKEpTQ29udGV4dCAqY3gsIEpTQ2xhc3MgKmNsYXNw
LCBKU09iamVjdCAqcHJvdG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmpl
Y3QgKnBhcmVudCwgdWludE4gYXJnYywganN2YWwgKmFyZ3YpOwoKZXh0ZXJuIEpTT2JqZWN0ICoK
SlNfRGVmaW5lT2JqZWN0KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGNvbnN0IGNoYXIg
Km5hbWUsIEpTQ2xhc3MgKmNsYXNwLAogICAgICAgICAgICAgICAgSlNPYmplY3QgKnByb3RvLCB1
aW50TiBhdHRycyk7CgpleHRlcm4gSlNCb29sCkpTX0RlZmluZUNvbnN0RG91YmxlcyhKU0NvbnRl
eHQgKmN4LCBKU09iamVjdCAqb2JqLCBKU0NvbnN0RG91YmxlU3BlYyAqY2RzKTsKCmV4dGVybiBK
U0Jvb2wKSlNfRGVmaW5lUHJvcGVydGllcyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBK
U1Byb3BlcnR5U3BlYyAqcHMpOwoKZXh0ZXJuIEpTQm9vbApKU19EZWZpbmVQcm9wZXJ0eShKU0Nv
bnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBjb25zdCBjaGFyICpuYW1lLCBqc3ZhbCB2YWx1ZSwK
ICAgICAgICAgICAgICAgICAgSlNQcm9wZXJ0eU9wIGdldHRlciwgSlNQcm9wZXJ0eU9wIHNldHRl
ciwgdWludE4gYXR0cnMpOwoKCgoKCgoKZXh0ZXJuIEpTQm9vbApKU19HZXRQcm9wZXJ0eUF0dHJp
YnV0ZXMoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqbmFtZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnROICphdHRyc3AsIEpTQm9vbCAqZm91bmRwKTsKCgoK
CgoKCmV4dGVybiBKU0Jvb2wKSlNfU2V0UHJvcGVydHlBdHRyaWJ1dGVzKEpTQ29udGV4dCAqY3gs
IEpTT2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50TiBhdHRycywgSlNCb29sICpmb3VuZHApOwoKZXh0ZXJuIEpTQm9vbApKU19EZWZpbmVQ
cm9wZXJ0eVdpdGhUaW55SWQoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgY29uc3QgY2hh
ciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDggdGlueWlkLCBqc3ZhbCB2
YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTUHJvcGVydHlPcCBnZXR0ZXIsIEpT
UHJvcGVydHlPcCBzZXR0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50TiBhdHRy
cyk7CgpleHRlcm4gSlNCb29sCkpTX0FsaWFzUHJvcGVydHkoSlNDb250ZXh0ICpjeCwgSlNPYmpl
Y3QgKm9iaiwgY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICph
bGlhcyk7CgpleHRlcm4gSlNCb29sCkpTX0xvb2t1cFByb3BlcnR5KEpTQ29udGV4dCAqY3gsIEpT
T2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKm5hbWUsIGpzdmFsICp2cCk7CgpleHRlcm4gSlNCb29s
CkpTX0dldFByb3BlcnR5KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGNvbnN0IGNoYXIg
Km5hbWUsIGpzdmFsICp2cCk7CgpleHRlcm4gSlNCb29sCkpTX1NldFByb3BlcnR5KEpTQ29udGV4
dCAqY3gsIEpTT2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKm5hbWUsIGpzdmFsICp2cCk7CgpleHRl
cm4gSlNCb29sCkpTX0RlbGV0ZVByb3BlcnR5KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmos
IGNvbnN0IGNoYXIgKm5hbWUpOwoKZXh0ZXJuIEpTQm9vbApKU19EZWxldGVQcm9wZXJ0eTIoSlND
b250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAg
ICAgICAgIGpzdmFsICpydmFsKTsKCmV4dGVybiBKU0Jvb2wKSlNfRGVmaW5lVUNQcm9wZXJ0eShK
U0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IGpz
Y2hhciAqbmFtZSwgc2l6ZV90IG5hbWVsZW4sIGpzdmFsIHZhbHVlLAogICAgICAgICAgICAgICAg
ICAgIEpTUHJvcGVydHlPcCBnZXR0ZXIsIEpTUHJvcGVydHlPcCBzZXR0ZXIsCiAgICAgICAgICAg
ICAgICAgICAgdWludE4gYXR0cnMpOwoKCgoKCgoKZXh0ZXJuIEpTQm9vbApKU19HZXRVQ1Byb3Bl
cnR5QXR0cmlidXRlcyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBqc2NoYXIgKm5hbWUsIHNpemVfdCBuYW1lbGVuLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50TiAqYXR0cnNwLCBKU0Jvb2wgKmZvdW5kcCk7CgoKCgoK
CgpleHRlcm4gSlNCb29sCkpTX1NldFVDUHJvcGVydHlBdHRyaWJ1dGVzKEpTQ29udGV4dCAqY3gs
IEpTT2JqZWN0ICpvYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGpzY2hhciAq
bmFtZSwgc2l6ZV90IG5hbWVsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnROIGF0
dHJzLCBKU0Jvb2wgKmZvdW5kcCk7CgoKZXh0ZXJuIEpTQm9vbApKU19EZWZpbmVVQ1Byb3BlcnR5
V2l0aFRpbnlJZChKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBqc2NoYXIgKm5hbWUsIHNpemVfdCBuYW1lbGVuLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQ4IHRpbnlpZCwganN2YWwgdmFsdWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEpTUHJvcGVydHlPcCBnZXR0ZXIsIEpTUHJvcGVydHlPcCBz
ZXR0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnROIGF0dHJzKTsKCmV4dGVy
biBKU0Jvb2wKSlNfTG9va3VwVUNQcm9wZXJ0eShKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2Jq
LAogICAgICAgICAgICAgICAgICAgIGNvbnN0IGpzY2hhciAqbmFtZSwgc2l6ZV90IG5hbWVsZW4s
CiAgICAgICAgICAgICAgICAgICAganN2YWwgKnZwKTsKCmV4dGVybiBKU0Jvb2wKSlNfR2V0VUNQ
cm9wZXJ0eShKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAgIGNv
bnN0IGpzY2hhciAqbmFtZSwgc2l6ZV90IG5hbWVsZW4sCiAgICAgICAgICAgICAgICAganN2YWwg
KnZwKTsKCmV4dGVybiBKU0Jvb2wKSlNfU2V0VUNQcm9wZXJ0eShKU0NvbnRleHQgKmN4LCBKU09i
amVjdCAqb2JqLAogICAgICAgICAgICAgICAgIGNvbnN0IGpzY2hhciAqbmFtZSwgc2l6ZV90IG5h
bWVsZW4sCiAgICAgICAgICAgICAgICAganN2YWwgKnZwKTsKCmV4dGVybiBKU0Jvb2wKSlNfRGVs
ZXRlVUNQcm9wZXJ0eTIoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwKICAgICAgICAgICAg
ICAgICAgICAgY29uc3QganNjaGFyICpuYW1lLCBzaXplX3QgbmFtZWxlbiwKICAgICAgICAgICAg
ICAgICAgICAganN2YWwgKnJ2YWwpOwoKZXh0ZXJuIEpTT2JqZWN0ICoKSlNfTmV3QXJyYXlPYmpl
Y3QoSlNDb250ZXh0ICpjeCwganNpbnQgbGVuZ3RoLCBqc3ZhbCAqdmVjdG9yKTsKCmV4dGVybiBK
U0Jvb2wKSlNfSXNBcnJheU9iamVjdChKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqKTsKCmV4
dGVybiBKU0Jvb2wKSlNfR2V0QXJyYXlMZW5ndGgoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9i
aiwganN1aW50ICpsZW5ndGhwKTsKCmV4dGVybiBKU0Jvb2wKSlNfU2V0QXJyYXlMZW5ndGgoSlND
b250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwganN1aW50IGxlbmd0aCk7CgpleHRlcm4gSlNCb29s
CkpTX0hhc0FycmF5TGVuZ3RoKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzdWludCAq
bGVuZ3RocCk7CgpleHRlcm4gSlNCb29sCkpTX0RlZmluZUVsZW1lbnQoSlNDb250ZXh0ICpjeCwg
SlNPYmplY3QgKm9iaiwganNpbnQgaW5kZXgsIGpzdmFsIHZhbHVlLAogICAgICAgICAgICAgICAg
IEpTUHJvcGVydHlPcCBnZXR0ZXIsIEpTUHJvcGVydHlPcCBzZXR0ZXIsIHVpbnROIGF0dHJzKTsK
CmV4dGVybiBKU0Jvb2wKSlNfQWxpYXNFbGVtZW50KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpv
YmosIGNvbnN0IGNoYXIgKm5hbWUsIGpzaW50IGFsaWFzKTsKCmV4dGVybiBKU0Jvb2wKSlNfTG9v
a3VwRWxlbWVudChKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBqc2ludCBpbmRleCwganN2
YWwgKnZwKTsKCmV4dGVybiBKU0Jvb2wKSlNfR2V0RWxlbWVudChKU0NvbnRleHQgKmN4LCBKU09i
amVjdCAqb2JqLCBqc2ludCBpbmRleCwganN2YWwgKnZwKTsKCmV4dGVybiBKU0Jvb2wKSlNfU2V0
RWxlbWVudChKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBqc2ludCBpbmRleCwganN2YWwg
KnZwKTsKCmV4dGVybiBKU0Jvb2wKSlNfRGVsZXRlRWxlbWVudChKU0NvbnRleHQgKmN4LCBKU09i
amVjdCAqb2JqLCBqc2ludCBpbmRleCk7CgpleHRlcm4gSlNCb29sCkpTX0RlbGV0ZUVsZW1lbnQy
KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzaW50IGluZGV4LCBqc3ZhbCAqcnZhbCk7
CgpleHRlcm4gdm9pZApKU19DbGVhclNjb3BlKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmop
OwoKZXh0ZXJuIEpTSWRBcnJheSAqCkpTX0VudW1lcmF0ZShKU0NvbnRleHQgKmN4LCBKU09iamVj
dCAqb2JqKTsKCmV4dGVybiBKU0Jvb2wKSlNfQ2hlY2tBY2Nlc3MoSlNDb250ZXh0ICpjeCwgSlNP
YmplY3QgKm9iaiwganNpZCBpZCwgSlNBY2Nlc3NNb2RlIG1vZGUsCiAgICAgICAgICAgICAgIGpz
dmFsICp2cCwgdWludE4gKmF0dHJzcCk7CgpleHRlcm4gSlNDaGVja0FjY2Vzc09wCkpTX1NldENo
ZWNrT2JqZWN0QWNjZXNzQ2FsbGJhY2soSlNSdW50aW1lICpydCwgSlNDaGVja0FjY2Vzc09wIGFj
Yik7CgpleHRlcm4gSlNCb29sCkpTX0dldFJlc2VydmVkU2xvdChKU0NvbnRleHQgKmN4LCBKU09i
amVjdCAqb2JqLCB1aW50MzIgaW5kZXgsIGpzdmFsICp2cCk7CgpleHRlcm4gSlNCb29sCkpTX1Nl
dFJlc2VydmVkU2xvdChKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCB1aW50MzIgaW5kZXgs
IGpzdmFsIHYpOwoKCgoKCgpzdHJ1Y3QgSlNQcmluY2lwYWxzIHsKICAgIGNoYXIgKmNvZGViYXNl
OwogICAgdm9pZCAqICgqIGdldFByaW5jaXBhbEFycmF5KShKU0NvbnRleHQgKmN4LCBKU1ByaW5j
aXBhbHMgKik7CiAgICBKU0Jvb2wgKCogZ2xvYmFsUHJpdmlsZWdlc0VuYWJsZWQpKEpTQ29udGV4
dCAqY3gsIEpTUHJpbmNpcGFscyAqKTsKCgogICAgdWludE4gcmVmY291bnQ7CiAgICB2b2lkICgq
IGRlc3Ryb3kpKEpTQ29udGV4dCAqY3gsIHN0cnVjdCBKU1ByaW5jaXBhbHMgKik7Cn07CiMgMTA5
MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzYXBpLmgiCmV4dGVybiBKU1ByaW5jaXBhbHNU
cmFuc2NvZGVyCkpTX1NldFByaW5jaXBhbHNUcmFuc2NvZGVyKEpTUnVudGltZSAqcnQsIEpTUHJp
bmNpcGFsc1RyYW5zY29kZXIgcHgpOwoKCgoKCgpleHRlcm4gSlNGdW5jdGlvbiAqCkpTX05ld0Z1
bmN0aW9uKEpTQ29udGV4dCAqY3gsIEpTTmF0aXZlIGNhbGwsIHVpbnROIG5hcmdzLCB1aW50TiBm
bGFncywKICAgICAgICAgICAgICAgSlNPYmplY3QgKnBhcmVudCwgY29uc3QgY2hhciAqbmFtZSk7
CgpleHRlcm4gSlNPYmplY3QgKgpKU19HZXRGdW5jdGlvbk9iamVjdChKU0Z1bmN0aW9uICpmdW4p
OwoKCgoKCmV4dGVybiBjb25zdCBjaGFyICoKSlNfR2V0RnVuY3Rpb25OYW1lKEpTRnVuY3Rpb24g
KmZ1bik7CiMgMTEyNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzYXBpLmgiCmV4dGVybiBK
U1N0cmluZyAqCkpTX0dldEZ1bmN0aW9uSWQoSlNGdW5jdGlvbiAqZnVuKTsKCgoKCmV4dGVybiB1
aW50TgpKU19HZXRGdW5jdGlvbkZsYWdzKEpTRnVuY3Rpb24gKmZ1bik7CgoKCgoKCgpleHRlcm4g
SlNCb29sCkpTX09iamVjdElzRnVuY3Rpb24oSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaik7
CgpleHRlcm4gSlNCb29sCkpTX0RlZmluZUZ1bmN0aW9ucyhKU0NvbnRleHQgKmN4LCBKU09iamVj
dCAqb2JqLCBKU0Z1bmN0aW9uU3BlYyAqZnMpOwoKZXh0ZXJuIEpTRnVuY3Rpb24gKgpKU19EZWZp
bmVGdW5jdGlvbihKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBjb25zdCBjaGFyICpuYW1l
LCBKU05hdGl2ZSBjYWxsLAogICAgICAgICAgICAgICAgICB1aW50TiBuYXJncywgdWludE4gYXR0
cnMpOwoKZXh0ZXJuIEpTT2JqZWN0ICoKSlNfQ2xvbmVGdW5jdGlvbk9iamVjdChKU0NvbnRleHQg
KmN4LCBKU09iamVjdCAqZnVub2JqLCBKU09iamVjdCAqcGFyZW50KTsKIyAxMTU5ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvanMvanNhcGkuaCIKZXh0ZXJuIEpTQm9vbApKU19CdWZmZXJJc0NvbXBp
bGFibGVVbml0KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciAqYnl0ZXMsIHNpemVfdCBsZW5ndGgpOwojIDExNzAgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9qcy9qc2FwaS5oIgpleHRlcm4gSlNTY3JpcHQgKgpKU19Db21waWxl
U2NyaXB0KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosCiAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciAqYnl0ZXMsIHNpemVfdCBsZW5ndGgsCiAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqZmlsZW5hbWUsIHVpbnROIGxpbmVubyk7CgpleHRlcm4gSlNTY3JpcHQgKgpKU19Db21waWxl
U2NyaXB0Rm9yUHJpbmNpcGFscyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBKU1ByaW5jaXBhbHMgKnByaW5jaXBhbHMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJ5dGVzLCBzaXplX3QgbGVuZ3RoLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSwgdWludE4g
bGluZW5vKTsKCmV4dGVybiBKU1NjcmlwdCAqCkpTX0NvbXBpbGVVQ1NjcmlwdChKU0NvbnRleHQg
KmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAgICAgY29uc3QganNjaGFyICpjaGFy
cywgc2l6ZV90IGxlbmd0aCwKICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1l
LCB1aW50TiBsaW5lbm8pOwoKZXh0ZXJuIEpTU2NyaXB0ICoKSlNfQ29tcGlsZVVDU2NyaXB0Rm9y
UHJpbmNpcGFscyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEpTUHJpbmNpcGFscyAqcHJpbmNpcGFscywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBqc2NoYXIgKmNoYXJzLCBzaXplX3QgbGVuZ3RoLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCB1aW50TiBs
aW5lbm8pOwoKZXh0ZXJuIEpTU2NyaXB0ICoKSlNfQ29tcGlsZUZpbGUoSlNDb250ZXh0ICpjeCwg
SlNPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqZmlsZW5hbWUpOwoKZXh0ZXJuIEpTU2NyaXB0ICoK
SlNfQ29tcGlsZUZpbGVIYW5kbGUoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgY29uc3Qg
Y2hhciAqZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgIEZJTEUgKmZoKTsKCmV4dGVybiBK
U1NjcmlwdCAqCkpTX0NvbXBpbGVGaWxlSGFuZGxlRm9yUHJpbmNpcGFscyhKU0NvbnRleHQgKmN4
LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAqZmlsZW5hbWUsIEZJTEUgKmZoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSlNQcmluY2lwYWxzICpwcmluY2lwYWxzKTsKIyAxMjIwICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvanMvanNhcGkuaCIKZXh0ZXJuIEpTT2JqZWN0ICoKSlNfTmV3U2NyaXB0T2JqZWN0KEpTQ29u
dGV4dCAqY3gsIEpTU2NyaXB0ICpzY3JpcHQpOwoKCgoKCmV4dGVybiBKU09iamVjdCAqCkpTX0dl
dFNjcmlwdE9iamVjdChKU1NjcmlwdCAqc2NyaXB0KTsKCmV4dGVybiB2b2lkCkpTX0Rlc3Ryb3lT
Y3JpcHQoSlNDb250ZXh0ICpjeCwgSlNTY3JpcHQgKnNjcmlwdCk7CgpleHRlcm4gSlNGdW5jdGlv
biAqCkpTX0NvbXBpbGVGdW5jdGlvbihKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBjb25z
dCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgdWludE4gbmFyZ3MsIGNvbnN0IGNoYXIg
KiphcmduYW1lcywKICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJ5dGVzLCBzaXplX3Qg
bGVuZ3RoLAogICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsIHVpbnROIGxp
bmVubyk7CgpleHRlcm4gSlNGdW5jdGlvbiAqCkpTX0NvbXBpbGVGdW5jdGlvbkZvclByaW5jaXBh
bHMoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBKU1ByaW5jaXBhbHMgKnByaW5jaXBhbHMsIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludE4gbmFyZ3MsIGNvbnN0IGNoYXIgKiphcmdu
YW1lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpieXRlcywg
c2l6ZV90IGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
ICpmaWxlbmFtZSwgdWludE4gbGluZW5vKTsKCmV4dGVybiBKU0Z1bmN0aW9uICoKSlNfQ29tcGls
ZVVDRnVuY3Rpb24oSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqbmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgdWludE4gbmFyZ3MsIGNvbnN0IGNoYXIgKiphcmduYW1l
cywKICAgICAgICAgICAgICAgICAgICAgY29uc3QganNjaGFyICpjaGFycywgc2l6ZV90IGxlbmd0
aCwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsIHVpbnROIGxpbmVu
byk7CgpleHRlcm4gSlNGdW5jdGlvbiAqCkpTX0NvbXBpbGVVQ0Z1bmN0aW9uRm9yUHJpbmNpcGFs
cyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSlNQcmluY2lwYWxzICpwcmluY2lwYWxzLCBjb25zdCBjaGFyICpuYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludE4gbmFyZ3MsIGNvbnN0IGNoYXIgKiph
cmduYW1lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGpzY2hhciAq
Y2hhcnMsIHNpemVfdCBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICpmaWxlbmFtZSwgdWludE4gbGluZW5vKTsKCmV4dGVybiBKU1N0cmluZyAqCkpT
X0RlY29tcGlsZVNjcmlwdChKU0NvbnRleHQgKmN4LCBKU1NjcmlwdCAqc2NyaXB0LCBjb25zdCBj
aGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgdWludE4gaW5kZW50KTsKCgoKCgoKCmV4dGVy
biBKU1N0cmluZyAqCkpTX0RlY29tcGlsZUZ1bmN0aW9uKEpTQ29udGV4dCAqY3gsIEpTRnVuY3Rp
b24gKmZ1biwgdWludE4gaW5kZW50KTsKCmV4dGVybiBKU1N0cmluZyAqCkpTX0RlY29tcGlsZUZ1
bmN0aW9uQm9keShKU0NvbnRleHQgKmN4LCBKU0Z1bmN0aW9uICpmdW4sIHVpbnROIGluZGVudCk7
CiMgMTMxMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzYXBpLmgiCmV4dGVybiBKU0Jvb2wK
SlNfRXhlY3V0ZVNjcmlwdChKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBKU1NjcmlwdCAq
c2NyaXB0LCBqc3ZhbCAqcnZhbCk7CgoKCgoKdHlwZWRlZiBlbnVtIEpTRXhlY1BhcnQgeyBKU0VY
RUNfUFJPTE9HLCBKU0VYRUNfTUFJTiB9IEpTRXhlY1BhcnQ7CgpleHRlcm4gSlNCb29sCkpTX0V4
ZWN1dGVTY3JpcHRQYXJ0KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIEpTU2NyaXB0ICpz
Y3JpcHQsCiAgICAgICAgICAgICAgICAgICAgIEpTRXhlY1BhcnQgcGFydCwganN2YWwgKnJ2YWwp
OwoKZXh0ZXJuIEpTQm9vbApKU19FdmFsdWF0ZVNjcmlwdChKU0NvbnRleHQgKmN4LCBKU09iamVj
dCAqb2JqLAogICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpieXRlcywgdWludE4gbGVuZ3Ro
LAogICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSwgdWludE4gbGluZW5vLAog
ICAgICAgICAgICAgICAgICBqc3ZhbCAqcnZhbCk7CgpleHRlcm4gSlNCb29sCkpTX0V2YWx1YXRl
U2NyaXB0Rm9yUHJpbmNpcGFscyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSlNQcmluY2lwYWxzICpwcmluY2lwYWxzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYnl0ZXMsIHVpbnROIGxlbmd0aCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCB1aW50
TiBsaW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc3ZhbCAqcnZhbCk7Cgpl
eHRlcm4gSlNCb29sCkpTX0V2YWx1YXRlVUNTY3JpcHQoSlNDb250ZXh0ICpjeCwgSlNPYmplY3Qg
Km9iaiwKICAgICAgICAgICAgICAgICAgICBjb25zdCBqc2NoYXIgKmNoYXJzLCB1aW50TiBsZW5n
dGgsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsIHVpbnROIGxpbmVu
bywKICAgICAgICAgICAgICAgICAgICBqc3ZhbCAqcnZhbCk7CgpleHRlcm4gSlNCb29sCkpTX0V2
YWx1YXRlVUNTY3JpcHRGb3JQcmluY2lwYWxzKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmos
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTUHJpbmNpcGFscyAqcHJpbmNpcGFs
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QganNjaGFyICpjaGFycywg
dWludE4gbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
ICpmaWxlbmFtZSwgdWludE4gbGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqc3ZhbCAqcnZhbCk7CgpleHRlcm4gSlNCb29sCkpTX0NhbGxGdW5jdGlvbihKU0NvbnRleHQg
KmN4LCBKU09iamVjdCAqb2JqLCBKU0Z1bmN0aW9uICpmdW4sIHVpbnROIGFyZ2MsCiAgICAgICAg
ICAgICAgICBqc3ZhbCAqYXJndiwganN2YWwgKnJ2YWwpOwoKZXh0ZXJuIEpTQm9vbApKU19DYWxs
RnVuY3Rpb25OYW1lKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKm5h
bWUsIHVpbnROIGFyZ2MsCiAgICAgICAgICAgICAgICAgICAganN2YWwgKmFyZ3YsIGpzdmFsICpy
dmFsKTsKCmV4dGVybiBKU0Jvb2wKSlNfQ2FsbEZ1bmN0aW9uVmFsdWUoSlNDb250ZXh0ICpjeCwg
SlNPYmplY3QgKm9iaiwganN2YWwgZnZhbCwgdWludE4gYXJnYywKICAgICAgICAgICAgICAgICAg
ICAganN2YWwgKmFyZ3YsIGpzdmFsICpydmFsKTsKCmV4dGVybiBKU0JyYW5jaENhbGxiYWNrCkpT
X1NldEJyYW5jaENhbGxiYWNrKEpTQ29udGV4dCAqY3gsIEpTQnJhbmNoQ2FsbGJhY2sgY2IpOwoK
ZXh0ZXJuIEpTQm9vbApKU19Jc1J1bm5pbmcoSlNDb250ZXh0ICpjeCk7CgpleHRlcm4gSlNCb29s
CkpTX0lzQ29uc3RydWN0aW5nKEpTQ29udGV4dCAqY3gpOwoKCgoKCgpleHRlcm4gSlNCb29sCkpT
X0lzQXNzaWduaW5nKEpTQ29udGV4dCAqY3gpOwojIDEzODYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9qcy9qc2FwaS5oIgpleHRlcm4gdm9pZApKU19TZXRDYWxsUmV0dXJuVmFsdWUyKEpTQ29udGV4
dCAqY3gsIGpzdmFsIHYpOwojIDE0MDAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2FwaS5o
IgpleHRlcm4gSlNTdHJpbmcgKgpKU19OZXdTdHJpbmcoSlNDb250ZXh0ICpjeCwgY2hhciAqYnl0
ZXMsIHNpemVfdCBsZW5ndGgpOwoKZXh0ZXJuIEpTU3RyaW5nICoKSlNfTmV3U3RyaW5nQ29weU4o
SlNDb250ZXh0ICpjeCwgY29uc3QgY2hhciAqcywgc2l6ZV90IG4pOwoKZXh0ZXJuIEpTU3RyaW5n
ICoKSlNfTmV3U3RyaW5nQ29weVooSlNDb250ZXh0ICpjeCwgY29uc3QgY2hhciAqcyk7CgpleHRl
cm4gSlNTdHJpbmcgKgpKU19JbnRlcm5TdHJpbmcoSlNDb250ZXh0ICpjeCwgY29uc3QgY2hhciAq
cyk7CgpleHRlcm4gSlNTdHJpbmcgKgpKU19OZXdVQ1N0cmluZyhKU0NvbnRleHQgKmN4LCBqc2No
YXIgKmNoYXJzLCBzaXplX3QgbGVuZ3RoKTsKCmV4dGVybiBKU1N0cmluZyAqCkpTX05ld1VDU3Ry
aW5nQ29weU4oSlNDb250ZXh0ICpjeCwgY29uc3QganNjaGFyICpzLCBzaXplX3Qgbik7CgpleHRl
cm4gSlNTdHJpbmcgKgpKU19OZXdVQ1N0cmluZ0NvcHlaKEpTQ29udGV4dCAqY3gsIGNvbnN0IGpz
Y2hhciAqcyk7CgpleHRlcm4gSlNTdHJpbmcgKgpKU19JbnRlcm5VQ1N0cmluZ04oSlNDb250ZXh0
ICpjeCwgY29uc3QganNjaGFyICpzLCBzaXplX3QgbGVuZ3RoKTsKCmV4dGVybiBKU1N0cmluZyAq
CkpTX0ludGVyblVDU3RyaW5nKEpTQ29udGV4dCAqY3gsIGNvbnN0IGpzY2hhciAqcyk7CgpleHRl
cm4gY2hhciAqCkpTX0dldFN0cmluZ0J5dGVzKEpTU3RyaW5nICpzdHIpOwoKZXh0ZXJuIGpzY2hh
ciAqCkpTX0dldFN0cmluZ0NoYXJzKEpTU3RyaW5nICpzdHIpOwoKZXh0ZXJuIHNpemVfdApKU19H
ZXRTdHJpbmdMZW5ndGgoSlNTdHJpbmcgKnN0cik7CgpleHRlcm4gaW50TgpKU19Db21wYXJlU3Ry
aW5ncyhKU1N0cmluZyAqc3RyMSwgSlNTdHJpbmcgKnN0cjIpOwojIDE0NTggIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9qcy9qc2FwaS5oIgpleHRlcm4gSlNTdHJpbmcgKgpKU19OZXdHcm93YWJsZVN0
cmluZyhKU0NvbnRleHQgKmN4LCBqc2NoYXIgKmNoYXJzLCBzaXplX3QgbGVuZ3RoKTsKCgoKCgoK
ZXh0ZXJuIEpTU3RyaW5nICoKSlNfTmV3RGVwZW5kZW50U3RyaW5nKEpTQ29udGV4dCAqY3gsIEpT
U3RyaW5nICpzdHIsIHNpemVfdCBzdGFydCwKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBs
ZW5ndGgpOwojIDE0NzcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2FwaS5oIgpleHRlcm4g
SlNTdHJpbmcgKgpKU19Db25jYXRTdHJpbmdzKEpTQ29udGV4dCAqY3gsIEpTU3RyaW5nICpsZWZ0
LCBKU1N0cmluZyAqcmlnaHQpOwoKCgoKCmV4dGVybiBjb25zdCBqc2NoYXIgKgpKU19VbmRlcGVu
ZFN0cmluZyhKU0NvbnRleHQgKmN4LCBKU1N0cmluZyAqc3RyKTsKCgoKCgpleHRlcm4gSlNCb29s
CkpTX01ha2VTdHJpbmdJbW11dGFibGUoSlNDb250ZXh0ICpjeCwgSlNTdHJpbmcgKnN0cik7CgoK
CgoKCnN0cnVjdCBKU0xvY2FsZUNhbGxiYWNrcyB7CiAgICBKU0xvY2FsZVRvVXBwZXJDYXNlIGxv
Y2FsZVRvVXBwZXJDYXNlOwogICAgSlNMb2NhbGVUb0xvd2VyQ2FzZSBsb2NhbGVUb0xvd2VyQ2Fz
ZTsKICAgIEpTTG9jYWxlQ29tcGFyZSBsb2NhbGVDb21wYXJlOwp9OwoKCgoKCmV4dGVybiB2b2lk
CkpTX1NldExvY2FsZUNhbGxiYWNrcyhKU0NvbnRleHQgKmN4LCBKU0xvY2FsZUNhbGxiYWNrcyAq
Y2FsbGJhY2tzKTsKCgoKCgpleHRlcm4gSlNMb2NhbGVDYWxsYmFja3MgKgpKU19HZXRMb2NhbGVD
YWxsYmFja3MoSlNDb250ZXh0ICpjeCk7CiMgMTUzMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pz
L2pzYXBpLmgiCmV4dGVybiB2b2lkCkpTX1JlcG9ydEVycm9yKEpTQ29udGV4dCAqY3gsIGNvbnN0
IGNoYXIgKmZvcm1hdCwgLi4uKTsKCgoKCmV4dGVybiB2b2lkCkpTX1JlcG9ydEVycm9yTnVtYmVy
KEpTQ29udGV4dCAqY3gsIEpTRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrLAogICAgICAgICAg
ICAgICAgICAgICB2b2lkICp1c2VyUmVmLCBjb25zdCB1aW50TiBlcnJvck51bWJlciwgLi4uKTsK
CgoKCmV4dGVybiB2b2lkCkpTX1JlcG9ydEVycm9yTnVtYmVyVUMoSlNDb250ZXh0ICpjeCwgSlNF
cnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVz
ZXJSZWYsIGNvbnN0IHVpbnROIGVycm9yTnVtYmVyLCAuLi4pOwoKCgoKCgoKZXh0ZXJuIEpTQm9v
bApKU19SZXBvcnRXYXJuaW5nKEpTQ29udGV4dCAqY3gsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4u
KTsKCmV4dGVybiBKU0Jvb2wKSlNfUmVwb3J0RXJyb3JGbGFnc0FuZE51bWJlcihKU0NvbnRleHQg
KmN4LCB1aW50TiBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU0Vycm9yQ2Fs
bGJhY2sgZXJyb3JDYWxsYmFjaywgdm9pZCAqdXNlclJlZiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1aW50TiBlcnJvck51bWJlciwgLi4uKTsKCmV4dGVybiBKU0Jvb2wKSlNf
UmVwb3J0RXJyb3JGbGFnc0FuZE51bWJlclVDKEpTQ29udGV4dCAqY3gsIHVpbnROIGZsYWdzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJh
Y2ssIHZvaWQgKnVzZXJSZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50TiBlcnJvck51bWJlciwgLi4uKTsKCgoKCmV4dGVybiB2b2lkCkpTX1JlcG9ydE91dE9mTWVt
b3J5KEpTQ29udGV4dCAqY3gpOwoKc3RydWN0IEpTRXJyb3JSZXBvcnQgewogICAgY29uc3QgY2hh
ciAqZmlsZW5hbWU7CiAgICB1aW50TiBsaW5lbm87CiAgICBjb25zdCBjaGFyICpsaW5lYnVmOwog
ICAgY29uc3QgY2hhciAqdG9rZW5wdHI7CiAgICBjb25zdCBqc2NoYXIgKnVjbGluZWJ1ZjsKICAg
IGNvbnN0IGpzY2hhciAqdWN0b2tlbnB0cjsKICAgIHVpbnROIGZsYWdzOwogICAgdWludE4gZXJy
b3JOdW1iZXI7CiAgICBjb25zdCBqc2NoYXIgKnVjbWVzc2FnZTsKICAgIGNvbnN0IGpzY2hhciAq
Km1lc3NhZ2VBcmdzOwp9OwojIDE2MDUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2FwaS5o
IgpleHRlcm4gSlNFcnJvclJlcG9ydGVyCkpTX1NldEVycm9yUmVwb3J0ZXIoSlNDb250ZXh0ICpj
eCwgSlNFcnJvclJlcG9ydGVyIGVyKTsKIyAxNjE3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMv
anNhcGkuaCIKZXh0ZXJuIEpTT2JqZWN0ICoKSlNfTmV3UmVnRXhwT2JqZWN0KEpTQ29udGV4dCAq
Y3gsIGNoYXIgKmJ5dGVzLCBzaXplX3QgbGVuZ3RoLCB1aW50TiBmbGFncyk7CgpleHRlcm4gSlNP
YmplY3QgKgpKU19OZXdVQ1JlZ0V4cE9iamVjdChKU0NvbnRleHQgKmN4LCBqc2NoYXIgKmNoYXJz
LCBzaXplX3QgbGVuZ3RoLCB1aW50TiBmbGFncyk7CgpleHRlcm4gdm9pZApKU19TZXRSZWdFeHBJ
bnB1dChKU0NvbnRleHQgKmN4LCBKU1N0cmluZyAqaW5wdXQsIEpTQm9vbCBtdWx0aWxpbmUpOwoK
ZXh0ZXJuIHZvaWQKSlNfQ2xlYXJSZWdFeHBTdGF0aWNzKEpTQ29udGV4dCAqY3gpOwoKZXh0ZXJu
IHZvaWQKSlNfQ2xlYXJSZWdFeHBSb290cyhKU0NvbnRleHQgKmN4KTsKCgoKCgpleHRlcm4gSlNC
b29sCkpTX0lzRXhjZXB0aW9uUGVuZGluZyhKU0NvbnRleHQgKmN4KTsKCmV4dGVybiBKU0Jvb2wK
SlNfR2V0UGVuZGluZ0V4Y2VwdGlvbihKU0NvbnRleHQgKmN4LCBqc3ZhbCAqdnApOwoKZXh0ZXJu
IHZvaWQKSlNfU2V0UGVuZGluZ0V4Y2VwdGlvbihKU0NvbnRleHQgKmN4LCBqc3ZhbCB2KTsKCmV4
dGVybiB2b2lkCkpTX0NsZWFyUGVuZGluZ0V4Y2VwdGlvbihKU0NvbnRleHQgKmN4KTsKIyAxNjU5
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNhcGkuaCIKZXh0ZXJuIEpTRXhjZXB0aW9uU3Rh
dGUgKgpKU19TYXZlRXhjZXB0aW9uU3RhdGUoSlNDb250ZXh0ICpjeCk7CgpleHRlcm4gdm9pZApK
U19SZXN0b3JlRXhjZXB0aW9uU3RhdGUoSlNDb250ZXh0ICpjeCwgSlNFeGNlcHRpb25TdGF0ZSAq
c3RhdGUpOwoKZXh0ZXJuIHZvaWQKSlNfRHJvcEV4Y2VwdGlvblN0YXRlKEpTQ29udGV4dCAqY3gs
IEpTRXhjZXB0aW9uU3RhdGUgKnN0YXRlKTsKIyAxNjc1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
anMvanNhcGkuaCIKZXh0ZXJuIEpTRXJyb3JSZXBvcnQgKgpKU19FcnJvckZyb21FeGNlcHRpb24o
SlNDb250ZXh0ICpjeCwganN2YWwgdik7CiMgMTY5MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pz
L2pzYXBpLmgiCmV4dGVybiBpbnROCkpTX0dldENvbnRleHRUaHJlYWQoSlNDb250ZXh0ICpjeCk7
CgpleHRlcm4gaW50TgpKU19TZXRDb250ZXh0VGhyZWFkKEpTQ29udGV4dCAqY3gpOwoKZXh0ZXJu
IGludE4KSlNfQ2xlYXJDb250ZXh0VGhyZWFkKEpTQ29udGV4dCAqY3gpOwoKCgoKCn0KIyA0NiAi
bnNET01DbGFzc0luZm8uaCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jYXBzL25zSVNj
cmlwdFNlY3VyaXR5TWFuYWdlci5oIiAxCiMgMTQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jYXBz
L25zSVNjcmlwdFNlY3VyaXR5TWFuYWdlci5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9j
YXBzL25zSVByaW5jaXBhbC5oIiAxCiMgMTAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jYXBzL25z
SVByaW5jaXBhbC5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTZXJpYWxp
emFibGUuaCIgMQojIDE3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJU2VyaWFsaXph
YmxlLmgiCmNsYXNzIG5zSU9iamVjdElucHV0U3RyZWFtOwoKY2xhc3MgbnNJT2JqZWN0T3V0cHV0
U3RyZWFtOwojIDI5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJU2VyaWFsaXphYmxl
LmgiCmNsYXNzIG5zSVNlcmlhbGl6YWJsZSA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6
CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQg
PSB7MHg5MWNjYTk4MSwgMHhjMjZkLCAweDQ0YTgsIHsgMHhiZSwgMHhiZSwgMHhkOSwgMHhlZCwg
MHg0OCwgMHg5MSwgMHg1MCwgMHgzYSB9fTsgcmV0dXJuIGlpZDt9CiMgNDEgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS94cGNvbS9uc0lTZXJpYWxpemFibGUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFJl
YWQobnNJT2JqZWN0SW5wdXRTdHJlYW0gKmFJbnB1dFN0cmVhbSkgPSAwOwojIDUzICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUveHBjb20vbnNJU2VyaWFsaXphYmxlLmgiCiAgdmlydHVhbCBuc3Jlc3Vs
dCBXcml0ZShuc0lPYmplY3RPdXRwdXRTdHJlYW0gKmFPdXRwdXRTdHJlYW0pID0gMDsKCn07CiMg
MTEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jYXBzL25zSVByaW5jaXBhbC5oIiAyCgoKCgoKCnN0
cnVjdCBKU1ByaW5jaXBhbHM7CiMgMjYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jYXBzL25zSVBy
aW5jaXBhbC5oIgpjbGFzcyBuc0lQcmluY2lwYWwgOiBwdWJsaWMgbnNJU2VyaWFsaXphYmxlIHsK
IHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5z
SUlEIGlpZCA9IHsweGZmOTMxM2QwLCAweDI1ZTEsIDB4MTFkMiwgeyAweDgxLCAweDYwLCAweDAw
LCAweDYwLCAweDA4LCAweDExLCAweDlkLCAweDdhIH19OyByZXR1cm4gaWlkO30KCiAgZW51bSB7
IEVOQUJMRV9ERU5JRUQgPSAxIH07CgogIGVudW0geyBFTkFCTEVfVU5LTk9XTiA9IDIgfTsKCiAg
ZW51bSB7IEVOQUJMRV9XSVRIX1VTRVJfUEVSTUlTU0lPTiA9IDMgfTsKCiAgZW51bSB7IEVOQUJM
RV9HUkFOVEVEID0gNCB9OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBUb1N0cmluZyhjaGFyICoqX3Jl
dHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBUb1VzZXJWaXNpYmxlU3RyaW5nKGNoYXIg
KipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByZWZlcmVuY2VzKGNoYXIg
KipwcmVmTmFtZSwgY2hhciAqKmlkLCBjaGFyICoqZ3JhbnRlZExpc3QsIGNoYXIgKipkZW5pZWRM
aXN0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEVxdWFscyhuc0lQcmluY2lwYWwgKm90aGVy
LCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSGFzaFZhbHVlKFBS
VWludDMyICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEpTUHJpbmNpcGFs
cyhKU1ByaW5jaXBhbHMgKiAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDYW5F
bmFibGVDYXBhYmlsaXR5KGNvbnN0IGNoYXIgKmNhcGFiaWxpdHksIFBSSW50MTYgKl9yZXR2YWwp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q2FuRW5hYmxlQ2FwYWJpbGl0eShjb25zdCBj
aGFyICpjYXBhYmlsaXR5LCBQUkludDE2IGNhbkVuYWJsZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBJc0NhcGFiaWxpdHlFbmFibGVkKGNvbnN0IGNoYXIgKmNhcGFiaWxpdHksIHZvaWQgKiBh
bm5vdGF0aW9uLCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgRW5h
YmxlQ2FwYWJpbGl0eShjb25zdCBjaGFyICpjYXBhYmlsaXR5LCB2b2lkICogKmFubm90YXRpb24p
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmV2ZXJ0Q2FwYWJpbGl0eShjb25zdCBjaGFyICpj
YXBhYmlsaXR5LCB2b2lkICogKmFubm90YXRpb24pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
RGlzYWJsZUNhcGFiaWxpdHkoY29uc3QgY2hhciAqY2FwYWJpbGl0eSwgdm9pZCAqICphbm5vdGF0
aW9uKSA9IDA7Cgp9OwojIDE1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY2Fwcy9uc0lTY3JpcHRT
ZWN1cml0eU1hbmFnZXIuaCIgMgoKCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbm5l
Y3QvbnNJWFBDU2VjdXJpdHlNYW5hZ2VyLmgiIDEKIyAxOCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3hwY29ubmVjdC9uc0lYUENTZWN1cml0eU1hbmFnZXIuaCIKY2xhc3MgbnNJQ2xhc3NJbmZvOwoK
Y2xhc3MgbnNJWFBDTmF0aXZlQ2FsbENvbnRleHQ7CiMgMzAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS94cGNvbm5lY3QvbnNJWFBDU2VjdXJpdHlNYW5hZ2VyLmgiCmNsYXNzIG5zSVhQQ1NlY3VyaXR5
TWFuYWdlciA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBu
c0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgzMTQzMTQ0MCwgMHhm
MWNlLCAweDExZDIsIHsgMHg5OCwgMHg1YSwgMHgwMCwgMHg2MCwgMHgwOCwgMHg5NiwgMHgyNCwg
MHgyMiB9fTsgcmV0dXJuIGlpZDt9CgoKCgogIGVudW0geyBIT09LX0NSRUFURV9XUkFQUEVSID0g
MVUgfTsKCiAgZW51bSB7IEhPT0tfQ1JFQVRFX0lOU1RBTkNFID0gMlUgfTsKCiAgZW51bSB7IEhP
T0tfR0VUX1NFUlZJQ0UgPSA0VSB9OwoKICBlbnVtIHsgSE9PS19DQUxMX01FVEhPRCA9IDhVIH07
CgogIGVudW0geyBIT09LX0dFVF9QUk9QRVJUWSA9IDE2VSB9OwoKICBlbnVtIHsgSE9PS19TRVRf
UFJPUEVSVFkgPSAzMlUgfTsKCiAgZW51bSB7IEhPT0tfQUxMID0gNjNVIH07CiMgNjAgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS94cGNvbm5lY3QvbnNJWFBDU2VjdXJpdHlNYW5hZ2VyLmgiCiAgdmly
dHVhbCBuc3Jlc3VsdCBDYW5DcmVhdGVXcmFwcGVyKEpTQ29udGV4dCAqIGFKU0NvbnRleHQsIGNv
bnN0IG5zSUlEICYgYUlJRCwgbnNJU3VwcG9ydHMgKmFPYmosIG5zSUNsYXNzSW5mbyAqYUNsYXNz
SW5mbywgdm9pZCAqICphUG9saWN5KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENhbkNyZWF0
ZUluc3RhbmNlKEpTQ29udGV4dCAqIGFKU0NvbnRleHQsIGNvbnN0IG5zQ0lEICYgYUNJRCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDYW5HZXRTZXJ2aWNlKEpTQ29udGV4dCAqIGFKU0NvbnRl
eHQsIGNvbnN0IG5zQ0lEICYgYUNJRCkgPSAwOwoKICBlbnVtIHsgQUNDRVNTX0NBTExfTUVUSE9E
ID0gMFUgfTsKCiAgZW51bSB7IEFDQ0VTU19HRVRfUFJPUEVSVFkgPSAxVSB9OwoKICBlbnVtIHsg
QUNDRVNTX1NFVF9QUk9QRVJUWSA9IDJVIH07CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENhbkFjY2Vz
cyhQUlVpbnQzMiBhQWN0aW9uLCBuc0lYUENOYXRpdmVDYWxsQ29udGV4dCAqYUNhbGxDb250ZXh0
LCBKU0NvbnRleHQgKiBhSlNDb250ZXh0LCBKU09iamVjdCAqIGFKU09iamVjdCwgbnNJU3VwcG9y
dHMgKmFPYmosIG5zSUNsYXNzSW5mbyAqYUNsYXNzSW5mbywganN2YWwgYU5hbWUsIHZvaWQgKiAq
YVBvbGljeSkgPSAwOwoKfTsKIyAxOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NhcHMvbnNJU2Ny
aXB0U2VjdXJpdHlNYW5hZ2VyLmgiIDIKCgoKCgoKY2xhc3MgbnNJVVJJOwojIDM1ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvY2Fwcy9uc0lTY3JpcHRTZWN1cml0eU1hbmFnZXIuaCIKY2xhc3MgbnNJ
U2NyaXB0U2VjdXJpdHlNYW5hZ2VyIDogcHVibGljIG5zSVhQQ1NlY3VyaXR5TWFuYWdlciB7CiBw
dWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJ
RCBpaWQgPSB7MHg1OGRmNTc4MCwgMHg4MDA2LCAweDExZDIsIHsgMHhiZCwgMHg5MSwgMHgwMCwg
MHg4MCwgMHg1ZiwgMHg4YSwgMHhlMywgMHhmNCB9fTsgcmV0dXJuIGlpZDt9CgoKCgoKICB2aXJ0
dWFsIG5zcmVzdWx0IENoZWNrUHJvcGVydHlBY2Nlc3MoSlNDb250ZXh0ICogYUpTQ29udGV4dCwg
SlNPYmplY3QgKiBhSlNPYmplY3QsIGNvbnN0IGNoYXIgKmFDbGFzc05hbWUsIGpzdmFsIGFQcm9w
ZXJ0eSwgUFJVaW50MzIgYUFjdGlvbikgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDaGVj
a0Nvbm5lY3QoSlNDb250ZXh0ICogYUpTQ29udGV4dCwgbnNJVVJJICphVGFyZ2V0VVJJLCBjb25z
dCBjaGFyICphQ2xhc3NOYW1lLCBjb25zdCBjaGFyICphUHJvcGVydHkpID0gMDsKIyA2MiAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2NhcHMvbnNJU2NyaXB0U2VjdXJpdHlNYW5hZ2VyLmgiCiAgdmly
dHVhbCBuc3Jlc3VsdCBDaGVja0xvYWRVUklGcm9tU2NyaXB0KEpTQ29udGV4dCAqIGN4LCBuc0lV
UkkgKnVyaSkgPSAwOwoKCgoKICBlbnVtIHsgU1RBTkRBUkQgPSAwVSB9OwoKICBlbnVtIHsgRElT
QUxMT1dfRlJPTV9NQUlMID0gMVUgfTsKCiAgZW51bSB7IEFMTE9XX0NIUk9NRSA9IDJVIH07CiMg
ODQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jYXBzL25zSVNjcmlwdFNlY3VyaXR5TWFuYWdlci5o
IgogIHZpcnR1YWwgbnNyZXN1bHQgQ2hlY2tMb2FkVVJJKG5zSVVSSSAqZnJvbSwgbnNJVVJJICp1
cmksIFBSVWludDMyIGZsYWdzKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDaGVja0xv
YWRVUklTdHIoY29uc3QgY2hhciAqZnJvbSwgY29uc3QgY2hhciAqdXJpLCBQUlVpbnQzMiBmbGFn
cykgPSAwOwojIDEwNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NhcHMvbnNJU2NyaXB0U2VjdXJp
dHlNYW5hZ2VyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBDaGVja0Z1bmN0aW9uQWNjZXNzKEpTQ29u
dGV4dCAqIGN4LCB2b2lkICogZnVuT2JqLCB2b2lkICogdGFyZ2V0T2JqKSA9IDA7CgoKCgoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBDYW5FeGVjdXRlU2NyaXB0cyhKU0NvbnRleHQgKiBjeCwgbnNJUHJp
bmNpcGFsICpwcmluY2lwYWwsIFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCgoKCgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldFN1YmplY3RQcmluY2lwYWwobnNJUHJpbmNpcGFsICoqX3JldHZhbCkgPSAw
OwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTeXN0ZW1QcmluY2lwYWwobnNJUHJpbmNpcGFs
ICoqX3JldHZhbCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDZXJ0aWZpY2F0ZVBy
aW5jaXBhbChjb25zdCBjaGFyICpDZXJ0SUQsIG5zSVByaW5jaXBhbCAqKl9yZXR2YWwpID0gMDsK
CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvZGViYXNlUHJpbmNpcGFsKG5zSVVSSSAqYVVS
SSwgbnNJUHJpbmNpcGFsICoqX3JldHZhbCkgPSAwOwojIDE0NyAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2NhcHMvbnNJU2NyaXB0U2VjdXJpdHlNYW5hZ2VyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBS
ZXF1ZXN0Q2FwYWJpbGl0eShuc0lQcmluY2lwYWwgKnByaW5jaXBhbCwgY29uc3QgY2hhciAqY2Fw
YWJpbGl0eSwgUFJJbnQxNiAqcmVzdWx0KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IElz
Q2FwYWJpbGl0eUVuYWJsZWQoY29uc3QgY2hhciAqY2FwYWJpbGl0eSwgUFJCb29sICpfcmV0dmFs
KSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBFbmFibGVDYXBhYmlsaXR5KGNvbnN0IGNo
YXIgKmNhcGFiaWxpdHkpID0gMDsKCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZXZlcnRDYXBh
YmlsaXR5KGNvbnN0IGNoYXIgKmNhcGFiaWxpdHkpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVz
dWx0IERpc2FibGVDYXBhYmlsaXR5KGNvbnN0IGNoYXIgKmNhcGFiaWxpdHkpID0gMDsKCgoKCgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldENhbkVuYWJsZUNhcGFiaWxpdHkoY29uc3QgY2hhciAqY2Vy
dGlmaWNhdGVJRCwgY29uc3QgY2hhciAqY2FwYWJpbGl0eSwgUFJJbnQxNiBjYW5FbmFibGUpID0g
MDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0T2JqZWN0UHJpbmNpcGFsKEpTQ29udGV4dCAq
IGN4LCBKU09iamVjdCAqIG9iaiwgbnNJUHJpbmNpcGFsICoqX3JldHZhbCkgPSAwOwoKCgoKCgog
IHZpcnR1YWwgbnNyZXN1bHQgU3ViamVjdFByaW5jaXBhbElzU3lzdGVtKFBSQm9vbCAqX3JldHZh
bCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ2hlY2tTYW1lT3JpZ2luKEpTQ29udGV4
dCAqIGFKU0NvbnRleHQsIG5zSVVSSSAqYVRhcmdldFVSSSkgPSAwOwoKCgoKCgogIHZpcnR1YWwg
bnNyZXN1bHQgQ2hlY2tTYW1lT3JpZ2luVVJJKG5zSVVSSSAqYVNvdXJjZVVSSSwgbnNJVVJJICph
VGFyZ2V0VVJJKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDaGVja1NhbWVPcmlnaW5Q
cmluY2lwYWwobnNJUHJpbmNpcGFsICphU291cmNlUHJpbmNpcGFsLCBuc0lQcmluY2lwYWwgKmFU
YXJnZXRQcmluY2lwYWwpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByaW5jaXBh
bEZyb21Db250ZXh0KEpTQ29udGV4dCAqIGN4LCBuc0lQcmluY2lwYWwgKipfcmV0dmFsKSA9IDA7
Cgp9OwojIDQ3ICJuc0RPTUNsYXNzSW5mby5oIiAyCgpjbGFzcyBuc0lET01XaW5kb3c7CmNsYXNz
IG5zSURPTU5TSFRNTE9wdGlvbkNvbGxlY3Rpb247CmNsYXNzIG5zSVBsdWdpbkluc3RhbmNlOwpj
bGFzcyBuc0lGb3JtOwoKc3RydWN0IG5zRE9NQ2xhc3NJbmZvRGF0YTsKCnR5cGVkZWYgbnNJQ2xh
c3NJbmZvKiAoKm5zRE9NQ2xhc3NJbmZvQ29uc3RydWN0b3JGbmMpCiAgKG5zRE9NQ2xhc3NJbmZv
RGF0YSogYURhdGEpOwoKCnN0cnVjdCBuc0RPTUNsYXNzSW5mb0RhdGEKewogIGNvbnN0IGNoYXIg
Km1OYW1lOwogIHVuaW9uIHsKICAgIG5zRE9NQ2xhc3NJbmZvQ29uc3RydWN0b3JGbmMgbUNvbnN0
cnVjdG9yRnB0cjsKICAgIG5zRE9NQ2xhc3NJbmZvRXh0ZXJuYWxDb25zdHJ1Y3RvckZuYyBtRXh0
ZXJuYWxDb25zdHJ1Y3RvckZwdHI7CiAgfSB1OwogIG5zSUNsYXNzSW5mbyAqbUNhY2hlZENsYXNz
SW5mbzsKCiAgY29uc3QgbnNJSUQgKm1Qcm90b0NoYWluSW50ZXJmYWNlOwogIGNvbnN0IG5zSUlE
ICoqbUludGVyZmFjZXM7CiAgUFJVaW50MzIgbVNjcmlwdGFibGVGbGFncyA6IDMxOwogIFBSQm9v
bCBtSGFzQ2xhc3NJbnRlcmZhY2UgOiAxOwoKCgp9OwoKc3RydWN0IG5zRXh0ZXJuYWxET01DbGFz
c0luZm9EYXRhIDogcHVibGljIG5zRE9NQ2xhc3NJbmZvRGF0YQp7CiAgY29uc3QgbnNDSUQgKm1D
b25zdHJ1Y3RvckNJRDsKfTsKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgUHRyQml0czsKIyA5MyAi
bnNET01DbGFzc0luZm8uaCIKY2xhc3MgbnNET01DbGFzc0luZm8gOiBwdWJsaWMgbnNJWFBDU2Ny
aXB0YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgbnNJQ2xhc3NJbmZvCnsKcHVi
bGljOgogIG5zRE9NQ2xhc3NJbmZvKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpOwogIHZpcnR1
YWwgfm5zRE9NQ2xhc3NJbmZvKCk7CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q2xhc3NOYW1lKGNo
YXIgKiAqYUNsYXNzTmFtZSk7IHZpcnR1YWwgbnNyZXN1bHQgR2V0U2NyaXB0YWJsZUZsYWdzKFBS
VWludDMyICphU2NyaXB0YWJsZUZsYWdzKTsgdmlydHVhbCBuc3Jlc3VsdCBQcmVDcmVhdGUobnNJ
U3VwcG9ydHMgKm5hdGl2ZU9iaiwgSlNDb250ZXh0ICogY3gsIEpTT2JqZWN0ICogZ2xvYmFsT2Jq
LCBKU09iamVjdCAqICpwYXJlbnRPYmopOyB2aXJ0dWFsIG5zcmVzdWx0IENyZWF0ZShuc0lYUENv
bm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKiBjeCwgSlNPYmplY3QgKiBv
YmopOyB2aXJ0dWFsIG5zcmVzdWx0IFBvc3RDcmVhdGUobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2
ZSAqd3JhcHBlciwgSlNDb250ZXh0ICogY3gsIEpTT2JqZWN0ICogb2JqKTsgdmlydHVhbCBuc3Jl
c3VsdCBBZGRQcm9wZXJ0eShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0Nv
bnRleHQgKiBjeCwgSlNPYmplY3QgKiBvYmosIGpzdmFsIGlkLCBqc3ZhbCAqIHZwLCBQUkJvb2wg
Kl9yZXR2YWwpOyB2aXJ0dWFsIG5zcmVzdWx0IERlbFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBw
ZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqIGN4LCBKU09iamVjdCAqIG9iaiwganN2YWwg
aWQsIGpzdmFsICogdnAsIFBSQm9vbCAqX3JldHZhbCk7IHZpcnR1YWwgbnNyZXN1bHQgR2V0UHJv
cGVydHkobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICogY3gs
IEpTT2JqZWN0ICogb2JqLCBqc3ZhbCBpZCwganN2YWwgKiB2cCwgUFJCb29sICpfcmV0dmFsKTsg
dmlydHVhbCBuc3Jlc3VsdCBTZXRQcm9wZXJ0eShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3
cmFwcGVyLCBKU0NvbnRleHQgKiBjeCwgSlNPYmplY3QgKiBvYmosIGpzdmFsIGlkLCBqc3ZhbCAq
IHZwLCBQUkJvb2wgKl9yZXR2YWwpOyB2aXJ0dWFsIG5zcmVzdWx0IEVudW1lcmF0ZShuc0lYUENv
bm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKiBjeCwgSlNPYmplY3QgKiBv
YmosIFBSQm9vbCAqX3JldHZhbCk7IHZpcnR1YWwgbnNyZXN1bHQgTmV3RW51bWVyYXRlKG5zSVhQ
Q29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqIGN4LCBKU09iamVjdCAq
IG9iaiwgUFJVaW50MzIgZW51bV9vcCwganN2YWwgKiBzdGF0ZXAsIGpzaWQgKmlkcCwgUFJCb29s
ICpfcmV0dmFsKTsgdmlydHVhbCBuc3Jlc3VsdCBOZXdSZXNvbHZlKG5zSVhQQ29ubmVjdFdyYXBw
ZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqIGN4LCBKU09iamVjdCAqIG9iaiwganN2YWwg
aWQsIFBSVWludDMyIGZsYWdzLCBKU09iamVjdCAqICpvYmpwLCBQUkJvb2wgKl9yZXR2YWwpOyB2
aXJ0dWFsIG5zcmVzdWx0IENvbnZlcnQobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBl
ciwgSlNDb250ZXh0ICogY3gsIEpTT2JqZWN0ICogb2JqLCBQUlVpbnQzMiB0eXBlLCBqc3ZhbCAq
IHZwLCBQUkJvb2wgKl9yZXR2YWwpOyB2aXJ0dWFsIG5zcmVzdWx0IEZpbmFsaXplKG5zSVhQQ29u
bmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqIGN4LCBKU09iamVjdCAqIG9i
aik7IHZpcnR1YWwgbnNyZXN1bHQgQ2hlY2tBY2Nlc3MobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2
ZSAqd3JhcHBlciwgSlNDb250ZXh0ICogY3gsIEpTT2JqZWN0ICogb2JqLCBqc3ZhbCBpZCwgUFJV
aW50MzIgbW9kZSwganN2YWwgKiB2cCwgUFJCb29sICpfcmV0dmFsKTsgdmlydHVhbCBuc3Jlc3Vs
dCBDYWxsKG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqIGN4
LCBKU09iamVjdCAqIG9iaiwgUFJVaW50MzIgYXJnYywganN2YWwgKiBhcmd2LCBqc3ZhbCAqIHZw
LCBQUkJvb2wgKl9yZXR2YWwpOyB2aXJ0dWFsIG5zcmVzdWx0IENvbnN0cnVjdChuc0lYUENvbm5l
Y3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKiBjeCwgSlNPYmplY3QgKiBvYmos
IFBSVWludDMyIGFyZ2MsIGpzdmFsICogYXJndiwganN2YWwgKiB2cCwgUFJCb29sICpfcmV0dmFs
KTsgdmlydHVhbCBuc3Jlc3VsdCBIYXNJbnN0YW5jZShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZl
ICp3cmFwcGVyLCBKU0NvbnRleHQgKiBjeCwgSlNPYmplY3QgKiBvYmosIGpzdmFsIHZhbCwgUFJC
b29sICpicCwgUFJCb29sICpfcmV0dmFsKTsgdmlydHVhbCBuc3Jlc3VsdCBNYXJrKG5zSVhQQ29u
bmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqIGN4LCBKU09iamVjdCAqIG9i
aiwgdm9pZCAqIGFyZywgUFJVaW50MzIgKl9yZXR2YWwpOwoKICBwdWJsaWM6IHZpcnR1YWwgbnNy
ZXN1bHQgUXVlcnlJbnRlcmZhY2UoY29uc3QgbnNJSUQmIGFJSUQsIHZvaWQqKiBhSW5zdGFuY2VQ
dHIpOyB2aXJ0dWFsIG5zcmVmY250IEFkZFJlZih2b2lkKTsgdmlydHVhbCBuc3JlZmNudCBSZWxl
YXNlKHZvaWQpOyBwcm90ZWN0ZWQ6IG5zQXV0b1JlZkNudCBtUmVmQ250OyBwdWJsaWM6CgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0SW50ZXJmYWNlcyhQUlVpbnQzMiAqY291bnQsIG5zSUlEICogKiph
cnJheSk7IHZpcnR1YWwgbnNyZXN1bHQgR2V0SGVscGVyRm9yTGFuZ3VhZ2UoUFJVaW50MzIgbGFu
Z3VhZ2UsIG5zSVN1cHBvcnRzICoqX3JldHZhbCk7IHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29udHJh
Y3RJRChjaGFyICogKmFDb250cmFjdElEKTsgdmlydHVhbCBuc3Jlc3VsdCBHZXRDbGFzc0Rlc2Ny
aXB0aW9uKGNoYXIgKiAqYUNsYXNzRGVzY3JpcHRpb24pOyB2aXJ0dWFsIG5zcmVzdWx0IEdldENs
YXNzSUQobnNDSUQgKiAqYUNsYXNzSUQpOyB2aXJ0dWFsIG5zcmVzdWx0IEdldEltcGxlbWVudGF0
aW9uTGFuZ3VhZ2UoUFJVaW50MzIgKmFJbXBsZW1lbnRhdGlvbkxhbmd1YWdlKTsgdmlydHVhbCBu
c3Jlc3VsdCBHZXRGbGFncyhQUlVpbnQzMiAqYUZsYWdzKTsgdmlydHVhbCBuc3Jlc3VsdCBHZXRD
bGFzc0lETm9BbGxvYyhuc0NJRCAqYUNsYXNzSUROb0FsbG9jKTsKIyAxMTUgIm5zRE9NQ2xhc3NJ
bmZvLmgiCiAgc3RhdGljIG5zSUNsYXNzSW5mbyogR2V0Q2xhc3NJbmZvSW5zdGFuY2UobnNET01D
bGFzc0luZm9JRCBhSUQpOwogIHN0YXRpYyBuc0lDbGFzc0luZm8qIEdldENsYXNzSW5mb0luc3Rh
bmNlKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpOwoKICBzdGF0aWMgdm9pZCBTaHV0RG93bigp
OwoKICBzdGF0aWMgbnNJQ2xhc3NJbmZvICpkb0NyZWF0ZShuc0RPTUNsYXNzSW5mb0RhdGEqIGFE
YXRhKQogIHsKICAgIHJldHVybiBuZXcgbnNET01DbGFzc0luZm8oYURhdGEpOwogIH0KCiAgc3Rh
dGljIG5zcmVzdWx0IFdyYXBOYXRpdmUoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKnNjb3BlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzICpuYXRpdmUsIGNvbnN0IG5z
SUlEJiBhSUlELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzdmFsICp2cCk7CiAgc3Rh
dGljIG5zcmVzdWx0IFRocm93SlNFeGNlcHRpb24oSlNDb250ZXh0ICpjeCwgbnNyZXN1bHQgYVJl
c3VsdCk7CgogIHN0YXRpYyBuc3Jlc3VsdCBJbml0RE9NSlNDbGFzcyhKU0NvbnRleHQgKmN4LCBK
U09iamVjdCAqb2JqKTsKCiAgc3RhdGljIEpTQ2xhc3Mgc0RPTUpTQ2xhc3M7Cgpwcm90ZWN0ZWQ6
CiAgY29uc3QgbnNET01DbGFzc0luZm9EYXRhKiBtRGF0YTsKCiAgc3RhdGljIG5zcmVzdWx0IElu
aXQoKTsKICBzdGF0aWMgbnNyZXN1bHQgUmVnaXN0ZXJDbGFzc05hbWUoUFJJbnQzMiBhRE9NQ2xh
c3NJbmZvSUQpOwogIHN0YXRpYyBuc3Jlc3VsdCBSZWdpc3RlckNsYXNzUHJvdG9zKFBSSW50MzIg
YURPTUNsYXNzSW5mb0lEKTsKICBzdGF0aWMgbnNyZXN1bHQgUmVnaXN0ZXJFeHRlcm5hbENsYXNz
ZXMoKTsKICBuc3Jlc3VsdCBSZXNvbHZlQ29uc3RydWN0b3IoSlNDb250ZXh0ICpjeCwgSlNPYmpl
Y3QgKm9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKipvYmpwKTsK
CgoKCiAgc3RhdGljIFBSSW50MzIgR2V0QXJyYXlJbmRleEZyb21JZChKU0NvbnRleHQgKmN4LCBq
c3ZhbCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCAqYUlz
TnVtYmVyID0gMCk7CgogIHN0YXRpYyBpbmxpbmUgUFJCb29sIElzUmVhZG9ubHlSZXBsYWNlYWJs
ZShqc3ZhbCBpZCkKICB7CiAgICByZXR1cm4gKGlkID09IHNUb3BfaWQgfHwKICAgICAgICAgICAg
aWQgPT0gc1Njcm9sbGJhcnNfaWQgfHwKICAgICAgICAgICAgaWQgPT0gc0NvbnRlbnRfaWQgfHwK
ICAgICAgICAgICAgaWQgPT0gc1NpZGViYXJfaWQgfHwKICAgICAgICAgICAgaWQgPT0gc01lbnVi
YXJfaWQgfHwKICAgICAgICAgICAgaWQgPT0gc1Rvb2xiYXJfaWQgfHwKICAgICAgICAgICAgaWQg
PT0gc0xvY2F0aW9uYmFyX2lkIHx8CiAgICAgICAgICAgIGlkID09IHNQZXJzb25hbGJhcl9pZCB8
fAogICAgICAgICAgICBpZCA9PSBzU3RhdHVzYmFyX2lkIHx8CiAgICAgICAgICAgIGlkID09IHNE
aXJlY3Rvcmllc19pZCB8fAogICAgICAgICAgICBpZCA9PSBzQ29udHJvbGxlcnNfaWQgfHwKICAg
ICAgICAgICAgaWQgPT0gc1Njcm9sbFhfaWQgfHwKICAgICAgICAgICAgaWQgPT0gc1Njcm9sbFlf
aWQgfHwKICAgICAgICAgICAgaWQgPT0gc0xlbmd0aF9pZCB8fAogICAgICAgICAgICBpZCA9PSBz
RnJhbWVzX2lkKTsKICB9CgogIHN0YXRpYyBpbmxpbmUgUFJCb29sIElzV3JpdGFibGVSZXBsYWNl
YWJsZShqc3ZhbCBpZCkKICB7CiAgICByZXR1cm4gKGlkID09IHNJbm5lckhlaWdodF9pZCB8fAog
ICAgICAgICAgICBpZCA9PSBzSW5uZXJXaWR0aF9pZCB8fAogICAgICAgICAgICBpZCA9PSBzT3V0
ZXJIZWlnaHRfaWQgfHwKICAgICAgICAgICAgaWQgPT0gc091dGVyV2lkdGhfaWQgfHwKICAgICAg
ICAgICAgaWQgPT0gc1NjcmVlblhfaWQgfHwKICAgICAgICAgICAgaWQgPT0gc1NjcmVlbllfaWQg
fHwKICAgICAgICAgICAgaWQgPT0gc1N0YXR1c19pZCB8fAogICAgICAgICAgICBpZCA9PSBzTmFt
ZV9pZCk7CiAgfQoKICBuc3Jlc3VsdCBkb0NoZWNrUHJvcGVydHlBY2Nlc3MoSlNDb250ZXh0ICpj
eCwgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBSVWludDMyIGFjY2Vzc01vZGUsIFBSQm9vbCBpc1dpbmRvdyk7Cgog
IHN0YXRpYyBKU0NsYXNzIHNET01Db25zdHJ1Y3RvclByb3RvQ2xhc3M7CiAgc3RhdGljIEpTRnVu
Y3Rpb25TcGVjIHNET01KU0NsYXNzX21ldGhvZHNbXTsKCiAgc3RhdGljIG5zSVhQQ29ubmVjdCAq
c1hQQ29ubmVjdDsKICBzdGF0aWMgbnNJU2NyaXB0U2VjdXJpdHlNYW5hZ2VyICpzU2VjTWFuOwoK
CiAgc3RhdGljIG5zcmVzdWx0IERlZmluZVN0YXRpY0pTVmFscyhKU0NvbnRleHQgKmN4KTsKCiAg
c3RhdGljIFBSQm9vbCBzSXNJbml0aWFsaXplZDsKCiAgc3RhdGljIGpzdmFsIHNUb3BfaWQ7CiAg
c3RhdGljIGpzdmFsIHNTY3JvbGxiYXJzX2lkOwogIHN0YXRpYyBqc3ZhbCBzTG9jYXRpb25faWQ7
CiAgc3RhdGljIGpzdmFsIHNDb21wb25lbnRzX2lkOwogIHN0YXRpYyBqc3ZhbCBzQ29uc3RydWN0
b3JfaWQ7CiAgc3RhdGljIGpzdmFsIHNfY29udGVudF9pZDsKICBzdGF0aWMganN2YWwgc0NvbnRl
bnRfaWQ7CiAgc3RhdGljIGpzdmFsIHNTaWRlYmFyX2lkOwogIHN0YXRpYyBqc3ZhbCBzTWVudWJh
cl9pZDsKICBzdGF0aWMganN2YWwgc1Rvb2xiYXJfaWQ7CiAgc3RhdGljIGpzdmFsIHNMb2NhdGlv
bmJhcl9pZDsKICBzdGF0aWMganN2YWwgc1BlcnNvbmFsYmFyX2lkOwogIHN0YXRpYyBqc3ZhbCBz
U3RhdHVzYmFyX2lkOwogIHN0YXRpYyBqc3ZhbCBzRGlyZWN0b3JpZXNfaWQ7CiAgc3RhdGljIGpz
dmFsIHNDb250cm9sbGVyc19pZDsKICBzdGF0aWMganN2YWwgc0xlbmd0aF9pZDsKICBzdGF0aWMg
anN2YWwgc0lubmVySGVpZ2h0X2lkOwogIHN0YXRpYyBqc3ZhbCBzSW5uZXJXaWR0aF9pZDsKICBz
dGF0aWMganN2YWwgc091dGVySGVpZ2h0X2lkOwogIHN0YXRpYyBqc3ZhbCBzT3V0ZXJXaWR0aF9p
ZDsKICBzdGF0aWMganN2YWwgc1NjcmVlblhfaWQ7CiAgc3RhdGljIGpzdmFsIHNTY3JlZW5ZX2lk
OwogIHN0YXRpYyBqc3ZhbCBzU3RhdHVzX2lkOwogIHN0YXRpYyBqc3ZhbCBzTmFtZV9pZDsKICBz
dGF0aWMganN2YWwgc09ubW91c2Vkb3duX2lkOwogIHN0YXRpYyBqc3ZhbCBzT25tb3VzZXVwX2lk
OwogIHN0YXRpYyBqc3ZhbCBzT25jbGlja19pZDsKICBzdGF0aWMganN2YWwgc09uY29udGV4dG1l
bnVfaWQ7CiAgc3RhdGljIGpzdmFsIHNPbm1vdXNlb3Zlcl9pZDsKICBzdGF0aWMganN2YWwgc09u
bW91c2VvdXRfaWQ7CiAgc3RhdGljIGpzdmFsIHNPbmtleWRvd25faWQ7CiAgc3RhdGljIGpzdmFs
IHNPbmtleXVwX2lkOwogIHN0YXRpYyBqc3ZhbCBzT25rZXlwcmVzc19pZDsKICBzdGF0aWMganN2
YWwgc09ubW91c2Vtb3ZlX2lkOwogIHN0YXRpYyBqc3ZhbCBzT25mb2N1c19pZDsKICBzdGF0aWMg
anN2YWwgc09uYmx1cl9pZDsKICBzdGF0aWMganN2YWwgc09uc3VibWl0X2lkOwogIHN0YXRpYyBq
c3ZhbCBzT25yZXNldF9pZDsKICBzdGF0aWMganN2YWwgc09uY2hhbmdlX2lkOwogIHN0YXRpYyBq
c3ZhbCBzT25zZWxlY3RfaWQ7CiAgc3RhdGljIGpzdmFsIHNPbmxvYWRfaWQ7CiAgc3RhdGljIGpz
dmFsIHNPbnVubG9hZF9pZDsKICBzdGF0aWMganN2YWwgc09uYWJvcnRfaWQ7CiAgc3RhdGljIGpz
dmFsIHNPbmVycm9yX2lkOwogIHN0YXRpYyBqc3ZhbCBzT25wYWludF9pZDsKICBzdGF0aWMganN2
YWwgc09ucmVzaXplX2lkOwogIHN0YXRpYyBqc3ZhbCBzT25zY3JvbGxfaWQ7CiAgc3RhdGljIGpz
dmFsIHNTY3JvbGxJbnRvVmlld19pZDsKICBzdGF0aWMganN2YWwgc1Njcm9sbFhfaWQ7CiAgc3Rh
dGljIGpzdmFsIHNTY3JvbGxZX2lkOwogIHN0YXRpYyBqc3ZhbCBzT3Blbl9pZDsKICBzdGF0aWMg
anN2YWwgc0l0ZW1faWQ7CiAgc3RhdGljIGpzdmFsIHNFbnVtZXJhdGVfaWQ7CiAgc3RhdGljIGpz
dmFsIHNOYXZpZ2F0b3JfaWQ7CiAgc3RhdGljIGpzdmFsIHNEb2N1bWVudF9pZDsKICBzdGF0aWMg
anN2YWwgc1dpbmRvd19pZDsKICBzdGF0aWMganN2YWwgc0ZyYW1lc19pZDsKCiAgc3RhdGljIGNv
bnN0IEpTQ2xhc3MgKnNPYmplY3RDbGFzczsKCiAgc3RhdGljIFBSQm9vbCBzRG9TZWN1cml0eUNo
ZWNrSW5BZGRQcm9wZXJ0eTsKfTsKCnR5cGVkZWYgbnNET01DbGFzc0luZm8gbnNET01HZW5lcmlj
U0g7CgoKCgoKCmNsYXNzIG5zRXZlbnRSZWNpZXZlclNIIDogcHVibGljIG5zRE9NR2VuZXJpY1NI
CnsKcHJvdGVjdGVkOgogIG5zRXZlbnRSZWNpZXZlclNIKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURh
dGEpIDogbnNET01HZW5lcmljU0goYURhdGEpCiAgewogIH0KCiAgdmlydHVhbCB+bnNFdmVudFJl
Y2lldmVyU0goKQogIHsKICB9CgogIHN0YXRpYyBQUkJvb2wgUmVhbGx5SXNFdmVudE5hbWUoanN2
YWwgaWQsIGpzY2hhciBhRmlyc3RDaGFyKTsKCiAgc3RhdGljIGlubGluZSBQUkJvb2wgSXNFdmVu
dE5hbWUoanN2YWwgaWQpCiAgewogICAgOwoKICAgIGpzY2hhciAqc3RyID0gOjpKU19HZXRTdHJp
bmdDaGFycygoKEpTU3RyaW5nICopKCh2b2lkICopKChpZCkgJiB+KGpzdmFsKSgoKEpTVWludDMy
KTEgPDwgKDMpKSAtIDEpKSkpKTsKCiAgICBpZiAoc3RyWzBdID09ICdvJyAmJiBzdHJbMV0gPT0g
J24nKSB7CiAgICAgIHJldHVybiBSZWFsbHlJc0V2ZW50TmFtZShpZCwgc3RyWzJdKTsKICAgIH0K
CiAgICByZXR1cm4gMDsKICB9CgogIG5zcmVzdWx0IFJlZ2lzdGVyQ29tcGlsZUhhbmRsZXIobnNJ
WFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJCb29sIGNvbXBpbGUsIFBSQm9vbCAqZGlkX2Nv
bXBpbGUpOwoKcHVibGljOgogIHZpcnR1YWwgbnNyZXN1bHQgTmV3UmVzb2x2ZShuc0lYUENvbm5l
Y3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAg
ICAgICAgICBKU09iamVjdCAqb2JqLCBqc3ZhbCBpZCwgUFJVaW50MzIgZmxhZ3MsCiAgICAgICAg
ICAgICAgICAgICAgICAgIEpTT2JqZWN0ICoqb2JqcCwgUFJCb29sICpfcmV0dmFsKTsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBw
ZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqb2Jq
LCBqc3ZhbCBpZCwganN2YWwgKnZwLAogICAgICAgICAgICAgICAgICAgICAgICAgUFJCb29sICpf
cmV0dmFsKTsKfTsKCgoKCmNsYXNzIG5zV2luZG93U0ggOiBwdWJsaWMgbnNFdmVudFJlY2lldmVy
U0gKewpwcm90ZWN0ZWQ6CiAgbnNXaW5kb3dTSChuc0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKSA6
IG5zRXZlbnRSZWNpZXZlclNIKGFEYXRhKQogIHsKICB9CgogIHZpcnR1YWwgfm5zV2luZG93U0go
KQogIHsKICB9CgogIHN0YXRpYyBuc3Jlc3VsdCBHbG9iYWxSZXNvbHZlKG5zSVN1cHBvcnRzICph
TmF0aXZlLCBKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpT
T2JqZWN0ICpvYmosIEpTU3RyaW5nICpzdHIsIFBSVWludDMyIGZsYWdzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBSQm9vbCAqZGlkX3Jlc29sdmUpOwoKcHVibGljOgogIHZpcnR1
YWwgbnNyZXN1bHQgUHJlQ3JlYXRlKG5zSVN1cHBvcnRzICpuYXRpdmVPYmosIEpTQ29udGV4dCAq
Y3gsCiAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKmdsb2JhbE9iaiwgSlNPYmplY3Qg
KipwYXJlbnRPYmopOwogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UHJvcGVydHkobnNJWFBDb25uZWN0
V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAg
ICAgICAgIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLCBqc3ZhbCAqdnAsIFBSQm9vbCAqX3JldHZh
bCk7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRQcm9wZXJ0eShuc0lYUENvbm5lY3RXcmFwcGVkTmF0
aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAgICAgICAgICAgSlNP
YmplY3QgKm9iaiwganN2YWwgaWQsIGpzdmFsICp2cCwgUFJCb29sICpfcmV0dmFsKTsKICB2aXJ0
dWFsIG5zcmVzdWx0IEFkZFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBw
ZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqb2Jq
LCBqc3ZhbCBpZCwganN2YWwgKnZwLCBQUkJvb2wgKl9yZXR2YWwpOwogIHZpcnR1YWwgbnNyZXN1
bHQgRGVsUHJvcGVydHkobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250
ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlk
LCBqc3ZhbCAqdnAsIFBSQm9vbCAqX3JldHZhbCk7CiAgdmlydHVhbCBuc3Jlc3VsdCBOZXdSZXNv
bHZlKG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqY3gsCiAg
ICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLCBQUlVpbnQzMiBm
bGFncywKICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKipvYmpwLCBQUkJvb2wgKl9y
ZXR2YWwpOwogIHZpcnR1YWwgbnNyZXN1bHQgRmluYWxpemUobnNJWFBDb25uZWN0V3JhcHBlZE5h
dGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgIEpTT2Jq
ZWN0ICpvYmopOwoKICBzdGF0aWMgbnNyZXN1bHQgQ2FjaGVEb2N1bWVudFByb3BlcnR5KEpTQ29u
dGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuc0lET01XaW5kb3cgKndpbmRvdyk7CgogIHN0YXRpYyBuc0lDbGFzc0luZm8gKmRv
Q3JlYXRlKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpCiAgewogICAgcmV0dXJuIG5ldyBuc1dp
bmRvd1NIKGFEYXRhKTsKICB9Cn07CgoKCgpjbGFzcyBuc0xvY2F0aW9uU0ggOiBwdWJsaWMgbnNE
T01HZW5lcmljU0gKewpwcm90ZWN0ZWQ6CiAgbnNMb2NhdGlvblNIKG5zRE9NQ2xhc3NJbmZvRGF0
YSogYURhdGEpIDogbnNET01HZW5lcmljU0goYURhdGEpCiAgewogIH0KCiAgdmlydHVhbCB+bnNM
b2NhdGlvblNIKCkKICB7CiAgfQoKcHVibGljOgogIHZpcnR1YWwgbnNyZXN1bHQgQ2hlY2tBY2Nl
c3MobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICpjeCwKICAg
ICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLCBQUlVpbnQzMiBt
b2RlLAogICAgICAgICAgICAgICAgICAgICAgICAganN2YWwgKnZwLCBQUkJvb2wgKl9yZXR2YWwp
OwoKICBzdGF0aWMgbnNJQ2xhc3NJbmZvICpkb0NyZWF0ZShuc0RPTUNsYXNzSW5mb0RhdGEqIGFE
YXRhKQogIHsKICAgIHJldHVybiBuZXcgbnNMb2NhdGlvblNIKGFEYXRhKTsKICB9Cn07CgoKCgoK
Y2xhc3MgbnNOb2RlU0ggOiBwdWJsaWMgbnNFdmVudFJlY2lldmVyU0gKewpwcm90ZWN0ZWQ6CiAg
bnNOb2RlU0gobnNET01DbGFzc0luZm9EYXRhKiBhRGF0YSkgOiBuc0V2ZW50UmVjaWV2ZXJTSChh
RGF0YSkKICB7CiAgfQoKICB2aXJ0dWFsIH5uc05vZGVTSCgpCiAgewogIH0KCnB1YmxpYzoKICB2
aXJ0dWFsIG5zcmVzdWx0IFByZUNyZWF0ZShuc0lTdXBwb3J0cyAqbmF0aXZlT2JqLCBKU0NvbnRl
eHQgKmN4LAogICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpnbG9iYWxPYmosIEpTT2Jq
ZWN0ICoqcGFyZW50T2JqKTsKICB2aXJ0dWFsIG5zcmVzdWx0IEFkZFByb3BlcnR5KG5zSVhQQ29u
bmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBKU09iamVjdCAqb2JqLCBqc3ZhbCBpZCwganN2YWwgKnZwLCBQUkJvb2wgKl9y
ZXR2YWwpOwogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RmxhZ3MoUFJVaW50MzIgKmFGbGFncyk7Cgog
IHN0YXRpYyBuc0lDbGFzc0luZm8gKmRvQ3JlYXRlKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEp
CiAgewogICAgcmV0dXJuIG5ldyBuc05vZGVTSChhRGF0YSk7CiAgfQp9OwoKCgoKY2xhc3MgbnNF
bGVtZW50U0ggOiBwdWJsaWMgbnNOb2RlU0gKewpwcm90ZWN0ZWQ6CiAgbnNFbGVtZW50U0gobnNE
T01DbGFzc0luZm9EYXRhKiBhRGF0YSkgOiBuc05vZGVTSChhRGF0YSkKICB7CiAgfQoKICB2aXJ0
dWFsIH5uc0VsZW1lbnRTSCgpCiAgewogIH0KCnB1YmxpYzoKICB2aXJ0dWFsIG5zcmVzdWx0IFBv
c3RDcmVhdGUobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICpj
eCwKICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqb2JqKTsKCiAgc3RhdGljIG5zSUNsYXNz
SW5mbyAqZG9DcmVhdGUobnNET01DbGFzc0luZm9EYXRhKiBhRGF0YSkKICB7CiAgICByZXR1cm4g
bmV3IG5zRWxlbWVudFNIKGFEYXRhKTsKICB9Cn07CgoKCgpjbGFzcyBuc0FycmF5U0ggOiBwdWJs
aWMgbnNET01DbGFzc0luZm8Kewpwcm90ZWN0ZWQ6CiAgbnNBcnJheVNIKG5zRE9NQ2xhc3NJbmZv
RGF0YSogYURhdGEpIDogbnNET01DbGFzc0luZm8oYURhdGEpCiAgewogIH0KCiAgdmlydHVhbCB+
bnNBcnJheVNIKCkKICB7CiAgfQoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEl0ZW1BdChuc0lTdXBw
b3J0cyAqYU5hdGl2ZSwgUFJVaW50MzIgYUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5zSVN1cHBvcnRzICoqYVJlc3VsdCk7CgpwdWJsaWM6CiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRQcm9wZXJ0eShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQg
KmN4LAogICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsIGpz
dmFsICp2cCwgUFJCb29sICpfcmV0dmFsKTsKCiAgc3RhdGljIG5zSUNsYXNzSW5mbyAqZG9DcmVh
dGUobnNET01DbGFzc0luZm9EYXRhKiBhRGF0YSkKICB7CiAgICByZXR1cm4gbmV3IG5zQXJyYXlT
SChhRGF0YSk7CiAgfQp9OwoKCgoKY2xhc3MgbnNOYW1lZEFycmF5U0ggOiBwdWJsaWMgbnNBcnJh
eVNICnsKcHJvdGVjdGVkOgogIG5zTmFtZWRBcnJheVNIKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURh
dGEpIDogbnNBcnJheVNIKGFEYXRhKQogIHsKICB9CgogIHZpcnR1YWwgfm5zTmFtZWRBcnJheVNI
KCkKICB7CiAgfQoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5hbWVkSXRlbShuc0lTdXBwb3J0cyAq
YU5hdGl2ZSwgY29uc3QgbnNBU3RyaW5nJiBhTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuc0lTdXBwb3J0cyAqKmFSZXN1bHQpID0gMDsKCnB1YmxpYzoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpT
Q29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqb2JqLCBqc3Zh
bCBpZCwganN2YWwgKnZwLCBQUkJvb2wgKl9yZXR2YWwpOwp9OwoKCgoKY2xhc3MgbnNOYW1lZE5v
ZGVNYXBTSCA6IHB1YmxpYyBuc05hbWVkQXJyYXlTSAp7CnByb3RlY3RlZDoKICBuc05hbWVkTm9k
ZU1hcFNIKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpIDogbnNOYW1lZEFycmF5U0goYURhdGEp
CiAgewogIH0KCiAgdmlydHVhbCB+bnNOYW1lZE5vZGVNYXBTSCgpCiAgewogIH0KCgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldEl0ZW1BdChuc0lTdXBwb3J0cyAqYU5hdGl2ZSwgUFJVaW50MzIgYUlu
ZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzICoqYVJlc3VsdCk7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5hbWVkSXRlbShuc0lTdXBwb3J0cyAqYU5hdGl2ZSwg
Y29uc3QgbnNBU3RyaW5nJiBhTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
c0lTdXBwb3J0cyAqKmFSZXN1bHQpOwoKcHVibGljOgogIHN0YXRpYyBuc0lDbGFzc0luZm8gKmRv
Q3JlYXRlKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpCiAgewogICAgcmV0dXJuIG5ldyBuc05h
bWVkTm9kZU1hcFNIKGFEYXRhKTsKICB9Cn07CgoKCgpjbGFzcyBuc0hUTUxDb2xsZWN0aW9uU0gg
OiBwdWJsaWMgbnNOYW1lZEFycmF5U0gKewpwcm90ZWN0ZWQ6CiAgbnNIVE1MQ29sbGVjdGlvblNI
KG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpIDogbnNOYW1lZEFycmF5U0goYURhdGEpCiAgewog
IH0KCiAgdmlydHVhbCB+bnNIVE1MQ29sbGVjdGlvblNIKCkKICB7CiAgfQoKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0SXRlbUF0KG5zSVN1cHBvcnRzICphTmF0aXZlLCBQUlVpbnQzMiBhSW5kZXgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3VwcG9ydHMgKiphUmVzdWx0KTsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0TmFtZWRJdGVtKG5zSVN1cHBvcnRzICphTmF0aXZlLCBjb25z
dCBuc0FTdHJpbmcmIGFOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN1
cHBvcnRzICoqYVJlc3VsdCk7CgpwdWJsaWM6CiAgc3RhdGljIG5zSUNsYXNzSW5mbyAqZG9DcmVh
dGUobnNET01DbGFzc0luZm9EYXRhKiBhRGF0YSkKICB7CiAgICByZXR1cm4gbmV3IG5zSFRNTENv
bGxlY3Rpb25TSChhRGF0YSk7CiAgfQp9OwoKCgoKY2xhc3MgbnNDb250ZW50TGlzdFNIIDogcHVi
bGljIG5zSFRNTENvbGxlY3Rpb25TSAp7CnByb3RlY3RlZDoKICBuc0NvbnRlbnRMaXN0U0gobnNE
T01DbGFzc0luZm9EYXRhKiBhRGF0YSkgOiBuc0hUTUxDb2xsZWN0aW9uU0goYURhdGEpCiAgewog
IH0KCiAgdmlydHVhbCB+bnNDb250ZW50TGlzdFNIKCkKICB7CiAgfQoKcHVibGljOgogIHZpcnR1
YWwgbnNyZXN1bHQgUHJlQ3JlYXRlKG5zSVN1cHBvcnRzICpuYXRpdmVPYmosIEpTQ29udGV4dCAq
Y3gsCiAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKmdsb2JhbE9iaiwgSlNPYmplY3Qg
KipwYXJlbnRPYmopOwoKICBzdGF0aWMgbnNJQ2xhc3NJbmZvICpkb0NyZWF0ZShuc0RPTUNsYXNz
SW5mb0RhdGEqIGFEYXRhKQogIHsKICAgIHJldHVybiBuZXcgbnNDb250ZW50TGlzdFNIKGFEYXRh
KTsKICB9Cn07CgoKCgoKY2xhc3MgbnNGb3JtQ29udHJvbExpc3RTSCA6IHB1YmxpYyBuc0hUTUxD
b2xsZWN0aW9uU0gKewpwcm90ZWN0ZWQ6CiAgbnNGb3JtQ29udHJvbExpc3RTSChuc0RPTUNsYXNz
SW5mb0RhdGEqIGFEYXRhKSA6IG5zSFRNTENvbGxlY3Rpb25TSChhRGF0YSkKICB7CiAgfQoKICB2
aXJ0dWFsIH5uc0Zvcm1Db250cm9sTGlzdFNIKCkKICB7CiAgfQoKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0TmFtZWRJdGVtKG5zSVN1cHBvcnRzICphTmF0aXZlLCBjb25zdCBuc0FTdHJpbmcmIGFO
YW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzICoqYVJlc3Vs
dCk7CgpwdWJsaWM6CiAgc3RhdGljIG5zSUNsYXNzSW5mbyAqZG9DcmVhdGUobnNET01DbGFzc0lu
Zm9EYXRhKiBhRGF0YSkKICB7CiAgICByZXR1cm4gbmV3IG5zRm9ybUNvbnRyb2xMaXN0U0goYURh
dGEpOwogIH0KfTsKCgoKCmNsYXNzIG5zRG9jdW1lbnRTSCA6IHB1YmxpYyBuc05vZGVTSAp7CnB1
YmxpYzoKICBuc0RvY3VtZW50U0gobnNET01DbGFzc0luZm9EYXRhKiBhRGF0YSkgOiBuc05vZGVT
SChhRGF0YSkKICB7CiAgfQoKICB2aXJ0dWFsIH5uc0RvY3VtZW50U0goKQogIHsKICB9CgpwdWJs
aWM6CiAgdmlydHVhbCBuc3Jlc3VsdCBBZGRQcm9wZXJ0eShuc0lYUENvbm5lY3RXcmFwcGVkTmF0
aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAgICAgICAgICAgSlNP
YmplY3QgKm9iaiwganN2YWwgaWQsIGpzdmFsICp2cCwgUFJCb29sICpfcmV0dmFsKTsKICB2aXJ0
dWFsIG5zcmVzdWx0IERlbFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBw
ZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqb2Jq
LCBqc3ZhbCBpZCwganN2YWwgKnZwLCBQUkJvb2wgKl9yZXR2YWwpOwogIHZpcnR1YWwgbnNyZXN1
bHQgTmV3UmVzb2x2ZShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRl
eHQgKmN4LAogICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqb2JqLCBqc3ZhbCBpZCwg
UFJVaW50MzIgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICoqb2JqcCwg
UFJCb29sICpfcmV0dmFsKTsKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByb3BlcnR5KG5zSVhQQ29u
bmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBKU09iamVjdCAqb2JqLCBqc3ZhbCBpZCwganN2YWwgKnZwLCBQUkJvb2wgKl9y
ZXR2YWwpOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UHJvcGVydHkobnNJWFBDb25uZWN0V3JhcHBl
ZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgICAg
IEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLCBqc3ZhbCAqdnAsIFBSQm9vbCAqX3JldHZhbCk7CiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRGbGFncyhQUlVpbnQzMiogYUZsYWdzKTsKCiAgc3RhdGljIG5z
SUNsYXNzSW5mbyAqZG9DcmVhdGUobnNET01DbGFzc0luZm9EYXRhKiBhRGF0YSkKICB7CiAgICBy
ZXR1cm4gbmV3IG5zRG9jdW1lbnRTSChhRGF0YSk7CiAgfQp9OwoKCgoKY2xhc3MgbnNIVE1MRG9j
dW1lbnRTSCA6IHB1YmxpYyBuc0RvY3VtZW50U0gKewpwcm90ZWN0ZWQ6CiAgbnNIVE1MRG9jdW1l
bnRTSChuc0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKSA6IG5zRG9jdW1lbnRTSChhRGF0YSkKICB7
CiAgfQoKICB2aXJ0dWFsIH5uc0hUTUxEb2N1bWVudFNIKCkKICB7CiAgfQoKICBzdGF0aWMgbnNy
ZXN1bHQgUmVzb2x2ZUltcGwoSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwganN2YWwgaWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzICoqcmVzdWx0KTsKICBzdGF0aWMg
SlNCb29sIERvY3VtZW50T3BlbihKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50TiBhcmdjLCBqc3ZhbCAq
YXJndiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganN2YWwg
KnJ2YWwpOwoKcHVibGljOgogIHZpcnR1YWwgbnNyZXN1bHQgTmV3UmVzb2x2ZShuc0lYUENvbm5l
Y3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAg
ICAgICAgICBKU09iamVjdCAqb2JqLCBqc3ZhbCBpZCwgUFJVaW50MzIgZmxhZ3MsCiAgICAgICAg
ICAgICAgICAgICAgICAgIEpTT2JqZWN0ICoqb2JqcCwgUFJCb29sICpfcmV0dmFsKTsKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBw
ZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqb2Jq
LCBqc3ZhbCBpZCwganN2YWwgKnZwLCBQUkJvb2wgKl9yZXR2YWwpOwoKICBzdGF0aWMgbnNJQ2xh
c3NJbmZvICpkb0NyZWF0ZShuc0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKQogIHsKICAgIHJldHVy
biBuZXcgbnNIVE1MRG9jdW1lbnRTSChhRGF0YSk7CiAgfQp9OwoKCgoKY2xhc3MgbnNIVE1MRWxl
bWVudFNIIDogcHVibGljIG5zRWxlbWVudFNICnsKcHJvdGVjdGVkOgogIG5zSFRNTEVsZW1lbnRT
SChuc0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKSA6IG5zRWxlbWVudFNIKGFEYXRhKQogIHsKICB9
CgogIHZpcnR1YWwgfm5zSFRNTEVsZW1lbnRTSCgpCiAgewogIH0KCiAgc3RhdGljIEpTQm9vbCBT
Y3JvbGxJbnRvVmlldyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnROIGFyZ2MsIGpzdmFsICphcmd2
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzdmFsICpy
dmFsKTsKCnB1YmxpYzoKICB2aXJ0dWFsIG5zcmVzdWx0IE5ld1Jlc29sdmUobnNJWFBDb25uZWN0
V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAg
ICAgICAgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsIFBSVWludDMyIGZsYWdzLAogICAgICAgICAg
ICAgICAgICAgICAgICBKU09iamVjdCAqKm9ianAsIFBSQm9vbCAqX3JldHZhbCk7CgogIHN0YXRp
YyBuc0lDbGFzc0luZm8gKmRvQ3JlYXRlKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpCiAgewog
ICAgcmV0dXJuIG5ldyBuc0hUTUxFbGVtZW50U0goYURhdGEpOwogIH0KfTsKCgoKCmNsYXNzIG5z
SFRNTEZvcm1FbGVtZW50U0ggOiBwdWJsaWMgbnNIVE1MRWxlbWVudFNICnsKcHJvdGVjdGVkOgog
IG5zSFRNTEZvcm1FbGVtZW50U0gobnNET01DbGFzc0luZm9EYXRhKiBhRGF0YSkgOiBuc0hUTUxF
bGVtZW50U0goYURhdGEpCiAgewogIH0KCiAgdmlydHVhbCB+bnNIVE1MRm9ybUVsZW1lbnRTSCgp
CiAgewogIH0KCiAgc3RhdGljIG5zcmVzdWx0IEZpbmROYW1lZEl0ZW0obnNJRm9ybSAqYUZvcm0s
IEpTU3RyaW5nICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3VwcG9y
dHMgKiphUmVzdWx0KTsKCnB1YmxpYzoKICB2aXJ0dWFsIG5zcmVzdWx0IE5ld1Jlc29sdmUobnNJ
WFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICpjeCwKICAgICAgICAg
ICAgICAgICAgICAgICAgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsIFBSVWludDMyIGZsYWdzLAog
ICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqKm9ianAsIFBSQm9vbCAqX3JldHZhbCk7
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQcm9wZXJ0eShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZl
ICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmpl
Y3QgKm9iaiwganN2YWwgaWQsIGpzdmFsICp2cCwKICAgICAgICAgICAgICAgICAgICAgICAgIFBS
Qm9vbCAqX3JldHZhbCk7CgogIHZpcnR1YWwgbnNyZXN1bHQgTmV3RW51bWVyYXRlKG5zSVhQQ29u
bmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgSlND
b250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICBQUlVp
bnQzMiBlbnVtX29wLCBqc3ZhbCAqc3RhdGVwLAogICAgICAgICAgICAgICAgICAgICAgICAgIGpz
aWQgKmlkcCwgUFJCb29sICpfcmV0dmFsKTsKCiAgc3RhdGljIG5zSUNsYXNzSW5mbyAqZG9DcmVh
dGUobnNET01DbGFzc0luZm9EYXRhKiBhRGF0YSkKICB7CiAgICByZXR1cm4gbmV3IG5zSFRNTEZv
cm1FbGVtZW50U0goYURhdGEpOwogIH0KfTsKCgoKCmNsYXNzIG5zSFRNTFNlbGVjdEVsZW1lbnRT
SCA6IHB1YmxpYyBuc0hUTUxFbGVtZW50U0gKewpwcm90ZWN0ZWQ6CiAgbnNIVE1MU2VsZWN0RWxl
bWVudFNIKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpIDogbnNIVE1MRWxlbWVudFNIKGFEYXRh
KQogIHsKICB9CgogIHZpcnR1YWwgfm5zSFRNTFNlbGVjdEVsZW1lbnRTSCgpCiAgewogIH0KCnB1
YmxpYzoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBwZWRO
YXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAgICBK
U09iamVjdCAqb2JqLCBqc3ZhbCBpZCwganN2YWwgKnZwLAogICAgICAgICAgICAgICAgICAgICAg
ICAgUFJCb29sICpfcmV0dmFsKTsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFByb3BlcnR5KG5zSVhQ
Q29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBKU09iamVjdCAqb2JqLCBqc3ZhbCBpZCwganN2YWwgKnZwLCBQUkJvb2wg
Kl9yZXR2YWwpOwoKICBzdGF0aWMgbnNyZXN1bHQgU2V0T3B0aW9uKEpTQ29udGV4dCAqY3gsIGpz
dmFsICp2cCwgUFJVaW50MzIgYUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJ
RE9NTlNIVE1MT3B0aW9uQ29sbGVjdGlvbiAqYU9wdENvbGxlY3Rpb24pOwoKICBzdGF0aWMgbnNJ
Q2xhc3NJbmZvICpkb0NyZWF0ZShuc0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKQogIHsKICAgIHJl
dHVybiBuZXcgbnNIVE1MU2VsZWN0RWxlbWVudFNIKGFEYXRhKTsKICB9Cn07CgoKCgoKY2xhc3Mg
bnNIVE1MRXh0ZXJuYWxPYmpTSCA6IHB1YmxpYyBuc0hUTUxFbGVtZW50U0gKewpwcm90ZWN0ZWQ6
CiAgbnNIVE1MRXh0ZXJuYWxPYmpTSChuc0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKSA6IG5zSFRN
TEVsZW1lbnRTSChhRGF0YSkKICB7CiAgfQoKICB2aXJ0dWFsIH5uc0hUTUxFeHRlcm5hbE9ialNI
KCkKICB7CiAgfQoKICBuc3Jlc3VsdCBHZXRQbHVnaW5JbnN0YW5jZShuc0lYUENvbm5lY3RXcmFw
cGVkTmF0aXZlICphV3JhcHBlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lQbHVn
aW5JbnN0YW5jZSAqKmFSZXN1bHQpOwoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBsdWdpbkpTT2Jq
ZWN0KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuc0lQbHVnaW5JbnN0YW5jZSAqcGx1Z2luX2luc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqKnBsdWdpbl9vYmosCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqKnBsdWdpbl9wcm90bykgPSAw
OwoKcHVibGljOgogIHZpcnR1YWwgbnNyZXN1bHQgUG9zdENyZWF0ZShuc0lYUENvbm5lY3RXcmFw
cGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAgICAgICAg
ICBKU09iamVjdCAqb2JqKTsKfTsKCgoKCmNsYXNzIG5zSFRNTEFwcGxldEVsZW1lbnRTSCA6IHB1
YmxpYyBuc0hUTUxFeHRlcm5hbE9ialNICnsKcHJvdGVjdGVkOgogIG5zSFRNTEFwcGxldEVsZW1l
bnRTSChuc0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKSA6IG5zSFRNTEV4dGVybmFsT2JqU0goYURh
dGEpCiAgewogIH0KCiAgdmlydHVhbCB+bnNIVE1MQXBwbGV0RWxlbWVudFNIKCkKICB7CiAgfQoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBsdWdpbkpTT2JqZWN0KEpTQ29udGV4dCAqY3gsIEpTT2Jq
ZWN0ICpvYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lQbHVnaW5J
bnN0YW5jZSAqcGx1Z2luX2luc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBKU09iamVjdCAqKnBsdWdpbl9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBKU09iamVjdCAqKnBsdWdpbl9wcm90byk7CgpwdWJsaWM6CiAgc3RhdGljIG5zSUNsYXNz
SW5mbyAqZG9DcmVhdGUobnNET01DbGFzc0luZm9EYXRhKiBhRGF0YSkKICB7CiAgICByZXR1cm4g
bmV3IG5zSFRNTEFwcGxldEVsZW1lbnRTSChhRGF0YSk7CiAgfQp9OwoKCgoKY2xhc3MgbnNIVE1M
UGx1Z2luT2JqRWxlbWVudFNIIDogcHVibGljIG5zSFRNTEFwcGxldEVsZW1lbnRTSAp7CnByb3Rl
Y3RlZDoKICBuc0hUTUxQbHVnaW5PYmpFbGVtZW50U0gobnNET01DbGFzc0luZm9EYXRhKiBhRGF0
YSkgOiBuc0hUTUxBcHBsZXRFbGVtZW50U0goYURhdGEpCiAgewogIH0KCiAgdmlydHVhbCB+bnNI
VE1MUGx1Z2luT2JqRWxlbWVudFNIKCkKICB7CiAgfQoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBs
dWdpbkpTT2JqZWN0KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuc0lQbHVnaW5JbnN0YW5jZSAqcGx1Z2luX2luc3QsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqKnBsdWdpbl9vYmos
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqKnBsdWdpbl9w
cm90byk7CgpwdWJsaWM6CiAgdmlydHVhbCBuc3Jlc3VsdCBOZXdSZXNvbHZlKG5zSVhQQ29ubmVj
dFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAg
ICAgICAgIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLCBQUlVpbnQzMiBmbGFncywKICAgICAgICAg
ICAgICAgICAgICAgICAgSlNPYmplY3QgKipvYmpwLCBQUkJvb2wgKl9yZXR2YWwpOwoKICBzdGF0
aWMgbnNJQ2xhc3NJbmZvICpkb0NyZWF0ZShuc0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKQogIHsK
ICAgIHJldHVybiBuZXcgbnNIVE1MUGx1Z2luT2JqRWxlbWVudFNIKGFEYXRhKTsKICB9Cn07CgoK
CgpjbGFzcyBuc0hUTUxPcHRpb25Db2xsZWN0aW9uU0ggOiBwdWJsaWMgbnNIVE1MQ29sbGVjdGlv
blNICnsKcHJvdGVjdGVkOgogIG5zSFRNTE9wdGlvbkNvbGxlY3Rpb25TSChuc0RPTUNsYXNzSW5m
b0RhdGEqIGFEYXRhKSA6IG5zSFRNTENvbGxlY3Rpb25TSChhRGF0YSkKICB7CiAgfQoKICB2aXJ0
dWFsIH5uc0hUTUxPcHRpb25Db2xsZWN0aW9uU0goKQogIHsKICB9CgpwdWJsaWM6CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRQcm9wZXJ0eShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVy
LCBKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKm9iaiwg
anN2YWwgaWQsIGpzdmFsICp2cCwgUFJCb29sICpfcmV0dmFsKTsKCiAgc3RhdGljIG5zSUNsYXNz
SW5mbyAqZG9DcmVhdGUobnNET01DbGFzc0luZm9EYXRhKiBhRGF0YSkKICB7CiAgICByZXR1cm4g
bmV3IG5zSFRNTE9wdGlvbkNvbGxlY3Rpb25TSChhRGF0YSk7CiAgfQp9OwoKCgoKY2xhc3MgbnNQ
bHVnaW5TSCA6IHB1YmxpYyBuc05hbWVkQXJyYXlTSAp7CnByb3RlY3RlZDoKICBuc1BsdWdpblNI
KG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpIDogbnNOYW1lZEFycmF5U0goYURhdGEpCiAgewog
IH0KCiAgdmlydHVhbCB+bnNQbHVnaW5TSCgpCiAgewogIH0KCgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldEl0ZW1BdChuc0lTdXBwb3J0cyAqYU5hdGl2ZSwgUFJVaW50MzIgYUluZGV4LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzICoqYVJlc3VsdCk7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldE5hbWVkSXRlbShuc0lTdXBwb3J0cyAqYU5hdGl2ZSwgY29uc3QgbnNBU3Ry
aW5nJiBhTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdXBwb3J0cyAq
KmFSZXN1bHQpOwoKcHVibGljOgogIHN0YXRpYyBuc0lDbGFzc0luZm8gKmRvQ3JlYXRlKG5zRE9N
Q2xhc3NJbmZvRGF0YSogYURhdGEpCiAgewogICAgcmV0dXJuIG5ldyBuc1BsdWdpblNIKGFEYXRh
KTsKICB9Cn07CgoKCgpjbGFzcyBuc1BsdWdpbkFycmF5U0ggOiBwdWJsaWMgbnNOYW1lZEFycmF5
U0gKewpwcm90ZWN0ZWQ6CiAgbnNQbHVnaW5BcnJheVNIKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURh
dGEpIDogbnNOYW1lZEFycmF5U0goYURhdGEpCiAgewogIH0KCiAgdmlydHVhbCB+bnNQbHVnaW5B
cnJheVNIKCkKICB7CiAgfQoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SXRlbUF0KG5zSVN1cHBv
cnRzICphTmF0aXZlLCBQUlVpbnQzMiBhSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnNJU3VwcG9ydHMgKiphUmVzdWx0KTsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TmFtZWRJ
dGVtKG5zSVN1cHBvcnRzICphTmF0aXZlLCBjb25zdCBuc0FTdHJpbmcmIGFOYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzICoqYVJlc3VsdCk7CgpwdWJsaWM6
CiAgc3RhdGljIG5zSUNsYXNzSW5mbyAqZG9DcmVhdGUobnNET01DbGFzc0luZm9EYXRhKiBhRGF0
YSkKICB7CiAgICByZXR1cm4gbmV3IG5zUGx1Z2luQXJyYXlTSChhRGF0YSk7CiAgfQp9OwoKCgoK
Y2xhc3MgbnNNaW1lVHlwZUFycmF5U0ggOiBwdWJsaWMgbnNOYW1lZEFycmF5U0gKewpwcm90ZWN0
ZWQ6CiAgbnNNaW1lVHlwZUFycmF5U0gobnNET01DbGFzc0luZm9EYXRhKiBhRGF0YSkgOiBuc05h
bWVkQXJyYXlTSChhRGF0YSkKICB7CiAgfQoKICB2aXJ0dWFsIH5uc01pbWVUeXBlQXJyYXlTSCgp
CiAgewogIH0KCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEl0ZW1BdChuc0lTdXBwb3J0cyAqYU5h
dGl2ZSwgUFJVaW50MzIgYUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN1
cHBvcnRzICoqYVJlc3VsdCk7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5hbWVkSXRlbShuc0lT
dXBwb3J0cyAqYU5hdGl2ZSwgY29uc3QgbnNBU3RyaW5nJiBhTmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuc0lTdXBwb3J0cyAqKmFSZXN1bHQpOwoKcHVibGljOgogIHN0YXRp
YyBuc0lDbGFzc0luZm8gKmRvQ3JlYXRlKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpCiAgewog
ICAgcmV0dXJuIG5ldyBuc01pbWVUeXBlQXJyYXlTSChhRGF0YSk7CiAgfQp9OwoKCgoKY2xhc3Mg
bnNTdHJpbmdBcnJheVNIIDogcHVibGljIG5zRE9NQ2xhc3NJbmZvCnsKcHJvdGVjdGVkOgogIG5z
U3RyaW5nQXJyYXlTSChuc0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKSA6IG5zRE9NQ2xhc3NJbmZv
KGFEYXRhKQogIHsKICB9CgogIHZpcnR1YWwgfm5zU3RyaW5nQXJyYXlTSCgpCiAgewogIH0KCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRTdHJpbmdBdChuc0lTdXBwb3J0cyAqYU5hdGl2ZSwgUFJJbnQz
MiBhSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0FTdHJpbmcmIGFSZXN1
bHQpID0gMDsKCnB1YmxpYzoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByb3BlcnR5KG5zSVhQQ29u
bmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBKU09iamVjdCAqb2JqLCBqc3ZhbCBpZCwganN2YWwgKnZwLCBQUkJvb2wgKl9y
ZXR2YWwpOwp9OwoKCgoKY2xhc3MgbnNIaXN0b3J5U0ggOiBwdWJsaWMgbnNTdHJpbmdBcnJheVNI
CnsKcHJvdGVjdGVkOgogIG5zSGlzdG9yeVNIKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpIDog
bnNTdHJpbmdBcnJheVNIKGFEYXRhKQogIHsKICB9CgogIHZpcnR1YWwgfm5zSGlzdG9yeVNIKCkK
ICB7CiAgfQoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFN0cmluZ0F0KG5zSVN1cHBvcnRzICphTmF0
aXZlLCBQUkludDMyIGFJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zQVN0
cmluZyYgYVJlc3VsdCk7CgpwdWJsaWM6CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQcm9wZXJ0eShu
c0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAgICAg
ICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsIGpzdmFsICp2cCwgUFJC
b29sICpfcmV0dmFsKTsKCiAgc3RhdGljIG5zSUNsYXNzSW5mbyAqZG9DcmVhdGUobnNET01DbGFz
c0luZm9EYXRhKiBhRGF0YSkKICB7CiAgICByZXR1cm4gbmV3IG5zSGlzdG9yeVNIKGFEYXRhKTsK
ICB9Cn07CgoKCgpjbGFzcyBuc01lZGlhTGlzdFNIIDogcHVibGljIG5zU3RyaW5nQXJyYXlTSAp7
CnByb3RlY3RlZDoKICBuc01lZGlhTGlzdFNIKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpIDog
bnNTdHJpbmdBcnJheVNIKGFEYXRhKQogIHsKICB9CgogIHZpcnR1YWwgfm5zTWVkaWFMaXN0U0go
KQogIHsKICB9CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U3RyaW5nQXQobnNJU3VwcG9ydHMgKmFO
YXRpdmUsIFBSSW50MzIgYUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNB
U3RyaW5nJiBhUmVzdWx0KTsKCnB1YmxpYzoKICBzdGF0aWMgbnNJQ2xhc3NJbmZvICpkb0NyZWF0
ZShuc0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKQogIHsKICAgIHJldHVybiBuZXcgbnNNZWRpYUxp
c3RTSChhRGF0YSk7CiAgfQp9OwoKCgoKY2xhc3MgbnNTdHlsZVNoZWV0TGlzdFNIIDogcHVibGlj
IG5zQXJyYXlTSAp7CnByb3RlY3RlZDoKICBuc1N0eWxlU2hlZXRMaXN0U0gobnNET01DbGFzc0lu
Zm9EYXRhKiBhRGF0YSkgOiBuc0FycmF5U0goYURhdGEpCiAgewogIH0KCiAgdmlydHVhbCB+bnNT
dHlsZVNoZWV0TGlzdFNIKCkKICB7CiAgfQoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SXRlbUF0
KG5zSVN1cHBvcnRzICphTmF0aXZlLCBQUlVpbnQzMiBhSW5kZXgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnNJU3VwcG9ydHMgKiphUmVzdWx0KTsKCnB1YmxpYzoKICBzdGF0aWMgbnNJ
Q2xhc3NJbmZvICpkb0NyZWF0ZShuc0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKQogIHsKICAgIHJl
dHVybiBuZXcgbnNTdHlsZVNoZWV0TGlzdFNIKGFEYXRhKTsKICB9Cn07CgoKCgpjbGFzcyBuc0NT
U1ZhbHVlTGlzdFNIIDogcHVibGljIG5zQXJyYXlTSAp7CnByb3RlY3RlZDoKICBuc0NTU1ZhbHVl
TGlzdFNIKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpIDogbnNBcnJheVNIKGFEYXRhKQogIHsK
ICB9CgogIHZpcnR1YWwgfm5zQ1NTVmFsdWVMaXN0U0goKQogIHsKICB9CgoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRJdGVtQXQobnNJU3VwcG9ydHMgKmFOYXRpdmUsIFBSVWludDMyIGFJbmRleCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdXBwb3J0cyAqKmFSZXN1bHQpOwoKcHVi
bGljOgogIHN0YXRpYyBuc0lDbGFzc0luZm8gKmRvQ3JlYXRlKG5zRE9NQ2xhc3NJbmZvRGF0YSog
YURhdGEpCiAgewogICAgcmV0dXJuIG5ldyBuc0NTU1ZhbHVlTGlzdFNIKGFEYXRhKTsKICB9Cn07
CgoKCgpjbGFzcyBuc0NTU1N0eWxlRGVjbFNIIDogcHVibGljIG5zU3RyaW5nQXJyYXlTSAp7CnBy
b3RlY3RlZDoKICBuc0NTU1N0eWxlRGVjbFNIKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpIDog
bnNTdHJpbmdBcnJheVNIKGFEYXRhKQogIHsKICB9CgogIHZpcnR1YWwgfm5zQ1NTU3R5bGVEZWNs
U0goKQogIHsKICB9CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U3RyaW5nQXQobnNJU3VwcG9ydHMg
KmFOYXRpdmUsIFBSSW50MzIgYUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnNBU3RyaW5nJiBhUmVzdWx0KTsKCnB1YmxpYzoKICBzdGF0aWMgbnNJQ2xhc3NJbmZvICpkb0Ny
ZWF0ZShuc0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKQogIHsKICAgIHJldHVybiBuZXcgbnNDU1NT
dHlsZURlY2xTSChhRGF0YSk7CiAgfQp9OwoKCgoKY2xhc3MgbnNDU1NSdWxlTGlzdFNIIDogcHVi
bGljIG5zQXJyYXlTSAp7CnByb3RlY3RlZDoKICBuc0NTU1J1bGVMaXN0U0gobnNET01DbGFzc0lu
Zm9EYXRhKiBhRGF0YSkgOiBuc0FycmF5U0goYURhdGEpCiAgewogIH0KCiAgdmlydHVhbCB+bnND
U1NSdWxlTGlzdFNIKCkKICB7CiAgfQoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SXRlbUF0KG5z
SVN1cHBvcnRzICphTmF0aXZlLCBQUlVpbnQzMiBhSW5kZXgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnNJU3VwcG9ydHMgKiphUmVzdWx0KTsKCnB1YmxpYzoKICBzdGF0aWMgbnNJQ2xh
c3NJbmZvICpkb0NyZWF0ZShuc0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKQogIHsKICAgIHJldHVy
biBuZXcgbnNDU1NSdWxlTGlzdFNIKGFEYXRhKTsKICB9Cn07CiMgMTEzMCAibnNET01DbGFzc0lu
Zm8uaCIKY2xhc3MgbnNFdmVudExpc3RlbmVyVGhpc1RyYW5zbGF0b3IgOiBwdWJsaWMgbnNJWFBD
RnVuY3Rpb25UaGlzVHJhbnNsYXRvcgp7CnB1YmxpYzoKICBuc0V2ZW50TGlzdGVuZXJUaGlzVHJh
bnNsYXRvcigpCiAgewogIH0KCiAgdmlydHVhbCB+bnNFdmVudExpc3RlbmVyVGhpc1RyYW5zbGF0
b3IoKQogIHsKICB9CgoKICBwdWJsaWM6IHZpcnR1YWwgbnNyZXN1bHQgUXVlcnlJbnRlcmZhY2Uo
Y29uc3QgbnNJSUQmIGFJSUQsIHZvaWQqKiBhSW5zdGFuY2VQdHIpOyB2aXJ0dWFsIG5zcmVmY250
IEFkZFJlZih2b2lkKTsgdmlydHVhbCBuc3JlZmNudCBSZWxlYXNlKHZvaWQpOyBwcm90ZWN0ZWQ6
IG5zQXV0b1JlZkNudCBtUmVmQ250OyBwdWJsaWM6CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFRyYW5z
bGF0ZVRoaXMobnNJU3VwcG9ydHMgKmFJbml0aWFsVGhpcywgbnNJSW50ZXJmYWNlSW5mbyAqYUlu
dGVyZmFjZUluZm8sIFBSVWludDE2IGFNZXRob2RJbmRleCwgUFJCb29sICphSGlkZUZpcnN0UGFy
YW1Gcm9tSlMsIG5zSUlEICogKmFJSURPZlJlc3VsdCwgbnNJU3VwcG9ydHMgKipfcmV0dmFsKTsK
fTsKCgp2b2lkIEludmFsaWRhdGVDb250ZXh0QW5kV3JhcHBlckNhY2hlKCk7CiMgNDIgIm5zRE9N
Q2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0NSVC5o
IiAxCiMgNDIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0NSVC5oIgojIDEgIi92YXIv
dG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3By
L3Bsc3RyLmgiIDEKIyA2MSAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21v
emlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcGxzdHIuaCIKZXh0ZXJuICJDIiB7CgoKCgoKCmV4dGVy
biBQUlVpbnQzMgpQTF9zdHJsZW4oY29uc3QgY2hhciAqc3RyKTsKIyA3OSAiL3Zhci90bXAvcG9y
dGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcGxzdHIu
aCIKZXh0ZXJuIFBSVWludDMyClBMX3N0cm5sZW4oY29uc3QgY2hhciAqc3RyLCBQUlVpbnQzMiBt
YXgpOwojIDkwICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9k
aXN0L2luY2x1ZGUvbnNwci9wbHN0ci5oIgpleHRlcm4gY2hhciAqClBMX3N0cmNweShjaGFyICpk
ZXN0LCBjb25zdCBjaGFyICpzcmMpOwojIDEwMyAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEu
My1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcGxzdHIuaCIKZXh0ZXJuIGNoYXIg
KgpQTF9zdHJuY3B5KGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgUFJVaW50MzIgbWF4KTsK
IyAxMjYgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3Qv
aW5jbHVkZS9uc3ByL3Bsc3RyLmgiCmV4dGVybiBjaGFyICoKUExfc3RybmNweXooY2hhciAqZGVz
dCwgY29uc3QgY2hhciAqc3JjLCBQUlVpbnQzMiBtYXgpOwojIDE0MCAiL3Zhci90bXAvcG9ydGFn
ZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcGxzdHIuaCIK
ZXh0ZXJuIGNoYXIgKgpQTF9zdHJkdXAoY29uc3QgY2hhciAqcyk7CgoKCgoKCgpleHRlcm4gdm9p
ZApQTF9zdHJmcmVlKGNoYXIgKnMpOwojIDE2NCAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEu
My1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcGxzdHIuaCIKZXh0ZXJuIGNoYXIg
KgpQTF9zdHJuZHVwKGNvbnN0IGNoYXIgKnMsIFBSVWludDMyIG1heCk7CiMgMTc2ICIvdmFyL3Rt
cC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9w
bHN0ci5oIgpleHRlcm4gY2hhciAqClBMX3N0cmNhdChjaGFyICpkc3QsIGNvbnN0IGNoYXIgKnNy
Yyk7CiMgMTkxICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9k
aXN0L2luY2x1ZGUvbnNwci9wbHN0ci5oIgpleHRlcm4gY2hhciAqClBMX3N0cm5jYXQoY2hhciAq
ZHN0LCBjb25zdCBjaGFyICpzcmMsIFBSVWludDMyIG1heCk7CiMgMjA1ICIvdmFyL3RtcC9wb3J0
YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wbHN0ci5o
IgpleHRlcm4gY2hhciAqClBMX3N0cmNhdG4oY2hhciAqZHN0LCBQUlVpbnQzMiBtYXgsIGNvbnN0
IGNoYXIgKnNyYyk7CiMgMjE3ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsv
bW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wbHN0ci5oIgpleHRlcm4gUFJJbnRuClBMX3N0cmNt
cChjb25zdCBjaGFyICphLCBjb25zdCBjaGFyICpiKTsKIyAyMzEgIi92YXIvdG1wL3BvcnRhZ2Uv
bW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3Bsc3RyLmgiCmV4
dGVybiBQUkludG4KUExfc3RybmNtcChjb25zdCBjaGFyICphLCBjb25zdCBjaGFyICpiLCBQUlVp
bnQzMiBtYXgpOwojIDI0MyAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21v
emlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcGxzdHIuaCIKZXh0ZXJuIFBSSW50bgpQTF9zdHJjYXNl
Y21wKGNvbnN0IGNoYXIgKmEsIGNvbnN0IGNoYXIgKmIpOwojIDI1NSAiL3Zhci90bXAvcG9ydGFn
ZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcGxzdHIuaCIK
ZXh0ZXJuIFBSSW50bgpQTF9zdHJuY2FzZWNtcChjb25zdCBjaGFyICphLCBjb25zdCBjaGFyICpi
LCBQUlVpbnQzMiBtYXgpOwojIDI2NiAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93
b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcGxzdHIuaCIKZXh0ZXJuIGNoYXIgKgpQTF9z
dHJjaHIoY29uc3QgY2hhciAqcywgY2hhciBjKTsKIyAyNzcgIi92YXIvdG1wL3BvcnRhZ2UvbW96
aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3Bsc3RyLmgiCmV4dGVy
biBjaGFyICoKUExfc3RycmNocihjb25zdCBjaGFyICpzLCBjaGFyIGMpOwojIDI4OSAiL3Zhci90
bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIv
cGxzdHIuaCIKZXh0ZXJuIGNoYXIgKgpQTF9zdHJuY2hyKGNvbnN0IGNoYXIgKnMsIGNoYXIgYywg
UFJVaW50MzIgbik7CiMgMzAxICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsv
bW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wbHN0ci5oIgpleHRlcm4gY2hhciAqClBMX3N0cm5y
Y2hyKGNvbnN0IGNoYXIgKnMsIGNoYXIgYywgUFJVaW50MzIgbik7CiMgMzE3ICIvdmFyL3RtcC9w
b3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wbHN0
ci5oIgpleHRlcm4gY2hhciAqClBMX3N0cnBicmsoY29uc3QgY2hhciAqcywgY29uc3QgY2hhciAq
bGlzdCk7CiMgMzI4ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxs
YS9kaXN0L2luY2x1ZGUvbnNwci9wbHN0ci5oIgpleHRlcm4gY2hhciAqClBMX3N0cnByYnJrKGNv
bnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmxpc3QpOwojIDMzOSAiL3Zhci90bXAvcG9ydGFnZS9t
b3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcGxzdHIuaCIKZXh0
ZXJuIGNoYXIgKgpQTF9zdHJucGJyayhjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICpsaXN0LCBQ
UlVpbnQzMiBuKTsKIyAzNTAgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9t
b3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3Bsc3RyLmgiCmV4dGVybiBjaGFyICoKUExfc3RybnBy
YnJrKGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmxpc3QsIFBSVWludDMyIG4pOwojIDM2MCAi
L3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRl
L25zcHIvcGxzdHIuaCIKZXh0ZXJuIGNoYXIgKgpQTF9zdHJzdHIoY29uc3QgY2hhciAqYmlnLCBj
b25zdCBjaGFyICpsaXR0bGUpOwojIDM3MCAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1y
MS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcGxzdHIuaCIKZXh0ZXJuIGNoYXIgKgpQ
TF9zdHJyc3RyKGNvbnN0IGNoYXIgKmJpZywgY29uc3QgY2hhciAqbGl0dGxlKTsKIyAzODEgIi92
YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9u
c3ByL3Bsc3RyLmgiCmV4dGVybiBjaGFyICoKUExfc3RybnN0cihjb25zdCBjaGFyICpiaWcsIGNv
bnN0IGNoYXIgKmxpdHRsZSwgUFJVaW50MzIgbik7CiMgMzkyICIvdmFyL3RtcC9wb3J0YWdlL21v
emlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wbHN0ci5oIgpleHRl
cm4gY2hhciAqClBMX3N0cm5yc3RyKGNvbnN0IGNoYXIgKmJpZywgY29uc3QgY2hhciAqbGl0dGxl
LCBQUlVpbnQzMiBtYXgpOwojIDQwMiAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93
b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcGxzdHIuaCIKZXh0ZXJuIGNoYXIgKgpQTF9z
dHJjYXNlc3RyKGNvbnN0IGNoYXIgKmJpZywgY29uc3QgY2hhciAqbGl0dGxlKTsKIyA0MTIgIi92
YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9u
c3ByL3Bsc3RyLmgiCmV4dGVybiBjaGFyICoKUExfc3RyY2FzZXJzdHIoY29uc3QgY2hhciAqYmln
LCBjb25zdCBjaGFyICpsaXR0bGUpOwojIDQyMyAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEu
My1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcGxzdHIuaCIKZXh0ZXJuIGNoYXIg
KgpQTF9zdHJuY2FzZXN0cihjb25zdCBjaGFyICpiaWcsIGNvbnN0IGNoYXIgKmxpdHRsZSwgUFJV
aW50MzIgbWF4KTsKIyA0MzQgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9t
b3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3Bsc3RyLmgiCmV4dGVybiBjaGFyICoKUExfc3RybmNh
c2Vyc3RyKGNvbnN0IGNoYXIgKmJpZywgY29uc3QgY2hhciAqbGl0dGxlLCBQUlVpbnQzMiBtYXgp
OwojIDQ1NiAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlz
dC9pbmNsdWRlL25zcHIvcGxzdHIuaCIKZXh0ZXJuIGNoYXIgKgpQTF9zdHJ0b2tfcihjaGFyICpz
MSwgY29uc3QgY2hhciAqczIsIGNoYXIgKipsYXN0cyk7CgoKCgoKCgp9CiMgNDMgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS94cGNvbS9uc0NSVC5oIiAyCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUveHBjb20vbnNDcHBTaGFyZWRBbGxvY2F0b3IuaCIgMQojIDIzICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUveHBjb20vbnNDcHBTaGFyZWRBbGxvY2F0b3IuaCIKIyAxICIvdXNyL2xpYi9nY2MtbGli
L2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvbGltaXRzLmgiIDEgMwojIDExICIvdXNy
L2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvbGltaXRzLmgiIDMK
IyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3lz
bGltaXRzLmgiIDEgMwoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1n
bnUvMy4yLjIvaW5jbHVkZS9saW1pdHMuaCIgMSAzCiMgMTMyICIvdXNyL2xpYi9nY2MtbGliL2k1
ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvbGltaXRzLmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvbGltaXRzLmgiIDEgMwojIDE0NCAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvcG9zaXgxX2xpbS5oIiAxIDMKIyAxMjYgIi91c3IvaW5jbHVkZS9iaXRz
L3Bvc2l4MV9saW0uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2xvY2FsX2xpbS5oIiAxIDMK
IyAzNiAiL3Vzci9pbmNsdWRlL2JpdHMvbG9jYWxfbGltLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUv
bGludXgvbGltaXRzLmgiIDEgMwojIDM3ICIvdXNyL2luY2x1ZGUvYml0cy9sb2NhbF9saW0uaCIg
MiAzCiMgMTI3ICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDIgMwojIDE0NSAiL3Vz
ci9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDJf
bGltLmgiIDEgMwojIDE0OSAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKCgoKIyAxICIvdXNy
L2luY2x1ZGUvYml0cy94b3Blbl9saW0uaCIgMSAzCiMgMzQgIi91c3IvaW5jbHVkZS9iaXRzL3hv
cGVuX2xpbS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW9fbGltLmgiIDEgMwojIDM1
ICIvdXNyL2luY2x1ZGUvYml0cy94b3Blbl9saW0uaCIgMiAzCiMgMTM2ICIvdXNyL2luY2x1ZGUv
Yml0cy94b3Blbl9saW0uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dvcmRzaXplLmgiIDEg
MwojIDEzNyAiL3Vzci9pbmNsdWRlL2JpdHMveG9wZW5fbGltLmgiIDIgMwojIDE1MyAiL3Vzci9p
bmNsdWRlL2xpbWl0cy5oIiAyIDMKIyAxMzMgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51
eC1nbnUvMy4yLjIvaW5jbHVkZS9saW1pdHMuaCIgMiAzCiMgOCAiL3Vzci9saWIvZ2NjLWxpYi9p
NTg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N5c2xpbWl0cy5oIiAyIDMKIyAxMiAiL3Vz
ci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL2xpbWl0cy5oIiAy
IDMKIyAyNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zQ3BwU2hhcmVkQWxsb2NhdG9y
LmgiIDIKCgoKdGVtcGxhdGUgPGNsYXNzIFQ+CmNsYXNzIG5zQ3BwU2hhcmVkQWxsb2NhdG9yCgoK
CgogIHsKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7CiAgICAgIHR5cGVk
ZWYgc2l6ZV90IHNpemVfdHlwZTsKICAgICAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90
eXBlOwoKICAgICAgdHlwZWRlZiBUKiBwb2ludGVyOwogICAgICB0eXBlZGVmIGNvbnN0IFQqIGNv
bnN0X3BvaW50ZXI7CgogICAgICB0eXBlZGVmIFQmIHJlZmVyZW5jZTsKICAgICAgdHlwZWRlZiBj
b25zdCBUJiBjb25zdF9yZWZlcmVuY2U7CgoKCiAgICAgIG5zQ3BwU2hhcmVkQWxsb2NhdG9yKCkg
eyB9CgoKCgoKCiAgICAgfm5zQ3BwU2hhcmVkQWxsb2NhdG9yKCkgeyB9CgoKICAgICAgcG9pbnRl
cgogICAgICBhZGRyZXNzKCByZWZlcmVuY2UgciApIGNvbnN0CiAgICAgICAgewogICAgICAgICAg
cmV0dXJuICZyOwogICAgICAgIH0KCiAgICAgIGNvbnN0X3BvaW50ZXIKICAgICAgYWRkcmVzcygg
Y29uc3RfcmVmZXJlbmNlIHIgKSBjb25zdAogICAgICAgIHsKICAgICAgICAgIHJldHVybiAmcjsK
ICAgICAgICB9CgogICAgICBwb2ludGVyCiAgICAgIGFsbG9jYXRlKCBzaXplX3R5cGUgbiwgY29u
c3Qgdm9pZCogPTAgKQogICAgICAgIHsKICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PCBwb2ludGVyID4obnNNZW1vcnk6OkFsbG9jKHN0YXRpY19jYXN0PCBQUlVpbnQzMiA+KG4qc2l6
ZW9mKFQpKSkpOwogICAgICAgIH0KCiAgICAgIHZvaWQKICAgICAgZGVhbGxvY2F0ZSggcG9pbnRl
ciBwLCBzaXplX3R5cGUgKQogICAgICAgIHsKICAgICAgICAgIG5zTWVtb3J5OjpGcmVlKHApOwog
ICAgICAgIH0KCiAgICAgIHZvaWQKICAgICAgY29uc3RydWN0KCBwb2ludGVyIHAsIGNvbnN0IFQm
IHZhbCApCiAgICAgICAgewogICAgICAgICAgbmV3IChwKSBUKHZhbCk7CiAgICAgICAgfQoKICAg
ICAgdm9pZAogICAgICBkZXN0cm95KCBwb2ludGVyIHAgKQogICAgICAgIHsKICAgICAgICAgIHAt
Pn5UKCk7CiAgICAgICAgfQoKICAgICAgc2l6ZV90eXBlCiAgICAgIG1heF9zaXplKCkgY29uc3QK
ICAgICAgICB7CgoKCiAgICAgICAgICByZXR1cm4gKDIxNDc0ODM2NDdMICogMlVMICsgMSkgLyBz
aXplb2YoVCk7CgogICAgICAgIH0KIyAxMTAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9u
c0NwcFNoYXJlZEFsbG9jYXRvci5oIgogIH07CgoKdGVtcGxhdGUgPGNsYXNzIFQ+ClBSQm9vbApv
cGVyYXRvcj09KCBjb25zdCBuc0NwcFNoYXJlZEFsbG9jYXRvcjxUPiYsIGNvbnN0IG5zQ3BwU2hh
cmVkQWxsb2NhdG9yPFQ+JiApCiAgewogICAgcmV0dXJuIDE7CiAgfQoKdGVtcGxhdGUgPGNsYXNz
IFQ+ClBSQm9vbApvcGVyYXRvciE9KCBjb25zdCBuc0NwcFNoYXJlZEFsbG9jYXRvcjxUPiYsIGNv
bnN0IG5zQ3BwU2hhcmVkQWxsb2NhdG9yPFQ+JiApCiAgewogICAgcmV0dXJuIDA7CiAgfQojIDQ2
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNDUlQuaCIgMgojIDYyICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUveHBjb20vbnNDUlQuaCIKZXh0ZXJuIGNvbnN0IFBSVW5pY2hhciBrSXNvTGF0
aW4xVG9VQ1MyWzI1Nl07CiMgMTAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNDUlQu
aCIKY2xhc3MgbnNDUlQgewpwdWJsaWM6CiAgZW51bSB7CiAgICBUQUI9J1x0JyAsCiAgICBMRj0n
XG4nICwKICAgIFZUQUI9J1x2JyAsCiAgICBGRj0nXGYnICwKICAgIENSPSdccicKICB9OwojIDEz
NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zQ1JULmgiCiAgc3RhdGljIFBSVWludDMy
IHN0cmxlbihjb25zdCBjaGFyKiBzKSB7CiAgICByZXR1cm4gUFJVaW50MzIoOjpzdHJsZW4ocykp
OwogIH0KCgogIHN0YXRpYyBQUkludDMyIHN0cmNtcChjb25zdCBjaGFyKiBzMSwgY29uc3QgY2hh
ciogczIpIHsKICAgIHJldHVybiBQUkludDMyKFBMX3N0cmNtcChzMSwgczIpKTsKICB9CgogIHN0
YXRpYyBQUkludDMyIHN0cm5jbXAoY29uc3QgY2hhciogczEsIGNvbnN0IGNoYXIqIHMyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgUFJVaW50MzIgYU1heExlbikgewogICAgcmV0dXJuIFBSSW50
MzIoUExfc3RybmNtcChzMSwgczIsIGFNYXhMZW4pKTsKICB9CgoKICBzdGF0aWMgUFJJbnQzMiBz
dHJjYXNlY21wKGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBzMikgewogICAgcmV0dXJuIFBS
SW50MzIoUExfc3RyY2FzZWNtcChzMSwgczIpKTsKICB9CgoKICBzdGF0aWMgUFJJbnQzMiBzdHJu
Y2FzZWNtcChjb25zdCBjaGFyKiBzMSwgY29uc3QgY2hhciogczIsIFBSVWludDMyIGFNYXhMZW4p
IHsKICAgIFBSSW50MzIgcmVzdWx0PVBSSW50MzIoUExfc3RybmNhc2VjbXAoczEsIHMyLCBhTWF4
TGVuKSk7CgoKICAgIGlmIChyZXN1bHQ8MCkKICAgICAgcmVzdWx0PS0xOwogICAgcmV0dXJuIHJl
c3VsdDsKICB9CgogIHN0YXRpYyBQUkludDMyIHN0cm5jbXAoY29uc3QgY2hhciogczEsIGNvbnN0
IGNoYXIqIHMyLCBQUkludDMyIGFNYXhMZW4pIHsKCiAgICBQUkludDMyIGRpZmYgPSAoKGNvbnN0
IHVuc2lnbmVkIGNoYXIqKXMxKVswXSAtICgoY29uc3QgdW5zaWduZWQgY2hhciopczIpWzBdOwog
ICAgaWYgKGRpZmYgIT0gMCkgcmV0dXJuIGRpZmY7CiAgICByZXR1cm4gUFJJbnQzMihQTF9zdHJu
Y21wKHMxLHMyLHVuc2lnbmVkKGFNYXhMZW4pKSk7CiAgfQoKICBzdGF0aWMgY2hhciogc3RyZHVw
KGNvbnN0IGNoYXIqIHN0cikgewogICAgcmV0dXJuIFBMX3N0cmR1cChzdHIpOwogIH0KCiAgc3Rh
dGljIGNoYXIqIHN0cm5kdXAoY29uc3QgY2hhciogc3RyLCBQUlVpbnQzMiBsZW4pIHsKICAgIHJl
dHVybiBQTF9zdHJuZHVwKHN0ciwgbGVuKTsKICB9CgogIHN0YXRpYyB2b2lkIGZyZWUoY2hhciog
c3RyKSB7CiAgICBQTF9zdHJmcmVlKHN0cik7CiAgfQojIDIwMSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL3hwY29tL25zQ1JULmgiCiAgc3RhdGljIGNoYXIqIHN0cnRvayhjaGFyKiBzdHIsIGNvbnN0
IGNoYXIqIGRlbGltcywgY2hhciogKm5ld1N0cik7CgoKICBzdGF0aWMgUFJVaW50MzIgc3RybGVu
KGNvbnN0IFBSVW5pY2hhciogcyk7CgoKICBzdGF0aWMgUFJJbnQzMiBzdHJjbXAoY29uc3QgUFJV
bmljaGFyKiBzMSwgY29uc3QgUFJVbmljaGFyKiBzMik7CgogIHN0YXRpYyBQUkludDMyIHN0cm5j
bXAoY29uc3QgUFJVbmljaGFyKiBzMSwgY29uc3QgUFJVbmljaGFyKiBzMiwKICAgICAgICAgICAg
ICAgICAgICAgICAgIFBSVWludDMyIGFNYXhMZW4pOwoKCgogIHN0YXRpYyBQUlVuaWNoYXIqIHN0
cmR1cChjb25zdCBQUlVuaWNoYXIqIHN0cik7CgoKCiAgc3RhdGljIFBSVW5pY2hhciogc3RybmR1
cChjb25zdCBQUlVuaWNoYXIqIHN0ciwgUFJVaW50MzIgbGVuKTsKCiAgc3RhdGljIHZvaWQgZnJl
ZShQUlVuaWNoYXIqIHN0cikgewogICAgICAgIG5zQ3BwU2hhcmVkQWxsb2NhdG9yPFBSVW5pY2hh
cj4gc2hhcmVkX2FsbG9jYXRvcjsKICAgICAgICBzaGFyZWRfYWxsb2NhdG9yLmRlYWxsb2NhdGUo
c3RyLCAwICk7CiAgfQoKCgogIHN0YXRpYyBQUlVpbnQzMiBIYXNoQ29kZShjb25zdCBjaGFyKiBz
dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSVWludDMyKiByZXN1bHRpbmdTdHJMZW4g
PSAwKTsKCgoKICBzdGF0aWMgUFJVaW50MzIgSGFzaENvZGUoY29uc3QgUFJVbmljaGFyKiBzdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSVWludDMyKiByZXN1bHRpbmdTdHJMZW4gPSAw
KTsKCgoKCiAgc3RhdGljIFBSVWludDMyIEhhc2hDb2RlQXNVVEY4KGNvbnN0IFBSVW5pY2hhciog
c3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUlVpbnQzMiogcmVzdWx0aW5n
U3RyTGVuID0gMCk7CgoKICBzdGF0aWMgUFJVaW50MzIgQnVmZmVySGFzaENvZGUoY29uc3QgY2hh
ciogc3RyLCBQUlVpbnQzMiBzdHJMZW4pOwoKCiAgc3RhdGljIFBSVWludDMyIEJ1ZmZlckhhc2hD
b2RlKGNvbnN0IFBSVW5pY2hhciogc3RyLCBQUlVpbnQzMiBzdHJMZW4pOwoKCiAgc3RhdGljIFBS
SW50NjQgYXRvbGwoY29uc3QgY2hhciAqc3RyKTsKCiAgc3RhdGljIGNoYXIgVG9VcHBlcihjaGFy
IGFDaGFyKTsKCiAgc3RhdGljIGNoYXIgVG9Mb3dlcihjaGFyIGFDaGFyKTsKCiAgc3RhdGljIFBS
Qm9vbCBJc1VwcGVyKGNoYXIgYUNoYXIpOwoKICBzdGF0aWMgUFJCb29sIElzTG93ZXIoY2hhciBh
Q2hhcik7CgogIHN0YXRpYyBQUkJvb2wgSXNBc2NpaShQUlVuaWNoYXIgYUNoYXIpOwogIHN0YXRp
YyBQUkJvb2wgSXNBc2NpaShjb25zdCBQUlVuaWNoYXIqIGFTdHJpbmcpOwogIHN0YXRpYyBQUkJv
b2wgSXNBc2NpaUFscGhhKFBSVW5pY2hhciBhQ2hhcik7CiAgc3RhdGljIFBSQm9vbCBJc0FzY2lp
RGlnaXQoUFJVbmljaGFyIGFDaGFyKTsKICBzdGF0aWMgUFJCb29sIElzQXNjaWlTcGFjZShQUlVu
aWNoYXIgYUNoYXIpOwogIHN0YXRpYyBQUkJvb2wgSXNBc2NpaShjb25zdCBjaGFyKiBhU3RyaW5n
KTsKfTsKIyA0MyAibnNET01DbGFzc0luZm8uY3BwIiAyCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS94cGNvbS9uc0lDYXRlZ29yeU1hbmFnZXIuaCIgMQojIDI5ICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUveHBjb20vbnNJQ2F0ZWdvcnlNYW5hZ2VyLmgiCmNsYXNzIG5zSUNhdGVnb3J5TWFuYWdl
ciA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYg
R2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgzMjc1YjJjZCwgMHhhZjZkLCAw
eDQyOWEsIHsgMHg4MCwgMHhkNywgMHhmMCwgMHhjNSwgMHgxMiwgMHgwMywgMHg0MiwgMHhhYyB9
fTsgcmV0dXJuIGlpZDt9CiMgNDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDYXRl
Z29yeU1hbmFnZXIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENhdGVnb3J5RW50cnkoY29uc3Qg
Y2hhciAqYUNhdGVnb3J5LCBjb25zdCBjaGFyICphRW50cnksIGNoYXIgKipfcmV0dmFsKSA9IDA7
CiMgNTMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDYXRlZ29yeU1hbmFnZXIuaCIK
ICB2aXJ0dWFsIG5zcmVzdWx0IEFkZENhdGVnb3J5RW50cnkoY29uc3QgY2hhciAqYUNhdGVnb3J5
LCBjb25zdCBjaGFyICphRW50cnksIGNvbnN0IGNoYXIgKmFWYWx1ZSwgUFJCb29sIGFQZXJzaXN0
LCBQUkJvb2wgYVJlcGxhY2UsIGNoYXIgKipfcmV0dmFsKSA9IDA7CiMgNjIgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS94cGNvbS9uc0lDYXRlZ29yeU1hbmFnZXIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0
IERlbGV0ZUNhdGVnb3J5RW50cnkoY29uc3QgY2hhciAqYUNhdGVnb3J5LCBjb25zdCBjaGFyICph
RW50cnksIFBSQm9vbCBhUGVyc2lzdCkgPSAwOwoKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IERl
bGV0ZUNhdGVnb3J5KGNvbnN0IGNoYXIgKmFDYXRlZ29yeSkgPSAwOwoKCgoKCgogIHZpcnR1YWwg
bnNyZXN1bHQgRW51bWVyYXRlQ2F0ZWdvcnkoY29uc3QgY2hhciAqYUNhdGVnb3J5LCBuc0lTaW1w
bGVFbnVtZXJhdG9yICoqX3JldHZhbCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgRW51
bWVyYXRlQ2F0ZWdvcmllcyhuc0lTaW1wbGVFbnVtZXJhdG9yICoqX3JldHZhbCkgPSAwOwoKfTsK
IyA0NSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29tL25zSUNvbXBvbmVudFJlZ2lzdHJhci5oIiAxCiMgMTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS94cGNvbS9uc0lDb21wb25lbnRSZWdpc3RyYXIuaCIKY2xhc3MgbnNJRmlsZTsKCmNsYXNzIG5z
SUZhY3Rvcnk7CgpjbGFzcyBuc0lTaW1wbGVFbnVtZXJhdG9yOwojIDMxICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUveHBjb20vbnNJQ29tcG9uZW50UmVnaXN0cmFyLmgiCmNsYXNzIG5zSUNvbXBvbmVu
dFJlZ2lzdHJhciA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25z
dCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgyNDE3Y2JmZSwg
MHg2NWFkLCAweDQ4YTYsIHsgMHhiNCwgMHhiNiwgMHhlYiwgMHg4NCwgMHhkYiwgMHgxNywgMHg0
MywgMHg5MiB9fTsgcmV0dXJuIGlpZDt9CiMgNTkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNv
bS9uc0lDb21wb25lbnRSZWdpc3RyYXIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEF1dG9SZWdpc3Rl
cihuc0lGaWxlICphU3BlYykgPSAwOwojIDc4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20v
bnNJQ29tcG9uZW50UmVnaXN0cmFyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBBdXRvVW5yZWdpc3Rl
cihuc0lGaWxlICphU3BlYykgPSAwOwojIDk0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20v
bnNJQ29tcG9uZW50UmVnaXN0cmFyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBSZWdpc3RlckZhY3Rv
cnkoY29uc3QgbnNDSUQgJiBhQ2xhc3MsIGNvbnN0IGNoYXIgKmFDbGFzc05hbWUsIGNvbnN0IGNo
YXIgKmFDb250cmFjdElELCBuc0lGYWN0b3J5ICphRmFjdG9yeSkgPSAwOwojIDEwOSAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUNvbXBvbmVudFJlZ2lzdHJhci5oIgogIHZpcnR1YWwg
bnNyZXN1bHQgVW5yZWdpc3RlckZhY3RvcnkoY29uc3QgbnNDSUQgJiBhQ2xhc3MsIG5zSUZhY3Rv
cnkgKmFGYWN0b3J5KSA9IDA7CiMgMTM1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJ
Q29tcG9uZW50UmVnaXN0cmFyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBSZWdpc3RlckZhY3RvcnlM
b2NhdGlvbihjb25zdCBuc0NJRCAmIGFDbGFzcywgY29uc3QgY2hhciAqYUNsYXNzTmFtZSwgY29u
c3QgY2hhciAqYUNvbnRyYWN0SUQsIG5zSUZpbGUgKmFGaWxlLCBjb25zdCBjaGFyICphTG9hZGVy
U3RyLCBjb25zdCBjaGFyICphVHlwZSkgPSAwOwojIDE0OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3hwY29tL25zSUNvbXBvbmVudFJlZ2lzdHJhci5oIgogIHZpcnR1YWwgbnNyZXN1bHQgVW5yZWdp
c3RlckZhY3RvcnlMb2NhdGlvbihjb25zdCBuc0NJRCAmIGFDbGFzcywgbnNJRmlsZSAqYUZpbGUp
ID0gMDsKIyAxNjEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb21wb25lbnRSZWdp
c3RyYXIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IElzQ0lEUmVnaXN0ZXJlZChjb25zdCBuc0NJRCAm
IGFDbGFzcywgUFJCb29sICpfcmV0dmFsKSA9IDA7CiMgMTczICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUveHBjb20vbnNJQ29tcG9uZW50UmVnaXN0cmFyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBJc0Nv
bnRyYWN0SURSZWdpc3RlcmVkKGNvbnN0IGNoYXIgKmFDb250cmFjdElELCBQUkJvb2wgKl9yZXR2
YWwpID0gMDsKIyAxODUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb21wb25lbnRS
ZWdpc3RyYXIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEVudW1lcmF0ZUNJRHMobnNJU2ltcGxlRW51
bWVyYXRvciAqKl9yZXR2YWwpID0gMDsKIyAxOTggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNv
bS9uc0lDb21wb25lbnRSZWdpc3RyYXIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEVudW1lcmF0ZUNv
bnRyYWN0SURzKG5zSVNpbXBsZUVudW1lcmF0b3IgKipfcmV0dmFsKSA9IDA7CiMgMjA4ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJQ29tcG9uZW50UmVnaXN0cmFyLmgiCiAgdmlydHVh
bCBuc3Jlc3VsdCBDSURUb0NvbnRyYWN0SUQoY29uc3QgbnNDSUQgJiBhQ2xhc3MsIGNoYXIgKipf
cmV0dmFsKSA9IDA7CiMgMjE4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJQ29tcG9u
ZW50UmVnaXN0cmFyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBDb250cmFjdElEVG9DSUQoY29uc3Qg
Y2hhciAqYUNvbnRyYWN0SUQsIG5zQ0lEICogKl9yZXR2YWwpID0gMDsKCn07CiMgNDYgIm5zRE9N
Q2xhc3NJbmZvLmNwcCIgMgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJU3Vw
cG9ydHNQcmltaXRpdmVzLmgiIDEKIyAzMyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25z
SVN1cHBvcnRzUHJpbWl0aXZlcy5oIgpjbGFzcyBuc0lTdXBwb3J0c1ByaW1pdGl2ZSA6IHB1Ymxp
YyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkg
e3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhkMGQ0YjEzNiwgMHgxZGQxLCAweDExYjIsIHsg
MHg5MywgMHg3MSwgMHhmMCwgMHg3MiwgMHg3ZSwgMHhmOCwgMHgyNywgMHhjMCB9fTsgcmV0dXJu
IGlpZDt9CgogIGVudW0geyBUWVBFX0lEID0gMVUgfTsKCiAgZW51bSB7IFRZUEVfQ1NUUklORyA9
IDJVIH07CgogIGVudW0geyBUWVBFX1NUUklORyA9IDNVIH07CgogIGVudW0geyBUWVBFX1BSQk9P
TCA9IDRVIH07CgogIGVudW0geyBUWVBFX1BSVUlOVDggPSA1VSB9OwoKICBlbnVtIHsgVFlQRV9Q
UlVJTlQxNiA9IDZVIH07CgogIGVudW0geyBUWVBFX1BSVUlOVDMyID0gN1UgfTsKCiAgZW51bSB7
IFRZUEVfUFJVSU5UNjQgPSA4VSB9OwoKICBlbnVtIHsgVFlQRV9QUlRJTUUgPSA5VSB9OwoKICBl
bnVtIHsgVFlQRV9DSEFSID0gMTBVIH07CgogIGVudW0geyBUWVBFX1BSSU5UMTYgPSAxMVUgfTsK
CiAgZW51bSB7IFRZUEVfUFJJTlQzMiA9IDEyVSB9OwoKICBlbnVtIHsgVFlQRV9QUklOVDY0ID0g
MTNVIH07CgogIGVudW0geyBUWVBFX0ZMT0FUID0gMTRVIH07CgogIGVudW0geyBUWVBFX0RPVUJM
RSA9IDE1VSB9OwoKICBlbnVtIHsgVFlQRV9WT0lEID0gMTZVIH07CgogIGVudW0geyBUWVBFX0lO
VEVSRkFDRV9QT0lOVEVSID0gMTdVIH07CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFR5cGUoUFJV
aW50MTYgKmFUeXBlKSA9IDA7Cgp9OwojIDEzOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29t
L25zSVN1cHBvcnRzUHJpbWl0aXZlcy5oIgpjbGFzcyBuc0lTdXBwb3J0c0lEIDogcHVibGljIG5z
SVN1cHBvcnRzUHJpbWl0aXZlIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJ
SUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGQxODI5MGEwLCAweDRhMWMsIDB4MTFk
MywgeyAweDk4LCAweDkwLCAweDAwLCAweDYwLCAweDA4LCAweDk2LCAweDI0LCAweDIyIH19OyBy
ZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RGF0YShuc0lEICogKmFEYXRhKSA9
IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXREYXRhKGNvbnN0IG5zSUQgKiBhRGF0YSkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBUb1N0cmluZyhjaGFyICoqX3JldHZhbCkgPSAwOwoKfTsKIyAy
MzEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0c1ByaW1pdGl2ZXMuaCIK
Y2xhc3MgbnNJU3VwcG9ydHNDU3RyaW5nIDogcHVibGljIG5zSVN1cHBvcnRzUHJpbWl0aXZlIHsK
IHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5z
SUlEIGlpZCA9IHsweGQ2NWZmMjcwLCAweDRhMWMsIDB4MTFkMywgeyAweDk4LCAweDkwLCAweDAw
LCAweDYwLCAweDA4LCAweDk2LCAweDI0LCAweDIyIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0RGF0YShuc0FDU3RyaW5nICYgYURhdGEpID0gMDsKICB2aXJ0dWFsIG5z
cmVzdWx0IFNldERhdGEoY29uc3QgbnNBQ1N0cmluZyAmIGFEYXRhKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IFRvU3RyaW5nKGNoYXIgKipfcmV0dmFsKSA9IDA7Cgp9OwojIDMyMyAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN1cHBvcnRzUHJpbWl0aXZlcy5oIgpjbGFzcyBuc0lT
dXBwb3J0c1N0cmluZyA6IHB1YmxpYyBuc0lTdXBwb3J0c1ByaW1pdGl2ZSB7CiBwdWJsaWM6Cgog
IHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7
MHhkNzlkYzk3MCwgMHg0YTFjLCAweDExZDMsIHsgMHg5OCwgMHg5MCwgMHgwMCwgMHg2MCwgMHgw
OCwgMHg5NiwgMHgyNCwgMHgyMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldERhdGEobnNBU3RyaW5nICYgYURhdGEpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldERh
dGEoY29uc3QgbnNBU3RyaW5nICYgYURhdGEpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgVG9T
dHJpbmcoUFJVbmljaGFyICoqX3JldHZhbCkgPSAwOwoKfTsKIyA0MTggIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0c1ByaW1pdGl2ZXMuaCIKY2xhc3MgbnNJU3VwcG9ydHNQ
UkJvb2wgOiBwdWJsaWMgbnNJU3VwcG9ydHNQcmltaXRpdmUgewogcHVibGljOgoKICBzdGF0aWMg
Y29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4ZGRjM2I0
OTAsIDB4NGExYywgMHgxMWQzLCB7IDB4OTgsIDB4OTAsIDB4MDAsIDB4NjAsIDB4MDgsIDB4OTYs
IDB4MjQsIDB4MjIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREYXRh
KFBSQm9vbCAqYURhdGEpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldERhdGEoUFJCb29sIGFE
YXRhKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFRvU3RyaW5nKGNoYXIgKipfcmV0dmFsKSA9
IDA7Cgp9OwojIDUxMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN1cHBvcnRzUHJp
bWl0aXZlcy5oIgpjbGFzcyBuc0lTdXBwb3J0c1BSVWludDggOiBwdWJsaWMgbnNJU3VwcG9ydHNQ
cmltaXRpdmUgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0
aWMgY29uc3QgbnNJSUQgaWlkID0gezB4ZGVjMmU0ZTAsIDB4NGExYywgMHgxMWQzLCB7IDB4OTgs
IDB4OTAsIDB4MDAsIDB4NjAsIDB4MDgsIDB4OTYsIDB4MjQsIDB4MjIgfX07IHJldHVybiBpaWQ7
fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREYXRhKFBSVWludDggKmFEYXRhKSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXREYXRhKFBSVWludDggYURhdGEpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgVG9TdHJpbmcoY2hhciAqKl9yZXR2YWwpID0gMDsKCn07CiMgNjAyICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUveHBjb20vbnNJU3VwcG9ydHNQcmltaXRpdmVzLmgiCmNsYXNzIG5zSVN1cHBv
cnRzUFJVaW50MTYgOiBwdWJsaWMgbnNJU3VwcG9ydHNQcmltaXRpdmUgewogcHVibGljOgoKICBz
dGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4
ZGZhY2IwOTAsIDB4NGExYywgMHgxMWQzLCB7IDB4OTgsIDB4OTAsIDB4MDAsIDB4NjAsIDB4MDgs
IDB4OTYsIDB4MjQsIDB4MjIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXREYXRhKFBSVWludDE2ICphRGF0YSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RGF0YShQ
UlVpbnQxNiBhRGF0YSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBUb1N0cmluZyhjaGFyICoq
X3JldHZhbCkgPSAwOwoKfTsKIyA2OTQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lT
dXBwb3J0c1ByaW1pdGl2ZXMuaCIKY2xhc3MgbnNJU3VwcG9ydHNQUlVpbnQzMiA6IHB1YmxpYyBu
c0lTdXBwb3J0c1ByaW1pdGl2ZSB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0
SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhlMDFkYzQ3MCwgMHg0YTFjLCAweDEx
ZDMsIHsgMHg5OCwgMHg5MCwgMHgwMCwgMHg2MCwgMHgwOCwgMHg5NiwgMHgyNCwgMHgyMiB9fTsg
cmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERhdGEoUFJVaW50MzIgKmFEYXRh
KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXREYXRhKFBSVWludDMyIGFEYXRhKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IFRvU3RyaW5nKGNoYXIgKipfcmV0dmFsKSA9IDA7Cgp9OwojIDc4
NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN1cHBvcnRzUHJpbWl0aXZlcy5oIgpj
bGFzcyBuc0lTdXBwb3J0c1BSVWludDY0IDogcHVibGljIG5zSVN1cHBvcnRzUHJpbWl0aXZlIHsK
IHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5z
SUlEIGlpZCA9IHsweGUxMzU2N2MwLCAweDRhMWMsIDB4MTFkMywgeyAweDk4LCAweDkwLCAweDAw
LCAweDYwLCAweDA4LCAweDk2LCAweDI0LCAweDIyIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0RGF0YShQUlVpbnQ2NCAqYURhdGEpID0gMDsKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldERhdGEoUFJVaW50NjQgYURhdGEpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgVG9T
dHJpbmcoY2hhciAqKl9yZXR2YWwpID0gMDsKCn07CiMgODc4ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUveHBjb20vbnNJU3VwcG9ydHNQcmltaXRpdmVzLmgiCmNsYXNzIG5zSVN1cHBvcnRzUFJUaW1l
IDogcHVibGljIG5zSVN1cHBvcnRzUHJpbWl0aXZlIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0
IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGUyNTYzNjMwLCAw
eDRhMWMsIDB4MTFkMywgeyAweDk4LCAweDkwLCAweDAwLCAweDYwLCAweDA4LCAweDk2LCAweDI0
LCAweDIyIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RGF0YShQUlRp
bWUgKmFEYXRhKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXREYXRhKFBSVGltZSBhRGF0YSkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBUb1N0cmluZyhjaGFyICoqX3JldHZhbCkgPSAwOwoK
fTsKIyA5NzEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0c1ByaW1pdGl2
ZXMuaCIKY2xhc3MgbnNJU3VwcG9ydHNDaGFyIDogcHVibGljIG5zSVN1cHBvcnRzUHJpbWl0aXZl
IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0
IG5zSUlEIGlpZCA9IHsweGUyYjA1ZTQwLCAweDRhMWMsIDB4MTFkMywgeyAweDk4LCAweDkwLCAw
eDAwLCAweDYwLCAweDA4LCAweDk2LCAweDI0LCAweDIyIH19OyByZXR1cm4gaWlkO30KCgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0RGF0YShjaGFyICphRGF0YSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0RGF0YShjaGFyIGFEYXRhKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFRvU3RyaW5n
KGNoYXIgKipfcmV0dmFsKSA9IDA7Cgp9OwojIDEwNjMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94
cGNvbS9uc0lTdXBwb3J0c1ByaW1pdGl2ZXMuaCIKY2xhc3MgbnNJU3VwcG9ydHNQUkludDE2IDog
cHVibGljIG5zSVN1cHBvcnRzUHJpbWl0aXZlIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5z
SUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGUzMGQ5NGIwLCAweDRh
MWMsIDB4MTFkMywgeyAweDk4LCAweDkwLCAweDAwLCAweDYwLCAweDA4LCAweDk2LCAweDI0LCAw
eDIyIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RGF0YShQUkludDE2
ICphRGF0YSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RGF0YShQUkludDE2IGFEYXRhKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFRvU3RyaW5nKGNoYXIgKipfcmV0dmFsKSA9IDA7Cgp9
OwojIDExNTUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0c1ByaW1pdGl2
ZXMuaCIKY2xhc3MgbnNJU3VwcG9ydHNQUkludDMyIDogcHVibGljIG5zSVN1cHBvcnRzUHJpbWl0
aXZlIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNv
bnN0IG5zSUlEIGlpZCA9IHsweGUzNmM1MjUwLCAweDRhMWMsIDB4MTFkMywgeyAweDk4LCAweDkw
LCAweDAwLCAweDYwLCAweDA4LCAweDk2LCAweDI0LCAweDIyIH19OyByZXR1cm4gaWlkO30KCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0RGF0YShQUkludDMyICphRGF0YSkgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0RGF0YShQUkludDMyIGFEYXRhKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IFRvU3RyaW5nKGNoYXIgKipfcmV0dmFsKSA9IDA7Cgp9OwojIDEyNDcgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0c1ByaW1pdGl2ZXMuaCIKY2xhc3MgbnNJU3VwcG9ydHNQ
UkludDY0IDogcHVibGljIG5zSVN1cHBvcnRzUHJpbWl0aXZlIHsKIHB1YmxpYzoKCiAgc3RhdGlj
IGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGUzY2Iw
ZmYwLCAweDRhMWMsIDB4MTFkMywgeyAweDk4LCAweDkwLCAweDAwLCAweDYwLCAweDA4LCAweDk2
LCAweDI0LCAweDIyIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RGF0
YShQUkludDY0ICphRGF0YSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RGF0YShQUkludDY0
IGFEYXRhKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFRvU3RyaW5nKGNoYXIgKipfcmV0dmFs
KSA9IDA7Cgp9OwojIDEzMzkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0
c1ByaW1pdGl2ZXMuaCIKY2xhc3MgbnNJU3VwcG9ydHNGbG9hdCA6IHB1YmxpYyBuc0lTdXBwb3J0
c1ByaW1pdGl2ZSB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0
YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhYmVhYTM5MCwgMHg0YWMwLCAweDExZDMsIHsgMHhi
YSwgMHhlYSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHg1ZCwgMHhkNyB9fTsgcmV0dXJuIGlp
ZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERhdGEoZmxvYXQgKmFEYXRhKSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXREYXRhKGZsb2F0IGFEYXRhKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IFRvU3RyaW5nKGNoYXIgKipfcmV0dmFsKSA9IDA7Cgp9OwojIDE0MzEgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0c1ByaW1pdGl2ZXMuaCIKY2xhc3MgbnNJU3VwcG9y
dHNEb3VibGUgOiBwdWJsaWMgbnNJU3VwcG9ydHNQcmltaXRpdmUgewogcHVibGljOgoKICBzdGF0
aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YjMy
NTIzYTAsIDB4NGFjMCwgMHgxMWQzLCB7IDB4YmEsIDB4ZWEsIDB4MDAsIDB4ODAsIDB4NWYsIDB4
OGEsIDB4NWQsIDB4ZDcgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRE
YXRhKGRvdWJsZSAqYURhdGEpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldERhdGEoZG91Ymxl
IGFEYXRhKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFRvU3RyaW5nKGNoYXIgKipfcmV0dmFs
KSA9IDA7Cgp9OwojIDE1MjMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0
c1ByaW1pdGl2ZXMuaCIKY2xhc3MgbnNJU3VwcG9ydHNWb2lkIDogcHVibGljIG5zSVN1cHBvcnRz
UHJpbWl0aXZlIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3Rh
dGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDQ2NDQ4NGYwLCAweDU2OGQsIDB4MTFkMywgeyAweGJh
LCAweGY4LCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweDVkLCAweGQ3IH19OyByZXR1cm4gaWlk
O30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RGF0YSh2b2lkICogKmFEYXRhKSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXREYXRhKHZvaWQgKiBhRGF0YSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBUb1N0cmluZyhjaGFyICoqX3JldHZhbCkgPSAwOwoKfTsKIyAxNjE1ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUveHBjb20vbnNJU3VwcG9ydHNQcmltaXRpdmVzLmgiCmNsYXNzIG5zSVN1cHBv
cnRzSW50ZXJmYWNlUG9pbnRlciA6IHB1YmxpYyBuc0lTdXBwb3J0c1ByaW1pdGl2ZSB7CiBwdWJs
aWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBp
aWQgPSB7MHg5OTVlYTcyNCwgMHgxZGQxLCAweDExYjIsIHsgMHg5MiwgMHgxMSwgMHhjMiwgMHgx
YiwgMHhkZCwgMHgzZSwgMHg3ZSwgMHhkMCB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldERhdGEobnNJU3VwcG9ydHMgKiAqYURhdGEpID0gMDsKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldERhdGEobnNJU3VwcG9ydHMgKiBhRGF0YSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXREYXRhSUlEKG5zSUQgKiAqYURhdGFJSUQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dERhdGFJSUQoY29uc3QgbnNJRCAqIGFEYXRhSUlEKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IFRvU3RyaW5nKGNoYXIgKipfcmV0dmFsKSA9IDA7Cgp9OwojIDQ4ICJuc0RPTUNsYXNzSW5mby5j
cHAiIDIKCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29ubmVjdC9uc0lKU0NvbnRleHRT
dGFjay5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbm5lY3QvbnNJSlNDb250
ZXh0U3RhY2suaCIKY2xhc3MgbnNJSlNDb250ZXh0U3RhY2sgOiBwdWJsaWMgbnNJU3VwcG9ydHMg
ewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3Qg
bnNJSUQgaWlkID0gezB4YzY3ZDgyNzAsIDB4MzE4OSwgMHgxMWQzLCB7IDB4OTgsIDB4ODUsIDB4
MDAsIDB4NjAsIDB4MDgsIDB4OTYsIDB4MjQsIDB4MjIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRDb3VudChQUkludDMyICphQ291bnQpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgUGVlayhKU0NvbnRleHQgKiAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBQb3AoSlNDb250ZXh0ICogKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
UHVzaChKU0NvbnRleHQgKiBjeCkgPSAwOwoKfTsKIyAxMjggIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS94cGNvbm5lY3QvbnNJSlNDb250ZXh0U3RhY2suaCIKY2xhc3MgbnNJVGhyZWFkSlNDb250ZXh0
U3RhY2sgOiBwdWJsaWMgbnNJSlNDb250ZXh0U3RhY2sgewogcHVibGljOgoKICBzdGF0aWMgY29u
c3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTEzMzlhZTAs
IDB4MDVjMSwgMHgxMWQ0LCB7IDB4OGYsIDB4OTIsIDB4MDAsIDB4MTAsIDB4YTQsIDB4ZTcsIDB4
M2QsIDB4OWEgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTYWZlSlND
b250ZXh0KEpTQ29udGV4dCAqICphU2FmZUpTQ29udGV4dCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0U2FmZUpTQ29udGV4dChKU0NvbnRleHQgKiBhU2FmZUpTQ29udGV4dCkgPSAwOwoKfTsK
IyA1MCAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2Rv
bS9uc0lTY3JpcHRDb250ZXh0LmgiIDEKIyA0NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9u
c0lTY3JpcHRDb250ZXh0LmgiCmNsYXNzIG5zSVNjcmlwdEdsb2JhbE9iamVjdDsKY2xhc3MgbnNJ
U2NyaXB0U2VjdXJpdHlNYW5hZ2VyOwpjbGFzcyBuc0lTY3JpcHRDb250ZXh0T3duZXI7CmNsYXNz
IG5zSVByaW5jaXBhbDsKY2xhc3MgbnNJQXRvbTsKCnR5cGVkZWYgdm9pZCAoKm5zU2NyaXB0VGVy
bWluYXRpb25GdW5jKShuc0lTdXBwb3J0cyogYVJlZik7CiMgNjYgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9kb20vbnNJU2NyaXB0Q29udGV4dC5oIgpjbGFzcyBuc0lTY3JpcHRDb250ZXh0IDogcHVi
bGljIG5zSVN1cHBvcnRzIHsKcHVibGljOgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkg
e3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7IDB4OGY2YmNhN2QsIDB4Y2U0MiwgMHgxMWQxLCB7
MHhiNywgMHgyNCwgMHgwMCwgMHg2MCwgMHgwOCwgMHg5MSwgMHhkOCwgMHhjOX0gfTsgcmV0dXJu
IGlpZDt9CiMgODcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJU2NyaXB0Q29udGV4dC5o
IgogIHZpcnR1YWwgbnNyZXN1bHQgRXZhbHVhdGVTdHJpbmcoY29uc3QgbnNBU3RyaW5nJiBhU2Ny
aXB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYVNjb3BlT2JqZWN0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnNJUHJpbmNpcGFsICphUHJpbmNpcGFsLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYVVSTCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBSVWludDMyIGFMaW5lTm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBhVmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zQVN0cmlu
ZyYgYVJldFZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJCb29sKiBhSXNVbmRl
ZmluZWQpID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBFdmFsdWF0ZVN0cmluZ1dpdGhWYWx1ZShj
b25zdCBuc0FTdHJpbmcmIGFTY3JpcHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkICphU2NvcGVPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuc0lQcmluY2lwYWwgKmFQcmluY2lwYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICphVVJMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUFJVaW50MzIgYUxpbmVObywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGFWZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdm9pZCogYVJldFZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUFJCb29sKiBhSXNVbmRlZmluZWQpID0gMDsKIyAxMjMgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9kb20vbnNJU2NyaXB0Q29udGV4dC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgQ29tcGlsZVNj
cmlwdChjb25zdCBQUlVuaWNoYXIqIGFUZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBQ
UkludDMyIGFUZXh0TGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBhU2Nv
cGVPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVByaW5jaXBhbCogYVByaW5j
aXBhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYVVSTCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUFJVaW50MzIgYUxpbmVObywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogYVZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZvaWQqKiBhU2NyaXB0T2JqZWN0KSA9IDA7CiMgMTQ2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
ZG9tL25zSVNjcmlwdENvbnRleHQuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEV4ZWN1dGVTY3JpcHQo
dm9pZCogYVNjcmlwdE9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogYVNj
b3BlT2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBuc0FTdHJpbmcqIGFSZXRWYWx1
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJCb29sKiBhSXNVbmRlZmluZWQpID0gMDsK
IyAxNzMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJU2NyaXB0Q29udGV4dC5oIgogIHZp
cnR1YWwgbnNyZXN1bHQgQ29tcGlsZUV2ZW50SGFuZGxlcih2b2lkKiBhVGFyZ2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lBdG9tKiBhTmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgbnNBU3RyaW5nJiBhQm9keSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUFJCb29sIGFTaGFyZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQqKiBhSGFuZGxlcikgPSAwOwojIDE5MSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2RvbS9uc0lTY3JpcHRDb250ZXh0LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBDYWxsRXZlbnRI
YW5kbGVyKHZvaWQqIGFUYXJnZXQsIHZvaWQqIGFIYW5kbGVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQUlVpbnQzMiBhcmdjLCB2b2lkKiBhcmd2LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQUkJvb2wqIGFCb29sUmVzdWx0LCBQUkJvb2wgYVJldmVyc2VSZXR1cm5SZXN1
bHQpID0gMDsKIyAyMTEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJU2NyaXB0Q29udGV4
dC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgQmluZENvbXBpbGVkRXZlbnRIYW5kbGVyKHZvaWQqIGFU
YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQXRvbSogYU5h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogYUhhbmRsZXIp
ID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBDb21waWxlRnVuY3Rpb24odm9pZCogYVRhcmdldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuc0NTdHJpbmcmIGFOYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBSVWludDMyIGFBcmdDb3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiogYUFyZ0FycmF5LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IG5zQVN0cmluZyYgYUJvZHksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogYVVSTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
UlVpbnQzMiBhTGluZU5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCBhU2hh
cmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqKiBhRnVuY3Rpb25PYmplY3Qp
ID0gMDsKCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXREZWZhdWx0TGFuZ3VhZ2VWZXJzaW9u
KGNvbnN0IGNoYXIqIGFWZXJzaW9uKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEds
b2JhbE9iamVjdChuc0lTY3JpcHRHbG9iYWxPYmplY3QqKiBhR2xvYmFsT2JqZWN0KSA9IDA7CgoK
CgoKICB2aXJ0dWFsIHZvaWQqIEdldE5hdGl2ZUNvbnRleHQoKSA9IDA7CiMgMjUzICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvZG9tL25zSVNjcmlwdENvbnRleHQuaCIKICB2aXJ0dWFsIG5zcmVzdWx0
IEluaXRDb250ZXh0KG5zSVNjcmlwdEdsb2JhbE9iamVjdCAqYUdsb2JhbE9iamVjdCkgPSAwOwoj
IDI2MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lTY3JpcHRDb250ZXh0LmgiCiAgdmly
dHVhbCBuc3Jlc3VsdCBJc0NvbnRleHRJbml0aWFsaXplZCgpID0gMDsKCgoKCgoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHQygpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2VjdXJpdHlN
YW5hZ2VyKG5zSVNjcmlwdFNlY3VyaXR5TWFuYWdlcioqIGFJbnN0YW5jZVB0cikgPSAwOwojIDI5
MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lTY3JpcHRDb250ZXh0LmgiCiAgdmlydHVh
bCBuc3Jlc3VsdCBTY3JpcHRFdmFsdWF0ZWQoUFJCb29sIGFUZXJtaW5hdGVkKSA9IDA7CgoKCgoK
CgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0T3duZXIobnNJU2NyaXB0Q29udGV4dE93bmVyKiBvd25l
cikgPSAwOwoKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE93bmVyKG5zSVNjcmlwdENvbnRl
eHRPd25lcioqIG93bmVyKSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VGVybWlu
YXRpb25GdW5jdGlvbihuc1NjcmlwdFRlcm1pbmF0aW9uRnVuYyBhRnVuYywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3VwcG9ydHMqIGFSZWYpID0gMDsKCgoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRTY3JpcHRzRW5hYmxlZChQUkJvb2wgKmFFbmFibGVkKSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXRTY3JpcHRzRW5hYmxlZChQUkJvb2wgYUVuYWJsZWQsIFBSQm9v
bCBhRmlyZVRpbWVvdXRzKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByb2Nlc3Np
bmdTY3JpcHRUYWcoUFJCb29sICogYVJlc3VsdCkgPTA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRQ
cm9jZXNzaW5nU2NyaXB0VGFnKFBSQm9vbCBhUmVzdWx0KSA9MDsKCgoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXRHQ09uRGVzdHJ1Y3Rpb24oUFJCb29sIGFHQ09uRGVzdHJ1Y3Rpb24pID0gMDsKfTsK
IyA1MSAibnNET01DbGFzc0luZm8uY3BwIiAyCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
c3RyaW5nL25zUmVhZGFibGVVdGlscy5oIiAxCiMgMzkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9z
dHJpbmcvbnNSZWFkYWJsZVV0aWxzLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmlu
Zy9uc0FTdHJpbmdHZW5lcmF0b3IuaCIgMQojIDM5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3Ry
aW5nL25zQVN0cmluZ0dlbmVyYXRvci5oIgpjbGFzcyBuc0FTdHJpbmc7CmNsYXNzIG5zQUNTdHJp
bmc7CgpjbGFzcyBuc0FTdHJpbmdHZW5lcmF0b3IKICB7CiAgICBwdWJsaWM6CiAgICAgIHZpcnR1
YWwgfm5zQVN0cmluZ0dlbmVyYXRvcigpIHsgfQoKICAgICAgdmlydHVhbCBQUlVuaWNoYXIqIG9w
ZXJhdG9yKCkoIFBSVW5pY2hhciogYURlc3RCdWZmZXIgKSBjb25zdCA9IDA7CiAgICAgIHZpcnR1
YWwgUFJVaW50MzIgTGVuZ3RoKCkgY29uc3QgPSAwOwogICAgICB2aXJ0dWFsIFBSVWludDMyIE1h
eExlbmd0aCgpIGNvbnN0ID0gMDsKICAgICAgdmlydHVhbCBQUkJvb2wgSXNEZXBlbmRlbnRPbigg
Y29uc3QgbnNBU3RyaW5nJiApIGNvbnN0ID0gMDsKICB9OwoKY2xhc3MgbnNBQ1N0cmluZ0dlbmVy
YXRvcgogIHsKICAgIHB1YmxpYzoKICAgICAgdmlydHVhbCB+bnNBQ1N0cmluZ0dlbmVyYXRvcigp
IHsgfQoKICAgICAgdmlydHVhbCBjaGFyKiBvcGVyYXRvcigpKCBjaGFyKiBhRGVzdEJ1ZmZlciAp
IGNvbnN0ID0gMDsKICAgICAgdmlydHVhbCBQUlVpbnQzMiBMZW5ndGgoKSBjb25zdCA9IDA7CiAg
ICAgIHZpcnR1YWwgUFJVaW50MzIgTWF4TGVuZ3RoKCkgY29uc3QgPSAwOwogICAgICB2aXJ0dWFs
IFBSQm9vbCBJc0RlcGVuZGVudE9uKCBjb25zdCBuc0FDU3RyaW5nJiApIGNvbnN0ID0gMDsKICB9
OwojIDQwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zUmVhZGFibGVVdGlscy5oIiAy
CgoKY2xhc3MgbnNBU2luZ2xlRnJhZ21lbnRDU3RyaW5nOwpjbGFzcyBuc0NTdHJpbmc7Cgogc2l6
ZV90IERpc3RhbmNlKCBjb25zdCBuc0FTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgbnNB
U3RyaW5nOjpjb25zdF9pdGVyYXRvciYgKTsKIHNpemVfdCBEaXN0YW5jZSggY29uc3QgbnNBQ1N0
cmluZzo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBuc0FDU3RyaW5nOjpjb25zdF9pdGVyYXRvciYg
KTsKCgogdm9pZCBDb3B5VUNTMnRvQVNDSUkoIGNvbnN0IG5zQVN0cmluZyYgYVNvdXJjZSwgbnNB
Q1N0cmluZyYgYURlc3QgKTsKIHZvaWQgQ29weUFTQ0lJdG9VQ1MyKCBjb25zdCBuc0FDU3RyaW5n
JiBhU291cmNlLCBuc0FTdHJpbmcmIGFEZXN0ICk7CiMgNjMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9zdHJpbmcvbnNSZWFkYWJsZVV0aWxzLmgiCiBjaGFyKiBUb05ld0NTdHJpbmcoIGNvbnN0IG5z
QVN0cmluZyYgYVNvdXJjZSApOwojIDc1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25z
UmVhZGFibGVVdGlscy5oIgogY2hhciogVG9OZXdDU3RyaW5nKCBjb25zdCBuc0FDU3RyaW5nJiBh
U291cmNlICk7CiMgODggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNSZWFkYWJsZVV0
aWxzLmgiCiBjaGFyKiBUb05ld1VURjhTdHJpbmcoIGNvbnN0IG5zQVN0cmluZyYgYVNvdXJjZSAp
OwojIDEwMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1JlYWRhYmxlVXRpbHMuaCIK
IFBSVW5pY2hhciogVG9OZXdVbmljb2RlKCBjb25zdCBuc0FTdHJpbmcmIGFTb3VyY2UgKTsKIyAx
MTQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNSZWFkYWJsZVV0aWxzLmgiCiBQUlVu
aWNoYXIqIFRvTmV3VW5pY29kZSggY29uc3QgbnNBQ1N0cmluZyYgYVNvdXJjZSApOwojIDEyOCAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1JlYWRhYmxlVXRpbHMuaCIKIFBSVW5pY2hh
ciogQ29weVVuaWNvZGVUbyggY29uc3QgbnNBU3RyaW5nJiBhU291cmNlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQUlVpbnQzMiBhU3JjT2Zmc2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQUlVuaWNoYXIqIGFEZXN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQUlVpbnQzMiBhTGVuZ3RoICk7CiMgMTQ1ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvc3RyaW5nL25zUmVhZGFibGVVdGlscy5oIgogdm9pZCBDb3B5VW5pY29kZVRvKCBjb25zdCBu
c0FTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yJiBhU3JjU3RhcnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IG5zQVN0cmluZzo6Y29uc3RfaXRlcmF0b3ImIGFTcmNFbmQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5zQVN0cmluZyYgYURlc3QgKTsKIyAxNTkgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9zdHJpbmcvbnNSZWFkYWJsZVV0aWxzLmgiCiB2b2lkIEFwcGVuZFVuaWNvZGVU
byggY29uc3QgbnNBU3RyaW5nOjpjb25zdF9pdGVyYXRvciYgYVNyY1N0YXJ0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IG5zQVN0cmluZzo6Y29uc3RfaXRlcmF0b3ImIGFTcmNF
bmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNBU3RyaW5nJiBhRGVzdCApOwoKCgoK
CgogUFJCb29sIElzQVNDSUkoIGNvbnN0IG5zQVN0cmluZyYgYVN0cmluZyApOwoKCgoKCgogUFJC
b29sIElzQVNDSUkoIGNvbnN0IG5zQUNTdHJpbmcmIGFTdHJpbmcgKTsKCgoKCgoKIHZvaWQgVG9V
cHBlckNhc2UoIG5zQUNTdHJpbmcmICk7Cgogdm9pZCBUb0xvd2VyQ2FzZSggbnNBQ1N0cmluZyYg
KTsKCiB2b2lkIFRvVXBwZXJDYXNlKCBuc0FTaW5nbGVGcmFnbWVudENTdHJpbmcmICk7Cgogdm9p
ZCBUb0xvd2VyQ2FzZSggbnNBU2luZ2xlRnJhZ21lbnRDU3RyaW5nJiApOwoKIHZvaWQgVG9VcHBl
ckNhc2UoIG5zQ1N0cmluZyYgKTsKCiB2b2lkIFRvTG93ZXJDYXNlKCBuc0NTdHJpbmcmICk7CgoK
Cgogdm9pZCBUb1VwcGVyQ2FzZSggY29uc3QgbnNBQ1N0cmluZyYgYVNvdXJjZSwgbnNBQ1N0cmlu
ZyYgYURlc3QgKTsKCiB2b2lkIFRvTG93ZXJDYXNlKCBjb25zdCBuc0FDU3RyaW5nJiBhU291cmNl
LCBuc0FDU3RyaW5nJiBhRGVzdCApOwojIDIxMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmlu
Zy9uc1JlYWRhYmxlVXRpbHMuaCIKIFBSQm9vbCBGaW5kSW5SZWFkYWJsZSggY29uc3QgbnNBU3Ry
aW5nJiBhUGF0dGVybiwgbnNBU3RyaW5nOjpjb25zdF9pdGVyYXRvciYsIG5zQVN0cmluZzo6Y29u
c3RfaXRlcmF0b3ImLCBjb25zdCBuc1N0cmluZ0NvbXBhcmF0b3ImID0gbnNEZWZhdWx0U3RyaW5n
Q29tcGFyYXRvcigpICk7CiBQUkJvb2wgRmluZEluUmVhZGFibGUoIGNvbnN0IG5zQUNTdHJpbmcm
IGFQYXR0ZXJuLCBuc0FDU3RyaW5nOjpjb25zdF9pdGVyYXRvciYsIG5zQUNTdHJpbmc6OmNvbnN0
X2l0ZXJhdG9yJiwgY29uc3QgbnNDU3RyaW5nQ29tcGFyYXRvciYgPSBuc0RlZmF1bHRDU3RyaW5n
Q29tcGFyYXRvcigpICk7CgoKCmlubGluZSBQUkJvb2wgRmluZEluUmVhZGFibGUoIGNvbnN0IG5z
QVN0cmluZyYgYVBhdHRlcm4sIGNvbnN0IG5zQVN0cmluZyYgYVNvdXJjZSwgY29uc3QgbnNTdHJp
bmdDb21wYXJhdG9yJiBjb21wYXJlID0gbnNEZWZhdWx0U3RyaW5nQ29tcGFyYXRvcigpICkKewog
IG5zQVN0cmluZzo6Y29uc3RfaXRlcmF0b3Igc3RhcnQsIGVuZDsKICBhU291cmNlLkJlZ2luUmVh
ZGluZyhzdGFydCk7CiAgYVNvdXJjZS5FbmRSZWFkaW5nKGVuZCk7CiAgcmV0dXJuIEZpbmRJblJl
YWRhYmxlKGFQYXR0ZXJuLCBzdGFydCwgZW5kLCBjb21wYXJlKTsKfQoKaW5saW5lIFBSQm9vbCBG
aW5kSW5SZWFkYWJsZSggY29uc3QgbnNBQ1N0cmluZyYgYVBhdHRlcm4sIGNvbnN0IG5zQUNTdHJp
bmcmIGFTb3VyY2UsIGNvbnN0IG5zQ1N0cmluZ0NvbXBhcmF0b3ImIGNvbXBhcmUgPSBuc0RlZmF1
bHRDU3RyaW5nQ29tcGFyYXRvcigpICkKewogIG5zQUNTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yIHN0
YXJ0LCBlbmQ7CiAgYVNvdXJjZS5CZWdpblJlYWRpbmcoc3RhcnQpOwogIGFTb3VyY2UuRW5kUmVh
ZGluZyhlbmQpOwogIHJldHVybiBGaW5kSW5SZWFkYWJsZShhUGF0dGVybiwgc3RhcnQsIGVuZCwg
Y29tcGFyZSk7Cn0KCgogUFJCb29sIENhc2VJbnNlbnNpdGl2ZUZpbmRJblJlYWRhYmxlKCBjb25z
dCBuc0FDU3RyaW5nJiBhUGF0dGVybiwgbnNBQ1N0cmluZzo6Y29uc3RfaXRlcmF0b3ImLCBuc0FD
U3RyaW5nOjpjb25zdF9pdGVyYXRvciYgKTsKIyAyNDMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9z
dHJpbmcvbnNSZWFkYWJsZVV0aWxzLmgiCiBQUkJvb2wgUkZpbmRJblJlYWRhYmxlKCBjb25zdCBu
c0FTdHJpbmcmIGFQYXR0ZXJuLCBuc0FTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yJiwgbnNBU3RyaW5n
Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IG5zU3RyaW5nQ29tcGFyYXRvciYgPSBuc0RlZmF1bHRT
dHJpbmdDb21wYXJhdG9yKCkgKTsKIFBSQm9vbCBSRmluZEluUmVhZGFibGUoIGNvbnN0IG5zQUNT
dHJpbmcmIGFQYXR0ZXJuLCBuc0FDU3RyaW5nOjpjb25zdF9pdGVyYXRvciYsIG5zQUNTdHJpbmc6
OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgbnNDU3RyaW5nQ29tcGFyYXRvciYgPSBuc0RlZmF1bHRD
U3RyaW5nQ29tcGFyYXRvcigpICk7CiMgMjU0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5n
L25zUmVhZGFibGVVdGlscy5oIgogUFJCb29sIEZpbmRDaGFySW5SZWFkYWJsZSggUFJVbmljaGFy
IGFDaGFyLCBuc0FTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yJiBhU2VhcmNoU3RhcnQsIGNvbnN0IG5z
QVN0cmluZzo6Y29uc3RfaXRlcmF0b3ImIGFTZWFyY2hFbmQgKTsKIFBSQm9vbCBGaW5kQ2hhcklu
UmVhZGFibGUoIGNoYXIgYUNoYXIsIG5zQUNTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yJiBhU2VhcmNo
U3RhcnQsIGNvbnN0IG5zQUNTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yJiBhU2VhcmNoRW5kICk7CgoK
CgogUFJVaW50MzIgQ291bnRDaGFySW5SZWFkYWJsZSggY29uc3QgbnNBU3RyaW5nJiBhU3RyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJVbmljaGFyIGFDaGFyICk7CiBQ
UlVpbnQzMiBDb3VudENoYXJJblJlYWRhYmxlKCBjb25zdCBuc0FDU3RyaW5nJiBhU3RyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBhQ2hhciApOwoKIFBSVWludDMy
IEhhc2hTdHJpbmcoIGNvbnN0IG5zQVN0cmluZyYgYVN0ciApOwogUFJVaW50MzIgSGFzaFN0cmlu
ZyggY29uc3QgbnNBQ1N0cmluZyYgYVN0ciApOwojIDI3NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3N0cmluZy9uc1JlYWRhYmxlVXRpbHMuaCIKY2xhc3MgbnNTdWJzdGl0dXRlU3RyaW5nCiAgICA6
IHB1YmxpYyBuc0FTdHJpbmdHZW5lcmF0b3IKICB7CiAgICBwdWJsaWM6CiAgICAgIG5zU3Vic3Rp
dHV0ZVN0cmluZyggY29uc3QgbnNBU3RyaW5nJiBhVGV4dCwgY29uc3QgbnNBU3RyaW5nJiBhUGF0
dGVybiwgY29uc3QgbnNBU3RyaW5nJiBhUmVwbGFjZW1lbnQgKQogICAgICAgICAgOiBtVGV4dChh
VGV4dCksCiAgICAgICAgICAgIG1QYXR0ZXJuKGFQYXR0ZXJuKSwKICAgICAgICAgICAgbVJlcGxh
Y2VtZW50KGFSZXBsYWNlbWVudCksCiAgICAgICAgICAgIG1OdW1iZXJPZk1hdGNoZXMoLTEpCiAg
ICAgICAgewoKICAgICAgICB9CgogICAgICB2aXJ0dWFsIFBSVW5pY2hhciogb3BlcmF0b3IoKSgg
UFJVbmljaGFyKiBhRGVzdEJ1ZmZlciApIGNvbnN0OwogICAgICB2aXJ0dWFsIFBSVWludDMyIExl
bmd0aCgpIGNvbnN0OwogICAgICB2aXJ0dWFsIFBSVWludDMyIE1heExlbmd0aCgpIGNvbnN0Owog
ICAgICB2aXJ0dWFsIFBSQm9vbCBJc0RlcGVuZGVudE9uKCBjb25zdCBuc0FTdHJpbmcmICkgY29u
c3Q7CgogICAgcHJpdmF0ZToKICAgICAgdm9pZCBDb3VudE1hdGNoZXMoKSBjb25zdDsKCiAgICBw
cml2YXRlOgogICAgICBjb25zdCBuc0FTdHJpbmcmIG1UZXh0OwogICAgICBjb25zdCBuc0FTdHJp
bmcmIG1QYXR0ZXJuOwogICAgICBjb25zdCBuc0FTdHJpbmcmIG1SZXBsYWNlbWVudDsKICAgICAg
ICAgICAgICAgICAgICBQUkludDMyIG1OdW1iZXJPZk1hdGNoZXM7CiAgfTsKCmNsYXNzIG5zU3Vi
c3RpdHV0ZUNTdHJpbmcKICAgIDogcHVibGljIG5zQUNTdHJpbmdHZW5lcmF0b3IKICB7CiAgICBw
dWJsaWM6CiAgICAgIG5zU3Vic3RpdHV0ZUNTdHJpbmcoIGNvbnN0IG5zQUNTdHJpbmcmIGFUZXh0
LCBjb25zdCBuc0FDU3RyaW5nJiBhUGF0dGVybiwgY29uc3QgbnNBQ1N0cmluZyYgYVJlcGxhY2Vt
ZW50ICkKICAgICAgICAgIDogbVRleHQoYVRleHQpLAogICAgICAgICAgICBtUGF0dGVybihhUGF0
dGVybiksCiAgICAgICAgICAgIG1SZXBsYWNlbWVudChhUmVwbGFjZW1lbnQpLAogICAgICAgICAg
ICBtTnVtYmVyT2ZNYXRjaGVzKC0xKQogICAgICAgIHsKCiAgICAgICAgfQoKICAgICAgdmlydHVh
bCBjaGFyKiBvcGVyYXRvcigpKCBjaGFyKiBhRGVzdEJ1ZmZlciApIGNvbnN0OwogICAgICB2aXJ0
dWFsIFBSVWludDMyIExlbmd0aCgpIGNvbnN0OwogICAgICB2aXJ0dWFsIFBSVWludDMyIE1heExl
bmd0aCgpIGNvbnN0OwogICAgICB2aXJ0dWFsIFBSQm9vbCBJc0RlcGVuZGVudE9uKCBjb25zdCBu
c0FDU3RyaW5nJiApIGNvbnN0OwoKICAgIHByaXZhdGU6CiAgICAgIHZvaWQgQ291bnRNYXRjaGVz
KCkgY29uc3Q7CgogICAgcHJpdmF0ZToKICAgICAgY29uc3QgbnNBQ1N0cmluZyYgbVRleHQ7CiAg
ICAgIGNvbnN0IG5zQUNTdHJpbmcmIG1QYXR0ZXJuOwogICAgICBjb25zdCBuc0FDU3RyaW5nJiBt
UmVwbGFjZW1lbnQ7CiAgICAgICAgICAgICAgICAgICAgUFJJbnQzMiBtTnVtYmVyT2ZNYXRjaGVz
OwogIH07CiMgNTQgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS94cGNvbS94cHRjYWxsLmgiIDEKIyA4MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29t
L3hwdGNhbGwuaCIKc3RydWN0IG5zWFBUQ01pbmlWYXJpYW50CnsKCgogICAgdW5pb24KICAgIHsK
ICAgICAgICBQUkludDggaTg7CiAgICAgICAgUFJJbnQxNiBpMTY7CiAgICAgICAgUFJJbnQzMiBp
MzI7CiAgICAgICAgUFJJbnQ2NCBpNjQ7CiAgICAgICAgUFJVaW50OCB1ODsKICAgICAgICBQUlVp
bnQxNiB1MTY7CiAgICAgICAgUFJVaW50MzIgdTMyOwogICAgICAgIFBSVWludDY0IHU2NDsKICAg
ICAgICBmbG9hdCBmOwogICAgICAgIGRvdWJsZSBkOwogICAgICAgIFBSQm9vbCBiOwogICAgICAg
IGNoYXIgYzsKICAgICAgICBQUlVuaWNoYXIgd2M7CiAgICAgICAgdm9pZCogcDsKICAgIH0gdmFs
Owp9OwoKc3RydWN0IG5zWFBUQ1ZhcmlhbnQgOiBwdWJsaWMgbnNYUFRDTWluaVZhcmlhbnQKewoK
CgoKICAgIHZvaWQqIHB0cjsKICAgIG5zWFBUVHlwZSB0eXBlOwogICAgUFJVaW50OCBmbGFnczsK
CiAgICBlbnVtCiAgICB7CgogICAgICAgIFBUUl9JU19EQVRBID0gMHgxLAogICAgICAgIFZBTF9J
U19BTExPQ0QgPSAweDIsCiAgICAgICAgVkFMX0lTX0lGQUNFID0gMHg0LAogICAgICAgIFZBTF9J
U19BUlJBWSA9IDB4OCwKICAgICAgICBWQUxfSVNfRE9NU1RSID0gMHgxMCwKICAgICAgICBWQUxf
SVNfVVRGOFNUUiA9IDB4MjAsCiAgICAgICAgVkFMX0lTX0NTVFIgPSAweDQwCiAgICB9OwoKICAg
IHZvaWQgQ2xlYXJGbGFncygpIHtmbGFncyA9IDA7fQogICAgdm9pZCBTZXRQdHJJc0RhdGEoKSB7
ZmxhZ3MgfD0gUFRSX0lTX0RBVEE7fQogICAgdm9pZCBTZXRWYWxJc0FsbG9jYXRlZCgpIHtmbGFn
cyB8PSBWQUxfSVNfQUxMT0NEO30KICAgIHZvaWQgU2V0VmFsSXNJbnRlcmZhY2UoKSB7ZmxhZ3Mg
fD0gVkFMX0lTX0lGQUNFO30KICAgIHZvaWQgU2V0VmFsSXNBcnJheSgpIHtmbGFncyB8PSBWQUxf
SVNfQVJSQVk7fQogICAgdm9pZCBTZXRWYWxJc0RPTVN0cmluZygpIHtmbGFncyB8PSBWQUxfSVNf
RE9NU1RSO30KICAgIHZvaWQgU2V0VmFsSXNVVEY4U3RyaW5nKCkge2ZsYWdzIHw9IFZBTF9JU19V
VEY4U1RSO30KICAgIHZvaWQgU2V0VmFsSXNDU3RyaW5nKCkge2ZsYWdzIHw9IFZBTF9JU19DU1RS
O30KCiAgICBQUkJvb2wgSXNQdHJEYXRhKCkgY29uc3Qge3JldHVybiAwICE9IChmbGFncyAmIFBU
Ul9JU19EQVRBKTt9CiAgICBQUkJvb2wgSXNWYWxBbGxvY2F0ZWQoKSBjb25zdCB7cmV0dXJuIDAg
IT0gKGZsYWdzICYgVkFMX0lTX0FMTE9DRCk7fQogICAgUFJCb29sIElzVmFsSW50ZXJmYWNlKCkg
Y29uc3Qge3JldHVybiAwICE9IChmbGFncyAmIFZBTF9JU19JRkFDRSk7fQogICAgUFJCb29sIElz
VmFsQXJyYXkoKSBjb25zdCB7cmV0dXJuIDAgIT0gKGZsYWdzICYgVkFMX0lTX0FSUkFZKTt9CiAg
ICBQUkJvb2wgSXNWYWxET01TdHJpbmcoKSBjb25zdCB7cmV0dXJuIDAgIT0gKGZsYWdzICYgVkFM
X0lTX0RPTVNUUik7fQogICAgUFJCb29sIElzVmFsVVRGOFN0cmluZygpIGNvbnN0IHtyZXR1cm4g
MCAhPSAoZmxhZ3MgJiBWQUxfSVNfVVRGOFNUUik7fQogICAgUFJCb29sIElzVmFsQ1N0cmluZygp
IGNvbnN0IHtyZXR1cm4gMCAhPSAoZmxhZ3MgJiBWQUxfSVNfQ1NUUik7fQoKICAgIHZvaWQgSW5p
dChjb25zdCBuc1hQVENNaW5pVmFyaWFudCYgbXYsIGNvbnN0IG5zWFBUVHlwZSYgdCwgUFJVaW50
OCBmKQogICAgewogICAgICAgIHR5cGUgPSB0OwogICAgICAgIGZsYWdzID0gZjsKCiAgICAgICAg
aWYoZiAmIFBUUl9JU19EQVRBKQogICAgICAgIHsKICAgICAgICAgICAgcHRyID0gbXYudmFsLnA7
CiAgICAgICAgICAgIHZhbC5wID0gMDsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsK
ICAgICAgICAgICAgcHRyID0gMDsKICAgICAgICAgICAgc3dpdGNoKHQuVGFnUGFydCgpKSB7CiAg
ICAgICAgICAgICAgY2FzZSBuc1hQVFR5cGU6OlRfSTg6IHZhbC5pOCA9IG12LnZhbC5pODsgYnJl
YWs7CiAgICAgICAgICAgICAgY2FzZSBuc1hQVFR5cGU6OlRfSTE2OiB2YWwuaTE2ID0gbXYudmFs
LmkxNjsgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSBuc1hQVFR5cGU6OlRfSTMyOiB2YWwuaTMy
ID0gbXYudmFsLmkzMjsgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSBuc1hQVFR5cGU6OlRfSTY0
OiB2YWwuaTY0ID0gbXYudmFsLmk2NDsgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSBuc1hQVFR5
cGU6OlRfVTg6IHZhbC51OCA9IG12LnZhbC51ODsgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSBu
c1hQVFR5cGU6OlRfVTE2OiB2YWwudTE2ID0gbXYudmFsLnUxNjsgYnJlYWs7CiAgICAgICAgICAg
ICAgY2FzZSBuc1hQVFR5cGU6OlRfVTMyOiB2YWwudTMyID0gbXYudmFsLnUzMjsgYnJlYWs7CiAg
ICAgICAgICAgICAgY2FzZSBuc1hQVFR5cGU6OlRfVTY0OiB2YWwudTY0ID0gbXYudmFsLnU2NDsg
YnJlYWs7CiAgICAgICAgICAgICAgY2FzZSBuc1hQVFR5cGU6OlRfRkxPQVQ6IHZhbC5mID0gbXYu
dmFsLmY7IGJyZWFrOwogICAgICAgICAgICAgIGNhc2UgbnNYUFRUeXBlOjpUX0RPVUJMRTogdmFs
LmQgPSBtdi52YWwuZDsgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSBuc1hQVFR5cGU6OlRfQk9P
TDogdmFsLmIgPSBtdi52YWwuYjsgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSBuc1hQVFR5cGU6
OlRfQ0hBUjogdmFsLmMgPSBtdi52YWwuYzsgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSBuc1hQ
VFR5cGU6OlRfV0NIQVI6IHZhbC53YyA9IG12LnZhbC53YzsgYnJlYWs7CiAgICAgICAgICAgICAg
Y2FzZSBuc1hQVFR5cGU6OlRfVk9JRDoKICAgICAgICAgICAgICBjYXNlIG5zWFBUVHlwZTo6VF9J
SUQ6CiAgICAgICAgICAgICAgY2FzZSBuc1hQVFR5cGU6OlRfRE9NU1RSSU5HOgogICAgICAgICAg
ICAgIGNhc2UgbnNYUFRUeXBlOjpUX0NIQVJfU1RSOgogICAgICAgICAgICAgIGNhc2UgbnNYUFRU
eXBlOjpUX1dDSEFSX1NUUjoKICAgICAgICAgICAgICBjYXNlIG5zWFBUVHlwZTo6VF9JTlRFUkZB
Q0U6CiAgICAgICAgICAgICAgY2FzZSBuc1hQVFR5cGU6OlRfSU5URVJGQUNFX0lTOgogICAgICAg
ICAgICAgIGNhc2UgbnNYUFRUeXBlOjpUX0FSUkFZOgogICAgICAgICAgICAgIGNhc2UgbnNYUFRU
eXBlOjpUX1BTVFJJTkdfU0laRV9JUzoKICAgICAgICAgICAgICBjYXNlIG5zWFBUVHlwZTo6VF9Q
V1NUUklOR19TSVpFX0lTOgogICAgICAgICAgICAgIGNhc2UgbnNYUFRUeXBlOjpUX1VURjhTVFJJ
Tkc6CiAgICAgICAgICAgICAgY2FzZSBuc1hQVFR5cGU6OlRfQ1NUUklORzoKICAgICAgICAgICAg
ICBkZWZhdWx0OiB2YWwucCA9IG12LnZhbC5wOyBicmVhazsKICAgICAgICAgICAgfQogICAgICAg
IH0KICAgIH0KfTsKCgoKY2xhc3MgbnNYUFRDU3R1YkJhc2UgOiBwdWJsaWMgbnNJU3VwcG9ydHMK
ewpwdWJsaWM6CgoKCgogICAgdmlydHVhbCBuc3Jlc3VsdCBRdWVyeUludGVyZmFjZShjb25zdCBu
c0lJRCYgYUlJRCwgdm9pZCoqIGFJbnN0YW5jZVB0cik7CgoKCiMgMSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL3hwY29tL3hwdGNzdHVic2RlY2wuaW5jIiAxCiMgMTEgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS94cGNvbS94cHRjc3R1YnNkZWNsLmluYyIKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjMoKTsK
IHZpcnR1YWwgbnNyZXN1bHQgU3R1YjQoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjUoKTsKIHZp
cnR1YWwgbnNyZXN1bHQgU3R1YjYoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjcoKTsKIHZpcnR1
YWwgbnNyZXN1bHQgU3R1YjgoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjkoKTsKIHZpcnR1YWwg
bnNyZXN1bHQgU3R1YjEwKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxMSgpOwogdmlydHVhbCBu
c3Jlc3VsdCBTdHViMTIoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjEzKCk7CiB2aXJ0dWFsIG5z
cmVzdWx0IFN0dWIxNCgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTUoKTsKIHZpcnR1YWwgbnNy
ZXN1bHQgU3R1YjE2KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxNygpOwogdmlydHVhbCBuc3Jl
c3VsdCBTdHViMTgoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE5KCk7CiB2aXJ0dWFsIG5zcmVz
dWx0IFN0dWIyMCgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMjEoKTsKIHZpcnR1YWwgbnNyZXN1
bHQgU3R1YjIyKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIyMygpOwogdmlydHVhbCBuc3Jlc3Vs
dCBTdHViMjQoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjI1KCk7CiB2aXJ0dWFsIG5zcmVzdWx0
IFN0dWIyNigpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMjcoKTsKIHZpcnR1YWwgbnNyZXN1bHQg
U3R1YjI4KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIyOSgpOwogdmlydHVhbCBuc3Jlc3VsdCBT
dHViMzAoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjMxKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0
dWIzMigpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMzMoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1
YjM0KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIzNSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHVi
MzYoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjM3KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIz
OCgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMzkoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjQw
KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWI0MSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViNDIo
KTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjQzKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWI0NCgp
OwogdmlydHVhbCBuc3Jlc3VsdCBTdHViNDUoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjQ2KCk7
CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWI0NygpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViNDgoKTsK
IHZpcnR1YWwgbnNyZXN1bHQgU3R1YjQ5KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWI1MCgpOwog
dmlydHVhbCBuc3Jlc3VsdCBTdHViNTEoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjUyKCk7CiB2
aXJ0dWFsIG5zcmVzdWx0IFN0dWI1MygpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViNTQoKTsKIHZp
cnR1YWwgbnNyZXN1bHQgU3R1YjU1KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWI1NigpOwogdmly
dHVhbCBuc3Jlc3VsdCBTdHViNTcoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjU4KCk7CiB2aXJ0
dWFsIG5zcmVzdWx0IFN0dWI1OSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViNjAoKTsKIHZpcnR1
YWwgbnNyZXN1bHQgU3R1YjYxKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWI2MigpOwogdmlydHVh
bCBuc3Jlc3VsdCBTdHViNjMoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjY0KCk7CiB2aXJ0dWFs
IG5zcmVzdWx0IFN0dWI2NSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViNjYoKTsKIHZpcnR1YWwg
bnNyZXN1bHQgU3R1YjY3KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWI2OCgpOwogdmlydHVhbCBu
c3Jlc3VsdCBTdHViNjkoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjcwKCk7CiB2aXJ0dWFsIG5z
cmVzdWx0IFN0dWI3MSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViNzIoKTsKIHZpcnR1YWwgbnNy
ZXN1bHQgU3R1YjczKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWI3NCgpOwogdmlydHVhbCBuc3Jl
c3VsdCBTdHViNzUoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1Yjc2KCk7CiB2aXJ0dWFsIG5zcmVz
dWx0IFN0dWI3NygpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViNzgoKTsKIHZpcnR1YWwgbnNyZXN1
bHQgU3R1Yjc5KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWI4MCgpOwogdmlydHVhbCBuc3Jlc3Vs
dCBTdHViODEoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjgyKCk7CiB2aXJ0dWFsIG5zcmVzdWx0
IFN0dWI4MygpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViODQoKTsKIHZpcnR1YWwgbnNyZXN1bHQg
U3R1Yjg1KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWI4NigpOwogdmlydHVhbCBuc3Jlc3VsdCBT
dHViODcoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1Yjg4KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0
dWI4OSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViOTAoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1
YjkxKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWI5MigpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHVi
OTMoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1Yjk0KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWI5
NSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViOTYoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1Yjk3
KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWI5OCgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViOTko
KTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjEwMCgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTAx
KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxMDIoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjEw
MygpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTA0KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIx
MDUoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjEwNigpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHVi
MTA3KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxMDgoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1
YjEwOSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTEwKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0
dWIxMTEoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjExMigpOwogdmlydHVhbCBuc3Jlc3VsdCBT
dHViMTEzKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxMTQoKTsKIHZpcnR1YWwgbnNyZXN1bHQg
U3R1YjExNSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTE2KCk7CiB2aXJ0dWFsIG5zcmVzdWx0
IFN0dWIxMTcoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjExOCgpOwogdmlydHVhbCBuc3Jlc3Vs
dCBTdHViMTE5KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxMjAoKTsKIHZpcnR1YWwgbnNyZXN1
bHQgU3R1YjEyMSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTIyKCk7CiB2aXJ0dWFsIG5zcmVz
dWx0IFN0dWIxMjMoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjEyNCgpOwogdmlydHVhbCBuc3Jl
c3VsdCBTdHViMTI1KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxMjYoKTsKIHZpcnR1YWwgbnNy
ZXN1bHQgU3R1YjEyNygpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTI4KCk7CiB2aXJ0dWFsIG5z
cmVzdWx0IFN0dWIxMjkoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjEzMCgpOwogdmlydHVhbCBu
c3Jlc3VsdCBTdHViMTMxKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxMzIoKTsKIHZpcnR1YWwg
bnNyZXN1bHQgU3R1YjEzMygpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTM0KCk7CiB2aXJ0dWFs
IG5zcmVzdWx0IFN0dWIxMzUoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjEzNigpOwogdmlydHVh
bCBuc3Jlc3VsdCBTdHViMTM3KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxMzgoKTsKIHZpcnR1
YWwgbnNyZXN1bHQgU3R1YjEzOSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTQwKCk7CiB2aXJ0
dWFsIG5zcmVzdWx0IFN0dWIxNDEoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE0MigpOwogdmly
dHVhbCBuc3Jlc3VsdCBTdHViMTQzKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxNDQoKTsKIHZp
cnR1YWwgbnNyZXN1bHQgU3R1YjE0NSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTQ2KCk7CiB2
aXJ0dWFsIG5zcmVzdWx0IFN0dWIxNDcoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE0OCgpOwog
dmlydHVhbCBuc3Jlc3VsdCBTdHViMTQ5KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxNTAoKTsK
IHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE1MSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTUyKCk7
CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxNTMoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE1NCgp
OwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTU1KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxNTYo
KTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE1NygpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTU4
KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxNTkoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE2
MCgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTYxKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIx
NjIoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE2MygpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHVi
MTY0KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxNjUoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1
YjE2NigpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTY3KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0
dWIxNjgoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE2OSgpOwogdmlydHVhbCBuc3Jlc3VsdCBT
dHViMTcwKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxNzEoKTsKIHZpcnR1YWwgbnNyZXN1bHQg
U3R1YjE3MigpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTczKCk7CiB2aXJ0dWFsIG5zcmVzdWx0
IFN0dWIxNzQoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE3NSgpOwogdmlydHVhbCBuc3Jlc3Vs
dCBTdHViMTc2KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxNzcoKTsKIHZpcnR1YWwgbnNyZXN1
bHQgU3R1YjE3OCgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTc5KCk7CiB2aXJ0dWFsIG5zcmVz
dWx0IFN0dWIxODAoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE4MSgpOwogdmlydHVhbCBuc3Jl
c3VsdCBTdHViMTgyKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxODMoKTsKIHZpcnR1YWwgbnNy
ZXN1bHQgU3R1YjE4NCgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTg1KCk7CiB2aXJ0dWFsIG5z
cmVzdWx0IFN0dWIxODYoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE4NygpOwogdmlydHVhbCBu
c3Jlc3VsdCBTdHViMTg4KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxODkoKTsKIHZpcnR1YWwg
bnNyZXN1bHQgU3R1YjE5MCgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTkxKCk7CiB2aXJ0dWFs
IG5zcmVzdWx0IFN0dWIxOTIoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE5MygpOwogdmlydHVh
bCBuc3Jlc3VsdCBTdHViMTk0KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxOTUoKTsKIHZpcnR1
YWwgbnNyZXN1bHQgU3R1YjE5NigpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTk3KCk7CiB2aXJ0
dWFsIG5zcmVzdWx0IFN0dWIxOTgoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE5OSgpOwogdmly
dHVhbCBuc3Jlc3VsdCBTdHViMjAwKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIyMDEoKTsKIHZp
cnR1YWwgbnNyZXN1bHQgU3R1YjIwMigpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMjAzKCk7CiB2
aXJ0dWFsIG5zcmVzdWx0IFN0dWIyMDQoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjIwNSgpOwog
dmlydHVhbCBuc3Jlc3VsdCBTdHViMjA2KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIyMDcoKTsK
IHZpcnR1YWwgbnNyZXN1bHQgU3R1YjIwOCgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMjA5KCk7
CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIyMTAoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjIxMSgp
OwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMjEyKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIyMTMo
KTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjIxNCgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMjE1
KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIyMTYoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjIx
NygpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMjE4KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIy
MTkoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjIyMCgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHVi
MjIxKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIyMjIoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1
YjIyMygpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMjI0KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0
dWIyMjUoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjIyNigpOwogdmlydHVhbCBuc3Jlc3VsdCBT
dHViMjI3KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIyMjgoKTsKIHZpcnR1YWwgbnNyZXN1bHQg
U3R1YjIyOSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMjMwKCk7CiB2aXJ0dWFsIG5zcmVzdWx0
IFN0dWIyMzEoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjIzMigpOwogdmlydHVhbCBuc3Jlc3Vs
dCBTdHViMjMzKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIyMzQoKTsKIHZpcnR1YWwgbnNyZXN1
bHQgU3R1YjIzNSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMjM2KCk7CiB2aXJ0dWFsIG5zcmVz
dWx0IFN0dWIyMzcoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjIzOCgpOwogdmlydHVhbCBuc3Jl
c3VsdCBTdHViMjM5KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIyNDAoKTsKIHZpcnR1YWwgbnNy
ZXN1bHQgU3R1YjI0MSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMjQyKCk7CiB2aXJ0dWFsIG5z
cmVzdWx0IFN0dWIyNDMoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjI0NCgpOwogdmlydHVhbCBu
c3Jlc3VsdCBTdHViMjQ1KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIyNDYoKTsKIHZpcnR1YWwg
bnNyZXN1bHQgU3R1YjI0NygpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMjQ4KCk7CiB2aXJ0dWFs
IG5zcmVzdWx0IFN0dWIyNDkoKTsKCgogdmlydHVhbCBuc3Jlc3VsdCBTZW50aW5lbDAoKTsKIHZp
cnR1YWwgbnNyZXN1bHQgU2VudGluZWwxKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFNlbnRpbmVsMigp
OwogdmlydHVhbCBuc3Jlc3VsdCBTZW50aW5lbDMoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU2VudGlu
ZWw0KCk7CiMgMjAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20veHB0Y2FsbC5oIiAyCgoK
CgoKICAgIHZpcnR1YWwgbnNyZXN1bHQgR2V0SW50ZXJmYWNlSW5mbyhuc0lJbnRlcmZhY2VJbmZv
KiogaW5mbykgPSAwOwoKCiAgICB2aXJ0dWFsIG5zcmVzdWx0IENhbGxNZXRob2QoUFJVaW50MTYg
bWV0aG9kSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbnNYUFRNZXRob2RJ
bmZvKiBpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgIG5zWFBUQ01pbmlWYXJpYW50KiBw
YXJhbXMpID0gMDsKfTsKCgpleHRlcm4gIkMiIHsKCm5zcmVzdWx0ClhQVENfSW52b2tlQnlJbmRl
eChuc0lTdXBwb3J0cyogdGhhdCwgUFJVaW50MzIgbWV0aG9kSW5kZXgsCiAgICAgICAgICAgICAg
ICAgICBQUlVpbnQzMiBwYXJhbUNvdW50LCBuc1hQVENWYXJpYW50KiBwYXJhbXMpOwoKCmV4dGVy
biB2b2lkIHhwdGNfZHVtbXkoKTsKZXh0ZXJuIHZvaWQgeHB0Y19kdW1teTIoKTsKCn0KIyA1NSAi
bnNET01DbGFzc0luZm8uY3BwIiAyCgoKCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pz
bnVtLmgiIDEKIyA0OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzbnVtLmgiCmV4dGVybiAi
QyIgewojIDY3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNudW0uaCIKdHlwZWRlZiB1bmlv
biB7CiAgICBqc2RvdWJsZSB2YWx1ZTsKICAgIHN0cnVjdCB7CgogICAgICAgIHVpbnQzMiBsc3c7
CiAgICAgICAgdWludDMyIG1zdzsKCgoKCiAgICB9IHBhcnRzOwp9IGpzX2llZWVfZG91YmxlX3No
YXBlX3R5cGU7CiMgMTQ2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNudW0uaCIKZXh0ZXJu
IEpTQm9vbApqc19Jbml0UnVudGltZU51bWJlclN0YXRlKEpTQ29udGV4dCAqY3gpOwoKZXh0ZXJu
IHZvaWQKanNfRmluaXNoUnVudGltZU51bWJlclN0YXRlKEpTQ29udGV4dCAqY3gpOwoKCmV4dGVy
biBKU09iamVjdCAqCmpzX0luaXROdW1iZXJDbGFzcyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAq
b2JqKTsKCgoKCmV4dGVybiBjb25zdCBjaGFyIGpzX0luZmluaXR5X3N0cltdOwpleHRlcm4gY29u
c3QgY2hhciBqc19OYU5fc3RyW107CmV4dGVybiBjb25zdCBjaGFyIGpzX2lzTmFOX3N0cltdOwpl
eHRlcm4gY29uc3QgY2hhciBqc19pc0Zpbml0ZV9zdHJbXTsKZXh0ZXJuIGNvbnN0IGNoYXIganNf
cGFyc2VGbG9hdF9zdHJbXTsKZXh0ZXJuIGNvbnN0IGNoYXIganNfcGFyc2VJbnRfc3RyW107CgoK
ZXh0ZXJuIGpzZG91YmxlICoKanNfTmV3RG91YmxlKEpTQ29udGV4dCAqY3gsIGpzZG91YmxlIGQp
OwoKZXh0ZXJuIHZvaWQKanNfRmluYWxpemVEb3VibGUoSlNDb250ZXh0ICpjeCwganNkb3VibGUg
KmRwKTsKCmV4dGVybiBKU0Jvb2wKanNfTmV3RG91YmxlVmFsdWUoSlNDb250ZXh0ICpjeCwganNk
b3VibGUgZCwganN2YWwgKnJ2YWwpOwoKZXh0ZXJuIEpTQm9vbApqc19OZXdOdW1iZXJWYWx1ZShK
U0NvbnRleHQgKmN4LCBqc2RvdWJsZSBkLCBqc3ZhbCAqcnZhbCk7CgoKZXh0ZXJuIEpTT2JqZWN0
ICoKanNfTnVtYmVyVG9PYmplY3QoSlNDb250ZXh0ICpjeCwganNkb3VibGUgZCk7CgoKZXh0ZXJu
IEpTU3RyaW5nICoKanNfTnVtYmVyVG9TdHJpbmcoSlNDb250ZXh0ICpjeCwganNkb3VibGUgZCk7
CgoKCgoKZXh0ZXJuIEpTQm9vbApqc19WYWx1ZVRvTnVtYmVyKEpTQ29udGV4dCAqY3gsIGpzdmFs
IHYsIGpzZG91YmxlICpkcCk7CgoKCgoKZXh0ZXJuIEpTQm9vbApqc19WYWx1ZVRvRUNNQUludDMy
KEpTQ29udGV4dCAqY3gsIGpzdmFsIHYsIGludDMyICppcCk7CgpleHRlcm4gSlNCb29sCmpzX0Rv
dWJsZVRvRUNNQUludDMyKEpTQ29udGV4dCAqY3gsIGpzZG91YmxlIGQsIGludDMyICppcCk7CgoK
CgoKZXh0ZXJuIEpTQm9vbApqc19WYWx1ZVRvRUNNQVVpbnQzMihKU0NvbnRleHQgKmN4LCBqc3Zh
bCB2LCB1aW50MzIgKmlwKTsKCmV4dGVybiBKU0Jvb2wKanNfRG91YmxlVG9FQ01BVWludDMyKEpT
Q29udGV4dCAqY3gsIGpzZG91YmxlIGQsIHVpbnQzMiAqaXApOwoKCgoKCgpleHRlcm4gSlNCb29s
CmpzX1ZhbHVlVG9JbnQzMihKU0NvbnRleHQgKmN4LCBqc3ZhbCB2LCBpbnQzMiAqaXApOwoKCgoK
CmV4dGVybiBKU0Jvb2wKanNfVmFsdWVUb1VpbnQxNihKU0NvbnRleHQgKmN4LCBqc3ZhbCB2LCB1
aW50MTYgKmlwKTsKCgoKCgpleHRlcm4ganNkb3VibGUKanNfRG91YmxlVG9JbnRlZ2VyKGpzZG91
YmxlIGQpOwojIDI0NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzbnVtLmgiCmV4dGVybiBK
U0Jvb2wKanNfc3RydG9kKEpTQ29udGV4dCAqY3gsIGNvbnN0IGpzY2hhciAqcywgY29uc3QganNj
aGFyICoqZXAsIGpzZG91YmxlICpkcCk7CiMgMjU1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMv
anNudW0uaCIKZXh0ZXJuIEpTQm9vbApqc19zdHJ0b2ludGVnZXIoSlNDb250ZXh0ICpjeCwgY29u
c3QganNjaGFyICpzLCBjb25zdCBqc2NoYXIgKiplcCwganNpbnQgcmFkaXgsIGpzZG91YmxlICpk
cCk7Cgp9CiMgNTkgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9qcy9qc2RiZ2FwaS5oIiAxCiMgNDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2Ri
Z2FwaS5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc29wY29kZS5oIiAxCiMgNDAg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc29wY29kZS5oIgojIDEgIi91c3IvbGliL2djYy1s
aWIvaTU4Ni1wYy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgNDEgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc29wY29kZS5oIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2pzL2pzcHJ2dGQuaCIgMQojIDU1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNw
cnZ0ZC5oIgp0eXBlZGVmIHVpbnQ4IGpzYnl0ZWNvZGU7CnR5cGVkZWYgdWludDgganNzcmNub3Rl
Owp0eXBlZGVmIHVpbnQzMiBqc2F0b21pZDsKCgp0eXBlZGVmIHN0cnVjdCBKU0FyZ3VtZW50Rm9y
bWF0TWFwIEpTQXJndW1lbnRGb3JtYXRNYXA7CnR5cGVkZWYgc3RydWN0IEpTQ29kZUdlbmVyYXRv
ciBKU0NvZGVHZW5lcmF0b3I7CnR5cGVkZWYgc3RydWN0IEpTRGVwZW5kZW50U3RyaW5nIEpTRGVw
ZW5kZW50U3RyaW5nOwp0eXBlZGVmIHN0cnVjdCBKU0dDTG9ja0hhc2hFbnRyeSBKU0dDTG9ja0hh
c2hFbnRyeTsKdHlwZWRlZiBzdHJ1Y3QgSlNHQ1Jvb3RIYXNoRW50cnkgSlNHQ1Jvb3RIYXNoRW50
cnk7CnR5cGVkZWYgc3RydWN0IEpTR0NUaGluZyBKU0dDVGhpbmc7CnR5cGVkZWYgc3RydWN0IEpT
UGFyc2VOb2RlIEpTUGFyc2VOb2RlOwp0eXBlZGVmIHN0cnVjdCBKU1NoYXJwT2JqZWN0TWFwIEpT
U2hhcnBPYmplY3RNYXA7CnR5cGVkZWYgc3RydWN0IEpTVG9rZW4gSlNUb2tlbjsKdHlwZWRlZiBz
dHJ1Y3QgSlNUb2tlblBvcyBKU1Rva2VuUG9zOwp0eXBlZGVmIHN0cnVjdCBKU1Rva2VuUHRyIEpT
VG9rZW5QdHI7CnR5cGVkZWYgc3RydWN0IEpTVG9rZW5TdHJlYW0gSlNUb2tlblN0cmVhbTsKdHlw
ZWRlZiBzdHJ1Y3QgSlNUcmVlQ29udGV4dCBKU1RyZWVDb250ZXh0Owp0eXBlZGVmIHN0cnVjdCBK
U1RyeU5vdGUgSlNUcnlOb3RlOwoKCnR5cGVkZWYgc3RydWN0IEpTQXRvbSBKU0F0b207CnR5cGVk
ZWYgc3RydWN0IEpTQXRvbUxpc3QgSlNBdG9tTGlzdDsKdHlwZWRlZiBzdHJ1Y3QgSlNBdG9tTGlz
dEVsZW1lbnQgSlNBdG9tTGlzdEVsZW1lbnQ7CnR5cGVkZWYgc3RydWN0IEpTQXRvbU1hcCBKU0F0
b21NYXA7CnR5cGVkZWYgc3RydWN0IEpTQXRvbVN0YXRlIEpTQXRvbVN0YXRlOwp0eXBlZGVmIHN0
cnVjdCBKU0NvZGVTcGVjIEpTQ29kZVNwZWM7CnR5cGVkZWYgc3RydWN0IEpTUHJpbnRlciBKU1By
aW50ZXI7CnR5cGVkZWYgc3RydWN0IEpTUmVnRXhwIEpTUmVnRXhwOwp0eXBlZGVmIHN0cnVjdCBK
U1JlZ0V4cFN0YXRpY3MgSlNSZWdFeHBTdGF0aWNzOwp0eXBlZGVmIHN0cnVjdCBKU1Njb3BlIEpT
U2NvcGU7CnR5cGVkZWYgc3RydWN0IEpTU2NvcGVPcHMgSlNTY29wZU9wczsKdHlwZWRlZiBzdHJ1
Y3QgSlNTY29wZVByb3BlcnR5IEpTU2NvcGVQcm9wZXJ0eTsKdHlwZWRlZiBzdHJ1Y3QgSlNTdGFj
a0ZyYW1lIEpTU3RhY2tGcmFtZTsKdHlwZWRlZiBzdHJ1Y3QgSlNTdGFja0hlYWRlciBKU1N0YWNr
SGVhZGVyOwp0eXBlZGVmIHN0cnVjdCBKU1N1YlN0cmluZyBKU1N1YlN0cmluZzsKCgp0eXBlZGVm
IGVudW0gSlNUcmFwU3RhdHVzIHsKICAgIEpTVFJBUF9FUlJPUiwKICAgIEpTVFJBUF9DT05USU5V
RSwKICAgIEpTVFJBUF9SRVRVUk4sCiAgICBKU1RSQVBfVEhST1csCiAgICBKU1RSQVBfTElNSVQK
fSBKU1RyYXBTdGF0dXM7Cgp0eXBlZGVmIEpTVHJhcFN0YXR1cwooKiBKU1RyYXBIYW5kbGVyKShK
U0NvbnRleHQgKmN4LCBKU1NjcmlwdCAqc2NyaXB0LCBqc2J5dGVjb2RlICpwYywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGpzdmFsICpydmFsLCB2b2lkICpjbG9zdXJlKTsKCnR5
cGVkZWYgSlNCb29sCigqIEpTV2F0Y2hQb2ludEhhbmRsZXIpKEpTQ29udGV4dCAqY3gsIEpTT2Jq
ZWN0ICpvYmosIGpzdmFsIGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAganN2YWwgb2xkLCBqc3ZhbCAqbmV3cCwgdm9pZCAqY2xvc3VyZSk7CgoKdHlwZWRlZiB2b2lk
CigqIEpTTmV3U2NyaXB0SG9vaykoSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnROIGxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSlNTY3JpcHQgKnNjcmlwdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSlNGdW5jdGlvbiAqZnVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICpjYWxsZXJkYXRhKTsKCgp0eXBlZGVmIHZvaWQKKCogSlNEZXN0cm95U2NyaXB0SG9v
aykoSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEpTU2NyaXB0ICpzY3JpcHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICpjYWxsZXJkYXRhKTsKCnR5cGVkZWYgdm9pZAooKiBKU1NvdXJjZUhhbmRsZXIpKGNv
bnN0IGNoYXIgKmZpbGVuYW1lLCB1aW50TiBsaW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGpzY2hhciAqc3RyLCBzaXplX3QgbGVuZ3RoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2b2lkICoqbGlzdGVuZXJUU0RhdGEsIHZvaWQgKmNsb3N1cmUp
OwojIDE1NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzcHJ2dGQuaCIKdHlwZWRlZiB2b2lk
ICoKKCogSlNJbnRlcnByZXRlckhvb2spKEpTQ29udGV4dCAqY3gsIEpTU3RhY2tGcmFtZSAqZnAs
IEpTQm9vbCBiZWZvcmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNC
b29sICpvaywgdm9pZCAqY2xvc3VyZSk7Cgp0eXBlZGVmIHZvaWQKKCogSlNPYmplY3RIb29rKShK
U0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBKU0Jvb2wgaXNOZXcsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZvaWQgKmNsb3N1cmUpOwoKdHlwZWRlZiBKU0Jvb2wKKCogSlNE
ZWJ1Z0Vycm9ySG9vaykoSlNDb250ZXh0ICpjeCwgY29uc3QgY2hhciAqbWVzc2FnZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTRXJyb3JSZXBvcnQgKnJlcG9ydCwgdm9p
ZCAqY2xvc3VyZSk7CiMgNDIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc29wY29kZS5oIiAy
CgoKZXh0ZXJuICJDIiB7CgoKCgp0eXBlZGVmIGVudW0gSlNPcCB7CgoKIyAxICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvanMvanNvcGNvZGUudGJsIiAxCiMgNjcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9qcy9qc29wY29kZS50YmwiCkpTT1BfTk9QID0gMCwKSlNPUF9QVVNIID0gMSwKSlNPUF9QT1BW
ID0gMiwKSlNPUF9FTlRFUldJVEggPSAzLApKU09QX0xFQVZFV0lUSCA9IDQsCkpTT1BfUkVUVVJO
ID0gNSwKSlNPUF9HT1RPID0gNiwKSlNPUF9JRkVRID0gNywKSlNPUF9JRk5FID0gOCwKCgpKU09Q
X0FSR1VNRU5UUyA9IDksCgoKSlNPUF9GT1JBUkcgPSAxMCwKSlNPUF9GT1JWQVIgPSAxMSwKCgpK
U09QX0RVUCA9IDEyLApKU09QX0RVUDIgPSAxMywKSlNPUF9TRVRDT05TVCA9IDE0LApKU09QX0JJ
VE9SID0gMTUsCkpTT1BfQklUWE9SID0gMTYsCkpTT1BfQklUQU5EID0gMTcsCkpTT1BfRVEgPSAx
OCwKSlNPUF9ORSA9IDE5LApKU09QX0xUID0gMjAsCkpTT1BfTEUgPSAyMSwKSlNPUF9HVCA9IDIy
LApKU09QX0dFID0gMjMsCkpTT1BfTFNIID0gMjQsCkpTT1BfUlNIID0gMjUsCkpTT1BfVVJTSCA9
IDI2LApKU09QX0FERCA9IDI3LApKU09QX1NVQiA9IDI4LApKU09QX01VTCA9IDI5LApKU09QX0RJ
ViA9IDMwLApKU09QX01PRCA9IDMxLApKU09QX05PVCA9IDMyLApKU09QX0JJVE5PVCA9IDMzLApK
U09QX05FRyA9IDM0LApKU09QX05FVyA9IDM1LApKU09QX0RFTE5BTUUgPSAzNiwKSlNPUF9ERUxQ
Uk9QID0gMzcsCkpTT1BfREVMRUxFTSA9IDM4LApKU09QX1RZUEVPRiA9IDM5LApKU09QX1ZPSUQg
PSA0MCwKSlNPUF9JTkNOQU1FID0gNDEsCkpTT1BfSU5DUFJPUCA9IDQyLApKU09QX0lOQ0VMRU0g
PSA0MywKSlNPUF9ERUNOQU1FID0gNDQsCkpTT1BfREVDUFJPUCA9IDQ1LApKU09QX0RFQ0VMRU0g
PSA0NiwKSlNPUF9OQU1FSU5DID0gNDcsCkpTT1BfUFJPUElOQyA9IDQ4LApKU09QX0VMRU1JTkMg
PSA0OSwKSlNPUF9OQU1FREVDID0gNTAsCkpTT1BfUFJPUERFQyA9IDUxLApKU09QX0VMRU1ERUMg
PSA1MiwKSlNPUF9HRVRQUk9QID0gNTMsCkpTT1BfU0VUUFJPUCA9IDU0LApKU09QX0dFVEVMRU0g
PSA1NSwKSlNPUF9TRVRFTEVNID0gNTYsCkpTT1BfUFVTSE9CSiA9IDU3LApKU09QX0NBTEwgPSA1
OCwKSlNPUF9OQU1FID0gNTksCkpTT1BfTlVNQkVSID0gNjAsCkpTT1BfU1RSSU5HID0gNjEsCkpT
T1BfWkVSTyA9IDYyLApKU09QX09ORSA9IDYzLApKU09QX05VTEwgPSA2NCwKSlNPUF9USElTID0g
NjUsCkpTT1BfRkFMU0UgPSA2NiwKSlNPUF9UUlVFID0gNjcsCkpTT1BfT1IgPSA2OCwKSlNPUF9B
TkQgPSA2OSwKCgpKU09QX1RBQkxFU1dJVENIID0gNzAsCkpTT1BfTE9PS1VQU1dJVENIID0gNzEs
CgoKSlNPUF9ORVdfRVEgPSA3MiwKSlNPUF9ORVdfTkUgPSA3MywKCgpKU09QX0NMT1NVUkUgPSA3
NCwKCgpKU09QX0VYUE9SVEFMTCA9IDc1LApKU09QX0VYUE9SVE5BTUUgPSA3NiwKSlNPUF9JTVBP
UlRBTEwgPSA3NywKSlNPUF9JTVBPUlRQUk9QID0gNzgsCkpTT1BfSU1QT1JURUxFTSA9IDc5LAoK
CkpTT1BfT0JKRUNUID0gODAsCgoKSlNPUF9QT1AgPSA4MSwKCgpKU09QX1BPUyA9IDgyLAoKCkpT
T1BfVFJBUCA9IDgzLAoKCkpTT1BfR0VUQVJHID0gODQsCkpTT1BfU0VUQVJHID0gODUsCkpTT1Bf
R0VUVkFSID0gODYsCkpTT1BfU0VUVkFSID0gODcsCgoKSlNPUF9VSU5UMTYgPSA4OCwKCgpKU09Q
X05FV0lOSVQgPSA4OSwKSlNPUF9FTkRJTklUID0gOTAsCkpTT1BfSU5JVFBST1AgPSA5MSwKSlNP
UF9JTklURUxFTSA9IDkyLApKU09QX0RFRlNIQVJQID0gOTMsCkpTT1BfVVNFU0hBUlAgPSA5NCwK
CgpKU09QX0lOQ0FSRyA9IDk1LApKU09QX0lOQ1ZBUiA9IDk2LApKU09QX0RFQ0FSRyA9IDk3LApK
U09QX0RFQ1ZBUiA9IDk4LApKU09QX0FSR0lOQyA9IDk5LApKU09QX1ZBUklOQyA9IDEwMCwKSlNP
UF9BUkdERUMgPSAxMDEsCkpTT1BfVkFSREVDID0gMTAyLAoKCkpTT1BfVE9PQkpFQ1QgPSAxMDMs
CkpTT1BfRk9STkFNRSA9IDEwNCwKSlNPUF9GT1JQUk9QID0gMTA1LApKU09QX0ZPUkVMRU0gPSAx
MDYsCkpTT1BfUE9QMiA9IDEwNywKCgpKU09QX0JJTkROQU1FID0gMTA4LApKU09QX1NFVE5BTUUg
PSAxMDksCgoKSlNPUF9USFJPVyA9IDExMCwKCgpKU09QX0lOID0gMTExLApKU09QX0lOU1RBTkNF
T0YgPSAxMTIsCgoKSlNPUF9ERUJVR0dFUiA9IDExMywKCgpKU09QX0dPU1VCID0gMTE0LApKU09Q
X1JFVFNVQiA9IDExNSwKCgpKU09QX0VYQ0VQVElPTiA9IDExNiwKSlNPUF9TRVRTUCA9IDExNywK
CgoKCgoKSlNPUF9DT05EU1dJVENIID0gMTE4LApKU09QX0NBU0UgPSAxMTksCkpTT1BfREVGQVVM
VCA9IDEyMCwKCgoKCkpTT1BfRVZBTCA9IDEyMSwKCgoKCkpTT1BfRU5VTUVMRU0gPSAxMjIsCgoK
CgoKCkpTT1BfR0VUVEVSID0gMTIzLApKU09QX1NFVFRFUiA9IDEyNCwKCgoKCkpTT1BfREVGRlVO
ID0gMTI1LApKU09QX0RFRkNPTlNUID0gMTI2LApKU09QX0RFRlZBUiA9IDEyNywKCgpKU09QX0FO
T05GVU5PQkogPSAxMjgsCgoKSlNPUF9OQU1FREZVTk9CSiA9IDEyOSwKCgpKU09QX0lOSVRDQVRD
SFZBUiA9IDEzMCwKCgpKU09QX0dST1VQID0gMTMxLAoKCkpTT1BfU0VUQ0FMTCA9IDEzMiwKCgoK
CgpKU09QX1RSWSA9IDEzMywKSlNPUF9GSU5BTExZID0gMTM0LAoKCgoKCgoKSlNPUF9TV0FQID0g
MTM1LAoKCgoKCgpKU09QX0FSR1NVQiA9IDEzNiwKSlNPUF9BUkdDTlQgPSAxMzcsCgoKCgoKCkpT
T1BfREVGTE9DQUxGVU4gPSAxMzgsCgoKSlNPUF9HT1RPWCA9IDEzOSwKSlNPUF9JRkVRWCA9IDE0
MCwKSlNPUF9JRk5FWCA9IDE0MSwKSlNPUF9PUlggPSAxNDIsCkpTT1BfQU5EWCA9IDE0MywKSlNP
UF9HT1NVQlggPSAxNDQsCkpTT1BfQ0FTRVggPSAxNDUsCkpTT1BfREVGQVVMVFggPSAxNDYsCkpT
T1BfVEFCTEVTV0lUQ0hYID0gMTQ3LApKU09QX0xPT0tVUFNXSVRDSFggPSAxNDgsCgoKSlNPUF9C
QUNLUEFUQ0ggPSAxNDksCkpTT1BfQkFDS1BBVENIX1BPUCA9IDE1MCwKSlNPUF9CQUNLUEFUQ0hf
UFVTSCA9IDE1MSwKCgpKU09QX1NFVFJWQUwgPSAxNTIsCkpTT1BfUkVUUlZBTCA9IDE1MywKIyA1
MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzb3Bjb2RlLmgiIDIKCiAgICBKU09QX0xJTUlU
Cn0gSlNPcDsKIyAxNjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc29wY29kZS5oIgpzdHJ1
Y3QgSlNDb2RlU3BlYyB7CiAgICBjb25zdCBjaGFyICpuYW1lOwogICAgY29uc3QgY2hhciAqdG9r
ZW47CiAgICBpbnQ4IGxlbmd0aDsKICAgIGludDggbnVzZXM7CiAgICBpbnQ4IG5kZWZzOwogICAg
dWludDggcHJlYzsKICAgIHVpbnQzMiBmb3JtYXQ7Cn07CgpleHRlcm4gY2hhciBqc19jb25zdF9z
dHJbXTsKZXh0ZXJuIGNoYXIganNfdmFyX3N0cltdOwpleHRlcm4gY2hhciBqc19mdW5jdGlvbl9z
dHJbXTsKZXh0ZXJuIGNoYXIganNfaW5fc3RyW107CmV4dGVybiBjaGFyIGpzX2luc3RhbmNlb2Zf
c3RyW107CmV4dGVybiBjaGFyIGpzX25ld19zdHJbXTsKZXh0ZXJuIGNoYXIganNfZGVsZXRlX3N0
cltdOwpleHRlcm4gY2hhciBqc190eXBlb2Zfc3RyW107CmV4dGVybiBjaGFyIGpzX3ZvaWRfc3Ry
W107CmV4dGVybiBjaGFyIGpzX251bGxfc3RyW107CmV4dGVybiBjaGFyIGpzX3RoaXNfc3RyW107
CmV4dGVybiBjaGFyIGpzX2ZhbHNlX3N0cltdOwpleHRlcm4gY2hhciBqc190cnVlX3N0cltdOwpl
eHRlcm4gSlNDb2RlU3BlYyBqc19Db2RlU3BlY1tdOwpleHRlcm4gdWludE4ganNfTnVtQ29kZVNw
ZWNzOwpleHRlcm4ganNjaGFyIGpzX0VzY2FwZU1hcFtdOwoKCgoKCgpleHRlcm4gSlNTdHJpbmcg
Kgpqc19RdW90ZVN0cmluZyhKU0NvbnRleHQgKmN4LCBKU1N0cmluZyAqc3RyLCBqc2NoYXIgcXVv
dGUpOwoKCgoKCgpleHRlcm4gSlNQcmludGVyICoKanNfTmV3UHJpbnRlcihKU0NvbnRleHQgKmN4
LCBjb25zdCBjaGFyICpuYW1lLCB1aW50TiBpbmRlbnQsIEpTQm9vbCBwcmV0dHkpOwoKZXh0ZXJu
IHZvaWQKanNfRGVzdHJveVByaW50ZXIoSlNQcmludGVyICpqcCk7CgpleHRlcm4gSlNTdHJpbmcg
Kgpqc19HZXRQcmludGVyT3V0cHV0KEpTUHJpbnRlciAqanApOwoKZXh0ZXJuIGludApqc19wcmlu
dGYoSlNQcmludGVyICpqcCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOwoKZXh0ZXJuIEpTQm9v
bApqc19wdXRzKEpTUHJpbnRlciAqanAsIGNvbnN0IGNoYXIgKnMpOwojIDIzNyAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2pzL2pzb3Bjb2RlLmgiCmV4dGVybiBKU0Jvb2wKanNfRGVjb21waWxlQ29k
ZShKU1ByaW50ZXIgKmpwLCBKU1NjcmlwdCAqc2NyaXB0LCBqc2J5dGVjb2RlICpwYywgdWludE4g
bGVuKTsKCmV4dGVybiBKU0Jvb2wKanNfRGVjb21waWxlU2NyaXB0KEpTUHJpbnRlciAqanAsIEpT
U2NyaXB0ICpzY3JpcHQpOwoKZXh0ZXJuIEpTQm9vbApqc19EZWNvbXBpbGVGdW5jdGlvbkJvZHko
SlNQcmludGVyICpqcCwgSlNGdW5jdGlvbiAqZnVuKTsKCmV4dGVybiBKU0Jvb2wKanNfRGVjb21w
aWxlRnVuY3Rpb24oSlNQcmludGVyICpqcCwgSlNGdW5jdGlvbiAqZnVuKTsKIyAyNTkgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9qcy9qc29wY29kZS5oIgpleHRlcm4gSlNTdHJpbmcgKgpqc19EZWNv
bXBpbGVWYWx1ZUdlbmVyYXRvcihKU0NvbnRleHQgKmN4LCBpbnROIHNwaW5kZXgsIGpzdmFsIHYs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTU3RyaW5nICpmYWxsYmFjayk7CgoKCgp9CiMg
NDIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2RiZ2FwaS5oIiAyCgoKZXh0ZXJuICJDIiB7
CgpleHRlcm4gdm9pZApqc19QYXRjaE9wY29kZShKU0NvbnRleHQgKmN4LCBKU1NjcmlwdCAqc2Ny
aXB0LCBqc2J5dGVjb2RlICpwYywgSlNPcCBvcCk7CgpleHRlcm4gSlNCb29sCkpTX1NldFRyYXAo
SlNDb250ZXh0ICpjeCwgSlNTY3JpcHQgKnNjcmlwdCwganNieXRlY29kZSAqcGMsCiAgICAgICAg
ICAgSlNUcmFwSGFuZGxlciBoYW5kbGVyLCB2b2lkICpjbG9zdXJlKTsKCmV4dGVybiBKU09wCkpT
X0dldFRyYXBPcGNvZGUoSlNDb250ZXh0ICpjeCwgSlNTY3JpcHQgKnNjcmlwdCwganNieXRlY29k
ZSAqcGMpOwoKZXh0ZXJuIHZvaWQKSlNfQ2xlYXJUcmFwKEpTQ29udGV4dCAqY3gsIEpTU2NyaXB0
ICpzY3JpcHQsIGpzYnl0ZWNvZGUgKnBjLAogICAgICAgICAgICAgSlNUcmFwSGFuZGxlciAqaGFu
ZGxlcnAsIHZvaWQgKipjbG9zdXJlcCk7CgpleHRlcm4gdm9pZApKU19DbGVhclNjcmlwdFRyYXBz
KEpTQ29udGV4dCAqY3gsIEpTU2NyaXB0ICpzY3JpcHQpOwoKZXh0ZXJuIHZvaWQKSlNfQ2xlYXJB
bGxUcmFwcyhKU0NvbnRleHQgKmN4KTsKCmV4dGVybiBKU1RyYXBTdGF0dXMKSlNfSGFuZGxlVHJh
cChKU0NvbnRleHQgKmN4LCBKU1NjcmlwdCAqc2NyaXB0LCBqc2J5dGVjb2RlICpwYywganN2YWwg
KnJ2YWwpOwoKZXh0ZXJuIEpTQm9vbApKU19TZXRJbnRlcnJ1cHQoSlNSdW50aW1lICpydCwgSlNU
cmFwSGFuZGxlciBoYW5kbGVyLCB2b2lkICpjbG9zdXJlKTsKCmV4dGVybiBKU0Jvb2wKSlNfQ2xl
YXJJbnRlcnJ1cHQoSlNSdW50aW1lICpydCwgSlNUcmFwSGFuZGxlciAqaGFuZGxlcnAsIHZvaWQg
KipjbG9zdXJlcCk7CgoKCmV4dGVybiBKU0Jvb2wKSlNfU2V0V2F0Y2hQb2ludChKU0NvbnRleHQg
KmN4LCBKU09iamVjdCAqb2JqLCBqc3ZhbCBpZCwKICAgICAgICAgICAgICAgICBKU1dhdGNoUG9p
bnRIYW5kbGVyIGhhbmRsZXIsIHZvaWQgKmNsb3N1cmUpOwoKZXh0ZXJuIEpTQm9vbApKU19DbGVh
cldhdGNoUG9pbnQoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsCiAgICAg
ICAgICAgICAgICAgICBKU1dhdGNoUG9pbnRIYW5kbGVyICpoYW5kbGVycCwgdm9pZCAqKmNsb3N1
cmVwKTsKCmV4dGVybiBKU0Jvb2wKSlNfQ2xlYXJXYXRjaFBvaW50c0Zvck9iamVjdChKU0NvbnRl
eHQgKmN4LCBKU09iamVjdCAqb2JqKTsKCmV4dGVybiBKU0Jvb2wKSlNfQ2xlYXJBbGxXYXRjaFBv
aW50cyhKU0NvbnRleHQgKmN4KTsKIyAxMjAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2Ri
Z2FwaS5oIgpleHRlcm4gdWludE4KSlNfUENUb0xpbmVOdW1iZXIoSlNDb250ZXh0ICpjeCwgSlNT
Y3JpcHQgKnNjcmlwdCwganNieXRlY29kZSAqcGMpOwoKZXh0ZXJuIGpzYnl0ZWNvZGUgKgpKU19M
aW5lTnVtYmVyVG9QQyhKU0NvbnRleHQgKmN4LCBKU1NjcmlwdCAqc2NyaXB0LCB1aW50TiBsaW5l
bm8pOwoKZXh0ZXJuIEpTU2NyaXB0ICoKSlNfR2V0RnVuY3Rpb25TY3JpcHQoSlNDb250ZXh0ICpj
eCwgSlNGdW5jdGlvbiAqZnVuKTsKCmV4dGVybiBKU1ByaW5jaXBhbHMgKgpKU19HZXRTY3JpcHRQ
cmluY2lwYWxzKEpTQ29udGV4dCAqY3gsIEpTU2NyaXB0ICpzY3JpcHQpOwojIDEzOSAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL2pzL2pzZGJnYXBpLmgiCmV4dGVybiBKU1N0YWNrRnJhbWUgKgpKU19G
cmFtZUl0ZXJhdG9yKEpTQ29udGV4dCAqY3gsIEpTU3RhY2tGcmFtZSAqKml0ZXJhdG9ycCk7Cgpl
eHRlcm4gSlNTY3JpcHQgKgpKU19HZXRGcmFtZVNjcmlwdChKU0NvbnRleHQgKmN4LCBKU1N0YWNr
RnJhbWUgKmZwKTsKCmV4dGVybiBqc2J5dGVjb2RlICoKSlNfR2V0RnJhbWVQQyhKU0NvbnRleHQg
KmN4LCBKU1N0YWNrRnJhbWUgKmZwKTsKCmV4dGVybiBKU0Jvb2wKSlNfSXNOYXRpdmVGcmFtZShK
U0NvbnRleHQgKmN4LCBKU1N0YWNrRnJhbWUgKmZwKTsKCmV4dGVybiB2b2lkICoKSlNfR2V0RnJh
bWVBbm5vdGF0aW9uKEpTQ29udGV4dCAqY3gsIEpTU3RhY2tGcmFtZSAqZnApOwoKZXh0ZXJuIHZv
aWQKSlNfU2V0RnJhbWVBbm5vdGF0aW9uKEpTQ29udGV4dCAqY3gsIEpTU3RhY2tGcmFtZSAqZnAs
IHZvaWQgKmFubm90YXRpb24pOwoKZXh0ZXJuIHZvaWQgKgpKU19HZXRGcmFtZVByaW5jaXBhbEFy
cmF5KEpTQ29udGV4dCAqY3gsIEpTU3RhY2tGcmFtZSAqZnApOwoKCmV4dGVybiBKU09iamVjdCAq
CkpTX0dldEZyYW1lT2JqZWN0KEpTQ29udGV4dCAqY3gsIEpTU3RhY2tGcmFtZSAqZnApOwoKZXh0
ZXJuIEpTT2JqZWN0ICoKSlNfR2V0RnJhbWVTY29wZUNoYWluKEpTQ29udGV4dCAqY3gsIEpTU3Rh
Y2tGcmFtZSAqZnApOwoKZXh0ZXJuIEpTT2JqZWN0ICoKSlNfR2V0RnJhbWVDYWxsT2JqZWN0KEpT
Q29udGV4dCAqY3gsIEpTU3RhY2tGcmFtZSAqZnApOwoKZXh0ZXJuIEpTT2JqZWN0ICoKSlNfR2V0
RnJhbWVUaGlzKEpTQ29udGV4dCAqY3gsIEpTU3RhY2tGcmFtZSAqZnApOwoKZXh0ZXJuIEpTRnVu
Y3Rpb24gKgpKU19HZXRGcmFtZUZ1bmN0aW9uKEpTQ29udGV4dCAqY3gsIEpTU3RhY2tGcmFtZSAq
ZnApOwoKZXh0ZXJuIEpTT2JqZWN0ICoKSlNfR2V0RnJhbWVGdW5jdGlvbk9iamVjdChKU0NvbnRl
eHQgKmN4LCBKU1N0YWNrRnJhbWUgKmZwKTsKCgoKZXh0ZXJuIEpTQm9vbApKU19Jc0NvbnN0cnVj
dG9yRnJhbWUoSlNDb250ZXh0ICpjeCwgSlNTdGFja0ZyYW1lICpmcCk7CgpleHRlcm4gSlNCb29s
CkpTX0lzRGVidWdnZXJGcmFtZShKU0NvbnRleHQgKmN4LCBKU1N0YWNrRnJhbWUgKmZwKTsKCmV4
dGVybiBqc3ZhbApKU19HZXRGcmFtZVJldHVyblZhbHVlKEpTQ29udGV4dCAqY3gsIEpTU3RhY2tG
cmFtZSAqZnApOwoKZXh0ZXJuIHZvaWQKSlNfU2V0RnJhbWVSZXR1cm5WYWx1ZShKU0NvbnRleHQg
KmN4LCBKU1N0YWNrRnJhbWUgKmZwLCBqc3ZhbCBydmFsKTsKCgoKZXh0ZXJuIGNvbnN0IGNoYXIg
KgpKU19HZXRTY3JpcHRGaWxlbmFtZShKU0NvbnRleHQgKmN4LCBKU1NjcmlwdCAqc2NyaXB0KTsK
CmV4dGVybiB1aW50TgpKU19HZXRTY3JpcHRCYXNlTGluZU51bWJlcihKU0NvbnRleHQgKmN4LCBK
U1NjcmlwdCAqc2NyaXB0KTsKCmV4dGVybiB1aW50TgpKU19HZXRTY3JpcHRMaW5lRXh0ZW50KEpT
Q29udGV4dCAqY3gsIEpTU2NyaXB0ICpzY3JpcHQpOwoKZXh0ZXJuIEpTVmVyc2lvbgpKU19HZXRT
Y3JpcHRWZXJzaW9uKEpTQ29udGV4dCAqY3gsIEpTU2NyaXB0ICpzY3JpcHQpOwojIDIxNyAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzZGJnYXBpLmgiCmV4dGVybiB2b2lkCkpTX1NldE5ld1Nj
cmlwdEhvb2tQcm9jKEpTUnVudGltZSAqcnQsIEpTTmV3U2NyaXB0SG9vayBob29rLCB2b2lkICpj
YWxsZXJkYXRhKTsKCmV4dGVybiB2b2lkCkpTX1NldERlc3Ryb3lTY3JpcHRIb29rUHJvYyhKU1J1
bnRpbWUgKnJ0LCBKU0Rlc3Ryb3lTY3JpcHRIb29rIGhvb2ssCiAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQgKmNhbGxlcmRhdGEpOwoKCgpleHRlcm4gSlNCb29sCkpTX0V2YWx1YXRlVUNJblN0
YWNrRnJhbWUoSlNDb250ZXh0ICpjeCwgSlNTdGFja0ZyYW1lICpmcCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBqc2NoYXIgKmJ5dGVzLCB1aW50TiBsZW5ndGgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsIHVpbnROIGxpbmVubywKICAgICAg
ICAgICAgICAgICAgICAgICAgICBqc3ZhbCAqcnZhbCk7CgpleHRlcm4gSlNCb29sCkpTX0V2YWx1
YXRlSW5TdGFja0ZyYW1lKEpTQ29udGV4dCAqY3gsIEpTU3RhY2tGcmFtZSAqZnAsCiAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJ5dGVzLCB1aW50TiBsZW5ndGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCB1aW50TiBsaW5lbm8sCiAgICAg
ICAgICAgICAgICAgICAgICAgIGpzdmFsICpydmFsKTsKCgoKdHlwZWRlZiBzdHJ1Y3QgSlNQcm9w
ZXJ0eURlc2MgewogICAganN2YWwgaWQ7CiAgICBqc3ZhbCB2YWx1ZTsKICAgIHVpbnQ4IGZsYWdz
OwogICAgdWludDggc3BhcmU7CiAgICB1aW50MTYgc2xvdDsKICAgIGpzdmFsIGFsaWFzOwp9IEpT
UHJvcGVydHlEZXNjOwojIDI2MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzZGJnYXBpLmgi
CnR5cGVkZWYgc3RydWN0IEpTUHJvcGVydHlEZXNjQXJyYXkgewogICAgdWludDMyIGxlbmd0aDsK
ICAgIEpTUHJvcGVydHlEZXNjICphcnJheTsKfSBKU1Byb3BlcnR5RGVzY0FycmF5OwoKZXh0ZXJu
IEpTU2NvcGVQcm9wZXJ0eSAqCkpTX1Byb3BlcnR5SXRlcmF0b3IoSlNPYmplY3QgKm9iaiwgSlNT
Y29wZVByb3BlcnR5ICoqaXRlcmF0b3JwKTsKCmV4dGVybiBKU0Jvb2wKSlNfR2V0UHJvcGVydHlE
ZXNjKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIEpTU2NvcGVQcm9wZXJ0eSAqc3Byb3As
CiAgICAgICAgICAgICAgICAgICBKU1Byb3BlcnR5RGVzYyAqcGQpOwoKZXh0ZXJuIEpTQm9vbApK
U19HZXRQcm9wZXJ0eURlc2NBcnJheShKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBKU1By
b3BlcnR5RGVzY0FycmF5ICpwZGEpOwoKZXh0ZXJuIHZvaWQKSlNfUHV0UHJvcGVydHlEZXNjQXJy
YXkoSlNDb250ZXh0ICpjeCwgSlNQcm9wZXJ0eURlc2NBcnJheSAqcGRhKTsKCgoKZXh0ZXJuIEpT
Qm9vbApKU19TZXREZWJ1Z2dlckhhbmRsZXIoSlNSdW50aW1lICpydCwgSlNUcmFwSGFuZGxlciBo
YW5kbGVyLCB2b2lkICpjbG9zdXJlKTsKCmV4dGVybiBKU0Jvb2wKSlNfU2V0U291cmNlSGFuZGxl
cihKU1J1bnRpbWUgKnJ0LCBKU1NvdXJjZUhhbmRsZXIgaGFuZGxlciwgdm9pZCAqY2xvc3VyZSk7
CgpleHRlcm4gSlNCb29sCkpTX1NldEV4ZWN1dGVIb29rKEpTUnVudGltZSAqcnQsIEpTSW50ZXJw
cmV0ZXJIb29rIGhvb2ssIHZvaWQgKmNsb3N1cmUpOwoKZXh0ZXJuIEpTQm9vbApKU19TZXRDYWxs
SG9vayhKU1J1bnRpbWUgKnJ0LCBKU0ludGVycHJldGVySG9vayBob29rLCB2b2lkICpjbG9zdXJl
KTsKCmV4dGVybiBKU0Jvb2wKSlNfU2V0T2JqZWN0SG9vayhKU1J1bnRpbWUgKnJ0LCBKU09iamVj
dEhvb2sgaG9vaywgdm9pZCAqY2xvc3VyZSk7CgpleHRlcm4gSlNCb29sCkpTX1NldFRocm93SG9v
ayhKU1J1bnRpbWUgKnJ0LCBKU1RyYXBIYW5kbGVyIGhvb2ssIHZvaWQgKmNsb3N1cmUpOwoKZXh0
ZXJuIEpTQm9vbApKU19TZXREZWJ1Z0Vycm9ySG9vayhKU1J1bnRpbWUgKnJ0LCBKU0RlYnVnRXJy
b3JIb29rIGhvb2ssIHZvaWQgKmNsb3N1cmUpOwoKCgpleHRlcm4gc2l6ZV90CkpTX0dldE9iamVj
dFRvdGFsU2l6ZShKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqKTsKCmV4dGVybiBzaXplX3QK
SlNfR2V0RnVuY3Rpb25Ub3RhbFNpemUoSlNDb250ZXh0ICpjeCwgSlNGdW5jdGlvbiAqZnVuKTsK
CmV4dGVybiBzaXplX3QKSlNfR2V0U2NyaXB0VG90YWxTaXplKEpTQ29udGV4dCAqY3gsIEpTU2Ny
aXB0ICpzY3JpcHQpOwoKfQojIDYwICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKCgojIDEgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSUNvbnRlbnQuaCIgMQojIDQzICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvY29udGVudC9uc0lDb250ZW50LmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL3dpZGdldC9uc0V2ZW50LmgiIDEKIyA1MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3dpZGdl
dC9uc0V2ZW50LmgiCmVudW0gbnNFdmVudFN0YXR1cyB7CgogIG5zRXZlbnRTdGF0dXNfZUlnbm9y
ZSwKCiAgbnNFdmVudFN0YXR1c19lQ29uc3VtZU5vRGVmYXVsdCwKCiAgbnNFdmVudFN0YXR1c19l
Q29uc3VtZURvRGVmYXVsdAp9OwoKc3RydWN0IG5zRXZlbnQ7CgpzdHJ1Y3QgbnNHVUlFdmVudDsK
c3RydWN0IG5zU2l6ZUV2ZW50OwpzdHJ1Y3QgbnNTaXplTW9kZUV2ZW50OwpzdHJ1Y3QgbnNaTGV2
ZWxFdmVudDsKc3RydWN0IG5zUGFpbnRFdmVudDsKc3RydWN0IG5zU2Nyb2xsYmFyRXZlbnQ7CnN0
cnVjdCBuc1Njcm9sbFBvcnRFdmVudDsKc3RydWN0IG5zSW5wdXRFdmVudDsKc3RydWN0IG5zTW91
c2VFdmVudDsKc3RydWN0IG5zQWNjZXNzaWJsZUV2ZW50OwpzdHJ1Y3QgbnNLZXlFdmVudDsKc3Ry
dWN0IG5zVGV4dEV2ZW50OwpzdHJ1Y3QgbnNDb21wb3NpdGlvbkV2ZW50OwpzdHJ1Y3QgbnNNb3Vz
ZVNjcm9sbEV2ZW50OwpzdHJ1Y3QgbnNSZWNvbnZlcnNpb25FdmVudDsKc3RydWN0IG5zVG9vbHRp
cEV2ZW50OwpzdHJ1Y3QgbnNNZW51RXZlbnQ7CgpzdHJ1Y3QgbnNUZXh0RXZlbnRSZXBseTsKc3Ry
dWN0IG5zUmVjb252ZXJzaW9uRXZlbnRSZXBseTsKIyA0NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L2NvbnRlbnQvbnNJQ29udGVudC5oIiAyCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250
ZW50L25zQ29udGVudEVycm9ycy5oIiAxCiMgNDYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250
ZW50L25zSUNvbnRlbnQuaCIgMgoKCmNsYXNzIG5zSUF0b207CmNsYXNzIG5zSURvY3VtZW50Owpj
bGFzcyBuc0lQcmVzQ29udGV4dDsKY2xhc3MgbnNWb2lkQXJyYXk7CmNsYXNzIG5zSURPTUV2ZW50
OwpjbGFzcyBuc0lDb250ZW50OwpjbGFzcyBuc0lTdXBwb3J0c0FycmF5OwpjbGFzcyBuc0lET01S
YW5nZTsKY2xhc3MgbnNJU2l6ZU9mSGFuZGxlcjsKY2xhc3MgbnNJTm9kZUluZm87CmNsYXNzIG5z
SUV2ZW50TGlzdGVuZXJNYW5hZ2VyOwojIDY5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVu
dC9uc0lDb250ZW50LmgiCmNsYXNzIG5zSUNvbnRlbnQgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewpw
dWJsaWM6CiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlE
IGlpZCA9IHsgMHg3ODAzMDIyMCwgMHg5NDQ3LCAweDExZDEsIHsweDkzLCAweDIzLCAweDAwLCAw
eDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyfSB9OyByZXR1cm4gaWlkO30KCgoKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0RG9jdW1lbnQobnNJRG9jdW1lbnQqJiBhUmVzdWx0KSBjb25zdCA9IDA7
CiMgODcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSUNvbnRlbnQuaCIKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldERvY3VtZW50KG5zSURvY3VtZW50KiBhRG9jdW1lbnQsIFBSQm9vbCBh
RGVlcCwgUFJCb29sIGFDb21waWxlRXZlbnRIYW5kbGVycykgPSAwOwoKCgoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRQYXJlbnQobnNJQ29udGVudComIGFSZXN1bHQpIGNvbnN0ID0gMDsKCgoKCgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldFBhcmVudChuc0lDb250ZW50KiBhUGFyZW50KSA9IDA7CgoK
CgoKCiAgdmlydHVhbCBQUkJvb2wgSXNOYXRpdmVBbm9ueW1vdXMoKSBjb25zdCA9IDA7CgoKCgoK
CiAgdmlydHVhbCB2b2lkIFNldE5hdGl2ZUFub255bW91cyhQUkJvb2wgYUFub255bW91cykgPSAw
OwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROYW1lU3BhY2VJRChQUkludDMyJiBhUmVzdWx0
KSBjb25zdCA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFRhZyhuc0lBdG9tKiYgYVJl
c3VsdCkgY29uc3QgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROb2RlSW5mbyhuc0lO
b2RlSW5mbyomIGFSZXN1bHQpIGNvbnN0ID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ2Fu
Q29udGFpbkNoaWxkcmVuKFBSQm9vbCYgYVJlc3VsdCkgY29uc3QgPSAwOwoKCgoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBDaGlsZENvdW50KFBSSW50MzImIGFSZXN1bHQpIGNvbnN0ID0gMDsKCgoKCgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IENoaWxkQXQoUFJJbnQzMiBhSW5kZXgsIG5zSUNvbnRlbnQqJiBh
UmVzdWx0KSBjb25zdCA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJbmRleE9mKG5zSUNv
bnRlbnQqIGFQb3NzaWJsZUNoaWxkLCBQUkludDMyJiBhSW5kZXgpIGNvbnN0ID0gMDsKIyAxNzAg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSUNvbnRlbnQuaCIKICB2aXJ0dWFsIG5z
cmVzdWx0IEluc2VydENoaWxkQXQobnNJQ29udGVudCogYUtpZCwgUFJJbnQzMiBhSW5kZXgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCBhTm90aWZ5LCBQUkJvb2wgYURlZXBTZXRE
b2N1bWVudCkgPSAwOwojIDE4MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJQ29u
dGVudC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgUmVwbGFjZUNoaWxkQXQobnNJQ29udGVudCogYUtp
ZCwgUFJJbnQzMiBhSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkJvb2wgYU5v
dGlmeSwgUFJCb29sIGFEZWVwU2V0RG9jdW1lbnQpID0gMDsKIyAxOTMgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9jb250ZW50L25zSUNvbnRlbnQuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEFwcGVuZENo
aWxkVG8obnNJQ29udGVudCogYUtpZCwgUFJCb29sIGFOb3RpZnksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBSQm9vbCBhRGVlcFNldERvY3VtZW50KSA9IDA7CiMgMjAzICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvY29udGVudC9uc0lDb250ZW50LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBSZW1v
dmVDaGlsZEF0KFBSSW50MzIgYUluZGV4LCBQUkJvb2wgYU5vdGlmeSkgPSAwOwojIDIxNSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJQ29udGVudC5oIgogIHZpcnR1YWwgbnNyZXN1
bHQgTm9ybWFsaXplQXR0clN0cmluZyhjb25zdCBuc0FTdHJpbmcmIGFTdHIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5zSU5vZGVJbmZvKiYgYU5vZGVJbmZvKSA9IDA7CiMgMjMx
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lDb250ZW50LmgiCiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXRBdHRyKFBSSW50MzIgYU5hbWVTcGFjZUlELCBuc0lBdG9tKiBhTmFtZSwKICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgbnNBU3RyaW5nJiBhVmFsdWUsCiAgICAgICAgICAgICAg
ICAgICAgIFBSQm9vbCBhTm90aWZ5KSA9IDA7CiMgMjQ4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
Y29udGVudC9uc0lDb250ZW50LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRBdHRyKG5zSU5vZGVJ
bmZvKiBhTm9kZUluZm8sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5zQVN0cmluZyYgYVZh
bHVlLAogICAgICAgICAgICAgICAgICAgICBQUkJvb2wgYU5vdGlmeSkgPSAwOwojIDI2NSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJQ29udGVudC5oIgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0QXR0cihQUkludDMyIGFOYW1lU3BhY2VJRCwgbnNJQXRvbSogYU5hbWUsCiAgICAgICAg
ICAgICAgICAgICAgIG5zQVN0cmluZyYgYVJlc3VsdCkgY29uc3QgPSAwOwojIDI4MyAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJQ29udGVudC5oIgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0QXR0cihQUkludDMyIGFOYW1lU3BhY2VJRCwgbnNJQXRvbSogYU5hbWUsCiAgICAgICAgICAg
ICAgICAgICAgIG5zSUF0b20qJiBhUHJlZml4LCBuc0FTdHJpbmcmIGFSZXN1bHQpIGNvbnN0ID0g
MDsKIyAyOTQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSUNvbnRlbnQuaCIKICB2
aXJ0dWFsIFBSQm9vbCBIYXNBdHRyKFBSSW50MzIgYU5hbWVTcGFjZUlELCBuc0lBdG9tKiBhTmFt
ZSkgY29uc3QgPSAwOwojIDMwNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJQ29u
dGVudC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgVW5zZXRBdHRyKFBSSW50MzIgYU5hbWVTcGFjZUlE
LCBuc0lBdG9tKiBhQXR0ciwKICAgICAgICAgICAgICAgICAgICAgICBQUkJvb2wgYU5vdGlmeSkg
PSAwOwojIDMxNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJQ29udGVudC5oIgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0QXR0ck5hbWVBdChQUkludDMyIGFJbmRleCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUFJJbnQzMiYgYU5hbWVTcGFjZUlELAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBuc0lBdG9tKiYgYU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5z
SUF0b20qJiBhUHJlZml4KSBjb25zdCA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRB
dHRyQ291bnQoUFJJbnQzMiYgYUNvdW50UmVzdWx0KSBjb25zdCA9IDA7CiMgMzQxICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lDb250ZW50LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBS
YW5nZUFkZChuc0lET01SYW5nZSogYVJhbmdlKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQg
UmFuZ2VSZW1vdmUobnNJRE9NUmFuZ2UqIGFSYW5nZSkgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldFJhbmdlTGlzdChuc1ZvaWRBcnJheSomIGFSZXN1bHQpIGNvbnN0ID0gMDsKIyAzODUg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSUNvbnRlbnQuaCIKICB2aXJ0dWFsIG5z
cmVzdWx0IEhhbmRsZURPTUV2ZW50KG5zSVByZXNDb250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuc0V2ZW50KiBhRXZlbnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuc0lET01FdmVudCoqIGFET01FdmVudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBSVWludDMyIGFGbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zRXZl
bnRTdGF0dXMqIGFFdmVudFN0YXR1cykgPSAwOwojIDQwNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L2NvbnRlbnQvbnNJQ29udGVudC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29udGVudElEKFBS
VWludDMyKiBhSUQpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDb250ZW50SUQoUFJV
aW50MzIgYUlEKSA9IDA7CiMgNDIzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lD
b250ZW50LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRGb2N1cyhuc0lQcmVzQ29udGV4dCogYVBy
ZXNDb250ZXh0KSA9IDA7CiMgNDM1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lD
b250ZW50LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBSZW1vdmVGb2N1cyhuc0lQcmVzQ29udGV4dCog
YVByZXNDb250ZXh0KSA9IDA7CiMgNDQ0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9u
c0lDb250ZW50LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRCaW5kaW5nUGFyZW50KG5zSUNvbnRl
bnQqIGFDb250ZW50KSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QmluZGluZ1Bh
cmVudChuc0lDb250ZW50KiogYUNvbnRlbnQpID0gMDsKCgoKCiAgZW51bSB7CgogICAgZVRFWFQg
PSAweDAwMDAwMDAxLAoKICAgIGVFTEVNRU5UID0gMHgwMDAwMDAwMiwKCiAgICBlSFRNTCA9IDB4
MDAwMDAwMDQsCgogICAgZUhUTUxfRk9STV9DT05UUk9MID0gMHgwMDAwMDAwOCwKCiAgICBlWFVM
ID0gMHgwMDAwMDAxMAogIH07CiMgNDc5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9u
c0lDb250ZW50LmgiCiAgdmlydHVhbCBQUkJvb2wgSXNDb250ZW50T2ZUeXBlKFBSVWludDMyIGFG
bGFncykgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGlzdGVuZXJNYW5hZ2VyKG5z
SUV2ZW50TGlzdGVuZXJNYW5hZ2VyKiogYVJlc3VsdCkgPSAwOwojIDUxNCAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2NvbnRlbnQvbnNJQ29udGVudC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgRG9uZUNy
ZWF0aW5nRWxlbWVudCgpID0gMDsKIyA1NDggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50
L25zSUNvbnRlbnQuaCIKfTsKIyA2MyAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJRG9jdW1lbnQuaCIgMQojIDQ1ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvY29udGVudC9uc0lEb2N1bWVudC5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9jb250ZW50L25zQ2hhbmdlSGludC5oIiAxCiMgNDQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9jb250ZW50L25zQ2hhbmdlSGludC5oIgplbnVtIG5zQ2hhbmdlSGludCB7CiAgbnNDaGFuZ2VI
aW50X05vbmUgPSAwLAogIG5zQ2hhbmdlSGludF9Vbmtub3duID0gMHgwMSwKICBuc0NoYW5nZUhp
bnRfQXR0ckNoYW5nZSA9IDB4MDIsCiAgbnNDaGFuZ2VIaW50X0F1cmFsID0gMHgwNCwKICBuc0No
YW5nZUhpbnRfQ29udGVudCA9IDB4MDgsCiAgbnNDaGFuZ2VIaW50X1JlcGFpbnRGcmFtZSA9IDB4
MTAsCiAgbnNDaGFuZ2VIaW50X1JlZmxvd0ZyYW1lID0gMHgyMCwKICBuc0NoYW5nZUhpbnRfU3lu
Y0ZyYW1lVmlldyA9IDB4NDAsCiAgbnNDaGFuZ2VIaW50X1JlY29uc3RydWN0RnJhbWUgPSAweDgw
LAoKICBuc0NoYW5nZUhpbnRfUmVjb25zdHJ1Y3REb2MgPSAweDEwMAoKCgoKCn07CiMgNzggIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zQ2hhbmdlSGludC5oIgppbmxpbmUgbnNDaGFu
Z2VIaW50IE5TX0NvbWJpbmVIaW50KG5zQ2hhbmdlSGludCBhSDEsIG5zQ2hhbmdlSGludCBhSDIp
IHsKICByZXR1cm4gKG5zQ2hhbmdlSGludCkoYUgxIHwgYUgyKTsKfQoKCmlubGluZSBuc0NoYW5n
ZUhpbnQgTlNfU3VidHJhY3RIaW50KG5zQ2hhbmdlSGludCBhSDEsIG5zQ2hhbmdlSGludCBhSDIp
IHsKICByZXR1cm4gKG5zQ2hhbmdlSGludCkoYUgxICYgfmFIMik7Cn0KCgoKaW5saW5lIFBSQm9v
bCBOU19VcGRhdGVIaW50KG5zQ2hhbmdlSGludCYgYURlc3QsIG5zQ2hhbmdlSGludCBhU3JjKSB7
CiAgbnNDaGFuZ2VIaW50IHIgPSAobnNDaGFuZ2VIaW50KShhRGVzdCB8IGFTcmMpOwogIFBSQm9v
bCBjaGFuZ2VkID0gKGludClyICE9IChpbnQpYURlc3Q7CiAgYURlc3QgPSByOwogIHJldHVybiBj
aGFuZ2VkOwp9CgoKaW5saW5lIFBSQm9vbCBOU19Jc0hpbnRTdWJzZXQobnNDaGFuZ2VIaW50IGFT
dWJzZXQsIG5zQ2hhbmdlSGludCBhU3VwZXJTZXQpIHsKICByZXR1cm4gKGFTdWJzZXQgJiBhU3Vw
ZXJTZXQpID09IGFTdWJzZXQ7Cn0KCgpjb25zdCBuc0NoYW5nZUhpbnQgTlNfU1RZTEVfSElOVF9V
TktOT1dOID0gbnNDaGFuZ2VIaW50X1Vua25vd247CmNvbnN0IG5zQ2hhbmdlSGludCBOU19TVFlM
RV9ISU5UX05PTkUgPSBuc0NoYW5nZUhpbnRfTm9uZTsKY29uc3QgbnNDaGFuZ2VIaW50IE5TX1NU
WUxFX0hJTlRfQVRUUkNIQU5HRSA9IG5zQ2hhbmdlSGludF9BdHRyQ2hhbmdlOwpjb25zdCBuc0No
YW5nZUhpbnQgTlNfU1RZTEVfSElOVF9BVVJBTCA9IChuc0NoYW5nZUhpbnQpCiAgKG5zQ2hhbmdl
SGludF9BdHRyQ2hhbmdlIHwgbnNDaGFuZ2VIaW50X0F1cmFsKTsKY29uc3QgbnNDaGFuZ2VIaW50
IE5TX1NUWUxFX0hJTlRfQ09OVEVOVCA9IChuc0NoYW5nZUhpbnQpCiAgKG5zQ2hhbmdlSGludF9B
dHRyQ2hhbmdlIHwgbnNDaGFuZ2VIaW50X0F1cmFsIHwgbnNDaGFuZ2VIaW50X0NvbnRlbnQpOwpj
b25zdCBuc0NoYW5nZUhpbnQgTlNfU1RZTEVfSElOVF9WSVNVQUwgPSAobnNDaGFuZ2VIaW50KQog
IChuc0NoYW5nZUhpbnRfQXR0ckNoYW5nZSB8IG5zQ2hhbmdlSGludF9BdXJhbCB8IG5zQ2hhbmdl
SGludF9Db250ZW50IHwgbnNDaGFuZ2VIaW50X1JlcGFpbnRGcmFtZQogICB8IG5zQ2hhbmdlSGlu
dF9TeW5jRnJhbWVWaWV3KTsKY29uc3QgbnNDaGFuZ2VIaW50IE5TX1NUWUxFX0hJTlRfUkVGTE9X
ID0gKG5zQ2hhbmdlSGludCkKICAobnNDaGFuZ2VIaW50X0F0dHJDaGFuZ2UgfCBuc0NoYW5nZUhp
bnRfQXVyYWwgfCBuc0NoYW5nZUhpbnRfQ29udGVudCB8IG5zQ2hhbmdlSGludF9SZXBhaW50RnJh
bWUKICAgfCBuc0NoYW5nZUhpbnRfU3luY0ZyYW1lVmlldyB8IG5zQ2hhbmdlSGludF9SZWZsb3dG
cmFtZSk7CmNvbnN0IG5zQ2hhbmdlSGludCBOU19TVFlMRV9ISU5UX0ZSQU1FQ0hBTkdFID0gKG5z
Q2hhbmdlSGludCkKICAobnNDaGFuZ2VIaW50X0F0dHJDaGFuZ2UgfCBuc0NoYW5nZUhpbnRfQXVy
YWwgfCBuc0NoYW5nZUhpbnRfQ29udGVudCB8IG5zQ2hhbmdlSGludF9SZXBhaW50RnJhbWUKICAg
fCBuc0NoYW5nZUhpbnRfU3luY0ZyYW1lVmlldyB8IG5zQ2hhbmdlSGludF9SZWZsb3dGcmFtZSB8
IG5zQ2hhbmdlSGludF9SZWNvbnN0cnVjdEZyYW1lKTsKY29uc3QgbnNDaGFuZ2VIaW50IE5TX1NU
WUxFX0hJTlRfUkVDT05TVFJVQ1RfQUxMID0gKG5zQ2hhbmdlSGludCkKICAobnNDaGFuZ2VIaW50
X0F0dHJDaGFuZ2UgfCBuc0NoYW5nZUhpbnRfQXVyYWwgfCBuc0NoYW5nZUhpbnRfQ29udGVudCB8
IG5zQ2hhbmdlSGludF9SZXBhaW50RnJhbWUKICAgfCBuc0NoYW5nZUhpbnRfU3luY0ZyYW1lVmll
dyB8IG5zQ2hhbmdlSGludF9SZWZsb3dGcmFtZSB8IG5zQ2hhbmdlSGludF9SZWNvbnN0cnVjdEZy
YW1lCiAgIHwgbnNDaGFuZ2VIaW50X1JlY29uc3RydWN0RG9jKTsKIyA0NiAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2NvbnRlbnQvbnNJRG9jdW1lbnQuaCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS94cGNvbS9uc0NPTUFycmF5LmgiIDEKIyA1MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29tL25zQ09NQXJyYXkuaCIKY2xhc3MgbnNDT01BcnJheV9iYXNlCnsKICAgIGZyaWVuZCBjbGFz
cyBuc0FycmF5Owpwcm90ZWN0ZWQ6CiAgICBuc0NPTUFycmF5X2Jhc2UoKSB7fQogICAgbnNDT01B
cnJheV9iYXNlKFBSSW50MzIgYUNvdW50KSA6IG1BcnJheShhQ291bnQpIHt9CiAgICBuc0NPTUFy
cmF5X2Jhc2UoY29uc3QgbnNDT01BcnJheV9iYXNlJiBvdGhlcik7CiAgICB+bnNDT01BcnJheV9i
YXNlKCk7CgogICAgUFJJbnQzMiBJbmRleE9mKG5zSVN1cHBvcnRzKiBhT2JqZWN0KSBjb25zdCB7
CiAgICAgICAgcmV0dXJuIG1BcnJheS5JbmRleE9mKGFPYmplY3QpOwogICAgfQoKICAgIFBSQm9v
bCBFbnVtZXJhdGVGb3J3YXJkcyhuc1ZvaWRBcnJheUVudW1GdW5jIGFGdW5jLCB2b2lkKiBhRGF0
YSkgewogICAgICAgIHJldHVybiBtQXJyYXkuRW51bWVyYXRlRm9yd2FyZHMoYUZ1bmMsIGFEYXRh
KTsKICAgIH0KCiAgICBQUkJvb2wgRW51bWVyYXRlQmFja3dhcmRzKG5zVm9pZEFycmF5RW51bUZ1
bmMgYUZ1bmMsIHZvaWQqIGFEYXRhKSB7CiAgICAgICAgcmV0dXJuIG1BcnJheS5FbnVtZXJhdGVC
YWNrd2FyZHMoYUZ1bmMsIGFEYXRhKTsKICAgIH0KCgoKCiAgICB2b2lkIENsZWFyKCk7CiAgICBQ
UkJvb2wgSW5zZXJ0T2JqZWN0QXQobnNJU3VwcG9ydHMqIGFPYmplY3QsIFBSSW50MzIgYUluZGV4
KTsKICAgIFBSQm9vbCBJbnNlcnRPYmplY3RzQXQoY29uc3QgbnNDT01BcnJheV9iYXNlJiBhT2Jq
ZWN0cywgUFJJbnQzMiBhSW5kZXgpOwogICAgUFJCb29sIFJlcGxhY2VPYmplY3RBdChuc0lTdXBw
b3J0cyogYU9iamVjdCwgUFJJbnQzMiBhSW5kZXgpOwogICAgUFJCb29sIEFwcGVuZE9iamVjdChu
c0lTdXBwb3J0cyAqYU9iamVjdCkgewogICAgICAgIHJldHVybiBJbnNlcnRPYmplY3RBdChhT2Jq
ZWN0LCBDb3VudCgpKTsKICAgIH0KICAgIFBSQm9vbCBBcHBlbmRPYmplY3RzKGNvbnN0IG5zQ09N
QXJyYXlfYmFzZSYgYU9iamVjdHMpIHsKICAgICAgICByZXR1cm4gSW5zZXJ0T2JqZWN0c0F0KGFP
YmplY3RzLCBDb3VudCgpKTsKICAgIH0KICAgIFBSQm9vbCBSZW1vdmVPYmplY3QobnNJU3VwcG9y
dHMgKmFPYmplY3QpOwogICAgUFJCb29sIFJlbW92ZU9iamVjdEF0KFBSSW50MzIgYUluZGV4KTsK
CnB1YmxpYzoKCgogICAgUFJJbnQzMiBDb3VudCgpIGNvbnN0IHsKICAgICAgICByZXR1cm4gbUFy
cmF5LkNvdW50KCk7CiAgICB9CgogICAgbnNEZXJpdmVkU2FmZTxuc0lTdXBwb3J0cz4qIE9iamVj
dEF0KFBSSW50MzIgYUluZGV4KSBjb25zdCB7CiAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8IG5zRGVyaXZlZFNhZmU8bnNJU3VwcG9ydHM+KiA+KG1BcnJheS5FbGVtZW50QXQoYUluZGV4
KSk7CiAgICB9CgogICAgbnNEZXJpdmVkU2FmZTxuc0lTdXBwb3J0cz4qIG9wZXJhdG9yW10oUFJJ
bnQzMiBhSW5kZXgpIGNvbnN0IHsKICAgICAgICByZXR1cm4gT2JqZWN0QXQoYUluZGV4KTsKICAg
IH0KCnByaXZhdGU6CgoKICAgIG5zVm9pZEFycmF5IG1BcnJheTsKCgogICAgbnNDT01BcnJheV9i
YXNlJiBvcGVyYXRvcj0oY29uc3QgbnNDT01BcnJheV9iYXNlJiBvdGhlcik7Cn07CiMgMTI5ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNDT01BcnJheS5oIgp0ZW1wbGF0ZSA8Y2xhc3Mg
VD4KY2xhc3MgbnNDT01BcnJheSA6IHB1YmxpYyBuc0NPTUFycmF5X2Jhc2UKewogcHVibGljOgog
ICAgbnNDT01BcnJheSgpIHt9CiAgICBuc0NPTUFycmF5KFBSSW50MzIgYUNvdW50KSA6IG5zQ09N
QXJyYXlfYmFzZShhQ291bnQpIHt9CgoKCiAgICBuc0NPTUFycmF5KGNvbnN0IG5zQ09NQXJyYXk8
VD4mIGFPdGhlcikgOiBuc0NPTUFycmF5X2Jhc2UoYU90aGVyKSB7IH0KCiAgICB+bnNDT01BcnJh
eSgpIHt9CgoKICAgIG5zRGVyaXZlZFNhZmU8VD4qIE9iamVjdEF0KFBSSW50MzIgYUluZGV4KSBj
b25zdCB7CiAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8IG5zRGVyaXZlZFNhZmU8VD4q
ID4obnNDT01BcnJheV9iYXNlOjpPYmplY3RBdChhSW5kZXgpKTsKICAgIH0KCgogICAgbnNEZXJp
dmVkU2FmZTxUPiogb3BlcmF0b3JbXShQUkludDMyIGFJbmRleCkgY29uc3QgewogICAgICAgIHJl
dHVybiBPYmplY3RBdChhSW5kZXgpOwogICAgfQoKCiAgICBQUkludDMyIEluZGV4T2YoVCogYU9i
amVjdCkgY29uc3QgewogICAgICAgIHJldHVybiBuc0NPTUFycmF5X2Jhc2U6OkluZGV4T2Yoc3Rh
dGljX2Nhc3Q8IG5zSVN1cHBvcnRzKiA+KGFPYmplY3QpKTsKICAgIH0KCgoKICAgIFBSQm9vbCBJ
bnNlcnRPYmplY3RBdChUKiBhT2JqZWN0LCBQUkludDMyIGFJbmRleCkgewogICAgICAgIHJldHVy
biBuc0NPTUFycmF5X2Jhc2U6Okluc2VydE9iamVjdEF0KHN0YXRpY19jYXN0PCBuc0lTdXBwb3J0
cyogPihhT2JqZWN0KSwgYUluZGV4KTsKICAgIH0KCgoKICAgIFBSQm9vbCBJbnNlcnRPYmplY3Rz
QXQoY29uc3QgbnNDT01BcnJheTxUPiYgYU9iamVjdHMsIFBSSW50MzIgYUluZGV4KSB7CiAgICAg
ICAgcmV0dXJuIG5zQ09NQXJyYXlfYmFzZTo6SW5zZXJ0T2JqZWN0c0F0KGFPYmplY3RzLCBhSW5k
ZXgpOwogICAgfQoKCgogICAgUFJCb29sIFJlcGxhY2VPYmplY3RBdChUKiBhT2JqZWN0LCBQUklu
dDMyIGFJbmRleCkgewogICAgICAgIHJldHVybiBuc0NPTUFycmF5X2Jhc2U6OlJlcGxhY2VPYmpl
Y3RBdChzdGF0aWNfY2FzdDwgbnNJU3VwcG9ydHMqID4oYU9iamVjdCksIGFJbmRleCk7CiAgICB9
CgoKCgoKICAgIFBSSW50MzIgQ291bnQoKSBjb25zdCB7CiAgICAgICAgcmV0dXJuIG5zQ09NQXJy
YXlfYmFzZTo6Q291bnQoKTsKICAgIH0KCgogICAgdm9pZCBDbGVhcigpIHsKICAgICAgICBuc0NP
TUFycmF5X2Jhc2U6OkNsZWFyKCk7CiAgICB9CgoKCgogICAgdHlwZWRlZiBQUkJvb2wgKCogbnND
T01BcnJheUVudW1GdW5jKQogICAgICAgIChUKiBhRWxlbWVudCwgdm9pZCAqYURhdGEpOwoKCiAg
ICBQUkJvb2wgRW51bWVyYXRlRm9yd2FyZHMobnNDT01BcnJheUVudW1GdW5jIGFGdW5jLCB2b2lk
KiBhRGF0YSkgewogICAgICAgIHJldHVybiBuc0NPTUFycmF5X2Jhc2U6OkVudW1lcmF0ZUZvcndh
cmRzKG5zVm9pZEFycmF5RW51bUZ1bmMoYUZ1bmMpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFEYXRhKTsKICAgIH0KCiAgICBQUkJvb2wgRW51bWVy
YXRlQmFja3dhcmRzKG5zQ09NQXJyYXlFbnVtRnVuYyBhRnVuYywgdm9pZCogYURhdGEpIHsKICAg
ICAgICByZXR1cm4gbnNDT01BcnJheV9iYXNlOjpFbnVtZXJhdGVCYWNrd2FyZHMobnNWb2lkQXJy
YXlFbnVtRnVuYyhhRnVuYyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYURhdGEpOwogICAgfQoKCiAgICBQUkJvb2wgQXBwZW5kT2JqZWN0KFQgKmFP
YmplY3QpIHsKICAgICAgICByZXR1cm4gbnNDT01BcnJheV9iYXNlOjpBcHBlbmRPYmplY3Qoc3Rh
dGljX2Nhc3Q8IG5zSVN1cHBvcnRzKiA+KGFPYmplY3QpKTsKICAgIH0KCgogICAgUFJCb29sIEFw
cGVuZE9iamVjdHMoY29uc3QgbnNDT01BcnJheTxUPiYgYU9iamVjdHMpIHsKICAgICAgICByZXR1
cm4gbnNDT01BcnJheV9iYXNlOjpBcHBlbmRPYmplY3RzKGFPYmplY3RzKTsKICAgIH0KCgoKCiAg
ICBQUkJvb2wgUmVtb3ZlT2JqZWN0KFQgKmFPYmplY3QpIHsKICAgICAgICByZXR1cm4gbnNDT01B
cnJheV9iYXNlOjpSZW1vdmVPYmplY3Qoc3RhdGljX2Nhc3Q8IG5zSVN1cHBvcnRzKiA+KGFPYmpl
Y3QpKTsKICAgIH0KCgoKICAgIFBSQm9vbCBSZW1vdmVPYmplY3RBdChQUkludDMyIGFJbmRleCkg
ewogICAgICAgIHJldHVybiBuc0NPTUFycmF5X2Jhc2U6OlJlbW92ZU9iamVjdEF0KGFJbmRleCk7
CiAgICB9Cgpwcml2YXRlOgoKCiAgICBuc0NPTUFycmF5PFQ+JiBvcGVyYXRvcj0oY29uc3QgbnND
T01BcnJheTxUPiYgb3RoZXIpOwp9OwojIDQ3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVu
dC9uc0lEb2N1bWVudC5oIiAyCgpjbGFzcyBuc0lBdG9tOwpjbGFzcyBuc0lBcmVuYTsKY2xhc3Mg
bnNJQ29udGVudDsKY2xhc3MgbnNJRG9jdW1lbnRDb250YWluZXI7CmNsYXNzIG5zSURvY3VtZW50
T2JzZXJ2ZXI7CmNsYXNzIG5zSVByZXNDb250ZXh0OwpjbGFzcyBuc0lQcmVzU2hlbGw7CgpjbGFz
cyBuc0lTdHJlYW1MaXN0ZW5lcjsKY2xhc3MgbnNJU3RyZWFtT2JzZXJ2ZXI7CmNsYXNzIG5zSVN0
eWxlU2V0OwpjbGFzcyBuc0lTdHlsZVNoZWV0OwpjbGFzcyBuc0lTdHlsZVJ1bGU7CmNsYXNzIG5z
SVVSSTsKY2xhc3MgbnNJTG9hZEdyb3VwOwpjbGFzcyBuc0lWaWV3TWFuYWdlcjsKY2xhc3MgbnNJ
U2NyaXB0R2xvYmFsT2JqZWN0OwpjbGFzcyBuc0lET01FdmVudDsKY2xhc3MgbnNJRGV2aWNlQ29u
dGV4dDsKY2xhc3MgbnNJUGFyc2VyOwpjbGFzcyBuc0lET01Ob2RlOwpjbGFzcyBuc0lET01Eb2N1
bWVudEZyYWdtZW50OwpjbGFzcyBuc0lMaW5lQnJlYWtlcjsKY2xhc3MgbnNJV29yZEJyZWFrZXI7
CmNsYXNzIG5zSVNlbGVjdGlvbjsKY2xhc3MgbnNJQ2hhbm5lbDsKY2xhc3MgbnNJUHJpbmNpcGFs
OwpjbGFzcyBuc0lOb2RlSW5mb01hbmFnZXI7CmNsYXNzIG5zSURPTURvY3VtZW50OwpjbGFzcyBu
c0lET01Eb2N1bWVudFR5cGU7CmNsYXNzIG5zSUJpbmRpbmdNYW5hZ2VyOwpjbGFzcyBuc0lPYnNl
cnZlcjsKY2xhc3MgbnNJU3VwcG9ydHNBcnJheTsKY2xhc3MgbnNJU2NyaXB0TG9hZGVyOwpjbGFz
cyBuc1N0cmluZzsKY2xhc3MgbnNJQ29udGVudFNpbms7CmNsYXNzIG5zSVNjcmlwdEV2ZW50TWFu
YWdlcjsKIyAxMDAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSURvY3VtZW50Lmgi
CmNsYXNzIG5zSURvY3VtZW50IDogcHVibGljIG5zSVN1cHBvcnRzIHsKcHVibGljOgogIHN0YXRp
YyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7IDB4OTRj
NmNlYjAsIDB4OTQ0NywgMHgxMWQxLCB7MHg5MywgMHgyMywgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4
YSwgMHhkZCwgMHgzMn0gfTsgcmV0dXJuIGlpZDt9CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
QXJlbmEobnNJQXJlbmEqKiBhQXJlbmEpID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBTdGFydERv
Y3VtZW50TG9hZChjb25zdCBjaGFyKiBhQ29tbWFuZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5zSUNoYW5uZWwqIGFDaGFubmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnNJTG9hZEdyb3VwKiBhTG9hZEdyb3VwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnNJU3VwcG9ydHMqIGFDb250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuc0lTdHJlYW1MaXN0ZW5lciAqKmFEb2NMaXN0ZW5lciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBSQm9vbCBhUmVzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
c0lDb250ZW50U2luayogYVNpbmsgPSAwKSA9IDA7CgogIHZpcnR1YWwgbnNyZXN1bHQgU3RvcERv
Y3VtZW50TG9hZCgpID0gMDsKCgoKCiAgdmlydHVhbCBjb25zdCBuc1N0cmluZyogR2V0RG9jdW1l
bnRUaXRsZSgpIGNvbnN0ID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREb2N1bWVudFVS
TChuc0lVUkkqKiBhVVJMKSBjb25zdCA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXREb2N1bWVu
dFVSTChuc0lVUkkqIGFVUkwpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQcmluY2lw
YWwobnNJUHJpbmNpcGFsICoqYVByaW5jaXBhbCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBBZGRQcmluY2lwYWwobnNJUHJpbmNpcGFsICphUHJpbmNpcGFsKSA9IDA7CgoKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0RG9jdW1lbnRMb2FkR3JvdXAobnNJTG9hZEdyb3VwKiogYUdyb3VwKSBj
b25zdCA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QmFzZVVSTChuc0lVUkkqJiBhVVJM
KSBjb25zdCA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRCYXNlVVJMKG5zSVVSSSogYVVSTCkg
PSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEJhc2VUYXJnZXQobnNBU3RyaW5nICZhQmFz
ZVRhcmdldCk9MDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEJhc2VUYXJnZXQoY29uc3QgbnNBU3Ry
aW5nICZhQmFzZVRhcmdldCk9MDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RG9jdW1lbnRD
aGFyYWN0ZXJTZXQobnNBU3RyaW5nJiBvQ2hhclNldElEKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXREb2N1bWVudENoYXJhY3RlclNldChjb25zdCBuc0FTdHJpbmcmIGFDaGFyU2V0SUQpID0g
MDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREb2N1bWVudENoYXJhY3RlclNldFNvdXJjZShQUklu
dDMyKiBhQ2hhcnNldFNvdXJjZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RG9jdW1lbnRD
aGFyYWN0ZXJTZXRTb3VyY2UoUFJJbnQzMiBhQ2hhcnNldFNvdXJjZSkgPSAwOwoKCgogIHZpcnR1
YWwgbnNyZXN1bHQgQWRkQ2hhclNldE9ic2VydmVyKG5zSU9ic2VydmVyKiBhT2JzZXJ2ZXIpID0g
MDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZW1vdmVDaGFyU2V0T2JzZXJ2ZXIobnNJT2JzZXJ2
ZXIqIGFPYnNlcnZlcikgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbnRlbnRUeXBl
KG5zQVN0cmluZyYgYUNvbnRlbnRUeXBlKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0
Q29udGVudFR5cGUoY29uc3QgbnNBU3RyaW5nJiBhQ29udGVudFR5cGUpID0gMDsKCgoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRDb250ZW50TGFuZ3VhZ2UobnNBU3RyaW5nJiBhQ29udGVudExhbmd1
YWdlKSBjb25zdCA9IDA7CiMgMTk5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lE
b2N1bWVudC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QmlkaUVuYWJsZWQoUFJCb29sKiBhQmlk
aUVuYWJsZWQpIGNvbnN0ID0gMDsKCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRCaWRpRW5h
YmxlZChQUkJvb2wgYUJpZGlFbmFibGVkKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
TGluZUJyZWFrZXIobnNJTGluZUJyZWFrZXIqKiBhUmVzdWx0KSA9IDA7CiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXRMaW5lQnJlYWtlcihuc0lMaW5lQnJlYWtlciogYUxpbmVCcmVha2VyKSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRXb3JkQnJlYWtlcihuc0lXb3JkQnJlYWtlcioqIGFSZXN1bHQp
ID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFdvcmRCcmVha2VyKG5zSVdvcmRCcmVha2VyKiBh
V29yZEJyZWFrZXIpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SGVhZGVyRGF0YShu
c0lBdG9tKiBhSGVhZGVyRmllbGQsIG5zQVN0cmluZyYgYURhdGEpIGNvbnN0ID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldEhlYWRlckRhdGEobnNJQXRvbSogYWhlYWRlckZpZWxkLCBjb25zdCBu
c0FTdHJpbmcmIGFEYXRhKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDcmVhdGVTaGVs
bChuc0lQcmVzQ29udGV4dCogYUNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBuc0lW
aWV3TWFuYWdlciogYVZpZXdNYW5hZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3R5
bGVTZXQqIGFTdHlsZVNldCwKICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVByZXNTaGVsbCoq
IGFJbnN0YW5jZVB0clJlc3VsdCkgPSAwOwogIHZpcnR1YWwgUFJCb29sIERlbGV0ZVNoZWxsKG5z
SVByZXNTaGVsbCogYVNoZWxsKSA9IDA7CiAgdmlydHVhbCBQUkludDMyIEdldE51bWJlck9mU2hl
bGxzKCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2hlbGxBdChQUkludDMyIGFJbmRleCwg
bnNJUHJlc1NoZWxsKiogYVNoZWxsKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQ
YXJlbnREb2N1bWVudChuc0lEb2N1bWVudCoqIGFQYXJlbnQpID0gMDsKCgoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXRQYXJlbnREb2N1bWVudChuc0lEb2N1bWVudCogYVBhcmVudCkgPSAwOwoKCgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldFN1YkRvY3VtZW50Rm9yKG5zSUNvbnRlbnQgKmFDb250ZW50
LCBuc0lEb2N1bWVudCogYVN1YkRvYykgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFN1
YkRvY3VtZW50Rm9yKG5zSUNvbnRlbnQgKmFDb250ZW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnNJRG9jdW1lbnQqKiBhU3ViRG9jKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1
bHQgRmluZENvbnRlbnRGb3JTdWJEb2N1bWVudChuc0lEb2N1bWVudCAqYURvY3VtZW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lDb250ZW50ICoqYUNvbnRlbnQp
ID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRSb290Q29udGVudChuc0lDb250ZW50Kiog
YVJvb3QpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFJvb3RDb250ZW50KG5zSUNvbnRlbnQq
IGFSb290KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IENoaWxkQXQoUFJJbnQzMiBhSW5k
ZXgsIG5zSUNvbnRlbnQqJiBhUmVzdWx0KSBjb25zdCA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBJ
bmRleE9mKG5zSUNvbnRlbnQqIGFQb3NzaWJsZUNoaWxkLCBQUkludDMyJiBhSW5kZXgpIGNvbnN0
ID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENoaWxkQ291bnQoUFJJbnQzMiYgYUNvdW50KSA9
IDA7CiMgMjk1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lEb2N1bWVudC5oIgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0TnVtYmVyT2ZTdHlsZVNoZWV0cyhQUkJvb2wgYUluY2x1ZGVT
cGVjaWFsU2hlZXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkludDMy
KiBhQ291bnQpID0gMDsKIyAzMDYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSURv
Y3VtZW50LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTdHlsZVNoZWV0QXQoUFJJbnQzMiBhSW5k
ZXgsIFBSQm9vbCBhSW5jbHVkZVNwZWNpYWxTaGVldHMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnNJU3R5bGVTaGVldCoqIGFTaGVldCkgPSAwOwojIDMxNiAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2NvbnRlbnQvbnNJRG9jdW1lbnQuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEluc2VydFN0
eWxlU2hlZXRBdChuc0lTdHlsZVNoZWV0KiBhU2hlZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUFJJbnQzMiBhSW5kZXgpID0gMDsKCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRJbmRleE9mU3R5bGVTaGVldChuc0lTdHlsZVNoZWV0KiBhU2hlZXQsIFBSSW50MzIqIGFJbmRl
eCkgPSAwOwojIDMzNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJRG9jdW1lbnQu
aCIKICB2aXJ0dWFsIG5zcmVzdWx0IFVwZGF0ZVN0eWxlU2hlZXRzKG5zQ09NQXJyYXk8bnNJU3R5
bGVTaGVldD4mIGFPbGRTaGVldHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0NP
TUFycmF5PG5zSVN0eWxlU2hlZXQ+JiBhTmV3U2hlZXRzKSA9IDA7CgoKCgogIHZpcnR1YWwgdm9p
ZCBBZGRTdHlsZVNoZWV0KG5zSVN0eWxlU2hlZXQqIGFTaGVldCwgUFJVaW50MzIgYUZsYWdzKSA9
IDA7CgoKCgogIHZpcnR1YWwgdm9pZCBSZW1vdmVTdHlsZVNoZWV0KG5zSVN0eWxlU2hlZXQqIGFT
aGVldCkgPSAwOwoKCgoKCiAgdmlydHVhbCB2b2lkIFNldFN0eWxlU2hlZXRBcHBsaWNhYmxlU3Rh
dGUobnNJU3R5bGVTaGVldCogYVNoZWV0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBSQm9vbCBhQXBwbGljYWJsZSkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0U2NyaXB0R2xvYmFsT2JqZWN0KG5zSVNjcmlwdEdsb2JhbE9iamVjdCoqIGFHbG9i
YWxPYmplY3QpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNjcmlwdEdsb2JhbE9iamVjdChu
c0lTY3JpcHRHbG9iYWxPYmplY3QqIGFHbG9iYWxPYmplY3QpID0gMDsKCgoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRTY3JpcHRMb2FkZXIobnNJU2NyaXB0TG9hZGVyKiogYVNjcmlwdExvYWRlcikg
PSAwOwojIDM3NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJRG9jdW1lbnQuaCIK
ICB2aXJ0dWFsIHZvaWQgQWRkT2JzZXJ2ZXIobnNJRG9jdW1lbnRPYnNlcnZlciogYU9ic2VydmVy
KSA9IDA7CgoKCgoKICB2aXJ0dWFsIFBSQm9vbCBSZW1vdmVPYnNlcnZlcihuc0lEb2N1bWVudE9i
c2VydmVyKiBhT2JzZXJ2ZXIpID0gMDsKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEJlZ2luVXBkYXRl
KCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgRW5kVXBkYXRlKCkgPSAwOwogIHZpcnR1YWwgbnNy
ZXN1bHQgQmVnaW5Mb2FkKCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgRW5kTG9hZCgpID0gMDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IENvbnRlbnRDaGFuZ2VkKG5zSUNvbnRlbnQqIGFDb250ZW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3VwcG9ydHMqIGFTdWJDb250ZW50KSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENvbnRlbnRTdGF0ZXNDaGFuZ2VkKG5zSUNvbnRlbnQqIGFD
b250ZW50MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUNvbnRlbnQqIGFD
b250ZW50MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSSW50MzIgYVN0YXRl
TWFzaykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgQXR0cmlidXRlV2lsbENoYW5nZShuc0lDb250
ZW50KiBhQ2hpbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSSW50MzIgYU5h
bWVTcGFjZUlELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lBdG9tKiBhQXR0
cmlidXRlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBBdHRyaWJ1dGVDaGFuZ2VkKG5zSUNvbnRl
bnQqIGFDaGlsZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJJbnQzMiBhTmFtZVNw
YWNlSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUF0b20qIGFBdHRyaWJ1dGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSSW50MzIgYU1vZFR5cGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5zQ2hhbmdlSGludCBhSGludCkgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgQ29udGVudEFwcGVuZGVkKG5zSUNvbnRlbnQqIGFDb250YWluZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUFJJbnQzMiBhTmV3SW5kZXhJbkNvbnRhaW5lcikgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgQ29udGVudEluc2VydGVkKG5zSUNvbnRlbnQqIGFDb250YWluZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQ29udGVudCogYUNoaWxkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBSSW50MzIgYUluZGV4SW5Db250YWluZXIpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IENvbnRlbnRSZXBsYWNlZChuc0lDb250ZW50KiBhQ29udGFpbmVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUNvbnRlbnQqIGFPbGRDaGlsZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuc0lDb250ZW50KiBhTmV3Q2hpbGQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUFJJbnQzMiBhSW5kZXhJbkNvbnRhaW5lcikgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgQ29udGVudFJlbW92ZWQobnNJQ29udGVudCogYUNvbnRhaW5lciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5zSUNvbnRlbnQqIGFDaGlsZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBSSW50MzIgYUluZGV4SW5Db250YWluZXIpID0gMDsKCgoKICB2aXJ0dWFs
IG5zcmVzdWx0IFN0eWxlUnVsZUNoYW5nZWQobnNJU3R5bGVTaGVldCogYVN0eWxlU2hlZXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN0eWxlUnVsZSogYVN0eWxlUnVsZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNDaGFuZ2VIaW50IGFIaW50KSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTdHlsZVJ1bGVBZGRlZChuc0lTdHlsZVNoZWV0KiBhU3R5bGVTaGVldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN0eWxlUnVsZSogYVN0eWxlUnVsZSkgPSAw
OwogIHZpcnR1YWwgbnNyZXN1bHQgU3R5bGVSdWxlUmVtb3ZlZChuc0lTdHlsZVNoZWV0KiBhU3R5
bGVTaGVldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3R5bGVSdWxlKiBhU3R5
bGVSdWxlKSA9IDA7CgogIHZpcnR1YWwgbnNyZXN1bHQgSGFuZGxlRE9NRXZlbnQobnNJUHJlc0Nv
bnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zRXZlbnQq
IGFFdmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSURPTUV2ZW50KiogYURPTUV2
ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJVaW50MzIgYUZsYWdzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnNFdmVudFN0YXR1cyogYUV2ZW50U3RhdHVzKSA9IDA7Cgog
IHZpcnR1YWwgUFJCb29sIEV2ZW50Q2FwdHVyZVJlZ2lzdHJhdGlvbihQUkludDMyIGFDYXB0dXJl
ckluY3JlbWVudCkgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IEZsdXNoUGVuZGluZ05vdGlmaWNh
dGlvbnMoUFJCb29sIGFGbHVzaFJlZmxvd3M9MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUFJCb29sIGFVcGRhdGVWaWV3cz0wKSA9IDA7CgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0QW5kSW5jcmVtZW50Q29udGVudElEKFBSSW50MzIqIGFJRCkgPSAwOwoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldEJpbmRpbmdNYW5hZ2VyKG5zSUJpbmRpbmdNYW5hZ2VyKiogYVJlc3VsdCkg
PSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5vZGVJbmZvTWFuYWdlcihuc0lOb2RlSW5mb01h
bmFnZXIqJiBhTm9kZUluZm9NYW5hZ2VyKSA9IDA7CgogIHZpcnR1YWwgbnNyZXN1bHQgUmVzZXQo
bnNJQ2hhbm5lbCogYUNoYW5uZWwsIG5zSUxvYWRHcm91cCogYUxvYWRHcm91cCkgPSAwOwogIHZp
cnR1YWwgbnNyZXN1bHQgUmVzZXRUb1VSSShuc0lVUkkgKmFVUkksIG5zSUxvYWRHcm91cCogYUxv
YWRHcm91cCkgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IEFkZFJlZmVyZW5jZSh2b2lkICphS2V5
LCBuc0lTdXBwb3J0cyAqYVJlZmVyZW5jZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgUmVtb3Zl
UmVmZXJlbmNlKHZvaWQgKmFLZXksIG5zSVN1cHBvcnRzICoqYU9sZFJlZmVyZW5jZSkgPSAwOwoK
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENvbnRhaW5lcihuc0lTdXBwb3J0cyAqYUNvbnRhaW5l
cikgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbnRhaW5lcihuc0lTdXBwb3J0cyAq
KmFDb250YWluZXIpID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTY3JpcHRFdmVudE1hbmFn
ZXIobnNJU2NyaXB0RXZlbnRNYW5hZ2VyICoqYVJlc3VsdCkgPSAwOwp9OwoKCgpleHRlcm4gbnNy
ZXN1bHQKICAgTlNfTmV3SFRNTERvY3VtZW50KG5zSURvY3VtZW50KiogYUluc3RhbmNlUHRyUmVz
dWx0KTsKCmV4dGVybiBuc3Jlc3VsdAogICBOU19OZXdYTUxEb2N1bWVudChuc0lEb2N1bWVudCoq
IGFJbnN0YW5jZVB0clJlc3VsdCk7CgoKCgoKCmV4dGVybiBuc3Jlc3VsdAogICBOU19OZXdJbWFn
ZURvY3VtZW50KG5zSURvY3VtZW50KiogYUluc3RhbmNlUHRyUmVzdWx0KTsKCmV4dGVybiBuc3Jl
c3VsdAogICBOU19OZXdEb2N1bWVudEZyYWdtZW50KG5zSURPTURvY3VtZW50RnJhZ21lbnQqKiBh
SW5zdGFuY2VQdHJSZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJRG9jdW1lbnQq
IGFPd25lckRvY3VtZW50KTsKZXh0ZXJuIG5zcmVzdWx0CiAgIE5TX05ld0RPTURvY3VtZW50KG5z
SURPTURvY3VtZW50KiogYUluc3RhbmNlUHRyUmVzdWx0LAogICAgICAgICAgICAgICAgICAgICBj
b25zdCBuc0FTdHJpbmcmIGFOYW1lc3BhY2VVUkksCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IG5zQVN0cmluZyYgYVF1YWxpZmllZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgIG5zSURPTURv
Y3VtZW50VHlwZSogYURvY3R5cGUsCiAgICAgICAgICAgICAgICAgICAgIG5zSVVSSSogYUJhc2VV
UkkpOwojIDY0ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvZG9tL25zSURPTURvY3VtZW50LmgiIDEKIyAxMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2Rv
bS9uc0lET01Eb2N1bWVudC5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9N
Tm9kZS5oIiAxCiMgMTAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NTm9kZS5oIgoj
IDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vZG9tc3R1YnMuaCIgMQojIDE4ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvZG9tL2RvbXN0dWJzLmgiCmlubGluZSBQUkJvb2wgRE9NU3RyaW5nSXNO
dWxsKGNvbnN0IG5zQVN0cmluZyYgYVN0cmluZykKewogIHJldHVybiBhU3RyaW5nLklzVm9pZCgp
Owp9CmlubGluZSB2b2lkIFNldERPTVN0cmluZ1RvTnVsbChuc0FTdHJpbmcmIGFTdHJpbmcpCnsK
ICBhU3RyaW5nLlRydW5jYXRlKCk7CiAgYVN0cmluZy5TZXRJc1ZvaWQoMSk7Cn0KdHlwZWRlZiBQ
UlVpbnQ2NCBET01UaW1lU3RhbXA7CgpjbGFzcyBuc0lET01BdHRyOwoKY2xhc3MgbnNJRE9NQ0RB
VEFTZWN0aW9uOwoKY2xhc3MgbnNJRE9NQ2hhcmFjdGVyRGF0YTsKCmNsYXNzIG5zSURPTUNvbW1l
bnQ7CgpjbGFzcyBuc0lET01ET01JbXBsZW1lbnRhdGlvbjsKCmNsYXNzIG5zSURPTURvY3VtZW50
OwoKY2xhc3MgbnNJRE9NRG9jdW1lbnRGcmFnbWVudDsKCmNsYXNzIG5zSURPTURvY3VtZW50VHlw
ZTsKCmNsYXNzIG5zSURPTUVsZW1lbnQ7CgpjbGFzcyBuc0lET01FbnRpdHk7CgpjbGFzcyBuc0lE
T01FbnRpdHlSZWZlcmVuY2U7CgpjbGFzcyBuc0lET01OU0RvY3VtZW50OwoKY2xhc3MgbnNJRE9N
TmFtZWROb2RlTWFwOwoKY2xhc3MgbnNJRE9NTm9kZTsKCmNsYXNzIG5zSURPTU5vZGVMaXN0OwoK
Y2xhc3MgbnNJRE9NTm90YXRpb247CgpjbGFzcyBuc0lET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb247
CgpjbGFzcyBuc0lET01UZXh0OwoKY2xhc3MgRE9NRXhjZXB0aW9uOwoKY2xhc3MgUmFuZ2VFeGNl
cHRpb247CgpjbGFzcyBuc0lET01TdHlsZVNoZWV0TGlzdDsKCmNsYXNzIG5zSURPTUxpbmtTdHls
ZTsKCmNsYXNzIG5zSURPTVN0eWxlU2hlZXQ7CgpjbGFzcyBuc0lET01NZWRpYUxpc3Q7CgpjbGFz
cyBuc0lET01BYnN0cmFjdFZpZXc7CgpjbGFzcyBuc0lET01Eb2N1bWVudFZpZXc7CgpjbGFzcyBu
c0lET01XaW5kb3c7CgpjbGFzcyBuc0lET01XaW5kb3dJbnRlcm5hbDsKCmNsYXNzIG5zSURPTVdp
bmRvd0NvbGxlY3Rpb247CgpjbGFzcyBuc0lET01QbHVnaW47CgpjbGFzcyBuc0lET01QbHVnaW5B
cnJheTsKCmNsYXNzIG5zSURPTU1pbWVUeXBlOwoKY2xhc3MgbnNJRE9NTWltZVR5cGVBcnJheTsK
CmNsYXNzIG5zSURPTUJhclByb3A7CgpjbGFzcyBuc0lET01OYXZpZ2F0b3I7CgpjbGFzcyBuc0lE
T01TY3JlZW47CgpjbGFzcyBuc0lET01IaXN0b3J5OwoKY2xhc3MgbnNJRE9NRXZlbnQ7CgpjbGFz
cyBuc0lET01FdmVudFRhcmdldDsKCmNsYXNzIG5zSURPTUV2ZW50TGlzdGVuZXI7CgpjbGFzcyBu
c0lET01FdmVudEdyb3VwOwoKY2xhc3MgbnNJRE9NSFRNTEVsZW1lbnQ7CgpjbGFzcyBuc0lET01I
VE1MRm9ybUVsZW1lbnQ7CgpjbGFzcyBuc0lET01IVE1MQ29sbGVjdGlvbjsKCmNsYXNzIG5zSURP
TUNTU1ZhbHVlOwoKY2xhc3MgbnNJRE9NQ1NTVmFsdWVMaXN0OwoKY2xhc3MgbnNJRE9NQ1NTUHJp
bWl0aXZlVmFsdWU7CgpjbGFzcyBuc0lET01DU1NSdWxlOwoKY2xhc3MgbnNJRE9NQ1NTUnVsZUxp
c3Q7CgpjbGFzcyBuc0lET01DU1NTdHlsZVNoZWV0OwoKY2xhc3MgbnNJRE9NQ1NTU3R5bGVEZWNs
YXJhdGlvbjsKCmNsYXNzIG5zSURPTUNvdW50ZXI7CgpjbGFzcyBuc0lET01SZWN0OwoKY2xhc3Mg
bnNJRE9NUkdCQ29sb3I7CgpjbGFzcyBuc0lET01DU1NTdHlsZVJ1bGU7CgpjbGFzcyBuc0lET01D
U1NTdHlsZVJ1bGVDb2xsZWN0aW9uOwoKY2xhc3MgbnNJRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1l
bnQ7CgpjbGFzcyBuc0lET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudDsKCmNsYXNzIG5zSURPTVJh
bmdlOwoKY2xhc3MgbnNJRE9NQ1JNRk9iamVjdDsKCmNsYXNzIG5zSURPTUNyeXB0bzsKCmNsYXNz
IG5zSURPTVBrY3MxMTsKIyAxMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01Ob2Rl
LmgiIDIKCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTTNOb2RlLmgiIDEK
IyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET00zTm9kZS5oIgpjbGFzcyBuc0lE
T00zTm9kZSA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBu
c0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgyOWZiMmExOCwgMHgx
ZGQyLCAweDExYjIsIHsgMHg4ZCwgMHhkOSwgMHhhNiwgMHhmZCwgMHg1ZCwgMHg1YSwgMHhkMSwg
MHgyZiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEJhc2VVUkkobnNB
U3RyaW5nICYgYUJhc2VVUkkpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ29tcGFyZURvY3Vt
ZW50UG9zaXRpb24obnNJRE9NTm9kZSAqb3RoZXIsIFBSVWludDE2ICpfcmV0dmFsKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IElzU2FtZU5vZGUobnNJRE9NTm9kZSAqb3RoZXIsIFBSQm9vbCAq
X3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBMb29rdXBOYW1lc3BhY2VQcmVmaXgo
Y29uc3QgbnNBU3RyaW5nICYgbmFtZXNwYWNlVVJJLCBuc0FTdHJpbmcgJiBfcmV0dmFsKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IExvb2t1cE5hbWVzcGFjZVVSSShjb25zdCBuc0FTdHJpbmcg
JiBwcmVmaXgsIG5zQVN0cmluZyAmIF9yZXR2YWwpID0gMDsKCn07CiMgMTUgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9kb20vbnNJRE9NTm9kZS5oIiAyCiMgMjkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9kb20vbnNJRE9NTm9kZS5oIgpjbGFzcyBuc0lET01Ob2RlIDogcHVibGljIG5zSVN1cHBvcnRz
IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0
IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MDdjLCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAw
eDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KIyA0NCAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01Ob2RlLmgiCiAgZW51bSB7IEVMRU1FTlRf
Tk9ERSA9IDFVIH07CgogIGVudW0geyBBVFRSSUJVVEVfTk9ERSA9IDJVIH07CgogIGVudW0geyBU
RVhUX05PREUgPSAzVSB9OwoKICBlbnVtIHsgQ0RBVEFfU0VDVElPTl9OT0RFID0gNFUgfTsKCiAg
ZW51bSB7IEVOVElUWV9SRUZFUkVOQ0VfTk9ERSA9IDVVIH07CgogIGVudW0geyBFTlRJVFlfTk9E
RSA9IDZVIH07CgogIGVudW0geyBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUgPSA3VSB9OwoK
ICBlbnVtIHsgQ09NTUVOVF9OT0RFID0gOFUgfTsKCiAgZW51bSB7IERPQ1VNRU5UX05PREUgPSA5
VSB9OwoKICBlbnVtIHsgRE9DVU1FTlRfVFlQRV9OT0RFID0gMTBVIH07CgogIGVudW0geyBET0NV
TUVOVF9GUkFHTUVOVF9OT0RFID0gMTFVIH07CgogIGVudW0geyBOT1RBVElPTl9OT0RFID0gMTJV
IH07CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5vZGVOYW1lKG5zQVN0cmluZyAmIGFOb2RlTmFt
ZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROb2RlVmFsdWUobnNBU3RyaW5nICYgYU5v
ZGVWYWx1ZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Tm9kZVZhbHVlKGNvbnN0IG5zQVN0
cmluZyAmIGFOb2RlVmFsdWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Tm9kZVR5cGUo
UFJVaW50MTYgKmFOb2RlVHlwZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQYXJlbnRO
b2RlKG5zSURPTU5vZGUgKiAqYVBhcmVudE5vZGUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0Q2hpbGROb2Rlcyhuc0lET01Ob2RlTGlzdCAqICphQ2hpbGROb2RlcykgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRGaXJzdENoaWxkKG5zSURPTU5vZGUgKiAqYUZpcnN0Q2hpbGQpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGFzdENoaWxkKG5zSURPTU5vZGUgKiAqYUxhc3RD
aGlsZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQcmV2aW91c1NpYmxpbmcobnNJRE9N
Tm9kZSAqICphUHJldmlvdXNTaWJsaW5nKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5l
eHRTaWJsaW5nKG5zSURPTU5vZGUgKiAqYU5leHRTaWJsaW5nKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldEF0dHJpYnV0ZXMobnNJRE9NTmFtZWROb2RlTWFwICogKmFBdHRyaWJ1dGVzKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE93bmVyRG9jdW1lbnQobnNJRE9NRG9jdW1lbnQg
KiAqYU93bmVyRG9jdW1lbnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSW5zZXJ0QmVmb3Jl
KG5zSURPTU5vZGUgKm5ld0NoaWxkLCBuc0lET01Ob2RlICpyZWZDaGlsZCwgbnNJRE9NTm9kZSAq
Kl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVwbGFjZUNoaWxkKG5zSURPTU5v
ZGUgKm5ld0NoaWxkLCBuc0lET01Ob2RlICpvbGRDaGlsZCwgbnNJRE9NTm9kZSAqKl9yZXR2YWwp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVtb3ZlQ2hpbGQobnNJRE9NTm9kZSAqb2xkQ2hp
bGQsIG5zSURPTU5vZGUgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEFwcGVu
ZENoaWxkKG5zSURPTU5vZGUgKm5ld0NoaWxkLCBuc0lET01Ob2RlICoqX3JldHZhbCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBIYXNDaGlsZE5vZGVzKFBSQm9vbCAqX3JldHZhbCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBDbG9uZU5vZGUoUFJCb29sIGRlZXAsIG5zSURPTU5vZGUgKipf
cmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IE5vcm1hbGl6ZSh2b2lkKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IElzU3VwcG9ydGVkKGNvbnN0IG5zQVN0cmluZyAmIGZlYXR1cmUs
IGNvbnN0IG5zQVN0cmluZyAmIHZlcnNpb24sIFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXROYW1lc3BhY2VVUkkobnNBU3RyaW5nICYgYU5hbWVzcGFjZVVSSSkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQcmVmaXgobnNBU3RyaW5nICYgYVByZWZpeCkg
PSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UHJlZml4KGNvbnN0IG5zQVN0cmluZyAmIGFQcmVm
aXgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TG9jYWxOYW1lKG5zQVN0cmluZyAmIGFM
b2NhbE5hbWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSGFzQXR0cmlidXRlcyhQUkJvb2wg
Kl9yZXR2YWwpID0gMDsKCiAgZW51bSB7IERPQ1VNRU5UX1BPU0lUSU9OX0RJU0NPTk5FQ1RFRCA9
IDMyVSB9OwoKICBlbnVtIHsgRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HID0gMVUgfTsKCiAg
ZW51bSB7IERPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORyA9IDJVIH07CgogIGVudW0geyBET0NV
TUVOVF9QT1NJVElPTl9DT05UQUlOUyA9IDRVIH07CgogIGVudW0geyBET0NVTUVOVF9QT1NJVElP
Tl9JU19DT05UQUlORUQgPSA4VSB9OwoKICBlbnVtIHsgRE9DVU1FTlRfUE9TSVRJT05fSU1QTEVN
RU5UQVRJT05fU1BFQ0lGSUMgPSAxNlUgfTsKCn07CiMgMTEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9kb20vbnNJRE9NRG9jdW1lbnQuaCIgMgojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9t
L25zSURPTURvY3VtZW50LmgiCmNsYXNzIG5zSURPTURvY3VtZW50IDogcHVibGljIG5zSURPTU5v
ZGUgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29u
c3QgbnNJSUQgaWlkID0gezB4YTZjZjkwNzUsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUs
IDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQojIDQ1
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTURvY3VtZW50LmgiCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXREb2N0eXBlKG5zSURPTURvY3VtZW50VHlwZSAqICphRG9jdHlwZSkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRJbXBsZW1lbnRhdGlvbihuc0lET01ET01JbXBsZW1lbnRh
dGlvbiAqICphSW1wbGVtZW50YXRpb24pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RG9j
dW1lbnRFbGVtZW50KG5zSURPTUVsZW1lbnQgKiAqYURvY3VtZW50RWxlbWVudCkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBDcmVhdGVFbGVtZW50KGNvbnN0IG5zQVN0cmluZyAmIHRhZ05hbWUs
IG5zSURPTUVsZW1lbnQgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENyZWF0
ZURvY3VtZW50RnJhZ21lbnQobnNJRE9NRG9jdW1lbnRGcmFnbWVudCAqKl9yZXR2YWwpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgQ3JlYXRlVGV4dE5vZGUoY29uc3QgbnNBU3RyaW5nICYgZGF0
YSwgbnNJRE9NVGV4dCAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ3JlYXRl
Q29tbWVudChjb25zdCBuc0FTdHJpbmcgJiBkYXRhLCBuc0lET01Db21tZW50ICoqX3JldHZhbCkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDcmVhdGVDREFUQVNlY3Rpb24oY29uc3QgbnNBU3Ry
aW5nICYgZGF0YSwgbnNJRE9NQ0RBVEFTZWN0aW9uICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBDcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oY29uc3QgbnNBU3RyaW5nICYg
dGFyZ2V0LCBjb25zdCBuc0FTdHJpbmcgJiBkYXRhLCBuc0lET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24gKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENyZWF0ZUF0dHJpYnV0ZShj
b25zdCBuc0FTdHJpbmcgJiBuYW1lLCBuc0lET01BdHRyICoqX3JldHZhbCkgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBDcmVhdGVFbnRpdHlSZWZlcmVuY2UoY29uc3QgbnNBU3RyaW5nICYgbmFt
ZSwgbnNJRE9NRW50aXR5UmVmZXJlbmNlICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRFbGVtZW50c0J5VGFnTmFtZShjb25zdCBuc0FTdHJpbmcgJiB0YWduYW1lLCBuc0lE
T01Ob2RlTGlzdCAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSW1wb3J0Tm9k
ZShuc0lET01Ob2RlICppbXBvcnRlZE5vZGUsIFBSQm9vbCBkZWVwLCBuc0lET01Ob2RlICoqX3Jl
dHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDcmVhdGVFbGVtZW50TlMoY29uc3QgbnNB
U3RyaW5nICYgbmFtZXNwYWNlVVJJLCBjb25zdCBuc0FTdHJpbmcgJiBxdWFsaWZpZWROYW1lLCBu
c0lET01FbGVtZW50ICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDcmVhdGVB
dHRyaWJ1dGVOUyhjb25zdCBuc0FTdHJpbmcgJiBuYW1lc3BhY2VVUkksIGNvbnN0IG5zQVN0cmlu
ZyAmIHF1YWxpZmllZE5hbWUsIG5zSURPTUF0dHIgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldEVsZW1lbnRzQnlUYWdOYW1lTlMoY29uc3QgbnNBU3RyaW5nICYgbmFtZXNw
YWNlVVJJLCBjb25zdCBuc0FTdHJpbmcgJiBsb2NhbE5hbWUsIG5zSURPTU5vZGVMaXN0ICoqX3Jl
dHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRFbGVtZW50QnlJZChjb25zdCBuc0FT
dHJpbmcgJiBlbGVtZW50SWQsIG5zSURPTUVsZW1lbnQgKipfcmV0dmFsKSA9IDA7Cgp9OwojIDY1
ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25z
SURPTVhNTERvY3VtZW50LmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lE
T01YTUxEb2N1bWVudC5oIgpjbGFzcyBuc0lET01YTUxEb2N1bWVudCA6IHB1YmxpYyBuc0lET01E
b2N1bWVudCB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRp
YyBjb25zdCBuc0lJRCBpaWQgPSB7MHg4ODE2ZDAwMywgMHhlN2M4LCAweDQwNjUsIHsgMHg4OCwg
MHgyNywgMHg4MiwgMHg5YiwgMHg4ZCwgMHgwNywgMHhiNiwgMHhlMCB9fTsgcmV0dXJuIGlpZDt9
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IExvYWQoY29uc3QgbnNBU3RyaW5nICYgdXJsKSA9IDA7CiMg
NDIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NWE1MRG9jdW1lbnQuaCIKICB2aXJ0
dWFsIG5zcmVzdWx0IEV2YWx1YXRlRklYcHRyKGNvbnN0IG5zQVN0cmluZyAmIGV4cHJlc3Npb24s
IG5zSURPTVJhbmdlICoqX3JldHZhbCkgPSAwOwoKfTsKIyA2NiAibnNET01DbGFzc0luZm8uY3Bw
IiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU0RvY3VtZW50LmgiIDEK
IyAxNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU0RvY3VtZW50LmgiCmNsYXNz
IG5zSUJveE9iamVjdDsKCmNsYXNzIG5zSURPTUxvY2F0aW9uOwojIDI5ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvZG9tL25zSURPTU5TRG9jdW1lbnQuaCIKY2xhc3MgbnNJRE9NTlNEb2N1bWVudCA6
IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0
SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTBjZCwgMHgxNWIzLCAweDEx
ZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsg
cmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENoYXJhY3RlclNldChuc0FTdHJp
bmcgJiBhQ2hhcmFjdGVyU2V0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERpcihuc0FT
dHJpbmcgJiBhRGlyKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXREaXIoY29uc3QgbnNBU3Ry
aW5nICYgYURpcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMb2NhdGlvbihuc0lET01M
b2NhdGlvbiAqICphTG9jYXRpb24pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VGl0bGUo
bnNBU3RyaW5nICYgYVRpdGxlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRUaXRsZShjb25z
dCBuc0FTdHJpbmcgJiBhVGl0bGUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29udGVu
dFR5cGUobnNBU3RyaW5nICYgYUNvbnRlbnRUeXBlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldEJveE9iamVjdEZvcihuc0lET01FbGVtZW50ICplbHQsIG5zSUJveE9iamVjdCAqKl9yZXR2
YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Qm94T2JqZWN0Rm9yKG5zSURPTUVsZW1l
bnQgKmVsdCwgbnNJQm94T2JqZWN0ICpib3hPYmplY3QpID0gMDsKCn07CiMgNjcgIm5zRE9NQ2xh
c3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NRXZlbnQu
aCIgMQojIDE3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUV2ZW50LmgiCmNsYXNz
IG5zSURPTUV2ZW50VGFyZ2V0OwojIDI3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURP
TUV2ZW50LmgiCmNsYXNzIG5zSURPTUV2ZW50IDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1Ymxp
YzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlp
ZCA9IHsweGE2NmI3YjgwLCAweGZmNDYsIDB4YmQ5NywgeyAweDAwLCAweDgwLCAweDVmLCAweDhh
LCAweGUzLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KIyA0NCAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2RvbS9uc0lET01FdmVudC5oIgogIGVudW0geyBDQVBUVVJJTkdfUEhBU0Ug
PSAxVSB9OwoKCgoKICBlbnVtIHsgQVRfVEFSR0VUID0gMlUgfTsKCgoKCiAgZW51bSB7IEJVQkJM
SU5HX1BIQVNFID0gM1UgfTsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFR5cGUobnNBU3Ry
aW5nICYgYVR5cGUpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFRhcmdldChuc0lE
T01FdmVudFRhcmdldCAqICphVGFyZ2V0KSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0Q3VycmVudFRhcmdldChuc0lET01FdmVudFRhcmdldCAqICphQ3VycmVudFRhcmdldCkgPSAw
OwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RXZlbnRQaGFzZShQUlVpbnQxNiAqYUV2ZW50
UGhhc2UpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEJ1YmJsZXMoUFJCb29sICph
QnViYmxlcykgPSAwOwoKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENhbmNlbGFibGUoUFJC
b29sICphQ2FuY2VsYWJsZSkgPSAwOwojIDEwOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9u
c0lET01FdmVudC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VGltZVN0YW1wKERPTVRpbWVTdGFt
cCAqYVRpbWVTdGFtcCkgPSAwOwojIDEyMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lE
T01FdmVudC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgU3RvcFByb3BhZ2F0aW9uKHZvaWQpID0gMDsK
IyAxMzUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NRXZlbnQuaCIKICB2aXJ0dWFs
IG5zcmVzdWx0IFByZXZlbnREZWZhdWx0KHZvaWQpID0gMDsKIyAxNjQgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9kb20vbnNJRE9NRXZlbnQuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEluaXRFdmVudChj
b25zdCBuc0FTdHJpbmcgJiBldmVudFR5cGVBcmcsIFBSQm9vbCBjYW5CdWJibGVBcmcsIFBSQm9v
bCBjYW5jZWxhYmxlQXJnKSA9IDA7Cgp9OwojIDY4ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAx
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTU5TRXZlbnQuaCIgMQojIDI1ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTU5TRXZlbnQuaCIKY2xhc3MgbnNJRE9NTlNFdmVu
dCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYg
R2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhOTA5NzdkZCwgMHhhODBiLCAw
eDQ5YmIsIHsgMHg4MSwgMHg2OSwgMHhjYywgMHg5MCwgMHhlMywgMHhkMSwgMHhkYSwgMHg5OCB9
fTsgcmV0dXJuIGlpZDt9CgogIGVudW0geyBNT1VTRURPV04gPSAxIH07CgogIGVudW0geyBNT1VT
RVVQID0gMiB9OwoKICBlbnVtIHsgTU9VU0VPVkVSID0gNCB9OwoKICBlbnVtIHsgTU9VU0VPVVQg
PSA4IH07CgogIGVudW0geyBNT1VTRU1PVkUgPSAxNiB9OwoKICBlbnVtIHsgTU9VU0VEUkFHID0g
MzIgfTsKCiAgZW51bSB7IENMSUNLID0gNjQgfTsKCiAgZW51bSB7IERCTENMSUNLID0gMTI4IH07
CgogIGVudW0geyBLRVlET1dOID0gMjU2IH07CgogIGVudW0geyBLRVlVUCA9IDUxMiB9OwoKICBl
bnVtIHsgS0VZUFJFU1MgPSAxMDI0IH07CgogIGVudW0geyBEUkFHRFJPUCA9IDIwNDggfTsKCiAg
ZW51bSB7IEZPQ1VTID0gNDA5NiB9OwoKICBlbnVtIHsgQkxVUiA9IDgxOTIgfTsKCiAgZW51bSB7
IFNFTEVDVCA9IDE2Mzg0IH07CgogIGVudW0geyBDSEFOR0UgPSAzMjc2OCB9OwoKICBlbnVtIHsg
UkVTRVQgPSA2NTUzNiB9OwoKICBlbnVtIHsgU1VCTUlUID0gMTMxMDcyIH07CgogIGVudW0geyBT
Q1JPTEwgPSAyNjIxNDQgfTsKCiAgZW51bSB7IExPQUQgPSA1MjQyODggfTsKCiAgZW51bSB7IFVO
TE9BRCA9IDEwNDg1NzYgfTsKCiAgZW51bSB7IFhGRVJfRE9ORSA9IDIwOTcxNTIgfTsKCiAgZW51
bSB7IEFCT1JUID0gNDE5NDMwNCB9OwoKICBlbnVtIHsgRVJST1IgPSA4Mzg4NjA4IH07CgogIGVu
dW0geyBMT0NBVEUgPSAxNjc3NzIxNiB9OwoKICBlbnVtIHsgTU9WRSA9IDMzNTU0NDMyIH07Cgog
IGVudW0geyBSRVNJWkUgPSA2NzEwODg2NCB9OwoKICBlbnVtIHsgRk9SV0FSRCA9IDEzNDIxNzcy
OCB9OwoKICBlbnVtIHsgSEVMUCA9IDI2ODQzNTQ1NiB9OwoKICBlbnVtIHsgQkFDSyA9IDUzNjg3
MDkxMiB9OwoKICBlbnVtIHsgVEVYVCA9IDEwNzM3NDE4MjQgfTsKCiAgZW51bSB7IEFMVF9NQVNL
ID0gMSB9OwoKICBlbnVtIHsgQ09OVFJPTF9NQVNLID0gMiB9OwoKICBlbnVtIHsgU0hJRlRfTUFT
SyA9IDQgfTsKCiAgZW51bSB7IE1FVEFfTUFTSyA9IDggfTsKCgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldE9yaWdpbmFsVGFyZ2V0KG5zSURPTUV2ZW50VGFyZ2V0ICogKmFPcmlnaW5hbFRhcmdldCkg
PSAwOwojIDExNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU0V2ZW50LmgiCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRFeHBsaWNpdE9yaWdpbmFsVGFyZ2V0KG5zSURPTUV2ZW50VGFy
Z2V0ICogKmFFeHBsaWNpdE9yaWdpbmFsVGFyZ2V0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldFRtcDEzUmVhbE9yaWdpbmFsVGFyZ2V0KG5zSURPTUV2ZW50VGFyZ2V0ICogKmFUbXAxM1Jl
YWxPcmlnaW5hbFRhcmdldCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBQcmV2ZW50QnViYmxl
KHZvaWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUHJldmVudENhcHR1cmUodm9pZCkgPSAw
OwoKfTsKIyA2OSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2RvbS9uc0lET01LZXlFdmVudC5oIiAxCiMgMTAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9k
b20vbnNJRE9NS2V5RXZlbnQuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURP
TVVJRXZlbnQuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVVJRXZl
bnQuaCIKY2xhc3MgbnNJRE9NVUlFdmVudCA6IHB1YmxpYyBuc0lET01FdmVudCB7CiBwdWJsaWM6
CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQg
PSB7MHhhNmNmOTBjMywgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwg
MHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldFZpZXcobnNJRE9NQWJzdHJhY3RWaWV3ICogKmFWaWV3KSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldERldGFpbChQUkludDMyICphRGV0YWlsKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEluaXRVSUV2ZW50KGNvbnN0IG5zQVN0cmluZyAmIHR5cGVBcmcsIFBSQm9vbCBjYW5C
dWJibGVBcmcsIFBSQm9vbCBjYW5jZWxhYmxlQXJnLCBuc0lET01BYnN0cmFjdFZpZXcgKnZpZXdB
cmcsIFBSSW50MzIgZGV0YWlsQXJnKSA9IDA7Cgp9OwojIDExICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvZG9tL25zSURPTUtleUV2ZW50LmgiIDIKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2Rv
bS9uc0lET01LZXlFdmVudC5oIgpjbGFzcyBuc0lET01LZXlFdmVudCA6IHB1YmxpYyBuc0lET01V
SUV2ZW50IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGlj
IGNvbnN0IG5zSUlEIGlpZCA9IHsweDAyOGUwZTZlLCAweDhiMDEsIDB4MTFkMywgeyAweGFhLCAw
eGU3LCAweDAwLCAweDEwLCAweDgzLCAweDhhLCAweDMxLCAweDIzIH19OyByZXR1cm4gaWlkO30K
CiAgZW51bSB7IERPTV9WS19DQU5DRUwgPSAzVSB9OwoKICBlbnVtIHsgRE9NX1ZLX0hFTFAgPSA2
VSB9OwoKICBlbnVtIHsgRE9NX1ZLX0JBQ0tfU1BBQ0UgPSA4VSB9OwoKICBlbnVtIHsgRE9NX1ZL
X1RBQiA9IDlVIH07CgogIGVudW0geyBET01fVktfQ0xFQVIgPSAxMlUgfTsKCiAgZW51bSB7IERP
TV9WS19SRVRVUk4gPSAxM1UgfTsKCiAgZW51bSB7IERPTV9WS19FTlRFUiA9IDE0VSB9OwoKICBl
bnVtIHsgRE9NX1ZLX1NISUZUID0gMTZVIH07CgogIGVudW0geyBET01fVktfQ09OVFJPTCA9IDE3
VSB9OwoKICBlbnVtIHsgRE9NX1ZLX0FMVCA9IDE4VSB9OwoKICBlbnVtIHsgRE9NX1ZLX1BBVVNF
ID0gMTlVIH07CgogIGVudW0geyBET01fVktfQ0FQU19MT0NLID0gMjBVIH07CgogIGVudW0geyBE
T01fVktfRVNDQVBFID0gMjdVIH07CgogIGVudW0geyBET01fVktfU1BBQ0UgPSAzMlUgfTsKCiAg
ZW51bSB7IERPTV9WS19QQUdFX1VQID0gMzNVIH07CgogIGVudW0geyBET01fVktfUEFHRV9ET1dO
ID0gMzRVIH07CgogIGVudW0geyBET01fVktfRU5EID0gMzVVIH07CgogIGVudW0geyBET01fVktf
SE9NRSA9IDM2VSB9OwoKICBlbnVtIHsgRE9NX1ZLX0xFRlQgPSAzN1UgfTsKCiAgZW51bSB7IERP
TV9WS19VUCA9IDM4VSB9OwoKICBlbnVtIHsgRE9NX1ZLX1JJR0hUID0gMzlVIH07CgogIGVudW0g
eyBET01fVktfRE9XTiA9IDQwVSB9OwoKICBlbnVtIHsgRE9NX1ZLX1BSSU5UU0NSRUVOID0gNDRV
IH07CgogIGVudW0geyBET01fVktfSU5TRVJUID0gNDVVIH07CgogIGVudW0geyBET01fVktfREVM
RVRFID0gNDZVIH07CgogIGVudW0geyBET01fVktfMCA9IDQ4VSB9OwoKICBlbnVtIHsgRE9NX1ZL
XzEgPSA0OVUgfTsKCiAgZW51bSB7IERPTV9WS18yID0gNTBVIH07CgogIGVudW0geyBET01fVktf
MyA9IDUxVSB9OwoKICBlbnVtIHsgRE9NX1ZLXzQgPSA1MlUgfTsKCiAgZW51bSB7IERPTV9WS181
ID0gNTNVIH07CgogIGVudW0geyBET01fVktfNiA9IDU0VSB9OwoKICBlbnVtIHsgRE9NX1ZLXzcg
PSA1NVUgfTsKCiAgZW51bSB7IERPTV9WS184ID0gNTZVIH07CgogIGVudW0geyBET01fVktfOSA9
IDU3VSB9OwoKICBlbnVtIHsgRE9NX1ZLX1NFTUlDT0xPTiA9IDU5VSB9OwoKICBlbnVtIHsgRE9N
X1ZLX0VRVUFMUyA9IDYxVSB9OwoKICBlbnVtIHsgRE9NX1ZLX0EgPSA2NVUgfTsKCiAgZW51bSB7
IERPTV9WS19CID0gNjZVIH07CgogIGVudW0geyBET01fVktfQyA9IDY3VSB9OwoKICBlbnVtIHsg
RE9NX1ZLX0QgPSA2OFUgfTsKCiAgZW51bSB7IERPTV9WS19FID0gNjlVIH07CgogIGVudW0geyBE
T01fVktfRiA9IDcwVSB9OwoKICBlbnVtIHsgRE9NX1ZLX0cgPSA3MVUgfTsKCiAgZW51bSB7IERP
TV9WS19IID0gNzJVIH07CgogIGVudW0geyBET01fVktfSSA9IDczVSB9OwoKICBlbnVtIHsgRE9N
X1ZLX0ogPSA3NFUgfTsKCiAgZW51bSB7IERPTV9WS19LID0gNzVVIH07CgogIGVudW0geyBET01f
VktfTCA9IDc2VSB9OwoKICBlbnVtIHsgRE9NX1ZLX00gPSA3N1UgfTsKCiAgZW51bSB7IERPTV9W
S19OID0gNzhVIH07CgogIGVudW0geyBET01fVktfTyA9IDc5VSB9OwoKICBlbnVtIHsgRE9NX1ZL
X1AgPSA4MFUgfTsKCiAgZW51bSB7IERPTV9WS19RID0gODFVIH07CgogIGVudW0geyBET01fVktf
UiA9IDgyVSB9OwoKICBlbnVtIHsgRE9NX1ZLX1MgPSA4M1UgfTsKCiAgZW51bSB7IERPTV9WS19U
ID0gODRVIH07CgogIGVudW0geyBET01fVktfVSA9IDg1VSB9OwoKICBlbnVtIHsgRE9NX1ZLX1Yg
PSA4NlUgfTsKCiAgZW51bSB7IERPTV9WS19XID0gODdVIH07CgogIGVudW0geyBET01fVktfWCA9
IDg4VSB9OwoKICBlbnVtIHsgRE9NX1ZLX1kgPSA4OVUgfTsKCiAgZW51bSB7IERPTV9WS19aID0g
OTBVIH07CgogIGVudW0geyBET01fVktfTlVNUEFEMCA9IDk2VSB9OwoKICBlbnVtIHsgRE9NX1ZL
X05VTVBBRDEgPSA5N1UgfTsKCiAgZW51bSB7IERPTV9WS19OVU1QQUQyID0gOThVIH07CgogIGVu
dW0geyBET01fVktfTlVNUEFEMyA9IDk5VSB9OwoKICBlbnVtIHsgRE9NX1ZLX05VTVBBRDQgPSAx
MDBVIH07CgogIGVudW0geyBET01fVktfTlVNUEFENSA9IDEwMVUgfTsKCiAgZW51bSB7IERPTV9W
S19OVU1QQUQ2ID0gMTAyVSB9OwoKICBlbnVtIHsgRE9NX1ZLX05VTVBBRDcgPSAxMDNVIH07Cgog
IGVudW0geyBET01fVktfTlVNUEFEOCA9IDEwNFUgfTsKCiAgZW51bSB7IERPTV9WS19OVU1QQUQ5
ID0gMTA1VSB9OwoKICBlbnVtIHsgRE9NX1ZLX01VTFRJUExZID0gMTA2VSB9OwoKICBlbnVtIHsg
RE9NX1ZLX0FERCA9IDEwN1UgfTsKCiAgZW51bSB7IERPTV9WS19TRVBBUkFUT1IgPSAxMDhVIH07
CgogIGVudW0geyBET01fVktfU1VCVFJBQ1QgPSAxMDlVIH07CgogIGVudW0geyBET01fVktfREVD
SU1BTCA9IDExMFUgfTsKCiAgZW51bSB7IERPTV9WS19ESVZJREUgPSAxMTFVIH07CgogIGVudW0g
eyBET01fVktfRjEgPSAxMTJVIH07CgogIGVudW0geyBET01fVktfRjIgPSAxMTNVIH07CgogIGVu
dW0geyBET01fVktfRjMgPSAxMTRVIH07CgogIGVudW0geyBET01fVktfRjQgPSAxMTVVIH07Cgog
IGVudW0geyBET01fVktfRjUgPSAxMTZVIH07CgogIGVudW0geyBET01fVktfRjYgPSAxMTdVIH07
CgogIGVudW0geyBET01fVktfRjcgPSAxMThVIH07CgogIGVudW0geyBET01fVktfRjggPSAxMTlV
IH07CgogIGVudW0geyBET01fVktfRjkgPSAxMjBVIH07CgogIGVudW0geyBET01fVktfRjEwID0g
MTIxVSB9OwoKICBlbnVtIHsgRE9NX1ZLX0YxMSA9IDEyMlUgfTsKCiAgZW51bSB7IERPTV9WS19G
MTIgPSAxMjNVIH07CgogIGVudW0geyBET01fVktfRjEzID0gMTI0VSB9OwoKICBlbnVtIHsgRE9N
X1ZLX0YxNCA9IDEyNVUgfTsKCiAgZW51bSB7IERPTV9WS19GMTUgPSAxMjZVIH07CgogIGVudW0g
eyBET01fVktfRjE2ID0gMTI3VSB9OwoKICBlbnVtIHsgRE9NX1ZLX0YxNyA9IDEyOFUgfTsKCiAg
ZW51bSB7IERPTV9WS19GMTggPSAxMjlVIH07CgogIGVudW0geyBET01fVktfRjE5ID0gMTMwVSB9
OwoKICBlbnVtIHsgRE9NX1ZLX0YyMCA9IDEzMVUgfTsKCiAgZW51bSB7IERPTV9WS19GMjEgPSAx
MzJVIH07CgogIGVudW0geyBET01fVktfRjIyID0gMTMzVSB9OwoKICBlbnVtIHsgRE9NX1ZLX0Yy
MyA9IDEzNFUgfTsKCiAgZW51bSB7IERPTV9WS19GMjQgPSAxMzVVIH07CgogIGVudW0geyBET01f
VktfTlVNX0xPQ0sgPSAxNDRVIH07CgogIGVudW0geyBET01fVktfU0NST0xMX0xPQ0sgPSAxNDVV
IH07CgogIGVudW0geyBET01fVktfQ09NTUEgPSAxODhVIH07CgogIGVudW0geyBET01fVktfUEVS
SU9EID0gMTkwVSB9OwoKICBlbnVtIHsgRE9NX1ZLX1NMQVNIID0gMTkxVSB9OwoKICBlbnVtIHsg
RE9NX1ZLX0JBQ0tfUVVPVEUgPSAxOTJVIH07CgogIGVudW0geyBET01fVktfT1BFTl9CUkFDS0VU
ID0gMjE5VSB9OwoKICBlbnVtIHsgRE9NX1ZLX0JBQ0tfU0xBU0ggPSAyMjBVIH07CgogIGVudW0g
eyBET01fVktfQ0xPU0VfQlJBQ0tFVCA9IDIyMVUgfTsKCiAgZW51bSB7IERPTV9WS19RVU9URSA9
IDIyMlUgfTsKCiAgZW51bSB7IERPTV9WS19NRVRBID0gMjI0VSB9OwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRDaGFyQ29kZShQUlVpbnQzMiAqYUNoYXJDb2RlKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldEtleUNvZGUoUFJVaW50MzIgKmFLZXlDb2RlKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldEFsdEtleShQUkJvb2wgKmFBbHRLZXkpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0Q3RybEtleShQUkJvb2wgKmFDdHJsS2V5KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldFNoaWZ0S2V5KFBSQm9vbCAqYVNoaWZ0S2V5KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldE1ldGFLZXkoUFJCb29sICphTWV0YUtleSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJ
bml0S2V5RXZlbnQoY29uc3QgbnNBU3RyaW5nICYgdHlwZUFyZywgUFJCb29sIGNhbkJ1YmJsZUFy
ZywgUFJCb29sIGNhbmNlbGFibGVBcmcsIG5zSURPTUFic3RyYWN0VmlldyAqdmlld0FyZywgUFJC
b29sIGN0cmxLZXlBcmcsIFBSQm9vbCBhbHRLZXlBcmcsIFBSQm9vbCBzaGlmdEtleUFyZywgUFJC
b29sIG1ldGFLZXlBcmcsIFBSVWludDMyIGtleUNvZGVBcmcsIFBSVWludDMyIGNoYXJDb2RlQXJn
KSA9IDA7Cgp9OwojIDcwICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvZG9tL25zSURPTUV2ZW50TGlzdGVuZXIuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvZG9tL25zSURPTUV2ZW50TGlzdGVuZXIuaCIKY2xhc3MgbnNJRE9NRXZlbnRMaXN0
ZW5lciA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJ
RCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhkZjMxYzEyMCwgMHhkZWQ2
LCAweDExZDEsIHsgMHhiZCwgMHg4NSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhlMywgMHhm
NCB9fTsgcmV0dXJuIGlpZDt9CiMgNDkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9N
RXZlbnRMaXN0ZW5lci5oIgogIHZpcnR1YWwgbnNyZXN1bHQgSGFuZGxlRXZlbnQobnNJRE9NRXZl
bnQgKmV2ZW50KSA9IDA7Cgp9OwojIDcxICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKCgojIDEgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9kb2NzaGVsbC9uc0lEb2NTaGVsbC5oIiAxCiMgMTcgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9kb2NzaGVsbC9uc0lEb2NTaGVsbC5oIgpjbGFzcyBuc0lQcmVzQ29u
dGV4dDsKY2xhc3MgbnNJUHJlc1NoZWxsOwpjbGFzcyBuc0lVUkk7CgpjbGFzcyBuc0lDb250ZW50
Vmlld2VyOwoKY2xhc3MgbnNJVVJJQ29udGVudExpc3RlbmVyOwoKY2xhc3MgbnNJQ2hyb21lRXZl
bnRIYW5kbGVyOwoKY2xhc3MgbnNJRG9jU2hlbGxMb2FkSW5mbzsKCmNsYXNzIG5zSURvY3VtZW50
Q2hhcnNldEluZm87CgpjbGFzcyBuc0lXZWJOYXZpZ2F0aW9uOwoKY2xhc3MgbnNJU2ltcGxlRW51
bWVyYXRvcjsKCmNsYXNzIG5zSUlucHV0U3RyZWFtOwoKY2xhc3MgbnNJUmVxdWVzdDsKCmNsYXNz
IG5zSVNIRW50cnk7CiMgNDkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb2NzaGVsbC9uc0lEb2NT
aGVsbC5oIgpjbGFzcyBuc0lEb2NTaGVsbCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6
CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQg
PSB7MHg2OWU1ZGUwMCwgMHg3YjhiLCAweDExZDMsIHsgMHhhZiwgMHg2MSwgMHgwMCwgMHhhMCwg
MHgyNCwgMHhmZiwgMHhjMCwgMHg4YyB9fTsgcmV0dXJuIGlpZDt9CiMgNzEgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9kb2NzaGVsbC9uc0lEb2NTaGVsbC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgTG9h
ZFVSSShuc0lVUkkgKnVyaSwgbnNJRG9jU2hlbGxMb2FkSW5mbyAqbG9hZEluZm8sIFBSVWludDMy
IGFMb2FkRmxhZ3MsIFBSQm9vbCBmaXJzdFBhcnR5KSA9IDA7CiMgOTMgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9kb2NzaGVsbC9uc0lEb2NTaGVsbC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgTG9hZFN0
cmVhbShuc0lJbnB1dFN0cmVhbSAqYVN0cmVhbSwgbnNJVVJJICphVVJJLCBjb25zdCBuc0FDU3Ry
aW5nICYgYUNvbnRlbnRUeXBlLCBjb25zdCBuc0FDU3RyaW5nICYgYUNvbnRlbnRDaGFyc2V0LCBu
c0lEb2NTaGVsbExvYWRJbmZvICphTG9hZEluZm8pID0gMDsKIyAxMTUgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9kb2NzaGVsbC9uc0lEb2NTaGVsbC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgSW50ZXJu
YWxMb2FkKG5zSVVSSSAqYVVSSSwgbnNJVVJJICphUmVmZXJyZXIsIG5zSVN1cHBvcnRzICphT3du
ZXIsIFBSQm9vbCBhSW5oZXJpdE93bmVyLCBjb25zdCBQUlVuaWNoYXIgKmFXaW5kb3dUYXJnZXQs
IG5zSUlucHV0U3RyZWFtICphUG9zdERhdGFTdHJlYW0sIG5zSUlucHV0U3RyZWFtICphSGVhZGVy
c1N0cmVhbSwgUFJVaW50MzIgYUxvYWRGbGFncywgbnNJU0hFbnRyeSAqYVNIRW50cnksIFBSQm9v
bCBmaXJzdFBhcnR5LCBuc0lEb2NTaGVsbCAqKmFEb2NTaGVsbCwgbnNJUmVxdWVzdCAqKmFSZXF1
ZXN0KSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDcmVhdGVMb2FkSW5mbyhuc0lEb2NT
aGVsbExvYWRJbmZvICoqbG9hZEluZm8pID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFBy
ZXBhcmVGb3JOZXdDb250ZW50TW9kZWwodm9pZCkgPSAwOwoKCgoKCgoKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldEN1cnJlbnRVUkkobnNJVVJJICphVVJJKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBGaXJlVW5sb2FkTm90aWZpY2F0aW9uKHZvaWQpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0UHJlc0NvbnRleHQobnNJUHJlc0NvbnRleHQgKiAqYVByZXNDb250ZXh0KSA9IDA7
CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByZXNTaGVsbChuc0lQcmVzU2hlbGwgKiAqYVBy
ZXNTaGVsbCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RWxkZXN0UHJlc1NoZWxs
KG5zSVByZXNTaGVsbCAqICphRWxkZXN0UHJlc1NoZWxsKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRDb250ZW50Vmlld2VyKG5zSUNvbnRlbnRWaWV3ZXIgKiAqYUNvbnRlbnRWaWV3
ZXIpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENocm9tZUV2ZW50SGFuZGxlcihu
c0lDaHJvbWVFdmVudEhhbmRsZXIgKiAqYUNocm9tZUV2ZW50SGFuZGxlcikgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0Q2hyb21lRXZlbnRIYW5kbGVyKG5zSUNocm9tZUV2ZW50SGFuZGxlciAq
IGFDaHJvbWVFdmVudEhhbmRsZXIpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBh
cmVudFVSSUNvbnRlbnRMaXN0ZW5lcihuc0lVUklDb250ZW50TGlzdGVuZXIgKiAqYVBhcmVudFVS
SUNvbnRlbnRMaXN0ZW5lcikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UGFyZW50VVJJQ29u
dGVudExpc3RlbmVyKG5zSVVSSUNvbnRlbnRMaXN0ZW5lciAqIGFQYXJlbnRVUklDb250ZW50TGlz
dGVuZXIpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERvY3VtZW50Q2hhcnNldElu
Zm8obnNJRG9jdW1lbnRDaGFyc2V0SW5mbyAqICphRG9jdW1lbnRDaGFyc2V0SW5mbykgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0RG9jdW1lbnRDaGFyc2V0SW5mbyhuc0lEb2N1bWVudENoYXJz
ZXRJbmZvICogYURvY3VtZW50Q2hhcnNldEluZm8pID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0QWxsb3dQbHVnaW5zKFBSQm9vbCAqYUFsbG93UGx1Z2lucykgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0QWxsb3dQbHVnaW5zKFBSQm9vbCBhQWxsb3dQbHVnaW5zKSA9IDA7CgoKCgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFsbG93SmF2YXNjcmlwdChQUkJvb2wgKmFBbGxvd0phdmFz
Y3JpcHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFsbG93SmF2YXNjcmlwdChQUkJvb2wg
YUFsbG93SmF2YXNjcmlwdCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBbGxvd01l
dGFSZWRpcmVjdHMoUFJCb29sICphQWxsb3dNZXRhUmVkaXJlY3RzKSA9IDA7CiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXRBbGxvd01ldGFSZWRpcmVjdHMoUFJCb29sIGFBbGxvd01ldGFSZWRpcmVjdHMp
ID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QWxsb3dTdWJmcmFtZXMoUFJCb29sICph
QWxsb3dTdWJmcmFtZXMpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFsbG93U3ViZnJhbWVz
KFBSQm9vbCBhQWxsb3dTdWJmcmFtZXMpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
QWxsb3dJbWFnZXMoUFJCb29sICphQWxsb3dJbWFnZXMpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0
IFNldEFsbG93SW1hZ2VzKFBSQm9vbCBhQWxsb3dJbWFnZXMpID0gMDsKIyAyMzkgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9kb2NzaGVsbC9uc0lEb2NTaGVsbC5oIgogIGVudW0geyBFTlVNRVJBVEVf
Rk9SV0FSRFMgPSAwIH07CgogIGVudW0geyBFTlVNRVJBVEVfQkFDS1dBUkRTID0gMSB9OwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXREb2NTaGVsbEVudW1lcmF0b3IoUFJJbnQzMiBhSXRlbVR5cGUs
IFBSSW50MzIgYURpcmVjdGlvbiwgbnNJU2ltcGxlRW51bWVyYXRvciAqKl9yZXR2YWwpID0gMDsK
CgoKCiAgZW51bSB7IEFQUF9UWVBFX1VOS05PV04gPSAwVSB9OwoKICBlbnVtIHsgQVBQX1RZUEVf
TUFJTCA9IDFVIH07CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFwcFR5cGUoUFJVaW50MzIgKmFB
cHBUeXBlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRBcHBUeXBlKFBSVWludDMyIGFBcHBU
eXBlKSA9IDA7CiMgMjY2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9jc2hlbGwvbnNJRG9jU2hl
bGwuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFpvb20oZmxvYXQgKmFab29tKSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXRab29tKGZsb2F0IGFab29tKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldE1hcmdpbldpZHRoKFBSSW50MzIgKmFNYXJnaW5XaWR0aCkgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0TWFyZ2luV2lkdGgoUFJJbnQzMiBhTWFyZ2luV2lkdGgpID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0TWFyZ2luSGVpZ2h0KFBSSW50MzIgKmFNYXJnaW5IZWlnaHQpID0g
MDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1hcmdpbkhlaWdodChQUkludDMyIGFNYXJnaW5IZWln
aHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SGFzRm9jdXMoUFJCb29sICphSGFzRm9j
dXMpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEhhc0ZvY3VzKFBSQm9vbCBhSGFzRm9jdXMp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q2FudmFzSGFzRm9jdXMoUFJCb29sICphQ2Fu
dmFzSGFzRm9jdXMpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENhbnZhc0hhc0ZvY3VzKFBS
Qm9vbCBhQ2FudmFzSGFzRm9jdXMpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgVGFiVG9UcmVl
T3duZXIoUFJCb29sIGZvcndhcmQsIFBSQm9vbCAqdG9va0ZvY3VzKSA9IDA7CgoKCgogIGVudW0g
eyBCVVNZX0ZMQUdTX05PTkUgPSAwVSB9OwoKICBlbnVtIHsgQlVTWV9GTEFHU19CVVNZID0gMVUg
fTsKCiAgZW51bSB7IEJVU1lfRkxBR1NfQkVGT1JFX1BBR0VfTE9BRCA9IDJVIH07CgogIGVudW0g
eyBCVVNZX0ZMQUdTX1BBR0VfTE9BRElORyA9IDRVIH07CgoKCgogIGVudW0geyBMT0FEX0NNRF9O
T1JNQUwgPSAxVSB9OwoKICBlbnVtIHsgTE9BRF9DTURfUkVMT0FEID0gMlUgfTsKCiAgZW51bSB7
IExPQURfQ01EX0hJU1RPUlkgPSA0VSB9OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRCdXN5Rmxh
Z3MoUFJVaW50MzIgKmFCdXN5RmxhZ3MpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TG9h
ZFR5cGUoUFJVaW50MzIgKmFMb2FkVHlwZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TG9h
ZFR5cGUoUFJVaW50MzIgYUxvYWRUeXBlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IElzQmVp
bmdEZXN0cm95ZWQoUFJCb29sICpfcmV0dmFsKSA9IDA7Cgp9OwojIDc0ICJuc0RPTUNsYXNzSW5m
by5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9jc2hlbGwvbnNJRG9jU2hlbGxU
cmVlSXRlbS5oIiAxCiMgMTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb2NzaGVsbC9uc0lEb2NT
aGVsbFRyZWVJdGVtLmgiCmNsYXNzIG5zSURvY1NoZWxsVHJlZU93bmVyOwojIDMyICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvZG9jc2hlbGwvbnNJRG9jU2hlbGxUcmVlSXRlbS5oIgpjbGFzcyBuc0lE
b2NTaGVsbFRyZWVJdGVtIDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGlj
IGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGI1MmFl
NzgwLCAweGE5NjYsIDB4MTFkMywgeyAweGFmLCAweGM3LCAweDAwLCAweGEwLCAweDI0LCAweGZm
LCAweGMwLCAweDhjIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TmFt
ZShQUlVuaWNoYXIgKiAqYU5hbWUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE5hbWUoY29u
c3QgUFJVbmljaGFyICogYU5hbWUpID0gMDsKIyA0OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2Rv
Y3NoZWxsL25zSURvY1NoZWxsVHJlZUl0ZW0uaCIKICB2aXJ0dWFsIG5zcmVzdWx0IE5hbWVFcXVh
bHMoY29uc3QgUFJVbmljaGFyICpuYW1lLCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKCiAgZW51bSB7
IHR5cGVDaHJvbWUgPSAwIH07CgogIGVudW0geyB0eXBlQ29udGVudCA9IDEgfTsKCiAgZW51bSB7
IHR5cGVDb250ZW50V3JhcHBlciA9IDIgfTsKCiAgZW51bSB7IHR5cGVDaHJvbWVXcmFwcGVyID0g
MyB9OwoKICBlbnVtIHsgdHlwZUFsbCA9IDIxNDc0ODM2NDcgfTsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0SXRlbVR5cGUoUFJJbnQzMiAqYUl0ZW1UeXBlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRJdGVtVHlwZShQUkludDMyIGFJdGVtVHlwZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRQYXJlbnQobnNJRG9jU2hlbGxUcmVlSXRlbSAqICphUGFyZW50KSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRQYXJlbnQobnNJRG9jU2hlbGxUcmVlSXRlbSAqIGFQYXJlbnQpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2FtZVR5cGVQYXJlbnQobnNJRG9jU2hlbGxUcmVlSXRl
bSAqICphU2FtZVR5cGVQYXJlbnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Um9vdFRy
ZWVJdGVtKG5zSURvY1NoZWxsVHJlZUl0ZW0gKiAqYVJvb3RUcmVlSXRlbSkgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRTYW1lVHlwZVJvb3RUcmVlSXRlbShuc0lEb2NTaGVsbFRyZWVJdGVt
ICogKmFTYW1lVHlwZVJvb3RUcmVlSXRlbSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBGaW5k
SXRlbVdpdGhOYW1lKGNvbnN0IFBSVW5pY2hhciAqbmFtZSwgbnNJU3VwcG9ydHMgKmFSZXF1ZXN0
b3IsIG5zSURvY1NoZWxsVHJlZUl0ZW0gKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldFRyZWVPd25lcihuc0lEb2NTaGVsbFRyZWVPd25lciAqICphVHJlZU93bmVyKSA9IDA7
CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRUcmVlT3duZXIobnNJRG9jU2hlbGxUcmVlT3duZXIgKiBh
VHJlZU93bmVyKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENoaWxkT2Zmc2V0KFBSSW50
MzIgKmFDaGlsZE9mZnNldCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q2hpbGRPZmZzZXQo
UFJJbnQzMiBhQ2hpbGRPZmZzZXQpID0gMDsKCn07CiMgNzUgIm5zRE9NQ2xhc3NJbmZvLmNwcCIg
MgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb2NzaGVsbC9uc0lEb2NTaGVsbFRyZWVOb2Rl
LmgiIDEKIyAzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvY3NoZWxsL25zSURvY1NoZWxsVHJl
ZU5vZGUuaCIKY2xhc3MgbnNJRG9jU2hlbGxUcmVlTm9kZSA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7
CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBu
c0lJRCBpaWQgPSB7MHhjMDk0ZjgxMCwgMHhhOGFiLCAweDExZDMsIHsgMHhhZiwgMHhjNiwgMHgw
MCwgMHhhMCwgMHgyNCwgMHhmZiwgMHhjMCwgMHg4YyB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldENoaWxkQ291bnQoUFJJbnQzMiAqYUNoaWxkQ291bnQpID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgQWRkQ2hpbGQobnNJRG9jU2hlbGxUcmVlSXRlbSAqY2hpbGQpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVtb3ZlQ2hpbGQobnNJRG9jU2hlbGxUcmVlSXRlbSAq
Y2hpbGQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q2hpbGRBdChQUkludDMyIGluZGV4
LCBuc0lEb2NTaGVsbFRyZWVJdGVtICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBGaW5kQ2hpbGRXaXRoTmFtZShjb25zdCBQUlVuaWNoYXIgKmFOYW1lLCBQUkJvb2wgYVJlY3Vy
c2UsIFBSQm9vbCBhU2FtZVR5cGUsIG5zSURvY1NoZWxsVHJlZUl0ZW0gKmFSZXF1ZXN0b3IsIG5z
SURvY1NoZWxsVHJlZUl0ZW0gKipfcmV0dmFsKSA9IDA7Cgp9OwojIDc2ICJuc0RPTUNsYXNzSW5m
by5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSVNjcmlwdEV4dGVybmFs
TmFtZVNldC5oIiAxCiMgNDggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJU2NyaXB0RXh0
ZXJuYWxOYW1lU2V0LmgiCmNsYXNzIG5zSVNjcmlwdENvbnRleHQ7CiMgNTggIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9kb20vbnNJU2NyaXB0RXh0ZXJuYWxOYW1lU2V0LmgiCmNsYXNzIG5zSVNjcmlw
dEV4dGVybmFsTmFtZVNldCA6IHB1YmxpYyBuc0lTdXBwb3J0cwp7CnB1YmxpYzoKICBzdGF0aWMg
Y29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkw
ZGEsIDB4MTViMywgMHgxMWQyLCB7MHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwg
MHhkZCwgMHgzMn19OyByZXR1cm4gaWlkO307CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgSW5pdGlh
bGl6ZU5hbWVTZXQobnNJU2NyaXB0Q29udGV4dCogYVNjcmlwdENvbnRleHQpID0gMDsKfTsKIyA3
NyAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAibnNKU1V0aWxzLmgiIDEKIyA1MyAibnNKU1V0
aWxzLmgiCmNsYXNzIG5zSURPTUV2ZW50TGlzdGVuZXI7CmNsYXNzIG5zSVNjcmlwdENvbnRleHQ7
CmNsYXNzIG5zSVNjcmlwdEdsb2JhbE9iamVjdDsKY2xhc3MgbnNJU2NyaXB0U2VjdXJpdHlNYW5h
Z2VyOwoKY2xhc3MgbnNKU1V0aWxzIHsKcHVibGljOgogIHN0YXRpYyBKU0Jvb2wgR2V0Q2FsbGlu
Z0xvY2F0aW9uKEpTQ29udGV4dCogYUNvbnRleHQsIGNvbnN0IGNoYXIqICphRmlsZW5hbWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJVaW50MzIgKmFMaW5lbm8pOwoKICBz
dGF0aWMgdm9pZCBDb252ZXJ0U3RyaW5nVG9KU1ZhbChjb25zdCBuc1N0cmluZyYgYVByb3AsIEpT
Q29udGV4dCogYUNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganN2
YWwqIGFSZXR1cm4pOwoKICBzdGF0aWMgUFJCb29sIENvbnZlcnRKU1ZhbFRvWFBDT2JqZWN0KG5z
SVN1cHBvcnRzKiogYVN1cHBvcnRzLCBjb25zdCBuc0lJRCYgYUlJRCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEpTQ29udGV4dCogYUNvbnRleHQsIGpzdmFsIGFWYWx1
ZSk7CgogIHN0YXRpYyB2b2lkIENvbnZlcnRKU1ZhbFRvU3RyaW5nKG5zQVN0cmluZyYgYVN0cmlu
ZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU0NvbnRleHQqIGFDb250ZXh0
LCBqc3ZhbCBhVmFsdWUpOwoKICBzdGF0aWMgUFJCb29sIENvbnZlcnRKU1ZhbFRvVWludDMyKFBS
VWludDMyKiBhUHJvcCwgSlNDb250ZXh0KiBhQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGpzdmFsIGFWYWx1ZSk7CgogIHN0YXRpYyBuc3Jlc3VsdCBHZXRTdGF0
aWNTY3JpcHRHbG9iYWwoSlNDb250ZXh0KiBhQ29udGV4dCwgSlNPYmplY3QqIGFPYmosCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTY3JpcHRHbG9iYWxPYmplY3Qq
KiBhR2xvYmFsKTsKCiAgc3RhdGljIG5zcmVzdWx0IEdldFN0YXRpY1NjcmlwdENvbnRleHQoSlND
b250ZXh0KiBhQ29udGV4dCwgSlNPYmplY3QqIGFPYmosCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnNJU2NyaXB0Q29udGV4dCoqIGFTY3JpcHRDb250ZXh0KTsKCiAg
c3RhdGljIG5zcmVzdWx0IEdldER5bmFtaWNTY3JpcHRHbG9iYWwoSlNDb250ZXh0ICphQ29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTY3JpcHRHbG9i
YWxPYmplY3QqKiBhR2xvYmFsKTsKCiAgc3RhdGljIG5zcmVzdWx0IEdldER5bmFtaWNTY3JpcHRD
b250ZXh0KEpTQ29udGV4dCAqYUNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5zSVNjcmlwdENvbnRleHQqKiBhU2NyaXB0Q29udGV4dCk7Cn07CiMgNzgg
Im5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9u
c0lJbnRlcmZhY2VSZXF1ZXN0b3IuaCIgMQojIDM4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBj
b20vbnNJSW50ZXJmYWNlUmVxdWVzdG9yLmgiCmNsYXNzIG5zSUludGVyZmFjZVJlcXVlc3RvciA6
IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0
SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgwMzNhMTQ3MCwgMHg4YjJhLCAweDEx
ZDMsIHsgMHhhZiwgMHg4OCwgMHgwMCwgMHhhMCwgMHgyNCwgMHhmZiwgMHhjMCwgMHg4YyB9fTsg
cmV0dXJuIGlpZDt9CiMgNTQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lJbnRlcmZh
Y2VSZXF1ZXN0b3IuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEludGVyZmFjZShjb25zdCBuc0lJ
RCAmIHV1aWQsIHZvaWQgKiAqcmVzdWx0KSA9IDA7Cgp9OwojIDc5ICJuc0RPTUNsYXNzSW5mby5j
cHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJSW50ZXJmYWNlUmVxdWVz
dG9yVXRpbHMuaCIgMQojIDI5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJSW50ZXJm
YWNlUmVxdWVzdG9yVXRpbHMuaCIKdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIERlc3RpbmF0aW9u
VHlwZT4KaW5saW5lCm5zcmVzdWx0CkNhbGxHZXRJbnRlcmZhY2UoIFQqIGFTb3VyY2UsIERlc3Rp
bmF0aW9uVHlwZSoqIGFEZXN0aW5hdGlvbiApCiAgewogICAgOwogICAgOwoKICAgIHJldHVybiBh
U291cmNlLT5HZXRJbnRlcmZhY2UobnNDT01UeXBlSW5mbzxEZXN0aW5hdGlvblR5cGU+OjpHZXRJ
SUQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDwg
dm9pZCoqID4oYURlc3RpbmF0aW9uKSk7CiAgfQoKY2xhc3MgbnNHZXRJbnRlcmZhY2UgOiBwdWJs
aWMgbnNDT01QdHJfaGVscGVyCiAgewogICAgcHVibGljOgogICAgICBuc0dldEludGVyZmFjZSgg
bnNJU3VwcG9ydHMqIGFTb3VyY2UsIG5zcmVzdWx0KiBlcnJvciApCiAgICAgICAgICA6IG1Tb3Vy
Y2UoYVNvdXJjZSksCiAgICAgICAgICAgIG1FcnJvclB0cihlcnJvcikKICAgICAgICB7CgogICAg
ICAgIH0KCiAgICAgIHZpcnR1YWwgbnNyZXN1bHQgb3BlcmF0b3IoKSggY29uc3QgbnNJSUQmLCB2
b2lkKiogKSBjb25zdDsKICAgICAgdmlydHVhbCB+bnNHZXRJbnRlcmZhY2UoKSB7fTsKCiAgICBw
cml2YXRlOgogICAgICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4gbVNvdXJjZTsKICAgICAgbnNyZXN1
bHQqIG1FcnJvclB0cjsKICB9OwoKaW5saW5lCmNvbnN0IG5zR2V0SW50ZXJmYWNlCmRvX0dldElu
dGVyZmFjZSggbnNJU3VwcG9ydHMqIGFTb3VyY2UsIG5zcmVzdWx0KiBlcnJvciA9IDAgKQogIHsK
ICAgIHJldHVybiBuc0dldEludGVyZmFjZShhU291cmNlLCBlcnJvcik7CiAgfQojIDgwICJuc0RP
TUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi9idWlsZC9uc1NjcmlwdE5hbWVTcGFjZU1hbmFnZXIu
aCIgMQojIDM5ICIuLi9idWlsZC9uc1NjcmlwdE5hbWVTcGFjZU1hbmFnZXIuaCIKIyAxICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSVNjcmlwdE5hbWVTcGFjZU1hbmFnZXIuaCIgMQojIDQw
ICIuLi9idWlsZC9uc1NjcmlwdE5hbWVTcGFjZU1hbmFnZXIuaCIgMgoKCiMgMSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL3hwY29tL3BsZGhhc2guaCIgMQojIDQ3ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUveHBjb20vcGxkaGFzaC5oIgpleHRlcm4gIkMiIHsKIyA3MiAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL3hwY29tL3BsZGhhc2guaCIKdHlwZWRlZiBQUlVpbnQzMiBQTERIYXNoTnVtYmVyOwp0eXBl
ZGVmIHN0cnVjdCBQTERIYXNoRW50cnlIZHIgUExESGFzaEVudHJ5SGRyOwp0eXBlZGVmIHN0cnVj
dCBQTERIYXNoRW50cnlTdHViIFBMREhhc2hFbnRyeVN0dWI7CnR5cGVkZWYgc3RydWN0IFBMREhh
c2hUYWJsZSBQTERIYXNoVGFibGU7CnR5cGVkZWYgc3RydWN0IFBMREhhc2hUYWJsZU9wcyBQTERI
YXNoVGFibGVPcHM7CiMgMTA2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vcGxkaGFzaC5o
IgpzdHJ1Y3QgUExESGFzaEVudHJ5SGRyIHsKICAgIFBMREhhc2hOdW1iZXIga2V5SGFzaDsKfTsK
IyAxODYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9wbGRoYXNoLmgiCnN0cnVjdCBQTERI
YXNoVGFibGUgewogICAgUExESGFzaFRhYmxlT3BzICpvcHM7CiAgICB2b2lkICpkYXRhOwogICAg
UFJJbnQxNiBoYXNoU2hpZnQ7CiAgICB1aW50OCBtYXhBbHBoYUZyYWM7CiAgICB1aW50OCBtaW5B
bHBoYUZyYWM7CiAgICBQUlVpbnQzMiBlbnRyeVNpemU7CiAgICBQUlVpbnQzMiBlbnRyeUNvdW50
OwogICAgUFJVaW50MzIgcmVtb3ZlZENvdW50OwogICAgUFJVaW50MzIgZ2VuZXJhdGlvbjsKICAg
IGNoYXIgKmVudHJ5U3RvcmU7CiMgMjE4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vcGxk
aGFzaC5oIgp9OwojIDIzMiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL3BsZGhhc2guaCIK
dHlwZWRlZiB2b2lkICoKKCogUExESGFzaEFsbG9jVGFibGUpKFBMREhhc2hUYWJsZSAqdGFibGUs
IFBSVWludDMyIG5ieXRlcyk7Cgp0eXBlZGVmIHZvaWQKKCogUExESGFzaEZyZWVUYWJsZSkgKFBM
REhhc2hUYWJsZSAqdGFibGUsIHZvaWQgKnB0cik7CgoKCgoKCgp0eXBlZGVmIGNvbnN0IHZvaWQg
KgooKiBQTERIYXNoR2V0S2V5KSAoUExESGFzaFRhYmxlICp0YWJsZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQTERIYXNoRW50cnlIZHIgKmVudHJ5KTsKCgoKCgp0eXBl
ZGVmIFBMREhhc2hOdW1iZXIKKCogUExESGFzaEhhc2hLZXkpIChQTERIYXNoVGFibGUgKnRhYmxl
LCBjb25zdCB2b2lkICprZXkpOwoKCgoKCnR5cGVkZWYgUFJCb29sCigqIFBMREhhc2hNYXRjaEVu
dHJ5KShQTERIYXNoVGFibGUgKnRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFBMREhhc2hFbnRyeUhkciAqZW50cnksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqa2V5KTsKCgoKCgoKCnR5cGVkZWYgdm9pZAoo
KiBQTERIYXNoTW92ZUVudHJ5KShQTERIYXNoVGFibGUgKnRhYmxlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgUExESGFzaEVudHJ5SGRyICpmcm9tLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUExESGFzaEVudHJ5SGRyICp0byk7CgoKCgoK
CnR5cGVkZWYgdm9pZAooKiBQTERIYXNoQ2xlYXJFbnRyeSkoUExESGFzaFRhYmxlICp0YWJsZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTERIYXNoRW50cnlIZHIgKmVu
dHJ5KTsKCgoKCgoKdHlwZWRlZiB2b2lkCigqIFBMREhhc2hGaW5hbGl6ZSkgKFBMREhhc2hUYWJs
ZSAqdGFibGUpOwojIDI5OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL3BsZGhhc2guaCIK
dHlwZWRlZiB2b2lkCigqIFBMREhhc2hJbml0RW50cnkpKFBMREhhc2hUYWJsZSAqdGFibGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTERIYXNoRW50cnlIZHIgKmVudHJ5
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqa2V5KTsK
IyAzMzAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9wbGRoYXNoLmgiCnN0cnVjdCBQTERI
YXNoVGFibGVPcHMgewoKICAgIFBMREhhc2hBbGxvY1RhYmxlIGFsbG9jVGFibGU7CiAgICBQTERI
YXNoRnJlZVRhYmxlIGZyZWVUYWJsZTsKICAgIFBMREhhc2hHZXRLZXkgZ2V0S2V5OwogICAgUExE
SGFzaEhhc2hLZXkgaGFzaEtleTsKICAgIFBMREhhc2hNYXRjaEVudHJ5IG1hdGNoRW50cnk7CiAg
ICBQTERIYXNoTW92ZUVudHJ5IG1vdmVFbnRyeTsKICAgIFBMREhhc2hDbGVhckVudHJ5IGNsZWFy
RW50cnk7CiAgICBQTERIYXNoRmluYWxpemUgZmluYWxpemU7CgoKICAgIFBMREhhc2hJbml0RW50
cnkgaW5pdEVudHJ5Owp9OwoKCgoKZXh0ZXJuIHZvaWQgKgpQTF9ESGFzaEFsbG9jVGFibGUoUExE
SGFzaFRhYmxlICp0YWJsZSwgUFJVaW50MzIgbmJ5dGVzKTsKCmV4dGVybiB2b2lkClBMX0RIYXNo
RnJlZVRhYmxlKFBMREhhc2hUYWJsZSAqdGFibGUsIHZvaWQgKnB0cik7CgpleHRlcm4gUExESGFz
aE51bWJlcgpQTF9ESGFzaFN0cmluZ0tleShQTERIYXNoVGFibGUgKnRhYmxlLCBjb25zdCB2b2lk
ICprZXkpOwoKCnN0cnVjdCBQTERIYXNoRW50cnlTdHViIHsKICAgIFBMREhhc2hFbnRyeUhkciBo
ZHI7CiAgICBjb25zdCB2b2lkICprZXk7Cn07CgpleHRlcm4gY29uc3Qgdm9pZCAqClBMX0RIYXNo
R2V0S2V5U3R1YihQTERIYXNoVGFibGUgKnRhYmxlLCBQTERIYXNoRW50cnlIZHIgKmVudHJ5KTsK
CmV4dGVybiBQTERIYXNoTnVtYmVyClBMX0RIYXNoVm9pZFB0cktleVN0dWIoUExESGFzaFRhYmxl
ICp0YWJsZSwgY29uc3Qgdm9pZCAqa2V5KTsKCmV4dGVybiBQUkJvb2wKUExfREhhc2hNYXRjaEVu
dHJ5U3R1YihQTERIYXNoVGFibGUgKnRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFBMREhhc2hFbnRyeUhkciAqZW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9p
ZCAqa2V5KTsKCmV4dGVybiB2b2lkClBMX0RIYXNoTW92ZUVudHJ5U3R1YihQTERIYXNoVGFibGUg
KnRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgUExESGFzaEVudHJ5SGRyICpmcm9t
LAogICAgICAgICAgICAgICAgICAgICAgUExESGFzaEVudHJ5SGRyICp0byk7CgpleHRlcm4gdm9p
ZApQTF9ESGFzaENsZWFyRW50cnlTdHViKFBMREhhc2hUYWJsZSAqdGFibGUsIFBMREhhc2hFbnRy
eUhkciAqZW50cnkpOwoKZXh0ZXJuIHZvaWQKUExfREhhc2hGaW5hbGl6ZVN0dWIoUExESGFzaFRh
YmxlICp0YWJsZSk7CgoKCgoKCmV4dGVybiBQTERIYXNoVGFibGVPcHMgKgpQTF9ESGFzaEdldFN0
dWJPcHModm9pZCk7CgoKCgoKCgpleHRlcm4gUExESGFzaFRhYmxlICoKUExfTmV3REhhc2hUYWJs
ZShQTERIYXNoVGFibGVPcHMgKm9wcywgdm9pZCAqZGF0YSwgUFJVaW50MzIgZW50cnlTaXplLAog
ICAgICAgICAgICAgICAgIFBSVWludDMyIGNhcGFjaXR5KTsKCgoKCgpleHRlcm4gdm9pZApQTF9E
SGFzaFRhYmxlRGVzdHJveShQTERIYXNoVGFibGUgKnRhYmxlKTsKCgoKCgoKCmV4dGVybiBQUkJv
b2wKUExfREhhc2hUYWJsZUluaXQoUExESGFzaFRhYmxlICp0YWJsZSwgUExESGFzaFRhYmxlT3Bz
ICpvcHMsIHZvaWQgKmRhdGEsCiAgICAgICAgICAgICAgICAgIFBSVWludDMyIGVudHJ5U2l6ZSwg
UFJVaW50MzIgY2FwYWNpdHkpOwojIDQyOCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL3Bs
ZGhhc2guaCIKdm9pZApQTF9ESGFzaFRhYmxlU2V0QWxwaGFCb3VuZHMoUExESGFzaFRhYmxlICp0
YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IG1heEFscGhhLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxvYXQgbWluQWxwaGEpOwojIDQ0OCAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL3hwY29tL3BsZGhhc2guaCIKZXh0ZXJuIHZvaWQKUExfREhhc2hUYWJsZUZpbmlz
aChQTERIYXNoVGFibGUgKnRhYmxlKTsKCgoKCgoKCnR5cGVkZWYgZW51bSBQTERIYXNoT3BlcmF0
b3IgewogICAgUExfREhBU0hfTE9PS1VQID0gMCwKICAgIFBMX0RIQVNIX0FERCA9IDEsCiAgICBQ
TF9ESEFTSF9SRU1PVkUgPSAyLAogICAgUExfREhBU0hfTkVYVCA9IDAsCiAgICBQTF9ESEFTSF9T
VE9QID0gMQp9IFBMREhhc2hPcGVyYXRvcjsKIyA0OTIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94
cGNvbS9wbGRoYXNoLmgiCmV4dGVybiBQTERIYXNoRW50cnlIZHIgKgpQTF9ESGFzaFRhYmxlT3Bl
cmF0ZShQTERIYXNoVGFibGUgKnRhYmxlLCBjb25zdCB2b2lkICprZXksIFBMREhhc2hPcGVyYXRv
ciBvcCk7CiMgNTA0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vcGxkaGFzaC5oIgpleHRl
cm4gdm9pZApQTF9ESGFzaFRhYmxlUmF3UmVtb3ZlKFBMREhhc2hUYWJsZSAqdGFibGUsIFBMREhh
c2hFbnRyeUhkciAqZW50cnkpOwojIDU0NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL3Bs
ZGhhc2guaCIKdHlwZWRlZiBQTERIYXNoT3BlcmF0b3IKKCogUExESGFzaEVudW1lcmF0b3IpKFBM
REhhc2hUYWJsZSAqdGFibGUsIFBMREhhc2hFbnRyeUhkciAqaGRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBSVWludDMyIG51bWJlciwgdm9pZCAqYXJnKTsKCmV4dGVy
biBQUlVpbnQzMgpQTF9ESGFzaFRhYmxlRW51bWVyYXRlKFBMREhhc2hUYWJsZSAqdGFibGUsIFBM
REhhc2hFbnVtZXJhdG9yIGV0b3IsIHZvaWQgKmFyZyk7CiMgNTYwICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUveHBjb20vcGxkaGFzaC5oIgp9CiMgNDMgIi4uL2J1aWxkL25zU2NyaXB0TmFtZVNwYWNl
TWFuYWdlci5oIiAyCgoKCnN0cnVjdCBuc0dsb2JhbE5hbWVTdHJ1Y3QKewogIHN0cnVjdCBDb25z
dHJ1Y3RvckFsaWFzCiAgewogICAgbnNDSUQgbUNJRDsKICAgIG5zU3RyaW5nIG1Qcm90b05hbWU7
CiAgICBuc0dsb2JhbE5hbWVTdHJ1Y3QqIG1Qcm90bzsKICB9OwoKICBlbnVtIG5hbWV0eXBlIHsK
ICAgIGVUeXBlTm90SW5pdGlhbGl6ZWQsCiAgICBlVHlwZUludGVyZmFjZSwKICAgIGVUeXBlUHJv
cGVydHksCiAgICBlVHlwZUV4dGVybmFsQ29uc3RydWN0b3IsCiAgICBlVHlwZVN0YXRpY05hbWVT
ZXQsCiAgICBlVHlwZUR5bmFtaWNOYW1lU2V0LAogICAgZVR5cGVDbGFzc0NvbnN0cnVjdG9yLAog
ICAgZVR5cGVDbGFzc1Byb3RvLAogICAgZVR5cGVFeHRlcm5hbENsYXNzSW5mb0NyZWF0b3IsCiAg
ICBlVHlwZUV4dGVybmFsQ2xhc3NJbmZvLAogICAgZVR5cGVFeHRlcm5hbENvbnN0cnVjdG9yQWxp
YXMKICB9IG1UeXBlOwoKICB1bmlvbiB7CiAgICBQUkludDMyIG1ET01DbGFzc0luZm9JRDsKICAg
IG5zSUlEIG1JSUQ7CiAgICBuc0V4dGVybmFsRE9NQ2xhc3NJbmZvRGF0YSogbURhdGE7CiAgICBD
b25zdHJ1Y3RvckFsaWFzKiBtQWxpYXM7CiAgICBuc0NJRCBtQ0lEOwogIH07Cgpwcml2YXRlOgoK
Cn07CgoKY2xhc3MgbnNJU2NyaXB0Q29udGV4dDsKY2xhc3MgbnNJQ2F0ZWdvcnlNYW5hZ2VyOwoK
CmNsYXNzIG5zU2NyaXB0TmFtZVNwYWNlTWFuYWdlcgp7CnB1YmxpYzoKICBuc1NjcmlwdE5hbWVT
cGFjZU1hbmFnZXIoKTsKICB2aXJ0dWFsIH5uc1NjcmlwdE5hbWVTcGFjZU1hbmFnZXIoKTsKCiAg
bnNyZXN1bHQgSW5pdCgpOwogIG5zcmVzdWx0IEluaXRGb3JDb250ZXh0KG5zSVNjcmlwdENvbnRl
eHQgKmFDb250ZXh0KTsKCgoKCgoKICBuc3Jlc3VsdCBMb29rdXBOYW1lKGNvbnN0IG5zQVN0cmlu
ZyYgYU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuc0dsb2JhbE5hbWVTdHJ1Y3Qg
KiphTmFtZVN0cnVjdCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBSVW5pY2hhciAqKmFD
bGFzc05hbWUgPSAwKTsKCiAgbnNyZXN1bHQgUmVnaXN0ZXJDbGFzc05hbWUoY29uc3QgY2hhciAq
YUNsYXNzTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkludDMyIGFET01DbGFz
c0luZm9JRCk7CgogIG5zcmVzdWx0IFJlZ2lzdGVyQ2xhc3NQcm90byhjb25zdCBjaGFyICphQ2xh
c3NOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuc0lJRCAqYUNvbnN0
cnVjdG9yUHJvdG9JSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCAqYUZv
dW5kT2xkKTsKCiAgbnNyZXN1bHQgUmVnaXN0ZXJFeHRlcm5hbEludGVyZmFjZXMoUFJCb29sIGFB
c1Byb3RvKTsKCiAgbnNyZXN1bHQgUmVnaXN0ZXJFeHRlcm5hbENsYXNzTmFtZShjb25zdCBjaGFy
ICphQ2xhc3NOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNDSUQm
IGFDSUQpOwoKCgogIG5zcmVzdWx0IFJlZ2lzdGVyRE9NQ0lEYXRhKGNvbnN0IGNoYXIgKmFOYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zRE9NQ2xhc3NJbmZvRXh0ZXJuYWxDb25z
dHJ1Y3RvckZuYyBhQ29uc3RydWN0b3JGcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IG5zSUlEICphUHJvdG9DaGFpbkludGVyZmFjZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBuc0lJRCAqKmFJbnRlcmZhY2VzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBSVWludDMyIGFTY3JpcHRhYmxlRmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUFJCb29sIGFIYXNDbGFzc0ludGVyZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBuc0NJRCAqYUNvbnN0cnVjdG9yQ0lEKTsKCiAgbnNHbG9iYWxOYW1lU3RydWN0
KiBHZXRDb25zdHJ1Y3RvclByb3RvKGNvbnN0IG5zR2xvYmFsTmFtZVN0cnVjdCogYVN0cnVjdCk7
Cgpwcm90ZWN0ZWQ6CgoKCgogIG5zR2xvYmFsTmFtZVN0cnVjdCAqQWRkVG9IYXNoKGNvbnN0IG5z
QVN0cmluZyYgYUtleSk7CgogIG5zcmVzdWx0IEZpbGxIYXNoKG5zSUNhdGVnb3J5TWFuYWdlciAq
YUNhdGVnb3J5TWFuYWdlciwKICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICphQ2F0ZWdv
cnksCiAgICAgICAgICAgICAgICAgICAgbnNHbG9iYWxOYW1lU3RydWN0OjpuYW1ldHlwZSBhVHlw
ZSk7CiAgbnNyZXN1bHQgRmlsbEhhc2hXaXRoRE9NSW50ZXJmYWNlcygpOwogIG5zcmVzdWx0IFJl
Z2lzdGVySW50ZXJmYWNlKGNvbnN0IGNoYXIqIGFJZk5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgbnNJSUQgKmFJZklJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUkJvb2wqIGFGb3VuZE9sZCk7CgoKCiAgUExESGFzaFRhYmxlIG1HbG9iYWxOYW1lczsKCiAg
UFJQYWNrZWRCb29sIG1Jc0luaXRpYWxpemVkOwp9OwojIDgxICJuc0RPTUNsYXNzSW5mby5jcHAi
IDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSVNjcmlwdE9iamVjdE93bmVyLmgi
IDEKIyA2MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lTY3JpcHRPYmplY3RPd25lci5o
IgpjbGFzcyBuc0lTY3JpcHRPYmplY3RPd25lciA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CnB1Ymxp
YzoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlk
ID0geyAweDhmNmJjYTdlLCAweGNlNDIsIDB4MTFkMSwgezB4YjcsIDB4MjQsIDB4MDAsIDB4NjAs
IDB4MDgsIDB4OTEsIDB4ZDgsIDB4Yzl9IH07IHJldHVybiBpaWQ7fQojIDc0ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvZG9tL25zSVNjcmlwdE9iamVjdE93bmVyLmgiCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRTY3JpcHRPYmplY3QobnNJU2NyaXB0Q29udGV4dCAqYUNvbnRleHQsIHZvaWQqKiBhU2Ny
aXB0T2JqZWN0KSA9IDA7CiMgODYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJU2NyaXB0
T2JqZWN0T3duZXIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNjcmlwdE9iamVjdCh2b2lkKiBh
U2NyaXB0T2JqZWN0KSA9IDA7Cn07CgpjbGFzcyBuc0lBdG9tOwojIDEwMiAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2RvbS9uc0lTY3JpcHRPYmplY3RPd25lci5oIgpjbGFzcyBuc0lTY3JpcHRFdmVu
dEhhbmRsZXJPd25lciA6IHB1YmxpYyBuc0lTdXBwb3J0cwp7CnB1YmxpYzoKICBzdGF0aWMgY29u
c3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0geyAweDJhZDU0YWUw
LCAweGE4MzksIDB4MTFkMywgezB4YmEsIDB4OTcsIDB4MDAsIDB4MTAsIDB4NGIsIDB4YTAsIDB4
MmQsIDB4M2R9IH07IHJldHVybiBpaWQ7fQojIDExNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2Rv
bS9uc0lTY3JpcHRPYmplY3RPd25lci5oIgogIHZpcnR1YWwgbnNyZXN1bHQgQ29tcGlsZUV2ZW50
SGFuZGxlcihuc0lTY3JpcHRDb250ZXh0KiBhQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCogYVRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnNJQXRvbSAqYU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IG5zQVN0cmluZyYgYUJvZHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQq
KiBhSGFuZGxlcikgPSAwOwojIDEzMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lTY3Jp
cHRPYmplY3RPd25lci5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29tcGlsZWRFdmVudEhhbmRs
ZXIobnNJQXRvbSAqYU5hbWUsIHZvaWQqKiBhSGFuZGxlcikgPSAwOwp9OwojIDgyICJuc0RPTUNs
YXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSUpTTmF0aXZl
SW5pdGlhbGl6ZXIuaCIgMQojIDU2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSUpTTmF0
aXZlSW5pdGlhbGl6ZXIuaCIKY2xhc3MgbnNJSlNOYXRpdmVJbml0aWFsaXplciA6IHB1YmxpYyBu
c0lTdXBwb3J0cyB7CnB1YmxpYzoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0
aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwZjQsIDB4MTViMywgMHgxMWQyLCB7MHg5Mywg
MHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMn19OyByZXR1cm4gaWlkO30K
CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgSW5pdGlhbGl6ZShKU0NvbnRleHQgKmN4LCBKU09iamVj
dCAqb2JqLAogICAgICAgICAgICAgICAgICAgICAgICBQUlVpbnQzMiBhcmdjLCBqc3ZhbCAqYXJn
dikgPSAwOwp9OwojIDgzICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKCgojIDEgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9kb20vbnNJRE9NUGx1Z2luQXJyYXkuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvZG9tL25zSURPTVBsdWdpbkFycmF5LmgiCmNsYXNzIG5zSURPTVBsdWdpbkFycmF5
IDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBH
ZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGY2MTM0NjgwLCAweGYyOGIsIDB4
MTFkMiwgeyAweDgzLCAweDYwLCAweGM5LCAweDA4LCAweDk5LCAweDA0LCAweDljLCAweDNjIH19
OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGVuZ3RoKFBSVWludDMyICph
TGVuZ3RoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEl0ZW0oUFJVaW50MzIgaW5kZXgsIG5z
SURPTVBsdWdpbiAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgTmFtZWRJdGVt
KGNvbnN0IG5zQVN0cmluZyAmIG5hbWUsIG5zSURPTVBsdWdpbiAqKl9yZXR2YWwpID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgUmVmcmVzaChQUkJvb2wgcmVsb2FkRG9jdW1lbnRzKSA9IDA7Cgp9
OwojIDEyOCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01QbHVnaW5BcnJheS5oIgpj
bGFzcyBuc0lET01KU1BsdWdpbkFycmF5IDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoK
CiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9
IHsweGVlNzUzMzUyLCAweDFkZDEsIDB4MTFiMiwgeyAweGIxLCAweDhkLCAweGIwLCAweGI3LCAw
eDMyLCAweDBhLCAweDI4LCAweGMzIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1
bHQgUmVmcmVzaCh2b2lkKSA9IDA7Cgp9OwojIDg2ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAx
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVBsdWdpbi5oIiAxCiMgMjUgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NUGx1Z2luLmgiCmNsYXNzIG5zSURPTVBsdWdpbiA6
IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0
SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhmNjEzNDY4MSwgMHhmMjhiLCAweDEx
ZDIsIHsgMHg4MywgMHg2MCwgMHhjOSwgMHgwOCwgMHg5OSwgMHgwNCwgMHg5YywgMHgzYyB9fTsg
cmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERlc2NyaXB0aW9uKG5zQVN0cmlu
ZyAmIGFEZXNjcmlwdGlvbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGaWxlbmFtZShu
c0FTdHJpbmcgJiBhRmlsZW5hbWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TmFtZShu
c0FTdHJpbmcgJiBhTmFtZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMZW5ndGgoUFJV
aW50MzIgKmFMZW5ndGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSXRlbShQUlVpbnQzMiBp
bmRleCwgbnNJRE9NTWltZVR5cGUgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IE5hbWVkSXRlbShjb25zdCBuc0FTdHJpbmcgJiBuYW1lLCBuc0lET01NaW1lVHlwZSAqKl9yZXR2
YWwpID0gMDsKCn07CiMgODcgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9kb20vbnNJRE9NTWltZVR5cGVBcnJheS5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9kb20vbnNJRE9NTWltZVR5cGVBcnJheS5oIgpjbGFzcyBuc0lET01NaW1lVHlw
ZUFycmF5IDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5z
SUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGY2MTM0NjgzLCAweGYy
OGIsIDB4MTFkMiwgeyAweDgzLCAweDYwLCAweGM5LCAweDA4LCAweDk5LCAweDA0LCAweDljLCAw
eDNjIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGVuZ3RoKFBSVWlu
dDMyICphTGVuZ3RoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEl0ZW0oUFJVaW50MzIgaW5k
ZXgsIG5zSURPTU1pbWVUeXBlICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBO
YW1lZEl0ZW0oY29uc3QgbnNBU3RyaW5nICYgbmFtZSwgbnNJRE9NTWltZVR5cGUgKipfcmV0dmFs
KSA9IDA7Cgp9OwojIDg4ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvZG9tL25zSURPTU1pbWVUeXBlLmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2RvbS9uc0lET01NaW1lVHlwZS5oIgpjbGFzcyBuc0lET01NaW1lVHlwZSA6IHB1YmxpYyBu
c0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0
YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhmNjEzNDY4MiwgMHhmMjhiLCAweDExZDIsIHsgMHg4
MywgMHg2MCwgMHhjOSwgMHgwOCwgMHg5OSwgMHgwNCwgMHg5YywgMHgzYyB9fTsgcmV0dXJuIGlp
ZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERlc2NyaXB0aW9uKG5zQVN0cmluZyAmIGFEZXNj
cmlwdGlvbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRFbmFibGVkUGx1Z2luKG5zSURP
TVBsdWdpbiAqICphRW5hYmxlZFBsdWdpbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRT
dWZmaXhlcyhuc0FTdHJpbmcgJiBhU3VmZml4ZXMpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0VHlwZShuc0FTdHJpbmcgJiBhVHlwZSkgPSAwOwoKfTsKIyA4OSAibnNET01DbGFzc0luZm8u
Y3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU0xvY2F0aW9uLmgi
IDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU0xvY2F0aW9uLmgiCmNs
YXNzIG5zSURPTU5TTG9jYXRpb24gOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBz
dGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4
YTZjZjkxMDgsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYs
IDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBS
ZWxvYWQodm9pZCkgPSAwOwoKfTsKIyA5MCAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01Mb2NhdGlvbi5oIiAxCiMgMjUgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NTG9jYXRpb24uaCIKY2xhc3MgbnNJRE9NTG9jYXRpb24g
OiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdl
dElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwNmQsIDB4MTViMywgMHgx
MWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07
IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRIYXNoKG5zQVN0cmluZyAmIGFI
YXNoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRIYXNoKGNvbnN0IG5zQVN0cmluZyAmIGFI
YXNoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEhvc3QobnNBU3RyaW5nICYgYUhvc3Qp
ID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEhvc3QoY29uc3QgbnNBU3RyaW5nICYgYUhvc3Qp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SG9zdG5hbWUobnNBU3RyaW5nICYgYUhvc3Ru
YW1lKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRIb3N0bmFtZShjb25zdCBuc0FTdHJpbmcg
JiBhSG9zdG5hbWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SHJlZihuc0FTdHJpbmcg
JiBhSHJlZikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0SHJlZihjb25zdCBuc0FTdHJpbmcg
JiBhSHJlZikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQYXRobmFtZShuc0FTdHJpbmcg
JiBhUGF0aG5hbWUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFBhdGhuYW1lKGNvbnN0IG5z
QVN0cmluZyAmIGFQYXRobmFtZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQb3J0KG5z
QVN0cmluZyAmIGFQb3J0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRQb3J0KGNvbnN0IG5z
QVN0cmluZyAmIGFQb3J0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByb3RvY29sKG5z
QVN0cmluZyAmIGFQcm90b2NvbCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UHJvdG9jb2wo
Y29uc3QgbnNBU3RyaW5nICYgYVByb3RvY29sKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dFNlYXJjaChuc0FTdHJpbmcgJiBhU2VhcmNoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRT
ZWFyY2goY29uc3QgbnNBU3RyaW5nICYgYVNlYXJjaCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBSZWxvYWQoUFJCb29sIGZvcmNlZ2V0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFJlcGxh
Y2UoY29uc3QgbnNBU3RyaW5nICYgdXJsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEFzc2ln
bihjb25zdCBuc0FTdHJpbmcgJiB1cmwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgVG9TdHJp
bmcobnNBU3RyaW5nICYgX3JldHZhbCkgPSAwOwoKfTsKIyA5MSAibnNET01DbGFzc0luZm8uY3Bw
IiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01XaW5kb3dJbnRlcm5hbC5o
IiAxCiMgMTAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NV2luZG93SW50ZXJuYWwu
aCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVdpbmRvdy5oIiAxCiMgMTcg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NV2luZG93LmgiCmNsYXNzIG5zSVNlbGVj
dGlvbjsKIyAyNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01XaW5kb3cuaCIKY2xh
c3MgbnNJRE9NV2luZG93IDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGlj
IGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5
MDZiLCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhh
LCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KIyA0NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L2RvbS9uc0lET01XaW5kb3cuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERvY3VtZW50KG5zSURP
TURvY3VtZW50ICogKmFEb2N1bWVudCkgPSAwOwoKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dFBhcmVudChuc0lET01XaW5kb3cgKiAqYVBhcmVudCkgPSAwOwojIDY1ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvZG9tL25zSURPTVdpbmRvdy5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VG9wKG5z
SURPTVdpbmRvdyAqICphVG9wKSA9IDA7CiMgNzQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20v
bnNJRE9NV2luZG93LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTY3JvbGxiYXJzKG5zSURPTUJh
clByb3AgKiAqYVNjcm9sbGJhcnMpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RnJh
bWVzKG5zSURPTVdpbmRvd0NvbGxlY3Rpb24gKiAqYUZyYW1lcykgPSAwOwoKCgoKCgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldE5hbWUobnNBU3RyaW5nICYgYU5hbWUpID0gMDsKICB2aXJ0dWFsIG5z
cmVzdWx0IFNldE5hbWUoY29uc3QgbnNBU3RyaW5nICYgYU5hbWUpID0gMDsKIyAxMDAgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NV2luZG93LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRUZXh0Wm9vbShmbG9hdCAqYVRleHRab29tKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRU
ZXh0Wm9vbShmbG9hdCBhVGV4dFpvb20pID0gMDsKIyAxMTAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9kb20vbnNJRE9NV2luZG93LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTY3JvbGxYKFBSSW50
MzIgKmFTY3JvbGxYKSA9IDA7CiMgMTE5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURP
TVdpbmRvdy5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2Nyb2xsWShQUkludDMyICphU2Nyb2xs
WSkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTY3JvbGxUbyhQUkludDMyIHhTY3JvbGws
IFBSSW50MzIgeVNjcm9sbCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2Nyb2xsQnko
UFJJbnQzMiB4U2Nyb2xsRGlmLCBQUkludDMyIHlTY3JvbGxEaWYpID0gMDsKCgoKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0U2VsZWN0aW9uKG5zSVNlbGVjdGlvbiAqKl9yZXR2YWwpID0gMDsKCgoK
CgogIHZpcnR1YWwgbnNyZXN1bHQgU2Nyb2xsQnlMaW5lcyhQUkludDMyIG51bUxpbmVzKSA9IDA7
CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNjcm9sbEJ5UGFnZXMoUFJJbnQzMiBudW1QYWdlcykg
PSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTaXplVG9Db250ZW50KHZvaWQpID0gMDsKCn07
CiMgMTEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NV2luZG93SW50ZXJuYWwuaCIg
MgoKCgoKCgpjbGFzcyBuc0lTaWRlYmFyOwoKY2xhc3MgbnNJUHJvbXB0OwoKY2xhc3MgbnNJQ29u
dHJvbGxlcnM7CgpjbGFzcyBuc0lET01Mb2NhdGlvbjsKIyAzMyAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2RvbS9uc0lET01XaW5kb3dJbnRlcm5hbC5oIgpjbGFzcyBuc0lET01XaW5kb3dJbnRlcm5h
bCA6IHB1YmxpYyBuc0lET01XaW5kb3cgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQm
IEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4OWM5MTE4NjAsIDB4N2RkOSwg
MHgxMWQ0LCB7IDB4OWEsIDB4ODMsIDB4MDAsIDB4MDAsIDB4NjQsIDB4NjUsIDB4NzMsIDB4NzQg
fX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRXaW5kb3cobnNJRE9NV2lu
ZG93SW50ZXJuYWwgKiAqYVdpbmRvdykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTZWxm
KG5zSURPTVdpbmRvd0ludGVybmFsICogKmFTZWxmKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldE5hdmlnYXRvcihuc0lET01OYXZpZ2F0b3IgKiAqYU5hdmlnYXRvcikgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRTY3JlZW4obnNJRE9NU2NyZWVuICogKmFTY3JlZW4pID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0SGlzdG9yeShuc0lET01IaXN0b3J5ICogKmFIaXN0b3J5KSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbnRlbnQobnNJRE9NV2luZG93ICogKmFDb250
ZW50KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNpZGViYXIobnNJU2lkZWJhciAqICph
U2lkZWJhcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQcm9tcHRlcihuc0lQcm9tcHQg
KiAqYVByb21wdGVyKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1lbnViYXIobnNJRE9N
QmFyUHJvcCAqICphTWVudWJhcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRUb29sYmFy
KG5zSURPTUJhclByb3AgKiAqYVRvb2xiYXIpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
TG9jYXRpb25iYXIobnNJRE9NQmFyUHJvcCAqICphTG9jYXRpb25iYXIpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0UGVyc29uYWxiYXIobnNJRE9NQmFyUHJvcCAqICphUGVyc29uYWxiYXIp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U3RhdHVzYmFyKG5zSURPTUJhclByb3AgKiAq
YVN0YXR1c2JhcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREaXJlY3Rvcmllcyhuc0lE
T01CYXJQcm9wICogKmFEaXJlY3RvcmllcykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRD
bG9zZWQoUFJCb29sICphQ2xvc2VkKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENyeXB0
byhuc0lET01DcnlwdG8gKiAqYUNyeXB0bykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQ
a2NzMTEobnNJRE9NUGtjczExICogKmFQa2NzMTEpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0Q29udHJvbGxlcnMobnNJQ29udHJvbGxlcnMgKiAqYUNvbnRyb2xsZXJzKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldE9wZW5lcihuc0lET01XaW5kb3dJbnRlcm5hbCAqICphT3BlbmVy
KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRPcGVuZXIobnNJRE9NV2luZG93SW50ZXJuYWwg
KiBhT3BlbmVyKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFN0YXR1cyhuc0FTdHJpbmcg
JiBhU3RhdHVzKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRTdGF0dXMoY29uc3QgbnNBU3Ry
aW5nICYgYVN0YXR1cykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREZWZhdWx0U3RhdHVz
KG5zQVN0cmluZyAmIGFEZWZhdWx0U3RhdHVzKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRE
ZWZhdWx0U3RhdHVzKGNvbnN0IG5zQVN0cmluZyAmIGFEZWZhdWx0U3RhdHVzKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldExvY2F0aW9uKG5zSURPTUxvY2F0aW9uICogKmFMb2NhdGlvbikg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRJbm5lcldpZHRoKFBSSW50MzIgKmFJbm5lcldp
ZHRoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRJbm5lcldpZHRoKFBSSW50MzIgYUlubmVy
V2lkdGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SW5uZXJIZWlnaHQoUFJJbnQzMiAq
YUlubmVySGVpZ2h0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRJbm5lckhlaWdodChQUklu
dDMyIGFJbm5lckhlaWdodCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRPdXRlcldpZHRo
KFBSSW50MzIgKmFPdXRlcldpZHRoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRPdXRlcldp
ZHRoKFBSSW50MzIgYU91dGVyV2lkdGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0T3V0
ZXJIZWlnaHQoUFJJbnQzMiAqYU91dGVySGVpZ2h0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBT
ZXRPdXRlckhlaWdodChQUkludDMyIGFPdXRlckhlaWdodCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRTY3JlZW5YKFBSSW50MzIgKmFTY3JlZW5YKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRTY3JlZW5YKFBSSW50MzIgYVNjcmVlblgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0U2NyZWVuWShQUkludDMyICphU2NyZWVuWSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0
U2NyZWVuWShQUkludDMyIGFTY3JlZW5ZKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBh
Z2VYT2Zmc2V0KFBSSW50MzIgKmFQYWdlWE9mZnNldCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRQYWdlWU9mZnNldChQUkludDMyICphUGFnZVlPZmZzZXQpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0TGVuZ3RoKFBSVWludDMyICphTGVuZ3RoKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldEZ1bGxTY3JlZW4oUFJCb29sICphRnVsbFNjcmVlbikgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0RnVsbFNjcmVlbihQUkJvb2wgYUZ1bGxTY3JlZW4pID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgQWxlcnQoY29uc3QgbnNBU3RyaW5nICYgdGV4dCkgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBDb25maXJtKGNvbnN0IG5zQVN0cmluZyAmIHRleHQsIFBSQm9vbCAqX3JldHZh
bCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBQcm9tcHQoY29uc3QgbnNBU3RyaW5nICYgYU1l
c3NhZ2UsIGNvbnN0IG5zQVN0cmluZyAmIGFJbml0aWFsLCBjb25zdCBuc0FTdHJpbmcgJiBhVGl0
bGUsIFBSVWludDMyIGFTYXZlUGFzc3dvcmQsIG5zQVN0cmluZyAmIF9yZXR2YWwpID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgRm9jdXModm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBC
bHVyKHZvaWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQmFjayh2b2lkKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEZvcndhcmQodm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBI
b21lKHZvaWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgU3RvcCh2b2lkKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IFByaW50KHZvaWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgTW92
ZVRvKFBSSW50MzIgeFBvcywgUFJJbnQzMiB5UG9zKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IE1vdmVCeShQUkludDMyIHhEaWYsIFBSSW50MzIgeURpZikgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBSZXNpemVUbyhQUkludDMyIHdpZHRoLCBQUkludDMyIGhlaWdodCkgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBSZXNpemVCeShQUkludDMyIHdpZHRoRGlmLCBQUkludDMyIGhlaWdodERp
ZikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTY3JvbGwoUFJJbnQzMiB4U2Nyb2xsLCBQUklu
dDMyIHlTY3JvbGwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgT3Blbihjb25zdCBuc0FTdHJp
bmcgJiB1cmwsIGNvbnN0IG5zQVN0cmluZyAmIG5hbWUsIGNvbnN0IG5zQVN0cmluZyAmIG9wdGlv
bnMsIG5zSURPTVdpbmRvdyAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgT3Bl
bkRpYWxvZyhjb25zdCBuc0FTdHJpbmcgJiB1cmwsIGNvbnN0IG5zQVN0cmluZyAmIG5hbWUsIGNv
bnN0IG5zQVN0cmluZyAmIG9wdGlvbnMsIG5zSVN1cHBvcnRzICphRXh0cmFBcmd1bWVudCwgbnNJ
RE9NV2luZG93ICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDbG9zZSh2b2lk
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFVwZGF0ZUNvbW1hbmRzKGNvbnN0IG5zQVN0cmlu
ZyAmIGFjdGlvbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBFc2NhcGUoY29uc3QgbnNBU3Ry
aW5nICYgc3RyLCBuc0FTdHJpbmcgJiBfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IFVuZXNjYXBlKGNvbnN0IG5zQVN0cmluZyAmIHN0ciwgbnNBU3RyaW5nICYgX3JldHZhbCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBGaW5kKGNvbnN0IG5zQVN0cmluZyAmIHN0ciwgUFJCb29s
IGNhc2VTZW5zaXRpdmUsIFBSQm9vbCBiYWNrd2FyZHMsIFBSQm9vbCB3cmFwQXJvdW5kLCBQUkJv
b2wgd2hvbGVXb3JkLCBQUkJvb2wgc2VhcmNoSW5GcmFtZXMsIFBSQm9vbCBzaG93RGlhbG9nLCBQ
UkJvb2wgKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQXRvYihjb25zdCBuc0FT
dHJpbmcgJiBhQXNjaWlTdHJpbmcsIG5zQVN0cmluZyAmIF9yZXR2YWwpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgQnRvYShjb25zdCBuc0FTdHJpbmcgJiBhQmFzZTY0RGF0YSwgbnNBU3RyaW5n
ICYgX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGcmFtZUVsZW1lbnQobnNJ
RE9NRWxlbWVudCAqICphRnJhbWVFbGVtZW50KSA9IDA7Cgp9OwojIDkyICJuc0RPTUNsYXNzSW5m
by5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUpTV2luZG93Lmgi
IDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01KU1dpbmRvdy5oIgpjbGFz
cyBuc0lET01KU1dpbmRvdyA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRp
YyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhjODE4
ODYyMCwgMHgxZGQxLCAweDExYjIsIHsgMHhiYywgMHg4OCwgMHhkZiwgMHg4NCwgMHg0MCwgMHg0
OSwgMHg4YSwgMHhkZCB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IER1bXAo
Y29uc3QgbnNBU3RyaW5nICYgc3RyKSA9IDA7CiMgNDAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9k
b20vbnNJRE9NSlNXaW5kb3cuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFRpbWVvdXQoUFJJbnQz
MiAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRJbnRlcnZhbChQUkludDMy
ICpfcmV0dmFsKSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ2xlYXJUaW1lb3V0KHZv
aWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ2xlYXJJbnRlcnZhbCh2b2lkKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldFJlc2l6YWJsZShQUkJvb2wgcmVzaXphYmxlKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IENhcHR1cmVFdmVudHMoUFJJbnQzMiBldmVudEZsYWdzKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFJlbGVhc2VFdmVudHMoUFJJbnQzMiBldmVudEZsYWdzKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFJvdXRlRXZlbnQobnNJRE9NRXZlbnQgKmV2dCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBFbmFibGVFeHRlcm5hbENhcHR1cmUodm9pZCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBEaXNhYmxlRXh0ZXJuYWxDYXB0dXJlKHZvaWQpID0gMDsKCgoK
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFByb21wdChuc0FTdHJpbmcgJiBfcmV0dmFsKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IE9wZW4obnNJRE9NV2luZG93ICoqX3JldHZhbCkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBPcGVuRGlhbG9nKG5zSURPTVdpbmRvdyAqKl9yZXR2YWwpID0gMDsK
IyA5NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01KU1dpbmRvdy5oIgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0RnJhbWVzKG5zSURPTVdpbmRvdyAqICphRnJhbWVzKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEZpbmQoUFJCb29sICpfcmV0dmFsKSA9IDA7Cgp9OwojIDkzICJuc0RP
TUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVdp
bmRvd0NvbGxlY3Rpb24uaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURP
TVdpbmRvd0NvbGxlY3Rpb24uaCIKY2xhc3MgbnNJRE9NV2luZG93Q29sbGVjdGlvbiA6IHB1Ymxp
YyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkg
e3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTA2ZiwgMHgxNWIzLCAweDExZDIsIHsg
MHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJu
IGlpZDt9CiMgNDAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NV2luZG93Q29sbGVj
dGlvbi5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGVuZ3RoKFBSVWludDMyICphTGVuZ3RoKSA9
IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEl0ZW0oUFJVaW50MzIgaW5kZXgsIG5zSURPTVdp
bmRvdyAqKl9yZXR2YWwpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgTmFtZWRJdGVtKGNv
bnN0IG5zQVN0cmluZyAmIG5hbWUsIG5zSURPTVdpbmRvdyAqKl9yZXR2YWwpID0gMDsKCn07CiMg
OTQgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20v
bnNJRE9NSGlzdG9yeS5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9N
SGlzdG9yeS5oIgpjbGFzcyBuc0lET01IaXN0b3J5IDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1
YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlE
IGlpZCA9IHsweDg5NmQxZDIwLCAweGI0YzQsIDB4MTFkMiwgeyAweGJkLCAweDkzLCAweDAwLCAw
eDgwLCAweDVmLCAweDhhLCAweGUzLCAweGY0IH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0TGVuZ3RoKFBSSW50MzIgKmFMZW5ndGgpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0Q3VycmVudChuc0FTdHJpbmcgJiBhQ3VycmVudCkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRQcmV2aW91cyhuc0FTdHJpbmcgJiBhUHJldmlvdXMpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0TmV4dChuc0FTdHJpbmcgJiBhTmV4dCkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBCYWNrKHZvaWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgRm9yd2FyZCh2b2lk
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdvSW5kZXgoUFJJbnQzMiBhRGVsdGEpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR29VcmkoY29uc3QgbnNBU3RyaW5nICYgYVVyaVN1YnN0cmlu
ZykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJdGVtKFBSVWludDMyIGluZGV4LCBuc0FTdHJp
bmcgJiBfcmV0dmFsKSA9IDA7Cgp9OwojIDk1ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTU5TSGlzdG9yeS5oIiAxCiMgMjUgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NTlNIaXN0b3J5LmgiCmNsYXNzIG5zSURPTU5TSGlz
dG9yeSA6IHB1YmxpYyBuc0lET01IaXN0b3J5IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5z
SUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDVmYjk2ZjQ2LCAweDFk
ZDIsIDB4MTFiMiwgeyAweGE1LCAweGRjLCAweDk5LCAweDhjLCAweGE4LCAweDYzLCAweDZlLCAw
eGE5IH19OyByZXR1cm4gaWlkO30KCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR28odm9pZCkgPSAw
OwoKfTsKIyA5NiAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2RvbS9uc0lET01NZWRpYUxpc3QuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
ZG9tL25zSURPTU1lZGlhTGlzdC5oIgpjbGFzcyBuc0lET01NZWRpYUxpc3QgOiBwdWJsaWMgbnNJ
U3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0
aWMgY29uc3QgbnNJSUQgaWlkID0gezB4OWIwYzJlZDcsIDB4MTExYywgMHg0ODI0LCB7IDB4YWQs
IDB4ZjksIDB4ZWYsIDB4MGQsIDB4YTYsIDB4ZGEsIDB4ZDMsIDB4NzEgfX07IHJldHVybiBpaWQ7
fQojIDQwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTU1lZGlhTGlzdC5oIgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0TWVkaWFUZXh0KG5zQVN0cmluZyAmIGFNZWRpYVRleHQpID0gMDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1lZGlhVGV4dChjb25zdCBuc0FTdHJpbmcgJiBhTWVkaWFU
ZXh0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldExlbmd0aChQUlVpbnQzMiAqYUxlbmd0
aCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJdGVtKFBSVWludDMyIGluZGV4LCBuc0FTdHJp
bmcgJiBfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IERlbGV0ZU1lZGl1bShjb25z
dCBuc0FTdHJpbmcgJiBvbGRNZWRpdW0pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQXBwZW5k
TWVkaXVtKGNvbnN0IG5zQVN0cmluZyAmIG5ld01lZGl1bSkgPSAwOwoKfTsKIyA5NyAibnNET01D
bGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01DaHJv
bWVXaW5kb3cuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNocm9t
ZVdpbmRvdy5oIgpjbGFzcyBuc0lET01DaHJvbWVXaW5kb3cgOiBwdWJsaWMgbnNJU3VwcG9ydHMg
ewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3Qg
bnNJSUQgaWlkID0gezB4ODc2ZDZmOTYsIDB4MjQyMCwgMHg0Zjc4LCB7IDB4YmMsIDB4MTcsIDB4
MDAsIDB4YjEsIDB4YTIsIDB4ZWMsIDB4MTIsIDB4YmEgfX07IHJldHVybiBpaWQ7fQoKICBlbnVt
IHsgU1RBVEVfTUFYSU1JWkVEID0gMVUgfTsKCiAgZW51bSB7IFNUQVRFX01JTklNSVpFRCA9IDJV
IH07CgogIGVudW0geyBTVEFURV9OT1JNQUwgPSAzVSB9OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRUaXRsZShuc0FTdHJpbmcgJiBhVGl0bGUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFRp
dGxlKGNvbnN0IG5zQVN0cmluZyAmIGFUaXRsZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRXaW5kb3dTdGF0ZShQUlVpbnQxNiAqYVdpbmRvd1N0YXRlKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldEF0dGVudGlvbih2b2lkKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEN1
cnNvcihjb25zdCBuc0FTdHJpbmcgJiBjdXJzb3IpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
TWF4aW1pemUodm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBNaW5pbWl6ZSh2b2lkKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFJlc3RvcmUodm9pZCkgPSAwOwoKfTsKIyA5OCAibnNE
T01DbGFzc0luZm8uY3BwIiAyCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zRE9N
RXJyb3IuaCIgMQojIDEwMSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2RvbS9uc0lET01ET01FeGNlcHRpb24uaCIgMQojIDM4ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvZG9tL25zSURPTURPTUV4Y2VwdGlvbi5oIgpjbGFzcyBuc0lET01ET01FeGNlcHRp
b24gOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQm
IEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkxMGEsIDB4MTViMywg
MHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIg
fX07IHJldHVybiBpaWQ7fQoKICBlbnVtIHsgSU5ERVhfU0laRV9FUlIgPSAxVSB9OwoKICBlbnVt
IHsgRE9NU1RSSU5HX1NJWkVfRVJSID0gMlUgfTsKCiAgZW51bSB7IEhJRVJBUkNIWV9SRVFVRVNU
X0VSUiA9IDNVIH07CgogIGVudW0geyBXUk9OR19ET0NVTUVOVF9FUlIgPSA0VSB9OwoKICBlbnVt
IHsgSU5WQUxJRF9DSEFSQUNURVJfRVJSID0gNVUgfTsKCiAgZW51bSB7IE5PX0RBVEFfQUxMT1dF
RF9FUlIgPSA2VSB9OwoKICBlbnVtIHsgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSID0gN1Ug
fTsKCiAgZW51bSB7IE5PVF9GT1VORF9FUlIgPSA4VSB9OwoKICBlbnVtIHsgTk9UX1NVUFBPUlRF
RF9FUlIgPSA5VSB9OwoKICBlbnVtIHsgSU5VU0VfQVRUUklCVVRFX0VSUiA9IDEwVSB9OwoKICBl
bnVtIHsgSU5WQUxJRF9TVEFURV9FUlIgPSAxMVUgfTsKCiAgZW51bSB7IFNZTlRBWF9FUlIgPSAx
MlUgfTsKCiAgZW51bSB7IElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUiA9IDEzVSB9OwoKICBlbnVt
IHsgTkFNRVNQQUNFX0VSUiA9IDE0VSB9OwoKICBlbnVtIHsgSU5WQUxJRF9BQ0NFU1NfRVJSID0g
MTVVIH07CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvZGUoUFJVaW50MzIgKmFDb2RlKSA9IDA7
Cgp9OwojIDEwMiAibnNET01DbGFzc0luZm8uY3BwIiAyCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9kb20vbnNJRE9NTm9kZUxpc3QuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
ZG9tL25zSURPTU5vZGVMaXN0LmgiCmNsYXNzIG5zSURPTU5vZGVMaXN0IDogcHVibGljIG5zSVN1
cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGlj
IGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MDdkLCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAw
eDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30K
IyA0MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01Ob2RlTGlzdC5oIgogIHZpcnR1
YWwgbnNyZXN1bHQgSXRlbShQUlVpbnQzMiBpbmRleCwgbnNJRE9NTm9kZSAqKl9yZXR2YWwpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGVuZ3RoKFBSVWludDMyICphTGVuZ3RoKSA9IDA7
Cgp9OwojIDEwNCAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2RvbS9uc0lET01OYW1lZE5vZGVNYXAuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvZG9tL25zSURPTU5hbWVkTm9kZU1hcC5oIgpjbGFzcyBuc0lET01OYW1lZE5vZGVNYXAgOiBw
dWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJ
RCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwN2IsIDB4MTViMywgMHgxMWQy
LCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJl
dHVybiBpaWQ7fQojIDQwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTU5hbWVkTm9k
ZU1hcC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TmFtZWRJdGVtKGNvbnN0IG5zQVN0cmluZyAm
IG5hbWUsIG5zSURPTU5vZGUgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dE5hbWVkSXRlbShuc0lET01Ob2RlICphcmcsIG5zSURPTU5vZGUgKipfcmV0dmFsKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IFJlbW92ZU5hbWVkSXRlbShjb25zdCBuc0FTdHJpbmcgJiBuYW1l
LCBuc0lET01Ob2RlICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJdGVtKFBS
VWludDMyIGluZGV4LCBuc0lET01Ob2RlICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRMZW5ndGgoUFJVaW50MzIgKmFMZW5ndGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0TmFtZWRJdGVtTlMoY29uc3QgbnNBU3RyaW5nICYgbmFtZXNwYWNlVVJJLCBjb25zdCBu
c0FTdHJpbmcgJiBsb2NhbE5hbWUsIG5zSURPTU5vZGUgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldE5hbWVkSXRlbU5TKG5zSURPTU5vZGUgKmFyZywgbnNJRE9NTm9kZSAq
Kl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVtb3ZlTmFtZWRJdGVtTlMoY29u
c3QgbnNBU3RyaW5nICYgbmFtZXNwYWNlVVJJLCBjb25zdCBuc0FTdHJpbmcgJiBsb2NhbE5hbWUs
IG5zSURPTU5vZGUgKipfcmV0dmFsKSA9IDA7Cgp9OwojIDEwNSAibnNET01DbGFzc0luZm8uY3Bw
IiAyCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lGb3JtLmgiIDEKIyA0
NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJRm9ybS5oIgpjbGFzcyBuc0lGb3Jt
Q29udHJvbDsKY2xhc3MgbnNJU2l6ZU9mSGFuZGxlcjsKY2xhc3MgbnNJRE9NSFRNTElucHV0RWxl
bWVudDsKY2xhc3MgbnNJUmFkaW9WaXNpdG9yOwpjbGFzcyBuc0lTaW1wbGVFbnVtZXJhdG9yOwoj
IDcwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lGb3JtLmgiCmNsYXNzIG5zSUZv
cm0gOiBwdWJsaWMgbnNJU3VwcG9ydHMKewpwdWJsaWM6CiAgc3RhdGljIGNvbnN0IG5zSUlEJiBH
ZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsgMHhiN2U5NDUxMCwgMHg0YzE5LCAw
eDExZDIsIHsgMHg4MCwgMHgzZiwgMHgwLCAweDYwLCAweDgsIDB4MTUsIDB4YTcsIDB4OTEgfSB9
OyByZXR1cm4gaWlkO30KCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBBZGRFbGVtZW50KG5zSUZv
cm1Db250cm9sKiBhRWxlbWVudCkgPSAwOwojIDkxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29u
dGVudC9uc0lGb3JtLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBBZGRFbGVtZW50VG9UYWJsZShuc0lG
b3JtQ29udHJvbCogYUVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBuc0FTdHJpbmcmIGFOYW1lKSA9IDA7CiMgMTAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29u
dGVudC9uc0lGb3JtLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRFbGVtZW50QXQoUFJJbnQzMiBh
SW5kZXgsIG5zSUZvcm1Db250cm9sKiogYUVsZW1lbnQpIGNvbnN0ID0gMDsKCgoKCgoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRFbGVtZW50Q291bnQoUFJVaW50MzIqIGFDb3VudCkgY29uc3QgPSAw
OwoKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFJlbW92ZUVsZW1lbnQobnNJRm9ybUNvbnRyb2wq
IGFFbGVtZW50KSA9IDA7CiMgMTMwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lG
b3JtLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBSZW1vdmVFbGVtZW50RnJvbVRhYmxlKG5zSUZvcm1D
b250cm9sKiBhRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgbnNBU3RyaW5nJiBhTmFtZSkgPSAwOwojIDE0MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2Nv
bnRlbnQvbnNJRm9ybS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgUmVzb2x2ZU5hbWUoY29uc3QgbnNB
U3RyaW5nJiBhTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzICoqYVJl
c3VsdCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgSW5kZXhPZkNvbnRyb2wobnNJRm9y
bUNvbnRyb2wqIGFDb250cm9sLCBQUkludDMyKiBhSW5kZXgpID0gMDsKCgoKCgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldENvbnRyb2xFbnVtZXJhdG9yKG5zSVNpbXBsZUVudW1lcmF0b3IqKiBhRW51
bSkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgT25TdWJtaXRDbGlja0JlZ2luKCkgPSAw
OwogIHZpcnR1YWwgbnNyZXN1bHQgT25TdWJtaXRDbGlja0VuZCgpID0gMDsKCgoKCgoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBGbHVzaFBlbmRpbmdTdWJtaXNzaW9uKCkgPSAwOwoKCgoKCgogIHZpcnR1
YWwgbnNyZXN1bHQgRm9yZ2V0UGVuZGluZ1N1Ym1pc3Npb24oKSA9IDA7Cn07CiMgMTA4ICJuc0RP
TUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lG
b3JtQ29udHJvbC5oIiAxCiMgNDIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSUZv
cm1Db250cm9sLmgiCmNsYXNzIG5zSURPTUhUTUxGb3JtRWxlbWVudDsKY2xhc3MgbnNJUHJlc0Nv
bnRleHQ7CmNsYXNzIG5zSVByZXNTdGF0ZTsKY2xhc3MgbnNJQ29udGVudDsKY2xhc3MgbnNTdHJp
bmc7CmNsYXNzIG5zSUZvcm1Qcm9jZXNzb3I7CmNsYXNzIG5zSUZvcm1TdWJtaXNzaW9uOwojIDgz
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lGb3JtQ29udHJvbC5oIgpjbGFzcyBu
c0lGb3JtQ29udHJvbCA6IHB1YmxpYyBuc0lTdXBwb3J0cwp7CnB1YmxpYzoKCiAgc3RhdGljIGNv
bnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsgMHgyODJmZjQ0
MCwgMHhjZDdlLCAweDExZDEsIHsweDg5LCAweGFkLCAweDAwLCAweDYwLCAweDA4LCAweDkxLCAw
eDFiLCAweDgxfSB9OyByZXR1cm4gaWlkO30KCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Rm9y
bShuc0lET01IVE1MRm9ybUVsZW1lbnQqKiBhRm9ybSkgPSAwOwoKCgoKCgoKICB2aXJ0dWFsIG5z
cmVzdWx0IFNldEZvcm0obnNJRE9NSFRNTEZvcm1FbGVtZW50KiBhRm9ybSwKICAgICAgICAgICAg
ICAgICAgICAgUFJCb29sIGFSZW1vdmVGcm9tRm9ybSA9IDEpID0gMDsKCgoKCgogIHZpcnR1YWwg
UFJJbnQzMiBHZXRUeXBlKCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZXNldCgpID0g
MDsKIyAxMjQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSUZvcm1Db250cm9sLmgi
CiAgdmlydHVhbCBuc3Jlc3VsdCBTdWJtaXROYW1lc1ZhbHVlcyhuc0lGb3JtU3VibWlzc2lvbiog
YUZvcm1TdWJtaXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQ29udGVu
dCogYVN1Ym1pdEVsZW1lbnQpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNhdmVTdGF0
ZSgpID0gMDsKIyAxNDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSUZvcm1Db250
cm9sLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBSZXN0b3JlU3RhdGUobnNJUHJlc1N0YXRlKiBhU3Rh
dGUpID0gMDsKfTsKIyAxMDkgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTEZvcm1FbGVtZW50LmgiIDEKIyAxMCAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MRm9ybUVsZW1lbnQuaCIKIyAxICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxFbGVtZW50LmgiIDEKIyAxMCAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2RvbS9uc0lET01IVE1MRWxlbWVudC5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9kb20vbnNJRE9NRWxlbWVudC5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9k
b20vbnNJRE9NRWxlbWVudC5oIgpjbGFzcyBuc0lET01FbGVtZW50IDogcHVibGljIG5zSURPTU5v
ZGUgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29u
c3QgbnNJSUQgaWlkID0gezB4YTZjZjkwNzgsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUs
IDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQojIDQw
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUVsZW1lbnQuaCIKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldFRhZ05hbWUobnNBU3RyaW5nICYgYVRhZ05hbWUpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0QXR0cmlidXRlKGNvbnN0IG5zQVN0cmluZyAmIG5hbWUsIG5zQVN0cmluZyAm
IF9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QXR0cmlidXRlKGNvbnN0IG5z
QVN0cmluZyAmIG5hbWUsIGNvbnN0IG5zQVN0cmluZyAmIHZhbHVlKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IFJlbW92ZUF0dHJpYnV0ZShjb25zdCBuc0FTdHJpbmcgJiBuYW1lKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldEF0dHJpYnV0ZU5vZGUoY29uc3QgbnNBU3RyaW5nICYgbmFt
ZSwgbnNJRE9NQXR0ciAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QXR0
cmlidXRlTm9kZShuc0lET01BdHRyICpuZXdBdHRyLCBuc0lET01BdHRyICoqX3JldHZhbCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZW1vdmVBdHRyaWJ1dGVOb2RlKG5zSURPTUF0dHIgKm9s
ZEF0dHIsIG5zSURPTUF0dHIgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dEVsZW1lbnRzQnlUYWdOYW1lKGNvbnN0IG5zQVN0cmluZyAmIG5hbWUsIG5zSURPTU5vZGVMaXN0
ICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBdHRyaWJ1dGVOUyhjb25z
dCBuc0FTdHJpbmcgJiBuYW1lc3BhY2VVUkksIGNvbnN0IG5zQVN0cmluZyAmIGxvY2FsTmFtZSwg
bnNBU3RyaW5nICYgX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRBdHRyaWJ1
dGVOUyhjb25zdCBuc0FTdHJpbmcgJiBuYW1lc3BhY2VVUkksIGNvbnN0IG5zQVN0cmluZyAmIHF1
YWxpZmllZE5hbWUsIGNvbnN0IG5zQVN0cmluZyAmIHZhbHVlKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IFJlbW92ZUF0dHJpYnV0ZU5TKGNvbnN0IG5zQVN0cmluZyAmIG5hbWVzcGFjZVVSSSwg
Y29uc3QgbnNBU3RyaW5nICYgbG9jYWxOYW1lKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dEF0dHJpYnV0ZU5vZGVOUyhjb25zdCBuc0FTdHJpbmcgJiBuYW1lc3BhY2VVUkksIGNvbnN0IG5z
QVN0cmluZyAmIGxvY2FsTmFtZSwgbnNJRE9NQXR0ciAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0QXR0cmlidXRlTm9kZU5TKG5zSURPTUF0dHIgKm5ld0F0dHIsIG5zSURP
TUF0dHIgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEVsZW1lbnRzQnlU
YWdOYW1lTlMoY29uc3QgbnNBU3RyaW5nICYgbmFtZXNwYWNlVVJJLCBjb25zdCBuc0FTdHJpbmcg
JiBsb2NhbE5hbWUsIG5zSURPTU5vZGVMaXN0ICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBIYXNBdHRyaWJ1dGUoY29uc3QgbnNBU3RyaW5nICYgbmFtZSwgUFJCb29sICpfcmV0
dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEhhc0F0dHJpYnV0ZU5TKGNvbnN0IG5zQVN0
cmluZyAmIG5hbWVzcGFjZVVSSSwgY29uc3QgbnNBU3RyaW5nICYgbG9jYWxOYW1lLCBQUkJvb2wg
Kl9yZXR2YWwpID0gMDsKCn07CiMgMTEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9N
SFRNTEVsZW1lbnQuaCIgMgojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhU
TUxFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxFbGVtZW50IDogcHVibGljIG5zSURPTUVsZW1l
bnQgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29u
c3QgbnNJSUQgaWlkID0gezB4YTZjZjkwODUsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUs
IDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQojIDQx
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxFbGVtZW50LmgiCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRJZChuc0FTdHJpbmcgJiBhSWQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0
IFNldElkKGNvbnN0IG5zQVN0cmluZyAmIGFJZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRUaXRsZShuc0FTdHJpbmcgJiBhVGl0bGUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFRp
dGxlKGNvbnN0IG5zQVN0cmluZyAmIGFUaXRsZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRMYW5nKG5zQVN0cmluZyAmIGFMYW5nKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRMYW5n
KGNvbnN0IG5zQVN0cmluZyAmIGFMYW5nKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERp
cihuc0FTdHJpbmcgJiBhRGlyKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXREaXIoY29uc3Qg
bnNBU3RyaW5nICYgYURpcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDbGFzc05hbWUo
bnNBU3RyaW5nICYgYUNsYXNzTmFtZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q2xhc3NO
YW1lKGNvbnN0IG5zQVN0cmluZyAmIGFDbGFzc05hbWUpID0gMDsKCn07CiMgMTEgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTEZvcm1FbGVtZW50LmgiIDIKIyAyNSAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MRm9ybUVsZW1lbnQuaCIKY2xhc3MgbnNJRE9N
SFRNTEZvcm1FbGVtZW50IDogcHVibGljIG5zSURPTUhUTUxFbGVtZW50IHsKIHB1YmxpYzoKCiAg
c3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsw
eGE2Y2Y5MDhmLCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVm
LCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KIyA0MCAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2RvbS9uc0lET01IVE1MRm9ybUVsZW1lbnQuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dEVsZW1lbnRzKG5zSURPTUhUTUxDb2xsZWN0aW9uICogKmFFbGVtZW50cykgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRMZW5ndGgoUFJJbnQzMiAqYUxlbmd0aCkgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXROYW1lKG5zQVN0cmluZyAmIGFOYW1lKSA9IDA7CiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXROYW1lKGNvbnN0IG5zQVN0cmluZyAmIGFOYW1lKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldEFjY2VwdENoYXJzZXQobnNBU3RyaW5nICYgYUFjY2VwdENoYXJzZXQpID0gMDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFjY2VwdENoYXJzZXQoY29uc3QgbnNBU3RyaW5nICYgYUFj
Y2VwdENoYXJzZXQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QWN0aW9uKG5zQVN0cmlu
ZyAmIGFBY3Rpb24pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFjdGlvbihjb25zdCBuc0FT
dHJpbmcgJiBhQWN0aW9uKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEVuY3R5cGUobnNB
U3RyaW5nICYgYUVuY3R5cGUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEVuY3R5cGUoY29u
c3QgbnNBU3RyaW5nICYgYUVuY3R5cGUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TWV0
aG9kKG5zQVN0cmluZyAmIGFNZXRob2QpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1ldGhv
ZChjb25zdCBuc0FTdHJpbmcgJiBhTWV0aG9kKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dFRhcmdldChuc0FTdHJpbmcgJiBhVGFyZ2V0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRU
YXJnZXQoY29uc3QgbnNBU3RyaW5nICYgYVRhcmdldCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBTdWJtaXQodm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZXNldCh2b2lkKSA9IDA7
Cgp9OwojIDExMCAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2RvbS9uc0lET01OU0hUTUxGb3JtQ29udHJvbExpc3QuaCIgMQojIDI1ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvZG9tL25zSURPTU5TSFRNTEZvcm1Db250cm9sTGlzdC5oIgpjbGFzcyBuc0lE
T01OU0hUTUxGb3JtQ29udHJvbExpc3QgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoK
ICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0g
ezB4YTZjZjkxMWEsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4
NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBOYW1lZEl0ZW0oY29uc3QgbnNBU3RyaW5nICYgbmFtZSwgbnNJU3VwcG9ydHMgKipfcmV0dmFs
KSA9IDA7Cgp9OwojIDExMSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2RvbS9uc0lET01IVE1MQ29sbGVjdGlvbi5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTENvbGxlY3Rpb24uaCIKY2xhc3MgbnNJRE9NSFRNTENv
bGxlY3Rpb24gOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3Qg
bnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwODMsIDB4
MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQs
IDB4MzIgfX07IHJldHVybiBpaWQ7fQojIDQwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25z
SURPTUhUTUxDb2xsZWN0aW9uLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMZW5ndGgoUFJVaW50
MzIgKmFMZW5ndGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSXRlbShQUlVpbnQzMiBpbmRl
eCwgbnNJRE9NTm9kZSAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgTmFtZWRJ
dGVtKGNvbnN0IG5zQVN0cmluZyAmIG5hbWUsIG5zSURPTU5vZGUgKipfcmV0dmFsKSA9IDA7Cgp9
OwojIDExMiAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L2NvbnRlbnQvbnNJSFRNTERvY3VtZW50LmgiIDEKIyA0MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L2NvbnRlbnQvbnNJSFRNTERvY3VtZW50LmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xh
eW91dC9uc0NvbXBhdGliaWxpdHkuaCIgMQojIDQwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5
b3V0L25zQ29tcGF0aWJpbGl0eS5oIgplbnVtIG5zQ29tcGF0aWJpbGl0eSB7CiAgZUNvbXBhdGli
aWxpdHlfRnVsbFN0YW5kYXJkcyA9IDEsCiAgZUNvbXBhdGliaWxpdHlfQWxtb3N0U3RhbmRhcmRz
ID0gMiwKICBlQ29tcGF0aWJpbGl0eV9OYXZRdWlya3MgPSAzCn07CiMgNDMgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9jb250ZW50L25zSUhUTUxEb2N1bWVudC5oIiAyCgpjbGFzcyBuc0lJbWFnZU1h
cDsKY2xhc3MgbnNTdHJpbmc7CmNsYXNzIG5zSURPTU5vZGVMaXN0OwpjbGFzcyBuc0lET01IVE1M
Q29sbGVjdGlvbjsKY2xhc3MgbnNJRE9NSFRNTEZvcm1FbGVtZW50OwpjbGFzcyBuc0lET01IVE1M
TWFwRWxlbWVudDsKY2xhc3MgbnNJSFRNTFN0eWxlU2hlZXQ7CmNsYXNzIG5zSVN0eWxlU2hlZXQ7
CmNsYXNzIG5zSUNTU0xvYWRlcjsKY2xhc3MgbnNJQ29udGVudDsKY2xhc3MgbnNJRE9NSFRNTEJv
ZHlFbGVtZW50OwojIDY0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lIVE1MRG9j
dW1lbnQuaCIKY2xhc3MgbnNJSFRNTERvY3VtZW50IDogcHVibGljIG5zSVN1cHBvcnRzIHsKcHVi
bGljOgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBp
aWQgPSB7MHhiMmE4NDhiMCwgMHhkMGE5LCAweDExZDEsIHsweDg5LCAweGIxLCAweDAwLCAweDYw
LCAweDA4LCAweDkxLCAweDFiLCAweDgxfX07IHJldHVybiBpaWQ7fQoKICB2aXJ0dWFsIG5zcmVz
dWx0IEFkZEltYWdlTWFwKG5zSURPTUhUTUxNYXBFbGVtZW50KiBhTWFwKSA9IDA7CgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0SW1hZ2VNYXAoY29uc3QgbnNBU3RyaW5nJiBhTWFwTmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgIG5zSURPTUhUTUxNYXBFbGVtZW50KiogYVJlc3VsdCkgPSAwOwoK
ICB2aXJ0dWFsIG5zcmVzdWx0IFJlbW92ZUltYWdlTWFwKG5zSURPTUhUTUxNYXBFbGVtZW50KiBh
TWFwKSA9IDA7CgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TGFzdE1vZGlmaWVkKGNvbnN0IG5zQVN0
cmluZyYgYUxhc3RNb2RpZmllZCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UmVmZXJyZXIo
Y29uc3QgbnNBU3RyaW5nJiBhUmVmZXJyZXIpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRDb21wYXRpYmlsaXR5TW9kZShuc0NvbXBhdGliaWxpdHkmIGFNb2RlKSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRDb21wYXRpYmlsaXR5TW9kZShuc0NvbXBhdGliaWxpdHkgYU1vZGUpID0g
MDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBXYXNEb21haW5TZXQoUFJCb29sKiBhRG9tYWluV2Fz
U2V0KSA9IDA7CgogIHZpcnR1YWwgbnNyZXN1bHQgUmVzb2x2ZU5hbWUoY29uc3QgbnNBU3RyaW5n
JiBhTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIG5zSURPTUhUTUxGb3JtRWxlbWVudCAq
YUZvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdXBwb3J0cyAqKmFSZXN1bHQpID0g
MDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGb3JtQ29udHJvbEVsZW1lbnRzKG5zSURPTU5vZGVM
aXN0KiogYVJldHVybikgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEFkZGVkRm9ybSgpID0g
MDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZW1vdmVkRm9ybSgpID0gMDsKCgoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXROdW1Gb3Jtc1N5bmNocm9ub3VzKFBSSW50MzIqIGFOdW1Gb3JtcykgPSAw
OwoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEJvZHlFbGVtZW50KG5zSURPTUhUTUxCb2R5RWxlbWVu
dCoqIGFCb2R5KSA9IDA7CgogIHZpcnR1YWwgUFJCb29sIElzV3JpdGluZygpID0gMDsKCn07CiMg
MTEzICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9k
b20vbnNJRE9NSFRNTFNlbGVjdEVsZW1lbnQuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvZG9tL25zSURPTUhUTUxTZWxlY3RFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxTZWxlY3RF
bGVtZW50IDogcHVibGljIG5zSURPTUhUTUxFbGVtZW50IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNv
bnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MDkw
LCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAw
eGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VHlwZShu
c0FTdHJpbmcgJiBhVHlwZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTZWxlY3RlZElu
ZGV4KFBSSW50MzIgKmFTZWxlY3RlZEluZGV4KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRT
ZWxlY3RlZEluZGV4KFBSSW50MzIgYVNlbGVjdGVkSW5kZXgpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0VmFsdWUobnNBU3RyaW5nICYgYVZhbHVlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRWYWx1ZShjb25zdCBuc0FTdHJpbmcgJiBhVmFsdWUpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0TGVuZ3RoKFBSVWludDMyICphTGVuZ3RoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRMZW5ndGgoUFJVaW50MzIgYUxlbmd0aCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRGb3JtKG5zSURPTUhUTUxGb3JtRWxlbWVudCAqICphRm9ybSkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRPcHRpb25zKG5zSURPTUhUTUxDb2xsZWN0aW9uICogKmFPcHRpb25zKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERpc2FibGVkKFBSQm9vbCAqYURpc2FibGVkKSA9IDA7
CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXREaXNhYmxlZChQUkJvb2wgYURpc2FibGVkKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldE11bHRpcGxlKFBSQm9vbCAqYU11bHRpcGxlKSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXRNdWx0aXBsZShQUkJvb2wgYU11bHRpcGxlKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldE5hbWUobnNBU3RyaW5nICYgYU5hbWUpID0gMDsKICB2aXJ0dWFs
IG5zcmVzdWx0IFNldE5hbWUoY29uc3QgbnNBU3RyaW5nICYgYU5hbWUpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0U2l6ZShQUkludDMyICphU2l6ZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0U2l6ZShQUkludDMyIGFTaXplKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFRh
YkluZGV4KFBSSW50MzIgKmFUYWJJbmRleCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VGFi
SW5kZXgoUFJJbnQzMiBhVGFiSW5kZXgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQWRkKG5z
SURPTUhUTUxFbGVtZW50ICplbGVtZW50LCBuc0lET01IVE1MRWxlbWVudCAqYmVmb3JlKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFJlbW92ZShQUkludDMyIGluZGV4KSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEJsdXIodm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBGb2N1cyh2
b2lkKSA9IDA7Cgp9OwojIDExNiAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU1hCTEZvcm1Db250cm9sLmgiIDEKIyAxNyAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU1hCTEZvcm1Db250cm9sLmgiCmNsYXNzIG5zSUJv
eE9iamVjdDsKIyAyNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU1hCTEZvcm1D
b250cm9sLmgiCmNsYXNzIG5zSURPTU5TWEJMRm9ybUNvbnRyb2wgOiBwdWJsaWMgbnNJU3VwcG9y
dHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29u
c3QgbnNJSUQgaWlkID0gezB4MWMyOGVkNjYsIDB4MWRkMiwgMHgxMWIyLCB7IDB4OTUsIDB4YWYs
IDB4ZTIsIDB4Y2YsIDB4MTAsIDB4OTMsIDB4MWEsIDB4ZGIgfX07IHJldHVybiBpaWQ7fQoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRCb3hPYmplY3QobnNJQm94T2JqZWN0ICogKmFCb3hPYmplY3Qp
ID0gMDsKCn07CiMgMTE3ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKCgojIDEgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luSW5zdGFuY2UuaCIgMQojIDE0ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpbkluc3RhbmNlLmgiCiMgMSAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5TdHJlYW1MaXN0ZW5lci5oIiAxCiMgMTQgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luU3RyZWFtTGlzdGVuZXIuaCIKIyAxICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zcGx1Z2lucm9vdC5oIiAxCiMgMTUgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luU3RyZWFtTGlzdGVuZXIuaCIgMgoKCgoj
IDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luU3RyZWFtSW5mby5oIiAx
CiMgMjEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luU3RyZWFtSW5mby5o
IgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNwbHVnaW5kZWZzLmgiIDEKIyA1
OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc3BsdWdpbmRlZnMuaCIKIyAxICIvdXNy
L1gxMVI2L2luY2x1ZGUvWDExL1hsaWIuaCIgMQojIDU1ICIvdXNyL1gxMVI2L2luY2x1ZGUvWDEx
L1hsaWIuaCIKIyAxICIvdXNyL1gxMVI2L2luY2x1ZGUvWDExL1guaCIgMQojIDcxICIvdXNyL1gx
MVI2L2luY2x1ZGUvWDExL1guaCIKdHlwZWRlZiB1bnNpZ25lZCBsb25nIFhJRDsKCgoKdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIE1hc2s7CgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBBdG9tOwoKdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIFZpc3VhbElEOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgVGltZTsK
IyAxMDEgIi91c3IvWDExUjYvaW5jbHVkZS9YMTEvWC5oIgp0eXBlZGVmIFhJRCBXaW5kb3c7CnR5
cGVkZWYgWElEIERyYXdhYmxlOwoKCnR5cGVkZWYgWElEIEZvbnQ7Cgp0eXBlZGVmIFhJRCBQaXht
YXA7CnR5cGVkZWYgWElEIEN1cnNvcjsKdHlwZWRlZiBYSUQgQ29sb3JtYXA7CnR5cGVkZWYgWElE
IEdDb250ZXh0Owp0eXBlZGVmIFhJRCBLZXlTeW07Cgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgS2V5
Q29kZTsKIyA1NiAiL3Vzci9YMTFSNi9pbmNsdWRlL1gxMS9YbGliLmgiIDIKCgojIDEgIi91c3Iv
WDExUjYvaW5jbHVkZS9YMTEvWGZ1bmNwcm90by5oIiAxCiMgNTkgIi91c3IvWDExUjYvaW5jbHVk
ZS9YMTEvWGxpYi5oIiAyCiMgMSAiL3Vzci9YMTFSNi9pbmNsdWRlL1gxMS9Yb3NkZWZzLmgiIDEK
IyA2MCAiL3Vzci9YMTFSNi9pbmNsdWRlL1gxMS9YbGliLmgiIDIKIyA3MiAiL3Vzci9YMTFSNi9p
bmNsdWRlL1gxMS9YbGliLmgiCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdu
dS8zLjIuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyA3MyAiL3Vzci9YMTFSNi9pbmNsdWRlL1gx
MS9YbGliLmgiIDIKIyA5NCAiL3Vzci9YMTFSNi9pbmNsdWRlL1gxMS9YbGliLmgiCnR5cGVkZWYg
Y2hhciAqWFBvaW50ZXI7CiMgMTY2ICIvdXNyL1gxMVI2L2luY2x1ZGUvWDExL1hsaWIuaCIKdHlw
ZWRlZiBzdHJ1Y3QgX1hFeHREYXRhIHsKICAgICAgICBpbnQgbnVtYmVyOwogICAgICAgIHN0cnVj
dCBfWEV4dERhdGEgKm5leHQ7CiAgICAgICAgaW50ICgqZnJlZV9wcml2YXRlKSgKCiAgICAgICAg
c3RydWN0IF9YRXh0RGF0YSAqZXh0ZW5zaW9uCgogICAgICAgICk7CiAgICAgICAgWFBvaW50ZXIg
cHJpdmF0ZV9kYXRhOwp9IFhFeHREYXRhOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGlu
dCBleHRlbnNpb247CiAgICAgICAgaW50IG1ham9yX29wY29kZTsKICAgICAgICBpbnQgZmlyc3Rf
ZXZlbnQ7CiAgICAgICAgaW50IGZpcnN0X2Vycm9yOwp9IFhFeHRDb2RlczsKCgoKCgp0eXBlZGVm
IHN0cnVjdCB7CiAgICBpbnQgZGVwdGg7CiAgICBpbnQgYml0c19wZXJfcGl4ZWw7CiAgICBpbnQg
c2NhbmxpbmVfcGFkOwp9IFhQaXhtYXBGb3JtYXRWYWx1ZXM7CgoKCgoKdHlwZWRlZiBzdHJ1Y3Qg
ewogICAgICAgIGludCBmdW5jdGlvbjsKICAgICAgICB1bnNpZ25lZCBsb25nIHBsYW5lX21hc2s7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBmb3JlZ3JvdW5kOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
YmFja2dyb3VuZDsKICAgICAgICBpbnQgbGluZV93aWR0aDsKICAgICAgICBpbnQgbGluZV9zdHls
ZTsKICAgICAgICBpbnQgY2FwX3N0eWxlOwoKICAgICAgICBpbnQgam9pbl9zdHlsZTsKICAgICAg
ICBpbnQgZmlsbF9zdHlsZTsKCiAgICAgICAgaW50IGZpbGxfcnVsZTsKICAgICAgICBpbnQgYXJj
X21vZGU7CiAgICAgICAgUGl4bWFwIHRpbGU7CiAgICAgICAgUGl4bWFwIHN0aXBwbGU7CiAgICAg
ICAgaW50IHRzX3hfb3JpZ2luOwogICAgICAgIGludCB0c195X29yaWdpbjsKICAgICAgICBGb250
IGZvbnQ7CiAgICAgICAgaW50IHN1YndpbmRvd19tb2RlOwogICAgICAgIGludCBncmFwaGljc19l
eHBvc3VyZXM7CiAgICAgICAgaW50IGNsaXBfeF9vcmlnaW47CiAgICAgICAgaW50IGNsaXBfeV9v
cmlnaW47CiAgICAgICAgUGl4bWFwIGNsaXBfbWFzazsKICAgICAgICBpbnQgZGFzaF9vZmZzZXQ7
CiAgICAgICAgY2hhciBkYXNoZXM7Cn0gWEdDVmFsdWVzOwoKCgoKCgp0eXBlZGVmIHN0cnVjdCBf
WEdDCgoKCgoKCgoqR0M7CgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgWEV4dERhdGEgKmV4
dF9kYXRhOwogICAgICAgIFZpc3VhbElEIHZpc3VhbGlkOwoKICAgICAgICBpbnQgY19jbGFzczsK
CgoKICAgICAgICB1bnNpZ25lZCBsb25nIHJlZF9tYXNrLCBncmVlbl9tYXNrLCBibHVlX21hc2s7
CiAgICAgICAgaW50IGJpdHNfcGVyX3JnYjsKICAgICAgICBpbnQgbWFwX2VudHJpZXM7Cn0gVmlz
dWFsOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBkZXB0aDsKICAgICAgICBpbnQg
bnZpc3VhbHM7CiAgICAgICAgVmlzdWFsICp2aXN1YWxzOwp9IERlcHRoOwoKCgoKCgoKc3RydWN0
IF9YRGlzcGxheTsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBYRXh0RGF0YSAqZXh0X2RhdGE7
CiAgICAgICAgc3RydWN0IF9YRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cgcm9vdDsK
ICAgICAgICBpbnQgd2lkdGgsIGhlaWdodDsKICAgICAgICBpbnQgbXdpZHRoLCBtaGVpZ2h0Owog
ICAgICAgIGludCBuZGVwdGhzOwogICAgICAgIERlcHRoICpkZXB0aHM7CiAgICAgICAgaW50IHJv
b3RfZGVwdGg7CiAgICAgICAgVmlzdWFsICpyb290X3Zpc3VhbDsKICAgICAgICBHQyBkZWZhdWx0
X2djOwogICAgICAgIENvbG9ybWFwIGNtYXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyB3aGl0ZV9w
aXhlbDsKICAgICAgICB1bnNpZ25lZCBsb25nIGJsYWNrX3BpeGVsOwogICAgICAgIGludCBtYXhf
bWFwcywgbWluX21hcHM7CiAgICAgICAgaW50IGJhY2tpbmdfc3RvcmU7CiAgICAgICAgaW50IHNh
dmVfdW5kZXJzOwogICAgICAgIGxvbmcgcm9vdF9pbnB1dF9tYXNrOwp9IFNjcmVlbjsKCgoKCnR5
cGVkZWYgc3RydWN0IHsKICAgICAgICBYRXh0RGF0YSAqZXh0X2RhdGE7CiAgICAgICAgaW50IGRl
cHRoOwogICAgICAgIGludCBiaXRzX3Blcl9waXhlbDsKICAgICAgICBpbnQgc2NhbmxpbmVfcGFk
Owp9IFNjcmVlbkZvcm1hdDsKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgIFBpeG1hcCBiYWNrZ3Jv
dW5kX3BpeG1hcDsKICAgIHVuc2lnbmVkIGxvbmcgYmFja2dyb3VuZF9waXhlbDsKICAgIFBpeG1h
cCBib3JkZXJfcGl4bWFwOwogICAgdW5zaWduZWQgbG9uZyBib3JkZXJfcGl4ZWw7CiAgICBpbnQg
Yml0X2dyYXZpdHk7CiAgICBpbnQgd2luX2dyYXZpdHk7CiAgICBpbnQgYmFja2luZ19zdG9yZTsK
ICAgIHVuc2lnbmVkIGxvbmcgYmFja2luZ19wbGFuZXM7CiAgICB1bnNpZ25lZCBsb25nIGJhY2tp
bmdfcGl4ZWw7CiAgICBpbnQgc2F2ZV91bmRlcjsKICAgIGxvbmcgZXZlbnRfbWFzazsKICAgIGxv
bmcgZG9fbm90X3Byb3BhZ2F0ZV9tYXNrOwogICAgaW50IG92ZXJyaWRlX3JlZGlyZWN0OwogICAg
Q29sb3JtYXAgY29sb3JtYXA7CiAgICBDdXJzb3IgY3Vyc29yOwp9IFhTZXRXaW5kb3dBdHRyaWJ1
dGVzOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgaW50IHgsIHk7CiAgICBpbnQgd2lkdGgsIGhlaWdo
dDsKICAgIGludCBib3JkZXJfd2lkdGg7CiAgICBpbnQgZGVwdGg7CiAgICBWaXN1YWwgKnZpc3Vh
bDsKICAgIFdpbmRvdyByb290OwoKICAgIGludCBjX2NsYXNzOwoKCgogICAgaW50IGJpdF9ncmF2
aXR5OwogICAgaW50IHdpbl9ncmF2aXR5OwogICAgaW50IGJhY2tpbmdfc3RvcmU7CiAgICB1bnNp
Z25lZCBsb25nIGJhY2tpbmdfcGxhbmVzOwogICAgdW5zaWduZWQgbG9uZyBiYWNraW5nX3BpeGVs
OwogICAgaW50IHNhdmVfdW5kZXI7CiAgICBDb2xvcm1hcCBjb2xvcm1hcDsKICAgIGludCBtYXBf
aW5zdGFsbGVkOwogICAgaW50IG1hcF9zdGF0ZTsKICAgIGxvbmcgYWxsX2V2ZW50X21hc2tzOwog
ICAgbG9uZyB5b3VyX2V2ZW50X21hc2s7CiAgICBsb25nIGRvX25vdF9wcm9wYWdhdGVfbWFzazsK
ICAgIGludCBvdmVycmlkZV9yZWRpcmVjdDsKICAgIFNjcmVlbiAqc2NyZWVuOwp9IFhXaW5kb3dB
dHRyaWJ1dGVzOwoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IGZhbWlseTsKICAg
ICAgICBpbnQgbGVuZ3RoOwogICAgICAgIGNoYXIgKmFkZHJlc3M7Cn0gWEhvc3RBZGRyZXNzOwoK
CgoKdHlwZWRlZiBzdHJ1Y3QgX1hJbWFnZSB7CiAgICBpbnQgd2lkdGgsIGhlaWdodDsKICAgIGlu
dCB4b2Zmc2V0OwogICAgaW50IGZvcm1hdDsKICAgIGNoYXIgKmRhdGE7CiAgICBpbnQgYnl0ZV9v
cmRlcjsKICAgIGludCBiaXRtYXBfdW5pdDsKICAgIGludCBiaXRtYXBfYml0X29yZGVyOwogICAg
aW50IGJpdG1hcF9wYWQ7CiAgICBpbnQgZGVwdGg7CiAgICBpbnQgYnl0ZXNfcGVyX2xpbmU7CiAg
ICBpbnQgYml0c19wZXJfcGl4ZWw7CiAgICB1bnNpZ25lZCBsb25nIHJlZF9tYXNrOwogICAgdW5z
aWduZWQgbG9uZyBncmVlbl9tYXNrOwogICAgdW5zaWduZWQgbG9uZyBibHVlX21hc2s7CiAgICBY
UG9pbnRlciBvYmRhdGE7CiAgICBzdHJ1Y3QgZnVuY3MgewoKICAgICAgICBzdHJ1Y3QgX1hJbWFn
ZSAqKCpjcmVhdGVfaW1hZ2UpKAogICAgICAgICAgICAgICAgc3RydWN0IF9YRGlzcGxheSogLAog
ICAgICAgICAgICAgICAgVmlzdWFsKiAsCiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgLAog
ICAgICAgICAgICAgICAgaW50ICwKICAgICAgICAgICAgICAgIGludCAsCiAgICAgICAgICAgICAg
ICBjaGFyKiAsCiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgLAogICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50ICwKICAgICAgICAgICAgICAgIGludCAsCiAgICAgICAgICAgICAgICBpbnQg
KTsKICAgICAgICBpbnQgKCpkZXN0cm95X2ltYWdlKSAoc3RydWN0IF9YSW1hZ2UgKik7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyAoKmdldF9waXhlbCkgKHN0cnVjdCBfWEltYWdlICosIGludCwgaW50
KTsKICAgICAgICBpbnQgKCpwdXRfcGl4ZWwpIChzdHJ1Y3QgX1hJbWFnZSAqLCBpbnQsIGludCwg
dW5zaWduZWQgbG9uZyk7CiAgICAgICAgc3RydWN0IF9YSW1hZ2UgKigqc3ViX2ltYWdlKShzdHJ1
Y3QgX1hJbWFnZSAqLCBpbnQsIGludCwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQpOwogICAg
ICAgIGludCAoKmFkZF9waXhlbCkgKHN0cnVjdCBfWEltYWdlICosIGxvbmcpOwojIDQxMiAiL3Vz
ci9YMTFSNi9pbmNsdWRlL1gxMS9YbGliLmgiCiAgICAgICAgfSBmOwp9IFhJbWFnZTsKCgoKCnR5
cGVkZWYgc3RydWN0IHsKICAgIGludCB4LCB5OwogICAgaW50IHdpZHRoLCBoZWlnaHQ7CiAgICBp
bnQgYm9yZGVyX3dpZHRoOwogICAgV2luZG93IHNpYmxpbmc7CiAgICBpbnQgc3RhY2tfbW9kZTsK
fSBYV2luZG93Q2hhbmdlczsKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBs
b25nIHBpeGVsOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHJlZCwgZ3JlZW4sIGJsdWU7CiAgICAg
ICAgY2hhciBmbGFnczsKICAgICAgICBjaGFyIHBhZDsKfSBYQ29sb3I7CgoKCgoKCnR5cGVkZWYg
c3RydWN0IHsKICAgIHNob3J0IHgxLCB5MSwgeDIsIHkyOwp9IFhTZWdtZW50OwoKdHlwZWRlZiBz
dHJ1Y3QgewogICAgc2hvcnQgeCwgeTsKfSBYUG9pbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBz
aG9ydCB4LCB5OwogICAgdW5zaWduZWQgc2hvcnQgd2lkdGgsIGhlaWdodDsKfSBYUmVjdGFuZ2xl
OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgc2hvcnQgeCwgeTsKICAgIHVuc2lnbmVkIHNob3J0IHdp
ZHRoLCBoZWlnaHQ7CiAgICBzaG9ydCBhbmdsZTEsIGFuZ2xlMjsKfSBYQXJjOwoKCgoKdHlwZWRl
ZiBzdHJ1Y3QgewogICAgICAgIGludCBrZXlfY2xpY2tfcGVyY2VudDsKICAgICAgICBpbnQgYmVs
bF9wZXJjZW50OwogICAgICAgIGludCBiZWxsX3BpdGNoOwogICAgICAgIGludCBiZWxsX2R1cmF0
aW9uOwogICAgICAgIGludCBsZWQ7CiAgICAgICAgaW50IGxlZF9tb2RlOwogICAgICAgIGludCBr
ZXk7CiAgICAgICAgaW50IGF1dG9fcmVwZWF0X21vZGU7Cn0gWEtleWJvYXJkQ29udHJvbDsKCgoK
dHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBrZXlfY2xpY2tfcGVyY2VudDsKICAgICAgICBp
bnQgYmVsbF9wZXJjZW50OwogICAgICAgIHVuc2lnbmVkIGludCBiZWxsX3BpdGNoLCBiZWxsX2R1
cmF0aW9uOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbGVkX21hc2s7CiAgICAgICAgaW50IGdsb2Jh
bF9hdXRvX3JlcGVhdDsKICAgICAgICBjaGFyIGF1dG9fcmVwZWF0c1szMl07Cn0gWEtleWJvYXJk
U3RhdGU7CgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBUaW1lIHRpbWU7CiAgICAgICAgc2hv
cnQgeCwgeTsKfSBYVGltZUNvb3JkOwoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IG1h
eF9rZXlwZXJtb2Q7CiAgICAgICAgS2V5Q29kZSAqbW9kaWZpZXJtYXA7Cn0gWE1vZGlmaWVyS2V5
bWFwOwojIDUwNiAiL3Vzci9YMTFSNi9pbmNsdWRlL1gxMS9YbGliLmgiCnR5cGVkZWYgc3RydWN0
IF9YRGlzcGxheSBEaXNwbGF5OwoKCnN0cnVjdCBfWFByaXZhdGU7CnN0cnVjdCBfWHJtSGFzaEJ1
Y2tldFJlYzsKCnR5cGVkZWYgc3RydWN0CgoKCnsKICAgICAgICBYRXh0RGF0YSAqZXh0X2RhdGE7
CiAgICAgICAgc3RydWN0IF9YUHJpdmF0ZSAqcHJpdmF0ZTE7CiAgICAgICAgaW50IGZkOwogICAg
ICAgIGludCBwcml2YXRlMjsKICAgICAgICBpbnQgcHJvdG9fbWFqb3JfdmVyc2lvbjsKICAgICAg
ICBpbnQgcHJvdG9fbWlub3JfdmVyc2lvbjsKICAgICAgICBjaGFyICp2ZW5kb3I7CiAgICAgICAg
WElEIHByaXZhdGUzOwogICAgICAgIFhJRCBwcml2YXRlNDsKICAgICAgICBYSUQgcHJpdmF0ZTU7
CiAgICAgICAgaW50IHByaXZhdGU2OwogICAgICAgIFhJRCAoKnJlc291cmNlX2FsbG9jKSgKCiAg
ICAgICAgICAgICAgICBzdHJ1Y3QgX1hEaXNwbGF5KgoKICAgICAgICApOwogICAgICAgIGludCBi
eXRlX29yZGVyOwogICAgICAgIGludCBiaXRtYXBfdW5pdDsKICAgICAgICBpbnQgYml0bWFwX3Bh
ZDsKICAgICAgICBpbnQgYml0bWFwX2JpdF9vcmRlcjsKICAgICAgICBpbnQgbmZvcm1hdHM7CiAg
ICAgICAgU2NyZWVuRm9ybWF0ICpwaXhtYXBfZm9ybWF0OwogICAgICAgIGludCBwcml2YXRlODsK
ICAgICAgICBpbnQgcmVsZWFzZTsKICAgICAgICBzdHJ1Y3QgX1hQcml2YXRlICpwcml2YXRlOSwg
KnByaXZhdGUxMDsKICAgICAgICBpbnQgcWxlbjsKICAgICAgICB1bnNpZ25lZCBsb25nIGxhc3Rf
cmVxdWVzdF9yZWFkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVxdWVzdDsKICAgICAgICBYUG9p
bnRlciBwcml2YXRlMTE7CiAgICAgICAgWFBvaW50ZXIgcHJpdmF0ZTEyOwogICAgICAgIFhQb2lu
dGVyIHByaXZhdGUxMzsKICAgICAgICBYUG9pbnRlciBwcml2YXRlMTQ7CiAgICAgICAgdW5zaWdu
ZWQgbWF4X3JlcXVlc3Rfc2l6ZTsKICAgICAgICBzdHJ1Y3QgX1hybUhhc2hCdWNrZXRSZWMgKmRi
OwogICAgICAgIGludCAoKnByaXZhdGUxNSkoCgogICAgICAgICAgICAgICAgc3RydWN0IF9YRGlz
cGxheSoKCiAgICAgICAgICAgICAgICApOwogICAgICAgIGNoYXIgKmRpc3BsYXlfbmFtZTsKICAg
ICAgICBpbnQgZGVmYXVsdF9zY3JlZW47CiAgICAgICAgaW50IG5zY3JlZW5zOwogICAgICAgIFNj
cmVlbiAqc2NyZWVuczsKICAgICAgICB1bnNpZ25lZCBsb25nIG1vdGlvbl9idWZmZXI7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBwcml2YXRlMTY7CiAgICAgICAgaW50IG1pbl9rZXljb2RlOwogICAg
ICAgIGludCBtYXhfa2V5Y29kZTsKICAgICAgICBYUG9pbnRlciBwcml2YXRlMTc7CiAgICAgICAg
WFBvaW50ZXIgcHJpdmF0ZTE4OwogICAgICAgIGludCBwcml2YXRlMTk7CiAgICAgICAgY2hhciAq
eGRlZmF1bHRzOwoKfQoKCgoqX1hQcml2RGlzcGxheTsKIyA1ODIgIi91c3IvWDExUjYvaW5jbHVk
ZS9YMTEvWGxpYi5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlz
cGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cgd2luZG93OwogICAgICAgIFdpbmRvdyByb290
OwogICAgICAgIFdpbmRvdyBzdWJ3aW5kb3c7CiAgICAgICAgVGltZSB0aW1lOwogICAgICAgIGlu
dCB4LCB5OwogICAgICAgIGludCB4X3Jvb3QsIHlfcm9vdDsKICAgICAgICB1bnNpZ25lZCBpbnQg
c3RhdGU7CiAgICAgICAgdW5zaWduZWQgaW50IGtleWNvZGU7CiAgICAgICAgaW50IHNhbWVfc2Ny
ZWVuOwp9IFhLZXlFdmVudDsKdHlwZWRlZiBYS2V5RXZlbnQgWEtleVByZXNzZWRFdmVudDsKdHlw
ZWRlZiBYS2V5RXZlbnQgWEtleVJlbGVhc2VkRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAg
ICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNl
bmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cgd2luZG93
OwogICAgICAgIFdpbmRvdyByb290OwogICAgICAgIFdpbmRvdyBzdWJ3aW5kb3c7CiAgICAgICAg
VGltZSB0aW1lOwogICAgICAgIGludCB4LCB5OwogICAgICAgIGludCB4X3Jvb3QsIHlfcm9vdDsK
ICAgICAgICB1bnNpZ25lZCBpbnQgc3RhdGU7CiAgICAgICAgdW5zaWduZWQgaW50IGJ1dHRvbjsK
ICAgICAgICBpbnQgc2FtZV9zY3JlZW47Cn0gWEJ1dHRvbkV2ZW50Owp0eXBlZGVmIFhCdXR0b25F
dmVudCBYQnV0dG9uUHJlc3NlZEV2ZW50Owp0eXBlZGVmIFhCdXR0b25FdmVudCBYQnV0dG9uUmVs
ZWFzZWRFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1
bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNw
bGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgV2luZG93IHJvb3Q7
CiAgICAgICAgV2luZG93IHN1YndpbmRvdzsKICAgICAgICBUaW1lIHRpbWU7CiAgICAgICAgaW50
IHgsIHk7CiAgICAgICAgaW50IHhfcm9vdCwgeV9yb290OwogICAgICAgIHVuc2lnbmVkIGludCBz
dGF0ZTsKICAgICAgICBjaGFyIGlzX2hpbnQ7CiAgICAgICAgaW50IHNhbWVfc2NyZWVuOwp9IFhN
b3Rpb25FdmVudDsKdHlwZWRlZiBYTW90aW9uRXZlbnQgWFBvaW50ZXJNb3ZlZEV2ZW50OwoKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2Vy
aWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAg
ICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBXaW5kb3cgcm9vdDsKICAgICAgICBXaW5kb3cg
c3Vid2luZG93OwogICAgICAgIFRpbWUgdGltZTsKICAgICAgICBpbnQgeCwgeTsKICAgICAgICBp
bnQgeF9yb290LCB5X3Jvb3Q7CiAgICAgICAgaW50IG1vZGU7CiAgICAgICAgaW50IGRldGFpbDsK
CgoKCiAgICAgICAgaW50IHNhbWVfc2NyZWVuOwogICAgICAgIGludCBmb2N1czsKICAgICAgICB1
bnNpZ25lZCBpbnQgc3RhdGU7Cn0gWENyb3NzaW5nRXZlbnQ7CnR5cGVkZWYgWENyb3NzaW5nRXZl
bnQgWEVudGVyV2luZG93RXZlbnQ7CnR5cGVkZWYgWENyb3NzaW5nRXZlbnQgWExlYXZlV2luZG93
RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAq
ZGlzcGxheTsKICAgICAgICBXaW5kb3cgd2luZG93OwogICAgICAgIGludCBtb2RlOwogICAgICAg
IGludCBkZXRhaWw7CgoKCgoKfSBYRm9jdXNDaGFuZ2VFdmVudDsKdHlwZWRlZiBYRm9jdXNDaGFu
Z2VFdmVudCBYRm9jdXNJbkV2ZW50Owp0eXBlZGVmIFhGb2N1c0NoYW5nZUV2ZW50IFhGb2N1c091
dEV2ZW50OwoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5
ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgY2hhciBrZXlfdmVjdG9y
WzMyXTsKfSBYS2V5bWFwRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAg
ICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cgd2luZG93OwogICAgICAgIGlu
dCB4LCB5OwogICAgICAgIGludCB3aWR0aCwgaGVpZ2h0OwogICAgICAgIGludCBjb3VudDsKfSBY
RXhwb3NlRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlz
cGxheSAqZGlzcGxheTsKICAgICAgICBEcmF3YWJsZSBkcmF3YWJsZTsKICAgICAgICBpbnQgeCwg
eTsKICAgICAgICBpbnQgd2lkdGgsIGhlaWdodDsKICAgICAgICBpbnQgY291bnQ7CiAgICAgICAg
aW50IG1ham9yX2NvZGU7CiAgICAgICAgaW50IG1pbm9yX2NvZGU7Cn0gWEdyYXBoaWNzRXhwb3Nl
RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAq
ZGlzcGxheTsKICAgICAgICBEcmF3YWJsZSBkcmF3YWJsZTsKICAgICAgICBpbnQgbWFqb3JfY29k
ZTsKICAgICAgICBpbnQgbWlub3JfY29kZTsKfSBYTm9FeHBvc2VFdmVudDsKCnR5cGVkZWYgc3Ry
dWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAg
ICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdp
bmRvdyB3aW5kb3c7CiAgICAgICAgaW50IHN0YXRlOwp9IFhWaXNpYmlsaXR5RXZlbnQ7Cgp0eXBl
ZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJp
YWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAg
ICAgICBXaW5kb3cgcGFyZW50OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgaW50IHgs
IHk7CiAgICAgICAgaW50IHdpZHRoLCBoZWlnaHQ7CiAgICAgICAgaW50IGJvcmRlcl93aWR0aDsK
ICAgICAgICBpbnQgb3ZlcnJpZGVfcmVkaXJlY3Q7Cn0gWENyZWF0ZVdpbmRvd0V2ZW50OwoKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2Vy
aWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAg
ICAgICAgV2luZG93IGV2ZW50OwogICAgICAgIFdpbmRvdyB3aW5kb3c7Cn0gWERlc3Ryb3lXaW5k
b3dFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5
ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyBldmVudDsKICAgICAgICBXaW5kb3cgd2luZG93Owog
ICAgICAgIGludCBmcm9tX2NvbmZpZ3VyZTsKfSBYVW5tYXBFdmVudDsKCnR5cGVkZWYgc3RydWN0
IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAg
ICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRv
dyBldmVudDsKICAgICAgICBXaW5kb3cgd2luZG93OwogICAgICAgIGludCBvdmVycmlkZV9yZWRp
cmVjdDsKfSBYTWFwRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAgICAg
ICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cgcGFyZW50OwogICAgICAgIFdpbmRv
dyB3aW5kb3c7Cn0gWE1hcFJlcXVlc3RFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBp
bnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9l
dmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyBldmVudDsKICAg
ICAgICBXaW5kb3cgd2luZG93OwogICAgICAgIFdpbmRvdyBwYXJlbnQ7CiAgICAgICAgaW50IHgs
IHk7CiAgICAgICAgaW50IG92ZXJyaWRlX3JlZGlyZWN0Owp9IFhSZXBhcmVudEV2ZW50OwoKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2Vy
aWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAg
ICAgICAgV2luZG93IGV2ZW50OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgaW50IHgs
IHk7CiAgICAgICAgaW50IHdpZHRoLCBoZWlnaHQ7CiAgICAgICAgaW50IGJvcmRlcl93aWR0aDsK
ICAgICAgICBXaW5kb3cgYWJvdmU7CiAgICAgICAgaW50IG92ZXJyaWRlX3JlZGlyZWN0Owp9IFhD
b25maWd1cmVFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBE
aXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyBldmVudDsKICAgICAgICBXaW5kb3cgd2lu
ZG93OwogICAgICAgIGludCB4LCB5Owp9IFhHcmF2aXR5RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7
CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAg
aW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cg
d2luZG93OwogICAgICAgIGludCB3aWR0aCwgaGVpZ2h0Owp9IFhSZXNpemVSZXF1ZXN0RXZlbnQ7
Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxh
eTsKICAgICAgICBXaW5kb3cgcGFyZW50OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAg
aW50IHgsIHk7CiAgICAgICAgaW50IHdpZHRoLCBoZWlnaHQ7CiAgICAgICAgaW50IGJvcmRlcl93
aWR0aDsKICAgICAgICBXaW5kb3cgYWJvdmU7CiAgICAgICAgaW50IGRldGFpbDsKICAgICAgICB1
bnNpZ25lZCBsb25nIHZhbHVlX21hc2s7Cn0gWENvbmZpZ3VyZVJlcXVlc3RFdmVudDsKCnR5cGVk
ZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlh
bDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAg
ICAgIFdpbmRvdyBldmVudDsKICAgICAgICBXaW5kb3cgd2luZG93OwogICAgICAgIGludCBwbGFj
ZTsKfSBYQ2lyY3VsYXRlRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAg
ICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cgcGFyZW50OwogICAgICAgIFdp
bmRvdyB3aW5kb3c7CiAgICAgICAgaW50IHBsYWNlOwp9IFhDaXJjdWxhdGVSZXF1ZXN0RXZlbnQ7
Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxh
eTsKICAgICAgICBXaW5kb3cgd2luZG93OwogICAgICAgIEF0b20gYXRvbTsKICAgICAgICBUaW1l
IHRpbWU7CiAgICAgICAgaW50IHN0YXRlOwp9IFhQcm9wZXJ0eUV2ZW50OwoKdHlwZWRlZiBzdHJ1
Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAg
ICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2lu
ZG93IHdpbmRvdzsKICAgICAgICBBdG9tIHNlbGVjdGlvbjsKICAgICAgICBUaW1lIHRpbWU7Cn0g
WFNlbGVjdGlvbkNsZWFyRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAg
ICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cgb3duZXI7CiAgICAgICAgV2lu
ZG93IHJlcXVlc3RvcjsKICAgICAgICBBdG9tIHNlbGVjdGlvbjsKICAgICAgICBBdG9tIHRhcmdl
dDsKICAgICAgICBBdG9tIHByb3BlcnR5OwogICAgICAgIFRpbWUgdGltZTsKfSBYU2VsZWN0aW9u
UmVxdWVzdEV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERp
c3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IHJlcXVlc3RvcjsKICAgICAgICBBdG9tIHNl
bGVjdGlvbjsKICAgICAgICBBdG9tIHRhcmdldDsKICAgICAgICBBdG9tIHByb3BlcnR5OwogICAg
ICAgIFRpbWUgdGltZTsKfSBYU2VsZWN0aW9uRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAg
ICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNl
bmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cgd2luZG93
OwogICAgICAgIENvbG9ybWFwIGNvbG9ybWFwOwoKICAgICAgICBpbnQgY19uZXc7CgoKCiAgICAg
ICAgaW50IHN0YXRlOwp9IFhDb2xvcm1hcEV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAg
IGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5k
X2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IHdpbmRvdzsK
ICAgICAgICBBdG9tIG1lc3NhZ2VfdHlwZTsKICAgICAgICBpbnQgZm9ybWF0OwogICAgICAgIHVu
aW9uIHsKICAgICAgICAgICAgICAgIGNoYXIgYlsyMF07CiAgICAgICAgICAgICAgICBzaG9ydCBz
WzEwXTsKICAgICAgICAgICAgICAgIGxvbmcgbFs1XTsKICAgICAgICAgICAgICAgIH0gZGF0YTsK
fSBYQ2xpZW50TWVzc2FnZUV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBl
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50Owog
ICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBp
bnQgcmVxdWVzdDsKCiAgICAgICAgaW50IGZpcnN0X2tleWNvZGU7CiAgICAgICAgaW50IGNvdW50
Owp9IFhNYXBwaW5nRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAg
ICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBYSUQgcmVzb3VyY2VpZDsKICAgICAgICB1
bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICB1bnNpZ25lZCBjaGFyIGVycm9yX2NvZGU7CiAg
ICAgICAgdW5zaWduZWQgY2hhciByZXF1ZXN0X2NvZGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBt
aW5vcl9jb2RlOwp9IFhFcnJvckV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0
eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50
OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IHdpbmRvdzsKfSBYQW55
RXZlbnQ7CgoKCgoKdHlwZWRlZiB1bmlvbiBfWEV2ZW50IHsKICAgICAgICBpbnQgdHlwZTsKICAg
ICAgICBYQW55RXZlbnQgeGFueTsKICAgICAgICBYS2V5RXZlbnQgeGtleTsKICAgICAgICBYQnV0
dG9uRXZlbnQgeGJ1dHRvbjsKICAgICAgICBYTW90aW9uRXZlbnQgeG1vdGlvbjsKICAgICAgICBY
Q3Jvc3NpbmdFdmVudCB4Y3Jvc3Npbmc7CiAgICAgICAgWEZvY3VzQ2hhbmdlRXZlbnQgeGZvY3Vz
OwogICAgICAgIFhFeHBvc2VFdmVudCB4ZXhwb3NlOwogICAgICAgIFhHcmFwaGljc0V4cG9zZUV2
ZW50IHhncmFwaGljc2V4cG9zZTsKICAgICAgICBYTm9FeHBvc2VFdmVudCB4bm9leHBvc2U7CiAg
ICAgICAgWFZpc2liaWxpdHlFdmVudCB4dmlzaWJpbGl0eTsKICAgICAgICBYQ3JlYXRlV2luZG93
RXZlbnQgeGNyZWF0ZXdpbmRvdzsKICAgICAgICBYRGVzdHJveVdpbmRvd0V2ZW50IHhkZXN0cm95
d2luZG93OwogICAgICAgIFhVbm1hcEV2ZW50IHh1bm1hcDsKICAgICAgICBYTWFwRXZlbnQgeG1h
cDsKICAgICAgICBYTWFwUmVxdWVzdEV2ZW50IHhtYXByZXF1ZXN0OwogICAgICAgIFhSZXBhcmVu
dEV2ZW50IHhyZXBhcmVudDsKICAgICAgICBYQ29uZmlndXJlRXZlbnQgeGNvbmZpZ3VyZTsKICAg
ICAgICBYR3Jhdml0eUV2ZW50IHhncmF2aXR5OwogICAgICAgIFhSZXNpemVSZXF1ZXN0RXZlbnQg
eHJlc2l6ZXJlcXVlc3Q7CiAgICAgICAgWENvbmZpZ3VyZVJlcXVlc3RFdmVudCB4Y29uZmlndXJl
cmVxdWVzdDsKICAgICAgICBYQ2lyY3VsYXRlRXZlbnQgeGNpcmN1bGF0ZTsKICAgICAgICBYQ2ly
Y3VsYXRlUmVxdWVzdEV2ZW50IHhjaXJjdWxhdGVyZXF1ZXN0OwogICAgICAgIFhQcm9wZXJ0eUV2
ZW50IHhwcm9wZXJ0eTsKICAgICAgICBYU2VsZWN0aW9uQ2xlYXJFdmVudCB4c2VsZWN0aW9uY2xl
YXI7CiAgICAgICAgWFNlbGVjdGlvblJlcXVlc3RFdmVudCB4c2VsZWN0aW9ucmVxdWVzdDsKICAg
ICAgICBYU2VsZWN0aW9uRXZlbnQgeHNlbGVjdGlvbjsKICAgICAgICBYQ29sb3JtYXBFdmVudCB4
Y29sb3JtYXA7CiAgICAgICAgWENsaWVudE1lc3NhZ2VFdmVudCB4Y2xpZW50OwogICAgICAgIFhN
YXBwaW5nRXZlbnQgeG1hcHBpbmc7CiAgICAgICAgWEVycm9yRXZlbnQgeGVycm9yOwogICAgICAg
IFhLZXltYXBFdmVudCB4a2V5bWFwOwogICAgICAgIGxvbmcgcGFkWzI0XTsKfSBYRXZlbnQ7CgoK
CgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBzaG9ydCBsYmVhcmluZzsKICAgIHNob3J0IHJiZWFy
aW5nOwogICAgc2hvcnQgd2lkdGg7CiAgICBzaG9ydCBhc2NlbnQ7CiAgICBzaG9ydCBkZXNjZW50
OwogICAgdW5zaWduZWQgc2hvcnQgYXR0cmlidXRlczsKfSBYQ2hhclN0cnVjdDsKCgoKCgp0eXBl
ZGVmIHN0cnVjdCB7CiAgICBBdG9tIG5hbWU7CiAgICB1bnNpZ25lZCBsb25nIGNhcmQzMjsKfSBY
Rm9udFByb3A7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBYRXh0RGF0YSAqZXh0X2RhdGE7CiAgICBG
b250IGZpZDsKICAgIHVuc2lnbmVkIGRpcmVjdGlvbjsKICAgIHVuc2lnbmVkIG1pbl9jaGFyX29y
X2J5dGUyOwogICAgdW5zaWduZWQgbWF4X2NoYXJfb3JfYnl0ZTI7CiAgICB1bnNpZ25lZCBtaW5f
Ynl0ZTE7CiAgICB1bnNpZ25lZCBtYXhfYnl0ZTE7CiAgICBpbnQgYWxsX2NoYXJzX2V4aXN0Owog
ICAgdW5zaWduZWQgZGVmYXVsdF9jaGFyOwogICAgaW50IG5fcHJvcGVydGllczsKICAgIFhGb250
UHJvcCAqcHJvcGVydGllczsKICAgIFhDaGFyU3RydWN0IG1pbl9ib3VuZHM7CiAgICBYQ2hhclN0
cnVjdCBtYXhfYm91bmRzOwogICAgWENoYXJTdHJ1Y3QgKnBlcl9jaGFyOwogICAgaW50IGFzY2Vu
dDsKICAgIGludCBkZXNjZW50Owp9IFhGb250U3RydWN0OwoKCgoKdHlwZWRlZiBzdHJ1Y3Qgewog
ICAgY2hhciAqY2hhcnM7CiAgICBpbnQgbmNoYXJzOwogICAgaW50IGRlbHRhOwogICAgRm9udCBm
b250Owp9IFhUZXh0SXRlbTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIHVuc2lnbmVkIGNoYXIgYnl0
ZTE7CiAgICB1bnNpZ25lZCBjaGFyIGJ5dGUyOwp9IFhDaGFyMmI7Cgp0eXBlZGVmIHN0cnVjdCB7
CiAgICBYQ2hhcjJiICpjaGFyczsKICAgIGludCBuY2hhcnM7CiAgICBpbnQgZGVsdGE7CiAgICBG
b250IGZvbnQ7Cn0gWFRleHRJdGVtMTY7CgoKdHlwZWRlZiB1bmlvbiB7IERpc3BsYXkgKmRpc3Bs
YXk7CiAgICAgICAgICAgICAgICBHQyBnYzsKICAgICAgICAgICAgICAgIFZpc3VhbCAqdmlzdWFs
OwogICAgICAgICAgICAgICAgU2NyZWVuICpzY3JlZW47CiAgICAgICAgICAgICAgICBTY3JlZW5G
b3JtYXQgKnBpeG1hcF9mb3JtYXQ7CiAgICAgICAgICAgICAgICBYRm9udFN0cnVjdCAqZm9udDsg
fSBYRURhdGFPYmplY3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBYUmVjdGFuZ2xlIG1heF9pbmtf
ZXh0ZW50OwogICAgWFJlY3RhbmdsZSBtYXhfbG9naWNhbF9leHRlbnQ7Cn0gWEZvbnRTZXRFeHRl
bnRzOwoKCgoKCnR5cGVkZWYgc3RydWN0IF9YT00gKlhPTTsKdHlwZWRlZiBzdHJ1Y3QgX1hPQyAq
WE9DLCAqWEZvbnRTZXQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBjaGFyICpjaGFyczsKICAgIGlu
dCBuY2hhcnM7CiAgICBpbnQgZGVsdGE7CiAgICBYRm9udFNldCBmb250X3NldDsKfSBYbWJUZXh0
SXRlbTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIHdjaGFyX3QgKmNoYXJzOwogICAgaW50IG5jaGFy
czsKICAgIGludCBkZWx0YTsKICAgIFhGb250U2V0IGZvbnRfc2V0Owp9IFh3Y1RleHRJdGVtOwoj
IDExMTYgIi91c3IvWDExUjYvaW5jbHVkZS9YMTEvWGxpYi5oIgp0eXBlZGVmIHN0cnVjdCB7CiAg
ICBpbnQgY2hhcnNldF9jb3VudDsKICAgIGNoYXIgKipjaGFyc2V0X2xpc3Q7Cn0gWE9NQ2hhclNl
dExpc3Q7Cgp0eXBlZGVmIGVudW0gewogICAgWE9NT3JpZW50YXRpb25fTFRSX1RUQiwKICAgIFhP
TU9yaWVudGF0aW9uX1JUTF9UVEIsCiAgICBYT01PcmllbnRhdGlvbl9UVEJfTFRSLAogICAgWE9N
T3JpZW50YXRpb25fVFRCX1JUTCwKICAgIFhPTU9yaWVudGF0aW9uX0NvbnRleHQKfSBYT3JpZW50
YXRpb247Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBpbnQgbnVtX29yaWVudGF0aW9uOwogICAgWE9y
aWVudGF0aW9uICpvcmllbnRhdGlvbjsKfSBYT01PcmllbnRhdGlvbjsKCnR5cGVkZWYgc3RydWN0
IHsKICAgIGludCBudW1fZm9udDsKICAgIFhGb250U3RydWN0ICoqZm9udF9zdHJ1Y3RfbGlzdDsK
ICAgIGNoYXIgKipmb250X25hbWVfbGlzdDsKfSBYT01Gb250SW5mbzsKCnR5cGVkZWYgc3RydWN0
IF9YSU0gKlhJTTsKdHlwZWRlZiBzdHJ1Y3QgX1hJQyAqWElDOwoKdHlwZWRlZiB2b2lkICgqWElN
UHJvYykoCgogICAgWElNLAogICAgWFBvaW50ZXIsCiAgICBYUG9pbnRlcgoKKTsKCnR5cGVkZWYg
aW50ICgqWElDUHJvYykoCgogICAgWElDLAogICAgWFBvaW50ZXIsCiAgICBYUG9pbnRlcgoKKTsK
CnR5cGVkZWYgdm9pZCAoKlhJRFByb2MpKAoKICAgIERpc3BsYXkqLAogICAgWFBvaW50ZXIsCiAg
ICBYUG9pbnRlcgoKKTsKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBYSU1TdHlsZTsKCnR5cGVkZWYg
c3RydWN0IHsKICAgIHVuc2lnbmVkIHNob3J0IGNvdW50X3N0eWxlczsKICAgIFhJTVN0eWxlICpz
dXBwb3J0ZWRfc3R5bGVzOwp9IFhJTVN0eWxlczsKIyAxMjM1ICIvdXNyL1gxMVI2L2luY2x1ZGUv
WDExL1hsaWIuaCIKdHlwZWRlZiB2b2lkICpYVmFOZXN0ZWRMaXN0OwoKCgoKdHlwZWRlZiBzdHJ1
Y3QgewogICAgWFBvaW50ZXIgY2xpZW50X2RhdGE7CiAgICBYSU1Qcm9jIGNhbGxiYWNrOwp9IFhJ
TUNhbGxiYWNrOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgWFBvaW50ZXIgY2xpZW50X2RhdGE7CiAg
ICBYSUNQcm9jIGNhbGxiYWNrOwp9IFhJQ0NhbGxiYWNrOwoKdHlwZWRlZiB1bnNpZ25lZCBsb25n
IFhJTUZlZWRiYWNrOwojIDEyNjIgIi91c3IvWDExUjYvaW5jbHVkZS9YMTEvWGxpYi5oIgp0eXBl
ZGVmIHN0cnVjdCBfWElNVGV4dCB7CiAgICB1bnNpZ25lZCBzaG9ydCBsZW5ndGg7CiAgICBYSU1G
ZWVkYmFjayAqZmVlZGJhY2s7CiAgICBpbnQgZW5jb2RpbmdfaXNfd2NoYXI7CiAgICB1bmlvbiB7
CiAgICAgICAgY2hhciAqbXVsdGlfYnl0ZTsKICAgICAgICB3Y2hhcl90ICp3aWRlX2NoYXI7CiAg
ICB9IHN0cmluZzsKfSBYSU1UZXh0OwoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIFhJTVByZWVkaXRT
dGF0ZTsKCgoKCgp0eXBlZGVmIHN0cnVjdCBfWElNUHJlZWRpdFN0YXRlTm90aWZ5Q2FsbGJhY2tT
dHJ1Y3QgewogICAgWElNUHJlZWRpdFN0YXRlIHN0YXRlOwp9IFhJTVByZWVkaXRTdGF0ZU5vdGlm
eUNhbGxiYWNrU3RydWN0OwoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIFhJTVJlc2V0U3RhdGU7CgoK
Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgWElNU3RyaW5nQ29udmVyc2lvbkZlZWRiYWNrOwojIDEy
OTYgIi91c3IvWDExUjYvaW5jbHVkZS9YMTEvWGxpYi5oIgp0eXBlZGVmIHN0cnVjdCBfWElNU3Ry
aW5nQ29udmVyc2lvblRleHQgewogICAgdW5zaWduZWQgc2hvcnQgbGVuZ3RoOwogICAgWElNU3Ry
aW5nQ29udmVyc2lvbkZlZWRiYWNrICpmZWVkYmFjazsKICAgIGludCBlbmNvZGluZ19pc193Y2hh
cjsKICAgIHVuaW9uIHsKICAgICAgICBjaGFyICptYnM7CiAgICAgICAgd2NoYXJfdCAqd2NzOwog
ICAgfSBzdHJpbmc7Cn0gWElNU3RyaW5nQ29udmVyc2lvblRleHQ7Cgp0eXBlZGVmIHVuc2lnbmVk
IHNob3J0IFhJTVN0cmluZ0NvbnZlcnNpb25Qb3NpdGlvbjsKCnR5cGVkZWYgdW5zaWduZWQgc2hv
cnQgWElNU3RyaW5nQ29udmVyc2lvblR5cGU7CgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQg
WElNU3RyaW5nQ29udmVyc2lvbk9wZXJhdGlvbjsKCgoKCnR5cGVkZWYgZW51bSB7CiAgICBYSU1G
b3J3YXJkQ2hhciwgWElNQmFja3dhcmRDaGFyLAogICAgWElNRm9yd2FyZFdvcmQsIFhJTUJhY2t3
YXJkV29yZCwKICAgIFhJTUNhcmV0VXAsIFhJTUNhcmV0RG93biwKICAgIFhJTU5leHRMaW5lLCBY
SU1QcmV2aW91c0xpbmUsCiAgICBYSU1MaW5lU3RhcnQsIFhJTUxpbmVFbmQsCiAgICBYSU1BYnNv
bHV0ZVBvc2l0aW9uLAogICAgWElNRG9udENoYW5nZQp9IFhJTUNhcmV0RGlyZWN0aW9uOwoKdHlw
ZWRlZiBzdHJ1Y3QgX1hJTVN0cmluZ0NvbnZlcnNpb25DYWxsYmFja1N0cnVjdCB7CiAgICBYSU1T
dHJpbmdDb252ZXJzaW9uUG9zaXRpb24gcG9zaXRpb247CiAgICBYSU1DYXJldERpcmVjdGlvbiBk
aXJlY3Rpb247CiAgICBYSU1TdHJpbmdDb252ZXJzaW9uT3BlcmF0aW9uIG9wZXJhdGlvbjsKICAg
IHVuc2lnbmVkIHNob3J0IGZhY3RvcjsKICAgIFhJTVN0cmluZ0NvbnZlcnNpb25UZXh0ICp0ZXh0
Owp9IFhJTVN0cmluZ0NvbnZlcnNpb25DYWxsYmFja1N0cnVjdDsKCnR5cGVkZWYgc3RydWN0IF9Y
SU1QcmVlZGl0RHJhd0NhbGxiYWNrU3RydWN0IHsKICAgIGludCBjYXJldDsKICAgIGludCBjaGdf
Zmlyc3Q7CiAgICBpbnQgY2hnX2xlbmd0aDsKICAgIFhJTVRleHQgKnRleHQ7Cn0gWElNUHJlZWRp
dERyYXdDYWxsYmFja1N0cnVjdDsKCnR5cGVkZWYgZW51bSB7CiAgICBYSU1Jc0ludmlzaWJsZSwK
ICAgIFhJTUlzUHJpbWFyeSwKICAgIFhJTUlzU2Vjb25kYXJ5Cn0gWElNQ2FyZXRTdHlsZTsKCnR5
cGVkZWYgc3RydWN0IF9YSU1QcmVlZGl0Q2FyZXRDYWxsYmFja1N0cnVjdCB7CiAgICBpbnQgcG9z
aXRpb247CiAgICBYSU1DYXJldERpcmVjdGlvbiBkaXJlY3Rpb247CiAgICBYSU1DYXJldFN0eWxl
IHN0eWxlOwp9IFhJTVByZWVkaXRDYXJldENhbGxiYWNrU3RydWN0OwoKdHlwZWRlZiBlbnVtIHsK
ICAgIFhJTVRleHRUeXBlLAogICAgWElNQml0bWFwVHlwZQp9IFhJTVN0YXR1c0RhdGFUeXBlOwoK
dHlwZWRlZiBzdHJ1Y3QgX1hJTVN0YXR1c0RyYXdDYWxsYmFja1N0cnVjdCB7CiAgICBYSU1TdGF0
dXNEYXRhVHlwZSB0eXBlOwogICAgdW5pb24gewogICAgICAgIFhJTVRleHQgKnRleHQ7CiAgICAg
ICAgUGl4bWFwIGJpdG1hcDsKICAgIH0gZGF0YTsKfSBYSU1TdGF0dXNEcmF3Q2FsbGJhY2tTdHJ1
Y3Q7Cgp0eXBlZGVmIHN0cnVjdCBfWElNSG90S2V5VHJpZ2dlciB7CiAgICBLZXlTeW0ga2V5c3lt
OwogICAgaW50IG1vZGlmaWVyOwogICAgaW50IG1vZGlmaWVyX21hc2s7Cn0gWElNSG90S2V5VHJp
Z2dlcjsKCnR5cGVkZWYgc3RydWN0IF9YSU1Ib3RLZXlUcmlnZ2VycyB7CiAgICBpbnQgbnVtX2hv
dF9rZXk7CiAgICBYSU1Ib3RLZXlUcmlnZ2VyICprZXk7Cn0gWElNSG90S2V5VHJpZ2dlcnM7Cgp0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgWElNSG90S2V5U3RhdGU7CgoKCgp0eXBlZGVmIHN0cnVjdCB7
CiAgICB1bnNpZ25lZCBzaG9ydCBjb3VudF92YWx1ZXM7CiAgICBjaGFyICoqc3VwcG9ydGVkX3Zh
bHVlczsKfSBYSU1WYWx1ZXNMaXN0OwoKZXh0ZXJuICJDIiB7CgoKCgoKZXh0ZXJuIGludCBfWGRl
YnVnOwoKZXh0ZXJuIFhGb250U3RydWN0ICpYTG9hZFF1ZXJ5Rm9udCgKCiAgICBEaXNwbGF5KiAs
CiAgICBjb25zdCBjaGFyKgoKKTsKCmV4dGVybiBYRm9udFN0cnVjdCAqWFF1ZXJ5Rm9udCgKCiAg
ICBEaXNwbGF5KiAsCiAgICBYSUQKCik7CgoKZXh0ZXJuIFhUaW1lQ29vcmQgKlhHZXRNb3Rpb25F
dmVudHMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFRpbWUgLAogICAgVGltZSAs
CiAgICBpbnQqCgopOwoKZXh0ZXJuIFhNb2RpZmllcktleW1hcCAqWERlbGV0ZU1vZGlmaWVybWFw
RW50cnkoCgogICAgWE1vZGlmaWVyS2V5bWFwKiAsCgogICAgdW5zaWduZWQgaW50ICwKCgoKICAg
IGludAoKKTsKCmV4dGVybiBYTW9kaWZpZXJLZXltYXAgKlhHZXRNb2RpZmllck1hcHBpbmcoCgog
ICAgRGlzcGxheSoKCik7CgpleHRlcm4gWE1vZGlmaWVyS2V5bWFwICpYSW5zZXJ0TW9kaWZpZXJt
YXBFbnRyeSgKCiAgICBYTW9kaWZpZXJLZXltYXAqICwKCiAgICB1bnNpZ25lZCBpbnQgLAoKCgog
ICAgaW50CgopOwoKZXh0ZXJuIFhNb2RpZmllcktleW1hcCAqWE5ld01vZGlmaWVybWFwKAoKICAg
IGludAoKKTsKCmV4dGVybiBYSW1hZ2UgKlhDcmVhdGVJbWFnZSgKCiAgICBEaXNwbGF5KiAsCiAg
ICBWaXN1YWwqICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGNo
YXIqICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgaW50ICwKICAg
IGludAoKKTsKZXh0ZXJuIGludCBYSW5pdEltYWdlKAoKICAgIFhJbWFnZSoKCik7CmV4dGVybiBY
SW1hZ2UgKlhHZXRJbWFnZSgKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBpbnQg
LAogICAgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5z
aWduZWQgbG9uZyAsCiAgICBpbnQKCik7CmV4dGVybiBYSW1hZ2UgKlhHZXRTdWJJbWFnZSgKCiAg
ICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2ln
bmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgbG9uZyAsCiAgICBpbnQg
LAogICAgWEltYWdlKiAsCiAgICBpbnQgLAogICAgaW50CgopOwoKCgoKZXh0ZXJuIERpc3BsYXkg
KlhPcGVuRGlzcGxheSgKCiAgICBjb25zdCBjaGFyKgoKKTsKCmV4dGVybiB2b2lkIFhybUluaXRp
YWxpemUoCgogICAgdm9pZAoKKTsKCmV4dGVybiBjaGFyICpYRmV0Y2hCeXRlcygKCiAgICBEaXNw
bGF5KiAsCiAgICBpbnQqCgopOwpleHRlcm4gY2hhciAqWEZldGNoQnVmZmVyKAoKICAgIERpc3Bs
YXkqICwKICAgIGludCogLAogICAgaW50CgopOwpleHRlcm4gY2hhciAqWEdldEF0b21OYW1lKAoK
ICAgIERpc3BsYXkqICwKICAgIEF0b20KCik7CmV4dGVybiBpbnQgWEdldEF0b21OYW1lcygKCiAg
ICBEaXNwbGF5KiAsCiAgICBBdG9tKiAsCiAgICBpbnQgLAogICAgY2hhcioqCgopOwpleHRlcm4g
Y2hhciAqWEdldERlZmF1bHQoCgogICAgRGlzcGxheSogLAogICAgY29uc3QgY2hhciogLAogICAg
Y29uc3QgY2hhcioKCik7CmV4dGVybiBjaGFyICpYRGlzcGxheU5hbWUoCgogICAgY29uc3QgY2hh
cioKCik7CmV4dGVybiBjaGFyICpYS2V5c3ltVG9TdHJpbmcoCgogICAgS2V5U3ltCgopOwoKZXh0
ZXJuIGludCAoKlhTeW5jaHJvbml6ZSgKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQKCikpKAoKICAg
IERpc3BsYXkqCgopOwpleHRlcm4gaW50ICgqWFNldEFmdGVyRnVuY3Rpb24oCgogICAgRGlzcGxh
eSogLAogICAgaW50ICgqKSAoCgogICAgICAgICAgICAgRGlzcGxheSoKCiAgICAgICAgICAgICkK
CikpKAoKICAgIERpc3BsYXkqCgopOwpleHRlcm4gQXRvbSBYSW50ZXJuQXRvbSgKCiAgICBEaXNw
bGF5KiAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBpbnQKCik7CmV4dGVybiBpbnQgWEludGVybkF0
b21zKAoKICAgIERpc3BsYXkqICwKICAgIGNoYXIqKiAsCiAgICBpbnQgLAogICAgaW50ICwKICAg
IEF0b20qCgopOwpleHRlcm4gQ29sb3JtYXAgWENvcHlDb2xvcm1hcEFuZEZyZWUoCgogICAgRGlz
cGxheSogLAogICAgQ29sb3JtYXAKCik7CmV4dGVybiBDb2xvcm1hcCBYQ3JlYXRlQ29sb3JtYXAo
CgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFZpc3VhbCogLAogICAgaW50CgopOwpl
eHRlcm4gQ3Vyc29yIFhDcmVhdGVQaXhtYXBDdXJzb3IoCgogICAgRGlzcGxheSogLAogICAgUGl4
bWFwICwKICAgIFBpeG1hcCAsCiAgICBYQ29sb3IqICwKICAgIFhDb2xvciogLAogICAgdW5zaWdu
ZWQgaW50ICwKICAgIHVuc2lnbmVkIGludAoKKTsKZXh0ZXJuIEN1cnNvciBYQ3JlYXRlR2x5cGhD
dXJzb3IoCgogICAgRGlzcGxheSogLAogICAgRm9udCAsCiAgICBGb250ICwKICAgIHVuc2lnbmVk
IGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgWENvbG9yIGNvbnN0ICogLAogICAgWENvbG9y
IGNvbnN0ICoKCik7CmV4dGVybiBDdXJzb3IgWENyZWF0ZUZvbnRDdXJzb3IoCgogICAgRGlzcGxh
eSogLAogICAgdW5zaWduZWQgaW50CgopOwpleHRlcm4gRm9udCBYTG9hZEZvbnQoCgogICAgRGlz
cGxheSogLAogICAgY29uc3QgY2hhcioKCik7CmV4dGVybiBHQyBYQ3JlYXRlR0MoCgogICAgRGlz
cGxheSogLAogICAgRHJhd2FibGUgLAogICAgdW5zaWduZWQgbG9uZyAsCiAgICBYR0NWYWx1ZXMq
CgopOwpleHRlcm4gR0NvbnRleHQgWEdDb250ZXh0RnJvbUdDKAoKICAgIEdDCgopOwpleHRlcm4g
dm9pZCBYRmx1c2hHQygKCiAgICBEaXNwbGF5KiAsCiAgICBHQwoKKTsKZXh0ZXJuIFBpeG1hcCBY
Q3JlYXRlUGl4bWFwKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIHVuc2lnbmVk
IGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50CgopOwpleHRlcm4gUGl4
bWFwIFhDcmVhdGVCaXRtYXBGcm9tRGF0YSgKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAs
CiAgICBjb25zdCBjaGFyKiAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50Cgop
OwpleHRlcm4gUGl4bWFwIFhDcmVhdGVQaXhtYXBGcm9tQml0bWFwRGF0YSgKCiAgICBEaXNwbGF5
KiAsCiAgICBEcmF3YWJsZSAsCiAgICBjaGFyKiAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5z
aWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGxvbmcgLAogICAgdW5zaWduZWQgbG9uZyAsCiAgICB1
bnNpZ25lZCBpbnQKCik7CmV4dGVybiBXaW5kb3cgWENyZWF0ZVNpbXBsZVdpbmRvdygKCiAgICBE
aXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBp
bnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBs
b25nICwKICAgIHVuc2lnbmVkIGxvbmcKCik7CmV4dGVybiBXaW5kb3cgWEdldFNlbGVjdGlvbk93
bmVyKAoKICAgIERpc3BsYXkqICwKICAgIEF0b20KCik7CmV4dGVybiBXaW5kb3cgWENyZWF0ZVdp
bmRvdygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIGludCAsCiAg
ICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAg
ICBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIFZpc3VhbCogLAogICAgdW5zaWduZWQgbG9u
ZyAsCiAgICBYU2V0V2luZG93QXR0cmlidXRlcyoKCik7CmV4dGVybiBDb2xvcm1hcCAqWExpc3RJ
bnN0YWxsZWRDb2xvcm1hcHMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGludCoK
Cik7CmV4dGVybiBjaGFyICoqWExpc3RGb250cygKCiAgICBEaXNwbGF5KiAsCiAgICBjb25zdCBj
aGFyKiAsCiAgICBpbnQgLAogICAgaW50KgoKKTsKZXh0ZXJuIGNoYXIgKipYTGlzdEZvbnRzV2l0
aEluZm8oCgogICAgRGlzcGxheSogLAogICAgY29uc3QgY2hhciogLAogICAgaW50ICwKICAgIGlu
dCogLAogICAgWEZvbnRTdHJ1Y3QqKgoKKTsKZXh0ZXJuIGNoYXIgKipYR2V0Rm9udFBhdGgoCgog
ICAgRGlzcGxheSogLAogICAgaW50KgoKKTsKZXh0ZXJuIGNoYXIgKipYTGlzdEV4dGVuc2lvbnMo
CgogICAgRGlzcGxheSogLAogICAgaW50KgoKKTsKZXh0ZXJuIEF0b20gKlhMaXN0UHJvcGVydGll
cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50KgoKKTsKZXh0ZXJuIFhIb3N0
QWRkcmVzcyAqWExpc3RIb3N0cygKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQqICwKICAgIGludCoK
Cik7CmV4dGVybiBLZXlTeW0gWEtleWNvZGVUb0tleXN5bSgKCiAgICBEaXNwbGF5KiAsCgogICAg
dW5zaWduZWQgaW50ICwKCgoKICAgIGludAoKKTsKZXh0ZXJuIEtleVN5bSBYTG9va3VwS2V5c3lt
KAoKICAgIFhLZXlFdmVudCogLAogICAgaW50CgopOwpleHRlcm4gS2V5U3ltICpYR2V0S2V5Ym9h
cmRNYXBwaW5nKAoKICAgIERpc3BsYXkqICwKCiAgICB1bnNpZ25lZCBpbnQgLAoKCgogICAgaW50
ICwKICAgIGludCoKCik7CmV4dGVybiBLZXlTeW0gWFN0cmluZ1RvS2V5c3ltKAoKICAgIGNvbnN0
IGNoYXIqCgopOwpleHRlcm4gbG9uZyBYTWF4UmVxdWVzdFNpemUoCgogICAgRGlzcGxheSoKCik7
CmV4dGVybiBsb25nIFhFeHRlbmRlZE1heFJlcXVlc3RTaXplKAoKICAgIERpc3BsYXkqCgopOwpl
eHRlcm4gY2hhciAqWFJlc291cmNlTWFuYWdlclN0cmluZygKCiAgICBEaXNwbGF5KgoKKTsKZXh0
ZXJuIGNoYXIgKlhTY3JlZW5SZXNvdXJjZVN0cmluZygKCiAgICAgICAgU2NyZWVuKgoKKTsKZXh0
ZXJuIHVuc2lnbmVkIGxvbmcgWERpc3BsYXlNb3Rpb25CdWZmZXJTaXplKAoKICAgIERpc3BsYXkq
CgopOwpleHRlcm4gVmlzdWFsSUQgWFZpc3VhbElERnJvbVZpc3VhbCgKCiAgICBWaXN1YWwqCgop
OwoKCgpleHRlcm4gaW50IFhJbml0VGhyZWFkcygKCiAgICB2b2lkCgopOwoKZXh0ZXJuIHZvaWQg
WExvY2tEaXNwbGF5KAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJuIHZvaWQgWFVubG9ja0Rpc3Bs
YXkoCgogICAgRGlzcGxheSoKCik7CgoKCmV4dGVybiBYRXh0Q29kZXMgKlhJbml0RXh0ZW5zaW9u
KAoKICAgIERpc3BsYXkqICwKICAgIGNvbnN0IGNoYXIqCgopOwoKZXh0ZXJuIFhFeHRDb2RlcyAq
WEFkZEV4dGVuc2lvbigKCiAgICBEaXNwbGF5KgoKKTsKZXh0ZXJuIFhFeHREYXRhICpYRmluZE9u
RXh0ZW5zaW9uTGlzdCgKCiAgICBYRXh0RGF0YSoqICwKICAgIGludAoKKTsKZXh0ZXJuIFhFeHRE
YXRhICoqWEVIZWFkT2ZFeHRlbnNpb25MaXN0KAoKICAgIFhFRGF0YU9iamVjdAoKKTsKCgpleHRl
cm4gV2luZG93IFhSb290V2luZG93KAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKTsKZXh0ZXJu
IFdpbmRvdyBYRGVmYXVsdFJvb3RXaW5kb3coCgogICAgRGlzcGxheSoKCik7CmV4dGVybiBXaW5k
b3cgWFJvb3RXaW5kb3dPZlNjcmVlbigKCiAgICBTY3JlZW4qCgopOwpleHRlcm4gVmlzdWFsICpY
RGVmYXVsdFZpc3VhbCgKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQKCik7CmV4dGVybiBWaXN1YWwg
KlhEZWZhdWx0VmlzdWFsT2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKKTsKZXh0ZXJuIEdDIFhEZWZh
dWx0R0MoCgogICAgRGlzcGxheSogLAogICAgaW50CgopOwpleHRlcm4gR0MgWERlZmF1bHRHQ09m
U2NyZWVuKAoKICAgIFNjcmVlbioKCik7CmV4dGVybiB1bnNpZ25lZCBsb25nIFhCbGFja1BpeGVs
KAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgWFdoaXRl
UGl4ZWwoCgogICAgRGlzcGxheSogLAogICAgaW50CgopOwpleHRlcm4gdW5zaWduZWQgbG9uZyBY
QWxsUGxhbmVzKAoKICAgIHZvaWQKCik7CmV4dGVybiB1bnNpZ25lZCBsb25nIFhCbGFja1BpeGVs
T2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgWFdoaXRlUGl4
ZWxPZlNjcmVlbigKCiAgICBTY3JlZW4qCgopOwpleHRlcm4gdW5zaWduZWQgbG9uZyBYTmV4dFJl
cXVlc3QoCgogICAgRGlzcGxheSoKCik7CmV4dGVybiB1bnNpZ25lZCBsb25nIFhMYXN0S25vd25S
ZXF1ZXN0UHJvY2Vzc2VkKAoKICAgIERpc3BsYXkqCgopOwpleHRlcm4gY2hhciAqWFNlcnZlclZl
bmRvcigKCiAgICBEaXNwbGF5KgoKKTsKZXh0ZXJuIGNoYXIgKlhEaXNwbGF5U3RyaW5nKAoKICAg
IERpc3BsYXkqCgopOwpleHRlcm4gQ29sb3JtYXAgWERlZmF1bHRDb2xvcm1hcCgKCiAgICBEaXNw
bGF5KiAsCiAgICBpbnQKCik7CmV4dGVybiBDb2xvcm1hcCBYRGVmYXVsdENvbG9ybWFwT2ZTY3Jl
ZW4oCgogICAgU2NyZWVuKgoKKTsKZXh0ZXJuIERpc3BsYXkgKlhEaXNwbGF5T2ZTY3JlZW4oCgog
ICAgU2NyZWVuKgoKKTsKZXh0ZXJuIFNjcmVlbiAqWFNjcmVlbk9mRGlzcGxheSgKCiAgICBEaXNw
bGF5KiAsCiAgICBpbnQKCik7CmV4dGVybiBTY3JlZW4gKlhEZWZhdWx0U2NyZWVuT2ZEaXNwbGF5
KAoKICAgIERpc3BsYXkqCgopOwpleHRlcm4gbG9uZyBYRXZlbnRNYXNrT2ZTY3JlZW4oCgogICAg
U2NyZWVuKgoKKTsKCmV4dGVybiBpbnQgWFNjcmVlbk51bWJlck9mU2NyZWVuKAoKICAgIFNjcmVl
bioKCik7Cgp0eXBlZGVmIGludCAoKlhFcnJvckhhbmRsZXIpICgKCiAgICBEaXNwbGF5KiAsCiAg
ICBYRXJyb3JFdmVudCoKCik7CgpleHRlcm4gWEVycm9ySGFuZGxlciBYU2V0RXJyb3JIYW5kbGVy
ICgKCiAgICBYRXJyb3JIYW5kbGVyCgopOwoKCnR5cGVkZWYgaW50ICgqWElPRXJyb3JIYW5kbGVy
KSAoCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gWElPRXJyb3JIYW5kbGVyIFhTZXRJT0Vycm9y
SGFuZGxlciAoCgogICAgWElPRXJyb3JIYW5kbGVyCgopOwoKCmV4dGVybiBYUGl4bWFwRm9ybWF0
VmFsdWVzICpYTGlzdFBpeG1hcEZvcm1hdHMoCgogICAgRGlzcGxheSogLAogICAgaW50KgoKKTsK
ZXh0ZXJuIGludCAqWExpc3REZXB0aHMoCgogICAgRGlzcGxheSogLAogICAgaW50ICwKICAgIGlu
dCoKCik7CgoKCmV4dGVybiBpbnQgWFJlY29uZmlndXJlV01XaW5kb3coCgogICAgRGlzcGxheSog
LAogICAgV2luZG93ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgWFdpbmRvd0No
YW5nZXMqCgopOwoKZXh0ZXJuIGludCBYR2V0V01Qcm90b2NvbHMoCgogICAgRGlzcGxheSogLAog
ICAgV2luZG93ICwKICAgIEF0b20qKiAsCiAgICBpbnQqCgopOwpleHRlcm4gaW50IFhTZXRXTVBy
b3RvY29scygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgQXRvbSogLAogICAgaW50
CgopOwpleHRlcm4gaW50IFhJY29uaWZ5V2luZG93KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRv
dyAsCiAgICBpbnQKCik7CmV4dGVybiBpbnQgWFdpdGhkcmF3V2luZG93KAoKICAgIERpc3BsYXkq
ICwKICAgIFdpbmRvdyAsCiAgICBpbnQKCik7CmV4dGVybiBpbnQgWEdldENvbW1hbmQoCgogICAg
RGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGNoYXIqKiogLAogICAgaW50KgoKKTsKZXh0ZXJu
IGludCBYR2V0V01Db2xvcm1hcFdpbmRvd3MoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwK
ICAgIFdpbmRvdyoqICwKICAgIGludCoKCik7CmV4dGVybiBpbnQgWFNldFdNQ29sb3JtYXBXaW5k
b3dzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBXaW5kb3cqICwKICAgIGludAoK
KTsKZXh0ZXJuIHZvaWQgWEZyZWVTdHJpbmdMaXN0KAoKICAgIGNoYXIqKgoKKTsKZXh0ZXJuIGlu
dCBYU2V0VHJhbnNpZW50Rm9ySGludCgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAg
V2luZG93CgopOwoKCgpleHRlcm4gaW50IFhBY3RpdmF0ZVNjcmVlblNhdmVyKAoKICAgIERpc3Bs
YXkqCgopOwoKZXh0ZXJuIGludCBYQWRkSG9zdCgKCiAgICBEaXNwbGF5KiAsCiAgICBYSG9zdEFk
ZHJlc3MqCgopOwoKZXh0ZXJuIGludCBYQWRkSG9zdHMoCgogICAgRGlzcGxheSogLAogICAgWEhv
c3RBZGRyZXNzKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhBZGRUb0V4dGVuc2lvbkxpc3Qo
CgogICAgc3RydWN0IF9YRXh0RGF0YSoqICwKICAgIFhFeHREYXRhKgoKKTsKCmV4dGVybiBpbnQg
WEFkZFRvU2F2ZVNldCgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50
IFhBbGxvY0NvbG9yKAoKICAgIERpc3BsYXkqICwKICAgIENvbG9ybWFwICwKICAgIFhDb2xvcioK
Cik7CgpleHRlcm4gaW50IFhBbGxvY0NvbG9yQ2VsbHMoCgogICAgRGlzcGxheSogLAogICAgQ29s
b3JtYXAgLAogICAgaW50ICwKICAgIHVuc2lnbmVkIGxvbmcqICwKICAgIHVuc2lnbmVkIGludCAs
CiAgICB1bnNpZ25lZCBsb25nKiAsCiAgICB1bnNpZ25lZCBpbnQKCik7CgpleHRlcm4gaW50IFhB
bGxvY0NvbG9yUGxhbmVzKAoKICAgIERpc3BsYXkqICwKICAgIENvbG9ybWFwICwKICAgIGludCAs
CiAgICB1bnNpZ25lZCBsb25nKiAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICBp
bnQgLAogICAgdW5zaWduZWQgbG9uZyogLAogICAgdW5zaWduZWQgbG9uZyogLAogICAgdW5zaWdu
ZWQgbG9uZyoKCik7CgpleHRlcm4gaW50IFhBbGxvY05hbWVkQ29sb3IoCgogICAgRGlzcGxheSog
LAogICAgQ29sb3JtYXAgLAogICAgY29uc3QgY2hhciogLAogICAgWENvbG9yKiAsCiAgICBYQ29s
b3IqCgopOwoKZXh0ZXJuIGludCBYQWxsb3dFdmVudHMoCgogICAgRGlzcGxheSogLAogICAgaW50
ICwKICAgIFRpbWUKCik7CgpleHRlcm4gaW50IFhBdXRvUmVwZWF0T2ZmKAoKICAgIERpc3BsYXkq
CgopOwoKZXh0ZXJuIGludCBYQXV0b1JlcGVhdE9uKAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJu
IGludCBYQmVsbCgKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhCaXRt
YXBCaXRPcmRlcigKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiBpbnQgWEJpdG1hcFBhZCgKCiAg
ICBEaXNwbGF5KgoKKTsKCmV4dGVybiBpbnQgWEJpdG1hcFVuaXQoCgogICAgRGlzcGxheSoKCik7
CgpleHRlcm4gaW50IFhDZWxsc09mU2NyZWVuKAoKICAgIFNjcmVlbioKCik7CgpleHRlcm4gaW50
IFhDaGFuZ2VBY3RpdmVQb2ludGVyR3JhYigKCiAgICBEaXNwbGF5KiAsCiAgICB1bnNpZ25lZCBp
bnQgLAogICAgQ3Vyc29yICwKICAgIFRpbWUKCik7CgpleHRlcm4gaW50IFhDaGFuZ2VHQygKCiAg
ICBEaXNwbGF5KiAsCiAgICBHQyAsCiAgICB1bnNpZ25lZCBsb25nICwKICAgIFhHQ1ZhbHVlcyoK
Cik7CgpleHRlcm4gaW50IFhDaGFuZ2VLZXlib2FyZENvbnRyb2woCgogICAgRGlzcGxheSogLAog
ICAgdW5zaWduZWQgbG9uZyAsCiAgICBYS2V5Ym9hcmRDb250cm9sKgoKKTsKCmV4dGVybiBpbnQg
WENoYW5nZUtleWJvYXJkTWFwcGluZygKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQgLAogICAgaW50
ICwKICAgIEtleVN5bSogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYQ2hhbmdlUG9pbnRlckNv
bnRyb2woCgogICAgRGlzcGxheSogLAogICAgaW50ICwKICAgIGludCAsCiAgICBpbnQgLAogICAg
aW50ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWENoYW5nZVByb3BlcnR5KAoKICAgIERpc3Bs
YXkqICwKICAgIFdpbmRvdyAsCiAgICBBdG9tICwKICAgIEF0b20gLAogICAgaW50ICwKICAgIGlu
dCAsCiAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhD
aGFuZ2VTYXZlU2V0KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQKCik7Cgpl
eHRlcm4gaW50IFhDaGFuZ2VXaW5kb3dBdHRyaWJ1dGVzKAoKICAgIERpc3BsYXkqICwKICAgIFdp
bmRvdyAsCiAgICB1bnNpZ25lZCBsb25nICwKICAgIFhTZXRXaW5kb3dBdHRyaWJ1dGVzKgoKKTsK
CmV4dGVybiBpbnQgWENoZWNrSWZFdmVudCgKCiAgICBEaXNwbGF5KiAsCiAgICBYRXZlbnQqICwK
ICAgIGludCAoKikgKAoKICAgICAgICAgICAgICAgRGlzcGxheSogLAogICAgICAgICAgICAgICBY
RXZlbnQqICwKICAgICAgICAgICAgICAgWFBvaW50ZXIKCiAgICAgICAgICAgICApICwKICAgIFhQ
b2ludGVyCgopOwoKZXh0ZXJuIGludCBYQ2hlY2tNYXNrRXZlbnQoCgogICAgRGlzcGxheSogLAog
ICAgbG9uZyAsCiAgICBYRXZlbnQqCgopOwoKZXh0ZXJuIGludCBYQ2hlY2tUeXBlZEV2ZW50KAoK
ICAgIERpc3BsYXkqICwKICAgIGludCAsCiAgICBYRXZlbnQqCgopOwoKZXh0ZXJuIGludCBYQ2hl
Y2tUeXBlZFdpbmRvd0V2ZW50KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQg
LAogICAgWEV2ZW50KgoKKTsKCmV4dGVybiBpbnQgWENoZWNrV2luZG93RXZlbnQoCgogICAgRGlz
cGxheSogLAogICAgV2luZG93ICwKICAgIGxvbmcgLAogICAgWEV2ZW50KgoKKTsKCmV4dGVybiBp
bnQgWENpcmN1bGF0ZVN1YndpbmRvd3MoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAg
IGludAoKKTsKCmV4dGVybiBpbnQgWENpcmN1bGF0ZVN1YndpbmRvd3NEb3duKAoKICAgIERpc3Bs
YXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWENpcmN1bGF0ZVN1YndpbmRvd3NVcCgK
CiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhDbGVhckFyZWEoCgog
ICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5zaWdu
ZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhDbGVh
cldpbmRvdygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhDbG9z
ZURpc3BsYXkoCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gaW50IFhDb25maWd1cmVXaW5kb3co
CgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBYV2lu
ZG93Q2hhbmdlcyoKCik7CgpleHRlcm4gaW50IFhDb25uZWN0aW9uTnVtYmVyKAoKICAgIERpc3Bs
YXkqCgopOwoKZXh0ZXJuIGludCBYQ29udmVydFNlbGVjdGlvbigKCiAgICBEaXNwbGF5KiAsCiAg
ICBBdG9tICwKICAgIEF0b20gLAogICAgQXRvbSAsCiAgICBXaW5kb3cgLAogICAgVGltZQoKKTsK
CmV4dGVybiBpbnQgWENvcHlBcmVhKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAg
IERyYXdhYmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5zaWduZWQgaW50
ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBY
Q29weUdDKAoKICAgIERpc3BsYXkqICwKICAgIEdDICwKICAgIHVuc2lnbmVkIGxvbmcgLAogICAg
R0MKCik7CgpleHRlcm4gaW50IFhDb3B5UGxhbmUoCgogICAgRGlzcGxheSogLAogICAgRHJhd2Fi
bGUgLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICB1bnNp
Z25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5z
aWduZWQgbG9uZwoKKTsKCmV4dGVybiBpbnQgWERlZmF1bHREZXB0aCgKCiAgICBEaXNwbGF5KiAs
CiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhEZWZhdWx0RGVwdGhPZlNjcmVlbigKCiAgICBTY3Jl
ZW4qCgopOwoKZXh0ZXJuIGludCBYRGVmYXVsdFNjcmVlbigKCiAgICBEaXNwbGF5KgoKKTsKCmV4
dGVybiBpbnQgWERlZmluZUN1cnNvcigKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAg
Q3Vyc29yCgopOwoKZXh0ZXJuIGludCBYRGVsZXRlUHJvcGVydHkoCgogICAgRGlzcGxheSogLAog
ICAgV2luZG93ICwKICAgIEF0b20KCik7CgpleHRlcm4gaW50IFhEZXN0cm95V2luZG93KAoKICAg
IERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWERlc3Ryb3lTdWJ3aW5kb3dz
KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWERvZXNCYWNraW5n
U3RvcmUoCgogICAgU2NyZWVuKgoKKTsKCmV4dGVybiBpbnQgWERvZXNTYXZlVW5kZXJzKAoKICAg
IFNjcmVlbioKCik7CgpleHRlcm4gaW50IFhEaXNhYmxlQWNjZXNzQ29udHJvbCgKCiAgICBEaXNw
bGF5KgoKKTsKCgpleHRlcm4gaW50IFhEaXNwbGF5Q2VsbHMoCgogICAgRGlzcGxheSogLAogICAg
aW50CgopOwoKZXh0ZXJuIGludCBYRGlzcGxheUhlaWdodCgKCiAgICBEaXNwbGF5KiAsCiAgICBp
bnQKCik7CgpleHRlcm4gaW50IFhEaXNwbGF5SGVpZ2h0TU0oCgogICAgRGlzcGxheSogLAogICAg
aW50CgopOwoKZXh0ZXJuIGludCBYRGlzcGxheUtleWNvZGVzKAoKICAgIERpc3BsYXkqICwKICAg
IGludCogLAogICAgaW50KgoKKTsKCmV4dGVybiBpbnQgWERpc3BsYXlQbGFuZXMoCgogICAgRGlz
cGxheSogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRGlzcGxheVdpZHRoKAoKICAgIERpc3Bs
YXkqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWERpc3BsYXlXaWR0aE1NKAoKICAgIERpc3Bs
YXkqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWERyYXdBcmMoCgogICAgRGlzcGxheSogLAog
ICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBp
bnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50
IFhEcmF3QXJjcygKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBY
QXJjKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhEcmF3SW1hZ2VTdHJpbmcoCgogICAgRGlz
cGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICBj
b25zdCBjaGFyKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhEcmF3SW1hZ2VTdHJpbmcxNigK
CiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50
ICwKICAgIGNvbnN0IFhDaGFyMmIqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWERyYXdMaW5l
KAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBp
bnQgLAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWERyYXdMaW5lcygKCiAgICBE
aXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBYUG9pbnQqICwKICAgIGludCAs
CiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhEcmF3UG9pbnQoCgogICAgRGlzcGxheSogLAogICAg
RHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWERy
YXdQb2ludHMoCgogICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgWFBv
aW50KiAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRHJhd1JlY3RhbmdsZSgK
CiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50
ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQKCik7CgpleHRlcm4gaW50IFhE
cmF3UmVjdGFuZ2xlcygKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAg
ICBYUmVjdGFuZ2xlKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhEcmF3U2VnbWVudHMoCgog
ICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgWFNlZ21lbnQqICwKICAg
IGludAoKKTsKCmV4dGVybiBpbnQgWERyYXdTdHJpbmcoCgogICAgRGlzcGxheSogLAogICAgRHJh
d2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICBjb25zdCBjaGFyKiAsCiAg
ICBpbnQKCik7CgpleHRlcm4gaW50IFhEcmF3U3RyaW5nMTYoCgogICAgRGlzcGxheSogLAogICAg
RHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICBjb25zdCBYQ2hhcjJi
KiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhEcmF3VGV4dCgKCiAgICBEaXNwbGF5KiAsCiAg
ICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIFhUZXh0SXRlbSog
LAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRHJhd1RleHQxNigKCiAgICBEaXNwbGF5KiAsCiAg
ICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIFhUZXh0SXRlbTE2
KiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhFbmFibGVBY2Nlc3NDb250cm9sKAoKICAgIERp
c3BsYXkqCgopOwoKZXh0ZXJuIGludCBYRXZlbnRzUXVldWVkKAoKICAgIERpc3BsYXkqICwKICAg
IGludAoKKTsKCmV4dGVybiBpbnQgWEZldGNoTmFtZSgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5k
b3cgLAogICAgY2hhcioqCgopOwoKZXh0ZXJuIGludCBYRmlsbEFyYygKCiAgICBEaXNwbGF5KiAs
CiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVk
IGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBp
bnQgWEZpbGxBcmNzKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAg
IFhBcmMqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWEZpbGxQb2x5Z29uKAoKICAgIERpc3Bs
YXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIFhQb2ludCogLAogICAgaW50ICwKICAg
IGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhGaWxsUmVjdGFuZ2xlKAoKICAgIERpc3Bs
YXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5z
aWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludAoKKTsKCmV4dGVybiBpbnQgWEZpbGxSZWN0YW5n
bGVzKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIFhSZWN0YW5n
bGUqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWEZsdXNoKAoKICAgIERpc3BsYXkqCgopOwoK
ZXh0ZXJuIGludCBYRm9yY2VTY3JlZW5TYXZlcigKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQKCik7
CgpleHRlcm4gaW50IFhGcmVlKAoKICAgIHZvaWQqCgopOwoKZXh0ZXJuIGludCBYRnJlZUNvbG9y
bWFwKAoKICAgIERpc3BsYXkqICwKICAgIENvbG9ybWFwCgopOwoKZXh0ZXJuIGludCBYRnJlZUNv
bG9ycygKCiAgICBEaXNwbGF5KiAsCiAgICBDb2xvcm1hcCAsCiAgICB1bnNpZ25lZCBsb25nKiAs
CiAgICBpbnQgLAogICAgdW5zaWduZWQgbG9uZwoKKTsKCmV4dGVybiBpbnQgWEZyZWVDdXJzb3Io
CgogICAgRGlzcGxheSogLAogICAgQ3Vyc29yCgopOwoKZXh0ZXJuIGludCBYRnJlZUV4dGVuc2lv
bkxpc3QoCgogICAgY2hhcioqCgopOwoKZXh0ZXJuIGludCBYRnJlZUZvbnQoCgogICAgRGlzcGxh
eSogLAogICAgWEZvbnRTdHJ1Y3QqCgopOwoKZXh0ZXJuIGludCBYRnJlZUZvbnRJbmZvKAoKICAg
IGNoYXIqKiAsCiAgICBYRm9udFN0cnVjdCogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRnJl
ZUZvbnROYW1lcygKCiAgICBjaGFyKioKCik7CgpleHRlcm4gaW50IFhGcmVlRm9udFBhdGgoCgog
ICAgY2hhcioqCgopOwoKZXh0ZXJuIGludCBYRnJlZUdDKAoKICAgIERpc3BsYXkqICwKICAgIEdD
CgopOwoKZXh0ZXJuIGludCBYRnJlZU1vZGlmaWVybWFwKAoKICAgIFhNb2RpZmllcktleW1hcCoK
Cik7CgpleHRlcm4gaW50IFhGcmVlUGl4bWFwKAoKICAgIERpc3BsYXkqICwKICAgIFBpeG1hcAoK
KTsKCmV4dGVybiBpbnQgWEdlb21ldHJ5KAoKICAgIERpc3BsYXkqICwKICAgIGludCAsCiAgICBj
b25zdCBjaGFyKiAsCiAgICBjb25zdCBjaGFyKiAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5z
aWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGlu
dCogLAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIGludCoKCik7CgpleHRlcm4gaW50IFhHZXRF
cnJvckRhdGFiYXNlVGV4dCgKCiAgICBEaXNwbGF5KiAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBj
b25zdCBjaGFyKiAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBjaGFyKiAsCiAgICBpbnQKCik7Cgpl
eHRlcm4gaW50IFhHZXRFcnJvclRleHQoCgogICAgRGlzcGxheSogLAogICAgaW50ICwKICAgIGNo
YXIqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWEdldEZvbnRQcm9wZXJ0eSgKCiAgICBYRm9u
dFN0cnVjdCogLAogICAgQXRvbSAsCiAgICB1bnNpZ25lZCBsb25nKgoKKTsKCmV4dGVybiBpbnQg
WEdldEdDVmFsdWVzKAoKICAgIERpc3BsYXkqICwKICAgIEdDICwKICAgIHVuc2lnbmVkIGxvbmcg
LAogICAgWEdDVmFsdWVzKgoKKTsKCmV4dGVybiBpbnQgWEdldEdlb21ldHJ5KAoKICAgIERpc3Bs
YXkqICwKICAgIERyYXdhYmxlICwKICAgIFdpbmRvdyogLAogICAgaW50KiAsCiAgICBpbnQqICwK
ICAgIHVuc2lnbmVkIGludCogLAogICAgdW5zaWduZWQgaW50KiAsCiAgICB1bnNpZ25lZCBpbnQq
ICwKICAgIHVuc2lnbmVkIGludCoKCik7CgpleHRlcm4gaW50IFhHZXRJY29uTmFtZSgKCiAgICBE
aXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgY2hhcioqCgopOwoKZXh0ZXJuIGludCBYR2V0SW5w
dXRGb2N1cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cqICwKICAgIGludCoKCik7CgpleHRl
cm4gaW50IFhHZXRLZXlib2FyZENvbnRyb2woCgogICAgRGlzcGxheSogLAogICAgWEtleWJvYXJk
U3RhdGUqCgopOwoKZXh0ZXJuIGludCBYR2V0UG9pbnRlckNvbnRyb2woCgogICAgRGlzcGxheSog
LAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIGludCoKCik7CgpleHRlcm4gaW50IFhHZXRQb2lu
dGVyTWFwcGluZygKCiAgICBEaXNwbGF5KiAsCiAgICB1bnNpZ25lZCBjaGFyKiAsCiAgICBpbnQK
Cik7CgpleHRlcm4gaW50IFhHZXRTY3JlZW5TYXZlcigKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQq
ICwKICAgIGludCogLAogICAgaW50KiAsCiAgICBpbnQqCgopOwoKZXh0ZXJuIGludCBYR2V0VHJh
bnNpZW50Rm9ySGludCgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgV2luZG93KgoK
KTsKCmV4dGVybiBpbnQgWEdldFdpbmRvd1Byb3BlcnR5KAoKICAgIERpc3BsYXkqICwKICAgIFdp
bmRvdyAsCiAgICBBdG9tICwKICAgIGxvbmcgLAogICAgbG9uZyAsCiAgICBpbnQgLAogICAgQXRv
bSAsCiAgICBBdG9tKiAsCiAgICBpbnQqICwKICAgIHVuc2lnbmVkIGxvbmcqICwKICAgIHVuc2ln
bmVkIGxvbmcqICwKICAgIHVuc2lnbmVkIGNoYXIqKgoKKTsKCmV4dGVybiBpbnQgWEdldFdpbmRv
d0F0dHJpYnV0ZXMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFhXaW5kb3dBdHRy
aWJ1dGVzKgoKKTsKCmV4dGVybiBpbnQgWEdyYWJCdXR0b24oCgogICAgRGlzcGxheSogLAogICAg
dW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBXaW5kb3cgLAogICAgaW50ICwK
ICAgIHVuc2lnbmVkIGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIFdpbmRvdyAsCiAgICBD
dXJzb3IKCik7CgpleHRlcm4gaW50IFhHcmFiS2V5KAoKICAgIERpc3BsYXkqICwKICAgIGludCAs
CiAgICB1bnNpZ25lZCBpbnQgLAogICAgV2luZG93ICwKICAgIGludCAsCiAgICBpbnQgLAogICAg
aW50CgopOwoKZXh0ZXJuIGludCBYR3JhYktleWJvYXJkKAoKICAgIERpc3BsYXkqICwKICAgIFdp
bmRvdyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICBUaW1lCgopOwoKZXh0ZXJu
IGludCBYR3JhYlBvaW50ZXIoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGludCAs
CiAgICB1bnNpZ25lZCBpbnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICBXaW5kb3cgLAogICAg
Q3Vyc29yICwKICAgIFRpbWUKCik7CgpleHRlcm4gaW50IFhHcmFiU2VydmVyKAoKICAgIERpc3Bs
YXkqCgopOwoKZXh0ZXJuIGludCBYSGVpZ2h0TU1PZlNjcmVlbigKCiAgICBTY3JlZW4qCgopOwoK
ZXh0ZXJuIGludCBYSGVpZ2h0T2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKKTsKCmV4dGVybiBpbnQg
WElmRXZlbnQoCgogICAgRGlzcGxheSogLAogICAgWEV2ZW50KiAsCiAgICBpbnQgKCopICgKCiAg
ICAgICAgICAgICAgIERpc3BsYXkqICwKICAgICAgICAgICAgICAgWEV2ZW50KiAsCiAgICAgICAg
ICAgICAgIFhQb2ludGVyCgogICAgICAgICAgICAgKSAsCiAgICBYUG9pbnRlcgoKKTsKCmV4dGVy
biBpbnQgWEltYWdlQnl0ZU9yZGVyKAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJuIGludCBYSW5z
dGFsbENvbG9ybWFwKAoKICAgIERpc3BsYXkqICwKICAgIENvbG9ybWFwCgopOwoKZXh0ZXJuIEtl
eUNvZGUgWEtleXN5bVRvS2V5Y29kZSgKCiAgICBEaXNwbGF5KiAsCiAgICBLZXlTeW0KCik7Cgpl
eHRlcm4gaW50IFhLaWxsQ2xpZW50KAoKICAgIERpc3BsYXkqICwKICAgIFhJRAoKKTsKCmV4dGVy
biBpbnQgWExvb2t1cENvbG9yKAoKICAgIERpc3BsYXkqICwKICAgIENvbG9ybWFwICwKICAgIGNv
bnN0IGNoYXIqICwKICAgIFhDb2xvciogLAogICAgWENvbG9yKgoKKTsKCmV4dGVybiBpbnQgWExv
d2VyV2luZG93KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWE1h
cFJhaXNlZCgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhNYXBT
dWJ3aW5kb3dzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWE1h
cFdpbmRvdygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhNYXNr
RXZlbnQoCgogICAgRGlzcGxheSogLAogICAgbG9uZyAsCiAgICBYRXZlbnQqCgopOwoKZXh0ZXJu
IGludCBYTWF4Q21hcHNPZlNjcmVlbigKCiAgICBTY3JlZW4qCgopOwoKZXh0ZXJuIGludCBYTWlu
Q21hcHNPZlNjcmVlbigKCiAgICBTY3JlZW4qCgopOwoKZXh0ZXJuIGludCBYTW92ZVJlc2l6ZVdp
bmRvdygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIGludCAsCiAg
ICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50CgopOwoKZXh0ZXJuIGludCBYTW92ZVdp
bmRvdygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIGludAoKKTsK
CmV4dGVybiBpbnQgWE5leHRFdmVudCgKCiAgICBEaXNwbGF5KiAsCiAgICBYRXZlbnQqCgopOwoK
ZXh0ZXJuIGludCBYTm9PcCgKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiBpbnQgWFBhcnNlQ29s
b3IoCgogICAgRGlzcGxheSogLAogICAgQ29sb3JtYXAgLAogICAgY29uc3QgY2hhciogLAogICAg
WENvbG9yKgoKKTsKCmV4dGVybiBpbnQgWFBhcnNlR2VvbWV0cnkoCgogICAgY29uc3QgY2hhciog
LAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIHVuc2lnbmVkIGludCogLAogICAgdW5zaWduZWQg
aW50KgoKKTsKCmV4dGVybiBpbnQgWFBlZWtFdmVudCgKCiAgICBEaXNwbGF5KiAsCiAgICBYRXZl
bnQqCgopOwoKZXh0ZXJuIGludCBYUGVla0lmRXZlbnQoCgogICAgRGlzcGxheSogLAogICAgWEV2
ZW50KiAsCiAgICBpbnQgKCopICgKCiAgICAgICAgICAgICAgIERpc3BsYXkqICwKICAgICAgICAg
ICAgICAgWEV2ZW50KiAsCiAgICAgICAgICAgICAgIFhQb2ludGVyCgogICAgICAgICAgICAgKSAs
CiAgICBYUG9pbnRlcgoKKTsKCmV4dGVybiBpbnQgWFBlbmRpbmcoCgogICAgRGlzcGxheSoKCik7
CgpleHRlcm4gaW50IFhQbGFuZXNPZlNjcmVlbigKCiAgICBTY3JlZW4qCgoKKTsKCmV4dGVybiBp
bnQgWFByb3RvY29sUmV2aXNpb24oCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gaW50IFhQcm90
b2NvbFZlcnNpb24oCgogICAgRGlzcGxheSoKCik7CgoKZXh0ZXJuIGludCBYUHV0QmFja0V2ZW50
KAoKICAgIERpc3BsYXkqICwKICAgIFhFdmVudCoKCik7CgpleHRlcm4gaW50IFhQdXRJbWFnZSgK
CiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBYSW1hZ2UqICwKICAg
IGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAog
ICAgdW5zaWduZWQgaW50CgopOwoKZXh0ZXJuIGludCBYUUxlbmd0aCgKCiAgICBEaXNwbGF5KgoK
KTsKCmV4dGVybiBpbnQgWFF1ZXJ5QmVzdEN1cnNvcigKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3
YWJsZSAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVk
IGludCogLAogICAgdW5zaWduZWQgaW50KgoKKTsKCmV4dGVybiBpbnQgWFF1ZXJ5QmVzdFNpemUo
CgogICAgRGlzcGxheSogLAogICAgaW50ICwKICAgIERyYXdhYmxlICwKICAgIHVuc2lnbmVkIGlu
dCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50KiAsCiAgICB1bnNpZ25lZCBp
bnQqCgopOwoKZXh0ZXJuIGludCBYUXVlcnlCZXN0U3RpcHBsZSgKCiAgICBEaXNwbGF5KiAsCiAg
ICBEcmF3YWJsZSAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVu
c2lnbmVkIGludCogLAogICAgdW5zaWduZWQgaW50KgoKKTsKCmV4dGVybiBpbnQgWFF1ZXJ5QmVz
dFRpbGUoCgogICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgdW5zaWduZWQgaW50ICwK
ICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQqICwKICAgIHVuc2lnbmVkIGludCoK
Cik7CgpleHRlcm4gaW50IFhRdWVyeUNvbG9yKAoKICAgIERpc3BsYXkqICwKICAgIENvbG9ybWFw
ICwKICAgIFhDb2xvcioKCik7CgpleHRlcm4gaW50IFhRdWVyeUNvbG9ycygKCiAgICBEaXNwbGF5
KiAsCiAgICBDb2xvcm1hcCAsCiAgICBYQ29sb3IqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQg
WFF1ZXJ5RXh0ZW5zaW9uKAoKICAgIERpc3BsYXkqICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGlu
dCogLAogICAgaW50KiAsCiAgICBpbnQqCgopOwoKZXh0ZXJuIGludCBYUXVlcnlLZXltYXAoCgog
ICAgRGlzcGxheSogLAogICAgY2hhciBbMzJdCgopOwoKZXh0ZXJuIGludCBYUXVlcnlQb2ludGVy
KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBXaW5kb3cqICwKICAgIFdpbmRvdyog
LAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIGludCogLAogICAgaW50KiAsCiAgICB1bnNpZ25l
ZCBpbnQqCgopOwoKZXh0ZXJuIGludCBYUXVlcnlUZXh0RXh0ZW50cygKCiAgICBEaXNwbGF5KiAs
CiAgICBYSUQgLAogICAgY29uc3QgY2hhciogLAogICAgaW50ICwKICAgIGludCogLAogICAgaW50
KiAsCiAgICBpbnQqICwKICAgIFhDaGFyU3RydWN0KgoKKTsKCmV4dGVybiBpbnQgWFF1ZXJ5VGV4
dEV4dGVudHMxNigKCiAgICBEaXNwbGF5KiAsCiAgICBYSUQgLAogICAgY29uc3QgWENoYXIyYiog
LAogICAgaW50ICwKICAgIGludCogLAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIFhDaGFyU3Ry
dWN0KgoKKTsKCmV4dGVybiBpbnQgWFF1ZXJ5VHJlZSgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5k
b3cgLAogICAgV2luZG93KiAsCiAgICBXaW5kb3cqICwKICAgIFdpbmRvdyoqICwKICAgIHVuc2ln
bmVkIGludCoKCik7CgpleHRlcm4gaW50IFhSYWlzZVdpbmRvdygKCiAgICBEaXNwbGF5KiAsCiAg
ICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhSZWFkQml0bWFwRmlsZSgKCiAgICBEaXNwbGF5KiAs
CiAgICBEcmF3YWJsZSAsCiAgICBjb25zdCBjaGFyKiAsCiAgICB1bnNpZ25lZCBpbnQqICwKICAg
IHVuc2lnbmVkIGludCogLAogICAgUGl4bWFwKiAsCiAgICBpbnQqICwKICAgIGludCoKCik7Cgpl
eHRlcm4gaW50IFhSZWFkQml0bWFwRmlsZURhdGEoCgogICAgY29uc3QgY2hhciogLAogICAgdW5z
aWduZWQgaW50KiAsCiAgICB1bnNpZ25lZCBpbnQqICwKICAgIHVuc2lnbmVkIGNoYXIqKiAsCiAg
ICBpbnQqICwKICAgIGludCoKCik7CgpleHRlcm4gaW50IFhSZWJpbmRLZXlzeW0oCgogICAgRGlz
cGxheSogLAogICAgS2V5U3ltICwKICAgIEtleVN5bSogLAogICAgaW50ICwKICAgIGNvbnN0IHVu
c2lnbmVkIGNoYXIqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFJlY29sb3JDdXJzb3IoCgog
ICAgRGlzcGxheSogLAogICAgQ3Vyc29yICwKICAgIFhDb2xvciogLAogICAgWENvbG9yKgoKKTsK
CmV4dGVybiBpbnQgWFJlZnJlc2hLZXlib2FyZE1hcHBpbmcoCgogICAgWE1hcHBpbmdFdmVudCoK
Cik7CgpleHRlcm4gaW50IFhSZW1vdmVGcm9tU2F2ZVNldCgKCiAgICBEaXNwbGF5KiAsCiAgICBX
aW5kb3cKCik7CgpleHRlcm4gaW50IFhSZW1vdmVIb3N0KAoKICAgIERpc3BsYXkqICwKICAgIFhI
b3N0QWRkcmVzcyoKCik7CgpleHRlcm4gaW50IFhSZW1vdmVIb3N0cygKCiAgICBEaXNwbGF5KiAs
CiAgICBYSG9zdEFkZHJlc3MqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFJlcGFyZW50V2lu
ZG93KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBXaW5kb3cgLAogICAgaW50ICwK
ICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFJlc2V0U2NyZWVuU2F2ZXIoCgogICAgRGlzcGxheSoK
Cik7CgpleHRlcm4gaW50IFhSZXNpemVXaW5kb3coCgogICAgRGlzcGxheSogLAogICAgV2luZG93
ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQKCik7CgpleHRlcm4gaW50IFhS
ZXN0YWNrV2luZG93cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cqICwKICAgIGludAoKKTsK
CmV4dGVybiBpbnQgWFJvdGF0ZUJ1ZmZlcnMoCgogICAgRGlzcGxheSogLAogICAgaW50CgopOwoK
ZXh0ZXJuIGludCBYUm90YXRlV2luZG93UHJvcGVydGllcygKCiAgICBEaXNwbGF5KiAsCiAgICBX
aW5kb3cgLAogICAgQXRvbSogLAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFNj
cmVlbkNvdW50KAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJuIGludCBYU2VsZWN0SW5wdXQoCgog
ICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGxvbmcKCik7CgpleHRlcm4gaW50IFhTZW5k
RXZlbnQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGludCAsCiAgICBsb25nICwK
ICAgIFhFdmVudCoKCik7CgpleHRlcm4gaW50IFhTZXRBY2Nlc3NDb250cm9sKAoKICAgIERpc3Bs
YXkqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFNldEFyY01vZGUoCgogICAgRGlzcGxheSog
LAogICAgR0MgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0QmFja2dyb3VuZCgKCiAgICBE
aXNwbGF5KiAsCiAgICBHQyAsCiAgICB1bnNpZ25lZCBsb25nCgopOwoKZXh0ZXJuIGludCBYU2V0
Q2xpcE1hc2soCgogICAgRGlzcGxheSogLAogICAgR0MgLAogICAgUGl4bWFwCgopOwoKZXh0ZXJu
IGludCBYU2V0Q2xpcE9yaWdpbigKCiAgICBEaXNwbGF5KiAsCiAgICBHQyAsCiAgICBpbnQgLAog
ICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0Q2xpcFJlY3RhbmdsZXMoCgogICAgRGlzcGxheSog
LAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBpbnQg
LAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0Q2xvc2VEb3duTW9kZSgKCiAgICBEaXNwbGF5
KiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXRDb21tYW5kKAoKICAgIERpc3BsYXkqICwK
ICAgIFdpbmRvdyAsCiAgICBjaGFyKiogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0RGFz
aGVzKAoKICAgIERpc3BsYXkqICwKICAgIEdDICwKICAgIGludCAsCiAgICBjb25zdCBjaGFyKiAs
CiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXRGaWxsUnVsZSgKCiAgICBEaXNwbGF5KiAsCiAg
ICBHQyAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXRGaWxsU3R5bGUoCgogICAgRGlzcGxh
eSogLAogICAgR0MgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0Rm9udCgKCiAgICBEaXNw
bGF5KiAsCiAgICBHQyAsCiAgICBGb250CgopOwoKZXh0ZXJuIGludCBYU2V0Rm9udFBhdGgoCgog
ICAgRGlzcGxheSogLAogICAgY2hhcioqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFNldEZv
cmVncm91bmQoCgogICAgRGlzcGxheSogLAogICAgR0MgLAogICAgdW5zaWduZWQgbG9uZwoKKTsK
CmV4dGVybiBpbnQgWFNldEZ1bmN0aW9uKAoKICAgIERpc3BsYXkqICwKICAgIEdDICwKICAgIGlu
dAoKKTsKCmV4dGVybiBpbnQgWFNldEdyYXBoaWNzRXhwb3N1cmVzKAoKICAgIERpc3BsYXkqICwK
ICAgIEdDICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFNldEljb25OYW1lKAoKICAgIERpc3Bs
YXkqICwKICAgIFdpbmRvdyAsCiAgICBjb25zdCBjaGFyKgoKKTsKCmV4dGVybiBpbnQgWFNldElu
cHV0Rm9jdXMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGludCAsCiAgICBUaW1l
CgopOwoKZXh0ZXJuIGludCBYU2V0TGluZUF0dHJpYnV0ZXMoCgogICAgRGlzcGxheSogLAogICAg
R0MgLAogICAgdW5zaWduZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgaW50CgopOwoK
ZXh0ZXJuIGludCBYU2V0TW9kaWZpZXJNYXBwaW5nKAoKICAgIERpc3BsYXkqICwKICAgIFhNb2Rp
ZmllcktleW1hcCoKCik7CgpleHRlcm4gaW50IFhTZXRQbGFuZU1hc2soCgogICAgRGlzcGxheSog
LAogICAgR0MgLAogICAgdW5zaWduZWQgbG9uZwoKKTsKCmV4dGVybiBpbnQgWFNldFBvaW50ZXJN
YXBwaW5nKAoKICAgIERpc3BsYXkqICwKICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqICwKICAgIGlu
dAoKKTsKCmV4dGVybiBpbnQgWFNldFNjcmVlblNhdmVyKAoKICAgIERpc3BsYXkqICwKICAgIGlu
dCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFNldFNlbGVj
dGlvbk93bmVyKAoKICAgIERpc3BsYXkqICwKICAgIEF0b20gLAogICAgV2luZG93ICwKICAgIFRp
bWUKCik7CgpleHRlcm4gaW50IFhTZXRTdGF0ZSgKCiAgICBEaXNwbGF5KiAsCiAgICBHQyAsCiAg
ICB1bnNpZ25lZCBsb25nICwKICAgIHVuc2lnbmVkIGxvbmcgLAogICAgaW50ICwKICAgIHVuc2ln
bmVkIGxvbmcKCik7CgpleHRlcm4gaW50IFhTZXRTdGlwcGxlKAoKICAgIERpc3BsYXkqICwKICAg
IEdDICwKICAgIFBpeG1hcAoKKTsKCmV4dGVybiBpbnQgWFNldFN1YndpbmRvd01vZGUoCgogICAg
RGlzcGxheSogLAogICAgR0MgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0VFNPcmlnaW4o
CgogICAgRGlzcGxheSogLAogICAgR0MgLAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBp
bnQgWFNldFRpbGUoCgogICAgRGlzcGxheSogLAogICAgR0MgLAogICAgUGl4bWFwCgopOwoKZXh0
ZXJuIGludCBYU2V0V2luZG93QmFja2dyb3VuZCgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cg
LAogICAgdW5zaWduZWQgbG9uZwoKKTsKCmV4dGVybiBpbnQgWFNldFdpbmRvd0JhY2tncm91bmRQ
aXhtYXAoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFBpeG1hcAoKKTsKCmV4dGVy
biBpbnQgWFNldFdpbmRvd0JvcmRlcigKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAg
dW5zaWduZWQgbG9uZwoKKTsKCmV4dGVybiBpbnQgWFNldFdpbmRvd0JvcmRlclBpeG1hcCgKCiAg
ICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgUGl4bWFwCgopOwoKZXh0ZXJuIGludCBYU2V0
V2luZG93Qm9yZGVyV2lkdGgoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIHVuc2ln
bmVkIGludAoKKTsKCmV4dGVybiBpbnQgWFNldFdpbmRvd0NvbG9ybWFwKAoKICAgIERpc3BsYXkq
ICwKICAgIFdpbmRvdyAsCiAgICBDb2xvcm1hcAoKKTsKCmV4dGVybiBpbnQgWFN0b3JlQnVmZmVy
KAoKICAgIERpc3BsYXkqICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludCAsCiAgICBpbnQKCik7
CgpleHRlcm4gaW50IFhTdG9yZUJ5dGVzKAoKICAgIERpc3BsYXkqICwKICAgIGNvbnN0IGNoYXIq
ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFN0b3JlQ29sb3IoCgogICAgRGlzcGxheSogLAog
ICAgQ29sb3JtYXAgLAogICAgWENvbG9yKgoKKTsKCmV4dGVybiBpbnQgWFN0b3JlQ29sb3JzKAoK
ICAgIERpc3BsYXkqICwKICAgIENvbG9ybWFwICwKICAgIFhDb2xvciogLAogICAgaW50CgopOwoK
ZXh0ZXJuIGludCBYU3RvcmVOYW1lKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBj
b25zdCBjaGFyKgoKKTsKCmV4dGVybiBpbnQgWFN0b3JlTmFtZWRDb2xvcigKCiAgICBEaXNwbGF5
KiAsCiAgICBDb2xvcm1hcCAsCiAgICBjb25zdCBjaGFyKiAsCiAgICB1bnNpZ25lZCBsb25nICwK
ICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFN5bmMoCgogICAgRGlzcGxheSogLAogICAgaW50Cgop
OwoKZXh0ZXJuIGludCBYVGV4dEV4dGVudHMoCgogICAgWEZvbnRTdHJ1Y3QqICwKICAgIGNvbnN0
IGNoYXIqICwKICAgIGludCAsCiAgICBpbnQqICwKICAgIGludCogLAogICAgaW50KiAsCiAgICBY
Q2hhclN0cnVjdCoKCik7CgpleHRlcm4gaW50IFhUZXh0RXh0ZW50czE2KAoKICAgIFhGb250U3Ry
dWN0KiAsCiAgICBjb25zdCBYQ2hhcjJiKiAsCiAgICBpbnQgLAogICAgaW50KiAsCiAgICBpbnQq
ICwKICAgIGludCogLAogICAgWENoYXJTdHJ1Y3QqCgopOwoKZXh0ZXJuIGludCBYVGV4dFdpZHRo
KAoKICAgIFhGb250U3RydWN0KiAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBpbnQKCik7CgpleHRl
cm4gaW50IFhUZXh0V2lkdGgxNigKCiAgICBYRm9udFN0cnVjdCogLAogICAgY29uc3QgWENoYXIy
YiogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYVHJhbnNsYXRlQ29vcmRpbmF0ZXMoCgogICAg
RGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgaW50ICwK
ICAgIGludCogLAogICAgaW50KiAsCiAgICBXaW5kb3cqCgopOwoKZXh0ZXJuIGludCBYVW5kZWZp
bmVDdXJzb3IoCgogICAgRGlzcGxheSogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYVW5n
cmFiQnV0dG9uKAoKICAgIERpc3BsYXkqICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25l
ZCBpbnQgLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYVW5ncmFiS2V5KAoKICAgIERpc3Bs
YXkqICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgV2luZG93CgopOwoKZXh0ZXJu
IGludCBYVW5ncmFiS2V5Ym9hcmQoCgogICAgRGlzcGxheSogLAogICAgVGltZQoKKTsKCmV4dGVy
biBpbnQgWFVuZ3JhYlBvaW50ZXIoCgogICAgRGlzcGxheSogLAogICAgVGltZQoKKTsKCmV4dGVy
biBpbnQgWFVuZ3JhYlNlcnZlcigKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiBpbnQgWFVuaW5z
dGFsbENvbG9ybWFwKAoKICAgIERpc3BsYXkqICwKICAgIENvbG9ybWFwCgopOwoKZXh0ZXJuIGlu
dCBYVW5sb2FkRm9udCgKCiAgICBEaXNwbGF5KiAsCiAgICBGb250CgopOwoKZXh0ZXJuIGludCBY
VW5tYXBTdWJ3aW5kb3dzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBp
bnQgWFVubWFwV2luZG93KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBp
bnQgWFZlbmRvclJlbGVhc2UoCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gaW50IFhXYXJwUG9p
bnRlcigKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgV2luZG93ICwKICAgIGludCAs
CiAgICBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBpbnQg
LAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYV2lkdGhNTU9mU2NyZWVuKAoKICAgIFNjcmVlbioK
Cik7CgpleHRlcm4gaW50IFhXaWR0aE9mU2NyZWVuKAoKICAgIFNjcmVlbioKCik7CgpleHRlcm4g
aW50IFhXaW5kb3dFdmVudCgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgbG9uZyAs
CiAgICBYRXZlbnQqCgopOwoKZXh0ZXJuIGludCBYV3JpdGVCaXRtYXBGaWxlKAoKICAgIERpc3Bs
YXkqICwKICAgIGNvbnN0IGNoYXIqICwKICAgIFBpeG1hcCAsCiAgICB1bnNpZ25lZCBpbnQgLAog
ICAgdW5zaWduZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTdXBw
b3J0c0xvY2FsZSAodm9pZCk7CgpleHRlcm4gY2hhciAqWFNldExvY2FsZU1vZGlmaWVycygKICAg
IGNvbnN0IGNoYXIqCik7CgpleHRlcm4gWE9NIFhPcGVuT00oCgogICAgRGlzcGxheSogLAogICAg
c3RydWN0IF9Ycm1IYXNoQnVja2V0UmVjKiAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBjb25zdCBj
aGFyKgoKKTsKCmV4dGVybiBpbnQgWENsb3NlT00oCgogICAgWE9NCgopOwoKZXh0ZXJuIGNoYXIg
KlhTZXRPTVZhbHVlcygKCiAgICBYT00gLAogICAgLi4uCgopOwoKZXh0ZXJuIGNoYXIgKlhHZXRP
TVZhbHVlcygKCiAgICBYT00gLAogICAgLi4uCgopOwoKZXh0ZXJuIERpc3BsYXkgKlhEaXNwbGF5
T2ZPTSgKCiAgICBYT00KCik7CgpleHRlcm4gY2hhciAqWExvY2FsZU9mT00oCgogICAgWE9NCgop
OwoKZXh0ZXJuIFhPQyBYQ3JlYXRlT0MoCgogICAgWE9NICwKICAgIC4uLgoKKTsKCmV4dGVybiB2
b2lkIFhEZXN0cm95T0MoCgogICAgWE9DCgopOwoKZXh0ZXJuIFhPTSBYT01PZk9DKAoKICAgIFhP
QwoKKTsKCmV4dGVybiBjaGFyICpYU2V0T0NWYWx1ZXMoCgogICAgWE9DICwKICAgIC4uLgoKKTsK
CmV4dGVybiBjaGFyICpYR2V0T0NWYWx1ZXMoCgogICAgWE9DICwKICAgIC4uLgoKKTsKCmV4dGVy
biBYRm9udFNldCBYQ3JlYXRlRm9udFNldCgKCiAgICBEaXNwbGF5KiAsCiAgICBjb25zdCBjaGFy
KiAsCiAgICBjaGFyKioqICwKICAgIGludCogLAogICAgY2hhcioqCgopOwoKZXh0ZXJuIHZvaWQg
WEZyZWVGb250U2V0KAoKICAgIERpc3BsYXkqICwKICAgIFhGb250U2V0CgopOwoKZXh0ZXJuIGlu
dCBYRm9udHNPZkZvbnRTZXQoCgogICAgWEZvbnRTZXQgLAogICAgWEZvbnRTdHJ1Y3QqKiogLAog
ICAgY2hhcioqKgoKKTsKCmV4dGVybiBjaGFyICpYQmFzZUZvbnROYW1lTGlzdE9mRm9udFNldCgK
CiAgICBYRm9udFNldAoKKTsKCmV4dGVybiBjaGFyICpYTG9jYWxlT2ZGb250U2V0KAoKICAgIFhG
b250U2V0CgopOwoKZXh0ZXJuIGludCBYQ29udGV4dERlcGVuZGVudERyYXdpbmcoCgogICAgWEZv
bnRTZXQKCik7CgpleHRlcm4gaW50IFhEaXJlY3Rpb25hbERlcGVuZGVudERyYXdpbmcoCgogICAg
WEZvbnRTZXQKCik7CgpleHRlcm4gaW50IFhDb250ZXh0dWFsRHJhd2luZygKCiAgICBYRm9udFNl
dAoKKTsKCmV4dGVybiBYRm9udFNldEV4dGVudHMgKlhFeHRlbnRzT2ZGb250U2V0KAoKICAgIFhG
b250U2V0CgopOwoKZXh0ZXJuIGludCBYbWJUZXh0RXNjYXBlbWVudCgKCiAgICBYRm9udFNldCAs
CiAgICBjb25zdCBjaGFyKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFh3Y1RleHRFc2NhcGVt
ZW50KAoKICAgIFhGb250U2V0ICwKICAgIGNvbnN0IHdjaGFyX3QqICwKICAgIGludAoKKTsKCmV4
dGVybiBpbnQgWHV0ZjhUZXh0RXNjYXBlbWVudCgKCiAgICBYRm9udFNldCAsCiAgICBjb25zdCBj
aGFyKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhtYlRleHRFeHRlbnRzKAoKICAgIFhGb250
U2V0ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludCAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBY
UmVjdGFuZ2xlKgoKKTsKCmV4dGVybiBpbnQgWHdjVGV4dEV4dGVudHMoCgogICAgWEZvbnRTZXQg
LAogICAgY29uc3Qgd2NoYXJfdCogLAogICAgaW50ICwKICAgIFhSZWN0YW5nbGUqICwKICAgIFhS
ZWN0YW5nbGUqCgopOwoKZXh0ZXJuIGludCBYdXRmOFRleHRFeHRlbnRzKAoKICAgIFhGb250U2V0
ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludCAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBYUmVj
dGFuZ2xlKgoKKTsKCmV4dGVybiBpbnQgWG1iVGV4dFBlckNoYXJFeHRlbnRzKAoKICAgIFhGb250
U2V0ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludCAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBY
UmVjdGFuZ2xlKiAsCiAgICBpbnQgLAogICAgaW50KiAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBY
UmVjdGFuZ2xlKgoKKTsKCmV4dGVybiBpbnQgWHdjVGV4dFBlckNoYXJFeHRlbnRzKAoKICAgIFhG
b250U2V0ICwKICAgIGNvbnN0IHdjaGFyX3QqICwKICAgIGludCAsCiAgICBYUmVjdGFuZ2xlKiAs
CiAgICBYUmVjdGFuZ2xlKiAsCiAgICBpbnQgLAogICAgaW50KiAsCiAgICBYUmVjdGFuZ2xlKiAs
CiAgICBYUmVjdGFuZ2xlKgoKKTsKCmV4dGVybiBpbnQgWHV0ZjhUZXh0UGVyQ2hhckV4dGVudHMo
CgogICAgWEZvbnRTZXQgLAogICAgY29uc3QgY2hhciogLAogICAgaW50ICwKICAgIFhSZWN0YW5n
bGUqICwKICAgIFhSZWN0YW5nbGUqICwKICAgIGludCAsCiAgICBpbnQqICwKICAgIFhSZWN0YW5n
bGUqICwKICAgIFhSZWN0YW5nbGUqCgopOwoKZXh0ZXJuIHZvaWQgWG1iRHJhd1RleHQoCgogICAg
RGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAg
ICBYbWJUZXh0SXRlbSogLAogICAgaW50CgopOwoKZXh0ZXJuIHZvaWQgWHdjRHJhd1RleHQoCgog
ICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAs
CiAgICBYd2NUZXh0SXRlbSogLAogICAgaW50CgopOwoKZXh0ZXJuIHZvaWQgWHV0ZjhEcmF3VGV4
dCgKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBpbnQgLAogICAg
aW50ICwKICAgIFhtYlRleHRJdGVtKiAsCiAgICBpbnQKCik7CgpleHRlcm4gdm9pZCBYbWJEcmF3
U3RyaW5nKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIFhGb250U2V0ICwKICAg
IEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgY29uc3QgY2hhciogLAogICAgaW50CgopOwoK
ZXh0ZXJuIHZvaWQgWHdjRHJhd1N0cmluZygKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAs
CiAgICBYRm9udFNldCAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGNvbnN0IHdj
aGFyX3QqICwKICAgIGludAoKKTsKCmV4dGVybiB2b2lkIFh1dGY4RHJhd1N0cmluZygKCiAgICBE
aXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBYRm9udFNldCAsCiAgICBHQyAsCiAgICBpbnQg
LAogICAgaW50ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludAoKKTsKCmV4dGVybiB2b2lkIFht
YkRyYXdJbWFnZVN0cmluZygKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBYRm9u
dFNldCAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGNvbnN0IGNoYXIqICwKICAg
IGludAoKKTsKCmV4dGVybiB2b2lkIFh3Y0RyYXdJbWFnZVN0cmluZygKCiAgICBEaXNwbGF5KiAs
CiAgICBEcmF3YWJsZSAsCiAgICBYRm9udFNldCAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50
ICwKICAgIGNvbnN0IHdjaGFyX3QqICwKICAgIGludAoKKTsKCmV4dGVybiB2b2lkIFh1dGY4RHJh
d0ltYWdlU3RyaW5nKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIFhGb250U2V0
ICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgY29uc3QgY2hhciogLAogICAgaW50
CgopOwoKZXh0ZXJuIFhJTSBYT3BlbklNKAoKICAgIERpc3BsYXkqICwKICAgIHN0cnVjdCBfWHJt
SGFzaEJ1Y2tldFJlYyogLAogICAgY2hhciogLAogICAgY2hhcioKCik7CgpleHRlcm4gaW50IFhD
bG9zZUlNKAoKICAgIFhJTQoKKTsKCmV4dGVybiBjaGFyICpYR2V0SU1WYWx1ZXMoCgogICAgWElN
ICwgLi4uCgopOwoKZXh0ZXJuIGNoYXIgKlhTZXRJTVZhbHVlcygKCiAgICBYSU0gLCAuLi4KCik7
CgpleHRlcm4gRGlzcGxheSAqWERpc3BsYXlPZklNKAoKICAgIFhJTQoKKTsKCmV4dGVybiBjaGFy
ICpYTG9jYWxlT2ZJTSgKCiAgICBYSU0KCik7CgpleHRlcm4gWElDIFhDcmVhdGVJQygKCiAgICBY
SU0gLCAuLi4KCik7CgpleHRlcm4gdm9pZCBYRGVzdHJveUlDKAoKICAgIFhJQwoKKTsKCmV4dGVy
biB2b2lkIFhTZXRJQ0ZvY3VzKAoKICAgIFhJQwoKKTsKCmV4dGVybiB2b2lkIFhVbnNldElDRm9j
dXMoCgogICAgWElDCgopOwoKZXh0ZXJuIHdjaGFyX3QgKlh3Y1Jlc2V0SUMoCgogICAgWElDCgop
OwoKZXh0ZXJuIGNoYXIgKlhtYlJlc2V0SUMoCgogICAgWElDCgopOwoKZXh0ZXJuIGNoYXIgKlh1
dGY4UmVzZXRJQygKCiAgICBYSUMKCik7CgpleHRlcm4gY2hhciAqWFNldElDVmFsdWVzKAoKICAg
IFhJQyAsIC4uLgoKKTsKCmV4dGVybiBjaGFyICpYR2V0SUNWYWx1ZXMoCgogICAgWElDICwgLi4u
CgopOwoKZXh0ZXJuIFhJTSBYSU1PZklDKAoKICAgIFhJQwoKKTsKCmV4dGVybiBpbnQgWEZpbHRl
ckV2ZW50KAoKICAgIFhFdmVudCogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYbWJMb29r
dXBTdHJpbmcoCgogICAgWElDICwKICAgIFhLZXlQcmVzc2VkRXZlbnQqICwKICAgIGNoYXIqICwK
ICAgIGludCAsCiAgICBLZXlTeW0qICwKICAgIGludCoKCik7CgpleHRlcm4gaW50IFh3Y0xvb2t1
cFN0cmluZygKCiAgICBYSUMgLAogICAgWEtleVByZXNzZWRFdmVudCogLAogICAgd2NoYXJfdCog
LAogICAgaW50ICwKICAgIEtleVN5bSogLAogICAgaW50KgoKKTsKCmV4dGVybiBpbnQgWHV0ZjhM
b29rdXBTdHJpbmcoCgogICAgWElDICwKICAgIFhLZXlQcmVzc2VkRXZlbnQqICwKICAgIGNoYXIq
ICwKICAgIGludCAsCiAgICBLZXlTeW0qICwKICAgIGludCoKCik7CgpleHRlcm4gWFZhTmVzdGVk
TGlzdCBYVmFDcmVhdGVOZXN0ZWRMaXN0KAoKICAgIGludCAsIC4uLgoKKTsKCgoKZXh0ZXJuIGlu
dCBYUmVnaXN0ZXJJTUluc3RhbnRpYXRlQ2FsbGJhY2soCgogICAgRGlzcGxheSogLAogICAgc3Ry
dWN0IF9Ycm1IYXNoQnVja2V0UmVjKiAsCiAgICBjaGFyKiAsCiAgICBjaGFyKiAsCiAgICBYSURQ
cm9jICwKICAgIFhQb2ludGVyCgopOwoKZXh0ZXJuIGludCBYVW5yZWdpc3RlcklNSW5zdGFudGlh
dGVDYWxsYmFjaygKCiAgICBEaXNwbGF5KiAsCiAgICBzdHJ1Y3QgX1hybUhhc2hCdWNrZXRSZWMq
ICwKICAgIGNoYXIqICwKICAgIGNoYXIqICwKICAgIFhJRFByb2MgLAogICAgWFBvaW50ZXIKCik7
Cgp0eXBlZGVmIHZvaWQgKCpYQ29ubmVjdGlvbldhdGNoUHJvYykoCgogICAgRGlzcGxheSogLAog
ICAgWFBvaW50ZXIgLAogICAgaW50ICwKICAgIGludCAsCiAgICBYUG9pbnRlcioKCik7CgoKZXh0
ZXJuIGludCBYSW50ZXJuYWxDb25uZWN0aW9uTnVtYmVycygKCiAgICBEaXNwbGF5KiAsCiAgICBp
bnQqKiAsCiAgICBpbnQqCgopOwoKZXh0ZXJuIHZvaWQgWFByb2Nlc3NJbnRlcm5hbENvbm5lY3Rp
b24oCgogICAgRGlzcGxheSogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYQWRkQ29ubmVjdGlv
bldhdGNoKAoKICAgIERpc3BsYXkqICwKICAgIFhDb25uZWN0aW9uV2F0Y2hQcm9jICwKICAgIFhQ
b2ludGVyCgopOwoKZXh0ZXJuIHZvaWQgWFJlbW92ZUNvbm5lY3Rpb25XYXRjaCgKCiAgICBEaXNw
bGF5KiAsCiAgICBYQ29ubmVjdGlvbldhdGNoUHJvYyAsCiAgICBYUG9pbnRlcgoKKTsKCmV4dGVy
biB2b2lkIFhTZXRBdXRob3JpemF0aW9uKAoKICAgIGNoYXIgKiAsCiAgICBpbnQgLAogICAgY2hh
ciAqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgX1htYnRvd2MoCgogICAgd2NoYXJfdCAqICwK
CgoKCiAgICBjaGFyICogLAogICAgaW50CgoKKTsKCmV4dGVybiBpbnQgX1h3Y3RvbWIoCgogICAg
Y2hhciAqICwKICAgIHdjaGFyX3QKCik7Cgp9CiMgNjAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9w
bHVnaW4vbnNwbHVnaW5kZWZzLmgiIDIKIyAxICIvdXNyL1gxMVI2L2luY2x1ZGUvWDExL1h1dGls
LmgiIDEKIyA3NCAiL3Vzci9YMTFSNi9pbmNsdWRlL1gxMS9YdXRpbC5oIgp0eXBlZGVmIHN0cnVj
dCB7CiAgICAgICAgbG9uZyBmbGFnczsKICAgICAgICBpbnQgeCwgeTsKICAgICAgICBpbnQgd2lk
dGgsIGhlaWdodDsKICAgICAgICBpbnQgbWluX3dpZHRoLCBtaW5faGVpZ2h0OwogICAgICAgIGlu
dCBtYXhfd2lkdGgsIG1heF9oZWlnaHQ7CiAgICAgICAgaW50IHdpZHRoX2luYywgaGVpZ2h0X2lu
YzsKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgaW50IHg7CiAgICAgICAgICAgICAg
ICBpbnQgeTsKICAgICAgICB9IG1pbl9hc3BlY3QsIG1heF9hc3BlY3Q7CiAgICAgICAgaW50IGJh
c2Vfd2lkdGgsIGJhc2VfaGVpZ2h0OwogICAgICAgIGludCB3aW5fZ3Jhdml0eTsKfSBYU2l6ZUhp
bnRzOwojIDExMiAiL3Vzci9YMTFSNi9pbmNsdWRlL1gxMS9YdXRpbC5oIgp0eXBlZGVmIHN0cnVj
dCB7CiAgICAgICAgbG9uZyBmbGFnczsKICAgICAgICBpbnQgaW5wdXQ7CgogICAgICAgIGludCBp
bml0aWFsX3N0YXRlOwogICAgICAgIFBpeG1hcCBpY29uX3BpeG1hcDsKICAgICAgICBXaW5kb3cg
aWNvbl93aW5kb3c7CiAgICAgICAgaW50IGljb25feCwgaWNvbl95OwogICAgICAgIFBpeG1hcCBp
Y29uX21hc2s7CiAgICAgICAgWElEIHdpbmRvd19ncm91cDsKCn0gWFdNSGludHM7CiMgMTU2ICIv
dXNyL1gxMVI2L2luY2x1ZGUvWDExL1h1dGlsLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgIHVuc2ln
bmVkIGNoYXIgKnZhbHVlOwogICAgQXRvbSBlbmNvZGluZzsKICAgIGludCBmb3JtYXQ7CiAgICB1
bnNpZ25lZCBsb25nIG5pdGVtczsKfSBYVGV4dFByb3BlcnR5OwoKCgoKCnR5cGVkZWYgZW51bSB7
CiAgICBYU3RyaW5nU3R5bGUsCiAgICBYQ29tcG91bmRUZXh0U3R5bGUsCiAgICBYVGV4dFN0eWxl
LAogICAgWFN0ZElDQ1RleHRTdHlsZSwKCiAgICBYVVRGOFN0cmluZ1N0eWxlCn0gWElDQ0VuY29k
aW5nU3R5bGU7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IG1pbl93aWR0aCwgbWluX2hl
aWdodDsKICAgICAgICBpbnQgbWF4X3dpZHRoLCBtYXhfaGVpZ2h0OwogICAgICAgIGludCB3aWR0
aF9pbmMsIGhlaWdodF9pbmM7Cn0gWEljb25TaXplOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAg
IGNoYXIgKnJlc19uYW1lOwogICAgICAgIGNoYXIgKnJlc19jbGFzczsKfSBYQ2xhc3NIaW50Owoj
IDIwNSAiL3Vzci9YMTFSNi9pbmNsdWRlL1gxMS9YdXRpbC5oIgp0eXBlZGVmIHN0cnVjdCBfWENv
bXBvc2VTdGF0dXMgewogICAgWFBvaW50ZXIgY29tcG9zZV9wdHI7CiAgICBpbnQgY2hhcnNfbWF0
Y2hlZDsKfSBYQ29tcG9zZVN0YXR1czsKIyAyNDAgIi91c3IvWDExUjYvaW5jbHVkZS9YMTEvWHV0
aWwuaCIKdHlwZWRlZiBzdHJ1Y3QgX1hSZWdpb24gKlJlZ2lvbjsKIyAyNTQgIi91c3IvWDExUjYv
aW5jbHVkZS9YMTEvWHV0aWwuaCIKdHlwZWRlZiBzdHJ1Y3QgewogIFZpc3VhbCAqdmlzdWFsOwog
IFZpc3VhbElEIHZpc3VhbGlkOwogIGludCBzY3JlZW47CiAgaW50IGRlcHRoOwoKICBpbnQgY19j
bGFzczsKCgoKICB1bnNpZ25lZCBsb25nIHJlZF9tYXNrOwogIHVuc2lnbmVkIGxvbmcgZ3JlZW5f
bWFzazsKICB1bnNpZ25lZCBsb25nIGJsdWVfbWFzazsKICBpbnQgY29sb3JtYXBfc2l6ZTsKICBp
bnQgYml0c19wZXJfcmdiOwp9IFhWaXN1YWxJbmZvOwojIDI4NyAiL3Vzci9YMTFSNi9pbmNsdWRl
L1gxMS9YdXRpbC5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgQ29sb3JtYXAgY29sb3JtYXA7
CiAgICAgICAgdW5zaWduZWQgbG9uZyByZWRfbWF4OwogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVk
X211bHQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBncmVlbl9tYXg7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBncmVlbl9tdWx0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgYmx1ZV9tYXg7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBibHVlX211bHQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBiYXNlX3BpeGVs
OwogICAgICAgIFZpc3VhbElEIHZpc3VhbGlkOwogICAgICAgIFhJRCBraWxsaWQ7Cn0gWFN0YW5k
YXJkQ29sb3JtYXA7CiMgMzI0ICIvdXNyL1gxMVI2L2luY2x1ZGUvWDExL1h1dGlsLmgiCnR5cGVk
ZWYgaW50IFhDb250ZXh0OwoKCgoKZXh0ZXJuICJDIiB7CgoKCmV4dGVybiBYQ2xhc3NIaW50ICpY
QWxsb2NDbGFzc0hpbnQgKAoKICAgIHZvaWQKCik7CgpleHRlcm4gWEljb25TaXplICpYQWxsb2NJ
Y29uU2l6ZSAoCgogICAgdm9pZAoKKTsKCmV4dGVybiBYU2l6ZUhpbnRzICpYQWxsb2NTaXplSGlu
dHMgKAoKICAgIHZvaWQKCik7CgpleHRlcm4gWFN0YW5kYXJkQ29sb3JtYXAgKlhBbGxvY1N0YW5k
YXJkQ29sb3JtYXAgKAoKICAgIHZvaWQKCik7CgpleHRlcm4gWFdNSGludHMgKlhBbGxvY1dNSGlu
dHMgKAoKICAgIHZvaWQKCik7CgpleHRlcm4gaW50IFhDbGlwQm94KAoKICAgIFJlZ2lvbiAsCiAg
ICBYUmVjdGFuZ2xlKgoKKTsKCmV4dGVybiBSZWdpb24gWENyZWF0ZVJlZ2lvbigKCiAgICB2b2lk
CgopOwoKZXh0ZXJuIGNvbnN0IGNoYXIgKlhEZWZhdWx0U3RyaW5nICh2b2lkKTsKCmV4dGVybiBp
bnQgWERlbGV0ZUNvbnRleHQoCgogICAgRGlzcGxheSogLAogICAgWElEICwKICAgIFhDb250ZXh0
CgopOwoKZXh0ZXJuIGludCBYRGVzdHJveVJlZ2lvbigKCiAgICBSZWdpb24KCik7CgpleHRlcm4g
aW50IFhFbXB0eVJlZ2lvbigKCiAgICBSZWdpb24KCik7CgpleHRlcm4gaW50IFhFcXVhbFJlZ2lv
bigKCiAgICBSZWdpb24gLAogICAgUmVnaW9uCgopOwoKZXh0ZXJuIGludCBYRmluZENvbnRleHQo
CgogICAgRGlzcGxheSogLAogICAgWElEICwKICAgIFhDb250ZXh0ICwKICAgIFhQb2ludGVyKgoK
KTsKCmV4dGVybiBpbnQgWEdldENsYXNzSGludCgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cg
LAogICAgWENsYXNzSGludCoKCik7CgpleHRlcm4gaW50IFhHZXRJY29uU2l6ZXMoCgogICAgRGlz
cGxheSogLAogICAgV2luZG93ICwKICAgIFhJY29uU2l6ZSoqICwKICAgIGludCoKCik7CgpleHRl
cm4gaW50IFhHZXROb3JtYWxIaW50cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAg
WFNpemVIaW50cyoKCik7CgpleHRlcm4gaW50IFhHZXRSR0JDb2xvcm1hcHMoCgogICAgRGlzcGxh
eSogLAogICAgV2luZG93ICwKICAgIFhTdGFuZGFyZENvbG9ybWFwKiogLAogICAgaW50KiAsCiAg
ICBBdG9tCgopOwoKZXh0ZXJuIGludCBYR2V0U2l6ZUhpbnRzKAoKICAgIERpc3BsYXkqICwKICAg
IFdpbmRvdyAsCiAgICBYU2l6ZUhpbnRzKiAsCiAgICBBdG9tCgopOwoKZXh0ZXJuIGludCBYR2V0
U3RhbmRhcmRDb2xvcm1hcCgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgWFN0YW5k
YXJkQ29sb3JtYXAqICwKICAgIEF0b20KCik7CgpleHRlcm4gaW50IFhHZXRUZXh0UHJvcGVydHko
CgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFhUZXh0UHJvcGVydHkqICwKICAgIEF0
b20KCik7CgpleHRlcm4gWFZpc3VhbEluZm8gKlhHZXRWaXN1YWxJbmZvKAoKICAgIERpc3BsYXkq
ICwKICAgIGxvbmcgLAogICAgWFZpc3VhbEluZm8qICwKICAgIGludCoKCik7CgpleHRlcm4gaW50
IFhHZXRXTUNsaWVudE1hY2hpbmUoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFhU
ZXh0UHJvcGVydHkqCgopOwoKZXh0ZXJuIFhXTUhpbnRzICpYR2V0V01IaW50cygKCiAgICBEaXNw
bGF5KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhHZXRXTUljb25OYW1lKAoKICAgIERp
c3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYVGV4dFByb3BlcnR5KgoKKTsKCmV4dGVybiBpbnQg
WEdldFdNTmFtZSgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgWFRleHRQcm9wZXJ0
eSoKCik7CgpleHRlcm4gaW50IFhHZXRXTU5vcm1hbEhpbnRzKAoKICAgIERpc3BsYXkqICwKICAg
IFdpbmRvdyAsCiAgICBYU2l6ZUhpbnRzKiAsCiAgICBsb25nKgoKKTsKCmV4dGVybiBpbnQgWEdl
dFdNU2l6ZUhpbnRzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYU2l6ZUhpbnRz
KiAsCiAgICBsb25nKiAsCiAgICBBdG9tCgopOwoKZXh0ZXJuIGludCBYR2V0Wm9vbUhpbnRzKAoK
ICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYU2l6ZUhpbnRzKgoKKTsKCmV4dGVybiBp
bnQgWEludGVyc2VjdFJlZ2lvbigKCiAgICBSZWdpb24gLAogICAgUmVnaW9uICwKICAgIFJlZ2lv
bgoKKTsKCmV4dGVybiB2b2lkIFhDb252ZXJ0Q2FzZSgKCiAgICBLZXlTeW0gLAogICAgS2V5U3lt
KiAsCiAgICBLZXlTeW0qCgopOwoKZXh0ZXJuIGludCBYTG9va3VwU3RyaW5nKAoKICAgIFhLZXlF
dmVudCogLAogICAgY2hhciogLAogICAgaW50ICwKICAgIEtleVN5bSogLAogICAgWENvbXBvc2VT
dGF0dXMqCgopOwoKZXh0ZXJuIGludCBYTWF0Y2hWaXN1YWxJbmZvKAoKICAgIERpc3BsYXkqICwK
ICAgIGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIFhWaXN1YWxJbmZvKgoKKTsKCmV4dGVy
biBpbnQgWE9mZnNldFJlZ2lvbigKCiAgICBSZWdpb24gLAogICAgaW50ICwKICAgIGludAoKKTsK
CmV4dGVybiBpbnQgWFBvaW50SW5SZWdpb24oCgogICAgUmVnaW9uICwKICAgIGludCAsCiAgICBp
bnQKCik7CgpleHRlcm4gUmVnaW9uIFhQb2x5Z29uUmVnaW9uKAoKICAgIFhQb2ludCogLAogICAg
aW50ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFJlY3RJblJlZ2lvbigKCiAgICBSZWdpb24g
LAogICAgaW50ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50
CgopOwoKZXh0ZXJuIGludCBYU2F2ZUNvbnRleHQoCgogICAgRGlzcGxheSogLAogICAgWElEICwK
ICAgIFhDb250ZXh0ICwKICAgIGNvbnN0IGNoYXIqCgopOwoKZXh0ZXJuIGludCBYU2V0Q2xhc3NI
aW50KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYQ2xhc3NIaW50KgoKKTsKCmV4
dGVybiBpbnQgWFNldEljb25TaXplcygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAg
WEljb25TaXplKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXROb3JtYWxIaW50cygKCiAg
ICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgWFNpemVIaW50cyoKCik7CgpleHRlcm4gdm9p
ZCBYU2V0UkdCQ29sb3JtYXBzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYU3Rh
bmRhcmRDb2xvcm1hcCogLAogICAgaW50ICwKICAgIEF0b20KCik7CgpleHRlcm4gaW50IFhTZXRT
aXplSGludHMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFhTaXplSGludHMqICwK
ICAgIEF0b20KCik7CgpleHRlcm4gaW50IFhTZXRTdGFuZGFyZFByb3BlcnRpZXMoCgogICAgRGlz
cGxheSogLAogICAgV2luZG93ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGNvbnN0IGNoYXIqICwK
ICAgIFBpeG1hcCAsCiAgICBjaGFyKiogLAogICAgaW50ICwKICAgIFhTaXplSGludHMqCgopOwoK
ZXh0ZXJuIHZvaWQgWFNldFRleHRQcm9wZXJ0eSgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cg
LAogICAgWFRleHRQcm9wZXJ0eSogLAogICAgQXRvbQoKKTsKCmV4dGVybiB2b2lkIFhTZXRXTUNs
aWVudE1hY2hpbmUoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFhUZXh0UHJvcGVy
dHkqCgopOwoKZXh0ZXJuIGludCBYU2V0V01IaW50cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5k
b3cgLAogICAgWFdNSGludHMqCgopOwoKZXh0ZXJuIHZvaWQgWFNldFdNSWNvbk5hbWUoCgogICAg
RGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFhUZXh0UHJvcGVydHkqCgopOwoKZXh0ZXJuIHZv
aWQgWFNldFdNTmFtZSgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgWFRleHRQcm9w
ZXJ0eSoKCik7CgpleHRlcm4gdm9pZCBYU2V0V01Ob3JtYWxIaW50cygKCiAgICBEaXNwbGF5KiAs
CiAgICBXaW5kb3cgLAogICAgWFNpemVIaW50cyoKCik7CgpleHRlcm4gdm9pZCBYU2V0V01Qcm9w
ZXJ0aWVzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYVGV4dFByb3BlcnR5KiAs
CiAgICBYVGV4dFByb3BlcnR5KiAsCiAgICBjaGFyKiogLAogICAgaW50ICwKICAgIFhTaXplSGlu
dHMqICwKICAgIFhXTUhpbnRzKiAsCiAgICBYQ2xhc3NIaW50KgoKKTsKCmV4dGVybiB2b2lkIFht
YlNldFdNUHJvcGVydGllcygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgY29uc3Qg
Y2hhciogLAogICAgY29uc3QgY2hhciogLAogICAgY2hhcioqICwKICAgIGludCAsCiAgICBYU2l6
ZUhpbnRzKiAsCiAgICBYV01IaW50cyogLAogICAgWENsYXNzSGludCoKCik7CgpleHRlcm4gdm9p
ZCBYdXRmOFNldFdNUHJvcGVydGllcygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAg
Y29uc3QgY2hhciogLAogICAgY29uc3QgY2hhciogLAogICAgY2hhcioqICwKICAgIGludCAsCiAg
ICBYU2l6ZUhpbnRzKiAsCiAgICBYV01IaW50cyogLAogICAgWENsYXNzSGludCoKCik7CgpleHRl
cm4gdm9pZCBYU2V0V01TaXplSGludHMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAg
IFhTaXplSGludHMqICwKICAgIEF0b20KCik7CgpleHRlcm4gaW50IFhTZXRSZWdpb24oCgogICAg
RGlzcGxheSogLAogICAgR0MgLAogICAgUmVnaW9uCgopOwoKZXh0ZXJuIHZvaWQgWFNldFN0YW5k
YXJkQ29sb3JtYXAoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFhTdGFuZGFyZENv
bG9ybWFwKiAsCiAgICBBdG9tCgopOwoKZXh0ZXJuIGludCBYU2V0Wm9vbUhpbnRzKAoKICAgIERp
c3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYU2l6ZUhpbnRzKgoKKTsKCmV4dGVybiBpbnQgWFNo
cmlua1JlZ2lvbigKCiAgICBSZWdpb24gLAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBp
bnQgWFN0cmluZ0xpc3RUb1RleHRQcm9wZXJ0eSgKCiAgICBjaGFyKiogLAogICAgaW50ICwKICAg
IFhUZXh0UHJvcGVydHkqCgopOwoKZXh0ZXJuIGludCBYU3VidHJhY3RSZWdpb24oCgogICAgUmVn
aW9uICwKICAgIFJlZ2lvbiAsCiAgICBSZWdpb24KCik7CgpleHRlcm4gaW50IFhtYlRleHRMaXN0
VG9UZXh0UHJvcGVydHkoCiAgICBEaXNwbGF5KiBkaXNwbGF5LAogICAgY2hhcioqIGxpc3QsCiAg
ICBpbnQgY291bnQsCiAgICBYSUNDRW5jb2RpbmdTdHlsZSBzdHlsZSwKICAgIFhUZXh0UHJvcGVy
dHkqIHRleHRfcHJvcF9yZXR1cm4KKTsKCmV4dGVybiBpbnQgWHdjVGV4dExpc3RUb1RleHRQcm9w
ZXJ0eSgKICAgIERpc3BsYXkqIGRpc3BsYXksCiAgICB3Y2hhcl90KiogbGlzdCwKICAgIGludCBj
b3VudCwKICAgIFhJQ0NFbmNvZGluZ1N0eWxlIHN0eWxlLAogICAgWFRleHRQcm9wZXJ0eSogdGV4
dF9wcm9wX3JldHVybgopOwoKZXh0ZXJuIGludCBYdXRmOFRleHRMaXN0VG9UZXh0UHJvcGVydHko
CiAgICBEaXNwbGF5KiBkaXNwbGF5LAogICAgY2hhcioqIGxpc3QsCiAgICBpbnQgY291bnQsCiAg
ICBYSUNDRW5jb2RpbmdTdHlsZSBzdHlsZSwKICAgIFhUZXh0UHJvcGVydHkqIHRleHRfcHJvcF9y
ZXR1cm4KKTsKCmV4dGVybiB2b2lkIFh3Y0ZyZWVTdHJpbmdMaXN0KAogICAgd2NoYXJfdCoqIGxp
c3QKKTsKCmV4dGVybiBpbnQgWFRleHRQcm9wZXJ0eVRvU3RyaW5nTGlzdCgKCiAgICBYVGV4dFBy
b3BlcnR5KiAsCiAgICBjaGFyKioqICwKICAgIGludCoKCik7CgpleHRlcm4gaW50IFhtYlRleHRQ
cm9wZXJ0eVRvVGV4dExpc3QoCiAgICBEaXNwbGF5KiBkaXNwbGF5LAogICAgY29uc3QgWFRleHRQ
cm9wZXJ0eSogdGV4dF9wcm9wLAogICAgY2hhcioqKiBsaXN0X3JldHVybiwKICAgIGludCogY291
bnRfcmV0dXJuCik7CgpleHRlcm4gaW50IFh3Y1RleHRQcm9wZXJ0eVRvVGV4dExpc3QoCiAgICBE
aXNwbGF5KiBkaXNwbGF5LAogICAgY29uc3QgWFRleHRQcm9wZXJ0eSogdGV4dF9wcm9wLAogICAg
d2NoYXJfdCoqKiBsaXN0X3JldHVybiwKICAgIGludCogY291bnRfcmV0dXJuCik7CgpleHRlcm4g
aW50IFh1dGY4VGV4dFByb3BlcnR5VG9UZXh0TGlzdCgKICAgIERpc3BsYXkqIGRpc3BsYXksCiAg
ICBjb25zdCBYVGV4dFByb3BlcnR5KiB0ZXh0X3Byb3AsCiAgICBjaGFyKioqIGxpc3RfcmV0dXJu
LAogICAgaW50KiBjb3VudF9yZXR1cm4KKTsKCmV4dGVybiBpbnQgWFVuaW9uUmVjdFdpdGhSZWdp
b24oCgogICAgWFJlY3RhbmdsZSogLAogICAgUmVnaW9uICwKICAgIFJlZ2lvbgoKKTsKCmV4dGVy
biBpbnQgWFVuaW9uUmVnaW9uKAoKICAgIFJlZ2lvbiAsCiAgICBSZWdpb24gLAogICAgUmVnaW9u
CgopOwoKZXh0ZXJuIGludCBYV01HZW9tZXRyeSgKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQgLAog
ICAgY29uc3QgY2hhciogLAogICAgY29uc3QgY2hhciogLAogICAgdW5zaWduZWQgaW50ICwKICAg
IFhTaXplSGludHMqICwKICAgIGludCogLAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIGludCog
LAogICAgaW50KgoKKTsKCmV4dGVybiBpbnQgWFhvclJlZ2lvbigKCiAgICBSZWdpb24gLAogICAg
UmVnaW9uICwKICAgIFJlZ2lvbgoKKTsKCn0KIyA2MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3Bs
dWdpbi9uc3BsdWdpbmRlZnMuaCIgMgojIDEyMyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdp
bi9uc3BsdWdpbmRlZnMuaCIKdHlwZWRlZiBjb25zdCBjaGFyKiBuc01JTUVUeXBlOwoKc3RydWN0
IG5zQnl0ZVJhbmdlIHsKICAgIFBSSW50MzIgb2Zmc2V0OwogICAgUFJVaW50MzIgbGVuZ3RoOwog
ICAgc3RydWN0IG5zQnl0ZVJhbmdlKiBuZXh0Owp9OwoKc3RydWN0IG5zUGx1Z2luUmVjdCB7CiAg
ICBQUlVpbnQxNiB0b3A7CiAgICBQUlVpbnQxNiBsZWZ0OwogICAgUFJVaW50MTYgYm90dG9tOwog
ICAgUFJVaW50MTYgcmlnaHQ7Cn07CiMgMTUwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2lu
L25zcGx1Z2luZGVmcy5oIgplbnVtIG5zUGx1Z2luQ2FsbGJhY2tUeXBlIHsKICAgIG5zUGx1Z2lu
Q2FsbGJhY2tUeXBlX1NldFdpbmRvdyA9IDEsCiAgICBuc1BsdWdpbkNhbGxiYWNrVHlwZV9Qcmlu
dAp9OwoKc3RydWN0IG5zUGx1Z2luQW55Q2FsbGJhY2tTdHJ1Y3QgewogICAgUFJJbnQzMiB0eXBl
Owp9OwoKCnN0cnVjdCBuc1BsdWdpblNldFdpbmRvd0NhbGxiYWNrU3RydWN0IHsKICAgIFBSSW50
MzIgdHlwZTsKICAgIERpc3BsYXkqIGRpc3BsYXk7CiAgICBWaXN1YWwqIHZpc3VhbDsKICAgIENv
bG9ybWFwIGNvbG9ybWFwOwogICAgUFJVaW50MzIgZGVwdGg7Cn07CgoKCgoKCgpzdHJ1Y3QgbnNQ
bHVnaW5QcmludENhbGxiYWNrU3RydWN0IHsKICAgIFBSSW50MzIgdHlwZTsKICAgIEZJTEUqIGZw
Owp9OwoKCgoKCgplbnVtIG5zUGx1Z2luVmFyaWFibGUgewogICAgbnNQbHVnaW5WYXJpYWJsZV9O
YW1lU3RyaW5nID0gMSwKICAgIG5zUGx1Z2luVmFyaWFibGVfRGVzY3JpcHRpb25TdHJpbmcgPSAy
Cn07CgplbnVtIG5zUGx1Z2luTWFuYWdlclZhcmlhYmxlIHsKICAgIG5zUGx1Z2luTWFuYWdlclZh
cmlhYmxlX1hEaXNwbGF5ID0gMSwKICAgIG5zUGx1Z2luTWFuYWdlclZhcmlhYmxlX1h0QXBwQ29u
dGV4dCA9IDIKfTsKCmVudW0gbnNQbHVnaW5JbnN0YW5jZVBlZXJWYXJpYWJsZSB7CiAgICBuc1Bs
dWdpbkluc3RhbmNlUGVlclZhcmlhYmxlX05ldHNjYXBlV2luZG93ID0gMwoKCn07CgplbnVtIG5z
UGx1Z2luSW5zdGFuY2VWYXJpYWJsZSB7CiAgICBuc1BsdWdpbkluc3RhbmNlVmFyaWFibGVfV2lu
ZG93bGVzc0Jvb2wgPSAzLAogICAgbnNQbHVnaW5JbnN0YW5jZVZhcmlhYmxlX1RyYW5zcGFyZW50
Qm9vbCA9IDQsCiAgICBuc1BsdWdpbkluc3RhbmNlVmFyaWFibGVfRG9DYWNoZUJvb2wgPSA1LAog
ICAgbnNQbHVnaW5JbnN0YW5jZVZhcmlhYmxlX0NhbGxTZXRXaW5kb3dBZnRlckRlc3Ryb3lCb29s
ID0gNiwKICAgIG5zUGx1Z2luSW5zdGFuY2VWYXJpYWJsZV9TY3JpcHRhYmxlSW5zdGFuY2UgPSAx
MCwKICAgIG5zUGx1Z2luSW5zdGFuY2VWYXJpYWJsZV9TY3JpcHRhYmxlSUlEID0gMTEKfTsKCgoK
ZW51bSBuc1BsdWdpbk1vZGUgewogICAgbnNQbHVnaW5Nb2RlX0VtYmVkZGVkID0gMSwKICAgIG5z
UGx1Z2luTW9kZV9GdWxsCn07CgoKZW51bSBuc1BsdWdpblN0cmVhbVR5cGUgewogICAgbnNQbHVn
aW5TdHJlYW1UeXBlX05vcm1hbCA9IDEsCiAgICBuc1BsdWdpblN0cmVhbVR5cGVfU2VlaywKICAg
IG5zUGx1Z2luU3RyZWFtVHlwZV9Bc0ZpbGUsCiAgICBuc1BsdWdpblN0cmVhbVR5cGVfQXNGaWxl
T25seQp9OwoKCgoKCmVudW0gbnNQbHVnaW5XaW5kb3dUeXBlIHsKICAgIG5zUGx1Z2luV2luZG93
VHlwZV9XaW5kb3cgPSAxLAogICAgbnNQbHVnaW5XaW5kb3dUeXBlX0RyYXdhYmxlCn07CiMgMjUx
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zcGx1Z2luZGVmcy5oIgpzdHJ1Y3QgbnNQ
bHVnaW5Qb3J0Owp0eXBlZGVmIFJlZ2lvbiBuc1BsdWdpblJlZ2lvbjsKdHlwZWRlZiBEcmF3YWJs
ZSBuc1BsdWdpblBsYXRmb3JtV2luZG93UmVmOwojIDI2MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3BsdWdpbi9uc3BsdWdpbmRlZnMuaCIKc3RydWN0IG5zUGx1Z2luV2luZG93IHsKICAgIG5zUGx1
Z2luUG9ydCogd2luZG93OwoKCiAgICBQUkludDMyIHg7CiAgICBQUkludDMyIHk7CiAgICBQUlVp
bnQzMiB3aWR0aDsKICAgIFBSVWludDMyIGhlaWdodDsKICAgIG5zUGx1Z2luUmVjdCBjbGlwUmVj
dDsKCgogICAgdm9pZCogd3NfaW5mbzsKCiAgICBuc1BsdWdpbldpbmRvd1R5cGUgdHlwZTsKfTsK
CnN0cnVjdCBuc1BsdWdpbkZ1bGxQcmludCB7CiAgICBQUkJvb2wgcGx1Z2luUHJpbnRlZDsKCiAg
ICBQUkJvb2wgcHJpbnRPbmU7CgogICAgdm9pZCogcGxhdGZvcm1QcmludDsKfTsKCnN0cnVjdCBu
c1BsdWdpbkVtYmVkUHJpbnQgewogICAgbnNQbHVnaW5XaW5kb3cgd2luZG93OwogICAgdm9pZCog
cGxhdGZvcm1QcmludDsKfTsKCnN0cnVjdCBuc1BsdWdpblByaW50IHsKICAgIFBSVWludDE2IG1v
ZGU7CiAgICB1bmlvbgogICAgewogICAgICAgIG5zUGx1Z2luRnVsbFByaW50IGZ1bGxQcmludDsK
ICAgICAgICBuc1BsdWdpbkVtYmVkUHJpbnQgZW1iZWRQcmludDsKICAgIH0gcHJpbnQ7Cn07Cgpz
dHJ1Y3QgbnNQbHVnaW5FdmVudCB7CiMgMzE4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2lu
L25zcGx1Z2luZGVmcy5oIgogICAgWEV2ZW50IGV2ZW50OwoKCgp9OwoKCgoKCmVudW0gbnNQbHVn
aW5FdmVudFR5cGUgewojIDMzOCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc3BsdWdp
bmRlZnMuaCIKICAgIG5zUGx1Z2luRXZlbnRUeXBlX0lkbGUgPSAwCn07CgoKCmVudW0gbnNQbHVn
aW5SZWFzb24gewogICAgbnNQbHVnaW5SZWFzb25fQmFzZSA9IDAsCiAgICBuc1BsdWdpblJlYXNv
bl9Eb25lID0gMCwKICAgIG5zUGx1Z2luUmVhc29uX05ldHdvcmtFcnIsCiAgICBuc1BsdWdpblJl
YXNvbl9Vc2VyQnJlYWssCiAgICBuc1BsdWdpblJlYXNvbl9Ob1JlYXNvbgp9OwojIDM3MSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc3BsdWdpbmRlZnMuaCIKY2xhc3MgbnNJUGx1Z2lu
OwpjbGFzcyBuc0lFdmVudEhhbmRsZXI7CmNsYXNzIG5zSVBsdWdpbkluc3RhbmNlOwoKCmNsYXNz
IG5zSVBsdWdpbk1hbmFnZXI7CmNsYXNzIG5zSUZpbGVVdGlsaXRpZXM7CmNsYXNzIG5zSVBsdWdp
bkluc3RhbmNlUGVlcjsKY2xhc3MgbnNJV2luZG93bGVzc1BsdWdpbkluc3RhbmNlUGVlcjsKY2xh
c3MgbnNJUGx1Z2luVGFnSW5mbzsKIyAyMiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9u
c0lQbHVnaW5TdHJlYW1JbmZvLmgiIDIKIyAzMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdp
bi9uc0lQbHVnaW5TdHJlYW1JbmZvLmgiCmNsYXNzIG5zSVBsdWdpblN0cmVhbUluZm8gOiBwdWJs
aWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgp
IHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4ZWQ3ZDRjYTAsIDB4YjAwNSwgMHgxMWQyLCB7
IDB4YWQsIDB4YWEsIDB4MDAsIDB4ODAsIDB4NWYsIDB4NmQsIDB4ZWMsIDB4NDkgfX07IHJldHVy
biBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb250ZW50VHlwZShuc01JTUVUeXBlICph
Q29udGVudFR5cGUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSXNTZWVrYWJsZShQUkJvb2wg
KmFTZWVrYWJsZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMZW5ndGgoUFJVaW50MzIg
KmFMZW5ndGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGFzdE1vZGlmaWVkKFBSVWlu
dDMyICphTGFzdE1vZGlmaWVkKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFVSTChjb25z
dCBjaGFyICogKmFVUkwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVxdWVzdFJlYWQobnNC
eXRlUmFuZ2UgKiBhUmFuZ2VMaXN0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFN0cmVh
bU9mZnNldChQUkludDMyICphU3RyZWFtT2Zmc2V0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBT
ZXRTdHJlYW1PZmZzZXQoUFJJbnQzMiBhU3RyZWFtT2Zmc2V0KSA9IDA7Cgp9OwojIDE5ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpblN0cmVhbUxpc3RlbmVyLmgiIDIKCgoK
IyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJSW5wdXRTdHJlYW0uaCIgMQojIDE3
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJSW5wdXRTdHJlYW0uaCIKY2xhc3MgbnNJ
SW5wdXRTdHJlYW07CiMgNDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lJbnB1dFN0
cmVhbS5oIgp0eXBlZGVmIG5zcmVzdWx0ICgqIG5zV3JpdGVTZWdtZW50RnVuKShuc0lJbnB1dFN0
cmVhbSAqYUluU3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
b2lkICphQ2xvc3VyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciAqYUZyb21TZWdtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQUlVpbnQzMiBhVG9PZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBSVWludDMyIGFDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUFJVaW50MzIgKmFXcml0ZUNvdW50KTsKIyA1NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3hwY29tL25zSUlucHV0U3RyZWFtLmgiCmNsYXNzIG5zSUlucHV0U3RyZWFtIDogcHVibGljIG5z
SVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3Rh
dGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGZhOWM3ZjZjLCAweDYxYjMsIDB4MTFkNCwgeyAweDk4
LCAweDc3LCAweDAwLCAweGMwLCAweDRmLCAweGEwLCAweGNmLCAweDRhIH19OyByZXR1cm4gaWlk
O30KIyA2OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUlucHV0U3RyZWFtLmgiCiAg
dmlydHVhbCBuc3Jlc3VsdCBDbG9zZSh2b2lkKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEF2YWlsYWJsZShQUlVpbnQzMiAqX3JldHZhbCkgPSAwOwojIDkxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUveHBjb20vbnNJSW5wdXRTdHJlYW0uaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFJlYWQoY2hh
ciAqIGFCdWYsIFBSVWludDMyIGFDb3VudCwgUFJVaW50MzIgKl9yZXR2YWwpID0gMDsKIyAxMTUg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lJbnB1dFN0cmVhbS5oIgogIHZpcnR1YWwg
bnNyZXN1bHQgUmVhZFNlZ21lbnRzKG5zV3JpdGVTZWdtZW50RnVuIGFXcml0ZXIsIHZvaWQgKiBh
Q2xvc3VyZSwgUFJVaW50MzIgYUNvdW50LCBQUlVpbnQzMiAqX3JldHZhbCkgPSAwOwoKCgoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBJc05vbkJsb2NraW5nKFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKfTsK
IyAyMyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5TdHJlYW1MaXN0ZW5l
ci5oIiAyCiMgNDQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luU3RyZWFt
TGlzdGVuZXIuaCIKY2xhc3MgbnNJUGx1Z2luU3RyZWFtTGlzdGVuZXIgOiBwdWJsaWMgbnNJU3Vw
cG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMg
Y29uc3QgbnNJSUQgaWlkID0gezB4ZGYwNTU3NzAsIDB4NTQ0OCwgMHgxMWQyLCB7IDB4ODEsIDB4
NjQsIDB4MDAsIDB4NjAsIDB4MDgsIDB4MTEsIDB4OWQsIDB4N2EgfX07IHJldHVybiBpaWQ7fQoj
IDU4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpblN0cmVhbUxpc3RlbmVy
LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBPblN0YXJ0QmluZGluZyhuc0lQbHVnaW5TdHJlYW1JbmZv
ICphUGx1Z2luSW5mbykgPSAwOwojIDcyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25z
SVBsdWdpblN0cmVhbUxpc3RlbmVyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBPbkRhdGFBdmFpbGFi
bGUobnNJUGx1Z2luU3RyZWFtSW5mbyAqYVBsdWdpbkluZm8sIG5zSUlucHV0U3RyZWFtICphSW5w
dXRTdHJlYW0sIFBSVWludDMyIGFMZW5ndGgpID0gMDsKIyA4MiAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL3BsdWdpbi9uc0lQbHVnaW5TdHJlYW1MaXN0ZW5lci5oIgogIHZpcnR1YWwgbnNyZXN1bHQg
T25GaWxlQXZhaWxhYmxlKG5zSVBsdWdpblN0cmVhbUluZm8gKmFQbHVnaW5JbmZvLCBjb25zdCBj
aGFyICphRmlsZU5hbWUpID0gMDsKIyA5NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9u
c0lQbHVnaW5TdHJlYW1MaXN0ZW5lci5oIgogIHZpcnR1YWwgbnNyZXN1bHQgT25TdG9wQmluZGlu
Zyhuc0lQbHVnaW5TdHJlYW1JbmZvICphUGx1Z2luSW5mbywgbnNyZXN1bHQgYVN0YXR1cykgPSAw
OwoKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFN0cmVhbVR5cGUobnNQbHVnaW5TdHJlYW1U
eXBlICphU3RyZWFtVHlwZSkgPSAwOwoKfTsKIyAxNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3Bs
dWdpbi9uc0lQbHVnaW5JbnN0YW5jZS5oIiAyCgoKCgoKCgpjbGFzcyBuc0lQbHVnaW5JbnN0YW5j
ZVBlZXI7CiMgNDkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luSW5zdGFu
Y2UuaCIKY2xhc3MgbnNJUGx1Z2luSW5zdGFuY2UgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVi
bGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQg
aWlkID0gezB4ZWJlMDBmNDAsIDB4MDE5OSwgMHgxMWQyLCB7IDB4ODEsIDB4NWIsIDB4MDAsIDB4
NjAsIDB4MDgsIDB4MTEsIDB4OWQsIDB4N2EgfX07IHJldHVybiBpaWQ7fQojIDYyICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpbkluc3RhbmNlLmgiCiAgdmlydHVhbCBuc3Jl
c3VsdCBJbml0aWFsaXplKG5zSVBsdWdpbkluc3RhbmNlUGVlciAqYVBlZXIpID0gMDsKIyA3NCAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5JbnN0YW5jZS5oIgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0UGVlcihuc0lQbHVnaW5JbnN0YW5jZVBlZXIgKiAqYVBlZXIpID0gMDsK
IyA4NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5JbnN0YW5jZS5oIgog
IHZpcnR1YWwgbnNyZXN1bHQgU3RhcnQodm9pZCkgPSAwOwojIDk2ICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvcGx1Z2luL25zSVBsdWdpbkluc3RhbmNlLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBTdG9w
KHZvaWQpID0gMDsKIyAxMDcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2lu
SW5zdGFuY2UuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IERlc3Ryb3kodm9pZCkgPSAwOwojIDExOCAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5JbnN0YW5jZS5oIgogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0V2luZG93KG5zUGx1Z2luV2luZG93ICogYVdpbmRvdykgPSAwOwojIDEz
MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5JbnN0YW5jZS5oIgogIHZp
cnR1YWwgbnNyZXN1bHQgTmV3U3RyZWFtKG5zSVBsdWdpblN0cmVhbUxpc3RlbmVyICoqYUxpc3Rl
bmVyKSA9IDA7CiMgMTQxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpbklu
c3RhbmNlLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBQcmludChuc1BsdWdpblByaW50ICogYVBsYXRm
b3JtUHJpbnQpID0gMDsKIyAxNTEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1
Z2luSW5zdGFuY2UuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFZhbHVlKG5zUGx1Z2luSW5zdGFu
Y2VWYXJpYWJsZSBhVmFyaWFibGUsIHZvaWQgKiBhVmFsdWUpID0gMDsKIyAxNzEgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luSW5zdGFuY2UuaCIKICB2aXJ0dWFsIG5zcmVz
dWx0IEhhbmRsZUV2ZW50KG5zUGx1Z2luRXZlbnQgKiBhRXZlbnQsIFBSQm9vbCAqYUhhbmRsZWQp
ID0gMDsKCn07CiMgMTIwICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvbGF5b3V0L25zSU9iamVjdEZyYW1lLmgiIDEKIyA0MCAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2xheW91dC9uc0lPYmplY3RGcmFtZS5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9sYXlvdXQvbnNJRnJhbWUuaCIgMQojIDQ5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0
L25zSUZyYW1lLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNTdHlsZVN0
cnVjdC5oIiAxCiMgNDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zU3R5bGVTdHJ1
Y3QuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZ2Z4L25zQ29sb3IuaCIgMQojIDQzICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvZ2Z4L25zQ29sb3IuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUveHBjb20vbnNDb21PYnNvbGV0ZS5oIiAxCiMgNDQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9nZngvbnNDb2xvci5oIiAyCgpjbGFzcyBuc1N0cmluZzsKY2xhc3MgbnNBU3RyaW5nOwoKCgp0
eXBlZGVmIFBSVWludDMyIG5zY29sb3I7CiMgODkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9nZngv
bnNDb2xvci5oIgpleHRlcm4gIkMiIFBSQm9vbCBOU19IZXhUb1JHQihjb25zdCBuc1N0cmluZyYg
YUJ1ZiwgbnNjb2xvciogYVJlc3VsdCk7CgoKCgpleHRlcm4gIkMiIFBSQm9vbCBOU19Mb29zZUhl
eFRvUkdCKGNvbnN0IG5zU3RyaW5nJiBhQnVmLCBuc2NvbG9yKiBhUmVzdWx0KTsKCgoKZXh0ZXJu
ICJDIiBQUkJvb2wgTlNfQ29sb3JOYW1lVG9SR0IoY29uc3QgbnNBU3RyaW5nJiBhQnVmLCBuc2Nv
bG9yKiBhUmVzdWx0KTsKCgoKZXh0ZXJuICJDIiBuc2NvbG9yIE5TX0JyaWdodGVuQ29sb3IobnNj
b2xvciBpbkNvbG9yKTsKCgoKZXh0ZXJuICJDIiBuc2NvbG9yIE5TX0RhcmtlbkNvbG9yKG5zY29s
b3IgaW5Db2xvcik7CiMgNDIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zU3R5bGVT
dHJ1Y3QuaCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9nZngvbnNDb29yZC5oIiAxCiMg
NTYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9nZngvbnNDb29yZC5oIgp0eXBlZGVmIFBSSW50MzIg
bnNjb29yZDsKIyA0MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNTdHlsZVN0cnVj
dC5oIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2dmeC9uc01hcmdpbi5oIiAxCiMgNDQg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9nZngvbnNNYXJnaW4uaCIKc3RydWN0IG5zTWFyZ2luIHsK
ICBuc2Nvb3JkIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbTsKCgogIG5zTWFyZ2luKCkge30KICBu
c01hcmdpbihjb25zdCBuc01hcmdpbiYgYU1hcmdpbikgeyp0aGlzID0gYU1hcmdpbjt9CiAgbnNN
YXJnaW4obnNjb29yZCBhTGVmdCwgbnNjb29yZCBhVG9wLAogICAgICAgICAgIG5zY29vcmQgYVJp
Z2h0LCBuc2Nvb3JkIGFCb3R0b20pIHtsZWZ0ID0gYUxlZnQ7IHRvcCA9IGFUb3A7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0gYVJpZ2h0OyBib3R0
b20gPSBhQm90dG9tO30KCiAgdm9pZCBTaXplVG8obnNjb29yZCBhTGVmdCwgbnNjb29yZCBhVG9w
LAogICAgICAgICAgICAgIG5zY29vcmQgYVJpZ2h0LCBuc2Nvb3JkIGFCb3R0b20pIHtsZWZ0ID0g
YUxlZnQ7IHRvcCA9IGFUb3A7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJpZ2h0ID0gYVJpZ2h0OyBib3R0b20gPSBhQm90dG9tO30KICB2b2lkIFNpemVC
eShuc2Nvb3JkIGFMZWZ0LCBuc2Nvb3JkIGFUb3AsCiAgICAgICAgICAgICAgbnNjb29yZCBhUmln
aHQsIG5zY29vcmQgYUJvdHRvbSkge2xlZnQgKz0gYUxlZnQ7IHRvcCArPSBhVG9wOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodCArPSBhUmlnaHQ7
IGJvdHRvbSArPSBhQm90dG9tO30KCgoKICBQUkJvb2wgb3BlcmF0b3I9PShjb25zdCBuc01hcmdp
biYgYU1hcmdpbikgY29uc3QgewogICAgcmV0dXJuIChQUkJvb2wpICgobGVmdCA9PSBhTWFyZ2lu
LmxlZnQpICYmICh0b3AgPT0gYU1hcmdpbi50b3ApICYmCiAgICAgICAgICAgICAgICAgICAgIChy
aWdodCA9PSBhTWFyZ2luLnJpZ2h0KSAmJiAoYm90dG9tID09IGFNYXJnaW4uYm90dG9tKSk7CiAg
fQogIFBSQm9vbCBvcGVyYXRvciE9KGNvbnN0IG5zTWFyZ2luJiBhTWFyZ2luKSBjb25zdCB7CiAg
ICByZXR1cm4gKFBSQm9vbCkgKChsZWZ0ICE9IGFNYXJnaW4ubGVmdCkgfHwgKHRvcCAhPSBhTWFy
Z2luLnRvcCkgfHwKICAgICAgICAgICAgICAgICAgICAgKHJpZ2h0ICE9IGFNYXJnaW4ucmlnaHQp
IHx8IChib3R0b20gIT0gYU1hcmdpbi5ib3R0b20pKTsKICB9CiAgbnNNYXJnaW4gb3BlcmF0b3Ir
KGNvbnN0IG5zTWFyZ2luJiBhTWFyZ2luKSBjb25zdCB7CiAgICByZXR1cm4gbnNNYXJnaW4obGVm
dCArIGFNYXJnaW4ubGVmdCwgdG9wICsgYU1hcmdpbi50b3AsCiAgICAgICAgICAgICAgICAgICAg
cmlnaHQgKyBhTWFyZ2luLnJpZ2h0LCBib3R0b20gKyBhTWFyZ2luLmJvdHRvbSk7CiAgfQogIG5z
TWFyZ2luIG9wZXJhdG9yLShjb25zdCBuc01hcmdpbiYgYU1hcmdpbikgY29uc3QgewogICAgcmV0
dXJuIG5zTWFyZ2luKGxlZnQgLSBhTWFyZ2luLmxlZnQsIHRvcCAtIGFNYXJnaW4udG9wLAogICAg
ICAgICAgICAgICAgICAgIHJpZ2h0IC0gYU1hcmdpbi5yaWdodCwgYm90dG9tIC0gYU1hcmdpbi5i
b3R0b20pOwogIH0KICBuc01hcmdpbiYgb3BlcmF0b3IrPShjb25zdCBuc01hcmdpbiYgYU1hcmdp
bikge2xlZnQgKz0gYU1hcmdpbi5sZWZ0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdG9wICs9IGFNYXJnaW4udG9wOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQgKz0gYU1hcmdpbi5yaWdodDsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbSArPSBh
TWFyZ2luLmJvdHRvbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAqdGhpczt9CiAgbnNNYXJnaW4mIG9wZXJhdG9yLT0oY29uc3QgbnNNYXJn
aW4mIGFNYXJnaW4pIHtsZWZ0IC09IGFNYXJnaW4ubGVmdDsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcCAtPSBhTWFyZ2luLnRvcDsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0IC09IGFNYXJnaW4u
cmlnaHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b3R0b20gLT0gYU1hcmdpbi5ib3R0b207CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7fQp9OwojIDQ0ICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvY29udGVudC9uc1N0eWxlU3RydWN0LmgiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvZ2Z4L25zUmVjdC5oIiAxCiMgNDUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9nZngvbnNSZWN0
LmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2dmeC9uc1BvaW50LmgiIDEKIyA0NCAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2dmeC9uc1BvaW50LmgiCnN0cnVjdCBuc1BvaW50IHsKICBuc2Nv
b3JkIHgsIHk7CgoKICBuc1BvaW50KCkge30KICBuc1BvaW50KGNvbnN0IG5zUG9pbnQmIGFQb2lu
dCkge3ggPSBhUG9pbnQueDsgeSA9IGFQb2ludC55O30KICBuc1BvaW50KG5zY29vcmQgYVgsIG5z
Y29vcmQgYVkpIHt4ID0gYVg7IHkgPSBhWTt9CgogIHZvaWQgTW92ZVRvKG5zY29vcmQgYVgsIG5z
Y29vcmQgYVkpIHt4ID0gYVg7IHkgPSBhWTt9CiAgdm9pZCBNb3ZlQnkobnNjb29yZCBhRHgsIG5z
Y29vcmQgYUR5KSB7eCArPSBhRHg7IHkgKz0gYUR5O30KCgoKICBQUkJvb2wgb3BlcmF0b3I9PShj
b25zdCBuc1BvaW50JiBhUG9pbnQpIGNvbnN0IHsKICAgIHJldHVybiAoUFJCb29sKSAoKHggPT0g
YVBvaW50LngpICYmICh5ID09IGFQb2ludC55KSk7CiAgfQogIFBSQm9vbCBvcGVyYXRvciE9KGNv
bnN0IG5zUG9pbnQmIGFQb2ludCkgY29uc3QgewogICAgcmV0dXJuIChQUkJvb2wpICgoeCAhPSBh
UG9pbnQueCkgfHwgKHkgIT0gYVBvaW50LnkpKTsKICB9CiAgbnNQb2ludCBvcGVyYXRvcisoY29u
c3QgbnNQb2ludCYgYVBvaW50KSBjb25zdCB7CiAgICByZXR1cm4gbnNQb2ludCh4ICsgYVBvaW50
LngsIHkgKyBhUG9pbnQueSk7CiAgfQogIG5zUG9pbnQgb3BlcmF0b3ItKGNvbnN0IG5zUG9pbnQm
IGFQb2ludCkgY29uc3QgewogICAgcmV0dXJuIG5zUG9pbnQoeCAtIGFQb2ludC54LCB5IC0gYVBv
aW50LnkpOwogIH0KICBuc1BvaW50JiBvcGVyYXRvcis9KGNvbnN0IG5zUG9pbnQmIGFQb2ludCkg
ewogICAgeCArPSBhUG9pbnQueDsKICAgIHkgKz0gYVBvaW50Lnk7CiAgICByZXR1cm4gKnRoaXM7
CiAgfQogIG5zUG9pbnQmIG9wZXJhdG9yLT0oY29uc3QgbnNQb2ludCYgYVBvaW50KSB7CiAgICB4
IC09IGFQb2ludC54OwogICAgeSAtPSBhUG9pbnQueTsKICAgIHJldHVybiAqdGhpczsKICB9Cn07
CgoKCgoKc3RydWN0IG5zRmxvYXRQb2ludCB7CiAgZmxvYXQgeCwgeTsKCgogIG5zRmxvYXRQb2lu
dCgpIHt9CiAgbnNGbG9hdFBvaW50KGNvbnN0IG5zRmxvYXRQb2ludCYgYVBvaW50KSB7eCA9IGFQ
b2ludC54OyB5ID0gYVBvaW50Lnk7fQogIG5zRmxvYXRQb2ludChmbG9hdCBhWCwgZmxvYXQgYVkp
IHt4ID0gYVg7IHkgPSBhWTt9CgogIHZvaWQgTW92ZVRvKGZsb2F0IGFYLCBmbG9hdCBhWSkge3gg
PSBhWDsgeSA9IGFZO30KICB2b2lkIE1vdmVUbyhuc2Nvb3JkIGFYLCBuc2Nvb3JkIGFZKSB7eCA9
IChmbG9hdClhWDsgeSA9IChmbG9hdClhWTt9CiAgdm9pZCBNb3ZlQnkoZmxvYXQgYUR4LCBmbG9h
dCBhRHkpIHt4ICs9IGFEeDsgeSArPSBhRHk7fQoKCgogIFBSQm9vbCBvcGVyYXRvcj09KGNvbnN0
IG5zRmxvYXRQb2ludCYgYVBvaW50KSBjb25zdCB7CiAgICByZXR1cm4gKFBSQm9vbCkgKCh4ID09
IGFQb2ludC54KSAmJiAoeSA9PSBhUG9pbnQueSkpOwogIH0KICBQUkJvb2wgb3BlcmF0b3IhPShj
b25zdCBuc0Zsb2F0UG9pbnQmIGFQb2ludCkgY29uc3QgewogICAgcmV0dXJuIChQUkJvb2wpICgo
eCAhPSBhUG9pbnQueCkgfHwgKHkgIT0gYVBvaW50LnkpKTsKICB9CiAgbnNGbG9hdFBvaW50IG9w
ZXJhdG9yKyhjb25zdCBuc0Zsb2F0UG9pbnQmIGFQb2ludCkgY29uc3QgewogICAgcmV0dXJuIG5z
RmxvYXRQb2ludCh4ICsgYVBvaW50LngsIHkgKyBhUG9pbnQueSk7CiAgfQogIG5zRmxvYXRQb2lu
dCBvcGVyYXRvci0oY29uc3QgbnNGbG9hdFBvaW50JiBhUG9pbnQpIGNvbnN0IHsKICAgIHJldHVy
biBuc0Zsb2F0UG9pbnQoeCAtIGFQb2ludC54LCB5IC0gYVBvaW50LnkpOwogIH0KICBuc0Zsb2F0
UG9pbnQmIG9wZXJhdG9yKz0oY29uc3QgbnNGbG9hdFBvaW50JiBhUG9pbnQpIHsKICAgIHggKz0g
YVBvaW50Lng7CiAgICB5ICs9IGFQb2ludC55OwogICAgcmV0dXJuICp0aGlzOwogIH0KICBuc0Zs
b2F0UG9pbnQmIG9wZXJhdG9yLT0oY29uc3QgbnNGbG9hdFBvaW50JiBhUG9pbnQpIHsKICAgIHgg
LT0gYVBvaW50Lng7CiAgICB5IC09IGFQb2ludC55OwogICAgcmV0dXJuICp0aGlzOwogIH0KfTsK
CgoKCgoKc3RydWN0IG5zUGF0aFBvaW50OiBwdWJsaWMgbnNGbG9hdFBvaW50ewoKICBQUkJvb2wg
bUlzT25DdXJ2ZTsKCgogIG5zUGF0aFBvaW50KCkge30KICBuc1BhdGhQb2ludChjb25zdCBuc1Bh
dGhQb2ludCYgYVBvaW50KSB7eCA9IGFQb2ludC54OyB5ID0gYVBvaW50Lnk7bUlzT25DdXJ2ZT1h
UG9pbnQubUlzT25DdXJ2ZTt9CiAgbnNQYXRoUG9pbnQoZmxvYXQgYVgsIGZsb2F0IGFZKSB7eCA9
IGFYOyB5ID0gYVk7bUlzT25DdXJ2ZT0xO30KICBuc1BhdGhQb2ludChmbG9hdCBhWCwgZmxvYXQg
YVksUFJCb29sIGFJc09uQ3VydmUpIHt4ID0gYVg7IHkgPSBhWTttSXNPbkN1cnZlPWFJc09uQ3Vy
dmU7fQoKfTsKIyA0NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2dmeC9uc1JlY3QuaCIgMgojIDEg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9nZngvbnNTaXplLmgiIDEKIyA0NyAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2dmeC9uc1NpemUuaCIKc3RydWN0IG5zU2l6ZSB7CiAgbnNjb29yZCB3aWR0aCwg
aGVpZ2h0OwoKCiAgbnNTaXplKCkge30KICBuc1NpemUoY29uc3QgbnNTaXplJiBhU2l6ZSkge3dp
ZHRoID0gYVNpemUud2lkdGg7IGhlaWdodCA9IGFTaXplLmhlaWdodDt9CiAgbnNTaXplKG5zY29v
cmQgYVdpZHRoLCBuc2Nvb3JkIGFIZWlnaHQpIHt3aWR0aCA9IGFXaWR0aDsgaGVpZ2h0ID0gYUhl
aWdodDt9CgogIHZvaWQgU2l6ZVRvKG5zY29vcmQgYVdpZHRoLCBuc2Nvb3JkIGFIZWlnaHQpIHt3
aWR0aCA9IGFXaWR0aDsgaGVpZ2h0ID0gYUhlaWdodDt9CiAgdm9pZCBTaXplQnkobnNjb29yZCBh
RGVsdGFXaWR0aCwgbnNjb29yZCBhRGVsdGFIZWlnaHQpIHt3aWR0aCArPSBhRGVsdGFXaWR0aDsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhlaWdodCArPSBhRGVsdGFIZWlnaHQ7fQoKCgogIFBSQm9vbCBvcGVyYXRvcj09KGNvbnN0IG5z
U2l6ZSYgYVNpemUpIGNvbnN0IHsKICAgIHJldHVybiAoUFJCb29sKSAoKHdpZHRoID09IGFTaXpl
LndpZHRoKSAmJiAoaGVpZ2h0ID09IGFTaXplLmhlaWdodCkpOwogIH0KICBQUkJvb2wgb3BlcmF0
b3IhPShjb25zdCBuc1NpemUmIGFTaXplKSBjb25zdCB7CiAgICByZXR1cm4gKFBSQm9vbCkgKCh3
aWR0aCAhPSBhU2l6ZS53aWR0aCkgfHwgKGhlaWdodCAhPSBhU2l6ZS5oZWlnaHQpKTsKICB9CiAg
bnNTaXplIG9wZXJhdG9yKyhjb25zdCBuc1NpemUmIGFTaXplKSBjb25zdCB7CiAgICByZXR1cm4g
bnNTaXplKHdpZHRoICsgYVNpemUud2lkdGgsIGhlaWdodCArIGFTaXplLmhlaWdodCk7CiAgfQog
IG5zU2l6ZSBvcGVyYXRvci0oY29uc3QgbnNTaXplJiBhU2l6ZSkgY29uc3QgewogICAgcmV0dXJu
IG5zU2l6ZSh3aWR0aCAtIGFTaXplLndpZHRoLCBoZWlnaHQgLSBhU2l6ZS5oZWlnaHQpOwogIH0K
ICBuc1NpemUmIG9wZXJhdG9yKz0oY29uc3QgbnNTaXplJiBhU2l6ZSkge3dpZHRoICs9IGFTaXpl
LndpZHRoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0
ICs9IGFTaXplLmhlaWdodDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAqdGhpczt9CiAgbnNTaXplJiBvcGVyYXRvci09KGNvbnN0IG5zU2l6ZSYgYVNp
emUpIHt3aWR0aCAtPSBhU2l6ZS53aWR0aDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhlaWdodCAtPSBhU2l6ZS5oZWlnaHQ7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7fQp9OwojIDQ3ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvZ2Z4L25zUmVjdC5oIiAyCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94
cGNvbS9uc1VuaXRDb252ZXJzaW9uLmgiIDEKIyA0MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29tL25zVW5pdENvbnZlcnNpb24uaCIKIyAxICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAxIDMKIyAy
OSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwpleHRlcm4gIkMiIHsKCgoKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy9odWdlX3ZhbC5oIiAxIDMKIyAzNCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCgoK
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbmFuLmgiIDEgMwojIDM4ICIvdXNyL2luY2x1ZGUvbWF0
aC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhkZWYuaCIgMSAzCiMgMjkgIi91
c3IvaW5jbHVkZS9iaXRzL21hdGhkZWYuaCIgMwp0eXBlZGVmIGxvbmcgZG91YmxlIGZsb2F0X3Q7
Cgp0eXBlZGVmIGxvbmcgZG91YmxlIGRvdWJsZV90OwojIDQxICIvdXNyL2luY2x1ZGUvbWF0aC5o
IiAyIDMKIyA2NSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L21hdGhjYWxscy5oIiAxIDMKIyA1MyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMK
CgpleHRlcm4gZG91YmxlIGFjb3MgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91Ymxl
IF9fYWNvcyAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIGFzaW4gKGRvdWJs
ZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fYXNpbiAoZG91YmxlIF9feCkgdGhyb3cg
KCk7CgpleHRlcm4gZG91YmxlIGF0YW4gKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91
YmxlIF9fYXRhbiAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIGF0YW4yIChk
b3VibGUgX195LCBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2F0YW4yIChk
b3VibGUgX195LCBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGNvcyAoZG91
YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19jb3MgKGRvdWJsZSBfX3gpIHRocm93
ICgpOwoKZXh0ZXJuIGRvdWJsZSBzaW4gKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91
YmxlIF9fc2luIChkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBkb3VibGUgdGFuIChkb3Vi
bGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3RhbiAoZG91YmxlIF9feCkgdGhyb3cg
KCk7CgoKCgpleHRlcm4gZG91YmxlIGNvc2ggKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4g
ZG91YmxlIF9fY29zaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIHNpbmgg
KGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fc2luaCAoZG91YmxlIF9feCkg
dGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIHRhbmggKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRl
cm4gZG91YmxlIF9fdGFuaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gdm9pZCBz
aW5jb3MgKGRvdWJsZSBfX3gsIGRvdWJsZSAqX19zaW54LCBkb3VibGUgKl9fY29zeCkgdGhyb3cg
KCk7IGV4dGVybiB2b2lkIF9fc2luY29zIChkb3VibGUgX194LCBkb3VibGUgKl9fc2lueCwgZG91
YmxlICpfX2Nvc3gpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZG91YmxlIGFjb3NoIChkb3VibGUg
X194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2Fjb3NoIChkb3VibGUgX194KSB0aHJvdyAo
KTsKCmV4dGVybiBkb3VibGUgYXNpbmggKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91
YmxlIF9fYXNpbmggKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGRvdWJsZSBhdGFuaCAo
ZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19hdGFuaCAoZG91YmxlIF9feCkg
dGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gZG91YmxlIGV4cCAoZG91YmxlIF9feCkgdGhyb3cgKCk7
IGV4dGVybiBkb3VibGUgX19leHAgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBkb3Vi
bGUgZnJleHAgKGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCkgdGhyb3cgKCk7IGV4dGVybiBk
b3VibGUgX19mcmV4cCAoZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KSB0aHJvdyAoKTsKCgpl
eHRlcm4gZG91YmxlIGxkZXhwIChkb3VibGUgX194LCBpbnQgX19leHBvbmVudCkgdGhyb3cgKCk7
IGV4dGVybiBkb3VibGUgX19sZGV4cCAoZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpIHRocm93
ICgpOwoKCmV4dGVybiBkb3VibGUgbG9nIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRv
dWJsZSBfX2xvZyAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBsb2cxMCAo
ZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19sb2cxMCAoZG91YmxlIF9feCkg
dGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBtb2RmIChkb3VibGUgX194LCBkb3VibGUgKl9faXB0
cikgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19tb2RmIChkb3VibGUgX194LCBkb3VibGUgKl9f
aXB0cikgdGhyb3cgKCk7CgoKCgpleHRlcm4gZG91YmxlIGV4cDEwIChkb3VibGUgX194KSB0aHJv
dyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2V4cDEwIChkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVy
biBkb3VibGUgcG93MTAgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fcG93
MTAgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCmV4dGVybiBkb3VibGUgZXhwbTEgKGRvdWJs
ZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZXhwbTEgKGRvdWJsZSBfX3gpIHRocm93
ICgpOwoKCmV4dGVybiBkb3VibGUgbG9nMXAgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4g
ZG91YmxlIF9fbG9nMXAgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgbG9n
YiAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19sb2diIChkb3VibGUgX194
KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGRvdWJsZSBleHAyIChkb3VibGUgX194KSB0aHJvdyAo
KTsgZXh0ZXJuIGRvdWJsZSBfX2V4cDIgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBk
b3VibGUgbG9nMiAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19sb2cyIChk
b3VibGUgX194KSB0aHJvdyAoKTsKCgoKCgoKCgpleHRlcm4gZG91YmxlIHBvdyAoZG91YmxlIF9f
eCwgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19wb3cgKGRvdWJsZSBfX3gs
IGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgc3FydCAoZG91YmxlIF9feCkg
dGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19zcXJ0IChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoK
CgpleHRlcm4gZG91YmxlIGh5cG90IChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKTsg
ZXh0ZXJuIGRvdWJsZSBfX2h5cG90IChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKTsK
CgoKCgoKZXh0ZXJuIGRvdWJsZSBjYnJ0IChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRv
dWJsZSBfX2NicnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCgoKCmV4dGVybiBkb3VibGUg
Y2VpbCAoZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBl
eHRlcm4gZG91YmxlIF9fY2VpbCAoZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCmV4dGVybiBkb3VibGUgZmFicyAoZG91YmxlIF9feCkgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fZmFicyAoZG91Ymxl
IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBkb3Vi
bGUgZmxvb3IgKGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsgZXh0ZXJuIGRvdWJsZSBfX2Zsb29yIChkb3VibGUgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGRvdWJsZSBmbW9kIChkb3VibGUgX194LCBkb3Vi
bGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2Ztb2QgKGRvdWJsZSBfX3gsIGRvdWJs
ZSBfX3kpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBfX2lzaW5mIChkb3VibGUgX192YWx1ZSkg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19maW5p
dGUgKGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgoKCgoKZXh0ZXJuIGludCBpc2luZiAoZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZSAoZG91YmxlIF9fdmFsdWUp
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZG91YmxlIGRy
ZW0gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZHJl
bSAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKCmV4dGVybiBkb3VibGUgc2ln
bmlmaWNhbmQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fc2lnbmlmaWNh
bmQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCmV4dGVybiBkb3VibGUgY29weXNpZ24gKGRv
dWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsgZXh0ZXJuIGRvdWJsZSBfX2NvcHlzaWduIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCmV4dGVybiBkb3VibGUgbmFu
IChfX2NvbnN0IGNoYXIgKl9fdGFnYikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOyBleHRlcm4gZG91YmxlIF9fbmFuIChfX2NvbnN0IGNoYXIgKl9fdGFnYikgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCmV4dGVybiBpbnQgX19pc25hbiAoZG91
YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0
ZXJuIGludCBpc25hbiAoZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKCgpleHRlcm4gZG91YmxlIGowIChkb3VibGUpIHRocm93ICgpOyBleHRlcm4g
ZG91YmxlIF9fajAgKGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBkb3VibGUgajEgKGRvdWJsZSkg
dGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19qMSAoZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGRv
dWJsZSBqbiAoaW50LCBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fam4gKGludCwg
ZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGRvdWJsZSB5MCAoZG91YmxlKSB0aHJvdyAoKTsgZXh0
ZXJuIGRvdWJsZSBfX3kwIChkb3VibGUpIHRocm93ICgpOwpleHRlcm4gZG91YmxlIHkxIChkb3Vi
bGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9feTEgKGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVy
biBkb3VibGUgeW4gKGludCwgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3luIChp
bnQsIGRvdWJsZSkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBkb3VibGUgZXJmIChkb3VibGUpIHRo
cm93ICgpOyBleHRlcm4gZG91YmxlIF9fZXJmIChkb3VibGUpIHRocm93ICgpOwpleHRlcm4gZG91
YmxlIGVyZmMgKGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19lcmZjIChkb3VibGUp
IHRocm93ICgpOwpleHRlcm4gZG91YmxlIGxnYW1tYSAoZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJu
IGRvdWJsZSBfX2xnYW1tYSAoZG91YmxlKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGRvdWJsZSB0
Z2FtbWEgKGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX190Z2FtbWEgKGRvdWJsZSkg
dGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGRvdWJsZSBnYW1tYSAoZG91YmxlKSB0aHJvdyAoKTsgZXh0
ZXJuIGRvdWJsZSBfX2dhbW1hIChkb3VibGUpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZG91Ymxl
IGxnYW1tYV9yIChkb3VibGUsIGludCAqX19zaWduZ2FtcCkgdGhyb3cgKCk7IGV4dGVybiBkb3Vi
bGUgX19sZ2FtbWFfciAoZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApIHRocm93ICgpOwoKCgoKCgoK
ZXh0ZXJuIGRvdWJsZSByaW50IChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBf
X3JpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgbmV4dGFmdGVyIChk
b3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7IGV4dGVybiBkb3VibGUgX19uZXh0YWZ0ZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCmV4dGVybiBkb3VibGUgbmV4dHRv
d2FyZCAoZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19uZXh0dG93YXJkIChkb3VibGUgX194LCBs
b25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoK
ZXh0ZXJuIGRvdWJsZSByZW1haW5kZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgp
OyBleHRlcm4gZG91YmxlIF9fcmVtYWluZGVyIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJv
dyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSBzY2FsYm4gKGRvdWJsZSBfX3gsIGludCBfX24pIHRocm93
ICgpOyBleHRlcm4gZG91YmxlIF9fc2NhbGJuIChkb3VibGUgX194LCBpbnQgX19uKSB0aHJvdyAo
KTsKCgoKZXh0ZXJuIGludCBpbG9nYiAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBpbnQg
X19pbG9nYiAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gZG91YmxlIHNjYWxibG4g
KGRvdWJsZSBfX3gsIGxvbmcgaW50IF9fbikgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19zY2Fs
YmxuIChkb3VibGUgX194LCBsb25nIGludCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gZG91Ymxl
IG5lYXJieWludCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19uZWFyYnlp
bnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIHJvdW5kIChkb3VibGUg
X194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3JvdW5kIChkb3VibGUgX194KSB0aHJvdyAo
KTsKCgoKZXh0ZXJuIGRvdWJsZSB0cnVuYyAoZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fdHJ1bmMgKGRvdWJsZSBfX3gpIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBkb3VibGUgcmVt
cXVvIChkb3VibGUgX194LCBkb3VibGUgX195LCBpbnQgKl9fcXVvKSB0aHJvdyAoKTsgZXh0ZXJu
IGRvdWJsZSBfX3JlbXF1byAoZG91YmxlIF9feCwgZG91YmxlIF9feSwgaW50ICpfX3F1bykgdGhy
b3cgKCk7CgoKCgoKCmV4dGVybiBsb25nIGludCBscmludCAoZG91YmxlIF9feCkgdGhyb3cgKCk7
IGV4dGVybiBsb25nIGludCBfX2xyaW50IChkb3VibGUgX194KSB0aHJvdyAoKTsKZXh0ZXJuIGxv
bmcgbG9uZyBpbnQgbGxyaW50IChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgbG9u
ZyBpbnQgX19sbHJpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gbG9uZyBpbnQg
bHJvdW5kIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgaW50IF9fbHJvdW5kIChk
b3VibGUgX194KSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyb3VuZCAoZG91Ymxl
IF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxyb3VuZCAoZG91YmxlIF9f
eCkgdGhyb3cgKCk7CgoKCmV4dGVybiBkb3VibGUgZmRpbSAoZG91YmxlIF9feCwgZG91YmxlIF9f
eSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19mZGltIChkb3VibGUgX194LCBkb3VibGUgX195
KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGZtYXggKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kp
IHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZm1heCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkg
dGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBmbWluIChkb3VibGUgX194LCBkb3VibGUgX195KSB0
aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2ZtaW4gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRo
cm93ICgpOwoKCgpleHRlcm4gaW50IF9fZnBjbGFzc2lmeSAoZG91YmxlIF9fdmFsdWUpIHRocm93
ICgpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19zaWdu
Yml0IChkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgoKCmV4dGVybiBkb3VibGUgZm1hIChkb3VibGUgX194LCBkb3VibGUgX195LCBkb3Vi
bGUgX196KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2ZtYSAoZG91YmxlIF9feCwgZG91Ymxl
IF9feSwgZG91YmxlIF9feikgdGhyb3cgKCk7CgoKCgpleHRlcm4gZG91YmxlIHNjYWxiIChkb3Vi
bGUgX194LCBkb3VibGUgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3NjYWxiIChkb3Vi
bGUgX194LCBkb3VibGUgX19uKSB0aHJvdyAoKTsKIyA2NiAiL3Vzci9pbmNsdWRlL21hdGguaCIg
MiAzCiMgODggIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9t
YXRoY2FsbHMuaCIgMSAzCiMgNTMgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCgoK
ZXh0ZXJuIGZsb2F0IGFjb3NmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19h
Y29zZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBhc2luZiAoZmxvYXQgX194
KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fYXNpbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7Cgpl
eHRlcm4gZmxvYXQgYXRhbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2F0
YW5mIChmbG9hdCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IGF0YW4yZiAoZmxvYXQgX195
LCBmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19hdGFuMmYgKGZsb2F0IF9feSwg
ZmxvYXQgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgY29zZiAoZmxvYXQgX194KSB0aHJv
dyAoKTsgZXh0ZXJuIGZsb2F0IF9fY29zZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBm
bG9hdCBzaW5mIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19zaW5mIChmbG9h
dCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IHRhbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7
IGV4dGVybiBmbG9hdCBfX3RhbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gZmxv
YXQgY29zaGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2Nvc2hmIChmbG9h
dCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IHNpbmhmIChmbG9hdCBfX3gpIHRocm93ICgp
OyBleHRlcm4gZmxvYXQgX19zaW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBmbG9h
dCB0YW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fdGFuaGYgKGZsb2F0
IF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gdm9pZCBzaW5jb3NmIChmbG9hdCBfX3gsIGZsb2F0
ICpfX3NpbngsIGZsb2F0ICpfX2Nvc3gpIHRocm93ICgpOyBleHRlcm4gdm9pZCBfX3NpbmNvc2Yg
KGZsb2F0IF9feCwgZmxvYXQgKl9fc2lueCwgZmxvYXQgKl9fY29zeCkgdGhyb3cgKCk7CgoKCgoK
CmV4dGVybiBmbG9hdCBhY29zaGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBf
X2Fjb3NoZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBhc2luaGYgKGZsb2F0
IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2FzaW5oZiAoZmxvYXQgX194KSB0aHJvdyAo
KTsKCmV4dGVybiBmbG9hdCBhdGFuaGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9h
dCBfX2F0YW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBmbG9hdCBleHBm
IChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19leHBmIChmbG9hdCBfX3gpIHRo
cm93ICgpOwoKCmV4dGVybiBmbG9hdCBmcmV4cGYgKGZsb2F0IF9feCwgaW50ICpfX2V4cG9uZW50
KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZnJleHBmIChmbG9hdCBfX3gsIGludCAqX19leHBv
bmVudCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGxkZXhwZiAoZmxvYXQgX194LCBpbnQgX19l
eHBvbmVudCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2xkZXhwZiAoZmxvYXQgX194LCBpbnQg
X19leHBvbmVudCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGxvZ2YgKGZsb2F0IF9feCkgdGhy
b3cgKCk7IGV4dGVybiBmbG9hdCBfX2xvZ2YgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJu
IGZsb2F0IGxvZzEwZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fbG9nMTBm
IChmbG9hdCBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBmbG9hdCBtb2RmZiAoZmxvYXQgX194LCBm
bG9hdCAqX19pcHRyKSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fbW9kZmYgKGZsb2F0IF9feCwg
ZmxvYXQgKl9faXB0cikgdGhyb3cgKCk7CgoKCgpleHRlcm4gZmxvYXQgZXhwMTBmIChmbG9hdCBf
X3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19leHAxMGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7
CgpleHRlcm4gZmxvYXQgcG93MTBmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQg
X19wb3cxMGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGZsb2F0IGV4cG0xZiAo
ZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZXhwbTFmIChmbG9hdCBfX3gpIHRo
cm93ICgpOwoKCmV4dGVybiBmbG9hdCBsb2cxcGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVy
biBmbG9hdCBfX2xvZzFwZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgbG9n
YmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2xvZ2JmIChmbG9hdCBfX3gp
IHRocm93ICgpOwoKCgoKCgpleHRlcm4gZmxvYXQgZXhwMmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7
IGV4dGVybiBmbG9hdCBfX2V4cDJmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBmbG9h
dCBsb2cyZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fbG9nMmYgKGZsb2F0
IF9feCkgdGhyb3cgKCk7CgoKCgoKCgoKZXh0ZXJuIGZsb2F0IHBvd2YgKGZsb2F0IF9feCwgZmxv
YXQgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fcG93ZiAoZmxvYXQgX194LCBmbG9hdCBf
X3kpIHRocm93ICgpOwoKCmV4dGVybiBmbG9hdCBzcXJ0ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsg
ZXh0ZXJuIGZsb2F0IF9fc3FydGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGZs
b2F0IGh5cG90ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOyBleHRlcm4gZmxvYXQg
X19oeXBvdGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGZs
b2F0IGNicnRmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19jYnJ0ZiAoZmxv
YXQgX194KSB0aHJvdyAoKTsKCgoKCgoKCgpleHRlcm4gZmxvYXQgY2VpbGYgKGZsb2F0IF9feCkg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19jZWls
ZiAoZmxvYXQgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0
ZXJuIGZsb2F0IGZhYnNmIChmbG9hdCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fZmFic2YgKGZsb2F0IF9feCkgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBmbG9vcmYgKGZsb2F0IF9feCkg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19mbG9v
cmYgKGZsb2F0IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4
dGVybiBmbG9hdCBmbW9kZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOyBleHRlcm4g
ZmxvYXQgX19mbW9kZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOwoKCgoKZXh0ZXJu
IGludCBfX2lzaW5mZiAoZmxvYXQgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19maW5pdGVmIChmbG9hdCBfX3ZhbHVlKSB0aHJvdyAo
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKZXh0ZXJuIGludCBpc2luZmYgKGZs
b2F0IF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRl
cm4gaW50IGZpbml0ZWYgKGZsb2F0IF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKCgpleHRlcm4gZmxvYXQgZHJlbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0
aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZHJlbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJv
dyAoKTsKCgoKZXh0ZXJuIGZsb2F0IHNpZ25pZmljYW5kZiAoZmxvYXQgX194KSB0aHJvdyAoKTsg
ZXh0ZXJuIGZsb2F0IF9fc2lnbmlmaWNhbmRmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgoKCmV4
dGVybiBmbG9hdCBjb3B5c2lnbmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2NvcHlzaWduZiAoZmxvYXQg
X194LCBmbG9hdCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoK
CgoKZXh0ZXJuIGZsb2F0IG5hbmYgKF9fY29uc3QgY2hhciAqX190YWdiKSB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX25hbmYgKF9fY29uc3QgY2hh
ciAqX190YWdiKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKZXh0
ZXJuIGludCBfX2lzbmFuZiAoZmxvYXQgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCgpleHRlcm4gaW50IGlzbmFuZiAoZmxvYXQgX192YWx1ZSkgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBqMGYgKGZsb2F0
KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fajBmIChmbG9hdCkgdGhyb3cgKCk7CmV4dGVybiBm
bG9hdCBqMWYgKGZsb2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fajFmIChmbG9hdCkgdGhy
b3cgKCk7CmV4dGVybiBmbG9hdCBqbmYgKGludCwgZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxv
YXQgX19qbmYgKGludCwgZmxvYXQpIHRocm93ICgpOwpleHRlcm4gZmxvYXQgeTBmIChmbG9hdCkg
dGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3kwZiAoZmxvYXQpIHRocm93ICgpOwpleHRlcm4gZmxv
YXQgeTFmIChmbG9hdCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3kxZiAoZmxvYXQpIHRocm93
ICgpOwpleHRlcm4gZmxvYXQgeW5mIChpbnQsIGZsb2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0
IF9feW5mIChpbnQsIGZsb2F0KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGZsb2F0IGVyZmYgKGZs
b2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZXJmZiAoZmxvYXQpIHRocm93ICgpOwpleHRl
cm4gZmxvYXQgZXJmY2YgKGZsb2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZXJmY2YgKGZs
b2F0KSB0aHJvdyAoKTsKZXh0ZXJuIGZsb2F0IGxnYW1tYWYgKGZsb2F0KSB0aHJvdyAoKTsgZXh0
ZXJuIGZsb2F0IF9fbGdhbW1hZiAoZmxvYXQpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZmxvYXQg
dGdhbW1hZiAoZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX190Z2FtbWFmIChmbG9hdCkg
dGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGZsb2F0IGdhbW1hZiAoZmxvYXQpIHRocm93ICgpOyBleHRl
cm4gZmxvYXQgX19nYW1tYWYgKGZsb2F0KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGZsb2F0IGxn
YW1tYWZfciAoZmxvYXQsIGludCAqX19zaWduZ2FtcCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBf
X2xnYW1tYWZfciAoZmxvYXQsIGludCAqX19zaWduZ2FtcCkgdGhyb3cgKCk7CgoKCgoKCgpleHRl
cm4gZmxvYXQgcmludGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3JpbnRm
IChmbG9hdCBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBmbG9hdCBuZXh0YWZ0ZXJmIChmbG9hdCBf
X3gsIGZsb2F0IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRl
cm4gZmxvYXQgX19uZXh0YWZ0ZXJmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKZXh0ZXJuIGZsb2F0IG5leHR0b3dhcmRmIChmbG9h
dCBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOyBleHRlcm4gZmxvYXQgX19uZXh0dG93YXJkZiAoZmxvYXQgX194LCBsb25nIGRvdWJsZSBf
X3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGZsb2F0
IHJlbWFpbmRlcmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0
IF9fcmVtYWluZGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOwoKCgpleHRlcm4g
ZmxvYXQgc2NhbGJuZiAoZmxvYXQgX194LCBpbnQgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0
IF9fc2NhbGJuZiAoZmxvYXQgX194LCBpbnQgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBp
bG9nYmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBpbnQgX19pbG9nYmYgKGZsb2F0IF9f
eCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gZmxvYXQgc2NhbGJsbmYgKGZsb2F0IF9feCwgbG9uZyBp
bnQgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fc2NhbGJsbmYgKGZsb2F0IF9feCwgbG9u
ZyBpbnQgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZsb2F0IG5lYXJieWludGYgKGZsb2F0IF9f
eCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX25lYXJieWludGYgKGZsb2F0IF9feCkgdGhyb3cg
KCk7CgoKCmV4dGVybiBmbG9hdCByb3VuZGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBm
bG9hdCBfX3JvdW5kZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZsb2F0IHRydW5j
ZiAoZmxvYXQgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVy
biBmbG9hdCBfX3RydW5jZiAoZmxvYXQgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CgoKCgpleHRlcm4gZmxvYXQgcmVtcXVvZiAoZmxvYXQgX194LCBmbG9hdCBfX3ks
IGludCAqX19xdW8pIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19yZW1xdW9mIChmbG9hdCBfX3gs
IGZsb2F0IF9feSwgaW50ICpfX3F1bykgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBsb25nIGludCBs
cmludGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGludCBfX2xyaW50ZiAoZmxv
YXQgX194KSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyaW50ZiAoZmxvYXQgX194
KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJpbnRmIChmbG9hdCBfX3gpIHRo
cm93ICgpOwoKCgpleHRlcm4gbG9uZyBpbnQgbHJvdW5kZiAoZmxvYXQgX194KSB0aHJvdyAoKTsg
ZXh0ZXJuIGxvbmcgaW50IF9fbHJvdW5kZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKZXh0ZXJuIGxv
bmcgbG9uZyBpbnQgbGxyb3VuZGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGxv
bmcgaW50IF9fbGxyb3VuZGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCBm
ZGltZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19mZGlt
ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBmbG9hdCBmbWF4ZiAo
ZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19mbWF4ZiAoZmxv
YXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBmbG9hdCBmbWluZiAoZmxvYXQg
X194LCBmbG9hdCBfX3kpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19mbWluZiAoZmxvYXQgX194
LCBmbG9hdCBfX3kpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IF9fZnBjbGFzc2lmeWYgKGZsb2F0
IF9fdmFsdWUpIHRocm93ICgpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4
dGVybiBpbnQgX19zaWduYml0ZiAoZmxvYXQgX192YWx1ZSkgdGhyb3cgKCkKICAgICBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBmbG9hdCBmbWFmIChmbG9hdCBfX3gsIGZs
b2F0IF9feSwgZmxvYXQgX196KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZm1hZiAoZmxvYXQg
X194LCBmbG9hdCBfX3ksIGZsb2F0IF9feikgdGhyb3cgKCk7CgoKCgpleHRlcm4gZmxvYXQgc2Nh
bGJmIChmbG9hdCBfX3gsIGZsb2F0IF9fbikgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3NjYWxi
ZiAoZmxvYXQgX194LCBmbG9hdCBfX24pIHRocm93ICgpOwojIDg5ICIvdXNyL2luY2x1ZGUvbWF0
aC5oIiAyIDMKIyAxMDkgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy9tYXRoY2FsbHMuaCIgMSAzCiMgNTMgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5o
IiAzCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGFjb3NsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp
OyBleHRlcm4gbG9uZyBkb3VibGUgX19hY29zbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsK
CmV4dGVybiBsb25nIGRvdWJsZSBhc2lubCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fYXNpbmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRl
cm4gbG9uZyBkb3VibGUgYXRhbmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBs
b25nIGRvdWJsZSBfX2F0YW5sIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGxv
bmcgZG91YmxlIGF0YW4ybCAobG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3gpIHRocm93
ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19hdGFuMmwgKGxvbmcgZG91YmxlIF9feSwgbG9uZyBk
b3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgY29zbCAobG9uZyBkb3Vi
bGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY29zbCAobG9uZyBkb3VibGUg
X194KSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSBzaW5sIChsb25nIGRvdWJsZSBfX3gp
IHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19zaW5sIChsb25nIGRvdWJsZSBfX3gpIHRo
cm93ICgpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIHRhbmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cg
KCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3RhbmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7
CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgY29zaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7
IGV4dGVybiBsb25nIGRvdWJsZSBfX2Nvc2hsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoK
ZXh0ZXJuIGxvbmcgZG91YmxlIHNpbmhsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRl
cm4gbG9uZyBkb3VibGUgX19zaW5obCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVy
biBsb25nIGRvdWJsZSB0YW5obCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fdGFuaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4g
dm9pZCBzaW5jb3NsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX3NpbngsIGxvbmcg
ZG91YmxlICpfX2Nvc3gpIHRocm93ICgpOyBleHRlcm4gdm9pZCBfX3NpbmNvc2wgKGxvbmcgZG91
YmxlIF9feCwgbG9uZyBkb3VibGUgKl9fc2lueCwgbG9uZyBkb3VibGUgKl9fY29zeCkgdGhyb3cg
KCk7CgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBhY29zaGwgKGxvbmcgZG91YmxlIF9feCkgdGhy
b3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Fjb3NobCAobG9uZyBkb3VibGUgX194KSB0aHJv
dyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSBhc2luaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cg
KCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2FzaW5obCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAo
KTsKCmV4dGVybiBsb25nIGRvdWJsZSBhdGFuaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7
IGV4dGVybiBsb25nIGRvdWJsZSBfX2F0YW5obCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsK
CgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBleHBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp
OyBleHRlcm4gbG9uZyBkb3VibGUgX19leHBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoK
CmV4dGVybiBsb25nIGRvdWJsZSBmcmV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50ICpfX2V4cG9u
ZW50KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZnJleHBsIChsb25nIGRvdWJsZSBf
X3gsIGludCAqX19leHBvbmVudCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxkZXhw
bCAobG9uZyBkb3VibGUgX194LCBpbnQgX19leHBvbmVudCkgdGhyb3cgKCk7IGV4dGVybiBsb25n
IGRvdWJsZSBfX2xkZXhwbCAobG9uZyBkb3VibGUgX194LCBpbnQgX19leHBvbmVudCkgdGhyb3cg
KCk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxvZ2wgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7
IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZ2wgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIGxvZzEwbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fbG9nMTBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4
dGVybiBsb25nIGRvdWJsZSBtb2RmbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSAqX19p
cHRyKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbW9kZmwgKGxvbmcgZG91YmxlIF9f
eCwgbG9uZyBkb3VibGUgKl9faXB0cikgdGhyb3cgKCk7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUg
ZXhwMTBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19l
eHAxMGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgcG93
MTBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19wb3cx
MGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGV4
cG0xbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXhw
bTFsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBsb2cx
cGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZzFw
bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nYmwg
KGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZ2JsIChs
b25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgZXhwMmwg
KGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2V4cDJsIChs
b25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBsb2cybCAobG9u
ZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9nMmwgKGxvbmcg
ZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHBvd2wgKGxv
bmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9fcG93bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOwoK
CmV4dGVybiBsb25nIGRvdWJsZSBzcXJ0bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fc3FydGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIGh5cG90bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBf
X3kpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19oeXBvdGwgKGxvbmcgZG91YmxlIF9f
eCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNi
cnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19jYnJ0
bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUg
Y2VpbGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19jZWlsbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAo
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZhYnNs
IChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fZmFic2wgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmbG9vcmwgKGxv
bmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRl
cm4gbG9uZyBkb3VibGUgX19mbG9vcmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmbW9kbCAobG9uZyBk
b3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUg
X19mbW9kbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCgoK
ZXh0ZXJuIGludCBfX2lzaW5mbCAobG9uZyBkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19maW5pdGVsIChsb25nIGRvdWJs
ZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKZXh0
ZXJuIGludCBpc2luZmwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZWwgKGxvbmcgZG91YmxlIF9fdmFs
dWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gbG9uZyBk
b3VibGUgZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUg
X195KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNpZ25pZmljYW5kbCAobG9uZyBk
b3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2lnbmlmaWNhbmRsIChs
b25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBjb3B5c2ln
bmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2NvcHlzaWdubCAobG9uZyBk
b3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIG5hbmwgKF9fY29uc3QgY2hhciAqX190
YWdiKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRv
dWJsZSBfX25hbmwgKF9fY29uc3QgY2hhciAqX190YWdiKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CgoKCgoKZXh0ZXJuIGludCBfX2lzbmFubCAobG9uZyBkb3VibGUgX192
YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gaW50
IGlzbmFubCAobG9uZyBkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBqMGwgKGxvbmcgZG91YmxlKSB0aHJvdyAo
KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fajBsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVy
biBsb25nIGRvdWJsZSBqMWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9fajFsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGRvdWJsZSBqbmwg
KGludCwgbG9uZyBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19qbmwgKGlu
dCwgbG9uZyBkb3VibGUpIHRocm93ICgpOwpleHRlcm4gbG9uZyBkb3VibGUgeTBsIChsb25nIGRv
dWJsZSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3kwbCAobG9uZyBkb3VibGUpIHRo
cm93ICgpOwpleHRlcm4gbG9uZyBkb3VibGUgeTFsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7IGV4
dGVybiBsb25nIGRvdWJsZSBfX3kxbCAobG9uZyBkb3VibGUpIHRocm93ICgpOwpleHRlcm4gbG9u
ZyBkb3VibGUgeW5sIChpbnQsIGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9feW5sIChpbnQsIGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcg
ZG91YmxlIGVyZmwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
ZXJmbCAobG9uZyBkb3VibGUpIHRocm93ICgpOwpleHRlcm4gbG9uZyBkb3VibGUgZXJmY2wgKGxv
bmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXJmY2wgKGxvbmcgZG91
YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGxnYW1tYWwgKGxvbmcgZG91YmxlKSB0
aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbGdhbW1hbCAobG9uZyBkb3VibGUpIHRocm93
ICgpOwoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgdGdhbW1hbCAobG9uZyBkb3VibGUpIHRocm93
ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX190Z2FtbWFsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7
CgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGdhbW1hbCAobG9uZyBkb3VibGUpIHRocm93ICgpOyBl
eHRlcm4gbG9uZyBkb3VibGUgX19nYW1tYWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKCgoKCgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIGxnYW1tYWxfciAobG9uZyBkb3VibGUsIGludCAqX19zaWduZ2Ft
cCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xnYW1tYWxfciAobG9uZyBkb3VibGUs
IGludCAqX19zaWduZ2FtcCkgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgcmlu
dGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3JpbnRs
IChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBuZXh0YWZ0
ZXJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19uZXh0YWZ0ZXJsIChsb25n
IGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIG5leHR0b3dhcmRsIChsb25nIGRvdWJsZSBf
X3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OyBleHRlcm4gbG9uZyBkb3VibGUgX19uZXh0dG93YXJkbCAobG9uZyBkb3VibGUgX194LCBsb25n
IGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0
ZXJuIGxvbmcgZG91YmxlIHJlbWFpbmRlcmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUg
X195KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fcmVtYWluZGVybCAobG9uZyBkb3Vi
bGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCgpleHRlcm4gbG9uZyBkb3VibGUg
c2NhbGJubCAobG9uZyBkb3VibGUgX194LCBpbnQgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcg
ZG91YmxlIF9fc2NhbGJubCAobG9uZyBkb3VibGUgX194LCBpbnQgX19uKSB0aHJvdyAoKTsKCgoK
ZXh0ZXJuIGludCBpbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBpbnQg
X19pbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gbG9uZyBkb3Vi
bGUgc2NhbGJsbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBpbnQgX19uKSB0aHJvdyAoKTsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fc2NhbGJsbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBpbnQgX19u
KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIG5lYXJieWludGwgKGxvbmcgZG91Ymxl
IF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX25lYXJieWludGwgKGxvbmcgZG91
YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSByb3VuZGwgKGxvbmcgZG91
YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3JvdW5kbCAobG9uZyBkb3Vi
bGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHRydW5jbCAobG9uZyBkb3Vi
bGUgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25n
IGRvdWJsZSBfX3RydW5jbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgcmVtcXVvbCAobG9uZyBkb3Vi
bGUgX194LCBsb25nIGRvdWJsZSBfX3ksIGludCAqX19xdW8pIHRocm93ICgpOyBleHRlcm4gbG9u
ZyBkb3VibGUgX19yZW1xdW9sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSwgaW50
ICpfX3F1bykgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBsb25nIGludCBscmludGwgKGxvbmcgZG91
YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGludCBfX2xyaW50bCAobG9uZyBkb3VibGUg
X194KSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyaW50bCAobG9uZyBkb3VibGUg
X194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJpbnRsIChsb25nIGRvdWJs
ZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gbG9uZyBpbnQgbHJvdW5kbCAobG9uZyBkb3VibGUg
X194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgaW50IF9fbHJvdW5kbCAobG9uZyBkb3VibGUgX194
KSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyb3VuZGwgKGxvbmcgZG91YmxlIF9f
eCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxyb3VuZGwgKGxvbmcgZG91Ymxl
IF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBmZGltbCAobG9uZyBkb3VibGUg
X194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mZGlt
bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBs
b25nIGRvdWJsZSBmbWF4bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93
ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mbWF4bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRv
dWJsZSBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmbWlubCAobG9uZyBkb3Vi
bGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19m
bWlubCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCgpleHRl
cm4gaW50IF9fZnBjbGFzc2lmeWwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIHRocm93ICgpCiAgICAg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19zaWduYml0bCAobG9u
ZyBkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBmbWFsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91
YmxlIF9feSwgbG9uZyBkb3VibGUgX196KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
Zm1hbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feikg
dGhyb3cgKCk7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgc2NhbGJsIChsb25nIGRvdWJsZSBfX3gs
IGxvbmcgZG91YmxlIF9fbikgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3NjYWxibCAo
bG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX24pIHRocm93ICgpOwojIDExMCAiL3Vzci9p
bmNsdWRlL21hdGguaCIgMiAzCiMgMTI1ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCmV4dGVybiBp
bnQgc2lnbmdhbTsKIyAxNjYgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKZW51bQogIHsKICAgIEZQ
X05BTiwKCiAgICBGUF9JTkZJTklURSwKCiAgICBGUF9aRVJPLAoKICAgIEZQX1NVQk5PUk1BTCwK
CiAgICBGUF9OT1JNQUwKCiAgfTsKIyAyNTIgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKdHlwZWRl
ZiBlbnVtCnsKICBfSUVFRV8gPSAtMSwKICBfU1ZJRF8sCiAgX1hPUEVOXywKICBfUE9TSVhfLAog
IF9JU09DXwp9IF9MSUJfVkVSU0lPTl9UWVBFOwoKCgoKZXh0ZXJuIF9MSUJfVkVSU0lPTl9UWVBF
IF9MSUJfVkVSU0lPTjsKIyAyNzUgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKc3RydWN0IF9fZXhj
ZXB0aW9uCgoKCiAgewogICAgaW50IHR5cGU7CiAgICBjaGFyICpuYW1lOwogICAgZG91YmxlIGFy
ZzE7CiAgICBkb3VibGUgYXJnMjsKICAgIGRvdWJsZSByZXR2YWw7CiAgfTsKCgpleHRlcm4gaW50
IG1hdGhlcnIgKHN0cnVjdCBfX2V4Y2VwdGlvbiAqX19leGMpIHRocm93ICgpOwojIDM2MiAiL3Vz
ci9pbmNsdWRlL21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIg
MSAzCiMgMTI3ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKX19pbmxpbmUgaW50
Cl9fc2lnbmJpdGYgKGZsb2F0IF9feCkgdGhyb3cgKCkKewogIF9fZXh0ZW5zaW9uX18gdW5pb24g
eyBmbG9hdCBfX2Y7IGludCBfX2k7IH0gX191ID0geyBfX2Y6IF9feCB9OwogIHJldHVybiBfX3Uu
X19pIDwgMDsKfQpfX2lubGluZSBpbnQKX19zaWduYml0IChkb3VibGUgX194KSB0aHJvdyAoKQp7
CiAgX19leHRlbnNpb25fXyB1bmlvbiB7IGRvdWJsZSBfX2Q7IGludCBfX2lbMl07IH0gX191ID0g
eyBfX2Q6IF9feCB9OwogIHJldHVybiBfX3UuX19pWzFdIDwgMDsKfQpfX2lubGluZSBpbnQKX19z
aWduYml0bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKQp7CiAgX19leHRlbnNpb25fXyB1bmlv
biB7IGxvbmcgZG91YmxlIF9fbDsgaW50IF9faVszXTsgfSBfX3UgPSB7IF9fbDogX194IH07CiAg
cmV0dXJuIChfX3UuX19pWzJdICYgMHg4MDAwKSAhPSAwOwp9CiMgMjkxICIvdXNyL2luY2x1ZGUv
Yml0cy9tYXRoaW5saW5lLmgiIDMKX19pbmxpbmUgZG91YmxlIF9fc2duIChkb3VibGUpIHRocm93
ICgpOyBfX2lubGluZSBkb3VibGUgX19zZ24gKGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmV0dXJu
IF9feCA9PSAwLjAgPyAwLjAgOiAoX194ID4gMC4wID8gMS4wIDogLTEuMCk7IH0gX19pbmxpbmUg
ZmxvYXQgX19zZ25mIChmbG9hdCkgdGhyb3cgKCk7IF9faW5saW5lIGZsb2F0IF9fc2duZiAoZmxv
YXQgX194KSB0aHJvdyAoKSB7IHJldHVybiBfX3ggPT0gMC4wID8gMC4wIDogKF9feCA+IDAuMCA/
IDEuMCA6IC0xLjApOyB9IF9faW5saW5lIGxvbmcgZG91YmxlIF9fc2dubCAobG9uZyBkb3VibGUp
IHRocm93ICgpOyBfX2lubGluZSBsb25nIGRvdWJsZSBfX3NnbmwgKGxvbmcgZG91YmxlIF9feCkg
dGhyb3cgKCkgeyByZXR1cm4gX194ID09IDAuMCA/IDAuMCA6IChfX3ggPiAwLjAgPyAxLjAgOiAt
MS4wKTsgfQojIDQyNSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5l
IGRvdWJsZSBhdGFuMiAoZG91YmxlIF9feSwgZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3Rl
ciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcGF0YW4iIDogIj10
IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJzdCgxKSIpOyByZXR1cm4gX192
YWx1ZTsgfSBfX2lubGluZSBmbG9hdCBhdGFuMmYgKGZsb2F0IF9feSwgZmxvYXQgX194KSB0aHJv
dyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAo
ImZwYXRhbiIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogInN0KDEp
Iik7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5lIGxvbmcgZG91YmxlIGF0YW4ybCAobG9uZyBk
b3VibGUgX195LCBsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3Vi
bGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgiZnBhdGFuIiA6ICI9dCIgKF9fdmFsdWUp
IDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAic3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0KX19p
bmxpbmUgbG9uZyBkb3VibGUgX19hdGFuMmwgKGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUg
X194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9s
YXRpbGVfXyAoImZwYXRhbiIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChfX3kp
IDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9CgoKX19pbmxpbmUgZG91YmxlIGZtb2QgKGRv
dWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192
YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgiMToJZnByZW1cblx0IiAiZm5zdHN3CSUlYXhcblx0
IiAic2FoZlxuXHQiICJqcAkxYiIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChf
X3kpIDogImF4IiwgImNjIik7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5lIGZsb2F0IGZtb2Rm
IChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBf
X3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCIxOglmcHJlbVxuXHQiICJmbnN0c3cJJSVheFxu
XHQiICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIg
KF9feSkgOiAiYXgiLCAiY2MiKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUgbG9uZyBkb3Vi
bGUgZm1vZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVt
XG5cdCIgImZuc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1
ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1ZTsg
fQojIDQ0MCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5lIGRvdWJs
ZSBzcXJ0IChkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3Jlc3VsdDsg
X19hc20gX192b2xhdGlsZV9fICgiZnNxcnQiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gp
KTsgcmV0dXJuIF9fcmVzdWx0OyB9IF9faW5saW5lIGZsb2F0IHNxcnRmIChmbG9hdCBfX3gpIHRo
cm93ICgpIHsgcmVnaXN0ZXIgZmxvYXQgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZz
cXJ0IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfSBf
X2lubGluZSBsb25nIGRvdWJsZSBzcXJ0bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc3FydCIg
OiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0KX19pbmxp
bmUgbG9uZyBkb3VibGUgX19zcXJ0bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc3FydCIgOiAi
PXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0KCgpfX2lubGlu
ZSBkb3VibGUgZmFicyAoZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZXR1cm4gX19idWlsdGluX2Zh
YnMgKF9feCk7IH0KX19pbmxpbmUgZmxvYXQgZmFic2YgKGZsb2F0IF9feCkgdGhyb3cgKCkgeyBy
ZXR1cm4gX19idWlsdGluX2ZhYnNmIChfX3gpOyB9Cl9faW5saW5lIGxvbmcgZG91YmxlIGZhYnNs
IChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzbCAoX194
KTsgfQpfX2lubGluZSBsb25nIGRvdWJsZSBfX2ZhYnNsIChsb25nIGRvdWJsZSBfX3gpIHRocm93
ICgpIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzbCAoX194KTsgfQojIDQ2NiAiL3Vzci9pbmNsdWRl
L2JpdHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5lIGRvdWJsZSBhdGFuIChkb3VibGUgX194KSB0
aHJvdyAoKSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgi
ZmxkMTsgZnBhdGFuIiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyBy
ZXR1cm4gX19yZXN1bHQ7IH0gX19pbmxpbmUgZmxvYXQgYXRhbmYgKGZsb2F0IF9feCkgdGhyb3cg
KCkgeyByZWdpc3RlciBmbG9hdCBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkMTsg
ZnBhdGFuIiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4g
X19yZXN1bHQ7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgYXRhbmwgKGxvbmcgZG91YmxlIF9feCkg
dGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGls
ZV9fICgiZmxkMTsgZnBhdGFuIiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgx
KSIpOyByZXR1cm4gX19yZXN1bHQ7IH0KCl9faW5saW5lIGxvbmcgZG91YmxlIF9fc2duMWwgKGxv
bmcgZG91YmxlKSB0aHJvdyAoKTsgX19pbmxpbmUgbG9uZyBkb3VibGUgX19zZ24xbCAobG9uZyBk
b3VibGUgX194KSB0aHJvdyAoKSB7IF9fZXh0ZW5zaW9uX18gdW5pb24geyBsb25nIGRvdWJsZSBf
X3hsZDsgdW5zaWduZWQgaW50IF9feGlbM107IH0gX19uID0geyBfX3hsZDogX194IH07IF9fbi5f
X3hpWzJdID0gKF9fbi5fX3hpWzJdICYgMHg4MDAwKSB8IDB4M2ZmZjsgX19uLl9feGlbMV0gPSAw
eDgwMDAwMDAwOyBfX24uX194aVswXSA9IDA7IHJldHVybiBfX24uX194bGQ7IH0KIyA0OTIgIi91
c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lubGluZSBkb3VibGUgZmxvb3IgKGRv
dWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX192b2xh
dGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBp
bnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0iIChfX2N3KSk7
IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA0MDA7IF9fYXNtIF9fdm9sYXRpbGUgKCJm
bGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZnJuZGludCIg
OiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAl
MCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfSBfX2lubGluZSBmbG9hdCBmbG9v
cmYgKGZsb2F0IF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBf
X3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNo
b3J0IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9f
Y3cpKTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDQwMDsgX19hc20gX192b2xhdGls
ZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5k
aW50IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZSAoImZs
ZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5lIGxvbmcg
ZG91YmxlIGZsb29ybCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9s
YXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0
Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwNDAw
OyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20g
X192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2Fz
bSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7
IH0KIyA1MDMgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lubGluZSBkb3Vi
bGUgY2VpbCAoZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Zh
bHVlOyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxlIHVuc2ln
bmVkIHNob3J0IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9
bSIgKF9fY3cpKTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDgwMDsgX19hc20gX192
b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9sYXRpbGUg
KCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGls
ZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5l
IGZsb2F0IGNlaWxmIChmbG9hdCBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
X192YWx1ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1
bnNpZ25lZCBzaG9ydCBpbnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIg
OiAiPW0iIChfX2N3KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA4MDA7IF9fYXNt
IF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0
aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9s
YXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfSBfX2lu
bGluZSBsb25nIGRvdWJsZSBjZWlsbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9f
Y3c7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRp
bGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYp
IHwgMHgwODAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXAp
KTsgX19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9f
eCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJu
IF9fdmFsdWU7IH0KIyA1MjEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lu
bGluZSBkb3VibGUKbGRleHAgKGRvdWJsZSBfX3gsIGludCBfX3kpIHRocm93ICgpCnsKICByZWdp
c3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDog
Ij10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoKGxvbmcgZG91YmxlKSBfX3kpKTsgcmV0
dXJuIF9fdmFsdWU7Cn0KIyA1MzkgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpf
X2lubGluZSBkb3VibGUgbG9nMXAgKGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9u
ZyBkb3VibGUgX192YWx1ZTsgaWYgKF9fZmFic2wgKF9feCkgPj0gMS4wIC0gMC41ICogMS40MTQy
MTM1NjIzNzMwOTUwNDg4MEwpIF9fdmFsdWUgPSBsb2dsICgxLjAgKyBfX3gpOyBlbHNlIF9fYXNt
IF9fdm9sYXRpbGVfXyAoImZsZGxuMlxuXHQiICJmeGNoXG5cdCIgImZ5bDJ4cDEiIDogIj10IiAo
X192YWx1ZSkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19pbmxp
bmUgZmxvYXQgbG9nMXBmIChmbG9hdCBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3Vi
bGUgX192YWx1ZTsgaWYgKF9fZmFic2wgKF9feCkgPj0gMS4wIC0gMC41ICogMS40MTQyMTM1NjIz
NzMwOTUwNDg4MEwpIF9fdmFsdWUgPSBsb2dsICgxLjAgKyBfX3gpOyBlbHNlIF9fYXNtIF9fdm9s
YXRpbGVfXyAoImZsZGxuMlxuXHQiICJmeGNoXG5cdCIgImZ5bDJ4cDEiIDogIj10IiAoX192YWx1
ZSkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUgbG9u
ZyBkb3VibGUgbG9nMXBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9u
ZyBkb3VibGUgX192YWx1ZTsgaWYgKF9fZmFic2wgKF9feCkgPj0gMS4wIC0gMC41ICogMS40MTQy
MTM1NjIzNzMwOTUwNDg4MEwpIF9fdmFsdWUgPSBsb2dsICgxLjAgKyBfX3gpOyBlbHNlIF9fYXNt
IF9fdm9sYXRpbGVfXyAoImZsZGxuMlxuXHQiICJmeGNoXG5cdCIgImZ5bDJ4cDEiIDogIj10IiAo
X192YWx1ZSkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyA1NTMg
Ii91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lubGluZSBkb3VibGUgYXNpbmgg
KGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195ID0gX19mYWJz
bCAoX194KTsgcmV0dXJuIChsb2cxcGwgKF9feSAqIF9feSAvIChfX3NxcnRsIChfX3kgKiBfX3kg
KyAxLjApICsgMS4wKSArIF9feSkgKiBfX3NnbjFsIChfX3gpKTsgfSBfX2lubGluZSBmbG9hdCBh
c2luaGYgKGZsb2F0IF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3kgPSBf
X2ZhYnNsIChfX3gpOyByZXR1cm4gKGxvZzFwbCAoX195ICogX195IC8gKF9fc3FydGwgKF9feSAq
IF9feSArIDEuMCkgKyAxLjApICsgX195KSAqIF9fc2duMWwgKF9feCkpOyB9IF9faW5saW5lIGxv
bmcgZG91YmxlIGFzaW5obCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxv
bmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7IHJldHVybiAobG9nMXBsIChfX3kgKiBfX3kg
LyAoX19zcXJ0bCAoX195ICogX195ICsgMS4wKSArIDEuMCkgKyBfX3kpICogX19zZ24xbCAoX194
KSk7IH0KCgoKCl9faW5saW5lIGRvdWJsZSBhY29zaCAoZG91YmxlIF9feCkgdGhyb3cgKCkgeyBy
ZXR1cm4gbG9nbCAoX194ICsgX19zcXJ0bCAoX194IC0gMS4wKSAqIF9fc3FydGwgKF9feCArIDEu
MCkpOyB9IF9faW5saW5lIGZsb2F0IGFjb3NoZiAoZmxvYXQgX194KSB0aHJvdyAoKSB7IHJldHVy
biBsb2dsIChfX3ggKyBfX3NxcnRsIChfX3ggLSAxLjApICogX19zcXJ0bCAoX194ICsgMS4wKSk7
IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgYWNvc2hsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp
IHsgcmV0dXJuIGxvZ2wgKF9feCArIF9fc3FydGwgKF9feCAtIDEuMCkgKiBfX3NxcnRsIChfX3gg
KyAxLjApKTsgfQoKCl9faW5saW5lIGRvdWJsZSBhdGFuaCAoZG91YmxlIF9feCkgdGhyb3cgKCkg
eyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gLTAuNSAq
IGxvZzFwbCAoLShfX3kgKyBfX3kpIC8gKDEuMCArIF9feSkpICogX19zZ24xbCAoX194KTsgfSBf
X2lubGluZSBmbG9hdCBhdGFuaGYgKGZsb2F0IF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25n
IGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gLTAuNSAqIGxvZzFwbCAoLShfX3kg
KyBfX3kpIC8gKDEuMCArIF9feSkpICogX19zZ24xbCAoX194KTsgfSBfX2lubGluZSBsb25nIGRv
dWJsZSBhdGFuaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRv
dWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gLTAuNSAqIGxvZzFwbCAoLShfX3kgKyBf
X3kpIC8gKDEuMCArIF9feSkpICogX19zZ24xbCAoX194KTsgfQoKCgoKX19pbmxpbmUgZG91Ymxl
IGh5cG90IChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKSB7IHJldHVybiBfX3NxcnRs
IChfX3ggKiBfX3ggKyBfX3kgKiBfX3kpOyB9IF9faW5saW5lIGZsb2F0IGh5cG90ZiAoZmxvYXQg
X194LCBmbG9hdCBfX3kpIHRocm93ICgpIHsgcmV0dXJuIF9fc3FydGwgKF9feCAqIF9feCArIF9f
eSAqIF9feSk7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgaHlwb3RsIChsb25nIGRvdWJsZSBfX3gs
IGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgeyByZXR1cm4gX19zcXJ0bCAoX194ICogX194ICsg
X195ICogX195KTsgfQoKX19pbmxpbmUgZG91YmxlIGxvZ2IgKGRvdWJsZSBfX3gpIHRocm93ICgp
IHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19q
dW5rOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmeHRyYWN0XG5cdCIgOiAiPXQiIChfX2p1bmspLCAi
PXUiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5lIGZs
b2F0IGxvZ2JmIChmbG9hdCBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192
YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19qdW5rOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJm
eHRyYWN0XG5cdCIgOiAiPXQiIChfX2p1bmspLCAiPXUiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7
IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5lIGxvbmcgZG91YmxlIGxvZ2JsIChsb25nIGRvdWJs
ZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIg
bG9uZyBkb3VibGUgX19qdW5rOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmeHRyYWN0XG5cdCIgOiAi
PXQiIChfX2p1bmspLCAiPXUiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IHJldHVybiBfX3ZhbHVl
OyB9CiMgNTgzICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKX19pbmxpbmUgZmxv
YXQKbGRleHBmIChmbG9hdCBfX3gsIGludCBfX3kpIHRocm93ICgpCnsKICByZWdpc3RlciBsb25n
IGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192
YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoKGxvbmcgZG91YmxlKSBfX3kpKTsgcmV0dXJuIF9fdmFs
dWU7Cn0KCl9faW5saW5lIGxvbmcgZG91YmxlCmxkZXhwbCAobG9uZyBkb3VibGUgX194LCBpbnQg
X195KSB0aHJvdyAoKQp7CiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192
b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKChs
b25nIGRvdWJsZSkgX195KSk7IHJldHVybiBfX3ZhbHVlOwp9CiMgNjA3ICIvdXNyL2luY2x1ZGUv
Yml0cy9tYXRoaW5saW5lLmgiIDMKX19pbmxpbmUgbG9uZyBpbnQKbHJpbnRmIChmbG9hdCBfX3gp
IHRocm93ICgpCnsKICBsb25nIGludCBfX2xyaW50cmVzOyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAo
ImZpc3RwbCAlMCIgOiAiPW0iIChfX2xyaW50cmVzKSA6ICJ0IiAoX194KSA6ICJzdCIpOyByZXR1
cm4gX19scmludHJlczsKfQpfX2lubGluZSBsb25nIGludApscmludCAoZG91YmxlIF9feCkgdGhy
b3cgKCkKewogIGxvbmcgaW50IF9fbHJpbnRyZXM7IF9fYXNtX18gX192b2xhdGlsZV9fICgiZmlz
dHBsICUwIiA6ICI9bSIgKF9fbHJpbnRyZXMpIDogInQiIChfX3gpIDogInN0Iik7IHJldHVybiBf
X2xyaW50cmVzOwp9Cl9faW5saW5lIGxvbmcgaW50CmxyaW50bCAobG9uZyBkb3VibGUgX194KSB0
aHJvdyAoKQp7CiAgbG9uZyBpbnQgX19scmludHJlczsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJm
aXN0cGwgJTAiIDogIj1tIiAoX19scmludHJlcykgOiAidCIgKF9feCkgOiAic3QiKTsgcmV0dXJu
IF9fbHJpbnRyZXM7Cn0KIyA2MzAgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpf
X2lubGluZSBsb25nIGxvbmcgaW50CmxscmludGYgKGZsb2F0IF9feCkgdGhyb3cgKCkKewogIGxv
bmcgbG9uZyBpbnQgX19sbHJpbnRyZXM7IF9fYXNtX18gX192b2xhdGlsZV9fICgiZmlzdHBsbCAl
MCIgOiAiPW0iIChfX2xscmludHJlcykgOiAidCIgKF9feCkgOiAic3QiKTsgcmV0dXJuIF9fbGxy
aW50cmVzOwp9Cl9faW5saW5lIGxvbmcgbG9uZyBpbnQKbGxyaW50IChkb3VibGUgX194KSB0aHJv
dyAoKQp7CiAgbG9uZyBsb25nIGludCBfX2xscmludHJlczsgX19hc21fXyBfX3ZvbGF0aWxlX18g
KCJmaXN0cGxsICUwIiA6ICI9bSIgKF9fbGxyaW50cmVzKSA6ICJ0IiAoX194KSA6ICJzdCIpOyBy
ZXR1cm4gX19sbHJpbnRyZXM7Cn0KX19pbmxpbmUgbG9uZyBsb25nIGludApsbHJpbnRsIChsb25n
IGRvdWJsZSBfX3gpIHRocm93ICgpCnsKICBsb25nIGxvbmcgaW50IF9fbGxyaW50cmVzOyBfX2Fz
bV9fIF9fdm9sYXRpbGVfXyAoImZpc3RwbGwgJTAiIDogIj1tIiAoX19sbHJpbnRyZXMpIDogInQi
IChfX3gpIDogInN0Iik7IHJldHVybiBfX2xscmludHJlczsKfQoKCgoKCgoKX19pbmxpbmUgZG91
YmxlIGRyZW0gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpIHsgcmVnaXN0ZXIgZG91
YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGludCBfX2Nsb2JiZXJlZDsgX19hc20gX192b2xhdGlsZV9f
ICgiMToJZnByZW0xXG5cdCIgImZzdHN3CSUlYXhcblx0IiAic2FoZlxuXHQiICJqcAkxYiIgOiAi
PXQiIChfX3ZhbHVlKSwgIj0mYSIgKF9fY2xvYmJlcmVkKSA6ICIwIiAoX194KSwgInUiIChfX3kp
IDogImNjIik7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5lIGZsb2F0IGRyZW1mIChmbG9hdCBf
X3gsIGZsb2F0IF9feSkgdGhyb3cgKCkgeyByZWdpc3RlciBkb3VibGUgX192YWx1ZTsgcmVnaXN0
ZXIgaW50IF9fY2xvYmJlcmVkOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCIxOglmcHJlbTFcblx0IiAi
ZnN0c3cJJSVheFxuXHQiICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9dCIgKF9fdmFsdWUpLCAiPSZh
IiAoX19jbG9iYmVyZWQpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiY2MiKTsgcmV0dXJuIF9f
dmFsdWU7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9u
ZyBkb3VibGUgX195KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3Rl
ciBpbnQgX19jbG9iYmVyZWQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtMVxuXHQiICJm
c3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSksICI9JmEi
IChfX2Nsb2JiZXJlZCkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJjYyIpOyByZXR1cm4gX192
YWx1ZTsgfQojIDY2NSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5l
IGludApfX2Zpbml0ZSAoZG91YmxlIF9feCkgdGhyb3cgKCkKewogIHJldHVybiAoX19leHRlbnNp
b25fXwogICAgICAgICAgKCgoKCh1bmlvbiB7IGRvdWJsZSBfX2Q7IGludCBfX2lbMl07IH0pIHtf
X2Q6IF9feH0pLl9faVsxXQogICAgICAgICAgICAgfCAweDgwMGZmZmZmdSkgKyAxKSA+PiAzMSkp
Owp9CiMgMzYzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA0MjMgIi91c3IvaW5jbHVkZS9t
YXRoLmgiIDMKfQojIDQzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNVbml0Q29udmVy
c2lvbi5oIiAyCiMgNTUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc1VuaXRDb252ZXJz
aW9uLmgiCmlubGluZSBuc2Nvb3JkIE5TVG9Db29yZEZsb29yKGZsb2F0IGFWYWx1ZSkKewogIHJl
dHVybiAoKDAuMGYgPD0gYVZhbHVlKSA/IG5zY29vcmQoYVZhbHVlKSA6IG5zY29vcmQoYVZhbHVl
IC0gMC45OTk5OTk5OTk5OTk5OTk5ZikpOwp9CgppbmxpbmUgbnNjb29yZCBOU1RvQ29vcmRDZWls
KGZsb2F0IGFWYWx1ZSkKewogIHJldHVybiAoKDAuMGYgPD0gYVZhbHVlKSA/IG5zY29vcmQoYVZh
bHVlICsgMC45OTk5OTk5OTk5OTk5OTk5ZikgOiBuc2Nvb3JkKGFWYWx1ZSkpOwp9CgppbmxpbmUg
bnNjb29yZCBOU1RvQ29vcmRSb3VuZChmbG9hdCBhVmFsdWUpCnsKICByZXR1cm4gKCgwLjBmIDw9
IGFWYWx1ZSkgPyBuc2Nvb3JkKGFWYWx1ZSArIDAuNWYpIDogbnNjb29yZChhVmFsdWUgLSAwLjVm
KSk7Cn0KCmlubGluZSBuc2Nvb3JkIE5TVG9Db29yZFJvdW5kRXhjbHVzaXZlKGZsb2F0IGFWYWx1
ZSkKewogIHJldHVybiAoKDAuMGYgPD0gYVZhbHVlKSA/IG5zY29vcmQoYVZhbHVlICsgMC40OTk5
OTk5OTk5OTk5OTk5ZikgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zY29vcmQoYVZh
bHVlIC0gMC40OTk5OTk5OTk5OTk5OTk5ZikpOwp9CgoKCgoKaW5saW5lIFBSSW50MzIgTlNUb0lu
dEZsb29yKGZsb2F0IGFWYWx1ZSkKewogIHJldHVybiAoKDAuMGYgPD0gYVZhbHVlKSA/IFBSSW50
MzIoYVZhbHVlKSA6IFBSSW50MzIoYVZhbHVlIC0gMC45OTk5OTk5OTk5OTk5OTk5ZikpOwp9Cgpp
bmxpbmUgUFJJbnQzMiBOU1RvSW50Q2VpbChmbG9hdCBhVmFsdWUpCnsKICByZXR1cm4gKCgwLjBm
IDw9IGFWYWx1ZSkgPyBQUkludDMyKGFWYWx1ZSArIDAuOTk5OTk5OTk5OTk5OTk5OWYpIDogUFJJ
bnQzMihhVmFsdWUpKTsKfQoKaW5saW5lIFBSSW50MzIgTlNUb0ludFJvdW5kKGZsb2F0IGFWYWx1
ZSkKewogIHJldHVybiAoKDAuMGYgPD0gYVZhbHVlKSA/IFBSSW50MzIoYVZhbHVlICsgMC41Zikg
OiBQUkludDMyKGFWYWx1ZSAtIDAuNWYpKTsKfQoKaW5saW5lIFBSSW50MzIgTlNUb0ludFJvdW5k
RXhjbHVzaXZlKGZsb2F0IGFWYWx1ZSkKewogIHJldHVybiAoKDAuMGYgPD0gYVZhbHVlKSA/IFBS
SW50MzIoYVZhbHVlICsgMC40OTk5OTk5OTk5OTk5OTk5ZikgOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBSSW50MzIoYVZhbHVlIC0gMC40OTk5OTk5OTk5OTk5OTk5ZikpOwp9CgoKCgoK
aW5saW5lIG5zY29vcmQgTlNGbG9hdFBvaW50c1RvVHdpcHMoZmxvYXQgYVBvaW50cykKewogIHJl
dHVybiBOU1RvQ29vcmRSb3VuZChhUG9pbnRzICogMjAuMGYpOwp9CgppbmxpbmUgbnNjb29yZCBO
U0ludFBvaW50c1RvVHdpcHMoUFJJbnQzMiBhUG9pbnRzKQp7CiAgcmV0dXJuIG5zY29vcmQoYVBv
aW50cyAqIDIwKTsKfQoKaW5saW5lIFBSSW50MzIgTlNUd2lwc1RvSW50UG9pbnRzKG5zY29vcmQg
YVR3aXBzKQp7CiAgcmV0dXJuIE5TVG9JbnRSb3VuZChhVHdpcHMgLyAyMC4wZik7Cn0KCmlubGlu
ZSBQUkludDMyIE5TVHdpcHNUb0Zsb29ySW50UG9pbnRzKG5zY29vcmQgYVR3aXBzKQp7CiAgcmV0
dXJuIE5TVG9JbnRGbG9vcihhVHdpcHMgLyAyMC4wZik7Cn0KCmlubGluZSBQUkludDMyIE5TVHdp
cHNUb0NlaWxJbnRQb2ludHMobnNjb29yZCBhVHdpcHMpCnsKICByZXR1cm4gTlNUb0ludENlaWwo
YVR3aXBzIC8gMjAuMGYpOwp9CgppbmxpbmUgZmxvYXQgTlNUd2lwc1RvRmxvYXRQb2ludHMobnNj
b29yZCBhVHdpcHMpCnsKICByZXR1cm4gKGZsb2F0KGFUd2lwcykgLyAyMC4wZik7Cn0KCgoKCmlu
bGluZSBuc2Nvb3JkIE5TRmxvYXRQaXhlbHNUb1R3aXBzKGZsb2F0IGFQaXhlbHMsIGZsb2F0IGFU
d2lwc1BlclBpeGVsKQp7CiAgcmV0dXJuIE5TVG9Db29yZFJvdW5kKGFQaXhlbHMgKiBhVHdpcHNQ
ZXJQaXhlbCk7Cn0KCmlubGluZSBuc2Nvb3JkIE5TSW50UGl4ZWxzVG9Ud2lwcyhQUkludDMyIGFQ
aXhlbHMsIGZsb2F0IGFUd2lwc1BlclBpeGVsKQp7CiAgcmV0dXJuIE5TVG9Db29yZFJvdW5kKGZs
b2F0KGFQaXhlbHMpICogYVR3aXBzUGVyUGl4ZWwpOwp9CgppbmxpbmUgZmxvYXQgTlNUd2lwc1Rv
RmxvYXRQaXhlbHMobnNjb29yZCBhVHdpcHMsIGZsb2F0IGFQaXhlbHNQZXJUd2lwKQp7CiAgcmV0
dXJuIChmbG9hdChhVHdpcHMpICogYVBpeGVsc1BlclR3aXApOwp9CgppbmxpbmUgUFJJbnQzMiBO
U1R3aXBzVG9JbnRQaXhlbHMobnNjb29yZCBhVHdpcHMsIGZsb2F0IGFQaXhlbHNQZXJUd2lwKQp7
CiAgcmV0dXJuIE5TVG9JbnRSb3VuZChmbG9hdChhVHdpcHMpICogYVBpeGVsc1BlclR3aXApOwp9
CgoKCgppbmxpbmUgbnNjb29yZCBOU1VuaXRzVG9Ud2lwcyhmbG9hdCBhVmFsdWUsIGZsb2F0IGFQ
b2ludHNQZXJVbml0KQp7CiAgcmV0dXJuIE5TVG9Db29yZFJvdW5kKGFWYWx1ZSAqIGFQb2ludHNQ
ZXJVbml0ICogMjAuMGYpOwp9CgppbmxpbmUgZmxvYXQgTlNUd2lwc1RvVW5pdHMobnNjb29yZCBh
VHdpcHMsIGZsb2F0IGFVbml0c1BlclBvaW50KQp7CiAgcmV0dXJuIChhVHdpcHMgKiAoYVVuaXRz
UGVyUG9pbnQgLyAyMC4wZikpOwp9CiMgNDkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9nZngvbnNS
ZWN0LmgiIDIKCgpzdHJ1Y3QgbnNSZWN0IHsKICBuc2Nvb3JkIHgsIHk7CiAgbnNjb29yZCB3aWR0
aCwgaGVpZ2h0OwoKCiAgbnNSZWN0KCkgOiB4KDApLCB5KDApLCB3aWR0aCgwKSwgaGVpZ2h0KDAp
IHt9CiAgbnNSZWN0KGNvbnN0IG5zUmVjdCYgYVJlY3QpIHsqdGhpcyA9IGFSZWN0O30KICBuc1Jl
Y3QoY29uc3QgbnNQb2ludCYgYU9yaWdpbiwgY29uc3QgbnNTaXplICZhU2l6ZSkge3ggPSBhT3Jp
Z2luLng7IHkgPSBhT3JpZ2luLnk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IGFTaXplLndpZHRoOyBoZWlnaHQgPSBhU2l6ZS5o
ZWlnaHQ7fQogIG5zUmVjdChuc2Nvb3JkIGFYLCBuc2Nvb3JkIGFZLCBuc2Nvb3JkIGFXaWR0aCwg
bnNjb29yZCBhSGVpZ2h0KSB7eCA9IGFYOyB5ID0gYVk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IGFXaWR0
aDsgaGVpZ2h0ID0gYUhlaWdodDt9CgoKCiAgUFJCb29sIElzRW1wdHkoKSBjb25zdCB7CiAgICBy
ZXR1cm4gKFBSQm9vbCkgKChoZWlnaHQgPD0gMCkgfHwgKHdpZHRoIDw9IDApKTsKICB9CiAgdm9p
ZCBFbXB0eSgpIHt3aWR0aCA9IGhlaWdodCA9IDA7fQoKCiAgUFJCb29sIENvbnRhaW5zKGNvbnN0
IG5zUmVjdCYgYVJlY3QpIGNvbnN0OwogIFBSQm9vbCBDb250YWlucyhuc2Nvb3JkIGFYLCBuc2Nv
b3JkIGFZKSBjb25zdDsKICBQUkJvb2wgQ29udGFpbnMoY29uc3QgbnNQb2ludCYgYVBvaW50KSBj
b25zdCB7cmV0dXJuIENvbnRhaW5zKGFQb2ludC54LCBhUG9pbnQueSk7fQoKCgogIFBSQm9vbCBJ
bnRlcnNlY3RzKGNvbnN0IG5zUmVjdCYgYVJlY3QpIGNvbnN0OwoKCgoKCgogIFBSQm9vbCBJbnRl
cnNlY3RSZWN0KGNvbnN0IG5zUmVjdCYgYVJlY3QxLCBjb25zdCBuc1JlY3QmIGFSZWN0Mik7CgoK
CgoKCiAgUFJCb29sIFVuaW9uUmVjdChjb25zdCBuc1JlY3QmIGFSZWN0MSwgY29uc3QgbnNSZWN0
JiBhUmVjdDIpOwoKCiAgdm9pZCBTZXRSZWN0KG5zY29vcmQgYVgsIG5zY29vcmQgYVksIG5zY29v
cmQgYVdpZHRoLCBuc2Nvb3JkIGFIZWlnaHQpIHsKICAgIHggPSBhWDsgeSA9IGFZOyB3aWR0aCA9
IGFXaWR0aDsgaGVpZ2h0ID0gYUhlaWdodDsKICB9CiAgdm9pZCBNb3ZlVG8obnNjb29yZCBhWCwg
bnNjb29yZCBhWSkge3ggPSBhWDsgeSA9IGFZO30KICB2b2lkIE1vdmVUbyhjb25zdCBuc1BvaW50
JiBhUG9pbnQpIHt4ID0gYVBvaW50Lng7IHkgPSBhUG9pbnQueTt9CiAgdm9pZCBNb3ZlQnkobnNj
b29yZCBhRHgsIG5zY29vcmQgYUR5KSB7eCArPSBhRHg7IHkgKz0gYUR5O30KICB2b2lkIFNpemVU
byhuc2Nvb3JkIGFXaWR0aCwgbnNjb29yZCBhSGVpZ2h0KSB7d2lkdGggPSBhV2lkdGg7IGhlaWdo
dCA9IGFIZWlnaHQ7fQogIHZvaWQgU2l6ZVRvKGNvbnN0IG5zU2l6ZSYgYVNpemUpIHtTaXplVG8o
YVNpemUud2lkdGgsIGFTaXplLmhlaWdodCk7fQogIHZvaWQgU2l6ZUJ5KG5zY29vcmQgYURlbHRh
V2lkdGgsIG5zY29vcmQgYURlbHRhSGVpZ2h0KSB7d2lkdGggKz0gYURlbHRhV2lkdGg7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWln
aHQgKz0gYURlbHRhSGVpZ2h0O30KCgogIHZvaWQgSW5mbGF0ZShuc2Nvb3JkIGFEeCwgbnNjb29y
ZCBhRHkpOwogIHZvaWQgSW5mbGF0ZShjb25zdCBuc1NpemUmIGFTaXplKSB7SW5mbGF0ZShhU2l6
ZS53aWR0aCwgYVNpemUuaGVpZ2h0KTt9CiAgdm9pZCBJbmZsYXRlKGNvbnN0IG5zTWFyZ2luJiBh
TWFyZ2luKTsKCgogIHZvaWQgRGVmbGF0ZShuc2Nvb3JkIGFEeCwgbnNjb29yZCBhRHkpOwogIHZv
aWQgRGVmbGF0ZShjb25zdCBuc1NpemUmIGFTaXplKSB7RGVmbGF0ZShhU2l6ZS53aWR0aCwgYVNp
emUuaGVpZ2h0KTt9CiAgdm9pZCBEZWZsYXRlKGNvbnN0IG5zTWFyZ2luJiBhTWFyZ2luKTsKCgoK
ICBQUkJvb2wgb3BlcmF0b3I9PShjb25zdCBuc1JlY3QmIGFSZWN0KSBjb25zdCB7CiAgICByZXR1
cm4gKFBSQm9vbCkgKChJc0VtcHR5KCkgJiYgYVJlY3QuSXNFbXB0eSgpKSB8fAogICAgICAgICAg
ICAgICAgICAgICAoKHggPT0gYVJlY3QueCkgJiYgKHkgPT0gYVJlY3QueSkgJiYKICAgICAgICAg
ICAgICAgICAgICAgICh3aWR0aCA9PSBhUmVjdC53aWR0aCkgJiYgKGhlaWdodCA9PSBhUmVjdC5o
ZWlnaHQpKSk7CiAgfQogIFBSQm9vbCBvcGVyYXRvciE9KGNvbnN0IG5zUmVjdCYgYVJlY3QpIGNv
bnN0IHsKICAgIHJldHVybiAoUFJCb29sKSAhb3BlcmF0b3I9PShhUmVjdCk7CiAgfQogIG5zUmVj
dCBvcGVyYXRvcisoY29uc3QgbnNSZWN0JiBhUmVjdCkgY29uc3QgewogICAgcmV0dXJuIG5zUmVj
dCh4ICsgYVJlY3QueCwgeSArIGFSZWN0LnksCiAgICAgICAgICAgICAgICAgIHdpZHRoICsgYVJl
Y3Qud2lkdGgsIGhlaWdodCArIGFSZWN0LmhlaWdodCk7CiAgfQogIG5zUmVjdCBvcGVyYXRvci0o
Y29uc3QgbnNSZWN0JiBhUmVjdCkgY29uc3QgewogICAgcmV0dXJuIG5zUmVjdCh4IC0gYVJlY3Qu
eCwgeSAtIGFSZWN0LnksCiAgICAgICAgICAgICAgICAgIHdpZHRoIC0gYVJlY3Qud2lkdGgsIGhl
aWdodCAtIGFSZWN0LmhlaWdodCk7CiAgfQogIG5zUmVjdCYgb3BlcmF0b3IrPShjb25zdCBuc1Bv
aW50JiBhUG9pbnQpIHt4ICs9IGFQb2ludC54OyB5ICs9IGFQb2ludC55OyByZXR1cm4gKnRoaXM7
fQogIG5zUmVjdCYgb3BlcmF0b3ItPShjb25zdCBuc1BvaW50JiBhUG9pbnQpIHt4IC09IGFQb2lu
dC54OyB5IC09IGFQb2ludC55OyByZXR1cm4gKnRoaXM7fQoKICBuc1JlY3QmIG9wZXJhdG9yKj0o
Y29uc3QgZmxvYXQgYVNjYWxlKSB7eCA9IE5TVG9Db29yZFJvdW5kKHggKiBhU2NhbGUpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gTlNUb0Nvb3JkUm91bmQo
eSAqIGFTY2FsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdp
ZHRoID0gTlNUb0Nvb3JkUm91bmQod2lkdGggKiBhU2NhbGUpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSBOU1RvQ29vcmRSb3VuZChoZWlnaHQgKiBh
U2NhbGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
KnRoaXM7fQoKICBuc1JlY3QmIFNjYWxlUm91bmRPdXQoY29uc3QgZmxvYXQgYVNjYWxlKTsKICBu
c1JlY3QmIFNjYWxlUm91bmRJbihjb25zdCBmbG9hdCBhU2NhbGUpOwoKCiAgbnNjb29yZCBYTW9z
dCgpIGNvbnN0IHtyZXR1cm4geCArIHdpZHRoO30KICBuc2Nvb3JkIFlNb3N0KCkgY29uc3Qge3Jl
dHVybiB5ICsgaGVpZ2h0O30KfTsKCgpleHRlcm4gRklMRSogb3BlcmF0b3I8PChGSUxFKiBvdXQs
IGNvbnN0IG5zUmVjdCYgcmVjdCk7CiMgNDUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50
L25zU3R5bGVTdHJ1Y3QuaCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9nZngvbnNGb250
LmgiIDEKIyA1MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2dmeC9uc0ZvbnQuaCIKdHlwZWRlZiBQ
UkJvb2wgKCpuc0ZvbnRGYW1pbHlFbnVtRnVuYykoY29uc3QgbnNTdHJpbmcmIGFGYW1pbHksIFBS
Qm9vbCBhR2VuZXJpYywgdm9pZCAqYURhdGEpOwoKCgoKY29uc3QgUFJVaW50OCBrR2VuZXJpY0Zv
bnRfTk9ORSA9IDB4MDA7Cgpjb25zdCBQUlVpbnQ4IGtHZW5lcmljRm9udF9tb3pfdmFyaWFibGUg
PSAweDAwOwpjb25zdCBQUlVpbnQ4IGtHZW5lcmljRm9udF9tb3pfZml4ZWQgPSAweDAxOwoKY29u
c3QgUFJVaW50OCBrR2VuZXJpY0ZvbnRfc2VyaWYgPSAweDAyOwpjb25zdCBQUlVpbnQ4IGtHZW5l
cmljRm9udF9zYW5zX3NlcmlmID0gMHgwNDsKY29uc3QgUFJVaW50OCBrR2VuZXJpY0ZvbnRfbW9u
b3NwYWNlID0gMHgwODsKY29uc3QgUFJVaW50OCBrR2VuZXJpY0ZvbnRfY3Vyc2l2ZSA9IDB4MTA7
CmNvbnN0IFBSVWludDgga0dlbmVyaWNGb250X2ZhbnRhc3kgPSAweDIwOwoKCnN0cnVjdCBuc0Zv
bnQgewoKICBuc1N0cmluZyBuYW1lOwoKCiAgUFJVaW50OCBzdHlsZTsKCgogIFBSVWludDggdmFy
aWFudCA6IDc7CgoKCiAgUFJQYWNrZWRCb29sIGZhbWlseU5hbWVRdWlya3MgOiAxOwoKCiAgUFJV
aW50MTYgd2VpZ2h0OwoKCgogIFBSVWludDggZGVjb3JhdGlvbnM7CgoKICBuc2Nvb3JkIHNpemU7
CgoKCgoKICBmbG9hdCBzaXplQWRqdXN0OwoKCiAgbnNGb250KGNvbnN0IGNoYXIqIGFOYW1lLCBQ
UlVpbnQ4IGFTdHlsZSwgUFJVaW50OCBhVmFyaWFudCwKICAgICAgICAgUFJVaW50MTYgYVdlaWdo
dCwgUFJVaW50OCBhRGVjb3JhdGlvbiwgbnNjb29yZCBhU2l6ZSwKICAgICAgICAgZmxvYXQgYVNp
emVBZGp1c3Q9MC4wZik7CgoKICBuc0ZvbnQoY29uc3QgbnNTdHJpbmcmIGFOYW1lLCBQUlVpbnQ4
IGFTdHlsZSwgUFJVaW50OCBhVmFyaWFudCwKICAgICAgICAgUFJVaW50MTYgYVdlaWdodCwgUFJV
aW50OCBhRGVjb3JhdGlvbiwgbnNjb29yZCBhU2l6ZSwKICAgICAgICAgZmxvYXQgYVNpemVBZGp1
c3Q9MC4wZik7CgoKICBuc0ZvbnQoY29uc3QgbnNGb250JiBhRm9udCk7CgogIG5zRm9udCgpOwog
IH5uc0ZvbnQoKTsKCiAgUFJCb29sIG9wZXJhdG9yPT0oY29uc3QgbnNGb250JiBhT3RoZXIpIGNv
bnN0IHsKICAgIHJldHVybiBFcXVhbHMoYU90aGVyKTsKICB9CgogIFBSQm9vbCBFcXVhbHMoY29u
c3QgbnNGb250JiBhT3RoZXIpIGNvbnN0IDsKCiAgbnNGb250JiBvcGVyYXRvcj0oY29uc3QgbnNG
b250JiBhT3RoZXIpOwoKCgoKCiAgUFJCb29sIEVudW1lcmF0ZUZhbWlsaWVzKG5zRm9udEZhbWls
eUVudW1GdW5jIGFGdW5jLCB2b2lkKiBhRGF0YSkgY29uc3Q7CiAgdm9pZCBHZXRGaXJzdEZhbWls
eShuc1N0cmluZyYgYUZhbWlseSkgY29uc3Q7CgoKICBzdGF0aWMgdm9pZCBHZXRHZW5lcmljSUQo
Y29uc3QgbnNTdHJpbmcmIGFHZW5lcmljLCBQUlVpbnQ4KiBhSUQpOwp9OwojIDQ2ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvY29udGVudC9uc1N0eWxlU3RydWN0LmgiIDIKCiMgMSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNTdHlsZUNvb3JkLmgiIDEKIyA0NCAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2NvbnRlbnQvbnNTdHlsZUNvb3JkLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2xheW91dC9uc1N0eWxlQ29uc3RzLmgiIDEKIyA0NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L2NvbnRlbnQvbnNTdHlsZUNvb3JkLmgiIDIKY2xhc3MgbnNTdHJpbmc7CgplbnVtIG5zU3R5bGVV
bml0IHsKICBlU3R5bGVVbml0X051bGwgPSAwLAogIGVTdHlsZVVuaXRfTm9ybWFsID0gMSwKICBl
U3R5bGVVbml0X0F1dG8gPSAyLAogIGVTdHlsZVVuaXRfSW5oZXJpdCA9IDMsCiAgZVN0eWxlVW5p
dF9QZXJjZW50ID0gMTAsCiAgZVN0eWxlVW5pdF9GYWN0b3IgPSAxMSwKICBlU3R5bGVVbml0X0Nv
b3JkID0gMjAsCiAgZVN0eWxlVW5pdF9JbnRlZ2VyID0gMzAsCiAgZVN0eWxlVW5pdF9Qcm9wb3J0
aW9uYWwgPSAzMSwKICBlU3R5bGVVbml0X0VudW1lcmF0ZWQgPSAzMiwKICBlU3R5bGVVbml0X0No
YXJzID0gMzMKfTsKCnR5cGVkZWYgdW5pb24gewogIFBSSW50MzIgbUludDsKICBmbG9hdCBtRmxv
YXQ7Cn0gbnNTdHlsZVVuaW9uOwojIDc0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9u
c1N0eWxlQ29vcmQuaCIKY2xhc3MgbnNTdHlsZUNvb3JkIHsKcHVibGljOgogIG5zU3R5bGVDb29y
ZChuc1N0eWxlVW5pdCBhVW5pdCA9IGVTdHlsZVVuaXRfTnVsbCk7CiAgbnNTdHlsZUNvb3JkKG5z
Y29vcmQgYVZhbHVlKTsKICBuc1N0eWxlQ29vcmQoUFJJbnQzMiBhVmFsdWUsIG5zU3R5bGVVbml0
IGFVbml0KTsKICBuc1N0eWxlQ29vcmQoZmxvYXQgYVZhbHVlLCBuc1N0eWxlVW5pdCBhVW5pdCk7
CiAgbnNTdHlsZUNvb3JkKGNvbnN0IG5zU3R5bGVDb29yZCYgYUNvcHkpOwoKICBuc1N0eWxlQ29v
cmQmIG9wZXJhdG9yPShjb25zdCBuc1N0eWxlQ29vcmQmIGFDb3B5KTsKICBQUkJvb2wgb3BlcmF0
b3I9PShjb25zdCBuc1N0eWxlQ29vcmQmIGFPdGhlcikgY29uc3Q7CiAgUFJCb29sIG9wZXJhdG9y
IT0oY29uc3QgbnNTdHlsZUNvb3JkJiBhT3RoZXIpIGNvbnN0OwoKICBuc1N0eWxlVW5pdCBHZXRV
bml0KHZvaWQpIGNvbnN0IHsgcmV0dXJuIG1Vbml0OyB9CiAgbnNjb29yZCBHZXRDb29yZFZhbHVl
KHZvaWQpIGNvbnN0OwogIFBSSW50MzIgR2V0SW50VmFsdWUodm9pZCkgY29uc3Q7CiAgZmxvYXQg
R2V0UGVyY2VudFZhbHVlKHZvaWQpIGNvbnN0OwogIGZsb2F0IEdldEZhY3RvclZhbHVlKHZvaWQp
IGNvbnN0OwogIHZvaWQgR2V0VW5pb25WYWx1ZShuc1N0eWxlVW5pb24mIGFWYWx1ZSkgY29uc3Q7
CgogIHZvaWQgUmVzZXQodm9pZCk7CiAgdm9pZCBTZXRDb29yZFZhbHVlKG5zY29vcmQgYVZhbHVl
KTsKICB2b2lkIFNldEludFZhbHVlKFBSSW50MzIgYVZhbHVlLCBuc1N0eWxlVW5pdCBhVW5pdCk7
CiAgdm9pZCBTZXRQZXJjZW50VmFsdWUoZmxvYXQgYVZhbHVlKTsKICB2b2lkIFNldEZhY3RvclZh
bHVlKGZsb2F0IGFWYWx1ZSk7CiAgdm9pZCBTZXROb3JtYWxWYWx1ZSh2b2lkKTsKICB2b2lkIFNl
dEF1dG9WYWx1ZSh2b2lkKTsKICB2b2lkIFNldEluaGVyaXRWYWx1ZSh2b2lkKTsKICB2b2lkIFNl
dFVuaW9uVmFsdWUoY29uc3QgbnNTdHlsZVVuaW9uJiBhVmFsdWUsIG5zU3R5bGVVbml0IGFVbml0
KTsKCiAgdm9pZCBBcHBlbmRUb1N0cmluZyhuc1N0cmluZyYgYUJ1ZmZlcikgY29uc3Q7CiAgdm9p
ZCBUb1N0cmluZyhuc1N0cmluZyYgYUJ1ZmZlcikgY29uc3Q7CgpwdWJsaWM6CiAgbnNTdHlsZVVu
aXQgbVVuaXQ7CiAgbnNTdHlsZVVuaW9uIG1WYWx1ZTsKfTsKCgoKCgoKCmNsYXNzIG5zU3R5bGVT
aWRlcyB7CnB1YmxpYzoKICBuc1N0eWxlU2lkZXModm9pZCk7CgoKICBQUkJvb2wgb3BlcmF0b3I9
PShjb25zdCBuc1N0eWxlU2lkZXMmIGFPdGhlcikgY29uc3Q7CiAgUFJCb29sIG9wZXJhdG9yIT0o
Y29uc3QgbnNTdHlsZVNpZGVzJiBhT3RoZXIpIGNvbnN0OwoKCgogIGlubGluZSBuc1N0eWxlVW5p
dCBHZXRVbml0KFBSVWludDggYVNpZGUpIGNvbnN0OwogIGlubGluZSBuc1N0eWxlVW5pdCBHZXRM
ZWZ0VW5pdCh2b2lkKSBjb25zdDsKICBpbmxpbmUgbnNTdHlsZVVuaXQgR2V0VG9wVW5pdCh2b2lk
KSBjb25zdDsKICBpbmxpbmUgbnNTdHlsZVVuaXQgR2V0UmlnaHRVbml0KHZvaWQpIGNvbnN0Owog
IGlubGluZSBuc1N0eWxlVW5pdCBHZXRCb3R0b21Vbml0KHZvaWQpIGNvbnN0OwoKICBpbmxpbmUg
bnNTdHlsZUNvb3JkJiBHZXQoUFJVaW50OCBhU2lkZSwgbnNTdHlsZUNvb3JkJiBhQ29vcmQpIGNv
bnN0OwogIGlubGluZSBuc1N0eWxlQ29vcmQmIEdldExlZnQobnNTdHlsZUNvb3JkJiBhQ29vcmQp
IGNvbnN0OwogIGlubGluZSBuc1N0eWxlQ29vcmQmIEdldFRvcChuc1N0eWxlQ29vcmQmIGFDb29y
ZCkgY29uc3Q7CiAgaW5saW5lIG5zU3R5bGVDb29yZCYgR2V0UmlnaHQobnNTdHlsZUNvb3JkJiBh
Q29vcmQpIGNvbnN0OwogIGlubGluZSBuc1N0eWxlQ29vcmQmIEdldEJvdHRvbShuc1N0eWxlQ29v
cmQmIGFDb29yZCkgY29uc3Q7CgogIHZvaWQgUmVzZXQodm9pZCk7CgogIGlubGluZSB2b2lkIFNl
dChQUlVpbnQ4IGFTaWRlLCBjb25zdCBuc1N0eWxlQ29vcmQmIGFDb29yZCk7CiAgaW5saW5lIHZv
aWQgU2V0TGVmdChjb25zdCBuc1N0eWxlQ29vcmQmIGFDb29yZCk7CiAgaW5saW5lIHZvaWQgU2V0
VG9wKGNvbnN0IG5zU3R5bGVDb29yZCYgYUNvb3JkKTsKICBpbmxpbmUgdm9pZCBTZXRSaWdodChj
b25zdCBuc1N0eWxlQ29vcmQmIGFDb29yZCk7CiAgaW5saW5lIHZvaWQgU2V0Qm90dG9tKGNvbnN0
IG5zU3R5bGVDb29yZCYgYUNvb3JkKTsKCiAgdm9pZCBBcHBlbmRUb1N0cmluZyhuc1N0cmluZyYg
YUJ1ZmZlcikgY29uc3Q7CiAgdm9pZCBUb1N0cmluZyhuc1N0cmluZyYgYUJ1ZmZlcikgY29uc3Q7
Cgpwcm90ZWN0ZWQ6CiAgUFJVaW50OCBtVW5pdHNbNF07CiAgbnNTdHlsZVVuaW9uIG1WYWx1ZXNb
NF07Cn07CgoKCgppbmxpbmUgUFJCb29sIG5zU3R5bGVDb29yZDo6b3BlcmF0b3IhPShjb25zdCBu
c1N0eWxlQ29vcmQmIGFPdGhlcikgY29uc3QKewogIHJldHVybiBQUkJvb2woISAoKCp0aGlzKSA9
PSBhT3RoZXIpKTsKfQoKaW5saW5lIFBSSW50MzIgbnNTdHlsZUNvb3JkOjpHZXRDb29yZFZhbHVl
KHZvaWQpIGNvbnN0CnsKICA7CiAgaWYgKG1Vbml0ID09IGVTdHlsZVVuaXRfQ29vcmQpIHsKICAg
IHJldHVybiBtVmFsdWUubUludDsKICB9CiAgcmV0dXJuIDA7Cn0KCmlubGluZSBQUkludDMyIG5z
U3R5bGVDb29yZDo6R2V0SW50VmFsdWUodm9pZCkgY29uc3QKewogIDsKCgoKICBpZiAoKG1Vbml0
ID09IGVTdHlsZVVuaXRfUHJvcG9ydGlvbmFsKSB8fAogICAgICAobVVuaXQgPT0gZVN0eWxlVW5p
dF9FbnVtZXJhdGVkKSB8fAogICAgICAobVVuaXQgPT0gZVN0eWxlVW5pdF9DaGFycykgfHwKICAg
ICAgKG1Vbml0ID09IGVTdHlsZVVuaXRfSW50ZWdlcikpIHsKICAgIHJldHVybiBtVmFsdWUubUlu
dDsKICB9CiAgcmV0dXJuIDA7Cn0KCmlubGluZSBmbG9hdCBuc1N0eWxlQ29vcmQ6OkdldFBlcmNl
bnRWYWx1ZSh2b2lkKSBjb25zdAp7CiAgOwogIGlmIChtVW5pdCA9PSBlU3R5bGVVbml0X1BlcmNl
bnQpIHsKICAgIHJldHVybiBtVmFsdWUubUZsb2F0OwogIH0KICByZXR1cm4gMC4wZjsKfQoKaW5s
aW5lIGZsb2F0IG5zU3R5bGVDb29yZDo6R2V0RmFjdG9yVmFsdWUodm9pZCkgY29uc3QKewogIDsK
ICBpZiAobVVuaXQgPT0gZVN0eWxlVW5pdF9GYWN0b3IpIHsKICAgIHJldHVybiBtVmFsdWUubUZs
b2F0OwogIH0KICByZXR1cm4gMC4wZjsKfQoKaW5saW5lIHZvaWQgbnNTdHlsZUNvb3JkOjpHZXRV
bmlvblZhbHVlKG5zU3R5bGVVbmlvbiYgYVZhbHVlKSBjb25zdAp7CiAgbWVtY3B5KCZhVmFsdWUs
ICZtVmFsdWUsIHNpemVvZihuc1N0eWxlVW5pb24pKTsKfQoKCgoKaW5saW5lIFBSQm9vbCBuc1N0
eWxlU2lkZXM6Om9wZXJhdG9yIT0oY29uc3QgbnNTdHlsZVNpZGVzJiBhT3RoZXIpIGNvbnN0CnsK
ICByZXR1cm4gUFJCb29sKCEgKCgqdGhpcykgPT0gYU90aGVyKSk7Cn0KCmlubGluZSBuc1N0eWxl
VW5pdCBuc1N0eWxlU2lkZXM6OkdldFVuaXQoUFJVaW50OCBhU2lkZSkgY29uc3QKewogIHJldHVy
biAobnNTdHlsZVVuaXQpbVVuaXRzW2FTaWRlXTsKfQoKaW5saW5lIG5zU3R5bGVVbml0IG5zU3R5
bGVTaWRlczo6R2V0TGVmdFVuaXQodm9pZCkgY29uc3QKewogIHJldHVybiBHZXRVbml0KDMpOwp9
CgppbmxpbmUgbnNTdHlsZVVuaXQgbnNTdHlsZVNpZGVzOjpHZXRUb3BVbml0KHZvaWQpIGNvbnN0
CnsKICByZXR1cm4gR2V0VW5pdCgwKTsKfQoKaW5saW5lIG5zU3R5bGVVbml0IG5zU3R5bGVTaWRl
czo6R2V0UmlnaHRVbml0KHZvaWQpIGNvbnN0CnsKICByZXR1cm4gR2V0VW5pdCgxKTsKfQoKaW5s
aW5lIG5zU3R5bGVVbml0IG5zU3R5bGVTaWRlczo6R2V0Qm90dG9tVW5pdCh2b2lkKSBjb25zdAp7
CiAgcmV0dXJuIEdldFVuaXQoMik7Cn0KCmlubGluZSBuc1N0eWxlQ29vcmQmIG5zU3R5bGVTaWRl
czo6R2V0KFBSVWludDggYVNpZGUsIG5zU3R5bGVDb29yZCYgYUNvb3JkKSBjb25zdAp7CiAgYUNv
b3JkLlNldFVuaW9uVmFsdWUobVZhbHVlc1thU2lkZV0sIChuc1N0eWxlVW5pdCltVW5pdHNbYVNp
ZGVdKTsKICByZXR1cm4gYUNvb3JkOwp9CgppbmxpbmUgbnNTdHlsZUNvb3JkJiBuc1N0eWxlU2lk
ZXM6OkdldExlZnQobnNTdHlsZUNvb3JkJiBhQ29vcmQpIGNvbnN0CnsKICByZXR1cm4gR2V0KDMs
IGFDb29yZCk7Cn0KCmlubGluZSBuc1N0eWxlQ29vcmQmIG5zU3R5bGVTaWRlczo6R2V0VG9wKG5z
U3R5bGVDb29yZCYgYUNvb3JkKSBjb25zdAp7CiAgcmV0dXJuIEdldCgwLCBhQ29vcmQpOwp9Cgpp
bmxpbmUgbnNTdHlsZUNvb3JkJiBuc1N0eWxlU2lkZXM6OkdldFJpZ2h0KG5zU3R5bGVDb29yZCYg
YUNvb3JkKSBjb25zdAp7CiAgcmV0dXJuIEdldCgxLCBhQ29vcmQpOwp9CgppbmxpbmUgbnNTdHls
ZUNvb3JkJiBuc1N0eWxlU2lkZXM6OkdldEJvdHRvbShuc1N0eWxlQ29vcmQmIGFDb29yZCkgY29u
c3QKewogIHJldHVybiBHZXQoMiwgYUNvb3JkKTsKfQoKaW5saW5lIHZvaWQgbnNTdHlsZVNpZGVz
OjpTZXQoUFJVaW50OCBhU2lkZSwgY29uc3QgbnNTdHlsZUNvb3JkJiBhQ29vcmQpCnsKICBtVW5p
dHNbYVNpZGVdID0gYUNvb3JkLkdldFVuaXQoKTsKICBhQ29vcmQuR2V0VW5pb25WYWx1ZShtVmFs
dWVzW2FTaWRlXSk7Cn0KCmlubGluZSB2b2lkIG5zU3R5bGVTaWRlczo6U2V0TGVmdChjb25zdCBu
c1N0eWxlQ29vcmQmIGFDb29yZCkKewogIFNldCgzLCBhQ29vcmQpOwp9CgppbmxpbmUgdm9pZCBu
c1N0eWxlU2lkZXM6OlNldFRvcChjb25zdCBuc1N0eWxlQ29vcmQmIGFDb29yZCkKewogIFNldCgw
LCBhQ29vcmQpOwp9CgppbmxpbmUgdm9pZCBuc1N0eWxlU2lkZXM6OlNldFJpZ2h0KGNvbnN0IG5z
U3R5bGVDb29yZCYgYUNvb3JkKQp7CiAgU2V0KDEsIGFDb29yZCk7Cn0KCmlubGluZSB2b2lkIG5z
U3R5bGVTaWRlczo6U2V0Qm90dG9tKGNvbnN0IG5zU3R5bGVDb29yZCYgYUNvb3JkKQp7CiAgU2V0
KDIsIGFDb29yZCk7Cn0KIyA0OCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNTdHls
ZVN0cnVjdC5oIiAyCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVN0eWxl
U2V0LmgiIDEKIyA0NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lTdHlsZVNldC5o
IgpjbGFzcyBuc0lBdG9tOwpjbGFzcyBuc0lTdHlsZVJ1bGU7CmNsYXNzIG5zSVN0eWxlU2hlZXQ7
CmNsYXNzIG5zSVN0eWxlQ29udGV4dDsKY2xhc3MgbnNJU3R5bGVSdWxlU3VwcGxpZXI7CmNsYXNz
IG5zSVN0eWxlRnJhbWVDb25zdHJ1Y3Rpb247CmNsYXNzIG5zSVByZXNDb250ZXh0OwpjbGFzcyBu
c0lQcmVzU2hlbGw7CmNsYXNzIG5zSUNvbnRlbnQ7CmNsYXNzIG5zSUZyYW1lOwpjbGFzcyBuc0lE
b2N1bWVudDsKY2xhc3MgbnNJRnJhbWVNYW5hZ2VyOwpjbGFzcyBuc0lTdXBwb3J0c0FycmF5Owpj
bGFzcyBuc1J1bGVOb2RlOwpzdHJ1Y3QgbnNGaW5kRnJhbWVIaW50OwoKCmNsYXNzIG5zSVNpemVP
ZkhhbmRsZXI7CgpjbGFzcyBuc0lDU1NQc2V1ZG9Db21wYXJhdG9yOwoKCgoKCmNsYXNzIG5zSVN0
eWxlU2V0IDogcHVibGljIG5zSVN1cHBvcnRzIHsKcHVibGljOgogIHN0YXRpYyBjb25zdCBuc0lJ
RCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhlNTkzOTZiMCwgMHhiMjQ0
LCAweDExZDEsIHsweDgwLCAweDMxLCAweDAwLCAweDYwLCAweDA4LCAweDE1LCAweDliLCAweDVh
fX07IHJldHVybiBpaWQ7fQoKCgogIHZpcnR1YWwgdm9pZCBBcHBlbmRPdmVycmlkZVN0eWxlU2hl
ZXQobnNJU3R5bGVTaGVldCogYVNoZWV0KSA9IDA7CiAgdmlydHVhbCB2b2lkIEluc2VydE92ZXJy
aWRlU3R5bGVTaGVldEFmdGVyKG5zSVN0eWxlU2hlZXQqIGFTaGVldCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3R5bGVTaGVldCogYUFmdGVyU2hlZXQp
ID0gMDsKICB2aXJ0dWFsIHZvaWQgSW5zZXJ0T3ZlcnJpZGVTdHlsZVNoZWV0QmVmb3JlKG5zSVN0
eWxlU2hlZXQqIGFTaGVldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5zSVN0eWxlU2hlZXQqIGFCZWZvcmVTaGVldCkgPSAwOwogIHZpcnR1YWwgdm9pZCBS
ZW1vdmVPdmVycmlkZVN0eWxlU2hlZXQobnNJU3R5bGVTaGVldCogYVNoZWV0KSA9IDA7CiAgdmly
dHVhbCBQUkludDMyIEdldE51bWJlck9mT3ZlcnJpZGVTdHlsZVNoZWV0cygpID0gMDsKICB2aXJ0
dWFsIG5zSVN0eWxlU2hlZXQqIEdldE92ZXJyaWRlU3R5bGVTaGVldEF0KFBSSW50MzIgYUluZGV4
KSA9IDA7CgoKICB2aXJ0dWFsIHZvaWQgQWRkRG9jU3R5bGVTaGVldChuc0lTdHlsZVNoZWV0KiBh
U2hlZXQsIG5zSURvY3VtZW50KiBhRG9jdW1lbnQpID0gMDsKICB2aXJ0dWFsIHZvaWQgUmVtb3Zl
RG9jU3R5bGVTaGVldChuc0lTdHlsZVNoZWV0KiBhU2hlZXQpID0gMDsKICB2aXJ0dWFsIFBSSW50
MzIgR2V0TnVtYmVyT2ZEb2NTdHlsZVNoZWV0cygpID0gMDsKICB2aXJ0dWFsIG5zSVN0eWxlU2hl
ZXQqIEdldERvY1N0eWxlU2hlZXRBdChQUkludDMyIGFJbmRleCkgPSAwOwoKICB2aXJ0dWFsIHZv
aWQgQXBwZW5kVXNlclN0eWxlU2hlZXQobnNJU3R5bGVTaGVldCogYVNoZWV0KSA9IDA7CiAgdmly
dHVhbCB2b2lkIEluc2VydFVzZXJTdHlsZVNoZWV0QWZ0ZXIobnNJU3R5bGVTaGVldCogYVNoZWV0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdHlsZVNo
ZWV0KiBhQWZ0ZXJTaGVldCkgPSAwOwogIHZpcnR1YWwgdm9pZCBJbnNlcnRVc2VyU3R5bGVTaGVl
dEJlZm9yZShuc0lTdHlsZVNoZWV0KiBhU2hlZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBuc0lTdHlsZVNoZWV0KiBhQmVmb3JlU2hlZXQpID0gMDsKICB2
aXJ0dWFsIHZvaWQgUmVtb3ZlVXNlclN0eWxlU2hlZXQobnNJU3R5bGVTaGVldCogYVNoZWV0KSA9
IDA7CiAgdmlydHVhbCBQUkludDMyIEdldE51bWJlck9mVXNlclN0eWxlU2hlZXRzKCkgPSAwOwog
IHZpcnR1YWwgbnNJU3R5bGVTaGVldCogR2V0VXNlclN0eWxlU2hlZXRBdChQUkludDMyIGFJbmRl
eCkgPSAwOwogIHZpcnR1YWwgdm9pZCBSZXBsYWNlVXNlclN0eWxlU2hlZXRzKG5zSVN1cHBvcnRz
QXJyYXkqIGFOZXdTaGVldHMpID0gMDsKCiAgdmlydHVhbCB2b2lkIEFwcGVuZEFnZW50U3R5bGVT
aGVldChuc0lTdHlsZVNoZWV0KiBhU2hlZXQpID0gMDsKICB2aXJ0dWFsIHZvaWQgSW5zZXJ0QWdl
bnRTdHlsZVNoZWV0QWZ0ZXIobnNJU3R5bGVTaGVldCogYVNoZWV0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdHlsZVNoZWV0KiBhQWZ0ZXJTaGVldCkg
PSAwOwogIHZpcnR1YWwgdm9pZCBJbnNlcnRBZ2VudFN0eWxlU2hlZXRCZWZvcmUobnNJU3R5bGVT
aGVldCogYVNoZWV0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnNJU3R5bGVTaGVldCogYUJlZm9yZVNoZWV0KSA9IDA7CiAgdmlydHVhbCB2b2lkIFJlbW92
ZUFnZW50U3R5bGVTaGVldChuc0lTdHlsZVNoZWV0KiBhU2hlZXQpID0gMDsKICB2aXJ0dWFsIFBS
SW50MzIgR2V0TnVtYmVyT2ZBZ2VudFN0eWxlU2hlZXRzKCkgPSAwOwogIHZpcnR1YWwgbnNJU3R5
bGVTaGVldCogR2V0QWdlbnRTdHlsZVNoZWV0QXQoUFJJbnQzMiBhSW5kZXgpID0gMDsKICB2aXJ0
dWFsIHZvaWQgUmVwbGFjZUFnZW50U3R5bGVTaGVldHMobnNJU3VwcG9ydHNBcnJheSogYU5ld1No
ZWV0cykgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJ1bGVUcmVlKG5zUnVsZU5vZGUqKiBh
UmVzdWx0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBDbGVhckNhY2hlZERhdGFJblJ1bGVUcmVl
KG5zSVN0eWxlUnVsZSogYVJ1bGUpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBBZGRSdWxl
Tm9kZU1hcHBpbmcobnNSdWxlTm9kZSogYVJ1bGVOb2RlKSA9IDA7CiMgMTMwICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbGF5b3V0L25zSVN0eWxlU2V0LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBCZWdp
blJ1bGVUcmVlUmVjb25zdHJ1Y3QoKT0wOwogIHZpcnR1YWwgbnNyZXN1bHQgRW5kUnVsZVRyZWVS
ZWNvbnN0cnVjdCgpPTA7CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U3R5bGVGcmFtZUNvbnN0cnVj
dGlvbihuc0lTdHlsZUZyYW1lQ29uc3RydWN0aW9uKiogYVJlc3VsdCkgPSAwOwojIDE0NCAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lTdHlsZVNldC5oIgogIHZpcnR1YWwgbnNyZXN1
bHQgQ2xlYXJTdHlsZURhdGEobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwgbnNJU3R5bGVS
dWxlKiBhUnVsZSwgbnNJU3R5bGVDb250ZXh0KiBhQ29udGV4dCkgPSAwOwoKCgogIHZpcnR1YWwg
bnNyZXN1bHQgRW5hYmxlUXVpcmtTdHlsZVNoZWV0KFBSQm9vbCBhRW5hYmxlKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IE5vdGlmeVN0eWxlU2hlZXRTdGF0ZUNoYW5nZWQoUFJCb29sIGFBcHBs
aWNhYmxlKSA9IDA7CgoKICB2aXJ0dWFsIG5zSVN0eWxlQ29udGV4dCogUmVzb2x2ZVN0eWxlRm9y
KG5zSVByZXNDb250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuc0lDb250ZW50KiBhQ29udGVudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN0eWxlQ29udGV4dCogYVBhcmVudENvbnRleHQp
ID0gMDsKIyAxNjggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJU3R5bGVTZXQuaCIK
ICB2aXJ0dWFsIG5zSVN0eWxlQ29udGV4dCogUmVzb2x2ZVN0eWxlRm9yTm9uRWxlbWVudCgKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVByZXNDb250ZXh0KiBh
UHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
c0lTdHlsZUNvbnRleHQqIGFQYXJlbnRDb250ZXh0KSA9IDA7CgoKCiAgdmlydHVhbCBuc0lTdHls
ZUNvbnRleHQqIFJlc29sdmVQc2V1ZG9TdHlsZUZvcihuc0lQcmVzQ29udGV4dCogYVByZXNDb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJ
Q29udGVudCogYVBhcmVudENvbnRlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuc0lBdG9tKiBhUHNldWRvVGFnLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3R5bGVDb250ZXh0KiBhUGFyZW50Q29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5z
SUNTU1BzZXVkb0NvbXBhcmF0b3IqIGFDb21wYXJhdG9yID0gMCkgPSAwOwoKCgoKICB2aXJ0dWFs
IG5zSVN0eWxlQ29udGV4dCogUHJvYmVQc2V1ZG9TdHlsZUZvcihuc0lQcmVzQ29udGV4dCogYVBy
ZXNDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5zSUNvbnRlbnQqIGFQYXJlbnRDb250ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5zSUF0b20qIGFQc2V1ZG9UYWcsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3R5bGVDb250ZXh0KiBhUGFyZW50Q29u
dGV4dCkgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IFNodXRkb3duKCk9MDsKCgoKICB2aXJ0dWFs
IG5zcmVzdWx0IFJlUGFyZW50U3R5bGVDb250ZXh0KG5zSVByZXNDb250ZXh0KiBhUHJlc0NvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3R5bGVDb250ZXh0KiBh
U3R5bGVDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN0eWxl
Q29udGV4dCogYU5ld1BhcmVudENvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnNJU3R5bGVDb250ZXh0KiogYU5ld1N0eWxlQ29udGV4dCkgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBIYXNTdGF0ZURlcGVuZGVudFN0eWxlKG5zSVByZXNDb250ZXh0KiBhUHJlc0Nv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lDb250ZW50KiBh
Q29udGVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSSW50MzIgYVN0
YXRlTWFzaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCogYVJl
c3VsdCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDb25zdHJ1Y3RSb290RnJhbWUobnNJUHJl
c0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnNJQ29udGVudCogYURvY0VsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5zSUZyYW1lKiYgYUZyYW1lU3ViVHJlZSkgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFJl
Y29uc3RydWN0RG9jRWxlbWVudEhpZXJhcmNoeShuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENvbnRlbnRBcHBlbmRlZChuc0lQcmVzQ29udGV4
dCogYVByZXNDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUNvbnRlbnQq
IGFDb250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJJbnQzMiBhTmV3SW5k
ZXhJbkNvbnRhaW5lcikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgQ29udGVudEluc2VydGVkKG5z
SVByZXNDb250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnNJQ29udGVudCogYUNvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lD
b250ZW50KiBhQ2hpbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJJbnQzMiBhSW5k
ZXhJbkNvbnRhaW5lcikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgQ29udGVudFJlcGxhY2VkKG5z
SVByZXNDb250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnNJQ29udGVudCogYUNvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lD
b250ZW50KiBhT2xkQ2hpbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQ29udGVu
dCogYU5ld0NoaWxkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSSW50MzIgYUluZGV4
SW5Db250YWluZXIpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IENvbnRlbnRSZW1vdmVkKG5zSVBy
ZXNDb250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lD
b250ZW50KiBhQ29udGFpbmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQ29udGVu
dCogYUNoaWxkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJJbnQzMiBhSW5kZXhJbkNv
bnRhaW5lcikgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IENvbnRlbnRDaGFuZ2VkKG5zSVByZXND
b250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lDb250
ZW50KiBhQ29udGVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzKiBh
U3ViQ29udGVudCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgQ29udGVudFN0YXRlc0NoYW5nZWQo
bnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5zSUNvbnRlbnQqIGFDb250ZW50MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5zSUNvbnRlbnQqIGFDb250ZW50MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBSSW50MzIgYVN0YXRlTWFzaykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgQXR0cmli
dXRlQ2hhbmdlZChuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuc0lDb250ZW50KiBhQ2hpbGQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBSSW50MzIgYU5hbWVTcGFjZUlELAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuc0lBdG9tKiBhQXR0cmlidXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUklu
dDMyIGFNb2RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0NoYW5nZUhpbnQg
YUhpbnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgU3R5bGVSdWxlQ2hhbmdlZChuc0lQcmVz
Q29udGV4dCogYVByZXNDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lT
dHlsZVNoZWV0KiBhU3R5bGVTaGVldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJ
U3R5bGVSdWxlKiBhU3R5bGVSdWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0No
YW5nZUhpbnQgYUhpbnQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFN0eWxlUnVsZUFkZGVkKG5z
SVByZXNDb250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
c0lTdHlsZVNoZWV0KiBhU3R5bGVTaGVldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5z
SVN0eWxlUnVsZSogYVN0eWxlUnVsZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU3R5bGVSdWxl
UmVtb3ZlZChuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuc0lTdHlsZVNoZWV0KiBhU3R5bGVTaGVldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnNJU3R5bGVSdWxlKiBhU3R5bGVSdWxlKSA9IDA7CgoKCgoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBDYW50UmVuZGVyUmVwbGFjZWRFbGVtZW50KG5zSVByZXNDb250ZXh0KiBhUHJl
c0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUZyYW1l
KiBhRnJhbWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ3JlYXRlQ29udGludWluZ0ZyYW1l
KG5zSVByZXNDb250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnNJRnJhbWUqIGFGcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuc0lGcmFtZSogYVBhcmVudEZyYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5zSUZyYW1lKiogYUNvbnRpbnVpbmdGcmFtZSkgPSAwOwojIDI4MiAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2xheW91dC9uc0lTdHlsZVNldC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgRmlu
ZFByaW1hcnlGcmFtZUZvcihuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuc0lGcmFtZU1hbmFnZXIqIGFGcmFtZU1hbmFnZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUNvbnRlbnQqIGFDb250ZW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lGcmFtZSoqIGFGcmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnNGaW5kRnJhbWVIaW50KiBhSGludD0wKSA9IDA7CiMg
MzAwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVN0eWxlU2V0LmgiCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRJbnNlcnRpb25Qb2ludChuc0lQcmVzU2hlbGwqIGFQcmVzU2hlbGwsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lGcmFtZSogYVBhcmVudEZyYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQ29udGVudCogYUNoaWxkQ29udGVudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUZyYW1lKiogYUluc2VydGlvblBvaW50KSA9
IDA7CgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRTdHlsZVJ1bGVTdXBwbGllcihuc0lTdHlsZVJ1
bGVTdXBwbGllciogYVN1cHBsaWVyKT0wOwogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U3R5bGVSdWxl
U3VwcGxpZXIobnNJU3R5bGVSdWxlU3VwcGxpZXIqKiBhU3VwcGxpZXIpPTA7CgoKCgoKCgogIHZp
cnR1YWwgdm9pZCBSZXNldFVuaXF1ZVN0eWxlSXRlbXModm9pZCkgPSAwOwoKCgogIHZpcnR1YWwg
bnNyZXN1bHQgQXR0cmlidXRlQWZmZWN0c1N0eWxlKG5zSUF0b20gKmFBdHRyaWJ1dGUsIG5zSUNv
bnRlbnQgKmFDb250ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9v
bCAmYUFmZmVjdHMpID0gMDsKfTsKCmV4dGVybiBuc3Jlc3VsdAogIE5TX05ld1N0eWxlU2V0KG5z
SVN0eWxlU2V0KiogYUluc3RhbmNlUHRyUmVzdWx0KTsKCgpjbGFzcyBuc1VuaXF1ZVN0eWxlSXRl
bXMgOiBwcml2YXRlIG5zVm9pZEFycmF5CnsKcHVibGljIDoKCiAgc3RhdGljIG5zVW5pcXVlU3R5
bGVJdGVtcyAqR2V0VW5pcXVlU3R5bGVJdGVtcyggdm9pZCApewogICAgaWYobUluc3RhbmNlID09
IDApewoKCgogICAgICBuZXcgbnNVbmlxdWVTdHlsZUl0ZW1zOwoKICAgICAgOwoKCgogICAgfQog
ICAgcmV0dXJuIG1JbnN0YW5jZTsKICB9CgogIHZvaWQgKkdldEl0ZW0odm9pZCAqYVB0cil7CiAg
ICBQUkludDMyIGluZGV4ID0gbnNWb2lkQXJyYXk6OkluZGV4T2YoYVB0cik7CiAgICBpZiggaW5k
ZXggIT0gLTEpewogICAgICByZXR1cm4gbnNWb2lkQXJyYXk6OkVsZW1lbnRBdChpbmRleCk7CiAg
ICB9IGVsc2UgewogICAgICByZXR1cm4gMDsKICAgIH0KICB9CgogIFBSQm9vbCBBZGRJdGVtKHZv
aWQgKmFQdHIpewogICAgaWYobnNWb2lkQXJyYXk6OkluZGV4T2YoYVB0cikgPT0gLTEpewogICAg
ICByZXR1cm4gbnNWb2lkQXJyYXk6OkFwcGVuZEVsZW1lbnQoYVB0cik7CiAgICB9IGVsc2Ugewog
ICAgICByZXR1cm4gMDsKICAgIH0KICB9CgogIFBSQm9vbCBSZW1vdmVJdGVtKHZvaWQgKmFQdHIp
ewogICAgcmV0dXJuIG5zVm9pZEFycmF5OjpSZW1vdmVFbGVtZW50KGFQdHIpOwogIH0KCiAgUFJJ
bnQzMiBDb3VudCh2b2lkKXsKICAgIHJldHVybiBuc1ZvaWRBcnJheTo6Q291bnQoKTsKICB9Cgog
IHZvaWQgQ2xlYXIodm9pZCl7CiAgICBuc1ZvaWRBcnJheTo6Q2xlYXIoKTsKICB9CnByb3RlY3Rl
ZDoKCiAgbnNVbmlxdWVTdHlsZUl0ZW1zKCBjb25zdCBuc1VuaXF1ZVN0eWxlSXRlbXMmIHNyYyk7
CiAgbnNVbmlxdWVTdHlsZUl0ZW1zJiBvcGVyYXRvciA9KGNvbnN0IG5zVW5pcXVlU3R5bGVJdGVt
cyYgc3JjKTsKCgogIG5zVW5pcXVlU3R5bGVJdGVtcyh2b2lkKSA6IG5zVm9pZEFycmF5KCl7CiAg
ICA7CiAgICBtSW5zdGFuY2U9dGhpczsKICB9CgogIHN0YXRpYyBuc1VuaXF1ZVN0eWxlSXRlbXMg
Km1JbnN0YW5jZTsKfTsKIyAzOTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJU3R5
bGVTZXQuaCIKc3RydWN0IG5zRmluZEZyYW1lSGludAp7CiAgbnNJRnJhbWUgKm1QcmltYXJ5RnJh
bWVGb3JQcmV2U2libGluZzsKICBuc0ZpbmRGcmFtZUhpbnQoKSB7CiAgICBtUHJpbWFyeUZyYW1l
Rm9yUHJldlNpYmxpbmcgPSAwOwogIH07Cn07CiMgNTEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9j
b250ZW50L25zU3R5bGVTdHJ1Y3QuaCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlv
dXQvbnNJUHJlc0NvbnRleHQuaCIgMQojIDQ0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0
L25zSVByZXNDb250ZXh0LmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVJl
cXVlc3QuaCIgMQojIDE3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJUmVxdWVzdC5o
IgpjbGFzcyBuc0lMb2FkR3JvdXA7Cgp0eXBlZGVmIFBSVWludDMyIG5zTG9hZEZsYWdzOwojIDM0
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJUmVxdWVzdC5oIgpjbGFzcyBuc0lSZXF1
ZXN0IDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlE
JiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGVmNmJmYmQyLCAweGZkNDYs
IDB4NDhkOCwgeyAweDk2LCAweGI3LCAweDlmLCAweDhmLCAweDBmLCAweGQzLCAweDg3LCAweGZl
IH19OyByZXR1cm4gaWlkO30KCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TmFtZShuc0FDU3Ry
aW5nICYgYU5hbWUpID0gMDsKIyA1MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVJl
cXVlc3QuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IElzUGVuZGluZyhQUkJvb2wgKl9yZXR2YWwpID0g
MDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U3RhdHVzKG5zcmVzdWx0ICphU3RhdHVzKSA9
IDA7CiMgNzUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lSZXF1ZXN0LmgiCiAgdmly
dHVhbCBuc3Jlc3VsdCBDYW5jZWwobnNyZXN1bHQgYVN0YXR1cykgPSAwOwojIDg5ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvbmVja28vbnNJUmVxdWVzdC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgU3Vz
cGVuZCh2b2lkKSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVzdW1lKHZvaWQpID0g
MDsKCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMb2FkR3JvdXAobnNJTG9hZEdyb3VwICog
KmFMb2FkR3JvdXApID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldExvYWRHcm91cChuc0lMb2Fk
R3JvdXAgKiBhTG9hZEdyb3VwKSA9IDA7CiMgMTE1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVj
a28vbnNJUmVxdWVzdC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TG9hZEZsYWdzKG5zTG9hZEZs
YWdzICphTG9hZEZsYWdzKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRMb2FkRmxhZ3MobnNM
b2FkRmxhZ3MgYUxvYWRGbGFncykgPSAwOwoKCgoKCgoKICBlbnVtIHsgTE9BRF9OT1JNQUwgPSAw
VSB9OwoKCgoKCiAgZW51bSB7IExPQURfQkFDS0dST1VORCA9IDFVIH07CiMgMTM5ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvbmVja28vbnNJUmVxdWVzdC5oIgogIGVudW0geyBJTkhJQklUX0NBQ0hJ
TkcgPSAxMjhVIH07CgoKCgoKCiAgZW51bSB7IElOSElCSVRfUEVSU0lTVEVOVF9DQUNISU5HID0g
MjU2VSB9OwojIDE1NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVJlcXVlc3QuaCIK
ICBlbnVtIHsgTE9BRF9CWVBBU1NfQ0FDSEUgPSA1MTJVIH07CgoKCgoKCgogIGVudW0geyBMT0FE
X0ZST01fQ0FDSEUgPSAxMDI0VSB9OwojIDE4OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tv
L25zSVJlcXVlc3QuaCIKICBlbnVtIHsgVkFMSURBVEVfQUxXQVlTID0gMjA0OFUgfTsKCiAgZW51
bSB7IFZBTElEQVRFX05FVkVSID0gNDA5NlUgfTsKCiAgZW51bSB7IFZBTElEQVRFX09OQ0VfUEVS
X1NFU1NJT04gPSA4MTkyVSB9OwoKfTsKIyA0NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91
dC9uc0lQcmVzQ29udGV4dC5oIiAyCgoKY2xhc3MgbnNCaWRpUHJlc1V0aWxzOwoKCnN0cnVjdCBu
c0ZvbnQ7CnN0cnVjdCBuc1JlY3Q7CgpjbGFzcyBpbWdJUmVxdWVzdDsKCmNsYXNzIG5zSUNvbnRl
bnQ7CmNsYXNzIG5zSURvY3VtZW50OwpjbGFzcyBuc0lEZXZpY2VDb250ZXh0OwpjbGFzcyBuc0lG
b250TWV0cmljczsKY2xhc3MgbnNJRnJhbWU7CmNsYXNzIG5zSUltYWdlOwpjbGFzcyBuc0lMaW5r
SGFuZGxlcjsKY2xhc3MgbnNJUHJlc1NoZWxsOwpjbGFzcyBuc0lQcmVmOwpjbGFzcyBuc0lTdHls
ZUNvbnRleHQ7CmNsYXNzIG5zSUF0b207CmNsYXNzIG5zU3RyaW5nOwpjbGFzcyBuc0lFdmVudFN0
YXRlTWFuYWdlcjsKY2xhc3MgbnNJVVJJOwpjbGFzcyBuc0lMb29rQW5kRmVlbDsKY2xhc3MgbnNJ
SU9TZXJ2aWNlOwpjbGFzcyBuc0lDU1NQc2V1ZG9Db21wYXJhdG9yOwpjbGFzcyBuc0lMYW5ndWFn
ZUF0b207CmNsYXNzIG5zSVRoZW1lOwpzdHJ1Y3QgbnNTdHlsZVN0cnVjdDsKc3RydWN0IG5zU3R5
bGVCYWNrZ3JvdW5kOwojIDg1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVByZXND
b250ZXh0LmgiCmVudW0gbnNXaWRnZXRSZW5kZXJpbmcgewogIGVXaWRnZXRSZW5kZXJpbmdfTmF0
aXZlID0gMSwKICBlV2lkZ2V0UmVuZGVyaW5nX0dmeCA9IDIsCiAgZVdpZGdldFJlbmRlcmluZ19Q
YXJ0aWFsR2Z4ID0gMwp9OwoKZW51bSBuc1dpZGdldFR5cGUgewogIGVXaWRnZXRUeXBlX0J1dHRv
biA9IDEsCiAgZVdpZGdldFR5cGVfQ2hlY2tib3ggPSAyLAogIGVXaWRnZXRUeXBlX1JhZGlvID0g
MywKICBlV2lkZ2V0VHlwZV9UZXh0ID0gNAp9OwoKZW51bSBuc0xhbmd1YWdlU3BlY2lmaWNUcmFu
c2Zvcm1UeXBlIHsKICBlTGFuZ3VhZ2VTcGVjaWZpY1RyYW5zZm9ybVR5cGVfVW5rbm93biA9IC0x
LAogIGVMYW5ndWFnZVNwZWNpZmljVHJhbnNmb3JtVHlwZV9Ob25lID0gMCwKICBlTGFuZ3VhZ2VT
cGVjaWZpY1RyYW5zZm9ybVR5cGVfSmFwYW5lc2UsCiAgZUxhbmd1YWdlU3BlY2lmaWNUcmFuc2Zv
cm1UeXBlX0tvcmVhbgp9OwoKCmNvbnN0IFBSVWludDMyIGtQcmVzQ29udGV4dF9Vc2VEb2N1bWVu
dENvbG9ycyA9IDB4MDE7CmNvbnN0IFBSVWludDMyIGtQcmVzQ29udGV4dF9Vc2VEb2N1bWVudEZv
bnRzID0gMHgwMjsKY29uc3QgUFJVaW50MzIga1ByZXNDb250ZXh0X1VuZGVybGluZUxpbmtzID0g
MHgwMzsKCgpjb25zdCBQUlVpbnQzMiBrUHJlc0NvbnRleHRfTWluaW11bUZvbnRTaXplID0gMHgw
MTsKCgoKY29uc3QgUFJVaW50OCBrUHJlc0NvbnRleHRfRGVmYXVsdFZhcmlhYmxlRm9udF9JRCA9
IDB4MDA7CmNvbnN0IFBSVWludDgga1ByZXNDb250ZXh0X0RlZmF1bHRGaXhlZEZvbnRfSUQgPSAw
eDAxOwoKCgpjbGFzcyBuc0lQcmVzQ29udGV4dCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CnB1Ymxp
YzoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlk
ID0geyAweDBhNWQxMmUwLCAweDk0NGUsIDB4MTFkMSwgezB4OTMsIDB4MjMsIDB4MDAsIDB4ODAs
IDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzJ9IH07IHJldHVybiBpaWQ7fQoKCgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEluaXQobnNJRGV2aWNlQ29udGV4dCogYURldmljZUNvbnRleHQpID0gMDsKCgoKCgog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0U2hlbGwobnNJUHJlc1NoZWxsKiBhU2hlbGwpID0gMDsKCgoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTaGVsbChuc0lQcmVzU2hlbGwqKiBhUmVzdWx0KSA9IDA7
CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29tcGF0aWJpbGl0eU1vZGUobnNDb21wYXRp
YmlsaXR5KiBhTW9kZVJlc3VsdCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q29tcGF0aWJp
bGl0eU1vZGUobnNDb21wYXRpYmlsaXR5IGFNb2RlKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0V2lkZ2V0UmVuZGVyaW5nTW9kZShuc1dpZGdldFJlbmRlcmluZyogYU1vZGVSZXN1bHQp
ID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFdpZGdldFJlbmRlcmluZ01vZGUobnNXaWRnZXRS
ZW5kZXJpbmcgYU1vZGUpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRJbWFnZUFuaW1h
dGlvbk1vZGUoUFJVaW50MTYqIGFNb2RlUmVzdWx0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBT
ZXRJbWFnZUFuaW1hdGlvbk1vZGUoUFJVaW50MTYgYU1vZGUpID0gMDsKCgoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRJbWFnZUxvYWRGbGFncyhuc0xvYWRGbGFncyYgYUxvYWRGbGFncykgPSAwOwoK
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldExvb2tBbmRGZWVsKG5zSUxvb2tBbmRGZWVsKiogYUxv
b2tBbmRGZWVsKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SU9TZXJ2aWNlKG5zSUlP
U2VydmljZSoqIGFJT1NlcnZpY2UpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRCYXNl
VVJMKG5zSVVSSSoqIGFVUkxSZXN1bHQpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRN
ZWRpdW0obnNJQXRvbSoqIGFNZWRpdW1SZXN1bHQpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBDbGVhclN0eWxlRGF0YUFuZFJlZmxvdyh2b2lkKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVz
dWx0IFJlc29sdmVTdHlsZUNvbnRleHRGb3IobnNJQ29udGVudCogYUNvbnRlbnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN0eWxlQ29udGV4dCogYVBhcmVudENvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN0eWxlQ29udGV4dCoq
IGFSZXN1bHQpID0gMDsKIyAyMTEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJUHJl
c0NvbnRleHQuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFJlc29sdmVTdHlsZUNvbnRleHRGb3JOb25F
bGVtZW50KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdHlsZUNvbnRl
eHQqIGFQYXJlbnRDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
c0lTdHlsZUNvbnRleHQqKiBhUmVzdWx0KSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBS
ZXNvbHZlUHNldWRvU3R5bGVDb250ZXh0Rm9yKG5zSUNvbnRlbnQqIGFQYXJlbnRDb250ZW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lBdG9tKiBhUHNldWRv
VGFnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdHlsZUNv
bnRleHQqIGFQYXJlbnRDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuc0lTdHlsZUNvbnRleHQqKiBhUmVzdWx0KSA9IDA7CiMgMjMzICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbGF5b3V0L25zSVByZXNDb250ZXh0LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBS
ZXNvbHZlUHNldWRvU3R5bGVXaXRoQ29tcGFyYXRvcihuc0lDb250ZW50KiBhUGFyZW50Q29udGVu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUF0b20q
IGFQc2V1ZG9UYWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuc0lTdHlsZUNvbnRleHQqIGFQYXJlbnRDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnNJQ1NTUHNldWRvQ29tcGFyYXRvciogYUNvbXBhcmF0
b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdHls
ZUNvbnRleHQqKiBhUmVzdWx0KSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgUHJvYmVQ
c2V1ZG9TdHlsZUNvbnRleHRGb3IobnNJQ29udGVudCogYVBhcmVudENvbnRlbnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lBdG9tKiBhUHNldWRvVGFnLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3R5bGVDb250ZXh0KiBhUGFy
ZW50Q29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN0
eWxlQ29udGV4dCoqIGFSZXN1bHQpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFhC
TEJpbmRpbmdVUkwobnNJQ29udGVudCogYUNvbnRlbnQsIG5zQVN0cmluZyYgYVJlc3VsdCkgPSAw
OwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZVBhcmVudFN0eWxlQ29udGV4dChuc0lGcmFtZSog
YUZyYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3R5bGVDb250ZXh0
KiBhTmV3UGFyZW50Q29udGV4dCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBBbGxvY2F0ZUZy
b21TaGVsbChzaXplX3QgYVNpemUsIHZvaWQqKiBhUmVzdWx0KSA9IDA7CiAgdmlydHVhbCBuc3Jl
c3VsdCBGcmVlVG9TaGVsbChzaXplX3QgYVNpemUsIHZvaWQqIGFGcmVlQ2h1bmspID0gMDsKCgoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNZXRyaWNzRm9yKGNvbnN0IG5zRm9udCYgYUZvbnQsIG5z
SUZvbnRNZXRyaWNzKiogYVJlc3VsdCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREZWZh
dWx0Rm9udChQUlVpbnQ4IGFGb250SUQsIGNvbnN0IG5zRm9udCoqIGFSZXN1bHQpID0gMDsKCiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXREZWZhdWx0Rm9udChQUlVpbnQ4IGFGb250SUQsIGNvbnN0IG5z
Rm9udCYgYUZvbnQpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENhY2hlZEJvb2xQ
cmVmKFBSVWludDMyIGFQcmVmVHlwZSwgUFJCb29sJiBhVmFsdWUpID0gMDsKCgoKCgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldENhY2hlZEludFByZWYoUFJVaW50MzIgYVByZWZUeXBlLCBQUkludDMy
JiBhVmFsdWUpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGb250U2NhbGVyKFBSSW50
MzIqIGFSZXN1bHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEZvbnRTY2FsZXIoUFJJbnQz
MiBhU2NhbGVyKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RGVmYXVsdENvbG9yKG5z
Y29sb3IqIGFDb2xvcikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RGVmYXVsdEJhY2tncm91
bmRDb2xvcihuc2NvbG9yKiBhQ29sb3IpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERlZmF1
bHRMaW5rQ29sb3IobnNjb2xvciogYUNvbG9yKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRE
ZWZhdWx0VmlzaXRlZExpbmtDb2xvcihuc2NvbG9yKiBhQ29sb3IpID0gMDsKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldEZvY3VzQmFja2dyb3VuZENvbG9yKG5zY29sb3IqIGFDb2xvcikgPSAwOwogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0Rm9jdXNUZXh0Q29sb3IobnNjb2xvciogYUNvbG9yKSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRVc2VGb2N1c0NvbG9ycyhQUkJvb2wmIHVzZUZvY3VzQ29sb3Jz
KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGb2N1c1JpbmdXaWR0aChQUlVpbnQ4ICpmb2N1
c1JpbmdXaWR0aCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Rm9jdXNSaW5nT25Bbnl0aGlu
ZyhQUkJvb2wmIGZvY3VzUmluZ09uQW55dGhpbmcpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
U2V0RGVmYXVsdENvbG9yKG5zY29sb3IgYUNvbG9yKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBT
ZXREZWZhdWx0QmFja2dyb3VuZENvbG9yKG5zY29sb3IgYUNvbG9yKSA9IDA7CiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXREZWZhdWx0TGlua0NvbG9yKG5zY29sb3IgYUNvbG9yKSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXREZWZhdWx0VmlzaXRlZExpbmtDb2xvcihuc2NvbG9yIGFDb2xvcikgPSAw
OwojIDMyNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lQcmVzQ29udGV4dC5oIgog
IHZpcnR1YWwgbnNyZXN1bHQgTG9hZEltYWdlKGNvbnN0IG5zU3RyaW5nJiBhVVJMLAogICAgICAg
ICAgICAgICAgICAgICAgIG5zSUZyYW1lKiBhVGFyZ2V0RnJhbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgaW1nSVJlcXVlc3QgKiphUmVxdWVzdCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBTdG9wSW1hZ2VzRm9yKG5zSUZyYW1lKiBhVGFyZ2V0RnJhbWUpID0gMDsKCiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXRDb250YWluZXIobnNJU3VwcG9ydHMqIGFDb250YWluZXIpID0gMDsKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRDb250YWluZXIobnNJU3VwcG9ydHMqKiBhUmVzdWx0KSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldExpbmtIYW5kbGVyKG5zSUxpbmtIYW5kbGVyKiBhSGFuZGxl
cikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGlua0hhbmRsZXIobnNJTGlua0hhbmRsZXIq
KiBhUmVzdWx0KSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VmlzaWJsZUFyZWEo
bnNSZWN0JiBhUmVzdWx0KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFZpc2libGVB
cmVhKGNvbnN0IG5zUmVjdCYgcikgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJc1BhZ2lu
YXRlZChQUkJvb2wqIGFSZXN1bHQpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UGFn
aW5hdGVkU2Nyb2xsaW5nKFBSQm9vbCBhUmVzdWx0KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldFBhZ2luYXRlZFNjcm9sbGluZyhQUkJvb2wqIGFSZXN1bHQpID0gMDsKIyAzODMgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJUHJlc0NvbnRleHQuaCIKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldFBhZ2VEaW0obnNSZWN0KiBhQWN0dWFsUmVjdCwgbnNSZWN0KiBhQWRqUmVjdCkg
PSAwOwojIDM5MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lQcmVzQ29udGV4dC5o
IgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UGFnZURpbShuc1JlY3QqIGFSZWN0KSA9IDA7CgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0UGl4ZWxzVG9Ud2lwcyhmbG9hdCogYVJlc3VsdCkgY29uc3QgPSAw
OwoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFR3aXBzVG9QaXhlbHMoZmxvYXQqIGFSZXN1bHQpIGNv
bnN0ID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRUd2lwc1RvUGl4ZWxzRm9yRm9udHMoZmxv
YXQqIGFSZXN1bHQpIGNvbnN0ID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNjYWxl
ZFBpeGVsc1RvVHdpcHMoZmxvYXQqIGFTY2FsZSkgY29uc3QgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXREZXZpY2VDb250ZXh0KG5zSURldmljZUNvbnRleHQqKiBhUmVzdWx0KSBjb25zdCA9
IDA7CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RXZlbnRTdGF0ZU1hbmFnZXIobnNJRXZlbnRTdGF0
ZU1hbmFnZXIqKiBhTWFuYWdlcikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGFuZ3VhZ2Uo
bnNJTGFuZ3VhZ2VBdG9tKiogYUxhbmd1YWdlKSA9IDA7CiMgNDIxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvbGF5b3V0L25zSVByZXNDb250ZXh0LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMYW5n
dWFnZVNwZWNpZmljVHJhbnNmb3JtVHlwZSgKICAgICAgICAgICAgICBuc0xhbmd1YWdlU3BlY2lm
aWNUcmFuc2Zvcm1UeXBlKiBhVHlwZSkgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEJh
Y2tncm91bmRJbWFnZURyYXcoUFJCb29sICZhQ2FuRHJhdyk9MDsKICB2aXJ0dWFsIG5zcmVzdWx0
IFNldEJhY2tncm91bmRJbWFnZURyYXcoUFJCb29sIGFDYW5EcmF3KT0wOwogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0QmFja2dyb3VuZENvbG9yRHJhdyhQUkJvb2wgJmFDYW5EcmF3KT0wOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0QmFja2dyb3VuZENvbG9yRHJhdyhQUkJvb2wgYUNhbkRyYXcpPTA7CiMg
NDQwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVByZXNDb250ZXh0LmgiCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRCaWRpRW5hYmxlZChQUkJvb2wqIGFCaWRpRW5hYmxlZCkgY29uc3Qg
PSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QmlkaUVuYWJsZWQoUFJCb29sIGFCaWRp
RW5hYmxlZCkgY29uc3QgPSAwOwojIDQ2MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9u
c0lQcmVzQ29udGV4dC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VmlzdWFsTW9kZShQUkJvb2wg
YUlzVmlzdWFsKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJc1Zpc3VhbE1vZGUoUFJC
b29sJiBhSXNWaXN1YWwpIGNvbnN0ID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEJp
ZGlVdGlscyhuc0JpZGlQcmVzVXRpbHMqKiBhQmlkaVV0aWxzKSA9IDA7CgoKCgogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0QmlkaShQUlVpbnQzMiBhQmlkaU9wdGlvbnMsIFBSQm9vbCBhRm9yY2VSZWZs
b3cgPSAwKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QmlkaShQUlVpbnQzMiogYUJp
ZGlPcHRpb25zKSBjb25zdCA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJc1Zpc1JUTChQ
UkJvb2wgJmFSZXN1bHQpIGNvbnN0ID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgSXNBcmFi
aWNFbmNvZGluZyhQUkJvb2wgJmFSZXN1bHQpIGNvbnN0ID0gMDsKCgoKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgU2V0SXNCaWRpU3lzdGVtKFBSQm9vbCBhSXNCaWRpKSA9IDA7CgoKCgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldElzQmlkaVN5c3RlbShQUkJvb2wgJmFSZXN1bHQpIGNvbnN0ID0gMDsKCgoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRCaWRpQ2hhcnNldChuc0FTdHJpbmcgJmFDaGFyU2V0KSBj
b25zdCA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0SXNSZW5kZXJpbmdPbmx5U2Vs
ZWN0aW9uKFBSQm9vbCBhUmVzdWx0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBJc1JlbmRlcmlu
Z09ubHlTZWxlY3Rpb24oUFJCb29sKiBhUmVzdWx0KSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0VGhlbWUobnNJVGhlbWUqKiBhUmVzdWx0KSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgVGhlbWVDaGFuZ2VkKCkgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFN5c0NvbG9y
Q2hhbmdlZCgpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEZpbmRGcmFtZUJhY2tncm91
bmQobnNJRnJhbWUqIGFGcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgbnNTdHlsZUJhY2tncm91bmQqKiBhQmFja2dyb3VuZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUFJCb29sKiBhSXNDYW5hdnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBSQm9vbCogYUZvdW5kQmFja2dyb3VuZCkgPSAwOwoKCgoKCn07CiMgNTY5ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVByZXNDb250ZXh0LmgiCmV4dGVybiBuc3Jlc3Vs
dAogIE5TX05ld0dhbGxleUNvbnRleHQobnNJUHJlc0NvbnRleHQqKiBhSW5zdGFuY2VQdHJSZXN1
bHQpOwojIDUyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc1N0eWxlU3RydWN0Lmgi
IDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVByZXNTaGVsbC5oIiAxCiMg
NDMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJUHJlc1NoZWxsLmgiCiMgMSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc1JlZmxvd1R5cGUuaCIgMQojIDQxICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvbGF5b3V0L25zUmVmbG93VHlwZS5oIgplbnVtIG5zUmVmbG93VHlwZSB7
CgoKCgoKCgogIGVSZWZsb3dUeXBlX0NvbnRlbnRDaGFuZ2VkLAoKCgoKCgoKICBlUmVmbG93VHlw
ZV9TdHlsZUNoYW5nZWQsCgoKCgogIGVSZWZsb3dUeXBlX1JlZmxvd0RpcnR5LAoKCgoKICBlUmVm
bG93VHlwZV9Vc2VyRGVmaW5lZAp9OwojIDQ0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0
L25zSVByZXNTaGVsbC5oIiAyCgoKY2xhc3MgbnNJQXRvbTsKY2xhc3MgbnNJQ29udGVudDsKY2xh
c3MgbnNJQ29udGVudEl0ZXJhdG9yOwpjbGFzcyBuc0lEb2N1bWVudDsKY2xhc3MgbnNJRG9jdW1l
bnRPYnNlcnZlcjsKY2xhc3MgbnNJRnJhbWU7CmNsYXNzIG5zSVByZXNDb250ZXh0OwpjbGFzcyBu
c0lTdHlsZVNldDsKY2xhc3MgbnNJVmlld01hbmFnZXI7CmNsYXNzIG5zSURldmljZUNvbnRleHQ7
CmNsYXNzIG5zSVJlbmRlcmluZ0NvbnRleHQ7CmNsYXNzIG5zSVBhZ2VTZXF1ZW5jZUZyYW1lOwpj
bGFzcyBuc1N0cmluZzsKY2xhc3MgbnNBU3RyaW5nOwpjbGFzcyBuc1N0cmluZ0FycmF5OwpjbGFz
cyBuc0lDYXJldDsKY2xhc3MgbnNJU3R5bGVDb250ZXh0OwpjbGFzcyBuc0lGcmFtZVNlbGVjdGlv
bjsKY2xhc3MgbnNJRnJhbWVNYW5hZ2VyOwpjbGFzcyBuc0lMYXlvdXRIaXN0b3J5U3RhdGU7CmNs
YXNzIG5zSUFyZW5hOwpjbGFzcyBuc0lSZWZsb3dDYWxsYmFjazsKY2xhc3MgbnNJU3VwcG9ydHNB
cnJheTsKY2xhc3MgbnNJRE9NTm9kZTsKY2xhc3MgbnNIVE1MUmVmbG93Q29tbWFuZDsKIyAxMDYg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJUHJlc1NoZWxsLmgiCmVudW0gbnNBdHRy
aWJ1dGVDaGFuZ2VUeXBlIHsKICBlQ2hhbmdlVHlwZV9TZXQgPSAwLAogIGVDaGFuZ2VUeXBlX1Jl
bW92ZSA9IDEKfTsKIyAxMjIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJUHJlc1No
ZWxsLmgiCmNsYXNzIG5zSVByZXNTaGVsbCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CnB1YmxpYzoK
ICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0g
eyAweDc2ZTc5YzYwLCAweDk0NGUsIDB4MTFkMSwgezB4OTMsIDB4MjMsIDB4MDAsIDB4ODAsIDB4
NWYsIDB4OGEsIDB4ZGQsIDB4MzJ9IH07IHJldHVybiBpaWQ7fQoKICB2aXJ0dWFsIG5zcmVzdWx0
IEluaXQobnNJRG9jdW1lbnQqIGFEb2N1bWVudCwKICAgICAgICAgICAgICAgICAgbnNJUHJlc0Nv
bnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgbnNJVmlld01hbmFnZXIqIGFW
aWV3TWFuYWdlciwKICAgICAgICAgICAgICAgICAgbnNJU3R5bGVTZXQqIGFTdHlsZVNldCwKICAg
ICAgICAgICAgICAgICAgbnNDb21wYXRpYmlsaXR5IGFDb21wYXRNb2RlKSA9IDA7CiMgMTM5ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVByZXNTaGVsbC5oIgogIHZpcnR1YWwgbnNy
ZXN1bHQgRGVzdHJveSgpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBBbGxvY2F0ZUZyYW1l
KHNpemVfdCBhU2l6ZSwgdm9pZCoqIGFSZXN1bHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IEZy
ZWVGcmFtZShzaXplX3QgYVNpemUsIHZvaWQqIGFGcmVlQ2h1bmspID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgUHVzaFN0YWNrTWVtb3J5KCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgUG9wU3Rh
Y2tNZW1vcnkoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBBbGxvY2F0ZVN0YWNrTWVtb3J5KHNp
emVfdCBhU2l6ZSwgdm9pZCoqIGFSZXN1bHQpID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRE
b2N1bWVudChuc0lEb2N1bWVudCoqIGFSZXN1bHQpID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRQcmVzQ29udGV4dChuc0lQcmVzQ29udGV4dCoqIGFSZXN1bHQpID0gMDsKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRWaWV3TWFuYWdlcihuc0lWaWV3TWFuYWdlcioqIGFSZXN1bHQpID0gMDsKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRTdHlsZVNldChuc0lTdHlsZVNldCoqIGFSZXN1bHQpID0gMDsK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBY3RpdmVBbHRlcm5hdGVTdHlsZVNoZWV0KG5zU3RyaW5n
JiBhU2hlZXRUaXRsZSkgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IFNlbGVjdEFsdGVybmF0ZVN0
eWxlU2hlZXQoY29uc3QgbnNTdHJpbmcmIGFTaGVldFRpdGxlKSA9IDA7CgoKCgoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBSZWNvbnN0cnVjdFN0eWxlRGF0YShQUkJvb2wgYVJlYnVpbGRSdWxlVHJlZSkg
PSAwOwojIDE3OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lQcmVzU2hlbGwuaCIK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldFByZWZlcmVuY2VTdHlsZVJ1bGVzKFBSQm9vbCBhRm9yY2VS
ZWZsb3cpID0gMDsKIyAxODggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJUHJlc1No
ZWxsLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBFbmFibGVQcmVmU3R5bGVSdWxlcyhQUkJvb2wgYUVu
YWJsZSwgUFJVaW50OCBhUHJlZlR5cGU9MHhGRikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgQXJl
UHJlZlN0eWxlUnVsZXNFbmFibGVkKFBSQm9vbCYgYUVuYWJsZWQpID0gMDsKCgoKCgogIHZpcnR1
YWwgbnNyZXN1bHQgTGlzdEFsdGVybmF0ZVN0eWxlU2hlZXRzKG5zU3RyaW5nQXJyYXkmIGFUaXRs
ZUxpc3QpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RnJhbWVTZWxlY3Rpb24obnNJ
RnJhbWVTZWxlY3Rpb24qKiBhU2VsZWN0aW9uKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEJl
Z2luT2JzZXJ2aW5nRG9jdW1lbnQoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEVuZE9ic2Vy
dmluZ0RvY3VtZW50KCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RGlkSW5pdGlh
bFJlZmxvdyhQUkJvb2wgKmFEaWRJbml0aWFsUmVmbG93KSA9IDA7CiMgMjIzICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbGF5b3V0L25zSVByZXNTaGVsbC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgSW5p
dGlhbFJlZmxvdyhuc2Nvb3JkIGFXaWR0aCwgbnNjb29yZCBhSGVpZ2h0KSA9IDA7CgoKCgoKICB2
aXJ0dWFsIG5zcmVzdWx0IFJlc2l6ZVJlZmxvdyhuc2Nvb3JkIGFXaWR0aCwgbnNjb29yZCBhSGVp
Z2h0KSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgU3R5bGVDaGFuZ2VSZWZsb3coKSA9IDA7
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Um9vdEZyYW1lKG5zSUZyYW1lKiogYUZyYW1lKSBjb25z
dCA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBhZ2VTZXF1ZW5jZUZyYW1lKG5zSVBh
Z2VTZXF1ZW5jZUZyYW1lKiogYVJlc3VsdCkgY29uc3QgPSAwOwojIDI1OCAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2xheW91dC9uc0lQcmVzU2hlbGwuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBy
aW1hcnlGcmFtZUZvcihuc0lDb250ZW50KiBhQ29udGVudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuc0lGcmFtZSoqIGFQcmltYXJ5RnJhbWUpIGNvbnN0ID0gMDsKCgoKCgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0U3R5bGVDb250ZXh0Rm9yKG5zSUZyYW1lKiBhRnJhbWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3R5bGVDb250ZXh0KiogYVN0eWxlQ29udGV4
dCkgY29uc3QgPSAwOwoKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldExheW91dE9iamVjdEZv
cihuc0lDb250ZW50KiBhQ29udGVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
c0lTdXBwb3J0cyoqIGFSZXN1bHQpIGNvbnN0ID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0UGxhY2Vob2xkZXJGcmFtZUZvcihuc0lGcmFtZSogYUZyYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBuc0lGcmFtZSoqIGFQbGFjZWhvbGRlckZyYW1lKSBjb25zdCA9
IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgQXBwZW5kUmVmbG93Q29tbWFuZChuc0hUTUxSZWZs
b3dDb21tYW5kKiBhUmVmbG93Q29tbWFuZCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgQ2FuY2Vs
UmVmbG93Q29tbWFuZChuc0lGcmFtZSogYVRhcmdldEZyYW1lLCBuc1JlZmxvd1R5cGUqIGFDbWRU
eXBlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBDYW5jZWxBbGxSZWZsb3dDb21tYW5kcygpID0g
MDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZWNyZWF0ZUZyYW1lc0Zvcihuc0lDb250ZW50KiBh
Q29udGVudCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgSXNTYWZlVG9GbHVzaChQUkJv
b2wmIGFJc1NhZmVUb0ZsdXNoKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBGbHVzaFBl
bmRpbmdOb3RpZmljYXRpb25zKFBSQm9vbCBhVXBkYXRlVmlld3MpID0gMDsKCgoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBQb3N0RE9NRXZlbnQobnNJQ29udGVudCogYUNvbnRlbnQsIG5zRXZlbnQqIGFF
dmVudCk9MDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBQb3N0QXR0cmlidXRlQ2hhbmdlKG5zSUNv
bnRlbnQqIGFDb250ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkludDMy
IGFOYW1lU3BhY2VJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQXRvbSog
YU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5zU3RyaW5nJiBh
VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCBhTm90aWZ5LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0F0dHJpYnV0ZUNoYW5nZVR5cGUgYVR5
cGUpID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBQb3N0UmVmbG93Q2FsbGJhY2sobnNJUmVmbG93
Q2FsbGJhY2sqIGFDYWxsYmFjaykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgQ2FuY2VsUmVmbG93
Q2FsbGJhY2sobnNJUmVmbG93Q2FsbGJhY2sqIGFDYWxsYmFjaykgPSAwOwoKCgogIHZpcnR1YWwg
bnNyZXN1bHQgQmVnaW5SZWZsb3dCYXRjaGluZygpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IEVu
ZFJlZmxvd0JhdGNoaW5nKFBSQm9vbCBhRmx1c2hQZW5kaW5nUmVmbG93cykgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0UmVmbG93QmF0Y2hpbmdTdGF0dXMoUFJCb29sKiBhSXNCYXRjaGluZykg
PSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IENsZWFyRnJhbWVSZWZzKG5zSUZyYW1lKiBhRnJhbWUp
ID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ3JlYXRlUmVuZGVyaW5nQ29udGV4dChuc0lG
cmFtZSAqYUZyYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lSZW5k
ZXJpbmdDb250ZXh0KiogYUNvbnRleHQpID0gMDsKIyAzNTAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9sYXlvdXQvbnNJUHJlc1NoZWxsLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBDYW50UmVuZGVyUmVw
bGFjZWRFbGVtZW50KG5zSVByZXNDb250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUZyYW1lKiBhRnJhbWUpID0gMDsKIyAzNjIgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJUHJlc1NoZWxsLmgiCiAgdmlydHVhbCBuc3Jl
c3VsdCBHb1RvQW5jaG9yKGNvbnN0IG5zQVN0cmluZyYgYUFuY2hvck5hbWUsIFBSQm9vbCBhU2Ny
b2xsKSA9IDA7CiMgMzkyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVByZXNTaGVs
bC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgU2Nyb2xsRnJhbWVJbnRvVmlldyhuc0lGcmFtZSAqYUZy
YW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkludG4gYVZQZXJjZW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkludG4gYUhQZXJjZW50KSBjb25zdCA9
IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNldElnbm9yZUZyYW1lRGVzdHJ1Y3Rpb24oUFJC
b29sIGFJZ25vcmUpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IE5vdGlmeURlc3Ryb3lp
bmdGcmFtZShuc0lGcmFtZSogYUZyYW1lKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
RnJhbWVNYW5hZ2VyKG5zSUZyYW1lTWFuYWdlcioqIGFGcmFtZU1hbmFnZXIpIGNvbnN0ID0gMDsK
CgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBEb0NvcHkoKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0TGlua0xvY2F0aW9uKG5zSURPTU5vZGUqIGFOb2RlLCBuc0FTdHJpbmcmIGFMb2NhdGlv
bikgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEltYWdlTG9jYXRpb24obnNJRE9NTm9k
ZSogYU5vZGUsIG5zQVN0cmluZyYgYUxvY2F0aW9uKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1
bHQgRG9Db3B5SW1hZ2VDb250ZW50cyhuc0lET01Ob2RlKiBhTm9kZSkgPSAwOwoKCgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldENhcmV0KG5zSUNhcmV0ICoqYU91dENhcmV0KSA9IDA7CiMgNDQ4ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVByZXNTaGVsbC5oIgogIHZpcnR1YWwgbnNy
ZXN1bHQgU2V0U2VsZWN0aW9uRmxhZ3MoUFJJbnQxNiBhSW5FbmFibGUpID0gMDsKIyA0NTcgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJUHJlc1NoZWxsLmgiCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRTZWxlY3Rpb25GbGFncyhQUkludDE2ICphT3V0RW5hYmxlZCkgPSAwOwoKCgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEhhbmRsZUV2ZW50V2l0aFRhcmdldChuc0V2ZW50KiBhRXZlbnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJRnJhbWUqIGFGcmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lDb250ZW50KiBhQ29udGVudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUlVpbnQzMiBhRmxhZ3MsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnNFdmVudFN0YXR1cyogYVN0YXR1cykgPSAwOwoKCgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEhhbmRsZURPTUV2ZW50V2l0aFRhcmdldChuc0lDb250ZW50KiBh
VGFyZ2V0Q29udGVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zRXZlbnQqIGFFdmVu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zRXZlbnRTdGF0dXMqIGFTdGF0dXMpID0g
MDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRFdmVudFRhcmdldEZyYW1lKG5zSUZyYW1lKiog
YUZyYW1lKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RXZlbnRUYXJnZXRDb250ZW50
KG5zRXZlbnQqIGFFdmVudCwgbnNJQ29udGVudCoqIGFDb250ZW50KSA9IDA7CgoKCgoKICB2aXJ0
dWFsIG5zcmVzdWx0IENhcHR1cmVIaXN0b3J5U3RhdGUobnNJTGF5b3V0SGlzdG9yeVN0YXRlKiog
YUxheW91dEhpc3RvcnlTdGF0ZSwgUFJCb29sIGFMZWF2aW5nUGFnZSA9IDApID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldEhpc3RvcnlTdGF0ZShuc0lMYXlvdXRIaXN0b3J5U3RhdGUqKiBhTGF5
b3V0SGlzdG9yeVN0YXRlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRIaXN0b3J5U3RhdGUo
bnNJTGF5b3V0SGlzdG9yeVN0YXRlKiBhTGF5b3V0SGlzdG9yeVN0YXRlKSA9IDA7CgoKCgoKICB2
aXJ0dWFsIG5zcmVzdWx0IElzUmVmbG93TG9ja2VkKFBSQm9vbCogYUlzTG9ja2VkKSA9IDA7CiMg
NTA2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVByZXNTaGVsbC5oIgogIGVudW0g
R2VuZXJhdGVkQ29udGVudFR5cGUge0JlZm9yZSwgQWZ0ZXJ9OwogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0R2VuZXJhdGVkQ29udGVudEl0ZXJhdG9yKG5zSUNvbnRlbnQqIGFDb250ZW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlZENvbnRlbnRUeXBlIGFU
eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUNvbnRlbnRJ
dGVyYXRvcioqIGFJdGVyYXRvcikgY29uc3QgPSAwOwojIDUyMSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2xheW91dC9uc0lQcmVzU2hlbGwuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFub255bW91
c0NvbnRlbnRGb3IobnNJQ29udGVudCogYUNvbnRlbnQsIG5zSVN1cHBvcnRzQXJyYXkqIGFBbm9u
eW1vdXNFbGVtZW50cykgPSAwOwojIDUzMiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9u
c0lQcmVzU2hlbGwuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFub255bW91c0NvbnRlbnRGb3Io
bnNJQ29udGVudCogYUNvbnRlbnQsIG5zSVN1cHBvcnRzQXJyYXkqKiBhQW5vbnltb3VzRWxlbWVu
dHMpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVsZWFzZUFub255bW91c0NvbnRlbnQo
KSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJc1BhaW50aW5nU3VwcHJlc3NlZChQUkJv
b2wqIGFSZXN1bHQpPTA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgVW5zdXBwcmVzc1BhaW50aW5n
KCkgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IERpc2FibGVUaGVtZVN1cHBvcnQoKSA9IDA7
CgoKCgogIHZpcnR1YWwgUFJCb29sIElzVGhlbWVTdXBwb3J0RW5hYmxlZCgpID0gMDsKCgoKCgoK
CiAgc3RhdGljIFBSQm9vbCBHZXRWZXJpZnlSZWZsb3dFbmFibGUoKTsKCgoKCiAgc3RhdGljIHZv
aWQgU2V0VmVyaWZ5UmVmbG93RW5hYmxlKFBSQm9vbCBhRW5hYmxlZCk7CgoKCgogIHN0YXRpYyBQ
UkludDMyIEdldFZlcmlmeVJlZmxvd0ZsYWdzKCk7CiMgNTk2ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvbGF5b3V0L25zSVByZXNTaGVsbC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q2FyZXRCaWRp
TGV2ZWwoUFJVaW50OCBhTGV2ZWwpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDYXJl
dEJpZGlMZXZlbChQUlVpbnQ4ICphT3V0TGV2ZWwpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBVbmRlZmluZUNhcmV0QmlkaUxldmVsKHZvaWQpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBCaWRpU3R5bGVDaGFuZ2VSZWZsb3codm9pZCkgPSAwOwoKCn07CgoKCgoKZXh0ZXJuIG5zcmVz
dWx0CiAgTlNfTmV3UHJlc1NoZWxsKG5zSVByZXNTaGVsbCoqIGFJbnN0YW5jZVB0clJlc3VsdCk7
CiMgNTMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zU3R5bGVTdHJ1Y3QuaCIgMgoK
IyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbG9jYWxlL25zSUxhbmd1YWdlQXRvbS5oIiAxCiMg
MTQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sb2NhbGUvbnNJTGFuZ3VhZ2VBdG9tLmgiCiMgMSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUF0b20uaCIgMQojIDE3ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUveHBjb20vbnNJQXRvbS5oIgpjbGFzcyBuc0lTaXplT2ZIYW5kbGVyOwojIDI5
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJQXRvbS5oIgpjbGFzcyBuc0lBdG9tIDog
cHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJ
SUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDNkMWIxNWIwLCAweDkzYjQsIDB4MTFk
MSwgeyAweDg5LCAweDViLCAweDAwLCAweDYwLCAweDA4LCAweDkxLCAweDFiLCAweDgxIH19OyBy
ZXR1cm4gaWlkO30KCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgVG9TdHJpbmcobnNBU3RyaW5nICYg
X3JldHZhbCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRVbmljb2RlKGNvbnN0IFBS
VW5pY2hhciAqKmFSZXN1bHQpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2l6ZU9mKG5z
SVNpemVPZkhhbmRsZXIgKmFIYW5kbGVyLCBQUlVpbnQzMiAqX3JldHZhbCkgPSAwOwoKfTsKIyAx
NDAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lBdG9tLmgiCmV4dGVybiBuc0lBdG9t
KiBOU19OZXdBdG9tKGNvbnN0IGNoYXIqIGlzb2xhdGluMSk7CmV4dGVybiBuc0lBdG9tKiBOU19O
ZXdQZXJtYW5lbnRBdG9tKGNvbnN0IGNoYXIqIGlzb2xhdGluMSk7CmlubGluZSBhbHJlYWR5X0Fk
ZFJlZmVkPG5zSUF0b20+IGRvX0dldEF0b20oY29uc3QgY2hhciogaXNvbGF0aW4xKQogICAgeyBy
ZXR1cm4gTlNfTmV3QXRvbShpc29sYXRpbjEpOyB9CmlubGluZSBhbHJlYWR5X0FkZFJlZmVkPG5z
SUF0b20+IGRvX0dldFBlcm1hbmVudEF0b20oY29uc3QgY2hhciogaXNvbGF0aW4xKQogICAgeyBy
ZXR1cm4gTlNfTmV3UGVybWFuZW50QXRvbShpc29sYXRpbjEpOyB9CgoKCgpleHRlcm4gbnNJQXRv
bSogTlNfTmV3QXRvbShjb25zdCBQUlVuaWNoYXIqIHVuaWNvZGUpOwpleHRlcm4gbnNJQXRvbSog
TlNfTmV3UGVybWFuZW50QXRvbShjb25zdCBQUlVuaWNoYXIqIHVuaWNvZGUpOwppbmxpbmUgYWxy
ZWFkeV9BZGRSZWZlZDxuc0lBdG9tPiBkb19HZXRBdG9tKGNvbnN0IFBSVW5pY2hhciogdW5pY29k
ZSkKICAgIHsgcmV0dXJuIE5TX05ld0F0b20odW5pY29kZSk7IH0KaW5saW5lIGFscmVhZHlfQWRk
UmVmZWQ8bnNJQXRvbT4gZG9fR2V0UGVybWFuZW50QXRvbShjb25zdCBQUlVuaWNoYXIqIHVuaWNv
ZGUpCiAgICB7IHJldHVybiBOU19OZXdQZXJtYW5lbnRBdG9tKHVuaWNvZGUpOyB9CgoKCmV4dGVy
biBuc0lBdG9tKiBOU19OZXdBdG9tKGNvbnN0IG5zQVN0cmluZyYgYVN0cmluZyk7CmV4dGVybiBu
c0lBdG9tKiBOU19OZXdQZXJtYW5lbnRBdG9tKGNvbnN0IG5zQVN0cmluZyYgYVN0cmluZyk7Cmlu
bGluZSBhbHJlYWR5X0FkZFJlZmVkPG5zSUF0b20+IGRvX0dldEF0b20oY29uc3QgbnNBU3RyaW5n
JiBhU3RyaW5nKQogICAgeyByZXR1cm4gTlNfTmV3QXRvbShhU3RyaW5nKTsgfQppbmxpbmUgYWxy
ZWFkeV9BZGRSZWZlZDxuc0lBdG9tPiBkb19HZXRQZXJtYW5lbnRBdG9tKGNvbnN0IG5zQVN0cmlu
ZyYgYVN0cmluZykKICAgIHsgcmV0dXJuIE5TX05ld1Blcm1hbmVudEF0b20oYVN0cmluZyk7IH0K
CgoKCmV4dGVybiBuc3JlZmNudCBOU19HZXROdW1iZXJPZkF0b21zKHZvaWQpOwojIDE1ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvbG9jYWxlL25zSUxhbmd1YWdlQXRvbS5oIiAyCiMgMjkgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9sb2NhbGUvbnNJTGFuZ3VhZ2VBdG9tLmgiCmNsYXNzIG5zSUxhbmd1
YWdlQXRvbSA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBu
c0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTExZSwgMHgx
NWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwg
MHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldExhbmd1YWdlKFBS
VW5pY2hhciAqICphTGFuZ3VhZ2UpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGFuZ3Vh
Z2VHcm91cChuc0lBdG9tICogKmFMYW5ndWFnZUdyb3VwKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IExhbmd1YWdlSXMoY29uc3QgUFJVbmljaGFyICphTGFuZ3VhZ2UsIFBSQm9vbCAqX3JldHZh
bCkgPSAwOwoKfTsKIyA1NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNTdHlsZVN0
cnVjdC5oIiAyCgpjbGFzcyBuc0lGcmFtZTsKCmVudW0gbnNTdHlsZVN0cnVjdElEIHsKIyA2OCAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNTdHlsZVN0cnVjdC5oIgojIDEgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zU3R5bGVTdHJ1Y3RMaXN0LmgiIDEKIyA1NyAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNTdHlsZVN0cnVjdExpc3QuaCIKZVN0eWxlU3Ry
dWN0X0ZvbnQsCmVTdHlsZVN0cnVjdF9Db2xvciwKZVN0eWxlU3RydWN0X0JhY2tncm91bmQsCmVT
dHlsZVN0cnVjdF9MaXN0LAplU3R5bGVTdHJ1Y3RfUG9zaXRpb24sCmVTdHlsZVN0cnVjdF9UZXh0
LAplU3R5bGVTdHJ1Y3RfVGV4dFJlc2V0LAplU3R5bGVTdHJ1Y3RfRGlzcGxheSwKZVN0eWxlU3Ry
dWN0X1Zpc2liaWxpdHksCmVTdHlsZVN0cnVjdF9Db250ZW50LAplU3R5bGVTdHJ1Y3RfUXVvdGVz
LAplU3R5bGVTdHJ1Y3RfVXNlckludGVyZmFjZSwKZVN0eWxlU3RydWN0X1VJUmVzZXQsCmVTdHls
ZVN0cnVjdF9UYWJsZSwKZVN0eWxlU3RydWN0X1RhYmxlQm9yZGVyLAplU3R5bGVTdHJ1Y3RfTWFy
Z2luLAplU3R5bGVTdHJ1Y3RfUGFkZGluZywKZVN0eWxlU3RydWN0X0JvcmRlciwKZVN0eWxlU3Ry
dWN0X091dGxpbmUsCgplU3R5bGVTdHJ1Y3RfWFVMLAojIDY5ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvY29udGVudC9uc1N0eWxlU3RydWN0LmgiIDIKCgpuc1N0eWxlU3RydWN0SURfTGVuZ3RoCgp9
OwojIDg4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc1N0eWxlU3RydWN0LmgiCnN0
cnVjdCBuc1N0eWxlU3RydWN0IHsKfTsKCgoKc3RydWN0IG5zU3R5bGVGb250IDogcHVibGljIG5z
U3R5bGVTdHJ1Y3QgewogIG5zU3R5bGVGb250KHZvaWQpOwogIH5uc1N0eWxlRm9udCh2b2lkKSB7
fTsKCiAgc3RhdGljIGNvbnN0IG5zU3R5bGVTdHJ1Y3RJRCBHZXRTdHlsZVN0cnVjdElEKCkge3Jl
dHVybiBlU3R5bGVTdHJ1Y3RfRm9udDt9CgogIG5zQ2hhbmdlSGludCBDYWxjRGlmZmVyZW5jZShj
b25zdCBuc1N0eWxlRm9udCYgYU90aGVyKSBjb25zdDsKICBzdGF0aWMgbnNDaGFuZ2VIaW50IENh
bGNGb250RGlmZmVyZW5jZShjb25zdCBuc0ZvbnQmIGFGb250MSwgY29uc3QgbnNGb250JiBhRm9u
dDIpOwoKICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHN6LCBuc0lQcmVzQ29udGV4dCogYUNv
bnRleHQpIHRocm93KCk7CiAgdm9pZCBEZXN0cm95KG5zSVByZXNDb250ZXh0KiBhQ29udGV4dCk7
CgogIFBSVWludDggbUZsYWdzOwogIG5zRm9udCBtRm9udDsKICBuc2Nvb3JkIG1TaXplOwoKCgoK
ICBuc1N0eWxlRm9udChjb25zdCBuc0ZvbnQmIGFGb250KTsKICBuc1N0eWxlRm9udChjb25zdCBu
c1N0eWxlRm9udCYgYVN0eWxlRm9udCk7CiAgbnNTdHlsZUZvbnQobnNJUHJlc0NvbnRleHQqIGFQ
cmVzQ29udGV4dCk7Cn07CgpzdHJ1Y3QgbnNTdHlsZUNvbG9yIDogcHVibGljIG5zU3R5bGVTdHJ1
Y3QgewogIG5zU3R5bGVDb2xvcihuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0KTsKICBuc1N0
eWxlQ29sb3IoY29uc3QgbnNTdHlsZUNvbG9yJiBhT3RoZXIpOwogIH5uc1N0eWxlQ29sb3Iodm9p
ZCkge307CgogIHN0YXRpYyBjb25zdCBuc1N0eWxlU3RydWN0SUQgR2V0U3R5bGVTdHJ1Y3RJRCgp
IHtyZXR1cm4gZVN0eWxlU3RydWN0X0NvbG9yO30KCiAgbnNDaGFuZ2VIaW50IENhbGNEaWZmZXJl
bmNlKGNvbnN0IG5zU3R5bGVDb2xvciYgYU90aGVyKSBjb25zdDsKCiAgdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCBzeiwgbnNJUHJlc0NvbnRleHQqIGFDb250ZXh0KSB0aHJvdygpIHsKICAgIHZv
aWQqIHJlc3VsdCA9IDA7CiAgICBhQ29udGV4dC0+QWxsb2NhdGVGcm9tU2hlbGwoc3osICZyZXN1
bHQpOwogICAgcmV0dXJuIHJlc3VsdDsKICB9CiAgdm9pZCBEZXN0cm95KG5zSVByZXNDb250ZXh0
KiBhQ29udGV4dCkgewogICAgdGhpcy0+fm5zU3R5bGVDb2xvcigpOwogICAgYUNvbnRleHQtPkZy
ZWVUb1NoZWxsKHNpemVvZihuc1N0eWxlQ29sb3IpLCB0aGlzKTsKICB9OwoKCgogIG5zY29sb3Ig
bUNvbG9yOwp9OwoKc3RydWN0IG5zU3R5bGVCYWNrZ3JvdW5kIDogcHVibGljIG5zU3R5bGVTdHJ1
Y3QgewogIG5zU3R5bGVCYWNrZ3JvdW5kKG5zSVByZXNDb250ZXh0KiBhUHJlc0NvbnRleHQpOwog
IG5zU3R5bGVCYWNrZ3JvdW5kKGNvbnN0IG5zU3R5bGVCYWNrZ3JvdW5kJiBhT3RoZXIpOwogIH5u
c1N0eWxlQmFja2dyb3VuZCgpIHt9OwoKICBzdGF0aWMgY29uc3QgbnNTdHlsZVN0cnVjdElEIEdl
dFN0eWxlU3RydWN0SUQoKSB7cmV0dXJuIGVTdHlsZVN0cnVjdF9CYWNrZ3JvdW5kO30KCiAgdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzeiwgbnNJUHJlc0NvbnRleHQqIGFDb250ZXh0KSB0aHJv
dygpIHsKICAgIHZvaWQqIHJlc3VsdCA9IDA7CiAgICBhQ29udGV4dC0+QWxsb2NhdGVGcm9tU2hl
bGwoc3osICZyZXN1bHQpOwogICAgcmV0dXJuIHJlc3VsdDsKICB9CiAgdm9pZCBEZXN0cm95KG5z
SVByZXNDb250ZXh0KiBhQ29udGV4dCkgewogICAgdGhpcy0+fm5zU3R5bGVCYWNrZ3JvdW5kKCk7
CiAgICBhQ29udGV4dC0+RnJlZVRvU2hlbGwoc2l6ZW9mKG5zU3R5bGVCYWNrZ3JvdW5kKSwgdGhp
cyk7CiAgfTsKCiAgbnNDaGFuZ2VIaW50IENhbGNEaWZmZXJlbmNlKGNvbnN0IG5zU3R5bGVCYWNr
Z3JvdW5kJiBhT3RoZXIpIGNvbnN0OwoKCgoKCiAgUFJVaW50OCBtQmFja2dyb3VuZEZsYWdzOwog
IFBSVWludDggbUJhY2tncm91bmRBdHRhY2htZW50IDogNDsKICBQUlVpbnQ4IG1CYWNrZ3JvdW5k
Q2xpcCA6IDM7CiAgUFJVaW50OCBtQmFja2dyb3VuZElubGluZVBvbGljeSA6IDI7CiAgUFJVaW50
OCBtQmFja2dyb3VuZE9yaWdpbiA6IDM7CiAgUFJVaW50OCBtQmFja2dyb3VuZFJlcGVhdCA6IDQ7
CgoKCiAgdW5pb24gewogICAgbnNjb29yZCBtQ29vcmQ7CiAgICBmbG9hdCBtRmxvYXQ7CiAgfSBt
QmFja2dyb3VuZFhQb3NpdGlvbiwKICAgIG1CYWNrZ3JvdW5kWVBvc2l0aW9uOwoKICBuc2NvbG9y
IG1CYWNrZ3JvdW5kQ29sb3I7CiAgbnNTdHJpbmcgbUJhY2tncm91bmRJbWFnZTsKCiAgUFJCb29s
IElzVHJhbnNwYXJlbnQoKSBjb25zdAogIHsKICAgIHJldHVybiAobUJhY2tncm91bmRGbGFncyAm
CiAgICAgICAgICAgICgweDAxIHwgMHgwMikpID09CiAgICAgICAgICAgICgweDAxIHwgMHgwMik7
CiAgfQp9OwojIDIwMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNTdHlsZVN0cnVj
dC5oIgpzdHJ1Y3QgbnNTdHlsZU1hcmdpbjogcHVibGljIG5zU3R5bGVTdHJ1Y3QgewogIG5zU3R5
bGVNYXJnaW4odm9pZCk7CiAgbnNTdHlsZU1hcmdpbihjb25zdCBuc1N0eWxlTWFyZ2luJiBhTWFy
Z2luKTsKICB+bnNTdHlsZU1hcmdpbih2b2lkKSB7fTsKCiAgc3RhdGljIGNvbnN0IG5zU3R5bGVT
dHJ1Y3RJRCBHZXRTdHlsZVN0cnVjdElEKCkge3JldHVybiBlU3R5bGVTdHJ1Y3RfTWFyZ2luO30K
CiAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzeiwgbnNJUHJlc0NvbnRleHQqIGFDb250ZXh0
KSB0aHJvdygpOwogIHZvaWQgRGVzdHJveShuc0lQcmVzQ29udGV4dCogYUNvbnRleHQpOwoKICB2
b2lkIFJlY2FsY0RhdGEoKTsKICBuc0NoYW5nZUhpbnQgQ2FsY0RpZmZlcmVuY2UoY29uc3QgbnNT
dHlsZU1hcmdpbiYgYU90aGVyKSBjb25zdDsKCiAgbnNTdHlsZVNpZGVzIG1NYXJnaW47CgogIFBS
Qm9vbCBHZXRNYXJnaW4obnNNYXJnaW4mIGFNYXJnaW4pIGNvbnN0CiAgewogICAgaWYgKG1IYXND
YWNoZWRNYXJnaW4pIHsKICAgICAgYU1hcmdpbiA9IG1DYWNoZWRNYXJnaW47CiAgICAgIHJldHVy
biAxOwogICAgfQogICAgcmV0dXJuIDA7CiAgfQoKCiAgdm9pZCBDYWxjTWFyZ2luRm9yKGNvbnN0
IG5zSUZyYW1lKiBhRnJhbWUsIG5zTWFyZ2luJiBhTWFyZ2luKSBjb25zdDsKCnByb3RlY3RlZDoK
ICBQUlBhY2tlZEJvb2wgbUhhc0NhY2hlZE1hcmdpbjsKICBuc01hcmdpbiBtQ2FjaGVkTWFyZ2lu
Owp9OwoKCnN0cnVjdCBuc1N0eWxlUGFkZGluZzogcHVibGljIG5zU3R5bGVTdHJ1Y3QgewogIG5z
U3R5bGVQYWRkaW5nKHZvaWQpOwogIG5zU3R5bGVQYWRkaW5nKGNvbnN0IG5zU3R5bGVQYWRkaW5n
JiBhUGFkZGluZyk7CiAgfm5zU3R5bGVQYWRkaW5nKHZvaWQpIHt9OwoKICBzdGF0aWMgY29uc3Qg
bnNTdHlsZVN0cnVjdElEIEdldFN0eWxlU3RydWN0SUQoKSB7cmV0dXJuIGVTdHlsZVN0cnVjdF9Q
YWRkaW5nO30KCiAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzeiwgbnNJUHJlc0NvbnRleHQq
IGFDb250ZXh0KSB0aHJvdygpOwogIHZvaWQgRGVzdHJveShuc0lQcmVzQ29udGV4dCogYUNvbnRl
eHQpOwoKICB2b2lkIFJlY2FsY0RhdGEoKTsKICBuc0NoYW5nZUhpbnQgQ2FsY0RpZmZlcmVuY2Uo
Y29uc3QgbnNTdHlsZVBhZGRpbmcmIGFPdGhlcikgY29uc3Q7CgogIG5zU3R5bGVTaWRlcyBtUGFk
ZGluZzsKCiAgUFJCb29sIEdldFBhZGRpbmcobnNNYXJnaW4mIGFQYWRkaW5nKSBjb25zdAogIHsK
ICAgIGlmIChtSGFzQ2FjaGVkUGFkZGluZykgewogICAgICBhUGFkZGluZyA9IG1DYWNoZWRQYWRk
aW5nOwogICAgICByZXR1cm4gMTsKICAgIH0KICAgIHJldHVybiAwOwogIH0KCgogIHZvaWQgQ2Fs
Y1BhZGRpbmdGb3IoY29uc3QgbnNJRnJhbWUqIGFGcmFtZSwgbnNNYXJnaW4mIGFQYWRkaW5nKSBj
b25zdDsKCnByb3RlY3RlZDoKICBQUlBhY2tlZEJvb2wgbUhhc0NhY2hlZFBhZGRpbmc7CiAgbnNN
YXJnaW4gbUNhY2hlZFBhZGRpbmc7Cn07CgpzdHJ1Y3QgbnNCb3JkZXJDb2xvcnMgewogIG5zQm9y
ZGVyQ29sb3JzKiBtTmV4dDsKICBuc2NvbG9yIG1Db2xvcjsKICBQUkJvb2wgbVRyYW5zcGFyZW50
OwoKICBuc0JvcmRlckNvbG9ycyogQ29weUNvbG9ycygpIHsKICAgIG5zQm9yZGVyQ29sb3JzKiBu
ZXh0ID0gMDsKICAgIGlmIChtTmV4dCkKICAgICAgbmV4dCA9IG1OZXh0LT5Db3B5Q29sb3JzKCk7
CiAgICByZXR1cm4gbmV3IG5zQm9yZGVyQ29sb3JzKG1Db2xvciwgbVRyYW5zcGFyZW50LCBuZXh0
KTsKICB9CgogIG5zQm9yZGVyQ29sb3JzKCkgOm1OZXh0KDApIHsgbUNvbG9yID0gKChuc2NvbG9y
KSAoKDI1NSA8PCAyNCkgfCAoKDApPDwxNikgfCAoKDApPDw4KSB8ICgwKSkpOyB9OwoKICBuc0Jv
cmRlckNvbG9ycyhjb25zdCBuc2NvbG9yJiBhQ29sb3IsIFBSQm9vbCBhVHJhbnNwYXJlbnQsIG5z
Qm9yZGVyQ29sb3JzKiBhTmV4dD0wKSB7CiAgICBtQ29sb3IgPSBhQ29sb3I7CiAgICBtVHJhbnNw
YXJlbnQgPSBhVHJhbnNwYXJlbnQ7CiAgICBtTmV4dCA9IGFOZXh0OwogIH0KCiAgfm5zQm9yZGVy
Q29sb3JzKCkgewogICAgZGVsZXRlIG1OZXh0OwogIH0KCiAgUFJCb29sIEVxdWFscyhuc0JvcmRl
ckNvbG9ycyogYU90aGVyKSB7CiAgICBuc0JvcmRlckNvbG9ycyogYzEgPSB0aGlzOwogICAgbnNC
b3JkZXJDb2xvcnMqIGMyID0gYU90aGVyOwogICAgd2hpbGUgKGMxICYmIGMyKSB7CiAgICAgIGlm
IChjMS0+bUNvbG9yICE9IGMyLT5tQ29sb3IgfHwKICAgICAgICAgIGMxLT5tVHJhbnNwYXJlbnQg
IT0gYzItPm1UcmFuc3BhcmVudCkKICAgICAgICByZXR1cm4gMDsKICAgICAgYzEgPSBjMS0+bU5l
eHQ7CiAgICAgIGMyID0gYzItPm1OZXh0OwogICAgfQogICAgcmV0dXJuICFjMSAmJiAhYzI7CiAg
fQp9OwoKc3RydWN0IG5zU3R5bGVCb3JkZXI6IHB1YmxpYyBuc1N0eWxlU3RydWN0IHsKICBuc1N0
eWxlQm9yZGVyKCkgOm1Cb3JkZXJDb2xvcnMoMCkge307CiAgbnNTdHlsZUJvcmRlcihuc0lQcmVz
Q29udGV4dCogYUNvbnRleHQpOwogIG5zU3R5bGVCb3JkZXIoY29uc3QgbnNTdHlsZUJvcmRlciYg
YUJvcmRlcik7CiAgfm5zU3R5bGVCb3JkZXIodm9pZCkgewogICAgaWYgKG1Cb3JkZXJDb2xvcnMp
IHsKICAgICAgZm9yIChQUkludDMyIGkgPSAwOyBpIDwgNDsgaSsrKQogICAgICAgIGRlbGV0ZSBt
Qm9yZGVyQ29sb3JzW2ldOwogICAgICBkZWxldGUgW11tQm9yZGVyQ29sb3JzOwogICAgfQogIH07
CgogIHN0YXRpYyBjb25zdCBuc1N0eWxlU3RydWN0SUQgR2V0U3R5bGVTdHJ1Y3RJRCgpIHtyZXR1
cm4gZVN0eWxlU3RydWN0X0JvcmRlcjt9CgogIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc3os
IG5zSVByZXNDb250ZXh0KiBhQ29udGV4dCkgdGhyb3coKTsKICB2b2lkIERlc3Ryb3kobnNJUHJl
c0NvbnRleHQqIGFDb250ZXh0KTsKCiAgUFJCb29sIElzQm9yZGVyU2lkZVZpc2libGUoUFJVaW50
OCBhU2lkZSkgY29uc3Q7CiAgdm9pZCBSZWNhbGNEYXRhKCk7CiAgbnNDaGFuZ2VIaW50IENhbGNE
aWZmZXJlbmNlKGNvbnN0IG5zU3R5bGVCb3JkZXImIGFPdGhlcikgY29uc3Q7CgogIG5zU3R5bGVT
aWRlcyBtQm9yZGVyOwogIG5zU3R5bGVTaWRlcyBtQm9yZGVyUmFkaXVzOwogIFBSVWludDggbUZs
b2F0RWRnZTsKICBuc0JvcmRlckNvbG9ycyoqIG1Cb3JkZXJDb2xvcnM7CgogIHZvaWQgRW5zdXJl
Qm9yZGVyQ29sb3JzKCkgewogICAgaWYgKCFtQm9yZGVyQ29sb3JzKSB7CiAgICAgIG1Cb3JkZXJD
b2xvcnMgPSBuZXcgbnNCb3JkZXJDb2xvcnMqWzRdOwogICAgICBpZiAobUJvcmRlckNvbG9ycykK
ICAgICAgICBmb3IgKFBSSW50MzIgaSA9IDA7IGkgPCA0OyBpKyspCiAgICAgICAgICBtQm9yZGVy
Q29sb3JzW2ldID0gMDsKICAgIH0KICB9CgogIHZvaWQgQ2xlYXJCb3JkZXJDb2xvcnMoUFJVaW50
OCBhU2lkZSkgewogICAgaWYgKG1Cb3JkZXJDb2xvcnNbYVNpZGVdKSB7CiAgICAgIGRlbGV0ZSBt
Qm9yZGVyQ29sb3JzW2FTaWRlXTsKICAgICAgbUJvcmRlckNvbG9yc1thU2lkZV0gPSAwOwogICAg
fQogIH0KCiAgUFJCb29sIEdldEJvcmRlcihuc01hcmdpbiYgYUJvcmRlcikgY29uc3QKICB7CiAg
ICBpZiAobUhhc0NhY2hlZEJvcmRlcikgewogICAgICBhQm9yZGVyID0gbUNhY2hlZEJvcmRlcjsK
ICAgICAgcmV0dXJuIDE7CiAgICB9CiAgICByZXR1cm4gMDsKICB9CgogIFBSVWludDggR2V0Qm9y
ZGVyU3R5bGUoUFJVaW50OCBhU2lkZSkgY29uc3QKICB7CiAgICA7CiAgICByZXR1cm4gKG1Cb3Jk
ZXJTdHlsZVthU2lkZV0gJiAweDFGKTsKICB9CgogIHZvaWQgU2V0Qm9yZGVyU3R5bGUoUFJVaW50
OCBhU2lkZSwgUFJVaW50OCBhU3R5bGUpCiAgewogICAgOwogICAgbUJvcmRlclN0eWxlW2FTaWRl
XSAmPSB+MHgxRjsKICAgIG1Cb3JkZXJTdHlsZVthU2lkZV0gfD0gKGFTdHlsZSAmIDB4MUYpOwoK
ICB9CgogIHZvaWQgR2V0Qm9yZGVyQ29sb3IoUFJVaW50OCBhU2lkZSwgbnNjb2xvciYgYUNvbG9y
LAogICAgICAgICAgICAgICAgICAgICAgUFJCb29sJiBhVHJhbnNwYXJlbnQsIFBSQm9vbCYgYUZv
cmVncm91bmQpIGNvbnN0CiAgewogICAgYVRyYW5zcGFyZW50ID0gYUZvcmVncm91bmQgPSAwOwog
ICAgOwogICAgaWYgKChtQm9yZGVyU3R5bGVbYVNpZGVdICYgMHg2MCkgPT0gMCkKICAgICAgYUNv
bG9yID0gbUJvcmRlckNvbG9yW2FTaWRlXTsKICAgIGVsc2UgaWYgKG1Cb3JkZXJTdHlsZVthU2lk
ZV0gJiAweDIwKQogICAgICBhRm9yZWdyb3VuZCA9IDE7CiAgICBlbHNlCiAgICAgIGFUcmFuc3Bh
cmVudCA9IDE7CiAgfQoKICB2b2lkIFNldEJvcmRlckNvbG9yKFBSVWludDggYVNpZGUsIG5zY29s
b3IgYUNvbG9yKQogIHsKICAgIDsKICAgIG1Cb3JkZXJDb2xvclthU2lkZV0gPSBhQ29sb3I7CiAg
ICBtQm9yZGVyU3R5bGVbYVNpZGVdICY9IH4weDYwOwogICAgbUJvcmRlclN0eWxlW2FTaWRlXSB8
PSAweDgwOwogIH0KCiAgdm9pZCBHZXRDb21wb3NpdGVDb2xvcnMoUFJJbnQzMiBhSW5kZXgsIG5z
Qm9yZGVyQ29sb3JzKiogYUNvbG9ycykgY29uc3QKICB7CiAgICBpZiAoIW1Cb3JkZXJDb2xvcnMp
CiAgICAgICphQ29sb3JzID0gMDsKICAgIGVsc2UKICAgICAgKmFDb2xvcnMgPSBtQm9yZGVyQ29s
b3JzW2FJbmRleF07CiAgfQoKICB2b2lkIEFwcGVuZEJvcmRlckNvbG9yKFBSSW50MzIgYUluZGV4
LCBuc2NvbG9yIGFDb2xvciwgUFJCb29sIGFUcmFuc3BhcmVudCkKICB7CiAgICA7CiAgICBuc0Jv
cmRlckNvbG9ycyogY29sb3JFbnRyeSA9IG5ldyBuc0JvcmRlckNvbG9ycyhhQ29sb3IsIGFUcmFu
c3BhcmVudCk7CiAgICBpZiAoIW1Cb3JkZXJDb2xvcnNbYUluZGV4XSkKICAgICAgbUJvcmRlckNv
bG9yc1thSW5kZXhdID0gY29sb3JFbnRyeTsKICAgIGVsc2UgewogICAgICBuc0JvcmRlckNvbG9y
cyogbGFzdCA9IG1Cb3JkZXJDb2xvcnNbYUluZGV4XTsKICAgICAgd2hpbGUgKGxhc3QtPm1OZXh0
KQogICAgICAgIGxhc3QgPSBsYXN0LT5tTmV4dDsKICAgICAgbGFzdC0+bU5leHQgPSBjb2xvckVu
dHJ5OwogICAgfQogICAgbUJvcmRlclN0eWxlW2FJbmRleF0gJj0gfjB4NjA7CiAgICBtQm9yZGVy
U3R5bGVbYUluZGV4XSB8PSAweDgwOwogIH0KCiAgdm9pZCBTZXRCb3JkZXJUcmFuc3BhcmVudChQ
UlVpbnQ4IGFTaWRlKQogIHsKICAgIDsKICAgIG1Cb3JkZXJTdHlsZVthU2lkZV0gJj0gfjB4NjA7
CiAgICBtQm9yZGVyU3R5bGVbYVNpZGVdIHw9ICgweDgwIHwgMHg0MCk7CiAgfQoKICB2b2lkIFNl
dEJvcmRlclRvRm9yZWdyb3VuZChQUlVpbnQ4IGFTaWRlKQogIHsKICAgIDsKICAgIG1Cb3JkZXJT
dHlsZVthU2lkZV0gJj0gfjB4NjA7CiAgICBtQm9yZGVyU3R5bGVbYVNpZGVdIHw9ICgweDgwIHwg
MHgyMCk7CiAgfQoKICB2b2lkIFVuc2V0Qm9yZGVyQ29sb3IoUFJVaW50OCBhU2lkZSkKICB7CiAg
ICA7CiAgICBtQm9yZGVyU3R5bGVbYVNpZGVdICY9IDB4MUY7CiAgfQoKCiAgdm9pZCBDYWxjQm9y
ZGVyRm9yKGNvbnN0IG5zSUZyYW1lKiBhRnJhbWUsIG5zTWFyZ2luJiBhQm9yZGVyKSBjb25zdDsK
ICB2b2lkIENhbGNCb3JkZXJGb3IoY29uc3QgbnNJRnJhbWUqIGFGcmFtZSwgUFJVaW50OCBhU2lk
ZSwgbnNjb29yZCYgYVdpZHRoKSBjb25zdDsKCnByb3RlY3RlZDoKICBQUlBhY2tlZEJvb2wgbUhh
c0NhY2hlZEJvcmRlcjsKICBuc01hcmdpbiBtQ2FjaGVkQm9yZGVyOwoKICBQUlVpbnQ4IG1Cb3Jk
ZXJTdHlsZVs0XTsKICBuc2NvbG9yIG1Cb3JkZXJDb2xvcls0XTsKCgoKICBuc2Nvb3JkIG1Cb3Jk
ZXJXaWR0aHNbM107Cn07CgoKc3RydWN0IG5zU3R5bGVCb3JkZXJQYWRkaW5nOiBwdWJsaWMgbnNT
dHlsZVN0cnVjdCB7CiAgbnNTdHlsZUJvcmRlclBhZGRpbmcodm9pZCkgeyBtSGFzQ2FjaGVkQm9y
ZGVyUGFkZGluZyA9IDA7IH07CiAgfm5zU3R5bGVCb3JkZXJQYWRkaW5nKHZvaWQpIHt9OwoKCgoK
ICBQUkJvb2wgR2V0Qm9yZGVyUGFkZGluZyhuc01hcmdpbiYgYUJvcmRlclBhZGRpbmcpIGNvbnN0
IHsKICAgIGlmIChtSGFzQ2FjaGVkQm9yZGVyUGFkZGluZykgewogICAgICBhQm9yZGVyUGFkZGlu
ZyA9IG1DYWNoZWRCb3JkZXJQYWRkaW5nOwogICAgICByZXR1cm4gMTsKICAgIH0KICAgIHJldHVy
biAwOwogIH0KCiAgdm9pZCBTZXRCb3JkZXJQYWRkaW5nKG5zTWFyZ2luIGFCb3JkZXJQYWRkaW5n
KSB7CiAgICBtQ2FjaGVkQm9yZGVyUGFkZGluZyA9IGFCb3JkZXJQYWRkaW5nOwogICAgbUhhc0Nh
Y2hlZEJvcmRlclBhZGRpbmcgPSAxOwogIH0KCnByb3RlY3RlZDoKICBuc01hcmdpbiBtQ2FjaGVk
Qm9yZGVyUGFkZGluZzsKICBQUlBhY2tlZEJvb2wgbUhhc0NhY2hlZEJvcmRlclBhZGRpbmc7Cn07
CgoKc3RydWN0IG5zU3R5bGVPdXRsaW5lOiBwdWJsaWMgbnNTdHlsZVN0cnVjdCB7CiAgbnNTdHls
ZU91dGxpbmUobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCk7CiAgbnNTdHlsZU91dGxpbmUo
Y29uc3QgbnNTdHlsZU91dGxpbmUmIGFPdXRsaW5lKTsKICB+bnNTdHlsZU91dGxpbmUodm9pZCkg
e307CgogIHN0YXRpYyBjb25zdCBuc1N0eWxlU3RydWN0SUQgR2V0U3R5bGVTdHJ1Y3RJRCgpIHty
ZXR1cm4gZVN0eWxlU3RydWN0X091dGxpbmU7fQoKICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
IHN6LCBuc0lQcmVzQ29udGV4dCogYUNvbnRleHQpIHRocm93KCkgewogICAgdm9pZCogcmVzdWx0
ID0gMDsKICAgIGFDb250ZXh0LT5BbGxvY2F0ZUZyb21TaGVsbChzeiwgJnJlc3VsdCk7CiAgICBy
ZXR1cm4gcmVzdWx0OwogIH0KICB2b2lkIERlc3Ryb3kobnNJUHJlc0NvbnRleHQqIGFDb250ZXh0
KSB7CiAgICB0aGlzLT5+bnNTdHlsZU91dGxpbmUoKTsKICAgIGFDb250ZXh0LT5GcmVlVG9TaGVs
bChzaXplb2YobnNTdHlsZU91dGxpbmUpLCB0aGlzKTsKICB9OwoKICB2b2lkIFJlY2FsY0RhdGEo
KTsKICBuc0NoYW5nZUhpbnQgQ2FsY0RpZmZlcmVuY2UoY29uc3QgbnNTdHlsZU91dGxpbmUmIGFP
dGhlcikgY29uc3Q7CgogIG5zU3R5bGVTaWRlcyBtT3V0bGluZVJhZGl1czsKCgogIG5zU3R5bGVD
b29yZCBtT3V0bGluZVdpZHRoOwoKICBQUkJvb2wgR2V0T3V0bGluZVdpZHRoKG5zY29vcmQmIGFX
aWR0aCkgY29uc3QKICB7CiAgICBpZiAobUhhc0NhY2hlZE91dGxpbmUpIHsKICAgICAgYVdpZHRo
ID0gbUNhY2hlZE91dGxpbmVXaWR0aDsKICAgICAgcmV0dXJuIDE7CiAgICB9CiAgICByZXR1cm4g
MDsKICB9CgogIFBSVWludDggR2V0T3V0bGluZVN0eWxlKHZvaWQpIGNvbnN0CiAgewogICAgcmV0
dXJuIChtT3V0bGluZVN0eWxlICYgMHgxRik7CiAgfQoKICB2b2lkIFNldE91dGxpbmVTdHlsZShQ
UlVpbnQ4IGFTdHlsZSkKICB7CiAgICBtT3V0bGluZVN0eWxlICY9IH4weDFGOwogICAgbU91dGxp
bmVTdHlsZSB8PSAoYVN0eWxlICYgMHgxRik7CiAgfQoKCiAgUFJCb29sIEdldE91dGxpbmVDb2xv
cihuc2NvbG9yJiBhQ29sb3IpIGNvbnN0CiAgewogICAgaWYgKChtT3V0bGluZVN0eWxlICYgMHg2
MCkgPT0gMCkgewogICAgICBhQ29sb3IgPSBtT3V0bGluZUNvbG9yOwogICAgICByZXR1cm4gMTsK
ICAgIH0KICAgIHJldHVybiAwOwogIH0KCiAgdm9pZCBTZXRPdXRsaW5lQ29sb3IobnNjb2xvciBh
Q29sb3IpCiAgewogICAgbU91dGxpbmVDb2xvciA9IGFDb2xvcjsKICAgIG1PdXRsaW5lU3R5bGUg
Jj0gfjB4NjA7CiAgICBtT3V0bGluZVN0eWxlIHw9IDB4ODA7CiAgfQoKICB2b2lkIFNldE91dGxp
bmVJbnZlcnQodm9pZCkKICB7CiAgICBtT3V0bGluZVN0eWxlIHw9ICgweDgwIHwgMHg2MCk7CiAg
fQoKICBQUkJvb2wgR2V0T3V0bGluZUludmVydCh2b2lkKSBjb25zdAogIHsKICAgIHJldHVybiht
T3V0bGluZVN0eWxlICYgMHg2MCk7CiAgfQoKcHJvdGVjdGVkOgogIG5zY29vcmQgbUNhY2hlZE91
dGxpbmVXaWR0aDsKCiAgbnNjb2xvciBtT3V0bGluZUNvbG9yOwoKCiAgbnNjb29yZCBtQm9yZGVy
V2lkdGhzWzNdOwoKICBQUlBhY2tlZEJvb2wgbUhhc0NhY2hlZE91dGxpbmU7CiAgUFJVaW50OCBt
T3V0bGluZVN0eWxlOwp9OwoKCnN0cnVjdCBuc1N0eWxlTGlzdCA6IHB1YmxpYyBuc1N0eWxlU3Ry
dWN0IHsKICBuc1N0eWxlTGlzdCh2b2lkKTsKICBuc1N0eWxlTGlzdChjb25zdCBuc1N0eWxlTGlz
dCYgYVN0eWxlTGlzdCk7CiAgfm5zU3R5bGVMaXN0KHZvaWQpOwoKICBzdGF0aWMgY29uc3QgbnNT
dHlsZVN0cnVjdElEIEdldFN0eWxlU3RydWN0SUQoKSB7cmV0dXJuIGVTdHlsZVN0cnVjdF9MaXN0
O30KCiAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzeiwgbnNJUHJlc0NvbnRleHQqIGFDb250
ZXh0KSB0aHJvdygpIHsKICAgIHZvaWQqIHJlc3VsdCA9IDA7CiAgICBhQ29udGV4dC0+QWxsb2Nh
dGVGcm9tU2hlbGwoc3osICZyZXN1bHQpOwogICAgcmV0dXJuIHJlc3VsdDsKICB9CiAgdm9pZCBE
ZXN0cm95KG5zSVByZXNDb250ZXh0KiBhQ29udGV4dCkgewogICAgdGhpcy0+fm5zU3R5bGVMaXN0
KCk7CiAgICBhQ29udGV4dC0+RnJlZVRvU2hlbGwoc2l6ZW9mKG5zU3R5bGVMaXN0KSwgdGhpcyk7
CiAgfTsKCiAgbnNDaGFuZ2VIaW50IENhbGNEaWZmZXJlbmNlKGNvbnN0IG5zU3R5bGVMaXN0JiBh
T3RoZXIpIGNvbnN0OwoKICBQUlVpbnQ4IG1MaXN0U3R5bGVUeXBlOwogIFBSVWludDggbUxpc3RT
dHlsZVBvc2l0aW9uOwogIG5zU3RyaW5nIG1MaXN0U3R5bGVJbWFnZTsKICBuc1JlY3QgbUltYWdl
UmVnaW9uOwp9OwoKc3RydWN0IG5zU3R5bGVQb3NpdGlvbiA6IHB1YmxpYyBuc1N0eWxlU3RydWN0
IHsKICBuc1N0eWxlUG9zaXRpb24odm9pZCk7CiAgbnNTdHlsZVBvc2l0aW9uKGNvbnN0IG5zU3R5
bGVQb3NpdGlvbiYgYU90aGVyKTsKICB+bnNTdHlsZVBvc2l0aW9uKHZvaWQpOwoKICBzdGF0aWMg
Y29uc3QgbnNTdHlsZVN0cnVjdElEIEdldFN0eWxlU3RydWN0SUQoKSB7cmV0dXJuIGVTdHlsZVN0
cnVjdF9Qb3NpdGlvbjt9CgogIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc3osIG5zSVByZXND
b250ZXh0KiBhQ29udGV4dCkgdGhyb3coKSB7CiAgICB2b2lkKiByZXN1bHQgPSAwOwogICAgYUNv
bnRleHQtPkFsbG9jYXRlRnJvbVNoZWxsKHN6LCAmcmVzdWx0KTsKICAgIHJldHVybiByZXN1bHQ7
CiAgfQogIHZvaWQgRGVzdHJveShuc0lQcmVzQ29udGV4dCogYUNvbnRleHQpIHsKICAgIHRoaXMt
Pn5uc1N0eWxlUG9zaXRpb24oKTsKICAgIGFDb250ZXh0LT5GcmVlVG9TaGVsbChzaXplb2YobnNT
dHlsZVBvc2l0aW9uKSwgdGhpcyk7CiAgfTsKCiAgbnNDaGFuZ2VIaW50IENhbGNEaWZmZXJlbmNl
KGNvbnN0IG5zU3R5bGVQb3NpdGlvbiYgYU90aGVyKSBjb25zdDsKCiAgbnNTdHlsZVNpZGVzIG1P
ZmZzZXQ7CiAgbnNTdHlsZUNvb3JkIG1XaWR0aDsKICBuc1N0eWxlQ29vcmQgbU1pbldpZHRoOwog
IG5zU3R5bGVDb29yZCBtTWF4V2lkdGg7CiAgbnNTdHlsZUNvb3JkIG1IZWlnaHQ7CiAgbnNTdHls
ZUNvb3JkIG1NaW5IZWlnaHQ7CiAgbnNTdHlsZUNvb3JkIG1NYXhIZWlnaHQ7CiAgUFJVaW50OCBt
Qm94U2l6aW5nOwogIG5zU3R5bGVDb29yZCBtWkluZGV4Owp9OwoKc3RydWN0IG5zU3R5bGVUZXh0
UmVzZXQgOiBwdWJsaWMgbnNTdHlsZVN0cnVjdCB7CiAgbnNTdHlsZVRleHRSZXNldCh2b2lkKTsK
ICBuc1N0eWxlVGV4dFJlc2V0KGNvbnN0IG5zU3R5bGVUZXh0UmVzZXQmIGFPdGhlcik7CiAgfm5z
U3R5bGVUZXh0UmVzZXQodm9pZCk7CgogIHN0YXRpYyBjb25zdCBuc1N0eWxlU3RydWN0SUQgR2V0
U3R5bGVTdHJ1Y3RJRCgpIHtyZXR1cm4gZVN0eWxlU3RydWN0X1RleHRSZXNldDt9CgogIHZvaWQq
IG9wZXJhdG9yIG5ldyhzaXplX3Qgc3osIG5zSVByZXNDb250ZXh0KiBhQ29udGV4dCkgdGhyb3co
KSB7CiAgICB2b2lkKiByZXN1bHQgPSAwOwogICAgYUNvbnRleHQtPkFsbG9jYXRlRnJvbVNoZWxs
KHN6LCAmcmVzdWx0KTsKICAgIHJldHVybiByZXN1bHQ7CiAgfQogIHZvaWQgRGVzdHJveShuc0lQ
cmVzQ29udGV4dCogYUNvbnRleHQpIHsKICAgIHRoaXMtPn5uc1N0eWxlVGV4dFJlc2V0KCk7CiAg
ICBhQ29udGV4dC0+RnJlZVRvU2hlbGwoc2l6ZW9mKG5zU3R5bGVUZXh0UmVzZXQpLCB0aGlzKTsK
ICB9OwoKICBuc0NoYW5nZUhpbnQgQ2FsY0RpZmZlcmVuY2UoY29uc3QgbnNTdHlsZVRleHRSZXNl
dCYgYU90aGVyKSBjb25zdDsKCiAgUFJVaW50OCBtVGV4dERlY29yYXRpb247CiAgUFJVaW50OCBt
VW5pY29kZUJpZGk7CgogIG5zU3R5bGVDb29yZCBtVmVydGljYWxBbGlnbjsKfTsKCnN0cnVjdCBu
c1N0eWxlVGV4dCA6IHB1YmxpYyBuc1N0eWxlU3RydWN0IHsKICBuc1N0eWxlVGV4dCh2b2lkKTsK
ICBuc1N0eWxlVGV4dChjb25zdCBuc1N0eWxlVGV4dCYgYU90aGVyKTsKICB+bnNTdHlsZVRleHQo
dm9pZCk7CgogIHN0YXRpYyBjb25zdCBuc1N0eWxlU3RydWN0SUQgR2V0U3R5bGVTdHJ1Y3RJRCgp
IHtyZXR1cm4gZVN0eWxlU3RydWN0X1RleHQ7fQoKICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
IHN6LCBuc0lQcmVzQ29udGV4dCogYUNvbnRleHQpIHRocm93KCkgewogICAgdm9pZCogcmVzdWx0
ID0gMDsKICAgIGFDb250ZXh0LT5BbGxvY2F0ZUZyb21TaGVsbChzeiwgJnJlc3VsdCk7CiAgICBy
ZXR1cm4gcmVzdWx0OwogIH0KICB2b2lkIERlc3Ryb3kobnNJUHJlc0NvbnRleHQqIGFDb250ZXh0
KSB7CiAgICB0aGlzLT5+bnNTdHlsZVRleHQoKTsKICAgIGFDb250ZXh0LT5GcmVlVG9TaGVsbChz
aXplb2YobnNTdHlsZVRleHQpLCB0aGlzKTsKICB9OwoKICBuc0NoYW5nZUhpbnQgQ2FsY0RpZmZl
cmVuY2UoY29uc3QgbnNTdHlsZVRleHQmIGFPdGhlcikgY29uc3Q7CgogIFBSVWludDggbVRleHRB
bGlnbjsKICBQUlVpbnQ4IG1UZXh0VHJhbnNmb3JtOwogIFBSVWludDggbVdoaXRlU3BhY2U7Cgog
IG5zU3R5bGVDb29yZCBtTGV0dGVyU3BhY2luZzsKICBuc1N0eWxlQ29vcmQgbUxpbmVIZWlnaHQ7
CiAgbnNTdHlsZUNvb3JkIG1UZXh0SW5kZW50OwogIG5zU3R5bGVDb29yZCBtV29yZFNwYWNpbmc7
CgogIFBSQm9vbCBXaGl0ZVNwYWNlSXNTaWduaWZpY2FudCgpIGNvbnN0IHsKICAgIHJldHVybiBt
V2hpdGVTcGFjZSA9PSAxIHx8CiAgICAgICAgICAgbVdoaXRlU3BhY2UgPT0gMzsKICB9Cn07Cgpz
dHJ1Y3QgbnNTdHlsZVZpc2liaWxpdHkgOiBwdWJsaWMgbnNTdHlsZVN0cnVjdCB7CiAgbnNTdHls
ZVZpc2liaWxpdHkobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCk7CiAgbnNTdHlsZVZpc2li
aWxpdHkoY29uc3QgbnNTdHlsZVZpc2liaWxpdHkmIGFWaXNpYmlsaXR5KTsKICB+bnNTdHlsZVZp
c2liaWxpdHkoKSB7fTsKCiAgc3RhdGljIGNvbnN0IG5zU3R5bGVTdHJ1Y3RJRCBHZXRTdHlsZVN0
cnVjdElEKCkge3JldHVybiBlU3R5bGVTdHJ1Y3RfVmlzaWJpbGl0eTt9CgogIHZvaWQqIG9wZXJh
dG9yIG5ldyhzaXplX3Qgc3osIG5zSVByZXNDb250ZXh0KiBhQ29udGV4dCkgdGhyb3coKSB7CiAg
ICB2b2lkKiByZXN1bHQgPSAwOwogICAgYUNvbnRleHQtPkFsbG9jYXRlRnJvbVNoZWxsKHN6LCAm
cmVzdWx0KTsKICAgIHJldHVybiByZXN1bHQ7CiAgfQogIHZvaWQgRGVzdHJveShuc0lQcmVzQ29u
dGV4dCogYUNvbnRleHQpIHsKICAgIHRoaXMtPn5uc1N0eWxlVmlzaWJpbGl0eSgpOwogICAgYUNv
bnRleHQtPkZyZWVUb1NoZWxsKHNpemVvZihuc1N0eWxlVmlzaWJpbGl0eSksIHRoaXMpOwogIH07
CgogIG5zQ2hhbmdlSGludCBDYWxjRGlmZmVyZW5jZShjb25zdCBuc1N0eWxlVmlzaWJpbGl0eSYg
YU90aGVyKSBjb25zdDsKCiAgUFJVaW50OCBtRGlyZWN0aW9uOwogIFBSVWludDggbVZpc2libGU7
CiAgbnNDT01QdHI8bnNJTGFuZ3VhZ2VBdG9tPiBtTGFuZ3VhZ2U7CiAgZmxvYXQgbU9wYWNpdHk7
CgogIFBSQm9vbCBJc1Zpc2libGUoKSBjb25zdCB7CiAgICAgICAgICAgICAgICByZXR1cm4gKG1W
aXNpYmxlID09IDEpOwogICAgICAgIH0KCiAgICAgICAgUFJCb29sIElzVmlzaWJsZU9yQ29sbGFw
c2VkKCkgY29uc3QgewogICAgICAgICAgICAgICAgcmV0dXJuICgobVZpc2libGUgPT0gMSkgfHwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1WaXNpYmxl
ID09IDIpKTsKICAgICAgICB9Cn07CgpzdHJ1Y3QgbnNTdHlsZURpc3BsYXkgOiBwdWJsaWMgbnNT
dHlsZVN0cnVjdCB7CiAgbnNTdHlsZURpc3BsYXkoKTsKICBuc1N0eWxlRGlzcGxheShjb25zdCBu
c1N0eWxlRGlzcGxheSYgYU90aGVyKTsKICB+bnNTdHlsZURpc3BsYXkoKSB7fTsKCiAgc3RhdGlj
IGNvbnN0IG5zU3R5bGVTdHJ1Y3RJRCBHZXRTdHlsZVN0cnVjdElEKCkge3JldHVybiBlU3R5bGVT
dHJ1Y3RfRGlzcGxheTt9CgogIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc3osIG5zSVByZXND
b250ZXh0KiBhQ29udGV4dCkgdGhyb3coKSB7CiAgICB2b2lkKiByZXN1bHQgPSAwOwogICAgYUNv
bnRleHQtPkFsbG9jYXRlRnJvbVNoZWxsKHN6LCAmcmVzdWx0KTsKICAgIHJldHVybiByZXN1bHQ7
CiAgfQogIHZvaWQgRGVzdHJveShuc0lQcmVzQ29udGV4dCogYUNvbnRleHQpIHsKICAgIHRoaXMt
Pn5uc1N0eWxlRGlzcGxheSgpOwogICAgYUNvbnRleHQtPkZyZWVUb1NoZWxsKHNpemVvZihuc1N0
eWxlRGlzcGxheSksIHRoaXMpOwogIH07CgogIG5zQ2hhbmdlSGludCBDYWxjRGlmZmVyZW5jZShj
b25zdCBuc1N0eWxlRGlzcGxheSYgYU90aGVyKSBjb25zdDsKCiAgbnNTdHJpbmcgbUJpbmRpbmc7
CgoKCgoKCiAgbnNSZWN0IG1DbGlwOwoKICBQUlVpbnQ4IG1EaXNwbGF5OwogIFBSVWludDggbU9y
aWdpbmFsRGlzcGxheTsKICBQUlVpbnQ4IG1BcHBlYXJhbmNlOwogIFBSVWludDggbVBvc2l0aW9u
OwogIFBSVWludDggbUZsb2F0czsKICBQUlVpbnQ4IG1CcmVha1R5cGU7CiAgUFJQYWNrZWRCb29s
IG1CcmVha0JlZm9yZTsKICBQUlBhY2tlZEJvb2wgbUJyZWFrQWZ0ZXI7CiAgUFJVaW50OCBtT3Zl
cmZsb3c7CgogIFBSVWludDggbUNsaXBGbGFnczsKCiAgUFJCb29sIElzQmxvY2tMZXZlbCgpIGNv
bnN0IHtyZXR1cm4gKDEgPT0gbURpc3BsYXkpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKDQgPT0gbURpc3BsYXkpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKDggPT0gbURpc3BsYXkpO30KCiAgUFJCb29sIElzRmxvYXRpbmcoKSBjb25z
dCB7CiAgICByZXR1cm4gMCAhPSBtRmxvYXRzOwogIH0KCiAgUFJCb29sIElzQWJzb2x1dGVseVBv
c2l0aW9uZWQoKSBjb25zdCB7cmV0dXJuICgyID09IG1Qb3NpdGlvbikgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDMgPT0gbVBvc2l0aW9uKTt9Cgog
IFBSQm9vbCBJc1Bvc2l0aW9uZWQoKSBjb25zdCB7cmV0dXJuIElzQWJzb2x1dGVseVBvc2l0aW9u
ZWQoKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxID09IG1Qb3Np
dGlvbik7fQp9OwoKc3RydWN0IG5zU3R5bGVUYWJsZTogcHVibGljIG5zU3R5bGVTdHJ1Y3Qgewog
IG5zU3R5bGVUYWJsZSh2b2lkKTsKICBuc1N0eWxlVGFibGUoY29uc3QgbnNTdHlsZVRhYmxlJiBh
T3RoZXIpOwogIH5uc1N0eWxlVGFibGUodm9pZCk7CgogIHN0YXRpYyBjb25zdCBuc1N0eWxlU3Ry
dWN0SUQgR2V0U3R5bGVTdHJ1Y3RJRCgpIHtyZXR1cm4gZVN0eWxlU3RydWN0X1RhYmxlO30KCiAg
dm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzeiwgbnNJUHJlc0NvbnRleHQqIGFDb250ZXh0KSB0
aHJvdygpIHsKICAgIHZvaWQqIHJlc3VsdCA9IDA7CiAgICBhQ29udGV4dC0+QWxsb2NhdGVGcm9t
U2hlbGwoc3osICZyZXN1bHQpOwogICAgcmV0dXJuIHJlc3VsdDsKICB9CiAgdm9pZCBEZXN0cm95
KG5zSVByZXNDb250ZXh0KiBhQ29udGV4dCkgewogICAgdGhpcy0+fm5zU3R5bGVUYWJsZSgpOwog
ICAgYUNvbnRleHQtPkZyZWVUb1NoZWxsKHNpemVvZihuc1N0eWxlVGFibGUpLCB0aGlzKTsKICB9
OwoKICBuc0NoYW5nZUhpbnQgQ2FsY0RpZmZlcmVuY2UoY29uc3QgbnNTdHlsZVRhYmxlJiBhT3Ro
ZXIpIGNvbnN0OwoKICBQUlVpbnQ4IG1MYXlvdXRTdHJhdGVneTsKICBQUlVpbnQ4IG1GcmFtZTsK
ICBQUlVpbnQ4IG1SdWxlczsKICBQUkludDMyIG1Db2xzOwogIFBSSW50MzIgbVNwYW47Cn07Cgpz
dHJ1Y3QgbnNTdHlsZVRhYmxlQm9yZGVyOiBwdWJsaWMgbnNTdHlsZVN0cnVjdCB7CiAgbnNTdHls
ZVRhYmxlQm9yZGVyKG5zSVByZXNDb250ZXh0KiBhQ29udGV4dCk7CiAgbnNTdHlsZVRhYmxlQm9y
ZGVyKGNvbnN0IG5zU3R5bGVUYWJsZUJvcmRlciYgYU90aGVyKTsKICB+bnNTdHlsZVRhYmxlQm9y
ZGVyKHZvaWQpOwoKICBzdGF0aWMgY29uc3QgbnNTdHlsZVN0cnVjdElEIEdldFN0eWxlU3RydWN0
SUQoKSB7cmV0dXJuIGVTdHlsZVN0cnVjdF9UYWJsZUJvcmRlcjt9CgogIHZvaWQqIG9wZXJhdG9y
IG5ldyhzaXplX3Qgc3osIG5zSVByZXNDb250ZXh0KiBhQ29udGV4dCkgdGhyb3coKSB7CiAgICB2
b2lkKiByZXN1bHQgPSAwOwogICAgYUNvbnRleHQtPkFsbG9jYXRlRnJvbVNoZWxsKHN6LCAmcmVz
dWx0KTsKICAgIHJldHVybiByZXN1bHQ7CiAgfQogIHZvaWQgRGVzdHJveShuc0lQcmVzQ29udGV4
dCogYUNvbnRleHQpIHsKICAgIHRoaXMtPn5uc1N0eWxlVGFibGVCb3JkZXIoKTsKICAgIGFDb250
ZXh0LT5GcmVlVG9TaGVsbChzaXplb2YobnNTdHlsZVRhYmxlQm9yZGVyKSwgdGhpcyk7CiAgfTsK
CiAgbnNDaGFuZ2VIaW50IENhbGNEaWZmZXJlbmNlKGNvbnN0IG5zU3R5bGVUYWJsZUJvcmRlciYg
YU90aGVyKSBjb25zdDsKCiAgbnNTdHlsZUNvb3JkIG1Cb3JkZXJTcGFjaW5nWDsKICBuc1N0eWxl
Q29vcmQgbUJvcmRlclNwYWNpbmdZOwogIFBSVWludDggbUJvcmRlckNvbGxhcHNlOwogIFBSVWlu
dDggbUNhcHRpb25TaWRlOwogIFBSVWludDggbUVtcHR5Q2VsbHM7Cn07CgplbnVtIG5zU3R5bGVD
b250ZW50VHlwZSB7CiAgZVN0eWxlQ29udGVudFR5cGVfU3RyaW5nID0gMSwKICBlU3R5bGVDb250
ZW50VHlwZV9VUkwgPSAxMCwKICBlU3R5bGVDb250ZW50VHlwZV9BdHRyID0gMjAsCiAgZVN0eWxl
Q29udGVudFR5cGVfQ291bnRlciA9IDMwLAogIGVTdHlsZUNvbnRlbnRUeXBlX0NvdW50ZXJzID0g
MzEsCiAgZVN0eWxlQ29udGVudFR5cGVfT3BlblF1b3RlID0gNDAsCiAgZVN0eWxlQ29udGVudFR5
cGVfQ2xvc2VRdW90ZSA9IDQxLAogIGVTdHlsZUNvbnRlbnRUeXBlX05vT3BlblF1b3RlID0gNDIs
CiAgZVN0eWxlQ29udGVudFR5cGVfTm9DbG9zZVF1b3RlID0gNDMKfTsKCnN0cnVjdCBuc1N0eWxl
Q29udGVudERhdGEgewogIG5zU3R5bGVDb250ZW50VHlwZSBtVHlwZTsKICBuc1N0cmluZyBtQ29u
dGVudDsKfTsKCnN0cnVjdCBuc1N0eWxlQ291bnRlckRhdGEgewogIG5zU3RyaW5nIG1Db3VudGVy
OwogIFBSSW50MzIgbVZhbHVlOwp9OwoKCgoKc3RydWN0IG5zU3R5bGVRdW90ZXMgOiBwdWJsaWMg
bnNTdHlsZVN0cnVjdCB7CiAgbnNTdHlsZVF1b3RlcygpOwogIG5zU3R5bGVRdW90ZXMoY29uc3Qg
bnNTdHlsZVF1b3RlcyYgYVF1b3Rlcyk7CiAgfm5zU3R5bGVRdW90ZXMoKTsKCiAgc3RhdGljIGNv
bnN0IG5zU3R5bGVTdHJ1Y3RJRCBHZXRTdHlsZVN0cnVjdElEKCkge3JldHVybiBlU3R5bGVTdHJ1
Y3RfUXVvdGVzO30KCiAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzeiwgbnNJUHJlc0NvbnRl
eHQqIGFDb250ZXh0KSB0aHJvdygpIHsKICAgIHZvaWQqIHJlc3VsdCA9IDA7CiAgICBhQ29udGV4
dC0+QWxsb2NhdGVGcm9tU2hlbGwoc3osICZyZXN1bHQpOwogICAgcmV0dXJuIHJlc3VsdDsKICB9
CiAgdm9pZCBEZXN0cm95KG5zSVByZXNDb250ZXh0KiBhQ29udGV4dCkgewogICAgdGhpcy0+fm5z
U3R5bGVRdW90ZXMoKTsKICAgIGFDb250ZXh0LT5GcmVlVG9TaGVsbChzaXplb2YobnNTdHlsZVF1
b3RlcyksIHRoaXMpOwogIH07CgogIG5zQ2hhbmdlSGludCBDYWxjRGlmZmVyZW5jZShjb25zdCBu
c1N0eWxlUXVvdGVzJiBhT3RoZXIpIGNvbnN0OwoKCiAgUFJVaW50MzIgUXVvdGVzQ291bnQodm9p
ZCkgY29uc3QgeyByZXR1cm4gbVF1b3Rlc0NvdW50OyB9CiAgbnNyZXN1bHQgR2V0UXVvdGVzQXQo
UFJVaW50MzIgYUluZGV4LCBuc1N0cmluZyYgYU9wZW4sIG5zU3RyaW5nJiBhQ2xvc2UpIGNvbnN0
IHsKICAgIGlmIChhSW5kZXggPCBtUXVvdGVzQ291bnQpIHsKICAgICAgYUluZGV4ICo9IDI7CiAg
ICAgIGFPcGVuID0gbVF1b3Rlc1thSW5kZXhdOwogICAgICBhQ2xvc2UgPSBtUXVvdGVzWysrYUlu
ZGV4XTsKICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDA3
MDA1N0wpOwogIH0KCiAgbnNyZXN1bHQgQWxsb2NhdGVRdW90ZXMoUFJVaW50MzIgYUNvdW50KSB7
CiAgICBpZiAoYUNvdW50ICE9IG1RdW90ZXNDb3VudCkgewogICAgICBpZiAobVF1b3RlcykgeyBk
ZWxldGVbXSBtUXVvdGVzOyBtUXVvdGVzID0gMDsgfTsKICAgICAgaWYgKGFDb3VudCkgewogICAg
ICAgIG1RdW90ZXMgPSBuZXcgbnNTdHJpbmdbYUNvdW50ICogMl07CiAgICAgICAgaWYgKCEgbVF1
b3RlcykgewogICAgICAgICAgbVF1b3Rlc0NvdW50ID0gMDsKICAgICAgICAgIHJldHVybiAoKG5z
cmVzdWx0KSAweDgwMDcwMDBlTCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIG1RdW90ZXNDb3Vu
dCA9IGFDb3VudDsKICAgIH0KICAgIHJldHVybiAwOwogIH0KCiAgbnNyZXN1bHQgU2V0UXVvdGVz
QXQoUFJVaW50MzIgYUluZGV4LCBjb25zdCBuc1N0cmluZyYgYU9wZW4sIGNvbnN0IG5zU3RyaW5n
JiBhQ2xvc2UpIHsKICAgIGlmIChhSW5kZXggPCBtUXVvdGVzQ291bnQpIHsKICAgICAgYUluZGV4
ICo9IDI7CiAgICAgIG1RdW90ZXNbYUluZGV4XSA9IGFPcGVuOwogICAgICBtUXVvdGVzWysrYUlu
ZGV4XSA9IGFDbG9zZTsKICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICByZXR1cm4gKChuc3Jlc3Vs
dCkgMHg4MDA3MDA1N0wpOwogIH0KCnByb3RlY3RlZDoKICBQUlVpbnQzMiBtUXVvdGVzQ291bnQ7
CiAgbnNTdHJpbmcqIG1RdW90ZXM7Cn07CgpzdHJ1Y3QgbnNTdHlsZUNvbnRlbnQ6IHB1YmxpYyBu
c1N0eWxlU3RydWN0IHsKICBuc1N0eWxlQ29udGVudCh2b2lkKTsKICBuc1N0eWxlQ29udGVudChj
b25zdCBuc1N0eWxlQ29udGVudCYgYUNvbnRlbnQpOwogIH5uc1N0eWxlQ29udGVudCh2b2lkKTsK
CiAgc3RhdGljIGNvbnN0IG5zU3R5bGVTdHJ1Y3RJRCBHZXRTdHlsZVN0cnVjdElEKCkge3JldHVy
biBlU3R5bGVTdHJ1Y3RfQ29udGVudDt9CgogIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc3os
IG5zSVByZXNDb250ZXh0KiBhQ29udGV4dCkgdGhyb3coKSB7CiAgICB2b2lkKiByZXN1bHQgPSAw
OwogICAgYUNvbnRleHQtPkFsbG9jYXRlRnJvbVNoZWxsKHN6LCAmcmVzdWx0KTsKICAgIHJldHVy
biByZXN1bHQ7CiAgfQogIHZvaWQgRGVzdHJveShuc0lQcmVzQ29udGV4dCogYUNvbnRleHQpIHsK
ICAgIHRoaXMtPn5uc1N0eWxlQ29udGVudCgpOwogICAgYUNvbnRleHQtPkZyZWVUb1NoZWxsKHNp
emVvZihuc1N0eWxlQ29udGVudCksIHRoaXMpOwogIH07CgogIG5zQ2hhbmdlSGludCBDYWxjRGlm
ZmVyZW5jZShjb25zdCBuc1N0eWxlQ29udGVudCYgYU90aGVyKSBjb25zdDsKCiAgUFJVaW50MzIg
Q29udGVudENvdW50KHZvaWQpIGNvbnN0IHsgcmV0dXJuIG1Db250ZW50Q291bnQ7IH0KICBuc3Jl
c3VsdCBHZXRDb250ZW50QXQoUFJVaW50MzIgYUluZGV4LCBuc1N0eWxlQ29udGVudFR5cGUmIGFU
eXBlLCBuc1N0cmluZyYgYUNvbnRlbnQpIGNvbnN0IHsKICAgIGlmIChhSW5kZXggPCBtQ29udGVu
dENvdW50KSB7CiAgICAgIGFUeXBlID0gbUNvbnRlbnRzW2FJbmRleF0ubVR5cGU7CiAgICAgIGFD
b250ZW50ID0gbUNvbnRlbnRzW2FJbmRleF0ubUNvbnRlbnQ7CiAgICAgIHJldHVybiAwOwogICAg
fQogICAgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwNTdMKTsKICB9CgogIG5zcmVzdWx0IEFs
bG9jYXRlQ29udGVudHMoUFJVaW50MzIgYUNvdW50KSB7CiAgICBpZiAoYUNvdW50ICE9IG1Db250
ZW50Q291bnQpIHsKICAgICAgaWYgKG1Db250ZW50cykgeyBkZWxldGVbXSBtQ29udGVudHM7IG1D
b250ZW50cyA9IDA7IH07CiAgICAgIGlmIChhQ291bnQpIHsKICAgICAgICBtQ29udGVudHMgPSBu
ZXcgbnNTdHlsZUNvbnRlbnREYXRhW2FDb3VudF07CiAgICAgICAgaWYgKCEgbUNvbnRlbnRzKSB7
CiAgICAgICAgICBtQ29udGVudENvdW50ID0gMDsKICAgICAgICAgIHJldHVybiAoKG5zcmVzdWx0
KSAweDgwMDcwMDBlTCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIG1Db250ZW50Q291bnQgPSBh
Q291bnQ7CiAgICB9CiAgICByZXR1cm4gMDsKICB9CgogIG5zcmVzdWx0IFNldENvbnRlbnRBdChQ
UlVpbnQzMiBhSW5kZXgsIG5zU3R5bGVDb250ZW50VHlwZSBhVHlwZSwgY29uc3QgbnNTdHJpbmcm
IGFDb250ZW50KSB7CiAgICBpZiAoYUluZGV4IDwgbUNvbnRlbnRDb3VudCkgewogICAgICBtQ29u
dGVudHNbYUluZGV4XS5tVHlwZSA9IGFUeXBlOwogICAgICBpZiAoYVR5cGUgPCBlU3R5bGVDb250
ZW50VHlwZV9PcGVuUXVvdGUpIHsKICAgICAgICBtQ29udGVudHNbYUluZGV4XS5tQ29udGVudCA9
IGFDb250ZW50OwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgIG1Db250ZW50c1thSW5kZXhd
Lm1Db250ZW50LlRydW5jYXRlKCk7CiAgICAgIH0KICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICBy
ZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDA3MDA1N0wpOwogIH0KCiAgUFJVaW50MzIgQ291bnRlcklu
Y3JlbWVudENvdW50KHZvaWQpIGNvbnN0IHsgcmV0dXJuIG1JbmNyZW1lbnRDb3VudDsgfQogIG5z
cmVzdWx0IEdldENvdW50ZXJJbmNyZW1lbnRBdChQUlVpbnQzMiBhSW5kZXgsIG5zU3RyaW5nJiBh
Q291bnRlciwgUFJJbnQzMiYgYUluY3JlbWVudCkgY29uc3QgewogICAgaWYgKGFJbmRleCA8IG1J
bmNyZW1lbnRDb3VudCkgewogICAgICBhQ291bnRlciA9IG1JbmNyZW1lbnRzW2FJbmRleF0ubUNv
dW50ZXI7CiAgICAgIGFJbmNyZW1lbnQgPSBtSW5jcmVtZW50c1thSW5kZXhdLm1WYWx1ZTsKICAg
ICAgcmV0dXJuIDA7CiAgICB9CiAgICByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDA3MDA1N0wpOwog
IH0KCiAgbnNyZXN1bHQgQWxsb2NhdGVDb3VudGVySW5jcmVtZW50cyhQUlVpbnQzMiBhQ291bnQp
IHsKICAgIGlmIChhQ291bnQgIT0gbUluY3JlbWVudENvdW50KSB7CiAgICAgIGlmIChtSW5jcmVt
ZW50cykgeyBkZWxldGVbXSBtSW5jcmVtZW50czsgbUluY3JlbWVudHMgPSAwOyB9OwogICAgICBp
ZiAoYUNvdW50KSB7CiAgICAgICAgbUluY3JlbWVudHMgPSBuZXcgbnNTdHlsZUNvdW50ZXJEYXRh
W2FDb3VudF07CiAgICAgICAgaWYgKCEgbUluY3JlbWVudHMpIHsKICAgICAgICAgIG1JbmNyZW1l
bnRDb3VudCA9IDA7CiAgICAgICAgICByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDA3MDAwZUwpOwog
ICAgICAgIH0KICAgICAgfQogICAgICBtSW5jcmVtZW50Q291bnQgPSBhQ291bnQ7CiAgICB9CiAg
ICByZXR1cm4gMDsKICB9CgogIG5zcmVzdWx0IFNldENvdW50ZXJJbmNyZW1lbnRBdChQUlVpbnQz
MiBhSW5kZXgsIGNvbnN0IG5zU3RyaW5nJiBhQ291bnRlciwgUFJJbnQzMiBhSW5jcmVtZW50KSB7
CiAgICBpZiAoYUluZGV4IDwgbUluY3JlbWVudENvdW50KSB7CiAgICAgIG1JbmNyZW1lbnRzW2FJ
bmRleF0ubUNvdW50ZXIgPSBhQ291bnRlcjsKICAgICAgbUluY3JlbWVudHNbYUluZGV4XS5tVmFs
dWUgPSBhSW5jcmVtZW50OwogICAgICByZXR1cm4gMDsKICAgIH0KICAgIHJldHVybiAoKG5zcmVz
dWx0KSAweDgwMDcwMDU3TCk7CiAgfQoKICBQUlVpbnQzMiBDb3VudGVyUmVzZXRDb3VudCh2b2lk
KSBjb25zdCB7IHJldHVybiBtUmVzZXRDb3VudDsgfQogIG5zcmVzdWx0IEdldENvdW50ZXJSZXNl
dEF0KFBSVWludDMyIGFJbmRleCwgbnNTdHJpbmcmIGFDb3VudGVyLCBQUkludDMyJiBhVmFsdWUp
IGNvbnN0IHsKICAgIGlmIChhSW5kZXggPCBtUmVzZXRDb3VudCkgewogICAgICBhQ291bnRlciA9
IG1SZXNldHNbYUluZGV4XS5tQ291bnRlcjsKICAgICAgYVZhbHVlID0gbVJlc2V0c1thSW5kZXhd
Lm1WYWx1ZTsKICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICByZXR1cm4gKChuc3Jlc3VsdCkgMHg4
MDA3MDA1N0wpOwogIH0KCiAgbnNyZXN1bHQgQWxsb2NhdGVDb3VudGVyUmVzZXRzKFBSVWludDMy
IGFDb3VudCkgewogICAgaWYgKGFDb3VudCAhPSBtUmVzZXRDb3VudCkgewogICAgICBpZiAobVJl
c2V0cykgeyBkZWxldGVbXSBtUmVzZXRzOyBtUmVzZXRzID0gMDsgfTsKICAgICAgaWYgKGFDb3Vu
dCkgewogICAgICAgIG1SZXNldHMgPSBuZXcgbnNTdHlsZUNvdW50ZXJEYXRhW2FDb3VudF07CiAg
ICAgICAgaWYgKCEgbVJlc2V0cykgewogICAgICAgICAgbVJlc2V0Q291bnQgPSAwOwogICAgICAg
ICAgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsKICAgICAgICB9CiAgICAgIH0KICAg
ICAgbVJlc2V0Q291bnQgPSBhQ291bnQ7CiAgICB9CiAgICByZXR1cm4gMDsKICB9CgogIG5zcmVz
dWx0IFNldENvdW50ZXJSZXNldEF0KFBSVWludDMyIGFJbmRleCwgY29uc3QgbnNTdHJpbmcmIGFD
b3VudGVyLCBQUkludDMyIGFWYWx1ZSkgewogICAgaWYgKGFJbmRleCA8IG1SZXNldENvdW50KSB7
CiAgICAgIG1SZXNldHNbYUluZGV4XS5tQ291bnRlciA9IGFDb3VudGVyOwogICAgICBtUmVzZXRz
W2FJbmRleF0ubVZhbHVlID0gYVZhbHVlOwogICAgICByZXR1cm4gMDsKICAgIH0KICAgIHJldHVy
biAoKG5zcmVzdWx0KSAweDgwMDcwMDU3TCk7CiAgfQoKICBuc1N0eWxlQ29vcmQgbU1hcmtlck9m
ZnNldDsKCnByb3RlY3RlZDoKICBQUlVpbnQzMiBtQ29udGVudENvdW50OwogIG5zU3R5bGVDb250
ZW50RGF0YSogbUNvbnRlbnRzOwoKICBQUlVpbnQzMiBtSW5jcmVtZW50Q291bnQ7CiAgbnNTdHls
ZUNvdW50ZXJEYXRhKiBtSW5jcmVtZW50czsKCiAgUFJVaW50MzIgbVJlc2V0Q291bnQ7CiAgbnNT
dHlsZUNvdW50ZXJEYXRhKiBtUmVzZXRzOwp9OwoKc3RydWN0IG5zU3R5bGVVSVJlc2V0OiBwdWJs
aWMgbnNTdHlsZVN0cnVjdCB7CiAgbnNTdHlsZVVJUmVzZXQodm9pZCk7CiAgbnNTdHlsZVVJUmVz
ZXQoY29uc3QgbnNTdHlsZVVJUmVzZXQmIGFPdGhlcik7CiAgfm5zU3R5bGVVSVJlc2V0KHZvaWQp
OwoKICBzdGF0aWMgY29uc3QgbnNTdHlsZVN0cnVjdElEIEdldFN0eWxlU3RydWN0SUQoKSB7cmV0
dXJuIGVTdHlsZVN0cnVjdF9VSVJlc2V0O30KCiAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBz
eiwgbnNJUHJlc0NvbnRleHQqIGFDb250ZXh0KSB0aHJvdygpIHsKICAgIHZvaWQqIHJlc3VsdCA9
IDA7CiAgICBhQ29udGV4dC0+QWxsb2NhdGVGcm9tU2hlbGwoc3osICZyZXN1bHQpOwogICAgcmV0
dXJuIHJlc3VsdDsKICB9CiAgdm9pZCBEZXN0cm95KG5zSVByZXNDb250ZXh0KiBhQ29udGV4dCkg
ewogICAgdGhpcy0+fm5zU3R5bGVVSVJlc2V0KCk7CiAgICBhQ29udGV4dC0+RnJlZVRvU2hlbGwo
c2l6ZW9mKG5zU3R5bGVVSVJlc2V0KSwgdGhpcyk7CiAgfTsKCiAgbnNDaGFuZ2VIaW50IENhbGNE
aWZmZXJlbmNlKGNvbnN0IG5zU3R5bGVVSVJlc2V0JiBhT3RoZXIpIGNvbnN0OwoKICBQUlVuaWNo
YXIgbUtleUVxdWl2YWxlbnQ7CiAgUFJVaW50OCBtVXNlclNlbGVjdDsKICBQUlVpbnQ4IG1SZXNp
emVyOwogIFBSVWludDggbUZvcmNlQnJva2VuSW1hZ2VJY29uOwp9OwoKc3RydWN0IG5zU3R5bGVV
c2VySW50ZXJmYWNlOiBwdWJsaWMgbnNTdHlsZVN0cnVjdCB7CiAgbnNTdHlsZVVzZXJJbnRlcmZh
Y2Uodm9pZCk7CiAgbnNTdHlsZVVzZXJJbnRlcmZhY2UoY29uc3QgbnNTdHlsZVVzZXJJbnRlcmZh
Y2UmIGFPdGhlcik7CiAgfm5zU3R5bGVVc2VySW50ZXJmYWNlKHZvaWQpOwoKICBzdGF0aWMgY29u
c3QgbnNTdHlsZVN0cnVjdElEIEdldFN0eWxlU3RydWN0SUQoKSB7cmV0dXJuIGVTdHlsZVN0cnVj
dF9Vc2VySW50ZXJmYWNlO30KCiAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzeiwgbnNJUHJl
c0NvbnRleHQqIGFDb250ZXh0KSB0aHJvdygpIHsKICAgIHZvaWQqIHJlc3VsdCA9IDA7CiAgICBh
Q29udGV4dC0+QWxsb2NhdGVGcm9tU2hlbGwoc3osICZyZXN1bHQpOwogICAgcmV0dXJuIHJlc3Vs
dDsKICB9CiAgdm9pZCBEZXN0cm95KG5zSVByZXNDb250ZXh0KiBhQ29udGV4dCkgewogICAgdGhp
cy0+fm5zU3R5bGVVc2VySW50ZXJmYWNlKCk7CiAgICBhQ29udGV4dC0+RnJlZVRvU2hlbGwoc2l6
ZW9mKG5zU3R5bGVVc2VySW50ZXJmYWNlKSwgdGhpcyk7CiAgfTsKCiAgbnNDaGFuZ2VIaW50IENh
bGNEaWZmZXJlbmNlKGNvbnN0IG5zU3R5bGVVc2VySW50ZXJmYWNlJiBhT3RoZXIpIGNvbnN0OwoK
ICBQUlVpbnQ4IG1Vc2VySW5wdXQ7CiAgUFJVaW50OCBtVXNlck1vZGlmeTsKICBQUlVpbnQ4IG1V
c2VyRm9jdXM7CgogIFBSVWludDggbUN1cnNvcjsKICBuc1N0cmluZyBtQ3Vyc29ySW1hZ2U7Cn07
CgoKc3RydWN0IG5zU3R5bGVYVUwgOiBwdWJsaWMgbnNTdHlsZVN0cnVjdCB7CiAgbnNTdHlsZVhV
TCgpOwogIG5zU3R5bGVYVUwoY29uc3QgbnNTdHlsZVhVTCYgYVNvdXJjZSk7CiAgfm5zU3R5bGVY
VUwoKTsKCiAgc3RhdGljIGNvbnN0IG5zU3R5bGVTdHJ1Y3RJRCBHZXRTdHlsZVN0cnVjdElEKCkg
e3JldHVybiBlU3R5bGVTdHJ1Y3RfWFVMO30KCiAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBz
eiwgbnNJUHJlc0NvbnRleHQqIGFDb250ZXh0KSB0aHJvdygpIHsKICAgIHZvaWQqIHJlc3VsdCA9
IDA7CiAgICBhQ29udGV4dC0+QWxsb2NhdGVGcm9tU2hlbGwoc3osICZyZXN1bHQpOwogICAgcmV0
dXJuIHJlc3VsdDsKICB9CiAgdm9pZCBEZXN0cm95KG5zSVByZXNDb250ZXh0KiBhQ29udGV4dCkg
ewogICAgdGhpcy0+fm5zU3R5bGVYVUwoKTsKICAgIGFDb250ZXh0LT5GcmVlVG9TaGVsbChzaXpl
b2YobnNTdHlsZVhVTCksIHRoaXMpOwogIH07CgogIG5zQ2hhbmdlSGludCBDYWxjRGlmZmVyZW5j
ZShjb25zdCBuc1N0eWxlWFVMJiBhT3RoZXIpIGNvbnN0OwoKICBmbG9hdCBtQm94RmxleDsKICBQ
UlVpbnQzMiBtQm94T3JkaW5hbDsKICBQUlVpbnQ4IG1Cb3hBbGlnbjsKICBQUlVpbnQ4IG1Cb3hE
aXJlY3Rpb247CiAgUFJVaW50OCBtQm94T3JpZW50OwogIFBSVWludDggbUJveFBhY2s7Cn07CiMg
MTE3MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNTdHlsZVN0cnVjdC5oIgpzdHJ1
Y3QgbnNCb3JkZXJFZGdlczsKCgpzdHJ1Y3QgbnNCb3JkZXJFZGdlCnsKCiAgbnNjb29yZCBtV2lk
dGg7CgogIG5zY29vcmQgbUxlbmd0aDsKICBuc2NvbG9yIG1Db2xvcjsKCiAgbnNCb3JkZXJFZGdl
cyAqIG1JbnNpZGVOZWlnaGJvcjsKICBQUlVpbnQ4IG1TdHlsZTsKCiAgUFJVaW50OCBtU2lkZTsK
CiAgbnNCb3JkZXJFZGdlKCk7Cn07CgppbmxpbmUgbnNCb3JkZXJFZGdlOjpuc0JvcmRlckVkZ2Uo
KQp7CiAgbVdpZHRoPTA7CiAgbUxlbmd0aD0wOwogIG1TdHlsZT0wOwogIG1Db2xvcj0wOwogIG1T
aWRlPTM7CiAgbUluc2lkZU5laWdoYm9yID0gMDsKfTsKCgoKCnN0cnVjdCBuc0JvcmRlckVkZ2Vz
CnsKICBuc1ZvaWRBcnJheSBtRWRnZXNbNF07CiAgbnNNYXJnaW4gbU1heEJvcmRlcldpZHRoOwog
IFBSUGFja2VkQm9vbCBtT3V0c2lkZUVkZ2U7CgogIG5zQm9yZGVyRWRnZXMoKTsKfTsKCmlubGlu
ZSBuc0JvcmRlckVkZ2VzOjpuc0JvcmRlckVkZ2VzKCkKewogIG1NYXhCb3JkZXJXaWR0aC5TaXpl
VG8oMCwwLDAsMCk7CiAgbU91dHNpZGVFZGdlID0gMTsKfTsKIyA1MCAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2xheW91dC9uc0lGcmFtZS5oIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xh
eW91dC9uc0lTdHlsZUNvbnRleHQuaCIgMQojIDU0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5
b3V0L25zSVN0eWxlQ29udGV4dC5oIgpjbGFzcyBuc0lTaXplT2ZIYW5kbGVyOwoKY2xhc3MgbnNJ
RnJhbWU7CmNsYXNzIG5zSVN0eWxlU2V0OwpjbGFzcyBuc0lQcmVzQ29udGV4dDsKY2xhc3MgbnNJ
U3VwcG9ydHNBcnJheTsKY2xhc3MgbnNJU3R5bGVDb250ZXh0OwpjbGFzcyBuc1J1bGVOb2RlOwoK
CgoKCgoKY2xhc3MgbnNJU3R5bGVDb250ZXh0IDogcHVibGljIG5zSVN1cHBvcnRzIHsKcHVibGlj
OgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQg
PSB7IDB4MjZhNGQ5NzAsIDB4YTM0MiwgMHgxMWQxLCB7MHg4OSwgMHg3NCwgMHgwMCwgMHg2MCwg
MHgwOCwgMHg5MSwgMHgxYiwgMHg4MX0gfTsgcmV0dXJuIGlpZDt9CgogIHZpcnR1YWwgUFJCb29s
IEVxdWFscyhjb25zdCBuc0lTdHlsZUNvbnRleHQqIGFPdGhlcikgY29uc3QgPSAwOwoKICB2aXJ0
dWFsIGFscmVhZHlfQWRkUmVmZWQ8bnNJU3R5bGVDb250ZXh0PiBHZXRQYXJlbnQodm9pZCkgY29u
c3QgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Rmlyc3RDaGlsZChuc0lTdHlsZUNvbnRleHQq
KiBhQ29udGV4dCk9MDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQc2V1ZG9UeXBlKG5zSUF0b20q
JiBhUHNldWRvVGFnKSBjb25zdCA9IDA7CgogIHZpcnR1YWwgbnNyZXN1bHQgRmluZENoaWxkV2l0
aFJ1bGVzKGNvbnN0IG5zSUF0b20qIGFQc2V1ZG9UYWcsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnNSdWxlTm9kZSogYVJ1bGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5zSVN0eWxlQ29udGV4dComIGFSZXN1bHQpID0gMDsKCiAgdmlydHVhbCBQUkJvb2wgSGFz
VGV4dERlY29yYXRpb25zKCk9MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Qm9yZGVyUGFkZGlu
Z0Zvcihuc1N0eWxlQm9yZGVyUGFkZGluZyYgYUJvcmRlclBhZGRpbmcpPTA7CgoKCgoKCgogIHZp
cnR1YWwgbnNyZXN1bHQgQ2FsY1N0eWxlRGlmZmVyZW5jZShuc0lTdHlsZUNvbnRleHQqIGFPdGhl
ciwgbnNDaGFuZ2VIaW50JiBhSGludCkgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJ1bGVO
b2RlKG5zUnVsZU5vZGUqKiBhUmVzdWx0KT0wOwogIHZpcnR1YWwgbnNyZXN1bHQgQWRkU3R5bGVC
aXQoY29uc3QgUFJVaW50MzImIGFCaXQpPTA7CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTdHlsZUJp
dHMoUFJVaW50MzIqIGFCaXRzKT0wOwojIDExMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91
dC9uc0lTdHlsZUNvbnRleHQuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFN0eWxlKG5zU3R5bGVT
dHJ1Y3RJRCBhU0lELCBuc1N0eWxlU3RydWN0KiBhU3RydWN0KSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldFN0eWxlKG5zU3R5bGVTdHJ1Y3RJRCBhU0lELCBjb25zdCBuc1N0eWxlU3RydWN0
KiogYVN0cnVjdCkgPSAwOwoKICB2aXJ0dWFsIGNvbnN0IG5zU3R5bGVTdHJ1Y3QqIEdldFN0eWxl
RGF0YShuc1N0eWxlU3RydWN0SUQgYVNJRCkgPSAwOwoKCgoKICB2aXJ0dWFsIG5zU3R5bGVTdHJ1
Y3QqIEdldFVuaXF1ZVN0eWxlRGF0YShuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0LCBjb25z
dCBuc1N0eWxlU3RydWN0SUQmIGFTSUQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ2xlYXJD
YWNoZWREYXRhRm9yUnVsZShuc0lTdHlsZVJ1bGUqIGFSdWxlKSA9IDA7CgoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBDbGVhclN0eWxlRGF0YShuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0LCBuc0lT
dHlsZVJ1bGUqIGFSdWxlKSA9IDA7Cn07CgoKCmV4dGVybiBuc3Jlc3VsdAogIE5TX05ld1N0eWxl
Q29udGV4dChuc0lTdHlsZUNvbnRleHQqKiBhSW5zdGFuY2VQdHJSZXN1bHQsCiAgICAgICAgICAg
ICAgICAgICAgIG5zSVN0eWxlQ29udGV4dCogYVBhcmVudENvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgIG5zSUF0b20qIGFQc2V1ZG9UeXBlLAogICAgICAgICAgICAgICAgICAgICBuc1J1bGVO
b2RlKiBhUnVsZU5vZGUsCiAgICAgICAgICAgICAgICAgICAgIG5zSVByZXNDb250ZXh0KiBhUHJl
c0NvbnRleHQpOwoKCgp0ZW1wbGF0ZSA8Y2xhc3MgVD4KaW5saW5lIHZvaWQKR2V0U3R5bGVEYXRh
KG5zSVN0eWxlQ29udGV4dCogYVN0eWxlQ29udGV4dCwgY29uc3QgVCoqIGFTdHlsZVN0cnVjdCkK
ewogICAgKmFTdHlsZVN0cnVjdCA9IHN0YXRpY19jYXN0PCBjb25zdCBUKiA+KGFTdHlsZUNvbnRl
eHQtPkdldFN0eWxlRGF0YSgoVDo6R2V0U3R5bGVTdHJ1Y3RJRCgpKSkpOwoKfQojIDUxICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSUZyYW1lLmgiIDIKIyA3MCAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2xheW91dC9uc0lGcmFtZS5oIgpzdHJ1Y3QgbnNIVE1MUmVmbG93U3RhdGU7CmNs
YXNzIG5zSFRNTFJlZmxvd0NvbW1hbmQ7CnN0cnVjdCBuc0hUTUxSZWZsb3dNZXRyaWNzOwoKY2xh
c3MgbnNJQXRvbTsKY2xhc3MgbnNJUHJlc0NvbnRleHQ7CmNsYXNzIG5zSVByZXNTaGVsbDsKY2xh
c3MgbnNJUmVuZGVyaW5nQ29udGV4dDsKY2xhc3MgbnNJU2l6ZU9mSGFuZGxlcjsKY2xhc3MgbnNJ
VmlldzsKY2xhc3MgbnNJV2lkZ2V0OwpjbGFzcyBuc0lET01SYW5nZTsKY2xhc3MgbnNJU2VsZWN0
aW9uQ29udHJvbGxlcjsKCmNsYXNzIG5zSUFjY2Vzc2libGU7CgoKc3RydWN0IG5zUGVla09mZnNl
dFN0cnVjdDsKc3RydWN0IG5zUG9pbnQ7CnN0cnVjdCBuc1JlY3Q7CnN0cnVjdCBuc1NpemU7CnN0
cnVjdCBuc01hcmdpbjsKCgp0eXBlZGVmIHZvaWQKKCpOU0ZyYW1lUHJvcGVydHlEdG9yRnVuYyko
bnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnNJRnJhbWUqIGFGcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQXRvbSogYVBy
b3BlcnR5TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogYVByb3BlcnR5VmFs
dWUpOwojIDExOCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lGcmFtZS5oIgp0eXBl
ZGVmIFBSVWludDMyIG5zU3BsaXR0YWJsZVR5cGU7CiMgMTM2ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvbGF5b3V0L25zSUZyYW1lLmgiCnR5cGVkZWYgUFJVaW50MzIgbnNGcmFtZVN0YXRlOwojIDIz
MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lGcmFtZS5oIgplbnVtIG5zRnJhbWVQ
YWludExheWVyIHsKICBlRnJhbWVQYWludExheWVyX1VuZGVybGF5ID0gMCwKICBlRnJhbWVQYWlu
dExheWVyX0NvbnRlbnQgPSAxLAogIGVGcmFtZVBhaW50TGF5ZXJfT3ZlcmxheSA9IDIKfTsKCmVu
dW0gbnNTZWxlY3Rpb25BbW91bnQgewogIGVTZWxlY3RDaGFyYWN0ZXIgPSAwLAogIGVTZWxlY3RX
b3JkID0gMSwKICBlU2VsZWN0TGluZSA9IDIsCiAgZVNlbGVjdEJlZ2luTGluZSA9IDMsCiAgZVNl
bGVjdEVuZExpbmUgPSA0LAogIGVTZWxlY3ROb0Ftb3VudCA9IDUsCiAgZVNlbGVjdERpciA9IDYs
CiAgZVNlbGVjdFBhcmFncmFwaCA9IDcKfTsKCmVudW0gbnNEaXJlY3Rpb24gewogIGVEaXJOZXh0
ID0gMCwKICBlRGlyUHJldmlvdXM9IDEKfTsKCmVudW0gbnNTcHJlYWQgewogIGVTcHJlYWROb25l
ID0gMCwKICBlU3ByZWFkQWNyb3NzID0gMSwKICBlU3ByZWFkRG93biA9IDIKfTsKIyAyOTIgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJRnJhbWUuaCIKdHlwZWRlZiBQUlVpbnQzMiBu
c1JlZmxvd1N0YXR1czsKIyAzNzUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJRnJh
bWUuaCIKdHlwZWRlZiBQUkJvb2wgbnNEaWRSZWZsb3dTdGF0dXM7CiMgMzk2ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbGF5b3V0L25zSUZyYW1lLmgiCmNsYXNzIG5zSUZyYW1lIDogcHVibGljIG5z
SVN1cHBvcnRzCnsKcHVibGljOgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRp
YyBjb25zdCBuc0lJRCBpaWQgPSB7IDB4YTZjZjkwNTAsIDB4MTViMywgMHgxMWQyLHsweDkzLCAw
eDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyfX07IHJldHVybiBpaWQ7fQoj
IDQxOCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lGcmFtZS5oIgogIHZpcnR1YWwg
bnNyZXN1bHQgSW5pdChuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgbnNJQ29udGVudCogYUNvbnRlbnQsCiAgICAgICAgICAgICAgICAgICBuc0lGcmFtZSog
YVBhcmVudCwKICAgICAgICAgICAgICAgICAgIG5zSVN0eWxlQ29udGV4dCogYUNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICBuc0lGcmFtZSogYVByZXZJbkZsb3cpID0gMDsKCgoKCgogIHZpcnR1
YWwgbnNyZXN1bHQgRGVzdHJveShuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0KSA9IDA7CgoK
CgogIHZpcnR1YWwgdm9pZCBSZW1vdmVkQXNQcmltYXJ5RnJhbWUobnNJUHJlc0NvbnRleHQqIGFQ
cmVzQ29udGV4dCkge30KIyA0NTMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJRnJh
bWUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEluaXRpYWxDaGlsZExpc3QobnNJUHJlc0NvbnRl
eHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUF0
b20qIGFMaXN0TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUZyYW1l
KiBhQ2hpbGRMaXN0KSA9IDA7CiMgNDcxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25z
SUZyYW1lLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBBcHBlbmRGcmFtZXMobnNJUHJlc0NvbnRleHQq
IGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lQcmVzU2hlbGwmIGFQ
cmVzU2hlbGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQXRvbSogYUxpc3ROYW1lLAog
ICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUZyYW1lKiBhRnJhbWVMaXN0KSA9IDA7CiMgNDkx
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSUZyYW1lLmgiCiAgdmlydHVhbCBuc3Jl
c3VsdCBJbnNlcnRGcmFtZXMobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICBuc0lQcmVzU2hlbGwmIGFQcmVzU2hlbGwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnNJQXRvbSogYUxpc3ROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
IG5zSUZyYW1lKiBhUHJldkZyYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUZyYW1l
KiBhRnJhbWVMaXN0KSA9IDA7CiMgNTEzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25z
SUZyYW1lLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBSZW1vdmVGcmFtZShuc0lQcmVzQ29udGV4dCog
YVByZXNDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgbnNJUHJlc1NoZWxsJiBhUHJl
c1NoZWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgbnNJQXRvbSogYUxpc3ROYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgbnNJRnJhbWUqIGFPbGRGcmFtZSkgPSAwOwojIDUzNSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lGcmFtZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQg
UmVwbGFjZUZyYW1lKG5zSVByZXNDb250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnNJUHJlc1NoZWxsJiBhUHJlc1NoZWxsLAogICAgICAgICAgICAgICAgICAg
ICAgICAgIG5zSUF0b20qIGFMaXN0TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lG
cmFtZSogYU9sZEZyYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUZyYW1lKiBhTmV3
RnJhbWUpID0gMDsKCgoKCgoKCiAgbnNyZXN1bHQgR2V0Q29udGVudChuc0lDb250ZW50KiogYUNv
bnRlbnQpIGNvbnN0IHsgKmFDb250ZW50ID0gbUNvbnRlbnQ7IG5zX2lmX2FkZHJlZigqYUNvbnRl
bnQpOyByZXR1cm4gMDsgfQoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRPZmZzZXRzKFBSSW50
MzIgJnN0YXJ0LCBQUkludDMyICZlbmQpIGNvbnN0ID0gMDsKCgoKCgoKCiAgbnNyZXN1bHQgR2V0
U3R5bGVDb250ZXh0KG5zSVN0eWxlQ29udGV4dCoqIGFTdHlsZUNvbnRleHQpIGNvbnN0IHsKICAg
ICphU3R5bGVDb250ZXh0ID0gbVN0eWxlQ29udGV4dDsgbnNfaWZfYWRkcmVmKCphU3R5bGVDb250
ZXh0KTsgcmV0dXJuIDA7CiAgfQogIG5zcmVzdWx0IFNldFN0eWxlQ29udGV4dChuc0lQcmVzQ29u
dGV4dCogYVByZXNDb250ZXh0LCBuc0lTdHlsZUNvbnRleHQqIGFDb250ZXh0KSB7CiAgICBpZiAo
YUNvbnRleHQgIT0gbVN0eWxlQ29udGV4dCkgewogICAgICBkbyB7IGlmIChtU3R5bGVDb250ZXh0
KSB7IChtU3R5bGVDb250ZXh0KS0+UmVsZWFzZSgpOyAobVN0eWxlQ29udGV4dCkgPSAwOyB9IH0g
d2hpbGUgKDApOwogICAgICBpZiAoMCAhPSBhQ29udGV4dCkgewogICAgICAgIG1TdHlsZUNvbnRl
eHQgPSBhQ29udGV4dDsKICAgICAgICAoYUNvbnRleHQpLT5BZGRSZWYoKTsKICAgICAgICBEaWRT
ZXRTdHlsZUNvbnRleHQoYVByZXNDb250ZXh0KTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIDA7
CiAgfQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBEaWRTZXRTdHlsZUNvbnRleHQobnNJUHJlc0NvbnRl
eHQqIGFQcmVzQ29udGV4dCkgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFN0eWxlRGF0
YUV4dGVybmFsKG5zU3R5bGVTdHJ1Y3RJRCBhU0lELAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgbnNTdHlsZVN0cnVjdComIGFTdHlsZVN0cnVjdCkgY29uc3QgPSAwOwoj
IDU5MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lGcmFtZS5oIgogIG5zcmVzdWx0
IEdldFN0eWxlRGF0YShuc1N0eWxlU3RydWN0SUQgYVNJRCwKICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgbnNTdHlsZVN0cnVjdComIGFTdHlsZVN0cnVjdCkgY29uc3QgewogICAgcmV0dXJu
IEdldFN0eWxlRGF0YUV4dGVybmFsKGFTSUQsIGFTdHlsZVN0cnVjdCk7CiAgfQoKCgogIG5zcmVz
dWx0IEdldFN0eWxlKG5zU3R5bGVTdHJ1Y3RJRCBhU0lELCBjb25zdCBuc1N0eWxlU3RydWN0Kiog
YVN0cnVjdCkgY29uc3QgewogICAgOwogICAgbVN0eWxlQ29udGV4dC0+R2V0U3R5bGUoYVNJRCwg
YVN0cnVjdCk7CiAgICByZXR1cm4gMDsKICB9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENhbGNCb3Jk
ZXJQYWRkaW5nKG5zTWFyZ2luJiBhQm9yZGVyUGFkZGluZykgY29uc3QgPSAwOwojIDYxOSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lGcmFtZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0QWRkaXRpb25hbFN0eWxlQ29udGV4dChQUkludDMyIGFJbmRleCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN0eWxlQ29udGV4dCoqIGFTdHlsZUNvbnRleHQp
IGNvbnN0ID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFkZGl0aW9uYWxTdHlsZUNvbnRleHQo
UFJJbnQzMiBhSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
c0lTdHlsZUNvbnRleHQqIGFTdHlsZUNvbnRleHQpID0gMDsKCgoKCiAgbnNyZXN1bHQgR2V0UGFy
ZW50KG5zSUZyYW1lKiogYVBhcmVudCkgY29uc3QgeyAqYVBhcmVudCA9IG1QYXJlbnQ7IHJldHVy
biAwOyB9CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRQYXJlbnQoY29uc3QgbnNJRnJhbWUqIGFQYXJl
bnQpIHsgbVBhcmVudCA9IChuc0lGcmFtZSopYVBhcmVudDsgcmV0dXJuIDA7IH0KIyA2MzggIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJRnJhbWUuaCIKICBuc3Jlc3VsdCBHZXRSZWN0
KG5zUmVjdCYgYVJlY3QpIGNvbnN0IHsKICAgIGFSZWN0ID0gbVJlY3Q7CiAgICByZXR1cm4gMDsK
ICB9CgogIG5zcmVzdWx0IEdldE9yaWdpbihuc1BvaW50JiBhUG9pbnQpIGNvbnN0IHsKICAgIGFQ
b2ludC54ID0gbVJlY3QueDsKICAgIGFQb2ludC55ID0gbVJlY3QueTsKICAgIHJldHVybiAwOwog
IH0KCiAgbnNyZXN1bHQgR2V0U2l6ZShuc1NpemUmIGFTaXplKSBjb25zdCB7CiAgICBhU2l6ZS53
aWR0aCA9IG1SZWN0LndpZHRoOwogICAgYVNpemUuaGVpZ2h0ID0gbVJlY3QuaGVpZ2h0OwogICAg
cmV0dXJuIDA7CiAgfQoKICBuc3Jlc3VsdCBTZXRSZWN0KG5zSVByZXNDb250ZXh0KiBhUHJlc0Nv
bnRleHQsCiAgICAgICAgICAgICAgIGNvbnN0IG5zUmVjdCYgYVJlY3QpIHsKICAgIE1vdmVUbyhh
UHJlc0NvbnRleHQsIGFSZWN0LngsIGFSZWN0LnkpOwogICAgU2l6ZVRvKGFQcmVzQ29udGV4dCwg
YVJlY3Qud2lkdGgsIGFSZWN0LmhlaWdodCk7CiAgICByZXR1cm4gMDsKICB9CgogIG5zcmVzdWx0
IE1vdmVUbyhuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0LAogICAgICAgICAgICAgICAgICBu
c2Nvb3JkIGFYLAogICAgICAgICAgICAgICAgICBuc2Nvb3JkIGFZKSB7CiAgICBtUmVjdC54ID0g
YVg7CiAgICBtUmVjdC55ID0gYVk7CiAgICByZXR1cm4gMDsKICB9CgogIG5zcmVzdWx0IFNpemVU
byhuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0LAogICAgICAgICAgICAgICAgICBuc2Nvb3Jk
IGFXaWR0aCwKICAgICAgICAgICAgICAgICAgbnNjb29yZCBhSGVpZ2h0KSB7CiAgICBtUmVjdC53
aWR0aCA9IGFXaWR0aDsKICAgIG1SZWN0LmhlaWdodCA9IGFIZWlnaHQ7CiAgICByZXR1cm4gMDsK
ICB9CiMgNjg4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSUZyYW1lLmgiCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRBZGRpdGlvbmFsQ2hpbGRMaXN0TmFtZShQUkludDMyIGFJbmRleCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lBdG9tKiogYUxpc3RO
YW1lKSBjb25zdCA9IDA7CiMgNjk5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSUZy
YW1lLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBGaXJzdENoaWxkKG5zSVByZXNDb250ZXh0KiBhUHJl
c0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBuc0lBdG9tKiBhTGlzdE5hbWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBuc0lGcmFtZSoqIGFGaXJzdENoaWxkKSBjb25zdCA9IDA7
CgoKCgogIG5zcmVzdWx0IEdldE5leHRTaWJsaW5nKG5zSUZyYW1lKiogYU5leHRTaWJsaW5nKSBj
b25zdCB7CiAgICAqYU5leHRTaWJsaW5nID0gbU5leHRTaWJsaW5nOwogICAgcmV0dXJuIDA7CiAg
fQoKICBuc3Jlc3VsdCBTZXROZXh0U2libGluZyhuc0lGcmFtZSogYU5leHRTaWJsaW5nKSB7CiAg
ICBtTmV4dFNpYmxpbmcgPSBhTmV4dFNpYmxpbmc7CiAgICByZXR1cm4gMDsKICB9CgoKCgoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBQYWludChuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgIG5zSVJlbmRlcmluZ0NvbnRleHQmIGFSZW5kZXJpbmdDb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgIGNvbnN0IG5zUmVjdCYgYURpcnR5UmVjdCwKICAgICAgICAgICAg
ICAgICAgICBuc0ZyYW1lUGFpbnRMYXllciBhV2hpY2hMYXllciwKICAgICAgICAgICAgICAgICAg
ICBQUlVpbnQzMiBhRmxhZ3MgPSAwKSA9IDA7CgoKCgoKICB2aXJ0dWFsIFBSQm9vbCBDYW5QYWlu
dEJhY2tncm91bmQoKSB7IHJldHVybiAxOyB9CiMgNzQ4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
bGF5b3V0L25zSUZyYW1lLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBIYW5kbGVFdmVudChuc0lQcmVz
Q29udGV4dCogYVByZXNDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgIG5zR1VJRXZl
bnQqIGFFdmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICBuc0V2ZW50U3RhdHVzKiBhRXZl
bnRTdGF0dXMpID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb250ZW50Rm9yRXZlbnQobnNJ
UHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnNFdmVudCogYUV2ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lD
b250ZW50KiogYUNvbnRlbnQpID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb250ZW50QW5k
T2Zmc2V0c0Zyb21Qb2ludChuc0lQcmVzQ29udGV4dCogYUNYLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbnNQb2ludCYgYVBvaW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQ29udGVudCAqKiBhTmV3Q29udGVu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSSW50MzImIGFD
b250ZW50T2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UFJJbnQzMiYgYUNvbnRlbnRPZmZzZXRFbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQUkJvb2wmIGFCZWdpbkZyYW1lQ29udGVudCkgPSAwOwoKCgoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRDdXJzb3IobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgbnNQb2ludCYgYVBvaW50LAogICAgICAgICAgICAgICAgICAg
ICAgICBQUkludDMyJiBhQ3Vyc29yKSA9IDA7CiMgNzc4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
bGF5b3V0L25zSUZyYW1lLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGcmFtZUZvclBvaW50KG5z
SVByZXNDb250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBuc1BvaW50JiBhUG9pbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
c0ZyYW1lUGFpbnRMYXllciBhV2hpY2hMYXllciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5zSUZyYW1lKiogYUZyYW1lKSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
UG9pbnRGcm9tT2Zmc2V0KG5zSVByZXNDb250ZXh0KiBpblByZXNDb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuc0lSZW5kZXJpbmdDb250ZXh0KiBpblJlbmRDb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkludDMyIGluT2Zmc2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc1BvaW50KiBvdXRQb2ludCkgPSAwOwojIDgw
MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lGcmFtZS5oIgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0Q2hpbGRGcmFtZUNvbnRhaW5pbmdPZmZzZXQoUFJJbnQzMiBpbkNvbnRlbnRPZmZz
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCBpbkhpbnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSSW50MzIqIG91dEZyYW1lQ29udGVudE9mZnNl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJRnJhbWUqICpvdXRDaGlsZEZy
YW1lKSA9IDA7CgoKCgoKICBuc3Jlc3VsdCBHZXRGcmFtZVN0YXRlKG5zRnJhbWVTdGF0ZSogYVJl
c3VsdCkgewogICAgKmFSZXN1bHQgPSBtU3RhdGU7CiAgICByZXR1cm4gMDsKICB9CgoKCgogIG5z
cmVzdWx0IFNldEZyYW1lU3RhdGUobnNGcmFtZVN0YXRlIGFOZXdTdGF0ZSkgewogICAgbVN0YXRl
ID0gYU5ld1N0YXRlOwogICAgcmV0dXJuIDA7CiAgfQojIDgzMyAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2xheW91dC9uc0lGcmFtZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgQ29udGVudENoYW5nZWQo
bnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuc0lDb250ZW50KiBhQ2hpbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3Vw
cG9ydHMqIGFTdWJDb250ZW50KSA9IDA7CiMgODQ3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5
b3V0L25zSUZyYW1lLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBBdHRyaWJ1dGVDaGFuZ2VkKG5zSVBy
ZXNDb250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
c0lDb250ZW50KiBhQ2hpbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkludDMy
IGFOYW1lU3BhY2VJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUF0b20qIGFB
dHRyaWJ1dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkludDMyIGFNb2RUeXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJJbnQzMiBhSGludCkgPSAwOwojIDg2
MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lGcmFtZS5oIgogIHZpcnR1YWwgbnNy
ZXN1bHQgQ29udGVudFN0YXRlQ2hhbmdlZChuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQ29udGVudCogYUNoaWxkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJJbnQzMiBhSGludCkgPSAwOwoKCgoKICB2
aXJ0dWFsIG5zcmVzdWx0IElzU3BsaXR0YWJsZShuc1NwbGl0dGFibGVUeXBlJiBhSXNTcGxpdHRh
YmxlKSBjb25zdCA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UHJldkluRmxvdyhuc0lG
cmFtZSoqIGFQcmV2SW5GbG93KSBjb25zdCA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRQcmV2
SW5GbG93KG5zSUZyYW1lKikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TmV4dEluRmxvdyhu
c0lGcmFtZSoqIGFOZXh0SW5GbG93KSBjb25zdCA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRO
ZXh0SW5GbG93KG5zSUZyYW1lKikgPSAwOwoKCgoKICB2aXJ0dWFsIG5zSUZyYW1lKiBHZXRGaXJz
dEluRmxvdygpIGNvbnN0IHsKICAgIHJldHVybiBjb25zdF9jYXN0PCBuc0lGcmFtZSogPih0aGlz
KTsKICB9CgoKCgogIHZpcnR1YWwgbnNJRnJhbWUqIEdldExhc3RJbkZsb3coKSBjb25zdCB7CiAg
ICByZXR1cm4gY29uc3RfY2FzdDwgbnNJRnJhbWUqID4odGhpcyk7CiAgfQojIDkwMyAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lGcmFtZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgV2ls
bFJlZmxvdyhuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0KSA9IDA7CiMgOTQ1ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSUZyYW1lLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBSZWZs
b3cobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICBuc0hU
TUxSZWZsb3dNZXRyaWNzJiBhUmVmbG93TWV0cmljcywKICAgICAgICAgICAgICAgICAgICBjb25z
dCBuc0hUTUxSZWZsb3dTdGF0ZSYgYVJlZmxvd1N0YXRlLAogICAgICAgICAgICAgICAgICAgIG5z
UmVmbG93U3RhdHVzJiBhU3RhdHVzKSA9IDA7CiMgOTY1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
bGF5b3V0L25zSUZyYW1lLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBEaWRSZWZsb3cobnNJUHJlc0Nv
bnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbnNIVE1M
UmVmbG93U3RhdGUqIGFSZWZsb3dTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgbnNEaWRS
ZWZsb3dTdGF0dXMgYVN0YXR1cykgPSAwOwojIDk4MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xh
eW91dC9uc0lGcmFtZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgQ2FuQ29udGludWVUZXh0UnVuKFBS
Qm9vbCYgYUNvbnRpbnVlVGV4dFJ1bikgY29uc3QgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEFkanVzdEZyYW1lU2l6ZShuc2Nvb3JkIGFFeHRyYVNwYWNlLCBuc2Nvb3JkJiBhVXNlZFNwYWNl
KSA9IDA7CgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBUcmltVHJhaWxpbmdXaGl0ZVNwYWNlKG5zSVBy
ZXNDb250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5zSVJlbmRlcmluZ0NvbnRleHQmIGFSQywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnNjb29yZCYgYURlbHRhV2lkdGgpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRWaWV3KG5zSVByZXNDb250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICBuc0lWaWV3KiogYVZpZXcpIGNvbnN0ID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFZp
ZXcobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgIG5z
SVZpZXcqIGFWaWV3KSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UGFyZW50V2l0aFZp
ZXcobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuc0lGcmFtZSoqIGFQYXJlbnQpIGNvbnN0ID0gMDsKCgoKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0T2Zmc2V0RnJvbVZpZXcobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc1BvaW50JiBhT2Zmc2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5zSVZpZXcqKiBhVmlldykgY29uc3QgPSAwOwojIDEwMjUg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJRnJhbWUuaCIKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldE9yaWdpblRvVmlld09mZnNldChuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc1BvaW50JiBhT2Zmc2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lWaWV3KiogYVZpZXcpIGNvbnN0ID0g
MDsKCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRXaW5kb3cobnNJUHJlc0NvbnRleHQqIGFQ
cmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgbnNJV2lkZ2V0KiogYVdpZGdldCkg
Y29uc3QgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RnJhbWVUeXBlKG5zSUF0b20q
KiBhVHlwZSkgY29uc3QgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IElzUGVyY2VudGFnZUJh
c2UoUFJCb29sJiBhQmFzZSkgY29uc3QgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTY3Jv
bGxlZChuc0lWaWV3ICphVmlldykgPSAwOwojIDEwNjYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9s
YXlvdXQvbnNJRnJhbWUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNlbGVjdGVkKG5zSVByZXND
b250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJRE9NUmFu
Z2UqIGFSYW5nZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBQUkJvb2wgYVNlbGVjdGVkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgIG5zU3ByZWFkIGFTcHJlYWQpID0gMDsKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRTZWxlY3RlZChQUkJvb2wgKmFTZWxlY3RlZCkgY29uc3QgPSAwOwojIDEw
ODIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJRnJhbWUuaCIKICB2aXJ0dWFsIG5z
cmVzdWx0IElzU2VsZWN0YWJsZShQUkJvb2wqIGFJc1NlbGVjdGFibGUsIFBSVWludDgqIGFTZWxl
Y3RTdHlsZSkgY29uc3QgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2VsZWN0aW9u
Q29udHJvbGxlcihuc0lQcmVzQ29udGV4dCAqYVByZXNDb250ZXh0LCBuc0lTZWxlY3Rpb25Db250
cm9sbGVyICoqYVNlbENvbikgPSAwOwojIDExMDAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlv
dXQvbnNJRnJhbWUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IENhcHR1cmVNb3VzZShuc0lQcmVzQ29u
dGV4dCogYVByZXNDb250ZXh0LCBQUkJvb2wgYUdyYWJNb3VzZUV2ZW50cykgPSAwOwojIDExMDkg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJRnJhbWUuaCIKICB2aXJ0dWFsIG5zcmVz
dWx0IFBlZWtPZmZzZXQobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwgbnNQZWVrT2Zmc2V0
U3RydWN0ICphUG9zKSA9IDA7CiMgMTEyMiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9u
c0lGcmFtZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgQ2hlY2tWaXNpYmlsaXR5KG5zSVByZXNDb250
ZXh0KiBhQ29udGV4dCwgUFJJbnQzMiBhU3RhcnRJbmRleCwgUFJJbnQzMiBhRW5kSW5kZXgsIFBS
Qm9vbCBhUmVjdXJzZSwgUFJCb29sICphRmluaXNoZWQsIFBSQm9vbCAqX3JldHZhbCk9MDsKCgoK
CgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZWZsb3dEaXJ0eUNoaWxkKG5zSVByZXNTaGVsbCogYVBy
ZXNTaGVsbCwgbnNJRnJhbWUqIGFDaGlsZCkgPSAwOwojIDExNDAgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9sYXlvdXQvbnNJRnJhbWUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFjY2Vzc2libGUo
bnNJQWNjZXNzaWJsZSoqIGFBY2Nlc3NpYmxlKSA9IDA7CiMgMTE2MCAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2xheW91dC9uc0lGcmFtZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UGFyZW50U3R5
bGVDb250ZXh0RnJhbWUobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUZyYW1lKiogYVByb3ZpZGVyRnJhbWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkJvb2wqIGFJc0NoaWxkKSA9
IDA7CiMgMTE3MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lGcmFtZS5oIgogIHZp
cnR1YWwgbnNyZXN1bHQgSXNWaXNpYmxlRm9yUGFpbnRpbmcobnNJUHJlc0NvbnRleHQgKiBhUHJl
c0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lSZW5kZXJpbmdD
b250ZXh0JiBhUmVuZGVyaW5nQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBSQm9vbCBhQ2hlY2tWaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
UkJvb2wqIGFJc1Zpc2libGUpID0gMDsKIyAxMTg4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5
b3V0L25zSUZyYW1lLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBJc0VtcHR5KG5zQ29tcGF0aWJpbGl0
eSBhQ29tcGF0TW9kZSwKICAgICAgICAgICAgICAgICAgICAgUFJCb29sIGFJc1ByZSwKICAgICAg
ICAgICAgICAgICAgICAgUFJCb29sKiBhUmVzdWx0KSA9IDA7CgoKCgoKCgogIFBSQm9vbCBJc0dl
bmVyYXRlZENvbnRlbnRGcmFtZSgpIHsKICAgIHJldHVybiAobVN0YXRlICYgMHgwMDAwMDA0MCkg
IT0gMDsKICB9CiMgMTIxMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lGcmFtZS5o
IgogIFBSQm9vbCBJc1BzZXVkb0ZyYW1lKG5zSUNvbnRlbnQqIGFQYXJlbnRDb250ZW50KSB7CiAg
ICByZXR1cm4gbUNvbnRlbnQgPT0gYVBhcmVudENvbnRlbnQ7CiAgfQoKCgogIHZpcnR1YWwgdm9p
ZCogR2V0UHJvcGVydHkobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5zSUF0b20qIGFQcm9wZXJ0eU5hbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQUkJvb2wgYVJlbW92ZVByb3BlcnR5KSBjb25zdCA9IDA7CgogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0UHJvcGVydHkobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUF0b20qIGFQcm9wZXJ0eU5hbWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBhUHJvcGVydHlWYWx1ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5TRnJhbWVQcm9wZXJ0eUR0b3JGdW5jIGFQcm9wRHRvckZ1bmMp
ID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QmlkaVByb3BlcnR5KG5zSVByZXNDb250
ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQXRvbSog
YVByb3BlcnR5TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiogYVByb3Bl
cnR5VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGFTaXplICkgY29u
c3QgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QmlkaVByb3BlcnR5KG5zSVByZXNDb250ZXh0
KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQXRvbSogYVBy
b3BlcnR5TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBhUHJvcGVydHlW
YWx1ZSkgPSAwOwoKCnByb3RlY3RlZDoKCiAgbnNSZWN0IG1SZWN0OwogIG5zSUNvbnRlbnQqIG1D
b250ZW50OwogIG5zSVN0eWxlQ29udGV4dCogbVN0eWxlQ29udGV4dDsKICBuc0lGcmFtZSogbVBh
cmVudDsKICBuc0lGcmFtZSogbU5leHRTaWJsaW5nOwogIG5zRnJhbWVTdGF0ZSBtU3RhdGU7Cgpw
cml2YXRlOgogIHZpcnR1YWwgbnNyZWZjbnQgQWRkUmVmKHZvaWQpID0gMDsKICB2aXJ0dWFsIG5z
cmVmY250IFJlbGVhc2Uodm9pZCkgPSAwOwp9OwoKCgp0ZW1wbGF0ZSA8Y2xhc3MgVD4KaW5saW5l
IHZvaWQKR2V0U3R5bGVEYXRhKG5zSUZyYW1lKiBhRnJhbWUsIGNvbnN0IFQqKiBhU3R5bGVTdHJ1
Y3QpCnsKICAgIGFGcmFtZS0+R2V0U3R5bGVEYXRhKChUOjpHZXRTdHlsZVN0cnVjdElEKCkpLAog
ICAgICAgICAgICAgICAgICAgICpyZWludGVycHJldF9jYXN0PCBjb25zdCBuc1N0eWxlU3RydWN0
KiogPihhU3R5bGVTdHJ1Y3QpKTsKfQojIDQxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0
L25zSU9iamVjdEZyYW1lLmgiIDIKCmNsYXNzIG5zSVBsdWdpbkluc3RhbmNlOwoKCgoKCmNsYXNz
IG5zSU9iamVjdEZyYW1lIDogcHVibGljIG5zSVN1cHBvcnRzIHsKcHVibGljOgogIHN0YXRpYyBj
b25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7IDB4NmQxMGIw
N2QsIDB4ZTc1YiwgMHgxMWQ0LCB7IDB4OTgsIDB4ODUsIDB4MCwgMHhjMCwgMHg0ZiwgMHhhMCwg
MHhjZiwgMHg0YiB9IH07IHJldHVybiBpaWQ7fQoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBsdWdp
bkluc3RhbmNlKG5zSVBsdWdpbkluc3RhbmNlKiYgYVBsdWdpbkluc3RhbmNlKSA9IDA7Cn07CiMg
MTIxICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1
Z2luL25zSVNjcmlwdGFibGVQbHVnaW4uaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
cGx1Z2luL25zSVNjcmlwdGFibGVQbHVnaW4uaCIKY2xhc3MgbnNJU2NyaXB0YWJsZVBsdWdpbiA6
IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0
SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhmMWExMmJiYSwgMHgxZGQxLCAweDEx
YjIsIHsgMHhhOSwgMHg1ZiwgMHhjZCwgMHhjMSwgMHgxOCwgMHg2MCwgMHg1ZSwgMHg5MiB9fTsg
cmV0dXJuIGlpZDt9CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTY3JpcHRhYmxlUGVlcih2
b2lkICogKmFTY3JpcHRhYmxlUGVlcikgPSAwOwoKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dFNjcmlwdGFibGVJbnRlcmZhY2UobnNJSUQgKiAqYVNjcmlwdGFibGVJbnRlcmZhY2UpID0gMDsK
Cn07CiMgMTIyICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvcGx1Z2luL25zSVBsdWdpbkhvc3QuaCIgMQojIDE4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
cGx1Z2luL25zSVBsdWdpbkhvc3QuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2lu
L25zSVBsdWdpbkluc3RhbmNlT3duZXIuaCIgMQojIDIxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
cGx1Z2luL25zSVBsdWdpbkluc3RhbmNlT3duZXIuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvcGx1Z2luL25zcGx1Z2luLmgiIDEKIyAxMDggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVn
aW4vbnNwbHVnaW4uaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdp
bi5oIiAxCiMgNTIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luLmgiCmNs
YXNzIG5zSVBsdWdpbiA6IHB1YmxpYyBuc0lGYWN0b3J5IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNv
bnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGRmNzczMDcw
LCAweDAxOTksIDB4MTFkMiwgeyAweDgxLCAweDViLCAweDAwLCAweDYwLCAweDA4LCAweDExLCAw
eDlkLCAweDdhIH19OyByZXR1cm4gaWlkO30KCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDcmVh
dGVQbHVnaW5JbnN0YW5jZShuc0lTdXBwb3J0cyAqYU91dGVyLCBjb25zdCBuc0lJRCAmIGFJSUQs
IGNvbnN0IGNoYXIgKmFQbHVnaW5NSU1FVHlwZSwgdm9pZCAqICphUmVzdWx0KSA9IDA7CiMgNzUg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luLmgiCiAgdmlydHVhbCBuc3Jl
c3VsdCBJbml0aWFsaXplKHZvaWQpID0gMDsKIyA4NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3Bs
dWdpbi9uc0lQbHVnaW4uaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFNodXRkb3duKHZvaWQpID0gMDsK
IyAxMDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luLmgiCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRNSU1FRGVzY3JpcHRpb24oY29uc3QgY2hhciAqICphTUlNRURlc2NyaXB0
aW9uKSA9IDA7CiMgMTEzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpbi5o
IgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VmFsdWUobnNQbHVnaW5WYXJpYWJsZSBhVmFyaWFibGUs
IHZvaWQgKiBhVmFsdWUpID0gMDsKCn07CiMgMTA5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1
Z2luL25zcGx1Z2luLmgiIDIKIyAxMjYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNw
bHVnaW4uaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpbk1hbmFn
ZXIuaCIgMQojIDI5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpbk1hbmFn
ZXIuaCIKY2xhc3MgbnNJUGx1Z2luU3RyZWFtTGlzdGVuZXI7CiMgMzkgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luTWFuYWdlci5oIgpjbGFzcyBuc0lQbHVnaW5NYW5hZ2Vy
IDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBH
ZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGRhNThhZDgwLCAweDRlYjYsIDB4
MTFkMiwgeyAweDgxLCAweDY0LCAweDAwLCAweDYwLCAweDA4LCAweDExLCAweDlkLCAweDdhIH19
OyByZXR1cm4gaWlkO30KIyA1NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVn
aW5NYW5hZ2VyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRWYWx1ZShuc1BsdWdpbk1hbmFnZXJW
YXJpYWJsZSB2YXJpYWJsZSwgdm9pZCAqIHZhbHVlKSA9IDA7CiMgNjYgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luTWFuYWdlci5oIgogIHZpcnR1YWwgbnNyZXN1bHQgUmVs
b2FkUGx1Z2lucyhQUkJvb2wgcmVsb2FkUGFnZXMpID0gMDsKIyA3NiAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5NYW5hZ2VyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBVc2Vy
QWdlbnQoY29uc3QgY2hhciAqICogcmVzdWx0aW5nQWdlbnRTdHJpbmcpID0gMDsKCiAgICB2aXJ0
dWFsIG5zcmVzdWx0CiAgICBHZXRVUkwobnNJU3VwcG9ydHMqIHBsdWdpbkluc3QsCiAgICAgICAg
ICAgY29uc3QgY2hhciogdXJsLAogICAgICAgICAgIGNvbnN0IGNoYXIqIHRhcmdldCA9IF9fbnVs
bCwKICAgICAgICAgICBuc0lQbHVnaW5TdHJlYW1MaXN0ZW5lciogc3RyZWFtTGlzdGVuZXIgPSBf
X251bGwsCiAgICAgICAgICAgY29uc3QgY2hhciogYWx0SG9zdCA9IF9fbnVsbCwKICAgICAgICAg
ICBjb25zdCBjaGFyKiByZWZlcnJlciA9IF9fbnVsbCwKICAgICAgICAgICBQUkJvb2wgZm9yY2VK
U0VuYWJsZWQgPSAwKSA9IDA7CiAgICB2aXJ0dWFsIG5zcmVzdWx0CiAgICBQb3N0VVJMKG5zSVN1
cHBvcnRzKiBwbHVnaW5JbnN0LAogICAgICAgICAgICBjb25zdCBjaGFyKiB1cmwsCiAgICAgICAg
ICAgIFBSVWludDMyIHBvc3REYXRhTGVuLAogICAgICAgICAgICBjb25zdCBjaGFyKiBwb3N0RGF0
YSwKICAgICAgICAgICAgUFJCb29sIGlzRmlsZSA9IDAsCiAgICAgICAgICAgIGNvbnN0IGNoYXIq
IHRhcmdldCA9IF9fbnVsbCwKICAgICAgICAgICAgbnNJUGx1Z2luU3RyZWFtTGlzdGVuZXIqIHN0
cmVhbUxpc3RlbmVyID0gX19udWxsLAogICAgICAgICAgICBjb25zdCBjaGFyKiBhbHRIb3N0ID0g
X19udWxsLAogICAgICAgICAgICBjb25zdCBjaGFyKiByZWZlcnJlciA9IF9fbnVsbCwKICAgICAg
ICAgICAgUFJCb29sIGZvcmNlSlNFbmFibGVkID0gMCwKICAgICAgICAgICAgUFJVaW50MzIgcG9z
dEhlYWRlcnNMZW5ndGggPSAwLAogICAgICAgICAgICBjb25zdCBjaGFyKiBwb3N0SGVhZGVycyA9
IF9fbnVsbCkgPSAwOwojIDE3MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVn
aW5NYW5hZ2VyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBSZWdpc3RlclBsdWdpbihjb25zdCBuc0lJ
RCYgYUNJRCwgY29uc3QgY2hhciAqYVBsdWdpbk5hbWUsIGNvbnN0IGNoYXIgKmFEZXNjcmlwdGlv
biwgY29uc3QgY2hhciAqICogYU1pbWVUeXBlcywgY29uc3QgY2hhciAqICogYU1pbWVEZXNjcmlw
dGlvbnMsIGNvbnN0IGNoYXIgKiAqIGFGaWxlRXh0ZW5zaW9ucywgUFJJbnQzMiBhQ291bnQpID0g
MDsKIyAxODAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luTWFuYWdlci5o
IgogIHZpcnR1YWwgbnNyZXN1bHQgVW5yZWdpc3RlclBsdWdpbihjb25zdCBuc0lJRCYgYUNJRCkg
PSAwOwojIDE5MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5NYW5hZ2Vy
LmgiCiAgICB2aXJ0dWFsIG5zcmVzdWx0CiAgICBHZXRVUkxXaXRoSGVhZGVycyhuc0lTdXBwb3J0
cyogcGx1Z2luSW5zdCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHVybCwKICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRhcmdldCA9IF9fbnVsbCwKICAgICAgICAg
ICAgICAgICAgICAgIG5zSVBsdWdpblN0cmVhbUxpc3RlbmVyKiBzdHJlYW1MaXN0ZW5lciA9IF9f
bnVsbCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFsdEhvc3QgPSBfX251bGws
CiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByZWZlcnJlciA9IF9fbnVsbCwKICAg
ICAgICAgICAgICAgICAgICAgIFBSQm9vbCBmb3JjZUpTRW5hYmxlZCA9IDAsCiAgICAgICAgICAg
ICAgICAgICAgICBQUlVpbnQzMiBnZXRIZWFkZXJzTGVuZ3RoID0gMCwKICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGdldEhlYWRlcnMgPSBfX251bGwpID0gMDsKfTsKIyAxMjcgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNwbHVnaW4uaCIgMgoKCgoKCgojIDEgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luSW5zdGFuY2VQZWVyLmgiIDEKIyAyMiAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5JbnN0YW5jZVBlZXIuaCIKc3Ry
dWN0IEpTT2JqZWN0OwpjbGFzcyBuc0lPdXRwdXRTdHJlYW07CiMgNDIgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luSW5zdGFuY2VQZWVyLmgiCmNsYXNzIG5zSVBsdWdpbklu
c3RhbmNlUGVlciA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25z
dCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHg0YjdjZWEyMCwg
MHgwMTliLCAweDExZDIsIHsgMHg4MSwgMHg1YiwgMHgwMCwgMHg2MCwgMHgwOCwgMHgxMSwgMHg5
ZCwgMHg3YSB9fTsgcmV0dXJuIGlpZDt9CiMgNTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVn
aW4vbnNJUGx1Z2luSW5zdGFuY2VQZWVyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRWYWx1ZShu
c1BsdWdpbkluc3RhbmNlUGVlclZhcmlhYmxlIGFWYXJpYWJsZSwgdm9pZCAqIGFWYWx1ZSkgPSAw
OwojIDY4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpbkluc3RhbmNlUGVl
ci5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TUlNRVR5cGUobnNNSU1FVHlwZSAqYU1JTUVUeXBl
KSA9IDA7CiMgODAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luSW5zdGFu
Y2VQZWVyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNb2RlKG5zUGx1Z2luTW9kZSAqYU1vZGUp
ID0gMDsKIyA5NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5JbnN0YW5j
ZVBlZXIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IE5ld1N0cmVhbShuc01JTUVUeXBlIGFUeXBlLCBj
b25zdCBjaGFyICphVGFyZ2V0LCBuc0lPdXRwdXRTdHJlYW0gKiphUmVzdWx0KSA9IDA7CiMgMTA4
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpbkluc3RhbmNlUGVlci5oIgog
IHZpcnR1YWwgbnNyZXN1bHQgU2hvd1N0YXR1cyhjb25zdCBjaGFyICphTWVzc2FnZSkgPSAwOwoj
IDExOCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5JbnN0YW5jZVBlZXIu
aCIKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFdpbmRvd1NpemUoUFJVaW50MzIgYVdpZHRoLCBQUlVp
bnQzMiBhSGVpZ2h0KSA9IDA7Cgp9OwojIDEzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdp
bi9uc3BsdWdpbi5oIiAyCgoKCgoKCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4v
bnNJUGx1Z2luVGFnSW5mby5oIiAxCiMgMjIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4v
bnNJUGx1Z2luVGFnSW5mby5oIgpjbGFzcyBuc0lET01FbGVtZW50OwojIDM3ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpblRhZ0luZm8uaCIKY2xhc3MgbnNJUGx1Z2luVGFn
SW5mbyA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJ
RCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHg1ZjFlYzFkMCwgMHgwMTli
LCAweDExZDIsIHsgMHg4MSwgMHg1YiwgMHgwMCwgMHg2MCwgMHgwOCwgMHgxMSwgMHg5ZCwgMHg3
YSB9fTsgcmV0dXJuIGlpZDt9CiMgNTIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJ
UGx1Z2luVGFnSW5mby5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QXR0cmlidXRlcyhQUlVpbnQx
NiAmIGFDb3VudCwgY29uc3QgY2hhciogY29uc3QqICYgYU5hbWVzLCBjb25zdCBjaGFyKiBjb25z
dCogJiBhVmFsdWVzKSA9IDA7CiMgNjQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJ
UGx1Z2luVGFnSW5mby5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QXR0cmlidXRlKGNvbnN0IGNo
YXIgKmFOYW1lLCBjb25zdCBjaGFyICogKmFSZXN1bHQpID0gMDsKCn07CiMgMTQyICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvcGx1Z2luL25zcGx1Z2luLmgiIDIKCgoKCgoKCiMgMSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lXaW5kb3dsZXNzUGx1Z0luc3RQZWVyLmgiIDEKIyAzMCAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lXaW5kb3dsZXNzUGx1Z0luc3RQZWVyLmgi
CmNsYXNzIG5zSVdpbmRvd2xlc3NQbHVnaW5JbnN0YW5jZVBlZXIgOiBwdWJsaWMgbnNJU3VwcG9y
dHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29u
c3QgbnNJSUQgaWlkID0gezB4NTdiNGUyZjAsIDB4MDE5YiwgMHgxMWQyLCB7IDB4ODEsIDB4NWIs
IDB4MDAsIDB4NjAsIDB4MDgsIDB4MTEsIDB4OWQsIDB4N2EgfX07IHJldHVybiBpaWQ7fQoKCgoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBJbnZhbGlkYXRlUmVjdChuc1BsdWdpblJlY3QgKiBhUmVjdCkg
PSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJbnZhbGlkYXRlUmVnaW9uKG5zUGx1Z2luUmVn
aW9uIGFSZWdpb24pID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgRm9yY2VSZWRyYXcodm9p
ZCkgPSAwOwoKfTsKIyAxNTAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNwbHVnaW4u
aCIgMgojIDE2MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc3BsdWdpbi5oIgojIDEg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luTWFuYWdlcjIuaCIgMQojIDE3
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpbk1hbmFnZXIyLmgiCmNsYXNz
IG5zSVBsdWdpbjsKCmNsYXNzIG5zSUV2ZW50SGFuZGxlcjsKIyAzMyAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5NYW5hZ2VyMi5oIgpjbGFzcyBuc0lQbHVnaW5NYW5hZ2Vy
MiA6IHB1YmxpYyBuc0lQbHVnaW5NYW5hZ2VyIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5z
SUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGQyOTYyZGMwLCAweDRl
YjYsIDB4MTFkMiwgeyAweDgxLCAweDY0LCAweDAwLCAweDYwLCAweDA4LCAweDExLCAweDlkLCAw
eDdhIH19OyByZXR1cm4gaWlkO30KCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBCZWdpbldhaXRD
dXJzb3Iodm9pZCkgPSAwOwoKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEVuZFdhaXRDdXJzb3Io
dm9pZCkgPSAwOwojIDYyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpbk1h
bmFnZXIyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBTdXBwb3J0c1VSTFByb3RvY29sKGNvbnN0IGNo
YXIgKmFQcm90b2NvbCwgUFJCb29sICphUmVzdWx0KSA9IDA7CiMgNzUgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luTWFuYWdlcjIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IE5v
dGlmeVN0YXR1c0NoYW5nZShuc0lQbHVnaW4gKmFQbHVnaW4sIG5zcmVzdWx0IGFTdGF0dXMpID0g
MDsKIyA5MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5NYW5hZ2VyMi5o
IgogIHZpcnR1YWwgbnNyZXN1bHQgRmluZFByb3h5Rm9yVVJMKGNvbnN0IGNoYXIgKmFVUkwsIGNo
YXIgKiphUmVzdWx0KSA9IDA7CiMgMTAyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25z
SVBsdWdpbk1hbmFnZXIyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBSZWdpc3RlcldpbmRvdyhuc0lF
dmVudEhhbmRsZXIgKmFIYW5kbGVyLCBuc1BsdWdpblBsYXRmb3JtV2luZG93UmVmIGFXaW5kb3cp
ID0gMDsKIyAxMTMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luTWFuYWdl
cjIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFVucmVnaXN0ZXJXaW5kb3cobnNJRXZlbnRIYW5kbGVy
ICphSGFuZGxlciwgbnNQbHVnaW5QbGF0Zm9ybVdpbmRvd1JlZiBhV2luZG93KSA9IDA7CiMgMTI0
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpbk1hbmFnZXIyLmgiCiAgdmly
dHVhbCBuc3Jlc3VsdCBBbGxvY2F0ZU1lbnVJRChuc0lFdmVudEhhbmRsZXIgKmFIYW5kbGVyLCBQ
UkJvb2wgYUlzU3VibWVudSwgUFJJbnQxNiAqYVJlc3VsdCkgPSAwOwojIDEzNCAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5NYW5hZ2VyMi5oIgogIHZpcnR1YWwgbnNyZXN1
bHQgRGVhbGxvY2F0ZU1lbnVJRChuc0lFdmVudEhhbmRsZXIgKmFIYW5kbGVyLCBQUkludDE2IGFN
ZW51SUQpID0gMDsKIyAxNDUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2lu
TWFuYWdlcjIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEhhc0FsbG9jYXRlZE1lbnVJRChuc0lFdmVu
dEhhbmRsZXIgKmFIYW5kbGVyLCBQUkludDE2IGFNZW51SUQsIFBSQm9vbCAqYVJlc3VsdCkgPSAw
OwoKfTsKIyAxNjQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNwbHVnaW4uaCIgMgoK
CgoKCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSUZpbGVVdGlsaXRpZXMu
aCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSUZpbGVVdGlsaXRpZXMu
aCIKY2xhc3MgbnNJRmlsZVV0aWxpdGllcyA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6
CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQg
PSB7MHg4OWEzMWNlMCwgMHgwMTlhLCAweDExZDIsIHsgMHg4MSwgMHg1YiwgMHgwMCwgMHg2MCwg
MHgwOCwgMHgxMSwgMHg5ZCwgMHg3YSB9fTsgcmV0dXJuIGlpZDt9CiMgNDYgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9wbHVnaW4vbnNJRmlsZVV0aWxpdGllcy5oIgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0UHJvZ3JhbVBhdGgoY29uc3QgY2hhciAqICphUHJvZ3JhbVBhdGgpID0gMDsKIyA1NSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lGaWxlVXRpbGl0aWVzLmgiCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRUZW1wRGlyUGF0aChjb25zdCBjaGFyICogKmFUZW1wRGlyUGF0aCkgPSAwOwoj
IDY2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSUZpbGVVdGlsaXRpZXMuaCIKICB2
aXJ0dWFsIG5zcmVzdWx0IE5ld1RlbXBGaWxlTmFtZShjb25zdCBjaGFyICphUHJlZml4LCBQUlVp
bnQzMiBhTGVuZ3RoLCBjaGFyICogYUJ1ZmZlcikgPSAwOwoKfTsKIyAxNzIgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9wbHVnaW4vbnNwbHVnaW4uaCIgMgoKCgoKCgoKIyAxICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpblRhZ0luZm8yLmgiIDEKIyAxNyAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5UYWdJbmZvMi5oIgplbnVtIG5zUGx1Z2luVGFnVHlw
ZSB7CiAgbnNQbHVnaW5UYWdUeXBlX1Vua25vd24sCiAgbnNQbHVnaW5UYWdUeXBlX0VtYmVkLAog
IG5zUGx1Z2luVGFnVHlwZV9PYmplY3QsCiAgbnNQbHVnaW5UYWdUeXBlX0FwcGxldAp9OwojIDMx
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpblRhZ0luZm8yLmgiCmNsYXNz
IG5zSVBsdWdpblRhZ0luZm8yIDogcHVibGljIG5zSVBsdWdpblRhZ0luZm8gewogcHVibGljOgoK
ICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0g
ezB4NmE0OWM5YTAsIDB4MDE5YiwgMHgxMWQyLCB7IDB4ODEsIDB4NWIsIDB4MDAsIDB4NjAsIDB4
MDgsIDB4MTEsIDB4OWQsIDB4N2EgfX07IHJldHVybiBpaWQ7fQoKCgoKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0VGFnVHlwZShuc1BsdWdpblRhZ1R5cGUgKmFUYWdUeXBlKSA9IDA7CgoKCgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldFRhZ1RleHQoY29uc3QgY2hhciAqICphVGFnVGV4dCkgPSAwOwoj
IDU2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpblRhZ0luZm8yLmgiCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRQYXJhbWV0ZXJzKFBSVWludDE2ICYgYUNvdW50LCBjb25zdCBj
aGFyKiBjb25zdCogJiBhTmFtZXMsIGNvbnN0IGNoYXIqIGNvbnN0KiAmIGFWYWx1ZXMpID0gMDsK
IyA2NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5UYWdJbmZvMi5oIgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0UGFyYW1ldGVyKGNvbnN0IGNoYXIgKmFOYW1lLCBjb25zdCBj
aGFyICogKmFSZXN1bHQpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RG9jdW1lbnRC
YXNlKGNvbnN0IGNoYXIgKiAqYURvY3VtZW50QmFzZSkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0RG9jdW1lbnRFbmNvZGluZyhjb25zdCBjaGFyICogKmFEb2N1bWVudEVuY29kaW5n
KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFsaWdubWVudChjb25zdCBjaGFyICog
KmFFbGlnbm1lbnQpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0V2lkdGgoUFJVaW50
MzIgKmFXaWR0aCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRIZWlnaHQoUFJVaW50
MzIgKmFIZWlnaHQpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Qm9yZGVyVmVydFNw
YWNlKFBSVWludDMyICphQm9yZGVyVmVydFNwYWNlKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldEJvcmRlckhvcml6U3BhY2UoUFJVaW50MzIgKmFCb3JkZXJIb3JpelNwYWNlKSA9IDA7
CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFVuaXF1ZUlEKFBSVWludDMyICphVW5pcXVlSUQp
ID0gMDsKIyAxMjYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luVGFnSW5m
bzIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERPTUVsZW1lbnQobnNJRE9NRWxlbWVudCAqICph
RE9NRWxlbWVudCkgPSAwOwoKfTsKIyAxODAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4v
bnNwbHVnaW4uaCIgMgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJT3V0cHV0
U3RyZWFtLmgiIDEKIyAxNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSU91dHB1dFN0
cmVhbS5oIgpjbGFzcyBuc0lPdXRwdXRTdHJlYW07CgpjbGFzcyBuc0lJbnB1dFN0cmVhbTsKIyA0
MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSU91dHB1dFN0cmVhbS5oIgp0eXBlZGVm
IG5zcmVzdWx0ICgqIG5zUmVhZFNlZ21lbnRGdW4pKG5zSU91dHB1dFN0cmVhbSAqYU91dFN0cmVh
bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphQ2xvc3VyZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICphVG9TZWdtZW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSVWludDMyIGFGcm9tT2Zmc2V0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSVWludDMyIGFDb3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUlVpbnQzMiAqYVJlYWRDb3Vu
dCk7CiMgNTYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lPdXRwdXRTdHJlYW0uaCIK
Y2xhc3MgbnNJT3V0cHV0U3RyZWFtIDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAg
c3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsw
eDBkMGFjZDJhLCAweDYxYjQsIDB4MTFkNCwgeyAweDk4LCAweDc3LCAweDAwLCAweGMwLCAweDRm
LCAweGEwLCAweGNmLCAweDRhIH19OyByZXR1cm4gaWlkO30KIyA3MyAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL3hwY29tL25zSU91dHB1dFN0cmVhbS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgQ2xvc2Uo
dm9pZCkgPSAwOwojIDgyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJT3V0cHV0U3Ry
ZWFtLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBGbHVzaCh2b2lkKSA9IDA7CiMgOTcgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lPdXRwdXRTdHJlYW0uaCIKICB2aXJ0dWFsIG5zcmVzdWx0
IFdyaXRlKGNvbnN0IGNoYXIgKmFCdWYsIFBSVWludDMyIGFDb3VudCwgUFJVaW50MzIgKl9yZXR2
YWwpID0gMDsKIyAxMTggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lPdXRwdXRTdHJl
YW0uaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFdyaXRlRnJvbShuc0lJbnB1dFN0cmVhbSAqYUZyb21T
dHJlYW0sIFBSVWludDMyIGFDb3VudCwgUFJVaW50MzIgKl9yZXR2YWwpID0gMDsKIyAxNDEgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lPdXRwdXRTdHJlYW0uaCIKICB2aXJ0dWFsIG5z
cmVzdWx0IFdyaXRlU2VnbWVudHMobnNSZWFkU2VnbWVudEZ1biBhUmVhZGVyLCB2b2lkICogYUNs
b3N1cmUsIFBSVWludDMyIGFDb3VudCwgUFJVaW50MzIgKl9yZXR2YWwpID0gMDsKIyAxNTAgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lPdXRwdXRTdHJlYW0uaCIKICB2aXJ0dWFsIG5z
cmVzdWx0IElzTm9uQmxvY2tpbmcoUFJCb29sICpfcmV0dmFsKSA9IDA7Cgp9OwojIDE4MiAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc3BsdWdpbi5oIiAyCiMgMjIgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luSW5zdGFuY2VPd25lci5oIiAyCmNsYXNzIG5zSVBs
dWdpbkluc3RhbmNlOwoKY2xhc3MgbnNJRG9jdW1lbnQ7CiMgMzQgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9wbHVnaW4vbnNJUGx1Z2luSW5zdGFuY2VPd25lci5oIgpjbGFzcyBuc0lQbHVnaW5JbnN0
YW5jZU93bmVyIDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0
IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDE4MjcwODcwLCAw
eDMyZjEsIDB4MTFkMiwgeyAweGE4LCAweDMwLCAweDAwLCAweDQwLCAweDk1LCAweDlhLCAweDI4
LCAweGM5IH19OyByZXR1cm4gaWlkO30KCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0SW5zdGFu
Y2UobnNJUGx1Z2luSW5zdGFuY2UgKmFJbnN0YW5jZSkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRJbnN0YW5jZShuc0lQbHVnaW5JbnN0YW5jZSAqICYgYUluc3RhbmNlKSA9IDA7CgoK
CgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRXaW5kb3cobnNQbHVnaW5XaW5kb3cgKiAmIGFXaW5k
b3cpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TW9kZShuc1BsdWdpbk1vZGUgKmFN
b2RlKSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ3JlYXRlV2lkZ2V0KHZvaWQpID0g
MDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0CiAgR2V0VVJMKGNvbnN0IGNoYXIgKmFVUkwsIGNv
bnN0IGNoYXIgKmFUYXJnZXQsCiAgICAgICAgIHZvaWQgKmFQb3N0RGF0YSwgUFJVaW50MzIgYVBv
c3REYXRhTGVuLAogICAgICAgICB2b2lkICphSGVhZGVyc0RhdGEsIFBSVWludDMyIGFIZWFkZXJz
RGF0YUxlbiwKICAgICAgICAgUFJCb29sIGFJc0ZpbGUgPSAwKSA9IDA7CgoKCgogIHZpcnR1YWwg
bnNyZXN1bHQgU2hvd1N0YXR1cyhjb25zdCBjaGFyICphU3RhdHVzTXNnKSA9IDA7CgogIHZpcnR1
YWwgbnNyZXN1bHQKICBTaG93U3RhdHVzKGNvbnN0IFBSVW5pY2hhciAqYVN0YXR1c01zZykgPSAw
OwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERvY3VtZW50KG5zSURvY3VtZW50ICogKmFEb2N1
bWVudCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJbnZhbGlkYXRlUmVjdChuc1BsdWdp
blJlY3QgKiBhUmVjdCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJbnZhbGlkYXRlUmVn
aW9uKG5zUGx1Z2luUmVnaW9uIGFSZWdpb24pID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQg
Rm9yY2VSZWRyYXcodm9pZCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRWYWx1ZShu
c1BsdWdpbkluc3RhbmNlUGVlclZhcmlhYmxlIGFWYXJpYWJsZSwgdm9pZCAqIGFWYWx1ZSkgPSAw
OwoKfTsKIyAxOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5Ib3N0Lmgi
IDIKCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJU3RyZWFtTGlzdGVuZXIu
aCIgMQojIDEwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJU3RyZWFtTGlzdGVuZXIu
aCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJUmVxdWVzdE9ic2VydmVyLmgi
IDEKIyAxNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVJlcXVlc3RPYnNlcnZlci5o
IgpjbGFzcyBuc0lSZXF1ZXN0OwojIDMyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJ
UmVxdWVzdE9ic2VydmVyLmgiCmNsYXNzIG5zSVJlcXVlc3RPYnNlcnZlciA6IHB1YmxpYyBuc0lT
dXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRp
YyBjb25zdCBuc0lJRCBpaWQgPSB7MHhmZDkxZTJlMCwgMHgxNDgxLCAweDExZDMsIHsgMHg5Mywg
MHgzMywgMHgwMCwgMHgxMCwgMHg0YiwgMHhhMCwgMHhmZCwgMHg0MCB9fTsgcmV0dXJuIGlpZDt9
CiMgNDcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lSZXF1ZXN0T2JzZXJ2ZXIuaCIK
ICB2aXJ0dWFsIG5zcmVzdWx0IE9uU3RhcnRSZXF1ZXN0KG5zSVJlcXVlc3QgKmFSZXF1ZXN0LCBu
c0lTdXBwb3J0cyAqYUNvbnRleHQpID0gMDsKIyA2MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25l
Y2tvL25zSVJlcXVlc3RPYnNlcnZlci5oIgogIHZpcnR1YWwgbnNyZXN1bHQgT25TdG9wUmVxdWVz
dChuc0lSZXF1ZXN0ICphUmVxdWVzdCwgbnNJU3VwcG9ydHMgKmFDb250ZXh0LCBuc3Jlc3VsdCBh
U3RhdHVzQ29kZSkgPSAwOwoKfTsKIyAxMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25z
SVN0cmVhbUxpc3RlbmVyLmgiIDIKCgoKCgoKY2xhc3MgbnNJSW5wdXRTdHJlYW07CiMgMzIgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lTdHJlYW1MaXN0ZW5lci5oIgpjbGFzcyBuc0lT
dHJlYW1MaXN0ZW5lciA6IHB1YmxpYyBuc0lSZXF1ZXN0T2JzZXJ2ZXIgewogcHVibGljOgoKICBz
dGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4
MWE2MzcwMjAsIDB4MTQ4MiwgMHgxMWQzLCB7IDB4OTMsIDB4MzMsIDB4MDAsIDB4MTAsIDB4NGIs
IDB4YTAsIDB4ZmQsIDB4NDAgfX07IHJldHVybiBpaWQ7fQojIDUyICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvbmVja28vbnNJU3RyZWFtTGlzdGVuZXIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IE9uRGF0
YUF2YWlsYWJsZShuc0lSZXF1ZXN0ICphUmVxdWVzdCwgbnNJU3VwcG9ydHMgKmFDb250ZXh0LCBu
c0lJbnB1dFN0cmVhbSAqYUlucHV0U3RyZWFtLCBQUlVpbnQzMiBhT2Zmc2V0LCBQUlVpbnQzMiBh
Q291bnQpID0gMDsKCn07CiMgMjMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1
Z2luSG9zdC5oIiAyCgoKCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN0cmlu
Z1N0cmVhbS5oIiAxCiMgMzEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTdHJpbmdT
dHJlYW0uaCIKY2xhc3MgbnNJU3RyaW5nSW5wdXRTdHJlYW0gOiBwdWJsaWMgbnNJU3VwcG9ydHMg
ewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3Qg
bnNJSUQgaWlkID0gezB4NDUwY2QyZDQsIDB4ZjBmZCwgMHg0MjRkLCB7IDB4YjMsIDB4NjUsIDB4
YjEsIDB4MjUsIDB4MWYsIDB4ODAsIDB4ZmQsIDB4NTMgfX07IHJldHVybiBpaWQ7fQojIDQ2ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJU3RyaW5nU3RyZWFtLmgiCiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXREYXRhKGNvbnN0IGNoYXIgKmRhdGEsIFBSSW50MzIgZGF0YUxlbikgPSAwOwoj
IDYxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJU3RyaW5nU3RyZWFtLmgiCiAgdmly
dHVhbCBuc3Jlc3VsdCBBZG9wdERhdGEoY2hhciAqIGRhdGEsIFBSSW50MzIgZGF0YUxlbikgPSAw
OwojIDcyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJU3RyaW5nU3RyZWFtLmgiCiAg
dmlydHVhbCBuc3Jlc3VsdCBTaGFyZURhdGEoY29uc3QgY2hhciAqZGF0YSwgUFJJbnQzMiBkYXRh
TGVuKSA9IDA7Cgp9OwojIDE1MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN0cmlu
Z1N0cmVhbS5oIgpleHRlcm4gIkMiIG5zcmVzdWx0IE5TX05ld1N0cmluZ0lucHV0U3RyZWFtKAog
ICAgbnNJSW5wdXRTdHJlYW0qKiBhU3RyZWFtUmVzdWx0LAogICAgY29uc3QgbnNBU3RyaW5nJiBh
U3RyaW5nVG9SZWFkKTsKCgoKZXh0ZXJuICJDIiBuc3Jlc3VsdCBOU19OZXdDU3RyaW5nSW5wdXRT
dHJlYW0oCiAgICBuc0lJbnB1dFN0cmVhbSoqIGFTdHJlYW1SZXN1bHQsCiAgICBjb25zdCBuc0FD
U3RyaW5nJiBhU3RyaW5nVG9SZWFkKTsKCgoKZXh0ZXJuICJDIiBuc3Jlc3VsdCBOU19OZXdDaGFy
SW5wdXRTdHJlYW0oCiAgICBuc0lTdXBwb3J0cyoqIGFTdHJlYW1SZXN1bHQsCiAgICBjb25zdCBj
aGFyKiBhU3RyaW5nVG9SZWFkKTsKCgoKZXh0ZXJuICJDIiBuc3Jlc3VsdCBOU19OZXdDaGFyT3V0
cHV0U3RyZWFtKAogICAgbnNJU3VwcG9ydHMqKiBhU3RyZWFtUmVzdWx0LAogICAgY2hhcioqIGFT
dHJpbmdUb0NoYW5nZSk7CgoKCmV4dGVybiAiQyIgbnNyZXN1bHQgTlNfTmV3Qnl0ZUlucHV0U3Ry
ZWFtKAogICAgbnNJU3VwcG9ydHMqKiBhU3RyZWFtUmVzdWx0LAogICAgY29uc3QgY2hhciogYVN0
cmluZ1RvUmVhZCwKICAgIFBSSW50MzIgYUxlbmd0aCk7CiMgMjcgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9wbHVnaW4vbnNJUGx1Z2luSG9zdC5oIiAyCiMgMzUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9wbHVnaW4vbnNJUGx1Z2luSG9zdC5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNr
by9uc05ldFV0aWwuaCIgMQojIDQxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNOZXRV
dGlsLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zTmV0RXJyb3IuaCIgMQoj
IDQyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNOZXRVdGlsLmgiIDIKIyAxICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNOZXRDSUQuaCIgMQojIDQzICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvbmVja28vbnNOZXRVdGlsLmgiIDIKCgoKCiMgMSAiL3Zhci90bXAvcG9ydGFnZS9t
b3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpby5oIiAxCiMg
NDcgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5j
bHVkZS9uc3ByL3ByaW8uaCIKIyAxICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dv
cmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlucnZhbC5oIiAxCiMgNTIgIi92YXIvdG1w
L3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3By
aW5ydmFsLmgiCmV4dGVybiAiQyIgewoKCgoKCnR5cGVkZWYgUFJVaW50MzIgUFJJbnRlcnZhbFRp
bWU7CiMgMTA1ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9k
aXN0L2luY2x1ZGUvbnNwci9wcmlucnZhbC5oIgpleHRlcm4gUFJJbnRlcnZhbFRpbWUgUFJfSW50
ZXJ2YWxOb3codm9pZCk7CiMgMTIzICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dv
cmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlucnZhbC5oIgpleHRlcm4gUFJVaW50MzIg
UFJfVGlja3NQZXJTZWNvbmQodm9pZCk7CiMgMTQyICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEt
MS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlucnZhbC5oIgpleHRlcm4g
UFJJbnRlcnZhbFRpbWUgUFJfU2Vjb25kc1RvSW50ZXJ2YWwoUFJVaW50MzIgc2Vjb25kcyk7CmV4
dGVybiBQUkludGVydmFsVGltZSBQUl9NaWxsaXNlY29uZHNUb0ludGVydmFsKFBSVWludDMyIG1p
bGxpKTsKZXh0ZXJuIFBSSW50ZXJ2YWxUaW1lIFBSX01pY3Jvc2Vjb25kc1RvSW50ZXJ2YWwoUFJV
aW50MzIgbWljcm8pOwojIDE2MyAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3Jr
L21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpbnJ2YWwuaCIKZXh0ZXJuIFBSVWludDMyIFBS
X0ludGVydmFsVG9TZWNvbmRzKFBSSW50ZXJ2YWxUaW1lIHRpY2tzKTsKZXh0ZXJuIFBSVWludDMy
IFBSX0ludGVydmFsVG9NaWxsaXNlY29uZHMoUFJJbnRlcnZhbFRpbWUgdGlja3MpOwpleHRlcm4g
UFJVaW50MzIgUFJfSW50ZXJ2YWxUb01pY3Jvc2Vjb25kcyhQUkludGVydmFsVGltZSB0aWNrcyk7
Cgp9CiMgNDggIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rp
c3QvaW5jbHVkZS9uc3ByL3ByaW8uaCIgMgojIDEgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0x
LjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3ByaW5ldC5oIiAxCiMgNjUgIi92
YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9u
c3ByL3ByaW5ldC5oIgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc29ja2V0LmgiIDEgMwojIDI1ICIv
dXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAzCmV4dGVybiAiQyIgewoKIyAxICIvdXNyL2luY2x1
ZGUvc3lzL3Vpby5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3N5cy91aW8uaCIgMwpleHRlcm4g
IkMiIHsKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3Vpby5oIiAxIDMKIyA0MiAiL3Vzci9pbmNs
dWRlL2JpdHMvdWlvLmgiIDMKc3RydWN0IGlvdmVjCiAgewogICAgdm9pZCAqaW92X2Jhc2U7CiAg
ICBzaXplX3QgaW92X2xlbjsKICB9OwojIDMwICIvdXNyL2luY2x1ZGUvc3lzL3Vpby5oIiAyIDMK
CgoKCgoKCmV4dGVybiBzc2l6ZV90IHJlYWR2IChpbnQgX19mZCwgX19jb25zdCBzdHJ1Y3QgaW92
ZWMgKl9fdmVjdG9yLCBpbnQgX19jb3VudCkKICAgICB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIHNz
aXplX3Qgd3JpdGV2IChpbnQgX19mZCwgX19jb25zdCBzdHJ1Y3QgaW92ZWMgKl9fdmVjdG9yLCBp
bnQgX19jb3VudCkKICAgICB0aHJvdyAoKTsKCn0KIyAyOCAiL3Vzci9pbmNsdWRlL3N5cy9zb2Nr
ZXQuaCIgMiAzCgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4yLjIv
aW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzAgIi91c3IvaW5jbHVkZS9zeXMvc29ja2V0LmgiIDIg
MwoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDEgMwojIDI5ICIvdXNyL2lu
Y2x1ZGUvYml0cy9zb2NrZXQuaCIgMwojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51
eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzAgIi91c3IvaW5jbHVkZS9iaXRz
L3NvY2tldC5oIiAyIDMKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8z
LjIuMi9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIyAzMiAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2V0
LmgiIDIgMwoKCgoKdHlwZWRlZiBfX3NvY2tsZW5fdCBzb2NrbGVuX3Q7CgoKCgplbnVtIF9fc29j
a2V0X3R5cGUKewogIFNPQ0tfU1RSRUFNID0gMSwKCgogIFNPQ0tfREdSQU0gPSAyLAoKCiAgU09D
S19SQVcgPSAzLAoKICBTT0NLX1JETSA9IDQsCgogIFNPQ0tfU0VRUEFDS0VUID0gNSwKCgogIFNP
Q0tfUEFDS0VUID0gMTAKCgoKfTsKIyAxNDIgIi91c3IvaW5jbHVkZS9iaXRzL3NvY2tldC5oIiAz
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2FkZHIuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVk
ZS9iaXRzL3NvY2thZGRyLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgc2FfZmFtaWx5
X3Q7CiMgMTQzICIvdXNyL2luY2x1ZGUvYml0cy9zb2NrZXQuaCIgMiAzCgoKc3RydWN0IHNvY2th
ZGRyCiAgewogICAgc2FfZmFtaWx5X3Qgc2FfZmFtaWx5OwogICAgY2hhciBzYV9kYXRhWzE0XTsK
ICB9OwojIDE2MiAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDMKc3RydWN0IHNvY2thZGRy
X3N0b3JhZ2UKICB7CiAgICBzYV9mYW1pbHlfdCBzc19mYW1pbHk7CiAgICBfX3VpbnQzMl90IF9f
c3NfYWxpZ247CiAgICBjaGFyIF9fc3NfcGFkZGluZ1soMTI4IC0gKDIgKiBzaXplb2YgKF9fdWlu
dDMyX3QpKSldOwogIH07CgoKCmVudW0KICB7CiAgICBNU0dfT09CID0gMHgwMSwKCiAgICBNU0df
UEVFSyA9IDB4MDIsCgogICAgTVNHX0RPTlRST1VURSA9IDB4MDQsCgoKCiAgICBNU0dfVFJZSEFS
RCA9IE1TR19ET05UUk9VVEUsCgoKICAgIE1TR19DVFJVTkMgPSAweDA4LAoKICAgIE1TR19QUk9Y
WSA9IDB4MTAsCgogICAgTVNHX1RSVU5DID0gMHgyMCwKCiAgICBNU0dfRE9OVFdBSVQgPSAweDQw
LAoKICAgIE1TR19FT1IgPSAweDgwLAoKICAgIE1TR19XQUlUQUxMID0gMHgxMDAsCgogICAgTVNH
X0ZJTiA9IDB4MjAwLAoKICAgIE1TR19TWU4gPSAweDQwMCwKCiAgICBNU0dfQ09ORklSTSA9IDB4
ODAwLAoKICAgIE1TR19SU1QgPSAweDEwMDAsCgogICAgTVNHX0VSUlFVRVVFID0gMHgyMDAwLAoK
ICAgIE1TR19OT1NJR05BTCA9IDB4NDAwMCwKCiAgICBNU0dfTU9SRSA9IDB4ODAwMAoKICB9OwoK
CgoKc3RydWN0IG1zZ2hkcgogIHsKICAgIHZvaWQgKm1zZ19uYW1lOwogICAgc29ja2xlbl90IG1z
Z19uYW1lbGVuOwoKICAgIHN0cnVjdCBpb3ZlYyAqbXNnX2lvdjsKICAgIGludCBtc2dfaW92bGVu
OwoKICAgIHZvaWQgKm1zZ19jb250cm9sOwogICAgc29ja2xlbl90IG1zZ19jb250cm9sbGVuOwoK
ICAgIGludCBtc2dfZmxhZ3M7CiAgfTsKCgpzdHJ1Y3QgY21zZ2hkcgogIHsKICAgIHNpemVfdCBj
bXNnX2xlbjsKCiAgICBpbnQgY21zZ19sZXZlbDsKICAgIGludCBjbXNnX3R5cGU7CgoKCiAgfTsK
IyAyNTcgIi91c3IvaW5jbHVkZS9iaXRzL3NvY2tldC5oIiAzCmV4dGVybiBzdHJ1Y3QgY21zZ2hk
ciAqX19jbXNnX254dGhkciAoc3RydWN0IG1zZ2hkciAqX19taGRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjbXNnaGRyICpfX2Ntc2cpIHRocm93ICgpOwoK
CgoKZXh0ZXJuIF9faW5saW5lIHN0cnVjdCBjbXNnaGRyICoKX19jbXNnX254dGhkciAoc3RydWN0
IG1zZ2hkciAqX19taGRyLCBzdHJ1Y3QgY21zZ2hkciAqX19jbXNnKSB0aHJvdyAoKQp7CiAgaWYg
KChzaXplX3QpIF9fY21zZy0+Y21zZ19sZW4gPCBzaXplb2YgKHN0cnVjdCBjbXNnaGRyKSkKCiAg
ICByZXR1cm4gMDsKCiAgX19jbXNnID0gKHN0cnVjdCBjbXNnaGRyICopICgodW5zaWduZWQgY2hh
ciAqKSBfX2Ntc2cKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKCgoX19jbXNnLT5j
bXNnX2xlbikgKyBzaXplb2YgKHNpemVfdCkgLSAxKSAmIChzaXplX3QpIH4oc2l6ZW9mIChzaXpl
X3QpIC0gMSkpKTsKICBpZiAoKHVuc2lnbmVkIGNoYXIgKikgKF9fY21zZyArIDEpID4gKCh1bnNp
Z25lZCBjaGFyICopIF9fbWhkci0+bXNnX2NvbnRyb2wKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICsgX19taGRyLT5tc2dfY29udHJvbGxlbikKICAgICAgfHwgKCh1bnNp
Z25lZCBjaGFyICopIF9fY21zZyArICgoKF9fY21zZy0+Y21zZ19sZW4pICsgc2l6ZW9mIChzaXpl
X3QpIC0gMSkgJiAoc2l6ZV90KSB+KHNpemVvZiAoc2l6ZV90KSAtIDEpKQogICAgICAgICAgPiAo
KHVuc2lnbmVkIGNoYXIgKikgX19taGRyLT5tc2dfY29udHJvbCArIF9fbWhkci0+bXNnX2NvbnRy
b2xsZW4pKSkKCiAgICByZXR1cm4gMDsKICByZXR1cm4gX19jbXNnOwp9CgoKCgplbnVtCiAgewog
ICAgU0NNX1JJR0hUUyA9IDB4MDEsCgoKICAgIFNDTV9DUkVERU5USUFMUyA9IDB4MDIsCgoKICAg
IF9fU0NNX0NPTk5FQ1QgPSAweDAzCiAgfTsKCgoKc3RydWN0IHVjcmVkCnsKICBwaWRfdCBwaWQ7
CiAgdWlkX3QgdWlkOwogIGdpZF90IGdpZDsKfTsKCgojIDEgIi91c3IvaW5jbHVkZS9hc20vc29j
a2V0LmgiIDEgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9hc20vc29ja2lvcy5oIiAxIDMKIyA1ICIv
dXNyL2luY2x1ZGUvYXNtL3NvY2tldC5oIiAyIDMKIyAzMDYgIi91c3IvaW5jbHVkZS9iaXRzL3Nv
Y2tldC5oIiAyIDMKCgoKc3RydWN0IGxpbmdlcgogIHsKICAgIGludCBsX29ub2ZmOwogICAgaW50
IGxfbGluZ2VyOwogIH07CiMgMzYgIi91c3IvaW5jbHVkZS9zeXMvc29ja2V0LmgiIDIgMwoKCgoK
c3RydWN0IG9zb2NrYWRkcgogIHsKICAgIHVuc2lnbmVkIHNob3J0IGludCBzYV9mYW1pbHk7CiAg
ICB1bnNpZ25lZCBjaGFyIHNhX2RhdGFbMTRdOwogIH07CgoKCgplbnVtCnsKICBTSFVUX1JEID0g
MCwKCiAgU0hVVF9XUiwKCiAgU0hVVF9SRFdSCgp9OwojIDEwMCAiL3Vzci9pbmNsdWRlL3N5cy9z
b2NrZXQuaCIgMwpleHRlcm4gaW50IHNvY2tldCAoaW50IF9fZG9tYWluLCBpbnQgX190eXBlLCBp
bnQgX19wcm90b2NvbCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBzb2NrZXRwYWlyIChpbnQg
X19kb21haW4sIGludCBfX3R5cGUsIGludCBfX3Byb3RvY29sLAogICAgICAgICAgICAgICAgICAg
ICAgIGludCBfX2Zkc1syXSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBiaW5kIChpbnQgX19mZCwg
X19jb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKiBfX2FkZHIsIHNvY2tsZW5fdCBfX2xlbikKICAgICB0
aHJvdyAoKTsKCgpleHRlcm4gaW50IGdldHNvY2tuYW1lIChpbnQgX19mZCwgc3RydWN0IHNvY2th
ZGRyICpfX3Jlc3RyaWN0IF9fYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgc29ja2xlbl90
ICpfX3Jlc3RyaWN0IF9fbGVuKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IGNvbm5lY3QgKGlu
dCBfX2ZkLCBfX2NvbnN0IHN0cnVjdCBzb2NrYWRkciAqIF9fYWRkciwgc29ja2xlbl90IF9fbGVu
KQogICAgIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGdldHBlZXJuYW1lIChpbnQgX19mZCwgc3Ry
dWN0IHNvY2thZGRyICpfX3Jlc3RyaWN0IF9fYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAg
c29ja2xlbl90ICpfX3Jlc3RyaWN0IF9fbGVuKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHNzaXplX3Qg
c2VuZCAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqX19idWYsIHNpemVfdCBfX24sIGludCBfX2Zs
YWdzKQogICAgIHRocm93ICgpOwoKCgpleHRlcm4gc3NpemVfdCByZWN2IChpbnQgX19mZCwgdm9p
ZCAqX19idWYsIHNpemVfdCBfX24sIGludCBfX2ZsYWdzKQogICAgIHRocm93ICgpOwoKCgpleHRl
cm4gc3NpemVfdCBzZW5kdG8gKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKl9fYnVmLCBzaXplX3Qg
X19uLAogICAgICAgICAgICAgICAgICAgICAgIGludCBfX2ZsYWdzLCBfX2NvbnN0IHN0cnVjdCBz
b2NrYWRkciAqIF9fYWRkciwKICAgICAgICAgICAgICAgICAgICAgICBzb2NrbGVuX3QgX19hZGRy
X2xlbikgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHNzaXplX3QgcmVjdmZyb20gKGludCBfX2ZkLCB2
b2lkICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19uLCBpbnQgX19mbGFncywKICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkciAqX19yZXN0cmljdCBfX2FkZHIsIHNvY2ts
ZW5fdCAqX19yZXN0cmljdCBfX2FkZHJfbGVuKQogICAgIHRocm93ICgpOwoKCgoKZXh0ZXJuIHNz
aXplX3Qgc2VuZG1zZyAoaW50IF9fZmQsIF9fY29uc3Qgc3RydWN0IG1zZ2hkciAqX19tZXNzYWdl
LCBpbnQgX19mbGFncykKICAgICB0aHJvdyAoKTsKCgoKZXh0ZXJuIHNzaXplX3QgcmVjdm1zZyAo
aW50IF9fZmQsIHN0cnVjdCBtc2doZHIgKl9fbWVzc2FnZSwgaW50IF9fZmxhZ3MpCiAgICAgdGhy
b3cgKCk7CgoKCgoKZXh0ZXJuIGludCBnZXRzb2Nrb3B0IChpbnQgX19mZCwgaW50IF9fbGV2ZWws
IGludCBfX29wdG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqX19yZXN0cmljdCBf
X29wdHZhbCwKICAgICAgICAgICAgICAgICAgICAgICBzb2NrbGVuX3QgKl9fcmVzdHJpY3QgX19v
cHRsZW4pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBzZXRzb2Nrb3B0IChpbnQgX19mZCwgaW50
IF9fbGV2ZWwsIGludCBfX29wdG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2
b2lkICpfX29wdHZhbCwgc29ja2xlbl90IF9fb3B0bGVuKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4g
aW50IGxpc3RlbiAoaW50IF9fZmQsIGludCBfX24pIHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50
IGFjY2VwdCAoaW50IF9fZmQsIHN0cnVjdCBzb2NrYWRkciAqX19yZXN0cmljdCBfX2FkZHIsCiAg
ICAgICAgICAgICAgICAgICBzb2NrbGVuX3QgKl9fcmVzdHJpY3QgX19hZGRyX2xlbikKICAgICB0
aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQgc2h1dGRvd24gKGludCBfX2ZkLCBpbnQgX19ob3cp
IHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBzb2NrYXRtYXJrIChpbnQgX19mZCkgdGhyb3cgKCk7
CgoKCgoKCgpleHRlcm4gaW50IGlzZmR0eXBlIChpbnQgX19mZCwgaW50IF9fZmR0eXBlKSB0aHJv
dyAoKTsKCgp9CiMgNjYgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3pp
bGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3ByaW5ldC5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL25ldGlu
ZXQvaW4uaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDMKIyAxICIvdXNy
L2luY2x1ZGUvc3RkaW50LmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUvc3RkaW50LmgiIDMKIyAx
ICIvdXNyL2luY2x1ZGUvYml0cy93b3Jkc2l6ZS5oIiAxIDMKIyAyOSAiL3Vzci9pbmNsdWRlL3N0
ZGludC5oIiAyIDMKIyA0OSAiL3Vzci9pbmNsdWRlL3N0ZGludC5oIiAzCnR5cGVkZWYgdW5zaWdu
ZWQgY2hhciB1aW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1aW50MTZfdDsKCnR5
cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMl90OwoKCgoKCl9fZXh0ZW5zaW9uX18KdHlwZWRlZiB1
bnNpZ25lZCBsb25nIGxvbmcgaW50IHVpbnQ2NF90OwoKCgoKCgp0eXBlZGVmIHNpZ25lZCBjaGFy
IGludF9sZWFzdDhfdDsKdHlwZWRlZiBzaG9ydCBpbnQgaW50X2xlYXN0MTZfdDsKdHlwZWRlZiBp
bnQgaW50X2xlYXN0MzJfdDsKCgoKX19leHRlbnNpb25fXwp0eXBlZGVmIGxvbmcgbG9uZyBpbnQg
aW50X2xlYXN0NjRfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnRfbGVhc3Q4X3Q7CnR5
cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVpbnRfbGVhc3QxNl90Owp0eXBlZGVmIHVuc2lnbmVk
IGludCB1aW50X2xlYXN0MzJfdDsKCgoKX19leHRlbnNpb25fXwp0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgbG9uZyBpbnQgdWludF9sZWFzdDY0X3Q7CgoKCgoKCnR5cGVkZWYgc2lnbmVkIGNoYXIgaW50
X2Zhc3Q4X3Q7CgoKCgoKdHlwZWRlZiBpbnQgaW50X2Zhc3QxNl90Owp0eXBlZGVmIGludCBpbnRf
ZmFzdDMyX3Q7Cl9fZXh0ZW5zaW9uX18KdHlwZWRlZiBsb25nIGxvbmcgaW50IGludF9mYXN0NjRf
dDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnRfZmFzdDhfdDsKCgoKCgp0eXBlZGVmIHVu
c2lnbmVkIGludCB1aW50X2Zhc3QxNl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50X2Zhc3Qz
Ml90OwpfX2V4dGVuc2lvbl9fCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCB1aW50X2Zh
c3Q2NF90OwojIDEyNiAiL3Vzci9pbmNsdWRlL3N0ZGludC5oIiAzCnR5cGVkZWYgaW50IGludHB0
cl90OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnRwdHJfdDsKIyAxMzggIi91c3IvaW5jbHVk
ZS9zdGRpbnQuaCIgMwpfX2V4dGVuc2lvbl9fCnR5cGVkZWYgbG9uZyBsb25nIGludCBpbnRtYXhf
dDsKX19leHRlbnNpb25fXwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgdWludG1heF90
OwojIDI0ICIvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAyIDMKCgoKZXh0ZXJuICJDIiB7CgoK
ZW51bQogIHsKICAgIElQUFJPVE9fSVAgPSAwLAoKICAgIElQUFJPVE9fSE9QT1BUUyA9IDAsCgog
ICAgSVBQUk9UT19JQ01QID0gMSwKCiAgICBJUFBST1RPX0lHTVAgPSAyLAoKICAgIElQUFJPVE9f
SVBJUCA9IDQsCgogICAgSVBQUk9UT19UQ1AgPSA2LAoKICAgIElQUFJPVE9fRUdQID0gOCwKCiAg
ICBJUFBST1RPX1BVUCA9IDEyLAoKICAgIElQUFJPVE9fVURQID0gMTcsCgogICAgSVBQUk9UT19J
RFAgPSAyMiwKCiAgICBJUFBST1RPX1RQID0gMjksCgogICAgSVBQUk9UT19JUFY2ID0gNDEsCgog
ICAgSVBQUk9UT19ST1VUSU5HID0gNDMsCgogICAgSVBQUk9UT19GUkFHTUVOVCA9IDQ0LAoKICAg
IElQUFJPVE9fUlNWUCA9IDQ2LAoKICAgIElQUFJPVE9fR1JFID0gNDcsCgogICAgSVBQUk9UT19F
U1AgPSA1MCwKCiAgICBJUFBST1RPX0FIID0gNTEsCgogICAgSVBQUk9UT19JQ01QVjYgPSA1OCwK
CiAgICBJUFBST1RPX05PTkUgPSA1OSwKCiAgICBJUFBST1RPX0RTVE9QVFMgPSA2MCwKCiAgICBJ
UFBST1RPX01UUCA9IDkyLAoKICAgIElQUFJPVE9fRU5DQVAgPSA5OCwKCiAgICBJUFBST1RPX1BJ
TSA9IDEwMywKCiAgICBJUFBST1RPX0NPTVAgPSAxMDgsCgogICAgSVBQUk9UT19SQVcgPSAyNTUs
CgogICAgSVBQUk9UT19NQVgKICB9OwoKCgp0eXBlZGVmIHVpbnQxNl90IGluX3BvcnRfdDsKCgpl
bnVtCiAgewogICAgSVBQT1JUX0VDSE8gPSA3LAogICAgSVBQT1JUX0RJU0NBUkQgPSA5LAogICAg
SVBQT1JUX1NZU1RBVCA9IDExLAogICAgSVBQT1JUX0RBWVRJTUUgPSAxMywKICAgIElQUE9SVF9O
RVRTVEFUID0gMTUsCiAgICBJUFBPUlRfRlRQID0gMjEsCiAgICBJUFBPUlRfVEVMTkVUID0gMjMs
CiAgICBJUFBPUlRfU01UUCA9IDI1LAogICAgSVBQT1JUX1RJTUVTRVJWRVIgPSAzNywKICAgIElQ
UE9SVF9OQU1FU0VSVkVSID0gNDIsCiAgICBJUFBPUlRfV0hPSVMgPSA0MywKICAgIElQUE9SVF9N
VFAgPSA1NywKCiAgICBJUFBPUlRfVEZUUCA9IDY5LAogICAgSVBQT1JUX1JKRSA9IDc3LAogICAg
SVBQT1JUX0ZJTkdFUiA9IDc5LAogICAgSVBQT1JUX1RUWUxJTksgPSA4NywKICAgIElQUE9SVF9T
VVBEVVAgPSA5NSwKCgogICAgSVBQT1JUX0VYRUNTRVJWRVIgPSA1MTIsCiAgICBJUFBPUlRfTE9H
SU5TRVJWRVIgPSA1MTMsCiAgICBJUFBPUlRfQ01EU0VSVkVSID0gNTE0LAogICAgSVBQT1JUX0VG
U1NFUlZFUiA9IDUyMCwKCgogICAgSVBQT1JUX0JJRkZVRFAgPSA1MTIsCiAgICBJUFBPUlRfV0hP
U0VSVkVSID0gNTEzLAogICAgSVBQT1JUX1JPVVRFU0VSVkVSID0gNTIwLAoKCiAgICBJUFBPUlRf
UkVTRVJWRUQgPSAxMDI0LAoKCiAgICBJUFBPUlRfVVNFUlJFU0VSVkVEID0gNTAwMAogIH07CgoK
CnR5cGVkZWYgdWludDMyX3QgaW5fYWRkcl90OwpzdHJ1Y3QgaW5fYWRkcgogIHsKICAgIGluX2Fk
ZHJfdCBzX2FkZHI7CiAgfTsKIyAxOTAgIi91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDMKc3Ry
dWN0IGluNl9hZGRyCiAgewogICAgdW5pb24KICAgICAgewogICAgICAgIHVpbnQ4X3QgdTZfYWRk
cjhbMTZdOwogICAgICAgIHVpbnQxNl90IHU2X2FkZHIxNls4XTsKICAgICAgICB1aW50MzJfdCB1
Nl9hZGRyMzJbNF07CiAgICAgIH0gaW42X3U7CgoKCiAgfTsKCmV4dGVybiBjb25zdCBzdHJ1Y3Qg
aW42X2FkZHIgaW42YWRkcl9hbnk7CmV4dGVybiBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgaW42YWRk
cl9sb29wYmFjazsKIyAyMTYgIi91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDMKc3RydWN0IHNv
Y2thZGRyX2luCiAgewogICAgc2FfZmFtaWx5X3Qgc2luX2ZhbWlseTsKICAgIGluX3BvcnRfdCBz
aW5fcG9ydDsKICAgIHN0cnVjdCBpbl9hZGRyIHNpbl9hZGRyOwoKCiAgICB1bnNpZ25lZCBjaGFy
IHNpbl96ZXJvW3NpemVvZiAoc3RydWN0IHNvY2thZGRyKSAtCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChzaXplb2YgKHVuc2lnbmVkIHNob3J0IGludCkpIC0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZW9mIChpbl9wb3J0X3QpIC0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZW9mIChzdHJ1Y3QgaW5fYWRkcildOwogIH07CgoKc3RydWN0IHNvY2thZGRyX2luNgogIHsK
ICAgIHNhX2ZhbWlseV90IHNpbjZfZmFtaWx5OwogICAgaW5fcG9ydF90IHNpbjZfcG9ydDsKICAg
IHVpbnQzMl90IHNpbjZfZmxvd2luZm87CiAgICBzdHJ1Y3QgaW42X2FkZHIgc2luNl9hZGRyOwog
ICAgdWludDMyX3Qgc2luNl9zY29wZV9pZDsKICB9OwoKCnN0cnVjdCBpcHY2X21yZXEKICB7Cgog
ICAgc3RydWN0IGluNl9hZGRyIGlwdjZtcl9tdWx0aWFkZHI7CgoKICAgIHVuc2lnbmVkIGludCBp
cHY2bXJfaW50ZXJmYWNlOwogIH07CgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9pbi5oIiAxIDMK
IyA2NiAiL3Vzci9pbmNsdWRlL2JpdHMvaW4uaCIgMwpzdHJ1Y3QgaXBfb3B0cwogIHsKICAgIHN0
cnVjdCBpbl9hZGRyIGlwX2RzdDsKICAgIGNoYXIgaXBfb3B0c1s0MF07CiAgfTsKCgpzdHJ1Y3Qg
aXBfbXJlcQogIHsKICAgIHN0cnVjdCBpbl9hZGRyIGltcl9tdWx0aWFkZHI7CiAgICBzdHJ1Y3Qg
aW5fYWRkciBpbXJfaW50ZXJmYWNlOwogIH07CgoKc3RydWN0IGlwX21yZXFuCiAgewogICAgc3Ry
dWN0IGluX2FkZHIgaW1yX211bHRpYWRkcjsKICAgIHN0cnVjdCBpbl9hZGRyIGltcl9hZGRyZXNz
OwogICAgaW50IGltcl9pZmluZGV4OwogIH07CgoKc3RydWN0IGluX3BrdGluZm8KICB7CiAgICBp
bnQgaXBpX2lmaW5kZXg7CiAgICBzdHJ1Y3QgaW5fYWRkciBpcGlfc3BlY19kc3Q7CiAgICBzdHJ1
Y3QgaW5fYWRkciBpcGlfYWRkcjsKICB9OwojIDI1MSAiL3Vzci9pbmNsdWRlL25ldGluZXQvaW4u
aCIgMiAzCiMgMjU5ICIvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAzCmV4dGVybiB1aW50MzJf
dCBudG9obCAodWludDMyX3QgX19uZXRsb25nKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CmV4dGVybiB1aW50MTZfdCBudG9ocyAodWludDE2X3QgX19uZXRzaG9ydCkKICAg
ICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiB1aW50MzJfdCBo
dG9ubCAodWludDMyX3QgX19ob3N0bG9uZykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CmV4dGVybiB1aW50MTZfdCBodG9ucyAodWludDE2X3QgX19ob3N0c2hvcnQp
CiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKIyAxICIvdXNy
L2luY2x1ZGUvYml0cy9ieXRlc3dhcC5oIiAxIDMKIyAyNzEgIi91c3IvaW5jbHVkZS9uZXRpbmV0
L2luLmgiIDIgMwojIDMzMyAiL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaCIgMwpleHRlcm4gaW50
IGJpbmRyZXN2cG9ydCAoaW50IF9fc29ja2ZkLCBzdHJ1Y3Qgc29ja2FkZHJfaW4gKl9fc29ja19p
bikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBiaW5kcmVzdnBvcnQ2IChpbnQgX19zb2NrZmQsIHN0
cnVjdCBzb2NrYWRkcl9pbjYgKl9fc29ja19pbikKICAgICB0aHJvdyAoKTsKIyAzNjEgIi91c3Iv
aW5jbHVkZS9uZXRpbmV0L2luLmgiIDMKc3RydWN0IGluNl9wa3RpbmZvCiAgewogICAgc3RydWN0
IGluNl9hZGRyIGlwaTZfYWRkcjsKICAgIHVuc2lnbmVkIGludCBpcGk2X2lmaW5kZXg7CiAgfTsK
Cn0KIyA2NyAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlz
dC9pbmNsdWRlL25zcHIvcHJpbmV0LmgiIDIKIyA4MSAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxh
LTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpbmV0LmgiCiMgMSAiL3Vz
ci9pbmNsdWRlL2FycGEvaW5ldC5oIiAxIDMKIyAzMSAiL3Vzci9pbmNsdWRlL2FycGEvaW5ldC5o
IiAzCmV4dGVybiAiQyIgewoKCgpleHRlcm4gaW5fYWRkcl90IGluZXRfYWRkciAoX19jb25zdCBj
aGFyICpfX2NwKSB0aHJvdyAoKTsKCgpleHRlcm4gaW5fYWRkcl90IGluZXRfbG5hb2YgKHN0cnVj
dCBpbl9hZGRyIF9faW4pIHRocm93ICgpOwoKCgpleHRlcm4gc3RydWN0IGluX2FkZHIgaW5ldF9t
YWtlYWRkciAoaW5fYWRkcl90IF9fbmV0LCBpbl9hZGRyX3QgX19ob3N0KQogICAgIHRocm93ICgp
OwoKCmV4dGVybiBpbl9hZGRyX3QgaW5ldF9uZXRvZiAoc3RydWN0IGluX2FkZHIgX19pbikgdGhy
b3cgKCk7CgoKCmV4dGVybiBpbl9hZGRyX3QgaW5ldF9uZXR3b3JrIChfX2NvbnN0IGNoYXIgKl9f
Y3ApIHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqaW5ldF9udG9hIChzdHJ1Y3QgaW5fYWRkciBf
X2luKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgaW5ldF9wdG9uIChpbnQgX19hZiwgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fY3AsCiAgICAgICAgICAgICAgICAgICAgICB2b2lkICpfX3Jl
c3RyaWN0IF9fYnVmKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBfX2NvbnN0IGNoYXIgKmluZXRfbnRv
cCAoaW50IF9fYWYsIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX2NwLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNvY2tsZW5fdCBfX2xl
bikKICAgICB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGluX2FkZHJfdCBpbmV0X2F0b24gKF9fY29u
c3QgY2hhciAqX19jcCwgc3RydWN0IGluX2FkZHIgKl9faW5wKSB0aHJvdyAoKTsKCgoKZXh0ZXJu
IGNoYXIgKmluZXRfbmV0YSAoaW5fYWRkcl90IF9fbmV0LCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9f
bGVuKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFyICppbmV0X25ldF9udG9wIChpbnQgX19hZiwg
X19jb25zdCB2b2lkICpfX2NwLCBpbnQgX19iaXRzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqX19idWYsIHNpemVfdCBfX2xlbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGlu
ZXRfbmV0X3B0b24gKGludCBfX2FmLCBfX2NvbnN0IGNoYXIgKl9fY3AsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCAqX19idWYsIHNpemVfdCBfX2xlbikgdGhyb3cgKCk7CgoKCgpleHRl
cm4gdW5zaWduZWQgaW50IGluZXRfbnNhcF9hZGRyIChfX2NvbnN0IGNoYXIgKl9fY3AsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKl9fYnVmLCBpbnQg
X19sZW4pIHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqaW5ldF9uc2FwX250b2EgKGludCBfX2xl
biwgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX2NwLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYXIgKl9fYnVmKSB0aHJvdyAoKTsKCgp9CiMgODIgIi92YXIvdG1wL3BvcnRhZ2UvbW96
aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3ByaW5ldC5oIiAyCgoj
IDEgIi91c3IvaW5jbHVkZS9uZXRkYi5oIiAxIDMKIyAzMyAiL3Vzci9pbmNsdWRlL25ldGRiLmgi
IDMKIyAxICIvdXNyL2luY2x1ZGUvcnBjL25ldGRiLmgiIDEgMwojIDQyICIvdXNyL2luY2x1ZGUv
cnBjL25ldGRiLmgiIDMKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMu
Mi4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDQzICIvdXNyL2luY2x1ZGUvcnBjL25ldGRiLmgi
IDIgMwoKZXh0ZXJuICJDIiB7CgpzdHJ1Y3QgcnBjZW50CnsKICBjaGFyICpyX25hbWU7CiAgY2hh
ciAqKnJfYWxpYXNlczsKICBpbnQgcl9udW1iZXI7Cn07CgpleHRlcm4gdm9pZCBzZXRycGNlbnQg
KGludCBfX3N0YXlvcGVuKSB0aHJvdyAoKTsKZXh0ZXJuIHZvaWQgZW5kcnBjZW50ICh2b2lkKSB0
aHJvdyAoKTsKZXh0ZXJuIHN0cnVjdCBycGNlbnQgKmdldHJwY2J5bmFtZSAoX19jb25zdCBjaGFy
ICpfX25hbWUpIHRocm93ICgpOwpleHRlcm4gc3RydWN0IHJwY2VudCAqZ2V0cnBjYnludW1iZXIg
KGludCBfX251bWJlcikgdGhyb3cgKCk7CmV4dGVybiBzdHJ1Y3QgcnBjZW50ICpnZXRycGNlbnQg
KHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgZ2V0cnBjYnluYW1lX3IgKF9fY29uc3QgY2hh
ciAqX19uYW1lLCBzdHJ1Y3QgcnBjZW50ICpfX3Jlc3VsdF9idWYsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKl9fYnVmZmVyLCBzaXplX3QgX19idWZsZW4sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBycGNlbnQgKipfX3Jlc3VsdCkgdGhyb3cgKCk7CgpleHRlcm4g
aW50IGdldHJwY2J5bnVtYmVyX3IgKGludCBfX251bWJlciwgc3RydWN0IHJwY2VudCAqX19yZXN1
bHRfYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fYnVmZmVyLCBzaXpl
X3QgX19idWZsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJwY2VudCAq
Kl9fcmVzdWx0KSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgZ2V0cnBjZW50X3IgKHN0cnVjdCBycGNl
bnQgKl9fcmVzdWx0X2J1ZiwgY2hhciAqX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBfX2J1Zmxlbiwgc3RydWN0IHJwY2VudCAqKl9fcmVzdWx0KSB0aHJvdyAoKTsKCgp9
CiMgMzQgIi91c3IvaW5jbHVkZS9uZXRkYi5oIiAyIDMKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2Jp
dHMvc2lnaW5mby5oIiAxIDMKIyAyNSAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnaW5mby5oIiAzCiMg
MSAiL3Vzci9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9i
aXRzL3NpZ2luZm8uaCIgMiAzCgoKCgoKCgp0eXBlZGVmIHVuaW9uIHNpZ3ZhbAogIHsKICAgIGlu
dCBzaXZhbF9pbnQ7CiAgICB2b2lkICpzaXZhbF9wdHI7CiAgfSBzaWd2YWxfdDsKIyAyNzEgIi91
c3IvaW5jbHVkZS9iaXRzL3NpZ2luZm8uaCIgMwpzdHJ1Y3QgX19wdGhyZWFkX2F0dHJfczsKCnR5
cGVkZWYgc3RydWN0IHNpZ2V2ZW50CiAgewogICAgc2lndmFsX3Qgc2lnZXZfdmFsdWU7CiAgICBp
bnQgc2lnZXZfc2lnbm87CiAgICBpbnQgc2lnZXZfbm90aWZ5OwoKICAgIHVuaW9uCiAgICAgIHsK
ICAgICAgICBpbnQgX3BhZFsoKDY0IC8gc2l6ZW9mIChpbnQpKSAtIDMpXTsKCiAgICAgICAgc3Ry
dWN0CiAgICAgICAgICB7CiAgICAgICAgICAgIHZvaWQgKCpfZnVuY3Rpb24pIChzaWd2YWxfdCk7
CiAgICAgICAgICAgIHN0cnVjdCBfX3B0aHJlYWRfYXR0cl9zICpfYXR0cmlidXRlOwogICAgICAg
ICAgfSBfc2lnZXZfdGhyZWFkOwogICAgICB9IF9zaWdldl91bjsKICB9IHNpZ2V2ZW50X3Q7CgoK
CgoKCmVudW0KewogIFNJR0VWX1NJR05BTCA9IDAsCgogIFNJR0VWX05PTkUsCgogIFNJR0VWX1RI
UkVBRAoKfTsKIyAzOSAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1
ZGUvdGltZS5oIiAxIDMKIyA0MSAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDIgMwoKCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvbmV0ZGIuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9iaXRzL25ldGRi
LmgiIDMKc3RydWN0IG5ldGVudAp7CiAgY2hhciAqbl9uYW1lOwogIGNoYXIgKipuX2FsaWFzZXM7
CiAgaW50IG5fYWRkcnR5cGU7CiAgdWludDMyX3Qgbl9uZXQ7Cn07CiMgNDQgIi91c3IvaW5jbHVk
ZS9uZXRkYi5oIiAyIDMKIyA1NCAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDMKZXh0ZXJuICJDIiB7
CgoKCgoKCmV4dGVybiBpbnQgKl9faF9lcnJub19sb2NhdGlvbiAodm9pZCkgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwojIDg4ICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIgMwpl
eHRlcm4gdm9pZCBoZXJyb3IgKF9fY29uc3QgY2hhciAqX19zdHIpIHRocm93ICgpOwoKCmV4dGVy
biBfX2NvbnN0IGNoYXIgKmhzdHJlcnJvciAoaW50IF9fZXJyX251bSkgdGhyb3cgKCk7CgoKCgpz
dHJ1Y3QgaG9zdGVudAp7CiAgY2hhciAqaF9uYW1lOwogIGNoYXIgKipoX2FsaWFzZXM7CiAgaW50
IGhfYWRkcnR5cGU7CiAgaW50IGhfbGVuZ3RoOwogIGNoYXIgKipoX2FkZHJfbGlzdDsKCn07CgoK
CmV4dGVybiB2b2lkIHNldGhvc3RlbnQgKGludCBfX3N0YXlfb3BlbikgdGhyb3cgKCk7CgoKZXh0
ZXJuIHZvaWQgZW5kaG9zdGVudCAodm9pZCkgdGhyb3cgKCk7CgoKCmV4dGVybiBzdHJ1Y3QgaG9z
dGVudCAqZ2V0aG9zdGVudCAodm9pZCkgdGhyb3cgKCk7CgoKCmV4dGVybiBzdHJ1Y3QgaG9zdGVu
dCAqZ2V0aG9zdGJ5YWRkciAoX19jb25zdCB2b2lkICpfX2FkZHIsIF9fc29ja2xlbl90IF9fbGVu
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX3R5cGUpIHRocm93
ICgpOwoKCmV4dGVybiBzdHJ1Y3QgaG9zdGVudCAqZ2V0aG9zdGJ5bmFtZSAoX19jb25zdCBjaGFy
ICpfX25hbWUpIHRocm93ICgpOwoKCgoKCmV4dGVybiBzdHJ1Y3QgaG9zdGVudCAqZ2V0aG9zdGJ5
bmFtZTIgKF9fY29uc3QgY2hhciAqX19uYW1lLCBpbnQgX19hZikgdGhyb3cgKCk7CgoKCgoKCmV4
dGVybiBpbnQgZ2V0aG9zdGVudF9yIChzdHJ1Y3QgaG9zdGVudCAqX19yZXN0cmljdCBfX3Jlc3Vs
dF9idWYsCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBz
aXplX3QgX19idWZsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaG9zdGVudCAq
Kl9fcmVzdHJpY3QgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVz
dHJpY3QgX19oX2Vycm5vcCkgdGhyb3cgKCk7CgpleHRlcm4gaW50IGdldGhvc3RieWFkZHJfciAo
X19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fYWRkciwgX19zb2NrbGVuX3QgX19sZW4sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgX190eXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IGhvc3RlbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fYnVmbGVu
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGhvc3RlbnQgKipfX3Jlc3RyaWN0
IF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9f
aF9lcnJub3ApIHRocm93ICgpOwoKZXh0ZXJuIGludCBnZXRob3N0YnluYW1lX3IgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3QgaG9zdGVudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaG9zdGVudCAqKl9fcmVzdHJpY3QgX19yZXN1bHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19oX2Vycm5vcCkg
dGhyb3cgKCk7CgpleHRlcm4gaW50IGdldGhvc3RieW5hbWUyX3IgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25hbWUsIGludCBfX2FmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBob3N0ZW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0X2J1ZiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGhvc3RlbnQgKipfX3Jlc3RyaWN0IF9fcmVz
dWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX2hfZXJy
bm9wKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9pZCBzZXRuZXRlbnQgKGludCBfX3N0YXlfb3Bl
bikgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgZW5kbmV0ZW50ICh2b2lkKSB0aHJvdyAoKTsKCgoK
ZXh0ZXJuIHN0cnVjdCBuZXRlbnQgKmdldG5ldGVudCAodm9pZCkgdGhyb3cgKCk7CgoKCmV4dGVy
biBzdHJ1Y3QgbmV0ZW50ICpnZXRuZXRieWFkZHIgKHVpbnQzMl90IF9fbmV0LCBpbnQgX190eXBl
KQogICAgIHRocm93ICgpOwoKCmV4dGVybiBzdHJ1Y3QgbmV0ZW50ICpnZXRuZXRieW5hbWUgKF9f
Y29uc3QgY2hhciAqX19uYW1lKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQgZ2V0bmV0ZW50
X3IgKHN0cnVjdCBuZXRlbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAogICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCiAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuZXRlbnQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0LAog
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19oX2Vycm5vcCkgdGhyb3cg
KCk7CgpleHRlcm4gaW50IGdldG5ldGJ5YWRkcl9yICh1aW50MzJfdCBfX25ldCwgaW50IF9fdHlw
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5ldGVudCAqX19yZXN0cmljdCBf
X3Jlc3VsdF9idWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3Qg
X19idWYsIHNpemVfdCBfX2J1ZmxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IG5ldGVudCAqKl9fcmVzdHJpY3QgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCAqX19yZXN0cmljdCBfX2hfZXJybm9wKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgZ2V0bmV0
YnluYW1lX3IgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBuZXRlbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19i
dWZsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuZXRlbnQgKipfX3Jlc3Ry
aWN0IF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3Qg
X19oX2Vycm5vcCkgdGhyb3cgKCk7CgoKCgpzdHJ1Y3Qgc2VydmVudAp7CiAgY2hhciAqc19uYW1l
OwogIGNoYXIgKipzX2FsaWFzZXM7CiAgaW50IHNfcG9ydDsKICBjaGFyICpzX3Byb3RvOwp9OwoK
CgpleHRlcm4gdm9pZCBzZXRzZXJ2ZW50IChpbnQgX19zdGF5X29wZW4pIHRocm93ICgpOwoKCmV4
dGVybiB2b2lkIGVuZHNlcnZlbnQgKHZvaWQpIHRocm93ICgpOwoKCgpleHRlcm4gc3RydWN0IHNl
cnZlbnQgKmdldHNlcnZlbnQgKHZvaWQpIHRocm93ICgpOwoKCgpleHRlcm4gc3RydWN0IHNlcnZl
bnQgKmdldHNlcnZieW5hbWUgKF9fY29uc3QgY2hhciAqX19uYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19wcm90bykgdGhyb3cgKCk7CgoK
CmV4dGVybiBzdHJ1Y3Qgc2VydmVudCAqZ2V0c2VydmJ5cG9ydCAoaW50IF9fcG9ydCwgX19jb25z
dCBjaGFyICpfX3Byb3RvKQogICAgIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgZ2V0c2VydmVu
dF9yIChzdHJ1Y3Qgc2VydmVudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCiAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VydmVudCAqKl9fcmVzdHJpY3QgX19yZXN1
bHQpIHRocm93ICgpOwoKZXh0ZXJuIGludCBnZXRzZXJ2YnluYW1lX3IgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19wcm90bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBzZXJ2ZW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0X2J1ZiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2J1ZmxlbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZXJ2ZW50ICoqX19yZXN0cmljdCBfX3Jlc3VsdCkg
dGhyb3cgKCk7CgpleHRlcm4gaW50IGdldHNlcnZieXBvcnRfciAoaW50IF9fcG9ydCwgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fcHJvdG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3Qgc2VydmVudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VydmVudCAqKl9fcmVzdHJpY3QgX19yZXN1
bHQpIHRocm93ICgpOwoKCgoKc3RydWN0IHByb3RvZW50CnsKICBjaGFyICpwX25hbWU7CiAgY2hh
ciAqKnBfYWxpYXNlczsKICBpbnQgcF9wcm90bzsKfTsKCgoKZXh0ZXJuIHZvaWQgc2V0cHJvdG9l
bnQgKGludCBfX3N0YXlfb3BlbikgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgZW5kcHJvdG9lbnQg
KHZvaWQpIHRocm93ICgpOwoKCgpleHRlcm4gc3RydWN0IHByb3RvZW50ICpnZXRwcm90b2VudCAo
dm9pZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIHN0cnVjdCBwcm90b2VudCAqZ2V0cHJvdG9ieW5hbWUg
KF9fY29uc3QgY2hhciAqX19uYW1lKSB0aHJvdyAoKTsKCgpleHRlcm4gc3RydWN0IHByb3RvZW50
ICpnZXRwcm90b2J5bnVtYmVyIChpbnQgX19wcm90bykgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGlu
dCBnZXRwcm90b2VudF9yIChzdHJ1Y3QgcHJvdG9lbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVm
LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVf
dCBfX2J1ZmxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHJvdG9lbnQgKipf
X3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgZ2V0cHJvdG9ieW5hbWVf
ciAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3QgcHJvdG9lbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2J1
ZmxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHJvdG9lbnQgKipfX3Jl
c3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgZ2V0cHJvdG9ieW51bWJlcl9y
IChpbnQgX19wcm90bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwcm90
b2VudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHJvdG9lbnQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0
KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgc2V0bmV0Z3JlbnQgKF9fY29uc3QgY2hhciAqX19u
ZXRncm91cCkgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgZW5kbmV0Z3JlbnQgKHZvaWQpIHRocm93
ICgpOwoKCgpleHRlcm4gaW50IGdldG5ldGdyZW50IChjaGFyICoqX19yZXN0cmljdCBfX2hvc3Rw
LAogICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX3VzZXJwLAogICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2RvbWFpbnApIHRocm93ICgp
OwoKCgpleHRlcm4gaW50IGlubmV0Z3IgKF9fY29uc3QgY2hhciAqX19uZXRncm91cCwgX19jb25z
dCBjaGFyICpfX2hvc3QsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3VzZXIs
IF9fY29uc3QgY2hhciAqZG9tYWluKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGdldG5ldGdyZW50
X3IgKGNoYXIgKipfX3Jlc3RyaWN0IF9faG9zdHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX191c2VycCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICoqX19yZXN0cmljdCBfX2RvbWFpbnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq
X19yZXN0cmljdCBfX2J1ZmZlciwgc2l6ZV90IF9fYnVmbGVuKSB0aHJvdyAoKTsKIyAzMzQgIi91
c3IvaW5jbHVkZS9uZXRkYi5oIiAzCmV4dGVybiBpbnQgcmNtZCAoY2hhciAqKl9fcmVzdHJpY3Qg
X19haG9zdCwgdW5zaWduZWQgc2hvcnQgaW50IF9fcnBvcnQsCiAgICAgICAgICAgICAgICAgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbG9jdXNlciwKICAgICAgICAgICAgICAgICBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19yZW11c2VyLAogICAgICAgICAgICAgICAgIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2NtZCwgaW50ICpfX3Jlc3RyaWN0IF9fZmQycCkKICAgICB0aHJvdyAo
KTsKCgoKZXh0ZXJuIGludCByY21kX2FmIChjaGFyICoqX19yZXN0cmljdCBfX2Fob3N0LCB1bnNp
Z25lZCBzaG9ydCBpbnQgX19ycG9ydCwKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19sb2N1c2VyLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX3JlbXVzZXIsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fY21kLCBpbnQgKl9fcmVzdHJpY3QgX19mZDJwLAogICAgICAgICAgICAgICAg
ICAgIHNhX2ZhbWlseV90IF9fYWYpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50IHJleGVjIChj
aGFyICoqX19yZXN0cmljdCBfX2Fob3N0LCBpbnQgX19ycG9ydCwKICAgICAgICAgICAgICAgICAg
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKICAgICAgICAgICAgICAgICAgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fcGFzcywKICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fY21kLCBpbnQgKl9fcmVzdHJpY3QgX19mZDJwKQogICAgIHRocm93ICgp
OwoKCgpleHRlcm4gaW50IHJleGVjX2FmIChjaGFyICoqX19yZXN0cmljdCBfX2Fob3N0LCBpbnQg
X19ycG9ydCwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bmFtZSwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcGFz
cywKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fY21kLCBp
bnQgKl9fcmVzdHJpY3QgX19mZDJwLAogICAgICAgICAgICAgICAgICAgICBzYV9mYW1pbHlfdCBf
X2FmKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgcnVzZXJvayAoX19jb25zdCBjaGFyICpfX3Jo
b3N0LCBpbnQgX19zdXNlciwKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVt
dXNlciwgX19jb25zdCBjaGFyICpfX2xvY3VzZXIpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHJ1
c2Vyb2tfYWYgKF9fY29uc3QgY2hhciAqX19yaG9zdCwgaW50IF9fc3VzZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3JlbXVzZXIsIF9fY29uc3QgY2hhciAqX19sb2N1
c2VyLAogICAgICAgICAgICAgICAgICAgICAgIHNhX2ZhbWlseV90IF9fYWYpIHRocm93ICgpOwoK
CgoKZXh0ZXJuIGludCBycmVzdnBvcnQgKGludCAqX19hbHBvcnQpIHRocm93ICgpOwoKCgpleHRl
cm4gaW50IHJyZXN2cG9ydF9hZiAoaW50ICpfX2FscG9ydCwgc2FfZmFtaWx5X3QgX19hZikgdGhy
b3cgKCk7CgoKCgoKCnN0cnVjdCBhZGRyaW5mbwp7CiAgaW50IGFpX2ZsYWdzOwogIGludCBhaV9m
YW1pbHk7CiAgaW50IGFpX3NvY2t0eXBlOwogIGludCBhaV9wcm90b2NvbDsKICBzb2NrbGVuX3Qg
YWlfYWRkcmxlbjsKICBzdHJ1Y3Qgc29ja2FkZHIgKmFpX2FkZHI7CiAgY2hhciAqYWlfY2Fub25u
YW1lOwogIHN0cnVjdCBhZGRyaW5mbyAqYWlfbmV4dDsKfTsKCgoKc3RydWN0IGdhaWNiCnsKICBj
b25zdCBjaGFyICphcl9uYW1lOwogIGNvbnN0IGNoYXIgKmFyX3NlcnZpY2U7CiAgY29uc3Qgc3Ry
dWN0IGFkZHJpbmZvICphcl9yZXF1ZXN0OwogIHN0cnVjdCBhZGRyaW5mbyAqYXJfcmVzdWx0OwoK
ICBpbnQgX19yZXR1cm47CiAgaW50IF9fdW51c2VkWzVdOwp9OwojIDQ1OSAiL3Vzci9pbmNsdWRl
L25ldGRiLmgiIDMKZXh0ZXJuIGludCBnZXRhZGRyaW5mbyAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fc2VydmljZSwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3QgYWRk
cmluZm8gKl9fcmVzdHJpY3QgX19yZXEsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBh
ZGRyaW5mbyAqKl9fcmVzdHJpY3QgX19wYWkpIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIGZyZWVh
ZGRyaW5mbyAoc3RydWN0IGFkZHJpbmZvICpfX2FpKSB0aHJvdyAoKTsKCgpleHRlcm4gX19jb25z
dCBjaGFyICpnYWlfc3RyZXJyb3IgKGludCBfX2Vjb2RlKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50
IGdldG5hbWVpbmZvIChfX2NvbnN0IHN0cnVjdCBzb2NrYWRkciAqX19yZXN0cmljdCBfX3NhLAog
ICAgICAgICAgICAgICAgICAgICAgICBzb2NrbGVuX3QgX19zYWxlbiwgY2hhciAqX19yZXN0cmlj
dCBfX2hvc3QsCiAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tsZW5fdCBfX2hvc3RsZW4sIGNo
YXIgKl9fcmVzdHJpY3QgX19zZXJ2LAogICAgICAgICAgICAgICAgICAgICAgICBzb2NrbGVuX3Qg
X19zZXJ2bGVuLCB1bnNpZ25lZCBpbnQgX19mbGFncykgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGlu
dCBnZXRhZGRyaW5mb19hIChpbnQgX19tb2RlLCBzdHJ1Y3QgZ2FpY2IgKl9fbGlzdFtdLAogICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBfX2VudCwgc3RydWN0IHNpZ2V2ZW50ICpfX3Jlc3Ry
aWN0IF9fc2lnKQogICAgIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBnYWlfc3VzcGVuZCAoX19j
b25zdCBzdHJ1Y3QgZ2FpY2IgKl9fY29uc3QgX19saXN0W10sIGludCBfX2VudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fdGltZW91dCkgdGhyb3cg
KCk7CgoKZXh0ZXJuIGludCBnYWlfZXJyb3IgKHN0cnVjdCBnYWljYiAqX19yZXEpIHRocm93ICgp
OwoKCmV4dGVybiBpbnQgZ2FpX2NhbmNlbCAoc3RydWN0IGdhaWNiICpfX2dhaWNicCkgdGhyb3cg
KCk7CgoKCn0KIyA4NCAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemls
bGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpbmV0LmgiIDIKIyA0OSAiL3Zhci90bXAvcG9ydGFnZS9t
b3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpby5oIiAyCgpl
eHRlcm4gIkMiIHsKCgp0eXBlZGVmIHN0cnVjdCBQUkRpciBQUkRpcjsKdHlwZWRlZiBzdHJ1Y3Qg
UFJEaXJFbnRyeSBQUkRpckVudHJ5OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgUFJGaWxlRGVzYyBQUkZp
bGVEZXNjOwp0eXBlZGVmIHN0cnVjdCBQUkZpbGVJbmZvIFBSRmlsZUluZm87CnR5cGVkZWYgc3Ry
dWN0IFBSRmlsZUluZm82NCBQUkZpbGVJbmZvNjQ7CnR5cGVkZWYgdW5pb24gUFJOZXRBZGRyIFBS
TmV0QWRkcjsKdHlwZWRlZiBzdHJ1Y3QgUFJJT01ldGhvZHMgUFJJT01ldGhvZHM7CnR5cGVkZWYg
c3RydWN0IFBSUG9sbERlc2MgUFJQb2xsRGVzYzsKdHlwZWRlZiBzdHJ1Y3QgUFJGaWxlUHJpdmF0
ZSBQUkZpbGVQcml2YXRlOwp0eXBlZGVmIHN0cnVjdCBQUlNlbmRGaWxlRGF0YSBQUlNlbmRGaWxl
RGF0YTsKIyA3OSAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEv
ZGlzdC9pbmNsdWRlL25zcHIvcHJpby5oIgp0eXBlZGVmIFBSSW50biBQUkRlc2NJZGVudGl0eTsK
CnN0cnVjdCBQUkZpbGVEZXNjIHsKICAgIGNvbnN0IFBSSU9NZXRob2RzICptZXRob2RzOwogICAg
UFJGaWxlUHJpdmF0ZSAqc2VjcmV0OwogICAgUFJGaWxlRGVzYyAqbG93ZXIsICpoaWdoZXI7CiAg
ICB2b2lkICggKmR0b3IpKFBSRmlsZURlc2MgKmZkKTsKCiAgICBQUkRlc2NJZGVudGl0eSBpZGVu
dGl0eTsKfTsKIyA5OSAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemls
bGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpby5oIgp0eXBlZGVmIGVudW0gUFJUcmFuc21pdEZpbGVG
bGFncyB7CiAgICBQUl9UUkFOU01JVEZJTEVfS0VFUF9PUEVOID0gMCwKCiAgICBQUl9UUkFOU01J
VEZJTEVfQ0xPU0VfU09DS0VUID0gMQoKfSBQUlRyYW5zbWl0RmlsZUZsYWdzOwojIDE1MiAiL3Zh
ci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25z
cHIvcHJpby5oIgpzdHJ1Y3QgUFJJUHY2QWRkciB7CiAgICAgICAgdW5pb24gewogICAgICAgICAg
ICAgICAgUFJVaW50OCBfUzZfdThbMTZdOwogICAgICAgICAgICAgICAgUFJVaW50MTYgX1M2X3Ux
Nls4XTsKICAgICAgICAgICAgICAgIFBSVWludDMyIF9TNl91MzJbNF07CiAgICAgICAgICAgICAg
ICBQUlVpbnQ2NCBfUzZfdTY0WzJdOwogICAgICAgIH0gX1M2X3VuOwp9OwoKCgoKCnR5cGVkZWYg
c3RydWN0IFBSSVB2NkFkZHIgUFJJUHY2QWRkcjsKCnVuaW9uIFBSTmV0QWRkciB7CiAgICBzdHJ1
Y3QgewogICAgICAgIFBSVWludDE2IGZhbWlseTsKCgoKICAgICAgICBjaGFyIGRhdGFbMTRdOwoK
ICAgIH0gcmF3OwogICAgc3RydWN0IHsKICAgICAgICBQUlVpbnQxNiBmYW1pbHk7CiAgICAgICAg
UFJVaW50MTYgcG9ydDsKICAgICAgICBQUlVpbnQzMiBpcDsKCgoKICAgICAgICBjaGFyIHBhZFs4
XTsKCiAgICB9IGluZXQ7CiAgICBzdHJ1Y3QgewogICAgICAgIFBSVWludDE2IGZhbWlseTsKICAg
ICAgICBQUlVpbnQxNiBwb3J0OwogICAgICAgIFBSVWludDMyIGZsb3dpbmZvOwogICAgICAgIFBS
SVB2NkFkZHIgaXA7CiAgICAgICAgUFJVaW50MzIgc2NvcGVfaWQ7CiAgICB9IGlwdjY7CgogICAg
c3RydWN0IHsKICAgICAgICBQUlVpbnQxNiBmYW1pbHk7CiAgICAgICAgY2hhciBwYXRoWzEwNF07
CiAgICB9IGxvY2FsOwoKfTsKIyAyMTAgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEv
d29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3ByaW8uaCIKdHlwZWRlZiBlbnVtIFBSU29j
a09wdGlvbgp7CiAgICBQUl9Tb2NrT3B0X05vbmJsb2NraW5nLAogICAgUFJfU29ja09wdF9MaW5n
ZXIsCiAgICBQUl9Tb2NrT3B0X1JldXNlYWRkciwKICAgIFBSX1NvY2tPcHRfS2VlcGFsaXZlLAog
ICAgUFJfU29ja09wdF9SZWN2QnVmZmVyU2l6ZSwKICAgIFBSX1NvY2tPcHRfU2VuZEJ1ZmZlclNp
emUsCgogICAgUFJfU29ja09wdF9JcFRpbWVUb0xpdmUsCiAgICBQUl9Tb2NrT3B0X0lwVHlwZU9m
U2VydmljZSwKCiAgICBQUl9Tb2NrT3B0X0FkZE1lbWJlciwKICAgIFBSX1NvY2tPcHRfRHJvcE1l
bWJlciwKICAgIFBSX1NvY2tPcHRfTWNhc3RJbnRlcmZhY2UsCiAgICBQUl9Tb2NrT3B0X01jYXN0
VGltZVRvTGl2ZSwKICAgIFBSX1NvY2tPcHRfTWNhc3RMb29wYmFjaywKCiAgICBQUl9Tb2NrT3B0
X05vRGVsYXksCiAgICBQUl9Tb2NrT3B0X01heFNlZ21lbnQsCiAgICBQUl9Tb2NrT3B0X0Jyb2Fk
Y2FzdCwKICAgIFBSX1NvY2tPcHRfTGFzdAp9IFBSU29ja09wdGlvbjsKCnR5cGVkZWYgc3RydWN0
IFBSTGluZ2VyIHsKICAgICAgICBQUkJvb2wgcG9sYXJpdHk7CiAgICAgICAgUFJJbnRlcnZhbFRp
bWUgbGluZ2VyOwp9IFBSTGluZ2VyOwoKdHlwZWRlZiBzdHJ1Y3QgUFJNY2FzdFJlcXVlc3Qgewog
ICAgICAgIFBSTmV0QWRkciBtY2FkZHI7CiAgICAgICAgUFJOZXRBZGRyIGlmYWRkcjsKfSBQUk1j
YXN0UmVxdWVzdDsKCnR5cGVkZWYgc3RydWN0IFBSU29ja2V0T3B0aW9uRGF0YQp7CiAgICBQUlNv
Y2tPcHRpb24gb3B0aW9uOwogICAgdW5pb24KICAgIHsKICAgICAgICBQUlVpbnRuIGlwX3R0bDsK
ICAgICAgICBQUlVpbnRuIG1jYXN0X3R0bDsKICAgICAgICBQUlVpbnRuIHRvczsKICAgICAgICBQ
UkJvb2wgbm9uX2Jsb2NraW5nOwogICAgICAgIFBSQm9vbCByZXVzZV9hZGRyOwogICAgICAgIFBS
Qm9vbCBrZWVwX2FsaXZlOwogICAgICAgIFBSQm9vbCBtY2FzdF9sb29wYmFjazsKICAgICAgICBQ
UkJvb2wgbm9fZGVsYXk7CiAgICAgICAgUFJCb29sIGJyb2FkY2FzdDsKICAgICAgICBQUlNpemUg
bWF4X3NlZ21lbnQ7CiAgICAgICAgUFJTaXplIHJlY3ZfYnVmZmVyX3NpemU7CiAgICAgICAgUFJT
aXplIHNlbmRfYnVmZmVyX3NpemU7CiAgICAgICAgUFJMaW5nZXIgbGluZ2VyOwogICAgICAgIFBS
TWNhc3RSZXF1ZXN0IGFkZF9tZW1iZXI7CiAgICAgICAgUFJNY2FzdFJlcXVlc3QgZHJvcF9tZW1i
ZXI7CiAgICAgICAgUFJOZXRBZGRyIG1jYXN0X2lmOwogICAgfSB2YWx1ZTsKfSBQUlNvY2tldE9w
dGlvbkRhdGE7CiMgMjc2ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96
aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCnR5cGVkZWYgc3RydWN0IFBSSU9WZWMgewog
ICAgY2hhciAqaW92X2Jhc2U7CiAgICBpbnQgaW92X2xlbjsKfSBQUklPVmVjOwoKCgoKCgp0eXBl
ZGVmIGVudW0gUFJEZXNjVHlwZQp7CiAgICBQUl9ERVNDX0ZJTEUgPSAxLAogICAgUFJfREVTQ19T
T0NLRVRfVENQID0gMiwKICAgIFBSX0RFU0NfU09DS0VUX1VEUCA9IDMsCiAgICBQUl9ERVNDX0xB
WUVSRUQgPSA0LAogICAgUFJfREVTQ19QSVBFID0gNQp9IFBSRGVzY1R5cGU7Cgp0eXBlZGVmIGVu
dW0gUFJTZWVrV2hlbmNlIHsKICAgIFBSX1NFRUtfU0VUID0gMCwKICAgIFBSX1NFRUtfQ1VSID0g
MSwKICAgIFBSX1NFRUtfRU5EID0gMgp9IFBSU2Vla1doZW5jZTsKCmV4dGVybiBQUkRlc2NUeXBl
IFBSX0dldERlc2NUeXBlKFBSRmlsZURlc2MgKmZpbGUpOwojIDMxOSAiL3Zhci90bXAvcG9ydGFn
ZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpby5oIgp0
eXBlZGVmIFBSU3RhdHVzICggKlBSQ2xvc2VGTikoUFJGaWxlRGVzYyAqZmQpOwp0eXBlZGVmIFBS
SW50MzIgKCAqUFJSZWFkRk4pKFBSRmlsZURlc2MgKmZkLCB2b2lkICpidWYsIFBSSW50MzIgYW1v
dW50KTsKdHlwZWRlZiBQUkludDMyICggKlBSV3JpdGVGTikoUFJGaWxlRGVzYyAqZmQsIGNvbnN0
IHZvaWQgKmJ1ZiwgUFJJbnQzMiBhbW91bnQpOwp0eXBlZGVmIFBSSW50MzIgKCAqUFJBdmFpbGFi
bGVGTikoUFJGaWxlRGVzYyAqZmQpOwp0eXBlZGVmIFBSSW50NjQgKCAqUFJBdmFpbGFibGU2NEZO
KShQUkZpbGVEZXNjICpmZCk7CnR5cGVkZWYgUFJTdGF0dXMgKCAqUFJGc3luY0ZOKShQUkZpbGVE
ZXNjICpmZCk7CnR5cGVkZWYgUFJPZmZzZXQzMiAoICpQUlNlZWtGTikoUFJGaWxlRGVzYyAqZmQs
IFBST2Zmc2V0MzIgb2Zmc2V0LCBQUlNlZWtXaGVuY2UgaG93KTsKdHlwZWRlZiBQUk9mZnNldDY0
ICggKlBSU2VlazY0Rk4pKFBSRmlsZURlc2MgKmZkLCBQUk9mZnNldDY0IG9mZnNldCwgUFJTZWVr
V2hlbmNlIGhvdyk7CnR5cGVkZWYgUFJTdGF0dXMgKCAqUFJGaWxlSW5mb0ZOKShQUkZpbGVEZXNj
ICpmZCwgUFJGaWxlSW5mbyAqaW5mbyk7CnR5cGVkZWYgUFJTdGF0dXMgKCAqUFJGaWxlSW5mbzY0
Rk4pKFBSRmlsZURlc2MgKmZkLCBQUkZpbGVJbmZvNjQgKmluZm8pOwp0eXBlZGVmIFBSSW50MzIg
KCAqUFJXcml0ZXZGTikoCiAgICBQUkZpbGVEZXNjICpmZCwgY29uc3QgUFJJT1ZlYyAqaW92LCBQ
UkludDMyIGlvdl9zaXplLAogICAgUFJJbnRlcnZhbFRpbWUgdGltZW91dCk7CnR5cGVkZWYgUFJT
dGF0dXMgKCAqUFJDb25uZWN0Rk4pKAogICAgUFJGaWxlRGVzYyAqZmQsIGNvbnN0IFBSTmV0QWRk
ciAqYWRkciwgUFJJbnRlcnZhbFRpbWUgdGltZW91dCk7CnR5cGVkZWYgUFJGaWxlRGVzYyogKCAq
UFJBY2NlcHRGTikgKAogICAgUFJGaWxlRGVzYyAqZmQsIFBSTmV0QWRkciAqYWRkciwgUFJJbnRl
cnZhbFRpbWUgdGltZW91dCk7CnR5cGVkZWYgUFJTdGF0dXMgKCAqUFJCaW5kRk4pKFBSRmlsZURl
c2MgKmZkLCBjb25zdCBQUk5ldEFkZHIgKmFkZHIpOwp0eXBlZGVmIFBSU3RhdHVzICggKlBSTGlz
dGVuRk4pKFBSRmlsZURlc2MgKmZkLCBQUkludG4gYmFja2xvZyk7CnR5cGVkZWYgUFJTdGF0dXMg
KCAqUFJTaHV0ZG93bkZOKShQUkZpbGVEZXNjICpmZCwgUFJJbnRuIGhvdyk7CnR5cGVkZWYgUFJJ
bnQzMiAoICpQUlJlY3ZGTikoCiAgICBQUkZpbGVEZXNjICpmZCwgdm9pZCAqYnVmLCBQUkludDMy
IGFtb3VudCwKICAgIFBSSW50biBmbGFncywgUFJJbnRlcnZhbFRpbWUgdGltZW91dCk7CnR5cGVk
ZWYgUFJJbnQzMiAoICpQUlNlbmRGTikgKAogICAgUFJGaWxlRGVzYyAqZmQsIGNvbnN0IHZvaWQg
KmJ1ZiwgUFJJbnQzMiBhbW91bnQsCiAgICBQUkludG4gZmxhZ3MsIFBSSW50ZXJ2YWxUaW1lIHRp
bWVvdXQpOwp0eXBlZGVmIFBSSW50MzIgKCAqUFJSZWN2ZnJvbUZOKSgKICAgIFBSRmlsZURlc2Mg
KmZkLCB2b2lkICpidWYsIFBSSW50MzIgYW1vdW50LAogICAgUFJJbnRuIGZsYWdzLCBQUk5ldEFk
ZHIgKmFkZHIsIFBSSW50ZXJ2YWxUaW1lIHRpbWVvdXQpOwp0eXBlZGVmIFBSSW50MzIgKCAqUFJT
ZW5kdG9GTikoCiAgICBQUkZpbGVEZXNjICpmZCwgY29uc3Qgdm9pZCAqYnVmLCBQUkludDMyIGFt
b3VudCwKICAgIFBSSW50biBmbGFncywgY29uc3QgUFJOZXRBZGRyICphZGRyLCBQUkludGVydmFs
VGltZSB0aW1lb3V0KTsKdHlwZWRlZiBQUkludDE2ICggKlBSUG9sbEZOKSgKICAgIFBSRmlsZURl
c2MgKmZkLCBQUkludDE2IGluX2ZsYWdzLCBQUkludDE2ICpvdXRfZmxhZ3MpOwp0eXBlZGVmIFBS
SW50MzIgKCAqUFJBY2NlcHRyZWFkRk4pKAogICAgUFJGaWxlRGVzYyAqc2QsIFBSRmlsZURlc2Mg
KipuZCwgUFJOZXRBZGRyICoqcmFkZHIsCiAgICB2b2lkICpidWYsIFBSSW50MzIgYW1vdW50LCBQ
UkludGVydmFsVGltZSB0KTsKdHlwZWRlZiBQUkludDMyICggKlBSVHJhbnNtaXRmaWxlRk4pKAog
ICAgIFBSRmlsZURlc2MgKnNkLCBQUkZpbGVEZXNjICpmZCwgY29uc3Qgdm9pZCAqaGVhZGVycywK
ICAgICBQUkludDMyIGhsZW4sIFBSVHJhbnNtaXRGaWxlRmxhZ3MgZmxhZ3MsIFBSSW50ZXJ2YWxU
aW1lIHQpOwp0eXBlZGVmIFBSU3RhdHVzICggKlBSR2V0c29ja25hbWVGTikoUFJGaWxlRGVzYyAq
ZmQsIFBSTmV0QWRkciAqYWRkcik7CnR5cGVkZWYgUFJTdGF0dXMgKCAqUFJHZXRwZWVybmFtZUZO
KShQUkZpbGVEZXNjICpmZCwgUFJOZXRBZGRyICphZGRyKTsKdHlwZWRlZiBQUlN0YXR1cyAoICpQ
UkdldHNvY2tldG9wdGlvbkZOKSgKICAgIFBSRmlsZURlc2MgKmZkLCBQUlNvY2tldE9wdGlvbkRh
dGEgKmRhdGEpOwp0eXBlZGVmIFBSU3RhdHVzICggKlBSU2V0c29ja2V0b3B0aW9uRk4pKAogICAg
UFJGaWxlRGVzYyAqZmQsIGNvbnN0IFBSU29ja2V0T3B0aW9uRGF0YSAqZGF0YSk7CnR5cGVkZWYg
UFJJbnQzMiAoICpQUlNlbmRmaWxlRk4pKAogICAgICAgIFBSRmlsZURlc2MgKm5ldHdvcmtTb2Nr
ZXQsIFBSU2VuZEZpbGVEYXRhICpzZW5kRGF0YSwKICAgICAgICBQUlRyYW5zbWl0RmlsZUZsYWdz
IGZsYWdzLCBQUkludGVydmFsVGltZSB0aW1lb3V0KTsKdHlwZWRlZiBQUlN0YXR1cyAoICpQUkNv
bm5lY3Rjb250aW51ZUZOKSgKICAgIFBSRmlsZURlc2MgKmZkLCBQUkludDE2IG91dF9mbGFncyk7
CnR5cGVkZWYgUFJJbnRuICggKlBSUmVzZXJ2ZWRGTikoUFJGaWxlRGVzYyAqZmQpOwoKc3RydWN0
IFBSSU9NZXRob2RzIHsKICAgIFBSRGVzY1R5cGUgZmlsZV90eXBlOwogICAgUFJDbG9zZUZOIGNs
b3NlOwogICAgUFJSZWFkRk4gcmVhZDsKICAgIFBSV3JpdGVGTiB3cml0ZTsKICAgIFBSQXZhaWxh
YmxlRk4gYXZhaWxhYmxlOwogICAgUFJBdmFpbGFibGU2NEZOIGF2YWlsYWJsZTY0OwogICAgUFJG
c3luY0ZOIGZzeW5jOwogICAgUFJTZWVrRk4gc2VlazsKICAgIFBSU2VlazY0Rk4gc2VlazY0Owog
ICAgUFJGaWxlSW5mb0ZOIGZpbGVJbmZvOwogICAgUFJGaWxlSW5mbzY0Rk4gZmlsZUluZm82NDsK
ICAgIFBSV3JpdGV2Rk4gd3JpdGV2OwogICAgUFJDb25uZWN0Rk4gY29ubmVjdDsKICAgIFBSQWNj
ZXB0Rk4gYWNjZXB0OwogICAgUFJCaW5kRk4gYmluZDsKICAgIFBSTGlzdGVuRk4gbGlzdGVuOwog
ICAgUFJTaHV0ZG93bkZOIHNodXRkb3duOwogICAgUFJSZWN2Rk4gcmVjdjsKICAgIFBSU2VuZEZO
IHNlbmQ7CiAgICBQUlJlY3Zmcm9tRk4gcmVjdmZyb207CiAgICBQUlNlbmR0b0ZOIHNlbmR0bzsK
ICAgIFBSUG9sbEZOIHBvbGw7CiAgICBQUkFjY2VwdHJlYWRGTiBhY2NlcHRyZWFkOwogICAgUFJU
cmFuc21pdGZpbGVGTiB0cmFuc21pdGZpbGU7CiAgICBQUkdldHNvY2tuYW1lRk4gZ2V0c29ja25h
bWU7CiAgICBQUkdldHBlZXJuYW1lRk4gZ2V0cGVlcm5hbWU7CiAgICBQUlJlc2VydmVkRk4gcmVz
ZXJ2ZWRfZm5fNjsKICAgIFBSUmVzZXJ2ZWRGTiByZXNlcnZlZF9mbl81OwogICAgUFJHZXRzb2Nr
ZXRvcHRpb25GTiBnZXRzb2NrZXRvcHRpb247CgogICAgUFJTZXRzb2NrZXRvcHRpb25GTiBzZXRz
b2NrZXRvcHRpb247CgogICAgUFJTZW5kZmlsZUZOIHNlbmRmaWxlOwogICAgUFJDb25uZWN0Y29u
dGludWVGTiBjb25uZWN0Y29udGludWU7CgogICAgUFJSZXNlcnZlZEZOIHJlc2VydmVkX2ZuXzM7
CiAgICBQUlJlc2VydmVkRk4gcmVzZXJ2ZWRfZm5fMjsKICAgIFBSUmVzZXJ2ZWRGTiByZXNlcnZl
ZF9mbl8xOwogICAgUFJSZXNlcnZlZEZOIHJlc2VydmVkX2ZuXzA7Cn07CiMgNDMzICIvdmFyL3Rt
cC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9w
cmlvLmgiCnR5cGVkZWYgZW51bSBQUlNwZWNpYWxGRAp7CiAgICBQUl9TdGFuZGFyZElucHV0LAog
ICAgUFJfU3RhbmRhcmRPdXRwdXQsCiAgICBQUl9TdGFuZGFyZEVycm9yCn0gUFJTcGVjaWFsRkQ7
CgpleHRlcm4gUFJGaWxlRGVzYyogUFJfR2V0U3BlY2lhbEZEKFBSU3BlY2lhbEZEIGlkKTsKIyA0
ODAgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5j
bHVkZS9uc3ByL3ByaW8uaCIKZXh0ZXJuIFBSRGVzY0lkZW50aXR5IFBSX0dldFVuaXF1ZUlkZW50
aXR5KGNvbnN0IGNoYXIgKmxheWVyX25hbWUpOwpleHRlcm4gY29uc3QgY2hhciogUFJfR2V0TmFt
ZUZvcklkZW50aXR5KFBSRGVzY0lkZW50aXR5IGlkZW50KTsKZXh0ZXJuIFBSRGVzY0lkZW50aXR5
IFBSX0dldExheWVyc0lkZW50aXR5KFBSRmlsZURlc2MqIGZkKTsKZXh0ZXJuIFBSRmlsZURlc2Mq
IFBSX0dldElkZW50aXRpZXNMYXllcihQUkZpbGVEZXNjKiBmZF9zdGFjaywgUFJEZXNjSWRlbnRp
dHkgaWQpOwojIDQ5MyAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemls
bGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpby5oIgpleHRlcm4gY29uc3QgUFJJT01ldGhvZHMgKiBQ
Ul9HZXREZWZhdWx0SU9NZXRob2RzKHZvaWQpOwojIDUwNCAiL3Zhci90bXAvcG9ydGFnZS9tb3pp
bGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpby5oIgpleHRlcm4g
UFJGaWxlRGVzYyogUFJfQ3JlYXRlSU9MYXllclN0dWIoCiAgICBQUkRlc2NJZGVudGl0eSBpZGVu
dCwgY29uc3QgUFJJT01ldGhvZHMgKm1ldGhvZHMpOwojIDUyMSAiL3Zhci90bXAvcG9ydGFnZS9t
b3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpby5oIgpleHRl
cm4gUFJGaWxlRGVzYyogUFJfQ3JlYXRlSU9MYXllcihQUkZpbGVEZXNjKiBmZCk7CiMgNTM3ICIv
dmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUv
bnNwci9wcmlvLmgiCmV4dGVybiBQUlN0YXR1cyBQUl9QdXNoSU9MYXllcigKICAgIFBSRmlsZURl
c2MgKmZkX3N0YWNrLCBQUkRlc2NJZGVudGl0eSBpZCwgUFJGaWxlRGVzYyAqbGF5ZXIpOwojIDU1
NCAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNs
dWRlL25zcHIvcHJpby5oIgpleHRlcm4gUFJGaWxlRGVzYyogUFJfUG9wSU9MYXllcihQUkZpbGVE
ZXNjICpmZF9zdGFjaywgUFJEZXNjSWRlbnRpdHkgaWQpOwojIDYyOCAiL3Zhci90bXAvcG9ydGFn
ZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpby5oIgpl
eHRlcm4gUFJGaWxlRGVzYyogUFJfT3Blbihjb25zdCBjaGFyICpuYW1lLCBQUkludG4gZmxhZ3Ms
IFBSSW50biBtb2RlKTsKIyA2NTQgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29y
ay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3ByaW8uaCIKZXh0ZXJuIFBSRmlsZURlc2MqIFBS
X09wZW5GaWxlKAogICAgY29uc3QgY2hhciAqbmFtZSwgUFJJbnRuIGZsYWdzLCBQUkludG4gbW9k
ZSk7CiMgNjg1ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9k
aXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUlN0YXR1cyBQUl9DbG9zZShQUkZpbGVE
ZXNjICpmZCk7CiMgNzIwICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96
aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUkludDMyIFBSX1JlYWQoUFJG
aWxlRGVzYyAqZmQsIHZvaWQgKmJ1ZiwgUFJJbnQzMiBhbW91bnQpOwojIDc0NCAiL3Zhci90bXAv
cG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJp
by5oIgpleHRlcm4gUFJJbnQzMiBQUl9Xcml0ZShQUkZpbGVEZXNjICpmZCxjb25zdCB2b2lkICpi
dWYsUFJJbnQzMiBhbW91bnQpOwojIDc3OCAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1y
MS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpby5oIgpleHRlcm4gUFJJbnQzMiBQ
Ul9Xcml0ZXYoCiAgICBQUkZpbGVEZXNjICpmZCwgY29uc3QgUFJJT1ZlYyAqaW92LCBQUkludDMy
IGlvdl9zaXplLAogICAgUFJJbnRlcnZhbFRpbWUgdGltZW91dCk7CiMgNzk5ICIvdmFyL3RtcC9w
b3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlv
LmgiCmV4dGVybiBQUlN0YXR1cyBQUl9EZWxldGUoY29uc3QgY2hhciAqbmFtZSk7CgoKCnR5cGVk
ZWYgZW51bSBQUkZpbGVUeXBlCnsKICAgIFBSX0ZJTEVfRklMRSA9IDEsCiAgICBQUl9GSUxFX0RJ
UkVDVE9SWSA9IDIsCiAgICBQUl9GSUxFX09USEVSID0gMwp9IFBSRmlsZVR5cGU7CgpzdHJ1Y3Qg
UFJGaWxlSW5mbyB7CiAgICBQUkZpbGVUeXBlIHR5cGU7CiAgICBQUk9mZnNldDMyIHNpemU7CiAg
ICBQUlRpbWUgY3JlYXRpb25UaW1lOwogICAgUFJUaW1lIG1vZGlmeVRpbWU7Cn07CgpzdHJ1Y3Qg
UFJGaWxlSW5mbzY0IHsKICAgIFBSRmlsZVR5cGUgdHlwZTsKICAgIFBST2Zmc2V0NjQgc2l6ZTsK
ICAgIFBSVGltZSBjcmVhdGlvblRpbWU7CiAgICBQUlRpbWUgbW9kaWZ5VGltZTsKfTsKIyA4NDIg
Ii92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVk
ZS9uc3ByL3ByaW8uaCIKZXh0ZXJuIFBSU3RhdHVzIFBSX0dldEZpbGVJbmZvKGNvbnN0IGNoYXIg
KmZuLCBQUkZpbGVJbmZvICppbmZvKTsKZXh0ZXJuIFBSU3RhdHVzIFBSX0dldEZpbGVJbmZvNjQo
Y29uc3QgY2hhciAqZm4sIFBSRmlsZUluZm82NCAqaW5mbyk7CiMgODY5ICIvdmFyL3RtcC9wb3J0
YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgi
CmV4dGVybiBQUlN0YXR1cyBQUl9HZXRPcGVuRmlsZUluZm8oUFJGaWxlRGVzYyAqZmQsIFBSRmls
ZUluZm8gKmluZm8pOwpleHRlcm4gUFJTdGF0dXMgUFJfR2V0T3BlbkZpbGVJbmZvNjQoUFJGaWxl
RGVzYyAqZmQsIFBSRmlsZUluZm82NCAqaW5mbyk7CiMgODg4ICIvdmFyL3RtcC9wb3J0YWdlL21v
emlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCmV4dGVy
biBQUlN0YXR1cyBQUl9SZW5hbWUoY29uc3QgY2hhciAqZnJvbSwgY29uc3QgY2hhciAqdG8pOwoj
IDkxNCAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9p
bmNsdWRlL25zcHIvcHJpby5oIgp0eXBlZGVmIGVudW0gUFJBY2Nlc3NIb3cgewogICAgUFJfQUND
RVNTX0VYSVNUUyA9IDEsCiAgICBQUl9BQ0NFU1NfV1JJVEVfT0sgPSAyLAogICAgUFJfQUNDRVNT
X1JFQURfT0sgPSAzCn0gUFJBY2Nlc3NIb3c7CgpleHRlcm4gUFJTdGF0dXMgUFJfQWNjZXNzKGNv
bnN0IGNoYXIgKm5hbWUsIFBSQWNjZXNzSG93IGhvdyk7CiMgOTU1ICIvdmFyL3RtcC9wb3J0YWdl
L21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCmV4
dGVybiBQUk9mZnNldDMyIFBSX1NlZWsoUFJGaWxlRGVzYyAqZmQsIFBST2Zmc2V0MzIgb2Zmc2V0
LCBQUlNlZWtXaGVuY2Ugd2hlbmNlKTsKZXh0ZXJuIFBST2Zmc2V0NjQgUFJfU2VlazY0KFBSRmls
ZURlc2MgKmZkLCBQUk9mZnNldDY0IG9mZnNldCwgUFJTZWVrV2hlbmNlIHdoZW5jZSk7CiMgOTc4
ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1
ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUkludDMyIFBSX0F2YWlsYWJsZShQUkZpbGVEZXNjICpm
ZCk7CmV4dGVybiBQUkludDY0IFBSX0F2YWlsYWJsZTY0KFBSRmlsZURlc2MgKmZkKTsKIyA5OTgg
Ii92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVk
ZS9uc3ByL3ByaW8uaCIKZXh0ZXJuIFBSU3RhdHVzIFBSX1N5bmMoUFJGaWxlRGVzYyAqZmQpOwoK
CgpzdHJ1Y3QgUFJEaXJFbnRyeSB7CiAgICBjb25zdCBjaGFyICpuYW1lOwp9OwojIDEwMzcgIi92
YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9u
c3ByL3ByaW8uaCIKZXh0ZXJuIFBSRGlyKiBQUl9PcGVuRGlyKGNvbnN0IGNoYXIgKm5hbWUpOwoj
IDEwNjkgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3Qv
aW5jbHVkZS9uc3ByL3ByaW8uaCIKdHlwZWRlZiBlbnVtIFBSRGlyRmxhZ3MgewogICAgUFJfU0tJ
UF9OT05FID0gMHgwLAogICAgUFJfU0tJUF9ET1QgPSAweDEsCiAgICBQUl9TS0lQX0RPVF9ET1Qg
PSAweDIsCiAgICBQUl9TS0lQX0JPVEggPSAweDMsCiAgICBQUl9TS0lQX0hJRERFTiA9IDB4NAp9
IFBSRGlyRmxhZ3M7CgpleHRlcm4gUFJEaXJFbnRyeSogUFJfUmVhZERpcihQUkRpciAqZGlyLCBQ
UkRpckZsYWdzIGZsYWdzKTsKIyAxMTAzICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIx
L3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUlN0YXR1cyBQ
Ul9DbG9zZURpcihQUkRpciAqZGlyKTsKIyAxMTMyICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEt
MS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUlN0
YXR1cyBQUl9Na0Rpcihjb25zdCBjaGFyICpuYW1lLCBQUkludG4gbW9kZSk7CiMgMTE0NCAiL3Zh
ci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25z
cHIvcHJpby5oIgpleHRlcm4gUFJTdGF0dXMgUFJfTWFrZURpcihjb25zdCBjaGFyICpuYW1lLCBQ
UkludG4gbW9kZSk7CiMgMTE2NCAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3Jr
L21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpby5oIgpleHRlcm4gUFJTdGF0dXMgUFJfUm1E
aXIoY29uc3QgY2hhciAqbmFtZSk7CiMgMTE4MyAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEu
My1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpby5oIgpleHRlcm4gUFJGaWxl
RGVzYyogUFJfTmV3VURQU29ja2V0KHZvaWQpOwojIDEyMDIgIi92YXIvdG1wL3BvcnRhZ2UvbW96
aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3ByaW8uaCIKZXh0ZXJu
IFBSRmlsZURlc2MqIFBSX05ld1RDUFNvY2tldCh2b2lkKTsKIyAxMjIyICIvdmFyL3RtcC9wb3J0
YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgi
CmV4dGVybiBQUkZpbGVEZXNjKiBQUl9PcGVuVURQU29ja2V0KFBSSW50biBhZik7CiMgMTI0MiAi
L3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRl
L25zcHIvcHJpby5oIgpleHRlcm4gUFJGaWxlRGVzYyogUFJfT3BlblRDUFNvY2tldChQUkludG4g
YWYpOwojIDEyNjYgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxh
L2Rpc3QvaW5jbHVkZS9uc3ByL3ByaW8uaCIKZXh0ZXJuIFBSU3RhdHVzIFBSX0Nvbm5lY3QoCiAg
ICBQUkZpbGVEZXNjICpmZCwgY29uc3QgUFJOZXRBZGRyICphZGRyLCBQUkludGVydmFsVGltZSB0
aW1lb3V0KTsKIyAxMzAxICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96
aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUlN0YXR1cyBQUl9Db25uZWN0
Q29udGludWUoUFJGaWxlRGVzYyAqZmQsIFBSSW50MTYgb3V0X2ZsYWdzKTsKIyAxMzMxICIvdmFy
L3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNw
ci9wcmlvLmgiCmV4dGVybiBQUlN0YXR1cyBQUl9HZXRDb25uZWN0U3RhdHVzKGNvbnN0IFBSUG9s
bERlc2MgKnBkKTsKIyAxMzU1ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsv
bW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUkZpbGVEZXNjKiBQUl9B
Y2NlcHQoCiAgICBQUkZpbGVEZXNjICpmZCwgUFJOZXRBZGRyICphZGRyLCBQUkludGVydmFsVGlt
ZSB0aW1lb3V0KTsKIyAxMzc3ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsv
bW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUlN0YXR1cyBQUl9CaW5k
KFBSRmlsZURlc2MgKmZkLCBjb25zdCBQUk5ldEFkZHIgKmFkZHIpOwojIDEzOTkgIi92YXIvdG1w
L3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3By
aW8uaCIKZXh0ZXJuIFBSU3RhdHVzIFBSX0xpc3RlbihQUkZpbGVEZXNjICpmZCwgUFJJbnRuIGJh
Y2tsb2cpOwojIDE0MjMgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3pp
bGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3ByaW8uaCIKdHlwZWRlZiBlbnVtIFBSU2h1dGRvd25Ib3cK
ewogICAgUFJfU0hVVERPV05fUkNWID0gMCwKICAgIFBSX1NIVVRET1dOX1NFTkQgPSAxLAogICAg
UFJfU0hVVERPV05fQk9USCA9IDIKfSBQUlNodXRkb3duSG93OwoKZXh0ZXJuIFBSU3RhdHVzIFBS
X1NodXRkb3duKFBSRmlsZURlc2MgKmZkLCBQUlNodXRkb3duSG93IGhvdyk7CiMgMTQ2MyAiL3Zh
ci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25z
cHIvcHJpby5oIgpleHRlcm4gUFJJbnQzMiBQUl9SZWN2KFBSRmlsZURlc2MgKmZkLCB2b2lkICpi
dWYsIFBSSW50MzIgYW1vdW50LAogICAgICAgICAgICAgICAgUFJJbnRuIGZsYWdzLCBQUkludGVy
dmFsVGltZSB0aW1lb3V0KTsKIyAxNDk0ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIx
L3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUkludDMyIFBS
X1NlbmQoUFJGaWxlRGVzYyAqZmQsIGNvbnN0IHZvaWQgKmJ1ZiwgUFJJbnQzMiBhbW91bnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJJbnRuIGZsYWdzLCBQUkludGVydmFsVGlt
ZSB0aW1lb3V0KTsKIyAxNTI5ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsv
bW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUkludDMyIFBSX1JlY3ZG
cm9tKAogICAgUFJGaWxlRGVzYyAqZmQsIHZvaWQgKmJ1ZiwgUFJJbnQzMiBhbW91bnQsIFBSSW50
biBmbGFncywKICAgIFBSTmV0QWRkciAqYWRkciwgUFJJbnRlcnZhbFRpbWUgdGltZW91dCk7CiMg
MTU2MiAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9p
bmNsdWRlL25zcHIvcHJpby5oIgpleHRlcm4gUFJJbnQzMiBQUl9TZW5kVG8oCiAgICBQUkZpbGVE
ZXNjICpmZCwgY29uc3Qgdm9pZCAqYnVmLCBQUkludDMyIGFtb3VudCwgUFJJbnRuIGZsYWdzLAog
ICAgY29uc3QgUFJOZXRBZGRyICphZGRyLCBQUkludGVydmFsVGltZSB0aW1lb3V0KTsKIyAxNjAy
ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1
ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUkludDMyIFBSX1RyYW5zbWl0RmlsZSgKICAgIFBSRmls
ZURlc2MgKm5ldHdvcmtTb2NrZXQsIFBSRmlsZURlc2MgKnNvdXJjZUZpbGUsCiAgICBjb25zdCB2
b2lkICpoZWFkZXJzLCBQUkludDMyIGhsZW4sIFBSVHJhbnNtaXRGaWxlRmxhZ3MgZmxhZ3MsCiAg
ICBQUkludGVydmFsVGltZSB0aW1lb3V0KTsKIyAxNjQxICIvdmFyL3RtcC9wb3J0YWdlL21vemls
bGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCnN0cnVjdCBQ
UlNlbmRGaWxlRGF0YSB7CiAgICAgICAgUFJGaWxlRGVzYyAqZmQ7CiAgICAgICAgUFJVaW50MzIg
ZmlsZV9vZmZzZXQ7CiAgICAgICAgUFJTaXplIGZpbGVfbmJ5dGVzOwoKCiAgICAgICAgY29uc3Qg
dm9pZCAqaGVhZGVyOwogICAgICAgIFBSSW50MzIgaGxlbjsKICAgICAgICBjb25zdCB2b2lkICp0
cmFpbGVyOwogICAgICAgIFBSSW50MzIgdGxlbjsKfTsKCgpleHRlcm4gUFJJbnQzMiBQUl9TZW5k
RmlsZSgKICAgIFBSRmlsZURlc2MgKm5ldHdvcmtTb2NrZXQsIFBSU2VuZEZpbGVEYXRhICpzZW5k
RGF0YSwKICAgICAgICBQUlRyYW5zbWl0RmlsZUZsYWdzIGZsYWdzLCBQUkludGVydmFsVGltZSB0
aW1lb3V0KTsKIyAxNzA4ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96
aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUkludDMyIFBSX0FjY2VwdFJl
YWQoCiAgICBQUkZpbGVEZXNjICpsaXN0ZW5Tb2NrLCBQUkZpbGVEZXNjICoqYWNjZXB0ZWRTb2Nr
LAogICAgUFJOZXRBZGRyICoqcGVlckFkZHIsIHZvaWQgKmJ1ZiwgUFJJbnQzMiBhbW91bnQsIFBS
SW50ZXJ2YWxUaW1lIHRpbWVvdXQpOwojIDE3MzIgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0x
LjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3ByaW8uaCIKZXh0ZXJuIFBSU3Rh
dHVzIFBSX05ld1RDUFNvY2tldFBhaXIoUFJGaWxlRGVzYyAqZmRzWzJdKTsKIyAxNzUyICIvdmFy
L3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNw
ci9wcmlvLmgiCmV4dGVybiBQUlN0YXR1cyBQUl9HZXRTb2NrTmFtZShQUkZpbGVEZXNjICpmZCwg
UFJOZXRBZGRyICphZGRyKTsKIyAxNzc0ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIx
L3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUlN0YXR1cyBQ
Ul9HZXRQZWVyTmFtZShQUkZpbGVEZXNjICpmZCwgUFJOZXRBZGRyICphZGRyKTsKCmV4dGVybiBQ
UlN0YXR1cyBQUl9HZXRTb2NrZXRPcHRpb24oCiAgICBQUkZpbGVEZXNjICpmZCwgUFJTb2NrZXRP
cHRpb25EYXRhICpkYXRhKTsKCmV4dGVybiBQUlN0YXR1cyBQUl9TZXRTb2NrZXRPcHRpb24oCiAg
ICBQUkZpbGVEZXNjICpmZCwgY29uc3QgUFJTb2NrZXRPcHRpb25EYXRhICpkYXRhKTsKIyAxODA5
ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1
ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUlN0YXR1cyBQUl9TZXRGREluaGVyaXRhYmxlKAogICAg
UFJGaWxlRGVzYyAqZmQsCiAgICBQUkJvb2wgaW5oZXJpdGFibGUpOwojIDE4MjkgIi92YXIvdG1w
L3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3By
aW8uaCIKZXh0ZXJuIFBSRmlsZURlc2MgKiBQUl9HZXRJbmhlcml0ZWRGRChjb25zdCBjaGFyICpu
YW1lKTsKIyAxODM5ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxs
YS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCnR5cGVkZWYgc3RydWN0IFBSRmlsZU1hcCBQUkZp
bGVNYXA7CgoKCgp0eXBlZGVmIGVudW0gUFJGaWxlTWFwUHJvdGVjdCB7CiAgICBQUl9QUk9UX1JF
QURPTkxZLAogICAgUFJfUFJPVF9SRUFEV1JJVEUsCiAgICBQUl9QUk9UX1dSSVRFQ09QWQp9IFBS
RmlsZU1hcFByb3RlY3Q7CgpleHRlcm4gUFJGaWxlTWFwICogUFJfQ3JlYXRlRmlsZU1hcCgKICAg
IFBSRmlsZURlc2MgKmZkLAogICAgUFJJbnQ2NCBzaXplLAogICAgUFJGaWxlTWFwUHJvdGVjdCBw
cm90KTsKCgoKCmV4dGVybiBQUkludDMyIFBSX0dldE1lbU1hcEFsaWdubWVudCh2b2lkKTsKCmV4
dGVybiB2b2lkICogUFJfTWVtTWFwKAogICAgUFJGaWxlTWFwICpmbWFwLAogICAgUFJPZmZzZXQ2
NCBvZmZzZXQsCgogICAgUFJVaW50MzIgbGVuKTsKCmV4dGVybiBQUlN0YXR1cyBQUl9NZW1Vbm1h
cCh2b2lkICphZGRyLCBQUlVpbnQzMiBsZW4pOwoKZXh0ZXJuIFBSU3RhdHVzIFBSX0Nsb3NlRmls
ZU1hcChQUkZpbGVNYXAgKmZtYXApOwojIDE4ODMgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0x
LjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3ByaW8uaCIKZXh0ZXJuIFBSU3Rh
dHVzIFBSX0NyZWF0ZVBpcGUoCiAgICBQUkZpbGVEZXNjICoqcmVhZFBpcGUsCiAgICBQUkZpbGVE
ZXNjICoqd3JpdGVQaXBlCik7CgoKCgoKc3RydWN0IFBSUG9sbERlc2MgewogICAgUFJGaWxlRGVz
YyogZmQ7CiAgICBQUkludDE2IGluX2ZsYWdzOwogICAgUFJJbnQxNiBvdXRfZmxhZ3M7Cn07CiMg
MTk2NCAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9p
bmNsdWRlL25zcHIvcHJpby5oIgpleHRlcm4gUFJJbnQzMiBQUl9Qb2xsKAogICAgUFJQb2xsRGVz
YyAqcGRzLCBQUkludG4gbnBkcywgUFJJbnRlcnZhbFRpbWUgdGltZW91dCk7CiMgMjAwOCAiL3Zh
ci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25z
cHIvcHJpby5oIgpleHRlcm4gUFJGaWxlRGVzYyAqIFBSX05ld1BvbGxhYmxlRXZlbnQodm9pZCk7
CgpleHRlcm4gUFJTdGF0dXMgUFJfRGVzdHJveVBvbGxhYmxlRXZlbnQoUFJGaWxlRGVzYyAqZXZl
bnQpOwoKZXh0ZXJuIFBSU3RhdHVzIFBSX1NldFBvbGxhYmxlRXZlbnQoUFJGaWxlRGVzYyAqZXZl
bnQpOwoKZXh0ZXJuIFBSU3RhdHVzIFBSX1dhaXRGb3JQb2xsYWJsZUV2ZW50KFBSRmlsZURlc2Mg
KmV2ZW50KTsKCn0KIyA0OCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zTmV0VXRpbC5o
IiAyCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lVUkkuaCIgMQojIDcyICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJVVJJLmgiCmNsYXNzIG5zSVVSSSA6IHB1Ymxp
YyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkg
e3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgwN2EyMmNjMCwgMHgwY2U1LCAweDExZDMsIHsg
MHg5MywgMHgzMSwgMHgwMCwgMHgxMCwgMHg0YiwgMHhhMCwgMHhmZCwgMHg0MCB9fTsgcmV0dXJu
IGlpZDt9CiMgODcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lVUkkuaCIKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldFNwZWMobnNBQ1N0cmluZyAmIGFTcGVjKSA9IDA7CiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXRTcGVjKGNvbnN0IG5zQUNTdHJpbmcgJiBhU3BlYykgPSAwOwojIDk3ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJVVJJLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQ
cmVQYXRoKG5zQUNTdHJpbmcgJiBhUHJlUGF0aCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0U2NoZW1lKG5zQUNTdHJpbmcgJiBhU2NoZW1lKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRTY2hlbWUoY29uc3QgbnNBQ1N0cmluZyAmIGFTY2hlbWUpID0gMDsKCgoKCgoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRVc2VyUGFzcyhuc0FDU3RyaW5nICYgYVVzZXJQYXNzKSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXRVc2VyUGFzcyhjb25zdCBuc0FDU3RyaW5nICYgYVVzZXJQYXNz
KSA9IDA7CiMgMTIzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJVVJJLmgiCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRVc2VybmFtZShuc0FDU3RyaW5nICYgYVVzZXJuYW1lKSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXRVc2VybmFtZShjb25zdCBuc0FDU3RyaW5nICYgYVVzZXJuYW1l
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBhc3N3b3JkKG5zQUNTdHJpbmcgJiBhUGFz
c3dvcmQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFBhc3N3b3JkKGNvbnN0IG5zQUNTdHJp
bmcgJiBhUGFzc3dvcmQpID0gMDsKCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRIb3N0UG9y
dChuc0FDU3RyaW5nICYgYUhvc3RQb3J0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRIb3N0
UG9ydChjb25zdCBuc0FDU3RyaW5nICYgYUhvc3RQb3J0KSA9IDA7CiMgMTQ3ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbmVja28vbnNJVVJJLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRIb3N0KG5z
QUNTdHJpbmcgJiBhSG9zdCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0SG9zdChjb25zdCBu
c0FDU3RyaW5nICYgYUhvc3QpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBvcnQo
UFJJbnQzMiAqYVBvcnQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFBvcnQoUFJJbnQzMiBh
UG9ydCkgPSAwOwojIDE2NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVVSSS5oIgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0UGF0aChuc0FDU3RyaW5nICYgYVBhdGgpID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldFBhdGgoY29uc3QgbnNBQ1N0cmluZyAmIGFQYXRoKSA9IDA7CiMgMTc3
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJVVJJLmgiCiAgdmlydHVhbCBuc3Jlc3Vs
dCBFcXVhbHMobnNJVVJJICpvdGhlciwgUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKCgoKCgogIHZp
cnR1YWwgbnNyZXN1bHQgU2NoZW1lSXMoY29uc3QgY2hhciAqc2NoZW1lLCBQUkJvb2wgKl9yZXR2
YWwpID0gMDsKIyAxOTQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lVUkkuaCIKICB2
aXJ0dWFsIG5zcmVzdWx0IENsb25lKG5zSVVSSSAqKl9yZXR2YWwpID0gMDsKIyAyMDMgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lVUkkuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFJlc29s
dmUoY29uc3QgbnNBQ1N0cmluZyAmIHJlbGF0aXZlUGF0aCwgbnNBQ1N0cmluZyAmIF9yZXR2YWwp
ID0gMDsKIyAyMTQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lVUkkuaCIKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldEFzY2lpU3BlYyhuc0FDU3RyaW5nICYgYUFzY2lpU3BlYykgPSAwOwoK
CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFzY2lpSG9zdChuc0FDU3RyaW5nICYgYUFzY2lp
SG9zdCkgPSAwOwojIDIzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVVSSS5oIgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0T3JpZ2luQ2hhcnNldChuc0FDU3RyaW5nICYgYU9yaWdpbkNo
YXJzZXQpID0gMDsKCn07CiMgNTAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc05ldFV0
aWwuaCIgMgoKCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lSZXF1ZXN0T2Jz
ZXJ2ZXJQcm94eS5oIiAxCiMgMTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lSZXF1
ZXN0T2JzZXJ2ZXJQcm94eS5oIgpjbGFzcyBuc0lFdmVudFF1ZXVlOwojIDM1ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbmVja28vbnNJUmVxdWVzdE9ic2VydmVyUHJveHkuaCIKY2xhc3MgbnNJUmVx
dWVzdE9ic2VydmVyUHJveHkgOiBwdWJsaWMgbnNJUmVxdWVzdE9ic2VydmVyIHsKIHB1YmxpYzoK
CiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9
IHsweDNjOWI1MzJlLCAweGRiODQsIDB4NGVjZiwgeyAweGFhLCAweDZhLCAweDRkLCAweDM4LCAw
eGE5LCAweGM0LCAweGM1LCAweGYwIH19OyByZXR1cm4gaWlkO30KIyA0NyAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL25lY2tvL25zSVJlcXVlc3RPYnNlcnZlclByb3h5LmgiCiAgdmlydHVhbCBuc3Jl
c3VsdCBJbml0KG5zSVJlcXVlc3RPYnNlcnZlciAqb2JzZXJ2ZXIsIG5zSUV2ZW50UXVldWUgKmV2
ZW50USkgPSAwOwoKfTsKIyA1NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zTmV0VXRp
bC5oIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVN0cmVhbUxpc3RlbmVy
UHJveHkuaCIgMQojIDE3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJU3RyZWFtTGlz
dGVuZXJQcm94eS5oIgpjbGFzcyBuc0lFdmVudFF1ZXVlOwojIDM1ICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvbmVja28vbnNJU3RyZWFtTGlzdGVuZXJQcm94eS5oIgpjbGFzcyBuc0lTdHJlYW1MaXN0
ZW5lclByb3h5IDogcHVibGljIG5zSVN0cmVhbUxpc3RlbmVyIHsKIHB1YmxpYzoKCiAgc3RhdGlj
IGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGU0MDBl
Njg4LCAweDZiNTQsIDB4NGE4NCwgeyAweDhjLCAweDRlLCAweDU2LCAweGI0LCAweDAyLCAweDgx
LCAweDk4LCAweDFhIH19OyByZXR1cm4gaWlkO30KIyA0OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L25lY2tvL25zSVN0cmVhbUxpc3RlbmVyUHJveHkuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEluaXQo
bnNJU3RyZWFtTGlzdGVuZXIgKmFMaXN0ZW5lciwgbnNJRXZlbnRRdWV1ZSAqYUV2ZW50USwgUFJV
aW50MzIgYUJ1ZmZlclNlZ21lbnRTaXplLCBQUlVpbnQzMiBhQnVmZmVyTWF4U2l6ZSkgPSAwOwoK
fTsKIyAxMjAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lTdHJlYW1MaXN0ZW5lclBy
b3h5LmgiCmNsYXNzIG5zSUFzeW5jU3RyZWFtTGlzdGVuZXIgOiBwdWJsaWMgbnNJU3RyZWFtTGlz
dGVuZXIgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMg
Y29uc3QgbnNJSUQgaWlkID0gezB4MWIwMTJhZGUsIDB4OTFiZiwgMHgxMWQzLCB7IDB4OGMsIDB4
ZDksIDB4MDAsIDB4NjAsIDB4YjAsIDB4ZmMsIDB4MTQsIDB4YTMgfX07IHJldHVybiBpaWQ7fQoj
IDEzMiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVN0cmVhbUxpc3RlbmVyUHJveHku
aCIKICB2aXJ0dWFsIG5zcmVzdWx0IEluaXQobnNJU3RyZWFtTGlzdGVuZXIgKmFSZWNlaXZlciwg
bnNJRXZlbnRRdWV1ZSAqYUV2ZW50USkgPSAwOwoKfTsKIyA1NSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL25lY2tvL25zTmV0VXRpbC5oIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tv
L25zSVNpbXBsZVN0cmVhbUxpc3RlbmVyLmgiIDEKIyAxNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L25lY2tvL25zSVNpbXBsZVN0cmVhbUxpc3RlbmVyLmgiCmNsYXNzIG5zSU91dHB1dFN0cmVhbTsK
IyAzMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVNpbXBsZVN0cmVhbUxpc3RlbmVy
LmgiCmNsYXNzIG5zSVNpbXBsZVN0cmVhbUxpc3RlbmVyIDogcHVibGljIG5zSVN0cmVhbUxpc3Rl
bmVyIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNv
bnN0IG5zSUlEIGlpZCA9IHsweGE5Yjg0ZjZhLCAweDA4MjQsIDB4NDI3OCwgeyAweGJhLCAweGU2
LCAweGJmLCAweGNhLCAweDA1LCAweDcwLCAweGEyLCAweDZlIH19OyByZXR1cm4gaWlkO30KIyA0
MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVNpbXBsZVN0cmVhbUxpc3RlbmVyLmgi
CiAgdmlydHVhbCBuc3Jlc3VsdCBJbml0KG5zSU91dHB1dFN0cmVhbSAqYVNpbmssIG5zSVJlcXVl
c3RPYnNlcnZlciAqYU9ic2VydmVyKSA9IDA7Cgp9OwojIDU2ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvbmVja28vbnNOZXRVdGlsLmgiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28v
bnNJTG9hZEdyb3VwLmgiIDEKIyAxNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSUxv
YWRHcm91cC5oIgpjbGFzcyBuc0lTaW1wbGVFbnVtZXJhdG9yOwoKY2xhc3MgbnNJUmVxdWVzdE9i
c2VydmVyOwoKY2xhc3MgbnNJSW50ZXJmYWNlUmVxdWVzdG9yOwojIDMxICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvbmVja28vbnNJTG9hZEdyb3VwLmgiCmNsYXNzIG5zSUxvYWRHcm91cCA6IHB1Ymxp
YyBuc0lSZXF1ZXN0IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7
c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDNkZTBhMzFjLCAweGZlYWYsIDB4NDAwZiwgeyAw
eDlmLCAweDFlLCAweDRlLCAweGY3LCAweDFmLCAweDhiLCAweDIwLCAweGNjIH19OyByZXR1cm4g
aWlkO30KIyA0NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSUxvYWRHcm91cC5oIgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0R3JvdXBPYnNlcnZlcihuc0lSZXF1ZXN0T2JzZXJ2ZXIgKiAq
YUdyb3VwT2JzZXJ2ZXIpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEdyb3VwT2JzZXJ2ZXIo
bnNJUmVxdWVzdE9ic2VydmVyICogYUdyb3VwT2JzZXJ2ZXIpID0gMDsKIyA1OSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL25lY2tvL25zSUxvYWRHcm91cC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
RGVmYXVsdExvYWRSZXF1ZXN0KG5zSVJlcXVlc3QgKiAqYURlZmF1bHRMb2FkUmVxdWVzdCkgPSAw
OwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RGVmYXVsdExvYWRSZXF1ZXN0KG5zSVJlcXVlc3QgKiBh
RGVmYXVsdExvYWRSZXF1ZXN0KSA9IDA7CiMgNzIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNr
by9uc0lMb2FkR3JvdXAuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEFkZFJlcXVlc3QobnNJUmVxdWVz
dCAqYVJlcXVlc3QsIG5zSVN1cHBvcnRzICphQ29udGV4dCkgPSAwOwoKCgoKCgogIHZpcnR1YWwg
bnNyZXN1bHQgUmVtb3ZlUmVxdWVzdChuc0lSZXF1ZXN0ICphUmVxdWVzdCwgbnNJU3VwcG9ydHMg
KmFDb250ZXh0LCBuc3Jlc3VsdCBhU3RhdHVzKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRSZXF1ZXN0cyhuc0lTaW1wbGVFbnVtZXJhdG9yICogKmFSZXF1ZXN0cykgPSAwOwoKCgoK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QWN0aXZlQ291bnQoUFJVaW50MzIgKmFBY3RpdmVDb3Vu
dCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROb3RpZmljYXRpb25DYWxsYmFja3Mo
bnNJSW50ZXJmYWNlUmVxdWVzdG9yICogKmFOb3RpZmljYXRpb25DYWxsYmFja3MpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldE5vdGlmaWNhdGlvbkNhbGxiYWNrcyhuc0lJbnRlcmZhY2VSZXF1
ZXN0b3IgKiBhTm90aWZpY2F0aW9uQ2FsbGJhY2tzKSA9IDA7Cgp9OwojIDU3ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbmVja28vbnNOZXRVdGlsLmgiIDIKCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9uZWNrby9uc0lJT1NlcnZpY2UuaCIgMQojIDE3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
bmVja28vbnNJSU9TZXJ2aWNlLmgiCmNsYXNzIG5zSVByb3RvY29sSGFuZGxlcjsKCmNsYXNzIG5z
SUNoYW5uZWw7CgpjbGFzcyBuc0lVUkk7CgpjbGFzcyBuc0lGaWxlOwojIDQ0ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbmVja28vbnNJSU9TZXJ2aWNlLmgiCmNsYXNzIG5zSUlPU2VydmljZSA6IHB1
YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlE
KCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhiZGRlZGEzZiwgMHg5MDIwLCAweDRkMTIs
IHsgMHg4YywgMHg3MCwgMHg5OCwgMHg0ZSwgMHhlOSwgMHhmNywgMHg5MywgMHg1ZSB9fTsgcmV0
dXJuIGlpZDt9CiMgNTYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lJT1NlcnZpY2Uu
aCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByb3RvY29sSGFuZGxlcihjb25zdCBjaGFyICphU2No
ZW1lLCBuc0lQcm90b2NvbEhhbmRsZXIgKipfcmV0dmFsKSA9IDA7CiMgNjUgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9uZWNrby9uc0lJT1NlcnZpY2UuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBy
b3RvY29sRmxhZ3MoY29uc3QgY2hhciAqYVNjaGVtZSwgUFJVaW50MzIgKl9yZXR2YWwpID0gMDsK
IyA3NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSUlPU2VydmljZS5oIgogIHZpcnR1
YWwgbnNyZXN1bHQgTmV3VVJJKGNvbnN0IG5zQUNTdHJpbmcgJiBhU3BlYywgY29uc3QgY2hhciAq
YU9yaWdpbkNoYXJzZXQsIG5zSVVSSSAqYUJhc2VVUkksIG5zSVVSSSAqKl9yZXR2YWwpID0gMDsK
IyA4NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSUlPU2VydmljZS5oIgogIHZpcnR1
YWwgbnNyZXN1bHQgTmV3RmlsZVVSSShuc0lGaWxlICphRmlsZSwgbnNJVVJJICoqX3JldHZhbCkg
PSAwOwojIDk0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJSU9TZXJ2aWNlLmgiCiAg
dmlydHVhbCBuc3Jlc3VsdCBOZXdDaGFubmVsRnJvbVVSSShuc0lVUkkgKmFVUkksIG5zSUNoYW5u
ZWwgKipfcmV0dmFsKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IE5ld0NoYW5uZWwoY29u
c3QgbnNBQ1N0cmluZyAmIGFTcGVjLCBjb25zdCBjaGFyICphT3JpZ2luQ2hhcnNldCwgbnNJVVJJ
ICphQmFzZVVSSSwgbnNJQ2hhbm5lbCAqKl9yZXR2YWwpID0gMDsKIyAxMTAgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9uZWNrby9uc0lJT1NlcnZpY2UuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE9m
ZmxpbmUoUFJCb29sICphT2ZmbGluZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0T2ZmbGlu
ZShQUkJvb2wgYU9mZmxpbmUpID0gMDsKIyAxMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNr
by9uc0lJT1NlcnZpY2UuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEFsbG93UG9ydChQUkludDMyIGFQ
b3J0LCBjb25zdCBjaGFyICphU2NoZW1lLCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKIyAxNDEgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lJT1NlcnZpY2UuaCIKICB2aXJ0dWFsIG5zcmVz
dWx0IEV4dHJhY3RTY2hlbWUoY29uc3QgbnNBQ1N0cmluZyAmIHVybFN0cmluZywgbnNBQ1N0cmlu
ZyAmIF9yZXR2YWwpID0gMDsKCn07CiMgNjAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9u
c05ldFV0aWwuaCIgMgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJQ2hhbm5l
bC5oIiAxCiMgMTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lDaGFubmVsLmgiCmNs
YXNzIG5zSVVSSTsKCmNsYXNzIG5zSUludGVyZmFjZVJlcXVlc3RvcjsKCmNsYXNzIG5zSUlucHV0
U3RyZWFtOwoKY2xhc3MgbnNJU3RyZWFtTGlzdGVuZXI7CiMgNDcgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9uZWNrby9uc0lDaGFubmVsLmgiCmNsYXNzIG5zSUNoYW5uZWwgOiBwdWJsaWMgbnNJUmVx
dWVzdCB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBj
b25zdCBuc0lJRCBpaWQgPSB7MHhjNjNhMDU1YSwgMHhhNjc2LCAweDRlNzEsIHsgMHhiZiwgMHgz
YywgMHg2YywgMHhmYSwgMHgxMSwgMHgwOCwgMHgyMCwgMHgxOCB9fTsgcmV0dXJuIGlpZDt9CiMg
NjIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lDaGFubmVsLmgiCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRPcmlnaW5hbFVSSShuc0lVUkkgKiAqYU9yaWdpbmFsVVJJKSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXRPcmlnaW5hbFVSSShuc0lVUkkgKiBhT3JpZ2luYWxVUkkpID0gMDsK
CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VVJJKG5zSVVSSSAqICphVVJJKSA9IDA7CiMgODEg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lDaGFubmVsLmgiCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRPd25lcihuc0lTdXBwb3J0cyAqICphT3duZXIpID0gMDsKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldE93bmVyKG5zSVN1cHBvcnRzICogYU93bmVyKSA9IDA7CiMgOTQgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9uZWNrby9uc0lDaGFubmVsLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROb3Rp
ZmljYXRpb25DYWxsYmFja3MobnNJSW50ZXJmYWNlUmVxdWVzdG9yICogKmFOb3RpZmljYXRpb25D
YWxsYmFja3MpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE5vdGlmaWNhdGlvbkNhbGxiYWNr
cyhuc0lJbnRlcmZhY2VSZXF1ZXN0b3IgKiBhTm90aWZpY2F0aW9uQ2FsbGJhY2tzKSA9IDA7CgoK
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNlY3VyaXR5SW5mbyhuc0lTdXBwb3J0cyAqICphU2Vj
dXJpdHlJbmZvKSA9IDA7CiMgMTExICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJQ2hh
bm5lbC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29udGVudFR5cGUobnNBQ1N0cmluZyAmIGFD
b250ZW50VHlwZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q29udGVudFR5cGUoY29uc3Qg
bnNBQ1N0cmluZyAmIGFDb250ZW50VHlwZSkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0Q29udGVudENoYXJzZXQobnNBQ1N0cmluZyAmIGFDb250ZW50Q2hhcnNldCkgPSAwOwogIHZp
cnR1YWwgbnNyZXN1bHQgU2V0Q29udGVudENoYXJzZXQoY29uc3QgbnNBQ1N0cmluZyAmIGFDb250
ZW50Q2hhcnNldCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29udGVudExlbmd0
aChQUkludDMyICphQ29udGVudExlbmd0aCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q29u
dGVudExlbmd0aChQUkludDMyIGFDb250ZW50TGVuZ3RoKSA9IDA7CiMgMTQwICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbmVja28vbnNJQ2hhbm5lbC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgT3Blbihu
c0lJbnB1dFN0cmVhbSAqKl9yZXR2YWwpID0gMDsKIyAxNTAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9uZWNrby9uc0lDaGFubmVsLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBBc3luY09wZW4obnNJU3Ry
ZWFtTGlzdGVuZXIgKmFMaXN0ZW5lciwgbnNJU3VwcG9ydHMgKmFDb250ZXh0KSA9IDA7CiMgMTYy
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJQ2hhbm5lbC5oIgogIGVudW0geyBMT0FE
X0RPQ1VNRU5UX1VSSSA9IDY1NTM2VSB9OwoKCgoKCiAgZW51bSB7IExPQURfUkVUQVJHRVRFRF9E
T0NVTUVOVF9VUkkgPSAxMzEwNzJVIH07CgoKCgoKCiAgZW51bSB7IExPQURfUkVQTEFDRSA9IDI2
MjE0NFUgfTsKCgoKCgogIGVudW0geyBMT0FEX0lOSVRJQUxfRE9DVU1FTlRfVVJJID0gNTI0Mjg4
VSB9OwoKfTsKIyA2MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zTmV0VXRpbC5oIiAy
CiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSUlucHV0U3RyZWFtQ2hhbm5lbC5o
IiAxCiMgMTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lJbnB1dFN0cmVhbUNoYW5u
ZWwuaCIKY2xhc3MgbnNJSW5wdXRTdHJlYW07CiMgMzMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9u
ZWNrby9uc0lJbnB1dFN0cmVhbUNoYW5uZWwuaCIKY2xhc3MgbnNJSW5wdXRTdHJlYW1DaGFubmVs
IDogcHVibGljIG5zSUNoYW5uZWwgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdl
dElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4NTYwYTY0Y2UsIDB4NmQ2NiwgMHg0
NGRiLCB7IDB4YjMsIDB4OGUsIDB4ODYsIDB4NDQsIDB4NjksIDB4YzUsIDB4MmQsIDB4MDMgfX07
IHJldHVybiBpaWQ7fQoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRVUkkobnNJVVJJICphVVJJ
KSA9IDA7CiMgNTUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lJbnB1dFN0cmVhbUNo
YW5uZWwuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbnRlbnRTdHJlYW0obnNJSW5wdXRTdHJl
YW0gKiAqYUNvbnRlbnRTdHJlYW0pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENvbnRlbnRT
dHJlYW0obnNJSW5wdXRTdHJlYW0gKiBhQ29udGVudFN0cmVhbSkgPSAwOwoKfTsKIyA2MyAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zTmV0VXRpbC5oIiAyCiMgMSAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL25lY2tvL25zSVRyYW5zcG9ydC5oIiAxCiMgMTcgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9uZWNrby9uc0lUcmFuc3BvcnQuaCIKY2xhc3MgbnNJSW5wdXRTdHJlYW07CgpjbGFzcyBu
c0lPdXRwdXRTdHJlYW07CgpjbGFzcyBuc0lUcmFuc3BvcnRFdmVudFNpbms7CgpjbGFzcyBuc0lF
dmVudFF1ZXVlOwojIDMzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJVHJhbnNwb3J0
LmgiCmNsYXNzIG5zSVRyYW5zcG9ydCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6Cgog
IHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7
MHhjYmIwYmFlYiwgMHg1ZmNiLCAweDQwOGIsIHsgMHhhMiwgMHhiZSwgMHg5ZiwgMHg4ZiwgMHhj
OSwgMHg4ZCwgMHgwYSwgMHhmMSB9fTsgcmV0dXJuIGlpZDt9CgoKCgogIGVudW0geyBPUEVOX0JM
T0NLSU5HID0gMVUgfTsKCiAgZW51bSB7IE9QRU5fVU5CVUZGRVJFRCA9IDJVIH07CiMgNTggIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lUcmFuc3BvcnQuaCIKICB2aXJ0dWFsIG5zcmVz
dWx0IE9wZW5JbnB1dFN0cmVhbShQUlVpbnQzMiBhRmxhZ3MsIFBSVWludDMyIGFTZWdtZW50U2l6
ZSwgUFJVaW50MzIgYVNlZ21lbnRDb3VudCwgbnNJSW5wdXRTdHJlYW0gKipfcmV0dmFsKSA9IDA7
CiMgNzMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lUcmFuc3BvcnQuaCIKICB2aXJ0
dWFsIG5zcmVzdWx0IE9wZW5PdXRwdXRTdHJlYW0oUFJVaW50MzIgYUZsYWdzLCBQUlVpbnQzMiBh
U2VnbWVudFNpemUsIFBSVWludDMyIGFTZWdtZW50Q291bnQsIG5zSU91dHB1dFN0cmVhbSAqKl9y
ZXR2YWwpID0gMDsKIyA4MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVRyYW5zcG9y
dC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgQ2xvc2UobnNyZXN1bHQgYVJlYXNvbikgPSAwOwojIDk1
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJVHJhbnNwb3J0LmgiCiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXRFdmVudFNpbmsobnNJVHJhbnNwb3J0RXZlbnRTaW5rICphU2luaywgbnNJRXZl
bnRRdWV1ZSAqYUV2ZW50USkgPSAwOwoKCgoKCgogIGVudW0geyBTVEFUVVNfUkVBRElORyA9IDIx
NTIzOTg4NTZVIH07CgogIGVudW0geyBTVEFUVVNfV1JJVElORyA9IDIxNTIzOTg4NTdVIH07Cgp9
OwojIDE5MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVRyYW5zcG9ydC5oIgpjbGFz
cyBuc0lUcmFuc3BvcnRFdmVudFNpbmsgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoK
ICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0g
ezB4NTYxZGU4YWYsIDB4MWI3NCwgMHg0Y2Q0LCB7IDB4ODQsIDB4NzksIDB4ODksIDB4NDQsIDB4
N2QsIDB4NDgsIDB4MTgsIDB4NWMgfX07IHJldHVybiBpaWQ7fQojIDIxMyAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL25lY2tvL25zSVRyYW5zcG9ydC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgT25UcmFu
c3BvcnRTdGF0dXMobnNJVHJhbnNwb3J0ICphVHJhbnNwb3J0LCBuc3Jlc3VsdCBhU3RhdHVzLCBQ
UlVpbnQzMiBhUHJvZ3Jlc3MsIFBSVWludDMyIGFQcm9ncmVzc01heCkgPSAwOwoKfTsKIyA2NCAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zTmV0VXRpbC5oIiAyCiMgMSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL25lY2tvL25zSUh0dHBDaGFubmVsLmgiIDEKIyAxNyAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL25lY2tvL25zSUh0dHBDaGFubmVsLmgiCmNsYXNzIG5zSUh0dHBIZWFkZXJWaXNp
dG9yOwojIDM2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJSHR0cENoYW5uZWwuaCIK
Y2xhc3MgbnNJSHR0cENoYW5uZWwgOiBwdWJsaWMgbnNJQ2hhbm5lbCB7CiBwdWJsaWM6CgogIHN0
YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHg5
Mjc3ZmUwOSwgMHhmMGNjLCAweDRjZDksIHsgMHhiYiwgMHhjZSwgMHg1OCwgMHgxZCwgMHhkOSwg
MHg0YiwgMHgwMiwgMHg2MCB9fTsgcmV0dXJuIGlpZDt9CiMgNTYgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9uZWNrby9uc0lIdHRwQ2hhbm5lbC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UmVxdWVz
dE1ldGhvZChuc0FDU3RyaW5nICYgYVJlcXVlc3RNZXRob2QpID0gMDsKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldFJlcXVlc3RNZXRob2QoY29uc3QgbnNBQ1N0cmluZyAmIGFSZXF1ZXN0TWV0aG9kKSA9
IDA7CiMgNzEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lIdHRwQ2hhbm5lbC5oIgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0UmVmZXJyZXIobnNJVVJJICogKmFSZWZlcnJlcikgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0UmVmZXJyZXIobnNJVVJJICogYVJlZmVycmVyKSA9IDA7CiMg
ODQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lIdHRwQ2hhbm5lbC5oIgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0UmVxdWVzdEhlYWRlcihjb25zdCBuc0FDU3RyaW5nICYgYUhlYWRlciwg
bnNBQ1N0cmluZyAmIF9yZXR2YWwpID0gMDsKIyAxMDkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9u
ZWNrby9uc0lIdHRwQ2hhbm5lbC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UmVxdWVzdEhlYWRl
cihjb25zdCBuc0FDU3RyaW5nICYgYUhlYWRlciwgY29uc3QgbnNBQ1N0cmluZyAmIGFWYWx1ZSwg
UFJCb29sIGFNZXJnZSkgPSAwOwojIDExOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25z
SUh0dHBDaGFubmVsLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBWaXNpdFJlcXVlc3RIZWFkZXJzKG5z
SUh0dHBIZWFkZXJWaXNpdG9yICphVmlzaXRvcikgPSAwOwojIDEzMiAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL25lY2tvL25zSUh0dHBDaGFubmVsLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBbGxv
d1BpcGVsaW5pbmcoUFJCb29sICphQWxsb3dQaXBlbGluaW5nKSA9IDA7CiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXRBbGxvd1BpcGVsaW5pbmcoUFJCb29sIGFBbGxvd1BpcGVsaW5pbmcpID0gMDsKIyAx
NDggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lIdHRwQ2hhbm5lbC5oIgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0UmVkaXJlY3Rpb25MaW1pdChQUlVpbnQzMiAqYVJlZGlyZWN0aW9uTGlt
aXQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFJlZGlyZWN0aW9uTGltaXQoUFJVaW50MzIg
YVJlZGlyZWN0aW9uTGltaXQpID0gMDsKIyAxNjAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNr
by9uc0lIdHRwQ2hhbm5lbC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UmVzcG9uc2VTdGF0dXMo
UFJVaW50MzIgKmFSZXNwb25zZVN0YXR1cykgPSAwOwojIDE3MCAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL25lY2tvL25zSUh0dHBDaGFubmVsLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRSZXNwb25z
ZVN0YXR1c1RleHQobnNBQ1N0cmluZyAmIGFSZXNwb25zZVN0YXR1c1RleHQpID0gMDsKIyAxODMg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lIdHRwQ2hhbm5lbC5oIgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0UmVxdWVzdFN1Y2NlZWRlZChQUkJvb2wgKmFSZXF1ZXN0U3VjY2VlZGVkKSA9
IDA7CiMgMTk1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJSHR0cENoYW5uZWwuaCIK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJlc3BvbnNlSGVhZGVyKGNvbnN0IG5zQUNTdHJpbmcgJiBo
ZWFkZXIsIG5zQUNTdHJpbmcgJiBfcmV0dmFsKSA9IDA7CiMgMjIwICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvbmVja28vbnNJSHR0cENoYW5uZWwuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFJlc3Bv
bnNlSGVhZGVyKGNvbnN0IG5zQUNTdHJpbmcgJiBoZWFkZXIsIGNvbnN0IG5zQUNTdHJpbmcgJiB2
YWx1ZSwgUFJCb29sIG1lcmdlKSA9IDA7CiMgMjMxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVj
a28vbnNJSHR0cENoYW5uZWwuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFZpc2l0UmVzcG9uc2VIZWFk
ZXJzKG5zSUh0dHBIZWFkZXJWaXNpdG9yICphVmlzaXRvcikgPSAwOwoKCgoKCgogIHZpcnR1YWwg
bnNyZXN1bHQgSXNOb1N0b3JlUmVzcG9uc2UoUFJCb29sICpfcmV0dmFsKSA9IDA7CiMgMjQ3ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJSHR0cENoYW5uZWwuaCIKICB2aXJ0dWFsIG5z
cmVzdWx0IElzTm9DYWNoZVJlc3BvbnNlKFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKfTsKIyA2NSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zTmV0VXRpbC5oIiAyCiMgMSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL25lY2tvL25zSURvd25sb2FkZXIuaCIgMQojIDE3ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvbmVja28vbnNJRG93bmxvYWRlci5oIgpjbGFzcyBuc0lVUkk7CgpjbGFzcyBuc0lM
b2FkR3JvdXA7CgpjbGFzcyBuc0lJbnRlcmZhY2VSZXF1ZXN0b3I7CgpjbGFzcyBuc0lGaWxlOwoK
Y2xhc3MgbnNJRG93bmxvYWRlcjsKIyAzNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25z
SURvd25sb2FkZXIuaCIKY2xhc3MgbnNJRG93bmxvYWRPYnNlcnZlciA6IHB1YmxpYyBuc0lTdXBw
b3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBj
b25zdCBuc0lJRCBpaWQgPSB7MHg2ZTBmYzk2MiwgMHg0YTZmLCAweDRmYTYsIHsgMHg4MywgMHgx
ZiwgMHg4YywgMHgyNiwgMHhjNSwgMHg1NCwgMHg0MCwgMHg3ZiB9fTsgcmV0dXJuIGlpZDt9CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IE9uRG93bmxvYWRDb21wbGV0ZShuc0lEb3dubG9hZGVyICpkb3du
bG9hZGVyLCBuc0lTdXBwb3J0cyAqY3R4dCwgbnNyZXN1bHQgc3RhdHVzLCBuc0lGaWxlICpyZXN1
bHQpID0gMDsKCn07CiMgMTAyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJRG93bmxv
YWRlci5oIgpjbGFzcyBuc0lEb3dubG9hZGVyIDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1Ymxp
YzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlp
ZCA9IHsweDk2MzJjYzBkLCAweDg2NGQsIDB4NGY5MiwgeyAweGI3LCAweGU1LCAweGJkLCAweDgw
LCAweDk3LCAweGM0LCAweGU5LCAweGE1IH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNy
ZXN1bHQgSW5pdChuc0lVUkkgKnVyaSwgbnNJRG93bmxvYWRPYnNlcnZlciAqY29tcGxldGlvbk9i
c2VydmVyLCBuc0lTdXBwb3J0cyAqY3R4dCwgUFJCb29sIHN5bmNocm9ub3VzLCBuc0lMb2FkR3Jv
dXAgKmxvYWRHcm91cCwgbnNJSW50ZXJmYWNlUmVxdWVzdG9yICpub3RpZmljYXRpb25DYWxsYmFj
a3MsIG5zTG9hZEZsYWdzIGxvYWRBdHRyaWJ1dGVzKSA9IDA7Cgp9OwojIDY2ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbmVja28vbnNOZXRVdGlsLmgiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvbmVja28vbnNJUmVzdW1hYmxlRW50aXR5SUQuaCIgMQojIDI4ICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvbmVja28vbnNJUmVzdW1hYmxlRW50aXR5SUQuaCIKY2xhc3MgbnNJUmVzdW1hYmxlRW50
aXR5SUQgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJ
SUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YzlkZjM4ZDQsIDB4MWRk
MSwgMHgxMWIyLCB7IDB4ODEsIDB4YWUsIDB4YzksIDB4ZTcsIDB4NjcsIDB4MjUsIDB4NmQsIDB4
MWIgfX07IHJldHVybiBpaWQ7fQoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2l6ZShQUlVpbnQz
MiAqYVNpemUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNpemUoUFJVaW50MzIgYVNpemUp
ID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGFzdE1vZGlmaWVkKFBSVGltZSAqYUxh
c3RNb2RpZmllZCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TGFzdE1vZGlmaWVkKFBSVGlt
ZSBhTGFzdE1vZGlmaWVkKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgRXF1YWxzKG5zSVJl
c3VtYWJsZUVudGl0eUlEICpvdGhlciwgUFJCb29sICpfcmV0dmFsKSA9IDA7Cgp9OwojIDY3ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNOZXRVdGlsLmgiIDIKIyAxICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbmVja28vbnNJU3RyZWFtTG9hZGVyLmgiIDEKIyAyNiAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL25lY2tvL25zSVN0cmVhbUxvYWRlci5oIgpjbGFzcyBuc0lSZXF1ZXN0OwoKY2xh
c3MgbnNJVVJJOwoKY2xhc3MgbnNJTG9hZEdyb3VwOwoKY2xhc3MgbnNJU3RyZWFtTG9hZGVyOwoK
Y2xhc3MgbnNJSW50ZXJmYWNlUmVxdWVzdG9yOwojIDQ0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
bmVja28vbnNJU3RyZWFtTG9hZGVyLmgiCmNsYXNzIG5zSVN0cmVhbUxvYWRlck9ic2VydmVyIDog
cHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJ
SUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDM1OWY3OTkwLCAweGQ0ZTksIDB4MTFk
MywgeyAweGExLCAweGE1LCAweDAwLCAweDUwLCAweDA0LCAweDFjLCAweGFmLCAweDQ0IH19OyBy
ZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgT25TdHJlYW1Db21wbGV0ZShuc0lTdHJl
YW1Mb2FkZXIgKmxvYWRlciwgbnNJU3VwcG9ydHMgKmN0eHQsIG5zcmVzdWx0IHN0YXR1cywgUFJV
aW50MzIgcmVzdWx0TGVuZ3RoLCBjb25zdCBjaGFyICpyZXN1bHQpID0gMDsKCn07CiMgMTExICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJU3RyZWFtTG9hZGVyLmgiCmNsYXNzIG5zSVN0
cmVhbUxvYWRlciA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25z
dCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgzMWQzNzM2MCwg
MHg4ZTVhLCAweDExZDMsIHsgMHg5MywgMHhhZCwgMHgwMCwgMHgxMCwgMHg0YiwgMHhhMCwgMHhm
ZCwgMHg0MCB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEluaXQobnNJQ2hh
bm5lbCAqYUNoYW5uZWwsIG5zSVN0cmVhbUxvYWRlck9ic2VydmVyICphT2JzZXJ2ZXIsIG5zSVN1
cHBvcnRzICphQ29udGV4dCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROdW1CeXRl
c1JlYWQoUFJVaW50MzIgKmFOdW1CeXRlc1JlYWQpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0UmVxdWVzdChuc0lSZXF1ZXN0ICogKmFSZXF1ZXN0KSA9IDA7Cgp9OwojIDY4ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNOZXRVdGlsLmgiIDIKIyAxICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvbmVja28vbnNJVW5pY2hhclN0cmVhbUxvYWRlci5oIiAxCiMgMTcgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lVbmljaGFyU3RyZWFtTG9hZGVyLmgiCmNsYXNzIG5zSVVu
aWNoYXJJbnB1dFN0cmVhbTsKCmNsYXNzIG5zSVVuaWNoYXJTdHJlYW1Mb2FkZXI7CgpjbGFzcyBu
c0lDaGFubmVsOwojIDMxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJVW5pY2hhclN0
cmVhbUxvYWRlci5oIgpjbGFzcyBuc0lVbmljaGFyU3RyZWFtTG9hZGVyT2JzZXJ2ZXIgOiBwdWJs
aWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgp
IHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4ZTA2ZThiMDgsIDB4OGNkZCwgMHg0NTAzLCB7
IDB4YTAsIDB4YTAsIDB4NmYsIDB4M2IsIDB4OTQsIDB4MzYsIDB4MDIsIDB4YWYgfX07IHJldHVy
biBpaWQ7fQojIDQ3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJVW5pY2hhclN0cmVh
bUxvYWRlci5oIgogIHZpcnR1YWwgbnNyZXN1bHQgT25EZXRlcm1pbmVDaGFyc2V0KG5zSVVuaWNo
YXJTdHJlYW1Mb2FkZXIgKmFMb2FkZXIsIG5zSVN1cHBvcnRzICphQ29udGV4dCwgY29uc3QgY2hh
ciAqYUZpcnN0U2VnbWVudCwgUFJVaW50MzIgYUxlbmd0aCwgbnNBQ1N0cmluZyAmIF9yZXR2YWwp
ID0gMDsKIyA1OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVVuaWNoYXJTdHJlYW1M
b2FkZXIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IE9uU3RyZWFtQ29tcGxldGUobnNJVW5pY2hhclN0
cmVhbUxvYWRlciAqYUxvYWRlciwgbnNJU3VwcG9ydHMgKmFDb250ZXh0LCBuc3Jlc3VsdCBhU3Rh
dHVzLCBuc0lVbmljaGFySW5wdXRTdHJlYW0gKmFVbmljaGFyRGF0YSkgPSAwOwoKfTsKIyAxMjkg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lVbmljaGFyU3RyZWFtTG9hZGVyLmgiCmNs
YXNzIG5zSVVuaWNoYXJTdHJlYW1Mb2FkZXIgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGlj
OgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlk
ID0gezB4OGEzZWNhMTYsIDB4MTY3ZSwgMHg0NDNkLCB7IDB4OTQsIDB4ODUsIDB4N2UsIDB4ODQs
IDB4ZWQsIDB4ODIsIDB4MmUsIDB4OTUgfX07IHJldHVybiBpaWQ7fQoKICBlbnVtIHsgREVGQVVM
VF9TRUdNRU5UX1NJWkUgPSA0MDk2VSB9OwojIDE0NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25l
Y2tvL25zSVVuaWNoYXJTdHJlYW1Mb2FkZXIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEluaXQobnNJ
Q2hhbm5lbCAqYUNoYW5uZWwsIG5zSVVuaWNoYXJTdHJlYW1Mb2FkZXJPYnNlcnZlciAqYU9ic2Vy
dmVyLCBuc0lTdXBwb3J0cyAqYUNvbnRleHQsIFBSVWludDMyIGFTZWdtZW50U2l6ZSkgPSAwOwoK
CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q2hhbm5lbChuc0lDaGFubmVsICogKmFDaGFubmVs
KSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDaGFyc2V0KG5zQUNTdHJpbmcgJiBh
Q2hhcnNldCkgPSAwOwoKfTsKIyA2OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zTmV0
VXRpbC5oIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVBpcGUuaCIgMQoj
IDEwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJUGlwZS5oIgojIDEgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lBc3luY0lucHV0U3RyZWFtLmgiIDEKIyAxNyAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUFzeW5jSW5wdXRTdHJlYW0uaCIKY2xhc3MgbnNJSW5w
dXRTdHJlYW1Ob3RpZnk7CgpjbGFzcyBuc0lFdmVudFF1ZXVlOwojIDI5ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUveHBjb20vbnNJQXN5bmNJbnB1dFN0cmVhbS5oIgpjbGFzcyBuc0lBc3luY0lucHV0
U3RyZWFtIDogcHVibGljIG5zSUlucHV0U3RyZWFtIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0
IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGNjOTExZTA5LCAw
eDJhMDIsIDB4NGQyZCwgeyAweGJhLCAweDRiLCAweGIyLCAweGFmLCAweGIxLCAweDczLCAweGU5
LCAweDZkIH19OyByZXR1cm4gaWlkO30KIyA0NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29t
L25zSUFzeW5jSW5wdXRTdHJlYW0uaCIKICB2aXJ0dWFsIG5zcmVzdWx0IENsb3NlRXgobnNyZXN1
bHQgcmVhc29uKSA9IDA7CiMgNjEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lBc3lu
Y0lucHV0U3RyZWFtLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBBc3luY1dhaXQobnNJSW5wdXRTdHJl
YW1Ob3RpZnkgKmFOb3RpZnksIFBSVWludDMyIGFSZXF1ZXN0ZWRDb3VudCwgbnNJRXZlbnRRdWV1
ZSAqYUV2ZW50USkgPSAwOwoKfTsKIyAxMzEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9u
c0lBc3luY0lucHV0U3RyZWFtLmgiCmNsYXNzIG5zSUlucHV0U3RyZWFtTm90aWZ5IDogcHVibGlj
IG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7
c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDIwYzY2NWEzLCAweDBlYmYsIDB4NGViYiwgeyAw
eDk3LCAweGJhLCAweDc5LCAweDQyLCAweDQ4LCAweGJmLCAweGE4LCAweGZlIH19OyByZXR1cm4g
aWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgT25JbnB1dFN0cmVhbVJlYWR5KG5zSUFzeW5jSW5w
dXRTdHJlYW0gKmFTdHJlYW0pID0gMDsKCn07CiMgMTEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94
cGNvbS9uc0lQaXBlLmgiIDIKCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJ
QXN5bmNPdXRwdXRTdHJlYW0uaCIgMQojIDE3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20v
bnNJQXN5bmNPdXRwdXRTdHJlYW0uaCIKY2xhc3MgbnNJT3V0cHV0U3RyZWFtTm90aWZ5OwoKY2xh
c3MgbnNJRXZlbnRRdWV1ZTsKIyAyOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUFz
eW5jT3V0cHV0U3RyZWFtLmgiCmNsYXNzIG5zSUFzeW5jT3V0cHV0U3RyZWFtIDogcHVibGljIG5z
SU91dHB1dFN0cmVhbSB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkg
e3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgwNGJhMWI1MywgMHhmYWQwLCAweDQwMzMsIHsg
MHg5MSwgMHhjOSwgMHgzZSwgMHgyNCwgMHhkYiwgMHgyMiwgMHgwNywgMHg5YyB9fTsgcmV0dXJu
IGlpZDt9CiMgNDUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lBc3luY091dHB1dFN0
cmVhbS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgQ2xvc2VFeChuc3Jlc3VsdCByZWFzb24pID0gMDsK
IyA2MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUFzeW5jT3V0cHV0U3RyZWFtLmgi
CiAgdmlydHVhbCBuc3Jlc3VsdCBBc3luY1dhaXQobnNJT3V0cHV0U3RyZWFtTm90aWZ5ICphTm90
aWZ5LCBQUlVpbnQzMiBhUmVxdWVzdGVkQ291bnQsIG5zSUV2ZW50UXVldWUgKmFFdmVudFEpID0g
MDsKCn07CiMgMTMxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJQXN5bmNPdXRwdXRT
dHJlYW0uaCIKY2xhc3MgbnNJT3V0cHV0U3RyZWFtTm90aWZ5IDogcHVibGljIG5zSVN1cHBvcnRz
IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0
IG5zSUlEIGlpZCA9IHsweDYxNGRlZjExLCAweDFkNzcsIDB4NDA5YiwgeyAweDgxLCAweDUzLCAw
eGVhLCAweDNhLCAweGU1LCAweGJhLCAweGJjLCAweDNjIH19OyByZXR1cm4gaWlkO30KCgogIHZp
cnR1YWwgbnNyZXN1bHQgT25PdXRwdXRTdHJlYW1SZWFkeShuc0lBc3luY091dHB1dFN0cmVhbSAq
YVN0cmVhbSkgPSAwOwoKfTsKIyAxNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVBp
cGUuaCIgMgoKCgoKCgpjbGFzcyBuc0lNZW1vcnk7CiMgMzEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS94cGNvbS9uc0lQaXBlLmgiCmNsYXNzIG5zSVBpcGUgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewog
cHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJ
SUQgaWlkID0gezB4ZjQyMTFhYmMsIDB4NjFiMywgMHgxMWQ0LCB7IDB4OTgsIDB4NzcsIDB4MDAs
IDB4YzAsIDB4NGYsIDB4YTAsIDB4Y2YsIDB4NGEgfX07IHJldHVybiBpaWQ7fQoKCgoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBJbml0KFBSQm9vbCBub25CbG9ja2luZ0lucHV0LCBQUkJvb2wgbm9uQmxv
Y2tpbmdPdXRwdXQsIFBSVWludDMyIHNlZ21lbnRTaXplLCBQUlVpbnQzMiBzZWdtZW50Q291bnQs
IG5zSU1lbW9yeSAqc2VnbWVudEFsbG9jYXRvcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRJbnB1dFN0cmVhbShuc0lBc3luY0lucHV0U3RyZWFtICogKmFJbnB1dFN0cmVhbSkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRPdXRwdXRTdHJlYW0obnNJQXN5bmNPdXRwdXRTdHJlYW0g
KiAqYU91dHB1dFN0cmVhbSkgPSAwOwoKfTsKIyAxMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94
cGNvbS9uc0lQaXBlLmgiCmNsYXNzIG5zSVNlYXJjaGFibGVJbnB1dFN0cmVhbSA6IHB1YmxpYyBu
c0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0
YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHg4YzM5ZWY2MiwgMHhmN2M5LCAweDExZDQsIHsgMHg5
OCwgMHhmNSwgMHgwMCwgMHgxMCwgMHg4MywgMHgwMSwgMHgwZSwgMHg5YiB9fTsgcmV0dXJuIGlp
ZDt9CiMgMTQxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJUGlwZS5oIgogIHZpcnR1
YWwgbnNyZXN1bHQgU2VhcmNoKGNvbnN0IGNoYXIgKmZvclN0cmluZywgUFJCb29sIGlnbm9yZUNh
c2UsIFBSQm9vbCAqZm91bmQsIFBSVWludDMyICpvZmZzZXRTZWFyY2hlZFRvKSA9IDA7Cgp9Owoj
IDE5NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVBpcGUuaCIKZXh0ZXJuIG5zcmVz
dWx0Ck5TX05ld1BpcGUyKG5zSUFzeW5jSW5wdXRTdHJlYW0gKipwaXBlSW4sCiAgICAgICAgICAg
IG5zSUFzeW5jT3V0cHV0U3RyZWFtICoqcGlwZU91dCwKICAgICAgICAgICAgUFJCb29sIG5vbkJs
b2NraW5nSW5wdXQgPSAwLAogICAgICAgICAgICBQUkJvb2wgbm9uQmxvY2tpbmdPdXRwdXQgPSAw
LAogICAgICAgICAgICBQUlVpbnQzMiBzZWdtZW50U2l6ZSA9IDAsCiAgICAgICAgICAgIFBSVWlu
dDMyIHNlZ21lbnRDb3VudCA9IDAsCiAgICAgICAgICAgIG5zSU1lbW9yeSAqc2VnbWVudEFsbG9j
ID0gMCk7CmlubGluZSBuc3Jlc3VsdApOU19OZXdQaXBlKG5zSUlucHV0U3RyZWFtICoqcGlwZUlu
LAogICAgICAgICAgIG5zSU91dHB1dFN0cmVhbSAqKnBpcGVPdXQsCiAgICAgICAgICAgUFJVaW50
MzIgc2VnbWVudFNpemUgPSAwLAogICAgICAgICAgIFBSVWludDMyIG1heFNpemUgPSAwLAogICAg
ICAgICAgIFBSQm9vbCBub25CbG9ja2luZ0lucHV0ID0gMCwKICAgICAgICAgICBQUkJvb2wgbm9u
QmxvY2tpbmdPdXRwdXQgPSAwLAogICAgICAgICAgIG5zSU1lbW9yeSAqc2VnbWVudEFsbG9jID0g
MCkKewogICAgUFJVaW50MzIgc2VnbWVudENvdW50OwogICAgaWYgKHNlZ21lbnRTaXplID09IDAp
CiAgICAgICAgc2VnbWVudENvdW50ID0gMDsKICAgIGVsc2UKICAgICAgICBzZWdtZW50Q291bnQg
PSBtYXhTaXplIC8gc2VnbWVudFNpemU7CiAgICBuc0lBc3luY0lucHV0U3RyZWFtICppbjsKICAg
IG5zSUFzeW5jT3V0cHV0U3RyZWFtICpvdXQ7CiAgICBuc3Jlc3VsdCBydiA9IE5TX05ld1BpcGUy
KCZpbiwgJm91dCwgbm9uQmxvY2tpbmdJbnB1dCwgbm9uQmxvY2tpbmdPdXRwdXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlZ21lbnRTaXplLCBzZWdtZW50Q291bnQsIHNlZ21lbnRB
bGxvYyk7CiAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2OwogICAgKnBpcGVJ
biA9IGluOwogICAgKnBpcGVPdXQgPSBvdXQ7CiAgICByZXR1cm4gMDsKfQojIDcwICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvbmVja28vbnNOZXRVdGlsLmgiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvbmVja28vbnNJUHJvdG9jb2xIYW5kbGVyLmgiIDEKIyAxNyAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL25lY2tvL25zSVByb3RvY29sSGFuZGxlci5oIgpjbGFzcyBuc0lVUkk7CgpjbGFzcyBu
c0lDaGFubmVsOwojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJUHJvdG9jb2xI
YW5kbGVyLmgiCmNsYXNzIG5zSVByb3RvY29sSGFuZGxlciA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7
CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBu
c0lJRCBpaWQgPSB7MHgxNWZkNjk0MCwgMHg4ZWE3LCAweDExZDMsIHsgMHg5MywgMHhhZCwgMHgw
MCwgMHgxMCwgMHg0YiwgMHhhMCwgMHhmZCwgMHg0MCB9fTsgcmV0dXJuIGlpZDt9CgoKCgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldFNjaGVtZShuc0FDU3RyaW5nICYgYVNjaGVtZSkgPSAwOwoKCgoK
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERlZmF1bHRQb3J0KFBSSW50MzIgKmFEZWZhdWx0UG9y
dCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQcm90b2NvbEZsYWdzKFBSVWludDMy
ICphUHJvdG9jb2xGbGFncykgPSAwOwojIDg1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28v
bnNJUHJvdG9jb2xIYW5kbGVyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBOZXdVUkkoY29uc3QgbnNB
Q1N0cmluZyAmIGFTcGVjLCBjb25zdCBjaGFyICphT3JpZ2luQ2hhcnNldCwgbnNJVVJJICphQmFz
ZVVSSSwgbnNJVVJJICoqX3JldHZhbCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBOZXdD
aGFubmVsKG5zSVVSSSAqYVVSSSwgbnNJQ2hhbm5lbCAqKl9yZXR2YWwpID0gMDsKIyAxMDMgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lQcm90b2NvbEhhbmRsZXIuaCIKICB2aXJ0dWFs
IG5zcmVzdWx0IEFsbG93UG9ydChQUkludDMyIHBvcnQsIGNvbnN0IGNoYXIgKnNjaGVtZSwgUFJC
b29sICpfcmV0dmFsKSA9IDA7CiMgMTE1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJ
UHJvdG9jb2xIYW5kbGVyLmgiCiAgZW51bSB7IFVSSV9TVEQgPSAwVSB9OwoKCgoKICBlbnVtIHsg
VVJJX05PUkVMQVRJVkUgPSAxVSB9OwoKCgoKICBlbnVtIHsgVVJJX05PQVVUSCA9IDJVIH07CiMg
MTM4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJUHJvdG9jb2xIYW5kbGVyLmgiCiAg
ZW51bSB7IEFMTE9XU19QUk9YWSA9IDRVIH07CgoKCgoKCgogIGVudW0geyBBTExPV1NfUFJPWFlf
SFRUUCA9IDhVIH07Cgp9OwojIDcxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNOZXRV
dGlsLmgiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJRmlsZVByb3RvY29s
SGFuZGxlci5oIiAxCiMgMTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lGaWxlUHJv
dG9jb2xIYW5kbGVyLmgiCmNsYXNzIG5zSUZpbGU7CiMgMjcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9uZWNrby9uc0lGaWxlUHJvdG9jb2xIYW5kbGVyLmgiCmNsYXNzIG5zSUZpbGVQcm90b2NvbEhh
bmRsZXIgOiBwdWJsaWMgbnNJUHJvdG9jb2xIYW5kbGVyIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNv
bnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDk4N2ZiMDgz
LCAweGQ3ZmYsIDB4NDZkYywgeyAweDllLCAweGUzLCAweGFiLCAweDZlLCAweDUyLCAweDUwLCAw
eDFkLCAweDUzIH19OyByZXR1cm4gaWlkO30KIyAzOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25l
Y2tvL25zSUZpbGVQcm90b2NvbEhhbmRsZXIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IE5ld0ZpbGVV
UkkobnNJRmlsZSAqYUZpbGUsIG5zSVVSSSAqKl9yZXR2YWwpID0gMDsKIyA1MCAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL25lY2tvL25zSUZpbGVQcm90b2NvbEhhbmRsZXIuaCIKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldFVSTFNwZWNGcm9tRmlsZShuc0lGaWxlICpmaWxlLCBuc0FDU3RyaW5nICYgX3Jl
dHZhbCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RmlsZUZyb21VUkxTcGVjKGNv
bnN0IG5zQUNTdHJpbmcgJiB1cmwsIG5zSUZpbGUgKipfcmV0dmFsKSA9IDA7Cgp9OwojIDcyICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNOZXRVdGlsLmgiIDIKCiMgMSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL3hwY29tL25zSUxvY2FsRmlsZS5oIiAxCiMgMTAgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS94cGNvbS9uc0lMb2NhbEZpbGUuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
eHBjb20vbnNJRmlsZS5oIiAxCiMgMTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lG
aWxlLmgiCmNsYXNzIG5zSVNpbXBsZUVudW1lcmF0b3I7CiMgNDIgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS94cGNvbS9uc0lGaWxlLmgiCmNsYXNzIG5zSUZpbGUgOiBwdWJsaWMgbnNJU3VwcG9ydHMg
ewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3Qg
bnNJSUQgaWlkID0gezB4YzhjMGEwODAsIDB4MDg2OCwgMHgxMWQzLCB7IDB4OTEsIDB4NWYsIDB4
ZDksIDB4ZDgsIDB4ODksIDB4ZDQsIDB4OGUsIDB4M2MgfX07IHJldHVybiBpaWQ7fQoKCgoKCgoK
ICBlbnVtIHsgTk9STUFMX0ZJTEVfVFlQRSA9IDBVIH07CgogIGVudW0geyBESVJFQ1RPUllfVFlQ
RSA9IDFVIH07CiMgNjkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lGaWxlLmgiCiAg
dmlydHVhbCBuc3Jlc3VsdCBBcHBlbmQoY29uc3QgbnNBU3RyaW5nICYgbm9kZSkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBBcHBlbmROYXRpdmUoY29uc3QgbnNBQ1N0cmluZyAmIG5vZGUpID0g
MDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgTm9ybWFsaXplKHZvaWQpID0gMDsKIyAxMDEgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lGaWxlLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBD
cmVhdGUoUFJVaW50MzIgdHlwZSwgUFJVaW50MzIgcGVybWlzc2lvbnMpID0gMDsKCgoKCgoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRMZWFmTmFtZShuc0FTdHJpbmcgJiBhTGVhZk5hbWUpID0gMDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldExlYWZOYW1lKGNvbnN0IG5zQVN0cmluZyAmIGFMZWFmTmFt
ZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROYXRpdmVMZWFmTmFtZShuc0FDU3RyaW5n
ICYgYU5hdGl2ZUxlYWZOYW1lKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXROYXRpdmVMZWFm
TmFtZShjb25zdCBuc0FDU3RyaW5nICYgYU5hdGl2ZUxlYWZOYW1lKSA9IDA7CiMgMTQ0ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJRmlsZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgQ29w
eVRvKG5zSUZpbGUgKm5ld1BhcmVudERpciwgY29uc3QgbnNBU3RyaW5nICYgbmV3TmFtZSkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDb3B5VG9OYXRpdmUobnNJRmlsZSAqbmV3UGFyZW50RGly
LCBjb25zdCBuc0FDU3RyaW5nICYgbmV3TmFtZSkgPSAwOwojIDE1OSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL3hwY29tL25zSUZpbGUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IENvcHlUb0ZvbGxvd2lu
Z0xpbmtzKG5zSUZpbGUgKm5ld1BhcmVudERpciwgY29uc3QgbnNBU3RyaW5nICYgbmV3TmFtZSkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDb3B5VG9Gb2xsb3dpbmdMaW5rc05hdGl2ZShuc0lG
aWxlICpuZXdQYXJlbnREaXIsIGNvbnN0IG5zQUNTdHJpbmcgJiBuZXdOYW1lKSA9IDA7CiMgMTk2
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJRmlsZS5oIgogIHZpcnR1YWwgbnNyZXN1
bHQgTW92ZVRvKG5zSUZpbGUgKm5ld1BhcmVudERpciwgY29uc3QgbnNBU3RyaW5nICYgbmV3TmFt
ZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBNb3ZlVG9OYXRpdmUobnNJRmlsZSAqbmV3UGFy
ZW50RGlyLCBjb25zdCBuc0FDU3RyaW5nICYgbmV3TmFtZSkgPSAwOwojIDIwOCAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL3hwY29tL25zSUZpbGUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFJlbW92ZShQ
UkJvb2wgcmVjdXJzaXZlKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBlcm1pc3Np
b25zKFBSVWludDMyICphUGVybWlzc2lvbnMpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFBl
cm1pc3Npb25zKFBSVWludDMyIGFQZXJtaXNzaW9ucykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRQZXJtaXNzaW9uc09mTGluayhQUlVpbnQzMiAqYVBlcm1pc3Npb25zT2ZMaW5rKSA9IDA7
CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRQZXJtaXNzaW9uc09mTGluayhQUlVpbnQzMiBhUGVybWlz
c2lvbnNPZkxpbmspID0gMDsKCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMYXN0TW9kaWZp
ZWRUaW1lKFBSSW50NjQgKmFMYXN0TW9kaWZpZWRUaW1lKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRMYXN0TW9kaWZpZWRUaW1lKFBSSW50NjQgYUxhc3RNb2RpZmllZFRpbWUpID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0TGFzdE1vZGlmaWVkVGltZU9mTGluayhQUkludDY0ICphTGFz
dE1vZGlmaWVkVGltZU9mTGluaykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TGFzdE1vZGlm
aWVkVGltZU9mTGluayhQUkludDY0IGFMYXN0TW9kaWZpZWRUaW1lT2ZMaW5rKSA9IDA7CiMgMjQx
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJRmlsZS5oIgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0RmlsZVNpemUoUFJJbnQ2NCAqYUZpbGVTaXplKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRGaWxlU2l6ZShQUkludDY0IGFGaWxlU2l6ZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRGaWxlU2l6ZU9mTGluayhQUkludDY0ICphRmlsZVNpemVPZkxpbmspID0gMDsKIyAyNzMg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lGaWxlLmgiCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRUYXJnZXQobnNBU3RyaW5nICYgYVRhcmdldCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXROYXRpdmVUYXJnZXQobnNBQ1N0cmluZyAmIGFOYXRpdmVUYXJnZXQpID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0UGF0aChuc0FTdHJpbmcgJiBhUGF0aCkgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXROYXRpdmVQYXRoKG5zQUNTdHJpbmcgJiBhTmF0aXZlUGF0aCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBFeGlzdHMoUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IElzV3JpdGFibGUoUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IElzUmVhZGFibGUoUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IElzRXhlY3V0YWJsZShQUkJvb2wgKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgSXNIaWRkZW4oUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IElzRGlyZWN0b3J5KFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJ
c0ZpbGUoUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IElzU3ltbGlu
ayhQUkJvb2wgKl9yZXR2YWwpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgSXNTcGVjaWFs
KFBSQm9vbCAqX3JldHZhbCkgPSAwOwojIDM0MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29t
L25zSUZpbGUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IENyZWF0ZVVuaXF1ZShQUlVpbnQzMiB0eXBl
LCBQUlVpbnQzMiBwZXJtaXNzaW9ucykgPSAwOwojIDM1NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3hwY29tL25zSUZpbGUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IENsb25lKG5zSUZpbGUgKipfcmV0
dmFsKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEVxdWFscyhuc0lGaWxlICppbkZpbGUs
IFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ29udGFpbnMo
bnNJRmlsZSAqaW5GaWxlLCBQUkJvb2wgcmVjdXIsIFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCgoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQYXJlbnQobnNJRmlsZSAqICphUGFyZW50KSA9IDA7CiMg
MzgzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJRmlsZS5oIgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0RGlyZWN0b3J5RW50cmllcyhuc0lTaW1wbGVFbnVtZXJhdG9yICogKmFEaXJlY3Rv
cnlFbnRyaWVzKSA9IDA7Cgp9OwojIDgxOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25z
SUZpbGUuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNEaXJlY3RvcnlTZXJ2
aWNlVXRpbHMuaCIgMQojIDI4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNEaXJlY3Rv
cnlTZXJ2aWNlVXRpbHMuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJUHJv
cGVydGllcy5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lQcm9wZXJ0
aWVzLmgiCmNsYXNzIG5zSVByb3BlcnRpZXMgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGlj
OgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlk
ID0gezB4Nzg2NTA1ODIsIDB4NGU5MywgMHg0YjYwLCB7IDB4OGUsIDB4ODUsIDB4MjYsIDB4ZWIs
IDB4ZDMsIDB4ZWIsIDB4MTQsIDB4Y2EgfX07IHJldHVybiBpaWQ7fQojIDM4ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUveHBjb20vbnNJUHJvcGVydGllcy5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
KGNvbnN0IGNoYXIgKnByb3AsIGNvbnN0IG5zSUlEICYgaWlkLCB2b2lkICogKnJlc3VsdCkgPSAw
OwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXQoY29uc3QgY2hhciAqcHJvcCwgbnNJU3VwcG9y
dHMgKnZhbHVlKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEhhcyhjb25zdCBjaGFyICpw
cm9wLCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBVbmRl
ZmluZShjb25zdCBjaGFyICpwcm9wKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEtl
eXMoUFJVaW50MzIgKmNvdW50LCBjaGFyICoqKmtleXMpID0gMDsKCn07CiMgMjkgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS94cGNvbS9uc0RpcmVjdG9yeVNlcnZpY2VVdGlscy5oIiAyCgoKCgppbmxp
bmUgbnNyZXN1bHQKTlNfR2V0U3BlY2lhbERpcmVjdG9yeShjb25zdCBjaGFyKiBzcGVjaWFsRGly
TmFtZSwgbnNJRmlsZSogKnJlc3VsdCkKewogICAgbnNyZXN1bHQgcnY7CiAgICBzdGF0aWMgY29u
c3QgbnNDSUQga0RpcmVjdG9yeVNlcnZpY2VDSUQgPSB7MHhmMDAxNTJkMCwweGI0MGIsMHgxMWQz
LHsweDhjLCAweDljLCAweDAwLCAweDAwLCAweDY0LCAweDY1LCAweDczLCAweDc0fX07CiAgICBu
c0NPTVB0cjxuc0lQcm9wZXJ0aWVzPiBzZXJ2KGRvX0dldFNlcnZpY2Uoa0RpcmVjdG9yeVNlcnZp
Y2VDSUQsICZydikpOwogICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKCiAg
ICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4gZGlyOwogICAgcnYgPSBzZXJ2LT5HZXQoc3BlY2lhbERp
ck5hbWUsIG5zQ09NVHlwZUluZm88bnNJRmlsZT46OkdldElJRCgpLCBnZXR0ZXJfQWRkUmVmcyhk
aXIpKTsKICAgIGlmICgoKHJ2KSAmIDB4ODAwMDAwMDApKSByZXR1cm4gcnY7CgogICAgKnJlc3Vs
dCA9IHN0YXRpY19jYXN0PCBuc0lGaWxlKiA+KHN0YXRpY19jYXN0PCBuc0lTdXBwb3J0cyogPihk
aXIpKTsKICAgIGlmICgqcmVzdWx0KQogICAgICAgICgqcmVzdWx0KS0+QWRkUmVmKCk7CiAgICBy
ZXR1cm4gMDsKfQojIDgyMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUZpbGUuaCIg
MgojIDExICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJTG9jYWxGaWxlLmgiIDIKCgoK
CgoKCiMgMSAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlz
dC9pbmNsdWRlL25zcHIvcHJsaW5rLmgiIDEKIyA0MyAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxh
LTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJsaW5rLmgiCmV4dGVybiAi
QyIgewoKdHlwZWRlZiBzdHJ1Y3QgUFJMaWJyYXJ5IFBSTGlicmFyeTsKCnR5cGVkZWYgc3RydWN0
IFBSU3RhdGljTGlua1RhYmxlIHsKICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICB2b2lkICgqZnAp
KCk7Cn0gUFJTdGF0aWNMaW5rVGFibGU7CiMgNTkgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0x
LjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3BybGluay5oIgpleHRlcm4gUFJT
dGF0dXMgUFJfU2V0TGlicmFyeVBhdGgoY29uc3QgY2hhciAqcGF0aCk7CiMgNjkgIi92YXIvdG1w
L3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3By
bGluay5oIgpleHRlcm4gY2hhciogUFJfR2V0TGlicmFyeVBhdGgodm9pZCk7CiMgODIgIi92YXIv
dG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3By
L3BybGluay5oIgpleHRlcm4gY2hhciogUFJfR2V0TGlicmFyeU5hbWUoY29uc3QgY2hhciAqZGly
LCBjb25zdCBjaGFyICpsaWIpOwoKCgoKCmV4dGVybiB2b2lkIFBSX0ZyZWVMaWJyYXJ5TmFtZShj
aGFyICptZW0pOwojIDEwMiAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21v
emlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJsaW5rLmgiCmV4dGVybiBQUkxpYnJhcnkqIFBSX0xv
YWRMaWJyYXJ5KGNvbnN0IGNoYXIgKm5hbWUpOwojIDEyMyAiL3Zhci90bXAvcG9ydGFnZS9tb3pp
bGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJsaW5rLmgiCnR5cGVk
ZWYgZW51bSBQUkxpYlNwZWNUeXBlIHsKICAgIFBSX0xpYlNwZWNfUGF0aG5hbWUsCiAgICBQUl9M
aWJTcGVjX01hY05hbWVkRnJhZ21lbnQsCiAgICBQUl9MaWJTcGVjX01hY0luZGV4ZWRGcmFnbWVu
dAp9IFBSTGliU3BlY1R5cGU7CgpzdHJ1Y3QgRlNTcGVjOwoKdHlwZWRlZiBzdHJ1Y3QgUFJMaWJT
cGVjIHsKICAgIFBSTGliU3BlY1R5cGUgdHlwZTsKICAgIHVuaW9uIHsKCiAgICAgICAgY29uc3Qg
Y2hhciAqcGF0aG5hbWU7CgoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICBjb25zdCBzdHJ1
Y3QgRlNTcGVjICpmc3NwZWM7CiAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAg
fSBtYWNfbmFtZWRfZnJhZ21lbnQ7CgoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICBjb25z
dCBzdHJ1Y3QgRlNTcGVjICpmc3NwZWM7CiAgICAgICAgICAgIFBSVWludDMyIGluZGV4OwogICAg
ICAgIH0gbWFjX2luZGV4ZWRfZnJhZ21lbnQ7CiAgICB9IHZhbHVlOwp9IFBSTGliU3BlYzsKIyAx
NjYgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5j
bHVkZS9uc3ByL3BybGluay5oIgpleHRlcm4gUFJMaWJyYXJ5ICoKUFJfTG9hZExpYnJhcnlXaXRo
RmxhZ3MoCiAgICBQUkxpYlNwZWMgbGliU3BlYywKICAgIFBSSW50biBmbGFncwopOwojIDE4MSAi
L3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRl
L25zcHIvcHJsaW5rLmgiCmV4dGVybiBQUlN0YXR1cyBQUl9VbmxvYWRMaWJyYXJ5KFBSTGlicmFy
eSAqbGliKTsKIyAxOTEgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3pp
bGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3BybGluay5oIgpleHRlcm4gdm9pZCogUFJfRmluZFN5bWJv
bChQUkxpYnJhcnkgKmxpYiwgY29uc3QgY2hhciAqbmFtZSk7CiMgMjAxICIvdmFyL3RtcC9wb3J0
YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmxpbmsu
aCIKdHlwZWRlZiB2b2lkICgqUFJGdW5jUHRyKSgpOwpleHRlcm4gUFJGdW5jUHRyIFBSX0ZpbmRG
dW5jdGlvblN5bWJvbChQUkxpYnJhcnkgKmxpYiwgY29uc3QgY2hhciAqbmFtZSk7CiMgMjE0ICIv
dmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUv
bnNwci9wcmxpbmsuaCIKZXh0ZXJuIHZvaWQqIFBSX0ZpbmRTeW1ib2xBbmRMaWJyYXJ5KGNvbnN0
IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBSTGlicmFyeSogKmxpYik7CiMgMjI1ICIvdmFyL3RtcC9wb3J0YWdlL21vemls
bGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmxpbmsuaCIKZXh0ZXJu
IFBSRnVuY1B0ciBQUl9GaW5kRnVuY3Rpb25TeW1ib2xBbmRMaWJyYXJ5KGNvbnN0IGNoYXIgKm5h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBSTGlicmFyeSogKmxpYik7CiMgMjM5ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIx
L3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmxpbmsuaCIKZXh0ZXJuIFBSTGlicmFy
eSogUFJfTG9hZFN0YXRpY0xpYnJhcnkoCiAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBQUlN0
YXRpY0xpbmtUYWJsZSAqdGFibGUpOwoKCgoKCgoKZXh0ZXJuIGNoYXIgKiBQUl9HZXRMaWJyYXJ5
RmlsZVBhdGhuYW1lKGNvbnN0IGNoYXIgKm5hbWUsIFBSRnVuY1B0ciBhZGRyKTsKCn0KIyAxOSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUxvY2FsRmlsZS5oIiAyCiMgMzcgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lMb2NhbEZpbGUuaCIKY2xhc3MgbnNJTG9jYWxGaWxl
IDogcHVibGljIG5zSUZpbGUgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJ
RCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YWE2MTBmMjAsIDB4YTg4OSwgMHgxMWQz
LCB7IDB4OGMsIDB4ODEsIDB4MDAsIDB4MDAsIDB4NjQsIDB4NjUsIDB4NzMsIDB4NzQgfX07IHJl
dHVybiBpaWQ7fQojIDYwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJTG9jYWxGaWxl
LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBJbml0V2l0aFBhdGgoY29uc3QgbnNBU3RyaW5nICYgZmls
ZVBhdGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSW5pdFdpdGhOYXRpdmVQYXRoKGNvbnN0
IG5zQUNTdHJpbmcgJiBmaWxlUGF0aCkgPSAwOwojIDc0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
eHBjb20vbnNJTG9jYWxGaWxlLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBJbml0V2l0aEZpbGUobnNJ
TG9jYWxGaWxlICphRmlsZSkgPSAwOwojIDkyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20v
bnNJTG9jYWxGaWxlLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGb2xsb3dMaW5rcyhQUkJvb2wg
KmFGb2xsb3dMaW5rcykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Rm9sbG93TGlua3MoUFJC
b29sIGFGb2xsb3dMaW5rcykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBPcGVuTlNQUkZpbGVE
ZXNjKFBSSW50MzIgZmxhZ3MsIFBSSW50MzIgbW9kZSwgUFJGaWxlRGVzYyAqICpfcmV0dmFsKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IE9wZW5BTlNJRmlsZURlc2MoY29uc3QgY2hhciAqbW9k
ZSwgRklMRSAqICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IExvYWQoUFJMaWJy
YXJ5ICogKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RGlza1NwYWNlQXZh
aWxhYmxlKFBSSW50NjQgKmFEaXNrU3BhY2VBdmFpbGFibGUpID0gMDsKIyAxMTkgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lMb2NhbEZpbGUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEFw
cGVuZFJlbGF0aXZlUGF0aChjb25zdCBuc0FTdHJpbmcgJiByZWxhdGl2ZUZpbGVQYXRoKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEFwcGVuZFJlbGF0aXZlTmF0aXZlUGF0aChjb25zdCBuc0FD
U3RyaW5nICYgcmVsYXRpdmVGaWxlUGF0aCkgPSAwOwojIDEzMiAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL3hwY29tL25zSUxvY2FsRmlsZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UGVyc2lzdGVu
dERlc2NyaXB0b3IobnNBQ1N0cmluZyAmIGFQZXJzaXN0ZW50RGVzY3JpcHRvcikgPSAwOwogIHZp
cnR1YWwgbnNyZXN1bHQgU2V0UGVyc2lzdGVudERlc2NyaXB0b3IoY29uc3QgbnNBQ1N0cmluZyAm
IGFQZXJzaXN0ZW50RGVzY3JpcHRvcikgPSAwOwojIDE0MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3hwY29tL25zSUxvY2FsRmlsZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgUmV2ZWFsKHZvaWQpID0g
MDsKIyAxNTMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lMb2NhbEZpbGUuaCIKICB2
aXJ0dWFsIG5zcmVzdWx0IExhdW5jaCh2b2lkKSA9IDA7CiMgMTY4ICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUveHBjb20vbnNJTG9jYWxGaWxlLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRSZWxhdGl2
ZURlc2NyaXB0b3IobnNJTG9jYWxGaWxlICpmcm9tRmlsZSwgbnNBQ1N0cmluZyAmIF9yZXR2YWwp
ID0gMDsKIyAxODIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lMb2NhbEZpbGUuaCIK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldFJlbGF0aXZlRGVzY3JpcHRvcihuc0lMb2NhbEZpbGUgKmZy
b21GaWxlLCBjb25zdCBuc0FDU3RyaW5nICYgcmVsYXRpdmVEZXNjKSA9IDA7Cgp9OwojIDc0ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNOZXRVdGlsLmgiIDIKIyAxICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbmVja28vbnNJRmlsZVN0cmVhbXMuaCIgMQojIDIxICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvbmVja28vbnNJRmlsZVN0cmVhbXMuaCIKY2xhc3MgbnNJRmlsZTsKIyAzNCAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSUZpbGVTdHJlYW1zLmgiCmNsYXNzIG5zSUZpbGVJ
bnB1dFN0cmVhbSA6IHB1YmxpYyBuc0lJbnB1dFN0cmVhbSB7CiBwdWJsaWM6CgogIHN0YXRpYyBj
b25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhlM2Q1NmEy
MCwgMHhjN2VjLCAweDExZDMsIHsgMHg4YywgMHhkYSwgMHgwMCwgMHg2MCwgMHhiMCwgMHhmYywg
MHgxNCwgMHhhMyB9fTsgcmV0dXJuIGlpZDt9CiMgNDcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9u
ZWNrby9uc0lGaWxlU3RyZWFtcy5oIgogIHZpcnR1YWwgbnNyZXN1bHQgSW5pdChuc0lGaWxlICpm
aWxlLCBQUkludDMyIGlvRmxhZ3MsIFBSSW50MzIgcGVybSwgUFJJbnQzMiBiZWhhdmlvckZsYWdz
KSA9IDA7CiMgNTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lGaWxlU3RyZWFtcy5o
IgogIGVudW0geyBERUxFVEVfT05fQ0xPU0UgPSAyIH07CgoKCgoKICBlbnVtIHsgQ0xPU0VfT05f
RU9GID0gNCB9OwoKCgoKCgogIGVudW0geyBSRU9QRU5fT05fUkVXSU5EID0gOCB9OwoKfTsKIyAx
MzQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lGaWxlU3RyZWFtcy5oIgpjbGFzcyBu
c0lGaWxlT3V0cHV0U3RyZWFtIDogcHVibGljIG5zSU91dHB1dFN0cmVhbSB7CiBwdWJsaWM6Cgog
IHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7
MHhlNmY2ODA0MCwgMHhjN2VjLCAweDExZDMsIHsgMHg4YywgMHhkYSwgMHgwMCwgMHg2MCwgMHhi
MCwgMHhmYywgMHgxNCwgMHhhMyB9fTsgcmV0dXJuIGlpZDt9CiMgMTQ3ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvbmVja28vbnNJRmlsZVN0cmVhbXMuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEluaXQo
bnNJRmlsZSAqZmlsZSwgUFJJbnQzMiBpb0ZsYWdzLCBQUkludDMyIHBlcm0sIFBSSW50MzIgYmVo
YXZpb3JGbGFncykgPSAwOwoKfTsKIyA3NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25z
TmV0VXRpbC5oIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVByb3RvY29s
UHJveHlTZXJ2aWNlLmgiIDEKIyAyMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVBy
b3RvY29sUHJveHlTZXJ2aWNlLmgiCmNsYXNzIG5zSVByb3h5SW5mbzsKIyAzNCAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL25lY2tvL25zSVByb3RvY29sUHJveHlTZXJ2aWNlLmgiCmNsYXNzIG5zSVBy
b3RvY29sUHJveHlTZXJ2aWNlIDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3Rh
dGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDQ5
NWNjOTgwLCAweGUwZDQsIDB4MTFkMywgeyAweGExLCAweGE4LCAweDAwLCAweDUwLCAweDA0LCAw
eDFjLCAweGFmLCAweDQ0IH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
UHJveHlFbmFibGVkKFBSQm9vbCAqYVByb3h5RW5hYmxlZCkgPSAwOwoKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgRXhhbWluZUZvclByb3h5KG5zSVVSSSAqYVVSSSwgbnNJUHJveHlJbmZvICoqX3JldHZh
bCkgPSAwOwoKCgogIHZpcnR1YWwgbnNyZXN1bHQgTmV3UHJveHlJbmZvKGNvbnN0IGNoYXIgKnR5
cGUsIGNvbnN0IGNoYXIgKmhvc3QsIFBSSW50MzIgcG9ydCwgbnNJUHJveHlJbmZvICoqX3JldHZh
bCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgQWRkTm9Qcm94eUZvcihjb25zdCBjaGFy
ICpob3N0LCBQUkludDMyIHBvcnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVtb3ZlTm9Q
cm94eUZvcihjb25zdCBjaGFyICpob3N0LCBQUkludDMyIHBvcnQpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgQ29uZmlndXJlRnJvbVBBQyhjb25zdCBjaGFyICp1cmwpID0gMDsKCn07CiMgNzYg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc05ldFV0aWwuaCIgMgojIDEgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lQcm94eUluZm8uaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvbmVja28vbnNJUHJveHlJbmZvLmgiCmNsYXNzIG5zSVByb3h5SW5mbyA6IHB1Ymxp
YyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkg
e3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhiNjVkMjJiMCwgMHgxZGQxLCAweDExYjIsIHsg
MHg4ZiwgMHg5NSwgMHg5MiwgMHgwZSwgMHg1YiwgMHg3YiwgMHg1NiwgMHhmMCB9fTsgcmV0dXJu
IGlpZDt9CgoKICB2aXJ0dWFsIGNvbnN0IGNoYXIqIEhvc3Qodm9pZCkgPSAwOwoKCiAgdmlydHVh
bCBQUkludDMyIFBvcnQodm9pZCkgPSAwOwoKCiAgdmlydHVhbCBjb25zdCBjaGFyKiBUeXBlKHZv
aWQpID0gMDsKCn07CiMgNzcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc05ldFV0aWwu
aCIgMgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJQnVmZmVyZWRTdHJlYW1z
LmgiIDEKIyAzMyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSUJ1ZmZlcmVkU3RyZWFt
cy5oIgpjbGFzcyBuc0lCdWZmZXJlZElucHV0U3RyZWFtIDogcHVibGljIG5zSUlucHV0U3RyZWFt
IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0
IG5zSUlEIGlpZCA9IHsweDYxNmY1YjQ4LCAweGRhMDksIDB4MTFkMywgeyAweDhjLCAweGRhLCAw
eDAwLCAweDYwLCAweGIwLCAweGZjLCAweDE0LCAweGEzIH19OyByZXR1cm4gaWlkO30KCgoKCgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEluaXQobnNJSW5wdXRTdHJlYW0gKmZpbGxGcm9tU3RyZWFtLCBQ
UlVpbnQzMiBidWZmZXJTaXplKSA9IDA7Cgp9OwojIDEwOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L25lY2tvL25zSUJ1ZmZlcmVkU3RyZWFtcy5oIgpjbGFzcyBuc0lCdWZmZXJlZE91dHB1dFN0cmVh
bSA6IHB1YmxpYyBuc0lPdXRwdXRTdHJlYW0gewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJ
SUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4NjQ3NjM3OGEsIDB4ZGEw
OSwgMHgxMWQzLCB7IDB4OGMsIDB4ZGEsIDB4MDAsIDB4NjAsIDB4YjAsIDB4ZmMsIDB4MTQsIDB4
YTMgfX07IHJldHVybiBpaWQ7fQoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgSW5pdChuc0lPdXRw
dXRTdHJlYW0gKnNpbmtUb1N0cmVhbSwgUFJVaW50MzIgYnVmZmVyU2l6ZSkgPSAwOwoKfTsKIyA3
OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zTmV0VXRpbC5oIiAyCiMgMSAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL25lY2tvL25zSUlucHV0U3RyZWFtUHVtcC5oIiAxCiMgMTcgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lJbnB1dFN0cmVhbVB1bXAuaCIKY2xhc3MgbnNJSW5w
dXRTdHJlYW07CgpjbGFzcyBuc0lTdHJlYW1MaXN0ZW5lcjsKIyAyOSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL25lY2tvL25zSUlucHV0U3RyZWFtUHVtcC5oIgpjbGFzcyBuc0lJbnB1dFN0cmVhbVB1
bXAgOiBwdWJsaWMgbnNJUmVxdWVzdCB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYg
R2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhmN2RkOGQ4NywgMHhlZmE3LCAw
eDQ4Y2MsIHsgMHg5ZCwgMHg5NCwgMHhkZiwgMHg0OCwgMHg4ZCwgMHhmMCwgMHhiMywgMHhmOSB9
fTsgcmV0dXJuIGlpZDt9CiMgNjIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lJbnB1
dFN0cmVhbVB1bXAuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEluaXQobnNJSW5wdXRTdHJlYW0gKmFT
dHJlYW0sIFBSSW50MzIgYVN0cmVhbVBvcywgUFJJbnQzMiBhU3RyZWFtTGVuLCBQUlVpbnQzMiBh
U2VnbWVudFNpemUsIFBSVWludDMyIGFTZWdtZW50Q291bnQsIFBSQm9vbCBhQ2xvc2VXaGVuRG9u
ZSkgPSAwOwojIDc0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJSW5wdXRTdHJlYW1Q
dW1wLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBBc3luY1JlYWQobnNJU3RyZWFtTGlzdGVuZXIgKmFM
aXN0ZW5lciwgbnNJU3VwcG9ydHMgKmFMaXN0ZW5lckNvbnRleHQpID0gMDsKCn07CiMgODAgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc05ldFV0aWwuaCIgMgojIDEgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9uZWNrby9uc0lBc3luY1N0cmVhbUNvcGllci5oIiAxCiMgMTcgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lBc3luY1N0cmVhbUNvcGllci5oIgpjbGFzcyBuc0lJbnB1
dFN0cmVhbTsKCmNsYXNzIG5zSU91dHB1dFN0cmVhbTsKCmNsYXNzIG5zSVJlcXVlc3RPYnNlcnZl
cjsKIyAzMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSUFzeW5jU3RyZWFtQ29waWVy
LmgiCmNsYXNzIG5zSUFzeW5jU3RyZWFtQ29waWVyIDogcHVibGljIG5zSVJlcXVlc3QgewogcHVi
bGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQg
aWlkID0gezB4ZWFhNDkxNDEsIDB4YzIxYywgMHg0ZmU4LCB7IDB4YTcsIDB4OWIsIDB4NzcsIDB4
ODYsIDB4MGEsIDB4MzksIDB4MTAsIDB4YWEgfX07IHJldHVybiBpaWQ7fQojIDUzICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvbmVja28vbnNJQXN5bmNTdHJlYW1Db3BpZXIuaCIKICB2aXJ0dWFsIG5z
cmVzdWx0IEluaXQobnNJSW5wdXRTdHJlYW0gKmFTb3VyY2UsIG5zSU91dHB1dFN0cmVhbSAqYVNp
bmssIFBSQm9vbCBhU291cmNlQnVmZmVyZWQsIFBSQm9vbCBhU2lua0J1ZmZlcmVkLCBQUlVpbnQz
MiBhQ2h1bmtTaXplKSA9IDA7CiMgNjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lB
c3luY1N0cmVhbUNvcGllci5oIgogIHZpcnR1YWwgbnNyZXN1bHQgQXN5bmNDb3B5KG5zSVJlcXVl
c3RPYnNlcnZlciAqYU9ic2VydmVyLCBuc0lTdXBwb3J0cyAqYU9ic2VydmVyQ29udGV4dCkgPSAw
OwoKfTsKIyA4MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zTmV0VXRpbC5oIiAyCgoK
aW5saW5lIGNvbnN0IG5zR2V0U2VydmljZUJ5Q0lECmRvX0dldElPU2VydmljZShuc3Jlc3VsdCog
ZXJyb3IgPSAwKQp7CiAgICBzdGF0aWMgY29uc3QgbnNDSUQga0lPU2VydmljZUNJRCA9IHsgMHg5
YWM5ZTc3MCwgMHgxOGJjLCAweDExZDMsIHsweDkzLCAweDM3LCAweDAwLCAweDEwLCAweDRiLCAw
eGEwLCAweGZkLCAweDQwfSB9OwogICAgcmV0dXJuIG5zR2V0U2VydmljZUJ5Q0lEKGtJT1NlcnZp
Y2VDSUQsIDAsIGVycm9yKTsKfQoKaW5saW5lIG5zcmVzdWx0Ck5TX05ld1VSSShuc0lVUkkgKipy
ZXN1bHQsCiAgICAgICAgICBjb25zdCBuc0FDU3RyaW5nICZzcGVjLAogICAgICAgICAgY29uc3Qg
Y2hhciAqY2hhcnNldCA9IDAsCiAgICAgICAgICBuc0lVUkkgKmJhc2VVUkkgPSAwLAogICAgICAg
ICAgbnNJSU9TZXJ2aWNlICppb1NlcnZpY2UgPSAwKQp7CiAgICBuc3Jlc3VsdCBydjsKCiAgICBu
c0NPTVB0cjxuc0lJT1NlcnZpY2U+IHNlcnY7CiAgICBpZiAoaW9TZXJ2aWNlID09IDApIHsKICAg
ICAgICBzZXJ2ID0gZG9fR2V0SU9TZXJ2aWNlKCZydik7CiAgICAgICAgaWYgKCgocnYpICYgMHg4
MDAwMDAwMCkpIHJldHVybiBydjsKICAgICAgICBpb1NlcnZpY2UgPSBzZXJ2LmdldCgpOwogICAg
fQoKICAgIHJldHVybiBpb1NlcnZpY2UtPk5ld1VSSShzcGVjLCBjaGFyc2V0LCBiYXNlVVJJLCBy
ZXN1bHQpOwp9CgppbmxpbmUgbnNyZXN1bHQKTlNfTmV3VVJJKG5zSVVSSSogKnJlc3VsdCwKICAg
ICAgICAgIGNvbnN0IG5zQVN0cmluZyYgc3BlYywKICAgICAgICAgIGNvbnN0IGNoYXIgKmNoYXJz
ZXQgPSAwLAogICAgICAgICAgbnNJVVJJKiBiYXNlVVJJID0gMCwKICAgICAgICAgIG5zSUlPU2Vy
dmljZSogaW9TZXJ2aWNlID0gMCkKewogICAgcmV0dXJuIE5TX05ld1VSSShyZXN1bHQsIE5TX0Nv
bnZlcnRVQ1MydG9VVEY4KHNwZWMpLCBjaGFyc2V0LCBiYXNlVVJJLCBpb1NlcnZpY2UpOwp9Cgpp
bmxpbmUgbnNyZXN1bHQKTlNfTmV3VVJJKG5zSVVSSSogKnJlc3VsdCwKICAgICAgICAgIGNvbnN0
IGNoYXIgKnNwZWMsCiAgICAgICAgICBuc0lVUkkqIGJhc2VVUkkgPSAwLAogICAgICAgICAgbnNJ
SU9TZXJ2aWNlKiBpb1NlcnZpY2UgPSAwKQp7CiAgICByZXR1cm4gTlNfTmV3VVJJKHJlc3VsdCwg
bnNEZXBlbmRlbnRDU3RyaW5nKHNwZWMpLCAwLCBiYXNlVVJJLCBpb1NlcnZpY2UpOwp9Cgppbmxp
bmUgbnNyZXN1bHQKTlNfTmV3RmlsZVVSSShuc0lVUkkqICpyZXN1bHQsCiAgICAgICAgICAgICAg
bnNJRmlsZSogc3BlYywKICAgICAgICAgICAgICBuc0lJT1NlcnZpY2UqIGlvU2VydmljZSA9IDAp
CnsKICAgIG5zcmVzdWx0IHJ2OwoKICAgIG5zQ09NUHRyPG5zSUlPU2VydmljZT4gc2VydjsKICAg
IGlmIChpb1NlcnZpY2UgPT0gMCkgewogICAgICAgIHNlcnYgPSBkb19HZXRJT1NlcnZpY2UoJnJ2
KTsKICAgICAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2OwogICAgICAgIGlv
U2VydmljZSA9IHNlcnYuZ2V0KCk7CiAgICB9CgogICAgcmV0dXJuIGlvU2VydmljZS0+TmV3Rmls
ZVVSSShzcGVjLCByZXN1bHQpOwp9CgppbmxpbmUgbnNyZXN1bHQKTlNfTmV3Q2hhbm5lbChuc0lD
aGFubmVsKiAqcmVzdWx0LAogICAgICAgICAgICAgIG5zSVVSSSogdXJpLAogICAgICAgICAgICAg
IG5zSUlPU2VydmljZSogaW9TZXJ2aWNlID0gMCwKICAgICAgICAgICAgICBuc0lMb2FkR3JvdXAq
IGxvYWRHcm91cCA9IDAsCiAgICAgICAgICAgICAgbnNJSW50ZXJmYWNlUmVxdWVzdG9yKiBub3Rp
ZmljYXRpb25DYWxsYmFja3MgPSAwLAogICAgICAgICAgICAgIG5zTG9hZEZsYWdzIGxvYWRBdHRy
aWJ1dGVzID0gc3RhdGljX2Nhc3Q8IG5zTG9hZEZsYWdzID4obnNJUmVxdWVzdDo6TE9BRF9OT1JN
QUwpKQp7CiAgICBuc3Jlc3VsdCBydjsKCiAgICBuc0NPTVB0cjxuc0lJT1NlcnZpY2U+IHNlcnY7
CiAgICBpZiAoaW9TZXJ2aWNlID09IDApIHsKICAgICAgICBzZXJ2ID0gZG9fR2V0SU9TZXJ2aWNl
KCZydik7CiAgICAgICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKICAgICAg
ICBpb1NlcnZpY2UgPSBzZXJ2LmdldCgpOwogICAgfQoKICAgIG5zSUNoYW5uZWwqIGNoYW5uZWwg
PSAwOwogICAgcnYgPSBpb1NlcnZpY2UtPk5ld0NoYW5uZWxGcm9tVVJJKHVyaSwgJmNoYW5uZWwp
OwogICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKCiAgICBpZiAobG9hZEdy
b3VwKSB7CiAgICAgICAgcnYgPSBjaGFubmVsLT5TZXRMb2FkR3JvdXAobG9hZEdyb3VwKTsKICAg
ICAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2OwogICAgfQogICAgaWYgKG5v
dGlmaWNhdGlvbkNhbGxiYWNrcykgewogICAgICAgIHJ2ID0gY2hhbm5lbC0+U2V0Tm90aWZpY2F0
aW9uQ2FsbGJhY2tzKG5vdGlmaWNhdGlvbkNhbGxiYWNrcyk7CiAgICAgICAgaWYgKCgocnYpICYg
MHg4MDAwMDAwMCkpIHJldHVybiBydjsKICAgIH0KICAgIGlmIChsb2FkQXR0cmlidXRlcyAhPSBu
c0lSZXF1ZXN0OjpMT0FEX05PUk1BTCkgewogICAgICAgIHJ2ID0gY2hhbm5lbC0+U2V0TG9hZEZs
YWdzKGxvYWRBdHRyaWJ1dGVzKTsKICAgICAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0
dXJuIHJ2OwogICAgfQoKICAgICpyZXN1bHQgPSBjaGFubmVsOwogICAgcmV0dXJuIHJ2Owp9CgoK
CgoKCgppbmxpbmUgbnNyZXN1bHQKTlNfT3BlblVSSShuc0lJbnB1dFN0cmVhbSogKnJlc3VsdCwK
ICAgICAgICAgICBuc0lVUkkqIHVyaSwKICAgICAgICAgICBuc0lJT1NlcnZpY2UqIGlvU2Vydmlj
ZSA9IDAsCiAgICAgICAgICAgbnNJTG9hZEdyb3VwKiBsb2FkR3JvdXAgPSAwLAogICAgICAgICAg
IG5zSUludGVyZmFjZVJlcXVlc3Rvciogbm90aWZpY2F0aW9uQ2FsbGJhY2tzID0gMCwKICAgICAg
ICAgICBuc0xvYWRGbGFncyBsb2FkQXR0cmlidXRlcyA9IHN0YXRpY19jYXN0PCBuc0xvYWRGbGFn
cyA+KG5zSVJlcXVlc3Q6OkxPQURfTk9STUFMKSkKewogICAgbnNyZXN1bHQgcnY7CiAgICBuc0NP
TVB0cjxuc0lDaGFubmVsPiBjaGFubmVsOwoKICAgIHJ2ID0gTlNfTmV3Q2hhbm5lbChnZXR0ZXJf
QWRkUmVmcyhjaGFubmVsKSwgdXJpLCBpb1NlcnZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAg
bG9hZEdyb3VwLCBub3RpZmljYXRpb25DYWxsYmFja3MsIGxvYWRBdHRyaWJ1dGVzKTsKICAgIGlm
ICgoKHJ2KSAmIDB4ODAwMDAwMDApKSByZXR1cm4gcnY7CgogICAgbnNJSW5wdXRTdHJlYW0qIGlu
U3RyOwogICAgcnYgPSBjaGFubmVsLT5PcGVuKCZpblN0cik7CiAgICBpZiAoKChydikgJiAweDgw
MDAwMDAwKSkgcmV0dXJuIHJ2OwoKICAgICpyZXN1bHQgPSBpblN0cjsKICAgIHJldHVybiBydjsK
fQoKaW5saW5lIG5zcmVzdWx0Ck5TX09wZW5VUkkobnNJU3RyZWFtTGlzdGVuZXIqIGFDb25zdW1l
ciwKICAgICAgICAgICBuc0lTdXBwb3J0cyogY29udGV4dCwKICAgICAgICAgICBuc0lVUkkqIHVy
aSwKICAgICAgICAgICBuc0lJT1NlcnZpY2UqIGlvU2VydmljZSA9IDAsCiAgICAgICAgICAgbnNJ
TG9hZEdyb3VwKiBsb2FkR3JvdXAgPSAwLAogICAgICAgICAgIG5zSUludGVyZmFjZVJlcXVlc3Rv
ciogbm90aWZpY2F0aW9uQ2FsbGJhY2tzID0gMCwKICAgICAgICAgICBuc0xvYWRGbGFncyBsb2Fk
QXR0cmlidXRlcyA9IHN0YXRpY19jYXN0PCBuc0xvYWRGbGFncyA+KG5zSVJlcXVlc3Q6OkxPQURf
Tk9STUFMKSkKewogICAgbnNyZXN1bHQgcnY7CiAgICBuc0NPTVB0cjxuc0lDaGFubmVsPiBjaGFu
bmVsOwoKICAgIHJ2ID0gTlNfTmV3Q2hhbm5lbChnZXR0ZXJfQWRkUmVmcyhjaGFubmVsKSwgdXJp
LCBpb1NlcnZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgbG9hZEdyb3VwLCBub3RpZmljYXRp
b25DYWxsYmFja3MsIGxvYWRBdHRyaWJ1dGVzKTsKICAgIGlmICgoKHJ2KSAmIDB4ODAwMDAwMDAp
KSByZXR1cm4gcnY7CgogICAgcnYgPSBjaGFubmVsLT5Bc3luY09wZW4oYUNvbnN1bWVyLCBjb250
ZXh0KTsKICAgIHJldHVybiBydjsKfQoKaW5saW5lIG5zcmVzdWx0Ck5TX01ha2VBYnNvbHV0ZVVS
SShuc0FDU3RyaW5nICZyZXN1bHQsCiAgICAgICAgICAgICAgICAgICBjb25zdCBuc0FDU3RyaW5n
ICZzcGVjLAogICAgICAgICAgICAgICAgICAgbnNJVVJJICpiYXNlVVJJLAogICAgICAgICAgICAg
ICAgICAgbnNJSU9TZXJ2aWNlICppb1NlcnZpY2UgPSAwKQp7CiAgICBpZiAoIWJhc2VVUkkpIHsK
ICAgICAgICA7CiAgICAgICAgcmVzdWx0ID0gc3BlYzsKICAgICAgICByZXR1cm4gMDsKICAgIH0K
CiAgICBpZiAoc3BlYy5Jc0VtcHR5KCkpCiAgICAgICAgcmV0dXJuIGJhc2VVUkktPkdldFNwZWMo
cmVzdWx0KTsKCiAgICByZXR1cm4gYmFzZVVSSS0+UmVzb2x2ZShzcGVjLCByZXN1bHQpOwp9Cgpp
bmxpbmUgbnNyZXN1bHQKTlNfTWFrZUFic29sdXRlVVJJKGNoYXIgKipyZXN1bHQsCiAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICpzcGVjLAogICAgICAgICAgICAgICAgICAgbnNJVVJJICpi
YXNlVVJJLAogICAgICAgICAgICAgICAgICAgbnNJSU9TZXJ2aWNlICppb1NlcnZpY2UgPSAwKQp7
CiAgICBuc0NBdXRvU3RyaW5nIHJlc3VsdEJ1ZjsKCiAgICBuc3Jlc3VsdCBydiA9IE5TX01ha2VB
YnNvbHV0ZVVSSShyZXN1bHRCdWYsIG5zRGVwZW5kZW50Q1N0cmluZyhzcGVjKSwgYmFzZVVSSSwg
aW9TZXJ2aWNlKTsKICAgIGlmICgoKHJ2KSAmIDB4ODAwMDAwMDApKSByZXR1cm4gcnY7CgogICAg
KnJlc3VsdCA9IFRvTmV3Q1N0cmluZyhyZXN1bHRCdWYpOwogICAgcmV0dXJuICpyZXN1bHQgPyAw
IDogKChuc3Jlc3VsdCkgMHg4MDA3MDAwZUwpOwp9CgppbmxpbmUgbnNyZXN1bHQKTlNfTWFrZUFi
c29sdXRlVVJJKG5zQVN0cmluZyAmcmVzdWx0LAogICAgICAgICAgICAgICAgICAgY29uc3QgbnNB
U3RyaW5nICZzcGVjLAogICAgICAgICAgICAgICAgICAgbnNJVVJJICpiYXNlVVJJLAogICAgICAg
ICAgICAgICAgICAgbnNJSU9TZXJ2aWNlICppb1NlcnZpY2UgPSAwKQp7CiAgICBpZiAoIWJhc2VV
UkkpIHsKICAgICAgICA7CiAgICAgICAgcmVzdWx0ID0gc3BlYzsKICAgICAgICByZXR1cm4gMDsK
ICAgIH0KCiAgICBuc0NBdXRvU3RyaW5nIHJlc3VsdEJ1ZjsKICAgIG5zcmVzdWx0IHJ2OwoKICAg
IGlmIChzcGVjLklzRW1wdHkoKSkKICAgICAgICBydiA9IGJhc2VVUkktPkdldFNwZWMocmVzdWx0
QnVmKTsKICAgIGVsc2UKICAgICAgICBydiA9IGJhc2VVUkktPlJlc29sdmUoTlNfQ29udmVydFVD
UzJ0b1VURjgoc3BlYyksIHJlc3VsdEJ1Zik7CiAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkg
cmV0dXJuIHJ2OwoKICAgIHJlc3VsdCA9IE5TX0NvbnZlcnRVVEY4dG9VQ1MyKHJlc3VsdEJ1Zik7
CiAgICByZXR1cm4gMDsKfQoKaW5saW5lIG5zcmVzdWx0Ck5TX05ld0lucHV0U3RyZWFtQ2hhbm5l
bChuc0lDaGFubmVsICoqcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgbnNJVVJJICp1
cmksCiAgICAgICAgICAgICAgICAgICAgICAgICBuc0lJbnB1dFN0cmVhbSAqc3RyZWFtLAogICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgbnNBQ1N0cmluZyAmY29udGVudFR5cGUgPSBuc0Rl
cGVuZGVudENTdHJpbmcoIiIsIFBSVWludDMyKHNpemVvZigiIiktMSkpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgbnNBQ1N0cmluZyAmY29udGVudENoYXJzZXQgPSBuc0RlcGVuZGVu
dENTdHJpbmcoIiIsIFBSVWludDMyKHNpemVvZigiIiktMSkpKQp7CiAgICBuc3Jlc3VsdCBydjsK
CiAgICBzdGF0aWMgY29uc3QgbnNDSUQga0lucHV0U3RyZWFtQ2hhbm5lbENJRCA9IHsgMHg2ZGRi
MDUwYywgMHgwZDA0LCAweDExZDQsIHsweDk4LCAweDZlLCAweDAwLCAweGMwLCAweDRmLCAweGEw
LCAweGNmLCAweDRhfSB9OwogICAgbnNDT01QdHI8bnNJSW5wdXRTdHJlYW1DaGFubmVsPiBjaGFu
bmVsID0KICAgICAgICBkb19DcmVhdGVJbnN0YW5jZShrSW5wdXRTdHJlYW1DaGFubmVsQ0lELCAm
cnYpOwogICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKCiAgICBydiA9IGNo
YW5uZWwtPlNldFVSSSh1cmkpOwogICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBy
djsKICAgIHJ2ID0gY2hhbm5lbC0+U2V0Q29udGVudFN0cmVhbShzdHJlYW0pOwogICAgaWYgKCgo
cnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKICAgIHJ2ID0gY2hhbm5lbC0+U2V0Q29udGVu
dFR5cGUoY29udGVudFR5cGUpOwogICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBy
djsKICAgIHJ2ID0gY2hhbm5lbC0+U2V0Q29udGVudENoYXJzZXQoY29udGVudENoYXJzZXQpOwog
ICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKCiAgICAoKnJlc3VsdCA9IGNo
YW5uZWwpLT5BZGRSZWYoKTsKICAgIHJldHVybiAwOwp9CgppbmxpbmUgbnNyZXN1bHQKTlNfTmV3
SW5wdXRTdHJlYW1QdW1wKG5zSUlucHV0U3RyZWFtUHVtcCAqKnJlc3VsdCwKICAgICAgICAgICAg
ICAgICAgICAgIG5zSUlucHV0U3RyZWFtICpzdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICBQ
UkludDMyIHN0cmVhbVBvcyA9IC0xLAogICAgICAgICAgICAgICAgICAgICAgUFJJbnQzMiBzdHJl
YW1MZW4gPSAtMSwKICAgICAgICAgICAgICAgICAgICAgIFBSVWludDMyIHNlZ3NpemUgPSAwLAog
ICAgICAgICAgICAgICAgICAgICAgUFJVaW50MzIgc2VnY291bnQgPSAwLAogICAgICAgICAgICAg
ICAgICAgICAgUFJCb29sIGNsb3NlV2hlbkRvbmUgPSAwKQp7CiAgICBuc3Jlc3VsdCBydjsKCiAg
ICBzdGF0aWMgY29uc3QgbnNDSUQga0lucHV0U3RyZWFtUHVtcENJRCA9IHsgMHhjY2QwZTk2MCwg
MHg3OTQ3LCAweDQ2MzUsIHsweGI3LCAweDBlLCAweDRjLCAweDY2LCAweDFiLCAweDYzLCAweGQ2
LCAweDc1fSB9OwogICAgbnNDT01QdHI8bnNJSW5wdXRTdHJlYW1QdW1wPiBwdW1wID0KICAgICAg
ICBkb19DcmVhdGVJbnN0YW5jZShrSW5wdXRTdHJlYW1QdW1wQ0lELCAmcnYpOwogICAgaWYgKCgo
cnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKCiAgICBydiA9IHB1bXAtPkluaXQoc3RyZWFt
LCBzdHJlYW1Qb3MsIHN0cmVhbUxlbiwKICAgICAgICAgICAgICAgICAgICBzZWdzaXplLCBzZWdj
b3VudCwgY2xvc2VXaGVuRG9uZSk7CiAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJu
IHJ2OwoKICAgICgqcmVzdWx0ID0gcHVtcCktPkFkZFJlZigpOwogICAgcmV0dXJuIDA7Cn0KCgoK
CgppbmxpbmUgbnNyZXN1bHQKTlNfTmV3QXN5bmNTdHJlYW1Db3BpZXIobnNJQXN5bmNTdHJlYW1D
b3BpZXIgKipyZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgIG5zSUlucHV0U3RyZWFtICpz
b3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgIG5zSU91dHB1dFN0cmVhbSAqc2luaywKICAg
ICAgICAgICAgICAgICAgICAgICAgUFJCb29sIHNvdXJjZUJ1ZmZlcmVkID0gMCwKICAgICAgICAg
ICAgICAgICAgICAgICAgUFJCb29sIHNpbmtCdWZmZXJlZCA9IDAsCiAgICAgICAgICAgICAgICAg
ICAgICAgIFBSVWludDMyIGNodW5rU2l6ZSA9IDApCnsKICAgIG5zcmVzdWx0IHJ2OwoKICAgIHN0
YXRpYyBjb25zdCBuc0NJRCBrQXN5bmNTdHJlYW1Db3BpZXJDSUQgPSB7IDB4ZTc0NmE4YjEsIDB4
Yzk3YSwgMHg0ZmM1LCB7MHhiYSwgMHhhNCwgMHg2NiwgMHg2MCwgMHg3NSwgMHgyMSwgMHhiZCwg
MHgwOH0gfTsKICAgIG5zQ09NUHRyPG5zSUFzeW5jU3RyZWFtQ29waWVyPiBjb3BpZXIgPQogICAg
ICAgIGRvX0NyZWF0ZUluc3RhbmNlKGtBc3luY1N0cmVhbUNvcGllckNJRCwgJnJ2KTsKICAgIGlm
ICgoKHJ2KSAmIDB4ODAwMDAwMDApKSByZXR1cm4gcnY7CgogICAgcnYgPSBjb3BpZXItPkluaXQo
c291cmNlLCBzaW5rLCBzb3VyY2VCdWZmZXJlZCwgc2lua0J1ZmZlcmVkLCBjaHVua1NpemUpOwog
ICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKCiAgICAoKnJlc3VsdCA9IGNv
cGllciktPkFkZFJlZigpOwogICAgcmV0dXJuIDA7Cn0KCmlubGluZSBuc3Jlc3VsdApOU19OZXdM
b2FkR3JvdXAobnNJTG9hZEdyb3VwKiAqcmVzdWx0LCBuc0lSZXF1ZXN0T2JzZXJ2ZXIqIG9icykK
ewogICAgbnNyZXN1bHQgcnY7CiAgICBuc0NPTVB0cjxuc0lMb2FkR3JvdXA+IGdyb3VwOwogICAg
c3RhdGljIGNvbnN0IG5zQ0lEIGtMb2FkR3JvdXBDSUQgPSB7IDB4ZTFjNjE1ODIsIDB4MmE4NCwg
MHgxMWQzLCB7MHg4YywgMHhjZSwgMHgwMCwgMHg2MCwgMHhiMCwgMHhmYywgMHgxNCwgMHhhM30g
fTsKICAgIHJ2ID0gbnNDb21wb25lbnRNYW5hZ2VyOjpDcmVhdGVJbnN0YW5jZShrTG9hZEdyb3Vw
Q0lELCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zQ09N
VHlwZUluZm88bnNJTG9hZEdyb3VwPjo6R2V0SUlEKCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2V0dGVyX0FkZFJlZnMoZ3JvdXApKTsKICAgIGlmICgoKHJ2
KSAmIDB4ODAwMDAwMDApKSByZXR1cm4gcnY7CiAgICBydiA9IGdyb3VwLT5TZXRHcm91cE9ic2Vy
dmVyKG9icyk7CiAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2OwoKICAgICpy
ZXN1bHQgPSBncm91cDsKICAgICgqcmVzdWx0KS0+QWRkUmVmKCk7CiAgICByZXR1cm4gMDsKfQoK
CmlubGluZSBuc3Jlc3VsdApOU19OZXdEb3dubG9hZGVyKG5zSURvd25sb2FkZXIqICpyZXN1bHQs
CiAgICAgICAgICAgICAgICAgICBuc0lVUkkqIHVyaSwKICAgICAgICAgICAgICAgICAgIG5zSURv
d25sb2FkT2JzZXJ2ZXIqIG9ic2VydmVyLAogICAgICAgICAgICAgICAgICAgbnNJU3VwcG9ydHMq
IGNvbnRleHQgPSAwLAogICAgICAgICAgICAgICAgICAgUFJCb29sIHN5bmNocm9ub3VzID0gMCwK
ICAgICAgICAgICAgICAgICAgIG5zSUxvYWRHcm91cCogbG9hZEdyb3VwID0gMCwKICAgICAgICAg
ICAgICAgICAgIG5zSUludGVyZmFjZVJlcXVlc3Rvciogbm90aWZpY2F0aW9uQ2FsbGJhY2tzID0g
MCwKICAgICAgICAgICAgICAgICAgIG5zTG9hZEZsYWdzIGxvYWRBdHRyaWJ1dGVzID0gc3RhdGlj
X2Nhc3Q8IG5zTG9hZEZsYWdzID4obnNJUmVxdWVzdDo6TE9BRF9OT1JNQUwpKQp7CiAgICBuc3Jl
c3VsdCBydjsKICAgIG5zQ09NUHRyPG5zSURvd25sb2FkZXI+IGRvd25sb2FkZXI7CiAgICBzdGF0
aWMgY29uc3QgbnNDSUQga0Rvd25sb2FkZXJDSUQgPSB7IDB4NTEwYTg2YmIsIDB4NjAxOSwgMHg0
ZWQxLCB7MHhiYiwgMHg0ZiwgMHg5NiwgMHg1YywgMHhmZiwgMHhkMiwgMHgzZSwgMHhjZX0gfTsK
ICAgIHJ2ID0gbnNDb21wb25lbnRNYW5hZ2VyOjpDcmVhdGVJbnN0YW5jZShrRG93bmxvYWRlckNJ
RCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zQ09NVHlwZUluZm88bnNJRG93
bmxvYWRlcj46OkdldElJRCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdldHRlcl9BZGRSZWZzKGRvd25sb2FkZXIpKTsKICAgIGlmICgoKHJ2KSAmIDB4ODAw
MDAwMDApKSByZXR1cm4gcnY7CiAgICBydiA9IGRvd25sb2FkZXItPkluaXQodXJpLCBvYnNlcnZl
ciwgY29udGV4dCwgc3luY2hyb25vdXMsIGxvYWRHcm91cCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICBub3RpZmljYXRpb25DYWxsYmFja3MsIGxvYWRBdHRyaWJ1dGVzKTsKICAgIGlmICgoKHJ2
KSAmIDB4ODAwMDAwMDApKSByZXR1cm4gcnY7CiAgICAqcmVzdWx0ID0gZG93bmxvYWRlcjsKICAg
ICgqcmVzdWx0KS0+QWRkUmVmKCk7CiAgICByZXR1cm4gcnY7Cn0KCmlubGluZSBuc3Jlc3VsdApO
U19OZXdTdHJlYW1Mb2FkZXIobnNJU3RyZWFtTG9hZGVyICoqYVJlc3VsdCwKICAgICAgICAgICAg
ICAgICAgIG5zSUNoYW5uZWwgKmFDaGFubmVsLAogICAgICAgICAgICAgICAgICAgbnNJU3RyZWFt
TG9hZGVyT2JzZXJ2ZXIgKmFPYnNlcnZlciwKICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRz
ICphQ29udGV4dCkKewogICAgbnNyZXN1bHQgcnY7CiAgICBuc0NPTVB0cjxuc0lTdHJlYW1Mb2Fk
ZXI+IGxvYWRlcjsKICAgIHN0YXRpYyBjb25zdCBuc0NJRCBrU3RyZWFtTG9hZGVyQ0lEID0geyAw
eDViYTZkOTIwLCAweGQ0ZTksIDB4MTFkMywgeyAweGExLCAweGE1LCAweDAsIDB4NTAsIDB4NCwg
MHgxYywgMHhhZiwgMHg0NCB9IH07CiAgICBydiA9IG5zQ29tcG9uZW50TWFuYWdlcjo6Q3JlYXRl
SW5zdGFuY2Uoa1N0cmVhbUxvYWRlckNJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5zQ09NVHlwZUluZm88bnNJU3RyZWFtTG9hZGVyPjo6R2V0SUlEKCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0dGVyX0FkZFJlZnMobG9hZGVyKSk7
CiAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2OwoKICAgIHJ2ID0gbG9hZGVy
LT5Jbml0KGFDaGFubmVsLCBhT2JzZXJ2ZXIsIGFDb250ZXh0KTsKICAgIGlmICgoKHJ2KSAmIDB4
ODAwMDAwMDApKSByZXR1cm4gcnY7CgogICAgKmFSZXN1bHQgPSBsb2FkZXI7CiAgICAoKmFSZXN1
bHQpLT5BZGRSZWYoKTsKICAgIHJldHVybiBydjsKfQoKaW5saW5lIG5zcmVzdWx0Ck5TX05ld1N0
cmVhbUxvYWRlcihuc0lTdHJlYW1Mb2FkZXIqICpyZXN1bHQsCiAgICAgICAgICAgICAgICAgICBu
c0lVUkkqIHVyaSwKICAgICAgICAgICAgICAgICAgIG5zSVN0cmVhbUxvYWRlck9ic2VydmVyKiBv
YnNlcnZlciwKICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzKiBjb250ZXh0ID0gMCwKICAg
ICAgICAgICAgICAgICAgIG5zSUxvYWRHcm91cCogbG9hZEdyb3VwID0gMCwKICAgICAgICAgICAg
ICAgICAgIG5zSUludGVyZmFjZVJlcXVlc3Rvciogbm90aWZpY2F0aW9uQ2FsbGJhY2tzID0gMCwK
ICAgICAgICAgICAgICAgICAgIG5zTG9hZEZsYWdzIGxvYWRBdHRyaWJ1dGVzID0gc3RhdGljX2Nh
c3Q8IG5zTG9hZEZsYWdzID4obnNJUmVxdWVzdDo6TE9BRF9OT1JNQUwpLAogICAgICAgICAgICAg
ICAgICAgbnNJVVJJKiByZWZlcnJlciA9IDApCnsKICAgIG5zcmVzdWx0IHJ2OwoKICAgIG5zQ09N
UHRyPG5zSUNoYW5uZWw+IGNoYW5uZWw7CiAgICBydiA9IE5TX05ld0NoYW5uZWwoZ2V0dGVyX0Fk
ZFJlZnMoY2hhbm5lbCksCiAgICAgICAgICAgICAgICAgICAgICAgdXJpLAogICAgICAgICAgICAg
ICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgICAgbG9hZEdyb3VwLAogICAgICAgICAg
ICAgICAgICAgICAgIG5vdGlmaWNhdGlvbkNhbGxiYWNrcywKICAgICAgICAgICAgICAgICAgICAg
ICBsb2FkQXR0cmlidXRlcyk7CiAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2
OwoKICAgIG5zQ09NUHRyPG5zSUh0dHBDaGFubmVsPiBodHRwQ2hhbm5lbChkb19RdWVyeUludGVy
ZmFjZShjaGFubmVsKSk7CiAgICBpZiAoaHR0cENoYW5uZWwpCiAgICAgICAgaHR0cENoYW5uZWwt
PlNldFJlZmVycmVyKHJlZmVycmVyKTsKCiAgICByZXR1cm4gTlNfTmV3U3RyZWFtTG9hZGVyKHJl
c3VsdCwgY2hhbm5lbCwgb2JzZXJ2ZXIsIGNvbnRleHQpOwp9CgppbmxpbmUgbnNyZXN1bHQKTlNf
TmV3VW5pY2hhclN0cmVhbUxvYWRlcihuc0lVbmljaGFyU3RyZWFtTG9hZGVyICoqYVJlc3VsdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lDaGFubmVsICphQ2hhbm5lbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICBuc0lVbmljaGFyU3RyZWFtTG9hZGVyT2JzZXJ2ZXIgKmFPYnNlcnZl
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdXBwb3J0cyAqYUNvbnRleHQgPSAwLAog
ICAgICAgICAgICAgICAgICAgICAgICAgIFBSVWludDMyIGFTZWdtZW50U2l6ZSA9IG5zSVVuaWNo
YXJTdHJlYW1Mb2FkZXI6OkRFRkFVTFRfU0VHTUVOVF9TSVpFKQp7CiAgICBuc3Jlc3VsdCBydjsK
ICAgIG5zQ09NUHRyPG5zSVVuaWNoYXJTdHJlYW1Mb2FkZXI+IGxvYWRlcjsKICAgIHN0YXRpYyBj
b25zdCBuc0NJRCBrVW5pY2hhclN0cmVhbUxvYWRlckNJRCA9IHsgMHg5NDQ1NzkxZiwgMHhmYTRj
LCAweDQ2NjksIHsgMHhiMSwgMHg3NCwgMHhkZiwgMHg1MCwgMHgzMiwgMHhiYiwgMHg2NywgMHhi
MyB9IH07CiAgICBydiA9IG5zQ29tcG9uZW50TWFuYWdlcjo6Q3JlYXRlSW5zdGFuY2Uoa1VuaWNo
YXJTdHJlYW1Mb2FkZXJDSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0NP
TVR5cGVJbmZvPG5zSVVuaWNoYXJTdHJlYW1Mb2FkZXI+OjpHZXRJSUQoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR0ZXJfQWRkUmVmcyhsb2FkZXIpKTsK
ICAgIGlmICgoKHJ2KSAmIDB4ODAwMDAwMDApKSByZXR1cm4gcnY7CiAgICBydiA9IGxvYWRlci0+
SW5pdChhQ2hhbm5lbCwgYU9ic2VydmVyLCBhQ29udGV4dCwgYVNlZ21lbnRTaXplKTsKCiAgICBp
ZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2OwogICAgKmFSZXN1bHQgPSBsb2FkZXI7
CiAgICAoKmFSZXN1bHQpLT5BZGRSZWYoKTsKICAgIHJldHVybiBydjsKfQoKaW5saW5lIG5zcmVz
dWx0Ck5TX05ld1JlcXVlc3RPYnNlcnZlclByb3h5KG5zSVJlcXVlc3RPYnNlcnZlciAqKmFSZXN1
bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVJlcXVlc3RPYnNlcnZlciAqYU9ic2Vy
dmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lFdmVudFF1ZXVlICphRXZlbnRRPTAp
CnsKICAgIGRvIHsgaWYgKCEoYVJlc3VsdCkpIHsgOyByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAw
NDAwM0wpOyB9IH0gd2hpbGUgKDApOwoKICAgIG5zcmVzdWx0IHJ2OwogICAgbnNDT01QdHI8bnNJ
UmVxdWVzdE9ic2VydmVyUHJveHk+IHByb3h5OwogICAgc3RhdGljIGNvbnN0IG5zQ0lEIGtSZXF1
ZXN0T2JzZXJ2ZXJQcm94eUNJRCA9IHsgMHg1MWZhMjhjNywgMHg3NGMwLCAweDRiODUsIHsweDlj
LCAweDQ2LCAweGQwLCAweDNmLCAweGFhLCAweDdiLCAweDY5LCAweDZifSB9OwoKICAgIHJ2ID0g
bnNDb21wb25lbnRNYW5hZ2VyOjpDcmVhdGVJbnN0YW5jZShrUmVxdWVzdE9ic2VydmVyUHJveHlD
SUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0NPTVR5cGVJbmZvPG5zSVJl
cXVlc3RPYnNlcnZlclByb3h5Pjo6R2V0SUlEKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2V0dGVyX0FkZFJlZnMocHJveHkpKTsKICAgIGlmICgoKHJ2KSAm
IDB4ODAwMDAwMDApKSByZXR1cm4gcnY7CgogICAgcnYgPSBwcm94eS0+SW5pdChhT2JzZXJ2ZXIs
IGFFdmVudFEpOwogICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKCiAgICBy
ZXR1cm4gQ2FsbFF1ZXJ5SW50ZXJmYWNlKHByb3h5LCBhUmVzdWx0KTsKfQoKaW5saW5lIG5zcmVz
dWx0Ck5TX05ld1NpbXBsZVN0cmVhbUxpc3RlbmVyKG5zSVN0cmVhbUxpc3RlbmVyICoqYVJlc3Vs
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJT3V0cHV0U3RyZWFtICphU2luaywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnNJUmVxdWVzdE9ic2VydmVyICphT2JzZXJ2ZXI9MCkK
ewogICAgZG8geyBpZiAoIShhUmVzdWx0KSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDA0
MDAzTCk7IH0gfSB3aGlsZSAoMCk7CgogICAgbnNyZXN1bHQgcnY7CiAgICBuc0NPTVB0cjxuc0lT
aW1wbGVTdHJlYW1MaXN0ZW5lcj4gbGlzdGVuZXI7CiAgICBzdGF0aWMgY29uc3QgbnNDSUQga1Np
bXBsZVN0cmVhbUxpc3RlbmVyQ0lEID0geyAweGZiOGNiZjRlLCAweDQ3MDEsIDB4NGJhMSwgezB4
YjEsIDB4ZDYsIDB4NTMsIDB4ODgsIDB4ZTAsIDB4NDEsIDB4ZmIsIDB4Njd9IH07CiAgICBydiA9
IG5zQ29tcG9uZW50TWFuYWdlcjo6Q3JlYXRlSW5zdGFuY2Uoa1NpbXBsZVN0cmVhbUxpc3RlbmVy
Q0lELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNDT01UeXBlSW5mbzxuc0lT
aW1wbGVTdHJlYW1MaXN0ZW5lcj46OkdldElJRCgpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdldHRlcl9BZGRSZWZzKGxpc3RlbmVyKSk7CiAgICBpZiAoKChy
dikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2OwoKICAgIHJ2ID0gbGlzdGVuZXItPkluaXQoYVNp
bmssIGFPYnNlcnZlcik7CiAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2OwoK
ICAgICgqYVJlc3VsdCA9IGxpc3RlbmVyKS0+QWRkUmVmKCk7CiAgICByZXR1cm4gMDsKfQoKCmlu
bGluZSBuc3Jlc3VsdApOU19OZXdBc3luY1N0cmVhbUxpc3RlbmVyKG5zSVN0cmVhbUxpc3RlbmVy
ICoqcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN0cmVhbUxpc3RlbmVyICpy
ZWNlaXZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lFdmVudFF1ZXVlICpldmVudFF1
ZXVlKQp7CiAgICBuc3Jlc3VsdCBydjsKICAgIG5zQ09NUHRyPG5zSUFzeW5jU3RyZWFtTGlzdGVu
ZXI+IGxzbnI7CiAgICBzdGF0aWMgY29uc3QgbnNDSUQga0FzeW5jU3RyZWFtTGlzdGVuZXJDSUQg
PSB7IDB4NjAwNDdiYjIsIDB4OTFjMCwgMHgxMWQzLCB7MHg4YywgMHhkOSwgMHgwMCwgMHg2MCwg
MHhiMCwgMHhmYywgMHgxNCwgMHhhM30gfTsKICAgIHJ2ID0gbnNDb21wb25lbnRNYW5hZ2VyOjpD
cmVhdGVJbnN0YW5jZShrQXN5bmNTdHJlYW1MaXN0ZW5lckNJRCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5zQ09NVHlwZUluZm88bnNJQXN5bmNTdHJlYW1MaXN0ZW5lcj46Okdl
dElJRCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHRl
cl9BZGRSZWZzKGxzbnIpKTsKICAgIGlmICgoKHJ2KSAmIDB4ODAwMDAwMDApKSByZXR1cm4gcnY7
CiAgICBydiA9IGxzbnItPkluaXQocmVjZWl2ZXIsIGV2ZW50UXVldWUpOwogICAgaWYgKCgocnYp
ICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKCiAgICAoKnJlc3VsdCA9IGxzbnIpLT5BZGRSZWYo
KTsKICAgIHJldHVybiAwOwp9CgppbmxpbmUgbnNyZXN1bHQKTlNfQ2hlY2tQb3J0U2FmZXR5KFBS
SW50MzIgcG9ydCwgY29uc3QgY2hhciogc2NoZW1lLCBuc0lJT1NlcnZpY2UqIGlvU2VydmljZSA9
IDApCnsKICAgIG5zcmVzdWx0IHJ2OwoKICAgIG5zQ09NUHRyPG5zSUlPU2VydmljZT4gc2VydjsK
ICAgIGlmIChpb1NlcnZpY2UgPT0gMCkgewogICAgICAgIHNlcnYgPSBkb19HZXRJT1NlcnZpY2Uo
JnJ2KTsKICAgICAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2OwogICAgICAg
IGlvU2VydmljZSA9IHNlcnYuZ2V0KCk7CiAgICB9CgogICAgUFJCb29sIGFsbG93OwoKICAgIHJ2
ID0gaW9TZXJ2aWNlLT5BbGxvd1BvcnQocG9ydCwgc2NoZW1lLCAmYWxsb3cpOwogICAgaWYgKCgo
cnYpICYgMHg4MDAwMDAwMCkpIHsKICAgICAgICA7CiAgICAgICAgcmV0dXJuIHJ2OwogICAgfQoK
ICAgIGlmICghYWxsb3cpCiAgICAgICAgcmV0dXJuICgobnNyZXN1bHQpICgoKFBSVWludDMyKSgx
KTw8MzEpIHwgKChQUlVpbnQzMikoNiArMHg0NSk8PDE2KSB8ICgoUFJVaW50MzIpKDE5KSkpICk7
CgogICAgcmV0dXJuIDA7Cn0KCmlubGluZSBuc3Jlc3VsdApOU19OZXdQcm94eUluZm8oY29uc3Qg
Y2hhciogdHlwZSwgY29uc3QgY2hhciogaG9zdCwgUFJJbnQzMiBwb3J0LCBuc0lQcm94eUluZm8q
ICpyZXN1bHQpCnsKICAgIG5zcmVzdWx0IHJ2OwoKICAgIHN0YXRpYyBjb25zdCBuc0NJRCBrUFBT
U2VydmljZUNJRCA9IHsgMHhlOWIzMDFjMCwgMHhlMGU0LCAweDExZDMsIHsgMHhhMSwgMHhhOCwg
MHgwLCAweDUwLCAweDQsIDB4MWMsIDB4YWYsIDB4NDQgfSB9OwogICAgbnNDT01QdHI8bnNJUHJv
dG9jb2xQcm94eVNlcnZpY2U+IHBwcyA9IGRvX0dldFNlcnZpY2Uoa1BQU1NlcnZpY2VDSUQsJnJ2
KTsKCiAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2OwoKICAgIHJldHVybiBw
cHMtPk5ld1Byb3h5SW5mbyh0eXBlLCBob3N0LCBwb3J0LCByZXN1bHQpOwp9CgppbmxpbmUgbnNy
ZXN1bHQKTlNfR2V0RmlsZVByb3RvY29sSGFuZGxlcihuc0lGaWxlUHJvdG9jb2xIYW5kbGVyICoq
cmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUlPU2VydmljZSAqaW9TZXJ2aWNl
PTApCnsKICAgIG5zcmVzdWx0IHJ2OwoKICAgIG5zQ09NUHRyPG5zSUlPU2VydmljZT4gc2VydjsK
ICAgIGlmIChpb1NlcnZpY2UgPT0gMCkgewogICAgICAgIHNlcnYgPSBkb19HZXRJT1NlcnZpY2Uo
JnJ2KTsKICAgICAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2OwogICAgICAg
IGlvU2VydmljZSA9IHNlcnYuZ2V0KCk7CiAgICB9CgogICAgbnNDT01QdHI8bnNJUHJvdG9jb2xI
YW5kbGVyPiBoYW5kbGVyOwogICAgcnYgPSBpb1NlcnZpY2UtPkdldFByb3RvY29sSGFuZGxlcigi
ZmlsZSIsIGdldHRlcl9BZGRSZWZzKGhhbmRsZXIpKTsKICAgIGlmICgoKHJ2KSAmIDB4ODAwMDAw
MDApKSByZXR1cm4gcnY7CgogICAgcmV0dXJuIENhbGxRdWVyeUludGVyZmFjZShoYW5kbGVyLCBy
ZXN1bHQpOwp9CgppbmxpbmUgbnNyZXN1bHQKTlNfR2V0RmlsZUZyb21VUkxTcGVjKGNvbnN0IG5z
QUNTdHJpbmcgJmluVVJMLCBuc0lGaWxlICoqcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAg
bnNJSU9TZXJ2aWNlICppb1NlcnZpY2U9MCkKewogICAgbnNDT01QdHI8bnNJRmlsZVByb3RvY29s
SGFuZGxlcj4gZmlsZUhhbmRsZXI7CiAgICBuc3Jlc3VsdCBydiA9IE5TX0dldEZpbGVQcm90b2Nv
bEhhbmRsZXIoZ2V0dGVyX0FkZFJlZnMoZmlsZUhhbmRsZXIpLCBpb1NlcnZpY2UpOwogICAgaWYg
KCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKCiAgICByZXR1cm4gZmlsZUhhbmRsZXIt
PkdldEZpbGVGcm9tVVJMU3BlYyhpblVSTCwgcmVzdWx0KTsKfQoKaW5saW5lIG5zcmVzdWx0Ck5T
X0dldFVSTFNwZWNGcm9tRmlsZShuc0lGaWxlKiBhRmlsZSwgbnNBQ1N0cmluZyAmYVVybCwKICAg
ICAgICAgICAgICAgICAgICAgIG5zSUlPU2VydmljZSAqaW9TZXJ2aWNlPTApCnsKICAgIG5zQ09N
UHRyPG5zSUZpbGVQcm90b2NvbEhhbmRsZXI+IGZpbGVIYW5kbGVyOwogICAgbnNyZXN1bHQgcnYg
PSBOU19HZXRGaWxlUHJvdG9jb2xIYW5kbGVyKGdldHRlcl9BZGRSZWZzKGZpbGVIYW5kbGVyKSwg
aW9TZXJ2aWNlKTsKICAgIGlmICgoKHJ2KSAmIDB4ODAwMDAwMDApKSByZXR1cm4gcnY7CgogICAg
cmV0dXJuIGZpbGVIYW5kbGVyLT5HZXRVUkxTcGVjRnJvbUZpbGUoYUZpbGUsIGFVcmwpOwp9Cgpp
bmxpbmUgbnNyZXN1bHQKTlNfTmV3UmVzdW1hYmxlRW50aXR5SUQobnNJUmVzdW1hYmxlRW50aXR5
SUQqKiBhUmVzLAogICAgICAgICAgICAgICAgICAgICAgICBQUlVpbnQzMiBzaXplLAogICAgICAg
ICAgICAgICAgICAgICAgICBQUlRpbWUgbGFzdE1vZGlmaWVkKQp7CiAgICBuc3Jlc3VsdCBydjsK
ICAgIG5zQ09NUHRyPG5zSVJlc3VtYWJsZUVudGl0eUlEPiBlbnQgPQogICAgICAgIGRvX0NyZWF0
ZUluc3RhbmNlKCJAbW96aWxsYS5vcmcvbmV0d29yay9yZXN1bWFibGUtZW50aXR5LWlkOzEiLCZy
dik7CiAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2OwoKICAgIGVudC0+U2V0
U2l6ZShzaXplKTsKICAgIGVudC0+U2V0TGFzdE1vZGlmaWVkKGxhc3RNb2RpZmllZCk7CgogICAg
KmFSZXMgPSBlbnQ7CiAgICAoKmFSZXMpLT5BZGRSZWYoKTsKICAgIHJldHVybiAwOwp9Cgppbmxp
bmUgbnNyZXN1bHQKTlNfRXhhbWluZUZvclByb3h5KGNvbnN0IGNoYXIqIHNjaGVtZSwgY29uc3Qg
Y2hhciogaG9zdCwgUFJJbnQzMiBwb3J0LAogICAgICAgICAgICAgICAgICAgbnNJUHJveHlJbmZv
KiAqcHJveHlJbmZvKQp7CiAgICBuc3Jlc3VsdCBydjsKCiAgICBzdGF0aWMgY29uc3QgbnNDSUQg
a1BQU1NlcnZpY2VDSUQgPSB7IDB4ZTliMzAxYzAsIDB4ZTBlNCwgMHgxMWQzLCB7IDB4YTEsIDB4
YTgsIDB4MCwgMHg1MCwgMHg0LCAweDFjLCAweGFmLCAweDQ0IH0gfTsKICAgIG5zQ09NUHRyPG5z
SVByb3RvY29sUHJveHlTZXJ2aWNlPiBwcHMgPSBkb19HZXRTZXJ2aWNlKGtQUFNTZXJ2aWNlQ0lE
LCZydik7CgogICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKCiAgICBuc0NB
dXRvU3RyaW5nIHNwZWMoc2NoZW1lKTsKICAgIHNwZWMuQXBwZW5kKCI6Ly8iKTsKICAgIHNwZWMu
QXBwZW5kKGhvc3QpOwogICAgc3BlYy5BcHBlbmQoJzonKTsKICAgIHNwZWMuQXBwZW5kSW50KHBv
cnQpOwoKCgoKCgoKICAgIHN0YXRpYyBjb25zdCBuc0NJRCBrU1REVVJMQ0lEID0geyAweGRlOTQ3
MmQwLCAweDgwMzQsIDB4MTFkMywgezB4OTMsIDB4OTksIDB4MDAsIDB4MTAsIDB4NGIsIDB4YTAs
IDB4ZmQsIDB4NDB9IH07CiAgICBuc0NPTVB0cjxuc0lVUkk+IHVyaSA9IGRvX0NyZWF0ZUluc3Rh
bmNlKGtTVERVUkxDSUQsICZydik7CiAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJu
IHJ2OwogICAgcnYgPSB1cmktPlNldFNwZWMoc3BlYyk7CiAgICBpZiAoKChydikgJiAweDgwMDAw
MDAwKSkgcmV0dXJuIHJ2OwoKICAgIHJldHVybiBwcHMtPkV4YW1pbmVGb3JQcm94eSh1cmksIHBy
b3h5SW5mbyk7Cn0KCmlubGluZSBuc3Jlc3VsdApOU19QYXJzZUNvbnRlbnRUeXBlKGNvbnN0IG5z
QUNTdHJpbmcgJnJhd0NvbnRlbnRUeXBlLAogICAgICAgICAgICAgICAgICAgIG5zQ1N0cmluZyAm
Y29udGVudFR5cGUsCiAgICAgICAgICAgICAgICAgICAgbnNDU3RyaW5nICZjb250ZW50Q2hhcnNl
dCkKewoKICAgIG5zQUNTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yIGJlZ2luLCBpdCwgZW5kOwogICAg
aXQgPSByYXdDb250ZW50VHlwZS5CZWdpblJlYWRpbmcoYmVnaW4pOwogICAgcmF3Q29udGVudFR5
cGUuRW5kUmVhZGluZyhlbmQpOwogICAgaWYgKEZpbmRDaGFySW5SZWFkYWJsZSgnOycsIGl0LCBl
bmQpKSB7CiAgICAgICAgY29udGVudFR5cGUgPSBTdWJzdHJpbmcoYmVnaW4sIGl0KTsKCiAgICAg
ICAgYmVnaW4gPSArK2l0OwogICAgICAgIGlmIChGaW5kSW5SZWFkYWJsZShuc0RlcGVuZGVudENT
dHJpbmcoImNoYXJzZXQ9IiwgUFJVaW50MzIoc2l6ZW9mKCJjaGFyc2V0PSIpLTEpKSwgYmVnaW4s
IGl0ID0gZW5kKSkgewogICAgICAgICAgICBjb250ZW50Q2hhcnNldCA9IFN1YnN0cmluZyhpdCwg
ZW5kKTsKICAgICAgICAgICAgY29udGVudENoYXJzZXQuU3RyaXBXaGl0ZXNwYWNlKCk7CiAgICAg
ICAgfQogICAgfQogICAgZWxzZQogICAgICAgIGNvbnRlbnRUeXBlID0gcmF3Q29udGVudFR5cGU7
CiAgICBUb0xvd2VyQ2FzZShjb250ZW50VHlwZSk7CiAgICBjb250ZW50VHlwZS5TdHJpcFdoaXRl
c3BhY2UoKTsKICAgIHJldHVybiAwOwp9CgppbmxpbmUgbnNyZXN1bHQKTlNfTmV3TG9jYWxGaWxl
SW5wdXRTdHJlYW0obnNJSW5wdXRTdHJlYW0qKiBhUmVzdWx0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICBuc0lGaWxlKiBhRmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJJbnQz
MiBhSU9GbGFncyA9IC0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICBQUkludDMyIGFQZXJt
ID0gLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSSW50MzIgYUJlaGF2aW9yRmxhZ3Mg
PSAwKQp7CiAgICBuc3Jlc3VsdCBydjsKICAgIG5zQ09NUHRyPG5zSUZpbGVJbnB1dFN0cmVhbT4g
aW47CiAgICBzdGF0aWMgY29uc3QgbnNDSUQga0xvY2FsRmlsZUlucHV0U3RyZWFtQ0lEID0geyAw
eGJlOWE1M2FlLCAweGM3ZTksIDB4MTFkMywgezB4OGMsIDB4ZGEsIDB4MDAsIDB4NjAsIDB4YjAs
IDB4ZmMsIDB4MTQsIDB4YTN9IH07CiAgICBydiA9IG5zQ29tcG9uZW50TWFuYWdlcjo6Q3JlYXRl
SW5zdGFuY2Uoa0xvY2FsRmlsZUlucHV0U3RyZWFtQ0lELAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnNDT01UeXBlSW5mbzxuc0lGaWxlSW5wdXRTdHJlYW0+OjpHZXRJSUQoKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR0ZXJfQWRkUmVm
cyhpbikpOwogICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKICAgIHJ2ID0g
aW4tPkluaXQoYUZpbGUsIGFJT0ZsYWdzLCBhUGVybSwgYUJlaGF2aW9yRmxhZ3MpOwogICAgaWYg
KCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKCiAgICAqYVJlc3VsdCA9IGluOwogICAg
KCphUmVzdWx0KS0+QWRkUmVmKCk7CiAgICByZXR1cm4gMDsKfQoKaW5saW5lIG5zcmVzdWx0Ck5T
X05ld0xvY2FsRmlsZU91dHB1dFN0cmVhbShuc0lPdXRwdXRTdHJlYW0qKiBhUmVzdWx0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnNJRmlsZSogYUZpbGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQUkludDMyIGFJT0ZsYWdzID0gLTEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQUkludDMyIGFQZXJtID0gLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUklu
dDMyIGFCZWhhdmlvckZsYWdzID0gMCkKewogICAgbnNyZXN1bHQgcnY7CiAgICBuc0NPTVB0cjxu
c0lGaWxlT3V0cHV0U3RyZWFtPiBvdXQ7CiAgICBzdGF0aWMgY29uc3QgbnNDSUQga0xvY2FsRmls
ZU91dHB1dFN0cmVhbUNJRCA9IHsgMHhjMjcyZmVlMCwgMHhjN2U5LCAweDExZDMsIHsweDhjLCAw
eGRhLCAweDAwLCAweDYwLCAweGIwLCAweGZjLCAweDE0LCAweGEzfSB9OwogICAgcnYgPSBuc0Nv
bXBvbmVudE1hbmFnZXI6OkNyZWF0ZUluc3RhbmNlKGtMb2NhbEZpbGVPdXRwdXRTdHJlYW1DSUQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0NPTVR5cGVJbmZvPG5zSUZpbGVP
dXRwdXRTdHJlYW0+OjpHZXRJSUQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnZXR0ZXJfQWRkUmVmcyhvdXQpKTsKICAgIGlmICgoKHJ2KSAmIDB4ODAwMDAw
MDApKSByZXR1cm4gcnY7CiAgICBydiA9IG91dC0+SW5pdChhRmlsZSwgYUlPRmxhZ3MsIGFQZXJt
LCBhQmVoYXZpb3JGbGFncyk7CiAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2
OwoKICAgICphUmVzdWx0ID0gb3V0OwogICAgKCphUmVzdWx0KS0+QWRkUmVmKCk7CiAgICByZXR1
cm4gMDsKfQoKaW5saW5lIG5zcmVzdWx0Ck5TX05ld0J1ZmZlcmVkSW5wdXRTdHJlYW0obnNJSW5w
dXRTdHJlYW0qKiBhUmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUlucHV0U3Ry
ZWFtKiBhU3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgIFBSVWludDMyIGFCdWZmZXJTaXpl
KQp7CiAgICBuc3Jlc3VsdCBydjsKICAgIG5zQ09NUHRyPG5zSUJ1ZmZlcmVkSW5wdXRTdHJlYW0+
IGluOwogICAgc3RhdGljIGNvbnN0IG5zQ0lEIGtCdWZmZXJlZElucHV0U3RyZWFtQ0lEID0geyAw
eDkyMjY4ODhlLCAweGRhMDgsIDB4MTFkMywgezB4OGMsIDB4ZGEsIDB4MDAsIDB4NjAsIDB4YjAs
IDB4ZmMsIDB4MTQsIDB4YTN9IH07CiAgICBydiA9IG5zQ29tcG9uZW50TWFuYWdlcjo6Q3JlYXRl
SW5zdGFuY2Uoa0J1ZmZlcmVkSW5wdXRTdHJlYW1DSUQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuc0NPTVR5cGVJbmZvPG5zSUJ1ZmZlcmVkSW5wdXRTdHJlYW0+OjpHZXRJSUQo
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR0ZXJfQWRk
UmVmcyhpbikpOwogICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKICAgIHJ2
ID0gaW4tPkluaXQoYVN0ciwgYUJ1ZmZlclNpemUpOwogICAgaWYgKCgocnYpICYgMHg4MDAwMDAw
MCkpIHJldHVybiBydjsKCiAgICAqYVJlc3VsdCA9IGluOwogICAgKCphUmVzdWx0KS0+QWRkUmVm
KCk7CiAgICByZXR1cm4gMDsKfQoKaW5saW5lIG5zcmVzdWx0Ck5TX05ld0J1ZmZlcmVkT3V0cHV0
U3RyZWFtKG5zSU91dHB1dFN0cmVhbSoqIGFSZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5zSU91dHB1dFN0cmVhbSogYVN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJV
aW50MzIgYUJ1ZmZlclNpemUpCnsKICAgIG5zcmVzdWx0IHJ2OwogICAgbnNDT01QdHI8bnNJQnVm
ZmVyZWRPdXRwdXRTdHJlYW0+IG91dDsKICAgIHN0YXRpYyBjb25zdCBuc0NJRCBrQnVmZmVyZWRP
dXRwdXRTdHJlYW1DSUQgPSB7IDB4OTg2OGI0Y2UsIDB4ZGEwOCwgMHgxMWQzLCB7MHg4YywgMHhk
YSwgMHgwMCwgMHg2MCwgMHhiMCwgMHhmYywgMHgxNCwgMHhhM30gfTsKICAgIHJ2ID0gbnNDb21w
b25lbnRNYW5hZ2VyOjpDcmVhdGVJbnN0YW5jZShrQnVmZmVyZWRPdXRwdXRTdHJlYW1DSUQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0NPTVR5cGVJbmZvPG5zSUJ1ZmZlcmVk
T3V0cHV0U3RyZWFtPjo6R2V0SUlEKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2V0dGVyX0FkZFJlZnMob3V0KSk7CiAgICBpZiAoKChydikgJiAweDgwMDAw
MDAwKSkgcmV0dXJuIHJ2OwogICAgcnYgPSBvdXQtPkluaXQoYVN0ciwgYUJ1ZmZlclNpemUpOwog
ICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKCiAgICAqYVJlc3VsdCA9IG91
dDsKICAgICgqYVJlc3VsdCktPkFkZFJlZigpOwogICAgcmV0dXJuIDA7Cn0KCmlubGluZSBuc3Jl
c3VsdApOU19OZXdQb3N0RGF0YVN0cmVhbShuc0lJbnB1dFN0cmVhbSAqKnJlc3VsdCwKICAgICAg
ICAgICAgICAgICAgICAgUFJCb29sIGlzRmlsZSwKICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
bnNBQ1N0cmluZyAmZGF0YSwKICAgICAgICAgICAgICAgICAgICAgUFJVaW50MzIgZW5jb2RlRmxh
Z3MsCiAgICAgICAgICAgICAgICAgICAgIG5zSUlPU2VydmljZSogaW9TZXJ2aWNlID0gMCkKewog
ICAgbnNyZXN1bHQgcnY7CgogICAgaWYgKGlzRmlsZSkgewogICAgICAgIG5zQ09NUHRyPG5zSUxv
Y2FsRmlsZT4gZmlsZTsKICAgICAgICBuc0NPTVB0cjxuc0lJbnB1dFN0cmVhbT4gZmlsZVN0cmVh
bTsKCiAgICAgICAgcnYgPSBOU19OZXdOYXRpdmVMb2NhbEZpbGUoZGF0YSwgMCwgZ2V0dGVyX0Fk
ZFJlZnMoZmlsZSkpOwogICAgICAgIGlmICgoKHJ2KSAmIDB4ODAwMDAwMDApKSByZXR1cm4gcnY7
CgogICAgICAgIHJ2ID0gTlNfTmV3TG9jYWxGaWxlSW5wdXRTdHJlYW0oZ2V0dGVyX0FkZFJlZnMo
ZmlsZVN0cmVhbSksIGZpbGUpOwogICAgICAgIGlmICgoKHJ2KSAmIDB4ODAwMDAwMDApKSByZXR1
cm4gcnY7CgoKICAgICAgICByZXR1cm4gTlNfTmV3QnVmZmVyZWRJbnB1dFN0cmVhbShyZXN1bHQs
IGZpbGVTdHJlYW0sIDgxOTIpOwogICAgfQoKCiAgICByZXR1cm4gTlNfTmV3Q1N0cmluZ0lucHV0
U3RyZWFtKHJlc3VsdCwgZGF0YSk7Cn0KIyAzNiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdp
bi9uc0lQbHVnaW5Ib3N0LmgiIDIKCmNsYXNzIG5zSVBsdWdpbjsKCmNsYXNzIG5zSVVSSTsKCmNs
YXNzIG5zSURPTVBsdWdpbjsKIyA1MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQ
bHVnaW5Ib3N0LmgiCmNsYXNzIG5zSVBsdWdpbkhvc3QgOiBwdWJsaWMgbnNJRmFjdG9yeSB7CiBw
dWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJ
RCBpaWQgPSB7MHgyNjRjMDY0MCwgMHgxYzMxLCAweDExZDIsIHsgMHhhOCwgMHgyZSwgMHgwMCwg
MHg0MCwgMHg5NSwgMHg5YSwgMHgyOCwgMHhjOSB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEluaXQodm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBEZXN0cm95KHZv
aWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgTG9hZFBsdWdpbnModm9pZCkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRQbHVnaW5GYWN0b3J5KGNvbnN0IGNoYXIgKmFNaW1lVHlwZSwg
bnNJUGx1Z2luICoqYVBsdWdpbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJbnN0YW50aWF0
ZUVtYmVkZWRQbHVnaW4oY29uc3QgY2hhciAqYU1pbWVUeXBlLCBuc0lVUkkgKmFVUkwsIG5zSVBs
dWdpbkluc3RhbmNlT3duZXIgKmFPd25lcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJbnN0
YW50aWF0ZUZ1bGxQYWdlUGx1Z2luKGNvbnN0IGNoYXIgKmFNaW1lVHlwZSwgbnNTdHJpbmcgJiBh
VVJMU3BlYywgbnNJU3RyZWFtTGlzdGVuZXIgKiAmIGFTdHJlYW1MaXN0ZW5lciwgbnNJUGx1Z2lu
SW5zdGFuY2VPd25lciAqYU93bmVyKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFVwUGx1
Z2luSW5zdGFuY2UoY29uc3QgY2hhciAqYU1pbWVUeXBlLCBuc0lVUkkgKmFVUkwsIG5zSVBsdWdp
bkluc3RhbmNlT3duZXIgKmFPd25lcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJc1BsdWdp
bkVuYWJsZWRGb3JUeXBlKGNvbnN0IGNoYXIgKmFNaW1lVHlwZSkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBJc1BsdWdpbkVuYWJsZWRGb3JFeHRlbnNpb24oY29uc3QgY2hhciAqYUV4dGVuc2lv
biwgY29uc3QgY2hhciAqICYgYU1pbWVUeXBlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dFBsdWdpbkNvdW50KFBSVWludDMyICphUGx1Z2luQ291bnQpID0gMDsKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRQbHVnaW5zKFBSVWludDMyIGFQbHVnaW5Db3VudCwgbnNJRE9NUGx1Z2luKiBhUGx1
Z2luQXJyYXlbXSkgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IFN0b3BQbHVnaW5JbnN0YW5jZShu
c0lQbHVnaW5JbnN0YW5jZSAqYUluc3RhbmNlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEhh
bmRsZUJhZFBsdWdpbihQUkxpYnJhcnkgKiBhTGlicmFyeSwgbnNJUGx1Z2luSW5zdGFuY2UgKmlu
c3RhbmNlKSA9IDA7Cgp9OwojIDI1MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQ
bHVnaW5Ib3N0LmgiCmlubGluZSBuc3Jlc3VsdApOU19OZXdQbHVnaW5Qb3N0RGF0YVN0cmVhbShu
c0lJbnB1dFN0cmVhbSAqKnJlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJVaW50MzIgY29udGVudExl
bmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJCb29sIGlzRmlsZSA9IDAsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCBoZWFkZXJzID0gMCkKewogIG5zcmVzdWx0IHJ2
ID0gKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwpOwogIGlmICghZGF0YSkKICAgIHJldHVybiBydjsK
ICBpZiAoIWlzRmlsZSkgewogICAgaWYgKGNvbnRlbnRMZW5ndGggPCAxKQogICAgICByZXR1cm4g
cnY7CgogICAgY2hhciAqYnVmID0gKGNoYXIqKSBkYXRhOwogICAgaWYgKGhlYWRlcnMpIHsKCiAg
ICAgIGlmICghKGJ1ZiA9IChjaGFyKiluc01lbW9yeTo6QWxsb2MoY29udGVudExlbmd0aCkpKQog
ICAgICAgIHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7CiAgICAgIG1lbWNweShidWYs
IGRhdGEsIGNvbnRlbnRMZW5ndGgpOwogICAgfQogICAgbnNDT01QdHI8bnNJU3RyaW5nSW5wdXRT
dHJlYW0+IHNpcyA9IGRvX0NyZWF0ZUluc3RhbmNlKCJAbW96aWxsYS5vcmcvaW8vc3RyaW5nLWlu
cHV0LXN0cmVhbTsxIiwmcnYpOwogICAgaWYgKCghKChydikgJiAweDgwMDAwMDAwKSkpIHsKICAg
ICAgc2lzLT5BZG9wdERhdGEoYnVmLCBjb250ZW50TGVuZ3RoKTsKICAgICAgcnYgPSBDYWxsUXVl
cnlJbnRlcmZhY2Uoc2lzLCByZXN1bHQpOwogICAgfQogIH0gZWxzZSB7CiAgICBuc0NPTVB0cjxu
c0lMb2NhbEZpbGU+IGZpbGU7CiAgICBuc0NPTVB0cjxuc0lJbnB1dFN0cmVhbT4gZmlsZVN0cmVh
bTsKICAgIGlmICgoISgocnYgPSBOU19OZXdOYXRpdmVMb2NhbEZpbGUobnNEZXBlbmRlbnRDU3Ry
aW5nKGRhdGEpLCAwLCBnZXR0ZXJfQWRkUmVmcyhmaWxlKSkpICYgMHg4MDAwMDAwMCkpICYmCiAg
ICAgICAgKCEoKHJ2ID0gTlNfTmV3TG9jYWxGaWxlSW5wdXRTdHJlYW0oZ2V0dGVyX0FkZFJlZnMo
ZmlsZVN0cmVhbSksIGZpbGUsIDB4MDEsIDA2MDAsIG5zSUZpbGVJbnB1dFN0cmVhbTo6REVMRVRF
X09OX0NMT1NFIHwgbnNJRmlsZUlucHV0U3RyZWFtOjpDTE9TRV9PTl9FT0YpKSAmIDB4ODAwMDAw
MDApKQoKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICB7Cgog
ICAgICByZXR1cm4gTlNfTmV3QnVmZmVyZWRJbnB1dFN0cmVhbShyZXN1bHQsIGZpbGVTdHJlYW0s
IDgxOTIpOwogICAgfQogIH0KICByZXR1cm4gcnY7Cn0KIyAxMjMgIm5zRE9NQ2xhc3NJbmZvLmNw
cCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNQSVBsdWdpbkhvc3QuaCIg
MQojIDIxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zUElQbHVnaW5Ib3N0LmgiCiMg
MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc1BsdWdpbk5hdGl2ZVdpbmRvdy5oIiAx
CiMgNTIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNQbHVnaW5OYXRpdmVXaW5kb3cu
aCIKY2xhc3MgbnNQbHVnaW5OYXRpdmVXaW5kb3cgOiBwdWJsaWMgbnNQbHVnaW5XaW5kb3cKewpw
dWJsaWM6CiAgbnNQbHVnaW5OYXRpdmVXaW5kb3coKSA6IG5zUGx1Z2luV2luZG93KCkge30KICB2
aXJ0dWFsIH5uc1BsdWdpbk5hdGl2ZVdpbmRvdygpIHt9CiMgNjggIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9wbHVnaW4vbnNQbHVnaW5OYXRpdmVXaW5kb3cuaCIKcHVibGljOgogIG5zcmVzdWx0IEdl
dFBsdWdpbkluc3RhbmNlKG5zQ09NUHRyPG5zSVBsdWdpbkluc3RhbmNlPiAmYVBsdWdpbkluc3Rh
bmNlKSB7CiAgICBhUGx1Z2luSW5zdGFuY2UgPSBtUGx1Z2luSW5zdGFuY2U7CiAgICByZXR1cm4g
MDsKICB9CiAgbnNyZXN1bHQgU2V0UGx1Z2luSW5zdGFuY2UobnNJUGx1Z2luSW5zdGFuY2UgKmFQ
bHVnaW5JbnN0YW5jZSkgewogICAgaWYgKG1QbHVnaW5JbnN0YW5jZSAhPSBhUGx1Z2luSW5zdGFu
Y2UpCiAgICAgIG1QbHVnaW5JbnN0YW5jZSA9IGFQbHVnaW5JbnN0YW5jZTsKICAgIHJldHVybiAw
OwogIH0KCnB1YmxpYzoKICB2aXJ0dWFsIG5zcmVzdWx0IENhbGxTZXRXaW5kb3cobnNDT01QdHI8
bnNJUGx1Z2luSW5zdGFuY2U+ICZhUGx1Z2luSW5zdGFuY2UpIHsKCiAgICBpZiAoYVBsdWdpbklu
c3RhbmNlKQogICAgICBhUGx1Z2luSW5zdGFuY2UtPlNldFdpbmRvdyh0aGlzKTsKICAgIGVsc2Ug
aWYgKG1QbHVnaW5JbnN0YW5jZSkKICAgICAgbVBsdWdpbkluc3RhbmNlLT5TZXRXaW5kb3coMCk7
CgogICAgU2V0UGx1Z2luSW5zdGFuY2UoYVBsdWdpbkluc3RhbmNlKTsKICAgIHJldHVybiAwOwog
IH0KCnByb3RlY3RlZDoKICBuc0NPTVB0cjxuc0lQbHVnaW5JbnN0YW5jZT4gbVBsdWdpbkluc3Rh
bmNlOwp9OwoKbnNyZXN1bHQgUExVR19OZXdQbHVnaW5OYXRpdmVXaW5kb3cobnNQbHVnaW5OYXRp
dmVXaW5kb3cgKiogYVBsdWdpbk5hdGl2ZVdpbmRvdyk7Cm5zcmVzdWx0IFBMVUdfRGVsZXRlUGx1
Z2luTmF0aXZlV2luZG93KG5zUGx1Z2luTmF0aXZlV2luZG93ICogYVBsdWdpbk5hdGl2ZVdpbmRv
dyk7CiMgMjIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNQSVBsdWdpbkhvc3QuaCIg
MgojIDMwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zUElQbHVnaW5Ib3N0LmgiCmNs
YXNzIG5zUElQbHVnaW5Ib3N0IDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3Rh
dGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDhl
M2Q3MWU2LCAweDIzMTksIDB4MTFkNSwgeyAweDljLCAweGY4LCAweDAwLCAweDYwLCAweGIwLCAw
eGZiLCAweGQ4LCAweGFjIH19OyByZXR1cm4gaWlkO30KCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQg
U2V0SXNTY3JpcHRhYmxlSW5zdGFuY2UobnNJUGx1Z2luSW5zdGFuY2UgKmFJbnN0YW5jZSwgUFJC
b29sIGFTY3JpcHRhYmxlKSA9IDA7CiMgNjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4v
bnNQSVBsdWdpbkhvc3QuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFBhcnNlUG9zdEJ1ZmZlclRvRml4
SGVhZGVycyhjb25zdCBjaGFyICphSW5Qb3N0RGF0YSwgUFJVaW50MzIgYUluUG9zdERhdGFMZW4s
IGNoYXIgKiphT3V0UG9zdERhdGEsIFBSVWludDMyICphT3V0UG9zdERhdGFMZW4pID0gMDsKCgoK
CgogIHZpcnR1YWwgbnNyZXN1bHQgQ3JlYXRlVG1wRmlsZVRvUG9zdChjb25zdCBjaGFyICphUG9z
dERhdGFVUkwsIGNoYXIgKiphVG1wRmlsZU5hbWUpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1
bHQgTmV3UGx1Z2luTmF0aXZlV2luZG93KG5zUGx1Z2luTmF0aXZlV2luZG93ICogKmFQbHVnaW5O
YXRpdmVXaW5kb3cpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgRGVsZXRlUGx1Z2luTmF0
aXZlV2luZG93KG5zUGx1Z2luTmF0aXZlV2luZG93ICogYVBsdWdpbk5hdGl2ZVdpbmRvdykgPSAw
OwoKfTsKIyAxMjQgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgoKCiMgMSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL29qaS9uc0lKVk1NYW5hZ2VyLmgiIDEKIyAxOCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L29qaS9uc0lKVk1NYW5hZ2VyLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2phdmEvam5p
LmgiIDEKIyAzOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2phdmEvam5pLmgiCiMgMSAiL3Vzci9s
aWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMK
IyAxMTAgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9z
dGRhcmcuaCIgMwp0eXBlZGVmIF9fZ251Y192YV9saXN0IHZhX2xpc3Q7CiMgNDAgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9qYXZhL2puaS5oIiAyCgoKCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9qYXZhL2puaV9tZC5oIiAxCiMgMTc4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvamF2YS9qbmlf
bWQuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvamF2YS9qcmlfbWQuaCIgMQojIDQ1ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvamF2YS9qcmlfbWQuaCIKIyAxICIvdXNyL2luY2x1ZGUvYXNz
ZXJ0LmgiIDEgMwojIDQ2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvamF2YS9qcmlfbWQuaCIgMgoK
CgpleHRlcm4gIkMiIHsKIyAxODUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qYXZhL2pyaV9tZC5o
Igp0eXBlZGVmIGNsYXNzIF9qb2JqZWN0ICpqcmVmOwoKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFy
IGpib29sOwp0eXBlZGVmIGNoYXIgamJ5dGU7CgoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcganVp
bnQ7CnR5cGVkZWYgbG9uZyBqaW50OwojIDIzMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2phdmEv
anJpX21kLmgiCnR5cGVkZWYgbG9uZyBsb25nIGpsb25nOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
bG9uZyBqdWxvbmc7CiMgNTYyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvamF2YS9qcmlfbWQuaCIK
fQojIDE3OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2phdmEvam5pX21kLmgiIDIKIyA0NSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2phdmEvam5pLmgiIDIKCgpleHRlcm4gIkMiIHsKCgoKCgoKdHlw
ZWRlZiB1bnNpZ25lZCBjaGFyIGpib29sZWFuOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGpjaGFy
Owp0eXBlZGVmIHNob3J0IGpzaG9ydDsKdHlwZWRlZiBmbG9hdCBqZmxvYXQ7CnR5cGVkZWYgZG91
YmxlIGpkb3VibGU7Cgp0eXBlZGVmIGppbnQganNpemU7CgoKCmNsYXNzIF9qb2JqZWN0IHt9Owpj
bGFzcyBfamNsYXNzIDogcHVibGljIF9qb2JqZWN0IHt9OwpjbGFzcyBfanRocm93YWJsZSA6IHB1
YmxpYyBfam9iamVjdCB7fTsKY2xhc3MgX2pzdHJpbmcgOiBwdWJsaWMgX2pvYmplY3Qge307CmNs
YXNzIF9qYXJyYXkgOiBwdWJsaWMgX2pvYmplY3Qge307CmNsYXNzIF9qYm9vbGVhbkFycmF5IDog
cHVibGljIF9qYXJyYXkge307CmNsYXNzIF9qYnl0ZUFycmF5IDogcHVibGljIF9qYXJyYXkge307
CmNsYXNzIF9qY2hhckFycmF5IDogcHVibGljIF9qYXJyYXkge307CmNsYXNzIF9qc2hvcnRBcnJh
eSA6IHB1YmxpYyBfamFycmF5IHt9OwpjbGFzcyBfamludEFycmF5IDogcHVibGljIF9qYXJyYXkg
e307CmNsYXNzIF9qbG9uZ0FycmF5IDogcHVibGljIF9qYXJyYXkge307CmNsYXNzIF9qZmxvYXRB
cnJheSA6IHB1YmxpYyBfamFycmF5IHt9OwpjbGFzcyBfamRvdWJsZUFycmF5IDogcHVibGljIF9q
YXJyYXkge307CmNsYXNzIF9qb2JqZWN0QXJyYXkgOiBwdWJsaWMgX2phcnJheSB7fTsKCnR5cGVk
ZWYgX2pvYmplY3QgKmpvYmplY3Q7CnR5cGVkZWYgX2pjbGFzcyAqamNsYXNzOwp0eXBlZGVmIF9q
dGhyb3dhYmxlICpqdGhyb3dhYmxlOwp0eXBlZGVmIF9qc3RyaW5nICpqc3RyaW5nOwp0eXBlZGVm
IF9qYXJyYXkgKmphcnJheTsKdHlwZWRlZiBfamJvb2xlYW5BcnJheSAqamJvb2xlYW5BcnJheTsK
dHlwZWRlZiBfamJ5dGVBcnJheSAqamJ5dGVBcnJheTsKdHlwZWRlZiBfamNoYXJBcnJheSAqamNo
YXJBcnJheTsKdHlwZWRlZiBfanNob3J0QXJyYXkgKmpzaG9ydEFycmF5Owp0eXBlZGVmIF9qaW50
QXJyYXkgKmppbnRBcnJheTsKdHlwZWRlZiBfamxvbmdBcnJheSAqamxvbmdBcnJheTsKdHlwZWRl
ZiBfamZsb2F0QXJyYXkgKmpmbG9hdEFycmF5Owp0eXBlZGVmIF9qZG91YmxlQXJyYXkgKmpkb3Vi
bGVBcnJheTsKdHlwZWRlZiBfam9iamVjdEFycmF5ICpqb2JqZWN0QXJyYXk7CiMgMTIwICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvamF2YS9qbmkuaCIKdHlwZWRlZiB1bmlvbiBqdmFsdWUgewogICAg
amJvb2xlYW4gejsKICAgIGpieXRlIGI7CiAgICBqY2hhciBjOwogICAganNob3J0IHM7CiAgICBq
aW50IGk7CiAgICBqbG9uZyBqOwogICAgamZsb2F0IGY7CiAgICBqZG91YmxlIGQ7CiAgICBqb2Jq
ZWN0IGw7Cn0ganZhbHVlOwoKc3RydWN0IF9qZmllbGRJRDsKdHlwZWRlZiBzdHJ1Y3QgX2pmaWVs
ZElEICpqZmllbGRJRDsKCnN0cnVjdCBfam1ldGhvZElEOwp0eXBlZGVmIHN0cnVjdCBfam1ldGhv
ZElEICpqbWV0aG9kSUQ7CiMgMTY0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvamF2YS9qbmkuaCIK
dHlwZWRlZiBzdHJ1Y3QgewogICAgY2hhciAqbmFtZTsKICAgIGNoYXIgKnNpZ25hdHVyZTsKICAg
IHZvaWQgKmZuUHRyOwp9IEpOSU5hdGl2ZU1ldGhvZDsKCgoKCgpzdHJ1Y3QgSk5JTmF0aXZlSW50
ZXJmYWNlXzsKCnN0cnVjdCBKTklFbnZfOwoKCnR5cGVkZWYgSk5JRW52XyBKTklFbnY7CiMgMTg4
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvamF2YS9qbmkuaCIKc3RydWN0IEpOSUludm9rZUludGVy
ZmFjZV87CgpzdHJ1Y3QgSmF2YVZNXzsKCgp0eXBlZGVmIEphdmFWTV8gSmF2YVZNOwoKCgoKc3Ry
dWN0IEpOSU5hdGl2ZUludGVyZmFjZV8gewogICAgdm9pZCAqcmVzZXJ2ZWQwOwogICAgdm9pZCAq
cmVzZXJ2ZWQxOwogICAgdm9pZCAqcmVzZXJ2ZWQyOwoKICAgIHZvaWQgKnJlc2VydmVkMzsKICAg
IGppbnQgKCAqR2V0VmVyc2lvbikoSk5JRW52ICplbnYpOwoKICAgIGpjbGFzcyAoICpEZWZpbmVD
bGFzcykKICAgICAgKEpOSUVudiAqZW52LCBjb25zdCBjaGFyICpuYW1lLCBqb2JqZWN0IGxvYWRl
ciwgY29uc3QgamJ5dGUgKmJ1ZiwKICAgICAgIGpzaXplIGxlbik7CiAgICBqY2xhc3MgKCAqRmlu
ZENsYXNzKQogICAgICAoSk5JRW52ICplbnYsIGNvbnN0IGNoYXIgKm5hbWUpOwoKICAgIHZvaWQg
KnJlc2VydmVkNDsKICAgIHZvaWQgKnJlc2VydmVkNTsKICAgIHZvaWQgKnJlc2VydmVkNjsKCiAg
ICBqY2xhc3MgKCAqR2V0U3VwZXJjbGFzcykKICAgICAgKEpOSUVudiAqZW52LCBqY2xhc3Mgc3Vi
KTsKICAgIGpib29sZWFuICggKklzQXNzaWduYWJsZUZyb20pCiAgICAgIChKTklFbnYgKmVudiwg
amNsYXNzIHN1YiwgamNsYXNzIHN1cCk7CiAgICB2b2lkICpyZXNlcnZlZDc7CgoKICAgIGppbnQg
KCAqVGhyb3cpCiAgICAgIChKTklFbnYgKmVudiwganRocm93YWJsZSBvYmopOwogICAgamludCAo
ICpUaHJvd05ldykKICAgICAgKEpOSUVudiAqZW52LCBqY2xhc3MgY2xhenosIGNvbnN0IGNoYXIg
Km1zZyk7CiAgICBqdGhyb3dhYmxlICggKkV4Y2VwdGlvbk9jY3VycmVkKQogICAgICAoSk5JRW52
ICplbnYpOwogICAgdm9pZCAoICpFeGNlcHRpb25EZXNjcmliZSkKICAgICAgKEpOSUVudiAqZW52
KTsKICAgIHZvaWQgKCAqRXhjZXB0aW9uQ2xlYXIpCiAgICAgIChKTklFbnYgKmVudik7CiAgICB2
b2lkICggKkZhdGFsRXJyb3IpCiAgICAgIChKTklFbnYgKmVudiwgY29uc3QgY2hhciAqbXNnKTsK
ICAgIHZvaWQgKnJlc2VydmVkODsKICAgIHZvaWQgKnJlc2VydmVkOTsKCiAgICBqb2JqZWN0ICgg
Kk5ld0dsb2JhbFJlZikKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IGxvYmopOwogICAgdm9p
ZCAoICpEZWxldGVHbG9iYWxSZWYpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBncmVmKTsK
ICAgIHZvaWQgKCAqRGVsZXRlTG9jYWxSZWYpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBv
YmopOwogICAgamJvb2xlYW4gKCAqSXNTYW1lT2JqZWN0KQogICAgICAoSk5JRW52ICplbnYsIGpv
YmplY3Qgb2JqMSwgam9iamVjdCBvYmoyKTsKICAgIHZvaWQgKnJlc2VydmVkMTA7CiAgICB2b2lk
ICpyZXNlcnZlZDExOwoKICAgIGpvYmplY3QgKCAqQWxsb2NPYmplY3QpCiAgICAgIChKTklFbnYg
KmVudiwgamNsYXNzIGNsYXp6KTsKICAgIGpvYmplY3QgKCAqTmV3T2JqZWN0KQogICAgICAoSk5J
RW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElELCAuLi4pOwogICAgam9i
amVjdCAoICpOZXdPYmplY3RWKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1l
dGhvZElEIG1ldGhvZElELCB2YV9saXN0IGFyZ3MpOwogICAgam9iamVjdCAoICpOZXdPYmplY3RB
KQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElELCBq
dmFsdWUgKmFyZ3MpOwoKICAgIGpjbGFzcyAoICpHZXRPYmplY3RDbGFzcykKICAgICAgKEpOSUVu
diAqZW52LCBqb2JqZWN0IG9iaik7CiAgICBqYm9vbGVhbiAoICpJc0luc3RhbmNlT2YpCiAgICAg
IChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGpjbGFzcyBjbGF6eik7CgogICAgam1ldGhvZElE
ICggKkdldE1ldGhvZElEKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgY29uc3Qg
Y2hhciAqbmFtZSwgY29uc3QgY2hhciAqc2lnKTsKCiAgICBqb2JqZWN0ICggKkNhbGxPYmplY3RN
ZXRob2QpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGptZXRob2RJRCBtZXRob2RJ
RCwgLi4uKTsKICAgIGpvYmplY3QgKCAqQ2FsbE9iamVjdE1ldGhvZFYpCiAgICAgIChKTklFbnYg
KmVudiwgam9iamVjdCBvYmosIGptZXRob2RJRCBtZXRob2RJRCwgdmFfbGlzdCBhcmdzKTsKICAg
IGpvYmplY3QgKCAqQ2FsbE9iamVjdE1ldGhvZEEpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVj
dCBvYmosIGptZXRob2RJRCBtZXRob2RJRCwganZhbHVlICogYXJncyk7CgogICAgamJvb2xlYW4g
KCAqQ2FsbEJvb2xlYW5NZXRob2QpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGpt
ZXRob2RJRCBtZXRob2RJRCwgLi4uKTsKICAgIGpib29sZWFuICggKkNhbGxCb29sZWFuTWV0aG9k
VikKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1ldGhvZElELCB2
YV9saXN0IGFyZ3MpOwogICAgamJvb2xlYW4gKCAqQ2FsbEJvb2xlYW5NZXRob2RBKQogICAgICAo
Sk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqbWV0aG9kSUQgbWV0aG9kSUQsIGp2YWx1ZSAqIGFy
Z3MpOwoKICAgIGpieXRlICggKkNhbGxCeXRlTWV0aG9kKQogICAgICAoSk5JRW52ICplbnYsIGpv
YmplY3Qgb2JqLCBqbWV0aG9kSUQgbWV0aG9kSUQsIC4uLik7CiAgICBqYnl0ZSAoICpDYWxsQnl0
ZU1ldGhvZFYpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGptZXRob2RJRCBtZXRo
b2RJRCwgdmFfbGlzdCBhcmdzKTsKICAgIGpieXRlICggKkNhbGxCeXRlTWV0aG9kQSkKICAgICAg
KEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUgKmFy
Z3MpOwoKICAgIGpjaGFyICggKkNhbGxDaGFyTWV0aG9kKQogICAgICAoSk5JRW52ICplbnYsIGpv
YmplY3Qgb2JqLCBqbWV0aG9kSUQgbWV0aG9kSUQsIC4uLik7CiAgICBqY2hhciAoICpDYWxsQ2hh
ck1ldGhvZFYpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGptZXRob2RJRCBtZXRo
b2RJRCwgdmFfbGlzdCBhcmdzKTsKICAgIGpjaGFyICggKkNhbGxDaGFyTWV0aG9kQSkKICAgICAg
KEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUgKmFy
Z3MpOwoKICAgIGpzaG9ydCAoICpDYWxsU2hvcnRNZXRob2QpCiAgICAgIChKTklFbnYgKmVudiwg
am9iamVjdCBvYmosIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKTsKICAgIGpzaG9ydCAoICpDYWxs
U2hvcnRNZXRob2RWKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqbWV0aG9kSUQg
bWV0aG9kSUQsIHZhX2xpc3QgYXJncyk7CiAgICBqc2hvcnQgKCAqQ2FsbFNob3J0TWV0aG9kQSkK
ICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1ldGhvZElELCBqdmFs
dWUgKmFyZ3MpOwoKICAgIGppbnQgKCAqQ2FsbEludE1ldGhvZCkKICAgICAgKEpOSUVudiAqZW52
LCBqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1ldGhvZElELCAuLi4pOwogICAgamludCAoICpDYWxs
SW50TWV0aG9kVikKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1l
dGhvZElELCB2YV9saXN0IGFyZ3MpOwogICAgamludCAoICpDYWxsSW50TWV0aG9kQSkKICAgICAg
KEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUgKmFy
Z3MpOwoKICAgIGpsb25nICggKkNhbGxMb25nTWV0aG9kKQogICAgICAoSk5JRW52ICplbnYsIGpv
YmplY3Qgb2JqLCBqbWV0aG9kSUQgbWV0aG9kSUQsIC4uLik7CiAgICBqbG9uZyAoICpDYWxsTG9u
Z01ldGhvZFYpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGptZXRob2RJRCBtZXRo
b2RJRCwgdmFfbGlzdCBhcmdzKTsKICAgIGpsb25nICggKkNhbGxMb25nTWV0aG9kQSkKICAgICAg
KEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUgKmFy
Z3MpOwoKICAgIGpmbG9hdCAoICpDYWxsRmxvYXRNZXRob2QpCiAgICAgIChKTklFbnYgKmVudiwg
am9iamVjdCBvYmosIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKTsKICAgIGpmbG9hdCAoICpDYWxs
RmxvYXRNZXRob2RWKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqbWV0aG9kSUQg
bWV0aG9kSUQsIHZhX2xpc3QgYXJncyk7CiAgICBqZmxvYXQgKCAqQ2FsbEZsb2F0TWV0aG9kQSkK
ICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1ldGhvZElELCBqdmFs
dWUgKmFyZ3MpOwoKICAgIGpkb3VibGUgKCAqQ2FsbERvdWJsZU1ldGhvZCkKICAgICAgKEpOSUVu
diAqZW52LCBqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1ldGhvZElELCAuLi4pOwogICAgamRvdWJs
ZSAoICpDYWxsRG91YmxlTWV0aG9kVikKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwg
am1ldGhvZElEIG1ldGhvZElELCB2YV9saXN0IGFyZ3MpOwogICAgamRvdWJsZSAoICpDYWxsRG91
YmxlTWV0aG9kQSkKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1l
dGhvZElELCBqdmFsdWUgKmFyZ3MpOwoKICAgIHZvaWQgKCAqQ2FsbFZvaWRNZXRob2QpCiAgICAg
IChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKTsKICAg
IHZvaWQgKCAqQ2FsbFZvaWRNZXRob2RWKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2Jq
LCBqbWV0aG9kSUQgbWV0aG9kSUQsIHZhX2xpc3QgYXJncyk7CiAgICB2b2lkICggKkNhbGxWb2lk
TWV0aG9kQSkKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1ldGhv
ZElELCBqdmFsdWUgKiBhcmdzKTsKCiAgICBqb2JqZWN0ICggKkNhbGxOb252aXJ0dWFsT2JqZWN0
TWV0aG9kKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenosIGpt
ZXRob2RJRCBtZXRob2RJRCwgLi4uKTsKICAgIGpvYmplY3QgKCAqQ2FsbE5vbnZpcnR1YWxPYmpl
Y3RNZXRob2RWKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenos
IGptZXRob2RJRCBtZXRob2RJRCwKICAgICAgIHZhX2xpc3QgYXJncyk7CiAgICBqb2JqZWN0ICgg
KkNhbGxOb252aXJ0dWFsT2JqZWN0TWV0aG9kQSkKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0
IG9iaiwgamNsYXNzIGNsYXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICBqdmFsdWUgKiBh
cmdzKTsKCiAgICBqYm9vbGVhbiAoICpDYWxsTm9udmlydHVhbEJvb2xlYW5NZXRob2QpCiAgICAg
IChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhv
ZElELCAuLi4pOwogICAgamJvb2xlYW4gKCAqQ2FsbE5vbnZpcnR1YWxCb29sZWFuTWV0aG9kVikK
ICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LCBqbWV0aG9kSUQg
bWV0aG9kSUQsCiAgICAgICB2YV9saXN0IGFyZ3MpOwogICAgamJvb2xlYW4gKCAqQ2FsbE5vbnZp
cnR1YWxCb29sZWFuTWV0aG9kQSkKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgamNs
YXNzIGNsYXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICBqdmFsdWUgKiBhcmdzKTsKCiAg
ICBqYnl0ZSAoICpDYWxsTm9udmlydHVhbEJ5dGVNZXRob2QpCiAgICAgIChKTklFbnYgKmVudiwg
am9iamVjdCBvYmosIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElELCAuLi4pOwogICAg
amJ5dGUgKCAqQ2FsbE5vbnZpcnR1YWxCeXRlTWV0aG9kVikKICAgICAgKEpOSUVudiAqZW52LCBq
b2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICB2YV9s
aXN0IGFyZ3MpOwogICAgamJ5dGUgKCAqQ2FsbE5vbnZpcnR1YWxCeXRlTWV0aG9kQSkKICAgICAg
KEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LCBqbWV0aG9kSUQgbWV0aG9k
SUQsCiAgICAgICBqdmFsdWUgKmFyZ3MpOwoKICAgIGpjaGFyICggKkNhbGxOb252aXJ0dWFsQ2hh
ck1ldGhvZCkKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LCBq
bWV0aG9kSUQgbWV0aG9kSUQsIC4uLik7CiAgICBqY2hhciAoICpDYWxsTm9udmlydHVhbENoYXJN
ZXRob2RWKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenosIGpt
ZXRob2RJRCBtZXRob2RJRCwKICAgICAgIHZhX2xpc3QgYXJncyk7CiAgICBqY2hhciAoICpDYWxs
Tm9udmlydHVhbENoYXJNZXRob2RBKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBq
Y2xhc3MgY2xhenosIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAgIGp2YWx1ZSAqYXJncyk7Cgog
ICAganNob3J0ICggKkNhbGxOb252aXJ0dWFsU2hvcnRNZXRob2QpCiAgICAgIChKTklFbnYgKmVu
diwgam9iamVjdCBvYmosIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElELCAuLi4pOwog
ICAganNob3J0ICggKkNhbGxOb252aXJ0dWFsU2hvcnRNZXRob2RWKQogICAgICAoSk5JRW52ICpl
bnYsIGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenosIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAg
IHZhX2xpc3QgYXJncyk7CiAgICBqc2hvcnQgKCAqQ2FsbE5vbnZpcnR1YWxTaG9ydE1ldGhvZEEp
CiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGpjbGFzcyBjbGF6eiwgam1ldGhvZElE
IG1ldGhvZElELAogICAgICAganZhbHVlICphcmdzKTsKCiAgICBqaW50ICggKkNhbGxOb252aXJ0
dWFsSW50TWV0aG9kKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xh
enosIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKTsKICAgIGppbnQgKCAqQ2FsbE5vbnZpcnR1YWxJ
bnRNZXRob2RWKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenos
IGptZXRob2RJRCBtZXRob2RJRCwKICAgICAgIHZhX2xpc3QgYXJncyk7CiAgICBqaW50ICggKkNh
bGxOb252aXJ0dWFsSW50TWV0aG9kQSkKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwg
amNsYXNzIGNsYXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICBqdmFsdWUgKmFyZ3MpOwoK
ICAgIGpsb25nICggKkNhbGxOb252aXJ0dWFsTG9uZ01ldGhvZCkKICAgICAgKEpOSUVudiAqZW52
LCBqb2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQsIC4uLik7CiAg
ICBqbG9uZyAoICpDYWxsTm9udmlydHVhbExvbmdNZXRob2RWKQogICAgICAoSk5JRW52ICplbnYs
IGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenosIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAgIHZh
X2xpc3QgYXJncyk7CiAgICBqbG9uZyAoICpDYWxsTm9udmlydHVhbExvbmdNZXRob2RBKQogICAg
ICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenosIGptZXRob2RJRCBtZXRo
b2RJRCwKICAgICAgIGp2YWx1ZSAqYXJncyk7CgogICAgamZsb2F0ICggKkNhbGxOb252aXJ0dWFs
RmxvYXRNZXRob2QpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGpjbGFzcyBjbGF6
eiwgam1ldGhvZElEIG1ldGhvZElELCAuLi4pOwogICAgamZsb2F0ICggKkNhbGxOb252aXJ0dWFs
RmxvYXRNZXRob2RWKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xh
enosIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAgIHZhX2xpc3QgYXJncyk7CiAgICBqZmxvYXQg
KCAqQ2FsbE5vbnZpcnR1YWxGbG9hdE1ldGhvZEEpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVj
dCBvYmosIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElELAogICAgICAganZhbHVlICph
cmdzKTsKCiAgICBqZG91YmxlICggKkNhbGxOb252aXJ0dWFsRG91YmxlTWV0aG9kKQogICAgICAo
Sk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenosIGptZXRob2RJRCBtZXRob2RJ
RCwgLi4uKTsKICAgIGpkb3VibGUgKCAqQ2FsbE5vbnZpcnR1YWxEb3VibGVNZXRob2RWKQogICAg
ICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenosIGptZXRob2RJRCBtZXRo
b2RJRCwKICAgICAgIHZhX2xpc3QgYXJncyk7CiAgICBqZG91YmxlICggKkNhbGxOb252aXJ0dWFs
RG91YmxlTWV0aG9kQSkKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgamNsYXNzIGNs
YXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICBqdmFsdWUgKmFyZ3MpOwoKICAgIHZvaWQg
KCAqQ2FsbE5vbnZpcnR1YWxWb2lkTWV0aG9kKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qg
b2JqLCBqY2xhc3MgY2xhenosIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKTsKICAgIHZvaWQgKCAq
Q2FsbE5vbnZpcnR1YWxWb2lkTWV0aG9kVikKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9i
aiwgamNsYXNzIGNsYXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICB2YV9saXN0IGFyZ3Mp
OwogICAgdm9pZCAoICpDYWxsTm9udmlydHVhbFZvaWRNZXRob2RBKQogICAgICAoSk5JRW52ICpl
bnYsIGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenosIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAg
IGp2YWx1ZSAqIGFyZ3MpOwoKICAgIGpmaWVsZElEICggKkdldEZpZWxkSUQpCiAgICAgIChKTklF
bnYgKmVudiwgamNsYXNzIGNsYXp6LCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpzaWcp
OwoKICAgIGpvYmplY3QgKCAqR2V0T2JqZWN0RmllbGQpCiAgICAgIChKTklFbnYgKmVudiwgam9i
amVjdCBvYmosIGpmaWVsZElEIGZpZWxkSUQpOwogICAgamJvb2xlYW4gKCAqR2V0Qm9vbGVhbkZp
ZWxkKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqZmllbGRJRCBmaWVsZElEKTsK
ICAgIGpieXRlICggKkdldEJ5dGVGaWVsZCkKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9i
aiwgamZpZWxkSUQgZmllbGRJRCk7CiAgICBqY2hhciAoICpHZXRDaGFyRmllbGQpCiAgICAgIChK
TklFbnYgKmVudiwgam9iamVjdCBvYmosIGpmaWVsZElEIGZpZWxkSUQpOwogICAganNob3J0ICgg
KkdldFNob3J0RmllbGQpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGpmaWVsZElE
IGZpZWxkSUQpOwogICAgamludCAoICpHZXRJbnRGaWVsZCkKICAgICAgKEpOSUVudiAqZW52LCBq
b2JqZWN0IG9iaiwgamZpZWxkSUQgZmllbGRJRCk7CiAgICBqbG9uZyAoICpHZXRMb25nRmllbGQp
CiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGpmaWVsZElEIGZpZWxkSUQpOwogICAg
amZsb2F0ICggKkdldEZsb2F0RmllbGQpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmos
IGpmaWVsZElEIGZpZWxkSUQpOwogICAgamRvdWJsZSAoICpHZXREb3VibGVGaWVsZCkKICAgICAg
KEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgamZpZWxkSUQgZmllbGRJRCk7CgogICAgdm9pZCAo
ICpTZXRPYmplY3RGaWVsZCkKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgamZpZWxk
SUQgZmllbGRJRCwgam9iamVjdCB2YWwpOwogICAgdm9pZCAoICpTZXRCb29sZWFuRmllbGQpCiAg
ICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGpmaWVsZElEIGZpZWxkSUQsIGpib29sZWFu
IHZhbCk7CiAgICB2b2lkICggKlNldEJ5dGVGaWVsZCkKICAgICAgKEpOSUVudiAqZW52LCBqb2Jq
ZWN0IG9iaiwgamZpZWxkSUQgZmllbGRJRCwgamJ5dGUgdmFsKTsKICAgIHZvaWQgKCAqU2V0Q2hh
ckZpZWxkKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqZmllbGRJRCBmaWVsZElE
LCBqY2hhciB2YWwpOwogICAgdm9pZCAoICpTZXRTaG9ydEZpZWxkKQogICAgICAoSk5JRW52ICpl
bnYsIGpvYmplY3Qgb2JqLCBqZmllbGRJRCBmaWVsZElELCBqc2hvcnQgdmFsKTsKICAgIHZvaWQg
KCAqU2V0SW50RmllbGQpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGpmaWVsZElE
IGZpZWxkSUQsIGppbnQgdmFsKTsKICAgIHZvaWQgKCAqU2V0TG9uZ0ZpZWxkKQogICAgICAoSk5J
RW52ICplbnYsIGpvYmplY3Qgb2JqLCBqZmllbGRJRCBmaWVsZElELCBqbG9uZyB2YWwpOwogICAg
dm9pZCAoICpTZXRGbG9hdEZpZWxkKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBq
ZmllbGRJRCBmaWVsZElELCBqZmxvYXQgdmFsKTsKICAgIHZvaWQgKCAqU2V0RG91YmxlRmllbGQp
CiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGpmaWVsZElEIGZpZWxkSUQsIGpkb3Vi
bGUgdmFsKTsKCiAgICBqbWV0aG9kSUQgKCAqR2V0U3RhdGljTWV0aG9kSUQpCiAgICAgIChKTklF
bnYgKmVudiwgamNsYXNzIGNsYXp6LCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpzaWcp
OwoKICAgIGpvYmplY3QgKCAqQ2FsbFN0YXRpY09iamVjdE1ldGhvZCkKICAgICAgKEpOSUVudiAq
ZW52LCBqY2xhc3MgY2xhenosIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKTsKICAgIGpvYmplY3Qg
KCAqQ2FsbFN0YXRpY09iamVjdE1ldGhvZFYpCiAgICAgIChKTklFbnYgKmVudiwgamNsYXNzIGNs
YXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQsIHZhX2xpc3QgYXJncyk7CiAgICBqb2JqZWN0ICggKkNh
bGxTdGF0aWNPYmplY3RNZXRob2RBKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwg
am1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUgKmFyZ3MpOwoKICAgIGpib29sZWFuICggKkNhbGxT
dGF0aWNCb29sZWFuTWV0aG9kKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1l
dGhvZElEIG1ldGhvZElELCAuLi4pOwogICAgamJvb2xlYW4gKCAqQ2FsbFN0YXRpY0Jvb2xlYW5N
ZXRob2RWKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhv
ZElELCB2YV9saXN0IGFyZ3MpOwogICAgamJvb2xlYW4gKCAqQ2FsbFN0YXRpY0Jvb2xlYW5NZXRo
b2RBKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElE
LCBqdmFsdWUgKmFyZ3MpOwoKICAgIGpieXRlICggKkNhbGxTdGF0aWNCeXRlTWV0aG9kKQogICAg
ICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElELCAuLi4pOwog
ICAgamJ5dGUgKCAqQ2FsbFN0YXRpY0J5dGVNZXRob2RWKQogICAgICAoSk5JRW52ICplbnYsIGpj
bGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElELCB2YV9saXN0IGFyZ3MpOwogICAgamJ5dGUg
KCAqQ2FsbFN0YXRpY0J5dGVNZXRob2RBKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6
eiwgam1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUgKmFyZ3MpOwoKICAgIGpjaGFyICggKkNhbGxT
dGF0aWNDaGFyTWV0aG9kKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1ldGhv
ZElEIG1ldGhvZElELCAuLi4pOwogICAgamNoYXIgKCAqQ2FsbFN0YXRpY0NoYXJNZXRob2RWKQog
ICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElELCB2YV9s
aXN0IGFyZ3MpOwogICAgamNoYXIgKCAqQ2FsbFN0YXRpY0NoYXJNZXRob2RBKQogICAgICAoSk5J
RW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUgKmFyZ3Mp
OwoKICAgIGpzaG9ydCAoICpDYWxsU3RhdGljU2hvcnRNZXRob2QpCiAgICAgIChKTklFbnYgKmVu
diwgamNsYXNzIGNsYXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQsIC4uLik7CiAgICBqc2hvcnQgKCAq
Q2FsbFN0YXRpY1Nob3J0TWV0aG9kVikKICAgICAgKEpOSUVudiAqZW52LCBqY2xhc3MgY2xhenos
IGptZXRob2RJRCBtZXRob2RJRCwgdmFfbGlzdCBhcmdzKTsKICAgIGpzaG9ydCAoICpDYWxsU3Rh
dGljU2hvcnRNZXRob2RBKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1ldGhv
ZElEIG1ldGhvZElELCBqdmFsdWUgKmFyZ3MpOwoKICAgIGppbnQgKCAqQ2FsbFN0YXRpY0ludE1l
dGhvZCkKICAgICAgKEpOSUVudiAqZW52LCBqY2xhc3MgY2xhenosIGptZXRob2RJRCBtZXRob2RJ
RCwgLi4uKTsKICAgIGppbnQgKCAqQ2FsbFN0YXRpY0ludE1ldGhvZFYpCiAgICAgIChKTklFbnYg
KmVudiwgamNsYXNzIGNsYXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQsIHZhX2xpc3QgYXJncyk7CiAg
ICBqaW50ICggKkNhbGxTdGF0aWNJbnRNZXRob2RBKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFz
cyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUgKmFyZ3MpOwoKICAgIGpsb25nICgg
KkNhbGxTdGF0aWNMb25nTWV0aG9kKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwg
am1ldGhvZElEIG1ldGhvZElELCAuLi4pOwogICAgamxvbmcgKCAqQ2FsbFN0YXRpY0xvbmdNZXRo
b2RWKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElE
LCB2YV9saXN0IGFyZ3MpOwogICAgamxvbmcgKCAqQ2FsbFN0YXRpY0xvbmdNZXRob2RBKQogICAg
ICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUg
KmFyZ3MpOwoKICAgIGpmbG9hdCAoICpDYWxsU3RhdGljRmxvYXRNZXRob2QpCiAgICAgIChKTklF
bnYgKmVudiwgamNsYXNzIGNsYXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQsIC4uLik7CiAgICBqZmxv
YXQgKCAqQ2FsbFN0YXRpY0Zsb2F0TWV0aG9kVikKICAgICAgKEpOSUVudiAqZW52LCBqY2xhc3Mg
Y2xhenosIGptZXRob2RJRCBtZXRob2RJRCwgdmFfbGlzdCBhcmdzKTsKICAgIGpmbG9hdCAoICpD
YWxsU3RhdGljRmxvYXRNZXRob2RBKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwg
am1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUgKmFyZ3MpOwoKICAgIGpkb3VibGUgKCAqQ2FsbFN0
YXRpY0RvdWJsZU1ldGhvZCkKICAgICAgKEpOSUVudiAqZW52LCBqY2xhc3MgY2xhenosIGptZXRo
b2RJRCBtZXRob2RJRCwgLi4uKTsKICAgIGpkb3VibGUgKCAqQ2FsbFN0YXRpY0RvdWJsZU1ldGhv
ZFYpCiAgICAgIChKTklFbnYgKmVudiwgamNsYXNzIGNsYXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQs
IHZhX2xpc3QgYXJncyk7CiAgICBqZG91YmxlICggKkNhbGxTdGF0aWNEb3VibGVNZXRob2RBKQog
ICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElELCBqdmFs
dWUgKmFyZ3MpOwoKICAgIHZvaWQgKCAqQ2FsbFN0YXRpY1ZvaWRNZXRob2QpCiAgICAgIChKTklF
bnYgKmVudiwgamNsYXNzIGNscywgam1ldGhvZElEIG1ldGhvZElELCAuLi4pOwogICAgdm9pZCAo
ICpDYWxsU3RhdGljVm9pZE1ldGhvZFYpCiAgICAgIChKTklFbnYgKmVudiwgamNsYXNzIGNscywg
am1ldGhvZElEIG1ldGhvZElELCB2YV9saXN0IGFyZ3MpOwogICAgdm9pZCAoICpDYWxsU3RhdGlj
Vm9pZE1ldGhvZEEpCiAgICAgIChKTklFbnYgKmVudiwgamNsYXNzIGNscywgam1ldGhvZElEIG1l
dGhvZElELCBqdmFsdWUgKiBhcmdzKTsKCiAgICBqZmllbGRJRCAoICpHZXRTdGF0aWNGaWVsZElE
KQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgY29uc3QgY2hhciAqbmFtZSwgY29u
c3QgY2hhciAqc2lnKTsKICAgIGpvYmplY3QgKCAqR2V0U3RhdGljT2JqZWN0RmllbGQpCiAgICAg
IChKTklFbnYgKmVudiwgamNsYXNzIGNsYXp6LCBqZmllbGRJRCBmaWVsZElEKTsKICAgIGpib29s
ZWFuICggKkdldFN0YXRpY0Jvb2xlYW5GaWVsZCkKICAgICAgKEpOSUVudiAqZW52LCBqY2xhc3Mg
Y2xhenosIGpmaWVsZElEIGZpZWxkSUQpOwogICAgamJ5dGUgKCAqR2V0U3RhdGljQnl0ZUZpZWxk
KQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgamZpZWxkSUQgZmllbGRJRCk7CiAg
ICBqY2hhciAoICpHZXRTdGF0aWNDaGFyRmllbGQpCiAgICAgIChKTklFbnYgKmVudiwgamNsYXNz
IGNsYXp6LCBqZmllbGRJRCBmaWVsZElEKTsKICAgIGpzaG9ydCAoICpHZXRTdGF0aWNTaG9ydEZp
ZWxkKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgamZpZWxkSUQgZmllbGRJRCk7
CiAgICBqaW50ICggKkdldFN0YXRpY0ludEZpZWxkKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFz
cyBjbGF6eiwgamZpZWxkSUQgZmllbGRJRCk7CiAgICBqbG9uZyAoICpHZXRTdGF0aWNMb25nRmll
bGQpCiAgICAgIChKTklFbnYgKmVudiwgamNsYXNzIGNsYXp6LCBqZmllbGRJRCBmaWVsZElEKTsK
ICAgIGpmbG9hdCAoICpHZXRTdGF0aWNGbG9hdEZpZWxkKQogICAgICAoSk5JRW52ICplbnYsIGpj
bGFzcyBjbGF6eiwgamZpZWxkSUQgZmllbGRJRCk7CiAgICBqZG91YmxlICggKkdldFN0YXRpY0Rv
dWJsZUZpZWxkKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgamZpZWxkSUQgZmll
bGRJRCk7CgogICAgdm9pZCAoICpTZXRTdGF0aWNPYmplY3RGaWVsZCkKICAgICAgKEpOSUVudiAq
ZW52LCBqY2xhc3MgY2xhenosIGpmaWVsZElEIGZpZWxkSUQsIGpvYmplY3QgdmFsdWUpOwogICAg
dm9pZCAoICpTZXRTdGF0aWNCb29sZWFuRmllbGQpCiAgICAgIChKTklFbnYgKmVudiwgamNsYXNz
IGNsYXp6LCBqZmllbGRJRCBmaWVsZElELCBqYm9vbGVhbiB2YWx1ZSk7CiAgICB2b2lkICggKlNl
dFN0YXRpY0J5dGVGaWVsZCkKICAgICAgKEpOSUVudiAqZW52LCBqY2xhc3MgY2xhenosIGpmaWVs
ZElEIGZpZWxkSUQsIGpieXRlIHZhbHVlKTsKICAgIHZvaWQgKCAqU2V0U3RhdGljQ2hhckZpZWxk
KQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgamZpZWxkSUQgZmllbGRJRCwgamNo
YXIgdmFsdWUpOwogICAgdm9pZCAoICpTZXRTdGF0aWNTaG9ydEZpZWxkKQogICAgICAoSk5JRW52
ICplbnYsIGpjbGFzcyBjbGF6eiwgamZpZWxkSUQgZmllbGRJRCwganNob3J0IHZhbHVlKTsKICAg
IHZvaWQgKCAqU2V0U3RhdGljSW50RmllbGQpCiAgICAgIChKTklFbnYgKmVudiwgamNsYXNzIGNs
YXp6LCBqZmllbGRJRCBmaWVsZElELCBqaW50IHZhbHVlKTsKICAgIHZvaWQgKCAqU2V0U3RhdGlj
TG9uZ0ZpZWxkKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgamZpZWxkSUQgZmll
bGRJRCwgamxvbmcgdmFsdWUpOwogICAgdm9pZCAoICpTZXRTdGF0aWNGbG9hdEZpZWxkKQogICAg
ICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgamZpZWxkSUQgZmllbGRJRCwgamZsb2F0IHZh
bHVlKTsKICAgIHZvaWQgKCAqU2V0U3RhdGljRG91YmxlRmllbGQpCiAgICAgIChKTklFbnYgKmVu
diwgamNsYXNzIGNsYXp6LCBqZmllbGRJRCBmaWVsZElELCBqZG91YmxlIHZhbHVlKTsKCiAgICBq
c3RyaW5nICggKk5ld1N0cmluZykKICAgICAgKEpOSUVudiAqZW52LCBjb25zdCBqY2hhciAqdW5p
Y29kZSwganNpemUgbGVuKTsKICAgIGpzaXplICggKkdldFN0cmluZ0xlbmd0aCkKICAgICAgKEpO
SUVudiAqZW52LCBqc3RyaW5nIHN0cik7CiAgICBjb25zdCBqY2hhciAqKCAqR2V0U3RyaW5nQ2hh
cnMpCiAgICAgIChKTklFbnYgKmVudiwganN0cmluZyBzdHIsIGpib29sZWFuICppc0NvcHkpOwog
ICAgdm9pZCAoICpSZWxlYXNlU3RyaW5nQ2hhcnMpCiAgICAgIChKTklFbnYgKmVudiwganN0cmlu
ZyBzdHIsIGNvbnN0IGpjaGFyICpjaGFycyk7CgogICAganN0cmluZyAoICpOZXdTdHJpbmdVVEYp
CiAgICAgIChKTklFbnYgKmVudiwgY29uc3QgY2hhciAqdXRmKTsKICAgIGpzaXplICggKkdldFN0
cmluZ1VURkxlbmd0aCkKICAgICAgKEpOSUVudiAqZW52LCBqc3RyaW5nIHN0cik7CiAgICBjb25z
dCBjaGFyKiAoICpHZXRTdHJpbmdVVEZDaGFycykKICAgICAgKEpOSUVudiAqZW52LCBqc3RyaW5n
IHN0ciwgamJvb2xlYW4gKmlzQ29weSk7CiAgICB2b2lkICggKlJlbGVhc2VTdHJpbmdVVEZDaGFy
cykKICAgICAgKEpOSUVudiAqZW52LCBqc3RyaW5nIHN0ciwgY29uc3QgY2hhciogY2hhcnMpOwoK
CiAgICBqc2l6ZSAoICpHZXRBcnJheUxlbmd0aCkKICAgICAgKEpOSUVudiAqZW52LCBqYXJyYXkg
YXJyYXkpOwoKICAgIGpvYmplY3RBcnJheSAoICpOZXdPYmplY3RBcnJheSkKICAgICAgKEpOSUVu
diAqZW52LCBqc2l6ZSBsZW4sIGpjbGFzcyBjbGF6eiwgam9iamVjdCBpbml0KTsKICAgIGpvYmpl
Y3QgKCAqR2V0T2JqZWN0QXJyYXlFbGVtZW50KQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3RB
cnJheSBhcnJheSwganNpemUgaW5kZXgpOwogICAgdm9pZCAoICpTZXRPYmplY3RBcnJheUVsZW1l
bnQpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdEFycmF5IGFycmF5LCBqc2l6ZSBpbmRleCwg
am9iamVjdCB2YWwpOwoKICAgIGpib29sZWFuQXJyYXkgKCAqTmV3Qm9vbGVhbkFycmF5KQogICAg
ICAoSk5JRW52ICplbnYsIGpzaXplIGxlbik7CiAgICBqYnl0ZUFycmF5ICggKk5ld0J5dGVBcnJh
eSkKICAgICAgKEpOSUVudiAqZW52LCBqc2l6ZSBsZW4pOwogICAgamNoYXJBcnJheSAoICpOZXdD
aGFyQXJyYXkpCiAgICAgIChKTklFbnYgKmVudiwganNpemUgbGVuKTsKICAgIGpzaG9ydEFycmF5
ICggKk5ld1Nob3J0QXJyYXkpCiAgICAgIChKTklFbnYgKmVudiwganNpemUgbGVuKTsKICAgIGpp
bnRBcnJheSAoICpOZXdJbnRBcnJheSkKICAgICAgKEpOSUVudiAqZW52LCBqc2l6ZSBsZW4pOwog
ICAgamxvbmdBcnJheSAoICpOZXdMb25nQXJyYXkpCiAgICAgIChKTklFbnYgKmVudiwganNpemUg
bGVuKTsKICAgIGpmbG9hdEFycmF5ICggKk5ld0Zsb2F0QXJyYXkpCiAgICAgIChKTklFbnYgKmVu
diwganNpemUgbGVuKTsKICAgIGpkb3VibGVBcnJheSAoICpOZXdEb3VibGVBcnJheSkKICAgICAg
KEpOSUVudiAqZW52LCBqc2l6ZSBsZW4pOwoKICAgIGpib29sZWFuICogKCAqR2V0Qm9vbGVhbkFy
cmF5RWxlbWVudHMpCiAgICAgIChKTklFbnYgKmVudiwgamJvb2xlYW5BcnJheSBhcnJheSwgamJv
b2xlYW4gKmlzQ29weSk7CiAgICBqYnl0ZSAqICggKkdldEJ5dGVBcnJheUVsZW1lbnRzKQogICAg
ICAoSk5JRW52ICplbnYsIGpieXRlQXJyYXkgYXJyYXksIGpib29sZWFuICppc0NvcHkpOwogICAg
amNoYXIgKiAoICpHZXRDaGFyQXJyYXlFbGVtZW50cykKICAgICAgKEpOSUVudiAqZW52LCBqY2hh
ckFycmF5IGFycmF5LCBqYm9vbGVhbiAqaXNDb3B5KTsKICAgIGpzaG9ydCAqICggKkdldFNob3J0
QXJyYXlFbGVtZW50cykKICAgICAgKEpOSUVudiAqZW52LCBqc2hvcnRBcnJheSBhcnJheSwgamJv
b2xlYW4gKmlzQ29weSk7CiAgICBqaW50ICogKCAqR2V0SW50QXJyYXlFbGVtZW50cykKICAgICAg
KEpOSUVudiAqZW52LCBqaW50QXJyYXkgYXJyYXksIGpib29sZWFuICppc0NvcHkpOwogICAgamxv
bmcgKiAoICpHZXRMb25nQXJyYXlFbGVtZW50cykKICAgICAgKEpOSUVudiAqZW52LCBqbG9uZ0Fy
cmF5IGFycmF5LCBqYm9vbGVhbiAqaXNDb3B5KTsKICAgIGpmbG9hdCAqICggKkdldEZsb2F0QXJy
YXlFbGVtZW50cykKICAgICAgKEpOSUVudiAqZW52LCBqZmxvYXRBcnJheSBhcnJheSwgamJvb2xl
YW4gKmlzQ29weSk7CiAgICBqZG91YmxlICogKCAqR2V0RG91YmxlQXJyYXlFbGVtZW50cykKICAg
ICAgKEpOSUVudiAqZW52LCBqZG91YmxlQXJyYXkgYXJyYXksIGpib29sZWFuICppc0NvcHkpOwoK
ICAgIHZvaWQgKCAqUmVsZWFzZUJvb2xlYW5BcnJheUVsZW1lbnRzKQogICAgICAoSk5JRW52ICpl
bnYsIGpib29sZWFuQXJyYXkgYXJyYXksIGpib29sZWFuICplbGVtcywgamludCBtb2RlKTsKICAg
IHZvaWQgKCAqUmVsZWFzZUJ5dGVBcnJheUVsZW1lbnRzKQogICAgICAoSk5JRW52ICplbnYsIGpi
eXRlQXJyYXkgYXJyYXksIGpieXRlICplbGVtcywgamludCBtb2RlKTsKICAgIHZvaWQgKCAqUmVs
ZWFzZUNoYXJBcnJheUVsZW1lbnRzKQogICAgICAoSk5JRW52ICplbnYsIGpjaGFyQXJyYXkgYXJy
YXksIGpjaGFyICplbGVtcywgamludCBtb2RlKTsKICAgIHZvaWQgKCAqUmVsZWFzZVNob3J0QXJy
YXlFbGVtZW50cykKICAgICAgKEpOSUVudiAqZW52LCBqc2hvcnRBcnJheSBhcnJheSwganNob3J0
ICplbGVtcywgamludCBtb2RlKTsKICAgIHZvaWQgKCAqUmVsZWFzZUludEFycmF5RWxlbWVudHMp
CiAgICAgIChKTklFbnYgKmVudiwgamludEFycmF5IGFycmF5LCBqaW50ICplbGVtcywgamludCBt
b2RlKTsKICAgIHZvaWQgKCAqUmVsZWFzZUxvbmdBcnJheUVsZW1lbnRzKQogICAgICAoSk5JRW52
ICplbnYsIGpsb25nQXJyYXkgYXJyYXksIGpsb25nICplbGVtcywgamludCBtb2RlKTsKICAgIHZv
aWQgKCAqUmVsZWFzZUZsb2F0QXJyYXlFbGVtZW50cykKICAgICAgKEpOSUVudiAqZW52LCBqZmxv
YXRBcnJheSBhcnJheSwgamZsb2F0ICplbGVtcywgamludCBtb2RlKTsKICAgIHZvaWQgKCAqUmVs
ZWFzZURvdWJsZUFycmF5RWxlbWVudHMpCiAgICAgIChKTklFbnYgKmVudiwgamRvdWJsZUFycmF5
IGFycmF5LCBqZG91YmxlICplbGVtcywgamludCBtb2RlKTsKCiAgICB2b2lkICggKkdldEJvb2xl
YW5BcnJheVJlZ2lvbikKICAgICAgKEpOSUVudiAqZW52LCBqYm9vbGVhbkFycmF5IGFycmF5LCBq
c2l6ZSBzdGFydCwganNpemUgbCwgamJvb2xlYW4gKmJ1Zik7CiAgICB2b2lkICggKkdldEJ5dGVB
cnJheVJlZ2lvbikKICAgICAgKEpOSUVudiAqZW52LCBqYnl0ZUFycmF5IGFycmF5LCBqc2l6ZSBz
dGFydCwganNpemUgbGVuLCBqYnl0ZSAqYnVmKTsKICAgIHZvaWQgKCAqR2V0Q2hhckFycmF5UmVn
aW9uKQogICAgICAoSk5JRW52ICplbnYsIGpjaGFyQXJyYXkgYXJyYXksIGpzaXplIHN0YXJ0LCBq
c2l6ZSBsZW4sIGpjaGFyICpidWYpOwogICAgdm9pZCAoICpHZXRTaG9ydEFycmF5UmVnaW9uKQog
ICAgICAoSk5JRW52ICplbnYsIGpzaG9ydEFycmF5IGFycmF5LCBqc2l6ZSBzdGFydCwganNpemUg
bGVuLCBqc2hvcnQgKmJ1Zik7CiAgICB2b2lkICggKkdldEludEFycmF5UmVnaW9uKQogICAgICAo
Sk5JRW52ICplbnYsIGppbnRBcnJheSBhcnJheSwganNpemUgc3RhcnQsIGpzaXplIGxlbiwgamlu
dCAqYnVmKTsKICAgIHZvaWQgKCAqR2V0TG9uZ0FycmF5UmVnaW9uKQogICAgICAoSk5JRW52ICpl
bnYsIGpsb25nQXJyYXkgYXJyYXksIGpzaXplIHN0YXJ0LCBqc2l6ZSBsZW4sIGpsb25nICpidWYp
OwogICAgdm9pZCAoICpHZXRGbG9hdEFycmF5UmVnaW9uKQogICAgICAoSk5JRW52ICplbnYsIGpm
bG9hdEFycmF5IGFycmF5LCBqc2l6ZSBzdGFydCwganNpemUgbGVuLCBqZmxvYXQgKmJ1Zik7CiAg
ICB2b2lkICggKkdldERvdWJsZUFycmF5UmVnaW9uKQogICAgICAoSk5JRW52ICplbnYsIGpkb3Vi
bGVBcnJheSBhcnJheSwganNpemUgc3RhcnQsIGpzaXplIGxlbiwgamRvdWJsZSAqYnVmKTsKCiAg
ICB2b2lkICggKlNldEJvb2xlYW5BcnJheVJlZ2lvbikKICAgICAgKEpOSUVudiAqZW52LCBqYm9v
bGVhbkFycmF5IGFycmF5LCBqc2l6ZSBzdGFydCwganNpemUgbCwgamJvb2xlYW4gKmJ1Zik7CiAg
ICB2b2lkICggKlNldEJ5dGVBcnJheVJlZ2lvbikKICAgICAgKEpOSUVudiAqZW52LCBqYnl0ZUFy
cmF5IGFycmF5LCBqc2l6ZSBzdGFydCwganNpemUgbGVuLCBqYnl0ZSAqYnVmKTsKICAgIHZvaWQg
KCAqU2V0Q2hhckFycmF5UmVnaW9uKQogICAgICAoSk5JRW52ICplbnYsIGpjaGFyQXJyYXkgYXJy
YXksIGpzaXplIHN0YXJ0LCBqc2l6ZSBsZW4sIGpjaGFyICpidWYpOwogICAgdm9pZCAoICpTZXRT
aG9ydEFycmF5UmVnaW9uKQogICAgICAoSk5JRW52ICplbnYsIGpzaG9ydEFycmF5IGFycmF5LCBq
c2l6ZSBzdGFydCwganNpemUgbGVuLCBqc2hvcnQgKmJ1Zik7CiAgICB2b2lkICggKlNldEludEFy
cmF5UmVnaW9uKQogICAgICAoSk5JRW52ICplbnYsIGppbnRBcnJheSBhcnJheSwganNpemUgc3Rh
cnQsIGpzaXplIGxlbiwgamludCAqYnVmKTsKICAgIHZvaWQgKCAqU2V0TG9uZ0FycmF5UmVnaW9u
KQogICAgICAoSk5JRW52ICplbnYsIGpsb25nQXJyYXkgYXJyYXksIGpzaXplIHN0YXJ0LCBqc2l6
ZSBsZW4sIGpsb25nICpidWYpOwogICAgdm9pZCAoICpTZXRGbG9hdEFycmF5UmVnaW9uKQogICAg
ICAoSk5JRW52ICplbnYsIGpmbG9hdEFycmF5IGFycmF5LCBqc2l6ZSBzdGFydCwganNpemUgbGVu
LCBqZmxvYXQgKmJ1Zik7CiAgICB2b2lkICggKlNldERvdWJsZUFycmF5UmVnaW9uKQogICAgICAo
Sk5JRW52ICplbnYsIGpkb3VibGVBcnJheSBhcnJheSwganNpemUgc3RhcnQsIGpzaXplIGxlbiwg
amRvdWJsZSAqYnVmKTsKCiAgICBqaW50ICggKlJlZ2lzdGVyTmF0aXZlcykKICAgICAgKEpOSUVu
diAqZW52LCBqY2xhc3MgY2xhenosIGNvbnN0IEpOSU5hdGl2ZU1ldGhvZCAqbWV0aG9kcywKICAg
ICAgIGppbnQgbk1ldGhvZHMpOwogICAgamludCAoICpVbnJlZ2lzdGVyTmF0aXZlcykKICAgICAg
KEpOSUVudiAqZW52LCBqY2xhc3MgY2xhenopOwoKICAgIGppbnQgKCAqTW9uaXRvckVudGVyKQog
ICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqKTsKICAgIGppbnQgKCAqTW9uaXRvckV4aXQp
CiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmopOwoKICAgIGppbnQgKCAqR2V0SmF2YVZN
KQogICAgICAoSk5JRW52ICplbnYsIEphdmFWTSAqKnZtKTsKfTsKIyA3MjEgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9qYXZhL2puaS5oIgpzdHJ1Y3QgSk5JRW52XyB7CiAgICBjb25zdCBzdHJ1Y3Qg
Sk5JTmF0aXZlSW50ZXJmYWNlXyAqZnVuY3Rpb25zOwogICAgdm9pZCAqcmVzZXJ2ZWQwOwogICAg
dm9pZCAqcmVzZXJ2ZWQxWzZdOwoKCiAgICBqaW50IEdldFZlcnNpb24oKSB7CiAgICAgICAgcmV0
dXJuIGZ1bmN0aW9ucy0+R2V0VmVyc2lvbih0aGlzKTsKICAgIH0KICAgIGpjbGFzcyBEZWZpbmVD
bGFzcyhjb25zdCBjaGFyICpuYW1lLCBqb2JqZWN0IGxvYWRlciwgY29uc3QgamJ5dGUgKmJ1ZiwK
ICAgICAgICAgICAgICAgICAgICAgICBqc2l6ZSBsZW4pIHsKICAgICAgICByZXR1cm4gZnVuY3Rp
b25zLT5EZWZpbmVDbGFzcyh0aGlzLCBuYW1lLCBsb2FkZXIsIGJ1ZiwgbGVuKTsKICAgIH0KICAg
IGpjbGFzcyBGaW5kQ2xhc3MoY29uc3QgY2hhciAqbmFtZSkgewogICAgICAgIHJldHVybiBmdW5j
dGlvbnMtPkZpbmRDbGFzcyh0aGlzLCBuYW1lKTsKICAgIH0KICAgIGpjbGFzcyBHZXRTdXBlcmNs
YXNzKGpjbGFzcyBzdWIpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5HZXRTdXBlcmNsYXNz
KHRoaXMsIHN1Yik7CiAgICB9CiAgICBqYm9vbGVhbiBJc0Fzc2lnbmFibGVGcm9tKGpjbGFzcyBz
dWIsIGpjbGFzcyBzdXApIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5Jc0Fzc2lnbmFibGVG
cm9tKHRoaXMsIHN1Yiwgc3VwKTsKICAgIH0KCiAgICBqaW50IFRocm93KGp0aHJvd2FibGUgb2Jq
KSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+VGhyb3codGhpcywgb2JqKTsKICAgIH0KICAg
IGppbnQgVGhyb3dOZXcoamNsYXNzIGNsYXp6LCBjb25zdCBjaGFyICptc2cpIHsKICAgICAgICBy
ZXR1cm4gZnVuY3Rpb25zLT5UaHJvd05ldyh0aGlzLCBjbGF6eiwgbXNnKTsKICAgIH0KICAgIGp0
aHJvd2FibGUgRXhjZXB0aW9uT2NjdXJyZWQoKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+
RXhjZXB0aW9uT2NjdXJyZWQodGhpcyk7CiAgICB9CiAgICB2b2lkIEV4Y2VwdGlvbkRlc2NyaWJl
KCkgewogICAgICAgIGZ1bmN0aW9ucy0+RXhjZXB0aW9uRGVzY3JpYmUodGhpcyk7CiAgICB9CiAg
ICB2b2lkIEV4Y2VwdGlvbkNsZWFyKCkgewogICAgICAgIGZ1bmN0aW9ucy0+RXhjZXB0aW9uQ2xl
YXIodGhpcyk7CiAgICB9CiAgICB2b2lkIEZhdGFsRXJyb3IoY29uc3QgY2hhciAqbXNnKSB7CiAg
ICAgICAgZnVuY3Rpb25zLT5GYXRhbEVycm9yKHRoaXMsIG1zZyk7CiAgICB9CgogICAgam9iamVj
dCBOZXdHbG9iYWxSZWYoam9iamVjdCBsb2JqKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+
TmV3R2xvYmFsUmVmKHRoaXMsbG9iaik7CiAgICB9CiAgICB2b2lkIERlbGV0ZUdsb2JhbFJlZihq
b2JqZWN0IGdyZWYpIHsKICAgICAgICBmdW5jdGlvbnMtPkRlbGV0ZUdsb2JhbFJlZih0aGlzLGdy
ZWYpOwogICAgfQogICAgdm9pZCBEZWxldGVMb2NhbFJlZihqb2JqZWN0IG9iaikgewogICAgICAg
IGZ1bmN0aW9ucy0+RGVsZXRlTG9jYWxSZWYodGhpcywgb2JqKTsKICAgIH0KCiAgICBqYm9vbGVh
biBJc1NhbWVPYmplY3Qoam9iamVjdCBvYmoxLCBqb2JqZWN0IG9iajIpIHsKICAgICAgICByZXR1
cm4gZnVuY3Rpb25zLT5Jc1NhbWVPYmplY3QodGhpcyxvYmoxLG9iajIpOwogICAgfQoKICAgIGpv
YmplY3QgQWxsb2NPYmplY3QoamNsYXNzIGNsYXp6KSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
cy0+QWxsb2NPYmplY3QodGhpcyxjbGF6eik7CiAgICB9CiAgICBqb2JqZWN0IE5ld09iamVjdChq
Y2xhc3MgY2xhenosIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKSB7CiAgICAgICAgdmFfbGlzdCBh
cmdzOwogICAgICAgIGpvYmplY3QgcmVzdWx0OwogICAgICAgIF9fYnVpbHRpbl9zdGRhcmdfc3Rh
cnQoKGFyZ3MpLG1ldGhvZElEKTsKICAgICAgICByZXN1bHQgPSBmdW5jdGlvbnMtPk5ld09iamVj
dFYodGhpcyxjbGF6eixtZXRob2RJRCxhcmdzKTsKICAgICAgICBfX2J1aWx0aW5fdmFfZW5kKGFy
Z3MpOwogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CiAgICBqb2JqZWN0IE5ld09iamVjdFYo
amNsYXNzIGNsYXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICAgICAgICAgICAgICAgICAg
dmFfbGlzdCBhcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+TmV3T2JqZWN0Vih0aGlz
LGNsYXp6LG1ldGhvZElELGFyZ3MpOwogICAgfQogICAgam9iamVjdCBOZXdPYmplY3RBKGpjbGFz
cyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElELAogICAgICAgICAgICAgICAgICAgICAgIGp2YWx1
ZSAqYXJncykgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPk5ld09iamVjdEEodGhpcyxjbGF6
eixtZXRob2RJRCxhcmdzKTsKICAgIH0KCiAgICBqY2xhc3MgR2V0T2JqZWN0Q2xhc3Moam9iamVj
dCBvYmopIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5HZXRPYmplY3RDbGFzcyh0aGlzLG9i
aik7CiAgICB9CiAgICBqYm9vbGVhbiBJc0luc3RhbmNlT2Yoam9iamVjdCBvYmosIGpjbGFzcyBj
bGF6eikgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPklzSW5zdGFuY2VPZih0aGlzLG9iaixj
bGF6eik7CiAgICB9CgogICAgam1ldGhvZElEIEdldE1ldGhvZElEKGpjbGFzcyBjbGF6eiwgY29u
c3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzaWcp
IHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5HZXRNZXRob2RJRCh0aGlzLGNsYXp6LG5hbWUs
c2lnKTsKICAgIH0KCiAgICBqb2JqZWN0IENhbGxPYmplY3RNZXRob2Qoam9iamVjdCBvYmosIGpt
ZXRob2RJRCBtZXRob2RJRCwgLi4uKSB7CiAgICAgICAgdmFfbGlzdCBhcmdzOwogICAgICAgIGpv
YmplY3QgcmVzdWx0OwogICAgICAgIF9fYnVpbHRpbl9zdGRhcmdfc3RhcnQoKGFyZ3MpLG1ldGhv
ZElEKTsKICAgICAgICByZXN1bHQgPSBmdW5jdGlvbnMtPkNhbGxPYmplY3RNZXRob2RWKHRoaXMs
b2JqLG1ldGhvZElELGFyZ3MpOwogICAgICAgIF9fYnVpbHRpbl92YV9lbmQoYXJncyk7CiAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KICAgIGpvYmplY3QgQ2FsbE9iamVjdE1ldGhvZFYoam9i
amVjdCBvYmosIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAgICAgICAgICAgICAgICAgICAgdmFf
bGlzdCBhcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+Q2FsbE9iamVjdE1ldGhvZFYo
dGhpcyxvYmosbWV0aG9kSUQsYXJncyk7CiAgICB9CiAgICBqb2JqZWN0IENhbGxPYmplY3RNZXRo
b2RBKGpvYmplY3Qgb2JqLCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICAgICAgICAgICAgICAg
ICAgIGp2YWx1ZSAqIGFyZ3MpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5DYWxsT2JqZWN0
TWV0aG9kQSh0aGlzLG9iaixtZXRob2RJRCxhcmdzKTsKICAgIH0KCiAgICBqYm9vbGVhbiBDYWxs
Qm9vbGVhbk1ldGhvZChqb2JqZWN0IG9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGptZXRob2RJRCBtZXRob2RJRCwgLi4uKSB7CiAgICAgICAgdmFfbGlzdCBhcmdzOwogICAgICAg
IGpib29sZWFuIHJlc3VsdDsKICAgICAgICBfX2J1aWx0aW5fc3RkYXJnX3N0YXJ0KChhcmdzKSxt
ZXRob2RJRCk7CiAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zLT5DYWxsQm9vbGVhbk1ldGhvZFYo
dGhpcyxvYmosbWV0aG9kSUQsYXJncyk7CiAgICAgICAgX19idWlsdGluX3ZhX2VuZChhcmdzKTsK
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQogICAgamJvb2xlYW4gQ2FsbEJvb2xlYW5NZXRo
b2RWKGpvYmplY3Qgb2JqLCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFfbGlzdCBhcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+Q2Fs
bEJvb2xlYW5NZXRob2RWKHRoaXMsb2JqLG1ldGhvZElELGFyZ3MpOwogICAgfQogICAgamJvb2xl
YW4gQ2FsbEJvb2xlYW5NZXRob2RBKGpvYmplY3Qgb2JqLCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganZhbHVlICogYXJncykgewogICAgICAgIHJl
dHVybiBmdW5jdGlvbnMtPkNhbGxCb29sZWFuTWV0aG9kQSh0aGlzLG9iaixtZXRob2RJRCwgYXJn
cyk7CiAgICB9CgogICAgamJ5dGUgQ2FsbEJ5dGVNZXRob2Qoam9iamVjdCBvYmosIGptZXRob2RJ
RCBtZXRob2RJRCwgLi4uKSB7CiAgICAgICAgdmFfbGlzdCBhcmdzOwogICAgICAgIGpieXRlIHJl
c3VsdDsKICAgICAgICBfX2J1aWx0aW5fc3RkYXJnX3N0YXJ0KChhcmdzKSxtZXRob2RJRCk7CiAg
ICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zLT5DYWxsQnl0ZU1ldGhvZFYodGhpcyxvYmosbWV0aG9k
SUQsYXJncyk7CiAgICAgICAgX19idWlsdGluX3ZhX2VuZChhcmdzKTsKICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgfQogICAgamJ5dGUgQ2FsbEJ5dGVNZXRob2RWKGpvYmplY3Qgb2JqLCBqbWV0
aG9kSUQgbWV0aG9kSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCBhcmdzKSB7
CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+Q2FsbEJ5dGVNZXRob2RWKHRoaXMsb2JqLG1ldGhv
ZElELGFyZ3MpOwogICAgfQogICAgamJ5dGUgQ2FsbEJ5dGVNZXRob2RBKGpvYmplY3Qgb2JqLCBq
bWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAganZhbHVlICogYXJn
cykgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkNhbGxCeXRlTWV0aG9kQSh0aGlzLG9iaixt
ZXRob2RJRCxhcmdzKTsKICAgIH0KCiAgICBqY2hhciBDYWxsQ2hhck1ldGhvZChqb2JqZWN0IG9i
aiwgam1ldGhvZElEIG1ldGhvZElELCAuLi4pIHsKICAgICAgICB2YV9saXN0IGFyZ3M7CiAgICAg
ICAgamNoYXIgcmVzdWx0OwogICAgICAgIF9fYnVpbHRpbl9zdGRhcmdfc3RhcnQoKGFyZ3MpLG1l
dGhvZElEKTsKICAgICAgICByZXN1bHQgPSBmdW5jdGlvbnMtPkNhbGxDaGFyTWV0aG9kVih0aGlz
LG9iaixtZXRob2RJRCxhcmdzKTsKICAgICAgICBfX2J1aWx0aW5fdmFfZW5kKGFyZ3MpOwogICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICB9CiAgICBqY2hhciBDYWxsQ2hhck1ldGhvZFYoam9iamVj
dCBvYmosIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9s
aXN0IGFyZ3MpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5DYWxsQ2hhck1ldGhvZFYodGhp
cyxvYmosbWV0aG9kSUQsYXJncyk7CiAgICB9CiAgICBqY2hhciBDYWxsQ2hhck1ldGhvZEEoam9i
amVjdCBvYmosIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICBq
dmFsdWUgKiBhcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+Q2FsbENoYXJNZXRob2RB
KHRoaXMsb2JqLG1ldGhvZElELGFyZ3MpOwogICAgfQoKICAgIGpzaG9ydCBDYWxsU2hvcnRNZXRo
b2Qoam9iamVjdCBvYmosIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKSB7CiAgICAgICAgdmFfbGlz
dCBhcmdzOwogICAgICAgIGpzaG9ydCByZXN1bHQ7CiAgICAgICAgX19idWlsdGluX3N0ZGFyZ19z
dGFydCgoYXJncyksbWV0aG9kSUQpOwogICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9ucy0+Q2FsbFNo
b3J0TWV0aG9kVih0aGlzLG9iaixtZXRob2RJRCxhcmdzKTsKICAgICAgICBfX2J1aWx0aW5fdmFf
ZW5kKGFyZ3MpOwogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CiAgICBqc2hvcnQgQ2FsbFNo
b3J0TWV0aG9kVihqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1ldGhvZElELAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFfbGlzdCBhcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+
Q2FsbFNob3J0TWV0aG9kVih0aGlzLG9iaixtZXRob2RJRCxhcmdzKTsKICAgIH0KICAgIGpzaG9y
dCBDYWxsU2hvcnRNZXRob2RBKGpvYmplY3Qgb2JqLCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqdmFsdWUgKiBhcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1
bmN0aW9ucy0+Q2FsbFNob3J0TWV0aG9kQSh0aGlzLG9iaixtZXRob2RJRCxhcmdzKTsKICAgIH0K
CiAgICBqaW50IENhbGxJbnRNZXRob2Qoam9iamVjdCBvYmosIGptZXRob2RJRCBtZXRob2RJRCwg
Li4uKSB7CiAgICAgICAgdmFfbGlzdCBhcmdzOwogICAgICAgIGppbnQgcmVzdWx0OwogICAgICAg
IF9fYnVpbHRpbl9zdGRhcmdfc3RhcnQoKGFyZ3MpLG1ldGhvZElEKTsKICAgICAgICByZXN1bHQg
PSBmdW5jdGlvbnMtPkNhbGxJbnRNZXRob2RWKHRoaXMsb2JqLG1ldGhvZElELGFyZ3MpOwogICAg
ICAgIF9fYnVpbHRpbl92YV9lbmQoYXJncyk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0K
ICAgIGppbnQgQ2FsbEludE1ldGhvZFYoam9iamVjdCBvYmosIGptZXRob2RJRCBtZXRob2RJRCwK
ICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCBhcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1
bmN0aW9ucy0+Q2FsbEludE1ldGhvZFYodGhpcyxvYmosbWV0aG9kSUQsYXJncyk7CiAgICB9CiAg
ICBqaW50IENhbGxJbnRNZXRob2RBKGpvYmplY3Qgb2JqLCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAg
ICAgICAgICAgICAgICAgICAgICAgIGp2YWx1ZSAqIGFyZ3MpIHsKICAgICAgICByZXR1cm4gZnVu
Y3Rpb25zLT5DYWxsSW50TWV0aG9kQSh0aGlzLG9iaixtZXRob2RJRCxhcmdzKTsKICAgIH0KCiAg
ICBqbG9uZyBDYWxsTG9uZ01ldGhvZChqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1ldGhvZElELCAu
Li4pIHsKICAgICAgICB2YV9saXN0IGFyZ3M7CiAgICAgICAgamxvbmcgcmVzdWx0OwogICAgICAg
IF9fYnVpbHRpbl9zdGRhcmdfc3RhcnQoKGFyZ3MpLG1ldGhvZElEKTsKICAgICAgICByZXN1bHQg
PSBmdW5jdGlvbnMtPkNhbGxMb25nTWV0aG9kVih0aGlzLG9iaixtZXRob2RJRCxhcmdzKTsKICAg
ICAgICBfX2J1aWx0aW5fdmFfZW5kKGFyZ3MpOwogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9
CiAgICBqbG9uZyBDYWxsTG9uZ01ldGhvZFYoam9iamVjdCBvYmosIGptZXRob2RJRCBtZXRob2RJ
RCwKICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0IGFyZ3MpIHsKICAgICAgICByZXR1
cm4gZnVuY3Rpb25zLT5DYWxsTG9uZ01ldGhvZFYodGhpcyxvYmosbWV0aG9kSUQsYXJncyk7CiAg
ICB9CiAgICBqbG9uZyBDYWxsTG9uZ01ldGhvZEEoam9iamVjdCBvYmosIGptZXRob2RJRCBtZXRo
b2RJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICBqdmFsdWUgKiBhcmdzKSB7CiAgICAgICAg
cmV0dXJuIGZ1bmN0aW9ucy0+Q2FsbExvbmdNZXRob2RBKHRoaXMsb2JqLG1ldGhvZElELGFyZ3Mp
OwogICAgfQoKICAgIGpmbG9hdCBDYWxsRmxvYXRNZXRob2Qoam9iamVjdCBvYmosIGptZXRob2RJ
RCBtZXRob2RJRCwgLi4uKSB7CiAgICAgICAgdmFfbGlzdCBhcmdzOwogICAgICAgIGpmbG9hdCBy
ZXN1bHQ7CiAgICAgICAgX19idWlsdGluX3N0ZGFyZ19zdGFydCgoYXJncyksbWV0aG9kSUQpOwog
ICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9ucy0+Q2FsbEZsb2F0TWV0aG9kVih0aGlzLG9iaixtZXRo
b2RJRCxhcmdzKTsKICAgICAgICBfX2J1aWx0aW5fdmFfZW5kKGFyZ3MpOwogICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICB9CiAgICBqZmxvYXQgQ2FsbEZsb2F0TWV0aG9kVihqb2JqZWN0IG9iaiwg
am1ldGhvZElEIG1ldGhvZElELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCBh
cmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+Q2FsbEZsb2F0TWV0aG9kVih0aGlzLG9i
aixtZXRob2RJRCxhcmdzKTsKICAgIH0KICAgIGpmbG9hdCBDYWxsRmxvYXRNZXRob2RBKGpvYmpl
Y3Qgb2JqLCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
dmFsdWUgKiBhcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+Q2FsbEZsb2F0TWV0aG9k
QSh0aGlzLG9iaixtZXRob2RJRCxhcmdzKTsKICAgIH0KCiAgICBqZG91YmxlIENhbGxEb3VibGVN
ZXRob2Qoam9iamVjdCBvYmosIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKSB7CiAgICAgICAgdmFf
bGlzdCBhcmdzOwogICAgICAgIGpkb3VibGUgcmVzdWx0OwogICAgICAgIF9fYnVpbHRpbl9zdGRh
cmdfc3RhcnQoKGFyZ3MpLG1ldGhvZElEKTsKICAgICAgICByZXN1bHQgPSBmdW5jdGlvbnMtPkNh
bGxEb3VibGVNZXRob2RWKHRoaXMsb2JqLG1ldGhvZElELGFyZ3MpOwogICAgICAgIF9fYnVpbHRp
bl92YV9lbmQoYXJncyk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KICAgIGpkb3VibGUg
Q2FsbERvdWJsZU1ldGhvZFYoam9iamVjdCBvYmosIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAg
ICAgICAgICAgICAgICAgICAgdmFfbGlzdCBhcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
cy0+Q2FsbERvdWJsZU1ldGhvZFYodGhpcyxvYmosbWV0aG9kSUQsYXJncyk7CiAgICB9CiAgICBq
ZG91YmxlIENhbGxEb3VibGVNZXRob2RBKGpvYmplY3Qgb2JqLCBqbWV0aG9kSUQgbWV0aG9kSUQs
CiAgICAgICAgICAgICAgICAgICAgICAgIGp2YWx1ZSAqIGFyZ3MpIHsKICAgICAgICByZXR1cm4g
ZnVuY3Rpb25zLT5DYWxsRG91YmxlTWV0aG9kQSh0aGlzLG9iaixtZXRob2RJRCxhcmdzKTsKICAg
IH0KCiAgICB2b2lkIENhbGxWb2lkTWV0aG9kKGpvYmplY3Qgb2JqLCBqbWV0aG9kSUQgbWV0aG9k
SUQsIC4uLikgewogICAgICAgIHZhX2xpc3QgYXJnczsKICAgICAgICBfX2J1aWx0aW5fc3RkYXJn
X3N0YXJ0KChhcmdzKSxtZXRob2RJRCk7CiAgICAgICAgZnVuY3Rpb25zLT5DYWxsVm9pZE1ldGhv
ZFYodGhpcyxvYmosbWV0aG9kSUQsYXJncyk7CiAgICAgICAgX19idWlsdGluX3ZhX2VuZChhcmdz
KTsKICAgIH0KICAgIHZvaWQgQ2FsbFZvaWRNZXRob2RWKGpvYmplY3Qgb2JqLCBqbWV0aG9kSUQg
bWV0aG9kSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0IGFyZ3MpIHsKICAgICAg
ICBmdW5jdGlvbnMtPkNhbGxWb2lkTWV0aG9kVih0aGlzLG9iaixtZXRob2RJRCxhcmdzKTsKICAg
IH0KICAgIHZvaWQgQ2FsbFZvaWRNZXRob2RBKGpvYmplY3Qgb2JqLCBqbWV0aG9kSUQgbWV0aG9k
SUQsCiAgICAgICAgICAgICAgICAgICAgICAgICBqdmFsdWUgKiBhcmdzKSB7CiAgICAgICAgZnVu
Y3Rpb25zLT5DYWxsVm9pZE1ldGhvZEEodGhpcyxvYmosbWV0aG9kSUQsYXJncyk7CiAgICB9Cgog
ICAgam9iamVjdCBDYWxsTm9udmlydHVhbE9iamVjdE1ldGhvZChqb2JqZWN0IG9iaiwgamNsYXNz
IGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqbWV0aG9kSUQg
bWV0aG9kSUQsIC4uLikgewogICAgICAgIHZhX2xpc3QgYXJnczsKICAgICAgICBqb2JqZWN0IHJl
c3VsdDsKICAgICAgICBfX2J1aWx0aW5fc3RkYXJnX3N0YXJ0KChhcmdzKSxtZXRob2RJRCk7CiAg
ICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zLT5DYWxsTm9udmlydHVhbE9iamVjdE1ldGhvZFYodGhp
cyxvYmosY2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWV0aG9kSUQsYXJncyk7CiAgICAgICAgX19idWlsdGluX3ZhX2VuZChhcmdz
KTsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQogICAgam9iamVjdCBDYWxsTm9udmlydHVh
bE9iamVjdE1ldGhvZFYoam9iamVjdCBvYmosIGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwgdmFfbGlzdCBhcmdz
KSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+Q2FsbE5vbnZpcnR1YWxPYmplY3RNZXRob2RW
KHRoaXMsb2JqLGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtZXRob2RJRCxhcmdzKTsKICAgIH0KICAgIGpvYmplY3QgQ2FsbE5vbnZp
cnR1YWxPYmplY3RNZXRob2RBKGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenosCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqbWV0aG9kSUQgbWV0aG9kSUQsIGp2YWx1ZSAq
IGFyZ3MpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5DYWxsTm9udmlydHVhbE9iamVjdE1l
dGhvZEEodGhpcyxvYmosY2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1ldGhvZElELGFyZ3MpOwogICAgfQoKICAgIGpib29sZWFuIENh
bGxOb252aXJ0dWFsQm9vbGVhbk1ldGhvZChqb2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwg
Li4uKSB7CiAgICAgICAgdmFfbGlzdCBhcmdzOwogICAgICAgIGpib29sZWFuIHJlc3VsdDsKICAg
ICAgICBfX2J1aWx0aW5fc3RkYXJnX3N0YXJ0KChhcmdzKSxtZXRob2RJRCk7CiAgICAgICAgcmVz
dWx0ID0gZnVuY3Rpb25zLT5DYWxsTm9udmlydHVhbEJvb2xlYW5NZXRob2RWKHRoaXMsb2JqLGNs
YXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtZXRob2RJRCxhcmdzKTsKICAgICAgICBfX2J1aWx0aW5fdmFfZW5kKGFyZ3MpOwogICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICB9CiAgICBqYm9vbGVhbiBDYWxsTm9udmlydHVhbEJvb2xl
YW5NZXRob2RWKGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenosCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwgdmFfbGlzdCBhcmdzKSB7
CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+Q2FsbE5vbnZpcnR1YWxCb29sZWFuTWV0aG9kVih0
aGlzLG9iaixjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1ldGhvZElELGFyZ3MpOwogICAgfQogICAgamJvb2xlYW4gQ2FsbE5vbnZp
cnR1YWxCb29sZWFuTWV0aG9kQShqb2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqbWV0aG9kSUQgbWV0aG9kSUQsIGp2YWx1
ZSAqIGFyZ3MpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5DYWxsTm9udmlydHVhbEJvb2xl
YW5NZXRob2RBKHRoaXMsb2JqLGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kSUQsIGFyZ3MpOwogICAgfQoKICAgIGpieXRl
IENhbGxOb252aXJ0dWFsQnl0ZU1ldGhvZChqb2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKSB7
CiAgICAgICAgdmFfbGlzdCBhcmdzOwogICAgICAgIGpieXRlIHJlc3VsdDsKICAgICAgICBfX2J1
aWx0aW5fc3RkYXJnX3N0YXJ0KChhcmdzKSxtZXRob2RJRCk7CiAgICAgICAgcmVzdWx0ID0gZnVu
Y3Rpb25zLT5DYWxsTm9udmlydHVhbEJ5dGVNZXRob2RWKHRoaXMsb2JqLGNsYXp6LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2RJRCxh
cmdzKTsKICAgICAgICBfX2J1aWx0aW5fdmFfZW5kKGFyZ3MpOwogICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICB9CiAgICBqYnl0ZSBDYWxsTm9udmlydHVhbEJ5dGVNZXRob2RWKGpvYmplY3Qgb2Jq
LCBqY2xhc3MgY2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGptZXRo
b2RJRCBtZXRob2RJRCwgdmFfbGlzdCBhcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+
Q2FsbE5vbnZpcnR1YWxCeXRlTWV0aG9kVih0aGlzLG9iaixjbGF6eiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZElELGFyZ3MpOwogICAg
fQogICAgamJ5dGUgQ2FsbE5vbnZpcnR1YWxCeXRlTWV0aG9kQShqb2JqZWN0IG9iaiwgamNsYXNz
IGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqbWV0aG9kSUQgbWV0
aG9kSUQsIGp2YWx1ZSAqIGFyZ3MpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5DYWxsTm9u
dmlydHVhbEJ5dGVNZXRob2RBKHRoaXMsb2JqLGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kSUQsYXJncyk7CiAgICB9CgogICAg
amNoYXIgQ2FsbE5vbnZpcnR1YWxDaGFyTWV0aG9kKGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenos
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam1ldGhvZElEIG1ldGhvZElELCAu
Li4pIHsKICAgICAgICB2YV9saXN0IGFyZ3M7CiAgICAgICAgamNoYXIgcmVzdWx0OwogICAgICAg
IF9fYnVpbHRpbl9zdGRhcmdfc3RhcnQoKGFyZ3MpLG1ldGhvZElEKTsKICAgICAgICByZXN1bHQg
PSBmdW5jdGlvbnMtPkNhbGxOb252aXJ0dWFsQ2hhck1ldGhvZFYodGhpcyxvYmosY2xhenosCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhv
ZElELGFyZ3MpOwogICAgICAgIF9fYnVpbHRpbl92YV9lbmQoYXJncyk7CiAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgIH0KICAgIGpjaGFyIENhbGxOb252aXJ0dWFsQ2hhck1ldGhvZFYoam9iamVj
dCBvYmosIGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
am1ldGhvZElEIG1ldGhvZElELCB2YV9saXN0IGFyZ3MpIHsKICAgICAgICByZXR1cm4gZnVuY3Rp
b25zLT5DYWxsTm9udmlydHVhbENoYXJNZXRob2RWKHRoaXMsb2JqLGNsYXp6LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kSUQsYXJncyk7
CiAgICB9CiAgICBqY2hhciBDYWxsTm9udmlydHVhbENoYXJNZXRob2RBKGpvYmplY3Qgb2JqLCBq
Y2xhc3MgY2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGptZXRob2RJ
RCBtZXRob2RJRCwganZhbHVlICogYXJncykgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkNh
bGxOb252aXJ0dWFsQ2hhck1ldGhvZEEodGhpcyxvYmosY2xhenosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2RJRCxhcmdzKTsKICAgIH0K
CiAgICBqc2hvcnQgQ2FsbE5vbnZpcnR1YWxTaG9ydE1ldGhvZChqb2JqZWN0IG9iaiwgamNsYXNz
IGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam1ldGhvZElEIG1l
dGhvZElELCAuLi4pIHsKICAgICAgICB2YV9saXN0IGFyZ3M7CiAgICAgICAganNob3J0IHJlc3Vs
dDsKICAgICAgICBfX2J1aWx0aW5fc3RkYXJnX3N0YXJ0KChhcmdzKSxtZXRob2RJRCk7CiAgICAg
ICAgcmVzdWx0ID0gZnVuY3Rpb25zLT5DYWxsTm9udmlydHVhbFNob3J0TWV0aG9kVih0aGlzLG9i
aixjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1ldGhvZElELGFyZ3MpOwogICAgICAgIF9fYnVpbHRpbl92YV9lbmQoYXJncyk7CiAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KICAgIGpzaG9ydCBDYWxsTm9udmlydHVhbFNob3J0
TWV0aG9kVihqb2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwgdmFfbGlzdCBhcmdzKSB7CiAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9ucy0+Q2FsbE5vbnZpcnR1YWxTaG9ydE1ldGhvZFYodGhpcyxvYmos
Y2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWV0aG9kSUQsYXJncyk7CiAgICB9CiAgICBqc2hvcnQgQ2FsbE5vbnZpcnR1YWxTaG9ydE1l
dGhvZEEoam9iamVjdCBvYmosIGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqbWV0aG9kSUQgbWV0aG9kSUQsIGp2YWx1ZSAqIGFyZ3MpIHsKICAgICAg
ICByZXR1cm4gZnVuY3Rpb25zLT5DYWxsTm9udmlydHVhbFNob3J0TWV0aG9kQSh0aGlzLG9iaixj
bGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtZXRob2RJRCxhcmdzKTsKICAgIH0KCiAgICBqaW50IENhbGxOb252aXJ0dWFsSW50TWV0aG9k
KGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKSB7CiAgICAgICAgdmFfbGlzdCBhcmdzOwogICAg
ICAgIGppbnQgcmVzdWx0OwogICAgICAgIF9fYnVpbHRpbl9zdGRhcmdfc3RhcnQoKGFyZ3MpLG1l
dGhvZElEKTsKICAgICAgICByZXN1bHQgPSBmdW5jdGlvbnMtPkNhbGxOb252aXJ0dWFsSW50TWV0
aG9kVih0aGlzLG9iaixjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtZXRob2RJRCxhcmdzKTsKICAgICAgICBfX2J1aWx0aW5fdmFfZW5k
KGFyZ3MpOwogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CiAgICBqaW50IENhbGxOb252aXJ0
dWFsSW50TWV0aG9kVihqb2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgam1ldGhvZElEIG1ldGhvZElELCB2YV9saXN0IGFyZ3MpIHsKICAg
ICAgICByZXR1cm4gZnVuY3Rpb25zLT5DYWxsTm9udmlydHVhbEludE1ldGhvZFYodGhpcyxvYmos
Y2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1ldGhvZElELGFyZ3MpOwogICAgfQogICAgamludCBDYWxsTm9udmlydHVhbEludE1ldGhvZEEo
am9iamVjdCBvYmosIGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGptZXRob2RJRCBtZXRob2RJRCwganZhbHVlICogYXJncykgewogICAgICAgIHJldHVybiBm
dW5jdGlvbnMtPkNhbGxOb252aXJ0dWFsSW50TWV0aG9kQSh0aGlzLG9iaixjbGF6eiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kSUQsYXJn
cyk7CiAgICB9CgogICAgamxvbmcgQ2FsbE5vbnZpcnR1YWxMb25nTWV0aG9kKGpvYmplY3Qgb2Jq
LCBqY2xhc3MgY2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam1ldGhv
ZElEIG1ldGhvZElELCAuLi4pIHsKICAgICAgICB2YV9saXN0IGFyZ3M7CiAgICAgICAgamxvbmcg
cmVzdWx0OwogICAgICAgIF9fYnVpbHRpbl9zdGRhcmdfc3RhcnQoKGFyZ3MpLG1ldGhvZElEKTsK
ICAgICAgICByZXN1bHQgPSBmdW5jdGlvbnMtPkNhbGxOb252aXJ0dWFsTG9uZ01ldGhvZFYodGhp
cyxvYmosY2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1ldGhvZElELGFyZ3MpOwogICAgICAgIF9fYnVpbHRpbl92YV9lbmQoYXJncyk7
CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KICAgIGpsb25nIENhbGxOb252aXJ0dWFsTG9u
Z01ldGhvZFYoam9iamVjdCBvYmosIGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgam1ldGhvZElEIG1ldGhvZElELCB2YV9saXN0IGFyZ3MpIHsKICAgICAg
ICByZXR1cm4gZnVuY3Rpb25zLT5DYWxsTm9udmlydHVhbExvbmdNZXRob2RWKHRoaXMsb2JqLGNs
YXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWV0aG9kSUQsYXJncyk7CiAgICB9CiAgICBqbG9uZyBDYWxsTm9udmlydHVhbExvbmdNZXRob2RB
KGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwganZhbHVlICogYXJncykgewogICAgICAgIHJldHVy
biBmdW5jdGlvbnMtPkNhbGxOb252aXJ0dWFsTG9uZ01ldGhvZEEodGhpcyxvYmosY2xhenosCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2RJ
RCxhcmdzKTsKICAgIH0KCiAgICBqZmxvYXQgQ2FsbE5vbnZpcnR1YWxGbG9hdE1ldGhvZChqb2Jq
ZWN0IG9iaiwgamNsYXNzIGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgam1ldGhvZElEIG1ldGhvZElELCAuLi4pIHsKICAgICAgICB2YV9saXN0IGFyZ3M7CiAgICAg
ICAgamZsb2F0IHJlc3VsdDsKICAgICAgICBfX2J1aWx0aW5fc3RkYXJnX3N0YXJ0KChhcmdzKSxt
ZXRob2RJRCk7CiAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zLT5DYWxsTm9udmlydHVhbEZsb2F0
TWV0aG9kVih0aGlzLG9iaixjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZElELGFyZ3MpOwogICAgICAgIF9fYnVpbHRpbl92
YV9lbmQoYXJncyk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KICAgIGpmbG9hdCBDYWxs
Tm9udmlydHVhbEZsb2F0TWV0aG9kVihqb2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0IGFyZ3MpIHsKICAgICAgICBy
ZXR1cm4gZnVuY3Rpb25zLT5DYWxsTm9udmlydHVhbEZsb2F0TWV0aG9kVih0aGlzLG9iaixjbGF6
eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
ZXRob2RJRCxhcmdzKTsKICAgIH0KICAgIGpmbG9hdCBDYWxsTm9udmlydHVhbEZsb2F0TWV0aG9k
QShqb2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqdmFsdWUgKiBhcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+Q2Fs
bE5vbnZpcnR1YWxGbG9hdE1ldGhvZEEodGhpcyxvYmosY2xhenosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kSUQsYXJncyk7CiAgICB9
CgogICAgamRvdWJsZSBDYWxsTm9udmlydHVhbERvdWJsZU1ldGhvZChqb2JqZWN0IG9iaiwgamNs
YXNzIGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqbWV0aG9k
SUQgbWV0aG9kSUQsIC4uLikgewogICAgICAgIHZhX2xpc3QgYXJnczsKICAgICAgICBqZG91Ymxl
IHJlc3VsdDsKICAgICAgICBfX2J1aWx0aW5fc3RkYXJnX3N0YXJ0KChhcmdzKSxtZXRob2RJRCk7
CiAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zLT5DYWxsTm9udmlydHVhbERvdWJsZU1ldGhvZFYo
dGhpcyxvYmosY2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWV0aG9kSUQsYXJncyk7CiAgICAgICAgX19idWlsdGluX3ZhX2VuZChh
cmdzKTsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQogICAgamRvdWJsZSBDYWxsTm9udmly
dHVhbERvdWJsZU1ldGhvZFYoam9iamVjdCBvYmosIGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgYXJncykgewogICAgICAgIHJl
dHVybiBmdW5jdGlvbnMtPkNhbGxOb252aXJ0dWFsRG91YmxlTWV0aG9kVih0aGlzLG9iaixjbGF6
eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWV0aG9kSUQsYXJncyk7CiAgICB9CiAgICBqZG91YmxlIENhbGxOb252aXJ0dWFsRG91YmxlTWV0
aG9kQShqb2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgam1ldGhvZElEIG1ldGhvZElELAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAganZhbHVlICogYXJncykgewogICAgICAgIHJldHVybiBmdW5jdGlv
bnMtPkNhbGxOb252aXJ0dWFsRG91YmxlTWV0aG9kQSh0aGlzLG9iaixjbGF6eiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kSUQsYXJn
cyk7CiAgICB9CgogICAgdm9pZCBDYWxsTm9udmlydHVhbFZvaWRNZXRob2Qoam9iamVjdCBvYmos
IGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGptZXRob2RJ
RCBtZXRob2RJRCwgLi4uKSB7CiAgICAgICAgdmFfbGlzdCBhcmdzOwogICAgICAgIF9fYnVpbHRp
bl9zdGRhcmdfc3RhcnQoKGFyZ3MpLG1ldGhvZElEKTsKICAgICAgICBmdW5jdGlvbnMtPkNhbGxO
b252aXJ0dWFsVm9pZE1ldGhvZFYodGhpcyxvYmosY2xhenosbWV0aG9kSUQsYXJncyk7CiAgICAg
ICAgX19idWlsdGluX3ZhX2VuZChhcmdzKTsKICAgIH0KICAgIHZvaWQgQ2FsbE5vbnZpcnR1YWxW
b2lkTWV0aG9kVihqb2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YV9saXN0IGFyZ3MpIHsKICAgICAgICBmdW5jdGlvbnMtPkNhbGxOb252
aXJ0dWFsVm9pZE1ldGhvZFYodGhpcyxvYmosY2xhenosbWV0aG9kSUQsYXJncyk7CiAgICB9CiAg
ICB2b2lkIENhbGxOb252aXJ0dWFsVm9pZE1ldGhvZEEoam9iamVjdCBvYmosIGpjbGFzcyBjbGF6
eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqbWV0aG9kSUQgbWV0aG9kSUQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganZhbHVlICogYXJncykgewogICAg
ICAgIGZ1bmN0aW9ucy0+Q2FsbE5vbnZpcnR1YWxWb2lkTWV0aG9kQSh0aGlzLG9iaixjbGF6eixt
ZXRob2RJRCxhcmdzKTsKICAgIH0KCiAgICBqZmllbGRJRCBHZXRGaWVsZElEKGpjbGFzcyBjbGF6
eiwgY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq
c2lnKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+R2V0RmllbGRJRCh0aGlzLGNsYXp6LG5h
bWUsc2lnKTsKICAgIH0KCiAgICBqb2JqZWN0IEdldE9iamVjdEZpZWxkKGpvYmplY3Qgb2JqLCBq
ZmllbGRJRCBmaWVsZElEKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+R2V0T2JqZWN0Rmll
bGQodGhpcyxvYmosZmllbGRJRCk7CiAgICB9CiAgICBqYm9vbGVhbiBHZXRCb29sZWFuRmllbGQo
am9iamVjdCBvYmosIGpmaWVsZElEIGZpZWxkSUQpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25z
LT5HZXRCb29sZWFuRmllbGQodGhpcyxvYmosZmllbGRJRCk7CiAgICB9CiAgICBqYnl0ZSBHZXRC
eXRlRmllbGQoam9iamVjdCBvYmosIGpmaWVsZElEIGZpZWxkSUQpIHsKICAgICAgICByZXR1cm4g
ZnVuY3Rpb25zLT5HZXRCeXRlRmllbGQodGhpcyxvYmosZmllbGRJRCk7CiAgICB9CiAgICBqY2hh
ciBHZXRDaGFyRmllbGQoam9iamVjdCBvYmosIGpmaWVsZElEIGZpZWxkSUQpIHsKICAgICAgICBy
ZXR1cm4gZnVuY3Rpb25zLT5HZXRDaGFyRmllbGQodGhpcyxvYmosZmllbGRJRCk7CiAgICB9CiAg
ICBqc2hvcnQgR2V0U2hvcnRGaWVsZChqb2JqZWN0IG9iaiwgamZpZWxkSUQgZmllbGRJRCkgewog
ICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkdldFNob3J0RmllbGQodGhpcyxvYmosZmllbGRJRCk7
CiAgICB9CiAgICBqaW50IEdldEludEZpZWxkKGpvYmplY3Qgb2JqLCBqZmllbGRJRCBmaWVsZElE
KSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+R2V0SW50RmllbGQodGhpcyxvYmosZmllbGRJ
RCk7CiAgICB9CiAgICBqbG9uZyBHZXRMb25nRmllbGQoam9iamVjdCBvYmosIGpmaWVsZElEIGZp
ZWxkSUQpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5HZXRMb25nRmllbGQodGhpcyxvYmos
ZmllbGRJRCk7CiAgICB9CiAgICBqZmxvYXQgR2V0RmxvYXRGaWVsZChqb2JqZWN0IG9iaiwgamZp
ZWxkSUQgZmllbGRJRCkgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkdldEZsb2F0RmllbGQo
dGhpcyxvYmosZmllbGRJRCk7CiAgICB9CiAgICBqZG91YmxlIEdldERvdWJsZUZpZWxkKGpvYmpl
Y3Qgb2JqLCBqZmllbGRJRCBmaWVsZElEKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+R2V0
RG91YmxlRmllbGQodGhpcyxvYmosZmllbGRJRCk7CiAgICB9CgogICAgdm9pZCBTZXRPYmplY3RG
aWVsZChqb2JqZWN0IG9iaiwgamZpZWxkSUQgZmllbGRJRCwgam9iamVjdCB2YWwpIHsKICAgICAg
ICBmdW5jdGlvbnMtPlNldE9iamVjdEZpZWxkKHRoaXMsb2JqLGZpZWxkSUQsdmFsKTsKICAgIH0K
ICAgIHZvaWQgU2V0Qm9vbGVhbkZpZWxkKGpvYmplY3Qgb2JqLCBqZmllbGRJRCBmaWVsZElELAog
ICAgICAgICAgICAgICAgICAgICAgICAgamJvb2xlYW4gdmFsKSB7CiAgICAgICAgZnVuY3Rpb25z
LT5TZXRCb29sZWFuRmllbGQodGhpcyxvYmosZmllbGRJRCx2YWwpOwogICAgfQogICAgdm9pZCBT
ZXRCeXRlRmllbGQoam9iamVjdCBvYmosIGpmaWVsZElEIGZpZWxkSUQsCiAgICAgICAgICAgICAg
ICAgICAgICBqYnl0ZSB2YWwpIHsKICAgICAgICBmdW5jdGlvbnMtPlNldEJ5dGVGaWVsZCh0aGlz
LG9iaixmaWVsZElELHZhbCk7CiAgICB9CiAgICB2b2lkIFNldENoYXJGaWVsZChqb2JqZWN0IG9i
aiwgamZpZWxkSUQgZmllbGRJRCwKICAgICAgICAgICAgICAgICAgICAgIGpjaGFyIHZhbCkgewog
ICAgICAgIGZ1bmN0aW9ucy0+U2V0Q2hhckZpZWxkKHRoaXMsb2JqLGZpZWxkSUQsdmFsKTsKICAg
IH0KICAgIHZvaWQgU2V0U2hvcnRGaWVsZChqb2JqZWN0IG9iaiwgamZpZWxkSUQgZmllbGRJRCwK
ICAgICAgICAgICAgICAgICAgICAgICBqc2hvcnQgdmFsKSB7CiAgICAgICAgZnVuY3Rpb25zLT5T
ZXRTaG9ydEZpZWxkKHRoaXMsb2JqLGZpZWxkSUQsdmFsKTsKICAgIH0KICAgIHZvaWQgU2V0SW50
RmllbGQoam9iamVjdCBvYmosIGpmaWVsZElEIGZpZWxkSUQsCiAgICAgICAgICAgICAgICAgICAg
IGppbnQgdmFsKSB7CiAgICAgICAgZnVuY3Rpb25zLT5TZXRJbnRGaWVsZCh0aGlzLG9iaixmaWVs
ZElELHZhbCk7CiAgICB9CiAgICB2b2lkIFNldExvbmdGaWVsZChqb2JqZWN0IG9iaiwgamZpZWxk
SUQgZmllbGRJRCwKICAgICAgICAgICAgICAgICAgICAgIGpsb25nIHZhbCkgewogICAgICAgIGZ1
bmN0aW9ucy0+U2V0TG9uZ0ZpZWxkKHRoaXMsb2JqLGZpZWxkSUQsdmFsKTsKICAgIH0KICAgIHZv
aWQgU2V0RmxvYXRGaWVsZChqb2JqZWN0IG9iaiwgamZpZWxkSUQgZmllbGRJRCwKICAgICAgICAg
ICAgICAgICAgICAgICBqZmxvYXQgdmFsKSB7CiAgICAgICAgZnVuY3Rpb25zLT5TZXRGbG9hdEZp
ZWxkKHRoaXMsb2JqLGZpZWxkSUQsdmFsKTsKICAgIH0KICAgIHZvaWQgU2V0RG91YmxlRmllbGQo
am9iamVjdCBvYmosIGpmaWVsZElEIGZpZWxkSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIGpk
b3VibGUgdmFsKSB7CiAgICAgICAgZnVuY3Rpb25zLT5TZXREb3VibGVGaWVsZCh0aGlzLG9iaixm
aWVsZElELHZhbCk7CiAgICB9CgogICAgam1ldGhvZElEIEdldFN0YXRpY01ldGhvZElEKGpjbGFz
cyBjbGF6eiwgY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyICpzaWcpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5HZXRTdGF0aWNN
ZXRob2RJRCh0aGlzLGNsYXp6LG5hbWUsc2lnKTsKICAgIH0KCiAgICBqb2JqZWN0IENhbGxTdGF0
aWNPYmplY3RNZXRob2QoamNsYXNzIGNsYXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLi4uKSB7CiAgICAgICAgdmFfbGlzdCBhcmdzOwogICAgICAg
IGpvYmplY3QgcmVzdWx0OwogICAgICAgIF9fYnVpbHRpbl9zdGRhcmdfc3RhcnQoKGFyZ3MpLG1l
dGhvZElEKTsKICAgICAgICByZXN1bHQgPSBmdW5jdGlvbnMtPkNhbGxTdGF0aWNPYmplY3RNZXRo
b2RWKHRoaXMsY2xhenosbWV0aG9kSUQsYXJncyk7CiAgICAgICAgX19idWlsdGluX3ZhX2VuZChh
cmdzKTsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQogICAgam9iamVjdCBDYWxsU3RhdGlj
T2JqZWN0TWV0aG9kVihqY2xhc3MgY2xhenosIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCBhcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0
aW9ucy0+Q2FsbFN0YXRpY09iamVjdE1ldGhvZFYodGhpcyxjbGF6eixtZXRob2RJRCxhcmdzKTsK
ICAgIH0KICAgIGpvYmplY3QgQ2FsbFN0YXRpY09iamVjdE1ldGhvZEEoamNsYXNzIGNsYXp6LCBq
bWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp2YWx1ZSAq
YXJncykgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkNhbGxTdGF0aWNPYmplY3RNZXRob2RB
KHRoaXMsY2xhenosbWV0aG9kSUQsYXJncyk7CiAgICB9CgogICAgamJvb2xlYW4gQ2FsbFN0YXRp
Y0Jvb2xlYW5NZXRob2QoamNsYXNzIGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgam1ldGhvZElEIG1ldGhvZElELCAuLi4pIHsKICAgICAgICB2YV9saXN0IGFyZ3M7
CiAgICAgICAgamJvb2xlYW4gcmVzdWx0OwogICAgICAgIF9fYnVpbHRpbl9zdGRhcmdfc3RhcnQo
KGFyZ3MpLG1ldGhvZElEKTsKICAgICAgICByZXN1bHQgPSBmdW5jdGlvbnMtPkNhbGxTdGF0aWNC
b29sZWFuTWV0aG9kVih0aGlzLGNsYXp6LG1ldGhvZElELGFyZ3MpOwogICAgICAgIF9fYnVpbHRp
bl92YV9lbmQoYXJncyk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KICAgIGpib29sZWFu
IENhbGxTdGF0aWNCb29sZWFuTWV0aG9kVihqY2xhc3MgY2xhenosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgam1ldGhvZElEIG1ldGhvZElELCB2YV9saXN0IGFyZ3MpIHsK
ICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5DYWxsU3RhdGljQm9vbGVhbk1ldGhvZFYodGhpcyxj
bGF6eixtZXRob2RJRCxhcmdzKTsKICAgIH0KICAgIGpib29sZWFuIENhbGxTdGF0aWNCb29sZWFu
TWV0aG9kQShqY2xhc3MgY2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgam1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUgKmFyZ3MpIHsKICAgICAgICByZXR1cm4gZnVu
Y3Rpb25zLT5DYWxsU3RhdGljQm9vbGVhbk1ldGhvZEEodGhpcyxjbGF6eixtZXRob2RJRCxhcmdz
KTsKICAgIH0KCiAgICBqYnl0ZSBDYWxsU3RhdGljQnl0ZU1ldGhvZChqY2xhc3MgY2xhenosCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqbWV0aG9kSUQgbWV0aG9kSUQsIC4uLikgewog
ICAgICAgIHZhX2xpc3QgYXJnczsKICAgICAgICBqYnl0ZSByZXN1bHQ7CiAgICAgICAgX19idWls
dGluX3N0ZGFyZ19zdGFydCgoYXJncyksbWV0aG9kSUQpOwogICAgICAgIHJlc3VsdCA9IGZ1bmN0
aW9ucy0+Q2FsbFN0YXRpY0J5dGVNZXRob2RWKHRoaXMsY2xhenosbWV0aG9kSUQsYXJncyk7CiAg
ICAgICAgX19idWlsdGluX3ZhX2VuZChhcmdzKTsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
fQogICAgamJ5dGUgQ2FsbFN0YXRpY0J5dGVNZXRob2RWKGpjbGFzcyBjbGF6eiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqbWV0aG9kSUQgbWV0aG9kSUQsIHZhX2xpc3QgYXJncykg
ewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkNhbGxTdGF0aWNCeXRlTWV0aG9kVih0aGlzLGNs
YXp6LG1ldGhvZElELGFyZ3MpOwogICAgfQogICAgamJ5dGUgQ2FsbFN0YXRpY0J5dGVNZXRob2RB
KGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqbWV0aG9kSUQg
bWV0aG9kSUQsIGp2YWx1ZSAqYXJncykgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkNhbGxT
dGF0aWNCeXRlTWV0aG9kQSh0aGlzLGNsYXp6LG1ldGhvZElELGFyZ3MpOwogICAgfQoKICAgIGpj
aGFyIENhbGxTdGF0aWNDaGFyTWV0aG9kKGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKSB7CiAgICAgICAgdmFfbGlzdCBh
cmdzOwogICAgICAgIGpjaGFyIHJlc3VsdDsKICAgICAgICBfX2J1aWx0aW5fc3RkYXJnX3N0YXJ0
KChhcmdzKSxtZXRob2RJRCk7CiAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zLT5DYWxsU3RhdGlj
Q2hhck1ldGhvZFYodGhpcyxjbGF6eixtZXRob2RJRCxhcmdzKTsKICAgICAgICBfX2J1aWx0aW5f
dmFfZW5kKGFyZ3MpOwogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CiAgICBqY2hhciBDYWxs
U3RhdGljQ2hhck1ldGhvZFYoamNsYXNzIGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwgdmFfbGlzdCBhcmdzKSB7CiAgICAgICAgcmV0dXJu
IGZ1bmN0aW9ucy0+Q2FsbFN0YXRpY0NoYXJNZXRob2RWKHRoaXMsY2xhenosbWV0aG9kSUQsYXJn
cyk7CiAgICB9CiAgICBqY2hhciBDYWxsU3RhdGljQ2hhck1ldGhvZEEoamNsYXNzIGNsYXp6LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwganZhbHVl
ICphcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+Q2FsbFN0YXRpY0NoYXJNZXRob2RB
KHRoaXMsY2xhenosbWV0aG9kSUQsYXJncyk7CiAgICB9CgogICAganNob3J0IENhbGxTdGF0aWNT
aG9ydE1ldGhvZChqY2xhc3MgY2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGptZXRob2RJRCBtZXRob2RJRCwgLi4uKSB7CiAgICAgICAgdmFfbGlzdCBhcmdzOwogICAgICAg
IGpzaG9ydCByZXN1bHQ7CiAgICAgICAgX19idWlsdGluX3N0ZGFyZ19zdGFydCgoYXJncyksbWV0
aG9kSUQpOwogICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9ucy0+Q2FsbFN0YXRpY1Nob3J0TWV0aG9k
Vih0aGlzLGNsYXp6LG1ldGhvZElELGFyZ3MpOwogICAgICAgIF9fYnVpbHRpbl92YV9lbmQoYXJn
cyk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KICAgIGpzaG9ydCBDYWxsU3RhdGljU2hv
cnRNZXRob2RWKGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGptZXRob2RJRCBtZXRob2RJRCwgdmFfbGlzdCBhcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0
aW9ucy0+Q2FsbFN0YXRpY1Nob3J0TWV0aG9kVih0aGlzLGNsYXp6LG1ldGhvZElELGFyZ3MpOwog
ICAgfQogICAganNob3J0IENhbGxTdGF0aWNTaG9ydE1ldGhvZEEoamNsYXNzIGNsYXp6LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUg
KmFyZ3MpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5DYWxsU3RhdGljU2hvcnRNZXRob2RB
KHRoaXMsY2xhenosbWV0aG9kSUQsYXJncyk7CiAgICB9CgogICAgamludCBDYWxsU3RhdGljSW50
TWV0aG9kKGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqbWV0aG9k
SUQgbWV0aG9kSUQsIC4uLikgewogICAgICAgIHZhX2xpc3QgYXJnczsKICAgICAgICBqaW50IHJl
c3VsdDsKICAgICAgICBfX2J1aWx0aW5fc3RkYXJnX3N0YXJ0KChhcmdzKSxtZXRob2RJRCk7CiAg
ICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zLT5DYWxsU3RhdGljSW50TWV0aG9kVih0aGlzLGNsYXp6
LG1ldGhvZElELGFyZ3MpOwogICAgICAgIF9fYnVpbHRpbl92YV9lbmQoYXJncyk7CiAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgIH0KICAgIGppbnQgQ2FsbFN0YXRpY0ludE1ldGhvZFYoamNsYXNz
IGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqbWV0aG9kSUQgbWV0aG9kSUQs
IHZhX2xpc3QgYXJncykgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkNhbGxTdGF0aWNJbnRN
ZXRob2RWKHRoaXMsY2xhenosbWV0aG9kSUQsYXJncyk7CiAgICB9CiAgICBqaW50IENhbGxTdGF0
aWNJbnRNZXRob2RBKGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
am1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUgKmFyZ3MpIHsKICAgICAgICByZXR1cm4gZnVuY3Rp
b25zLT5DYWxsU3RhdGljSW50TWV0aG9kQSh0aGlzLGNsYXp6LG1ldGhvZElELGFyZ3MpOwogICAg
fQoKICAgIGpsb25nIENhbGxTdGF0aWNMb25nTWV0aG9kKGpjbGFzcyBjbGF6eiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKSB7CiAgICAgICAg
dmFfbGlzdCBhcmdzOwogICAgICAgIGpsb25nIHJlc3VsdDsKICAgICAgICBfX2J1aWx0aW5fc3Rk
YXJnX3N0YXJ0KChhcmdzKSxtZXRob2RJRCk7CiAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zLT5D
YWxsU3RhdGljTG9uZ01ldGhvZFYodGhpcyxjbGF6eixtZXRob2RJRCxhcmdzKTsKICAgICAgICBf
X2J1aWx0aW5fdmFfZW5kKGFyZ3MpOwogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CiAgICBq
bG9uZyBDYWxsU3RhdGljTG9uZ01ldGhvZFYoamNsYXNzIGNsYXp6LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwgdmFfbGlzdCBhcmdzKSB7CiAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9ucy0+Q2FsbFN0YXRpY0xvbmdNZXRob2RWKHRoaXMsY2xhenosbWV0
aG9kSUQsYXJncyk7CiAgICB9CiAgICBqbG9uZyBDYWxsU3RhdGljTG9uZ01ldGhvZEEoamNsYXNz
IGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJ
RCwganZhbHVlICphcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+Q2FsbFN0YXRpY0xv
bmdNZXRob2RBKHRoaXMsY2xhenosbWV0aG9kSUQsYXJncyk7CiAgICB9CgogICAgamZsb2F0IENh
bGxTdGF0aWNGbG9hdE1ldGhvZChqY2xhc3MgY2xhenosCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKSB7CiAgICAgICAgdmFfbGlzdCBhcmdz
OwogICAgICAgIGpmbG9hdCByZXN1bHQ7CiAgICAgICAgX19idWlsdGluX3N0ZGFyZ19zdGFydCgo
YXJncyksbWV0aG9kSUQpOwogICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9ucy0+Q2FsbFN0YXRpY0Zs
b2F0TWV0aG9kVih0aGlzLGNsYXp6LG1ldGhvZElELGFyZ3MpOwogICAgICAgIF9fYnVpbHRpbl92
YV9lbmQoYXJncyk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KICAgIGpmbG9hdCBDYWxs
U3RhdGljRmxvYXRNZXRob2RWKGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwgdmFfbGlzdCBhcmdzKSB7CiAgICAgICAgcmV0
dXJuIGZ1bmN0aW9ucy0+Q2FsbFN0YXRpY0Zsb2F0TWV0aG9kVih0aGlzLGNsYXp6LG1ldGhvZElE
LGFyZ3MpOwogICAgfQogICAgamZsb2F0IENhbGxTdGF0aWNGbG9hdE1ldGhvZEEoamNsYXNzIGNs
YXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam1ldGhvZElEIG1ldGhvZElE
LCBqdmFsdWUgKmFyZ3MpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5DYWxsU3RhdGljRmxv
YXRNZXRob2RBKHRoaXMsY2xhenosbWV0aG9kSUQsYXJncyk7CiAgICB9CgogICAgamRvdWJsZSBD
YWxsU3RhdGljRG91YmxlTWV0aG9kKGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqbWV0aG9kSUQgbWV0aG9kSUQsIC4uLikgewogICAgICAgIHZhX2xpc3Qg
YXJnczsKICAgICAgICBqZG91YmxlIHJlc3VsdDsKICAgICAgICBfX2J1aWx0aW5fc3RkYXJnX3N0
YXJ0KChhcmdzKSxtZXRob2RJRCk7CiAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zLT5DYWxsU3Rh
dGljRG91YmxlTWV0aG9kVih0aGlzLGNsYXp6LG1ldGhvZElELGFyZ3MpOwogICAgICAgIF9fYnVp
bHRpbl92YV9lbmQoYXJncyk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KICAgIGpkb3Vi
bGUgQ2FsbFN0YXRpY0RvdWJsZU1ldGhvZFYoamNsYXNzIGNsYXp6LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqbWV0aG9kSUQgbWV0aG9kSUQsIHZhX2xpc3QgYXJncykgewog
ICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkNhbGxTdGF0aWNEb3VibGVNZXRob2RWKHRoaXMsY2xh
enosbWV0aG9kSUQsYXJncyk7CiAgICB9CiAgICBqZG91YmxlIENhbGxTdGF0aWNEb3VibGVNZXRo
b2RBKGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam1l
dGhvZElEIG1ldGhvZElELCBqdmFsdWUgKmFyZ3MpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25z
LT5DYWxsU3RhdGljRG91YmxlTWV0aG9kQSh0aGlzLGNsYXp6LG1ldGhvZElELGFyZ3MpOwogICAg
fQoKICAgIHZvaWQgQ2FsbFN0YXRpY1ZvaWRNZXRob2QoamNsYXNzIGNscywgam1ldGhvZElEIG1l
dGhvZElELCAuLi4pIHsKICAgICAgICB2YV9saXN0IGFyZ3M7CiAgICAgICAgX19idWlsdGluX3N0
ZGFyZ19zdGFydCgoYXJncyksbWV0aG9kSUQpOwogICAgICAgIGZ1bmN0aW9ucy0+Q2FsbFN0YXRp
Y1ZvaWRNZXRob2RWKHRoaXMsY2xzLG1ldGhvZElELGFyZ3MpOwogICAgICAgIF9fYnVpbHRpbl92
YV9lbmQoYXJncyk7CiAgICB9CiAgICB2b2lkIENhbGxTdGF0aWNWb2lkTWV0aG9kVihqY2xhc3Mg
Y2xzLCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YV9saXN0IGFyZ3MpIHsKICAgICAgICBmdW5jdGlvbnMtPkNhbGxTdGF0aWNWb2lkTWV0aG9kVih0
aGlzLGNscyxtZXRob2RJRCxhcmdzKTsKICAgIH0KICAgIHZvaWQgQ2FsbFN0YXRpY1ZvaWRNZXRo
b2RBKGpjbGFzcyBjbHMsIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGp2YWx1ZSAqIGFyZ3MpIHsKICAgICAgICBmdW5jdGlvbnMtPkNhbGxTdGF0aWNW
b2lkTWV0aG9kQSh0aGlzLGNscyxtZXRob2RJRCxhcmdzKTsKICAgIH0KCiAgICBqZmllbGRJRCBH
ZXRTdGF0aWNGaWVsZElEKGpjbGFzcyBjbGF6eiwgY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2lnKSB7CiAgICAgICAgcmV0dXJuIGZ1
bmN0aW9ucy0+R2V0U3RhdGljRmllbGRJRCh0aGlzLGNsYXp6LG5hbWUsc2lnKTsKICAgIH0KICAg
IGpvYmplY3QgR2V0U3RhdGljT2JqZWN0RmllbGQoamNsYXNzIGNsYXp6LCBqZmllbGRJRCBmaWVs
ZElEKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+R2V0U3RhdGljT2JqZWN0RmllbGQodGhp
cyxjbGF6eixmaWVsZElEKTsKICAgIH0KICAgIGpib29sZWFuIEdldFN0YXRpY0Jvb2xlYW5GaWVs
ZChqY2xhc3MgY2xhenosIGpmaWVsZElEIGZpZWxkSUQpIHsKICAgICAgICByZXR1cm4gZnVuY3Rp
b25zLT5HZXRTdGF0aWNCb29sZWFuRmllbGQodGhpcyxjbGF6eixmaWVsZElEKTsKICAgIH0KICAg
IGpieXRlIEdldFN0YXRpY0J5dGVGaWVsZChqY2xhc3MgY2xhenosIGpmaWVsZElEIGZpZWxkSUQp
IHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5HZXRTdGF0aWNCeXRlRmllbGQodGhpcyxjbGF6
eixmaWVsZElEKTsKICAgIH0KICAgIGpjaGFyIEdldFN0YXRpY0NoYXJGaWVsZChqY2xhc3MgY2xh
enosIGpmaWVsZElEIGZpZWxkSUQpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5HZXRTdGF0
aWNDaGFyRmllbGQodGhpcyxjbGF6eixmaWVsZElEKTsKICAgIH0KICAgIGpzaG9ydCBHZXRTdGF0
aWNTaG9ydEZpZWxkKGpjbGFzcyBjbGF6eiwgamZpZWxkSUQgZmllbGRJRCkgewogICAgICAgIHJl
dHVybiBmdW5jdGlvbnMtPkdldFN0YXRpY1Nob3J0RmllbGQodGhpcyxjbGF6eixmaWVsZElEKTsK
ICAgIH0KICAgIGppbnQgR2V0U3RhdGljSW50RmllbGQoamNsYXNzIGNsYXp6LCBqZmllbGRJRCBm
aWVsZElEKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+R2V0U3RhdGljSW50RmllbGQodGhp
cyxjbGF6eixmaWVsZElEKTsKICAgIH0KICAgIGpsb25nIEdldFN0YXRpY0xvbmdGaWVsZChqY2xh
c3MgY2xhenosIGpmaWVsZElEIGZpZWxkSUQpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5H
ZXRTdGF0aWNMb25nRmllbGQodGhpcyxjbGF6eixmaWVsZElEKTsKICAgIH0KICAgIGpmbG9hdCBH
ZXRTdGF0aWNGbG9hdEZpZWxkKGpjbGFzcyBjbGF6eiwgamZpZWxkSUQgZmllbGRJRCkgewogICAg
ICAgIHJldHVybiBmdW5jdGlvbnMtPkdldFN0YXRpY0Zsb2F0RmllbGQodGhpcyxjbGF6eixmaWVs
ZElEKTsKICAgIH0KICAgIGpkb3VibGUgR2V0U3RhdGljRG91YmxlRmllbGQoamNsYXNzIGNsYXp6
LCBqZmllbGRJRCBmaWVsZElEKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+R2V0U3RhdGlj
RG91YmxlRmllbGQodGhpcyxjbGF6eixmaWVsZElEKTsKICAgIH0KCiAgICB2b2lkIFNldFN0YXRp
Y09iamVjdEZpZWxkKGpjbGFzcyBjbGF6eiwgamZpZWxkSUQgZmllbGRJRCwKICAgICAgICAgICAg
ICAgICAgICAgICAgam9iamVjdCB2YWx1ZSkgewogICAgICBmdW5jdGlvbnMtPlNldFN0YXRpY09i
amVjdEZpZWxkKHRoaXMsY2xhenosZmllbGRJRCx2YWx1ZSk7CiAgICB9CiAgICB2b2lkIFNldFN0
YXRpY0Jvb2xlYW5GaWVsZChqY2xhc3MgY2xhenosIGpmaWVsZElEIGZpZWxkSUQsCiAgICAgICAg
ICAgICAgICAgICAgICAgIGpib29sZWFuIHZhbHVlKSB7CiAgICAgIGZ1bmN0aW9ucy0+U2V0U3Rh
dGljQm9vbGVhbkZpZWxkKHRoaXMsY2xhenosZmllbGRJRCx2YWx1ZSk7CiAgICB9CiAgICB2b2lk
IFNldFN0YXRpY0J5dGVGaWVsZChqY2xhc3MgY2xhenosIGpmaWVsZElEIGZpZWxkSUQsCiAgICAg
ICAgICAgICAgICAgICAgICAgIGpieXRlIHZhbHVlKSB7CiAgICAgIGZ1bmN0aW9ucy0+U2V0U3Rh
dGljQnl0ZUZpZWxkKHRoaXMsY2xhenosZmllbGRJRCx2YWx1ZSk7CiAgICB9CiAgICB2b2lkIFNl
dFN0YXRpY0NoYXJGaWVsZChqY2xhc3MgY2xhenosIGpmaWVsZElEIGZpZWxkSUQsCiAgICAgICAg
ICAgICAgICAgICAgICAgIGpjaGFyIHZhbHVlKSB7CiAgICAgIGZ1bmN0aW9ucy0+U2V0U3RhdGlj
Q2hhckZpZWxkKHRoaXMsY2xhenosZmllbGRJRCx2YWx1ZSk7CiAgICB9CiAgICB2b2lkIFNldFN0
YXRpY1Nob3J0RmllbGQoamNsYXNzIGNsYXp6LCBqZmllbGRJRCBmaWVsZElELAogICAgICAgICAg
ICAgICAgICAgICAgICBqc2hvcnQgdmFsdWUpIHsKICAgICAgZnVuY3Rpb25zLT5TZXRTdGF0aWNT
aG9ydEZpZWxkKHRoaXMsY2xhenosZmllbGRJRCx2YWx1ZSk7CiAgICB9CiAgICB2b2lkIFNldFN0
YXRpY0ludEZpZWxkKGpjbGFzcyBjbGF6eiwgamZpZWxkSUQgZmllbGRJRCwKICAgICAgICAgICAg
ICAgICAgICAgICAgamludCB2YWx1ZSkgewogICAgICBmdW5jdGlvbnMtPlNldFN0YXRpY0ludEZp
ZWxkKHRoaXMsY2xhenosZmllbGRJRCx2YWx1ZSk7CiAgICB9CiAgICB2b2lkIFNldFN0YXRpY0xv
bmdGaWVsZChqY2xhc3MgY2xhenosIGpmaWVsZElEIGZpZWxkSUQsCiAgICAgICAgICAgICAgICAg
ICAgICAgIGpsb25nIHZhbHVlKSB7CiAgICAgIGZ1bmN0aW9ucy0+U2V0U3RhdGljTG9uZ0ZpZWxk
KHRoaXMsY2xhenosZmllbGRJRCx2YWx1ZSk7CiAgICB9CiAgICB2b2lkIFNldFN0YXRpY0Zsb2F0
RmllbGQoamNsYXNzIGNsYXp6LCBqZmllbGRJRCBmaWVsZElELAogICAgICAgICAgICAgICAgICAg
ICAgICBqZmxvYXQgdmFsdWUpIHsKICAgICAgZnVuY3Rpb25zLT5TZXRTdGF0aWNGbG9hdEZpZWxk
KHRoaXMsY2xhenosZmllbGRJRCx2YWx1ZSk7CiAgICB9CiAgICB2b2lkIFNldFN0YXRpY0RvdWJs
ZUZpZWxkKGpjbGFzcyBjbGF6eiwgamZpZWxkSUQgZmllbGRJRCwKICAgICAgICAgICAgICAgICAg
ICAgICAgamRvdWJsZSB2YWx1ZSkgewogICAgICBmdW5jdGlvbnMtPlNldFN0YXRpY0RvdWJsZUZp
ZWxkKHRoaXMsY2xhenosZmllbGRJRCx2YWx1ZSk7CiAgICB9CgogICAganN0cmluZyBOZXdTdHJp
bmcoY29uc3QgamNoYXIgKnVuaWNvZGUsIGpzaXplIGxlbikgewogICAgICAgIHJldHVybiBmdW5j
dGlvbnMtPk5ld1N0cmluZyh0aGlzLHVuaWNvZGUsbGVuKTsKICAgIH0KICAgIGpzaXplIEdldFN0
cmluZ0xlbmd0aChqc3RyaW5nIHN0cikgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkdldFN0
cmluZ0xlbmd0aCh0aGlzLHN0cik7CiAgICB9CiAgICBjb25zdCBqY2hhciAqR2V0U3RyaW5nQ2hh
cnMoanN0cmluZyBzdHIsIGpib29sZWFuICppc0NvcHkpIHsKICAgICAgICByZXR1cm4gZnVuY3Rp
b25zLT5HZXRTdHJpbmdDaGFycyh0aGlzLHN0cixpc0NvcHkpOwogICAgfQogICAgdm9pZCBSZWxl
YXNlU3RyaW5nQ2hhcnMoanN0cmluZyBzdHIsIGNvbnN0IGpjaGFyICpjaGFycykgewogICAgICAg
IGZ1bmN0aW9ucy0+UmVsZWFzZVN0cmluZ0NoYXJzKHRoaXMsc3RyLGNoYXJzKTsKICAgIH0KCiAg
ICBqc3RyaW5nIE5ld1N0cmluZ1VURihjb25zdCBjaGFyICp1dGYpIHsKICAgICAgICByZXR1cm4g
ZnVuY3Rpb25zLT5OZXdTdHJpbmdVVEYodGhpcyx1dGYpOwogICAgfQogICAganNpemUgR2V0U3Ry
aW5nVVRGTGVuZ3RoKGpzdHJpbmcgc3RyKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+R2V0
U3RyaW5nVVRGTGVuZ3RoKHRoaXMsc3RyKTsKICAgIH0KICAgIGNvbnN0IGNoYXIqIEdldFN0cmlu
Z1VURkNoYXJzKGpzdHJpbmcgc3RyLCBqYm9vbGVhbiAqaXNDb3B5KSB7CiAgICAgICAgcmV0dXJu
IGZ1bmN0aW9ucy0+R2V0U3RyaW5nVVRGQ2hhcnModGhpcyxzdHIsaXNDb3B5KTsKICAgIH0KICAg
IHZvaWQgUmVsZWFzZVN0cmluZ1VURkNoYXJzKGpzdHJpbmcgc3RyLCBjb25zdCBjaGFyKiBjaGFy
cykgewogICAgICAgIGZ1bmN0aW9ucy0+UmVsZWFzZVN0cmluZ1VURkNoYXJzKHRoaXMsc3RyLGNo
YXJzKTsKICAgIH0KCiAgICBqc2l6ZSBHZXRBcnJheUxlbmd0aChqYXJyYXkgYXJyYXkpIHsKICAg
ICAgICByZXR1cm4gZnVuY3Rpb25zLT5HZXRBcnJheUxlbmd0aCh0aGlzLGFycmF5KTsKICAgIH0K
CiAgICBqb2JqZWN0QXJyYXkgTmV3T2JqZWN0QXJyYXkoanNpemUgbGVuLCBqY2xhc3MgY2xhenos
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9iamVjdCBpbml0KSB7CiAgICAgICAg
cmV0dXJuIGZ1bmN0aW9ucy0+TmV3T2JqZWN0QXJyYXkodGhpcyxsZW4sY2xhenosaW5pdCk7CiAg
ICB9CiAgICBqb2JqZWN0IEdldE9iamVjdEFycmF5RWxlbWVudChqb2JqZWN0QXJyYXkgYXJyYXks
IGpzaXplIGluZGV4KSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+R2V0T2JqZWN0QXJyYXlF
bGVtZW50KHRoaXMsYXJyYXksaW5kZXgpOwogICAgfQogICAgdm9pZCBTZXRPYmplY3RBcnJheUVs
ZW1lbnQoam9iamVjdEFycmF5IGFycmF5LCBqc2l6ZSBpbmRleCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGpvYmplY3QgdmFsKSB7CiAgICAgICAgZnVuY3Rpb25zLT5TZXRPYmplY3RB
cnJheUVsZW1lbnQodGhpcyxhcnJheSxpbmRleCx2YWwpOwogICAgfQoKICAgIGpib29sZWFuQXJy
YXkgTmV3Qm9vbGVhbkFycmF5KGpzaXplIGxlbikgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMt
Pk5ld0Jvb2xlYW5BcnJheSh0aGlzLGxlbik7CiAgICB9CiAgICBqYnl0ZUFycmF5IE5ld0J5dGVB
cnJheShqc2l6ZSBsZW4pIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5OZXdCeXRlQXJyYXko
dGhpcyxsZW4pOwogICAgfQogICAgamNoYXJBcnJheSBOZXdDaGFyQXJyYXkoanNpemUgbGVuKSB7
CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+TmV3Q2hhckFycmF5KHRoaXMsbGVuKTsKICAgIH0K
ICAgIGpzaG9ydEFycmF5IE5ld1Nob3J0QXJyYXkoanNpemUgbGVuKSB7CiAgICAgICAgcmV0dXJu
IGZ1bmN0aW9ucy0+TmV3U2hvcnRBcnJheSh0aGlzLGxlbik7CiAgICB9CiAgICBqaW50QXJyYXkg
TmV3SW50QXJyYXkoanNpemUgbGVuKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+TmV3SW50
QXJyYXkodGhpcyxsZW4pOwogICAgfQogICAgamxvbmdBcnJheSBOZXdMb25nQXJyYXkoanNpemUg
bGVuKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+TmV3TG9uZ0FycmF5KHRoaXMsbGVuKTsK
ICAgIH0KICAgIGpmbG9hdEFycmF5IE5ld0Zsb2F0QXJyYXkoanNpemUgbGVuKSB7CiAgICAgICAg
cmV0dXJuIGZ1bmN0aW9ucy0+TmV3RmxvYXRBcnJheSh0aGlzLGxlbik7CiAgICB9CiAgICBqZG91
YmxlQXJyYXkgTmV3RG91YmxlQXJyYXkoanNpemUgbGVuKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0
aW9ucy0+TmV3RG91YmxlQXJyYXkodGhpcyxsZW4pOwogICAgfQoKICAgIGpib29sZWFuICogR2V0
Qm9vbGVhbkFycmF5RWxlbWVudHMoamJvb2xlYW5BcnJheSBhcnJheSwgamJvb2xlYW4gKmlzQ29w
eSkgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkdldEJvb2xlYW5BcnJheUVsZW1lbnRzKHRo
aXMsYXJyYXksaXNDb3B5KTsKICAgIH0KICAgIGpieXRlICogR2V0Qnl0ZUFycmF5RWxlbWVudHMo
amJ5dGVBcnJheSBhcnJheSwgamJvb2xlYW4gKmlzQ29weSkgewogICAgICAgIHJldHVybiBmdW5j
dGlvbnMtPkdldEJ5dGVBcnJheUVsZW1lbnRzKHRoaXMsYXJyYXksaXNDb3B5KTsKICAgIH0KICAg
IGpjaGFyICogR2V0Q2hhckFycmF5RWxlbWVudHMoamNoYXJBcnJheSBhcnJheSwgamJvb2xlYW4g
KmlzQ29weSkgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkdldENoYXJBcnJheUVsZW1lbnRz
KHRoaXMsYXJyYXksaXNDb3B5KTsKICAgIH0KICAgIGpzaG9ydCAqIEdldFNob3J0QXJyYXlFbGVt
ZW50cyhqc2hvcnRBcnJheSBhcnJheSwgamJvb2xlYW4gKmlzQ29weSkgewogICAgICAgIHJldHVy
biBmdW5jdGlvbnMtPkdldFNob3J0QXJyYXlFbGVtZW50cyh0aGlzLGFycmF5LGlzQ29weSk7CiAg
ICB9CiAgICBqaW50ICogR2V0SW50QXJyYXlFbGVtZW50cyhqaW50QXJyYXkgYXJyYXksIGpib29s
ZWFuICppc0NvcHkpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5HZXRJbnRBcnJheUVsZW1l
bnRzKHRoaXMsYXJyYXksaXNDb3B5KTsKICAgIH0KICAgIGpsb25nICogR2V0TG9uZ0FycmF5RWxl
bWVudHMoamxvbmdBcnJheSBhcnJheSwgamJvb2xlYW4gKmlzQ29weSkgewogICAgICAgIHJldHVy
biBmdW5jdGlvbnMtPkdldExvbmdBcnJheUVsZW1lbnRzKHRoaXMsYXJyYXksaXNDb3B5KTsKICAg
IH0KICAgIGpmbG9hdCAqIEdldEZsb2F0QXJyYXlFbGVtZW50cyhqZmxvYXRBcnJheSBhcnJheSwg
amJvb2xlYW4gKmlzQ29weSkgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkdldEZsb2F0QXJy
YXlFbGVtZW50cyh0aGlzLGFycmF5LGlzQ29weSk7CiAgICB9CiAgICBqZG91YmxlICogR2V0RG91
YmxlQXJyYXlFbGVtZW50cyhqZG91YmxlQXJyYXkgYXJyYXksIGpib29sZWFuICppc0NvcHkpIHsK
ICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5HZXREb3VibGVBcnJheUVsZW1lbnRzKHRoaXMsYXJy
YXksaXNDb3B5KTsKICAgIH0KCiAgICB2b2lkIFJlbGVhc2VCb29sZWFuQXJyYXlFbGVtZW50cyhq
Ym9vbGVhbkFycmF5IGFycmF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
amJvb2xlYW4gKmVsZW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamlu
dCBtb2RlKSB7CiAgICAgICAgZnVuY3Rpb25zLT5SZWxlYXNlQm9vbGVhbkFycmF5RWxlbWVudHMo
dGhpcyxhcnJheSxlbGVtcyxtb2RlKTsKICAgIH0KICAgIHZvaWQgUmVsZWFzZUJ5dGVBcnJheUVs
ZW1lbnRzKGpieXRlQXJyYXkgYXJyYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqYnl0ZSAqZWxlbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaW50IG1v
ZGUpIHsKICAgICAgICBmdW5jdGlvbnMtPlJlbGVhc2VCeXRlQXJyYXlFbGVtZW50cyh0aGlzLGFy
cmF5LGVsZW1zLG1vZGUpOwogICAgfQogICAgdm9pZCBSZWxlYXNlQ2hhckFycmF5RWxlbWVudHMo
amNoYXJBcnJheSBhcnJheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpjaGFy
ICplbGVtcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppbnQgbW9kZSkgewog
ICAgICAgIGZ1bmN0aW9ucy0+UmVsZWFzZUNoYXJBcnJheUVsZW1lbnRzKHRoaXMsYXJyYXksZWxl
bXMsbW9kZSk7CiAgICB9CiAgICB2b2lkIFJlbGVhc2VTaG9ydEFycmF5RWxlbWVudHMoanNob3J0
QXJyYXkgYXJyYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNob3J0ICpl
bGVtcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaW50IG1vZGUpIHsKICAg
ICAgICBmdW5jdGlvbnMtPlJlbGVhc2VTaG9ydEFycmF5RWxlbWVudHModGhpcyxhcnJheSxlbGVt
cyxtb2RlKTsKICAgIH0KICAgIHZvaWQgUmVsZWFzZUludEFycmF5RWxlbWVudHMoamludEFycmF5
IGFycmF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaW50ICplbGVtcywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamludCBtb2RlKSB7CiAgICAgICAgZnVuY3Rp
b25zLT5SZWxlYXNlSW50QXJyYXlFbGVtZW50cyh0aGlzLGFycmF5LGVsZW1zLG1vZGUpOwogICAg
fQogICAgdm9pZCBSZWxlYXNlTG9uZ0FycmF5RWxlbWVudHMoamxvbmdBcnJheSBhcnJheSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpsb25nICplbGVtcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGppbnQgbW9kZSkgewogICAgICAgIGZ1bmN0aW9ucy0+UmVs
ZWFzZUxvbmdBcnJheUVsZW1lbnRzKHRoaXMsYXJyYXksZWxlbXMsbW9kZSk7CiAgICB9CiAgICB2
b2lkIFJlbGVhc2VGbG9hdEFycmF5RWxlbWVudHMoamZsb2F0QXJyYXkgYXJyYXksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgamZsb2F0ICplbGVtcywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqaW50IG1vZGUpIHsKICAgICAgICBmdW5jdGlvbnMtPlJlbGVh
c2VGbG9hdEFycmF5RWxlbWVudHModGhpcyxhcnJheSxlbGVtcyxtb2RlKTsKICAgIH0KICAgIHZv
aWQgUmVsZWFzZURvdWJsZUFycmF5RWxlbWVudHMoamRvdWJsZUFycmF5IGFycmF5LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqZG91YmxlICplbGVtcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgamludCBtb2RlKSB7CiAgICAgICAgZnVuY3Rpb25zLT5S
ZWxlYXNlRG91YmxlQXJyYXlFbGVtZW50cyh0aGlzLGFycmF5LGVsZW1zLG1vZGUpOwogICAgfQoK
ICAgIHZvaWQgR2V0Qm9vbGVhbkFycmF5UmVnaW9uKGpib29sZWFuQXJyYXkgYXJyYXksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBqc2l6ZSBzdGFydCwganNpemUgbGVuLCBqYm9vbGVh
biAqYnVmKSB7CiAgICAgICAgZnVuY3Rpb25zLT5HZXRCb29sZWFuQXJyYXlSZWdpb24odGhpcyxh
cnJheSxzdGFydCxsZW4sYnVmKTsKICAgIH0KICAgIHZvaWQgR2V0Qnl0ZUFycmF5UmVnaW9uKGpi
eXRlQXJyYXkgYXJyYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc2l6ZSBzdGFydCwg
anNpemUgbGVuLCBqYnl0ZSAqYnVmKSB7CiAgICAgICAgZnVuY3Rpb25zLT5HZXRCeXRlQXJyYXlS
ZWdpb24odGhpcyxhcnJheSxzdGFydCxsZW4sYnVmKTsKICAgIH0KICAgIHZvaWQgR2V0Q2hhckFy
cmF5UmVnaW9uKGpjaGFyQXJyYXkgYXJyYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
c2l6ZSBzdGFydCwganNpemUgbGVuLCBqY2hhciAqYnVmKSB7CiAgICAgICAgZnVuY3Rpb25zLT5H
ZXRDaGFyQXJyYXlSZWdpb24odGhpcyxhcnJheSxzdGFydCxsZW4sYnVmKTsKICAgIH0KICAgIHZv
aWQgR2V0U2hvcnRBcnJheVJlZ2lvbihqc2hvcnRBcnJheSBhcnJheSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqc2l6ZSBzdGFydCwganNpemUgbGVuLCBqc2hvcnQgKmJ1ZikgewogICAg
ICAgIGZ1bmN0aW9ucy0+R2V0U2hvcnRBcnJheVJlZ2lvbih0aGlzLGFycmF5LHN0YXJ0LGxlbixi
dWYpOwogICAgfQogICAgdm9pZCBHZXRJbnRBcnJheVJlZ2lvbihqaW50QXJyYXkgYXJyYXksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGpzaXplIHN0YXJ0LCBqc2l6ZSBsZW4sIGppbnQgKmJ1
ZikgewogICAgICAgIGZ1bmN0aW9ucy0+R2V0SW50QXJyYXlSZWdpb24odGhpcyxhcnJheSxzdGFy
dCxsZW4sYnVmKTsKICAgIH0KICAgIHZvaWQgR2V0TG9uZ0FycmF5UmVnaW9uKGpsb25nQXJyYXkg
YXJyYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc2l6ZSBzdGFydCwganNpemUgbGVu
LCBqbG9uZyAqYnVmKSB7CiAgICAgICAgZnVuY3Rpb25zLT5HZXRMb25nQXJyYXlSZWdpb24odGhp
cyxhcnJheSxzdGFydCxsZW4sYnVmKTsKICAgIH0KICAgIHZvaWQgR2V0RmxvYXRBcnJheVJlZ2lv
bihqZmxvYXRBcnJheSBhcnJheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc2l6ZSBz
dGFydCwganNpemUgbGVuLCBqZmxvYXQgKmJ1ZikgewogICAgICAgIGZ1bmN0aW9ucy0+R2V0Rmxv
YXRBcnJheVJlZ2lvbih0aGlzLGFycmF5LHN0YXJ0LGxlbixidWYpOwogICAgfQogICAgdm9pZCBH
ZXREb3VibGVBcnJheVJlZ2lvbihqZG91YmxlQXJyYXkgYXJyYXksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGpzaXplIHN0YXJ0LCBqc2l6ZSBsZW4sIGpkb3VibGUgKmJ1ZikgewogICAg
ICAgIGZ1bmN0aW9ucy0+R2V0RG91YmxlQXJyYXlSZWdpb24odGhpcyxhcnJheSxzdGFydCxsZW4s
YnVmKTsKICAgIH0KCiAgICB2b2lkIFNldEJvb2xlYW5BcnJheVJlZ2lvbihqYm9vbGVhbkFycmF5
IGFycmF5LCBqc2l6ZSBzdGFydCwganNpemUgbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgamJvb2xlYW4gKmJ1ZikgewogICAgICAgIGZ1bmN0aW9ucy0+U2V0Qm9vbGVhbkFycmF5
UmVnaW9uKHRoaXMsYXJyYXksc3RhcnQsbGVuLGJ1Zik7CiAgICB9CiAgICB2b2lkIFNldEJ5dGVB
cnJheVJlZ2lvbihqYnl0ZUFycmF5IGFycmF5LCBqc2l6ZSBzdGFydCwganNpemUgbGVuLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgamJ5dGUgKmJ1ZikgewogICAgICAgIGZ1bmN0aW9ucy0+
U2V0Qnl0ZUFycmF5UmVnaW9uKHRoaXMsYXJyYXksc3RhcnQsbGVuLGJ1Zik7CiAgICB9CiAgICB2
b2lkIFNldENoYXJBcnJheVJlZ2lvbihqY2hhckFycmF5IGFycmF5LCBqc2l6ZSBzdGFydCwganNp
emUgbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgamNoYXIgKmJ1ZikgewogICAgICAg
IGZ1bmN0aW9ucy0+U2V0Q2hhckFycmF5UmVnaW9uKHRoaXMsYXJyYXksc3RhcnQsbGVuLGJ1Zik7
CiAgICB9CiAgICB2b2lkIFNldFNob3J0QXJyYXlSZWdpb24oanNob3J0QXJyYXkgYXJyYXksIGpz
aXplIHN0YXJ0LCBqc2l6ZSBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNob3J0
ICpidWYpIHsKICAgICAgICBmdW5jdGlvbnMtPlNldFNob3J0QXJyYXlSZWdpb24odGhpcyxhcnJh
eSxzdGFydCxsZW4sYnVmKTsKICAgIH0KICAgIHZvaWQgU2V0SW50QXJyYXlSZWdpb24oamludEFy
cmF5IGFycmF5LCBqc2l6ZSBzdGFydCwganNpemUgbGVuLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICBqaW50ICpidWYpIHsKICAgICAgICBmdW5jdGlvbnMtPlNldEludEFycmF5UmVnaW9uKHRo
aXMsYXJyYXksc3RhcnQsbGVuLGJ1Zik7CiAgICB9CiAgICB2b2lkIFNldExvbmdBcnJheVJlZ2lv
bihqbG9uZ0FycmF5IGFycmF5LCBqc2l6ZSBzdGFydCwganNpemUgbGVuLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgamxvbmcgKmJ1ZikgewogICAgICAgIGZ1bmN0aW9ucy0+U2V0TG9uZ0Fy
cmF5UmVnaW9uKHRoaXMsYXJyYXksc3RhcnQsbGVuLGJ1Zik7CiAgICB9CiAgICB2b2lkIFNldEZs
b2F0QXJyYXlSZWdpb24oamZsb2F0QXJyYXkgYXJyYXksIGpzaXplIHN0YXJ0LCBqc2l6ZSBsZW4s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamZsb2F0ICpidWYpIHsKICAgICAgICBmdW5j
dGlvbnMtPlNldEZsb2F0QXJyYXlSZWdpb24odGhpcyxhcnJheSxzdGFydCxsZW4sYnVmKTsKICAg
IH0KICAgIHZvaWQgU2V0RG91YmxlQXJyYXlSZWdpb24oamRvdWJsZUFycmF5IGFycmF5LCBqc2l6
ZSBzdGFydCwganNpemUgbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqZG91Ymxl
ICpidWYpIHsKICAgICAgICBmdW5jdGlvbnMtPlNldERvdWJsZUFycmF5UmVnaW9uKHRoaXMsYXJy
YXksc3RhcnQsbGVuLGJ1Zik7CiAgICB9CgogICAgamludCBSZWdpc3Rlck5hdGl2ZXMoamNsYXNz
IGNsYXp6LCBjb25zdCBKTklOYXRpdmVNZXRob2QgKm1ldGhvZHMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBqaW50IG5NZXRob2RzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+UmVnaXN0
ZXJOYXRpdmVzKHRoaXMsY2xhenosbWV0aG9kcyxuTWV0aG9kcyk7CiAgICB9CiAgICBqaW50IFVu
cmVnaXN0ZXJOYXRpdmVzKGpjbGFzcyBjbGF6eikgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMt
PlVucmVnaXN0ZXJOYXRpdmVzKHRoaXMsY2xhenopOwogICAgfQoKICAgIGppbnQgTW9uaXRvckVu
dGVyKGpvYmplY3Qgb2JqKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+TW9uaXRvckVudGVy
KHRoaXMsb2JqKTsKICAgIH0KICAgIGppbnQgTW9uaXRvckV4aXQoam9iamVjdCBvYmopIHsKICAg
ICAgICByZXR1cm4gZnVuY3Rpb25zLT5Nb25pdG9yRXhpdCh0aGlzLG9iaik7CiAgICB9CgogICAg
amludCBHZXRKYXZhVk0oSmF2YVZNICoqdm0pIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5H
ZXRKYXZhVk0odGhpcyx2bSk7CiAgICB9CgoKfTsKCgoKdHlwZWRlZiBzdHJ1Y3QgSkRLMV8xSW5p
dEFyZ3MgewogICAgamludCB2ZXJzaW9uOwoKICAgIGNoYXIgKipwcm9wZXJ0aWVzOwogICAgamlu
dCBjaGVja1NvdXJjZTsKICAgIGppbnQgbmF0aXZlU3RhY2tTaXplOwogICAgamludCBqYXZhU3Rh
Y2tTaXplOwogICAgamludCBtaW5IZWFwU2l6ZTsKICAgIGppbnQgbWF4SGVhcFNpemU7CiAgICBq
aW50IHZlcmlmeU1vZGU7CiAgICBjaGFyICpjbGFzc3BhdGg7CgogICAgamludCAoICp2ZnByaW50
ZikoRklMRSAqZnAsIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKTsKICAgIHZvaWQg
KCAqZXhpdCkoamludCBjb2RlKTsKICAgIHZvaWQgKCAqYWJvcnQpKCk7CgogICAgamludCBlbmFi
bGVDbGFzc0dDOwogICAgamludCBlbmFibGVWZXJib3NlR0M7CiAgICBqaW50IGRpc2FibGVBc3lu
Y0dDOwogICAgamludCB2ZXJib3NlOwogICAgamJvb2xlYW4gZGVidWdnaW5nOwogICAgamludCBk
ZWJ1Z1BvcnQ7Cn0gSkRLMV8xSW5pdEFyZ3M7Cgp0eXBlZGVmIHN0cnVjdCBKREsxXzFBdHRhY2hB
cmdzIHsKICAgIHZvaWQgKiBfX3BhZGRpbmc7Cn0gSkRLMV8xQXR0YWNoQXJnczsKCgoKc3RydWN0
IEpOSUludm9rZUludGVyZmFjZV8gewogICAgdm9pZCAqcmVzZXJ2ZWQwOwogICAgdm9pZCAqcmVz
ZXJ2ZWQxOwogICAgdm9pZCAqcmVzZXJ2ZWQyOwoKICAgIGppbnQgKCAqRGVzdHJveUphdmFWTSko
SmF2YVZNICp2bSk7CgogICAgamludCAoICpBdHRhY2hDdXJyZW50VGhyZWFkKQogICAgICAoSmF2
YVZNICp2bSwgSk5JRW52ICoqcGVudiwgdm9pZCAqYXJncyk7CgogICAgamludCAoICpEZXRhY2hD
dXJyZW50VGhyZWFkKShKYXZhVk0gKnZtKTsKfTsKCnN0cnVjdCBKYXZhVk1fIHsKICAgIGNvbnN0
IHN0cnVjdCBKTklJbnZva2VJbnRlcmZhY2VfICpmdW5jdGlvbnM7CiAgICB2b2lkICpyZXNlcnZl
ZDA7CiAgICB2b2lkICpyZXNlcnZlZDE7CiAgICB2b2lkICpyZXNlcnZlZDI7CgoKICAgIGppbnQg
RGVzdHJveUphdmFWTSgpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5EZXN0cm95SmF2YVZN
KHRoaXMpOwogICAgfQogICAgamludCBBdHRhY2hDdXJyZW50VGhyZWFkKEpOSUVudiAqKnBlbnYs
IHZvaWQgKmFyZ3MpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5BdHRhY2hDdXJyZW50VGhy
ZWFkKHRoaXMsIHBlbnYsIGFyZ3MpOwogICAgfQogICAgamludCBEZXRhY2hDdXJyZW50VGhyZWFk
KCkgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkRldGFjaEN1cnJlbnRUaHJlYWQodGhpcyk7
CiAgICB9CgoKfTsKCnZvaWQgSk5JX0dldERlZmF1bHRKYXZhVk1Jbml0QXJncyh2b2lkICopOwoK
amludCBKTklfQ3JlYXRlSmF2YVZNKEphdmFWTSAqKiwgSk5JRW52ICoqLCB2b2lkICopOwoKamlu
dCBKTklfR2V0Q3JlYXRlZEphdmFWTXMoSmF2YVZNICoqLCBqc2l6ZSwganNpemUgKik7CmpyZWYg
Sk5JX01ha2VMb2NhbFJlZihKTklFbnYgKnBKTklFbnYsIHZvaWQgKnBIT2JqZWN0KTsKCgp9CiMg
MTkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9vamkvbnNJSlZNTWFuYWdlci5oIiAyCiMgNDEgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9vamkvbnNJSlZNTWFuYWdlci5oIgpjbGFzcyBuc0lKVk1QbHVn
aW47CgpjbGFzcyBuc0lTZWN1cmVFbnY7CgpjbGFzcyBuc0lQcmluY2lwYWw7CiMgNTUgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9vamkvbnNJSlZNTWFuYWdlci5oIgpjbGFzcyBuc0lKVk1NYW5hZ2Vy
IDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBH
ZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGExZTVlZDUwLCAweGFhNGEsIDB4
MTFkMSwgeyAweDg1LCAweGIyLCAweDAwLCAweDgwLCAweDVmLCAweDBlLCAweDRkLCAweGZlIH19
OyByZXR1cm4gaWlkO30KCgogICAgICAgIHN0YXRpYyBjb25zdCBuc0lEJiBHZXRDSUQoKSB7c3Rh
dGljIGNvbnN0IG5zSUQgY2lkID0geyAweDM4ZTdlZjEwLCAweDU4ZGYsIDB4MTFkMiwgezB4ODEs
IDB4NjQsIDB4MDAsIDB4NjAsIDB4MDgsIDB4MTEsIDB4OWQsIDB4N2F9IH07IHJldHVybiBjaWQ7
fQoKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IENyZWF0ZVByb3h5Sk5JKG5zSVNlY3VyZUVudiAq
c2VjdXJlRW52LCBKTklFbnYgKiAqb3V0UHJveHlFbnYpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldFByb3h5Sk5JKEpOSUVudiAqICpvdXRQcm94eUVudikgPSAwOwoKCgoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBTaG93SmF2YUNvbnNvbGUodm9pZCkgPSAwOwoKCgoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBJc0FsbFBlcm1pc3Npb25HcmFudGVkKGNvbnN0IGNoYXIgKmxhc3RGaW5nZXJwcmlu
dCwgY29uc3QgY2hhciAqbGFzdENvbW1vbk5hbWUsIGNvbnN0IGNoYXIgKnJvb3RGaW5nZXJwcmlu
dCwgY29uc3QgY2hhciAqcm9vdENvbW1vbk5hbWUsIFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCgoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBJc0FwcGxldFRydXN0ZWQoY29uc3QgY2hhciAqYVJTQUJ1Ziwg
UFJVaW50MzIgYVJTQUJ1ZkxlbiwgY29uc3QgY2hhciAqYVBsYWludGV4dCwgUFJVaW50MzIgYVBs
YWludGV4dExlbiwgUFJCb29sICppc1RydXN0ZWQsIG5zSVByaW5jaXBhbCAqKl9yZXR2YWwpID0g
MDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SmF2YUVuYWJsZWQoUFJCb29sICphSmF2YUVu
YWJsZWQpID0gMDsKCn07CiMgMTI3ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKCgoKCiMgMSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL29qaS9uc0lMaXZlQ29ubmVjdE1hbmFnZXIuaCIgMQojIDYxICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvb2ppL25zSUxpdmVDb25uZWN0TWFuYWdlci5oIgpzdHJ1Y3Qg
SlNSdW50aW1lOwpzdHJ1Y3QgSlNDb250ZXh0OwpzdHJ1Y3QgSlNPYmplY3Q7CgpjbGFzcyBuc0lM
aXZlQ29ubmVjdE1hbmFnZXIgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewpwdWJsaWM6CiAgICAgICAg
c3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsg
MHhkMjBjODA4MSwgMHhjYmNiLCAweDExZDIsIHsgMHhhNSwgMHhhMCwgMHhlOCwgMHg4NCwgMHhh
ZSwgMHhkOSwgMHhjOSwgMHhmYyB9IH07IHJldHVybiBpaWQ7fQoKCgoKICAgICAgICB2aXJ0dWFs
IG5zcmVzdWx0CiAgICBTdGFydHVwTGl2ZUNvbm5lY3QoSlNSdW50aW1lKiBydW50aW1lLCBQUkJv
b2wmIG91dFN0YXJ0ZWQpID0gMDsKCgoKCiAgICAgICAgdmlydHVhbCBuc3Jlc3VsdAogICAgU2h1
dGRvd25MaXZlQ29ubmVjdChKU1J1bnRpbWUqIHJ1bnRpbWUsIFBSQm9vbCYgb3V0U2h1dGRvd24p
ID0gMDsKCgoKCiAgICAgICAgdmlydHVhbCBuc3Jlc3VsdAogICAgSXNMaXZlQ29ubmVjdEVuYWJs
ZWQoUFJCb29sJiBvdXRFbmFibGVkKSA9IDA7CgoKCgogICAgICAgIHZpcnR1YWwgbnNyZXN1bHQK
ICAgIEluaXRMaXZlQ29ubmVjdENsYXNzZXMoSlNDb250ZXh0KiBjb250ZXh0LCBKU09iamVjdCog
Z2xvYmFsT2JqZWN0KSA9IDA7CgoKCgogICAgIHZpcnR1YWwgbnNyZXN1bHQKICAgICBXcmFwSmF2
YU9iamVjdChKU0NvbnRleHQqIGNvbnRleHQsIGpvYmplY3QgamF2YU9iamVjdCwgSlNPYmplY3Qq
ICpvdXRKU09iamVjdCkgPSAwOwp9OwojIDEzMiAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL29qaS9uc0lKVk1QbHVnaW5JbnN0YW5jZS5oIiAxCiMgMjYg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9vamkvbnNJSlZNUGx1Z2luSW5zdGFuY2UuaCIKY2xhc3Mg
bnNJSlZNUGx1Z2luSW5zdGFuY2UgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBz
dGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4
YTBjMDU3ZDAsIDB4MDFjMSwgMHgxMWQyLCB7IDB4ODEsIDB4NWIsIDB4MDAsIDB4NjAsIDB4MDgs
IDB4MTEsIDB4OWQsIDB4N2EgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRKYXZhT2JqZWN0KGpvYmplY3QgKnJlc3VsdCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRUZXh0KGNvbnN0IGNoYXIgKiogcmVzdWx0KSA9IDA7Cgp9OwojIDEzMyAibnNET01DbGFzc0lu
Zm8uY3BwIiAyCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxPcHRp
b25FbGVtZW50LmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1M
T3B0aW9uRWxlbWVudC5oIgpjbGFzcyBuc0lET01IVE1MT3B0aW9uRWxlbWVudCA6IHB1YmxpYyBu
c0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlE
KCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTA5MiwgMHgxNWIzLCAweDExZDIs
IHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0
dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEZvcm0obnNJRE9NSFRNTEZvcm1FbGVt
ZW50ICogKmFGb3JtKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERlZmF1bHRTZWxlY3Rl
ZChQUkJvb2wgKmFEZWZhdWx0U2VsZWN0ZWQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldERl
ZmF1bHRTZWxlY3RlZChQUkJvb2wgYURlZmF1bHRTZWxlY3RlZCkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRUZXh0KG5zQVN0cmluZyAmIGFUZXh0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRUZXh0KGNvbnN0IG5zQVN0cmluZyAmIGFUZXh0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldEluZGV4KFBSSW50MzIgKmFJbmRleCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXREaXNhYmxlZChQUkJvb2wgKmFEaXNhYmxlZCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0
RGlzYWJsZWQoUFJCb29sIGFEaXNhYmxlZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRM
YWJlbChuc0FTdHJpbmcgJiBhTGFiZWwpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldExhYmVs
KGNvbnN0IG5zQVN0cmluZyAmIGFMYWJlbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRT
ZWxlY3RlZChQUkJvb2wgKmFTZWxlY3RlZCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0U2Vs
ZWN0ZWQoUFJCb29sIGFTZWxlY3RlZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRWYWx1
ZShuc0FTdHJpbmcgJiBhVmFsdWUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFZhbHVlKGNv
bnN0IG5zQVN0cmluZyAmIGFWYWx1ZSkgPSAwOwoKfTsKIyAxMzYgIm5zRE9NQ2xhc3NJbmZvLmNw
cCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NTlNIVE1MT3B0aW9uQ29s
bGVjdG4uaCIgMQojIDE3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTU5TSFRNTE9w
dGlvbkNvbGxlY3RuLmgiCmNsYXNzIG5zSURPTUhUTUxPcHRpb25FbGVtZW50OwojIDI3ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTU5TSFRNTE9wdGlvbkNvbGxlY3RuLmgiCmNsYXNz
IG5zSURPTU5TSFRNTE9wdGlvbkNvbGxlY3Rpb24gOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVi
bGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQg
aWlkID0gezB4NDA5YmJmMTQsIDB4MWRkMiwgMHgxMWIyLCB7IDB4OTEsIDB4ZGUsIDB4OGQsIDB4
NjcsIDB4MmQsIDB4NDAsIDB4NjIsIDB4NzYgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRMZW5ndGgoUFJVaW50MzIgKmFMZW5ndGgpID0gMDsKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldExlbmd0aChQUlVpbnQzMiBhTGVuZ3RoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldFNlbGVjdGVkSW5kZXgoUFJJbnQzMiAqYVNlbGVjdGVkSW5kZXgpID0gMDsKICB2aXJ0dWFs
IG5zcmVzdWx0IFNldFNlbGVjdGVkSW5kZXgoUFJJbnQzMiBhU2VsZWN0ZWRJbmRleCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRPcHRpb24oUFJJbnQzMiBpbmRleCwgbnNJRE9NSFRNTE9w
dGlvbkVsZW1lbnQgKm9wdGlvbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBBZGQobnNJRE9N
SFRNTE9wdGlvbkVsZW1lbnQgKm9wdGlvbikgPSAwOwoKfTsKIyAxMzcgIm5zRE9NQ2xhc3NJbmZv
LmNwcCIgMgoKCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJQ29udGVudExp
c3QuaCIgMQojIDU0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lDb250ZW50TGlz
dC5oIgpjbGFzcyBuc0lDb250ZW50TGlzdCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CnB1YmxpYzoK
CiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9
IHsgMHhkNzJjYjQwMCwgMHg0YjMzLCAweDExZDUsIHsgMHhhMCwgMHg0MSwgMHgwLCAweDEwLCAw
eGE0LCAweGVmLCAweDQ4LCAweGM5IH0gfTsgcmV0dXJuIGlpZDt9CgoKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0UGFyZW50T2JqZWN0KG5zSVN1cHBvcnRzKiogYVBhcmVudE9iamVjdCkgPSAwOwoK
CgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMZW5ndGgoUFJVaW50MzIqIGFMZW5ndGgsIFBSQm9v
bCBhRG9GbHVzaCkgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IEl0ZW0oUFJVaW50MzIgYUluZGV4
LCBuc0lET01Ob2RlKiogYVJldHVybiwKICAgICAgICAgICAgICAgICAgUFJCb29sIGFEb0ZsdXNo
KSA9IDA7CgogIHZpcnR1YWwgbnNyZXN1bHQgTmFtZWRJdGVtKGNvbnN0IG5zQVN0cmluZyYgYU5h
bWUsIG5zSURPTU5vZGUqKiBhUmV0dXJuLAogICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCBh
RG9GbHVzaCkgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IEluZGV4T2YobnNJQ29udGVudCAqYUNv
bnRlbnQsIFBSSW50MzImIGFJbmRleCwKICAgICAgICAgICAgICAgICAgICAgUFJCb29sIGFEb0Zs
dXNoKSA9IDA7Cn07CiMgMTQwICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKCgojIDEgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSUV2ZW50TGlzdGVuZXJNYW5hZ2VyLmgiIDEKIyA0NiAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJRXZlbnRMaXN0ZW5lck1hbmFnZXIuaCIK
Y2xhc3MgbnNJUHJlc0NvbnRleHQ7CmNsYXNzIG5zSURPTUV2ZW50TGlzdGVuZXI7CmNsYXNzIG5z
SVNjcmlwdENvbnRleHQ7CmNsYXNzIG5zSURPTUV2ZW50VGFyZ2V0OwpjbGFzcyBuc0lET01FdmVu
dEdyb3VwOwojIDYwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lFdmVudExpc3Rl
bmVyTWFuYWdlci5oIgpjbGFzcyBuc0lFdmVudExpc3RlbmVyTWFuYWdlciA6IHB1YmxpYyBuc0lT
dXBwb3J0cyB7CgpwdWJsaWM6CiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGlj
IGNvbnN0IG5zSUlEIGlpZCA9IHsgMHhjZDkxYmNmMCwgMHhkZWQ5LCAweDExZDEsIHsweGJkLCAw
eDg1LCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGUzLCAweGY0fSB9OyByZXR1cm4gaWlkO30K
CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgQWRkRXZlbnRMaXN0ZW5lckJ5SUlEKG5zSURPTUV2ZW50
TGlzdGVuZXIgKmFMaXN0ZW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBuc0lJRCYgYUlJRCwgUFJJbnQzMiBmbGFncykgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBSZW1vdmVFdmVudExpc3RlbmVyQnlJSUQobnNJRE9NRXZlbnRMaXN0ZW5lciAqYUxpc3Rl
bmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5zSUlEJiBh
SUlELCBQUkludDMyIGZsYWdzKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEFkZEV2ZW50
TGlzdGVuZXJCeVR5cGUobnNJRE9NRXZlbnRMaXN0ZW5lciAqYUxpc3RlbmVyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuc0FTdHJpbmcmIHR5cGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSSW50MzIgZmxhZ3MsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5zSURPTUV2ZW50R3JvdXAqIGFFdnRHcnApID0gMDsKCgoK
CgogIHZpcnR1YWwgbnNyZXN1bHQgUmVtb3ZlRXZlbnRMaXN0ZW5lckJ5VHlwZShuc0lET01FdmVu
dExpc3RlbmVyICphTGlzdGVuZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IG5zQVN0cmluZyYgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUFJJbnQzMiBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnNJRE9NRXZlbnRHcm91cCogYUV2dEdycCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgQWRkU2NyaXB0RXZlbnRMaXN0ZW5lcihuc0lTY3JpcHRDb250ZXh0KmFDb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdXBwb3J0cyAqYU9iamVjdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQXRvbSAqYU5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5zQVN0cmluZyYgYUZ1bmMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCBhRGVmZXJDb21waWxhdGlv
bikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZW1vdmVTY3JpcHRFdmVudExpc3RlbmVyKG5z
SUF0b20gKmFOYW1lKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZWdpc3RlclNjcmlw
dEV2ZW50TGlzdGVuZXIobnNJU2NyaXB0Q29udGV4dCAqYUNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3VwcG9ydHMgKmFPYmplY3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQXRvbSogYU5hbWUpID0gMDsKCgoK
CgogIHZpcnR1YWwgbnNyZXN1bHQgQ29tcGlsZVNjcmlwdEV2ZW50TGlzdGVuZXIobnNJU2NyaXB0
Q29udGV4dCAqYUNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuc0lTdXBwb3J0cyAqYU9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5zSUF0b20qIGFOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUFJCb29sICphRGlkQ29tcGlsZSkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQg
SGFuZGxlRXZlbnQobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgIG5zRXZlbnQqIGFFdmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgIG5zSURP
TUV2ZW50KiogYURPTUV2ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgbnNJRE9NRXZlbnRU
YXJnZXQqIGFDdXJyZW50VGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgUFJVaW50MzIg
YUZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgbnNFdmVudFN0YXR1cyogYUV2ZW50U3Rh
dHVzKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDcmVhdGVFdmVudChuc0lQcmVzQ29u
dGV4dCogYVByZXNDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgbnNFdmVudCogYUV2
ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbnNBU3RyaW5nJiBhRXZlbnRUeXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgbnNJRE9NRXZlbnQqKiBhRE9NRXZlbnQpID0gMDsK
CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ2FwdHVyZUV2ZW50KFBSSW50MzIgYUV2ZW50VHlwZXMp
ID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVsZWFzZUV2ZW50KFBSSW50MzIgYUV2ZW50
VHlwZXMpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVtb3ZlQWxsTGlzdGVuZXJzKFBS
Qm9vbCBhU2NyaXB0T25seSkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRMaXN0ZW5l
clRhcmdldChuc0lTdXBwb3J0cyogYVRhcmdldCkgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEhhc011dGF0aW9uTGlzdGVuZXJzKFBSQm9vbCogYUxpc3RlbmVyKSA9IDA7CgoKCgoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRTeXN0ZW1FdmVudEdyb3VwTE0obnNJRE9NRXZlbnRHcm91cCoqIGFH
cm91cCkgPSAwOwp9OwoKZXh0ZXJuIG5zcmVzdWx0Ck5TX05ld0V2ZW50TGlzdGVuZXJNYW5hZ2Vy
KG5zSUV2ZW50TGlzdGVuZXJNYW5hZ2VyKiogYUluc3RhbmNlUHRyUmVzdWx0KTsKIyAxNDMgIm5z
RE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9N
RXZlbnRSZWNlaXZlci5oIiAxCiMgNDIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9N
RXZlbnRSZWNlaXZlci5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NRXZl
bnRUYXJnZXQuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUV2ZW50
VGFyZ2V0LmgiCmNsYXNzIG5zSURPTUV2ZW50VGFyZ2V0IDogcHVibGljIG5zSVN1cHBvcnRzIHsK
IHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5z
SUlEIGlpZCA9IHsweDFjNzczYjMwLCAweGQxY2YsIDB4MTFkMiwgeyAweGJkLCAweDk1LCAweDAw
LCAweDgwLCAweDVmLCAweDhhLCAweGUzLCAweGY0IH19OyByZXR1cm4gaWlkO30KIyA2NSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01FdmVudFRhcmdldC5oIgogIHZpcnR1YWwgbnNy
ZXN1bHQgQWRkRXZlbnRMaXN0ZW5lcihjb25zdCBuc0FTdHJpbmcgJiB0eXBlLCBuc0lET01FdmVu
dExpc3RlbmVyICpsaXN0ZW5lciwgUFJCb29sIHVzZUNhcHR1cmUpID0gMDsKIyA4OCAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01FdmVudFRhcmdldC5oIgogIHZpcnR1YWwgbnNyZXN1
bHQgUmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBuc0FTdHJpbmcgJiB0eXBlLCBuc0lET01FdmVu
dExpc3RlbmVyICpsaXN0ZW5lciwgUFJCb29sIHVzZUNhcHR1cmUpID0gMDsKIyAxMDkgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NRXZlbnRUYXJnZXQuaCIKICB2aXJ0dWFsIG5zcmVz
dWx0IERpc3BhdGNoRXZlbnQobnNJRE9NRXZlbnQgKmV2dCwgUFJCb29sICpfcmV0dmFsKSA9IDA7
Cgp9OwojIDQzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUV2ZW50UmVjZWl2ZXIu
aCIgMgoKY2xhc3MgbnNJRE9NRXZlbnRMaXN0ZW5lcjsKY2xhc3MgbnNJRE9NTW91c2VMaXN0ZW5l
cjsKY2xhc3MgbnNJRE9NTW91c2VNb3Rpb25MaXN0ZW5lcjsKY2xhc3MgbnNJRE9NS2V5TGlzdGVu
ZXI7CmNsYXNzIG5zSURPTUZvY3VzTGlzdGVuZXI7CmNsYXNzIG5zSURPTUxvYWRMaXN0ZW5lcjsK
Y2xhc3MgbnNJRE9NRHJhZ0xpc3RlbmVyOwpjbGFzcyBuc0lFdmVudExpc3RlbmVyTWFuYWdlcjsK
Y2xhc3MgbnNJRE9NRXZlbnQ7CmNsYXNzIG5zSURPTUV2ZW50R3JvdXA7CiMgNjUgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NRXZlbnRSZWNlaXZlci5oIgpjbGFzcyBuc0lET01FdmVu
dFJlY2VpdmVyIDogcHVibGljIG5zSURPTUV2ZW50VGFyZ2V0CnsKcHVibGljOgogIHN0YXRpYyBj
b25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7IDB4ZTFkYmNi
YTAsIDB4ZmIzOCwgMHgxMWQxLCB7MHhiZCwgMHg4NywgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwg
MHhlMywgMHhmNH0gfTsgcmV0dXJuIGlpZDt9CgogIHZpcnR1YWwgbnNyZXN1bHQgQWRkRXZlbnRM
aXN0ZW5lckJ5SUlEKG5zSURPTUV2ZW50TGlzdGVuZXIgKmFMaXN0ZW5lciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuc0lJRCYgYUlJRCkgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgUmVtb3ZlRXZlbnRMaXN0ZW5lckJ5SUlEKG5zSURPTUV2ZW50TGlzdGVuZXIgKmFM
aXN0ZW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuc0lJ
RCYgYUlJRCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGlzdGVuZXJNYW5hZ2VyKG5zSUV2
ZW50TGlzdGVuZXJNYW5hZ2VyKiogYVJlc3VsdCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgSGFu
ZGxlRXZlbnQobnNJRE9NRXZlbnQgKmFFdmVudCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
U3lzdGVtRXZlbnRHcm91cChuc0lET01FdmVudEdyb3VwKiogYUdyb3VwKSA9IDA7Cn07CiMgMTQ0
ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20v
bnNJRE9NU3R5bGVTaGVldC5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJ
RE9NU3R5bGVTaGVldC5oIgpjbGFzcyBuc0lET01TdHlsZVNoZWV0IDogcHVibGljIG5zSVN1cHBv
cnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNv
bnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MDgwLCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJl
LCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KIyA0
MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01TdHlsZVNoZWV0LmgiCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRUeXBlKG5zQVN0cmluZyAmIGFUeXBlKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldERpc2FibGVkKFBSQm9vbCAqYURpc2FibGVkKSA9IDA7CiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXREaXNhYmxlZChQUkJvb2wgYURpc2FibGVkKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldE93bmVyTm9kZShuc0lET01Ob2RlICogKmFPd25lck5vZGUpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0UGFyZW50U3R5bGVTaGVldChuc0lET01TdHlsZVNoZWV0ICogKmFQYXJl
bnRTdHlsZVNoZWV0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEhyZWYobnNBU3RyaW5n
ICYgYUhyZWYpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VGl0bGUobnNBU3RyaW5nICYg
YVRpdGxlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1lZGlhKG5zSURPTU1lZGlhTGlz
dCAqICphTWVkaWEpID0gMDsKCn07CiMgMTQ3ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVN0eWxlU2hlZXRMaXN0LmgiIDEKIyAyNSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01TdHlsZVNoZWV0TGlzdC5oIgpjbGFzcyBu
c0lET01TdHlsZVNoZWV0TGlzdCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0
YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhh
NmNmOTA4MSwgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1Ziwg
MHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CiMgNDAgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9kb20vbnNJRE9NU3R5bGVTaGVldExpc3QuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldExl
bmd0aChQUlVpbnQzMiAqYUxlbmd0aCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJdGVtKFBS
VWludDMyIGluZGV4LCBuc0lET01TdHlsZVNoZWV0ICoqX3JldHZhbCkgPSAwOwoKfTsKIyAxNDgg
Im5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJ
RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9k
b20vbnNJRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIgpjbGFzcyBuc0lET01DU1NTdHlsZURlY2xh
cmF0aW9uIDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5z
SUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MGJlLCAweDE1
YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAw
eDMyIH19OyByZXR1cm4gaWlkO30KIyA0MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lE
T01DU1NTdHlsZURlY2xhcmF0aW9uLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDc3NUZXh0KG5z
QVN0cmluZyAmIGFDc3NUZXh0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDc3NUZXh0KGNv
bnN0IG5zQVN0cmluZyAmIGFDc3NUZXh0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBy
b3BlcnR5VmFsdWUoY29uc3QgbnNBU3RyaW5nICYgcHJvcGVydHlOYW1lLCBuc0FTdHJpbmcgJiBf
cmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByb3BlcnR5Q1NTVmFsdWUoY29u
c3QgbnNBU3RyaW5nICYgcHJvcGVydHlOYW1lLCBuc0lET01DU1NWYWx1ZSAqKl9yZXR2YWwpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVtb3ZlUHJvcGVydHkoY29uc3QgbnNBU3RyaW5nICYg
cHJvcGVydHlOYW1lLCBuc0FTdHJpbmcgJiBfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldFByb3BlcnR5UHJpb3JpdHkoY29uc3QgbnNBU3RyaW5nICYgcHJvcGVydHlOYW1lLCBu
c0FTdHJpbmcgJiBfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFByb3BlcnR5
KGNvbnN0IG5zQVN0cmluZyAmIHByb3BlcnR5TmFtZSwgY29uc3QgbnNBU3RyaW5nICYgdmFsdWUs
IGNvbnN0IG5zQVN0cmluZyAmIHByaW9yaXR5KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dExlbmd0aChQUlVpbnQzMiAqYUxlbmd0aCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJdGVt
KFBSVWludDMyIGluZGV4LCBuc0FTdHJpbmcgJiBfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldFBhcmVudFJ1bGUobnNJRE9NQ1NTUnVsZSAqICphUGFyZW50UnVsZSkgPSAwOwoK
fTsKIyAxNDkgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9kb20vbnNJRE9NQ1NTUnVsZS5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20v
bnNJRE9NQ1NTUnVsZS5oIgpjbGFzcyBuc0lET01DU1NSdWxlIDogcHVibGljIG5zSVN1cHBvcnRz
IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0
IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MGMxLCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAw
eDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KIyAzOSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01DU1NSdWxlLmgiCiAgZW51bSB7IFVOS05P
V05fUlVMRSA9IDBVIH07CgogIGVudW0geyBTVFlMRV9SVUxFID0gMVUgfTsKCiAgZW51bSB7IENI
QVJTRVRfUlVMRSA9IDJVIH07CgogIGVudW0geyBJTVBPUlRfUlVMRSA9IDNVIH07CgogIGVudW0g
eyBNRURJQV9SVUxFID0gNFUgfTsKCiAgZW51bSB7IEZPTlRfRkFDRV9SVUxFID0gNVUgfTsKCiAg
ZW51bSB7IFBBR0VfUlVMRSA9IDZVIH07CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFR5cGUoUFJV
aW50MTYgKmFUeXBlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENzc1RleHQobnNBU3Ry
aW5nICYgYUNzc1RleHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENzc1RleHQoY29uc3Qg
bnNBU3RyaW5nICYgYUNzc1RleHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UGFyZW50
U3R5bGVTaGVldChuc0lET01DU1NTdHlsZVNoZWV0ICogKmFQYXJlbnRTdHlsZVNoZWV0KSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBhcmVudFJ1bGUobnNJRE9NQ1NTUnVsZSAqICphUGFy
ZW50UnVsZSkgPSAwOwoKfTsKIyAxNTAgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NQ1NTUnVsZUxpc3QuaCIgMQojIDI1ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNTU1J1bGVMaXN0LmgiCmNsYXNzIG5zSURPTUNTU1J1
bGVMaXN0IDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5z
SUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MGMwLCAweDE1
YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAw
eDMyIH19OyByZXR1cm4gaWlkO30KIyA0MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lE
T01DU1NSdWxlTGlzdC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGVuZ3RoKFBSVWludDMyICph
TGVuZ3RoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEl0ZW0oUFJVaW50MzIgaW5kZXgsIG5z
SURPTUNTU1J1bGUgKipfcmV0dmFsKSA9IDA7Cgp9OwojIDE1MSAibnNET01DbGFzc0luZm8uY3Bw
IiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01SZWN0LmgiIDEKIyAyNSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01SZWN0LmgiCmNsYXNzIG5zSURPTVJlY3Qg
OiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdl
dElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4NzE3MzVmNjIsIDB4YWM1YywgMHg0
MjM2LCB7IDB4OWEsIDB4MWYsIDB4NWYsIDB4ZmIsIDB4MjgsIDB4MGQsIDB4NTMsIDB4MWMgfX07
IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRUb3AobnNJRE9NQ1NTUHJpbWl0
aXZlVmFsdWUgKiAqYVRvcCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRSaWdodChuc0lE
T01DU1NQcmltaXRpdmVWYWx1ZSAqICphUmlnaHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0Qm90dG9tKG5zSURPTUNTU1ByaW1pdGl2ZVZhbHVlICogKmFCb3R0b20pID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0TGVmdChuc0lET01DU1NQcmltaXRpdmVWYWx1ZSAqICphTGVmdCkg
PSAwOwoKfTsKIyAxNTIgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9kb20vbnNJRE9NUkdCQ29sb3IuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvZG9tL25zSURPTVJHQkNvbG9yLmgiCmNsYXNzIG5zSURPTVJHQkNvbG9yIDogcHVibGljIG5z
SVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3Rh
dGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDZhZmYzMTAyLCAweDMyMGQsIDB4NDk4NiwgeyAweDk3
LCAweDkwLCAweDEyLCAweDMxLCAweDZiLCAweGI4LCAweDdjLCAweGY5IH19OyByZXR1cm4gaWlk
O30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UmVkKG5zSURPTUNTU1ByaW1pdGl2ZVZhbHVlICog
KmFSZWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0R3JlZW4obnNJRE9NQ1NTUHJpbWl0
aXZlVmFsdWUgKiAqYUdyZWVuKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEJsdWUobnNJ
RE9NQ1NTUHJpbWl0aXZlVmFsdWUgKiAqYUJsdWUpID0gMDsKCn07CiMgMTUzICJuc0RPTUNsYXNz
SW5mby5jcHAiIDIKCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSVhCTFNl
cnZpY2UuaCIgMQojIDUyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lYQkxTZXJ2
aWNlLmgiCmNsYXNzIG5zSUNvbnRlbnQ7CmNsYXNzIG5zSURvY3VtZW50OwpjbGFzcyBuc0lET01F
dmVudFJlY2VpdmVyOwpjbGFzcyBuc0lET01Ob2RlTGlzdDsKY2xhc3MgbnNJWEJMQmluZGluZzsK
Y2xhc3MgbnNJWEJMRG9jdW1lbnRJbmZvOwpjbGFzcyBuc0lVUkk7CmNsYXNzIG5zSUF0b207CgoK
CgoKY2xhc3MgbnNJWEJMU2VydmljZSA6IHB1YmxpYyBuc0lTdXBwb3J0cwp7CnB1YmxpYzoKICBz
dGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0geyAw
eGU3OTAzZTEsIDB4YzdiYiwgMHgxMWQzLCB7IDB4OTcsIDB4ZmIsIDB4MCwgMHg0MCwgMHg1LCAw
eDUzLCAweGVlLCAweGYwIH0gfTsgcmV0dXJuIGlpZDt9CgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBM
b2FkQmluZGluZ3MobnNJQ29udGVudCogYUNvbnRlbnQsIGNvbnN0IG5zQVN0cmluZyYgYVVSTCwg
UFJCb29sIGFBdWdtZW50RmxhZywKICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lYQkxCaW5k
aW5nKiogYUJpbmRpbmcsIFBSQm9vbCogYVJlc29sdmVTdHlsZSkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBGbHVzaFN0eWxlQmluZGluZ3MobnNJQ29udGVudCogYUNvbnRlbnQpID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0QmluZGluZyhuc0lDb250ZW50KiBhQm91bmRFbGVtZW50LCBj
b25zdCBuc0NTdHJpbmcmIGFVUkxTdHIsIG5zSVhCTEJpbmRpbmcqKiBhUmVzdWx0KSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEJpbmRpbmdSZWFkeShuc0lDb250ZW50KiBhQm91bmRFbGVtZW50
LCBjb25zdCBuc0NTdHJpbmcmIGFVUkxTdHIsIFBSQm9vbCogYUlzUmVhZHkpID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgUmVzb2x2ZVRhZyhuc0lDb250ZW50KiBhQ29udGVudCwgUFJJbnQzMiog
YU5hbWVTcGFjZUlELCBuc0lBdG9tKiogYVJlc3VsdCkgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldFhCTERvY3VtZW50SW5mbyhjb25zdCBuc0NTdHJpbmcmIGFVUkxTdHIsIG5zSUNvbnRlbnQq
IGFCb3VuZEVsZW1lbnQsIG5zSVhCTERvY3VtZW50SW5mbyoqIGFSZXN1bHQpPTA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IExvYWRCaW5kaW5nRG9jdW1lbnRJbmZvKG5zSUNvbnRlbnQqIGFCb3VuZEVs
ZW1lbnQsIG5zSURvY3VtZW50KiBhQm91bmREb2N1bWVudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IG5zQ1N0cmluZyYgYVVSSSwgY29uc3QgbnNDU3RyaW5nJiBh
UmVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJCb29sIGFGb3JjZVN5
bmNMb2FkLCBuc0lYQkxEb2N1bWVudEluZm8qKiBhUmVzdWx0KSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEF0dGFjaEdsb2JhbEtleUhhbmRsZXIobnNJRE9NRXZlbnRSZWNlaXZlciogYUVsZW1l
bnQpPTA7CiAgdmlydHVhbCBuc3Jlc3VsdCBBdHRhY2hHbG9iYWxEcmFnSGFuZGxlcihuc0lET01F
dmVudFJlY2VpdmVyKiBhRWxlbWVudCk9MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgRmV0Y2hTeW5j
WE1MRG9jdW1lbnQobnNJVVJJKiBhVVJJLCBuc0lEb2N1bWVudCoqIGFSZXN1bHQpID0gMDsKfTsK
IyAxNTYgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9j
b250ZW50L25zSVhCTEJpbmRpbmcuaCIgMQojIDUxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29u
dGVudC9uc0lYQkxCaW5kaW5nLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25z
SVN1cHBvcnRzQXJyYXkuaCIgMQojIDE0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJ
U3VwcG9ydHNBcnJheS5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb2xs
ZWN0aW9uLmgiIDEKIyAyOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUNvbGxlY3Rp
b24uaCIKY2xhc3MgbnNJQ29sbGVjdGlvbiA6IHB1YmxpYyBuc0lTZXJpYWxpemFibGUgewogcHVi
bGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQg
aWlkID0gezB4ODNiNjAxOWMsIDB4Y2JjNCwgMHgxMWQyLCB7IDB4OGMsIDB4Y2EsIDB4MDAsIDB4
NjAsIDB4YjAsIDB4ZmMsIDB4MTQsIDB4YTMgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBDb3VudChQUlVpbnQzMiAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRFbGVtZW50QXQoUFJVaW50MzIgaW5kZXgsIG5zSVN1cHBvcnRzICoqX3JldHZhbCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBRdWVyeUVsZW1lbnRBdChQUlVpbnQzMiBpbmRleCwgY29u
c3QgbnNJSUQgJiB1dWlkLCB2b2lkICogKnJlc3VsdCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRFbGVtZW50QXQoUFJVaW50MzIgaW5kZXgsIG5zSVN1cHBvcnRzICppdGVtKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEFwcGVuZEVsZW1lbnQobnNJU3VwcG9ydHMgKml0ZW0pID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgUmVtb3ZlRWxlbWVudChuc0lTdXBwb3J0cyAqaXRlbSkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBFbnVtZXJhdGUobnNJRW51bWVyYXRvciAqKl9yZXR2YWwp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ2xlYXIodm9pZCkgPSAwOwoKfTsKIyAxNzUgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb2xsZWN0aW9uLmgiCmNsYXNzIG5zUXVlcnlF
bGVtZW50QXQgOiBwdWJsaWMgbnNDT01QdHJfaGVscGVyCiAgewogICAgcHVibGljOgogICAgICBu
c1F1ZXJ5RWxlbWVudEF0KCBuc0lDb2xsZWN0aW9uKiBhQ29sbGVjdGlvbiwgUFJVaW50MzIgYUlu
ZGV4LCBuc3Jlc3VsdCogYUVycm9yUHRyICkKICAgICAgICAgIDogbUNvbGxlY3Rpb24oYUNvbGxl
Y3Rpb24pLAogICAgICAgICAgICBtSW5kZXgoYUluZGV4KSwKICAgICAgICAgICAgbUVycm9yUHRy
KGFFcnJvclB0cikKICAgICAgICB7CgogICAgICAgIH0KICAgICAgdmlydHVhbCBuc3Jlc3VsdCBv
cGVyYXRvcigpKCBjb25zdCBuc0lJRCYgYUlJRCwgdm9pZCoqICkgY29uc3Q7CiAgICBwcml2YXRl
OgogICAgICBuc0lDb2xsZWN0aW9uKiBtQ29sbGVjdGlvbjsKICAgICAgUFJVaW50MzIgbUluZGV4
OwogICAgICBuc3Jlc3VsdCogbUVycm9yUHRyOwogIH07CmlubGluZQpjb25zdCBuc1F1ZXJ5RWxl
bWVudEF0CmRvX1F1ZXJ5RWxlbWVudEF0KCBuc0lDb2xsZWN0aW9uKiBhQ29sbGVjdGlvbiwgUFJV
aW50MzIgYUluZGV4LCBuc3Jlc3VsdCogYUVycm9yUHRyID0gMCApCiAgewogICAgcmV0dXJuIG5z
UXVlcnlFbGVtZW50QXQoYUNvbGxlY3Rpb24sIGFJbmRleCwgYUVycm9yUHRyKTsKICB9CiMgMTUg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0c0FycmF5LmgiIDIKCgoKCgoK
Y2xhc3MgbnNJQmlkaXJlY3Rpb25hbEVudW1lcmF0b3I7CiMgMzQgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS94cGNvbS9uc0lTdXBwb3J0c0FycmF5LmgiCnR5cGVkZWYgUFJCb29sICgqbnNJU3VwcG9y
dHNBcnJheUVudW1GdW5jKShuc0lTdXBwb3J0cyogYUVsZW1lbnQsIHZvaWQgKmFEYXRhKTsKIyA0
NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN1cHBvcnRzQXJyYXkuaCIKY2xhc3Mg
bnNJU3VwcG9ydHNBcnJheSA6IHB1YmxpYyBuc0lDb2xsZWN0aW9uIHsKIHB1YmxpYzoKCiAgc3Rh
dGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDc5
MWVhZmEwLCAweGI5ZTYsIDB4MTFkMSwgeyAweDgwLCAweDMxLCAweDAwLCAweDYwLCAweDA4LCAw
eDE1LCAweDliLCAweDVhIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgUFJCb29sIEVxdWFs
cyhjb25zdCBuc0lTdXBwb3J0c0FycmF5ICpvdGhlcikgPSAwOwoKCiAgdmlydHVhbCBuc0lTdXBw
b3J0cyAqIEVsZW1lbnRBdChQUlVpbnQzMiBhSW5kZXgpID0gMDsKCgogIHZpcnR1YWwgUFJJbnQz
MiBJbmRleE9mKGNvbnN0IG5zSVN1cHBvcnRzICphUG9zc2libGVFbGVtZW50KSA9IDA7CgoKICB2
aXJ0dWFsIFBSSW50MzIgSW5kZXhPZlN0YXJ0aW5nQXQoY29uc3QgbnNJU3VwcG9ydHMgKmFQb3Nz
aWJsZUVsZW1lbnQsIFBSVWludDMyIGFTdGFydEluZGV4KSA9IDA7CgoKICB2aXJ0dWFsIFBSSW50
MzIgTGFzdEluZGV4T2YoY29uc3QgbnNJU3VwcG9ydHMgKmFQb3NzaWJsZUVsZW1lbnQpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SW5kZXhPZihuc0lTdXBwb3J0cyAqYVBvc3NpYmxlRWxl
bWVudCwgUFJJbnQzMiAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRJbmRl
eE9mU3RhcnRpbmdBdChuc0lTdXBwb3J0cyAqYVBvc3NpYmxlRWxlbWVudCwgUFJVaW50MzIgYVN0
YXJ0SW5kZXgsIFBSSW50MzIgKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
TGFzdEluZGV4T2YobnNJU3VwcG9ydHMgKmFQb3NzaWJsZUVsZW1lbnQsIFBSSW50MzIgKl9yZXR2
YWwpID0gMDsKCgogIHZpcnR1YWwgUFJCb29sIEluc2VydEVsZW1lbnRBdChuc0lTdXBwb3J0cyAq
YUVsZW1lbnQsIFBSVWludDMyIGFJbmRleCkgPSAwOwoKCiAgdmlydHVhbCBQUkJvb2wgUmVwbGFj
ZUVsZW1lbnRBdChuc0lTdXBwb3J0cyAqYUVsZW1lbnQsIFBSVWludDMyIGFJbmRleCkgPSAwOwoK
CiAgdmlydHVhbCBQUkJvb2wgUmVtb3ZlRWxlbWVudEF0KFBSVWludDMyIGFJbmRleCkgPSAwOwoK
CiAgdmlydHVhbCBQUkJvb2wgUmVtb3ZlTGFzdEVsZW1lbnQoY29uc3QgbnNJU3VwcG9ydHMgKmFF
bGVtZW50KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IERlbGV0ZUxhc3RFbGVtZW50KG5zSVN1
cHBvcnRzICphRWxlbWVudCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBEZWxldGVFbGVtZW50
QXQoUFJVaW50MzIgYUluZGV4KSA9IDA7CgoKICB2aXJ0dWFsIFBSQm9vbCBBcHBlbmRFbGVtZW50
cyhuc0lTdXBwb3J0c0FycmF5ICphRWxlbWVudHMpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
Q29tcGFjdCh2b2lkKSA9IDA7CgoKICB2aXJ0dWFsIFBSQm9vbCBFbnVtZXJhdGVGb3J3YXJkcyhu
c0lTdXBwb3J0c0FycmF5RW51bUZ1bmMgYUZ1bmMsIHZvaWQgKiBhRGF0YSkgPSAwOwoKCiAgdmly
dHVhbCBQUkJvb2wgRW51bWVyYXRlQmFja3dhcmRzKG5zSVN1cHBvcnRzQXJyYXlFbnVtRnVuYyBh
RnVuYywgdm9pZCAqIGFEYXRhKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENsb25lKG5zSVN1
cHBvcnRzQXJyYXkgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIFBSQm9vbCBNb3ZlRWxlbWVu
dChQUkludDMyIGFGcm9tLCBQUkludDMyIGFUbykgPSAwOwoKCiAgdmlydHVhbCBQUkJvb2wgSW5z
ZXJ0RWxlbWVudHNBdChuc0lTdXBwb3J0c0FycmF5ICphT3RoZXIsIFBSVWludDMyIGFJbmRleCkg
PSAwOwoKCiAgdmlydHVhbCBQUkJvb2wgUmVtb3ZlRWxlbWVudHNBdChQUlVpbnQzMiBhSW5kZXgs
IFBSVWludDMyIGFDb3VudCkgPSAwOwoKCiAgdmlydHVhbCBQUkJvb2wgU2l6ZVRvKFBSSW50MzIg
YVNpemUpID0gMDsKCn07CiMgMzY4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJU3Vw
cG9ydHNBcnJheS5oIgpleHRlcm4gbnNyZXN1bHQKTlNfTmV3SVN1cHBvcnRzQXJyYXkobnNJU3Vw
cG9ydHNBcnJheSoqIGFJbnN0YW5jZVB0clJlc3VsdCk7CgpleHRlcm4gbnNyZXN1bHQKTlNfTmV3
SVN1cHBvcnRzQXJyYXlFbnVtZXJhdG9yKG5zSVN1cHBvcnRzQXJyYXkqIGFycmF5LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnNJQmlkaXJlY3Rpb25hbEVudW1lcmF0b3IqICphSW5z
dGFuY2VQdHJSZXN1bHQpOwojIDUyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lY
QkxCaW5kaW5nLmgiIDIKCmNsYXNzIG5zSUNvbnRlbnQ7CmNsYXNzIG5zSURvY3VtZW50OwpjbGFz
cyBuc0lET01Ob2RlTGlzdDsKY2xhc3MgbnNJU2NyaXB0Q29udGV4dDsKY2xhc3MgbnNJWEJMUHJv
dG90eXBlQmluZGluZzsKCgoKCgpjbGFzcyBuc0lYQkxCaW5kaW5nIDogcHVibGljIG5zSVN1cHBv
cnRzCnsKcHVibGljOgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25z
dCBuc0lJRCBpaWQgPSB7IDB4ZGRkYmFkMjAsIDB4YzhkZiwgMHgxMWQzLCB7IDB4OTcsIDB4ZmIs
IDB4MCwgMHg0MCwgMHg1LCAweDUzLCAweGVlLCAweGYwIH0gfTsgcmV0dXJuIGlpZDt9CgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0UHJvdG90eXBlQmluZGluZyhuc0lYQkxQcm90b3R5cGVCaW5kaW5n
KiogYVJlc3VsdCk9MDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFByb3RvdHlwZUJpbmRpbmcobnNJ
WEJMUHJvdG90eXBlQmluZGluZyogYVByb3RvQmluZGluZyk9MDsKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRCYXNlQmluZGluZyhuc0lYQkxCaW5kaW5nKiogYVJlc3VsdCkgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0QmFzZUJpbmRpbmcobnNJWEJMQmluZGluZyogYUJpbmRpbmcpID0gMDsKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRBbm9ueW1vdXNDb250ZW50KG5zSUNvbnRlbnQqKiBhUGFyZW50
KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRBbm9ueW1vdXNDb250ZW50KG5zSUNvbnRlbnQq
IGFQYXJlbnQpID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRCaW5kaW5nRWxlbWVudChuc0lD
b250ZW50KiogYVJlc3VsdCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QmluZGluZ0VsZW1l
bnQobnNJQ29udGVudCogYUVsZW1lbnQpID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRCb3Vu
ZEVsZW1lbnQobnNJQ29udGVudCoqIGFSZXN1bHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dEJvdW5kRWxlbWVudChuc0lDb250ZW50KiBhRWxlbWVudCkgPSAwOwoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdlbmVyYXRlQW5vbnltb3VzQ29udGVudCgpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IElu
c3RhbGxFdmVudEhhbmRsZXJzKCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgSW5zdGFsbEltcGxl
bWVudGF0aW9uKCkgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IEhhc1N0eWxlU2hlZXRzKFBSQm9v
bCogYVJlc29sdmVTdHlsZSkgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEZpcnN0QmluZGlu
Z1dpdGhDb25zdHJ1Y3Rvcihuc0lYQkxCaW5kaW5nKiogYVJlc3VsdCk9MDsKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRCYXNlVGFnKFBSSW50MzIqIGFOYW1lU3BhY2VJRCwgbnNJQXRvbSoqIGFSZXN1
bHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQXR0cmlidXRlQ2hhbmdlZChuc0lBdG9tKiBh
QXR0cmlidXRlLCBQUkludDMyIGFOYW1lU3BhY2VJRCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUFJCb29sIGFSZW1vdmVGbGFnLCBQUkJvb2wgYU5vdGlmeSkgPSAwOwoKICB2aXJ0dWFs
IG5zcmVzdWx0IEV4ZWN1dGVBdHRhY2hlZEhhbmRsZXIoKT0wOwogIHZpcnR1YWwgbnNyZXN1bHQg
RXhlY3V0ZURldGFjaGVkSGFuZGxlcigpPTA7CiAgdmlydHVhbCBuc3Jlc3VsdCBVbmhvb2tFdmVu
dEhhbmRsZXJzKCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgQ2hhbmdlRG9jdW1lbnQobnNJRG9j
dW1lbnQqIGFPbGREb2N1bWVudCwgbnNJRG9jdW1lbnQqIGFOZXdEb2N1bWVudCkgPSAwOwoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldEJpbmRpbmdVUkkobnNDU3RyaW5nJiBhUmVzdWx0KSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXREb2NVUkkobnNDU3RyaW5nJiBhUmVzdWx0KSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRJRChuc0NTdHJpbmcmIGFSZXN1bHQpID0gMDsKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRJbnNlcnRpb25Qb2ludHNGb3IobnNJQ29udGVudCogYVBhcmVudCwgbnNJU3Vw
cG9ydHNBcnJheSoqIGFSZXN1bHQpPTA7CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SW5zZXJ0aW9u
UG9pbnQobnNJQ29udGVudCogYUNoaWxkLCBuc0lDb250ZW50KiogYVJlc3VsdCwgUFJVaW50MzIq
IGFJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUNvbnRlbnQqKiBhRGVm
YXVsdENvbnRlbnQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNpbmdsZUluc2VydGlvblBv
aW50KG5zSUNvbnRlbnQqKiBhUmVzdWx0LCBQUlVpbnQzMiogYUluZGV4LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUFJCb29sKiBhTXVsdGlwbGVJbnNlcnRpb25Qb2ludHMs
IG5zSUNvbnRlbnQqKiBhRGVmYXVsdENvbnRlbnQpID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBJ
c1N0eWxlQmluZGluZyhQUkJvb2wqIGFSZXN1bHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dElzU3R5bGVCaW5kaW5nKFBSQm9vbCBhSXNTdHlsZSkgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldFJvb3RCaW5kaW5nKG5zSVhCTEJpbmRpbmcqKiBhUmVzdWx0KSA9IDA7CiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRGaXJzdFN0eWxlQmluZGluZyhuc0lYQkxCaW5kaW5nKiogYVJlc3VsdCkgPSAw
OwoKICB2aXJ0dWFsIG5zcmVzdWx0IEluaGVyaXRzU3R5bGUoUFJCb29sKiBhUmVzdWx0KT0wOwog
IHZpcnR1YWwgbnNyZXN1bHQgV2Fsa1J1bGVzKG5zSVN1cHBvcnRzQXJyYXlFbnVtRnVuYyBhRnVu
Yywgdm9pZCogYURhdGEpPTA7CiAgdmlydHVhbCBuc3Jlc3VsdCBBdHRyaWJ1dGVBZmZlY3RzU3R5
bGUobnNJU3VwcG9ydHNBcnJheUVudW1GdW5jIGFGdW5jLCB2b2lkKiBhRGF0YSwgUFJCb29sKiBh
QWZmZWN0cyk9MDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBNYXJrRm9yRGVhdGgoKT0wOwogIHZpcnR1
YWwgbnNyZXN1bHQgTWFya2VkRm9yRGVhdGgoUFJCb29sKiBhUmVzdWx0KT0wOwoKICB2aXJ0dWFs
IG5zcmVzdWx0IEltcGxlbWVudHNJbnRlcmZhY2UoY29uc3QgbnNJSUQmIGFJSUQsIFBSQm9vbCog
YVJlc3VsdCk9MDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBbm9ueW1vdXNOb2Rlcyhuc0lET01O
b2RlTGlzdCoqIGFSZXN1bHQpPTA7CgogIHZpcnR1YWwgbnNyZXN1bHQgU2hvdWxkQnVpbGRDaGls
ZEZyYW1lcyhQUkJvb2wqIGFSZXN1bHQpPTA7Cn07CgpleHRlcm4gbnNyZXN1bHQKTlNfTmV3WEJM
QmluZGluZyhuc0lYQkxQcm90b3R5cGVCaW5kaW5nKiBhUHJvdG9CaW5kaW5nLCBuc0lYQkxCaW5k
aW5nKiogYVJlc3VsdCk7CiMgMTU3ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lCaW5kaW5nTWFuYWdlci5oIiAxCiMgNTMgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSUJpbmRpbmdNYW5hZ2VyLmgiCmNsYXNzIG5zSUNv
bnRlbnQ7CmNsYXNzIG5zSVhCTEJpbmRpbmc7CmNsYXNzIG5zSVhCTEJpbmRpbmdBdHRhY2hlZEhh
bmRsZXI7CmNsYXNzIG5zSVhCTERvY3VtZW50SW5mbzsKY2xhc3MgbnNJQXRvbTsKY2xhc3MgbnNJ
U3RyZWFtTGlzdGVuZXI7CmNsYXNzIG5zSVhQQ29ubmVjdFdyYXBwZWRKUzsKY2xhc3MgbnNJRE9N
Tm9kZUxpc3Q7CgoKCgoKY2xhc3MgbnNJQmluZGluZ01hbmFnZXIgOiBwdWJsaWMgbnNJU3VwcG9y
dHMKewpwdWJsaWM6CiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0
IG5zSUlEIGlpZCA9IHsgMHg1NWQ3MGZlMCwgMHhjOGU1LCAweDExZDMsIHsgMHg5NywgMHhmYiwg
MHgwLCAweDQwLCAweDUsIDB4NTMsIDB4ZWUsIDB4ZjAgfSB9OyByZXR1cm4gaWlkO30KCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRCaW5kaW5nKG5zSUNvbnRlbnQqIGFDb250ZW50LCBuc0lYQkxCaW5k
aW5nKiogYVJlc3VsdCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QmluZGluZyhuc0lDb250
ZW50KiBhQ29udGVudCwgbnNJWEJMQmluZGluZyogYUJpbmRpbmcpID0gMDsKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRJbnNlcnRpb25QYXJlbnQobnNJQ29udGVudCogYUNvbnRlbnQsIG5zSUNvbnRl
bnQqKiBhUmVzdWx0KT0wOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0SW5zZXJ0aW9uUGFyZW50KG5z
SUNvbnRlbnQqIGFDb250ZW50LCBuc0lDb250ZW50KiBhUmVzdWx0KT0wOwoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldFdyYXBwZWRKUyhuc0lDb250ZW50KiBhQ29udGVudCwgbnNJWFBDb25uZWN0V3Jh
cHBlZEpTKiogYVJlc3VsdCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0V3JhcHBlZEpTKG5z
SUNvbnRlbnQqIGFDb250ZW50LCBuc0lYUENvbm5lY3RXcmFwcGVkSlMqIGFSZXN1bHQpID0gMDsK
IyA5NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJQmluZGluZ01hbmFnZXIuaCIK
ICB2aXJ0dWFsIG5zcmVzdWx0IENoYW5nZURvY3VtZW50Rm9yKG5zSUNvbnRlbnQqIGFDb250ZW50
LCBuc0lEb2N1bWVudCogYU9sZERvY3VtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnNJRG9jdW1lbnQqIGFOZXdEb2N1bWVudCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBS
ZXNvbHZlVGFnKG5zSUNvbnRlbnQqIGFDb250ZW50LCBQUkludDMyKiBhTmFtZVNwYWNlSUQsIG5z
SUF0b20qKiBhUmVzdWx0KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbnRlbnRM
aXN0Rm9yKG5zSUNvbnRlbnQqIGFDb250ZW50LCBuc0lET01Ob2RlTGlzdCoqIGFSZXN1bHQpID0g
MDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDb250ZW50TGlzdEZvcihuc0lDb250ZW50KiBh
Q29udGVudCwgbnNJU3VwcG9ydHNBcnJheSogYUxpc3QpPTA7CgoKCgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEhhc0NvbnRlbnRMaXN0Rm9yKG5zSUNvbnRlbnQqIGFDb250ZW50LCBQUkJvb2wqIGFSZXN1
bHQpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBbm9ueW1vdXNOb2Rlc0Zvcihuc0lD
b250ZW50KiBhQ29udGVudCwgbnNJRE9NTm9kZUxpc3QqKiBhUmVzdWx0KSA9IDA7CgoKCgogIHZp
cnR1YWwgbnNyZXN1bHQgU2V0QW5vbnltb3VzTm9kZXNGb3IobnNJQ29udGVudCogYUNvbnRlbnQs
IG5zSVN1cHBvcnRzQXJyYXkqIGFMaXN0KSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0WEJMQ2hpbGROb2Rlc0Zvcihuc0lDb250ZW50KiBhQ29udGVudCwgbnNJRE9NTm9kZUxpc3Qq
KiBhUmVzdWx0KSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SW5zZXJ0aW9uUG9p
bnQobnNJQ29udGVudCogYVBhcmVudCwgbnNJQ29udGVudCogYUNoaWxkLCBuc0lDb250ZW50Kiog
YVJlc3VsdCwgUFJVaW50MzIqIGFJbmRleCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0U2luZ2xlSW5zZXJ0aW9uUG9pbnQobnNJQ29udGVudCogYVBhcmVudCwgbnNJQ29udGVudCoq
IGFSZXN1bHQsIFBSVWludDMyKiBhSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQUkJvb2wqIGFNdWx0aXBsZUluc2VydGlvblBvaW50cykgPSAwOwoKICB2aXJ0dWFs
IG5zcmVzdWx0IEFkZExheWVyZWRCaW5kaW5nKG5zSUNvbnRlbnQqIGFDb250ZW50LCBjb25zdCBu
c0FTdHJpbmcmIGFVUkwpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFJlbW92ZUxheWVyZWRCaW5k
aW5nKG5zSUNvbnRlbnQqIGFDb250ZW50LCBjb25zdCBuc0FTdHJpbmcmIGFVUkwpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IExvYWRCaW5kaW5nRG9jdW1lbnQobnNJRG9jdW1lbnQqIGFEb2N1bWVu
dCwgY29uc3QgbnNBU3RyaW5nJiBhVVJMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuc0lEb2N1bWVudCoqIGFSZXN1bHQpID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBBZGRUb0F0
dGFjaGVkUXVldWUobnNJWEJMQmluZGluZyogYUJpbmRpbmcpPTA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBBZGRIYW5kbGVyVG9BdHRhY2hlZFF1ZXVlKG5zSVhCTEJpbmRpbmdBdHRhY2hlZEhhbmRsZXIq
IGFIYW5kbGVyKT0wOwogIHZpcnR1YWwgbnNyZXN1bHQgQ2xlYXJBdHRhY2hlZFF1ZXVlKCk9MDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFByb2Nlc3NBdHRhY2hlZFF1ZXVlKCk9MDsKCiAgdmlydHVhbCBu
c3Jlc3VsdCBFeGVjdXRlRGV0YWNoZWRIYW5kbGVycygpPTA7CgogIHZpcnR1YWwgbnNyZXN1bHQg
UHV0WEJMRG9jdW1lbnRJbmZvKG5zSVhCTERvY3VtZW50SW5mbyogYURvY3VtZW50SW5mbyk9MDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFJlbW92ZVhCTERvY3VtZW50SW5mbyhuc0lYQkxEb2N1bWVudElu
Zm8qIGFEb2N1bWVudEluZm8pPTA7CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRYQkxEb2N1bWVudElu
Zm8oY29uc3QgbnNDU3RyaW5nJiBhVVJMLCBuc0lYQkxEb2N1bWVudEluZm8qKiBhUmVzdWx0KT0w
OwoKICB2aXJ0dWFsIG5zcmVzdWx0IFB1dExvYWRpbmdEb2NMaXN0ZW5lcihjb25zdCBuc0NTdHJp
bmcmIGFVUkwsIG5zSVN0cmVhbUxpc3RlbmVyKiBhTGlzdGVuZXIpID0gMDsKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldExvYWRpbmdEb2NMaXN0ZW5lcihjb25zdCBuc0NTdHJpbmcmIGFVUkwsIG5zSVN0
cmVhbUxpc3RlbmVyKiogYVJlc3VsdCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgUmVtb3ZlTG9h
ZGluZ0RvY0xpc3RlbmVyKGNvbnN0IG5zQ1N0cmluZyYgYVVSTCk9MDsKCiAgdmlydHVhbCBuc3Jl
c3VsdCBJbmhlcml0c1N0eWxlKG5zSUNvbnRlbnQqIGFDb250ZW50LCBQUkJvb2wqIGFSZXN1bHQp
ID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IEZsdXNoU2tpbkJpbmRpbmdzKCkgPSAwOwoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldEJpbmRpbmdJbXBsZW1lbnRhdGlvbihuc0lDb250ZW50KiBhQ29udGVu
dCwgY29uc3QgbnNJSUQmIGFJSUQsIHZvaWQqKiBhUmVzdWx0KT0wOwoKICB2aXJ0dWFsIG5zcmVz
dWx0IFNob3VsZEJ1aWxkQ2hpbGRGcmFtZXMobnNJQ29udGVudCogYUNvbnRlbnQsIFBSQm9vbCog
YVJlc3VsdCkgPSAwOwp9OwojIDE1OCAibnNET01DbGFzc0luZm8uY3BwIiAyCgoKIyAxICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVZpZXdDU1MuaCIgMQojIDEwICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvZG9tL25zSURPTVZpZXdDU1MuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvZG9tL25zSURPTUFic3RyYWN0Vmlldy5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9kb20vbnNJRE9NQWJzdHJhY3RWaWV3LmgiCmNsYXNzIG5zSURPTUFic3RyYWN0VmlldyA6IHB1
YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlE
KCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhmNTFlYmFkZSwgMHg4YjFhLCAweDExZDMs
IHsgMHhhYSwgMHhlNywgMHgwMCwgMHgxMCwgMHg4MywgMHgwMSwgMHgyMywgMHhiNCB9fTsgcmV0
dXJuIGlpZDt9CiMgNDAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NQWJzdHJhY3RW
aWV3LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREb2N1bWVudChuc0lET01Eb2N1bWVudFZpZXcg
KiAqYURvY3VtZW50KSA9IDA7Cgp9OwojIDExICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25z
SURPTVZpZXdDU1MuaCIgMgojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVZp
ZXdDU1MuaCIKY2xhc3MgbnNJRE9NVmlld0NTUyA6IHB1YmxpYyBuc0lET01BYnN0cmFjdFZpZXcg
ewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3Qg
bnNJSUQgaWlkID0gezB4MGI5MzQxZjMsIDB4OTVkNCwgMHg0ZmE0LCB7IDB4YWQsIDB4Y2QsIDB4
ZTEsIDB4MTksIDB4ZTAsIDB4ZGIsIDB4MjgsIDB4ODkgfX07IHJldHVybiBpaWQ7fQoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRDb21wdXRlZFN0eWxlKG5zSURPTUVsZW1lbnQgKmVsdCwgY29uc3Qg
bnNBU3RyaW5nICYgcHNldWRvRWx0LCBuc0lET01DU1NTdHlsZURlY2xhcmF0aW9uICoqX3JldHZh
bCkgPSAwOwoKfTsKIyAxNjEgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgoKCiMgMSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2RvbS9uc0lTY3JpcHRHbG9iYWxPYmplY3QuaCIgMQojIDQ1ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvZG9tL25zSVNjcmlwdEdsb2JhbE9iamVjdC5oIgpjbGFzcyBuc0lTY3Jp
cHRDb250ZXh0OwpjbGFzcyBuc0lET01Eb2N1bWVudDsKY2xhc3MgbnNJRE9NRXZlbnQ7CmNsYXNz
IG5zSVByZXNDb250ZXh0OwpjbGFzcyBuc0lEb2NTaGVsbDsKY2xhc3MgbnNJRE9NV2luZG93SW50
ZXJuYWw7CmNsYXNzIG5zSVNjcmlwdEdsb2JhbE9iamVjdE93bmVyOwpzdHJ1Y3QgSlNPYmplY3Q7
CiMgNjMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJU2NyaXB0R2xvYmFsT2JqZWN0Lmgi
CmNsYXNzIG5zSVNjcmlwdEdsb2JhbE9iamVjdCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CnB1Ymxp
YzoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlk
ID0geyAweDJiMTZmYzgwLCAweGZhNDEsIDB4MTFkMSwgeyAweDliLCAweGMzLCAweDAwLCAweDYw
LCAweDA4LCAweDhjLCAweGE2LCAweGIzfSB9OyByZXR1cm4gaWlkO30KCiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXRDb250ZXh0KG5zSVNjcmlwdENvbnRleHQgKmFDb250ZXh0KSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRDb250ZXh0KG5zSVNjcmlwdENvbnRleHQgKiphQ29udGV4dCkgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0TmV3RG9jdW1lbnQobnNJRE9NRG9jdW1lbnQgKmFEb2N1bWVu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCBhUmVtb3ZlRXZlbnRM
aXN0ZW5lcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkJvb2wgYUNsZWFy
U2NvcGUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldERvY1NoZWxsKG5zSURvY1NoZWxsICph
RG9jU2hlbGwpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERvY1NoZWxsKG5zSURvY1NoZWxs
ICoqYURvY1NoZWxsKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRPcGVuZXJXaW5kb3cobnNJ
RE9NV2luZG93SW50ZXJuYWwgKmFPcGVuZXIpPTA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQg
U2V0R2xvYmFsT2JqZWN0T3duZXIobnNJU2NyaXB0R2xvYmFsT2JqZWN0T3duZXIqIGFPd25lcikg
PSAwOwoKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEdsb2JhbE9iamVjdE93bmVyKG5zSVNj
cmlwdEdsb2JhbE9iamVjdE93bmVyKiogYU93bmVyKSA9IDA7CgogIHZpcnR1YWwgbnNyZXN1bHQg
SGFuZGxlRE9NRXZlbnQobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5zRXZlbnQqIGFFdmVudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5zSURPTUV2ZW50KiogYURPTUV2ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
UFJVaW50MzIgYUZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNFdmVudFN0YXR1
cyogYUV2ZW50U3RhdHVzKT0wOwoKICB2aXJ0dWFsIEpTT2JqZWN0ICogR2V0R2xvYmFsSlNPYmpl
Y3QoKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IE9uRmluYWxpemUoSlNPYmplY3QgKmFK
U09iamVjdCkgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNjcmlwdHNFbmFibGVkKFBS
Qm9vbCBhRW5hYmxlZCwgUFJCb29sIGFGaXJlVGltZW91dHMpID0gMDsKfTsKIyAxNjQgIm5zRE9N
Q2xhc3NJbmZvLmNwcCIgMgoKCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9N
TmF2aWdhdG9yLmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OYXZp
Z2F0b3IuaCIKY2xhc3MgbnNJRE9NTmF2aWdhdG9yIDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1
YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlE
IGlpZCA9IHsweGE2Y2Y5MDZlLCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAw
eDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0QXBwQ29kZU5hbWUobnNBU3RyaW5nICYgYUFwcENvZGVOYW1lKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFwcE5hbWUobnNBU3RyaW5nICYgYUFwcE5hbWUpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QXBwVmVyc2lvbihuc0FTdHJpbmcgJiBhQXBwVmVyc2lv
bikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMYW5ndWFnZShuc0FTdHJpbmcgJiBhTGFu
Z3VhZ2UpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TWltZVR5cGVzKG5zSURPTU1pbWVU
eXBlQXJyYXkgKiAqYU1pbWVUeXBlcykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQbGF0
Zm9ybShuc0FTdHJpbmcgJiBhUGxhdGZvcm0pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
T3NjcHUobnNBU3RyaW5nICYgYU9zY3B1KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFZl
bmRvcihuc0FTdHJpbmcgJiBhVmVuZG9yKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFZl
bmRvclN1Yihuc0FTdHJpbmcgJiBhVmVuZG9yU3ViKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldFByb2R1Y3QobnNBU3RyaW5nICYgYVByb2R1Y3QpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0UHJvZHVjdFN1Yihuc0FTdHJpbmcgJiBhUHJvZHVjdFN1YikgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRQbHVnaW5zKG5zSURPTVBsdWdpbkFycmF5ICogKmFQbHVnaW5zKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNlY3VyaXR5UG9saWN5KG5zQVN0cmluZyAmIGFTZWN1
cml0eVBvbGljeSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRVc2VyQWdlbnQobnNBU3Ry
aW5nICYgYVVzZXJBZ2VudCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb29raWVFbmFi
bGVkKFBSQm9vbCAqYUNvb2tpZUVuYWJsZWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSmF2
YUVuYWJsZWQoUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFRhaW50
RW5hYmxlZChQUkJvb2wgKl9yZXR2YWwpID0gMDsKCn07CiMgMjg0ICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvZG9tL25zSURPTU5hdmlnYXRvci5oIgpjbGFzcyBuc0lET01KU05hdmlnYXRvciA6IHB1
YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlE
KCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHg0YjRmODMxNiwgMHgxZGQyLCAweDExYjIs
IHsgMHhiMiwgMHg2NSwgMHg5YSwgMHg4NSwgMHg3MywgMHg3NiwgMHhkMSwgMHg1OSB9fTsgcmV0
dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFByZWZlcmVuY2Uodm9pZCkgPSAwOwoKfTsK
IyAxNjggIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9k
b20vbnNJRE9NQmFyUHJvcC5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJ
RE9NQmFyUHJvcC5oIgpjbGFzcyBuc0lET01CYXJQcm9wIDogcHVibGljIG5zSVN1cHBvcnRzIHsK
IHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5z
SUlEIGlpZCA9IHsweDllYjJjMTUwLCAweDFkNTYsIDB4MTFkMywgeyAweDgyLCAweDIxLCAweDAw
LCAweDYwLCAweDA4LCAweDNhLCAweDBiLCAweGNmIH19OyByZXR1cm4gaWlkO30KIyAzOCAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01CYXJQcm9wLmgiCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRWaXNpYmxlKFBSQm9vbCAqYVZpc2libGUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dFZpc2libGUoUFJCb29sIGFWaXNpYmxlKSA9IDA7Cgp9OwojIDE2OSAibnNET01DbGFzc0luZm8u
Y3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01TY3JlZW4uaCIgMQoj
IDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVNjcmVlbi5oIgpjbGFzcyBuc0lE
T01TY3JlZW4gOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3Qg
bnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4Nzc5NDc5NjAsIDB4
YjRhZiwgMHgxMWQyLCB7IDB4YmQsIDB4OTMsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZTMs
IDB4ZjQgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRUb3AoUFJJbnQz
MiAqYVRvcCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMZWZ0KFBSSW50MzIgKmFMZWZ0
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFdpZHRoKFBSSW50MzIgKmFXaWR0aCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRIZWlnaHQoUFJJbnQzMiAqYUhlaWdodCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQaXhlbERlcHRoKFBSSW50MzIgKmFQaXhlbERlcHRoKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbG9yRGVwdGgoUFJJbnQzMiAqYUNvbG9yRGVw
dGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QXZhaWxXaWR0aChQUkludDMyICphQXZh
aWxXaWR0aCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBdmFpbEhlaWdodChQUkludDMy
ICphQXZhaWxIZWlnaHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QXZhaWxMZWZ0KFBS
SW50MzIgKmFBdmFpbExlZnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QXZhaWxUb3Ao
UFJJbnQzMiAqYUF2YWlsVG9wKSA9IDA7Cgp9OwojIDE3MCAibnNET01DbGFzc0luZm8uY3BwIiAy
CiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01Eb2N1bWVudFR5cGUuaCIgMQoj
IDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTURvY3VtZW50VHlwZS5oIgpjbGFz
cyBuc0lET01Eb2N1bWVudFR5cGUgOiBwdWJsaWMgbnNJRE9NTm9kZSB7CiBwdWJsaWM6CgogIHN0
YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhh
NmNmOTA3NywgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1Ziwg
MHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CiMgNDIgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9kb20vbnNJRE9NRG9jdW1lbnRUeXBlLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROYW1l
KG5zQVN0cmluZyAmIGFOYW1lKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEVudGl0aWVz
KG5zSURPTU5hbWVkTm9kZU1hcCAqICphRW50aXRpZXMpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0Tm90YXRpb25zKG5zSURPTU5hbWVkTm9kZU1hcCAqICphTm90YXRpb25zKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldFB1YmxpY0lkKG5zQVN0cmluZyAmIGFQdWJsaWNJZCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTeXN0ZW1JZChuc0FTdHJpbmcgJiBhU3lzdGVtSWQp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SW50ZXJuYWxTdWJzZXQobnNBU3RyaW5nICYg
YUludGVybmFsU3Vic2V0KSA9IDA7Cgp9OwojIDE3MSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMg
MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01ET01JbXBsZW1lbnRhdGlvbi5oIiAx
CiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NRE9NSW1wbGVtZW50YXRpb24u
aCIKY2xhc3MgbnNJRE9NRE9NSW1wbGVtZW50YXRpb24gOiBwdWJsaWMgbnNJU3VwcG9ydHMgewog
cHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJ
SUQgaWlkID0gezB4YTZjZjkwNzQsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAs
IDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQojIDQxICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTURPTUltcGxlbWVudGF0aW9uLmgiCiAgdmlydHVh
bCBuc3Jlc3VsdCBIYXNGZWF0dXJlKGNvbnN0IG5zQVN0cmluZyAmIGZlYXR1cmUsIGNvbnN0IG5z
QVN0cmluZyAmIHZlcnNpb24sIFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBDcmVhdGVEb2N1bWVudFR5cGUoY29uc3QgbnNBU3RyaW5nICYgcXVhbGlmaWVkTmFtZSwg
Y29uc3QgbnNBU3RyaW5nICYgcHVibGljSWQsIGNvbnN0IG5zQVN0cmluZyAmIHN5c3RlbUlkLCBu
c0lET01Eb2N1bWVudFR5cGUgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENy
ZWF0ZURvY3VtZW50KGNvbnN0IG5zQVN0cmluZyAmIG5hbWVzcGFjZVVSSSwgY29uc3QgbnNBU3Ry
aW5nICYgcXVhbGlmaWVkTmFtZSwgbnNJRE9NRG9jdW1lbnRUeXBlICpkb2N0eXBlLCBuc0lET01E
b2N1bWVudCAqKl9yZXR2YWwpID0gMDsKCn07CiMgMTcyICJuc0RPTUNsYXNzSW5mby5jcHAiIDIK
IyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTURvY3VtZW50RnJhZ21lbnQuaCIg
MQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTURvY3VtZW50RnJhZ21lbnQu
aCIKY2xhc3MgbnNJRE9NRG9jdW1lbnRGcmFnbWVudCA6IHB1YmxpYyBuc0lET01Ob2RlIHsKIHB1
YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlE
IGlpZCA9IHsweGE2Y2Y5MDc2LCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAw
eDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KCn07CiMgMTczICJu
c0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURP
TURvY3VtZW50RXZlbnQuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURP
TURvY3VtZW50RXZlbnQuaCIKY2xhc3MgbnNJRE9NRG9jdW1lbnRFdmVudCA6IHB1YmxpYyBuc0lT
dXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRp
YyBjb25zdCBuc0lJRCBpaWQgPSB7MHg0NmI5MWQ2NiwgMHgyOGUyLCAweDExZDQsIHsgMHhhYiwg
MHgxZSwgMHgwMCwgMHgxMCwgMHg4MywgMHgwMSwgMHgyMywgMHhiNCB9fTsgcmV0dXJuIGlpZDt9
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENyZWF0ZUV2ZW50KGNvbnN0IG5zQVN0cmluZyAmIGV2ZW50
VHlwZSwgbnNJRE9NRXZlbnQgKipfcmV0dmFsKSA9IDA7Cgp9OwojIDE3NCAibnNET01DbGFzc0lu
Zm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01BdHRyLmgiIDEK
IyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01BdHRyLmgiCmNsYXNzIG5zSURP
TUF0dHIgOiBwdWJsaWMgbnNJRE9NTm9kZSB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJ
RCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTA3MCwgMHgxNWIz
LCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgz
MiB9fTsgcmV0dXJuIGlpZDt9CiMgNDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9N
QXR0ci5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TmFtZShuc0FTdHJpbmcgJiBhTmFtZSkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTcGVjaWZpZWQoUFJCb29sICphU3BlY2lmaWVkKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFZhbHVlKG5zQVN0cmluZyAmIGFWYWx1ZSkgPSAw
OwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VmFsdWUoY29uc3QgbnNBU3RyaW5nICYgYVZhbHVlKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE93bmVyRWxlbWVudChuc0lET01FbGVtZW50ICog
KmFPd25lckVsZW1lbnQpID0gMDsKCn07CiMgMTc1ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAx
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVRleHQuaCIgMQojIDEwICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVRleHQuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvZG9tL25zSURPTUNoYXJhY3RlckRhdGEuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvZG9tL25zSURPTUNoYXJhY3RlckRhdGEuaCIKY2xhc3MgbnNJRE9NQ2hhcmFjdGVyRGF0YSA6
IHB1YmxpYyBuc0lET01Ob2RlIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJ
SUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MDcyLCAweDE1YjMsIDB4MTFk
MiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyBy
ZXR1cm4gaWlkO30KIyA0MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01DaGFyYWN0
ZXJEYXRhLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREYXRhKG5zQVN0cmluZyAmIGFEYXRhKSA9
IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXREYXRhKGNvbnN0IG5zQVN0cmluZyAmIGFEYXRhKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldExlbmd0aChQUlVpbnQzMiAqYUxlbmd0aCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTdWJzdHJpbmdEYXRhKFBSVWludDMyIG9mZnNldCwgUFJV
aW50MzIgY291bnQsIG5zQVN0cmluZyAmIF9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgQXBwZW5kRGF0YShjb25zdCBuc0FTdHJpbmcgJiBhcmcpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgSW5zZXJ0RGF0YShQUlVpbnQzMiBvZmZzZXQsIGNvbnN0IG5zQVN0cmluZyAmIGFyZykg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBEZWxldGVEYXRhKFBSVWludDMyIG9mZnNldCwgUFJV
aW50MzIgY291bnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVwbGFjZURhdGEoUFJVaW50
MzIgb2Zmc2V0LCBQUlVpbnQzMiBjb3VudCwgY29uc3QgbnNBU3RyaW5nICYgYXJnKSA9IDA7Cgp9
OwojIDExICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVRleHQuaCIgMgojIDI1ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVRleHQuaCIKY2xhc3MgbnNJRE9NVGV4dCA6
IHB1YmxpYyBuc0lET01DaGFyYWN0ZXJEYXRhIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5z
SUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MDgyLCAweDE1
YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAw
eDMyIH19OyByZXR1cm4gaWlkO30KIyA0MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lE
T01UZXh0LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBTcGxpdFRleHQoUFJVaW50MzIgb2Zmc2V0LCBu
c0lET01UZXh0ICoqX3JldHZhbCkgPSAwOwoKfTsKIyAxNzYgIm5zRE9NQ2xhc3NJbmZvLmNwcCIg
MgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NQ29tbWVudC5oIiAxCiMgMjUg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NQ29tbWVudC5oIgpjbGFzcyBuc0lET01D
b21tZW50IDogcHVibGljIG5zSURPTUNoYXJhY3RlckRhdGEgewogcHVibGljOgoKICBzdGF0aWMg
Y29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkw
NzMsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEs
IDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKfTsKIyAxNzcgIm5zRE9NQ2xhc3NJbmZvLmNw
cCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NQ0RBVEFTZWN0aW9uLmgi
IDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01DREFUQVNlY3Rpb24uaCIK
Y2xhc3MgbnNJRE9NQ0RBVEFTZWN0aW9uIDogcHVibGljIG5zSURPTVRleHQgewogcHVibGljOgoK
ICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0g
ezB4YTZjZjkwNzEsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4
NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKfTsKIyAxNzggIm5zRE9NQ2xh
c3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lE
T01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIKY2xhc3MgbnNJRE9NUHJvY2Vzc2luZ0luc3RydWN0
aW9uIDogcHVibGljIG5zSURPTU5vZGUgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQm
IEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwN2YsIDB4MTViMywg
MHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIg
fX07IHJldHVybiBpaWQ7fQojIDQxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVBy
b2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VGFyZ2V0KG5zQVN0
cmluZyAmIGFUYXJnZXQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RGF0YShuc0FTdHJp
bmcgJiBhRGF0YSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RGF0YShjb25zdCBuc0FTdHJp
bmcgJiBhRGF0YSkgPSAwOwoKfTsKIyAxNzkgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NRW50aXR5LmgiIDEKIyAyNSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2RvbS9uc0lET01FbnRpdHkuaCIKY2xhc3MgbnNJRE9NRW50aXR5IDogcHVi
bGljIG5zSURPTU5vZGUgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgp
IHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwNzksIDB4MTViMywgMHgxMWQyLCB7
IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVy
biBpaWQ7fQojIDQwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUVudGl0eS5oIgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0UHVibGljSWQobnNBU3RyaW5nICYgYVB1YmxpY0lkKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFN5c3RlbUlkKG5zQVN0cmluZyAmIGFTeXN0ZW1JZCkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROb3RhdGlvbk5hbWUobnNBU3RyaW5nICYgYU5v
dGF0aW9uTmFtZSkgPSAwOwoKfTsKIyAxODAgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NRW50aXR5UmVmZXJlbmNlLmgiIDEKIyAyNSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01FbnRpdHlSZWZlcmVuY2UuaCIKY2xhc3Mg
bnNJRE9NRW50aXR5UmVmZXJlbmNlIDogcHVibGljIG5zSURPTU5vZGUgewogcHVibGljOgoKICBz
dGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4
YTZjZjkwN2EsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYs
IDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKfTsKIyAxODEgIm5zRE9NQ2xhc3NJ
bmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NTm90YXRpb24u
aCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTU5vdGF0aW9uLmgiCmNs
YXNzIG5zSURPTU5vdGF0aW9uIDogcHVibGljIG5zSURPTU5vZGUgewogcHVibGljOgoKICBzdGF0
aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZj
ZjkwN2UsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4
OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQojIDQxICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvZG9tL25zSURPTU5vdGF0aW9uLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQdWJsaWNJZChu
c0FTdHJpbmcgJiBhUHVibGljSWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U3lzdGVt
SWQobnNBU3RyaW5nICYgYVN5c3RlbUlkKSA9IDA7Cgp9OwojIDE4MiAibnNET01DbGFzc0luZm8u
Y3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01Nb3VzZUV2ZW50Lmgi
IDEKIyAzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01Nb3VzZUV2ZW50LmgiCmNs
YXNzIG5zSURPTU1vdXNlRXZlbnQgOiBwdWJsaWMgbnNJRE9NVUlFdmVudCB7CiBwdWJsaWM6Cgog
IHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7
MHhmZjc1MWVkYywgMHg4YjAyLCAweGFhZTcsIHsgMHgwMCwgMHgxMCwgMHg4MywgMHgwMSwgMHg4
MywgMHg4YSwgMHgzMSwgMHgyMyB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldFNjcmVlblgoUFJJbnQzMiAqYVNjcmVlblgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0U2NyZWVuWShQUkludDMyICphU2NyZWVuWSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRDbGllbnRYKFBSSW50MzIgKmFDbGllbnRYKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dENsaWVudFkoUFJJbnQzMiAqYUNsaWVudFkpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
Q3RybEtleShQUkJvb2wgKmFDdHJsS2V5KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNo
aWZ0S2V5KFBSQm9vbCAqYVNoaWZ0S2V5KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFs
dEtleShQUkJvb2wgKmFBbHRLZXkpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TWV0YUtl
eShQUkJvb2wgKmFNZXRhS2V5KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEJ1dHRvbihQ
UlVpbnQxNiAqYUJ1dHRvbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRSZWxhdGVkVGFy
Z2V0KG5zSURPTUV2ZW50VGFyZ2V0ICogKmFSZWxhdGVkVGFyZ2V0KSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEluaXRNb3VzZUV2ZW50KGNvbnN0IG5zQVN0cmluZyAmIHR5cGVBcmcsIFBSQm9v
bCBjYW5CdWJibGVBcmcsIFBSQm9vbCBjYW5jZWxhYmxlQXJnLCBuc0lET01BYnN0cmFjdFZpZXcg
KnZpZXdBcmcsIFBSSW50MzIgZGV0YWlsQXJnLCBQUkludDMyIHNjcmVlblhBcmcsIFBSSW50MzIg
c2NyZWVuWUFyZywgUFJJbnQzMiBjbGllbnRYQXJnLCBQUkludDMyIGNsaWVudFlBcmcsIFBSQm9v
bCBjdHJsS2V5QXJnLCBQUkJvb2wgYWx0S2V5QXJnLCBQUkJvb2wgc2hpZnRLZXlBcmcsIFBSQm9v
bCBtZXRhS2V5QXJnLCBQUlVpbnQxNiBidXR0b25BcmcsIG5zSURPTUV2ZW50VGFyZ2V0ICpyZWxh
dGVkVGFyZ2V0QXJnKSA9IDA7Cgp9OwojIDE4MyAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01NdXRhdGlvbkV2ZW50LmgiIDEKIyAyNSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01NdXRhdGlvbkV2ZW50LmgiCmNsYXNzIG5z
SURPTU11dGF0aW9uRXZlbnQgOiBwdWJsaWMgbnNJRE9NRXZlbnQgewogcHVibGljOgoKICBzdGF0
aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4OGU0
NDBkODYsIDB4ODg2YSwgMHg0ZTc2LCB7IDB4OWUsIDB4NTksIDB4YzEsIDB4M2IsIDB4OTMsIDB4
OWMsIDB4OWEsIDB4NGIgfX07IHJldHVybiBpaWQ7fQoKICBlbnVtIHsgTU9ESUZJQ0FUSU9OID0g
MVUgfTsKCiAgZW51bSB7IEFERElUSU9OID0gMlUgfTsKCiAgZW51bSB7IFJFTU9WQUwgPSAzVSB9
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRSZWxhdGVkTm9kZShuc0lET01Ob2RlICogKmFSZWxh
dGVkTm9kZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQcmV2VmFsdWUobnNBU3RyaW5n
ICYgYVByZXZWYWx1ZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROZXdWYWx1ZShuc0FT
dHJpbmcgJiBhTmV3VmFsdWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QXR0ck5hbWUo
bnNBU3RyaW5nICYgYUF0dHJOYW1lKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEF0dHJD
aGFuZ2UoUFJVaW50MTYgKmFBdHRyQ2hhbmdlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IElu
aXRNdXRhdGlvbkV2ZW50KGNvbnN0IG5zQVN0cmluZyAmIHR5cGVBcmcsIFBSQm9vbCBjYW5CdWJi
bGVBcmcsIFBSQm9vbCBjYW5jZWxhYmxlQXJnLCBuc0lET01Ob2RlICpyZWxhdGVkTm9kZUFyZywg
Y29uc3QgbnNBU3RyaW5nICYgcHJldlZhbHVlQXJnLCBjb25zdCBuc0FTdHJpbmcgJiBuZXdWYWx1
ZUFyZywgY29uc3QgbnNBU3RyaW5nICYgYXR0ck5hbWVBcmcsIFBSVWludDE2IGF0dHJDaGFuZ2VB
cmcpID0gMDsKCn07CiMgMTg0ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvZG9tL25zSURPTURvY3VtZW50U3R5bGUuaCIgMQojIDM0ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvZG9tL25zSURPTURvY3VtZW50U3R5bGUuaCIKY2xhc3MgbnNJRE9NRG9jdW1l
bnRTdHlsZSA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBu
c0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgzZDlmNDk3MywgMHhk
ZDJlLCAweDQ4ZjUsIHsgMHhiNSwgMHhmNywgMHgyNiwgMHgzNCwgMHhlMCwgMHg5ZSwgMHhhZCwg
MHhkOSB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFN0eWxlU2hlZXRz
KG5zSURPTVN0eWxlU2hlZXRMaXN0ICogKmFTdHlsZVNoZWV0cykgPSAwOwoKfTsKIyAxODUgIm5z
RE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9N
RG9jdW1lbnRSYW5nZS5oIiAxCiMgMzQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9N
RG9jdW1lbnRSYW5nZS5oIgpjbGFzcyBuc0lET01Eb2N1bWVudFJhbmdlIDogcHVibGljIG5zSVN1
cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGlj
IGNvbnN0IG5zSUlEIGlpZCA9IHsweDdiOWJhZGM2LCAweGM5YmMsIDB4NDQ3YSwgeyAweDg2LCAw
eDcwLCAweGRiLCAweGQxLCAweDk1LCAweGFlLCAweGQyLCAweDRiIH19OyByZXR1cm4gaWlkO30K
CgogIHZpcnR1YWwgbnNyZXN1bHQgQ3JlYXRlUmFuZ2UobnNJRE9NUmFuZ2UgKipfcmV0dmFsKSA9
IDA7Cgp9OwojIDE4NiAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2RvbS9uc0lET01Eb2N1bWVudFRyYXZlcnNhbC5oIiAxCiMgMTcgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9kb20vbnNJRE9NRG9jdW1lbnRUcmF2ZXJzYWwuaCIKY2xhc3MgbnNJRE9NTm9k
ZUl0ZXJhdG9yOwoKY2xhc3MgbnNJRE9NTm9kZUZpbHRlcjsKCmNsYXNzIG5zSURPTVRyZWVXYWxr
ZXI7CiMgMzEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NRG9jdW1lbnRUcmF2ZXJz
YWwuaCIKY2xhc3MgbnNJRE9NRG9jdW1lbnRUcmF2ZXJzYWwgOiBwdWJsaWMgbnNJU3VwcG9ydHMg
ewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3Qg
bnNJSUQgaWlkID0gezB4MTNmMjM2YzAsIDB4NDdmOCwgMHgxMWQ1LCB7IDB4YjYsIDB4YTMsIDB4
MDAsIDB4OTAsIDB4MjcsIDB4NDQsIDB4NmUsIDB4ODQgfX07IHJldHVybiBpaWQ7fQoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBDcmVhdGVOb2RlSXRlcmF0b3IobnNJRE9NTm9kZSAqcm9vdCwgUFJVaW50
MzIgd2hhdFRvU2hvdywgbnNJRE9NTm9kZUZpbHRlciAqZmlsdGVyLCBQUkJvb2wgZW50aXR5UmVm
ZXJlbmNlRXhwYW5zaW9uLCBuc0lET01Ob2RlSXRlcmF0b3IgKipfcmV0dmFsKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IENyZWF0ZVRyZWVXYWxrZXIobnNJRE9NTm9kZSAqcm9vdCwgUFJVaW50
MzIgd2hhdFRvU2hvdywgbnNJRE9NTm9kZUZpbHRlciAqZmlsdGVyLCBQUkJvb2wgZW50aXR5UmVm
ZXJlbmNlRXhwYW5zaW9uLCBuc0lET01UcmVlV2Fsa2VyICoqX3JldHZhbCkgPSAwOwoKfTsKIyAx
ODcgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20v
bnNJRE9NRG9jdW1lbnRYQkwuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25z
SURPTURvY3VtZW50WEJMLmgiCmNsYXNzIG5zSURPTURvY3VtZW50WEJMIDogcHVibGljIG5zSVN1
cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGlj
IGNvbnN0IG5zSUlEIGlpZCA9IHsweGM3YzBhZTliLCAweGEwYmEsIDB4NGY0ZSwgeyAweDlmLCAw
eDJjLCAweGMxLCAweDhkLCAweGViLCAweDYyLCAweGVlLCAweDhiIH19OyByZXR1cm4gaWlkO30K
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QW5vbnltb3VzTm9kZXMobnNJRE9NRWxlbWVudCAqZWx0
LCBuc0lET01Ob2RlTGlzdCAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
QW5vbnltb3VzRWxlbWVudEJ5QXR0cmlidXRlKG5zSURPTUVsZW1lbnQgKmVsdCwgY29uc3QgbnNB
U3RyaW5nICYgYXR0ck5hbWUsIGNvbnN0IG5zQVN0cmluZyAmIGF0dHJWYWx1ZSwgbnNJRE9NRWxl
bWVudCAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQWRkQmluZGluZyhuc0lE
T01FbGVtZW50ICplbHQsIGNvbnN0IG5zQVN0cmluZyAmIGJpbmRpbmdVUkwpID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgUmVtb3ZlQmluZGluZyhuc0lET01FbGVtZW50ICplbHQsIGNvbnN0IG5z
QVN0cmluZyAmIGJpbmRpbmdVUkwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QmluZGlu
Z1BhcmVudChuc0lET01Ob2RlICpub2RlLCBuc0lET01FbGVtZW50ICoqX3JldHZhbCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBMb2FkQmluZGluZ0RvY3VtZW50KGNvbnN0IG5zQVN0cmluZyAm
IGRvY3VtZW50VVJMLCBuc0lET01Eb2N1bWVudCAqKl9yZXR2YWwpID0gMDsKCn07CiMgMTg4ICJu
c0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURP
TURvY3VtZW50Vmlldy5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9N
RG9jdW1lbnRWaWV3LmgiCmNsYXNzIG5zSURPTURvY3VtZW50VmlldyA6IHB1YmxpYyBuc0lTdXBw
b3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBj
b25zdCBuc0lJRCBpaWQgPSB7MHgxYWNkYjJiYSwgMHgxZGQyLCAweDExYjIsIHsgMHg5NSwgMHhi
YywgMHg5NSwgMHg0MiwgMHg0OSwgMHg1ZCwgMHgyNSwgMHg2OSB9fTsgcmV0dXJuIGlpZDt9CiMg
NDAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NRG9jdW1lbnRWaWV3LmgiCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXREZWZhdWx0Vmlldyhuc0lET01BYnN0cmFjdFZpZXcgKiAqYURlZmF1
bHRWaWV3KSA9IDA7Cgp9OwojIDE4OSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01FbGVtZW50Q1NTSW5saW5lU3R5bGUuaCIgMQojIDI1
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZS5o
IgpjbGFzcyBuc0lET01FbGVtZW50Q1NTSW5saW5lU3R5bGUgOiBwdWJsaWMgbnNJU3VwcG9ydHMg
ewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3Qg
bnNJSUQgaWlkID0gezB4OTk3MTU4NDUsIDB4OTVmYywgMHg0YTU2LCB7IDB4YWEsIDB4NTMsIDB4
MjEsIDB4NGIsIDB4NjUsIDB4YzIsIDB4NmUsIDB4MjIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRTdHlsZShuc0lET01DU1NTdHlsZURlY2xhcmF0aW9uICogKmFTdHls
ZSkgPSAwOwoKfTsKIyAxOTAgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9kb20vbnNJRE9NTGlua1N0eWxlLmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2RvbS9uc0lET01MaW5rU3R5bGUuaCIKY2xhc3MgbnNJRE9NTGlua1N0eWxlIDogcHVi
bGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQo
KSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDI0ZDg5YTY1LCAweGY1OTgsIDB4NDgxZSwg
eyAweGEyLCAweDk3LCAweDIzLCAweGNjLCAweDAyLCAweDU5LCAweDliLCAweGJkIH19OyByZXR1
cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2hlZXQobnNJRE9NU3R5bGVTaGVldCAq
ICphU2hlZXQpID0gMDsKCn07CiMgMTkxICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxEb2N1bWVudC5oIiAxCiMgMzQgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTERvY3VtZW50LmgiCmNsYXNzIG5zSURPTUhU
TUxEb2N1bWVudCA6IHB1YmxpYyBuc0lET01Eb2N1bWVudCB7CiBwdWJsaWM6CgogIHN0YXRpYyBj
b25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTA4
NCwgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwg
MHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFRpdGxl
KG5zQVN0cmluZyAmIGFUaXRsZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VGl0bGUoY29u
c3QgbnNBU3RyaW5nICYgYVRpdGxlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJlZmVy
cmVyKG5zQVN0cmluZyAmIGFSZWZlcnJlcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRE
b21haW4obnNBU3RyaW5nICYgYURvbWFpbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRV
UkwobnNBU3RyaW5nICYgYVVSTCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRCb2R5KG5z
SURPTUhUTUxFbGVtZW50ICogKmFCb2R5KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRCb2R5
KG5zSURPTUhUTUxFbGVtZW50ICogYUJvZHkpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
SW1hZ2VzKG5zSURPTUhUTUxDb2xsZWN0aW9uICogKmFJbWFnZXMpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0QXBwbGV0cyhuc0lET01IVE1MQ29sbGVjdGlvbiAqICphQXBwbGV0cykgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMaW5rcyhuc0lET01IVE1MQ29sbGVjdGlvbiAqICph
TGlua3MpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Rm9ybXMobnNJRE9NSFRNTENvbGxl
Y3Rpb24gKiAqYUZvcm1zKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFuY2hvcnMobnNJ
RE9NSFRNTENvbGxlY3Rpb24gKiAqYUFuY2hvcnMpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0Q29va2llKG5zQVN0cmluZyAmIGFDb29raWUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dENvb2tpZShjb25zdCBuc0FTdHJpbmcgJiBhQ29va2llKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IE9wZW4odm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDbG9zZSh2b2lkKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFdyaXRlKGNvbnN0IG5zQVN0cmluZyAmIHRleHQpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgV3JpdGVsbihjb25zdCBuc0FTdHJpbmcgJiB0ZXh0KSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEVsZW1lbnRzQnlOYW1lKGNvbnN0IG5zQVN0cmluZyAm
IGVsZW1lbnROYW1lLCBuc0lET01Ob2RlTGlzdCAqKl9yZXR2YWwpID0gMDsKCn07CiMgMTkyICJu
c0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURP
TU5TSFRNTERvY3VtZW50LmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lE
T01OU0hUTUxEb2N1bWVudC5oIgpjbGFzcyBuc0lET01OU0hUTUxEb2N1bWVudCA6IHB1YmxpYyBu
c0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0
YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTBjNSwgMHgxNWIzLCAweDExZDIsIHsgMHg5
MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlp
ZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFdpZHRoKFBSSW50MzIgKmFXaWR0aCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRIZWlnaHQoUFJJbnQzMiAqYUhlaWdodCkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRBbGlua0NvbG9yKG5zQVN0cmluZyAmIGFBbGlua0NvbG9yKSA9
IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRBbGlua0NvbG9yKGNvbnN0IG5zQVN0cmluZyAmIGFB
bGlua0NvbG9yKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldExpbmtDb2xvcihuc0FTdHJp
bmcgJiBhTGlua0NvbG9yKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRMaW5rQ29sb3IoY29u
c3QgbnNBU3RyaW5nICYgYUxpbmtDb2xvcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRW
bGlua0NvbG9yKG5zQVN0cmluZyAmIGFWbGlua0NvbG9yKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRWbGlua0NvbG9yKGNvbnN0IG5zQVN0cmluZyAmIGFWbGlua0NvbG9yKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldEJnQ29sb3IobnNBU3RyaW5nICYgYUJnQ29sb3IpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldEJnQ29sb3IoY29uc3QgbnNBU3RyaW5nICYgYUJnQ29sb3IpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RmdDb2xvcihuc0FTdHJpbmcgJiBhRmdDb2xvcikg
PSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RmdDb2xvcihjb25zdCBuc0FTdHJpbmcgJiBhRmdD
b2xvcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMYXN0TW9kaWZpZWQobnNBU3RyaW5n
ICYgYUxhc3RNb2RpZmllZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREb21haW4obnNB
U3RyaW5nICYgYURvbWFpbikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RG9tYWluKGNvbnN0
IG5zQVN0cmluZyAmIGFEb21haW4pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RW1iZWRz
KG5zSURPTUhUTUxDb2xsZWN0aW9uICogKmFFbWJlZHMpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0U2VsZWN0aW9uKG5zQVN0cmluZyAmIF9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgT3Blbihuc0lET01Eb2N1bWVudCAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgV3JpdGUodm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBXcml0ZWxuKHZvaWQp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ2xlYXIodm9pZCkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBDYXB0dXJlRXZlbnRzKFBSSW50MzIgZXZlbnRGbGFncykgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBSZWxlYXNlRXZlbnRzKFBSSW50MzIgZXZlbnRGbGFncykgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBSb3V0ZUV2ZW50KG5zSURPTUV2ZW50ICpldnQpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0Q29tcGF0TW9kZShuc0FTdHJpbmcgJiBhQ29tcGF0TW9kZSkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQbHVnaW5zKG5zSURPTUhUTUxDb2xsZWN0aW9uICogKmFQ
bHVnaW5zKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERlc2lnbk1vZGUobnNBU3Ry
aW5nICYgYURlc2lnbk1vZGUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldERlc2lnbk1vZGUo
Y29uc3QgbnNBU3RyaW5nICYgYURlc2lnbk1vZGUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
RXhlY0NvbW1hbmQoY29uc3QgbnNBU3RyaW5nICYgY29tbWFuZElELCBQUkJvb2wgZG9TaG93VUks
IGNvbnN0IG5zQVN0cmluZyAmIHZhbHVlLCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgRXhlY0NvbW1hbmRTaG93SGVscChjb25zdCBuc0FTdHJpbmcgJiBjb21tYW5k
SUQsIFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBRdWVyeUNvbW1h
bmRFbmFibGVkKGNvbnN0IG5zQVN0cmluZyAmIGNvbW1hbmRJRCwgUFJCb29sICpfcmV0dmFsKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFF1ZXJ5Q29tbWFuZEluZGV0ZXJtKGNvbnN0IG5zQVN0
cmluZyAmIGNvbW1hbmRJRCwgUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IFF1ZXJ5Q29tbWFuZFN0YXRlKGNvbnN0IG5zQVN0cmluZyAmIGNvbW1hbmRJRCwgUFJCb29s
ICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFF1ZXJ5Q29tbWFuZFN1cHBvcnRl
ZChjb25zdCBuc0FTdHJpbmcgJiBjb21tYW5kSUQsIFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBRdWVyeUNvbW1hbmRUZXh0KGNvbnN0IG5zQVN0cmluZyAmIGNvbW1h
bmRJRCwgbnNBU3RyaW5nICYgX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBRdWVy
eUNvbW1hbmRWYWx1ZShjb25zdCBuc0FTdHJpbmcgJiBjb21tYW5kSUQsIG5zQVN0cmluZyAmIF9y
ZXR2YWwpID0gMDsKCn07CiMgMTkzICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvZG9tL25zSURPTU5TSFRNTEVsZW1lbnQuaCIgMQojIDI1ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvZG9tL25zSURPTU5TSFRNTEVsZW1lbnQuaCIKY2xhc3MgbnNJRE9NTlNI
VE1MRWxlbWVudCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25z
dCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhkYTgzYjJlYywg
MHg4MjY0LCAweDQ0MTAsIHsgMHg4NCwgMHg5NiwgMHhhZCwgMHhhMywgMHhhYywgMHhkMiwgMHhh
ZSwgMHg0MiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE9mZnNldFRv
cChQUkludDMyICphT2Zmc2V0VG9wKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE9mZnNl
dExlZnQoUFJJbnQzMiAqYU9mZnNldExlZnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
T2Zmc2V0V2lkdGgoUFJJbnQzMiAqYU9mZnNldFdpZHRoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldE9mZnNldEhlaWdodChQUkludDMyICphT2Zmc2V0SGVpZ2h0KSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldE9mZnNldFBhcmVudChuc0lET01FbGVtZW50ICogKmFPZmZzZXRQYXJl
bnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SW5uZXJIVE1MKG5zQVN0cmluZyAmIGFJ
bm5lckhUTUwpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldElubmVySFRNTChjb25zdCBuc0FT
dHJpbmcgJiBhSW5uZXJIVE1MKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNjcm9sbFRv
cChQUkludDMyICphU2Nyb2xsVG9wKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRTY3JvbGxU
b3AoUFJJbnQzMiBhU2Nyb2xsVG9wKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNjcm9s
bExlZnQoUFJJbnQzMiAqYVNjcm9sbExlZnQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNj
cm9sbExlZnQoUFJJbnQzMiBhU2Nyb2xsTGVmdCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRTY3JvbGxIZWlnaHQoUFJJbnQzMiAqYVNjcm9sbEhlaWdodCkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRTY3JvbGxXaWR0aChQUkludDMyICphU2Nyb2xsV2lkdGgpID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0Q2xpZW50SGVpZ2h0KFBSSW50MzIgKmFDbGllbnRIZWlnaHQpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q2xpZW50V2lkdGgoUFJJbnQzMiAqYUNsaWVudFdp
ZHRoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNjcm9sbEludG9WaWV3KFBSQm9vbCB0b3Ap
ID0gMDsKCn07CiMgMTk0ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvZG9tL25zSURPTUhUTUxBbmNob3JFbGVtZW50LmgiIDEKIyAzNCAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MQW5jaG9yRWxlbWVudC5oIgpjbGFzcyBuc0lET01I
VE1MQW5jaG9yRWxlbWVudCA6IHB1YmxpYyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6Cgog
IHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7
MHhhNmNmOTBhYSwgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1
ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldEFjY2Vzc0tleShuc0FTdHJpbmcgJiBhQWNjZXNzS2V5KSA9IDA7CiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXRBY2Nlc3NLZXkoY29uc3QgbnNBU3RyaW5nICYgYUFjY2Vzc0tleSkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRDaGFyc2V0KG5zQVN0cmluZyAmIGFDaGFyc2V0KSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXRDaGFyc2V0KGNvbnN0IG5zQVN0cmluZyAmIGFDaGFyc2V0KSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvb3Jkcyhuc0FTdHJpbmcgJiBhQ29vcmRzKSA9
IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDb29yZHMoY29uc3QgbnNBU3RyaW5nICYgYUNvb3Jk
cykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRIcmVmKG5zQVN0cmluZyAmIGFIcmVmKSA9
IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRIcmVmKGNvbnN0IG5zQVN0cmluZyAmIGFIcmVmKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEhyZWZsYW5nKG5zQVN0cmluZyAmIGFIcmVmbGFu
ZykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0SHJlZmxhbmcoY29uc3QgbnNBU3RyaW5nICYg
YUhyZWZsYW5nKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5hbWUobnNBU3RyaW5nICYg
YU5hbWUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE5hbWUoY29uc3QgbnNBU3RyaW5nICYg
YU5hbWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UmVsKG5zQVN0cmluZyAmIGFSZWwp
ID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFJlbChjb25zdCBuc0FTdHJpbmcgJiBhUmVsKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJldihuc0FTdHJpbmcgJiBhUmV2KSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXRSZXYoY29uc3QgbnNBU3RyaW5nICYgYVJldikgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRTaGFwZShuc0FTdHJpbmcgJiBhU2hhcGUpID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldFNoYXBlKGNvbnN0IG5zQVN0cmluZyAmIGFTaGFwZSkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRUYWJJbmRleChQUkludDMyICphVGFiSW5kZXgpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldFRhYkluZGV4KFBSSW50MzIgYVRhYkluZGV4KSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldFRhcmdldChuc0FTdHJpbmcgJiBhVGFyZ2V0KSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXRUYXJnZXQoY29uc3QgbnNBU3RyaW5nICYgYVRhcmdldCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRUeXBlKG5zQVN0cmluZyAmIGFUeXBlKSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXRUeXBlKGNvbnN0IG5zQVN0cmluZyAmIGFUeXBlKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEJsdXIodm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBGb2N1
cyh2b2lkKSA9IDA7Cgp9OwojIDE5NSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU0hUTUxBbmNob3JFbGVtZW50LmgiIDEKIyAyNSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU0hUTUxBbmNob3JFbGVtZW50LmgiCmNs
YXNzIG5zSURPTU5TSFRNTEFuY2hvckVsZW1lbnQgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVi
bGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQg
aWlkID0gezB4YTZjZjkxMWMsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4
ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRQcm90b2NvbChuc0FTdHJpbmcgJiBhUHJvdG9jb2wpID0gMDsKICB2aXJ0dWFs
IG5zcmVzdWx0IFNldFByb3RvY29sKGNvbnN0IG5zQVN0cmluZyAmIGFQcm90b2NvbCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRIb3N0KG5zQVN0cmluZyAmIGFIb3N0KSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXRIb3N0KGNvbnN0IG5zQVN0cmluZyAmIGFIb3N0KSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldEhvc3RuYW1lKG5zQVN0cmluZyAmIGFIb3N0bmFtZSkgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0SG9zdG5hbWUoY29uc3QgbnNBU3RyaW5nICYgYUhvc3RuYW1l
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBhdGhuYW1lKG5zQVN0cmluZyAmIGFQYXRo
bmFtZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UGF0aG5hbWUoY29uc3QgbnNBU3RyaW5n
ICYgYVBhdGhuYW1lKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNlYXJjaChuc0FTdHJp
bmcgJiBhU2VhcmNoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRTZWFyY2goY29uc3QgbnNB
U3RyaW5nICYgYVNlYXJjaCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQb3J0KG5zQVN0
cmluZyAmIGFQb3J0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRQb3J0KGNvbnN0IG5zQVN0
cmluZyAmIGFQb3J0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEhhc2gobnNBU3RyaW5n
ICYgYUhhc2gpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEhhc2goY29uc3QgbnNBU3RyaW5n
ICYgYUhhc2gpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VGV4dChuc0FTdHJpbmcgJiBh
VGV4dCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBUb1N0cmluZyhuc0FTdHJpbmcgJiBfcmV0
dmFsKSA9IDA7Cgp9OwojIDE5NiAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MQXBwbGV0RWxlbWVudC5oIiAxCiMgMzQgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTEFwcGxldEVsZW1lbnQuaCIKY2xhc3MgbnNJ
RE9NSFRNTEFwcGxldEVsZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGlj
OgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlk
ID0gezB4YTZjZjkwYWUsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAs
IDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRBbGlnbihuc0FTdHJpbmcgJiBhQWxpZ24pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0
IFNldEFsaWduKGNvbnN0IG5zQVN0cmluZyAmIGFBbGlnbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRBbHQobnNBU3RyaW5nICYgYUFsdCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0
QWx0KGNvbnN0IG5zQVN0cmluZyAmIGFBbHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
QXJjaGl2ZShuc0FTdHJpbmcgJiBhQXJjaGl2ZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0
QXJjaGl2ZShjb25zdCBuc0FTdHJpbmcgJiBhQXJjaGl2ZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRDb2RlKG5zQVN0cmluZyAmIGFDb2RlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBT
ZXRDb2RlKGNvbnN0IG5zQVN0cmluZyAmIGFDb2RlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldENvZGVCYXNlKG5zQVN0cmluZyAmIGFDb2RlQmFzZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0Q29kZUJhc2UoY29uc3QgbnNBU3RyaW5nICYgYUNvZGVCYXNlKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldEhlaWdodChuc0FTdHJpbmcgJiBhSGVpZ2h0KSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRIZWlnaHQoY29uc3QgbnNBU3RyaW5nICYgYUhlaWdodCkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRIc3BhY2UoUFJJbnQzMiAqYUhzcGFjZSkgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0SHNwYWNlKFBSSW50MzIgYUhzcGFjZSkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXROYW1lKG5zQVN0cmluZyAmIGFOYW1lKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXROYW1lKGNvbnN0IG5zQVN0cmluZyAmIGFOYW1lKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldE9iamVjdChuc0FTdHJpbmcgJiBhT2JqZWN0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRPYmplY3QoY29uc3QgbnNBU3RyaW5nICYgYU9iamVjdCkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRWc3BhY2UoUFJJbnQzMiAqYVZzcGFjZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0VnNwYWNlKFBSSW50MzIgYVZzcGFjZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRXaWR0aChuc0FTdHJpbmcgJiBhV2lkdGgpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFdp
ZHRoKGNvbnN0IG5zQVN0cmluZyAmIGFXaWR0aCkgPSAwOwoKfTsKIyAxOTcgIm5zRE9NQ2xhc3NJ
bmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTEFyZWFF
bGVtZW50LmgiIDEKIyAzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MQXJl
YUVsZW1lbnQuaCIKY2xhc3MgbnNJRE9NSFRNTEFyZWFFbGVtZW50IDogcHVibGljIG5zSURPTUhU
TUxFbGVtZW50IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3Rh
dGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MGIwLCAweDE1YjMsIDB4MTFkMiwgeyAweDkz
LCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlk
O30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QWNjZXNzS2V5KG5zQVN0cmluZyAmIGFBY2Nlc3NL
ZXkpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFjY2Vzc0tleShjb25zdCBuc0FTdHJpbmcg
JiBhQWNjZXNzS2V5KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFsdChuc0FTdHJpbmcg
JiBhQWx0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRBbHQoY29uc3QgbnNBU3RyaW5nICYg
YUFsdCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb29yZHMobnNBU3RyaW5nICYgYUNv
b3JkcykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q29vcmRzKGNvbnN0IG5zQVN0cmluZyAm
IGFDb29yZHMpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SHJlZihuc0FTdHJpbmcgJiBh
SHJlZikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0SHJlZihjb25zdCBuc0FTdHJpbmcgJiBh
SHJlZikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROb0hyZWYoUFJCb29sICphTm9IcmVm
KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXROb0hyZWYoUFJCb29sIGFOb0hyZWYpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2hhcGUobnNBU3RyaW5nICYgYVNoYXBlKSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXRTaGFwZShjb25zdCBuc0FTdHJpbmcgJiBhU2hhcGUpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VGFiSW5kZXgoUFJJbnQzMiAqYVRhYkluZGV4KSA9IDA7
CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRUYWJJbmRleChQUkludDMyIGFUYWJJbmRleCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRUYXJnZXQobnNBU3RyaW5nICYgYVRhcmdldCkgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0VGFyZ2V0KGNvbnN0IG5zQVN0cmluZyAmIGFUYXJnZXQpID0g
MDsKCn07CiMgMTk4ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvZG9tL25zSURPTU5TSFRNTEFyZWFFbGVtZW50LmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2RvbS9uc0lET01OU0hUTUxBcmVhRWxlbWVudC5oIgpjbGFzcyBuc0lET01OU0hU
TUxBcmVhRWxlbWVudCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBj
b25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTEx
YiwgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwg
MHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByb3Rv
Y29sKG5zQVN0cmluZyAmIGFQcm90b2NvbCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UHJv
dG9jb2woY29uc3QgbnNBU3RyaW5nICYgYVByb3RvY29sKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldEhvc3QobnNBU3RyaW5nICYgYUhvc3QpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dEhvc3QoY29uc3QgbnNBU3RyaW5nICYgYUhvc3QpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0SG9zdG5hbWUobnNBU3RyaW5nICYgYUhvc3RuYW1lKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRIb3N0bmFtZShjb25zdCBuc0FTdHJpbmcgJiBhSG9zdG5hbWUpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0UGF0aG5hbWUobnNBU3RyaW5nICYgYVBhdGhuYW1lKSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXRQYXRobmFtZShjb25zdCBuc0FTdHJpbmcgJiBhUGF0aG5hbWUpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2VhcmNoKG5zQVN0cmluZyAmIGFTZWFyY2gpID0g
MDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNlYXJjaChjb25zdCBuc0FTdHJpbmcgJiBhU2VhcmNo
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBvcnQobnNBU3RyaW5nICYgYVBvcnQpID0g
MDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFBvcnQoY29uc3QgbnNBU3RyaW5nICYgYVBvcnQpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SGFzaChuc0FTdHJpbmcgJiBhSGFzaCkgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0SGFzaChjb25zdCBuc0FTdHJpbmcgJiBhSGFzaCkgPSAwOwoK
fTsKIyAxOTkgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9kb20vbnNJRE9NSFRNTEJSRWxlbWVudC5oIiAxCiMgMzQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9kb20vbnNJRE9NSFRNTEJSRWxlbWVudC5oIgpjbGFzcyBuc0lET01IVE1MQlJFbGVtZW50IDog
cHVibGljIG5zSURPTUhUTUxFbGVtZW50IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlE
JiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MGE1LCAweDE1YjMs
IDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMy
IH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q2xlYXIobnNBU3RyaW5n
ICYgYUNsZWFyKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDbGVhcihjb25zdCBuc0FTdHJp
bmcgJiBhQ2xlYXIpID0gMDsKCn07CiMgMjAwICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxCYXNlRWxlbWVudC5oIiAxCiMgMzQg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTEJhc2VFbGVtZW50LmgiCmNsYXNz
IG5zSURPTUhUTUxCYXNlRWxlbWVudCA6IHB1YmxpYyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJs
aWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBp
aWQgPSB7MHhhNmNmOTA4YiwgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4
MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldEhyZWYobnNBU3RyaW5nICYgYUhyZWYpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0
IFNldEhyZWYoY29uc3QgbnNBU3RyaW5nICYgYUhyZWYpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0VGFyZ2V0KG5zQVN0cmluZyAmIGFUYXJnZXQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0
IFNldFRhcmdldChjb25zdCBuc0FTdHJpbmcgJiBhVGFyZ2V0KSA9IDA7Cgp9OwojIDIwMSAibnNE
T01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01I
VE1MQmFzZUZvbnRFbGVtZW50LmgiIDEKIyAzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9u
c0lET01IVE1MQmFzZUZvbnRFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxCYXNlRm9udEVsZW1l
bnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMgY29uc3Qg
bnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwYTYsIDB4
MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQs
IDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb2xvcihuc0FT
dHJpbmcgJiBhQ29sb3IpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENvbG9yKGNvbnN0IG5z
QVN0cmluZyAmIGFDb2xvcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGYWNlKG5zQVN0
cmluZyAmIGFGYWNlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRGYWNlKGNvbnN0IG5zQVN0
cmluZyAmIGFGYWNlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNpemUoUFJJbnQzMiAq
YVNpemUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNpemUoUFJJbnQzMiBhU2l6ZSkgPSAw
OwoKfTsKIyAyMDIgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9kb20vbnNJRE9NSFRNTEJvZHlFbGVtZW50LmgiIDEKIyAzNCAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2RvbS9uc0lET01IVE1MQm9keUVsZW1lbnQuaCIKY2xhc3MgbnNJRE9NSFRNTEJvZHlF
bGVtZW50IDogcHVibGljIG5zSURPTUhUTUxFbGVtZW50IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNv
bnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MDhl
LCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAw
eGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QUxpbmso
bnNBU3RyaW5nICYgYUFMaW5rKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRBTGluayhjb25z
dCBuc0FTdHJpbmcgJiBhQUxpbmspID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QmFja2dy
b3VuZChuc0FTdHJpbmcgJiBhQmFja2dyb3VuZCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0
QmFja2dyb3VuZChjb25zdCBuc0FTdHJpbmcgJiBhQmFja2dyb3VuZCkgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRCZ0NvbG9yKG5zQVN0cmluZyAmIGFCZ0NvbG9yKSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRCZ0NvbG9yKGNvbnN0IG5zQVN0cmluZyAmIGFCZ0NvbG9yKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldExpbmsobnNBU3RyaW5nICYgYUxpbmspID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldExpbmsoY29uc3QgbnNBU3RyaW5nICYgYUxpbmspID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0VGV4dChuc0FTdHJpbmcgJiBhVGV4dCkgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0VGV4dChjb25zdCBuc0FTdHJpbmcgJiBhVGV4dCkgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRWTGluayhuc0FTdHJpbmcgJiBhVkxpbmspID0gMDsKICB2aXJ0dWFsIG5z
cmVzdWx0IFNldFZMaW5rKGNvbnN0IG5zQVN0cmluZyAmIGFWTGluaykgPSAwOwoKfTsKIyAyMDMg
Im5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJ
RE9NSFRNTEJ1dHRvbkVsZW1lbnQuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9t
L25zSURPTUhUTUxCdXR0b25FbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxCdXR0b25FbGVtZW50
IDogcHVibGljIG5zSURPTUhUTUxFbGVtZW50IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5z
SUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MDk1LCAweDE1
YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAw
eDMyIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Rm9ybShuc0lET01I
VE1MRm9ybUVsZW1lbnQgKiAqYUZvcm0pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QWNj
ZXNzS2V5KG5zQVN0cmluZyAmIGFBY2Nlc3NLZXkpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dEFjY2Vzc0tleShjb25zdCBuc0FTdHJpbmcgJiBhQWNjZXNzS2V5KSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldERpc2FibGVkKFBSQm9vbCAqYURpc2FibGVkKSA9IDA7CiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXREaXNhYmxlZChQUkJvb2wgYURpc2FibGVkKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldE5hbWUobnNBU3RyaW5nICYgYU5hbWUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0
IFNldE5hbWUoY29uc3QgbnNBU3RyaW5nICYgYU5hbWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0VGFiSW5kZXgoUFJJbnQzMiAqYVRhYkluZGV4KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRUYWJJbmRleChQUkludDMyIGFUYWJJbmRleCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRUeXBlKG5zQVN0cmluZyAmIGFUeXBlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dFZhbHVlKG5zQVN0cmluZyAmIGFWYWx1ZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VmFs
dWUoY29uc3QgbnNBU3RyaW5nICYgYVZhbHVlKSA9IDA7Cgp9OwojIDIwNCAibnNET01DbGFzc0lu
Zm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU0hUTUxCdXR0
b25FbGVtZW50LmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU0hU
TUxCdXR0b25FbGVtZW50LmgiCmNsYXNzIG5zSURPTU5TSFRNTEJ1dHRvbkVsZW1lbnQgOiBwdWJs
aWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgp
IHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4NmZkMzQ0ZDAsIDB4N2U1ZiwgMHgxMWQyLCB7
IDB4YmQsIDB4OTEsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZTMsIDB4ZjQgfX07IHJldHVy
biBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBCbHVyKHZvaWQpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgRm9jdXModm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDbGljayh2b2lk
KSA9IDA7Cgp9OwojIDIwNSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2RvbS9uc0lET01IVE1MRExpc3RFbGVtZW50LmgiIDEKIyAzNCAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MRExpc3RFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhU
TUxETGlzdEVsZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGljOgoKICBz
dGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4
YTZjZjkwOWIsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYs
IDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRDb21wYWN0KFBSQm9vbCAqYUNvbXBhY3QpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENv
bXBhY3QoUFJCb29sIGFDb21wYWN0KSA9IDA7Cgp9OwojIDIwNiAibnNET01DbGFzc0luZm8uY3Bw
IiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MRGlyZWN0b3J5RWxl
bWVudC5oIiAxCiMgMzQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTERpcmVj
dG9yeUVsZW1lbnQuaCIKY2xhc3MgbnNJRE9NSFRNTERpcmVjdG9yeUVsZW1lbnQgOiBwdWJsaWMg
bnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJ
RCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwOWMsIDB4MTViMywgMHgxMWQy
LCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJl
dHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb21wYWN0KFBSQm9vbCAqYUNvbXBh
Y3QpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENvbXBhY3QoUFJCb29sIGFDb21wYWN0KSA9
IDA7Cgp9OwojIDIwNyAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2RvbS9uc0lET01IVE1MRGl2RWxlbWVudC5oIiAxCiMgMzQgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9kb20vbnNJRE9NSFRNTERpdkVsZW1lbnQuaCIKY2xhc3MgbnNJRE9NSFRNTERpdkVs
ZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMgY29u
c3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwYTAs
IDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4
ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBbGlnbihu
c0FTdHJpbmcgJiBhQWxpZ24pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFsaWduKGNvbnN0
IG5zQVN0cmluZyAmIGFBbGlnbikgPSAwOwoKfTsKIyAyMDggIm5zRE9NQ2xhc3NJbmZvLmNwcCIg
MgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTEVtYmVkRWxlbWVudC5o
IiAxCiMgMzQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTEVtYmVkRWxlbWVu
dC5oIgpjbGFzcyBuc0lET01IVE1MRW1iZWRFbGVtZW50IDogcHVibGljIG5zSURPTUhUTUxFbGVt
ZW50IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNv
bnN0IG5zSUlEIGlpZCA9IHsweDEyM2Y5MGFiLCAweDE1YjMsIDB4MTFkMiwgeyAweDQ1LCAweDZl
LCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0QWxpZ24obnNBU3RyaW5nICYgYUFsaWduKSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXRBbGlnbihjb25zdCBuc0FTdHJpbmcgJiBhQWxpZ24pID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0SGVpZ2h0KG5zQVN0cmluZyAmIGFIZWlnaHQpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldEhlaWdodChjb25zdCBuc0FTdHJpbmcgJiBhSGVpZ2h0KSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5hbWUobnNBU3RyaW5nICYgYU5hbWUpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldE5hbWUoY29uc3QgbnNBU3RyaW5nICYgYU5hbWUpID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0U3JjKG5zQVN0cmluZyAmIGFTcmMpID0gMDsKICB2aXJ0dWFs
IG5zcmVzdWx0IFNldFNyYyhjb25zdCBuc0FTdHJpbmcgJiBhU3JjKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldFR5cGUobnNBU3RyaW5nICYgYVR5cGUpID0gMDsKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldFR5cGUoY29uc3QgbnNBU3RyaW5nICYgYVR5cGUpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0V2lkdGgobnNBU3RyaW5nICYgYVdpZHRoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRXaWR0aChjb25zdCBuc0FTdHJpbmcgJiBhV2lkdGgpID0gMDsKCn07CiMgMjA5ICJuc0RP
TUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhU
TUxGaWVsZFNldEVsZW1lbnQuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25z
SURPTUhUTUxGaWVsZFNldEVsZW1lbnQuaCIKY2xhc3MgbnNJRE9NSFRNTEZpZWxkU2V0RWxlbWVu
dCA6IHB1YmxpYyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBu
c0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTA5NywgMHgx
NWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwg
MHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEZvcm0obnNJRE9N
SFRNTEZvcm1FbGVtZW50ICogKmFGb3JtKSA9IDA7Cgp9OwojIDIxMCAibnNET01DbGFzc0luZm8u
Y3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MRm9udEVsZW1l
bnQuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxGb250RWxl
bWVudC5oIgpjbGFzcyBuc0lET01IVE1MRm9udEVsZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVs
ZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMg
Y29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwYTcsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4
MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb2xvcihuc0FTdHJpbmcgJiBhQ29sb3IpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldENvbG9yKGNvbnN0IG5zQVN0cmluZyAmIGFDb2xvcikgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGYWNlKG5zQVN0cmluZyAmIGFGYWNlKSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXRGYWNlKGNvbnN0IG5zQVN0cmluZyAmIGFGYWNlKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldFNpemUobnNBU3RyaW5nICYgYVNpemUpID0gMDsKICB2aXJ0dWFs
IG5zcmVzdWx0IFNldFNpemUoY29uc3QgbnNBU3RyaW5nICYgYVNpemUpID0gMDsKCn07CiMgMjEx
ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25z
SURPTU5TSFRNTEZvcm1FbGVtZW50LmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2Rv
bS9uc0lET01OU0hUTUxGb3JtRWxlbWVudC5oIgpjbGFzcyBuc0lET01OU0hUTUxGb3JtRWxlbWVu
dCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYg
R2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTBjNiwgMHgxNWIzLCAw
eDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9
fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEVuY29kaW5nKG5zQVN0cmlu
ZyAmIGFFbmNvZGluZykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RW5jb2RpbmcoY29uc3Qg
bnNBU3RyaW5nICYgYUVuY29kaW5nKSA9IDA7Cgp9OwojIDIxMiAibnNET01DbGFzc0luZm8uY3Bw
IiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MRnJhbWVFbGVtZW50
LmgiIDEKIyAzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MRnJhbWVFbGVt
ZW50LmgiCmNsYXNzIG5zSURPTUhUTUxGcmFtZUVsZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVs
ZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMg
Y29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwYjksIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4
MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGcmFtZUJvcmRlcihuc0FTdHJpbmcgJiBhRnJhbWVCb3Jk
ZXIpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEZyYW1lQm9yZGVyKGNvbnN0IG5zQVN0cmlu
ZyAmIGFGcmFtZUJvcmRlcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMb25nRGVzYyhu
c0FTdHJpbmcgJiBhTG9uZ0Rlc2MpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldExvbmdEZXNj
KGNvbnN0IG5zQVN0cmluZyAmIGFMb25nRGVzYykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRNYXJnaW5IZWlnaHQobnNBU3RyaW5nICYgYU1hcmdpbkhlaWdodCkgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0TWFyZ2luSGVpZ2h0KGNvbnN0IG5zQVN0cmluZyAmIGFNYXJnaW5IZWlnaHQp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TWFyZ2luV2lkdGgobnNBU3RyaW5nICYgYU1h
cmdpbldpZHRoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRNYXJnaW5XaWR0aChjb25zdCBu
c0FTdHJpbmcgJiBhTWFyZ2luV2lkdGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TmFt
ZShuc0FTdHJpbmcgJiBhTmFtZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TmFtZShjb25z
dCBuc0FTdHJpbmcgJiBhTmFtZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROb1Jlc2l6
ZShQUkJvb2wgKmFOb1Jlc2l6ZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Tm9SZXNpemUo
UFJCb29sIGFOb1Jlc2l6ZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTY3JvbGxpbmco
bnNBU3RyaW5nICYgYVNjcm9sbGluZykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0U2Nyb2xs
aW5nKGNvbnN0IG5zQVN0cmluZyAmIGFTY3JvbGxpbmcpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0U3JjKG5zQVN0cmluZyAmIGFTcmMpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNy
Yyhjb25zdCBuc0FTdHJpbmcgJiBhU3JjKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENv
bnRlbnREb2N1bWVudChuc0lET01Eb2N1bWVudCAqICphQ29udGVudERvY3VtZW50KSA9IDA7Cgp9
OwojIDIxMyAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L2RvbS9uc0lET01IVE1MRnJhbWVTZXRFbGVtZW50LmgiIDEKIyAzNCAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2RvbS9uc0lET01IVE1MRnJhbWVTZXRFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxG
cmFtZVNldEVsZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGljOgoKICBz
dGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4
YTZjZjkwYjgsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYs
IDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRDb2xzKG5zQVN0cmluZyAmIGFDb2xzKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDb2xz
KGNvbnN0IG5zQVN0cmluZyAmIGFDb2xzKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJv
d3MobnNBU3RyaW5nICYgYVJvd3MpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFJvd3MoY29u
c3QgbnNBU3RyaW5nICYgYVJvd3MpID0gMDsKCn07CiMgMjE0ICJuc0RPTUNsYXNzSW5mby5jcHAi
IDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTU5TSFRNTEZyYW1lRWxlbWVu
dC5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NTlNIVE1MRnJhbWVF
bGVtZW50LmgiCmNsYXNzIG5zSURPTU5TSFRNTEZyYW1lRWxlbWVudCA6IHB1YmxpYyBuc0lTdXBw
b3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBj
b25zdCBuc0lJRCBpaWQgPSB7MHhkNjdiZDI2NywgMHhmOTg0LCAweDQ5OTMsIHsgMHhiMywgMHg3
OCwgMHg5NSwgMHg4NSwgMHgxYiwgMHg3MSwgMHhmMCwgMHhhMyB9fTsgcmV0dXJuIGlpZDt9CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbnRlbnRXaW5kb3cobnNJRE9NV2luZG93ICogKmFDb250
ZW50V2luZG93KSA9IDA7Cgp9OwojIDIxNSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MSFJFbGVtZW50LmgiIDEKIyAzNCAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MSFJFbGVtZW50LmgiCmNsYXNzIG5zSURP
TUhUTUxIUkVsZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGljOgoKICBz
dGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4
YTZjZjkwYTgsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYs
IDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRBbGlnbihuc0FTdHJpbmcgJiBhQWxpZ24pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFs
aWduKGNvbnN0IG5zQVN0cmluZyAmIGFBbGlnbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXROb1NoYWRlKFBSQm9vbCAqYU5vU2hhZGUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE5v
U2hhZGUoUFJCb29sIGFOb1NoYWRlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNpemUo
bnNBU3RyaW5nICYgYVNpemUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNpemUoY29uc3Qg
bnNBU3RyaW5nICYgYVNpemUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0V2lkdGgobnNB
U3RyaW5nICYgYVdpZHRoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRXaWR0aChjb25zdCBu
c0FTdHJpbmcgJiBhV2lkdGgpID0gMDsKCn07CiMgMjE2ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIK
IyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxIZWFkRWxlbWVudC5oIiAx
CiMgMzQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTEhlYWRFbGVtZW50Lmgi
CmNsYXNzIG5zSURPTUhUTUxIZWFkRWxlbWVudCA6IHB1YmxpYyBuc0lET01IVE1MRWxlbWVudCB7
CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBu
c0lJRCBpaWQgPSB7MHhhNmNmOTA4NywgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgw
MCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldFByb2ZpbGUobnNBU3RyaW5nICYgYVByb2ZpbGUpID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldFByb2ZpbGUoY29uc3QgbnNBU3RyaW5nICYgYVByb2ZpbGUpID0gMDsK
Cn07CiMgMjE3ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvZG9tL25zSURPTUhUTUxIZWFkaW5nRWxlbWVudC5oIiAxCiMgMzQgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9kb20vbnNJRE9NSFRNTEhlYWRpbmdFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxI
ZWFkaW5nRWxlbWVudCA6IHB1YmxpYyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6CgogIHN0
YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhh
NmNmOTBhMiwgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1Ziwg
MHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dEFsaWduKG5zQVN0cmluZyAmIGFBbGlnbikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QWxp
Z24oY29uc3QgbnNBU3RyaW5nICYgYUFsaWduKSA9IDA7Cgp9OwojIDIxOCAibnNET01DbGFzc0lu
Zm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MSHRtbEVs
ZW1lbnQuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxIdG1s
RWxlbWVudC5oIgpjbGFzcyBuc0lET01IVE1MSHRtbEVsZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRN
TEVsZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0
aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwODYsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMs
IDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7
fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRWZXJzaW9uKG5zQVN0cmluZyAmIGFWZXJzaW9uKSA9
IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRWZXJzaW9uKGNvbnN0IG5zQVN0cmluZyAmIGFWZXJz
aW9uKSA9IDA7Cgp9OwojIDIxOSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MSUZyYW1lRWxlbWVudC5oIiAxCiMgMzQgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTElGcmFtZUVsZW1lbnQuaCIKY2xhc3MgbnNJ
RE9NSFRNTElGcmFtZUVsZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGlj
OgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlk
ID0gezB4YTZjZjkwYmEsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAs
IDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRBbGlnbihuc0FTdHJpbmcgJiBhQWxpZ24pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0
IFNldEFsaWduKGNvbnN0IG5zQVN0cmluZyAmIGFBbGlnbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRGcmFtZUJvcmRlcihuc0FTdHJpbmcgJiBhRnJhbWVCb3JkZXIpID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldEZyYW1lQm9yZGVyKGNvbnN0IG5zQVN0cmluZyAmIGFGcmFtZUJvcmRl
cikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRIZWlnaHQobnNBU3RyaW5nICYgYUhlaWdo
dCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0SGVpZ2h0KGNvbnN0IG5zQVN0cmluZyAmIGFI
ZWlnaHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TG9uZ0Rlc2MobnNBU3RyaW5nICYg
YUxvbmdEZXNjKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRMb25nRGVzYyhjb25zdCBuc0FT
dHJpbmcgJiBhTG9uZ0Rlc2MpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TWFyZ2luSGVp
Z2h0KG5zQVN0cmluZyAmIGFNYXJnaW5IZWlnaHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dE1hcmdpbkhlaWdodChjb25zdCBuc0FTdHJpbmcgJiBhTWFyZ2luSGVpZ2h0KSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldE1hcmdpbldpZHRoKG5zQVN0cmluZyAmIGFNYXJnaW5XaWR0aCkg
PSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TWFyZ2luV2lkdGgoY29uc3QgbnNBU3RyaW5nICYg
YU1hcmdpbldpZHRoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5hbWUobnNBU3RyaW5n
ICYgYU5hbWUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE5hbWUoY29uc3QgbnNBU3RyaW5n
ICYgYU5hbWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2Nyb2xsaW5nKG5zQVN0cmlu
ZyAmIGFTY3JvbGxpbmcpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNjcm9sbGluZyhjb25z
dCBuc0FTdHJpbmcgJiBhU2Nyb2xsaW5nKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNy
Yyhuc0FTdHJpbmcgJiBhU3JjKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRTcmMoY29uc3Qg
bnNBU3RyaW5nICYgYVNyYykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRXaWR0aChuc0FT
dHJpbmcgJiBhV2lkdGgpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFdpZHRoKGNvbnN0IG5z
QVN0cmluZyAmIGFXaWR0aCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb250ZW50RG9j
dW1lbnQobnNJRE9NRG9jdW1lbnQgKiAqYUNvbnRlbnREb2N1bWVudCkgPSAwOwoKfTsKIyAyMjAg
Im5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJ
RE9NSFRNTEltYWdlRWxlbWVudC5oIiAxCiMgMzQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20v
bnNJRE9NSFRNTEltYWdlRWxlbWVudC5oIgpjbGFzcyBuc0lET01IVE1MSW1hZ2VFbGVtZW50IDog
cHVibGljIG5zSURPTUhUTUxFbGVtZW50IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlE
JiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MGFiLCAweDE1YjMs
IDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMy
IH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TmFtZShuc0FTdHJpbmcg
JiBhTmFtZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TmFtZShjb25zdCBuc0FTdHJpbmcg
JiBhTmFtZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBbGlnbihuc0FTdHJpbmcgJiBh
QWxpZ24pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFsaWduKGNvbnN0IG5zQVN0cmluZyAm
IGFBbGlnbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBbHQobnNBU3RyaW5nICYgYUFs
dCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QWx0KGNvbnN0IG5zQVN0cmluZyAmIGFBbHQp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Qm9yZGVyKG5zQVN0cmluZyAmIGFCb3JkZXIp
ID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEJvcmRlcihjb25zdCBuc0FTdHJpbmcgJiBhQm9y
ZGVyKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEhlaWdodChQUkludDMyICphSGVpZ2h0
KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRIZWlnaHQoUFJJbnQzMiBhSGVpZ2h0KSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEhzcGFjZShQUkludDMyICphSHNwYWNlKSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXRIc3BhY2UoUFJJbnQzMiBhSHNwYWNlKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldElzTWFwKFBSQm9vbCAqYUlzTWFwKSA9IDA7CiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXRJc01hcChQUkJvb2wgYUlzTWFwKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dExvbmdEZXNjKG5zQVN0cmluZyAmIGFMb25nRGVzYykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQg
U2V0TG9uZ0Rlc2MoY29uc3QgbnNBU3RyaW5nICYgYUxvbmdEZXNjKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldFNyYyhuc0FTdHJpbmcgJiBhU3JjKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRTcmMoY29uc3QgbnNBU3RyaW5nICYgYVNyYykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRVc2VNYXAobnNBU3RyaW5nICYgYVVzZU1hcCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQg
U2V0VXNlTWFwKGNvbnN0IG5zQVN0cmluZyAmIGFVc2VNYXApID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0VnNwYWNlKFBSSW50MzIgKmFWc3BhY2UpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0
IFNldFZzcGFjZShQUkludDMyIGFWc3BhY2UpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
V2lkdGgoUFJJbnQzMiAqYVdpZHRoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRXaWR0aChQ
UkludDMyIGFXaWR0aCkgPSAwOwoKfTsKIyAyMjEgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NTlNIVE1MSW1hZ2VFbGVtZW50LmgiIDEK
IyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU0hUTUxJbWFnZUVsZW1lbnQu
aCIKY2xhc3MgbnNJRE9NTlNIVE1MSW1hZ2VFbGVtZW50IDogcHVibGljIG5zSVN1cHBvcnRzIHsK
IHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5z
SUlEIGlpZCA9IHsweGE2Y2Y5MGM3LCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAw
LCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0Q29tcGxldGUoUFJCb29sICphQ29tcGxldGUpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0TmF0dXJhbEhlaWdodChQUkludDMyICphTmF0dXJhbEhlaWdodCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROYXR1cmFsV2lkdGgoUFJJbnQzMiAqYU5hdHVyYWxX
aWR0aCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRYKFBSSW50MzIgKmFYKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldFkoUFJJbnQzMiAqYVkpID0gMDsKCn07CiMgMjIyICJuc0RP
TUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhU
TUxJbnB1dEVsZW1lbnQuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURP
TUhUTUxJbnB1dEVsZW1lbnQuaCIKY2xhc3MgbnNJRE9NSFRNTElucHV0RWxlbWVudCA6IHB1Ymxp
YyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0
SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTA5MywgMHgxNWIzLCAweDEx
ZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsg
cmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERlZmF1bHRWYWx1ZShuc0FTdHJp
bmcgJiBhRGVmYXVsdFZhbHVlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXREZWZhdWx0VmFs
dWUoY29uc3QgbnNBU3RyaW5nICYgYURlZmF1bHRWYWx1ZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXREZWZhdWx0Q2hlY2tlZChQUkJvb2wgKmFEZWZhdWx0Q2hlY2tlZCkgPSAwOwogIHZp
cnR1YWwgbnNyZXN1bHQgU2V0RGVmYXVsdENoZWNrZWQoUFJCb29sIGFEZWZhdWx0Q2hlY2tlZCkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGb3JtKG5zSURPTUhUTUxGb3JtRWxlbWVudCAq
ICphRm9ybSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBY2NlcHQobnNBU3RyaW5nICYg
YUFjY2VwdCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QWNjZXB0KGNvbnN0IG5zQVN0cmlu
ZyAmIGFBY2NlcHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QWNjZXNzS2V5KG5zQVN0
cmluZyAmIGFBY2Nlc3NLZXkpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFjY2Vzc0tleShj
b25zdCBuc0FTdHJpbmcgJiBhQWNjZXNzS2V5KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dEFsaWduKG5zQVN0cmluZyAmIGFBbGlnbikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QWxp
Z24oY29uc3QgbnNBU3RyaW5nICYgYUFsaWduKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dEFsdChuc0FTdHJpbmcgJiBhQWx0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRBbHQoY29u
c3QgbnNBU3RyaW5nICYgYUFsdCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDaGVja2Vk
KFBSQm9vbCAqYUNoZWNrZWQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENoZWNrZWQoUFJC
b29sIGFDaGVja2VkKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERpc2FibGVkKFBSQm9v
bCAqYURpc2FibGVkKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXREaXNhYmxlZChQUkJvb2wg
YURpc2FibGVkKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1heExlbmd0aChQUkludDMy
ICphTWF4TGVuZ3RoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRNYXhMZW5ndGgoUFJJbnQz
MiBhTWF4TGVuZ3RoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5hbWUobnNBU3RyaW5n
ICYgYU5hbWUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE5hbWUoY29uc3QgbnNBU3RyaW5n
ICYgYU5hbWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UmVhZE9ubHkoUFJCb29sICph
UmVhZE9ubHkpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFJlYWRPbmx5KFBSQm9vbCBhUmVh
ZE9ubHkpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2l6ZShQUlVpbnQzMiAqYVNpemUp
ID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNpemUoUFJVaW50MzIgYVNpemUpID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0U3JjKG5zQVN0cmluZyAmIGFTcmMpID0gMDsKICB2aXJ0dWFs
IG5zcmVzdWx0IFNldFNyYyhjb25zdCBuc0FTdHJpbmcgJiBhU3JjKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldFRhYkluZGV4KFBSSW50MzIgKmFUYWJJbmRleCkgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0VGFiSW5kZXgoUFJJbnQzMiBhVGFiSW5kZXgpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0VHlwZShuc0FTdHJpbmcgJiBhVHlwZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0VHlwZShjb25zdCBuc0FTdHJpbmcgJiBhVHlwZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRVc2VNYXAobnNBU3RyaW5nICYgYVVzZU1hcCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0VXNlTWFwKGNvbnN0IG5zQVN0cmluZyAmIGFVc2VNYXApID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0VmFsdWUobnNBU3RyaW5nICYgYVZhbHVlKSA9IDA7CiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXRWYWx1ZShjb25zdCBuc0FTdHJpbmcgJiBhVmFsdWUpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgQmx1cih2b2lkKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEZvY3VzKHZvaWQp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2VsZWN0KHZvaWQpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgQ2xpY2sodm9pZCkgPSAwOwoKfTsKIyAyMjMgIm5zRE9NQ2xhc3NJbmZvLmNwcCIg
MgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NTlNIVE1MSW5wdXRFbGVtZW50
LmgiIDEKIyAxNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU0hUTUxJbnB1dEVs
ZW1lbnQuaCIKY2xhc3MgbnNJQ29udHJvbGxlcnM7CiMgMjcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9kb20vbnNJRE9NTlNIVE1MSW5wdXRFbGVtZW50LmgiCmNsYXNzIG5zSURPTU5TSFRNTElucHV0
RWxlbWVudCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBu
c0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHg5OTNkMmVmYywgMHhh
NzY4LCAweDExZDMsIHsgMHhiYywgMHhjZCwgMHgwMCwgMHg2MCwgMHhiMCwgMHhmYywgMHg3Niwg
MHhiZCB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbnRyb2xsZXJz
KG5zSUNvbnRyb2xsZXJzICogKmFDb250cm9sbGVycykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRUZXh0TGVuZ3RoKFBSSW50MzIgKmFUZXh0TGVuZ3RoKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldFNlbGVjdGlvblN0YXJ0KFBSSW50MzIgKmFTZWxlY3Rpb25TdGFydCkgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0U2VsZWN0aW9uU3RhcnQoUFJJbnQzMiBhU2VsZWN0aW9uU3Rh
cnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2VsZWN0aW9uRW5kKFBSSW50MzIgKmFT
ZWxlY3Rpb25FbmQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNlbGVjdGlvbkVuZChQUklu
dDMyIGFTZWxlY3Rpb25FbmQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0U2VsZWN0aW9u
UmFuZ2UoUFJJbnQzMiBzZWxlY3Rpb25TdGFydCwgUFJJbnQzMiBzZWxlY3Rpb25FbmQpID0gMDsK
Cn07CiMgMjI0ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvZG9tL25zSURPTUhUTUxJc0luZGV4RWxlbWVudC5oIiAxCiMgMzQgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9kb20vbnNJRE9NSFRNTElzSW5kZXhFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxJ
c0luZGV4RWxlbWVudCA6IHB1YmxpYyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6CgogIHN0
YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhh
NmNmOTA4YywgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1Ziwg
MHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dEZvcm0obnNJRE9NSFRNTEZvcm1FbGVtZW50ICogKmFGb3JtKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldFByb21wdChuc0FTdHJpbmcgJiBhUHJvbXB0KSA9IDA7CiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXRQcm9tcHQoY29uc3QgbnNBU3RyaW5nICYgYVByb21wdCkgPSAwOwoKfTsKIyAyMjUg
Im5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJ
RE9NSFRNTExJRWxlbWVudC5oIiAxCiMgMzQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJ
RE9NSFRNTExJRWxlbWVudC5oIgpjbGFzcyBuc0lET01IVE1MTElFbGVtZW50IDogcHVibGljIG5z
SURPTUhUTUxFbGVtZW50IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQo
KSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MDllLCAweDE1YjMsIDB4MTFkMiwg
eyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1
cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VHlwZShuc0FTdHJpbmcgJiBhVHlwZSkg
PSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VHlwZShjb25zdCBuc0FTdHJpbmcgJiBhVHlwZSkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRWYWx1ZShQUkludDMyICphVmFsdWUpID0gMDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldFZhbHVlKFBSSW50MzIgYVZhbHVlKSA9IDA7Cgp9OwojIDIy
NiAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9u
c0lET01IVE1MTGFiZWxFbGVtZW50LmgiIDEKIyAzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2Rv
bS9uc0lET01IVE1MTGFiZWxFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxMYWJlbEVsZW1lbnQg
OiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJ
SUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwOTYsIDB4MTVi
MywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4
MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGb3JtKG5zSURPTUhU
TUxGb3JtRWxlbWVudCAqICphRm9ybSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBY2Nl
c3NLZXkobnNBU3RyaW5nICYgYUFjY2Vzc0tleSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0
QWNjZXNzS2V5KGNvbnN0IG5zQVN0cmluZyAmIGFBY2Nlc3NLZXkpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0SHRtbEZvcihuc0FTdHJpbmcgJiBhSHRtbEZvcikgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0SHRtbEZvcihjb25zdCBuc0FTdHJpbmcgJiBhSHRtbEZvcikgPSAwOwoKfTsK
IyAyMjcgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9k
b20vbnNJRE9NSFRNTExlZ2VuZEVsZW1lbnQuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvZG9tL25zSURPTUhUTUxMZWdlbmRFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxMZWdlbmRF
bGVtZW50IDogcHVibGljIG5zSURPTUhUTUxFbGVtZW50IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNv
bnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MDk4
LCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAw
eGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Rm9ybShu
c0lET01IVE1MRm9ybUVsZW1lbnQgKiAqYUZvcm0pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0QWNjZXNzS2V5KG5zQVN0cmluZyAmIGFBY2Nlc3NLZXkpID0gMDsKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldEFjY2Vzc0tleShjb25zdCBuc0FTdHJpbmcgJiBhQWNjZXNzS2V5KSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldEFsaWduKG5zQVN0cmluZyAmIGFBbGlnbikgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0QWxpZ24oY29uc3QgbnNBU3RyaW5nICYgYUFsaWduKSA9IDA7Cgp9Owoj
IDIyOCAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2Rv
bS9uc0lET01IVE1MTGlua0VsZW1lbnQuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
ZG9tL25zSURPTUhUTUxMaW5rRWxlbWVudC5oIgpjbGFzcyBuc0lET01IVE1MTGlua0VsZW1lbnQg
OiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJ
SUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwODgsIDB4MTVi
MywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4
MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREaXNhYmxlZChQUkJv
b2wgKmFEaXNhYmxlZCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RGlzYWJsZWQoUFJCb29s
IGFEaXNhYmxlZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDaGFyc2V0KG5zQVN0cmlu
ZyAmIGFDaGFyc2V0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDaGFyc2V0KGNvbnN0IG5z
QVN0cmluZyAmIGFDaGFyc2V0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEhyZWYobnNB
U3RyaW5nICYgYUhyZWYpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEhyZWYoY29uc3QgbnNB
U3RyaW5nICYgYUhyZWYpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SHJlZmxhbmcobnNB
U3RyaW5nICYgYUhyZWZsYW5nKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRIcmVmbGFuZyhj
b25zdCBuc0FTdHJpbmcgJiBhSHJlZmxhbmcpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
TWVkaWEobnNBU3RyaW5nICYgYU1lZGlhKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRNZWRp
YShjb25zdCBuc0FTdHJpbmcgJiBhTWVkaWEpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
UmVsKG5zQVN0cmluZyAmIGFSZWwpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFJlbChjb25z
dCBuc0FTdHJpbmcgJiBhUmVsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJldihuc0FT
dHJpbmcgJiBhUmV2KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRSZXYoY29uc3QgbnNBU3Ry
aW5nICYgYVJldikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRUYXJnZXQobnNBU3RyaW5n
ICYgYVRhcmdldCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VGFyZ2V0KGNvbnN0IG5zQVN0
cmluZyAmIGFUYXJnZXQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VHlwZShuc0FTdHJp
bmcgJiBhVHlwZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VHlwZShjb25zdCBuc0FTdHJp
bmcgJiBhVHlwZSkgPSAwOwoKfTsKIyAyMjkgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTE1hcEVsZW1lbnQuaCIgMQojIDM0ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxNYXBFbGVtZW50LmgiCmNsYXNzIG5z
SURPTUhUTUxNYXBFbGVtZW50IDogcHVibGljIG5zSURPTUhUTUxFbGVtZW50IHsKIHB1YmxpYzoK
CiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9
IHsweGE2Y2Y5MGFmLCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAw
eDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0QXJlYXMobnNJRE9NSFRNTENvbGxlY3Rpb24gKiAqYUFyZWFzKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldE5hbWUobnNBU3RyaW5nICYgYU5hbWUpID0gMDsKICB2aXJ0dWFsIG5z
cmVzdWx0IFNldE5hbWUoY29uc3QgbnNBU3RyaW5nICYgYU5hbWUpID0gMDsKCn07CiMgMjMwICJu
c0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURP
TUhUTUxNZW51RWxlbWVudC5oIiAxCiMgMzQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJ
RE9NSFRNTE1lbnVFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxNZW51RWxlbWVudCA6IHB1Ymxp
YyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0
SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTA5ZCwgMHgxNWIzLCAweDEx
ZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsg
cmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbXBhY3QoUFJCb29sICphQ29t
cGFjdCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q29tcGFjdChQUkJvb2wgYUNvbXBhY3Qp
ID0gMDsKCn07CiMgMjMxICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvZG9tL25zSURPTUhUTUxNZXRhRWxlbWVudC5oIiAxCiMgMzQgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTE1ldGFFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxN
ZXRhRWxlbWVudCA6IHB1YmxpYyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6CgogIHN0YXRp
YyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNm
OTA4YSwgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4
YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENv
bnRlbnQobnNBU3RyaW5nICYgYUNvbnRlbnQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENv
bnRlbnQoY29uc3QgbnNBU3RyaW5nICYgYUNvbnRlbnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0SHR0cEVxdWl2KG5zQVN0cmluZyAmIGFIdHRwRXF1aXYpID0gMDsKICB2aXJ0dWFsIG5z
cmVzdWx0IFNldEh0dHBFcXVpdihjb25zdCBuc0FTdHJpbmcgJiBhSHR0cEVxdWl2KSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5hbWUobnNBU3RyaW5nICYgYU5hbWUpID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldE5hbWUoY29uc3QgbnNBU3RyaW5nICYgYU5hbWUpID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0U2NoZW1lKG5zQVN0cmluZyAmIGFTY2hlbWUpID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldFNjaGVtZShjb25zdCBuc0FTdHJpbmcgJiBhU2NoZW1lKSA9IDA7Cgp9
OwojIDIzMiAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L2RvbS9uc0lET01IVE1MTW9kRWxlbWVudC5oIiAxCiMgMzQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9kb20vbnNJRE9NSFRNTE1vZEVsZW1lbnQuaCIKY2xhc3MgbnNJRE9NSFRNTE1vZEVsZW1lbnQg
OiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJ
SUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwYTksIDB4MTVi
MywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4
MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDaXRlKG5zQVN0cmlu
ZyAmIGFDaXRlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDaXRlKGNvbnN0IG5zQVN0cmlu
ZyAmIGFDaXRlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERhdGVUaW1lKG5zQVN0cmlu
ZyAmIGFEYXRlVGltZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RGF0ZVRpbWUoY29uc3Qg
bnNBU3RyaW5nICYgYURhdGVUaW1lKSA9IDA7Cgp9OwojIDIzMyAibnNET01DbGFzc0luZm8uY3Bw
IiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MT0xpc3RFbGVtZW50
LmgiIDEKIyAzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MT0xpc3RFbGVt
ZW50LmgiCmNsYXNzIG5zSURPTUhUTUxPTGlzdEVsZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVs
ZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMg
Y29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwOWEsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4
MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb21wYWN0KFBSQm9vbCAqYUNvbXBhY3QpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldENvbXBhY3QoUFJCb29sIGFDb21wYWN0KSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldFN0YXJ0KFBSSW50MzIgKmFTdGFydCkgPSAwOwogIHZpcnR1YWwgbnNy
ZXN1bHQgU2V0U3RhcnQoUFJJbnQzMiBhU3RhcnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0VHlwZShuc0FTdHJpbmcgJiBhVHlwZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VHlw
ZShjb25zdCBuc0FTdHJpbmcgJiBhVHlwZSkgPSAwOwoKfTsKIyAyMzQgIm5zRE9NQ2xhc3NJbmZv
LmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTE9iamVjdEVs
ZW1lbnQuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxPYmpl
Y3RFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxPYmplY3RFbGVtZW50IDogcHVibGljIG5zSURP
TUhUTUxFbGVtZW50IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7
c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MGFjLCAweDE1YjMsIDB4MTFkMiwgeyAw
eDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4g
aWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Rm9ybShuc0lET01IVE1MRm9ybUVsZW1lbnQg
KiAqYUZvcm0pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29kZShuc0FTdHJpbmcgJiBh
Q29kZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q29kZShjb25zdCBuc0FTdHJpbmcgJiBh
Q29kZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBbGlnbihuc0FTdHJpbmcgJiBhQWxp
Z24pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFsaWduKGNvbnN0IG5zQVN0cmluZyAmIGFB
bGlnbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBcmNoaXZlKG5zQVN0cmluZyAmIGFB
cmNoaXZlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRBcmNoaXZlKGNvbnN0IG5zQVN0cmlu
ZyAmIGFBcmNoaXZlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEJvcmRlcihuc0FTdHJp
bmcgJiBhQm9yZGVyKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRCb3JkZXIoY29uc3QgbnNB
U3RyaW5nICYgYUJvcmRlcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb2RlQmFzZShu
c0FTdHJpbmcgJiBhQ29kZUJhc2UpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENvZGVCYXNl
KGNvbnN0IG5zQVN0cmluZyAmIGFDb2RlQmFzZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRDb2RlVHlwZShuc0FTdHJpbmcgJiBhQ29kZVR5cGUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0
IFNldENvZGVUeXBlKGNvbnN0IG5zQVN0cmluZyAmIGFDb2RlVHlwZSkgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXREYXRhKG5zQVN0cmluZyAmIGFEYXRhKSA9IDA7CiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXREYXRhKGNvbnN0IG5zQVN0cmluZyAmIGFEYXRhKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldERlY2xhcmUoUFJCb29sICphRGVjbGFyZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0RGVjbGFyZShQUkJvb2wgYURlY2xhcmUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0SGVpZ2h0KG5zQVN0cmluZyAmIGFIZWlnaHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dEhlaWdodChjb25zdCBuc0FTdHJpbmcgJiBhSGVpZ2h0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldEhzcGFjZShQUkludDMyICphSHNwYWNlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBT
ZXRIc3BhY2UoUFJJbnQzMiBhSHNwYWNlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5h
bWUobnNBU3RyaW5nICYgYU5hbWUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE5hbWUoY29u
c3QgbnNBU3RyaW5nICYgYU5hbWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U3RhbmRi
eShuc0FTdHJpbmcgJiBhU3RhbmRieSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0U3RhbmRi
eShjb25zdCBuc0FTdHJpbmcgJiBhU3RhbmRieSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRUYWJJbmRleChQUkludDMyICphVGFiSW5kZXgpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dFRhYkluZGV4KFBSSW50MzIgYVRhYkluZGV4KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dFR5cGUobnNBU3RyaW5nICYgYVR5cGUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFR5cGUo
Y29uc3QgbnNBU3RyaW5nICYgYVR5cGUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VXNl
TWFwKG5zQVN0cmluZyAmIGFVc2VNYXApID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFVzZU1h
cChjb25zdCBuc0FTdHJpbmcgJiBhVXNlTWFwKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dFZzcGFjZShQUkludDMyICphVnNwYWNlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRWc3Bh
Y2UoUFJJbnQzMiBhVnNwYWNlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFdpZHRoKG5z
QVN0cmluZyAmIGFXaWR0aCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0V2lkdGgoY29uc3Qg
bnNBU3RyaW5nICYgYVdpZHRoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbnRlbnRE
b2N1bWVudChuc0lET01Eb2N1bWVudCAqICphQ29udGVudERvY3VtZW50KSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRDb250ZW50RG9jdW1lbnQobnNJRE9NRG9jdW1lbnQgKiBhQ29udGVudERv
Y3VtZW50KSA9IDA7Cgp9OwojIDIzNSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MT3B0R3JvdXBFbGVtZW50LmgiIDEKIyAzNCAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MT3B0R3JvdXBFbGVtZW50LmgiCmNs
YXNzIG5zSURPTUhUTUxPcHRHcm91cEVsZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQg
ewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3Qg
bnNJSUQgaWlkID0gezB4YTZjZjkwOTEsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4
MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXREaXNhYmxlZChQUkJvb2wgKmFEaXNhYmxlZCkgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0RGlzYWJsZWQoUFJCb29sIGFEaXNhYmxlZCkgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRMYWJlbChuc0FTdHJpbmcgJiBhTGFiZWwpID0gMDsKICB2aXJ0dWFsIG5z
cmVzdWx0IFNldExhYmVsKGNvbnN0IG5zQVN0cmluZyAmIGFMYWJlbCkgPSAwOwoKfTsKIyAyMzYg
Im5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJ
RE9NSFRNTFBhcmFncmFwaEVsZW1lbnQuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
ZG9tL25zSURPTUhUTUxQYXJhZ3JhcGhFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxQYXJhZ3Jh
cGhFbGVtZW50IDogcHVibGljIG5zSURPTUhUTUxFbGVtZW50IHsKIHB1YmxpYzoKCiAgc3RhdGlj
IGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5
MGExLCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhh
LCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QWxp
Z24obnNBU3RyaW5nICYgYUFsaWduKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRBbGlnbihj
b25zdCBuc0FTdHJpbmcgJiBhQWxpZ24pID0gMDsKCn07CiMgMjM3ICJuc0RPTUNsYXNzSW5mby5j
cHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxQYXJhbUVsZW1l
bnQuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxQYXJhbUVs
ZW1lbnQuaCIKY2xhc3MgbnNJRE9NSFRNTFBhcmFtRWxlbWVudCA6IHB1YmxpYyBuc0lET01IVE1M
RWxlbWVudCB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRp
YyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTBhZCwgMHgxNWIzLCAweDExZDIsIHsgMHg5Mywg
MHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5hbWUobnNBU3RyaW5nICYgYU5hbWUpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldE5hbWUoY29uc3QgbnNBU3RyaW5nICYgYU5hbWUpID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0VHlwZShuc0FTdHJpbmcgJiBhVHlwZSkgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0VHlwZShjb25zdCBuc0FTdHJpbmcgJiBhVHlwZSkgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRWYWx1ZShuc0FTdHJpbmcgJiBhVmFsdWUpID0gMDsKICB2aXJ0dWFs
IG5zcmVzdWx0IFNldFZhbHVlKGNvbnN0IG5zQVN0cmluZyAmIGFWYWx1ZSkgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRWYWx1ZVR5cGUobnNBU3RyaW5nICYgYVZhbHVlVHlwZSkgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0VmFsdWVUeXBlKGNvbnN0IG5zQVN0cmluZyAmIGFWYWx1ZVR5
cGUpID0gMDsKCn07CiMgMjM4ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxQcmVFbGVtZW50LmgiIDEKIyAzNCAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MUHJlRWxlbWVudC5oIgpjbGFzcyBuc0lET01IVE1M
UHJlRWxlbWVudCA6IHB1YmxpYyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6CgogIHN0YXRp
YyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNm
OTBhNCwgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4
YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFdp
ZHRoKFBSSW50MzIgKmFXaWR0aCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0V2lkdGgoUFJJ
bnQzMiBhV2lkdGgpID0gMDsKCn07CiMgMjM5ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxRdW90ZUVsZW1lbnQuaCIgMQojIDM0
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxRdW90ZUVsZW1lbnQuaCIKY2xh
c3MgbnNJRE9NSFRNTFF1b3RlRWxlbWVudCA6IHB1YmxpYyBuc0lET01IVE1MRWxlbWVudCB7CiBw
dWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJ
RCBpaWQgPSB7MHhhNmNmOTBhMywgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwg
MHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldENpdGUobnNBU3RyaW5nICYgYUNpdGUpID0gMDsKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldENpdGUoY29uc3QgbnNBU3RyaW5nICYgYUNpdGUpID0gMDsKCn07CiMgMjQwICJuc0RP
TUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhU
TUxTY3JpcHRFbGVtZW50LmgiIDEKIyAzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lE
T01IVE1MU2NyaXB0RWxlbWVudC5oIgpjbGFzcyBuc0lET01IVE1MU2NyaXB0RWxlbWVudCA6IHB1
YmxpYyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYg
R2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTBiMSwgMHgxNWIzLCAw
eDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9
fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFRleHQobnNBU3RyaW5nICYg
YVRleHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFRleHQoY29uc3QgbnNBU3RyaW5nICYg
YVRleHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SHRtbEZvcihuc0FTdHJpbmcgJiBh
SHRtbEZvcikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0SHRtbEZvcihjb25zdCBuc0FTdHJp
bmcgJiBhSHRtbEZvcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRFdmVudChuc0FTdHJp
bmcgJiBhRXZlbnQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEV2ZW50KGNvbnN0IG5zQVN0
cmluZyAmIGFFdmVudCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDaGFyc2V0KG5zQVN0
cmluZyAmIGFDaGFyc2V0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDaGFyc2V0KGNvbnN0
IG5zQVN0cmluZyAmIGFDaGFyc2V0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERlZmVy
KFBSQm9vbCAqYURlZmVyKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXREZWZlcihQUkJvb2wg
YURlZmVyKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNyYyhuc0FTdHJpbmcgJiBhU3Jj
KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRTcmMoY29uc3QgbnNBU3RyaW5nICYgYVNyYykg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRUeXBlKG5zQVN0cmluZyAmIGFUeXBlKSA9IDA7
CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRUeXBlKGNvbnN0IG5zQVN0cmluZyAmIGFUeXBlKSA9IDA7
Cgp9OwojIDI0MSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2RvbS9uc0lET01OU0hUTUxTZWxlY3RFbGVtZW50LmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2RvbS9uc0lET01OU0hUTUxTZWxlY3RFbGVtZW50LmgiCmNsYXNzIG5zSURPTU5T
SFRNTFNlbGVjdEVsZW1lbnQgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0
aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZj
ZjkxMDUsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4
OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJdGVt
KFBSVWludDMyIGluZGV4LCBuc0lET01Ob2RlICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBOYW1lZEl0ZW0oY29uc3QgbnNBU3RyaW5nICYgbmFtZSwgbnNJRE9NTm9kZSAqKl9y
ZXR2YWwpID0gMDsKCn07CiMgMjQyICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxTdHlsZUVsZW1lbnQuaCIgMQojIDM0ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxTdHlsZUVsZW1lbnQuaCIKY2xhc3MgbnNJ
RE9NSFRNTFN0eWxlRWxlbWVudCA6IHB1YmxpYyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6
CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQg
PSB7MHhhNmNmOTA4ZCwgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwg
MHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldERpc2FibGVkKFBSQm9vbCAqYURpc2FibGVkKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXREaXNhYmxlZChQUkJvb2wgYURpc2FibGVkKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldE1lZGlhKG5zQVN0cmluZyAmIGFNZWRpYSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0
TWVkaWEoY29uc3QgbnNBU3RyaW5nICYgYU1lZGlhKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldFR5cGUobnNBU3RyaW5nICYgYVR5cGUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFR5
cGUoY29uc3QgbnNBU3RyaW5nICYgYVR5cGUpID0gMDsKCn07CiMgMjQzICJuc0RPTUNsYXNzSW5m
by5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxUYWJsZUNh
cHRpb25FbGVtLmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1M
VGFibGVDYXB0aW9uRWxlbS5oIgpjbGFzcyBuc0lET01IVE1MVGFibGVDYXB0aW9uRWxlbWVudCA6
IHB1YmxpYyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJ
RCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTBiMywgMHgxNWIz
LCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgz
MiB9fTsgcmV0dXJuIGlpZDt9CiMgNDAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9N
SFRNTFRhYmxlQ2FwdGlvbkVsZW0uaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFsaWduKG5zQVN0
cmluZyAmIGFBbGlnbikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QWxpZ24oY29uc3QgbnNB
U3RyaW5nICYgYUFsaWduKSA9IDA7Cgp9OwojIDI0NCAibnNET01DbGFzc0luZm8uY3BwIiAyCiMg
MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MVGFibGVDZWxsRWxlbWVudC5o
IiAxCiMgMzQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTFRhYmxlQ2VsbEVs
ZW1lbnQuaCIKY2xhc3MgbnNJRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQgOiBwdWJsaWMgbnNJRE9N
SFRNTEVsZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtz
dGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwYjcsIDB4MTViMywgMHgxMWQyLCB7IDB4
OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBp
aWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDZWxsSW5kZXgoUFJJbnQzMiAqYUNlbGxJbmRl
eCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBYmJyKG5zQVN0cmluZyAmIGFBYmJyKSA9
IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRBYmJyKGNvbnN0IG5zQVN0cmluZyAmIGFBYmJyKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFsaWduKG5zQVN0cmluZyAmIGFBbGlnbikgPSAw
OwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QWxpZ24oY29uc3QgbnNBU3RyaW5nICYgYUFsaWduKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEF4aXMobnNBU3RyaW5nICYgYUF4aXMpID0gMDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldEF4aXMoY29uc3QgbnNBU3RyaW5nICYgYUF4aXMpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QmdDb2xvcihuc0FTdHJpbmcgJiBhQmdDb2xvcikgPSAw
OwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QmdDb2xvcihjb25zdCBuc0FTdHJpbmcgJiBhQmdDb2xv
cikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDaChuc0FTdHJpbmcgJiBhQ2gpID0gMDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldENoKGNvbnN0IG5zQVN0cmluZyAmIGFDaCkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRDaE9mZihuc0FTdHJpbmcgJiBhQ2hPZmYpID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldENoT2ZmKGNvbnN0IG5zQVN0cmluZyAmIGFDaE9mZikgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRDb2xTcGFuKFBSSW50MzIgKmFDb2xTcGFuKSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXRDb2xTcGFuKFBSSW50MzIgYUNvbFNwYW4pID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0SGVhZGVycyhuc0FTdHJpbmcgJiBhSGVhZGVycykgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0SGVhZGVycyhjb25zdCBuc0FTdHJpbmcgJiBhSGVhZGVycykgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRIZWlnaHQobnNBU3RyaW5nICYgYUhlaWdodCkgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0SGVpZ2h0KGNvbnN0IG5zQVN0cmluZyAmIGFIZWlnaHQpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Tm9XcmFwKFBSQm9vbCAqYU5vV3JhcCkgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0Tm9XcmFwKFBSQm9vbCBhTm9XcmFwKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldFJvd1NwYW4oUFJJbnQzMiAqYVJvd1NwYW4pID0gMDsKICB2aXJ0dWFs
IG5zcmVzdWx0IFNldFJvd1NwYW4oUFJJbnQzMiBhUm93U3BhbikgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRTY29wZShuc0FTdHJpbmcgJiBhU2NvcGUpID0gMDsKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldFNjb3BlKGNvbnN0IG5zQVN0cmluZyAmIGFTY29wZSkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRWQWxpZ24obnNBU3RyaW5nICYgYVZBbGlnbikgPSAwOwogIHZpcnR1YWwgbnNy
ZXN1bHQgU2V0VkFsaWduKGNvbnN0IG5zQVN0cmluZyAmIGFWQWxpZ24pID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0V2lkdGgobnNBU3RyaW5nICYgYVdpZHRoKSA9IDA7CiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXRXaWR0aChjb25zdCBuc0FTdHJpbmcgJiBhV2lkdGgpID0gMDsKCn07CiMgMjQ1
ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25z
SURPTUhUTUxUYWJsZUNvbEVsZW1lbnQuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
ZG9tL25zSURPTUhUTUxUYWJsZUNvbEVsZW1lbnQuaCIKY2xhc3MgbnNJRE9NSFRNTFRhYmxlQ29s
RWxlbWVudCA6IHB1YmxpYyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6CgogIHN0YXRpYyBj
b25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTBi
NCwgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwg
MHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFsaWdu
KG5zQVN0cmluZyAmIGFBbGlnbikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QWxpZ24oY29u
c3QgbnNBU3RyaW5nICYgYUFsaWduKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENoKG5z
QVN0cmluZyAmIGFDaCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q2goY29uc3QgbnNBU3Ry
aW5nICYgYUNoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENoT2ZmKG5zQVN0cmluZyAm
IGFDaE9mZikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q2hPZmYoY29uc3QgbnNBU3RyaW5n
ICYgYUNoT2ZmKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNwYW4oUFJJbnQzMiAqYVNw
YW4pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNwYW4oUFJJbnQzMiBhU3BhbikgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRWQWxpZ24obnNBU3RyaW5nICYgYVZBbGlnbikgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0VkFsaWduKGNvbnN0IG5zQVN0cmluZyAmIGFWQWxpZ24pID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0V2lkdGgobnNBU3RyaW5nICYgYVdpZHRoKSA9IDA7
CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRXaWR0aChjb25zdCBuc0FTdHJpbmcgJiBhV2lkdGgpID0g
MDsKCn07CiMgMjQ2ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvZG9tL25zSURPTUhUTUxUYWJsZUVsZW1lbnQuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvZG9tL25zSURPTUhUTUxUYWJsZUVsZW1lbnQuaCIKY2xhc3MgbnNJRE9NSFRNTFRh
YmxlRWxlbWVudCA6IHB1YmxpYyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6CgogIHN0YXRp
YyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNm
OTBiMiwgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4
YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENh
cHRpb24obnNJRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQgKiAqYUNhcHRpb24pID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldENhcHRpb24obnNJRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQg
KiBhQ2FwdGlvbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRUSGVhZChuc0lET01IVE1M
VGFibGVTZWN0aW9uRWxlbWVudCAqICphVEhlYWQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dFRIZWFkKG5zSURPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50ICogYVRIZWFkKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldFRGb290KG5zSURPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50ICog
KmFURm9vdCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VEZvb3QobnNJRE9NSFRNTFRhYmxl
U2VjdGlvbkVsZW1lbnQgKiBhVEZvb3QpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Um93
cyhuc0lET01IVE1MQ29sbGVjdGlvbiAqICphUm93cykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRUQm9kaWVzKG5zSURPTUhUTUxDb2xsZWN0aW9uICogKmFUQm9kaWVzKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldEFsaWduKG5zQVN0cmluZyAmIGFBbGlnbikgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0QWxpZ24oY29uc3QgbnNBU3RyaW5nICYgYUFsaWduKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldEJnQ29sb3IobnNBU3RyaW5nICYgYUJnQ29sb3IpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldEJnQ29sb3IoY29uc3QgbnNBU3RyaW5nICYgYUJnQ29sb3IpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Qm9yZGVyKG5zQVN0cmluZyAmIGFCb3JkZXIpID0g
MDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEJvcmRlcihjb25zdCBuc0FTdHJpbmcgJiBhQm9yZGVy
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENlbGxQYWRkaW5nKG5zQVN0cmluZyAmIGFD
ZWxsUGFkZGluZykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q2VsbFBhZGRpbmcoY29uc3Qg
bnNBU3RyaW5nICYgYUNlbGxQYWRkaW5nKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENl
bGxTcGFjaW5nKG5zQVN0cmluZyAmIGFDZWxsU3BhY2luZykgPSAwOwogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0Q2VsbFNwYWNpbmcoY29uc3QgbnNBU3RyaW5nICYgYUNlbGxTcGFjaW5nKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldEZyYW1lKG5zQVN0cmluZyAmIGFGcmFtZSkgPSAwOwogIHZp
cnR1YWwgbnNyZXN1bHQgU2V0RnJhbWUoY29uc3QgbnNBU3RyaW5nICYgYUZyYW1lKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJ1bGVzKG5zQVN0cmluZyAmIGFSdWxlcykgPSAwOwogIHZp
cnR1YWwgbnNyZXN1bHQgU2V0UnVsZXMoY29uc3QgbnNBU3RyaW5nICYgYVJ1bGVzKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldFN1bW1hcnkobnNBU3RyaW5nICYgYVN1bW1hcnkpID0gMDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldFN1bW1hcnkoY29uc3QgbnNBU3RyaW5nICYgYVN1bW1hcnkp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0V2lkdGgobnNBU3RyaW5nICYgYVdpZHRoKSA9
IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRXaWR0aChjb25zdCBuc0FTdHJpbmcgJiBhV2lkdGgp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ3JlYXRlVEhlYWQobnNJRE9NSFRNTEVsZW1lbnQg
KipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IERlbGV0ZVRIZWFkKHZvaWQpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ3JlYXRlVEZvb3QobnNJRE9NSFRNTEVsZW1lbnQgKipf
cmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IERlbGV0ZVRGb290KHZvaWQpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgQ3JlYXRlQ2FwdGlvbihuc0lET01IVE1MRWxlbWVudCAqKl9y
ZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgRGVsZXRlQ2FwdGlvbih2b2lkKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEluc2VydFJvdyhQUkludDMyIGluZGV4LCBuc0lET01IVE1M
RWxlbWVudCAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgRGVsZXRlUm93KFBS
SW50MzIgaW5kZXgpID0gMDsKCn07CiMgMjQ3ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxUYWJsZVJvd0VsZW1lbnQuaCIgMQoj
IDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxUYWJsZVJvd0VsZW1lbnQu
aCIKY2xhc3MgbnNJRE9NSFRNTFRhYmxlUm93RWxlbWVudCA6IHB1YmxpYyBuc0lET01IVE1MRWxl
bWVudCB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBj
b25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTBiNiwgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgy
ZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJvd0luZGV4KFBSSW50MzIgKmFSb3dJbmRleCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTZWN0aW9uUm93SW5kZXgoUFJJbnQzMiAqYVNlY3Rpb25S
b3dJbmRleCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDZWxscyhuc0lET01IVE1MQ29s
bGVjdGlvbiAqICphQ2VsbHMpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QWxpZ24obnNB
U3RyaW5nICYgYUFsaWduKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRBbGlnbihjb25zdCBu
c0FTdHJpbmcgJiBhQWxpZ24pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QmdDb2xvcihu
c0FTdHJpbmcgJiBhQmdDb2xvcikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QmdDb2xvcihj
b25zdCBuc0FTdHJpbmcgJiBhQmdDb2xvcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRD
aChuc0FTdHJpbmcgJiBhQ2gpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENoKGNvbnN0IG5z
QVN0cmluZyAmIGFDaCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDaE9mZihuc0FTdHJp
bmcgJiBhQ2hPZmYpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENoT2ZmKGNvbnN0IG5zQVN0
cmluZyAmIGFDaE9mZikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRWQWxpZ24obnNBU3Ry
aW5nICYgYVZBbGlnbikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VkFsaWduKGNvbnN0IG5z
QVN0cmluZyAmIGFWQWxpZ24pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSW5zZXJ0Q2VsbChQ
UkludDMyIGluZGV4LCBuc0lET01IVE1MRWxlbWVudCAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgRGVsZXRlQ2VsbChQUkludDMyIGluZGV4KSA9IDA7Cgp9OwojIDI0OCAibnNE
T01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01I
VE1MVGFibGVTZWN0aW9uRWxlbS5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20v
bnNJRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW0uaCIKY2xhc3MgbnNJRE9NSFRNTFRhYmxlU2VjdGlv
bkVsZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMg
Y29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkw
YjUsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEs
IDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQojIDQwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
ZG9tL25zSURPTUhUTUxUYWJsZVNlY3Rpb25FbGVtLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRB
bGlnbihuc0FTdHJpbmcgJiBhQWxpZ24pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFsaWdu
KGNvbnN0IG5zQVN0cmluZyAmIGFBbGlnbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRD
aChuc0FTdHJpbmcgJiBhQ2gpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENoKGNvbnN0IG5z
QVN0cmluZyAmIGFDaCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDaE9mZihuc0FTdHJp
bmcgJiBhQ2hPZmYpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENoT2ZmKGNvbnN0IG5zQVN0
cmluZyAmIGFDaE9mZikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRWQWxpZ24obnNBU3Ry
aW5nICYgYVZBbGlnbikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VkFsaWduKGNvbnN0IG5z
QVN0cmluZyAmIGFWQWxpZ24pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Um93cyhuc0lE
T01IVE1MQ29sbGVjdGlvbiAqICphUm93cykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJbnNl
cnRSb3coUFJJbnQzMiBpbmRleCwgbnNJRE9NSFRNTEVsZW1lbnQgKipfcmV0dmFsKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IERlbGV0ZVJvdyhQUkludDMyIGluZGV4KSA9IDA7Cgp9OwojIDI0
OSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9u
c0lET01IVE1MVGV4dEFyZWFFbGVtZW50LmgiIDEKIyAzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L2RvbS9uc0lET01IVE1MVGV4dEFyZWFFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxUZXh0QXJl
YUVsZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMg
Y29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkw
OTQsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEs
IDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREZWZh
dWx0VmFsdWUobnNBU3RyaW5nICYgYURlZmF1bHRWYWx1ZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0RGVmYXVsdFZhbHVlKGNvbnN0IG5zQVN0cmluZyAmIGFEZWZhdWx0VmFsdWUpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Rm9ybShuc0lET01IVE1MRm9ybUVsZW1lbnQgKiAqYUZv
cm0pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QWNjZXNzS2V5KG5zQVN0cmluZyAmIGFB
Y2Nlc3NLZXkpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFjY2Vzc0tleShjb25zdCBuc0FT
dHJpbmcgJiBhQWNjZXNzS2V5KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbHMoUFJJ
bnQzMiAqYUNvbHMpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENvbHMoUFJJbnQzMiBhQ29s
cykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREaXNhYmxlZChQUkJvb2wgKmFEaXNhYmxl
ZCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RGlzYWJsZWQoUFJCb29sIGFEaXNhYmxlZCkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROYW1lKG5zQVN0cmluZyAmIGFOYW1lKSA9IDA7
CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXROYW1lKGNvbnN0IG5zQVN0cmluZyAmIGFOYW1lKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJlYWRPbmx5KFBSQm9vbCAqYVJlYWRPbmx5KSA9IDA7
CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRSZWFkT25seShQUkJvb2wgYVJlYWRPbmx5KSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJvd3MoUFJJbnQzMiAqYVJvd3MpID0gMDsKICB2aXJ0dWFs
IG5zcmVzdWx0IFNldFJvd3MoUFJJbnQzMiBhUm93cykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRUYWJJbmRleChQUkludDMyICphVGFiSW5kZXgpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0
IFNldFRhYkluZGV4KFBSSW50MzIgYVRhYkluZGV4KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldFR5cGUobnNBU3RyaW5nICYgYVR5cGUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
VmFsdWUobnNBU3RyaW5nICYgYVZhbHVlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRWYWx1
ZShjb25zdCBuc0FTdHJpbmcgJiBhVmFsdWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQmx1
cih2b2lkKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEZvY3VzKHZvaWQpID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgU2VsZWN0KHZvaWQpID0gMDsKCn07CiMgMjUwICJuc0RPTUNsYXNzSW5m
by5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTU5TSFRNTFRleHRB
cmVhRWxlbWVudC5oIiAxCiMgMTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NTlNI
VE1MVGV4dEFyZWFFbGVtZW50LmgiCmNsYXNzIG5zSUNvbnRyb2xsZXJzOwojIDI3ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvZG9tL25zSURPTU5TSFRNTFRleHRBcmVhRWxlbWVudC5oIgpjbGFzcyBu
c0lET01OU0hUTUxUZXh0QXJlYUVsZW1lbnQgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGlj
OgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlk
ID0gezB4Y2EwNjZiNDQsIDB4OWRkZiwgMHgxMWQzLCB7IDB4YmMsIDB4Y2MsIDB4MDAsIDB4NjAs
IDB4YjAsIDB4ZmMsIDB4NzYsIDB4YmQgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRDb250cm9sbGVycyhuc0lDb250cm9sbGVycyAqICphQ29udHJvbGxlcnMpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VGV4dExlbmd0aChQUkludDMyICphVGV4dExlbmd0aCkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTZWxlY3Rpb25TdGFydChQUkludDMyICphU2Vs
ZWN0aW9uU3RhcnQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNlbGVjdGlvblN0YXJ0KFBS
SW50MzIgYVNlbGVjdGlvblN0YXJ0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNlbGVj
dGlvbkVuZChQUkludDMyICphU2VsZWN0aW9uRW5kKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBT
ZXRTZWxlY3Rpb25FbmQoUFJJbnQzMiBhU2VsZWN0aW9uRW5kKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IFNldFNlbGVjdGlvblJhbmdlKFBSSW50MzIgc2VsZWN0aW9uU3RhcnQsIFBSSW50MzIg
c2VsZWN0aW9uRW5kKSA9IDA7Cgp9OwojIDI1MSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MVGl0bGVFbGVtZW50LmgiIDEKIyAz
NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MVGl0bGVFbGVtZW50LmgiCmNs
YXNzIG5zSURPTUhUTUxUaXRsZUVsZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQgewog
cHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJ
SUQgaWlkID0gezB4YTZjZjkwODksIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAs
IDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRUZXh0KG5zQVN0cmluZyAmIGFUZXh0KSA9IDA7CiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXRUZXh0KGNvbnN0IG5zQVN0cmluZyAmIGFUZXh0KSA9IDA7Cgp9OwojIDI1MiAibnNE
T01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01I
VE1MVUxpc3RFbGVtZW50LmgiIDEKIyAzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lE
T01IVE1MVUxpc3RFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxVTGlzdEVsZW1lbnQgOiBwdWJs
aWMgbnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdl
dElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwOTksIDB4MTViMywgMHgx
MWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07
IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb21wYWN0KFBSQm9vbCAqYUNv
bXBhY3QpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENvbXBhY3QoUFJCb29sIGFDb21wYWN0
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFR5cGUobnNBU3RyaW5nICYgYVR5cGUpID0g
MDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFR5cGUoY29uc3QgbnNBU3RyaW5nICYgYVR5cGUpID0g
MDsKCn07CiMgMjUzICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvZG9tL25zSURPTU5TVUlFdmVudC5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9kb20vbnNJRE9NTlNVSUV2ZW50LmgiCmNsYXNzIG5zSURPTU5TVUlFdmVudCA6IHB1YmxpYyBu
c0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0
YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTBjNCwgMHgxNWIzLCAweDExZDIsIHsgMHg5
MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlp
ZDt9CgogIGVudW0geyBTQ1JPTExfUEFHRV9VUCA9IC0zMjc2OCB9OwoKICBlbnVtIHsgU0NST0xM
X1BBR0VfRE9XTiA9IDMyNzY4IH07CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByZXZlbnREZWZh
dWx0KFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMYXllclgo
UFJJbnQzMiAqYUxheWVyWCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMYXllclkoUFJJ
bnQzMiAqYUxheWVyWSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQYWdlWChQUkludDMy
ICphUGFnZVgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UGFnZVkoUFJJbnQzMiAqYVBh
Z2VZKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFdoaWNoKFBSVWludDMyICphV2hpY2gp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UmFuZ2VQYXJlbnQobnNJRE9NTm9kZSAqICph
UmFuZ2VQYXJlbnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UmFuZ2VPZmZzZXQoUFJJ
bnQzMiAqYVJhbmdlT2Zmc2V0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENhbmNlbEJ1
YmJsZShQUkJvb2wgKmFDYW5jZWxCdWJibGUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENh
bmNlbEJ1YmJsZShQUkJvb2wgYUNhbmNlbEJ1YmJsZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRJc0NoYXIoUFJCb29sICphSXNDaGFyKSA9IDA7Cgp9OwojIDI1NCAibnNET01DbGFzc0lu
Zm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01DU1MyUHJvcGVy
dGllcy5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NQ1NTMlByb3Bl
cnRpZXMuaCIKY2xhc3MgbnNJRE9NQ1NTMlByb3BlcnRpZXMgOiBwdWJsaWMgbnNJU3VwcG9ydHMg
ewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3Qg
bnNJSUQgaWlkID0gezB4YTZjZjkwZDEsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4
MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRBemltdXRoKG5zQVN0cmluZyAmIGFBemltdXRoKSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXRBemltdXRoKGNvbnN0IG5zQVN0cmluZyAmIGFBemltdXRoKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEJhY2tncm91bmQobnNBU3RyaW5nICYgYUJhY2tncm91
bmQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEJhY2tncm91bmQoY29uc3QgbnNBU3RyaW5n
ICYgYUJhY2tncm91bmQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QmFja2dyb3VuZEF0
dGFjaG1lbnQobnNBU3RyaW5nICYgYUJhY2tncm91bmRBdHRhY2htZW50KSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRCYWNrZ3JvdW5kQXR0YWNobWVudChjb25zdCBuc0FTdHJpbmcgJiBhQmFj
a2dyb3VuZEF0dGFjaG1lbnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QmFja2dyb3Vu
ZENvbG9yKG5zQVN0cmluZyAmIGFCYWNrZ3JvdW5kQ29sb3IpID0gMDsKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldEJhY2tncm91bmRDb2xvcihjb25zdCBuc0FTdHJpbmcgJiBhQmFja2dyb3VuZENvbG9y
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEJhY2tncm91bmRJbWFnZShuc0FTdHJpbmcg
JiBhQmFja2dyb3VuZEltYWdlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRCYWNrZ3JvdW5k
SW1hZ2UoY29uc3QgbnNBU3RyaW5nICYgYUJhY2tncm91bmRJbWFnZSkgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRCYWNrZ3JvdW5kUG9zaXRpb24obnNBU3RyaW5nICYgYUJhY2tncm91bmRQ
b3NpdGlvbikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QmFja2dyb3VuZFBvc2l0aW9uKGNv
bnN0IG5zQVN0cmluZyAmIGFCYWNrZ3JvdW5kUG9zaXRpb24pID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0QmFja2dyb3VuZFJlcGVhdChuc0FTdHJpbmcgJiBhQmFja2dyb3VuZFJlcGVhdCkg
PSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QmFja2dyb3VuZFJlcGVhdChjb25zdCBuc0FTdHJp
bmcgJiBhQmFja2dyb3VuZFJlcGVhdCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRCb3Jk
ZXIobnNBU3RyaW5nICYgYUJvcmRlcikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Qm9yZGVy
KGNvbnN0IG5zQVN0cmluZyAmIGFCb3JkZXIpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
Qm9yZGVyQ29sbGFwc2UobnNBU3RyaW5nICYgYUJvcmRlckNvbGxhcHNlKSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRCb3JkZXJDb2xsYXBzZShjb25zdCBuc0FTdHJpbmcgJiBhQm9yZGVyQ29s
bGFwc2UpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Qm9yZGVyQ29sb3IobnNBU3RyaW5n
ICYgYUJvcmRlckNvbG9yKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRCb3JkZXJDb2xvcihj
b25zdCBuc0FTdHJpbmcgJiBhQm9yZGVyQ29sb3IpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0Qm9yZGVyU3BhY2luZyhuc0FTdHJpbmcgJiBhQm9yZGVyU3BhY2luZykgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0Qm9yZGVyU3BhY2luZyhjb25zdCBuc0FTdHJpbmcgJiBhQm9yZGVyU3Bh
Y2luZykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRCb3JkZXJTdHlsZShuc0FTdHJpbmcg
JiBhQm9yZGVyU3R5bGUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEJvcmRlclN0eWxlKGNv
bnN0IG5zQVN0cmluZyAmIGFCb3JkZXJTdHlsZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRCb3JkZXJUb3AobnNBU3RyaW5nICYgYUJvcmRlclRvcCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0Qm9yZGVyVG9wKGNvbnN0IG5zQVN0cmluZyAmIGFCb3JkZXJUb3ApID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0Qm9yZGVyUmlnaHQobnNBU3RyaW5nICYgYUJvcmRlclJpZ2h0KSA9
IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRCb3JkZXJSaWdodChjb25zdCBuc0FTdHJpbmcgJiBh
Qm9yZGVyUmlnaHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Qm9yZGVyQm90dG9tKG5z
QVN0cmluZyAmIGFCb3JkZXJCb3R0b20pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEJvcmRl
ckJvdHRvbShjb25zdCBuc0FTdHJpbmcgJiBhQm9yZGVyQm90dG9tKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldEJvcmRlckxlZnQobnNBU3RyaW5nICYgYUJvcmRlckxlZnQpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldEJvcmRlckxlZnQoY29uc3QgbnNBU3RyaW5nICYgYUJvcmRlckxl
ZnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Qm9yZGVyVG9wQ29sb3IobnNBU3RyaW5n
ICYgYUJvcmRlclRvcENvbG9yKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRCb3JkZXJUb3BD
b2xvcihjb25zdCBuc0FTdHJpbmcgJiBhQm9yZGVyVG9wQ29sb3IpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0Qm9yZGVyUmlnaHRDb2xvcihuc0FTdHJpbmcgJiBhQm9yZGVyUmlnaHRDb2xv
cikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Qm9yZGVyUmlnaHRDb2xvcihjb25zdCBuc0FT
dHJpbmcgJiBhQm9yZGVyUmlnaHRDb2xvcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRC
b3JkZXJCb3R0b21Db2xvcihuc0FTdHJpbmcgJiBhQm9yZGVyQm90dG9tQ29sb3IpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldEJvcmRlckJvdHRvbUNvbG9yKGNvbnN0IG5zQVN0cmluZyAmIGFC
b3JkZXJCb3R0b21Db2xvcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRCb3JkZXJMZWZ0
Q29sb3IobnNBU3RyaW5nICYgYUJvcmRlckxlZnRDb2xvcikgPSAwOwogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0Qm9yZGVyTGVmdENvbG9yKGNvbnN0IG5zQVN0cmluZyAmIGFCb3JkZXJMZWZ0Q29sb3Ip
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Qm9yZGVyVG9wU3R5bGUobnNBU3RyaW5nICYg
YUJvcmRlclRvcFN0eWxlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRCb3JkZXJUb3BTdHls
ZShjb25zdCBuc0FTdHJpbmcgJiBhQm9yZGVyVG9wU3R5bGUpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0Qm9yZGVyUmlnaHRTdHlsZShuc0FTdHJpbmcgJiBhQm9yZGVyUmlnaHRTdHlsZSkg
PSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Qm9yZGVyUmlnaHRTdHlsZShjb25zdCBuc0FTdHJp
bmcgJiBhQm9yZGVyUmlnaHRTdHlsZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRCb3Jk
ZXJCb3R0b21TdHlsZShuc0FTdHJpbmcgJiBhQm9yZGVyQm90dG9tU3R5bGUpID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldEJvcmRlckJvdHRvbVN0eWxlKGNvbnN0IG5zQVN0cmluZyAmIGFCb3Jk
ZXJCb3R0b21TdHlsZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRCb3JkZXJMZWZ0U3R5
bGUobnNBU3RyaW5nICYgYUJvcmRlckxlZnRTdHlsZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQg
U2V0Qm9yZGVyTGVmdFN0eWxlKGNvbnN0IG5zQVN0cmluZyAmIGFCb3JkZXJMZWZ0U3R5bGUpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Qm9yZGVyVG9wV2lkdGgobnNBU3RyaW5nICYgYUJv
cmRlclRvcFdpZHRoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRCb3JkZXJUb3BXaWR0aChj
b25zdCBuc0FTdHJpbmcgJiBhQm9yZGVyVG9wV2lkdGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0Qm9yZGVyUmlnaHRXaWR0aChuc0FTdHJpbmcgJiBhQm9yZGVyUmlnaHRXaWR0aCkgPSAw
OwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Qm9yZGVyUmlnaHRXaWR0aChjb25zdCBuc0FTdHJpbmcg
JiBhQm9yZGVyUmlnaHRXaWR0aCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRCb3JkZXJC
b3R0b21XaWR0aChuc0FTdHJpbmcgJiBhQm9yZGVyQm90dG9tV2lkdGgpID0gMDsKICB2aXJ0dWFs
IG5zcmVzdWx0IFNldEJvcmRlckJvdHRvbVdpZHRoKGNvbnN0IG5zQVN0cmluZyAmIGFCb3JkZXJC
b3R0b21XaWR0aCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRCb3JkZXJMZWZ0V2lkdGgo
bnNBU3RyaW5nICYgYUJvcmRlckxlZnRXaWR0aCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0
Qm9yZGVyTGVmdFdpZHRoKGNvbnN0IG5zQVN0cmluZyAmIGFCb3JkZXJMZWZ0V2lkdGgpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Qm9yZGVyV2lkdGgobnNBU3RyaW5nICYgYUJvcmRlcldp
ZHRoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRCb3JkZXJXaWR0aChjb25zdCBuc0FTdHJp
bmcgJiBhQm9yZGVyV2lkdGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Qm90dG9tKG5z
QVN0cmluZyAmIGFCb3R0b20pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEJvdHRvbShjb25z
dCBuc0FTdHJpbmcgJiBhQm90dG9tKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENhcHRp
b25TaWRlKG5zQVN0cmluZyAmIGFDYXB0aW9uU2lkZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQg
U2V0Q2FwdGlvblNpZGUoY29uc3QgbnNBU3RyaW5nICYgYUNhcHRpb25TaWRlKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldENsZWFyKG5zQVN0cmluZyAmIGFDbGVhcikgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0Q2xlYXIoY29uc3QgbnNBU3RyaW5nICYgYUNsZWFyKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldENsaXAobnNBU3RyaW5nICYgYUNsaXApID0gMDsKICB2aXJ0dWFs
IG5zcmVzdWx0IFNldENsaXAoY29uc3QgbnNBU3RyaW5nICYgYUNsaXApID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0Q29sb3IobnNBU3RyaW5nICYgYUNvbG9yKSA9IDA7CiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXRDb2xvcihjb25zdCBuc0FTdHJpbmcgJiBhQ29sb3IpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0Q29udGVudChuc0FTdHJpbmcgJiBhQ29udGVudCkgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0Q29udGVudChjb25zdCBuc0FTdHJpbmcgJiBhQ29udGVudCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb3VudGVySW5jcmVtZW50KG5zQVN0cmluZyAmIGFDb3Vu
dGVySW5jcmVtZW50KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDb3VudGVySW5jcmVtZW50
KGNvbnN0IG5zQVN0cmluZyAmIGFDb3VudGVySW5jcmVtZW50KSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldENvdW50ZXJSZXNldChuc0FTdHJpbmcgJiBhQ291bnRlclJlc2V0KSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXRDb3VudGVyUmVzZXQoY29uc3QgbnNBU3RyaW5nICYgYUNvdW50
ZXJSZXNldCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDdWUobnNBU3RyaW5nICYgYUN1
ZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q3VlKGNvbnN0IG5zQVN0cmluZyAmIGFDdWUp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q3VlQWZ0ZXIobnNBU3RyaW5nICYgYUN1ZUFm
dGVyKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDdWVBZnRlcihjb25zdCBuc0FTdHJpbmcg
JiBhQ3VlQWZ0ZXIpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q3VlQmVmb3JlKG5zQVN0
cmluZyAmIGFDdWVCZWZvcmUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEN1ZUJlZm9yZShj
b25zdCBuc0FTdHJpbmcgJiBhQ3VlQmVmb3JlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dEN1cnNvcihuc0FTdHJpbmcgJiBhQ3Vyc29yKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRD
dXJzb3IoY29uc3QgbnNBU3RyaW5nICYgYUN1cnNvcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXREaXJlY3Rpb24obnNBU3RyaW5nICYgYURpcmVjdGlvbikgPSAwOwogIHZpcnR1YWwgbnNy
ZXN1bHQgU2V0RGlyZWN0aW9uKGNvbnN0IG5zQVN0cmluZyAmIGFEaXJlY3Rpb24pID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0RGlzcGxheShuc0FTdHJpbmcgJiBhRGlzcGxheSkgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0RGlzcGxheShjb25zdCBuc0FTdHJpbmcgJiBhRGlzcGxheSkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRFbGV2YXRpb24obnNBU3RyaW5nICYgYUVsZXZh
dGlvbikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RWxldmF0aW9uKGNvbnN0IG5zQVN0cmlu
ZyAmIGFFbGV2YXRpb24pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RW1wdHlDZWxscyhu
c0FTdHJpbmcgJiBhRW1wdHlDZWxscykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RW1wdHlD
ZWxscyhjb25zdCBuc0FTdHJpbmcgJiBhRW1wdHlDZWxscykgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRDc3NGbG9hdChuc0FTdHJpbmcgJiBhQ3NzRmxvYXQpID0gMDsKICB2aXJ0dWFsIG5z
cmVzdWx0IFNldENzc0Zsb2F0KGNvbnN0IG5zQVN0cmluZyAmIGFDc3NGbG9hdCkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRGb250KG5zQVN0cmluZyAmIGFGb250KSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRGb250KGNvbnN0IG5zQVN0cmluZyAmIGFGb250KSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldEZvbnRGYW1pbHkobnNBU3RyaW5nICYgYUZvbnRGYW1pbHkpID0gMDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldEZvbnRGYW1pbHkoY29uc3QgbnNBU3RyaW5nICYgYUZvbnRG
YW1pbHkpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Rm9udFNpemUobnNBU3RyaW5nICYg
YUZvbnRTaXplKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRGb250U2l6ZShjb25zdCBuc0FT
dHJpbmcgJiBhRm9udFNpemUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Rm9udFNpemVB
ZGp1c3QobnNBU3RyaW5nICYgYUZvbnRTaXplQWRqdXN0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRGb250U2l6ZUFkanVzdChjb25zdCBuc0FTdHJpbmcgJiBhRm9udFNpemVBZGp1c3QpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Rm9udFN0cmV0Y2gobnNBU3RyaW5nICYgYUZvbnRT
dHJldGNoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRGb250U3RyZXRjaChjb25zdCBuc0FT
dHJpbmcgJiBhRm9udFN0cmV0Y2gpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Rm9udFN0
eWxlKG5zQVN0cmluZyAmIGFGb250U3R5bGUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEZv
bnRTdHlsZShjb25zdCBuc0FTdHJpbmcgJiBhRm9udFN0eWxlKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldEZvbnRWYXJpYW50KG5zQVN0cmluZyAmIGFGb250VmFyaWFudCkgPSAwOwogIHZp
cnR1YWwgbnNyZXN1bHQgU2V0Rm9udFZhcmlhbnQoY29uc3QgbnNBU3RyaW5nICYgYUZvbnRWYXJp
YW50KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEZvbnRXZWlnaHQobnNBU3RyaW5nICYg
YUZvbnRXZWlnaHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEZvbnRXZWlnaHQoY29uc3Qg
bnNBU3RyaW5nICYgYUZvbnRXZWlnaHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SGVp
Z2h0KG5zQVN0cmluZyAmIGFIZWlnaHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEhlaWdo
dChjb25zdCBuc0FTdHJpbmcgJiBhSGVpZ2h0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dExlZnQobnNBU3RyaW5nICYgYUxlZnQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldExlZnQo
Y29uc3QgbnNBU3RyaW5nICYgYUxlZnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGV0
dGVyU3BhY2luZyhuc0FTdHJpbmcgJiBhTGV0dGVyU3BhY2luZykgPSAwOwogIHZpcnR1YWwgbnNy
ZXN1bHQgU2V0TGV0dGVyU3BhY2luZyhjb25zdCBuc0FTdHJpbmcgJiBhTGV0dGVyU3BhY2luZykg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMaW5lSGVpZ2h0KG5zQVN0cmluZyAmIGFMaW5l
SGVpZ2h0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRMaW5lSGVpZ2h0KGNvbnN0IG5zQVN0
cmluZyAmIGFMaW5lSGVpZ2h0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldExpc3RTdHls
ZShuc0FTdHJpbmcgJiBhTGlzdFN0eWxlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRMaXN0
U3R5bGUoY29uc3QgbnNBU3RyaW5nICYgYUxpc3RTdHlsZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRMaXN0U3R5bGVJbWFnZShuc0FTdHJpbmcgJiBhTGlzdFN0eWxlSW1hZ2UpID0gMDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldExpc3RTdHlsZUltYWdlKGNvbnN0IG5zQVN0cmluZyAmIGFM
aXN0U3R5bGVJbWFnZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMaXN0U3R5bGVQb3Np
dGlvbihuc0FTdHJpbmcgJiBhTGlzdFN0eWxlUG9zaXRpb24pID0gMDsKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldExpc3RTdHlsZVBvc2l0aW9uKGNvbnN0IG5zQVN0cmluZyAmIGFMaXN0U3R5bGVQb3Np
dGlvbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMaXN0U3R5bGVUeXBlKG5zQVN0cmlu
ZyAmIGFMaXN0U3R5bGVUeXBlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRMaXN0U3R5bGVU
eXBlKGNvbnN0IG5zQVN0cmluZyAmIGFMaXN0U3R5bGVUeXBlKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldE1hcmdpbihuc0FTdHJpbmcgJiBhTWFyZ2luKSA9IDA7CiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXRNYXJnaW4oY29uc3QgbnNBU3RyaW5nICYgYU1hcmdpbikgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRNYXJnaW5Ub3AobnNBU3RyaW5nICYgYU1hcmdpblRvcCkgPSAwOwogIHZp
cnR1YWwgbnNyZXN1bHQgU2V0TWFyZ2luVG9wKGNvbnN0IG5zQVN0cmluZyAmIGFNYXJnaW5Ub3Ap
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TWFyZ2luUmlnaHQobnNBU3RyaW5nICYgYU1h
cmdpblJpZ2h0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRNYXJnaW5SaWdodChjb25zdCBu
c0FTdHJpbmcgJiBhTWFyZ2luUmlnaHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TWFy
Z2luQm90dG9tKG5zQVN0cmluZyAmIGFNYXJnaW5Cb3R0b20pID0gMDsKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldE1hcmdpbkJvdHRvbShjb25zdCBuc0FTdHJpbmcgJiBhTWFyZ2luQm90dG9tKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1hcmdpbkxlZnQobnNBU3RyaW5nICYgYU1hcmdpbkxl
ZnQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1hcmdpbkxlZnQoY29uc3QgbnNBU3RyaW5n
ICYgYU1hcmdpbkxlZnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TWFya2VyT2Zmc2V0
KG5zQVN0cmluZyAmIGFNYXJrZXJPZmZzZXQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1h
cmtlck9mZnNldChjb25zdCBuc0FTdHJpbmcgJiBhTWFya2VyT2Zmc2V0KSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldE1hcmtzKG5zQVN0cmluZyAmIGFNYXJrcykgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0TWFya3MoY29uc3QgbnNBU3RyaW5nICYgYU1hcmtzKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldE1heEhlaWdodChuc0FTdHJpbmcgJiBhTWF4SGVpZ2h0KSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXRNYXhIZWlnaHQoY29uc3QgbnNBU3RyaW5nICYgYU1heEhlaWdo
dCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNYXhXaWR0aChuc0FTdHJpbmcgJiBhTWF4
V2lkdGgpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1heFdpZHRoKGNvbnN0IG5zQVN0cmlu
ZyAmIGFNYXhXaWR0aCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNaW5IZWlnaHQobnNB
U3RyaW5nICYgYU1pbkhlaWdodCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TWluSGVpZ2h0
KGNvbnN0IG5zQVN0cmluZyAmIGFNaW5IZWlnaHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0TWluV2lkdGgobnNBU3RyaW5nICYgYU1pbldpZHRoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRNaW5XaWR0aChjb25zdCBuc0FTdHJpbmcgJiBhTWluV2lkdGgpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0T3JwaGFucyhuc0FTdHJpbmcgJiBhT3JwaGFucykgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0T3JwaGFucyhjb25zdCBuc0FTdHJpbmcgJiBhT3JwaGFucykgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRPdXRsaW5lKG5zQVN0cmluZyAmIGFPdXRsaW5lKSA9IDA7
CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRPdXRsaW5lKGNvbnN0IG5zQVN0cmluZyAmIGFPdXRsaW5l
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE91dGxpbmVDb2xvcihuc0FTdHJpbmcgJiBh
T3V0bGluZUNvbG9yKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRPdXRsaW5lQ29sb3IoY29u
c3QgbnNBU3RyaW5nICYgYU91dGxpbmVDb2xvcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRPdXRsaW5lU3R5bGUobnNBU3RyaW5nICYgYU91dGxpbmVTdHlsZSkgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0T3V0bGluZVN0eWxlKGNvbnN0IG5zQVN0cmluZyAmIGFPdXRsaW5lU3R5bGUp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0T3V0bGluZVdpZHRoKG5zQVN0cmluZyAmIGFP
dXRsaW5lV2lkdGgpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE91dGxpbmVXaWR0aChjb25z
dCBuc0FTdHJpbmcgJiBhT3V0bGluZVdpZHRoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dE92ZXJmbG93KG5zQVN0cmluZyAmIGFPdmVyZmxvdykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQg
U2V0T3ZlcmZsb3coY29uc3QgbnNBU3RyaW5nICYgYU92ZXJmbG93KSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldFBhZGRpbmcobnNBU3RyaW5nICYgYVBhZGRpbmcpID0gMDsKICB2aXJ0dWFs
IG5zcmVzdWx0IFNldFBhZGRpbmcoY29uc3QgbnNBU3RyaW5nICYgYVBhZGRpbmcpID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0UGFkZGluZ1RvcChuc0FTdHJpbmcgJiBhUGFkZGluZ1RvcCkg
PSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UGFkZGluZ1RvcChjb25zdCBuc0FTdHJpbmcgJiBh
UGFkZGluZ1RvcCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQYWRkaW5nUmlnaHQobnNB
U3RyaW5nICYgYVBhZGRpbmdSaWdodCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UGFkZGlu
Z1JpZ2h0KGNvbnN0IG5zQVN0cmluZyAmIGFQYWRkaW5nUmlnaHQpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0UGFkZGluZ0JvdHRvbShuc0FTdHJpbmcgJiBhUGFkZGluZ0JvdHRvbSkgPSAw
OwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UGFkZGluZ0JvdHRvbShjb25zdCBuc0FTdHJpbmcgJiBh
UGFkZGluZ0JvdHRvbSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQYWRkaW5nTGVmdChu
c0FTdHJpbmcgJiBhUGFkZGluZ0xlZnQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFBhZGRp
bmdMZWZ0KGNvbnN0IG5zQVN0cmluZyAmIGFQYWRkaW5nTGVmdCkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRQYWdlKG5zQVN0cmluZyAmIGFQYWdlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRQYWdlKGNvbnN0IG5zQVN0cmluZyAmIGFQYWdlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldFBhZ2VCcmVha0FmdGVyKG5zQVN0cmluZyAmIGFQYWdlQnJlYWtBZnRlcikgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0UGFnZUJyZWFrQWZ0ZXIoY29uc3QgbnNBU3RyaW5nICYgYVBh
Z2VCcmVha0FmdGVyKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBhZ2VCcmVha0JlZm9y
ZShuc0FTdHJpbmcgJiBhUGFnZUJyZWFrQmVmb3JlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBT
ZXRQYWdlQnJlYWtCZWZvcmUoY29uc3QgbnNBU3RyaW5nICYgYVBhZ2VCcmVha0JlZm9yZSkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQYWdlQnJlYWtJbnNpZGUobnNBU3RyaW5nICYgYVBh
Z2VCcmVha0luc2lkZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UGFnZUJyZWFrSW5zaWRl
KGNvbnN0IG5zQVN0cmluZyAmIGFQYWdlQnJlYWtJbnNpZGUpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0UGF1c2UobnNBU3RyaW5nICYgYVBhdXNlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRQYXVzZShjb25zdCBuc0FTdHJpbmcgJiBhUGF1c2UpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0UGF1c2VBZnRlcihuc0FTdHJpbmcgJiBhUGF1c2VBZnRlcikgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0UGF1c2VBZnRlcihjb25zdCBuc0FTdHJpbmcgJiBhUGF1c2VBZnRlcikg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQYXVzZUJlZm9yZShuc0FTdHJpbmcgJiBhUGF1
c2VCZWZvcmUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFBhdXNlQmVmb3JlKGNvbnN0IG5z
QVN0cmluZyAmIGFQYXVzZUJlZm9yZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQaXRj
aChuc0FTdHJpbmcgJiBhUGl0Y2gpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFBpdGNoKGNv
bnN0IG5zQVN0cmluZyAmIGFQaXRjaCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQaXRj
aFJhbmdlKG5zQVN0cmluZyAmIGFQaXRjaFJhbmdlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBT
ZXRQaXRjaFJhbmdlKGNvbnN0IG5zQVN0cmluZyAmIGFQaXRjaFJhbmdlKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldFBsYXlEdXJpbmcobnNBU3RyaW5nICYgYVBsYXlEdXJpbmcpID0gMDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldFBsYXlEdXJpbmcoY29uc3QgbnNBU3RyaW5nICYgYVBsYXlE
dXJpbmcpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UG9zaXRpb24obnNBU3RyaW5nICYg
YVBvc2l0aW9uKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRQb3NpdGlvbihjb25zdCBuc0FT
dHJpbmcgJiBhUG9zaXRpb24pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UXVvdGVzKG5z
QVN0cmluZyAmIGFRdW90ZXMpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFF1b3Rlcyhjb25z
dCBuc0FTdHJpbmcgJiBhUXVvdGVzKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJpY2hu
ZXNzKG5zQVN0cmluZyAmIGFSaWNobmVzcykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Umlj
aG5lc3MoY29uc3QgbnNBU3RyaW5nICYgYVJpY2huZXNzKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldFJpZ2h0KG5zQVN0cmluZyAmIGFSaWdodCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQg
U2V0UmlnaHQoY29uc3QgbnNBU3RyaW5nICYgYVJpZ2h0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldFNpemUobnNBU3RyaW5nICYgYVNpemUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dFNpemUoY29uc3QgbnNBU3RyaW5nICYgYVNpemUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0U3BlYWsobnNBU3RyaW5nICYgYVNwZWFrKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRT
cGVhayhjb25zdCBuc0FTdHJpbmcgJiBhU3BlYWspID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0U3BlYWtIZWFkZXIobnNBU3RyaW5nICYgYVNwZWFrSGVhZGVyKSA9IDA7CiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXRTcGVha0hlYWRlcihjb25zdCBuc0FTdHJpbmcgJiBhU3BlYWtIZWFkZXIpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U3BlYWtOdW1lcmFsKG5zQVN0cmluZyAmIGFTcGVh
a051bWVyYWwpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNwZWFrTnVtZXJhbChjb25zdCBu
c0FTdHJpbmcgJiBhU3BlYWtOdW1lcmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNw
ZWFrUHVuY3R1YXRpb24obnNBU3RyaW5nICYgYVNwZWFrUHVuY3R1YXRpb24pID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldFNwZWFrUHVuY3R1YXRpb24oY29uc3QgbnNBU3RyaW5nICYgYVNwZWFr
UHVuY3R1YXRpb24pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U3BlZWNoUmF0ZShuc0FT
dHJpbmcgJiBhU3BlZWNoUmF0ZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0U3BlZWNoUmF0
ZShjb25zdCBuc0FTdHJpbmcgJiBhU3BlZWNoUmF0ZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRTdHJlc3MobnNBU3RyaW5nICYgYVN0cmVzcykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQg
U2V0U3RyZXNzKGNvbnN0IG5zQVN0cmluZyAmIGFTdHJlc3MpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0VGFibGVMYXlvdXQobnNBU3RyaW5nICYgYVRhYmxlTGF5b3V0KSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXRUYWJsZUxheW91dChjb25zdCBuc0FTdHJpbmcgJiBhVGFibGVMYXlv
dXQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VGV4dEFsaWduKG5zQVN0cmluZyAmIGFU
ZXh0QWxpZ24pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFRleHRBbGlnbihjb25zdCBuc0FT
dHJpbmcgJiBhVGV4dEFsaWduKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFRleHREZWNv
cmF0aW9uKG5zQVN0cmluZyAmIGFUZXh0RGVjb3JhdGlvbikgPSAwOwogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0VGV4dERlY29yYXRpb24oY29uc3QgbnNBU3RyaW5nICYgYVRleHREZWNvcmF0aW9uKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFRleHRJbmRlbnQobnNBU3RyaW5nICYgYVRleHRJ
bmRlbnQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFRleHRJbmRlbnQoY29uc3QgbnNBU3Ry
aW5nICYgYVRleHRJbmRlbnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VGV4dFNoYWRv
dyhuc0FTdHJpbmcgJiBhVGV4dFNoYWRvdykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VGV4
dFNoYWRvdyhjb25zdCBuc0FTdHJpbmcgJiBhVGV4dFNoYWRvdykgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRUZXh0VHJhbnNmb3JtKG5zQVN0cmluZyAmIGFUZXh0VHJhbnNmb3JtKSA9IDA7
CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRUZXh0VHJhbnNmb3JtKGNvbnN0IG5zQVN0cmluZyAmIGFU
ZXh0VHJhbnNmb3JtKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFRvcChuc0FTdHJpbmcg
JiBhVG9wKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRUb3AoY29uc3QgbnNBU3RyaW5nICYg
YVRvcCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRVbmljb2RlQmlkaShuc0FTdHJpbmcg
JiBhVW5pY29kZUJpZGkpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFVuaWNvZGVCaWRpKGNv
bnN0IG5zQVN0cmluZyAmIGFVbmljb2RlQmlkaSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRWZXJ0aWNhbEFsaWduKG5zQVN0cmluZyAmIGFWZXJ0aWNhbEFsaWduKSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRWZXJ0aWNhbEFsaWduKGNvbnN0IG5zQVN0cmluZyAmIGFWZXJ0aWNhbEFs
aWduKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFZpc2liaWxpdHkobnNBU3RyaW5nICYg
YVZpc2liaWxpdHkpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFZpc2liaWxpdHkoY29uc3Qg
bnNBU3RyaW5nICYgYVZpc2liaWxpdHkpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Vm9p
Y2VGYW1pbHkobnNBU3RyaW5nICYgYVZvaWNlRmFtaWx5KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRWb2ljZUZhbWlseShjb25zdCBuc0FTdHJpbmcgJiBhVm9pY2VGYW1pbHkpID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0Vm9sdW1lKG5zQVN0cmluZyAmIGFWb2x1bWUpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldFZvbHVtZShjb25zdCBuc0FTdHJpbmcgJiBhVm9sdW1lKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFdoaXRlU3BhY2UobnNBU3RyaW5nICYgYVdoaXRlU3Bh
Y2UpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFdoaXRlU3BhY2UoY29uc3QgbnNBU3RyaW5n
ICYgYVdoaXRlU3BhY2UpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0V2lkb3dzKG5zQVN0
cmluZyAmIGFXaWRvd3MpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFdpZG93cyhjb25zdCBu
c0FTdHJpbmcgJiBhV2lkb3dzKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFdpZHRoKG5z
QVN0cmluZyAmIGFXaWR0aCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0V2lkdGgoY29uc3Qg
bnNBU3RyaW5nICYgYVdpZHRoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFdvcmRTcGFj
aW5nKG5zQVN0cmluZyAmIGFXb3JkU3BhY2luZykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0
V29yZFNwYWNpbmcoY29uc3QgbnNBU3RyaW5nICYgYVdvcmRTcGFjaW5nKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldFpJbmRleChuc0FTdHJpbmcgJiBhWkluZGV4KSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRaSW5kZXgoY29uc3QgbnNBU3RyaW5nICYgYVpJbmRleCkgPSAwOwoKfTsK
IyAyNTIwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNTUzJQcm9wZXJ0aWVzLmgi
CmNsYXNzIG5zSURPTU5TQ1NTMlByb3BlcnRpZXMgOiBwdWJsaWMgbnNJRE9NQ1NTMlByb3BlcnRp
ZXMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29u
c3QgbnNJSUQgaWlkID0gezB4ODgzNTRjMWEsIDB4ZDYyMywgMHg0NGE5LCB7IDB4YTgsIDB4OTQs
IDB4NGUsIDB4ZTAsIDB4MWIsIDB4YTIsIDB4OTYsIDB4MTUgfX07IHJldHVybiBpaWQ7fQoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRNb3pBcHBlYXJhbmNlKG5zQVN0cmluZyAmIGFNb3pBcHBlYXJh
bmNlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRNb3pBcHBlYXJhbmNlKGNvbnN0IG5zQVN0
cmluZyAmIGFNb3pBcHBlYXJhbmNlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1vekJh
Y2tncm91bmRDbGlwKG5zQVN0cmluZyAmIGFNb3pCYWNrZ3JvdW5kQ2xpcCkgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0TW96QmFja2dyb3VuZENsaXAoY29uc3QgbnNBU3RyaW5nICYgYU1vekJh
Y2tncm91bmRDbGlwKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1vekJhY2tncm91bmRJ
bmxpbmVQb2xpY3kobnNBU3RyaW5nICYgYU1vekJhY2tncm91bmRJbmxpbmVQb2xpY3kpID0gMDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1vekJhY2tncm91bmRJbmxpbmVQb2xpY3koY29uc3QgbnNB
U3RyaW5nICYgYU1vekJhY2tncm91bmRJbmxpbmVQb2xpY3kpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0TW96QmFja2dyb3VuZE9yaWdpbihuc0FTdHJpbmcgJiBhTW96QmFja2dyb3VuZE9y
aWdpbikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TW96QmFja2dyb3VuZE9yaWdpbihjb25z
dCBuc0FTdHJpbmcgJiBhTW96QmFja2dyb3VuZE9yaWdpbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRNb3pCaW5kaW5nKG5zQVN0cmluZyAmIGFNb3pCaW5kaW5nKSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRNb3pCaW5kaW5nKGNvbnN0IG5zQVN0cmluZyAmIGFNb3pCaW5kaW5nKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1vekJvcmRlckJvdHRvbUNvbG9ycyhuc0FTdHJp
bmcgJiBhTW96Qm9yZGVyQm90dG9tQ29sb3JzKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRN
b3pCb3JkZXJCb3R0b21Db2xvcnMoY29uc3QgbnNBU3RyaW5nICYgYU1vekJvcmRlckJvdHRvbUNv
bG9ycykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNb3pCb3JkZXJMZWZ0Q29sb3JzKG5z
QVN0cmluZyAmIGFNb3pCb3JkZXJMZWZ0Q29sb3JzKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBT
ZXRNb3pCb3JkZXJMZWZ0Q29sb3JzKGNvbnN0IG5zQVN0cmluZyAmIGFNb3pCb3JkZXJMZWZ0Q29s
b3JzKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1vekJvcmRlclJpZ2h0Q29sb3JzKG5z
QVN0cmluZyAmIGFNb3pCb3JkZXJSaWdodENvbG9ycykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQg
U2V0TW96Qm9yZGVyUmlnaHRDb2xvcnMoY29uc3QgbnNBU3RyaW5nICYgYU1vekJvcmRlclJpZ2h0
Q29sb3JzKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1vekJvcmRlclRvcENvbG9ycyhu
c0FTdHJpbmcgJiBhTW96Qm9yZGVyVG9wQ29sb3JzKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBT
ZXRNb3pCb3JkZXJUb3BDb2xvcnMoY29uc3QgbnNBU3RyaW5nICYgYU1vekJvcmRlclRvcENvbG9y
cykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNb3pCb3JkZXJSYWRpdXMobnNBU3RyaW5n
ICYgYU1vekJvcmRlclJhZGl1cykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TW96Qm9yZGVy
UmFkaXVzKGNvbnN0IG5zQVN0cmluZyAmIGFNb3pCb3JkZXJSYWRpdXMpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0TW96Qm9yZGVyUmFkaXVzVG9wbGVmdChuc0FTdHJpbmcgJiBhTW96Qm9y
ZGVyUmFkaXVzVG9wbGVmdCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TW96Qm9yZGVyUmFk
aXVzVG9wbGVmdChjb25zdCBuc0FTdHJpbmcgJiBhTW96Qm9yZGVyUmFkaXVzVG9wbGVmdCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNb3pCb3JkZXJSYWRpdXNUb3ByaWdodChuc0FTdHJp
bmcgJiBhTW96Qm9yZGVyUmFkaXVzVG9wcmlnaHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dE1vekJvcmRlclJhZGl1c1RvcHJpZ2h0KGNvbnN0IG5zQVN0cmluZyAmIGFNb3pCb3JkZXJSYWRp
dXNUb3ByaWdodCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNb3pCb3JkZXJSYWRpdXNC
b3R0b21sZWZ0KG5zQVN0cmluZyAmIGFNb3pCb3JkZXJSYWRpdXNCb3R0b21sZWZ0KSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXRNb3pCb3JkZXJSYWRpdXNCb3R0b21sZWZ0KGNvbnN0IG5zQVN0
cmluZyAmIGFNb3pCb3JkZXJSYWRpdXNCb3R0b21sZWZ0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldE1vekJvcmRlclJhZGl1c0JvdHRvbXJpZ2h0KG5zQVN0cmluZyAmIGFNb3pCb3JkZXJS
YWRpdXNCb3R0b21yaWdodCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TW96Qm9yZGVyUmFk
aXVzQm90dG9tcmlnaHQoY29uc3QgbnNBU3RyaW5nICYgYU1vekJvcmRlclJhZGl1c0JvdHRvbXJp
Z2h0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1vekJveEFsaWduKG5zQVN0cmluZyAm
IGFNb3pCb3hBbGlnbikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TW96Qm94QWxpZ24oY29u
c3QgbnNBU3RyaW5nICYgYU1vekJveEFsaWduKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dE1vekJveERpcmVjdGlvbihuc0FTdHJpbmcgJiBhTW96Qm94RGlyZWN0aW9uKSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXRNb3pCb3hEaXJlY3Rpb24oY29uc3QgbnNBU3RyaW5nICYgYU1vekJv
eERpcmVjdGlvbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNb3pCb3hGbGV4KG5zQVN0
cmluZyAmIGFNb3pCb3hGbGV4KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRNb3pCb3hGbGV4
KGNvbnN0IG5zQVN0cmluZyAmIGFNb3pCb3hGbGV4KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldE1vekJveEZsZXhHcm91cChuc0FTdHJpbmcgJiBhTW96Qm94RmxleEdyb3VwKSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXRNb3pCb3hGbGV4R3JvdXAoY29uc3QgbnNBU3RyaW5nICYgYU1v
ekJveEZsZXhHcm91cCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNb3pCb3hPcmllbnQo
bnNBU3RyaW5nICYgYU1vekJveE9yaWVudCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TW96
Qm94T3JpZW50KGNvbnN0IG5zQVN0cmluZyAmIGFNb3pCb3hPcmllbnQpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0TW96Qm94T3JkaW5hbEdyb3VwKG5zQVN0cmluZyAmIGFNb3pCb3hPcmRp
bmFsR3JvdXApID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1vekJveE9yZGluYWxHcm91cChj
b25zdCBuc0FTdHJpbmcgJiBhTW96Qm94T3JkaW5hbEdyb3VwKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldE1vekJveFBhY2sobnNBU3RyaW5nICYgYU1vekJveFBhY2spID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldE1vekJveFBhY2soY29uc3QgbnNBU3RyaW5nICYgYU1vekJveFBhY2sp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TW96Qm94U2l6aW5nKG5zQVN0cmluZyAmIGFN
b3pCb3hTaXppbmcpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1vekJveFNpemluZyhjb25z
dCBuc0FTdHJpbmcgJiBhTW96Qm94U2l6aW5nKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dE1vekNvdW50ZXJJbmNyZW1lbnQobnNBU3RyaW5nICYgYU1vekNvdW50ZXJJbmNyZW1lbnQpID0g
MDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1vekNvdW50ZXJJbmNyZW1lbnQoY29uc3QgbnNBU3Ry
aW5nICYgYU1vekNvdW50ZXJJbmNyZW1lbnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
TW96Q291bnRlclJlc2V0KG5zQVN0cmluZyAmIGFNb3pDb3VudGVyUmVzZXQpID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldE1vekNvdW50ZXJSZXNldChjb25zdCBuc0FTdHJpbmcgJiBhTW96Q291
bnRlclJlc2V0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1vekZsb2F0RWRnZShuc0FT
dHJpbmcgJiBhTW96RmxvYXRFZGdlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRNb3pGbG9h
dEVkZ2UoY29uc3QgbnNBU3RyaW5nICYgYU1vekZsb2F0RWRnZSkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRNb3pGb3JjZUJyb2tlbkltYWdlSWNvbihuc0FTdHJpbmcgJiBhTW96Rm9yY2VC
cm9rZW5JbWFnZUljb24pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1vekZvcmNlQnJva2Vu
SW1hZ2VJY29uKGNvbnN0IG5zQVN0cmluZyAmIGFNb3pGb3JjZUJyb2tlbkltYWdlSWNvbikgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNb3pJbWFnZVJlZ2lvbihuc0FTdHJpbmcgJiBhTW96
SW1hZ2VSZWdpb24pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1vekltYWdlUmVnaW9uKGNv
bnN0IG5zQVN0cmluZyAmIGFNb3pJbWFnZVJlZ2lvbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRNb3pLZXlFcXVpdmFsZW50KG5zQVN0cmluZyAmIGFNb3pLZXlFcXVpdmFsZW50KSA9IDA7
CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRNb3pLZXlFcXVpdmFsZW50KGNvbnN0IG5zQVN0cmluZyAm
IGFNb3pLZXlFcXVpdmFsZW50KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1vek9wYWNp
dHkobnNBU3RyaW5nICYgYU1vek9wYWNpdHkpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1v
ek9wYWNpdHkoY29uc3QgbnNBU3RyaW5nICYgYU1vek9wYWNpdHkpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0TW96T3V0bGluZShuc0FTdHJpbmcgJiBhTW96T3V0bGluZSkgPSAwOwogIHZp
cnR1YWwgbnNyZXN1bHQgU2V0TW96T3V0bGluZShjb25zdCBuc0FTdHJpbmcgJiBhTW96T3V0bGlu
ZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNb3pPdXRsaW5lQ29sb3IobnNBU3RyaW5n
ICYgYU1vek91dGxpbmVDb2xvcikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TW96T3V0bGlu
ZUNvbG9yKGNvbnN0IG5zQVN0cmluZyAmIGFNb3pPdXRsaW5lQ29sb3IpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0TW96T3V0bGluZVJhZGl1cyhuc0FTdHJpbmcgJiBhTW96T3V0bGluZVJh
ZGl1cykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TW96T3V0bGluZVJhZGl1cyhjb25zdCBu
c0FTdHJpbmcgJiBhTW96T3V0bGluZVJhZGl1cykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRNb3pPdXRsaW5lUmFkaXVzVG9wbGVmdChuc0FTdHJpbmcgJiBhTW96T3V0bGluZVJhZGl1c1Rv
cGxlZnQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1vek91dGxpbmVSYWRpdXNUb3BsZWZ0
KGNvbnN0IG5zQVN0cmluZyAmIGFNb3pPdXRsaW5lUmFkaXVzVG9wbGVmdCkgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRNb3pPdXRsaW5lUmFkaXVzVG9wcmlnaHQobnNBU3RyaW5nICYgYU1v
ek91dGxpbmVSYWRpdXNUb3ByaWdodCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TW96T3V0
bGluZVJhZGl1c1RvcHJpZ2h0KGNvbnN0IG5zQVN0cmluZyAmIGFNb3pPdXRsaW5lUmFkaXVzVG9w
cmlnaHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TW96T3V0bGluZVJhZGl1c0JvdHRv
bWxlZnQobnNBU3RyaW5nICYgYU1vek91dGxpbmVSYWRpdXNCb3R0b21sZWZ0KSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXRNb3pPdXRsaW5lUmFkaXVzQm90dG9tbGVmdChjb25zdCBuc0FTdHJp
bmcgJiBhTW96T3V0bGluZVJhZGl1c0JvdHRvbWxlZnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0TW96T3V0bGluZVJhZGl1c0JvdHRvbXJpZ2h0KG5zQVN0cmluZyAmIGFNb3pPdXRsaW5l
UmFkaXVzQm90dG9tcmlnaHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1vek91dGxpbmVS
YWRpdXNCb3R0b21yaWdodChjb25zdCBuc0FTdHJpbmcgJiBhTW96T3V0bGluZVJhZGl1c0JvdHRv
bXJpZ2h0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1vek91dGxpbmVTdHlsZShuc0FT
dHJpbmcgJiBhTW96T3V0bGluZVN0eWxlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRNb3pP
dXRsaW5lU3R5bGUoY29uc3QgbnNBU3RyaW5nICYgYU1vek91dGxpbmVTdHlsZSkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRNb3pPdXRsaW5lV2lkdGgobnNBU3RyaW5nICYgYU1vek91dGxp
bmVXaWR0aCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TW96T3V0bGluZVdpZHRoKGNvbnN0
IG5zQVN0cmluZyAmIGFNb3pPdXRsaW5lV2lkdGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0TW96UmVzaXplcihuc0FTdHJpbmcgJiBhTW96UmVzaXplcikgPSAwOwogIHZpcnR1YWwgbnNy
ZXN1bHQgU2V0TW96UmVzaXplcihjb25zdCBuc0FTdHJpbmcgJiBhTW96UmVzaXplcikgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNb3pVc2VyRm9jdXMobnNBU3RyaW5nICYgYU1velVzZXJG
b2N1cykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TW96VXNlckZvY3VzKGNvbnN0IG5zQVN0
cmluZyAmIGFNb3pVc2VyRm9jdXMpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TW96VXNl
cklucHV0KG5zQVN0cmluZyAmIGFNb3pVc2VySW5wdXQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0
IFNldE1velVzZXJJbnB1dChjb25zdCBuc0FTdHJpbmcgJiBhTW96VXNlcklucHV0KSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1velVzZXJNb2RpZnkobnNBU3RyaW5nICYgYU1velVzZXJN
b2RpZnkpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1velVzZXJNb2RpZnkoY29uc3QgbnNB
U3RyaW5nICYgYU1velVzZXJNb2RpZnkpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TW96
VXNlclNlbGVjdChuc0FTdHJpbmcgJiBhTW96VXNlclNlbGVjdCkgPSAwOwogIHZpcnR1YWwgbnNy
ZXN1bHQgU2V0TW96VXNlclNlbGVjdChjb25zdCBuc0FTdHJpbmcgJiBhTW96VXNlclNlbGVjdCkg
PSAwOwoKfTsKIyAyNTUgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9kb20vbnNJRE9NQ1NTQ2hhcnNldFJ1bGUuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvZG9tL25zSURPTUNTU0NoYXJzZXRSdWxlLmgiCmNsYXNzIG5zSURPTUNTU0NoYXJz
ZXRSdWxlIDogcHVibGljIG5zSURPTUNTU1J1bGUgewogcHVibGljOgoKICBzdGF0aWMgY29uc3Qg
bnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4MTlmZTc4Y2MsIDB4
NjVmZiwgMHg0YjFkLCB7IDB4YTUsIDB4ZDcsIDB4OWUsIDB4YTgsIDB4OTYsIDB4OTIsIDB4Y2Us
IDB4YzYgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRFbmNvZGluZyhu
c0FTdHJpbmcgJiBhRW5jb2RpbmcpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEVuY29kaW5n
KGNvbnN0IG5zQVN0cmluZyAmIGFFbmNvZGluZykgPSAwOwoKfTsKIyAyNTYgIm5zRE9NQ2xhc3NJ
bmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NQ1NTSW1wb3J0
UnVsZS5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NQ1NTSW1wb3J0
UnVsZS5oIgpjbGFzcyBuc0lET01DU1NJbXBvcnRSdWxlIDogcHVibGljIG5zSURPTUNTU1J1bGUg
ewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3Qg
bnNJSUQgaWlkID0gezB4YTZjZjkwY2YsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4
MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRIcmVmKG5zQVN0cmluZyAmIGFIcmVmKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldE1lZGlhKG5zSURPTU1lZGlhTGlzdCAqICphTWVkaWEpID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0U3R5bGVTaGVldChuc0lET01DU1NTdHlsZVNoZWV0ICogKmFTdHls
ZVNoZWV0KSA9IDA7Cgp9OwojIDI1NyAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01DU1NNZWRpYVJ1bGUuaCIgMQojIDI1ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNTU01lZGlhUnVsZS5oIgpjbGFzcyBuc0lET01DU1NN
ZWRpYVJ1bGUgOiBwdWJsaWMgbnNJRE9NQ1NTUnVsZSB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25z
dCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTBiYywg
MHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhk
ZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1lZGlhKG5z
SURPTU1lZGlhTGlzdCAqICphTWVkaWEpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q3Nz
UnVsZXMobnNJRE9NQ1NTUnVsZUxpc3QgKiAqYUNzc1J1bGVzKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEluc2VydFJ1bGUoY29uc3QgbnNBU3RyaW5nICYgcnVsZSwgUFJVaW50MzIgaW5kZXgs
IFBSVWludDMyICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IERlbGV0ZVJ1bGUo
UFJVaW50MzIgaW5kZXgpID0gMDsKCn07CiMgMjU4ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAx
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNTU1ByaW1pdGl2ZVZhbHVlLmgiIDEK
IyAxMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01DU1NQcmltaXRpdmVWYWx1ZS5o
IgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NQ1NTVmFsdWUuaCIgMQojIDI1
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNTU1ZhbHVlLmgiCmNsYXNzIG5zSURP
TUNTU1ZhbHVlIDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0
IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDAwOWY3ZWE1LCAw
eDllODAsIDB4NDFiZSwgeyAweGIwLCAweDA4LCAweGRiLCAweDYyLCAweGYxLCAweDA4LCAweDIz
LCAweGYyIH19OyByZXR1cm4gaWlkO30KIyAzOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9u
c0lET01DU1NWYWx1ZS5oIgogIGVudW0geyBDU1NfSU5IRVJJVCA9IDBVIH07CgogIGVudW0geyBD
U1NfUFJJTUlUSVZFX1ZBTFVFID0gMVUgfTsKCiAgZW51bSB7IENTU19WQUxVRV9MSVNUID0gMlUg
fTsKCiAgZW51bSB7IENTU19DVVNUT00gPSAzVSB9OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRD
c3NUZXh0KG5zQVN0cmluZyAmIGFDc3NUZXh0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRD
c3NUZXh0KGNvbnN0IG5zQVN0cmluZyAmIGFDc3NUZXh0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldENzc1ZhbHVlVHlwZShQUlVpbnQxNiAqYUNzc1ZhbHVlVHlwZSkgPSAwOwoKfTsKIyAx
MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01DU1NQcmltaXRpdmVWYWx1ZS5oIiAy
CiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NQ1NTUHJpbWl0aXZlVmFsdWUu
aCIKY2xhc3MgbnNJRE9NQ1NTUHJpbWl0aXZlVmFsdWUgOiBwdWJsaWMgbnNJRE9NQ1NTVmFsdWUg
ewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3Qg
bnNJSUQgaWlkID0gezB4ZTI0OTAzMWYsIDB4OGRmOSwgMHg0ZTdhLCB7IDB4YjYsIDB4NDQsIDB4
MTgsIDB4OTQsIDB4NmQsIDB4Y2UsIDB4MDAsIDB4MTkgfX07IHJldHVybiBpaWQ7fQojIDM5ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAgZW51
bSB7IENTU19VTktOT1dOID0gMFUgfTsKCiAgZW51bSB7IENTU19OVU1CRVIgPSAxVSB9OwoKICBl
bnVtIHsgQ1NTX1BFUkNFTlRBR0UgPSAyVSB9OwoKICBlbnVtIHsgQ1NTX0VNUyA9IDNVIH07Cgog
IGVudW0geyBDU1NfRVhTID0gNFUgfTsKCiAgZW51bSB7IENTU19QWCA9IDVVIH07CgogIGVudW0g
eyBDU1NfQ00gPSA2VSB9OwoKICBlbnVtIHsgQ1NTX01NID0gN1UgfTsKCiAgZW51bSB7IENTU19J
TiA9IDhVIH07CgogIGVudW0geyBDU1NfUFQgPSA5VSB9OwoKICBlbnVtIHsgQ1NTX1BDID0gMTBV
IH07CgogIGVudW0geyBDU1NfREVHID0gMTFVIH07CgogIGVudW0geyBDU1NfUkFEID0gMTJVIH07
CgogIGVudW0geyBDU1NfR1JBRCA9IDEzVSB9OwoKICBlbnVtIHsgQ1NTX01TID0gMTRVIH07Cgog
IGVudW0geyBDU1NfUyA9IDE1VSB9OwoKICBlbnVtIHsgQ1NTX0haID0gMTZVIH07CgogIGVudW0g
eyBDU1NfS0haID0gMTdVIH07CgogIGVudW0geyBDU1NfRElNRU5TSU9OID0gMThVIH07CgogIGVu
dW0geyBDU1NfU1RSSU5HID0gMTlVIH07CgogIGVudW0geyBDU1NfVVJJID0gMjBVIH07CgogIGVu
dW0geyBDU1NfSURFTlQgPSAyMVUgfTsKCiAgZW51bSB7IENTU19BVFRSID0gMjJVIH07CgogIGVu
dW0geyBDU1NfQ09VTlRFUiA9IDIzVSB9OwoKICBlbnVtIHsgQ1NTX1JFQ1QgPSAyNFUgfTsKCiAg
ZW51bSB7IENTU19SR0JDT0xPUiA9IDI1VSB9OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQcmlt
aXRpdmVUeXBlKFBSVWludDE2ICphUHJpbWl0aXZlVHlwZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXRGbG9hdFZhbHVlKFBSVWludDE2IHVuaXRUeXBlLCBmbG9hdCBmbG9hdFZhbHVlKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEZsb2F0VmFsdWUoUFJVaW50MTYgdW5pdFR5cGUs
IGZsb2F0ICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFN0cmluZ1ZhbHVl
KFBSVWludDE2IHN0cmluZ1R5cGUsIGNvbnN0IG5zQVN0cmluZyAmIHN0cmluZ1ZhbHVlKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFN0cmluZ1ZhbHVlKG5zQVN0cmluZyAmIF9yZXR2YWwp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q291bnRlclZhbHVlKG5zSURPTUNvdW50ZXIg
KipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJlY3RWYWx1ZShuc0lET01S
ZWN0ICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRSR0JDb2xvclZhbHVl
KG5zSURPTVJHQkNvbG9yICoqX3JldHZhbCkgPSAwOwoKfTsKIyAyNTkgIm5zRE9NQ2xhc3NJbmZv
LmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NQ1NTU3R5bGVSdWxl
LmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01DU1NTdHlsZVJ1bGUu
aCIKY2xhc3MgbnNJRE9NQ1NTU3R5bGVSdWxlIDogcHVibGljIG5zSURPTUNTU1J1bGUgewogcHVi
bGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQg
aWlkID0gezB4YTZjZjkwYmYsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4
ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRTZWxlY3RvclRleHQobnNBU3RyaW5nICYgYVNlbGVjdG9yVGV4dCkgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0U2VsZWN0b3JUZXh0KGNvbnN0IG5zQVN0cmluZyAmIGFTZWxl
Y3RvclRleHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U3R5bGUobnNJRE9NQ1NTU3R5
bGVEZWNsYXJhdGlvbiAqICphU3R5bGUpID0gMDsKCn07CiMgMjYwICJuc0RPTUNsYXNzSW5mby5j
cHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNTU1N0eWxlU2hlZXQu
aCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNTU1N0eWxlU2hlZXQu
aCIKY2xhc3MgbnNJRE9NQ1NTU3R5bGVTaGVldCA6IHB1YmxpYyBuc0lET01TdHlsZVNoZWV0IHsK
IHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5z
SUlEIGlpZCA9IHsweGE2Y2Y5MGMyLCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAw
LCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KIyA0MCAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01DU1NTdHlsZVNoZWV0LmgiCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRPd25lclJ1bGUobnNJRE9NQ1NTUnVsZSAqICphT3duZXJSdWxlKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldENzc1J1bGVzKG5zSURPTUNTU1J1bGVMaXN0ICogKmFDc3NS
dWxlcykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJbnNlcnRSdWxlKGNvbnN0IG5zQVN0cmlu
ZyAmIHJ1bGUsIFBSVWludDMyIGluZGV4LCBQUlVpbnQzMiAqX3JldHZhbCkgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBEZWxldGVSdWxlKFBSVWludDMyIGluZGV4KSA9IDA7Cgp9OwojIDI2MSAi
bnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lE
T01DU1NWYWx1ZUxpc3QuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURP
TUNTU1ZhbHVlTGlzdC5oIgpjbGFzcyBuc0lET01DU1NWYWx1ZUxpc3QgOiBwdWJsaWMgbnNJRE9N
Q1NTVmFsdWUgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0
aWMgY29uc3QgbnNJSUQgaWlkID0gezB4OGYwOWZhODQsIDB4MzliOSwgMHg0ZGNhLCB7IDB4OWIs
IDB4MmYsIDB4ZGIsIDB4MGUsIDB4ZWIsIDB4MTgsIDB4NjIsIDB4ODYgfX07IHJldHVybiBpaWQ7
fQojIDQwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNTU1ZhbHVlTGlzdC5oIgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0TGVuZ3RoKFBSVWludDMyICphTGVuZ3RoKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEl0ZW0oUFJVaW50MzIgaW5kZXgsIG5zSURPTUNTU1ZhbHVlICoqX3Jl
dHZhbCkgPSAwOwoKfTsKIyAyNjIgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NUmFuZ2UuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvZG9tL25zSURPTVJhbmdlLmgiCmNsYXNzIG5zSURPTVJhbmdlIDogcHVibGljIG5zSVN1
cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGlj
IGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MGNlLCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAw
eDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30K
IyAzOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01SYW5nZS5oIgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0U3RhcnRDb250YWluZXIobnNJRE9NTm9kZSAqICphU3RhcnRDb250YWluZXIp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U3RhcnRPZmZzZXQoUFJJbnQzMiAqYVN0YXJ0
T2Zmc2V0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEVuZENvbnRhaW5lcihuc0lET01O
b2RlICogKmFFbmRDb250YWluZXIpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RW5kT2Zm
c2V0KFBSSW50MzIgKmFFbmRPZmZzZXQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29s
bGFwc2VkKFBSQm9vbCAqYUNvbGxhcHNlZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRD
b21tb25BbmNlc3RvckNvbnRhaW5lcihuc0lET01Ob2RlICogKmFDb21tb25BbmNlc3RvckNvbnRh
aW5lcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRTdGFydChuc0lET01Ob2RlICpyZWZO
b2RlLCBQUkludDMyIG9mZnNldCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRFbmQobnNJ
RE9NTm9kZSAqcmVmTm9kZSwgUFJJbnQzMiBvZmZzZXQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0U3RhcnRCZWZvcmUobnNJRE9NTm9kZSAqcmVmTm9kZSkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXRTdGFydEFmdGVyKG5zSURPTU5vZGUgKnJlZk5vZGUpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0RW5kQmVmb3JlKG5zSURPTU5vZGUgKnJlZk5vZGUpID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgU2V0RW5kQWZ0ZXIobnNJRE9NTm9kZSAqcmVmTm9kZSkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBDb2xsYXBzZShQUkJvb2wgdG9TdGFydCkgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBTZWxlY3ROb2RlKG5zSURPTU5vZGUgKnJlZk5vZGUpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgU2VsZWN0Tm9kZUNvbnRlbnRzKG5zSURPTU5vZGUgKnJlZk5vZGUpID0gMDsK
CiAgZW51bSB7IFNUQVJUX1RPX1NUQVJUID0gMFUgfTsKCiAgZW51bSB7IFNUQVJUX1RPX0VORCA9
IDFVIH07CgogIGVudW0geyBFTkRfVE9fRU5EID0gMlUgfTsKCiAgZW51bSB7IEVORF9UT19TVEFS
VCA9IDNVIH07CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENvbXBhcmVCb3VuZGFyeVBvaW50cyhQUlVp
bnQxNiBob3csIG5zSURPTVJhbmdlICpzb3VyY2VSYW5nZSwgUFJJbnQxNiAqX3JldHZhbCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBEZWxldGVDb250ZW50cyh2b2lkKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEV4dHJhY3RDb250ZW50cyhuc0lET01Eb2N1bWVudEZyYWdtZW50ICoqX3Jl
dHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDbG9uZUNvbnRlbnRzKG5zSURPTURvY3Vt
ZW50RnJhZ21lbnQgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEluc2VydE5v
ZGUobnNJRE9NTm9kZSAqbmV3Tm9kZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTdXJyb3Vu
ZENvbnRlbnRzKG5zSURPTU5vZGUgKm5ld1BhcmVudCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBDbG9uZVJhbmdlKG5zSURPTVJhbmdlICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBUb1N0cmluZyhuc0FTdHJpbmcgJiBfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IERldGFjaCh2b2lkKSA9IDA7Cgp9OwojIDI2MyAibnNET01DbGFzc0luZm8uY3BwIiAyCiMg
MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU1JhbmdlLmgiIDEKIyAyNSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU1JhbmdlLmgiCmNsYXNzIG5zSURPTU5TUmFu
Z2UgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQm
IEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwZjIsIDB4MTViMywg
MHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIg
fX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDcmVhdGVDb250ZXh0dWFsRnJh
Z21lbnQoY29uc3QgbnNBU3RyaW5nICYgZnJhZ21lbnQsIG5zSURPTURvY3VtZW50RnJhZ21lbnQg
KipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IElzUG9pbnRJblJhbmdlKG5zSURP
TU5vZGUgKnBhcmVudCwgUFJJbnQzMiBvZmZzZXQsIFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBDb21wYXJlUG9pbnQobnNJRE9NTm9kZSAqcGFyZW50LCBQUkludDMy
IG9mZnNldCwgUFJJbnQxNiAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJbnRl
cnNlY3RzTm9kZShuc0lET01Ob2RlICpuLCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKCiAgZW51bSB7
IE5PREVfQkVGT1JFID0gMFUgfTsKCiAgZW51bSB7IE5PREVfQUZURVIgPSAxVSB9OwoKICBlbnVt
IHsgTk9ERV9CRUZPUkVfQU5EX0FGVEVSID0gMlUgfTsKCiAgZW51bSB7IE5PREVfSU5TSURFID0g
M1UgfTsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ29tcGFyZU5vZGUobnNJRE9NTm9kZSAqbiwgUFJV
aW50MTYgKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgTlNEZXRhY2godm9pZCkg
PSAwOwoKfTsKIyAyNjQgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9kb20vbnNJRE9NUmFuZ2VFeGNlcHRpb24uaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvZG9tL25zSURPTVJhbmdlRXhjZXB0aW9uLmgiCmNsYXNzIG5zSURPTVJhbmdlRXhj
ZXB0aW9uIDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5z
SUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDBmODA3MzAxLCAweDM5
ZDIsIDB4MTFkNiwgeyAweGE3LCAweGYyLCAweDhmLCAweDUwLCAweDRmLCAweGY4LCAweDcwLCAw
eGRjIH19OyByZXR1cm4gaWlkO30KCiAgZW51bSB7IEJBRF9CT1VOREFSWVBPSU5UU19FUlIgPSAx
VSB9OwoKICBlbnVtIHsgSU5WQUxJRF9OT0RFX1RZUEVfRVJSID0gMlUgfTsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0Q29kZShQUlVpbnQxNiAqYUNvZGUpID0gMDsKCn07CiMgMjY1ICJuc0RPTUNs
YXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVRyZWVX
YWxrZXIuaCIgMQojIDE3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVRyZWVXYWxr
ZXIuaCIKY2xhc3MgbnNJRE9NVHJlZVdhbGtlcjsKCmNsYXNzIG5zSURPTU5vZGVGaWx0ZXI7CiMg
MjkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NVHJlZVdhbGtlci5oIgpjbGFzcyBu
c0lET01UcmVlV2Fsa2VyIDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGlj
IGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDQwMGFm
M2NhLCAweDFkZDIsIDB4MTFiMiwgeyAweGE1LCAweDBhLCAweDg4LCAweDdlLCAweGNjLCAweGEy
LCAweGU2LCAweDNhIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Um9v
dChuc0lET01Ob2RlICogKmFSb290KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFdoYXRU
b1Nob3coUFJVaW50MzIgKmFXaGF0VG9TaG93KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dEZpbHRlcihuc0lET01Ob2RlRmlsdGVyICogKmFGaWx0ZXIpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0RXhwYW5kRW50aXR5UmVmZXJlbmNlcyhQUkJvb2wgKmFFeHBhbmRFbnRpdHlSZWZl
cmVuY2VzKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEN1cnJlbnROb2RlKG5zSURPTU5v
ZGUgKiAqYUN1cnJlbnROb2RlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDdXJyZW50Tm9k
ZShuc0lET01Ob2RlICogYUN1cnJlbnROb2RlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFBh
cmVudE5vZGUobnNJRE9NTm9kZSAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
Rmlyc3RDaGlsZChuc0lET01Ob2RlICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBMYXN0Q2hpbGQobnNJRE9NTm9kZSAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgUHJldmlvdXNTaWJsaW5nKG5zSURPTU5vZGUgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IE5leHRTaWJsaW5nKG5zSURPTU5vZGUgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IFByZXZpb3VzTm9kZShuc0lET01Ob2RlICoqX3JldHZhbCkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBOZXh0Tm9kZShuc0lET01Ob2RlICoqX3JldHZhbCkgPSAwOwoKfTsK
IyAyNjYgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9k
b20vbnNJRE9NWFVMRG9jdW1lbnQuaCIgMQojIDE3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9t
L25zSURPTVhVTERvY3VtZW50LmgiCmNsYXNzIG5zSURPTVhVTENvbW1hbmREaXNwYXRjaGVyOwoj
IDI3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVhVTERvY3VtZW50LmgiCmNsYXNz
IG5zSURPTVhVTERvY3VtZW50IDogcHVibGljIG5zSURPTURvY3VtZW50IHsKIHB1YmxpYzoKCiAg
c3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsw
eDE3ZGRkOGMwLCAweGM1ZjgsIDB4MTFkMiwgeyAweGE2LCAweGFlLCAweDAwLCAweDEwLCAweDRi
LCAweGRlLCAweDYwLCAweDQ4IH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0UG9wdXBOb2RlKG5zSURPTU5vZGUgKiAqYVBvcHVwTm9kZSkgPSAwOwogIHZpcnR1YWwgbnNy
ZXN1bHQgU2V0UG9wdXBOb2RlKG5zSURPTU5vZGUgKiBhUG9wdXBOb2RlKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldFRvb2x0aXBOb2RlKG5zSURPTU5vZGUgKiAqYVRvb2x0aXBOb2RlKSA9
IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRUb29sdGlwTm9kZShuc0lET01Ob2RlICogYVRvb2x0
aXBOb2RlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbW1hbmREaXNwYXRjaGVyKG5z
SURPTVhVTENvbW1hbmREaXNwYXRjaGVyICogKmFDb21tYW5kRGlzcGF0Y2hlcikgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRXaWR0aChQUkludDMyICphV2lkdGgpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0SGVpZ2h0KFBSSW50MzIgKmFIZWlnaHQpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0RWxlbWVudHNCeUF0dHJpYnV0ZShjb25zdCBuc0FTdHJpbmcgJiBuYW1lLCBj
b25zdCBuc0FTdHJpbmcgJiB2YWx1ZSwgbnNJRE9NTm9kZUxpc3QgKipfcmV0dmFsKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEFkZEJyb2FkY2FzdExpc3RlbmVyRm9yKG5zSURPTUVsZW1lbnQg
KmJyb2FkY2FzdGVyLCBuc0lET01FbGVtZW50ICpvYnNlcnZlciwgY29uc3QgbnNBU3RyaW5nICYg
YXR0cikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZW1vdmVCcm9hZGNhc3RMaXN0ZW5lckZv
cihuc0lET01FbGVtZW50ICpicm9hZGNhc3RlciwgbnNJRE9NRWxlbWVudCAqb2JzZXJ2ZXIsIGNv
bnN0IG5zQVN0cmluZyAmIGF0dHIpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUGVyc2lzdChj
b25zdCBuc0FTdHJpbmcgJiBpZCwgY29uc3QgbnNBU3RyaW5nICYgYXR0cikgPSAwOwoKfTsKIyAy
NjcgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20v
bnNJRE9NWFVMRWxlbWVudC5oIiAxCiMgMTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJ
RE9NWFVMRWxlbWVudC5oIgpjbGFzcyBuc0lSREZDb21wb3NpdGVEYXRhU291cmNlOwoKY2xhc3Mg
bnNJWFVMVGVtcGxhdGVCdWlsZGVyOwoKY2xhc3MgbnNJUkRGUmVzb3VyY2U7CgpjbGFzcyBuc0lD
b250cm9sbGVyczsKCmNsYXNzIG5zSUJveE9iamVjdDsKIyAzNSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2RvbS9uc0lET01YVUxFbGVtZW50LmgiCmNsYXNzIG5zSURPTVhVTEVsZW1lbnQgOiBwdWJs
aWMgbnNJRE9NRWxlbWVudCB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlE
KCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgwNTc0ZWQ4MSwgMHhjMDg4LCAweDExZDIs
IHsgMHg5NiwgMHhlZCwgMHgwMCwgMHgxMCwgMHg0YiwgMHg3YiwgMHg3ZCwgMHhlYiB9fTsgcmV0
dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldElkKG5zQVN0cmluZyAmIGFJZCkgPSAw
OwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0SWQoY29uc3QgbnNBU3RyaW5nICYgYUlkKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldENsYXNzTmFtZShuc0FTdHJpbmcgJiBhQ2xhc3NOYW1lKSA9
IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDbGFzc05hbWUoY29uc3QgbnNBU3RyaW5nICYgYUNs
YXNzTmFtZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBbGlnbihuc0FTdHJpbmcgJiBh
QWxpZ24pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFsaWduKGNvbnN0IG5zQVN0cmluZyAm
IGFBbGlnbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREaXIobnNBU3RyaW5nICYgYURp
cikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RGlyKGNvbnN0IG5zQVN0cmluZyAmIGFEaXIp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RmxleChuc0FTdHJpbmcgJiBhRmxleCkgPSAw
OwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RmxleChjb25zdCBuc0FTdHJpbmcgJiBhRmxleCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGbGV4R3JvdXAobnNBU3RyaW5nICYgYUZsZXhHcm91
cCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RmxleEdyb3VwKGNvbnN0IG5zQVN0cmluZyAm
IGFGbGV4R3JvdXApID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0T3JkaW5hbChuc0FTdHJp
bmcgJiBhT3JkaW5hbCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0T3JkaW5hbChjb25zdCBu
c0FTdHJpbmcgJiBhT3JkaW5hbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRPcmllbnQo
bnNBU3RyaW5nICYgYU9yaWVudCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0T3JpZW50KGNv
bnN0IG5zQVN0cmluZyAmIGFPcmllbnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UGFj
ayhuc0FTdHJpbmcgJiBhUGFjaykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UGFjayhjb25z
dCBuc0FTdHJpbmcgJiBhUGFjaykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRIaWRkZW4o
UFJCb29sICphSGlkZGVuKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRIaWRkZW4oUFJCb29s
IGFIaWRkZW4pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29sbGFwc2VkKFBSQm9vbCAq
YUNvbGxhcHNlZCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q29sbGFwc2VkKFBSQm9vbCBh
Q29sbGFwc2VkKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE9ic2VydmVzKG5zQVN0cmlu
ZyAmIGFPYnNlcnZlcykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0T2JzZXJ2ZXMoY29uc3Qg
bnNBU3RyaW5nICYgYU9ic2VydmVzKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1lbnUo
bnNBU3RyaW5nICYgYU1lbnUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1lbnUoY29uc3Qg
bnNBU3RyaW5nICYgYU1lbnUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29udGV4dE1l
bnUobnNBU3RyaW5nICYgYUNvbnRleHRNZW51KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRD
b250ZXh0TWVudShjb25zdCBuc0FTdHJpbmcgJiBhQ29udGV4dE1lbnUpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0VG9vbHRpcChuc0FTdHJpbmcgJiBhVG9vbHRpcCkgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0VG9vbHRpcChjb25zdCBuc0FTdHJpbmcgJiBhVG9vbHRpcCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRXaWR0aChuc0FTdHJpbmcgJiBhV2lkdGgpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldFdpZHRoKGNvbnN0IG5zQVN0cmluZyAmIGFXaWR0aCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRIZWlnaHQobnNBU3RyaW5nICYgYUhlaWdodCkgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0SGVpZ2h0KGNvbnN0IG5zQVN0cmluZyAmIGFIZWlnaHQpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TWluV2lkdGgobnNBU3RyaW5nICYgYU1pbldpZHRo
KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRNaW5XaWR0aChjb25zdCBuc0FTdHJpbmcgJiBh
TWluV2lkdGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TWluSGVpZ2h0KG5zQVN0cmlu
ZyAmIGFNaW5IZWlnaHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1pbkhlaWdodChjb25z
dCBuc0FTdHJpbmcgJiBhTWluSGVpZ2h0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1h
eFdpZHRoKG5zQVN0cmluZyAmIGFNYXhXaWR0aCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0
TWF4V2lkdGgoY29uc3QgbnNBU3RyaW5nICYgYU1heFdpZHRoKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldE1heEhlaWdodChuc0FTdHJpbmcgJiBhTWF4SGVpZ2h0KSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRNYXhIZWlnaHQoY29uc3QgbnNBU3RyaW5nICYgYU1heEhlaWdodCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQZXJzaXN0KG5zQVN0cmluZyAmIGFQZXJzaXN0KSA9
IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRQZXJzaXN0KGNvbnN0IG5zQVN0cmluZyAmIGFQZXJz
aXN0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldExlZnQobnNBU3RyaW5nICYgYUxlZnQp
ID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldExlZnQoY29uc3QgbnNBU3RyaW5nICYgYUxlZnQp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VG9wKG5zQVN0cmluZyAmIGFUb3ApID0gMDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldFRvcChjb25zdCBuc0FTdHJpbmcgJiBhVG9wKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldERhdGFzb3VyY2VzKG5zQVN0cmluZyAmIGFEYXRhc291cmNl
cykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RGF0YXNvdXJjZXMoY29uc3QgbnNBU3RyaW5n
ICYgYURhdGFzb3VyY2VzKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJlZihuc0FTdHJp
bmcgJiBhUmVmKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRSZWYoY29uc3QgbnNBU3RyaW5n
ICYgYVJlZikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRUb29sdGlwVGV4dChuc0FTdHJp
bmcgJiBhVG9vbHRpcFRleHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFRvb2x0aXBUZXh0
KGNvbnN0IG5zQVN0cmluZyAmIGFUb29sdGlwVGV4dCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRTdGF0dXNUZXh0KG5zQVN0cmluZyAmIGFTdGF0dXNUZXh0KSA9IDA7CiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXRTdGF0dXNUZXh0KGNvbnN0IG5zQVN0cmluZyAmIGFTdGF0dXNUZXh0KSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFsbG93RXZlbnRzKFBSQm9vbCAqYUFsbG93RXZlbnRz
KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRBbGxvd0V2ZW50cyhQUkJvb2wgYUFsbG93RXZl
bnRzKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFN0eWxlKG5zSURPTUNTU1N0eWxlRGVj
bGFyYXRpb24gKiAqYVN0eWxlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERhdGFiYXNl
KG5zSVJERkNvbXBvc2l0ZURhdGFTb3VyY2UgKiAqYURhdGFiYXNlKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldEJ1aWxkZXIobnNJWFVMVGVtcGxhdGVCdWlsZGVyICogKmFCdWlsZGVyKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJlc291cmNlKG5zSVJERlJlc291cmNlICogKmFS
ZXNvdXJjZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb250cm9sbGVycyhuc0lDb250
cm9sbGVycyAqICphQ29udHJvbGxlcnMpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Qm94
T2JqZWN0KG5zSUJveE9iamVjdCAqICphQm94T2JqZWN0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEZvY3VzKHZvaWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQmx1cih2b2lkKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENsaWNrKHZvaWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgRG9Db21tYW5kKHZvaWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RWxlbWVudHNC
eUF0dHJpYnV0ZShjb25zdCBuc0FTdHJpbmcgJiBuYW1lLCBjb25zdCBuc0FTdHJpbmcgJiB2YWx1
ZSwgbnNJRE9NTm9kZUxpc3QgKipfcmV0dmFsKSA9IDA7Cgp9OwojIDI2OCAibnNET01DbGFzc0lu
Zm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01YVUxDb21tYW5k
RGlzcGF0Y2hlci5oIiAxCiMgMTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NWFVM
Q29tbWFuZERpc3BhdGNoZXIuaCIKY2xhc3MgbnNJRE9NRWxlbWVudDsKCmNsYXNzIG5zSUNvbnRy
b2xsZXI7CgpjbGFzcyBuc0lDb250cm9sbGVyczsKCmNsYXNzIG5zSURPTVdpbmRvdzsKIyAzMyAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01YVUxDb21tYW5kRGlzcGF0Y2hlci5oIgpj
bGFzcyBuc0lET01YVUxDb21tYW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBw
dWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJ
RCBpaWQgPSB7MHhmM2M1MDM2MSwgMHgxNGZlLCAweDExZDMsIHsgMHhiZiwgMHg4NywgMHgwMCwg
MHgxMCwgMHg1YSwgMHgxYiwgMHgwNiwgMHgyNyB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldEZvY3VzZWRFbGVtZW50KG5zSURPTUVsZW1lbnQgKiAqYUZvY3VzZWRFbGVt
ZW50KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRGb2N1c2VkRWxlbWVudChuc0lET01FbGVt
ZW50ICogYUZvY3VzZWRFbGVtZW50KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEZvY3Vz
ZWRXaW5kb3cobnNJRE9NV2luZG93ICogKmFGb2N1c2VkV2luZG93KSA9IDA7CiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXRGb2N1c2VkV2luZG93KG5zSURPTVdpbmRvdyAqIGFGb2N1c2VkV2luZG93KSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEFkZENvbW1hbmRVcGRhdGVyKG5zSURPTUVsZW1lbnQg
KnVwZGF0ZXIsIGNvbnN0IG5zQVN0cmluZyAmIGV2ZW50cywgY29uc3QgbnNBU3RyaW5nICYgdGFy
Z2V0cykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZW1vdmVDb21tYW5kVXBkYXRlcihuc0lE
T01FbGVtZW50ICp1cGRhdGVyKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFVwZGF0ZUNvbW1h
bmRzKGNvbnN0IG5zQVN0cmluZyAmIGV2ZW50TmFtZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRDb250cm9sbGVyRm9yQ29tbWFuZChjb25zdCBjaGFyICpjb21tYW5kLCBuc0lDb250cm9s
bGVyICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb250cm9sbGVycyhu
c0lDb250cm9sbGVycyAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQWR2YW5j
ZUZvY3VzKHZvaWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmV3aW5kRm9jdXModm9pZCkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBBZHZhbmNlRm9jdXNJbnRvU3VidHJlZShuc0lET01F
bGVtZW50ICplbHQpID0gMDsKCn07CiMgMjY5ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNyeXB0by5oIiAxCiMgMjUgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NQ3J5cHRvLmgiCmNsYXNzIG5zSURPTUNyeXB0byA6IHB1
YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlE
KCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhmNDVlZmJlMCwgMHgxZDUyLCAweDExZDQs
IHsgMHg4YSwgMHg3YywgMHgwMCwgMHg2MCwgMHgwOCwgMHhjOCwgMHg0NCwgMHhjMyB9fTsgcmV0
dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFZlcnNpb24obnNBU3RyaW5nICYgYVZl
cnNpb24pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2VuZXJhdGVDUk1GUmVxdWVzdChuc0lE
T01DUk1GT2JqZWN0ICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJbXBvcnRV
c2VyQ2VydGlmaWNhdGVzKGNvbnN0IG5zQVN0cmluZyAmIG5pY2tuYW1lLCBjb25zdCBuc0FTdHJp
bmcgJiBjbW1mUmVzcG9uc2UsIFBSQm9vbCBkb0ZvcmNlZEJhY2t1cCwgbnNBU3RyaW5nICYgX3Jl
dHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBQb3BDaGFsbGVuZ2VSZXNwb25zZShjb25z
dCBuc0FTdHJpbmcgJiBjaGFsbGVuZ2UsIG5zQVN0cmluZyAmIF9yZXR2YWwpID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgUmFuZG9tKFBSSW50MzIgbnVtQnl0ZXMsIG5zQVN0cmluZyAmIF9yZXR2
YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2lnblRleHQobnNBU3RyaW5nICYgX3JldHZh
bCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBBbGVydChjb25zdCBuc0FTdHJpbmcgJiBtZXNz
YWdlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IExvZ291dCh2b2lkKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IERpc2FibGVSaWdodENsaWNrKHZvaWQpID0gMDsKCn07CiMgMjcwICJuc0RP
TUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNS
TUZPYmplY3QuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNSTUZP
YmplY3QuaCIKY2xhc3MgbnNJRE9NQ1JNRk9iamVjdCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBw
dWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJ
RCBpaWQgPSB7MHgxNmRhNDZjMCwgMHgyMDhkLCAweDExZDQsIHsgMHg4YSwgMHg3YywgMHgwMCwg
MHg2MCwgMHgwOCwgMHhjOCwgMHg0NCwgMHhjMyB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldFJlcXVlc3QobnNBU3RyaW5nICYgYVJlcXVlc3QpID0gMDsKCn07CiMgMjcx
ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25z
SURPTVBrY3MxMS5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NUGtj
czExLmgiCmNsYXNzIG5zSURPTVBrY3MxMSA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6
CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQg
PSB7MHg5ZmQ0Mjk1MCwgMHgyNWU3LCAweDExZDQsIHsgMHg4YSwgMHg3ZCwgMHgwMCwgMHg2MCwg
MHgwOCwgMHhjOCwgMHg0NCwgMHhjMyB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IERlbGV0ZW1vZHVsZShjb25zdCBuc0FTdHJpbmcgJiBtb2R1bGVOYW1lLCBQUkludDMyICpf
cmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEFkZG1vZHVsZShjb25zdCBuc0FTdHJp
bmcgJiBtb2R1bGVOYW1lLCBjb25zdCBuc0FTdHJpbmcgJiBsaWJyYXJ5RnVsbFBhdGgsIFBSSW50
MzIgY3J5cHRvTWVjaGFuaXNtRmxhZ3MsIFBSSW50MzIgY2lwaGVyRmxhZ3MsIFBSSW50MzIgKl9y
ZXR2YWwpID0gMDsKCn07CiMgMjcyICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUveHVsZG9jL25zSUNvbnRyb2xsZXJzLmgiIDEKIyAxMCAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL3h1bGRvYy9uc0lDb250cm9sbGVycy5oIgojIDEgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS94dWxkb2MvbnNJQ29udHJvbGxlci5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS94dWxkb2MvbnNJQ29udHJvbGxlci5oIgpjbGFzcyBuc0lDb250cm9sbGVyIDogcHVibGlj
IG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7
c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGQ1YjYxYjgyLCAweDFkYTQsIDB4MTFkMywgeyAw
eGJmLCAweDg3LCAweDAwLCAweDEwLCAweDVhLCAweDFiLCAweDA2LCAweDI3IH19OyByZXR1cm4g
aWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgSXNDb21tYW5kRW5hYmxlZChjb25zdCBjaGFyICpj
b21tYW5kLCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgU3VwcG9y
dHNDb21tYW5kKGNvbnN0IGNoYXIgKmNvbW1hbmQsIFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBEb0NvbW1hbmQoY29uc3QgY2hhciAqY29tbWFuZCkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBPbkV2ZW50KGNvbnN0IGNoYXIgKmV2ZW50TmFtZSkgPSAwOwoKfTsK
IyAxMjAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94dWxkb2MvbnNJQ29udHJvbGxlci5oIgpjbGFz
cyBuc0lDb21tYW5kUGFyYW1zOwojIDEzMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3h1bGRvYy9u
c0lDb250cm9sbGVyLmgiCmNsYXNzIG5zSUNvbW1hbmRDb250cm9sbGVyIDogcHVibGljIG5zSVN1
cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGlj
IGNvbnN0IG5zSUlEIGlpZCA9IHsweGViZTU1MDgwLCAweGM4YTksIDB4MTFkNSwgeyAweGE3LCAw
eDNjLCAweGRkLCAweDYyLCAweDBkLCAweDZlLCAweDA0LCAweGJjIH19OyByZXR1cm4gaWlkO30K
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29tbWFuZFN0YXRlV2l0aFBhcmFtcyhjb25zdCBjaGFy
ICpjb21tYW5kLCBuc0lDb21tYW5kUGFyYW1zICphQ29tbWFuZFBhcmFtcykgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBEb0NvbW1hbmRXaXRoUGFyYW1zKGNvbnN0IGNoYXIgKmNvbW1hbmQsIG5z
SUNvbW1hbmRQYXJhbXMgKmFDb21tYW5kUGFyYW1zKSA9IDA7Cgp9OwojIDIwMSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL3h1bGRvYy9uc0lDb250cm9sbGVyLmgiCmNsYXNzIG5zSVNpbXBsZUVudW1l
cmF0b3I7CiMgMjExICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHVsZG9jL25zSUNvbnRyb2xsZXIu
aCIKY2xhc3MgbnNJQ29udHJvbGxlckNvbW1hbmRHcm91cCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7
CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBu
c0lJRCBpaWQgPSB7MHg5ZjgyYzQwNCwgMHgxYzdiLCAweDExZDUsIHsgMHhhNywgMHgzYywgMHhl
YywgMHhhNCwgMHgzYywgMHhhOCwgMHgzNiwgMHhmYyB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEFkZENvbW1hbmRUb0dyb3VwKGNvbnN0IGNoYXIgKmFDb21tYW5kLCBjb25z
dCBjaGFyICphR3JvdXApID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVtb3ZlQ29tbWFuZEZy
b21Hcm91cChjb25zdCBjaGFyICphQ29tbWFuZCwgY29uc3QgY2hhciAqYUdyb3VwKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IElzQ29tbWFuZEluR3JvdXAoY29uc3QgY2hhciAqYUNvbW1hbmQs
IGNvbnN0IGNoYXIgKmFHcm91cCwgUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldEdyb3Vwc0VudW1lcmF0b3IobnNJU2ltcGxlRW51bWVyYXRvciAqKl9yZXR2YWwp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RW51bWVyYXRvckZvckdyb3VwKGNvbnN0IGNo
YXIgKmFHcm91cCwgbnNJU2ltcGxlRW51bWVyYXRvciAqKl9yZXR2YWwpID0gMDsKCn07CiMgMTEg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94dWxkb2MvbnNJQ29udHJvbGxlcnMuaCIgMgoKCgoKCgpj
bGFzcyBuc0lET01YVUxDb21tYW5kRGlzcGF0Y2hlcjsKIyAyNyAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL3h1bGRvYy9uc0lDb250cm9sbGVycy5oIgpjbGFzcyBuc0lDb250cm9sbGVycyA6IHB1Ymxp
YyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkg
e3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNWVkM2EwMSwgMHg3Y2M3LCAweDExZDMsIHsg
MHhiZiwgMHg4NywgMHgwMCwgMHgxMCwgMHg1YSwgMHgxYiwgMHgwNiwgMHgyNyB9fTsgcmV0dXJu
IGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbW1hbmREaXNwYXRjaGVyKG5zSURPTVhV
TENvbW1hbmREaXNwYXRjaGVyICogKmFDb21tYW5kRGlzcGF0Y2hlcikgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0Q29tbWFuZERpc3BhdGNoZXIobnNJRE9NWFVMQ29tbWFuZERpc3BhdGNoZXIg
KiBhQ29tbWFuZERpc3BhdGNoZXIpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29udHJv
bGxlckZvckNvbW1hbmQoY29uc3QgY2hhciAqY29tbWFuZCwgbnNJQ29udHJvbGxlciAqKl9yZXR2
YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSW5zZXJ0Q29udHJvbGxlckF0KFBSVWludDMy
IGluZGV4LCBuc0lDb250cm9sbGVyICpjb250cm9sbGVyKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IFJlbW92ZUNvbnRyb2xsZXJBdChQUlVpbnQzMiBpbmRleCwgbnNJQ29udHJvbGxlciAqKl9y
ZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29udHJvbGxlckF0KFBSVWludDMy
IGluZGV4LCBuc0lDb250cm9sbGVyICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBBcHBlbmRDb250cm9sbGVyKG5zSUNvbnRyb2xsZXIgKmNvbnRyb2xsZXIpID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgUmVtb3ZlQ29udHJvbGxlcihuc0lDb250cm9sbGVyICpjb250cm9sbGVy
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbnRyb2xsZXJJZChuc0lDb250cm9sbGVy
ICpjb250cm9sbGVyLCBQUlVpbnQzMiAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRDb250cm9sbGVyQnlJZChQUlVpbnQzMiBjb250cm9sbGVySUQsIG5zSUNvbnRyb2xsZXIg
KipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbnRyb2xsZXJDb3VudChQ
UlVpbnQzMiAqX3JldHZhbCkgPSAwOwoKfTsKIyAyNzMgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgoj
IDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSVNlbGVjdGlvbi5oIiAxCiMgMTcg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSVNlbGVjdGlvbi5oIgpjbGFzcyBuc0lE
T01Ob2RlOwoKY2xhc3MgbnNJRE9NUmFuZ2U7CiMgMzYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9j
b250ZW50L25zSVNlbGVjdGlvbi5oIgpjbGFzcyBuc0lTZWxlY3Rpb24gOiBwdWJsaWMgbnNJU3Vw
cG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMg
Y29uc3QgbnNJSUQgaWlkID0gezB4YjJjN2VkNTksIDB4ODYzNCwgMHg0MzUyLCB7IDB4OWUsIDB4
MzcsIDB4NTQsIDB4ODQsIDB4YzgsIDB4YjYsIDB4ZTQsIDB4ZTEgfX07IHJldHVybiBpaWQ7fQoK
CgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBbmNob3JOb2RlKG5zSURPTU5vZGUgKiAqYUFuY2hv
ck5vZGUpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QW5jaG9yT2Zmc2V0KFBSSW50
MzIgKmFBbmNob3JPZmZzZXQpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Rm9jdXNO
b2RlKG5zSURPTU5vZGUgKiAqYUZvY3VzTm9kZSkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRGb2N1c09mZnNldChQUkludDMyICphRm9jdXNPZmZzZXQpID0gMDsKCgoKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0SXNDb2xsYXBzZWQoUFJCb29sICphSXNDb2xsYXBzZWQpID0gMDsKCgoK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UmFuZ2VDb3VudChQUkludDMyICphUmFuZ2VDb3VudCkg
PSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRSYW5nZUF0KFBSSW50MzIgaW5kZXgsIG5z
SURPTVJhbmdlICoqX3JldHZhbCkgPSAwOwojIDkxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29u
dGVudC9uc0lTZWxlY3Rpb24uaCIKICB2aXJ0dWFsIG5zcmVzdWx0IENvbGxhcHNlKG5zSURPTU5v
ZGUgKnBhcmVudE5vZGUsIFBSSW50MzIgb2Zmc2V0KSA9IDA7CiMgMTAxICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvY29udGVudC9uc0lTZWxlY3Rpb24uaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEV4dGVu
ZChuc0lET01Ob2RlICpwYXJlbnROb2RlLCBQUkludDMyIG9mZnNldCkgPSAwOwoKCgoKCgoKICB2
aXJ0dWFsIG5zcmVzdWx0IENvbGxhcHNlVG9TdGFydCh2b2lkKSA9IDA7CgoKCgoKCgogIHZpcnR1
YWwgbnNyZXN1bHQgQ29sbGFwc2VUb0VuZCh2b2lkKSA9IDA7CiMgMTI3ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvY29udGVudC9uc0lTZWxlY3Rpb24uaCIKICB2aXJ0dWFsIG5zcmVzdWx0IENvbnRh
aW5zTm9kZShuc0lET01Ob2RlICpub2RlLCBQUkJvb2wgZW50aXJlbHlDb250YWluZWQsIFBSQm9v
bCAqX3JldHZhbCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2VsZWN0QWxsQ2hpbGRy
ZW4obnNJRE9NTm9kZSAqcGFyZW50Tm9kZSkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBB
ZGRSYW5nZShuc0lET01SYW5nZSAqcmFuZ2UpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQg
UmVtb3ZlUmFuZ2UobnNJRE9NUmFuZ2UgKnJhbmdlKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVz
dWx0IFJlbW92ZUFsbFJhbmdlcyh2b2lkKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IERl
bGV0ZUZyb21Eb2N1bWVudCh2b2lkKSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2Vs
ZWN0aW9uTGFuZ3VhZ2VDaGFuZ2UoUFJCb29sIGxhbmdSVEwpID0gMDsKCgoKCgogIHZpcnR1YWwg
bnNyZXN1bHQgVG9TdHJpbmcoUFJVbmljaGFyICoqX3JldHZhbCkgPSAwOwoKfTsKIyAyNzQgIm5z
RE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJ
Qm94T2JqZWN0LmgiIDEKIyAxNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lCb3hP
YmplY3QuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSUJveExheW91dE1h
bmFnZXIuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSUJveExheW91
dE1hbmFnZXIuaCIKY2xhc3MgbnNJQm94TGF5b3V0TWFuYWdlciA6IHB1YmxpYyBuc0lTdXBwb3J0
cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25z
dCBuc0lJRCBpaWQgPSB7MHhkYzA2Yjg5MCwgMHgxNWExLCAweDQ1YTksIHsgMHhhMSwgMHhhMywg
MHhmMSwgMHg0NCwgMHhiNCwgMHgyZSwgMHhlYSwgMHgyOSB9fTsgcmV0dXJuIGlpZDt9CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IExheW91dCh2b2lkKSA9IDA7Cgp9OwojIDg0ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvbGF5b3V0L25zSUJveExheW91dE1hbmFnZXIuaCIKbnNyZXN1bHQKTlNfTmV3Qm94
TGF5b3V0TWFuYWdlcihuc0lCb3hMYXlvdXRNYW5hZ2VyKiogYVJlc3VsdCk7CiMgMTUgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJQm94T2JqZWN0LmgiIDIKCgoKIyAxICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSUJveFBhaW50TWFuYWdlci5oIiAxCiMgMjUgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJQm94UGFpbnRNYW5hZ2VyLmgiCmNsYXNzIG5zSUJv
eFBhaW50TWFuYWdlciA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBj
b25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHg1ZGExZThm
MCwgMHg2MjU1LCAweDRiOWMsIHsgMHhhZiwgMHg4MCwgMHhhYSwgMHgzZCwgMHhhZCwgMHg3Ziwg
MHgyZiwgMHhkYiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFBhaW50KHZv
aWQpID0gMDsKCn07CiMgODQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJQm94UGFp
bnRNYW5hZ2VyLmgiCm5zcmVzdWx0Ck5TX05ld0JveFBhaW50TWFuYWdlcihuc0lCb3hQYWludE1h
bmFnZXIqKiBhUmVzdWx0KTsKIyAxOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lC
b3hPYmplY3QuaCIgMgoKCgoKCgpjbGFzcyBuc0lET01FbGVtZW50OwojIDM1ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbGF5b3V0L25zSUJveE9iamVjdC5oIgpjbGFzcyBuc0lCb3hPYmplY3QgOiBw
dWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJ
RCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4Y2FhYmY3NmYsIDB4OWQzNSwgMHg0MDFm
LCB7IDB4YmUsIDB4YWMsIDB4MzksIDB4NTUsIDB4ODEsIDB4N2MsIDB4NjQsIDB4NWMgfX07IHJl
dHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRFbGVtZW50KG5zSURPTUVsZW1lbnQg
KiAqYUVsZW1lbnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGF5b3V0TWFuYWdlcihu
c0lCb3hMYXlvdXRNYW5hZ2VyICogKmFMYXlvdXRNYW5hZ2VyKSA9IDA7CiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXRMYXlvdXRNYW5hZ2VyKG5zSUJveExheW91dE1hbmFnZXIgKiBhTGF5b3V0TWFuYWdl
cikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQYWludE1hbmFnZXIobnNJQm94UGFpbnRN
YW5hZ2VyICogKmFQYWludE1hbmFnZXIpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFBhaW50
TWFuYWdlcihuc0lCb3hQYWludE1hbmFnZXIgKiBhUGFpbnRNYW5hZ2VyKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldFgoUFJJbnQzMiAqYVgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0WShQUkludDMyICphWSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTY3JlZW5YKFBS
SW50MzIgKmFTY3JlZW5YKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNjcmVlblkoUFJJ
bnQzMiAqYVNjcmVlblkpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0V2lkdGgoUFJJbnQz
MiAqYVdpZHRoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEhlaWdodChQUkludDMyICph
SGVpZ2h0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByb3BlcnR5QXNTdXBwb3J0cyhj
b25zdCBQUlVuaWNoYXIgKnByb3BlcnR5TmFtZSwgbnNJU3VwcG9ydHMgKipfcmV0dmFsKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFByb3BlcnR5QXNTdXBwb3J0cyhjb25zdCBQUlVuaWNo
YXIgKnByb3BlcnR5TmFtZSwgbnNJU3VwcG9ydHMgKnZhbHVlKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldFByb3BlcnR5KGNvbnN0IFBSVW5pY2hhciAqcHJvcGVydHlOYW1lLCBQUlVuaWNo
YXIgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFByb3BlcnR5KGNvbnN0
IFBSVW5pY2hhciAqcHJvcGVydHlOYW1lLCBjb25zdCBQUlVuaWNoYXIgKnByb3BlcnR5VmFsdWUp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVtb3ZlUHJvcGVydHkoY29uc3QgUFJVbmljaGFy
ICpwcm9wZXJ0eU5hbWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UGFyZW50Qm94KG5z
SURPTUVsZW1lbnQgKiAqYVBhcmVudEJveCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRG
aXJzdENoaWxkKG5zSURPTUVsZW1lbnQgKiAqYUZpcnN0Q2hpbGQpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0TGFzdENoaWxkKG5zSURPTUVsZW1lbnQgKiAqYUxhc3RDaGlsZCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROZXh0U2libGluZyhuc0lET01FbGVtZW50ICogKmFOZXh0
U2libGluZykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQcmV2aW91c1NpYmxpbmcobnNJ
RE9NRWxlbWVudCAqICphUHJldmlvdXNTaWJsaW5nKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldExvb2tBbmRGZWVsTWV0cmljKGNvbnN0IFBSVW5pY2hhciAqcHJvcGVydHlOYW1lLCBQUlVu
aWNoYXIgKipfcmV0dmFsKSA9IDA7Cgp9OwojIDMzOCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xh
eW91dC9uc0lCb3hPYmplY3QuaCIKbnNyZXN1bHQKTlNfTmV3Qm94T2JqZWN0KG5zSUJveE9iamVj
dCoqIGFSZXN1bHQpOwojIDI3NSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2xheW91dC9uc0lUcmVlU2VsZWN0aW9uLmgiIDEKIyAxNyAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2xheW91dC9uc0lUcmVlU2VsZWN0aW9uLmgiCmNsYXNzIG5zSVRyZWVCb3hP
YmplY3Q7CiMgMjcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJVHJlZVNlbGVjdGlv
bi5oIgpjbGFzcyBuc0lUcmVlU2VsZWN0aW9uIDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1Ymxp
YzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlp
ZCA9IHsweGY4YTEzMzY0LCAweDE4NGUsIDB4NGRhMywgeyAweGJhLCAweGRmLCAweDVjLCAweDA0
LCAweDgzLCAweDc1LCAweDM3LCAweGY4IH19OyByZXR1cm4gaWlkO30KCgoKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0VHJlZShuc0lUcmVlQm94T2JqZWN0ICogKmFUcmVlKSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRUcmVlKG5zSVRyZWVCb3hPYmplY3QgKiBhVHJlZSkgPSAwOwoKCgoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRDb3VudChQUkludDMyICphQ291bnQpID0gMDsKCgoKCgoKICB2
aXJ0dWFsIG5zcmVzdWx0IElzU2VsZWN0ZWQoUFJJbnQzMiBpbmRleCwgUFJCb29sICpfcmV0dmFs
KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNlbGVjdChQUkludDMyIGluZGV4KSA9IDA7
CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFRpbWVkU2VsZWN0KFBSSW50MzIgaW5kZXgsIFBSSW50
MzIgZGVsYXkpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgVG9nZ2xlU2VsZWN0KFBSSW50
MzIgaW5kZXgpID0gMDsKCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSYW5nZWRTZWxlY3QoUFJJ
bnQzMiBzdGFydEluZGV4LCBQUkludDMyIGVuZEluZGV4LCBQUkJvb2wgYXVnbWVudCkgPSAwOwoK
CgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDbGVhclJhbmdlKFBSSW50MzIgc3RhcnRJbmRleCwgUFJJ
bnQzMiBlbmRJbmRleCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDbGVhclNlbGVjdGlv
bih2b2lkKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEludmVydFNlbGVjdGlvbih2b2lk
KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNlbGVjdEFsbCh2b2lkKSA9IDA7CgoKCgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJhbmdlQ291bnQoUFJJbnQzMiAqX3JldHZhbCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRSYW5nZUF0KFBSSW50MzIgaSwgUFJJbnQzMiAqbWluLCBQ
UkludDMyICptYXgpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgSW52YWxpZGF0ZVNlbGVj
dGlvbih2b2lkKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEFkanVzdFNlbGVjdGlvbihQ
UkludDMyIGluZGV4LCBQUkludDMyIGNvdW50KSA9IDA7CiMgMTMxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvbGF5b3V0L25zSVRyZWVTZWxlY3Rpb24uaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNl
bGVjdEV2ZW50c1N1cHByZXNzZWQoUFJCb29sICphU2VsZWN0RXZlbnRzU3VwcHJlc3NlZCkgPSAw
OwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0U2VsZWN0RXZlbnRzU3VwcHJlc3NlZChQUkJvb2wgYVNl
bGVjdEV2ZW50c1N1cHByZXNzZWQpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEN1
cnJlbnRJbmRleChQUkludDMyICphQ3VycmVudEluZGV4KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRDdXJyZW50SW5kZXgoUFJJbnQzMiBhQ3VycmVudEluZGV4KSA9IDA7CgoKCgoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRTaGlmdFNlbGVjdFBpdm90KFBSSW50MzIgKmFTaGlmdFNlbGVjdFBp
dm90KSA9IDA7Cgp9OwojIDI3NiAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2xheW91dC9uc0lUcmVlQ29udGVudFZpZXcuaCIgMQojIDI5ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVRyZWVDb250ZW50Vmlldy5oIgpjbGFzcyBuc0lUcmVl
Q29udGVudFZpZXcgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29u
c3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4OTcyYWU5ZmYs
IDB4YzdiMywgMHg0YjYwLCB7IDB4YTUsIDB4MWUsIDB4YTIsIDB4MGEsIDB4OWQsIDB4ZTMsIDB4
NjksIDB4NDcgfX07IHJldHVybiBpaWQ7fQoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRSb290
KG5zSURPTUVsZW1lbnQgKiAqYVJvb3QpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
SXRlbUF0SW5kZXgoUFJJbnQzMiBpbmRleCwgbnNJRE9NRWxlbWVudCAqKl9yZXR2YWwpID0gMDsK
CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SW5kZXhPZkl0ZW0obnNJRE9NRWxlbWVudCAqaXRl
bSwgUFJJbnQzMiAqX3JldHZhbCkgPSAwOwoKfTsKIyAyNzcgIm5zRE9NQ2xhc3NJbmZvLmNwcCIg
MgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJVHJlZVZpZXcuaCIgMQojIDEw
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVRyZWVWaWV3LmgiCiMgMSAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lUcmVlQm94T2JqZWN0LmgiIDEKIyAyMSAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lUcmVlQm94T2JqZWN0LmgiCmNsYXNzIG5zSVRyZWVW
aWV3OwoKY2xhc3MgbnNJVHJlZVNlbGVjdGlvbjsKCmNsYXNzIG5zSURPTUV2ZW50OwojIDM1ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVRyZWVCb3hPYmplY3QuaCIKY2xhc3MgbnNJ
VHJlZUJveE9iamVjdCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBj
b25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHg0NDQ4MTM4
NSwgMHhiMWRhLCAweDQ4MGEsIHsgMHg5MCwgMHgyNiwgMHgxZiwgMHgwMiwgMHgzMiwgMHhjNCwg
MHhlZSwgMHg1OSB9fTsgcmV0dXJuIGlpZDt9CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
Vmlldyhuc0lUcmVlVmlldyAqICphVmlldykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Vmll
dyhuc0lUcmVlVmlldyAqIGFWaWV3KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEZv
Y3VzZWQoUFJCb29sICphRm9jdXNlZCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Rm9jdXNl
ZChQUkJvb2wgYUZvY3VzZWQpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VHJlZUJv
ZHkobnNJRE9NRWxlbWVudCAqICphVHJlZUJvZHkpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0U2VsZWN0aW9uKG5zSVRyZWVTZWxlY3Rpb24gKiAqYVNlbGVjdGlvbikgPSAwOwoKCgoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRSb3dIZWlnaHQoUFJJbnQzMiAqYVJvd0hlaWdodCkgPSAw
OwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb2x1bW5JbmRleChjb25zdCBQUlVuaWNoYXIg
KmNvbElELCBQUkludDMyICpfcmV0dmFsKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dENvbHVtbklEKFBSSW50MzIgY29sSW5kZXgsIG5zQVN0cmluZyAmIF9yZXR2YWwpID0gMDsKCgoK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0S2V5Q29sdW1uSW5kZXgoUFJJbnQzMiAqX3JldHZhbCkg
PSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGaXJzdFZpc2libGVSb3coUFJJbnQzMiAq
X3JldHZhbCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMYXN0VmlzaWJsZVJvdyhQ
UkludDMyICpfcmV0dmFsKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBhZ2VDb3Vu
dChQUkludDMyICpfcmV0dmFsKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEVuc3VyZVJv
d0lzVmlzaWJsZShQUkludDMyIGluZGV4KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNj
cm9sbFRvUm93KFBSSW50MzIgaW5kZXgpID0gMDsKCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBT
Y3JvbGxCeUxpbmVzKFBSSW50MzIgbnVtTGluZXMpID0gMDsKIyAxMzcgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9sYXlvdXQvbnNJVHJlZUJveE9iamVjdC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgU2Ny
b2xsQnlQYWdlcyhQUkludDMyIG51bVBhZ2VzKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEludmFsaWRhdGUodm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJbnZhbGlkYXRlQ29s
dW1uKGNvbnN0IFBSVW5pY2hhciAqY29sSUQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSW52
YWxpZGF0ZVJvdyhQUkludDMyIGluZGV4KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEludmFs
aWRhdGVDZWxsKFBSSW50MzIgcm93LCBjb25zdCBQUlVuaWNoYXIgKmNvbElEKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEludmFsaWRhdGVQcmltYXJ5Q2VsbChQUkludDMyIHJvdykgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBJbnZhbGlkYXRlUmFuZ2UoUFJJbnQzMiBzdGFydEluZGV4LCBQ
UkludDMyIGVuZEluZGV4KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEludmFsaWRhdGVTY3Jv
bGxiYXIodm9pZCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Um93QXQoUFJJbnQz
MiB4LCBQUkludDMyIHksIFBSSW50MzIgKl9yZXR2YWwpID0gMDsKIyAxNzcgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9sYXlvdXQvbnNJVHJlZUJveE9iamVjdC5oIgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0Q2VsbEF0KFBSSW50MzIgeCwgUFJJbnQzMiB5LCBQUkludDMyICpyb3csIFBSVW5pY2hhciAq
KmNvbElELCBQUlVuaWNoYXIgKipjaGlsZEVsdCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRDb29yZHNGb3JDZWxsSXRlbShQUkludDMyIHJvdywgY29uc3QgUFJVbmljaGFyICpjb2xJ
RCwgY29uc3QgUFJVbmljaGFyICplbGVtZW50LCBQUkludDMyICp4LCBQUkludDMyICp5LCBQUklu
dDMyICp3aWR0aCwgUFJJbnQzMiAqaGVpZ2h0KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0
IElzQ2VsbENyb3BwZWQoUFJJbnQzMiByb3csIGNvbnN0IG5zQVN0cmluZyAmIGNvbElELCBQUkJv
b2wgKl9yZXR2YWwpID0gMDsKIyAxOTggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJ
VHJlZUJveE9iamVjdC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgUm93Q291bnRDaGFuZ2VkKFBSSW50
MzIgaW5kZXgsIFBSSW50MzIgY291bnQpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgT25E
cmFnRW50ZXIobnNJRE9NRXZlbnQgKmV2ZW50KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IE9u
RHJhZ0V4aXQobnNJRE9NRXZlbnQgKmV2ZW50KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IE9u
RHJhZ092ZXIobnNJRE9NRXZlbnQgKmV2ZW50KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IE9u
RHJhZ0Ryb3AobnNJRE9NRXZlbnQgKmV2ZW50KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0
IENsZWFyU3R5bGVBbmRJbWFnZUNhY2hlcyh2b2lkKSA9IDA7Cgp9OwojIDExICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbGF5b3V0L25zSVRyZWVWaWV3LmgiIDIKIyAyNSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2xheW91dC9uc0lUcmVlVmlldy5oIgpjbGFzcyBuc0lUcmVlU2VsZWN0aW9uOwojIDM1
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVRyZWVWaWV3LmgiCmNsYXNzIG5zSVRy
ZWVWaWV3IDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5z
SUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDU4YTUzNzM0LCAweDE4
MzcsIDB4NGYzMCwgeyAweDliLCAweGZkLCAweGVlLCAweDU4LCAweGY2LCAweDNjLCAweGEwLCAw
eDQ5IH19OyByZXR1cm4gaWlkO30KCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Um93Q291bnQo
UFJJbnQzMiAqYVJvd0NvdW50KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNlbGVj
dGlvbihuc0lUcmVlU2VsZWN0aW9uICogKmFTZWxlY3Rpb24pID0gMDsKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldFNlbGVjdGlvbihuc0lUcmVlU2VsZWN0aW9uICogYVNlbGVjdGlvbikgPSAwOwoKCgoK
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJvd1Byb3BlcnRpZXMoUFJJbnQzMiBpbmRleCwgbnNJ
U3VwcG9ydHNBcnJheSAqcHJvcGVydGllcykgPSAwOwoKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldENlbGxQcm9wZXJ0aWVzKFBSSW50MzIgcm93LCBjb25zdCBQUlVuaWNoYXIgKmNvbElELCBu
c0lTdXBwb3J0c0FycmF5ICpwcm9wZXJ0aWVzKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRDb2x1bW5Qcm9wZXJ0aWVzKGNvbnN0IFBSVW5pY2hhciAqY29sSUQsIG5zSURPTUVsZW1l
bnQgKmNvbEVsdCwgbnNJU3VwcG9ydHNBcnJheSAqcHJvcGVydGllcykgPSAwOwoKCgoKCgogIHZp
cnR1YWwgbnNyZXN1bHQgSXNDb250YWluZXIoUFJJbnQzMiBpbmRleCwgUFJCb29sICpfcmV0dmFs
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IElzQ29udGFpbmVyT3BlbihQUkludDMyIGluZGV4
LCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSXNDb250YWluZXJF
bXB0eShQUkludDMyIGluZGV4LCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKIyA5NiAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2xheW91dC9uc0lUcmVlVmlldy5oIgogIHZpcnR1YWwgbnNyZXN1bHQgSXNT
ZXBhcmF0b3IoUFJJbnQzMiBpbmRleCwgUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKCgoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBJc1NvcnRlZChQUkJvb2wgKl9yZXR2YWwpID0gMDsKCgoKCgoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBDYW5Ecm9wT24oUFJJbnQzMiBpbmRleCwgUFJCb29sICpfcmV0dmFsKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENhbkRyb3BCZWZvcmVBZnRlcihQUkludDMyIGluZGV4
LCBQUkJvb2wgYmVmb3JlLCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKCgoKCgogIGVudW0geyBpbkRy
b3BCZWZvcmUgPSAwIH07CgogIGVudW0geyBpbkRyb3BPbiA9IDEgfTsKCiAgZW51bSB7IGluRHJv
cEFmdGVyID0gMiB9OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBEcm9wKFBSSW50MzIgcm93LCBQUklu
dDMyIG9yaWVudGF0aW9uKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQYXJlbnRJ
bmRleChQUkludDMyIHJvd0luZGV4LCBQUkludDMyICpfcmV0dmFsKSA9IDA7CiMgMTQzICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVRyZWVWaWV3LmgiCiAgdmlydHVhbCBuc3Jlc3Vs
dCBIYXNOZXh0U2libGluZyhQUkludDMyIHJvd0luZGV4LCBQUkludDMyIGFmdGVySW5kZXgsIFBS
Qm9vbCAqX3JldHZhbCkgPSAwOwoKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldExldmVsKFBS
SW50MzIgaW5kZXgsIFBSSW50MzIgKl9yZXR2YWwpID0gMDsKCgoKCgoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRJbWFnZVNyYyhQUkludDMyIHJvdywgY29uc3QgUFJVbmljaGFyICpjb2xJRCwgbnNB
U3RyaW5nICYgX3JldHZhbCkgPSAwOwoKCgoKCiAgZW51bSB7IHByb2dyZXNzTm9ybWFsID0gMSB9
OwoKICBlbnVtIHsgcHJvZ3Jlc3NVbmRldGVybWluZWQgPSAyIH07CgogIGVudW0geyBwcm9ncmVz
c05vbmUgPSAzIH07CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByb2dyZXNzTW9kZShQUkludDMy
IHJvdywgY29uc3QgUFJVbmljaGFyICpjb2xJRCwgUFJJbnQzMiAqX3JldHZhbCkgPSAwOwoKCgoK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q2VsbFZhbHVlKFBSSW50MzIgcm93LCBjb25zdCBQUlVu
aWNoYXIgKmNvbElELCBuc0FTdHJpbmcgJiBfcmV0dmFsKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRDZWxsVGV4dChQUkludDMyIHJvdywgY29uc3QgUFJVbmljaGFyICpjb2xJRCwg
bnNBU3RyaW5nICYgX3JldHZhbCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRUcmVl
KG5zSVRyZWVCb3hPYmplY3QgKnRyZWUpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgVG9n
Z2xlT3BlblN0YXRlKFBSSW50MzIgaW5kZXgpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQg
Q3ljbGVIZWFkZXIoY29uc3QgUFJVbmljaGFyICpjb2xJRCwgbnNJRE9NRWxlbWVudCAqZWx0KSA9
IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZWxlY3Rpb25DaGFuZ2VkKHZvaWQpID0gMDsK
CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ3ljbGVDZWxsKFBSSW50MzIgcm93LCBjb25zdCBQUlVu
aWNoYXIgKmNvbElEKSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgSXNFZGl0YWJsZShQ
UkludDMyIHJvdywgY29uc3QgUFJVbmljaGFyICpjb2xJRCwgUFJCb29sICpfcmV0dmFsKSA9IDA7
CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENlbGxUZXh0KFBSSW50MzIgcm93LCBjb25zdCBQ
UlVuaWNoYXIgKmNvbElELCBjb25zdCBQUlVuaWNoYXIgKnZhbHVlKSA9IDA7CgoKCgoKCgogIHZp
cnR1YWwgbnNyZXN1bHQgUGVyZm9ybUFjdGlvbihjb25zdCBQUlVuaWNoYXIgKmFjdGlvbikgPSAw
OwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBQZXJmb3JtQWN0aW9uT25Sb3coY29uc3QgUFJVbmlj
aGFyICphY3Rpb24sIFBSSW50MzIgcm93KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFBl
cmZvcm1BY3Rpb25PbkNlbGwoY29uc3QgUFJVbmljaGFyICphY3Rpb24sIFBSSW50MzIgcm93LCBj
b25zdCBQUlVuaWNoYXIgKmNvbElEKSA9IDA7Cgp9OwojIDI3OCAibnNET01DbGFzc0luZm8uY3Bw
IiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01YUGF0aEV2YWx1YXRvci5o
IiAxCiMgMTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NWFBhdGhFdmFsdWF0b3Iu
aCIKY2xhc3MgbnNJRE9NWFBhdGhOU1Jlc29sdmVyOwoKY2xhc3MgbnNJRE9NWFBhdGhSZXN1bHQ7
CgpjbGFzcyBuc0lET01YUGF0aEV4cHJlc3Npb247CgpjbGFzcyBYUGF0aEV4Y2VwdGlvbjsKIyAz
MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01YUGF0aEV2YWx1YXRvci5oIgpjbGFz
cyBuc0lET01YUGF0aEV2YWx1YXRvciA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6Cgog
IHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7
MHg3NTUwNmY4YSwgMHhiNTA0LCAweDExZDUsIHsgMHhhNywgMHhmMiwgMHhjYSwgMHgxMCwgMHg4
YSwgMHhiOCwgMHhiNiwgMHhmYyB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IENyZWF0ZUV4cHJlc3Npb24oY29uc3QgbnNBU3RyaW5nICYgZXhwcmVzc2lvbiwgbnNJRE9NWFBh
dGhOU1Jlc29sdmVyICpyZXNvbHZlciwgbnNJRE9NWFBhdGhFeHByZXNzaW9uICoqX3JldHZhbCkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDcmVhdGVOU1Jlc29sdmVyKG5zSURPTU5vZGUgKm5v
ZGVSZXNvbHZlciwgbnNJRE9NWFBhdGhOU1Jlc29sdmVyICoqX3JldHZhbCkgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBFdmFsdWF0ZShjb25zdCBuc0FTdHJpbmcgJiBleHByZXNzaW9uLCBuc0lE
T01Ob2RlICpjb250ZXh0Tm9kZSwgbnNJRE9NWFBhdGhOU1Jlc29sdmVyICpyZXNvbHZlciwgUFJV
aW50MTYgdHlwZSwgbnNJRE9NWFBhdGhSZXN1bHQgKnJlc3VsdCwgbnNJRE9NWFBhdGhSZXN1bHQg
KipfcmV0dmFsKSA9IDA7Cgp9OwojIDI3OSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMzEyICJu
c0RPTUNsYXNzSW5mby5jcHAiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJ
SW1hZ2VEb2N1bWVudC5oIiAxCiMgMjggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25z
SUltYWdlRG9jdW1lbnQuaCIKY2xhc3MgbnNJSW1hZ2VEb2N1bWVudCA6IHB1YmxpYyBuc0lTdXBw
b3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBj
b25zdCBuc0lJRCBpaWQgPSB7MHhiNDgyZjZkOCwgMHg0MGE5LCAweDRmMjAsIHsgMHg4OSwgMHhm
MywgMHg3NywgMHgyZCwgMHg0MSwgMHg3YSwgMHg0YywgMHg4MSB9fTsgcmV0dXJuIGlpZDt9CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldEltYWdlUmVzaXppbmdFbmFibGVkKFBSQm9vbCAqYUltYWdl
UmVzaXppbmdFbmFibGVkKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEltYWdlSXNPdmVy
Zmxvd2luZyhQUkJvb2wgKmFJbWFnZUlzT3ZlcmZsb3dpbmcpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0SW1hZ2VJc1Jlc2l6ZWQoUFJCb29sICphSW1hZ2VJc1Jlc2l6ZWQpID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgU2hyaW5rVG9GaXQodm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBSZXN0b3JlSW1hZ2Uodm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBUb2dnbGVJ
bWFnZVNpemUodm9pZCkgPSAwOwoKfTsKIyAzMTMgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgoKc3Rh
dGljIGNvbnN0IG5zQ0lEIGtDUGx1Z2luTWFuYWdlckNJRCA9IHsgMHhjZTc2ODk5MCwgMHg1YTRl
LCAweDExZDIsIHsweDgxLCAweDY0LCAweDAwLCAweDYwLCAweDA4LCAweDExLCAweDlkLCAweDdh
fSB9OwpzdGF0aWMgY29uc3QgbnNDSUQga0RPTVNPRl9DSUQgPSB7IDB4OWViNzYwZjAsIDB4NDM4
MCwgMHgxMWQyLCB7MHhiMywgMHgyOCwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHgzOCwgMHg1
OX0gfTsKIyAzODQgIm5zRE9NQ2xhc3NJbmZvLmNwcCIKc3RhdGljIG5zRE9NQ2xhc3NJbmZvRGF0
YSBzQ2xhc3NJbmZvRGF0YVtdID0gewojIDM5NCAibnNET01DbGFzc0luZm8uY3BwIgogIHsgIldp
bmRvdyIsIHsgbnNXaW5kb3dTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKG5zSVhQQ1NjcmlwdGFi
bGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pT
U1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9T
RVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVT
T0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBu
c0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRh
YmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNT
IHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfR0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZIHwg
bnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5U
X0ZJTkFMSVpFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OldBTlRfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0VOVU1F
UkFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UsIDEsIH0s
CiMgNDA2ICJuc0RPTUNsYXNzSW5mby5jcHAiCiAgeyAiTG9jYXRpb24iLCB7IG5zTG9jYXRpb25T
SDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZP
Ul9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BF
UlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lY
UENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3Jp
cHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05U
X1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNP
TFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFi
bGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllf
SU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkg
JiB+bnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSwgMSwgfSwK
CgoKICB7ICJOYXZpZ2F0b3IiLCB7IG5zRE9NR2VuZXJpY1NIOjpkb0NyZWF0ZSB9LCAwLCAwLCAw
LCAoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBD
U2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxl
OjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BS
T1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9E
U19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1Jf
U0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFN
RVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8
IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3Jp
cHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwgfSwKCiAgeyAiUGx1Z2luIiwg
eyBuc1BsdWdpblNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKChuc0lYUENTY3JpcHRhYmxlOjpV
U0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJf
Rk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJP
UEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUg
fCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBD
U2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3Jp
cHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6
V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05U
X0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVS
RkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0dFVFBST1BFUlRZKSwgMSwgfSwK
CiAgeyAiUGx1Z2luQXJyYXkiLCB7IG5zUGx1Z2luQXJyYXlTSDo6ZG9DcmVhdGUgfSwgMCwgMCwg
MCwgKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lY
UENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1df
UFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9N
T0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZP
Ul9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9O
QU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUp
IHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6
V0FOVF9HRVRQUk9QRVJUWSksIDEsIH0sCgogIHsgIk1pbWVUeXBlIiwgeyBuc0RPTUdlbmVyaWNT
SDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZP
Ul9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BF
UlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lY
UENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3Jp
cHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05U
X1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNP
TFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFi
bGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllf
SU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSks
IDEsIH0sCgogIHsgIk1pbWVUeXBlQXJyYXkiLCB7IG5zTWltZVR5cGVBcnJheVNIOjpkb0NyZWF0
ZSB9LCAwLCAwLCAwLCAoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9Q
RVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRh
YmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpB
TExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tf
SU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1Rf
SU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRf
UE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNF
IHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX0dFVFBST1BFUlRZKSwgMSwgfSwKCiAgeyAiQmFyUHJvcCIsIHsgbnNE
T01HZW5lcmljU0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgobnNJWFBDU2NyaXB0YWJsZTo6VVNF
X0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZP
Ul9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BF
UlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwg
bnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldB
TlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lY
UENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9F
TlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZB
Q0VTX09OTFkpLCAxLCB9LAoKICB7ICJIaXN0b3J5IiwgeyBuc0hpc3RvcnlTSDo6ZG9DcmVhdGUg
fSwgMCwgMCwgMCwgKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVS
VFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxM
T1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lO
U1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lO
VEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BP
U1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8
IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6V0FOVF9HRVRQUk9QRVJUWSksIDEsIH0sCgogIHsgIlNjcmVlbiIsIHsgbnNET01H
ZW5lcmljU0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pT
U1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9E
RUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZ
IHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRf
TkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVN
X1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VT
X09OTFkpLCAxLCB9LAoKCgogIHsgIlhNTERvY3VtZW50IiwgeyBuc0RvY3VtZW50U0g6OmRvQ3Jl
YXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQURE
UFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8
IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRf
QVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZM
RUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8
IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpX
QU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVS
RkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FE
RFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBD
U2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfREVMUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0dFVFBST1BFUlRZKSB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfRU5VTUVSQVRFLCAxLCB9LAoKCiAgeyAiRG9jdW1lbnRUeXBlIiwgeyBuc05vZGVTSDo6
ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9S
X0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVS
VFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpE
T05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRf
UkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09M
VkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9J
TlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSB8
IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JFQVRFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfU0VUUFJPUEVSVFkpICYgfm5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZKSwgMSwgfSwKCiAgeyAi
RE9NSW1wbGVtZW50YXRpb24iLCB7IG5zRE9NR2VuZXJpY1NIOjpkb0NyZWF0ZSB9LCAwLCAwLCAw
LCAoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBD
U2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxl
OjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BS
T1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9E
U19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1Jf
U0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFN
RVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8
IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3Jp
cHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwgfSwKCiAgeyAiRE9NRXhjZXB0
aW9uIiwgeyBuc0RPTUdlbmVyaWNTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKChuc0lYUENTY3Jp
cHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVT
RV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9G
T1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5H
X1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBF
IHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBu
c0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FD
Q0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRh
YmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJ
TkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkRvY3VtZW50RnJhZ21lbnQiLCB7IG5z
RE9NR2VuZXJpY1NIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKG5zSVhQQ1NjcmlwdGFibGU6OlVT
RV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9G
T1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9Q
RVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8
IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpX
QU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRf
RU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJG
QUNFU19PTkxZKSwgMSwgfSwKCiAgeyAiRWxlbWVudCIsIHsgbnNFbGVtZW50U0g6OmRvQ3JlYXRl
IH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJP
UEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNL
X0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNU
X0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5U
X1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFD
RSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBD
U2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBS
T1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2Ny
aXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6
OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7ICJBdHRyIiwgeyBuc0RPTUdl
bmVyaWNTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNT
VFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RF
TFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lY
UENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxl
OjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9O
RVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1Nj
cmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1f
UVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNf
T05MWSksIDEsIH0sCgogIHsgIlRleHQiLCB7IG5zTm9kZVNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAw
LCAoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lY
UENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1df
UFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9N
T0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZP
Ul9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9O
QU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUp
IHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6
V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNF
X0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpLCAxLCB9LAoKICB7ICJDb21tZW50IiwgeyBuc05vZGVT
SDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJf
Rk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJP
UEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxl
OjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRP
TlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JF
U09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVS
WV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZ
KSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JFQVRFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfU0VUUFJPUEVSVFkpICYg
fm5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZKSwgMSwgfSwKCiAg
eyAiQ0RBVEFTZWN0aW9uIiwgeyBuc05vZGVTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKG5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0Vf
SlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9E
U19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19Q
Uk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBU
QUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5U
X0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxl
OjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUFJF
Q1JFQVRFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1Njcmlw
dGFibGU6OldBTlRfU0VUUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJf
Rk9SX0FERFBST1BFUlRZKSwgMSwgfSwKICB7ICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24iLCB7IG5z
Tm9kZVNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pT
U1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9E
RUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZ
IHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRf
TkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVN
X1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VT
X09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRh
YmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJU
WSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpLCAxLCB9
LAoKICB7ICJFbnRpdHkiLCB7IG5zTm9kZVNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKCgobnNJ
WFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRh
YmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9K
U1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RT
X0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BS
T1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRB
QkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRf
Q0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBD
U2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVD
UkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9G
T1JfQUREUFJPUEVSVFkpLCAxLCB9LAogIHsgIkVudGl0eVJlZmVyZW5jZSIsIHsgbnNOb2RlU0g6
OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZP
Ul9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BF
UlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lY
UENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3Jp
cHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05U
X1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNP
TFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFi
bGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllf
SU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkg
fCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldB
TlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5u
c0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSksIDEsIH0sCiAgeyAi
Tm90YXRpb24iLCB7IG5zTm9kZVNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKCgobnNJWFBDU2Ny
aXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpV
U0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJf
Rk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklO
R19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQ
RSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwg
bnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1Nj
cmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tB
Q0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0
YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNT
SU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUg
fCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6
V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQURE
UFJPUEVSVFkpLCAxLCB9LAogIHsgIk5vZGVMaXN0IiwgeyBuc0FycmF5U0g6OmRvQ3JlYXRlIH0s
IDAsIDAsIDAsICgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZ
IHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENT
Y3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9X
X1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNU
QU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRF
UkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NU
Q1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBu
c0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSB8IG5zSVhQQ1Njcmlw
dGFibGU6OldBTlRfR0VUUFJPUEVSVFkpLCAxLCB9LAogIHsgIk5hbWVkTm9kZU1hcCIsIHsgbnNO
YW1lZE5vZGVNYXBTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgobnNJWFBDU2NyaXB0YWJsZTo6
VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVC
X0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBS
T1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZF
IHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9O
VF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRF
UkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9HRVRQUk9QRVJUWSksIDEsIH0s
CgoKCgoKICB7ICJTdHlsZVNoZWV0TGlzdCIsIHsgbnNTdHlsZVNoZWV0TGlzdFNIOjpkb0NyZWF0
ZSB9LCAwLCAwLCAwLCAoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9Q
RVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRh
YmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpB
TExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tf
SU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1Rf
SU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRf
UE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNF
IHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX0dFVFBST1BFUlRZKSwgMSwgfSwKCgoKCiAgeyAiRXZlbnQiLCB7IG5z
RE9NR2VuZXJpY1NIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKG5zSVhQQ1NjcmlwdGFibGU6OlVT
RV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9G
T1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9Q
RVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8
IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpX
QU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRf
RU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJG
QUNFU19PTkxZKSwgMSwgfSwKCiAgeyAiTXV0YXRpb25FdmVudCIsIHsgbnNET01HZW5lcmljU0g6
OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1Jf
QUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJU
WSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBD
U2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRP
TlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9S
RUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xW
RSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lO
VEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAx
LCB9LAoKCgogIHsgIkhUTUxEb2N1bWVudCIsIHsgbnNIVE1MRG9jdW1lbnRTSDo6ZG9DcmVhdGUg
fSwgMCwgMCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9Q
RVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRh
YmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpB
TExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tf
SU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1Rf
SU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRf
UE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNF
IHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJP
UEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3Jp
cHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpX
QU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ERUxQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfR0VUUFJPUEVSVFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9FTlVNRVJBVEUsIDEsIH0sCgoKICB7ICJIVE1MQ29sbGVjdGlvbiIsIHsgbnNIVE1MQ29sbGVj
dGlvblNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNT
VFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RF
TFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lY
UENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxl
OjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9O
RVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1Nj
cmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1f
UVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNf
T05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0dFVFBST1BFUlRZKSwgMSwgfSwKCiAgeyAi
SFRNTE9wdGlvbkNvbGxlY3Rpb24iLCB7IG5zSFRNTE9wdGlvbkNvbGxlY3Rpb25TSDo6ZG9DcmVh
dGUgfSwgMCwgMCwgMCwgKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJP
UEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNL
X0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNU
X0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5U
X1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFD
RSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBD
U2NyaXB0YWJsZTo6V0FOVF9HRVRQUk9QRVJUWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NF
VFBST1BFUlRZLCAxLCB9LAoKCgogIHsgIkhUTUxDb2xsZWN0aW9uIiwgeyBuc0Zvcm1Db250cm9s
TGlzdFNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNT
VFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RF
TFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lY
UENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxl
OjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9O
RVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1Nj
cmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1f
UVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNf
T05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0dFVFBST1BFUlRZKSwgMSwgfSwKCgogIHsg
IkhUTUxDb2xsZWN0aW9uIiwgeyBuc0hUTUxDb2xsZWN0aW9uU0g6OmRvQ3JlYXRlIH0sIDAsIDAs
IDAsICgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRh
YmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9X
X1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1Bf
TU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9G
T1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0Vf
TkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRh
YmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRF
KSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENT
Y3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfR0VUUFJPUEVSVFkpLCAxLCB9LAoKCgoKICB7ICJIVE1MQW5jaG9yRWxlbWVudCIsIHsg
bnNIVE1MRWxlbWVudFNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKCgoKG5zSVhQQ1NjcmlwdGFi
bGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pT
U1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9T
RVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVT
T0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBu
c0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRh
YmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNT
IHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9f
SU5URVJGQUNFU19PTkxZKSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JFQVRFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRf
U0VUUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BF
UlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwg
fSwKCiAgeyAiSFRNTEFwcGxldEVsZW1lbnQiLCB7IG5zSFRNTEFwcGxldEVsZW1lbnRTSDo6ZG9D
cmVhdGUgfSwgMCwgMCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9B
RERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZ
IHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENT
Y3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRh
YmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9O
VF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JF
RkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZF
IHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5U
RVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRf
QUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lY
UENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0
YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxBcmVhRWxl
bWVudCIsIHsgbnNIVE1MRWxlbWVudFNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKCgoKG5zSVhQ
Q1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNT
VFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19E
VVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9U
T1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJM
RSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lY
UENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NI
RUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpD
TEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JF
QVRFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OldBTlRfU0VUUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9S
X0FERFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19P
TkxZKSwgMSwgfSwKCiAgeyAiSFRNTEJSRWxlbWVudCIsIHsgbnNIVE1MRWxlbWVudFNIOjpkb0Ny
ZWF0ZSB9LCAwLCAwLCAwLCAoKCgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FE
RFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05U
X0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVG
TEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUg
fCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6
V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRF
UkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JFQVRFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9B
RERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfU0VUUFJPUEVSVFkpICYgfm5zSVhQ
Q1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRh
YmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwgfSwKCiAgeyAiSFRNTEJhc2VFbGVt
ZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBD
U2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxl
OjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NU
VUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RV
UklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RP
VFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxF
IHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hF
Q0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNM
QVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVB
VEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1Jf
QUREUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09O
TFkpLCAxLCB9LAoKICB7ICJIVE1MQmFzZUZvbnRFbGVtZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6
OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9G
T1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9Q
RVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9O
VF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVT
T0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRh
YmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZ
X0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkp
IHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpX
QU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+
bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1Nj
cmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7ICJIVE1MQm9k
eUVsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChu
c0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1Njcmlw
dGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNF
X0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01P
RFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9f
UFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQ
VEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwg
bnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lY
UENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BS
RUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3Jp
cHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVC
X0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFD
RVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxCdXR0b25FbGVtZW50IiwgeyBuc0hUTUxFbGVtZW50
U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RV
Ql9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQ
Uk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwg
bnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBD
U2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVX
UkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3Jp
cHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FV
RVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09O
TFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkg
JiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQ
Q1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7ICJIVE1M
RExpc3RFbGVtZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgo
KCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENT
Y3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6
OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJP
UF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RT
X1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9T
Q1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1F
UyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwg
bnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBD
U2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pT
U1RVQl9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRF
UkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7ICJIVE1MRGVsRWxlbWVudCIsIHsgbnNIVE1MRWxlbWVu
dFNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKCgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NU
VUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVM
UFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8
IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRh
YmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05F
V1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9R
VUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19P
TkxZKSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JFQVRFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfU0VUUFJPUEVSVFkp
ICYgfm5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZKSAmIH5uc0lY
UENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwgfSwKCiAgeyAiSFRN
TERpcmVjdG9yeUVsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwg
MCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExP
V19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9Q
X01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0Vf
Rk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNF
X05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFU
RSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBD
U2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpV
U0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZP
X0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxEaXZFbGVtZW50IiwgeyBuc0hUTUxF
bGVtZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNF
X0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZP
Ul9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BF
UlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwg
bnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldB
TlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lY
UENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9F
TlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZB
Q0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3Jp
cHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9Q
RVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpICYg
fm5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7
ICJIVE1MRW1iZWRFbGVtZW50IiwgeyBuc0hUTUxQbHVnaW5PYmpFbGVtZW50U0g6OmRvQ3JlYXRl
IH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJP
UEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNL
X0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNU
X0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5U
X1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFD
RSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBD
U2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBS
T1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2Ny
aXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6
OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7ICJIVE1MRmllbGRTZXRFbGVt
ZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBD
U2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxl
OjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NU
VUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RV
UklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RP
VFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxF
IHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hF
Q0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNM
QVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVB
VEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1Jf
QUREUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09O
TFkpLCAxLCB9LAoKICB7ICJIVE1MRm9udEVsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9D
cmVhdGUgfSwgMCwgMCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9B
RERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZ
IHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENT
Y3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRh
YmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9O
VF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JF
RkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZF
IHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5U
RVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRf
QUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lY
UENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0
YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxGb3JtRWxl
bWVudCIsIHsgbnNIVE1MRm9ybUVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChu
c0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1Njcmlw
dGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNF
X0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01P
RFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9f
UFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQ
VEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwg
bnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lY
UENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BS
RUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3Jp
cHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVC
X0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFD
RVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0dFVFBST1BFUlRZIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6V0FOVF9ORVdFTlVNRVJBVEUsIDEsIH0sCgoKCiAgeyAiSFRNTEZyYW1lRWxlbWVu
dCIsIHsgbnNIVE1MRWxlbWVudFNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKCgoKG5zSVhQQ1Nj
cmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6
VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVC
X0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJ
TkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZ
UEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8
IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNL
QUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFT
U0lORk9fSU5URVJGQUNFU19PTkxZKSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JFQVRF
IHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfU0VUUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FE
RFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZ
KSwgMSwgfSwKCiAgeyAiSFRNTEZyYW1lU2V0RWxlbWVudCIsIHsgbnNIVE1MRWxlbWVudFNIOjpk
b0NyZWF0ZSB9LCAwLCAwLCAwLCAoKCgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9S
X0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVS
VFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpE
T05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRf
UkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09M
VkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9J
TlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSB8
IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JFQVRFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfU0VUUFJPUEVSVFkpICYgfm5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZKSAmIH5uc0lYUENTY3Jp
cHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwgfSwKCiAgeyAiSFRNTEhSRWxl
bWVudCIsIHsgbnNIVE1MRWxlbWVudFNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKCgoKG5zSVhQ
Q1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNT
VFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19E
VVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9U
T1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJM
RSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lY
UENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NI
RUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpD
TEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JF
QVRFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OldBTlRfU0VUUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9S
X0FERFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19P
TkxZKSwgMSwgfSwKCiAgeyAiSFRNTEhlYWRFbGVtZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6OmRv
Q3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1Jf
QUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJU
WSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBD
U2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRP
TlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9S
RUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xW
RSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lO
VEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwg
bnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5U
X0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJ
WFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1Njcmlw
dGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7ICJIVE1MSGVhZGlu
Z0VsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChu
c0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1Njcmlw
dGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNF
X0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01P
RFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9f
UFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQ
VEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwg
bnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lY
UENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BS
RUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3Jp
cHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVC
X0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFD
RVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxIdG1sRWxlbWVudCIsIHsgbnNIVE1MRWxlbWVudFNI
Ojpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKCgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJf
Rk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJP
UEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxl
OjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRP
TlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JF
U09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVS
WV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZ
KSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JFQVRFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfU0VUUFJPUEVSVFkpICYg
fm5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZKSAmIH5uc0lYUENT
Y3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwgfSwKCiAgeyAiSFRNTElG
cmFtZUVsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgo
KChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6
VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9Q
X01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNf
VE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1ND
UklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVT
IHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBu
c0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5U
X1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNT
VFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVS
RkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxJbWFnZUVsZW1lbnQiLCB7IG5zSFRNTEVsZW1l
bnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNT
VFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RF
TFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lY
UENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxl
OjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9O
RVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1Nj
cmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1f
UVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNf
T05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZ
KSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJ
WFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhU
TUxJbnB1dEVsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwg
KCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19Q
Uk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01P
RFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9S
X1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05B
TUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkg
fCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpX
QU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lY
UENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0Vf
SlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lO
VEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxJbnNFbGVtZW50IiwgeyBuc0hUTUxFbGVt
ZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pT
U1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9E
RUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZ
IHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRf
TkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVN
X1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VT
X09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRh
YmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJU
WSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpICYgfm5z
SVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7ICJI
VE1MSXNJbmRleEVsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwg
MCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExP
V19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9Q
X01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0Vf
Rk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNF
X05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFU
RSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBD
U2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpV
U0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZP
X0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxMSUVsZW1lbnQiLCB7IG5zSFRNTEVs
ZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0Vf
SlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9S
X0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVS
VFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBu
c0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRh
YmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VO
VU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFD
RVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1Njcmlw
dGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BF
UlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+
bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsg
IkhUTUxMYWJlbEVsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwg
MCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExP
V19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9Q
X01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0Vf
Rk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNF
X05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFU
RSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBD
U2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpV
U0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZP
X0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxMZWdlbmRFbGVtZW50IiwgeyBuc0hU
TUxFbGVtZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6
VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVC
X0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBS
T1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZF
IHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9O
VF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRF
UkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQ
Uk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkp
ICYgfm5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoK
ICB7ICJIVE1MTGlua0VsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwg
MCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8
IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpB
TExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19Q
Uk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFO
Q0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJG
QUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENS
RUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRh
YmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxl
OjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJ
TkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxNYXBFbGVtZW50IiwgeyBuc0hU
TUxFbGVtZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6
VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVC
X0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBS
T1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZF
IHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9O
VF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRF
UkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQ
Uk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkp
ICYgfm5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoK
ICB7ICJIVE1MTWVudUVsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwg
MCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8
IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpB
TExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19Q
Uk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFO
Q0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJG
QUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENS
RUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRh
YmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxl
OjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJ
TkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxNZXRhRWxlbWVudCIsIHsgbnNI
VE1MRWxlbWVudFNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKCgoKG5zSVhQQ1NjcmlwdGFibGU6
OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RV
Ql9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQ
Uk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xW
RSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lY
UENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwg
bnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRP
TlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5U
RVJGQUNFU19PTkxZKSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JFQVRFIHwgbnNJWFBD
U2NyaXB0YWJsZTo6V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfU0VU
UFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZ
KSAmIH5uc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwgfSwK
CiAgeyAiSFRNTE1vZEVsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwg
MCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8
IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpB
TExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19Q
Uk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFO
Q0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJG
QUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENS
RUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRh
YmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxl
OjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJ
TkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxPTGlzdEVsZW1lbnQiLCB7IG5z
SFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxl
OjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NU
VUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VU
UFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09M
VkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8
IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpE
T05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lO
VEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NF
VFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJU
WSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0s
CgogIHsgIkhUTUxPYmplY3RFbGVtZW50IiwgeyBuc0hUTUxQbHVnaW5PYmpFbGVtZW50U0g6OmRv
Q3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1Jf
QUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJU
WSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBD
U2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRP
TlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9S
RUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xW
RSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lO
VEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwg
bnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5U
X0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJ
WFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1Njcmlw
dGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7ICJIVE1MT3B0R3Jv
dXBFbGVtZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgo
bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3Jp
cHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVT
RV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9N
T0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RP
X1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJ
UFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8
IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldB
TlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9Q
UkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RV
Ql9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZB
Q0VTX09OTFkpLCAxLCB9LAoKICB7ICJIVE1MT3B0aW9uRWxlbWVudCIsIHsgbnNIVE1MRWxlbWVu
dFNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKCgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NU
VUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVM
UFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8
IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRh
YmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05F
V1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9R
VUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19P
TkxZKSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JFQVRFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfU0VUUFJPUEVSVFkp
ICYgfm5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZKSAmIH5uc0lY
UENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwgfSwKCiAgeyAiSFRN
TFBhcmFncmFwaEVsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwg
MCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExP
V19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9Q
X01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0Vf
Rk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNF
X05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFU
RSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBD
U2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpV
U0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZP
X0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxQYXJhbUVsZW1lbnQiLCB7IG5zSFRN
TEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpV
U0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJf
Rk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJP
UEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUg
fCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBD
U2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3Jp
cHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6
V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05U
X0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVS
RkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBS
T1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkg
JiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgog
IHsgIkhUTUxQcmVFbGVtZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAs
IDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBu
c0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1Njcmlw
dGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxM
T1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJP
UF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNF
X0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFD
RV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1Njcmlw
dGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVB
VEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwg
bnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6
VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5G
T19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7ICJIVE1MUXVvdGVFbGVtZW50IiwgeyBuc0hU
TUxFbGVtZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6
VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVC
X0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBS
T1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZF
IHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9O
VF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRF
UkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQ
Uk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkp
ICYgfm5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoK
ICB7ICJIVE1MU2NyaXB0RWxlbWVudCIsIHsgbnNIVE1MRWxlbWVudFNIOjpkb0NyZWF0ZSB9LCAw
LCAwLCAwLCAoKCgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZ
IHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENT
Y3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9X
X1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNU
QU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRF
UkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NU
Q1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBu
c0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSB8IG5zSVhQQ1Njcmlw
dGFibGU6OldBTlRfUFJFQ1JFQVRFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9BRERQUk9QRVJU
WSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfU0VUUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFi
bGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpDTEFT
U0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwgfSwKCiAgeyAiSFRNTFNlbGVjdEVsZW1lbnQiLCB7
IG5zSFRNTFNlbGVjdEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChuc0lYUENT
Y3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6
OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RV
Ql9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVS
SU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9U
WVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUg
fCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBD
U2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVD
S0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3Jp
cHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xB
U1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFU
RSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9B
RERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05M
WSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0dFVFBST1BFUlRZLCAxLCB9LAoKCiAgeyAiSFRN
TFNwYWNlckVsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwg
KCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19Q
Uk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01P
RFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9S
X1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05B
TUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkg
fCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpX
QU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lY
UENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0Vf
SlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lO
VEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxTcGFuRWxlbWVudCIsIHsgbnNIVE1MRWxl
bWVudFNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKCgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9K
U1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1Jf
REVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJU
WSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5z
SVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3Jp
cHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5U
X05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBD
U2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5V
TV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNF
U19PTkxZKSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JFQVRFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfU0VUUFJPUEVS
VFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZKSAmIH5u
c0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwgfSwKCiAgeyAi
SFRNTFN0eWxlRWxlbWVudCIsIHsgbnNIVE1MRWxlbWVudFNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAw
LCAoKCgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRh
YmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9X
X1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1Bf
TU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9G
T1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0Vf
TkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRh
YmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRF
KSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENT
Y3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfUFJFQ1JFQVRFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9BRERQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfU0VUUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OlVT
RV9KU1NUVUJfRk9SX0FERFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9f
SU5URVJGQUNFU19PTkxZKSwgMSwgfSwKCiAgeyAiSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQiLCB7
IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChuc0lYUENTY3JpcHRh
YmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9K
U1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1Jf
U0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JF
U09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwg
bnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lY
UENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VT
UyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxl
OjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZP
X0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5U
X1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9Q
RVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEs
IH0sCgogIHsgIkhUTUxUYWJsZUNlbGxFbGVtZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6OmRvQ3Jl
YXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQURE
UFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8
IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRf
QVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZM
RUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8
IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpX
QU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVS
RkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FE
RFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBD
U2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFi
bGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7ICJIVE1MVGFibGVDb2xF
bGVtZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJ
WFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRh
YmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9K
U1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RT
X0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BS
T1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRB
QkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRf
Q0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBD
U2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVD
UkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9G
T1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VT
X09OTFkpLCAxLCB9LAoKICB7ICJIVE1MVGFibGVDb2xHcm91cEVsZW1lbnQiLCB7IG5zSFRNTEVs
ZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0Vf
SlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9S
X0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVS
VFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBu
c0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRh
YmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VO
VU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFD
RVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1Njcmlw
dGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BF
UlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+
bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsg
IkhUTUxUYWJsZUVsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwg
MCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExP
V19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9Q
X01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0Vf
Rk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNF
X05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFU
RSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBD
U2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpV
U0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZP
X0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxUYWJsZVJvd0VsZW1lbnQiLCB7IG5z
SFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxl
OjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NU
VUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VU
UFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09M
VkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8
IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpE
T05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lO
VEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NF
VFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJU
WSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0s
CgogIHsgIkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6OmRvQ3Jl
YXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQURE
UFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8
IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRf
QVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZM
RUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8
IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpX
QU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVS
RkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FE
RFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBD
U2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFi
bGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7ICJIVE1MVGV4dEFyZWFF
bGVtZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJ
WFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRh
YmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9K
U1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RT
X0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BS
T1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRB
QkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRf
Q0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBD
U2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVD
UkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9G
T1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VT
X09OTFkpLCAxLCB9LAoKICB7ICJIVE1MVGl0bGVFbGVtZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6
OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9G
T1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9Q
RVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9O
VF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVT
T0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRh
YmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZ
X0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkp
IHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpX
QU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+
bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1Nj
cmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7ICJIVE1MVUxp
c3RFbGVtZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgo
bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3Jp
cHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVT
RV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9N
T0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RP
X1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJ
UFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8
IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldB
TlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9Q
UkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RV
Ql9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZB
Q0VTX09OTFkpLCAxLCB9LAoKICB7ICJIVE1MVW5rbm93bkVsZW1lbnQiLCB7IG5zSFRNTEVsZW1l
bnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNT
VFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RF
TFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lY
UENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxl
OjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9O
RVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1Nj
cmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1f
UVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNf
T05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZ
KSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJ
WFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhU
TUxXQlJFbGVtZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgo
KCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENT
Y3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6
OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJP
UF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RT
X1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9T
Q1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1F
UyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwg
bnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBD
U2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pT
U1RVQl9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRF
UkZBQ0VTX09OTFkpLCAxLCB9LAoKCgogIHsgIkNTU1N0eWxlUnVsZSIsIHsgbnNET01HZW5lcmlj
U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9G
T1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9Q
RVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9O
VF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVT
T0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRh
YmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZ
X0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkp
LCAxLCB9LAoKICB7ICJDU1NDaGFyc2V0UnVsZSIsIHsgbnNET01HZW5lcmljU0g6OmRvQ3JlYXRl
IH0sIDAsIDAsIDAsICgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVS
VFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxM
T1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lO
U1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lO
VEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BP
U1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8
IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7
ICJDU1NJbXBvcnRSdWxlIiwgeyBuc0RPTUdlbmVyaWNTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwg
KChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6
VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9Q
X01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNf
VE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1ND
UklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVT
IHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBu
c0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkNTU01lZGlhUnVs
ZSIsIHsgbnNET01HZW5lcmljU0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgobnNJWFBDU2NyaXB0
YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0Vf
SlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9S
X1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19S
RVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8
IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1Njcmlw
dGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NF
U1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5G
T19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7ICJDU1NOYW1lU3BhY2VSdWxlIiwgeyBuc0RP
TUdlbmVyaWNTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKChuc0lYUENTY3JpcHRhYmxlOjpVU0Vf
SlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9S
X0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVS
VFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBu
c0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRh
YmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VO
VU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFD
RVNfT05MWSksIDEsIH0sCgogIHsgIkNTU1J1bGVMaXN0IiwgeyBuc0NTU1J1bGVMaXN0U0g6OmRv
Q3JlYXRlIH0sIDAsIDAsIDAsICgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FE
RFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05U
X0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVG
TEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUg
fCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6
V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRF
UkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfR0VUUFJPUEVSVFkpLCAxLCB9LAoKICB7ICJDU1NHcm91cFJ1
bGVSdWxlTGlzdCIsIHsgbnNDU1NSdWxlTGlzdFNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKChu
c0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1Njcmlw
dGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNF
X0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01P
RFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9f
UFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQ
VEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwg
bnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lY
UENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0dF
VFBST1BFUlRZKSwgMSwgfSwKCiAgeyAiTWVkaWFMaXN0IiwgeyBuc01lZGlhTGlzdFNIOjpkb0Ny
ZWF0ZSB9LCAwLCAwLCAwLCAoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBS
T1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBu
c0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FT
S19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVD
VF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZB
Q0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwgfSwK
CiAgeyAiU3R5bGVTaGVldExpc3QiLCB7IG5zRE9NR2VuZXJpY1NIOjpkb0NyZWF0ZSB9LCAwLCAw
LCAwLCAoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExP
V19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9Q
X01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0Vf
Rk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNF
X05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFU
RSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBD
U2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX0dFVFBST1BFUlRZKSwgMSwgfSwKCiAgeyAiQ1NTU3R5bGVTaGVldCIsIHsgbnNET01H
ZW5lcmljU0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pT
U1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9E
RUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZ
IHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRf
TkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVN
X1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VT
X09OTFkpLCAxLCB9LAoKICB7ICJDU1NTdHlsZURlY2xhcmF0aW9uIiwgeyBuc0NTU1N0eWxlRGVj
bFNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVC
X0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBS
T1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBu
c0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpE
T05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdS
RVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1Njcmlw
dGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVF
UllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05M
WSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0dFVFBST1BFUlRZKSwgMSwgfSwKCiAgeyAiQ29t
cHV0ZWRDU1NTdHlsZURlY2xhcmF0aW9uIiwgeyBuc0NTU1N0eWxlRGVjbFNIOjpkb0NyZWF0ZSB9
LCAwLCAwLCAwLCAoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZ
IHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENT
Y3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9X
X1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNU
QU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRF
UkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NU
Q1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBu
c0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwgfSwKCiAgeyAi
Uk9DU1NQcmltaXRpdmVWYWx1ZSIsIHsgbnNET01HZW5lcmljU0g6OmRvQ3JlYXRlIH0sIDAsIDAs
IDAsICgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lY
UENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1df
UFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9N
T0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZP
Ul9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9O
QU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUp
IHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKCgogIHsgIlJhbmdl
IiwgeyBuc0RPTUdlbmVyaWNTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKChuc0lYUENTY3JpcHRh
YmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9K
U1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1Jf
U0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JF
U09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwg
bnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lY
UENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VT
UyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxl
OjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZP
X0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIlNlbGVjdGlvbiIsIHsgbnNET01HZW5lcmlj
U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsIChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZP
Ul9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BF
UlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lY
UENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3Jp
cHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05U
X1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNP
TFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFi
bGU6OldBTlRfUE9TVENSRUFURSksIDEsIH0sCgoKCiAgeyAiWFVMRG9jdW1lbnQiLCB7IG5zRG9j
dW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0Vf
SlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9S
X0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVS
VFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBu
c0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRh
YmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VO
VU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFD
RVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1Njcmlw
dGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BF
UlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfR0VUUFJPUEVSVFkpIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6V0FOVF9FTlVNRVJBVEUsIDEsIH0sCgoKICB7ICJYVUxFbGVtZW50Iiwg
eyBuc0VsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxl
OjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NU
VUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VU
UFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09M
VkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8
IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpE
T05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lO
VEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NF
VFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJU
WSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0s
CgogIHsgIlhVTENvbW1hbmREaXNwYXRjaGVyIiwgeyBuc0RPTUdlbmVyaWNTSDo6ZG9DcmVhdGUg
fSwgMCwgMCwgMCwgKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJU
WSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBD
U2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxl
OjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExP
V19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5T
VEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5U
RVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBD
U2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9T
VENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwg
bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsg
Ik5vZGVMaXN0IiwgeyBuc0FycmF5U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKG5zSVhQQ1Nj
cmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6
VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVC
X0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJ
TkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZ
UEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8
IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNL
QUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFT
U0lORk9fSU5URVJGQUNFU19PTkxZKSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfR0VUUFJPUEVS
VFkpLCAxLCB9LAoKICB7ICJOYW1lZE5vZGVNYXAiLCB7IG5zTmFtZWROb2RlTWFwU0g6OmRvQ3Jl
YXRlIH0sIDAsIDAsIDAsICgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBS
T1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBu
c0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FT
S19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVD
VF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZB
Q0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfR0VUUFJPUEVSVFkpLCAxLCB9LAoKICB7ICJBdHRyIiwgeyBuc0RP
TUdlbmVyaWNTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKChuc0lYUENTY3JpcHRhYmxlOjpVU0Vf
SlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9S
X0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVS
VFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBu
c0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRh
YmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VO
VU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFD
RVNfT05MWSksIDEsIH0sCgogIHsgIlhVTENvbnRyb2xsZXJzIiwgeyBuc0RPTUdlbmVyaWNTSDo6
ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FE
RFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05U
X0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVG
TEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUg
fCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6
V0FOVF9QT1NUQ1JFQVRFKSwgMSwgfSwKCiAgeyAiQm94T2JqZWN0IiwgeyBuc0RPTUdlbmVyaWNT
SDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9S
X0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVS
VFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpE
T05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRf
UkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09M
VkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9QT1NUQ1JFQVRFKSwgMSwgfSwKCiAgeyAiVHJlZVNlbGVjdGlvbiIsIHsgbnNET01H
ZW5lcmljU0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsIChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNT
VFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RF
TFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lY
UENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxl
OjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9O
RVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1Nj
cmlwdGFibGU6OldBTlRfUE9TVENSRUFURSksIDEsIH0sCgogIHsgIlRyZWVDb250ZW50VmlldyIs
IHsgbnNET01HZW5lcmljU0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsIChuc0lYUENTY3JpcHRhYmxl
OjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NU
VUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VU
UFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09M
VkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8
IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSksIDEsIH0sCgoKCiAgeyAiQ3J5cHRv
IiwgeyBuc0RPTUdlbmVyaWNTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKChuc0lYUENTY3JpcHRh
YmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9K
U1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1Jf
U0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JF
U09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwg
bnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lY
UENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VT
UyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxl
OjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZP
X0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkNSTUZPYmplY3QiLCB7IG5zRE9NR2VuZXJp
Y1NIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJf
Rk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJP
UEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxl
OjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRP
TlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JF
U09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVS
WV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZ
KSwgMSwgfSwKCiAgeyAiUGtjczExIiwgeyBuc0RPTUdlbmVyaWNTSDo6ZG9DcmVhdGUgfSwgMCwg
MCwgMCwgKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExP
V19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9Q
X01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0Vf
Rk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNF
X05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFU
RSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBD
U2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCiMgNzcwICJuc0RP
TUNsYXNzSW5mby5jcHAiCiAgeyAiVHJlZVdhbGtlciIsIHsgbnNET01HZW5lcmljU0g6OmRvQ3Jl
YXRlIH0sIDAsIDAsIDAsICgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJP
UEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNL
X0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNU
X0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5U
X1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFD
RSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoK
CgoKCiAgeyAiQ1NTUmVjdCIsIHsgbnNET01HZW5lcmljU0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAs
ICgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENT
Y3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6
OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJP
UF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RT
X1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9T
Q1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1F
UyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwg
bnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKCgogIHsgIkNocm9tZVdp
bmRvdyIsIHsgbnNXaW5kb3dTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKG5zSVhQQ1NjcmlwdGFi
bGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pT
U1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9T
RVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVT
T0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBu
c0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRh
YmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNT
IHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfR0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZIHwg
bnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0ZJTkFMSVpFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfREVMUFJP
UEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0VOVU1FUkFURSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UsIDEsIH0sCiMgNzkyICJuc0RPTUNsYXNzSW5m
by5jcHAiCiAgeyAiQ1NTUkdCQ29sb3IiLCB7IG5zRE9NR2VuZXJpY1NIOjpkb0NyZWF0ZSB9LCAw
LCAwLCAwLCAoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwg
bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3Jp
cHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFM
TE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BS
T1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5D
RV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZB
Q0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3Jp
cHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JF
QVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lY
UENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwgfSwKCgogIHsgIlJh
bmdlRXhjZXB0aW9uIiwgeyBuc0RPTUdlbmVyaWNTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKChu
c0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1Njcmlw
dGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNF
X0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01P
RFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9f
UFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQ
VEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwg
bnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lY
UENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgoKICB7ICJDU1NWYWx1ZUxpc3Qi
LCB7IG5zQ1NTVmFsdWVMaXN0U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKG5zSVhQQ1Njcmlw
dGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNF
X0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZP
Ul9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdf
UkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUg
fCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5z
SVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3Jp
cHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUND
RVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lO
Rk9fSU5URVJGQUNFU19PTkxZKSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfR0VUUFJPUEVSVFkp
LCAxLCB9LAoKCiAgeyAiSFRNTENvbGxlY3Rpb24iLCB7IG5zQ29udGVudExpc3RTSDo6ZG9DcmVh
dGUgfSwgMCwgMCwgMCwgKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJP
UEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNL
X0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNU
X0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5U
X1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFD
RSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBD
U2NyaXB0YWJsZTo6V0FOVF9HRVRQUk9QRVJUWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BS
RUNSRUFURSwgMSwgfSwKCgoKCiAgeyAiWE1MU3R5bGVzaGVldFByb2Nlc3NpbmdJbnN0cnVjdGlv
biIsIHsgbnNOb2RlU0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKChuc0lYUENTY3JpcHRhYmxl
OjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NU
VUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VU
UFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09M
VkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8
IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpE
T05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lO
VEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NF
VFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJU
WSksIDEsIH0sCgoKICB7ICJJbWFnZURvY3VtZW50IiwgeyBuc0hUTUxEb2N1bWVudFNIOjpkb0Ny
ZWF0ZSB9LCAwLCAwLCAwLCAoKCgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FE
RFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05U
X0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVG
TEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUg
fCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6
V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRF
UkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JFQVRFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9B
RERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfU0VUUFJPUEVSVFkpICYgfm5zSVhQ
Q1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZKSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0RFTFBST1BFUlRZ
IHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9HRVRQUk9QRVJUWSkgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX0VOVU1FUkFURSwgMSwgfSwKCgp9OwoKbnNJWFBDb25uZWN0ICpuc0RPTUNsYXNzSW5m
bzo6c1hQQ29ubmVjdCA9IDA7Cm5zSVNjcmlwdFNlY3VyaXR5TWFuYWdlciAqbnNET01DbGFzc0lu
Zm86OnNTZWNNYW4gPSAwOwpQUkJvb2wgbnNET01DbGFzc0luZm86OnNJc0luaXRpYWxpemVkID0g
MDsKCgoKanN2YWwgbnNET01DbGFzc0luZm86OnNUb3BfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2
YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c1Njcm9s
bGJhcnNfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEp
Owpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c0xvY2F0aW9uX2lkID0gKCgoanN2YWwpKDAgLSAoKGpz
dmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKanN2YWwgbnNET01DbGFzc0luZm86OnNDb21w
b25lbnRzX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgx
KTsKanN2YWwgbnNET01DbGFzc0luZm86OnNDb25zdHJ1Y3Rvcl9pZCA9ICgoKGpzdmFsKSgwIC0g
KChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CmpzdmFsIG5zRE9NQ2xhc3NJbmZvOjpz
X2NvbnRlbnRfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAw
eDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c0NvbnRlbnRfaWQgPSAoKChqc3ZhbCkoMCAtICgo
anN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c1Np
ZGViYXJfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEp
Owpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c01lbnViYXJfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2
YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c1Rvb2xi
YXJfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpq
c3ZhbCBuc0RPTUNsYXNzSW5mbzo6c0xvY2F0aW9uYmFyX2lkID0gKCgoanN2YWwpKDAgLSAoKGpz
dmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKanN2YWwgbnNET01DbGFzc0luZm86OnNQZXJz
b25hbGJhcl9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4
MSk7CmpzdmFsIG5zRE9NQ2xhc3NJbmZvOjpzU3RhdHVzYmFyX2lkID0gKCgoanN2YWwpKDAgLSAo
KGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKanN2YWwgbnNET01DbGFzc0luZm86OnNE
aXJlY3Rvcmllc19pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8
IDB4MSk7CmpzdmFsIG5zRE9NQ2xhc3NJbmZvOjpzQ29udHJvbGxlcnNfaWQgPSAoKChqc3ZhbCko
MCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5m
bzo6c0xlbmd0aF9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8
IDB4MSk7CmpzdmFsIG5zRE9NQ2xhc3NJbmZvOjpzSW5uZXJIZWlnaHRfaWQgPSAoKChqc3ZhbCko
MCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5m
bzo6c0lubmVyV2lkdGhfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwg
MSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c091dGVySGVpZ2h0X2lkID0gKCgoanN2
YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKanN2YWwgbnNET01DbGFz
c0luZm86OnNPdXRlcldpZHRoX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkp
IDw8IDEpIHwgMHgxKTsKanN2YWwgbnNET01DbGFzc0luZm86OnNTY3JlZW5YX2lkID0gKCgoanN2
YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKanN2YWwgbnNET01DbGFz
c0luZm86OnNTY3JlZW5ZX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8
IDEpIHwgMHgxKTsKanN2YWwgbnNET01DbGFzc0luZm86OnNTdGF0dXNfaWQgPSAoKChqc3ZhbCko
MCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5m
bzo6c05hbWVfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAw
eDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c09ubW91c2Vkb3duX2lkID0gKCgoanN2YWwpKDAg
LSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKanN2YWwgbnNET01DbGFzc0luZm86
OnNPbm1vdXNldXBfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkg
fCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c09uY2xpY2tfaWQgPSAoKChqc3ZhbCkoMCAt
ICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6
c09uY29udGV4dG1lbnVfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwg
MSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c09ubW91c2VvdmVyX2lkID0gKCgoanN2
YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKanN2YWwgbnNET01DbGFz
c0luZm86OnNPbm1vdXNlb3V0X2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkp
IDw8IDEpIHwgMHgxKTsKanN2YWwgbnNET01DbGFzc0luZm86OnNPbmtleWRvd25faWQgPSAoKChq
c3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNs
YXNzSW5mbzo6c09ua2V5dXBfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkg
PDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c09ua2V5cHJlc3NfaWQgPSAoKChq
c3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNs
YXNzSW5mbzo6c09ubW91c2Vtb3ZlX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMw
KSkpIDw8IDEpIHwgMHgxKTsKanN2YWwgbnNET01DbGFzc0luZm86OnNPbmZvY3VzX2lkID0gKCgo
anN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKanN2YWwgbnNET01D
bGFzc0luZm86OnNPbmJsdXJfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkg
PDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c09uc3VibWl0X2lkID0gKCgoanN2
YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKanN2YWwgbnNET01DbGFz
c0luZm86OnNPbnJlc2V0X2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8
IDEpIHwgMHgxKTsKanN2YWwgbnNET01DbGFzc0luZm86OnNPbmNoYW5nZV9pZCA9ICgoKGpzdmFs
KSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CmpzdmFsIG5zRE9NQ2xhc3NJ
bmZvOjpzT25zZWxlY3RfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwg
MSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c09ubG9hZF9pZCA9ICgoKGpzdmFsKSgw
IC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CmpzdmFsIG5zRE9NQ2xhc3NJbmZv
OjpzT251bmxvYWRfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkg
fCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c09uYWJvcnRfaWQgPSAoKChqc3ZhbCkoMCAt
ICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6
c09uZXJyb3JfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAw
eDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c09ucGFpbnRfaWQgPSAoKChqc3ZhbCkoMCAtICgo
anN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c09u
cmVzaXplX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgx
KTsKanN2YWwgbnNET01DbGFzc0luZm86OnNPbnNjcm9sbF9pZCA9ICgoKGpzdmFsKSgwIC0gKChq
c3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CmpzdmFsIG5zRE9NQ2xhc3NJbmZvOjpzU2Ny
b2xsSW50b1ZpZXdfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkg
fCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c1Njcm9sbFhfaWQgPSAoKChqc3ZhbCkoMCAt
ICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6
c1Njcm9sbFlfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAw
eDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c09wZW5faWQgPSAoKChqc3ZhbCkoMCAtICgoanN2
YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c0l0ZW1f
aWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3Zh
bCBuc0RPTUNsYXNzSW5mbzo6c0VudW1lcmF0ZV9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkx
IDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CmpzdmFsIG5zRE9NQ2xhc3NJbmZvOjpzTmF2aWdhdG9y
X2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKanN2
YWwgbnNET01DbGFzc0luZm86OnNEb2N1bWVudF9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkx
IDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CmpzdmFsIG5zRE9NQ2xhc3NJbmZvOjpzV2luZG93X2lk
ID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKanN2YWwg
bnNET01DbGFzc0luZm86OnNGcmFtZXNfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAo
MzApKSkgPDwgMSkgfCAweDEpOwoKY29uc3QgSlNDbGFzcyAqbnNET01DbGFzc0luZm86OnNPYmpl
Y3RDbGFzcyA9IDA7CgpQUkJvb2wgbnNET01DbGFzc0luZm86OnNEb1NlY3VyaXR5Q2hlY2tJbkFk
ZFByb3BlcnR5ID0gMTsKCgpzdGF0aWMgaW5saW5lIEpTT2JqZWN0ICoKR2V0R2xvYmFsSlNPYmpl
Y3QoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaikKewogIEpTT2JqZWN0ICp0bXA7CgogIHdo
aWxlICgodG1wID0gOjpKU19HZXRQYXJlbnQoY3gsIG9iaikpKSB7CiAgICBvYmogPSB0bXA7CiAg
fQoKICByZXR1cm4gb2JqOwp9CgpzdGF0aWMganN2YWwKR2V0SW50ZXJuZWRKU1ZhbChKU0NvbnRl
eHQgKmN4LCBjb25zdCBjaGFyICpzdHIpCnsKICBKU1N0cmluZyAqcyA9IDo6SlNfSW50ZXJuU3Ry
aW5nKGN4LCBzdHIpOwoKICBpZiAoIXMpIHsKICAgIHJldHVybiAoKChqc3ZhbCkoMCAtICgoanN2
YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwogIH0KCiAgcmV0dXJuICgoKGpzdmFsKShzKSkg
fCAoMHg0KSk7Cn0KCgoKbnNyZXN1bHQKbnNET01DbGFzc0luZm86OkRlZmluZVN0YXRpY0pTVmFs
cyhKU0NvbnRleHQgKmN4KQp7CgoKCgoKCiAgc1RvcF9pZCA9IEdldEludGVybmVkSlNWYWwoY3gs
ICJ0b3AiKTsgaWYgKCEoKChzVG9wX2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9
PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc1Njcm9sbGJh
cnNfaWQgPSBHZXRJbnRlcm5lZEpTVmFsKGN4LCAic2Nyb2xsYmFycyIpOyBpZiAoISgoKHNTY3Jv
bGxiYXJzX2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7IHJldHVy
biAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc0xvY2F0aW9uX2lkID0gR2V0SW50ZXJu
ZWRKU1ZhbChjeCwgImxvY2F0aW9uIik7IGlmICghKCgoc0xvY2F0aW9uX2lkKSAmICgoKEpTVWlu
dDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcw
MDBlTCk7IH07CiAgc0NvbXBvbmVudHNfaWQgPSBHZXRJbnRlcm5lZEpTVmFsKGN4LCAiQ29tcG9u
ZW50cyIpOyBpZiAoISgoKHNDb21wb25lbnRzX2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAt
IDEpKSA9PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc0Nv
bnN0cnVjdG9yX2lkID0gR2V0SW50ZXJuZWRKU1ZhbChjeCwgImNvbnN0cnVjdG9yIik7IGlmICgh
KCgoc0NvbnN0cnVjdG9yX2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQp
KSB7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc19jb250ZW50X2lkID0g
R2V0SW50ZXJuZWRKU1ZhbChjeCwgIl9jb250ZW50Iik7IGlmICghKCgoc19jb250ZW50X2lkKSAm
ICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0
KSAweDgwMDcwMDBlTCk7IH07CiAgc0NvbnRlbnRfaWQgPSBHZXRJbnRlcm5lZEpTVmFsKGN4LCAi
Y29udGVudCIpOyBpZiAoISgoKHNDb250ZW50X2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAt
IDEpKSA9PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc1Np
ZGViYXJfaWQgPSBHZXRJbnRlcm5lZEpTVmFsKGN4LCAic2lkZWJhciIpOyBpZiAoISgoKHNTaWRl
YmFyX2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7IHJldHVybiAo
KG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc01lbnViYXJfaWQgPSBHZXRJbnRlcm5lZEpT
VmFsKGN4LCAibWVudWJhciIpOyBpZiAoISgoKHNNZW51YmFyX2lkKSAmICgoKEpTVWludDMyKTEg
PDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7
IH07CiAgc1Rvb2xiYXJfaWQgPSBHZXRJbnRlcm5lZEpTVmFsKGN4LCAidG9vbGJhciIpOyBpZiAo
ISgoKHNUb29sYmFyX2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7
IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc0xvY2F0aW9uYmFyX2lkID0g
R2V0SW50ZXJuZWRKU1ZhbChjeCwgImxvY2F0aW9uYmFyIik7IGlmICghKCgoc0xvY2F0aW9uYmFy
X2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7IHJldHVybiAoKG5z
cmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc1BlcnNvbmFsYmFyX2lkID0gR2V0SW50ZXJuZWRK
U1ZhbChjeCwgInBlcnNvbmFsYmFyIik7IGlmICghKCgoc1BlcnNvbmFsYmFyX2lkKSAmICgoKEpT
VWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0KSAweDgw
MDcwMDBlTCk7IH07CiAgc1N0YXR1c2Jhcl9pZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJzdGF0
dXNiYXIiKTsgaWYgKCEoKChzU3RhdHVzYmFyX2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAt
IDEpKSA9PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc0Rp
cmVjdG9yaWVzX2lkID0gR2V0SW50ZXJuZWRKU1ZhbChjeCwgImRpcmVjdG9yaWVzIik7IGlmICgh
KCgoc0RpcmVjdG9yaWVzX2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQp
KSB7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc0NvbnRyb2xsZXJzX2lk
ID0gR2V0SW50ZXJuZWRKU1ZhbChjeCwgImNvbnRyb2xsZXJzIik7IGlmICghKCgoc0NvbnRyb2xs
ZXJzX2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7IHJldHVybiAo
KG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc0xlbmd0aF9pZCA9IEdldEludGVybmVkSlNW
YWwoY3gsICJsZW5ndGgiKTsgaWYgKCEoKChzTGVuZ3RoX2lkKSAmICgoKEpTVWludDMyKTEgPDwg
KDMpKSAtIDEpKSA9PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07
CiAgc0lubmVySGVpZ2h0X2lkID0gR2V0SW50ZXJuZWRKU1ZhbChjeCwgImlubmVySGVpZ2h0Iik7
IGlmICghKCgoc0lubmVySGVpZ2h0X2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9
PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc0lubmVyV2lk
dGhfaWQgPSBHZXRJbnRlcm5lZEpTVmFsKGN4LCAiaW5uZXJXaWR0aCIpOyBpZiAoISgoKHNJbm5l
cldpZHRoX2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7IHJldHVy
biAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc091dGVySGVpZ2h0X2lkID0gR2V0SW50
ZXJuZWRKU1ZhbChjeCwgIm91dGVyV2lkdGgiKTsgaWYgKCEoKChzT3V0ZXJIZWlnaHRfaWQpICYg
KCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQp
IDB4ODAwNzAwMGVMKTsgfTsKICBzT3V0ZXJXaWR0aF9pZCA9IEdldEludGVybmVkSlNWYWwoY3gs
ICJvdXRlcldpZHRoIik7IGlmICghKCgoc091dGVyV2lkdGhfaWQpICYgKCgoSlNVaW50MzIpMSA8
PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsg
fTsKICBzU2NyZWVuWF9pZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJzY3JlZW5YIik7IGlmICgh
KCgoc1NjcmVlblhfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsg
cmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzU2NyZWVuWV9pZCA9IEdldElu
dGVybmVkSlNWYWwoY3gsICJzY3JlZW5ZIik7IGlmICghKCgoc1NjcmVlbllfaWQpICYgKCgoSlNV
aW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAw
NzAwMGVMKTsgfTsKICBzU3RhdHVzX2lkID0gR2V0SW50ZXJuZWRKU1ZhbChjeCwgInN0YXR1cyIp
OyBpZiAoISgoKHNTdGF0dXNfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4
NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzTmFtZV9pZCA9IEdl
dEludGVybmVkSlNWYWwoY3gsICJuYW1lIik7IGlmICghKCgoc05hbWVfaWQpICYgKCgoSlNVaW50
MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAw
MGVMKTsgfTsKICBzT25tb3VzZWRvd25faWQgPSBHZXRJbnRlcm5lZEpTVmFsKGN4LCAib25tb3Vz
ZWRvd24iKTsgaWYgKCEoKChzT25tb3VzZWRvd25faWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykp
IC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBz
T25tb3VzZXVwX2lkID0gR2V0SW50ZXJuZWRKU1ZhbChjeCwgIm9ubW91c2V1cCIpOyBpZiAoISgo
KHNPbm1vdXNldXBfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsg
cmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzT25jbGlja19pZCA9IEdldElu
dGVybmVkSlNWYWwoY3gsICJvbmNsaWNrIik7IGlmICghKCgoc09uY2xpY2tfaWQpICYgKCgoSlNV
aW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAw
NzAwMGVMKTsgfTsKICBzT25jb250ZXh0bWVudV9pZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJv
bmNvbnRleHRtZW51Iik7IGlmICghKCgoc09uY29udGV4dG1lbnVfaWQpICYgKCgoSlNVaW50MzIp
MSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVM
KTsgfTsKICBzT25tb3VzZW92ZXJfaWQgPSBHZXRJbnRlcm5lZEpTVmFsKGN4LCAib25tb3VzZW92
ZXIiKTsgaWYgKCEoKChzT25tb3VzZW92ZXJfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0g
MSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzT25t
b3VzZW91dF9pZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJvbm1vdXNlb3V0Iik7IGlmICghKCgo
c09ubW91c2VvdXRfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsg
cmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzT25rZXlkb3duX2lkID0gR2V0
SW50ZXJuZWRKU1ZhbChjeCwgIm9ua2V5ZG93biIpOyBpZiAoISgoKHNPbmtleWRvd25faWQpICYg
KCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQp
IDB4ODAwNzAwMGVMKTsgfTsKICBzT25rZXl1cF9pZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJv
bmtleXVwIik7IGlmICghKCgoc09ua2V5dXBfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0g
MSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzT25r
ZXlwcmVzc19pZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJvbmtleXByZXNzIik7IGlmICghKCgo
c09ua2V5cHJlc3NfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsg
cmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzT25tb3VzZW1vdmVfaWQgPSBH
ZXRJbnRlcm5lZEpTVmFsKGN4LCAib25tb3VzZW1vdmUiKTsgaWYgKCEoKChzT25tb3VzZW1vdmVf
aWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNy
ZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzT25mb2N1c19pZCA9IEdldEludGVybmVkSlNWYWwo
Y3gsICJvbmZvY3VzIik7IGlmICghKCgoc09uZm9jdXNfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAo
MykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsK
ICBzT25ibHVyX2lkID0gR2V0SW50ZXJuZWRKU1ZhbChjeCwgIm9uYmx1ciIpOyBpZiAoISgoKHNP
bmJsdXJfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJu
ICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzT25zdWJtaXRfaWQgPSBHZXRJbnRlcm5l
ZEpTVmFsKGN4LCAib25zdWJtaXQiKTsgaWYgKCEoKChzT25zdWJtaXRfaWQpICYgKCgoSlNVaW50
MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAw
MGVMKTsgfTsKICBzT25yZXNldF9pZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJvbnJlc2V0Iik7
IGlmICghKCgoc09ucmVzZXRfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4
NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzT25jaGFuZ2VfaWQg
PSBHZXRJbnRlcm5lZEpTVmFsKGN4LCAib25jaGFuZ2UiKTsgaWYgKCEoKChzT25jaGFuZ2VfaWQp
ICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1
bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzT25zZWxlY3RfaWQgPSBHZXRJbnRlcm5lZEpTVmFsKGN4
LCAib25zZWxlY3QiKTsgaWYgKCEoKChzT25zZWxlY3RfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAo
MykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsK
ICBzT25sb2FkX2lkID0gR2V0SW50ZXJuZWRKU1ZhbChjeCwgIm9ubG9hZCIpOyBpZiAoISgoKHNP
bmxvYWRfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJu
ICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzT251bmxvYWRfaWQgPSBHZXRJbnRlcm5l
ZEpTVmFsKGN4LCAib251bmxvYWQiKTsgaWYgKCEoKChzT251bmxvYWRfaWQpICYgKCgoSlNVaW50
MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAw
MGVMKTsgfTsKICBzT25hYm9ydF9pZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJvbmFib3J0Iik7
IGlmICghKCgoc09uYWJvcnRfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4
NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzT25lcnJvcl9pZCA9
IEdldEludGVybmVkSlNWYWwoY3gsICJvbmVycm9yIik7IGlmICghKCgoc09uZXJyb3JfaWQpICYg
KCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQp
IDB4ODAwNzAwMGVMKTsgfTsKICBzT25wYWludF9pZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJv
bnBhaW50Iik7IGlmICghKCgoc09ucGFpbnRfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0g
MSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzT25y
ZXNpemVfaWQgPSBHZXRJbnRlcm5lZEpTVmFsKGN4LCAib25yZXNpemUiKTsgaWYgKCEoKChzT25y
ZXNpemVfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJu
ICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzT25zY3JvbGxfaWQgPSBHZXRJbnRlcm5l
ZEpTVmFsKGN4LCAib25zY3JvbGwiKTsgaWYgKCEoKChzT25zY3JvbGxfaWQpICYgKCgoSlNVaW50
MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAw
MGVMKTsgfTsKICBzU2Nyb2xsSW50b1ZpZXdfaWQgPSBHZXRJbnRlcm5lZEpTVmFsKGN4LCAic2Ny
b2xsSW50b1ZpZXciKTsgaWYgKCEoKChzU2Nyb2xsSW50b1ZpZXdfaWQpICYgKCgoSlNVaW50MzIp
MSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVM
KTsgfTsKICBzU2Nyb2xsWF9pZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJzY3JvbGxYIik7IGlm
ICghKCgoc1Njcm9sbFhfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkp
IHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzU2Nyb2xsWV9pZCA9IEdl
dEludGVybmVkSlNWYWwoY3gsICJzY3JvbGxZIik7IGlmICghKCgoc1Njcm9sbFlfaWQpICYgKCgo
SlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4
ODAwNzAwMGVMKTsgfTsKICBzT3Blbl9pZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJvcGVuIik7
IGlmICghKCgoc09wZW5faWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkp
IHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzSXRlbV9pZCA9IEdldElu
dGVybmVkSlNWYWwoY3gsICJpdGVtIik7IGlmICghKCgoc0l0ZW1faWQpICYgKCgoSlNVaW50MzIp
MSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVM
KTsgfTsKICBzRW51bWVyYXRlX2lkID0gR2V0SW50ZXJuZWRKU1ZhbChjeCwgImVudW1lcmF0ZVBy
b3BlcnRpZXMiKTsgaWYgKCEoKChzRW51bWVyYXRlX2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMp
KSAtIDEpKSA9PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAg
c05hdmlnYXRvcl9pZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJuYXZpZ2F0b3IiKTsgaWYgKCEo
KChzTmF2aWdhdG9yX2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7
IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc0RvY3VtZW50X2lkID0gR2V0
SW50ZXJuZWRKU1ZhbChjeCwgImRvY3VtZW50Iik7IGlmICghKCgoc0RvY3VtZW50X2lkKSAmICgo
KEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0KSAw
eDgwMDcwMDBlTCk7IH07CiAgc1dpbmRvd19pZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJ3aW5k
b3ciKTsgaWYgKCEoKChzV2luZG93X2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9
PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc0ZyYW1lc19p
ZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJmcmFtZXMiKTsgaWYgKCEoKChzRnJhbWVzX2lkKSAm
ICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0
KSAweDgwMDcwMDBlTCk7IH07CgogIHJldHVybiAwOwp9CgoKbnNyZXN1bHQKbnNET01DbGFzc0lu
Zm86OldyYXBOYXRpdmUoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKnNjb3BlLCBuc0lTdXBwb3J0
cyAqbmF0aXZlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuc0lJRCYgYUlJRCwg
anN2YWwgKnZwKQp7CiAgaWYgKCFuYXRpdmUpIHsKICAgICp2cCA9ICgoanN2YWwpKDApKTsKCiAg
ICByZXR1cm4gMDsKICB9CgogIGRvIHsgaWYgKCEoc1hQQ29ubmVjdCkpIHsgOyByZXR1cm4gKChu
c3Jlc3VsdCkgMHg4MDAwZmZmZkwpOyB9IH0gd2hpbGUgKDApOwoKICBuc0NPTVB0cjxuc0lYUENv
bm5lY3RKU09iamVjdEhvbGRlcj4gaG9sZGVyOwoKICBuc3Jlc3VsdCBydiA9IHNYUENvbm5lY3Qt
PldyYXBOYXRpdmUoY3gsIHNjb3BlLCBuYXRpdmUsIGFJSUQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdldHRlcl9BZGRSZWZzKGhvbGRlcikpOwogIGRvIHsgaWYgKCEo
KCEoKHJ2KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7Cgog
IEpTT2JqZWN0KiBvYmogPSAwOwogIHJ2ID0gaG9sZGVyLT5HZXRKU09iamVjdCgmb2JqKTsKICBk
byB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0dXJuIHJ2OyB9IH0gd2hp
bGUgKDApOwoKICAqdnAgPSAoKGpzdmFsKShvYmopKTsKCiAgcmV0dXJuIHJ2Owp9CgoKbnNyZXN1
bHQKbnNET01DbGFzc0luZm86OlRocm93SlNFeGNlcHRpb24oSlNDb250ZXh0ICpjeCwgbnNyZXN1
bHQgYVJlc3VsdCkKewogIG5zQ09NUHRyPG5zSUV4Y2VwdGlvblNlcnZpY2U+IHhzID0KICAgIGRv
X0dldFNlcnZpY2UoIkBtb3ppbGxhLm9yZy9leGNlcHRpb25zZXJ2aWNlOzEiKTsKICBpZiAoIXhz
KQogICAgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMDQwMDVMKTsKCiAgbnNDT01QdHI8bnNJRXhj
ZXB0aW9uTWFuYWdlcj4geG07CiAgbnNyZXN1bHQgcnYgPSB4cy0+R2V0Q3VycmVudEV4Y2VwdGlv
bk1hbmFnZXIoZ2V0dGVyX0FkZFJlZnMoeG0pKTsKICBkbyB7IGlmICghKCghKChydikgJiAweDgw
MDAwMDAwKSkpKSB7IDsgcmV0dXJuIHJ2OyB9IH0gd2hpbGUgKDApOwoKICBuc0NPTVB0cjxuc0lF
eGNlcHRpb24+IGV4Y2VwdGlvbjsKICBydiA9IHhtLT5HZXRFeGNlcHRpb25Gcm9tUHJvdmlkZXIo
YVJlc3VsdCwgMCwgZ2V0dGVyX0FkZFJlZnMoZXhjZXB0aW9uKSk7CgogIGpzdmFsIGp2OwogIHJ2
ID0gV3JhcE5hdGl2ZShjeCwgOjpKU19HZXRHbG9iYWxPYmplY3QoY3gpLCBleGNlcHRpb24sCiAg
ICAgICAgICAgICAgICAgIG5zQ09NVHlwZUluZm88bnNJRXhjZXB0aW9uPjo6R2V0SUlEKCksICZq
dik7CiAgZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsg
fSB9IHdoaWxlICgwKTsKICBKU19TZXRQZW5kaW5nRXhjZXB0aW9uKGN4LCBqdik7CgogIHJldHVy
biAwOwp9Cgpuc0RPTUNsYXNzSW5mbzo6bnNET01DbGFzc0luZm8obnNET01DbGFzc0luZm9EYXRh
KiBhRGF0YSkgOiBtRGF0YShhRGF0YSkKewp9Cgpuc0RPTUNsYXNzSW5mbzo6fm5zRE9NQ2xhc3NJ
bmZvKCkKewogIGlmICgoUHRyQml0cyhtRGF0YS0+bUNhY2hlZENsYXNzSW5mbykgJiAweDEpKSB7
CgogICAgbnNET01DbGFzc0luZm9EYXRhKiBkYXRhID0gY29uc3RfY2FzdDwgbnNET01DbGFzc0lu
Zm9EYXRhKiA+KG1EYXRhKTsKICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDwgbnNFeHRlcm5hbERPTUNs
YXNzSW5mb0RhdGEqID4oZGF0YSk7CiAgfQp9Cgpuc3JlZmNudCBuc0RPTUNsYXNzSW5mbzo6QWRk
UmVmKHZvaWQpIHsgOyAoKHZvaWQpMCk7ICsrbVJlZkNudDsgOyByZXR1cm4gbVJlZkNudDsgfTsK
bnNyZWZjbnQgbnNET01DbGFzc0luZm86OlJlbGVhc2Uodm9pZCkgeyA7ICgodm9pZCkwKTsgLS1t
UmVmQ250OyA7IGlmIChtUmVmQ250ID09IDApIHsgbVJlZkNudCA9IDE7IGRvIHsgOyBkZWxldGUg
KHRoaXMpOyB9IHdoaWxlICgwKTsgcmV0dXJuIDA7IH0gcmV0dXJuIG1SZWZDbnQ7IH07Cgpuc3Jl
c3VsdCBuc0RPTUNsYXNzSW5mbzo6UXVlcnlJbnRlcmZhY2UoY29uc3QgbnNJSUQmIGFJSUQsIHZv
aWQqKiBhSW5zdGFuY2VQdHIpIHsgOyBpZiAoICFhSW5zdGFuY2VQdHIgKSByZXR1cm4gKChuc3Jl
c3VsdCkgMHg4MDAwNDAwM0wpOyBuc0lTdXBwb3J0cyogZm91bmRJbnRlcmZhY2U7CiAgaWYgKCBh
SUlELkVxdWFscyhuc0NPTVR5cGVJbmZvPG5zSVhQQ1NjcmlwdGFibGU+OjpHZXRJSUQoKSkgKSBm
b3VuZEludGVyZmFjZSA9IHN0YXRpY19jYXN0PCBuc0lYUENTY3JpcHRhYmxlKiA+KHRoaXMpOyBl
bHNlCiAgaWYgKCBhSUlELkVxdWFscyhuc0NPTVR5cGVJbmZvPG5zSUNsYXNzSW5mbz46OkdldElJ
RCgpKSApIGZvdW5kSW50ZXJmYWNlID0gc3RhdGljX2Nhc3Q8IG5zSUNsYXNzSW5mbyogPih0aGlz
KTsgZWxzZQogIGlmICggYUlJRC5FcXVhbHMobnNDT01UeXBlSW5mbzxuc0lTdXBwb3J0cz46Okdl
dElJRCgpKSApIGZvdW5kSW50ZXJmYWNlID0gc3RhdGljX2Nhc3Q8IG5zSVN1cHBvcnRzKiA+KHN0
YXRpY19jYXN0PCBuc0lYUENTY3JpcHRhYmxlKiA+KHRoaXMpKTsgZWxzZQpmb3VuZEludGVyZmFj
ZSA9IDA7IG5zcmVzdWx0IHN0YXR1czsgaWYgKCAhZm91bmRJbnRlcmZhY2UgKSBzdGF0dXMgPSAo
KG5zcmVzdWx0KSAweDgwMDA0MDAyTCk7IGVsc2UgeyAoZm91bmRJbnRlcmZhY2UpLT5BZGRSZWYo
KTsgc3RhdHVzID0gMDsgfSAqYUluc3RhbmNlUHRyID0gZm91bmRJbnRlcmZhY2U7IHJldHVybiBz
dGF0dXM7IH0KCgpKU0NsYXNzIG5zRE9NQ2xhc3NJbmZvOjpzRE9NQ29uc3RydWN0b3JQcm90b0Ns
YXNzID0gewogICJET00gQ29uc3RydWN0b3IucHJvdG90eXBlIiwgMCwKICBKU19Qcm9wZXJ0eVN0
dWIsIEpTX1Byb3BlcnR5U3R1YiwgSlNfUHJvcGVydHlTdHViLCBKU19Qcm9wZXJ0eVN0dWIsCiAg
SlNfRW51bWVyYXRlU3R1YiwgSlNfUmVzb2x2ZVN0dWIsIEpTX0NvbnZlcnRTdHViLCBKU19GaW5h
bGl6ZVN0dWIKfTsKCgpzdGF0aWMgY29uc3QgY2hhciAqCkN1dFByZWZpeChjb25zdCBjaGFyICph
TmFtZSkgewogIHN0YXRpYyBjb25zdCBjaGFyIHByZWZpeF9uc0lET01bXSA9ICJuc0lET00iOwog
IHN0YXRpYyBjb25zdCBjaGFyIHByZWZpeF9uc0lbXSA9ICJuc0kiOwoKICBpZiAoc3RybmNtcChh
TmFtZSwgcHJlZml4X25zSURPTSwgc2l6ZW9mKHByZWZpeF9uc0lET00pIC0gMSkgPT0gMCkgewog
ICAgcmV0dXJuIGFOYW1lICsgc2l6ZW9mKHByZWZpeF9uc0lET00pIC0gMTsKICB9CgogIGlmIChz
dHJuY21wKGFOYW1lLCBwcmVmaXhfbnNJLCBzaXplb2YocHJlZml4X25zSSkgLSAxKSA9PSAwKSB7
CiAgICByZXR1cm4gYU5hbWUgKyBzaXplb2YocHJlZml4X25zSSkgLSAxOwogIH0KCiAgcmV0dXJu
IGFOYW1lOwp9CgoKbnNyZXN1bHQKbnNET01DbGFzc0luZm86OlJlZ2lzdGVyQ2xhc3NOYW1lKFBS
SW50MzIgYUNsYXNzSW5mb0lEKQp7CiAgZXh0ZXJuIG5zU2NyaXB0TmFtZVNwYWNlTWFuYWdlciAq
Z05hbWVTcGFjZU1hbmFnZXI7CiAgZG8geyBpZiAoIShnTmFtZVNwYWNlTWFuYWdlcikpIHsgOyBy
ZXR1cm4gKCgobnNyZXN1bHQpIDB4QzFGMzAwMDApICsgMSk7IH0gfSB3aGlsZSAoMCk7CgogIGdO
YW1lU3BhY2VNYW5hZ2VyLT5SZWdpc3RlckNsYXNzTmFtZShzQ2xhc3NJbmZvRGF0YVthQ2xhc3NJ
bmZvSURdLm1OYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhQ2xh
c3NJbmZvSUQpOwoKICByZXR1cm4gMDsKfQoKCm5zcmVzdWx0Cm5zRE9NQ2xhc3NJbmZvOjpSZWdp
c3RlckNsYXNzUHJvdG9zKFBSSW50MzIgYUNsYXNzSW5mb0lEKQp7CiAgZXh0ZXJuIG5zU2NyaXB0
TmFtZVNwYWNlTWFuYWdlciAqZ05hbWVTcGFjZU1hbmFnZXI7CiAgZG8geyBpZiAoIShnTmFtZVNw
YWNlTWFuYWdlcikpIHsgOyByZXR1cm4gKCgobnNyZXN1bHQpIDB4QzFGMzAwMDApICsgMSk7IH0g
fSB3aGlsZSAoMCk7CiAgUFJCb29sIGZvdW5kX29sZDsKCiAgY29uc3QgbnNJSUQgKnByaW1hcnlf
aWlkID0gc0NsYXNzSW5mb0RhdGFbYUNsYXNzSW5mb0lEXS5tUHJvdG9DaGFpbkludGVyZmFjZTsK
CiAgaWYgKCFwcmltYXJ5X2lpZCB8fCBwcmltYXJ5X2lpZCA9PSAmbnNDT01UeXBlSW5mbzxuc0lT
dXBwb3J0cz46OkdldElJRCgpKSB7CiAgICByZXR1cm4gMDsKICB9CgogIG5zQ09NUHRyPG5zSUlu
dGVyZmFjZUluZm9NYW5hZ2VyPiBpaW0gPQogICAgZG9udF9BZGRSZWYoWFBUSV9HZXRJbnRlcmZh
Y2VJbmZvTWFuYWdlcigpKTsKICBkbyB7IGlmICghKGlpbSkpIHsgOyByZXR1cm4gKChuc3Jlc3Vs
dCkgMHg4MDA0MDExMUwpOyB9IH0gd2hpbGUgKDApOwoKICBuc0NPTVB0cjxuc0lJbnRlcmZhY2VJ
bmZvPiBpZl9pbmZvOwogIFBSQm9vbCBmaXJzdCA9IDE7CgogIGlpbS0+R2V0SW5mb0ZvcklJRChw
cmltYXJ5X2lpZCwgZ2V0dGVyX0FkZFJlZnMoaWZfaW5mbykpOwoKICB3aGlsZSAoaWZfaW5mbykg
ewogICAgbnNJSUQgKmlpZCA9IDA7CgogICAgaWZfaW5mby0+R2V0SW50ZXJmYWNlSUlEKCZpaWQp
OwogICAgZG8geyBpZiAoIShpaWQpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZM
KTsgfSB9IHdoaWxlICgwKTsKCiAgICBpZiAoaWlkLT5FcXVhbHMobnNDT01UeXBlSW5mbzxuc0lT
dXBwb3J0cz46OkdldElJRCgpKSkgewogICAgICBuc01lbW9yeTo6RnJlZShpaWQpOwoKICAgICAg
YnJlYWs7CiAgICB9CgogICAgbnNYUElETENTdHJpbmcgbmFtZTsKICAgIGlmX2luZm8tPkdldE5h
bWUoZ2V0dGVyX0NvcGllcyhuYW1lKSk7CgogICAgZ05hbWVTcGFjZU1hbmFnZXItPlJlZ2lzdGVy
Q2xhc3NQcm90byhDdXRQcmVmaXgobmFtZSksIGlpZCwgJmZvdW5kX29sZCk7CgogICAgbnNNZW1v
cnk6OkZyZWUoaWlkKTsKCiAgICBpZiAoZmlyc3QpIHsKICAgICAgZmlyc3QgPSAwOwogICAgfSBl
bHNlIGlmIChmb3VuZF9vbGQpIHsKICAgICAgYnJlYWs7CiAgICB9CgogICAgbnNDT01QdHI8bnNJ
SW50ZXJmYWNlSW5mbz4gdG1wKGlmX2luZm8pOwogICAgdG1wLT5HZXRQYXJlbnQoZ2V0dGVyX0Fk
ZFJlZnMoaWZfaW5mbykpOwogIH0KCiAgcmV0dXJuIDA7Cn0KCgpuc3Jlc3VsdApuc0RPTUNsYXNz
SW5mbzo6UmVnaXN0ZXJFeHRlcm5hbENsYXNzZXMoKQp7CiAgZXh0ZXJuIG5zU2NyaXB0TmFtZVNw
YWNlTWFuYWdlciAqZ05hbWVTcGFjZU1hbmFnZXI7CiAgZG8geyBpZiAoIShnTmFtZVNwYWNlTWFu
YWdlcikpIHsgOyByZXR1cm4gKCgobnNyZXN1bHQpIDB4QzFGMzAwMDApICsgMSk7IH0gfSB3aGls
ZSAoMCk7CgogIG5zcmVzdWx0IHJ2ID0gMDsKICBuc0NPTVB0cjxuc0lDYXRlZ29yeU1hbmFnZXI+
IGNtID0KICAgIGRvX0dldFNlcnZpY2UoIkBtb3ppbGxhLm9yZy9jYXRlZ29yeW1hbmFnZXI7MSIs
ICZydik7CiAgZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiBy
djsgfSB9IHdoaWxlICgwKTsKCiAgbnNDT01QdHI8bnNJU2ltcGxlRW51bWVyYXRvcj4gZTsKICBy
diA9IGNtLT5FbnVtZXJhdGVDYXRlZ29yeSgiSmF2YVNjcmlwdCBET00gY2xhc3MiLCBnZXR0ZXJf
QWRkUmVmcyhlKSk7CiAgZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJl
dHVybiBydjsgfSB9IHdoaWxlICgwKTsKCiAgbnNYUElETENTdHJpbmcgY29udHJhY3RJZDsKICBu
c0NBdXRvU3RyaW5nIGNhdGVnb3J5RW50cnk7CiAgbnNDT01QdHI8bnNJU3VwcG9ydHM+IGVudHJ5
OwoKICB3aGlsZSAoKCEoKGUtPkdldE5leHQoZ2V0dGVyX0FkZFJlZnMoZW50cnkpKSkgJiAweDgw
MDAwMDAwKSkpIHsKICAgIG5zQ09NUHRyPG5zSVN1cHBvcnRzQ1N0cmluZz4gY2F0ZWdvcnkoZG9f
UXVlcnlJbnRlcmZhY2UoZW50cnkpKTsKCiAgICBpZiAoIWNhdGVnb3J5KSB7CiAgICAgIDsKICAg
ICAgY29udGludWU7CiAgICB9CgogICAgcnYgPSBjYXRlZ29yeS0+R2V0RGF0YShjYXRlZ29yeUVu
dHJ5KTsKCiAgICBjbS0+R2V0Q2F0ZWdvcnlFbnRyeSgiSmF2YVNjcmlwdCBET00gY2xhc3MiLCBj
YXRlZ29yeUVudHJ5LmdldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgZ2V0dGVyX0NvcGll
cyhjb250cmFjdElkKSk7CiAgICBkbyB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7
IDsgcmV0dXJuIHJ2OyB9IH0gd2hpbGUgKDApOwoKICAgIG5zQ0lEIGNpZDsKICAgIHJ2ID0gbnND
b21wb25lbnRNYW5hZ2VyOjpDb250cmFjdElEVG9DbGFzc0lEKGNvbnRyYWN0SWQsICZjaWQpOwoK
ICAgIGlmICgoKHJ2KSAmIDB4ODAwMDAwMDApKSB7CiAgICAgIDsKICAgICAgY29udGludWU7CiAg
ICB9CgogICAgcnYgPSBnTmFtZVNwYWNlTWFuYWdlci0+UmVnaXN0ZXJFeHRlcm5hbENsYXNzTmFt
ZShjYXRlZ29yeUVudHJ5LmdldCgpLCBjaWQpOwogICAgZG8geyBpZiAoISgoISgocnYpICYgMHg4
MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsgfSB9IHdoaWxlICgwKTsKICB9CgogIHJ2ID0gZ05h
bWVTcGFjZU1hbmFnZXItPlJlZ2lzdGVyRXh0ZXJuYWxJbnRlcmZhY2VzKDEpOwoKICByZXR1cm4g
cnY7Cn0KIyAxMjM3ICJuc0RPTUNsYXNzSW5mby5jcHAiCm5zcmVzdWx0Cm5zRE9NQ2xhc3NJbmZv
OjpJbml0KCkKewoKCiAgOwoKCgogIGRvIHsgaWYgKCEoIXNJc0luaXRpYWxpemVkKSkgeyA7IHJl
dHVybiAoKChuc3Jlc3VsdCkgMHhDMUYzMDAwMCkgKyAyKTsgfSB9IHdoaWxlICgwKTsKCiAgZXh0
ZXJuIG5zU2NyaXB0TmFtZVNwYWNlTWFuYWdlciAqZ05hbWVTcGFjZU1hbmFnZXI7CiAgZG8geyBp
ZiAoIShnTmFtZVNwYWNlTWFuYWdlcikpIHsgOyByZXR1cm4gKCgobnNyZXN1bHQpIDB4QzFGMzAw
MDApICsgMSk7IH0gfSB3aGlsZSAoMCk7CgogIG5zcmVzdWx0IHJ2ID0gQ2FsbEdldFNlcnZpY2Uo
bnNJWFBDb25uZWN0OjpHZXRDSUQoKSwgJnNYUENvbm5lY3QpOwogIGRvIHsgaWYgKCEoKCEoKHJ2
KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7CgogIG5zQ09N
UHRyPG5zSVhQQ0Z1bmN0aW9uVGhpc1RyYW5zbGF0b3I+IG9sZDsKCiAgbnNDT01QdHI8bnNJWFBD
RnVuY3Rpb25UaGlzVHJhbnNsYXRvcj4gZWx0ID0gbmV3IG5zRXZlbnRMaXN0ZW5lclRoaXNUcmFu
c2xhdG9yKCk7CiAgZG8geyBpZiAoIShlbHQpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAw
NzAwMGVMKTsgfSB9IHdoaWxlICgwKTsKCiAgc1hQQ29ubmVjdC0+U2V0RnVuY3Rpb25UaGlzVHJh
bnNsYXRvcihuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50TGlzdGVuZXI+OjpHZXRJSUQoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsdCwgZ2V0dGVyX0FkZFJlZnMo
b2xkKSk7CgogIG5zQ09NUHRyPG5zSVNjcmlwdFNlY3VyaXR5TWFuYWdlcj4gc20gPQogICAgZG9f
R2V0U2VydmljZSgiQG1vemlsbGEub3JnL3NjcmlwdHNlY3VyaXR5bWFuYWdlcjsxIiwgJnJ2KTsK
ICBkbyB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0dXJuIHJ2OyB9IH0g
d2hpbGUgKDApOwoKICBzU2VjTWFuID0gc207CiAgKHNTZWNNYW4pLT5BZGRSZWYoKTsKCiAgbnND
T01QdHI8bnNJVGhyZWFkSlNDb250ZXh0U3RhY2s+IHN0YWNrID0KICAgIGRvX0dldFNlcnZpY2Uo
IkBtb3ppbGxhLm9yZy9qcy94cGMvQ29udGV4dFN0YWNrOzEiLCAmcnYpOwogIGRvIHsgaWYgKCEo
KCEoKHJ2KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7Cgog
IEpTQ29udGV4dCAqY3ggPSAwOwoKICBydiA9IHN0YWNrLT5HZXRTYWZlSlNDb250ZXh0KCZjeCk7
CiAgZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsgfSB9
IHdoaWxlICgwKTsKCiAgbnNDT01QdHI8bnNJQ29tcG9uZW50UmVnaXN0cmFyPiBjcjsKICBOU19H
ZXRDb21wb25lbnRSZWdpc3RyYXIoZ2V0dGVyX0FkZFJlZnMoY3IpKTsKICBjb25zdCBuc0lJRCog
eHBhdGhFdmFsdWF0b3JJSUQgPSAwOwogIGlmIChjcikgewogICAgUFJCb29sIGhhdmVYUGF0aERP
TTsKICAgIGNyLT5Jc0NvbnRyYWN0SURSZWdpc3RlcmVkKCJAbW96aWxsYS5vcmcvZG9tL3hwYXRo
LWV2YWx1YXRvcjsxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoYXZlWFBhdGhE
T00pOwogICAgaWYgKGhhdmVYUGF0aERPTSkgewogICAgICB4cGF0aEV2YWx1YXRvcklJRCA9ICZu
c0NPTVR5cGVJbmZvPG5zSURPTVhQYXRoRXZhbHVhdG9yPjo6R2V0SUlEKCk7CiAgICB9CiAgfQoK
ICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9f
V2luZG93X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxu
c0lET01XaW5kb3c+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMg
Y29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lE
T01XaW5kb3c+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUpTV2luZG93Pjo6
R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01XaW5kb3dJbnRlcm5hbD46OkdldElJ
RCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRSZWNlaXZlcj46OkdldElJRCgpLAog
ICAgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwKICAgICZuc0NP
TVR5cGVJbmZvPG5zSURPTVZpZXdDU1M+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5z
SURPTUFic3RyYWN0Vmlldz46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVy
ZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFb
ZURPTUNsYXNzSW5mb19Mb2NhdGlvbl9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0g
Jm5zQ09NVHlwZUluZm88bnNJRE9NTG9jYXRpb24+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRl
cmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAm
bnNDT01UeXBlSW5mbzxuc0lET01Mb2NhdGlvbj46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUlu
Zm88bnNJRE9NTlNMb2NhdGlvbj46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGlu
dGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0Rh
dGFbZURPTUNsYXNzSW5mb19OYXZpZ2F0b3JfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFj
ZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTU5hdmlnYXRvcj46OkdldElJRCgpOyBkLm1IYXNDbGFz
c0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsK
ICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5hdmlnYXRvcj46OkdldElJRCgpLAogICAgJm5zQ09N
VHlwZUluZm88bnNJRE9NSlNOYXZpZ2F0b3I+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFj
ZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFz
c0luZm9EYXRhW2VET01DbGFzc0luZm9fUGx1Z2luX2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRl
cmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01QbHVnaW4+OjpHZXRJSUQoKTsgZC5tSGFzQ2xh
c3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7
CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01QbHVnaW4+OjpHZXRJSUQoKSwKICAwIH07IGQubUlu
dGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9
IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fUGx1Z2luQXJyYXlfaWRdOyA7IDsgZC5tUHJv
dG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTVBsdWdpbkFycmF5Pjo6R2V0
SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRl
cmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NUGx1Z2luQXJyYXk+OjpH
ZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUpTUGx1Z2luQXJyYXk+OjpHZXRJSUQo
KSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xh
c3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fTWltZVR5cGVfaWRd
OyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTU1pbWVU
eXBlPjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5z
SUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTWltZVR5
cGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoK
ICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9f
TWltZVR5cGVBcnJheV9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlw
ZUluZm88bnNJRE9NTWltZVR5cGVBcnJheT46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFj
ZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NP
TVR5cGVJbmZvPG5zSURPTU1pbWVUeXBlQXJyYXk+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVy
ZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHND
bGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fQmFyUHJvcF9pZF07IDsgOyBkLm1Qcm90b0NoYWlu
SW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NQmFyUHJvcD46OkdldElJRCgpOyBkLm1I
YXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3Rb
XSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUJhclByb3A+OjpHZXRJSUQoKSwKICAwIH07
IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0
YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fSGlzdG9yeV9pZF07IDsgOyBkLm1Q
cm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NSGlzdG9yeT46OkdldElJ
RCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJm
YWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSGlzdG9yeT46OkdldElJ
RCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01D
bGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19TY3JlZW5faWRd
OyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTVNjcmVl
bj46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJ
RCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTVNjcmVlbj46
OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsg
bnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19YTUxE
b2N1bWVudF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88
bnNJRE9NWE1MRG9jdW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBz
dGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5m
bzxuc0lET01Eb2N1bWVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NWE1M
RG9jdW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TRG9jdW1lbnQ+
OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTURvY3VtZW50RXZlbnQ+OjpHZXRJ
SUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTURvY3VtZW50U3R5bGU+OjpHZXRJSUQoKSwK
ICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTURvY3VtZW50Vmlldz46OkdldElJRCgpLAogICAgJm5z
Q09NVHlwZUluZm88bnNJRE9NRG9jdW1lbnRSYW5nZT46OkdldElJRCgpLAogICAgJm5zQ09NVHlw
ZUluZm88bnNJRE9NRG9jdW1lbnRUcmF2ZXJzYWw+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJ
bmZvPG5zSURPTURvY3VtZW50WEJMPjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lE
T01FdmVudFRhcmdldD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+
OjpHZXRJSUQoKSwKICB4cGF0aEV2YWx1YXRvcklJRCwgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50
ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0
YVtlRE9NQ2xhc3NJbmZvX0RvY3VtZW50VHlwZV9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJm
YWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NRG9jdW1lbnRUeXBlPjo6R2V0SUlEKCk7IGQubUhh
c0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtd
ID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NRG9jdW1lbnRUeXBlPjo6R2V0SUlEKCksCiAg
ICAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJm
YWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0Ns
YXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19ET01JbXBsZW1lbnRhdGlvbl9pZF07IDsgOyBkLm1Q
cm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NRE9NSW1wbGVtZW50YXRp
b24+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJ
SUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01ET01JbXBs
ZW1lbnRhdGlvbj46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9s
aXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNs
YXNzSW5mb19ET01FeGNlcHRpb25faWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZu
c0NPTVR5cGVJbmZvPG5zSURPTURPTUV4Y2VwdGlvbj46OkdldElJRCgpOyBkLm1IYXNDbGFzc0lu
dGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAg
ICZuc0NPTVR5cGVJbmZvPG5zSURPTURPTUV4Y2VwdGlvbj46OkdldElJRCgpLAogICAgJm5zQ09N
VHlwZUluZm88bnNJRXhjZXB0aW9uPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0g
aW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZv
RGF0YVtlRE9NQ2xhc3NJbmZvX0RvY3VtZW50RnJhZ21lbnRfaWRdOyA7IDsgZC5tUHJvdG9DaGFp
bkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTURvY3VtZW50RnJhZ21lbnQ+OjpHZXRJ
SUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVy
ZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01Eb2N1bWVudEZyYWdtZW50
Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAog
IDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0lu
Zm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19FbGVtZW50X2lkXTsgOyA7
IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01FbGVtZW50Pjo6
R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICpp
bnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudD46Okdl
dElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwK
ICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRl
cmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBz
Q2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0F0dHJfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbklu
dGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUF0dHI+OjpHZXRJSUQoKTsgZC5tSGFzQ2xh
c3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7
CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01BdHRyPjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBl
SW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVy
ZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFb
ZURPTUNsYXNzSW5mb19UZXh0X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnND
T01UeXBlSW5mbzxuc0lET01UZXh0Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0g
MTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlw
ZUluZm88bnNJRE9NVGV4dD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZl
bnRUYXJnZXQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0
SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RP
TUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0NvbW1lbnRf
aWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUNv
bW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3Qg
bnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01Db21t
ZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46Okdl
dElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07
IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0
YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fQ0RBVEFTZWN0aW9uX2lkXTsgOyA7
IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01DREFUQVNlY3Rp
b24+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJ
SUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01DREFUQVNl
Y3Rpb24+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6
R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAogIDAg
fTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9E
YXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b25faWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURP
TVByb2Nlc3NpbmdJbnN0cnVjdGlvbj46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9
IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5
cGVJbmZvPG5zSURPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbj46OkdldElJRCgpLAogICAgJm5zQ09N
VHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZv
PG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNl
X2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9N
Q2xhc3NJbmZvX0VudGl0eV9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09N
VHlwZUluZm88bnNJRE9NRW50aXR5Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0g
MTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlw
ZUluZm88bnNJRE9NRW50aXR5Pjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50
ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0
YVtlRE9NQ2xhc3NJbmZvX0VudGl0eVJlZmVyZW5jZV9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50
ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NRW50aXR5UmVmZXJlbmNlPjo6R2V0SUlEKCk7
IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2Vf
bGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NRW50aXR5UmVmZXJlbmNlPjo6R2V0
SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RP
TUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX05vdGF0aW9u
X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01O
b3RhdGlvbj46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25z
dCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5v
dGF0aW9uPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7
IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJ
bmZvX05vZGVMaXN0X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBl
SW5mbzxuc0lET01Ob2RlTGlzdD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7
IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJ
bmZvPG5zSURPTU5vZGVMaXN0Pjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50
ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0
YVtlRE9NQ2xhc3NJbmZvX05hbWVkTm9kZU1hcF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJm
YWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NTmFtZWROb2RlTWFwPjo6R2V0SUlEKCk7IGQubUhh
c0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtd
ID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTmFtZWROb2RlTWFwPjo6R2V0SUlEKCksCiAg
MCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5m
b0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0RvY3VtZW50U3R5bGVTaGVl
dExpc3RfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5z
SURPTVN0eWxlU2hlZXRMaXN0Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMDsg
c3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewoKICAgICZuc0NPTVR5cGVJ
bmZvPG5zSURPTVN0eWxlU2hlZXRMaXN0Pjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2Vz
ID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJ
bmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0V2ZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZh
Y2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0lu
dGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAg
ICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TRXZlbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJ
bmZvPG5zSURPTUtleUV2ZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01N
b3VzZUV2ZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU1VJRXZlbnQ+
OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7
IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fTXV0
YXRpb25FdmVudF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUlu
Zm88bnNJRE9NTXV0YXRpb25FdmVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9
IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5
cGVJbmZvPG5zSURPTU11dGF0aW9uRXZlbnQ+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFj
ZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFz
c0luZm9EYXRhW2VET01DbGFzc0luZm9fSFRNTERvY3VtZW50X2lkXTsgOyA7IGQubVByb3RvQ2hh
aW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MRG9jdW1lbnQ+OjpHZXRJSUQo
KTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFj
ZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MRG9jdW1lbnQ+OjpHZXRJ
SUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTERvY3VtZW50Pjo6R2V0SUlEKCks
CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0RvY3VtZW50Pjo6R2V0SUlEKCksCiAgICAmbnND
T01UeXBlSW5mbzxuc0lET01Eb2N1bWVudEV2ZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBl
SW5mbzxuc0lET01Eb2N1bWVudFN0eWxlPjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxu
c0lET01Eb2N1bWVudFZpZXc+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTURv
Y3VtZW50UmFuZ2U+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTURvY3VtZW50
VHJhdmVyc2FsPjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01Eb2N1bWVudFhC
TD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJ
SUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgeHBhdGhF
dmFsdWF0b3JJSUQsIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsg
bnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19IVE1M
Q29sbGVjdGlvbl9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUlu
Zm88bnNJRE9NSFRNTENvbGxlY3Rpb24+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2Ug
PSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01U
eXBlSW5mbzxuc0lET01Ob2RlTGlzdD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJ
RE9NSFRNTENvbGxlY3Rpb24+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRl
cmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRh
W2VET01DbGFzc0luZm9fSFRNTE9wdGlvbkNvbGxlY3Rpb25faWRdOyA7IDsgZC5tUHJvdG9DaGFp
bkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxDb2xsZWN0aW9uPjo6R2V0SUlE
KCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMDsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZh
Y2VfbGlzdFtdID0gewoKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTE9wdGlvbkNvbGxl
Y3Rpb24+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxDb2xsZWN0aW9u
Pjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAg
eyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hU
TUxGb3JtQ29udHJvbENvbGxlY3Rpb25faWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9
ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxDb2xsZWN0aW9uPjo6R2V0SUlEKCk7IGQubUhhc0Ns
YXNzSW50ZXJmYWNlID0gMDsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0g
ewoKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxDb2xsZWN0aW9uPjo6R2V0SUlEKCksCiAg
ICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxGb3JtQ29udHJvbExpc3Q+OjpHZXRJSUQoKSwK
ICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJ
bmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fSFRNTEdlbmVyaWNDb2xs
ZWN0aW9uX2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxu
c0lET01IVE1MQ29sbGVjdGlvbj46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDA7
IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKCiAgICAmbnNDT01UeXBl
SW5mbzxuc0lET01IVE1MQ29sbGVjdGlvbj46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNl
cyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNz
SW5mb0RhdGFbZURPTUNsYXNzSW5mb19IVE1MQW5jaG9yRWxlbWVudF9pZF07IDsgOyBkLm1Qcm90
b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTEFuY2hvckVsZW1lbnQ+
OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQg
KmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MQW5jaG9y
RWxlbWVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNIVE1MQW5jaG9y
RWxlbWVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNIVE1MRWxlbWVu
dD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FbGVtZW50Q1NTSW5saW5lU3R5bGU+
OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwg
Jm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFj
ZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFz
c0luZm9EYXRhW2VET01DbGFzc0luZm9fSFRNTEFwcGxldEVsZW1lbnRfaWRdOyA7IDsgZC5tUHJv
dG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxBcHBsZXRFbGVtZW50
Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlE
ICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTEFwcGxl
dEVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTEVsZW1l
bnQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGluZVN0eWxl
Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0SUlEKCks
ICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZh
Y2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xh
c3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxBcmVhRWxlbWVudF9pZF07IDsgOyBkLm1Qcm90
b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTEFyZWFFbGVtZW50Pjo6
R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICpp
bnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTEFyZWFFbGVt
ZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxBcmVhRWxlbWVu
dD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNIVE1MRWxlbWVudD46Okdl
dElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FbGVtZW50Q1NTSW5saW5lU3R5bGU+OjpHZXRJ
SUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwgJm5zQ09N
VHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBp
bnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9E
YXRhW2VET01DbGFzc0luZm9fSFRNTEJSRWxlbWVudF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50
ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTEJSRWxlbWVudD46OkdldElJRCgpOyBk
Lm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xp
c3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxCUkVsZW1lbnQ+OjpHZXRJSUQo
KSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTEVsZW1lbnQ+OjpHZXRJSUQoKSwgJm5z
Q09NVHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGluZVN0eWxlPjo6R2V0SUlEKCksICZuc0NP
TVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5z
SURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xp
c3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xh
c3NJbmZvX0hUTUxCYXNlRWxlbWVudF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0g
Jm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTEJhc2VFbGVtZW50Pjo6R2V0SUlEKCk7IGQubUhhc0Ns
YXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0g
ewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTEJhc2VFbGVtZW50Pjo6R2V0SUlEKCksCiAg
ICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxFbGVtZW50Pjo6R2V0SUlEKCksICZuc0NPTVR5
cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZT46OkdldElJRCgpLCAmbnNDT01UeXBl
SW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET00z
Tm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9
CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5m
b19IVE1MQmFzZUZvbnRFbGVtZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAm
bnNDT01UeXBlSW5mbzxuc0lET01IVE1MQmFzZUZvbnRFbGVtZW50Pjo6R2V0SUlEKCk7IGQubUhh
c0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtd
ID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTEJhc2VGb250RWxlbWVudD46OkdldElJ
RCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNIVE1MRWxlbWVudD46OkdldElJRCgpLCAm
bnNDT01UeXBlSW5mbzxuc0lET01FbGVtZW50Q1NTSW5saW5lU3R5bGU+OjpHZXRJSUQoKSwgJm5z
Q09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88
bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2Vf
bGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01D
bGFzc0luZm9fSFRNTEJvZHlFbGVtZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2Ug
PSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MQm9keUVsZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFz
Q2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10g
PSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MQm9keUVsZW1lbnQ+OjpHZXRJSUQoKSwK
ICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTEVsZW1lbnQ+OjpHZXRJSUQoKSwgJm5zQ09N
VHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGluZVN0eWxlPjo6R2V0SUlEKCksICZuc0NPTVR5
cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURP
TTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7
IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJ
bmZvX0hUTUxCdXR0b25FbGVtZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAm
bnNDT01UeXBlSW5mbzxuc0lET01IVE1MQnV0dG9uRWxlbWVudD46OkdldElJRCgpOyBkLm1IYXND
bGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9
IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxCdXR0b25FbGVtZW50Pjo6R2V0SUlEKCks
CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxCdXR0b25FbGVtZW50Pjo6R2V0SUlEKCks
CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxFbGVtZW50Pjo6R2V0SUlEKCksICZuc0NP
TVR5cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZT46OkdldElJRCgpLCAmbnNDT01U
eXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lE
T00zTm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0
OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNz
SW5mb19IVE1MRExpc3RFbGVtZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAm
bnNDT01UeXBlSW5mbzxuc0lET01IVE1MRExpc3RFbGVtZW50Pjo6R2V0SUlEKCk7IGQubUhhc0Ns
YXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0g
ewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTERMaXN0RWxlbWVudD46OkdldElJRCgpLAog
ICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNIVE1MRWxlbWVudD46OkdldElJRCgpLCAmbnNDT01U
eXBlSW5mbzxuc0lET01FbGVtZW50Q1NTSW5saW5lU3R5bGU+OjpHZXRJSUQoKSwgJm5zQ09NVHlw
ZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9N
M05vZGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsg
fQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0lu
Zm9fSFRNTERlbEVsZW1lbnRfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NP
TVR5cGVJbmZvPG5zSURPTUhUTUxFbGVtZW50Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJm
YWNlID0gMDsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5z
Q09NVHlwZUluZm88bnNJRE9NSFRNTE1vZEVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5
cGVJbmZvPG5zSURPTU5TSFRNTEVsZW1lbnQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJ
RE9NRWxlbWVudENTU0lubGluZVN0eWxlPjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURP
TUV2ZW50VGFyZ2V0Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0
SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RP
TUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxEaXJl
Y3RvcnlFbGVtZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBl
SW5mbzxuc0lET01IVE1MRGlyZWN0b3J5RWxlbWVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0lu
dGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAg
ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxEaXJlY3RvcnlFbGVtZW50Pjo6R2V0SUlEKCksCiAg
ICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxFbGVtZW50Pjo6R2V0SUlEKCksICZuc0NPTVR5
cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZT46OkdldElJRCgpLCAmbnNDT01UeXBl
SW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET00z
Tm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9
CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5m
b19IVE1MRGl2RWxlbWVudF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09N
VHlwZUluZm88bnNJRE9NSFRNTERpdkVsZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRl
cmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAm
bnNDT01UeXBlSW5mbzxuc0lET01IVE1MRGl2RWxlbWVudD46OkdldElJRCgpLAogICAgJm5zQ09N
VHlwZUluZm88bnNJRE9NTlNIVE1MRWxlbWVudD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxu
c0lET01FbGVtZW50Q1NTSW5saW5lU3R5bGU+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJ
RE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpH
ZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5z
RE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fSFRNTEVt
YmVkRWxlbWVudF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUlu
Zm88bnNJRE9NSFRNTEVtYmVkRWxlbWVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFj
ZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NP
TVR5cGVJbmZvPG5zSURPTUhUTUxFbWJlZEVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5
cGVJbmZvPG5zSURPTU5TSFRNTEVsZW1lbnQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJ
RE9NRWxlbWVudENTU0lubGluZVN0eWxlPjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURP
TUV2ZW50VGFyZ2V0Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0
SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RP
TUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxGaWVs
ZFNldEVsZW1lbnRfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJ
bmZvPG5zSURPTUhUTUxGaWVsZFNldEVsZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRl
cmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAm
bnNDT01UeXBlSW5mbzxuc0lET01IVE1MRmllbGRTZXRFbGVtZW50Pjo6R2V0SUlEKCksCiAgICAm
bnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxFbGVtZW50Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJ
bmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZT46OkdldElJRCgpLCAmbnNDT01UeXBlSW5m
bzxuc0lET01FdmVudFRhcmdldD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9k
ZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9Cgog
IHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19I
VE1MRm9udEVsZW1lbnRfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5
cGVJbmZvPG5zSURPTUhUTUxGb250RWxlbWVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVy
ZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZu
c0NPTVR5cGVJbmZvPG5zSURPTUhUTUxGb250RWxlbWVudD46OkdldElJRCgpLAogICAgJm5zQ09N
VHlwZUluZm88bnNJRE9NTlNIVE1MRWxlbWVudD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxu
c0lET01FbGVtZW50Q1NTSW5saW5lU3R5bGU+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJ
RE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpH
ZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5z
RE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fSFRNTEZv
cm1FbGVtZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5m
bzxuc0lET01IVE1MRm9ybUVsZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2Ug
PSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01U
eXBlSW5mbzxuc0lET01IVE1MRm9ybUVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJ
bmZvPG5zSURPTU5TSFRNTEZvcm1FbGVtZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5m
bzxuc0lET01OU0hUTUxFbGVtZW50Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUVs
ZW1lbnRDU1NJbmxpbmVTdHlsZT46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVu
dFRhcmdldD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgp
LAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFz
c0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19IVE1MRnJhbWVFbGVt
ZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lE
T01IVE1MRnJhbWVFbGVtZW50Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsg
c3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUlu
Zm88bnNJRE9NSFRNTEZyYW1lRWxlbWVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88
bnNJRE9NTlNIVE1MRnJhbWVFbGVtZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxu
c0lET01OU0hUTUxFbGVtZW50Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUVsZW1l
bnRDU1NJbmxpbmVTdHlsZT46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFRh
cmdldD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAog
IDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0lu
Zm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19IVE1MRnJhbWVTZXRFbGVt
ZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lE
T01IVE1MRnJhbWVTZXRFbGVtZW50Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0g
MTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlw
ZUluZm88bnNJRE9NSFRNTEZyYW1lU2V0RWxlbWVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlw
ZUluZm88bnNJRE9NTlNIVE1MRWxlbWVudD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lE
T01FbGVtZW50Q1NTSW5saW5lU3R5bGU+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9N
RXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJ
SUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9N
Q2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fSFRNTEhSRWxl
bWVudF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJ
RE9NSFRNTEhSRWxlbWVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0
YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZv
PG5zSURPTUhUTUxIUkVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURP
TU5TSFRNTEVsZW1lbnQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudENT
U0lubGluZVN0eWxlPjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0
Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9
OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0Rh
dGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxIZWFkRWxlbWVudF9pZF07
IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTEhl
YWRFbGVtZW50Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNv
bnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9N
SFRNTEhlYWRFbGVtZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hU
TUxFbGVtZW50Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxp
bmVTdHlsZT46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46Okdl
dElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5t
SW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZk
ID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19IVE1MSGVhZGluZ0VsZW1lbnRfaWRdOyA7
IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxIZWFk
aW5nRWxlbWVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBj
b25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURP
TUhUTUxIZWFkaW5nRWxlbWVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9N
TlNIVE1MRWxlbWVudD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FbGVtZW50Q1NT
SW5saW5lU3R5bGU+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+
OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07
IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0
YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fSFRNTEh0bWxFbGVtZW50X2lkXTsg
OyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MSHRt
bEVsZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29u
c3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01I
VE1MSHRtbEVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRN
TEVsZW1lbnQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGlu
ZVN0eWxlPjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0
SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1J
bnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQg
PSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxJRnJhbWVFbGVtZW50X2lkXTsgOyA7
IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MSUZyYW1l
RWxlbWVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25z
dCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhU
TUxJRnJhbWVFbGVtZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hU
TUxGcmFtZUVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRN
TEVsZW1lbnQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGlu
ZVN0eWxlPjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0
SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1J
bnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQg
PSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxJbWFnZUVsZW1lbnRfaWRdOyA7IDsg
ZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxJbWFnZUVs
ZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3Qg
bnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1M
SW1hZ2VFbGVtZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxJ
bWFnZUVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTEVs
ZW1lbnQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGluZVN0
eWxlPjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0SUlE
KCksICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRl
cmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBz
Q2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxJbnB1dEVsZW1lbnRfaWRdOyA7IDsgZC5t
UHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxJbnB1dEVsZW1l
bnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJ
SUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MSW5w
dXRFbGVtZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxJbnB1
dEVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTEVsZW1l
bnQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGluZVN0eWxl
Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0SUlEKCks
ICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZh
Y2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xh
c3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxJbnNFbGVtZW50X2lkXTsgOyA7IGQubVByb3Rv
Q2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MRWxlbWVudD46OkdldElJ
RCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDA7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJm
YWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxNb2RFbGVtZW50Pjo6
R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxFbGVtZW50Pjo6R2V0SUlE
KCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZT46OkdldElJRCgp
LCAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJRCgpLCAmbnNDT01UeXBl
SW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVy
ZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFb
ZURPTUNsYXNzSW5mb19IVE1MSXNJbmRleEVsZW1lbnRfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbklu
dGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxJc0luZGV4RWxlbWVudD46OkdldElJ
RCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJm
YWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxJc0luZGV4RWxlbWVu
dD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNIVE1MRWxlbWVudD46Okdl
dElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FbGVtZW50Q1NTSW5saW5lU3R5bGU+OjpHZXRJ
SUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwgJm5zQ09N
VHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBp
bnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9E
YXRhW2VET01DbGFzc0luZm9fSFRNTExJRWxlbWVudF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50
ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTExJRWxlbWVudD46OkdldElJRCgpOyBk
Lm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xp
c3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxMSUVsZW1lbnQ+OjpHZXRJSUQo
KSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTEVsZW1lbnQ+OjpHZXRJSUQoKSwgJm5z
Q09NVHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGluZVN0eWxlPjo6R2V0SUlEKCksICZuc0NP
TVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5z
SURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xp
c3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xh
c3NJbmZvX0hUTUxMYWJlbEVsZW1lbnRfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9
ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxMYWJlbEVsZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFz
Q2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10g
PSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MTGFiZWxFbGVtZW50Pjo6R2V0SUlEKCks
CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxFbGVtZW50Pjo6R2V0SUlEKCksICZuc0NP
TVR5cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZT46OkdldElJRCgpLCAmbnNDT01U
eXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lE
T00zTm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0
OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNz
SW5mb19IVE1MTGVnZW5kRWxlbWVudF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0g
Jm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTExlZ2VuZEVsZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFz
Q2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10g
PSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MTGVnZW5kRWxlbWVudD46OkdldElJRCgp
LAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNIVE1MRWxlbWVudD46OkdldElJRCgpLCAmbnND
T01UeXBlSW5mbzxuc0lET01FbGVtZW50Q1NTSW5saW5lU3R5bGU+OjpHZXRJSUQoKSwgJm5zQ09N
VHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJ
RE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlz
dDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFz
c0luZm9fSFRNTExpbmtFbGVtZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAm
bnNDT01UeXBlSW5mbzxuc0lET01IVE1MTGlua0VsZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xh
c3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7
CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MTGlua0VsZW1lbnQ+OjpHZXRJSUQoKSwKICAg
ICZuc0NPTVR5cGVJbmZvPG5zSURPTUxpbmtTdHlsZT46OkdldElJRCgpLAogICAgJm5zQ09NVHlw
ZUluZm88bnNJRE9NTlNIVE1MRWxlbWVudD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lE
T01FbGVtZW50Q1NTSW5saW5lU3R5bGU+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9N
RXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJ
SUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9N
Q2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fSFRNTE1hcEVs
ZW1lbnRfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5z
SURPTUhUTUxNYXBFbGVtZW50Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsg
c3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUlu
Zm88bnNJRE9NSFRNTE1hcEVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5z
SURPTU5TSFRNTEVsZW1lbnQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVu
dENTU0lubGluZVN0eWxlPjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFy
Z2V0Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAg
MCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5m
b0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxNZW51RWxlbWVudF9p
ZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NSFRN
TE1lbnVFbGVtZW50Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGlj
IGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJ
RE9NSFRNTE1lbnVFbGVtZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01O
U0hUTUxFbGVtZW50Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJ
bmxpbmVTdHlsZT46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46
OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAogIDAgfTsg
ZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRh
ICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19IVE1MTWV0YUVsZW1lbnRfaWRdOyA7
IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxNZXRh
RWxlbWVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25z
dCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhU
TUxNZXRhRWxlbWVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNIVE1M
RWxlbWVudD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FbGVtZW50Q1NTSW5saW5l
U3R5bGU+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJ
SUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUlu
dGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9
IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fSFRNTE1vZEVsZW1lbnRfaWRdOyA7IDsgZC5t
UHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxNb2RFbGVtZW50
Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlE
ICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTE1vZEVs
ZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTEVsZW1lbnQ+
OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGluZVN0eWxlPjo6
R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0SUlEKCksICZu
c0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2Vz
ID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJ
bmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxPTGlzdEVsZW1lbnRfaWRdOyA7IDsgZC5tUHJvdG9D
aGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxPTGlzdEVsZW1lbnQ+OjpH
ZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmlu
dGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MT0xpc3RFbGVt
ZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxFbGVtZW50Pjo6
R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZT46Okdl
dElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJRCgpLCAmbnND
T01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9
IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5m
b0RhdGFbZURPTUNsYXNzSW5mb19IVE1MT2JqZWN0RWxlbWVudF9pZF07IDsgOyBkLm1Qcm90b0No
YWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTE9iamVjdEVsZW1lbnQ+OjpH
ZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmlu
dGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MT2JqZWN0RWxl
bWVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNIVE1MRWxlbWVudD46
OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FbGVtZW50Q1NTSW5saW5lU3R5bGU+OjpH
ZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwgJm5z
Q09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMg
PSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0lu
Zm9EYXRhW2VET01DbGFzc0luZm9fSFRNTE9wdEdyb3VwRWxlbWVudF9pZF07IDsgOyBkLm1Qcm90
b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTE9wdEdyb3VwRWxlbWVu
dD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJ
RCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxPcHRH
cm91cEVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTEVs
ZW1lbnQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGluZVN0
eWxlPjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0SUlE
KCksICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRl
cmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBz
Q2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxPcHRpb25FbGVtZW50X2lkXTsgOyA7IGQu
bVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MT3B0aW9uRWxl
bWVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBu
c0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxP
cHRpb25FbGVtZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxF
bGVtZW50Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVT
dHlsZT46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJ
RCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50
ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0g
c0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19IVE1MUGFyYWdyYXBoRWxlbWVudF9pZF07IDsg
OyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTFBhcmFn
cmFwaEVsZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMg
Y29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lE
T01IVE1MUGFyYWdyYXBoRWxlbWVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJ
RE9NTlNIVE1MRWxlbWVudD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FbGVtZW50
Q1NTSW5saW5lU3R5bGU+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJn
ZXQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAw
IH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZv
RGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fSFRNTFBhcmFtRWxlbWVudF9p
ZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NSFRN
TFBhcmFtRWxlbWVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRp
YyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5z
SURPTUhUTUxQYXJhbUVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURP
TU5TSFRNTEVsZW1lbnQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudENT
U0lubGluZVN0eWxlPjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0
Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9
OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0Rh
dGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxQcmVFbGVtZW50X2lkXTsg
OyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MUHJl
RWxlbWVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25z
dCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhU
TUxQcmVFbGVtZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxF
bGVtZW50Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVT
dHlsZT46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJ
RCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50
ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0g
c0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19IVE1MUXVvdGVFbGVtZW50X2lkXTsgOyA7IGQu
bVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MUXVvdGVFbGVt
ZW50Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5z
SUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTFF1
b3RlRWxlbWVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNIVE1MRWxl
bWVudD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FbGVtZW50Q1NTSW5saW5lU3R5
bGU+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQo
KSwgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVy
ZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHND
bGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fSFRNTFNjcmlwdEVsZW1lbnRfaWRdOyA7IDsgZC5t
UHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxTY3JpcHRFbGVt
ZW50Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5z
SUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTFNj
cmlwdEVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTEVs
ZW1lbnQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGluZVN0
eWxlPjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0SUlE
KCksICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRl
cmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBz
Q2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxTZWxlY3RFbGVtZW50X2lkXTsgOyA7IGQu
bVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MU2VsZWN0RWxl
bWVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBu
c0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxT
ZWxlY3RFbGVtZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxT
ZWxlY3RFbGVtZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU1hCTEZv
cm1Db250cm9sPjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxFbGVt
ZW50Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVTdHls
ZT46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJRCgp
LCAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJm
YWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0Ns
YXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19IVE1MU3BhY2VyRWxlbWVudF9pZF07IDsgOyBkLm1Q
cm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTEVsZW1lbnQ+OjpH
ZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAwOyBzdGF0aWMgY29uc3QgbnNJSUQgKmlu
dGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MRWxlbWVudD46
OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNIVE1MRWxlbWVudD46OkdldElJ
RCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FbGVtZW50Q1NTSW5saW5lU3R5bGU+OjpHZXRJSUQo
KSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlw
ZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRl
cmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRh
W2VET01DbGFzc0luZm9fSFRNTFNwYW5FbGVtZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRl
cmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MRWxlbWVudD46OkdldElJRCgpOyBkLm1I
YXNDbGFzc0ludGVyZmFjZSA9IDA7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3Rb
XSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxFbGVtZW50Pjo6R2V0SUlEKCksCiAg
ICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxFbGVtZW50Pjo6R2V0SUlEKCksICZuc0NPTVR5
cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZT46OkdldElJRCgpLCAmbnNDT01UeXBl
SW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET00z
Tm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9
CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5m
b19IVE1MU3R5bGVFbGVtZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnND
T01UeXBlSW5mbzxuc0lET01IVE1MU3R5bGVFbGVtZW50Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNz
SW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewog
ICAgJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTFN0eWxlRWxlbWVudD46OkdldElJRCgpLAogICAg
Jm5zQ09NVHlwZUluZm88bnNJRE9NTGlua1N0eWxlPjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBl
SW5mbzxuc0lET01OU0hUTUxFbGVtZW50Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURP
TUVsZW1lbnRDU1NJbmxpbmVTdHlsZT46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01F
dmVudFRhcmdldD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJ
RCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01D
bGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19IVE1MVGFibGVD
YXB0aW9uRWxlbWVudF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlw
ZUluZm88bnNJRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xh
c3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7
CgogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+OjpHZXRJ
SUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTEVsZW1lbnQ+OjpHZXRJSUQoKSwg
Jm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGluZVN0eWxlPjo6R2V0SUlEKCksICZu
c0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZv
PG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNl
X2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9N
Q2xhc3NJbmZvX0hUTUxUYWJsZUNlbGxFbGVtZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRl
cmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MVGFibGVDZWxsRWxlbWVudD46OkdldElJ
RCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJm
YWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxUYWJsZUNlbGxFbGVt
ZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxFbGVtZW50Pjo6
R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZT46Okdl
dElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJRCgpLCAmbnND
T01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9
IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5m
b0RhdGFbZURPTUNsYXNzSW5mb19IVE1MVGFibGVDb2xFbGVtZW50X2lkXTsgOyA7IGQubVByb3Rv
Q2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MVGFibGVDb2xFbGVtZW50
Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlE
ICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTFRhYmxl
Q29sRWxlbWVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNIVE1MRWxl
bWVudD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FbGVtZW50Q1NTSW5saW5lU3R5
bGU+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQo
KSwgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVy
ZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKCgoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9
IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fSFRNTFRhYmxlQ29sR3JvdXBFbGVtZW50X2lk
XTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1M
VGFibGVDb2xFbGVtZW50Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3Rh
dGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88
bnNJRE9NSFRNTFRhYmxlQ29sRWxlbWVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88
bnNJRE9NTlNIVE1MRWxlbWVudD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FbGVt
ZW50Q1NTSW5saW5lU3R5bGU+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRU
YXJnZXQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwK
ICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJ
bmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fSFRNTFRhYmxlRWxlbWVu
dF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9N
SFRNTFRhYmxlRWxlbWVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0
YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZv
PG5zSURPTUhUTUxUYWJsZUVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5z
SURPTU5TSFRNTEVsZW1lbnQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVu
dENTU0lubGluZVN0eWxlPjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFy
Z2V0Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAg
MCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5m
b0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxUYWJsZVJvd0VsZW1l
bnRfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURP
TUhUTUxUYWJsZVJvd0VsZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAx
OyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBl
SW5mbzxuc0lET01IVE1MVGFibGVSb3dFbGVtZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBl
SW5mbzxuc0lET01OU0hUTUxFbGVtZW50Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURP
TUVsZW1lbnRDU1NJbmxpbmVTdHlsZT46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01F
dmVudFRhcmdldD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJ
RCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01D
bGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19IVE1MVGFibGVT
ZWN0aW9uRWxlbWVudF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlw
ZUluZm88bnNJRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xh
c3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7
CgogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+OjpHZXRJ
SUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTEVsZW1lbnQ+OjpHZXRJSUQoKSwg
Jm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGluZVN0eWxlPjo6R2V0SUlEKCksICZu
c0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZv
PG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNl
X2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9N
Q2xhc3NJbmZvX0hUTUxUZXh0QXJlYUVsZW1lbnRfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVy
ZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxUZXh0QXJlYUVsZW1lbnQ+OjpHZXRJSUQo
KTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFj
ZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MVGV4dEFyZWFFbGVtZW50
Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxUZXh0QXJlYUVsZW1l
bnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTEVsZW1lbnQ+OjpH
ZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGluZVN0eWxlPjo6R2V0
SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0SUlEKCksICZuc0NP
TVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0g
aW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZv
RGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxUaXRsZUVsZW1lbnRfaWRdOyA7IDsgZC5tUHJvdG9DaGFp
bkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxUaXRsZUVsZW1lbnQ+OjpHZXRJ
SUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVy
ZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MVGl0bGVFbGVtZW50
Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxFbGVtZW50Pjo6R2V0
SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZT46OkdldElJ
RCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJRCgpLCAmbnNDT01U
eXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGlu
dGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0Rh
dGFbZURPTUNsYXNzSW5mb19IVE1MVUxpc3RFbGVtZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5J
bnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MVUxpc3RFbGVtZW50Pjo6R2V0SUlE
KCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZh
Y2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTFVMaXN0RWxlbWVudD46
OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNIVE1MRWxlbWVudD46OkdldElJ
RCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FbGVtZW50Q1NTSW5saW5lU3R5bGU+OjpHZXRJSUQo
KSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlw
ZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRl
cmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRh
W2VET01DbGFzc0luZm9fSFRNTFVua25vd25FbGVtZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5J
bnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MRWxlbWVudD46OkdldElJRCgpOyBk
Lm1IYXNDbGFzc0ludGVyZmFjZSA9IDA7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xp
c3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxFbGVtZW50Pjo6R2V0SUlEKCks
CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxFbGVtZW50Pjo6R2V0SUlEKCksICZuc0NP
TVR5cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZT46OkdldElJRCgpLCAmbnNDT01U
eXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lE
T00zTm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0
OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNz
SW5mb19IVE1MV0JSRWxlbWVudF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5z
Q09NVHlwZUluZm88bnNJRE9NSFRNTEVsZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRl
cmZhY2UgPSAwOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAm
bnNDT01UeXBlSW5mbzxuc0lET01IVE1MRWxlbWVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlw
ZUluZm88bnNJRE9NTlNIVE1MRWxlbWVudD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lE
T01FbGVtZW50Q1NTSW5saW5lU3R5bGU+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9N
RXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJ
SUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9N
Q2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fQ1NTU3R5bGVS
dWxlX2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lE
T01DU1NTdHlsZVJ1bGU+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0
aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxu
c0lET01DU1NTdHlsZVJ1bGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRl
cmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRh
W2VET01DbGFzc0luZm9fQ1NTQ2hhcnNldFJ1bGVfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVy
ZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUNTU0NoYXJzZXRSdWxlPjo6R2V0SUlEKCk7IGQu
bUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlz
dFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NQ1NTQ2hhcnNldFJ1bGU+OjpHZXRJSUQo
KSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xh
c3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fQ1NTSW1wb3J0UnVs
ZV9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9N
Q1NTSW1wb3J0UnVsZT46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRp
YyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5z
SURPTUNTU0ltcG9ydFJ1bGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRl
cmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRh
W2VET01DbGFzc0luZm9fQ1NTTWVkaWFSdWxlX2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZh
Y2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01DU1NNZWRpYVJ1bGU+OjpHZXRJSUQoKTsgZC5tSGFz
Q2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10g
PSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01DU1NNZWRpYVJ1bGU+OjpHZXRJSUQoKSwKICAw
IH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZv
RGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fQ1NTTmFtZVNwYWNlUnVsZV9p
ZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NQ1NT
UnVsZT46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDA7IHN0YXRpYyBjb25zdCBu
c0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUNTU1J1
bGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoK
ICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9f
Q1NTUnVsZUxpc3RfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJ
bmZvPG5zSURPTUNTU1J1bGVMaXN0Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0g
MTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlw
ZUluZm88bnNJRE9NQ1NTUnVsZUxpc3Q+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMg
PSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0lu
Zm9EYXRhW2VET01DbGFzc0luZm9fQ1NTR3JvdXBSdWxlUnVsZUxpc3RfaWRdOyA7IDsgZC5tUHJv
dG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUNTU1J1bGVMaXN0Pjo6R2V0
SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMDsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRl
cmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NQ1NTUnVsZUxpc3Q+OjpH
ZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5z
RE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fTWVkaWFM
aXN0X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lE
T01NZWRpYUxpc3Q+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMg
Y29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lE
T01NZWRpYUxpc3Q+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2Vf
bGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01D
bGFzc0luZm9fU3R5bGVTaGVldExpc3RfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9
ICZuc0NPTVR5cGVJbmZvPG5zSURPTVN0eWxlU2hlZXRMaXN0Pjo6R2V0SUlEKCk7IGQubUhhc0Ns
YXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0g
ewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NU3R5bGVTaGVldExpc3Q+OjpHZXRJSUQoKSwKICAw
IH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZv
RGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fQ1NTU3R5bGVTaGVldF9pZF07
IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NQ1NTU3R5
bGVTaGVldD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25z
dCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUNT
U1N0eWxlU2hlZXQ+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2Vf
bGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01D
bGFzc0luZm9fQ1NTU3R5bGVEZWNsYXJhdGlvbl9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJm
YWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbj46OkdldElJRCgp
OyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNl
X2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUNTU1N0eWxlRGVjbGFyYXRpb24+
OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUNTUzJQcm9wZXJ0aWVzPjo6R2V0
SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0NTUzJQcm9wZXJ0aWVzPjo6R2V0SUlE
KCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNs
YXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0NvbXB1dGVkQ1NT
U3R5bGVEZWNsYXJhdGlvbl9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09N
VHlwZUluZm88bnNJRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbj46OkdldElJRCgpOyBkLm1IYXNDbGFz
c0ludGVyZmFjZSA9IDA7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsK
CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01DU1NTdHlsZURlY2xhcmF0aW9uPjo6R2V0SUlEKCks
CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01DU1MyUHJvcGVydGllcz46OkdldElJRCgpLAogICAg
Jm5zQ09NVHlwZUluZm88bnNJRE9NTlNDU1MyUHJvcGVydGllcz46OkdldElJRCgpLAogIDAgfTsg
ZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRh
ICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19ST0NTU1ByaW1pdGl2ZVZhbHVlX2lk
XTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01DU1NQ
cmltaXRpdmVWYWx1ZT46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDA7IHN0YXRp
YyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKCiAgICAmbnNDT01UeXBlSW5mbzxu
c0lET01DU1NQcmltaXRpdmVWYWx1ZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9
IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5m
b0RhdGFbZURPTUNsYXNzSW5mb19DU1NWYWx1ZUxpc3RfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbklu
dGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUNTU1ZhbHVlTGlzdD46OkdldElJRCgpOyBk
Lm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xp
c3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUNTU1ZhbHVlTGlzdD46OkdldElJRCgp
LAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFz
c0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19DU1NSZWN0X2lkXTsg
OyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01SZWN0Pjo6
R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICpp
bnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NUmVjdD46OkdldElJ
RCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01D
bGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19DU1NSR0JDb2xv
cl9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9N
UkdCQ29sb3I+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29u
c3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01S
R0JDb2xvcj46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0
OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNz
SW5mb19SYW5nZV9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUlu
Zm88bnNJRE9NUmFuZ2U+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0
aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxu
c0lET01SYW5nZT46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNSYW5nZT46
OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsg
bnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19UcmVl
V2Fsa2VyX2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxu
c0lET01UcmVlV2Fsa2VyPjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3Rh
dGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88
bnNJRE9NVHJlZVdhbGtlcj46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVy
ZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFb
ZURPTUNsYXNzSW5mb19TZWxlY3Rpb25faWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9
ICZuc0NPTVR5cGVJbmZvPG5zSVNlbGVjdGlvbj46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVy
ZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZu
c0NPTVR5cGVJbmZvPG5zSVNlbGVjdGlvbj46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNl
cyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNz
SW5mb0RhdGFbZURPTUNsYXNzSW5mb19YVUxEb2N1bWVudF9pZF07IDsgOyBkLm1Qcm90b0NoYWlu
SW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NWFVMRG9jdW1lbnQ+OjpHZXRJSUQoKTsg
ZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9s
aXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01YVUxEb2N1bWVudD46OkdldElJRCgp
LAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNEb2N1bWVudD46OkdldElJRCgpLAogICAgJm5z
Q09NVHlwZUluZm88bnNJRE9NRG9jdW1lbnRFdmVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlw
ZUluZm88bnNJRE9NRG9jdW1lbnRWaWV3Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxu
c0lET01Eb2N1bWVudFhCTD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NRG9j
dW1lbnRTdHlsZT46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NRG9jdW1lbnRS
YW5nZT46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NRG9jdW1lbnRUcmF2ZXJz
YWw+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0
SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAogIDAgfTsg
ZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRh
ICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19YVUxFbGVtZW50X2lkXTsgOyA7IGQu
bVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01YVUxFbGVtZW50Pjo6
R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICpp
bnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NWFVMRWxlbWVudD46
OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQo
KSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xh
c3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fWFVMQ29tbWFuZERp
c3BhdGNoZXJfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZv
PG5zSURPTVhVTENvbW1hbmREaXNwYXRjaGVyPjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJm
YWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5z
Q09NVHlwZUluZm88bnNJRE9NWFVMQ29tbWFuZERpc3BhdGNoZXI+OjpHZXRJSUQoKSwKICAwIH07
IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0
YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fWFVMTm9kZUxpc3RfaWRdOyA7IDsg
ZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTU5vZGVMaXN0Pjo6
R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMDsgc3RhdGljIGNvbnN0IG5zSUlEICpp
bnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTm9kZUxpc3Q+OjpH
ZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5z
RE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fWFVMTmFt
ZWROb2RlTWFwX2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5m
bzxuc0lET01OYW1lZE5vZGVNYXA+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAw
OyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBl
SW5mbzxuc0lET01OYW1lZE5vZGVNYXA+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMg
PSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0lu
Zm9EYXRhW2VET01DbGFzc0luZm9fWFVMQXR0cl9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJm
YWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NQXR0cj46OkdldElJRCgpOyBkLm1IYXNDbGFzc0lu
dGVyZmFjZSA9IDA7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAg
ICZuc0NPTVR5cGVJbmZvPG5zSURPTUF0dHI+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFj
ZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFz
c0luZm9EYXRhW2VET01DbGFzc0luZm9fWFVMQ29udHJvbGxlcnNfaWRdOyA7IDsgZC5tUHJvdG9D
aGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSUNvbnRyb2xsZXJzPjo6R2V0SUlEKCk7
IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMDsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2Vf
bGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJQ29udHJvbGxlcnM+OjpHZXRJSUQoKSwK
ICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJ
bmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fQm94T2JqZWN0X2lkXTsg
OyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lCb3hPYmplY3Q+
OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQg
KmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lCb3hPYmplY3Q+OjpH
ZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5z
RE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fVHJlZVNl
bGVjdGlvbl9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88
bnNJVHJlZVNlbGVjdGlvbj46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0
YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZv
PG5zSVRyZWVTZWxlY3Rpb24+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRl
cmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRh
W2VET01DbGFzc0luZm9fVHJlZUNvbnRlbnRWaWV3X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRl
cmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lUcmVlQ29udGVudFZpZXc+OjpHZXRJSUQoKTsgZC5t
SGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0
W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lUcmVlQ29udGVudFZpZXc+OjpHZXRJSUQoKSwK
ICAgICZuc0NPTVR5cGVJbmZvPG5zSVRyZWVWaWV3Pjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRl
cmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBz
Q2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0NyeXB0b19pZF07IDsgOyBkLm1Qcm90b0NoYWlu
SW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NQ3J5cHRvPjo6R2V0SUlEKCk7IGQubUhh
c0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtd
ID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NQ3J5cHRvPjo6R2V0SUlEKCksCiAgMCB9OyBk
Lm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEg
JmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0NSTUZPYmplY3RfaWRdOyA7IDsgZC5t
UHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUNSTUZPYmplY3Q+OjpH
ZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmlu
dGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01DUk1GT2JqZWN0Pjo6
R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBu
c0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX1BrY3Mx
MV9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9N
UGtjczExPjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0
IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NUGtj
czExPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0K
CiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZv
X1hNTFN0eWxlc2hlZXRQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25faWRdOyA7IDsgZC5tUHJvdG9DaGFp
bkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbj46
OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDA7IHN0YXRpYyBjb25zdCBuc0lJRCAq
aW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTVByb2Nlc3NpbmdJ
bnN0cnVjdGlvbj46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTGlua1N0eWxl
Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJ
RCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07IGQu
bUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQojIDIxNjAgIm5zRE9NQ2xhc3NJbmZvLmNw
cCIKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0lu
Zm9fQ2hyb21lV2luZG93X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01U
eXBlSW5mbzxuc0lET01XaW5kb3c+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAw
OyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBl
SW5mbzxuc0lET01XaW5kb3c+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUpT
V2luZG93Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01XaW5kb3dJbnRlcm5h
bD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NQ2hyb21lV2luZG93Pjo6R2V0
SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFJlY2VpdmVyPjo6R2V0SUlEKCks
CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJRCgpLAogICAgJm5z
Q09NVHlwZUluZm88bnNJRE9NVmlld0NTUz46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88
bnNJRE9NQWJzdHJhY3RWaWV3Pjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50
ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0
YVtlRE9NQ2xhc3NJbmZvX1JhbmdlRXhjZXB0aW9uX2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRl
cmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01SYW5nZUV4Y2VwdGlvbj46OkdldElJRCgpOyBk
Lm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xp
c3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTVJhbmdlRXhjZXB0aW9uPjo6R2V0SUlE
KCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lFeGNlcHRpb24+OjpHZXRJSUQoKSwKICAwIH07IGQu
bUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAm
ZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fQ29udGVudExpc3RfaWRdOyA7IDsgZC5t
UHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxDb2xsZWN0aW9u
Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlE
ICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTm9kZUxpc3Q+
OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxDb2xsZWN0aW9uPjo6R2V0
SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RP
TUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0ltYWdlRG9j
dW1lbnRfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5z
SUltYWdlRG9jdW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0
aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxu
c0lET01IVE1MRG9jdW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSUltYWdl
RG9jdW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTERvY3Vt
ZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0RvY3VtZW50Pjo6R2V0
SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01Eb2N1bWVudEV2ZW50Pjo6R2V0SUlEKCks
CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01Eb2N1bWVudFN0eWxlPjo6R2V0SUlEKCksCiAgICAm
bnNDT01UeXBlSW5mbzxuc0lET01Eb2N1bWVudFZpZXc+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5
cGVJbmZvPG5zSURPTURvY3VtZW50UmFuZ2U+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZv
PG5zSURPTURvY3VtZW50VHJhdmVyc2FsPjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxu
c0lET01Eb2N1bWVudFhCTD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZl
bnRUYXJnZXQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0
SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KIyAyMjMwICJu
c0RPTUNsYXNzSW5mby5jcHAiCiAgRGVmaW5lU3RhdGljSlNWYWxzKGN4KTsKCiAgUFJJbnQzMiBp
OwoKICBmb3IgKGkgPSAwOyBpIDwgZURPTUNsYXNzSW5mb0lEQ291bnQ7ICsraSkgewogICAgUmVn
aXN0ZXJDbGFzc05hbWUoaSk7CiAgfQoKICBmb3IgKGkgPSAwOyBpIDwgZURPTUNsYXNzSW5mb0lE
Q291bnQ7ICsraSkgewogICAgUmVnaXN0ZXJDbGFzc1Byb3RvcyhpKTsKICB9CgogIFJlZ2lzdGVy
RXh0ZXJuYWxDbGFzc2VzKCk7CgogIHNJc0luaXRpYWxpemVkID0gMTsKCiAgcmV0dXJuIDA7Cn0K
CgpQUkludDMyCm5zRE9NQ2xhc3NJbmZvOjpHZXRBcnJheUluZGV4RnJvbUlkKEpTQ29udGV4dCAq
Y3gsIGpzdmFsIGlkLCBQUkJvb2wgKmFJc051bWJlcikKewogIGpzZG91YmxlIGFycmF5X2luZGV4
OwoKICBpZiAoYUlzTnVtYmVyKSB7CiAgICAqYUlzTnVtYmVyID0gMDsKICB9CgogIGlmICghOjpK
U19WYWx1ZVRvTnVtYmVyKGN4LCBpZCwgJmFycmF5X2luZGV4KSkgewogICAgcmV0dXJuIC0xOwog
IH0KCiAganNpbnQgaSA9IC0xOwoKICBpZiAoISgoKChfX2V4dGVuc2lvbl9fICh7IGpzX2llZWVf
ZG91YmxlX3NoYXBlX3R5cGUgc2hfdTsgc2hfdS52YWx1ZSA9IChhcnJheV9pbmRleCk7IHNoX3Uu
cGFydHMubXN3OyB9KSkgJiAweDdmZjAwMDAwKSAhPSAweDdmZjAwMDAwKSAmJiAhKChfX2V4dGVu
c2lvbl9fICh7IGpzX2llZWVfZG91YmxlX3NoYXBlX3R5cGUgc2hfdTsgc2hfdS52YWx1ZSA9IChh
cnJheV9pbmRleCk7IHNoX3UucGFydHMubXN3OyB9KSkgPT0gMHg4MDAwMDAwMCAmJiAoX19leHRl
bnNpb25fXyAoeyBqc19pZWVlX2RvdWJsZV9zaGFwZV90eXBlIHNoX3U7IHNoX3UudmFsdWUgPSAo
YXJyYXlfaW5kZXgpOyBzaF91LnBhcnRzLmxzdzsgfSkpID09IDApICYmICgoYXJyYXlfaW5kZXgp
ID09IChpID0gKGpzaW50KShhcnJheV9pbmRleCkpKSkpIHsKICAgIHJldHVybiAtMTsKICB9Cgog
IGlmIChhSXNOdW1iZXIpIHsKICAgICphSXNOdW1iZXIgPSAxOwogIH0KCiAgcmV0dXJuIGk7Cn0K
Cm5zcmVzdWx0Cm5zRE9NQ2xhc3NJbmZvOjpHZXRJbnRlcmZhY2VzKFBSVWludDMyICphQ291bnQs
IG5zSUlEICoqKmFBcnJheSkKewogIFBSVWludDMyIGNvdW50ID0gMDsKCiAgd2hpbGUgKG1EYXRh
LT5tSW50ZXJmYWNlc1tjb3VudF0pIHsKICAgIGNvdW50Kys7CiAgfQoKICAqYUNvdW50ID0gY291
bnQ7CgogIGlmICghY291bnQpIHsKICAgICphQXJyYXkgPSAwOwoKICAgIHJldHVybiAwOwogIH0K
CiAgKmFBcnJheSA9IHN0YXRpY19jYXN0PCBuc0lJRCAqKiA+KG5zTWVtb3J5OjpBbGxvYyhjb3Vu
dCAqIHNpemVvZihuc0lJRCAqKSkpOwogIGRvIHsgaWYgKCEoKmFBcnJheSkpIHsgOyByZXR1cm4g
KChuc3Jlc3VsdCkgMHg4MDA3MDAwZUwpOyB9IH0gd2hpbGUgKDApOwoKICBQUlVpbnQzMiBpOwog
IGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICBuc0lJRCAqaWlkID0gc3RhdGljX2Nh
c3Q8IG5zSUlEICogPihuc01lbW9yeTo6Q2xvbmUobURhdGEtPm1JbnRlcmZhY2VzW2ldLCBzaXpl
b2YobnNJSUQpKSk7CgoKICAgIGlmICghaWlkKSB7CiAgICAgIGRvIHsgUFJJbnQzMiBpdGVyXyA9
IFBSSW50MzIoKGkpKTsgd2hpbGUgKC0taXRlcl8gPj0gMCkgbnNNZW1vcnk6OkZyZWUoKCgqYUFy
cmF5KSlbaXRlcl9dKTsgbnNNZW1vcnk6OkZyZWUoKCgqYUFycmF5KSkpOyB9IHdoaWxlICgwKTsK
CiAgICAgIHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7CiAgICB9CgogICAgKigoKmFB
cnJheSkgKyBpKSA9IGlpZDsKICB9CgogIHJldHVybiAwOwp9Cgpuc3Jlc3VsdApuc0RPTUNsYXNz
SW5mbzo6R2V0SGVscGVyRm9yTGFuZ3VhZ2UoUFJVaW50MzIgbGFuZ3VhZ2UsIG5zSVN1cHBvcnRz
ICoqX3JldHZhbCkKewogIGlmIChsYW5ndWFnZSA9PSBuc0lQcm9ncmFtbWluZ0xhbmd1YWdlOjpK
QVZBU0NSSVBUKSB7CiAgICAqX3JldHZhbCA9IHN0YXRpY19jYXN0PCBuc0lYUENTY3JpcHRhYmxl
ICogPih0aGlzKTsKCiAgICAoKl9yZXR2YWwpLT5BZGRSZWYoKTsKICB9IGVsc2UgewogICAgKl9y
ZXR2YWwgPSAwOwogIH0KCiAgcmV0dXJuIDA7Cn0KCm5zcmVzdWx0Cm5zRE9NQ2xhc3NJbmZvOjpH
ZXRDb250cmFjdElEKGNoYXIgKiphQ29udHJhY3RJRCkKewogICphQ29udHJhY3RJRCA9IDA7Cgog
IHJldHVybiAwOwp9Cgpuc3Jlc3VsdApuc0RPTUNsYXNzSW5mbzo6R2V0Q2xhc3NEZXNjcmlwdGlv
bihjaGFyICoqYUNsYXNzRGVzY3JpcHRpb24pCnsKICByZXR1cm4gR2V0Q2xhc3NOYW1lKGFDbGFz
c0Rlc2NyaXB0aW9uKTsKfQoKbnNyZXN1bHQKbnNET01DbGFzc0luZm86OkdldENsYXNzSUQobnND
SUQgKiphQ2xhc3NJRCkKewogICphQ2xhc3NJRCA9IDA7CiAgcmV0dXJuIDA7Cn0KCm5zcmVzdWx0
Cm5zRE9NQ2xhc3NJbmZvOjpHZXRDbGFzc0lETm9BbGxvYyhuc0NJRCAqYUNsYXNzSUQpCnsKICBy
ZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDA0MDExMUwpOwp9Cgpuc3Jlc3VsdApuc0RPTUNsYXNzSW5m
bzo6R2V0SW1wbGVtZW50YXRpb25MYW5ndWFnZShQUlVpbnQzMiAqYUltcGxMYW5ndWFnZSkKewog
ICphSW1wbExhbmd1YWdlID0gbnNJUHJvZ3JhbW1pbmdMYW5ndWFnZTo6Q1BMVVNQTFVTOwoKICBy
ZXR1cm4gMDsKfQoKbnNyZXN1bHQKbnNET01DbGFzc0luZm86OkdldEZsYWdzKFBSVWludDMyICph
RmxhZ3MpCnsKICAqYUZsYWdzID0gKG5zSUNsYXNzSW5mbzo6TUFJTl9USFJFQURfT05MWSB8IG5z
SUNsYXNzSW5mbzo6RE9NX09CSkVDVCk7CgogIHJldHVybiAwOwp9CgoKCm5zcmVzdWx0Cm5zRE9N
Q2xhc3NJbmZvOjpHZXRDbGFzc05hbWUoY2hhciAqKmFDbGFzc05hbWUpCnsKICAqYUNsYXNzTmFt
ZSA9IG5zQ1JUOjpzdHJkdXAobURhdGEtPm1OYW1lKTsKCiAgcmV0dXJuIDA7Cn0KCm5zcmVzdWx0
Cm5zRE9NQ2xhc3NJbmZvOjpHZXRTY3JpcHRhYmxlRmxhZ3MoUFJVaW50MzIgKmFGbGFncykKewog
ICphRmxhZ3MgPSBtRGF0YS0+bVNjcmlwdGFibGVGbGFnczsKCiAgcmV0dXJuIDA7Cn0KCm5zcmVz
dWx0Cm5zRE9NQ2xhc3NJbmZvOjpQcmVDcmVhdGUobnNJU3VwcG9ydHMgKm5hdGl2ZU9iaiwgSlND
b250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqZ2xvYmFsT2Jq
LCBKU09iamVjdCAqKnBhcmVudE9iaikKewogIDsKCiAgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAw
MGZmZmZMKTsKfQoKbnNyZXN1bHQKbnNET01DbGFzc0luZm86OkNyZWF0ZShuc0lYUENvbm5lY3RX
cmFwcGVkTmF0aXZlICp3cmFwcGVyLAogICAgICAgICAgICAgICAgICAgICAgIEpTQ29udGV4dCAq
Y3gsIEpTT2JqZWN0ICpvYmopCnsKICA7CgogIHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZm
TCk7Cn0KCm5zcmVzdWx0Cm5zRE9NQ2xhc3NJbmZvOjpQb3N0Q3JlYXRlKG5zSVhQQ29ubmVjdFdy
YXBwZWROYXRpdmUgKndyYXBwZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTQ29udGV4
dCAqY3gsIEpTT2JqZWN0ICpvYmopCnsKICBzdGF0aWMgY29uc3QgbnNJSUQgKnNTdXBwb3J0c0lJ
RCA9ICZuc0NPTVR5cGVJbmZvPG5zSVN1cHBvcnRzPjo6R2V0SUlEKCk7CgoKICBpZiAobURhdGEt
Pm1Qcm90b0NoYWluSW50ZXJmYWNlID09IHNTdXBwb3J0c0lJRCB8fAogICAgICAhbURhdGEtPm1Q
cm90b0NoYWluSW50ZXJmYWNlKSB7CiAgICByZXR1cm4gMDsKICB9CgogIEpTT2JqZWN0ICpwcm90
byA9IDA7CgogIHdyYXBwZXItPkdldEpTT2JqZWN0UHJvdG90eXBlKCZwcm90byk7CgogIEpTT2Jq
ZWN0ICpwcm90b19wcm90byA9IDo6SlNfR2V0UHJvdG90eXBlKGN4LCBwcm90byk7CgogIEpTQ2xh
c3MgKnByb3RvX3Byb3RvX2NsYXNzID0gSlNfR2V0Q2xhc3MoY3gsIHByb3RvX3Byb3RvKTsKCiAg
aWYgKCFzT2JqZWN0Q2xhc3MpIHsKICAgIHNPYmplY3RDbGFzcyA9IHByb3RvX3Byb3RvX2NsYXNz
OwogIH0KCiAgaWYgKHByb3RvX3Byb3RvX2NsYXNzICE9IHNPYmplY3RDbGFzcykgewoKCgoKICAg
IHJldHVybiAwOwogIH0KIyAyNDU5ICJuc0RPTUNsYXNzSW5mby5jcHAiCiAgSlNPYmplY3QgKmds
b2JhbCA9IEdldEdsb2JhbEpTT2JqZWN0KGN4LCBvYmopOwoKICBqc3ZhbCB2YWw7CiAgaWYgKCE6
OkpTX0dldFByb3BlcnR5KGN4LCBnbG9iYWwsIG1EYXRhLT5tTmFtZSwgJnZhbCkpIHsKICAgIHJl
dHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7CiAgfQoKICByZXR1cm4gMDsKfQoKbnNyZXN1
bHQKbnNET01DbGFzc0luZm86OkFkZFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUg
KndyYXBwZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09i
amVjdCAqb2JqLCBqc3ZhbCBpZCwganN2YWwgKnZwLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUFJCb29sICpfcmV0dmFsKQp7CiAgOwoKICByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAwZmZm
ZkwpOwp9Cgpuc3Jlc3VsdApuc0RPTUNsYXNzSW5mbzo6RGVsUHJvcGVydHkobnNJWFBDb25uZWN0
V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLCBqc3ZhbCAqdnAsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQUkJvb2wgKl9yZXR2YWwpCnsKICA7CgogIHJldHVybiAoKG5zcmVz
dWx0KSAweDgwMDBmZmZmTCk7Cn0KCm5zcmVzdWx0Cm5zRE9NQ2xhc3NJbmZvOjpHZXRQcm9wZXJ0
eShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsIGpzdmFsICp2
cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCAqX3JldHZhbCkKewogIDsKCiAg
cmV0dXJuIDA7Cn0KCm5zcmVzdWx0Cm5zRE9NQ2xhc3NJbmZvOjpTZXRQcm9wZXJ0eShuc0lYUENv
bm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsIGpzdmFsICp2cCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCAqX3JldHZhbCkKewogIDsKCiAgcmV0dXJuICgo
bnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsKfQoKbnNyZXN1bHQKbnNET01DbGFzc0luZm86OkVudW1l
cmF0ZShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAog
ICAgICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpvYmosIFBSQm9vbCAqX3JldHZhbCkK
ewogIGlmICghc1NlY01hbikKICAgIHJldHVybiAwOwoKCiAgbnNyZXN1bHQgcnYgPQogICAgc1Nl
Y01hbi0+Q2hlY2tQcm9wZXJ0eUFjY2VzcyhjeCwgb2JqLCBtRGF0YS0+bU5hbWUsIHNFbnVtZXJh
dGVfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVhQQ1NlY3VyaXR5TWFu
YWdlcjo6QUNDRVNTX0dFVF9QUk9QRVJUWSk7CgogIGlmICgoKHJ2KSAmIDB4ODAwMDAwMDApKSB7
CgogICAgKl9yZXR2YWwgPSAwOwogIH0KCiAgcmV0dXJuIDA7Cn0KCm5zcmVzdWx0Cm5zRE9NQ2xh
c3NJbmZvOjpOZXdFbnVtZXJhdGUobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2Jq
LCBQUlVpbnQzMiBlbnVtX29wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzdmFsICpz
dGF0ZXAsIGpzaWQgKmlkcCwgUFJCb29sICpfcmV0dmFsKQp7CiAgOwoKICByZXR1cm4gKChuc3Jl
c3VsdCkgMHg4MDAwZmZmZkwpOwp9Cgpuc3Jlc3VsdApuc0RPTUNsYXNzSW5mbzo6UmVzb2x2ZUNv
bnN0cnVjdG9yKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKipvYmpwKQp7CiAgSlNPYmplY3QgKmdsb2JhbCA9
IEdldEdsb2JhbEpTT2JqZWN0KGN4LCBvYmopOwoKICBqc3ZhbCB2YWw7CiAgaWYgKCE6OkpTX0dl
dFByb3BlcnR5KGN4LCBnbG9iYWwsIG1EYXRhLT5tTmFtZSwgJnZhbCkpIHsKICAgIHJldHVybiAo
KG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7CiAgfQoKICBpZiAoISghKCgodmFsKSAmICgoKEpTVWlu
dDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDApIHx8ICgodmFsKSA9PSAoKGpzdmFsKSgwKSkpKSkg
ewoKCgoKCiAgICBKU1N0cmluZyAqc3RyID0gKChKU1N0cmluZyAqKSgodm9pZCAqKSgoc0NvbnN0
cnVjdG9yX2lkKSAmIH4oanN2YWwpKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpKSk7CiAgICBp
ZiAoITo6SlNfU2V0VUNQcm9wZXJ0eShjeCwgb2JqLCA6OkpTX0dldFN0cmluZ0NoYXJzKHN0ciks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OkpTX0dldFN0cmluZ0xlbmd0aChzdHIpLCAm
dmFsKSkgewogICAgICByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwpOwogICAgfQoKICAg
ICpvYmpwID0gb2JqOwogIH0KCiAgcmV0dXJuIDA7Cn0KCm5zcmVzdWx0Cm5zRE9NQ2xhc3NJbmZv
OjpOZXdSZXNvbHZlKG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4
dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlk
LCBQUlVpbnQzMiBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKipv
YmpwLCBQUkJvb2wgKl9yZXR2YWwpCnsKICBpZiAoaWQgPT0gc0NvbnN0cnVjdG9yX2lkICYmICEo
ZmxhZ3MgJiAweDAyKSkgewogICAgcmV0dXJuIFJlc29sdmVDb25zdHJ1Y3RvcihjeCwgb2JqLCBv
YmpwKTsKICB9CgogIHJldHVybiAwOwp9Cgpuc3Jlc3VsdApuc0RPTUNsYXNzSW5mbzo6Q29udmVy
dChuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAg
ICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqb2JqLCBQUlVpbnQzMiB0eXBlLCBqc3ZhbCAq
dnAsCiAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCAqX3JldHZhbCkKewogIDsKCiAgcmV0
dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsKfQoKbnNyZXN1bHQKbnNET01DbGFzc0luZm86
OkZpbmFsaXplKG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAq
Y3gsCiAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqb2JqKQp7CiAgOwoKICByZXR1
cm4gKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwpOwp9Cgpuc3Jlc3VsdApuc0RPTUNsYXNzSW5mbzo6
Q2hlY2tBY2Nlc3MobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0
ICpjeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlk
LCBQUlVpbnQzMiBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAganN2YWwgKnZwLCBQ
UkJvb2wgKl9yZXR2YWwpCnsKICBQUlVpbnQzMiBtb2RlX3R5cGUgPSBtb2RlICYgKEpTQUNDX1dS
SVRFIC0gMSk7CgogIGlmICgobW9kZV90eXBlID09IEpTQUNDX1dBVENIIHx8CiAgICAgICBtb2Rl
X3R5cGUgPT0gSlNBQ0NfUFJPVE8gfHwKICAgICAgIG1vZGVfdHlwZSA9PSBKU0FDQ19QQVJFTlQp
CiAgICAgICYmIHNTZWNNYW4pIHsKCiAgICBKU09iamVjdCAqcmVhbF9vYmogPSAwOwogICAgbnNy
ZXN1bHQgcnYgPSB3cmFwcGVyLT5HZXRKU09iamVjdCgmcmVhbF9vYmopOwogICAgZG8geyBpZiAo
ISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsgfSB9IHdoaWxlICgwKTsK
CiAgICBydiA9CiAgICAgIHNTZWNNYW4tPkNoZWNrUHJvcGVydHlBY2Nlc3MoY3gsIHJlYWxfb2Jq
LCBtRGF0YS0+bU5hbWUsIGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5z
SVhQQ1NlY3VyaXR5TWFuYWdlcjo6QUNDRVNTX0dFVF9QUk9QRVJUWSk7CgogICAgaWYgKCgocnYp
ICYgMHg4MDAwMDAwMCkpIHsKCiAgICAgICpfcmV0dmFsID0gMDsKICAgIH0KICB9CgogIHJldHVy
biAwOwp9Cgpuc3Jlc3VsdApuc0RPTUNsYXNzSW5mbzo6Q2FsbChuc0lYUENvbm5lY3RXcmFwcGVk
TmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAgICAgICBKU09i
amVjdCAqb2JqLCBQUlVpbnQzMiBhcmdjLCBqc3ZhbCAqYXJndiwganN2YWwgKnZwLAogICAgICAg
ICAgICAgICAgICAgICBQUkJvb2wgKl9yZXR2YWwpCnsKICA7CgogIHJldHVybiAoKG5zcmVzdWx0
KSAweDgwMDBmZmZmTCk7Cn0KCm5zcmVzdWx0Cm5zRE9NQ2xhc3NJbmZvOjpDb25zdHJ1Y3QobnNJ
WFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICpjeCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICBKU09iamVjdCAqb2JqLCBQUlVpbnQzMiBhcmdjLCBqc3ZhbCAqYXJn
diwKICAgICAgICAgICAgICAgICAgICAgICAgICBqc3ZhbCAqdnAsIFBSQm9vbCAqX3JldHZhbCkK
ewogIDsKCiAgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsKfQoKbnNyZXN1bHQKbnNE
T01DbGFzc0luZm86Okhhc0luc3RhbmNlKG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBw
ZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAq
b2JqLCBqc3ZhbCB2YWwsIFBSQm9vbCAqYnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
UkJvb2wgKl9yZXR2YWwpCnsKICA7CgogIHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7
Cn0KCm5zcmVzdWx0Cm5zRE9NQ2xhc3NJbmZvOjpNYXJrKG5zSVhQQ29ubmVjdFdyYXBwZWROYXRp
dmUgKndyYXBwZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0
ICpvYmosIHZvaWQgKmFyZywgUFJVaW50MzIgKl9yZXR2YWwpCnsKICA7CgogIHJldHVybiAoKG5z
cmVzdWx0KSAweDgwMDBmZmZmTCk7Cn0KCgoKbnNJQ2xhc3NJbmZvICoKbnNET01DbGFzc0luZm86
OkdldENsYXNzSW5mb0luc3RhbmNlKG5zRE9NQ2xhc3NJbmZvSUQgYUlEKQp7CiAgaWYgKGFJRCA+
PSBlRE9NQ2xhc3NJbmZvSURDb3VudCkgewogICAgOwoKICAgIHJldHVybiAwOwogIH0KCiAgaWYg
KCFzSXNJbml0aWFsaXplZCkgewogICAgbnNyZXN1bHQgcnYgPSBJbml0KCk7CgogICAgZG8geyBp
ZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiAwOyB9IH0gd2hpbGUgKDAp
OwogIH0KCiAgaWYgKCFzQ2xhc3NJbmZvRGF0YVthSURdLm1DYWNoZWRDbGFzc0luZm8pIHsKICAg
IG5zRE9NQ2xhc3NJbmZvRGF0YSYgZGF0YSA9IHNDbGFzc0luZm9EYXRhW2FJRF07CgogICAgZGF0
YS5tQ2FjaGVkQ2xhc3NJbmZvID0gZGF0YS51Lm1Db25zdHJ1Y3RvckZwdHIoJmRhdGEpOwogICAg
ZG8geyBpZiAoIShkYXRhLm1DYWNoZWRDbGFzc0luZm8pKSB7IDsgcmV0dXJuIDA7IH0gfSB3aGls
ZSAoMCk7CgogICAgKGRhdGEubUNhY2hlZENsYXNzSW5mbyktPkFkZFJlZigpOwogIH0KCiAgOwoK
CiAgbnNJQ2xhc3NJbmZvICpjbGFzc2luZm8gPSBzQ2xhc3NJbmZvRGF0YVthSURdLm1DYWNoZWRD
bGFzc0luZm87CgogIChjbGFzc2luZm8pLT5BZGRSZWYoKTsKCiAgcmV0dXJuIGNsYXNzaW5mbzsK
fQoKCm5zSUNsYXNzSW5mbyAqCm5zRE9NQ2xhc3NJbmZvOjpHZXRDbGFzc0luZm9JbnN0YW5jZShu
c0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKQp7CiAgOwoKCgogIGlmICghYURhdGEtPm1DYWNoZWRD
bGFzc0luZm8pIHsKICAgIGlmIChhRGF0YS0+dS5tRXh0ZXJuYWxDb25zdHJ1Y3RvckZwdHIpIHsK
ICAgICAgYURhdGEtPm1DYWNoZWRDbGFzc0luZm8gPQogICAgICAgIGFEYXRhLT51Lm1FeHRlcm5h
bENvbnN0cnVjdG9yRnB0cihhRGF0YS0+bU5hbWUpOwogICAgfSBlbHNlIHsKICAgICAgYURhdGEt
Pm1DYWNoZWRDbGFzc0luZm8gPSBuc0RPTUdlbmVyaWNTSDo6ZG9DcmVhdGUoYURhdGEpOwogICAg
fQogICAgZG8geyBpZiAoIShhRGF0YS0+bUNhY2hlZENsYXNzSW5mbykpIHsgOyByZXR1cm4gMDsg
fSB9IHdoaWxlICgwKTsKCiAgICAoYURhdGEtPm1DYWNoZWRDbGFzc0luZm8pLT5BZGRSZWYoKTsK
ICAgIGFEYXRhLT5tQ2FjaGVkQ2xhc3NJbmZvID0gKG5zSUNsYXNzSW5mbyopKFB0ckJpdHMoYURh
dGEtPm1DYWNoZWRDbGFzc0luZm8pIHwgMHgxKTsKICB9CgogIG5zSUNsYXNzSW5mbyAqY2xhc3Np
bmZvID0gKG5zSUNsYXNzSW5mbyopKFB0ckJpdHMoYURhdGEtPm1DYWNoZWRDbGFzc0luZm8pICYg
fjB4MSk7CgogIChjbGFzc2luZm8pLT5BZGRSZWYoKTsKCiAgcmV0dXJuIGNsYXNzaW5mbzsKfQoK
CnZvaWQKbnNET01DbGFzc0luZm86OlNodXREb3duKCkKewogIGlmIChzQ2xhc3NJbmZvRGF0YVsw
XS51Lm1Db25zdHJ1Y3RvckZwdHIpIHsKICAgIFBSVWludDMyIGk7CgogICAgZm9yIChpID0gMDsg
aSA8IGVET01DbGFzc0luZm9JRENvdW50OyBpKyspIHsKICAgICAgZG8geyBpZiAoc0NsYXNzSW5m
b0RhdGFbaV0ubUNhY2hlZENsYXNzSW5mbykgeyAoc0NsYXNzSW5mb0RhdGFbaV0ubUNhY2hlZENs
YXNzSW5mbyktPlJlbGVhc2UoKTsgKHNDbGFzc0luZm9EYXRhW2ldLm1DYWNoZWRDbGFzc0luZm8p
ID0gMDsgfSB9IHdoaWxlICgwKTsKICAgIH0KICB9CgogIHNUb3BfaWQgPSAoKChqc3ZhbCkoMCAt
ICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwogIHNTY3JvbGxiYXJzX2lkID0gKCgo
anN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKICBzTG9jYXRpb25f
aWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwogIHND
b21wb25lbnRzX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwg
MHgxKTsKICBzQ29uc3RydWN0b3JfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzAp
KSkgPDwgMSkgfCAweDEpOwogIHNfY29udGVudF9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkx
IDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CiAgc0NvbnRlbnRfaWQgPSAoKChqc3ZhbCkoMCAtICgo
anN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwogIHNTaWRlYmFyX2lkID0gKCgoanN2YWwp
KDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKICBzTWVudWJhcl9pZCA9ICgo
KGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CiAgc1Rvb2xiYXJf
aWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwogIHNM
b2NhdGlvbmJhcl9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8
IDB4MSk7CiAgc1BlcnNvbmFsYmFyX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMw
KSkpIDw8IDEpIHwgMHgxKTsKICBzU3RhdHVzYmFyX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFs
KTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKICBzRGlyZWN0b3JpZXNfaWQgPSAoKChqc3ZhbCko
MCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwogIHNDb250cm9sbGVyc19pZCA9
ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CiAgc0xlbmd0
aF9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CiAg
c0lubmVySGVpZ2h0X2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEp
IHwgMHgxKTsKICBzSW5uZXJXaWR0aF9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgz
MCkpKSA8PCAxKSB8IDB4MSk7CiAgc091dGVySGVpZ2h0X2lkID0gKCgoanN2YWwpKDAgLSAoKGpz
dmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKICBzT3V0ZXJXaWR0aF9pZCA9ICgoKGpzdmFs
KSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CiAgc1NjcmVlblhfaWQgPSAo
KChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwogIHNTY3JlZW5Z
X2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKICBz
U3RhdHVzX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgx
KTsKICBzTmFtZV9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8
IDB4MSk7CiAgc09ubW91c2Vkb3duX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMw
KSkpIDw8IDEpIHwgMHgxKTsKICBzT25tb3VzZXVwX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFs
KTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKICBzT25jbGlja19pZCA9ICgoKGpzdmFsKSgwIC0g
KChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CiAgc09uY29udGV4dG1lbnVfaWQgPSAo
KChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwogIHNPbm1vdXNl
b3Zlcl9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7
CiAgc09ubW91c2VvdXRfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwg
MSkgfCAweDEpOwogIHNPbmtleWRvd25faWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAo
MzApKSkgPDwgMSkgfCAweDEpOwogIHNPbmtleXVwX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFs
KTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKICBzT25rZXlwcmVzc19pZCA9ICgoKGpzdmFsKSgw
IC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CiAgc09ubW91c2Vtb3ZlX2lkID0g
KCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKICBzT25mb2N1
c19pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CiAg
c09uYmx1cl9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4
MSk7CiAgc09uc3VibWl0X2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8
IDEpIHwgMHgxKTsKICBzT25yZXNldF9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgz
MCkpKSA8PCAxKSB8IDB4MSk7CiAgc09uY2hhbmdlX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFs
KTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKICBzT25zZWxlY3RfaWQgPSAoKChqc3ZhbCkoMCAt
ICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwogIHNPbmxvYWRfaWQgPSAoKChqc3Zh
bCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwogIHNPbnVubG9hZF9pZCA9
ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CiAgc09uYWJv
cnRfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwog
IHNPbmVycm9yX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwg
MHgxKTsKICBzT25wYWludF9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8
PCAxKSB8IDB4MSk7CiAgc09ucmVzaXplX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwg
KDMwKSkpIDw8IDEpIHwgMHgxKTsKICBzT25zY3JvbGxfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2
YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwogIHNTY3JvbGxJbnRvVmlld19pZCA9ICgoKGpz
dmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CiAgc1Njcm9sbFhfaWQg
PSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwogIHNTY3Jv
bGxZX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsK
ICBzT3Blbl9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4
MSk7CiAgc0l0ZW1faWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkg
fCAweDEpOwogIHNFbnVtZXJhdGVfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzAp
KSkgPDwgMSkgfCAweDEpOwogIHNOYXZpZ2F0b3JfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwp
MSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwogIHNEb2N1bWVudF9pZCA9ICgoKGpzdmFsKSgwIC0g
KChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CiAgc1dpbmRvd19pZCA9ICgoKGpzdmFs
KSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CiAgc0ZyYW1lc19pZCA9ICgo
KGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CgogIGRvIHsgaWYg
KHNYUENvbm5lY3QpIHsgKHNYUENvbm5lY3QpLT5SZWxlYXNlKCk7IChzWFBDb25uZWN0KSA9IDA7
IH0gfSB3aGlsZSAoMCk7CiAgZG8geyBpZiAoc1NlY01hbikgeyAoc1NlY01hbiktPlJlbGVhc2Uo
KTsgKHNTZWNNYW4pID0gMDsgfSB9IHdoaWxlICgwKTsKfQoKCnN0YXRpYyBjb25zdCBuc0lYUENv
bm5lY3RXcmFwcGVkTmF0aXZlICpjYWNoZWRfd3JhcHBlcjsKc3RhdGljIGNvbnN0IEpTQ29udGV4
dCAqY2FjaGVkX2N4OwoKdm9pZCBJbnZhbGlkYXRlQ29udGV4dEFuZFdyYXBwZXJDYWNoZSgpCnsK
ICBjYWNoZWRfd3JhcHBlciA9IDA7CiAgY2FjaGVkX2N4ID0gMDsKfQoKCgoKCnN0YXRpYyBpbmxp
bmUgUFJCb29sCm5lZWRzU2VjdXJpdHlDaGVjayhKU0NvbnRleHQgKmN4LCBuc0lYUENvbm5lY3RX
cmFwcGVkTmF0aXZlICp3cmFwcGVyKQp7CgoKCgoKCgogIGlmIChjeCAhPSBjYWNoZWRfY3ggfHwg
d3JhcHBlciAhPSBjYWNoZWRfd3JhcHBlcikgewogICAgY2FjaGVkX2N4ID0gMDsKICAgIGNhY2hl
ZF93cmFwcGVyID0gMDsKCiAgICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4gbmF0aXZlOwogICAgd3Jh
cHBlci0+R2V0TmF0aXZlKGdldHRlcl9BZGRSZWZzKG5hdGl2ZSkpOwoKICAgIG5zQ09NUHRyPG5z
SVNjcmlwdEdsb2JhbE9iamVjdD4gc2dvKGRvX1F1ZXJ5SW50ZXJmYWNlKG5hdGl2ZSkpOwoKICAg
IGlmICghc2dvKSB7CiAgICAgIDsKCiAgICAgIHJldHVybiAxOwogICAgfQoKICAgIG5zQ09NUHRy
PG5zSVNjcmlwdENvbnRleHQ+IG90aGVyU2NyaXB0Q29udGV4dDsKICAgIHNnby0+R2V0Q29udGV4
dChnZXR0ZXJfQWRkUmVmcyhvdGhlclNjcmlwdENvbnRleHQpKTsKCiAgICBpZiAoIW90aGVyU2Ny
aXB0Q29udGV4dCkgewogICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBpZiAoY3ggIT0gKEpTQ29u
dGV4dCAqKW90aGVyU2NyaXB0Q29udGV4dC0+R2V0TmF0aXZlQ29udGV4dCgpKSB7CiAgICAgIHJl
dHVybiAxOwogICAgfQogIH0KCgoKICBKU1N0YWNrRnJhbWUgKmZwID0gMDsKICBKU09iamVjdCAq
ZnBfb2JqID0gMDsKCiAgZG8gewogICAgZnAgPSA6OkpTX0ZyYW1lSXRlcmF0b3IoY3gsICZmcCk7
CgogICAgaWYoIWZwKSB7CiAgICAgIGJyZWFrOwogICAgfQoKICAgIGZwX29iaiA9IDo6SlNfR2V0
RnJhbWVGdW5jdGlvbk9iamVjdChjeCwgZnApOwogIH0gd2hpbGUgKCFmcF9vYmopOwoKICBpZiAo
ZnBfb2JqKSB7CiAgICBKU09iamVjdCAqZ2xvYmFsID0gR2V0R2xvYmFsSlNPYmplY3QoY3gsIGZw
X29iaik7CgogICAgSlNPYmplY3QgKndyYXBwZXJfb2JqID0gMDsKICAgIHdyYXBwZXItPkdldEpT
T2JqZWN0KCZ3cmFwcGVyX29iaik7CgogICAgaWYgKGdsb2JhbCAhPSB3cmFwcGVyX29iaikgewog
ICAgICByZXR1cm4gMTsKICAgIH0KICB9CgogIGNhY2hlZF9jeCA9IGN4OwogIGNhY2hlZF93cmFw
cGVyID0gd3JhcHBlcjsKCiAgcmV0dXJuIDA7Cn0KCgoKCm5zcmVzdWx0Cm5zRE9NQ2xhc3NJbmZv
Ojpkb0NoZWNrUHJvcGVydHlBY2Nlc3MoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwganN2
YWwgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJWFBDb25uZWN0
V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQUlVpbnQzMiBhY2Nlc3NNb2RlLCBQUkJvb2wgaXNXaW5kb3cpCnsKICBpZiAoIXNTZWNN
YW4pIHsKICAgIHJldHVybiAwOwogIH0KCgoKICBpZiAoaWQgPT0gc0NvbXBvbmVudHNfaWQgJiYK
ICAgICAgYWNjZXNzTW9kZSA9PSBuc0lYUENTZWN1cml0eU1hbmFnZXI6OkFDQ0VTU19HRVRfUFJP
UEVSVFkgJiYgaXNXaW5kb3cpIHsKICAgIHJldHVybiAwOwogIH0KCiAgbnNDT01QdHI8bnNJU3Vw
cG9ydHM+IG5hdGl2ZTsKICB3cmFwcGVyLT5HZXROYXRpdmUoZ2V0dGVyX0FkZFJlZnMobmF0aXZl
KSk7CgogIG5zQ09NUHRyPG5zSVNjcmlwdEdsb2JhbE9iamVjdD4gc2dvKGRvX1F1ZXJ5SW50ZXJm
YWNlKG5hdGl2ZSkpOwoKICBpZiAoIXNnbykgewogICAgbnNDT01QdHI8bnNJRG9jdW1lbnQ+IGRv
Yyhkb19RdWVyeUludGVyZmFjZShuYXRpdmUpKTsKICAgIGRvIHsgaWYgKCEoZG9jKSkgeyA7IHJl
dHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7CgogICAgZG9jLT5H
ZXRTY3JpcHRHbG9iYWxPYmplY3QoZ2V0dGVyX0FkZFJlZnMoc2dvKSk7CgogICAgaWYgKCFzZ28p
IHsKIyAyOTMwICJuc0RPTUNsYXNzSW5mby5jcHAiCiAgICAgIHJldHVybiAwOwogICAgfQogIH0K
CiAgbnNDT01QdHI8bnNJU2NyaXB0Q29udGV4dD4gc2N4OwogIHNnby0+R2V0Q29udGV4dChnZXR0
ZXJfQWRkUmVmcyhzY3gpKTsKCiAgaWYgKCFzY3ggfHwgKChzY3gtPklzQ29udGV4dEluaXRpYWxp
emVkKCkpICYgMHg4MDAwMDAwMCkpIHsKICAgIHJldHVybiAwOwogIH0KCiAgSlNPYmplY3QgKmds
b2JhbCA9IHNnby0+R2V0R2xvYmFsSlNPYmplY3QoKTsKCiAgcmV0dXJuIHNTZWNNYW4tPkNoZWNr
UHJvcGVydHlBY2Nlc3MoY3gsIGdsb2JhbCwgbURhdGEtPm1OYW1lLCBpZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3NNb2RlKTsKfQoKbnNyZXN1bHQKbnNXaW5k
b3dTSDo6UHJlQ3JlYXRlKG5zSVN1cHBvcnRzICpuYXRpdmVPYmosIEpTQ29udGV4dCAqIGN4LAog
ICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKiBnbG9iYWxPYmosIEpTT2JqZWN0ICogKnBh
cmVudE9iaikKewojIDI5NjMgIm5zRE9NQ2xhc3NJbmZvLmNwcCIKICBuc0NPTVB0cjxuc0lTY3Jp
cHRHbG9iYWxPYmplY3Q+IHNnbyhkb19RdWVyeUludGVyZmFjZShuYXRpdmVPYmopKTsKICA7Cgog
IGlmIChzZ28pIHsKICAgICpwYXJlbnRPYmogPSBzZ28tPkdldEdsb2JhbEpTT2JqZWN0KCk7Cgog
ICAgaWYgKCpwYXJlbnRPYmopIHsKICAgICAgcmV0dXJuIDA7CiAgICB9CiAgfQoKCgoKCiAgKnBh
cmVudE9iaiA9IGdsb2JhbE9iajsKCiAgcmV0dXJuIDA7Cn0KCm5zcmVzdWx0Cm5zV2luZG93U0g6
OkdldFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4
dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLCBq
c3ZhbCAqdnAsIFBSQm9vbCAqX3JldHZhbCkKewoKCgoKICBpZiAoKCgoKGlkKSAmIDB4MSkgJiYg
KGlkKSAhPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpKSB8
fCAoKChpZCkgJiAoKChKU1VpbnQzMikxIDw8ICgzKSkgLSAxKSkgPT0gMHgyKSkpIHsKCgoKCgog
ICAgbnNDT01QdHI8bnNJU3VwcG9ydHM+IG5hdGl2ZTsKICAgIHdyYXBwZXItPkdldE5hdGl2ZShn
ZXR0ZXJfQWRkUmVmcyhuYXRpdmUpKTsKCiAgICBuc0NPTVB0cjxuc0lET01XaW5kb3dJbnRlcm5h
bD4gd2luKGRvX1F1ZXJ5SW50ZXJmYWNlKG5hdGl2ZSkpOwoKICAgIG5zQ09NUHRyPG5zSURPTVdp
bmRvd0NvbGxlY3Rpb24+IGZyYW1lczsKICAgIHdpbi0+R2V0RnJhbWVzKGdldHRlcl9BZGRSZWZz
KGZyYW1lcykpOwoKICAgIGlmIChmcmFtZXMpIHsKICAgICAgbnNDT01QdHI8bnNJRE9NV2luZG93
PiBmcmFtZTsKICAgICAgZnJhbWVzLT5JdGVtKCgoanNpbnQpKGlkKSA+PiAxKSwgZ2V0dGVyX0Fk
ZFJlZnMoZnJhbWUpKTsKCiAgICAgIGlmIChmcmFtZSkgewoKCgoKICAgICAgICByZXR1cm4gV3Jh
cE5hdGl2ZShjeCwgOjpKU19HZXRHbG9iYWxPYmplY3QoY3gpLCBmcmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICBuc0NPTVR5cGVJbmZvPG5zSURPTVdpbmRvdz46OkdldElJRCgpLCB2cCk7
CiAgICAgIH0KICAgIH0KICB9CgogIGlmIChuZWVkc1NlY3VyaXR5Q2hlY2soY3gsIHdyYXBwZXIp
KSB7CgoKCgogICAgaWYgKCgoKGlkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAw
eDQpICYmICEoISgoKCp2cCkgJiAoKChKU1VpbnQzMikxIDw8ICgzKSkgLSAxKSkgPT0gMHgwKSB8
fCAoKCp2cCkgPT0gKChqc3ZhbCkoMCkpKSkgJiYKICAgICAgICA6OkpTX1R5cGVPZlZhbHVlKGN4
LCAqdnApICE9IEpTVFlQRV9GVU5DVElPTikgewoKCgoKCiAgICAgIG5zQ09NUHRyPG5zSVhQQ29u
bmVjdFdyYXBwZWROYXRpdmU+IHdyYXBwZXI7CiAgICAgIHNYUENvbm5lY3QtPkdldFdyYXBwZWRO
YXRpdmVPZkpTT2JqZWN0KGN4LCAoKEpTT2JqZWN0ICopKCh2b2lkICopKCgqdnApICYgfihqc3Zh
bCkoKChKU1VpbnQzMikxIDw8ICgzKSkgLSAxKSkpKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2V0dGVyX0FkZFJlZnMod3JhcHBlcikpOwoKICAgICAgaWYg
KHdyYXBwZXIpIHsKICAgICAgICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4gbmF0aXZlOwogICAgICAg
IHdyYXBwZXItPkdldE5hdGl2ZShnZXR0ZXJfQWRkUmVmcyhuYXRpdmUpKTsKCiAgICAgICAgbnND
T01QdHI8bnNJRE9NV2luZG93PiB3aW5kb3coZG9fUXVlcnlJbnRlcmZhY2UobmF0aXZlKSk7Cgog
ICAgICAgIGlmICh3aW5kb3cpIHsKCgoKICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAg
ICAgfQogICAgfQoKICAgIG5zcmVzdWx0IHJ2ID0KICAgICAgZG9DaGVja1Byb3BlcnR5QWNjZXNz
KGN4LCBvYmosIGlkLCB3cmFwcGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJWFBD
U2VjdXJpdHlNYW5hZ2VyOjpBQ0NFU1NfR0VUX1BST1BFUlRZLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMSk7CgogICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHsKCgoKICAgICAgKl9y
ZXR2YWwgPSAwOwoKICAgICAgKnZwID0gKChqc3ZhbCkoMCkpOwogICAgfQogIH0KCiAgcmV0dXJu
IDA7Cn0KCm5zcmVzdWx0Cm5zV2luZG93U0g6OlNldFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBw
ZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAg
IEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLCBqc3ZhbCAqdnAsIFBSQm9vbCAqX3JldHZhbCkKewog
IGlmIChuZWVkc1NlY3VyaXR5Q2hlY2soY3gsIHdyYXBwZXIpKSB7CiAgICBuc3Jlc3VsdCBydiA9
CiAgICAgIGRvQ2hlY2tQcm9wZXJ0eUFjY2VzcyhjeCwgb2JqLCBpZCwgd3JhcHBlciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5zSVhQQ1NlY3VyaXR5TWFuYWdlcjo6QUNDRVNTX1NFVF9Q
Uk9QRVJUWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpOwoKICAgIGlmICgoKHJ2KSAm
IDB4ODAwMDAwMDApKSB7CgoKCiAgICAgICpfcmV0dmFsID0gMDsKCiAgICAgIHJldHVybiAwOwog
ICAgfQogIH0KCiAgaWYgKGlkID09IHNMb2NhdGlvbl9pZCkgewogICAgSlNTdHJpbmcgKnZhbCA9
IDo6SlNfVmFsdWVUb1N0cmluZyhjeCwgKnZwKTsKICAgIGRvIHsgaWYgKCEodmFsKSkgeyA7IHJl
dHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7CgogICAgbnNDT01Q
dHI8bnNJU3VwcG9ydHM+IG5hdGl2ZTsKICAgIHdyYXBwZXItPkdldE5hdGl2ZShnZXR0ZXJfQWRk
UmVmcyhuYXRpdmUpKTsKCiAgICBuc0NPTVB0cjxuc0lET01XaW5kb3dJbnRlcm5hbD4gd2luZG93
KGRvX1F1ZXJ5SW50ZXJmYWNlKG5hdGl2ZSkpOwogICAgZG8geyBpZiAoISh3aW5kb3cpKSB7IDsg
cmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsgfSB9IHdoaWxlICgwKTsKCiAgICBuc0NP
TVB0cjxuc0lET01Mb2NhdGlvbj4gbG9jYXRpb247CiAgICBuc3Jlc3VsdCBydiA9IHdpbmRvdy0+
R2V0TG9jYXRpb24oZ2V0dGVyX0FkZFJlZnMobG9jYXRpb24pKTsKICAgIGRvIHsgaWYgKCEoKCEo
KHJ2KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7CgogICAg
bnNEZXBlbmRlbnRTdHJpbmcgaHJlZihyZWludGVycHJldF9jYXN0PCBQUlVuaWNoYXIgKiA+KDo6
SlNfR2V0U3RyaW5nQ2hhcnModmFsKSksCgogICAgICAgICAgICAgICAgICAgICAgICAgICA6OkpT
X0dldFN0cmluZ0xlbmd0aCh2YWwpKTsKCiAgICBydiA9IGxvY2F0aW9uLT5TZXRIcmVmKGhyZWYp
OwogICAgZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsg
fSB9IHdoaWxlICgwKTsKCiAgICByZXR1cm4gV3JhcE5hdGl2ZShjeCwgb2JqLCBsb2NhdGlvbiwg
bnNDT01UeXBlSW5mbzxuc0lET01Mb2NhdGlvbj46OkdldElJRCgpLCB2cCk7CiAgfQoKICByZXR1
cm4gbnNFdmVudFJlY2lldmVyU0g6OlNldFByb3BlcnR5KHdyYXBwZXIsIGN4LCBvYmosIGlkLCB2
cCwgX3JldHZhbCk7Cn0KCm5zcmVzdWx0Cm5zV2luZG93U0g6OkFkZFByb3BlcnR5KG5zSVhQQ29u
bmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAg
ICAgICAgICAgIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLCBqc3ZhbCAqdnAsCiAgICAgICAgICAg
ICAgICAgICAgICAgIFBSQm9vbCAqX3JldHZhbCkKewoKCiAgaWYgKCFzRG9TZWN1cml0eUNoZWNr
SW5BZGRQcm9wZXJ0eSkgewogICAgcmV0dXJuIDA7CiAgfQoKICBpZiAoaWQgPT0gc0xvY2F0aW9u
X2lkKSB7CgoKCiAgICByZXR1cm4gKChuc3Jlc3VsdCkgKCgoUFJVaW50MzIpKDEpPDwzMSkgfCAo
KFBSVWludDMyKSgxNCArMHg0NSk8PDE2KSB8ICgoUFJVaW50MzIpKDEwMDApKSkgKTsKICB9Cgog
IG5zcmVzdWx0IHJ2ID0KICAgIGRvQ2hlY2tQcm9wZXJ0eUFjY2VzcyhjeCwgb2JqLCBpZCwgd3Jh
cHBlciwKICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lYUENTZWN1cml0eU1hbmFnZXI6OkFD
Q0VTU19TRVRfUFJPUEVSVFksCiAgICAgICAgICAgICAgICAgICAgICAgICAgMSk7CgogIGlmICgo
KHJ2KSAmIDB4ODAwMDAwMDApKSB7CgoKCiAgICAqX3JldHZhbCA9IDA7CiAgfQoKICByZXR1cm4g
MDsKfQoKbnNyZXN1bHQKbnNXaW5kb3dTSDo6RGVsUHJvcGVydHkobnNJWFBDb25uZWN0V3JhcHBl
ZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgICAg
SlNPYmplY3QgKm9iaiwganN2YWwgaWQsIGpzdmFsICp2cCwKICAgICAgICAgICAgICAgICAgICAg
ICAgUFJCb29sICpfcmV0dmFsKQp7CiAgaWYgKGlkID09IHNMb2NhdGlvbl9pZCkgewoKCgogICAg
cmV0dXJuICgobnNyZXN1bHQpICgoKFBSVWludDMyKSgxKTw8MzEpIHwgKChQUlVpbnQzMikoMTQg
KzB4NDUpPDwxNikgfCAoKFBSVWludDMyKSgxMDAwKSkpICk7CiAgfQoKICBuc3Jlc3VsdCBydiA9
CiAgICBkb0NoZWNrUHJvcGVydHlBY2Nlc3MoY3gsIG9iaiwgaWQsIHdyYXBwZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnNJWFBDU2VjdXJpdHlNYW5hZ2VyOjpBQ0NFU1NfU0VUX1BST1BF
UlRZLAogICAgICAgICAgICAgICAgICAgICAgICAgIDEpOwoKICBpZiAoKChydikgJiAweDgwMDAw
MDAwKSkgewoKCgogICAgKl9yZXR2YWwgPSAwOwogIH0KCiAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBK
U0Jvb2wKQmFzZVN0dWJDb25zdHJ1Y3Rvcihjb25zdCBuc0dsb2JhbE5hbWVTdHJ1Y3QgKm5hbWVf
c3RydWN0LCBKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpvYmos
IHVpbnROIGFyZ2MsIGpzdmFsICphcmd2LCBqc3ZhbCAqcnZhbCkKewogIG5zcmVzdWx0IHJ2Owog
IG5zQ09NUHRyPG5zSVN1cHBvcnRzPiBuYXRpdmU7CiAgaWYgKG5hbWVfc3RydWN0LT5tVHlwZSA9
PSBuc0dsb2JhbE5hbWVTdHJ1Y3Q6OmVUeXBlRXh0ZXJuYWxDb25zdHJ1Y3RvcikgewogICAgbmF0
aXZlID0gZG9fQ3JlYXRlSW5zdGFuY2UobmFtZV9zdHJ1Y3QtPm1DSUQsICZydik7CiAgfSBlbHNl
IGlmIChuYW1lX3N0cnVjdC0+bVR5cGUgPT0gbnNHbG9iYWxOYW1lU3RydWN0OjplVHlwZUV4dGVy
bmFsQ29uc3RydWN0b3JBbGlhcykgewogICAgbmF0aXZlID0gZG9fQ3JlYXRlSW5zdGFuY2UobmFt
ZV9zdHJ1Y3QtPm1BbGlhcy0+bUNJRCwgJnJ2KTsKICB9IGVsc2UgewogICAgbmF0aXZlID0gZG9f
Q3JlYXRlSW5zdGFuY2UoKm5hbWVfc3RydWN0LT5tRGF0YS0+bUNvbnN0cnVjdG9yQ0lELCAmcnYp
OwogIH0KICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgewogICAgOwogICAgbnNET01DbGFzc0lu
Zm86OlRocm93SlNFeGNlcHRpb24oY3gsIHJ2KTsKCiAgICByZXR1cm4gKEpTSW50bikwOwogIH0K
CiAgbnNDT01QdHI8bnNJSlNOYXRpdmVJbml0aWFsaXplcj4gaW5pdGlhbGl6ZXIoZG9fUXVlcnlJ
bnRlcmZhY2UobmF0aXZlKSk7CiAgaWYgKGluaXRpYWxpemVyKSB7CiAgICBydiA9IGluaXRpYWxp
emVyLT5Jbml0aWFsaXplKGN4LCBvYmosIGFyZ2MsIGFyZ3YpOwogICAgaWYgKCgocnYpICYgMHg4
MDAwMDAwMCkpIHsKICAgICAgbnNET01DbGFzc0luZm86OlRocm93SlNFeGNlcHRpb24oY3gsICgo
KG5zcmVzdWx0KSAweEMxRjMwMDAwKSArIDEpKTsKCiAgICAgIHJldHVybiAoSlNJbnRuKTA7CiAg
ICB9CiAgfQoKICBuc0NPTVB0cjxuc0lTY3JpcHRPYmplY3RPd25lcj4gb3duZXIoZG9fUXVlcnlJ
bnRlcmZhY2UobmF0aXZlKSk7CiAgaWYgKG93bmVyKSB7CiAgICBuc0NPTVB0cjxuc0lTY3JpcHRD
b250ZXh0PiBjb250ZXh0OwoKICAgIG5zSlNVdGlsczo6R2V0U3RhdGljU2NyaXB0Q29udGV4dChj
eCwgb2JqLCBnZXR0ZXJfQWRkUmVmcyhjb250ZXh0KSk7CiAgICBpZiAoIWNvbnRleHQpIHsKICAg
ICAgbnNET01DbGFzc0luZm86OlRocm93SlNFeGNlcHRpb24oY3gsICgobnNyZXN1bHQpIDB4ODAw
MGZmZmZMKSk7CgogICAgICByZXR1cm4gKEpTSW50bikwOwogICAgfQoKICAgIEpTT2JqZWN0KiBu
ZXdfb2JqOwogICAgcnYgPSBvd25lci0+R2V0U2NyaXB0T2JqZWN0KGNvbnRleHQsICh2b2lkKiop
Jm5ld19vYmopOwoKICAgIGlmICgoISgocnYpICYgMHg4MDAwMDAwMCkpKSB7CiAgICAgICpydmFs
ID0gKChqc3ZhbCkobmV3X29iaikpOwogICAgfQoKICAgIHJldHVybiBydjsKICB9CgogIHJ2ID0g
bnNET01HZW5lcmljU0g6OldyYXBOYXRpdmUoY3gsIDo6SlNfR2V0R2xvYmFsT2JqZWN0KGN4KSwg
bmF0aXZlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNDT01UeXBlSW5mbzxu
c0lTdXBwb3J0cz46OkdldElJRCgpLCBydmFsKTsKCiAgcmV0dXJuICghKChydikgJiAweDgwMDAw
MDAwKSkgPyAoSlNJbnRuKTEgOiAoSlNJbnRuKTA7Cn0KCnN0YXRpYyBuc3Jlc3VsdApEZWZpbmVJ
bnRlcmZhY2VDb25zdGFudHMoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgY29uc3QgbnNJ
SUQgKmFJSUQpCnsKICBuc0NPTVB0cjxuc0lJbnRlcmZhY2VJbmZvTWFuYWdlcj4gaWltID0KICAg
IGRvbnRfQWRkUmVmKFhQVElfR2V0SW50ZXJmYWNlSW5mb01hbmFnZXIoKSk7CiAgZG8geyBpZiAo
IShpaW0pKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsgfSB9IHdoaWxlICgw
KTsKCiAgbnNDT01QdHI8bnNJSW50ZXJmYWNlSW5mbz4gaWZfaW5mbzsKCiAgbnNyZXN1bHQgcnYg
PSBpaW0tPkdldEluZm9Gb3JJSUQoYUlJRCwgZ2V0dGVyX0FkZFJlZnMoaWZfaW5mbykpOwogIGRv
IHsgaWYgKCEoKCEoKHJ2KSAmIDB4ODAwMDAwMDApKSAmJiBpZl9pbmZvKSkgeyA7IHJldHVybiBy
djsgfSB9IHdoaWxlICgwKTsKCiAgUFJVaW50MTYgY29uc3RhbnRfY291bnQ7CgogIGlmX2luZm8t
PkdldENvbnN0YW50Q291bnQoJmNvbnN0YW50X2NvdW50KTsKCiAgaWYgKCFjb25zdGFudF9jb3Vu
dCkgewogICAgcmV0dXJuIDA7CiAgfQoKICBuc0NPTVB0cjxuc0lJbnRlcmZhY2VJbmZvPiBwYXJl
bnRfaWZfaW5mbzsKCiAgcnYgPSBpZl9pbmZvLT5HZXRQYXJlbnQoZ2V0dGVyX0FkZFJlZnMocGFy
ZW50X2lmX2luZm8pKTsKICBkbyB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkgJiYgcGFy
ZW50X2lmX2luZm8pKSB7IDsgcmV0dXJuIHJ2OyB9IH0gd2hpbGUgKDApOwoKICBQUlVpbnQxNiBw
YXJlbnRfY29uc3RhbnRfY291bnQsIGk7CiAgcGFyZW50X2lmX2luZm8tPkdldENvbnN0YW50Q291
bnQoJnBhcmVudF9jb25zdGFudF9jb3VudCk7CgogIGZvciAoaSA9IHBhcmVudF9jb25zdGFudF9j
b3VudDsgaSA8IGNvbnN0YW50X2NvdW50OyBpKyspIHsKICAgIGNvbnN0IG5zWFBUQ29uc3RhbnQg
KmMgPSAwOwoKICAgIHJ2ID0gaWZfaW5mby0+R2V0Q29uc3RhbnQoaSwgJmMpOwogICAgZG8geyBp
ZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpICYmIGMpKSB7IDsgcmV0dXJuIHJ2OyB9IH0gd2hp
bGUgKDApOwoKICAgIFBSVWludDE2IHR5cGUgPSBjLT5HZXRUeXBlKCkuVGFnUGFydCgpOwoKICAg
IGpzdmFsIHY7CiAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgY2FzZSBuc1hQVFR5cGU6OlRfSTg6
CiAgICAgIGNhc2UgbnNYUFRUeXBlOjpUX1U4OgogICAgICB7CiAgICAgICAgdiA9ICgoKGpzdmFs
KShjLT5HZXRWYWx1ZSgpLT52YWwudTgpIDw8IDEpIHwgMHgxKTsKICAgICAgICBicmVhazsKICAg
ICAgfQogICAgICBjYXNlIG5zWFBUVHlwZTo6VF9JMTY6CiAgICAgIGNhc2UgbnNYUFRUeXBlOjpU
X1UxNjoKICAgICAgewogICAgICAgIHYgPSAoKChqc3ZhbCkoYy0+R2V0VmFsdWUoKS0+dmFsLnUx
NikgPDwgMSkgfCAweDEpOwogICAgICAgIGJyZWFrOwogICAgICB9CiAgICAgIGNhc2UgbnNYUFRU
eXBlOjpUX0kzMjoKICAgICAgY2FzZSBuc1hQVFR5cGU6OlRfVTMyOgogICAgICB7CiAgICAgICAg
diA9ICgoKGpzdmFsKShjLT5HZXRWYWx1ZSgpLT52YWwudTMyKSA8PCAxKSB8IDB4MSk7CiAgICAg
ICAgYnJlYWs7CiAgICAgIH0KICAgICAgZGVmYXVsdDoKICAgICAgewoKCgogICAgICAgIGNvbnRp
bnVlOwogICAgICB9CiAgICB9CgogICAgaWYgKCE6OkpTX0RlZmluZVByb3BlcnR5KGN4LCBvYmos
IGMtPkdldE5hbWUoKSwgdiwgMCwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAx
KSkgewogICAgICByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwpOwogICAgfQogIH0KCiAg
cmV0dXJuIDA7Cn0KCnN0YXRpYyBKU0Jvb2wKRE9NSlNDbGFzc19Db25zdHJ1Y3QoSlNDb250ZXh0
ICpjeCwgSlNPYmplY3QgKm9iaiwgdWludE4gYXJnYywganN2YWwgKmFyZ3YsCiAgICAgICAgICAg
ICAgICAgICAgIGpzdmFsICpydmFsKQp7CiAgSlNPYmplY3QqIGNsYXNzX29iaiA9ICgoSlNPYmpl
Y3QgKikoKHZvaWQgKikoKGFyZ3ZbLTJdKSAmIH4oanN2YWwpKCgoSlNVaW50MzIpMSA8PCAoMykp
IC0gMSkpKSk7CiAgaWYgKCFjbGFzc19vYmopIHsKICAgIDsKICAgIG5zRE9NQ2xhc3NJbmZvOjpU
aHJvd0pTRXhjZXB0aW9uKGN4LCAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCkpOwoKICAgIHJldHVy
biAoSlNJbnRuKTA7CiAgfQoKICBjb25zdCBQUlVuaWNoYXIqIGNsYXNzX25hbWUgPQogICAgICBj
b25zdF9jYXN0PCBjb25zdCBQUlVuaWNoYXIgKiA+KHN0YXRpY19jYXN0PCBQUlVuaWNoYXIgKiA+
KDo6SlNfR2V0UHJpdmF0ZShjeCwgY2xhc3Nfb2JqKSkpOwoKCgogIGV4dGVybiBuc1NjcmlwdE5h
bWVTcGFjZU1hbmFnZXIgKmdOYW1lU3BhY2VNYW5hZ2VyOwogIGlmICghY2xhc3NfbmFtZSB8fCAh
Z05hbWVTcGFjZU1hbmFnZXIpIHsKICAgIDsKICAgIG5zRE9NQ2xhc3NJbmZvOjpUaHJvd0pTRXhj
ZXB0aW9uKGN4LCAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCkpOwoKICAgIHJldHVybiAoSlNJbnRu
KTA7CiAgfQoKICBjb25zdCBuc0dsb2JhbE5hbWVTdHJ1Y3QgKm5hbWVfc3RydWN0ID0gMDsKICBn
TmFtZVNwYWNlTWFuYWdlci0+TG9va3VwTmFtZShuc0RlcGVuZGVudFN0cmluZyhjbGFzc19uYW1l
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZV9zdHJ1Y3QpOwogIGlmICgh
bmFtZV9zdHJ1Y3QpIHsKICAgIDsKICAgIG5zRE9NQ2xhc3NJbmZvOjpUaHJvd0pTRXhjZXB0aW9u
KGN4LCAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCkpOwoKICAgIHJldHVybiAoSlNJbnRuKTA7CiAg
fQoKICBpZiAoKG5hbWVfc3RydWN0LT5tVHlwZSAhPSBuc0dsb2JhbE5hbWVTdHJ1Y3Q6OmVUeXBl
RXh0ZXJuYWxDbGFzc0luZm8gfHwKICAgICAgICFuYW1lX3N0cnVjdC0+bURhdGEtPm1Db25zdHJ1
Y3RvckNJRCkgJiYKICAgICAgbmFtZV9zdHJ1Y3QtPm1UeXBlICE9IG5zR2xvYmFsTmFtZVN0cnVj
dDo6ZVR5cGVFeHRlcm5hbENvbnN0cnVjdG9yICYmCiAgICAgIG5hbWVfc3RydWN0LT5tVHlwZSAh
PSBuc0dsb2JhbE5hbWVTdHJ1Y3Q6OmVUeXBlRXh0ZXJuYWxDb25zdHJ1Y3RvckFsaWFzKSB7Cgog
ICAgOwogICAgbnNET01DbGFzc0luZm86OlRocm93SlNFeGNlcHRpb24oY3gsICgobnNyZXN1bHQp
ICgoKFBSVWludDMyKSgxKTw8MzEpIHwgKChQUlVpbnQzMikoMTQgKzB4NDUpPDwxNikgfCAoKFBS
VWludDMyKSg5KSkpICkpOwoKICAgIHJldHVybiAoSlNJbnRuKTA7CiAgfQoKICByZXR1cm4gQmFz
ZVN0dWJDb25zdHJ1Y3RvcihuYW1lX3N0cnVjdCwgY3gsIG9iaiwgYXJnYywgYXJndiwgcnZhbCk7
Cn0KCnN0YXRpYyBKU0Jvb2wKRE9NSlNDbGFzc19IYXNJbnN0YW5jZShKU0NvbnRleHQgKmN4LCBK
U09iamVjdCAqb2JqLCBqc3ZhbCB2LCBKU0Jvb2wgKmJwKQp7CiAgSlNPYmplY3QgKmRvbV9vYmo7
CiAgaWYgKCE6OkpTX1ZhbHVlVG9PYmplY3QoY3gsIHYsICZkb21fb2JqKSkgewogICAgOwogICAg
bnNET01DbGFzc0luZm86OlRocm93SlNFeGNlcHRpb24oY3gsICgobnNyZXN1bHQpICgoKFBSVWlu
dDMyKSgxKTw8MzEpIHwgKChQUlVpbnQzMikoMTQgKzB4NDUpPDwxNikgfCAoKFBSVWludDMyKSg5
KSkpICkpOwoKICAgIHJldHVybiAoSlNJbnRuKTA7CiAgfQoKICBpZiAoIWRvbV9vYmopIHsKICAg
IHJldHVybiAoSlNJbnRuKTE7CiAgfQoKICBKU0NsYXNzICpkb21fY2xhc3MgPSBKU19HZXRDbGFz
cyhjeCwgZG9tX29iaik7CiAgaWYgKCFkb21fY2xhc3MpIHsKICAgIDsKICAgIG5zRE9NQ2xhc3NJ
bmZvOjpUaHJvd0pTRXhjZXB0aW9uKGN4LCAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCkpOwoKICAg
IHJldHVybiAoSlNJbnRuKTA7CiAgfQoKICBjb25zdCBuc0dsb2JhbE5hbWVTdHJ1Y3QgKm5hbWVf
c3RydWN0ID0gMDsKCiAgZXh0ZXJuIG5zU2NyaXB0TmFtZVNwYWNlTWFuYWdlciAqZ05hbWVTcGFj
ZU1hbmFnZXI7CiAgaWYgKCFnTmFtZVNwYWNlTWFuYWdlcikgewogICAgOwogICAgbnNET01DbGFz
c0luZm86OlRocm93SlNFeGNlcHRpb24oY3gsICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKSk7Cgog
ICAgcmV0dXJuIChKU0ludG4pMDsKICB9CgogIGdOYW1lU3BhY2VNYW5hZ2VyLT5Mb29rdXBOYW1l
KE5TX0NvbnZlcnRBU0NJSXRvVUNTMihkb21fY2xhc3MtPm5hbWUpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZuYW1lX3N0cnVjdCk7CiAgaWYgKCFuYW1lX3N0cnVjdCkgewogICAg
OwogICAgbnNET01DbGFzc0luZm86OlRocm93SlNFeGNlcHRpb24oY3gsICgobnNyZXN1bHQpIDB4
ODAwMGZmZmZMKSk7CgogICAgcmV0dXJuIChKU0ludG4pMDsKICB9CgogIDsKCgoKCiAgY29uc3Qg
UFJVbmljaGFyKiBjbGFzc19uYW1lID0KICAgICAgY29uc3RfY2FzdDwgY29uc3QgUFJVbmljaGFy
ICogPihzdGF0aWNfY2FzdDwgUFJVbmljaGFyICogPig6OkpTX0dldFByaXZhdGUoY3gsIG9iaikp
KTsKCgogIGlmICghY2xhc3NfbmFtZSkgewogICAgOwogICAgbnNET01DbGFzc0luZm86OlRocm93
SlNFeGNlcHRpb24oY3gsICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKSk7CgogICAgcmV0dXJuIChK
U0ludG4pMDsKICB9CgogIGNvbnN0IG5zR2xvYmFsTmFtZVN0cnVjdCAqY2xhc3NfbmFtZV9zdHJ1
Y3QgPSAwOwogIGdOYW1lU3BhY2VNYW5hZ2VyLT5Mb29rdXBOYW1lKG5zRGVwZW5kZW50U3RyaW5n
KGNsYXNzX25hbWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjbGFzc19uYW1l
X3N0cnVjdCk7CiAgaWYgKCFjbGFzc19uYW1lX3N0cnVjdCkgewogICAgOwogICAgbnNET01DbGFz
c0luZm86OlRocm93SlNFeGNlcHRpb24oY3gsICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKSk7Cgog
ICAgcmV0dXJuIChKU0ludG4pMDsKICB9CgogIGlmIChjbGFzc19uYW1lX3N0cnVjdC0+bVR5cGUg
IT0gbnNHbG9iYWxOYW1lU3RydWN0OjplVHlwZUNsYXNzUHJvdG8gJiYKICAgICAgY2xhc3NfbmFt
ZV9zdHJ1Y3QtPm1UeXBlICE9IG5zR2xvYmFsTmFtZVN0cnVjdDo6ZVR5cGVJbnRlcmZhY2UpIHsK
ICAgICpicCA9IChuYW1lX3N0cnVjdCA9PSBjbGFzc19uYW1lX3N0cnVjdCk7CgogICAgcmV0dXJu
IChKU0ludG4pMTsKICB9CgogIGlmIChuYW1lX3N0cnVjdC0+bVR5cGUgPT0gbnNHbG9iYWxOYW1l
U3RydWN0OjplVHlwZUV4dGVybmFsQ29uc3RydWN0b3JBbGlhcykgewogICAgbmFtZV9zdHJ1Y3Qg
PSBnTmFtZVNwYWNlTWFuYWdlci0+R2V0Q29uc3RydWN0b3JQcm90byhuYW1lX3N0cnVjdCk7CiAg
ICBpZiAoIW5hbWVfc3RydWN0KSB7CiAgICAgIDsKICAgICAgbnNET01DbGFzc0luZm86OlRocm93
SlNFeGNlcHRpb24oY3gsICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKSk7CgogICAgICByZXR1cm4g
KEpTSW50bikwOwogICAgfQogIH0KCiAgOwoKCgogIGNvbnN0IG5zRE9NQ2xhc3NJbmZvRGF0YSAq
Y2lfZGF0YSA9IDA7CiAgaWYgKG5hbWVfc3RydWN0LT5tVHlwZSA9PSBuc0dsb2JhbE5hbWVTdHJ1
Y3Q6OmVUeXBlQ2xhc3NDb25zdHJ1Y3RvciAmJgogICAgICBuYW1lX3N0cnVjdC0+bURPTUNsYXNz
SW5mb0lEID49IDApIHsKICAgIGNpX2RhdGEgPSAmc0NsYXNzSW5mb0RhdGFbbmFtZV9zdHJ1Y3Qt
Pm1ET01DbGFzc0luZm9JRF07CiAgfSBlbHNlIGlmIChuYW1lX3N0cnVjdC0+bVR5cGUgPT0gbnNH
bG9iYWxOYW1lU3RydWN0OjplVHlwZUV4dGVybmFsQ2xhc3NJbmZvKSB7CiAgICBjaV9kYXRhID0g
bmFtZV9zdHJ1Y3QtPm1EYXRhOwogIH0KCiAgbnNDT01QdHI8bnNJSW50ZXJmYWNlSW5mb01hbmFn
ZXI+IGlpbSA9CiAgICBkb250X0FkZFJlZihYUFRJX0dldEludGVyZmFjZUluZm9NYW5hZ2VyKCkp
OwogIGlmICghaWltKSB7CiAgICA7CiAgICBuc0RPTUNsYXNzSW5mbzo6VGhyb3dKU0V4Y2VwdGlv
bihjeCwgKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwpKTsKCiAgICByZXR1cm4gKEpTSW50bikwOwog
IH0KCiAgbnNDT01QdHI8bnNJSW50ZXJmYWNlSW5mbz4gaWZfaW5mbzsKICBQUlVpbnQzMiBjb3Vu
dCA9IDA7CiAgY29uc3QgbnNJSUQqIGNsYXNzX2ludGVyZmFjZTsKICB3aGlsZSAoKGNsYXNzX2lu
dGVyZmFjZSA9IGNpX2RhdGEtPm1JbnRlcmZhY2VzW2NvdW50KytdKSkgewogICAgaWYgKGNsYXNz
X25hbWVfc3RydWN0LT5tSUlELkVxdWFscygqY2xhc3NfaW50ZXJmYWNlKSkgewogICAgICAqYnAg
PSAoSlNJbnRuKTE7CgogICAgICByZXR1cm4gKEpTSW50bikxOwogICAgfQoKICAgIGlpbS0+R2V0
SW5mb0ZvcklJRChjbGFzc19pbnRlcmZhY2UsIGdldHRlcl9BZGRSZWZzKGlmX2luZm8pKTsKICAg
IGlmICghaWZfaW5mbykgewogICAgICA7CiAgICAgIG5zRE9NQ2xhc3NJbmZvOjpUaHJvd0pTRXhj
ZXB0aW9uKGN4LCAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCkpOwoKICAgICAgcmV0dXJuIChKU0lu
dG4pMDsKICAgIH0KCiAgICBpZl9pbmZvLT5IYXNBbmNlc3RvcigmY2xhc3NfbmFtZV9zdHJ1Y3Qt
Pm1JSUQsIGJwKTsKCiAgICBpZiAoKmJwKSB7CiAgICAgIHJldHVybiAoSlNJbnRuKTE7CiAgICB9
CiAgfQoKICByZXR1cm4gKEpTSW50bikxOwp9CgpzdGF0aWMgSlNCb29sCkRPTUpTQ2xhc3NfdG9T
dHJpbmcoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgdWludE4gYXJnYywganN2YWwgKmFy
Z3YsCiAgICAgICAgICAgICAgICAgICAganN2YWwgKnJ2YWwpCnsKICBjb25zdCBQUlVuaWNoYXIq
IGNsYXNzX25hbWUgPQogICAgICBjb25zdF9jYXN0PCBjb25zdCBQUlVuaWNoYXIgKiA+KHN0YXRp
Y19jYXN0PCBQUlVuaWNoYXIgKiA+KDo6SlNfR2V0UHJpdmF0ZShjeCwgb2JqKSkpOwoKCiAgaWYg
KCFjbGFzc19uYW1lKSB7CiAgICA7CiAgICBuc0RPTUNsYXNzSW5mbzo6VGhyb3dKU0V4Y2VwdGlv
bihjeCwgKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwpKTsKCiAgICByZXR1cm4gKEpTSW50bikwOwog
IH0KCiAgbnNBdXRvU3RyaW5nIHJlc3VsdFN0cmluZygnWycpOwogIHJlc3VsdFN0cmluZy5BcHBl
bmQoY2xhc3NfbmFtZSk7CiAgcmVzdWx0U3RyaW5nLkFwcGVuZChQUlVuaWNoYXIoJ10nKSk7Cgog
IEpTU3RyaW5nKiBzdHIgPSA6OkpTX05ld1VDU3RyaW5nQ29weU4oY3gsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PCBjb25zdCBqc2NoYXIg
KiA+KHJlc3VsdFN0cmluZy5nZXQoKSksCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0U3RyaW5nLkxlbmd0aCgpKTsKICBkbyB7IGlmICghKHN0cikpIHsgOyBy
ZXR1cm4gKEpTSW50bikwOyB9IH0gd2hpbGUgKDApOwoKICAqcnZhbCA9ICgoKGpzdmFsKShzdHIp
KSB8ICgweDQpKTsKCiAgcmV0dXJuIChKU0ludG4pMTsKfQoKSlNDbGFzcyBuc0RPTUNsYXNzSW5m
bzo6c0RPTUpTQ2xhc3MgPSB7CiAgIkRPTSBDbGFzcyIsICgxPDwwKSwKICBKU19Qcm9wZXJ0eVN0
dWIsIEpTX1Byb3BlcnR5U3R1YiwgSlNfUHJvcGVydHlTdHViLCBKU19Qcm9wZXJ0eVN0dWIsCiAg
SlNfRW51bWVyYXRlU3R1YiwgSlNfUmVzb2x2ZVN0dWIsIEpTX0NvbnZlcnRTdHViLCBKU19GaW5h
bGl6ZVN0dWIsCiAgMCwgMCwgMCwgRE9NSlNDbGFzc19Db25zdHJ1Y3QsCiAgMCwgRE9NSlNDbGFz
c19IYXNJbnN0YW5jZQp9OwoKSlNGdW5jdGlvblNwZWMgbnNET01DbGFzc0luZm86OnNET01KU0Ns
YXNzX21ldGhvZHNbXSA9IHsKICB7InRvU3RyaW5nIiwgRE9NSlNDbGFzc190b1N0cmluZywgMCwg
MCwgMH0sCiAgezAsIDAsIDAsIDAsIDB9Cn07CgoKbnNyZXN1bHQKbnNET01DbGFzc0luZm86Oklu
aXRET01KU0NsYXNzKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmopCnsKICBKU09iamVjdCAq
cHJvdG8gPSA6OkpTX0luaXRDbGFzcyhjeCwgb2JqLCAwLCAmc0RPTUpTQ2xhc3MsIDAsIDAsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgc0RPTUpTQ2xhc3NfbWV0aG9kcywg
MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKICA7CiAgaWYgKCFwcm90
bykgewogICAgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsKICB9CgogIHJldHVybiAw
Owp9CgoKbnNyZXN1bHQKbnNXaW5kb3dTSDo6R2xvYmFsUmVzb2x2ZShuc0lTdXBwb3J0cyAqbmF0
aXZlLCBKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAgICAgICAg
ICAgIEpTU3RyaW5nICpzdHIsIFBSVWludDMyIGZsYWdzLCBQUkJvb2wgKmRpZF9yZXNvbHZlKQp7
CiAgKmRpZF9yZXNvbHZlID0gMDsKCiAgZXh0ZXJuIG5zU2NyaXB0TmFtZVNwYWNlTWFuYWdlciAq
Z05hbWVTcGFjZU1hbmFnZXI7CgogIGRvIHsgaWYgKCEoZ05hbWVTcGFjZU1hbmFnZXIpKSB7IDsg
cmV0dXJuICgoKG5zcmVzdWx0KSAweEMxRjMwMDAwKSArIDEpOyB9IH0gd2hpbGUgKDApOwoKICBu
c0RlcGVuZGVudFN0cmluZyBuYW1lKHJlaW50ZXJwcmV0X2Nhc3Q8IGNvbnN0IFBSVW5pY2hhciog
Pig6OkpTX0dldFN0cmluZ0NoYXJzKHN0cikpLAoKICAgICAgICAgICAgICAgICAgICAgICAgIDo6
SlNfR2V0U3RyaW5nTGVuZ3RoKHN0cikpOwoKICBjb25zdCBuc0dsb2JhbE5hbWVTdHJ1Y3QgKm5h
bWVfc3RydWN0ID0gMDsKICBjb25zdCBQUlVuaWNoYXIgKmNsYXNzX25hbWUgPSAwOwoKICBnTmFt
ZVNwYWNlTWFuYWdlci0+TG9va3VwTmFtZShuYW1lLCAmbmFtZV9zdHJ1Y3QsICZjbGFzc19uYW1l
KTsKCiAgaWYgKCFuYW1lX3N0cnVjdCkgewogICAgcmV0dXJuIDA7CiAgfQoKICBkbyB7IGlmICgh
KGNsYXNzX25hbWUpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsgfSB9IHdo
aWxlICgwKTsKCiAgbnNyZXN1bHQgcnYgPSAwOwoKICBpZiAobmFtZV9zdHJ1Y3QtPm1UeXBlID09
IG5zR2xvYmFsTmFtZVN0cnVjdDo6ZVR5cGVFeHRlcm5hbENsYXNzSW5mb0NyZWF0b3IpIHsKICAg
IG5zQ09NUHRyPG5zSURPTUNJRXh0ZW5zaW9uPiBjcmVhdG9yKGRvX0NyZWF0ZUluc3RhbmNlKG5h
bWVfc3RydWN0LT5tQ0lELCAmcnYpKTsKICAgIGRvIHsgaWYgKCEoKCEoKHJ2KSAmIDB4ODAwMDAw
MDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7CgogICAgbnNDT01QdHI8bnNJRE9N
U2NyaXB0T2JqZWN0RmFjdG9yeT4gc29mKGRvX0dldFNlcnZpY2Uoa0RPTVNPRl9DSUQpKTsKICAg
IGRvIHsgaWYgKCEoc29mKSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDA0MDA1TCk7IH0g
fSB3aGlsZSAoMCk7CgogICAgcnYgPSBjcmVhdG9yLT5SZWdpc3RlckRPTUNJKE5TX0NvbnZlcnRV
Q1MydG9VVEY4KG5hbWUpLmdldCgpLCBzb2YpOwogICAgZG8geyBpZiAoISgoISgocnYpICYgMHg4
MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsgfSB9IHdoaWxlICgwKTsKCiAgICBydiA9IGdOYW1l
U3BhY2VNYW5hZ2VyLT5Mb29rdXBOYW1lKG5hbWUsICZuYW1lX3N0cnVjdCk7CiAgICBpZiAoKChy
dikgJiAweDgwMDAwMDAwKSB8fCAhbmFtZV9zdHJ1Y3QgfHwKICAgICAgICBuYW1lX3N0cnVjdC0+
bVR5cGUgIT0gbnNHbG9iYWxOYW1lU3RydWN0OjplVHlwZUV4dGVybmFsQ2xhc3NJbmZvKSB7CiAg
ICAgIDsKCiAgICAgIHJldHVybiAwOwogICAgfQogIH0KCiAgaWYgKG5hbWVfc3RydWN0LT5tVHlw
ZSA9PSBuc0dsb2JhbE5hbWVTdHJ1Y3Q6OmVUeXBlSW50ZXJmYWNlKSB7CgoKCiAgICBKU09iamVj
dCogY2xhc3Nfb2JqID0gOjpKU19EZWZpbmVPYmplY3QoY3gsIG9iaiwgOjpKU19HZXRTdHJpbmdC
eXRlcyhzdHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZz
RE9NSlNDbGFzcywgMCwgMCk7CiAgICBpZiAoIWNsYXNzX29iaikgewogICAgICByZXR1cm4gKChu
c3Jlc3VsdCkgMHg4MDAwZmZmZkwpOwogICAgfQoKICAgIGlmICghOjpKU19TZXRQcml2YXRlKGN4
LCBjbGFzc19vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9jYXN0PCB2b2lkICog
PihzdGF0aWNfY2FzdDwgY29uc3Qgdm9pZCAqID4oY2xhc3NfbmFtZSkpKSkgewoKCiAgICAgIHJl
dHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7CiAgICB9CgoKCgogICAgcnYgPSBEZWZpbmVJ
bnRlcmZhY2VDb25zdGFudHMoY3gsIGNsYXNzX29iaiwgJm5hbWVfc3RydWN0LT5tSUlEKTsKICAg
IGRvIHsgaWYgKCEoKCEoKHJ2KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3
aGlsZSAoMCk7CgogICAgKmRpZF9yZXNvbHZlID0gMTsKCiAgICByZXR1cm4gMDsKICB9CgogIGlm
IChuYW1lX3N0cnVjdC0+bVR5cGUgPT0gbnNHbG9iYWxOYW1lU3RydWN0OjplVHlwZUNsYXNzQ29u
c3RydWN0b3IgfHwKICAgICAgbmFtZV9zdHJ1Y3QtPm1UeXBlID09IG5zR2xvYmFsTmFtZVN0cnVj
dDo6ZVR5cGVFeHRlcm5hbENsYXNzSW5mbyB8fAogICAgICBuYW1lX3N0cnVjdC0+bVR5cGUgPT0g
bnNHbG9iYWxOYW1lU3RydWN0OjplVHlwZUNsYXNzUHJvdG8gfHwKICAgICAgbmFtZV9zdHJ1Y3Qt
Pm1UeXBlID09IG5zR2xvYmFsTmFtZVN0cnVjdDo6ZVR5cGVFeHRlcm5hbENvbnN0cnVjdG9yQWxp
YXMpIHsKICAgIGNvbnN0IG5zRE9NQ2xhc3NJbmZvRGF0YSAqY2lfZGF0YSA9IDA7CiAgICBjb25z
dCBuc0dsb2JhbE5hbWVTdHJ1Y3QqIGFsaWFzX3N0cnVjdCA9IDA7CgogICAgaWYgKG5hbWVfc3Ry
dWN0LT5tVHlwZSA9PSBuc0dsb2JhbE5hbWVTdHJ1Y3Q6OmVUeXBlQ2xhc3NDb25zdHJ1Y3RvciAm
JgogICAgICAgIG5hbWVfc3RydWN0LT5tRE9NQ2xhc3NJbmZvSUQgPj0gMCkgewogICAgICBjaV9k
YXRhID0gJnNDbGFzc0luZm9EYXRhW25hbWVfc3RydWN0LT5tRE9NQ2xhc3NJbmZvSURdOwogICAg
fSBlbHNlIGlmIChuYW1lX3N0cnVjdC0+bVR5cGUgPT0gbnNHbG9iYWxOYW1lU3RydWN0OjplVHlw
ZUV4dGVybmFsQ2xhc3NJbmZvKSB7CiAgICAgIGNpX2RhdGEgPSBuYW1lX3N0cnVjdC0+bURhdGE7
CiAgICB9IGVsc2UgaWYgKG5hbWVfc3RydWN0LT5tVHlwZSA9PSBuc0dsb2JhbE5hbWVTdHJ1Y3Q6
OmVUeXBlRXh0ZXJuYWxDb25zdHJ1Y3RvckFsaWFzKSB7CiAgICAgIGFsaWFzX3N0cnVjdCA9IGdO
YW1lU3BhY2VNYW5hZ2VyLT5HZXRDb25zdHJ1Y3RvclByb3RvKG5hbWVfc3RydWN0KTsKICAgICAg
ZG8geyBpZiAoIShhbGlhc19zdHJ1Y3QpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZm
ZmZMKTsgfSB9IHdoaWxlICgwKTsKCiAgICAgIGlmIChhbGlhc19zdHJ1Y3QtPm1UeXBlID09IG5z
R2xvYmFsTmFtZVN0cnVjdDo6ZVR5cGVDbGFzc0NvbnN0cnVjdG9yKSB7CiAgICAgICAgY2lfZGF0
YSA9ICZzQ2xhc3NJbmZvRGF0YVthbGlhc19zdHJ1Y3QtPm1ET01DbGFzc0luZm9JRF07CiAgICAg
IH0gZWxzZSBpZiAoYWxpYXNfc3RydWN0LT5tVHlwZSA9PSBuc0dsb2JhbE5hbWVTdHJ1Y3Q6OmVU
eXBlRXh0ZXJuYWxDbGFzc0luZm8pIHsKICAgICAgICBjaV9kYXRhID0gYWxpYXNfc3RydWN0LT5t
RGF0YTsKICAgICAgfQogICAgfQoKICAgIEpTT2JqZWN0KiBjbGFzc19vYmogPSA6OkpTX0RlZmlu
ZU9iamVjdChjeCwgb2JqLCA6OkpTX0dldFN0cmluZ0J5dGVzKHN0ciksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNET01KU0NsYXNzLCAwLCAwKTsKICAgIGlm
ICghY2xhc3Nfb2JqKSB7CiAgICAgIHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7CiAg
ICB9CgogICAgaWYgKCE6OkpTX1NldFByaXZhdGUoY3gsIGNsYXNzX29iaiwKICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8IHZvaWQgKiA+KHN0YXRpY19jYXN0PCBjb25zdCB2b2lk
ICogPihjbGFzc19uYW1lKSkpKSB7CgoKICAgICAgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZm
ZmZMKTsKICAgIH0KCiAgICBjb25zdCBuc0lJRCAqcHJpbWFyeV9paWQgPSAmbnNDT01UeXBlSW5m
bzxuc0lTdXBwb3J0cz46OkdldElJRCgpOwoKICAgIGlmIChuYW1lX3N0cnVjdC0+bVR5cGUgPT0g
bnNHbG9iYWxOYW1lU3RydWN0OjplVHlwZUNsYXNzUHJvdG8pIHsKICAgICAgcHJpbWFyeV9paWQg
PSAmbmFtZV9zdHJ1Y3QtPm1JSUQ7CiAgICB9IGVsc2UgaWYgKGNpX2RhdGEgJiYgY2lfZGF0YS0+
bVByb3RvQ2hhaW5JbnRlcmZhY2UpIHsKICAgICAgcHJpbWFyeV9paWQgPSBjaV9kYXRhLT5tUHJv
dG9DaGFpbkludGVyZmFjZTsKICAgIH0KCiAgICBuc1hQSURMQ1N0cmluZyBjbGFzc19wYXJlbnRf
bmFtZTsKCiAgICBpZiAoIXByaW1hcnlfaWlkLT5FcXVhbHMobnNDT01UeXBlSW5mbzxuc0lTdXBw
b3J0cz46OkdldElJRCgpKSkgewogICAgICBydiA9IERlZmluZUludGVyZmFjZUNvbnN0YW50cyhj
eCwgY2xhc3Nfb2JqLCBwcmltYXJ5X2lpZCk7CiAgICAgIGRvIHsgaWYgKCEoKCEoKHJ2KSAmIDB4
ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7CgoKCiAgICAgIGlmIChw
cmltYXJ5X2lpZC0+RXF1YWxzKG5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnQ+OjpHZXRJSUQoKSkp
IHsKICAgICAgICBydiA9IERlZmluZUludGVyZmFjZUNvbnN0YW50cyhjeCwgY2xhc3Nfb2JqLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuc0NPTVR5cGVJbmZvPG5zSURP
TU5TRXZlbnQ+OjpHZXRJSUQoKSk7CiAgICAgICAgZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAw
MDAwMCkpKSkgeyA7IHJldHVybiBydjsgfSB9IHdoaWxlICgwKTsKICAgICAgfQoKICAgICAgbnND
T01QdHI8bnNJSW50ZXJmYWNlSW5mb01hbmFnZXI+IGlpbSA9CiAgICAgICAgZG9udF9BZGRSZWYo
WFBUSV9HZXRJbnRlcmZhY2VJbmZvTWFuYWdlcigpKTsKICAgICAgZG8geyBpZiAoIShpaW0pKSB7
IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNDAxMTFMKTsgfSB9IHdoaWxlICgwKTsKCiAgICAg
IG5zQ09NUHRyPG5zSUludGVyZmFjZUluZm8+IGlmX2luZm87CiAgICAgIGlpbS0+R2V0SW5mb0Zv
cklJRChwcmltYXJ5X2lpZCwgZ2V0dGVyX0FkZFJlZnMoaWZfaW5mbykpOwogICAgICBkbyB7IGlm
ICghKGlmX2luZm8pKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsgfSB9IHdo
aWxlICgwKTsKCiAgICAgIG5zQ09NUHRyPG5zSUludGVyZmFjZUluZm8+IHBhcmVudDsKICAgICAg
bnNJSUQgKmlpZCA9IDA7CgogICAgICBpZiAoY2lfZGF0YSAmJiAhY2lfZGF0YS0+bUhhc0NsYXNz
SW50ZXJmYWNlKSB7CiAgICAgICAgaWZfaW5mby0+R2V0SW50ZXJmYWNlSUlEKCZpaWQpOwogICAg
ICB9IGVsc2UgewogICAgICAgIGlmX2luZm8tPkdldFBhcmVudChnZXR0ZXJfQWRkUmVmcyhwYXJl
bnQpKTsKICAgICAgICBkbyB7IGlmICghKHBhcmVudCkpIHsgOyByZXR1cm4gKChuc3Jlc3VsdCkg
MHg4MDAwZmZmZkwpOyB9IH0gd2hpbGUgKDApOwoKICAgICAgICBwYXJlbnQtPkdldEludGVyZmFj
ZUlJRCgmaWlkKTsKICAgICAgfQoKICAgICAgaWYgKGlpZCkgewogICAgICAgIGlmICghaWlkLT5F
cXVhbHMobnNDT01UeXBlSW5mbzxuc0lTdXBwb3J0cz46OkdldElJRCgpKSkgewogICAgICAgICAg
aWYgKGNpX2RhdGEgJiYgIWNpX2RhdGEtPm1IYXNDbGFzc0ludGVyZmFjZSkgewoKCgoKICAgICAg
ICAgICAgaWZfaW5mby0+R2V0TmFtZShnZXR0ZXJfQ29waWVzKGNsYXNzX3BhcmVudF9uYW1lKSk7
CiAgICAgICAgICB9IGVsc2UgewoKCgoKCiAgICAgICAgICAgIDsKCiAgICAgICAgICAgIHBhcmVu
dC0+R2V0TmFtZShnZXR0ZXJfQ29waWVzKGNsYXNzX3BhcmVudF9uYW1lKSk7CiAgICAgICAgICB9
CiAgICAgICAgfQoKICAgICAgICBuc01lbW9yeTo6RnJlZShpaWQpOwogICAgICB9CiAgICB9Cgog
ICAgSlNPYmplY3QgKnByb3RvID0gMDsKCiAgICBpZiAoY2xhc3NfcGFyZW50X25hbWUpIHsKICAg
ICAganN2YWwgdmFsOwoKICAgICAgaWYgKCE6OkpTX0dldFByb3BlcnR5KGN4LCBvYmosIEN1dFBy
ZWZpeChjbGFzc19wYXJlbnRfbmFtZSksICZ2YWwpKSB7CiAgICAgICAgcmV0dXJuICgobnNyZXN1
bHQpIDB4ODAwMGZmZmZMKTsKICAgICAgfQoKICAgICAgSlNPYmplY3QgKnRtcCA9ICgoKHZhbCkg
JiAoKChKU1VpbnQzMikxIDw8ICgzKSkgLSAxKSkgPT0gMHgwKSA/ICgoSlNPYmplY3QgKikoKHZv
aWQgKikoKHZhbCkgJiB+KGpzdmFsKSgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSkpIDogMDsK
CiAgICAgIGlmICh0bXApIHsKICAgICAgICBpZiAoITo6SlNfR2V0UHJvcGVydHkoY3gsIHRtcCwg
InByb3RvdHlwZSIsICZ2YWwpKSB7CiAgICAgICAgICByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAw
ZmZmZkwpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCgoKHZhbCkgJiAoKChKU1VpbnQzMikxIDw8
ICgzKSkgLSAxKSkgPT0gMHgwKSkgewogICAgICAgICAgcHJvdG8gPSAoKEpTT2JqZWN0ICopKCh2
b2lkICopKCh2YWwpICYgfihqc3ZhbCkoKChKU1VpbnQzMikxIDw8ICgzKSkgLSAxKSkpKTsKICAg
ICAgICB9CiAgICAgIH0KICAgIH0KCiAgICBKU09iamVjdCAqZG90X3Byb3RvdHlwZSA9IDA7Cgog
ICAgaWYgKG5hbWVfc3RydWN0LT5tVHlwZSA9PSBuc0dsb2JhbE5hbWVTdHJ1Y3Q6OmVUeXBlRXh0
ZXJuYWxDb25zdHJ1Y3RvckFsaWFzKSB7CiAgICAgIG5hbWVfc3RydWN0ID0gYWxpYXNfc3RydWN0
OwogICAgfQoKICAgIGlmIChuYW1lX3N0cnVjdC0+bVR5cGUgPT0gbnNHbG9iYWxOYW1lU3RydWN0
OjplVHlwZUNsYXNzQ29uc3RydWN0b3IpIHsKICAgICAgUFJJbnQzMiBpZCA9IG5hbWVfc3RydWN0
LT5tRE9NQ2xhc3NJbmZvSUQ7CiAgICAgIDsKCiAgICAgIG5zRE9NQ2xhc3NJbmZvSUQgY2lfaWQg
PSAobnNET01DbGFzc0luZm9JRClpZDsKCiAgICAgIG5zQ09NUHRyPG5zSUNsYXNzSW5mbz4gY2ko
ZG9udF9BZGRSZWYoR2V0Q2xhc3NJbmZvSW5zdGFuY2UoY2lfaWQpKSk7CiAgICAgIGRvIHsgaWYg
KCEoY2kpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsgfSB9IHdoaWxlICgw
KTsKCiAgICAgIG5zQ09NUHRyPG5zSVhQQ29ubmVjdEpTT2JqZWN0SG9sZGVyPiBwcm90b19ob2xk
ZXI7CgogICAgICBuc3Jlc3VsdCBydiA9CiAgICAgICAgc1hQQ29ubmVjdC0+R2V0V3JhcHBlZE5h
dGl2ZVByb3RvdHlwZShjeCwgb2JqLCBjaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdldHRlcl9BZGRSZWZzKHByb3RvX2hvbGRlcikpOwogICAgICBkbyB7
IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4
ODAwMGZmZmZMKTsgfSB9IHdoaWxlICgwKTsKCiAgICAgIHJ2ID0gcHJvdG9faG9sZGVyLT5HZXRK
U09iamVjdCgmZG90X3Byb3RvdHlwZSk7CiAgICAgIGRvIHsgaWYgKCEoKCEoKHJ2KSAmIDB4ODAw
MDAwMDApKSkpIHsgOyByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwpOyB9IH0gd2hpbGUg
KDApOwoKICAgICAgSlNPYmplY3QgKnhwY19wcm90b19wcm90byA9IDo6SlNfR2V0UHJvdG90eXBl
KGN4LCBkb3RfcHJvdG90eXBlKTsKCiAgICAgIGlmIChwcm90byAmJiBKU19HZXRDbGFzcyhjeCwg
eHBjX3Byb3RvX3Byb3RvKSA9PSBzT2JqZWN0Q2xhc3MpIHsKICAgICAgICBpZiAoITo6SlNfU2V0
UHJvdG90eXBlKGN4LCBkb3RfcHJvdG90eXBlLCBwcm90bykpIHsKICAgICAgICAgIHJldHVybiAo
KG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7CiAgICAgICAgfQogICAgICB9CiAgICB9IGVsc2UgaWYg
KG5hbWVfc3RydWN0LT5tVHlwZSA9PSBuc0dsb2JhbE5hbWVTdHJ1Y3Q6OmVUeXBlRXh0ZXJuYWxD
bGFzc0luZm8pIHsKICAgICAgbnNDT01QdHI8bnNJQ2xhc3NJbmZvPiBjaSA9CiAgICAgICAgZ2V0
dGVyX0FkZFJlZnMoR2V0Q2xhc3NJbmZvSW5zdGFuY2UobmFtZV9zdHJ1Y3QtPm1EYXRhKSk7CiAg
ICAgIGRvIHsgaWYgKCEoY2kpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsg
fSB9IHdoaWxlICgwKTsKCiAgICAgIG5zQ09NUHRyPG5zSVhQQ29ubmVjdEpTT2JqZWN0SG9sZGVy
PiBwcm90b19ob2xkZXI7CgogICAgICBuc3Jlc3VsdCBydiA9CiAgICAgICAgc1hQQ29ubmVjdC0+
R2V0V3JhcHBlZE5hdGl2ZVByb3RvdHlwZShjeCwgb2JqLCBjaSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHRlcl9BZGRSZWZzKHByb3RvX2hvbGRlcikp
OwogICAgICBkbyB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0dXJuICgo
bnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsgfSB9IHdoaWxlICgwKTsKCiAgICAgIHJ2ID0gcHJvdG9f
aG9sZGVyLT5HZXRKU09iamVjdCgmZG90X3Byb3RvdHlwZSk7CiAgICAgIGRvIHsgaWYgKCEoKCEo
KHJ2KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwp
OyB9IH0gd2hpbGUgKDApOwoKICAgICAgSlNPYmplY3QgKnhwY19wcm90b19wcm90byA9IDo6SlNf
R2V0UHJvdG90eXBlKGN4LCBkb3RfcHJvdG90eXBlKTsKCiAgICAgIGlmIChwcm90byAmJiBKU19H
ZXRDbGFzcyhjeCwgeHBjX3Byb3RvX3Byb3RvKSA9PSBzT2JqZWN0Q2xhc3MpIHsKICAgICAgICBp
ZiAoITo6SlNfU2V0UHJvdG90eXBlKGN4LCBkb3RfcHJvdG90eXBlLCBwcm90bykpIHsKICAgICAg
ICAgIHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7CiAgICAgICAgfQogICAgICB9CiAg
ICB9IGVsc2UgewogICAgICBkb3RfcHJvdG90eXBlID0gOjpKU19OZXdPYmplY3QoY3gsICZzRE9N
Q29uc3RydWN0b3JQcm90b0NsYXNzLCBwcm90bywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9iaik7CiAgICAgIGRvIHsgaWYgKCEoZG90X3Byb3RvdHlwZSkpIHsgOyByZXR1
cm4gKChuc3Jlc3VsdCkgMHg4MDA3MDAwZUwpOyB9IH0gd2hpbGUgKDApOwogICAgfQoKICAgIGpz
dmFsIHYgPSAoKGpzdmFsKShkb3RfcHJvdG90eXBlKSk7CgogICAgaWYgKCE6OkpTX1NldFByb3Bl
cnR5KGN4LCBjbGFzc19vYmosICJwcm90b3R5cGUiLCAmdikpIHsKICAgICAgcmV0dXJuICgobnNy
ZXN1bHQpIDB4ODAwMGZmZmZMKTsKICAgIH0KCiAgICAqZGlkX3Jlc29sdmUgPSAxOwoKICAgIHJl
dHVybiAwOwogIH0KCiAgaWYgKG5hbWVfc3RydWN0LT5tVHlwZSA9PSBuc0dsb2JhbE5hbWVTdHJ1
Y3Q6OmVUeXBlRXh0ZXJuYWxDb25zdHJ1Y3RvcikgewoKICAgIEpTT2JqZWN0KiBjbGFzc19vYmog
PSA6OkpTX0RlZmluZU9iamVjdChjeCwgb2JqLCA6OkpTX0dldFN0cmluZ0J5dGVzKHN0ciksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNET01KU0NsYXNzLCAw
LCAwKTsKICAgIGlmICghY2xhc3Nfb2JqKSB7CiAgICAgIHJldHVybiAoKG5zcmVzdWx0KSAweDgw
MDBmZmZmTCk7CiAgICB9CgogICAgaWYgKCE6OkpTX1NldFByaXZhdGUoY3gsIGNsYXNzX29iaiwK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8IHZvaWQgKiA+KHN0YXRpY19jYXN0
PCBjb25zdCB2b2lkICogPihjbGFzc19uYW1lKSkpKSB7CgoKICAgICAgcmV0dXJuICgobnNyZXN1
bHQpIDB4ODAwMGZmZmZMKTsKICAgIH0KCiAgICAqZGlkX3Jlc29sdmUgPSAxOwoKICAgIHJldHVy
biAwOwogIH0KCiAgaWYgKG5hbWVfc3RydWN0LT5tVHlwZSA9PSBuc0dsb2JhbE5hbWVTdHJ1Y3Q6
OmVUeXBlUHJvcGVydHkpIHsKICAgIG5zQ09NUHRyPG5zSVN1cHBvcnRzPiBuYXRpdmUoZG9fQ3Jl
YXRlSW5zdGFuY2UobmFtZV9zdHJ1Y3QtPm1DSUQsICZydikpOwogICAgZG8geyBpZiAoISgoISgo
cnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsgfSB9IHdoaWxlICgwKTsKCiAgICBq
c3ZhbCBwcm9wX3ZhbDsKCiAgICBuc0NPTVB0cjxuc0lTY3JpcHRPYmplY3RPd25lcj4gb3duZXIo
ZG9fUXVlcnlJbnRlcmZhY2UobmF0aXZlKSk7CiAgICBpZiAob3duZXIpIHsKICAgICAgbnNDT01Q
dHI8bnNJU2NyaXB0Q29udGV4dD4gY29udGV4dDsKICAgICAgbnNKU1V0aWxzOjpHZXRTdGF0aWNT
Y3JpcHRDb250ZXh0KGN4LCBvYmosIGdldHRlcl9BZGRSZWZzKGNvbnRleHQpKTsKICAgICAgZG8g
eyBpZiAoIShjb250ZXh0KSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7IH0g
fSB3aGlsZSAoMCk7CgogICAgICBKU09iamVjdCAqcHJvcF9vYmogPSAwOwoKICAgICAgcnYgPSBv
d25lci0+R2V0U2NyaXB0T2JqZWN0KGNvbnRleHQsICh2b2lkKiopJnByb3Bfb2JqKTsKICAgICAg
ZG8geyBpZiAoIShwcm9wX29iaikpIHsgOyByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwp
OyB9IH0gd2hpbGUgKDApOwoKICAgICAgcHJvcF92YWwgPSAoKGpzdmFsKShwcm9wX29iaikpOwog
ICAgfSBlbHNlIHsKICAgICAgcnYgPSBXcmFwTmF0aXZlKGN4LCA6OkpTX0dldEdsb2JhbE9iamVj
dChjeCksIG5hdGl2ZSwKICAgICAgICAgICAgICAgICAgICAgIG5zQ09NVHlwZUluZm88bnNJU3Vw
cG9ydHM+OjpHZXRJSUQoKSwgJnByb3BfdmFsKTsKICAgIH0KCiAgICBkbyB7IGlmICghKCghKChy
dikgJiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0dXJuIHJ2OyB9IH0gd2hpbGUgKDApOwoKICAgIFBS
Qm9vbCByZXR2YWwgPSA6OkpTX0RlZmluZVVDUHJvcGVydHkoY3gsIG9iaiwgOjpKU19HZXRTdHJp
bmdDaGFycyhzdHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
OkpTX0dldFN0cmluZ0xlbmd0aChzdHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwcm9wX3ZhbCwgMCwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHgwMSB8IDB4MDIpOwogICAgKmRpZF9yZXNvbHZlID0gMTsKCiAgICByZXR1
cm4gcmV0dmFsID8gMCA6ICgobnNyZXN1bHQpIDB4ODAwMDQwMDVMKTsKICB9CgogIGlmIChuYW1l
X3N0cnVjdC0+bVR5cGUgPT0gbnNHbG9iYWxOYW1lU3RydWN0OjplVHlwZUR5bmFtaWNOYW1lU2V0
KSB7CiAgICBuc0NPTVB0cjxuc0lTY3JpcHRFeHRlcm5hbE5hbWVTZXQ+IG5hbWVzZXQgPQogICAg
ICBkb19DcmVhdGVJbnN0YW5jZShuYW1lX3N0cnVjdC0+bUNJRCwgJnJ2KTsKICAgIGRvIHsgaWYg
KCEoKCEoKHJ2KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7
CgogICAgbnNDT01QdHI8bnNJU2NyaXB0R2xvYmFsT2JqZWN0PiBzZ28oZG9fUXVlcnlJbnRlcmZh
Y2UobmF0aXZlKSk7CiAgICBkbyB7IGlmICghKHNnbykpIHsgOyByZXR1cm4gKChuc3Jlc3VsdCkg
MHg4MDAwZmZmZkwpOyB9IH0gd2hpbGUgKDApOwoKICAgIG5zQ09NUHRyPG5zSVNjcmlwdENvbnRl
eHQ+IGNvbnRleHQ7CgogICAgc2dvLT5HZXRDb250ZXh0KGdldHRlcl9BZGRSZWZzKGNvbnRleHQp
KTsKICAgIGRvIHsgaWYgKCEoY29udGV4dCkpIHsgOyByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAw
ZmZmZkwpOyB9IH0gd2hpbGUgKDApOwoKICAgIHJ2ID0gbmFtZXNldC0+SW5pdGlhbGl6ZU5hbWVT
ZXQoY29udGV4dCk7CgogICAgKmRpZF9yZXNvbHZlID0gMTsKICB9CgogIHJldHVybiBydjsKfQoK
Cm5zcmVzdWx0Cm5zV2luZG93U0g6OkNhY2hlRG9jdW1lbnRQcm9wZXJ0eShKU0NvbnRleHQgKmN4
LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJRE9N
V2luZG93ICp3aW5kb3cpCnsKICBuc0NPTVB0cjxuc0lET01Eb2N1bWVudD4gZG9jdW1lbnQ7CiAg
bnNyZXN1bHQgcnYgPSB3aW5kb3ctPkdldERvY3VtZW50KGdldHRlcl9BZGRSZWZzKGRvY3VtZW50
KSk7CiAgZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsg
fSB9IHdoaWxlICgwKTsKCiAganN2YWwgdjsKICBydiA9IFdyYXBOYXRpdmUoY3gsIG9iaiwgZG9j
dW1lbnQsIG5zQ09NVHlwZUluZm88bnNJRE9NRG9jdW1lbnQ+OjpHZXRJSUQoKSwgJnYpOwogIGRv
IHsgaWYgKCEoKCEoKHJ2KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGls
ZSAoMCk7CgogIG5zRGVwZW5kZW50U3RyaW5nIGRvY19zdHIocmVpbnRlcnByZXRfY2FzdDwgY29u
c3QgbnNBU3RyaW5nOjpjaGFyX3R5cGUqID4oTCJkb2N1bWVudCIpLCBQUlVpbnQzMigoc2l6ZW9m
KEwiZG9jdW1lbnQiKS9zaXplb2Yod2NoYXJfdCkpLTEpKTsKCiAgaWYgKCE6OkpTX0RlZmluZVVD
UHJvcGVydHkoY3gsIG9iaiwgcmVpbnRlcnByZXRfY2FzdDwgY29uc3QganNjaGFyICogPihkb2Nf
c3RyLmdldCgpKSwKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jX3N0ci5MZW5ndGgo
KSwgdiwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAweDAyKSkgewogICAgcmV0
dXJuICgobnNyZXN1bHQpIDB4ODAwMDQwMDVMKTsKICB9CgogIHJldHVybiAwOwp9Cgpuc3Jlc3Vs
dApuc1dpbmRvd1NIOjpOZXdSZXNvbHZlKG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBw
ZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKm9iaiwg
anN2YWwgaWQsIFBSVWludDMyIGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0
ICoqb2JqcCwgUFJCb29sICpfcmV0dmFsKQp7CiAgSlNCb29sIGRpZF9yZXNvbHZlID0gKEpTSW50
bikwOwoKICBpZiAoITo6SlNfUmVzb2x2ZVN0YW5kYXJkQ2xhc3MoY3gsIG9iaiwgaWQsICZkaWRf
cmVzb2x2ZSkpIHsKICAgICpfcmV0dmFsID0gKEpTSW50bikwOwoKICAgIHJldHVybiAoKG5zcmVz
dWx0KSAweDgwMDBmZmZmTCk7CiAgfQoKICBpZiAoZGlkX3Jlc29sdmUpIHsKICAgICpvYmpwID0g
b2JqOwoKICAgIHJldHVybiAwOwogIH0KCiAgaWYgKGlkID09IHNDb25zdHJ1Y3Rvcl9pZCAmJiAh
KGZsYWdzICYgMHgwMikpIHsKICAgIHJldHVybiBSZXNvbHZlQ29uc3RydWN0b3IoY3gsIG9iaiwg
b2JqcCk7CiAgfQoKICBpZiAoKCgoaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09
IDB4NCkpIHsKICAgIEpTU3RyaW5nICpzdHIgPSAoKEpTU3RyaW5nICopKCh2b2lkICopKChpZCkg
JiB+KGpzdmFsKSgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSkpOwogICAgbnNDT01QdHI8bnNJ
U3VwcG9ydHM+IG5hdGl2ZTsKICAgIHdyYXBwZXItPkdldE5hdGl2ZShnZXR0ZXJfQWRkUmVmcyhu
YXRpdmUpKTsKCiAgICBuc0NPTVB0cjxuc0lTY3JpcHRHbG9iYWxPYmplY3Q+IHNnbyhkb19RdWVy
eUludGVyZmFjZShuYXRpdmUpKTsKICAgIGRvIHsgaWYgKCEoc2dvKSkgeyA7IHJldHVybiAoKG5z
cmVzdWx0KSAweDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7CgogICAgbnNDT01QdHI8bnNJU2Ny
aXB0Q29udGV4dD4gbXlfY29udGV4dDsKICAgIHNnby0+R2V0Q29udGV4dChnZXR0ZXJfQWRkUmVm
cyhteV9jb250ZXh0KSk7CgogICAgaWYgKCFteV9jb250ZXh0IHx8ICgobXlfY29udGV4dC0+SXND
b250ZXh0SW5pdGlhbGl6ZWQoKSkgJiAweDgwMDAwMDAwKSkgewoKCgogICAgICByZXR1cm4gMDsK
ICAgIH0KCiAgICBuc3Jlc3VsdCBydiA9IDA7CgogICAgaWYgKCEoZmxhZ3MgJiAweDAyKSkgewoK
CiAgICAgIHJ2ID0gR2xvYmFsUmVzb2x2ZShuYXRpdmUsIGN4LCBvYmosIHN0ciwgZmxhZ3MsICZk
aWRfcmVzb2x2ZSk7CiAgICAgIGRvIHsgaWYgKCEoKCEoKHJ2KSAmIDB4ODAwMDAwMDApKSkpIHsg
OyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7CgogICAgICBpZiAoZGlkX3Jlc29sdmUpIHsKCgog
ICAgICAgICpvYmpwID0gb2JqOwoKICAgICAgICByZXR1cm4gMDsKICAgICAgfQogICAgfQoKCgoK
CiAgICBuc0NPTVB0cjxuc0lEb2NTaGVsbD4gZG9jU2hlbGw7CgogICAgc2dvLT5HZXREb2NTaGVs
bChnZXR0ZXJfQWRkUmVmcyhkb2NTaGVsbCkpOwoKICAgIG5zQ09NUHRyPG5zSURvY1NoZWxsVHJl
ZU5vZGU+IGRzbihkb19RdWVyeUludGVyZmFjZShkb2NTaGVsbCkpOwoKICAgIFBSSW50MzIgY291
bnQgPSAwOwoKICAgIGlmIChkc24pIHsKICAgICAgZHNuLT5HZXRDaGlsZENvdW50KCZjb3VudCk7
CiAgICB9CgogICAgaWYgKGNvdW50ID4gMCkgewogICAgICBuc0NPTVB0cjxuc0lEb2NTaGVsbFRy
ZWVJdGVtPiBjaGlsZDsKCiAgICAgIGNvbnN0IGpzY2hhciAqY2hhcnMgPSA6OkpTX0dldFN0cmlu
Z0NoYXJzKHN0cik7CgogICAgICBkc24tPkZpbmRDaGlsZFdpdGhOYW1lKHJlaW50ZXJwcmV0X2Nh
c3Q8IGNvbnN0IFBSVW5pY2hhciogPihjaGFycyksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMCwgMSwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR0ZXJfQWRkUmVmcyhj
aGlsZCkpOwoKICAgICAgbnNDT01QdHI8bnNJRE9NV2luZG93PiBjaGlsZF93aW4oZG9fR2V0SW50
ZXJmYWNlKGNoaWxkKSk7CgogICAgICBpZiAoY2hpbGRfd2luKSB7CgoKCgogICAgICAgIGpzdmFs
IHY7CiAgICAgICAgcnYgPSBXcmFwTmF0aXZlKGN4LCA6OkpTX0dldEdsb2JhbE9iamVjdChjeCks
IGNoaWxkX3dpbiwKICAgICAgICAgICAgICAgICAgICAgICAgbnNDT01UeXBlSW5mbzxuc0lET01X
aW5kb3dJbnRlcm5hbD46OkdldElJRCgpLCAmdik7CiAgICAgICAgZG8geyBpZiAoISgoISgocnYp
ICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsgfSB9IHdoaWxlICgwKTsKIyA0MDI1ICJu
c0RPTUNsYXNzSW5mby5jcHAiCiAgICAgICAgc0RvU2VjdXJpdHlDaGVja0luQWRkUHJvcGVydHkg
PSAwOwoKICAgICAgICBQUkJvb2wgb2sgPSA6OkpTX0RlZmluZVVDUHJvcGVydHkoY3gsIG9iaiwg
Y2hhcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6SlNfR2V0
U3RyaW5nTGVuZ3RoKHN0ciksIHYsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAsIDApOwoKICAgICAgICBzRG9TZWN1cml0eUNoZWNrSW5BZGRQcm9wZXJ0eSA9
IDE7CgogICAgICAgIGlmICghb2spIHsKICAgICAgICAgIHJldHVybiAoKG5zcmVzdWx0KSAweDgw
MDA0MDA1TCk7CiAgICAgICAgfQoKICAgICAgICAqb2JqcCA9IG9iajsKCiAgICAgICAgcmV0dXJu
IDA7CiAgICAgIH0KICAgIH0KCiAgICBpZiAoaWQgPT0gc19jb250ZW50X2lkKSB7CgoKCiAgICAg
IEpTT2JqZWN0KiBnZXR0ZXJPYmo7CiAgICAgIHJ2ID0gbXlfY29udGV4dC0+Q29tcGlsZUZ1bmN0
aW9uKG9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNDQXV0b1N0
cmluZygiX2NvbnRlbnQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8IGNvbnN0IG5zQUZsYXRTdHJp
bmcmID4obnNEZXBlbmRlbnRTdHJpbmcocmVpbnRlcnByZXRfY2FzdDwgY29uc3QgbnNBU3RyaW5n
OjpjaGFyX3R5cGUqID4oTCJyZXR1cm4gdGhpcy5jb250ZW50OyIpLCBQUlVpbnQzMigoc2l6ZW9m
KEwicmV0dXJuIHRoaXMuY29udGVudDsiKS9zaXplb2Yod2NoYXJfdCkpLTEpKSksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKikgJmdl
dHRlck9iaik7CiAgICAgIGRvIHsgaWYgKCEoKCEoKHJ2KSAmIDB4ODAwMDAwMDApKSAmJiBnZXR0
ZXJPYmopKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMDQwMDVMKTsgfSB9IHdoaWxlICgw
KTsKCiAgICAgIGlmICghOjpKU19EZWZpbmVVQ1Byb3BlcnR5KGN4LCBvYmosIDo6SlNfR2V0U3Ry
aW5nQ2hhcnMoc3RyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpKU19HZXRT
dHJpbmdMZW5ndGgoc3RyKSwgKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEp
IHwgMHgxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEpTUHJvcGVydHlPcCln
ZXR0ZXJPYmosIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEgfCAweDEw
IHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCkpIHsKICAgICAgICByZXR1
cm4gKChuc3Jlc3VsdCkgMHg4MDAwNDAwNUwpOwogICAgICB9CgogICAgICAqb2JqcCA9IG9iajsK
CiAgICAgIHJldHVybiAwOwogICAgfQoKICAgIGlmIChpZCA9PSBzTG9jYXRpb25faWQpIHsKCgoK
CgogICAgICBuc0NPTVB0cjxuc0lET01XaW5kb3dJbnRlcm5hbD4gd2luZG93KGRvX1F1ZXJ5SW50
ZXJmYWNlKG5hdGl2ZSkpOwogICAgICBkbyB7IGlmICghKHdpbmRvdykpIHsgOyByZXR1cm4gKChu
c3Jlc3VsdCkgMHg4MDAwZmZmZkwpOyB9IH0gd2hpbGUgKDApOwoKICAgICAgbnNDT01QdHI8bnNJ
RE9NTG9jYXRpb24+IGxvY2F0aW9uOwogICAgICBydiA9IHdpbmRvdy0+R2V0TG9jYXRpb24oZ2V0
dGVyX0FkZFJlZnMobG9jYXRpb24pKTsKICAgICAgZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAw
MDAwMCkpKSkgeyA7IHJldHVybiBydjsgfSB9IHdoaWxlICgwKTsKCiAgICAgIGpzdmFsIHY7CiAg
ICAgIHJ2ID0gV3JhcE5hdGl2ZShjeCwgb2JqLCBsb2NhdGlvbiwgbnNDT01UeXBlSW5mbzxuc0lE
T01Mb2NhdGlvbj46OkdldElJRCgpLCAmdik7CiAgICAgIGRvIHsgaWYgKCEoKCEoKHJ2KSAmIDB4
ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7CgogICAgICBzRG9TZWN1
cml0eUNoZWNrSW5BZGRQcm9wZXJ0eSA9IDA7CgogICAgICBKU0Jvb2wgb2sgPSA6OkpTX0RlZmlu
ZVVDUHJvcGVydHkoY3gsIG9iaiwgOjpKU19HZXRTdHJpbmdDaGFycyhzdHIpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpKU19HZXRTdHJpbmdMZW5ndGgoc3RyKSwg
diwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDApOwoKICAg
ICAgc0RvU2VjdXJpdHlDaGVja0luQWRkUHJvcGVydHkgPSAxOwoKICAgICAgaWYgKCFvaykgewog
ICAgICAgIHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDA0MDA1TCk7CiAgICAgIH0KCiAgICAgICpv
YmpwID0gb2JqOwoKICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgaWYgKGZsYWdzICYgMHgwMikg
ewogICAgICBpZiAoSXNSZWFkb25seVJlcGxhY2VhYmxlKGlkKSB8fAogICAgICAgICAgKCEoZmxh
Z3MgJiAweDAxKSAmJiBJc1dyaXRhYmxlUmVwbGFjZWFibGUoaWQpKSkgewoKCgoKCgogICAgICAg
IGlmICghOjpKU19EZWZpbmVVQ1Byb3BlcnR5KGN4LCBvYmosIDo6SlNfR2V0U3RyaW5nQ2hhcnMo
c3RyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OkpTX0dldFN0cmluZ0xl
bmd0aChzdHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKGpzdmFsKSgw
IC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSksIDAsIDAsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHgwMSkpIHsKICAgICAgICAgIHJldHVybiAoKG5zcmVzdWx0
KSAweDgwMDA0MDA1TCk7CiAgICAgICAgfQoKICAgICAgICAqb2JqcCA9IG9iajsKCiAgICAgICAg
cmV0dXJuIDA7CiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgIGlmIChpZCA9PSBzTmF2aWdhdG9y
X2lkKSB7CiAgICAgICAgbnNDT01QdHI8bnNJRE9NV2luZG93SW50ZXJuYWw+IHdpbmRvdyhkb19R
dWVyeUludGVyZmFjZShuYXRpdmUpKTsKICAgICAgICBkbyB7IGlmICghKHdpbmRvdykpIHsgOyBy
ZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwpOyB9IH0gd2hpbGUgKDApOwoKICAgICAgICBu
c0NPTVB0cjxuc0lET01OYXZpZ2F0b3I+IG5hdmlnYXRvcjsKICAgICAgICBydiA9IHdpbmRvdy0+
R2V0TmF2aWdhdG9yKGdldHRlcl9BZGRSZWZzKG5hdmlnYXRvcikpOwogICAgICAgIGRvIHsgaWYg
KCEoKCEoKHJ2KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7
CgogICAgICAgIGpzdmFsIHY7CiAgICAgICAgcnYgPSBXcmFwTmF0aXZlKGN4LCBvYmosIG5hdmln
YXRvciwgbnNDT01UeXBlSW5mbzxuc0lET01OYXZpZ2F0b3I+OjpHZXRJSUQoKSwgJnYpOwogICAg
ICAgIGRvIHsgaWYgKCEoKCEoKHJ2KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0g
fSB3aGlsZSAoMCk7CgogICAgICAgIGlmICghOjpKU19EZWZpbmVVQ1Byb3BlcnR5KGN4LCBvYmos
IDo6SlNfR2V0U3RyaW5nQ2hhcnMoc3RyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6OkpTX0dldFN0cmluZ0xlbmd0aChzdHIpLCB2LCAwLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAsIDApKSB7CiAgICAgICAgICByZXR1cm4gKChuc3Jlc3VsdCkgMHg4
MDAwNDAwNUwpOwogICAgICAgIH0KCiAgICAgICAgKm9ianAgPSBvYmo7CgogICAgICAgIHJldHVy
biAwOwogICAgICB9CgogICAgICBpZiAoaWQgPT0gc0RvY3VtZW50X2lkKSB7CiAgICAgICAgbnND
T01QdHI8bnNJRE9NV2luZG93SW50ZXJuYWw+IHdpbmRvdyhkb19RdWVyeUludGVyZmFjZShuYXRp
dmUpKTsKICAgICAgICBkbyB7IGlmICghKHdpbmRvdykpIHsgOyByZXR1cm4gKChuc3Jlc3VsdCkg
MHg4MDAwZmZmZkwpOyB9IH0gd2hpbGUgKDApOwoKICAgICAgICBydiA9IENhY2hlRG9jdW1lbnRQ
cm9wZXJ0eShjeCwgb2JqLCB3aW5kb3cpOwogICAgICAgIGRvIHsgaWYgKCEoKCEoKHJ2KSAmIDB4
ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7CgogICAgICAgICpvYmpw
ID0gb2JqOwoKICAgICAgICByZXR1cm4gMDsKICAgICAgfQoKICAgICAgaWYgKGlkID09IHNXaW5k
b3dfaWQpIHsKICAgICAgICBqc3ZhbCB2OwogICAgICAgIHJ2ID0gV3JhcE5hdGl2ZShjeCwgb2Jq
LCBuYXRpdmUsIG5zQ09NVHlwZUluZm88bnNJRE9NV2luZG93Pjo6R2V0SUlEKCksICZ2KTsKICAg
ICAgICBkbyB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0dXJuIHJ2OyB9
IH0gd2hpbGUgKDApOwoKICAgICAgICBpZiAoITo6SlNfRGVmaW5lVUNQcm9wZXJ0eShjeCwgb2Jq
LCA6OkpTX0dldFN0cmluZ0NoYXJzKHN0ciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOjpKU19HZXRTdHJpbmdMZW5ndGgoc3RyKSwgdiwgMCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLCAweDAyKSkgewogICAgICAgICAgcmV0dXJuICgobnNyZXN1bHQp
IDB4ODAwMDQwMDVMKTsKICAgICAgICB9CgogICAgICAgICpvYmpwID0gb2JqOwoKICAgICAgICBy
ZXR1cm4gMDsKICAgICAgfQogICAgfQoKICAgIHJldHVybiBuc0V2ZW50UmVjaWV2ZXJTSDo6TmV3
UmVzb2x2ZSh3cmFwcGVyLCBjeCwgb2JqLCBpZCwgZmxhZ3MsIG9ianAsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX3JldHZhbCk7CiAgfQoKICByZXR1cm4gMDsKfQoK
bnNyZXN1bHQKbnNXaW5kb3dTSDo6RmluYWxpemUobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAq
d3JhcHBlciwgSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKm9i
aikKewogIG5zQ09NUHRyPG5zSVN1cHBvcnRzPiBuYXRpdmU7CiAgd3JhcHBlci0+R2V0TmF0aXZl
KGdldHRlcl9BZGRSZWZzKG5hdGl2ZSkpOwogIGRvIHsgaWYgKCEobmF0aXZlKSkgeyA7IHJldHVy
biAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7CgogIG5zQ09NUHRyPG5z
SVNjcmlwdEdsb2JhbE9iamVjdD4gc2dvKGRvX1F1ZXJ5SW50ZXJmYWNlKG5hdGl2ZSkpOwogIGRv
IHsgaWYgKCEoc2dvKSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7IH0gfSB3
aGlsZSAoMCk7CgogIHJldHVybiBzZ28tPk9uRmluYWxpemUob2JqKTsKfQoKCgoKbnNyZXN1bHQK
bnNMb2NhdGlvblNIOjpDaGVja0FjY2Vzcyhuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFw
cGVyLCBKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpv
YmosIGpzdmFsIGlkLCBQUlVpbnQzMiBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgIGpz
dmFsICp2cCwgUFJCb29sICpfcmV0dmFsKQp7CiAgaWYgKChtb2RlICYgKEpTQUNDX1dSSVRFIC0g
MSkpID09IEpTQUNDX1BST1RPICYmIChtb2RlICYgSlNBQ0NfV1JJVEUpKSB7CgoKCiAgICAqX3Jl
dHZhbCA9IDA7CgogICAgcmV0dXJuICgobnNyZXN1bHQpICgoKFBSVWludDMyKSgxKTw8MzEpIHwg
KChQUlVpbnQzMikoMTQgKzB4NDUpPDwxNikgfCAoKFBSVWludDMyKSgxMDAwKSkpICk7CiAgfQoK
ICByZXR1cm4gbnNET01HZW5lcmljU0g6OkNoZWNrQWNjZXNzKHdyYXBwZXIsIGN4LCBvYmosIGlk
LCBtb2RlLCB2cCwgX3JldHZhbCk7Cn0KCgoKCm5zcmVzdWx0Cm5zTm9kZVNIOjpQcmVDcmVhdGUo
bnNJU3VwcG9ydHMgKm5hdGl2ZU9iaiwgSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKmdsb2JhbE9i
aiwKICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqKnBhcmVudE9iaikKewogIG5zQ09NUHRy
PG5zSUNvbnRlbnQ+IGNvbnRlbnQoZG9fUXVlcnlJbnRlcmZhY2UobmF0aXZlT2JqKSk7CiAgbnND
T01QdHI8bnNJRG9jdW1lbnQ+IGRvYzsKCiAgaWYgKGNvbnRlbnQpIHsKICAgIGNvbnRlbnQtPkdl
dERvY3VtZW50KCpnZXR0ZXJfQWRkUmVmcyhkb2MpKTsKICB9CgogIGlmICghZG9jKSB7CiMgNDI1
NCAibnNET01DbGFzc0luZm8uY3BwIgogICAgZG9jID0gZG9fUXVlcnlJbnRlcmZhY2UobmF0aXZl
T2JqKTsKCiAgICBpZiAoIWRvYykgewoKCgogICAgICAqcGFyZW50T2JqID0gZ2xvYmFsT2JqOwoK
ICAgICAgcmV0dXJuIDA7CiAgICB9CiAgfQoKICBuc0lTdXBwb3J0cyAqbmF0aXZlX3BhcmVudCA9
IDA7CgogIGlmIChjb250ZW50KSB7CiAgICBpZiAoY29udGVudC0+SXNDb250ZW50T2ZUeXBlKG5z
SUNvbnRlbnQ6OmVFTEVNRU5UIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJ
Q29udGVudDo6ZUhUTUwgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lDb250
ZW50OjplSFRNTF9GT1JNX0NPTlRST0wpKSB7CiAgICAgIG5zQ09NUHRyPG5zSUZvcm1Db250cm9s
PiBmb3JtX2NvbnRyb2woZG9fUXVlcnlJbnRlcmZhY2UoY29udGVudCkpOwoKICAgICAgaWYgKGZv
cm1fY29udHJvbCkgewogICAgICAgIG5zQ09NUHRyPG5zSURPTUhUTUxGb3JtRWxlbWVudD4gZm9y
bTsKCiAgICAgICAgZm9ybV9jb250cm9sLT5HZXRGb3JtKGdldHRlcl9BZGRSZWZzKGZvcm0pKTsK
CiAgICAgICAgbmF0aXZlX3BhcmVudCA9IGZvcm07CiAgICAgIH0KICAgIH0KCiAgICBpZiAoIW5h
dGl2ZV9wYXJlbnQpIHsKICAgICAgbnNDT01QdHI8bnNJQ29udGVudD4gcGFyZW50Q29udGVudDsK
CiAgICAgIGNvbnRlbnQtPkdldFBhcmVudCgqZ2V0dGVyX0FkZFJlZnMocGFyZW50Q29udGVudCkp
OwogICAgICBuYXRpdmVfcGFyZW50ID0gcGFyZW50Q29udGVudDsKCiAgICAgIGlmICghbmF0aXZl
X3BhcmVudCkgewogICAgICAgIG5hdGl2ZV9wYXJlbnQgPSBkb2M7CiAgICAgIH0KICAgIH0KICB9
CgogIGlmICghbmF0aXZlX3BhcmVudCkgewoKCgoKCgogICAgbnNDT01QdHI8bnNJU2NyaXB0R2xv
YmFsT2JqZWN0PiBzZ287CiAgICBkb2MtPkdldFNjcmlwdEdsb2JhbE9iamVjdChnZXR0ZXJfQWRk
UmVmcyhzZ28pKTsKCiAgICBpZiAoIXNnbykgewoKCgogICAgICAqcGFyZW50T2JqID0gZ2xvYmFs
T2JqOwoKICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgbmF0aXZlX3BhcmVudCA9IHNnbzsKICB9
CgogIGpzdmFsIHY7CgogIG5zcmVzdWx0IHJ2ID0gV3JhcE5hdGl2ZShjeCwgOjpKU19HZXRHbG9i
YWxPYmplY3QoY3gpLCBuYXRpdmVfcGFyZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICBu
c0NPTVR5cGVJbmZvPG5zSVN1cHBvcnRzPjo6R2V0SUlEKCksICZ2KTsKCiAgKnBhcmVudE9iaiA9
ICgoSlNPYmplY3QgKikoKHZvaWQgKikoKHYpICYgfihqc3ZhbCkoKChKU1VpbnQzMikxIDw8ICgz
KSkgLSAxKSkpKTsKCiAgcmV0dXJuIHJ2Owp9Cgpuc3Jlc3VsdApuc05vZGVTSDo6QWRkUHJvcGVy
dHkobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICpjeCwKICAg
ICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLCBqc3ZhbCAqdnAsIFBS
Qm9vbCAqX3JldHZhbCkKewogIG5zQ09NUHRyPG5zSVN1cHBvcnRzPiBuYXRpdmU7CiAgd3JhcHBl
ci0+R2V0TmF0aXZlKGdldHRlcl9BZGRSZWZzKG5hdGl2ZSkpOwoKICBuc0NPTVB0cjxuc0lET01O
b2RlPiBub2RlKGRvX1F1ZXJ5SW50ZXJmYWNlKG5hdGl2ZSkpOwoKICBuc0NPTVB0cjxuc0lEb2N1
bWVudD4gZG9jOwoKICBpZiAobm9kZSkgewogICAgbnNDT01QdHI8bnNJRE9NRG9jdW1lbnQ+IGRv
bWRvYzsKICAgIG5vZGUtPkdldE93bmVyRG9jdW1lbnQoZ2V0dGVyX0FkZFJlZnMoZG9tZG9jKSk7
CiAgICBkb2MgPSBkb19RdWVyeUludGVyZmFjZShkb21kb2MpOwogIH0KCiAgaWYgKCFkb2MpIHsK
ICAgIGRvYyA9IGRvX1F1ZXJ5SW50ZXJmYWNlKG5hdGl2ZSk7CiAgfQoKICBpZiAoZG9jKSB7CiAg
ICBuc0NPTVB0cjxuc0lDb250ZW50PiBjb250ZW50KGRvX1F1ZXJ5SW50ZXJmYWNlKG5vZGUpKTsK
ICAgIGRvYy0+QWRkUmVmZXJlbmNlKGNvbnRlbnQsIHdyYXBwZXIpOwogIH0KCiAgcmV0dXJuIDA7
Cn0KCm5zcmVzdWx0Cm5zTm9kZVNIOjpHZXRGbGFncyhQUlVpbnQzMiAqYUZsYWdzKQp7CiAgKmFG
bGFncyA9IChuc0lDbGFzc0luZm86Ok1BSU5fVEhSRUFEX09OTFkgfCBuc0lDbGFzc0luZm86OkRP
TV9PQkpFQ1QpIHwgbnNJQ2xhc3NJbmZvOjpDT05URU5UX05PREU7CgogIHJldHVybiAwOwp9CgoK
CgpQUkJvb2wKbnNFdmVudFJlY2lldmVyU0g6OlJlYWxseUlzRXZlbnROYW1lKGpzdmFsIGlkLCBq
c2NoYXIgYUZpcnN0Q2hhcikKewoKCiAgc3dpdGNoIChhRmlyc3RDaGFyKSB7CiAgY2FzZSAnYScg
OgogICAgcmV0dXJuIGlkID09IHNPbmFib3J0X2lkOwogIGNhc2UgJ2InIDoKICAgIHJldHVybiBp
ZCA9PSBzT25ibHVyX2lkOwogIGNhc2UgJ2UnIDoKICAgIHJldHVybiBpZCA9PSBzT25lcnJvcl9p
ZDsKICBjYXNlICdmJyA6CiAgICByZXR1cm4gaWQgPT0gc09uZm9jdXNfaWQ7CiAgY2FzZSAnYycg
OgogICAgcmV0dXJuICgoaWQgPT0gc09uY2hhbmdlX2lkKSB8fAogICAgICAgICAgICAoaWQgPT0g
c09uY2xpY2tfaWQpIHx8CiAgICAgICAgICAgIChpZCA9PSBzT25jb250ZXh0bWVudV9pZCkpOwog
IGNhc2UgJ2wnIDoKICAgIHJldHVybiBpZCA9PSBzT25sb2FkX2lkOwogIGNhc2UgJ3AnIDoKICAg
IHJldHVybiBpZCA9PSBzT25wYWludF9pZDsKICBjYXNlICdrJyA6CiAgICByZXR1cm4gKChpZCA9
PSBzT25rZXlkb3duX2lkKSB8fAogICAgICAgICAgICAoaWQgPT0gc09ua2V5cHJlc3NfaWQpIHx8
CiAgICAgICAgICAgIChpZCA9PSBzT25rZXl1cF9pZCkpOwogIGNhc2UgJ3UnIDoKICAgIHJldHVy
biBpZCA9PSBzT251bmxvYWRfaWQ7CiAgY2FzZSAnbScgOgogICAgcmV0dXJuICgoaWQgPT0gc09u
bW91c2Vtb3ZlX2lkKSB8fAogICAgICAgICAgICAoaWQgPT0gc09ubW91c2VvdXRfaWQpIHx8CiAg
ICAgICAgICAgIChpZCA9PSBzT25tb3VzZW92ZXJfaWQpIHx8CiAgICAgICAgICAgIChpZCA9PSBz
T25tb3VzZXVwX2lkKSB8fAogICAgICAgICAgICAoaWQgPT0gc09ubW91c2Vkb3duX2lkKSk7CiAg
Y2FzZSAncicgOgogICAgcmV0dXJuICgoaWQgPT0gc09ucmVzZXRfaWQpIHx8CiAgICAgICAgICAg
IChpZCA9PSBzT25yZXNpemVfaWQpKTsKICBjYXNlICdzJyA6CiAgICByZXR1cm4gKChpZCA9PSBz
T25zY3JvbGxfaWQpIHx8CiAgICAgICAgICAgIChpZCA9PSBzT25zZWxlY3RfaWQpIHx8CiAgICAg
ICAgICAgIChpZCA9PSBzT25zdWJtaXRfaWQpKTsKICB9CgogIHJldHVybiAwOwp9Cgpuc3Jlc3Vs
dApuc0V2ZW50UmVjaWV2ZXJTSDo6UmVnaXN0ZXJDb21waWxlSGFuZGxlcihuc0lYUENvbm5lY3RX
cmFwcGVkTmF0aXZlICp3cmFwcGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqc3ZhbCBpZCwgUFJCb29sIGNvbXBpbGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCAqZGlkX2NvbXBpbGUpCnsK
ICAqZGlkX2NvbXBpbGUgPSAwOwoKICBpZiAoIUlzRXZlbnROYW1lKGlkKSkgewogICAgcmV0dXJu
IDA7CiAgfQoKICBuc0NPTVB0cjxuc0lTY3JpcHRDb250ZXh0PiBzY3JpcHRfY3g7CiAgbnNyZXN1
bHQgcnYgPSBuc0pTVXRpbHM6OkdldFN0YXRpY1NjcmlwdENvbnRleHQoY3gsIG9iaiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR0ZXJfQWRkUmVm
cyhzY3JpcHRfY3gpKTsKICBkbyB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7IDsg
cmV0dXJuIHJ2OyB9IH0gd2hpbGUgKDApOwoKICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4gbmF0aXZl
OwogIHdyYXBwZXItPkdldE5hdGl2ZShnZXR0ZXJfQWRkUmVmcyhuYXRpdmUpKTsKICA7CgogIG5z
Q09NUHRyPG5zSURPTUV2ZW50UmVjZWl2ZXI+IHJlY2VpdmVyKGRvX1F1ZXJ5SW50ZXJmYWNlKG5h
dGl2ZSkpOwogIGRvIHsgaWYgKCEocmVjZWl2ZXIpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4
ODAwMGZmZmZMKTsgfSB9IHdoaWxlICgwKTsKCiAgbnNDT01QdHI8bnNJRXZlbnRMaXN0ZW5lck1h
bmFnZXI+IG1hbmFnZXI7CgogIHJlY2VpdmVyLT5HZXRMaXN0ZW5lck1hbmFnZXIoZ2V0dGVyX0Fk
ZFJlZnMobWFuYWdlcikpOwogIGRvIHsgaWYgKCEobWFuYWdlcikpIHsgOyByZXR1cm4gKChuc3Jl
c3VsdCkgMHg4MDAwZmZmZkwpOyB9IH0gd2hpbGUgKDApOwoKICBKU1N0cmluZyAqc3RyID0gKChK
U1N0cmluZyAqKSgodm9pZCAqKSgoaWQpICYgfihqc3ZhbCkoKChKU1VpbnQzMikxIDw8ICgzKSkg
LSAxKSkpKTsKICBjb25zdCBQUlVuaWNoYXIgKnVzdHIgPSByZWludGVycHJldF9jYXN0PCBjb25z
dCBQUlVuaWNoYXIgKiA+KDo6SlNfR2V0U3RyaW5nQ2hhcnMoc3RyKSk7CgoKICBuc0NPTVB0cjxu
c0lBdG9tPiBhdG9tKGdldHRlcl9BZGRSZWZzKE5TX05ld0F0b20odXN0cikpKTsKICBkbyB7IGlm
ICghKGF0b20pKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfSB9IHdoaWxl
ICgwKTsKCiAgaWYgKGNvbXBpbGUpIHsKICAgIHJ2ID0gbWFuYWdlci0+Q29tcGlsZVNjcmlwdEV2
ZW50TGlzdGVuZXIoc2NyaXB0X2N4LCBuYXRpdmUsIGF0b20sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRpZF9jb21waWxlKTsKICB9IGVsc2UgewogICAgcnYg
PSBtYW5hZ2VyLT5SZWdpc3RlclNjcmlwdEV2ZW50TGlzdGVuZXIoc2NyaXB0X2N4LCBuYXRpdmUs
IGF0b20pOwogIH0KCiAgcmV0dXJuIHJ2Owp9Cgpuc3Jlc3VsdApuc0V2ZW50UmVjaWV2ZXJTSDo6
TmV3UmVzb2x2ZShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBqc3ZhbCBp
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJVaW50MzIgZmxhZ3MsIEpTT2JqZWN0
ICoqb2JqcCwgUFJCb29sICpfcmV0dmFsKQp7CiAgaWYgKCEoKChpZCkgJiAoKChKU1VpbnQzMikx
IDw8ICgzKSkgLSAxKSkgPT0gMHg0KSkgewogICAgcmV0dXJuIDA7CiAgfQoKICBQUkJvb2wgZGlk
X2NvbXBpbGUgPSAwOwoKICBuc3Jlc3VsdCBydiA9IFJlZ2lzdGVyQ29tcGlsZUhhbmRsZXIod3Jh
cHBlciwgY3gsIG9iaiwgaWQsIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZkaWRfY29tcGlsZSk7CiAgZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkg
eyA7IHJldHVybiBydjsgfSB9IHdoaWxlICgwKTsKCiAgaWYgKGRpZF9jb21waWxlKSB7CiAgICAq
b2JqcCA9IG9iajsKICB9CgogIHJldHVybiBuc0RPTUNsYXNzSW5mbzo6TmV3UmVzb2x2ZSh3cmFw
cGVyLCBjeCwgb2JqLCBpZCwgZmxhZ3MsIG9ianAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9yZXR2YWwpOwp9Cgpuc3Jlc3VsdApuc0V2ZW50UmVjaWV2ZXJTSDo6U2V0UHJv
cGVydHkobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganN2YWwgKnZwLCBQUkJvb2wgKl9yZXR2YWwp
CnsKICBpZiAoOjpKU19UeXBlT2ZWYWx1ZShjeCwgKnZwKSAhPSBKU1RZUEVfRlVOQ1RJT04gfHwg
ISgoKGlkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7CiAgICByZXR1
cm4gMDsKICB9CgogIFBSQm9vbCBkaWRfY29tcGlsZTsKCiAgcmV0dXJuIFJlZ2lzdGVyQ29tcGls
ZUhhbmRsZXIod3JhcHBlciwgY3gsIG9iaiwgaWQsIDAsICZkaWRfY29tcGlsZSk7Cn0KIyA0NTA3
ICJuc0RPTUNsYXNzSW5mby5jcHAiCm5zcmVzdWx0Cm5zRWxlbWVudFNIOjpQb3N0Q3JlYXRlKG5z
SVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAg
ICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpvYmopCnsKICBuc3Jlc3VsdCBydiA9IG5zTm9kZVNI
OjpQb3N0Q3JlYXRlKHdyYXBwZXIsIGN4LCBvYmopOwogIGRvIHsgaWYgKCEoKCEoKHJ2KSAmIDB4
ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7CgogIG5zQ09NUHRyPG5z
SVN1cHBvcnRzPiBuYXRpdmU7CgogIHdyYXBwZXItPkdldE5hdGl2ZShnZXR0ZXJfQWRkUmVmcyhu
YXRpdmUpKTsKCiAgbnNDT01QdHI8bnNJQ29udGVudD4gY29udGVudChkb19RdWVyeUludGVyZmFj
ZShuYXRpdmUpKTsKICBkbyB7IGlmICghKGNvbnRlbnQpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQp
IDB4ODAwMGZmZmZMKTsgfSB9IHdoaWxlICgwKTsKCiAgbnNDT01QdHI8bnNJRG9jdW1lbnQ+IGRv
YzsKCiAgY29udGVudC0+R2V0RG9jdW1lbnQoKmdldHRlcl9BZGRSZWZzKGRvYykpOwoKICBpZiAo
IWRvYykgewoKCgogICAgcmV0dXJuIDA7CiAgfQoKCiAgbnNDT01QdHI8bnNJUHJlc1NoZWxsPiBz
aGVsbDsKICBkb2MtPkdldFNoZWxsQXQoMCwgZ2V0dGVyX0FkZFJlZnMoc2hlbGwpKTsKCiAgaWYg
KCFzaGVsbCkgewogICAgcmV0dXJuIDA7CiAgfQoKICBuc0lGcmFtZSogZnJhbWUgPSAwOwogIHNo
ZWxsLT5HZXRQcmltYXJ5RnJhbWVGb3IoY29udGVudCwgJmZyYW1lKTsKCiAgaWYgKGZyYW1lKSB7
CgoKICAgIHJldHVybiAwOwogIH0KCgoKCiAgbnNDT01QdHI8bnNJQmluZGluZ01hbmFnZXI+IGJp
bmRpbmdNYW5hZ2VyOwogIGRvYy0+R2V0QmluZGluZ01hbmFnZXIoZ2V0dGVyX0FkZFJlZnMoYmlu
ZGluZ01hbmFnZXIpKTsKICBkbyB7IGlmICghKGJpbmRpbmdNYW5hZ2VyKSkgeyA7IHJldHVybiAo
KG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7CgogIG5zQ09NUHRyPG5zSVhC
TEJpbmRpbmc+IGJpbmRpbmc7CiAgYmluZGluZ01hbmFnZXItPkdldEJpbmRpbmcoY29udGVudCwg
Z2V0dGVyX0FkZFJlZnMoYmluZGluZykpOwoKICBpZiAoYmluZGluZykgewoKCgogICAgcmV0dXJu
IDA7CiAgfQoKCiAgbnNDT01QdHI8bnNJUHJlc0NvbnRleHQ+IHBjdHg7CiAgc2hlbGwtPkdldFBy
ZXNDb250ZXh0KGdldHRlcl9BZGRSZWZzKHBjdHgpKTsKICBkbyB7IGlmICghKHBjdHgpKSB7IDsg
cmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsgfSB9IHdoaWxlICgwKTsKCgoKCgogIG5z
QXV0b1N0cmluZyBiaW5kaW5nVVJMOwogIHBjdHgtPkdldFhCTEJpbmRpbmdVUkwoY29udGVudCwg
YmluZGluZ1VSTCk7CiAgaWYgKGJpbmRpbmdVUkwuSXNFbXB0eSgpKSB7CgogICAgcmV0dXJuIDA7
CiAgfQoKCiAgUFJCb29sIGR1bW15OwoKICBuc0NPTVB0cjxuc0lYQkxTZXJ2aWNlPiB4YmxTZXJ2
aWNlKGRvX0dldFNlcnZpY2UoIkBtb3ppbGxhLm9yZy94Ymw7MSIpKTsKICBkbyB7IGlmICghKHhi
bFNlcnZpY2UpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNDAxMTFMKTsgfSB9IHdoaWxl
ICgwKTsKCiAgeGJsU2VydmljZS0+TG9hZEJpbmRpbmdzKGNvbnRlbnQsIGJpbmRpbmdVUkwsIDAs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHRlcl9BZGRSZWZzKGJpbmRpbmcpLCAmZHVt
bXkpOwoKICBpZiAoYmluZGluZykgewogICAgYmluZGluZy0+RXhlY3V0ZUF0dGFjaGVkSGFuZGxl
cigpOwogIH0KCiAgcmV0dXJuIDA7Cn0KCgoKCm5zcmVzdWx0Cm5zQXJyYXlTSDo6R2V0SXRlbUF0
KG5zSVN1cHBvcnRzICphTmF0aXZlLCBQUlVpbnQzMiBhSW5kZXgsCiAgICAgICAgICAgICAgICAg
ICAgIG5zSVN1cHBvcnRzICoqYVJlc3VsdCkKewogIG5zQ09NUHRyPG5zSURPTU5vZGVMaXN0PiBs
aXN0KGRvX1F1ZXJ5SW50ZXJmYWNlKGFOYXRpdmUpKTsKICBkbyB7IGlmICghKGxpc3QpKSB7IDsg
cmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsgfSB9IHdoaWxlICgwKTsKCiAgbnNJRE9N
Tm9kZSAqbm9kZSA9IDA7CiAgbnNyZXN1bHQgcnYgPSBsaXN0LT5JdGVtKGFJbmRleCwgJm5vZGUp
OwoKICAqYVJlc3VsdCA9IG5vZGU7CgogIHJldHVybiBydjsKfQoKbnNyZXN1bHQKbnNBcnJheVNI
OjpHZXRQcm9wZXJ0eShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRl
eHQgKmN4LAogICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLCBq
c3ZhbCAqdnAsIFBSQm9vbCAqX3JldHZhbCkKewogIFBSQm9vbCBpc19udW1iZXIgPSAwOwogIGlu
dDMyIG4gPSBHZXRBcnJheUluZGV4RnJvbUlkKGN4LCBpZCwgJmlzX251bWJlcik7CgogIGlmIChp
c19udW1iZXIpIHsKICAgIGlmIChuIDwgMCkgewogICAgICByZXR1cm4gKChuc3Jlc3VsdCkgKCgo
UFJVaW50MzIpKDEpPDwzMSkgfCAoKFBSVWludDMyKSgxNCArMHg0NSk8PDE2KSB8ICgoUFJVaW50
MzIpKDEpKSkgKTsKICAgIH0KCiAgICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4gbmF0aXZlOwogICAg
d3JhcHBlci0+R2V0TmF0aXZlKGdldHRlcl9BZGRSZWZzKG5hdGl2ZSkpOwoKICAgIG5zQ09NUHRy
PG5zSVN1cHBvcnRzPiBhcnJheV9pdGVtOwoKICAgIG5zcmVzdWx0IHJ2ID0gR2V0SXRlbUF0KG5h
dGl2ZSwgbiwgZ2V0dGVyX0FkZFJlZnMoYXJyYXlfaXRlbSkpOwogICAgZG8geyBpZiAoISgoISgo
cnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsgfSB9IHdoaWxlICgwKTsKCiAgICBp
ZiAoYXJyYXlfaXRlbSkgewogICAgICBydiA9IFdyYXBOYXRpdmUoY3gsIDo6SlNfR2V0R2xvYmFs
T2JqZWN0KGN4KSwgYXJyYXlfaXRlbSwKICAgICAgICAgICAgICAgICAgICAgIG5zQ09NVHlwZUlu
Zm88bnNJU3VwcG9ydHM+OjpHZXRJSUQoKSwgdnApOwogICAgICBkbyB7IGlmICghKCghKChydikg
JiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0dXJuIHJ2OyB9IH0gd2hpbGUgKDApOwogICAgfQogIH0K
CiAgcmV0dXJuIDA7Cn0KCgoKCm5zcmVzdWx0Cm5zTmFtZWRBcnJheVNIOjpHZXRQcm9wZXJ0eShu
c0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsIGpzdmFsICp2cCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCAqX3JldHZhbCkKewogIGlmICgoKChp
ZCkgJiAoKChKU1VpbnQzMikxIDw8ICgzKSkgLSAxKSkgPT0gMHg0KSkgewogICAgbnNDT01QdHI8
bnNJU3VwcG9ydHM+IG5hdGl2ZTsKICAgIHdyYXBwZXItPkdldE5hdGl2ZShnZXR0ZXJfQWRkUmVm
cyhuYXRpdmUpKTsKCiAgICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4gaXRlbTsKCiAgICBKU1N0cmlu
ZyAqc3RyID0gKChKU1N0cmluZyAqKSgodm9pZCAqKSgoaWQpICYgfihqc3ZhbCkoKChKU1VpbnQz
MikxIDw8ICgzKSkgLSAxKSkpKTsKICAgIG5zRGVwZW5kZW50U3RyaW5nIG5hbWUocmVpbnRlcnBy
ZXRfY2FzdDwgY29uc3QgUFJVbmljaGFyICogPig6OkpTX0dldFN0cmluZ0NoYXJzKHN0cikpLAoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpKU19HZXRTdHJpbmdMZW5ndGgoc3RyKSk7Cgog
ICAgbnNyZXN1bHQgcnYgPSBHZXROYW1lZEl0ZW0obmF0aXZlLCBuYW1lLCBnZXR0ZXJfQWRkUmVm
cyhpdGVtKSk7CiAgICBkbyB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0
dXJuIHJ2OyB9IH0gd2hpbGUgKDApOwoKICAgIGlmIChpdGVtKSB7CiAgICAgIHJ2ID0gV3JhcE5h
dGl2ZShjeCwgOjpKU19HZXRHbG9iYWxPYmplY3QoY3gpLCBpdGVtLAogICAgICAgICAgICAgICAg
ICAgICAgbnNDT01UeXBlSW5mbzxuc0lTdXBwb3J0cz46OkdldElJRCgpLCB2cCk7CiAgICAgIGRv
IHsgaWYgKCEoKCEoKHJ2KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGls
ZSAoMCk7CgogICAgICByZXR1cm4gMDsKICAgIH0KCiAgICByZXR1cm4gMDsKICB9CgogIHJldHVy
biBuc0FycmF5U0g6OkdldFByb3BlcnR5KHdyYXBwZXIsIGN4LCBvYmosIGlkLCB2cCwgX3JldHZh
bCk7Cn0KCgoKCm5zcmVzdWx0Cm5zTmFtZWROb2RlTWFwU0g6OkdldEl0ZW1BdChuc0lTdXBwb3J0
cyAqYU5hdGl2ZSwgUFJVaW50MzIgYUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnNJU3VwcG9ydHMgKiphUmVzdWx0KQp7CiAgbnNDT01QdHI8bnNJRE9NTmFtZWROb2RlTWFwPiBt
YXAoZG9fUXVlcnlJbnRlcmZhY2UoYU5hdGl2ZSkpOwogIGRvIHsgaWYgKCEobWFwKSkgeyA7IHJl
dHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7CgogIG5zSURPTU5v
ZGUgKm5vZGUgPSAwOwogIG5zcmVzdWx0IHJ2ID0gbWFwLT5JdGVtKGFJbmRleCwgJm5vZGUpOwoK
ICAqYVJlc3VsdCA9IG5vZGU7CgogIHJldHVybiBydjsKfQoKbnNyZXN1bHQKbnNOYW1lZE5vZGVN
YXBTSDo6R2V0TmFtZWRJdGVtKG5zSVN1cHBvcnRzICphTmF0aXZlLCBjb25zdCBuc0FTdHJpbmcm
IGFOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3VwcG9ydHMgKiphUmVz
dWx0KQp7CiAgbnNDT01QdHI8bnNJRE9NTmFtZWROb2RlTWFwPiBtYXAoZG9fUXVlcnlJbnRlcmZh
Y2UoYU5hdGl2ZSkpOwogIGRvIHsgaWYgKCEobWFwKSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAw
eDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7CgogIG5zSURPTU5vZGUgKm5vZGUgPSAwOwogIG5z
cmVzdWx0IHJ2ID0gbWFwLT5HZXROYW1lZEl0ZW0oYU5hbWUsICZub2RlKTsKCiAgKmFSZXN1bHQg
PSBub2RlOwoKICByZXR1cm4gcnY7Cn0KCgoKCm5zcmVzdWx0Cm5zSFRNTENvbGxlY3Rpb25TSDo6
R2V0SXRlbUF0KG5zSVN1cHBvcnRzICphTmF0aXZlLCBQUlVpbnQzMiBhSW5kZXgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzICoqYVJlc3VsdCkKewogIG5zQ09NUHRy
PG5zSURPTUhUTUxDb2xsZWN0aW9uPiBjb2xsZWN0aW9uKGRvX1F1ZXJ5SW50ZXJmYWNlKGFOYXRp
dmUpKTsKICBkbyB7IGlmICghKGNvbGxlY3Rpb24pKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4
ODAwMGZmZmZMKTsgfSB9IHdoaWxlICgwKTsKCiAgbnNJRE9NTm9kZSAqbm9kZSA9IDA7CiAgbnNy
ZXN1bHQgcnYgPSBjb2xsZWN0aW9uLT5JdGVtKGFJbmRleCwgJm5vZGUpOwoKICAqYVJlc3VsdCA9
IG5vZGU7CgogIHJldHVybiBydjsKfQoKbnNyZXN1bHQKbnNIVE1MQ29sbGVjdGlvblNIOjpHZXRO
YW1lZEl0ZW0obnNJU3VwcG9ydHMgKmFOYXRpdmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IG5zQVN0cmluZyYgYU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5zSVN1cHBvcnRzICoqYVJlc3VsdCkKewogIG5zQ09NUHRyPG5zSURPTUhUTUxDb2xs
ZWN0aW9uPiBjb2xsZWN0aW9uKGRvX1F1ZXJ5SW50ZXJmYWNlKGFOYXRpdmUpKTsKICBkbyB7IGlm
ICghKGNvbGxlY3Rpb24pKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsgfSB9
IHdoaWxlICgwKTsKCiAgbnNJRE9NTm9kZSAqbm9kZSA9IDA7CiAgbnNyZXN1bHQgcnYgPSBjb2xs
ZWN0aW9uLT5OYW1lZEl0ZW0oYU5hbWUsICZub2RlKTsKCiAgKmFSZXN1bHQgPSBub2RlOwoKICBy
ZXR1cm4gcnY7Cn0KCgoKbnNyZXN1bHQKbnNDb250ZW50TGlzdFNIOjpQcmVDcmVhdGUobnNJU3Vw
cG9ydHMgKm5hdGl2ZU9iaiwgSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSlNPYmplY3QgKmdsb2JhbE9iaiwgSlNPYmplY3QgKipwYXJlbnRPYmopCnsKICBuc0NPTVB0
cjxuc0lDb250ZW50TGlzdD4gY29udGVudExpc3QoZG9fUXVlcnlJbnRlcmZhY2UobmF0aXZlT2Jq
KSk7CiAgOwoKICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4gbmF0aXZlX3BhcmVudDsKICBjb250ZW50
TGlzdC0+R2V0UGFyZW50T2JqZWN0KGdldHRlcl9BZGRSZWZzKG5hdGl2ZV9wYXJlbnQpKTsKCiAg
aWYgKCFuYXRpdmVfcGFyZW50KSB7CiAgICAqcGFyZW50T2JqID0gZ2xvYmFsT2JqOwogICAgcmV0
dXJuIDA7CiAgfQoKICBqc3ZhbCB2OwogIG5zcmVzdWx0IHJ2ID0gV3JhcE5hdGl2ZShjeCwgOjpK
U19HZXRHbG9iYWxPYmplY3QoY3gpLCBuYXRpdmVfcGFyZW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICBuc0NPTVR5cGVJbmZvPG5zSVN1cHBvcnRzPjo6R2V0SUlEKCksICZ2KTsKCiAgKnBh
cmVudE9iaiA9ICgoSlNPYmplY3QgKikoKHZvaWQgKikoKHYpICYgfihqc3ZhbCkoKChKU1VpbnQz
MikxIDw8ICgzKSkgLSAxKSkpKTsKCiAgcmV0dXJuIHJ2Owp9CgoKCm5zcmVzdWx0Cm5zRm9ybUNv
bnRyb2xMaXN0U0g6OkdldE5hbWVkSXRlbShuc0lTdXBwb3J0cyAqYU5hdGl2ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5zQVN0cmluZyYgYU5hbWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdXBwb3J0cyAqKmFSZXN1bHQpCnsKICBuc0NP
TVB0cjxuc0lET01OU0hUTUxGb3JtQ29udHJvbExpc3Q+IGxpc3QoZG9fUXVlcnlJbnRlcmZhY2Uo
YU5hdGl2ZSkpOwogIGRvIHsgaWYgKCEobGlzdCkpIHsgOyByZXR1cm4gKChuc3Jlc3VsdCkgMHg4
MDAwZmZmZkwpOyB9IH0gd2hpbGUgKDApOwoKICByZXR1cm4gbGlzdC0+TmFtZWRJdGVtKGFOYW1l
LCBhUmVzdWx0KTsKfQoKCgpzdGF0aWMgaW5saW5lIFBSQm9vbApkb2N1bWVudE5lZWRzU2VjdXJp
dHlDaGVjayhKU0NvbnRleHQgKmN4LCBuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVy
KQp7CgogIEpTT2JqZWN0ICp3cmFwcGVyX29iaiA9IDA7CiAgd3JhcHBlci0+R2V0SlNPYmplY3Qo
JndyYXBwZXJfb2JqKTsKCiAgSlNPYmplY3QgKndyYXBwZXJfZ2xvYmFsID0gR2V0R2xvYmFsSlNP
YmplY3QoY3gsIHdyYXBwZXJfb2JqKTsKIyA0ODA5ICJuc0RPTUNsYXNzSW5mby5jcHAiCiAgaWYg
KHdyYXBwZXJfZ2xvYmFsICE9IDo6SlNfR2V0R2xvYmFsT2JqZWN0KGN4KSkgewoKCgogICAgcmV0
dXJuIDE7CiAgfQoKCgoKCgoKICBKU09iamVjdCAqZnVuY3Rpb25fb2JqID0gMDsKICBKU1N0YWNr
RnJhbWUgKmZwID0gMDsKCiAgZG8gewogICAgZnAgPSA6OkpTX0ZyYW1lSXRlcmF0b3IoY3gsICZm
cCk7CgogICAgaWYgKCFmcCkgewogICAgICBpZiAoIWZ1bmN0aW9uX29iaikgewoKCgoKCiAgICAg
ICAgcmV0dXJuIDA7CiAgICAgIH0KCiAgICAgIGJyZWFrOwogICAgfQoKICAgIGZ1bmN0aW9uX29i
aiA9IDo6SlNfR2V0RnJhbWVGdW5jdGlvbk9iamVjdChjeCwgZnApOwogIH0gd2hpbGUgKCFmdW5j
dGlvbl9vYmopOwoKCiAgSlNPYmplY3QgKmZ1bmN0aW9uX2dsb2JhbCA9IEdldEdsb2JhbEpTT2Jq
ZWN0KGN4LCBmdW5jdGlvbl9vYmopOwoKICBpZiAoZnVuY3Rpb25fZ2xvYmFsICE9IHdyYXBwZXJf
Z2xvYmFsKSB7CgoKCgogICAgcmV0dXJuIDE7CiAgfQoKCgoKCiAgcmV0dXJuIDA7Cn0KCm5zcmVz
dWx0Cm5zRG9jdW1lbnRTSDo6QWRkUHJvcGVydHkobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAq
d3JhcHBlciwgSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVj
dCAqb2JqLCBqc3ZhbCBpZCwganN2YWwgKnZwLAogICAgICAgICAgICAgICAgICAgICAgICAgIFBS
Qm9vbCAqX3JldHZhbCkKewoKCiAgaWYgKCFzRG9TZWN1cml0eUNoZWNrSW5BZGRQcm9wZXJ0eSkg
ewogICAgcmV0dXJuIDA7CiAgfQoKICBpZiAoaWQgPT0gc0xvY2F0aW9uX2lkKSB7CgoKCiAgICBy
ZXR1cm4gKChuc3Jlc3VsdCkgKCgoUFJVaW50MzIpKDEpPDwzMSkgfCAoKFBSVWludDMyKSgxNCAr
MHg0NSk8PDE2KSB8ICgoUFJVaW50MzIpKDEwMDApKSkgKTsKICB9CgogIHJldHVybiAwOwp9Cgpu
c3Jlc3VsdApuc0RvY3VtZW50U0g6OkRlbFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBwZWROYXRp
dmUgKndyYXBwZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgSlNP
YmplY3QgKm9iaiwganN2YWwgaWQsIGpzdmFsICp2cCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUkJvb2wgKl9yZXR2YWwpCnsKICBpZiAoaWQgPT0gc0xvY2F0aW9uX2lkKSB7CgoKCiAgICBy
ZXR1cm4gKChuc3Jlc3VsdCkgKCgoUFJVaW50MzIpKDEpPDwzMSkgfCAoKFBSVWludDMyKSgxNCAr
MHg0NSk8PDE2KSB8ICgoUFJVaW50MzIpKDEwMDApKSkgKTsKICB9CgogIHJldHVybiAwOwp9Cgpu
c3Jlc3VsdApuc0RvY3VtZW50U0g6Ok5ld1Jlc29sdmUobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2
ZSAqd3JhcHBlciwgSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgICAgIEpTT2Jq
ZWN0ICpvYmosIGpzdmFsIGlkLCBQUlVpbnQzMiBmbGFncywKICAgICAgICAgICAgICAgICAgICAg
ICAgIEpTT2JqZWN0ICoqb2JqcCwgUFJCb29sICpfcmV0dmFsKQp7CiAgaWYgKGlkID09IHNMb2Nh
dGlvbl9pZCkgewoKCgoKCiAgICBKU1N0cmluZyAqc3RyID0gKChKU1N0cmluZyAqKSgodm9pZCAq
KSgoaWQpICYgfihqc3ZhbCkoKChKU1VpbnQzMikxIDw8ICgzKSkgLSAxKSkpKTsKICAgIG5zQ09N
UHRyPG5zSVN1cHBvcnRzPiBuYXRpdmU7CiAgICB3cmFwcGVyLT5HZXROYXRpdmUoZ2V0dGVyX0Fk
ZFJlZnMobmF0aXZlKSk7CiAgICBkbyB7IGlmICghKG5hdGl2ZSkpIHsgOyByZXR1cm4gKChuc3Jl
c3VsdCkgMHg4MDAwZmZmZkwpOyB9IH0gd2hpbGUgKDApOwoKICAgIG5zQ09NUHRyPG5zSURPTU5T
RG9jdW1lbnQ+IGRvYyhkb19RdWVyeUludGVyZmFjZShuYXRpdmUpKTsKICAgIGRvIHsgaWYgKCEo
ZG9jKSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7
CgogICAgbnNDT01QdHI8bnNJRE9NTG9jYXRpb24+IGxvY2F0aW9uOwogICAgbnNyZXN1bHQgcnYg
PSBkb2MtPkdldExvY2F0aW9uKGdldHRlcl9BZGRSZWZzKGxvY2F0aW9uKSk7CiAgICBkbyB7IGlm
ICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0dXJuIHJ2OyB9IH0gd2hpbGUgKDAp
OwoKICAgIGpzdmFsIHY7CgogICAgcnYgPSBXcmFwTmF0aXZlKGN4LCBvYmosIGxvY2F0aW9uLCBu
c0NPTVR5cGVJbmZvPG5zSURPTUxvY2F0aW9uPjo6R2V0SUlEKCksICZ2KTsKICAgIGRvIHsgaWYg
KCEoKCEoKHJ2KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7
CgogICAgc0RvU2VjdXJpdHlDaGVja0luQWRkUHJvcGVydHkgPSAwOwoKICAgIEpTQm9vbCBvayA9
IDo6SlNfRGVmaW5lVUNQcm9wZXJ0eShjeCwgb2JqLCA6OkpTX0dldFN0cmluZ0NoYXJzKHN0ciks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpKU19HZXRTdHJpbmdMZW5n
dGgoc3RyKSwgdiwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAw
KTsKCiAgICBzRG9TZWN1cml0eUNoZWNrSW5BZGRQcm9wZXJ0eSA9IDE7CgogICAgaWYgKCFvaykg
ewogICAgICByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAwNDAwNUwpOwogICAgfQoKICAgICpvYmpw
ID0gb2JqOwoKICAgIHJldHVybiAwOwogIH0KCiAgcmV0dXJuIG5zTm9kZVNIOjpOZXdSZXNvbHZl
KHdyYXBwZXIsIGN4LCBvYmosIGlkLCBmbGFncywgb2JqcCwgX3JldHZhbCk7Cn0KCm5zcmVzdWx0
Cm5zRG9jdW1lbnRTSDo6R2V0UHJvcGVydHkobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3Jh
cHBlciwgSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAq
b2JqLCBqc3ZhbCBpZCwganN2YWwgKnZwLCBQUkJvb2wgKl9yZXR2YWwpCnsKICBpZiAoZG9jdW1l
bnROZWVkc1NlY3VyaXR5Q2hlY2soY3gsIHdyYXBwZXIpKSB7CiAgICBuc3Jlc3VsdCBydiA9CiAg
ICAgIGRvQ2hlY2tQcm9wZXJ0eUFjY2VzcyhjeCwgb2JqLCBpZCwgd3JhcHBlciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5zSVhQQ1NlY3VyaXR5TWFuYWdlcjo6QUNDRVNTX0dFVF9QUk9Q
RVJUWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwoKICAgIGlmICgoKHJ2KSAmIDB4
ODAwMDAwMDApKSB7CgoKCiAgICAgICpfcmV0dmFsID0gMDsKCiAgICAgICp2cCA9ICgoanN2YWwp
KDApKTsKICAgIH0KICB9CgogIHJldHVybiAwOwp9Cgpuc3Jlc3VsdApuc0RvY3VtZW50U0g6OlNl
dFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAq
Y3gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsIGpz
dmFsICp2cCwgUFJCb29sICpfcmV0dmFsKQp7CiAgaWYgKGRvY3VtZW50TmVlZHNTZWN1cml0eUNo
ZWNrKGN4LCB3cmFwcGVyKSkgewogICAgbnNyZXN1bHQgcnYgPQogICAgICBkb0NoZWNrUHJvcGVy
dHlBY2Nlc3MoY3gsIG9iaiwgaWQsIHdyYXBwZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuc0lYUENTZWN1cml0eU1hbmFnZXI6OkFDQ0VTU19TRVRfUFJPUEVSVFksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwKTsKCiAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgewoKCgog
ICAgICAqX3JldHZhbCA9IDA7CgogICAgICByZXR1cm4gMDsKICAgIH0KICB9CgogIGlmIChpZCA9
PSBzTG9jYXRpb25faWQpIHsKICAgIG5zQ09NUHRyPG5zSVN1cHBvcnRzPiBuYXRpdmU7CiAgICB3
cmFwcGVyLT5HZXROYXRpdmUoZ2V0dGVyX0FkZFJlZnMobmF0aXZlKSk7CiAgICBkbyB7IGlmICgh
KG5hdGl2ZSkpIHsgOyByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwpOyB9IH0gd2hpbGUg
KDApOwoKICAgIG5zQ09NUHRyPG5zSURPTU5TRG9jdW1lbnQ+IGRvYyhkb19RdWVyeUludGVyZmFj
ZShuYXRpdmUpKTsKICAgIGRvIHsgaWYgKCEoZG9jKSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAw
eDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7CgogICAgbnNDT01QdHI8bnNJRE9NTG9jYXRpb24+
IGxvY2F0aW9uOwoKICAgIG5zcmVzdWx0IHJ2ID0gZG9jLT5HZXRMb2NhdGlvbihnZXR0ZXJfQWRk
UmVmcyhsb2NhdGlvbikpOwogICAgZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkg
eyA7IHJldHVybiBydjsgfSB9IHdoaWxlICgwKTsKCiAgICBpZiAobG9jYXRpb24pIHsKICAgICAg
SlNTdHJpbmcgKnZhbCA9IDo6SlNfVmFsdWVUb1N0cmluZyhjeCwgKnZwKTsKICAgICAgZG8geyBp
ZiAoISh2YWwpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsgfSB9IHdoaWxl
ICgwKTsKCiAgICAgIG5zRGVwZW5kZW50U3RyaW5nIGhyZWYocmVpbnRlcnByZXRfY2FzdDwgY29u
c3QgUFJVbmljaGFyICogPig6OkpTX0dldFN0cmluZ0NoYXJzKHZhbCkpLAoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6OkpTX0dldFN0cmluZ0xlbmd0aCh2YWwpKTsKCiAgICAgIG5zcmVz
dWx0IHJ2ID0gbG9jYXRpb24tPlNldEhyZWYoaHJlZik7CiAgICAgIGRvIHsgaWYgKCEoKCEoKHJ2
KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7CgogICAgICBy
ZXR1cm4gV3JhcE5hdGl2ZShjeCwgb2JqLCBsb2NhdGlvbiwgbnNDT01UeXBlSW5mbzxuc0lET01M
b2NhdGlvbj46OkdldElJRCgpLCB2cCk7CiAgICB9CiAgfQoKICByZXR1cm4gbnNOb2RlU0g6OlNl
dFByb3BlcnR5KHdyYXBwZXIsIGN4LCBvYmosIGlkLCB2cCwgX3JldHZhbCk7Cn0KCm5zcmVzdWx0
Cm5zRG9jdW1lbnRTSDo6R2V0RmxhZ3MoUFJVaW50MzIqIGFGbGFncykKewogICphRmxhZ3MgPSAo
bnNJQ2xhc3NJbmZvOjpNQUlOX1RIUkVBRF9PTkxZIHwgbnNJQ2xhc3NJbmZvOjpET01fT0JKRUNU
KTsKCiAgcmV0dXJuIDA7Cn0KCgoKCgpuc3Jlc3VsdApuc0hUTUxEb2N1bWVudFNIOjpSZXNvbHZl
SW1wbChKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lYUENv
bm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBqc3ZhbCBpZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnNJU3VwcG9ydHMgKipyZXN1bHQpCnsKICBuc0NPTVB0cjxuc0lTdXBwb3J0
cz4gbmF0aXZlOwoKICB3cmFwcGVyLT5HZXROYXRpdmUoZ2V0dGVyX0FkZFJlZnMobmF0aXZlKSk7
CiAgOwoKICBuc0NPTVB0cjxuc0lIVE1MRG9jdW1lbnQ+IGRvYyhkb19RdWVyeUludGVyZmFjZShu
YXRpdmUpKTsKICBkbyB7IGlmICghKGRvYykpIHsgOyByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAw
ZmZmZkwpOyB9IH0gd2hpbGUgKDApOwoKCgoKICBKU1N0cmluZyAqc3RyID0gSlNfVmFsdWVUb1N0
cmluZyhjeCwgaWQpOwoKICBjb25zdCBuc0RlcGVuZGVudFN0cmluZyBuYW1lKHJlaW50ZXJwcmV0
X2Nhc3Q8IGNvbnN0IFBSVW5pY2hhciAqID4oOjpKU19HZXRTdHJpbmdDaGFycyhzdHIpKSwKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OkpTX0dldFN0cmluZ0xlbmd0aChzdHIpKTsK
CiAgcmV0dXJuIGRvYy0+UmVzb2x2ZU5hbWUobmFtZSwgMCwgcmVzdWx0KTsKfQoKCkpTQm9vbApu
c0hUTUxEb2N1bWVudFNIOjpEb2N1bWVudE9wZW4oSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9i
aiwgdWludE4gYXJnYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzdmFsICphcmd2
LCBqc3ZhbCAqcnZhbCkKewogIGlmIChhcmdjID4gMikgewogICAgSlNPYmplY3QgKmdsb2JhbCA9
IEdldEdsb2JhbEpTT2JqZWN0KGN4LCBvYmopOwoKCgoKICAgIHJldHVybiA6OkpTX0NhbGxGdW5j
dGlvbk5hbWUoY3gsIGdsb2JhbCwgIm9wZW4iLCBhcmdjLCBhcmd2LCBydmFsKTsKICB9CgogIG5z
Q09NUHRyPG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmU+IHdyYXBwZXI7CgogIG5zcmVzdWx0IHJ2
ID0KICAgIHNYUENvbm5lY3QtPkdldFdyYXBwZWROYXRpdmVPZkpTT2JqZWN0KGN4LCBvYmosIGdl
dHRlcl9BZGRSZWZzKHdyYXBwZXIpKTsKICBkbyB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAw
KSkpKSB7IDsgcmV0dXJuIChKU0ludG4pMDsgfSB9IHdoaWxlICgwKTsKCiAgbnNDT01QdHI8bnNJ
U3VwcG9ydHM+IG5hdGl2ZTsKICBydiA9IHdyYXBwZXItPkdldE5hdGl2ZShnZXR0ZXJfQWRkUmVm
cyhuYXRpdmUpKTsKICBkbyB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0
dXJuIChKU0ludG4pMDsgfSB9IHdoaWxlICgwKTsKCiAgbnNDT01QdHI8bnNJRE9NTlNIVE1MRG9j
dW1lbnQ+IGRvYyhkb19RdWVyeUludGVyZmFjZShuYXRpdmUpKTsKICBkbyB7IGlmICghKGRvYykp
IHsgOyByZXR1cm4gKEpTSW50bikwOyB9IH0gd2hpbGUgKDApOwoKICBuc0NPTVB0cjxuc0lET01E
b2N1bWVudD4gcmV0dmFsOwoKICBydiA9IGRvYy0+T3BlbihnZXR0ZXJfQWRkUmVmcyhyZXR2YWwp
KTsKICBkbyB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0dXJuIDA7IH0g
fSB3aGlsZSAoMCk7CgogIHJ2ID0gV3JhcE5hdGl2ZShjeCwgOjpKU19HZXRHbG9iYWxPYmplY3Qo
Y3gpLCByZXR2YWwsCiAgICAgICAgICAgICAgICAgIG5zQ09NVHlwZUluZm88bnNJRE9NRG9jdW1l
bnQ+OjpHZXRJSUQoKSwgcnZhbCk7CiAgOwoKICByZXR1cm4gKCEoKHJ2KSAmIDB4ODAwMDAwMDAp
KTsKfQoKbnNyZXN1bHQKbnNIVE1MRG9jdW1lbnRTSDo6TmV3UmVzb2x2ZShuc0lYUENvbm5lY3RX
cmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLCBQUlVpbnQzMiBmbGFncywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqKm9ianAsIFBSQm9vbCAqX3JldHZhbCkK
ewogIGlmICghKGZsYWdzICYgMHgwMikpIHsKICAgIG5zQ09NUHRyPG5zSVN1cHBvcnRzPiByZXN1
bHQ7CgogICAgbnNyZXN1bHQgcnYgPSBSZXNvbHZlSW1wbChjeCwgd3JhcHBlciwgaWQsIGdldHRl
cl9BZGRSZWZzKHJlc3VsdCkpOwogICAgZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkp
KSkgeyA7IHJldHVybiBydjsgfSB9IHdoaWxlICgwKTsKCiAgICBpZiAocmVzdWx0KSB7CiAgICAg
IEpTU3RyaW5nICpzdHIgPSBKU19WYWx1ZVRvU3RyaW5nKGN4LCBpZCk7CgogICAgICBKU0Jvb2wg
b2sgPSAqX3JldHZhbCA9CiAgICAgICAgOjpKU19EZWZpbmVVQ1Byb3BlcnR5KGN4LCBvYmosIDo6
SlNfR2V0U3RyaW5nQ2hhcnMoc3RyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpK
U19HZXRTdHJpbmdMZW5ndGgoc3RyKSwgKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkp
IDw8IDEpIHwgMHgxKSwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCk7CiAg
ICAgICpvYmpwID0gb2JqOwoKICAgICAgcmV0dXJuIG9rID8gMCA6ICgobnNyZXN1bHQpIDB4ODAw
MDQwMDVMKTsKICAgIH0KCiAgICBpZiAoaWQgPT0gc09wZW5faWQpIHsKICAgICAgSlNTdHJpbmcg
KnN0ciA9ICgoSlNTdHJpbmcgKikoKHZvaWQgKikoKGlkKSAmIH4oanN2YWwpKCgoSlNVaW50MzIp
MSA8PCAoMykpIC0gMSkpKSk7CiAgICAgIEpTRnVuY3Rpb24gKmZuYyA9CiAgICAgICAgOjpKU19E
ZWZpbmVGdW5jdGlvbihjeCwgb2JqLCA6OkpTX0dldFN0cmluZ0J5dGVzKHN0ciksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEb2N1bWVudE9wZW4sIDAsIDB4MDEpOwoKICAgICAgKm9ianAg
PSBvYmo7CgogICAgICByZXR1cm4gZm5jID8gMCA6ICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsK
ICAgIH0KICB9CgogIHJldHVybiBuc0RvY3VtZW50U0g6Ok5ld1Jlc29sdmUod3JhcHBlciwgY3gs
IG9iaiwgaWQsIGZsYWdzLCBvYmpwLCBfcmV0dmFsKTsKfQoKbnNyZXN1bHQKbnNIVE1MRG9jdW1l
bnRTSDo6R2V0UHJvcGVydHkobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwg
anN2YWwgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzdmFsICp2cCwgUFJCb29s
ICpfcmV0dmFsKQp7CgoKICBuc3Jlc3VsdCBydiA9IG5zRG9jdW1lbnRTSDo6R2V0UHJvcGVydHko
d3JhcHBlciwgY3gsIG9iaiwgaWQsIHZwLCBfcmV0dmFsKTsKICBpZiAoISpfcmV0dmFsKSB7CiAg
ICByZXR1cm4gcnY7CiAgfQoKICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4gcmVzdWx0OwoKICBydiA9
IFJlc29sdmVJbXBsKGN4LCB3cmFwcGVyLCBpZCwgZ2V0dGVyX0FkZFJlZnMocmVzdWx0KSk7CiAg
ZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsgfSB9IHdo
aWxlICgwKTsKCiAgaWYgKHJlc3VsdCkgewogICAgcmV0dXJuIFdyYXBOYXRpdmUoY3gsIDo6SlNf
R2V0R2xvYmFsT2JqZWN0KGN4KSwgcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgbnNDT01U
eXBlSW5mbzxuc0lTdXBwb3J0cz46OkdldElJRCgpLCB2cCk7CiAgfQoKICByZXR1cm4gMDsKfQoK
CgoKSlNCb29sCm5zSFRNTEVsZW1lbnRTSDo6U2Nyb2xsSW50b1ZpZXcoSlNDb250ZXh0ICpjeCwg
SlNPYmplY3QgKm9iaiwgdWludE4gYXJnYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqc3ZhbCAqYXJndiwganN2YWwgKnJ2YWwpCnsKICBuc0NPTVB0cjxuc0lYUENvbm5lY3RXcmFw
cGVkTmF0aXZlPiB3cmFwcGVyOwoKICBuc3Jlc3VsdCBydiA9CiAgICBzWFBDb25uZWN0LT5HZXRX
cmFwcGVkTmF0aXZlT2ZKU09iamVjdChjeCwgb2JqLCBnZXR0ZXJfQWRkUmVmcyh3cmFwcGVyKSk7
CiAgZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiAoSlNJbnRu
KTA7IH0gfSB3aGlsZSAoMCk7CgogIG5zQ09NUHRyPG5zSVN1cHBvcnRzPiBuYXRpdmU7CiAgcnYg
PSB3cmFwcGVyLT5HZXROYXRpdmUoZ2V0dGVyX0FkZFJlZnMobmF0aXZlKSk7CiAgZG8geyBpZiAo
ISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiAoSlNJbnRuKTA7IH0gfSB3aGls
ZSAoMCk7CgogIG5zQ09NUHRyPG5zSURPTU5TSFRNTEVsZW1lbnQ+IGVsZW1lbnQoZG9fUXVlcnlJ
bnRlcmZhY2UobmF0aXZlKSk7CiAgZG8geyBpZiAoIShlbGVtZW50KSkgeyA7IHJldHVybiAoSlNJ
bnRuKTA7IH0gfSB3aGlsZSAoMCk7CgogIEpTQm9vbCB0b3AgPSAoSlNJbnRuKTE7CgogIGlmIChh
cmdjID4gMCkgewogICAgOjpKU19WYWx1ZVRvQm9vbGVhbihjeCwgYXJndlswXSwgJnRvcCk7CiAg
fQoKICBydiA9IGVsZW1lbnQtPlNjcm9sbEludG9WaWV3KHRvcCk7CgogICpydmFsID0gKCgoanN2
YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKCiAgcmV0dXJuICghKChy
dikgJiAweDgwMDAwMDAwKSk7Cn0KCm5zcmVzdWx0Cm5zSFRNTEVsZW1lbnRTSDo6TmV3UmVzb2x2
ZShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsIFBSVWludDMy
IGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKipvYmpwLCBQUkJv
b2wgKl9yZXR2YWwpCnsKICBpZiAoaWQgPT0gc1Njcm9sbEludG9WaWV3X2lkICYmICEoMHgwMiAm
IGZsYWdzKSkgewogICAgSlNTdHJpbmcgKnN0ciA9ICgoSlNTdHJpbmcgKikoKHZvaWQgKikoKGlk
KSAmIH4oanN2YWwpKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpKSk7CiAgICBKU0Z1bmN0aW9u
ICpjZm5jID0KICAgICAgOjpKU19EZWZpbmVGdW5jdGlvbihjeCwgb2JqLCA6OkpTX0dldFN0cmlu
Z0J5dGVzKHN0ciksIFNjcm9sbEludG9WaWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgIDAs
IDApOwoKICAgICpvYmpwID0gb2JqOwoKICAgIHJldHVybiBjZm5jID8gMCA6ICgobnNyZXN1bHQp
IDB4ODAwMGZmZmZMKTsKICB9CgogIHJldHVybiBuc0VsZW1lbnRTSDo6TmV3UmVzb2x2ZSh3cmFw
cGVyLCBjeCwgb2JqLCBpZCwgZmxhZ3MsIG9ianAsIF9yZXR2YWwpOwp9CgoKCgoKbnNyZXN1bHQK
bnNIVE1MRm9ybUVsZW1lbnRTSDo6RmluZE5hbWVkSXRlbShuc0lGb3JtICphRm9ybSwgSlNTdHJp
bmcgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdXBwb3J0cyAq
KmFSZXN1bHQpCnsKICAqYVJlc3VsdCA9IDA7CgogIG5zRGVwZW5kZW50U3RyaW5nIG5hbWUocmVp
bnRlcnByZXRfY2FzdDwgY29uc3QgUFJVbmljaGFyICogPig6OkpTX0dldFN0cmluZ0NoYXJzKHN0
cikpLAoKICAgICAgICAgICAgICAgICAgICAgICAgIDo6SlNfR2V0U3RyaW5nTGVuZ3RoKHN0cikp
OwoKICBhRm9ybS0+UmVzb2x2ZU5hbWUobmFtZSwgYVJlc3VsdCk7CgogIGlmICghKmFSZXN1bHQp
IHsKICAgIG5zQ09NUHRyPG5zSUNvbnRlbnQ+IGNvbnRlbnQoZG9fUXVlcnlJbnRlcmZhY2UoYUZv
cm0pKTsKICAgIG5zQ09NUHRyPG5zSURPTUhUTUxGb3JtRWxlbWVudD4gZm9ybV9lbGVtZW50KGRv
X1F1ZXJ5SW50ZXJmYWNlKGFGb3JtKSk7CgogICAgbnNDT01QdHI8bnNJRG9jdW1lbnQ+IGRvYzsK
ICAgIGNvbnRlbnQtPkdldERvY3VtZW50KCpnZXR0ZXJfQWRkUmVmcyhkb2MpKTsKCiAgICBuc0NP
TVB0cjxuc0lIVE1MRG9jdW1lbnQ+IGh0bWxfZG9jKGRvX1F1ZXJ5SW50ZXJmYWNlKGRvYykpOwoK
ICAgIGlmIChodG1sX2RvYyAmJiBmb3JtX2VsZW1lbnQpIHsKICAgICAgaHRtbF9kb2MtPlJlc29s
dmVOYW1lKG5hbWUsIGZvcm1fZWxlbWVudCwgYVJlc3VsdCk7CiAgICB9CiAgfQoKICByZXR1cm4g
MDsKfQoKbnNyZXN1bHQKbnNIVE1MRm9ybUVsZW1lbnRTSDo6TmV3UmVzb2x2ZShuc0lYUENvbm5l
Y3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBSVWludDMyIGZsYWdzLCBKU09iamVjdCAqKm9ianAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUFJCb29sICpfcmV0dmFsKQp7CiAgaWYgKCghKDB4MDIg
JiBmbGFncykpICYmICgoKGlkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQp
KSB7CiAgICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4gbmF0aXZlOwoKICAgIHdyYXBwZXItPkdldE5h
dGl2ZShnZXR0ZXJfQWRkUmVmcyhuYXRpdmUpKTsKICAgIDsKCiAgICBuc0NPTVB0cjxuc0lGb3Jt
PiBmb3JtKGRvX1F1ZXJ5SW50ZXJmYWNlKG5hdGl2ZSkpOwogICAgbnNDT01QdHI8bnNJU3VwcG9y
dHM+IHJlc3VsdDsKCiAgICBKU1N0cmluZyAqc3RyID0gKChKU1N0cmluZyAqKSgodm9pZCAqKSgo
aWQpICYgfihqc3ZhbCkoKChKU1VpbnQzMikxIDw8ICgzKSkgLSAxKSkpKTsKICAgIEZpbmROYW1l
ZEl0ZW0oZm9ybSwgc3RyLCBnZXR0ZXJfQWRkUmVmcyhyZXN1bHQpKTsKCiAgICBpZiAocmVzdWx0
KSB7CiAgICAgICpfcmV0dmFsID0gOjpKU19EZWZpbmVVQ1Byb3BlcnR5KGN4LCBvYmosIDo6SlNf
R2V0U3RyaW5nQ2hhcnMoc3RyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOjpKU19HZXRTdHJpbmdMZW5ndGgoc3RyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgx
KSwgMCwgMCwgMCk7CgogICAgICAqb2JqcCA9IG9iajsKCiAgICAgIHJldHVybiAqX3JldHZhbCA/
IDAgOiAoKG5zcmVzdWx0KSAweDgwMDA0MDA1TCk7CiAgICB9CiAgfQoKICByZXR1cm4gbnNIVE1M
RWxlbWVudFNIOjpOZXdSZXNvbHZlKHdyYXBwZXIsIGN4LCBvYmosIGlkLCBmbGFncywgb2JqcCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9yZXR2YWwpOwp9CgoKbnNyZXN1
bHQKbnNIVE1MRm9ybUVsZW1lbnRTSDo6R2V0UHJvcGVydHkobnNJWFBDb25uZWN0V3JhcHBlZE5h
dGl2ZSAqd3JhcHBlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNDb250ZXh0
ICpjeCwgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGpzdmFsICp2cCwgUFJCb29sICpfcmV0dmFsKQp7CiAgbnNDT01QdHI8bnNJU3VwcG9y
dHM+IG5hdGl2ZTsKCiAgd3JhcHBlci0+R2V0TmF0aXZlKGdldHRlcl9BZGRSZWZzKG5hdGl2ZSkp
OwogIDsKCiAgbnNDT01QdHI8bnNJRm9ybT4gZm9ybShkb19RdWVyeUludGVyZmFjZShuYXRpdmUp
KTsKCiAgaWYgKCgoKGlkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7
CiAgICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4gcmVzdWx0OwoKICAgIEpTU3RyaW5nICpzdHIgPSAo
KEpTU3RyaW5nICopKCh2b2lkICopKChpZCkgJiB+KGpzdmFsKSgoKEpTVWludDMyKTEgPDwgKDMp
KSAtIDEpKSkpOwogICAgRmluZE5hbWVkSXRlbShmb3JtLCBzdHIsIGdldHRlcl9BZGRSZWZzKHJl
c3VsdCkpOwoKICAgIGlmIChyZXN1bHQpIHsKCgogICAgICByZXR1cm4gV3JhcE5hdGl2ZShjeCwg
OjpKU19HZXRHbG9iYWxPYmplY3QoY3gpLCByZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAg
IG5zQ09NVHlwZUluZm88bnNJU3VwcG9ydHM+OjpHZXRJSUQoKSwgdnApOwogICAgfQoKICAgIHJl
dHVybiAwOwogIH0KCiAgUFJJbnQzMiBuID0gR2V0QXJyYXlJbmRleEZyb21JZChjeCwgaWQpOwoK
ICBpZiAobiA+PSAwKSB7CiAgICBuc0NPTVB0cjxuc0lGb3JtQ29udHJvbD4gY29udHJvbDsKICAg
IGZvcm0tPkdldEVsZW1lbnRBdChuLCBnZXR0ZXJfQWRkUmVmcyhjb250cm9sKSk7CgogICAgaWYg
KGNvbnRyb2wpIHsKICAgICAgcmV0dXJuIFdyYXBOYXRpdmUoY3gsIDo6SlNfR2V0R2xvYmFsT2Jq
ZWN0KGN4KSwgY29udHJvbCwKICAgICAgICAgICAgICAgICAgICAgICAgbnNDT01UeXBlSW5mbzxu
c0lTdXBwb3J0cz46OkdldElJRCgpLCB2cCk7CiAgICB9CiAgfQoKICByZXR1cm4gMDsKfQoKbnNy
ZXN1bHQKbnNIVE1MRm9ybUVsZW1lbnRTSDo6TmV3RW51bWVyYXRlKG5zSVhQQ29ubmVjdFdyYXBw
ZWROYXRpdmUgKndyYXBwZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU0Nv
bnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUFJVaW50MzIgZW51bV9vcCwganN2YWwgKnN0YXRlcCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGpzaWQgKmlkcCwgUFJCb29sICpfcmV0dmFsKQp7CiAgc3dpdGNoIChlbnVt
X29wKSB7CiAgY2FzZSBKU0VOVU1FUkFURV9JTklUOgogICAgewogICAgICBuc0NPTVB0cjxuc0lT
dXBwb3J0cz4gbmF0aXZlOwogICAgICB3cmFwcGVyLT5HZXROYXRpdmUoZ2V0dGVyX0FkZFJlZnMo
bmF0aXZlKSk7CiAgICAgIDsKCiAgICAgIG5zQ09NUHRyPG5zSUZvcm0+IGZvcm0oZG9fUXVlcnlJ
bnRlcmZhY2UobmF0aXZlKSk7CgogICAgICBpZiAoIWZvcm0pIHsKICAgICAgICAqc3RhdGVwID0g
KChqc3ZhbCkoMCkpOwogICAgICAgIHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7CiAg
ICAgIH0KCiAgICAgICpzdGF0ZXAgPSAoKChqc3ZhbCkoMCkgPDwgMSkgfCAweDEpOwoKICAgICAg
aWYgKGlkcCkgewogICAgICAgIFBSVWludDMyIGNvdW50ID0gMDsKICAgICAgICBmb3JtLT5HZXRF
bGVtZW50Q291bnQoJmNvdW50KTsKCiAgICAgICAgKmlkcCA9ICgoKGpzdmFsKShjb3VudCkgPDwg
MSkgfCAweDEpOwogICAgICB9CgogICAgICBicmVhazsKICAgIH0KICBjYXNlIEpTRU5VTUVSQVRF
X05FWFQ6CiAgICB7CiAgICAgIG5zQ09NUHRyPG5zSVN1cHBvcnRzPiBuYXRpdmU7CiAgICAgIHdy
YXBwZXItPkdldE5hdGl2ZShnZXR0ZXJfQWRkUmVmcyhuYXRpdmUpKTsKICAgICAgOwoKICAgICAg
bnNDT01QdHI8bnNJRm9ybT4gZm9ybShkb19RdWVyeUludGVyZmFjZShuYXRpdmUpKTsKICAgICAg
ZG8geyBpZiAoIShmb3JtKSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDA0MDA1TCk7IH0g
fSB3aGlsZSAoMCk7CgogICAgICBQUkludDMyIGluZGV4ID0gKFBSSW50MzIpKChqc2ludCkoKnN0
YXRlcCkgPj4gMSk7CgogICAgICBQUlVpbnQzMiBjb3VudCA9IDA7CiAgICAgIGZvcm0tPkdldEVs
ZW1lbnRDb3VudCgmY291bnQpOwoKICAgICAgaWYgKChQUlVpbnQzMilpbmRleCA8IGNvdW50KSB7
CiAgICAgICAgbnNDT01QdHI8bnNJRm9ybUNvbnRyb2w+IGNvbnRyb2xOb2RlOwogICAgICAgIGZv
cm0tPkdldEVsZW1lbnRBdChpbmRleCwgZ2V0dGVyX0FkZFJlZnMoY29udHJvbE5vZGUpKTsKICAg
ICAgICBkbyB7IGlmICghKGNvbnRyb2xOb2RlKSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAweDgw
MDA0MDA1TCk7IH0gfSB3aGlsZSAoMCk7CgogICAgICAgIG5zQ09NUHRyPG5zSURPTUVsZW1lbnQ+
IGRvbUVsZW1lbnQgPSBkb19RdWVyeUludGVyZmFjZShjb250cm9sTm9kZSk7CiAgICAgICAgZG8g
eyBpZiAoIShkb21FbGVtZW50KSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDA0MDA1TCk7
IH0gfSB3aGlsZSAoMCk7CgogICAgICAgIG5zQXV0b1N0cmluZyBhdHRyOwogICAgICAgIGRvbUVs
ZW1lbnQtPkdldEF0dHJpYnV0ZShzdGF0aWNfY2FzdDwgY29uc3QgbnNBRmxhdFN0cmluZyYgPihu
c0RlcGVuZGVudFN0cmluZyhyZWludGVycHJldF9jYXN0PCBjb25zdCBuc0FTdHJpbmc6OmNoYXJf
dHlwZSogPihMIm5hbWUiKSwgUFJVaW50MzIoKHNpemVvZihMIm5hbWUiKS9zaXplb2Yod2NoYXJf
dCkpLTEpKSksIGF0dHIpOwogICAgICAgIGlmIChhdHRyLklzRW1wdHkoKSkgewoKICAgICAgICAg
IGF0dHIuQXBwZW5kSW50KGluZGV4KTsKICAgICAgICB9CiAgICAgICAgSlNTdHJpbmcgKmpzbmFt
ZSA9CiAgICAgICAgICBKU19OZXdVQ1N0cmluZ0NvcHlOKGN4LCByZWludGVycHJldF9jYXN0PCBj
b25zdCBqc2NoYXIgKiA+KGF0dHIuZ2V0KCkpLAoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXR0ci5MZW5ndGgoKSk7CiAgICAgICAgZG8geyBpZiAoIShqc25hbWUpKSB7IDsgcmV0dXJu
ICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfSB9IHdoaWxlICgwKTsKCiAgICAgICAgSlNfVmFs
dWVUb0lkKGN4LCAoKChqc3ZhbCkoanNuYW1lKSkgfCAoMHg0KSksIGlkcCk7CgogICAgICAgICpz
dGF0ZXAgPSAoKChqc3ZhbCkoKytpbmRleCkgPDwgMSkgfCAweDEpOwogICAgICB9IGVsc2Ugewog
ICAgICAgICpzdGF0ZXAgPSAoKGpzdmFsKSgwKSk7CiAgICAgIH0KCiAgICAgIGJyZWFrOwogICAg
fQogIGNhc2UgSlNFTlVNRVJBVEVfREVTVFJPWToKICAgICpzdGF0ZXAgPSAoKGpzdmFsKSgwKSk7
CgogICAgYnJlYWs7CiAgfQoKICByZXR1cm4gMDsKfQoKCgoKbnNyZXN1bHQKbnNIVE1MU2VsZWN0
RWxlbWVudFNIOjpHZXRQcm9wZXJ0eShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTQ29udGV4dCAqY3gsIEpTT2Jq
ZWN0ICpvYmosIGpzdmFsIGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpz
dmFsICp2cCwgUFJCb29sICpfcmV0dmFsKQp7CiAgUFJJbnQzMiBuID0gR2V0QXJyYXlJbmRleEZy
b21JZChjeCwgaWQpOwoKICBpZiAobiA+PSAwKSB7CiAgICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4g
bmF0aXZlOwoKICAgIHdyYXBwZXItPkdldE5hdGl2ZShnZXR0ZXJfQWRkUmVmcyhuYXRpdmUpKTsK
ICAgIDsKCiAgICBuc0NPTVB0cjxuc0lET01IVE1MU2VsZWN0RWxlbWVudD4gcyhkb19RdWVyeUlu
dGVyZmFjZShuYXRpdmUpKTsKCiAgICBuc0NPTVB0cjxuc0lET01IVE1MQ29sbGVjdGlvbj4gb3B0
aW9uczsKCiAgICBzLT5HZXRPcHRpb25zKGdldHRlcl9BZGRSZWZzKG9wdGlvbnMpKTsKCiAgICBp
ZiAob3B0aW9ucykgewogICAgICBuc0NPTVB0cjxuc0lET01Ob2RlPiBub2RlOwoKICAgICAgb3B0
aW9ucy0+SXRlbShuLCBnZXR0ZXJfQWRkUmVmcyhub2RlKSk7CgogICAgICByZXR1cm4gV3JhcE5h
dGl2ZShjeCwgOjpKU19HZXRHbG9iYWxPYmplY3QoY3gpLCBub2RlLAogICAgICAgICAgICAgICAg
ICAgICAgICBuc0NPTVR5cGVJbmZvPG5zSURPTU5vZGU+OjpHZXRJSUQoKSwgdnApOwogICAgfQog
IH0KCiAgcmV0dXJuIDA7Cn0KCgpuc3Jlc3VsdApuc0hUTUxTZWxlY3RFbGVtZW50U0g6OlNldE9w
dGlvbihKU0NvbnRleHQgKmN4LCBqc3ZhbCAqdnAsIFBSVWludDMyIGFJbmRleCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnNJRE9NTlNIVE1MT3B0aW9uQ29sbGVjdGlvbiAqYU9w
dENvbGxlY3Rpb24pCnsKCiAgaWYgKCEoKCgqdnApICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0g
MSkpID09IDB4MCkgJiYgITo6SlNfQ29udmVydFZhbHVlKGN4LCAqdnAsIEpTVFlQRV9PQkpFQ1Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnApKSB7
CiAgICByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwpOwogIH0KCiAgbnNDT01QdHI8bnNJ
RE9NSFRNTE9wdGlvbkVsZW1lbnQ+IG5ld19vcHRpb247CgogIGlmICghKCgqdnApID09ICgoanN2
YWwpKDApKSkpIHsKICAgIG5zQ09NUHRyPG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmU+IG5ld193
cmFwcGVyOwogICAgbnNyZXN1bHQgcnY7CgogICAgcnYgPSBzWFBDb25uZWN0LT5HZXRXcmFwcGVk
TmF0aXZlT2ZKU09iamVjdChjeCwgKChKU09iamVjdCAqKSgodm9pZCAqKSgoKnZwKSAmIH4oanN2
YWwpKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpKSksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdldHRlcl9BZGRSZWZzKG5ld193cmFwcGVyKSk7CiAg
ICBkbyB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0dXJuIHJ2OyB9IH0g
d2hpbGUgKDApOwoKICAgIG5zQ09NUHRyPG5zSVN1cHBvcnRzPiBuYXRpdmU7CiAgICBuZXdfd3Jh
cHBlci0+R2V0TmF0aXZlKGdldHRlcl9BZGRSZWZzKG5hdGl2ZSkpOwoKICAgIG5ld19vcHRpb24g
PSBkb19RdWVyeUludGVyZmFjZShuYXRpdmUpOwoKICAgIGlmICghbmV3X29wdGlvbikgewoKCiAg
ICAgIHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7CiAgICB9CiAgfQoKICByZXR1cm4g
YU9wdENvbGxlY3Rpb24tPlNldE9wdGlvbihhSW5kZXgsIG5ld19vcHRpb24pOwp9Cgpuc3Jlc3Vs
dApuc0hUTUxTZWxlY3RFbGVtZW50U0g6OlNldFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBwZWRO
YXRpdmUgKndyYXBwZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNDb250
ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAganN2YWwgKnZwLCBQUkJvb2wgKl9yZXR2YWwpCnsKICBpbnQzMiBuID0gR2V0
QXJyYXlJbmRleEZyb21JZChjeCwgaWQpOwoKICBpZiAobiA+PSAwKSB7CiAgICBuc0NPTVB0cjxu
c0lTdXBwb3J0cz4gbmF0aXZlOwogICAgd3JhcHBlci0+R2V0TmF0aXZlKGdldHRlcl9BZGRSZWZz
KG5hdGl2ZSkpOwoKICAgIG5zQ09NUHRyPG5zSURPTUhUTUxTZWxlY3RFbGVtZW50PiBzZWxlY3Qo
ZG9fUXVlcnlJbnRlcmZhY2UobmF0aXZlKSk7CiAgICBkbyB7IGlmICghKHNlbGVjdCkpIHsgOyBy
ZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwpOyB9IH0gd2hpbGUgKDApOwoKICAgIG5zQ09N
UHRyPG5zSURPTUhUTUxDb2xsZWN0aW9uPiBvcHRpb25zOwogICAgc2VsZWN0LT5HZXRPcHRpb25z
KGdldHRlcl9BZGRSZWZzKG9wdGlvbnMpKTsKCiAgICBuc0NPTVB0cjxuc0lET01OU0hUTUxPcHRp
b25Db2xsZWN0aW9uPiBvYyhkb19RdWVyeUludGVyZmFjZShvcHRpb25zKSk7CiAgICBkbyB7IGlm
ICghKG9jKSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAo
MCk7CgogICAgcmV0dXJuIFNldE9wdGlvbihjeCwgdnAsIG4sIG9jKTsKICB9CgogIHJldHVybiBu
c0VsZW1lbnRTSDo6U2V0UHJvcGVydHkod3JhcHBlciwgY3gsIG9iaiwgaWQsIHZwLCBfcmV0dmFs
KTsKfQojIDU1MTAgIm5zRE9NQ2xhc3NJbmZvLmNwcCIKbnNyZXN1bHQKbnNIVE1MRXh0ZXJuYWxP
YmpTSDo6R2V0UGx1Z2luSW5zdGFuY2UobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBl
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJUGx1Z2luSW5zdGFu
Y2UgKipfcmVzdWx0KQp7CiAgKl9yZXN1bHQgPSAwOwoKICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4g
bmF0aXZlOwoKICB3cmFwcGVyLT5HZXROYXRpdmUoZ2V0dGVyX0FkZFJlZnMobmF0aXZlKSk7Cgog
IG5zQ09NUHRyPG5zSUNvbnRlbnQ+IGNvbnRlbnQoZG9fUXVlcnlJbnRlcmZhY2UobmF0aXZlKSk7
CiAgZG8geyBpZiAoIShjb250ZW50KSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZm
TCk7IH0gfSB3aGlsZSAoMCk7CgogIG5zQ09NUHRyPG5zSURvY3VtZW50PiBkb2M7CgogIGNvbnRl
bnQtPkdldERvY3VtZW50KCpnZXR0ZXJfQWRkUmVmcyhkb2MpKTsKCiAgaWYgKCFkb2MpIHsKCgog
ICAgcmV0dXJuIDA7CiAgfQoKICBkb2MtPkZsdXNoUGVuZGluZ05vdGlmaWNhdGlvbnMoKTsKCgog
IG5zQ09NUHRyPG5zSVByZXNTaGVsbD4gc2hlbGw7CiAgZG9jLT5HZXRTaGVsbEF0KDAsIGdldHRl
cl9BZGRSZWZzKHNoZWxsKSk7CgogIGlmICghc2hlbGwpIHsKICAgIHJldHVybiAwOwogIH0KCiAg
bnNJRnJhbWUqIGZyYW1lID0gMDsKICBzaGVsbC0+R2V0UHJpbWFyeUZyYW1lRm9yKGNvbnRlbnQs
ICZmcmFtZSk7CgogIGlmICghZnJhbWUpIHsKCgogICAgcmV0dXJuIDA7CiAgfQoKICBuc0lPYmpl
Y3RGcmFtZSogb2JqZWN0RnJhbWUgPSAwOwogIENhbGxRdWVyeUludGVyZmFjZShmcmFtZSwgJm9i
amVjdEZyYW1lKTsKICBpZiAoIW9iamVjdEZyYW1lKSB7CiAgICByZXR1cm4gMDsKICB9CgogIHJl
dHVybiBvYmplY3RGcmFtZS0+R2V0UGx1Z2luSW5zdGFuY2UoKl9yZXN1bHQpOwp9CgoKCnN0YXRp
YyBQUkJvb2wKSXNPYmpJblByb3RvQ2hhaW4oSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwg
SlNPYmplY3QgKnByb3RvKQp7CiAgSlNPYmplY3QgKm8gPSBvYmo7CgogIHdoaWxlIChvKSB7CiAg
ICBKU09iamVjdCAqcCA9IDo6SlNfR2V0UHJvdG90eXBlKGN4LCBvKTsKCiAgICBpZiAocCA9PSBw
cm90bykgewogICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBvID0gcDsKICB9CgogIHJldHVybiAw
Owp9CiMgNTU4OCAibnNET01DbGFzc0luZm8uY3BwIgpuc3Jlc3VsdApuc0hUTUxFeHRlcm5hbE9i
alNIOjpQb3N0Q3JlYXRlKG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaikK
ewogIG5zcmVzdWx0IHJ2ID0gbnNFbGVtZW50U0g6OlBvc3RDcmVhdGUod3JhcHBlciwgY3gsIG9i
aik7CiAgZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsg
fSB9IHdoaWxlICgwKTsKCiAgbnNDT01QdHI8bnNJUGx1Z2luSW5zdGFuY2U+IHBpOwoKICBydiA9
IEdldFBsdWdpbkluc3RhbmNlKHdyYXBwZXIsIGdldHRlcl9BZGRSZWZzKHBpKSk7CiAgZG8geyBp
ZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsgfSB9IHdoaWxlICgw
KTsKCiAgaWYgKCFwaSkgewoKCiAgICByZXR1cm4gMDsKICB9CgogIEpTT2JqZWN0ICpwaV9vYmog
PSAwOwogIEpTT2JqZWN0ICpwaV9wcm90byA9IDA7CgogIHJ2ID0gR2V0UGx1Z2luSlNPYmplY3Qo
Y3gsIG9iaiwgcGksICZwaV9vYmosICZwaV9wcm90byk7CiAgZG8geyBpZiAoISgoISgocnYpICYg
MHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsgfSB9IHdoaWxlICgwKTsKCiAgaWYgKCFwaV9v
YmopIHsKCgogICAgcmV0dXJuIDA7CiAgfQoKICBpZiAoSXNPYmpJblByb3RvQ2hhaW4oY3gsIG9i
aiwgcGlfb2JqKSkgewoKCgoKCiAgICByZXR1cm4gMDsKICB9CgoKCgoKICBKU09iamVjdCAqbXlf
cHJvdG8gPSAwOwoKCiAgcnYgPSB3cmFwcGVyLT5HZXRKU09iamVjdFByb3RvdHlwZSgmbXlfcHJv
dG8pOwogIGRvIHsgaWYgKCEoKCEoKHJ2KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7
IH0gfSB3aGlsZSAoMCk7CgoKICBpZiAoITo6SlNfU2V0UHJvdG90eXBlKGN4LCBvYmosIHBpX29i
aikpIHsKICAgIHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7CiAgfQoKICBpZiAocGlf
cHJvdG8gJiYgSlNfR2V0Q2xhc3MoY3gsIHBpX3Byb3RvKSAhPSBzT2JqZWN0Q2xhc3MpIHsKCgog
ICAgaWYgKCE6OkpTX1NldFByb3RvdHlwZShjeCwgcGlfcHJvdG8sIG15X3Byb3RvKSkgewogICAg
ICByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwpOwogICAgfQogIH0gZWxzZSB7CgoKCiAg
ICBpZiAoITo6SlNfU2V0UHJvdG90eXBlKGN4LCBwaV9vYmosIG15X3Byb3RvKSkgewogICAgICBy
ZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwpOwogICAgfQogIH0KIyA1NzA2ICJuc0RPTUNs
YXNzSW5mby5jcHAiCiAgcmV0dXJuIDA7Cn0KCgoKCm5zcmVzdWx0Cm5zSFRNTEFwcGxldEVsZW1l
bnRTSDo6R2V0UGx1Z2luSlNPYmplY3QoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lQbHVnaW5JbnN0YW5jZSAq
cGx1Z2luX2luc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNP
YmplY3QgKipwbHVnaW5fb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEpTT2JqZWN0ICoqcGx1Z2luX3Byb3RvKQp7CiAgKnBsdWdpbl9vYmogPSAwOwogICpwbHVn
aW5fcHJvdG8gPSAwOwoKICBuc0NPTVB0cjxuc0lKVk1NYW5hZ2VyPiBqdm0oZG9fR2V0U2Vydmlj
ZShuc0lKVk1NYW5hZ2VyOjpHZXRDSUQoKSkpOwoKICBpZiAoIWp2bSkgewogICAgcmV0dXJuIDA7
CiAgfQoKICBuc0NPTVB0cjxuc0lKVk1QbHVnaW5JbnN0YW5jZT4gamF2YVBsdWdpbkluc3RhbmNl
OwoKICBqYXZhUGx1Z2luSW5zdGFuY2UgPSBkb19RdWVyeUludGVyZmFjZShwbHVnaW5faW5zdCk7
CgogIGlmICghamF2YVBsdWdpbkluc3RhbmNlKSB7CiAgICByZXR1cm4gMDsKICB9CgogIGpvYmpl
Y3QgYXBwbGV0T2JqZWN0ID0gMDsKICBuc3Jlc3VsdCBydiA9IGphdmFQbHVnaW5JbnN0YW5jZS0+
R2V0SmF2YU9iamVjdCgmYXBwbGV0T2JqZWN0KTsKCiAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkg
fHwgIWFwcGxldE9iamVjdCkgewogICAgcmV0dXJuIHJ2OwogIH0KCiAgbnNDT01QdHI8bnNJTGl2
ZUNvbm5lY3RNYW5hZ2VyPiBtYW5hZ2VyID0KICAgIGRvX0dldFNlcnZpY2UobnNJSlZNTWFuYWdl
cjo6R2V0Q0lEKCkpOwoKICBpZiAoIW1hbmFnZXIpIHsKICAgIHJldHVybiAwOwogIH0KCiAgcmV0
dXJuIG1hbmFnZXItPldyYXBKYXZhT2JqZWN0KGN4LCBhcHBsZXRPYmplY3QsIHBsdWdpbl9vYmop
Owp9CgoKCgpuc3Jlc3VsdApuc0hUTUxQbHVnaW5PYmpFbGVtZW50U0g6OkdldFBsdWdpbkpTT2Jq
ZWN0KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnNJUGx1Z2luSW5zdGFuY2UgKnBsdWdpbl9pbnN0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICoqcGx1Z2lu
X29iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVj
dCAqKnBsdWdpbl9wcm90bykKewogICpwbHVnaW5fb2JqID0gMDsKICAqcGx1Z2luX3Byb3RvID0g
MDsKCgoKCgoKCiAgbnNJSUQgc2NyaXB0YWJsZUlJRCA9IG5zQ09NVHlwZUluZm88bnNJU3VwcG9y
dHM+OjpHZXRJSUQoKTsKICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4gc2NyaXB0YWJsZV9wZWVyOwoK
ICBuc0NPTVB0cjxuc0lTY3JpcHRhYmxlUGx1Z2luPiBzcGkoZG9fUXVlcnlJbnRlcmZhY2UocGx1
Z2luX2luc3QpKTsKCiAgaWYgKHNwaSkgewogICAgbnNJSUQgKnNjcmlwdGFibGVJbnRlcmZhY2VQ
dHIgPSAwOwogICAgc3BpLT5HZXRTY3JpcHRhYmxlSW50ZXJmYWNlKCZzY3JpcHRhYmxlSW50ZXJm
YWNlUHRyKTsKCiAgICBpZiAoc2NyaXB0YWJsZUludGVyZmFjZVB0cikgewogICAgICBzcGktPkdl
dFNjcmlwdGFibGVQZWVyKGdldHRlcl9BZGRSZWZzKHNjcmlwdGFibGVfcGVlcikpOwoKICAgICAg
c2NyaXB0YWJsZUlJRCA9ICpzY3JpcHRhYmxlSW50ZXJmYWNlUHRyOwoKICAgICAgbnNNZW1vcnk6
OkZyZWUoc2NyaXB0YWJsZUludGVyZmFjZVB0cik7CiAgICB9CiAgfQoKICBuc0NPTVB0cjxuc0lD
bGFzc0luZm8+IGNpKGRvX1F1ZXJ5SW50ZXJmYWNlKHBsdWdpbl9pbnN0KSk7CgogIGlmICghc2Ny
aXB0YWJsZV9wZWVyKSB7CiAgICBpZiAoIWNpKSB7CgoKCgoKICAgICAgcmV0dXJuIG5zSFRNTEFw
cGxldEVsZW1lbnRTSDo6R2V0UGx1Z2luSlNPYmplY3QoY3gsIG9iaiwgcGx1Z2luX2luc3QsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdWdp
bl9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBsdWdpbl9wcm90byk7CiAgICB9CgoKCiAgICBzY3JpcHRhYmxlX3BlZXIgPSBwbHVnaW5f
aW5zdDsKICB9CgoKCgoKCiAgaWYgKGNpKSB7CgoKCiAgICBQUlVpbnQzMiBmbGFnczsKICAgIGNp
LT5HZXRGbGFncygmZmxhZ3MpOwoKICAgIGlmICghKGZsYWdzICYgbnNJQ2xhc3NJbmZvOjpQTFVH
SU5fT0JKRUNUKSkgewoKCgoKICAgICAgcmV0dXJuIDA7CiAgICB9CiAgfQoKCgogIG5zQ09NUHRy
PG5zSVBsdWdpbkhvc3Q+IHBsdWdpbk1hbmFnZXIgPQogICAgZG9fR2V0U2VydmljZShrQ1BsdWdp
bk1hbmFnZXJDSUQpOwoKICBuc0NPTVB0cjxuc1BJUGx1Z2luSG9zdD4gcGx1Z2luSG9zdChkb19R
dWVyeUludGVyZmFjZShwbHVnaW5NYW5hZ2VyKSk7CgogIGlmKHBsdWdpbkhvc3QpIHsKICAgIHBs
dWdpbkhvc3QtPlNldElzU2NyaXB0YWJsZUluc3RhbmNlKHBsdWdpbl9pbnN0LCAxKTsKICB9CgoK
CiAgbnNDT01QdHI8bnNJWFBDb25uZWN0SlNPYmplY3RIb2xkZXI+IGhvbGRlcjsKICBuc3Jlc3Vs
dCBydiA9IHNYUENvbm5lY3QtPldyYXBOYXRpdmUoY3gsIDo6SlNfR2V0UGFyZW50KGN4LCBvYmop
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRhYmxlX3BlZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdGFibGVJSUQsIGdl
dHRlcl9BZGRSZWZzKGhvbGRlcikpOwogIGRvIHsgaWYgKCEoKCEoKHJ2KSAmIDB4ODAwMDAwMDAp
KSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7CgoKCiAgbnNDT01QdHI8bnNJWFBDb25u
ZWN0V3JhcHBlZE5hdGl2ZT4gcGlfd3JhcHBlcihkb19RdWVyeUludGVyZmFjZShob2xkZXIpKTsK
ICBkbyB7IGlmICghKHBpX3dyYXBwZXIpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZm
ZmZMKTsgfSB9IHdoaWxlICgwKTsKCiAgcnYgPSBwaV93cmFwcGVyLT5HZXRKU09iamVjdChwbHVn
aW5fb2JqKTsKICBkbyB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0dXJu
IHJ2OyB9IH0gd2hpbGUgKDApOwoKICByZXR1cm4gcGlfd3JhcHBlci0+R2V0SlNPYmplY3RQcm90
b3R5cGUocGx1Z2luX3Byb3RvKTsKfQoKbnNyZXN1bHQKbnNIVE1MUGx1Z2luT2JqRWxlbWVudFNI
OjpOZXdSZXNvbHZlKG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2Jq
LCBqc3ZhbCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSVWludDMy
IGZsYWdzLCBKU09iamVjdCAqKm9ianAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQUkJvb2wgKl9yZXR2YWwpCnsKICBpZiAoKCgoaWQpICYgKCgoSlNVaW50MzIpMSA8PCAo
MykpIC0gMSkpID09IDB4NCkpIHsKCgoKICAgIEpTU3RyaW5nICpzdHIgPSAoKEpTU3RyaW5nICop
KCh2b2lkICopKChpZCkgJiB+KGpzdmFsKSgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSkpOwog
ICAgY2hhciogY3N0cmluZyA9IDo6SlNfR2V0U3RyaW5nQnl0ZXMoc3RyKTsKCiAgICBuc0NPTVB0
cjxuc0lJbnRlcmZhY2VJbmZvTWFuYWdlcj4gaWltID0KICAgICAgZG9udF9BZGRSZWYoWFBUSV9H
ZXRJbnRlcmZhY2VJbmZvTWFuYWdlcigpKTsKICAgIGRvIHsgaWYgKCEoaWltKSkgeyA7IHJldHVy
biAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7CgogICAgbnNJSUQqIGlp
ZCA9IDA7CgogICAgbnNyZXN1bHQgcnYgPSBpaW0tPkdldElJREZvck5hbWUoY3N0cmluZywgJmlp
ZCk7CgogICAgaWYgKCghKChydikgJiAweDgwMDAwMDAwKSkgJiYgaWlkKSB7CiAgICAgIG5zQ09N
UHRyPG5zSVBsdWdpbkluc3RhbmNlPiBwaTsKCiAgICAgIEdldFBsdWdpbkluc3RhbmNlKHdyYXBw
ZXIsIGdldHRlcl9BZGRSZWZzKHBpKSk7CgogICAgICBpZiAocGkpIHsKCgoKICAgICAgICBuc0NP
TVB0cjxuc0lQbHVnaW5Ib3N0PiBwbHVnaW5NYW5hZ2VyID0KICAgICAgICAgIGRvX0dldFNlcnZp
Y2Uoa0NQbHVnaW5NYW5hZ2VyQ0lEKTsKCiAgICAgICAgbnNDT01QdHI8bnNQSVBsdWdpbkhvc3Q+
IHBsdWdpbkhvc3QoZG9fUXVlcnlJbnRlcmZhY2UocGx1Z2luTWFuYWdlcikpOwoKICAgICAgICBp
ZihwbHVnaW5Ib3N0KSB7CiAgICAgICAgICBwbHVnaW5Ib3N0LT5TZXRJc1NjcmlwdGFibGVJbnN0
YW5jZShwaSwgMSk7CiAgICAgICAgfQoKICAgICAgICBuc0NPTVB0cjxuc0lYUENvbm5lY3RKU09i
amVjdEhvbGRlcj4gaG9sZGVyOwogICAgICAgIHJ2ID0gc1hQQ29ubmVjdC0+V3JhcE5hdGl2ZShj
eCwgOjpKU19HZXRHbG9iYWxPYmplY3QoY3gpLCBwaSwgKmlpZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2V0dGVyX0FkZFJlZnMoaG9sZGVyKSk7CgogICAgICAgIGlmICgo
ISgocnYpICYgMHg4MDAwMDAwMCkpKSB7CiAgICAgICAgICBKU09iamVjdCogaWZhY2VPYmo7Cgog
ICAgICAgICAgcnYgPSBob2xkZXItPkdldEpTT2JqZWN0KCZpZmFjZU9iaik7CgogICAgICAgICAg
aWYgKCghKChydikgJiAweDgwMDAwMDAwKSkpIHsKICAgICAgICAgICAgbnNNZW1vcnk6OkZyZWUo
aWlkKTsKCiAgICAgICAgICAgICpfcmV0dmFsID0gOjpKU19EZWZpbmVVQ1Byb3BlcnR5KGN4LCBv
YmosIDo6SlNfR2V0U3RyaW5nQ2hhcnMoc3RyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOjpKU19HZXRTdHJpbmdMZW5ndGgoc3RyKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChqc3ZhbCkoaWZhY2VPYmopKSwgMCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMHgwMSk7Cgog
ICAgICAgICAgICAqb2JqcCA9IG9iajsKCiAgICAgICAgICAgIHJldHVybiAqX3JldHZhbCA/IDAg
OiAoKG5zcmVzdWx0KSAweDgwMDA0MDA1TCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9
CgogICAgICBuc01lbW9yeTo6RnJlZShpaWQpOwogICAgfQogIH0KCiAgcmV0dXJuIG5zSFRNTEVs
ZW1lbnRTSDo6TmV3UmVzb2x2ZSh3cmFwcGVyLCBjeCwgb2JqLCBpZCwgZmxhZ3MsIG9ianAsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcmV0dmFsKTsKfQoKCgoKbnNyZXN1
bHQKbnNIVE1MT3B0aW9uQ29sbGVjdGlvblNIOjpTZXRQcm9wZXJ0eShuc0lYUENvbm5lY3RXcmFw
cGVkTmF0aXZlICp3cmFwcGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGpzdmFsICp2cCwgUFJCb29sICpfcmV0dmFsKQp7CiAgaW50
MzIgbiA9IEdldEFycmF5SW5kZXhGcm9tSWQoY3gsIGlkKTsKCiAgaWYgKG4gPCAwKSB7CiAgICBy
ZXR1cm4gMDsKICB9CgogIG5zQ09NUHRyPG5zSVN1cHBvcnRzPiBuYXRpdmU7CiAgd3JhcHBlci0+
R2V0TmF0aXZlKGdldHRlcl9BZGRSZWZzKG5hdGl2ZSkpOwoKICBuc0NPTVB0cjxuc0lET01OU0hU
TUxPcHRpb25Db2xsZWN0aW9uPiBvYyhkb19RdWVyeUludGVyZmFjZShuYXRpdmUpKTsKICBkbyB7
IGlmICghKG9jKSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7IH0gfSB3aGls
ZSAoMCk7CgogIHJldHVybiBuc0hUTUxTZWxlY3RFbGVtZW50U0g6OlNldE9wdGlvbihjeCwgdnAs
IG4sIG9jKTsKfQoKCgoKbnNyZXN1bHQKbnNQbHVnaW5TSDo6R2V0SXRlbUF0KG5zSVN1cHBvcnRz
ICphTmF0aXZlLCBQUlVpbnQzMiBhSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICBuc0lTdXBw
b3J0cyAqKmFSZXN1bHQpCnsKICBuc0NPTVB0cjxuc0lET01QbHVnaW4+IHBsdWdpbihkb19RdWVy
eUludGVyZmFjZShhTmF0aXZlKSk7CiAgZG8geyBpZiAoIShwbHVnaW4pKSB7IDsgcmV0dXJuICgo
bnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsgfSB9IHdoaWxlICgwKTsKCiAgbnNJRE9NTWltZVR5cGUg
Km1pbWVfdHlwZSA9IDA7CiAgbnNyZXN1bHQgcnYgPSBwbHVnaW4tPkl0ZW0oYUluZGV4LCAmbWlt
ZV90eXBlKTsKCiAgKmFSZXN1bHQgPSBtaW1lX3R5cGU7CgogIHJldHVybiBydjsKfQoKbnNyZXN1
bHQKbnNQbHVnaW5TSDo6R2V0TmFtZWRJdGVtKG5zSVN1cHBvcnRzICphTmF0aXZlLCBjb25zdCBu
c0FTdHJpbmcmIGFOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3VwcG9ydHMgKiph
UmVzdWx0KQp7CiAgbnNDT01QdHI8bnNJRE9NUGx1Z2luPiBwbHVnaW4oZG9fUXVlcnlJbnRlcmZh
Y2UoYU5hdGl2ZSkpOwogIGRvIHsgaWYgKCEocGx1Z2luKSkgeyA7IHJldHVybiAoKG5zcmVzdWx0
KSAweDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7CgogIG5zSURPTU1pbWVUeXBlICptaW1lX3R5
cGUgPSAwOwoKICBuc3Jlc3VsdCBydiA9IHBsdWdpbi0+TmFtZWRJdGVtKGFOYW1lLCAmbWltZV90
eXBlKTsKCiAgKmFSZXN1bHQgPSBtaW1lX3R5cGU7CgogIHJldHVybiBydjsKfQoKCgoKbnNyZXN1
bHQKbnNQbHVnaW5BcnJheVNIOjpHZXRJdGVtQXQobnNJU3VwcG9ydHMgKmFOYXRpdmUsIFBSVWlu
dDMyIGFJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3VwcG9ydHMgKiphUmVz
dWx0KQp7CiAgbnNDT01QdHI8bnNJRE9NUGx1Z2luQXJyYXk+IGFycmF5KGRvX1F1ZXJ5SW50ZXJm
YWNlKGFOYXRpdmUpKTsKICBkbyB7IGlmICghKGFycmF5KSkgeyA7IHJldHVybiAoKG5zcmVzdWx0
KSAweDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7CgogIG5zSURPTVBsdWdpbiAqcGx1Z2luID0g
MDsKICBuc3Jlc3VsdCBydiA9IGFycmF5LT5JdGVtKGFJbmRleCwgJnBsdWdpbik7CgogICphUmVz
dWx0ID0gcGx1Z2luOwoKICByZXR1cm4gcnY7Cn0KCm5zcmVzdWx0Cm5zUGx1Z2luQXJyYXlTSDo6
R2V0TmFtZWRJdGVtKG5zSVN1cHBvcnRzICphTmF0aXZlLCBjb25zdCBuc0FTdHJpbmcmIGFOYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdXBwb3J0cyAqKmFSZXN1bHQpCnsK
ICBuc0NPTVB0cjxuc0lET01QbHVnaW5BcnJheT4gYXJyYXkoZG9fUXVlcnlJbnRlcmZhY2UoYU5h
dGl2ZSkpOwogIGRvIHsgaWYgKCEoYXJyYXkpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAw
MGZmZmZMKTsgfSB9IHdoaWxlICgwKTsKCiAgbnNJRE9NUGx1Z2luICpwbHVnaW4gPSAwOwoKICBu
c3Jlc3VsdCBydiA9IGFycmF5LT5OYW1lZEl0ZW0oYU5hbWUsICZwbHVnaW4pOwoKICAqYVJlc3Vs
dCA9IHBsdWdpbjsKCiAgcmV0dXJuIHJ2Owp9CgoKCgpuc3Jlc3VsdApuc01pbWVUeXBlQXJyYXlT
SDo6R2V0SXRlbUF0KG5zSVN1cHBvcnRzICphTmF0aXZlLCBQUlVpbnQzMiBhSW5kZXgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3VwcG9ydHMgKiphUmVzdWx0KQp7CiAgbnNDT01Q
dHI8bnNJRE9NTWltZVR5cGVBcnJheT4gYXJyYXkoZG9fUXVlcnlJbnRlcmZhY2UoYU5hdGl2ZSkp
OwogIGRvIHsgaWYgKCEoYXJyYXkpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZM
KTsgfSB9IHdoaWxlICgwKTsKCiAgbnNJRE9NTWltZVR5cGUgKm1pbWVfdHlwZSA9IDA7CiAgbnNy
ZXN1bHQgcnYgPSBhcnJheS0+SXRlbShhSW5kZXgsICZtaW1lX3R5cGUpOwoKICAqYVJlc3VsdCA9
IG1pbWVfdHlwZTsKCiAgcmV0dXJuIHJ2Owp9Cgpuc3Jlc3VsdApuc01pbWVUeXBlQXJyYXlTSDo6
R2V0TmFtZWRJdGVtKG5zSVN1cHBvcnRzICphTmF0aXZlLCBjb25zdCBuc0FTdHJpbmcmIGFOYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzICoqYVJlc3VsdCkK
ewogIG5zQ09NUHRyPG5zSURPTU1pbWVUeXBlQXJyYXk+IGFycmF5KGRvX1F1ZXJ5SW50ZXJmYWNl
KGFOYXRpdmUpKTsKICBkbyB7IGlmICghKGFycmF5KSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAw
eDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7CgogIG5zSURPTU1pbWVUeXBlICptaW1lX3R5cGUg
PSAwOwoKICBuc3Jlc3VsdCBydiA9IGFycmF5LT5OYW1lZEl0ZW0oYU5hbWUsICZtaW1lX3R5cGUp
OwoKICAqYVJlc3VsdCA9IG1pbWVfdHlwZTsKCiAgcmV0dXJuIHJ2Owp9CgoKCgpuc3Jlc3VsdApu
c1N0cmluZ0FycmF5U0g6OkdldFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndy
YXBwZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmpl
Y3QgKm9iaiwganN2YWwgaWQsIGpzdmFsICp2cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUkJvb2wgKl9yZXR2YWwpCnsKICBQUkJvb2wgaXNfbnVtYmVyID0gMDsKICBQUkludDMyIG4g
PSBHZXRBcnJheUluZGV4RnJvbUlkKGN4LCBpZCwgJmlzX251bWJlcik7CgogIGlmICghaXNfbnVt
YmVyKSB7CiAgICByZXR1cm4gMDsKICB9CgogIG5zQ09NUHRyPG5zSVN1cHBvcnRzPiBuYXRpdmU7
CiAgd3JhcHBlci0+R2V0TmF0aXZlKGdldHRlcl9BZGRSZWZzKG5hdGl2ZSkpOwoKICBuc0F1dG9T
dHJpbmcgdmFsOwoKICBuc3Jlc3VsdCBydiA9IEdldFN0cmluZ0F0KG5hdGl2ZSwgbiwgdmFsKTsK
ICBkbyB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0dXJuIHJ2OyB9IH0g
d2hpbGUgKDApOwoKCgogIEpTU3RyaW5nICpzdHIgPQogICAgOjpKU19OZXdVQ1N0cmluZ0NvcHlO
KGN4LCByZWludGVycHJldF9jYXN0PCBjb25zdCBqc2NoYXIgKiA+KHZhbC5nZXQoKSksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFsLkxlbmd0aCgpKTsKICBkbyB7IGlmICghKHN0cikpIHsg
OyByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDA3MDAwZUwpOyB9IH0gd2hpbGUgKDApOwoKICAqdnAg
PSAoKChqc3ZhbCkoc3RyKSkgfCAoMHg0KSk7CgogIHJldHVybiAwOwp9CgoKCgpuc3Jlc3VsdApu
c0hpc3RvcnlTSDo6R2V0UHJvcGVydHkobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBl
ciwgSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpvYmos
IGpzdmFsIGlkLCBqc3ZhbCAqdnAsIFBSQm9vbCAqX3JldHZhbCkKewogIFBSQm9vbCBpc19udW1i
ZXIgPSAwOwogIEdldEFycmF5SW5kZXhGcm9tSWQoY3gsIGlkLCAmaXNfbnVtYmVyKTsKCiAgaWYg
KCFpc19udW1iZXIpIHsKICAgIHJldHVybiAwOwogIH0KCiAgbnNyZXN1bHQgcnYgPQogICAgc1Nl
Y01hbi0+Q2hlY2tQcm9wZXJ0eUFjY2VzcyhjeCwgb2JqLCBtRGF0YS0+bU5hbWUsIHNJdGVtX2lk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lYUENTZWN1cml0eU1hbmFnZXI6
OkFDQ0VTU19DQUxMX01FVEhPRCk7CgogIGlmICgoKHJ2KSAmIDB4ODAwMDAwMDApKSB7CgogICAg
Kl9yZXR2YWwgPSAwOwoKICAgIHJldHVybiAwOwogIH0KCgoKICByZXR1cm4gbnNTdHJpbmdBcnJh
eVNIOjpHZXRQcm9wZXJ0eSh3cmFwcGVyLCBjeCwgb2JqLCBpZCwgdnAsIF9yZXR2YWwpOwp9Cgpu
c3Jlc3VsdApuc0hpc3RvcnlTSDo6R2V0U3RyaW5nQXQobnNJU3VwcG9ydHMgKmFOYXRpdmUsIFBS
SW50MzIgYUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgbnNBU3RyaW5nJiBhUmVzdWx0
KQp7CiAgaWYgKGFJbmRleCA8IDApIHsKICAgIHJldHVybiAoKG5zcmVzdWx0KSAoKChQUlVpbnQz
MikoMSk8PDMxKSB8ICgoUFJVaW50MzIpKDE0ICsweDQ1KTw8MTYpIHwgKChQUlVpbnQzMikoMSkp
KSApOwogIH0KCiAgbnNDT01QdHI8bnNJRE9NSGlzdG9yeT4gaGlzdG9yeShkb19RdWVyeUludGVy
ZmFjZShhTmF0aXZlKSk7CgogIHJldHVybiBoaXN0b3J5LT5JdGVtKGFJbmRleCwgYVJlc3VsdCk7
Cn0KCgoKCm5zcmVzdWx0Cm5zTWVkaWFMaXN0U0g6OkdldFN0cmluZ0F0KG5zSVN1cHBvcnRzICph
TmF0aXZlLCBQUkludDMyIGFJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNBU3Ry
aW5nJiBhUmVzdWx0KQp7CiAgaWYgKGFJbmRleCA8IDApIHsKICAgIHJldHVybiAoKG5zcmVzdWx0
KSAoKChQUlVpbnQzMikoMSk8PDMxKSB8ICgoUFJVaW50MzIpKDE0ICsweDQ1KTw8MTYpIHwgKChQ
UlVpbnQzMikoMSkpKSApOwogIH0KCiAgbnNDT01QdHI8bnNJRE9NTWVkaWFMaXN0PiBtZWRpYV9s
aXN0KGRvX1F1ZXJ5SW50ZXJmYWNlKGFOYXRpdmUpKTsKCiAgcmV0dXJuIG1lZGlhX2xpc3QtPkl0
ZW0oUFJVaW50MzIoYUluZGV4KSwgYVJlc3VsdCk7Cn0KCgoKCm5zcmVzdWx0Cm5zU3R5bGVTaGVl
dExpc3RTSDo6R2V0SXRlbUF0KG5zSVN1cHBvcnRzICphTmF0aXZlLCBQUlVpbnQzMiBhSW5kZXgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzICoqYVJlc3VsdCkKewog
IG5zQ09NUHRyPG5zSURPTVN0eWxlU2hlZXRMaXN0PiBzdHlsZXNoZWV0cyhkb19RdWVyeUludGVy
ZmFjZShhTmF0aXZlKSk7CiAgZG8geyBpZiAoIShzdHlsZXNoZWV0cykpIHsgOyByZXR1cm4gKChu
c3Jlc3VsdCkgMHg4MDAwZmZmZkwpOyB9IH0gd2hpbGUgKDApOwoKICBuc0lET01TdHlsZVNoZWV0
ICpzaGVldCA9IDA7CiAgbnNyZXN1bHQgcnYgPSBzdHlsZXNoZWV0cy0+SXRlbShhSW5kZXgsICZz
aGVldCk7CgogICphUmVzdWx0ID0gc2hlZXQ7CgogIHJldHVybiBydjsKfQoKCgoKbnNyZXN1bHQK
bnNDU1NWYWx1ZUxpc3RTSDo6R2V0SXRlbUF0KG5zSVN1cHBvcnRzICphTmF0aXZlLCBQUlVpbnQz
MiBhSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdXBwb3J0cyAqKmFSZXN1
bHQpCnsKICBuc0NPTVB0cjxuc0lET01DU1NWYWx1ZUxpc3Q+IGNzc1ZhbHVlTGlzdChkb19RdWVy
eUludGVyZmFjZShhTmF0aXZlKSk7CiAgZG8geyBpZiAoIShjc3NWYWx1ZUxpc3QpKSB7IDsgcmV0
dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsgfSB9IHdoaWxlICgwKTsKCiAgbnNJRE9NQ1NT
VmFsdWUgKmNzc1ZhbHVlID0gMDsKICBuc3Jlc3VsdCBydiA9IGNzc1ZhbHVlTGlzdC0+SXRlbShh
SW5kZXgsICZjc3NWYWx1ZSk7CgogICphUmVzdWx0ID0gY3NzVmFsdWU7CgogIHJldHVybiBydjsK
fQoKCgoKbnNyZXN1bHQKbnNDU1NTdHlsZURlY2xTSDo6R2V0U3RyaW5nQXQobnNJU3VwcG9ydHMg
KmFOYXRpdmUsIFBSSW50MzIgYUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
c0FTdHJpbmcmIGFSZXN1bHQpCnsKICBpZiAoYUluZGV4IDwgMCkgewogICAgcmV0dXJuICgobnNy
ZXN1bHQpICgoKFBSVWludDMyKSgxKTw8MzEpIHwgKChQUlVpbnQzMikoMTQgKzB4NDUpPDwxNikg
fCAoKFBSVWludDMyKSgxKSkpICk7CiAgfQoKICBuc0NPTVB0cjxuc0lET01DU1NTdHlsZURlY2xh
cmF0aW9uPiBzdHlsZV9kZWNsKGRvX1F1ZXJ5SW50ZXJmYWNlKGFOYXRpdmUpKTsKCiAgcmV0dXJu
IHN0eWxlX2RlY2wtPkl0ZW0oUFJVaW50MzIoYUluZGV4KSwgYVJlc3VsdCk7Cn0KCgoKCm5zcmVz
dWx0Cm5zQ1NTUnVsZUxpc3RTSDo6R2V0SXRlbUF0KG5zSVN1cHBvcnRzICphTmF0aXZlLCBQUlVp
bnQzMiBhSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzICoqYVJl
c3VsdCkKewogIG5zQ09NUHRyPG5zSURPTUNTU1J1bGVMaXN0PiBsaXN0KGRvX1F1ZXJ5SW50ZXJm
YWNlKGFOYXRpdmUpKTsKICBkbyB7IGlmICghKGxpc3QpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQp
IDB4ODAwMGZmZmZMKTsgfSB9IHdoaWxlICgwKTsKCiAgbnNJRE9NQ1NTUnVsZSAqcnVsZSA9IDA7
CiAgbnNyZXN1bHQgcnYgPSBsaXN0LT5JdGVtKGFJbmRleCwgJnJ1bGUpOwoKICAqYVJlc3VsdCA9
IHJ1bGU7CgogIHJldHVybiBydjsKfQoKCgoKbnNyZXN1bHQgbnNFdmVudExpc3RlbmVyVGhpc1Ry
YW5zbGF0b3I6OlF1ZXJ5SW50ZXJmYWNlKGNvbnN0IG5zSUlEJiBhSUlELCB2b2lkKiogYUluc3Rh
bmNlUHRyKSB7IDsgaWYgKCAhYUluc3RhbmNlUHRyICkgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAw
MDQwMDNMKTsgbnNJU3VwcG9ydHMqIGZvdW5kSW50ZXJmYWNlOwogIGlmICggYUlJRC5FcXVhbHMo
bnNDT01UeXBlSW5mbzxuc0lYUENGdW5jdGlvblRoaXNUcmFuc2xhdG9yPjo6R2V0SUlEKCkpICkg
Zm91bmRJbnRlcmZhY2UgPSBzdGF0aWNfY2FzdDwgbnNJWFBDRnVuY3Rpb25UaGlzVHJhbnNsYXRv
ciogPih0aGlzKTsgZWxzZQogIGlmICggYUlJRC5FcXVhbHMobnNDT01UeXBlSW5mbzxuc0lTdXBw
b3J0cz46OkdldElJRCgpKSApIGZvdW5kSW50ZXJmYWNlID0gc3RhdGljX2Nhc3Q8IG5zSVN1cHBv
cnRzKiA+KHRoaXMpOyBlbHNlCmZvdW5kSW50ZXJmYWNlID0gMDsgbnNyZXN1bHQgc3RhdHVzOyBp
ZiAoICFmb3VuZEludGVyZmFjZSApIHN0YXR1cyA9ICgobnNyZXN1bHQpIDB4ODAwMDQwMDJMKTsg
ZWxzZSB7IChmb3VuZEludGVyZmFjZSktPkFkZFJlZigpOyBzdGF0dXMgPSAwOyB9ICphSW5zdGFu
Y2VQdHIgPSBmb3VuZEludGVyZmFjZTsgcmV0dXJuIHN0YXR1czsgfQoKCm5zcmVmY250IG5zRXZl
bnRMaXN0ZW5lclRoaXNUcmFuc2xhdG9yOjpBZGRSZWYodm9pZCkgeyA7ICgodm9pZCkwKTsgKytt
UmVmQ250OyA7IHJldHVybiBtUmVmQ250OyB9Cm5zcmVmY250IG5zRXZlbnRMaXN0ZW5lclRoaXNU
cmFuc2xhdG9yOjpSZWxlYXNlKHZvaWQpIHsgOyAoKHZvaWQpMCk7IC0tbVJlZkNudDsgOyBpZiAo
bVJlZkNudCA9PSAwKSB7IG1SZWZDbnQgPSAxOyBkbyB7IDsgZGVsZXRlICh0aGlzKTsgfSB3aGls
ZSAoMCk7IHJldHVybiAwOyB9IHJldHVybiBtUmVmQ250OyB9CgoKbnNyZXN1bHQKbnNFdmVudExp
c3RlbmVyVGhpc1RyYW5zbGF0b3I6OlRyYW5zbGF0ZVRoaXMobnNJU3VwcG9ydHMgKmFJbml0aWFs
VGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJSW50
ZXJmYWNlSW5mbyAqYUludGVyZmFjZUluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBSVWludDE2IGFNZXRob2RJbmRleCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJCb29sICphSGlkZUZpcnN0UGFyYW1Gcm9tSlMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUlEICogKmFJ
SURPZlJlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnNJU3VwcG9ydHMgKipfcmV0dmFsKQp7CiAgKmFIaWRlRmlyc3RQYXJhbUZyb21KUyA9IDA7CiAg
KmFJSURPZlJlc3VsdCA9IDA7CgogIG5zQ09NUHRyPG5zSURPTUV2ZW50PiBldmVudChkb19RdWVy
eUludGVyZmFjZShhSW5pdGlhbFRoaXMpKTsKICBkbyB7IGlmICghKGV2ZW50KSkgeyA7IHJldHVy
biAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7CgogIG5zQ09NUHRyPG5z
SURPTUV2ZW50VGFyZ2V0PiB0YXJnZXQ7CgogIGV2ZW50LT5HZXRDdXJyZW50VGFyZ2V0KGdldHRl
cl9BZGRSZWZzKHRhcmdldCkpOwoKICAqX3JldHZhbCA9IHRhcmdldDsKICBuc19pZl9hZGRyZWYo
Kl9yZXR2YWwpOwoKICByZXR1cm4gMDsKfQo=


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]