This is the mail archive of the gcc-bugs@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]

optimization/7281: Internal compiler error in reload_cse_simplify_operands on HP PA-RISC 2.0


>Number:         7281
>Category:       optimization
>Synopsis:       Internal compiler error in reload_cse_simplify_operands on HP PA-RISC 2.0
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Jul 11 15:36:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Deron Meranda
>Release:        3.1
>Organization:
>Environment:
HP-UX 11.0 (64-bit) on an HP serer 9000/800/L2000-44
dual processor 440 MHz PA-RISC 2.0 processor

Binutils 2.12.1

GCC 3.1 configured for 32-bit...
Configured with: /opt2/gnu/src/gcc/gcc-3.1/configure --prefix=/opt/gnu/gcc/3.1-hppa2.0 --with-gnu-as --with-as=/opt/gnu/binutils-2.12.1/bin/gnu-as --disable-nls --enable-shared --enable-version-specific-runtime-libs --enable-threads=posix --enable-languages=c,c++,java --target=hppa2.0-hp-hpux11.00 --host=hppa2.0-hp-hpux11.00
Thread model: posix
gcc version 3.1
>Description:
Trying to compile OpenSSH 3.4p1 (and using OpenSSL 0.9.7-Beta2).  Internal compiler error on the file scp.c function progressmeter() at any optimzation level (-O1..-O3).  Does not fail without optimization. Using 2.0 pa-risc architecture target.

