c/2420: Internal compiler error received compiling mkreiserfs.c

mark.post@eds.com mark.post@eds.com
Wed Mar 28 13:46:00 GMT 2001


>Number:         2420
>Category:       c
>Synopsis:       Internal compiler error received compiling mkreiserfs.c
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Mar 28 13:46:01 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     Mark Post
>Release:        gcc version 2.95.2 19991024 (release)
>Organization:
>Environment:
Slackware-like Linux/390 on IBM mainframe.
>Description:
Was attempting to compile reiserfs_utils-3.6.25-fsck-3.x.0b,
and the compile died on the first module, mkreiserfs.c.

The generated command to perform the compilation was:
cc -Wall -c -O2 -g -I/tmp/build-reiserfs-3.6.25-s390-1/reiserfs_utils-3.6.25-fsck-3.x.0b/utils/include -I/tmp/build-reiserfs-3.6.25-s390-1/reiserfs_utils-3.6.25-fsck-3.x.0b/utils/../../../include/linux -I- mkreiserfs.c

The output from the command was:
mkreiserfs.c: In function `make_root_block':
mkreiserfs.c:261: invalid lvalue in assignment
mkreiserfs.c:261: invalid lvalue in assignment
mkreiserfs.c:277: Internal compiler error in `emit_no_conflict_block', at optabs.c:2798
Please submit a full bug report.
See <URL: http://www.gnu.org/software/gcc/faq.html#bugreport > for instructions.
make[2]: *** [mkreiserfs.o] Error 1
make[2]: Leaving directory `/tmp/build-reiserfs-3.6.25-s390-1/reiserfs_utils-3.6.25-fsck-3.x.0b/utils/mkreiserfs'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/tmp/build-reiserfs-3.6.25-s390-1/reiserfs_utils-3.6.25-fsck-3.x.0b/utils'
make: *** [all] Error 2

It fails consistently.
>How-To-Repeat:
Unpack the source code to /tmp
cd reiserfs_utils-3.6.25-fsck-3.x.0b/
make

That should do it (if you have an S/390).
>Fix:

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

IyAxICJta3JlaXNlcmZzLmMiCiAKCgoKIAoKCgogCgojIDEgIi91c3IvaW5jbHVkZS9zdGRpby5o
IiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1
cmVzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoK
CiAKCgoKCgogCgoKCiAKCgoKCgoKCiAKIyAxMzggIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAz
CgoKIAoKCgoKCgoKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDE5NiAi
L3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiAKCgoKIAoKCgoKCgoKCiAKCgoKCiAKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5o
IiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiAKCgoKCgogCgoKCgoKCgoKIAoKCgoK
IyA3MSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzCgoKIAoKCgoKCgoKIAoKCgojIDEwMyAi
L3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzCgoKCiAKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoK
CiAKCgoKCgoKCgogCgoKCgoKCgoKIAoKCgoKCgoKCgogCgoKCgoKCgojIDI1MCAiL3Vzci9pbmNs
dWRlL2ZlYXR1cmVzLmgiIDIgMwoKCiAKCgoKCgoKCgogCgoKCgoKIAoKIAoKCgoKCgoKCiMgMSAi
L3Vzci9pbmNsdWRlL2dudS9zdHVicy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMg
Mjc4ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCgoKCgojIDI3ICIvdXNyL2luY2x1ZGUv
c3RkaW8uaCIgMiAzCgoKIAoKCgojIDEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUt
bGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9s
aWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIg
MwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJl
LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCiAKCiAKCiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJl
LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBsb25nIHVuc2lnbmVkIGludCBzaXplX3Q7CgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgogCgojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNs
YWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiMgMjgzICIvdXNyL2xp
Yi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAz
CgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45
NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAzMyAi
L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkw
LXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMg
MSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS92
YS1zMzkwLmgiIDEgMwogCgoKCgp0eXBlZGVmIHN0cnVjdCBfX3ZhX2xpc3RfdGFnIHsKICBpbnQg
Z3ByOyAgICAgICAgICAgICAgICAgICAgICAgCgoKICBpbnQgZnByOyAgICAgICAgICAgICAgICAg
ICAgICAgCgoKICBjaGFyICppbmNvbWluZ19hcmdzX2FyZWE7ICAgICAgCgogIGNoYXIgKnJlZ19z
YXZlX2FyZWE7ICAgICAgICAgICAKCn0gX19nbnVjX3ZhX2xpc3RbMV0sKl9fZ251Y192YV9saXN0
cDsKCgogCgojIDE2NiAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1
LjIvaW5jbHVkZS92YS1zMzkwLmgiIDMKCgojIDY2ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xh
Y2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGFyZy5oIiAyIDMKCiMgMTI3ICIvdXNyL2xp
Yi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGFyZy5oIiAz
CgoKCgoKCgoKCgoKCgoKCgoKCgojIDIxMyAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2Fy
ZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRhcmcuaCIgMwoKCgoKIyAzOCAiL3Vzci9pbmNsdWRl
L3N0ZGlvLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiAKCgoK
CgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNr
d2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIv
dXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRl
Zi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFj
a3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoK
CgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFj
a3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAxODggIi91
c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVm
LmgiIDMKCgoKCgogCgoKCgogCgojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2Fy
ZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiMgMjgzICIvdXNyL2xpYi9nY2Mt
bGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoK
IAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2lu
Y2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAyOSAiL3Vzci9p
bmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCgoKIAp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191X2No
YXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGlu
dCBfX3VfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX191X2xvbmc7CgpfX2V4dGVuc2lvbl9f
IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VfcXVhZF90OwpfX2V4dGVuc2lvbl9f
IHR5cGVkZWYgbG9uZyBsb25nIGludCBfX3F1YWRfdDsKIyA0OCAiL3Vzci9pbmNsdWRlL2JpdHMv
dHlwZXMuaCIgMwoKdHlwZWRlZiBzaWduZWQgY2hhciBfX2ludDhfdDsKdHlwZWRlZiB1bnNpZ25l
ZCBjaGFyIF9fdWludDhfdDsKdHlwZWRlZiBzaWduZWQgc2hvcnQgaW50IF9faW50MTZfdDsKdHlw
ZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX191aW50MTZfdDsKdHlwZWRlZiBzaWduZWQgaW50IF9f
aW50MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191aW50MzJfdDsKCl9fZXh0ZW5zaW9uX18g
dHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIGludCBfX2ludDY0X3Q7Cl9fZXh0ZW5zaW9uX18gdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdWludDY0X3Q7Cgp0eXBlZGVmIF9fcXVhZF90
ICpfX3FhZGRyX3Q7Cgp0eXBlZGVmIF9fdV9xdWFkX3QgX19kZXZfdDsJCSAKdHlwZWRlZiBfX3Vf
aW50IF9fdWlkX3Q7CQkgCnR5cGVkZWYgX191X2ludCBfX2dpZF90OwkJIAp0eXBlZGVmIF9fdV9s
b25nIF9faW5vX3Q7CQkgCnR5cGVkZWYgX191X2ludCBfX21vZGVfdDsJCSAKdHlwZWRlZiBfX3Vf
aW50IF9fbmxpbmtfdDsgCQkgCnR5cGVkZWYgbG9uZyBpbnQgX19vZmZfdDsJCSAKdHlwZWRlZiBf
X3F1YWRfdCBfX2xvZmZfdDsJCSAKdHlwZWRlZiBpbnQgX19waWRfdDsJCQkgCnR5cGVkZWYgaW50
IF9fc3NpemVfdDsJCQkgCnR5cGVkZWYgX191X2xvbmcgX19ybGltX3Q7CQkgCnR5cGVkZWYgX191
X3F1YWRfdCBfX3JsaW02NF90OwkJIAp0eXBlZGVmIF9fdV9pbnQgX19pZF90OwkJCSAKCnR5cGVk
ZWYgc3RydWN0CiAgewogICAgaW50IF9fdmFsWzJdOwogIH0gX19mc2lkX3Q7CQkJCSAKCiAKdHlw
ZWRlZiBpbnQgX19kYWRkcl90OwkJCSAKdHlwZWRlZiBjaGFyICpfX2NhZGRyX3Q7CnR5cGVkZWYg
bG9uZyBpbnQgX190aW1lX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19zd2Jsa190OwkJIAoMCnR5cGVk
ZWYgbG9uZyBpbnQgX19jbG9ja190OwoKIAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fZmRf
bWFzazsKCiAKCgogCgoKCgogCnR5cGVkZWYgc3RydWN0CiAgewogICAgIAoKCgoKCiAgICBfX2Zk
X21hc2sgX19mZHNfYml0c1sxMDI0ICAvICg4ICogc2l6ZW9mIChfX2ZkX21hc2spKSBdOwoKCiAg
fSBfX2ZkX3NldDsKCgp0eXBlZGVmIGludCBfX2tleV90OwoKIAp0eXBlZGVmIHVuc2lnbmVkIHNo
b3J0IGludCBfX2lwY19waWRfdDsKCgogCgogCnR5cGVkZWYgbG9uZyBpbnQgX19ibGtjbnRfdDsK
dHlwZWRlZiBfX3F1YWRfdCBfX2Jsa2NudDY0X3Q7CgogCnR5cGVkZWYgX191X2xvbmcgX19mc2Js
a2NudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2Jsa2NudDY0X3Q7CgogCnR5cGVkZWYgX191
X2xvbmcgX19mc2ZpbGNudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2ZpbGNudDY0X3Q7Cgog
CnR5cGVkZWYgX191X2xvbmcgX19pbm82NF90OwoKIAp0eXBlZGVmIF9fbG9mZl90IF9fb2ZmNjRf
dDsKCiAKdHlwZWRlZiBsb25nIGludCBfX3Rfc2NhbGFyX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9u
ZyBpbnQgX190X3VzY2FsYXJfdDsKCiAKdHlwZWRlZiBpbnQgX19pbnRwdHJfdDsKCgogCgoKCgoK
IyA0MCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKCgoKIAp0eXBlZGVmIHN0cnVjdCBf
SU9fRklMRSBGSUxFOwoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDEgMwogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIg
MSAzCiAKCgoKCgogCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1s
aW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xp
Yi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAz
CgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUt
bGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUt
bGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAxODggIi91c3IvbGli
L2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMK
CgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCnR5cGVkZWYgbG9uZyBpbnQgd2NoYXJfdDsKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgIHdpbnRfdDsKCgoKCiAKCiAKCiMgMzE3ICIvdXNy
L2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5o
IiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMTQgIi91c3IvaW5jbHVkZS9fR19jb25m
aWcuaCIgMiAzCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgaW50IF9HX2ludDE2X3QgX19h
dHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IF9HX2ludDMyX3Qg
X19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50
IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVm
IHVuc2lnbmVkIGludCBfR191aW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lf
XykpKTsKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKIAoKCgoKCgoKCgoKCgoKCiMgMzAg
Ii91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKCgoKCgoKCgoKCgoKCgoKCiAKCiMgMSAiL3Vzci9s
aWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRhcmcuaCIg
MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8y
Ljk1LjIvaW5jbHVkZS92YS1zMzkwLmgiIDEgMwogCgojIDE4ICIvdXNyL2xpYi9nY2MtbGliL3Mz
OTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3ZhLXMzOTAuaCIgMwoKCiAKCiMgMTY2
ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3Zh
LXMzOTAuaCIgMwoKCiMgNjYgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgv
Mi45NS4yL2luY2x1ZGUvc3RkYXJnLmgiIDIgMwoKIyAxMjcgIi91c3IvbGliL2djYy1saWIvczM5
MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkYXJnLmgiIDMKCgoKCgoKCgoKCgoK
CgoKCgoKCiMgMjEzICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUu
Mi9pbmNsdWRlL3N0ZGFyZy5oIiAzCgoKCgojIDQ4ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAz
CgoKCgoKCgojIDY3ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwoKCiAKCgoKCgoKCgoKCgoKCgoK
CgojIDk4ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKc3RydWN0IF9JT19qdW1wX3Q7ICBzdHJ1
Y3QgX0lPX0ZJTEU7CgogCgoKCgoKCgp0eXBlZGVmIHZvaWQgX0lPX2xvY2tfdDsKCgoKIAoKc3Ry
dWN0IF9JT19tYXJrZXIgewogIHN0cnVjdCBfSU9fbWFya2VyICpfbmV4dDsKICBzdHJ1Y3QgX0lP
X0ZJTEUgKl9zYnVmOwogICAKCiAgIAogIGludCBfcG9zOwojIDE4NiAiL3Vzci9pbmNsdWRlL2xp
YmlvLmgiIDMKCn07CgpzdHJ1Y3QgX0lPX0ZJTEUgewogIGludCBfZmxhZ3M7CQkgCgoKICAgCiAg
IAogIGNoYXIqIF9JT19yZWFkX3B0cjsJIAogIGNoYXIqIF9JT19yZWFkX2VuZDsJIAogIGNoYXIq
IF9JT19yZWFkX2Jhc2U7CSAKICBjaGFyKiBfSU9fd3JpdGVfYmFzZTsJIAogIGNoYXIqIF9JT193
cml0ZV9wdHI7CSAKICBjaGFyKiBfSU9fd3JpdGVfZW5kOwkgCiAgY2hhciogX0lPX2J1Zl9iYXNl
OwkgCiAgY2hhciogX0lPX2J1Zl9lbmQ7CSAKICAgCiAgY2hhciAqX0lPX3NhdmVfYmFzZTsgIAog
IGNoYXIgKl9JT19iYWNrdXBfYmFzZTsgICAKICBjaGFyICpfSU9fc2F2ZV9lbmQ7ICAKCiAgc3Ry
dWN0IF9JT19tYXJrZXIgKl9tYXJrZXJzOwoKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9jaGFpbjsKCiAg
aW50IF9maWxlbm87CiAgaW50IF9ibGtzaXplOwogIF9fb2ZmX3QgICBfb2xkX29mZnNldDsgIAoK
CiAgIAogIHVuc2lnbmVkIHNob3J0IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVf
b2Zmc2V0OwogIGNoYXIgX3Nob3J0YnVmWzFdOwoKICAgCgogIF9JT19sb2NrX3QgKl9sb2NrOwoK
CgoKCgoKCiAgX19vZmY2NF90ICAgX29mZnNldDsKICAgCiAgaW50IF91bnVzZWQyWzE2XTsKCn07
CgoKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgX0lPX0ZJTEU7CgoKc3RydWN0IF9JT19GSUxFX3Bs
dXM7CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGluXzsKZXh0ZXJuIHN0
cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3Rkb3V0XzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklM
RV9wbHVzIF9JT18yXzFfc3RkZXJyXzsKCgoKCgoKCgoKCgogCgogCgp0eXBlZGVmIF9fc3NpemVf
dCBfX2lvX3JlYWRfZm4gICh2b2lkICogIF9fY29va2llLCBjaGFyICpfX2J1ZiwKCQkJCSAgICAg
ICBzaXplX3QgX19uYnl0ZXMpICA7CgogCgoKCgoKdHlwZWRlZiBfX3NzaXplX3QgX19pb193cml0
ZV9mbiAgKHZvaWQgKiAgX19jb29raWUsIF9fY29uc3QgY2hhciAqX19idWYsCgkJCQkgICAgICBz
aXplX3QgX19uKSAgOwoKIAoKCgoKCnR5cGVkZWYgaW50IF9faW9fc2Vla19mbiAgKHZvaWQgKiAg
X19jb29raWUsIF9fb2ZmX3QgICBfX3BvcywgaW50IF9fdykgIDsKCiAKdHlwZWRlZiBpbnQgX19p
b19jbG9zZV9mbiAgKHZvaWQgKiAgX19jb29raWUpICA7CgoKIyAzMTEgIi91c3IvaW5jbHVkZS9s
aWJpby5oIiAzCgoKCgoKCgpleHRlcm4gaW50IF9fdW5kZXJmbG93ICAoX0lPX0ZJTEUgKikgICAg
OwpleHRlcm4gaW50IF9fdWZsb3cgIChfSU9fRklMRSAqKSAgICA7CmV4dGVybiBpbnQgX19vdmVy
ZmxvdyAgKF9JT19GSUxFICosIGludCkgICAgOwoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuIGludCBf
SU9fZ2V0YyAgKF9JT19GSUxFICpfX2ZwKSAgICA7CmV4dGVybiBpbnQgX0lPX3B1dGMgIChpbnQg
X19jLCBfSU9fRklMRSAqX19mcCkgICAgOwpleHRlcm4gaW50IF9JT19mZW9mICAoX0lPX0ZJTEUg
Kl9fZnApICAgIDsKZXh0ZXJuIGludCBfSU9fZmVycm9yICAoX0lPX0ZJTEUgKl9fZnApICAgIDsK
CmV4dGVybiBpbnQgX0lPX3BlZWtjX2xvY2tlZCAgKF9JT19GSUxFICpfX2ZwKSAgICA7CgogCgoK
CmV4dGVybiB2b2lkIF9JT19mbG9ja2ZpbGUgIChfSU9fRklMRSAqKSAgICA7CmV4dGVybiB2b2lk
IF9JT19mdW5sb2NrZmlsZSAgKF9JT19GSUxFICopICAgIDsKZXh0ZXJuIGludCBfSU9fZnRyeWxv
Y2tmaWxlICAoX0lPX0ZJTEUgKikgICAgOwoKCgoKCgoKCgoKCgpleHRlcm4gaW50IF9JT192ZnNj
YW5mICAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwKCQkJ
ICAgICBfX2dudWNfdmFfbGlzdCAsIGludCAqX19yZXN0cmljdCkgICAgOwpleHRlcm4gaW50IF9J
T192ZnByaW50ZiAgKF9JT19GSUxFICpfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0
LAoJCQkgICAgICBfX2dudWNfdmFfbGlzdCApICAgIDsKZXh0ZXJuIF9fc3NpemVfdCAgIF9JT19w
YWRuICAoX0lPX0ZJTEUgKiwgaW50LCBfX3NzaXplX3QgICkgICAgOwpleHRlcm4gc2l6ZV90ICAg
X0lPX3NnZXRuICAoX0lPX0ZJTEUgKiwgdm9pZCAqLCBzaXplX3QgICkgICAgOwoKZXh0ZXJuIF9f
b2ZmNjRfdCAgIF9JT19zZWVrb2ZmICAoX0lPX0ZJTEUgKiwgX19vZmY2NF90ICAsIGludCwgaW50
KSAgICA7CmV4dGVybiBfX29mZjY0X3QgICBfSU9fc2Vla3BvcyAgKF9JT19GSUxFICosIF9fb2Zm
NjRfdCAgLCBpbnQpICAgIDsKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVhICAoX0lP
X0ZJTEUgKikgICAgOwoKCgoKCgojIDU3ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKIAoK
dHlwZWRlZiBfX29mZl90ICBmcG9zX3Q7CgoKCgoKCgogCgoKCgoKIAoKCgoKCiAKCgoKCgoKIAoK
CgoKCgoKIAoKCgoKIAoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW9fbGltLmgi
IDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMTEwICIvdXNyL2lu
Y2x1ZGUvc3RkaW8uaCIgMiAzCgoKCiAKZXh0ZXJuIEZJTEUgKnN0ZGluOwkJIApleHRlcm4gRklM
RSAqc3Rkb3V0OwkJIApleHRlcm4gRklMRSAqc3RkZXJyOwkJIAogCgoKCgoKIApleHRlcm4gaW50
IHJlbW92ZSAgKF9fY29uc3QgY2hhciAqX19maWxlbmFtZSkgICAgOwogCmV4dGVybiBpbnQgcmVu
YW1lICAoX19jb25zdCBjaGFyICpfX29sZCwgX19jb25zdCBjaGFyICpfX25ldykgICAgOwoKCiAK
CmV4dGVybiBGSUxFICp0bXBmaWxlICAodm9pZCkgICAgOwoKCgoKCgoKCgoKIApleHRlcm4gY2hh
ciAqdG1wbmFtICAoY2hhciAqX19zKSAgICA7CgoKIAoKZXh0ZXJuIGNoYXIgKnRtcG5hbV9yICAo
Y2hhciAqX19zKSAgICA7CgoKCgogCgoKCgoKCmV4dGVybiBjaGFyICp0ZW1wbmFtICAoX19jb25z
dCBjaGFyICpfX2RpciwgX19jb25zdCBjaGFyICpfX3BmeCkgICAgOwoKCgogCmV4dGVybiBpbnQg
ZmNsb3NlICAoRklMRSAqX19zdHJlYW0pICAgIDsKIApleHRlcm4gaW50IGZmbHVzaCAgKEZJTEUg
Kl9fc3RyZWFtKSAgICA7CgoKIApleHRlcm4gaW50IGZmbHVzaF91bmxvY2tlZCAgKEZJTEUgKl9f
c3RyZWFtKSAgICA7CgoKCgoKCgoKCiAKZXh0ZXJuIEZJTEUgKmZvcGVuICAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCgkJCSBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19t
b2RlcykgICAgOwogCmV4dGVybiBGSUxFICpmcmVvcGVuICAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZmlsZW5hbWUsCgkJCSAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzLAoJ
CQkgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSAgICA7CiMgMjAxICIvdXNyL2luY2x1ZGUv
c3RkaW8uaCIgMwoKCgoKCgoKCgoKIApleHRlcm4gRklMRSAqZmRvcGVuICAoaW50IF9fZmQsIF9f
Y29uc3QgY2hhciAqX19tb2RlcykgICAgOwoKCiMgMjI3ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg
MwoKCgogCgpleHRlcm4gdm9pZCBzZXRidWYgIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBj
aGFyICpfX3Jlc3RyaWN0IF9fYnVmKSAgICA7CiAKCgpleHRlcm4gaW50IHNldHZidWYgIChGSUxF
ICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAoJCQkgaW50IF9f
bW9kZXMsIHNpemVfdCBfX24pICAgIDsKCgogCgpleHRlcm4gdm9pZCBzZXRidWZmZXIgIChGSUxF
ICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAoJCQkgICAgc2l6
ZV90IF9fc2l6ZSkgICAgOwoKIApleHRlcm4gdm9pZCBzZXRsaW5lYnVmICAoRklMRSAqX19zdHJl
YW0pICAgIDsKCgoKIApleHRlcm4gaW50IGZwcmludGYgIChGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry
ZWFtLAoJCQkgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pICAgIDsKIApl
eHRlcm4gaW50IHByaW50ZiAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4u
KSAgICA7CiAKZXh0ZXJuIGludCBzcHJpbnRmICAoY2hhciAqX19yZXN0cmljdCBfX3MsCgkJCSBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgICAgOwoKIApleHRlcm4gaW50
IHZmcHJpbnRmICAoRklMRSAqX19yZXN0cmljdCBfX3MsCgkJCSAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LAoJCQkgIF9fZ251Y192YV9saXN0ICBfX2FyZykgICAgOwogCmV4dGVy
biBpbnQgdnByaW50ZiAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKCQkJIF9f
Z251Y192YV9saXN0ICBfX2FyZykgICAgOwogCmV4dGVybiBpbnQgdnNwcmludGYgIChjaGFyICpf
X3Jlc3RyaWN0IF9fcywKCQkJICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCgkJ
CSAgX19nbnVjX3ZhX2xpc3QgIF9fYXJnKSAgICA7CgoKIApleHRlcm4gaW50IHNucHJpbnRmICAo
Y2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKCQkJICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgICAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9y
bWF0X18gKF9fcHJpbnRmX18sIDMsIDQpKSk7CgpleHRlcm4gaW50IF9fdnNucHJpbnRmICAoY2hh
ciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKCQkJICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19mb3JtYXQsCgkJCSAgICAgX19nbnVjX3ZhX2xpc3QgIF9fYXJnKSAgICAK
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgMCkpKTsKZXh0
ZXJuIGludCB2c25wcmludGYgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVu
LAoJCQkgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCgkJCSAgIF9fZ251Y192
YV9saXN0ICBfX2FyZykgICAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJp
bnRmX18sIDMsIDApKSk7CgoKIyAzMDYgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCgoKCiAKZXh0
ZXJuIGludCBmc2NhbmYgIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAoJCQlfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgICAgOwogCmV4dGVybiBpbnQgc2NhbmYgIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgICAgOwogCmV4dGVybiBpbnQg
c3NjYW5mICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKCQkJX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pICAgIDsKCiMgMzM0ICIvdXNyL2luY2x1ZGUvc3RkaW8u
aCIgMwoKCgogCmV4dGVybiBpbnQgZmdldGMgIChGSUxFICpfX3N0cmVhbSkgICAgOwpleHRlcm4g
aW50IGdldGMgIChGSUxFICpfX3N0cmVhbSkgICAgOwoKIApleHRlcm4gaW50IGdldGNoYXIgICh2
b2lkKSAgICA7CgogCgoKCgogCmV4dGVybiBpbnQgZ2V0Y191bmxvY2tlZCAgKEZJTEUgKl9fc3Ry
ZWFtKSAgICA7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCAgKHZvaWQpICAgIDsKCgoKIApl
eHRlcm4gaW50IGZnZXRjX3VubG9ja2VkICAoRklMRSAqX19zdHJlYW0pICAgIDsKCgoKIApleHRl
cm4gaW50IGZwdXRjICAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pICAgIDsKZXh0ZXJuIGludCBw
dXRjICAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pICAgIDsKCiAKZXh0ZXJuIGludCBwdXRjaGFy
ICAoaW50IF9fYykgICAgOwoKIAoKCgoKIApleHRlcm4gaW50IGZwdXRjX3VubG9ja2VkICAoaW50
IF9fYywgRklMRSAqX19zdHJlYW0pICAgIDsKCgoKIApleHRlcm4gaW50IHB1dGNfdW5sb2NrZWQg
IChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgICAgOwpleHRlcm4gaW50IHB1dGNoYXJfdW5sb2Nr
ZWQgIChpbnQgX19jKSAgICA7CgoKCgogCmV4dGVybiBpbnQgZ2V0dyAgKEZJTEUgKl9fc3RyZWFt
KSAgICA7CgogCmV4dGVybiBpbnQgcHV0dyAgKGludCBfX3csIEZJTEUgKl9fc3RyZWFtKSAgICA7
CgoKCiAKZXh0ZXJuIGNoYXIgKmZnZXRzICAoY2hhciAqX19yZXN0cmljdCBfX3MsIGludCBfX24s
CgkJCSBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSAgICA7CgoKCgoKCgogCgpleHRlcm4gY2hh
ciAqZ2V0cyAgKGNoYXIgKl9fcykgICAgOwoKCiMgNDI0ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg
MwoKCgogCmV4dGVybiBpbnQgZnB1dHMgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAoJ
CSAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSAgICA7CgoKCgoKCgogCmV4dGVybiBp
bnQgcHV0cyAgKF9fY29uc3QgY2hhciAqX19zKSAgICA7CgoKIApleHRlcm4gaW50IHVuZ2V0YyAg
KGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSAgICA7CgoKIApleHRlcm4gc2l6ZV90IGZyZWFkICAo
dm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKCQkJICBzaXplX3QgX19uLCBG
SUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSAgICA7CiAKZXh0ZXJuIHNpemVfdCBmd3JpdGUgIChf
X2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCgkJCSAgIHNpemVf
dCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zKSAgICA7CgoKIApleHRlcm4gc2l6ZV90IGZyZWFk
X3VubG9ja2VkICAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKCQkJCSAg
IHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pICAgIDsKZXh0ZXJuIHNpemVf
dCBmd3JpdGVfdW5sb2NrZWQgIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsCgkJCQkg
ICAgc2l6ZV90IF9fc2l6ZSwgc2l6ZV90IF9fbiwKCQkJCSAgICBGSUxFICpfX3Jlc3RyaWN0IF9f
c3RyZWFtKSAgICA7CgoKCiAKZXh0ZXJuIGludCBmc2VlayAgKEZJTEUgKl9fc3RyZWFtLCBsb25n
IGludCBfX29mZiwgaW50IF9fd2hlbmNlKSAgICA7CiAKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsICAo
RklMRSAqX19zdHJlYW0pICAgIDsKIApleHRlcm4gdm9pZCByZXdpbmQgIChGSUxFICpfX3N0cmVh
bSkgICAgOwoKIAoKCgoKIAoKCnR5cGVkZWYgX19vZmZfdCBvZmZfdDsKCgoKCgoKCgoKCgoKCgoK
CgoKCgogCmV4dGVybiBpbnQgZmdldHBvcyAgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCgkJ
CSBmcG9zX3QgKl9fcmVzdHJpY3QgX19wb3MpICAgIDsKIApleHRlcm4gaW50IGZzZXRwb3MgIChG
SUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9zX3QgKl9fcG9zKSAgICA7CiMgNTIzICIvdXNyL2lu
Y2x1ZGUvc3RkaW8uaCIgMwoKCiMgNTMzICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwoKCiAKZXh0
ZXJuIHZvaWQgY2xlYXJlcnIgIChGSUxFICpfX3N0cmVhbSkgICAgOwogCmV4dGVybiBpbnQgZmVv
ZiAgKEZJTEUgKl9fc3RyZWFtKSAgICA7CiAKZXh0ZXJuIGludCBmZXJyb3IgIChGSUxFICpfX3N0
cmVhbSkgICAgOwoKCiAKZXh0ZXJuIHZvaWQgY2xlYXJlcnJfdW5sb2NrZWQgIChGSUxFICpfX3N0
cmVhbSkgICAgOwpleHRlcm4gaW50IGZlb2ZfdW5sb2NrZWQgIChGSUxFICpfX3N0cmVhbSkgICAg
OwpleHRlcm4gaW50IGZlcnJvcl91bmxvY2tlZCAgKEZJTEUgKl9fc3RyZWFtKSAgICA7CgoKCiAK
ZXh0ZXJuIHZvaWQgcGVycm9yICAoX19jb25zdCBjaGFyICpfX3MpICAgIDsKCiAKCgpleHRlcm4g
aW50IHN5c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IHN5c19lcnJsaXN0W107
CgoKCgoKCgoKIApleHRlcm4gaW50IGZpbGVubyAgKEZJTEUgKl9fc3RyZWFtKSAgICA7CgoKCiAK
ZXh0ZXJuIGludCBmaWxlbm9fdW5sb2NrZWQgIChGSUxFICpfX3N0cmVhbSkgICAgOwoKCgoKCiAK
ZXh0ZXJuIEZJTEUgKnBvcGVuICAoX19jb25zdCBjaGFyICpfX2NvbW1hbmQsIF9fY29uc3QgY2hh
ciAqX19tb2RlcykgICAgOwoKIApleHRlcm4gaW50IHBjbG9zZSAgKEZJTEUgKl9fc3RyZWFtKSAg
ICA7CgoKCgogCmV4dGVybiBjaGFyICpjdGVybWlkICAoY2hhciAqX19zKSAgICA7CgoKCgoKCgoK
CiMgNjA3ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwoKCgoKIAoKIApleHRlcm4gdm9pZCBmbG9j
a2ZpbGUgIChGSUxFICpfX3N0cmVhbSkgICAgOwoKIAoKZXh0ZXJuIGludCBmdHJ5bG9ja2ZpbGUg
IChGSUxFICpfX3N0cmVhbSkgICAgOwoKIApleHRlcm4gdm9pZCBmdW5sb2NrZmlsZSAgKEZJTEUg
Kl9fc3RyZWFtKSAgICA7CgoKCgoKCgoKCgogCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRp
by5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKZXh0ZXJuIF9faW5saW5l
ICBpbnQKdnByaW50ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCBfX2dudWNfdmFf
bGlzdCAgX19hcmcpICAKewogIHJldHVybiB2ZnByaW50ZiAoc3Rkb3V0ICwgX19mbXQsIF9fYXJn
KTsKfQoKIApleHRlcm4gX19pbmxpbmUgIGludApnZXRjaGFyICh2b2lkKSAgCnsKICByZXR1cm4g
X0lPX2dldGMgKHN0ZGluICk7Cn0KCgoKIApleHRlcm4gX19pbmxpbmUgIGludApnZXRjX3VubG9j
a2VkIChGSUxFICpfX2ZwKSAgCnsKICByZXR1cm4gKCggX19mcCApLT5fSU9fcmVhZF9wdHIgPj0g
KCBfX2ZwICktPl9JT19yZWFkX2VuZCA/IF9fdWZsb3cgKCBfX2ZwICkgOiAqKHVuc2lnbmVkIGNo
YXIgKikgKCBfX2ZwICktPl9JT19yZWFkX3B0cisrKSA7Cn0KCiAKZXh0ZXJuIF9faW5saW5lICBp
bnQKZ2V0Y2hhcl91bmxvY2tlZCAodm9pZCkgIAp7CiAgcmV0dXJuICgoIHN0ZGluICApLT5fSU9f
cmVhZF9wdHIgPj0gKCBzdGRpbiAgKS0+X0lPX3JlYWRfZW5kID8gX191ZmxvdyAoIHN0ZGluICAp
IDogKih1bnNpZ25lZCBjaGFyICopICggc3RkaW4gICktPl9JT19yZWFkX3B0cisrKSA7Cn0KCgoK
IApleHRlcm4gX19pbmxpbmUgIGludApwdXRjaGFyIChpbnQgX19jKSAgCnsKICByZXR1cm4gX0lP
X3B1dGMgKF9fYywgc3Rkb3V0ICk7Cn0KCgoKIApleHRlcm4gX19pbmxpbmUgIGludApmcHV0Y191
bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pICAKewogIHJldHVybiAoKCggIF9fc3Ry
ZWFtICktPl9JT193cml0ZV9wdHIgPj0gKCAgX19zdHJlYW0gKS0+X0lPX3dyaXRlX2VuZCkgPyBf
X292ZXJmbG93ICggIF9fc3RyZWFtICwgKHVuc2lnbmVkIGNoYXIpICggX19jICkpIDogKHVuc2ln
bmVkIGNoYXIpICgqKCAgX19zdHJlYW0gKS0+X0lPX3dyaXRlX3B0cisrID0gKCBfX2MgKSkpIDsK
fQoKCgoKIApleHRlcm4gX19pbmxpbmUgIGludApwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxF
ICpfX3N0cmVhbSkgIAp7CiAgcmV0dXJuICgoKCAgX19zdHJlYW0gKS0+X0lPX3dyaXRlX3B0ciA+
PSAoICBfX3N0cmVhbSApLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKCAgX19zdHJlYW0g
LCAodW5zaWduZWQgY2hhcikgKCBfX2MgKSkgOiAodW5zaWduZWQgY2hhcikgKCooICBfX3N0cmVh
bSApLT5fSU9fd3JpdGVfcHRyKysgPSAoIF9fYyApKSkgOwp9CgogCmV4dGVybiBfX2lubGluZSAg
aW50CnB1dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpICAKewogIHJldHVybiAoKCggIHN0ZG91dCAg
KS0+X0lPX3dyaXRlX3B0ciA+PSAoICBzdGRvdXQgICktPl9JT193cml0ZV9lbmQpID8gX19vdmVy
ZmxvdyAoICBzdGRvdXQgICwgKHVuc2lnbmVkIGNoYXIpICggX19jICkpIDogKHVuc2lnbmVkIGNo
YXIpICgqKCAgc3Rkb3V0ICApLT5fSU9fd3JpdGVfcHRyKysgPSAoIF9fYyApKSkgOwp9CgoKCgoK
CgoKCgoKCgoKIApleHRlcm4gX19pbmxpbmUgIGludApmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0
cmVhbSkgIAp7CiAgcmV0dXJuICgoKCBfX3N0cmVhbSApLT5fZmxhZ3MgJiAweDEwICkgIT0gMCkg
Owp9CgogCmV4dGVybiBfX2lubGluZSAgaW50CmZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJl
YW0pICAKewogIHJldHVybiAoKCggX19zdHJlYW0gKS0+X2ZsYWdzICYgMHgyMCApICE9IDApIDsK
fQoKCgoKCgogCgojIDE0OSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMwoKCiMgMTY1ICIv
dXNyL2luY2x1ZGUvYml0cy9zdGRpby5oIiAzCgoKIAoKIyA2MzUgIi91c3IvaW5jbHVkZS9zdGRp
by5oIiAyIDMKCgoKIAoKCgoKIyAxMSAibWtyZWlzZXJmcy5jIiAyCgojIDEgIi91c3IvaW5jbHVk
ZS9zdHJpbmcuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIAoKIAoKCiMgMSAi
L3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRk
ZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJl
LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEg
Ii91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEg
Ii91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCgogCgogCgoKIyAxODggIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUt
bGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgojIDI3MSAiL3Vz
ci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYu
aCIgMwoKCiMgMjgzICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUu
Mi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvczM5
MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKIyAzMyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgoKIApleHRl
cm4gdm9pZCAqICBtZW1jcHkgICh2b2lkICogIF9fcmVzdHJpY3QgX19kZXN0LAoJCQkgICAgX19j
b25zdCB2b2lkICogIF9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pICAgIDsKIAoKZXh0ZXJu
IHZvaWQgKiAgbWVtbW92ZSAgKHZvaWQgKiAgX19kZXN0LCBfX2NvbnN0IHZvaWQgKiAgX19zcmMs
CgkJCSAgICAgc2l6ZV90IF9fbikgICAgOwoKIAoKCgpleHRlcm4gdm9pZCAqICBtZW1jY3B5ICAo
dm9pZCAqICBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqICBfX3NyYywKCQkJICAgICBpbnQgX19jLCBz
aXplX3QgX19uKSAgICA7CgoKCiAKZXh0ZXJuIHZvaWQgKiAgbWVtc2V0ICAodm9pZCAqICBfX3Ms
IGludCBfX2MsIHNpemVfdCBfX24pICAgIDsKCiAKZXh0ZXJuIGludCBtZW1jbXAgIChfX2NvbnN0
IHZvaWQgKiAgX19zMSwgX19jb25zdCB2b2lkICogIF9fczIsCgkJCXNpemVfdCBfX24pICAgIDsK
CiAKZXh0ZXJuIHZvaWQgKiAgbWVtY2hyICAoX19jb25zdCB2b2lkICogIF9fcywgaW50IF9fYywg
c2l6ZV90IF9fbikgICAgOwoKCgoKCgoKCiAKZXh0ZXJuIGNoYXIgKnN0cmNweSAgKGNoYXIgKl9f
cmVzdHJpY3QgX19kZXN0LAoJCQkgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykgICAg
OwogCmV4dGVybiBjaGFyICpzdHJuY3B5ICAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCgkJCSAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgICAgOwoKIApleHRl
cm4gY2hhciAqc3RyY2F0ICAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCgkJCSAgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fc3JjKSAgICA7CiAKZXh0ZXJuIGNoYXIgKnN0cm5jYXQgIChjaGFy
ICpfX3Jlc3RyaWN0IF9fZGVzdCwKCQkJICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3Jj
LCBzaXplX3QgX19uKSAgICA7CgogCmV4dGVybiBpbnQgc3RyY21wICAoX19jb25zdCBjaGFyICpf
X3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpICAgIDsKIApleHRlcm4gaW50IHN0cm5jbXAgIChfX2Nv
bnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90IF9fbikgICAgOwoKIApl
eHRlcm4gaW50IHN0cmNvbGwgIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19z
MikgICAgOwogCmV4dGVybiBzaXplX3Qgc3RyeGZybSAgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0
LAoJCQkgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSAgICA7
CgojIDEwNyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCgoKCiAKZXh0ZXJuIGNoYXIgKl9fc3Ry
ZHVwICAoX19jb25zdCBjaGFyICpfX3MpICAgIDsKZXh0ZXJuIGNoYXIgKnN0cmR1cCAgKF9fY29u
c3QgY2hhciAqX19zKSAgICA7CgoKIAoKCgoKCgojIDE0MyAiL3Vzci9pbmNsdWRlL3N0cmluZy5o
IiAzCgoKIApleHRlcm4gY2hhciAqc3RyY2hyICAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2Mp
ICAgIDsKIApleHRlcm4gY2hhciAqc3RycmNociAgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19j
KSAgICA7CgoKCgoKCgogCgpleHRlcm4gc2l6ZV90IHN0cmNzcG4gIChfX2NvbnN0IGNoYXIgKl9f
cywgX19jb25zdCBjaGFyICpfX3JlamVjdCkgICAgOwogCgpleHRlcm4gc2l6ZV90IHN0cnNwbiAg
KF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KSAgICA7CiAKZXh0ZXJu
IGNoYXIgKnN0cnBicmsgIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2Vw
dCkgICAgOwogCmV4dGVybiBjaGFyICpzdHJzdHIgIChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ss
IF9fY29uc3QgY2hhciAqX19uZWVkbGUpICAgIDsKCgoKCgoKCgoKIApleHRlcm4gY2hhciAqc3Ry
dG9rICAoY2hhciAqX19yZXN0cmljdCBfX3MsCgkJCSAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZGVsaW0pICAgIDsKCiAKCmV4dGVybiBjaGFyICpfX3N0cnRva19yICAoY2hhciAqX19yZXN0
cmljdCBfX3MsCgkJCSAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAoJCQkg
ICAgICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVfcHRyKSAgICA7CgpleHRlcm4gY2hhciAqc3Ry
dG9rX3IgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKCQkJICAgIF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2RlbGltLAoJCQkgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgICAgOwoK
CiMgMjAzICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKCgoKIApleHRlcm4gc2l6ZV90IHN0cmxl
biAgKF9fY29uc3QgY2hhciAqX19zKSAgICA7CgoKCgoKCgoKIApleHRlcm4gY2hhciAqc3RyZXJy
b3IgIChpbnQgX19lcnJudW0pICAgIDsKCiAKCmV4dGVybiBjaGFyICpfX3N0cmVycm9yX3IgIChp
bnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pICAgIDsKZXh0ZXJuIGNo
YXIgKnN0cmVycm9yX3IgIChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZs
ZW4pICAgIDsKCgogCgpleHRlcm4gdm9pZCBfX2J6ZXJvICAodm9pZCAqICBfX3MsIHNpemVfdCBf
X24pICAgIDsKCgogCmV4dGVybiB2b2lkIGJjb3B5ICAoX19jb25zdCB2b2lkICogIF9fc3JjLCB2
b2lkICogIF9fZGVzdCwgc2l6ZV90IF9fbikgICAgOwoKIApleHRlcm4gdm9pZCBiemVybyAgKHZv
aWQgKiAgX19zLCBzaXplX3QgX19uKSAgICA7CgogCmV4dGVybiBpbnQgYmNtcCAgKF9fY29uc3Qg
dm9pZCAqICBfX3MxLCBfX2NvbnN0IHZvaWQgKiAgX19zMiwgc2l6ZV90IF9fbikgICAgOwoKIApl
eHRlcm4gY2hhciAqaW5kZXggIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgICAgOwoKIApl
eHRlcm4gY2hhciAqcmluZGV4ICAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpICAgIDsKCiAK
CmV4dGVybiBpbnQgX19mZnMgIChpbnQgX19pKSAgICAgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7
CmV4dGVybiBpbnQgZmZzICAoaW50IF9faSkgICAgIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoK
IAoKCgoKCgoKCgogCmV4dGVybiBpbnQgX19zdHJjYXNlY21wICAoX19jb25zdCBjaGFyICpfX3Mx
LCBfX2NvbnN0IGNoYXIgKl9fczIpICAgIDsKZXh0ZXJuIGludCBzdHJjYXNlY21wICAoX19jb25z
dCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpICAgIDsKCiAKZXh0ZXJuIGludCBzdHJu
Y2FzZWNtcCAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLAoJCQkgICAg
IHNpemVfdCBfX24pICAgIDsKCgojIDI3NyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCgoKCiAK
CmV4dGVybiBjaGFyICpzdHJzZXAgIChjaGFyICoqX19yZXN0cmljdCBfX3N0cmluZ3AsCgkJCSAg
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pICAgIDsKCgojIDMxOSAiL3Vzci9pbmNs
dWRlL3N0cmluZy5oIiAzCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCiAKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy9zdHJpbmcuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCiAKCiMg
MTQyICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcuaCIgMwoKIyAzNDMgIi91c3IvaW5jbHVkZS9z
dHJpbmcuaCIgMiAzCgoKIAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMSAzCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiMgMSAi
L3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK
CgoKCgogCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgiIDEgMwogCgoKCgoKCiMgMzUg
Ii91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMiAzCgoKIAoKCgoKCgoKCgoKCgoKIyA1MiAiL3Vzci9p
bmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAyIDMKCgoKIyA2NCAiL3Vzci9pbmNsdWRlL2JpdHMvc3Ry
aW5nMi5oIiAzCgoKCgoKCgoKCgojIDg4ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMK
CgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgojIDE4MCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5n
Mi5oIiAzCgoKCgoKCgogCgoKCgoKCgoKCiAKCiMgMzY3ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJp
bmcyLmgiIDMKCgoKIAoKZXh0ZXJuIHZvaWQgKiAgX19yYXdtZW1jaHIgKGNvbnN0IHZvaWQgKiAg
X19zLCBpbnQgX19jKTsKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuIF9faW5saW5lICBj
aGFyICpfX3N0cmNweV9zbWFsbCAoY2hhciAqLCBfX3VpbnQxNl90LCBfX3VpbnQxNl90LAoJCQkJ
ICAgICAgX191aW50MzJfdCwgX191aW50MzJfdCwgc2l6ZV90KTsKZXh0ZXJuIF9faW5saW5lICBj
aGFyICoKX19zdHJjcHlfc21hbGwgKGNoYXIgKl9fZGVzdCwKCQlfX3VpbnQxNl90IF9fc3JjMF8y
LCBfX3VpbnQxNl90IF9fc3JjNF8yLAoJCV9fdWludDMyX3QgX19zcmMwXzQsIF9fdWludDMyX3Qg
X19zcmM0XzQsCgkJc2l6ZV90IF9fc3JjbGVuKQp7CiAgdW5pb24gewogICAgX191aW50MzJfdCBf
X3VpOwogICAgX191aW50MTZfdCBfX3VzaTsKICAgIHVuc2lnbmVkIGNoYXIgX191YzsKICB9ICpf
X3UgPSAodm9pZCAqKSBfX2Rlc3Q7CiAgc3dpdGNoICgodW5zaWduZWQgaW50KSBfX3NyY2xlbikK
ICAgIHsKICAgIGNhc2UgMToKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAg
ICBjYXNlIDI6CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzBfMjsKICAgICAgYnJlYWs7CiAgICBj
YXNlIDM6CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzBfMjsKICAgICAgX191ID0gX19leHRlbnNp
b25fXyAoKHZvaWQgKikgX191ICsgMik7CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJy
ZWFrOwogICAgY2FzZSA0OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgYnJlYWs7
CiAgICBjYXNlIDU6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4
dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAg
ICAgYnJlYWs7CiAgICBjYXNlIDY6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBf
X3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9
IF9fc3JjNF8yOwogICAgICBicmVhazsKICAgIGNhc2UgNzoKICAgICAgX191LT5fX3VpID0gX19z
cmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAg
ICBfX3UtPl9fdXNpID0gX19zcmM0XzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lk
ICopIF9fdSArIDIpOwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNh
c2UgODoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9u
X18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fdWkgPSBfX3NyYzRfNDsKICAgICAg
YnJlYWs7CiAgICB9CiAgcmV0dXJuIF9fZGVzdDsKfQojIDUzMSAiL3Vzci9pbmNsdWRlL2JpdHMv
c3RyaW5nMi5oIiAzCgoKCgogCiMgNjk3ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMK
CgoKIAoKIyA3MTIgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwoKCgoKCgoKCgoKCiAK
CiMgNzMzICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKCgoKCgoKCgoKCgogCgoKIyA3
NjYgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwoKCiMgNzkzICIvdXNyL2luY2x1ZGUv
Yml0cy9zdHJpbmcyLmgiIDMKCgojIDgxNSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAz
CgoKIyA4NDAgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwoKCgogCgoKCgoKCgoKCgoK
IAoKCgojIDg3MiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgpleHRlcm4gX19pbmxp
bmUgIHNpemVfdCBfX3N0cmNzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0
KTsKZXh0ZXJuIF9faW5saW5lICBzaXplX3QKX19zdHJjc3BuX2MxIChfX2NvbnN0IGNoYXIgKl9f
cywgY2hhciBfX3JlamVjdCkKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hp
bGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0KQog
ICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSAgc2l6
ZV90IF9fc3RyY3Nwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLAoJCQkJ
ICAgICBjaGFyIF9fcmVqZWN0Mik7CmV4dGVybiBfX2lubGluZSAgc2l6ZV90Cl9fc3RyY3Nwbl9j
MiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MikKewog
IHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0g
J1wwJyAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MQoJICYmIF9fc1tfX3Jlc3VsdF0gIT0g
X19yZWplY3QyKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBf
X2lubGluZSAgc2l6ZV90IF9fc3RyY3Nwbl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19y
ZWplY3QxLAoJCQkJICAgICBjaGFyIF9fcmVqZWN0MiwgY2hhciBfX3JlamVjdDMpOwpleHRlcm4g
X19pbmxpbmUgIHNpemVfdApfX3N0cmNzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9f
cmVqZWN0MSwgY2hhciBfX3JlamVjdDIsCgkgICAgICBjaGFyIF9fcmVqZWN0MykKewogIHJlZ2lz
dGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAm
JiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MQoJICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWpl
Y3QyICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QzKQogICAgKytfX3Jlc3VsdDsKICByZXR1
cm4gX19yZXN1bHQ7Cn0KCgoKIAoKCgojIDkyNyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5o
IiAzCgpleHRlcm4gX19pbmxpbmUgIHNpemVfdCBfX3N0cnNwbl9jMSAoX19jb25zdCBjaGFyICpf
X3MsIGNoYXIgX19hY2NlcHQpOwpleHRlcm4gX19pbmxpbmUgIHNpemVfdApfX3N0cnNwbl9jMSAo
X19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQpCnsKICByZWdpc3RlciBzaXplX3QgX19y
ZXN1bHQgPSAwOwogICAKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdCkKICAgICsr
X19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgIHNpemVfdCBf
X3N0cnNwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLAoJCQkJICAgIGNo
YXIgX19hY2NlcHQyKTsKZXh0ZXJuIF9faW5saW5lICBzaXplX3QKX19zdHJzcG5fYzIgKF9fY29u
c3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0MSwgY2hhciBfX2FjY2VwdDIpCnsKICByZWdpc3Rl
ciBzaXplX3QgX19yZXN1bHQgPSAwOwogICAKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2Fj
Y2VwdDEgfHwgX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDIpCiAgICArK19fcmVzdWx0OwogIHJl
dHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lICBzaXplX3QgX19zdHJzcG5fYzMgKF9f
Y29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0MSwKCQkJCSAgICBjaGFyIF9fYWNjZXB0Miwg
Y2hhciBfX2FjY2VwdDMpOwpleHRlcm4gX19pbmxpbmUgIHNpemVfdApfX3N0cnNwbl9jMyAoX19j
b25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLCBjaGFyIF9fYWNjZXB0MiwgY2hhciBfX2Fj
Y2VwdDMpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogICAKICB3aGlsZSAoX19z
W19fcmVzdWx0XSA9PSBfX2FjY2VwdDEgfHwgX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDIKCSB8
fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MykKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9f
cmVzdWx0Owp9CgoKCiAKCgojIDk4MiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgpl
eHRlcm4gX19pbmxpbmUgIGNoYXIgKl9fc3RycGJya19jMiAoX19jb25zdCBjaGFyICpfX3MsIGNo
YXIgX19hY2NlcHQxLAoJCQkJICAgICBjaGFyIF9fYWNjZXB0Mik7CmV4dGVybiBfX2lubGluZSAg
Y2hhciAqCl9fc3RycGJya19jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLCBj
aGFyIF9fYWNjZXB0MikKewogICAKICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19h
Y2NlcHQxICYmICpfX3MgIT0gX19hY2NlcHQyKQogICAgKytfX3M7CiAgcmV0dXJuICpfX3MgPT0g
J1wwJyA/ICgodm9pZCAqKTApICA6IChjaGFyICopIChzaXplX3QpIF9fczsKfQoKZXh0ZXJuIF9f
aW5saW5lICBjaGFyICpfX3N0cnBicmtfYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNj
ZXB0MSwKCQkJCSAgICAgY2hhciBfX2FjY2VwdDIsIGNoYXIgX19hY2NlcHQzKTsKZXh0ZXJuIF9f
aW5saW5lICBjaGFyICoKX19zdHJwYnJrX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2Fj
Y2VwdDEsIGNoYXIgX19hY2NlcHQyLAoJICAgICAgY2hhciBfX2FjY2VwdDMpCnsKICAgCiAgd2hp
bGUgKCpfX3MgIT0gJ1wwJyAmJiAqX19zICE9IF9fYWNjZXB0MSAmJiAqX19zICE9IF9fYWNjZXB0
MgoJICYmICpfX3MgIT0gX19hY2NlcHQzKQogICAgKytfX3M7CiAgcmV0dXJuICpfX3MgPT0gJ1ww
JyA/ICgodm9pZCAqKTApICA6IChjaGFyICopIChzaXplX3QpIF9fczsKfQoKCgogCgoKIyAxMDIw
ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKCgoKIyAxMDMyICIvdXNyL2luY2x1ZGUv
Yml0cy9zdHJpbmcyLmgiIDMKCgoKCgoKCgoKCgoKZXh0ZXJuIF9faW5saW5lICBjaGFyICpfX3N0
cnRva19yXzFjIChjaGFyICpfX3MsIGNoYXIgX19zZXAsIGNoYXIgKipfX25leHRwKTsKZXh0ZXJu
IF9faW5saW5lICBjaGFyICoKX19zdHJ0b2tfcl8xYyAoY2hhciAqX19zLCBjaGFyIF9fc2VwLCBj
aGFyICoqX19uZXh0cCkKewogIGNoYXIgKl9fcmVzdWx0OwogIGlmIChfX3MgPT0gKCh2b2lkICop
MCkgKQogICAgX19zID0gKl9fbmV4dHA7CiAgd2hpbGUgKCpfX3MgPT0gX19zZXApCiAgICArK19f
czsKICBpZiAoKl9fcyA9PSAnXDAnKQogICAgX19yZXN1bHQgPSAoKHZvaWQgKikwKSA7CiAgZWxz
ZQogICAgewogICAgICBfX3Jlc3VsdCA9IF9fczsKICAgICAgd2hpbGUgKCpfX3MgIT0gJ1wwJyAm
JiAqX19zICE9IF9fc2VwKQoJKytfX3M7CiAgICAgIGlmICgqX19zID09ICdcMCcpCgkqX19uZXh0
cCA9IF9fczsKICAgICAgZWxzZQoJewoJICAqX19zID0gJ1wwJzsKCSAgKl9fbmV4dHAgPSBfX3Mg
KyAxOwoJfQogICAgfQogIHJldHVybiBfX3Jlc3VsdDsKfQoKCgoKCgoKCgojIDEwOTMgIi91c3Iv
aW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwoKZXh0ZXJuIF9faW5saW5lICBjaGFyICpfX3N0cnNl
cF8xYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdCk7CmV4dGVybiBfX2lubGluZSAgY2hhciAq
Cl9fc3Ryc2VwXzFjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0KQp7CiAgcmVnaXN0ZXIgY2hh
ciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCA9PSAoKHZvaWQgKikwKSApCiAgICBy
ZXR1cm4gKl9fcyA9ICgodm9pZCAqKTApIDsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVqZWN0KQog
ICAgKigqX19zKSsrID0gJ1wwJzsKICBlbHNlCiAgICBpZiAoKCpfX3MgPSAoX19leHRlbnNpb25f
XyAoX19idWlsdGluX2NvbnN0YW50X3AgKCAgX19yZWplY3QgKSAmJiAoICBfX3JlamVjdCApID09
ICdcMCcJPyAoY2hhciAqKSBfX3Jhd21lbWNociAoIF9fcmV0dmFsICwgICBfX3JlamVjdCApCTog
c3RyY2hyICggX19yZXR2YWwgLCAgIF9fcmVqZWN0ICkpKSApICE9ICgodm9pZCAqKTApICkKICAg
ICAgKigqX19zKSsrID0gJ1wwJzsKICAgIGVsc2UKICAgICAgKl9fcyA9ICgodm9pZCAqKTApIDsK
ICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSAgY2hhciAqX19zdHJzZXBfMmMg
KGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0Mik7CmV4dGVybiBfX2lu
bGluZSAgY2hhciAqCl9fc3Ryc2VwXzJjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hh
ciBfX3JlamVjdDIpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9f
cmV0dmFsID09ICgodm9pZCAqKTApICkKICAgIHJldHVybiAqX19zID0gKCh2b2lkICopMCkgOwog
IGlmICgqX19yZXR2YWwgPT0gX19yZWplY3QxIHx8ICpfX3JldHZhbCA9PSBfX3JlamVjdDIpCiAg
ICAqKCpfX3MpKysgPSAnXDAnOwogIGVsc2UKICAgIHsKICAgICAgcmVnaXN0ZXIgY2hhciAqX19j
cCA9IF9fcmV0dmFsOwogICAgICB3aGlsZSAoKl9fY3AgIT0gJ1wwJyAmJiAqX19jcCAhPSBfX3Jl
amVjdDEgJiYgKl9fY3AgIT0gX19yZWplY3QyKQoJKytfX2NwOwogICAgICBpZiAoKl9fY3AgIT0g
J1wwJykKCXsKCSAgKl9fcyA9IF9fY3A7CgkgICooKl9fcykrKyA9ICdcMCc7Cgl9CiAgICAgIGVs
c2UKCSpfX3MgPSAoKHZvaWQgKikwKSA7CiAgICB9CiAgcmV0dXJuIF9fcmV0dmFsOwp9CgpleHRl
cm4gX19pbmxpbmUgIGNoYXIgKl9fc3Ryc2VwXzNjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0
MSwgY2hhciBfX3JlamVjdDIsCgkJCQkgICBjaGFyIF9fcmVqZWN0Myk7CmV4dGVybiBfX2lubGlu
ZSAgY2hhciAqCl9fc3Ryc2VwXzNjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBf
X3JlamVjdDIsIGNoYXIgX19yZWplY3QzKQp7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAq
X19zOwogIGlmIChfX3JldHZhbCA9PSAoKHZvaWQgKikwKSApCiAgICByZXR1cm4gKl9fcyA9ICgo
dm9pZCAqKTApIDsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVqZWN0MSB8fCAqX19yZXR2YWwgPT0g
X19yZWplY3QyCiAgICAgIHx8ICpfX3JldHZhbCA9PSBfX3JlamVjdDMpCiAgICAqKCpfX3MpKysg
PSAnXDAnOwogIGVsc2UKICAgIHsKICAgICAgcmVnaXN0ZXIgY2hhciAqX19jcCA9IF9fcmV0dmFs
OwogICAgICB3aGlsZSAoKl9fY3AgIT0gJ1wwJyAmJiAqX19jcCAhPSBfX3JlamVjdDEgJiYgKl9f
Y3AgIT0gX19yZWplY3QyCgkgICAgICYmICpfX2NwICE9IF9fcmVqZWN0MykKCSsrX19jcDsKICAg
ICAgaWYgKCpfX2NwICE9ICdcMCcpCgl7CgkgICpfX3MgPSBfX2NwOwoJICAqKCpfX3MpKysgPSAn
XDAnOwoJfQogICAgICBlbHNlCgkqX19zID0gKCh2b2lkICopMCkgOwogICAgfQogIHJldHVybiBf
X3JldHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lICBjaGFyICpfX3N0cnNlcF9nIChjaGFyICoqX19z
LCBfX2NvbnN0IGNoYXIgKl9fcmVqZWN0KTsKZXh0ZXJuIF9faW5saW5lICBjaGFyICoKX19zdHJz
ZXBfZyAoY2hhciAqKl9fcywgX19jb25zdCBjaGFyICpfX3JlamVjdCkKewogIHJlZ2lzdGVyIGNo
YXIgKl9fcmV0dmFsID0gKl9fczsKICBpZiAoX19yZXR2YWwgPT0gKCh2b2lkICopMCkgKQogICAg
cmV0dXJuICgodm9pZCAqKTApIDsKICBpZiAoKCpfX3MgPSBfX2V4dGVuc2lvbl9fCSh7IGNoYXIg
X19hMCwgX19hMSwgX19hMjsJKF9fYnVpbHRpbl9jb25zdGFudF9wICggIF9fcmVqZWN0ICkgJiYg
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCAgIF9fcmVqZWN0ICApICsgMSkgLSAoc2l6ZV90KShj
b25zdCB2b2lkICopKCAgIF9fcmVqZWN0ICApID09IDEpIAk/ICgoX19hMCA9ICgoX19jb25zdCBj
aGFyICAqKSAoICBfX3JlamVjdCApKVswXSwgX19hMCA9PSAnXDAnKQk/ICgodm9pZCAqKTApIAk6
ICgoX19hMSA9ICgoX19jb25zdCBjaGFyICopICggIF9fcmVqZWN0ICkpWzFdLCBfX2ExID09ICdc
MCcpCT8gKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wICggIF9fYTAgKSAmJiAo
ICBfX2EwICkgPT0gJ1wwJwk/IChjaGFyICopIF9fcmF3bWVtY2hyICggIF9fcmV0dmFsICAsICAg
X19hMCApCTogc3RyY2hyICggIF9fcmV0dmFsICAsICAgX19hMCApKSkgCTogKChfX2EyID0gKChf
X2NvbnN0IGNoYXIgKikgKCAgX19yZWplY3QgKSlbMl0sIF9fYTIgPT0gJ1wwJykJPyBfX3N0cnBi
cmtfYzIgKCBfX3JldHZhbCAsIF9fYTAsIF9fYTEpCTogKCgoX19jb25zdCBjaGFyICopICggIF9f
cmVqZWN0ICkpWzNdID09ICdcMCcJPyBfX3N0cnBicmtfYzMgKCBfX3JldHZhbCAsIF9fYTAsIF9f
YTEsIF9fYTIpCTogc3RycGJyayAoIF9fcmV0dmFsICwgICBfX3JlamVjdCApKSkpKQk6IHN0cnBi
cmsgKCBfX3JldHZhbCAsICAgX19yZWplY3QgKSk7IH0pICkgIT0gKCh2b2lkICopMCkgKQogICAg
KigqX19zKSsrID0gJ1wwJzsKICByZXR1cm4gX19yZXR2YWw7Cn0KCgoKCgogCgoKCgoKCiMgMSAi
L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiAK
CgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2lu
Y2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkw
LXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoK
CiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9p
bmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAK
CiAKCiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9p
bmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAt
c2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoK
IyAyNzEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1
ZGUvc3RkZGVmLmgiIDMKCgojIDI4MyAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1s
aW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9n
Y2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoK
CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMzMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAz
CgoKIAoKIyA0NjkgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwoKCgoKIApleHRlcm4gdm9pZCAq
ICBtYWxsb2MgIChzaXplX3QgX19zaXplKSAgICA7CiAKZXh0ZXJuIHZvaWQgKiAgY2FsbG9jICAo
c2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUpICAgIDsKCgojIDc2OCAiL3Vzci9pbmNsdWRl
L3N0ZGxpYi5oIiAzCgoKCiAKCgojIDExODcgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIg
MiAzCgoKCgoKCiMgMTIwMiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgoKCgoKCgoK
CgoKCgojIDM0NiAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgoKCiAKCgojIDEyICJta3Jl
aXNlcmZzLmMiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAxIDMKIAoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgoKCgogCgogCgoKIAoKCgogCgoKIAoKCiAKCgogCgoKCiAKCgoKIAoKCgog
CgoKCiAKCgoKCgoKIAoKCiAKCgoKCiAKCgogCgoKIAoKCgogCgoKCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4X29wdC5oIiAxIDMKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoK
IAoKCiAKCgogCgoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCgogCgoKIAoKCiAKCgogCiAKCiAK
CgogCgogCgoKIAoKCiAKCgoKCgojIDE3NSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCgog
CgoKCgogCgoKCgoKIAoKCgoKdHlwZWRlZiBfX3NzaXplX3Qgc3NpemVfdDsKCgoKCgojIDEgIi91
c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVm
LmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1s
aW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIv
dXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRl
Zi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCiMgMTMxICIv
dXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRl
Zi5oIiAzCgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxp
bnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoKIyAyNzEgIi91c3Iv
bGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgi
IDMKCgojIDI4MyAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIv
aW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAt
c2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCiMgMTk5ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKCiMgMjMxICIv
dXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKCgoKCgoKCgoKIAoKCgoKCgogCmV4dGVybiBpbnQgYWNj
ZXNzICAoX19jb25zdCBjaGFyICpfX25hbWUsIGludCBfX3R5cGUpICAgIDsKCgoKCgoKCgogCgoK
CgoKCgogCgoKCgoKCiAKCgoKCmV4dGVybiBfX29mZl90IF9fbHNlZWsgIChpbnQgX19mZCwgX19v
ZmZfdCBfX29mZnNldCwgaW50IF9fd2hlbmNlKSAgICA7CgpleHRlcm4gX19vZmZfdCBsc2VlayAg
KGludCBfX2ZkLCBfX29mZl90IF9fb2Zmc2V0LCBpbnQgX193aGVuY2UpICAgIDsKIyAyODkgIi91
c3IvaW5jbHVkZS91bmlzdGQuaCIgMwoKCgoKCiAKZXh0ZXJuIGludCBfX2Nsb3NlICAoaW50IF9f
ZmQpICAgIDsKZXh0ZXJuIGludCBjbG9zZSAgKGludCBfX2ZkKSAgICA7CgogCgpleHRlcm4gc3Np
emVfdCAgX19yZWFkICAoaW50IF9fZmQsIHZvaWQgKiAgX19idWYsIHNpemVfdCBfX25ieXRlcykg
ICAgOwpleHRlcm4gc3NpemVfdCAgcmVhZCAgKGludCBfX2ZkLCB2b2lkICogIF9fYnVmLCBzaXpl
X3QgX19uYnl0ZXMpICAgIDsKCiAKZXh0ZXJuIHNzaXplX3QgIF9fd3JpdGUgIChpbnQgX19mZCwg
X19jb25zdCB2b2lkICogIF9fYnVmLCBzaXplX3QgX19uKSAgICA7CmV4dGVybiBzc2l6ZV90ICB3
cml0ZSAgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKiAgX19idWYsIHNpemVfdCBfX24pICAgIDsK
CiMgMzQzICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKCgogCgoKCmV4dGVybiBpbnQgcGlwZSAg
KGludCBfX3BpcGVkZXNbMl0pICAgIDsKCiAKCgoKCgoKZXh0ZXJuIHVuc2lnbmVkIGludCBhbGFy
bSAgKHVuc2lnbmVkIGludCBfX3NlY29uZHMpICAgIDsKCiAKCgoKCgoKZXh0ZXJuIHVuc2lnbmVk
IGludCBzbGVlcCAgKHVuc2lnbmVkIGludCBfX3NlY29uZHMpICAgIDsKCgogCgoKCmV4dGVybiB1
bnNpZ25lZCBpbnQgdWFsYXJtICAodW5zaWduZWQgaW50IF9fdmFsdWUsCgkJCQkgdW5zaWduZWQg
aW50IF9faW50ZXJ2YWwpICAgIDsKCiAKCmV4dGVybiB2b2lkIHVzbGVlcCAgKHVuc2lnbmVkIGlu
dCBfX3VzZWNvbmRzKSAgICA7CgoKCiAKCmV4dGVybiBpbnQgcGF1c2UgICh2b2lkKSAgICA7CgoK
IApleHRlcm4gaW50IGNob3duICAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fdWlkX3QgX19vd25l
ciwKCQkgICAgICAgX19naWRfdCBfX2dyb3VwKSAgICA7CgoKIApleHRlcm4gaW50IGZjaG93biAg
KGludCBfX2ZkLCBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91cCkgICAgOwoKCiAKCmV4
dGVybiBpbnQgbGNob3duICAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fdWlkX3QgX19vd25lciwK
CQkJX19naWRfdCBfX2dyb3VwKSAgICA7CgoKCiAKZXh0ZXJuIGludCBjaGRpciAgKF9fY29uc3Qg
Y2hhciAqX19wYXRoKSAgICA7CgoKIApleHRlcm4gaW50IGZjaGRpciAgKGludCBfX2ZkKSAgICA7
CgoKIAoKCgoKCgpleHRlcm4gY2hhciAqZ2V0Y3dkICAoY2hhciAqX19idWYsIHNpemVfdCBfX3Np
emUpICAgIDsKCgoKCgoKCgoKIAoKCmV4dGVybiBjaGFyICpnZXR3ZCAgKGNoYXIgKl9fYnVmKSAg
ICA7CgoKCiAKZXh0ZXJuIGludCBkdXAgIChpbnQgX19mZCkgICAgOwoKIApleHRlcm4gaW50IGR1
cDIgIChpbnQgX19mZCwgaW50IF9fZmQyKSAgICA7CgogCmV4dGVybiBjaGFyICoqX19lbnZpcm9u
OwoKCgoKCiAKCmV4dGVybiBpbnQgZXhlY3ZlICAoX19jb25zdCBjaGFyICpfX3BhdGgsIGNoYXIg
Kl9fY29uc3QgX19hcmd2W10sCgkJCWNoYXIgKl9fY29uc3QgX19lbnZwW10pICAgIDsKCgoKCgoK
CgoKCiAKZXh0ZXJuIGludCBleGVjdiAgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2Nv
bnN0IF9fYXJndltdKSAgICA7CgogCgpleHRlcm4gaW50IGV4ZWNsZSAgKF9fY29uc3QgY2hhciAq
X19wYXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pICAgIDsKCiAKCmV4dGVybiBpbnQgZXhl
Y2wgIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19jb25zdCBjaGFyICpfX2FyZywgLi4uKSAgICA7
CgogCgpleHRlcm4gaW50IGV4ZWN2cCAgKF9fY29uc3QgY2hhciAqX19maWxlLCBjaGFyICpfX2Nv
bnN0IF9fYXJndltdKSAgICA7CgogCgoKZXh0ZXJuIGludCBleGVjbHAgIChfX2NvbnN0IGNoYXIg
Kl9fZmlsZSwgX19jb25zdCBjaGFyICpfX2FyZywgLi4uKSAgICA7CgoKCiAKZXh0ZXJuIGludCBu
aWNlICAoaW50IF9faW5jKSAgICA7CgoKCiAKZXh0ZXJuIHZvaWQgX2V4aXQgIChpbnQgX19zdGF0
dXMpICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCiAKCgojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL2NvbmZuYW1lLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCmVudW0K
ICB7CiAgICBfUENfTElOS19NQVgsCgogICAgX1BDX01BWF9DQU5PTiwKCiAgICBfUENfTUFYX0lO
UFVULAoKICAgIF9QQ19OQU1FX01BWCwKCiAgICBfUENfUEFUSF9NQVgsCgogICAgX1BDX1BJUEVf
QlVGLAoKICAgIF9QQ19DSE9XTl9SRVNUUklDVEVELAoKICAgIF9QQ19OT19UUlVOQywKCiAgICBf
UENfVkRJU0FCTEUsCgogICAgX1BDX1NZTkNfSU8sCgogICAgX1BDX0FTWU5DX0lPLAoKICAgIF9Q
Q19QUklPX0lPLAoKICAgIF9QQ19TT0NLX01BWEJVRiwKCiAgICBfUENfRklMRVNJWkVCSVRTCgog
IH07CgogCmVudW0KICB7CiAgICBfU0NfQVJHX01BWCwKCiAgICBfU0NfQ0hJTERfTUFYLAoKICAg
IF9TQ19DTEtfVENLLAoKICAgIF9TQ19OR1JPVVBTX01BWCwKCiAgICBfU0NfT1BFTl9NQVgsCgog
ICAgX1NDX1NUUkVBTV9NQVgsCgogICAgX1NDX1RaTkFNRV9NQVgsCgogICAgX1NDX0pPQl9DT05U
Uk9MLAoKICAgIF9TQ19TQVZFRF9JRFMsCgogICAgX1NDX1JFQUxUSU1FX1NJR05BTFMsCgogICAg
X1NDX1BSSU9SSVRZX1NDSEVEVUxJTkcsCgogICAgX1NDX1RJTUVSUywKCiAgICBfU0NfQVNZTkNI
Uk9OT1VTX0lPLAoKICAgIF9TQ19QUklPUklUSVpFRF9JTywKCiAgICBfU0NfU1lOQ0hST05JWkVE
X0lPLAoKICAgIF9TQ19GU1lOQywKCiAgICBfU0NfTUFQUEVEX0ZJTEVTLAoKICAgIF9TQ19NRU1M
T0NLLAoKICAgIF9TQ19NRU1MT0NLX1JBTkdFLAoKICAgIF9TQ19NRU1PUllfUFJPVEVDVElPTiwK
CiAgICBfU0NfTUVTU0FHRV9QQVNTSU5HLAoKICAgIF9TQ19TRU1BUEhPUkVTLAoKICAgIF9TQ19T
SEFSRURfTUVNT1JZX09CSkVDVFMsCgogICAgX1NDX0FJT19MSVNUSU9fTUFYLAoKICAgIF9TQ19B
SU9fTUFYLAoKICAgIF9TQ19BSU9fUFJJT19ERUxUQV9NQVgsCgogICAgX1NDX0RFTEFZVElNRVJf
TUFYLAoKICAgIF9TQ19NUV9PUEVOX01BWCwKCiAgICBfU0NfTVFfUFJJT19NQVgsCgogICAgX1ND
X1ZFUlNJT04sCgogICAgX1NDX1BBR0VTSVpFLAoKCiAgICBfU0NfUlRTSUdfTUFYLAoKICAgIF9T
Q19TRU1fTlNFTVNfTUFYLAoKICAgIF9TQ19TRU1fVkFMVUVfTUFYLAoKICAgIF9TQ19TSUdRVUVV
RV9NQVgsCgogICAgX1NDX1RJTUVSX01BWCwKCgogICAgIAoKICAgIF9TQ19CQ19CQVNFX01BWCwK
CiAgICBfU0NfQkNfRElNX01BWCwKCiAgICBfU0NfQkNfU0NBTEVfTUFYLAoKICAgIF9TQ19CQ19T
VFJJTkdfTUFYLAoKICAgIF9TQ19DT0xMX1dFSUdIVFNfTUFYLAoKICAgIF9TQ19FUVVJVl9DTEFT
U19NQVgsCgogICAgX1NDX0VYUFJfTkVTVF9NQVgsCgogICAgX1NDX0xJTkVfTUFYLAoKICAgIF9T
Q19SRV9EVVBfTUFYLAoKICAgIF9TQ19DSEFSQ0xBU1NfTkFNRV9NQVgsCgoKICAgIF9TQ18yX1ZF
UlNJT04sCgogICAgX1NDXzJfQ19CSU5ELAoKICAgIF9TQ18yX0NfREVWLAoKICAgIF9TQ18yX0ZP
UlRfREVWLAoKICAgIF9TQ18yX0ZPUlRfUlVOLAoKICAgIF9TQ18yX1NXX0RFViwKCiAgICBfU0Nf
Ml9MT0NBTEVERUYsCgoKICAgIF9TQ19QSUksCgogICAgX1NDX1BJSV9YVEksCgogICAgX1NDX1BJ
SV9TT0NLRVQsCgogICAgX1NDX1BJSV9JTlRFUk5FVCwKCiAgICBfU0NfUElJX09TSSwKCiAgICBf
U0NfUE9MTCwKCiAgICBfU0NfU0VMRUNULAoKICAgIF9TQ19VSU9fTUFYSU9WLAoKICAgIF9TQ19Q
SUlfSU5URVJORVRfU1RSRUFNLAoKICAgIF9TQ19QSUlfSU5URVJORVRfREdSQU0sCgogICAgX1ND
X1BJSV9PU0lfQ09UUywKCiAgICBfU0NfUElJX09TSV9DTFRTLAoKICAgIF9TQ19QSUlfT1NJX00s
CgogICAgX1NDX1RfSU9WX01BWCwKCgogICAgIAogICAgX1NDX1RIUkVBRFMsCgogICAgX1NDX1RI
UkVBRF9TQUZFX0ZVTkNUSU9OUywKCiAgICBfU0NfR0VUR1JfUl9TSVpFX01BWCwKCiAgICBfU0Nf
R0VUUFdfUl9TSVpFX01BWCwKCiAgICBfU0NfTE9HSU5fTkFNRV9NQVgsCgogICAgX1NDX1RUWV9O
QU1FX01BWCwKCiAgICBfU0NfVEhSRUFEX0RFU1RSVUNUT1JfSVRFUkFUSU9OUywKCiAgICBfU0Nf
VEhSRUFEX0tFWVNfTUFYLAoKICAgIF9TQ19USFJFQURfU1RBQ0tfTUlOLAoKICAgIF9TQ19USFJF
QURfVEhSRUFEU19NQVgsCgogICAgX1NDX1RIUkVBRF9BVFRSX1NUQUNLQUREUiwKCiAgICBfU0Nf
VEhSRUFEX0FUVFJfU1RBQ0tTSVpFLAoKICAgIF9TQ19USFJFQURfUFJJT1JJVFlfU0NIRURVTElO
RywKCiAgICBfU0NfVEhSRUFEX1BSSU9fSU5IRVJJVCwKCiAgICBfU0NfVEhSRUFEX1BSSU9fUFJP
VEVDVCwKCiAgICBfU0NfVEhSRUFEX1BST0NFU1NfU0hBUkVELAoKCiAgICBfU0NfTlBST0NFU1NP
UlNfQ09ORiwKCiAgICBfU0NfTlBST0NFU1NPUlNfT05MTiwKCiAgICBfU0NfUEhZU19QQUdFUywK
CiAgICBfU0NfQVZQSFlTX1BBR0VTLAoKICAgIF9TQ19BVEVYSVRfTUFYLAoKICAgIF9TQ19QQVNT
X01BWCwKCgogICAgX1NDX1hPUEVOX1ZFUlNJT04sCgogICAgX1NDX1hPUEVOX1hDVV9WRVJTSU9O
LAoKICAgIF9TQ19YT1BFTl9VTklYLAoKICAgIF9TQ19YT1BFTl9DUllQVCwKCiAgICBfU0NfWE9Q
RU5fRU5IX0kxOE4sCgogICAgX1NDX1hPUEVOX1NITSwKCgogICAgX1NDXzJfQ0hBUl9URVJNLAoK
ICAgIF9TQ18yX0NfVkVSU0lPTiwKCiAgICBfU0NfMl9VUEUsCgoKICAgIF9TQ19YT1BFTl9YUEcy
LAoKICAgIF9TQ19YT1BFTl9YUEczLAoKICAgIF9TQ19YT1BFTl9YUEc0LAoKCiAgICBfU0NfQ0hB
Ul9CSVQsCgogICAgX1NDX0NIQVJfTUFYLAoKICAgIF9TQ19DSEFSX01JTiwKCiAgICBfU0NfSU5U
X01BWCwKCiAgICBfU0NfSU5UX01JTiwKCiAgICBfU0NfTE9OR19CSVQsCgogICAgX1NDX1dPUkRf
QklULAoKICAgIF9TQ19NQl9MRU5fTUFYLAoKICAgIF9TQ19OWkVSTywKCiAgICBfU0NfU1NJWkVf
TUFYLAoKICAgIF9TQ19TQ0hBUl9NQVgsCgogICAgX1NDX1NDSEFSX01JTiwKCiAgICBfU0NfU0hS
VF9NQVgsCgogICAgX1NDX1NIUlRfTUlOLAoKICAgIF9TQ19VQ0hBUl9NQVgsCgogICAgX1NDX1VJ
TlRfTUFYLAoKICAgIF9TQ19VTE9OR19NQVgsCgogICAgX1NDX1VTSFJUX01BWCwKCgogICAgX1ND
X05MX0FSR01BWCwKCiAgICBfU0NfTkxfTEFOR01BWCwKCiAgICBfU0NfTkxfTVNHTUFYLAoKICAg
IF9TQ19OTF9OTUFYLAoKICAgIF9TQ19OTF9TRVRNQVgsCgogICAgX1NDX05MX1RFWFRNQVgsCgoK
ICAgIF9TQ19YQlM1X0lMUDMyX09GRjMyLAoKICAgIF9TQ19YQlM1X0lMUDMyX09GRkJJRywKCiAg
ICBfU0NfWEJTNV9MUDY0X09GRjY0LAoKICAgIF9TQ19YQlM1X0xQQklHX09GRkJJRywKCgogICAg
X1NDX1hPUEVOX0xFR0FDWSwKCiAgICBfU0NfWE9QRU5fUkVBTFRJTUUsCgogICAgX1NDX1hPUEVO
X1JFQUxUSU1FX1RIUkVBRFMKCiAgfTsKCgoKCiAKZW51bQogIHsKICAgIF9DU19QQVRICQkJIAoK
CiMgMzcwICIvdXNyL2luY2x1ZGUvYml0cy9jb25mbmFtZS5oIiAzCgoKIyA0MDYgIi91c3IvaW5j
bHVkZS9iaXRzL2NvbmZuYW1lLmgiIDMKCiAgfTsKCiMgNDk3ICIvdXNyL2luY2x1ZGUvdW5pc3Rk
LmgiIDIgMwoKCiAKZXh0ZXJuIGxvbmcgaW50IHBhdGhjb25mICAoX19jb25zdCBjaGFyICpfX3Bh
dGgsIGludCBfX25hbWUpICAgIDsKCiAKZXh0ZXJuIGxvbmcgaW50IGZwYXRoY29uZiAgKGludCBf
X2ZkLCBpbnQgX19uYW1lKSAgICA7CgogCmV4dGVybiBsb25nIGludCBzeXNjb25mICAoaW50IF9f
bmFtZSkgICAgOwoKCiAKZXh0ZXJuIHNpemVfdCBjb25mc3RyICAoaW50IF9fbmFtZSwgY2hhciAq
X19idWYsIHNpemVfdCBfX2xlbikgICAgOwoKCgogCmV4dGVybiBfX3BpZF90IF9fZ2V0cGlkICAo
dm9pZCkgICAgOwpleHRlcm4gX19waWRfdCBnZXRwaWQgICh2b2lkKSAgICA7CgogCmV4dGVybiBf
X3BpZF90IGdldHBwaWQgICh2b2lkKSAgICA7CgogCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGdycCAg
KHZvaWQpICAgIDsKCgoKCgoKCgogCmV4dGVybiBfX3BpZF90IF9fZ2V0cGdpZCAgKF9fcGlkX3Qg
X19waWQpICAgIDsKCgoKCgogCgoKZXh0ZXJuIGludCBfX3NldHBnaWQgIChfX3BpZF90IF9fcGlk
LCBfX3BpZF90IF9fcGdpZCkgICAgOwpleHRlcm4gaW50IHNldHBnaWQgIChfX3BpZF90IF9fcGlk
LCBfX3BpZF90IF9fcGdpZCkgICAgOwoKCiAKCgoKCgoKCgoKCgogCgpleHRlcm4gaW50IHNldHBn
cnAgICh2b2lkKSAgICA7CgojIDU3MyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCgoKCiAKCgpl
eHRlcm4gX19waWRfdCBzZXRzaWQgICh2b2lkKSAgICA7CgoKCgoKCiAKZXh0ZXJuIF9fdWlkX3Qg
Z2V0dWlkICAodm9pZCkgICAgOwoKIApleHRlcm4gX191aWRfdCBnZXRldWlkICAodm9pZCkgICAg
OwoKIApleHRlcm4gX19naWRfdCBnZXRnaWQgICh2b2lkKSAgICA7CgogCmV4dGVybiBfX2dpZF90
IGdldGVnaWQgICh2b2lkKSAgICA7CgogCgoKZXh0ZXJuIGludCBnZXRncm91cHMgIChpbnQgX19z
aXplLCBfX2dpZF90IF9fbGlzdFtdKSAgICA7CgoKCgoKCiAKCgoKZXh0ZXJuIGludCBzZXR1aWQg
IChfX3VpZF90IF9fdWlkKSAgICA7CgoKIAoKZXh0ZXJuIGludCBzZXRyZXVpZCAgKF9fdWlkX3Qg
X19ydWlkLCBfX3VpZF90IF9fZXVpZCkgICAgOwoKCgogCmV4dGVybiBpbnQgc2V0ZXVpZCAgKF9f
dWlkX3QgX191aWQpICAgIDsKCgogCgoKCmV4dGVybiBpbnQgc2V0Z2lkICAoX19naWRfdCBfX2dp
ZCkgICAgOwoKCiAKCmV4dGVybiBpbnQgc2V0cmVnaWQgIChfX2dpZF90IF9fcmdpZCwgX19naWRf
dCBfX2VnaWQpICAgIDsKCgoKIApleHRlcm4gaW50IHNldGVnaWQgIChfX2dpZF90IF9fZ2lkKSAg
ICA7CgoKCiAKCgpleHRlcm4gX19waWRfdCBfX2ZvcmsgICh2b2lkKSAgICA7CmV4dGVybiBfX3Bp
ZF90IGZvcmsgICh2b2lkKSAgICA7CgoKIAoKCgpleHRlcm4gX19waWRfdCB2Zm9yayAgKHZvaWQp
ICAgIDsKCgoKIAoKZXh0ZXJuIGNoYXIgKnR0eW5hbWUgIChpbnQgX19mZCkgICAgOwoKIAoKZXh0
ZXJuIGludCB0dHluYW1lX3IgIChpbnQgX19mZCwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1Zmxl
bikgICAgOwoKIAoKZXh0ZXJuIGludCBpc2F0dHkgIChpbnQgX19mZCkgICAgOwoKCiAKCmV4dGVy
biBpbnQgdHR5c2xvdCAgKHZvaWQpICAgIDsKCgoKIApleHRlcm4gaW50IGxpbmsgIChfX2NvbnN0
IGNoYXIgKl9fZnJvbSwgX19jb25zdCBjaGFyICpfX3RvKSAgICA7CgoKIApleHRlcm4gaW50IHN5
bWxpbmsgIChfX2NvbnN0IGNoYXIgKl9fZnJvbSwgX19jb25zdCBjaGFyICpfX3RvKSAgICA7Cgog
CgoKZXh0ZXJuIGludCByZWFkbGluayAgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2J1
Ziwgc2l6ZV90IF9fbGVuKSAgICA7CgoKIApleHRlcm4gaW50IHVubGluayAgKF9fY29uc3QgY2hh
ciAqX19uYW1lKSAgICA7CgogCmV4dGVybiBpbnQgcm1kaXIgIChfX2NvbnN0IGNoYXIgKl9fcGF0
aCkgICAgOwoKCiAKZXh0ZXJuIF9fcGlkX3QgdGNnZXRwZ3JwICAoaW50IF9fZmQpICAgIDsKCiAK
ZXh0ZXJuIGludCB0Y3NldHBncnAgIChpbnQgX19mZCwgX19waWRfdCBfX3BncnBfaWQpICAgIDsK
CgogCmV4dGVybiBjaGFyICpnZXRsb2dpbiAgKHZvaWQpICAgIDsKCgoKCgoKCgogCmV4dGVybiBp
bnQgc2V0bG9naW4gIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgICAgOwoKCgoKIAoKCgojIDEgIi91
c3IvaW5jbHVkZS9nZXRvcHQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAK
CgoKCgpleHRlcm4gY2hhciAqb3B0YXJnOwoKIAoKCgoKCgoKCgoKCmV4dGVybiBpbnQgb3B0aW5k
OwoKIAoKCmV4dGVybiBpbnQgb3B0ZXJyOwoKIAoKZXh0ZXJuIGludCBvcHRvcHQ7CgojIDEwMiAi
L3Vzci9pbmNsdWRlL2dldG9wdC5oIiAzCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAK
CgpleHRlcm4gaW50IGdldG9wdCAoaW50IF9fYXJnYywgY2hhciAqY29uc3QgKl9fYXJndiwgY29u
c3QgY2hhciAqX19zaG9ydG9wdHMpOwoKCgoKIyAxNTEgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIg
MwoKIyAxNjAgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMwoKCgoKCgogCgoKCiMgNzI0ICIvdXNy
L2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKCgoKCgogCgoKZXh0ZXJuIGludCBnZXRob3N0bmFtZSAg
KGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSAgICA7CgogCgpleHRlcm4gaW50IHNldGhvc3Ru
YW1lICAoX19jb25zdCBjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikgICAgOwoKIAoKZXh0ZXJu
IGludCBzZXRob3N0aWQgIChsb25nIGludCBfX2lkKSAgICA7CgoKIAoKCmV4dGVybiBpbnQgZ2V0
ZG9tYWlubmFtZSAgKGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSAgICA7CmV4dGVybiBpbnQg
c2V0ZG9tYWlubmFtZSAgKF9fY29uc3QgY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pICAgIDsK
CgogCmV4dGVybiBpbnQgZnN5bmMgIChpbnQgX19mZCkgICAgOwoKCiAKCgpleHRlcm4gaW50IHZo
YW5ndXAgICh2b2lkKSAgICA7CgogCmV4dGVybiBpbnQgcmV2b2tlICAoX19jb25zdCBjaGFyICpf
X2ZpbGUpICAgIDsKCgogCgoKCgpleHRlcm4gaW50IHByb2ZpbCAgKHVuc2lnbmVkIHNob3J0IGlu
dCAqX19zYW1wbGVfYnVmZmVyLCBzaXplX3QgX19zaXplLAoJCQlzaXplX3QgX19vZmZzZXQsIHVu
c2lnbmVkIGludCBfX3NjYWxlKSAgICA7CgoKIAoKCmV4dGVybiBpbnQgYWNjdCAgKF9fY29uc3Qg
Y2hhciAqX19uYW1lKSAgICA7CgogCgpleHRlcm4gaW50IGNocm9vdCAgKF9fY29uc3QgY2hhciAq
X19wYXRoKSAgICA7CgoKIApleHRlcm4gY2hhciAqZ2V0dXNlcnNoZWxsICAodm9pZCkgICAgOwpl
eHRlcm4gdm9pZCBlbmR1c2Vyc2hlbGwgICh2b2lkKSAgICA7ICAKZXh0ZXJuIHZvaWQgc2V0dXNl
cnNoZWxsICAodm9pZCkgICAgOyAgCgoKIAoKZXh0ZXJuIGNoYXIgKmdldHBhc3MgIChfX2NvbnN0
IGNoYXIgKl9fcHJvbXB0KSAgICA7CgogCgoKZXh0ZXJuIGludCBkYWVtb24gIChpbnQgX19ub2No
ZGlyLCBpbnQgX19ub2Nsb3NlKSAgICA7CgoKCgoKCiAKZXh0ZXJuIGxvbmcgaW50IGdldGhvc3Rp
ZCAgKHZvaWQpICAgIDsKCiAKZXh0ZXJuIGludCBzeW5jICAodm9pZCkgICAgOwoKCiAKCmV4dGVy
biBpbnQgX19nZXRwYWdlc2l6ZSAgKHZvaWQpICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CmV4dGVybiBpbnQgZ2V0cGFnZXNpemUgICh2b2lkKSAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCiAKCmV4dGVybiBpbnQgdHJ1bmNhdGUgIChfX2NvbnN0IGNoYXIgKl9fZmls
ZSwgX19vZmZfdCBfX2xlbmd0aCkgICAgOwojIDgyNyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAz
CgoKCgoKIApleHRlcm4gaW50IF9fZnRydW5jYXRlICAoaW50IF9fZmQsIF9fb2ZmX3QgX19sZW5n
dGgpICAgIDsKCmV4dGVybiBpbnQgZnRydW5jYXRlICAoaW50IF9fZmQsIF9fb2ZmX3QgX19sZW5n
dGgpICAgIDsKCgoKCgoKCgoKCgoKCiAKCmV4dGVybiBpbnQgZ2V0ZHRhYmxlc2l6ZSAgKHZvaWQp
ICAgIDsKCgoKCgoKIAoKZXh0ZXJuIGludCBicmsgICh2b2lkICogIF9fYWRkcikgICAgOwoKCiMg
MSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9z
dGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3
YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMg
NjEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUv
c3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGludCBwdHJkaWZmX3Q7CgoKCgoKCgoKCiAKCgoKCiAK
CiAKCiMgMTkwICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9p
bmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgoKCiAKCiMgMjcxICIvdXNyL2xpYi9nY2MtbGliL3Mz
OTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIyAyODMgIi91
c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVm
LmgiIDMKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51
eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoj
IDg2MyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCgogCgoKCmV4dGVybiB2b2lkICogIF9f
c2JyayAgKHB0cmRpZmZfdCBfX2RlbHRhKSAgICA7CmV4dGVybiB2b2lkICogIHNicmsgIChwdHJk
aWZmX3QgX19kZWx0YSkgICAgOwoKCgoKIAoKCgoKCgoKCgpleHRlcm4gbG9uZyBpbnQgc3lzY2Fs
bCAgKGxvbmcgaW50IF9fc3lzbm8sIC4uLikgICAgOwoKCgoKCiAKCgoKIAoKCgoKCgoKCgpleHRl
cm4gaW50IGxvY2tmICAoaW50IF9fZmQsIGludCBfX2NtZCwgX19vZmZfdCBfX2xlbikgICAgOwoK
CgoKCgoKCgoKCgoKCiMgOTQwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKCgoKIAoKZXh0ZXJu
IGludCBmZGF0YXN5bmMgIChpbnQgX19maWxkZXMpICAgIDsKCgoKIAoKIyA5NjggIi91c3IvaW5j
bHVkZS91bmlzdGQuaCIgMwoKCgogCgojIDk4MyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCgoK
CgogCgogCgoKCgoKCgoKCmV4dGVybiBpbnQgcHRocmVhZF9hdGZvcmsgICh2b2lkICgqX19wcmVw
YXJlKSAodm9pZCksCgkJCQl2b2lkICgqX19wYXJlbnQpICh2b2lkKSwKCQkJCXZvaWQgKCpfX2No
aWxkKSAodm9pZCkpICAgIDsKCgogCgoKIyAxMyAibWtyZWlzZXJmcy5jIiAyCgojIDEgIi91c3Iv
aW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIAoK
CgoKdHlwZWRlZiBfX3VfY2hhciB1X2NoYXI7CnR5cGVkZWYgX191X3Nob3J0IHVfc2hvcnQ7CnR5
cGVkZWYgX191X2ludCB1X2ludDsKdHlwZWRlZiBfX3VfbG9uZyB1X2xvbmc7CnR5cGVkZWYgX19x
dWFkX3QgcXVhZF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgdV9xdWFkX3Q7CnR5cGVkZWYgX19mc2lk
X3QgZnNpZF90OwoKCnR5cGVkZWYgX19sb2ZmX3QgbG9mZl90OwoKCgp0eXBlZGVmIF9faW5vX3Qg
aW5vX3Q7CgoKCgoKCgoKCgoKdHlwZWRlZiBfX2Rldl90IGRldl90OwoKCgoKdHlwZWRlZiBfX2dp
ZF90IGdpZF90OwoKCgoKdHlwZWRlZiBfX21vZGVfdCBtb2RlX3Q7CgoKCgp0eXBlZGVmIF9fbmxp
bmtfdCBubGlua190OwoKCgoKdHlwZWRlZiBfX3VpZF90IHVpZF90OwoKCgoKCgoKCgoKCgoKCgoK
CnR5cGVkZWYgX19waWRfdCBwaWRfdDsKCgoKCnR5cGVkZWYgX19pZF90IGlkX3Q7CgoKCgoKCgoK
dHlwZWRlZiBfX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2NhZGRyX3QgY2FkZHJfdDsKCgoK
dHlwZWRlZiBfX2tleV90IGtleV90OwoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEg
MwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCiMgNTEgIi91c3IvaW5jbHVkZS90
aW1lLmgiIDMKCgoKIyA2MiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoKCgoKCiAKdHlwZWRl
ZiBfX3RpbWVfdCB0aW1lX3Q7CgoKCgoKIyA4OSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoK
IyAyNzkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyAxMjIgIi91c3IvaW5jbHVkZS9zeXMv
dHlwZXMuaCIgMiAzCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51
eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9n
Y2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoK
CiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGlu
dXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoK
CgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGlu
dXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAxODggIi91c3IvbGliL2dj
Yy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoK
CgogCgoKCgogCgojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8y
Ljk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiMgMjgzICIvdXNyL2xpYi9nY2MtbGliL3MzOTAt
c2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKIyAzMTcg
Ii91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxMjUgIi91c3IvaW5jbHVkZS9z
eXMvdHlwZXMuaCIgMiAzCgoKCiAKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCB1bG9uZzsKdHlw
ZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgdXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50
OwoKCiAKCiMgMTU5ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKCgogCgoKCgoKCgp0eXBl
ZGVmIGludCBpbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fUUlfXyApKSkgOwp0
eXBlZGVmIGludCBpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX0hJX18gKSkp
IDsKdHlwZWRlZiBpbnQgaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19TSV9f
ICkpKSA7CnR5cGVkZWYgaW50IGludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9f
RElfXyApKSkgOwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50OF90IF9fYXR0cmlidXRlX18g
KChfX21vZGVfXyAoICBfX1FJX18gKSkpIDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQxNl90
IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX0hJX18gKSkpIDsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgdV9pbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX1NJX18gKSkpIDsK
dHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAo
ICBfX0RJX18gKSkpIDsKCnR5cGVkZWYgaW50IHJlZ2lzdGVyX3QgX19hdHRyaWJ1dGVfXyAoKF9f
bW9kZV9fIChfX3dvcmRfXykpKTsKCgogCgoKCgoKCiAKCgogCiMgMSAiL3Vzci9pbmNsdWRlL3N5
cy9zZWxlY3QuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgogCgoKIAojIDEgIi91
c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CgoKCgoKCgoKCiMgMzEgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiAKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlw
ZWRlZiBpbnQgX19zaWdfYXRvbWljX3Q7CgogCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICB1bnNp
Z25lZCBsb25nIGludCBfX3ZhbFsoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGlu
dCkpKSBdOwogIH0gX19zaWdzZXRfdDsKCgoKCiAKCgoKCgojIDEyNSAiL3Vzci9pbmNsdWRlL2Jp
dHMvc2lnc2V0LmgiIDMKCiMgMzQgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiAK
CiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoK
CgoKCgoKCgoKIyA1MSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgojIDYyICIvdXNyL2luY2x1
ZGUvdGltZS5oIiAzCgoKCiMgNzMgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKCgoKCgogCgpz
dHJ1Y3QgdGltZXNwZWMKICB7CiAgICBsb25nIGludCB0dl9zZWM7CQkgCiAgICBsb25nIGludCB0
dl9uc2VjOwkJIAogIH07CgoKCgoKIyAyNzkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyAz
OCAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKIAoKIAoKCgpzdHJ1Y3QgdGltZXZh
bDsKCnR5cGVkZWYgX19mZF9tYXNrIGZkX21hc2s7CgogCnR5cGVkZWYgX19mZF9zZXQgZmRfc2V0
OwoKIAoKCgogCgoKCgogCgoKCgoKCiAKCgoKCmV4dGVybiBpbnQgX19zZWxlY3QgIChpbnQgX19u
ZmRzLCBfX2ZkX3NldCAqX19yZWFkZmRzLAoJCQkgIF9fZmRfc2V0ICpfX3dyaXRlZmRzLCBfX2Zk
X3NldCAqX19leGNlcHRmZHMsCgkJCSAgc3RydWN0IHRpbWV2YWwgKl9fdGltZW91dCkgICAgOwpl
eHRlcm4gaW50IHNlbGVjdCAgKGludCBfX25mZHMsIF9fZmRfc2V0ICpfX3JlYWRmZHMsCgkJCV9f
ZmRfc2V0ICpfX3dyaXRlZmRzLCBfX2ZkX3NldCAqX19leGNlcHRmZHMsCgkJCXN0cnVjdCB0aW1l
dmFsICpfX3RpbWVvdXQpICAgIDsKCiMgOTEgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMK
CgogCgoKIyAxOTQgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKIAojIDEgIi91c3Iv
aW5jbHVkZS9zeXMvc3lzbWFjcm9zLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
CgoKCgojIDQ3ICIvdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIiAzCgoKCiMgMTk3ICIvdXNy
L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgoKIAoKdHlwZWRlZiBfX2Jsa2NudF90IGJsa2Nu
dF90OwkgIAp0eXBlZGVmIF9fZnNibGtjbnRfdCBmc2Jsa2NudF90OyAgCnR5cGVkZWYgX19mc2Zp
bGNudF90IGZzZmlsY250X3Q7ICAKCgoKCgoKCgoKCgoKIAoKCiMgMTQgIm1rcmVpc2VyZnMuYyIg
MgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgog
CgoKCgoKCgoKCgojIDc4ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMwoKCgoKCgoKCgogCgoj
IDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0YXQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
IAoKCgoKCgogCgoKCgoKc3RydWN0IHN0YXQKICB7CiAgICBfX2Rldl90IHN0X2RldjsJCQkgCiAg
ICB1bnNpZ25lZCBzaG9ydCBpbnQgX19wYWQxOwoKICAgIF9faW5vX3Qgc3RfaW5vOwkJCSAKCgoK
ICAgIF9fbW9kZV90IHN0X21vZGU7CQkJIAogICAgX19ubGlua190IHN0X25saW5rOwkJCSAKICAg
IF9fdWlkX3Qgc3RfdWlkOwkJCSAKICAgIF9fZ2lkX3Qgc3RfZ2lkOwkJCSAKICAgIF9fZGV2X3Qg
c3RfcmRldjsJCQkgCiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19wYWQyOwoKICAgIF9fb2ZmX3Qg
c3Rfc2l6ZTsJCQkgCgoKCiAgICB1bnNpZ25lZCBsb25nIGludCBzdF9ibGtzaXplOwkgCgoKICAg
IF9fYmxrY250X3Qgc3RfYmxvY2tzOwkJIAoKCgogICAgX190aW1lX3Qgc3RfYXRpbWU7CQkJIAog
ICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQxOwogICAgX190aW1lX3Qgc3RfbXRpbWU7CQkJ
IAogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQyOwogICAgX190aW1lX3Qgc3RfY3RpbWU7
CQkJIAogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQzOwogICAgdW5zaWduZWQgbG9uZyBp
bnQgX191bnVzZWQ0OwogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQ1OwogIH07CgojIDk5
ICIvdXNyL2luY2x1ZGUvYml0cy9zdGF0LmgiIDMKCgogCgoKCiAKCgoKIAoKCgoKCgogCgoKCiAK
CgoKCgoKCiMgODkgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAyIDMKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgoKCgoKCiAKCgoKCgoKCgoK
CgogCgoKCgoKIAoKCgoKIAoKCgoKCgoKCgogCmV4dGVybiBpbnQgc3RhdCAgKF9fY29uc3QgY2hh
ciAqX19maWxlLCBzdHJ1Y3Qgc3RhdCAqX19idWYpICAgIDsKCiAKCmV4dGVybiBpbnQgZnN0YXQg
IChpbnQgX19mZCwgc3RydWN0IHN0YXQgKl9fYnVmKSAgICA7CiMgMTk1ICIvdXNyL2luY2x1ZGUv
c3lzL3N0YXQuaCIgMwoKCgoKCgoKCiAKCmV4dGVybiBpbnQgbHN0YXQgIChfX2NvbnN0IGNoYXIg
Kl9fZmlsZSwgc3RydWN0IHN0YXQgKl9fYnVmKSAgICA7CgoKCgoKCgoKCgoKCgogCgoKZXh0ZXJu
IGludCBjaG1vZCAgKF9fY29uc3QgY2hhciAqX19maWxlLCBfX21vZGVfdCBfX21vZGUpICAgIDsK
CiAKCmV4dGVybiBpbnQgZmNobW9kICAoaW50IF9fZmQsIF9fbW9kZV90IF9fbW9kZSkgICAgOwoK
CgogCgpleHRlcm4gX19tb2RlX3QgdW1hc2sgIChfX21vZGVfdCBfX21hc2spICAgIDsKCgoKCgoK
CiAKZXh0ZXJuIGludCBta2RpciAgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX21vZGVfdCBfX21v
ZGUpICAgIDsKCiAKCgoKZXh0ZXJuIGludCBta25vZCAgKF9fY29uc3QgY2hhciAqX19wYXRoLAoJ
CSAgICAgICBfX21vZGVfdCBfX21vZGUsIF9fZGV2X3QgX19kZXYpICAgIDsKCgoKIApleHRlcm4g
aW50IG1rZmlmbyAgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX21vZGVfdCBfX21vZGUpICAgIDsK
DAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCmV4dGVybiBpbnQgX19meHN0YXQgIChpbnQgX192
ZXIsIGludCBfX2ZpbGRlcywKCQkJICBzdHJ1Y3Qgc3RhdCAqX19zdGF0X2J1ZikgICAgOwpleHRl
cm4gaW50IF9feHN0YXQgIChpbnQgX192ZXIsIF9fY29uc3QgY2hhciAqX19maWxlbmFtZSwKCQkJ
IHN0cnVjdCBzdGF0ICpfX3N0YXRfYnVmKSAgICA7CmV4dGVybiBpbnQgX19seHN0YXQgIChpbnQg
X192ZXIsIF9fY29uc3QgY2hhciAqX19maWxlbmFtZSwKCQkJICBzdHJ1Y3Qgc3RhdCAqX19zdGF0
X2J1ZikgICAgOwojIDI5OSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKCgoKCgoKCgoKCmV4
dGVybiBpbnQgX194bWtub2QgIChpbnQgX192ZXIsIF9fY29uc3QgY2hhciAqX19wYXRoLAoJCQkg
IF9fbW9kZV90IF9fbW9kZSwgX19kZXZfdCAqX19kZXYpICAgIDsKCgogCgpleHRlcm4gX19pbmxp
bmVfXyBpbnQgc3RhdCAoX19jb25zdCBjaGFyICpfX3BhdGgsCgkJCSAgICBzdHJ1Y3Qgc3RhdCAq
X19zdGF0YnVmKSAgCnsKICByZXR1cm4gX194c3RhdCAoMyAgLCBfX3BhdGgsIF9fc3RhdGJ1Zik7
Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgbHN0YXQgKF9fY29uc3QgY2hhciAqX19wYXRoLAoJ
CQkgICAgIHN0cnVjdCBzdGF0ICpfX3N0YXRidWYpICAKewogIHJldHVybiBfX2x4c3RhdCAoMyAg
LCBfX3BhdGgsIF9fc3RhdGJ1Zik7Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgZnN0YXQgKGlu
dCBfX2ZkLCBzdHJ1Y3Qgc3RhdCAqX19zdGF0YnVmKSAgCnsKICByZXR1cm4gX19meHN0YXQgKDMg
ICwgX19mZCwgX19zdGF0YnVmKTsKfQoKCmV4dGVybiBfX2lubGluZV9fIGludCBta25vZCAoX19j
b25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSwKCQkJICAgICBfX2Rldl90IF9fZGV2
KSAgCnsKICByZXR1cm4gX194bWtub2QgKDEgICwgX19wYXRoLCBfX21vZGUsICZfX2Rldik7Cn0K
CgojIDM2MSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKCgoKCiAKCgoKIyAxNSAibWtyZWlz
ZXJmcy5jIiAyCgojIDEgIi91c3IvaW5jbHVkZS9mY250bC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoK
CgoKCiAKCgoKCgoKCgogCiAKCiAKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZmNudGwuaCIgMSAz
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
CgoKCgoKCgogCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgogCgoKIAoKCgoKIAoKCgoKIAoKCgoK
CgoKc3RydWN0IGZsb2NrCiAgewogICAgc2hvcnQgaW50IGxfdHlwZTsJIAogICAgc2hvcnQgaW50
IGxfd2hlbmNlOwkgCgogICAgX19vZmZfdCBsX3N0YXJ0OwkgCiAgICBfX29mZl90IGxfbGVuOwkg
CgoKCgogICAgX19waWRfdCBsX3BpZDsJIAogIH07CgojIDEzMSAiL3Vzci9pbmNsdWRlL2JpdHMv
ZmNudGwuaCIgMwoKCiAKCgoKCgoKCgojIDMzICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMiAzCgoK
IAoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCiAKCmV4dGVybiBpbnQgX19mY250bCAgKGludCBfX2Zk
LCBpbnQgX19jbWQsIC4uLikgICAgOwpleHRlcm4gaW50IGZjbnRsICAoaW50IF9fZmQsIGludCBf
X2NtZCwgLi4uKSAgICA7CgogCgoKZXh0ZXJuIGludCBfX29wZW4gIChfX2NvbnN0IGNoYXIgKl9f
ZmlsZSwgaW50IF9fb2ZsYWcsIC4uLikgICAgOwoKZXh0ZXJuIGludCBvcGVuICAoX19jb25zdCBj
aGFyICpfX2ZpbGUsIGludCBfX29mbGFnLCAuLi4pICAgIDsKCgoKCgoKCgoKCgoKIAoKCgpleHRl
cm4gaW50IGNyZWF0ICAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fbW9kZV90IF9fbW9kZSkgICAg
OwoKCgoKCgoKCgoKCgojIDEyNiAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDMKCgogCgoKIyAxNiAi
bWtyZWlzZXJmcy5jIiAyCgojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwogCgoKCgoKCgoK
CgoKCgoKCgoKIAoKCgoKCgoKCgoKIAoKCgoKIAoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkw
LXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgoj
IDE5ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRl
L3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvczM5
MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbGliL2djYy1saWIvczM5
MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAx
ODggIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUv
c3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNs
YWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiMgMjgzICIvdXNyL2xp
Yi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAz
CgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45
NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAzOCAi
L3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCgoKIAoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90aW1l
LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiAKCgogCgoKCgoKIAoKCgoKCgoK
IyA1OSAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAzCiAKIyA0MiAiL3Vzci9pbmNsdWRlL3Rp
bWUuaCIgMiAzCgoKIAoKCgoKCgoKCgoKCgoKCiAKdHlwZWRlZiBfX2Nsb2NrX3QgY2xvY2tfdDsK
CgoKCiMgNzMgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKCiMgODkgIi91c3IvaW5jbHVkZS90
aW1lLmgiIDMKCgoKCgogCnN0cnVjdCB0bQp7CiAgaW50IHRtX3NlYzsJCQkgCiAgaW50IHRtX21p
bjsJCQkgCiAgaW50IHRtX2hvdXI7CQkJIAogIGludCB0bV9tZGF5OwkJCSAKICBpbnQgdG1fbW9u
OwkJCSAKICBpbnQgdG1feWVhcjsJCQkgCiAgaW50IHRtX3dkYXk7CQkJIAogIGludCB0bV95ZGF5
OwkJCSAKICBpbnQgdG1faXNkc3Q7CQkJIAoKCiAgbG9uZyBpbnQgdG1fZ210b2ZmOwkJIAogIF9f
Y29uc3QgY2hhciAqdG1fem9uZTsJIAoKCgoKfTsKCgogCgpleHRlcm4gY2xvY2tfdCBjbG9jayAg
KHZvaWQpICAgIDsKCiAKZXh0ZXJuIHRpbWVfdCB0aW1lICAodGltZV90ICpfX3RpbWVyKSAgICA7
CgogCmV4dGVybiBkb3VibGUgZGlmZnRpbWUgICh0aW1lX3QgX190aW1lMSwgdGltZV90IF9fdGlt
ZTApICAgIAogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAKZXh0ZXJuIHRpbWVf
dCBta3RpbWUgIChzdHJ1Y3QgdG0gKl9fdHApICAgIDsKCgogCgoKZXh0ZXJuIHNpemVfdCBzdHJm
dGltZSAgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhzaXplLAoJCQkgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKCQkJICAgICBfX2NvbnN0IHN0cnVjdCB0
bSAqX19yZXN0cmljdCBfX3RwKSAgICA7CgoKCgoKCgoKCiAKCmV4dGVybiBzdHJ1Y3QgdG0gKmdt
dGltZSAgKF9fY29uc3QgdGltZV90ICpfX3RpbWVyKSAgICA7CgogCgpleHRlcm4gc3RydWN0IHRt
ICpsb2NhbHRpbWUgIChfX2NvbnN0IHRpbWVfdCAqX190aW1lcikgICAgOwoKCiAKCmV4dGVybiBz
dHJ1Y3QgdG0gKl9fZ210aW1lX3IgIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmljdCBfX3RpbWVy
LAoJCQkJICAgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApICAgIDsKZXh0ZXJuIHN0cnVjdCB0
bSAqZ210aW1lX3IgIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmljdCBfX3RpbWVyLAoJCQkJIHN0
cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSAgICA7CgogCgpleHRlcm4gc3RydWN0IHRtICpsb2Nh
bHRpbWVfciAgKF9fY29uc3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCgkJCQkgICAgc3Ry
dWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApICAgIDsKCgogCgpleHRlcm4gY2hhciAqYXNjdGltZSAg
KF9fY29uc3Qgc3RydWN0IHRtICpfX3RwKSAgICA7CgogCmV4dGVybiBjaGFyICpjdGltZSAgKF9f
Y29uc3QgdGltZV90ICpfX3RpbWVyKSAgICA7CgoKIAoKIAoKZXh0ZXJuIGNoYXIgKmFzY3RpbWVf
ciAgKF9fY29uc3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHAsCgkJCSAgICAgY2hhciAqX19y
ZXN0cmljdCBfX2J1ZikgICAgOwoKIApleHRlcm4gY2hhciAqY3RpbWVfciAgKF9fY29uc3QgdGlt
ZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCgkJCSAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYpICAg
IDsKCgoKIApleHRlcm4gY2hhciAqX190em5hbWVbMl07CSAKZXh0ZXJuIGludCBfX2RheWxpZ2h0
OwkJIApleHRlcm4gbG9uZyBpbnQgX190aW1lem9uZTsJIAoKCgogCmV4dGVybiBjaGFyICp0em5h
bWVbMl07CgogCgpleHRlcm4gdm9pZCB0enNldCAgKHZvaWQpICAgIDsKCgoKZXh0ZXJuIGludCBk
YXlsaWdodDsKZXh0ZXJuIGxvbmcgaW50IHRpbWV6b25lOwoKCgogCgpleHRlcm4gaW50IHN0aW1l
ICAoX19jb25zdCB0aW1lX3QgKl9fd2hlbikgICAgOwoKCgogCgoKCgoKCiAKCgogCmV4dGVybiB0
aW1lX3QgdGltZWdtICAoc3RydWN0IHRtICpfX3RwKSAgICA7CgogCmV4dGVybiB0aW1lX3QgdGlt
ZWxvY2FsICAoc3RydWN0IHRtICpfX3RwKSAgICA7CgogCmV4dGVybiBpbnQgZHlzaXplICAoaW50
IF9feWVhcikgICAgOwoKCgoKIApleHRlcm4gaW50IG5hbm9zbGVlcCAgKF9fY29uc3Qgc3RydWN0
IHRpbWVzcGVjICpfX3JlcXVlc3RlZF90aW1lLAoJCQkgICBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVt
YWluaW5nKSAgICA7CgoKCiMgMjY0ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKIyAyNzQgIi91
c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIAoKCgoKIyAxNyAibWtyZWlzZXJmcy5jIiAyCgojIDEg
Ii91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgog
CgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9p
bmNsdWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1saWIvczM5
MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoK
CgogCgoKIyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIv
aW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgog
CgogCgojIDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIv
aW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCgojIDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9zMzkw
LXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAK
CgojIDI2OSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5j
bHVkZS9zdGRkZWYuaCIgMwoKCgoKIyAyODMgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dh
cmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgojIDMxNyAiL3Vzci9s
aWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIg
MwoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDMzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgi
IDIgMwoKCiAKCgoKCiAKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgcXVvdDsJCQkgCiAgICBp
bnQgcmVtOwkJCSAKICB9IGRpdl90OwoKIAoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25nIGlu
dCBxdW90OwkJIAogICAgbG9uZyBpbnQgcmVtOwkJIAogIH0gbGRpdl90OwoKCgojIDY1ICIvdXNy
L2luY2x1ZGUvc3RkbGliLmgiIDMKCgoKIAoKCgogCgoKCgoKIAoKZXh0ZXJuIHNpemVfdCBfX2N0
eXBlX2dldF9tYl9jdXJfbWF4ICAodm9pZCkgICAgOwoKCiAKZXh0ZXJuIGRvdWJsZSBhdG9mICAo
X19jb25zdCBjaGFyICpfX25wdHIpICAgIDsKIApleHRlcm4gaW50IGF0b2kgIChfX2NvbnN0IGNo
YXIgKl9fbnB0cikgICAgOwogCmV4dGVybiBsb25nIGludCBhdG9sICAoX19jb25zdCBjaGFyICpf
X25wdHIpICAgIDsKCgogCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxvbmcgbG9uZyBpbnQgYXRvbGwg
IChfX2NvbnN0IGNoYXIgKl9fbnB0cikgICAgOwoKCiAKZXh0ZXJuIGRvdWJsZSBzdHJ0b2QgIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkgICBjaGFyICoqX19yZXN0cmljdCBf
X2VuZHB0cikgICAgOwoKCgoKCgoKCgoKIApleHRlcm4gbG9uZyBpbnQgc3RydG9sICAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwgaW50IF9fYmFzZSkgICAgOwogCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBzdHJ0b3Vs
ICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCSAgICAgICBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwKCQkJCSAgICAgICBpbnQgX19iYXNlKSAgICA7CgoKIApfX2V4dGVu
c2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvcSAgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsCgkJCQkgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNl
KSAgICA7CiAKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBzdHJ0
b3VxICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkgICAgY2hhciAqKl9f
cmVzdHJpY3QgX19lbmRwdHIsCgkJCQkJICAgIGludCBfX2Jhc2UpICAgIDsKCgoKIAoKIApfX2V4
dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvbGwgIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19ucHRyLAoJCQkJICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBf
X2Jhc2UpICAgIDsKIApfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50
IHN0cnRvdWxsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkgICAgIGNo
YXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJCQkJCSAgICAgaW50IF9fYmFzZSkgICAgOwoKCgoj
IDE5MCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKCiAKCgpleHRlcm4gZG91YmxlIF9fc3Ry
dG9kX2ludGVybmFsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCSAgICAg
IGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJCQkJICAgICAgaW50IF9fZ3JvdXApICAgIDsK
ZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2ludGVybmFsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbnB0ciwKCQkJCSAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3Vw
KSAgICA7CmV4dGVybiBsb25nIGRvdWJsZSAgX19zdHJ0b2xkX2ludGVybmFsICAoX19jb25zdCBj
aGFyICoKCQkJCQkJX19yZXN0cmljdCBfX25wdHIsCgkJCQkJCWNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLAoJCQkJCQlpbnQgX19ncm91cCkgICAgOwoKZXh0ZXJuIGxvbmcgaW50IF9fc3RydG9s
X2ludGVybmFsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQljaGFyICoq
X19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCQlpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgICAgOwoK
CgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgX19zdHJ0b3VsX2ludGVybmFsICAoX19jb25zdCBj
aGFyICoKCQkJCQkJICBfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkJICBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwKCQkJCQkJICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgICAgOwoKCgoKX19l
eHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfaW50ZXJuYWwgIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkJCSAgICAgIGNoYXIgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLAoJCQkJCSAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSAgICA7CgoKCl9f
ZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19zdHJ0b3VsbF9pbnRl
cm5hbCAgKF9fY29uc3QgY2hhciAqCgkJCQkJCQlfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkJCWNo
YXIgKioKCQkJCQkJCV9fcmVzdHJpY3QgX19lbmRwdHIsCgkJCQkJCQlpbnQgX19iYXNlLAoJCQkJ
CQkJaW50IF9fZ3JvdXApICAgIDsKCgoKCgoKIAoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZQpzdHJ0
b2QgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyKSAgCnsKICByZXR1cm4gX19zdHJ0b2RfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIs
IDApOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGludApzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJaW50IF9fYmFzZSkg
IAp7CiAgcmV0dXJuIF9fc3RydG9sX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2Us
IDApOwp9CmV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGludApzdHJ0b3VsIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCSBp
bnQgX19iYXNlKSAgCnsKICByZXR1cm4gX19zdHJ0b3VsX2ludGVybmFsIChfX25wdHIsIF9fZW5k
cHRyLCBfX2Jhc2UsIDApOwp9CgojIDI3MSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKCl9f
ZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKc3RydG9xIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCWlu
dCBfX2Jhc2UpICAKewogIHJldHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRw
dHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdW5zaWduZWQg
bG9uZyBsb25nIGludApzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCSBpbnQgX19iYXNlKSAgCnsKICByZXR1cm4gX19z
dHJ0b3VsbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQoKCgpfX2V4
dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CnN0cnRvbGwgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJIGlu
dCBfX2Jhc2UpICAKewogIHJldHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRw
dHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdW5zaWduZWQg
bG9uZyBsb25nIGludApzdHJ0b3VsbCAoX19jb25zdCBjaGFyICogX19yZXN0cmljdCBfX25wdHIs
IGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJICBpbnQgX19iYXNlKSAgCnsKICByZXR1cm4g
X19zdHJ0b3VsbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQoKCmV4
dGVybiBfX2lubGluZSBkb3VibGUKYXRvZiAoX19jb25zdCBjaGFyICpfX25wdHIpICAKewogIHJl
dHVybiBzdHJ0b2QgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApICk7Cn0KZXh0ZXJuIF9f
aW5saW5lIGludAphdG9pIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgIAp7CiAgcmV0dXJuIChpbnQp
IHN0cnRvbCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCkgLCAxMCk7Cn0KZXh0ZXJuIF9f
aW5saW5lIGxvbmcgaW50CmF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKSAgCnsKICByZXR1cm4g
c3RydG9sIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSAsIDEwKTsKfQoKCl9fZXh0ZW5z
aW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKYXRvbGwgKF9fY29uc3QgY2hhciAq
X19ucHRyKSAgCnsKICByZXR1cm4gc3RydG9sbCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICop
MCkgLCAxMCk7Cn0KCgoKCgogCgoKZXh0ZXJuIGNoYXIgKmw2NGEgIChsb25nIGludCBfX24pICAg
IDsKCiAKZXh0ZXJuIGxvbmcgaW50IGE2NGwgIChfX2NvbnN0IGNoYXIgKl9fcykgICAgOwoKCgoK
IAoKCgogCmV4dGVybiBpbnQzMl90IHJhbmRvbSAgKHZvaWQpICAgIDsKCiAKZXh0ZXJuIHZvaWQg
c3JhbmRvbSAgKHVuc2lnbmVkIGludCBfX3NlZWQpICAgIDsKCiAKCgoKZXh0ZXJuIHZvaWQgKiAg
aW5pdHN0YXRlICAodW5zaWduZWQgaW50IF9fc2VlZCwgdm9pZCAqICBfX3N0YXRlYnVmLAoJCQkg
ICAgICAgc2l6ZV90IF9fc3RhdGVsZW4pICAgIDsKCiAKCmV4dGVybiB2b2lkICogIHNldHN0YXRl
ICAodm9pZCAqICBfX3N0YXRlYnVmKSAgICA7CgoKCiAKCgoKc3RydWN0IHJhbmRvbV9kYXRhCiAg
ewogICAgaW50MzJfdCAqZnB0cjsJCSAKICAgIGludDMyX3QgKnJwdHI7CQkgCiAgICBpbnQzMl90
ICpzdGF0ZTsJCSAKICAgIGludCByYW5kX3R5cGU7CQkgCiAgICBpbnQgcmFuZF9kZWc7CQkgCiAg
ICBpbnQgcmFuZF9zZXA7CQkgCiAgICBpbnQzMl90ICplbmRfcHRyOwkJIAogIH07CgpleHRlcm4g
aW50IHJhbmRvbV9yICAoc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmLAoJCQkg
IGludDMyX3QgKl9fcmVzdHJpY3QgX19yZXN1bHQpICAgIDsKCmV4dGVybiBpbnQgc3JhbmRvbV9y
ICAodW5zaWduZWQgaW50IF9fc2VlZCwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1ZikgICAgOwoK
ZXh0ZXJuIGludCBpbml0c3RhdGVfciAgKHVuc2lnbmVkIGludCBfX3NlZWQsCgkJCSAgICAgdm9p
ZCAqICBfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCgkJCSAgICAgc2l6ZV90IF9fc3RhdGVsZW4sCgkJ
CSAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKSAgICA7CgpleHRlcm4g
aW50IHNldHN0YXRlX3IgICh2b2lkICogIF9fcmVzdHJpY3QgX19zdGF0ZWJ1ZiwKCQkJICAgIHN0
cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgICAgOwoKCgoKIApleHRlcm4gaW50
IHJhbmQgICh2b2lkKSAgICA7CiAKZXh0ZXJuIHZvaWQgc3JhbmQgICh1bnNpZ25lZCBpbnQgX19z
ZWVkKSAgICA7CgoKIApleHRlcm4gaW50IHJhbmRfciAgKHVuc2lnbmVkIGludCAqX19zZWVkKSAg
ICA7CgoKCgogCgogCmV4dGVybiBkb3VibGUgZHJhbmQ0OCAgKHZvaWQpICAgIDsKZXh0ZXJuIGRv
dWJsZSBlcmFuZDQ4ICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pICAgIDsKCiAKZXh0
ZXJuIGxvbmcgaW50IGxyYW5kNDggICh2b2lkKSAgICA7CmV4dGVybiBsb25nIGludCBucmFuZDQ4
ICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pICAgIDsKCiAKZXh0ZXJuIGxvbmcgaW50
IG1yYW5kNDggICh2b2lkKSAgICA7CmV4dGVybiBsb25nIGludCBqcmFuZDQ4ICAodW5zaWduZWQg
c2hvcnQgaW50IF9feHN1YmlbM10pICAgIDsKCiAKZXh0ZXJuIHZvaWQgc3JhbmQ0OCAgKGxvbmcg
aW50IF9fc2VlZHZhbCkgICAgOwpleHRlcm4gdW5zaWduZWQgc2hvcnQgaW50ICpzZWVkNDggICh1
bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdKSAgICA7CmV4dGVybiB2b2lkIGxjb25nNDgg
ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSkgICAgOwoKIApzdHJ1Y3QgZHJhbmQ0OF9k
YXRhCiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IHhbM107CSAKICAgIHVuc2lnbmVkIHNob3J0
IGludCBhWzNdOwkgCiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgYzsJIAogICAgdW5zaWduZWQgc2hv
cnQgaW50IG9sZF94WzNdOyAgCiAgICBpbnQgaW5pdDsJCQkgCiAgfTsKCgogCmV4dGVybiBpbnQg
ZHJhbmQ0OF9yICAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKCQkJ
ICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSAgICA7CmV4dGVybiBpbnQgZXJhbmQ0OF9y
ICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCgkJCSAgIHN0cnVjdCBkcmFuZDQ4X2Rh
dGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCgkJCSAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3Vs
dCkgICAgOwoKIApleHRlcm4gaW50IGxyYW5kNDhfciAgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9f
cmVzdHJpY3QgX19idWZmZXIsCgkJCSAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSAg
ICA7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10s
CgkJCSAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCgkJCSAgIGxv
bmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSAgICA7CgogCmV4dGVybiBpbnQgbXJhbmQ0OF9y
ICAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKCQkJICAgbG9uZyBp
bnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpICAgIDsKZXh0ZXJuIGludCBqcmFuZDQ4X3IgICh1bnNp
Z25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKCQkJICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19y
ZXN0cmljdCBfX2J1ZmZlciwKCQkJICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpICAg
IDsKCiAKZXh0ZXJuIGludCBzcmFuZDQ4X3IgIChsb25nIGludCBfX3NlZWR2YWwsIHN0cnVjdCBk
cmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSAgICA7CgpleHRlcm4gaW50IHNlZWQ0OF9yICAodW5zaWdu
ZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSwKCQkJICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1
ZmZlcikgICAgOwoKZXh0ZXJuIGludCBsY29uZzQ4X3IgICh1bnNpZ25lZCBzaG9ydCBpbnQgX19w
YXJhbVs3XSwKCQkJICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpICAgIDsKCgoKCgoK
CgoKCgoKCgogCgpleHRlcm4gdm9pZCAqICByZWFsbG9jICAodm9pZCAqICBfX3B0ciwgc2l6ZV90
IF9fc2l6ZSkgICAgOwogCmV4dGVybiB2b2lkIGZyZWUgICh2b2lkICogIF9fcHRyKSAgICA7CgoK
IApleHRlcm4gdm9pZCBjZnJlZSAgKHZvaWQgKiAgX19wdHIpICAgIDsKCgoKIyAxICIvdXNyL2lu
Y2x1ZGUvYWxsb2NhLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2xp
Yi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAx
IDMKCgoKCgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgv
Mi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9s
aWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIg
MwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgojIDEzMSAiL3Vzci9s
aWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIg
MwoKCiAKCiAKCgojIDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8y
Ljk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCiMgMjcxICIvdXNyL2xpYi9n
Y2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoK
IyAyODMgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1
ZGUvc3RkZGVmLmgiIDMKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNr
d2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgojIDI1ICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDIgMwoKCiAKCiAKCgogCmV4dGVy
biB2b2lkICogIGFsbG9jYSAgKHNpemVfdCBfX3NpemUpICAgIDsKCgoKCgogCgoKIyA0OTIgIi91
c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgogCmV4dGVybiB2b2lkICogIHZhbGxvYyAgKHNp
emVfdCBfX3NpemUpICAgIDsKCgoKIApleHRlcm4gdm9pZCBhYm9ydCAgKHZvaWQpICAgICBfX2F0
dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKIApleHRlcm4gaW50IGF0ZXhpdCAgKHZvaWQg
KCpfX2Z1bmMpICh2b2lkKSkgICAgOwoKCiAKCmV4dGVybiBpbnQgX19vbl9leGl0ICAodm9pZCAo
Kl9fZnVuYykgKGludCBfX3N0YXR1cywgdm9pZCAqICBfX2FyZyksCgkJCSAgIHZvaWQgKiAgX19h
cmcpICAgIDsKZXh0ZXJuIGludCBvbl9leGl0ICAodm9pZCAoKl9fZnVuYykgKGludCBfX3N0YXR1
cywgdm9pZCAqICBfX2FyZyksCgkJCSB2b2lkICogIF9fYXJnKSAgICA7CgoKIAoKCmV4dGVybiB2
b2lkIGV4aXQgIChpbnQgX19zdGF0dXMpICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9f
KSk7CgoKCgoKCgoKIApleHRlcm4gY2hhciAqZ2V0ZW52ICAoX19jb25zdCBjaGFyICpfX25hbWUp
ICAgIDsKCiAKCmV4dGVybiBjaGFyICpfX3NlY3VyZV9nZXRlbnYgIChfX2NvbnN0IGNoYXIgKl9f
bmFtZSkgICAgOwoKCiAKIAoKZXh0ZXJuIGludCBwdXRlbnYgIChjaGFyICpfX3N0cmluZykgICAg
OwoKCgogCgpleHRlcm4gaW50IHNldGVudiAgKF9fY29uc3QgY2hhciAqX19uYW1lLCBfX2NvbnN0
IGNoYXIgKl9fdmFsdWUsCgkJCWludCBfX3JlcGxhY2UpICAgIDsKCiAKZXh0ZXJuIHZvaWQgdW5z
ZXRlbnYgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgICAgOwoKCgogCgoKZXh0ZXJuIGludCBjbGVh
cmVudiAgKHZvaWQpICAgIDsKCgoKCiAKCgoKZXh0ZXJuIGNoYXIgKm1rdGVtcCAgKGNoYXIgKl9f
dGVtcGxhdGUpICAgIDsKCiAKCgoKCmV4dGVybiBpbnQgbWtzdGVtcCAgKGNoYXIgKl9fdGVtcGxh
dGUpICAgIDsKCgoKIApleHRlcm4gaW50IHN5c3RlbSAgKF9fY29uc3QgY2hhciAqX19jb21tYW5k
KSAgICA7CgoKCgoKCgoKCgogCgoKCgoKZXh0ZXJuIGNoYXIgKnJlYWxwYXRoICAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKCQkJICAgIGNoYXIgKl9fcmVzdHJpY3QgX19yZXNvbHZl
ZCkgICAgOwoKCgogCgoKdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9mbl90KSAgKF9fY29uc3Qgdm9p
ZCAqICwgX19jb25zdCB2b2lkICogKSAgOwoKCgoKCgogCgpleHRlcm4gdm9pZCAqICBic2VhcmNo
ICAoX19jb25zdCB2b2lkICogIF9fa2V5LCBfX2NvbnN0IHZvaWQgKiAgX19iYXNlLAoJCQkgICAg
ICAgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCgkJCSAgICAgICBfX2NvbXBhcl9mbl90
IF9fY29tcGFyKSAgOwoKIAoKZXh0ZXJuIHZvaWQgcXNvcnQgICh2b2lkICogIF9fYmFzZSwgc2l6
ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCgkJCSAgX19jb21wYXJfZm5fdCBfX2NvbXBhcikg
IDsKCgogCmV4dGVybiBpbnQgYWJzICAoaW50IF9feCkgICAgIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKZXh0ZXJuIGxvbmcgaW50IGxhYnMgIChsb25nIGludCBfX3gpICAgICBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCiAKCiAKZXh0ZXJuIGRpdl90IGRpdiAgKGludCBf
X251bWVyLCBpbnQgX19kZW5vbSkgICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0
ZXJuIGxkaXZfdCBsZGl2ICAobG9uZyBpbnQgX19udW1lciwgbG9uZyBpbnQgX19kZW5vbSkgICAg
CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCgoKCiAKCgogCgoKZXh0ZXJu
IGNoYXIgKmVjdnQgIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJp
Y3QgX19kZWNwdCwKCQkJaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgICAgOwoKIAoKCmV4dGVybiBj
aGFyICpmY3Z0ICAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0
IF9fZGVjcHQsCgkJCWludCAqX19yZXN0cmljdCBfX3NpZ24pICAgIDsKCiAKCgpleHRlcm4gY2hh
ciAqZ2N2dCAgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSAgICA7
CgogCmV4dGVybiBjaGFyICpxZWN2dCAgKGxvbmcgZG91YmxlICBfX3ZhbHVlLCBpbnQgX19uZGln
aXQsCgkJCSBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikg
ICAgOwpleHRlcm4gY2hhciAqcWZjdnQgIChsb25nIGRvdWJsZSAgX192YWx1ZSwgaW50IF9fbmRp
Z2l0LAoJCQkgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24p
ICAgIDsKZXh0ZXJuIGNoYXIgKnFnY3Z0ICAobG9uZyBkb3VibGUgIF9fdmFsdWUsIGludCBfX25k
aWdpdCwgY2hhciAqX19idWYpICAgIDsKCgoKIAoKZXh0ZXJuIGludCBlY3Z0X3IgIChkb3VibGUg
X192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKCQkJaW50ICpf
X3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKCQkJc2l6ZV90IF9fbGVu
KSAgICA7CmV4dGVybiBpbnQgZmN2dF9yICAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwg
aW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCgkJCWludCAqX19yZXN0cmljdCBfX3NpZ24sIGNoYXIg
Kl9fcmVzdHJpY3QgX19idWYsCgkJCXNpemVfdCBfX2xlbikgICAgOwoKZXh0ZXJuIGludCBxZWN2
dF9yICAobG9uZyBkb3VibGUgIF9fdmFsdWUsIGludCBfX25kaWdpdCwKCQkJIGludCAqX19yZXN0
cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduLAoJCQkgY2hhciAqX19yZXN0cmlj
dCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSAgICA7CmV4dGVybiBpbnQgcWZjdnRfciAgKGxvbmcgZG91
YmxlICBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCgkJCSBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwg
aW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwKCQkJIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVf
dCBfX2xlbikgICAgOwoKCgoKIAoKZXh0ZXJuIGludCBtYmxlbiAgKF9fY29uc3QgY2hhciAqX19z
LCBzaXplX3QgX19uKSAgICA7CiAKCmV4dGVybiBpbnQgbWJ0b3djICAod2NoYXJfdCAqX19yZXN0
cmljdCBfX3B3YywKCQkJX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikg
ICAgOwogCgpleHRlcm4gaW50IHdjdG9tYiAgKGNoYXIgKl9fcywgd2NoYXJfdCBfX3djaGFyKSAg
ICA7CgoKIApleHRlcm4gc2l6ZV90IG1ic3Rvd2NzICAod2NoYXJfdCAqX19yZXN0cmljdCAgX19w
d2NzLAoJCQkgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pICAg
IDsKIApleHRlcm4gc2l6ZV90IHdjc3RvbWJzICAoY2hhciAqX19yZXN0cmljdCBfX3MsCgkJCSAg
ICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywgc2l6ZV90IF9fbikgICAgOwoK
CgogCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAgKF9fY29uc3QgY2hhciAqX19yZXNwb25zZSkgICAg
OwoKCgojIDczMiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKCiMgNzU2ICIvdXNyL2luY2x1
ZGUvc3RkbGliLmgiIDMKCgojIDc2NiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKCgoKIAoK
CiMgMTggIm1rcmVpc2VyZnMuYyIgMgoKIyAxICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMSAzCiAK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKCgoKCgogCgogCgojIDEgIi91c3IvaW5jbHVkZS9i
aXRzL2Vycm5vLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1
ZGUvbGludXgvZXJybm8uaCIgMSAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2FzbS9lcnJuby5oIiAx
IDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyA0ICIvdXNyL2luY2x1ZGUvbGludXgvZXJy
bm8uaCIgMiAzCgoKIyAyNCAiL3Vzci9pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDMKCgoKIyAyNSAi
L3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMiAzCgoKIAoKCiAKCgoKCiAKZXh0ZXJuIGludCBl
cnJubzsKCiAKZXh0ZXJuIGludCAqX19lcnJub19sb2NhdGlvbiAgKHZvaWQpICAgICBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCgogCgoKCgoKCgoKCgoKCgojIDM2ICIvdXNyL2lu
Y2x1ZGUvZXJybm8uaCIgMiAzCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIAoKCgoKCgoK
CgoKIyAxOSAibWtyZWlzZXJmcy5jIiAyCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvaW9jdGwuaCIg
MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCiAKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9p
b2N0bHMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAojIDEgIi91c3IvaW5jbHVkZS9h
c20vaW9jdGxzLmgiIDEgMwogCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9hc20vaW9jdGwu
aCIgMSAzCiAKCgoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CgoKCgoKCgoKCgogCgoKCgoKIAoKCgoKCiAKCgoKCgoKCgojIDEyICIvdXNyL2luY2x1ZGUvYXNt
L2lvY3Rscy5oIiAyIDMKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCiMgMjQgIi91c3IvaW5jbHVkZS9i
aXRzL2lvY3Rscy5oIiAyIDMKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCiAKCQkgICAgIAoKCgoKIAoKCgoKIAoKCgoKIAoKCgoKIAoKIAoKCgoKCgog
CgoKCgojIDI3ICIvdXNyL2luY2x1ZGUvc3lzL2lvY3RsLmgiIDIgMwoKCiAKIyAxICIvdXNyL2lu
Y2x1ZGUvYml0cy9pb2N0bC10eXBlcy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CgpzdHJ1Y3Qgd2luc2l6ZQogIHsKICAgIHVuc2lnbmVkIHNob3J0IGludCB3c19yb3c7CiAgICB1
bnNpZ25lZCBzaG9ydCBpbnQgd3NfY29sOwogICAgdW5zaWduZWQgc2hvcnQgaW50IHdzX3hwaXhl
bDsKICAgIHVuc2lnbmVkIHNob3J0IGludCB3c195cGl4ZWw7CiAgfTsKCgpzdHJ1Y3QgdGVybWlv
CiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IGNfaWZsYWc7CQkgCiAgICB1bnNpZ25lZCBzaG9y
dCBpbnQgY19vZmxhZzsJCSAKICAgIHVuc2lnbmVkIHNob3J0IGludCBjX2NmbGFnOwkJIAogICAg
dW5zaWduZWQgc2hvcnQgaW50IGNfbGZsYWc7CQkgCiAgICB1bnNpZ25lZCBjaGFyIGNfbGluZTsJ
CSAKICAgIHVuc2lnbmVkIGNoYXIgY19jY1s4IF07CQkgCn07CgogCgoKCgoKCgoKCgoKCiAKCiAK
CgoKCgoKCgoKCgoKCgoKIyAzMCAiL3Vzci9pbmNsdWRlL3N5cy9pb2N0bC5oIiAyIDMKCgogCgoK
CgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHR5ZGVmYXVsdHMuaCIgMSAzCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCgoKCgoKCgogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKIAoKCiAKCgoKCgoKCgoKCiMgMzcgIi91c3IvaW5jbHVk
ZS9zeXMvaW9jdGwuaCIgMiAzCgoKIAoKCmV4dGVybiBpbnQgaW9jdGwgIChpbnQgX19mZCwgdW5z
aWduZWQgbG9uZyBpbnQgX19yZXF1ZXN0LCAuLi4pICAgIDsKCiAKCgojIDIwICJta3JlaXNlcmZz
LmMiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9tb3VudC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgoKCgoKCgoKIAoKZW51bQp7CiAgTVNfUkRPTkxZID0gMSwJCSAKCiAgTVNfTk9T
VUlEID0gMiwJCSAKCiAgTVNfTk9ERVYgPSA0LAkJCSAKCiAgTVNfTk9FWEVDID0gOCwJCSAKCiAg
TVNfU1lOQ0hST05PVVMgPSAxNiwJCSAKCiAgTVNfUkVNT1VOVCA9IDMyLAkJIAoKICBNU19NQU5E
TE9DSyA9IDY0LAkJIAoKICBTX1dSSVRFID0gMTI4LAkJIAoKICBTX0FQUEVORCA9IDI1NiwJCSAK
CiAgU19JTU1VVEFCTEUgPSA1MTIsCQkgCgogIE1TX05PQVRJTUUgPSAxMDI0LAkJIAoKICBNU19O
T0RJUkFUSU1FID0gMjA0OAkJIAoKfTsKCiAKCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKIAplbnVt
CnsKICBNTlRfRk9SQ0UgPSAxCQkJIAoKfTsKCgogCgogCmV4dGVybiBpbnQgbW91bnQgIChfX2Nv
bnN0IGNoYXIgKl9fc3BlY2lhbF9maWxlLCBfX2NvbnN0IGNoYXIgKl9fZGlyLAoJCSAgICAgICBf
X2NvbnN0IGNoYXIgKl9fZnN0eXBlLCB1bnNpZ25lZCBsb25nIGludCBfX3J3ZmxhZywKCQkgICAg
ICAgX19jb25zdCB2b2lkICpfX2RhdGEpICAgIDsKCiAKZXh0ZXJuIGludCB1bW91bnQgIChfX2Nv
bnN0IGNoYXIgKl9fc3BlY2lhbF9maWxlKSAgICA7CgogCmV4dGVybiBpbnQgdW1vdW50MiAgKF9f
Y29uc3QgY2hhciAqX19zcGVjaWFsX2ZpbGUsIGludCBfX2ZsYWdzKSAgICA7CgogCgoKIyAyMSAi
bWtyZWlzZXJmcy5jIiAyCgojIDEgIi91c3IvaW5jbHVkZS9hc20vdHlwZXMuaCIgMSAzCiAKCgoK
CgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdW1vZGVfdDsKCiAKCgoKCnR5cGVkZWYgX19z
aWduZWRfXyBjaGFyIF9fczg7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3U4OwoKdHlwZWRlZiBf
X3NpZ25lZF9fIHNob3J0IF9fczE2Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdTE2OwoKdHlw
ZWRlZiBfX3NpZ25lZF9fIGludCBfX3MzMjsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191MzI7CgoK
dHlwZWRlZiBfX3NpZ25lZF9fIGxvbmcgbG9uZyBfX3M2NDsKdHlwZWRlZiB1bnNpZ25lZCBsb25n
IGxvbmcgX191NjQ7CgogCgoKdHlwZWRlZiBfX3UzMiAgYWRkcl90OyAKdHlwZWRlZiBfX3MzMiAg
c2FkZHJfdDsKIAoKCiMgNjUgIi91c3IvaW5jbHVkZS9hc20vdHlwZXMuaCIgMwoKCiMgMjIgIm1r
cmVpc2VyZnMuYyIgMgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3Zmcy5oIiAxIDMKIAoKCiMgMSAi
L3Vzci9pbmNsdWRlL3N5cy9zdGF0ZnMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgog
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RhdGZzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKc3RydWN0IHN0YXRmcwogIHsKICAgIGludCBmX3R5cGU7CiAgICBpbnQgZl9ic2l6ZTsK
CiAgICBfX2ZzYmxrY250X3QgZl9ibG9ja3M7CiAgICBfX2ZzYmxrY250X3QgZl9iZnJlZTsKICAg
IF9fZnNibGtjbnRfdCBmX2JhdmFpbDsKICAgIF9fZnNmaWxjbnRfdCBmX2ZpbGVzOwogICAgX19m
c2ZpbGNudF90IGZfZmZyZWU7CgoKCgoKCgogICAgX19mc2lkX3QgZl9mc2lkOwogICAgaW50IGZf
bmFtZWxlbjsKICAgIGludCBmX3NwYXJlWzZdOwogIH07CgojIDYxICIvdXNyL2luY2x1ZGUvYml0
cy9zdGF0ZnMuaCIgMwoKIyAyNiAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0ZnMuaCIgMiAzCgoKIAoK
IAoKZXh0ZXJuIGludCBzdGF0ZnMgIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgc3RydWN0IHN0YXRm
cyAqX19idWYpICAgIDsKCgoKCgoKCgoKCgoKIAoKCmV4dGVybiBpbnQgZnN0YXRmcyAgKGludCBf
X2ZpbGRlcywgc3RydWN0IHN0YXRmcyAqX19idWYpICAgIDsKCgoKCgoKCgoKCgoKIAoKCiMgNCAi
L3Vzci9pbmNsdWRlL3N5cy92ZnMuaCIgMiAzCgojIDIzICJta3JlaXNlcmZzLmMiIDIKCgojIDEg
Ii90bXAvYnVpbGQtcmVpc2VyZnMtMy42LjI1LXMzOTAtMS9yZWlzZXJmc191dGlscy0zLjYuMjUt
ZnNjay0zLnguMGIvdXRpbHMvaW5jbHVkZS9taXNjLmgiIDEKIAoKCgoKdm9pZCBkaWUgKGNoYXIg
KiBmbXQsIC4uLik7CnZvaWQgKiBnZXRtZW0gKGludCBzaXplKTsKdm9pZCBmcmVlbWVtIChjb25z
dCB2b2lkICogcCk7CnZvaWQgKiBleHBhbmRtZW0gKHZvaWQgKiBwLCBpbnQgc2l6ZSwgaW50IGJ5
KTsKaW50IGlzX21vdW50ZWQgKGNoYXIgKiBkZXZpY2VfbmFtZSk7CnZvaWQgY2hlY2tfYW5kX2Zy
ZWVfbWVtICh2b2lkKTsKdm9pZCBwcmludF9ob3dfZmFyIChfX3UzMiAqIHBhc3NlZCwgX191MzIg
dG90YWwpOwppbnQgYmxvY2tfd3JpdGUgKGludCBkZXYsIGludCBibG9jaywgaW50IGJsb2Nrc2l6
ZSwgY2hhciAqIGRhdGEpOwppbnQgYmxvY2tfcmVhZCAoaW50IGRldiwgaW50IGJsb2NrLCBpbnQg
YmxvY2tzaXplLCBjaGFyICogZGF0YSk7Cgpsb2ZmX3QgcmVpc2VyZnNfbGxzZWVrICh1bnNpZ25l
ZCBpbnQgZmQsIGxvZmZfdCBvZmZzZXQsIHVuc2lnbmVkIGludCBvcmlnaW4pOwppbnQgcmVpc2Vy
ZnNfcHJvZ3Nfc2V0X2xlX2JpdChpbnQsIHZvaWQgKikgOwppbnQgcmVpc2VyZnNfcHJvZ3NfdGVz
dF9sZV9iaXQoaW50LCBjb25zdCB2b2lkICopIDsKCgoKCgoKIyAyNSAibWtyZWlzZXJmcy5jIiAy
CgojIDEgIi90bXAvYnVpbGQtcmVpc2VyZnMtMy42LjI1LXMzOTAtMS9yZWlzZXJmc191dGlscy0z
LjYuMjUtZnNjay0zLnguMGIvdXRpbHMvaW5jbHVkZS92ZnMuaCIgMQogCgoKIAojIDEgIi91c3Iv
aW5jbHVkZS9zeXMvdmZzLmgiIDEgMwogCgoKCiMgNSAiL3RtcC9idWlsZC1yZWlzZXJmcy0zLjYu
MjUtczM5MC0xL3JlaXNlcmZzX3V0aWxzLTMuNi4yNS1mc2NrLTMueC4wYi91dGlscy9pbmNsdWRl
L3Zmcy5oIiAyCgoKIyAxICIvdXNyL2luY2x1ZGUvYXNtL3BhZ2UuaCIgMSAzCiAKCgoKCgoKCgoK
CiAKCgoKCiMgMTEyICIvdXNyL2luY2x1ZGUvYXNtL3BhZ2UuaCIgMwoKCgojIDcgIi90bXAvYnVp
bGQtcmVpc2VyZnMtMy42LjI1LXMzOTAtMS9yZWlzZXJmc191dGlscy0zLjYuMjUtZnNjay0zLngu
MGIvdXRpbHMvaW5jbHVkZS92ZnMuaCIgMgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYXNtL2F0
b21pYy5oIiAxIDMKCgoKIAoKCgoKCgoKCgoKCgogCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgeyB2b2xh
dGlsZSBpbnQgY291bnRlcjsgfSBhdG9taWNfdCBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCAoNCkp
KTsKCgoKCnN0YXRpYyBfX2lubGluZV9fIGludCBhdG9taWNfcmVhZChhdG9taWNfdCAqdikKewog
ICAgICAgIGludCByZXR2YWw7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oImJjciAgICAg
IDE1LDBcblx0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsICAgICAgICAlMCwlMSIK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9ZCIgKHJldHZhbCkgOiAibSIgKCp2KSAp
OwogICAgICAgIHJldHVybiByZXR2YWw7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgYXRvbWlj
X3NldChhdG9taWNfdCAqdiwgaW50IGkpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygi
c3QgICUxLCUwXG5cdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmNyIDE1LDAiCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPW0iICgqdikgOiAiZCIgKGkpICk7Cn0KCnN0
YXRpYyBfX2lubGluZV9fIHZvaWQgYXRvbWljX2FkZChpbnQgaSwgYXRvbWljX3QgKnYpCnsKICAg
ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiICAgbGEgICAgMiwlMFxuIgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIgICBsICAgICAwLCUwXG4iCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIjA6IGxyICAgIDEsMFxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICBh
ciAgICAxLCUxXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGNzICAgIDAsMSww
KDIpXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGpsICAgIDBiIgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogIittIiAoKnYpIDogImQiIChpKSA6ICIwIiwgIjEiLCAi
MiIsICJjYyIgKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBhdG9taWNfc3ViKGludCBpLCBh
dG9taWNfdCAqdikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIgICBsYSAgICAyLCUw
XG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGwgICAgIDAsJTBcbiIKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiMDogbHIgICAgMSwwXG4iCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIiAgIHNyICAgIDEsJTFcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiICAgY3MgICAgMCwxLDAoMilcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAg
amwgICAgMGIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiK20iICgqdikgOiAiZCIg
KGkpIDogIjAiLCAiMSIsICIyIiwgImNjIiApOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGF0
b21pY19pbmModm9sYXRpbGUgYXRvbWljX3QgKnYpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRp
bGVfXygiICAgbGEgICAgMiwlMFxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICBs
ICAgICAwLCUwXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjA6IGxyICAgIDEsMFxu
IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICBhaGkgICAxLDFcbiIKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiICAgY3MgICAgMCwxLDAoMilcbiIKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiICAgamwgICAgMGIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiAiK20iICgqdikgOiA6ICIwIiwgIjEiLCAiMiIsICJjYyIgKTsKfQoKc3RhdGljIF9faW5saW5l
X18gaW50IGF0b21pY19pbmNfcmV0dXJuKHZvbGF0aWxlIGF0b21pY190ICp2KQp7CiAgICAgICAg
aW50IGk7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiAgIGxhICAgIDEsJTBcbiIKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgbCAgICAgMCwlMFxuIgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIwOiBsciAgICAlMSwwXG4iCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiAgIGFoaSAgICUxLDFcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAg
Y3MgICAgMCwlMSwwKDEpXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGpsICAg
IDBiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIittIiAoKnYpLCAiPSZkIiAoaSkg
OiA6ICIwIiwgIjEiLCAiY2MiICk7CiAgICAgICAgcmV0dXJuIGk7Cn0KCnN0YXRpYyBfX2lubGlu
ZV9fIHZvaWQgYXRvbWljX2RlYyh2b2xhdGlsZSBhdG9taWNfdCAqdikKewogICAgICAgIF9fYXNt
X18gX192b2xhdGlsZV9fKCIgICBsYSAgICAyLCUwXG4iCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiAgIGwgICAgIDAsJTBcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMDog
bHIgICAgMSwwXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGFoaSAgIDEsLTFc
biIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgY3MgICAgMCwxLDAoMilcbiIKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgamwgICAgMGIiCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiAiK20iICgqdikgOiA6ICIwIiwgIjEiLCAiMiIsICJjYyIgKTsKfQoKc3Rh
dGljIF9faW5saW5lX18gaW50IGF0b21pY19kZWNfcmV0dXJuKHZvbGF0aWxlIGF0b21pY190ICp2
KQp7CiAgICAgICAgaW50IGk7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiAgIGxhICAg
IDEsJTBcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgbCAgICAgMCwlMFxuIgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIwOiBsciAgICAlMSwwXG4iCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIiAgIGFoaSAgICUxLC0xXG4iCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiAgIGNzICAgIDAsJTEsMCgxKVxuIgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIgICBqbCAgICAwYiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICIrbSIgKCp2
KSwgIj0mZCIgKGkpIDogOiAiMCIsICIxIiwgImNjIiApOwogICAgICAgIHJldHVybiBpOwp9Cgpz
dGF0aWMgX19pbmxpbmVfXyBpbnQgYXRvbWljX2RlY19hbmRfdGVzdCh2b2xhdGlsZSBhdG9taWNf
dCAqdikKewogICAgICAgIGludCBpOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIgICBs
YSAgICAxLCUwXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGwgICAgIDAsJTBc
biIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMDogbHIgICAgJTEsMFxuIgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIgICBhaGkgICAlMSwtMVxuIgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIgICBjcyAgICAwLCUxLDAoMSlcbiIKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiICAgamwgICAgMGIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiK20i
ICgqdiksICI9JmQiIChpKSA6IDogIjAiLCAiMSIsICJjYyIpOwogICAgICAgIHJldHVybiBpID09
IDA7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgYXRvbWljX2NsZWFyX21hc2sodW5zaWduZWQg
bG9uZyBtYXNrLCBhdG9taWNfdCAqdikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIg
ICBsYSAgICAyLCUwXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGwgICAgIDAs
JTBcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMDogbHIgICAgMSwwXG4iCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiAgIG5yICAgIDEsJTFcbiIKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiICAgY3MgICAgMCwxLDAoMilcbiIKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiICAgamwgICAgMGIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiK20i
ICgqdikgOiAiZCIgKH4obWFzaykpIDogIjAiLCAiMSIsICIyIiwgImNjIiApOwp9CgpzdGF0aWMg
X19pbmxpbmVfXyB2b2lkIGF0b21pY19zZXRfbWFzayh1bnNpZ25lZCBsb25nIG1hc2ssIGF0b21p
Y190ICp2KQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiAgIGxhICAgIDIsJTBcbiIK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgbCAgICAgMCwlMFxuIgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICIwOiBsciAgICAxLDBcbiIKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiICAgb3IgICAgMSwlMVxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg
ICBjcyAgICAwLDEsMCgyKVxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICBqbCAg
ICAwYiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICIrbSIgKCp2KSA6ICJkIiAobWFz
aykgOiAiMCIsICIxIiwgIjIiLCAiY2MiICk7Cn0KCiAKCgoKc3RhdGljIF9faW5saW5lX18gaW50
CmF0b21pY19jb21wYXJlX2FuZF9zd2FwKGludCBleHBlY3RlZF9vbGR2YWwsaW50IG5ld192YWws
YXRvbWljX3QgKnYpCnsKICAgICAgICBpbnQgcmV0dmFsOwoKICAgICAgICBfX2FzbV9fIF9fdm9s
YXRpbGVfXygKICAgICAgICAgICAgICAgICIgIGxhICAgMSwlMVxuIgogICAgICAgICAgICAgICAg
IiAgbHIgICAwLCUyXG4iCiAgICAgICAgICAgICAgICAiICBjcyAgIDAsJTMsMCgxKVxuIgogICAg
ICAgICAgICAgICAgIiAgaXBtICAlMFxuIgogICAgICAgICAgICAgICAgIiAgc3JsICAlMCwyOFxu
IgogICAgICAgICAgICAgICAgIjA6IgogICAgICAgICAgICAgICAgOiAiPSZyIiAocmV0dmFsKSwg
IittIiAoKnYpCiAgICAgICAgICAgICAgICA6ICJkIiAoZXhwZWN0ZWRfb2xkdmFsKSAsICJkIiAo
bmV3X3ZhbCkKICAgICAgICAgICAgICAgIDogIjAiLCAiMSIsICJjYyIpOwogICAgICAgIHJldHVy
biByZXR2YWw7Cn0KCiAKCgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkCmF0b21pY19jb21wYXJlX2Fu
ZF9zd2FwX3NwaW4oaW50IGV4cGVjdGVkX29sZHZhbCxpbnQgbmV3X3ZhbCxhdG9taWNfdCAqdikK
ewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiAgIGxhICAy
LCUwXG4iCiAgICAgICAgICAgICAgICAiMDogbHIgIDEsJTFcbiIKICAgICAgICAgICAgICAgICIg
ICBjcyAgMSwlMiwwKDIpXG4iCiAgICAgICAgICAgICAgICAiICAgamwgIDBiXG4iCiAgICAgICAg
ICAgICAgICA6ICIrbSIgKCp2KQogICAgICAgICAgICAgICAgOiAiZCIgKGV4cGVjdGVkX29sZHZh
bCkgLCAiZCIgKG5ld192YWwpCiAgICAgICAgICAgICAgICA6ICJjYyIsICIxIiwgIjIiKTsKfQoK
IAoKCmV4dGVybiBfX2lubGluZV9fIGludCBhdG9taWNfaW5jX2FuZF90ZXN0X2dyZWF0ZXJfemVy
byhhdG9taWNfdCAqdikKewogICAgICAgIGludCBpOwogICAgICAgIF9fYXNtX18gX192b2xhdGls
ZV9fKCIgICBsYSAgICAxLCUwXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGwg
ICAgIDAsJTBcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMDogbHIgICAgJTEsMFxu
IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICBhaGkgICAlMSwxXG4iCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiAgIGNzICAgIDAsJTEsMCgxKVxuIgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIgICBqbCAgICAwYiIKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6ICIrbSIgKCp2KSwgIj0mZCIgKGkpIDogOiAiMCIsICIxIiwgImNjIiApOwogICAgICAgIHJl
dHVybiBpID4gMDsKfQoKCgoKCgoKCgoKIyAxNCAiL3RtcC9idWlsZC1yZWlzZXJmcy0zLjYuMjUt
czM5MC0xL3JlaXNlcmZzX3V0aWxzLTMuNi4yNS1mc2NrLTMueC4wYi91dGlscy9pbmNsdWRlL3Zm
cy5oIiAyCgoKIAogCiAKCgogCiAKIAojIDEgIi91c3IvaW5jbHVkZS9saW51eC9rZGV2X3QuaCIg
MSAzCgoKIyAxMDQgIi91c3IvaW5jbHVkZS9saW51eC9rZGV2X3QuaCIgMwoKCiAKCgoKCgoKCgoj
IDI0ICIvdG1wL2J1aWxkLXJlaXNlcmZzLTMuNi4yNS1zMzkwLTEvcmVpc2VyZnNfdXRpbHMtMy42
LjI1LWZzY2stMy54LjBiL3V0aWxzL2luY2x1ZGUvdmZzLmgiIDIKCgp0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgbG9uZyBrZGV2X3Q7CnN0YXRpYyBpbmxpbmUga2Rldl90IHRvX2tkZXZfdChpbnQgZGV2
KQp7CiAgICByZXR1cm4gKCggKCggZGV2ICk+PjgpICApPDw4IHwgKCAgKCggZGV2ICkgJiAweGZm
KSAgKSkgOwp9CgoKIAogCiAKc3RydWN0IGxpc3RfaGVhZCB7CiAgICBzdHJ1Y3QgbGlzdF9oZWFk
ICpuZXh0LCAqcHJldjsKfTsKCgoKCgoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2xpc3RfYWRk
KHN0cnVjdCBsaXN0X2hlYWQgKiBuZXcsCgkJCQkgIHN0cnVjdCBsaXN0X2hlYWQgKiBwcmV2LAoJ
CQkJICBzdHJ1Y3QgbGlzdF9oZWFkICogbmV4dCkKewogICAgbmV4dC0+cHJldiA9IG5ldzsKICAg
IG5ldy0+bmV4dCA9IG5leHQ7CiAgICBuZXctPnByZXYgPSBwcmV2OwogICAgcHJldi0+bmV4dCA9
IG5ldzsKfQoKIAoKCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgbGlzdF9hZGQoc3RydWN0IGxpc3Rf
aGVhZCAqbmV3LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiAgICBfX2xpc3RfYWRkKG5ldywg
aGVhZCwgaGVhZC0+bmV4dCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19saXN0X2RlbChz
dHJ1Y3QgbGlzdF9oZWFkICogcHJldiwKCQkJCSAgc3RydWN0IGxpc3RfaGVhZCAqIG5leHQpCnsK
CW5leHQtPnByZXYgPSBwcmV2OwoJcHJldi0+bmV4dCA9IG5leHQ7Cn0KCnN0YXRpYyBfX2lubGlu
ZV9fIHZvaWQgbGlzdF9kZWwoc3RydWN0IGxpc3RfaGVhZCAqZW50cnkpCnsKCV9fbGlzdF9kZWwo
ZW50cnktPnByZXYsIGVudHJ5LT5uZXh0KTsKfQoKCgoKCgogCiAKIApzdHJ1Y3Qgd2FpdF9xdWV1
ZSB7Cn07Cgp0eXBlZGVmIHN0cnVjdCB3YWl0X3F1ZXVlIHdhaXRfcXVldWVfaGVhZF90OwoKCgoK
c3RhdGljIGlubGluZSB2b2lkIGluaXRfd2FpdHF1ZXVlX2hlYWQod2FpdF9xdWV1ZV9oZWFkX3Qg
KnEpCnsKfQoKCgoKIAogCiAKCgpzdHJ1Y3QgZnNfc3RydWN0IHsKICAgIGF0b21pY190IGNvdW50
OwogICAgaW50IHVtYXNrOwogICAgc3RydWN0IGRlbnRyeSAqIHJvb3QsICogcHdkOwp9OwoKc3Ry
dWN0IHRhc2sgewogICAgaW50IHBpZDsKICAgIGludCBjb3VudGVyOwogICAgaW50IGZzdWlkOwog
ICAgaW50IGZzZ2lkOwogICAgaW50IG5lZWRfcmVzY2hlZDsKICAgIHN0cnVjdCBmc19zdHJ1Y3Qg
KiBmczsKICAgIHVuc2lnbmVkIGxvbmcgcG9saWN5OwogICAgaW50IGxvY2tfZGVwdGg7Cn07CgoK
ZXh0ZXJuIGlubGluZSBpbnQgZnN1c2VyKHZvaWQpCnsKICAgIHJldHVybiAwOwp9CgoKCmV4dGVy
biB2b2lkIF9fd2FrZV91cCh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgdW5zaWduZWQgaW50IG1vZGUp
OwoKdm9pZCBzbGVlcF9vbih3YWl0X3F1ZXVlX2hlYWRfdCAqcSk7CmV4dGVybiBsb25nIGludGVy
cnVwdGlibGVfc2xlZXBfb25fdGltZW91dCh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwKICBzaWduZWQg
bG9uZyB0aW1lb3V0KTsKZXh0ZXJuIGludCBpbl9ncm91cF9wKGdpZF90ICk7CmV4dGVybiBpbmxp
bmUgaW50IGNhcGFibGUoaW50IGNhcCkKewogICAgcmV0dXJuIDA7Cn0KCgogCiAKIAoKCgogCiAK
IApleHRlcm4gc3RydWN0IHRhc2sgY3VyX3Rhc2s7CgoKCiAKIAogCnN0cnVjdCBxc3RyIHsKICAg
IGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBuYW1lOwogICAgdW5zaWduZWQgaW50IGxlbjsKICAgIHVu
c2lnbmVkIGludCBoYXNoOwp9OwoKc3RydWN0IGRlbnRyeSB7CiAgICBzdHJ1Y3QgaW5vZGUgKiBk
X2lub2RlOwogICAgc3RydWN0IHFzdHIgZF9uYW1lOwogICAgdW5zaWduZWQgY2hhciBkX2luYW1l
WzQwOTZdOwp9OwoKc3RhdGljIF9faW5saW5lX18gdm9pZCBkX2FkZChzdHJ1Y3QgZGVudHJ5ICog
ZW50cnksIHN0cnVjdCBpbm9kZSAqIGlub2RlKQp7CiAgICBlbnRyeS0+ZF9pbm9kZSA9IGlub2Rl
Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZF91bmhhc2hlZChzdHJ1Y3QgZGVudHJ5ICpkZW50
cnkpCnsKICByZXR1cm4gMDsKfQoKCmV4dGVybiB2b2lkIGRfaW5zdGFudGlhdGUoc3RydWN0IGRl
bnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIGRfZGVsZXRlKHN0cnVjdCBkZW50
cnkgKik7CmV4dGVybiB2b2lkIGRfbW92ZShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBkZW50cnkg
Kik7CmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogZF9hbGxvY19yb290KHN0cnVjdCBpbm9kZSAqKTsK
ZXh0ZXJuIHZvaWQgZHB1dChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOwoKCgogCiAKIApzdHJ1Y3Qg
ZGVudHJ5ICogbG9va3VwX2RlbnRyeShjb25zdCBjaGFyICogbmFtZSwgc3RydWN0IGRlbnRyeSAq
IGJhc2UsIAoJCQkgICAgICB1bnNpZ25lZCBpbnQgbG9va3VwX2ZsYWdzKTsKCgogCiAKIApzdHJ1
Y3Qgdm1fYXJlYV9zdHJ1Y3Qgewp9OwoKdHlwZWRlZiBzdHJ1Y3QgcGFnZSB7CiAgICBzdHJ1Y3Qg
YWRkcmVzc19zcGFjZSAqbWFwcGluZzsKICAgIHVuc2lnbmVkIGxvbmcgaW5kZXg7CiAgICBhdG9t
aWNfdCBjb3VudDsKICAgIGludCBmbGFnczsKICAgIGNoYXIgKiBhZGRyZXNzOwogICAgc3RydWN0
IGJ1ZmZlcl9oZWFkICogYnVmZmVyczsKfSBtZW1fbWFwX3Q7CgoKCgoKCgoKCgoKZXh0ZXJuIG1l
bV9tYXBfdCAqIG1lbV9tYXA7CgoKCgoKZXh0ZXJuIHZvaWQgdm10cnVuY2F0ZShzdHJ1Y3QgaW5v
ZGUgKiBpbm9kZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpOwoKIAogCiAKCgoKCgoKCgoKCgoKCgoK
CiAKIAogCgoKCiAKIAogCnN0cnVjdCBwaXBlX2lub2RlX2luZm8gewp9OwoKCiAKIAogCnN0cnVj
dCBzZW1hcGhvcmUgewp9OwoKZXh0ZXJuIGlubGluZSB2b2lkIGRvd24oc3RydWN0IHNlbWFwaG9y
ZSAqIHNlbSkKewp9CgpleHRlcm4gaW5saW5lIHZvaWQgdXAoc3RydWN0IHNlbWFwaG9yZSAqIHNl
bSkKewp9CgoKIAogCiAKCgoKCgoKZXh0ZXJuIHZvaWQgdXBkYXRlX2F0aW1lIChzdHJ1Y3QgaW5v
ZGUgKik7CgoKIAoKCgoKCgoKCgoKCgoKc3RydWN0IGJ1ZmZlcl9oZWFkIHsKICAgIHVuc2lnbmVk
IGxvbmcgYl9ibG9ja25yOwogICAgdW5zaWduZWQgc2hvcnQgYl9zaXplOwogICAgdW5zaWduZWQg
c2hvcnQgYl9saXN0OwogICAga2Rldl90IGJfZGV2OwogICAgYXRvbWljX3QgYl9jb3VudDsKICAg
IHVuc2lnbmVkIGxvbmcgYl9zdGF0ZTsKICAgIHVuc2lnbmVkIGxvbmcgYl9mbHVzaHRpbWU7Cgog
ICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogYl9uZXh0OwogICAgc3RydWN0IGJ1ZmZlcl9oZWFkICog
Yl9wcmV2OwogICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogYl9oYXNoX25leHQ7CiAgICBzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKiBiX2hhc2hfcHJldjsKICAgIGNoYXIgKiBiX2RhdGE7CiAgICBzdHJ1Y3Qg
cGFnZSAqIGJfcGFnZTsKICAgIHZvaWQgKCpiX2VuZF9pbykoc3RydWN0IGJ1ZmZlcl9oZWFkICpi
aCwgaW50IHVwdG9kYXRlKTsKICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIGJfdGhpc19wYWdlOwp9
OwoKIyAxICIvdXNyL2luY2x1ZGUvYXNtL2JpdG9wcy5oIiAxIDMKCgoKIAoKCgoKCgoKCgoKCiAK
CgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKZXh0ZXJuIGNvbnN0IGNoYXIgX29pX2JpdG1hcFtdOwpl
eHRlcm4gY29uc3QgY2hhciBfbmlfYml0bWFwW107CmV4dGVybiBjb25zdCBjaGFyIF96Yl9maW5k
bWFwW107CgogCgoKZXh0ZXJuIHZvaWQgX19zZXRfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAq
IGFkZHIpOwpleHRlcm4gdm9pZCBfX2NvbnN0YW50X3NldF9iaXQoaW50IG5yLCB2b2xhdGlsZSB2
b2lkICogYWRkcik7CmV4dGVybiBpbnQgX190ZXN0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQg
KiBhZGRyKTsKZXh0ZXJuIGludCBfX2NvbnN0YW50X3Rlc3RfYml0KGludCBuciwgdm9sYXRpbGUg
dm9pZCAqIGFkZHIpOwpleHRlcm4gdm9pZCBfX2NsZWFyX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZv
aWQgKiBhZGRyKTsKZXh0ZXJuIHZvaWQgX19jb25zdGFudF9jbGVhcl9iaXQoaW50IG5yLCB2b2xh
dGlsZSB2b2lkICogYWRkcik7CmV4dGVybiB2b2lkIF9fY2hhbmdlX2JpdChpbnQgbnIsIHZvbGF0
aWxlIHZvaWQgKiBhZGRyKTsKZXh0ZXJuIHZvaWQgX19jb25zdGFudF9jaGFuZ2VfYml0KGludCBu
ciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpOwpleHRlcm4gaW50IHRlc3RfYW5kX3NldF9iaXQoaW50
IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcik7CmV4dGVybiBpbnQgdGVzdF9hbmRfY2xlYXJfYml0
KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpOwpleHRlcm4gaW50IHRlc3RfYW5kX2NoYW5n
ZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcik7CmV4dGVybiBpbnQgdGVzdF9hbmRf
c2V0X2JpdF9zaW1wbGUoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcik7CmV4dGVybiBpbnQg
dGVzdF9hbmRfY2xlYXJfYml0X3NpbXBsZShpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKTsK
ZXh0ZXJuIGludCB0ZXN0X2FuZF9jaGFuZ2VfYml0X3NpbXBsZShpbnQgbnIsIHZvbGF0aWxlIHZv
aWQgKiBhZGRyKTsKZXh0ZXJuIGludCBmaW5kX2ZpcnN0X3plcm9fYml0KHZvaWQgKiBhZGRyLCB1
bnNpZ25lZCBzaXplKTsKZXh0ZXJuIGludCBmaW5kX25leHRfemVyb19iaXQgKHZvaWQgKiBhZGRy
LCBpbnQgc2l6ZSwgaW50IG9mZnNldCk7CmV4dGVybiB1bnNpZ25lZCBsb25nIGZmeih1bnNpZ25l
ZCBsb25nIHdvcmQpOwoKIyAyNDkgIi91c3IvaW5jbHVkZS9hc20vYml0b3BzLmgiIDMKCgogCgoK
ZXh0ZXJuIF9faW5saW5lX18gdm9pZCBfX3NldF9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICog
YWRkcikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgIiAgIGxo
aSAgIDIsMjRcbiIKICAgICAgICAgICAgICIgICBsaGkgICAxLDdcbiIKICAgICAgICAgICAgICIg
ICB4ciAgICAyLCUwXG4iCiAgICAgICAgICAgICAiICAgbnIgICAgMSwlMFxuIgogICAgICAgICAg
ICAgIiAgIHNybCAgIDIsM1xuIgogICAgICAgICAgICAgIiAgIGxhICAgIDIsMCgyLCUxKVxuIgog
ICAgICAgICAgICAgIiAgIGxhICAgIDEsMCgxLCUyKVxuIgogICAgICAgICAgICAgIiAgIG9jICAg
IDAoMSwyKSwwKDEpIgogICAgICAgICAgICAgOiAgOiAiciIgKG5yKSwgImEiIChhZGRyKSwgImEi
ICgmX29pX2JpdG1hcCkKICAgICAgICAgICAgIDogImNjIiwgIm1lbW9yeSIsICIxIiwgIjIiICk7
Cn0KCmV4dGVybiBfX2lubGluZV9fIHZvaWQgCl9fY29uc3RhbnRfc2V0X2JpdChjb25zdCBpbnQg
bnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgc3dpdGNoIChuciY3KSB7CiAgY2FzZSAwOgog
ICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJsYSAxLCUwXG5cdCIKICAgICAgICAgICAgICAgICAg
ICAgICAgICAib2kgMCgxKSwweDAxIgogICAgICAgICAgICAgICAgICAgICAgICAgIDogIj1tIiAo
Kigodm9sYXRpbGUgY2hhciAqKSBhZGRyICsgKChucj4+MyleMykpKSAKICAgICAgICAgICAgICAg
ICAgICAgICAgICA6IDogIjEiLCAiY2MiLCAibWVtb3J5Iik7CiAgICBicmVhazsKICBjYXNlIDE6
CiAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImxhIDEsJTBcblx0IgogICAgICAgICAgICAgICAg
ICAgICAgICAgICJvaSAwKDEpLDB4MDIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPW0i
ICgqKCh2b2xhdGlsZSBjaGFyICopIGFkZHIgKyAoKG5yPj4zKV4zKSkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiA6ICIxIiwgImNjIiwgIm1lbW9yeSIgKTsKICAgIGJyZWFrOwogIGNhc2Ug
MjoKICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgibGEgMSwlMFxuXHQiCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIm9pIDAoMSksMHgwNCIKICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9
bSIgKCooKHZvbGF0aWxlIGNoYXIgKikgYWRkciArICgobnI+PjMpXjMpKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICA6IDogIjEiLCAiY2MiLCAibWVtb3J5IiApOwogICAgYnJlYWs7CiAgY2Fz
ZSAzOgogICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJsYSAxLCUwXG5cdCIKICAgICAgICAgICAg
ICAgICAgICAgICAgICAib2kgMCgxKSwweDA4IgogICAgICAgICAgICAgICAgICAgICAgICAgIDog
Ij1tIiAoKigodm9sYXRpbGUgY2hhciAqKSBhZGRyICsgKChucj4+MyleMykpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgIDogOiAiMSIsICJjYyIsICJtZW1vcnkiICk7CiAgICBicmVhazsKICBj
YXNlIDQ6CiAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImxhIDEsJTBcblx0IgogICAgICAgICAg
ICAgICAgICAgICAgICAgICJvaSAwKDEpLDB4MTAiCiAgICAgICAgICAgICAgICAgICAgICAgICAg
OiAiPW0iICgqKCh2b2xhdGlsZSBjaGFyICopIGFkZHIgKyAoKG5yPj4zKV4zKSkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiA6ICIxIiwgImNjIiwgIm1lbW9yeSIgKTsKICAgIGJyZWFrOwog
IGNhc2UgNToKICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgibGEgMSwlMFxuXHQiCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIm9pIDAoMSksMHgyMCIKICAgICAgICAgICAgICAgICAgICAgICAg
ICA6ICI9bSIgKCooKHZvbGF0aWxlIGNoYXIgKikgYWRkciArICgobnI+PjMpXjMpKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICA6IDogIjEiLCAiY2MiLCAibWVtb3J5IiApOwogICAgYnJlYWs7
CiAgY2FzZSA2OgogICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJsYSAxLCUwXG5cdCIKICAgICAg
ICAgICAgICAgICAgICAgICAgICAib2kgMCgxKSwweDQwIgogICAgICAgICAgICAgICAgICAgICAg
ICAgIDogIj1tIiAoKigodm9sYXRpbGUgY2hhciAqKSBhZGRyICsgKChucj4+MyleMykpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgIDogOiAiMSIsICJjYyIsICJtZW1vcnkiICk7CiAgICBicmVh
azsKICBjYXNlIDc6CiAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImxhIDEsJTBcblx0IgogICAg
ICAgICAgICAgICAgICAgICAgICAgICJvaSAwKDEpLDB4ODAiCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiAiPW0iICgqKCh2b2xhdGlsZSBjaGFyICopIGFkZHIgKyAoKG5yPj4zKV4zKSkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiA6ICIxIiwgImNjIiwgIm1lbW9yeSIgKTsKICAgIGJy
ZWFrOwogIH0KfQoKCgoKCgogCgoKZXh0ZXJuIF9faW5saW5lX18gdm9pZCAKX19jbGVhcl9iaXQo
aW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIF9fYXNtX18gX192b2xhdGls
ZV9fKAogICAgICAgICAgICAgIiAgIGxoaSAgIDIsMjRcbiIKICAgICAgICAgICAgICIgICBsaGkg
ICAxLDdcbiIKICAgICAgICAgICAgICIgICB4ciAgICAyLCUwXG4iCiAgICAgICAgICAgICAiICAg
bnIgICAgMSwlMFxuIgogICAgICAgICAgICAgIiAgIHNybCAgIDIsM1xuIgogICAgICAgICAgICAg
IiAgIGxhICAgIDIsMCgyLCUxKVxuIgogICAgICAgICAgICAgIiAgIGxhICAgIDEsMCgxLCUyKVxu
IgogICAgICAgICAgICAgIiAgIG5jICAgIDAoMSwyKSwwKDEpIgogICAgICAgICAgICAgOiAgOiAi
ciIgKG5yKSwgImEiIChhZGRyKSwgImEiICgmX25pX2JpdG1hcCkKICAgICAgICAgICAgIDogImNj
IiwgIm1lbW9yeSIsICIxIiwgIjIiICk7Cn0KCmV4dGVybiBfX2lubGluZV9fIHZvaWQgCl9fY29u
c3RhbnRfY2xlYXJfYml0KGNvbnN0IGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICBz
d2l0Y2ggKG5yJjcpIHsKICBjYXNlIDA6CiAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImxhIDEs
JTBcblx0IgogICAgICAgICAgICAgICAgICAgICAgICAgICJuaSAwKDEpLDB4RkUiCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiAiPW0iICgqKCh2b2xhdGlsZSBjaGFyICopIGFkZHIgKyAoKG5y
Pj4zKV4zKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiA6ICIxIiwgImNjIiwgIm1lbW9y
eSIgKTsKICAgIGJyZWFrOwogIGNhc2UgMToKICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgibGEg
MSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pIDAoMSksMHhGRCIKICAgICAg
ICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCooKHZvbGF0aWxlIGNoYXIgKikgYWRkciArICgo
bnI+PjMpXjMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICA6IDogIjEiLCAiY2MiLCAibWVt
b3J5IiApOwogICAgYnJlYWs7CiAgY2FzZSAyOgogICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJs
YSAxLCUwXG5cdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAibmkgMCgxKSwweEZCIgogICAg
ICAgICAgICAgICAgICAgICAgICAgIDogIj1tIiAoKigodm9sYXRpbGUgY2hhciAqKSBhZGRyICsg
KChucj4+MyleMykpKQogICAgICAgICAgICAgICAgICAgICAgICAgIDogOiAiMSIsICJjYyIsICJt
ZW1vcnkiICk7CiAgICBicmVhazsKICBjYXNlIDM6CiAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAo
ImxhIDEsJTBcblx0IgogICAgICAgICAgICAgICAgICAgICAgICAgICJuaSAwKDEpLDB4RjciCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiAiPW0iICgqKCh2b2xhdGlsZSBjaGFyICopIGFkZHIg
KyAoKG5yPj4zKV4zKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiA6ICIxIiwgImNjIiwg
Im1lbW9yeSIgKTsKICAgIGJyZWFrOwogIGNhc2UgNDoKICAgIF9fYXNtX18gX192b2xhdGlsZV9f
ICgibGEgMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pIDAoMSksMHhFRiIK
ICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCooKHZvbGF0aWxlIGNoYXIgKikgYWRk
ciArICgobnI+PjMpXjMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICA6IDogImNjIiwgIm1l
bW9yeSIgKTsKICAgIGJyZWFrOwogIGNhc2UgNToKICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgi
bGEgMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pIDAoMSksMHhERiIKICAg
ICAgICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCooKHZvbGF0aWxlIGNoYXIgKikgYWRkciAr
ICgobnI+PjMpXjMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICA6IDogIjEiLCAiY2MiLCAi
bWVtb3J5IiApOwogICAgYnJlYWs7CiAgY2FzZSA2OgogICAgX19hc21fXyBfX3ZvbGF0aWxlX18g
KCJsYSAxLCUwXG5cdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAibmkgMCgxKSwweEJGIgog
ICAgICAgICAgICAgICAgICAgICAgICAgIDogIj1tIiAoKigodm9sYXRpbGUgY2hhciAqKSBhZGRy
ICsgKChucj4+MyleMykpKQogICAgICAgICAgICAgICAgICAgICAgICAgIDogOiAiMSIsICJjYyIs
ICJtZW1vcnkiICk7CiAgICBicmVhazsKICBjYXNlIDc6CiAgICBfX2FzbV9fIF9fdm9sYXRpbGVf
XyAoImxhIDEsJTBcblx0IgogICAgICAgICAgICAgICAgICAgICAgICAgICJuaSAwKDEpLDB4N0Yi
CiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPW0iICgqKCh2b2xhdGlsZSBjaGFyICopIGFk
ZHIgKyAoKG5yPj4zKV4zKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiA6ICIxIiwgImNj
IiwgIm1lbW9yeSIgKTsKICAgIGJyZWFrOwogIH0KfQoKCgoKCgogCgoKZXh0ZXJuIF9faW5saW5l
X18gdm9pZCBfX2NoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAg
ICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgIiAgIGxoaSAgIDIsMjRcbiIK
ICAgICAgICAgICAgICIgICBsaGkgICAxLDdcbiIKICAgICAgICAgICAgICIgICB4ciAgICAyLCUw
XG4iCiAgICAgICAgICAgICAiICAgbnIgICAgMSwlMFxuIgogICAgICAgICAgICAgIiAgIHNybCAg
IDIsM1xuIgogICAgICAgICAgICAgIiAgIGxhICAgIDIsMCgyLCUxKVxuIgogICAgICAgICAgICAg
IiAgIGxhICAgIDEsMCgxLCUyKVxuIgogICAgICAgICAgICAgIiAgIHhjICAgIDAoMSwyKSwwKDEp
IgogICAgICAgICAgICAgOiAgOiAiciIgKG5yKSwgImEiIChhZGRyKSwgImEiICgmX29pX2JpdG1h
cCkKICAgICAgICAgICAgIDogImNjIiwgIm1lbW9yeSIsICIxIiwgIjIiICk7Cn0KCmV4dGVybiBf
X2lubGluZV9fIHZvaWQgCl9fY29uc3RhbnRfY2hhbmdlX2JpdChjb25zdCBpbnQgbnIsIHZvbGF0
aWxlIHZvaWQgKiBhZGRyKSAKewogIHN3aXRjaCAobnImNykgewogIGNhc2UgMDoKICAgIF9fYXNt
X18gX192b2xhdGlsZV9fICgibGEgMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAg
InhpIDAoMSksMHgwMSIKICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCooKHZvbGF0
aWxlIGNoYXIgKikgYWRkciArICgobnI+PjMpXjMpKSkKICAgICAgICAgICAgICAgICAgICAgICAg
ICA6IDogImNjIiwgIm1lbW9yeSIgKTsKICAgIGJyZWFrOwogIGNhc2UgMToKICAgIF9fYXNtX18g
X192b2xhdGlsZV9fICgibGEgMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgInhp
IDAoMSksMHgwMiIKICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCooKHZvbGF0aWxl
IGNoYXIgKikgYWRkciArICgobnI+PjMpXjMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICA6
IDogImNjIiwgIm1lbW9yeSIgKTsKICAgIGJyZWFrOwogIGNhc2UgMjoKICAgIF9fYXNtX18gX192
b2xhdGlsZV9fICgibGEgMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgInhpIDAo
MSksMHgwNCIKICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCooKHZvbGF0aWxlIGNo
YXIgKikgYWRkciArICgobnI+PjMpXjMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICA6IDog
ImNjIiwgIm1lbW9yeSIgKTsKICAgIGJyZWFrOwogIGNhc2UgMzoKICAgIF9fYXNtX18gX192b2xh
dGlsZV9fICgibGEgMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgInhpIDAoMSks
MHgwOCIKICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCooKHZvbGF0aWxlIGNoYXIg
KikgYWRkciArICgobnI+PjMpXjMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICA6IDogImNj
IiwgIm1lbW9yeSIgKTsKICAgIGJyZWFrOwogIGNhc2UgNDoKICAgIF9fYXNtX18gX192b2xhdGls
ZV9fICgibGEgMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgInhpIDAoMSksMHgx
MCIKICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCooKHZvbGF0aWxlIGNoYXIgKikg
YWRkciArICgobnI+PjMpXjMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICA6IDogImNjIiwg
Im1lbW9yeSIgKTsKICAgIGJyZWFrOwogIGNhc2UgNToKICAgIF9fYXNtX18gX192b2xhdGlsZV9f
ICgibGEgMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgInhpIDAoMSksMHgyMCIK
ICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCooKHZvbGF0aWxlIGNoYXIgKikgYWRk
ciArICgobnI+PjMpXjMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICA6IDogIjEiLCAiY2Mi
LCAibWVtb3J5IiApOwogICAgYnJlYWs7CiAgY2FzZSA2OgogICAgX19hc21fXyBfX3ZvbGF0aWxl
X18gKCJsYSAxLCUwXG5cdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAieGkgMCgxKSwweDQw
IgogICAgICAgICAgICAgICAgICAgICAgICAgIDogIj1tIiAoKigodm9sYXRpbGUgY2hhciAqKSBh
ZGRyICsgKChucj4+MyleMykpKQogICAgICAgICAgICAgICAgICAgICAgICAgIDogOiAiMSIsICJj
YyIsICJtZW1vcnkiICk7CiAgICBicmVhazsKICBjYXNlIDc6CiAgICBfX2FzbV9fIF9fdm9sYXRp
bGVfXyAoImxhIDEsJTBcblx0IgogICAgICAgICAgICAgICAgICAgICAgICAgICJ4aSAwKDEpLDB4
ODAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPW0iICgqKCh2b2xhdGlsZSBjaGFyICop
IGFkZHIgKyAoKG5yPj4zKV4zKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiA6ICIxIiwg
ImNjIiwgIm1lbW9yeSIgKTsKICAgIGJyZWFrOwogIH0KfQoKCgoKCgogCgoKZXh0ZXJuIF9faW5s
aW5lX18gaW50IHRlc3RfYW5kX3NldF9iaXRfc2ltcGxlKGludCBuciwgdm9sYXRpbGUgdm9pZCAq
IGFkZHIpCnsKICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1hc2sgPSAxOwogICAgICAgIGludCBv
bGRiaXQ7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAiICAgbGhp
ICAgMSwyNFxuIgogICAgICAgICAgICAgIiAgIGxoaSAgIDIsN1xuIgogICAgICAgICAgICAgIiAg
IHhyICAgIDEsJTFcbiIKICAgICAgICAgICAgICIgICBuciAgICAyLDFcbiIKICAgICAgICAgICAg
ICIgICBzcmwgICAxLDNcbiIKICAgICAgICAgICAgICIgICBsYSAgICAxLDAoMSwlMilcbiIKICAg
ICAgICAgICAgICIgICBpYyAgICAlMCwwKDEpXG4iCiAgICAgICAgICAgICAiICAgc3JsICAgJTAs
MCgyKVxuIgogICAgICAgICAgICAgIiAgIG4gICAgICUwLCU0XG4iCiAgICAgICAgICAgICAiICAg
bGEgICAgMiwwKDIsJTMpXG4iCiAgICAgICAgICAgICAiICAgb2MgICAgMCgxLDEpLDAoMikiCiAg
ICAgICAgICAgICA6ICI9ZCYiIChvbGRiaXQpIDogInIiIChuciksICJhIiAoYWRkciksCiAgICAg
ICAgICAgICAgICJhIiAoJl9vaV9iaXRtYXApLCAibSIgKG1hc2spCiAgICAgICAgICAgICA6ICJj
YyIsICJtZW1vcnkiLCAiMSIsICIyIiApOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KCiAKCgpl
eHRlcm4gX19pbmxpbmVfXyBpbnQgdGVzdF9hbmRfY2xlYXJfYml0X3NpbXBsZShpbnQgbnIsIHZv
bGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgc3RhdGljIGNvbnN0IGludCBtYXNrID0gMTsK
ICAgICAgICBpbnQgb2xkYml0OwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAg
ICAgICAgICIgICBsaGkgICAxLDI0XG4iCiAgICAgICAgICAgICAiICAgbGhpICAgMiw3XG4iCiAg
ICAgICAgICAgICAiICAgeHIgICAgMSwlMVxuIgogICAgICAgICAgICAgIiAgIG5yICAgIDIsMVxu
IgogICAgICAgICAgICAgIiAgIHNybCAgIDEsM1xuIgogICAgICAgICAgICAgIiAgIGxhICAgIDEs
MCgxLCUyKVxuIgogICAgICAgICAgICAgIiAgIGljICAgICUwLDAoMSlcbiIKICAgICAgICAgICAg
ICIgICBzcmwgICAlMCwwKDIpXG4iCiAgICAgICAgICAgICAiICAgbiAgICAgJTAsJTRcbiIKICAg
ICAgICAgICAgICIgICBsYSAgICAyLDAoMiwlMylcbiIKICAgICAgICAgICAgICIgICBuYyAgICAw
KDEsMSksMCgyKSIKICAgICAgICAgICAgIDogIj1kJiIgKG9sZGJpdCkgOiAiciIgKG5yKSwgImEi
IChhZGRyKSwKICAgICAgICAgICAgICAgImEiICgmX25pX2JpdG1hcCksICJtIiAobWFzaykKICAg
ICAgICAgICAgIDogImNjIiwgIm1lbW9yeSIsICIxIiwgIjIiICk7CiAgICAgICAgcmV0dXJuIG9s
ZGJpdDsKfQoKIAoKCmV4dGVybiBfX2lubGluZV9fIGludCB0ZXN0X2FuZF9jaGFuZ2VfYml0X3Np
bXBsZShpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgc3RhdGljIGNvbnN0
IGludCBtYXNrID0gMTsKICAgICAgICBpbnQgb2xkYml0OwoKICAgICAgICBfX2FzbV9fIF9fdm9s
YXRpbGVfXygKICAgICAgICAgICAgICIgICBsaGkgICAxLDI0XG4iCiAgICAgICAgICAgICAiICAg
bGhpICAgMiw3XG4iCiAgICAgICAgICAgICAiICAgeHIgICAgMSwlMVxuIgogICAgICAgICAgICAg
IiAgIG5yICAgIDIsMVxuIgogICAgICAgICAgICAgIiAgIHNybCAgIDEsM1xuIgogICAgICAgICAg
ICAgIiAgIGxhICAgIDEsMCgxLCUyKVxuIgogICAgICAgICAgICAgIiAgIGljICAgICUwLDAoMSlc
biIKICAgICAgICAgICAgICIgICBzcmwgICAlMCwwKDIpXG4iCiAgICAgICAgICAgICAiICAgbiAg
ICAgJTAsJTRcbiIKICAgICAgICAgICAgICIgICBsYSAgICAyLDAoMiwlMylcbiIKICAgICAgICAg
ICAgICIgICB4YyAgICAwKDEsMSksMCgyKSIKICAgICAgICAgICAgIDogIj1kJiIgKG9sZGJpdCkg
OiAiciIgKG5yKSwgImEiIChhZGRyKSwKICAgICAgICAgICAgICAgImEiICgmX29pX2JpdG1hcCks
ICJtIiAobWFzaykKICAgICAgICAgICAgIDogImNjIiwgIm1lbW9yeSIsICIxIiwgIjIiICk7CiAg
ICAgICAgcmV0dXJuIG9sZGJpdDsKfQoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCmV4dGVybiBfX2lu
bGluZV9fIGludCBfX3Rlc3RfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAg
ICAgICBzdGF0aWMgY29uc3QgaW50IG1hc2sgPSAxOwogICAgICAgIGludCBvbGRiaXQ7CgogICAg
ICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgIiAgIGxoaSAgIDIsMjRcbiIK
ICAgICAgICAgICAgICIgICBsaGkgICAxLDdcbiIKICAgICAgICAgICAgICIgICB4ciAgICAyLCUx
XG4iCiAgICAgICAgICAgICAiICAgbnIgICAgMSwlMVxuIgogICAgICAgICAgICAgIiAgIHNybCAg
IDIsM1xuIgogICAgICAgICAgICAgIiAgIGljICAgICUwLDAoMiwlMilcbiIKICAgICAgICAgICAg
ICIgICBzcmwgICAlMCwwKDEpXG4iCiAgICAgICAgICAgICAiICAgbiAgICAgJTAsJTMiCiAgICAg
ICAgICAgICA6ICI9ZCYiIChvbGRiaXQpIDogInIiIChuciksICJhIiAoYWRkciksCiAgICAgICAg
ICAgICAgICJtIiAobWFzaykKICAgICAgICAgICAgIDogImNjIiwgIjEiLCAiMiIgKTsKICAgICAg
ICByZXR1cm4gb2xkYml0Owp9CgpleHRlcm4gX19pbmxpbmVfXyBpbnQgX19jb25zdGFudF90ZXN0
X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKSB7CiAgICByZXR1cm4gKCgodm9sYXRp
bGUgY2hhciAqKSBhZGRyKVsobnI+PjMpXjNdICYgKDE8PChuciY3KSkpICE9IDA7Cn0KCgoKCgoK
IAoKCmV4dGVybiBfX2lubGluZV9fIGludCBmaW5kX2ZpcnN0X3plcm9fYml0KHZvaWQgKiBhZGRy
LCB1bnNpZ25lZCBzaXplKQp7CiAgICAgICAgc3RhdGljIGNvbnN0IGludCBtYXNrID0gMHhmZkw7
CiAgICAgICAgaW50IHJlczsKCiAgICAgICAgaWYgKCFzaXplKQogICAgICAgICAgICAgICAgcmV0
dXJuIDA7CiAgICAgICAgX19hc21fXygiICAgbGhpICAwLC0xXG4iCiAgICAgICAgICAgICAgICAi
ICAgbHIgICAxLCUxXG4iCiAgICAgICAgICAgICAgICAiICAgYWhpICAxLDMxXG4iCiAgICAgICAg
ICAgICAgICAiICAgc3JsICAxLDVcbiIKICAgICAgICAgICAgICAgICIgICBzciAgIDIsMlxuIgog
ICAgICAgICAgICAgICAgIjA6IGMgICAgMCwwKDIsJTIpXG4iCiAgICAgICAgICAgICAgICAiICAg
am5lICAxZlxuIgogICAgICAgICAgICAgICAgIiAgIGFoaSAgMiw0XG4iCiAgICAgICAgICAgICAg
ICAiICAgYnJjdCAxLDBiXG4iCiAgICAgICAgICAgICAgICAiICAgbHIgICAyLCUxXG4iCiAgICAg
ICAgICAgICAgICAiICAgaiAgICA0ZlxuIgogICAgICAgICAgICAgICAgIjE6IGwgICAgMSwwKDIs
JTIpXG4iCiAgICAgICAgICAgICAgICAiICAgc2xsICAyLDNcbiIKICAgICAgICAgICAgICAgICIg
ICB0bWwgIDEsMHhGRkZGXG4iCiAgICAgICAgICAgICAgICAiICAgam5vICAyZlxuIgogICAgICAg
ICAgICAgICAgIiAgIGFoaSAgMiwxNlxuIgogICAgICAgICAgICAgICAgIiAgIHNybCAgMSwxNlxu
IgogICAgICAgICAgICAgICAgIjI6IHRtbCAgMSwweDAwRkZcbiIKICAgICAgICAgICAgICAgICIg
ICBqbm8gIDNmXG4iCiAgICAgICAgICAgICAgICAiICAgYWhpICAyLDhcbiIKICAgICAgICAgICAg
ICAgICIgICBzcmwgIDEsOFxuIgogICAgICAgICAgICAgICAgIjM6IG4gICAgMSwlM1xuIgogICAg
ICAgICAgICAgICAgIiAgIGljICAgMSwwKDEsJTQpXG4iCiAgICAgICAgICAgICAgICAiICAgbiAg
ICAxLCUzXG4iCiAgICAgICAgICAgICAgICAiICAgYXIgICAyLDFcbiIKICAgICAgICAgICAgICAg
ICI0OiBsciAgICUwLDIiCiAgICAgICAgICAgICAgICA6ICI9ZCIgKHJlcykgOiAiYSIgKHNpemUp
LCAiYSIgKGFkZHIpLAogICAgICAgICAgICAgICAgICAibSIgKG1hc2spLCAiYSIgKCZfemJfZmlu
ZG1hcCkKICAgICAgICAgICAgICAgIDogImNjIiwgIjAiLCAiMSIsICIyIiApOwogICAgICAgIHJl
dHVybiAocmVzIDwgc2l6ZSkgPyByZXMgOiBzaXplOwp9CgpleHRlcm4gX19pbmxpbmVfXyBpbnQg
ZmluZF9uZXh0X3plcm9fYml0ICh2b2lkICogYWRkciwgaW50IHNpemUsIGludCBvZmZzZXQpCnsK
ICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1hc2sgPSAweGZmTDsKICAgICAgICB1bnNpZ25lZCBs
b25nICogcCA9ICgodW5zaWduZWQgbG9uZyAqKSBhZGRyKSArIChvZmZzZXQgPj4gNSk7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBiaXR2ZWM7CiAgICAgICAgaW50IHNldCwgYml0ID0gb2Zmc2V0ICYg
MzEsIHJlczsKCiAgICAgICAgaWYgKGJpdCkgewogICAgICAgICAgICAgICAgIAoKCiAgICAgICAg
ICAgICAgICBiaXR2ZWMgPSAoKnApID4+IGJpdDsKICAgICAgICAgICAgICAgIF9fYXNtX18oIiAg
IGxyICAgMSwlMVxuIgogICAgICAgICAgICAgICAgICAgICAgICAiICAgc3IgICAlMCwlMFxuIgog
ICAgICAgICAgICAgICAgICAgICAgICAiICAgdG1sICAxLDB4RkZGRlxuIgogICAgICAgICAgICAg
ICAgICAgICAgICAiICAgam5vICAwZlxuIgogICAgICAgICAgICAgICAgICAgICAgICAiICAgYWhp
ICAlMCwxNlxuIgogICAgICAgICAgICAgICAgICAgICAgICAiICAgc3JsICAxLDE2XG4iCiAgICAg
ICAgICAgICAgICAgICAgICAgICIwOiB0bWwgIDEsMHgwMEZGXG4iCiAgICAgICAgICAgICAgICAg
ICAgICAgICIgICBqbm8gIDFmXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIgICBhaGkgICUw
LDhcbiIKICAgICAgICAgICAgICAgICAgICAgICAgIiAgIHNybCAgMSw4XG4iCiAgICAgICAgICAg
ICAgICAgICAgICAgICIxOiBuICAgIDEsJTJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgIiAg
IGljICAgMSwwKDEsJTMpXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIgICBuICAgIDEsJTJc
biIKICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGFyICAgJTAsMSIKICAgICAgICAgICAgICAg
ICAgICAgICAgOiAiPWQmIiAoc2V0KSA6ICJkIiAoYml0dmVjKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAibSIgKG1hc2spLCAiYSIgKCZfemJfZmluZG1hcCkKICAgICAgICAgICAgICAgICAg
ICAgICAgICA6ICJjYyIsICIxIiApOwogICAgICAgICAgICAgICAgaWYgKHNldCA8ICgzMiAtIGJp
dCkpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXQgKyBvZmZzZXQ7CiAgICAgICAg
ICAgICAgICBvZmZzZXQgKz0gMzIgLSBiaXQ7CiAgICAgICAgICAgICAgICBwKys7CiAgICAgICAg
fQogICAgICAgICAKCgogICAgICAgIHJlcyA9IGZpbmRfZmlyc3RfemVyb19iaXQgKHAsIHNpemUg
LSAzMiAqIChwIC0gKHVuc2lnbmVkIGxvbmcgKikgYWRkcikpOwogICAgICAgIHJldHVybiAob2Zm
c2V0ICsgcmVzKTsKfQoKIAoKCgpleHRlcm4gX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIGZmeih1
bnNpZ25lZCBsb25nIHdvcmQpCnsKICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1hc2sgPSAweGZm
TDsKICAgICAgICBpbnQgcmVzdWx0OwoKICAgICAgICBfX2FzbV9fKCIgICBsciAgIDEsJTFcbiIK
ICAgICAgICAgICAgICAgICIgICBzciAgICUwLCUwXG4iCiAgICAgICAgICAgICAgICAiICAgdG1s
ICAxLDB4RkZGRlxuIgogICAgICAgICAgICAgICAgIiAgIGpubyAgMGZcbiIKICAgICAgICAgICAg
ICAgICIgICBhaGkgICUwLDE2XG4iCiAgICAgICAgICAgICAgICAiICAgc3JsICAxLDE2XG4iCiAg
ICAgICAgICAgICAgICAiMDogdG1sICAxLDB4MDBGRlxuIgogICAgICAgICAgICAgICAgIiAgIGpu
byAgMWZcbiIKICAgICAgICAgICAgICAgICIgICBhaGkgICUwLDhcbiIKICAgICAgICAgICAgICAg
ICIgICBzcmwgIDEsOFxuIgogICAgICAgICAgICAgICAgIjE6IG4gICAgMSwlMlxuIgogICAgICAg
ICAgICAgICAgIiAgIGljICAgMSwwKDEsJTMpXG4iCiAgICAgICAgICAgICAgICAiICAgbiAgICAx
LCUyXG4iCiAgICAgICAgICAgICAgICAiICAgYXIgICAlMCwxIgogICAgICAgICAgICAgICAgOiAi
PWQmIiAocmVzdWx0KSA6ICJkIiAod29yZCksIAogICAgICAgICAgICAgICAgICAibSIgKG1hc2sp
LCAiYSIgKCZfemJfZmluZG1hcCkKICAgICAgICAgICAgICAgIDogImNjIiwgIjEiICk7CgogICAg
ICAgIHJldHVybiByZXN1bHQ7Cn0KCiAKCgoKCgpleHRlcm4gaW50IF9faW5saW5lX18gZmZzIChp
bnQgeCkKewogICAgICAgIGludCByOwoKICAgICAgICBpZiAoeCA9PSAwKQogICAgICAgICAgcmV0
dXJuIDA7CiAgICAgICAgX19hc21fXygiICAgIGxyICAgJSVyMSwlMVxuIgogICAgICAgICAgICAg
ICAgIiAgICBzciAgICUwLCUwXG4iCiAgICAgICAgICAgICAgICAiICAgIHRtbCAgJSVyMSwweEZG
RkZcbiIKICAgICAgICAgICAgICAgICIgICAgam56ICAwZlxuIgogICAgICAgICAgICAgICAgIiAg
ICBhaGkgICUwLDE2XG4iCiAgICAgICAgICAgICAgICAiICAgIHNybCAgJSVyMSwxNlxuIgogICAg
ICAgICAgICAgICAgIjA6ICB0bWwgICUlcjEsMHgwMEZGXG4iCiAgICAgICAgICAgICAgICAiICAg
IGpueiAgMWZcbiIKICAgICAgICAgICAgICAgICIgICAgYWhpICAlMCw4XG4iCiAgICAgICAgICAg
ICAgICAiICAgIHNybCAgJSVyMSw4XG4iCiAgICAgICAgICAgICAgICAiMTogIHRtbCAgJSVyMSww
eDAwMEZcbiIKICAgICAgICAgICAgICAgICIgICAgam56ICAyZlxuIgogICAgICAgICAgICAgICAg
IiAgICBhaGkgICUwLDRcbiIKICAgICAgICAgICAgICAgICIgICAgc3JsICAlJXIxLDRcbiIKICAg
ICAgICAgICAgICAgICIyOiAgdG1sICAlJXIxLDB4MDAwM1xuIgogICAgICAgICAgICAgICAgIiAg
ICBqbnogIDNmXG4iCiAgICAgICAgICAgICAgICAiICAgIGFoaSAgJTAsMlxuIgogICAgICAgICAg
ICAgICAgIiAgICBzcmwgICUlcjEsMlxuIgogICAgICAgICAgICAgICAgIjM6ICB0bWwgICUlcjEs
MHgwMDAxXG4iCiAgICAgICAgICAgICAgICAiICAgIGpueiAgNGZcbiIKICAgICAgICAgICAgICAg
ICIgICAgYWhpICAlMCwxXG4iCiAgICAgICAgICAgICAgICAiNDoiCiAgICAgICAgICAgICAgICA6
ICI9JmQiIChyKSA6ICJkIiAoeCkgOiAiY2MiLCAiMSIgKTsKICAgICAgICByZXR1cm4gcisxOwp9
CgogCgoKCgoKCgoKCiMgODc5ICIvdXNyL2luY2x1ZGUvYXNtL2JpdG9wcy5oIiAzCgoKCiMgMzE5
ICIvdG1wL2J1aWxkLXJlaXNlcmZzLTMuNi4yNS1zMzkwLTEvcmVpc2VyZnNfdXRpbHMtMy42LjI1
LWZzY2stMy54LjBiL3V0aWxzL2luY2x1ZGUvdmZzLmgiIDIKCgoKCgoKCgpleHRlcm4gaW5saW5l
IHZvaWQgbWFya19idWZmZXJfY2xlYW4oc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgpCnsKICAgIChf
X2J1aWx0aW5fY29uc3RhbnRfcCgoIDEgICkpID8gX19jb25zdGFudF9jbGVhcl9iaXQoKCAxICAp
LCggICYoYmgpLT5iX3N0YXRlICkpIDogX19jbGVhcl9iaXQoKCAxICApLCggICYoYmgpLT5iX3N0
YXRlICkpICkgOwp9CgpleHRlcm4gaW5saW5lIHZvaWQgbWFya19idWZmZXJfZGlydHkoc3RydWN0
IGJ1ZmZlcl9oZWFkICogYmgsIGludCBmbGFnKQp7CiAgICAoX19idWlsdGluX2NvbnN0YW50X3Ao
KCAxICApKSA/IF9fY29uc3RhbnRfc2V0X2JpdCgoIDEgICksKCAgJihiaCktPmJfc3RhdGUgKSkg
OiBfX3NldF9iaXQoKCAxICApLCggICYoYmgpLT5iX3N0YXRlICkpICkgOwp9CgpleHRlcm4gdm9p
ZCBiYWxhbmNlX2RpcnR5KGtkZXZfdCk7CgoKCgoKCgoKCgoKCgpzdHJ1Y3QgaWF0dHIgewogICAg
dW5zaWduZWQgaW50CWlhX3ZhbGlkOwogICAgdW1vZGVfdAkJaWFfbW9kZTsKICAgIHVpZF90IAkJ
aWFfdWlkOwogICAgZ2lkX3QgCQlpYV9naWQ7CiAgICBsb2ZmX3QJCWlhX3NpemU7CiAgICB0aW1l
X3QJCWlhX2F0aW1lOwogICAgdGltZV90CQlpYV9tdGltZTsKICAgIHRpbWVfdAkJaWFfY3RpbWU7
CiAgICB1bnNpZ25lZCBpbnQJaWFfYXR0cl9mbGFnczsKfTsKCmludCBpbm9kZV9jaGFuZ2Vfb2so
c3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGlhdHRyICphdHRyKTsKCnN0cnVjdCBmaWxlOwpz
dHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zIHsKICAgIGludCAoKndyaXRlcGFnZSkgKHN0
cnVjdCBmaWxlICosIHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IHBhZ2UgKik7CiAgICBpbnQgKCpy
ZWFkcGFnZSkoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgcGFnZSAqKTsKICAgIGludCAoKnN5bmNf
cGFnZSkoc3RydWN0IHBhZ2UgKik7CiAgICBpbnQgKCpwcmVwYXJlX3dyaXRlKShzdHJ1Y3QgZmls
ZSAqLCBzdHJ1Y3QgcGFnZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQpOwogICAgaW50ICgqY29tbWl0
X3dyaXRlKShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgcGFnZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQp
OwogICAgIAogICAgaW50ICgqYm1hcCkoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwgbG9uZyk7Cn07
CgoKc3RydWN0IGFkZHJlc3Nfc3BhY2UgewogICAgIAogICAgIAogICAgc3RydWN0IGFkZHJlc3Nf
c3BhY2Vfb3BlcmF0aW9ucyAqYV9vcHM7CSAKICAgIHZvaWQJCQkqaG9zdDsJCSAKICAgICAKICAg
ICAKfTsKCgojIDEgIi90bXAvYnVpbGQtcmVpc2VyZnMtMy42LjI1LXMzOTAtMS9yZWlzZXJmc191
dGlscy0zLjYuMjUtZnNjay0zLnguMGIvdXRpbHMvaW5jbHVkZS9yZWlzZXJmc19mc19pLmgiIDEK
CgoKIAoKCnN0cnVjdCByZWlzZXJmc19wYWdlX2xpc3QgOwoKc3RydWN0IHJlaXNlcmZzX2lub2Rl
X2luZm8gewogIF9fdTMyIGlfa2V5IFs0XTsgCiAgCgkJCQkgCgoKCgogIGludCBpX3ZlcnNpb247
ICAgCgogIGludCBpX3BhY2tfb25fY2xvc2UgOyAgCgogIF9fdTMyIGlfZmlyc3RfZGlyZWN0X2J5
dGU7ICAKCiAgIAoKCgoKCiAgc3RydWN0IHJlaXNlcmZzX3BhZ2VfbGlzdCAqaV9jb252ZXJ0ZWRf
cGFnZSA7CgogICAKCgoKCiAgaW50IGlfY29udmVyc2lvbl90cmFuc19pZCA7CgoJCQkJIAoKCgoK
CgoKCgoKCgoKICAgCiAgaW50IGlfcHJlYWxsb2NfYmxvY2s7CiAgaW50IGlfcHJlYWxsb2NfY291
bnQ7CgoJCQkJIAoKICAgCiAgaW50IG5vcGFjazsKfTsKCgoKIyAzODcgIi90bXAvYnVpbGQtcmVp
c2VyZnMtMy42LjI1LXMzOTAtMS9yZWlzZXJmc191dGlscy0zLjYuMjUtZnNjay0zLnguMGIvdXRp
bHMvaW5jbHVkZS92ZnMuaCIgMgoKCnN0cnVjdCBpbm9kZSB7CiAgICBzdHJ1Y3QgbGlzdF9oZWFk
IGlfbGlzdDsKICAgIHVuc2lnbmVkIGxvbmcgaV9pbm87CiAgICB1bnNpZ25lZCBsb25nIGlfZ2Vu
ZXJhdGlvbjsKICAgIGF0b21pY190IGlfY291bnQ7CiAgICBrZGV2X3QgaV9kZXY7CiAgICB1bW9k
ZV90IGlfbW9kZTsKICAgIG5saW5rX3QgIGlfbmxpbms7CiAgICB1aWRfdCAJaV91aWQ7CiAgICBn
aWRfdCAJaV9naWQ7CiAgICBrZGV2X3QgaV9yZGV2OwogICAgbG9mZl90IGlfc2l6ZTsKICAgIHRp
bWVfdCBpX2F0aW1lOwogICAgdGltZV90IGlfbXRpbWU7CiAgICB0aW1lX3QgaV9jdGltZTsKICAg
IHVuc2lnbmVkIGxvbmcgaV9ibGtzaXplOwogICAgdW5zaWduZWQgbG9uZwlpX2Jsb2NrczsKICAg
IHN0cnVjdCBzZW1hcGhvcmUgaV9zZW07CiAgICBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyAqIGlf
b3A7CiAgICBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICogaV9mb3A7CiAgICBzdHJ1Y3Qgc3VwZXJf
YmxvY2sgKiBpX3NiOwogICAgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiBpX21hcHBpbmc7CiAgICBz
dHJ1Y3QgYWRkcmVzc19zcGFjZSBpX2RhdGE7CiAgICB1bnNpZ25lZCBsb25nIGlfc3RhdGU7CiAg
ICB1bnNpZ25lZCBpbnQgaV9mbGFnczsKICAgIHN0cnVjdCBpbm9kZSAqIGlfbmV4dDsKICAgIHN0
cnVjdCBpbm9kZSAqIGlfcHJldjsKICAgIHdhaXRfcXVldWVfaGVhZF90IGlfd2FpdDsKICAgIHVu
aW9uIHsKCXN0cnVjdCByZWlzZXJmc19pbm9kZV9pbmZvIHJlaXNlcmZzX2k7CiAgICB9IHU7Cn07
CgoKCgpzdHJ1Y3QgZmlsZSB7CiAgICBzdHJ1Y3QgZGVudHJ5CSogZl9kZW50cnk7CiAgICB1bnNp
Z25lZCBpbnQgZl9mbGFnczsKICAgIGxvZmZfdCBmX3BvczsKICAgIHN0cnVjdCBmaWxlX29wZXJh
dGlvbnMgKiBmX29wOwogICAgaW50IGZfcmFtYXgsIGZfcmFlbmQsIGZfcmF3aW4sIGZfcmFsZW47
CiAgICBpbnQgZl9lcnJvcjsKfTsKCgojIDEgIi90bXAvYnVpbGQtcmVpc2VyZnMtMy42LjI1LXMz
OTAtMS9yZWlzZXJmc191dGlscy0zLjYuMjUtZnNjay0zLnguMGIvdXRpbHMvaW5jbHVkZS9yZWlz
ZXJmc19mc19zYi5oIiAxCiAKCgoKCgoKCgoKIAogCiAKIAogCgoKICAgICAgICAgICAgICAgICAg
ICAgIAoKCgoKCiAKCnN0cnVjdCByZWlzZXJmc19zdXBlcl9ibG9jawp7CiAgX191MzIgc19ibG9j
a19jb3VudDsKICBfX3UzMiBzX2ZyZWVfYmxvY2tzOyAgICAgICAgICAgICAgICAgICAKICBfX3Uz
MiBzX3Jvb3RfYmxvY2s7ICAgICAgICAgICAJIAogIF9fdTMyIHNfam91cm5hbF9ibG9jazsgICAg
ICAgICAgIAkgCiAgX191MzIgc19qb3VybmFsX2RldjsgICAgICAgICAgIAkgCgogICAKCgoKCgoK
CQkJCSAKCiAgX191MzIgc19vcmlnX2pvdXJuYWxfc2l6ZTsgCQkKICBfX3UzMiBzX2pvdXJuYWxf
dHJhbnNfbWF4IDsgICAgICAgICAgICAKICBfX3UzMiBzX2pvdXJuYWxfYmxvY2tfY291bnQgOyAg
ICAgICAgICAKICBfX3UzMiBzX2pvdXJuYWxfbWF4X2JhdGNoIDsgICAgICAgICAgICAKICBfX3Uz
MiBzX2pvdXJuYWxfbWF4X2NvbW1pdF9hZ2UgOyAgICAgICAKICBfX3UzMiBzX2pvdXJuYWxfbWF4
X3RyYW5zX2FnZSA7ICAgICAgICAKICBfX3UxNiBzX2Jsb2Nrc2l6ZTsgICAgICAgICAgICAgICAg
ICAgCSAKICBfX3UxNiBzX29pZF9tYXhzaXplOwkJCSAKICBfX3UxNiBzX29pZF9jdXJzaXplOwkJ
CSAKICBfX3UxNiBzX3N0YXRlOyAgICAgICAgICAgICAgICAgICAgICAgCSAKICBjaGFyIHNfbWFn
aWNbMTJdOyAgICAgICAgICAgICAgICAgICAgICAKICBfX3UzMiBzX2hhc2hfZnVuY3Rpb25fY29k
ZTsJCSAKICBfX3UxNiBzX3RyZWVfaGVpZ2h0OyAgICAgICAgICAgICAgICAgICAKICBfX3UxNiBz
X2JtYXBfbnI7ICAgICAgICAgICAgICAgICAgICAgICAKICBfX3UxNiBzX3ZlcnNpb247CQkgCgoK
CgogIF9fdTE2IHNfcmVzZXJ2ZWQ7CiAgY2hhciBzX3VudXNlZFsxMjhdIDsJCQkgCn0gX19hdHRy
aWJ1dGVfXyAoKF9fcGFja2VkX18pKTsKCgoKIApzdHJ1Y3QgcmVpc2VyZnNfc3VwZXJfYmxvY2tf
djEKewogIF9fdTMyIHNfYmxvY2tfY291bnQ7CQkJIAogIF9fdTMyIHNfZnJlZV9ibG9ja3M7ICAg
ICAgICAgICAgICAgICAgIAogIF9fdTMyIHNfcm9vdF9ibG9jazsgICAgICAgICAgIAkgCiAgX191
MzIgc19qb3VybmFsX2Jsb2NrOyAgICAgICAgICAgCSAKICBfX3UzMiBzX2pvdXJuYWxfZGV2OyAg
ICAgICAgICAgCSAKICBfX3UzMiBzX29yaWdfam91cm5hbF9zaXplOyAJCSAKICBfX3UzMiBzX2pv
dXJuYWxfdHJhbnNfbWF4IDsgICAgICAgICAgICAKICBfX3UzMiBzX2pvdXJuYWxfYmxvY2tfY291
bnQgOyAgICAgICAgICAKICBfX3UzMiBzX2pvdXJuYWxfbWF4X2JhdGNoIDsgICAgICAgICAgICAK
ICBfX3UzMiBzX2pvdXJuYWxfbWF4X2NvbW1pdF9hZ2UgOyAgICAgICAKICBfX3UzMiBzX2pvdXJu
YWxfbWF4X3RyYW5zX2FnZSA7ICAgICAgICAKICBfX3UxNiBzX2Jsb2Nrc2l6ZTsgICAgICAgICAg
ICAgICAgICAgCSAKICBfX3UxNiBzX29pZF9tYXhzaXplOwkJCSAKICBfX3UxNiBzX29pZF9jdXJz
aXplOwkJCSAKICBfX3UxNiBzX3N0YXRlOyAgICAgICAgICAgICAgICAgICAgICAgCSAKICBjaGFy
IHNfbWFnaWNbMTZdOyAgICAgICAgICAgICAgICAgICAgICAKICBfX3UxNiBzX3RyZWVfaGVpZ2h0
OyAgICAgICAgICAgICAgICAgICAKICBfX3UxNiBzX2JtYXBfbnI7ICAgICAgICAgICAgICAgICAg
ICAgICAKICBfX3UzMiBzX3Jlc2VydmVkOwp9IF9fYXR0cmlidXRlX18gKChfX3BhY2tlZF9fKSk7
CgoKCiAKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgkJCQkgCgoKCgoKCgogCgoKCgoKIAoKCgoK
CgoKIAoKCgoKCgoKc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgewogIHN0cnVjdCBidWZm
ZXJfaGVhZCAqYmggOwkJICAKICBrZGV2X3QgZGV2IDsJCQkJICAKICB1bnNpZ25lZCBsb25nIGJs
b2NrbnIgOwkJICAJCSAKICBpbnQgc3RhdGUgOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2xp
c3QgKmpsaXN0IDsgICAKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqbmV4dCA7ICAg
CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKnByZXYgOyAgIAogIHN0cnVjdCByZWlz
ZXJmc19qb3VybmFsX2Nub2RlICpocHJldiA7ICAKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9j
bm9kZSAqaG5leHQgOyAgCn07CgpzdHJ1Y3QgcmVpc2VyZnNfYml0bWFwX25vZGUgewogIGludCBp
ZCA7CiAgY2hhciAqZGF0YSA7CiAgc3RydWN0IGxpc3RfaGVhZCBsaXN0IDsKfSA7CgpzdHJ1Y3Qg
cmVpc2VyZnNfbGlzdF9iaXRtYXAgewogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2xpc3QgKmpv
dXJuYWxfbGlzdCA7CiAgc3RydWN0IHJlaXNlcmZzX2JpdG1hcF9ub2RlICoqYml0bWFwcyA7Cn0g
OwoKIAoKCnN0cnVjdCByZWlzZXJmc190cmFuc2FjdGlvbl9oYW5kbGUgewoJCQkJIAogIGNoYXIg
KnRfY2FsbGVyIDsgICAgICAgICAgICAgICAKICBpbnQgdF9ibG9ja3NfbG9nZ2VkIDsgICAgICAg
ICAgCiAgaW50IHRfYmxvY2tzX2FsbG9jYXRlZCA7ICAgICAgIAogIHVuc2lnbmVkIGxvbmcgdF90
cmFuc19pZCA7ICAgICAKICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnRfc3VwZXIgOyAgCgoKfSA7Cgog
CgoKCgoKc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfbGlzdCB7CiAgdW5zaWduZWQgbG9uZyBqX3N0
YXJ0IDsKICB1bnNpZ25lZCBsb25nIGpfbGVuIDsKICBhdG9taWNfdCBqX25vbnplcm9sZW4gOwog
IGF0b21pY190IGpfY29tbWl0X2xlZnQgOwogIGF0b21pY190IGpfZmx1c2hpbmcgOwogIGF0b21p
Y190IGpfY29tbWl0X2ZsdXNoaW5nIDsKICBhdG9taWNfdCBqX29sZGVyX2NvbW1pdHNfZG9uZSA7
ICAgICAgIAogIHVuc2lnbmVkIGxvbmcgal90cmFuc19pZCA7CiAgdGltZV90IGpfdGltZXN0YW1w
IDsKICBzdHJ1Y3QgcmVpc2VyZnNfbGlzdF9iaXRtYXAgKmpfbGlzdF9iaXRtYXAgOwogIHN0cnVj
dCBidWZmZXJfaGVhZCAqal9jb21taXRfYmggOyAgCiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxf
Y25vZGUgKmpfcmVhbGJsb2NrICA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpf
ZnJlZWRsaXN0IDsgIAogIHdhaXRfcXVldWVfaGVhZF90IGpfY29tbWl0X3dhaXQgOyAgCiAgd2Fp
dF9xdWV1ZV9oZWFkX3Qgal9mbHVzaF93YWl0IDsgIAp9IDsKCnN0cnVjdCByZWlzZXJmc19wYWdl
X2xpc3QgIDsgIAoKc3RydWN0IHJlaXNlcmZzX2pvdXJuYWwgewogIHN0cnVjdCBidWZmZXJfaGVh
ZCAqKiBqX2FwX2Jsb2NrcyA7ICAKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9s
YXN0IDsgIAogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlICpqX2ZpcnN0IDsgIAoJCQkJ
CiAgaW50IGpfc3RhdGUgOwkJCQogIHVuc2lnbmVkIGxvbmcgal90cmFuc19pZCA7CiAgdW5zaWdu
ZWQgbG9uZyBqX21vdW50X2lkIDsKICB1bnNpZ25lZCBsb25nIGpfc3RhcnQgOyAgICAgICAgICAg
ICAgCiAgdW5zaWduZWQgbG9uZyBqX2xlbiA7ICAgICAgICAgICAgICAgIAogIHVuc2lnbmVkIGxv
bmcgal9sZW5fYWxsb2MgOyAgICAgICAgICAKICBhdG9taWNfdCBqX3djb3VudCA7ICAgICAgICAg
ICAgIAogIHVuc2lnbmVkIGxvbmcgal9iY291bnQgOyAgICAgICAgICAgICAKICB1bnNpZ25lZCBs
b25nIGpfZmlyc3RfdW5mbHVzaGVkX29mZnNldCA7ICAgCiAgdW5zaWduZWQgbG9uZyBqX2xhc3Rf
Zmx1c2hfdHJhbnNfaWQgOyAgICAgCiAgc3RydWN0IGJ1ZmZlcl9oZWFkICpqX2hlYWRlcl9iaCA7
ICAgCgogICAKCgogIHN0cnVjdCByZWlzZXJmc19wYWdlX2xpc3QgKmpfZmx1c2hfcGFnZXMgOwog
IHRpbWVfdCBqX3RyYW5zX3N0YXJ0X3RpbWUgOyAgICAgICAgICAKICB3YWl0X3F1ZXVlX2hlYWRf
dCBqX3dhaXQgOyAgICAgICAgICAKICBhdG9taWNfdCBqX3dsb2NrIDsgICAgICAgICAgICAgICAg
ICAgICAgICAKICB3YWl0X3F1ZXVlX2hlYWRfdCBqX2pvaW5fd2FpdCA7ICAgICAKICBhdG9taWNf
dCBqX2psb2NrIDsgICAgICAgICAgICAgICAgICAgICAgICAKICBpbnQgal9qb3VybmFsX2xpc3Rf
aW5kZXggOwkgICAgICAgCiAgaW50IGpfbGlzdF9iaXRtYXBfaW5kZXggOwkgICAgICAgCiAgaW50
IGpfbXVzdF93YWl0IDsJCSAgICAgICAgCiAgaW50IGpfbmV4dF9mdWxsX2ZsdXNoIDsgICAgICAg
ICAgICAgIAogIGludCBqX25leHRfYXN5bmNfZmx1c2ggOyAgICAgICAgICAgICAgCgogIGludCBq
X2Nub2RlX3VzZWQgOwkgICAgICAgCiAgaW50IGpfY25vZGVfZnJlZSA7ICAgICAgICAgICAKCiAg
c3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfY25vZGVfZnJlZV9saXN0IDsKICBzdHJ1
Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9jbm9kZV9mcmVlX29yaWcgOyAgCgogIGludCBq
X2ZyZWVfYml0bWFwX25vZGVzIDsKICBpbnQgal91c2VkX2JpdG1hcF9ub2RlcyA7CiAgc3RydWN0
IGxpc3RfaGVhZCBqX2JpdG1hcF9ub2RlcyA7CiAgc3RydWN0IHJlaXNlcmZzX2xpc3RfYml0bWFw
IGpfbGlzdF9iaXRtYXBbNSBdIDsJIAogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2xpc3Qgal9q
b3VybmFsX2xpc3RbNjQgXSA7CSAgICAgCiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUg
KmpfaGFzaF90YWJsZVs4MTkyIF0gOyAJICAgICAgCiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxf
Y25vZGUgKmpfbGlzdF9oYXNoX3RhYmxlWzgxOTIgXSA7ICAKCn07CgoKCgp0eXBlZGVmIF9fdTMy
ICgqaGFzaGZfdCkgKGNvbnN0IGNoYXIgKiwgaW50KTsKCiAKc3RydWN0IHJlaXNlcmZzX3NiX2lu
Zm8KewogICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc19zYmg7ICAgICAgICAgICAgICAgICAgICAK
CQkJCSAKCiAgICBzdHJ1Y3QgcmVpc2VyZnNfc3VwZXJfYmxvY2sgKiBzX3JzOyAgICAgICAgICAg
IAogICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfYXBfYml0bWFwOyAgICAgICAgCiAgICBzdHJ1
Y3QgcmVpc2VyZnNfam91cm5hbCAqc19qb3VybmFsIDsJCSAKICAgIHVuc2lnbmVkIHNob3J0IHNf
bW91bnRfc3RhdGU7ICAgICAgICAgICAgICAgICAgCiAgCgkJCQkgCiAgICB2b2lkICgqZW5kX2lv
X2hhbmRsZXIpKHN0cnVjdCBidWZmZXJfaGVhZCAqLCBpbnQpOwogICAgaGFzaGZfdCBzX2hhc2hf
ZnVuY3Rpb247CSAKCgogICAgdW5zaWduZWQgbG9uZyBzX21vdW50X29wdDsJIAoKCgoJCQkJIAog
ICAgd2FpdF9xdWV1ZV9oZWFkX3Qgc193YWl0OwoJCQkJIAogICAgYXRvbWljX3Qgc19nZW5lcmF0
aW9uX2NvdW50ZXI7ICAKICAgICAKICAgIAogICAgIAogICAgaW50IHNfa21hbGxvY3M7CiAgICBp
bnQgc19kaXNrX3JlYWRzOwogICAgaW50IHNfZGlza193cml0ZXM7CiAgICBpbnQgc19maXhfbm9k
ZXM7CiAgICBpbnQgc19kb19iYWxhbmNlOwogICAgaW50IHNfdW5uZWVkZWRfbGVmdF9uZWlnaGJv
cjsKICAgIGludCBzX2dvb2Rfc2VhcmNoX2J5X2tleV9yZWFkYTsKICAgIGludCBzX2JtYXBzOwog
ICAgaW50IHNfYm1hcHNfd2l0aG91dF9zZWFyY2g7CiAgICBpbnQgc19kaXJlY3QyaW5kaXJlY3Q7
CiAgICBpbnQgc19pbmRpcmVjdDJkaXJlY3Q7Cn07CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdm9pZCByZWlzZXJmc19maWxlX2J1ZmZlciAo
c3RydWN0IGJ1ZmZlcl9oZWFkICogYmgsIGludCBsaXN0KTsKaW50IHJlaXNlcmZzX2lzX3N1cGVy
KHN0cnVjdCBzdXBlcl9ibG9jayAqcykgIDsKaW50IGpvdXJuYWxfbWFya19kaXJ0eShzdHJ1Y3Qg
cmVpc2VyZnNfdHJhbnNhY3Rpb25faGFuZGxlICosIHN0cnVjdCBzdXBlcl9ibG9jayAqLCBzdHJ1
Y3QgYnVmZmVyX2hlYWQgKmJoKSA7CmludCBmbHVzaF9vbGRfY29tbWl0cyhzdHJ1Y3Qgc3VwZXJf
YmxvY2sgKnMsIGludCkgOwppbnQgc2hvd19yZWlzZXJmc19sb2Nrcyh2b2lkKSA7CmludCByZWlz
ZXJmc19yZXNpemUoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkIGxvbmcpIDsKCgoKCgoK
CgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNDM1ICIvdG1wL2J1aWxkLXJlaXNlcmZz
LTMuNi4yNS1zMzkwLTEvcmVpc2VyZnNfdXRpbHMtMy42LjI1LWZzY2stMy54LjBiL3V0aWxzL2lu
Y2x1ZGUvdmZzLmgiIDIKCgpleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBzdXBlcl9ibG9ja3M7CgoK
c3RydWN0IHN1cGVyX2Jsb2NrIHsKICAgIHN0cnVjdCBsaXN0X2hlYWQgc19saXN0OwogICAga2Rl
dl90IHNfZGV2OwogICAgdW5zaWduZWQgbG9uZyBzX2Jsb2Nrc2l6ZTsKICAgIGludCBzX2Jsb2Nr
c2l6ZV9iaXRzOwogICAgaW50IHNfZGlydDsKICAgIGludCBzX2ZsYWdzOwogICAgc3RydWN0IGRl
bnRyeSAqIHNfcm9vdDsKICAgIHN0cnVjdCBzdXBlcl9vcGVyYXRpb25zICogc19vcDsKICAgIHVu
aW9uIHsKCXN0cnVjdCByZWlzZXJmc19zYl9pbmZvIHJlaXNlcmZzX3NiOwogICAgfSB1Owp9OwoK
CnN0cnVjdCBmaWxlX2xvY2sgewp9OwoKc3RydWN0IHBvbGxfdGFibGVfc3RydWN0Owp0eXBlZGVm
IGludCAoKmZpbGxkaXJfdCkodm9pZCAqLCBjb25zdCBjaGFyICosIGludCwgb2ZmX3QgLCBpbm9f
dCApOwoKc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB7CiAgICBsb2ZmX3QgKCpsbHNlZWspIChzdHJ1
Y3QgZmlsZSAqLCBsb2ZmX3QsIGludCk7CiAgICBzc2l6ZV90ICAoKnJlYWQpIChzdHJ1Y3QgZmls
ZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwogICAgc3NpemVfdCAgKCp3cml0ZSkgKHN0
cnVjdCBmaWxlICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CiAgICBpbnQgKCpy
ZWFkZGlyKSAoc3RydWN0IGZpbGUgKiwgdm9pZCAqLCBmaWxsZGlyX3QpOwogICAgdW5zaWduZWQg
aW50ICgqcG9sbCkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdCAqKTsK
ICAgIGludCAoKmlvY3RsKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICosIHVuc2lnbmVk
IGludCwgdW5zaWduZWQgbG9uZyk7CiAgICBpbnQgKCptbWFwKSAoc3RydWN0IGZpbGUgKiwgc3Ry
dWN0IHZtX2FyZWFfc3RydWN0ICopOwogICAgaW50ICgqb3BlbikgKHN0cnVjdCBpbm9kZSAqLCBz
dHJ1Y3QgZmlsZSAqKTsKICAgIGludCAoKmZsdXNoKSAoc3RydWN0IGZpbGUgKik7CiAgICBpbnQg
KCpyZWxlYXNlKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwogICAgaW50ICgqZnN5
bmMpIChzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwogICAgaW50ICgqZmFzeW5jKSAo
aW50LCBzdHJ1Y3QgZmlsZSAqLCBpbnQpOwogICAgaW50ICgqY2hlY2tfbWVkaWFfY2hhbmdlKSAo
a2Rldl90IGRldik7CiAgICBpbnQgKCpyZXZhbGlkYXRlKSAoa2Rldl90IGRldik7CiAgICBpbnQg
KCpsb2NrKSAoc3RydWN0IGZpbGUgKiwgaW50LCBzdHJ1Y3QgZmlsZV9sb2NrICopOwp9OwoKc3Ry
dWN0IGlub2RlX29wZXJhdGlvbnMgewogICAgaW50ICgqY3JlYXRlKSAoc3RydWN0IGlub2RlICos
c3RydWN0IGRlbnRyeSAqLGludCk7CiAgICBzdHJ1Y3QgZGVudHJ5ICogKCpsb29rdXApIChzdHJ1
Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOwogICAgaW50ICgqbGluaykgKHN0cnVjdCBkZW50
cnkgKixzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOwogICAgaW50ICgqdW5saW5rKSAo
c3RydWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqKTsKICAgIGludCAoKnN5bWxpbmspIChzdHJ1
Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICosY29uc3QgY2hhciAqKTsKICAgIGludCAoKm1rZGly
KSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqLGludCk7CiAgICBpbnQgKCpybWRpcikg
KHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CiAgICBpbnQgKCpta25vZCkgKHN0cnVj
dCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKixpbnQsaW50KTsKICAgIGludCAoKnJlbmFtZSkgKHN0
cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosCgkJICAgc3RydWN0IGlub2RlICosIHN0cnVj
dCBkZW50cnkgKik7CiAgICBpbnQgKCpyZWFkbGluaykgKHN0cnVjdCBkZW50cnkgKiwgY2hhciAq
LGludCk7CiAgICBzdHJ1Y3QgZGVudHJ5ICogKCpmb2xsb3dfbGluaykgKHN0cnVjdCBkZW50cnkg
Kiwgc3RydWN0IGRlbnRyeSAqLCB1bnNpZ25lZCBpbnQpOwogICAgaW50ICgqZ2V0X2Jsb2NrKSAo
c3RydWN0IGlub2RlICosIGxvbmcsIHN0cnVjdCBidWZmZXJfaGVhZCAqLCBpbnQpOwoKICAgIGlu
dCAoKnJlYWRwYWdlKSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgcGFnZSAqKTsKICAgIGludCAo
KndyaXRlcGFnZSkgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IHBhZ2UgKik7CgogICAgdm9pZCAo
KnRydW5jYXRlKSAoc3RydWN0IGlub2RlICopOwogICAgaW50ICgqcGVybWlzc2lvbikgKHN0cnVj
dCBpbm9kZSAqLCBpbnQpOwogICAgaW50ICgqcmV2YWxpZGF0ZSkgKHN0cnVjdCBkZW50cnkgKik7
Cn07CgoKc3RydWN0IHN1cGVyX29wZXJhdGlvbnMgewogICAgdm9pZCAoKnJlYWRfaW5vZGUpIChz
dHJ1Y3QgaW5vZGUgKik7CiAgICB2b2lkICgqcmVhZF9pbm9kZTIpIChzdHJ1Y3QgaW5vZGUgKiwg
dm9pZCAqKSA7CiAgICB2b2lkICgqd3JpdGVfaW5vZGUpIChzdHJ1Y3QgaW5vZGUgKik7CiAgICB2
b2lkICgqZGlydHlfaW5vZGUpIChzdHJ1Y3QgaW5vZGUgKik7CiAgICB2b2lkICgqcHV0X2lub2Rl
KSAoc3RydWN0IGlub2RlICopOwogICAgdm9pZCAoKmRlbGV0ZV9pbm9kZSkgKHN0cnVjdCBpbm9k
ZSAqKTsKICAgIGludCAoKm5vdGlmeV9jaGFuZ2UpIChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBp
YXR0ciAqKTsKICAgIHZvaWQgKCpwdXRfc3VwZXIpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CiAg
ICB2b2lkICgqd3JpdGVfc3VwZXIpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CiAgICBpbnQgKCpz
dGF0ZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IHN0YXRmcyAqKTsKICAgIGludCAo
KnJlbW91bnRfZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgaW50ICosIGNoYXIgKik7CiAgICB2
b2lkICgqY2xlYXJfaW5vZGUpIChzdHJ1Y3QgaW5vZGUgKik7CiAgICB2b2lkICgqdW1vdW50X2Jl
Z2luKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwp9OwoKCmV4dGVybiBpbmxpbmUgdm9pZCBtYXJr
X2J1ZmZlcl91cHRvZGF0ZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCwgaW50IG9uKQp7CiAgICBp
ZiAob24pCgkoX19idWlsdGluX2NvbnN0YW50X3AoKCAwICApKSA/IF9fY29uc3RhbnRfc2V0X2Jp
dCgoIDAgICksKCAgJmJoLT5iX3N0YXRlICkpIDogX19zZXRfYml0KCggMCAgKSwoICAmYmgtPmJf
c3RhdGUgKSkgKSA7CiAgICBlbHNlCgkoX19idWlsdGluX2NvbnN0YW50X3AoKCAwICApKSA/IF9f
Y29uc3RhbnRfY2xlYXJfYml0KCggMCAgKSwoICAmYmgtPmJfc3RhdGUgKSkgOiBfX2NsZWFyX2Jp
dCgoIDAgICksKCAgJmJoLT5iX3N0YXRlICkpICkgOwp9Cgp0eXBlZGVmIHN0cnVjdCB7CglzaXpl
X3Qgd3JpdHRlbjsKCXNpemVfdCBjb3VudDsKCWNoYXIgKiBidWY7CglpbnQgZXJyb3I7Cn0gcmVh
ZF9kZXNjcmlwdG9yX3Q7Cgp0eXBlZGVmIGludCAoKnJlYWRfYWN0b3JfdCkocmVhZF9kZXNjcmlw
dG9yX3QgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CgoK
ZXh0ZXJuIGNoYXIgKiBrZGV2bmFtZShrZGV2X3QpOwoKZXh0ZXJuIHZvaWQgY2xlYXJfaW5vZGUo
c3RydWN0IGlub2RlICopOwpleHRlcm4gc3RydWN0IGlub2RlICogZ2V0X2VtcHR5X2lub2RlKHZv
aWQpOwpleHRlcm4gdm9pZCBpbnNlcnRfaW5vZGVfaGFzaChzdHJ1Y3QgaW5vZGUgKik7CmludCBp
c19zdWJkaXIgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIHZvaWQg
c3luY19pbm9kZXMoa2Rldl90KTsKCgpleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogZ2V0X2hh
c2hfdGFibGUoa2Rldl90LCBpbnQsIGludCk7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBn
ZXRibGsoa2Rldl90LCBpbnQsIGludCk7CmV4dGVybiB2b2lkIGxsX3J3X2Jsb2NrKGludCwgaW50
LCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaFtdKTsKZXh0ZXJuIHN0cnVjdCBidWZmZXJfaGVhZCAq
IGJyZWFkKGtkZXZfdCwgaW50LCBpbnQpOwpleHRlcm4gdm9pZCBicmVsc2Uoc3RydWN0IGJ1ZmZl
cl9oZWFkICopOwpleHRlcm4gaW5saW5lIHZvaWQgYmZvcmdldChzdHJ1Y3QgYnVmZmVyX2hlYWQg
KmJ1Zik7CgpleHRlcm4gaW50IGdlbmVyaWNfZmlsZV9tbWFwKHN0cnVjdCBmaWxlICosIHN0cnVj
dCB2bV9hcmVhX3N0cnVjdCAqKTsKZXh0ZXJuIHNzaXplX3QgIGdlbmVyaWNfZmlsZV9yZWFkKHN0
cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVybiB2b2lkIGRvX2dl
bmVyaWNfZmlsZV9yZWFkKHN0cnVjdCBmaWxlICogZmlscCwgbG9mZl90ICpwcG9zLCByZWFkX2Rl
c2NyaXB0b3JfdCAqIGRlc2MsIHJlYWRfYWN0b3JfdCBhY3Rvcik7CnR5cGVkZWYgaW50ICgqd3Jp
dGVwYWdlX3QpKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQgbG9uZywg
dW5zaWduZWQgbG9uZywgY29uc3QgY2hhciAqKTsKdHlwZWRlZiBpbnQgKGdldF9ibG9ja190KShz
dHJ1Y3QgaW5vZGUqLGxvbmcsc3RydWN0IGJ1ZmZlcl9oZWFkKixpbnQpOwpleHRlcm4gc3NpemVf
dCAgZ2VuZXJpY19maWxlX3dyaXRlKHN0cnVjdCBmaWxlICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90
LCBsb2ZmX3QgKik7CiAKZXh0ZXJuIGludCBibG9ja193cml0ZV9mdWxsX3BhZ2Uoc3RydWN0IHBh
Z2UgKnBhZ2UsIGdldF9ibG9ja190ICpnZXRfYmxvY2spOwpleHRlcm4gaW50IGJsb2NrX3N5bmNf
cGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSk7CmV4dGVybiBpbnQgYmxvY2tfcmVhZF9mdWxsX3BhZ2Uo
c3RydWN0IHBhZ2UgKiBwYWdlLCBnZXRfYmxvY2tfdCAqIGdldF9ibG9jayk7CmV4dGVybiBpbnQg
YmxvY2tfcHJlcGFyZV93cml0ZShzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgZnJvbSwgdW5z
aWduZWQgdG8sCgkJCSAgICAgICBnZXRfYmxvY2tfdCAqZ2V0X2Jsb2NrKTsKaW50IGdlbmVyaWNf
YmxvY2tfYm1hcChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgbG9uZyBibG9jaywgZ2V0
X2Jsb2NrX3QgKmdldF9ibG9jayk7CmludCBnZW5lcmljX2NvbW1pdF93cml0ZShzdHJ1Y3QgZmls
ZSAqZmlsZSwgc3RydWN0IHBhZ2UgKnBhZ2UsCgkJCSB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0
byk7CmV4dGVybiB2b2lkIGluaXRfZmlmbyhzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIGlu
dmFsaWRhdGVfYnVmZmVycyhrZGV2X3QpOwoKZXh0ZXJuIGludCBmc3luY19kZXYoa2Rldl90KTsK
CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrX2lub2RlX2RpcnR5KHN0cnVjdCBpbm9kZSAqaW5v
ZGUpCnsKICAgIGlub2RlLT5pX3N0YXRlIHw9IDEgOwp9CgoKCmV4dGVybiBzdHJ1Y3QgaW5vZGUg
KmlnZXQ0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vLCB2b2lkICog
bm90dXNlZCwgdm9pZCAqIGRpcmlubyk7CmV4dGVybiB2b2lkIGlwdXQoc3RydWN0IGlub2RlICop
OwoKZXh0ZXJuIHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIGNocmRldl9pbm9kZV9vcGVyYXRpb25z
OwpleHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMgYmxrZGV2X2lub2RlX29wZXJhdGlvbnM7
CgoKZXh0ZXJuIGludCBmaWxlX2ZzeW5jKHN0cnVjdCBmaWxlICosIHN0cnVjdCBkZW50cnkgKik7
CgoKIAogCiAKZXh0ZXJuIGlubGluZSB2b2lkIHdhaXRfb25fYnVmZmVyKHN0cnVjdCBidWZmZXJf
aGVhZCAqIGJoKQp7Cn0KCmV4dGVybiBpbmxpbmUgdm9pZCB1bmxvY2tfYnVmZmVyKHN0cnVjdCBi
dWZmZXJfaGVhZCAqYmgpCnsKICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgoIDIgICkpID8gX19j
b25zdGFudF9jbGVhcl9iaXQoKCAyICApLCggICZiaC0+Yl9zdGF0ZSApKSA6IF9fY2xlYXJfYml0
KCggMiAgKSwoICAmYmgtPmJfc3RhdGUgKSkgKSA7Cgp9CgpleHRlcm4gaW5saW5lIHZvaWQgbG9j
a19zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiBzYikKewp9CgpleHRlcm4gaW5saW5lIHZvaWQg
dW5sb2NrX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqIHNiKQp7Cn0KCgoKZXh0ZXJuIHN0cnVj
dCBpbm9kZV9vcGVyYXRpb25zIHBhZ2Vfc3ltbGlua19pbm9kZV9vcGVyYXRpb25zOwoKZXh0ZXJu
IGludCBnZW5lcmljX2J1ZmZlcl9mZGF0YXN5bmMoc3RydWN0IGlub2RlICppbm9kZSwgdW5zaWdu
ZWQgbG9uZyBzdGFydF9pZHgsIHVuc2lnbmVkIGxvbmcgZW5kX2lkeCk7CgpleHRlcm4gc3NpemVf
dCAgZ2VuZXJpY19yZWFkX2RpcihzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90
ICopOwpleHRlcm4gdm9pZCBtYWtlX2JhZF9pbm9kZShzdHJ1Y3QgaW5vZGUgKik7CgoKIAogCiAK
CmV4dGVybiBpbmxpbmUgdm9pZCB3YWl0X29uX3BhZ2Uoc3RydWN0IHBhZ2UgKiBwYWdlKQp7Cn0K
ZXh0ZXJuIHN0cnVjdCBwYWdlICogZ3JhYl9jYWNoZV9wYWdlIChzdHJ1Y3QgYWRkcmVzc19zcGFj
ZSAqLCB1bnNpZ25lZCBsb25nKTsKCgogCiAKIAoKCiAKIAogCiMgMSAiL3Vzci9pbmNsdWRlL2Fz
bS9ieXRlb3JkZXIuaCIgMSAzCgoKCiAKCgoKCgoKCgoKCgpzdGF0aWMgX19pbmxpbmVfXyBfX2Nv
bnN0X18gX191MzIgX19fYXJjaF9fc3dhYjMyKF9fdTMyIHgpCnsKICBfX3UzMiB0ZW1wOwoKICBf
X2FzbV9fIF9fdm9sYXRpbGVfXyAoCiAgICAgICAgICAiICAgICAgICBzdCAgICAlMCwwKCUxKVxu
IgogICAgICAgICAgIiAgICAgICAgaWNtICAgJTAsOCwzKCUxKVxuIgogICAgICAgICAgIiAgICAg
ICAgaWNtICAgJTAsNCwyKCUxKVxuIgogICAgICAgICAgIiAgICAgICAgaWNtICAgJTAsMiwxKCUx
KVxuIgogICAgICAgICAgIiAgICAgICAgaWMgICAgJTAsMCglMSkiCiAgICAgICAgICA6ICIrJmQi
ICh4KSA6ICJhIiAoJnRlbXApIDogIm1lbW9yeSIgKTsKICByZXR1cm4geDsKfQoKc3RhdGljIF9f
aW5saW5lX18gX19jb25zdF9fIF9fdTMyIF9fX2FyY2hfX3N3YWIzMnAoX191MzIgKngpCnsKICBf
X3UzMiByZXN1bHQ7CgogIF9fYXNtX18gX192b2xhdGlsZV9fICgKICAgICAgICAgICIgICAgICAg
IGljbSAgICUwLDgsMyglMSlcbiIKICAgICAgICAgICIgICAgICAgIGljbSAgICUwLDQsMiglMSlc
biIKICAgICAgICAgICIgICAgICAgIGljbSAgICUwLDIsMSglMSlcbiIKICAgICAgICAgICIgICAg
ICAgIGljICAgICUwLDAoJTEpIgogICAgICAgICAgOiAiPSZkIiAocmVzdWx0KSA6ICJhIiAoeCkg
KTsKICByZXR1cm4gcmVzdWx0Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fX2FyY2hfX3N3
YWIzMnMoX191MzIgKngpCnsKICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCiAgICAgICAgICAiICAg
ICAgICBpY20gICAwLDgsMyglMClcbiIKICAgICAgICAgICIgICAgICAgIGljbSAgIDAsNCwyKCUw
KVxuIgogICAgICAgICAgIiAgICAgICAgaWNtICAgMCwyLDEoJTApXG4iCiAgICAgICAgICAiICAg
ICAgICBpYyAgICAwLDAoJTApXG4iCiAgICAgICAgICAiICAgICAgICBzdCAgICAwLDAoJTApIgog
ICAgICAgICAgOiA6ICJhIiAoeCkgOiAiMCIsICJtZW1vcnkiKTsKfQoKc3RhdGljIF9faW5saW5l
X18gX19jb25zdF9fIF9fdTE2IF9fX2FyY2hfX3N3YWIxNihfX3UxNiB4KQp7CiAgX191MTYgdGVt
cDsKCiAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAogICAgICAgICAgIiAgICAgICAgc3RoICAgJTAs
MCglMSlcbiIKICAgICAgICAgICIgICAgICAgIGljbSAgICUwLDIsMSglMSlcbiIKICAgICAgICAg
ICIgICAgICAgIGljICAgICUwLDAoJTEpXG4iCiAgICAgICAgICA6ICIrJmQiICh4KSA6ICJhIiAo
JnRlbXApIDogIm1lbW9yeSIpOwogIHJldHVybiB4Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX2Nv
bnN0X18gX191MTYgX19fYXJjaF9fc3dhYjE2cChfX3UxNiAqeCkKewogIF9fdTE2IHJlc3VsdDsK
CiAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAogICAgICAgICAgIiAgICAgICAgc3IgICAgJTAsJTBc
biIKICAgICAgICAgICIgICAgICAgIGljbSAgICUwLDIsMSglMSlcbiIKICAgICAgICAgICIgICAg
ICAgIGljICAgICUwLDAoJTEpXG4iCiAgICAgICAgICA6ICI9JmQiIChyZXN1bHQpIDogImEiICh4
KSApOwogIHJldHVybiByZXN1bHQ7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19fYXJjaF9f
c3dhYjE2cyhfX3UxNiAqeCkKewogIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgIiAg
ICAgICAgaWNtICAgMCwyLDEoJTApXG4iCiAgICAgICAgICAiICAgICAgICBpYyAgICAwLDAoJTAp
XG4iCiAgICAgICAgICAiICAgICAgICBzdGggICAwLDAoJTApIgogICAgICAgICAgOiA6ICJhIiAo
eCkgOiAiMCIsICJtZW1vcnkiKTsKfQoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9s
aW51eC9ieXRlb3JkZXIvYmlnX2VuZGlhbi5oIiAxIDMKCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNs
dWRlL2xpbnV4L2J5dGVvcmRlci9zd2FiLmgiIDEgMwoKCgogCgoKCgoKCgoKCgoKCgogCgoKCgoK
CgoKCgoKCgojIDQxICIvdXNyL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL3N3YWIuaCIgMwoKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpl
eHRlcm4gX19pbmxpbmVfXyBfX2NvbnN0X18gX191MTYgX19mc3dhYjE2KF9fdTE2IHgpCnsKCXJl
dHVybiBfX19hcmNoX19zd2FiMTYoIHggKSA7Cn0KZXh0ZXJuIF9faW5saW5lX18gX191MTYgX19z
d2FiMTZwKF9fdTE2ICp4KQp7CglyZXR1cm4gX19fYXJjaF9fc3dhYjE2cCggeCApIDsKfQpleHRl
cm4gX19pbmxpbmVfXyB2b2lkIF9fc3dhYjE2cyhfX3UxNiAqYWRkcikKewoJX19fYXJjaF9fc3dh
YjE2cyggYWRkciApIDsKfQoKZXh0ZXJuIF9faW5saW5lX18gX19jb25zdF9fIF9fdTMyIF9fZnN3
YWIzMihfX3UzMiB4KQp7CglyZXR1cm4gX19fYXJjaF9fc3dhYjMyKCB4ICkgOwp9CmV4dGVybiBf
X2lubGluZV9fIF9fdTMyIF9fc3dhYjMycChfX3UzMiAqeCkKewoJcmV0dXJuIF9fX2FyY2hfX3N3
YWIzMnAoIHggKSA7Cn0KZXh0ZXJuIF9faW5saW5lX18gdm9pZCBfX3N3YWIzMnMoX191MzIgKmFk
ZHIpCnsKCV9fX2FyY2hfX3N3YWIzMnMoIGFkZHIgKSA7Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBf
X2NvbnN0X18gX191NjQgX19mc3dhYjY0KF9fdTY0IHgpCnsKCglfX3UzMiBoID0geCA+PiAzMjsK
ICAgICAgICBfX3UzMiBsID0geCAmICgoMVVMTDw8MzIpLTEpOwogICAgICAgIHJldHVybiAoKChf
X3U2NCkoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTMyKSggbCApKSA/ICgoX191MzIpKCAoKChf
X3UzMikoICggbCApICkgJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAyNCkgfCAoKChfX3UzMiko
ICggbCApICkgJiAoX191MzIpMHgwMDAwZmYwMFVMKSA8PCAgOCkgfCAoKChfX3UzMikoICggbCAp
ICkgJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiAgOCkgfCAoKChfX3UzMikoICggbCApICkgJiAo
X191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkgKSkgIDogX19mc3dhYjMyKCggbCApKSkgKSA8PCAz
MikgfCAoKF9fdTY0KSgoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTMyKSggaCApKSA/ICgoX191
MzIpKCAoKChfX3UzMikoICggaCApICkgJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAyNCkgfCAo
KChfX3UzMikoICggaCApICkgJiAoX191MzIpMHgwMDAwZmYwMFVMKSA8PCAgOCkgfCAoKChfX3Uz
MikoICggaCApICkgJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiAgOCkgfCAoKChfX3UzMikoICgg
aCApICkgJiAoX191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkgKSkgIDogX19mc3dhYjMyKCggaCAp
KSkgKSk7CgoKCn0KZXh0ZXJuIF9faW5saW5lX18gX191NjQgX19zd2FiNjRwKF9fdTY0ICp4KQp7
CglyZXR1cm4gKF9fYnVpbHRpbl9jb25zdGFudF9wKChfX3U2NCkoICooIHggKSApKSA/ICgoX191
NjQpKCAoX191NjQpKCgoX191NjQpKCAoICooIHggKSApICkgJiAoX191NjQpMHgwMDAwMDAwMDAw
MDAwMGZmVUxMKSA8PCA1NikgfCAoX191NjQpKCgoX191NjQpKCAoICooIHggKSApICkgJiAoX191
NjQpMHgwMDAwMDAwMDAwMDBmZjAwVUxMKSA8PCA0MCkgfCAoX191NjQpKCgoX191NjQpKCAoICoo
IHggKSApICkgJiAoX191NjQpMHgwMDAwMDAwMDAwZmYwMDAwVUxMKSA8PCAyNCkgfCAoX191NjQp
KCgoX191NjQpKCAoICooIHggKSApICkgJiAoX191NjQpMHgwMDAwMDAwMGZmMDAwMDAwVUxMKSA8
PCAgOCkgfCAoX191NjQpKCgoX191NjQpKCAoICooIHggKSApICkgJiAoX191NjQpMHgwMDAwMDBm
ZjAwMDAwMDAwVUxMKSA+PiAgOCkgfCAoX191NjQpKCgoX191NjQpKCAoICooIHggKSApICkgJiAo
X191NjQpMHgwMDAwZmYwMDAwMDAwMDAwVUxMKSA+PiAyNCkgfCAoX191NjQpKCgoX191NjQpKCAo
ICooIHggKSApICkgJiAoX191NjQpMHgwMGZmMDAwMDAwMDAwMDAwVUxMKSA+PiA0MCkgfCAoX191
NjQpKCgoX191NjQpKCAoICooIHggKSApICkgJiAoX191NjQpMHhmZjAwMDAwMDAwMDAwMDAwVUxM
KSA+PiA1NikgKSkgIDogX19mc3dhYjY0KCggKiggeCApICkpKSAgOwp9CmV4dGVybiBfX2lubGlu
ZV9fIHZvaWQgX19zd2FiNjRzKF9fdTY0ICphZGRyKQp7CglkbyB7ICooIGFkZHIgKSA9IF9fc3dh
YjY0cCgoIGFkZHIgKSk7IH0gd2hpbGUgKDApIDsKfQoKCiMgMTU2ICIvdXNyL2luY2x1ZGUvbGlu
dXgvYnl0ZW9yZGVyL3N3YWIuaCIgMwoKCgojIDExICIvdXNyL2luY2x1ZGUvbGludXgvYnl0ZW9y
ZGVyL2JpZ19lbmRpYW4uaCIgMiAzCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvZ2VuZXJpYy5oIiAxIDMK
CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEyMyAiL3Vzci9pbmNsdWRlL2xpbnV4L2J5dGVv
cmRlci9nZW5lcmljLmgiIDMKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgpleHRlcm4gX191
MzIJCQludG9obChfX3UzMik7CmV4dGVybiBfX3UzMgkJCWh0b25sKF9fdTMyKTsKCgoKCmV4dGVy
biB1bnNpZ25lZCBzaG9ydCBpbnQJbnRvaHModW5zaWduZWQgc2hvcnQgaW50KTsKZXh0ZXJuIHVu
c2lnbmVkIHNob3J0IGludAlodG9ucyh1bnNpZ25lZCBzaG9ydCBpbnQpOwoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCiMgNTQgIi91c3IvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvYmlnX2VuZGlhbi5o
IiAyIDMKCgoKIyAxMDEgIi91c3IvaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmgiIDIgMwoKCgojIDY0
MyAiL3RtcC9idWlsZC1yZWlzZXJmcy0zLjYuMjUtczM5MC0xL3JlaXNlcmZzX3V0aWxzLTMuNi4y
NS1mc2NrLTMueC4wYi91dGlscy9pbmNsdWRlL3Zmcy5oIiAyCgoKCgoKCgoKCgogCiAKIAoKCgoK
IAogCiAKZXh0ZXJuIGludCBrZXJuZWxfdGhyZWFkKGludCAoKmZuKSh2b2lkICopLCB2b2lkICog
YXJnLCB1bnNpZ25lZCBsb25nIGZsYWdzKTsgCgoKIAogCiAKCgoKIAogCiAKCgoKCgoKIAogCiAK
CgoKCiAKIAogCgpleHRlcm4gaW50ICogYmxrc2l6ZV9zaXplWzI1NSBdOwoKCiAKIAogCnR5cGVk
ZWYgc3RydWN0IHt9ICogdGFza19xdWV1ZTsKCgoKCiAKIAogCmV4dGVybiBpbmxpbmUgdm9pZCBi
d3JpdGUgKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoKQp7CiAgICAgCiAgICBsbF9yd19ibG9jayAo
MSAsIDEsICZiaCk7CiAgICBtYXJrX2J1ZmZlcl9jbGVhbiAoYmgpOwp9CgoKIAogCiAKCgoKZXh0
ZXJuIGlubGluZSBpbnQgcmVpc2VyZnNfcmVtb3ZlX3BhZ2VfZnJvbV9mbHVzaF9saXN0KHN0cnVj
dCByZWlzZXJmc190cmFuc2FjdGlvbl9oYW5kbGUgKiB0aCwKCQkJCQkJICAgICAgIHN0cnVjdCBp
bm9kZSAqIGlub2RlKQp7CiAgcmV0dXJuIDA7Cn0KZXh0ZXJuIGlubGluZSBpbnQgcmVpc2VyZnNf
YWRkX3BhZ2VfdG9fZmx1c2hfbGlzdChzdHJ1Y3QgcmVpc2VyZnNfdHJhbnNhY3Rpb25faGFuZGxl
ICogdGgsCgkJCQkJCSAgc3RydWN0IGlub2RlICogaW5vZGUsIHN0cnVjdCBidWZmZXJfaGVhZCAq
IGJoKQp7CiAgcmV0dXJuIDA7Cn0KCmV4dGVybiBpbmxpbmUgdm9pZCByZWlzZXJmc19jaGVja19s
b2NrX2RlcHRoIChjaGFyICogY2FsbGVyKQp7Cn0KCgoKIyAyNiAibWtyZWlzZXJmcy5jIiAyCgoj
IDEgIi90bXAvYnVpbGQtcmVpc2VyZnMtMy42LjI1LXMzOTAtMS9yZWlzZXJmc191dGlscy0zLjYu
MjUtZnNjay0zLnguMGIvdXRpbHMvaW5jbHVkZS9yZWlzZXJmc19mcy5oIiAxCiAKCgoKCQkJCSAK
CgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEgMwoKCgojIDEgIi91
c3IvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIiAxIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUv
bGludXgvc3RkZGVmLmgiIDEgMwoKCgoKCgoKCgoKCgoKCiMgNCAiL3Vzci9pbmNsdWRlL2xpbnV4
L3Bvc2l4X3R5cGVzLmgiIDIgMwoKCiAKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKdHlw
ZWRlZiBzdHJ1Y3QgewoJdW5zaWduZWQgbG9uZyBmZHNfYml0cyBbKDEwMjQgLyAoOCAqIHNpemVv
Zih1bnNpZ25lZCBsb25nKSkgKSBdOwp9IF9fa2VybmVsX2ZkX3NldDsKCiAKdHlwZWRlZiB2b2lk
ICgqX19rZXJuZWxfc2lnaGFuZGxlcl90KShpbnQpOwoKIAp0eXBlZGVmIGludCBfX2tlcm5lbF9r
ZXlfdDsKCiMgMSAiL3Vzci9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIiAxIDMKIAoKCgoKCgoK
CgoKIAoKCgoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgIF9fa2VybmVsX2Rldl90Owp0eXBlZGVm
IHVuc2lnbmVkIGxvbmcgICBfX2tlcm5lbF9pbm9fdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCAg
X19rZXJuZWxfbW9kZV90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0ICBfX2tlcm5lbF9ubGlua190
Owp0eXBlZGVmIGxvbmcgICAgICAgICAgICBfX2tlcm5lbF9vZmZfdDsKdHlwZWRlZiBpbnQgICAg
ICAgICAgICAgX19rZXJuZWxfcGlkX3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgIF9fa2VybmVs
X2lwY19waWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCAgX19rZXJuZWxfdWlkX3Q7CnR5cGVk
ZWYgdW5zaWduZWQgc2hvcnQgIF9fa2VybmVsX2dpZF90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
ICBfX2tlcm5lbF9zaXplX3Q7CnR5cGVkZWYgaW50ICAgICAgICAgICAgIF9fa2VybmVsX3NzaXpl
X3Q7CnR5cGVkZWYgaW50ICAgICAgICAgICAgIF9fa2VybmVsX3B0cmRpZmZfdDsKdHlwZWRlZiBs
b25nICAgICAgICAgICAgX19rZXJuZWxfdGltZV90Owp0eXBlZGVmIGxvbmcgICAgICAgICAgICBf
X2tlcm5lbF9zdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nICAgICAgICAgICAgX19rZXJuZWxfY2xv
Y2tfdDsKdHlwZWRlZiBpbnQgICAgICAgICAgICAgX19rZXJuZWxfZGFkZHJfdDsKdHlwZWRlZiBj
aGFyICogICAgICAgICAgX19rZXJuZWxfY2FkZHJfdDsKCgp0eXBlZGVmIGxvbmcgbG9uZyAgICAg
ICBfX2tlcm5lbF9sb2ZmX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgewoKCgogICAgICAgIGludCAgICAg
X192YWxbMl07Cgp9IF9fa2VybmVsX2ZzaWRfdDsKCgojIDY3ICIvdXNyL2luY2x1ZGUvYXNtL3Bv
c2l4X3R5cGVzLmgiIDMKCgoKIyA0NiAiL3Vzci9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmgi
IDIgMwoKCgojIDQgIi91c3IvaW5jbHVkZS9saW51eC90eXBlcy5oIiAyIDMKCgoKIyA5NCAiL3Vz
ci9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDMKCgogCgoKCgpzdHJ1Y3QgdXN0YXQgewoJX19rZXJu
ZWxfZGFkZHJfdAlmX3RmcmVlOwoJX19rZXJuZWxfaW5vX3QJCWZfdGlub2RlOwoJY2hhcgkJCWZf
Zm5hbWVbNl07CgljaGFyCQkJZl9mcGFja1s2XTsKfTsKCgojIDE2ICIvdG1wL2J1aWxkLXJlaXNl
cmZzLTMuNi4yNS1zMzkwLTEvcmVpc2VyZnNfdXRpbHMtMy42LjI1LWZzY2stMy54LjBiL3V0aWxz
L2luY2x1ZGUvcmVpc2VyZnNfZnMuaCIgMgoKCgoKCgogCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgkJCQkgCgoKCgogCiAKCgoJCQkJIAogCgoKIAoKCgoKCgoKCgoKIAoKCgoKIAoKCiAK
CgogCiAKIAoJCQkJIAoKCiAKCgogCgogCgoKCiAKIAogCgogCgoKCgoJCQkJIAoKCQkJCSAKCgoK
CmV4dGVybiBpbmxpbmUgaW50IGlzX3JlaXNlcmZzX21hZ2ljX3N0cmluZyAoc3RydWN0IHJlaXNl
cmZzX3N1cGVyX2Jsb2NrICogcnMpCnsKICAgIHJldHVybiAoISAoX19leHRlbnNpb25fXyAoX19i
dWlsdGluX2NvbnN0YW50X3AgKCAgCgkJICAgICAgc3RybGVuICggIlJlSXNFckZzIiApICkJJiYg
KChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIHJzLT5zX21hZ2ljICkJJiYgc3RybGVuICggcnMtPnNf
bWFnaWMgKSA8ICgoc2l6ZV90KSAoICAgCQkgICAgICBzdHJsZW4gKCAiUmVJc0VyRnMiICkgKSkp
CXx8IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoICAiUmVJc0VyRnMiICApCSYmIHN0cmxlbiAoICAi
UmVJc0VyRnMiICApIDwgKChzaXplX3QpICggICAJCSAgICAgIHN0cmxlbiAoICJSZUlzRXJGcyIg
KSApKSkpCT8gX19leHRlbnNpb25fXwkoeyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVuOwkoX19i
dWlsdGluX2NvbnN0YW50X3AgKCAgcnMtPnNfbWFnaWMgICkgJiYgX19idWlsdGluX2NvbnN0YW50
X3AgKCAgICAiUmVJc0VyRnMiICAgKQkmJiAoX19zMV9sZW4gPSBzdHJsZW4gKCAgcnMtPnNfbWFn
aWMgICksIF9fczJfbGVuID0gc3RybGVuICggICAgIlJlSXNFckZzIiAgICksCSghICgoc2l6ZV90
KShjb25zdCB2b2lkICopKCggICBycy0+c19tYWdpYyAgICkgKyAxKSAtIChzaXplX3QpKGNvbnN0
IHZvaWQgKikoICAgcnMtPnNfbWFnaWMgICApID09IDEpICB8fCBfX3MxX2xlbiA+PSA0KQkmJiAo
ISAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoICAgICAiUmVJc0VyRnMiICAgICkgKyAxKSAtIChz
aXplX3QpKGNvbnN0IHZvaWQgKikoICAgICAiUmVJc0VyRnMiICAgICkgPT0gMSkgIHx8IF9fczJf
bGVuID49IDQpKQk/IG1lbWNtcCAoKF9fY29uc3QgY2hhciAqKSAoICBycy0+c19tYWdpYyAgKSwg
KF9fY29uc3QgY2hhciAqKSAoICAgICJSZUlzRXJGcyIgICApLAkoX19zMV9sZW4gPCBfX3MyX2xl
biA/IF9fczFfbGVuIDogX19zMl9sZW4pICsgMSkJOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCAg
cnMtPnNfbWFnaWMgICkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCAgIHJzLT5zX21hZ2lj
ICAgKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSggICBycy0+c19tYWdpYyAgICkgPT0g
MSkgCSYmIChfX3MxX2xlbiA9IHN0cmxlbiAoICBycy0+c19tYWdpYyAgKSwgX19zMV9sZW4gPCA0
KQk/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoICAgICJSZUlzRXJGcyIgICApICYmICgoc2l6ZV90
KShjb25zdCB2b2lkICopKCggICAgICJSZUlzRXJGcyIgICAgKSArIDEpIC0gKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSggICAgICJSZUlzRXJGcyIgICAgKSA9PSAxKSAJPyAoX19leHRlbnNpb25fXyAo
eyByZWdpc3RlciBpbnQgX19yZXN1bHQgPQkoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoICAgcnMtPnNfbWFnaWMgICApKVswXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoICAgICAgIlJlSXNFckZzIiAgICApKVswXSk7CWlm
ICggIF9fczFfbGVuICA+IDAgJiYgX19yZXN1bHQgPT0gMCkJewlfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKQkoX19jb25zdCBjaGFyICopICggICBycy0+c19tYWdpYyAgICkp
WzFdCS0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikJKF9fY29uc3QgY2hhciAqKSAoICAgICAg
IlJlSXNFckZzIiAgICApKVsxXSk7CWlmICggIF9fczFfbGVuICA+IDEgJiYgX19yZXN1bHQgPT0g
MCkJewlfX3Jlc3VsdCA9CSgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKQkoX19jb25zdCBjaGFy
ICopICggICBycy0+c19tYWdpYyAgICkpWzJdCS0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikJ
KF9fY29uc3QgY2hhciAqKSAoICAgICAgIlJlSXNFckZzIiAgICApKVsyXSk7CWlmICggIF9fczFf
bGVuICA+IDIgJiYgX19yZXN1bHQgPT0gMCkJX19yZXN1bHQgPQkoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikJKF9fY29uc3QgY2hhciAqKSAoICAgcnMtPnNfbWFnaWMgICApKVszXQktICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopCShfX2NvbnN0IGNoYXIgKikgKCAgICAgICJSZUlzRXJGcyIg
ICAgKSlbM10pOwl9CX0JX19yZXN1bHQ7IH0pKSAJOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKl9fczIgPQkoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKCAgICAgICJSZUlzRXJGcyIgICAgKTsJcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0J
KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCAgIHJzLT5zX21h
Z2ljICAgKSlbMF0gLSBfX3MyWzBdKTsJaWYgKCAgX19zMV9sZW4gID4gMCAmJiBfX3Jlc3VsdCA9
PSAwKQl7CV9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopCShfX2NvbnN0IGNo
YXIgKikgKCAgIHJzLT5zX21hZ2ljICAgKSlbMV0gLSBfX3MyWzFdKTsgaWYgKCAgX19zMV9sZW4g
ID4gMSAmJiBfX3Jlc3VsdCA9PSAwKQl7CV9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopCShfX2NvbnN0IGNoYXIgKikgKCAgIHJzLT5zX21hZ2ljICAgKSlbMl0gLSBfX3MyWzJd
KTsJaWYgKCAgX19zMV9sZW4gID4gMiAmJiBfX3Jlc3VsdCA9PSAwKQlfX3Jlc3VsdCA9ICgoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKQkoX19jb25zdCBjaGFyICopICAoICAgcnMtPnNfbWFnaWMg
ICApKVszXQktIF9fczJbM10pOwl9CX0JX19yZXN1bHQ7IH0pKSApCTogKF9fYnVpbHRpbl9jb25z
dGFudF9wICggICAgIlJlSXNFckZzIiAgICkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCAg
ICAgIlJlSXNFckZzIiAgICApICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCAgICAgIlJl
SXNFckZzIiAgICApID09IDEpIAkmJiAoX19zMl9sZW4gPSBzdHJsZW4gKCAgICAiUmVJc0VyRnMi
ICAgKSwgX19zMl9sZW4gPCA0KQk/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoICBycy0+c19tYWdp
YyAgKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoICAgcnMtPnNfbWFnaWMgICApICsgMSkg
LSAoc2l6ZV90KShjb25zdCB2b2lkICopKCAgIHJzLT5zX21hZ2ljICAgKSA9PSAxKSAJPyAoX19l
eHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPQkoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoICAgcnMtPnNfbWFnaWMgICApKVswXSAtICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoICAgICAgIlJlSXNFckZzIiAg
ICApKVswXSk7CWlmICggIF9fczJfbGVuICA+IDAgJiYgX19yZXN1bHQgPT0gMCkJewlfX3Jlc3Vs
dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKQkoX19jb25zdCBjaGFyICopICggICBycy0+
c19tYWdpYyAgICkpWzFdCS0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikJKF9fY29uc3QgY2hh
ciAqKSAoICAgICAgIlJlSXNFckZzIiAgICApKVsxXSk7CWlmICggIF9fczJfbGVuICA+IDEgJiYg
X19yZXN1bHQgPT0gMCkJewlfX3Jlc3VsdCA9CSgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKQko
X19jb25zdCBjaGFyICopICggICBycy0+c19tYWdpYyAgICkpWzJdCS0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikJKF9fY29uc3QgY2hhciAqKSAoICAgICAgIlJlSXNFckZzIiAgICApKVsyXSk7
CWlmICggIF9fczJfbGVuICA+IDIgJiYgX19yZXN1bHQgPT0gMCkJX19yZXN1bHQgPQkoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikJKF9fY29uc3QgY2hhciAqKSAoICAgcnMtPnNfbWFnaWMgICAp
KVszXQktICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopCShfX2NvbnN0IGNoYXIgKikgKCAgICAg
ICJSZUlzRXJGcyIgICAgKSlbM10pOwl9CX0JX19yZXN1bHQ7IH0pKSAJOiAoX19leHRlbnNpb25f
XyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPQkoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCAgIHJzLT5zX21hZ2ljICAgKTsJcmVnaXN0ZXIgaW50IF9f
cmVzdWx0ID0JX19zMVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopCShfX2NvbnN0IGNo
YXIgKikgKCAgICAgICJSZUlzRXJGcyIgICAgKSlbMF07CWlmICggIF9fczJfbGVuICA+IDAgJiYg
X19yZXN1bHQgPT0gMCkJewlfX3Jlc3VsdCA9IChfX3MxWzFdCS0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikJKF9fY29uc3QgY2hhciAqKSAoICAgICAgIlJlSXNFckZzIiAgICApKVsxXSk7CWlm
ICggIF9fczJfbGVuICA+IDEgJiYgX19yZXN1bHQgPT0gMCkJewlfX3Jlc3VsdCA9CShfX3MxWzJd
IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikJKF9fY29uc3QgY2hhciAqKSAoICAgICAgIlJl
SXNFckZzIiAgICApKVsyXSk7CWlmICggIF9fczJfbGVuICA+IDIgJiYgX19yZXN1bHQgPT0gMCkJ
X19yZXN1bHQgPQkoX19zMVszXQktICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopCShfX2NvbnN0
IGNoYXIgKikgKCAgICAgICJSZUlzRXJGcyIgICAgKSlbM10pOwl9CX0JX19yZXN1bHQ7IH0pKSAp
CTogc3RyY21wICggIHJzLT5zX21hZ2ljICAsICAgICAiUmVJc0VyRnMiICAgKSkpKTsgfSkgIDog
c3RybmNtcCAoIHJzLT5zX21hZ2ljICwgICAiUmVJc0VyRnMiICAsICAgIAkJICAgICAgc3RybGVu
ICggIlJlSXNFckZzIiApICkpKSAgfHwKCSAgICAhIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAoICAKCQkgICAgICBzdHJsZW4gKCAiUmVJc0VyMkZzIiApICkJJiYgKChfX2J1
aWx0aW5fY29uc3RhbnRfcCAoIHJzLT5zX21hZ2ljICkJJiYgc3RybGVuICggcnMtPnNfbWFnaWMg
KSA8ICgoc2l6ZV90KSAoICAgCQkgICAgICBzdHJsZW4gKCAiUmVJc0VyMkZzIiApICkpKQl8fCAo
X19idWlsdGluX2NvbnN0YW50X3AgKCAgIlJlSXNFcjJGcyIgICkJJiYgc3RybGVuICggICJSZUlz
RXIyRnMiICApIDwgKChzaXplX3QpICggICAJCSAgICAgIHN0cmxlbiAoICJSZUlzRXIyRnMiICkg
KSkpKQk/IF9fZXh0ZW5zaW9uX18JKHsgc2l6ZV90IF9fczFfbGVuLCBfX3MyX2xlbjsJKF9fYnVp
bHRpbl9jb25zdGFudF9wICggIHJzLT5zX21hZ2ljICApICYmIF9fYnVpbHRpbl9jb25zdGFudF9w
ICggICAgIlJlSXNFcjJGcyIgICApCSYmIChfX3MxX2xlbiA9IHN0cmxlbiAoICBycy0+c19tYWdp
YyAgKSwgX19zMl9sZW4gPSBzdHJsZW4gKCAgICAiUmVJc0VyMkZzIiAgICksCSghICgoc2l6ZV90
KShjb25zdCB2b2lkICopKCggICBycy0+c19tYWdpYyAgICkgKyAxKSAtIChzaXplX3QpKGNvbnN0
IHZvaWQgKikoICAgcnMtPnNfbWFnaWMgICApID09IDEpICB8fCBfX3MxX2xlbiA+PSA0KQkmJiAo
ISAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoICAgICAiUmVJc0VyMkZzIiAgICApICsgMSkgLSAo
c2l6ZV90KShjb25zdCB2b2lkICopKCAgICAgIlJlSXNFcjJGcyIgICAgKSA9PSAxKSAgfHwgX19z
Ml9sZW4gPj0gNCkpCT8gbWVtY21wICgoX19jb25zdCBjaGFyICopICggIHJzLT5zX21hZ2ljICAp
LCAoX19jb25zdCBjaGFyICopICggICAgIlJlSXNFcjJGcyIgICApLAkoX19zMV9sZW4gPCBfX3My
X2xlbiA/IF9fczFfbGVuIDogX19zMl9sZW4pICsgMSkJOiAoX19idWlsdGluX2NvbnN0YW50X3Ag
KCAgcnMtPnNfbWFnaWMgICkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCAgIHJzLT5zX21h
Z2ljICAgKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSggICBycy0+c19tYWdpYyAgICkg
PT0gMSkgCSYmIChfX3MxX2xlbiA9IHN0cmxlbiAoICBycy0+c19tYWdpYyAgKSwgX19zMV9sZW4g
PCA0KQk/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoICAgICJSZUlzRXIyRnMiICAgKSAmJiAoKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgoICAgICAiUmVJc0VyMkZzIiAgICApICsgMSkgLSAoc2l6ZV90
KShjb25zdCB2b2lkICopKCAgICAgIlJlSXNFcjJGcyIgICAgKSA9PSAxKSAJPyAoX19leHRlbnNp
b25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPQkoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoICAgcnMtPnNfbWFnaWMgICApKVswXSAtICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoICAgICAgIlJlSXNFcjJGcyIgICAgKSlb
MF0pOwlpZiAoICBfX3MxX2xlbiAgPiAwICYmIF9fcmVzdWx0ID09IDApCXsJX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikJKF9fY29uc3QgY2hhciAqKSAoICAgcnMtPnNfbWFn
aWMgICApKVsxXQktICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopCShfX2NvbnN0IGNoYXIgKikg
KCAgICAgICJSZUlzRXIyRnMiICAgICkpWzFdKTsJaWYgKCAgX19zMV9sZW4gID4gMSAmJiBfX3Jl
c3VsdCA9PSAwKQl7CV9fcmVzdWx0ID0JKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopCShfX2Nv
bnN0IGNoYXIgKikgKCAgIHJzLT5zX21hZ2ljICAgKSlbMl0JLSAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKQkoX19jb25zdCBjaGFyICopICggICAgICAiUmVJc0VyMkZzIiAgICApKVsyXSk7CWlm
ICggIF9fczFfbGVuICA+IDIgJiYgX19yZXN1bHQgPT0gMCkJX19yZXN1bHQgPQkoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikJKF9fY29uc3QgY2hhciAqKSAoICAgcnMtPnNfbWFnaWMgICApKVsz
XQktICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopCShfX2NvbnN0IGNoYXIgKikgKCAgICAgICJS
ZUlzRXIyRnMiICAgICkpWzNdKTsJfQl9CV9fcmVzdWx0OyB9KSkgCTogKF9fZXh0ZW5zaW9uX18g
KHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0JKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICggICAgICAiUmVJc0VyMkZzIiAgICApOwlyZWdpc3RlciBpbnQg
X19yZXN1bHQgPQkoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
ICAgcnMtPnNfbWFnaWMgICApKVswXSAtIF9fczJbMF0pOwlpZiAoICBfX3MxX2xlbiAgPiAwICYm
IF9fcmVzdWx0ID09IDApCXsJX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikJ
KF9fY29uc3QgY2hhciAqKSAoICAgcnMtPnNfbWFnaWMgICApKVsxXSAtIF9fczJbMV0pOyBpZiAo
ICBfX3MxX2xlbiAgPiAxICYmIF9fcmVzdWx0ID09IDApCXsJX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikJKF9fY29uc3QgY2hhciAqKSAoICAgcnMtPnNfbWFnaWMgICApKVsy
XSAtIF9fczJbMl0pOwlpZiAoICBfX3MxX2xlbiAgPiAyICYmIF9fcmVzdWx0ID09IDApCV9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopCShfX2NvbnN0IGNoYXIgKikgICggICBy
cy0+c19tYWdpYyAgICkpWzNdCS0gX19zMlszXSk7CX0JfQlfX3Jlc3VsdDsgfSkpICkJOiAoX19i
dWlsdGluX2NvbnN0YW50X3AgKCAgICAiUmVJc0VyMkZzIiAgICkgJiYgKChzaXplX3QpKGNvbnN0
IHZvaWQgKikoKCAgICAgIlJlSXNFcjJGcyIgICAgKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKSggICAgICJSZUlzRXIyRnMiICAgICkgPT0gMSkgCSYmIChfX3MyX2xlbiA9IHN0cmxlbiAo
ICAgICJSZUlzRXIyRnMiICAgKSwgX19zMl9sZW4gPCA0KQk/IChfX2J1aWx0aW5fY29uc3RhbnRf
cCAoICBycy0+c19tYWdpYyAgKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoICAgcnMtPnNf
bWFnaWMgICApICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCAgIHJzLT5zX21hZ2ljICAg
KSA9PSAxKSAJPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPQkoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoICAgcnMtPnNfbWFnaWMg
ICApKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoICAg
ICAgIlJlSXNFcjJGcyIgICAgKSlbMF0pOwlpZiAoICBfX3MyX2xlbiAgPiAwICYmIF9fcmVzdWx0
ID09IDApCXsJX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikJKF9fY29uc3Qg
Y2hhciAqKSAoICAgcnMtPnNfbWFnaWMgICApKVsxXQktICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopCShfX2NvbnN0IGNoYXIgKikgKCAgICAgICJSZUlzRXIyRnMiICAgICkpWzFdKTsJaWYgKCAg
X19zMl9sZW4gID4gMSAmJiBfX3Jlc3VsdCA9PSAwKQl7CV9fcmVzdWx0ID0JKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopCShfX2NvbnN0IGNoYXIgKikgKCAgIHJzLT5zX21hZ2ljICAgKSlbMl0J
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKQkoX19jb25zdCBjaGFyICopICggICAgICAiUmVJ
c0VyMkZzIiAgICApKVsyXSk7CWlmICggIF9fczJfbGVuICA+IDIgJiYgX19yZXN1bHQgPT0gMCkJ
X19yZXN1bHQgPQkoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikJKF9fY29uc3QgY2hhciAqKSAo
ICAgcnMtPnNfbWFnaWMgICApKVszXQktICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopCShfX2Nv
bnN0IGNoYXIgKikgKCAgICAgICJSZUlzRXIyRnMiICAgICkpWzNdKTsJfQl9CV9fcmVzdWx0OyB9
KSkgCTogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0JKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICggICBycy0+c19tYWdpYyAg
ICk7CXJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9CV9fczFbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKQkoX19jb25zdCBjaGFyICopICggICAgICAiUmVJc0VyMkZzIiAgICApKVswXTsJaWYg
KCAgX19zMl9sZW4gID4gMCAmJiBfX3Jlc3VsdCA9PSAwKQl7CV9fcmVzdWx0ID0gKF9fczFbMV0J
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKQkoX19jb25zdCBjaGFyICopICggICAgICAiUmVJ
c0VyMkZzIiAgICApKVsxXSk7CWlmICggIF9fczJfbGVuICA+IDEgJiYgX19yZXN1bHQgPT0gMCkJ
ewlfX3Jlc3VsdCA9CShfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikJKF9fY29u
c3QgY2hhciAqKSAoICAgICAgIlJlSXNFcjJGcyIgICAgKSlbMl0pOwlpZiAoICBfX3MyX2xlbiAg
PiAyICYmIF9fcmVzdWx0ID09IDApCV9fcmVzdWx0ID0JKF9fczFbM10JLSAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKQkoX19jb25zdCBjaGFyICopICggICAgICAiUmVJc0VyMkZzIiAgICApKVsz
XSk7CX0JfQlfX3Jlc3VsdDsgfSkpICkJOiBzdHJjbXAgKCAgcnMtPnNfbWFnaWMgICwgICAgICJS
ZUlzRXIyRnMiICAgKSkpKTsgfSkgIDogc3RybmNtcCAoIHJzLT5zX21hZ2ljICwgICAiUmVJc0Vy
MkZzIiAgLCAgICAJCSAgICAgIHN0cmxlbiAoICJSZUlzRXIyRnMiICkgKSkpICk7Cn0KCgkJCQkg
CgoKCgoKCgoKCgoKIAoKCgogCgoKCgoKCgogCiAKCiAKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25n
IGJfYmxvY2tucl90Owp0eXBlZGVmIF9fdTMyIHVucF90OwoKCQkJCSAKCnN0cnVjdCB1bmZtX25v
ZGVpbmZvIHsKCQkJCSAKICAgIHVucF90IHVuZm1fbm9kZW51bTsKCQkJCSAKCgoKICAgIHVuc2ln
bmVkIHNob3J0IHVuZm1fZnJlZXNwYWNlOwp9OwoKCiAKCgoKCgoKCgogCgoKCgoKCiMgMjAyICIv
dG1wL2J1aWxkLXJlaXNlcmZzLTMuNi4yNS1zMzkwLTEvcmVpc2VyZnNfdXRpbHMtMy42LjI1LWZz
Y2stMy54LjBiL3V0aWxzL2luY2x1ZGUvcmVpc2VyZnNfZnMuaCIKCgogCiAKCgoKIAoKCiAKIAog
CiAKCiAgIAoKCgoKCgoKCgoKIyAyMzkgIi90bXAvYnVpbGQtcmVpc2VyZnMtMy42LjI1LXMzOTAt
MS9yZWlzZXJmc191dGlscy0zLjYuMjUtZnNjay0zLnguMGIvdXRpbHMvaW5jbHVkZS9yZWlzZXJm
c19mcy5oIgoKCiAKCgoKCgoKCiAKIAogCgogCiAKIAogCiAKIAogCiAKCgoKCiAKCgogCiAKIApz
dHJ1Y3Qgb2Zmc2V0X3YxIHsKICAgIF9fdTMyIGtfb2Zmc2V0OwogICAgX191MzIga191bmlxdWVu
ZXNzOwp9IF9fYXR0cmlidXRlX18gKChfX3BhY2tlZF9fKSk7CgpzdHJ1Y3Qgb2Zmc2V0X3YyIHsK
ICAgIF9fdTY0IGtfb2Zmc2V0OjYwOwogICAgX191NjQga190eXBlOiA0Owp9IF9fYXR0cmlidXRl
X18gKChfX3BhY2tlZF9fKSk7CgoKCiAKCnN0cnVjdCBrZXkgewogICAgX191MzIga19kaXJfaWQ7
ICAgICAKCiAgICBfX3UzMiBrX29iamVjdGlkOyAgIAogICAgdW5pb24gewoJc3RydWN0IG9mZnNl
dF92MSBrX29mZnNldF92MTsKCXN0cnVjdCBvZmZzZXRfdjIga19vZmZzZXRfdjI7CiAgICB9IF9f
YXR0cmlidXRlX18gKChfX3BhY2tlZF9fKSkgdTsKfSBfX2F0dHJpYnV0ZV9fICgoX19wYWNrZWRf
XykpOwoKCnN0cnVjdCBjcHVfa2V5IHsKICAgIHN0cnVjdCBrZXkgb25fZGlza19rZXk7CiAgICBp
bnQgdmVyc2lvbjsKICAgIGludCBrZXlfbGVuZ3RoOyAgCgp9OwoKCgoKCgoKICAKCgoKCgoKCiAK
CgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgogCgoKCgpzdHJ1Y3QgaXRlbV9oZWFk
CnsKICBzdHJ1Y3Qga2V5IGloX2tleTsgCSAKCgkJCQkgCgoKICB1bmlvbiB7CiAgICBfX3UxNiBp
aF9mcmVlX3NwYWNlX3Jlc2VydmVkOyAgCgoKCiAgICBfX3UxNiBpaF9lbnRyeV9jb3VudDsgIAoK
ICB9IF9fYXR0cmlidXRlX18gKChfX3BhY2tlZF9fKSkgdTsKICBfX3UxNiBpaF9pdGVtX2xlbjsg
ICAgICAgICAgICAKICBfX3UxNiBpaF9pdGVtX2xvY2F0aW9uOyAgICAgICAKCQkJCSAKCgoKCgoK
CgoKCgoKICBfX3UxNiBpaF92ZXJzaW9uOwkgICAgICAgIAoKCn0gX19hdHRyaWJ1dGVfXyAoKF9f
cGFja2VkX18pKTsKIAoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCiAKIAogCgoKCgoKCiAKIAogCgoK
CgoKCiAKIAogCmV4dGVybiBpbmxpbmUgaW50IHVuaXF1ZW5lc3MydHlwZSAoX191MzIgdW5pcXVl
bmVzcykKewogICAgc3dpdGNoICh1bmlxdWVuZXNzKSB7CiAgICBjYXNlIDAgOiByZXR1cm4gMCA7
CiAgICBjYXNlIDB4ZmZmZmZmZmUgOiByZXR1cm4gMSA7CiAgICBjYXNlIDB4ZmZmZmZmZmYgOiBy
ZXR1cm4gMiA7CiAgICBjYXNlIDUwMCA6IHJldHVybiAzIDsKICAgIH0KIAoKCgoKCiAgICByZXR1
cm4gMTUgOwp9CgpleHRlcm4gaW5saW5lIF9fdTMyIHR5cGUydW5pcXVlbmVzcyAoaW50IHR5cGUp
CnsKICAgIHN3aXRjaCAodHlwZSkgewogICAgY2FzZSAwIDogcmV0dXJuIDAgOwogICAgY2FzZSAx
IDogcmV0dXJuIDB4ZmZmZmZmZmUgOwogICAgY2FzZSAyIDogcmV0dXJuIDB4ZmZmZmZmZmYgOwog
ICAgY2FzZSAzIDogcmV0dXJuIDUwMCA7CiAgICB9CiAgICAgCgoKCiAgICByZXR1cm4gNTU1IDsK
fQoKCiAKIAogCiAKIApleHRlcm4gaW5saW5lIGxvZmZfdCBsZV9rZXlfa19vZmZzZXQgKGludCB2
ZXJzaW9uLCBzdHJ1Y3Qga2V5ICoga2V5KQp7CiAgICByZXR1cm4gKHZlcnNpb24gPT0gMCApID8g
a2V5LT51Lmtfb2Zmc2V0X3YxLmtfb2Zmc2V0IDoKCShfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191
NjQpKCAoIGtleS0+dS5rX29mZnNldF92Mi5rX29mZnNldCApICkpID8gKChfX3U2NCkoIChfX3U2
NCkoKChfX3U2NCkoICggKCBrZXktPnUua19vZmZzZXRfdjIua19vZmZzZXQgKSApICkgJiAoX191
NjQpMHgwMDAwMDAwMDAwMDAwMGZmVUxMKSA8PCA1NikgfCAoX191NjQpKCgoX191NjQpKCAoICgg
a2V5LT51Lmtfb2Zmc2V0X3YyLmtfb2Zmc2V0ICkgKSApICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAw
ZmYwMFVMTCkgPDwgNDApIHwgKF9fdTY0KSgoKF9fdTY0KSggKCAoIGtleS0+dS5rX29mZnNldF92
Mi5rX29mZnNldCApICkgKSAmIChfX3U2NCkweDAwMDAwMDAwMDBmZjAwMDBVTEwpIDw8IDI0KSB8
IChfX3U2NCkoKChfX3U2NCkoICggKCBrZXktPnUua19vZmZzZXRfdjIua19vZmZzZXQgKSApICkg
JiAoX191NjQpMHgwMDAwMDAwMGZmMDAwMDAwVUxMKSA8PCAgOCkgfCAoX191NjQpKCgoX191NjQp
KCAoICgga2V5LT51Lmtfb2Zmc2V0X3YyLmtfb2Zmc2V0ICkgKSApICYgKF9fdTY0KTB4MDAwMDAw
ZmYwMDAwMDAwMFVMTCkgPj4gIDgpIHwgKF9fdTY0KSgoKF9fdTY0KSggKCAoIGtleS0+dS5rX29m
ZnNldF92Mi5rX29mZnNldCApICkgKSAmIChfX3U2NCkweDAwMDBmZjAwMDAwMDAwMDBVTEwpID4+
IDI0KSB8IChfX3U2NCkoKChfX3U2NCkoICggKCBrZXktPnUua19vZmZzZXRfdjIua19vZmZzZXQg
KSApICkgJiAoX191NjQpMHgwMGZmMDAwMDAwMDAwMDAwVUxMKSA+PiA0MCkgfCAoX191NjQpKCgo
X191NjQpKCAoICgga2V5LT51Lmtfb2Zmc2V0X3YyLmtfb2Zmc2V0ICkgKSApICYgKF9fdTY0KTB4
ZmYwMDAwMDAwMDAwMDAwMFVMTCkgPj4gNTYpICkpICA6IF9fZnN3YWI2NCgoICgga2V5LT51Lmtf
b2Zmc2V0X3YyLmtfb2Zmc2V0ICkgKSkpICA7Cn0KZXh0ZXJuIGlubGluZSBsb2ZmX3QgbGVfaWhf
a19vZmZzZXQgKHN0cnVjdCBpdGVtX2hlYWQgKiBpaCkKewogICAgcmV0dXJuIGxlX2tleV9rX29m
ZnNldCAoKF9fYnVpbHRpbl9jb25zdGFudF9wKChfX3UxNikoICggKCBpaCApLT5paF92ZXJzaW9u
ICkgKSkgPyAoKF9fdTE2KSggKCgoX191MTYpKCAoICggKCBpaCApLT5paF92ZXJzaW9uICkgKSAp
ICYgKF9fdTE2KTB4MDBmZlUpIDw8IDgpIHwgKCgoX191MTYpKCAoICggKCBpaCApLT5paF92ZXJz
aW9uICkgKSApICYgKF9fdTE2KTB4ZmYwMFUpID4+IDgpICkpICA6IF9fZnN3YWIxNigoICggKCBp
aCApLT5paF92ZXJzaW9uICkgKSkpICAgLCAmKGloLT5paF9rZXkpKTsKfQoKCmV4dGVybiBpbmxp
bmUgbG9mZl90IGxlX2tleV9rX3R5cGUgKGludCB2ZXJzaW9uLCBzdHJ1Y3Qga2V5ICoga2V5KQp7
CiAgICByZXR1cm4gKHZlcnNpb24gPT0gMCApID8gdW5pcXVlbmVzczJ0eXBlIChrZXktPnUua19v
ZmZzZXRfdjEua191bmlxdWVuZXNzKSA6CgkoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTE2KSgg
KCBrZXktPnUua19vZmZzZXRfdjIua190eXBlICkgKSkgPyAoKF9fdTE2KSggKCgoX191MTYpKCAo
ICgga2V5LT51Lmtfb2Zmc2V0X3YyLmtfdHlwZSApICkgKSAmIChfX3UxNikweDAwZmZVKSA8PCA4
KSB8ICgoKF9fdTE2KSggKCAoIGtleS0+dS5rX29mZnNldF92Mi5rX3R5cGUgKSApICkgJiAoX191
MTYpMHhmZjAwVSkgPj4gOCkgKSkgIDogX19mc3dhYjE2KCggKCBrZXktPnUua19vZmZzZXRfdjIu
a190eXBlICkgKSkpICA7Cn0KZXh0ZXJuIGlubGluZSBsb2ZmX3QgbGVfaWhfa190eXBlIChzdHJ1
Y3QgaXRlbV9oZWFkICogaWgpCnsKICAgIHJldHVybiBsZV9rZXlfa190eXBlICgoX19idWlsdGlu
X2NvbnN0YW50X3AoKF9fdTE2KSggKCAoIGloICktPmloX3ZlcnNpb24gKSApKSA/ICgoX191MTYp
KCAoKChfX3UxNikoICggKCAoIGloICktPmloX3ZlcnNpb24gKSApICkgJiAoX191MTYpMHgwMGZm
VSkgPDwgOCkgfCAoKChfX3UxNikoICggKCAoIGloICktPmloX3ZlcnNpb24gKSApICkgJiAoX191
MTYpMHhmZjAwVSkgPj4gOCkgKSkgIDogX19mc3dhYjE2KCggKCAoIGloICktPmloX3ZlcnNpb24g
KSApKSkgICAsICYoaWgtPmloX2tleSkpOwp9CgoKZXh0ZXJuIGlubGluZSB2b2lkIHNldF9sZV9r
ZXlfa19vZmZzZXQgKGludCB2ZXJzaW9uLCBzdHJ1Y3Qga2V5ICoga2V5LCBsb2ZmX3Qgb2Zmc2V0
KQp7CiAgICAodmVyc2lvbiA9PSAwICkgPyAoa2V5LT51Lmtfb2Zmc2V0X3YxLmtfb2Zmc2V0ID0g
b2Zmc2V0KSA6Cgkoa2V5LT51Lmtfb2Zmc2V0X3YyLmtfb2Zmc2V0ID0gKF9fYnVpbHRpbl9jb25z
dGFudF9wKChfX3U2NCkoICggb2Zmc2V0ICkgKSkgPyAoKF9fdTY0KSggKF9fdTY0KSgoKF9fdTY0
KSggKCAoIG9mZnNldCApICkgKSAmIChfX3U2NCkweDAwMDAwMDAwMDAwMDAwZmZVTEwpIDw8IDU2
KSB8IChfX3U2NCkoKChfX3U2NCkoICggKCBvZmZzZXQgKSApICkgJiAoX191NjQpMHgwMDAwMDAw
MDAwMDBmZjAwVUxMKSA8PCA0MCkgfCAoX191NjQpKCgoX191NjQpKCAoICggb2Zmc2V0ICkgKSAp
ICYgKF9fdTY0KTB4MDAwMDAwMDAwMGZmMDAwMFVMTCkgPDwgMjQpIHwgKF9fdTY0KSgoKF9fdTY0
KSggKCAoIG9mZnNldCApICkgKSAmIChfX3U2NCkweDAwMDAwMDAwZmYwMDAwMDBVTEwpIDw8ICA4
KSB8IChfX3U2NCkoKChfX3U2NCkoICggKCBvZmZzZXQgKSApICkgJiAoX191NjQpMHgwMDAwMDBm
ZjAwMDAwMDAwVUxMKSA+PiAgOCkgfCAoX191NjQpKCgoX191NjQpKCAoICggb2Zmc2V0ICkgKSAp
ICYgKF9fdTY0KTB4MDAwMGZmMDAwMDAwMDAwMFVMTCkgPj4gMjQpIHwgKF9fdTY0KSgoKF9fdTY0
KSggKCAoIG9mZnNldCApICkgKSAmIChfX3U2NCkweDAwZmYwMDAwMDAwMDAwMDBVTEwpID4+IDQw
KSB8IChfX3U2NCkoKChfX3U2NCkoICggKCBvZmZzZXQgKSApICkgJiAoX191NjQpMHhmZjAwMDAw
MDAwMDAwMDAwVUxMKSA+PiA1NikgKSkgIDogX19mc3dhYjY0KCggKCBvZmZzZXQgKSApKSkgICk7
Cn0KZXh0ZXJuIGlubGluZSB2b2lkIHNldF9sZV9paF9rX29mZnNldCAoc3RydWN0IGl0ZW1faGVh
ZCAqIGloLCBsb2ZmX3Qgb2Zmc2V0KQp7CiAgICBzZXRfbGVfa2V5X2tfb2Zmc2V0ICgoX19idWls
dGluX2NvbnN0YW50X3AoKF9fdTE2KSggKCAoIGloICktPmloX3ZlcnNpb24gKSApKSA/ICgoX191
MTYpKCAoKChfX3UxNikoICggKCAoIGloICktPmloX3ZlcnNpb24gKSApICkgJiAoX191MTYpMHgw
MGZmVSkgPDwgOCkgfCAoKChfX3UxNikoICggKCAoIGloICktPmloX3ZlcnNpb24gKSApICkgJiAo
X191MTYpMHhmZjAwVSkgPj4gOCkgKSkgIDogX19mc3dhYjE2KCggKCAoIGloICktPmloX3ZlcnNp
b24gKSApKSkgICAsICYoaWgtPmloX2tleSksIG9mZnNldCk7Cn0KCgoKZXh0ZXJuIGlubGluZSB2
b2lkIHNldF9sZV9rZXlfa190eXBlIChpbnQgdmVyc2lvbiwgc3RydWN0IGtleSAqIGtleSwgaW50
IHR5cGUpCnsKICAgICh2ZXJzaW9uID09IDAgKSA/IChrZXktPnUua19vZmZzZXRfdjEua191bmlx
dWVuZXNzID0gdHlwZTJ1bmlxdWVuZXNzICh0eXBlKSkgOgoJKGtleS0+dS5rX29mZnNldF92Mi5r
X3R5cGUgPSAoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTE2KSggKCB0eXBlICkgKSkgPyAoKF9f
dTE2KSggKCgoX191MTYpKCAoICggdHlwZSApICkgKSAmIChfX3UxNikweDAwZmZVKSA8PCA4KSB8
ICgoKF9fdTE2KSggKCAoIHR5cGUgKSApICkgJiAoX191MTYpMHhmZjAwVSkgPj4gOCkgKSkgIDog
X19mc3dhYjE2KCggKCB0eXBlICkgKSkpICApOwp9CmV4dGVybiBpbmxpbmUgdm9pZCBzZXRfbGVf
aWhfa190eXBlIChzdHJ1Y3QgaXRlbV9oZWFkICogaWgsIGludCB0eXBlKQp7CiAgICBzZXRfbGVf
a2V5X2tfdHlwZSAoKF9fYnVpbHRpbl9jb25zdGFudF9wKChfX3UxNikoICggKCBpaCApLT5paF92
ZXJzaW9uICkgKSkgPyAoKF9fdTE2KSggKCgoX191MTYpKCAoICggKCBpaCApLT5paF92ZXJzaW9u
ICkgKSApICYgKF9fdTE2KTB4MDBmZlUpIDw8IDgpIHwgKCgoX191MTYpKCAoICggKCBpaCApLT5p
aF92ZXJzaW9uICkgKSApICYgKF9fdTE2KTB4ZmYwMFUpID4+IDgpICkpICA6IF9fZnN3YWIxNigo
ICggKCBpaCApLT5paF92ZXJzaW9uICkgKSkpICAgLCAmKGloLT5paF9rZXkpLCB0eXBlKTsKfQoK
CgoKCgoKIAogCiAKCgoKCgoKCiAKIAogCmV4dGVybiBpbmxpbmUgbG9mZl90IGNwdV9rZXlfa19v
ZmZzZXQgKHN0cnVjdCBjcHVfa2V5ICoga2V5KQp7CiAgICByZXR1cm4gKGtleS0+dmVyc2lvbiA9
PSAwICkgPyBrZXktPm9uX2Rpc2tfa2V5LnUua19vZmZzZXRfdjEua19vZmZzZXQgOgoJa2V5LT5v
bl9kaXNrX2tleS51Lmtfb2Zmc2V0X3YyLmtfb2Zmc2V0Owp9CgpleHRlcm4gaW5saW5lIGxvZmZf
dCBjcHVfa2V5X2tfdHlwZSAoc3RydWN0IGNwdV9rZXkgKiBrZXkpCnsKICAgIHJldHVybiAoa2V5
LT52ZXJzaW9uID09IDAgKSA/IHVuaXF1ZW5lc3MydHlwZSAoa2V5LT5vbl9kaXNrX2tleS51Lmtf
b2Zmc2V0X3YxLmtfdW5pcXVlbmVzcykgOgoJa2V5LT5vbl9kaXNrX2tleS51Lmtfb2Zmc2V0X3Yy
LmtfdHlwZTsKfQoKZXh0ZXJuIGlubGluZSB2b2lkIHNldF9jcHVfa2V5X2tfb2Zmc2V0IChzdHJ1
Y3QgY3B1X2tleSAqIGtleSwgbG9mZl90IG9mZnNldCkKewogICAgKGtleS0+dmVyc2lvbiA9PSAw
ICkgPyAoa2V5LT5vbl9kaXNrX2tleS51Lmtfb2Zmc2V0X3YxLmtfb2Zmc2V0ID0gb2Zmc2V0KSA6
Cgkoa2V5LT5vbl9kaXNrX2tleS51Lmtfb2Zmc2V0X3YyLmtfb2Zmc2V0ID0gb2Zmc2V0KTsKfQoK
CmV4dGVybiBpbmxpbmUgdm9pZCBzZXRfY3B1X2tleV9rX3R5cGUgKHN0cnVjdCBjcHVfa2V5ICog
a2V5LCBpbnQgdHlwZSkKewogICAgKGtleS0+dmVyc2lvbiA9PSAwICkgPyAoa2V5LT5vbl9kaXNr
X2tleS51Lmtfb2Zmc2V0X3YxLmtfdW5pcXVlbmVzcyA9IHR5cGUydW5pcXVlbmVzcyAodHlwZSkp
IDoKCShrZXktPm9uX2Rpc2tfa2V5LnUua19vZmZzZXRfdjIua190eXBlID0gdHlwZSk7Cn0KCmV4
dGVybiBpbmxpbmUgdm9pZCBjcHVfa2V5X2tfb2Zmc2V0X2RlYyAoc3RydWN0IGNwdV9rZXkgKiBr
ZXkpCnsKICAgIGlmIChrZXktPnZlcnNpb24gPT0gMCApCglrZXktPm9uX2Rpc2tfa2V5LnUua19v
ZmZzZXRfdjEua19vZmZzZXQgLS07CiAgICBlbHNlCglrZXktPm9uX2Rpc2tfa2V5LnUua19vZmZz
ZXRfdjIua19vZmZzZXQgLS07Cn0KCgoKCgoKCgogCgoKCgoKCgoKCgoKCgogIAoKCgoKIAoKCmV4
dGVybiBzdHJ1Y3Qga2V5IHJvb3Rfa2V5OwoKCgoKIAoKCgoKCgoKCiAKCnN0cnVjdCBibG9ja19o
ZWFkIHsgICAgICAgCiAgX191MTYgYmxrX2xldmVsOyAgICAgICAgIAogIF9fdTE2IGJsa19ucl9p
dGVtOyAgICAgICAKICBfX3UxNiBibGtfZnJlZV9zcGFjZTsgICAgCiAgX191MTYgYmxrX3Jlc2Vy
dmVkOwoJCQkJIAogIHN0cnVjdCBrZXkgIGJsa19yaWdodF9kZWxpbV9rZXk7ICAKfTsKCgoKIAoK
CgoKCgoKCgoKIAoKIAoKCgoKCgoKCiAKCgogCgoKIAoKCgoKCgogCiAKIAoKCiAKIAogCiAKc3Ry
dWN0IHN0YXRfZGF0YV92MQp7CiAgICBfX3UxNiBzZF9tb2RlOwkgCiAgICBfX3UxNiBzZF9ubGlu
azsJIAogICAgX191MTYgc2RfdWlkOwkJIAogICAgX191MTYgc2RfZ2lkOwkJIAogICAgX191MzIg
c2Rfc2l6ZTsJIAogICAgX191MzIgc2RfYXRpbWU7CSAKICAgIF9fdTMyIHNkX210aW1lOwkgCiAg
ICBfX3UzMiBzZF9jdGltZTsJIAogICAgdW5pb24gewoJX191MzIgc2RfcmRldjsKCV9fdTMyIHNk
X2Jsb2NrczsJIAogICAgfSBfX2F0dHJpYnV0ZV9fICgoX19wYWNrZWRfXykpIHU7CiAgICBfX3Uz
MiBzZF9maXJzdF9kaXJlY3RfYnl0ZTsgIAoKCgoKCgoKCn0gX19hdHRyaWJ1dGVfXyAoKF9fcGFj
a2VkX18pKTsKCgoKCiAKCnN0cnVjdCBzdGF0X2RhdGEgewogICAgX191MTYgc2RfbW9kZTsJIAog
ICAgX191MTYgc2RfcmVzZXJ2ZWQ7CiAgICBfX3UzMiBzZF9ubGluazsJIAogICAgX191NjQgc2Rf
c2l6ZTsJIAogICAgX191MzIgc2RfdWlkOwkJIAogICAgX191MzIgc2RfZ2lkOwkJIAogICAgX191
MzIgc2RfYXRpbWU7CSAKICAgIF9fdTMyIHNkX210aW1lOwkgCiAgICBfX3UzMiBzZF9jdGltZTsJ
IAogICAgX191MzIgc2RfYmxvY2tzOwogICAgdW5pb24gewoJX191MzIgc2RfcmRldjsKICAgICAg
IAogICAgICAgCgoKCgoKCgogIH0gX19hdHRyaWJ1dGVfXyAoKF9fcGFja2VkX18pKSB1Owp9IF9f
YXR0cmlidXRlX18gKChfX3BhY2tlZF9fKSk7CiAKIAogCgoKCgoKIAogCiAKIAoKCgoKCgoKCgoK
CgoKCgoKCgogCgoKIAoKCgoKCiAKCgoKCnN0cnVjdCByZWlzZXJmc19kZV9oZWFkCnsKICBfX3Uz
MiBkZWhfb2Zmc2V0OwkJIAogIF9fdTMyIGRlaF9kaXJfaWQ7CQkgCgogIF9fdTMyIGRlaF9vYmpl
Y3RpZDsJCSAKICBfX3UxNiBkZWhfbG9jYXRpb247CQkgCiAgX191MTYgZGVoX3N0YXRlOwkJIAoK
fSBfX2F0dHJpYnV0ZV9fICgoX19wYWNrZWRfXykpOwoKCiAKCgoKIAoKCgoKCiAKCgoKCgojIDgw
MyAiL3RtcC9idWlsZC1yZWlzZXJmcy0zLjYuMjUtczM5MC0xL3JlaXNlcmZzX3V0aWxzLTMuNi4y
NS1mc2NrLTMueC4wYi91dGlscy9pbmNsdWRlL3JlaXNlcmZzX2ZzLmgiCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgogCgpleHRlcm4gaW5saW5lIHZvaWQgbWFrZV9lbXB0eV9kaXJfaXRlbV92MSAoY2hh
ciAqIGJvZHksIF9fdTMyIGRpcmlkLCBfX3UzMiBvYmppZCwKCQkJCQkgICBfX3UzMiBwYXJfZGly
aWQsIF9fdTMyIHBhcl9vYmppZCkKewogICAgc3RydWN0IHJlaXNlcmZzX2RlX2hlYWQgKiBkZWg7
CgogICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wICggIChzaXplb2Yoc3Ry
dWN0IHJlaXNlcmZzX2RlX2hlYWQpICAqIDIgKyAzKSAgKSAmJiAoICAoc2l6ZW9mKHN0cnVjdCBy
ZWlzZXJmc19kZV9oZWFkKSAgKiAyICsgMykgICkgPD0gMTYJPyAoKCAgKHNpemVvZihzdHJ1Y3Qg
cmVpc2VyZnNfZGVfaGVhZCkgICogMiArIDMpICApID09IDEJPyAoeyB2b2lkICpfX3MgPSAoICBi
b2R5ICApOwkqKChfX3VpbnQ4X3QgKikgX19zKSA9IChfX3VpbnQ4X3QpICAgICAwICA7IF9fczsg
fSkgCTogKHsgdm9pZCAqX19zID0gKCAgYm9keSAgKTsJdW5pb24gewl1bnNpZ25lZCBpbnQgX191
aTsJdW5zaWduZWQgc2hvcnQgaW50IF9fdXNpOwl1bnNpZ25lZCBjaGFyIF9fdWM7CX0gKl9fdSA9
IF9fczsJX191aW50OF90IF9fYyA9IChfX3VpbnQ4X3QpICggICAgMCAgKTsJc3dpdGNoICgodW5z
aWduZWQgaW50KSAoICAgIChzaXplb2Yoc3RydWN0IHJlaXNlcmZzX2RlX2hlYWQpICAqIDIgKyAz
KSAgICkpCXsJY2FzZSAxNToJX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsJX191ID0gX19l
eHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CWNhc2UgMTE6CV9fdS0+X191aSA9IF9fYyAq
IDB4MDEwMTAxMDE7CV9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwljYXNl
IDc6CV9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7CV9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2
b2lkICopIF9fdSArIDQpOwljYXNlIDM6CV9fdS0+X191c2kgPSAodW5zaWduZWQgc2hvcnQgaW50
KSBfX2MgKiAweDAxMDE7CV9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOwlf
X3UtPl9fdWMgPSAodW5zaWduZWQgY2hhcikgX19jOwlicmVhazsJY2FzZSAxNDoJX191LT5fX3Vp
ID0gX19jICogMHgwMTAxMDEwMTsJX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsg
NCk7CWNhc2UgMTA6CV9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7CV9fdSA9IF9fZXh0ZW5z
aW9uX18gKCh2b2lkICopIF9fdSArIDQpOwljYXNlIDY6CV9fdS0+X191aSA9IF9fYyAqIDB4MDEw
MTAxMDE7CV9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwljYXNlIDI6CV9f
dS0+X191c2kgPSAodW5zaWduZWQgc2hvcnQgaW50KSBfX2MgKiAweDAxMDE7CWJyZWFrOwljYXNl
IDEzOglfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOwlfX3UgPSBfX2V4dGVuc2lvbl9fICgo
dm9pZCAqKSBfX3UgKyA0KTsJY2FzZSA5OglfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOwlf
X3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsJY2FzZSA1OglfX3UtPl9fdWkg
PSBfX2MgKiAweDAxMDEwMTAxOwlfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0
KTsJY2FzZSAxOglfX3UtPl9fdWMgPSAodW5zaWduZWQgY2hhcikgX19jOwlicmVhazsJY2FzZSAx
NjoJX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsJX191ID0gX19leHRlbnNpb25fXyAoKHZv
aWQgKikgX191ICsgNCk7CWNhc2UgMTI6CV9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7CV9f
dSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwljYXNlIDg6CV9fdS0+X191aSA9
IF9fYyAqIDB4MDEwMTAxMDE7CV9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQp
OwljYXNlIDQ6CV9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7CWNhc2UgMDoJYnJlYWs7CX0J
X19zOyB9KSApCTogKF9fYnVpbHRpbl9jb25zdGFudF9wICggIDAgKSAmJiAoICAwICkgPT0gJ1ww
Jwk/ICh7IHZvaWQgKl9fcyA9ICggYm9keSApOyBfX2J1aWx0aW5fbWVtc2V0ICggX19zICwgJ1ww
JywgICAgIChzaXplb2Yoc3RydWN0IHJlaXNlcmZzX2RlX2hlYWQpICAqIDIgKyAzKSAgICkgOyBf
X3M7IH0pCTogbWVtc2V0ICggYm9keSAsICAgMCAsICAgKHNpemVvZihzdHJ1Y3QgcmVpc2VyZnNf
ZGVfaGVhZCkgICogMiArIDMpICApKSkpIDsKICAgIGRlaCA9IChzdHJ1Y3QgcmVpc2VyZnNfZGVf
aGVhZCAqKWJvZHk7CiAgICAKICAgICAKICAgIGRlaFswXS5kZWhfb2Zmc2V0ID0gKF9fYnVpbHRp
bl9jb25zdGFudF9wKChfX3UzMikoICggMSAgKSApKSA/ICgoX191MzIpKCAoKChfX3UzMikoICgg
KCAxICApICkgKSAmIChfX3UzMikweDAwMDAwMGZmVUwpIDw8IDI0KSB8ICgoKF9fdTMyKSggKCAo
IDEgICkgKSApICYgKF9fdTMyKTB4MDAwMGZmMDBVTCkgPDwgIDgpIHwgKCgoX191MzIpKCAoICgg
MSAgKSApICkgJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiAgOCkgfCAoKChfX3UzMikoICggKCAx
ICApICkgKSAmIChfX3UzMikweGZmMDAwMDAwVUwpID4+IDI0KSApKSAgOiBfX2Zzd2FiMzIoKCAo
IDEgICkgKSkpICA7CiAgICBkZWhbMF0uZGVoX2Rpcl9pZCA9IChfX2J1aWx0aW5fY29uc3RhbnRf
cCgoX191MzIpKCAoIGRpcmlkICkgKSkgPyAoKF9fdTMyKSggKCgoX191MzIpKCAoICggZGlyaWQg
KSApICkgJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAyNCkgfCAoKChfX3UzMikoICggKCBkaXJp
ZCApICkgKSAmIChfX3UzMikweDAwMDBmZjAwVUwpIDw8ICA4KSB8ICgoKF9fdTMyKSggKCAoIGRp
cmlkICkgKSApICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gIDgpIHwgKCgoX191MzIpKCAoICgg
ZGlyaWQgKSApICkgJiAoX191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkgKSkgIDogX19mc3dhYjMy
KCggKCBkaXJpZCApICkpKSAgOwogICAgZGVoWzBdLmRlaF9vYmplY3RpZCA9IChfX2J1aWx0aW5f
Y29uc3RhbnRfcCgoX191MzIpKCAoIG9iamlkICkgKSkgPyAoKF9fdTMyKSggKCgoX191MzIpKCAo
ICggb2JqaWQgKSApICkgJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAyNCkgfCAoKChfX3UzMiko
ICggKCBvYmppZCApICkgKSAmIChfX3UzMikweDAwMDBmZjAwVUwpIDw8ICA4KSB8ICgoKF9fdTMy
KSggKCAoIG9iamlkICkgKSApICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gIDgpIHwgKCgoX191
MzIpKCAoICggb2JqaWQgKSApICkgJiAoX191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkgKSkgIDog
X19mc3dhYjMyKCggKCBvYmppZCApICkpKSAgOwogICAgZGVoWzBdLmRlaF9sb2NhdGlvbiA9IChf
X2J1aWx0aW5fY29uc3RhbnRfcCgoX191MTYpKCAoIChzaXplb2Yoc3RydWN0IHJlaXNlcmZzX2Rl
X2hlYWQpICAqIDIgKyAzKSAgLSBzdHJsZW4gKCIuIikgKSApKSA/ICgoX191MTYpKCAoKChfX3Ux
NikoICggKCAoc2l6ZW9mKHN0cnVjdCByZWlzZXJmc19kZV9oZWFkKSAgKiAyICsgMykgIC0gc3Ry
bGVuICgiLiIpICkgKSApICYgKF9fdTE2KTB4MDBmZlUpIDw8IDgpIHwgKCgoX191MTYpKCAoICgg
KHNpemVvZihzdHJ1Y3QgcmVpc2VyZnNfZGVfaGVhZCkgICogMiArIDMpICAtIHN0cmxlbiAoIi4i
KSApICkgKSAmIChfX3UxNikweGZmMDBVKSA+PiA4KSApKSAgOiBfX2Zzd2FiMTYoKCAoIChzaXpl
b2Yoc3RydWN0IHJlaXNlcmZzX2RlX2hlYWQpICAqIDIgKyAzKSAgLSBzdHJsZW4gKCIuIikgKSAp
KSkgIDsKICAgIGRlaFswXS5kZWhfc3RhdGUgPSAwOwogICAgKF9fYnVpbHRpbl9jb25zdGFudF9w
KCggIDIgICApKSA/IF9fY29uc3RhbnRfc2V0X2JpdCgoICAyICAgKSwoICAgICYoKCAmKGRlaFsw
XSkgKS0+ZGVoX3N0YXRlKSAgKSkgOiBfX3NldF9iaXQoKCAgMiAgICksKCAgICAmKCggJihkZWhb
MF0pICktPmRlaF9zdGF0ZSkgICkpICkgICA7CiAgCiAgICAgCiAgICBkZWhbMV0uZGVoX29mZnNl
dCA9IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191MzIpKCAoIDIgICkgKSkgPyAoKF9fdTMyKSgg
KCgoX191MzIpKCAoICggMiAgKSApICkgJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAyNCkgfCAo
KChfX3UzMikoICggKCAyICApICkgKSAmIChfX3UzMikweDAwMDBmZjAwVUwpIDw8ICA4KSB8ICgo
KF9fdTMyKSggKCAoIDIgICkgKSApICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gIDgpIHwgKCgo
X191MzIpKCAoICggMiAgKSApICkgJiAoX191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkgKSkgIDog
X19mc3dhYjMyKCggKCAyICApICkpKSAgOwogICAgIAogICAgZGVoWzFdLmRlaF9kaXJfaWQgPSAo
X19idWlsdGluX2NvbnN0YW50X3AoKF9fdTMyKSggKCBwYXJfZGlyaWQgKSApKSA/ICgoX191MzIp
KCAoKChfX3UzMikoICggKCBwYXJfZGlyaWQgKSApICkgJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8
PCAyNCkgfCAoKChfX3UzMikoICggKCBwYXJfZGlyaWQgKSApICkgJiAoX191MzIpMHgwMDAwZmYw
MFVMKSA8PCAgOCkgfCAoKChfX3UzMikoICggKCBwYXJfZGlyaWQgKSApICkgJiAoX191MzIpMHgw
MGZmMDAwMFVMKSA+PiAgOCkgfCAoKChfX3UzMikoICggKCBwYXJfZGlyaWQgKSApICkgJiAoX191
MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkgKSkgIDogX19mc3dhYjMyKCggKCBwYXJfZGlyaWQgKSAp
KSkgIDsKICAgIGRlaFsxXS5kZWhfb2JqZWN0aWQgPSAoX19idWlsdGluX2NvbnN0YW50X3AoKF9f
dTMyKSggKCBwYXJfb2JqaWQgKSApKSA/ICgoX191MzIpKCAoKChfX3UzMikoICggKCBwYXJfb2Jq
aWQgKSApICkgJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAyNCkgfCAoKChfX3UzMikoICggKCBw
YXJfb2JqaWQgKSApICkgJiAoX191MzIpMHgwMDAwZmYwMFVMKSA8PCAgOCkgfCAoKChfX3UzMiko
ICggKCBwYXJfb2JqaWQgKSApICkgJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiAgOCkgfCAoKChf
X3UzMikoICggKCBwYXJfb2JqaWQgKSApICkgJiAoX191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkg
KSkgIDogX19mc3dhYjMyKCggKCBwYXJfb2JqaWQgKSApKSkgIDsKICAgIGRlaFsxXS5kZWhfbG9j
YXRpb24gPSAoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTE2KSggKCAoX19idWlsdGluX2NvbnN0
YW50X3AoKF9fdTE2KSggKCBkZWhbMF0uZGVoX2xvY2F0aW9uICkgKSkgPyAoKF9fdTE2KSggKCgo
X191MTYpKCAoICggZGVoWzBdLmRlaF9sb2NhdGlvbiApICkgKSAmIChfX3UxNikweDAwZmZVKSA8
PCA4KSB8ICgoKF9fdTE2KSggKCAoIGRlaFswXS5kZWhfbG9jYXRpb24gKSApICkgJiAoX191MTYp
MHhmZjAwVSkgPj4gOCkgKSkgIDogX19mc3dhYjE2KCggKCBkZWhbMF0uZGVoX2xvY2F0aW9uICkg
KSkpICAgLSBzdHJsZW4gKCIuLiIpICkgKSkgPyAoKF9fdTE2KSggKCgoX191MTYpKCAoICggKF9f
YnVpbHRpbl9jb25zdGFudF9wKChfX3UxNikoICggZGVoWzBdLmRlaF9sb2NhdGlvbiApICkpID8g
KChfX3UxNikoICgoKF9fdTE2KSggKCAoIGRlaFswXS5kZWhfbG9jYXRpb24gKSApICkgJiAoX191
MTYpMHgwMGZmVSkgPDwgOCkgfCAoKChfX3UxNikoICggKCBkZWhbMF0uZGVoX2xvY2F0aW9uICkg
KSApICYgKF9fdTE2KTB4ZmYwMFUpID4+IDgpICkpICA6IF9fZnN3YWIxNigoICggZGVoWzBdLmRl
aF9sb2NhdGlvbiApICkpKSAgIC0gc3RybGVuICgiLi4iKSApICkgKSAmIChfX3UxNikweDAwZmZV
KSA8PCA4KSB8ICgoKF9fdTE2KSggKCAoIChfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191MTYpKCAo
IGRlaFswXS5kZWhfbG9jYXRpb24gKSApKSA/ICgoX191MTYpKCAoKChfX3UxNikoICggKCBkZWhb
MF0uZGVoX2xvY2F0aW9uICkgKSApICYgKF9fdTE2KTB4MDBmZlUpIDw8IDgpIHwgKCgoX191MTYp
KCAoICggZGVoWzBdLmRlaF9sb2NhdGlvbiApICkgKSAmIChfX3UxNikweGZmMDBVKSA+PiA4KSAp
KSAgOiBfX2Zzd2FiMTYoKCAoIGRlaFswXS5kZWhfbG9jYXRpb24gKSApKSkgICAtIHN0cmxlbiAo
Ii4uIikgKSApICkgJiAoX191MTYpMHhmZjAwVSkgPj4gOCkgKSkgIDogX19mc3dhYjE2KCggKCAo
X19idWlsdGluX2NvbnN0YW50X3AoKF9fdTE2KSggKCBkZWhbMF0uZGVoX2xvY2F0aW9uICkgKSkg
PyAoKF9fdTE2KSggKCgoX191MTYpKCAoICggZGVoWzBdLmRlaF9sb2NhdGlvbiApICkgKSAmIChf
X3UxNikweDAwZmZVKSA8PCA4KSB8ICgoKF9fdTE2KSggKCAoIGRlaFswXS5kZWhfbG9jYXRpb24g
KSApICkgJiAoX191MTYpMHhmZjAwVSkgPj4gOCkgKSkgIDogX19mc3dhYjE2KCggKCBkZWhbMF0u
ZGVoX2xvY2F0aW9uICkgKSkpICAgLSBzdHJsZW4gKCIuLiIpICkgKSkpICA7CiAgICBkZWhbMV0u
ZGVoX3N0YXRlID0gMDsKICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgoICAyICAgKSkgPyBfX2Nv
bnN0YW50X3NldF9iaXQoKCAgMiAgICksKCAgICAmKCggJihkZWhbMV0pICktPmRlaF9zdGF0ZSkg
ICkpIDogX19zZXRfYml0KCggIDIgICApLCggICAgJigoICYoZGVoWzFdKSApLT5kZWhfc3RhdGUp
ICApKSApICAgOwoKICAgICAKICAgIG1lbWNweSAoYm9keSArIGRlaFswXS5kZWhfbG9jYXRpb24s
ICIuIiwgMSk7CiAgICBtZW1jcHkgKGJvZHkgKyBkZWhbMV0uZGVoX2xvY2F0aW9uLCAiLi4iLCAy
KTsKfQoKIApleHRlcm4gaW5saW5lIHZvaWQgbWFrZV9lbXB0eV9kaXJfaXRlbSAoY2hhciAqIGJv
ZHksIF9fdTMyIGRpcmlkLCBfX3UzMiBvYmppZCwKCQkJCQlfX3UzMiBwYXJfZGlyaWQsIF9fdTMy
IHBhcl9vYmppZCkKewogICAgc3RydWN0IHJlaXNlcmZzX2RlX2hlYWQgKiBkZWg7CgogICAgKF9f
ZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wICggIChzaXplb2Yoc3RydWN0IHJlaXNl
cmZzX2RlX2hlYWQpICAqIDIgKyAoKCggIHN0cmxlbiAoIi4iKSAgKSsoIDhMTCApLTF1KSAmIH4o
KCA4TEwgKS0xdSkpICAgKyAoKCggIHN0cmxlbiAoIi4uIikgICkrKCA4TEwgKS0xdSkgJiB+KCgg
OExMICktMXUpKSAgKSAgKSAmJiAoICAoc2l6ZW9mKHN0cnVjdCByZWlzZXJmc19kZV9oZWFkKSAg
KiAyICsgKCgoICBzdHJsZW4gKCIuIikgICkrKCA4TEwgKS0xdSkgJiB+KCggOExMICktMXUpKSAg
ICsgKCgoICBzdHJsZW4gKCIuLiIpICApKyggOExMICktMXUpICYgfigoIDhMTCApLTF1KSkgICkg
ICkgPD0gMTYJPyAoKCAgKHNpemVvZihzdHJ1Y3QgcmVpc2VyZnNfZGVfaGVhZCkgICogMiArICgo
KCAgc3RybGVuICgiLiIpICApKyggOExMICktMXUpICYgfigoIDhMTCApLTF1KSkgICArICgoKCAg
c3RybGVuICgiLi4iKSAgKSsoIDhMTCApLTF1KSAmIH4oKCA4TEwgKS0xdSkpICApICApID09IDEJ
PyAoeyB2b2lkICpfX3MgPSAoICBib2R5ICApOwkqKChfX3VpbnQ4X3QgKikgX19zKSA9IChfX3Vp
bnQ4X3QpICAgICAwICA7IF9fczsgfSkgCTogKHsgdm9pZCAqX19zID0gKCAgYm9keSAgKTsJdW5p
b24gewl1bnNpZ25lZCBpbnQgX191aTsJdW5zaWduZWQgc2hvcnQgaW50IF9fdXNpOwl1bnNpZ25l
ZCBjaGFyIF9fdWM7CX0gKl9fdSA9IF9fczsJX191aW50OF90IF9fYyA9IChfX3VpbnQ4X3QpICgg
ICAgMCAgKTsJc3dpdGNoICgodW5zaWduZWQgaW50KSAoICAgIChzaXplb2Yoc3RydWN0IHJlaXNl
cmZzX2RlX2hlYWQpICAqIDIgKyAoKCggIHN0cmxlbiAoIi4iKSAgKSsoIDhMTCApLTF1KSAmIH4o
KCA4TEwgKS0xdSkpICAgKyAoKCggIHN0cmxlbiAoIi4uIikgICkrKCA4TEwgKS0xdSkgJiB+KCgg
OExMICktMXUpKSAgKSAgICkpCXsJY2FzZSAxNToJX191LT5fX3VpID0gX19jICogMHgwMTAxMDEw
MTsJX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CWNhc2UgMTE6CV9fdS0+
X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7CV9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9f
dSArIDQpOwljYXNlIDc6CV9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7CV9fdSA9IF9fZXh0
ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwljYXNlIDM6CV9fdS0+X191c2kgPSAodW5zaWdu
ZWQgc2hvcnQgaW50KSBfX2MgKiAweDAxMDE7CV9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICop
IF9fdSArIDIpOwlfX3UtPl9fdWMgPSAodW5zaWduZWQgY2hhcikgX19jOwlicmVhazsJY2FzZSAx
NDoJX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsJX191ID0gX19leHRlbnNpb25fXyAoKHZv
aWQgKikgX191ICsgNCk7CWNhc2UgMTA6CV9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7CV9f
dSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwljYXNlIDY6CV9fdS0+X191aSA9
IF9fYyAqIDB4MDEwMTAxMDE7CV9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQp
OwljYXNlIDI6CV9fdS0+X191c2kgPSAodW5zaWduZWQgc2hvcnQgaW50KSBfX2MgKiAweDAxMDE7
CWJyZWFrOwljYXNlIDEzOglfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOwlfX3UgPSBfX2V4
dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsJY2FzZSA5OglfX3UtPl9fdWkgPSBfX2MgKiAw
eDAxMDEwMTAxOwlfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsJY2FzZSA1
OglfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOwlfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9p
ZCAqKSBfX3UgKyA0KTsJY2FzZSAxOglfX3UtPl9fdWMgPSAodW5zaWduZWQgY2hhcikgX19jOwli
cmVhazsJY2FzZSAxNjoJX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsJX191ID0gX19leHRl
bnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CWNhc2UgMTI6CV9fdS0+X191aSA9IF9fYyAqIDB4
MDEwMTAxMDE7CV9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwljYXNlIDg6
CV9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7CV9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lk
ICopIF9fdSArIDQpOwljYXNlIDQ6CV9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7CWNhc2Ug
MDoJYnJlYWs7CX0JX19zOyB9KSApCTogKF9fYnVpbHRpbl9jb25zdGFudF9wICggIDAgKSAmJiAo
ICAwICkgPT0gJ1wwJwk/ICh7IHZvaWQgKl9fcyA9ICggYm9keSApOyBfX2J1aWx0aW5fbWVtc2V0
ICggX19zICwgJ1wwJywgICAgIChzaXplb2Yoc3RydWN0IHJlaXNlcmZzX2RlX2hlYWQpICAqIDIg
KyAoKCggIHN0cmxlbiAoIi4iKSAgKSsoIDhMTCApLTF1KSAmIH4oKCA4TEwgKS0xdSkpICAgKyAo
KCggIHN0cmxlbiAoIi4uIikgICkrKCA4TEwgKS0xdSkgJiB+KCggOExMICktMXUpKSAgKSAgICkg
OyBfX3M7IH0pCTogbWVtc2V0ICggYm9keSAsICAgMCAsICAgKHNpemVvZihzdHJ1Y3QgcmVpc2Vy
ZnNfZGVfaGVhZCkgICogMiArICgoKCAgc3RybGVuICgiLiIpICApKyggOExMICktMXUpICYgfigo
IDhMTCApLTF1KSkgICArICgoKCAgc3RybGVuICgiLi4iKSAgKSsoIDhMTCApLTF1KSAmIH4oKCA4
TEwgKS0xdSkpICApICApKSkpIDsKICAgIGRlaCA9IChzdHJ1Y3QgcmVpc2VyZnNfZGVfaGVhZCAq
KWJvZHk7CiAgICAKICAgICAKICAgIGRlaFswXS5kZWhfb2Zmc2V0ID0gKF9fYnVpbHRpbl9jb25z
dGFudF9wKChfX3UzMikoICggMSAgKSApKSA/ICgoX191MzIpKCAoKChfX3UzMikoICggKCAxICAp
ICkgKSAmIChfX3UzMikweDAwMDAwMGZmVUwpIDw8IDI0KSB8ICgoKF9fdTMyKSggKCAoIDEgICkg
KSApICYgKF9fdTMyKTB4MDAwMGZmMDBVTCkgPDwgIDgpIHwgKCgoX191MzIpKCAoICggMSAgKSAp
ICkgJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiAgOCkgfCAoKChfX3UzMikoICggKCAxICApICkg
KSAmIChfX3UzMikweGZmMDAwMDAwVUwpID4+IDI0KSApKSAgOiBfX2Zzd2FiMzIoKCAoIDEgICkg
KSkpICA7CiAgICBkZWhbMF0uZGVoX2Rpcl9pZCA9IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191
MzIpKCAoIGRpcmlkICkgKSkgPyAoKF9fdTMyKSggKCgoX191MzIpKCAoICggZGlyaWQgKSApICkg
JiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAyNCkgfCAoKChfX3UzMikoICggKCBkaXJpZCApICkg
KSAmIChfX3UzMikweDAwMDBmZjAwVUwpIDw8ICA4KSB8ICgoKF9fdTMyKSggKCAoIGRpcmlkICkg
KSApICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gIDgpIHwgKCgoX191MzIpKCAoICggZGlyaWQg
KSApICkgJiAoX191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkgKSkgIDogX19mc3dhYjMyKCggKCBk
aXJpZCApICkpKSAgOwogICAgZGVoWzBdLmRlaF9vYmplY3RpZCA9IChfX2J1aWx0aW5fY29uc3Rh
bnRfcCgoX191MzIpKCAoIG9iamlkICkgKSkgPyAoKF9fdTMyKSggKCgoX191MzIpKCAoICggb2Jq
aWQgKSApICkgJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAyNCkgfCAoKChfX3UzMikoICggKCBv
YmppZCApICkgKSAmIChfX3UzMikweDAwMDBmZjAwVUwpIDw8ICA4KSB8ICgoKF9fdTMyKSggKCAo
IG9iamlkICkgKSApICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gIDgpIHwgKCgoX191MzIpKCAo
ICggb2JqaWQgKSApICkgJiAoX191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkgKSkgIDogX19mc3dh
YjMyKCggKCBvYmppZCApICkpKSAgOwogICAgZGVoWzBdLmRlaF9sb2NhdGlvbiA9IChfX2J1aWx0
aW5fY29uc3RhbnRfcCgoX191MTYpKCAoIChzaXplb2Yoc3RydWN0IHJlaXNlcmZzX2RlX2hlYWQp
ICAqIDIgKyAoKCggIHN0cmxlbiAoIi4iKSAgKSsoIDhMTCApLTF1KSAmIH4oKCA4TEwgKS0xdSkp
ICAgKyAoKCggIHN0cmxlbiAoIi4uIikgICkrKCA4TEwgKS0xdSkgJiB+KCggOExMICktMXUpKSAg
KSAgLSAoKCggIHN0cmxlbiAoIi4iKSAgKSsoIDhMTCApLTF1KSAmIH4oKCA4TEwgKS0xdSkpICAg
KSApKSA/ICgoX191MTYpKCAoKChfX3UxNikoICggKCAoc2l6ZW9mKHN0cnVjdCByZWlzZXJmc19k
ZV9oZWFkKSAgKiAyICsgKCgoICBzdHJsZW4gKCIuIikgICkrKCA4TEwgKS0xdSkgJiB+KCggOExM
ICktMXUpKSAgICsgKCgoICBzdHJsZW4gKCIuLiIpICApKyggOExMICktMXUpICYgfigoIDhMTCAp
LTF1KSkgICkgIC0gKCgoICBzdHJsZW4gKCIuIikgICkrKCA4TEwgKS0xdSkgJiB+KCggOExMICkt
MXUpKSAgICkgKSApICYgKF9fdTE2KTB4MDBmZlUpIDw8IDgpIHwgKCgoX191MTYpKCAoICggKHNp
emVvZihzdHJ1Y3QgcmVpc2VyZnNfZGVfaGVhZCkgICogMiArICgoKCAgc3RybGVuICgiLiIpICAp
KyggOExMICktMXUpICYgfigoIDhMTCApLTF1KSkgICArICgoKCAgc3RybGVuICgiLi4iKSAgKSso
IDhMTCApLTF1KSAmIH4oKCA4TEwgKS0xdSkpICApICAtICgoKCAgc3RybGVuICgiLiIpICApKygg
OExMICktMXUpICYgfigoIDhMTCApLTF1KSkgICApICkgKSAmIChfX3UxNikweGZmMDBVKSA+PiA4
KSApKSAgOiBfX2Zzd2FiMTYoKCAoIChzaXplb2Yoc3RydWN0IHJlaXNlcmZzX2RlX2hlYWQpICAq
IDIgKyAoKCggIHN0cmxlbiAoIi4iKSAgKSsoIDhMTCApLTF1KSAmIH4oKCA4TEwgKS0xdSkpICAg
KyAoKCggIHN0cmxlbiAoIi4uIikgICkrKCA4TEwgKS0xdSkgJiB+KCggOExMICktMXUpKSAgKSAg
LSAoKCggIHN0cmxlbiAoIi4iKSAgKSsoIDhMTCApLTF1KSAmIH4oKCA4TEwgKS0xdSkpICAgKSAp
KSkgIDsKICAgIGRlaFswXS5kZWhfc3RhdGUgPSAwOwogICAgKF9fYnVpbHRpbl9jb25zdGFudF9w
KCggIDIgICApKSA/IF9fY29uc3RhbnRfc2V0X2JpdCgoICAyICAgKSwoICAgICYoKCAmKGRlaFsw
XSkgKS0+ZGVoX3N0YXRlKSAgKSkgOiBfX3NldF9iaXQoKCAgMiAgICksKCAgICAmKCggJihkZWhb
MF0pICktPmRlaF9zdGF0ZSkgICkpICkgICA7CiAgCiAgICAgCiAgICBkZWhbMV0uZGVoX29mZnNl
dCA9IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191MzIpKCAoIDIgICkgKSkgPyAoKF9fdTMyKSgg
KCgoX191MzIpKCAoICggMiAgKSApICkgJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAyNCkgfCAo
KChfX3UzMikoICggKCAyICApICkgKSAmIChfX3UzMikweDAwMDBmZjAwVUwpIDw8ICA4KSB8ICgo
KF9fdTMyKSggKCAoIDIgICkgKSApICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gIDgpIHwgKCgo
X191MzIpKCAoICggMiAgKSApICkgJiAoX191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkgKSkgIDog
X19mc3dhYjMyKCggKCAyICApICkpKSAgOwogICAgIAogICAgZGVoWzFdLmRlaF9kaXJfaWQgPSAo
X19idWlsdGluX2NvbnN0YW50X3AoKF9fdTMyKSggKCBwYXJfZGlyaWQgKSApKSA/ICgoX191MzIp
KCAoKChfX3UzMikoICggKCBwYXJfZGlyaWQgKSApICkgJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8
PCAyNCkgfCAoKChfX3UzMikoICggKCBwYXJfZGlyaWQgKSApICkgJiAoX191MzIpMHgwMDAwZmYw
MFVMKSA8PCAgOCkgfCAoKChfX3UzMikoICggKCBwYXJfZGlyaWQgKSApICkgJiAoX191MzIpMHgw
MGZmMDAwMFVMKSA+PiAgOCkgfCAoKChfX3UzMikoICggKCBwYXJfZGlyaWQgKSApICkgJiAoX191
MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkgKSkgIDogX19mc3dhYjMyKCggKCBwYXJfZGlyaWQgKSAp
KSkgIDsKICAgIGRlaFsxXS5kZWhfb2JqZWN0aWQgPSAoX19idWlsdGluX2NvbnN0YW50X3AoKF9f
dTMyKSggKCBwYXJfb2JqaWQgKSApKSA/ICgoX191MzIpKCAoKChfX3UzMikoICggKCBwYXJfb2Jq
aWQgKSApICkgJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAyNCkgfCAoKChfX3UzMikoICggKCBw
YXJfb2JqaWQgKSApICkgJiAoX191MzIpMHgwMDAwZmYwMFVMKSA8PCAgOCkgfCAoKChfX3UzMiko
ICggKCBwYXJfb2JqaWQgKSApICkgJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiAgOCkgfCAoKChf
X3UzMikoICggKCBwYXJfb2JqaWQgKSApICkgJiAoX191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkg
KSkgIDogX19mc3dhYjMyKCggKCBwYXJfb2JqaWQgKSApKSkgIDsKICAgIGRlaFsxXS5kZWhfbG9j
YXRpb24gPSAoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTE2KSggKCAoX19idWlsdGluX2NvbnN0
YW50X3AoKF9fdTE2KSggKCBkZWhbMF0uZGVoX2xvY2F0aW9uICkgKSkgPyAoKF9fdTE2KSggKCgo
X191MTYpKCAoICggZGVoWzBdLmRlaF9sb2NhdGlvbiApICkgKSAmIChfX3UxNikweDAwZmZVKSA8
PCA4KSB8ICgoKF9fdTE2KSggKCAoIGRlaFswXS5kZWhfbG9jYXRpb24gKSApICkgJiAoX191MTYp
MHhmZjAwVSkgPj4gOCkgKSkgIDogX19mc3dhYjE2KCggKCBkZWhbMF0uZGVoX2xvY2F0aW9uICkg
KSkpICAgLSAoKCggIHN0cmxlbiAoIi4uIikgICkrKCA4TEwgKS0xdSkgJiB+KCggOExMICktMXUp
KSAgICkgKSkgPyAoKF9fdTE2KSggKCgoX191MTYpKCAoICggKF9fYnVpbHRpbl9jb25zdGFudF9w
KChfX3UxNikoICggZGVoWzBdLmRlaF9sb2NhdGlvbiApICkpID8gKChfX3UxNikoICgoKF9fdTE2
KSggKCAoIGRlaFswXS5kZWhfbG9jYXRpb24gKSApICkgJiAoX191MTYpMHgwMGZmVSkgPDwgOCkg
fCAoKChfX3UxNikoICggKCBkZWhbMF0uZGVoX2xvY2F0aW9uICkgKSApICYgKF9fdTE2KTB4ZmYw
MFUpID4+IDgpICkpICA6IF9fZnN3YWIxNigoICggZGVoWzBdLmRlaF9sb2NhdGlvbiApICkpKSAg
IC0gKCgoICBzdHJsZW4gKCIuLiIpICApKyggOExMICktMXUpICYgfigoIDhMTCApLTF1KSkgICAp
ICkgKSAmIChfX3UxNikweDAwZmZVKSA8PCA4KSB8ICgoKF9fdTE2KSggKCAoIChfX2J1aWx0aW5f
Y29uc3RhbnRfcCgoX191MTYpKCAoIGRlaFswXS5kZWhfbG9jYXRpb24gKSApKSA/ICgoX191MTYp
KCAoKChfX3UxNikoICggKCBkZWhbMF0uZGVoX2xvY2F0aW9uICkgKSApICYgKF9fdTE2KTB4MDBm
ZlUpIDw8IDgpIHwgKCgoX191MTYpKCAoICggZGVoWzBdLmRlaF9sb2NhdGlvbiApICkgKSAmIChf
X3UxNikweGZmMDBVKSA+PiA4KSApKSAgOiBfX2Zzd2FiMTYoKCAoIGRlaFswXS5kZWhfbG9jYXRp
b24gKSApKSkgICAtICgoKCAgc3RybGVuICgiLi4iKSAgKSsoIDhMTCApLTF1KSAmIH4oKCA4TEwg
KS0xdSkpICAgKSApICkgJiAoX191MTYpMHhmZjAwVSkgPj4gOCkgKSkgIDogX19mc3dhYjE2KCgg
KCAoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTE2KSggKCBkZWhbMF0uZGVoX2xvY2F0aW9uICkg
KSkgPyAoKF9fdTE2KSggKCgoX191MTYpKCAoICggZGVoWzBdLmRlaF9sb2NhdGlvbiApICkgKSAm
IChfX3UxNikweDAwZmZVKSA8PCA4KSB8ICgoKF9fdTE2KSggKCAoIGRlaFswXS5kZWhfbG9jYXRp
b24gKSApICkgJiAoX191MTYpMHhmZjAwVSkgPj4gOCkgKSkgIDogX19mc3dhYjE2KCggKCBkZWhb
MF0uZGVoX2xvY2F0aW9uICkgKSkpICAgLSAoKCggIHN0cmxlbiAoIi4uIikgICkrKCA4TEwgKS0x
dSkgJiB+KCggOExMICktMXUpKSAgICkgKSkpICA7CiAgICBkZWhbMV0uZGVoX3N0YXRlID0gMDsK
ICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgoICAyICAgKSkgPyBfX2NvbnN0YW50X3NldF9iaXQo
KCAgMiAgICksKCAgICAmKCggJihkZWhbMV0pICktPmRlaF9zdGF0ZSkgICkpIDogX19zZXRfYml0
KCggIDIgICApLCggICAgJigoICYoZGVoWzFdKSApLT5kZWhfc3RhdGUpICApKSApICAgOwoKICAg
ICAKICAgIG1lbWNweSAoYm9keSArIGRlaFswXS5kZWhfbG9jYXRpb24sICIuIiwgMSk7CiAgICBt
ZW1jcHkgKGJvZHkgKyBkZWhbMV0uZGVoX2xvY2F0aW9uLCAiLi4iLCAyKTsKfQoKCiAKICAKCgoK
IAoKCgoKCiAKCgoKZXh0ZXJuIGlubGluZSBpbnQgZW50cnlfbGVuZ3RoIChzdHJ1Y3QgYnVmZmVy
X2hlYWQgKiBiaCwgc3RydWN0IGl0ZW1faGVhZCAqIGloLAoJCQkJaW50IHBvc19pbl9pdGVtKQp7
CiAgICBzdHJ1Y3QgcmVpc2VyZnNfZGVfaGVhZCAqIGRlaDsKCiAgICBkZWggPSAoKHN0cnVjdCBy
ZWlzZXJmc19kZV9oZWFkICopKCggKCAgYmggICktPmJfZGF0YSArICggICBpaCAgKS0+aWhfaXRl
bV9sb2NhdGlvbiApICkpICArIHBvc19pbl9pdGVtOwogICAgaWYgKHBvc19pbl9pdGVtKQoJcmV0
dXJuICgoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTE2KSggKCAoZGVoIC0gMSktPmRlaF9sb2Nh
dGlvbiApICkpID8gKChfX3UxNikoICgoKF9fdTE2KSggKCAoIChkZWggLSAxKS0+ZGVoX2xvY2F0
aW9uICkgKSApICYgKF9fdTE2KTB4MDBmZlUpIDw8IDgpIHwgKCgoX191MTYpKCAoICggKGRlaCAt
IDEpLT5kZWhfbG9jYXRpb24gKSApICkgJiAoX191MTYpMHhmZjAwVSkgPj4gOCkgKSkgIDogX19m
c3dhYjE2KCggKCAoZGVoIC0gMSktPmRlaF9sb2NhdGlvbiApICkpKSAgIC0gKF9fYnVpbHRpbl9j
b25zdGFudF9wKChfX3UxNikoICggZGVoLT5kZWhfbG9jYXRpb24gKSApKSA/ICgoX191MTYpKCAo
KChfX3UxNikoICggKCBkZWgtPmRlaF9sb2NhdGlvbiApICkgKSAmIChfX3UxNikweDAwZmZVKSA8
PCA4KSB8ICgoKF9fdTE2KSggKCAoIGRlaC0+ZGVoX2xvY2F0aW9uICkgKSApICYgKF9fdTE2KTB4
ZmYwMFUpID4+IDgpICkpICA6IF9fZnN3YWIxNigoICggZGVoLT5kZWhfbG9jYXRpb24gKSApKSkg
ICk7CiAgICByZXR1cm4gKChfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191MTYpKCAoIGloLT5paF9p
dGVtX2xlbiApICkpID8gKChfX3UxNikoICgoKF9fdTE2KSggKCAoIGloLT5paF9pdGVtX2xlbiAp
ICkgKSAmIChfX3UxNikweDAwZmZVKSA8PCA4KSB8ICgoKF9fdTE2KSggKCAoIGloLT5paF9pdGVt
X2xlbiApICkgKSAmIChfX3UxNikweGZmMDBVKSA+PiA4KSApKSAgOiBfX2Zzd2FiMTYoKCAoIGlo
LT5paF9pdGVtX2xlbiApICkpKSAgIC0gKF9fYnVpbHRpbl9jb25zdGFudF9wKChfX3UxNikoICgg
ZGVoLT5kZWhfbG9jYXRpb24gKSApKSA/ICgoX191MTYpKCAoKChfX3UxNikoICggKCBkZWgtPmRl
aF9sb2NhdGlvbiApICkgKSAmIChfX3UxNikweDAwZmZVKSA8PCA4KSB8ICgoKF9fdTE2KSggKCAo
IGRlaC0+ZGVoX2xvY2F0aW9uICkgKSApICYgKF9fdTE2KTB4ZmYwMFUpID4+IDgpICkpICA6IF9f
ZnN3YWIxNigoICggZGVoLT5kZWhfbG9jYXRpb24gKSApKSkgICk7Cn0KCgoKIAoKCgogCgoKIAog
CiAKCiAKCgoKCgogCgogCgpzdHJ1Y3QgcmVpc2VyZnNfZGlyX2VudHJ5CnsKICBzdHJ1Y3QgYnVm
ZmVyX2hlYWQgKiBkZV9iaDsKICBpbnQgZGVfaXRlbV9udW07CiAgc3RydWN0IGl0ZW1faGVhZCAq
IGRlX2loOwogIGludCBkZV9lbnRyeV9udW07CiAgc3RydWN0IHJlaXNlcmZzX2RlX2hlYWQgKiBk
ZV9kZWg7CiAgaW50IGRlX2VudHJ5bGVuOwogIGludCBkZV9uYW1lbGVuOwogIGNoYXIgKiBkZV9u
YW1lOwogIGNoYXIgKiBkZV9nZW5fbnVtYmVyX2JpdF9zdHJpbmc7CgogIF9fdTMyIGRlX2Rpcl9p
ZDsKICBfX3UzMiBkZV9vYmplY3RpZDsKCiAgc3RydWN0IGNwdV9rZXkgZGVfZW50cnlfa2V5Owp9
OwogICAKIAoKIAoKCiAKCgoKCgogCgogCgoKCgoKCiAKCgoKCgoKCgogCiAKIAogCgpzdHJ1Y3Qg
ZGlza19jaGlsZCB7CiAgX191MzIgICAgICAgZGNfYmxvY2tfbnVtYmVyOyAgICAgICAgICAgICAg
IAogIF9fdTE2ICAgICAgIGRjX3NpemU7CQkgICAgICAgICAgICAgCiAgX191MTYgICAgICAgZGNf
cmVzZXJ2ZWQ7Cn07CgoKCiAKCgoKIAoKCgogICAKICAKCgogCgoKIAoKCgogCiAKIAoKCiAKCgoK
CgoKCnN0cnVjdCAgcGF0aF9lbGVtZW50ICB7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkICoJcGVfYnVm
ZmVyOyAgICAgCiAgaW50ICAgICAgICAgCQlwZV9wb3NpdGlvbjsgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCn07CgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoK
c3RydWN0ICBwYXRoIHsKICBpbnQgICAgICAgICAgICAgICAgICAgcGF0aF9sZW5ndGg7ICAgICAg
ICAgICAgICAgICAgICAgIAkgCiAgc3RydWN0ICBwYXRoX2VsZW1lbnQgIHBhdGhfZWxlbWVudHNb
NyBdOwkgCiAgaW50CQkJcG9zX2luX2l0ZW07Cn07CgoKCgoKCiAKCgogCgoKIAoKCgoKCQkJCSAK
CgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCiAKIAogCgogCgoKIAoKIAogCiAKCgoKCgoKCiAK
CiAKCmV4dGVybiBpbmxpbmUgbG9mZl90IG1heF9yZWlzZXJmc19vZmZzZXQgKHN0cnVjdCBpbm9k
ZSAqIGlub2RlKQp7CiAgICBpZiAoKCggaW5vZGUgKS0+dS5yZWlzZXJmc19pLmlfdmVyc2lvbikg
ID09IDAgKQoJcmV0dXJuIChsb2ZmX3QpKH4oX191MzIpMCkgOwoKICAgIHJldHVybiAobG9mZl90
KSgofihfX3U2NCkwKSA+PiA0KTsKfQoKCiAKCgoKCgoKCiAKCgoKIAoKCgoKCgoKCgogCiAKIAoK
IAogCiAKIAogCiAKCgoKCiAKCgoKCgoKCgoKCgoKc3RydWN0IHZpcnR1YWxfaXRlbQp7CiAgICBp
bnQgdmlfaW5kZXg7ICAKICAgIHVuc2lnbmVkIHNob3J0IHZpX3R5cGU7CSAKICAgIHVuc2lnbmVk
IHNob3J0IHZpX2l0ZW1fbGVuOyAgICAgICAgICAgIAogICAgc3RydWN0IGl0ZW1faGVhZCAqIHZp
X2loOwogICAgY29uc3QgY2hhciAqIHZpX2l0ZW07ICAgICAgCiAgICBjb25zdCB2b2lkICogdmlf
bmV3X2RhdGE7ICAKICAgIHZvaWQgKiB2aV91YXJlYTsgICAgIAp9OwoKCnN0cnVjdCB2aXJ0dWFs
X25vZGUKewogIGNoYXIgKiB2bl9mcmVlX3B0cjsJCSAKICB1bnNpZ25lZCBzaG9ydCB2bl9ucl9p
dGVtOwkgCiAgc2hvcnQgdm5fc2l6ZTsgICAgICAgIAkgCiAgc2hvcnQgdm5fbW9kZTsJCSAKICBz
aG9ydCB2bl9hZmZlY3RlZF9pdGVtX251bTsgCiAgc2hvcnQgdm5fcG9zX2luX2l0ZW07CiAgc3Ry
dWN0IGl0ZW1faGVhZCAqIHZuX2luc19paDsJIAogIGNvbnN0IHZvaWQgKiB2bl9kYXRhOwogIHN0
cnVjdCB2aXJ0dWFsX2l0ZW0gKiB2bl92aTsJIAp9OwoKCiAKIAogCgogCgoKCgoKCgoKCgoKCiAK
CgogCnN0cnVjdCB0cmVlX2JhbGFuY2UKewogIGludCB0Yl9tb2RlOwogIGludCBuZWVkX2JhbGFu
Y2VfZGlydHk7CiAgc3RydWN0IHN1cGVyX2Jsb2NrICogdGJfc2I7CiAgc3RydWN0IHJlaXNlcmZz
X3RyYW5zYWN0aW9uX2hhbmRsZSAqdHJhbnNhY3Rpb25faGFuZGxlIDsKICBzdHJ1Y3QgcGF0aCAq
IHRiX3BhdGg7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkICogTFs1IF07ICAgICAgICAgCiAgc3RydWN0
IGJ1ZmZlcl9oZWFkICogUls1IF07ICAgICAgICAgCiAgc3RydWN0IGJ1ZmZlcl9oZWFkICogRkxb
NSBdOyAgICAgICAgCiAgc3RydWN0IGJ1ZmZlcl9oZWFkICogRlJbNSBdOyAgICAgICAgCiAgc3Ry
dWN0IGJ1ZmZlcl9oZWFkICogQ0ZMWzUgXTsgICAgICAgCiAgc3RydWN0IGJ1ZmZlcl9oZWFkICog
Q0ZSWzUgXTsgICAgICAgCgogIHN0cnVjdCBidWZmZXJfaGVhZCAqIEZFQls2IF07ICAKCiAgc3Ry
dWN0IGJ1ZmZlcl9oZWFkICogdXNlZFs2IF07CiAgc3RydWN0IGJ1ZmZlcl9oZWFkICogdGhyb3du
WzYgXTsKICBpbnQgbG51bVs1IF07CSAKCgoKCgoKCgogIGludCBybnVtWzUgXTsJIAogIGludCBs
a2V5WzUgXTsgICAgICAgICAgICAgICAgCgogIGludCBya2V5WzUgXTsgICAgICAgICAgICAgICAg
CiAgaW50IGluc2VydF9zaXplWzUgXTsgICAgICAgICAKCiAgaW50IGJsa251bVs1IF07ICAgICAg
ICAgICAgICAKCgoKCgogICAKICBpbnQgY3VyX2Jsa251bTsJIAogIGludCBzMG51bTsgICAgICAg
ICAgICAgIAogIGludCBzMW51bTsgICAgICAgICAgICAgIAogIGludCBzMm51bTsgICAgICAgICAg
ICAgIAogIGludCBsYnl0ZXM7ICAgICAgICAgICAgIAogICAKICAgCiAgaW50IHJieXRlczsgICAg
ICAgICAgICAgCiAgIAogICAKICBpbnQgczFieXRlczsJCSAKICAgICAgICAgICAgCQkJIAogIGlu
dCBzMmJ5dGVzOwogIHN0cnVjdCBidWZmZXJfaGVhZCAqIGJ1Zl90b19mcmVlWzcgXTsgIAogIGNo
YXIgKiB2bl9idWY7CQkgCgoKICBpbnQgdm5fYnVmX3NpemU7CQkgCiAgc3RydWN0IHZpcnR1YWxf
bm9kZSAqIHRiX3ZuOwkgCgogIGludCBmc19nZW47ICAgICAgICAgICAgICAgICAgIAoKfSA7CgoK
IyAxMzM0ICIvdG1wL2J1aWxkLXJlaXNlcmZzLTMuNi4yNS1zMzkwLTEvcmVpc2VyZnNfdXRpbHMt
My42LjI1LWZzY2stMy54LjBiL3V0aWxzL2luY2x1ZGUvcmVpc2VyZnNfZnMuaCIKCgoKCgoKIAoK
IAoKIAoKCiAKCiAKCgogCgoKIAoKCgoKIAoKCgoKCgoKCgogCgpzdHJ1Y3QgYnVmZmVyX2luZm8g
ewogICAgc3RydWN0IHRyZWVfYmFsYW5jZSAqIHRiOwogICAgc3RydWN0IGJ1ZmZlcl9oZWFkICog
YmlfYmg7CiAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaV9wYXJlbnQ7CiAgICBpbnQgYmlfcG9z
aXRpb247Cn07CgoKIAoKCgoKCgoKCgoKCgoKCgpzdHJ1Y3QgaXRlbV9vcGVyYXRpb25zIHsKICAg
IGludCAoKmJ5dGVzX251bWJlcikgKHN0cnVjdCBpdGVtX2hlYWQgKiBpaCwgaW50IGJsb2NrX3Np
emUpOwogICAgdm9pZCAoKmRlY3JlbWVudF9rZXkpIChzdHJ1Y3QgY3B1X2tleSAqKTsKICAgIGlu
dCAoKmlzX2xlZnRfbWVyZ2VhYmxlKSAoc3RydWN0IGtleSAqIGloLCB1bnNpZ25lZCBsb25nIGJz
aXplKTsKICAgIHZvaWQgKCpwcmludF9pdGVtKSAoc3RydWN0IGl0ZW1faGVhZCAqLCBjaGFyICog
aXRlbSk7CiAgICB2b2lkICgqY2hlY2tfaXRlbSkgKHN0cnVjdCBpdGVtX2hlYWQgKiwgY2hhciAq
IGl0ZW0pOwoKICAgIGludCAoKmNyZWF0ZV92aSkgKHN0cnVjdCB2aXJ0dWFsX25vZGUgKiB2biwg
c3RydWN0IHZpcnR1YWxfaXRlbSAqIHZpLCAKCQkgICAgICBpbnQgaXNfYWZmZWN0ZWQsIGludCBp
bnNlcnRfc2l6ZSk7CiAgICBpbnQgKCpjaGVja19sZWZ0KSAoc3RydWN0IHZpcnR1YWxfaXRlbSAq
IHZpLCBpbnQgZnJlZSwgCgkJCSAgICBpbnQgc3RhcnRfc2tpcCwgaW50IGVuZF9za2lwKTsKICAg
IGludCAoKmNoZWNrX3JpZ2h0KSAoc3RydWN0IHZpcnR1YWxfaXRlbSAqIHZpLCBpbnQgZnJlZSk7
CiAgICBpbnQgKCpwYXJ0X3NpemUpIChzdHJ1Y3QgdmlydHVhbF9pdGVtICogdmksIGludCBmcm9t
LCBpbnQgdG8pOwogICAgaW50ICgqdW5pdF9udW0pIChzdHJ1Y3QgdmlydHVhbF9pdGVtICogdmkp
OwogICAgdm9pZCAoKnByaW50X3ZpKSAoc3RydWN0IHZpcnR1YWxfaXRlbSAqIHZpKTsKfTsKCgpl
eHRlcm4gc3RydWN0IGl0ZW1fb3BlcmF0aW9ucyBzdGF0X2RhdGFfb3BzLCBpbmRpcmVjdF9vcHMs
IGRpcmVjdF9vcHMsIAogIGRpcmVudHJ5X29wczsKZXh0ZXJuIHN0cnVjdCBpdGVtX29wZXJhdGlv
bnMgKiBpdGVtX29wcyBbNF07CgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgogCgoKIAoKCiAKCgog
IAoKCiAKCgogCgoKIAoKCiAKCgoKICAgICAgICAgICAgICAgICAgCgogCgoKIAoKCiAKCgoKCgog
CiMgMTUwMCAiL3RtcC9idWlsZC1yZWlzZXJmcy0zLjYuMjUtczM5MC0xL3JlaXNlcmZzX3V0aWxz
LTMuNi4yNS1mc2NrLTMueC4wYi91dGlscy9pbmNsdWRlL3JlaXNlcmZzX2ZzLmgiCgoKc3RydWN0
IHJlaXNlcmZzX2lnZXQ0X2FyZ3MgewogICAgX191MzIgb2JqZWN0aWQgOwp9IDsKCiAKIAogCgog
CgogCgoKCgogCnN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Rlc2MgewogIF9fdTMyIGpfdHJhbnNf
aWQgOwkJCSAKICBfX3UzMiBqX2xlbiA7CQkJIAogIF9fdTMyIGpfbW91bnRfaWQgOwkJCQkgCiAg
X191MzIgal9yZWFsYmxvY2tbMTAxOCBdIDsgIAogIGNoYXIgal9tYWdpY1sxMl0gOwp9IDsKCiAK
c3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY29tbWl0IHsKICBfX3UzMiBqX3RyYW5zX2lkIDsJCQkg
CiAgX191MzIgal9sZW4gOwkJCSAKICBfX3UzMiBqX3JlYWxibG9ja1sxMDE4IF0gOyAgCiAgY2hh
ciBqX2RpZ2VzdFsxNl0gOwkJCSAKfSA7CgogCgoKCnN0cnVjdCByZWlzZXJmc19qb3VybmFsX2hl
YWRlciB7CiAgX191MzIgal9sYXN0X2ZsdXNoX3RyYW5zX2lkIDsJCSAKICBfX3UzMiBqX2ZpcnN0
X3VuZmx1c2hlZF9vZmZzZXQgOyAgICAgICAKICBfX3UzMiBqX21vdW50X2lkIDsKfSA7CgogCgoK
CgoKc3RydWN0IHJlaXNlcmZzX3BhZ2VfbGlzdCB7CiAgc3RydWN0IHJlaXNlcmZzX3BhZ2VfbGlz
dCAqbmV4dCA7CiAgc3RydWN0IHJlaXNlcmZzX3BhZ2VfbGlzdCAqcHJldiA7CiAgc3RydWN0IHBh
Z2UgKnBhZ2UgOwogIHVuc2lnbmVkIGxvbmcgYmxvY2tuciA7ICAKCiAgIAoKCgoKCgoKICBpbnQg
ZG9fbm90X2xvY2sgOyAKfSA7CgpleHRlcm4gdGFza19xdWV1ZSByZWlzZXJmc19jb21taXRfdGhy
ZWFkX3RxIDsKZXh0ZXJuIHdhaXRfcXVldWVfaGVhZF90IHJlaXNlcmZzX2NvbW1pdF90aHJlYWRf
d2FpdCA7CgogCgoKCgoKCiAKCgoKCgoKCgoKCgogCgoKCgoKCgogCgoKCgp2b2lkIHJlaXNlcmZz
X3dhaXRfb25fd3JpdGVfYmxvY2soc3RydWN0IHN1cGVyX2Jsb2NrICpzKSA7CnZvaWQgcmVpc2Vy
ZnNfYmxvY2tfd3JpdGVzKHN0cnVjdCByZWlzZXJmc190cmFuc2FjdGlvbl9oYW5kbGUgKnRoKSA7
CnZvaWQgcmVpc2VyZnNfYWxsb3dfd3JpdGVzKHN0cnVjdCBzdXBlcl9ibG9jayAqcykgOwp2b2lk
IHJlaXNlcmZzX2NoZWNrX2xvY2tfZGVwdGgoY2hhciAqY2FsbGVyKSA7CnZvaWQgcmVpc2VyZnNf
cHJlcGFyZV9mb3Jfam91cm5hbChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IGJ1ZmZlcl9o
ZWFkICpiaCwgaW50IHdhaXQpIDsKdm9pZCByZWlzZXJmc19yZXN0b3JlX3ByZXBhcmVkX2J1ZmZl
cihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkgOwppbnQgam91
cm5hbF9pbml0KHN0cnVjdCBzdXBlcl9ibG9jayAqKSA7CmludCBqb3VybmFsX3JlbGVhc2Uoc3Ry
dWN0IHJlaXNlcmZzX3RyYW5zYWN0aW9uX2hhbmRsZSosIHN0cnVjdCBzdXBlcl9ibG9jayAqKSA7
CmludCBqb3VybmFsX3JlbGVhc2VfZXJyb3Ioc3RydWN0IHJlaXNlcmZzX3RyYW5zYWN0aW9uX2hh
bmRsZSosIHN0cnVjdCBzdXBlcl9ibG9jayAqKSA7CmludCBqb3VybmFsX2VuZChzdHJ1Y3QgcmVp
c2VyZnNfdHJhbnNhY3Rpb25faGFuZGxlICosIHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1bnNpZ25l
ZCBsb25nKSA7CmludCBqb3VybmFsX2VuZF9zeW5jKHN0cnVjdCByZWlzZXJmc190cmFuc2FjdGlv
bl9oYW5kbGUgKiwgc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkIGxvbmcpIDsKaW50IGpv
dXJuYWxfbWFya19kaXJ0eV9ub2xvZyhzdHJ1Y3QgcmVpc2VyZnNfdHJhbnNhY3Rpb25faGFuZGxl
ICosIHN0cnVjdCBzdXBlcl9ibG9jayAqLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKSA7CmludCBq
b3VybmFsX21hcmtfZnJlZWQoc3RydWN0IHJlaXNlcmZzX3RyYW5zYWN0aW9uX2hhbmRsZSAqLCBz
dHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdW5zaWduZWQgbG9uZyBibG9ja25yKSA7CmludCBwdXNoX2pv
dXJuYWxfd3JpdGVyKGNoYXIgKncpIDsKaW50IHBvcF9qb3VybmFsX3dyaXRlcihpbnQgd2luZGV4
KSA7CmludCBqb3VybmFsX2xvY2tfZG9iYWxhbmNlKHN0cnVjdCBzdXBlcl9ibG9jayAqcF9zX3Ni
KSA7CmludCBqb3VybmFsX3VubG9ja19kb2JhbGFuY2Uoc3RydWN0IHN1cGVyX2Jsb2NrICpwX3Nf
c2IpIDsKaW50IGpvdXJuYWxfdHJhbnNhY3Rpb25fc2hvdWxkX2VuZChzdHJ1Y3QgcmVpc2VyZnNf
dHJhbnNhY3Rpb25faGFuZGxlICosIGludCkgOwppbnQgcmVpc2VyZnNfaW5fam91cm5hbChzdHJ1
Y3Qgc3VwZXJfYmxvY2sgKnBfc19zYiwga2Rldl90IGRldiwgdW5zaWduZWQgbG9uZyBibCwgaW50
IHNpemUsIGludCBzZWFyY2hhbGwsIHVuc2lnbmVkIGxvbmcgKm5leHQpIDsKaW50IGpvdXJuYWxf
YmVnaW4oc3RydWN0IHJlaXNlcmZzX3RyYW5zYWN0aW9uX2hhbmRsZSAqLCBzdHJ1Y3Qgc3VwZXJf
YmxvY2sgKnBfc19zYiwgdW5zaWduZWQgbG9uZykgOwppbnQgam91cm5hbF9qb2luKHN0cnVjdCBy
ZWlzZXJmc190cmFuc2FjdGlvbl9oYW5kbGUgKiwgc3RydWN0IHN1cGVyX2Jsb2NrICpwX3Nfc2Is
IHVuc2lnbmVkIGxvbmcpIDsKc3RydWN0IHN1cGVyX2Jsb2NrICpyZWlzZXJmc19nZXRfc3VwZXIo
a2Rldl90IGRldikgOwp2b2lkIGZsdXNoX2FzeW5jX2NvbW1pdHMoc3RydWN0IHN1cGVyX2Jsb2Nr
ICpwX3Nfc2IpIDsKCmludCByZW1vdmVfZnJvbV90cmFuc2FjdGlvbihzdHJ1Y3Qgc3VwZXJfYmxv
Y2sgKnBfc19zYiwgdW5zaWduZWQgbG9uZyBibG9ja25yLCBpbnQgYWxyZWFkeV9jbGVhbmVkKSA7
CmludCByZW1vdmVfZnJvbV9qb3VybmFsX2xpc3Qoc3RydWN0IHN1cGVyX2Jsb2NrICpzLCBzdHJ1
Y3QgcmVpc2VyZnNfam91cm5hbF9saXN0ICpqbCwgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgaW50
IHJlbW92ZV9mcmVlZCkgOwoKaW50IGJ1ZmZlcl9qb3VybmFsZWQoc3RydWN0IGJ1ZmZlcl9oZWFk
ICpiaCkgOwppbnQgbWFya19idWZmZXJfam91cm5hbF9uZXcoc3RydWN0IGJ1ZmZlcl9oZWFkICpi
aCkgOwppbnQgcmVpc2VyZnNfc3luY19hbGxfYnVmZmVycyhrZGV2X3QgZGV2LCBpbnQgd2FpdCkg
OwppbnQgcmVpc2VyZnNfc3luY19idWZmZXJzKGtkZXZfdCBkZXYsIGludCB3YWl0KSA7CmludCBy
ZWlzZXJmc19hZGRfcGFnZV90b19mbHVzaF9saXN0KHN0cnVjdCByZWlzZXJmc190cmFuc2FjdGlv
bl9oYW5kbGUgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGlu
b2RlICosIHN0cnVjdCBidWZmZXJfaGVhZCAqKSA7CmludCByZWlzZXJmc19yZW1vdmVfcGFnZV9m
cm9tX2ZsdXNoX2xpc3Qoc3RydWN0IHJlaXNlcmZzX3RyYW5zYWN0aW9uX2hhbmRsZSAqLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqKSA7Cgpp
bnQgcmVpc2VyZnNfYWxsb2NhdGVfbGlzdF9iaXRtYXBzKHN0cnVjdCBzdXBlcl9ibG9jayAqcywg
c3RydWN0IHJlaXNlcmZzX2xpc3RfYml0bWFwICosIGludCkgOwoKCQkJCSAKc3RhdGljIGlubGlu
ZSBpbnQgcmVpc2VyZnNfYnVmZmVyX3ByZXBhcmVkKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpIHsK
ICBpZiAoYmggJiYgKF9fYnVpbHRpbl9jb25zdGFudF9wKCggMjAgICkpID8gX19jb25zdGFudF90
ZXN0X2JpdCgoIDIwICApLCggICZiaC0+Yl9zdGF0ZSApKSA6IF9fdGVzdF9iaXQoKCAyMCAgKSwo
ICAmYmgtPmJfc3RhdGUgKSkgKSApCiAgICByZXR1cm4gMSA7CiAgZWxzZQogICAgcmV0dXJuIDAg
Owp9CgogCnN0YXRpYyBpbmxpbmUgaW50IGJ1ZmZlcl9qb3VybmFsX2RpcnR5KHN0cnVjdCBidWZm
ZXJfaGVhZCAqYmgpIHsKICBpZiAoYmgpCiAgICByZXR1cm4gKF9fYnVpbHRpbl9jb25zdGFudF9w
KCggMTggICkpID8gX19jb25zdGFudF90ZXN0X2JpdCgoIDE4ICApLCggICZiaC0+Yl9zdGF0ZSAp
KSA6IF9fdGVzdF9iaXQoKCAxOCAgKSwoICAmYmgtPmJfc3RhdGUgKSkgKSAgOwogIGVsc2UKICAg
IHJldHVybiAwIDsKfQpzdGF0aWMgaW5saW5lIGludCBtYXJrX2J1ZmZlcl9ub3Rqb3VybmFsX2Rp
cnR5KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpIHsKICBpZiAoYmgpCiAgICAoX19idWlsdGluX2Nv
bnN0YW50X3AoKCAxOCAgKSkgPyBfX2NvbnN0YW50X2NsZWFyX2JpdCgoIDE4ICApLCggICZiaC0+
Yl9zdGF0ZSApKSA6IF9fY2xlYXJfYml0KCggMTggICksKCAgJmJoLT5iX3N0YXRlICkpICkgIDsK
ICByZXR1cm4gMCA7Cn0Kc3RhdGljIGlubGluZSBpbnQgbWFya19idWZmZXJfbm90am91cm5hbF9u
ZXcoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkgewogIGlmIChiaCkgewogICAgKF9fYnVpbHRpbl9j
b25zdGFudF9wKCggMTkgICkpID8gX19jb25zdGFudF9jbGVhcl9iaXQoKCAxOSAgKSwoICAmYmgt
PmJfc3RhdGUgKSkgOiBfX2NsZWFyX2JpdCgoIDE5ICApLCggICZiaC0+Yl9zdGF0ZSApKSApICA7
CiAgfQogIHJldHVybiAwIDsKfQoKIApfX3UzMiByZWlzZXJmc19nZXRfdW51c2VkX29iamVjdGlk
IChzdHJ1Y3QgcmVpc2VyZnNfdHJhbnNhY3Rpb25faGFuZGxlICp0aCk7CnZvaWQgcmVpc2VyZnNf
cmVsZWFzZV9vYmplY3RpZCAoc3RydWN0IHJlaXNlcmZzX3RyYW5zYWN0aW9uX2hhbmRsZSAqdGgs
IF9fdTMyIG9iamVjdGlkX3RvX3JlbGVhc2UpOwppbnQgcmVpc2VyZnNfY29udmVydF9vYmplY3Rp
ZF9tYXBfdjEoc3RydWN0IHN1cGVyX2Jsb2NrICopIDsKCiAKaW50IEJfSVNfSU5fVFJFRShzdHJ1
Y3QgYnVmZmVyX2hlYWQgKik7CmV4dGVybiBpbmxpbmUgdm9pZCBjb3B5X2tleSAodm9pZCAqIHRv
LCB2b2lkICogZnJvbSk7CmV4dGVybiBpbmxpbmUgdm9pZCBjb3B5X3Nob3J0X2tleSAodm9pZCAq
IHRvLCB2b2lkICogZnJvbSk7CmV4dGVybiBpbmxpbmUgdm9pZCBjb3B5X2l0ZW1faGVhZCh2b2lk
ICogcF92X3RvLCB2b2lkICogcF92X2Zyb20pOwoKIApleHRlcm4gaW5saW5lIGludCBjb21wX2tl
eXMgKHN0cnVjdCBrZXkgKiBsZV9rZXksIHN0cnVjdCBjcHVfa2V5ICogY3B1X2tleSk7CmV4dGVy
biBpbmxpbmUgaW50ICBjb21wX3Nob3J0X2tleXMgKHN0cnVjdCBrZXkgKiBsZV9rZXksIHN0cnVj
dCBjcHVfa2V5ICogY3B1X2tleSk7CmV4dGVybiBpbmxpbmUgdm9pZCBsZV9rZXkyY3B1X2tleSAo
c3RydWN0IGNwdV9rZXkgKiB0bywgc3RydWN0IGtleSAqIGZyb20pOwoKIApleHRlcm4gaW5saW5l
IGludCBjb21wX2NwdV9rZXlzIChzdHJ1Y3QgY3B1X2tleSAqLCBzdHJ1Y3QgY3B1X2tleSAqKTsK
ZXh0ZXJuIGlubGluZSBpbnQgY29tcF9zaG9ydF9jcHVfa2V5cyAoc3RydWN0IGNwdV9rZXkgKiwg
c3RydWN0IGNwdV9rZXkgKik7CmV4dGVybiBpbmxpbmUgdm9pZCBjcHVfa2V5MmNwdV9rZXkgKHN0
cnVjdCBjcHVfa2V5ICosIHN0cnVjdCBjcHVfa2V5ICopOwoKIApleHRlcm4gaW5saW5lIGludCBj
b21wX2xlX2tleXMgKHN0cnVjdCBrZXkgKiwgc3RydWN0IGtleSAqKTsKZXh0ZXJuIGlubGluZSBp
bnQgY29tcF9zaG9ydF9sZV9rZXlzIChzdHJ1Y3Qga2V5ICosIHN0cnVjdCBrZXkgKik7CgogCiAK
IApleHRlcm4gaW5saW5lIGludCBsZV9rZXlfdmVyc2lvbiAoc3RydWN0IGtleSAqIGtleSkKewog
ICAgaW50IHR5cGU7CiAgICAKICAgIHR5cGUgPSAoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTE2
KSggKCBrZXktPnUua19vZmZzZXRfdjIua190eXBlICkgKSkgPyAoKF9fdTE2KSggKCgoX191MTYp
KCAoICgga2V5LT51Lmtfb2Zmc2V0X3YyLmtfdHlwZSApICkgKSAmIChfX3UxNikweDAwZmZVKSA8
PCA4KSB8ICgoKF9fdTE2KSggKCAoIGtleS0+dS5rX29mZnNldF92Mi5rX3R5cGUgKSApICkgJiAo
X191MTYpMHhmZjAwVSkgPj4gOCkgKSkgIDogX19mc3dhYjE2KCggKCBrZXktPnUua19vZmZzZXRf
djIua190eXBlICkgKSkpICA7CiAgICBpZiAodHlwZSAhPSAyICAmJiB0eXBlICE9IDEgICYmIHR5
cGUgIT0gMyApCglyZXR1cm4gMCA7CgogICAgcmV0dXJuIDEgOwoJCn0KCgpleHRlcm4gaW5saW5l
IHZvaWQgY29weV9rZXkgKHZvaWQgKiB0bywgdm9pZCAqIGZyb20pCnsKICBtZW1jcHkgKHRvLCBm
cm9tLCAoc2l6ZW9mKHN0cnVjdCBrZXkpKSApOwp9CgoKaW50IGNvbXBfaXRlbXMgKHN0cnVjdCBp
dGVtX2hlYWQgICogcF9zX2loLCBzdHJ1Y3QgcGF0aCAqIHBfc19wYXRoKTsKc3RydWN0IGtleSAq
IGdldF9ya2V5IChzdHJ1Y3QgcGF0aCAqIHBfc19jaGtfcGF0aCwgc3RydWN0IHN1cGVyX2Jsb2Nr
ICAqIHBfc19zYik7CmlubGluZSBpbnQgYmluX3NlYXJjaCAodm9pZCAqIHBfdl9rZXksIHZvaWQg
KiBwX3ZfYmFzZSwgaW50IHBfbl9udW0sIGludCBwX25fd2lkdGgsIGludCAqIHBfbl9wb3MpOwpp
bnQgc2VhcmNoX2J5X2tleSAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHN0cnVjdCBjcHVfa2V5ICos
IHN0cnVjdCBwYXRoICosIGludCk7CgppbnQgc2VhcmNoX2Zvcl9wb3NpdGlvbl9ieV9rZXkgKHN0
cnVjdCBzdXBlcl9ibG9jayAqIHBfc19zYiwgc3RydWN0IGNwdV9rZXkgKiBwX3NfY3B1X2tleSwg
c3RydWN0IHBhdGggKiBwX3Nfc2VhcmNoX3BhdGgpOwpleHRlcm4gaW5saW5lIHZvaWQgZGVjcmVt
ZW50X2Jjb3VudCAoc3RydWN0IGJ1ZmZlcl9oZWFkICogcF9zX2JoKTsKdm9pZCBkZWNyZW1lbnRf
Y291bnRlcnNfaW5fcGF0aCAoc3RydWN0IHBhdGggKiBwX3Nfc2VhcmNoX3BhdGgpOwp2b2lkIHBh
dGhyZWxzZSAoc3RydWN0IHBhdGggKiBwX3Nfc2VhcmNoX3BhdGgpOwppbnQgcmVpc2VyZnNfY2hl
Y2tfcGF0aChzdHJ1Y3QgcGF0aCAqcCkgOwp2b2lkIHBhdGhyZWxzZV9hbmRfcmVzdG9yZSAoc3Ry
dWN0IHN1cGVyX2Jsb2NrICpzLCBzdHJ1Y3QgcGF0aCAqIHBfc19zZWFyY2hfcGF0aCk7CgppbnQg
cmVpc2VyZnNfaW5zZXJ0X2l0ZW0gKHN0cnVjdCByZWlzZXJmc190cmFuc2FjdGlvbl9oYW5kbGUg
KnRoLCAKCQkJICBzdHJ1Y3QgcGF0aCAqIHBhdGgsIAoJCQkgIHN0cnVjdCBjcHVfa2V5ICoga2V5
LAoJCQkgIHN0cnVjdCBpdGVtX2hlYWQgKiBpaCwgY29uc3QgY2hhciAqIGJvZHkpOwoKaW50IHJl
aXNlcmZzX3Bhc3RlX2ludG9faXRlbSAoc3RydWN0IHJlaXNlcmZzX3RyYW5zYWN0aW9uX2hhbmRs
ZSAqdGgsCgkJCSAgICAgIHN0cnVjdCBwYXRoICogcGF0aCwKCQkJICAgICAgc3RydWN0IGNwdV9r
ZXkgKiBrZXksCgkJCSAgICAgIGNvbnN0IGNoYXIgKiBib2R5LCBpbnQgcGFzdGVfc2l6ZSk7Cgpp
bnQgcmVpc2VyZnNfY3V0X2Zyb21faXRlbSAoc3RydWN0IHJlaXNlcmZzX3RyYW5zYWN0aW9uX2hh
bmRsZSAqdGgsCgkJCSAgICBzdHJ1Y3QgcGF0aCAqIHBhdGgsCgkJCSAgICBzdHJ1Y3QgY3B1X2tl
eSAqIGtleSwKCQkJICAgIHN0cnVjdCBpbm9kZSAqIGlub2RlLAoJCQkgICAgc3RydWN0IHBhZ2Ug
KnBhZ2UsCgkJCSAgICBsb2ZmX3QgbmV3X2ZpbGVfc2l6ZSk7CgppbnQgcmVpc2VyZnNfZGVsZXRl
X2l0ZW0gKHN0cnVjdCByZWlzZXJmc190cmFuc2FjdGlvbl9oYW5kbGUgKnRoLAoJCQkgIHN0cnVj
dCBwYXRoICogcGF0aCwgCgkJCSAgc3RydWN0IGNwdV9rZXkgKiBrZXksCgkJCSAgc3RydWN0IGlu
b2RlICogaW5vZGUsIAoJCQkgIHN0cnVjdCBidWZmZXJfaGVhZCAgKiBwX3NfdW5fYmgpOwoKCnZv
aWQgcmVpc2VyZnNfZGVsZXRlX29iamVjdCAoc3RydWN0IHJlaXNlcmZzX3RyYW5zYWN0aW9uX2hh
bmRsZSAqdGgsIHN0cnVjdCBpbm9kZSAqIHBfc19pbm9kZSk7CnZvaWQgcmVpc2VyZnNfZG9fdHJ1
bmNhdGUgKHN0cnVjdCByZWlzZXJmc190cmFuc2FjdGlvbl9oYW5kbGUgKnRoLCAKCQkJICAgc3Ry
dWN0ICBpbm9kZSAqIHBfc19pbm9kZSwgc3RydWN0IHBhZ2UgKiwgCgkJCSAgIGludCB1cGRhdGVf
dGltZXN0YW1wcyk7CiAKIAogCiAKIAoKCgoKCgoKCgogCgoKCgoKCgoKCiAKCgoKCgoKCgp2b2lk
IHBhZGRfaXRlbSAoY2hhciAqIGl0ZW0sIGludCB0b3RhbF9sZW5ndGgsIGludCBsZW5ndGgpOwoK
CiAKCmludCByZWlzZXJmc19wcmVwYXJlX3dyaXRlKHN0cnVjdCBmaWxlICosIHN0cnVjdCBwYWdl
ICosIHVuc2lnbmVkLCB1bnNpZ25lZCkgOwp2b2lkIHJlaXNlcmZzX3RydW5jYXRlX2ZpbGUoc3Ry
dWN0IGlub2RlICosIGludCB1cGRhdGVfdGltZXN0YW1wcykgOwp2b2lkIG1ha2VfY3B1X2tleSAo
c3RydWN0IGNwdV9rZXkgKiBjcHVfa2V5LCBjb25zdCBzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwgbG9m
Zl90IG9mZnNldCwKCQkgICBpbnQgdHlwZSwgaW50IGtleV9sZW5ndGgpOwp2b2lkIG1ha2VfbGVf
aXRlbV9oZWFkIChzdHJ1Y3QgaXRlbV9oZWFkICogaWgsIHN0cnVjdCBjcHVfa2V5ICoga2V5LCBp
bnQgdmVyc2lvbiwKCQkJICAgICAgIGxvZmZfdCBvZmZzZXQsIGludCB0eXBlLCBpbnQgbGVuZ3Ro
LCBpbnQgZW50cnlfY291bnQpOwogCgppbnQgcmVpc2VyZnNfZ2V0X2Jsb2NrIChzdHJ1Y3QgaW5v
ZGUgKiBpbm9kZSwgbG9uZyBibG9jaywKCQkJc3RydWN0IGJ1ZmZlcl9oZWFkICogYmhfcmVzdWx0
LCBpbnQgY3JlYXRlKTsKc3RydWN0IGlub2RlICogcmVpc2VyZnNfaWdldCAoc3RydWN0IHN1cGVy
X2Jsb2NrICogcywgc3RydWN0IGNwdV9rZXkgKiBrZXkpOwp2b2lkIHJlaXNlcmZzX3JlYWRfaW5v
ZGUgKHN0cnVjdCBpbm9kZSAqIGlub2RlKSA7CnZvaWQgcmVpc2VyZnNfcmVhZF9pbm9kZTIoc3Ry
dWN0IGlub2RlICogaW5vZGUsIHZvaWQgKnApIDsKdm9pZCByZWlzZXJmc19kZWxldGVfaW5vZGUg
KHN0cnVjdCBpbm9kZSAqIGlub2RlKTsKZXh0ZXJuIGludCByZWlzZXJmc19ub3RpZnlfY2hhbmdl
KHN0cnVjdCBkZW50cnkgKiBkZW50cnksIHN0cnVjdCBpYXR0ciAqIGF0dHIpOwp2b2lkIHJlaXNl
cmZzX3dyaXRlX2lub2RlIChzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwgaW50KSA7CgogCnZvaWQgcmVp
c2VyZnNfZGlydHlfaW5vZGUgKHN0cnVjdCBpbm9kZSAqIGlub2RlKSA7CgpzdHJ1Y3QgaW5vZGUg
KiByZWlzZXJmc19uZXdfaW5vZGUgKHN0cnVjdCByZWlzZXJmc190cmFuc2FjdGlvbl9oYW5kbGUg
KnRoLCBjb25zdCBzdHJ1Y3QgaW5vZGUgKiBkaXIsIGludCBtb2RlLCAKCQkJCSAgIGNvbnN0IGNo
YXIgKiBzeW1uYW1lLCBpbnQgaXRlbV9sZW4sCgkJCQkgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnks
IHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCAqIGVycik7CmludCByZWlzZXJmc19zeW5jX2lub2Rl
IChzdHJ1Y3QgcmVpc2VyZnNfdHJhbnNhY3Rpb25faGFuZGxlICp0aCwgc3RydWN0IGlub2RlICog
aW5vZGUpOwp2b2lkIHJlaXNlcmZzX3VwZGF0ZV9zZCAoc3RydWN0IHJlaXNlcmZzX3RyYW5zYWN0
aW9uX2hhbmRsZSAqdGgsIHN0cnVjdCBpbm9kZSAqIGlub2RlKTsKaW50IHJlaXNlcmZzX2lub2Rl
X3NldGF0dHIoc3RydWN0IGRlbnRyeSAqLCAgc3RydWN0IGlhdHRyICogYXR0cik7CgogCmlubGlu
ZSB2b2lkIHNldF9kZV9uYW1lX2FuZF9uYW1lbGVuIChzdHJ1Y3QgcmVpc2VyZnNfZGlyX2VudHJ5
ICogZGUpOwppbnQgc2VhcmNoX2J5X2VudHJ5X2tleSAoc3RydWN0IHN1cGVyX2Jsb2NrICogc2Is
IHN0cnVjdCBjcHVfa2V5ICoga2V5LCBzdHJ1Y3QgcGF0aCAqIHBhdGgsIAoJCQkgc3RydWN0IHJl
aXNlcmZzX2Rpcl9lbnRyeSAqIGRlKTsKc3RydWN0IGRlbnRyeSAqIHJlaXNlcmZzX2xvb2t1cCAo
c3RydWN0IGlub2RlICogZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOwppbnQgcmVpc2VyZnNf
Y3JlYXRlIChzdHJ1Y3QgaW5vZGUgKiBkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwJaW50IG1v
ZGUpOwppbnQgcmVpc2VyZnNfbWtub2QgKHN0cnVjdCBpbm9kZSAqIGRpcl9pbm9kZSwgc3RydWN0
IGRlbnRyeSAqZGVudHJ5LCBpbnQgbW9kZSwgaW50IHJkZXYpOwppbnQgcmVpc2VyZnNfbWtkaXIg
KHN0cnVjdCBpbm9kZSAqIGRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBpbnQgbW9kZSk7Cmlu
dCByZWlzZXJmc19ybWRpciAoc3RydWN0IGlub2RlICogZGlyLAlzdHJ1Y3QgZGVudHJ5ICpkZW50
cnkpOwppbnQgcmVpc2VyZnNfdW5saW5rIChzdHJ1Y3QgaW5vZGUgKiBkaXIsIHN0cnVjdCBkZW50
cnkgKmRlbnRyeSk7CmludCByZWlzZXJmc19zeW1saW5rIChzdHJ1Y3QgaW5vZGUgKiBkaXIsIHN0
cnVjdCBkZW50cnkgKmRlbnRyeSwgY29uc3QgY2hhciAqIHN5bW5hbWUpOwppbnQgcmVpc2VyZnNf
bGluayAoc3RydWN0IGRlbnRyeSAqIG9sZF9kZW50cnksIHN0cnVjdCBpbm9kZSAqIGRpciwgc3Ry
dWN0IGRlbnRyeSAqZGVudHJ5KTsKaW50IHJlaXNlcmZzX3JlbmFtZSAoc3RydWN0IGlub2RlICog
b2xkX2Rpciwgc3RydWN0IGRlbnRyeSAqb2xkX2RlbnRyeSwgc3RydWN0IGlub2RlICogbmV3X2Rp
ciwgc3RydWN0IGRlbnRyeSAqbmV3X2RlbnRyeSk7CgogCmlubGluZSB2b2lkIHJlaXNlcmZzX21h
cmtfYnVmZmVyX2RpcnR5IChzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCwgaW50IGZsYWcpOwppbmxp
bmUgdm9pZCByZWlzZXJmc19tYXJrX2J1ZmZlcl9jbGVhbiAoc3RydWN0IGJ1ZmZlcl9oZWFkICog
YmgpOwp2b2lkIHJlaXNlcmZzX3BhbmljIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiBzLCBjb25zdCBj
aGFyICogZm10LCAuLi4pOwp2b2lkIHJlaXNlcmZzX3dyaXRlX3N1cGVyIChzdHJ1Y3Qgc3VwZXJf
YmxvY2sgKiBzKTsKdm9pZCByZWlzZXJmc19wdXRfc3VwZXIgKHN0cnVjdCBzdXBlcl9ibG9jayAq
IHMpOwppbnQgcmVpc2VyZnNfcmVtb3VudCAoc3RydWN0IHN1cGVyX2Jsb2NrICogcywgaW50ICog
ZmxhZ3MsIGNoYXIgKiBkYXRhKTsKIAoKCgpzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiByZWlzZXJmc19y
ZWFkX3N1cGVyIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiBzLCB2b2lkICogZGF0YSwgaW50IHNpbGVu
dCk7CmludCByZWlzZXJmc19zdGF0ZnMgKHN0cnVjdCBzdXBlcl9ibG9jayAqIHMsIHN0cnVjdCBz
dGF0ZnMgKiBidWYpOwoKIApleHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMgcmVpc2VyZnNf
ZGlyX2lub2RlX29wZXJhdGlvbnM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJlaXNl
cmZzX2Rpcl9vcGVyYXRpb25zOwoKIAppbnQgZGlyZWN0MmluZGlyZWN0IChzdHJ1Y3QgcmVpc2Vy
ZnNfdHJhbnNhY3Rpb25faGFuZGxlICosIHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgcGF0aCAqLCBz
dHJ1Y3QgYnVmZmVyX2hlYWQgKiwgbG9mZl90KTsKaW50IGluZGlyZWN0MmRpcmVjdCAoc3RydWN0
IHJlaXNlcmZzX3RyYW5zYWN0aW9uX2hhbmRsZSAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHBh
Z2UgKiwgc3RydWN0IHBhdGggKiwgc3RydWN0IGNwdV9rZXkgKiwgbG9mZl90LCBjaGFyICopOwp2
b2lkIHJlaXNlcmZzX3VubWFwX2J1ZmZlcihzdHJ1Y3QgYnVmZmVyX2hlYWQgKikgOwoKCiAKZXh0
ZXJuIHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHJlaXNlcmZzX2ZpbGVfaW5vZGVfb3BlcmF0aW9u
czsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcmVpc2VyZnNfZmlsZV9vcGVyYXRpb25z
OwpleHRlcm4gc3RydWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyByZWlzZXJmc19hZGRyZXNz
X3NwYWNlX29wZXJhdGlvbnMgOwppbnQgZ2V0X25ld19idWZmZXIgKHN0cnVjdCByZWlzZXJmc190
cmFuc2FjdGlvbl9oYW5kbGUgKnRoLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiwKCQkgICAgc3RydWN0
IGJ1ZmZlcl9oZWFkICoqLCBzdHJ1Y3QgcGF0aCAqKTsKCgogCnN0cnVjdCBidWZmZXJfaGVhZCAq
IHJlaXNlcmZzX2dldGJsayAoa2Rldl90IG5fZGV2LCBpbnQgbl9ibG9jaywgaW50IG5fc2l6ZSk7
CnZvaWQgd2FpdF9idWZmZXJfdW50aWxfcmVsZWFzZWQgKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJo
KTsKc3RydWN0IGJ1ZmZlcl9oZWFkICogcmVpc2VyZnNfYnJlYWQgKGtkZXZfdCBuX2RldiwgaW50
IG5fYmxvY2ssIGludCBuX3NpemUpOwoKCiAKdm9pZCAqIHJlaXNlcmZzX2ttYWxsb2MgKHNpemVf
dCBzaXplLCBpbnQgZmxhZ3MsIHN0cnVjdCBzdXBlcl9ibG9jayAqIHMpOwp2b2lkIHJlaXNlcmZz
X2tmcmVlIChjb25zdCB2b2lkICogdnAsIHNpemVfdCBzaXplLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sg
KiBzKTsKaW50IGZpeF9ub2RlcyAoaW50IG5fb3BfbW9kZSwgc3RydWN0IHRyZWVfYmFsYW5jZSAq
IHBfc190Yiwgc3RydWN0IGl0ZW1faGVhZCAqIHBfc19pbnNfaWgsIGNvbnN0IHZvaWQgKik7CnZv
aWQgdW5maXhfbm9kZXMgKHN0cnVjdCB0cmVlX2JhbGFuY2UgKik7CnZvaWQgZnJlZV9idWZmZXJz
X2luX3RiIChzdHJ1Y3QgdHJlZV9iYWxhbmNlICogcF9zX3RiKTsKCgogCnZvaWQgcmVpc2VyZnNf
cGFuaWMgKHN0cnVjdCBzdXBlcl9ibG9jayAqIHMsIGNvbnN0IGNoYXIgKiBmbXQsIC4uLik7CnZv
aWQgcmVpc2VyZnNfd2FybmluZyAoY29uc3QgY2hhciAqIGZtdCwgLi4uKTsKdm9pZCByZWlzZXJm
c19kZWJ1ZyAoc3RydWN0IHN1cGVyX2Jsb2NrICpzLCBpbnQgbGV2ZWwsIGNvbnN0IGNoYXIgKiBm
bXQsIC4uLik7CnZvaWQgcHJpbnRfdmlydHVhbF9ub2RlIChzdHJ1Y3QgdmlydHVhbF9ub2RlICog
dm4pOwp2b2lkIHByaW50X2luZGlyZWN0X2l0ZW0gKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoLCBp
bnQgaXRlbV9udW0pOwp2b2lkIHN0b3JlX3ByaW50X3RiIChzdHJ1Y3QgdHJlZV9iYWxhbmNlICog
dGIpOwp2b2lkIHByaW50X2N1cl90YiAoY2hhciAqIG1lcyk7CnZvaWQgcHJpbnRfZGUgKHN0cnVj
dCByZWlzZXJmc19kaXJfZW50cnkgKiBkZSk7CnZvaWQgcHJpbnRfYmkgKHN0cnVjdCBidWZmZXJf
aW5mbyAqIGJpLCBjaGFyICogbWVzKTsKCgoKdm9pZCBwcmludF9ibG9jayAoc3RydWN0IGJ1ZmZl
cl9oZWFkICogYmgsIC4uLik7CnZvaWQgcHJpbnRfcGF0aCAoc3RydWN0IHRyZWVfYmFsYW5jZSAq
IHRiLCBzdHJ1Y3QgcGF0aCAqIHBhdGgpOwp2b2lkIHByaW50X2JtYXAgKHN0cnVjdCBzdXBlcl9i
bG9jayAqIHMsIGludCBzaWxlbnQpOwp2b2lkIHByaW50X2JtYXBfYmxvY2sgKGludCBpLCBjaGFy
ICogZGF0YSwgaW50IHNpemUsIGludCBzaWxlbnQpOwogCnZvaWQgcHJpbnRfb2JqZWN0aWRfbWFw
IChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiBzKTsKdm9pZCBwcmludF9ibG9ja19oZWFkIChzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKiBiaCwgY2hhciAqIG1lcyk7CnZvaWQgY2hlY2tfbGVhZiAoc3RydWN0IGJ1
ZmZlcl9oZWFkICogYmgpOwp2b2lkIGNoZWNrX2ludGVybmFsIChzdHJ1Y3QgYnVmZmVyX2hlYWQg
KiBiaCk7CnZvaWQgcHJpbnRfc3RhdGlzdGljcyAoc3RydWN0IHN1cGVyX2Jsb2NrICogcyk7Cgog
CmludCBsZWFmX21vdmVfaXRlbXMgKGludCBzaGlmdF9tb2RlLCBzdHJ1Y3QgdHJlZV9iYWxhbmNl
ICogdGIsIGludCBtb3ZfbnVtLCBpbnQgbW92X2J5dGVzLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBT
bmV3KTsKaW50IGxlYWZfc2hpZnRfbGVmdCAoc3RydWN0IHRyZWVfYmFsYW5jZSAqIHRiLCBpbnQg
c2hpZnRfbnVtLCBpbnQgc2hpZnRfYnl0ZXMpOwppbnQgbGVhZl9zaGlmdF9yaWdodCAoc3RydWN0
IHRyZWVfYmFsYW5jZSAqIHRiLCBpbnQgc2hpZnRfbnVtLCBpbnQgc2hpZnRfYnl0ZXMpOwp2b2lk
IGxlYWZfZGVsZXRlX2l0ZW1zIChzdHJ1Y3QgYnVmZmVyX2luZm8gKiBjdXJfYmksIGludCBsYXN0
X2ZpcnN0LCBpbnQgZmlyc3QsIGludCBkZWxfbnVtLCBpbnQgZGVsX2J5dGVzKTsKdm9pZCBsZWFm
X2luc2VydF9pbnRvX2J1ZiAoc3RydWN0IGJ1ZmZlcl9pbmZvICogYmksIGludCBiZWZvcmUsIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaXRlbV9oZWFkICogaW5zZXJ0ZWRfaXRl
bV9paCwgY29uc3QgY2hhciAqIGluc2VydGVkX2l0ZW1fYm9keSwgaW50IHplcm9zX251bWJlcik7
CnZvaWQgbGVhZl9wYXN0ZV9pbl9idWZmZXIgKHN0cnVjdCBidWZmZXJfaW5mbyAqIGJpLCBpbnQg
cGFzdGVkX2l0ZW1fbnVtLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBvc19pbl9p
dGVtLCBpbnQgcGFzdGVfc2l6ZSwgY29uc3QgY2hhciAqIGJvZHksIGludCB6ZXJvc19udW1iZXIp
Owp2b2lkIGxlYWZfY3V0X2Zyb21fYnVmZmVyIChzdHJ1Y3QgYnVmZmVyX2luZm8gKiBiaSwgaW50
IGN1dF9pdGVtX251bSwgaW50IHBvc19pbl9pdGVtLCAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGN1dF9zaXplKTsKdm9pZCBsZWFmX3Bhc3RlX2VudHJpZXMgKHN0cnVjdCBidWZmZXJf
aGVhZCAqIGJoLCBpbnQgaXRlbV9udW0sIGludCBiZWZvcmUsIAogICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IG5ld19lbnRyeV9jb3VudCwgc3RydWN0IHJlaXNlcmZzX2RlX2hlYWQgKiBuZXdf
ZGVocywgY29uc3QgY2hhciAqIHJlY29yZHMsIGludCBwYXN0ZV9zaXplKTsKIAppbnQgYmFsYW5j
ZV9pbnRlcm5hbCAoc3RydWN0IHRyZWVfYmFsYW5jZSAqICwgaW50LCBpbnQsIHN0cnVjdCBpdGVt
X2hlYWQgKiAsIAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqKTsK
CiAKaW5saW5lIHZvaWQgZG9fYmFsYW5jZV9tYXJrX2xlYWZfZGlydHkgKHN0cnVjdCB0cmVlX2Jh
bGFuY2UgKiB0YiwgCgkJCQkJc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgsIGludCBmbGFnKTsKCgoK
dm9pZCBkb19iYWxhbmNlIChzdHJ1Y3QgdHJlZV9iYWxhbmNlICogdGIsIHN0cnVjdCBpdGVtX2hl
YWQgKiBpaCwgCiAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIGJvZHksIGludCBmbGFnKTsK
dm9pZCByZWlzZXJmc19pbnZhbGlkYXRlX2J1ZmZlciAoc3RydWN0IHRyZWVfYmFsYW5jZSAqIHRi
LCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCk7CgppbnQgZ2V0X2xlZnRfbmVpZ2hib3JfcG9zaXRp
b24gKHN0cnVjdCB0cmVlX2JhbGFuY2UgKiB0YiwgaW50IGgpOwppbnQgZ2V0X3JpZ2h0X25laWdo
Ym9yX3Bvc2l0aW9uIChzdHJ1Y3QgdHJlZV9iYWxhbmNlICogdGIsIGludCBoKTsKdm9pZCByZXBs
YWNlX2tleSAoc3RydWN0IHRyZWVfYmFsYW5jZSAqIHRiLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiwg
aW50LCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiwgaW50KTsKdm9pZCByZXBsYWNlX2xrZXkgKHN0cnVj
dCB0cmVlX2JhbGFuY2UgKiwgaW50LCBzdHJ1Y3QgaXRlbV9oZWFkICopOwp2b2lkIHJlcGxhY2Vf
cmtleSAoc3RydWN0IHRyZWVfYmFsYW5jZSAqLCBpbnQsIHN0cnVjdCBpdGVtX2hlYWQgKik7CnZv
aWQgbWFrZV9lbXB0eV9ub2RlIChzdHJ1Y3QgYnVmZmVyX2luZm8gKik7CnN0cnVjdCBidWZmZXJf
aGVhZCAqIGdldF9GRUIgKHN0cnVjdCB0cmVlX2JhbGFuY2UgKik7CgogCmludCBpc19yZXVzYWJs
ZSAoc3RydWN0IHN1cGVyX2Jsb2NrICogcywgdW5zaWduZWQgbG9uZyBibG9jaywgaW50IGJpdF92
YWx1ZSk7CnZvaWQgcmVpc2VyZnNfZnJlZV9ibG9jayAoc3RydWN0IHJlaXNlcmZzX3RyYW5zYWN0
aW9uX2hhbmRsZSAqdGgsIHVuc2lnbmVkIGxvbmcpOwppbnQgcmVpc2VyZnNfbmV3X2Jsb2NrbnJz
IChzdHJ1Y3QgcmVpc2VyZnNfdHJhbnNhY3Rpb25faGFuZGxlICp0aCwKCQkJICAgdW5zaWduZWQg
bG9uZyAqIHBibG9ja25ycywgdW5zaWduZWQgbG9uZyBzdGFydF9mcm9tLCBpbnQgYW1vdW50X25l
ZWRlZCk7CmludCByZWlzZXJmc19uZXdfdW5mX2Jsb2NrbnJzIChzdHJ1Y3QgcmVpc2VyZnNfdHJh
bnNhY3Rpb25faGFuZGxlICp0aCwKCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgKiBwYmxvY2tuciwg
dW5zaWduZWQgbG9uZyBzdGFydF9mcm9tKTsKIyAxOTUzICIvdG1wL2J1aWxkLXJlaXNlcmZzLTMu
Ni4yNS1zMzkwLTEvcmVpc2VyZnNfdXRpbHMtMy42LjI1LWZzY2stMy54LjBiL3V0aWxzL2luY2x1
ZGUvcmVpc2VyZnNfZnMuaCIKCgogCl9fdTMyIGtleWVkX2hhc2ggKGNvbnN0IGNoYXIgKm1zZywg
aW50IGxlbik7Cl9fdTMyIHl1cmFfaGFzaCAoY29uc3QgY2hhciAqbXNnLCBpbnQgbGVuKTsKX191
MzIgcjVfaGFzaCAoY29uc3QgY2hhciAqbXNnLCBpbnQgbGVuKTsKCiAKY2hhciAqcmVpc2VyZnNf
Z2V0X3ZlcnNpb25fc3RyaW5nKHZvaWQpIDsKCiAKCgoKCgoKCgoKIAogCiAKIAoKIyAyMDA3ICIv
dG1wL2J1aWxkLXJlaXNlcmZzLTMuNi4yNS1zMzkwLTEvcmVpc2VyZnNfdXRpbHMtMy42LjI1LWZz
Y2stMy54LjBiL3V0aWxzL2luY2x1ZGUvcmVpc2VyZnNfZnMuaCIKCgpleHRlcm4gX19pbmxpbmVf
XyBpbnQgZmluZF9uZXh0X25vbnplcm9fYml0KHZvaWQgKiBhZGRyLCB1bnNpZ25lZCBzaXplLCB1
bnNpZ25lZCBvZmZzZXQpCnsKCXVuc2lnbmVkIGludCAqIHAgPSAoKHVuc2lnbmVkIGludCAqKSBh
ZGRyKSArIChvZmZzZXQgPj4gNSk7Cgl1bnNpZ25lZCBpbnQgcmVzdWx0ID0gb2Zmc2V0ICYgfjMx
VUw7Cgl1bnNpZ25lZCBpbnQgdG1wOwoKCWlmIChvZmZzZXQgPj0gc2l6ZSkKCQlyZXR1cm4gc2l6
ZTsKCXNpemUgLT0gcmVzdWx0OwoJb2Zmc2V0ICY9IDMxVUw7CglpZiAob2Zmc2V0KSB7CgkJdG1w
ID0gKnArKzsKCQkgCgkJdG1wICY9IH4ofjBVTCA+PiAoMzItb2Zmc2V0KSk7CgkJaWYgKHNpemUg
PCAzMikKCQkJZ290byBmb3VuZF9maXJzdDsKCQlpZiAodG1wICE9IDBVKQoJCQlnb3RvIGZvdW5k
X21pZGRsZTsKCQlzaXplIC09IDMyOwoJCXJlc3VsdCArPSAzMjsKCX0KCXdoaWxlIChzaXplID49
IDMyKSB7CgkJaWYgKCh0bXAgPSAqcCsrKSAhPSAwVSkKCQkJZ290byBmb3VuZF9taWRkbGU7CgkJ
cmVzdWx0ICs9IDMyOwoJCXNpemUgLT0gMzI7Cgl9CglpZiAoIXNpemUpCgkJcmV0dXJuIHJlc3Vs
dDsKCXRtcCA9ICpwOwpmb3VuZF9maXJzdDoKZm91bmRfbWlkZGxlOgoJcmV0dXJuIHJlc3VsdCAr
IGZmcyh0bXApOwp9CgoKCgoKIAoKCgoKCgoKCmV4dGVybiBpbmxpbmUgdW5zaWduZWQgbG9uZyBy
ZWlzZXJmc19nZXRfam91cm5hbF9ibG9jayhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnMpIHsKICAgIHJl
dHVybiAoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTMyKSggKCAoKCBzICktPnUucmVpc2VyZnNf
c2Iuc19ycykgLT5zX2pvdXJuYWxfYmxvY2sgKSApKSA/ICgoX191MzIpKCAoKChfX3UzMikoICgg
KCAoKCBzICktPnUucmVpc2VyZnNfc2Iuc19ycykgLT5zX2pvdXJuYWxfYmxvY2sgKSApICkgJiAo
X191MzIpMHgwMDAwMDBmZlVMKSA8PCAyNCkgfCAoKChfX3UzMikoICggKCAoKCBzICktPnUucmVp
c2VyZnNfc2Iuc19ycykgLT5zX2pvdXJuYWxfYmxvY2sgKSApICkgJiAoX191MzIpMHgwMDAwZmYw
MFVMKSA8PCAgOCkgfCAoKChfX3UzMikoICggKCAoKCBzICktPnUucmVpc2VyZnNfc2Iuc19ycykg
LT5zX2pvdXJuYWxfYmxvY2sgKSApICkgJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiAgOCkgfCAo
KChfX3UzMikoICggKCAoKCBzICktPnUucmVpc2VyZnNfc2Iuc19ycykgLT5zX2pvdXJuYWxfYmxv
Y2sgKSApICkgJiAoX191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkgKSkgIDogX19mc3dhYjMyKCgg
KCAoKCBzICktPnUucmVpc2VyZnNfc2Iuc19ycykgLT5zX2pvdXJuYWxfYmxvY2sgKSApKSkgICA7
Cn0KZXh0ZXJuIGlubGluZSB1bnNpZ25lZCBsb25nIHJlaXNlcmZzX2dldF9qb3VybmFsX29yaWdf
c2l6ZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnMpIHsKICAgIHJldHVybiAoX19idWlsdGluX2NvbnN0
YW50X3AoKF9fdTMyKSggKCAoKCBzICktPnUucmVpc2VyZnNfc2Iuc19ycykgLT5zX29yaWdfam91
cm5hbF9zaXplICkgKSkgPyAoKF9fdTMyKSggKCgoX191MzIpKCAoICggKCggcyApLT51LnJlaXNl
cmZzX3NiLnNfcnMpIC0+c19vcmlnX2pvdXJuYWxfc2l6ZSApICkgKSAmIChfX3UzMikweDAwMDAw
MGZmVUwpIDw8IDI0KSB8ICgoKF9fdTMyKSggKCAoICgoIHMgKS0+dS5yZWlzZXJmc19zYi5zX3Jz
KSAtPnNfb3JpZ19qb3VybmFsX3NpemUgKSApICkgJiAoX191MzIpMHgwMDAwZmYwMFVMKSA8PCAg
OCkgfCAoKChfX3UzMikoICggKCAoKCBzICktPnUucmVpc2VyZnNfc2Iuc19ycykgLT5zX29yaWdf
am91cm5hbF9zaXplICkgKSApICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gIDgpIHwgKCgoX191
MzIpKCAoICggKCggcyApLT51LnJlaXNlcmZzX3NiLnNfcnMpIC0+c19vcmlnX2pvdXJuYWxfc2l6
ZSApICkgKSAmIChfX3UzMikweGZmMDAwMDAwVUwpID4+IDI0KSApKSAgOiBfX2Zzd2FiMzIoKCAo
ICgoIHMgKS0+dS5yZWlzZXJmc19zYi5zX3JzKSAtPnNfb3JpZ19qb3VybmFsX3NpemUgKSApKSkg
ICA7Cn0KCiAKaW50IHJlaXNlcmZzX2lvY3RsIChzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwgc3RydWN0
IGZpbGUgKiBmaWxwLCAKIAkJICAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJn
KTsKaW50IHJlaXNlcmZzX3VucGFjayAoc3RydWN0IGlub2RlICogaW5vZGUsIHN0cnVjdCBmaWxl
ICogZmlscCk7CiAKIAoKIAkJCSAgICAgICAgIAoKCgojIDI3ICJta3JlaXNlcmZzLmMiIDIKCgoK
CgoKCgoKCnN0cnVjdCBidWZmZXJfaGVhZCAqIGdfc2JfYmg7CnN0cnVjdCBidWZmZXJfaGVhZCAq
IGdfcmJfYmg7CgoKaW50IGdfYmxvY2tfc2l6ZSA9IDQwOTYgOwppbnQgZ19qb3VybmFsX3NpemUg
PSA4MTkyIDsKaW50IGdfaGFzaCA9IDMgIDsKaW50IGdfYmxvY2tfbnVtYmVyOwppbnQgZ19ibG9j
a3Nfb25fZGV2aWNlOwpzdHJ1Y3QgYnVmZmVyX2hlYWQgKiogZ19ibWFwOwoKCiAKCgppbnQgdmFs
aWRfb2Zmc2V0KCBpbnQgZmQsIGxvZmZfdCBvZmZzZXQgKQp7CiAgICBjaGFyIGNoOwoKICAgIGlm
IChyZWlzZXJmc19sbHNlZWsgKGZkLCBvZmZzZXQsIDApIDwgMCkKCXJldHVybiAwOwoKICAgIGlm
IChyZWFkIChmZCwgJmNoLCAxKSA8IDEpCglyZXR1cm4gMDsKCiAgICByZXR1cm4gMTsKfQoKCiAK
dW5zaWduZWQgbG9uZyBjb3VudF9ibG9ja3MgKGNoYXIgKiBmaWxlbmFtZSwgaW50IGJsb2Nrc2l6
ZSkKewogICAgbG9mZl90IGhpZ2gsIGxvdzsKICAgIGludCBmZDsKCiAgICBmZCA9IG9wZW4gKGZp
bGVuYW1lLCAwMCApOwogICAgaWYgKGZkIDwgMCkKCWRpZSAoImNvdW50X2Jsb2Nrczogb3BlbiBm
YWlsZWQgKCVzKSIsIHN0cmVycm9yICgoKl9fZXJybm9fbG9jYXRpb24gKCkpICkpOwoKCgogICAg
ewoJbG9uZyBzaXplOwogICAgCglpZiAoaW9jdGwgKGZkLCAoKCggMFUgICkgIDw8ICgoKDAgKyA4
ICkgKyA4ICkgKyAxNCApICkgfCAoKCAoIDB4MTIgKSApIDw8ICgwICsgOCApICkgfCAoKCAoICA5
NiApICkgICA8PCAwICkgfCAoKCAwICkgPDwgKCgwICsgOCApICsgOCApICkpICAgLCAmc2l6ZSkg
Pj0gMCkgewoJICAgIGNsb3NlIChmZCk7CgkgICAgcmV0dXJuICBzaXplIC8gKGJsb2Nrc2l6ZSAv
IDUxMik7Cgl9CiAgICB9CgoKICAgIGxvdyA9IDA7CiAgICBmb3IoIGhpZ2ggPSAxOyB2YWxpZF9v
ZmZzZXQgKGZkLCBoaWdoKTsgaGlnaCAqPSAyICkKCWxvdyA9IGhpZ2g7CiAgICB3aGlsZSAobG93
IDwgaGlnaCAtIDEpIHsKCWNvbnN0IGxvZmZfdCBtaWQgPSAoIGxvdyArIGhpZ2ggKSAvIDI7CiAg
ICAgIAoJaWYgKHZhbGlkX29mZnNldCAoZmQsIG1pZCkpCgkgICAgbG93ID0gbWlkOwoJZWxzZQoJ
ICAgIGhpZ2ggPSBtaWQ7CiAgICB9CiAgICB2YWxpZF9vZmZzZXQgKGZkLCAwKTsKICAgIGNsb3Nl
IChmZCk7CiAgCiAgICByZXR1cm4gKGxvdyArIDEpIC8gKGJsb2Nrc2l6ZSk7Cn0KCgpzdGF0aWMg
dm9pZCBtYXJrX2Jsb2NrX3VzZWQgKGJfYmxvY2tucl90IGJsb2NrLCBzdHJ1Y3QgYnVmZmVyX2hl
YWQgKiogYm1hcCkKewogICAgaW50IGksIGo7CgogICAgaSA9IGJsb2NrIC8gKGdfYmxvY2tfc2l6
ZSAqIDgpOwogICAgaiA9IGJsb2NrICUgKGdfYmxvY2tfc2l6ZSAqIDgpOwogICAgcmVpc2VyZnNf
cHJvZ3Nfc2V0X2xlX2JpdCAoaiwgYm1hcFtpXS0+Yl9kYXRhKTsKICAgIG1hcmtfYnVmZmVyX2Rp
cnR5IChibWFwW2ldLCAwKTsKfQoKCnN0YXRpYyB2b2lkIG1ha2Vfc3VwZXJfYmxvY2sgKGludCBk
ZXYpCnsKICAgIHN0cnVjdCByZWlzZXJmc19zdXBlcl9ibG9jayAqIHNiOwogICAgX191MzIgKiBv
aWRzOwogICAgYl9ibG9ja25yX3QgYmxvY2tucjsKICAgIGludCBpOwogIAogICAgaWYgKChzaXpl
b2Yoc3RydWN0IHJlaXNlcmZzX3N1cGVyX2Jsb2NrKSkgID4gZ19ibG9ja19zaXplIHx8IGdfYmxv
Y2tfc2l6ZSA+ICg2NCAqIDEwMjQpICkKCWRpZSAoIm1rcmVpc2VyZnM6IGJsb2Nrc2l6ZSAoJWQp
IHRvbyBzbWFsbCBvciB0b28gYmlnIiwgZ19ibG9ja19zaXplKTsKICAgIAogICAgYmxvY2tuciA9
ICg2NCAqIDEwMjQpICAvIGdfYmxvY2tfc2l6ZTsKCiAgICAgCiAgICBnX3NiX2JoID0gZ2V0Ymxr
IChkZXYsIGJsb2NrbnIsIGdfYmxvY2tfc2l6ZSk7CiAgICBzYiA9IChzdHJ1Y3QgcmVpc2VyZnNf
c3VwZXJfYmxvY2sgKilnX3NiX2JoLT5iX2RhdGE7CgogICAgKF9fZXh0ZW5zaW9uX18gKF9fYnVp
bHRpbl9jb25zdGFudF9wICggIGdfYmxvY2tfc2l6ZSApICYmICggIGdfYmxvY2tfc2l6ZSApIDw9
IDE2CT8gKCggIGdfYmxvY2tfc2l6ZSApID09IDEJPyAoeyB2b2lkICpfX3MgPSAoICBnX3NiX2Jo
LT5iX2RhdGEgICk7CSooKF9fdWludDhfdCAqKSBfX3MpID0gKF9fdWludDhfdCkgICAgIDAgIDsg
X19zOyB9KSAJOiAoeyB2b2lkICpfX3MgPSAoICBnX3NiX2JoLT5iX2RhdGEgICk7CXVuaW9uIHsJ
dW5zaWduZWQgaW50IF9fdWk7CXVuc2lnbmVkIHNob3J0IGludCBfX3VzaTsJdW5zaWduZWQgY2hh
ciBfX3VjOwl9ICpfX3UgPSBfX3M7CV9fdWludDhfdCBfX2MgPSAoX191aW50OF90KSAoICAgIDAg
ICk7CXN3aXRjaCAoKHVuc2lnbmVkIGludCkgKCAgICBnX2Jsb2NrX3NpemUgICkpCXsJY2FzZSAx
NToJX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsJX191ID0gX19leHRlbnNpb25fXyAoKHZv
aWQgKikgX191ICsgNCk7CWNhc2UgMTE6CV9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7CV9f
dSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwljYXNlIDc6CV9fdS0+X191aSA9
IF9fYyAqIDB4MDEwMTAxMDE7CV9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQp
OwljYXNlIDM6CV9fdS0+X191c2kgPSAodW5zaWduZWQgc2hvcnQgaW50KSBfX2MgKiAweDAxMDE7
CV9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOwlfX3UtPl9fdWMgPSAodW5z
aWduZWQgY2hhcikgX19jOwlicmVhazsJY2FzZSAxNDoJX191LT5fX3VpID0gX19jICogMHgwMTAx
MDEwMTsJX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CWNhc2UgMTA6CV9f
dS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7CV9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICop
IF9fdSArIDQpOwljYXNlIDY6CV9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7CV9fdSA9IF9f
ZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwljYXNlIDI6CV9fdS0+X191c2kgPSAodW5z
aWduZWQgc2hvcnQgaW50KSBfX2MgKiAweDAxMDE7CWJyZWFrOwljYXNlIDEzOglfX3UtPl9fdWkg
PSBfX2MgKiAweDAxMDEwMTAxOwlfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0
KTsJY2FzZSA5OglfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOwlfX3UgPSBfX2V4dGVuc2lv
bl9fICgodm9pZCAqKSBfX3UgKyA0KTsJY2FzZSA1OglfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEw
MTAxOwlfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsJY2FzZSAxOglfX3Ut
Pl9fdWMgPSAodW5zaWduZWQgY2hhcikgX19jOwlicmVhazsJY2FzZSAxNjoJX191LT5fX3VpID0g
X19jICogMHgwMTAxMDEwMTsJX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7
CWNhc2UgMTI6CV9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7CV9fdSA9IF9fZXh0ZW5zaW9u
X18gKCh2b2lkICopIF9fdSArIDQpOwljYXNlIDg6CV9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAx
MDE7CV9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwljYXNlIDQ6CV9fdS0+
X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7CWNhc2UgMDoJYnJlYWs7CX0JX19zOyB9KSApCTogKF9f
YnVpbHRpbl9jb25zdGFudF9wICggIDAgKSAmJiAoICAwICkgPT0gJ1wwJwk/ICh7IHZvaWQgKl9f
cyA9ICggZ19zYl9iaC0+Yl9kYXRhICk7IF9fYnVpbHRpbl9tZW1zZXQgKCBfX3MgLCAnXDAnLCAg
ICAgZ19ibG9ja19zaXplICApIDsgX19zOyB9KQk6IG1lbXNldCAoIGdfc2JfYmgtPmJfZGF0YSAs
ICAgMCAsICAgZ19ibG9ja19zaXplICkpKSkgIDsKCiAgICBzYi0+c19ibG9ja19jb3VudCA9IChf
X2J1aWx0aW5fY29uc3RhbnRfcCgoX191MzIpKCAoIGdfYmxvY2tfbnVtYmVyICkgKSkgPyAoKF9f
dTMyKSggKCgoX191MzIpKCAoICggZ19ibG9ja19udW1iZXIgKSApICkgJiAoX191MzIpMHgwMDAw
MDBmZlVMKSA8PCAyNCkgfCAoKChfX3UzMikoICggKCBnX2Jsb2NrX251bWJlciApICkgKSAmIChf
X3UzMikweDAwMDBmZjAwVUwpIDw8ICA4KSB8ICgoKF9fdTMyKSggKCAoIGdfYmxvY2tfbnVtYmVy
ICkgKSApICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gIDgpIHwgKCgoX191MzIpKCAoICggZ19i
bG9ja19udW1iZXIgKSApICkgJiAoX191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkgKSkgIDogX19m
c3dhYjMyKCggKCBnX2Jsb2NrX251bWJlciApICkpKSAgOwkgCiAgICBzYi0+c19ibWFwX25yID0g
KF9fYnVpbHRpbl9jb25zdGFudF9wKChfX3UxNikoICggKGdfYmxvY2tfbnVtYmVyICsgKGdfYmxv
Y2tfc2l6ZSAqIDggLSAxKSkgLyAoZ19ibG9ja19zaXplICogOCkgKSApKSA/ICgoX191MTYpKCAo
KChfX3UxNikoICggKCAoZ19ibG9ja19udW1iZXIgKyAoZ19ibG9ja19zaXplICogOCAtIDEpKSAv
IChnX2Jsb2NrX3NpemUgKiA4KSApICkgKSAmIChfX3UxNikweDAwZmZVKSA8PCA4KSB8ICgoKF9f
dTE2KSggKCAoIChnX2Jsb2NrX251bWJlciArIChnX2Jsb2NrX3NpemUgKiA4IC0gMSkpIC8gKGdf
YmxvY2tfc2l6ZSAqIDgpICkgKSApICYgKF9fdTE2KTB4ZmYwMFUpID4+IDgpICkpICA6IF9fZnN3
YWIxNigoICggKGdfYmxvY2tfbnVtYmVyICsgKGdfYmxvY2tfc2l6ZSAqIDggLSAxKSkgLyAoZ19i
bG9ja19zaXplICogOCkgKSApKSkgIDsgCgogICAgIAogICAgc2ItPnNfZnJlZV9ibG9ja3MgPSAo
X19idWlsdGluX2NvbnN0YW50X3AoKF9fdTMyKSggKCBnX2Jsb2NrX251bWJlciAtIGJsb2NrbnIg
LQoJCQkJICAgICAxICAtIGdfam91cm5hbF9zaXplIC0gMSAKCQkJCSAgICAgLSAoX19idWlsdGlu
X2NvbnN0YW50X3AoKF9fdTE2KSggKCBzYi0+c19ibWFwX25yICkgKSkgPyAoKF9fdTE2KSggKCgo
X191MTYpKCAoICggc2ItPnNfYm1hcF9uciApICkgKSAmIChfX3UxNikweDAwZmZVKSA8PCA4KSB8
ICgoKF9fdTE2KSggKCAoIHNiLT5zX2JtYXBfbnIgKSApICkgJiAoX191MTYpMHhmZjAwVSkgPj4g
OCkgKSkgIDogX19mc3dhYjE2KCggKCBzYi0+c19ibWFwX25yICkgKSkpICAgLSAxICApICkpID8g
KChfX3UzMikoICgoKF9fdTMyKSggKCAoIGdfYmxvY2tfbnVtYmVyIC0gYmxvY2tuciAtIAkJCQkg
ICAgIDEgIC0gZ19qb3VybmFsX3NpemUgLSAxICAJCQkJICAgICAtIChfX2J1aWx0aW5fY29uc3Rh
bnRfcCgoX191MTYpKCAoIHNiLT5zX2JtYXBfbnIgKSApKSA/ICgoX191MTYpKCAoKChfX3UxNiko
ICggKCBzYi0+c19ibWFwX25yICkgKSApICYgKF9fdTE2KTB4MDBmZlUpIDw8IDgpIHwgKCgoX191
MTYpKCAoICggc2ItPnNfYm1hcF9uciApICkgKSAmIChfX3UxNikweGZmMDBVKSA+PiA4KSApKSAg
OiBfX2Zzd2FiMTYoKCAoIHNiLT5zX2JtYXBfbnIgKSApKSkgICAtIDEgICkgKSApICYgKF9fdTMy
KTB4MDAwMDAwZmZVTCkgPDwgMjQpIHwgKCgoX191MzIpKCAoICggZ19ibG9ja19udW1iZXIgLSBi
bG9ja25yIC0gCQkJCSAgICAgMSAgLSBnX2pvdXJuYWxfc2l6ZSAtIDEgIAkJCQkgICAgIC0gKF9f
YnVpbHRpbl9jb25zdGFudF9wKChfX3UxNikoICggc2ItPnNfYm1hcF9uciApICkpID8gKChfX3Ux
NikoICgoKF9fdTE2KSggKCAoIHNiLT5zX2JtYXBfbnIgKSApICkgJiAoX191MTYpMHgwMGZmVSkg
PDwgOCkgfCAoKChfX3UxNikoICggKCBzYi0+c19ibWFwX25yICkgKSApICYgKF9fdTE2KTB4ZmYw
MFUpID4+IDgpICkpICA6IF9fZnN3YWIxNigoICggc2ItPnNfYm1hcF9uciApICkpKSAgIC0gMSAg
KSApICkgJiAoX191MzIpMHgwMDAwZmYwMFVMKSA8PCAgOCkgfCAoKChfX3UzMikoICggKCBnX2Js
b2NrX251bWJlciAtIGJsb2NrbnIgLSAJCQkJICAgICAxICAtIGdfam91cm5hbF9zaXplIC0gMSAg
CQkJCSAgICAgLSAoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTE2KSggKCBzYi0+c19ibWFwX25y
ICkgKSkgPyAoKF9fdTE2KSggKCgoX191MTYpKCAoICggc2ItPnNfYm1hcF9uciApICkgKSAmIChf
X3UxNikweDAwZmZVKSA8PCA4KSB8ICgoKF9fdTE2KSggKCAoIHNiLT5zX2JtYXBfbnIgKSApICkg
JiAoX191MTYpMHhmZjAwVSkgPj4gOCkgKSkgIDogX19mc3dhYjE2KCggKCBzYi0+c19ibWFwX25y
ICkgKSkpICAgLSAxICApICkgKSAmIChfX3UzMikweDAwZmYwMDAwVUwpID4+ICA4KSB8ICgoKF9f
dTMyKSggKCAoIGdfYmxvY2tfbnVtYmVyIC0gYmxvY2tuciAtIAkJCQkgICAgIDEgIC0gZ19qb3Vy
bmFsX3NpemUgLSAxICAJCQkJICAgICAtIChfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191MTYpKCAo
IHNiLT5zX2JtYXBfbnIgKSApKSA/ICgoX191MTYpKCAoKChfX3UxNikoICggKCBzYi0+c19ibWFw
X25yICkgKSApICYgKF9fdTE2KTB4MDBmZlUpIDw8IDgpIHwgKCgoX191MTYpKCAoICggc2ItPnNf
Ym1hcF9uciApICkgKSAmIChfX3UxNikweGZmMDBVKSA+PiA4KSApKSAgOiBfX2Zzd2FiMTYoKCAo
IHNiLT5zX2JtYXBfbnIgKSApKSkgICAtIDEgICkgKSApICYgKF9fdTMyKTB4ZmYwMDAwMDBVTCkg
Pj4gMjQpICkpICA6IF9fZnN3YWIzMigoICggZ19ibG9ja19udW1iZXIgLSBibG9ja25yIC0gCQkJ
CSAgICAgMSAgLSBnX2pvdXJuYWxfc2l6ZSAtIDEgIAkJCQkgICAgIC0gKF9fYnVpbHRpbl9jb25z
dGFudF9wKChfX3UxNikoICggc2ItPnNfYm1hcF9uciApICkpID8gKChfX3UxNikoICgoKF9fdTE2
KSggKCAoIHNiLT5zX2JtYXBfbnIgKSApICkgJiAoX191MTYpMHgwMGZmVSkgPDwgOCkgfCAoKChf
X3UxNikoICggKCBzYi0+c19ibWFwX25yICkgKSApICYgKF9fdTE2KTB4ZmYwMFUpID4+IDgpICkp
ICA6IF9fZnN3YWIxNigoICggc2ItPnNfYm1hcF9uciApICkpKSAgIC0gMSAgKSApKSkgIDsKICAg
ICAKCiAgICBzYi0+c19yb290X2Jsb2NrID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKChfX3UzMiko
ICggYmxvY2tuciArIDEgKyAxICsgZ19qb3VybmFsX3NpemUgKyAxICkgKSkgPyAoKF9fdTMyKSgg
KCgoX191MzIpKCAoICggYmxvY2tuciArIDEgKyAxICsgZ19qb3VybmFsX3NpemUgKyAxICkgKSAp
ICYgKF9fdTMyKTB4MDAwMDAwZmZVTCkgPDwgMjQpIHwgKCgoX191MzIpKCAoICggYmxvY2tuciAr
IDEgKyAxICsgZ19qb3VybmFsX3NpemUgKyAxICkgKSApICYgKF9fdTMyKTB4MDAwMGZmMDBVTCkg
PDwgIDgpIHwgKCgoX191MzIpKCAoICggYmxvY2tuciArIDEgKyAxICsgZ19qb3VybmFsX3NpemUg
KyAxICkgKSApICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gIDgpIHwgKCgoX191MzIpKCAoICgg
YmxvY2tuciArIDEgKyAxICsgZ19qb3VybmFsX3NpemUgKyAxICkgKSApICYgKF9fdTMyKTB4ZmYw
MDAwMDBVTCkgPj4gMjQpICkpICA6IF9fZnN3YWIzMigoICggYmxvY2tuciArIDEgKyAxICsgZ19q
b3VybmFsX3NpemUgKyAxICkgKSkpICA7CiAgCiAgICBzYi0+c192ZXJzaW9uID0gKF9fYnVpbHRp
bl9jb25zdGFudF9wKChfX3UxNikoICggMiAgKSApKSA/ICgoX191MTYpKCAoKChfX3UxNikoICgg
KCAyICApICkgKSAmIChfX3UxNikweDAwZmZVKSA8PCA4KSB8ICgoKF9fdTE2KSggKCAoIDIgICkg
KSApICYgKF9fdTE2KTB4ZmYwMFUpID4+IDgpICkpICA6IF9fZnN3YWIxNigoICggMiAgKSApKSkg
IDsKICAgIHNiLT5zX2Jsb2Nrc2l6ZSA9IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191MTYpKCAo
IGdfYmxvY2tfc2l6ZSApICkpID8gKChfX3UxNikoICgoKF9fdTE2KSggKCAoIGdfYmxvY2tfc2l6
ZSApICkgKSAmIChfX3UxNikweDAwZmZVKSA8PCA4KSB8ICgoKF9fdTE2KSggKCAoIGdfYmxvY2tf
c2l6ZSApICkgKSAmIChfX3UxNikweGZmMDBVKSA+PiA4KSApKSAgOiBfX2Zzd2FiMTYoKCAoIGdf
YmxvY2tfc2l6ZSApICkpKSAgOwogICAgc2ItPnNfc3RhdGUgPSAoX19idWlsdGluX2NvbnN0YW50
X3AoKF9fdTE2KSggKCAxICApICkpID8gKChfX3UxNikoICgoKF9fdTE2KSggKCAoIDEgICkgKSAp
ICYgKF9fdTE2KTB4MDBmZlUpIDw8IDgpIHwgKCgoX191MTYpKCAoICggMSAgKSApICkgJiAoX191
MTYpMHhmZjAwVSkgPj4gOCkgKSkgIDogX19mc3dhYjE2KCggKCAxICApICkpKSAgOwogICAgc2It
PnNfdHJlZV9oZWlnaHQgPSAoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTE2KSggKCAyICkgKSkg
PyAoKF9fdTE2KSggKCgoX191MTYpKCAoICggMiApICkgKSAmIChfX3UxNikweDAwZmZVKSA8PCA4
KSB8ICgoKF9fdTE2KSggKCAoIDIgKSApICkgJiAoX191MTYpMHhmZjAwVSkgPj4gOCkgKSkgIDog
X19mc3dhYjE2KCggKCAyICkgKSkpICA7CiAgICBzYi0+c19qb3VybmFsX2RldiA9IChfX2J1aWx0
aW5fY29uc3RhbnRfcCgoX191MzIpKCAoIDAgKSApKSA/ICgoX191MzIpKCAoKChfX3UzMikoICgg
KCAwICkgKSApICYgKF9fdTMyKTB4MDAwMDAwZmZVTCkgPDwgMjQpIHwgKCgoX191MzIpKCAoICgg
MCApICkgKSAmIChfX3UzMikweDAwMDBmZjAwVUwpIDw8ICA4KSB8ICgoKF9fdTMyKSggKCAoIDAg
KSApICkgJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiAgOCkgfCAoKChfX3UzMikoICggKCAwICkg
KSApICYgKF9fdTMyKTB4ZmYwMDAwMDBVTCkgPj4gMjQpICkpICA6IF9fZnN3YWIzMigoICggMCAp
ICkpKSAgIDsKICAgIHNiLT5zX29yaWdfam91cm5hbF9zaXplID0gKF9fYnVpbHRpbl9jb25zdGFu
dF9wKChfX3UzMikoICggZ19qb3VybmFsX3NpemUgKSApKSA/ICgoX191MzIpKCAoKChfX3UzMiko
ICggKCBnX2pvdXJuYWxfc2l6ZSApICkgKSAmIChfX3UzMikweDAwMDAwMGZmVUwpIDw8IDI0KSB8
ICgoKF9fdTMyKSggKCAoIGdfam91cm5hbF9zaXplICkgKSApICYgKF9fdTMyKTB4MDAwMGZmMDBV
TCkgPDwgIDgpIHwgKCgoX191MzIpKCAoICggZ19qb3VybmFsX3NpemUgKSApICkgJiAoX191MzIp
MHgwMGZmMDAwMFVMKSA+PiAgOCkgfCAoKChfX3UzMikoICggKCBnX2pvdXJuYWxfc2l6ZSApICkg
KSAmIChfX3UzMikweGZmMDAwMDAwVUwpID4+IDI0KSApKSAgOiBfX2Zzd2FiMzIoKCAoIGdfam91
cm5hbF9zaXplICkgKSkpICAgOwogICAgc2ItPnNfam91cm5hbF90cmFuc19tYXggPSAoX19idWls
dGluX2NvbnN0YW50X3AoKF9fdTMyKSggKCAwICkgKSkgPyAoKF9fdTMyKSggKCgoX191MzIpKCAo
ICggMCApICkgKSAmIChfX3UzMikweDAwMDAwMGZmVUwpIDw8IDI0KSB8ICgoKF9fdTMyKSggKCAo
IDAgKSApICkgJiAoX191MzIpMHgwMDAwZmYwMFVMKSA8PCAgOCkgfCAoKChfX3UzMikoICggKCAw
ICkgKSApICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gIDgpIHwgKCgoX191MzIpKCAoICggMCAp
ICkgKSAmIChfX3UzMikweGZmMDAwMDAwVUwpID4+IDI0KSApKSAgOiBfX2Zzd2FiMzIoKCAoIDAg
KSApKSkgICA7CiAgICBzYi0+c19qb3VybmFsX2Jsb2NrX2NvdW50ID0gKF9fYnVpbHRpbl9jb25z
dGFudF9wKChfX3UzMikoICggMCApICkpID8gKChfX3UzMikoICgoKF9fdTMyKSggKCAoIDAgKSAp
ICkgJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAyNCkgfCAoKChfX3UzMikoICggKCAwICkgKSAp
ICYgKF9fdTMyKTB4MDAwMGZmMDBVTCkgPDwgIDgpIHwgKCgoX191MzIpKCAoICggMCApICkgKSAm
IChfX3UzMikweDAwZmYwMDAwVUwpID4+ICA4KSB8ICgoKF9fdTMyKSggKCAoIDAgKSApICkgJiAo
X191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkgKSkgIDogX19mc3dhYjMyKCggKCAwICkgKSkpICAg
OwogICAgc2ItPnNfam91cm5hbF9tYXhfYmF0Y2ggPSAoX19idWlsdGluX2NvbnN0YW50X3AoKF9f
dTMyKSggKCAwICkgKSkgPyAoKF9fdTMyKSggKCgoX191MzIpKCAoICggMCApICkgKSAmIChfX3Uz
MikweDAwMDAwMGZmVUwpIDw8IDI0KSB8ICgoKF9fdTMyKSggKCAoIDAgKSApICkgJiAoX191MzIp
MHgwMDAwZmYwMFVMKSA8PCAgOCkgfCAoKChfX3UzMikoICggKCAwICkgKSApICYgKF9fdTMyKTB4
MDBmZjAwMDBVTCkgPj4gIDgpIHwgKCgoX191MzIpKCAoICggMCApICkgKSAmIChfX3UzMikweGZm
MDAwMDAwVUwpID4+IDI0KSApKSAgOiBfX2Zzd2FiMzIoKCAoIDAgKSApKSkgICA7CiAgICBzYi0+
c19qb3VybmFsX21heF9jb21taXRfYWdlID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKChfX3UzMiko
ICggMCApICkpID8gKChfX3UzMikoICgoKF9fdTMyKSggKCAoIDAgKSApICkgJiAoX191MzIpMHgw
MDAwMDBmZlVMKSA8PCAyNCkgfCAoKChfX3UzMikoICggKCAwICkgKSApICYgKF9fdTMyKTB4MDAw
MGZmMDBVTCkgPDwgIDgpIHwgKCgoX191MzIpKCAoICggMCApICkgKSAmIChfX3UzMikweDAwZmYw
MDAwVUwpID4+ICA4KSB8ICgoKF9fdTMyKSggKCAoIDAgKSApICkgJiAoX191MzIpMHhmZjAwMDAw
MFVMKSA+PiAyNCkgKSkgIDogX19mc3dhYjMyKCggKCAwICkgKSkpICAgOwogICAgc2ItPnNfam91
cm5hbF9tYXhfdHJhbnNfYWdlID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKChfX3UzMikoICggMCAp
ICkpID8gKChfX3UzMikoICgoKF9fdTMyKSggKCAoIDAgKSApICkgJiAoX191MzIpMHgwMDAwMDBm
ZlVMKSA8PCAyNCkgfCAoKChfX3UzMikoICggKCAwICkgKSApICYgKF9fdTMyKTB4MDAwMGZmMDBV
TCkgPDwgIDgpIHwgKCgoX191MzIpKCAoICggMCApICkgKSAmIChfX3UzMikweDAwZmYwMDAwVUwp
ID4+ICA4KSB8ICgoKF9fdTMyKSggKCAoIDAgKSApICkgJiAoX191MzIpMHhmZjAwMDAwMFVMKSA+
PiAyNCkgKSkgIDogX19mc3dhYjMyKCggKCAwICkgKSkpICAgOwogICAgbWVtY3B5IChzYi0+c19t
YWdpYywgIlJlSXNFcjJGcyIgLCBzaXplb2YgKCJSZUlzRXIyRnMiICkpOwogICAgc2ItPnNfaGFz
aF9mdW5jdGlvbl9jb2RlID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKChfX3UzMikoICggZ19oYXNo
ICkgKSkgPyAoKF9fdTMyKSggKCgoX191MzIpKCAoICggZ19oYXNoICkgKSApICYgKF9fdTMyKTB4
MDAwMDAwZmZVTCkgPDwgMjQpIHwgKCgoX191MzIpKCAoICggZ19oYXNoICkgKSApICYgKF9fdTMy
KTB4MDAwMGZmMDBVTCkgPDwgIDgpIHwgKCgoX191MzIpKCAoICggZ19oYXNoICkgKSApICYgKF9f
dTMyKTB4MDBmZjAwMDBVTCkgPj4gIDgpIHwgKCgoX191MzIpKCAoICggZ19oYXNoICkgKSApICYg
KF9fdTMyKTB4ZmYwMDAwMDBVTCkgPj4gMjQpICkpICA6IF9fZnN3YWIzMigoICggZ19oYXNoICkg
KSkpICA7IAoKICAgICAKICAgIG9pZHMgPSAoX191MzIgKikoc2IgKyAxKTsKCiAgICBvaWRzWzBd
ID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKChfX3UzMikoICggMSApICkpID8gKChfX3UzMikoICgo
KF9fdTMyKSggKCAoIDEgKSApICkgJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAyNCkgfCAoKChf
X3UzMikoICggKCAxICkgKSApICYgKF9fdTMyKTB4MDAwMGZmMDBVTCkgPDwgIDgpIHwgKCgoX191
MzIpKCAoICggMSApICkgKSAmIChfX3UzMikweDAwZmYwMDAwVUwpID4+ICA4KSB8ICgoKF9fdTMy
KSggKCAoIDEgKSApICkgJiAoX191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkgKSkgIDogX19mc3dh
YjMyKCggKCAxICkgKSkpICA7CiAgICBvaWRzWzFdID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKChf
X3UzMikoICggMiAgKyAxICkgKSkgPyAoKF9fdTMyKSggKCgoX191MzIpKCAoICggMiAgKyAxICkg
KSApICYgKF9fdTMyKTB4MDAwMDAwZmZVTCkgPDwgMjQpIHwgKCgoX191MzIpKCAoICggMiAgKyAx
ICkgKSApICYgKF9fdTMyKTB4MDAwMGZmMDBVTCkgPDwgIDgpIHwgKCgoX191MzIpKCAoICggMiAg
KyAxICkgKSApICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gIDgpIHwgKCgoX191MzIpKCAoICgg
MiAgKyAxICkgKSApICYgKF9fdTMyKTB4ZmYwMDAwMDBVTCkgPj4gMjQpICkpICA6IF9fZnN3YWIz
MigoICggMiAgKyAxICkgKSkpICA7CSAKICAgIHNiLT5zX29pZF9jdXJzaXplID0gKF9fYnVpbHRp
bl9jb25zdGFudF9wKChfX3UxNikoICggMiApICkpID8gKChfX3UxNikoICgoKF9fdTE2KSggKCAo
IDIgKSApICkgJiAoX191MTYpMHgwMGZmVSkgPDwgOCkgfCAoKChfX3UxNikoICggKCAyICkgKSAp
ICYgKF9fdTE2KTB4ZmYwMFUpID4+IDgpICkpICA6IF9fZnN3YWIxNigoICggMiApICkpKSAgOwog
ICAgc2ItPnNfb2lkX21heHNpemUgPSAoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTE2KSggKCAo
Z19ibG9ja19zaXplIC0gKHNpemVvZihzdHJ1Y3QgcmVpc2VyZnNfc3VwZXJfYmxvY2spKSApIC8g
c2l6ZW9mIChfX3UzMikgLyAyICogMiApICkpID8gKChfX3UxNikoICgoKF9fdTE2KSggKCAoIChn
X2Jsb2NrX3NpemUgLSAoc2l6ZW9mKHN0cnVjdCByZWlzZXJmc19zdXBlcl9ibG9jaykpICkgLyBz
aXplb2YgKF9fdTMyKSAvIDIgKiAyICkgKSApICYgKF9fdTE2KTB4MDBmZlUpIDw8IDgpIHwgKCgo
X191MTYpKCAoICggKGdfYmxvY2tfc2l6ZSAtIChzaXplb2Yoc3RydWN0IHJlaXNlcmZzX3N1cGVy
X2Jsb2NrKSkgKSAvIHNpemVvZiAoX191MzIpIC8gMiAqIDIgKSApICkgJiAoX191MTYpMHhmZjAw
VSkgPj4gOCkgKSkgIDogX19mc3dhYjE2KCggKCAoZ19ibG9ja19zaXplIC0gKHNpemVvZihzdHJ1
Y3QgcmVpc2VyZnNfc3VwZXJfYmxvY2spKSApIC8gc2l6ZW9mIChfX3UzMikgLyAyICogMiApICkp
KSAgOwoKICAgIG1hcmtfYnVmZmVyX2RpcnR5IChnX3NiX2JoLCAwKTsKICAgIG1hcmtfYnVmZmVy
X3VwdG9kYXRlIChnX3NiX2JoLCAxKTsKCiAgICAgCiAgICBibG9ja25yICsrOwogICAgZ19ibWFw
ID0gKHN0cnVjdCBidWZmZXJfaGVhZCAqKilnZXRtZW0gKChfX2J1aWx0aW5fY29uc3RhbnRfcCgo
X191MTYpKCAoIHNiLT5zX2JtYXBfbnIgKSApKSA/ICgoX191MTYpKCAoKChfX3UxNikoICggKCBz
Yi0+c19ibWFwX25yICkgKSApICYgKF9fdTE2KTB4MDBmZlUpIDw8IDgpIHwgKCgoX191MTYpKCAo
ICggc2ItPnNfYm1hcF9uciApICkgKSAmIChfX3UxNikweGZmMDBVKSA+PiA4KSApKSAgOiBfX2Zz
d2FiMTYoKCAoIHNiLT5zX2JtYXBfbnIgKSApKSkgICAqIHNpemVvZiAoc3RydWN0IGJ1ZmZlcl9o
ZWFkICopKTsKICAgIGZvciAoaSA9IDA7IGkgPCBzYi0+c19ibWFwX25yOyBpICsrKSB7CglnX2Jt
YXBbaV0gPSBnZXRibGsgKGRldiwgYmxvY2tuciwgc2ItPnNfYmxvY2tzaXplKTsKCW1hcmtfYnVm
ZmVyX2RpcnR5IChnX2JtYXBbaV0sIDApOwoJbWFya19idWZmZXJfdXB0b2RhdGUgKGdfYm1hcFtp
XSwgMSk7CglibG9ja25yID0gKGkgKyAxKSAqIHNiLT5zX2Jsb2Nrc2l6ZSAqIDg7CiAgICB9Cgog
ICAgIAogICAgZm9yIChpID0gMDsgaSA8IGdfc2JfYmgtPmJfYmxvY2tucjsgaSArKykKCW1hcmtf
YmxvY2tfdXNlZCAoaSwgZ19ibWFwKTsKCiAgICAgCiAgICBtYXJrX2Jsb2NrX3VzZWQgKGkrKywg
Z19ibWFwKTsKCiAgICAgCiAgICBtYXJrX2Jsb2NrX3VzZWQgKGkrKywgZ19ibWFwKTsKICAKICAg
ICAgIAogCgogICAgc2ItPnNfam91cm5hbF9ibG9jayA9IChfX2J1aWx0aW5fY29uc3RhbnRfcCgo
X191MzIpKCAoIGkgKSApKSA/ICgoX191MzIpKCAoKChfX3UzMikoICggKCBpICkgKSApICYgKF9f
dTMyKTB4MDAwMDAwZmZVTCkgPDwgMjQpIHwgKCgoX191MzIpKCAoICggaSApICkgKSAmIChfX3Uz
MikweDAwMDBmZjAwVUwpIDw8ICA4KSB8ICgoKF9fdTMyKSggKCAoIGkgKSApICkgJiAoX191MzIp
MHgwMGZmMDAwMFVMKSA+PiAgOCkgfCAoKChfX3UzMikoICggKCBpICkgKSApICYgKF9fdTMyKTB4
ZmYwMDAwMDBVTCkgPj4gMjQpICkpICA6IF9fZnN3YWIzMigoICggaSApICkpKSAgOwogICAgZm9y
ICg7IGkgPD0gZ19zYl9iaC0+Yl9ibG9ja25yICsgMiArIGdfam91cm5hbF9zaXplOyBpICsrKQoJ
bWFya19ibG9ja191c2VkIChpLCBnX2JtYXApOwoKICAgICAKICAgIGlmIChpID49IGdfYmxvY2tf
c2l6ZSAqIDgpCglkaWUgKCJta3JlaXNlcmZzOiBKb3VybmFsIHRvbyBiaWciKTsKICAgICAKICAg
IGlmIChpICsgMTAwID4gZ19ibG9ja19udW1iZXIpCglkaWUgKCJta3JlaXNlcmZzOiBzaXplIG9m
IGZpbGUgc3lzdGVtIGlzIHRvbyBzbWFsbCIpOwogICAgIAogICAgbWFya19ibG9ja191c2VkIChp
LCBnX2JtYXApOwoKCiAgICAgCiAgICBmb3IgKGkgPSAxOyBpIDwgKF9fYnVpbHRpbl9jb25zdGFu
dF9wKChfX3UxNikoICggc2ItPnNfYm1hcF9uciApICkpID8gKChfX3UxNikoICgoKF9fdTE2KSgg
KCAoIHNiLT5zX2JtYXBfbnIgKSApICkgJiAoX191MTYpMHgwMGZmVSkgPDwgOCkgfCAoKChfX3Ux
NikoICggKCBzYi0+c19ibWFwX25yICkgKSApICYgKF9fdTE2KTB4ZmYwMFUpID4+IDgpICkpICA6
IF9fZnN3YWIxNigoICggc2ItPnNfYm1hcF9uciApICkpKSAgOyBpICsrKSB7CgltYXJrX2Jsb2Nr
X3VzZWQgKGkgKiBnX2Jsb2NrX3NpemUgKiA4LCBnX2JtYXApOwoJICAgCiAKICAgIH0KCiAgICAg
CiAgICBmb3IgKGkgPSBzYi0+c19ibWFwX25yICogc2ItPnNfYmxvY2tzaXplICogODsgLS1pID49
IHNiLT5zX2Jsb2NrX2NvdW50OyApCgltYXJrX2Jsb2NrX3VzZWQgKGksIGdfYm1hcCk7CgogICAg
cmV0dXJuOwp9CgoKdm9pZCB6ZXJvX2pvdXJuYWxfYmxvY2tzKGludCBkZXYsIGludCBzdGFydCwg
aW50IGxlbikgewogICAgaW50IGkgOwogICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCA7CiAgICBp
bnQgZG9uZSA9IDA7CgogICAgcHJpbnRmICgiSW5pdGlhbGl6aW5nIGpvdXJuYWwgLSAiKTsgZmZs
dXNoIChzdGRvdXQgKTsKCiAgICBmb3IgKGkgPSAwIDsgaSA8IGxlbiA7IGkrKykgewoJcHJpbnRf
aG93X2ZhciAoJmRvbmUsIGxlbik7CgliaCA9IGdldGJsayAoZGV2LCBzdGFydCArIGksIGdfYmxv
Y2tfc2l6ZSkgOwoJKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wICggIGdfYmxv
Y2tfc2l6ZSApICYmICggIGdfYmxvY2tfc2l6ZSApIDw9IDE2CT8gKCggIGdfYmxvY2tfc2l6ZSAp
ID09IDEJPyAoeyB2b2lkICpfX3MgPSAoICBiaC0+Yl9kYXRhICApOwkqKChfX3VpbnQ4X3QgKikg
X19zKSA9IChfX3VpbnQ4X3QpICAgICAwICA7IF9fczsgfSkgCTogKHsgdm9pZCAqX19zID0gKCAg
YmgtPmJfZGF0YSAgKTsJdW5pb24gewl1bnNpZ25lZCBpbnQgX191aTsJdW5zaWduZWQgc2hvcnQg
aW50IF9fdXNpOwl1bnNpZ25lZCBjaGFyIF9fdWM7CX0gKl9fdSA9IF9fczsJX191aW50OF90IF9f
YyA9IChfX3VpbnQ4X3QpICggICAgMCAgKTsJc3dpdGNoICgodW5zaWduZWQgaW50KSAoICAgIGdf
YmxvY2tfc2l6ZSAgKSkJewljYXNlIDE1OglfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOwlf
X3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsJY2FzZSAxMToJX191LT5fX3Vp
ID0gX19jICogMHgwMTAxMDEwMTsJX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsg
NCk7CWNhc2UgNzoJX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsJX191ID0gX19leHRlbnNp
b25fXyAoKHZvaWQgKikgX191ICsgNCk7CWNhc2UgMzoJX191LT5fX3VzaSA9ICh1bnNpZ25lZCBz
aG9ydCBpbnQpIF9fYyAqIDB4MDEwMTsJX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191
ICsgMik7CV9fdS0+X191YyA9ICh1bnNpZ25lZCBjaGFyKSBfX2M7CWJyZWFrOwljYXNlIDE0Oglf
X3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOwlfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAq
KSBfX3UgKyA0KTsJY2FzZSAxMDoJX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsJX191ID0g
X19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CWNhc2UgNjoJX191LT5fX3VpID0gX19j
ICogMHgwMTAxMDEwMTsJX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CWNh
c2UgMjoJX191LT5fX3VzaSA9ICh1bnNpZ25lZCBzaG9ydCBpbnQpIF9fYyAqIDB4MDEwMTsJYnJl
YWs7CWNhc2UgMTM6CV9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7CV9fdSA9IF9fZXh0ZW5z
aW9uX18gKCh2b2lkICopIF9fdSArIDQpOwljYXNlIDk6CV9fdS0+X191aSA9IF9fYyAqIDB4MDEw
MTAxMDE7CV9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwljYXNlIDU6CV9f
dS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7CV9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICop
IF9fdSArIDQpOwljYXNlIDE6CV9fdS0+X191YyA9ICh1bnNpZ25lZCBjaGFyKSBfX2M7CWJyZWFr
OwljYXNlIDE2OglfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOwlfX3UgPSBfX2V4dGVuc2lv
bl9fICgodm9pZCAqKSBfX3UgKyA0KTsJY2FzZSAxMjoJX191LT5fX3VpID0gX19jICogMHgwMTAx
MDEwMTsJX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CWNhc2UgODoJX191
LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsJX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikg
X191ICsgNCk7CWNhc2UgNDoJX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsJY2FzZSAwOgli
cmVhazsJfQlfX3M7IH0pICkJOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCAgMCApICYmICggIDAg
KSA9PSAnXDAnCT8gKHsgdm9pZCAqX19zID0gKCBiaC0+Yl9kYXRhICk7IF9fYnVpbHRpbl9tZW1z
ZXQgKCBfX3MgLCAnXDAnLCAgICAgZ19ibG9ja19zaXplICApIDsgX19zOyB9KQk6IG1lbXNldCAo
IGJoLT5iX2RhdGEgLCAgIDAgLCAgIGdfYmxvY2tfc2l6ZSApKSkpICA7CgltYXJrX2J1ZmZlcl9k
aXJ0eShiaCwwKSA7CgltYXJrX2J1ZmZlcl91cHRvZGF0ZShiaCwgMSkgOwoJYndyaXRlIChiaCk7
CglicmVsc2UoYmgpIDsKICAgIH0KICAgIHByaW50ZiAoIlxuIik7IGZmbHVzaCAoc3Rkb3V0ICk7
Cn0KCgogCgp2b2lkIG1ha2Vfcm9vdF9ibG9jayAoKQp7CiAgICBzdHJ1Y3QgcmVpc2VyZnNfc3Vw
ZXJfYmxvY2sgKiBzYiA9IChzdHJ1Y3QgcmVpc2VyZnNfc3VwZXJfYmxvY2sgKilnX3NiX2JoLT5i
X2RhdGE7CiAgICBjaGFyICogcmI7CiAgICBzdHJ1Y3QgYmxvY2tfaGVhZCAqIGJsa2g7CiAgICBz
dHJ1Y3QgaXRlbV9oZWFkICogaWg7CiAgICBzdHJ1Y3Qgc3RhdF9kYXRhICogc2Q7CiAgICBzdHJ1
Y3Qga2V5IG1heGtleSA9IHsweGZmZmZmZmZmLCAweGZmZmZmZmZmLCB7ezB4ZmZmZmZmZmYsIDB4
ZmZmZmZmZmZ9LCB9fTsKCgogICAgIAogICAgZ19yYl9iaCA9IGdldGJsayAoZ19zYl9iaC0+Yl9k
ZXYsIChfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191MzIpKCAoIHNiLT5zX3Jvb3RfYmxvY2sgKSAp
KSA/ICgoX191MzIpKCAoKChfX3UzMikoICggKCBzYi0+c19yb290X2Jsb2NrICkgKSApICYgKF9f
dTMyKTB4MDAwMDAwZmZVTCkgPDwgMjQpIHwgKCgoX191MzIpKCAoICggc2ItPnNfcm9vdF9ibG9j
ayApICkgKSAmIChfX3UzMikweDAwMDBmZjAwVUwpIDw8ICA4KSB8ICgoKF9fdTMyKSggKCAoIHNi
LT5zX3Jvb3RfYmxvY2sgKSApICkgJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiAgOCkgfCAoKChf
X3UzMikoICggKCBzYi0+c19yb290X2Jsb2NrICkgKSApICYgKF9fdTMyKTB4ZmYwMDAwMDBVTCkg
Pj4gMjQpICkpICA6IF9fZnN3YWIzMigoICggc2ItPnNfcm9vdF9ibG9jayApICkpKSAgLCBnX3Ni
X2JoLT5iX3NpemUpOwogICAgcmIgPSBnX3JiX2JoLT5iX2RhdGE7CgogICAgIAogICAgaWggPSAo
c3RydWN0IGl0ZW1faGVhZCAqKShyYiArIChzaXplb2Yoc3RydWN0IGJsb2NrX2hlYWQpKSApOwog
ICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKChfX3UxNikoICggKCBpaCApLT5paF92ZXJzaW9uICkg
KSkgPyAoKF9fdTE2KSggKCgoX191MTYpKCAoICggKCBpaCApLT5paF92ZXJzaW9uICkgKSApICYg
KF9fdTE2KTB4MDBmZlUpIDw8IDgpIHwgKCgoX191MTYpKCAoICggKCBpaCApLT5paF92ZXJzaW9u
ICkgKSApICYgKF9fdTE2KTB4ZmYwMFUpID4+IDgpICkpICA6IF9fZnN3YWIxNigoICggKCBpaCAp
LT5paF92ZXJzaW9uICkgKSkpICAgID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKChfX3UxNikoICgg
MSAgKSApKSA/ICgoX191MTYpKCAoKChfX3UxNikoICggKCAxICApICkgKSAmIChfX3UxNikweDAw
ZmZVKSA8PCA4KSB8ICgoKF9fdTE2KSggKCAoIDEgICkgKSApICYgKF9fdTE2KTB4ZmYwMFUpID4+
IDgpICkpICA6IF9fZnN3YWIxNigoICggMSAgKSApKSkgIDsKICAgIGloLT5paF9rZXkua19kaXJf
aWQgPSAoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTMyKSggKCAxICApICkpID8gKChfX3UzMiko
ICgoKF9fdTMyKSggKCAoIDEgICkgKSApICYgKF9fdTMyKTB4MDAwMDAwZmZVTCkgPDwgMjQpIHwg
KCgoX191MzIpKCAoICggMSAgKSApICkgJiAoX191MzIpMHgwMDAwZmYwMFVMKSA8PCAgOCkgfCAo
KChfX3UzMikoICggKCAxICApICkgKSAmIChfX3UzMikweDAwZmYwMDAwVUwpID4+ICA4KSB8ICgo
KF9fdTMyKSggKCAoIDEgICkgKSApICYgKF9fdTMyKTB4ZmYwMDAwMDBVTCkgPj4gMjQpICkpICA6
IF9fZnN3YWIzMigoICggMSAgKSApKSkgIDsKICAgIGloLT5paF9rZXkua19vYmplY3RpZCA9IChf
X2J1aWx0aW5fY29uc3RhbnRfcCgoX191MzIpKCAoIDIgICkgKSkgPyAoKF9fdTMyKSggKCgoX191
MzIpKCAoICggMiAgKSApICkgJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAyNCkgfCAoKChfX3Uz
MikoICggKCAyICApICkgKSAmIChfX3UzMikweDAwMDBmZjAwVUwpIDw8ICA4KSB8ICgoKF9fdTMy
KSggKCAoIDIgICkgKSApICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gIDgpIHwgKCgoX191MzIp
KCAoICggMiAgKSApICkgJiAoX191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkgKSkgIDogX19mc3dh
YjMyKCggKCAyICApICkpKSAgOwogICAgc2V0X2xlX2loX2tfb2Zmc2V0IChpaCwgMCApOwogICAg
c2V0X2xlX2loX2tfdHlwZSAoaWgsIDAgKTsKICAgIGloLT5paF9pdGVtX2xlbiA9IChfX2J1aWx0
aW5fY29uc3RhbnRfcCgoX191MTYpKCAoIChzaXplb2Yoc3RydWN0IHN0YXRfZGF0YSkpICApICkp
ID8gKChfX3UxNikoICgoKF9fdTE2KSggKCAoIChzaXplb2Yoc3RydWN0IHN0YXRfZGF0YSkpICAp
ICkgKSAmIChfX3UxNikweDAwZmZVKSA8PCA4KSB8ICgoKF9fdTE2KSggKCAoIChzaXplb2Yoc3Ry
dWN0IHN0YXRfZGF0YSkpICApICkgKSAmIChfX3UxNikweGZmMDBVKSA+PiA4KSApKSAgOiBfX2Zz
d2FiMTYoKCAoIChzaXplb2Yoc3RydWN0IHN0YXRfZGF0YSkpICApICkpKSAgOwogICAgaWgtPmlo
X2l0ZW1fbG9jYXRpb24gPSAoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTE2KSggKCAoX19idWls
dGluX2NvbnN0YW50X3AoKF9fdTE2KSggKCBzYi0+c19ibG9ja3NpemUgKSApKSA/ICgoX191MTYp
KCAoKChfX3UxNikoICggKCBzYi0+c19ibG9ja3NpemUgKSApICkgJiAoX191MTYpMHgwMGZmVSkg
PDwgOCkgfCAoKChfX3UxNikoICggKCBzYi0+c19ibG9ja3NpemUgKSApICkgJiAoX191MTYpMHhm
ZjAwVSkgPj4gOCkgKSkgIDogX19mc3dhYjE2KCggKCBzYi0+c19ibG9ja3NpemUgKSApKSkgIAoJ
CQkJCS0gKHNpemVvZihzdHJ1Y3Qgc3RhdF9kYXRhKSkgICkgKSkgPyAoKF9fdTE2KSggKCgoX191
MTYpKCAoICggKF9fYnVpbHRpbl9jb25zdGFudF9wKChfX3UxNikoICggc2ItPnNfYmxvY2tzaXpl
ICkgKSkgPyAoKF9fdTE2KSggKCgoX191MTYpKCAoICggc2ItPnNfYmxvY2tzaXplICkgKSApICYg
KF9fdTE2KTB4MDBmZlUpIDw8IDgpIHwgKCgoX191MTYpKCAoICggc2ItPnNfYmxvY2tzaXplICkg
KSApICYgKF9fdTE2KTB4ZmYwMFUpID4+IDgpICkpICA6IF9fZnN3YWIxNigoICggc2ItPnNfYmxv
Y2tzaXplICkgKSkpICAgCQkJCQktIChzaXplb2Yoc3RydWN0IHN0YXRfZGF0YSkpICApICkgKSAm
IChfX3UxNikweDAwZmZVKSA8PCA4KSB8ICgoKF9fdTE2KSggKCAoIChfX2J1aWx0aW5fY29uc3Rh
bnRfcCgoX191MTYpKCAoIHNiLT5zX2Jsb2Nrc2l6ZSApICkpID8gKChfX3UxNikoICgoKF9fdTE2
KSggKCAoIHNiLT5zX2Jsb2Nrc2l6ZSApICkgKSAmIChfX3UxNikweDAwZmZVKSA8PCA4KSB8ICgo
KF9fdTE2KSggKCAoIHNiLT5zX2Jsb2Nrc2l6ZSApICkgKSAmIChfX3UxNikweGZmMDBVKSA+PiA4
KSApKSAgOiBfX2Zzd2FiMTYoKCAoIHNiLT5zX2Jsb2Nrc2l6ZSApICkpKSAgIAkJCQkJLSAoc2l6
ZW9mKHN0cnVjdCBzdGF0X2RhdGEpKSAgKSApICkgJiAoX191MTYpMHhmZjAwVSkgPj4gOCkgKSkg
IDogX19mc3dhYjE2KCggKCAoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTE2KSggKCBzYi0+c19i
bG9ja3NpemUgKSApKSA/ICgoX191MTYpKCAoKChfX3UxNikoICggKCBzYi0+c19ibG9ja3NpemUg
KSApICkgJiAoX191MTYpMHgwMGZmVSkgPDwgOCkgfCAoKChfX3UxNikoICggKCBzYi0+c19ibG9j
a3NpemUgKSApICkgJiAoX191MTYpMHhmZjAwVSkgPj4gOCkgKSkgIDogX19mc3dhYjE2KCggKCBz
Yi0+c19ibG9ja3NpemUgKSApKSkgICAJCQkJCS0gKHNpemVvZihzdHJ1Y3Qgc3RhdF9kYXRhKSkg
ICkgKSkpICA7CiAgICBkbyB7ICggKCBpaCApICktPnUuaWhfZnJlZV9zcGFjZV9yZXNlcnZlZCA9
IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191MTYpKCAoICAgKCgoX19idWlsdGluX2NvbnN0YW50
X3AoKF9fdTE2KSggKCAoICBpaCAgKS0+aWhfdmVyc2lvbiApICkpID8gKChfX3UxNikoICgoKF9f
dTE2KSggKCAoICggIGloICApLT5paF92ZXJzaW9uICkgKSApICYgKF9fdTE2KTB4MDBmZlUpIDw8
IDgpIHwgKCgoX191MTYpKCAoICggKCAgaWggICktPmloX3ZlcnNpb24gKSApICkgJiAoX191MTYp
MHhmZjAwVSkgPj4gOCkgKSkgIDogX19mc3dhYjE2KCggKCAoICBpaCAgKS0+aWhfdmVyc2lvbiAp
ICkpKSAgICA9PSAxICkgPyAwIDogKCAgMHhmZmZmICApKSAgKSApKSA/ICgoX191MTYpKCAoKChf
X3UxNikoICggKCAgICgoKF9fYnVpbHRpbl9jb25zdGFudF9wKChfX3UxNikoICggKCAgaWggICkt
PmloX3ZlcnNpb24gKSApKSA/ICgoX191MTYpKCAoKChfX3UxNikoICggKCAoICBpaCAgKS0+aWhf
dmVyc2lvbiApICkgKSAmIChfX3UxNikweDAwZmZVKSA8PCA4KSB8ICgoKF9fdTE2KSggKCAoICgg
IGloICApLT5paF92ZXJzaW9uICkgKSApICYgKF9fdTE2KTB4ZmYwMFUpID4+IDgpICkpICA6IF9f
ZnN3YWIxNigoICggKCAgaWggICktPmloX3ZlcnNpb24gKSApKSkgICAgPT0gMSApID8gMCA6ICgg
IDB4ZmZmZiAgKSkgICkgKSApICYgKF9fdTE2KTB4MDBmZlUpIDw8IDgpIHwgKCgoX191MTYpKCAo
ICggICAoKChfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191MTYpKCAoICggIGloICApLT5paF92ZXJz
aW9uICkgKSkgPyAoKF9fdTE2KSggKCgoX191MTYpKCAoICggKCAgaWggICktPmloX3ZlcnNpb24g
KSApICkgJiAoX191MTYpMHgwMGZmVSkgPDwgOCkgfCAoKChfX3UxNikoICggKCAoICBpaCAgKS0+
aWhfdmVyc2lvbiApICkgKSAmIChfX3UxNikweGZmMDBVKSA+PiA4KSApKSAgOiBfX2Zzd2FiMTYo
KCAoICggIGloICApLT5paF92ZXJzaW9uICkgKSkpICAgID09IDEgKSA/IDAgOiAoICAweGZmZmYg
ICkpICApICkgKSAmIChfX3UxNikweGZmMDBVKSA+PiA4KSApKSAgOiBfX2Zzd2FiMTYoKCAoICAg
KCgoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTE2KSggKCAoICBpaCAgKS0+aWhfdmVyc2lvbiAp
ICkpID8gKChfX3UxNikoICgoKF9fdTE2KSggKCAoICggIGloICApLT5paF92ZXJzaW9uICkgKSAp
ICYgKF9fdTE2KTB4MDBmZlUpIDw8IDgpIHwgKCgoX191MTYpKCAoICggKCAgaWggICktPmloX3Zl
cnNpb24gKSApICkgJiAoX191MTYpMHhmZjAwVSkgPj4gOCkgKSkgIDogX19mc3dhYjE2KCggKCAo
ICBpaCAgKS0+aWhfdmVyc2lvbiApICkpKSAgICA9PSAxICkgPyAwIDogKCAgMHhmZmZmICApKSAg
KSApKSkgIDsgfSB3aGlsZSgwKSAgOwoKICAgICAKICAgIHNkID0gKHN0cnVjdCBzdGF0X2RhdGEg
KikocmIgKyBpaC0+aWhfaXRlbV9sb2NhdGlvbik7CiAgICBzZC0+c2RfbW9kZSA9IChfX2J1aWx0
aW5fY29uc3RhbnRfcCgoX191MTYpKCAoIDAwNDAwMDAgICArIDA3NTUgKSApKSA/ICgoX191MTYp
KCAoKChfX3UxNikoICggKCAwMDQwMDAwICAgKyAwNzU1ICkgKSApICYgKF9fdTE2KTB4MDBmZlUp
IDw8IDgpIHwgKCgoX191MTYpKCAoICggMDA0MDAwMCAgICsgMDc1NSApICkgKSAmIChfX3UxNikw
eGZmMDBVKSA+PiA4KSApKSAgOiBfX2Zzd2FiMTYoKCAoIDAwNDAwMDAgICArIDA3NTUgKSApKSkg
IDsKICAgIHNkLT5zZF9ubGluayA9IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191MTYpKCAoIDMg
KSApKSA/ICgoX191MTYpKCAoKChfX3UxNikoICggKCAzICkgKSApICYgKF9fdTE2KTB4MDBmZlUp
IDw8IDgpIHwgKCgoX191MTYpKCAoICggMyApICkgKSAmIChfX3UxNikweGZmMDBVKSA+PiA4KSAp
KSAgOiBfX2Zzd2FiMTYoKCAoIDMgKSApKSkgIDsKICAgIHNkLT5zZF91aWQgPSAoX19idWlsdGlu
X2NvbnN0YW50X3AoKF9fdTMyKSggKCBnZXR1aWQgKCkgKSApKSA/ICgoX191MzIpKCAoKChfX3Uz
MikoICggKCBnZXR1aWQgKCkgKSApICkgJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAyNCkgfCAo
KChfX3UzMikoICggKCBnZXR1aWQgKCkgKSApICkgJiAoX191MzIpMHgwMDAwZmYwMFVMKSA8PCAg
OCkgfCAoKChfX3UzMikoICggKCBnZXR1aWQgKCkgKSApICkgJiAoX191MzIpMHgwMGZmMDAwMFVM
KSA+PiAgOCkgfCAoKChfX3UzMikoICggKCBnZXR1aWQgKCkgKSApICkgJiAoX191MzIpMHhmZjAw
MDAwMFVMKSA+PiAyNCkgKSkgIDogX19mc3dhYjMyKCggKCBnZXR1aWQgKCkgKSApKSkgIDsKICAg
IHNkLT5zZF9naWQgPSAoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTMyKSggKCBnZXRnaWQgKCkg
KSApKSA/ICgoX191MzIpKCAoKChfX3UzMikoICggKCBnZXRnaWQgKCkgKSApICkgJiAoX191MzIp
MHgwMDAwMDBmZlVMKSA8PCAyNCkgfCAoKChfX3UzMikoICggKCBnZXRnaWQgKCkgKSApICkgJiAo
X191MzIpMHgwMDAwZmYwMFVMKSA8PCAgOCkgfCAoKChfX3UzMikoICggKCBnZXRnaWQgKCkgKSAp
ICkgJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiAgOCkgfCAoKChfX3UzMikoICggKCBnZXRnaWQg
KCkgKSApICkgJiAoX191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkgKSkgIDogX19mc3dhYjMyKCgg
KCBnZXRnaWQgKCkgKSApKSkgIDsKICAgIHNkLT5zZF9zaXplID0gKF9fYnVpbHRpbl9jb25zdGFu
dF9wKChfX3U2NCkoICggKHNpemVvZihzdHJ1Y3QgcmVpc2VyZnNfZGVfaGVhZCkgICogMiArICgo
KCAgc3RybGVuICgiLiIpICApKyggOExMICktMXUpICYgfigoIDhMTCApLTF1KSkgICArICgoKCAg
c3RybGVuICgiLi4iKSAgKSsoIDhMTCApLTF1KSAmIH4oKCA4TEwgKS0xdSkpICApICApICkpID8g
KChfX3U2NCkoIChfX3U2NCkoKChfX3U2NCkoICggKCAoc2l6ZW9mKHN0cnVjdCByZWlzZXJmc19k
ZV9oZWFkKSAgKiAyICsgKCgoICBzdHJsZW4gKCIuIikgICkrKCA4TEwgKS0xdSkgJiB+KCggOExM
ICktMXUpKSAgICsgKCgoICBzdHJsZW4gKCIuLiIpICApKyggOExMICktMXUpICYgfigoIDhMTCAp
LTF1KSkgICkgICkgKSApICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAwMDBmZlVMTCkgPDwgNTYpIHwg
KF9fdTY0KSgoKF9fdTY0KSggKCAoIChzaXplb2Yoc3RydWN0IHJlaXNlcmZzX2RlX2hlYWQpICAq
IDIgKyAoKCggIHN0cmxlbiAoIi4iKSAgKSsoIDhMTCApLTF1KSAmIH4oKCA4TEwgKS0xdSkpICAg
KyAoKCggIHN0cmxlbiAoIi4uIikgICkrKCA4TEwgKS0xdSkgJiB+KCggOExMICktMXUpKSAgKSAg
KSApICkgJiAoX191NjQpMHgwMDAwMDAwMDAwMDBmZjAwVUxMKSA8PCA0MCkgfCAoX191NjQpKCgo
X191NjQpKCAoICggKHNpemVvZihzdHJ1Y3QgcmVpc2VyZnNfZGVfaGVhZCkgICogMiArICgoKCAg
c3RybGVuICgiLiIpICApKyggOExMICktMXUpICYgfigoIDhMTCApLTF1KSkgICArICgoKCAgc3Ry
bGVuICgiLi4iKSAgKSsoIDhMTCApLTF1KSAmIH4oKCA4TEwgKS0xdSkpICApICApICkgKSAmIChf
X3U2NCkweDAwMDAwMDAwMDBmZjAwMDBVTEwpIDw8IDI0KSB8IChfX3U2NCkoKChfX3U2NCkoICgg
KCAoc2l6ZW9mKHN0cnVjdCByZWlzZXJmc19kZV9oZWFkKSAgKiAyICsgKCgoICBzdHJsZW4gKCIu
IikgICkrKCA4TEwgKS0xdSkgJiB+KCggOExMICktMXUpKSAgICsgKCgoICBzdHJsZW4gKCIuLiIp
ICApKyggOExMICktMXUpICYgfigoIDhMTCApLTF1KSkgICkgICkgKSApICYgKF9fdTY0KTB4MDAw
MDAwMDBmZjAwMDAwMFVMTCkgPDwgIDgpIHwgKF9fdTY0KSgoKF9fdTY0KSggKCAoIChzaXplb2Yo
c3RydWN0IHJlaXNlcmZzX2RlX2hlYWQpICAqIDIgKyAoKCggIHN0cmxlbiAoIi4iKSAgKSsoIDhM
TCApLTF1KSAmIH4oKCA4TEwgKS0xdSkpICAgKyAoKCggIHN0cmxlbiAoIi4uIikgICkrKCA4TEwg
KS0xdSkgJiB+KCggOExMICktMXUpKSAgKSAgKSApICkgJiAoX191NjQpMHgwMDAwMDBmZjAwMDAw
MDAwVUxMKSA+PiAgOCkgfCAoX191NjQpKCgoX191NjQpKCAoICggKHNpemVvZihzdHJ1Y3QgcmVp
c2VyZnNfZGVfaGVhZCkgICogMiArICgoKCAgc3RybGVuICgiLiIpICApKyggOExMICktMXUpICYg
figoIDhMTCApLTF1KSkgICArICgoKCAgc3RybGVuICgiLi4iKSAgKSsoIDhMTCApLTF1KSAmIH4o
KCA4TEwgKS0xdSkpICApICApICkgKSAmIChfX3U2NCkweDAwMDBmZjAwMDAwMDAwMDBVTEwpID4+
IDI0KSB8IChfX3U2NCkoKChfX3U2NCkoICggKCAoc2l6ZW9mKHN0cnVjdCByZWlzZXJmc19kZV9o
ZWFkKSAgKiAyICsgKCgoICBzdHJsZW4gKCIuIikgICkrKCA4TEwgKS0xdSkgJiB+KCggOExMICkt
MXUpKSAgICsgKCgoICBzdHJsZW4gKCIuLiIpICApKyggOExMICktMXUpICYgfigoIDhMTCApLTF1
KSkgICkgICkgKSApICYgKF9fdTY0KTB4MDBmZjAwMDAwMDAwMDAwMFVMTCkgPj4gNDApIHwgKF9f
dTY0KSgoKF9fdTY0KSggKCAoIChzaXplb2Yoc3RydWN0IHJlaXNlcmZzX2RlX2hlYWQpICAqIDIg
KyAoKCggIHN0cmxlbiAoIi4iKSAgKSsoIDhMTCApLTF1KSAmIH4oKCA4TEwgKS0xdSkpICAgKyAo
KCggIHN0cmxlbiAoIi4uIikgICkrKCA4TEwgKS0xdSkgJiB+KCggOExMICktMXUpKSAgKSAgKSAp
ICkgJiAoX191NjQpMHhmZjAwMDAwMDAwMDAwMDAwVUxMKSA+PiA1NikgKSkgIDogX19mc3dhYjY0
KCggKCAoc2l6ZW9mKHN0cnVjdCByZWlzZXJmc19kZV9oZWFkKSAgKiAyICsgKCgoICBzdHJsZW4g
KCIuIikgICkrKCA4TEwgKS0xdSkgJiB+KCggOExMICktMXUpKSAgICsgKCgoICBzdHJsZW4gKCIu
LiIpICApKyggOExMICktMXUpICYgfigoIDhMTCApLTF1KSkgICkgICkgKSkpICA7CiAgICBzZC0+
c2RfYXRpbWUgPSBzZC0+c2RfY3RpbWUgPSBzZC0+c2RfbXRpbWUgPSAoX19idWlsdGluX2NvbnN0
YW50X3AoKF9fdTMyKSggKCB0aW1lICgoKHZvaWQgKikwKSApICkgKSkgPyAoKF9fdTMyKSggKCgo
X191MzIpKCAoICggdGltZSAoKCh2b2lkICopMCkgKSApICkgKSAmIChfX3UzMikweDAwMDAwMGZm
VUwpIDw8IDI0KSB8ICgoKF9fdTMyKSggKCAoIHRpbWUgKCgodm9pZCAqKTApICkgKSApICkgJiAo
X191MzIpMHgwMDAwZmYwMFVMKSA8PCAgOCkgfCAoKChfX3UzMikoICggKCB0aW1lICgoKHZvaWQg
KikwKSApICkgKSApICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gIDgpIHwgKCgoX191MzIpKCAo
ICggdGltZSAoKCh2b2lkICopMCkgKSApICkgKSAmIChfX3UzMikweGZmMDAwMDAwVUwpID4+IDI0
KSApKSAgOiBfX2Zzd2FiMzIoKCAoIHRpbWUgKCgodm9pZCAqKTApICkgKSApKSkgIDsKICAgIHNk
LT51LnNkX3JkZXYgPSAoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTMyKSggKCAwICkgKSkgPyAo
KF9fdTMyKSggKCgoX191MzIpKCAoICggMCApICkgKSAmIChfX3UzMikweDAwMDAwMGZmVUwpIDw8
IDI0KSB8ICgoKF9fdTMyKSggKCAoIDAgKSApICkgJiAoX191MzIpMHgwMDAwZmYwMFVMKSA8PCAg
OCkgfCAoKChfX3UzMikoICggKCAwICkgKSApICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gIDgp
IHwgKCgoX191MzIpKCAoICggMCApICkgKSAmIChfX3UzMikweGZmMDAwMDAwVUwpID4+IDI0KSAp
KSAgOiBfX2Zzd2FiMzIoKCAoIDAgKSApKSkgIDsKCgogICAgIAogICAgaWggKys7CiAgICAoX19i
dWlsdGluX2NvbnN0YW50X3AoKF9fdTE2KSggKCAoIGloICktPmloX3ZlcnNpb24gKSApKSA/ICgo
X191MTYpKCAoKChfX3UxNikoICggKCAoIGloICktPmloX3ZlcnNpb24gKSApICkgJiAoX191MTYp
MHgwMGZmVSkgPDwgOCkgfCAoKChfX3UxNikoICggKCAoIGloICktPmloX3ZlcnNpb24gKSApICkg
JiAoX191MTYpMHhmZjAwVSkgPj4gOCkgKSkgIDogX19mc3dhYjE2KCggKCAoIGloICktPmloX3Zl
cnNpb24gKSApKSkgICAgPSAoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTE2KSggKCAwICApICkp
ID8gKChfX3UxNikoICgoKF9fdTE2KSggKCAoIDAgICkgKSApICYgKF9fdTE2KTB4MDBmZlUpIDw8
IDgpIHwgKCgoX191MTYpKCAoICggMCAgKSApICkgJiAoX191MTYpMHhmZjAwVSkgPj4gOCkgKSkg
IDogX19mc3dhYjE2KCggKCAwICApICkpKSAgOwogICAgaWgtPmloX2tleS5rX2Rpcl9pZCA9IChf
X2J1aWx0aW5fY29uc3RhbnRfcCgoX191MzIpKCAoIDEgICkgKSkgPyAoKF9fdTMyKSggKCgoX191
MzIpKCAoICggMSAgKSApICkgJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAyNCkgfCAoKChfX3Uz
MikoICggKCAxICApICkgKSAmIChfX3UzMikweDAwMDBmZjAwVUwpIDw8ICA4KSB8ICgoKF9fdTMy
KSggKCAoIDEgICkgKSApICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gIDgpIHwgKCgoX191MzIp
KCAoICggMSAgKSApICkgJiAoX191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkgKSkgIDogX19mc3dh
YjMyKCggKCAxICApICkpKSAgOwogICAgaWgtPmloX2tleS5rX29iamVjdGlkID0gKF9fYnVpbHRp
bl9jb25zdGFudF9wKChfX3UzMikoICggMiAgKSApKSA/ICgoX191MzIpKCAoKChfX3UzMikoICgg
KCAyICApICkgKSAmIChfX3UzMikweDAwMDAwMGZmVUwpIDw8IDI0KSB8ICgoKF9fdTMyKSggKCAo
IDIgICkgKSApICYgKF9fdTMyKTB4MDAwMGZmMDBVTCkgPDwgIDgpIHwgKCgoX191MzIpKCAoICgg
MiAgKSApICkgJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiAgOCkgfCAoKChfX3UzMikoICggKCAy
ICApICkgKSAmIChfX3UzMikweGZmMDAwMDAwVUwpID4+IDI0KSApKSAgOiBfX2Zzd2FiMzIoKCAo
IDIgICkgKSkpICA7CiAgICBzZXRfbGVfaWhfa19vZmZzZXQgKGloLCAxICk7CiAgICBzZXRfbGVf
aWhfa190eXBlIChpaCwgMyApOwogICAgaWgtPmloX2l0ZW1fbGVuID0gKF9fYnVpbHRpbl9jb25z
dGFudF9wKChfX3UxNikoICggc2l6ZW9mKHN0cnVjdCByZWlzZXJmc19kZV9oZWFkKSAgKiAyICsg
KCgoICBzdHJsZW4gKCIuIikgICkrKCA4TEwgKS0xdSkgJiB+KCggOExMICktMXUpKSAgICsKCQkJ
CSAgICgoKCAgc3RybGVuICgiLi4iKSAgKSsoIDhMTCApLTF1KSAmIH4oKCA4TEwgKS0xdSkpICAg
KSApKSA/ICgoX191MTYpKCAoKChfX3UxNikoICggKCBzaXplb2Yoc3RydWN0IHJlaXNlcmZzX2Rl
X2hlYWQpICAqIDIgKyAoKCggIHN0cmxlbiAoIi4iKSAgKSsoIDhMTCApLTF1KSAmIH4oKCA4TEwg
KS0xdSkpICAgKyAJCQkJICAgKCgoICBzdHJsZW4gKCIuLiIpICApKyggOExMICktMXUpICYgfigo
IDhMTCApLTF1KSkgICApICkgKSAmIChfX3UxNikweDAwZmZVKSA8PCA4KSB8ICgoKF9fdTE2KSgg
KCAoIHNpemVvZihzdHJ1Y3QgcmVpc2VyZnNfZGVfaGVhZCkgICogMiArICgoKCAgc3RybGVuICgi
LiIpICApKyggOExMICktMXUpICYgfigoIDhMTCApLTF1KSkgICArIAkJCQkgICAoKCggIHN0cmxl
biAoIi4uIikgICkrKCA4TEwgKS0xdSkgJiB+KCggOExMICktMXUpKSAgICkgKSApICYgKF9fdTE2
KTB4ZmYwMFUpID4+IDgpICkpICA6IF9fZnN3YWIxNigoICggc2l6ZW9mKHN0cnVjdCByZWlzZXJm
c19kZV9oZWFkKSAgKiAyICsgKCgoICBzdHJsZW4gKCIuIikgICkrKCA4TEwgKS0xdSkgJiB+KCgg
OExMICktMXUpKSAgICsgCQkJCSAgICgoKCAgc3RybGVuICgiLi4iKSAgKSsoIDhMTCApLTF1KSAm
IH4oKCA4TEwgKS0xdSkpICAgKSApKSkgIDsKICAgIGloLT5paF9pdGVtX2xvY2F0aW9uID0gKF9f
YnVpbHRpbl9jb25zdGFudF9wKChfX3UxNikoICggKF9fYnVpbHRpbl9jb25zdGFudF9wKChfX3Ux
NikoICggKGloLTEpLT5paF9pdGVtX2xvY2F0aW9uICkgKSkgPyAoKF9fdTE2KSggKCgoX191MTYp
KCAoICggKGloLTEpLT5paF9pdGVtX2xvY2F0aW9uICkgKSApICYgKF9fdTE2KTB4MDBmZlUpIDw8
IDgpIHwgKCgoX191MTYpKCAoICggKGloLTEpLT5paF9pdGVtX2xvY2F0aW9uICkgKSApICYgKF9f
dTE2KTB4ZmYwMFUpID4+IDgpICkpICA6IF9fZnN3YWIxNigoICggKGloLTEpLT5paF9pdGVtX2xv
Y2F0aW9uICkgKSkpICAgLSAKCQkJCQkoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTE2KSggKCBp
aC0+aWhfaXRlbV9sZW4gKSApKSA/ICgoX191MTYpKCAoKChfX3UxNikoICggKCBpaC0+aWhfaXRl
bV9sZW4gKSApICkgJiAoX191MTYpMHgwMGZmVSkgPDwgOCkgfCAoKChfX3UxNikoICggKCBpaC0+
aWhfaXRlbV9sZW4gKSApICkgJiAoX191MTYpMHhmZjAwVSkgPj4gOCkgKSkgIDogX19mc3dhYjE2
KCggKCBpaC0+aWhfaXRlbV9sZW4gKSApKSkgICApICkpID8gKChfX3UxNikoICgoKF9fdTE2KSgg
KCAoIChfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191MTYpKCAoIChpaC0xKS0+aWhfaXRlbV9sb2Nh
dGlvbiApICkpID8gKChfX3UxNikoICgoKF9fdTE2KSggKCAoIChpaC0xKS0+aWhfaXRlbV9sb2Nh
dGlvbiApICkgKSAmIChfX3UxNikweDAwZmZVKSA8PCA4KSB8ICgoKF9fdTE2KSggKCAoIChpaC0x
KS0+aWhfaXRlbV9sb2NhdGlvbiApICkgKSAmIChfX3UxNikweGZmMDBVKSA+PiA4KSApKSAgOiBf
X2Zzd2FiMTYoKCAoIChpaC0xKS0+aWhfaXRlbV9sb2NhdGlvbiApICkpKSAgIC0gIAkJCQkJKF9f
YnVpbHRpbl9jb25zdGFudF9wKChfX3UxNikoICggaWgtPmloX2l0ZW1fbGVuICkgKSkgPyAoKF9f
dTE2KSggKCgoX191MTYpKCAoICggaWgtPmloX2l0ZW1fbGVuICkgKSApICYgKF9fdTE2KTB4MDBm
ZlUpIDw8IDgpIHwgKCgoX191MTYpKCAoICggaWgtPmloX2l0ZW1fbGVuICkgKSApICYgKF9fdTE2
KTB4ZmYwMFUpID4+IDgpICkpICA6IF9fZnN3YWIxNigoICggaWgtPmloX2l0ZW1fbGVuICkgKSkp
ICAgKSApICkgJiAoX191MTYpMHgwMGZmVSkgPDwgOCkgfCAoKChfX3UxNikoICggKCAoX19idWls
dGluX2NvbnN0YW50X3AoKF9fdTE2KSggKCAoaWgtMSktPmloX2l0ZW1fbG9jYXRpb24gKSApKSA/
ICgoX191MTYpKCAoKChfX3UxNikoICggKCAoaWgtMSktPmloX2l0ZW1fbG9jYXRpb24gKSApICkg
JiAoX191MTYpMHgwMGZmVSkgPDwgOCkgfCAoKChfX3UxNikoICggKCAoaWgtMSktPmloX2l0ZW1f
bG9jYXRpb24gKSApICkgJiAoX191MTYpMHhmZjAwVSkgPj4gOCkgKSkgIDogX19mc3dhYjE2KCgg
KCAoaWgtMSktPmloX2l0ZW1fbG9jYXRpb24gKSApKSkgICAtICAJCQkJCShfX2J1aWx0aW5fY29u
c3RhbnRfcCgoX191MTYpKCAoIGloLT5paF9pdGVtX2xlbiApICkpID8gKChfX3UxNikoICgoKF9f
dTE2KSggKCAoIGloLT5paF9pdGVtX2xlbiApICkgKSAmIChfX3UxNikweDAwZmZVKSA8PCA4KSB8
ICgoKF9fdTE2KSggKCAoIGloLT5paF9pdGVtX2xlbiApICkgKSAmIChfX3UxNikweGZmMDBVKSA+
PiA4KSApKSAgOiBfX2Zzd2FiMTYoKCAoIGloLT5paF9pdGVtX2xlbiApICkpKSAgICkgKSApICYg
KF9fdTE2KTB4ZmYwMFUpID4+IDgpICkpICA6IF9fZnN3YWIxNigoICggKF9fYnVpbHRpbl9jb25z
dGFudF9wKChfX3UxNikoICggKGloLTEpLT5paF9pdGVtX2xvY2F0aW9uICkgKSkgPyAoKF9fdTE2
KSggKCgoX191MTYpKCAoICggKGloLTEpLT5paF9pdGVtX2xvY2F0aW9uICkgKSApICYgKF9fdTE2
KTB4MDBmZlUpIDw8IDgpIHwgKCgoX191MTYpKCAoICggKGloLTEpLT5paF9pdGVtX2xvY2F0aW9u
ICkgKSApICYgKF9fdTE2KTB4ZmYwMFUpID4+IDgpICkpICA6IF9fZnN3YWIxNigoICggKGloLTEp
LT5paF9pdGVtX2xvY2F0aW9uICkgKSkpICAgLSAgCQkJCQkoX19idWlsdGluX2NvbnN0YW50X3Ao
KF9fdTE2KSggKCBpaC0+aWhfaXRlbV9sZW4gKSApKSA/ICgoX191MTYpKCAoKChfX3UxNikoICgg
KCBpaC0+aWhfaXRlbV9sZW4gKSApICkgJiAoX191MTYpMHgwMGZmVSkgPDwgOCkgfCAoKChfX3Ux
NikoICggKCBpaC0+aWhfaXRlbV9sZW4gKSApICkgJiAoX191MTYpMHhmZjAwVSkgPj4gOCkgKSkg
IDogX19mc3dhYjE2KCggKCBpaC0+aWhfaXRlbV9sZW4gKSApKSkgICApICkpKSAgOwogICAgaWgt
PnUuaWhfZW50cnlfY291bnQgPSAoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTMyKSggKCAyICkg
KSkgPyAoKF9fdTMyKSggKCgoX191MzIpKCAoICggMiApICkgKSAmIChfX3UzMikweDAwMDAwMGZm
VUwpIDw8IDI0KSB8ICgoKF9fdTMyKSggKCAoIDIgKSApICkgJiAoX191MzIpMHgwMDAwZmYwMFVM
KSA8PCAgOCkgfCAoKChfX3UzMikoICggKCAyICkgKSApICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkg
Pj4gIDgpIHwgKCgoX191MzIpKCAoICggMiApICkgKSAmIChfX3UzMikweGZmMDAwMDAwVUwpID4+
IDI0KSApKSAgOiBfX2Zzd2FiMzIoKCAoIDIgKSApKSkgIDsKICAKICAgICAKICAgIG1ha2VfZW1w
dHlfZGlyX2l0ZW0gKHJiICsgaWgtPmloX2l0ZW1fbG9jYXRpb24sIAoJCQkgMSAsIDIgLAoJCQkg
MCwgMSApOwoKICAgICAKICAgIGJsa2ggPSAoc3RydWN0IGJsb2NrX2hlYWQgKilyYjsKICAgIGJs
a2gtPmJsa19sZXZlbCA9IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191MTYpKCAoIDEgICkgKSkg
PyAoKF9fdTE2KSggKCgoX191MTYpKCAoICggMSAgKSApICkgJiAoX191MTYpMHgwMGZmVSkgPDwg
OCkgfCAoKChfX3UxNikoICggKCAxICApICkgKSAmIChfX3UxNikweGZmMDBVKSA+PiA4KSApKSAg
OiBfX2Zzd2FiMTYoKCAoIDEgICkgKSkpICA7CiAgICBibGtoLT5ibGtfbnJfaXRlbSA9IChfX2J1
aWx0aW5fY29uc3RhbnRfcCgoX191MTYpKCAoIDIgKSApKSA/ICgoX191MTYpKCAoKChfX3UxNiko
ICggKCAyICkgKSApICYgKF9fdTE2KTB4MDBmZlUpIDw8IDgpIHwgKCgoX191MTYpKCAoICggMiAp
ICkgKSAmIChfX3UxNikweGZmMDBVKSA+PiA4KSApKSAgOiBfX2Zzd2FiMTYoKCAoIDIgKSApKSkg
IDsKICAgIGJsa2gtPmJsa19mcmVlX3NwYWNlID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKChfX3Ux
NikoICggKF9fYnVpbHRpbl9jb25zdGFudF9wKChfX3UzMikoICggc2ItPnNfYmxvY2tzaXplICkg
KSkgPyAoKF9fdTMyKSggKCgoX191MzIpKCAoICggc2ItPnNfYmxvY2tzaXplICkgKSApICYgKF9f
dTMyKTB4MDAwMDAwZmZVTCkgPDwgMjQpIHwgKCgoX191MzIpKCAoICggc2ItPnNfYmxvY2tzaXpl
ICkgKSApICYgKF9fdTMyKTB4MDAwMGZmMDBVTCkgPDwgIDgpIHwgKCgoX191MzIpKCAoICggc2It
PnNfYmxvY2tzaXplICkgKSApICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gIDgpIHwgKCgoX191
MzIpKCAoICggc2ItPnNfYmxvY2tzaXplICkgKSApICYgKF9fdTMyKTB4ZmYwMDAwMDBVTCkgPj4g
MjQpICkpICA6IF9fZnN3YWIzMigoICggc2ItPnNfYmxvY2tzaXplICkgKSkpICAgLSAoc2l6ZW9m
KHN0cnVjdCBibG9ja19oZWFkKSkgIC0gCgkJCQkJMiAqIChzaXplb2Yoc3RydWN0IGl0ZW1faGVh
ZCkpICAtIChzaXplb2Yoc3RydWN0IHN0YXRfZGF0YSkpICAtIChfX2J1aWx0aW5fY29uc3RhbnRf
cCgoX191MTYpKCAoIGloLT5paF9pdGVtX2xlbiApICkpID8gKChfX3UxNikoICgoKF9fdTE2KSgg
KCAoIGloLT5paF9pdGVtX2xlbiApICkgKSAmIChfX3UxNikweDAwZmZVKSA8PCA4KSB8ICgoKF9f
dTE2KSggKCAoIGloLT5paF9pdGVtX2xlbiApICkgKSAmIChfX3UxNikweGZmMDBVKSA+PiA4KSAp
KSAgOiBfX2Zzd2FiMTYoKCAoIGloLT5paF9pdGVtX2xlbiApICkpKSAgICkgKSkgPyAoKF9fdTE2
KSggKCgoX191MTYpKCAoICggKF9fYnVpbHRpbl9jb25zdGFudF9wKChfX3UzMikoICggc2ItPnNf
YmxvY2tzaXplICkgKSkgPyAoKF9fdTMyKSggKCgoX191MzIpKCAoICggc2ItPnNfYmxvY2tzaXpl
ICkgKSApICYgKF9fdTMyKTB4MDAwMDAwZmZVTCkgPDwgMjQpIHwgKCgoX191MzIpKCAoICggc2It
PnNfYmxvY2tzaXplICkgKSApICYgKF9fdTMyKTB4MDAwMGZmMDBVTCkgPDwgIDgpIHwgKCgoX191
MzIpKCAoICggc2ItPnNfYmxvY2tzaXplICkgKSApICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4g
IDgpIHwgKCgoX191MzIpKCAoICggc2ItPnNfYmxvY2tzaXplICkgKSApICYgKF9fdTMyKTB4ZmYw
MDAwMDBVTCkgPj4gMjQpICkpICA6IF9fZnN3YWIzMigoICggc2ItPnNfYmxvY2tzaXplICkgKSkp
ICAgLSAoc2l6ZW9mKHN0cnVjdCBibG9ja19oZWFkKSkgIC0gIAkJCQkJMiAqIChzaXplb2Yoc3Ry
dWN0IGl0ZW1faGVhZCkpICAtIChzaXplb2Yoc3RydWN0IHN0YXRfZGF0YSkpICAtIChfX2J1aWx0
aW5fY29uc3RhbnRfcCgoX191MTYpKCAoIGloLT5paF9pdGVtX2xlbiApICkpID8gKChfX3UxNiko
ICgoKF9fdTE2KSggKCAoIGloLT5paF9pdGVtX2xlbiApICkgKSAmIChfX3UxNikweDAwZmZVKSA8
PCA4KSB8ICgoKF9fdTE2KSggKCAoIGloLT5paF9pdGVtX2xlbiApICkgKSAmIChfX3UxNikweGZm
MDBVKSA+PiA4KSApKSAgOiBfX2Zzd2FiMTYoKCAoIGloLT5paF9pdGVtX2xlbiApICkpKSAgICkg
KSApICYgKF9fdTE2KTB4MDBmZlUpIDw8IDgpIHwgKCgoX191MTYpKCAoICggKF9fYnVpbHRpbl9j
b25zdGFudF9wKChfX3UzMikoICggc2ItPnNfYmxvY2tzaXplICkgKSkgPyAoKF9fdTMyKSggKCgo
X191MzIpKCAoICggc2ItPnNfYmxvY2tzaXplICkgKSApICYgKF9fdTMyKTB4MDAwMDAwZmZVTCkg
PDwgMjQpIHwgKCgoX191MzIpKCAoICggc2ItPnNfYmxvY2tzaXplICkgKSApICYgKF9fdTMyKTB4
MDAwMGZmMDBVTCkgPDwgIDgpIHwgKCgoX191MzIpKCAoICggc2ItPnNfYmxvY2tzaXplICkgKSAp
ICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gIDgpIHwgKCgoX191MzIpKCAoICggc2ItPnNfYmxv
Y2tzaXplICkgKSApICYgKF9fdTMyKTB4ZmYwMDAwMDBVTCkgPj4gMjQpICkpICA6IF9fZnN3YWIz
MigoICggc2ItPnNfYmxvY2tzaXplICkgKSkpICAgLSAoc2l6ZW9mKHN0cnVjdCBibG9ja19oZWFk
KSkgIC0gIAkJCQkJMiAqIChzaXplb2Yoc3RydWN0IGl0ZW1faGVhZCkpICAtIChzaXplb2Yoc3Ry
dWN0IHN0YXRfZGF0YSkpICAtIChfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191MTYpKCAoIGloLT5p
aF9pdGVtX2xlbiApICkpID8gKChfX3UxNikoICgoKF9fdTE2KSggKCAoIGloLT5paF9pdGVtX2xl
biApICkgKSAmIChfX3UxNikweDAwZmZVKSA8PCA4KSB8ICgoKF9fdTE2KSggKCAoIGloLT5paF9p
dGVtX2xlbiApICkgKSAmIChfX3UxNikweGZmMDBVKSA+PiA4KSApKSAgOiBfX2Zzd2FiMTYoKCAo
IGloLT5paF9pdGVtX2xlbiApICkpKSAgICkgKSApICYgKF9fdTE2KTB4ZmYwMFUpID4+IDgpICkp
ICA6IF9fZnN3YWIxNigoICggKF9fYnVpbHRpbl9jb25zdGFudF9wKChfX3UzMikoICggc2ItPnNf
YmxvY2tzaXplICkgKSkgPyAoKF9fdTMyKSggKCgoX191MzIpKCAoICggc2ItPnNfYmxvY2tzaXpl
ICkgKSApICYgKF9fdTMyKTB4MDAwMDAwZmZVTCkgPDwgMjQpIHwgKCgoX191MzIpKCAoICggc2It
PnNfYmxvY2tzaXplICkgKSApICYgKF9fdTMyKTB4MDAwMGZmMDBVTCkgPDwgIDgpIHwgKCgoX191
MzIpKCAoICggc2ItPnNfYmxvY2tzaXplICkgKSApICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4g
IDgpIHwgKCgoX191MzIpKCAoICggc2ItPnNfYmxvY2tzaXplICkgKSApICYgKF9fdTMyKTB4ZmYw
MDAwMDBVTCkgPj4gMjQpICkpICA6IF9fZnN3YWIzMigoICggc2ItPnNfYmxvY2tzaXplICkgKSkp
ICAgLSAoc2l6ZW9mKHN0cnVjdCBibG9ja19oZWFkKSkgIC0gIAkJCQkJMiAqIChzaXplb2Yoc3Ry
dWN0IGl0ZW1faGVhZCkpICAtIChzaXplb2Yoc3RydWN0IHN0YXRfZGF0YSkpICAtIChfX2J1aWx0
aW5fY29uc3RhbnRfcCgoX191MTYpKCAoIGloLT5paF9pdGVtX2xlbiApICkpID8gKChfX3UxNiko
ICgoKF9fdTE2KSggKCAoIGloLT5paF9pdGVtX2xlbiApICkgKSAmIChfX3UxNikweDAwZmZVKSA8
PCA4KSB8ICgoKF9fdTE2KSggKCAoIGloLT5paF9pdGVtX2xlbiApICkgKSAmIChfX3UxNikweGZm
MDBVKSA+PiA4KSApKSAgOiBfX2Zzd2FiMTYoKCAoIGloLT5paF9pdGVtX2xlbiApICkpKSAgICkg
KSkpICA7CiAgICAgCiAgICBibGtoLT5ibGtfcmlnaHRfZGVsaW1fa2V5ID0gbWF4a2V5OwoKICAg
IG1hcmtfYnVmZmVyX2RpcnR5IChnX3JiX2JoLCAwKTsKICAgIG1hcmtfYnVmZmVyX3VwdG9kYXRl
IChnX3JiX2JoLCAxKTsKICAgIHJldHVybjsKfQoKCiAKCgpzdGF0aWMgdm9pZCBtYWtlX25ld19m
aWxlc3lzdGVtICh2b2lkKQp7CiAgICBzdHJ1Y3QgcmVpc2VyZnNfc3VwZXJfYmxvY2sgKiBzYiA9
IChzdHJ1Y3QgcmVpc2VyZnNfc3VwZXJfYmxvY2sgKilnX3NiX2JoLT5iX2RhdGE7CiAgICBpbnQg
aTsKCiAgICBwcmludGYgKCJqb3VybmFsIHNpemUgJWQgKGZyb20gJWQpXG4iLCAKCSAgICBzYi0+
c19vcmlnX2pvdXJuYWxfc2l6ZSwgc2ItPnNfam91cm5hbF9ibG9jayk7CgogICAgemVyb19qb3Vy
bmFsX2Jsb2NrcyAoZ19zYl9iaC0+Yl9kZXYsIHNiLT5zX2pvdXJuYWxfYmxvY2ssIAoJCQkgc2It
PnNfb3JpZ19qb3VybmFsX3NpemUgKyAxKTsKCiAgICAgCiAgICBmb3IgKGkgPSAwOyBpIDwgc2It
PnNfYm1hcF9ucjsgaSArKykgewoJYndyaXRlIChnX2JtYXBbaV0pOwoJYnJlbHNlIChnX2JtYXBb
aV0pOwogICAgfQoKICAgICAKICAgIGJ3cml0ZSAoZ19yYl9iaCk7CiAgICBicmVsc2UgKGdfcmJf
YmgpOwoKICAgICAKICAgIGJ3cml0ZSAoZ19zYl9iaCk7CiAgICBicmVsc2UgKGdfc2JfYmgpOwp9
CgoKdm9pZCByZXBvcnQgKHZvaWQpCnsKICAgIHN0cnVjdCByZWlzZXJmc19zdXBlcl9ibG9jayAq
IHNiID0gKHN0cnVjdCByZWlzZXJmc19zdXBlcl9ibG9jayAqKWdfc2JfYmgtPmJfZGF0YTsKICAg
IHVuc2lnbmVkIGludCBpOwoKICAgIHByaW50ZiAoIkJsb2NrIHNpemUgJWQgYnl0ZXNcbiIsIChf
X2J1aWx0aW5fY29uc3RhbnRfcCgoX191MTYpKCAoIHNiLT5zX2Jsb2Nrc2l6ZSApICkpID8gKChf
X3UxNikoICgoKF9fdTE2KSggKCAoIHNiLT5zX2Jsb2Nrc2l6ZSApICkgKSAmIChfX3UxNikweDAw
ZmZVKSA8PCA4KSB8ICgoKF9fdTE2KSggKCAoIHNiLT5zX2Jsb2Nrc2l6ZSApICkgKSAmIChfX3Ux
NikweGZmMDBVKSA+PiA4KSApKSAgOiBfX2Zzd2FiMTYoKCAoIHNiLT5zX2Jsb2Nrc2l6ZSApICkp
KSAgKTsKICAgIHByaW50ZiAoIkJsb2NrIGNvdW50ICVkXG4iLCBnX2Jsb2NrX251bWJlcik7CiAg
ICBwcmludGYgKCJVc2VkIGJsb2NrcyAlZFxuIiwgZ19ibG9ja19udW1iZXIgLSAoX19idWlsdGlu
X2NvbnN0YW50X3AoKF9fdTMyKSggKCBzYi0+c19mcmVlX2Jsb2NrcyApICkpID8gKChfX3UzMiko
ICgoKF9fdTMyKSggKCAoIHNiLT5zX2ZyZWVfYmxvY2tzICkgKSApICYgKF9fdTMyKTB4MDAwMDAw
ZmZVTCkgPDwgMjQpIHwgKCgoX191MzIpKCAoICggc2ItPnNfZnJlZV9ibG9ja3MgKSApICkgJiAo
X191MzIpMHgwMDAwZmYwMFVMKSA8PCAgOCkgfCAoKChfX3UzMikoICggKCBzYi0+c19mcmVlX2Js
b2NrcyApICkgKSAmIChfX3UzMikweDAwZmYwMDAwVUwpID4+ICA4KSB8ICgoKF9fdTMyKSggKCAo
IHNiLT5zX2ZyZWVfYmxvY2tzICkgKSApICYgKF9fdTMyKTB4ZmYwMDAwMDBVTCkgPj4gMjQpICkp
ICA6IF9fZnN3YWIzMigoICggc2ItPnNfZnJlZV9ibG9ja3MgKSApKSkgICk7CiAgICBwcmludGYg
KCJcdEpvdXJuYWwgLSAlZCBibG9ja3MgKCVkLSVkKSwgam91cm5hbCBoZWFkZXIgaXMgaW4gYmxv
Y2sgJWRcbiIsCgkgICAgZ19qb3VybmFsX3NpemUsIAoJICAgIChfX2J1aWx0aW5fY29uc3RhbnRf
cCgoX191MzIpKCAoIHNiLT5zX2pvdXJuYWxfYmxvY2sgKSApKSA/ICgoX191MzIpKCAoKChfX3Uz
MikoICggKCBzYi0+c19qb3VybmFsX2Jsb2NrICkgKSApICYgKF9fdTMyKTB4MDAwMDAwZmZVTCkg
PDwgMjQpIHwgKCgoX191MzIpKCAoICggc2ItPnNfam91cm5hbF9ibG9jayApICkgKSAmIChfX3Uz
MikweDAwMDBmZjAwVUwpIDw8ICA4KSB8ICgoKF9fdTMyKSggKCAoIHNiLT5zX2pvdXJuYWxfYmxv
Y2sgKSApICkgJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiAgOCkgfCAoKChfX3UzMikoICggKCBz
Yi0+c19qb3VybmFsX2Jsb2NrICkgKSApICYgKF9fdTMyKTB4ZmYwMDAwMDBVTCkgPj4gMjQpICkp
ICA6IF9fZnN3YWIzMigoICggc2ItPnNfam91cm5hbF9ibG9jayApICkpKSAgLAoJICAgIChfX2J1
aWx0aW5fY29uc3RhbnRfcCgoX191MzIpKCAoIHNiLT5zX2pvdXJuYWxfYmxvY2sgKSApKSA/ICgo
X191MzIpKCAoKChfX3UzMikoICggKCBzYi0+c19qb3VybmFsX2Jsb2NrICkgKSApICYgKF9fdTMy
KTB4MDAwMDAwZmZVTCkgPDwgMjQpIHwgKCgoX191MzIpKCAoICggc2ItPnNfam91cm5hbF9ibG9j
ayApICkgKSAmIChfX3UzMikweDAwMDBmZjAwVUwpIDw8ICA4KSB8ICgoKF9fdTMyKSggKCAoIHNi
LT5zX2pvdXJuYWxfYmxvY2sgKSApICkgJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiAgOCkgfCAo
KChfX3UzMikoICggKCBzYi0+c19qb3VybmFsX2Jsb2NrICkgKSApICYgKF9fdTMyKTB4ZmYwMDAw
MDBVTCkgPj4gMjQpICkpICA6IF9fZnN3YWIzMigoICggc2ItPnNfam91cm5hbF9ibG9jayApICkp
KSAgICsgZ19qb3VybmFsX3NpemUgLSAxLAoJICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191
MzIpKCAoIHNiLT5zX2pvdXJuYWxfYmxvY2sgKSApKSA/ICgoX191MzIpKCAoKChfX3UzMikoICgg
KCBzYi0+c19qb3VybmFsX2Jsb2NrICkgKSApICYgKF9fdTMyKTB4MDAwMDAwZmZVTCkgPDwgMjQp
IHwgKCgoX191MzIpKCAoICggc2ItPnNfam91cm5hbF9ibG9jayApICkgKSAmIChfX3UzMikweDAw
MDBmZjAwVUwpIDw8ICA4KSB8ICgoKF9fdTMyKSggKCAoIHNiLT5zX2pvdXJuYWxfYmxvY2sgKSAp
ICkgJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiAgOCkgfCAoKChfX3UzMikoICggKCBzYi0+c19q
b3VybmFsX2Jsb2NrICkgKSApICYgKF9fdTMyKTB4ZmYwMDAwMDBVTCkgPj4gMjQpICkpICA6IF9f
ZnN3YWIzMigoICggc2ItPnNfam91cm5hbF9ibG9jayApICkpKSAgICsgZ19qb3VybmFsX3NpemUp
IDsKICAgIHByaW50ZiAoIlx0Qml0bWFwczogIik7CiAgICBmb3IgKGkgPSAwOyBpIDwgKF9fYnVp
bHRpbl9jb25zdGFudF9wKChfX3UxNikoICggc2ItPnNfYm1hcF9uciApICkpID8gKChfX3UxNiko
ICgoKF9fdTE2KSggKCAoIHNiLT5zX2JtYXBfbnIgKSApICkgJiAoX191MTYpMHgwMGZmVSkgPDwg
OCkgfCAoKChfX3UxNikoICggKCBzYi0+c19ibWFwX25yICkgKSApICYgKF9fdTE2KTB4ZmYwMFUp
ID4+IDgpICkpICA6IF9fZnN3YWIxNigoICggc2ItPnNfYm1hcF9uciApICkpKSAgOyBpICsrKQoJ
cHJpbnRmICgiJWxkJXMiLCBnX2JtYXBbaV0tPmJfYmxvY2tuciwgCgkJKGkgPT0gKF9fYnVpbHRp
bl9jb25zdGFudF9wKChfX3UxNikoICggc2ItPnNfYm1hcF9uciApICkpID8gKChfX3UxNikoICgo
KF9fdTE2KSggKCAoIHNiLT5zX2JtYXBfbnIgKSApICkgJiAoX191MTYpMHgwMGZmVSkgPDwgOCkg
fCAoKChfX3UxNikoICggKCBzYi0+c19ibWFwX25yICkgKSApICYgKF9fdTE2KTB4ZmYwMFUpID4+
IDgpICkpICA6IF9fZnN3YWIxNigoICggc2ItPnNfYm1hcF9uciApICkpKSAgIC0gMSkgPyAiXG4i
IDogIiwgIik7CiAgICBwcmludGYgKCJcdFJvb3QgYmxvY2sgJWRcbiIsIChfX2J1aWx0aW5fY29u
c3RhbnRfcCgoX191MzIpKCAoIHNiLT5zX3Jvb3RfYmxvY2sgKSApKSA/ICgoX191MzIpKCAoKChf
X3UzMikoICggKCBzYi0+c19yb290X2Jsb2NrICkgKSApICYgKF9fdTMyKTB4MDAwMDAwZmZVTCkg
PDwgMjQpIHwgKCgoX191MzIpKCAoICggc2ItPnNfcm9vdF9ibG9jayApICkgKSAmIChfX3UzMikw
eDAwMDBmZjAwVUwpIDw8ICA4KSB8ICgoKF9fdTMyKSggKCAoIHNiLT5zX3Jvb3RfYmxvY2sgKSAp
ICkgJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiAgOCkgfCAoKChfX3UzMikoICggKCBzYi0+c19y
b290X2Jsb2NrICkgKSApICYgKF9fdTMyKTB4ZmYwMDAwMDBVTCkgPj4gMjQpICkpICA6IF9fZnN3
YWIzMigoICggc2ItPnNfcm9vdF9ibG9jayApICkpKSAgKTsKICAgIHByaW50ZiAoIkhhc2ggZnVu
Y3Rpb24gXCIlc1wiXG4iLCBnX2hhc2ggPT0gMSAgPyAidGVhIiA6CgkgICAgKChnX2hhc2ggPT0g
MiApID8gInJ1cGFzb3YiIDogInI1IikpOwogICAgZmZsdXNoIChzdGRvdXQgKTsKfQoKCnN0YXRp
YyB2b2lkIGRpc2NhcmRfb2xkX2ZpbGVzeXN0ZW1zIChpbnQgZGV2KQp7CiAgICBzdHJ1Y3QgYnVm
ZmVyX2hlYWQgKiBiaDsKCiAgICAgCgogICAgYmggPSBnZXRibGsgKGRldiwgMCwgMjA0OCk7CiAg
ICAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKCAgMjA0OCApICYmICggIDIw
NDggKSA8PSAxNgk/ICgoICAyMDQ4ICkgPT0gMQk/ICh7IHZvaWQgKl9fcyA9ICggIGJoLT5iX2Rh
dGEgICk7CSooKF9fdWludDhfdCAqKSBfX3MpID0gKF9fdWludDhfdCkgICAgIDAgIDsgX19zOyB9
KSAJOiAoeyB2b2lkICpfX3MgPSAoICBiaC0+Yl9kYXRhICApOwl1bmlvbiB7CXVuc2lnbmVkIGlu
dCBfX3VpOwl1bnNpZ25lZCBzaG9ydCBpbnQgX191c2k7CXVuc2lnbmVkIGNoYXIgX191YzsJfSAq
X191ID0gX19zOwlfX3VpbnQ4X3QgX19jID0gKF9fdWludDhfdCkgKCAgICAwICApOwlzd2l0Y2gg
KCh1bnNpZ25lZCBpbnQpICggICAgMjA0OCAgKSkJewljYXNlIDE1OglfX3UtPl9fdWkgPSBfX2Mg
KiAweDAxMDEwMTAxOwlfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsJY2Fz
ZSAxMToJX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsJX191ID0gX19leHRlbnNpb25fXyAo
KHZvaWQgKikgX191ICsgNCk7CWNhc2UgNzoJX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsJ
X191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CWNhc2UgMzoJX191LT5fX3Vz
aSA9ICh1bnNpZ25lZCBzaG9ydCBpbnQpIF9fYyAqIDB4MDEwMTsJX191ID0gX19leHRlbnNpb25f
XyAoKHZvaWQgKikgX191ICsgMik7CV9fdS0+X191YyA9ICh1bnNpZ25lZCBjaGFyKSBfX2M7CWJy
ZWFrOwljYXNlIDE0OglfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOwlfX3UgPSBfX2V4dGVu
c2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsJY2FzZSAxMDoJX191LT5fX3VpID0gX19jICogMHgw
MTAxMDEwMTsJX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CWNhc2UgNjoJ
X191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsJX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQg
KikgX191ICsgNCk7CWNhc2UgMjoJX191LT5fX3VzaSA9ICh1bnNpZ25lZCBzaG9ydCBpbnQpIF9f
YyAqIDB4MDEwMTsJYnJlYWs7CWNhc2UgMTM6CV9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7
CV9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwljYXNlIDk6CV9fdS0+X191
aSA9IF9fYyAqIDB4MDEwMTAxMDE7CV9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSAr
IDQpOwljYXNlIDU6CV9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7CV9fdSA9IF9fZXh0ZW5z
aW9uX18gKCh2b2lkICopIF9fdSArIDQpOwljYXNlIDE6CV9fdS0+X191YyA9ICh1bnNpZ25lZCBj
aGFyKSBfX2M7CWJyZWFrOwljYXNlIDE2OglfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOwlf
X3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsJY2FzZSAxMjoJX191LT5fX3Vp
ID0gX19jICogMHgwMTAxMDEwMTsJX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsg
NCk7CWNhc2UgODoJX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsJX191ID0gX19leHRlbnNp
b25fXyAoKHZvaWQgKikgX191ICsgNCk7CWNhc2UgNDoJX191LT5fX3VpID0gX19jICogMHgwMTAx
MDEwMTsJY2FzZSAwOglicmVhazsJfQlfX3M7IH0pICkJOiAoX19idWlsdGluX2NvbnN0YW50X3Ag
KCAgMCApICYmICggIDAgKSA9PSAnXDAnCT8gKHsgdm9pZCAqX19zID0gKCBiaC0+Yl9kYXRhICk7
IF9fYnVpbHRpbl9tZW1zZXQgKCBfX3MgLCAnXDAnLCAgICAgMjA0OCAgKSA7IF9fczsgfSkJOiBt
ZW1zZXQgKCBiaC0+Yl9kYXRhICwgICAwICwgICAyMDQ4ICkpKSkgOwogICAgbWFya19idWZmZXJf
dXB0b2RhdGUgKGJoLCAxKTsKICAgIG1hcmtfYnVmZmVyX2RpcnR5IChiaCwgMSk7CiAgICBid3Jp
dGUgKGJoKTsKICAgIGJyZWxzZSAoYmgpOwogICAgCiAgICAgCiAgICBiaCA9IGdldGJsayAoZGV2
LCA4LCAxMDI0KTsKICAgIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoICAx
MDI0ICkgJiYgKCAgMTAyNCApIDw9IDE2CT8gKCggIDEwMjQgKSA9PSAxCT8gKHsgdm9pZCAqX19z
ID0gKCAgYmgtPmJfZGF0YSAgKTsJKigoX191aW50OF90ICopIF9fcykgPSAoX191aW50OF90KSAg
ICAgMCAgOyBfX3M7IH0pIAk6ICh7IHZvaWQgKl9fcyA9ICggIGJoLT5iX2RhdGEgICk7CXVuaW9u
IHsJdW5zaWduZWQgaW50IF9fdWk7CXVuc2lnbmVkIHNob3J0IGludCBfX3VzaTsJdW5zaWduZWQg
Y2hhciBfX3VjOwl9ICpfX3UgPSBfX3M7CV9fdWludDhfdCBfX2MgPSAoX191aW50OF90KSAoICAg
IDAgICk7CXN3aXRjaCAoKHVuc2lnbmVkIGludCkgKCAgICAxMDI0ICApKQl7CWNhc2UgMTU6CV9f
dS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7CV9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICop
IF9fdSArIDQpOwljYXNlIDExOglfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOwlfX3UgPSBf
X2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsJY2FzZSA3OglfX3UtPl9fdWkgPSBfX2Mg
KiAweDAxMDEwMTAxOwlfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsJY2Fz
ZSAzOglfX3UtPl9fdXNpID0gKHVuc2lnbmVkIHNob3J0IGludCkgX19jICogMHgwMTAxOwlfX3Ug
PSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsJX191LT5fX3VjID0gKHVuc2lnbmVk
IGNoYXIpIF9fYzsJYnJlYWs7CWNhc2UgMTQ6CV9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7
CV9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwljYXNlIDEwOglfX3UtPl9f
dWkgPSBfX2MgKiAweDAxMDEwMTAxOwlfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3Ug
KyA0KTsJY2FzZSA2OglfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOwlfX3UgPSBfX2V4dGVu
c2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsJY2FzZSAyOglfX3UtPl9fdXNpID0gKHVuc2lnbmVk
IHNob3J0IGludCkgX19jICogMHgwMTAxOwlicmVhazsJY2FzZSAxMzoJX191LT5fX3VpID0gX19j
ICogMHgwMTAxMDEwMTsJX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CWNh
c2UgOToJX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsJX191ID0gX19leHRlbnNpb25fXyAo
KHZvaWQgKikgX191ICsgNCk7CWNhc2UgNToJX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsJ
X191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CWNhc2UgMToJX191LT5fX3Vj
ID0gKHVuc2lnbmVkIGNoYXIpIF9fYzsJYnJlYWs7CWNhc2UgMTY6CV9fdS0+X191aSA9IF9fYyAq
IDB4MDEwMTAxMDE7CV9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwljYXNl
IDEyOglfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOwlfX3UgPSBfX2V4dGVuc2lvbl9fICgo
dm9pZCAqKSBfX3UgKyA0KTsJY2FzZSA4OglfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOwlf
X3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsJY2FzZSA0OglfX3UtPl9fdWkg
PSBfX2MgKiAweDAxMDEwMTAxOwljYXNlIDA6CWJyZWFrOwl9CV9fczsgfSkgKQk6IChfX2J1aWx0
aW5fY29uc3RhbnRfcCAoICAwICkgJiYgKCAgMCApID09ICdcMCcJPyAoeyB2b2lkICpfX3MgPSAo
IGJoLT5iX2RhdGEgKTsgX19idWlsdGluX21lbXNldCAoIF9fcyAsICdcMCcsICAgICAxMDI0ICAp
IDsgX19zOyB9KQk6IG1lbXNldCAoIGJoLT5iX2RhdGEgLCAgIDAgLCAgIDEwMjQgKSkpKSA7CiAg
ICBtYXJrX2J1ZmZlcl91cHRvZGF0ZSAoYmgsIDEpOwogICAgbWFya19idWZmZXJfZGlydHkgKGJo
LCAxKTsKICAgIGJ3cml0ZSAoYmgpOwogICAgYnJlbHNlIChiaCk7CiAgCn0KCgpzdGF0aWMgdm9p
ZCBzZXRfYmxvY2tfc2l6ZSAoY2hhciAqIHN0cikKewogICAgY2hhciAqIHRtcDsKCiAgICBnX2Js
b2NrX3NpemUgPSAoaW50KSBzdHJ0b2wgKHN0ciwgJnRtcCwgMCk7CiAgICBpZiAoKnRtcCkKCWRp
ZSAoIm1rcmVpc2VyZnM6IHdyb25nIGJsb2NrIHNpemUgc3BlY2lmaWVkOiAlc1xuIiwgc3RyKTsK
ICAgICAgCiAgICBpZiAoZ19ibG9ja19zaXplICE9IDQpCglkaWUgKCJta3JlaXNlcmZzOiAlZGsg
aXMgd3JvbmcgYmxvY2sgc2l6ZSIsIGdfYmxvY2tfc2l6ZSk7CgogICAgZ19ibG9ja19zaXplICo9
IDEwMjQ7Cn0KCgogCnN0YXRpYyB2b2lkIHNldF9qb3VybmFsX3NpemUgKGNoYXIgKiBzdHIpCnsK
ICAgIGNoYXIgKiB0bXA7CgogICAgZ19qb3VybmFsX3NpemUgPSAoaW50KSBzdHJ0b2wgKHN0ciwg
JnRtcCwgMCk7CiAgICBpZiAoKnRtcCkKCWRpZSAoIm1rcmVpc2VyZnM6IHdyb25nIGpvdXJuYWwg
c2l6ZSBzcGVjaWZpZWQ6ICVzXG4iLCBzdHIpOwoKICAgIGlmIChnX2pvdXJuYWxfc2l6ZSA8IDgx
OTIgIC8gMiB8fCAKCWdfam91cm5hbF9zaXplID4gODE5MiAgKiAyKQoJZGllICgibWtyZWlzZXJm
czogd3Jvbmcgam91cm5hbCBzaXplIHNwZWNpZmllZDogJXNcbiIsIHN0cik7Cn0KCgogCnN0YXRp
YyB2b2lkIHNldF9ibG9ja19udW1iZXIgKGNoYXIgKiBzdHIpCnsKICAgIGNoYXIgKiB0bXA7Cgog
ICAgZ19ibG9ja19udW1iZXIgPSAoaW50KSBzdHJ0b2wgKHN0ciwgJnRtcCwgMCk7CiAgICBpZiAo
KnRtcCkKCWRpZSAoIm1rcmVpc2VyZnM6IHdyb25nIGJsb2NrIG51bWJlciBzcGVjaWZpZWQ6ICVz
XG4iLCBzdHIpOwogICAgICAKICAgIGlmIChnX2Jsb2NrX251bWJlciA+IGdfYmxvY2tzX29uX2Rl
dmljZSkKICAgICAgZGllICgibWtyZWlzZXJmczogdGhlcmUgYXJlIG5vdCBzbyBtYW55IGJsb2Nr
cyBvbiBkZXZpY2UiLCBnX2Jsb2NrX251bWJlcik7Cgp9CgoKc3RhdGljIHZvaWQgc2V0X2hhc2hf
ZnVuY3Rpb24gKGNoYXIgKiBzdHIpCnsKICAgIGlmICghIF9fZXh0ZW5zaW9uX18JKHsgc2l6ZV90
IF9fczFfbGVuLCBfX3MyX2xlbjsJKF9fYnVpbHRpbl9jb25zdGFudF9wICggc3RyICkgJiYgX19i
dWlsdGluX2NvbnN0YW50X3AgKCAgInRlYSIgKQkmJiAoX19zMV9sZW4gPSBzdHJsZW4gKCBzdHIg
KSwgX19zMl9sZW4gPSBzdHJsZW4gKCAgInRlYSIgKSwJKCEgKChzaXplX3QpKGNvbnN0IHZvaWQg
KikoKCAgc3RyICApICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCAgc3RyICApID09IDEp
ICB8fCBfX3MxX2xlbiA+PSA0KQkmJiAoISAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoICAgInRl
YSIgICkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoICAgInRlYSIgICkgPT0gMSkgIHx8
IF9fczJfbGVuID49IDQpKQk/IG1lbWNtcCAoKF9fY29uc3QgY2hhciAqKSAoIHN0ciApLCAoX19j
b25zdCBjaGFyICopICggICJ0ZWEiICksCShfX3MxX2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4g
OiBfX3MyX2xlbikgKyAxKQk6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIHN0ciApICYmICgoc2l6
ZV90KShjb25zdCB2b2lkICopKCggIHN0ciAgKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSggIHN0ciAgKSA9PSAxKSAJJiYgKF9fczFfbGVuID0gc3RybGVuICggc3RyICksIF9fczFfbGVu
IDwgNCkJPyAoX19idWlsdGluX2NvbnN0YW50X3AgKCAgInRlYSIgKSAmJiAoKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgoICAgInRlYSIgICkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoICAg
InRlYSIgICkgPT0gMSkgCT8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0
ID0JKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCAgc3RyICAp
KVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoICAgICJ0
ZWEiICApKVswXSk7CWlmICggIF9fczFfbGVuICA+IDAgJiYgX19yZXN1bHQgPT0gMCkJewlfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKQkoX19jb25zdCBjaGFyICopICggIHN0
ciAgKSlbMV0JLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKQkoX19jb25zdCBjaGFyICopICgg
ICAgInRlYSIgICkpWzFdKTsJaWYgKCAgX19zMV9sZW4gID4gMSAmJiBfX3Jlc3VsdCA9PSAwKQl7
CV9fcmVzdWx0ID0JKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopCShfX2NvbnN0IGNoYXIgKikg
KCAgc3RyICApKVsyXQktICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopCShfX2NvbnN0IGNoYXIg
KikgKCAgICAidGVhIiAgKSlbMl0pOwlpZiAoICBfX3MxX2xlbiAgPiAyICYmIF9fcmVzdWx0ID09
IDApCV9fcmVzdWx0ID0JKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopCShfX2NvbnN0IGNoYXIg
KikgKCAgc3RyICApKVszXQktICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopCShfX2NvbnN0IGNo
YXIgKikgKCAgICAidGVhIiAgKSlbM10pOwl9CX0JX19yZXN1bHQ7IH0pKSAJOiAoX19leHRlbnNp
b25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPQkoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCAgICAidGVhIiAgKTsJcmVnaXN0ZXIgaW50IF9fcmVz
dWx0ID0JKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCAgc3Ry
ICApKVswXSAtIF9fczJbMF0pOwlpZiAoICBfX3MxX2xlbiAgPiAwICYmIF9fcmVzdWx0ID09IDAp
CXsJX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikJKF9fY29uc3QgY2hhciAq
KSAoICBzdHIgICkpWzFdIC0gX19zMlsxXSk7IGlmICggIF9fczFfbGVuICA+IDEgJiYgX19yZXN1
bHQgPT0gMCkJewlfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKQkoX19jb25z
dCBjaGFyICopICggIHN0ciAgKSlbMl0gLSBfX3MyWzJdKTsJaWYgKCAgX19zMV9sZW4gID4gMiAm
JiBfX3Jlc3VsdCA9PSAwKQlfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKQko
X19jb25zdCBjaGFyICopICAoICBzdHIgICkpWzNdCS0gX19zMlszXSk7CX0JfQlfX3Jlc3VsdDsg
fSkpICkJOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCAgInRlYSIgKSAmJiAoKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgoICAgInRlYSIgICkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoICAg
InRlYSIgICkgPT0gMSkgCSYmIChfX3MyX2xlbiA9IHN0cmxlbiAoICAidGVhIiApLCBfX3MyX2xl
biA8IDQpCT8gKF9fYnVpbHRpbl9jb25zdGFudF9wICggc3RyICkgJiYgKChzaXplX3QpKGNvbnN0
IHZvaWQgKikoKCAgc3RyICApICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCAgc3RyICAp
ID09IDEpIAk/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9CSgoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICggIHN0ciAgKSlbMF0gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCAgICAidGVhIiAgKSlb
MF0pOwlpZiAoICBfX3MyX2xlbiAgPiAwICYmIF9fcmVzdWx0ID09IDApCXsJX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikJKF9fY29uc3QgY2hhciAqKSAoICBzdHIgICkpWzFd
CS0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikJKF9fY29uc3QgY2hhciAqKSAoICAgICJ0ZWEi
ICApKVsxXSk7CWlmICggIF9fczJfbGVuICA+IDEgJiYgX19yZXN1bHQgPT0gMCkJewlfX3Jlc3Vs
dCA9CSgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKQkoX19jb25zdCBjaGFyICopICggIHN0ciAg
KSlbMl0JLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKQkoX19jb25zdCBjaGFyICopICggICAg
InRlYSIgICkpWzJdKTsJaWYgKCAgX19zMl9sZW4gID4gMiAmJiBfX3Jlc3VsdCA9PSAwKQlfX3Jl
c3VsdCA9CSgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKQkoX19jb25zdCBjaGFyICopICggIHN0
ciAgKSlbM10JLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKQkoX19jb25zdCBjaGFyICopICgg
ICAgInRlYSIgICkpWzNdKTsJfQl9CV9fcmVzdWx0OyB9KSkgCTogKF9fZXh0ZW5zaW9uX18gKHsg
X19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0JKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICggIHN0ciAgKTsJcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0JX19zMVsw
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopCShfX2NvbnN0IGNoYXIgKikgKCAgICAidGVh
IiAgKSlbMF07CWlmICggIF9fczJfbGVuICA+IDAgJiYgX19yZXN1bHQgPT0gMCkJewlfX3Jlc3Vs
dCA9IChfX3MxWzFdCS0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikJKF9fY29uc3QgY2hhciAq
KSAoICAgICJ0ZWEiICApKVsxXSk7CWlmICggIF9fczJfbGVuICA+IDEgJiYgX19yZXN1bHQgPT0g
MCkJewlfX3Jlc3VsdCA9CShfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikJKF9f
Y29uc3QgY2hhciAqKSAoICAgICJ0ZWEiICApKVsyXSk7CWlmICggIF9fczJfbGVuICA+IDIgJiYg
X19yZXN1bHQgPT0gMCkJX19yZXN1bHQgPQkoX19zMVszXQktICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopCShfX2NvbnN0IGNoYXIgKikgKCAgICAidGVhIiAgKSlbM10pOwl9CX0JX19yZXN1bHQ7
IH0pKSApCTogc3RyY21wICggc3RyICwgICAidGVhIiApKSkpOyB9KSApCglnX2hhc2ggPSAxIDsK
ICAgIGVsc2UgaWYgKCEgX19leHRlbnNpb25fXwkoeyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVu
OwkoX19idWlsdGluX2NvbnN0YW50X3AgKCBzdHIgKSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAo
ICAicnVwYXNvdiIgKQkmJiAoX19zMV9sZW4gPSBzdHJsZW4gKCBzdHIgKSwgX19zMl9sZW4gPSBz
dHJsZW4gKCAgInJ1cGFzb3YiICksCSghICgoc2l6ZV90KShjb25zdCB2b2lkICopKCggIHN0ciAg
KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSggIHN0ciAgKSA9PSAxKSAgfHwgX19zMV9s
ZW4gPj0gNCkJJiYgKCEgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCAgICJydXBhc292IiAgKSAr
IDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSggICAicnVwYXNvdiIgICkgPT0gMSkgIHx8IF9f
czJfbGVuID49IDQpKQk/IG1lbWNtcCAoKF9fY29uc3QgY2hhciAqKSAoIHN0ciApLCAoX19jb25z
dCBjaGFyICopICggICJydXBhc292IiApLAkoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVu
IDogX19zMl9sZW4pICsgMSkJOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCBzdHIgKSAmJiAoKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgoICBzdHIgICkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQg
KikoICBzdHIgICkgPT0gMSkgCSYmIChfX3MxX2xlbiA9IHN0cmxlbiAoIHN0ciApLCBfX3MxX2xl
biA8IDQpCT8gKF9fYnVpbHRpbl9jb25zdGFudF9wICggICJydXBhc292IiApICYmICgoc2l6ZV90
KShjb25zdCB2b2lkICopKCggICAicnVwYXNvdiIgICkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZv
aWQgKikoICAgInJ1cGFzb3YiICApID09IDEpIAk/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVy
IGludCBfX3Jlc3VsdCA9CSgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICggIHN0ciAgKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopKCAgICAicnVwYXNvdiIgICkpWzBdKTsJaWYgKCAgX19zMV9sZW4gID4gMCAmJiBfX3Jl
c3VsdCA9PSAwKQl7CV9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopCShfX2Nv
bnN0IGNoYXIgKikgKCAgc3RyICApKVsxXQktICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopCShf
X2NvbnN0IGNoYXIgKikgKCAgICAicnVwYXNvdiIgICkpWzFdKTsJaWYgKCAgX19zMV9sZW4gID4g
MSAmJiBfX3Jlc3VsdCA9PSAwKQl7CV9fcmVzdWx0ID0JKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopCShfX2NvbnN0IGNoYXIgKikgKCAgc3RyICApKVsyXQktICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopCShfX2NvbnN0IGNoYXIgKikgKCAgICAicnVwYXNvdiIgICkpWzJdKTsJaWYgKCAgX19z
MV9sZW4gID4gMiAmJiBfX3Jlc3VsdCA9PSAwKQlfX3Jlc3VsdCA9CSgoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKQkoX19jb25zdCBjaGFyICopICggIHN0ciAgKSlbM10JLSAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKQkoX19jb25zdCBjaGFyICopICggICAgInJ1cGFzb3YiICApKVszXSk7CX0J
fQlfX3Jlc3VsdDsgfSkpIAk6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqX19zMiA9CShfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoICAg
ICJydXBhc292IiAgKTsJcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0JKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCAgc3RyICApKVswXSAtIF9fczJbMF0pOwlpZiAo
ICBfX3MxX2xlbiAgPiAwICYmIF9fcmVzdWx0ID09IDApCXsJX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikJKF9fY29uc3QgY2hhciAqKSAoICBzdHIgICkpWzFdIC0gX19zMlsx
XSk7IGlmICggIF9fczFfbGVuICA+IDEgJiYgX19yZXN1bHQgPT0gMCkJewlfX3Jlc3VsdCA9ICgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKQkoX19jb25zdCBjaGFyICopICggIHN0ciAgKSlbMl0g
LSBfX3MyWzJdKTsJaWYgKCAgX19zMV9sZW4gID4gMiAmJiBfX3Jlc3VsdCA9PSAwKQlfX3Jlc3Vs
dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKQkoX19jb25zdCBjaGFyICopICAoICBzdHIg
ICkpWzNdCS0gX19zMlszXSk7CX0JfQlfX3Jlc3VsdDsgfSkpICkJOiAoX19idWlsdGluX2NvbnN0
YW50X3AgKCAgInJ1cGFzb3YiICkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCAgICJydXBh
c292IiAgKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSggICAicnVwYXNvdiIgICkgPT0g
MSkgCSYmIChfX3MyX2xlbiA9IHN0cmxlbiAoICAicnVwYXNvdiIgKSwgX19zMl9sZW4gPCA0KQk/
IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIHN0ciApICYmICgoc2l6ZV90KShjb25zdCB2b2lkICop
KCggIHN0ciAgKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSggIHN0ciAgKSA9PSAxKSAJ
PyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPQkoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoICBzdHIgICkpWzBdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSggICAgInJ1cGFzb3YiICApKVswXSk7
CWlmICggIF9fczJfbGVuICA+IDAgJiYgX19yZXN1bHQgPT0gMCkJewlfX3Jlc3VsdCA9ICgoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKQkoX19jb25zdCBjaGFyICopICggIHN0ciAgKSlbMV0JLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKQkoX19jb25zdCBjaGFyICopICggICAgInJ1cGFzb3Yi
ICApKVsxXSk7CWlmICggIF9fczJfbGVuICA+IDEgJiYgX19yZXN1bHQgPT0gMCkJewlfX3Jlc3Vs
dCA9CSgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKQkoX19jb25zdCBjaGFyICopICggIHN0ciAg
KSlbMl0JLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKQkoX19jb25zdCBjaGFyICopICggICAg
InJ1cGFzb3YiICApKVsyXSk7CWlmICggIF9fczJfbGVuICA+IDIgJiYgX19yZXN1bHQgPT0gMCkJ
X19yZXN1bHQgPQkoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikJKF9fY29uc3QgY2hhciAqKSAo
ICBzdHIgICkpWzNdCS0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikJKF9fY29uc3QgY2hhciAq
KSAoICAgICJydXBhc292IiAgKSlbM10pOwl9CX0JX19yZXN1bHQ7IH0pKSAJOiAoX19leHRlbnNp
b25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPQkoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCAgc3RyICApOwlyZWdpc3RlciBpbnQgX19yZXN1bHQg
PQlfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikJKF9fY29uc3QgY2hhciAqKSAo
ICAgICJydXBhc292IiAgKSlbMF07CWlmICggIF9fczJfbGVuICA+IDAgJiYgX19yZXN1bHQgPT0g
MCkJewlfX3Jlc3VsdCA9IChfX3MxWzFdCS0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikJKF9f
Y29uc3QgY2hhciAqKSAoICAgICJydXBhc292IiAgKSlbMV0pOwlpZiAoICBfX3MyX2xlbiAgPiAx
ICYmIF9fcmVzdWx0ID09IDApCXsJX19yZXN1bHQgPQkoX19zMVsyXSAtICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopCShfX2NvbnN0IGNoYXIgKikgKCAgICAicnVwYXNvdiIgICkpWzJdKTsJaWYg
KCAgX19zMl9sZW4gID4gMiAmJiBfX3Jlc3VsdCA9PSAwKQlfX3Jlc3VsdCA9CShfX3MxWzNdCS0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikJKF9fY29uc3QgY2hhciAqKSAoICAgICJydXBhc292
IiAgKSlbM10pOwl9CX0JX19yZXN1bHQ7IH0pKSApCTogc3RyY21wICggc3RyICwgICAicnVwYXNv
diIgKSkpKTsgfSkgKQoJZ19oYXNoID0gMiA7CiAgICBlbHNlIGlmICghIF9fZXh0ZW5zaW9uX18J
KHsgc2l6ZV90IF9fczFfbGVuLCBfX3MyX2xlbjsJKF9fYnVpbHRpbl9jb25zdGFudF9wICggc3Ry
ICkgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKCAgInI1IiApCSYmIChfX3MxX2xlbiA9IHN0cmxl
biAoIHN0ciApLCBfX3MyX2xlbiA9IHN0cmxlbiAoICAicjUiICksCSghICgoc2l6ZV90KShjb25z
dCB2b2lkICopKCggIHN0ciAgKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSggIHN0ciAg
KSA9PSAxKSAgfHwgX19zMV9sZW4gPj0gNCkJJiYgKCEgKChzaXplX3QpKGNvbnN0IHZvaWQgKiko
KCAgICJyNSIgICkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoICAgInI1IiAgKSA9PSAx
KSAgfHwgX19zMl9sZW4gPj0gNCkpCT8gbWVtY21wICgoX19jb25zdCBjaGFyICopICggc3RyICks
IChfX2NvbnN0IGNoYXIgKikgKCAgInI1IiApLAkoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFf
bGVuIDogX19zMl9sZW4pICsgMSkJOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCBzdHIgKSAmJiAo
KHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoICBzdHIgICkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZv
aWQgKikoICBzdHIgICkgPT0gMSkgCSYmIChfX3MxX2xlbiA9IHN0cmxlbiAoIHN0ciApLCBfX3Mx
X2xlbiA8IDQpCT8gKF9fYnVpbHRpbl9jb25zdGFudF9wICggICJyNSIgKSAmJiAoKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgoICAgInI1IiAgKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgg
ICAicjUiICApID09IDEpIAk/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3Vs
dCA9CSgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICggIHN0ciAg
KSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCAgICAi
cjUiICApKVswXSk7CWlmICggIF9fczFfbGVuICA+IDAgJiYgX19yZXN1bHQgPT0gMCkJewlfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKQkoX19jb25zdCBjaGFyICopICggIHN0
ciAgKSlbMV0JLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKQkoX19jb25zdCBjaGFyICopICgg
ICAgInI1IiAgKSlbMV0pOwlpZiAoICBfX3MxX2xlbiAgPiAxICYmIF9fcmVzdWx0ID09IDApCXsJ
X19yZXN1bHQgPQkoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikJKF9fY29uc3QgY2hhciAqKSAo
ICBzdHIgICkpWzJdCS0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikJKF9fY29uc3QgY2hhciAq
KSAoICAgICJyNSIgICkpWzJdKTsJaWYgKCAgX19zMV9sZW4gID4gMiAmJiBfX3Jlc3VsdCA9PSAw
KQlfX3Jlc3VsdCA9CSgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKQkoX19jb25zdCBjaGFyICop
ICggIHN0ciAgKSlbM10JLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKQkoX19jb25zdCBjaGFy
ICopICggICAgInI1IiAgKSlbM10pOwl9CX0JX19yZXN1bHQ7IH0pKSAJOiAoX19leHRlbnNpb25f
XyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPQkoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCAgICAicjUiICApOwlyZWdpc3RlciBpbnQgX19yZXN1bHQg
PQkoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoICBzdHIgICkp
WzBdIC0gX19zMlswXSk7CWlmICggIF9fczFfbGVuICA+IDAgJiYgX19yZXN1bHQgPT0gMCkJewlf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKQkoX19jb25zdCBjaGFyICopICgg
IHN0ciAgKSlbMV0gLSBfX3MyWzFdKTsgaWYgKCAgX19zMV9sZW4gID4gMSAmJiBfX3Jlc3VsdCA9
PSAwKQl7CV9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopCShfX2NvbnN0IGNo
YXIgKikgKCAgc3RyICApKVsyXSAtIF9fczJbMl0pOwlpZiAoICBfX3MxX2xlbiAgPiAyICYmIF9f
cmVzdWx0ID09IDApCV9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopCShfX2Nv
bnN0IGNoYXIgKikgICggIHN0ciAgKSlbM10JLSBfX3MyWzNdKTsJfQl9CV9fcmVzdWx0OyB9KSkg
KQk6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoICAicjUiICkgJiYgKChzaXplX3QpKGNvbnN0IHZv
aWQgKikoKCAgICJyNSIgICkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoICAgInI1IiAg
KSA9PSAxKSAJJiYgKF9fczJfbGVuID0gc3RybGVuICggICJyNSIgKSwgX19zMl9sZW4gPCA0KQk/
IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIHN0ciApICYmICgoc2l6ZV90KShjb25zdCB2b2lkICop
KCggIHN0ciAgKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSggIHN0ciAgKSA9PSAxKSAJ
PyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPQkoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoICBzdHIgICkpWzBdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSggICAgInI1IiAgKSlbMF0pOwlpZiAo
ICBfX3MyX2xlbiAgPiAwICYmIF9fcmVzdWx0ID09IDApCXsJX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikJKF9fY29uc3QgY2hhciAqKSAoICBzdHIgICkpWzFdCS0gKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikJKF9fY29uc3QgY2hhciAqKSAoICAgICJyNSIgICkpWzFdKTsJ
aWYgKCAgX19zMl9sZW4gID4gMSAmJiBfX3Jlc3VsdCA9PSAwKQl7CV9fcmVzdWx0ID0JKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopCShfX2NvbnN0IGNoYXIgKikgKCAgc3RyICApKVsyXQktICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopCShfX2NvbnN0IGNoYXIgKikgKCAgICAicjUiICApKVsy
XSk7CWlmICggIF9fczJfbGVuICA+IDIgJiYgX19yZXN1bHQgPT0gMCkJX19yZXN1bHQgPQkoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikJKF9fY29uc3QgY2hhciAqKSAoICBzdHIgICkpWzNdCS0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikJKF9fY29uc3QgY2hhciAqKSAoICAgICJyNSIgICkp
WzNdKTsJfQl9CV9fcmVzdWx0OyB9KSkgCTogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNp
Z25lZCBjaGFyICpfX3MxID0JKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICggIHN0ciAgKTsJcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0JX19zMVswXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopCShfX2NvbnN0IGNoYXIgKikgKCAgICAicjUiICApKVswXTsJaWYg
KCAgX19zMl9sZW4gID4gMCAmJiBfX3Jlc3VsdCA9PSAwKQl7CV9fcmVzdWx0ID0gKF9fczFbMV0J
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKQkoX19jb25zdCBjaGFyICopICggICAgInI1IiAg
KSlbMV0pOwlpZiAoICBfX3MyX2xlbiAgPiAxICYmIF9fcmVzdWx0ID09IDApCXsJX19yZXN1bHQg
PQkoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopCShfX2NvbnN0IGNoYXIgKikg
KCAgICAicjUiICApKVsyXSk7CWlmICggIF9fczJfbGVuICA+IDIgJiYgX19yZXN1bHQgPT0gMCkJ
X19yZXN1bHQgPQkoX19zMVszXQktICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopCShfX2NvbnN0
IGNoYXIgKikgKCAgICAicjUiICApKVszXSk7CX0JfQlfX3Jlc3VsdDsgfSkpICkJOiBzdHJjbXAg
KCBzdHIgLCAgICJyNSIgKSkpKTsgfSkgKQoJZ19oYXNoID0gMyA7CiAgICBlbHNlCglwcmludGYg
KCJta3JlaXNlcmZzOiB3cm9uZyBoYXNoIHR5cGUgc3BlY2lmaWVkLiBVc2luZyBkZWZhdWx0XG4i
KTsKfQoKaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKewogICAgaW50IGRldjsKICAg
IGludCBmb3JjZSA9IDA7CiAgICBzdHJ1Y3Qgc3RhdCBzdGF0YnVmOwogICAgY2hhciAqIGRldmlj
ZV9uYW1lOwogICAgY2hhciBjOwoKICAgIHByaW50ZiAoIlxuXG48LS0tLS0tLS0tLS0gTUtSRUlT
RVJGU3YyIC0tLS0tLS0tLS0tPlxuXG4iKTsKICAgIHByaW50ZiAoIiVzXG4iLCByZWlzZXJmc19n
ZXRfdmVyc2lvbl9zdHJpbmcoKSk7CiAgICAKCiAgICBjbGVhcl9pbm9kZSAoMCk7CiAgICBpZiAo
MCkgewoJIAoJZ2V0YmxrICgwLDAsMCk7CglpcHV0ICgwKTsKICAgIH0KCgogICAgaWYgKGFyZ2Mg
PCAyKQoJZGllICgiVXNhZ2U6ICVzIFsgLWYgXSBbLWIgYmxvY2stc2l6ZV0gWy1oIHRlYXxyNV0g
ZGV2aWNlIFtibG9ja3MtY291bnRdXG5cbiIsIGFyZ3ZbMF0pIDsKCiAgICB3aGlsZSAoICggYyA9
IGdldG9wdCggYXJnYywgYXJndiwgImZiOmM6aDoiICkgKSAhPSAoLTEpICApCglzd2l0Y2goIGMg
KSB7CgljYXNlICdmJyA6ICAgICAgICAgICAgICAgICAgCgkgICAgZm9yY2UgPSAxOwoJICAgIGJy
ZWFrOwoKCWNhc2UgJ2InIDogICAgICAgICAgICAgICAgICAgCgkgICAgc2V0X2Jsb2NrX3NpemUg
KG9wdGFyZyk7CgkgICAgYnJlYWs7CgoJY2FzZSAnYyc6CgkgICAgc2V0X2pvdXJuYWxfc2l6ZSAo
b3B0YXJnKTsKCSAgICBicmVhazsKCgljYXNlICdoJzoKCSAgICBzZXRfaGFzaF9mdW5jdGlvbiAo
b3B0YXJnKTsKCSAgICBicmVhazsKCglkZWZhdWx0IDoKCSAgICBkaWUgKCJVc2FnZTogJXMgWyAt
ZiBdIFstYiBibG9jay1zaXplXSBbLWggdGVhfHI1XSBkZXZpY2UgW2Jsb2Nrcy1jb3VudF1cblxu
IiwgYXJndlswXSkgOwoJfQogICAgZGV2aWNlX25hbWUgPSBhcmd2IFtvcHRpbmRdOwogICAgaWYg
KGlzX21vdW50ZWQgKGRldmljZV9uYW1lKSkKCWRpZSAoIm1rcmVpc2VyZnM6ICclcycgY29udGFp
bnMgYSBtb3VudGVkIGZpbGUgc3lzdGVtXG4iLCBkZXZpY2VfbmFtZSk7CiAgCgogICAgIAogICAg
Z19ibG9ja3Nfb25fZGV2aWNlID0gY291bnRfYmxvY2tzIChkZXZpY2VfbmFtZSwgZ19ibG9ja19z
aXplKTsKICAgIGdfYmxvY2tfbnVtYmVyID0gZ19ibG9ja3Nfb25fZGV2aWNlOwogICAgaWYgKG9w
dGluZCA9PSBhcmdjIC0gMikKCXNldF9ibG9ja19udW1iZXIgKGFyZ3Zbb3B0aW5kICsgMV0pOwog
ICAgZWxzZSBpZiAob3B0aW5kICE9IGFyZ2MgLSAxKQoJZGllICgiVXNhZ2U6ICVzIFsgLWYgXSBb
LWIgYmxvY2stc2l6ZV0gWy1oIHRlYXxyNV0gZGV2aWNlIFtibG9ja3MtY291bnRdXG5cbiIsIGFy
Z3ZbMF0pIDsKCiAgICBnX2Jsb2NrX251bWJlciA9IGdfYmxvY2tfbnVtYmVyIC8gOCAqIDg7CiAg
ICAKICAgIGlmIChnX2Jsb2NrX251bWJlciA8IDEwMDAwICkKCWRpZSAoIlxuQ2FuIG5vdCBta3Jl
aXNlcmZzIHRoYXQgc21hbGwgcGFydGl0aW9uIChibG9jayBudW1iZXIgJWQpLlxuIFlvdSBuZWVk
IGF0IGxlYXN0IDMyIE1iIiwgZ19ibG9ja19udW1iZXIpOwoKICAgIGlmIChzdGF0IChkZXZpY2Vf
bmFtZSwgJnN0YXRidWYpIDwgMCkKCWRpZSAoIm1rcmVpc2VyZnM6IHVuYWJsZSB0byBzdGF0ICVz
IiwgZGV2aWNlX25hbWUpOwogIAogICAgaWYgKCEgKCgoICggc3RhdGJ1Zi5zdF9tb2RlICkgKSAm
IDAxNzAwMDAgKSA9PSAoICAwMDYwMDAwICApKSAgICYmICggZm9yY2UgPT0gMSApKQoJZGllICgi
bWtyZWlzZXJmczogJyVzICglbyknIGlzIG5vdCBhIGJsb2NrIGRldmljZSIsIGRldmljZV9uYW1l
LCBzdGF0YnVmLnN0X21vZGUpOwogICAgZWxzZSAgICAgICAgIAoJaWYgKCBzdGF0YnVmLnN0X3Jk
ZXYgPT0gMHgwMzAwIHx8IHN0YXRidWYuc3RfcmRldiA9PSAweDAzNDAgCgkgICAgIHx8IHN0YXRi
dWYuc3RfcmRldiA9PSAweDA0MDAgfHwgc3RhdGJ1Zi5zdF9yZGV2ID09IDB4MDQxMAoJICAgICB8
fCBzdGF0YnVmLnN0X3JkZXYgPT0gMHgwNDIwIHx8IHN0YXRidWYuc3RfcmRldiA9PSAweDA0MzAK
CSAgICAgfHwgc3RhdGJ1Zi5zdF9yZGV2ID09IDB4MGQwMCB8fCBzdGF0YnVmLnN0X3JkZXYgPT0g
MHgwZDQwICkKCSAgICAgCgkgICAgZGllICgibWtyZWlzZXJmczogd2lsbCBub3QgdHJ5IHRvIG1h
a2UgZmlsZXN5c3RlbSBvbiAnJXMnIiwgZGV2aWNlX25hbWUpOwogICAgZGV2ID0gb3BlbiAoZGV2
aWNlX25hbWUsIDAyICk7CiAgICBpZiAoZGV2ID09IC0xKQoJZGllICgibWtyZWlzZXJmczogY2Fu
IG5vdCBvcGVuICclcyc6ICVzIiwgZGV2aWNlX25hbWUsIHN0cmVycm9yICgoKl9fZXJybm9fbG9j
YXRpb24gKCkpICkpOwoKICAgICAKCiAgICBtYWtlX3N1cGVyX2Jsb2NrIChkZXYpOwogICAgbWFr
ZV9yb290X2Jsb2NrICgpOwogIAogICAgcmVwb3J0ICgpOwoKICAgIHByaW50ZiAoIkFUVEVOVElP
TjogQUxMIERBVEEgV0lMTCBCRSBMT1NUIE9OICclcychICh5L24pIiwgZGV2aWNlX25hbWUpOwog
ICAgYyA9IGdldGNoYXIgKCk7CiAgICBpZiAoYyAhPSAneScgJiYgYyAhPSAnWScpCglkaWUgKCJt
a3JlaXNlcmZzOiBEaXNrIHdhcyBub3QgZm9ybWF0dGVkIik7CgogICAgZGlzY2FyZF9vbGRfZmls
ZXN5c3RlbXMgKGRldik7CiAgICBtYWtlX25ld19maWxlc3lzdGVtICgpOwoKICAgIAoKICAgICAK
ICAgIGZzeW5jX2RldiAoMCk7CgogICAgcHJpbnRmICgiU3luY2luZy4uIik7IGZmbHVzaCAoc3Rk
b3V0ICk7CiAgICBzeW5jICgpOwogICAgcHJpbnRmICgiZG9uZS5cblxuIik7CgogICAgcmV0dXJu
IDA7Cgp9Cg==



More information about the Gcc-bugs mailing list