gcc3 -save-temps -march=2.0 -O -Wall -Wpointer-arith -Wno-uninitialized -I. -I. -I/opt/gnu/openssl-0.9.7-hppa20 -I/opt/gnu/openssl-0.9.7-hppa20/include -I/opt/gnu/include -D_HPUX_SOURCE -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -DSSHDIR=\"/etc/opt/gnu/openssh\" -D_PATH_SSH_PROGRAM=\"/opt/gnu/openssh-3.4-hppa20/bin/ssh\" -D_PATH_SSH_ASKPASS_DEFAULT=\"/opt/gnu/openssh-3.4-hppa20/libexec/ssh-askpass\" -D_PATH_SFTP_SERVER=\"/opt/gnu/openssh-3.4-hppa20/libexec/sftp-server\" -D_PATH_SSH_KEY_SIGN=\"/opt/gnu/openssh-3.4-hppa20/libexec/ssh-keysign\" -D_PATH_SSH_PIDDIR=\"/var/opt/gnu/openssh\" -D_PATH_PRIVSEP_CHROOT_DIR=\"/var/opt/gnu/openssh/empty\" -DSSH_RAND_HELPER=\"/opt/gnu/openssh-3.4-hppa20/libexec/ssh-rand-helper\" -DHAVE_CONFIG_H -c scp.c
scp.c: In function `sink':
scp.c:758: warning: subscript has type `char'
scp.c: In function `progressmeter':
scp.c:1203: insn does not satisfy its constraints:
(insn 1016 83 87 (set (reg:DI 70 %fr23 [127])
        (mem/f:DI (lo_sum:SI (reg/f:SI 1 %r1 [116])
                (symbol_ref:SI ("totalbytes"))) [0 totalbytes+0 S8 A64])) 118 {*pa.md:3087} (nil)    (nil))
scp.c:1203: Internal compiler error in reload_cse_simplify_operands, at reload1.c:8368
>How-To-Repeat:
Just compile with options in description
>Fix:

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

IyAxICJzY3AuYyIKIyAxICI8YnVpbHQtaW4+IgojIDEgIjxjb21tYW5kIGxpbmU+IgojIDEgInNj
cC5jIgojIDc3ICJzY3AuYyIKIyAxICJpbmNsdWRlcy5oIiAxCiMgMjIgImluY2x1ZGVzLmgiCiMg
MSAiY29uZmlnLmgiIDEKIyAyMyAiaW5jbHVkZXMuaCIgMgoKIyAxICIvb3B0L2dudS9nY2MvMy4x
LWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvc3Rk
aW8uaCIgMSAzCiMgMTQgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBh
Mi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL29wdC9nbnUvZ2Nj
LzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRl
L3N0ZGFyZy5oIiAxIDMKIyA0MyAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGli
L2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGFyZy5oIiAzCnR5cGVkZWYgX19i
dWlsdGluX3ZhX2xpc3QgX19nbnVjX3ZhX2xpc3Q7CiMgMTUgIi9vcHQvZ251L2djYy8zLjEtaHBw
YTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9zdGRpby5o
IiAyIDMKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3Rkc3ltcy5oIiAxIDMKIyAyMSAiL29w
dC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMu
MS9pbmNsdWRlL3N0ZGlvLmgiIDIgMwojIDQ1ICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGli
L2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEg
Ii9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4w
MC8zLjEvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgMjAgIi9vcHQvZ251L2djYy8zLjEtaHBw
YTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9zeXMvdHlw
ZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvX2ludHR5cGVzLmgiIDEgMwojIDU4ICIvdXNy
L2luY2x1ZGUvc3lzL19pbnR0eXBlcy5oIiAzCnR5cGVkZWYgY2hhciBpbnQ4X3Q7CnR5cGVkZWYg
dW5zaWduZWQgY2hhciB1aW50OF90Owp0eXBlZGVmIHNob3J0IGludDE2X3Q7CnR5cGVkZWYgdW5z
aWduZWQgc2hvcnQgdWludDE2X3Q7CnR5cGVkZWYgaW50IGludDMyX3Q7CnR5cGVkZWYgdW5zaWdu
ZWQgaW50IHVpbnQzMl90OwoKdHlwZWRlZiBpbnQgaW50ZmFzdF90Owp0eXBlZGVmIHVuc2lnbmVk
IGludCB1aW50ZmFzdF90OwoKCgoKdHlwZWRlZiBsb25nIGxvbmcgaW50NjRfdDsKdHlwZWRlZiB1
bnNpZ25lZCBsb25nIGxvbmcgdWludDY0X3Q7CgoKCgoKdHlwZWRlZiBpbnQ2NF90IGludG1heF90
Owp0eXBlZGVmIHVpbnQ2NF90IHVpbnRtYXhfdDsKIyA4OCAiL3Vzci9pbmNsdWRlL3N5cy9faW50
dHlwZXMuaCIgMwp0eXBlZGVmIGxvbmcgaW50cHRyX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1
aW50cHRyX3Q7CiMgOTkgIi91c3IvaW5jbHVkZS9zeXMvX2ludHR5cGVzLmgiIDMKdHlwZWRlZiBj
aGFyIGludF9sZWFzdDhfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludF9sZWFzdDhfdDsK
Cgp0eXBlZGVmIGludCBpbnRfZmFzdDhfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50X2Zh
c3Q4X3Q7CgoKdHlwZWRlZiBzaG9ydCBpbnRfbGVhc3QxNl90OwoKCnR5cGVkZWYgdW5zaWduZWQg
c2hvcnQgdWludF9sZWFzdDE2X3Q7CgoKdHlwZWRlZiBpbnQgaW50X2Zhc3QxNl90OwoKCnR5cGVk
ZWYgdW5zaWduZWQgaW50IHVpbnRfZmFzdDE2X3Q7CgoKdHlwZWRlZiBpbnQgaW50X2xlYXN0MzJf
dDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50X2xlYXN0MzJfdDsKCgp0eXBlZGVmIGludCBp
bnRfZmFzdDMyX3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9mYXN0MzJfdDsKCgoKCgp0
eXBlZGVmIGludDY0X3QgaW50X2xlYXN0NjRfdDsKCgp0eXBlZGVmIGludDY0X3QgaW50X2Zhc3Q2
NF90OwoKCnR5cGVkZWYgdWludDY0X3QgdWludF9sZWFzdDY0X3Q7CgoKdHlwZWRlZiB1aW50NjRf
dCB1aW50X2Zhc3Q2NF90OwojIDE2NCAiL3Vzci9pbmNsdWRlL3N5cy9faW50dHlwZXMuaCIgMwp0
eXBlZGVmIHVpbnQzMl90IHB0cjMyX3Q7CiMgMjEgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9s
aWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9zeXMvdHlwZXMuaCIg
MiAzCgoKCgoKCiAgICAgICAgICAgICAgICB0eXBlZGVmIGludCBtcWRfdDsKCgoKCgogICAgIHR5
cGVkZWYgaW50MzJfdCBkZXZfdDsKCgoKCgogICAgICAgIHR5cGVkZWYgdWludDMyX3QgaW5vMzJf
dDsKCgoKCgoKICAgICAgIHR5cGVkZWYgdWludDY0X3QgaW5vNjRfdDsKIyA2MSAiL29wdC9nbnUv
Z2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNs
dWRlL3N5cy90eXBlcy5oIiAzCiAgICAgICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbm9fdDsK
CgoKCgogICAgIHR5cGVkZWYgdWludDE2X3QgbW9kZV90OwoKCgoKICAgICB0eXBlZGVmIHVpbnQx
Nl90IG5saW5rX3Q7CgoKCgogICAgdHlwZWRlZiBpbnQzMl90IGZwb3MzMl90OwoKCgoKCiAgICAg
ICB0eXBlZGVmIGludDY0X3QgZnBvczY0X3Q7CgoKCgoKCiAgICAgICB0eXBlZGVmIGludDY0X3Qg
ZnBvc190OwoKCgoKCgoKICAgICB0eXBlZGVmIHVpbnQzMl90IGZzYmxrY250MzJfdDsKCgoKCgog
ICAgICAgdHlwZWRlZiB1aW50NjRfdCBmc2Jsa2NudDY0X3Q7CgoKCgoKCiAgICAgICB0eXBlZGVm
IHVpbnQ2NF90IGZzYmxrY250X3Q7CiMgMTIwICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGli
L2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMK
ICAgICB0eXBlZGVmIGludDMyX3Qgb2ZmMzJfdDsKCgoKCgogICAgICAgIHR5cGVkZWYgaW50NjRf
dCBvZmY2NF90OwoKCgoKCgogICAgICAgIHR5cGVkZWYgaW50NjRfdCBvZmZfdDsKIyAxNDIgIi9v
cHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8z
LjEvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwogICAgIHR5cGVkZWYgdWludDMyX3QgZnNmaWxjbnQz
Ml90OwoKCgoKCiAgICAgICB0eXBlZGVmIHVpbnQ2NF90IGZzZmlsY250NjRfdDsKCgoKCgoKICAg
ICAgICB0eXBlZGVmIHVpbnQ2NF90IGZzZmlsY250X3Q7CiMgMTY0ICIvb3B0L2dudS9nY2MvMy4x
LWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvc3lz
L3R5cGVzLmgiIDMKICAgICB0eXBlZGVmIGludDMyX3QgYmxrY250MzJfdDsKCgoKCgogICAgICAg
dHlwZWRlZiBpbnQ2NF90IGJsa2NudDY0X3Q7CgoKCgoKCiAgICAgICAgdHlwZWRlZiBpbnQ2NF90
IGJsa2NudF90OwojIDE4NiAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hw
cGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiAgICAgdHlwZWRl
ZiBpbnQzMl90IHBpZF90OwoKCgoKICAgICB0eXBlZGVmIGludDMyX3QgbHdwaWRfdDsKCgoKCiAg
ICAgdHlwZWRlZiBpbnQzMl90IGdpZF90OwoKCgoKICAgICB0eXBlZGVmIGludDMyX3QgdWlkX3Q7
CgoKCgogICAgIHR5cGVkZWYgaW50MzJfdCB0aWRfdDsKCgoKCiAgICAgICAgdHlwZWRlZiBsb25n
IHNzaXplX3Q7CgoKCgogICAgIHR5cGVkZWYgdWludDE2X3QgX19zaXRlX3Q7CgoKCgogICAgIHR5
cGVkZWYgdWludDE2X3QgX19jbm9kZV90OwojIDIzMSAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4w
L2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N5cy90eXBlcy5o
IiAzCiAgICAgICAgICAgICAgICB0eXBlZGVmIGxvbmcgdGltZV90OwojIDI0MSAiL29wdC9nbnUv
Z2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNs
dWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgbG9uZyB1bnNpZ25lZCBpbnQgc2l6ZV90OwojIDI1
MCAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDEx
LjAwLzMuMS9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiAgICAgdHlwZWRlZiB1aW50MzJfdCBjbG9j
a190OwoKCgoKCgogICAgICB0eXBlZGVmIGludDMyX3Qga2V5X3Q7CgoKICAgdHlwZWRlZiB1bnNp
Z25lZCBzaG9ydCBfX3VzaG9ydDsKCiAgIHR5cGVkZWYgaW50MzJfdCBfX2RhZGRyX3Q7CiAgIHR5
cGVkZWYgY2hhciAqX19jYWRkcl90OwogICB0eXBlZGVmIGludDMyX3QgX19zd2Jsa190OwoKCgoK
CgogICAgIHR5cGVkZWYgX19jYWRkcl90IGNhZGRyX3Q7CgoKCgoKCgogICAgIHR5cGVkZWYgaW50
MzJfdCBpZF90OwoKCgoKICAgICB0eXBlZGVmIHVpbnQzMl90IHVzZWNvbmRzX3Q7CgoKCgoKCiAg
ICAgIHR5cGVkZWYgdWludDMyX3QgcmxpbTMyX3Q7CgoKCgoKICAgICAgICB0eXBlZGVmIHVpbnQ2
NF90IHJsaW02NF90OwoKCgoKCgoKICAgICAgICAgdHlwZWRlZiB1aW50NjRfdCBybGltX3Q7CiMg
MzE0ICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4
MTEuMDAvMy4xL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKICAgdHlwZWRlZiBfX3NpdGVfdCBzaXRl
X3Q7CgoKCiAgIHR5cGVkZWYgdW5zaWduZWQgY2hhciB1X2NoYXI7CiAgIHR5cGVkZWYgdW5zaWdu
ZWQgc2hvcnQgdV9zaG9ydDsKICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ7CiAgIHR5cGVk
ZWYgdW5zaWduZWQgbG9uZyB1X2xvbmc7CiAgIHR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQ7CiAg
IHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdXNob3J0OwogICB0eXBlZGVmIHVuc2lnbmVkIGNoYXIg
dWJpdDg7CiAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdWJpdDE2OwogICB0eXBlZGVmIHVpbnQz
Ml90IHViaXQzMjsKICAgdHlwZWRlZiBjaGFyIHNiaXQ4OwogICB0eXBlZGVmIHNob3J0IHNiaXQx
NjsKICAgdHlwZWRlZiBpbnQzMl90IHNiaXQzMjsKCiAgIHR5cGVkZWYgX19zd2Jsa190IHN3Ymxr
X3Q7CiAgIHR5cGVkZWYgX19kYWRkcl90IGRhZGRyX3Q7CiAgIHR5cGVkZWYgX19jbm9kZV90IGNu
b2RlX3Q7CgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvbWFjaGluZS92bXR5cGVzLmgiIDEgMwojIDEw
ICIvdXNyL2luY2x1ZGUvbWFjaGluZS92bXR5cGVzLmgiIDMKICAgdHlwZWRlZiB1aW50cHRyX3Qg
cGFkZHJfdDsKCgoKCgoKICAgdHlwZWRlZiBpbnRwdHJfdCBwYWdlX3Q7CiAgIHR5cGVkZWYgaW50
MzJfdCBwZ2NudF90OwogICB0eXBlZGVmIHVpbnQzMl90IHBoeXNwZm5fdDsKICAgdHlwZWRlZiB1
aW50cHRyX3QgaW9waHlzcGZuX3Q7CiAgIHR5cGVkZWYgdWludHB0cl90IHBnYWRkcl90OwoKICAg
dHlwZWRlZiB1aW50MzJfdCBzcGFjZV90OwogICB0eXBlZGVmIHVpbnQzMl90IHByb3RfdDsKIyAz
NDAgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgx
MS4wMC8zLjEvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCgogICB0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgdWxvbmdfdDsKCgogICB0eXBlZGVmIGludDE2X3QgY250X3Q7CiAgIHR5cGVkZWYgdWlu
dDMyX3QgY2Rub190OwogICB0eXBlZGVmIHVpbnQxNl90IHVzZV90OwoKICAgdHlwZWRlZiBzdHJ1
Y3QgX3BoeXNhZHIgeyBpbnRwdHJfdCByWzFdOyB9ICpwaHlzYWRyOwogICB0eXBlZGVmIHN0cnVj
dCBfcXVhZCB7IGxvbmcgdmFsWzJdOyB9IHF1YWQ7CgogICB0eXBlZGVmIGludCBzcHVfdDsKCgoK
CgogICAgIHR5cGVkZWYgc2hvcnQgY3B1X3Q7CgogICAgIHR5cGVkZWYgc3RydWN0IGxhYmVsX3Qg
ewoKCgoKCgoKICAgICAgICBpbnQzMl90IGxibF9ycDsKICAgICAgICBpbnQzMl90IGxibF9zcDsK
ICAgICAgICBpbnQzMl90IGxibF9zWzE3XTsKICAgICAgICBpbnQzMl90IGxibF9zc1sxXTsKICAg
ICAgICBkb3VibGUgbGJsX3NmWzEwXTsKCiAgICB9IGxhYmVsX3Q7CgoKCgp0eXBlZGVmIHN0cnVj
dCBsa2luZm8gewogICAgICAgY2hhciAqbGtfbmFtZTsKICAgICAgIGludCBsa19mbGFnczsKICAg
ICAgIGxvbmcgbGtfcGFkWzJdOwp9IGxraW5mb190OwoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHBs
X3Q7CgoKICAgdHlwZWRlZiBjaGFyICpkbV9tZXNzYWdlOwoKCgoKICAgICAgdHlwZWRlZiBpbnQz
Ml90IGFpZF90OwojIDQwNCAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hw
cGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiAgIHR5cGVkZWYg
cGlkX3Qgc2lkX3Q7CiMgNDE5ICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGliL2djYy1saWIv
aHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNy
L2luY2x1ZGUvc3lzL19mZF9tYWNyb3MuaCIgMSAzCiMgNTEgIi91c3IvaW5jbHVkZS9zeXMvX2Zk
X21hY3Jvcy5oIiAzCnR5cGVkZWYgaW50MzJfdCBfX2ZkX21hc2s7CiMgNjAgIi91c3IvaW5jbHVk
ZS9zeXMvX2ZkX21hY3Jvcy5oIiAzCiAgIHR5cGVkZWYgc3RydWN0IGZkX3NldCB7CiAgICAgbG9u
ZyBmZHNfYml0c1soKCgyMDQ4KSsoKChzaXplb2YobG9uZykgKiA4KSktMSkpLygoc2l6ZW9mKGxv
bmcpICogOCkpKV07CiAgICAgfSBmZF9zZXQ7CiMgNDIwICIvb3B0L2dudS9nY2MvMy4xLWhwcGEy
LjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvc3lzL3R5cGVz
LmgiIDIgMwojIDQyOSAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEy
LjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiAgICAgdHlwZWRlZiBf
X2ZkX21hc2sgZmRfbWFzazsKIyA0ODMgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2Nj
LWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwogICAg
ICAgIHR5cGVkZWYgaW50MzJfdCBkaXJfb2ZmX3Q7CiMgNDYgIi9vcHQvZ251L2djYy8zLjEtaHBw
YTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9zdGRpby5o
IiAyIDMKIyA3NyAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAt
aHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKCiAgIHR5cGVkZWYgc3RydWN0IHsK
ICAgICAgICBpbnQgX19jbnQ7CiAgICAgICAgdW5zaWduZWQgY2hhciAqX19wdHI7CiAgICAgICAg
dW5zaWduZWQgY2hhciAqX19iYXNlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IF9fZmxhZzsKICAg
ICAgICB1bnNpZ25lZCBjaGFyIF9fZmlsZUw7CiAgICAgICAgdW5zaWduZWQgY2hhciBfX2ZpbGVI
OwogICB9IEZJTEU7CgoKICAgdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBfX2NudDsKICAg
ICAgICB1bnNpZ25lZCBjaGFyICpfX3B0cjsKICAgICAgICB1bnNpZ25lZCBjaGFyICpfX2Jhc2U7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgX19mbGFnOwogICAgICAgIHVuc2lnbmVkIGNoYXIgX19m
aWxlTDsKICAgICAgICB1bnNpZ25lZCBjaGFyIF9fZmlsZUg7CiAgICAgICAgdW5zaWduZWQgY2hh
ciAqX19idWZlbmRwOwogICAgICAgIHVuc2lnbmVkIGNoYXIgKl9fbmV3YmFzZTsKICAgICAgICB1
bnNpZ25lZCBjaGFyIF9fc21idWZbOCArMio0XTsKCgoKICAgICAgICB2b2lkICpfX3VudXNlZDsK
CiAgIH0gX0ZJTEVYOwojIDEyMyAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGli
L2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvc3lzL19udWxsLmgiIDEgMwojIDEyNCAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xp
Yi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoK
CgojIDEgIi91c3IvaW5jbHVkZS9zeXMvX3NpemVfdC5oIiAxIDMKIyAxMjggIi9vcHQvZ251L2dj
Yy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVk
ZS9zdGRpby5oIiAyIDMKIyAxNTggIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxp
Yi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9zdGRpby5oIiAzCiAgICAgdHlwZWRl
ZiBkb3VibGUgKl9fdmFfbGlzdDsKIyAxODcgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIv
Z2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9zdGRpby5oIiAzCiAgIGV4
dGVybiBGSUxFIF9faW9iW107CgoKCiAgICAgZXh0ZXJuIGludCByZW1vdmUoY29uc3QgY2hhciAq
KTsKCiAgICAgZXh0ZXJuIGludCByZW5hbWUoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwoK
ICAgICBleHRlcm4gY2hhciAqdG1wbmFtKGNoYXIgKik7CiAgICAgZXh0ZXJuIGludCBmY2xvc2Uo
RklMRSAqKTsKICAgICBleHRlcm4gaW50IGZmbHVzaChGSUxFICopOwogICAgIGV4dGVybiB2b2lk
IHNldGJ1ZihGSUxFICosIGNoYXIgKik7CiAgICAgZXh0ZXJuIGludCBzZXR2YnVmKEZJTEUgKiwg
Y2hhciAqLCBpbnQsIHNpemVfdCk7CiAgICAgZXh0ZXJuIGludCBmcHJpbnRmKEZJTEUgKiwgY29u
c3QgY2hhciAqLCAuLi4pOwogICAgIGV4dGVybiBpbnQgZnNjYW5mKEZJTEUgKiwgY29uc3QgY2hh
ciAqLC4uLik7CiAgICAgZXh0ZXJuIGludCBwcmludGYoY29uc3QgY2hhciAqLC4uLik7CiAgICAg
ZXh0ZXJuIGludCBzY2FuZihjb25zdCBjaGFyICosLi4uKTsKICAgICBleHRlcm4gaW50IHNwcmlu
dGYoY2hhciAqLCBjb25zdCBjaGFyICosLi4uKTsKICAgICBleHRlcm4gaW50IHNzY2FuZihjb25z
dCBjaGFyICosIGNvbnN0IGNoYXIgKiwuLi4pOwogICAgIGV4dGVybiBpbnQgZmdldGMoRklMRSAq
KTsKICAgICBleHRlcm4gY2hhciAqZmdldHMoY2hhciAqLCBpbnQsIEZJTEUgKik7CiAgICAgZXh0
ZXJuIGludCBmcHV0YyhpbnQsIEZJTEUgKik7CiAgICAgZXh0ZXJuIGludCBmcHV0cyhjb25zdCBj
aGFyICosIEZJTEUgKik7CiAgICAgZXh0ZXJuIGludCBnZXRjKEZJTEUgKik7CiAgICAgZXh0ZXJu
IGludCBnZXRjaGFyKHZvaWQpOwogICAgIGV4dGVybiBjaGFyICpnZXRzKGNoYXIgKik7CiAgICAg
ZXh0ZXJuIGludCBwdXRjKGludCwgRklMRSAqKTsKICAgICBleHRlcm4gaW50IHB1dGNoYXIoaW50
KTsKICAgICBleHRlcm4gaW50IHB1dHMoY29uc3QgY2hhciAqKTsKICAgICBleHRlcm4gaW50IHVu
Z2V0YyhpbnQsIEZJTEUgKik7CiAgICAgc3RhdGljIEZJTEUgKnRtcGZpbGUodm9pZCk7CiAgICAg
c3RhdGljIGludCBmZ2V0cG9zKEZJTEUgKiwgZnBvc190ICopOwogICAgIHN0YXRpYyBpbnQgZnNl
dHBvcyhGSUxFICosIGNvbnN0IGZwb3NfdCAqKTsKICAgICBzdGF0aWMgRklMRSAqZm9wZW4oY29u
c3QgY2hhciAqLCBjb25zdCBjaGFyICopOwogICAgIHN0YXRpYyBGSUxFICpmcmVvcGVuKGNvbnN0
IGNoYXIgKiwgY29uc3QgY2hhciAqLCBGSUxFICopOwogICAgIGV4dGVybiBpbnQgZnNlZWsoRklM
RSAqLCBsb25nIGludCwgaW50KTsKICAgICBleHRlcm4gbG9uZyBpbnQgZnRlbGwoRklMRSAqKTsK
ICAgICBleHRlcm4gdm9pZCByZXdpbmQoRklMRSAqKTsKICAgICBleHRlcm4gdm9pZCBjbGVhcmVy
cihGSUxFICopOwogICAgIGV4dGVybiBpbnQgZmVvZihGSUxFICopOwogICAgIGV4dGVybiBpbnQg
ZmVycm9yKEZJTEUgKik7CiAgICAgZXh0ZXJuIHZvaWQgcGVycm9yKGNvbnN0IGNoYXIgKik7Cgoj
IDMxMCAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1
eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKCiAgICAgICBleHRlcm4gc2l6ZV90IGZyZWFk
KHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIEZJTEUgKik7CiAgICAgICBleHRlcm4gc2l6ZV90IGZ3
cml0ZShjb25zdCB2b2lkICosIHNpemVfdCwgc2l6ZV90LCBGSUxFICopOwoKIyAzMjggIi9vcHQv
Z251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEv
aW5jbHVkZS9zdGRpby5oIiAzCiAgICAgZXh0ZXJuIGludCBfX2Zsc2J1Zih1bnNpZ25lZCBjaGFy
LCBGSUxFICopOwogICAgIGV4dGVybiBpbnQgX19maWxidWYoRklMRSAqKTsKIyAzOTkgIi9vcHQv
Z251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEv
aW5jbHVkZS9zdGRpby5oIiAzCiAgICAgZXh0ZXJuIGNoYXIgKmN0ZXJtaWQoY2hhciAqKTsKICAg
ICBleHRlcm4gaW50IGZpbGVubyhGSUxFICopOwogICAgIGV4dGVybiBGSUxFICpmZG9wZW4oaW50
LCBjb25zdCBjaGFyICopOwojIDQyMiAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2Mt
bGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKCiAgICAgICAg
IHR5cGVkZWYgZG91YmxlICpfX25vdF92YV9saXN0X187CgoKCgogICAgIGV4dGVybiBjaGFyICpv
cHRhcmc7CiAgICAgZXh0ZXJuIGludCBvcHRlcnI7CiAgICAgZXh0ZXJuIGludCBvcHRpbmQ7CiAg
ICAgZXh0ZXJuIGludCBvcHRvcHQ7CgoKICAgICAgIGV4dGVybiBpbnQgZ2V0b3B0KGludCwgY2hh
ciAqIGNvbnN0IFtdLCBjb25zdCBjaGFyICopOwogICAgICAgZXh0ZXJuIGNoYXIgKmN1c2VyaWQo
Y2hhciAqKTsKIyA0NDcgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBh
Mi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9zdGRpby5oIiAzCiAgICAgZXh0ZXJuIGludCBn
ZXR3KEZJTEUgKik7CiAgICAgZXh0ZXJuIGludCBwdXR3KGludCwgRklMRSAqKTsKICAgICBleHRl
cm4gaW50IHBjbG9zZShGSUxFICopOwogICAgIGV4dGVybiBGSUxFICpwb3Blbihjb25zdCBjaGFy
ICosIGNvbnN0IGNoYXIgKik7CiAgICAgZXh0ZXJuIGNoYXIgKnRlbXBuYW0oY29uc3QgY2hhciAq
LCBjb25zdCBjaGFyICopOwojIDQ3NCAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2Mt
bGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKCgogICAgIGV4
dGVybiBpbnQgdnByaW50Zihjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKICAgICBleHRl
cm4gaW50IHZmcHJpbnRmKEZJTEUgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CiAg
ICAgZXh0ZXJuIGludCB2c3ByaW50ZihjaGFyICosIGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xp
c3QpOwoKCgoKCgojIDQ5MyAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hw
cGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKICAgICBleHRlcm4gaW50
IHNucHJpbnRmKGNoYXIgKiwgc2l6ZV90LCBjaGFyICosLi4uKTsKICAgICBleHRlcm4gaW50IHZz
bnByaW50ZihjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CiAg
ICAgZXh0ZXJuIGludCB2c2NhbmYoY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CiAgICAg
ZXh0ZXJuIGludCB2ZnNjYW5mKEZJTEUgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7
CiAgICAgZXh0ZXJuIGludCB2c3NjYW5mKGNoYXIgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFf
bGlzdCk7CiAgICAgZXh0ZXJuIHZvaWQgZmxvY2tmaWxlKEZJTEUgKik7CiAgICAgZXh0ZXJuIGlu
dCBmdHJ5bG9ja2ZpbGUoRklMRSAqKTsKICAgICBleHRlcm4gdm9pZCBmdW5sb2NrZmlsZShGSUxF
ICopOwojIDU0OCAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAt
aHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKICAgZXh0ZXJuIHVuc2lnbmVkIGNo
YXIgKl9fYnVmZW5kdGFiW107CiMgNjA4ICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGliL2dj
Yy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMwogICAgZXh0
ZXJuIG9mZjY0X3QgX19mdGVsbG82NCAoRklMRSAqKTsKICAgIGV4dGVybiBGSUxFICpfX2ZvcGVu
NjQgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKICAgIGV4dGVybiBGSUxFICpfX2ZyZW9w
ZW42NCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHJlZ2lzdGVyIEZJTEUgKiApOwoKICAg
IGV4dGVybiBGSUxFICpfX3RtcGZpbGU2NCAodm9pZCk7CiAgICBleHRlcm4gaW50IF9fZnNlZWtv
NjQgKEZJTEUgKiwgb2ZmX3QsIGludCk7CiAgICBleHRlcm4gaW50IF9fZmdldHBvczY0IChGSUxF
ICosIGZwb3NfdCAqKTsKICAgIGV4dGVybiBpbnQgX19mc2V0cG9zNjQgKEZJTEUgKiwgY29uc3Qg
ZnBvc190ICopOwojIDYzMiAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hw
cGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKCiAgICAgICAgc3RhdGlj
IGludCBmZ2V0cG9zKEZJTEUgKl9fYSwgZnBvc190ICpfX2IpCiAgICAgICAgICAgICAgICB7cmV0
dXJuIF9fZmdldHBvczY0KF9fYSxfX2IpO30KICAgICAgICBzdGF0aWMgaW50IGZzZXRwb3MoRklM
RSAqX19hLCBjb25zdCBmcG9zX3QgKl9fYikKICAgICAgICAgICAgICAgIHtyZXR1cm4gX19mc2V0
cG9zNjQoX19hLF9fYik7fQogICAgICAgIHN0YXRpYyBGSUxFICpmb3Blbihjb25zdCBjaGFyICpf
X2EsIGNvbnN0IGNoYXIgKl9fYikKICAgICAgICAgICAgICAgIHtyZXR1cm4gX19mb3BlbjY0KF9f
YSxfX2IpO30KICAgICAgICBzdGF0aWMgRklMRSAqZnJlb3Blbihjb25zdCBjaGFyICpfX2EsIGNv
bnN0IGNoYXIgKl9fYiwKICAgICAgICAgICAgICAgIEZJTEUgKl9fYykge3JldHVybiBfX2ZyZW9w
ZW42NChfX2EsX19iLF9fYyk7fQogICAgICAgIHN0YXRpYyBGSUxFICp0bXBmaWxlKHZvaWQpIHty
ZXR1cm4gX190bXBmaWxlNjQoKTt9CgojIDI1ICJpbmNsdWRlcy5oIiAyCiMgMSAiL29wdC9nbnUv
Z2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNs
dWRlL2N0eXBlLmgiIDEgMwojIDQ0ICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGliL2djYy1s
aWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvY3R5cGUuaCIgMwoKICAgICBleHRl
cm4gaW50IGlzYWxudW0oaW50KTsKICAgICBleHRlcm4gaW50IGlzYWxwaGEoaW50KTsKICAgICBl
eHRlcm4gaW50IGlzY250cmwoaW50KTsKICAgICBleHRlcm4gaW50IGlzZGlnaXQoaW50KTsKICAg
ICBleHRlcm4gaW50IGlzZ3JhcGgoaW50KTsKICAgICBleHRlcm4gaW50IGlzbG93ZXIoaW50KTsK
ICAgICBleHRlcm4gaW50IGlzcHJpbnQoaW50KTsKICAgICBleHRlcm4gaW50IGlzcHVuY3QoaW50
KTsKICAgICBleHRlcm4gaW50IGlzc3BhY2UoaW50KTsKICAgICBleHRlcm4gaW50IGlzdXBwZXIo
aW50KTsKICAgICBleHRlcm4gaW50IGlzeGRpZ2l0KGludCk7CgojIDcyICIvb3B0L2dudS9nY2Mv
My4xLWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUv
Y3R5cGUuaCIgMwogICAgIGV4dGVybiB1bnNpZ25lZCBjaGFyICpfX2N0eXBlOwogICAgIGV4dGVy
biB1bnNpZ25lZCBjaGFyICpfX2N0eXBlMjsKCiAgICAgZXh0ZXJuIHVuc2lnbmVkIGNoYXIgKl9f
dXBzaGlmdDsKICAgICBleHRlcm4gdW5zaWduZWQgY2hhciAqX19kb3duc2hpZnQ7CgoKCgoKCgoK
ZXh0ZXJuIGludCB0b2xvd2VyKGludCk7CmV4dGVybiBpbnQgdG91cHBlcihpbnQpOwoKIyA5NyAi
L29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAw
LzMuMS9pbmNsdWRlL2N0eXBlLmgiIDMKICAgICBleHRlcm4gaW50IGlzYXNjaWkoaW50KTsKICAg
ICBleHRlcm4gaW50IHRvYXNjaWkoaW50KTsKIyAxMTMgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIu
MC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9jdHlwZS5oIiAz
CmV4dGVybiBpbnQgX190b2xvd2VyKGludCk7CmV4dGVybiBpbnQgX190b3VwcGVyKGludCk7CiMg
MTQ1ICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4
MTEuMDAvMy4xL2luY2x1ZGUvY3R5cGUuaCIgMwogICAgIGV4dGVybiBpbnQgaXNjdHlwZShpbnQs
IHVuc2lnbmVkIGludCk7CiAgICAgZXh0ZXJuIGludCBpc2JsYW5rKGludCk7CgoKCgoKCiAgICAg
ZXh0ZXJuIHVuc2lnbmVkIGludCAqX19TQl9tYXNrczsKCiAgICAgZXh0ZXJuIGludCBfaXNhbG51
bShpbnQpOwogICAgIGV4dGVybiBpbnQgX2lzYWxwaGEoaW50KTsKICAgICBleHRlcm4gaW50IF9p
c2NudHJsKGludCk7CiAgICAgZXh0ZXJuIGludCBfaXNkaWdpdChpbnQpOwogICAgIGV4dGVybiBp
bnQgX2lzZ3JhcGgoaW50KTsKICAgICBleHRlcm4gaW50IF9pc2xvd2VyKGludCk7CiAgICAgZXh0
ZXJuIGludCBfaXNwcmludChpbnQpOwogICAgIGV4dGVybiBpbnQgX2lzcHVuY3QoaW50KTsKICAg
ICBleHRlcm4gaW50IF9pc3NwYWNlKGludCk7CiAgICAgZXh0ZXJuIGludCBfaXN1cHBlcihpbnQp
OwogICAgIGV4dGVybiBpbnQgX2lzeGRpZ2l0KGludCk7CiMgMjYgImluY2x1ZGVzLmgiIDIKIyAx
ICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEu
MDAvMy4xL2luY2x1ZGUvZXJybm8uaCIgMSAzCiMgNTcgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIu
MC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9lcnJuby5oIiAz
CiAgICAgICAgZXh0ZXJuIGludCBlcnJubzsKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9lcnJuby5o
IiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRlL3N5cy9lcnJuby5oIiAzCiAgICAgICAgIGV4dGVybiBp
bnQgZXJybm87CiMgNjAgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBh
Mi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9lcnJuby5oIiAyIDMKIyAyNyAiaW5jbHVkZXMu
aCIgMgojIDEgIi91c3IvaW5jbHVkZS9mY250bC5oIiAxIDMKIyA5ICIvdXNyL2luY2x1ZGUvZmNu
dGwuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmNudGwuaCIgMSAzCiMgMTYyICIvdXNyL2lu
Y2x1ZGUvc3lzL2ZjbnRsLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL19mbG9ja19ib2R5Lmgi
IDEgMwojIDEwICIvdXNyL2luY2x1ZGUvc3lzL19mbG9ja19ib2R5LmgiIDMKICAgc3RydWN0IGZs
b2NrIHsKICAgICAgc2hvcnQgbF90eXBlOwogICAgICBzaG9ydCBsX3doZW5jZTsKICAgICAgb2Zm
X3QgbF9zdGFydDsKICAgICAgb2ZmX3QgbF9sZW47CgoKCgogICAgICBwaWRfdCBsX3BpZDsKCgog
ICB9OwojIDE2MyAiL3Vzci9pbmNsdWRlL3N5cy9mY250bC5oIiAyIDMKIyAyMDcgIi91c3IvaW5j
bHVkZS9zeXMvZmNudGwuaCIgMwogICAgICAgZXh0ZXJuIGludCBmY250bCAoaW50LCBpbnQsIC4u
Lik7CiAgICAgICBzdGF0aWMgaW50IGNyZWF0IChjb25zdCBjaGFyICosIG1vZGVfdCk7CiMgMjI1
ICIvdXNyL2luY2x1ZGUvc3lzL2ZjbnRsLmgiIDMKZXh0ZXJuIGludCBfX2NyZWF0NjQgKGNvbnN0
IGNoYXIgKiwgbW9kZV90KTsKZXh0ZXJuIGludCBfX29wZW42NCAoY29uc3QgY2hhciAqLCBpbnQs
IG1vZGVfdCk7CiMgMjM1ICIvdXNyL2luY2x1ZGUvc3lzL2ZjbnRsLmgiIDMKc3RhdGljIGludCBv
cGVuKGEsYixjKSBjb25zdCBjaGFyICphOyBpbnQgYjsgbW9kZV90IGM7CgogICAgICAgIHsgcmV0
dXJuIF9fb3BlbjY0KGEsYixjKTsgfQoKCnN0YXRpYyBpbnQgY3JlYXQoY29uc3QgY2hhciAqYSwg
bW9kZV90IGIpCgoKCiAgICAgICAgeyByZXR1cm4gX19jcmVhdDY0KGEsYik7IH0KIyAxMCAiL3Vz
ci9pbmNsdWRlL2ZjbnRsLmgiIDIgMwojIDI4ICJpbmNsdWRlcy5oIiAyCiMgMSAiL3Vzci9pbmNs
dWRlL3NpZ25hbC5oIiAxIDMKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMSAz
CiMgMTUgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lz
L3NpZ2V2ZW50LmgiIDEgMwojIDIyICIvdXNyL2luY2x1ZGUvc3lzL3NpZ2V2ZW50LmgiIDMKdHlw
ZWRlZiB1bmlvbiBzaWd2YWwgewoKCgogICAgICBzdHJ1Y3QgewoKCgogICAgICAgICAgaW50IF9f
c3ZpX2ludDsKICAgICAgfSBfX3N2aV9pbnRfczsKICAgICAgdm9pZCAqIF9fc2l2YWxfcHRyOwog
ICB9IHNpZ3ZhbF90OwoKCgoKCgp0eXBlZGVmIGludCBwdGhyZWFkX2F0dHJfdDsKCgoKCnR5cGVk
ZWYgc3RydWN0IHNpZ2V2ZW50IHsKCgoKICAgICAgaW50IF9fc2lnZXZfbm90aWZ5OwogICAgICBp
bnQgX19zaWdldl9zaWdubzsKICAgICAgc2lndmFsX3QgX19zaWdldl92YWx1ZTsKCgoKCiAgICAg
IHZvaWQgKCpfX3NpZ2V2X25vdGlmeV9mdW5jdGlvbikoc2lndmFsX3QpOwoKCgoKCiAgICAgIHB0
aHJlYWRfYXR0cl90ICpfX3NpZ2V2X25vdGlmeV9hdHRyaWJ1dGVzOwoKCgoKCgoKICAgICAgaW50
IF9fc2lnZXZfcmVzZXJ2ZWRbOF07CgogICB9IHNpZ2V2ZW50X3Q7CgogIGVudW0gX19zaWdldl90
eXBlcyB7CiAgICAgICAgICBfX1NJR0VWX05PTkUgPSAxLAogICAgICAgICAgX19TSUdFVl9TSUdO
QUwKCiAgICAgICAgICAsX19TSUdFVl9USFJFQUQKCiAgfTsKIyAxNiAiL3Vzci9pbmNsdWRlL3N5
cy9zaWduYWwuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zaWdpbmZvLmgiIDEgMwojIDE5
ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ2luZm8uaCIgMwplbnVtIF9fc2lfY29kZXMgewogICAgICAg
IFNJX1FVRVVFID0gLTIsCiAgICAgICAgU0lfVVNFUiA9IC0xLAogICAgICAgIFNJX1RJTUVSID0g
MSwKICAgICAgICBTSV9BU1lOQ0lPPSAyLAogICAgICAgIFNJX01FU0dRID0gMwp9OwojIDM4ICIv
dXNyL2luY2x1ZGUvc3lzL3NpZ2luZm8uaCIgMwp0eXBlZGVmIHN0cnVjdCBfX3NpZ2luZm8gewoK
CgogICAgICAgIGludCBzaV9zaWdubzsKICAgICAgICBpbnQgc2lfY29kZTsKICAgICAgICBpbnQg
c2lfZXJybm87CiAgICAgICAgc2lndmFsX3Qgc2lfdmFsdWU7CiAgICAgICAgdW5pb24gewogICAg
ICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgcGlkX3QgX19waWQ7
CiAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWlkX3QgX191aWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBfX2tpbGw7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBfX3N0YXR1czsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9IF9fU0lHQ0xEOwogICAgICAgICAgICAgICAgICAgICAgICB9IF9fcGRhdGE7
CiAgICAgICAgICAgICAgICB9IF9fcHJvYzsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHZvaWQgKl9fYWRkcjsKICAgICAgICAgICAgICAgIH0gX19mYXVs
dDsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBf
X2ZkOwogICAgICAgICAgICAgICAgICAgICAgICBsb25nIF9fYmFuZDsKICAgICAgICAgICAgICAg
IH0gX19maWxlOwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAg
ICAgdm9pZCAqX19hZGRyOwogICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpfX2xvY2twYWdl
OwogICAgICAgICAgICAgICAgICAgICAgICBsb25nIF9fZGV2X2lkOwogICAgICAgICAgICAgICAg
fSBfX2dmYXVsdDsKICAgICAgICB9IF9fZGF0YTsKCiAgICAgICAgbG9uZyBfX3BhZFs5XTsKfSBz
aWdpbmZvX3Q7CiMgMTcgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDIgMwojIDEgIi91c3Iv
aW5jbHVkZS9zeXMvbmV3c2lnLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvc3lzL25ld3NpZy5o
IiAzCiAgICAgdHlwZWRlZiBzdHJ1Y3QgX19zaWdzZXRfdCB7CiAgICAgICAgICB1bnNpZ25lZCBp
bnQgc2lnc2V0WzhdOwogICAgIH0gc2lnc2V0X3Q7CiMgNDMgIi91c3IvaW5jbHVkZS9zeXMvbmV3
c2lnLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvbWFjaGluZS9zYXZlX3N0YXRlLmgiIDEgMwojIDE4
NCAiL3Vzci9pbmNsdWRlL21hY2hpbmUvc2F2ZV9zdGF0ZS5oIiAzCnR5cGVkZWYgc3RydWN0IF9f
ZnBfZGJsX2Jsb2NrIHsKCiAgICAgICAgZG91YmxlIHNzX2ZwMDsKICAgICAgICBkb3VibGUgc3Nf
ZnAxOwogICAgICAgIGRvdWJsZSBzc19mcDI7CiAgICAgICAgZG91YmxlIHNzX2ZwMzsKICAgICAg
ICBkb3VibGUgc3NfZnA0OwogICAgICAgIGRvdWJsZSBzc19mcDU7CiAgICAgICAgZG91YmxlIHNz
X2ZwNjsKICAgICAgICBkb3VibGUgc3NfZnA3OwogICAgICAgIGRvdWJsZSBzc19mcDg7CiAgICAg
ICAgZG91YmxlIHNzX2ZwOTsKICAgICAgICBkb3VibGUgc3NfZnAxMDsKICAgICAgICBkb3VibGUg
c3NfZnAxMTsKICAgICAgICBkb3VibGUgc3NfZnAxMjsKICAgICAgICBkb3VibGUgc3NfZnAxMzsK
ICAgICAgICBkb3VibGUgc3NfZnAxNDsKICAgICAgICBkb3VibGUgc3NfZnAxNTsKICAgICAgICBk
b3VibGUgc3NfZnAxNjsKICAgICAgICBkb3VibGUgc3NfZnAxNzsKICAgICAgICBkb3VibGUgc3Nf
ZnAxODsKICAgICAgICBkb3VibGUgc3NfZnAxOTsKICAgICAgICBkb3VibGUgc3NfZnAyMDsKICAg
ICAgICBkb3VibGUgc3NfZnAyMTsKICAgICAgICBkb3VibGUgc3NfZnAyMjsKICAgICAgICBkb3Vi
bGUgc3NfZnAyMzsKICAgICAgICBkb3VibGUgc3NfZnAyNDsKICAgICAgICBkb3VibGUgc3NfZnAy
NTsKICAgICAgICBkb3VibGUgc3NfZnAyNjsKICAgICAgICBkb3VibGUgc3NfZnAyNzsKICAgICAg
ICBkb3VibGUgc3NfZnAyODsKICAgICAgICBkb3VibGUgc3NfZnAyOTsKICAgICAgICBkb3VibGUg
c3NfZnAzMDsKICAgICAgICBkb3VibGUgc3NfZnAzMTsKfSBmcF9kYmxfYmxvY2tfdDsKCgoKCnR5
cGVkZWYgc3RydWN0IF9fZnBfaW50X2Jsb2NrIHsKCiAgICAgICAgaW50IHNzX2Zwc3RhdDsKICAg
ICAgICBpbnQgc3NfZnBleGNlcHQxOwogICAgICAgIGludCBzc19mcGV4Y2VwdDI7CiAgICAgICAg
aW50IHNzX2ZwZXhjZXB0MzsKICAgICAgICBpbnQgc3NfZnBleGNlcHQ0OwogICAgICAgIGludCBz
c19mcGV4Y2VwdDU7CiAgICAgICAgaW50IHNzX2ZwZXhjZXB0NjsKICAgICAgICBpbnQgc3NfZnBl
eGNlcHQ3OwogICAgICAgIGludCBzc19mcDRfaGk7CiAgICAgICAgaW50IHNzX2ZwNF9sbzsKICAg
ICAgICBpbnQgc3NfZnA1X2hpOwogICAgICAgIGludCBzc19mcDVfbG87CiAgICAgICAgaW50IHNz
X2ZwNl9oaTsKICAgICAgICBpbnQgc3NfZnA2X2xvOwogICAgICAgIGludCBzc19mcDdfaGk7CiAg
ICAgICAgaW50IHNzX2ZwN19sbzsKICAgICAgICBpbnQgc3NfZnA4X2hpOwogICAgICAgIGludCBz
c19mcDhfbG87CiAgICAgICAgaW50IHNzX2ZwOV9oaTsKICAgICAgICBpbnQgc3NfZnA5X2xvOwog
ICAgICAgIGludCBzc19mcDEwX2hpOwogICAgICAgIGludCBzc19mcDEwX2xvOwogICAgICAgIGlu
dCBzc19mcDExX2hpOwogICAgICAgIGludCBzc19mcDExX2xvOwogICAgICAgIGludCBzc19mcDEy
X2hpOwogICAgICAgIGludCBzc19mcDEyX2xvOwogICAgICAgIGludCBzc19mcDEzX2hpOwogICAg
ICAgIGludCBzc19mcDEzX2xvOwogICAgICAgIGludCBzc19mcDE0X2hpOwogICAgICAgIGludCBz
c19mcDE0X2xvOwogICAgICAgIGludCBzc19mcDE1X2hpOwogICAgICAgIGludCBzc19mcDE1X2xv
OwogICAgICAgIGludCBzc19mcDE2X2hpOwogICAgICAgIGludCBzc19mcDE2X2xvOwogICAgICAg
IGludCBzc19mcDE3X2hpOwogICAgICAgIGludCBzc19mcDE3X2xvOwogICAgICAgIGludCBzc19m
cDE4X2hpOwogICAgICAgIGludCBzc19mcDE4X2xvOwogICAgICAgIGludCBzc19mcDE5X2hpOwog
ICAgICAgIGludCBzc19mcDE5X2xvOwogICAgICAgIGludCBzc19mcDIwX2hpOwogICAgICAgIGlu
dCBzc19mcDIwX2xvOwogICAgICAgIGludCBzc19mcDIxX2hpOwogICAgICAgIGludCBzc19mcDIx
X2xvOwogICAgICAgIGludCBzc19mcDIyX2hpOwogICAgICAgIGludCBzc19mcDIyX2xvOwogICAg
ICAgIGludCBzc19mcDIzX2hpOwogICAgICAgIGludCBzc19mcDIzX2xvOwogICAgICAgIGludCBz
c19mcDI0X2hpOwogICAgICAgIGludCBzc19mcDI0X2xvOwogICAgICAgIGludCBzc19mcDI1X2hp
OwogICAgICAgIGludCBzc19mcDI1X2xvOwogICAgICAgIGludCBzc19mcDI2X2hpOwogICAgICAg
IGludCBzc19mcDI2X2xvOwogICAgICAgIGludCBzc19mcDI3X2hpOwogICAgICAgIGludCBzc19m
cDI3X2xvOwogICAgICAgIGludCBzc19mcDI4X2hpOwogICAgICAgIGludCBzc19mcDI4X2xvOwog
ICAgICAgIGludCBzc19mcDI5X2hpOwogICAgICAgIGludCBzc19mcDI5X2xvOwogICAgICAgIGlu
dCBzc19mcDMwX2hpOwogICAgICAgIGludCBzc19mcDMwX2xvOwogICAgICAgIGludCBzc19mcDMx
X2hpOwogICAgICAgIGludCBzc19mcDMxX2xvOwp9IGZwX2ludF9ibG9ja190OwojIDM1MyAiL3Vz
ci9pbmNsdWRlL21hY2hpbmUvc2F2ZV9zdGF0ZS5oIiAzCnR5cGVkZWYgc3RydWN0IF9fcmVnNjQg
ewoKICAgICAgICBpbnQ2NF90IHNzX3Jlc2VydmVkOwogICAgICAgIGludDY0X3Qgc3NfZ3IxOwog
ICAgICAgIGludDY0X3Qgc3NfcnA7CiAgICAgICAgaW50NjRfdCBzc19ncjM7CiAgICAgICAgaW50
NjRfdCBzc19ncjQ7CiAgICAgICAgaW50NjRfdCBzc19ncjU7CiAgICAgICAgaW50NjRfdCBzc19n
cjY7CiAgICAgICAgaW50NjRfdCBzc19ncjc7CiAgICAgICAgaW50NjRfdCBzc19ncjg7CiAgICAg
ICAgaW50NjRfdCBzc19ncjk7CiAgICAgICAgaW50NjRfdCBzc19ncjEwOwogICAgICAgIGludDY0
X3Qgc3NfZ3IxMTsKICAgICAgICBpbnQ2NF90IHNzX2dyMTI7CiAgICAgICAgaW50NjRfdCBzc19n
cjEzOwogICAgICAgIGludDY0X3Qgc3NfZ3IxNDsKICAgICAgICBpbnQ2NF90IHNzX2dyMTU7CiAg
ICAgICAgaW50NjRfdCBzc19ncjE2OwogICAgICAgIGludDY0X3Qgc3NfZ3IxNzsKICAgICAgICBp
bnQ2NF90IHNzX2dyMTg7CiAgICAgICAgaW50NjRfdCBzc19ncjE5OwogICAgICAgIGludDY0X3Qg
c3NfZ3IyMDsKICAgICAgICBpbnQ2NF90IHNzX2dyMjE7CiAgICAgICAgaW50NjRfdCBzc19ncjIy
OwogICAgICAgIGludDY0X3Qgc3NfYXJnMzsKICAgICAgICBpbnQ2NF90IHNzX2FyZzI7CiAgICAg
ICAgaW50NjRfdCBzc19hcmcxOwogICAgICAgIGludDY0X3Qgc3NfYXJnMDsKICAgICAgICB1aW50
NjRfdCBzc19kcDsKICAgICAgICB1aW50NjRfdCBzc19yZXQwOwogICAgICAgIHVpbnQ2NF90IHNz
X3JldDE7CiAgICAgICAgdWludDY0X3Qgc3Nfc3A7CiAgICAgICAgdWludDY0X3Qgc3NfZ3IzMTsK
ICAgICAgICB1aW50NjRfdCBzc19jcjExOwogICAgICAgIHVpbnQ2NF90IHNzX3Bjb3FfaGVhZDsK
ICAgICAgICB1aW50NjRfdCBzc19wY3NxX2hlYWQ7CiAgICAgICAgdWludDY0X3Qgc3NfcGNvcV90
YWlsOwogICAgICAgIHVpbnQ2NF90IHNzX3Bjc3FfdGFpbDsKICAgICAgICB1aW50NjRfdCBzc19j
cjE1OwogICAgICAgIHVpbnQ2NF90IHNzX2NyMTk7CiAgICAgICAgdWludDY0X3Qgc3NfY3IyMDsK
ICAgICAgICB1aW50NjRfdCBzc19jcjIxOwogICAgICAgIHVpbnQ2NF90IHNzX2NyMjI7CiAgICAg
ICAgdWludDY0X3Qgc3NfY3B1c3RhdGU7CiAgICAgICAgdWludDY0X3Qgc3Nfc3I0OwogICAgICAg
IHVpbnQ2NF90IHNzX3NyMDsKICAgICAgICB1aW50NjRfdCBzc19zcjE7CiAgICAgICAgdWludDY0
X3Qgc3Nfc3IyOwogICAgICAgIHVpbnQ2NF90IHNzX3NyMzsKICAgICAgICB1aW50NjRfdCBzc19z
cjU7CiAgICAgICAgdWludDY0X3Qgc3Nfc3I2OwogICAgICAgIHVpbnQ2NF90IHNzX3NyNzsKICAg
ICAgICB1aW50NjRfdCBzc19jcjA7CiAgICAgICAgdWludDY0X3Qgc3NfY3I4OwogICAgICAgIHVp
bnQ2NF90IHNzX2NyOTsKICAgICAgICB1aW50NjRfdCBzc19jcjEwOwogICAgICAgIHVpbnQ2NF90
IHNzX2NyMTI7CiAgICAgICAgdWludDY0X3Qgc3NfY3IxMzsKICAgICAgICB1aW50NjRfdCBzc19j
cjI0OwogICAgICAgIHVpbnQ2NF90IHNzX2NyMjU7CiAgICAgICAgdWludDY0X3Qgc3NfY3IyNjsK
ICAgICAgICB1aW50NjRfdCBzc19jcjI3OwogICAgICAgIHVpbnQ2NF90IHNzX3Jlc2VydmVkMlsy
XTsKICAgICAgICB1aW50MzJfdCBzc19vbGRja3N1bTsKICAgICAgICB1aW50MzJfdCBzc19uZXdj
a3N1bTsKCgoKfSBfX3JlZzY0X3Q7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX19yZWczMiB7CiAgICAg
ICAgdWludDMyX3Qgc3NfcmVzZXJ2ZWRbMl07CiAgICAgICAgdWludDMyX3Qgc3NfZ3IxX2hpOwog
ICAgICAgIHVpbnQzMl90IHNzX2dyMV9sbzsKICAgICAgICB1aW50MzJfdCBzc19ycF9oaTsKICAg
ICAgICB1aW50MzJfdCBzc19ycF9sbzsKICAgICAgICB1aW50MzJfdCBzc19ncjNfaGk7CiAgICAg
ICAgdWludDMyX3Qgc3NfZ3IzX2xvOwogICAgICAgIHVpbnQzMl90IHNzX2dyNF9oaTsKICAgICAg
ICB1aW50MzJfdCBzc19ncjRfbG87CiAgICAgICAgdWludDMyX3Qgc3NfZ3I1X2hpOwogICAgICAg
IHVpbnQzMl90IHNzX2dyNV9sbzsKICAgICAgICB1aW50MzJfdCBzc19ncjZfaGk7CiAgICAgICAg
dWludDMyX3Qgc3NfZ3I2X2xvOwogICAgICAgIHVpbnQzMl90IHNzX2dyN19oaTsKICAgICAgICB1
aW50MzJfdCBzc19ncjdfbG87CiAgICAgICAgdWludDMyX3Qgc3NfZ3I4X2hpOwogICAgICAgIHVp
bnQzMl90IHNzX2dyOF9sbzsKICAgICAgICB1aW50MzJfdCBzc19ncjlfaGk7CiAgICAgICAgdWlu
dDMyX3Qgc3NfZ3I5X2xvOwogICAgICAgIHVpbnQzMl90IHNzX2dyMTBfaGk7CiAgICAgICAgdWlu
dDMyX3Qgc3NfZ3IxMF9sbzsKICAgICAgICB1aW50MzJfdCBzc19ncjExX2hpOwogICAgICAgIHVp
bnQzMl90IHNzX2dyMTFfbG87CiAgICAgICAgdWludDMyX3Qgc3NfZ3IxMl9oaTsKICAgICAgICB1
aW50MzJfdCBzc19ncjEyX2xvOwogICAgICAgIHVpbnQzMl90IHNzX2dyMTNfaGk7CiAgICAgICAg
dWludDMyX3Qgc3NfZ3IxM19sbzsKICAgICAgICB1aW50MzJfdCBzc19ncjE0X2hpOwogICAgICAg
IHVpbnQzMl90IHNzX2dyMTRfbG87CiAgICAgICAgdWludDMyX3Qgc3NfZ3IxNV9oaTsKICAgICAg
ICB1aW50MzJfdCBzc19ncjE1X2xvOwogICAgICAgIHVpbnQzMl90IHNzX2dyMTZfaGk7CiAgICAg
ICAgdWludDMyX3Qgc3NfZ3IxNl9sbzsKICAgICAgICB1aW50MzJfdCBzc19ncjE3X2hpOwogICAg
ICAgIHVpbnQzMl90IHNzX2dyMTdfbG87CiAgICAgICAgdWludDMyX3Qgc3NfZ3IxOF9oaTsKICAg
ICAgICB1aW50MzJfdCBzc19ncjE4X2xvOwogICAgICAgIHVpbnQzMl90IHNzX2dyMTlfaGk7CiAg
ICAgICAgdWludDMyX3Qgc3NfZ3IxOV9sbzsKICAgICAgICB1aW50MzJfdCBzc19ncjIwX2hpOwog
ICAgICAgIHVpbnQzMl90IHNzX2dyMjBfbG87CiAgICAgICAgdWludDMyX3Qgc3NfZ3IyMV9oaTsK
ICAgICAgICB1aW50MzJfdCBzc19ncjIxX2xvOwogICAgICAgIHVpbnQzMl90IHNzX2dyMjJfaGk7
CiAgICAgICAgdWludDMyX3Qgc3NfZ3IyMl9sbzsKICAgICAgICB1aW50MzJfdCBzc19hcmczX2hp
OwogICAgICAgIHVpbnQzMl90IHNzX2FyZzNfbG87CiAgICAgICAgdWludDMyX3Qgc3NfYXJnMl9o
aTsKICAgICAgICB1aW50MzJfdCBzc19hcmcyX2xvOwogICAgICAgIHVpbnQzMl90IHNzX2FyZzFf
aGk7CiAgICAgICAgdWludDMyX3Qgc3NfYXJnMV9sbzsKICAgICAgICB1aW50MzJfdCBzc19hcmcw
X2hpOwogICAgICAgIHVpbnQzMl90IHNzX2FyZzBfbG87CiAgICAgICAgdW5zaWduZWQgaW50IHNz
X2RwX2hpOwogICAgICAgIHVuc2lnbmVkIGludCBzc19kcF9sbzsKICAgICAgICB1bnNpZ25lZCBp
bnQgc3NfcmV0MF9oaTsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfcmV0MF9sbzsKICAgICAgICB1
bnNpZ25lZCBpbnQgc3NfcmV0MV9oaTsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfcmV0MV9sbzsK
ICAgICAgICB1bnNpZ25lZCBpbnQgc3Nfc3BfaGk7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX3Nw
X2xvOwogICAgICAgIHVuc2lnbmVkIGludCBzc19ncjMxX2hpOwogICAgICAgIHVuc2lnbmVkIGlu
dCBzc19ncjMxX2xvOwogICAgICAgIHVuc2lnbmVkIGludCBzc19jcjExX2hpOwogICAgICAgIHVu
c2lnbmVkIGludCBzc19jcjExX2xvOwogICAgICAgIHVuc2lnbmVkIGludCBzc19wY29xX2hlYWRf
aGk7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX3Bjb3FfaGVhZF9sbzsKICAgICAgICB1bnNpZ25l
ZCBpbnQgc3NfcGNzcV9oZWFkX2hpOwogICAgICAgIHVuc2lnbmVkIGludCBzc19wY3NxX2hlYWRf
bG87CiAgICAgICAgdW5zaWduZWQgaW50IHNzX3Bjb3FfdGFpbF9oaTsKICAgICAgICB1bnNpZ25l
ZCBpbnQgc3NfcGNvcV90YWlsX2xvOwogICAgICAgIHVuc2lnbmVkIGludCBzc19wY3NxX3RhaWxf
aGk7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX3Bjc3FfdGFpbF9sbzsKICAgICAgICB1bnNpZ25l
ZCBpbnQgc3NfY3IxNV9oaTsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfY3IxNV9sbzsKICAgICAg
ICB1bnNpZ25lZCBpbnQgc3NfY3IxOV9oaTsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfY3IxOV9s
bzsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfY3IyMF9oaTsKICAgICAgICB1bnNpZ25lZCBpbnQg
c3NfY3IyMF9sbzsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfY3IyMV9oaTsKICAgICAgICB1bnNp
Z25lZCBpbnQgc3NfY3IyMV9sbzsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfY3IyMl9oaTsKICAg
ICAgICB1bnNpZ25lZCBpbnQgc3NfY3IyMl9sbzsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfY3B1
c3RhdGVfaGk7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2NwdXN0YXRlX2xvOwogICAgICAgIHVu
c2lnbmVkIGludCBzc19zcjRfaGk7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX3NyNF9sbzsKICAg
ICAgICB1bnNpZ25lZCBpbnQgc3Nfc3IwX2hpOwogICAgICAgIHVuc2lnbmVkIGludCBzc19zcjBf
bG87CiAgICAgICAgdW5zaWduZWQgaW50IHNzX3NyMV9oaTsKICAgICAgICB1bnNpZ25lZCBpbnQg
c3Nfc3IxX2xvOwogICAgICAgIHVuc2lnbmVkIGludCBzc19zcjJfaGk7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHNzX3NyMl9sbzsKICAgICAgICB1bnNpZ25lZCBpbnQgc3Nfc3IzX2hpOwogICAgICAg
IHVuc2lnbmVkIGludCBzc19zcjNfbG87CiAgICAgICAgdW5zaWduZWQgaW50IHNzX3NyNV9oaTsK
ICAgICAgICB1bnNpZ25lZCBpbnQgc3Nfc3I1X2xvOwogICAgICAgIHVuc2lnbmVkIGludCBzc19z
cjZfaGk7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX3NyNl9sbzsKICAgICAgICB1bnNpZ25lZCBp
bnQgc3Nfc3I3X2hpOwogICAgICAgIHVuc2lnbmVkIGludCBzc19zcjdfbG87CiAgICAgICAgdW5z
aWduZWQgaW50IHNzX2NyMF9oaTsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfY3IwX2xvOwogICAg
ICAgIHVuc2lnbmVkIGludCBzc19jcjhfaGk7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2NyOF9s
bzsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfY3I5X2hpOwogICAgICAgIHVuc2lnbmVkIGludCBz
c19jcjlfbG87CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2NyMTBfaGk7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHNzX2NyMTBfbG87CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2NyMTJfaGk7CiAgICAg
ICAgdW5zaWduZWQgaW50IHNzX2NyMTJfbG87CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2NyMTNf
aGk7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2NyMTNfbG87CiAgICAgICAgdW5zaWduZWQgaW50
IHNzX2NyMjRfaGk7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2NyMjRfbG87CiAgICAgICAgdW5z
aWduZWQgaW50IHNzX2NyMjVfaGk7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2NyMjVfbG87CiAg
ICAgICAgdW5zaWduZWQgaW50IHNzX2NyMjZfaGk7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2Ny
MjZfbG87CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2NyMjdfaGk7CiAgICAgICAgdW5zaWduZWQg
aW50IHNzX2NyMjdfbG87CiAgICAgICAgdW5zaWduZWQgaW50IHNzX3Jlc2VydmVkMls0XTsKICAg
ICAgICB1bnNpZ25lZCBpbnQgc3Nfb2xkY2tzdW07CiAgICAgICAgdW5zaWduZWQgaW50IHNzX25l
d2Nrc3VtOwp9IF9fcmVnMzJfdDsKCgoKCnR5cGVkZWYgc3RydWN0IF9fc3NfbmFycm93IHsKCiAg
ICAgICAgaW50IHNzX2dyMTsKICAgICAgICBpbnQgc3NfcnA7CiAgICAgICAgaW50IHNzX2dyMzsK
ICAgICAgICBpbnQgc3NfZ3I0OwogICAgICAgIGludCBzc19ncjU7CiAgICAgICAgaW50IHNzX2dy
NjsKICAgICAgICBpbnQgc3NfZ3I3OwogICAgICAgIGludCBzc19ncjg7CiAgICAgICAgaW50IHNz
X2dyOTsKICAgICAgICBpbnQgc3NfZ3IxMDsKICAgICAgICBpbnQgc3NfZ3IxMTsKICAgICAgICBp
bnQgc3NfZ3IxMjsKICAgICAgICBpbnQgc3NfZ3IxMzsKICAgICAgICBpbnQgc3NfZ3IxNDsKICAg
ICAgICBpbnQgc3NfZ3IxNTsKICAgICAgICBpbnQgc3NfZ3IxNjsKICAgICAgICBpbnQgc3NfZ3Ix
NzsKICAgICAgICBpbnQgc3NfZ3IxODsKICAgICAgICBpbnQgc3NfZ3IxOTsKICAgICAgICBpbnQg
c3NfZ3IyMDsKICAgICAgICBpbnQgc3NfZ3IyMTsKICAgICAgICBpbnQgc3NfZ3IyMjsKICAgICAg
ICBpbnQgc3NfYXJnMzsKICAgICAgICBpbnQgc3NfYXJnMjsKICAgICAgICBpbnQgc3NfYXJnMTsK
ICAgICAgICBpbnQgc3NfYXJnMDsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfZHA7CiAgICAgICAg
dW5zaWduZWQgaW50IHNzX3JldDA7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX3JldDE7CiAgICAg
ICAgdW5zaWduZWQgaW50IHNzX3NwOwogICAgICAgIHVuc2lnbmVkIGludCBzc19ncjMxOwogICAg
ICAgIHVuc2lnbmVkIGludCBzc19jcjExOwogICAgICAgIHVuc2lnbmVkIGludCBzc19wY29xX2hl
YWQ7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX3Bjc3FfaGVhZDsKICAgICAgICB1bnNpZ25lZCBp
bnQgc3NfcGNvcV90YWlsOwogICAgICAgIHVuc2lnbmVkIGludCBzc19wY3NxX3RhaWw7CiAgICAg
ICAgdW5zaWduZWQgaW50IHNzX2NyMTU7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2NyMTk7CiAg
ICAgICAgdW5zaWduZWQgaW50IHNzX2NyMjA7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2NyMjE7
CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2NyMjI7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2Nw
dXN0YXRlOwogICAgICAgIHVuc2lnbmVkIGludCBzc19zcjQ7CiAgICAgICAgdW5zaWduZWQgaW50
IHNzX3NyMDsKICAgICAgICB1bnNpZ25lZCBpbnQgc3Nfc3IxOwogICAgICAgIHVuc2lnbmVkIGlu
dCBzc19zcjI7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX3NyMzsKICAgICAgICB1bnNpZ25lZCBp
bnQgc3Nfc3I1OwogICAgICAgIHVuc2lnbmVkIGludCBzc19zcjY7CiAgICAgICAgdW5zaWduZWQg
aW50IHNzX3NyNzsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfY3IwOwogICAgICAgIHVuc2lnbmVk
IGludCBzc19jcjg7CiAgICAgICAgdW5zaWduZWQgaW50IHNzX2NyOTsKICAgICAgICB1bnNpZ25l
ZCBpbnQgc3NfY3IxMDsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfY3IxMjsKICAgICAgICB1bnNp
Z25lZCBpbnQgc3NfY3IxMzsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfY3IyNDsKICAgICAgICB1
bnNpZ25lZCBpbnQgc3NfY3IyNTsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfY3IyNjsKICAgICAg
ICB1bnNpZ25lZCBpbnQgc3NfY3IyNzsKICAgICAgICB1bnNpZ25lZCBpbnQgc3NfbXBzZnVfbG93
OwogICAgICAgIHVuc2lnbmVkIGludCBzc19tcHNmdV9vdmZsbzsKCgoKCgp9IF9fc3NfbmFycm93
X3Q7CiMgNjM2ICIvdXNyL2luY2x1ZGUvbWFjaGluZS9zYXZlX3N0YXRlLmgiIDMKdHlwZWRlZiBz
dHJ1Y3QgX19zYXZlX3N0YXRlIHsKCiAgICAgICAgaW50IHNzX2ZsYWdzOwogICAgICAgIF9fc3Nf
bmFycm93X3Qgc3NfbmFycm93OwogICAgICAgIGludCBzc19wYWQ7CiAgICAgICAgdW5pb24gewoK
ICAgICAgICAgICAgICAgIGZwX2RibF9ibG9ja190IGZwZGJsOwogICAgICAgICAgICAgICAgZnBf
aW50X2Jsb2NrX3QgZnBpbnQ7CgoKCgogICAgICAgIH0gc3NfZnBibG9jazsKICAgICAgICBjaGFy
IHNzX3hvcls0KjMyXTsKICAgICAgICB1bmlvbiB7CiMgNjc5ICIvdXNyL2luY2x1ZGUvbWFjaGlu
ZS9zYXZlX3N0YXRlLmgiIDMKICAgICAgICAgICAgICAgIF9fcmVnNjRfdCBzc182NDsKICAgICAg
ICAgICAgICAgIF9fcmVnMzJfdCBzc18zMjsKICAgICAgICB9IHNzX3dpZGU7Cn0gc2F2ZV9zdGF0
ZV90OwojIDQ0ICIvdXNyL2luY2x1ZGUvc3lzL25ld3NpZy5oIiAyIDMKCgogICB0eXBlZGVmIHN0
cnVjdCBfX3N0YWNrIHsKICAgICAgICB2b2lkICpzc19zcDsKICAgICAgICBpbnQgc3NfZmxhZ3M7
CiAgICAgICAgc2l6ZV90IHNzX3NpemU7CiAgIH0gc3RhY2tfdDsKCgp0eXBlZGVmIHNhdmVfc3Rh
dGVfdCBtY29udGV4dF90OwojIDYyICIvdXNyL2luY2x1ZGUvc3lzL25ld3NpZy5oIiAzCnN0cnVj
dCBfX3N1Yl9jdHh0IHsKICAgICAgICBzdHJ1Y3QgX191Y29udGV4dCAqX191Y19saW5rOwoKCgog
ICAgICAgIHNpZ3NldF90IF9fdWNfc2lnbWFzazsKCgogICAgICAgIHN0YWNrX3QgX191Y19zdGFj
azsKCgp9Owp0eXBlZGVmIHN0cnVjdCBfX3N1Yl9jdHh0IF9fc3ViX2N0eHRfdDsKCgoKdHlwZWRl
ZiBzdHJ1Y3QgX191Y29udGV4dCB7CiAgICAgICAgbWNvbnRleHRfdCB1Y19tY29udGV4dDsKICAg
ICAgICBpbnQgdWNfc3BhcmVzWzhdOwoKICAgICAgICB1bnNpZ25lZCBpbnQgdWNfY3JlYXRlZF9i
eV9nZXRjb250ZXh0OjE7CiAgICAgICAgdW5zaWduZWQgaW50IHVjX3Jlc2VydmVkX2ZsYWdzOjMx
OwogICAgICAgIHN0cnVjdCBfX3N1Yl9jdHh0IHVjX3N1YmNvbnRleHQ7Cgp9IHVjb250ZXh0X3Q7
CiMgMTggIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDIgMwojIDQxICIvdXNyL2luY2x1ZGUv
c3lzL3NpZ25hbC5oIiAzCiAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2lnX2F0b21pY190OwojIDUy
ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAzCiAgIHN0cnVjdCBzaWdhY3Rpb24gewogICAg
ICB1bmlvbiB7CgoKCiAgICAgICAgICAgICAgdm9pZCAoKl9fc2Ffc2lnYWN0aW9uKShpbnQsIHNp
Z2luZm9fdCAqLCB2b2lkICopOwoKCgoKCgoKICAgICAgICAgICAgICB2b2lkICgqX19zYV9oYW5k
bGVyKShpbnQpOwogICAgICB9IF9faGFuZGxlcjsKCiAgICAgIHNpZ3NldF90IHNhX21hc2s7CgoK
ICAgICAgaW50IHNhX2ZsYWdzOwogICB9OwojIDgxICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5o
IiAzCnR5cGVkZWYgaW50IHB0aHJlYWRfdDsKIyA5MyAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwu
aCIgMwogIHN0cnVjdCB0aW1lc3BlYyB7CgoKCiAgICAgICAgdGltZV90IHR2X3NlYzsKCiAgICAg
ICAgbG9uZyB0dl9uc2VjOwp9Owp0eXBlZGVmIHN0cnVjdCB0aW1lc3BlYyB0aW1lc3RydWNfdDsK
IyAxMTYgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMKICAgc3RydWN0IHNpZ3N0YWNrIHsK
CiAgICAgICAgdm9pZCAqc3Nfc3A7CgoKCiAgICAgICAgaW50IHNzX29uc3RhY2s7CiAgIH07CiMg
MTMyICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAzCiAgIHN0cnVjdCBzaWd2ZWMgewogICAg
ICB2b2lkICgqc3ZfaGFuZGxlcikoaW50KTsKICAgICAgaW50IHN2X21hc2s7CiAgICAgIGludCBz
dl9mbGFnczsKICAgfTsKIyAxNTIgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMKICAgICBl
eHRlcm4gdm9pZCAoKnNpZ25hbChpbnQsIHZvaWQgKCopIChpbnQpKSkoaW50KTsKICAgICBleHRl
cm4gaW50IHJhaXNlKGludCk7CiMgMTYyICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAzCiAg
ICAgZXh0ZXJuIGludCBraWxsKHBpZF90LCBpbnQpOwogICAgIGV4dGVybiBpbnQgc2lnZW1wdHlz
ZXQoc2lnc2V0X3QgKik7CiAgICAgZXh0ZXJuIGludCBzaWdmaWxsc2V0KHNpZ3NldF90ICopOwog
ICAgIGV4dGVybiBpbnQgc2lnYWRkc2V0KHNpZ3NldF90ICosIGludCk7CiAgICAgZXh0ZXJuIGlu
dCBzaWdkZWxzZXQoc2lnc2V0X3QgKiwgaW50KTsKICAgICBleHRlcm4gaW50IHNpZ2lzbWVtYmVy
KGNvbnN0IHNpZ3NldF90ICosIGludCk7CiAgICAgZXh0ZXJuIGludCBzaWdhY3Rpb24oaW50LCBj
b25zdCBzdHJ1Y3Qgc2lnYWN0aW9uICosIHN0cnVjdCBzaWdhY3Rpb24gKik7CiAgICAgZXh0ZXJu
IGludCBzaWdwcm9jbWFzayhpbnQsIGNvbnN0IHNpZ3NldF90ICosIHNpZ3NldF90ICopOwogICAg
IGV4dGVybiBpbnQgc2lnc3VzcGVuZChjb25zdCBzaWdzZXRfdCAqKTsKICAgICBleHRlcm4gaW50
IHNpZ3BlbmRpbmcoc2lnc2V0X3QgKik7CiMgMTg4ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5o
IiAzCiAgICAgZXh0ZXJuIGludCBzaWd3YWl0KGNvbnN0IHNpZ3NldF90ICpzZXQsIGludCAqc2ln
KTsKCiAgICAgZXh0ZXJuIGludCBwdGhyZWFkX3NpZ21hc2soaW50IGhvdywgY29uc3Qgc2lnc2V0
X3QgKnNldCwgc2lnc2V0X3QgKm9zZXQpOwogICAgIGV4dGVybiBpbnQgcHRocmVhZF9raWxsKHB0
aHJlYWRfdCB0aHJlYWQsIGludCBzaWcpOwojIDIwNCAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwu
aCIgMwogICAgIGV4dGVybiBpbnQgc2lnd2FpdGluZm8oY29uc3Qgc2lnc2V0X3QgKnNldCwgc2ln
aW5mb190ICppbmZvKTsKICAgICBleHRlcm4gaW50IHNpZ3RpbWVkd2FpdChjb25zdCBzaWdzZXRf
dCAqc2V0LCBzaWdpbmZvX3QgKiBpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0cnVjdCB0aW1lc3BlYyAqdGltZW91dCk7CiAgICAgZXh0ZXJuIGludCBzaWdxdWV1ZShw
aWRfdCBwaWQsIGludCBzaWdubywKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuaW9u
IHNpZ3ZhbCB2YWx1ZSk7CiMgMjE4ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAzCiAgICAg
ICAgZXh0ZXJuIHZvaWQgKCpic2Rfc2lnbmFsKGludCwgdm9pZCgqKShpbnQpKSkoaW50KTsKICAg
ICAgICBleHRlcm4gaW50IGtpbGxwZyhwaWRfdCwgaW50KTsKCiAgICAgICAgZXh0ZXJuIGludCBz
aWdzdGFjayhzdHJ1Y3Qgc2lnc3RhY2sgKiwgc3RydWN0IHNpZ3N0YWNrICopOwoKCgogICAgICAg
IGV4dGVybiBpbnQgc2lnYWx0c3RhY2soY29uc3Qgc3RhY2tfdCAqLCBzdGFja190ICopOwogICAg
ICAgIGV4dGVybiBpbnQgc2lnaW50ZXJydXB0KGludCwgaW50KTsKIyAyMzcgIi91c3IvaW5jbHVk
ZS9zeXMvc2lnbmFsLmgiIDMKICAgICAgICAgICBleHRlcm4gdm9pZCAoKnNpZ3NldChpbnQsIHZv
aWQgKCopKGludCkpKShpbnQpOwogICAgICAgICAgIGV4dGVybiBpbnQgc2lnaG9sZChpbnQpOwog
ICAgICAgICAgIGV4dGVybiBpbnQgc2lncmVsc2UoaW50KTsKICAgICAgICAgICBleHRlcm4gaW50
IHNpZ2lnbm9yZShpbnQpOwogICAgICAgICAgIGV4dGVybiBpbnQgc2lncGF1c2UoaW50KTsKIyAy
NTUgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMKICAgICBleHRlcm4gbG9uZyBzaWdibG9j
ayhsb25nKTsKICAgICBleHRlcm4gbG9uZyBzaWdzZXRtYXNrKGxvbmcpOwogICAgIGV4dGVybiBp
bnQgc2lndmVjdG9yKGludCwgY29uc3Qgc3RydWN0IHNpZ3ZlYyAqLCBzdHJ1Y3Qgc2lndmVjICop
OwogICAgIGV4dGVybiBpbnQgKCpzc2lnbmFsKGludCwgaW50ICgqKSAoaW50KSkpKGludCk7CgoK
CiAgICAgZXh0ZXJuIHNzaXplX3Qgc2lnc3BhY2Uoc3NpemVfdCk7CiAgICAgZXh0ZXJuIGludCBn
c2lnbmFsKGludCk7CiMgMzUzICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAzCiAgICAgICAg
ZXh0ZXJuIGxvbmcgX19fc3lzY29uZihpbnQpOwojIDUyMiAiL3Vzci9pbmNsdWRlL3N5cy9zaWdu
YWwuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3lzY2FsbC5oIiAxIDMKIyAyMyAiL3Vzci9p
bmNsdWRlL3N5cy9zeXNjYWxsLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3NjYWxsX2RlZmlu
ZS5oIiAxIDMKIyAyNCAiL3Vzci9pbmNsdWRlL3N5cy9zeXNjYWxsLmgiIDIgMwojIDUyMyAiL3Vz
ci9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL21hY2hpbmUvZnJh
bWUuaCIgMSAzCiMgNTQgIi91c3IvaW5jbHVkZS9tYWNoaW5lL2ZyYW1lLmgiIDMKdHlwZWRlZiBz
dHJ1Y3QgZnJhbWVfbWFya2VyIHsKICAgICAgICBpbnQgZm1fZWRwOwogICAgICAgIGludCBmbV9l
c3I0OwogICAgICAgIGludCBmbV9lcnA7CiAgICAgICAgaW50IGZtX2NycDsKICAgICAgICBpbnQg
Zm1fc2w7CiAgICAgICAgaW50IGZtX2NsdXA7CiAgICAgICAgaW50IGZtX2VwOwogICAgICAgIGlu
dCBmbV9wc3A7Cn0gZnJhbWVfbWFya2VyX3Q7CiMgNTI0ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25h
bC5oIiAyIDMKIyA1MzYgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMKICAgICAgIHN0cnVj
dCBzaWdsb2NhbF9taXNjIHsKICAgICAgICAgICAgICAgIGludCBzbV9zeXNjYWxsOwogICAgICAg
ICAgICAgICAgaW50IHNtX29uc3RhY2s7CiAgICAgICAgICAgICAgICBpbnQgc21fb21hc2s7CiAg
ICAgICAgICAgICAgICBjaGFyIHNtX3N5c2NhbGxfYWN0aW9uOwogICAgICAgICAgICAgICAgY2hh
ciBzbV9lb3N5czsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHNtX2Vycm9yOwogICAg
ICAgICAgICAgICAgbG9uZyBzbV9ydmFsMTsKICAgICAgICAgICAgICAgIGxvbmcgc21fcnZhbDI7
CiAgICAgICAgICAgICAgICBsb25nIHNtX2FyZ1s0XTsKICAgICAgIH07CiAgICAgICB0eXBlZGVm
IHN0cnVjdCBzaWdsb2NhbF9taXNjIHNpZ2xvY2FsX21pc2NfdDsKCiAgICAgICBzdHJ1Y3Qgc2ln
bG9jYWwgewogICAgICAgICAgICAgICAgc3RydWN0IHNpZ2xvY2FsX21pc2Mgc2xfbWlzYzsKICAg
ICAgICAgICAgICAgIHNhdmVfc3RhdGVfdCBzbF9zczsKICAgICAgIH07CiMgNTY4ICIvdXNyL2lu
Y2x1ZGUvc3lzL3NpZ25hbC5oIiAzCiAgICAgICBzdHJ1Y3Qgc2lnbG9jYWx4IHsKICAgICAgICAg
ICAgICAgIHN0cnVjdCBzaWdsb2NhbF9taXNjIHNsX21pc2M7CiAgICAgICAgICAgICAgICB1Y29u
dGV4dF90IHNsX3VjOwogICAgICAgICAgICAgICAgc2lnaW5mb190IHNsX3NpOwogICAgICAgfTsK
IyA1ODggIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMKICAgICAgICBzdHJ1Y3QgX194c2kg
ewogICAgICAgICAgICAgICAgc3RydWN0IF9fc3ViX2N0eHQgc2M7CgogICAgICAgICAgICAgICAg
aW50IF9fcGFkZGluZzsKCgoKICAgICAgICAgICAgICAgIHNpZ2luZm9fdCBzaTsKICAgICAgICB9
OwogICAgICAgIHR5cGVkZWYgc3RydWN0IF9feHNpIF9feHNpX3Q7CiMgNjA2ICIvdXNyL2luY2x1
ZGUvc3lzL3NpZ25hbC5oIiAzCiAgICAgICBzdHJ1Y3Qgc2lnY29udGV4dCB7CgogICAgICAgICAg
ICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2lnbG9jYWwgc2w7
CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzaWdsb2NhbHggc3g7CiAgICAgICAgICAg
ICAgICB9IHNjX2N0eHQ7CgoKCgoKCgogICAgICAgICAgICAgICAgbG9uZyBzY19hcmdzWzRdOwoK
CgoKICAgICAgICAgICAgICAgIHN0cnVjdCBmcmFtZV9tYXJrZXIgc2Nfc2ZtOwoKCiAgICAgICB9
OwojIDYgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMiAzCiMgMjkgImluY2x1ZGVzLmgiIDIKIyAx
ICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEu
MDAvMy4xL2luY2x1ZGUvc3RkbGliLmgiIDEgMwojIDQzICIvb3B0L2dudS9nY2MvMy4xLWhwcGEy
LjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvc3RkbGliLmgi
IDMKICAgICAgICAgIGV4dGVybiBpbnQgYWJzKGludCk7CiMgNjQgIi9vcHQvZ251L2djYy8zLjEt
aHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9zdGRs
aWIuaCIgMwogICBleHRlcm4gaW50IF9fbmxfY2hhcl9zaXplOwojIDc3ICIvb3B0L2dudS9nY2Mv
My4xLWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUv
c3RkbGliLmgiIDMKCiAgIHR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgcXVvdDsKICAgICAg
ICBpbnQgcmVtOwogICB9IGRpdl90OwogICB0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgbG9uZyBp
bnQgcXVvdDsKICAgICAgICBsb25nIGludCByZW07CiAgIH0gbGRpdl90OwoKCgoKCgoKIyAxICIv
b3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAv
My4xL2luY2x1ZGUvc3lzL193Y2hhcl90LmgiIDEgMwojIDQ2ICIvb3B0L2dudS9nY2MvMy4xLWhw
cGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvc3lzL193
Y2hhcl90LmgiIDMKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQg
d2NoYXJfdDsKIyA5NCAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEy
LjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCgoKICAgICAgIGV4
dGVybiBkb3VibGUgYXRvZihjb25zdCBjaGFyICopOwoKICAgICBleHRlcm4gaW50IGF0b2koY29u
c3QgY2hhciAqKTsKICAgICBleHRlcm4gbG9uZyBpbnQgYXRvbChjb25zdCBjaGFyICopOwogICAg
IGV4dGVybiBkb3VibGUgc3RydG9kKGNvbnN0IGNoYXIgKiwgY2hhciAqKik7CiAgICAgZXh0ZXJu
IGxvbmcgaW50IHN0cnRvbChjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7CiAgICAgZXh0ZXJu
IHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwoY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwog
ICAgIGV4dGVybiBpbnQgcmFuZCh2b2lkKTsKICAgICBleHRlcm4gdm9pZCBzcmFuZCh1bnNpZ25l
ZCBpbnQpOwogICAgIGV4dGVybiBpbnQgYXRleGl0KHZvaWQgKCopICh2b2lkKSk7CiAgICAgZXh0
ZXJuIHZvaWQgZXhpdChpbnQpOwogICAgIGV4dGVybiBjaGFyICpnZXRlbnYoY29uc3QgY2hhciAq
KTsKICAgICBleHRlcm4gaW50IHN5c3RlbShjb25zdCBjaGFyICopOwogICAgIGV4dGVybiBkaXZf
dCBkaXYoaW50LCBpbnQpOwogICAgIGV4dGVybiBsZGl2X3QgbGRpdihsb25nIGludCwgbG9uZyBp
bnQpOwogICAgIGV4dGVybiBsb25nIGludCBsYWJzKGxvbmcgaW50KTsKICAgICBleHRlcm4gaW50
IG1ibGVuKGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKICAgICBleHRlcm4gaW50IG1idG93Yyh3Y2hh
cl90ICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKICAgICBleHRlcm4gaW50IHdjdG9tYihjaGFy
ICosIHdjaGFyX3QpOwogICAgIGV4dGVybiBzaXplX3QgbWJzdG93Y3Mod2NoYXJfdCAqLCBjb25z
dCBjaGFyICosIHNpemVfdCk7CiAgICAgZXh0ZXJuIHNpemVfdCB3Y3N0b21icyhjaGFyICosIGNv
bnN0IHdjaGFyX3QgKiwgc2l6ZV90KTsKICAgICBleHRlcm4gdm9pZCBmcmVlKHZvaWQgKik7CiAg
ICAgZXh0ZXJuIHZvaWQgcXNvcnQodm9pZCAqLCBzaXplX3QsIHNpemVfdCwgaW50ICgqKShjb25z
dCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwoKIyAxNjEgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIu
MC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9zdGRsaWIuaCIg
MwoKICAgICAgIGV4dGVybiB2b2lkIGFib3J0KHZvaWQpOwogICAgICAgZXh0ZXJuIHZvaWQgKmJz
ZWFyY2goY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCwgc2l6ZV90LCBpbnQgKCop
IChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwogICAgICAgZXh0ZXJuIHZvaWQgKmNhbGxv
YyhzaXplX3QsIHNpemVfdCk7CiAgICAgICBleHRlcm4gdm9pZCAqbWFsbG9jKHNpemVfdCk7CiAg
ICAgICBleHRlcm4gdm9pZCAqcmVhbGxvYyh2b2lkICosIHNpemVfdCk7CgojIDIxNSAiL29wdC9n
bnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9p
bmNsdWRlL3N0ZGxpYi5oIiAzCiAgICAgZXh0ZXJuIHZvaWQgc2V0a2V5KGNvbnN0IGNoYXIgKik7
CiAgICAgZXh0ZXJuIHZvaWQgbGNvbmc0OCggdW5zaWduZWQgc2hvcnQgW10gKTsKIyAyMjYgIi9v
cHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8z
LjEvaW5jbHVkZS9zdGRsaWIuaCIgMwogICAgICAgIGV4dGVybiBkb3VibGUgZHJhbmQ0OCh2b2lk
KTsKICAgICAgICBleHRlcm4gZG91YmxlIGVyYW5kNDgodW5zaWduZWQgc2hvcnQgW10pOwogICAg
ICAgIGV4dGVybiBsb25nIGpyYW5kNDgodW5zaWduZWQgc2hvcnQgW10pOwogICAgICAgIGV4dGVy
biBsb25nIGxyYW5kNDgodm9pZCk7CiAgICAgICAgZXh0ZXJuIGxvbmcgbXJhbmQ0OCh2b2lkKTsK
ICAgICAgICBleHRlcm4gbG9uZyBucmFuZDQ4KHVuc2lnbmVkIHNob3J0IFtdKTsKICAgICAgICBl
eHRlcm4gdm9pZCBzcmFuZDQ4KGxvbmcpOwogICAgICAgIGV4dGVybiB1bnNpZ25lZCBzaG9ydCAq
c2VlZDQ4KHVuc2lnbmVkIHNob3J0IFtdKTsKICAgICAgICBleHRlcm4gaW50IHB1dGVudihjb25z
dCBjaGFyICopOwojIDI1MCAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hw
cGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGxpYi5oIiAzCiAgICAgICBleHRlcm4g
aW50IGNsZWFyZW52KHZvaWQpOwogICAgICAgZXh0ZXJuIGludCBnZXRvcHQoaW50LCBjaGFyICog
Y29uc3QgW10sIGNvbnN0IGNoYXIgKik7CiAgICAgICBleHRlcm4gY2hhciAqZ2V0cGFzcyhjb25z
dCBjaGFyICopOwoKCgoKCgogICAgIGV4dGVybiBjaGFyICpvcHRhcmc7CiAgICAgZXh0ZXJuIGlu
dCBvcHRpbmQ7CiAgICAgZXh0ZXJuIGludCBvcHRlcnI7CgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5
cy93YWl0LmgiIDEgMwojIDYzICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMwogICAgICAgZXh0
ZXJuIHBpZF90IHdhaXQoaW50ICopOwogICAgICAgZXh0ZXJuIHBpZF90IHdhaXRwaWQocGlkX3Qs
IGludCAqLCBpbnQpOwojIDgzICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMwojIDEgIi91c3Iv
aW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3Vy
Y2UuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAxIDMKIyA4NiAiL3Vzci9pbmNs
dWRlL3N5cy90aW1lLmgiIDMKICAgc3RydWN0IHRtIHsKICAgICAgaW50IHRtX3NlYzsKICAgICAg
aW50IHRtX21pbjsKICAgICAgaW50IHRtX2hvdXI7CiAgICAgIGludCB0bV9tZGF5OwogICAgICBp
bnQgdG1fbW9uOwogICAgICBpbnQgdG1feWVhcjsKICAgICAgaW50IHRtX3dkYXk7CiAgICAgIGlu
dCB0bV95ZGF5OwogICAgICBpbnQgdG1faXNkc3Q7CiAgIH07CiMgMTE1ICIvdXNyL2luY2x1ZGUv
c3lzL3RpbWUuaCIgMwpzdHJ1Y3QgaXRpbWVyc3BlYyB7CiAgICAgICAgc3RydWN0IHRpbWVzcGVj
IGl0X2ludGVydmFsOwogICAgICAgIHN0cnVjdCB0aW1lc3BlYyBpdF92YWx1ZTsKfTsKCgp0eXBl
ZGVmIGVudW0gX19jbG9ja2lkX3QgewogICAgICAgIENMT0NLX0lOVkFMSUQgPSAwLAogICAgICAg
IENMT0NLX1JFQUxUSU1FID0gMSwKICAgICAgICBDTE9DS19WSVJUVUFMID0gMiwKICAgICAgICBD
TE9DS19QUk9GSUxFID0gNCwKICAgICAgICBSVFRJTUVSMCA9IDgsCiAgICAgICAgUlRUSU1FUjEg
PSAxNgp9IGNsb2NraWRfdDsKCgoKICAgICAgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdGltZXJf
dDsKIyAxNDcgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzCiAgICAgICAgc3RydWN0IHRpbWV2
YWwgewoKICAgICAgICAgICAgICAgIHRpbWVfdCB0dl9zZWM7CgoKCiAgICAgICAgICAgICAgICBs
b25nIHR2X3VzZWM7CiAgICAgICAgfTsKCgoKICAgc3RydWN0IGl0aW1lcnZhbCB7CiAgICAgICAg
c3RydWN0IHRpbWV2YWwgaXRfaW50ZXJ2YWw7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgaXRfdmFs
dWU7CiAgIH07CgoKCgoKICAgc3RydWN0IHRpbWV6b25lIHsKICAgICAgICBpbnQgdHpfbWludXRl
c3dlc3Q7CiAgICAgICAgaW50IHR6X2RzdHRpbWU7CiAgIH07CgoKICAgdHlwZWRlZiBzdHJ1Y3Qg
X19jeWNsZXMgewogICAgICAgIHVpbnQzMl90IGhpOwogICAgICAgIHVpbnQzMl90IGxvOwogICB9
IGN5Y2xlc190OwojIDIxOSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMKICAgICBleHRlcm4g
ZG91YmxlIGRpZmZ0aW1lKHRpbWVfdCwgdGltZV90KTsKCgoKCiAgICAgZXh0ZXJuIHRpbWVfdCBt
a3RpbWUoc3RydWN0IHRtICopOwoKCgoKICAgICBleHRlcm4gdGltZV90IHRpbWUodGltZV90ICop
OwoKCgogICAgIGV4dGVybiBjaGFyICphc2N0aW1lKGNvbnN0IHN0cnVjdCB0bSAqKTsKCgoKCiAg
ICAgZXh0ZXJuIGNoYXIgKmN0aW1lKGNvbnN0IHRpbWVfdCAqKTsKCgoKCiAgICAgZXh0ZXJuIHN0
cnVjdCB0bSAqZ210aW1lKGNvbnN0IHRpbWVfdCAqKTsKCgoKCiAgICAgZXh0ZXJuIHN0cnVjdCB0
bSAqbG9jYWx0aW1lKGNvbnN0IHRpbWVfdCAqKTsKCgoKCiAgICAgZXh0ZXJuIHNpemVfdCBzdHJm
dGltZShjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCBjb25zdCBzdHJ1Y3QgdG0gKik7CiMg
MzcyICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMwogICAgICAgZXh0ZXJuIGNsb2NrX3QgY2xv
Y2sodm9pZCk7CiMgMzg5ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMwogICAgIGV4dGVybiB2
b2lkIHR6c2V0KHZvaWQpOwojIDM5OCAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMKICAgZXh0
ZXJuIGNoYXIgKnR6bmFtZVsyXTsKCgoKCgoKICAgICBleHRlcm4gaW50IGNsb2NrX3NldHRpbWUo
Y2xvY2tpZF90LCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKik7CiAgICAgZXh0ZXJuIGludCBjbG9j
a19nZXR0aW1lKGNsb2NraWRfdCwgc3RydWN0IHRpbWVzcGVjICopOwogICAgIGV4dGVybiBpbnQg
Y2xvY2tfZ2V0cmVzKGNsb2NraWRfdCwgc3RydWN0IHRpbWVzcGVjICopOwogICAgIGV4dGVybiBp
bnQgdGltZXJfY3JlYXRlKGNsb2NraWRfdCwgc3RydWN0IHNpZ2V2ZW50ICosIHRpbWVyX3QgKik7
CiAgICAgZXh0ZXJuIGludCB0aW1lcl9kZWxldGUodGltZXJfdCk7CiAgICAgZXh0ZXJuIGludCB0
aW1lcl9zZXR0aW1lKHRpbWVyX3QsIGludCwgY29uc3Qgc3RydWN0IGl0aW1lcnNwZWMgKiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGl0aW1lcnNwZWMgKik7CiAgICAgZXh0
ZXJuIGludCB0aW1lcl9nZXR0aW1lKHRpbWVyX3QsIHN0cnVjdCBpdGltZXJzcGVjICopOwogICAg
IGV4dGVybiBpbnQgdGltZXJfZ2V0b3ZlcnJ1bih0aW1lcl90KTsKICAgICBleHRlcm4gaW50IG5h
bm9zbGVlcChjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKiwgc3RydWN0IHRpbWVzcGVjICopOwojIDQz
OSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMKICAgICAgICAgZXh0ZXJuIGNoYXIgKnN0cnB0
aW1lKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzdHJ1Y3QgdG0gKik7CiMgNDUwICIvdXNy
L2luY2x1ZGUvc3lzL3RpbWUuaCIgMwogICAgICAgZXh0ZXJuIGxvbmcgdGltZXpvbmU7CgoKCgog
ICAgICAgZXh0ZXJuIGludCBkYXlsaWdodDsKIyA0ODIgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5o
IiAzCiAgICAgZXh0ZXJuIGludCBnZXRpdGltZXIoaW50LCBzdHJ1Y3QgaXRpbWVydmFsICopOwog
ICAgIGV4dGVybiBpbnQgc2V0aXRpbWVyKGludCwgY29uc3Qgc3RydWN0IGl0aW1lcnZhbCAqLCBz
dHJ1Y3QgaXRpbWVydmFsICopOwogICAgIGV4dGVybiBpbnQgdXRpbWVzKGNvbnN0IGNoYXIgKnBh
dGgsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIGFtdGltZXNbMl0pOwogICAgIGV4dGVybiBpbnQgZ2V0
dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICosIHZvaWQgKik7CgoKCiAgICAgICBleHRlcm4gaW50
IHNlbGVjdChpbnQsIGZkX3NldCAqLCBmZF9zZXQgKiwgZmRfc2V0ICosIHN0cnVjdCB0aW1ldmFs
ICopOwojIDUxMiAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMKICAgICBleHRlcm4gaW50IGFk
anRpbWUoY29uc3Qgc3RydWN0IHRpbWV2YWwgKiwgc3RydWN0IHRpbWV2YWwgKik7CgoKCiAgICAg
ICBleHRlcm4gc3RydWN0IHRtICpnZXRkYXRlKGNvbnN0IGNoYXIgKik7CiMgNTI2ICIvdXNyL2lu
Y2x1ZGUvc3lzL3RpbWUuaCIgMwogICAgIGV4dGVybiBpbnQgc2V0dGltZW9mZGF5KGNvbnN0IHN0
cnVjdCB0aW1ldmFsICosIGNvbnN0IHN0cnVjdCB0aW1lem9uZSAqKTsKICAgICBleHRlcm4gaW50
IHN0aW1lKGNvbnN0IHRpbWVfdCAqKTsKICAgICBleHRlcm4gdm9pZCBwcm9maWwoY29uc3Qgdm9p
ZCAqLCBzaXplX3QsIHNpemVfdCwgaW50KTsKIyA1NTYgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5o
IiAzCiAgICAgICBleHRlcm4gaW50IGdldGRhdGVfZXJyOwojIDYwNyAiL3Vzci9pbmNsdWRlL3N5
cy90aW1lLmgiIDMKICAgIHN0cnVjdCBraV90aW1ldmFsIHsKICAgICAgICAgICAgdWludDMyX3Qg
cGFkMTsKICAgICAgICAgICAgdWludDMyX3QgcGFkMjsKICAgIH07CiMgNjI3ICIvdXNyL2luY2x1
ZGUvc3lzL3RpbWUuaCIgMwp0eXBlZGVmIHVpbnQ2NF90IGt0X3Q7CiMgMjcgIi91c3IvaW5jbHVk
ZS9zeXMvcmVzb3VyY2UuaCIgMiAzCiMgMzkgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIg
MwojIDEgIi91c3IvaW5jbHVkZS9zeXMvX3JsaW1pdF9ib2R5LmgiIDEgMwojIDEyICIvdXNyL2lu
Y2x1ZGUvc3lzL19ybGltaXRfYm9keS5oIiAzCnN0cnVjdCBybGltaXQgewogICAgICAgIHJsaW1f
dCBybGltX2N1cjsKICAgICAgICBybGltX3QgcmxpbV9tYXg7Cn07CiMgNDAgIi91c3IvaW5jbHVk
ZS9zeXMvcmVzb3VyY2UuaCIgMiAzCiMgODkgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIg
MwpzdHJ1Y3QgcnVzYWdlIHsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBydV91dGltZTsKICAgICAg
ICBzdHJ1Y3QgdGltZXZhbCBydV9zdGltZTsKCiAgICAgICAgbG9uZyBydV9tYXhyc3M7CgogICAg
ICAgIGxvbmcgcnVfaXhyc3M7CiAgICAgICAgbG9uZyBydV9pZHJzczsKICAgICAgICBsb25nIHJ1
X2lzcnNzOwogICAgICAgIGxvbmcgcnVfbWluZmx0OwogICAgICAgIGxvbmcgcnVfbWFqZmx0Owog
ICAgICAgIGxvbmcgcnVfbnN3YXA7CiAgICAgICAgbG9uZyBydV9pbmJsb2NrOwogICAgICAgIGxv
bmcgcnVfb3VibG9jazsKICAgICAgICBsb25nIHJ1X2lvY2g7CiAgICAgICAgbG9uZyBydV9tc2dz
bmQ7CiAgICAgICAgbG9uZyBydV9tc2dyY3Y7CiAgICAgICAgbG9uZyBydV9uc2lnbmFsczsKICAg
ICAgICBsb25nIHJ1X252Y3N3OwogICAgICAgIGxvbmcgcnVfbml2Y3N3OwoKfTsKIyAxMzIgIi91
c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMwogICBleHRlcm4gaW50IGdldHByaW9yaXR5IChp
bnQsIGlkX3QpOwogICBleHRlcm4gaW50IGdldHJ1c2FnZSAoaW50LCBzdHJ1Y3QgcnVzYWdlICop
OwogICBleHRlcm4gaW50IHNldHByaW9yaXR5IChpbnQsIGlkX3QsIGludCk7CiAgIHN0YXRpYyBp
bnQgZ2V0cmxpbWl0IChpbnQsIHN0cnVjdCBybGltaXQgKik7CiAgIHN0YXRpYyBpbnQgc2V0cmxp
bWl0IChpbnQsIGNvbnN0IHN0cnVjdCBybGltaXQgKik7CiMgMTQ5ICIvdXNyL2luY2x1ZGUvc3lz
L3Jlc291cmNlLmgiIDMKIGV4dGVybiBpbnQgX19nZXRybGltaXQ2NCAoaW50LCBzdHJ1Y3Qgcmxp
bWl0ICopOwogZXh0ZXJuIGludCBfX3NldHJsaW1pdDY0IChpbnQsIGNvbnN0IHN0cnVjdCBybGlt
aXQgKik7CgogICBzdGF0aWMgaW50IGdldHJsaW1pdChpbnQgYSwgc3RydWN0IHJsaW1pdCAqYikK
ICAgICAgICAgICAgICAgIHsgcmV0dXJuIF9fZ2V0cmxpbWl0NjQoYSxiKTsgfQogICBzdGF0aWMg
aW50IHNldHJsaW1pdChpbnQgYSwgY29uc3Qgc3RydWN0IHJsaW1pdCAqYikKICAgICAgICAgICAg
ICAgIHsgcmV0dXJuIF9fc2V0cmxpbWl0NjQoYSxiKTsgfQojIDg0ICIvdXNyL2luY2x1ZGUvc3lz
L3dhaXQuaCIgMiAzCiMgMTAyICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMwogICAgICAgICAg
IGV4dGVybiBwaWRfdCB3YWl0MyhpbnQgKiwgaW50LCBzdHJ1Y3QgcnVzYWdlICopOwojIDE1OSAi
L3Vzci9pbmNsdWRlL3N5cy93YWl0LmgiIDMKdHlwZWRlZiBlbnVtIHsKICAgICAgICBQX1BJRCwK
ICAgICAgICBQX1BHSUQsCiAgICAgICAgUF9TSUQsCiAgICAgICAgUF9VSUQsCiAgICAgICAgUF9H
SUQsCiAgICAgICAgUF9DSUQsCiAgICAgICAgUF9BTEwKfSBpZHR5cGVfdDsKIyAxNzcgIi91c3Iv
aW5jbHVkZS9zeXMvd2FpdC5oIiAzCiAgICAgICAgZXh0ZXJuIGludCB3YWl0aWQoaWR0eXBlX3Qs
IGlkX3QsIHNpZ2luZm9fdCAqLCBpbnQpOwojIDE5NSAiL3Vzci9pbmNsdWRlL3N5cy93YWl0Lmgi
IDMKICAgdW5pb24gd2FpdCB7CiAgICAgICAgaW50IHdfc3RhdHVzOwoKCgogICAgICAgIHN0cnVj
dCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCB3X3BhZDsKICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCB3X1JldGNvZGU6ODsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB3
X0NvcmVkdW1wOjE7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgd19UZXJtc2lnOjc7CiAg
ICAgICAgfSB3X1Q7CgoKCgoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgd19wYWQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgd19TdG9wc2lnOjg7
CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgd19TdG9wdmFsOjg7CiAgICAgICAgfSB3X1M7
CiAgIH07CiMgMjY2ICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIu
MC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCgoKICAgICAgICAgICAg
ICAgIGV4dGVybiBpbnQgbWtzdGVtcChjaGFyICopOwogICAgICAgICAgICAgICAgZXh0ZXJuIGNo
YXIgKm1rdGVtcChjaGFyICopOwogICAgICAgICAgICAgICAgZXh0ZXJuIGludCB0dHlzbG90KHZv
aWQpOwojIDI4MSAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAt
aHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGxpYi5oIiAzCiAgICAgICAgZXh0ZXJuIGxvbmcg
YTY0bChjb25zdCBjaGFyICopOwogICAgICAgIGV4dGVybiBjaGFyICpsNjRhKGxvbmcpOwoKCiAg
ICAgICBleHRlcm4gY2hhciAqZmN2dChkb3VibGUsIGludCwgaW50ICosIGludCAqKTsKICAgICAg
IGV4dGVybiBjaGFyICplY3Z0KGRvdWJsZSwgaW50LCBpbnQgKiwgaW50ICopOwoKCiAgICAgICAg
ZXh0ZXJuIGNoYXIgKmdjdnQoZG91YmxlLCBpbnQsIGNoYXIgKik7CiAgICAgICAgZXh0ZXJuIGlu
dCBnZXRzdWJvcHQoY2hhciAqKiwgY2hhciAqIGNvbnN0ICosIGNoYXIgKiopOwogICAgICAgIGV4
dGVybiBpbnQgZ3JhbnRwdChpbnQpOwogICAgICAgIGV4dGVybiBjaGFyICpwdHNuYW1lKGludCk7
CiAgICAgICAgZXh0ZXJuIGNoYXIgKnJlYWxwYXRoKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKICAg
ICAgICBleHRlcm4gaW50IHVubG9ja3B0KGludCk7CiAgICAgICAgZXh0ZXJuIHZvaWQgKnZhbGxv
YyhzaXplX3QpOwogICAgZXh0ZXJuIGNoYXIgKmluaXRzdGF0ZSh1bnNpZ25lZCBpbnQsIGNoYXIg
Kiwgc2l6ZV90KTsKICAgIGV4dGVybiBjaGFyICpzZXRzdGF0ZShjb25zdCBjaGFyICopOwogICAg
ZXh0ZXJuIHZvaWQgc3JhbmRvbSh1bnNpZ25lZCBpbnQpOwogICAgICAgIGV4dGVybiBsb25nIHJh
bmRvbSh2b2lkKTsKIyAzMzggIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9o
cHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9zdGRsaWIuaCIgMwogIHN0cnVjdCBtYWxs
aW5mbyB7CiAgICAgICAgaW50MzJfdCBhcmVuYTsKICAgICAgICBpbnQzMl90IG9yZGJsa3M7CiAg
ICAgICAgaW50MzJfdCBzbWJsa3M7CiAgICAgICAgaW50MzJfdCBoYmxrczsKICAgICAgICBpbnQz
Ml90IGhibGtoZDsKICAgICAgICBpbnQzMl90IHVzbWJsa3M7CiAgICAgICAgaW50MzJfdCBmc21i
bGtzOwogICAgICAgIGludDMyX3QgdW9yZGJsa3M7CiAgICAgICAgaW50MzJfdCBmb3JkYmxrczsK
ICAgICAgICBpbnQzMl90IGtlZXBjb3N0OwogIH07CgoKCgogICAgIHR5cGVkZWYgc3RydWN0IHsK
ICAgICAgIHVpbnQzMl90IHdvcmQxLCB3b3JkMiwgd29yZDMsIHdvcmQ0OwogICAgIH0gbG9uZ19k
b3VibGU7CgoKCgojIDEgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBh
Mi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9wd2QuaCIgMSAzCiMgNDggIi9vcHQvZ251L2dj
Yy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVk
ZS9wd2QuaCIgMwogICBzdHJ1Y3QgcGFzc3dkIHsKICAgICAgICBjaGFyICpwd19uYW1lOwogICAg
ICAgIGNoYXIgKnB3X3Bhc3N3ZDsKICAgICAgICB1aWRfdCBwd191aWQ7CiAgICAgICAgZ2lkX3Qg
cHdfZ2lkOwogICAgICAgIGNoYXIgKnB3X2FnZTsKICAgICAgICBjaGFyICpwd19jb21tZW50Owog
ICAgICAgIGNoYXIgKnB3X2dlY29zOwogICAgICAgIGNoYXIgKnB3X2RpcjsKICAgICAgICBjaGFy
ICpwd19zaGVsbDsKICAgICAgICBpbnQzMl90IHB3X2F1ZGlkOwogICAgICAgIGludCBwd19hdWRm
bGc7CiAgIH07CgoKICAgICBleHRlcm4gc3RydWN0IHBhc3N3ZCAqZ2V0cHd1aWQodWlkX3QpOwog
ICAgIGV4dGVybiBzdHJ1Y3QgcGFzc3dkICpnZXRwd25hbShjb25zdCBjaGFyICopOwojIDg2ICIv
b3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAv
My4xL2luY2x1ZGUvcHdkLmgiIDMKICAgICBleHRlcm4gdm9pZCBlbmRwd2VudCh2b2lkKTsKICAg
ICBleHRlcm4gc3RydWN0IHBhc3N3ZCAqZ2V0cHdlbnQodm9pZCk7CiAgICAgZXh0ZXJuIHZvaWQg
c2V0cHdlbnQodm9pZCk7CiMgOTcgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxp
Yi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9wd2QuaCIgMwogICBzdHJ1Y3Qgc19w
YXNzd2QgewogICAgICAgY2hhciAqcHdfbmFtZTsKICAgICAgIGNoYXIgKnB3X3Bhc3N3ZDsKICAg
ICAgIGNoYXIgKnB3X2FnZTsKICAgICAgIGludDMyX3QgcHdfYXVkaWQ7CiAgICAgICBpbnQgcHdf
YXVkZmxnOwogICB9OwoKCgoKCgoKICAgICAgICAgZXh0ZXJuIGludCBwdXRwd2VudChjb25zdCBz
dHJ1Y3QgcGFzc3dkICosIEZJTEUgKik7CiAgICAgZXh0ZXJuIHN0cnVjdCBwYXNzd2QgKmZnZXRw
d2VudChGSUxFICopOwogICAgIGV4dGVybiBzdHJ1Y3Qgc19wYXNzd2QgKmdldHNwd2VudCh2b2lk
KTsKICAgICBleHRlcm4gc3RydWN0IHNfcGFzc3dkICpnZXRzcHd1aWQodWlkX3QpOwogICAgIGV4
dGVybiBzdHJ1Y3Qgc19wYXNzd2QgKmdldHNwd2FpZChpbnQzMl90KTsKICAgICBleHRlcm4gc3Ry
dWN0IHNfcGFzc3dkICpnZXRzcHduYW0oY2hhciAqKTsKICAgICBleHRlcm4gc3RydWN0IHNfcGFz
c3dkICpmZ2V0c3B3ZW50KEZJTEUgKik7CiAgICAgZXh0ZXJuIHZvaWQgc2V0c3B3ZW50KHZvaWQp
OwogICAgIGV4dGVybiB2b2lkIGVuZHNwd2VudCh2b2lkKTsKIyAzNjIgIi9vcHQvZ251L2djYy8z
LjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9z
dGRsaWIuaCIgMiAzCgoKCgoKCiAgICAgZXh0ZXJuIGNoYXIgKl9sZGVjdnQobG9uZ19kb3VibGUs
IGludCwgaW50ICosIGludCAqKTsKICAgICBleHRlcm4gY2hhciAqX2xkZmN2dChsb25nX2RvdWJs
ZSwgaW50LCBpbnQgKiwgaW50ICopOwogICAgIGV4dGVybiBjaGFyICpfbGRnY3Z0KGxvbmdfZG91
YmxlLCBpbnQsIGNoYXIgKik7CiAgICAgZXh0ZXJuIGludCBnZXRwdyhpbnQsIGNoYXIgKik7CiAg
ICAgZXh0ZXJuIHZvaWQgbDN0b2wobG9uZyAqLCBjb25zdCBjaGFyICosIGludCk7CiAgICAgZXh0
ZXJuIHZvaWQgbHRvbDMoY2hhciAqLCBjb25zdCBsb25nICosIGludCk7CiAgICAgZXh0ZXJuIGNo
YXIgKmx0b3N0cihsb25nLCBpbnQpOwogICAgIGV4dGVybiBjaGFyICp1bHRvc3RyKHVuc2lnbmVk
IGxvbmcsIGludCk7CiAgICAgZXh0ZXJuIGNoYXIgKmx0b2EobG9uZyk7CiAgICAgZXh0ZXJuIGNo
YXIgKnVsdG9hKHVuc2lnbmVkIGxvbmcpOwogICAgIGV4dGVybiB2b2lkIG1lbW9yeW1hcChpbnQp
OwogICAgIGV4dGVybiBzdHJ1Y3QgbWFsbGluZm8gbWFsbGluZm8odm9pZCk7CiAgICAgZXh0ZXJu
IGludCBtYWxsb3B0KGludCwgaW50KTsKICAgICBleHRlcm4gbG9uZ19kb3VibGUgc3RydG9sZChj
b25zdCBjaGFyICosIGNoYXIgKiopOwojIDMwICJpbmNsdWRlcy5oIiAyCiMgMSAiL29wdC9nbnUv
Z2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNs
dWRlL3N0cmluZy5oIiAxIDMKIyA0NyAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2Mt
bGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0cmluZy5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL3N5cy9fbnVsbC5oIiAxIDMKIyA0OCAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4w
L2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0cmluZy5oIiAy
IDMKIyA1OSAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAt
aHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0cmluZy5oIiAzCgogICAgIGV4dGVybiBpbnQgbWVtY21w
KGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwogICAgIGV4dGVybiBjaGFyICpz
dHJuY2F0KGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwogICAgIGV4dGVybiBpbnQgc3Ry
bmNtcChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKICAgICBleHRlcm4gdm9p
ZCAqbWVtbW92ZSh2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKICAgICBleHRlcm4gY2hh
ciAqc3RyY3B5KGNoYXIgKiwgY29uc3QgY2hhciAqKTsKICAgICBleHRlcm4gY2hhciAqc3RybmNw
eShjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKICAgICBleHRlcm4gY2hhciAqc3RyY2F0
KGNoYXIgKiwgY29uc3QgY2hhciAqKTsKICAgICBleHRlcm4gaW50IHN0cmNtcChjb25zdCBjaGFy
ICosIGNvbnN0IGNoYXIgKik7CiAgICAgZXh0ZXJuIGludCBzdHJjb2xsKGNvbnN0IGNoYXIgKiwg
Y29uc3QgY2hhciAqKTsKICAgICBleHRlcm4gc2l6ZV90IHN0cnhmcm0oY2hhciAqLCBjb25zdCBj
aGFyICosIHNpemVfdCk7CgoKCgogICAgIGV4dGVybiBjaGFyICpzdHJjaHIoY29uc3QgY2hhciAq
LCBpbnQpOwogICAgIGV4dGVybiBjaGFyICpzdHJwYnJrKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh
ciAqKTsKICAgICBleHRlcm4gY2hhciAqc3RycmNocihjb25zdCBjaGFyICosIGludCk7CiAgICAg
ZXh0ZXJuIGNoYXIgKnN0cnN0cihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CgoKCiAgICAg
ZXh0ZXJuIGNoYXIgKnN0cnRvayhjaGFyICosIGNvbnN0IGNoYXIgKik7CiAgICAgZXh0ZXJuIGNo
YXIgKnN0cmVycm9yKGludCk7CgojIDEyNCAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9n
Y2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0cmluZy5oIiAzCgogICAg
ICAgZXh0ZXJuIHZvaWQgKm1lbWNweSh2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKCgoK
CiAgICAgICBleHRlcm4gdm9pZCAqbWVtY2hyKGNvbnN0IHZvaWQgKiwgaW50LCBzaXplX3QpOwoK
CgogICAgICAgZXh0ZXJuIHZvaWQgKm1lbXNldCh2b2lkICosIGludCwgc2l6ZV90KTsKICAgICAg
IGV4dGVybiBzaXplX3Qgc3RyY3Nwbihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CiAgICAg
ICBleHRlcm4gc2l6ZV90IHN0cnNwbihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CgoKCgoK
ICAgICAgICAgIGV4dGVybiBzaXplX3Qgc3RybGVuKGNvbnN0IGNoYXIgKik7CgojIDE2MSAiL29w
dC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMu
MS9pbmNsdWRlL3N0cmluZy5oIiAzCiAgICAgICBleHRlcm4gdm9pZCAqbWVtY2NweSh2b2lkICos
IGNvbnN0IHZvaWQgKiwgaW50LCBzaXplX3QpOwojIDE4MCAiL29wdC9nbnUvZ2NjLzMuMS1ocHBh
Mi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3N0cmluZy5o
IiAzCiAgICAgZXh0ZXJuIGNoYXIgKnN0cmR1cChjb25zdCBjaGFyICopOwoKCgoKCgoKICAgICBl
eHRlcm4gY2hhciAqc3RycnN0cihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CiAgICAgZXh0
ZXJuIGludCBzdHJjYXNlY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKICAgICBleHRl
cm4gaW50IHN0cm5jYXNlY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwog
ICAgIGV4dGVybiBpbnQgbmxfc3RyY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKICAg
ICBleHRlcm4gaW50IG5sX3N0cm5jbXAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVf
dCk7CiMgMzEgImluY2x1ZGVzLmgiIDIKIyAxICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGli
L2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvc3RkYXJnLmgiIDEgMwoj
IDExMCAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1
eDExLjAwLzMuMS9pbmNsdWRlL3N0ZGFyZy5oIiAzCnR5cGVkZWYgX19nbnVjX3ZhX2xpc3QgdmFf
bGlzdDsKIyAzMiAiaW5jbHVkZXMuaCIgMgoKIyAxICIvdXNyL2luY2x1ZGUvZ3JwLmgiIDEgMwoj
IDIwICIvdXNyL2luY2x1ZGUvZ3JwLmgiIDMKICAgc3RydWN0IGdyb3VwIHsKICAgICAgICBjaGFy
ICpncl9uYW1lOwogICAgICAgIGNoYXIgKmdyX3Bhc3N3ZDsKICAgICAgICBnaWRfdCBncl9naWQ7
CiAgICAgICAgY2hhciAqKmdyX21lbTsKICAgfTsKCgogICAgIGV4dGVybiBzdHJ1Y3QgZ3JvdXAg
KmdldGdyZ2lkKGdpZF90KTsKICAgICBleHRlcm4gc3RydWN0IGdyb3VwICpnZXRncm5hbShjb25z
dCBjaGFyICopOwojIDUxICIvdXNyL2luY2x1ZGUvZ3JwLmgiIDMKICAgICBleHRlcm4gc3RydWN0
IGdyb3VwICpnZXRncmVudCh2b2lkKTsKICAgICBleHRlcm4gdm9pZCBlbmRncmVudCh2b2lkKTsK
ICAgICBleHRlcm4gdm9pZCBzZXRncmVudCh2b2lkKTsKIyA2NyAiL3Vzci9pbmNsdWRlL2dycC5o
IiAzCiAgICAgZXh0ZXJuIHN0cnVjdCBncm91cCAqZmdldGdyZW50IChGSUxFICopOwojIDM0ICJp
bmNsdWRlcy5oIiAyCiMgMSAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hw
cGEyLjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL3RpbWUuaCIgMSAzCiMgNTEgIi9vcHQvZ251
L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5j
bHVkZS90aW1lLmgiIDMKdHlwZWRlZiBpbnQ2NF90IGhydGltZV90OwoKCgoKCmV4dGVybiBocnRp
bWVfdCBnZXRocnRpbWUoKTsKCiAgICAgICAgICAgZXh0ZXJuIGludCBnZXRfZXhwaXJhdGlvbl90
aW1lIChzdHJ1Y3QgdGltZXNwZWMgKixzdHJ1Y3QgdGltZXNwZWMgKik7CiMgMzUgImluY2x1ZGVz
LmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvZGlyZW50LmgiIDEgMwojIDkgIi91c3IvaW5jbHVkZS9k
aXJlbnQuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvZGlyZW50LmgiIDEgMwojIDMxICIvdXNy
L2luY2x1ZGUvc3lzL2RpcmVudC5oIiAzCiAgIHN0cnVjdCBkaXJlbnQgewoKCgogICAgICBpbm9f
dCBkX2lubzsKCiAgICAgIHNob3J0IGRfcmVjbGVuOwogICAgICBzaG9ydCBkX25hbWxlbjsKICAg
ICAgY2hhciBkX25hbWVbMjU1ICsgMV07CiAgIH07CiMgNzggIi91c3IvaW5jbHVkZS9zeXMvZGly
ZW50LmgiIDMKICAgdHlwZWRlZiBzdHJ1Y3QgX19kaXJkZXNjIHsKICAgICAgaW50IF9fZGRfZmQ7
CiAgICAgIGxvbmcgX19kZF9sb2M7CiAgICAgIGxvbmcgX19kZF9zaXplOwogICAgICBsb25nIF9f
ZGRfYmJhc2U7CiAgICAgIGxvbmcgX19kZF9lbnRubzsKICAgICAgbG9uZyBfX2RkX2JzaXplOwog
ICAgICBjaGFyICpfX2RkX2J1ZjsKCgoKICAgICAgICB2b2lkICpfX2RkX3VudXNlZDsKCiAgIH0g
RElSOwojIDEyMSAiL3Vzci9pbmNsdWRlL3N5cy9kaXJlbnQuaCIgMwogICAgIGV4dGVybiBESVIg
Km9wZW5kaXIoY29uc3QgY2hhciAqKTsKICAgICBleHRlcm4gc3RydWN0IGRpcmVudCAqcmVhZGRp
cihESVIgKik7CiAgICAgZXh0ZXJuIHZvaWQgcmV3aW5kZGlyKERJUiAqKTsKICAgICBleHRlcm4g
aW50IGNsb3NlZGlyKERJUiAqKTsKIyAxNTUgIi91c3IvaW5jbHVkZS9zeXMvZGlyZW50LmgiIDMK
ICAgICBleHRlcm4gbG9uZyB0ZWxsZGlyKERJUiAqKTsKICAgICBleHRlcm4gdm9pZCBzZWVrZGly
KERJUiAqLCBsb25nIGludCk7CiMgMTcwICIvdXNyL2luY2x1ZGUvc3lzL2RpcmVudC5oIiAzCiAg
ICAgZXh0ZXJuIGludCBzY2FuZGlyKGNvbnN0IGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3QgZGlyZW50ICoqKiwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKCop
KGNvbnN0IHN0cnVjdCBkaXJlbnQgKiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICgq
KShjb25zdCBzdHJ1Y3QgZGlyZW50ICoqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RydWN0IGRpcmVudCAqKikpOwogICAgIGV4dGVybiBpbnQgYWxwaGFzb3J0KGNv
bnN0IHN0cnVjdCBkaXJlbnQgKiosIGNvbnN0IHN0cnVjdCBkaXJlbnQgKiopOwojIDE5MiAiL3Vz
ci9pbmNsdWRlL3N5cy9kaXJlbnQuaCIgMwogICBzdHJ1Y3QgX2RpcmRlc2MgewogICAgICAgIGlu
dCBfX2RkX2ZkOwogICAgICAgIGxvbmcgX19kZF9sb2M7CiAgICAgICAgbG9uZyBfX2RkX3NpemU7
CiAgICAgICAgbG9uZyBfX2RkX2JiYXNlOwogICAgICAgIGxvbmcgX19kZF9lbnRubzsKICAgICAg
ICBsb25nIF9fZGRfYnNpemU7CiAgICAgICAgY2hhciAqX19kZF9idWY7CgoKCiAgICAgICAgdm9p
ZCAqX19kZF91bnVzZWQ7CgogICB9OwojIDEwICIvdXNyL2luY2x1ZGUvZGlyZW50LmgiIDIgMwoj
IDM2ICJpbmNsdWRlcy5oIiAyCgoKIyAxICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGliL2dj
Yy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvbGltaXRzLmgiIDEgMwojIDEx
ICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEu
MDAvMy4xL2luY2x1ZGUvbGltaXRzLmgiIDMKIyAxICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAv
bGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvc3lzbGltaXRzLmgi
IDEgMwoKCgoKCgojIDEgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBh
Mi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS9saW1pdHMuaCIgMSAzCiMgMTMyICIvb3B0L2du
dS9nY2MvMy4xLWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2lu
Y2x1ZGUvbGltaXRzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDEgMwojIDM5NyAi
L3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9wYXJhbS5oIiAx
IDMKIyAyNiAiL3Vzci9pbmNsdWRlL3N5cy9wYXJhbS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL21h
Y2hpbmUvcGFyYW0uaCIgMSAzCiMgMTIgIi91c3IvaW5jbHVkZS9tYWNoaW5lL3BhcmFtLmgiIDMK
IyAxICIvdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIiAxIDMKIyAxMyAiL3Vzci9pbmNsdWRl
L21hY2hpbmUvcGFyYW0uaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL21hY2hpbmUvcGFyYW1fc2ht
LmgiIDEgMwojIDE0ICIvdXNyL2luY2x1ZGUvbWFjaGluZS9wYXJhbS5oIiAyIDMKIyAzMDIgIi91
c3IvaW5jbHVkZS9tYWNoaW5lL3BhcmFtLmgiIDMKZXh0ZXJuIGNoYXIgKnVzdGtfYWRkcl9xMl8z
MmJpdDsKZXh0ZXJuIGNoYXIgKnVzdGtfYWRkcl8zMmJpdDsKIyAyNyAiL3Vzci9pbmNsdWRlL3N5
cy9wYXJhbS5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL21hY2hpbmUvc3BsLmgiIDEgMwojIDgw
ICIvdXNyL2luY2x1ZGUvbWFjaGluZS9zcGwuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMva2Vy
bl9zdmNzLmgiIDEgMwojIDgxICIvdXNyL2luY2x1ZGUvbWFjaGluZS9zcGwuaCIgMiAzCiMgMjkg
Ii91c3IvaW5jbHVkZS9zeXMvcGFyYW0uaCIgMiAzCiMgMzk4ICIvdXNyL2luY2x1ZGUvbGltaXRz
LmgiIDIgMwojIDEzMyAiL29wdC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEy
LjAtaHAtaHB1eDExLjAwLzMuMS9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKIyA4ICIvb3B0L2dudS9n
Y2MvMy4xLWhwcGEyLjAvbGliL2djYy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1
ZGUvc3lzbGltaXRzLmgiIDIgMwojIDEyICIvb3B0L2dudS9nY2MvMy4xLWhwcGEyLjAvbGliL2dj
Yy1saWIvaHBwYTIuMC1ocC1ocHV4MTEuMDAvMy4xL2luY2x1ZGUvbGltaXRzLmgiIDIgMwojIDM5
ICJpbmNsdWRlcy5oIiAyCiMgNTQgImluY2x1ZGVzLmgiCiMgMSAiL3Vzci9pbmNsdWRlL25ldGRi
LmgiIDEgMwojIDcxICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9u
ZXRpbmV0L2luLmgiIDEgMwojIDY5ICIvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAzCnR5cGVk
ZWYgdW5zaWduZWQgc2hvcnQgaW5fcG9ydF90OwojIDk4ICIvdXNyL2luY2x1ZGUvbmV0aW5ldC9p
bi5oIiAzCiAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbl9hZGRyX3Q7CgoKCnN0cnVjdCBpbl9h
ZGRyIHsKICAgaW5fYWRkcl90IHNfYWRkcjsKfTsKIyAxNjUgIi91c3IvaW5jbHVkZS9uZXRpbmV0
L2luLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBzYV9mYW1pbHlfdDsKCgpzdHJ1Y3Qgc29j
a2FkZHJfaW4gewogICAgICAgIHNhX2ZhbWlseV90IHNpbl9mYW1pbHk7CiAgICAgICAgaW5fcG9y
dF90IHNpbl9wb3J0OwogICAgICAgIHN0cnVjdCBpbl9hZGRyIHNpbl9hZGRyOwogICAgICAgIHVu
c2lnbmVkIGNoYXIgc2luX3plcm9bOF07Cn07CiMgNzIgIi91c3IvaW5jbHVkZS9uZXRkYi5oIiAy
IDMKIyA5MyAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDMKc3RydWN0IGhvc3RlbnQgewogICAgICAg
IGNoYXIgKmhfbmFtZTsKICAgICAgICBjaGFyICoqaF9hbGlhc2VzOwogICAgICAgIGludCBoX2Fk
ZHJ0eXBlOwogICAgICAgIGludCBoX2xlbmd0aDsKICAgICAgICBjaGFyICoqaF9hZGRyX2xpc3Q7
Cgp9OwojIDEzNiAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDMKc3RydWN0IG5ldGVudCB7CiAgICAg
ICAgY2hhciAqbl9uYW1lOwogICAgICAgIGNoYXIgKipuX2FsaWFzZXM7CiAgICAgICAgaW50IG5f
YWRkcnR5cGU7CiAgICAgICAgaW5fYWRkcl90IG5fbmV0Owp9OwojIDE2NiAiL3Vzci9pbmNsdWRl
L25ldGRiLmgiIDMKc3RydWN0IHNlcnZlbnQgewogICAgICAgIGNoYXIgKnNfbmFtZTsKICAgICAg
ICBjaGFyICoqc19hbGlhc2VzOwogICAgICAgIGludCBzX3BvcnQ7CiAgICAgICAgY2hhciAqc19w
cm90bzsKfTsKIyAxOTQgIi91c3IvaW5jbHVkZS9uZXRkYi5oIiAzCnN0cnVjdCBwcm90b2VudCB7
CiAgICAgICAgY2hhciAqcF9uYW1lOwogICAgICAgIGNoYXIgKipwX2FsaWFzZXM7CiAgICAgICAg
aW50IHBfcHJvdG87Cn07CiMgMjU3ICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIgMwogICAgICAgIGV4
dGVybiBzdHJ1Y3QgaG9zdGVudCAqZ2V0aG9zdGJ5bmFtZShjb25zdCBjaGFyICopOwoKICAgICAg
ICBleHRlcm4gc3RydWN0IGhvc3RlbnQgKmdldGhvc3RieWFkZHIoY29uc3Qgdm9pZCAqLCBzaXpl
X3QsIGludCk7CiAgICAgICAgZXh0ZXJuIHZvaWQgc2V0aG9zdGVudChpbnQpOwogICAgICAgIGV4
dGVybiB2b2lkIGVuZGhvc3RlbnQodm9pZCk7CgoKCgoKICAgICAgICBleHRlcm4gc3RydWN0IGhv
c3RlbnQgKmdldGhvc3RlbnQodm9pZCk7CiAgICAgICAgZXh0ZXJuIHN0cnVjdCBuZXRlbnQgKmdl
dG5ldGJ5bmFtZShjb25zdCBjaGFyICopOwoKICAgICAgICBleHRlcm4gc3RydWN0IG5ldGVudCAq
Z2V0bmV0YnlhZGRyKGluX2FkZHJfdCwgaW50KTsKICAgICAgICBleHRlcm4gdm9pZCBzZXRuZXRl
bnQoaW50KTsKICAgICAgICBleHRlcm4gdm9pZCBlbmRuZXRlbnQodm9pZCk7CgoKCgoKICAgICAg
ICBleHRlcm4gc3RydWN0IG5ldGVudCAqZ2V0bmV0ZW50KHZvaWQpOwogICAgICAgIGV4dGVybiBz
dHJ1Y3Qgc2VydmVudCAqZ2V0c2VydmJ5bmFtZShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7
CiAgICAgICAgZXh0ZXJuIHN0cnVjdCBzZXJ2ZW50ICpnZXRzZXJ2Ynlwb3J0KGludCwgY29uc3Qg
Y2hhciAqKTsKICAgICAgICBleHRlcm4gc3RydWN0IHNlcnZlbnQgKmdldHNlcnZlbnQodm9pZCk7
CgogICAgICAgIGV4dGVybiB2b2lkIHNldHNlcnZlbnQoaW50KTsKICAgICAgICBleHRlcm4gdm9p
ZCBlbmRzZXJ2ZW50KHZvaWQpOwoKCgoKICAgICAgICBleHRlcm4gc3RydWN0IHByb3RvZW50ICpn
ZXRwcm90b2J5bmFtZShjb25zdCBjaGFyICopOwogICAgICAgIGV4dGVybiBzdHJ1Y3QgcHJvdG9l
bnQgKmdldHByb3RvYnludW1iZXIoaW50KTsKICAgICAgICBleHRlcm4gc3RydWN0IHByb3RvZW50
ICpnZXRwcm90b2VudCh2b2lkKTsKCiAgICAgICAgZXh0ZXJuIHZvaWQgc2V0cHJvdG9lbnQoaW50
KTsKICAgICAgICBleHRlcm4gdm9pZCBlbmRwcm90b2VudCh2b2lkKTsKIyA0MjggIi91c3IvaW5j
bHVkZS9uZXRkYi5oIiAzCmV4dGVybiBpbnQgaF9lcnJubzsKIyA1NSAiaW5jbHVkZXMuaCIgMgoj
IDYzICJpbmNsdWRlcy5oIgojIDEgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxp
Yi9ocHBhMi4wLWhwLWhwdXgxMS4wMC8zLjEvaW5jbHVkZS91dGltZS5oIiAxIDMKIyA0OSAiL29w
dC9nbnUvZ2NjLzMuMS1ocHBhMi4wL2xpYi9nY2MtbGliL2hwcGEyLjAtaHAtaHB1eDExLjAwLzMu
MS9pbmNsdWRlL3V0aW1lLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL190aW1lX3QuaCIgMSAz
CiMgNTAgIi9vcHQvZ251L2djYy8zLjEtaHBwYTIuMC9saWIvZ2NjLWxpYi9ocHBhMi4wLWhwLWhw
dXgxMS4wMC8zLjEvaW5jbHVkZS91dGltZS5oIiAyIDMKCgogICBzdHJ1Y3QgdXRpbWJ1ZiB7CiAg
ICAgICAgdGltZV90IGFjdGltZTsKICAgICAgICB0aW1lX3QgbW9kdGltZTsKICAgfTsKCgoKICAg
ICAgICAgICBleHRlcm4gaW50IHV0aW1lKGNvbnN0IGNoYXIgKiwgY29uc3Qgc3RydWN0IHV0aW1i
dWYgKik7CiMgNjQgImluY2x1ZGVzLmgiIDIKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3VuaXN0
ZC5oIiAxIDMKIyAxMSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRl
L3N5cy91bmlzdGQuaCIgMSAzCiMgOTUgIi91c3IvaW5jbHVkZS9zeXMvdW5pc3RkLmgiIDMKICAg
ICBleHRlcm4gdm9pZCBfZXhpdCAoaW50KTsKICAgICBleHRlcm4gaW50IGFjY2VzcyAoY29uc3Qg
Y2hhciAqLCBpbnQpOwogICAgIGV4dGVybiBpbnQgY2hkaXIgKGNvbnN0IGNoYXIgKik7CiAgICAg
ZXh0ZXJuIGludCBjaG93biAoY29uc3QgY2hhciAqLCB1aWRfdCwgZ2lkX3QpOwogICAgIGV4dGVy
biBpbnQgY2xvc2UgKGludCk7CiAgICAgZXh0ZXJuIGNoYXIgKmN0ZXJtaWQgKGNoYXIgKik7CiAg
ICAgZXh0ZXJuIGNoYXIgKmN1c2VyaWQgKGNoYXIgKik7CiAgICAgZXh0ZXJuIGludCBkdXAgKGlu
dCk7CiAgICAgZXh0ZXJuIGludCBkdXAyIChpbnQsIGludCk7CiAgICAgZXh0ZXJuIGludCBleGVj
bCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLik7CiAgICAgZXh0ZXJuIGludCBleGVj
bGUgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwogICAgIGV4dGVybiBpbnQgZXhl
Y2xwIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKICAgICBleHRlcm4gaW50IGV4
ZWN2IChjb25zdCBjaGFyICosIGNoYXIgKmNvbnN0IFtdKTsKICAgICBleHRlcm4gaW50IGV4ZWN2
ZSAoY29uc3QgY2hhciAqLCBjaGFyICpjb25zdCBbXSwgY2hhciAqY29uc3QgW10pOwogICAgIGV4
dGVybiBpbnQgZXhlY3ZwIChjb25zdCBjaGFyICosIGNoYXIgKmNvbnN0IFtdKTsKICAgICBleHRl
cm4gbG9uZyBmcGF0aGNvbmYgKGludCwgaW50KTsKICAgICBleHRlcm4gY2hhciAqZ2V0Y3dkIChj
aGFyICosIHNpemVfdCk7CiAgICAgZXh0ZXJuIGludCBnZXRncm91cHMgKGludCwgZ2lkX3QgW10p
OwogICAgIGV4dGVybiBjaGFyICpnZXRsb2dpbiAodm9pZCk7CgoKCgoKCgogICAgIGV4dGVybiBp
bnQgaXNhdHR5IChpbnQpOwogICAgIGV4dGVybiBpbnQgbGluayAoY29uc3QgY2hhciAqLCBjb25z
dCBjaGFyICopOwogICAgIHN0YXRpYyBvZmZfdCBsc2VlayAoaW50LCBvZmZfdCwgaW50KTsKICAg
ICBleHRlcm4gbG9uZyBwYXRoY29uZiAoY29uc3QgY2hhciAqLCBpbnQpOwogICAgIGV4dGVybiBp
bnQgcGF1c2UgKHZvaWQpOwogICAgIGV4dGVybiBpbnQgcGlwZSAoaW50ICopOwogICAgIGV4dGVy
biBzc2l6ZV90IHJlYWQgKGludCwgdm9pZCAqLCBzaXplX3QpOwogICAgIGV4dGVybiBzc2l6ZV90
IHByZWFkIChpbnQsIHZvaWQgKiwgc2l6ZV90LCBvZmZfdCk7CiAgICAgZXh0ZXJuIGludCBybWRp
ciAoY29uc3QgY2hhciAqKTsKICAgICBleHRlcm4gaW50IHNldGdpZCAoZ2lkX3QpOwogICAgIGV4
dGVybiBpbnQgc2V0cGdpZCAocGlkX3QsIHBpZF90KTsKICAgICBleHRlcm4gcGlkX3Qgc2V0c2lk
ICh2b2lkKTsKICAgICBleHRlcm4gaW50IHNldHVpZCAodWlkX3QpOwogICAgIGV4dGVybiB1bnNp
Z25lZCBpbnQgc2xlZXAgKHVuc2lnbmVkIGludCk7CiAgICAgZXh0ZXJuIGxvbmcgc3lzY29uZiAo
aW50KTsKICAgICBleHRlcm4gcGlkX3QgdGNnZXRwZ3JwIChpbnQpOwogICAgIGV4dGVybiBpbnQg
dGNzZXRwZ3JwIChpbnQsIHBpZF90KTsKICAgICBleHRlcm4gY2hhciAqdHR5bmFtZSAoaW50KTsK
CgoKCgoKCiAgICAgZXh0ZXJuIGludCB1bmxpbmsgKGNvbnN0IGNoYXIgKik7CiAgICAgZXh0ZXJu
IHNzaXplX3Qgd3JpdGUgKGludCwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwogICAgIGV4dGVybiBz
c2l6ZV90IHB3cml0ZSAoaW50LCBjb25zdCB2b2lkICosIHNpemVfdCwgb2ZmX3QpOwojIDE2MiAi
L3Vzci9pbmNsdWRlL3N5cy91bmlzdGQuaCIgMwogICAgIGV4dGVybiB1bnNpZ25lZCBpbnQgYWxh
cm0gKHVuc2lnbmVkIGludCk7CiAgICAgZXh0ZXJuIHBpZF90IGZvcmsgKHZvaWQpOwogICAgIGV4
dGVybiBnaWRfdCBnZXRlZ2lkICh2b2lkKTsKICAgICBleHRlcm4gdWlkX3QgZ2V0ZXVpZCAodm9p
ZCk7CiAgICAgZXh0ZXJuIGdpZF90IGdldGdpZCAodm9pZCk7CiAgICAgZXh0ZXJuIHBpZF90IGdl
dHBncnAgKHZvaWQpOwogICAgIGV4dGVybiBwaWRfdCBnZXRwaWQgKHZvaWQpOwogICAgIGV4dGVy
biBwaWRfdCBnZXRwcGlkICh2b2lkKTsKICAgICBleHRlcm4gdWlkX3QgZ2V0dWlkICh2b2lkKTsK
CgoKCgogICAgIGV4dGVybiBjaGFyICpvcHRhcmc7CiAgICAgZXh0ZXJuIGludCBvcHRlcnI7CiAg
ICAgZXh0ZXJuIGludCBvcHRpbmQ7CiAgICAgZXh0ZXJuIGludCBvcHRvcHQ7CgogICAgIGV4dGVy
biBpbnQgZ2V0b3B0IChpbnQsIGNoYXIgKiBjb25zdCBbXSwgY29uc3QgY2hhciAqKTsKICAgICBl
eHRlcm4gc2l6ZV90IGNvbmZzdHIgKGludCwgY2hhciAqLCBzaXplX3QpOwoKCgoKICAgICBleHRl
cm4gaW50IHB0aHJlYWRfYXRmb3JrKHZvaWQgKCpwcmVwYXJlKSgpLCB2b2lkICgqcGFyZW50KSgp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQgKCpjaGlsZCkoKSk7CgoKCgoKCgogICAgICAgIGV4dGVybiBpbnQgY2hyb290IChj
b25zdCBjaGFyICopOwogICAgICAgIGV4dGVybiBjaGFyICpjcnlwdCAoY29uc3QgY2hhciAqLCBj
b25zdCBjaGFyICopOwogICAgICAgIGV4dGVybiB2b2lkIGVuY3J5cHQgKGNoYXIgWzY0XSwgaW50
KTsKICAgICAgICBleHRlcm4gaW50IGZzeW5jIChpbnQpOwogICAgICAgIGV4dGVybiBjaGFyICpn
ZXRwYXNzIChjb25zdCBjaGFyICopOwogICAgICAgIGV4dGVybiBpbnQgbmljZSAoaW50KTsKCiAg
ICAgICAgZXh0ZXJuIGludCByZW5hbWUgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKCgog
ICAgICAgIGV4dGVybiB2b2lkIHN3YWIgKGNvbnN0IHZvaWQgKiwgdm9pZCAqLCBzc2l6ZV90KTsK
CgoKCgoKCiAgICAgZXh0ZXJuIGNoYXIgKiplbnZpcm9uOwoKCgogICAgICAgZXh0ZXJuIGludCBy
ZWFkbGluayAoY29uc3QgY2hhciAqLCBjaGFyICosIHNpemVfdCk7CgoKCiAgICAgZXh0ZXJuIGlu
dCBmY2hvd24gKGludCwgdWlkX3QsIGdpZF90KTsKICAgICBzdGF0aWMgaW50IGZ0cnVuY2F0ZSAo
aW50LCBvZmZfdCk7CiAgICAgc3RhdGljIGludCB0cnVuY2F0ZSAoY29uc3QgY2hhciAqLCBvZmZf
dCk7CgoKICAgICAgIGV4dGVybiBpbnQgc2V0Z3JvdXBzIChpbnQsIGdpZF90IFtdKTsKCiAgICAg
ZXh0ZXJuIGludCBzeW1saW5rIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CgoKCgogICAg
ICAgIGV4dGVybiBwaWRfdCBzZXRwZ3JwICh2b2lkKTsKIyAyNDggIi91c3IvaW5jbHVkZS9zeXMv
dW5pc3RkLmgiIDMKICAgICAgICBleHRlcm4gcGlkX3QgdmZvcmsgKHZvaWQpOwojIDI2MyAiL3Vz
ci9pbmNsdWRlL3N5cy91bmlzdGQuaCIgMwogICAgICAgIGV4dGVybiBpbnQgYnJrICh2b2lkICop
OwogICAgICAgIGV4dGVybiBpbnQgZmNoZGlyIChpbnQpOwogICAgICAgIGV4dGVybiBpbnQgZ2V0
ZHRhYmxlc2l6ZSAodm9pZCk7CgogICAgICAgIGV4dGVybiBsb25nIGdldGhvc3RpZCAodm9pZCk7
CgoKCiAgICAgICAgZXh0ZXJuIGludCBnZXRob3N0bmFtZSAoY2hhciAqLCBzaXplX3QpOwogICAg
ICAgIGV4dGVybiBpbnQgZ2V0cGFnZXNpemUgKHZvaWQpOwogICAgICAgIGV4dGVybiBwaWRfdCBn
ZXRwZ2lkIChwaWRfdCk7CiAgICAgICAgZXh0ZXJuIHBpZF90IGdldHNpZCAocGlkX3QpOwogICAg
ICAgIGV4dGVybiBjaGFyICpnZXR3ZCAoY2hhciAqKTsKICAgICAgICBzdGF0aWMgaW50IGxvY2tm
IChpbnQsIGludCwgb2ZmX3QpOwogICAgICAgIGV4dGVybiBpbnQgbGNob3duIChjb25zdCBjaGFy
ICosIHVpZF90LCBnaWRfdCk7CgoKCiAgICAgICAgZXh0ZXJuIHZvaWQgKnNicmsgKGludCk7Cgog
ICAgICAgIGV4dGVybiBpbnQgc2V0cmVnaWQgKGdpZF90LCBnaWRfdCk7CiAgICAgICAgZXh0ZXJu
IGludCBzZXRyZXVpZCAodWlkX3QsIHVpZF90KTsKICAgICAgICBleHRlcm4gdm9pZCBzeW5jICh2
b2lkKTsKCiAgICAgICAgZXh0ZXJuIHVzZWNvbmRzX3QgdWFsYXJtICh1c2Vjb25kc190LCB1c2Vj
b25kc190KTsKICAgICAgICBleHRlcm4gaW50IHVzbGVlcCAodXNlY29uZHNfdCk7CgoKCgoKCgog
ICAgIGV4dGVybiB2b2lkIGVuZHVzZXJzaGVsbCAodm9pZCk7CiAgICAgZXh0ZXJuIGludCBmc2N0
bCAoaW50LCBpbnQsIHZvaWQgKiwgc2l6ZV90KTsKICAgICBleHRlcm4gY2hhciAqZ2V0Y2RmIChj
b25zdCBjaGFyICosIGNoYXIgKiwgc2l6ZV90KTsKICAgICBleHRlcm4gY2hhciAqZ2V0aGN3ZCAo
Y2hhciAqLCBzaXplX3QpOwogICAgIGV4dGVybiBpbnQgZ2V0cGdycDIgKHBpZF90KTsKICAgICBl
eHRlcm4gY2hhciAqZ2V0dXNlcnNoZWxsICh2b2lkKTsKICAgICBleHRlcm4gY2hhciAqaGlkZWNk
ZiAoY29uc3QgY2hhciAqLCBjaGFyICosIHNpemVfdCk7CiAgICAgZXh0ZXJuIGludCBpbml0Z3Jv
dXBzIChjb25zdCBjaGFyICosIGdpZF90KTsKCgoKICAgICBleHRlcm4gY2hhciAqbG9nbmFtZSAo
dm9pZCk7CiAgICAgZXh0ZXJuIHZvaWQgbHN5bmMgKHZvaWQpOwogICAgIHN0YXRpYyBpbnQgcHJl
YWxsb2MgKGludCwgb2ZmX3QpOwogICAgIGV4dGVybiBpbnQgc2V0aG9zdG5hbWUgKGNvbnN0IGNo
YXIgKiwgc2l6ZV90KTsKICAgICBleHRlcm4gaW50IHNldHBncnAyIChwaWRfdCwgcGlkX3QpOwog
ICAgIGV4dGVybiBpbnQgc2V0cmVzZ2lkIChnaWRfdCwgZ2lkX3QsIGdpZF90KTsKICAgICBleHRl
cm4gaW50IHNldHJlc3VpZCAodWlkX3QsIHVpZF90LCB1aWRfdCk7CiAgICAgZXh0ZXJuIHZvaWQg
c2V0dXNlcnNoZWxsICh2b2lkKTsKICAgICBleHRlcm4gbG9uZyBzZ2V0bCAoY29uc3QgY2hhciAq
KTsKICAgICBleHRlcm4gdm9pZCBzcHV0bCAobG9uZywgY2hhciAqKTsKICAgICBleHRlcm4gaW50
IHN3YXBvbiAoY29uc3QgY2hhciAqLCAuLi4pOwogICAgIGV4dGVybiBpbnQgc3dhcG9mZiAoY29u
c3QgY2hhciAqLCBpbnQpOwogICAgIGV4dGVybiBjaGFyICp0dHluYW1lIChpbnQpOwoKICAgICBl
eHRlcm4gaW50NjRfdCBfX3N5c2NvbmZ4IChpbnQsIGludCk7CiMgMzMzICIvdXNyL2luY2x1ZGUv
c3lzL3VuaXN0ZC5oIiAzCiAgICAgZXh0ZXJuIGludCBzZXRfdXNlcnRocmVhZGlkIChpbnQpOwoj
IDM0NyAiL3Vzci9pbmNsdWRlL3N5cy91bmlzdGQuaCIgMwogICAgICAgICAgIGV4dGVybiBwaWRf
dCBzZXRwZ3JwMyAodm9pZCk7CiMgMzczICIvdXNyL2luY2x1ZGUvc3lzL3VuaXN0ZC5oIiAzCiAg
IGV4dGVybiBpbnQgX19wcmVhbGxvYzY0IChpbnQsIG9mZl90KTsKICAgZXh0ZXJuIGludCBfX2xv
Y2tmNjQgKGludCwgaW50LCBvZmZfdCk7CiAgIGV4dGVybiBpbnQgX190cnVuY2F0ZTY0IChjb25z
dCBjaGFyICosIG9mZl90KTsKICAgZXh0ZXJuIGludCBfX2Z0cnVuY2F0ZTY0IChpbnQsIG9mZl90
KTsKICAgZXh0ZXJuIG9mZjY0X3QgX19sc2VlazY0IChpbnQsIG9mZl90LCBpbnQpOwoKICAgIHN0
YXRpYyBpbnQgdHJ1bmNhdGUoY29uc3QgY2hhciAqYSwgb2ZmX3QgYikKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7IHJldHVybiBfX3RydW5jYXRlNjQoYSxiKTsgfQogICAgc3RhdGlj
IGludCBwcmVhbGxvYyhpbnQgYSwgb2ZmX3QgYikKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB7IHJldHVybiBfX3ByZWFsbG9jNjQoYSxiKTsgfQogICAgc3RhdGljIGludCBsb2NrZihp
bnQgYSwgaW50IGIsIG9mZl90IGMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBy
ZXR1cm4gX19sb2NrZjY0KGEsYixjKTsgfQogICAgc3RhdGljIGludCBmdHJ1bmNhdGUoaW50IGEs
IG9mZl90IGIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gX19mdHJ1
bmNhdGU2NChhLGIpOyB9CiAgICBzdGF0aWMgb2ZmX3QgbHNlZWsoaW50IGEsIG9mZl90IGIsIGlu
dCBjKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIF9fbHNlZWs2NChh
LGIsYyk7IH0KIyA5NTggIi91c3IvaW5jbHVkZS9zeXMvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBz
ZXJpYWxpemUgKGludCwgcGlkX3QpOwojIDEyICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoj
IDcyICJpbmNsdWRlcy5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL3Rlcm1pb3MuaCIgMSAzCgoKCgoK
IyAxICIvdXNyL2luY2x1ZGUvc3lzL3Rlcm1pby5oIiAxIDMKIyAxNSAiL3Vzci9pbmNsdWRlL3N5
cy90ZXJtaW8uaCIgMwogICB0eXBlZGVmIHVuc2lnbmVkIGludCB0Y2ZsYWdfdDsKICAgdHlwZWRl
ZiB1bnNpZ25lZCBjaGFyIGNjX3Q7CiAgIHR5cGVkZWYgdW5zaWduZWQgaW50IHNwZWVkX3Q7CgoK
ICAgICBzdHJ1Y3QgdGVybWlvcyB7CiAgICAgICAgdGNmbGFnX3QgY19pZmxhZzsKICAgICAgICB0
Y2ZsYWdfdCBjX29mbGFnOwogICAgICAgIHRjZmxhZ190IGNfY2ZsYWc7CiAgICAgICAgdGNmbGFn
X3QgY19sZmxhZzsKICAgICAgICB0Y2ZsYWdfdCBjX3Jlc2VydmVkOwogICAgICAgIGNjX3QgY19j
Y1sxNl07CiAgICAgfTsKIyAxOTQgIi91c3IvaW5jbHVkZS9zeXMvdGVybWlvLmgiIDMKICAgICAg
ICAgZXh0ZXJuIHNwZWVkX3QgY2ZnZXRpc3BlZWQoY29uc3Qgc3RydWN0IHRlcm1pb3MgKik7CiAg
ICAgICAgIGV4dGVybiBzcGVlZF90IGNmZ2V0b3NwZWVkKGNvbnN0IHN0cnVjdCB0ZXJtaW9zICop
OwogICAgICAgICBleHRlcm4gaW50IGNmc2V0aXNwZWVkKHN0cnVjdCB0ZXJtaW9zICosIHNwZWVk
X3QpOwogICAgICAgICBleHRlcm4gaW50IGNmc2V0b3NwZWVkKHN0cnVjdCB0ZXJtaW9zICosIHNw
ZWVkX3QpOwogICAgICAgICBleHRlcm4gaW50IHRjZ2V0YXR0cihpbnQsIHN0cnVjdCB0ZXJtaW9z
ICopOwoKICAgICAgICAgZXh0ZXJuIGludCB0Y3NldGF0dHIoaW50LCBpbnQsIHN0cnVjdCB0ZXJt
aW9zICopOwoKCgogICAgICAgICBleHRlcm4gaW50IHRjc2VuZGJyZWFrKGludCwgaW50KTsKICAg
ICAgICAgZXh0ZXJuIGludCB0Y2RyYWluKGludCk7CiAgICAgICAgIGV4dGVybiBpbnQgdGNmbHVz
aChpbnQsIGludCk7CiAgICAgICAgIGV4dGVybiBpbnQgdGNmbG93KGludCwgaW50KTsKIyAyOTAg
Ii91c3IvaW5jbHVkZS9zeXMvdGVybWlvLmgiIDMKICAgICAgICBleHRlcm4gcGlkX3QgdGNnZXRz
aWQoaW50KTsKIyAzMDEgIi91c3IvaW5jbHVkZS9zeXMvdGVybWlvLmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvc3lzL2lvY3RsLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUvc3lzL2lvY3RsLmgiIDMK
ICAgICBleHRlcm4gaW50IGlvY3RsKGludCwgaW50LCAuLi4pOwojIDMwMiAiL3Vzci9pbmNsdWRl
L3N5cy90ZXJtaW8uaCIgMiAzCiMgNDMwICIvdXNyL2luY2x1ZGUvc3lzL3Rlcm1pby5oIiAzCnN0
cnVjdCB3aW5zaXplIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB3c19yb3c7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgd3NfY29sOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHdzX3hwaXhlbDsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCB3c195cGl4ZWw7Cn07CiMgNyAiL3Vzci9pbmNsdWRlL3Rlcm1p
b3MuaCIgMiAzCiMgNzMgImluY2x1ZGVzLmgiIDIKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9zdHJp
bmdzLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUvc3RyaW5ncy5oIiAzCiAgICAgZXh0ZXJuIGNo
YXIgKmluZGV4KGNvbnN0IGNoYXIgKiwgaW50KTsKICAgICBleHRlcm4gY2hhciAqcmluZGV4KGNv
bnN0IGNoYXIgKiwgaW50KTsKICAgICBleHRlcm4gdm9pZCBiY29weShjb25zdCB2b2lkICosIHZv
aWQgKiwgc2l6ZV90KTsKICAgICBleHRlcm4gaW50IGJjbXAoY29uc3Qgdm9pZCAqLCBjb25zdCB2
b2lkICosIHNpemVfdCk7CiAgICAgZXh0ZXJuIHZvaWQgYnplcm8odm9pZCAqLCBzaXplX3QpOwoK
CgoKICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZXJuIGludCBzdHJjYXNlY21wKGNvbnN0IGNo
YXIgKiwgY29uc3QgY2hhciAqKTsKICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZXJuIGludCBz
dHJuY2FzZWNtcChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKCiAgICAgZXh0
ZXJuIGludCBmZnMoaW50KTsKIyA3OSAiaW5jbHVkZXMuaCIgMgoKCgoKCgojIDEgIi91c3IvaW5j
bHVkZS91dG1wLmgiIDEgMwojIDQwICIvdXNyL2luY2x1ZGUvdXRtcC5oIiAzCnN0cnVjdCB1dG1w
CiAgewogICAgICAgIGNoYXIgdXRfdXNlcls4XSA7CiAgICAgICAgY2hhciB1dF9pZFs0XSA7CiAg
ICAgICAgY2hhciB1dF9saW5lWzEyXSA7CiAgICAgICAgcGlkX3QgdXRfcGlkIDsKICAgICAgICBz
aG9ydCB1dF90eXBlIDsKICAgICAgICBzdHJ1Y3QgZXhpdF9zdGF0dXMKCgogICAgICAgICAgewog
ICAgICAgICAgICBzaG9ydCBlX3Rlcm1pbmF0aW9uIDsKICAgICAgICAgICAgc2hvcnQgZV9leGl0
IDsKICAgICAgICAgIH0KCiAgICAgICAgdXRfZXhpdCA7CgoKICAgICAgICB1bnNpZ25lZCBzaG9y
dCB1dF9yZXNlcnZlZDEgOwogICAgICAgIHRpbWVfdCB1dF90aW1lIDsKICAgICAgICBjaGFyIHV0
X2hvc3RbMTZdIDsKCiAgICAgICAgdWludDMyX3QgdXRfYWRkciA7CiAgfSA7CiMgMTAwICIvdXNy
L2luY2x1ZGUvdXRtcC5oIiAzCiAgIGV4dGVybiBzdHJ1Y3QgdXRtcCAqZ2V0dXRlbnQodm9pZCk7
CiAgIGV4dGVybiBzdHJ1Y3QgdXRtcCAqZ2V0dXRpZChjb25zdCBzdHJ1Y3QgdXRtcCAqKTsKICAg
ZXh0ZXJuIHN0cnVjdCB1dG1wICpnZXR1dGxpbmUoY29uc3Qgc3RydWN0IHV0bXAgKik7CiAgIGV4
dGVybiB2b2lkIHB1dHV0bGluZShzdHJ1Y3QgdXRtcCAqKTsKICAgZXh0ZXJuIHN0cnVjdCB1dG1w
ICpfcHV0dXRsaW5lKHN0cnVjdCB1dG1wICopOwogICBleHRlcm4gdm9pZCBzZXR1dGVudCh2b2lk
KTsKICAgZXh0ZXJuIHZvaWQgZW5kdXRlbnQodm9pZCk7CiAgIGV4dGVybiBpbnQgdXRtcG5hbWUo
Y29uc3QgY2hhciAqKTsKIyA4NiAiaW5jbHVkZXMuaCIgMgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRl
L3V0bXB4LmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvdXRtcHguaCIgMwojIDEgIi91c3IvaW5j
bHVkZS9zeXMvX3RpbWV2YWwuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS91dG1weC5oIiAyIDMK
CgpzdHJ1Y3QgdXRtcHgKICB7CiAgICAgICAgY2hhciB1dF91c2VyWzI0XSA7CiAgICAgICAgY2hh
ciB1dF9pZFs0XSA7CiAgICAgICAgY2hhciB1dF9saW5lWzEyXSA7CiAgICAgICAgcGlkX3QgdXRf
cGlkIDsKICAgICAgICBzaG9ydCB1dF90eXBlIDsKCiAgICAgICAgc3RydWN0IF9fZXhpdF9zdGF0
dXMKCgogICAgICAgICAgewogICAgICAgICAgICBzaG9ydCBfX2VfdGVybWluYXRpb24gOwogICAg
ICAgICAgICBzaG9ydCBfX2VfZXhpdCA7CiAgICAgICAgICB9CgogICAgICAgIHV0X2V4aXQ7Cgog
ICAgICAgIHVuc2lnbmVkIHNob3J0IHV0X3Jlc2VydmVkMSA7CiAgICAgICAgc3RydWN0IHRpbWV2
YWwgdXRfdHY7CgogICAgICAgIGNoYXIgdXRfaG9zdFs2NF0gOwoKICAgICAgICB1aW50MzJfdCB1
dF9hZGRyIDsKICAgICAgICBjaGFyIHV0X3Jlc2VydmVkMlsxMl0gOwogIH0gOwojIDg1ICIvdXNy
L2luY2x1ZGUvdXRtcHguaCIgMwogICBleHRlcm4gc3RydWN0IHV0bXB4ICpnZXR1dHhlbnQodm9p
ZCk7CiAgIGV4dGVybiBzdHJ1Y3QgdXRtcHggKmdldHV0eGlkKGNvbnN0IHN0cnVjdCB1dG1weCAq
KTsKICAgZXh0ZXJuIHN0cnVjdCB1dG1weCAqZ2V0dXR4bGluZShjb25zdCBzdHJ1Y3QgdXRtcHgg
Kik7CiAgIGV4dGVybiBzdHJ1Y3QgdXRtcHggKnB1dHV0eGxpbmUoY29uc3Qgc3RydWN0IHV0bXB4
ICopOwogICBleHRlcm4gdm9pZCBzZXR1dHhlbnQodm9pZCk7CiAgIGV4dGVybiB2b2lkIGVuZHV0
eGVudCh2b2lkKTsKIyA5MiAiaW5jbHVkZXMuaCIgMgojIDEwMSAiaW5jbHVkZXMuaCIKIyAxICIv
dXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAxIDMKIyA0NCAiL3Vzci9pbmNsdWRlL3N5cy9zb2Nr
ZXQuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvdWlvLmgiIDEgMwojIDE3ICIvdXNyL2luY2x1
ZGUvc3lzL3Vpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9maWxlLmgiIDEgMwojIDE4ICIv
dXNyL2luY2x1ZGUvc3lzL3Vpby5oIiAyIDMKCgoKCgoKc3RydWN0IGlvdmVjIHsKCgoKICAgICAg
ICB2b2lkICppb3ZfYmFzZTsKCiAgICAgICAgc2l6ZV90IGlvdl9sZW47Cn07CiMgNDMgIi91c3Iv
aW5jbHVkZS9zeXMvdWlvLmgiIDMKICAgICAgZXh0ZXJuIHNzaXplX3QgcmVhZHYgKGludCwgY29u
c3Qgc3RydWN0IGlvdmVjICosIGludCk7CiAgICAgIGV4dGVybiBzc2l6ZV90IHdyaXRldiAoaW50
LCBjb25zdCBzdHJ1Y3QgaW92ZWMgKiwgaW50KTsKIyA5MyAiL3Vzci9pbmNsdWRlL3N5cy91aW8u
aCIgMwogICBlbnVtIHVpb19ydyB7IFVJT19SRUFEID0gMSwgVUlPX1dSSVRFID0gMiB9OwojIDQ1
ICIvdXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAyIDMKIyAxMTYgIi91c3IvaW5jbHVkZS9zeXMv
c29ja2V0LmgiIDMKc3RydWN0IGxpbmdlciB7CiAgICAgICAgaW50IGxfb25vZmY7CgogICAgICAg
IGludCBsX2xpbmdlcjsKCn07CiMgMTcxICIvdXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAzCnR5
cGVkZWYgc2l6ZV90IHNvY2tsZW5fdDsKIyAxOTEgIi91c3IvaW5jbHVkZS9zeXMvc29ja2V0Lmgi
IDMKc3RydWN0IHNvY2thZGRyIHsKICAgICAgICBzYV9mYW1pbHlfdCBzYV9mYW1pbHk7CiAgICAg
ICAgY2hhciBzYV9kYXRhWzE0XTsKfTsKIyAyNTMgIi91c3IvaW5jbHVkZS9zeXMvc29ja2V0Lmgi
IDMKc3RydWN0IG1zZ2hkciB7CiAgICAgICAgdm9pZCAqbXNnX25hbWU7CiAgICAgICAgc29ja2xl
bl90IG1zZ19uYW1lbGVuOwogICAgICAgIHN0cnVjdCBpb3ZlYyAqbXNnX2lvdjsKICAgICAgICBp
bnQgbXNnX2lvdmxlbjsKICAgICAgICB2b2lkICptc2dfY29udHJvbDsKICAgICAgICBzb2NrbGVu
X3QgbXNnX2NvbnRyb2xsZW47CiAgICAgICAgaW50IG1zZ19mbGFnczsKfTsKIyAzMjkgIi91c3Iv
aW5jbHVkZS9zeXMvc29ja2V0LmgiIDMKc3RydWN0IGNtc2doZHIgewogICAgICAgIHNvY2tsZW5f
dCBjbXNnX2xlbjsKICAgICAgICBpbnQgY21zZ19sZXZlbDsKICAgICAgICBpbnQgY21zZ190eXBl
OwoKfTsKIyAzNjEgIi91c3IvaW5jbHVkZS9zeXMvc29ja2V0LmgiIDMKICAgZXh0ZXJuIGludCBh
Y2NlcHQgKGludCwgc3RydWN0IHNvY2thZGRyICosIHNvY2tsZW5fdCAqKTsKICAgZXh0ZXJuIGlu
dCBiaW5kIChpbnQsIGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqLCBzb2NrbGVuX3QpOwogICBleHRl
cm4gaW50IGNvbm5lY3QgKGludCwgY29uc3Qgc3RydWN0IHNvY2thZGRyICosIHNvY2tsZW5fdCk7
CiAgIGV4dGVybiBpbnQgZ2V0cGVlcm5hbWUgKGludCwgc3RydWN0IHNvY2thZGRyICosIHNvY2ts
ZW5fdCAqKTsKICAgZXh0ZXJuIGludCBnZXRzb2NrbmFtZSAoaW50LCBzdHJ1Y3Qgc29ja2FkZHIg
Kiwgc29ja2xlbl90ICopOwogICBleHRlcm4gaW50IGdldHNvY2tvcHQgKGludCwgaW50LCBpbnQs
IHZvaWQgKiwgc29ja2xlbl90ICopOwogICBleHRlcm4gaW50IGxpc3RlbiAoaW50LCBpbnQpOwog
ICBleHRlcm4gc3NpemVfdCByZWN2IChpbnQsIHZvaWQgKiwgc2l6ZV90LCBpbnQpOwogICBleHRl
cm4gc3NpemVfdCByZWN2ZnJvbSAoaW50LCB2b2lkICosIHNpemVfdCwgaW50LCBzdHJ1Y3Qgc29j
a2FkZHIgKiwgc29ja2xlbl90ICopOwoKICAgZXh0ZXJuIHNzaXplX3QgcmVjdm1zZyAoaW50LCBz
dHJ1Y3QgbXNnaGRyICosIGludCk7CiAgIGV4dGVybiBzc2l6ZV90IHNlbmQgKGludCwgY29uc3Qg
dm9pZCAqLCBzaXplX3QsIGludCk7CiAgIGV4dGVybiBzc2l6ZV90IHNlbmRtc2cgKGludCwgY29u
c3Qgc3RydWN0IG1zZ2hkciAqLCBpbnQpOwogICBleHRlcm4gc3NpemVfdCBzZW5kdG8gKGludCwg
Y29uc3Qgdm9pZCAqLCBzaXplX3QsIGludCwgY29uc3Qgc3RydWN0IHNvY2thZGRyICosIHNvY2ts
ZW5fdCk7CgogICBleHRlcm4gaW50IHNldHNvY2tvcHQgKGludCwgaW50LCBpbnQsIGNvbnN0IHZv
aWQgKiwgc29ja2xlbl90KTsKICAgZXh0ZXJuIGludCBzaHV0ZG93biAoaW50LCBpbnQpOwogICBl
eHRlcm4gaW50IHNvY2tldCAoaW50LCBpbnQsIGludCk7CiAgIGV4dGVybiBpbnQgc29ja2V0cGFp
ciAoaW50LCBpbnQsIGludCwgaW50WzJdKTsKIyAxMDIgImluY2x1ZGVzLmgiIDIKIyAxMTIgImlu
Y2x1ZGVzLmgiCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9ic2R0dHkuaCIgMSAzCiMgMTkgIi91c3Iv
aW5jbHVkZS9zeXMvYnNkdHR5LmgiIDMKc3RydWN0IGx0Y2hhcnMgewogICAgICAgIHVuc2lnbmVk
IGNoYXIgdF9zdXNwYzsKICAgICAgICB1bnNpZ25lZCBjaGFyIHRfZHN1c3BjOwogICAgICAgIHVu
c2lnbmVkIGNoYXIgdF9ycHJudGM7CiAgICAgICAgdW5zaWduZWQgY2hhciB0X2ZsdXNoYzsKICAg
ICAgICB1bnNpZ25lZCBjaGFyIHRfd2VyYXNjOwogICAgICAgIHVuc2lnbmVkIGNoYXIgdF9sbmV4
dGM7Cn07CiMgMTEzICJpbmNsdWRlcy5oIiAyCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy91bi5o
IiAxIDMKIyAzOCAiL3Vzci9pbmNsdWRlL3N5cy91bi5oIiAzCnN0cnVjdCBzb2NrYWRkcl91biB7
CiAgICAgICAgc2FfZmFtaWx5X3Qgc3VuX2ZhbWlseTsKICAgICAgICBjaGFyIHN1bl9wYXRoWzky
XTsKfTsKIyAxMTcgImluY2x1ZGVzLmgiIDIKIyAxMjUgImluY2x1ZGVzLmgiCiMgMSAiL3Vzci9p
bmNsdWRlL3N5cy9zdGF0LmgiIDEgMwojIDMzICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS9zeXMvX3N0YXRfYm9keS5oIiAxIDMKIyAxMiAiL3Vzci9pbmNsdWRl
L3N5cy9fc3RhdF9ib2R5LmgiIDMKICAgc3RydWN0IHN0YXQKICAgewogICAgICAgIGRldl90IHN0
X2RldjsKICAgICAgICBpbm9fdCBzdF9pbm87CiAgICAgICAgbW9kZV90IHN0X21vZGU7CiAgICAg
ICAgbmxpbmtfdCBzdF9ubGluazsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9yZXNlcnZlZDE7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfcmVzZXJ2ZWQyOwogICAgICAgIGRldl90IHN0X3Jk
ZXY7CiAgICAgICAgb2ZmX3Qgc3Rfc2l6ZTsKICAgICAgICB0aW1lX3Qgc3RfYXRpbWU7CiAgICAg
ICAgaW50IHN0X3NwYXJlMTsKICAgICAgICB0aW1lX3Qgc3RfbXRpbWU7CiAgICAgICAgaW50IHN0
X3NwYXJlMjsKICAgICAgICB0aW1lX3Qgc3RfY3RpbWU7CiAgICAgICAgaW50IHN0X3NwYXJlMzsK
ICAgICAgICBsb25nIHN0X2Jsa3NpemU7CiAgICAgICAgYmxrY250X3Qgc3RfYmxvY2tzOwogICAg
ICAgIHVuc2lnbmVkIGludCBzdF9wYWQ6Mjk7CgogICAgICAgIHVuc2lnbmVkIGludCBzdF9zeXNW
YWNsOjE7CiAgICAgICAgdW5zaWduZWQgaW50IHN0X2FjbDoxOwogICAgICAgIHVuc2lnbmVkIGlu
dCBzdF9yZW1vdGU6MTsKICAgICAgICBkZXZfdCBzdF9uZXRkZXY7CgogICAgICAgIGlub190IHN0
X25ldGlubzsKICAgICAgICBfX2Nub2RlX3Qgc3RfY25vZGU7CiAgICAgICAgX19jbm9kZV90IHN0
X3Jjbm9kZTsKCiAgICAgICAgX19zaXRlX3Qgc3RfbmV0c2l0ZTsKICAgICAgICBzaG9ydCBzdF9m
c3R5cGU7CgogICAgICAgIGRldl90IHN0X3JlYWxkZXY7CgogICAgICAgIHVuc2lnbmVkIHNob3J0
IHN0X2Jhc2Vtb2RlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X3NwYXJlc2hvcnQ7CgoKCgog
ICAgICAgIHVpZF90IHN0X3VpZDsKCgoKCgogICAgICAgIGdpZF90IHN0X2dpZDsKCgogICAgICAg
IGludDMyX3Qgc3Rfc3BhcmU0WzNdOwogICB9OwojIDM0ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQu
aCIgMiAzCiMgODQgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAzCiAgICAgZXh0ZXJuIGludCBj
aG1vZCAoY29uc3QgY2hhciAqLCBtb2RlX3QpOwogICAgIGV4dGVybiBpbnQgbWtkaXIgKGNvbnN0
IGNoYXIgKiwgbW9kZV90KTsKICAgICBleHRlcm4gaW50IG1rZmlmbyAoY29uc3QgY2hhciAqLCBt
b2RlX3QpOwogICAgIHN0YXRpYyBpbnQgZnN0YXQgKGludCwgc3RydWN0IHN0YXQgKik7CiAgICAg
c3RhdGljIGludCBzdGF0IChjb25zdCBjaGFyICosIHN0cnVjdCBzdGF0ICopOwoKCgoKICAgICAg
IGV4dGVybiBtb2RlX3QgdW1hc2sgKG1vZGVfdCk7CgoKCgogICAgICBleHRlcm4gaW50IGZjaG1v
ZCAoaW50LCBtb2RlX3QpOwogICAgICBzdGF0aWMgaW50IGxzdGF0IChjb25zdCBjaGFyICosIHN0
cnVjdCBzdGF0ICopOwoKCgogICAgICBleHRlcm4gaW50IG1rbm9kIChjb25zdCBjaGFyICosIG1v
ZGVfdCwgZGV2X3QpOwoKCgogICBleHRlcm4gaW50IF9fc3RhdDY0IChjb25zdCBjaGFyICosIHN0
cnVjdCBzdGF0ICopOwogICBleHRlcm4gaW50IF9fbHN0YXQ2NCAoY29uc3QgY2hhciAqLCBzdHJ1
Y3Qgc3RhdCAqKTsKICAgZXh0ZXJuIGludCBfX2ZzdGF0NjQgKGludCwgc3RydWN0IHN0YXQgKik7
CgogICBzdGF0aWMgaW50IHN0YXQoY29uc3QgY2hhciAqYSwgc3RydWN0IHN0YXQgKmIpIHtyZXR1
cm4gX19zdGF0NjQoYSxiKTt9CiAgIHN0YXRpYyBpbnQgbHN0YXQoY29uc3QgY2hhciAqYSwgc3Ry
dWN0IHN0YXQgKmIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3JldHVybiBfX2xz
dGF0NjQoYSxiKTt9CiAgIHN0YXRpYyBpbnQgZnN0YXQoaW50IGEsIHN0cnVjdCBzdGF0ICpiKSB7
IHJldHVybiBfX2ZzdGF0NjQoYSxiKTsgfQojIDEyNiAiaW5jbHVkZXMuaCIgMgoKCgoKCiMgMSAi
L3Vzci9pbmNsdWRlL3N5cy9tbWFuLmgiIDEgMwojIDEwNyAiL3Vzci9pbmNsdWRlL3N5cy9tbWFu
LmgiIDMKICBlbnVtIF9fbWxvY2thbGxfZmxhZ3MgewogICAgICAgICAgTUNMX0NVUlJFTlQgPSAx
LAogICAgICAgICAgTUNMX0ZVVFVSRQogIH07CiMgMTM3ICIvdXNyL2luY2x1ZGUvc3lzL21tYW4u
aCIgMwp0eXBlZGVmIHN0cnVjdCBtc2VtYXBob3JlIHsKICAgICAgICB1bnNpZ25lZCBpbnQgbXNl
bV9sb2NrOwogICAgICAgIHVuc2lnbmVkIGludCBtYWdpYzsKICAgICAgICB1bnNpZ25lZCBpbnQg
bG9ja2VyOwogICAgICAgIHVuc2lnbmVkIGludCB3YW50ZWQ7Cn0gbXNlbWFwaG9yZTsKIyAxNjgg
Ii91c3IvaW5jbHVkZS9zeXMvbW1hbi5oIiAzCiAgICBleHRlcm4gbXNlbWFwaG9yZSAqbXNlbV9p
bml0IChtc2VtYXBob3JlICosIGludCk7CiAgICBleHRlcm4gaW50IG1zZW1fcmVtb3ZlIChtc2Vt
YXBob3JlICopOwogICAgZXh0ZXJuIGludCBtc2VtX2xvY2sgKHZvbGF0aWxlIG1zZW1hcGhvcmUg
KiwgaW50KTsKICAgIGV4dGVybiBpbnQgbXNlbV91bmxvY2sgKHZvbGF0aWxlIG1zZW1hcGhvcmUg
KiwgaW50KTsKICAgIGV4dGVybiBpbnQgbWFkdmlzZSAoY29uc3QgY2FkZHJfdCwgc2l6ZV90LCBp
bnQpOwoKCiAgICBzdGF0aWMgdm9pZCAqbW1hcCAodm9pZCAqLCBzaXplX3QsIGludCwgaW50LCBp
bnQsIG9mZl90KTsKICAgIGV4dGVybiBpbnQgbXByb3RlY3QgKHZvaWQgKiwgc2l6ZV90LCBpbnQp
OwogICAgZXh0ZXJuIGludCBtc3luYyAodm9pZCAqLCBzaXplX3QsIGludCk7CiAgICBleHRlcm4g
aW50IG11bm1hcCAodm9pZCAqLCBzaXplX3QpOwoKICAgIGV4dGVybiBpbnQgbWxvY2thbGwgKGlu
dCBmbGFncyk7CiAgICBleHRlcm4gaW50IG11bmxvY2thbGwgKHZvaWQpOwogICAgZXh0ZXJuIGlu
dCBtbG9jayAoY29uc3Qgdm9pZCAqYWRkciwgc2l6ZV90IGxlbik7CiAgICBleHRlcm4gaW50IG11
bmxvY2sgKGNvbnN0IHZvaWQgKmFkZHIsIHNpemVfdCBsZW4pOwogICAgZXh0ZXJuIGludCBzaG1f
b3BlbiAoY29uc3QgY2hhciAqbmFtZSwgaW50IG9mbGFnLCBtb2RlX3QgbW9kZSk7CgogICAgZXh0
ZXJuIGludCBzaG1fdW5saW5rIChjb25zdCBjaGFyICpuYW1lKTsKIyAxOTggIi91c3IvaW5jbHVk
ZS9zeXMvbW1hbi5oIiAzCiAgICBleHRlcm4gdm9pZCAqX19tbWFwNjQgKHZvaWQgKiwgc2l6ZV90
LCBpbnQsIGludCwgaW50LCBvZmZfdCk7CgogICAgc3RhdGljIHZvaWQgKm1tYXAodm9pZCAqYSwg
c2l6ZV90IGIsIGludCBjLCBpbnQgZCwgaW50IGUsIG9mZl90IGYpCgoKCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7IHJldHVybiBfX21tYXA2NChhLGIsYyxkLGUsZik7IH0KIyAxMzIg
ImluY2x1ZGVzLmgiIDIKCgojIDEgIi91c3IvaW5jbHVkZS9uZXRpbmV0L2luX3N5c3RtLmgiIDEg
MwojIDM3ICIvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbl9zeXN0bS5oIiAzCnR5cGVkZWYgdV9zaG9y
dCBuX3Nob3J0OwoKCgoKCnR5cGVkZWYgdV9sb25nIG5fbG9uZzsKdHlwZWRlZiB1X2xvbmcgbl90
aW1lOwojIDEzNSAiaW5jbHVkZXMuaCIgMgoKIyAxICIvdXNyL2luY2x1ZGUvbmV0aW5ldC9pcC5o
IiAxIDMKIyA0MCAiL3Vzci9pbmNsdWRlL25ldGluZXQvaXAuaCIgMwpzdHJ1Y3QgaXAgewogICAg
ICAgIHVfY2hhciBpcF92OjQsCiAgICAgICAgICAgICAgICBpcF9obDo0OwogICAgICAgIHVfY2hh
ciBpcF90b3M7CiAgICAgICAgdV9zaG9ydCBpcF9sZW47CiAgICAgICAgdV9zaG9ydCBpcF9pZDsK
ICAgICAgICB1X3Nob3J0IGlwX29mZjsKCgogICAgICAgIHVfY2hhciBpcF90dGw7CiAgICAgICAg
dV9jaGFyIGlwX3A7CiAgICAgICAgdV9zaG9ydCBpcF9zdW07CiAgICAgICAgc3RydWN0IGluX2Fk
ZHIgaXBfc3JjLGlwX2RzdDsKfTsKIyAxMTMgIi91c3IvaW5jbHVkZS9uZXRpbmV0L2lwLmgiIDMK
c3RydWN0IGlwX3RpbWVzdGFtcCB7CiAgICAgICAgdV9jaGFyIGlwdF9jb2RlOwogICAgICAgIHVf
Y2hhciBpcHRfbGVuOwogICAgICAgIHVfY2hhciBpcHRfcHRyOwogICAgICAgIHVfY2hhciBpcHRf
b2Zsdzo0LAogICAgICAgICAgICAgICAgaXB0X2ZsZzo0OwogICAgICAgIHVuaW9uIGlwdF90aW1l
c3RhbXAgewogICAgICAgICAgICAgICAgbl9sb25nIGlwdF90aW1lWzFdOwogICAgICAgICAgICAg
ICAgc3RydWN0IGlwdF90YSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbl9hZGRy
IGlwdF9hZGRyOwogICAgICAgICAgICAgICAgICAgICAgICBuX2xvbmcgaXB0X3RpbWU7CiAgICAg
ICAgICAgICAgICB9IGlwdF90YVsxXTsKICAgICAgICB9IGlwdF90aW1lc3RhbXA7Cn07CiMgMTM3
ICJpbmNsdWRlcy5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL25ldGluZXQvdGNwLmgiIDEgMwojIDI3
ICIvdXNyL2luY2x1ZGUvbmV0aW5ldC90Y3AuaCIgMwp0eXBlZGVmIHVfbG9uZyB0Y3Bfc2VxOwoK
CgoKCgpzdHJ1Y3QgdGNwaGRyIHsKICAgICAgICB1X3Nob3J0IHRoX3Nwb3J0OwogICAgICAgIHVf
c2hvcnQgdGhfZHBvcnQ7CiAgICAgICAgdGNwX3NlcSB0aF9zZXE7CiAgICAgICAgdGNwX3NlcSB0
aF9hY2s7CiAgICAgICAgdV9jaGFyIHRoX29mZjo0LAogICAgICAgICAgICAgICAgdGhfeDI6NDsK
ICAgICAgICB1X2NoYXIgdGhfZmxhZ3M7CgoKCgoKCiAgICAgICAgdV9zaG9ydCB0aF93aW47CiAg
ICAgICAgdV9zaG9ydCB0aF9zdW07CiAgICAgICAgdV9zaG9ydCB0aF91cnA7Cn07CiMgMTM4ICJp
bmNsdWRlcy5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL2FycGEvaW5ldC5oIiAxIDMKIyA1NyAiL3Vz
ci9pbmNsdWRlL2FycGEvaW5ldC5oIiAzCiAgICAgZXh0ZXJuIGluX2FkZHJfdCBpbmV0X2FkZHIo
Y29uc3QgY2hhciAqKTsKICAgICBleHRlcm4gaW5fYWRkcl90IGluZXRfbG5hb2Yoc3RydWN0IGlu
X2FkZHIpOwogICAgIGV4dGVybiBzdHJ1Y3QgaW5fYWRkciBpbmV0X21ha2VhZGRyKGluX2FkZHJf
dCwgaW5fYWRkcl90KTsKICAgICBleHRlcm4gaW5fYWRkcl90IGluZXRfbmV0b2Yoc3RydWN0IGlu
X2FkZHIpOwogICAgIGV4dGVybiBpbl9hZGRyX3QgaW5ldF9uZXR3b3JrKGNvbnN0IGNoYXIgKik7
CiAgICAgZXh0ZXJuIGludCBpbmV0X2F0b24oY29uc3QgY2hhciAqLCBzdHJ1Y3QgaW5fYWRkciAq
KTsKICAgICBleHRlcm4gY2hhciAqaW5ldF9udG9hKHN0cnVjdCBpbl9hZGRyKTsKIyAxMzkgImlu
Y2x1ZGVzLmgiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL3JwYy90eXBlcy5oIiAxIDMKIyAyNyAiL3Vz
ci9pbmNsdWRlL3JwYy90eXBlcy5oIiAzCnR5cGVkZWYgaW50IGJvb2xfdDsKCgp0eXBlZGVmIGlu
dCBlbnVtX3Q7CiMgNDIgIi91c3IvaW5jbHVkZS9ycGMvdHlwZXMuaCIgMwogICAgICAgIHR5cGVk
ZWYgbG9uZyBsb25nIGxvbmdsb25nX3Q7CiAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxv
bmcgdV9sb25nbG9uZ190OwojIDg1ICIvdXNyL2luY2x1ZGUvcnBjL3R5cGVzLmgiIDMKdHlwZWRl
ZiB1X2xvbmdsb25nX3QgdWxvbmdsb25nX3Q7CiMgMTM5ICIvdXNyL2luY2x1ZGUvcnBjL3R5cGVz
LmgiIDMKZXh0ZXJuIGNvbnN0IGNoYXIgX19uc2xfZG9tW107CiMgMTQxICJpbmNsdWRlcy5oIiAy
CiMgMTQ5ICJpbmNsdWRlcy5oIgojIDEgIi9vcHQvZ251L2luY2x1ZGUvb3BlbnNzbC9vcGVuc3Ns
di5oIiAxCiMgMTUwICJpbmNsdWRlcy5oIiAyCgojIDEgImRlZmluZXMuaCIgMQojIDE1MSAiZGVm
aW5lcy5oIgp0eXBlZGVmIHVpbnQ4X3QgdV9pbnQ4X3Q7CnR5cGVkZWYgdWludDE2X3QgdV9pbnQx
Nl90Owp0eXBlZGVmIHVpbnQzMl90IHVfaW50MzJfdDsKIyAyMDUgImRlZmluZXMuaCIKdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHVfaW50NjRfdDsKIyAxNTIgImluY2x1ZGVzLmgiIDIK
CiMgMSAidmVyc2lvbi5oIiAxCiMgMTU0ICJpbmNsdWRlcy5oIiAyCiMgMSAib3BlbmJzZC1jb21w
YXQvb3BlbmJzZC1jb21wYXQuaCIgMQojIDkgIm9wZW5ic2QtY29tcGF0L29wZW5ic2QtY29tcGF0
LmgiCiMgMSAib3BlbmJzZC1jb21wYXQvYmluZHJlc3Zwb3J0LmgiIDEKIyA5ICJvcGVuYnNkLWNv
bXBhdC9iaW5kcmVzdnBvcnQuaCIKaW50IGJpbmRyZXN2cG9ydF9zYShpbnQgc2QsIHN0cnVjdCBz
b2NrYWRkciAqc2EpOwojIDEwICJvcGVuYnNkLWNvbXBhdC9vcGVuYnNkLWNvbXBhdC5oIiAyCiMg
MSAib3BlbmJzZC1jb21wYXQvZ2V0Y3dkLmgiIDEKIyAxMSAib3BlbmJzZC1jb21wYXQvb3BlbmJz
ZC1jb21wYXQuaCIgMgojIDEgIm9wZW5ic2QtY29tcGF0L3JlYWxwYXRoLmgiIDEKIyAxMiAib3Bl
bmJzZC1jb21wYXQvb3BlbmJzZC1jb21wYXQuaCIgMgojIDEgIm9wZW5ic2QtY29tcGF0L3JyZXN2
cG9ydC5oIiAxCiMgOSAib3BlbmJzZC1jb21wYXQvcnJlc3Zwb3J0LmgiCmludCBycmVzdnBvcnRf
YWYoaW50ICphbHBvcnQsIHNhX2ZhbWlseV90IGFmKTsKIyAxMyAib3BlbmJzZC1jb21wYXQvb3Bl
bmJzZC1jb21wYXQuaCIgMgojIDEgIm9wZW5ic2QtY29tcGF0L3N0cmxjcHkuaCIgMQojIDkgIm9w
ZW5ic2QtY29tcGF0L3N0cmxjcHkuaCIKc2l6ZV90IHN0cmxjcHkoY2hhciAqZHN0LCBjb25zdCBj
aGFyICpzcmMsIHNpemVfdCBzaXopOwojIDE0ICJvcGVuYnNkLWNvbXBhdC9vcGVuYnNkLWNvbXBh
dC5oIiAyCiMgMSAib3BlbmJzZC1jb21wYXQvc3RybGNhdC5oIiAxCiMgOSAib3BlbmJzZC1jb21w
YXQvc3RybGNhdC5oIgpzaXplX3Qgc3RybGNhdChjaGFyICpkc3QsIGNvbnN0IGNoYXIgKnNyYywg
c2l6ZV90IHNpeik7CiMgMTUgIm9wZW5ic2QtY29tcGF0L29wZW5ic2QtY29tcGF0LmgiIDIKIyAx
ICJvcGVuYnNkLWNvbXBhdC9zdHJtb2RlLmgiIDEKCgoKCnZvaWQgc3RybW9kZShyZWdpc3RlciBt
b2RlX3QgbW9kZSwgcmVnaXN0ZXIgY2hhciAqcCk7CiMgMTYgIm9wZW5ic2QtY29tcGF0L29wZW5i
c2QtY29tcGF0LmgiIDIKIyAxICJvcGVuYnNkLWNvbXBhdC9ta3RlbXAuaCIgMQoKCgoKCgoKaW50
IG1rc3RlbXBzKGNoYXIgKnBhdGgsIGludCBzbGVuKTsKaW50IG1rc3RlbXAoY2hhciAqcGF0aCk7
CmNoYXIgKm1rZHRlbXAoY2hhciAqcGF0aCk7CiMgMTcgIm9wZW5ic2QtY29tcGF0L29wZW5ic2Qt
Y29tcGF0LmgiIDIKIyAxICJvcGVuYnNkLWNvbXBhdC9kYWVtb24uaCIgMQoKCgoKCgoKaW50IGRh
ZW1vbihpbnQgbm9jaGRpciwgaW50IG5vY2xvc2UpOwojIDE4ICJvcGVuYnNkLWNvbXBhdC9vcGVu
YnNkLWNvbXBhdC5oIiAyCiMgMSAib3BlbmJzZC1jb21wYXQvZGlybmFtZS5oIiAxCiMgMTkgIm9w
ZW5ic2QtY29tcGF0L29wZW5ic2QtY29tcGF0LmgiIDIKIyAxICJvcGVuYnNkLWNvbXBhdC9iYXNl
NjQuaCIgMQojIDEwICJvcGVuYnNkLWNvbXBhdC9iYXNlNjQuaCIKaW50IGI2NF9udG9wKHVfY2hh
ciBjb25zdCAqc3JjLCBzaXplX3Qgc3JjbGVuZ3RoLCBjaGFyICp0YXJnZXQsCiAgICBzaXplX3Qg
dGFyZ3NpemUpOwppbnQgYjY0X3B0b24oY2hhciBjb25zdCAqc3JjLCB1X2NoYXIgKnRhcmdldCwg
c2l6ZV90IHRhcmdzaXplKTsKIyAyMCAib3BlbmJzZC1jb21wYXQvb3BlbmJzZC1jb21wYXQuaCIg
MgojIDEgIm9wZW5ic2QtY29tcGF0L3NpZ2FjdC5oIiAxCiMgMjEgIm9wZW5ic2QtY29tcGF0L29w
ZW5ic2QtY29tcGF0LmgiIDIKIyAxICJvcGVuYnNkLWNvbXBhdC9pbmV0X250b2EuaCIgMQojIDIy
ICJvcGVuYnNkLWNvbXBhdC9vcGVuYnNkLWNvbXBhdC5oIiAyCiMgMSAib3BlbmJzZC1jb21wYXQv
aW5ldF9udG9wLmgiIDEKIyA5ICJvcGVuYnNkLWNvbXBhdC9pbmV0X250b3AuaCIKY29uc3QgY2hh
ciAqCmluZXRfbnRvcChpbnQgYWYsIGNvbnN0IHZvaWQgKnNyYywgY2hhciAqZHN0LCBzaXplX3Qg
c2l6ZSk7CiMgMjMgIm9wZW5ic2QtY29tcGF0L29wZW5ic2QtY29tcGF0LmgiIDIKIyAxICJvcGVu
YnNkLWNvbXBhdC9zdHJzZXAuaCIgMQojIDkgIm9wZW5ic2QtY29tcGF0L3N0cnNlcC5oIgpjaGFy
ICpzdHJzZXAoY2hhciAqKnN0cmluZ3AsIGNvbnN0IGNoYXIgKmRlbGltKTsKIyAyNCAib3BlbmJz
ZC1jb21wYXQvb3BlbmJzZC1jb21wYXQuaCIgMgojIDEgIm9wZW5ic2QtY29tcGF0L3NldHByb2N0
aXRsZS5oIiAxCiMgOSAib3BlbmJzZC1jb21wYXQvc2V0cHJvY3RpdGxlLmgiCnZvaWQgc2V0cHJv
Y3RpdGxlKGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKIyAyNSAib3BlbmJzZC1jb21wYXQvb3BlbmJz
ZC1jb21wYXQuaCIgMgojIDEgIm9wZW5ic2QtY29tcGF0L2dldGdyb3VwbGlzdC5oIiAxCiMgMTIg
Im9wZW5ic2QtY29tcGF0L2dldGdyb3VwbGlzdC5oIgppbnQgZ2V0Z3JvdXBsaXN0KGNvbnN0IGNo
YXIgKiwgZ2lkX3QsIGdpZF90ICosIGludCAqKTsKIyAyNiAib3BlbmJzZC1jb21wYXQvb3BlbmJz
ZC1jb21wYXQuaCIgMgojIDEgIm9wZW5ic2QtY29tcGF0L2dsb2IuaCIgMQojIDQ4ICJvcGVuYnNk
LWNvbXBhdC9nbG9iLmgiCnN0cnVjdCBzdGF0Owp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50
IGdsX3BhdGhjOwogICAgICAgIGludCBnbF9tYXRjaGM7CiAgICAgICAgaW50IGdsX29mZnM7CiAg
ICAgICAgaW50IGdsX2ZsYWdzOwogICAgICAgIGNoYXIgKipnbF9wYXRodjsKCiAgICAgICAgaW50
ICgqZ2xfZXJyZnVuYykgKGNvbnN0IGNoYXIgKiwgaW50KTsKCgoKCgoKICAgICAgICB2b2lkICgq
Z2xfY2xvc2VkaXIpICh2b2lkICopOwogICAgICAgIHN0cnVjdCBkaXJlbnQgKigqZ2xfcmVhZGRp
cikgKHZvaWQgKik7CiAgICAgICAgdm9pZCAqKCpnbF9vcGVuZGlyKSAoY29uc3QgY2hhciAqKTsK
ICAgICAgICBpbnQgKCpnbF9sc3RhdCkgKGNvbnN0IGNoYXIgKiwgc3RydWN0IHN0YXQgKik7CiAg
ICAgICAgaW50ICgqZ2xfc3RhdCkgKGNvbnN0IGNoYXIgKiwgc3RydWN0IHN0YXQgKik7Cn0gZ2xv
Yl90OwojIDk0ICJvcGVuYnNkLWNvbXBhdC9nbG9iLmgiCmludCBnbG9iIChjb25zdCBjaGFyICos
IGludCwgaW50ICgqKShjb25zdCBjaGFyICosIGludCksIGdsb2JfdCAqKTsKdm9pZCBnbG9iZnJl
ZSAoZ2xvYl90ICopOwojIDI3ICJvcGVuYnNkLWNvbXBhdC9vcGVuYnNkLWNvbXBhdC5oIiAyCiMg
MSAib3BlbmJzZC1jb21wYXQvcmVhZHBhc3NwaHJhc2UuaCIgMQojIDMzICJvcGVuYnNkLWNvbXBh
dC9yZWFkcGFzc3BocmFzZS5oIgojIDEgImluY2x1ZGVzLmgiIDEKIyAzNCAib3BlbmJzZC1jb21w
YXQvcmVhZHBhc3NwaHJhc2UuaCIgMgojIDQ0ICJvcGVuYnNkLWNvbXBhdC9yZWFkcGFzc3BocmFz
ZS5oIgpjaGFyICpyZWFkcGFzc3BocmFzZShjb25zdCBjaGFyICosIGNoYXIgKiwgc2l6ZV90LCBp
bnQpOwojIDI4ICJvcGVuYnNkLWNvbXBhdC9vcGVuYnNkLWNvbXBhdC5oIiAyCiMgMSAib3BlbmJz
ZC1jb21wYXQvZ2V0b3B0LmgiIDEKIyAxMCAib3BlbmJzZC1jb21wYXQvZ2V0b3B0LmgiCmludCBC
U0RnZXRvcHQoaW50IGFyZ2MsIGNoYXIgKiBjb25zdCAqYXJndiwgY29uc3QgY2hhciAqb3B0cyk7
CiMgMjkgIm9wZW5ic2QtY29tcGF0L29wZW5ic2QtY29tcGF0LmgiIDIKCgojIDEgIm9wZW5ic2Qt
Y29tcGF0L2JzZC1hcmM0cmFuZG9tLmgiIDEKIyAzMyAib3BlbmJzZC1jb21wYXQvYnNkLWFyYzRy
YW5kb20uaCIKdW5zaWduZWQgaW50IGFyYzRyYW5kb20odm9pZCk7CnZvaWQgYXJjNHJhbmRvbV9z
dGlyKHZvaWQpOwojIDMyICJvcGVuYnNkLWNvbXBhdC9vcGVuYnNkLWNvbXBhdC5oIiAyCiMgMSAi
b3BlbmJzZC1jb21wYXQvYnNkLW1pc2MuaCIgMQojIDMyICJvcGVuYnNkLWNvbXBhdC9ic2QtbWlz
Yy5oIgpjaGFyICpnZXRfcHJvZ25hbWUoY2hhciAqYXJndjApOwoKCgoKCgppbnQgc2V0ZW52KGNv
bnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlLCBpbnQgb3ZlcndyaXRlKTsKCgoKaW50
IHNldGxvZ2luKGNvbnN0IGNoYXIgKm5hbWUpOwojIDUyICJvcGVuYnNkLWNvbXBhdC9ic2QtbWlz
Yy5oIgppbnQgc2V0ZXVpZCh1aWRfdCBldWlkKTsKCgoKaW50IHNldGVnaWQodWlkX3QgZWdpZCk7
CiMgMzMgIm9wZW5ic2QtY29tcGF0L29wZW5ic2QtY29tcGF0LmgiIDIKIyAxICJvcGVuYnNkLWNv
bXBhdC9ic2Qtc25wcmludGYuaCIgMQojIDM0ICJvcGVuYnNkLWNvbXBhdC9vcGVuYnNkLWNvbXBh
dC5oIiAyCiMgMSAib3BlbmJzZC1jb21wYXQvYnNkLXdhaXRwaWQuaCIgMQojIDM1ICJvcGVuYnNk
LWNvbXBhdC9vcGVuYnNkLWNvbXBhdC5oIiAyCgoKIyAxICJvcGVuYnNkLWNvbXBhdC9mYWtlLWdl
dGFkZHJpbmZvLmgiIDEKCgoKCgoKCiMgMSAib3BlbmJzZC1jb21wYXQvZmFrZS1nYWktZXJybm9z
LmgiIDEKIyA5ICJvcGVuYnNkLWNvbXBhdC9mYWtlLWdldGFkZHJpbmZvLmgiIDIKIyAyMiAib3Bl
bmJzZC1jb21wYXQvZmFrZS1nZXRhZGRyaW5mby5oIgpzdHJ1Y3QgYWRkcmluZm8gewogICAgICAg
IGludCBhaV9mbGFnczsKICAgICAgICBpbnQgYWlfZmFtaWx5OwogICAgICAgIGludCBhaV9zb2Nr
dHlwZTsKICAgICAgICBpbnQgYWlfcHJvdG9jb2w7CiAgICAgICAgc2l6ZV90IGFpX2FkZHJsZW47
CiAgICAgICAgY2hhciAqYWlfY2Fub25uYW1lOwogICAgICAgIHN0cnVjdCBzb2NrYWRkciAqYWlf
YWRkcjsKICAgICAgICBzdHJ1Y3QgYWRkcmluZm8gKmFpX25leHQ7Cn07CgoKCmludCBnZXRhZGRy
aW5mbyhjb25zdCBjaGFyICpob3N0bmFtZSwgY29uc3QgY2hhciAqc2Vydm5hbWUsCiAgICAgICAg
ICAgICAgICBjb25zdCBzdHJ1Y3QgYWRkcmluZm8gKmhpbnRzLCBzdHJ1Y3QgYWRkcmluZm8gKipy
ZXMpOwoKCgpjaGFyICpnYWlfc3RyZXJyb3IoaW50IGVjb2RlKTsKCgoKdm9pZCBmcmVlYWRkcmlu
Zm8oc3RydWN0IGFkZHJpbmZvICphaSk7CiMgMzggIm9wZW5ic2QtY29tcGF0L29wZW5ic2QtY29t
cGF0LmgiIDIKIyAxICJvcGVuYnNkLWNvbXBhdC9mYWtlLWdldG5hbWVpbmZvLmgiIDEKIyA5ICJv
cGVuYnNkLWNvbXBhdC9mYWtlLWdldG5hbWVpbmZvLmgiCmludCBnZXRuYW1laW5mbyhjb25zdCBz
dHJ1Y3Qgc29ja2FkZHIgKnNhLCBzaXplX3Qgc2FsZW4sIGNoYXIgKmhvc3QsCiAgICAgICAgICAg
ICAgICBzaXplX3QgaG9zdGxlbiwgY2hhciAqc2Vydiwgc2l6ZV90IHNlcnZsZW4sIGludCBmbGFn
cyk7CiMgMzkgIm9wZW5ic2QtY29tcGF0L29wZW5ic2QtY29tcGF0LmgiIDIKIyAxICJvcGVuYnNk
LWNvbXBhdC9mYWtlLXNvY2tldC5oIiAxCiMgMTMgIm9wZW5ic2QtY29tcGF0L2Zha2Utc29ja2V0
LmgiCnN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHsKICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgc3Nf
c2E7CiAgICAgICAgY2hhciBfX3NzX3BhZDJbKDEyOCAtIHNpemVvZiAoc3RydWN0IHNvY2thZGRy
KSldOwp9OwojIDI3ICJvcGVuYnNkLWNvbXBhdC9mYWtlLXNvY2tldC5oIgpzdHJ1Y3QgaW42X2Fk
ZHIgewogICAgICAgIHVfaW50OF90IHM2X2FkZHJbMTZdOwp9OwoKCgpzdHJ1Y3Qgc29ja2FkZHJf
aW42IHsKICAgdW5zaWduZWQgc2hvcnQgc2luNl9mYW1pbHk7CiAgICAgICAgdV9pbnQxNl90IHNp
bjZfcG9ydDsKICAgICAgICB1X2ludDMyX3Qgc2luNl9mbG93aW5mbzsKICAgICAgICBzdHJ1Y3Qg
aW42X2FkZHIgc2luNl9hZGRyOwp9OwojIDQwICJvcGVuYnNkLWNvbXBhdC9vcGVuYnNkLWNvbXBh
dC5oIiAyCgoKIyAxICJvcGVuYnNkLWNvbXBhdC9ic2QtY3JheS5oIiAxCiMgNDMgIm9wZW5ic2Qt
Y29tcGF0L29wZW5ic2QtY29tcGF0LmgiIDIKIyAxICJvcGVuYnNkLWNvbXBhdC9wb3J0LWlyaXgu
aCIgMQojIDQ0ICJvcGVuYnNkLWNvbXBhdC9vcGVuYnNkLWNvbXBhdC5oIiAyCiMgMSAib3BlbmJz
ZC1jb21wYXQvcG9ydC1haXguaCIgMQojIDQ1ICJvcGVuYnNkLWNvbXBhdC9vcGVuYnNkLWNvbXBh
dC5oIiAyCiMgMTU1ICJpbmNsdWRlcy5oIiAyCiMgMSAib3BlbmJzZC1jb21wYXQvYnNkLWN5Z3dp
bl91dGlsLmgiIDEKIyAxNTYgImluY2x1ZGVzLmgiIDIKIyAxICJvcGVuYnNkLWNvbXBhdC9ic2Qt
bmV4dHN0ZXAuaCIgMQojIDE1NyAiaW5jbHVkZXMuaCIgMgoKIyAxICJlbnRyb3B5LmgiIDEKIyAz
MCAiZW50cm9weS5oIgp2b2lkIHNlZWRfcm5nKHZvaWQpOwp2b2lkIGluaXRfcm5nKHZvaWQpOwoj
IDE1OSAiaW5jbHVkZXMuaCIgMgojIDc4ICJzY3AuYyIgMgpzdGF0aWMgY29uc3QgY2hhciAqY29u
c3QgcmNzaWRbXSA9IHsgKGNoYXIgKilyY3NpZCwgIlwxMDAoIykiICIkT3BlbkJTRDogc2NwLmMs
diAxLjkxIDIwMDIvMDYvMTkgMDA6Mjc6NTUgZGVyYWFkdCBFeHAgJCIgfTsKCiMgMSAieG1hbGxv
Yy5oIiAxCiMgMjIgInhtYWxsb2MuaCIKdm9pZCAqeG1hbGxvYyhzaXplX3QpOwp2b2lkICp4cmVh
bGxvYyh2b2lkICosIHNpemVfdCk7CnZvaWQgeGZyZWUodm9pZCAqKTsKY2hhciAqeHN0cmR1cChj
b25zdCBjaGFyICopOwojIDgxICJzY3AuYyIgMgojIDEgImF0b21pY2lvLmgiIDEKIyAzMSAiYXRv
bWljaW8uaCIKc3NpemVfdCBhdG9taWNpbyhzc2l6ZV90ICgqKSgpLCBpbnQsIHZvaWQgKiwgc2l6
ZV90KTsKIyA4MiAic2NwLmMiIDIKIyAxICJwYXRobmFtZXMuaCIgMQojIDgzICJzY3AuYyIgMgoj
IDEgImxvZy5oIiAxCiMgMTggImxvZy5oIgojIDEgIi91c3IvaW5jbHVkZS9zeXNsb2cuaCIgMSAz
CiMgODUgIi91c3IvaW5jbHVkZS9zeXNsb2cuaCIgMwogICAgZXh0ZXJuIHZvaWQgb3BlbmxvZyhj
b25zdCBjaGFyICosIGludCwgaW50KTsKCiAgICAgICBleHRlcm4gdm9pZCBzeXNsb2coaW50LCBj
b25zdCBjaGFyICosIC4uLik7CgoKCiAgICBleHRlcm4gdm9pZCBjbG9zZWxvZyh2b2lkKTsKICAg
IGV4dGVybiBpbnQgc2V0bG9nbWFzayhpbnQpOwojIDE5ICJsb2cuaCIgMgoKCnR5cGVkZWYgZW51
bSB7CiAgICAgICAgU1lTTE9HX0ZBQ0lMSVRZX0RBRU1PTiwKICAgICAgICBTWVNMT0dfRkFDSUxJ
VFlfVVNFUiwKICAgICAgICBTWVNMT0dfRkFDSUxJVFlfQVVUSCwKCgoKICAgICAgICBTWVNMT0df
RkFDSUxJVFlfTE9DQUwwLAogICAgICAgIFNZU0xPR19GQUNJTElUWV9MT0NBTDEsCiAgICAgICAg
U1lTTE9HX0ZBQ0lMSVRZX0xPQ0FMMiwKICAgICAgICBTWVNMT0dfRkFDSUxJVFlfTE9DQUwzLAog
ICAgICAgIFNZU0xPR19GQUNJTElUWV9MT0NBTDQsCiAgICAgICAgU1lTTE9HX0ZBQ0lMSVRZX0xP
Q0FMNSwKICAgICAgICBTWVNMT0dfRkFDSUxJVFlfTE9DQUw2LAogICAgICAgIFNZU0xPR19GQUNJ
TElUWV9MT0NBTDcsCiAgICAgICAgU1lTTE9HX0ZBQ0lMSVRZX05PVF9TRVQgPSAtMQp9IFN5c2xv
Z0ZhY2lsaXR5OwoKdHlwZWRlZiBlbnVtIHsKICAgICAgICBTWVNMT0dfTEVWRUxfUVVJRVQsCiAg
ICAgICAgU1lTTE9HX0xFVkVMX0ZBVEFMLAogICAgICAgIFNZU0xPR19MRVZFTF9FUlJPUiwKICAg
ICAgICBTWVNMT0dfTEVWRUxfSU5GTywKICAgICAgICBTWVNMT0dfTEVWRUxfVkVSQk9TRSwKICAg
ICAgICBTWVNMT0dfTEVWRUxfREVCVUcxLAogICAgICAgIFNZU0xPR19MRVZFTF9ERUJVRzIsCiAg
ICAgICAgU1lTTE9HX0xFVkVMX0RFQlVHMywKICAgICAgICBTWVNMT0dfTEVWRUxfTk9UX1NFVCA9
IC0xCn0gTG9nTGV2ZWw7Cgp2b2lkIGxvZ19pbml0KGNoYXIgKiwgTG9nTGV2ZWwsIFN5c2xvZ0Zh
Y2lsaXR5LCBpbnQpOwoKU3lzbG9nRmFjaWxpdHkgbG9nX2ZhY2lsaXR5X251bWJlcihjaGFyICop
OwpMb2dMZXZlbCBsb2dfbGV2ZWxfbnVtYmVyKGNoYXIgKik7Cgp2b2lkIGZhdGFsKGNvbnN0IGNo
YXIgKiwgLi4uKSBfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLCAxLCAyKSkpOwp2b2lkIGVy
cm9yKGNvbnN0IGNoYXIgKiwgLi4uKSBfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLCAxLCAy
KSkpOwp2b2lkIGxvZyhjb25zdCBjaGFyICosIC4uLikgX19hdHRyaWJ1dGVfXygoZm9ybWF0KHBy
aW50ZiwgMSwgMikpKTsKdm9pZCB2ZXJib3NlKGNvbnN0IGNoYXIgKiwgLi4uKSBfX2F0dHJpYnV0
ZV9fKChmb3JtYXQocHJpbnRmLCAxLCAyKSkpOwp2b2lkIGRlYnVnKGNvbnN0IGNoYXIgKiwgLi4u
KSBfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLCAxLCAyKSkpOwp2b2lkIGRlYnVnMihjb25z
dCBjaGFyICosIC4uLikgX19hdHRyaWJ1dGVfXygoZm9ybWF0KHByaW50ZiwgMSwgMikpKTsKdm9p
ZCBkZWJ1ZzMoY29uc3QgY2hhciAqLCAuLi4pIF9fYXR0cmlidXRlX18oKGZvcm1hdChwcmludGYs
IDEsIDIpKSk7Cgp2b2lkIGZhdGFsX2NsZWFudXAodm9pZCk7CnZvaWQgZmF0YWxfYWRkX2NsZWFu
dXAodm9pZCAoKikgKHZvaWQgKiksIHZvaWQgKik7CnZvaWQgZmF0YWxfcmVtb3ZlX2NsZWFudXAo
dm9pZCAoKikgKHZvaWQgKiksIHZvaWQgKik7Cgp2b2lkIGRvX2xvZyhMb2dMZXZlbCwgY29uc3Qg
Y2hhciAqLCB2YV9saXN0KTsKIyA4NCAic2NwLmMiIDIKIyAxICJtaXNjLmgiIDEKIyAxNSAibWlz
Yy5oIgpjaGFyICpjaG9wKGNoYXIgKik7CmNoYXIgKnN0cmRlbGltKGNoYXIgKiopOwp2b2lkIHNl
dF9ub25ibG9jayhpbnQpOwp2b2lkIHVuc2V0X25vbmJsb2NrKGludCk7CnZvaWQgc2V0X25vZGVs
YXkoaW50KTsKaW50IGEycG9ydChjb25zdCBjaGFyICopOwpjaGFyICpjbGVhbmhvc3RuYW1lKGNo
YXIgKik7CmNoYXIgKmNvbG9uKGNoYXIgKik7CmxvbmcgY29udnRpbWUoY29uc3QgY2hhciAqKTsK
CnN0cnVjdCBwYXNzd2QgKnB3Y29weShzdHJ1Y3QgcGFzc3dkICopOwoKdHlwZWRlZiBzdHJ1Y3Qg
YXJnbGlzdCBhcmdsaXN0OwpzdHJ1Y3QgYXJnbGlzdCB7CiAgICAgICAgY2hhciAqKmxpc3Q7CiAg
ICAgICAgaW50IG51bTsKICAgICAgICBpbnQgbmFsbG9jOwp9Owp2b2lkIGFkZGFyZ3MoYXJnbGlz
dCAqLCBjaGFyICosIC4uLikgX19hdHRyaWJ1dGVfXygoZm9ybWF0KHByaW50ZiwgMiwgMykpKTsK
Cgp0eXBlZGVmIHZvaWQgKCpteXNpZ190KShpbnQpOwpteXNpZ190IG15c2lnbmFsKGludCBzaWcs
IG15c2lnX3QgYWN0KTsKIyA4NSAic2NwLmMiIDIKCgoKCmNoYXIgKl9fcHJvZ25hbWU7CiMgOTgg
InNjcC5jIgp2b2lkIHByb2dyZXNzbWV0ZXIoaW50KTsKCgppbnQgZ2V0dHR5d2lkdGgodm9pZCk7
CmludCBkb19jbWQoY2hhciAqaG9zdCwgY2hhciAqcmVtdXNlciwgY2hhciAqY21kLCBpbnQgKmZk
aW4sIGludCAqZmRvdXQsIGludCBhcmdjKTsKCgphcmdsaXN0IGFyZ3M7CgoKc3RhdGljIHN0cnVj
dCB0aW1ldmFsIHN0YXJ0OwoKCnZvbGF0aWxlIG9mZl90IHN0YXRieXRlczsKCgpvZmZfdCB0b3Rh
bGJ5dGVzID0gMDsKCgpjaGFyICpjdXJmaWxlOwoKCmludCB2ZXJib3NlX21vZGUgPSAwOwoKCmlu
dCBzaG93cHJvZ3Jlc3MgPSAxOwoKCmNoYXIgKnNzaF9wcm9ncmFtID0gIi9vcHQvZ251L29wZW5z
c2gtMy40LWhwcGEyMC9iaW4vc3NoIjsKCgoKCgoKCmludApkb19jbWQoY2hhciAqaG9zdCwgY2hh
ciAqcmVtdXNlciwgY2hhciAqY21kLCBpbnQgKmZkaW4sIGludCAqZmRvdXQsIGludCBhcmdjKQp7
CiAgICAgICAgaW50IHBpblsyXSwgcG91dFsyXSwgcmVzZXJ2ZWRbMl07CgogICAgICAgIGlmICh2
ZXJib3NlX21vZGUpCiAgICAgICAgICAgICAgICBmcHJpbnRmKCgmX19pb2JbMl0pLAogICAgICAg
ICAgICAgICAgICAgICJFeGVjdXRpbmc6IHByb2dyYW0gJXMgaG9zdCAlcywgdXNlciAlcywgY29t
bWFuZCAlc1xuIiwKICAgICAgICAgICAgICAgICAgICBzc2hfcHJvZ3JhbSwgaG9zdCwKICAgICAg
ICAgICAgICAgICAgICByZW11c2VyID8gcmVtdXNlciA6ICIodW5zcGVjaWZpZWQpIiwgY21kKTsK
CgoKCgogICAgICAgIHBpcGUocmVzZXJ2ZWQpOwoKCiAgICAgICAgaWYgKHBpcGUocGluKSA8IDAp
CiAgICAgICAgICAgICAgICBmYXRhbCgicGlwZTogJXMiLCBzdHJlcnJvcihlcnJubykpOwogICAg
ICAgIGlmIChwaXBlKHBvdXQpIDwgMCkKICAgICAgICAgICAgICAgIGZhdGFsKCJwaXBlOiAlcyIs
IHN0cmVycm9yKGVycm5vKSk7CgoKICAgICAgICBjbG9zZShyZXNlcnZlZFswXSk7CiAgICAgICAg
Y2xvc2UocmVzZXJ2ZWRbMV0pOwoKCiAgICAgICAgaWYgKGZvcmsoKSA9PSAwKSB7CgogICAgICAg
ICAgICAgICAgY2xvc2UocGluWzFdKTsKICAgICAgICAgICAgICAgIGNsb3NlKHBvdXRbMF0pOwog
ICAgICAgICAgICAgICAgZHVwMihwaW5bMF0sIDApOwogICAgICAgICAgICAgICAgZHVwMihwb3V0
WzFdLCAxKTsKICAgICAgICAgICAgICAgIGNsb3NlKHBpblswXSk7CiAgICAgICAgICAgICAgICBj
bG9zZShwb3V0WzFdKTsKCiAgICAgICAgICAgICAgICBhcmdzLmxpc3RbMF0gPSBzc2hfcHJvZ3Jh
bTsKICAgICAgICAgICAgICAgIGlmIChyZW11c2VyICE9IDBMKQogICAgICAgICAgICAgICAgICAg
ICAgICBhZGRhcmdzKCZhcmdzLCAiLWwlcyIsIHJlbXVzZXIpOwogICAgICAgICAgICAgICAgYWRk
YXJncygmYXJncywgIiVzIiwgaG9zdCk7CiAgICAgICAgICAgICAgICBhZGRhcmdzKCZhcmdzLCAi
JXMiLCBjbWQpOwoKICAgICAgICAgICAgICAgIGV4ZWN2cChzc2hfcHJvZ3JhbSwgYXJncy5saXN0
KTsKICAgICAgICAgICAgICAgIHBlcnJvcihzc2hfcHJvZ3JhbSk7CiAgICAgICAgICAgICAgICBl
eGl0KDEpOwogICAgICAgIH0KCiAgICAgICAgY2xvc2UocGluWzBdKTsKICAgICAgICAqZmRvdXQg
PSBwaW5bMV07CiAgICAgICAgY2xvc2UocG91dFsxXSk7CiAgICAgICAgKmZkaW4gPSBwb3V0WzBd
OwogICAgICAgIHJldHVybiAwOwp9Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IGNudDsK
ICAgICAgICBjaGFyICpidWY7Cn0gQlVGOwoKQlVGICphbGxvY2J1ZihCVUYgKiwgaW50LCBpbnQp
Owp2b2lkIGxvc3Rjb25uKGludCk7CnZvaWQgbm9zcGFjZSh2b2lkKTsKaW50IG9rbmFtZShjaGFy
ICopOwp2b2lkIHJ1bl9lcnIoY29uc3QgY2hhciAqLC4uLik7CnZvaWQgdmVyaWZ5ZGlyKGNoYXIg
Kik7CgpzdHJ1Y3QgcGFzc3dkICpwd2Q7CnVpZF90IHVzZXJpZDsKaW50IGVycnMsIHJlbWluLCBy
ZW1vdXQ7CmludCBwZmxhZywgaWFtcmVtb3RlLCBpYW1yZWN1cnNpdmUsIHRhcmdldHNob3VsZGJl
ZGlyZWN0b3J5OwoKCmNoYXIgY21kWzY0XTsKCmludCByZXNwb25zZSh2b2lkKTsKdm9pZCByc291
cmNlKGNoYXIgKiwgc3RydWN0IHN0YXQgKik7CnZvaWQgc2luayhpbnQsIGNoYXIgKltdKTsKdm9p
ZCBzb3VyY2UoaW50LCBjaGFyICpbXSk7CnZvaWQgdG9sb2NhbChpbnQsIGNoYXIgKltdKTsKdm9p
ZCB0b3JlbW90ZShjaGFyICosIGludCwgY2hhciAqW10pOwp2b2lkIHVzYWdlKHZvaWQpOwoKaW50
Cm1haW4oYXJnYywgYXJndikKICAgICAgICBpbnQgYXJnYzsKICAgICAgICBjaGFyICphcmd2W107
CnsKICAgICAgICBpbnQgY2gsIGZmbGFnLCB0ZmxhZzsKICAgICAgICBjaGFyICp0YXJnOwogICAg
ICAgIGV4dGVybiBjaGFyICpCU0RvcHRhcmc7CiAgICAgICAgZXh0ZXJuIGludCBCU0RvcHRpbmQ7
CgogICAgICAgIF9fcHJvZ25hbWUgPSBnZXRfcHJvZ25hbWUoYXJndlswXSk7CgogICAgICAgIGFy
Z3MubGlzdCA9IDBMOwogICAgICAgIGFkZGFyZ3MoJmFyZ3MsICJzc2giKTsKICAgICAgICBhZGRh
cmdzKCZhcmdzLCAiLXgiKTsKICAgICAgICBhZGRhcmdzKCZhcmdzLCAiLW9Gb3J3YXJkQWdlbnQg
bm8iKTsKICAgICAgICBhZGRhcmdzKCZhcmdzLCAiLW9DbGVhckFsbEZvcndhcmRpbmdzIHllcyIp
OwoKICAgICAgICBmZmxhZyA9IHRmbGFnID0gMDsKICAgICAgICB3aGlsZSAoKGNoID0gQlNEZ2V0
b3B0KGFyZ2MsIGFyZ3YsICJkZnBydHZCQ2M6aTpQOnE0NlM6bzpGOiIpKSAhPSAtMSkKICAgICAg
ICAgICAgICAgIHN3aXRjaCAoY2gpIHsKCiAgICAgICAgICAgICAgICBjYXNlICc0JzoKICAgICAg
ICAgICAgICAgIGNhc2UgJzYnOgogICAgICAgICAgICAgICAgY2FzZSAnQyc6CiAgICAgICAgICAg
ICAgICAgICAgICAgIGFkZGFyZ3MoJmFyZ3MsICItJWMiLCBjaCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnbyc6CiAgICAgICAgICAgICAgICBj
YXNlICdjJzoKICAgICAgICAgICAgICAgIGNhc2UgJ2knOgogICAgICAgICAgICAgICAgY2FzZSAn
Ric6CiAgICAgICAgICAgICAgICAgICAgICAgIGFkZGFyZ3MoJmFyZ3MsICItJWMlcyIsIGNoLCBC
U0RvcHRhcmcpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
IGNhc2UgJ1AnOgogICAgICAgICAgICAgICAgICAgICAgICBhZGRhcmdzKCZhcmdzLCAiLXAlcyIs
IEJTRG9wdGFyZyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgY2FzZSAnQic6CiAgICAgICAgICAgICAgICAgICAgICAgIGFkZGFyZ3MoJmFyZ3MsICItb0Jh
dGNobW9kZSB5ZXMiKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICBjYXNlICdwJzoKICAgICAgICAgICAgICAgICAgICAgICAgcGZsYWcgPSAxOwogICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ3InOgogICAgICAg
ICAgICAgICAgICAgICAgICBpYW1yZWN1cnNpdmUgPSAxOwogICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ1MnOgogICAgICAgICAgICAgICAgICAgICAg
ICBzc2hfcHJvZ3JhbSA9IHhzdHJkdXAoQlNEb3B0YXJnKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICd2JzoKICAgICAgICAgICAgICAgICAgICAg
ICAgYWRkYXJncygmYXJncywgIi12Iik7CiAgICAgICAgICAgICAgICAgICAgICAgIHZlcmJvc2Vf
bW9kZSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
Y2FzZSAncSc6CiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dwcm9ncmVzcyA9IDA7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKCiAgICAgICAgICAgICAgICBjYXNlICdkJzoKICAg
ICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0c2hvdWxkYmVkaXJlY3RvcnkgPSAxOwogICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ2YnOgogICAgICAg
ICAgICAgICAgICAgICAgICBpYW1yZW1vdGUgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICBm
ZmxhZyA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
Y2FzZSAndCc6CiAgICAgICAgICAgICAgICAgICAgICAgIGlhbXJlbW90ZSA9IDE7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHRmbGFnID0gMTsKCgoKICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICB1c2Fn
ZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgIGFyZ2MgLT0gQlNEb3B0aW5kOwogICAgICAg
IGFyZ3YgKz0gQlNEb3B0aW5kOwoKICAgICAgICBpZiAoKHB3ZCA9IGdldHB3dWlkKHVzZXJpZCA9
IGdldHVpZCgpKSkgPT0gMEwpCiAgICAgICAgICAgICAgICBmYXRhbCgidW5rbm93biB1c2VyICVk
IiwgKGludCkgdXNlcmlkKTsKCiAgICAgICAgaWYgKCFpc2F0dHkoMikpCiAgICAgICAgICAgICAg
ICBzaG93cHJvZ3Jlc3MgPSAwOwoKICAgICAgICByZW1pbiA9IDA7CiAgICAgICAgcmVtb3V0ID0g
MTsKCiAgICAgICAgaWYgKGZmbGFnKSB7CgogICAgICAgICAgICAgICAgKHZvaWQpIHJlc3BvbnNl
KCk7CiAgICAgICAgICAgICAgICBzb3VyY2UoYXJnYywgYXJndik7CiAgICAgICAgICAgICAgICBl
eGl0KGVycnMgIT0gMCk7CiAgICAgICAgfQogICAgICAgIGlmICh0ZmxhZykgewoKICAgICAgICAg
ICAgICAgIHNpbmsoYXJnYywgYXJndik7CiAgICAgICAgICAgICAgICBleGl0KGVycnMgIT0gMCk7
CiAgICAgICAgfQogICAgICAgIGlmIChhcmdjIDwgMikKICAgICAgICAgICAgICAgIHVzYWdlKCk7
CiAgICAgICAgaWYgKGFyZ2MgPiAyKQogICAgICAgICAgICAgICAgdGFyZ2V0c2hvdWxkYmVkaXJl
Y3RvcnkgPSAxOwoKICAgICAgICByZW1pbiA9IHJlbW91dCA9IC0xOwoKICAgICAgICAodm9pZCkg
c25wcmludGYoY21kLCBzaXplb2YgY21kLCAic2NwJXMlcyVzJXMiLAogICAgICAgICAgICB2ZXJi
b3NlX21vZGUgPyAiIC12IiA6ICIiLAogICAgICAgICAgICBpYW1yZWN1cnNpdmUgPyAiIC1yIiA6
ICIiLCBwZmxhZyA/ICIgLXAiIDogIiIsCiAgICAgICAgICAgIHRhcmdldHNob3VsZGJlZGlyZWN0
b3J5ID8gIiAtZCIgOiAiIik7CgogICAgICAgICh2b2lkKSBzaWduYWwoMTMsIGxvc3Rjb25uKTsK
CiAgICAgICAgaWYgKCh0YXJnID0gY29sb24oYXJndlthcmdjIC0gMV0pKSkKICAgICAgICAgICAg
ICAgIHRvcmVtb3RlKHRhcmcsIGFyZ2MsIGFyZ3YpOwogICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgdG9sb2NhbChhcmdjLCBhcmd2KTsKICAgICAgICAgICAgICAgIGlmICh0YXJnZXRzaG91
bGRiZWRpcmVjdG9yeSkKICAgICAgICAgICAgICAgICAgICAgICAgdmVyaWZ5ZGlyKGFyZ3ZbYXJn
YyAtIDFdKTsKICAgICAgICB9CiAgICAgICAgZXhpdChlcnJzICE9IDApOwp9Cgp2b2lkCnRvcmVt
b3RlKHRhcmcsIGFyZ2MsIGFyZ3YpCiAgICAgICAgY2hhciAqdGFyZywgKmFyZ3ZbXTsKICAgICAg
ICBpbnQgYXJnYzsKewogICAgICAgIGludCBpLCBsZW47CiAgICAgICAgY2hhciAqYnAsICpob3N0
LCAqc3JjLCAqc3VzZXIsICp0aG9zdCwgKnR1c2VyOwoKICAgICAgICAqdGFyZysrID0gMDsKICAg
ICAgICBpZiAoKnRhcmcgPT0gMCkKICAgICAgICAgICAgICAgIHRhcmcgPSAiLiI7CgogICAgICAg
IGlmICgodGhvc3QgPSBzdHJjaHIoYXJndlthcmdjIC0gMV0sICdAJykpKSB7CgogICAgICAgICAg
ICAgICAgKnRob3N0KysgPSAwOwogICAgICAgICAgICAgICAgdHVzZXIgPSBhcmd2W2FyZ2MgLSAx
XTsKICAgICAgICAgICAgICAgIGlmICgqdHVzZXIgPT0gJ1wwJykKICAgICAgICAgICAgICAgICAg
ICAgICAgdHVzZXIgPSAwTDsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFva25hbWUodHVzZXIp
KQogICAgICAgICAgICAgICAgICAgICAgICBleGl0KDEpOwogICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICB0aG9zdCA9IGFyZ3ZbYXJnYyAtIDFdOwogICAgICAgICAgICAgICAgdHVzZXIg
PSAwTDsKICAgICAgICB9CgogICAgICAgIGZvciAoaSA9IDA7IGkgPCBhcmdjIC0gMTsgaSsrKSB7
CiAgICAgICAgICAgICAgICBzcmMgPSBjb2xvbihhcmd2W2ldKTsKICAgICAgICAgICAgICAgIGlm
IChzcmMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNoYXIgKnNzaF9vcHRpb25z
ID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICIteCAtbydDbGVhckFsbEZvcndhcmRpbmdz
IHllcyciOwogICAgICAgICAgICAgICAgICAgICAgICAqc3JjKysgPSAwOwogICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoKnNyYyA9PSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNyYyA9ICIuIjsKICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCA9IHN0cmNocihhcmd2W2ld
LCAnQCcpOwogICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSBzdHJsZW4oc3NoX3Byb2dyYW0p
ICsgc3RybGVuKGFyZ3ZbaV0pICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbihz
cmMpICsgKHR1c2VyID8gc3RybGVuKHR1c2VyKSA6IDApICsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cmxlbih0aG9zdCkgKyBzdHJsZW4odGFyZykgKwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RybGVuKHNzaF9vcHRpb25zKSArIDY0ICsgMjA7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGJwID0geG1hbGxvYyhsZW4pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaG9z
dCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpob3N0KysgPSAwOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QgPSBjbGVhbmhvc3RuYW1lKGhvc3QpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1c2VyID0gYXJndltpXTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoKnN1c2VyID09ICdcMCcpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdXNlciA9IHB3ZC0+cHdfbmFtZTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghb2tuYW1lKHN1c2VyKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNucHJpbnRmKGJwLCBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIlcyVzICVzIC1uICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIi1sICVzICVzICVzICVzICclcyVzJXM6JXMnIiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3NoX3Byb2dyYW0sIHZlcmJvc2VfbW9kZSA/ICIgLXYiIDogIiIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaF9vcHRpb25zLCBzdXNlciwgaG9zdCwg
Y21kLCBzcmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1c2VyID8gdHVz
ZXIgOiAiIiwgdHVzZXIgPyAiQCIgOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGhvc3QsIHRhcmcpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QgPSBjbGVhbmhvc3RuYW1lKGFyZ3ZbaV0p
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNucHJpbnRmKGJwLCBsZW4sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGVjICVzJXMgJXMgLW4gJXMgIgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMgJXMgJyVzJXMlczolcyciLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2hfcHJvZ3JhbSwgdmVyYm9zZV9tb2Rl
ID8gIiAtdiIgOiAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NoX29w
dGlvbnMsIGhvc3QsIGNtZCwgc3JjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0dXNlciA/IHR1c2VyIDogIiIsIHR1c2VyID8gIkAiIDogIiIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRob3N0LCB0YXJnKTsKICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZV9tb2RlKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZwcmludGYoKCZfX2lvYlsyXSksICJFeGVjdXRpbmc6ICVzXG4i
LCBicCk7CiAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSBzeXN0ZW0oYnApOwogICAgICAg
ICAgICAgICAgICAgICAgICAodm9pZCkgeGZyZWUoYnApOwogICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbWluID09IC0xKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGVuID0gc3RybGVuKHRhcmcpICsgNjQgKyAyMDsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicCA9IHhtYWxsb2MobGVuKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAodm9pZCkgc25wcmludGYoYnAsIGxlbiwgIiVzIC10ICVzIiwg
Y21kLCB0YXJnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0ID0gY2xlYW5o
b3N0bmFtZSh0aG9zdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvX2Nt
ZChob3N0LCB0dXNlciwgYnAsICZyZW1pbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJnJlbW91dCwgYXJnYykgPCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXhpdCgxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVz
cG9uc2UoKSA8IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGl0
KDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSB4ZnJlZShicCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlKDEs
IGFyZ3YgKyBpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9Cn0KCnZvaWQKdG9sb2NhbChh
cmdjLCBhcmd2KQogICAgICAgIGludCBhcmdjOwogICAgICAgIGNoYXIgKmFyZ3ZbXTsKewogICAg
ICAgIGludCBpLCBsZW47CiAgICAgICAgY2hhciAqYnAsICpob3N0LCAqc3JjLCAqc3VzZXI7Cgog
ICAgICAgIGZvciAoaSA9IDA7IGkgPCBhcmdjIC0gMTsgaSsrKSB7CiAgICAgICAgICAgICAgICBp
ZiAoIShzcmMgPSBjb2xvbihhcmd2W2ldKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbGVu
ID0gc3RybGVuKCJjcCIpICsgc3RybGVuKGFyZ3ZbaV0pICsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cmxlbihhcmd2W2FyZ2MgLSAxXSkgKyAyMDsKICAgICAgICAgICAgICAgICAgICAg
ICAgYnAgPSB4bWFsbG9jKGxlbik7CiAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSBzbnBy
aW50ZihicCwgbGVuLCAiZXhlYyAlcyVzJXMgJXMgJXMiLCAiY3AiLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWFtcmVjdXJzaXZlID8gIiAtciIgOiAiIiwgcGZsYWcgPyAiIC1wIiA6ICIi
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndltpXSwgYXJndlthcmdjIC0gMV0pOwog
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZV9tb2RlKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZwcmludGYoKCZfX2lvYlsyXSksICJFeGVjdXRpbmc6ICVzXG4iLCBi
cCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzeXN0ZW0oYnApKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICsrZXJyczsKICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQp
IHhmcmVlKGJwKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAqc3JjKysgPSAwOwogICAgICAgICAgICAgICAgaWYgKCpz
cmMgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgc3JjID0gIi4iOwogICAgICAgICAgICAg
ICAgaWYgKChob3N0ID0gc3RyY2hyKGFyZ3ZbaV0sICdAJykpID09IDBMKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGhvc3QgPSBhcmd2W2ldOwogICAgICAgICAgICAgICAgICAgICAgICBzdXNl
ciA9IDBMOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAg
Kmhvc3QrKyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHN1c2VyID0gYXJndltpXTsKICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCpzdXNlciA9PSAnXDAnKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN1c2VyID0gcHdkLT5wd19uYW1lOwogICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlIGlmICghb2tuYW1lKHN1c2VyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGhvc3QgPSBj
bGVhbmhvc3RuYW1lKGhvc3QpOwogICAgICAgICAgICAgICAgbGVuID0gc3RybGVuKHNyYykgKyA2
NCArIDIwOwogICAgICAgICAgICAgICAgYnAgPSB4bWFsbG9jKGxlbik7CiAgICAgICAgICAgICAg
ICAodm9pZCkgc25wcmludGYoYnAsIGxlbiwgIiVzIC1mICVzIiwgY21kLCBzcmMpOwogICAgICAg
ICAgICAgICAgaWYgKGRvX2NtZChob3N0LCBzdXNlciwgYnAsICZyZW1pbiwgJnJlbW91dCwgYXJn
YykgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSB4ZnJlZShicCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICsrZXJyczsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB4ZnJlZShicCk7CiAgICAgICAg
ICAgICAgICBzaW5rKDEsIGFyZ3YgKyBhcmdjIC0gMSk7CiAgICAgICAgICAgICAgICAodm9pZCkg
Y2xvc2UocmVtaW4pOwogICAgICAgICAgICAgICAgcmVtaW4gPSByZW1vdXQgPSAtMTsKICAgICAg
ICB9Cn0KCnZvaWQKc291cmNlKGFyZ2MsIGFyZ3YpCiAgICAgICAgaW50IGFyZ2M7CiAgICAgICAg
Y2hhciAqYXJndltdOwp7CiAgICAgICAgc3RydWN0IHN0YXQgc3RiOwogICAgICAgIHN0YXRpYyBC
VUYgYnVmZmVyOwogICAgICAgIEJVRiAqYnA7CiAgICAgICAgb2ZmX3QgaSwgYW10LCByZXN1bHQ7
CiAgICAgICAgaW50IGZkLCBoYWRlcnIsIGluZHg7CiAgICAgICAgY2hhciAqbGFzdCwgKm5hbWUs
IGJ1ZlsyMDQ4XTsKICAgICAgICBpbnQgbGVuOwoKICAgICAgICBmb3IgKGluZHggPSAwOyBpbmR4
IDwgYXJnYzsgKytpbmR4KSB7CiAgICAgICAgICAgICAgICBuYW1lID0gYXJndltpbmR4XTsKICAg
ICAgICAgICAgICAgIHN0YXRieXRlcyA9IDA7CiAgICAgICAgICAgICAgICBsZW4gPSBzdHJsZW4o
bmFtZSk7CiAgICAgICAgICAgICAgICB3aGlsZSAobGVuID4gMSAmJiBuYW1lW2xlbi0xXSA9PSAn
LycpCiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVbLS1sZW5dID0gJ1wwJzsKICAgICAgICAg
ICAgICAgIGlmIChzdHJjaHIobmFtZSwgJ1xuJykgIT0gMEwpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgcnVuX2VycigiJXM6IHNraXBwaW5nLCBmaWxlbmFtZSBjb250YWlucyBhIG5ld2xpbmUi
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGdvdG8gbmV4dDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgoZmQg
PSBvcGVuKG5hbWUsIDAwMDAwMDAsIDApKSA8IDApCiAgICAgICAgICAgICAgICAgICAgICAgIGdv
dG8gc3lzZXJyOwogICAgICAgICAgICAgICAgaWYgKGZzdGF0KGZkLCAmc3RiKSA8IDApIHsKc3lz
ZXJyOiBydW5fZXJyKCIlczogJXMiLCBuYW1lLCBzdHJlcnJvcihlcnJubykpOwogICAgICAgICAg
ICAgICAgICAgICAgICBnb3RvIG5leHQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICBzd2l0Y2ggKHN0Yi5zdF9tb2RlICYgMDE3MDAwMCkgewogICAgICAgICAgICAgICAgY2FzZSAw
MTAwMDAwOgogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNh
c2UgMDA0MDAwMDoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlhbXJlY3Vyc2l2ZSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzb3VyY2UobmFtZSwgJnN0Yik7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0OwogICAgICAgICAgICAgICAgICAg
ICAgICB9CgogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAg
cnVuX2VycigiJXM6IG5vdCBhIHJlZ3VsYXIgZmlsZSIsIG5hbWUpOwogICAgICAgICAgICAgICAg
ICAgICAgICBnb3RvIG5leHQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAo
KGxhc3QgPSBzdHJyY2hyKG5hbWUsICcvJykpID09IDBMKQogICAgICAgICAgICAgICAgICAgICAg
ICBsYXN0ID0gbmFtZTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg
ICAgKytsYXN0OwogICAgICAgICAgICAgICAgY3VyZmlsZSA9IGxhc3Q7CiAgICAgICAgICAgICAg
ICBpZiAocGZsYWcpIHsKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSBzbnByaW50
ZihidWYsIHNpemVvZiBidWYsICJUJWx1IDAgJWx1IDBcbiIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAodV9sb25nKSBzdGIuc3RfbXRpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAodV9sb25nKSBzdGIuc3RfYXRpbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAodm9pZCkg
YXRvbWljaW8od3JpdGUsIHJlbW91dCwgYnVmLCBzdHJsZW4oYnVmKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChyZXNwb25zZSgpIDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnb3RvIG5leHQ7CiAgICAgICAgICAgICAgICB9CgoKICAgICAgICAgICAgICAgIHNucHJp
bnRmKGJ1Ziwgc2l6ZW9mIGJ1ZiwgIkMlMDRvICVsbGQgJXNcbiIsCiAgICAgICAgICAgICAgICAg
ICAgKHVfaW50KSAoc3RiLnN0X21vZGUgJiAoMDAwNDAwMHwwMDAyMDAwfDAwMDA3MDB8MDAwMDA3
MHwwMDAwMDA3KSksCiAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZylzdGIuc3Rfc2l6ZSwg
bGFzdCk7CgoKCgoKCiAgICAgICAgICAgICAgICBpZiAodmVyYm9zZV9tb2RlKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGZwcmludGYoKCZfX2lvYlsyXSksICJTZW5kaW5nIGZpbGUgbW9kZXM6
ICVzIiwgYnVmKTsKICAgICAgICAgICAgICAgICAgICAgICAgZmZsdXNoKCgmX19pb2JbMl0pKTsK
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICh2b2lkKSBhdG9taWNpbyh3cml0ZSwg
cmVtb3V0LCBidWYsIHN0cmxlbihidWYpKTsKICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZSgp
IDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0OwogICAgICAgICAgICAgICAg
aWYgKChicCA9IGFsbG9jYnVmKCZidWZmZXIsIGZkLCAyMDQ4KSkgPT0gMEwpIHsKbmV4dDogKHZv
aWQpIGNsb3NlKGZkKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoc2hvd3Byb2dyZXNzKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHRvdGFsYnl0ZXMgPSBzdGIuc3Rfc2l6ZTsKICAgICAgICAgICAgICAgICAg
ICAgICAgcHJvZ3Jlc3NtZXRlcigtMSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg
ICAgZm9yIChoYWRlcnIgPSBpID0gMDsgaSA8IHN0Yi5zdF9zaXplOyBpICs9IGJwLT5jbnQpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgYW10ID0gYnAtPmNudDsKICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGkgKyBhbXQgPiBzdGIuc3Rfc2l6ZSkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbXQgPSBzdGIuc3Rfc2l6ZSAtIGk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICghaGFkZXJyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gYXRv
bWljaW8ocmVhZCwgZmQsIGJwLT5idWYsIGFtdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHJlc3VsdCAhPSBhbXQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBoYWRlcnIgPSByZXN1bHQgPj0gMCA/IDUgOiBlcnJubzsKICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFkZXJyKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSBhdG9taWNpbyh3cml0ZSwgcmVtb3V0LCBicC0+
YnVmLCBhbXQpOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXN1bHQgPSBhdG9taWNpbyh3cml0ZSwgcmVtb3V0LCBicC0+YnVm
LCBhbXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gYW10
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFkZXJyID0gcmVzdWx0
ID49IDAgPyA1IDogZXJybm87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGJ5
dGVzICs9IHJlc3VsdDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgaWYgKHNob3dwcm9ncmVzcykKICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvZ3Jlc3NtZXRlcigxKTsKCiAgICAgICAgICAgICAgICBpZiAoY2xvc2UoZmQpIDwgMCAm
JiAhaGFkZXJyKQogICAgICAgICAgICAgICAgICAgICAgICBoYWRlcnIgPSBlcnJubzsKICAgICAg
ICAgICAgICAgIGlmICghaGFkZXJyKQogICAgICAgICAgICAgICAgICAgICAgICAodm9pZCkgYXRv
bWljaW8od3JpdGUsIHJlbW91dCwgIiIsIDEpOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgICAgICAgICBydW5fZXJyKCIlczogJXMiLCBuYW1lLCBzdHJlcnJvcihoYWRlcnIp
KTsKICAgICAgICAgICAgICAgICh2b2lkKSByZXNwb25zZSgpOwogICAgICAgIH0KfQoKdm9pZApy
c291cmNlKG5hbWUsIHN0YXRwKQogICAgICAgIGNoYXIgKm5hbWU7CiAgICAgICAgc3RydWN0IHN0
YXQgKnN0YXRwOwp7CiAgICAgICAgRElSICpkaXJwOwogICAgICAgIHN0cnVjdCBkaXJlbnQgKmRw
OwogICAgICAgIGNoYXIgKmxhc3QsICp2ZWN0WzFdLCBwYXRoWzExMDBdOwoKICAgICAgICBpZiAo
IShkaXJwID0gb3BlbmRpcihuYW1lKSkpIHsKICAgICAgICAgICAgICAgIHJ1bl9lcnIoIiVzOiAl
cyIsIG5hbWUsIHN0cmVycm9yKGVycm5vKSk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgfQogICAgICAgIGxhc3QgPSBzdHJyY2hyKG5hbWUsICcvJyk7CiAgICAgICAgaWYgKGxhc3Qg
PT0gMCkKICAgICAgICAgICAgICAgIGxhc3QgPSBuYW1lOwogICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgIGxhc3QrKzsKICAgICAgICBpZiAocGZsYWcpIHsKICAgICAgICAgICAgICAgICh2b2lk
KSBzbnByaW50ZihwYXRoLCBzaXplb2YocGF0aCksICJUJWx1IDAgJWx1IDBcbiIsCiAgICAgICAg
ICAgICAgICAgICAgKHVfbG9uZykgc3RhdHAtPnN0X210aW1lLAogICAgICAgICAgICAgICAgICAg
ICh1X2xvbmcpIHN0YXRwLT5zdF9hdGltZSk7CiAgICAgICAgICAgICAgICAodm9pZCkgYXRvbWlj
aW8od3JpdGUsIHJlbW91dCwgcGF0aCwgc3RybGVuKHBhdGgpKTsKICAgICAgICAgICAgICAgIGlm
IChyZXNwb25zZSgpIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjbG9zZWRpcihkaXJw
KTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAg
ICAgIH0KICAgICAgICAodm9pZCkgc25wcmludGYocGF0aCwgc2l6ZW9mIHBhdGgsICJEJTA0byAl
ZCAlLjEwMjRzXG4iLAogICAgICAgICAgICAodV9pbnQpIChzdGF0cC0+c3RfbW9kZSAmICgwMDA0
MDAwfDAwMDIwMDB8MDAwMDcwMHwwMDAwMDcwfDAwMDAwMDcpKSwgMCwgbGFzdCk7CiAgICAgICAg
aWYgKHZlcmJvc2VfbW9kZSkKICAgICAgICAgICAgICAgIGZwcmludGYoKCZfX2lvYlsyXSksICJF
bnRlcmluZyBkaXJlY3Rvcnk6ICVzIiwgcGF0aCk7CiAgICAgICAgKHZvaWQpIGF0b21pY2lvKHdy
aXRlLCByZW1vdXQsIHBhdGgsIHN0cmxlbihwYXRoKSk7CiAgICAgICAgaWYgKHJlc3BvbnNlKCkg
PCAwKSB7CiAgICAgICAgICAgICAgICBjbG9zZWRpcihkaXJwKTsKICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICB9CiAgICAgICAgd2hpbGUgKChkcCA9IHJlYWRkaXIoZGlycCkpICE9IDBM
KSB7CiAgICAgICAgICAgICAgICBpZiAoZHAtPmRfaW5vID09IDApCiAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgaWYgKCFzdHJjbXAoZHAtPmRfbmFtZSwg
Ii4iKSB8fCAhc3RyY21wKGRwLT5kX25hbWUsICIuLiIpKQogICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgICAgIGlmIChzdHJsZW4obmFtZSkgKyAxICsgc3RybGVu
KGRwLT5kX25hbWUpID49IHNpemVvZihwYXRoKSAtIDEpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgcnVuX2VycigiJXMvJXM6IG5hbWUgdG9vIGxvbmciLCBuYW1lLCBkcC0+ZF9uYW1lKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAodm9pZCkgc25wcmludGYocGF0aCwgc2l6ZW9mIHBhdGgsICIlcy8lcyIsIG5hbWUs
IGRwLT5kX25hbWUpOwogICAgICAgICAgICAgICAgdmVjdFswXSA9IHBhdGg7CiAgICAgICAgICAg
ICAgICBzb3VyY2UoMSwgdmVjdCk7CiAgICAgICAgfQogICAgICAgICh2b2lkKSBjbG9zZWRpcihk
aXJwKTsKICAgICAgICAodm9pZCkgYXRvbWljaW8od3JpdGUsIHJlbW91dCwgIkVcbiIsIDIpOwog
ICAgICAgICh2b2lkKSByZXNwb25zZSgpOwp9Cgp2b2lkCnNpbmsoYXJnYywgYXJndikKICAgICAg
ICBpbnQgYXJnYzsKICAgICAgICBjaGFyICphcmd2W107CnsKICAgICAgICBzdGF0aWMgQlVGIGJ1
ZmZlcjsKICAgICAgICBzdHJ1Y3Qgc3RhdCBzdGI7CiAgICAgICAgZW51bSB7CiAgICAgICAgICAg
ICAgICBZRVMsIE5PLCBESVNQTEFZRUQKICAgICAgICB9IHdyZXJyOwogICAgICAgIEJVRiAqYnA7
CiAgICAgICAgb2ZmX3QgaSwgajsKICAgICAgICBpbnQgYW10LCBjb3VudCwgZXhpc3RzLCBmaXJz
dCwgbWFzaywgbW9kZSwgb2ZkLCBvbW9kZTsKICAgICAgICBvZmZfdCBzaXplOwogICAgICAgIGlu
dCBzZXRpbWVzLCB0YXJnaXNkaXIsIHdyZXJybm8gPSAwOwogICAgICAgIGNoYXIgY2gsICpjcCwg
Km5wLCAqdGFyZywgKndoeSwgKnZlY3RbMV0sIGJ1ZlsyMDQ4XTsKICAgICAgICBzdHJ1Y3QgdGlt
ZXZhbCB0dlsyXTsKCgoKCgogICAgICAgIHNldGltZXMgPSB0YXJnaXNkaXIgPSAwOwogICAgICAg
IG1hc2sgPSB1bWFzaygwKTsKICAgICAgICBpZiAoIXBmbGFnKQogICAgICAgICAgICAgICAgKHZv
aWQpIHVtYXNrKG1hc2spOwogICAgICAgIGlmIChhcmdjICE9IDEpIHsKICAgICAgICAgICAgICAg
IHJ1bl9lcnIoImFtYmlndW91cyB0YXJnZXQiKTsKICAgICAgICAgICAgICAgIGV4aXQoMSk7CiAg
ICAgICAgfQogICAgICAgIHRhcmcgPSAqYXJndjsKICAgICAgICBpZiAodGFyZ2V0c2hvdWxkYmVk
aXJlY3RvcnkpCiAgICAgICAgICAgICAgICB2ZXJpZnlkaXIodGFyZyk7CgogICAgICAgICh2b2lk
KSBhdG9taWNpbyh3cml0ZSwgcmVtb3V0LCAiIiwgMSk7CiAgICAgICAgaWYgKHN0YXQodGFyZywg
JnN0YikgPT0gMCAmJiAoKHN0Yi5zdF9tb2RlICYgMDE3MDAwMCk9PTAwNDAwMDApKQogICAgICAg
ICAgICAgICAgdGFyZ2lzZGlyID0gMTsKICAgICAgICBmb3IgKGZpcnN0ID0gMTs7IGZpcnN0ID0g
MCkgewogICAgICAgICAgICAgICAgY3AgPSBidWY7CiAgICAgICAgICAgICAgICBpZiAoYXRvbWlj
aW8ocmVhZCwgcmVtaW4sIGNwLCAxKSA8PSAwKQogICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAgICBpZiAoKmNwKysgPT0gJ1xuJykKICAgICAgICAgICAgICAgICAg
ICAgICAgZG8geyB3aHkgPSAidW5leHBlY3RlZCA8bmV3bGluZT4iOyBnb3RvIHNjcmV3dXA7IH0g
d2hpbGUgKDApOwogICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoYXRvbWljaW8ocmVhZCwgcmVtaW4sICZjaCwgc2l6ZW9mKGNoKSkgIT0gc2l6ZW9mKGNoKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7IHdoeSA9ICJsb3N0IGNvbm5lY3Rp
b24iOyBnb3RvIHNjcmV3dXA7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgICAgICAq
Y3ArKyA9IGNoOwogICAgICAgICAgICAgICAgfSB3aGlsZSAoY3AgPCAmYnVmW3NpemVvZihidWYp
IC0gMV0gJiYgY2ggIT0gJ1xuJyk7CiAgICAgICAgICAgICAgICAqY3AgPSAwOwoKICAgICAgICAg
ICAgICAgIGlmIChidWZbMF0gPT0gJ1wwMScgfHwgYnVmWzBdID09ICdcMDInKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChpYW1yZW1vdGUgPT0gMCkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAodm9pZCkgYXRvbWljaW8od3JpdGUsIDIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJ1ZiArIDEsIHN0cmxlbihidWYgKyAxKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChidWZbMF0gPT0gJ1wwMicpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhpdCgxKTsKICAgICAgICAgICAgICAgICAgICAgICAgKytlcnJzOwogICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
IGlmIChidWZbMF0gPT0gJ0UnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSBhdG9t
aWNpbyh3cml0ZSwgcmVtb3V0LCAiIiwgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnXG4nKQogICAg
ICAgICAgICAgICAgICAgICAgICAqLS1jcCA9IDA7CgogICAgICAgICAgICAgICAgY3AgPSBidWY7
CiAgICAgICAgICAgICAgICBpZiAoKmNwID09ICdUJykgewogICAgICAgICAgICAgICAgICAgICAg
ICBzZXRpbWVzKys7CiAgICAgICAgICAgICAgICAgICAgICAgIGNwKys7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHR2WzFdLnR2X3NlYyA9IHN0cnRvbChjcCwgJmNwLCAxMCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghY3AgfHwgKmNwKysgIT0gJyAnKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRvIHsgd2h5ID0gIm10aW1lLnNlYyBub3QgZGVsaW1pdGVkIjsgZ290byBz
Y3Jld3VwOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgdHZbMV0udHZfdXNl
YyA9IHN0cnRvbChjcCwgJmNwLCAxMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY3Ag
fHwgKmNwKysgIT0gJyAnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsgd2h5
ID0gIm10aW1lLnVzZWMgbm90IGRlbGltaXRlZCI7IGdvdG8gc2NyZXd1cDsgfSB3aGlsZSAoMCk7
CiAgICAgICAgICAgICAgICAgICAgICAgIHR2WzBdLnR2X3NlYyA9IHN0cnRvbChjcCwgJmNwLCAx
MCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY3AgfHwgKmNwKysgIT0gJyAnKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsgd2h5ID0gImF0aW1lLnNlYyBub3QgZGVs
aW1pdGVkIjsgZ290byBzY3Jld3VwOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgdHZbMF0udHZfdXNlYyA9IHN0cnRvbChjcCwgJmNwLCAxMCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghY3AgfHwgKmNwKysgIT0gJ1wwJykKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkbyB7IHdoeSA9ICJhdGltZS51c2VjIG5vdCBkZWxpbWl0ZWQiOyBnb3RvIHNjcmV3
dXA7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgICAgICAodm9pZCkgYXRvbWljaW8o
d3JpdGUsIHJlbW91dCwgIiIsIDEpOwogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgqY3AgIT0gJ0MnICYmICpjcCAh
PSAnRCcpIHsKCgoKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9lcnIoIiVzIiwgY3ApOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgZG8geyB3aHkgPSAiZXhwZWN0ZWQgY29udHJvbCByZWNv
cmQiOyBnb3RvIHNjcmV3dXA7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgbW9kZSA9IDA7CiAgICAgICAgICAgICAgICBmb3IgKCsrY3A7IGNwIDwgYnVmICsg
NTsgY3ArKykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKmNwIDwgJzAnIHx8ICpjcCA+
ICc3JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7IHdoeSA9ICJiYWQgbW9k
ZSI7IGdvdG8gc2NyZXd1cDsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIG1v
ZGUgPSAobW9kZSA8PCAzKSB8ICgqY3AgLSAnMCcpOwogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgaWYgKCpjcCsrICE9ICcgJykKICAgICAgICAgICAgICAgICAgICAgICAgZG8geyB3
aHkgPSAibW9kZSBub3QgZGVsaW1pdGVkIjsgZ290byBzY3Jld3VwOyB9IHdoaWxlICgwKTsKCiAg
ICAgICAgICAgICAgICBmb3IgKHNpemUgPSAwOyAoX19TQl9tYXNrcyA/IF9fU0JfbWFza3NbKmNw
XSAmIDB4MDEwIDogX2lzZGlnaXQoKmNwKSk7KQogICAgICAgICAgICAgICAgICAgICAgICBzaXpl
ID0gc2l6ZSAqIDEwICsgKCpjcCsrIC0gJzAnKTsKICAgICAgICAgICAgICAgIGlmICgqY3ArKyAh
PSAnICcpCiAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsgd2h5ID0gInNpemUgbm90IGRlbGlt
aXRlZCI7IGdvdG8gc2NyZXd1cDsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICBpZiAodGFy
Z2lzZGlyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjaGFyICpuYW1lYnVmOwog
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWMgaW50IGN1cnNpemU7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBuZWVkOwoKICAgICAgICAgICAgICAgICAgICAgICAgbmVlZCA9IHN0
cmxlbih0YXJnKSArIHN0cmxlbihjcCkgKyAyNTA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChuZWVkID4gY3Vyc2l6ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChu
YW1lYnVmKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGZyZWUobmFt
ZWJ1Zik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZWJ1ZiA9IHhtYWxsb2Mo
bmVlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc2l6ZSA9IG5lZWQ7CiAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHNu
cHJpbnRmKG5hbWVidWYsIG5lZWQsICIlcyVzJXMiLCB0YXJnLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RyY21wKHRhcmcsICIvIikgPyAiLyIgOiAiIiwgY3ApOwogICAgICAgICAgICAg
ICAgICAgICAgICBucCA9IG5hbWVidWY7CiAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgICAgbnAgPSB0YXJnOwogICAgICAgICAgICAgICAgY3VyZmlsZSA9IGNwOwog
ICAgICAgICAgICAgICAgZXhpc3RzID0gc3RhdChucCwgJnN0YikgPT0gMDsKICAgICAgICAgICAg
ICAgIGlmIChidWZbMF0gPT0gJ0QnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBtb2Rf
ZmxhZyA9IHBmbGFnOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhpc3RzKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoKHN0Yi5zdF9tb2RlICYgMDE3MDAwMCk9
PTAwNDAwMDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJu
byA9IDIwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBiYWQ7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChwZmxhZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICh2b2lkKSBjaG1vZChucCwgbW9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RfZmxhZyA9IDE7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1rZGlyKG5wLCBtb2RlIHwgMDAwMDcwMCkg
PCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBiYWQ7CiAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmVjdFswXSA9
IHhzdHJkdXAobnApOwogICAgICAgICAgICAgICAgICAgICAgICBzaW5rKDEsIHZlY3QpOwogICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoc2V0aW1lcykgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldGltZXMgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICh1dGltZXModmVjdFswXSwgdHYpIDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJ1bl9lcnIoIiVzOiBzZXQgdGltZXM6ICVzIiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0WzBdLCBzdHJlcnJvcihlcnJubykpOwogICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb2RfZmxh
ZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCkgY2htb2QodmVjdFswXSwg
bW9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZWN0WzBdKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHhmcmVlKHZlY3RbMF0pOwogICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9tb2RlID0gbW9k
ZTsKICAgICAgICAgICAgICAgIG1vZGUgfD0gMDAwMDIwMDsKICAgICAgICAgICAgICAgIGlmICgo
b2ZkID0gb3BlbihucCwgMDAwMDAwMXwwMDAwNDAwLCBtb2RlKSkgPCAwKSB7CmJhZDogcnVuX2Vy
cigiJXM6ICVzIiwgbnAsIHN0cmVycm9yKGVycm5vKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKHZvaWQpIGF0b21p
Y2lvKHdyaXRlLCByZW1vdXQsICIiLCAxKTsKICAgICAgICAgICAgICAgIGlmICgoYnAgPSBhbGxv
Y2J1ZigmYnVmZmVyLCBvZmQsIDQwOTYpKSA9PSAwTCkgewogICAgICAgICAgICAgICAgICAgICAg
ICAodm9pZCkgY2xvc2Uob2ZkKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjcCA9IGJwLT5idWY7CiAgICAgICAgICAg
ICAgICB3cmVyciA9IE5POwoKICAgICAgICAgICAgICAgIGlmIChzaG93cHJvZ3Jlc3MpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgdG90YWxieXRlcyA9IHNpemU7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHByb2dyZXNzbWV0ZXIoLTEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgc3RhdGJ5dGVzID0gMDsKICAgICAgICAgICAgICAgIGZvciAoY291bnQgPSBpID0gMDsgaSA8
IHNpemU7IGkgKz0gNDA5NikgewogICAgICAgICAgICAgICAgICAgICAgICBhbXQgPSA0MDk2Owog
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSArIGFtdCA+IHNpemUpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYW10ID0gc2l6ZSAtIGk7CiAgICAgICAgICAgICAgICAgICAgICAg
IGNvdW50ICs9IGFtdDsKICAgICAgICAgICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGogPSByZWFkKHJlbWluLCBjcCwgYW10KTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoaiA9PSAtMSAmJiAoZXJybm8gPT0gNCB8fAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJubyA9PSAxMSkpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoaiA8PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBydW5fZXJyKCIlcyIsIGogPyBzdHJlcnJvcihlcnJubykgOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkcm9wcGVkIGNvbm5lY3Rp
b24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQoMSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFtdCAtPSBqOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwICs9IGo7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGJ5dGVzICs9IGo7CiAgICAgICAg
ICAgICAgICAgICAgICAgIH0gd2hpbGUgKGFtdCA+IDApOwogICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoY291bnQgPT0gYnAtPmNudCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAod3JlcnIgPT0gTk8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGogPSBhdG9taWNpbyh3cml0ZSwgb2ZkLCBicC0+YnVmLCBjb3VudCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaiAhPSBjb3VudCkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmVyciA9IFlFUzsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JlcnJubyA9IGogPj0g
MCA/IDUgOiBlcnJubzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY291bnQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwID0g
YnAtPmJ1ZjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgaWYgKHNob3dwcm9ncmVzcykKICAgICAgICAgICAgICAgICAgICAgICAgcHJv
Z3Jlc3NtZXRlcigxKTsKICAgICAgICAgICAgICAgIGlmIChjb3VudCAhPSAwICYmIHdyZXJyID09
IE5PICYmCiAgICAgICAgICAgICAgICAgICAgKGogPSBhdG9taWNpbyh3cml0ZSwgb2ZkLCBicC0+
YnVmLCBjb3VudCkpICE9IGNvdW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdyZXJyID0g
WUVTOwogICAgICAgICAgICAgICAgICAgICAgICB3cmVycm5vID0gaiA+PSAwID8gNSA6IGVycm5v
OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGZ0cnVuY2F0ZShvZmQsIHNp
emUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9lcnIoIiVzOiB0cnVuY2F0ZTogJXMi
LCBucCwgc3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAgICAgICAgICAgICAgICAgd3JlcnIgPSBE
SVNQTEFZRUQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAocGZsYWcpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4aXN0cyB8fCBvbW9kZSAhPSBtb2RlKQoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmNobW9kKG9mZCwgb21vZGUpKQoKCgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuX2VycigiJXM6IHNldCBt
b2RlOiAlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnAs
IHN0cmVycm9yKGVycm5vKSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIWV4aXN0cyAmJiBvbW9kZSAhPSBtb2RlKQoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoZmNobW9kKG9mZCwgb21vZGUgJiB+bWFzaykpCgoKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5fZXJyKCIlczogc2V0IG1vZGU6
ICVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBucCwgc3Ry
ZXJyb3IoZXJybm8pKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChjbG9z
ZShvZmQpID09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdyZXJyID0gWUVTOwogICAg
ICAgICAgICAgICAgICAgICAgICB3cmVycm5vID0gZXJybm87CiAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAodm9pZCkgcmVzcG9uc2UoKTsKICAgICAgICAgICAgICAgIGlmIChzZXRp
bWVzICYmIHdyZXJyID09IE5PKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNldGltZXMgPSAw
OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodXRpbWVzKG5wLCB0dikgPCAwKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuX2VycigiJXM6IHNldCB0aW1lczogJXMiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBucCwgc3RyZXJyb3IoZXJybm8pKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmVyciA9IERJU1BMQVlFRDsKICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc3dp
dGNoICh3cmVycikgewogICAgICAgICAgICAgICAgY2FzZSBZRVM6CiAgICAgICAgICAgICAgICAg
ICAgICAgIHJ1bl9lcnIoIiVzOiAlcyIsIG5wLCBzdHJlcnJvcih3cmVycm5vKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSBOTzoKICAgICAgICAg
ICAgICAgICAgICAgICAgKHZvaWQpIGF0b21pY2lvKHdyaXRlLCByZW1vdXQsICIiLCAxKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIERJU1BMQVlF
RDoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgfQpzY3Jld3VwOgogICAgICAgIHJ1bl9lcnIoInByb3RvY29sIGVycm9yOiAlcyIsIHdoeSk7
CiAgICAgICAgZXhpdCgxKTsKfQoKaW50CnJlc3BvbnNlKHZvaWQpCnsKICAgICAgICBjaGFyIGNo
LCAqY3AsIHJlc3AsIHJidWZbMjA0OF07CgogICAgICAgIGlmIChhdG9taWNpbyhyZWFkLCByZW1p
biwgJnJlc3AsIHNpemVvZihyZXNwKSkgIT0gc2l6ZW9mKHJlc3ApKQogICAgICAgICAgICAgICAg
bG9zdGNvbm4oMCk7CgogICAgICAgIGNwID0gcmJ1ZjsKICAgICAgICBzd2l0Y2ggKHJlc3ApIHsK
ICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICByZXR1cm4gKDApOwogICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICAgICAqY3ArKyA9IHJlc3A7CgogICAgICAgIGNhc2UgMToKICAgICAg
ICBjYXNlIDI6CiAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChhdG9taWNpbyhyZWFkLCByZW1pbiwgJmNoLCBzaXplb2YoY2gpKSAhPSBzaXplb2YoY2gpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvc3Rjb25uKDApOwogICAgICAgICAgICAg
ICAgICAgICAgICAqY3ArKyA9IGNoOwogICAgICAgICAgICAgICAgfSB3aGlsZSAoY3AgPCAmcmJ1
ZltzaXplb2YocmJ1ZikgLSAxXSAmJiBjaCAhPSAnXG4nKTsKCiAgICAgICAgICAgICAgICBpZiAo
IWlhbXJlbW90ZSkKICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpIGF0b21pY2lvKHdyaXRl
LCAyLCByYnVmLCBjcCAtIHJidWYpOwogICAgICAgICAgICAgICAgKytlcnJzOwogICAgICAgICAg
ICAgICAgaWYgKHJlc3AgPT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgtMSk7
CiAgICAgICAgICAgICAgICBleGl0KDEpOwogICAgICAgIH0KCn0KCnZvaWQKdXNhZ2Uodm9pZCkK
ewogICAgICAgICh2b2lkKSBmcHJpbnRmKCgmX19pb2JbMl0pLAogICAgICAgICAgICAidXNhZ2U6
IHNjcCBbLXBxcnZCQzQ2XSBbLUYgY29uZmlnXSBbLVMgcHJvZ3JhbV0gWy1QIHBvcnRdXG4iCiAg
ICAgICAgICAgICIgICAgICAgICAgIFstYyBjaXBoZXJdIFstaSBpZGVudGl0eV0gWy1vIG9wdGlv
bl1cbiIKICAgICAgICAgICAgIiAgICAgICAgICAgW1t1c2VyQF1ob3N0MTpdZmlsZTEgWy4uLl0g
W1t1c2VyQF1ob3N0MjpdZmlsZTJcbiIpOwogICAgICAgIGV4aXQoMSk7Cn0KCnZvaWQKcnVuX2Vy
cihjb25zdCBjaGFyICpmbXQsLi4uKQp7CiAgICAgICAgc3RhdGljIEZJTEUgKmZwOwogICAgICAg
IHZhX2xpc3QgYXA7CgogICAgICAgICsrZXJyczsKICAgICAgICBpZiAoZnAgPT0gMEwgJiYgIShm
cCA9IGZkb3BlbihyZW1vdXQsICJ3IikpKQogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICh2b2lkKSBmcHJpbnRmKGZwLCAiJWMiLCAweDAxKTsKICAgICAgICAodm9pZCkgZnByaW50Zihm
cCwgInNjcDogIik7CiAgICAgICAgX19idWlsdGluX3N0ZGFyZ19zdGFydCgoYXApLGZtdCk7CiAg
ICAgICAgKHZvaWQpIHZmcHJpbnRmKGZwLCBmbXQsIGFwKTsKICAgICAgICBfX2J1aWx0aW5fdmFf
ZW5kKGFwKTsKICAgICAgICAodm9pZCkgZnByaW50ZihmcCwgIlxuIik7CiAgICAgICAgKHZvaWQp
IGZmbHVzaChmcCk7CgogICAgICAgIGlmICghaWFtcmVtb3RlKSB7CiAgICAgICAgICAgICAgICBf
X2J1aWx0aW5fc3RkYXJnX3N0YXJ0KChhcCksZm10KTsKICAgICAgICAgICAgICAgIHZmcHJpbnRm
KCgmX19pb2JbMl0pLCBmbXQsIGFwKTsKICAgICAgICAgICAgICAgIF9fYnVpbHRpbl92YV9lbmQo
YXApOwogICAgICAgICAgICAgICAgZnByaW50ZigoJl9faW9iWzJdKSwgIlxuIik7CiAgICAgICAg
fQp9Cgp2b2lkCnZlcmlmeWRpcihjcCkKICAgICAgICBjaGFyICpjcDsKewogICAgICAgIHN0cnVj
dCBzdGF0IHN0YjsKCiAgICAgICAgaWYgKCFzdGF0KGNwLCAmc3RiKSkgewogICAgICAgICAgICAg
ICAgaWYgKCgoc3RiLnN0X21vZGUgJiAwMTcwMDAwKT09MDA0MDAwMCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIGVycm5vID0gMjA7CiAgICAgICAgfQog
ICAgICAgIHJ1bl9lcnIoIiVzOiAlcyIsIGNwLCBzdHJlcnJvcihlcnJubykpOwogICAgICAgIGV4
aXQoMSk7Cn0KCmludApva25hbWUoY3AwKQogICAgICAgIGNoYXIgKmNwMDsKewogICAgICAgIGlu
dCBjOwogICAgICAgIGNoYXIgKmNwOwoKICAgICAgICBjcCA9IGNwMDsKICAgICAgICBkbyB7CiAg
ICAgICAgICAgICAgICBjID0gKGludCkqY3A7CiAgICAgICAgICAgICAgICBpZiAoYyAmIDAyMDAp
CiAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gYmFkOwogICAgICAgICAgICAgICAgaWYgKCEo
X19TQl9tYXNrcyA/IF9fU0JfbWFza3NbY10gJiAweDAwMSA6IF9pc2FscGhhKGMpKSAmJiAhKF9f
U0JfbWFza3MgPyBfX1NCX21hc2tzW2NdICYgMHgwMTAgOiBfaXNkaWdpdChjKSkgJiYKICAgICAg
ICAgICAgICAgICAgICBjICE9ICdfJyAmJiBjICE9ICctJyAmJiBjICE9ICcuJyAmJiBjICE9ICcr
JykKICAgICAgICAgICAgICAgICAgICAgICAgZ290byBiYWQ7CiAgICAgICAgfSB3aGlsZSAoKisr
Y3ApOwogICAgICAgIHJldHVybiAoMSk7CgpiYWQ6IGZwcmludGYoKCZfX2lvYlsyXSksICIlczog
aW52YWxpZCB1c2VyIG5hbWVcbiIsIGNwMCk7CiAgICAgICAgcmV0dXJuICgwKTsKfQoKQlVGICoK
YWxsb2NidWYoYnAsIGZkLCBibGtzaXplKQogICAgICAgIEJVRiAqYnA7CiAgICAgICAgaW50IGZk
LCBibGtzaXplOwp7CiAgICAgICAgc2l6ZV90IHNpemU7CgogICAgICAgIHN0cnVjdCBzdGF0IHN0
YjsKCiAgICAgICAgaWYgKGZzdGF0KGZkLCAmc3RiKSA8IDApIHsKICAgICAgICAgICAgICAgIHJ1
bl9lcnIoImZzdGF0OiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CiAgICAgICAgICAgICAgICByZXR1
cm4gKDApOwogICAgICAgIH0KICAgICAgICBpZiAoc3RiLnN0X2Jsa3NpemUgPT0gMCkKICAgICAg
ICAgICAgICAgIHNpemUgPSBibGtzaXplOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHNp
emUgPSBibGtzaXplICsgKHN0Yi5zdF9ibGtzaXplIC0gYmxrc2l6ZSAlIHN0Yi5zdF9ibGtzaXpl
KSAlCiAgICAgICAgICAgICAgICAgICAgc3RiLnN0X2Jsa3NpemU7CgoKCiAgICAgICAgaWYgKGJw
LT5jbnQgPj0gc2l6ZSkKICAgICAgICAgICAgICAgIHJldHVybiAoYnApOwogICAgICAgIGlmIChi
cC0+YnVmID09IDBMKQogICAgICAgICAgICAgICAgYnAtPmJ1ZiA9IHhtYWxsb2Moc2l6ZSk7CiAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgYnAtPmJ1ZiA9IHhyZWFsbG9jKGJwLT5idWYsIHNp
emUpOwogICAgICAgIG1lbXNldChicC0+YnVmLCAwLCBzaXplKTsKICAgICAgICBicC0+Y250ID0g
c2l6ZTsKICAgICAgICByZXR1cm4gKGJwKTsKfQoKdm9pZApsb3N0Y29ubihzaWdubykKICAgICAg
ICBpbnQgc2lnbm87CnsKICAgICAgICBpZiAoIWlhbXJlbW90ZSkKICAgICAgICAgICAgICAgIHdy
aXRlKDIsICJsb3N0IGNvbm5lY3Rpb25cbiIsIDE2KTsKICAgICAgICBpZiAoc2lnbm8pCiAgICAg
ICAgICAgICAgICBfZXhpdCgxKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBleGl0KDEp
Owp9CgpzdGF0aWMgdm9pZAp1cGRhdGVwcm9ncmVzc21ldGVyKGludCBpZ25vcmUpCnsKICAgICAg
ICBpbnQgc2F2ZV9lcnJubyA9IGVycm5vOwoKICAgICAgICBwcm9ncmVzc21ldGVyKDApOwogICAg
ICAgIHNpZ25hbCgxNCwgdXBkYXRlcHJvZ3Jlc3NtZXRlcik7CiAgICAgICAgYWxhcm0oMSk7CiAg
ICAgICAgZXJybm8gPSBzYXZlX2Vycm5vOwp9CgpzdGF0aWMgaW50CmZvcmVncm91bmRwcm9jKHZv
aWQpCnsKICAgICAgICBzdGF0aWMgcGlkX3QgcGdycCA9IC0xOwogICAgICAgIGludCBjdHR5X3Bn
cnA7CgogICAgICAgIGlmIChwZ3JwID09IC0xKQogICAgICAgICAgICAgICAgcGdycCA9IGdldHBn
cnAoKTsKCgogICAgICAgIHJldHVybiAoKGN0dHlfcGdycCA9IHRjZ2V0cGdycCgxKSkgIT0gLTEg
JiYKICAgICAgICAgICAgICAgIGN0dHlfcGdycCA9PSBwZ3JwKTsKCgoKCn0KCnZvaWQKcHJvZ3Jl
c3NtZXRlcihpbnQgZmxhZykKewogICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIHByZWZpeGVzW10g
PSAiIEtNR1RQIjsKICAgICAgICBzdGF0aWMgc3RydWN0IHRpbWV2YWwgbGFzdHVwZGF0ZTsKICAg
ICAgICBzdGF0aWMgb2ZmX3QgbGFzdHNpemU7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgbm93LCB0
ZCwgd2FpdDsKICAgICAgICBvZmZfdCBjdXJzaXplLCBhYmJyZXZzaXplOwogICAgICAgIGRvdWJs
ZSBlbGFwc2VkOwogICAgICAgIGludCByYXRpbywgYmFybGVuZ3RoLCBpLCByZW1haW5pbmc7CiAg
ICAgICAgY2hhciBidWZbNTEyXTsKCiAgICAgICAgaWYgKGZsYWcgPT0gLTEpIHsKICAgICAgICAg
ICAgICAgICh2b2lkKSBnZXR0aW1lb2ZkYXkoJnN0YXJ0LCAoc3RydWN0IHRpbWV6b25lICopIDAp
OwogICAgICAgICAgICAgICAgbGFzdHVwZGF0ZSA9IHN0YXJ0OwogICAgICAgICAgICAgICAgbGFz
dHNpemUgPSAwOwogICAgICAgIH0KICAgICAgICBpZiAoZm9yZWdyb3VuZHByb2MoKSA9PSAwKQog
ICAgICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICAodm9pZCkgZ2V0dGltZW9mZGF5KCZub3cs
IChzdHJ1Y3QgdGltZXpvbmUgKikgMCk7CiAgICAgICAgY3Vyc2l6ZSA9IHN0YXRieXRlczsKICAg
ICAgICBpZiAodG90YWxieXRlcyAhPSAwKSB7CiAgICAgICAgICAgICAgICByYXRpbyA9IDEwMC4w
ICogY3Vyc2l6ZSAvIHRvdGFsYnl0ZXM7CiAgICAgICAgICAgICAgICByYXRpbyA9ICgoKHJhdGlv
KT4oMCkpPyhyYXRpbyk6KDApKTsKICAgICAgICAgICAgICAgIHJhdGlvID0gKCgocmF0aW8pPCgx
MDApKT8ocmF0aW8pOigxMDApKTsKICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgIHJhdGlv
ID0gMTAwOwoKICAgICAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiXHIlLTIwLjIwcyAl
M2QlJSAiLCBjdXJmaWxlLCByYXRpbyk7CgogICAgICAgIGJhcmxlbmd0aCA9IGdldHR0eXdpZHRo
KCkgLSA1MTsKICAgICAgICBpZiAoYmFybGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgaSA9
IGJhcmxlbmd0aCAqIHJhdGlvIC8gMTAwOwogICAgICAgICAgICAgICAgc25wcmludGYoYnVmICsg
c3RybGVuKGJ1ZiksIHNpemVvZihidWYpIC0gc3RybGVuKGJ1ZiksCiAgICAgICAgICAgICAgICAg
ICAgInwlLipzJSpzfCIsIGksCiAgICAgICAgICAgICAgICAgICAgIioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCiAgICAgICAgICAgICAgICAg
ICAgIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioiCiAgICAgICAgICAgICAgICAgICAgIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioiCiAgICAgICAgICAgICAgICAgICAgIioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCiAgICAgICAgICAg
ICAgICAgICAgIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioiCiAgICAgICAgICAgICAgICAgICAgIioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCiAgICAgICAgICAgICAgICAgICAgIioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiLAogICAg
ICAgICAgICAgICAgICAgIGJhcmxlbmd0aCAtIGksICIiKTsKICAgICAgICB9CiAgICAgICAgaSA9
IDA7CiAgICAgICAgYWJicmV2c2l6ZSA9IGN1cnNpemU7CiAgICAgICAgd2hpbGUgKGFiYnJldnNp
emUgPj0gMTAwMDAwICYmIGkgPCBzaXplb2YocHJlZml4ZXMpKSB7CiAgICAgICAgICAgICAgICBp
Kys7CiAgICAgICAgICAgICAgICBhYmJyZXZzaXplID4+PSAxMDsKICAgICAgICB9CiAgICAgICAg
c25wcmludGYoYnVmICsgc3RybGVuKGJ1ZiksIHNpemVvZihidWYpIC0gc3RybGVuKGJ1ZiksICIg
JTVsdSAlYyVjICIsCiAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSBhYmJyZXZzaXplLCBwcmVm
aXhlc1tpXSwKICAgICAgICAgICAgcHJlZml4ZXNbaV0gPT0gJyAnID8gJyAnIDogJ0InKTsKCiAg
ICAgICAgZG8geyAoJndhaXQpLT50dl9zZWMgPSAoJm5vdyktPnR2X3NlYyAtICgmbGFzdHVwZGF0
ZSktPnR2X3NlYzsgKCZ3YWl0KS0+dHZfdXNlYyA9ICgmbm93KS0+dHZfdXNlYyAtICgmbGFzdHVw
ZGF0ZSktPnR2X3VzZWM7IGlmICgoJndhaXQpLT50dl91c2VjIDwgMCkgeyAtLSgmd2FpdCktPnR2
X3NlYzsgKCZ3YWl0KS0+dHZfdXNlYyArPSAxMDAwMDAwOyB9IH0gd2hpbGUgKDApOwogICAgICAg
IGlmIChjdXJzaXplID4gbGFzdHNpemUpIHsKICAgICAgICAgICAgICAgIGxhc3R1cGRhdGUgPSBu
b3c7CiAgICAgICAgICAgICAgICBsYXN0c2l6ZSA9IGN1cnNpemU7CiAgICAgICAgICAgICAgICBp
ZiAod2FpdC50dl9zZWMgPj0gNSkgewogICAgICAgICAgICAgICAgICAgICAgICBzdGFydC50dl9z
ZWMgKz0gd2FpdC50dl9zZWM7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LnR2X3VzZWMg
Kz0gd2FpdC50dl91c2VjOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgd2FpdC50
dl9zZWMgPSAwOwogICAgICAgIH0KICAgICAgICBkbyB7ICgmdGQpLT50dl9zZWMgPSAoJm5vdykt
PnR2X3NlYyAtICgmc3RhcnQpLT50dl9zZWM7ICgmdGQpLT50dl91c2VjID0gKCZub3cpLT50dl91
c2VjIC0gKCZzdGFydCktPnR2X3VzZWM7IGlmICgoJnRkKS0+dHZfdXNlYyA8IDApIHsgLS0oJnRk
KS0+dHZfc2VjOyAoJnRkKS0+dHZfdXNlYyArPSAxMDAwMDAwOyB9IH0gd2hpbGUgKDApOwogICAg
ICAgIGVsYXBzZWQgPSB0ZC50dl9zZWMgKyAodGQudHZfdXNlYyAvIDEwMDAwMDAuMCk7CgogICAg
ICAgIGlmIChmbGFnICE9IDEgJiYKICAgICAgICAgICAgKHN0YXRieXRlcyA8PSAwIHx8IGVsYXBz
ZWQgPD0gMC4wIHx8IGN1cnNpemUgPiB0b3RhbGJ5dGVzKSkgewogICAgICAgICAgICAgICAgc25w
cmludGYoYnVmICsgc3RybGVuKGJ1ZiksIHNpemVvZihidWYpIC0gc3RybGVuKGJ1ZiksCiAgICAg
ICAgICAgICAgICAgICAgIiAgIC0tOi0tIEVUQSIpOwogICAgICAgIH0gZWxzZSBpZiAod2FpdC50
dl9zZWMgPj0gNSkgewogICAgICAgICAgICAgICAgc25wcmludGYoYnVmICsgc3RybGVuKGJ1Ziks
IHNpemVvZihidWYpIC0gc3RybGVuKGJ1ZiksCiAgICAgICAgICAgICAgICAgICAgIiAtIHN0YWxs
ZWQgLSIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoZmxhZyAhPSAxKQog
ICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcgPSAoaW50KSh0b3RhbGJ5dGVzIC8gKHN0
YXRieXRlcyAvIGVsYXBzZWQpIC0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWQp
OwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcg
PSBlbGFwc2VkOwoKICAgICAgICAgICAgICAgIGkgPSByZW1haW5pbmcgLyAzNjAwOwogICAgICAg
ICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICAgICAgICAgICAgIHNucHJpbnRmKGJ1ZiArIHN0
cmxlbihidWYpLCBzaXplb2YoYnVmKSAtIHN0cmxlbihidWYpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiUyZDoiLCBpKTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICAgICAgICAgc25wcmludGYoYnVmICsgc3RybGVuKGJ1ZiksIHNpemVvZihidWYpIC0gc3RybGVu
KGJ1ZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIik7CiAgICAgICAgICAgICAg
ICBpID0gcmVtYWluaW5nICUgMzYwMDsKICAgICAgICAgICAgICAgIHNucHJpbnRmKGJ1ZiArIHN0
cmxlbihidWYpLCBzaXplb2YoYnVmKSAtIHN0cmxlbihidWYpLAogICAgICAgICAgICAgICAgICAg
ICIlMDJkOiUwMmQlcyIsIGkgLyA2MCwgaSAlIDYwLAogICAgICAgICAgICAgICAgICAgIChmbGFn
ICE9IDEpID8gIiBFVEEiIDogIiAgICAiKTsKICAgICAgICB9CiAgICAgICAgYXRvbWljaW8od3Jp
dGUsIGZpbGVubygoJl9faW9iWzFdKSksIGJ1Ziwgc3RybGVuKGJ1ZikpOwoKICAgICAgICBpZiAo
ZmxhZyA9PSAtMSkgewogICAgICAgICAgICAgICAgbXlzaWduYWwoMTQsIHVwZGF0ZXByb2dyZXNz
bWV0ZXIpOwogICAgICAgICAgICAgICAgYWxhcm0oMSk7CiAgICAgICAgfSBlbHNlIGlmIChmbGFn
ID09IDEpIHsKICAgICAgICAgICAgICAgIGFsYXJtKDApOwogICAgICAgICAgICAgICAgYXRvbWlj
aW8od3JpdGUsIGZpbGVubygoJl9faW9iWzFdKSksICJcbiIsIDEpOwogICAgICAgICAgICAgICAg
c3RhdGJ5dGVzID0gMDsKICAgICAgICB9Cn0KCmludApnZXR0dHl3aWR0aCh2b2lkKQp7CiAgICAg
ICAgc3RydWN0IHdpbnNpemUgd2luc2l6ZTsKCiAgICAgICAgaWYgKGlvY3RsKGZpbGVubygoJl9f
aW9iWzFdKSksICgoaW50KSgweDQwMDAwMDAwfCgoKGludClzaXplb2Yoc3RydWN0IHdpbnNpemUp
JigweDFmZmYwMDAwPj4xNikpPDwxNil8KCgndCcpPDw4KXwxMDcpKSwgJndpbnNpemUpICE9IC0x
KQogICAgICAgICAgICAgICAgcmV0dXJuICh3aW5zaXplLndzX2NvbCA/IHdpbnNpemUud3NfY29s
IDogODApOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHJldHVybiAoODApOwp9Cg==


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