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


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

c/5203: initializer element is not constant



>Number:         5203
>Category:       c
>Synopsis:       initializer element is not constant
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Dec 27 02:26:00 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     georg.wild@gmx.de
>Release:        latest cvs
>Organization:
>Environment:
glibc-2.2.90 i686-pc-linux-gnu
>Description:
I don't exactly know whether this is really a bug! It might also be possible that this is only because of less error tolerance.
When I compile the attachment with gcc 3.0.1 it works, with current cvs I got errors in the following manor:
libsmb/errormap.c:1357: initializer element is not constant
libsmb/errormap.c:1357: (near initialization for `ntstatus_to_werror_map[531]')
>How-To-Repeat:
gcc errormap.i
>Fix:

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

IyAxICJsaWJzbWIvZXJyb3JtYXAuYyIKIyAxICI8YnVpbHQtaW4+IgojIDEgIjxjb21tYW5kIGxp
bmU+IgojIDEgImxpYnNtYi9lcnJvcm1hcC5jIgojIDIyICJsaWJzbWIvZXJyb3JtYXAuYyIKIyAx
ICJpbmNsdWRlL2luY2x1ZGVzLmgiIDEKIyAyNSAiaW5jbHVkZS9pbmNsdWRlcy5oIgojIDEgImlu
Y2x1ZGUvY29uZmlnLmgiIDEKIyAyNiAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCgoKIyAxICJpbmNs
dWRlL2xvY2FsLmgiIDEKIyAyOSAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgNzYgImluY2x1ZGUv
aW5jbHVkZXMuaCIKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDI2
ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1
ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjkxICIvdXNyL2xvY2FsL2luY2x1ZGUvZmVhdHVyZXMuaCIg
MwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzCiMgMjkyICIvdXNyL2xv
Y2FsL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMzIwICIvdXNyL2xvY2FsL2luY2x1ZGUvZmVh
dHVyZXMuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9nbnUvc3R1YnMuaCIgMSAzCiMgMzIx
ICIvdXNyL2xvY2FsL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMjcgIi91c3IvbG9jYWwvaW5j
bHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvdHlw
ZXMuaCIgMSAzCiMgMjkgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMKIyAxICIv
dXNyL2xvY2FsL2djYy8zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRl
L3N0ZGRlZi5oIiAxIDMKIyAyMDEgIi91c3IvbG9jYWwvZ2NjLzMvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
c2l6ZV90OwojIDMwICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgp0eXBl
ZGVmIHVuc2lnbmVkIGNoYXIgX191X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191X3No
b3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
X191X2xvbmc7CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBf
X3VfcXVhZF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nIGludCBfX3F1YWRfdDsK
IyA0OSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMwp0eXBlZGVmIHNpZ25lZCBj
aGFyIF9faW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191aW50OF90Owp0eXBlZGVmIHNp
Z25lZCBzaG9ydCBpbnQgX19pbnQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX3Vp
bnQxNl90Owp0eXBlZGVmIHNpZ25lZCBpbnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGlu
dCBfX3VpbnQzMl90OwoKX19leHRlbnNpb25fXyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50
IF9faW50NjRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQg
X191aW50NjRfdDsKCnR5cGVkZWYgX19xdWFkX3QgKl9fcWFkZHJfdDsKCnR5cGVkZWYgX191X3F1
YWRfdCBfX2Rldl90Owp0eXBlZGVmIF9fdV9pbnQgX191aWRfdDsKdHlwZWRlZiBfX3VfaW50IF9f
Z2lkX3Q7CnR5cGVkZWYgX191X2xvbmcgX19pbm9fdDsKdHlwZWRlZiBfX3VfaW50IF9fbW9kZV90
Owp0eXBlZGVmIF9fdV9pbnQgX19ubGlua190Owp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7CnR5
cGVkZWYgX19xdWFkX3QgX19sb2ZmX3Q7CnR5cGVkZWYgaW50IF9fcGlkX3Q7CnR5cGVkZWYgaW50
IF9fc3NpemVfdDsKdHlwZWRlZiBfX3VfbG9uZyBfX3JsaW1fdDsKdHlwZWRlZiBfX3VfcXVhZF90
IF9fcmxpbTY0X3Q7CnR5cGVkZWYgX191X2ludCBfX2lkX3Q7Cgp0eXBlZGVmIHN0cnVjdAogIHsK
ICAgIGludCBfX3ZhbFsyXTsKICB9IF9fZnNpZF90OwoKCnR5cGVkZWYgaW50IF9fZGFkZHJfdDsK
dHlwZWRlZiBjaGFyICpfX2NhZGRyX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX190aW1lX3Q7CnR5cGVk
ZWYgdW5zaWduZWQgaW50IF9fdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIGludCBfX3N1c2Vjb25k
c190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3dibGtfdDsKCnR5cGVkZWYgbG9uZyBpbnQgX19jbG9j
a190OwoKCnR5cGVkZWYgaW50IF9fY2xvY2tpZF90OwoKCnR5cGVkZWYgaW50IF9fdGltZXJfdDsK
CgoKCgoKdHlwZWRlZiBpbnQgX19rZXlfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBf
X2lwY19waWRfdDsKCgoKdHlwZWRlZiBsb25nIGludCBfX2Jsa3NpemVfdDsKCgoKCnR5cGVkZWYg
bG9uZyBpbnQgX19ibGtjbnRfdDsKdHlwZWRlZiBfX3F1YWRfdCBfX2Jsa2NudDY0X3Q7CgoKdHlw
ZWRlZiBfX3VfbG9uZyBfX2ZzYmxrY250X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzYmxrY250
NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25nIF9fZnNmaWxjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90
IF9fZnNmaWxjbnQ2NF90OwoKCnR5cGVkZWYgX191X3F1YWRfdCBfX2lubzY0X3Q7CgoKdHlwZWRl
ZiBfX2xvZmZfdCBfX29mZjY0X3Q7CgoKdHlwZWRlZiBsb25nIGludCBfX3Rfc2NhbGFyX3Q7CnR5
cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX190X3VzY2FsYXJfdDsKCgp0eXBlZGVmIGludCBfX2lu
dHB0cl90OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IF9fc29ja2xlbl90OwoKCgoKIyAxICIvdXNy
L2xvY2FsL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMSAzCiMgMjMgIi91c3IvbG9jYWwv
aW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2Jp
dHMvc2NoZWQuaCIgMSAzCiMgNjggIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDMK
c3RydWN0IF9fc2NoZWRfcGFyYW0KICB7CiAgICBpbnQgX19zY2hlZF9wcmlvcml0eTsKICB9Owoj
IDI0ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMiAzCgoKc3RydWN0
IF9wdGhyZWFkX2Zhc3Rsb2NrCnsKICBsb25nIGludCBfX3N0YXR1czsKICBpbnQgX19zcGlubG9j
azsKCn07CgoKCnR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX2Rlc2NyX3N0cnVjdCAqX3B0aHJlYWRf
ZGVzY3I7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX19wdGhyZWFkX2F0dHJfcwp7CiAgaW50IF9fZGV0
YWNoc3RhdGU7CiAgaW50IF9fc2NoZWRwb2xpY3k7CiAgc3RydWN0IF9fc2NoZWRfcGFyYW0gX19z
Y2hlZHBhcmFtOwogIGludCBfX2luaGVyaXRzY2hlZDsKICBpbnQgX19zY29wZTsKICBzaXplX3Qg
X19ndWFyZHNpemU7CiAgaW50IF9fc3RhY2thZGRyX3NldDsKICB2b2lkICpfX3N0YWNrYWRkcjsK
ICBzaXplX3QgX19zdGFja3NpemU7Cn0gcHRocmVhZF9hdHRyX3Q7CgoKCnR5cGVkZWYgc3RydWN0
CnsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19jX2xvY2s7CiAgX3B0aHJlYWRfZGVzY3Ig
X19jX3dhaXRpbmc7Cn0gcHRocmVhZF9jb25kX3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQg
X19kdW1teTsKfSBwdGhyZWFkX2NvbmRhdHRyX3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgcHRo
cmVhZF9rZXlfdDsKCgoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbV9yZXNlcnZlZDsKICBp
bnQgX19tX2NvdW50OwogIF9wdGhyZWFkX2Rlc2NyIF9fbV9vd25lcjsKICBpbnQgX19tX2tpbmQ7
CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fbV9sb2NrOwp9IHB0aHJlYWRfbXV0ZXhfdDsK
CgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX211dGV4a2luZDsKfSBwdGhyZWFkX211dGV4YXR0
cl90OwoKCgp0eXBlZGVmIGludCBwdGhyZWFkX29uY2VfdDsKCgoKCnR5cGVkZWYgc3RydWN0IF9w
dGhyZWFkX3J3bG9ja190CnsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19yd19sb2NrOwog
IGludCBfX3J3X3JlYWRlcnM7CiAgX3B0aHJlYWRfZGVzY3IgX19yd193cml0ZXI7CiAgX3B0aHJl
YWRfZGVzY3IgX19yd19yZWFkX3dhaXRpbmc7CiAgX3B0aHJlYWRfZGVzY3IgX19yd193cml0ZV93
YWl0aW5nOwogIGludCBfX3J3X2tpbmQ7CiAgaW50IF9fcndfcHNoYXJlZDsKfSBwdGhyZWFkX3J3
bG9ja190OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbG9ja2tpbmQ7CiAgaW50IF9fcHNo
YXJlZDsKfSBwdGhyZWFkX3J3bG9ja2F0dHJfdDsKCgoKCnR5cGVkZWYgdm9sYXRpbGUgaW50IHB0
aHJlYWRfc3BpbmxvY2tfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgc3RydWN0IF9wdGhyZWFkX2Zh
c3Rsb2NrIF9fYmFfbG9jazsKICBpbnQgX19iYV9yZXF1aXJlZDsKICBpbnQgX19iYV9wcmVzZW50
OwogIF9wdGhyZWFkX2Rlc2NyIF9fYmFfd2FpdGluZzsKfSBwdGhyZWFkX2JhcnJpZXJfdDsKCgp0
eXBlZGVmIHN0cnVjdCB7CiAgaW50IF9fcHNoYXJlZDsKfSBwdGhyZWFkX2JhcnJpZXJhdHRyX3Q7
CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBwdGhyZWFkX3Q7CiMgMTQ0ICIvdXNyL2xv
Y2FsL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKIyAzMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5
cy90eXBlcy5oIiAyIDMKCgoKdHlwZWRlZiBfX3VfY2hhciB1X2NoYXI7CnR5cGVkZWYgX191X3No
b3J0IHVfc2hvcnQ7CnR5cGVkZWYgX191X2ludCB1X2ludDsKdHlwZWRlZiBfX3VfbG9uZyB1X2xv
bmc7CnR5cGVkZWYgX19xdWFkX3QgcXVhZF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgdV9xdWFkX3Q7
CnR5cGVkZWYgX19mc2lkX3QgZnNpZF90OwoKCgoKdHlwZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7CgoK
CgoKdHlwZWRlZiBfX2lubzY0X3QgaW5vX3Q7CgoKCgp0eXBlZGVmIF9faW5vNjRfdCBpbm82NF90
OwoKCgoKdHlwZWRlZiBfX2Rldl90IGRldl90OwoKCgoKdHlwZWRlZiBfX2dpZF90IGdpZF90OwoK
CgoKdHlwZWRlZiBfX21vZGVfdCBtb2RlX3Q7CgoKCgp0eXBlZGVmIF9fbmxpbmtfdCBubGlua190
OwoKCgoKdHlwZWRlZiBfX3VpZF90IHVpZF90OwoKCgoKCgoKdHlwZWRlZiBfX29mZjY0X3Qgb2Zm
X3Q7CgoKCgp0eXBlZGVmIF9fb2ZmNjRfdCBvZmY2NF90OwoKCgoKdHlwZWRlZiBfX3BpZF90IHBp
ZF90OwoKCgoKdHlwZWRlZiBfX2lkX3QgaWRfdDsKCgoKCnR5cGVkZWYgX19zc2l6ZV90IHNzaXpl
X3Q7CgoKCgoKdHlwZWRlZiBfX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2NhZGRyX3QgY2Fk
ZHJfdDsKCgoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CiMgMTMyICIvdXNyL2xvY2FsL2luY2x1
ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5oIiAxIDMKIyA1
OSAiL3Vzci9sb2NhbC9pbmNsdWRlL3RpbWUuaCIgMwp0eXBlZGVmIF9fY2xvY2tfdCBjbG9ja190
OwojIDcwICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5oIiAzCnR5cGVkZWYgX190aW1lX3QgdGlt
ZV90OwojIDgyICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5oIiAzCnR5cGVkZWYgX19jbG9ja2lk
X3QgY2xvY2tpZF90OwojIDk0ICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5oIiAzCnR5cGVkZWYg
X190aW1lcl90IHRpbWVyX3Q7CiMgMTMzICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgi
IDIgMwoKCgp0eXBlZGVmIF9fdXNlY29uZHNfdCB1c2Vjb25kc190OwoKCgp0eXBlZGVmIF9fc3Vz
ZWNvbmRzX3Qgc3VzZWNvbmRzX3Q7CgoKCgoKIyAxICIvdXNyL2xvY2FsL2djYy8zL2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAxNDcgIi91
c3IvbG9jYWwvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9u
ZyBpbnQgdWxvbmc7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVzaG9ydDsKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgdWludDsKIyAxOTAgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvdHlwZXMuaCIg
Mwp0eXBlZGVmIGludCBpbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1FJX18pKSk7
CnR5cGVkZWYgaW50IGludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7
CnR5cGVkZWYgaW50IGludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7
CnR5cGVkZWYgaW50IGludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJX18pKSk7
CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChfX1FJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MTZfdCBfX2F0dHJpYnV0ZV9f
ICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQzMl90IF9f
YXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1
X2ludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJX18pKSk7Cgp0eXBlZGVmIGlu
dCByZWdpc3Rlcl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX193b3JkX18pKSk7CiMgMjEy
ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1
ZGUvZW5kaWFuLmgiIDEgMwojIDM3ICIvdXNyL2xvY2FsL2luY2x1ZGUvZW5kaWFuLmgiIDMKIyAx
ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9lbmRpYW4uaCIgMSAzCiMgMzggIi91c3IvbG9jYWwv
aW5jbHVkZS9lbmRpYW4uaCIgMiAzCiMgMjEzICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3R5cGVz
LmgiIDIgMwoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMSAzCiMgMzEg
Ii91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1
ZGUvYml0cy9zZWxlY3QuaCIgMSAzCiMgMzIgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc2VsZWN0
LmgiIDIgMwoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDEgMwojIDIz
ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMwp0eXBlZGVmIGludCBfX3NpZ19h
dG9taWNfdDsKCgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgdW5zaWduZWQgbG9uZyBpbnQgX192
YWxbKDEwMjQgLyAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSldOwogIH0gX19zaWdz
ZXRfdDsKIyAzNSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKCnR5cGVk
ZWYgX19zaWdzZXRfdCBzaWdzZXRfdDsKCgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS90aW1l
LmgiIDEgMwojIDEwNiAiL3Vzci9sb2NhbC9pbmNsdWRlL3RpbWUuaCIgMwpzdHJ1Y3QgdGltZXNw
ZWMKICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7CiAgICBsb25nIGludCB0dl9uc2VjOwogIH07CiMg
NDUgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKIyAxICIvdXNyL2xvY2Fs
L2luY2x1ZGUvYml0cy90aW1lLmgiIDEgMwojIDY3ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy90
aW1lLmgiIDMKc3RydWN0IHRpbWV2YWwKICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7CiAgICBfX3N1
c2Vjb25kc190IHR2X3VzZWM7CiAgfTsKIyA0NyAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zZWxl
Y3QuaCIgMiAzCiMgNTUgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKdHlwZWRl
ZiBsb25nIGludCBfX2ZkX21hc2s7CgoKCgoKCgp0eXBlZGVmIHN0cnVjdAogIHsKCgoKICAgIF9f
ZmRfbWFzayBmZHNfYml0c1sxMDI0IC8gKDggKiBzaXplb2YgKF9fZmRfbWFzaykpXTsKCgoKCgog
IH0gZmRfc2V0OwoKCgoKCgp0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOwojIDk1ICIvdXNyL2xv
Y2FsL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzCgoKCgoKCgpleHRlcm4gaW50IHNlbGVjdCAoaW50
IF9fbmZkcywgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fcmVhZGZkcywKICAgICAgICAgICAgICAgICAg
IGZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAogICAgICAgICAgICAgICAgICAgZmRfc2V0
ICpfX3Jlc3RyaWN0IF9fZXhjZXB0ZmRzLAogICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV2
YWwgKl9fcmVzdHJpY3QgX190aW1lb3V0KSA7CgoKCgoKZXh0ZXJuIGludCBwc2VsZWN0IChpbnQg
X19uZmRzLCBmZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLAogICAgICAgICAgICAgICAgICAg
IGZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAogICAgICAgICAgICAgICAgICAgIGZkX3Nl
dCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1
Y3QgdGltZXNwZWMgKl9fcmVzdHJpY3QgX190aW1lb3V0LAogICAgICAgICAgICAgICAgICAgIGNv
bnN0IF9fc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19zaWdtYXNrKSA7CgoKCiMgMjE2ICIvdXNyL2xv
Y2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5
cy9zeXNtYWNyb3MuaCIgMSAzCiMgMjE5ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3R5cGVzLmgi
IDIgMwoKCgoKdHlwZWRlZiBfX2Jsa3NpemVfdCBibGtzaXplX3Q7CiMgMjQzICIvdXNyL2xvY2Fs
L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiBfX2Jsa2NudDY0X3QgYmxrY250X3Q7CgoK
CnR5cGVkZWYgX19mc2Jsa2NudDY0X3QgZnNibGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzZmlsY250
NjRfdCBmc2ZpbGNudF90OwoKCgoKCnR5cGVkZWYgX19ibGtjbnQ2NF90IGJsa2NudDY0X3Q7CnR5
cGVkZWYgX19mc2Jsa2NudDY0X3QgZnNibGtjbnQ2NF90Owp0eXBlZGVmIF9fZnNmaWxjbnQ2NF90
IGZzZmlsY250NjRfdDsKCgoKIyA3NyAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCgoKIyAxICIvdXNy
L2xvY2FsL2luY2x1ZGUvc3lzL3RpbWUuaCIgMSAzCiMgMjYgIi91c3IvbG9jYWwvaW5jbHVkZS9z
eXMvdGltZS5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3RpbWUuaCIgMSAzCiMgMjcgIi91
c3IvbG9jYWwvaW5jbHVkZS9zeXMvdGltZS5oIiAyIDMKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRl
L2JpdHMvdGltZS5oIiAxIDMKIyAyOSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy90aW1lLmgiIDIg
MwojIDM4ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3RpbWUuaCIgMwoKIyA1NiAiL3Vzci9sb2Nh
bC9pbmNsdWRlL3N5cy90aW1lLmgiIDMKc3RydWN0IHRpbWV6b25lCiAgewogICAgaW50IHR6X21p
bnV0ZXN3ZXN0OwogICAgaW50IHR6X2RzdHRpbWU7CiAgfTsKCnR5cGVkZWYgc3RydWN0IHRpbWV6
b25lICpfX3Jlc3RyaWN0IF9fdGltZXpvbmVfcHRyX3Q7CiMgNzIgIi91c3IvbG9jYWwvaW5jbHVk
ZS9zeXMvdGltZS5oIiAzCmV4dGVybiBpbnQgZ2V0dGltZW9mZGF5IChzdHJ1Y3QgdGltZXZhbCAq
X19yZXN0cmljdCBfX3R2LAogICAgICAgICAgICAgICAgICAgICAgICAgX190aW1lem9uZV9wdHJf
dCBfX3R6KSA7CgoKCgpleHRlcm4gaW50IHNldHRpbWVvZmRheSAoX19jb25zdCBzdHJ1Y3QgdGlt
ZXZhbCAqX190diwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0IHRpbWV6
b25lICpfX3R6KSA7CgoKCgoKZXh0ZXJuIGludCBhZGp0aW1lIChfX2NvbnN0IHN0cnVjdCB0aW1l
dmFsICpfX2RlbHRhLAogICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsICpfX29sZGRl
bHRhKSA7CgoKCgplbnVtIF9faXRpbWVyX3doaWNoCiAgewoKICAgIElUSU1FUl9SRUFMID0gMCwK
CgogICAgSVRJTUVSX1ZJUlRVQUwgPSAxLAoKCgogICAgSVRJTUVSX1BST0YgPSAyCgogIH07CgoK
CnN0cnVjdCBpdGltZXJ2YWwKICB7CgogICAgc3RydWN0IHRpbWV2YWwgaXRfaW50ZXJ2YWw7Cgog
ICAgc3RydWN0IHRpbWV2YWwgaXRfdmFsdWU7CiAgfTsKCgoKCnR5cGVkZWYgZW51bSBfX2l0aW1l
cl93aGljaCBfX2l0aW1lcl93aGljaF90OwoKCgoKCgpleHRlcm4gaW50IGdldGl0aW1lciAoX19p
dGltZXJfd2hpY2hfdCBfX3doaWNoLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGl0aW1l
cnZhbCAqX192YWx1ZSkgOwoKCgoKZXh0ZXJuIGludCBzZXRpdGltZXIgKF9faXRpbWVyX3doaWNo
X3QgX193aGljaCwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0IGl0aW1lcnZh
bCAqX19yZXN0cmljdCBfX25ldywKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpdGltZXJ2
YWwgKl9fcmVzdHJpY3QgX19vbGQpIDsKCgoKZXh0ZXJuIGludCB1dGltZXMgKF9fY29uc3QgY2hh
ciAqX19maWxlLCBfX2NvbnN0IHN0cnVjdCB0aW1ldmFsIF9fdHZwWzJdKQogICAgIDsKIyAxNzEg
Ii91c3IvbG9jYWwvaW5jbHVkZS9zeXMvdGltZS5oIiAzCgojIDgwICJpbmNsdWRlL2luY2x1ZGVz
LmgiIDIKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5oIiAxIDMKIyAzMCAiL3Vzci9sb2Nh
bC9pbmNsdWRlL3RpbWUuaCIgMwoKCgoKCgoKCiMgMSAiL3Vzci9sb2NhbC9nY2MvMy9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzkgIi91
c3IvbG9jYWwvaW5jbHVkZS90aW1lLmgiIDIgMwoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9i
aXRzL3RpbWUuaCIgMSAzCiMgNDMgIi91c3IvbG9jYWwvaW5jbHVkZS90aW1lLmgiIDIgMwojIDEx
OCAiL3Vzci9sb2NhbC9pbmNsdWRlL3RpbWUuaCIgMwpzdHJ1Y3QgdG0KewogIGludCB0bV9zZWM7
CiAgaW50IHRtX21pbjsKICBpbnQgdG1faG91cjsKICBpbnQgdG1fbWRheTsKICBpbnQgdG1fbW9u
OwogIGludCB0bV95ZWFyOwogIGludCB0bV93ZGF5OwogIGludCB0bV95ZGF5OwogIGludCB0bV9p
c2RzdDsKCgogIGxvbmcgaW50IHRtX2dtdG9mZjsKICBfX2NvbnN0IGNoYXIgKnRtX3pvbmU7CgoK
Cgp9OwoKCgoKc3RydWN0IGl0aW1lcnNwZWMKICB7CiAgICBzdHJ1Y3QgdGltZXNwZWMgaXRfaW50
ZXJ2YWw7CiAgICBzdHJ1Y3QgdGltZXNwZWMgaXRfdmFsdWU7CiAgfTsKCgpzdHJ1Y3Qgc2lnZXZl
bnQ7CiMgMTYzICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5oIiAzCmV4dGVybiBjbG9ja190IGNs
b2NrICh2b2lkKSA7CgoKZXh0ZXJuIHRpbWVfdCB0aW1lICh0aW1lX3QgKl9fdGltZXIpIDsKCgpl
eHRlcm4gZG91YmxlIGRpZmZ0aW1lICh0aW1lX3QgX190aW1lMSwgdGltZV90IF9fdGltZTApCiAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiB0aW1lX3QgbWt0aW1lIChz
dHJ1Y3QgdG0gKl9fdHApIDsKCgoKCgpleHRlcm4gc2l6ZV90IHN0cmZ0aW1lIChjaGFyICpfX3Jl
c3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSA7CgoKCgpleHRlcm4gY2hhciAqc3Ry
cHRpbWUgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCBzdHJ1Y3QgdG0gKl9fdHApCiAgICAg
OwoKCgoKCmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZSAoX19jb25zdCB0aW1lX3QgKl9fdGltZXIp
IDsKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqbG9jYWx0aW1lIChfX2NvbnN0IHRpbWVfdCAqX190aW1l
cikgOwoKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqZ210aW1lX3IgKF9fY29uc3QgdGltZV90ICpfX3Jl
c3RyaWN0IF9fdGltZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0gKl9f
cmVzdHJpY3QgX190cCkgOwoKCgpleHRlcm4gc3RydWN0IHRtICpsb2NhbHRpbWVfciAoX19jb25z
dCB0aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSA7CgoKCgpleHRlcm4gY2hhciAqYXNjdGlt
ZSAoX19jb25zdCBzdHJ1Y3QgdG0gKl9fdHApIDsKCgpleHRlcm4gY2hhciAqY3RpbWUgKF9fY29u
c3QgdGltZV90ICpfX3RpbWVyKSA7CgoKCgoKCmV4dGVybiBjaGFyICphc2N0aW1lX3IgKF9fY29u
c3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHAsCiAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXIgKl9fcmVzdHJpY3QgX19idWYpIDsKCgpleHRlcm4gY2hhciAqY3RpbWVfciAoX19jb25zdCB0
aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9f
cmVzdHJpY3QgX19idWYpIDsKCgoKCmV4dGVybiBjaGFyICpfX3R6bmFtZVsyXTsKZXh0ZXJuIGlu
dCBfX2RheWxpZ2h0OwpleHRlcm4gbG9uZyBpbnQgX190aW1lem9uZTsKCgoKCmV4dGVybiBjaGFy
ICp0em5hbWVbMl07CgoKCmV4dGVybiB2b2lkIHR6c2V0ICh2b2lkKSA7CgoKCmV4dGVybiBpbnQg
ZGF5bGlnaHQ7CmV4dGVybiBsb25nIGludCB0aW1lem9uZTsKCgoKCgpleHRlcm4gaW50IHN0aW1l
IChfX2NvbnN0IHRpbWVfdCAqX193aGVuKSA7CiMgMjcxICIvdXNyL2xvY2FsL2luY2x1ZGUvdGlt
ZS5oIiAzCmV4dGVybiB0aW1lX3QgdGltZWdtIChzdHJ1Y3QgdG0gKl9fdHApIDsKCgpleHRlcm4g
dGltZV90IHRpbWVsb2NhbCAoc3RydWN0IHRtICpfX3RwKSA7CgoKZXh0ZXJuIGludCBkeXNpemUg
KGludCBfX3llYXIpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgpleHRlcm4gaW50
IG5hbm9zbGVlcCAoX19jb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVxdWVzdGVkX3RpbWUsCiAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVtYWluaW5nKSA7CgoKCmV4
dGVybiBpbnQgY2xvY2tfZ2V0cmVzIChjbG9ja2lkX3QgX19jbG9ja19pZCwgc3RydWN0IHRpbWVz
cGVjICpfX3JlcykgOwoKCmV4dGVybiBpbnQgY2xvY2tfZ2V0dGltZSAoY2xvY2tpZF90IF9fY2xv
Y2tfaWQsIHN0cnVjdCB0aW1lc3BlYyAqX190cCkgOwoKCmV4dGVybiBpbnQgY2xvY2tfc2V0dGlt
ZSAoY2xvY2tpZF90IF9fY2xvY2tfaWQsIF9fY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3RwKQog
ICAgIDsKCgoKZXh0ZXJuIGludCBjbG9ja19uYW5vc2xlZXAgKGNsb2NraWRfdCBfX2Nsb2NrX2lk
LCBpbnQgX19mbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0
IHRpbWVzcGVjICpfX3JlcSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1l
c3BlYyAqX19yZW0pIDsKCgpleHRlcm4gaW50IGNsb2NrX2dldGNwdWNsb2NraWQgKHBpZF90IF9f
cGlkLCBjbG9ja2lkX3QgKl9fY2xvY2tfaWQpIDsKCgoKCmV4dGVybiBpbnQgdGltZXJfY3JlYXRl
IChjbG9ja2lkX3QgX19jbG9ja19pZCwKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBz
aWdldmVudCAqX19yZXN0cmljdCBfX2V2cCwKICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVy
X3QgKl9fcmVzdHJpY3QgX190aW1lcmlkKSA7CgoKZXh0ZXJuIGludCB0aW1lcl9kZWxldGUgKHRp
bWVyX3QgX190aW1lcmlkKSA7CgoKZXh0ZXJuIGludCB0aW1lcl9zZXR0aW1lICh0aW1lcl90IF9f
dGltZXJpZCwgaW50IF9fZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBz
dHJ1Y3QgaXRpbWVyc3BlYyAqX19yZXN0cmljdCBfX3ZhbHVlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBpdGltZXJzcGVjICpfX3Jlc3RyaWN0IF9fb3ZhbHVlKSA7CgoKZXh0ZXJu
IGludCB0aW1lcl9nZXR0aW1lICh0aW1lcl90IF9fdGltZXJpZCwgc3RydWN0IGl0aW1lcnNwZWMg
Kl9fdmFsdWUpCiAgICAgOwoKCmV4dGVybiBpbnQgdGltZXJfZ2V0b3ZlcnJ1biAodGltZXJfdCBf
X3RpbWVyaWQpIDsKIyAzNDIgIi91c3IvbG9jYWwvaW5jbHVkZS90aW1lLmgiIDMKZXh0ZXJuIGlu
dCBnZXRkYXRlX2VycjsKCgoKCgpleHRlcm4gc3RydWN0IHRtICpnZXRkYXRlIChfX2NvbnN0IGNo
YXIgKl9fc3RyaW5nKSA7CiMgMzU3ICIvdXNyL2xvY2FsL2luY2x1ZGUvdGltZS5oIiAzCmV4dGVy
biBpbnQgZ2V0ZGF0ZV9yIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zdHJpbmcsCiAgICAg
ICAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX19yZXNidWZwKSA7CgoKCgoj
IDgxICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKIyA5MCAiaW5jbHVkZS9pbmNsdWRlcy5oIgojIDEg
Ii91c3IvbG9jYWwvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMSAzCiMgMjUgIi91c3IvbG9jYWwv
aW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3Jl
c291cmNlLmgiIDEgMwojIDMyICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9yZXNvdXJjZS5oIiAz
CmVudW0gX19ybGltaXRfcmVzb3VyY2UKewoKICBSTElNSVRfQ1BVID0gMCwKCgoKICBSTElNSVRf
RlNJWkUgPSAxLAoKCgogIFJMSU1JVF9EQVRBID0gMiwKCgoKICBSTElNSVRfU1RBQ0sgPSAzLAoK
CgogIFJMSU1JVF9DT1JFID0gNCwKCgoKCgoKICBSTElNSVRfUlNTID0gNSwKCgoKICBSTElNSVRf
Tk9GSUxFID0gNywKICBSTElNSVRfT0ZJTEUgPSBSTElNSVRfTk9GSUxFLAoKCgoKICBSTElNSVRf
QVMgPSA5LAoKCgogIFJMSU1JVF9OUFJPQyA9IDYsCgoKCiAgUkxJTUlUX01FTUxPQ0sgPSA4LAoK
CgogIFJMSU1JVF9MT0NLUyA9IDEwLAoKCiAgUkxJTUlUX05MSU1JVFMgPSAxMSwKICBSTElNX05M
SU1JVFMgPSBSTElNSVRfTkxJTUlUUwoKCn07CiMgMTA5ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0
cy9yZXNvdXJjZS5oIiAzCnR5cGVkZWYgX19ybGltNjRfdCBybGltX3Q7CgoKdHlwZWRlZiBfX3Js
aW02NF90IHJsaW02NF90OwoKCnN0cnVjdCBybGltaXQKICB7CgogICAgcmxpbV90IHJsaW1fY3Vy
OwoKICAgIHJsaW1fdCBybGltX21heDsKICB9OwoKCnN0cnVjdCBybGltaXQ2NAogIHsKCiAgICBy
bGltNjRfdCBybGltX2N1cjsKCiAgICBybGltNjRfdCBybGltX21heDsKIH07CgoKCmVudW0gX19y
dXNhZ2Vfd2hvCnsKCiAgUlVTQUdFX1NFTEYgPSAwLAoKCgogIFJVU0FHRV9DSElMRFJFTiA9IC0x
LAoKCgogIFJVU0FHRV9CT1RIID0gLTIKCn07CgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0
cy90aW1lLmgiIDEgMwojIDE1MSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvcmVzb3VyY2UuaCIg
MiAzCgoKc3RydWN0IHJ1c2FnZQogIHsKCiAgICBzdHJ1Y3QgdGltZXZhbCBydV91dGltZTsKCiAg
ICBzdHJ1Y3QgdGltZXZhbCBydV9zdGltZTsKCiAgICBsb25nIGludCBydV9tYXhyc3M7CgoKICAg
IGxvbmcgaW50IHJ1X2l4cnNzOwoKICAgIGxvbmcgaW50IHJ1X2lkcnNzOwoKICAgIGxvbmcgaW50
IHJ1X2lzcnNzOwoKCiAgICBsb25nIGludCBydV9taW5mbHQ7CgogICAgbG9uZyBpbnQgcnVfbWFq
Zmx0OwoKICAgIGxvbmcgaW50IHJ1X25zd2FwOwoKCiAgICBsb25nIGludCBydV9pbmJsb2NrOwoK
ICAgIGxvbmcgaW50IHJ1X291YmxvY2s7CgogICAgbG9uZyBpbnQgcnVfbXNnc25kOwoKICAgIGxv
bmcgaW50IHJ1X21zZ3JjdjsKCiAgICBsb25nIGludCBydV9uc2lnbmFsczsKCgoKICAgIGxvbmcg
aW50IHJ1X252Y3N3OwoKCiAgICBsb25nIGludCBydV9uaXZjc3c7CiAgfTsKCgoKCgoKCmVudW0g
X19wcmlvcml0eV93aGljaAp7CiAgUFJJT19QUk9DRVNTID0gMCwKCiAgUFJJT19QR1JQID0gMSwK
CiAgUFJJT19VU0VSID0gMgoKfTsKIyAyNiAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9yZXNvdXJj
ZS5oIiAyIDMKCgoKCgoKCgoKCgoKCnR5cGVkZWYgZW51bSBfX3JsaW1pdF9yZXNvdXJjZSBfX3Js
aW1pdF9yZXNvdXJjZV90Owp0eXBlZGVmIGVudW0gX19ydXNhZ2Vfd2hvIF9fcnVzYWdlX3dob190
Owp0eXBlZGVmIGVudW0gX19wcmlvcml0eV93aGljaCBfX3ByaW9yaXR5X3doaWNoX3Q7CiMgNTUg
Ii91c3IvbG9jYWwvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMwpleHRlcm4gaW50IGdldHJsaW1p
dCAoX19ybGltaXRfcmVzb3VyY2VfdCBfX3Jlc291cmNlLCBzdHJ1Y3QgcmxpbWl0ICpfX3JsaW1p
dHMpIF9fYXNtX18gKCIiICJnZXRybGltaXQ2NCIpOwoKCgoKCgoKZXh0ZXJuIGludCBnZXRybGlt
aXQ2NCAoX19ybGltaXRfcmVzb3VyY2VfdCBfX3Jlc291cmNlLAogICAgICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3QgcmxpbWl0NjQgKl9fcmxpbWl0cykgOwojIDc1ICIvdXNyL2xvY2FsL2luY2x1
ZGUvc3lzL3Jlc291cmNlLmgiIDMKZXh0ZXJuIGludCBzZXRybGltaXQgKF9fcmxpbWl0X3Jlc291
cmNlX3QgX19yZXNvdXJjZSwgX19jb25zdCBzdHJ1Y3QgcmxpbWl0ICpfX3JsaW1pdHMpIF9fYXNt
X18gKCIiICJzZXRybGltaXQ2NCIpOwoKCgoKCgoKZXh0ZXJuIGludCBzZXRybGltaXQ2NCAoX19y
bGltaXRfcmVzb3VyY2VfdCBfX3Jlc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IHN0cnVjdCBybGltaXQ2NCAqX19ybGltaXRzKSA7CgoKCgpleHRlcm4gaW50IGdldHJ1c2Fn
ZSAoX19ydXNhZ2Vfd2hvX3QgX193aG8sIHN0cnVjdCBydXNhZ2UgKl9fdXNhZ2UpIDsKCgoKCgpl
eHRlcm4gaW50IGdldHByaW9yaXR5IChfX3ByaW9yaXR5X3doaWNoX3QgX193aGljaCwgaWRfdCBf
X3dobykgOwoKCgpleHRlcm4gaW50IHNldHByaW9yaXR5IChfX3ByaW9yaXR5X3doaWNoX3QgX193
aGljaCwgaWRfdCBfX3dobywgaW50IF9fcHJpbykKICAgICA7CgoKIyA5MSAiaW5jbHVkZS9pbmNs
dWRlcy5oIiAyCgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3VuaXN0ZC5oIiAxIDMKIyAyOCAi
L3Vzci9sb2NhbC9pbmNsdWRlL3VuaXN0ZC5oIiAzCgojIDE3NSAiL3Vzci9sb2NhbC9pbmNsdWRl
L3VuaXN0ZC5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvcG9zaXhfb3B0LmgiIDEg
MwojIDE3NiAiL3Vzci9sb2NhbC9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCgoKIyAxICIvdXNyL2xv
Y2FsL2luY2x1ZGUvYml0cy9lbnZpcm9ubWVudHMuaCIgMSAzCiMgMjMgIi91c3IvbG9jYWwvaW5j
bHVkZS9iaXRzL2Vudmlyb25tZW50cy5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMv
d29yZHNpemUuaCIgMSAzCiMgMjQgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL2Vudmlyb25tZW50
cy5oIiAyIDMKIyAxODAgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMiAzCiMgMTk5ICIv
dXNyL2xvY2FsL2luY2x1ZGUvdW5pc3RkLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYy8zL2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAyMDAg
Ii91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMiAzCiMgMjQwICIvdXNyL2xvY2FsL2luY2x1
ZGUvdW5pc3RkLmgiIDMKdHlwZWRlZiBfX2ludHB0cl90IGludHB0cl90OwoKCgoKCgp0eXBlZGVm
IF9fc29ja2xlbl90IHNvY2tsZW5fdDsKIyAyNjAgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQu
aCIgMwpleHRlcm4gaW50IGFjY2VzcyAoX19jb25zdCBjaGFyICpfX25hbWUsIGludCBfX3R5cGUp
IDsKCgoKCmV4dGVybiBpbnQgZXVpZGFjY2VzcyAoX19jb25zdCBjaGFyICpfX25hbWUsIGludCBf
X3R5cGUpIDsKIyAyOTMgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gX19v
ZmY2NF90IGxzZWVrIChpbnQgX19mZCwgX19vZmY2NF90IF9fb2Zmc2V0LCBpbnQgX193aGVuY2Up
IF9fYXNtX18gKCIiICJsc2VlazY0Iik7CiMgMzAyICIvdXNyL2xvY2FsL2luY2x1ZGUvdW5pc3Rk
LmgiIDMKZXh0ZXJuIF9fb2ZmNjRfdCBsc2VlazY0IChpbnQgX19mZCwgX19vZmY2NF90IF9fb2Zm
c2V0LCBpbnQgX193aGVuY2UpIDsKCgoKZXh0ZXJuIGludCBjbG9zZSAoaW50IF9fZmQpIDsKCgoK
ZXh0ZXJuIHNzaXplX3QgcmVhZCAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0
ZXMpIDsKCgpleHRlcm4gc3NpemVfdCB3cml0ZSAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqX19i
dWYsIHNpemVfdCBfX24pIDsKIyAzMjMgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMwpl
eHRlcm4gc3NpemVfdCBwcmVhZCAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0
ZXMsIF9fb2ZmNjRfdCBfX29mZnNldCkgX19hc21fXyAoIiIgInByZWFkNjQiKTsKCgpleHRlcm4g
c3NpemVfdCBwd3JpdGUgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKl9fYnVmLCBzaXplX3QgX19u
Ynl0ZXMsIF9fb2ZmNjRfdCBfX29mZnNldCkgX19hc21fXyAoIiIgInB3cml0ZTY0Iik7CiMgMzQw
ICIvdXNyL2xvY2FsL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIHNzaXplX3QgcHJlYWQ2NCAo
aW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMsCiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fb2ZmNjRfdCBfX29mZnNldCkgOwoKCmV4dGVybiBzc2l6ZV90IHB3cml0ZTY0IChp
bnQgX19mZCwgX19jb25zdCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fb2ZmNjRfdCBfX29mZnNldCkgOwoKCgoKCgoKZXh0ZXJuIGludCBwaXBlIChp
bnQgX19waXBlZGVzWzJdKSA7CiMgMzYyICIvdXNyL2xvY2FsL2luY2x1ZGUvdW5pc3RkLmgiIDMK
ZXh0ZXJuIHVuc2lnbmVkIGludCBhbGFybSAodW5zaWduZWQgaW50IF9fc2Vjb25kcykgOwojIDM3
MSAiL3Vzci9sb2NhbC9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiB1bnNpZ25lZCBpbnQgc2xl
ZXAgKHVuc2lnbmVkIGludCBfX3NlY29uZHMpIDsKCgoKCgoKZXh0ZXJuIF9fdXNlY29uZHNfdCB1
YWxhcm0gKF9fdXNlY29uZHNfdCBfX3ZhbHVlLCBfX3VzZWNvbmRzX3QgX19pbnRlcnZhbCkKICAg
ICA7CgoKCmV4dGVybiBpbnQgdXNsZWVwIChfX3VzZWNvbmRzX3QgX191c2Vjb25kcykgOwoKCgoK
CmV4dGVybiBpbnQgcGF1c2UgKHZvaWQpIDsKCgoKZXh0ZXJuIGludCBjaG93biAoX19jb25zdCBj
aGFyICpfX2ZpbGUsIF9fdWlkX3QgX19vd25lciwgX19naWRfdCBfX2dyb3VwKQogICAgIDsKCgoK
ZXh0ZXJuIGludCBmY2hvd24gKGludCBfX2ZkLCBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19n
cm91cCkgOwoKCgoKZXh0ZXJuIGludCBsY2hvd24gKF9fY29uc3QgY2hhciAqX19maWxlLCBfX3Vp
ZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91cCkKICAgICA7CgoKCgpleHRlcm4gaW50IGNoZGly
IChfX2NvbnN0IGNoYXIgKl9fcGF0aCkgOwoKCgpleHRlcm4gaW50IGZjaGRpciAoaW50IF9fZmQp
IDsKIyA0MjMgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gY2hhciAqZ2V0
Y3dkIChjaGFyICpfX2J1Ziwgc2l6ZV90IF9fc2l6ZSkgOwoKCgoKCmV4dGVybiBjaGFyICpnZXRf
Y3VycmVudF9kaXJfbmFtZSAodm9pZCkgOwoKCgoKCgpleHRlcm4gY2hhciAqZ2V0d2QgKGNoYXIg
Kl9fYnVmKSA7CgoKCgpleHRlcm4gaW50IGR1cCAoaW50IF9fZmQpIDsKCgpleHRlcm4gaW50IGR1
cDIgKGludCBfX2ZkLCBpbnQgX19mZDIpIDsKCgpleHRlcm4gY2hhciAqKl9fZW52aXJvbjsKCmV4
dGVybiBjaGFyICoqZW52aXJvbjsKCgoKCgpleHRlcm4gaW50IGV4ZWN2ZSAoX19jb25zdCBjaGFy
ICpfX3BhdGgsIGNoYXIgKl9fY29uc3QgX19hcmd2W10sCiAgICAgICAgICAgICAgICAgICBjaGFy
ICpfX2NvbnN0IF9fZW52cFtdKSA7CgoKCgpleHRlcm4gaW50IGZleGVjdmUgKGludCBfX2ZkLCBj
aGFyICpfX2NvbnN0IF9fYXJndltdLCBjaGFyICpfX2NvbnN0IF9fZW52cFtdKQogICAgIDsKCgoK
CmV4dGVybiBpbnQgZXhlY3YgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2NvbnN0IF9f
YXJndltdKSA7CgoKCmV4dGVybiBpbnQgZXhlY2xlIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19j
b25zdCBjaGFyICpfX2FyZywgLi4uKSA7CgoKCmV4dGVybiBpbnQgZXhlY2wgKF9fY29uc3QgY2hh
ciAqX19wYXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pIDsKCgoKZXh0ZXJuIGludCBleGVj
dnAgKF9fY29uc3QgY2hhciAqX19maWxlLCBjaGFyICpfX2NvbnN0IF9fYXJndltdKSA7CgoKCgpl
eHRlcm4gaW50IGV4ZWNscCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fY29uc3QgY2hhciAqX19h
cmcsIC4uLikgOwoKCgoKZXh0ZXJuIGludCBuaWNlIChpbnQgX19pbmMpIDsKCgoKCmV4dGVybiB2
b2lkIF9leGl0IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsK
CgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL2NvbmZuYW1lLmgiIDEgMwojIDI1ICIv
dXNyL2xvY2FsL2luY2x1ZGUvYml0cy9jb25mbmFtZS5oIiAzCmVudW0KICB7CiAgICBfUENfTElO
S19NQVgsCgogICAgX1BDX01BWF9DQU5PTiwKCiAgICBfUENfTUFYX0lOUFVULAoKICAgIF9QQ19O
QU1FX01BWCwKCiAgICBfUENfUEFUSF9NQVgsCgogICAgX1BDX1BJUEVfQlVGLAoKICAgIF9QQ19D
SE9XTl9SRVNUUklDVEVELAoKICAgIF9QQ19OT19UUlVOQywKCiAgICBfUENfVkRJU0FCTEUsCgog
ICAgX1BDX1NZTkNfSU8sCgogICAgX1BDX0FTWU5DX0lPLAoKICAgIF9QQ19QUklPX0lPLAoKICAg
IF9QQ19TT0NLX01BWEJVRiwKCiAgICBfUENfRklMRVNJWkVCSVRTLAoKICAgIF9QQ19SRUNfSU5D
Ul9YRkVSX1NJWkUsCgogICAgX1BDX1JFQ19NQVhfWEZFUl9TSVpFLAoKICAgIF9QQ19SRUNfTUlO
X1hGRVJfU0laRSwKCiAgICBfUENfUkVDX1hGRVJfQUxJR04sCgogICAgX1BDX0FMTE9DX1NJWkVf
TUlOLAoKICAgIF9QQ19TWU1MSU5LX01BWAoKICB9OwoKCmVudW0KICB7CiAgICBfU0NfQVJHX01B
WCwKCiAgICBfU0NfQ0hJTERfTUFYLAoKICAgIF9TQ19DTEtfVENLLAoKICAgIF9TQ19OR1JPVVBT
X01BWCwKCiAgICBfU0NfT1BFTl9NQVgsCgogICAgX1NDX1NUUkVBTV9NQVgsCgogICAgX1NDX1Ra
TkFNRV9NQVgsCgogICAgX1NDX0pPQl9DT05UUk9MLAoKICAgIF9TQ19TQVZFRF9JRFMsCgogICAg
X1NDX1JFQUxUSU1FX1NJR05BTFMsCgogICAgX1NDX1BSSU9SSVRZX1NDSEVEVUxJTkcsCgogICAg
X1NDX1RJTUVSUywKCiAgICBfU0NfQVNZTkNIUk9OT1VTX0lPLAoKICAgIF9TQ19QUklPUklUSVpF
RF9JTywKCiAgICBfU0NfU1lOQ0hST05JWkVEX0lPLAoKICAgIF9TQ19GU1lOQywKCiAgICBfU0Nf
TUFQUEVEX0ZJTEVTLAoKICAgIF9TQ19NRU1MT0NLLAoKICAgIF9TQ19NRU1MT0NLX1JBTkdFLAoK
ICAgIF9TQ19NRU1PUllfUFJPVEVDVElPTiwKCiAgICBfU0NfTUVTU0FHRV9QQVNTSU5HLAoKICAg
IF9TQ19TRU1BUEhPUkVTLAoKICAgIF9TQ19TSEFSRURfTUVNT1JZX09CSkVDVFMsCgogICAgX1ND
X0FJT19MSVNUSU9fTUFYLAoKICAgIF9TQ19BSU9fTUFYLAoKICAgIF9TQ19BSU9fUFJJT19ERUxU
QV9NQVgsCgogICAgX1NDX0RFTEFZVElNRVJfTUFYLAoKICAgIF9TQ19NUV9PUEVOX01BWCwKCiAg
ICBfU0NfTVFfUFJJT19NQVgsCgogICAgX1NDX1ZFUlNJT04sCgogICAgX1NDX1BBR0VTSVpFLAoK
CiAgICBfU0NfUlRTSUdfTUFYLAoKICAgIF9TQ19TRU1fTlNFTVNfTUFYLAoKICAgIF9TQ19TRU1f
VkFMVUVfTUFYLAoKICAgIF9TQ19TSUdRVUVVRV9NQVgsCgogICAgX1NDX1RJTUVSX01BWCwKCgoK
CiAgICBfU0NfQkNfQkFTRV9NQVgsCgogICAgX1NDX0JDX0RJTV9NQVgsCgogICAgX1NDX0JDX1ND
QUxFX01BWCwKCiAgICBfU0NfQkNfU1RSSU5HX01BWCwKCiAgICBfU0NfQ09MTF9XRUlHSFRTX01B
WCwKCiAgICBfU0NfRVFVSVZfQ0xBU1NfTUFYLAoKICAgIF9TQ19FWFBSX05FU1RfTUFYLAoKICAg
IF9TQ19MSU5FX01BWCwKCiAgICBfU0NfUkVfRFVQX01BWCwKCiAgICBfU0NfQ0hBUkNMQVNTX05B
TUVfTUFYLAoKCiAgICBfU0NfMl9WRVJTSU9OLAoKICAgIF9TQ18yX0NfQklORCwKCiAgICBfU0Nf
Ml9DX0RFViwKCiAgICBfU0NfMl9GT1JUX0RFViwKCiAgICBfU0NfMl9GT1JUX1JVTiwKCiAgICBf
U0NfMl9TV19ERVYsCgogICAgX1NDXzJfTE9DQUxFREVGLAoKCiAgICBfU0NfUElJLAoKICAgIF9T
Q19QSUlfWFRJLAoKICAgIF9TQ19QSUlfU09DS0VULAoKICAgIF9TQ19QSUlfSU5URVJORVQsCgog
ICAgX1NDX1BJSV9PU0ksCgogICAgX1NDX1BPTEwsCgogICAgX1NDX1NFTEVDVCwKCiAgICBfU0Nf
VUlPX01BWElPViwKCiAgICBfU0NfSU9WX01BWCA9IF9TQ19VSU9fTUFYSU9WLAoKICAgIF9TQ19Q
SUlfSU5URVJORVRfU1RSRUFNLAoKICAgIF9TQ19QSUlfSU5URVJORVRfREdSQU0sCgogICAgX1ND
X1BJSV9PU0lfQ09UUywKCiAgICBfU0NfUElJX09TSV9DTFRTLAoKICAgIF9TQ19QSUlfT1NJX00s
CgogICAgX1NDX1RfSU9WX01BWCwKCgoKICAgIF9TQ19USFJFQURTLAoKICAgIF9TQ19USFJFQURf
U0FGRV9GVU5DVElPTlMsCgogICAgX1NDX0dFVEdSX1JfU0laRV9NQVgsCgogICAgX1NDX0dFVFBX
X1JfU0laRV9NQVgsCgogICAgX1NDX0xPR0lOX05BTUVfTUFYLAoKICAgIF9TQ19UVFlfTkFNRV9N
QVgsCgogICAgX1NDX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMsCgogICAgX1NDX1RIUkVB
RF9LRVlTX01BWCwKCiAgICBfU0NfVEhSRUFEX1NUQUNLX01JTiwKCiAgICBfU0NfVEhSRUFEX1RI
UkVBRFNfTUFYLAoKICAgIF9TQ19USFJFQURfQVRUUl9TVEFDS0FERFIsCgogICAgX1NDX1RIUkVB
RF9BVFRSX1NUQUNLU0laRSwKCiAgICBfU0NfVEhSRUFEX1BSSU9SSVRZX1NDSEVEVUxJTkcsCgog
ICAgX1NDX1RIUkVBRF9QUklPX0lOSEVSSVQsCgogICAgX1NDX1RIUkVBRF9QUklPX1BST1RFQ1Qs
CgogICAgX1NDX1RIUkVBRF9QUk9DRVNTX1NIQVJFRCwKCgogICAgX1NDX05QUk9DRVNTT1JTX0NP
TkYsCgogICAgX1NDX05QUk9DRVNTT1JTX09OTE4sCgogICAgX1NDX1BIWVNfUEFHRVMsCgogICAg
X1NDX0FWUEhZU19QQUdFUywKCiAgICBfU0NfQVRFWElUX01BWCwKCiAgICBfU0NfUEFTU19NQVgs
CgoKICAgIF9TQ19YT1BFTl9WRVJTSU9OLAoKICAgIF9TQ19YT1BFTl9YQ1VfVkVSU0lPTiwKCiAg
ICBfU0NfWE9QRU5fVU5JWCwKCiAgICBfU0NfWE9QRU5fQ1JZUFQsCgogICAgX1NDX1hPUEVOX0VO
SF9JMThOLAoKICAgIF9TQ19YT1BFTl9TSE0sCgoKICAgIF9TQ18yX0NIQVJfVEVSTSwKCiAgICBf
U0NfMl9DX1ZFUlNJT04sCgogICAgX1NDXzJfVVBFLAoKCiAgICBfU0NfWE9QRU5fWFBHMiwKCiAg
ICBfU0NfWE9QRU5fWFBHMywKCiAgICBfU0NfWE9QRU5fWFBHNCwKCgogICAgX1NDX0NIQVJfQklU
LAoKICAgIF9TQ19DSEFSX01BWCwKCiAgICBfU0NfQ0hBUl9NSU4sCgogICAgX1NDX0lOVF9NQVgs
CgogICAgX1NDX0lOVF9NSU4sCgogICAgX1NDX0xPTkdfQklULAoKICAgIF9TQ19XT1JEX0JJVCwK
CiAgICBfU0NfTUJfTEVOX01BWCwKCiAgICBfU0NfTlpFUk8sCgogICAgX1NDX1NTSVpFX01BWCwK
CiAgICBfU0NfU0NIQVJfTUFYLAoKICAgIF9TQ19TQ0hBUl9NSU4sCgogICAgX1NDX1NIUlRfTUFY
LAoKICAgIF9TQ19TSFJUX01JTiwKCiAgICBfU0NfVUNIQVJfTUFYLAoKICAgIF9TQ19VSU5UX01B
WCwKCiAgICBfU0NfVUxPTkdfTUFYLAoKICAgIF9TQ19VU0hSVF9NQVgsCgoKICAgIF9TQ19OTF9B
UkdNQVgsCgogICAgX1NDX05MX0xBTkdNQVgsCgogICAgX1NDX05MX01TR01BWCwKCiAgICBfU0Nf
TkxfTk1BWCwKCiAgICBfU0NfTkxfU0VUTUFYLAoKICAgIF9TQ19OTF9URVhUTUFYLAoKCiAgICBf
U0NfWEJTNV9JTFAzMl9PRkYzMiwKCiAgICBfU0NfWEJTNV9JTFAzMl9PRkZCSUcsCgogICAgX1ND
X1hCUzVfTFA2NF9PRkY2NCwKCiAgICBfU0NfWEJTNV9MUEJJR19PRkZCSUcsCgoKICAgIF9TQ19Y
T1BFTl9MRUdBQ1ksCgogICAgX1NDX1hPUEVOX1JFQUxUSU1FLAoKICAgIF9TQ19YT1BFTl9SRUFM
VElNRV9USFJFQURTLAoKCiAgICBfU0NfQURWSVNPUllfSU5GTywKCiAgICBfU0NfQkFSUklFUlMs
CgogICAgX1NDX0JBU0UsCgogICAgX1NDX0NfTEFOR19TVVBQT1JULAoKICAgIF9TQ19DX0xBTkdf
U1VQUE9SVF9SLAoKICAgIF9TQ19DTE9DS19TRUxFQ1RJT04sCgogICAgX1NDX0NQVVRJTUUsCgog
ICAgX1NDX1RIUkVBRF9DUFVUSU1FLAoKICAgIF9TQ19ERVZJQ0VfSU8sCgogICAgX1NDX0RFVklD
RV9TUEVDSUZJQywKCiAgICBfU0NfREVWSUNFX1NQRUNJRklDX1IsCgogICAgX1NDX0ZEX01HTVQs
CgogICAgX1NDX0ZJRk8sCgogICAgX1NDX1BJUEUsCgogICAgX1NDX0ZJTEVfQVRUUklCVVRFUywK
CiAgICBfU0NfRklMRV9MT0NLSU5HLAoKICAgIF9TQ19GSUxFX1NZU1RFTSwKCiAgICBfU0NfTU9O
T1RPTklDX0NMT0NLLAoKICAgIF9TQ19NVUxUSV9QUk9DRVNTLAoKICAgIF9TQ19TSU5HTEVfUFJP
Q0VTUywKCiAgICBfU0NfTkVUV09SS0lORywKCiAgICBfU0NfUkVBREVSX1dSSVRFUl9MT0NLUywK
CiAgICBfU0NfU1BJTl9MT0NLUywKCiAgICBfU0NfUkVHRVhQLAoKICAgIF9TQ19SRUdFWF9WRVJT
SU9OLAoKICAgIF9TQ19TSEVMTCwKCiAgICBfU0NfU0lHTkFMUywKCiAgICBfU0NfU1BBV04sCgog
ICAgX1NDX1NQT1JBRElDX1NFUlZFUiwKCiAgICBfU0NfVEhSRUFEX1NQT1JBRElDX1NFUlZFUiwK
CiAgICBfU0NfU1lTVEVNX0RBVEFCQVNFLAoKICAgIF9TQ19TWVNURU1fREFUQUJBU0VfUiwKCiAg
ICBfU0NfVElNRU9VVFMsCgogICAgX1NDX1RZUEVEX01FTU9SWV9PQkpFQ1RTLAoKICAgIF9TQ19V
U0VSX0dST1VQUywKCiAgICBfU0NfVVNFUl9HUk9VUFNfUiwKCiAgICBfU0NfMl9QQlMsCgogICAg
X1NDXzJfUEJTX0FDQ09VTlRJTkcsCgogICAgX1NDXzJfUEJTX0xPQ0FURSwKCiAgICBfU0NfMl9Q
QlNfTUVTU0FHRSwKCiAgICBfU0NfMl9QQlNfVFJBQ0ssCgogICAgX1NDX1NZTUxPT1BfTUFYLAoK
ICAgIF9TQ19TVFJFQU1TLAoKICAgIF9TQ18yX1BCU19DSEVDS1BPSU5ULAoKCiAgICBfU0NfVjZf
SUxQMzJfT0ZGMzIsCgogICAgX1NDX1Y2X0lMUDMyX09GRkJJRywKCiAgICBfU0NfVjZfTFA2NF9P
RkY2NCwKCiAgICBfU0NfVjZfTFBCSUdfT0ZGQklHLAoKCiAgICBfU0NfSE9TVF9OQU1FX01BWCwK
CiAgICBfU0NfVFJBQ0UsCgogICAgX1NDX1RSQUNFX0VWRU5UX0ZJTFRFUiwKCiAgICBfU0NfVFJB
Q0VfSU5IRVJJVCwKCiAgICBfU0NfVFJBQ0VfTE9HCgogIH07CgoKCgoKZW51bQogIHsKICAgIF9D
U19QQVRILAoKCgoKICAgIF9DU19MRlNfQ0ZMQUdTID0gMTAwMCwKCiAgICBfQ1NfTEZTX0xERkxB
R1MsCgogICAgX0NTX0xGU19MSUJTLAoKICAgIF9DU19MRlNfTElOVEZMQUdTLAoKICAgIF9DU19M
RlM2NF9DRkxBR1MsCgogICAgX0NTX0xGUzY0X0xERkxBR1MsCgogICAgX0NTX0xGUzY0X0xJQlMs
CgogICAgX0NTX0xGUzY0X0xJTlRGTEFHUywKCgoKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9D
RkxBR1MgPSAxMTAwLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRjMyX0xERkxBR1MsCgogICAgX0NT
X1hCUzVfSUxQMzJfT0ZGMzJfTElCUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSU5URkxB
R1MsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0NGTEFHUywKCiAgICBfQ1NfWEJTNV9JTFAz
Ml9PRkZCSUdfTERGTEFHUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElCUywKCiAgICBf
Q1NfWEJTNV9JTFAzMl9PRkZCSUdfTElOVEZMQUdTLAoKICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRf
Q0ZMQUdTLAoKICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfTERGTEFHUywKCiAgICBfQ1NfWEJTNV9M
UDY0X09GRjY0X0xJQlMsCgogICAgX0NTX1hCUzVfTFA2NF9PRkY2NF9MSU5URkxBR1MsCgogICAg
X0NTX1hCUzVfTFBCSUdfT0ZGQklHX0NGTEFHUywKCiAgICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdf
TERGTEFHUywKCiAgICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfTElCUywKCiAgICBfQ1NfWEJTNV9M
UEJJR19PRkZCSUdfTElOVEZMQUdTLAoKCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0NG
TEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGMzJfTERGTEFHUywKCiAgICBfQ1NfUE9T
SVhfVjZfSUxQMzJfT0ZGMzJfTElCUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGMzJfTElO
VEZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfQ0ZMQUdTLAoKICAgIF9DU19Q
T1NJWF9WNl9JTFAzMl9PRkZCSUdfTERGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZG
QklHX0xJQlMsCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRkJJR19MSU5URkxBR1MsCgogICAg
X0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfQ0ZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9MUDY0X09G
RjY0X0xERkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfTElCUywKCiAgICBfQ1Nf
UE9TSVhfVjZfTFA2NF9PRkY2NF9MSU5URkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0xQQklHX09G
RkJJR19DRkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19MREZMQUdTLAoKICAg
IF9DU19QT1NJWF9WNl9MUEJJR19PRkZCSUdfTElCUywKCiAgICBfQ1NfUE9TSVhfVjZfTFBCSUdf
T0ZGQklHX0xJTlRGTEFHUywKCgoKICAgIF9DU19WNl9XSURUSF9SRVNUUklDVEVEX0VOVlMKCiAg
fTsKIyA1MDEgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMiAzCgoKZXh0ZXJuIGxvbmcg
aW50IHBhdGhjb25mIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgaW50IF9fbmFtZSkgOwoKCmV4dGVy
biBsb25nIGludCBmcGF0aGNvbmYgKGludCBfX2ZkLCBpbnQgX19uYW1lKSA7CgoKZXh0ZXJuIGxv
bmcgaW50IHN5c2NvbmYgKGludCBfX25hbWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CgoKZXh0ZXJuIHNpemVfdCBjb25mc3RyIChpbnQgX19uYW1lLCBjaGFyICpfX2J1Ziwgc2l6ZV90
IF9fbGVuKSA7CgoKCgpleHRlcm4gX19waWRfdCBnZXRwaWQgKHZvaWQpIDsKCgpleHRlcm4gX19w
aWRfdCBnZXRwcGlkICh2b2lkKSA7CgoKCgpleHRlcm4gX19waWRfdCBnZXRwZ3JwICh2b2lkKSA7
CiMgNTM2ICIvdXNyL2xvY2FsL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIF9fcGlkX3QgX19n
ZXRwZ2lkIChfX3BpZF90IF9fcGlkKSA7CgpleHRlcm4gX19waWRfdCBnZXRwZ2lkIChfX3BpZF90
IF9fcGlkKSA7CgoKCgoKCmV4dGVybiBpbnQgc2V0cGdpZCAoX19waWRfdCBfX3BpZCwgX19waWRf
dCBfX3BnaWQpIDsKIyA1NjIgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4g
aW50IHNldHBncnAgKHZvaWQpIDsKIyA1ODAgIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIg
MwpleHRlcm4gX19waWRfdCBzZXRzaWQgKHZvaWQpIDsKCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0c2lk
IChfX3BpZF90IF9fcGlkKSA7CgoKCmV4dGVybiBfX3VpZF90IGdldHVpZCAodm9pZCkgOwoKCmV4
dGVybiBfX3VpZF90IGdldGV1aWQgKHZvaWQpIDsKCgpleHRlcm4gX19naWRfdCBnZXRnaWQgKHZv
aWQpIDsKCgpleHRlcm4gX19naWRfdCBnZXRlZ2lkICh2b2lkKSA7CgoKCgpleHRlcm4gaW50IGdl
dGdyb3VwcyAoaW50IF9fc2l6ZSwgX19naWRfdCBfX2xpc3RbXSkgOwoKCgpleHRlcm4gaW50IGdy
b3VwX21lbWJlciAoX19naWRfdCBfX2dpZCkgOwoKCgoKCgpleHRlcm4gaW50IHNldHVpZCAoX191
aWRfdCBfX3VpZCkgOwoKCgoKZXh0ZXJuIGludCBzZXRyZXVpZCAoX191aWRfdCBfX3J1aWQsIF9f
dWlkX3QgX19ldWlkKSA7CgoKCgpleHRlcm4gaW50IHNldGV1aWQgKF9fdWlkX3QgX191aWQpIDsK
CgoKCgoKZXh0ZXJuIGludCBzZXRnaWQgKF9fZ2lkX3QgX19naWQpIDsKCgoKCmV4dGVybiBpbnQg
c2V0cmVnaWQgKF9fZ2lkX3QgX19yZ2lkLCBfX2dpZF90IF9fZWdpZCkgOwoKCgoKZXh0ZXJuIGlu
dCBzZXRlZ2lkIChfX2dpZF90IF9fZ2lkKSA7CgoKCgoKCmV4dGVybiBfX3BpZF90IGZvcmsgKHZv
aWQpIDsKCgoKCgoKZXh0ZXJuIF9fcGlkX3QgdmZvcmsgKHZvaWQpIDsKCgoKCgpleHRlcm4gY2hh
ciAqdHR5bmFtZSAoaW50IF9fZmQpIDsKCgoKZXh0ZXJuIGludCB0dHluYW1lX3IgKGludCBfX2Zk
LCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKSA7CgoKCmV4dGVybiBpbnQgaXNhdHR5IChp
bnQgX19mZCkgOwoKCgoKCmV4dGVybiBpbnQgdHR5c2xvdCAodm9pZCkgOwoKCgoKZXh0ZXJuIGlu
dCBsaW5rIChfX2NvbnN0IGNoYXIgKl9fZnJvbSwgX19jb25zdCBjaGFyICpfX3RvKSA7CgoKCmV4
dGVybiBpbnQgc3ltbGluayAoX19jb25zdCBjaGFyICpfX2Zyb20sIF9fY29uc3QgY2hhciAqX190
bykgOwoKCgoKZXh0ZXJuIGludCByZWFkbGluayAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
cGF0aCwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IF9fbGVuKSA7CgoKCmV4dGVybiBpbnQgdW5saW5rIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoK
CmV4dGVybiBpbnQgcm1kaXIgKF9fY29uc3QgY2hhciAqX19wYXRoKSA7CgoKCmV4dGVybiBfX3Bp
ZF90IHRjZ2V0cGdycCAoaW50IF9fZmQpIDsKCgpleHRlcm4gaW50IHRjc2V0cGdycCAoaW50IF9f
ZmQsIF9fcGlkX3QgX19wZ3JwX2lkKSA7CgoKCmV4dGVybiBjaGFyICpnZXRsb2dpbiAodm9pZCkg
OwoKCgoKZXh0ZXJuIGludCBnZXRsb2dpbl9yIChjaGFyICpfX25hbWUsIHNpemVfdCBfX25hbWVf
bGVuKSA7CgoKCgpleHRlcm4gaW50IHNldGxvZ2luIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoj
IDcyNiAiL3Vzci9sb2NhbC9pbmNsdWRlL3VuaXN0ZC5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNs
dWRlL2dldG9wdC5oIiAxIDMKIyA0NyAiL3Vzci9sb2NhbC9pbmNsdWRlL2dldG9wdC5oIiAzCmV4
dGVybiBjaGFyICpvcHRhcmc7CiMgNjEgIi91c3IvbG9jYWwvaW5jbHVkZS9nZXRvcHQuaCIgMwpl
eHRlcm4gaW50IG9wdGluZDsKCgoKCmV4dGVybiBpbnQgb3B0ZXJyOwoKCgpleHRlcm4gaW50IG9w
dG9wdDsKIyAxNDUgIi91c3IvbG9jYWwvaW5jbHVkZS9nZXRvcHQuaCIgMwpleHRlcm4gaW50IGdl
dG9wdCAoaW50IF9fX2FyZ2MsIGNoYXIgKmNvbnN0ICpfX19hcmd2LCBjb25zdCBjaGFyICpfX3No
b3J0b3B0cyk7CiMgNzI3ICIvdXNyL2xvY2FsL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKCgoKCgoK
ZXh0ZXJuIGludCBnZXRob3N0bmFtZSAoY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pIDsKCgoK
CgoKZXh0ZXJuIGludCBzZXRob3N0bmFtZSAoX19jb25zdCBjaGFyICpfX25hbWUsIHNpemVfdCBf
X2xlbikgOwoKCgpleHRlcm4gaW50IHNldGhvc3RpZCAobG9uZyBpbnQgX19pZCkgOwoKCgoKCmV4
dGVybiBpbnQgZ2V0ZG9tYWlubmFtZSAoY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pIDsKZXh0
ZXJuIGludCBzZXRkb21haW5uYW1lIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVu
KSA7CgoKCgoKZXh0ZXJuIGludCB2aGFuZ3VwICh2b2lkKSA7CgoKZXh0ZXJuIGludCByZXZva2Ug
KF9fY29uc3QgY2hhciAqX19maWxlKSA7CgoKCgoKCgpleHRlcm4gaW50IHByb2ZpbCAodW5zaWdu
ZWQgc2hvcnQgaW50ICpfX3NhbXBsZV9idWZmZXIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAg
ICAgICAgICBzaXplX3QgX19vZmZzZXQsIHVuc2lnbmVkIGludCBfX3NjYWxlKSA7CgoKCgoKZXh0
ZXJuIGludCBhY2N0IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoKCgpleHRlcm4gY2hhciAqZ2V0
dXNlcnNoZWxsICh2b2lkKSA7CmV4dGVybiB2b2lkIGVuZHVzZXJzaGVsbCAodm9pZCkgOwpleHRl
cm4gdm9pZCBzZXR1c2Vyc2hlbGwgKHZvaWQpIDsKCgoKCgpleHRlcm4gaW50IGRhZW1vbiAoaW50
IF9fbm9jaGRpciwgaW50IF9fbm9jbG9zZSkgOwoKCgoKCgpleHRlcm4gaW50IGNocm9vdCAoX19j
b25zdCBjaGFyICpfX3BhdGgpIDsKCgoKZXh0ZXJuIGNoYXIgKmdldHBhc3MgKF9fY29uc3QgY2hh
ciAqX19wcm9tcHQpIDsKCgoKCgpleHRlcm4gaW50IGZzeW5jIChpbnQgX19mZCkgOwoKCgoKCgpl
eHRlcm4gbG9uZyBpbnQgZ2V0aG9zdGlkICh2b2lkKSA7CgoKZXh0ZXJuIHZvaWQgc3luYyAodm9p
ZCkgOwoKCgoKZXh0ZXJuIGludCBnZXRwYWdlc2l6ZSAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCgoKCgoKZXh0ZXJuIGludCB0cnVuY2F0ZSAoX19jb25zdCBjaGFyICpfX2Zp
bGUsIF9fb2ZmNjRfdCBfX2xlbmd0aCkgX19hc21fXyAoIiIgInRydW5jYXRlNjQiKTsKCgoKCgoK
CmV4dGVybiBpbnQgdHJ1bmNhdGU2NCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fb2ZmNjRfdCBf
X2xlbmd0aCkgOwoKCgoKCgoKZXh0ZXJuIGludCBmdHJ1bmNhdGUgKGludCBfX2ZkLCBfX29mZjY0
X3QgX19sZW5ndGgpIF9fYXNtX18gKCIiICJmdHJ1bmNhdGU2NCIpOwoKCgoKCgpleHRlcm4gaW50
IGZ0cnVuY2F0ZTY0IChpbnQgX19mZCwgX19vZmY2NF90IF9fbGVuZ3RoKSA7CgoKCgoKZXh0ZXJu
IGludCBnZXRkdGFibGVzaXplICh2b2lkKSA7CiMgODY2ICIvdXNyL2xvY2FsL2luY2x1ZGUvdW5p
c3RkLmgiIDMKZXh0ZXJuIGludCBicmsgKHZvaWQgKl9fYWRkcikgOwoKCgoKCmV4dGVybiB2b2lk
ICpzYnJrIChpbnRwdHJfdCBfX2RlbHRhKSA7CiMgODg3ICIvdXNyL2xvY2FsL2luY2x1ZGUvdW5p
c3RkLmgiIDMKZXh0ZXJuIGxvbmcgaW50IHN5c2NhbGwgKGxvbmcgaW50IF9fc3lzbm8sIC4uLikg
OwojIDkxMCAiL3Vzci9sb2NhbC9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgbG9ja2Yg
KGludCBfX2ZkLCBpbnQgX19jbWQsIF9fb2ZmNjRfdCBfX2xlbikgX19hc21fXyAoIiIgImxvY2tm
NjQiKTsKCgoKCgoKZXh0ZXJuIGludCBsb2NrZjY0IChpbnQgX19mZCwgaW50IF9fY21kLCBfX29m
ZjY0X3QgX19sZW4pIDsKIyA5MzggIi91c3IvbG9jYWwvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRl
cm4gaW50IGZkYXRhc3luYyAoaW50IF9fZmlsZGVzKSA7CgoKCgoKCgpleHRlcm4gY2hhciAqY3J5
cHQgKF9fY29uc3QgY2hhciAqX19rZXksIF9fY29uc3QgY2hhciAqX19zYWx0KSA7CgoKCmV4dGVy
biB2b2lkIGVuY3J5cHQgKGNoYXIgKl9fYmxvY2ssIGludCBfX2VkZmxhZykgOwoKCgoKCgpleHRl
cm4gdm9pZCBzd2FiIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19mcm9tLCB2b2lkICpfX3Jl
c3RyaWN0IF9fdG8sCiAgICAgICAgICAgICAgICAgIHNzaXplX3QgX19uKSA7CgoKCgoKCgpleHRl
cm4gY2hhciAqY3Rlcm1pZCAoY2hhciAqX19zKSA7CiMgOTgzICIvdXNyL2xvY2FsL2luY2x1ZGUv
dW5pc3RkLmgiIDMKZXh0ZXJuIGludCBwdGhyZWFkX2F0Zm9yayAodm9pZCAoKl9fcHJlcGFyZSkg
KHZvaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqX19wYXJlbnQpICh2b2lk
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKl9fY2hpbGQpICh2b2lkKSkgOwoK
CgojIDk1ICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9z
dGRpby5oIiAxIDMKIyAzMCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDMKCgoKCiMgMSAi
L3Vzci9sb2NhbC9nY2MvMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVk
ZS9zdGRkZWYuaCIgMSAzCiMgMzUgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRpby5oIiAyIDMKIyA0
NSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUg
RklMRTsKIyA1NSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBzdHJ1Y3Qg
X0lPX0ZJTEUgX19GSUxFOwojIDY1ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEg
Ii91c3IvbG9jYWwvaW5jbHVkZS9saWJpby5oIiAxIDMKIyAzMiAiL3Vzci9sb2NhbC9pbmNsdWRl
L2xpYmlvLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvX0dfY29uZmlnLmgiIDEgMwojIDE0
ICIvdXNyL2xvY2FsL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYy8z
L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMK
IyAyOTMgIi91c3IvbG9jYWwvZ2NjLzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4x
L2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiBsb25nIGludCB3Y2hhcl90OwojIDMyMCAiL3Vz
ci9sb2NhbC9nY2MvMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9z
dGRkZWYuaCIgMwp0eXBlZGVmIHVuc2lnbmVkIGludCB3aW50X3Q7CiMgMTUgIi91c3IvbG9jYWwv
aW5jbHVkZS9fR19jb25maWcuaCIgMiAzCiMgMjQgIi91c3IvbG9jYWwvaW5jbHVkZS9fR19jb25m
aWcuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS93Y2hhci5oIiAxIDMKIyA0OCAiL3Vzci9s
b2NhbC9pbmNsdWRlL3djaGFyLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYy8zL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyA0OSAiL3Vzci9s
b2NhbC9pbmNsdWRlL3djaGFyLmgiIDIgMwoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy93
Y2hhci5oIiAxIDMKIyA1MSAiL3Vzci9sb2NhbC9pbmNsdWRlL3djaGFyLmgiIDIgMwojIDY3ICIv
dXNyL2xvY2FsL2luY2x1ZGUvd2NoYXIuaCIgMwp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fY291
bnQ7CiAgdW5pb24KICB7CiAgICB3aW50X3QgX193Y2g7CiAgICBjaGFyIF9fd2NoYls0XTsKICB9
IF9fdmFsdWU7Cn0gX19tYnN0YXRlX3Q7CiMgMjUgIi91c3IvbG9jYWwvaW5jbHVkZS9fR19jb25m
aWcuaCIgMiAzCgp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmZfdCBfX3BvczsKICBfX21ic3RhdGVf
dCBfX3N0YXRlOwp9IF9HX2Zwb3NfdDsKdHlwZWRlZiBzdHJ1Y3QKewogIF9fb2ZmNjRfdCBfX3Bv
czsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3M2NF90OwojIDQ0ICIvdXNyL2xvY2Fs
L2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvZ2NvbnYuaCIg
MSAzCiMgMjggIi91c3IvbG9jYWwvaW5jbHVkZS9nY29udi5oIiAzCiMgMSAiL3Vzci9sb2NhbC9p
bmNsdWRlL3djaGFyLmgiIDEgMwojIDQ4ICIvdXNyL2xvY2FsL2luY2x1ZGUvd2NoYXIuaCIgMwoj
IDEgIi91c3IvbG9jYWwvZ2NjLzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2lu
Y2x1ZGUvc3RkZGVmLmgiIDEgMwojIDQ5ICIvdXNyL2xvY2FsL2luY2x1ZGUvd2NoYXIuaCIgMiAz
CiMgMjkgIi91c3IvbG9jYWwvaW5jbHVkZS9nY29udi5oIiAyIDMKCgojIDEgIi91c3IvbG9jYWwv
Z2NjLzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgi
IDEgMwojIDMyICIvdXNyL2xvY2FsL2luY2x1ZGUvZ2NvbnYuaCIgMiAzCgoKCgoKZW51bQp7CiAg
X19HQ09OVl9PSyA9IDAsCiAgX19HQ09OVl9OT0NPTlYsCiAgX19HQ09OVl9OT0RCLAogIF9fR0NP
TlZfTk9NRU0sCgogIF9fR0NPTlZfRU1QVFlfSU5QVVQsCiAgX19HQ09OVl9GVUxMX09VVFBVVCwK
ICBfX0dDT05WX0lMTEVHQUxfSU5QVVQsCiAgX19HQ09OVl9JTkNPTVBMRVRFX0lOUFVULAoKICBf
X0dDT05WX0lMTEVHQUxfREVTQ1JJUFRPUiwKICBfX0dDT05WX0lOVEVSTkFMX0VSUk9SCn07CgoK
CmVudW0KewogIF9fR0NPTlZfSVNfTEFTVCA9IDB4MDAwMSwKICBfX0dDT05WX0lHTk9SRV9FUlJP
UlMgPSAweDAwMDIKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcDsKc3RydWN0IF9fZ2NvbnZfc3Rl
cF9kYXRhOwpzdHJ1Y3QgX19nY29udl9sb2FkZWRfb2JqZWN0OwpzdHJ1Y3QgX19nY29udl90cmFu
c19kYXRhOwoKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3Rl
cCAqLCBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgKiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqKiwgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqLCBzaXplX3QgKiwgaW50
LCBpbnQpOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl9pbml0X2ZjdCkgKHN0cnVjdCBfX2djb252
X3N0ZXAgKik7CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZfZW5kX2ZjdCkgKHN0cnVjdCBfX2djb252
X3N0ZXAgKik7CgoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19mY3QpIChzdHJ1Y3QgX19n
Y29udl9zdGVwICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX19n
Y29udl9zdGVwX2RhdGEgKiwgdm9pZCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiosCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciAqKiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqKTsKCgp0eXBlZGVmIGludCAoKl9f
Z2NvbnZfdHJhbnNfY29udGV4dF9mY3QpICh2b2lkICosIF9fY29uc3QgdW5zaWduZWQgY2hhciAq
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90
cmFuc19xdWVyeV9mY3QpIChfX2NvbnN0IGNoYXIgKiwgX19jb25zdCBjaGFyICoqKiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqKTsKCgp0eXBlZGVmIGlu
dCAoKl9fZ2NvbnZfdHJhbnNfaW5pdF9mY3QpICh2b2lkICoqLCBjb25zdCBjaGFyICopOwp0eXBl
ZGVmIHZvaWQgKCpfX2djb252X3RyYW5zX2VuZF9mY3QpICh2b2lkICopOwoKc3RydWN0IF9fZ2Nv
bnZfdHJhbnNfZGF0YQp7CgogIF9fZ2NvbnZfdHJhbnNfZmN0IF9fdHJhbnNfZmN0OwogIF9fZ2Nv
bnZfdHJhbnNfY29udGV4dF9mY3QgX190cmFuc19jb250ZXh0X2ZjdDsKICBfX2djb252X3RyYW5z
X2VuZF9mY3QgX190cmFuc19lbmRfZmN0OwogIHZvaWQgKl9fZGF0YTsKICBzdHJ1Y3QgX19nY29u
dl90cmFuc19kYXRhICpfX25leHQ7Cn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXAKewogIHN0cnVj
dCBfX2djb252X2xvYWRlZF9vYmplY3QgKl9fc2hsaWJfaGFuZGxlOwogIF9fY29uc3QgY2hhciAq
X19tb2RuYW1lOwoKICBpbnQgX19jb3VudGVyOwoKICBjaGFyICpfX2Zyb21fbmFtZTsKICBjaGFy
ICpfX3RvX25hbWU7CgogIF9fZ2NvbnZfZmN0IF9fZmN0OwogIF9fZ2NvbnZfaW5pdF9mY3QgX19p
bml0X2ZjdDsKICBfX2djb252X2VuZF9mY3QgX19lbmRfZmN0OwoKCgogIGludCBfX21pbl9uZWVk
ZWRfZnJvbTsKICBpbnQgX19tYXhfbmVlZGVkX2Zyb207CiAgaW50IF9fbWluX25lZWRlZF90bzsK
ICBpbnQgX19tYXhfbmVlZGVkX3RvOwoKCiAgaW50IF9fc3RhdGVmdWw7CgogIHZvaWQgKl9fZGF0
YTsKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhCnsKICB1bnNpZ25lZCBjaGFyICpfX291
dGJ1ZjsKICB1bnNpZ25lZCBjaGFyICpfX291dGJ1ZmVuZDsKCgoKICBpbnQgX19mbGFnczsKCgoK
ICBpbnQgX19pbnZvY2F0aW9uX2NvdW50ZXI7CgoKCiAgaW50IF9faW50ZXJuYWxfdXNlOwoKICBf
X21ic3RhdGVfdCAqX19zdGF0ZXA7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKCgoKICBzdHJ1Y3Qg
X19nY29udl90cmFuc19kYXRhICpfX3RyYW5zOwp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfX2djb252
X2luZm8KewogIHNpemVfdCBfX25zdGVwczsKICBzdHJ1Y3QgX19nY29udl9zdGVwICpfX3N0ZXBz
OwogIF9fZXh0ZW5zaW9uX18gc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9fZGF0YSBbXTsKfSAq
X19nY29udl90OwojIDQ1ICIvdXNyL2xvY2FsL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwp0eXBl
ZGVmIHVuaW9uCnsKICBzdHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgc3RydWN0CiAgewogICAg
c3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9f
ZGF0YTsKICB9IF9fY29tYmluZWQ7Cn0gX0dfaWNvbnZfdDsKCnR5cGVkZWYgaW50IF9HX2ludDE2
X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IF9HX2lu
dDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWdu
ZWQgaW50IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0
eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18g
KF9fU0lfXykpKTsKIyAzMyAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpYmlvLmgiIDIgMwojIDUzICIv
dXNyL2xvY2FsL2luY2x1ZGUvbGliaW8uaCIgMwojIDEgIi91c3IvbG9jYWwvZ2NjLzMvbGliL2dj
Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkYXJnLmgiIDEgMwojIDQzICIv
dXNyL2xvY2FsL2djYy8zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRl
L3N0ZGFyZy5oIiAzCnR5cGVkZWYgX19idWlsdGluX3ZhX2xpc3QgX19nbnVjX3ZhX2xpc3Q7CiMg
NTQgIi91c3IvbG9jYWwvaW5jbHVkZS9saWJpby5oIiAyIDMKIyAxNjAgIi91c3IvbG9jYWwvaW5j
bHVkZS9saWJpby5oIiAzCnN0cnVjdCBfSU9fanVtcF90OyBzdHJ1Y3QgX0lPX0ZJTEU7CiMgMTcw
ICIvdXNyL2xvY2FsL2luY2x1ZGUvbGliaW8uaCIgMwp0eXBlZGVmIHZvaWQgX0lPX2xvY2tfdDsK
CgoKCgpzdHJ1Y3QgX0lPX21hcmtlciB7CiAgc3RydWN0IF9JT19tYXJrZXIgKl9uZXh0OwogIHN0
cnVjdCBfSU9fRklMRSAqX3NidWY7CgoKCiAgaW50IF9wb3M7CiMgMTkzICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvbGliaW8uaCIgMwp9OwoKCmVudW0gX19jb2RlY3Z0X3Jlc3VsdAp7CiAgX19jb2RlY3Z0
X29rLAogIF9fY29kZWN2dF9wYXJ0aWFsLAogIF9fY29kZWN2dF9lcnJvciwKICBfX2NvZGVjdnRf
bm9jb252Cn07CiMgMjYxICIvdXNyL2xvY2FsL2luY2x1ZGUvbGliaW8uaCIgMwpzdHJ1Y3QgX0lP
X0ZJTEUgewogIGludCBfZmxhZ3M7CgoKCgogIGNoYXIqIF9JT19yZWFkX3B0cjsKICBjaGFyKiBf
SU9fcmVhZF9lbmQ7CiAgY2hhciogX0lPX3JlYWRfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfYmFz
ZTsKICBjaGFyKiBfSU9fd3JpdGVfcHRyOwogIGNoYXIqIF9JT193cml0ZV9lbmQ7CiAgY2hhciog
X0lPX2J1Zl9iYXNlOwogIGNoYXIqIF9JT19idWZfZW5kOwoKICBjaGFyICpfSU9fc2F2ZV9iYXNl
OwogIGNoYXIgKl9JT19iYWNrdXBfYmFzZTsKICBjaGFyICpfSU9fc2F2ZV9lbmQ7CgogIHN0cnVj
dCBfSU9fbWFya2VyICpfbWFya2VyczsKCiAgc3RydWN0IF9JT19GSUxFICpfY2hhaW47CgogIGlu
dCBfZmlsZW5vOwogIGludCBfYmxrc2l6ZTsKICBfX29mZl90IF9vbGRfb2Zmc2V0OwoKCgogIHVu
c2lnbmVkIHNob3J0IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVfb2Zmc2V0Owog
IGNoYXIgX3Nob3J0YnVmWzFdOwoKCgogIF9JT19sb2NrX3QgKl9sb2NrOwojIDMwNSAiL3Vzci9s
b2NhbC9pbmNsdWRlL2xpYmlvLmgiIDMKICBfX29mZjY0X3QgX29mZnNldDsKCgoKCgogIHZvaWQg
Kl9fcGFkMTsKICB2b2lkICpfX3BhZDI7CgogIGludCBfbW9kZTsKCiAgY2hhciBfdW51c2VkMlsx
NSAqIHNpemVvZiAoaW50KSAtIDIgKiBzaXplb2YgKHZvaWQgKildOwoKfTsKCgp0eXBlZGVmIHN0
cnVjdCBfSU9fRklMRSBfSU9fRklMRTsKCgpzdHJ1Y3QgX0lPX0ZJTEVfcGx1czsKCmV4dGVybiBz
dHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGluXzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklM
RV9wbHVzIF9JT18yXzFfc3Rkb3V0XzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18y
XzFfc3RkZXJyXzsKIyAzNDQgIi91c3IvbG9jYWwvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVkZWYg
X19zc2l6ZV90IF9faW9fcmVhZF9mbiAodm9pZCAqX19jb29raWUsIGNoYXIgKl9fYnVmLCBzaXpl
X3QgX19uYnl0ZXMpOwoKCgoKCgoKdHlwZWRlZiBfX3NzaXplX3QgX19pb193cml0ZV9mbiAodm9p
ZCAqX19jb29raWUsIF9fY29uc3QgY2hhciAqX19idWYsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBfX24pOwoKCgoKCgoKdHlwZWRlZiBpbnQgX19pb19zZWVrX2ZuICh2
b2lkICpfX2Nvb2tpZSwgX19vZmY2NF90ICpfX3BvcywgaW50IF9fdyk7CgoKdHlwZWRlZiBpbnQg
X19pb19jbG9zZV9mbiAodm9pZCAqX19jb29raWUpOwoKCgoKdHlwZWRlZiBfX2lvX3JlYWRfZm4g
Y29va2llX3JlYWRfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX3dyaXRlX2ZuIGNvb2tpZV93cml0
ZV9mdW5jdGlvbl90Owp0eXBlZGVmIF9faW9fc2Vla19mbiBjb29raWVfc2Vla19mdW5jdGlvbl90
Owp0eXBlZGVmIF9faW9fY2xvc2VfZm4gY29va2llX2Nsb3NlX2Z1bmN0aW9uX3Q7CgoKdHlwZWRl
ZiBzdHJ1Y3QKewogIF9faW9fcmVhZF9mbiAqcmVhZDsKICBfX2lvX3dyaXRlX2ZuICp3cml0ZTsK
ICBfX2lvX3NlZWtfZm4gKnNlZWs7CiAgX19pb19jbG9zZV9mbiAqY2xvc2U7Cn0gX0lPX2Nvb2tp
ZV9pb19mdW5jdGlvbnNfdDsKdHlwZWRlZiBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190IGNvb2tp
ZV9pb19mdW5jdGlvbnNfdDsKCnN0cnVjdCBfSU9fY29va2llX2ZpbGU7CgoKZXh0ZXJuIHZvaWQg
X0lPX2Nvb2tpZV9pbml0IChzdHJ1Y3QgX0lPX2Nvb2tpZV9maWxlICpfX2NmaWxlLCBpbnQgX19y
ZWFkX3dyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKl9fY29va2llLCBf
SU9fY29va2llX2lvX2Z1bmN0aW9uc190IF9fZm5zKTsKCgoKCgoKCmV4dGVybiBpbnQgX191bmRl
cmZsb3cgKF9JT19GSUxFICopIDsKZXh0ZXJuIGludCBfX3VmbG93IChfSU9fRklMRSAqKSA7CmV4
dGVybiBpbnQgX19vdmVyZmxvdyAoX0lPX0ZJTEUgKiwgaW50KSA7CmV4dGVybiB3aW50X3QgX193
dW5kZXJmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiB3aW50X3QgX193dWZsb3cgKF9JT19GSUxF
ICopIDsKZXh0ZXJuIHdpbnRfdCBfX3dvdmVyZmxvdyAoX0lPX0ZJTEUgKiwgd2ludF90KSA7CiMg
NDI2ICIvdXNyL2xvY2FsL2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50IF9JT19nZXRjIChf
SU9fRklMRSAqX19mcCkgOwpleHRlcm4gaW50IF9JT19wdXRjIChpbnQgX19jLCBfSU9fRklMRSAq
X19mcCkgOwpleHRlcm4gaW50IF9JT19mZW9mIChfSU9fRklMRSAqX19mcCkgOwpleHRlcm4gaW50
IF9JT19mZXJyb3IgKF9JT19GSUxFICpfX2ZwKSA7CgpleHRlcm4gaW50IF9JT19wZWVrY19sb2Nr
ZWQgKF9JT19GSUxFICpfX2ZwKSA7CgoKCgoKZXh0ZXJuIHZvaWQgX0lPX2Zsb2NrZmlsZSAoX0lP
X0ZJTEUgKikgOwpleHRlcm4gdm9pZCBfSU9fZnVubG9ja2ZpbGUgKF9JT19GSUxFICopIDsKZXh0
ZXJuIGludCBfSU9fZnRyeWxvY2tmaWxlIChfSU9fRklMRSAqKSA7CiMgNDU2ICIvdXNyL2xvY2Fs
L2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50IF9JT192ZnNjYW5mIChfSU9fRklMRSAqIF9f
cmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LAogICAgICAgICAgICAgICAgICAgICAg
ICBfX2dudWNfdmFfbGlzdCwgaW50ICpfX3Jlc3RyaWN0KSA7CmV4dGVybiBpbnQgX0lPX3ZmcHJp
bnRmIChfSU9fRklMRSAqX19yZXN0cmljdCwgY29uc3QgY2hhciAqX19yZXN0cmljdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0KSA7CmV4dGVybiBfX3NzaXplX3QgX0lP
X3BhZG4gKF9JT19GSUxFICosIGludCwgX19zc2l6ZV90KSA7CmV4dGVybiBzaXplX3QgX0lPX3Nn
ZXRuIChfSU9fRklMRSAqLCB2b2lkICosIHNpemVfdCkgOwoKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9f
c2Vla29mZiAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQsIGludCkgOwpleHRlcm4gX19vZmY2
NF90IF9JT19zZWVrcG9zIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGludCkgOwoKZXh0ZXJuIHZv
aWQgX0lPX2ZyZWVfYmFja3VwX2FyZWEgKF9JT19GSUxFICopIDsKIyA2NiAiL3Vzci9sb2NhbC9p
bmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0Owoj
IDgyICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMwp0eXBlZGVmIF9HX2Zwb3M2NF90IGZw
b3NfdDsKCgp0eXBlZGVmIF9HX2Zwb3M2NF90IGZwb3M2NF90OwojIDEyOSAiL3Vzci9sb2NhbC9p
bmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zdGRpb19saW0u
aCIgMSAzCiMgMTMwICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCmV4dGVybiBG
SUxFICpzdGRpbjsKZXh0ZXJuIEZJTEUgKnN0ZG91dDsKZXh0ZXJuIEZJTEUgKnN0ZGVycjsKCgoK
CgoKZXh0ZXJuIGludCByZW1vdmUgKF9fY29uc3QgY2hhciAqX19maWxlbmFtZSkgOwoKZXh0ZXJu
IGludCByZW5hbWUgKF9fY29uc3QgY2hhciAqX19vbGQsIF9fY29uc3QgY2hhciAqX19uZXcpIDsK
CgoKCgoKCmV4dGVybiBGSUxFICp0bXBmaWxlICh2b2lkKSBfX2FzbV9fICgiIiAidG1wZmlsZTY0
Iik7CgoKCgoKZXh0ZXJuIEZJTEUgKnRtcGZpbGU2NCAodm9pZCkgOwoKCmV4dGVybiBjaGFyICp0
bXBuYW0gKGNoYXIgKl9fcykgOwoKCgoKZXh0ZXJuIGNoYXIgKnRtcG5hbV9yIChjaGFyICpfX3Mp
IDsKIyAxNzggIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBjaGFyICp0ZW1w
bmFtIChfX2NvbnN0IGNoYXIgKl9fZGlyLCBfX2NvbnN0IGNoYXIgKl9fcGZ4KQogICAgIF9fYXR0
cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgpleHRlcm4gaW50IGZjbG9zZSAoRklMRSAqX19z
dHJlYW0pIDsKCmV4dGVybiBpbnQgZmZsdXNoIChGSUxFICpfX3N0cmVhbSkgOwoKCgpleHRlcm4g
aW50IGZmbHVzaF91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZmNs
b3NlYWxsICh2b2lkKSA7CiMgMjA5ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRl
cm4gRklMRSAqZm9wZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLCBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcykgX19hc21fXyAoIiIgImZvcGVuNjQiKTsKCgpl
eHRlcm4gRklMRSAqZnJlb3BlbiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUs
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry
ZWFtKSBfX2FzbV9fICgiIiAiZnJlb3BlbjY0Iik7CiMgMjIyICIvdXNyL2xvY2FsL2luY2x1ZGUv
c3RkaW8uaCIgMwpleHRlcm4gRklMRSAqZm9wZW42NCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19tb2RlcykgOwpleHRlcm4gRklMRSAqZnJlb3BlbjY0IChfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0pIDsKCgoKCmV4dGVybiBGSUxFICpmZG9wZW4gKGludCBfX2ZkLCBfX2NvbnN0
IGNoYXIgKl9fbW9kZXMpIDsKCgoKCgpleHRlcm4gRklMRSAqZm9wZW5jb29raWUgKHZvaWQgKl9f
cmVzdHJpY3QgX19tYWdpY19jb29raWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX0lP
X2Nvb2tpZV9pb19mdW5jdGlvbnNfdCBfX2lvX2Z1bmNzKSA7CgoKZXh0ZXJuIEZJTEUgKmZtZW1v
cGVuICh2b2lkICpfX3MsIHNpemVfdCBfX2xlbiwgX19jb25zdCBjaGFyICpfX21vZGVzKSA7CgoK
CgpleHRlcm4gRklMRSAqb3Blbl9tZW1zdHJlYW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9fYnVmbG9j
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX3NpemVs
b2MpIDsKCgoKCgpleHRlcm4gdm9pZCBzZXRidWYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0s
IGNoYXIgKl9fcmVzdHJpY3QgX19idWYpIDsKCgoKZXh0ZXJuIGludCBzZXR2YnVmIChGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAg
ICAgICAgIGludCBfX21vZGVzLCBzaXplX3QgX19uKSA7CgoKCgpleHRlcm4gdm9pZCBzZXRidWZm
ZXIgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc2l6ZSkgOwoKCmV4dGVybiB2b2lkIHNldGxp
bmVidWYgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGZwcmludGYgKEZJTEUgKl9f
cmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4dGVybiBpbnQgcHJpbnRmIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBzcHJpbnRmIChjaGFyICpf
X3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19mb3JtYXQsIC4uLikgOwoKCmV4dGVybiBpbnQgdmZwcmludGYgKEZJTEUgKl9fcmVzdHJp
Y3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAg
ICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKSA7CgpleHRlcm4gaW50IHZwcmludGYgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAg
OwoKZXh0ZXJuIGludCB2c3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xp
c3QgX19hcmcpIDsKCgoKZXh0ZXJuIGludCBzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3Ms
IHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9f
cHJpbnRmX18sIDMsIDQpKSk7CgpleHRlcm4gaW50IHZzbnByaW50ZiAoY2hhciAqX19yZXN0cmlj
dCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDApKSk7CgoKCgoKZXh0ZXJuIGlu
dCB2YXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLCBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19mLAogICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSk7CmV4dGVy
biBpbnQgX19hc3ByaW50ZiAoY2hhciAqKl9fcmVzdHJpY3QgX19wdHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CmV4dGVybiBpbnQgYXNw
cmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLAogICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19m
b3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKCgpleHRlcm4gaW50IHZkcHJpbnRmIChpbnQg
X19mZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LAogICAgICAgICAgICAgICAgICAg
ICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAo
X19wcmludGZfXywgMiwgMCkpKTsKZXh0ZXJuIGludCBkcHJpbnRmIChpbnQgX19mZCwgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9y
bWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CgoKCgpleHRlcm4gaW50IGZzY2FuZiAoRklMRSAq
X19yZXN0cmljdCBfX3N0cmVhbSwKICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHNjYW5mIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBzc2NhbmYgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKCgpleHRlcm4gaW50IHZmc2NhbmYgKEZJTEUgKl9f
cmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAg
ICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
Zm9ybWF0X18gKF9fc2NhbmZfXywgMiwgMCkpKTsKCgpleHRlcm4gaW50IHZzY2FuZiAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBf
X2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAxLCAwKSkpOwoKCmV4dGVybiBp
bnQgdnNzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9f
YXJnKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSk7
CgoKCgpleHRlcm4gaW50IGZnZXRjIChGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGdldGMg
KEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIGludCBnZXRjaGFyICh2b2lkKSA7CgoKCgoKCgpl
eHRlcm4gaW50IGdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZ2V0
Y2hhcl91bmxvY2tlZCAodm9pZCkgOwoKCgoKZXh0ZXJuIGludCBmZ2V0Y191bmxvY2tlZCAoRklM
RSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZnB1dGMgKGludCBfX2MsIEZJTEUgKl9fc3Ry
ZWFtKSA7CmV4dGVybiBpbnQgcHV0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIDsKCgpleHRl
cm4gaW50IHB1dGNoYXIgKGludCBfX2MpIDsKCgoKCgoKCmV4dGVybiBpbnQgZnB1dGNfdW5sb2Nr
ZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IHB1dGNfdW5sb2Nr
ZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgcHV0Y2hhcl91bmxvY2tl
ZCAoaW50IF9fYykgOwoKCgoKCmV4dGVybiBpbnQgZ2V0dyAoRklMRSAqX19zdHJlYW0pIDsKCgpl
eHRlcm4gaW50IHB1dHcgKGludCBfX3csIEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gY2hh
ciAqZmdldHMgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBpbnQgX19uLCBGSUxFICpfX3Jlc3RyaWN0
IF9fc3RyZWFtKQogICAgIDsKCgoKZXh0ZXJuIGNoYXIgKmZnZXRzX3VubG9ja2VkIChjaGFyICpf
X3Jlc3RyaWN0IF9fcywgaW50IF9fbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxF
ICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgoKCgpleHRlcm4gY2hhciAqZ2V0cyAoY2hhciAqX19z
KSA7CiMgNDI2ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gX19zc2l6ZV90
IF9fZ2V0ZGVsaW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9fbGluZXB0ciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sIGludCBfX2RlbGltaXRlciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0p
IDsKZXh0ZXJuIF9fc3NpemVfdCBnZXRkZWxpbSAoY2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sIGlu
dCBfX2RlbGltaXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3Ry
aWN0IF9fc3RyZWFtKSA7CgoKZXh0ZXJuIF9fc3NpemVfdCBnZXRsaW5lIChjaGFyICoqX19yZXN0
cmljdCBfX2xpbmVwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9fcmVz
dHJpY3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBf
X3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBmcHV0cyAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fcywgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICA7CgoKCmV4dGVybiBpbnQgZnB1
dHNfdW5sb2NrZWQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKZXh0ZXJuIGludCBw
dXRzIChfX2NvbnN0IGNoYXIgKl9fcykgOwoKCgpleHRlcm4gaW50IHVuZ2V0YyAoaW50IF9fYywg
RklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIHNpemVfdCBmcmVhZCAodm9pZCAqX19yZXN0cmlj
dCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwg
RklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKZXh0ZXJuIHNpemVfdCBmd3JpdGUgKF9fY29u
c3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zKSA7CgoKCmV4dGVybiBzaXpl
X3QgZnJlYWRfdW5sb2NrZWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0pIDsKZXh0ZXJuIHNpemVfdCBmd3JpdGVfdW5sb2NrZWQgKF9fY29uc3Qgdm9p
ZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCmV4
dGVybiBpbnQgZnNlZWsgKEZJTEUgKl9fc3RyZWFtLCBsb25nIGludCBfX29mZiwgaW50IF9fd2hl
bmNlKSA7CgpleHRlcm4gbG9uZyBpbnQgZnRlbGwgKEZJTEUgKl9fc3RyZWFtKSA7CgpleHRlcm4g
dm9pZCByZXdpbmQgKEZJTEUgKl9fc3RyZWFtKSA7CiMgNTAyICIvdXNyL2xvY2FsL2luY2x1ZGUv
c3RkaW8uaCIgMwpleHRlcm4gaW50IGZzZWVrbyAoRklMRSAqX19zdHJlYW0sIF9fb2ZmNjRfdCBf
X29mZiwgaW50IF9fd2hlbmNlKSBfX2FzbV9fICgiIiAiZnNlZWtvNjQiKTsKCgpleHRlcm4gX19v
ZmY2NF90IGZ0ZWxsbyAoRklMRSAqX19zdHJlYW0pIF9fYXNtX18gKCIiICJmdGVsbG82NCIpOwoK
ZXh0ZXJuIGludCBmZ2V0cG9zIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBmcG9zX3QgKl9f
cmVzdHJpY3QgX19wb3MpIF9fYXNtX18gKCIiICJmZ2V0cG9zNjQiKTsKCmV4dGVybiBpbnQgZnNl
dHBvcyAoRklMRSAqX19zdHJlYW0sIF9fY29uc3QgZnBvc190ICpfX3BvcykgX19hc21fXyAoIiIg
ImZzZXRwb3M2NCIpOwojIDUyMyAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJu
IGludCBmc2Vla282NCAoRklMRSAqX19zdHJlYW0sIF9fb2ZmNjRfdCBfX29mZiwgaW50IF9fd2hl
bmNlKSA7CmV4dGVybiBfX29mZjY0X3QgZnRlbGxvNjQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVy
biBpbnQgZmdldHBvczY0IChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBmcG9zNjRfdCAqX19y
ZXN0cmljdCBfX3BvcykKICAgICA7CmV4dGVybiBpbnQgZnNldHBvczY0IChGSUxFICpfX3N0cmVh
bSwgX19jb25zdCBmcG9zNjRfdCAqX19wb3MpIDsKCgoKZXh0ZXJuIHZvaWQgY2xlYXJlcnIgKEZJ
TEUgKl9fc3RyZWFtKSA7CgpleHRlcm4gaW50IGZlb2YgKEZJTEUgKl9fc3RyZWFtKSA7CgpleHRl
cm4gaW50IGZlcnJvciAoRklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIHZvaWQgY2xlYXJlcnJf
dW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAoRklM
RSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBmZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFt
KSA7CgoKCgpleHRlcm4gdm9pZCBwZXJyb3IgKF9fY29uc3QgY2hhciAqX19zKSA7CgoKCgpleHRl
cm4gaW50IHN5c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IHN5c19lcnJsaXN0
W107CgoKZXh0ZXJuIGludCBfc3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3Qg
X3N5c19lcnJsaXN0W107CgoKCgoKZXh0ZXJuIGludCBmaWxlbm8gKEZJTEUgKl9fc3RyZWFtKSA7
CgoKCgpleHRlcm4gaW50IGZpbGVub191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCgoK
ZXh0ZXJuIEZJTEUgKnBvcGVuIChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCwgX19jb25zdCBjaGFy
ICpfX21vZGVzKSA7CgoKZXh0ZXJuIGludCBwY2xvc2UgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgoK
ZXh0ZXJuIGNoYXIgKmN0ZXJtaWQgKGNoYXIgKl9fcykgOwoKCgoKCmV4dGVybiBjaGFyICpjdXNl
cmlkIChjaGFyICpfX3MpIDsKCgoKCnN0cnVjdCBvYnN0YWNrOwoKCmV4dGVybiBpbnQgb2JzdGFj
a19wcmludGYgKHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4p
IDsKZXh0ZXJuIGludCBvYnN0YWNrX3ZwcmludGYgKHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0
IF9fb2JzdGFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9s
aXN0IF9fYXJncykgOwoKCgoKCgoKZXh0ZXJuIHZvaWQgZmxvY2tmaWxlIChGSUxFICpfX3N0cmVh
bSkgOwoKCgpleHRlcm4gaW50IGZ0cnlsb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIDsKCgpleHRl
cm4gdm9pZCBmdW5sb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIDsKIyA2MzAgIi91c3IvbG9jYWwv
aW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc3RkaW8uaCIg
MSAzCiMgMzMgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3N0ZGlvLmgiIDMKZXh0ZXJuIF9faW5s
aW5lIGludAp2cHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIF9fZ251Y192
YV9saXN0IF9fYXJnKQp7CiAgcmV0dXJuIHZmcHJpbnRmIChzdGRvdXQsIF9fZm10LCBfX2FyZyk7
Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNoYXIgKHZvaWQpCnsKICByZXR1cm4gX0lPX2dl
dGMgKHN0ZGluKTsKfQoKCgoKZXh0ZXJuIF9faW5saW5lIGludApnZXRjX3VubG9ja2VkIChGSUxF
ICpfX2ZwKQp7CiAgcmV0dXJuICgoX19mcCktPl9JT19yZWFkX3B0ciA+PSAoX19mcCktPl9JT19y
ZWFkX2VuZCA/IF9fdWZsb3cgKF9fZnApIDogKih1bnNpZ25lZCBjaGFyICopIChfX2ZwKS0+X0lP
X3JlYWRfcHRyKyspOwp9CgoKZXh0ZXJuIF9faW5saW5lIGludApnZXRjaGFyX3VubG9ja2VkICh2
b2lkKQp7CiAgcmV0dXJuICgoc3RkaW4pLT5fSU9fcmVhZF9wdHIgPj0gKHN0ZGluKS0+X0lPX3Jl
YWRfZW5kID8gX191ZmxvdyAoc3RkaW4pIDogKih1bnNpZ25lZCBjaGFyICopIChzdGRpbiktPl9J
T19yZWFkX3B0cisrKTsKfQoKCgoKZXh0ZXJuIF9faW5saW5lIGludApwdXRjaGFyIChpbnQgX19j
KQp7CiAgcmV0dXJuIF9JT19wdXRjIChfX2MsIHN0ZG91dCk7Cn0KCgoKCmV4dGVybiBfX2lubGlu
ZSBpbnQKZnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJu
ICgoKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0ciA+PSAoX19zdHJlYW0pLT5fSU9fd3JpdGVfZW5k
KSA/IF9fb3ZlcmZsb3cgKF9fc3RyZWFtLCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2ln
bmVkIGNoYXIpICgqKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQoKCgoK
CmV4dGVybiBfX2lubGluZSBpbnQKcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJl
YW0pCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyID49IChfX3N0cmVhbSkt
Pl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoX19zdHJlYW0sICh1bnNpZ25lZCBjaGFyKSAo
X19jKSkgOiAodW5zaWduZWQgY2hhcikgKCooX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyKysgPSAo
X19jKSkpOwp9CgoKZXh0ZXJuIF9faW5saW5lIGludApwdXRjaGFyX3VubG9ja2VkIChpbnQgX19j
KQp7CiAgcmV0dXJuICgoKHN0ZG91dCktPl9JT193cml0ZV9wdHIgPj0gKHN0ZG91dCktPl9JT193
cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoc3Rkb3V0LCAodW5zaWduZWQgY2hhcikgKF9fYykpIDog
KHVuc2lnbmVkIGNoYXIpICgqKHN0ZG91dCktPl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0K
CgoKCgpleHRlcm4gX19pbmxpbmUgX19zc2l6ZV90CmdldGxpbmUgKGNoYXIgKipfX2xpbmVwdHIs
IHNpemVfdCAqX19uLCBGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiBfX2dldGRlbGltIChfX2xp
bmVwdHIsIF9fbiwgJ1xuJywgX19zdHJlYW0pOwp9CgoKCgoKZXh0ZXJuIF9faW5saW5lIGludApm
ZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9m
bGFncyAmIDB4MTApICE9IDApOwp9CgoKZXh0ZXJuIF9faW5saW5lIGludApmZXJyb3JfdW5sb2Nr
ZWQgKEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X2ZsYWdzICYgMHgy
MCkgIT0gMCk7Cn0KIyA2MzEgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKIyA5
OCAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgMSAiL3Vzci9sb2NhbC9nY2MvMy9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMTQ3ICIvdXNy
L2xvY2FsL2djYy8zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0
ZGRlZi5oIiAzCnR5cGVkZWYgaW50IHB0cmRpZmZfdDsKIyA5OSAiaW5jbHVkZS9pbmNsdWRlcy5o
IiAyCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3BhcmFtLmgiIDEgMwojIDIyICIvdXNy
L2xvY2FsL2luY2x1ZGUvc3lzL3BhcmFtLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvbGlt
aXRzLmgiIDEgMwojIDEyNCAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpbWl0cy5oIiAzCiMgMSAiL3Vz
ci9sb2NhbC9nY2MvMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9s
aW1pdHMuaCIgMSAzCiMgMTI1ICIvdXNyL2xvY2FsL2luY2x1ZGUvbGltaXRzLmgiIDIgMwojIDE0
NCAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpbWl0cy5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRl
L2JpdHMvcG9zaXgxX2xpbS5oIiAxIDMKIyAxMjYgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3Bv
c2l4MV9saW0uaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL2xvY2FsX2xpbS5oIiAx
IDMKIyAzNiAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvbG9jYWxfbGltLmgiIDMKIyAxICIvdXNy
L2xvY2FsL2luY2x1ZGUvbGludXgvbGltaXRzLmgiIDEgMwojIDM3ICIvdXNyL2xvY2FsL2luY2x1
ZGUvYml0cy9sb2NhbF9saW0uaCIgMiAzCiMgMTI3ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9w
b3NpeDFfbGltLmgiIDIgMwojIDE0NSAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpbWl0cy5oIiAyIDMK
CgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9wb3NpeDJfbGltLmgiIDEgMwojIDE0OSAi
L3Vzci9sb2NhbC9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1
ZGUvYml0cy94b3Blbl9saW0uaCIgMSAzCiMgMzQgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3hv
cGVuX2xpbS5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc3RkaW9fbGltLmgiIDEg
MwojIDM1ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy94b3Blbl9saW0uaCIgMiAzCiMgMTUzICIv
dXNyL2xvY2FsL2luY2x1ZGUvbGltaXRzLmgiIDIgMwojIDIzICIvdXNyL2xvY2FsL2luY2x1ZGUv
c3lzL3BhcmFtLmgiIDIgMwoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvbGludXgvcGFyYW0uaCIg
MSAzCgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2FzbS9wYXJhbS5oIiAxIDMKIyA1ICIvdXNy
L2xvY2FsL2luY2x1ZGUvbGludXgvcGFyYW0uaCIgMiAzCiMgMjUgIi91c3IvbG9jYWwvaW5jbHVk
ZS9zeXMvcGFyYW0uaCIgMiAzCiMgMTAyICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKCgoKIyAxICIv
dXNyL2xvY2FsL2luY2x1ZGUvc3RkbGliLmgiIDEgMwojIDMzICIvdXNyL2xvY2FsL2luY2x1ZGUv
c3RkbGliLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYy8zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzNCAiL3Vzci9sb2NhbC9pbmNsdWRl
L3N0ZGxpYi5oIiAyIDMKCgoKCgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3dhaXRm
bGFncy5oIiAxIDMKIyA0MyAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKIyAxICIv
dXNyL2xvY2FsL2luY2x1ZGUvYml0cy93YWl0c3RhdHVzLmgiIDEgMwojIDY1ICIvdXNyL2xvY2Fs
L2luY2x1ZGUvYml0cy93YWl0c3RhdHVzLmgiIDMKdW5pb24gd2FpdAogIHsKICAgIGludCB3X3N0
YXR1czsKICAgIHN0cnVjdAogICAgICB7CgogICAgICAgIHVuc2lnbmVkIGludCBfX3dfdGVybXNp
Zzo3OwogICAgICAgIHVuc2lnbmVkIGludCBfX3dfY29yZWR1bXA6MTsKICAgICAgICB1bnNpZ25l
ZCBpbnQgX193X3JldGNvZGU6ODsKICAgICAgICB1bnNpZ25lZCBpbnQ6MTY7CgoKCgoKCgogICAg
ICB9IF9fd2FpdF90ZXJtaW5hdGVkOwogICAgc3RydWN0CiAgICAgIHsKCiAgICAgICAgdW5zaWdu
ZWQgaW50IF9fd19zdG9wdmFsOjg7CiAgICAgICAgdW5zaWduZWQgaW50IF9fd19zdG9wc2lnOjg7
CiAgICAgICAgdW5zaWduZWQgaW50OjE2OwoKCgoKCgogICAgICB9IF9fd2FpdF9zdG9wcGVkOwog
IH07CiMgNDQgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCiMgNjggIi91c3IvbG9j
YWwvaW5jbHVkZS9zdGRsaWIuaCIgMwp0eXBlZGVmIHVuaW9uCiAgewogICAgdW5pb24gd2FpdCAq
X191cHRyOwogICAgaW50ICpfX2lwdHI7CiAgfSBfX1dBSVRfU1RBVFVTIF9fYXR0cmlidXRlX18g
KChfX3RyYW5zcGFyZW50X3VuaW9uX18pKTsKIyA5NCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGxp
Yi5oIiAzCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IHF1b3Q7CiAgICBpbnQgcmVtOwogIH0g
ZGl2X3Q7CgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgbG9uZyBpbnQgcXVvdDsKICAgIGxvbmcg
aW50IHJlbTsKICB9IGxkaXZfdDsKCgoKCgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgc3RydWN0CiAg
ewogICAgbG9uZyBsb25nIGludCBxdW90OwogICAgbG9uZyBsb25nIGludCByZW07CiAgfSBsbGRp
dl90OwojIDEzMyAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBzaXplX3Qg
X19jdHlwZV9nZXRfbWJfY3VyX21heCAodm9pZCkgOwoKCgpleHRlcm4gZG91YmxlIGF0b2YgKF9f
Y29uc3QgY2hhciAqX19ucHRyKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBp
bnQgYXRvaSAoX19jb25zdCBjaGFyICpfX25wdHIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwoKZXh0ZXJuIGxvbmcgaW50IGF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKSBfX2F0dHJpYnV0
ZV9fICgoX19wdXJlX18pKTsKCgoKX19leHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25nIGludCBh
dG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f
KSk7CgoKCmV4dGVybiBkb3VibGUgc3RydG9kIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u
cHRyLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIDsK
CgoKZXh0ZXJuIGZsb2F0IHN0cnRvZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwK
ICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIDsKCmV4dGVy
biBsb25nIGRvdWJsZSBzdHJ0b2xkIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIDsK
CgoKZXh0ZXJuIGxvbmcgaW50IHN0cnRvbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGlu
dCBfX2Jhc2UpIDsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBzdHJ0b3VsIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgOwoKCgpfX2V4dGVu
c2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvcSAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQg
bG9uZyBsb25nIGludCBzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBf
X2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICA7CgoKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxv
bmcgbG9uZyBpbnQgc3RydG9sbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGlu
dCBfX2Jhc2UpIDsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQg
c3RydG91bGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50
IF9fYmFzZSkKICAgICA7CiMgMjExICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkbGliLmgiIDMKIyAx
ICIvdXNyL2xvY2FsL2luY2x1ZGUveGxvY2FsZS5oIiAxIDMKIyAyOCAiL3Vzci9sb2NhbC9pbmNs
dWRlL3hsb2NhbGUuaCIgMwp0eXBlZGVmIHN0cnVjdCBfX2xvY2FsZV9zdHJ1Y3QKewoKICBzdHJ1
Y3QgbG9jYWxlX2RhdGEgKl9fbG9jYWxlc1sxM107CgoKICBjb25zdCB1bnNpZ25lZCBzaG9ydCBp
bnQgKl9fY3R5cGVfYjsKICBjb25zdCBpbnQgKl9fY3R5cGVfdG9sb3dlcjsKICBjb25zdCBpbnQg
Kl9fY3R5cGVfdG91cHBlcjsKfSAqX19sb2NhbGVfdDsKIyAyMTIgIi91c3IvbG9jYWwvaW5jbHVk
ZS9zdGRsaWIuaCIgMiAzCgoKCmV4dGVybiBsb25nIGludCBfX3N0cnRvbF9sIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX2xvY2FsZV90IF9fbG9jKSA7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgX19zdHJ0
b3VsX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xv
YykgOwoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfbCAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2xvYykgOwoKX19leHRlbnNpb25f
XwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3N0cnRvdWxsX2wgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykKICAg
ICA7CgpleHRlcm4gZG91YmxlIF9fc3RydG9kX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw
dHIsIF9fbG9jYWxlX3QgX19sb2MpCiAgICAgOwoKZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2wgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVfdCBfX2xvYykgOwoKZXh0ZXJuIGxv
bmcgZG91YmxlIF9fc3RydG9sZF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19sb2MpIDsKCgoK
CgoKZXh0ZXJuIGRvdWJsZSBfX3N0cnRvZF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3VwKQogICAgIDsKZXh0ZXJuIGZsb2F0IF9fc3RydG9m
X2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19ncm91
cCkKICAgICA7CmV4dGVybiBsb25nIGRvdWJsZSBfX3N0cnRvbGRfaW50ZXJuYWwgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgX19ncm91cCkgOwoKZXh0ZXJuIGxvbmcgaW50IF9fc3RydG9s
X2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSA7CgoK
CmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxfaW50ZXJuYWwgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgOwoKCgoK
X19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfaW50ZXJuYWwgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIDsKCgoK
X19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3N0cnRvdWxsX2lu
dGVybmFsIChfX2NvbnN0IGNoYXIgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBf
X2Jhc2UsIGludCBfX2dyb3VwKQogICAgIDsKCgoKCgoKCmV4dGVybiBfX2lubGluZSBkb3VibGUK
c3RydG9kIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0cikKewogIHJldHVybiBfX3N0cnRvZF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0
ciwgMCk7Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50CnN0cnRvbCAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgaW50
IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwg
X19iYXNlLCAwKTsKfQpleHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBpbnQKc3RydG91bCAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw
dHIsCiAgICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b3VsX2ludGVybmFsIChf
X25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKZXh0ZXJuIF9faW5saW5lIGZsb2F0CnN0
cnRvZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3Qg
X19lbmRwdHIpCnsKICByZXR1cm4gX19zdHJ0b2ZfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIs
IDApOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZQpzdHJ0b2xkIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikKewogIHJldHVy
biBfX3N0cnRvbGRfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIDApOwp9CgoKCl9fZXh0ZW5z
aW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKc3RydG9xIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICBp
bnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG9sbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0
ciwgX19iYXNlLCAwKTsKfQpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBs
b25nIGxvbmcgaW50CnN0cnRvdXEgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNo
YXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJu
IF9fc3RydG91bGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KCgoK
X19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludApzdHJ0b2xsIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwK
ICAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0
ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUg
dW5zaWduZWQgbG9uZyBsb25nIGludApzdHJ0b3VsbCAoX19jb25zdCBjaGFyICogX19yZXN0cmlj
dCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgaW50IF9fYmFz
ZSkKewogIHJldHVybiBfX3N0cnRvdWxsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jh
c2UsIDApOwp9CgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZQphdG9mIChfX2NvbnN0IGNoYXIgKl9f
bnB0cikKewogIHJldHVybiBzdHJ0b2QgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApKTsK
fQpleHRlcm4gX19pbmxpbmUgaW50CmF0b2kgKF9fY29uc3QgY2hhciAqX19ucHRyKQp7CiAgcmV0
dXJuIChpbnQpIHN0cnRvbCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCksIDEwKTsKfQpl
eHRlcm4gX19pbmxpbmUgbG9uZyBpbnQKYXRvbCAoX19jb25zdCBjaGFyICpfX25wdHIpCnsKICBy
ZXR1cm4gc3RydG9sIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSwgMTApOwp9CgoKX19l
eHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludAphdG9sbCAoX19jb25zdCBj
aGFyICpfX25wdHIpCnsKICByZXR1cm4gc3RydG9sbCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lk
ICopMCksIDEwKTsKfQojIDM4NCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVy
biBjaGFyICpsNjRhIChsb25nIGludCBfX24pIDsKCgpleHRlcm4gbG9uZyBpbnQgYTY0bCAoX19j
b25zdCBjaGFyICpfX3MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwojIDM5NyAiL3Vzci9s
b2NhbC9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBsb25nIGludCByYW5kb20gKHZvaWQpIDsK
CgpleHRlcm4gdm9pZCBzcmFuZG9tICh1bnNpZ25lZCBpbnQgX19zZWVkKSA7CgoKCgoKZXh0ZXJu
IGNoYXIgKmluaXRzdGF0ZSAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19zdGF0ZWJ1ZiwK
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4pIDsKCgoKZXh0ZXJuIGNo
YXIgKnNldHN0YXRlIChjaGFyICpfX3N0YXRlYnVmKSA7CgoKCgoKCgpzdHJ1Y3QgcmFuZG9tX2Rh
dGEKICB7CiAgICBpbnQzMl90ICpmcHRyOwogICAgaW50MzJfdCAqcnB0cjsKICAgIGludDMyX3Qg
KnN0YXRlOwogICAgaW50IHJhbmRfdHlwZTsKICAgIGludCByYW5kX2RlZzsKICAgIGludCByYW5k
X3NlcDsKICAgIGludDMyX3QgKmVuZF9wdHI7CiAgfTsKCmV4dGVybiBpbnQgcmFuZG9tX3IgKHN0
cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAg
aW50MzJfdCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKZXh0ZXJuIGludCBzcmFuZG9tX3IgKHVu
c2lnbmVkIGludCBfX3NlZWQsIHN0cnVjdCByYW5kb21fZGF0YSAqX19idWYpIDsKCmV4dGVybiBp
bnQgaW5pdHN0YXRlX3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fcmVzdHJpY3QgX19z
dGF0ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4sCiAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1Zikg
OwoKZXh0ZXJuIGludCBzZXRzdGF0ZV9yIChjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCiAg
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVm
KSA7CgoKCgoKZXh0ZXJuIGludCByYW5kICh2b2lkKSA7CgpleHRlcm4gdm9pZCBzcmFuZCAodW5z
aWduZWQgaW50IF9fc2VlZCkgOwoKCgpleHRlcm4gaW50IHJhbmRfciAodW5zaWduZWQgaW50ICpf
X3NlZWQpIDsKCgoKCgoKCmV4dGVybiBkb3VibGUgZHJhbmQ0OCAodm9pZCkgOwpleHRlcm4gZG91
YmxlIGVyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIGxv
bmcgaW50IGxyYW5kNDggKHZvaWQpIDsKZXh0ZXJuIGxvbmcgaW50IG5yYW5kNDggKHVuc2lnbmVk
IHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIGxvbmcgaW50IG1yYW5kNDggKHZvaWQp
IDsKZXh0ZXJuIGxvbmcgaW50IGpyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNd
KSA7CgoKZXh0ZXJuIHZvaWQgc3JhbmQ0OCAobG9uZyBpbnQgX19zZWVkdmFsKSA7CmV4dGVybiB1
bnNpZ25lZCBzaG9ydCBpbnQgKnNlZWQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlsz
XSkgOwpleHRlcm4gdm9pZCBsY29uZzQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSkg
OwoKCgoKCnN0cnVjdCBkcmFuZDQ4X2RhdGEKICB7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX194
WzNdOwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9fb2xkX3hbM107CiAgICB1bnNpZ25lZCBzaG9y
dCBpbnQgX19jOwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9faW5pdDsKICAgIHVuc2lnbmVkIGxv
bmcgbG9uZyBpbnQgX19hOwogIH07CgoKZXh0ZXJuIGludCBkcmFuZDQ4X3IgKHN0cnVjdCBkcmFu
ZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBkb3Vi
bGUgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKZXh0ZXJuIGludCBlcmFuZDQ4X3IgKHVuc2lnbmVk
IHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5k
NDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGRvdWJs
ZSAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKCmV4dGVybiBpbnQgbHJhbmQ0OF9yIChzdHJ1Y3Qg
ZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAg
bG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKZXh0ZXJuIGludCBucmFuZDQ4X3IgKHVu
c2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAg
IGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgoKZXh0ZXJuIGludCBtcmFuZDQ4X3Ig
KHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAg
ICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwpleHRlcm4gaW50IGpyYW5k
NDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCiAgICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAg
ICAgICAgICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKCgpleHRlcm4gaW50IHNy
YW5kNDhfciAobG9uZyBpbnQgX19zZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZl
cikKICAgICA7CgpleHRlcm4gaW50IHNlZWQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVk
MTZ2WzNdLAogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZl
cikgOwoKZXh0ZXJuIGludCBsY29uZzQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3BhcmFtWzdd
LAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpIDsK
IyA1MjcgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gdm9pZCAqbWFsbG9j
IChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKZXh0ZXJuIHZv
aWQgKmNhbGxvYyAoc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUpCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCgpleHRlcm4gdm9pZCAqcmVhbGxvYyAodm9pZCAqX19w
dHIsIHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgpleHRlcm4g
dm9pZCBmcmVlICh2b2lkICpfX3B0cikgOwoKCgpleHRlcm4gdm9pZCBjZnJlZSAodm9pZCAqX19w
dHIpIDsKCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYWxsb2NhLmgiIDEgMwojIDI1ICIvdXNy
L2xvY2FsL2luY2x1ZGUvYWxsb2NhLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYy8zL2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAyNiAiL3Vz
ci9sb2NhbC9pbmNsdWRlL2FsbG9jYS5oIiAyIDMKCgoKCgoKCmV4dGVybiB2b2lkICphbGxvY2Eg
KHNpemVfdCBfX3NpemUpIDsKCgoKCgoKIyA1NDcgIi91c3IvbG9jYWwvaW5jbHVkZS9zdGRsaWIu
aCIgMiAzCgoKCgpleHRlcm4gdm9pZCAqdmFsbG9jIChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0
ZV9fICgoX19tYWxsb2NfXykpOwoKCgoKZXh0ZXJuIGludCBwb3NpeF9tZW1hbGlnbiAodm9pZCAq
Kl9fbWVtcHRyLCBzaXplX3QgX19hbGlnbm1lbnQsIHNpemVfdCBfX3NpemUpCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpIF9fYXR0
cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKZXh0ZXJuIGludCBhdGV4aXQgKHZvaWQgKCpf
X2Z1bmMpICh2b2lkKSkgOwoKCgoKZXh0ZXJuIGludCBvbl9leGl0ICh2b2lkICgqX19mdW5jKSAo
aW50IF9fc3RhdHVzLCB2b2lkICpfX2FyZyksIHZvaWQgKl9fYXJnKQogICAgIDsKCgoKCgpleHRl
cm4gdm9pZCBleGl0IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18p
KTsKCgoKCmV4dGVybiB2b2lkIF9FeGl0IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRlX18gKChf
X25vcmV0dXJuX18pKTsKCgoKCmV4dGVybiBjaGFyICpnZXRlbnYgKF9fY29uc3QgY2hhciAqX19u
YW1lKSA7CgoKCmV4dGVybiBjaGFyICpfX3NlY3VyZV9nZXRlbnYgKF9fY29uc3QgY2hhciAqX19u
YW1lKSA7CgoKCgoKZXh0ZXJuIGludCBwdXRlbnYgKGNoYXIgKl9fc3RyaW5nKSA7CgoKCgoKZXh0
ZXJuIGludCBzZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lLCBfX2NvbnN0IGNoYXIgKl9fdmFs
dWUsIGludCBfX3JlcGxhY2UpCiAgICAgOwoKCmV4dGVybiBpbnQgdW5zZXRlbnYgKF9fY29uc3Qg
Y2hhciAqX19uYW1lKSA7CgoKCgoKCmV4dGVybiBpbnQgY2xlYXJlbnYgKHZvaWQpIDsKIyA2MjMg
Ii91c3IvbG9jYWwvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqbWt0ZW1wIChjaGFy
ICpfX3RlbXBsYXRlKSA7CiMgNjM0ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0
ZXJuIGludCBta3N0ZW1wIChjaGFyICpfX3RlbXBsYXRlKSBfX2FzbV9fICgiIiAibWtzdGVtcDY0
Iik7CgoKCgoKZXh0ZXJuIGludCBta3N0ZW1wNjQgKGNoYXIgKl9fdGVtcGxhdGUpIDsKIyA2NTAg
Ii91c3IvbG9jYWwvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqbWtkdGVtcCAoY2hh
ciAqX190ZW1wbGF0ZSkgOwoKCgoKZXh0ZXJuIGludCBzeXN0ZW0gKF9fY29uc3QgY2hhciAqX19j
b21tYW5kKSA7CgoKCgoKCmV4dGVybiBjaGFyICpjYW5vbmljYWxpemVfZmlsZV9uYW1lIChfX2Nv
bnN0IGNoYXIgKl9fbmFtZSkgOwojIDY3MiAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGxpYi5oIiAz
CmV4dGVybiBjaGFyICpyZWFscGF0aCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fcmVzb2x2ZWQpIDsKCgoK
CgoKdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9mbl90KSAoX19jb25zdCB2b2lkICosIF9fY29uc3Qg
dm9pZCAqKTsKCgp0eXBlZGVmIF9fY29tcGFyX2ZuX3QgY29tcGFyaXNvbl9mbl90OwoKCgoKCmV4
dGVybiB2b2lkICpic2VhcmNoIChfX2NvbnN0IHZvaWQgKl9fa2V5LCBfX2NvbnN0IHZvaWQgKl9f
YmFzZSwKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXpl
LCBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIHZvaWQgcXNvcnQgKHZvaWQgKl9f
YmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICBf
X2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIGludCBhYnMgKGludCBfX3gpIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxvbmcgaW50IGxhYnMgKGxvbmcgaW50IF9f
eCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gbG9u
ZyBsb25nIGludCBsbGFicyAobG9uZyBsb25nIGludCBfX3gpCiAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCgoKCgpleHRlcm4gZGl2X3QgZGl2IChpbnQgX19udW1lciwgaW50IF9f
ZGVub20pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbGRpdl90IGxk
aXYgKGxvbmcgaW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVub20pCiAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gbGxkaXZfdCBsbGRpdiAobG9u
ZyBsb25nIGludCBfX251bWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
b25nIGxvbmcgaW50IF9fZGVub20pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoj
IDcyOCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICplY3Z0IChk
b3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAg
ICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsKCgoKCmV4dGVybiBjaGFy
ICpmY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19k
ZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsKCgoKCmV4
dGVybiBjaGFyICpnY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1
ZikgOwoKCgoKZXh0ZXJuIGNoYXIgKnFlY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19u
ZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAq
X19yZXN0cmljdCBfX3NpZ24pIDsKZXh0ZXJuIGNoYXIgKnFmY3Z0IChsb25nIGRvdWJsZSBfX3Zh
bHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9f
ZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsKZXh0ZXJuIGNoYXIgKnFnY3Z0IChsb25n
IGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSA7CgoKCgpleHRlcm4g
aW50IGVjdnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0
IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduLCBjaGFy
ICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbGVuKSA7CmV4
dGVybiBpbnQgZmN2dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVz
dHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24s
IGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICBzaXplX3QgX19sZW4p
IDsKCmV4dGVybiBpbnQgcWVjdnRfciAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0
LAogICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVz
dHJpY3QgX19zaWduLAogICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYs
IHNpemVfdCBfX2xlbikgOwpleHRlcm4gaW50IHFmY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUs
IGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNw
dCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jl
c3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIDsKCgoKCgoKZXh0ZXJuIGludCBtYmxlbiAoX19j
b25zdCBjaGFyICpfX3MsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IG1idG93YyAod2NoYXJf
dCAqX19yZXN0cmljdCBfX3B3YywKICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX3MsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IHdjdG9tYiAoY2hhciAqX19z
LCB3Y2hhcl90IF9fd2NoYXIpIDsKCgoKZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAod2NoYXJfdCAq
X19yZXN0cmljdCBfX3B3Y3MsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pIDsKCmV4dGVybiBzaXplX3Qgd2NzdG9tYnMgKGNo
YXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHdjaGFy
X3QgKl9fcmVzdHJpY3QgX19wd2NzLCBzaXplX3QgX19uKQogICAgIDsKCgoKCgoKCmV4dGVybiBp
bnQgcnBtYXRjaCAoX19jb25zdCBjaGFyICpfX3Jlc3BvbnNlKSA7CiMgODA4ICIvdXNyL2xvY2Fs
L2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGludCBnZXRzdWJvcHQgKGNoYXIgKipfX3Jlc3Ry
aWN0IF9fb3B0aW9ucCwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fY29uc3QgKl9fcmVz
dHJpY3QgX190b2tlbnMsCiAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBf
X3ZhbHVlcCkgOwoKCgoKCmV4dGVybiB2b2lkIHNldGtleSAoX19jb25zdCBjaGFyICpfX2tleSkg
OwoKCgoKCgoKZXh0ZXJuIGludCBwb3NpeF9vcGVucHQgKGludCBfX29mbGFnKSA7CgoKCgoKCgpl
eHRlcm4gaW50IGdyYW50cHQgKGludCBfX2ZkKSA7CgoKCmV4dGVybiBpbnQgdW5sb2NrcHQgKGlu
dCBfX2ZkKSA7CgoKCgpleHRlcm4gY2hhciAqcHRzbmFtZSAoaW50IF9fZmQpIDsKCgoKCgoKZXh0
ZXJuIGludCBwdHNuYW1lX3IgKGludCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVu
KSA7CgoKZXh0ZXJuIGludCBnZXRwdCAodm9pZCkgOwoKCgoKCgpleHRlcm4gaW50IGdldGxvYWRh
dmcgKGRvdWJsZSBfX2xvYWRhdmdbXSwgaW50IF9fbmVsZW0pIDsKCgoKCgoKIyAxMDYgImluY2x1
ZGUvaW5jbHVkZXMuaCIgMgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc29ja2V0Lmgi
IDEgMwojIDI1ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAzCgoKIyAxICIvdXNy
L2xvY2FsL2luY2x1ZGUvc3lzL3Vpby5oIiAxIDMKIyAyNiAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5
cy91aW8uaCIgMwoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3Vpby5oIiAxIDMKIyA0
MiAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvdWlvLmgiIDMKc3RydWN0IGlvdmVjCiAgewogICAg
dm9pZCAqaW92X2Jhc2U7CiAgICBzaXplX3QgaW92X2xlbjsKICB9OwojIDMwICIvdXNyL2xvY2Fs
L2luY2x1ZGUvc3lzL3Vpby5oIiAyIDMKCgoKCgoKCmV4dGVybiBzc2l6ZV90IHJlYWR2IChpbnQg
X19mZCwgX19jb25zdCBzdHJ1Y3QgaW92ZWMgKl9fdmVjdG9yLCBpbnQgX19jb3VudCkKICAgICA7
CgoKCgoKCmV4dGVybiBzc2l6ZV90IHdyaXRldiAoaW50IF9fZmQsIF9fY29uc3Qgc3RydWN0IGlv
dmVjICpfX3ZlY3RvciwgaW50IF9fY291bnQpCiAgICAgOwoKCiMgMjggIi91c3IvbG9jYWwvaW5j
bHVkZS9zeXMvc29ja2V0LmgiIDIgMwoKIyAxICIvdXNyL2xvY2FsL2djYy8zL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMCAiL3Vzci9s
b2NhbC9pbmNsdWRlL3N5cy9zb2NrZXQuaCIgMiAzCgoKCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1
ZGUvYml0cy9zb2NrZXQuaCIgMSAzCiMgMjkgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NvY2tl
dC5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MvMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdu
dS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzAgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRz
L3NvY2tldC5oIiAyIDMKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIyAz
MiAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDIgMwojIDQxICIvdXNyL2xvY2Fs
L2luY2x1ZGUvYml0cy9zb2NrZXQuaCIgMwplbnVtIF9fc29ja2V0X3R5cGUKewogIFNPQ0tfU1RS
RUFNID0gMSwKCgogIFNPQ0tfREdSQU0gPSAyLAoKCiAgU09DS19SQVcgPSAzLAoKICBTT0NLX1JE
TSA9IDQsCgogIFNPQ0tfU0VRUEFDS0VUID0gNSwKCgogIFNPQ0tfUEFDS0VUID0gMTAKCgoKfTsK
IyAxNDIgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NvY2tldC5oIiAzCiMgMSAiL3Vzci9sb2Nh
bC9pbmNsdWRlL2JpdHMvc29ja2FkZHIuaCIgMSAzCiMgMjkgIi91c3IvbG9jYWwvaW5jbHVkZS9i
aXRzL3NvY2thZGRyLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgc2FfZmFtaWx5X3Q7
CiMgMTQzICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zb2NrZXQuaCIgMiAzCgoKc3RydWN0IHNv
Y2thZGRyCiAgewogICAgc2FfZmFtaWx5X3Qgc2FfZmFtaWx5OwogICAgY2hhciBzYV9kYXRhWzE0
XTsKICB9OwojIDE2MiAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDMKc3RydWN0
IHNvY2thZGRyX3N0b3JhZ2UKICB7CiAgICBzYV9mYW1pbHlfdCBzc19mYW1pbHk7CiAgICBfX3Vp
bnQzMl90IF9fc3NfYWxpZ247CiAgICBjaGFyIF9fc3NfcGFkZGluZ1soMTI4IC0gKDIgKiBzaXpl
b2YgKF9fdWludDMyX3QpKSldOwogIH07CgoKCmVudW0KICB7CiAgICBNU0dfT09CID0gMHgwMSwK
CiAgICBNU0dfUEVFSyA9IDB4MDIsCgogICAgTVNHX0RPTlRST1VURSA9IDB4MDQsCgoKCiAgICBN
U0dfVFJZSEFSRCA9IE1TR19ET05UUk9VVEUsCgoKICAgIE1TR19DVFJVTkMgPSAweDA4LAoKICAg
IE1TR19QUk9YWSA9IDB4MTAsCgogICAgTVNHX1RSVU5DID0gMHgyMCwKCiAgICBNU0dfRE9OVFdB
SVQgPSAweDQwLAoKICAgIE1TR19FT1IgPSAweDgwLAoKICAgIE1TR19XQUlUQUxMID0gMHgxMDAs
CgogICAgTVNHX0ZJTiA9IDB4MjAwLAoKICAgIE1TR19TWU4gPSAweDQwMCwKCiAgICBNU0dfQ09O
RklSTSA9IDB4ODAwLAoKICAgIE1TR19SU1QgPSAweDEwMDAsCgogICAgTVNHX0VSUlFVRVVFID0g
MHgyMDAwLAoKICAgIE1TR19OT1NJR05BTCA9IDB4NDAwMCwKCiAgICBNU0dfTU9SRSA9IDB4ODAw
MAoKICB9OwoKCgoKc3RydWN0IG1zZ2hkcgogIHsKICAgIHZvaWQgKm1zZ19uYW1lOwogICAgc29j
a2xlbl90IG1zZ19uYW1lbGVuOwoKICAgIHN0cnVjdCBpb3ZlYyAqbXNnX2lvdjsKICAgIGludCBt
c2dfaW92bGVuOwoKICAgIHZvaWQgKm1zZ19jb250cm9sOwogICAgc29ja2xlbl90IG1zZ19jb250
cm9sbGVuOwoKICAgIGludCBtc2dfZmxhZ3M7CiAgfTsKCgpzdHJ1Y3QgY21zZ2hkcgogIHsKICAg
IHNpemVfdCBjbXNnX2xlbjsKCiAgICBpbnQgY21zZ19sZXZlbDsKICAgIGludCBjbXNnX3R5cGU7
CgogICAgX19leHRlbnNpb25fXyB1bnNpZ25lZCBjaGFyIF9fY21zZ19kYXRhIFtdOwoKICB9Owoj
IDI1NyAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDMKZXh0ZXJuIHN0cnVjdCBj
bXNnaGRyICpfX2Ntc2dfbnh0aGRyIChzdHJ1Y3QgbXNnaGRyICpfX21oZHIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNtc2doZHIgKl9fY21zZykgOwoKCgoK
ZXh0ZXJuIF9faW5saW5lIHN0cnVjdCBjbXNnaGRyICoKX19jbXNnX254dGhkciAoc3RydWN0IG1z
Z2hkciAqX19taGRyLCBzdHJ1Y3QgY21zZ2hkciAqX19jbXNnKQp7CiAgaWYgKChzaXplX3QpIF9f
Y21zZy0+Y21zZ19sZW4gPCBzaXplb2YgKHN0cnVjdCBjbXNnaGRyKSkKCiAgICByZXR1cm4gMDsK
CiAgX19jbXNnID0gKHN0cnVjdCBjbXNnaGRyICopICgodW5zaWduZWQgY2hhciAqKSBfX2Ntc2cK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKCgoX19jbXNnLT5jbXNnX2xlbikgKyBz
aXplb2YgKHNpemVfdCkgLSAxKSAmIChzaXplX3QpIH4oc2l6ZW9mIChzaXplX3QpIC0gMSkpKTsK
ICBpZiAoKHVuc2lnbmVkIGNoYXIgKikgKF9fY21zZyArIDEpID4gKCh1bnNpZ25lZCBjaGFyICop
IF9fbWhkci0+bXNnX2NvbnRyb2wKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICsgX19taGRyLT5tc2dfY29udHJvbGxlbikKICAgICAgfHwgKCh1bnNpZ25lZCBjaGFyICop
IF9fY21zZyArICgoKF9fY21zZy0+Y21zZ19sZW4pICsgc2l6ZW9mIChzaXplX3QpIC0gMSkgJiAo
c2l6ZV90KSB+KHNpemVvZiAoc2l6ZV90KSAtIDEpKQogICAgICAgICAgPiAoKHVuc2lnbmVkIGNo
YXIgKikgX19taGRyLT5tc2dfY29udHJvbCArIF9fbWhkci0+bXNnX2NvbnRyb2xsZW4pKSkKCiAg
ICByZXR1cm4gMDsKICByZXR1cm4gX19jbXNnOwp9CgoKCgplbnVtCiAgewogICAgU0NNX1JJR0hU
UyA9IDB4MDEsCgoKICAgIFNDTV9DUkVERU5USUFMUyA9IDB4MDIsCgoKICAgIF9fU0NNX0NPTk5F
Q1QgPSAweDAzCiAgfTsKCgoKc3RydWN0IHVjcmVkCnsKICBwaWRfdCBwaWQ7CiAgdWlkX3QgdWlk
OwogIGdpZF90IGdpZDsKfTsKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9hc20vc29ja2V0Lmgi
IDEgMwoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9hc20vc29ja2lvcy5oIiAxIDMKIyA1ICIv
dXNyL2xvY2FsL2luY2x1ZGUvYXNtL3NvY2tldC5oIiAyIDMKIyAzMDYgIi91c3IvbG9jYWwvaW5j
bHVkZS9iaXRzL3NvY2tldC5oIiAyIDMKCgoKc3RydWN0IGxpbmdlcgogIHsKICAgIGludCBsX29u
b2ZmOwogICAgaW50IGxfbGluZ2VyOwogIH07CiMgMzYgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMv
c29ja2V0LmgiIDIgMwoKCgoKc3RydWN0IG9zb2NrYWRkcgogIHsKICAgIHVuc2lnbmVkIHNob3J0
IGludCBzYV9mYW1pbHk7CiAgICB1bnNpZ25lZCBjaGFyIHNhX2RhdGFbMTRdOwogIH07CgoKCgpl
bnVtCnsKICBTSFVUX1JEID0gMCwKCiAgU0hVVF9XUiwKCiAgU0hVVF9SRFdSCgp9OwojIDg3ICIv
dXNyL2xvY2FsL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAzCnR5cGVkZWYgdW5pb24geyBzdHJ1Y3Qg
c29ja2FkZHIgKl9fcmVzdHJpY3QgX19zb2NrYWRkcl9fOyBzdHJ1Y3Qgc29ja2FkZHJfYXQgKl9f
cmVzdHJpY3QgX19zb2NrYWRkcl9hdF9fOyBzdHJ1Y3Qgc29ja2FkZHJfYXgyNSAqX19yZXN0cmlj
dCBfX3NvY2thZGRyX2F4MjVfXzsgc3RydWN0IHNvY2thZGRyX2RsICpfX3Jlc3RyaWN0IF9fc29j
a2FkZHJfZGxfXzsgc3RydWN0IHNvY2thZGRyX2VvbiAqX19yZXN0cmljdCBfX3NvY2thZGRyX2Vv
bl9fOyBzdHJ1Y3Qgc29ja2FkZHJfaW4gKl9fcmVzdHJpY3QgX19zb2NrYWRkcl9pbl9fOyBzdHJ1
Y3Qgc29ja2FkZHJfaW42ICpfX3Jlc3RyaWN0IF9fc29ja2FkZHJfaW42X187IHN0cnVjdCBzb2Nr
YWRkcl9pbmFycCAqX19yZXN0cmljdCBfX3NvY2thZGRyX2luYXJwX187IHN0cnVjdCBzb2NrYWRk
cl9pcHggKl9fcmVzdHJpY3QgX19zb2NrYWRkcl9pcHhfXzsgc3RydWN0IHNvY2thZGRyX2lzbyAq
X19yZXN0cmljdCBfX3NvY2thZGRyX2lzb19fOyBzdHJ1Y3Qgc29ja2FkZHJfbnMgKl9fcmVzdHJp
Y3QgX19zb2NrYWRkcl9uc19fOyBzdHJ1Y3Qgc29ja2FkZHJfdW4gKl9fcmVzdHJpY3QgX19zb2Nr
YWRkcl91bl9fOyBzdHJ1Y3Qgc29ja2FkZHJfeDI1ICpfX3Jlc3RyaWN0IF9fc29ja2FkZHJfeDI1
X187CiAgICAgICAgICAgICAgfSBfX1NPQ0tBRERSX0FSRyBfX2F0dHJpYnV0ZV9fICgoX190cmFu
c3BhcmVudF91bmlvbl9fKSk7CgoKdHlwZWRlZiB1bmlvbiB7IF9fY29uc3Qgc3RydWN0IHNvY2th
ZGRyICpfX3Jlc3RyaWN0IF9fc29ja2FkZHJfXzsgX19jb25zdCBzdHJ1Y3Qgc29ja2FkZHJfYXQg
Kl9fcmVzdHJpY3QgX19zb2NrYWRkcl9hdF9fOyBfX2NvbnN0IHN0cnVjdCBzb2NrYWRkcl9heDI1
ICpfX3Jlc3RyaWN0IF9fc29ja2FkZHJfYXgyNV9fOyBfX2NvbnN0IHN0cnVjdCBzb2NrYWRkcl9k
bCAqX19yZXN0cmljdCBfX3NvY2thZGRyX2RsX187IF9fY29uc3Qgc3RydWN0IHNvY2thZGRyX2Vv
biAqX19yZXN0cmljdCBfX3NvY2thZGRyX2Vvbl9fOyBfX2NvbnN0IHN0cnVjdCBzb2NrYWRkcl9p
biAqX19yZXN0cmljdCBfX3NvY2thZGRyX2luX187IF9fY29uc3Qgc3RydWN0IHNvY2thZGRyX2lu
NiAqX19yZXN0cmljdCBfX3NvY2thZGRyX2luNl9fOyBfX2NvbnN0IHN0cnVjdCBzb2NrYWRkcl9p
bmFycCAqX19yZXN0cmljdCBfX3NvY2thZGRyX2luYXJwX187IF9fY29uc3Qgc3RydWN0IHNvY2th
ZGRyX2lweCAqX19yZXN0cmljdCBfX3NvY2thZGRyX2lweF9fOyBfX2NvbnN0IHN0cnVjdCBzb2Nr
YWRkcl9pc28gKl9fcmVzdHJpY3QgX19zb2NrYWRkcl9pc29fXzsgX19jb25zdCBzdHJ1Y3Qgc29j
a2FkZHJfbnMgKl9fcmVzdHJpY3QgX19zb2NrYWRkcl9uc19fOyBfX2NvbnN0IHN0cnVjdCBzb2Nr
YWRkcl91biAqX19yZXN0cmljdCBfX3NvY2thZGRyX3VuX187IF9fY29uc3Qgc3RydWN0IHNvY2th
ZGRyX3gyNSAqX19yZXN0cmljdCBfX3NvY2thZGRyX3gyNV9fOwogICAgICAgICAgICAgIH0gX19D
T05TVF9TT0NLQUREUl9BUkcgX19hdHRyaWJ1dGVfXyAoKF9fdHJhbnNwYXJlbnRfdW5pb25fXykp
OwoKCgoKCgoKZXh0ZXJuIGludCBzb2NrZXQgKGludCBfX2RvbWFpbiwgaW50IF9fdHlwZSwgaW50
IF9fcHJvdG9jb2wpIDsKCgoKCgpleHRlcm4gaW50IHNvY2tldHBhaXIgKGludCBfX2RvbWFpbiwg
aW50IF9fdHlwZSwgaW50IF9fcHJvdG9jb2wsCiAgICAgICAgICAgICAgICAgICAgICAgaW50IF9f
ZmRzWzJdKSA7CgoKZXh0ZXJuIGludCBiaW5kIChpbnQgX19mZCwgX19DT05TVF9TT0NLQUREUl9B
UkcgX19hZGRyLCBzb2NrbGVuX3QgX19sZW4pCiAgICAgOwoKCmV4dGVybiBpbnQgZ2V0c29ja25h
bWUgKGludCBfX2ZkLCBfX1NPQ0tBRERSX0FSRyBfX2FkZHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgIHNvY2tsZW5fdCAqX19yZXN0cmljdCBfX2xlbikgOwoKCgoKCmV4dGVybiBpbnQgY29ubmVj
dCAoaW50IF9fZmQsIF9fQ09OU1RfU09DS0FERFJfQVJHIF9fYWRkciwgc29ja2xlbl90IF9fbGVu
KQogICAgIDsKCgoKZXh0ZXJuIGludCBnZXRwZWVybmFtZSAoaW50IF9fZmQsIF9fU09DS0FERFJf
QVJHIF9fYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgc29ja2xlbl90ICpfX3Jlc3RyaWN0
IF9fbGVuKSA7CgoKCmV4dGVybiBzc2l6ZV90IHNlbmQgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQg
Kl9fYnVmLCBzaXplX3QgX19uLCBpbnQgX19mbGFncykKICAgICA7CgoKCmV4dGVybiBzc2l6ZV90
IHJlY3YgKGludCBfX2ZkLCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbiwgaW50IF9fZmxhZ3MpCiAg
ICAgOwoKCgpleHRlcm4gc3NpemVfdCBzZW5kdG8gKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKl9f
YnVmLCBzaXplX3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgIGludCBfX2ZsYWdzLCBfX0NP
TlNUX1NPQ0tBRERSX0FSRyBfX2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgc29ja2xlbl90
IF9fYWRkcl9sZW4pIDsKCgoKCgpleHRlcm4gc3NpemVfdCByZWN2ZnJvbSAoaW50IF9fZmQsIHZv
aWQgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX24sIGludCBfX2ZsYWdzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgX19TT0NLQUREUl9BUkcgX19hZGRyLCBzb2NrbGVuX3QgKl9fcmVzdHJp
Y3QgX19hZGRyX2xlbikKICAgICA7CgoKCgpleHRlcm4gc3NpemVfdCBzZW5kbXNnIChpbnQgX19m
ZCwgX19jb25zdCBzdHJ1Y3QgbXNnaGRyICpfX21lc3NhZ2UsIGludCBfX2ZsYWdzKQogICAgIDsK
CgoKZXh0ZXJuIHNzaXplX3QgcmVjdm1zZyAoaW50IF9fZmQsIHN0cnVjdCBtc2doZHIgKl9fbWVz
c2FnZSwgaW50IF9fZmxhZ3MpCiAgICAgOwoKCgoKCmV4dGVybiBpbnQgZ2V0c29ja29wdCAoaW50
IF9fZmQsIGludCBfX2xldmVsLCBpbnQgX19vcHRuYW1lLAogICAgICAgICAgICAgICAgICAgICAg
IHZvaWQgKl9fcmVzdHJpY3QgX19vcHR2YWwsCiAgICAgICAgICAgICAgICAgICAgICAgc29ja2xl
bl90ICpfX3Jlc3RyaWN0IF9fb3B0bGVuKSA7CgoKCgpleHRlcm4gaW50IHNldHNvY2tvcHQgKGlu
dCBfX2ZkLCBpbnQgX19sZXZlbCwgaW50IF9fb3B0bmFtZSwKICAgICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IHZvaWQgKl9fb3B0dmFsLCBzb2NrbGVuX3QgX19vcHRsZW4pIDsKCgoKCgpleHRl
cm4gaW50IGxpc3RlbiAoaW50IF9fZmQsIGludCBfX24pIDsKCgoKCgoKZXh0ZXJuIGludCBhY2Nl
cHQgKGludCBfX2ZkLCBfX1NPQ0tBRERSX0FSRyBfX2FkZHIsCiAgICAgICAgICAgICAgICAgICBz
b2NrbGVuX3QgKl9fcmVzdHJpY3QgX19hZGRyX2xlbikKICAgICA7CgoKCgoKCgpleHRlcm4gaW50
IHNodXRkb3duIChpbnQgX19mZCwgaW50IF9faG93KSA7CgoKCgpleHRlcm4gaW50IHNvY2thdG1h
cmsgKGludCBfX2ZkKSA7CgoKCgoKCgpleHRlcm4gaW50IGlzZmR0eXBlIChpbnQgX19mZCwgaW50
IF9fZmR0eXBlKSA7CgoKCiMgMTEwICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKCgoKIyAxICIvdXNy
L2xvY2FsL2luY2x1ZGUvc3lzL3VuLmgiIDEgMwojIDI3ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lz
L3VuLmgiIDMKCgoKc3RydWN0IHNvY2thZGRyX3VuCiAgewogICAgc2FfZmFtaWx5X3Qgc3VuX2Zh
bWlseTsKICAgIGNoYXIgc3VuX3BhdGhbMTA4XTsKICB9OwoKCgojIDEgIi91c3IvbG9jYWwvaW5j
bHVkZS9zdHJpbmcuaCIgMSAzCiMgMjggIi91c3IvbG9jYWwvaW5jbHVkZS9zdHJpbmcuaCIgMwoK
CgoKCiMgMSAiL3Vzci9sb2NhbC9nY2MvMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8z
LjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzQgIi91c3IvbG9jYWwvaW5jbHVkZS9zdHJpbmcu
aCIgMiAzCgoKCmV4dGVybiB2b2lkICptZW1jcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAog
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVf
dCBfX24pIDsKCgpleHRlcm4gdm9pZCAqbWVtbW92ZSAodm9pZCAqX19kZXN0LCBfX2NvbnN0IHZv
aWQgKl9fc3JjLCBzaXplX3QgX19uKQogICAgIDsKCgoKCgpleHRlcm4gdm9pZCAqbWVtY2NweSAo
dm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywK
ICAgICAgICAgICAgICAgICAgICAgIGludCBfX2MsIHNpemVfdCBfX24pCiAgICAgOwoKCgoKZXh0
ZXJuIHZvaWQgKm1lbXNldCAodm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKSA7CgoKZXh0
ZXJuIGludCBtZW1jbXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBz
aXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiB2b2lk
ICptZW1jaHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKQogICAgICBf
X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiB2b2lkICpyYXdtZW1jaHIgKF9f
Y29uc3Qgdm9pZCAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpl
eHRlcm4gdm9pZCAqbWVtcmNociAoX19jb25zdCB2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBf
X24pCiAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0
cmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X3NyYykKICAgICA7CgpleHRlcm4gY2hhciAqc3RybmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rl
c3QsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMs
IHNpemVfdCBfX24pIDsKCgpleHRlcm4gY2hhciAqc3RyY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9f
ZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIDsKCmV4dGVybiBjaGFy
ICpzdHJuY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fc3JjLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBp
bnQgc3RyY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICBf
X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQgc3RybmNtcCAoX19jb25zdCBj
aGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGludCBzdHJjb2xsIChfX2NvbnN0IGNoYXIgKl9f
czEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
CmV4dGVybiBzaXplX3Qgc3RyeGZybSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19u
KSA7CiMgMTExICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGludCBfX3N0
cmNvbGxfbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIF9fbG9jYWxl
X3QgX19sKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIHNpemVfdCBf
X3N0cnhmcm1fbCAoY2hhciAqX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fc3JjLCBzaXplX3QgX19u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9fbCkgOwoKCgoKZXh0ZXJu
IGNoYXIgKnN0cmR1cCAoX19jb25zdCBjaGFyICpfX3MpIF9fYXR0cmlidXRlX18gKChfX21hbGxv
Y19fKSk7CgoKCgoKCmV4dGVybiBjaGFyICpzdHJuZHVwIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5n
LCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMTU1ICIv
dXNyL2xvY2FsL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cmNociAoX19jb25z
dCBjaGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJu
IGNoYXIgKnN0cnJjaHIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9f
ICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiBjaGFyICpzdHJjaHJudWwgKF9fY29uc3QgY2hhciAq
X19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiBzaXpl
X3Qgc3RyY3NwbiAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19yZWplY3QpCiAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHNpemVfdCBzdHJzcG4gKF9f
Y29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgIF9fYXR0cmlidXRl
X18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnBicmsgKF9fY29uc3QgY2hhciAqX19z
LCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwoKZXh0ZXJuIGNoYXIgKnN0cnN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0
IGNoYXIgKl9fbmVlZGxlKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRl
cm4gY2hhciAqc3RyY2FzZXN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNo
YXIgKl9fbmVlZGxlKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4g
Y2hhciAqc3RydG9rIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZGVsaW0pCiAgICAgOwoKCgpleHRlcm4gY2hhciAqX19zdHJ0b2tfciAoY2hhciAqX19y
ZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19kZWxpbSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0
IF9fc2F2ZV9wdHIpIDsKCmV4dGVybiBjaGFyICpzdHJ0b2tfciAoY2hhciAqX19yZXN0cmljdCBf
X3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAogICAgICAgICAgICAgICAgICAg
ICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpIDsKCgoKCgoKZXh0ZXJuIHZvaWQgKm1l
bW1lbSAoX19jb25zdCB2b2lkICpfX2hheXN0YWNrLCBzaXplX3QgX19oYXlzdGFja2xlbiwKICAg
ICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpfX25lZWRsZSwgc2l6ZV90IF9fbmVlZGxl
bGVuKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gdm9pZCAqX19t
ZW1wY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAg
X19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CmV4dGVybiB2b2lk
ICptZW1wY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwoKCgoKZXh0ZXJu
IHNpemVfdCBzdHJsZW4gKF9fY29uc3QgY2hhciAqX19zKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJl
X18pKTsKCgoKCmV4dGVybiBzaXplX3Qgc3RybmxlbiAoX19jb25zdCBjaGFyICpfX3N0cmluZywg
c2l6ZV90IF9fbWF4bGVuKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0
ZXJuIGNoYXIgKnN0cmVycm9yIChpbnQgX19lcnJudW0pIDsKCgoKZXh0ZXJuIGNoYXIgKnN0cmVy
cm9yX3IgKGludCBfX2Vycm51bSwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikgOwoKCgoK
ZXh0ZXJuIHZvaWQgX19iemVybyAodm9pZCAqX19zLCBzaXplX3QgX19uKSA7CgoKCmV4dGVybiB2
b2lkIGJjb3B5IChfX2NvbnN0IHZvaWQgKl9fc3JjLCB2b2lkICpfX2Rlc3QsIHNpemVfdCBfX24p
IDsKCgpleHRlcm4gdm9pZCBiemVybyAodm9pZCAqX19zLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJu
IGludCBiY21wIChfX2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90
IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAqaW5k
ZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCgpleHRlcm4gY2hhciAqcmluZGV4IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19h
dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBpbnQgZmZzIChpbnQgX19pKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IGZmc2wgKGxvbmcgaW50IF9f
bCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gaW50
IGZmc2xsIChsb25nIGxvbmcgaW50IF9fbGwpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKCgoKZXh0ZXJuIGludCBzdHJjYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29u
c3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4g
aW50IHN0cm5jYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwg
c2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgpleHRlcm4g
aW50IF9fc3RyY2FzZWNtcF9sIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19z
MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2xvYykgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gaW50IF9fc3RybmNhc2VjbXBfbCAoX19jb25zdCBj
aGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgX19uLCBfX2xvY2FsZV90IF9fbG9jKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwoKCgoKCmV4dGVybiBjaGFyICpzdHJzZXAgKGNoYXIgKipfX3Jlc3RyaWN0IF9fc3Ry
aW5ncCwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVs
aW0pIDsKCgoKCmV4dGVybiBpbnQgc3RydmVyc2NtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2Nv
bnN0IGNoYXIgKl9fczIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJu
IGNoYXIgKnN0cnNpZ25hbCAoaW50IF9fc2lnKSA7CgoKZXh0ZXJuIGNoYXIgKl9fc3RwY3B5IChj
aGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQog
ICAgIDsKZXh0ZXJuIGNoYXIgKnN0cGNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICA7CgoKCmV4dGVybiBjaGFyICpfX3N0cG5j
cHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKZXh0ZXJuIGNoYXIgKnN0
cG5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGNoYXIg
KnN0cmZyeSAoY2hhciAqX19zdHJpbmcpIDsKCgpleHRlcm4gdm9pZCAqbWVtZnJvYiAodm9pZCAq
X19zLCBzaXplX3QgX19uKSA7CgoKCgoKCmV4dGVybiBjaGFyICpiYXNlbmFtZSAoX19jb25zdCBj
aGFyICpfX2ZpbGVuYW1lKSA7CiMgMzU3ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3RyaW5nLmgiIDMK
IyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zdHJpbmcuaCIgMSAzCiMgMzU4ICIvdXNyL2xv
Y2FsL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMv
c3RyaW5nMi5oIiAxIDMKIyAyMjEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIg
MwpleHRlcm4gX19pbmxpbmUgdm9pZCAqX19tZW1wY3B5X3NtYWxsICh2b2lkICosIGNoYXIsIGNo
YXIsIGNoYXIsIGNoYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
dWludDE2X3QsIF9fdWludDE2X3QsIF9fdWludDMyX3QsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fdWludDMyX3QsIHNpemVfdCk7CmV4dGVybiBfX2lubGluZSB2b2lk
ICoKX19tZW1wY3B5X3NtYWxsICh2b2lkICpfX2Rlc3QxLAogICAgICAgICAgICAgICAgIGNoYXIg
X19zcmMwXzEsIGNoYXIgX19zcmMyXzEsIGNoYXIgX19zcmM0XzEsIGNoYXIgX19zcmM2XzEsCiAg
ICAgICAgICAgICAgICAgX191aW50MTZfdCBfX3NyYzBfMiwgX191aW50MTZfdCBfX3NyYzRfMiwK
ICAgICAgICAgICAgICAgICBfX3VpbnQzMl90IF9fc3JjMF80LCBfX3VpbnQzMl90IF9fc3JjNF80
LAogICAgICAgICAgICAgICAgIHNpemVfdCBfX3NyY2xlbikKewogIHVuaW9uIHsKICAgIF9fdWlu
dDMyX3QgX191aTsKICAgIF9fdWludDE2X3QgX191c2k7CiAgICB1bnNpZ25lZCBjaGFyIF9fdWM7
CiAgICB1bnNpZ25lZCBjaGFyIF9fYzsKICB9ICpfX3UgPSBfX2Rlc3QxOwogIHN3aXRjaCAoKHVu
c2lnbmVkIGludCkgX19zcmNsZW4pCiAgICB7CiAgICBjYXNlIDE6CiAgICAgIF9fdS0+X19jID0g
X19zcmMwXzE7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDEpOwog
ICAgICBicmVhazsKICAgIGNhc2UgMjoKICAgICAgX191LT5fX3VzaSA9IF9fc3JjMF8yOwogICAg
ICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAgICAgYnJlYWs7CiAg
ICBjYXNlIDM6CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzBfMjsKICAgICAgX191ID0gX19leHRl
bnNpb25fXyAoKHZvaWQgKikgX191ICsgMik7CiAgICAgIF9fdS0+X19jID0gX19zcmMyXzE7CiAg
ICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDEpOwogICAgICBicmVhazsK
ICAgIGNhc2UgNDoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0
ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBicmVhazsKICAgIGNhc2UgNToKICAg
ICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lk
ICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fYyA9IF9fc3JjNF8xOwogICAgICBfX3UgPSBfX2V4
dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAxKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDY6CiAg
ICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9p
ZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBfX3UgPSBf
X2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDc6
CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgo
dm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBfX3Ug
PSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAgICAgX191LT5fX2MgPSBfX3Ny
YzZfMTsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMSk7CiAgICAg
IGJyZWFrOwogICAgY2FzZSA4OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191
ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191aSA9IF9f
c3JjNF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAg
ICAgYnJlYWs7CiAgICB9CiAgcmV0dXJuICh2b2lkICopIF9fdTsKfQojIDM3NyAiL3Vzci9sb2Nh
bC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiB2b2lkICpfX3Jhd21lbWNociAoY29u
c3Qgdm9pZCAqX19zLCBpbnQgX19jKTsKIyA0MDUgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3N0
cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJjcHlfc21hbGwgKGNoYXIgKiwg
X191aW50MTZfdCwgX191aW50MTZfdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX3VpbnQzMl90LCBfX3VpbnQzMl90LCBzaXplX3QpOwpleHRlcm4gX19pbmxpbmUgY2hh
ciAqCl9fc3RyY3B5X3NtYWxsIChjaGFyICpfX2Rlc3QsCiAgICAgICAgICAgICAgICBfX3VpbnQx
Nl90IF9fc3JjMF8yLCBfX3VpbnQxNl90IF9fc3JjNF8yLAogICAgICAgICAgICAgICAgX191aW50
MzJfdCBfX3NyYzBfNCwgX191aW50MzJfdCBfX3NyYzRfNCwKICAgICAgICAgICAgICAgIHNpemVf
dCBfX3NyY2xlbikKewogIHVuaW9uIHsKICAgIF9fdWludDMyX3QgX191aTsKICAgIF9fdWludDE2
X3QgX191c2k7CiAgICB1bnNpZ25lZCBjaGFyIF9fdWM7CiAgfSAqX191ID0gKHZvaWQgKikgX19k
ZXN0OwogIHN3aXRjaCAoKHVuc2lnbmVkIGludCkgX19zcmNsZW4pCiAgICB7CiAgICBjYXNlIDE6
CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgY2FzZSAyOgogICAgICBf
X3UtPl9fdXNpID0gX19zcmMwXzI7CiAgICAgIGJyZWFrOwogICAgY2FzZSAzOgogICAgICBfX3Ut
Pl9fdXNpID0gX19zcmMwXzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9f
dSArIDIpOwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNhc2UgNDoK
ICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIGJyZWFrOwogICAgY2FzZSA1OgogICAg
ICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQg
KikgX191ICsgNCk7CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgY2Fz
ZSA2OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25f
XyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzRfMjsKICAgICAg
YnJlYWs7CiAgICBjYXNlIDc6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3Ug
PSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9f
c3JjNF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAg
ICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDg6CiAgICAgIF9fdS0+
X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3Ug
KyA0KTsKICAgICAgX191LT5fX3VpID0gX19zcmM0XzQ7CiAgICAgIGJyZWFrOwogICAgfQogIHJl
dHVybiBfX2Rlc3Q7Cn0KIyA1NzAgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIg
MwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHBjcHlfc21hbGwgKGNoYXIgKiwgX191aW50MTZf
dCwgX191aW50MTZfdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Vp
bnQzMl90LCBfX3VpbnQzMl90LCBzaXplX3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Rw
Y3B5X3NtYWxsIChjaGFyICpfX2Rlc3QsCiAgICAgICAgICAgICAgICBfX3VpbnQxNl90IF9fc3Jj
MF8yLCBfX3VpbnQxNl90IF9fc3JjNF8yLAogICAgICAgICAgICAgICAgX191aW50MzJfdCBfX3Ny
YzBfNCwgX191aW50MzJfdCBfX3NyYzRfNCwKICAgICAgICAgICAgICAgIHNpemVfdCBfX3NyY2xl
bikKewogIHVuaW9uIHsKICAgIHVuc2lnbmVkIGludCBfX3VpOwogICAgdW5zaWduZWQgc2hvcnQg
aW50IF9fdXNpOwogICAgdW5zaWduZWQgY2hhciBfX3VjOwogICAgY2hhciBfX2M7CiAgfSAqX191
ID0gKHZvaWQgKikgX19kZXN0OwogIHN3aXRjaCAoKHVuc2lnbmVkIGludCkgX19zcmNsZW4pCiAg
ICB7CiAgICBjYXNlIDE6CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAg
Y2FzZSAyOgogICAgICBfX3UtPl9fdXNpID0gX19zcmMwXzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5z
aW9uX18gKCh2b2lkICopIF9fdSArIDEpOwogICAgICBicmVhazsKICAgIGNhc2UgMzoKICAgICAg
X191LT5fX3VzaSA9IF9fc3JjMF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAq
KSBfX3UgKyAyKTsKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNl
IDQ6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9f
ICgodm9pZCAqKSBfX3UgKyAzKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDU6CiAgICAgIF9fdS0+
X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3Ug
KyA0KTsKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDY6CiAg
ICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9p
ZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBfX3UgPSBf
X2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAxKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDc6
CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgo
dm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBfX3Ug
PSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAgICAgX191LT5fX3VjID0gJ1ww
JzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDg6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80Owog
ICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5f
X3VpID0gX19zcmM0XzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSAr
IDMpOwogICAgICBicmVhazsKICAgIH0KICByZXR1cm4gJl9fdS0+X19jOwp9CiMgODkzICIvdXNy
L2xvY2FsL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBf
X3N0cmNzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19yZWplY3QpOwpleHRlcm4gX19p
bmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX3JlamVj
dCkKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3Vs
dF0gIT0gJ1wwJyAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0KQogICAgKytfX3Jlc3VsdDsK
ICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJjc3BuX2My
IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fcmVqZWN0MSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBfX3JlamVjdDIpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9f
c3RyY3Nwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX3JlamVjdDEsIGludCBfX3JlamVj
dDIpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1
bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDEKICAgICAgICAgJiYgX19z
W19fcmVzdWx0XSAhPSBfX3JlamVjdDIpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3Vs
dDsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cmNzcG5fYzMgKF9fY29uc3QgY2hhciAq
X19zLCBpbnQgX19yZWplY3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IF9fcmVqZWN0MiwgaW50IF9fcmVqZWN0Myk7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19z
dHJjc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fcmVqZWN0MSwgaW50IF9fcmVqZWN0
MiwKICAgICAgICAgICAgICBpbnQgX19yZWplY3QzKQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVz
dWx0ID0gMDsKICB3aGlsZSAoX19zW19fcmVzdWx0XSAhPSAnXDAnICYmIF9fc1tfX3Jlc3VsdF0g
IT0gX19yZWplY3QxCiAgICAgICAgICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QyICYmIF9f
c1tfX3Jlc3VsdF0gIT0gX19yZWplY3QzKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1
bHQ7Cn0KIyA5NTAgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4g
X19pbmxpbmUgc2l6ZV90IF9fc3Ryc3BuX2MxIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNj
ZXB0KTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cnNwbl9jMSAoX19jb25zdCBjaGFyICpf
X3MsIGludCBfX2FjY2VwdCkKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CgogIHdo
aWxlIChfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0KQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4g
X19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJzcG5fYzIgKF9fY29uc3Qg
Y2hhciAqX19zLCBpbnQgX19hY2NlcHQxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgX19hY2NlcHQyKTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cnNwbl9jMiAo
X19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsIGludCBfX2FjY2VwdDIpCnsKICByZWdp
c3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwoKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2Fj
Y2VwdDEgfHwgX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDIpCiAgICArK19fcmVzdWx0OwogIHJl
dHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cnNwbl9jMyAoX19j
b25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBfX2FjY2VwdDIsIGludCBfX2FjY2VwdDMpOwpleHRlcm4gX19pbmxpbmUg
c2l6ZV90Cl9fc3Ryc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwgaW50
IF9fYWNjZXB0MiwgaW50IF9fYWNjZXB0MykKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9
IDA7CgogIHdoaWxlIChfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MSB8fCBfX3NbX19yZXN1bHRd
ID09IF9fYWNjZXB0MgogICAgICAgICB8fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MykKICAg
ICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CiMgMTAwNyAiL3Vzci9sb2NhbC9pbmNs
dWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnBicmtfYzIg
KF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IF9fYWNjZXB0Mik7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19z
dHJwYnJrX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwgaW50IF9fYWNjZXB0
MikKewoKICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19hY2NlcHQxICYmICpfX3Mg
IT0gX19hY2NlcHQyKQogICAgKytfX3M7CiAgcmV0dXJuICpfX3MgPT0gJ1wwJyA/ICgodm9pZCAq
KTApIDogKGNoYXIgKikgKHNpemVfdCkgX19zOwp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19z
dHJwYnJrX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2FjY2VwdDIsIGludCBfX2FjY2VwdDMpOwpl
eHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3RycGJya19jMyAoX19jb25zdCBjaGFyICpfX3MsIGlu
dCBfX2FjY2VwdDEsIGludCBfX2FjY2VwdDIsCiAgICAgICAgICAgICAgaW50IF9fYWNjZXB0MykK
ewoKICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19hY2NlcHQxICYmICpfX3MgIT0g
X19hY2NlcHQyCiAgICAgICAgICYmICpfX3MgIT0gX19hY2NlcHQzKQogICAgKytfX3M7CiAgcmV0
dXJuICpfX3MgPT0gJ1wwJyA/ICgodm9pZCAqKTApIDogKGNoYXIgKikgKHNpemVfdCkgX19zOwp9
CiMgMTA1OSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lu
bGluZSBjaGFyICpfX3N0cnRva19yXzFjIChjaGFyICpfX3MsIGNoYXIgX19zZXAsIGNoYXIgKipf
X25leHRwKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnRva19yXzFjIChjaGFyICpfX3Ms
IGNoYXIgX19zZXAsIGNoYXIgKipfX25leHRwKQp7CiAgY2hhciAqX19yZXN1bHQ7CiAgaWYgKF9f
cyA9PSAoKHZvaWQgKikwKSkKICAgIF9fcyA9ICpfX25leHRwOwogIHdoaWxlICgqX19zID09IF9f
c2VwKQogICAgKytfX3M7CiAgX19yZXN1bHQgPSAoKHZvaWQgKikwKTsKICBpZiAoKl9fcyAhPSAn
XDAnKQogICAgewogICAgICBfX3Jlc3VsdCA9IF9fcysrOwogICAgICB3aGlsZSAoKl9fcyAhPSAn
XDAnKQogICAgICAgIGlmICgqX19zKysgPT0gX19zZXApCiAgICAgICAgICB7CiAgICAgICAgICAg
IF9fc1stMV0gPSAnXDAnOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgKl9f
bmV4dHAgPSBfX3M7CiAgICB9CiAgcmV0dXJuIF9fcmVzdWx0Owp9CiMgMTA5MSAiL3Vzci9sb2Nh
bC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBjaGFyICpfX3N0cnNlcF9nIChjaGFy
ICoqX19zdHJpbmdwLCBfX2NvbnN0IGNoYXIgKl9fZGVsaW0pOwojIDExMDkgIi91c3IvbG9jYWwv
aW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJzZXBf
MWMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9f
c3Ryc2VwXzFjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0KQp7CiAgcmVnaXN0ZXIgY2hhciAq
X19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCAhPSAoKHZvaWQgKikwKSAmJiAoKl9fcyA9
IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoX19yZWplY3QpICYmIChfX3Jl
amVjdCkgPT0gJ1wwJyA/IChjaGFyICopIF9fcmF3bWVtY2hyIChfX3JldHZhbCwgX19yZWplY3Qp
IDogc3RyY2hyIChfX3JldHZhbCwgX19yZWplY3QpKSkpICE9ICgodm9pZCAqKTApKQogICAgKigq
X19zKSsrID0gJ1wwJzsKICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFy
ICpfX3N0cnNlcF8yYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3Qy
KTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnNlcF8yYyAoY2hhciAqKl9fcywgY2hhciBf
X3JlamVjdDEsIGNoYXIgX19yZWplY3QyKQp7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAq
X19zOwogIGlmIChfX3JldHZhbCAhPSAoKHZvaWQgKikwKSkKICAgIHsKICAgICAgcmVnaXN0ZXIg
Y2hhciAqX19jcCA9IF9fcmV0dmFsOwogICAgICB3aGlsZSAoMSkKICAgICAgICB7CiAgICAgICAg
ICBpZiAoKl9fY3AgPT0gJ1wwJykKICAgICAgICAgICAgewogICAgICAgICAgICAgIF9fY3AgPSAo
KHZvaWQgKikwKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICBpZiAo
Kl9fY3AgPT0gX19yZWplY3QxIHx8ICpfX2NwID09IF9fcmVqZWN0MikKICAgICAgICAgICAgewog
ICAgICAgICAgICAgICpfX2NwKysgPSAnXDAnOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICB9CiAgICAgICAgICArK19fY3A7CiAgICAgICAgfQogICAgICAqX19zID0gX19jcDsKICAg
IH0KICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnNlcF8z
YyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19yZWplY3QzKTsKZXh0ZXJuIF9faW5saW5l
IGNoYXIgKgpfX3N0cnNlcF8zYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19y
ZWplY3QyLCBjaGFyIF9fcmVqZWN0MykKewogIHJlZ2lzdGVyIGNoYXIgKl9fcmV0dmFsID0gKl9f
czsKICBpZiAoX19yZXR2YWwgIT0gKCh2b2lkICopMCkpCiAgICB7CiAgICAgIHJlZ2lzdGVyIGNo
YXIgKl9fY3AgPSBfX3JldHZhbDsKICAgICAgd2hpbGUgKDEpCiAgICAgICAgewogICAgICAgICAg
aWYgKCpfX2NwID09ICdcMCcpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBfX2NwID0gKCh2
b2lkICopMCk7CiAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgaWYgKCpf
X2NwID09IF9fcmVqZWN0MSB8fCAqX19jcCA9PSBfX3JlamVjdDIgfHwgKl9fY3AgPT0gX19yZWpl
Y3QzKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgKl9fY3ArKyA9ICdcMCc7CiAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICsrX19jcDsKICAgICAgICB9CiAg
ICAgICpfX3MgPSBfX2NwOwogICAgfQogIHJldHVybiBfX3JldHZhbDsKfQojIDExOTAgIi91c3Iv
bG9jYWwvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gY2hhciAqX19zdHJkdXAgKF9f
Y29uc3QgY2hhciAqX19zdHJpbmcpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMTIw
OSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBjaGFyICpfX3N0
cm5kdXAgKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fbWFsbG9jX18pKTsKIyAzNjEgIi91c3IvbG9jYWwvaW5jbHVkZS9zdHJpbmcuaCIg
MiAzCgoKCgojIDM5ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3VuLmgiIDIgMwoKCgoKCgoKIyAx
MTQgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMv
c3lzY2FsbC5oIiAxIDMKIyAyNSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zeXNjYWxsLmgiIDMK
IyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYXNtL3VuaXN0ZC5oIiAxIDMKIyAyNiAiL3Vzci9sb2Nh
bC9pbmNsdWRlL3N5cy9zeXNjYWxsLmgiIDIgMwoKCgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVk
ZS9iaXRzL3N5c2NhbGwuaCIgMSAzCiMgMzMgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc3lzY2Fs
bC5oIiAyIDMKIyAxMTggImluY2x1ZGUvaW5jbHVkZXMuaCIgMgojIDEyNyAiaW5jbHVkZS9pbmNs
dWRlcy5oIgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9zdHJpbmdzLmgiIDEgMwojIDEyOCAiaW5j
bHVkZS9pbmNsdWRlcy5oIiAyCgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL21lbW9yeS5oIiAx
IDMKIyAxMzIgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgoKCgoKCgoKIyAxICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvZmNudGwuaCIgMSAzCiMgMjkgIi91c3IvbG9jYWwvaW5jbHVkZS9mY250bC5oIiAzCgoK
CgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL2ZjbnRsLmgiIDEgMwojIDEzNiAiL3Vzci9s
b2NhbC9pbmNsdWRlL2JpdHMvZmNudGwuaCIgMwpzdHJ1Y3QgZmxvY2sKICB7CiAgICBzaG9ydCBp
bnQgbF90eXBlOwogICAgc2hvcnQgaW50IGxfd2hlbmNlOwoKCgoKICAgIF9fb2ZmNjRfdCBsX3N0
YXJ0OwogICAgX19vZmY2NF90IGxfbGVuOwoKICAgIF9fcGlkX3QgbF9waWQ7CiAgfTsKCgpzdHJ1
Y3QgZmxvY2s2NAogIHsKICAgIHNob3J0IGludCBsX3R5cGU7CiAgICBzaG9ydCBpbnQgbF93aGVu
Y2U7CiAgICBfX29mZjY0X3QgbF9zdGFydDsKICAgIF9fb2ZmNjRfdCBsX2xlbjsKICAgIF9fcGlk
X3QgbF9waWQ7CiAgfTsKIyAzNCAiL3Vzci9sb2NhbC9pbmNsdWRlL2ZjbnRsLmgiIDIgMwoKCgoj
IDEgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc3RhdC5oIiAxIDMKIyA5NiAiL3Vzci9sb2NhbC9p
bmNsdWRlL3N5cy9zdGF0LmgiIDMKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3N0YXQu
aCIgMSAzCiMgMzYgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3N0YXQuaCIgMwpzdHJ1Y3Qgc3Rh
dAogIHsKICAgIF9fZGV2X3Qgc3RfZGV2OwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9fcGFkMTsK
CgoKICAgIF9faW5vX3QgX19zdF9pbm87CgogICAgX19tb2RlX3Qgc3RfbW9kZTsKICAgIF9fbmxp
bmtfdCBzdF9ubGluazsKICAgIF9fdWlkX3Qgc3RfdWlkOwogICAgX19naWRfdCBzdF9naWQ7CiAg
ICBfX2Rldl90IHN0X3JkZXY7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19wYWQyOwoKCgogICAg
X19vZmY2NF90IHN0X3NpemU7CgogICAgX19ibGtzaXplX3Qgc3RfYmxrc2l6ZTsKCgoKCiAgICBf
X2Jsa2NudDY0X3Qgc3RfYmxvY2tzOwoKICAgIF9fdGltZV90IHN0X2F0aW1lOwogICAgdW5zaWdu
ZWQgbG9uZyBpbnQgX191bnVzZWQxOwogICAgX190aW1lX3Qgc3RfbXRpbWU7CiAgICB1bnNpZ25l
ZCBsb25nIGludCBfX3VudXNlZDI7CiAgICBfX3RpbWVfdCBzdF9jdGltZTsKICAgIHVuc2lnbmVk
IGxvbmcgaW50IF9fdW51c2VkMzsKCgoKCiAgICBfX2lubzY0X3Qgc3RfaW5vOwoKICB9OwoKCnN0
cnVjdCBzdGF0NjQKICB7CiAgICBfX2Rldl90IHN0X2RldjsKICAgIHVuc2lnbmVkIGludCBfX3Bh
ZDE7CgogICAgX19pbm9fdCBfX3N0X2lubzsKICAgIF9fbW9kZV90IHN0X21vZGU7CiAgICBfX25s
aW5rX3Qgc3Rfbmxpbms7CiAgICBfX3VpZF90IHN0X3VpZDsKICAgIF9fZ2lkX3Qgc3RfZ2lkOwog
ICAgX19kZXZfdCBzdF9yZGV2OwogICAgdW5zaWduZWQgaW50IF9fcGFkMjsKICAgIF9fb2ZmNjRf
dCBzdF9zaXplOwogICAgX19ibGtzaXplX3Qgc3RfYmxrc2l6ZTsKCiAgICBfX2Jsa2NudDY0X3Qg
c3RfYmxvY2tzOwogICAgX190aW1lX3Qgc3RfYXRpbWU7CiAgICB1bnNpZ25lZCBsb25nIGludCBf
X3VudXNlZDE7CiAgICBfX3RpbWVfdCBzdF9tdGltZTsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9f
dW51c2VkMjsKICAgIF9fdGltZV90IHN0X2N0aW1lOwogICAgdW5zaWduZWQgbG9uZyBpbnQgX191
bnVzZWQzOwogICAgX19pbm82NF90IHN0X2lubzsKICB9OwojIDk5ICIvdXNyL2xvY2FsL2luY2x1
ZGUvc3lzL3N0YXQuaCIgMiAzCiMgMjA4ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3N0YXQuaCIg
MwpleHRlcm4gaW50IHN0YXQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGUsIHN0cnVj
dCBzdGF0ICpfX3Jlc3RyaWN0IF9fYnVmKSBfX2FzbV9fICgiIiAic3RhdDY0Iik7CgoKCmV4dGVy
biBpbnQgZnN0YXQgKGludCBfX2ZkLCBzdHJ1Y3Qgc3RhdCAqX19idWYpIF9fYXNtX18gKCIiICJm
c3RhdDY0Iik7CgoKCgoKCmV4dGVybiBpbnQgc3RhdDY0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19maWxlLAogICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQ2NCAqX19yZXN0cmljdCBf
X2J1ZikgOwpleHRlcm4gaW50IGZzdGF0NjQgKGludCBfX2ZkLCBzdHJ1Y3Qgc3RhdDY0ICpfX2J1
ZikgOwojIDIzMiAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKZXh0ZXJuIGludCBs
c3RhdCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZSwgc3RydWN0IHN0YXQgKl9fcmVz
dHJpY3QgX19idWYpIF9fYXNtX18gKCIiICJsc3RhdDY0Iik7CiMgMjQxICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvc3lzL3N0YXQuaCIgMwpleHRlcm4gaW50IGxzdGF0NjQgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQ2NCAqX19yZXN0
cmljdCBfX2J1ZikgOwoKCgoKCgpleHRlcm4gaW50IGNobW9kIChfX2NvbnN0IGNoYXIgKl9fZmls
ZSwgX19tb2RlX3QgX19tb2RlKSA7CgoKCmV4dGVybiBpbnQgZmNobW9kIChpbnQgX19mZCwgX19t
b2RlX3QgX19tb2RlKSA7CgoKCgoKZXh0ZXJuIF9fbW9kZV90IHVtYXNrIChfX21vZGVfdCBfX21h
c2spIDsKCgoKCmV4dGVybiBfX21vZGVfdCBnZXR1bWFzayAodm9pZCkgOwoKCgpleHRlcm4gaW50
IG1rZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19tb2RlKSA7CgoKCgoKZXh0
ZXJuIGludCBta25vZCAoX19jb25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSwgX19k
ZXZfdCBfX2RldikKICAgICA7CgoKCgpleHRlcm4gaW50IG1rZmlmbyAoX19jb25zdCBjaGFyICpf
X3BhdGgsIF9fbW9kZV90IF9fbW9kZSkgOwojIDMxMyAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9z
dGF0LmgiIDMKZXh0ZXJuIGludCBfX2Z4c3RhdCAoaW50IF9fdmVyLCBpbnQgX19maWxkZXMsIHN0
cnVjdCBzdGF0ICpfX3N0YXRfYnVmKSBfX2FzbV9fICgiIiAiX19meHN0YXQ2NCIpOwoKCmV4dGVy
biBpbnQgX194c3RhdCAoaW50IF9fdmVyLCBfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUsIHN0cnVj
dCBzdGF0ICpfX3N0YXRfYnVmKSBfX2FzbV9fICgiIiAiX194c3RhdDY0Iik7CgpleHRlcm4gaW50
IF9fbHhzdGF0IChpbnQgX192ZXIsIF9fY29uc3QgY2hhciAqX19maWxlbmFtZSwgc3RydWN0IHN0
YXQgKl9fc3RhdF9idWYpIF9fYXNtX18gKCIiICJfX2x4c3RhdDY0Iik7CiMgMzMwICIvdXNyL2xv
Y2FsL2luY2x1ZGUvc3lzL3N0YXQuaCIgMwpleHRlcm4gaW50IF9fZnhzdGF0NjQgKGludCBfX3Zl
ciwgaW50IF9fZmlsZGVzLCBzdHJ1Y3Qgc3RhdDY0ICpfX3N0YXRfYnVmKQogICAgIDsKZXh0ZXJu
IGludCBfX3hzdGF0NjQgKGludCBfX3ZlciwgX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQ2NCAqX19zdGF0X2J1ZikgOwpleHRlcm4gaW50
IF9fbHhzdGF0NjQgKGludCBfX3ZlciwgX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0NjQgKl9fc3RhdF9idWYpIDsKCmV4dGVybiBpbnQg
X194bWtub2QgKGludCBfX3ZlciwgX19jb25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9k
ZSwKICAgICAgICAgICAgICAgICAgICAgX19kZXZfdCAqX19kZXYpIDsKCgoKCmV4dGVybiBfX2lu
bGluZV9fIGludCBzdGF0IChfX2NvbnN0IGNoYXIgKl9fcGF0aCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBzdGF0ICpfX3N0YXRidWYpCnsKICByZXR1cm4gX194c3RhdCAoMywg
X19wYXRoLCBfX3N0YXRidWYpOwp9CgoKZXh0ZXJuIF9faW5saW5lX18gaW50IGxzdGF0IChfX2Nv
bnN0IGNoYXIgKl9fcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3Rh
dCAqX19zdGF0YnVmKQp7CiAgcmV0dXJuIF9fbHhzdGF0ICgzLCBfX3BhdGgsIF9fc3RhdGJ1Zik7
Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgZnN0YXQgKGludCBfX2ZkLCBzdHJ1Y3Qgc3RhdCAq
X19zdGF0YnVmKQp7CiAgcmV0dXJuIF9fZnhzdGF0ICgzLCBfX2ZkLCBfX3N0YXRidWYpOwp9CgoK
ZXh0ZXJuIF9faW5saW5lX18gaW50IG1rbm9kIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19tb2Rl
X3QgX19tb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGV2X3QgX19kZXYpCnsK
ICByZXR1cm4gX194bWtub2QgKDEsIF9fcGF0aCwgX19tb2RlLCAmX19kZXYpOwp9CgoKCgoKZXh0
ZXJuIF9faW5saW5lX18gaW50IHN0YXQ2NCAoX19jb25zdCBjaGFyICpfX3BhdGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0NjQgKl9fc3RhdGJ1ZikKewogIHJldHVy
biBfX3hzdGF0NjQgKDMsIF9fcGF0aCwgX19zdGF0YnVmKTsKfQoKCmV4dGVybiBfX2lubGluZV9f
IGludCBsc3RhdDY0IChfX2NvbnN0IGNoYXIgKl9fcGF0aCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBzdGF0NjQgKl9fc3RhdGJ1ZikKewogIHJldHVybiBfX2x4c3RhdDY0
ICgzLCBfX3BhdGgsIF9fc3RhdGJ1Zik7Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgZnN0YXQ2
NCAoaW50IF9fZmQsIHN0cnVjdCBzdGF0NjQgKl9fc3RhdGJ1ZikKewogIHJldHVybiBfX2Z4c3Rh
dDY0ICgzLCBfX2ZkLCBfX3N0YXRidWYpOwp9CgoKCgoKIyAzOCAiL3Vzci9sb2NhbC9pbmNsdWRl
L2ZjbnRsLmgiIDIgMwojIDYwICIvdXNyL2xvY2FsL2luY2x1ZGUvZmNudGwuaCIgMwpleHRlcm4g
aW50IGZjbnRsIChpbnQgX19mZCwgaW50IF9fY21kLCAuLi4pIDsKIyA2OSAiL3Vzci9sb2NhbC9p
bmNsdWRlL2ZjbnRsLmgiIDMKZXh0ZXJuIGludCBvcGVuIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwg
aW50IF9fb2ZsYWcsIC4uLikgX19hc21fXyAoIiIgIm9wZW42NCIpOwoKCgoKCgpleHRlcm4gaW50
IG9wZW42NCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIGludCBfX29mbGFnLCAuLi4pIDsKIyA4NiAi
L3Vzci9sb2NhbC9pbmNsdWRlL2ZjbnRsLmgiIDMKZXh0ZXJuIGludCBjcmVhdCAoX19jb25zdCBj
aGFyICpfX2ZpbGUsIF9fbW9kZV90IF9fbW9kZSkgX19hc21fXyAoIiIgImNyZWF0NjQiKTsKCgoK
CgoKZXh0ZXJuIGludCBjcmVhdDY0IChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19tb2RlX3QgX19t
b2RlKSA7CiMgMTM0ICIvdXNyL2xvY2FsL2luY2x1ZGUvZmNudGwuaCIgMwpleHRlcm4gaW50IHBv
c2l4X2ZhZHZpc2UgKGludCBfX2ZkLCBfX29mZjY0X3QgX19vZmZzZXQsIHNpemVfdCBfX2xlbiwg
aW50IF9fYWR2aXNlKSBfX2FzbV9fICgiIiAicG9zaXhfZmFkdmlzZTY0Iik7CgoKCgoKCgpleHRl
cm4gaW50IHBvc2l4X2ZhZHZpc2U2NCAoaW50IF9fZmQsIF9fb2ZmNjRfdCBfX29mZnNldCwgc2l6
ZV90IF9fbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYWR2aXNlKSA7CiMg
MTUyICIvdXNyL2xvY2FsL2luY2x1ZGUvZmNudGwuaCIgMwpleHRlcm4gaW50IHBvc2l4X2ZhbGxv
Y2F0ZSAoaW50IF9fZmQsIF9fb2ZmNjRfdCBfX29mZnNldCwgc2l6ZV90IF9fbGVuKSBfX2FzbV9f
ICgiIiAicG9zaXhfZmFsbG9jYXRlNjQiKTsKCgoKCgoKCmV4dGVybiBpbnQgcG9zaXhfZmFsbG9j
YXRlNjQgKGludCBfX2ZkLCBfX29mZjY0X3QgX19vZmZzZXQsIHNpemVfdCBfX2xlbikKICAgICA7
CgoKCgojIDE0MCAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgMTQ5ICJpbmNsdWRlL2luY2x1ZGVz
LmgiCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIyAxNTAgImluY2x1ZGUv
aW5jbHVkZXMuaCIgMgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvaW9jdGwuaCIgMSAz
CiMgMjQgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvaW9jdGwuaCIgMwoKCgojIDEgIi91c3IvbG9j
YWwvaW5jbHVkZS9iaXRzL2lvY3Rscy5oIiAxIDMKIyAyNCAiL3Vzci9sb2NhbC9pbmNsdWRlL2Jp
dHMvaW9jdGxzLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYXNtL2lvY3Rscy5oIiAxIDMK
CgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYXNtL2lvY3RsLmgiIDEgMwojIDUgIi91c3IvbG9j
YWwvaW5jbHVkZS9hc20vaW9jdGxzLmgiIDIgMwojIDI1ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0
cy9pb2N0bHMuaCIgMiAzCiMgMjggIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvaW9jdGwuaCIgMiAz
CgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9pb2N0bC10eXBlcy5oIiAxIDMKIyAyOCAi
L3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvaW9jdGwtdHlwZXMuaCIgMwpzdHJ1Y3Qgd2luc2l6ZQog
IHsKICAgIHVuc2lnbmVkIHNob3J0IGludCB3c19yb3c7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQg
d3NfY29sOwogICAgdW5zaWduZWQgc2hvcnQgaW50IHdzX3hwaXhlbDsKICAgIHVuc2lnbmVkIHNo
b3J0IGludCB3c195cGl4ZWw7CiAgfTsKCgpzdHJ1Y3QgdGVybWlvCiAgewogICAgdW5zaWduZWQg
c2hvcnQgaW50IGNfaWZsYWc7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgY19vZmxhZzsKICAgIHVu
c2lnbmVkIHNob3J0IGludCBjX2NmbGFnOwogICAgdW5zaWduZWQgc2hvcnQgaW50IGNfbGZsYWc7
CiAgICB1bnNpZ25lZCBjaGFyIGNfbGluZTsKICAgIHVuc2lnbmVkIGNoYXIgY19jY1s4XTsKfTsK
IyAzMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9pb2N0bC5oIiAyIDMKCgoKCgoKIyAxICIvdXNy
L2xvY2FsL2luY2x1ZGUvc3lzL3R0eWRlZmF1bHRzLmgiIDEgMwojIDM4ICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvc3lzL2lvY3RsLmgiIDIgMwoKCgoKZXh0ZXJuIGludCBpb2N0bCAoaW50IF9fZmQsIHVu
c2lnbmVkIGxvbmcgaW50IF9fcmVxdWVzdCwgLi4uKSA7CgoKIyAxNTQgImluY2x1ZGUvaW5jbHVk
ZXMuaCIgMgoKCgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9zaWduYWwuaCIgMSAzCiMgMzEg
Ii91c3IvbG9jYWwvaW5jbHVkZS9zaWduYWwuaCIgMwoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRl
L2JpdHMvc2lnc2V0LmgiIDEgMwojIDEwMyAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc2lnc2V0
LmgiIDMKZXh0ZXJuIGludCBfX3NpZ2lzbWVtYmVyIChfX2NvbnN0IF9fc2lnc2V0X3QgKiwgaW50
KTsKZXh0ZXJuIGludCBfX3NpZ2FkZHNldCAoX19zaWdzZXRfdCAqLCBpbnQpOwpleHRlcm4gaW50
IF9fc2lnZGVsc2V0IChfX3NpZ3NldF90ICosIGludCk7CiMgMTE3ICIvdXNyL2xvY2FsL2luY2x1
ZGUvYml0cy9zaWdzZXQuaCIgMwpleHRlcm4gX19pbmxpbmUgaW50IF9fc2lnaXNtZW1iZXIgKF9f
Y29uc3QgX19zaWdzZXRfdCAqX19zZXQsIGludCBfX3NpZykgeyB1bnNpZ25lZCBsb25nIGludCBf
X21hc2sgPSAoKCh1bnNpZ25lZCBsb25nIGludCkgMSkgPDwgKCgoX19zaWcpIC0gMSkgJSAoOCAq
IHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSkpOyB1bnNpZ25lZCBsb25nIGludCBfX3dvcmQg
PSAoKChfX3NpZykgLSAxKSAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkpKTsgcmV0
dXJuIChfX3NldC0+X192YWxbX193b3JkXSAmIF9fbWFzaykgPyAxIDogMDsgfQpleHRlcm4gX19p
bmxpbmUgaW50IF9fc2lnYWRkc2V0ICggX19zaWdzZXRfdCAqX19zZXQsIGludCBfX3NpZykgeyB1
bnNpZ25lZCBsb25nIGludCBfX21hc2sgPSAoKCh1bnNpZ25lZCBsb25nIGludCkgMSkgPDwgKCgo
X19zaWcpIC0gMSkgJSAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSkpOyB1bnNpZ25l
ZCBsb25nIGludCBfX3dvcmQgPSAoKChfX3NpZykgLSAxKSAvICg4ICogc2l6ZW9mICh1bnNpZ25l
ZCBsb25nIGludCkpKTsgcmV0dXJuICgoX19zZXQtPl9fdmFsW19fd29yZF0gfD0gX19tYXNrKSwg
MCk7IH0KZXh0ZXJuIF9faW5saW5lIGludCBfX3NpZ2RlbHNldCAoIF9fc2lnc2V0X3QgKl9fc2V0
LCBpbnQgX19zaWcpIHsgdW5zaWduZWQgbG9uZyBpbnQgX19tYXNrID0gKCgodW5zaWduZWQgbG9u
ZyBpbnQpIDEpIDw8ICgoKF9fc2lnKSAtIDEpICUgKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcg
aW50KSkpKTsgdW5zaWduZWQgbG9uZyBpbnQgX193b3JkID0gKCgoX19zaWcpIC0gMSkgLyAoOCAq
IHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSk7IHJldHVybiAoKF9fc2V0LT5fX3ZhbFtfX3dv
cmRdICY9IH5fX21hc2spLCAwKTsgfQojIDM0ICIvdXNyL2xvY2FsL2luY2x1ZGUvc2lnbmFsLmgi
IDIgMwoKCgoKCgp0eXBlZGVmIF9fc2lnX2F0b21pY190IHNpZ19hdG9taWNfdDsKIyA1NiAiL3Vz
ci9sb2NhbC9pbmNsdWRlL3NpZ25hbC5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMv
c2lnbnVtLmgiIDEgMwojIDU3ICIvdXNyL2xvY2FsL2luY2x1ZGUvc2lnbmFsLmgiIDIgMwojIDcx
ICIvdXNyL2xvY2FsL2luY2x1ZGUvc2lnbmFsLmgiIDMKdHlwZWRlZiB2b2lkICgqX19zaWdoYW5k
bGVyX3QpIChpbnQpOwoKCgoKZXh0ZXJuIF9fc2lnaGFuZGxlcl90IF9fc3lzdl9zaWduYWwgKGlu
dCBfX3NpZywgX19zaWdoYW5kbGVyX3QgX19oYW5kbGVyKQogICAgIDsKCmV4dGVybiBfX3NpZ2hh
bmRsZXJfdCBzeXN2X3NpZ25hbCAoaW50IF9fc2lnLCBfX3NpZ2hhbmRsZXJfdCBfX2hhbmRsZXIp
CiAgICAgOwoKCgoKCgpleHRlcm4gX19zaWdoYW5kbGVyX3Qgc2lnbmFsIChpbnQgX19zaWcsIF9f
c2lnaGFuZGxlcl90IF9faGFuZGxlcikgOwojIDEwMyAiL3Vzci9sb2NhbC9pbmNsdWRlL3NpZ25h
bC5oIiAzCmV4dGVybiBfX3NpZ2hhbmRsZXJfdCBic2Rfc2lnbmFsIChpbnQgX19zaWcsIF9fc2ln
aGFuZGxlcl90IF9faGFuZGxlcikgOwoKCgoKCgpleHRlcm4gaW50IGtpbGwgKF9fcGlkX3QgX19w
aWQsIGludCBfX3NpZykgOwoKCgoKCgpleHRlcm4gaW50IGtpbGxwZyAoX19waWRfdCBfX3BncnAs
IGludCBfX3NpZykgOwoKCgpleHRlcm4gaW50IHJhaXNlIChpbnQgX19zaWcpIDsKCgoKZXh0ZXJu
IF9fc2lnaGFuZGxlcl90IHNzaWduYWwgKGludCBfX3NpZywgX19zaWdoYW5kbGVyX3QgX19oYW5k
bGVyKSA7CmV4dGVybiBpbnQgZ3NpZ25hbCAoaW50IF9fc2lnKSA7CgoKCgpleHRlcm4gdm9pZCBw
c2lnbmFsIChpbnQgX19zaWcsIF9fY29uc3QgY2hhciAqX19zKSA7CiMgMTQwICIvdXNyL2xvY2Fs
L2luY2x1ZGUvc2lnbmFsLmgiIDMKZXh0ZXJuIGludCBfX3NpZ3BhdXNlIChpbnQgX19zaWdfb3Jf
bWFzaywgaW50IF9faXNfc2lnKSA7CgoKCgpleHRlcm4gaW50IHNpZ3BhdXNlIChpbnQgX19tYXNr
KSA7CiMgMTY4ICIvdXNyL2xvY2FsL2luY2x1ZGUvc2lnbmFsLmgiIDMKZXh0ZXJuIGludCBzaWdi
bG9jayAoaW50IF9fbWFzaykgOwoKCmV4dGVybiBpbnQgc2lnc2V0bWFzayAoaW50IF9fbWFzaykg
OwoKCmV4dGVybiBpbnQgc2lnZ2V0bWFzayAodm9pZCkgOwojIDE4MyAiL3Vzci9sb2NhbC9pbmNs
dWRlL3NpZ25hbC5oIiAzCnR5cGVkZWYgX19zaWdoYW5kbGVyX3Qgc2lnaGFuZGxlcl90OwoKCgoK
dHlwZWRlZiBfX3NpZ2hhbmRsZXJfdCBzaWdfdDsKIyAxOTkgIi91c3IvbG9jYWwvaW5jbHVkZS9z
aWduYWwuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NpZ2luZm8uaCIgMSAzCiMg
MjUgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NpZ2luZm8uaCIgMwojIDEgIi91c3IvbG9jYWwv
aW5jbHVkZS9iaXRzL3dvcmRzaXplLmgiIDEgMwojIDI2ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0
cy9zaWdpbmZvLmgiIDIgMwoKCgoKCgoKdHlwZWRlZiB1bmlvbiBzaWd2YWwKICB7CiAgICBpbnQg
c2l2YWxfaW50OwogICAgdm9pZCAqc2l2YWxfcHRyOwogIH0gc2lndmFsX3Q7CiMgNTEgIi91c3Iv
bG9jYWwvaW5jbHVkZS9iaXRzL3NpZ2luZm8uaCIgMwp0eXBlZGVmIHN0cnVjdCBzaWdpbmZvCiAg
ewogICAgaW50IHNpX3NpZ25vOwogICAgaW50IHNpX2Vycm5vOwoKICAgIGludCBzaV9jb2RlOwoK
ICAgIHVuaW9uCiAgICAgIHsKICAgICAgICBpbnQgX3BhZFsoKDEyOCAvIHNpemVvZiAoaW50KSkg
LSAzKV07CgoKICAgICAgICBzdHJ1Y3QKICAgICAgICAgIHsKICAgICAgICAgICAgX19waWRfdCBz
aV9waWQ7CiAgICAgICAgICAgIF9fdWlkX3Qgc2lfdWlkOwogICAgICAgICAgfSBfa2lsbDsKCgog
ICAgICAgIHN0cnVjdAogICAgICAgICAgewogICAgICAgICAgICB1bnNpZ25lZCBpbnQgX3RpbWVy
MTsKICAgICAgICAgICAgdW5zaWduZWQgaW50IF90aW1lcjI7CiAgICAgICAgICB9IF90aW1lcjsK
CgogICAgICAgIHN0cnVjdAogICAgICAgICAgewogICAgICAgICAgICBfX3BpZF90IHNpX3BpZDsK
ICAgICAgICAgICAgX191aWRfdCBzaV91aWQ7CiAgICAgICAgICAgIHNpZ3ZhbF90IHNpX3NpZ3Zh
bDsKICAgICAgICAgIH0gX3J0OwoKCiAgICAgICAgc3RydWN0CiAgICAgICAgICB7CiAgICAgICAg
ICAgIF9fcGlkX3Qgc2lfcGlkOwogICAgICAgICAgICBfX3VpZF90IHNpX3VpZDsKICAgICAgICAg
ICAgaW50IHNpX3N0YXR1czsKICAgICAgICAgICAgX19jbG9ja190IHNpX3V0aW1lOwogICAgICAg
ICAgICBfX2Nsb2NrX3Qgc2lfc3RpbWU7CiAgICAgICAgICB9IF9zaWdjaGxkOwoKCiAgICAgICAg
c3RydWN0CiAgICAgICAgICB7CiAgICAgICAgICAgIHZvaWQgKnNpX2FkZHI7CiAgICAgICAgICB9
IF9zaWdmYXVsdDsKCgogICAgICAgIHN0cnVjdAogICAgICAgICAgewogICAgICAgICAgICBsb25n
IGludCBzaV9iYW5kOwogICAgICAgICAgICBpbnQgc2lfZmQ7CiAgICAgICAgICB9IF9zaWdwb2xs
OwogICAgICB9IF9zaWZpZWxkczsKICB9IHNpZ2luZm9fdDsKIyAxMjggIi91c3IvbG9jYWwvaW5j
bHVkZS9iaXRzL3NpZ2luZm8uaCIgMwplbnVtCnsKICBTSV9BU1lOQ05MID0gLTYsCgogIFNJX1NJ
R0lPLAoKICBTSV9BU1lOQ0lPLAoKICBTSV9NRVNHUSwKCiAgU0lfVElNRVIsCgogIFNJX1FVRVVF
LAoKICBTSV9VU0VSLAoKICBTSV9LRVJORUwgPSAweDgwCgp9OwoKCgplbnVtCnsKICBJTExfSUxM
T1BDID0gMSwKCiAgSUxMX0lMTE9QTiwKCiAgSUxMX0lMTEFEUiwKCiAgSUxMX0lMTFRSUCwKCiAg
SUxMX1BSVk9QQywKCiAgSUxMX1BSVlJFRywKCiAgSUxMX0NPUFJPQywKCiAgSUxMX0JBRFNUSwoK
fTsKCgplbnVtCnsKICBGUEVfSU5URElWID0gMSwKCiAgRlBFX0lOVE9WRiwKCiAgRlBFX0ZMVERJ
ViwKCiAgRlBFX0ZMVE9WRiwKCiAgRlBFX0ZMVFVORCwKCiAgRlBFX0ZMVFJFUywKCiAgRlBFX0ZM
VElOViwKCiAgRlBFX0ZMVFNVQgoKfTsKCgplbnVtCnsKICBTRUdWX01BUEVSUiA9IDEsCgogIFNF
R1ZfQUNDRVJSCgp9OwoKCmVudW0KewogIEJVU19BRFJBTE4gPSAxLAoKICBCVVNfQURSRVJSLAoK
ICBCVVNfT0JKRVJSCgp9OwoKCmVudW0KewogIFRSQVBfQlJLUFQgPSAxLAoKICBUUkFQX1RSQUNF
Cgp9OwoKCmVudW0KewogIENMRF9FWElURUQgPSAxLAoKICBDTERfS0lMTEVELAoKICBDTERfRFVN
UEVELAoKICBDTERfVFJBUFBFRCwKCiAgQ0xEX1NUT1BQRUQsCgogIENMRF9DT05USU5VRUQKCn07
CgoKZW51bQp7CiAgUE9MTF9JTiA9IDEsCgogIFBPTExfT1VULAoKICBQT0xMX01TRywKCiAgUE9M
TF9FUlIsCgogIFBPTExfUFJJLAoKICBQT0xMX0hVUAoKfTsKIyAyNzEgIi91c3IvbG9jYWwvaW5j
bHVkZS9iaXRzL3NpZ2luZm8uaCIgMwpzdHJ1Y3QgX19wdGhyZWFkX2F0dHJfczsKCnR5cGVkZWYg
c3RydWN0IHNpZ2V2ZW50CiAgewogICAgc2lndmFsX3Qgc2lnZXZfdmFsdWU7CiAgICBpbnQgc2ln
ZXZfc2lnbm87CiAgICBpbnQgc2lnZXZfbm90aWZ5OwoKICAgIHVuaW9uCiAgICAgIHsKICAgICAg
ICBpbnQgX3BhZFsoKDY0IC8gc2l6ZW9mIChpbnQpKSAtIDMpXTsKCiAgICAgICAgc3RydWN0CiAg
ICAgICAgICB7CiAgICAgICAgICAgIHZvaWQgKCpfZnVuY3Rpb24pIChzaWd2YWxfdCk7CiAgICAg
ICAgICAgIHN0cnVjdCBfX3B0aHJlYWRfYXR0cl9zICpfYXR0cmlidXRlOwogICAgICAgICAgfSBf
c2lnZXZfdGhyZWFkOwogICAgICB9IF9zaWdldl91bjsKICB9IHNpZ2V2ZW50X3Q7CgoKCgoKCmVu
dW0KewogIFNJR0VWX1NJR05BTCA9IDAsCgogIFNJR0VWX05PTkUsCgogIFNJR0VWX1RIUkVBRAoK
fTsKIyAyMDAgIi91c3IvbG9jYWwvaW5jbHVkZS9zaWduYWwuaCIgMiAzCgoKCmV4dGVybiBpbnQg
c2lnZW1wdHlzZXQgKHNpZ3NldF90ICpfX3NldCkgOwoKCmV4dGVybiBpbnQgc2lnZmlsbHNldCAo
c2lnc2V0X3QgKl9fc2V0KSA7CgoKZXh0ZXJuIGludCBzaWdhZGRzZXQgKHNpZ3NldF90ICpfX3Nl
dCwgaW50IF9fc2lnbm8pIDsKCgpleHRlcm4gaW50IHNpZ2RlbHNldCAoc2lnc2V0X3QgKl9fc2V0
LCBpbnQgX19zaWdubykgOwoKCmV4dGVybiBpbnQgc2lnaXNtZW1iZXIgKF9fY29uc3Qgc2lnc2V0
X3QgKl9fc2V0LCBpbnQgX19zaWdubykgOwoKCgpleHRlcm4gaW50IHNpZ2lzZW1wdHlzZXQgKF9f
Y29uc3Qgc2lnc2V0X3QgKl9fc2V0KSA7CgoKZXh0ZXJuIGludCBzaWdhbmRzZXQgKHNpZ3NldF90
ICpfX3NldCwgX19jb25zdCBzaWdzZXRfdCAqX19sZWZ0LAogICAgICAgICAgICAgICAgICAgICAg
X19jb25zdCBzaWdzZXRfdCAqX19yaWdodCkgOwoKCmV4dGVybiBpbnQgc2lnb3JzZXQgKHNpZ3Nl
dF90ICpfX3NldCwgX19jb25zdCBzaWdzZXRfdCAqX19sZWZ0LAogICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IHNpZ3NldF90ICpfX3JpZ2h0KSA7CgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVk
ZS9iaXRzL3NpZ2FjdGlvbi5oIiAxIDMKIyAyNSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc2ln
YWN0aW9uLmgiIDMKc3RydWN0IHNpZ2FjdGlvbgogIHsKCgogICAgdW5pb24KICAgICAgewoKICAg
ICAgICBfX3NpZ2hhbmRsZXJfdCBzYV9oYW5kbGVyOwoKICAgICAgICB2b2lkICgqc2Ffc2lnYWN0
aW9uKSAoaW50LCBzaWdpbmZvX3QgKiwgdm9pZCAqKTsKICAgICAgfQogICAgX19zaWdhY3Rpb25f
aGFuZGxlcjsKCgoKCgoKCiAgICBfX3NpZ3NldF90IHNhX21hc2s7CgoKICAgIGludCBzYV9mbGFn
czsKCgogICAgdm9pZCAoKnNhX3Jlc3RvcmVyKSAodm9pZCk7CiAgfTsKIyAyMzMgIi91c3IvbG9j
YWwvaW5jbHVkZS9zaWduYWwuaCIgMiAzCgoKZXh0ZXJuIGludCBzaWdwcm9jbWFzayAoaW50IF9f
aG93LCBfX2NvbnN0IHNpZ3NldF90ICpfX3Jlc3RyaWN0IF9fc2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICBzaWdzZXRfdCAqX19yZXN0cmljdCBfX29zZXQpIDsKCgoKZXh0ZXJuIGludCBzaWdz
dXNwZW5kIChfX2NvbnN0IHNpZ3NldF90ICpfX3NldCkgOwoKCmV4dGVybiBpbnQgc2lnYWN0aW9u
IChpbnQgX19zaWcsIF9fY29uc3Qgc3RydWN0IHNpZ2FjdGlvbiAqX19yZXN0cmljdCBfX2FjdCwK
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzaWdhY3Rpb24gKl9fcmVzdHJpY3QgX19vYWN0
KSA7CgoKZXh0ZXJuIGludCBzaWdwZW5kaW5nIChzaWdzZXRfdCAqX19zZXQpIDsKCgoKZXh0ZXJu
IGludCBzaWd3YWl0IChfX2NvbnN0IHNpZ3NldF90ICpfX3Jlc3RyaWN0IF9fc2V0LCBpbnQgKl9f
cmVzdHJpY3QgX19zaWcpCiAgICAgOwoKCgpleHRlcm4gaW50IHNpZ3dhaXRpbmZvIChfX2NvbnN0
IHNpZ3NldF90ICpfX3Jlc3RyaWN0IF9fc2V0LAogICAgICAgICAgICAgICAgICAgICAgICBzaWdp
bmZvX3QgKl9fcmVzdHJpY3QgX19pbmZvKSA7CgoKCmV4dGVybiBpbnQgc2lndGltZWR3YWl0IChf
X2NvbnN0IHNpZ3NldF90ICpfX3Jlc3RyaWN0IF9fc2V0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgc2lnaW5mb190ICpfX3Jlc3RyaWN0IF9faW5mbywKICAgICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3Jlc3RyaWN0IF9fdGltZW91dCkKICAgICA7CgoK
CmV4dGVybiBpbnQgc2lncXVldWUgKF9fcGlkX3QgX19waWQsIGludCBfX3NpZywgX19jb25zdCB1
bmlvbiBzaWd2YWwgX192YWwpCiAgICAgOwojIDI3OCAiL3Vzci9sb2NhbC9pbmNsdWRlL3NpZ25h
bC5oIiAzCmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3QgX3N5c19zaWdsaXN0WzY0XTsKZXh0
ZXJuIF9fY29uc3QgY2hhciAqX19jb25zdCBzeXNfc2lnbGlzdFs2NF07CgoKc3RydWN0IHNpZ3Zl
YwogIHsKICAgIF9fc2lnaGFuZGxlcl90IHN2X2hhbmRsZXI7CiAgICBpbnQgc3ZfbWFzazsKCiAg
ICBpbnQgc3ZfZmxhZ3M7CgogIH07CiMgMzAyICIvdXNyL2xvY2FsL2luY2x1ZGUvc2lnbmFsLmgi
IDMKZXh0ZXJuIGludCBzaWd2ZWMgKGludCBfX3NpZywgX19jb25zdCBzdHJ1Y3Qgc2lndmVjICpf
X3ZlYywKICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzaWd2ZWMgKl9fb3ZlYykgOwoKCgojIDEg
Ii91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NpZ2NvbnRleHQuaCIgMSAzCiMgMjggIi91c3IvbG9j
YWwvaW5jbHVkZS9iaXRzL3NpZ2NvbnRleHQuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9h
c20vc2lnY29udGV4dC5oIiAxIDMKIyAxOCAiL3Vzci9sb2NhbC9pbmNsdWRlL2FzbS9zaWdjb250
ZXh0LmgiIDMKc3RydWN0IF9mcHJlZyB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2lnbmlmaWNh
bmRbNF07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXhwb25lbnQ7Cn07CgpzdHJ1Y3QgX2ZweHJl
ZyB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2lnbmlmaWNhbmRbNF07CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgZXhwb25lbnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcGFkZGluZ1szXTsKfTsK
CnN0cnVjdCBfeG1tcmVnIHsKICAgICAgICB1bnNpZ25lZCBsb25nIGVsZW1lbnRbNF07Cn07Cgpz
dHJ1Y3QgX2Zwc3RhdGUgewoKICAgICAgICB1bnNpZ25lZCBsb25nIGN3OwogICAgICAgIHVuc2ln
bmVkIGxvbmcgc3c7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0YWc7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBpcG9mZjsKICAgICAgICB1bnNpZ25lZCBsb25nIGNzc2VsOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgZGF0YW9mZjsKICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGFzZWw7CiAgICAgICAgc3Ry
dWN0IF9mcHJlZyBfc3RbOF07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RhdHVzOwogICAgICAg
IHVuc2lnbmVkIHNob3J0IG1hZ2ljOwoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBfZnhzcl9lbnZb
Nl07CiAgICAgICAgdW5zaWduZWQgbG9uZyBteGNzcjsKICAgICAgICB1bnNpZ25lZCBsb25nIHJl
c2VydmVkOwogICAgICAgIHN0cnVjdCBfZnB4cmVnIF9meHNyX3N0WzhdOwogICAgICAgIHN0cnVj
dCBfeG1tcmVnIF94bW1bOF07CiAgICAgICAgdW5zaWduZWQgbG9uZyBwYWRkaW5nWzU2XTsKfTsK
CgoKc3RydWN0IHNpZ2NvbnRleHQgewogICAgICAgIHVuc2lnbmVkIHNob3J0IGdzLCBfX2dzaDsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBmcywgX19mc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
ZXMsIF9fZXNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRzLCBfX2RzaDsKICAgICAgICB1bnNp
Z25lZCBsb25nIGVkaTsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzaTsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGVicDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcDsKICAgICAgICB1bnNpZ25lZCBs
b25nIGVieDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVkeDsKICAgICAgICB1bnNpZ25lZCBsb25n
IGVjeDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVheDsKICAgICAgICB1bnNpZ25lZCBsb25nIHRy
YXBubzsKICAgICAgICB1bnNpZ25lZCBsb25nIGVycjsKICAgICAgICB1bnNpZ25lZCBsb25nIGVp
cDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjcywgX19jc2g7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBlZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3BfYXRfc2lnbmFsOwogICAgICAgIHVu
c2lnbmVkIHNob3J0IHNzLCBfX3NzaDsKICAgICAgICBzdHJ1Y3QgX2Zwc3RhdGUgKiBmcHN0YXRl
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgb2xkbWFzazsKICAgICAgICB1bnNpZ25lZCBsb25nIGNy
MjsKfTsKIyAyOSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc2lnY29udGV4dC5oIiAyIDMKIyAz
MDggIi91c3IvbG9jYWwvaW5jbHVkZS9zaWduYWwuaCIgMiAzCgoKZXh0ZXJuIGludCBzaWdyZXR1
cm4gKHN0cnVjdCBzaWdjb250ZXh0ICpfX3NjcCkgOwojIDMyMCAiL3Vzci9sb2NhbC9pbmNsdWRl
L3NpZ25hbC5oIiAzCmV4dGVybiBpbnQgc2lnaW50ZXJydXB0IChpbnQgX19zaWcsIGludCBfX2lu
dGVycnVwdCkgOwoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zaWdzdGFjay5oIiAxIDMK
IyAyNiAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc2lnc3RhY2suaCIgMwpzdHJ1Y3Qgc2lnc3Rh
Y2sKICB7CiAgICB2b2lkICpzc19zcDsKICAgIGludCBzc19vbnN0YWNrOwogIH07CgoKCmVudW0K
ewogIFNTX09OU1RBQ0sgPSAxLAoKICBTU19ESVNBQkxFCgp9OwojIDUwICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvYml0cy9zaWdzdGFjay5oIiAzCnR5cGVkZWYgc3RydWN0IHNpZ2FsdHN0YWNrCiAgewog
ICAgdm9pZCAqc3Nfc3A7CiAgICBpbnQgc3NfZmxhZ3M7CiAgICBzaXplX3Qgc3Nfc2l6ZTsKICB9
IHN0YWNrX3Q7CiMgMzIzICIvdXNyL2xvY2FsL2luY2x1ZGUvc2lnbmFsLmgiIDIgMwoKIyAxICIv
dXNyL2xvY2FsL2luY2x1ZGUvdWNvbnRleHQuaCIgMSAzCiMgMjcgIi91c3IvbG9jYWwvaW5jbHVk
ZS91Y29udGV4dC5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy91Y29udGV4dC5oIiAx
IDMKIyAyMyAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy91Y29udGV4dC5oIiAzCiMgMSAiL3Vzci9s
b2NhbC9pbmNsdWRlL3NpZ25hbC5oIiAxIDMKIyAyNCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy91
Y29udGV4dC5oIiAyIDMKCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zaWdjb250ZXh0
LmgiIDEgMwojIDI4ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3Vjb250ZXh0LmgiIDIgMwoKCgp0
eXBlZGVmIGludCBncmVnX3Q7CgoKCgoKdHlwZWRlZiBncmVnX3QgZ3JlZ3NldF90WzE5XTsKCgoK
ZW51bQp7CiAgUkVHX0dTID0gMCwKCiAgUkVHX0ZTLAoKICBSRUdfRVMsCgogIFJFR19EUywKCiAg
UkVHX0VESSwKCiAgUkVHX0VTSSwKCiAgUkVHX0VCUCwKCiAgUkVHX0VTUCwKCiAgUkVHX0VCWCwK
CiAgUkVHX0VEWCwKCiAgUkVHX0VDWCwKCiAgUkVHX0VBWCwKCiAgUkVHX1RSQVBOTywKCiAgUkVH
X0VSUiwKCiAgUkVHX0VJUCwKCiAgUkVHX0NTLAoKICBSRUdfRUZMLAoKICBSRUdfVUVTUCwKCiAg
UkVHX1NTCgp9OwoKCgpzdHJ1Y3QgX2xpYmNfZnByZWcKewogIHVuc2lnbmVkIHNob3J0IGludCBz
aWduaWZpY2FuZFs0XTsKICB1bnNpZ25lZCBzaG9ydCBpbnQgZXhwb25lbnQ7Cn07CgpzdHJ1Y3Qg
X2xpYmNfZnBzdGF0ZQp7CiAgdW5zaWduZWQgbG9uZyBpbnQgY3c7CiAgdW5zaWduZWQgbG9uZyBp
bnQgc3c7CiAgdW5zaWduZWQgbG9uZyBpbnQgdGFnOwogIHVuc2lnbmVkIGxvbmcgaW50IGlwb2Zm
OwogIHVuc2lnbmVkIGxvbmcgaW50IGNzc2VsOwogIHVuc2lnbmVkIGxvbmcgaW50IGRhdGFvZmY7
CiAgdW5zaWduZWQgbG9uZyBpbnQgZGF0YXNlbDsKICBzdHJ1Y3QgX2xpYmNfZnByZWcgX3N0Wzhd
OwogIHVuc2lnbmVkIGxvbmcgaW50IHN0YXR1czsKfTsKCgp0eXBlZGVmIHN0cnVjdCBfbGliY19m
cHN0YXRlICpmcHJlZ3NldF90OwoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgZ3JlZ3NldF90IGdy
ZWdzOwoKCiAgICBmcHJlZ3NldF90IGZwcmVnczsKICAgIHVuc2lnbmVkIGxvbmcgaW50IG9sZG1h
c2s7CiAgICB1bnNpZ25lZCBsb25nIGludCBjcjI7CiAgfSBtY29udGV4dF90OwoKCnR5cGVkZWYg
c3RydWN0IHVjb250ZXh0CiAgewogICAgdW5zaWduZWQgbG9uZyBpbnQgdWNfZmxhZ3M7CiAgICBz
dHJ1Y3QgdWNvbnRleHQgKnVjX2xpbms7CiAgICBzdGFja190IHVjX3N0YWNrOwogICAgbWNvbnRl
eHRfdCB1Y19tY29udGV4dDsKICAgIF9fc2lnc2V0X3QgdWNfc2lnbWFzazsKICAgIHN0cnVjdCBf
bGliY19mcHN0YXRlIF9fZnByZWdzX21lbTsKICB9IHVjb250ZXh0X3Q7CiMgMjggIi91c3IvbG9j
YWwvaW5jbHVkZS91Y29udGV4dC5oIiAyIDMKCgoKCmV4dGVybiBpbnQgZ2V0Y29udGV4dCAodWNv
bnRleHRfdCAqX191Y3ApIDsKCgpleHRlcm4gaW50IHNldGNvbnRleHQgKF9fY29uc3QgdWNvbnRl
eHRfdCAqX191Y3ApIDsKCgoKZXh0ZXJuIGludCBzd2FwY29udGV4dCAodWNvbnRleHRfdCAqX19y
ZXN0cmljdCBfX291Y3AsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdWNvbnRleHRf
dCAqX19yZXN0cmljdCBfX3VjcCkgOwoKCgoKCgoKZXh0ZXJuIHZvaWQgbWFrZWNvbnRleHQgKHVj
b250ZXh0X3QgKl9fdWNwLCB2b2lkICgqX19mdW5jKSAodm9pZCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgX19hcmdjLCAuLi4pIDsKCgojIDMyNSAiL3Vzci9sb2NhbC9pbmNsdWRlL3Np
Z25hbC5oIiAyIDMKCgoKCgpleHRlcm4gaW50IHNpZ3N0YWNrIChzdHJ1Y3Qgc2lnc3RhY2sgKl9f
c3MsIHN0cnVjdCBzaWdzdGFjayAqX19vc3MpIDsKCgoKZXh0ZXJuIGludCBzaWdhbHRzdGFjayAo
X19jb25zdCBzdHJ1Y3Qgc2lnYWx0c3RhY2sgKl9fcmVzdHJpY3QgX19zcywKICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IHNpZ2FsdHN0YWNrICpfX3Jlc3RyaWN0IF9fb3NzKSA7CgoKCgoK
CgpleHRlcm4gaW50IHNpZ2hvbGQgKGludCBfX3NpZykgOwoKCmV4dGVybiBpbnQgc2lncmVsc2Ug
KGludCBfX3NpZykgOwoKCmV4dGVybiBpbnQgc2lnaWdub3JlIChpbnQgX19zaWcpIDsKCgpleHRl
cm4gX19zaWdoYW5kbGVyX3Qgc2lnc2V0IChpbnQgX19zaWcsIF9fc2lnaGFuZGxlcl90IF9fZGlz
cCkgOwoKCgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc2lndGhyZWFkLmgiIDEgMwoj
IDMxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zaWd0aHJlYWQuaCIgMwpleHRlcm4gaW50IHB0
aHJlYWRfc2lnbWFzayAoaW50IF9faG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19j
b25zdCBfX3NpZ3NldF90ICpfX3Jlc3RyaWN0IF9fbmV3bWFzaywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19vbGRtYXNrKTsKCgpleHRlcm4gaW50
IHB0aHJlYWRfa2lsbCAocHRocmVhZF90IF9fdGhyZWFkLCBpbnQgX19zaWdubykgOwojIDM1OSAi
L3Vzci9sb2NhbC9pbmNsdWRlL3NpZ25hbC5oIiAyIDMKCgoKCgoKZXh0ZXJuIGludCBfX2xpYmNf
Y3VycmVudF9zaWdydG1pbiAodm9pZCkgOwoKZXh0ZXJuIGludCBfX2xpYmNfY3VycmVudF9zaWdy
dG1heCAodm9pZCkgOwoKCgoKIyAxNjEgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgoKCiMgMSAiL3Vz
ci9sb2NhbC9pbmNsdWRlL3N5cy93YWl0LmgiIDEgMwojIDI4ICIvdXNyL2xvY2FsL2luY2x1ZGUv
c3lzL3dhaXQuaCIgMwoKIyA5OCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy93YWl0LmgiIDMKdHlw
ZWRlZiBlbnVtCnsKICBQX0FMTCwKICBQX1BJRCwKICBQX1BHSUQKfSBpZHR5cGVfdDsKCgoKCgpl
eHRlcm4gX19waWRfdCB3YWl0IChfX1dBSVRfU1RBVFVTIF9fc3RhdF9sb2MpIDsKIyAxMjkgIi91
c3IvbG9jYWwvaW5jbHVkZS9zeXMvd2FpdC5oIiAzCmV4dGVybiBfX3BpZF90IHdhaXRwaWQgKF9f
cGlkX3QgX19waWQsIGludCAqX19zdGF0X2xvYywgaW50IF9fb3B0aW9ucykgOwoKCgojIDEgIi91
c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NpZ2luZm8uaCIgMSAzCiMgMjUgIi91c3IvbG9jYWwvaW5j
bHVkZS9iaXRzL3NpZ2luZm8uaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3dvcmRz
aXplLmgiIDEgMwojIDI2ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zaWdpbmZvLmgiIDIgMwoj
IDEzNCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy93YWl0LmgiIDIgMwojIDE0MiAiL3Vzci9sb2Nh
bC9pbmNsdWRlL3N5cy93YWl0LmgiIDMKZXh0ZXJuIGludCB3YWl0aWQgKGlkdHlwZV90IF9faWR0
eXBlLCBfX2lkX3QgX19pZCwgc2lnaW5mb190ICpfX2luZm9wLAogICAgICAgICAgICAgICAgICAg
aW50IF9fb3B0aW9ucykgOwoKCgoKCnN0cnVjdCBydXNhZ2U7CgoKCgoKCmV4dGVybiBfX3BpZF90
IHdhaXQzIChfX1dBSVRfU1RBVFVTIF9fc3RhdF9sb2MsIGludCBfX29wdGlvbnMsCiAgICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3QgcnVzYWdlICogX191c2FnZSkgOwoKCgoKCnN0cnVjdCBydXNh
Z2U7CgoKZXh0ZXJuIF9fcGlkX3Qgd2FpdDQgKF9fcGlkX3QgX19waWQsIF9fV0FJVF9TVEFUVVMg
X19zdGF0X2xvYywgaW50IF9fb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBy
dXNhZ2UgKl9fdXNhZ2UpIDsKCgoKCiMgMTY0ICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKCgojIDEg
Ii91c3IvbG9jYWwvaW5jbHVkZS9jdHlwZS5oIiAxIDMKIyAyOSAiL3Vzci9sb2NhbC9pbmNsdWRl
L2N0eXBlLmgiIDMKCiMgNDcgIi91c3IvbG9jYWwvaW5jbHVkZS9jdHlwZS5oIiAzCmVudW0Kewog
IF9JU3VwcGVyID0gKCgwKSA8IDggPyAoKDEgPDwgKDApKSA8PCA4KSA6ICgoMSA8PCAoMCkpID4+
IDgpKSwKICBfSVNsb3dlciA9ICgoMSkgPCA4ID8gKCgxIDw8ICgxKSkgPDwgOCkgOiAoKDEgPDwg
KDEpKSA+PiA4KSksCiAgX0lTYWxwaGEgPSAoKDIpIDwgOCA/ICgoMSA8PCAoMikpIDw8IDgpIDog
KCgxIDw8ICgyKSkgPj4gOCkpLAogIF9JU2RpZ2l0ID0gKCgzKSA8IDggPyAoKDEgPDwgKDMpKSA8
PCA4KSA6ICgoMSA8PCAoMykpID4+IDgpKSwKICBfSVN4ZGlnaXQgPSAoKDQpIDwgOCA/ICgoMSA8
PCAoNCkpIDw8IDgpIDogKCgxIDw8ICg0KSkgPj4gOCkpLAogIF9JU3NwYWNlID0gKCg1KSA8IDgg
PyAoKDEgPDwgKDUpKSA8PCA4KSA6ICgoMSA8PCAoNSkpID4+IDgpKSwKICBfSVNwcmludCA9ICgo
NikgPCA4ID8gKCgxIDw8ICg2KSkgPDwgOCkgOiAoKDEgPDwgKDYpKSA+PiA4KSksCiAgX0lTZ3Jh
cGggPSAoKDcpIDwgOCA/ICgoMSA8PCAoNykpIDw8IDgpIDogKCgxIDw8ICg3KSkgPj4gOCkpLAog
IF9JU2JsYW5rID0gKCg4KSA8IDggPyAoKDEgPDwgKDgpKSA8PCA4KSA6ICgoMSA8PCAoOCkpID4+
IDgpKSwKICBfSVNjbnRybCA9ICgoOSkgPCA4ID8gKCgxIDw8ICg5KSkgPDwgOCkgOiAoKDEgPDwg
KDkpKSA+PiA4KSksCiAgX0lTcHVuY3QgPSAoKDEwKSA8IDggPyAoKDEgPDwgKDEwKSkgPDwgOCkg
OiAoKDEgPDwgKDEwKSkgPj4gOCkpLAogIF9JU2FsbnVtID0gKCgxMSkgPCA4ID8gKCgxIDw8ICgx
MSkpIDw8IDgpIDogKCgxIDw8ICgxMSkpID4+IDgpKQp9OwojIDc1ICIvdXNyL2xvY2FsL2luY2x1
ZGUvY3R5cGUuaCIgMwpleHRlcm4gX19jb25zdCB1bnNpZ25lZCBzaG9ydCBpbnQgKl9fY3R5cGVf
YjsKZXh0ZXJuIF9fY29uc3QgX19pbnQzMl90ICpfX2N0eXBlX3RvbG93ZXI7CmV4dGVybiBfX2Nv
bnN0IF9faW50MzJfdCAqX19jdHlwZV90b3VwcGVyOwojIDkxICIvdXNyL2xvY2FsL2luY2x1ZGUv
Y3R5cGUuaCIgMwpleHRlcm4gaW50IGlzYWxudW0gKGludCkgOwpleHRlcm4gaW50IGlzYWxwaGEg
KGludCkgOwpleHRlcm4gaW50IGlzY250cmwgKGludCkgOwpleHRlcm4gaW50IGlzZGlnaXQgKGlu
dCkgOwpleHRlcm4gaW50IGlzbG93ZXIgKGludCkgOwpleHRlcm4gaW50IGlzZ3JhcGggKGludCkg
OwpleHRlcm4gaW50IGlzcHJpbnQgKGludCkgOwpleHRlcm4gaW50IGlzcHVuY3QgKGludCkgOwpl
eHRlcm4gaW50IGlzc3BhY2UgKGludCkgOwpleHRlcm4gaW50IGlzdXBwZXIgKGludCkgOwpleHRl
cm4gaW50IGlzeGRpZ2l0IChpbnQpIDsKCgpleHRlcm4gaW50IGlzYmxhbmsgKGludCkgOwoKCgoK
ZXh0ZXJuIGludCB0b2xvd2VyIChpbnQgX19jKSA7CgoKZXh0ZXJuIGludCB0b3VwcGVyIChpbnQg
X19jKSA7CgoKCgoKCmV4dGVybiBpbnQgaXNhc2NpaSAoaW50IF9fYykgOwoKCgpleHRlcm4gaW50
IHRvYXNjaWkgKGludCBfX2MpIDsKCgoKZXh0ZXJuIGludCBfdG91cHBlciAoaW50KSA7CmV4dGVy
biBpbnQgX3RvbG93ZXIgKGludCkgOwojIDE2NyAiL3Vzci9sb2NhbC9pbmNsdWRlL2N0eXBlLmgi
IDMKZXh0ZXJuIF9faW5saW5lIGludAp0b2xvd2VyIChpbnQgX19jKQp7CiAgcmV0dXJuIF9fYyA+
PSAtMTI4ICYmIF9fYyA8IDI1NiA/IF9fY3R5cGVfdG9sb3dlcltfX2NdIDogX19jOwp9CgpleHRl
cm4gX19pbmxpbmUgaW50CnRvdXBwZXIgKGludCBfX2MpCnsKICByZXR1cm4gX19jID49IC0xMjgg
JiYgX19jIDwgMjU2ID8gX19jdHlwZV90b3VwcGVyW19fY10gOiBfX2M7Cn0KIyAyMjMgIi91c3Iv
bG9jYWwvaW5jbHVkZS9jdHlwZS5oIiAzCmV4dGVybiBpbnQgX19pc2FsbnVtX2wgKGludCwgX19s
b2NhbGVfdCkgOwpleHRlcm4gaW50IF9faXNhbHBoYV9sIChpbnQsIF9fbG9jYWxlX3QpIDsKZXh0
ZXJuIGludCBfX2lzY250cmxfbCAoaW50LCBfX2xvY2FsZV90KSA7CmV4dGVybiBpbnQgX19pc2Rp
Z2l0X2wgKGludCwgX19sb2NhbGVfdCkgOwpleHRlcm4gaW50IF9faXNsb3dlcl9sIChpbnQsIF9f
bG9jYWxlX3QpIDsKZXh0ZXJuIGludCBfX2lzZ3JhcGhfbCAoaW50LCBfX2xvY2FsZV90KSA7CmV4
dGVybiBpbnQgX19pc3ByaW50X2wgKGludCwgX19sb2NhbGVfdCkgOwpleHRlcm4gaW50IF9faXNw
dW5jdF9sIChpbnQsIF9fbG9jYWxlX3QpIDsKZXh0ZXJuIGludCBfX2lzc3BhY2VfbCAoaW50LCBf
X2xvY2FsZV90KSA7CmV4dGVybiBpbnQgX19pc3VwcGVyX2wgKGludCwgX19sb2NhbGVfdCkgOwpl
eHRlcm4gaW50IF9faXN4ZGlnaXRfbCAoaW50LCBfX2xvY2FsZV90KSA7CgpleHRlcm4gaW50IF9f
aXNibGFua19sIChpbnQsIF9fbG9jYWxlX3QpIDsKCgoKZXh0ZXJuIGludCBfX3RvbG93ZXJfbCAo
aW50IF9fYywgX19sb2NhbGVfdCBfX2wpIDsKCgpleHRlcm4gaW50IF9fdG91cHBlcl9sIChpbnQg
X19jLCBfX2xvY2FsZV90IF9fbCkgOwojIDI3NiAiL3Vzci9sb2NhbC9pbmNsdWRlL2N0eXBlLmgi
IDMKCiMgMTY3ICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVk
ZS9ncnAuaCIgMSAzCiMgMjggIi91c3IvbG9jYWwvaW5jbHVkZS9ncnAuaCIgMwoKCgoKCiMgMSAi
L3Vzci9sb2NhbC9nY2MvMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVk
ZS9zdGRkZWYuaCIgMSAzCiMgMzQgIi91c3IvbG9jYWwvaW5jbHVkZS9ncnAuaCIgMiAzCiMgNDMg
Ii91c3IvbG9jYWwvaW5jbHVkZS9ncnAuaCIgMwpzdHJ1Y3QgZ3JvdXAKICB7CiAgICBjaGFyICpn
cl9uYW1lOwogICAgY2hhciAqZ3JfcGFzc3dkOwogICAgX19naWRfdCBncl9naWQ7CiAgICBjaGFy
ICoqZ3JfbWVtOwogIH07CiMgNjAgIi91c3IvbG9jYWwvaW5jbHVkZS9ncnAuaCIgMwpleHRlcm4g
dm9pZCBzZXRncmVudCAodm9pZCkgOwoKCmV4dGVybiB2b2lkIGVuZGdyZW50ICh2b2lkKSA7CgoK
ZXh0ZXJuIHN0cnVjdCBncm91cCAqZ2V0Z3JlbnQgKHZvaWQpIDsKCgoKCmV4dGVybiBzdHJ1Y3Qg
Z3JvdXAgKmZnZXRncmVudCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgcHV0Z3Jl
bnQgKF9fY29uc3Qgc3RydWN0IGdyb3VwICpfX3Jlc3RyaWN0IF9fcCwKICAgICAgICAgICAgICAg
ICAgICAgRklMRSAqX19yZXN0cmljdCBfX2YpIDsKCgoKZXh0ZXJuIHN0cnVjdCBncm91cCAqZ2V0
Z3JnaWQgKF9fZ2lkX3QgX19naWQpIDsKCgpleHRlcm4gc3RydWN0IGdyb3VwICpnZXRncm5hbSAo
X19jb25zdCBjaGFyICpfX25hbWUpIDsKIyAxMDMgIi91c3IvbG9jYWwvaW5jbHVkZS9ncnAuaCIg
MwpleHRlcm4gaW50IGdldGdyZW50X3IgKHN0cnVjdCBncm91cCAqX19yZXN0cmljdCBfX3Jlc3Vs
dGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmZmVyLCBz
aXplX3QgX19idWZsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGdyb3VwICoqX19y
ZXN0cmljdCBfX3Jlc3VsdCkgOwoKCgpleHRlcm4gaW50IGdldGdyZ2lkX3IgKF9fZ2lkX3QgX19n
aWQsIHN0cnVjdCBncm91cCAqX19yZXN0cmljdCBfX3Jlc3VsdGJ1ZiwKICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmZmVyLCBzaXplX3QgX19idWZsZW4sCiAgICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IGdyb3VwICoqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoK
CmV4dGVybiBpbnQgZ2V0Z3JuYW1fciAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZ3JvdXAgKl9fcmVzdHJpY3QgX19yZXN1bHRi
dWYsCiAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1ZmZlciwgc2l6
ZV90IF9fYnVmbGVuLAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBncm91cCAqKl9fcmVz
dHJpY3QgX19yZXN1bHQpIDsKCgoKCmV4dGVybiBpbnQgZmdldGdyZW50X3IgKEZJTEUgKl9fcmVz
dHJpY3QgX19zdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBncm91cCAqX19y
ZXN0cmljdCBfX3Jlc3VsdGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0
cmljdCBfX2J1ZmZlciwgc2l6ZV90IF9fYnVmbGVuLAogICAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3QgZ3JvdXAgKipfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CiMgMTM0ICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvZ3JwLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYy8zL2xpYi9nY2MtbGliL2k2ODYtcGMt
bGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAxMzUgIi91c3IvbG9jYWwvaW5j
bHVkZS9ncnAuaCIgMiAzCgoKZXh0ZXJuIGludCBzZXRncm91cHMgKHNpemVfdCBfX24sIF9fY29u
c3QgX19naWRfdCAqX19ncm91cHMpIDsKCgoKCmV4dGVybiBpbnQgZ2V0Z3JvdXBsaXN0IChfX2Nv
bnN0IGNoYXIgKl9fdXNlciwgX19naWRfdCBfX2dyb3VwLAogICAgICAgICAgICAgICAgICAgICAg
ICAgX19naWRfdCAqX19ncm91cHMsIGludCAqX19uZ3JvdXBzKSA7CgoKCgpleHRlcm4gaW50IGlu
aXRncm91cHMgKF9fY29uc3QgY2hhciAqX191c2VyLCBfX2dpZF90IF9fZ3JvdXApIDsKCgoKCiMg
MTcwICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKIyAxNzggImluY2x1ZGUvaW5jbHVkZXMuaCIKIyAx
ICIvdXNyL2xvY2FsL2luY2x1ZGUvZXJybm8uaCIgMSAzCiMgMzIgIi91c3IvbG9jYWwvaW5jbHVk
ZS9lcnJuby5oIiAzCgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL2Vycm5vLmgiIDEg
MwojIDI1ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9lcnJuby5oIiAzCiMgMSAiL3Vzci9sb2Nh
bC9pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDEgMwoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9h
c20vZXJybm8uaCIgMSAzCiMgNSAiL3Vzci9sb2NhbC9pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDIg
MwojIDI2ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9lcnJuby5oIiAyIDMKIyAzNiAiL3Vzci9s
b2NhbC9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMwpleHRlcm4gaW50IGVycm5vOwoKCmV4dGVybiBp
bnQgKl9fZXJybm9fbG9jYXRpb24gKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
IyAzNyAiL3Vzci9sb2NhbC9pbmNsdWRlL2Vycm5vLmgiIDIgMwojIDU1ICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvZXJybm8uaCIgMwpleHRlcm4gY2hhciAqcHJvZ3JhbV9pbnZvY2F0aW9uX25hbWUsICpw
cm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZTsKCgoKCiMgNjkgIi91c3IvbG9jYWwvaW5jbHVk
ZS9lcnJuby5oIiAzCnR5cGVkZWYgaW50IGVycm9yX3Q7CiMgMTc5ICJpbmNsdWRlL2luY2x1ZGVz
LmgiIDIKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS91dGltZS5oIiAxIDMKIyAyOCAiL3Vzci9s
b2NhbC9pbmNsdWRlL3V0aW1lLmgiIDMKCiMgMzggIi91c3IvbG9jYWwvaW5jbHVkZS91dGltZS5o
IiAzCnN0cnVjdCB1dGltYnVmCiAgewogICAgX190aW1lX3QgYWN0aW1lOwogICAgX190aW1lX3Qg
bW9kdGltZTsKICB9OwoKCgpleHRlcm4gaW50IHV0aW1lIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwK
ICAgICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3QgdXRpbWJ1ZiAqX19maWxlX3RpbWVzKSA7
CgoKIyAxODIgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgojIDE5NiAiaW5jbHVkZS9pbmNsdWRlcy5o
IgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9nbG9iLmgiIDEgMwojIDExMSAiL3Vzci9sb2NhbC9p
bmNsdWRlL2dsb2IuaCIgMwpzdHJ1Y3Qgc3RhdDsKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIHNp
emVfdCBnbF9wYXRoYzsKICAgIGNoYXIgKipnbF9wYXRodjsKICAgIHNpemVfdCBnbF9vZmZzOwog
ICAgaW50IGdsX2ZsYWdzOwoKCgogICAgdm9pZCAoKmdsX2Nsb3NlZGlyKSAodm9pZCAqKTsKCiAg
ICBzdHJ1Y3QgZGlyZW50ICooKmdsX3JlYWRkaXIpICh2b2lkICopOwoKCgogICAgdm9pZCAqICgq
Z2xfb3BlbmRpcikgKF9fY29uc3QgY2hhciAqKTsKCiAgICBpbnQgKCpnbF9sc3RhdCkgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCwgc3RydWN0IHN0YXQgKl9fcmVzdHJpY3QpOwoKICAgIGludCAo
KmdsX3N0YXQpIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QsIHN0cnVjdCBzdGF0ICpfX3Jlc3Ry
aWN0KTsKCgoKCiAgfSBnbG9iX3Q7CgoKCnN0cnVjdCBzdGF0NjQ7Cgp0eXBlZGVmIHN0cnVjdAog
IHsKICAgIHNpemVfdCBnbF9wYXRoYzsKICAgIGNoYXIgKipnbF9wYXRodjsKICAgIHNpemVfdCBn
bF9vZmZzOwogICAgaW50IGdsX2ZsYWdzOwoKCgogICAgdm9pZCAoKmdsX2Nsb3NlZGlyKSAodm9p
ZCAqKTsKCiAgICBzdHJ1Y3QgZGlyZW50NjQgKigqZ2xfcmVhZGRpcikgKHZvaWQgKik7CgoKCiAg
ICB2b2lkICogKCpnbF9vcGVuZGlyKSAoX19jb25zdCBjaGFyICopOwoKICAgIGludCAoKmdsX2xz
dGF0KSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0LCBzdHJ1Y3Qgc3RhdDY0ICpfX3Jlc3RyaWN0
KTsKCiAgICBpbnQgKCpnbF9zdGF0KSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0LCBzdHJ1Y3Qg
c3RhdDY0ICpfX3Jlc3RyaWN0KTsKCgoKCgogIH0gZ2xvYjY0X3Q7CiMgMTkzICIvdXNyL2xvY2Fs
L2luY2x1ZGUvZ2xvYi5oIiAzCmV4dGVybiBpbnQgZ2xvYiAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fcGF0dGVybiwgaW50IF9fZmxhZ3MsIGludCAoKl9fZXJyZnVuYykgKF9fY29uc3QgY2hh
ciAqLCBpbnQpLCBnbG9iX3QgKl9fcmVzdHJpY3QgX19wZ2xvYikgX19hc21fXyAoImdsb2I2NCIp
OwoKCgpleHRlcm4gdm9pZCBnbG9iZnJlZSAoZ2xvYl90ICpfX3BnbG9iKSBfX2FzbV9fICgiZ2xv
YmZyZWU2NCIpOwoKCgpleHRlcm4gaW50IGdsb2I2NCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fcGF0dGVybiwgaW50IF9fZmxhZ3MsIGludCAoKl9fZXJyZnVuYykgKF9fY29uc3QgY2hhciAq
LCBpbnQpLCBnbG9iNjRfdCAqX19yZXN0cmljdCBfX3BnbG9iKSA7CgoKCmV4dGVybiB2b2lkIGds
b2JmcmVlNjQgKGdsb2I2NF90ICpfX3BnbG9iKSA7CiMgMjE1ICIvdXNyL2xvY2FsL2luY2x1ZGUv
Z2xvYi5oIiAzCmV4dGVybiBpbnQgZ2xvYl9wYXR0ZXJuX3AgKF9fY29uc3QgY2hhciAqX19wYXR0
ZXJuLCBpbnQgX19xdW90ZSkgOwojIDE5NyAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCgoKIyAxICIv
dXNyL2xvY2FsL2luY2x1ZGUvcHdkLmgiIDEgMwojIDI4ICIvdXNyL2xvY2FsL2luY2x1ZGUvcHdk
LmgiIDMKCgoKCgojIDEgIi91c3IvbG9jYWwvZ2NjLzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM0ICIvdXNyL2xvY2FsL2luY2x1ZGUv
cHdkLmgiIDIgMwojIDUwICIvdXNyL2xvY2FsL2luY2x1ZGUvcHdkLmgiIDMKc3RydWN0IHBhc3N3
ZAp7CiAgY2hhciAqcHdfbmFtZTsKICBjaGFyICpwd19wYXNzd2Q7CiAgX191aWRfdCBwd191aWQ7
CiAgX19naWRfdCBwd19naWQ7CiAgY2hhciAqcHdfZ2Vjb3M7CiAgY2hhciAqcHdfZGlyOwogIGNo
YXIgKnB3X3NoZWxsOwp9OwojIDcwICIvdXNyL2xvY2FsL2luY2x1ZGUvcHdkLmgiIDMKZXh0ZXJu
IHZvaWQgc2V0cHdlbnQgKHZvaWQpIDsKCgpleHRlcm4gdm9pZCBlbmRwd2VudCAodm9pZCkgOwoK
CmV4dGVybiBzdHJ1Y3QgcGFzc3dkICpnZXRwd2VudCAodm9pZCkgOwoKCgoKZXh0ZXJuIHN0cnVj
dCBwYXNzd2QgKmZnZXRwd2VudCAoRklMRSAqX19zdHJlYW0pIDsKCgpleHRlcm4gaW50IHB1dHB3
ZW50IChfX2NvbnN0IHN0cnVjdCBwYXNzd2QgKl9fcmVzdHJpY3QgX19wLAogICAgICAgICAgICAg
ICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fZikgOwoKCgpleHRlcm4gc3RydWN0IHBhc3N3ZCAq
Z2V0cHd1aWQgKF9fdWlkX3QgX191aWQpIDsKCgpleHRlcm4gc3RydWN0IHBhc3N3ZCAqZ2V0cHdu
YW0gKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CiMgMTExICIvdXNyL2xvY2FsL2luY2x1ZGUvcHdk
LmgiIDMKZXh0ZXJuIGludCBnZXRwd2VudF9yIChzdHJ1Y3QgcGFzc3dkICpfX3Jlc3RyaWN0IF9f
cmVzdWx0YnVmLAogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWZm
ZXIsIHNpemVfdCBfX2J1ZmxlbiwKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGFzc3dk
ICoqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKCmV4dGVybiBpbnQgZ2V0cHd1aWRfciAoX191aWRf
dCBfX3VpZCwKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGFzc3dkICpfX3Jlc3RyaWN0
IF9fcmVzdWx0YnVmLAogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19i
dWZmZXIsIHNpemVfdCBfX2J1ZmxlbiwKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGFz
c3dkICoqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKZXh0ZXJuIGludCBnZXRwd25hbV9yIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19uYW1lLAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBwYXNzd2QgKl9fcmVzdHJpY3QgX19yZXN1bHRidWYsCiAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqX19yZXN0cmljdCBfX2J1ZmZlciwgc2l6ZV90IF9fYnVmbGVuLAogICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBwYXNzd2QgKipfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgoKCgoKZXh0
ZXJuIGludCBmZ2V0cHdlbnRfciAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKICAgICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IHBhc3N3ZCAqX19yZXN0cmljdCBfX3Jlc3VsdGJ1ZiwKICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1ZmZlciwgc2l6ZV90IF9f
YnVmbGVuLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGFzc3dkICoqX19yZXN0cmlj
dCBfX3Jlc3VsdCkgOwojIDE0MiAiL3Vzci9sb2NhbC9pbmNsdWRlL3B3ZC5oIiAzCmV4dGVybiBp
bnQgZ2V0cHcgKF9fdWlkX3QgX191aWQsIGNoYXIgKl9fYnVmZmVyKSA7CgoKCiMgMjAwICJpbmNs
dWRlL2luY2x1ZGVzLmgiIDIKCgojIDEgIi91c3IvbG9jYWwvZ2NjLzMvbGliL2djYy1saWIvaTY4
Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkYXJnLmgiIDEgMwojIDIwMyAiaW5jbHVkZS9p
bmNsdWRlcy5oIiAyCgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDEg
MwojIDIzICIvdXNyL2xvY2FsL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAzCiMgMSAiL3Vzci9sb2Nh
bC9pbmNsdWRlL3N0ZGludC5oIiAxIDMKIyAyOCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0ZGludC5o
IiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIgMSAzCiMgMjkgIi91
c3IvbG9jYWwvaW5jbHVkZS9zdGRpbnQuaCIgMiAzCiMgNTIgIi91c3IvbG9jYWwvaW5jbHVkZS9z
dGRpbnQuaCIgMwp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludDhfdDsKdHlwZWRlZiB1bnNpZ25l
ZCBzaG9ydCBpbnQgdWludDE2X3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50MzJfdDsKCgoK
CgpfX2V4dGVuc2lvbl9fCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCB1aW50NjRfdDsK
CgoKCgoKdHlwZWRlZiBzaWduZWQgY2hhciBpbnRfbGVhc3Q4X3Q7CnR5cGVkZWYgc2hvcnQgaW50
IGludF9sZWFzdDE2X3Q7CnR5cGVkZWYgaW50IGludF9sZWFzdDMyX3Q7CgoKCl9fZXh0ZW5zaW9u
X18KdHlwZWRlZiBsb25nIGxvbmcgaW50IGludF9sZWFzdDY0X3Q7CgoKCnR5cGVkZWYgdW5zaWdu
ZWQgY2hhciB1aW50X2xlYXN0OF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1aW50X2xl
YXN0MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9sZWFzdDMyX3Q7CgoKCl9fZXh0ZW5z
aW9uX18KdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHVpbnRfbGVhc3Q2NF90OwoKCgoK
Cgp0eXBlZGVmIHNpZ25lZCBjaGFyIGludF9mYXN0OF90OwoKCgoKCnR5cGVkZWYgaW50IGludF9m
YXN0MTZfdDsKdHlwZWRlZiBpbnQgaW50X2Zhc3QzMl90OwpfX2V4dGVuc2lvbl9fCnR5cGVkZWYg
bG9uZyBsb25nIGludCBpbnRfZmFzdDY0X3Q7CgoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1aW50
X2Zhc3Q4X3Q7CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9mYXN0MTZfdDsKdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgdWludF9mYXN0MzJfdDsKX19leHRlbnNpb25fXwp0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgbG9uZyBpbnQgdWludF9mYXN0NjRfdDsKIyAxMzIgIi91c3IvbG9jYWwvaW5jbHVk
ZS9zdGRpbnQuaCIgMwp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50cHRyX3Q7CiMgMTQxICIvdXNy
L2xvY2FsL2luY2x1ZGUvc3RkaW50LmgiIDMKX19leHRlbnNpb25fXwp0eXBlZGVmIGxvbmcgbG9u
ZyBpbnQgaW50bWF4X3Q7Cl9fZXh0ZW5zaW9uX18KdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcg
aW50IHVpbnRtYXhfdDsKIyAyNCAiL3Vzci9sb2NhbC9pbmNsdWRlL25ldGluZXQvaW4uaCIgMiAz
CgoKCgoKCmVudW0KICB7CiAgICBJUFBST1RPX0lQID0gMCwKCiAgICBJUFBST1RPX0hPUE9QVFMg
PSAwLAoKICAgIElQUFJPVE9fSUNNUCA9IDEsCgogICAgSVBQUk9UT19JR01QID0gMiwKCiAgICBJ
UFBST1RPX0lQSVAgPSA0LAoKICAgIElQUFJPVE9fVENQID0gNiwKCiAgICBJUFBST1RPX0VHUCA9
IDgsCgogICAgSVBQUk9UT19QVVAgPSAxMiwKCiAgICBJUFBST1RPX1VEUCA9IDE3LAoKICAgIElQ
UFJPVE9fSURQID0gMjIsCgogICAgSVBQUk9UT19UUCA9IDI5LAoKICAgIElQUFJPVE9fSVBWNiA9
IDQxLAoKICAgIElQUFJPVE9fUk9VVElORyA9IDQzLAoKICAgIElQUFJPVE9fRlJBR01FTlQgPSA0
NCwKCiAgICBJUFBST1RPX1JTVlAgPSA0NiwKCiAgICBJUFBST1RPX0dSRSA9IDQ3LAoKICAgIElQ
UFJPVE9fRVNQID0gNTAsCgogICAgSVBQUk9UT19BSCA9IDUxLAoKICAgIElQUFJPVE9fSUNNUFY2
ID0gNTgsCgogICAgSVBQUk9UT19OT05FID0gNTksCgogICAgSVBQUk9UT19EU1RPUFRTID0gNjAs
CgogICAgSVBQUk9UT19NVFAgPSA5MiwKCiAgICBJUFBST1RPX0VOQ0FQID0gOTgsCgogICAgSVBQ
Uk9UT19QSU0gPSAxMDMsCgogICAgSVBQUk9UT19DT01QID0gMTA4LAoKICAgIElQUFJPVE9fUkFX
ID0gMjU1LAoKICAgIElQUFJPVE9fTUFYCiAgfTsKCgoKdHlwZWRlZiB1aW50MTZfdCBpbl9wb3J0
X3Q7CgoKZW51bQogIHsKICAgIElQUE9SVF9FQ0hPID0gNywKICAgIElQUE9SVF9ESVNDQVJEID0g
OSwKICAgIElQUE9SVF9TWVNUQVQgPSAxMSwKICAgIElQUE9SVF9EQVlUSU1FID0gMTMsCiAgICBJ
UFBPUlRfTkVUU1RBVCA9IDE1LAogICAgSVBQT1JUX0ZUUCA9IDIxLAogICAgSVBQT1JUX1RFTE5F
VCA9IDIzLAogICAgSVBQT1JUX1NNVFAgPSAyNSwKICAgIElQUE9SVF9USU1FU0VSVkVSID0gMzcs
CiAgICBJUFBPUlRfTkFNRVNFUlZFUiA9IDQyLAogICAgSVBQT1JUX1dIT0lTID0gNDMsCiAgICBJ
UFBPUlRfTVRQID0gNTcsCgogICAgSVBQT1JUX1RGVFAgPSA2OSwKICAgIElQUE9SVF9SSkUgPSA3
NywKICAgIElQUE9SVF9GSU5HRVIgPSA3OSwKICAgIElQUE9SVF9UVFlMSU5LID0gODcsCiAgICBJ
UFBPUlRfU1VQRFVQID0gOTUsCgoKICAgIElQUE9SVF9FWEVDU0VSVkVSID0gNTEyLAogICAgSVBQ
T1JUX0xPR0lOU0VSVkVSID0gNTEzLAogICAgSVBQT1JUX0NNRFNFUlZFUiA9IDUxNCwKICAgIElQ
UE9SVF9FRlNTRVJWRVIgPSA1MjAsCgoKICAgIElQUE9SVF9CSUZGVURQID0gNTEyLAogICAgSVBQ
T1JUX1dIT1NFUlZFUiA9IDUxMywKICAgIElQUE9SVF9ST1VURVNFUlZFUiA9IDUyMCwKCgogICAg
SVBQT1JUX1JFU0VSVkVEID0gMTAyNCwKCgogICAgSVBQT1JUX1VTRVJSRVNFUlZFRCA9IDUwMDAK
ICB9OwoKCgp0eXBlZGVmIHVpbnQzMl90IGluX2FkZHJfdDsKc3RydWN0IGluX2FkZHIKICB7CiAg
ICBpbl9hZGRyX3Qgc19hZGRyOwogIH07CiMgMTkwICIvdXNyL2xvY2FsL2luY2x1ZGUvbmV0aW5l
dC9pbi5oIiAzCnN0cnVjdCBpbjZfYWRkcgogIHsKICAgIHVuaW9uCiAgICAgIHsKICAgICAgICB1
aW50OF90IHU2X2FkZHI4WzE2XTsKICAgICAgICB1aW50MTZfdCB1Nl9hZGRyMTZbOF07CiAgICAg
ICAgdWludDMyX3QgdTZfYWRkcjMyWzRdOwogICAgICB9IGluNl91OwoKCgogIH07CgpleHRlcm4g
Y29uc3Qgc3RydWN0IGluNl9hZGRyIGluNmFkZHJfYW55OwpleHRlcm4gY29uc3Qgc3RydWN0IGlu
Nl9hZGRyIGluNmFkZHJfbG9vcGJhY2s7CiMgMjE2ICIvdXNyL2xvY2FsL2luY2x1ZGUvbmV0aW5l
dC9pbi5oIiAzCnN0cnVjdCBzb2NrYWRkcl9pbgogIHsKICAgIHNhX2ZhbWlseV90IHNpbl9mYW1p
bHk7CiAgICBpbl9wb3J0X3Qgc2luX3BvcnQ7CiAgICBzdHJ1Y3QgaW5fYWRkciBzaW5fYWRkcjsK
CgogICAgdW5zaWduZWQgY2hhciBzaW5femVyb1tzaXplb2YgKHN0cnVjdCBzb2NrYWRkcikgLQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAoc2l6ZW9mICh1bnNpZ25lZCBzaG9ydCBpbnQpKSAt
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoaW5fcG9ydF90KSAtCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVvZiAoc3RydWN0IGluX2FkZHIpXTsKICB9OwoKCnN0cnVj
dCBzb2NrYWRkcl9pbjYKICB7CiAgICBzYV9mYW1pbHlfdCBzaW42X2ZhbWlseTsKICAgIGluX3Bv
cnRfdCBzaW42X3BvcnQ7CiAgICB1aW50MzJfdCBzaW42X2Zsb3dpbmZvOwogICAgc3RydWN0IGlu
Nl9hZGRyIHNpbjZfYWRkcjsKICAgIHVpbnQzMl90IHNpbjZfc2NvcGVfaWQ7CiAgfTsKCgpzdHJ1
Y3QgaXB2Nl9tcmVxCiAgewoKICAgIHN0cnVjdCBpbjZfYWRkciBpcHY2bXJfbXVsdGlhZGRyOwoK
CiAgICB1bnNpZ25lZCBpbnQgaXB2Nm1yX2ludGVyZmFjZTsKICB9OwoKCiMgMSAiL3Vzci9sb2Nh
bC9pbmNsdWRlL2JpdHMvaW4uaCIgMSAzCiMgNjYgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL2lu
LmgiIDMKc3RydWN0IGlwX29wdHMKICB7CiAgICBzdHJ1Y3QgaW5fYWRkciBpcF9kc3Q7CiAgICBj
aGFyIGlwX29wdHNbNDBdOwogIH07CgoKc3RydWN0IGlwX21yZXEKICB7CiAgICBzdHJ1Y3QgaW5f
YWRkciBpbXJfbXVsdGlhZGRyOwogICAgc3RydWN0IGluX2FkZHIgaW1yX2ludGVyZmFjZTsKICB9
OwoKCnN0cnVjdCBpcF9tcmVxbgogIHsKICAgIHN0cnVjdCBpbl9hZGRyIGltcl9tdWx0aWFkZHI7
CiAgICBzdHJ1Y3QgaW5fYWRkciBpbXJfYWRkcmVzczsKICAgIGludCBpbXJfaWZpbmRleDsKICB9
OwoKCnN0cnVjdCBpbl9wa3RpbmZvCiAgewogICAgaW50IGlwaV9pZmluZGV4OwogICAgc3RydWN0
IGluX2FkZHIgaXBpX3NwZWNfZHN0OwogICAgc3RydWN0IGluX2FkZHIgaXBpX2FkZHI7CiAgfTsK
IyAyNTEgIi91c3IvbG9jYWwvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDIgMwojIDI1OSAiL3Vzci9s
b2NhbC9pbmNsdWRlL25ldGluZXQvaW4uaCIgMwpleHRlcm4gdWludDMyX3QgbnRvaGwgKHVpbnQz
Ml90IF9fbmV0bG9uZykgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gdWludDE2
X3QgbnRvaHMgKHVpbnQxNl90IF9fbmV0c2hvcnQpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOwpleHRlcm4gdWludDMyX3QgaHRvbmwgKHVpbnQzMl90IF9faG9zdGxvbmcpCiAgICAg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gdWludDE2X3QgaHRvbnMgKHVpbnQx
Nl90IF9faG9zdHNob3J0KQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCiMg
MSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvYnl0ZXN3YXAuaCIgMSAzCiMgMjcxICIvdXNyL2xv
Y2FsL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAyIDMKIyAzMzMgIi91c3IvbG9jYWwvaW5jbHVkZS9u
ZXRpbmV0L2luLmgiIDMKZXh0ZXJuIGludCBiaW5kcmVzdnBvcnQgKGludCBfX3NvY2tmZCwgc3Ry
dWN0IHNvY2thZGRyX2luICpfX3NvY2tfaW4pIDsKCgpleHRlcm4gaW50IGJpbmRyZXN2cG9ydDYg
KGludCBfX3NvY2tmZCwgc3RydWN0IHNvY2thZGRyX2luNiAqX19zb2NrX2luKQogICAgIDsKIyAz
NjEgIi91c3IvbG9jYWwvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDMKc3RydWN0IGluNl9wa3RpbmZv
CiAgewogICAgc3RydWN0IGluNl9hZGRyIGlwaTZfYWRkcjsKICAgIHVuc2lnbmVkIGludCBpcGk2
X2lmaW5kZXg7CiAgfTsKCgojIDIwOCAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgMSAiL3Vzci9s
b2NhbC9pbmNsdWRlL2FycGEvaW5ldC5oIiAxIDMKIyAzMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2Fy
cGEvaW5ldC5oIiAzCgoKCgpleHRlcm4gaW5fYWRkcl90IGluZXRfYWRkciAoX19jb25zdCBjaGFy
ICpfX2NwKSA7CgoKZXh0ZXJuIGluX2FkZHJfdCBpbmV0X2xuYW9mIChzdHJ1Y3QgaW5fYWRkciBf
X2luKSA7CgoKCmV4dGVybiBzdHJ1Y3QgaW5fYWRkciBpbmV0X21ha2VhZGRyIChpbl9hZGRyX3Qg
X19uZXQsIGluX2FkZHJfdCBfX2hvc3QpCiAgICAgOwoKCmV4dGVybiBpbl9hZGRyX3QgaW5ldF9u
ZXRvZiAoc3RydWN0IGluX2FkZHIgX19pbikgOwoKCgpleHRlcm4gaW5fYWRkcl90IGluZXRfbmV0
d29yayAoX19jb25zdCBjaGFyICpfX2NwKSA7CgoKCmV4dGVybiBjaGFyICppbmV0X250b2EgKHN0
cnVjdCBpbl9hZGRyIF9faW4pIDsKCgoKCmV4dGVybiBpbnQgaW5ldF9wdG9uIChpbnQgX19hZiwg
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fY3AsCiAgICAgICAgICAgICAgICAgICAgICB2b2lk
ICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoKCgpleHRlcm4gX19jb25zdCBjaGFyICppbmV0X250b3Ag
KGludCBfX2FmLCBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19jcCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzb2NrbGVuX3QgX19sZW4p
CiAgICAgOwoKCgoKCgpleHRlcm4gaW5fYWRkcl90IGluZXRfYXRvbiAoX19jb25zdCBjaGFyICpf
X2NwLCBzdHJ1Y3QgaW5fYWRkciAqX19pbnApIDsKCgoKZXh0ZXJuIGNoYXIgKmluZXRfbmV0YSAo
aW5fYWRkcl90IF9fbmV0LCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fbGVuKSA7CgoKCgpleHRlcm4g
Y2hhciAqaW5ldF9uZXRfbnRvcCAoaW50IF9fYWYsIF9fY29uc3Qgdm9pZCAqX19jcCwgaW50IF9f
Yml0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fYnVmLCBzaXplX3QgX19s
ZW4pIDsKCgoKCmV4dGVybiBpbnQgaW5ldF9uZXRfcHRvbiAoaW50IF9fYWYsIF9fY29uc3QgY2hh
ciAqX19jcCwKICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpfX2J1Ziwgc2l6ZV90IF9f
bGVuKSA7CgoKCgpleHRlcm4gdW5zaWduZWQgaW50IGluZXRfbnNhcF9hZGRyIChfX2NvbnN0IGNo
YXIgKl9fY3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNo
YXIgKl9fYnVmLCBpbnQgX19sZW4pIDsKCgoKZXh0ZXJuIGNoYXIgKmluZXRfbnNhcF9udG9hIChp
bnQgX19sZW4sIF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19jcCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICpfX2J1ZikgOwoKCgojIDIwOSAiaW5jbHVkZS9pbmNsdWRlcy5oIiAy
CiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL25ldGRiLmgiIDEgMwojIDMzICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvbmV0ZGIuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMvbmV0ZGIuaCIgMSAz
CiMgNDIgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMvbmV0ZGIuaCIgMwojIDEgIi91c3IvbG9jYWwv
Z2NjLzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgi
IDEgMwojIDQzICIvdXNyL2xvY2FsL2luY2x1ZGUvcnBjL25ldGRiLmgiIDIgMwoKCgpzdHJ1Y3Qg
cnBjZW50CnsKICBjaGFyICpyX25hbWU7CiAgY2hhciAqKnJfYWxpYXNlczsKICBpbnQgcl9udW1i
ZXI7Cn07CgpleHRlcm4gdm9pZCBzZXRycGNlbnQgKGludCBfX3N0YXlvcGVuKSA7CmV4dGVybiB2
b2lkIGVuZHJwY2VudCAodm9pZCkgOwpleHRlcm4gc3RydWN0IHJwY2VudCAqZ2V0cnBjYnluYW1l
IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwpleHRlcm4gc3RydWN0IHJwY2VudCAqZ2V0cnBjYnlu
dW1iZXIgKGludCBfX251bWJlcikgOwpleHRlcm4gc3RydWN0IHJwY2VudCAqZ2V0cnBjZW50ICh2
b2lkKSA7CgoKZXh0ZXJuIGludCBnZXRycGNieW5hbWVfciAoX19jb25zdCBjaGFyICpfX25hbWUs
IHN0cnVjdCBycGNlbnQgKl9fcmVzdWx0X2J1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqX19idWZmZXIsIHNpemVfdCBfX2J1ZmxlbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IHJwY2VudCAqKl9fcmVzdWx0KSA7CgpleHRlcm4gaW50IGdldHJwY2J5bnVtYmVy
X3IgKGludCBfX251bWJlciwgc3RydWN0IHJwY2VudCAqX19yZXN1bHRfYnVmLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fYnVmZmVyLCBzaXplX3QgX19idWZsZW4sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJwY2VudCAqKl9fcmVzdWx0KSA7CgpleHRl
cm4gaW50IGdldHJwY2VudF9yIChzdHJ1Y3QgcnBjZW50ICpfX3Jlc3VsdF9idWYsIGNoYXIgKl9f
YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19idWZsZW4sIHN0cnVjdCBy
cGNlbnQgKipfX3Jlc3VsdCkgOwoKCgojIDM0ICIvdXNyL2xvY2FsL2luY2x1ZGUvbmV0ZGIuaCIg
MiAzCgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NpZ2luZm8uaCIgMSAzCiMgMjUg
Ii91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NpZ2luZm8uaCIgMwojIDEgIi91c3IvbG9jYWwvaW5j
bHVkZS9iaXRzL3dvcmRzaXplLmgiIDEgMwojIDI2ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9z
aWdpbmZvLmgiIDIgMwojIDM5ICIvdXNyL2xvY2FsL2luY2x1ZGUvbmV0ZGIuaCIgMiAzCgoKCgoj
IDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL25ldGRiLmgiIDEgMwojIDI3ICIvdXNyL2xvY2Fs
L2luY2x1ZGUvYml0cy9uZXRkYi5oIiAzCnN0cnVjdCBuZXRlbnQKewogIGNoYXIgKm5fbmFtZTsK
ICBjaGFyICoqbl9hbGlhc2VzOwogIGludCBuX2FkZHJ0eXBlOwogIHVpbnQzMl90IG5fbmV0Owp9
OwojIDQ0ICIvdXNyL2xvY2FsL2luY2x1ZGUvbmV0ZGIuaCIgMiAzCiMgNTQgIi91c3IvbG9jYWwv
aW5jbHVkZS9uZXRkYi5oIiAzCgoKCmV4dGVybiBpbnQgaF9lcnJubzsKCgpleHRlcm4gaW50ICpf
X2hfZXJybm9fbG9jYXRpb24gKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKIyAx
MDUgIi91c3IvbG9jYWwvaW5jbHVkZS9uZXRkYi5oIiAzCmV4dGVybiB2b2lkIGhlcnJvciAoX19j
b25zdCBjaGFyICpfX3N0cikgOwoKCmV4dGVybiBfX2NvbnN0IGNoYXIgKmhzdHJlcnJvciAoaW50
IF9fZXJyX251bSkgOwoKCgoKc3RydWN0IGhvc3RlbnQKewogIGNoYXIgKmhfbmFtZTsKICBjaGFy
ICoqaF9hbGlhc2VzOwogIGludCBoX2FkZHJ0eXBlOwogIGludCBoX2xlbmd0aDsKICBjaGFyICoq
aF9hZGRyX2xpc3Q7Cgp9OwoKCgpleHRlcm4gdm9pZCBzZXRob3N0ZW50IChpbnQgX19zdGF5X29w
ZW4pIDsKCgpleHRlcm4gdm9pZCBlbmRob3N0ZW50ICh2b2lkKSA7CgoKCmV4dGVybiBzdHJ1Y3Qg
aG9zdGVudCAqZ2V0aG9zdGVudCAodm9pZCkgOwoKCgpleHRlcm4gc3RydWN0IGhvc3RlbnQgKmdl
dGhvc3RieWFkZHIgKF9fY29uc3Qgdm9pZCAqX19hZGRyLCBfX3NvY2tsZW5fdCBfX2xlbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX190eXBlKSA7CgoKZXh0ZXJu
IHN0cnVjdCBob3N0ZW50ICpnZXRob3N0YnluYW1lIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoK
CgoKCmV4dGVybiBzdHJ1Y3QgaG9zdGVudCAqZ2V0aG9zdGJ5bmFtZTIgKF9fY29uc3QgY2hhciAq
X19uYW1lLCBpbnQgX19hZikgOwoKCgoKCgpleHRlcm4gaW50IGdldGhvc3RlbnRfciAoc3RydWN0
IGhvc3RlbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAogICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuLAogICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IGhvc3RlbnQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9faF9lcnJub3ApIDsKCmV4dGVybiBp
bnQgZ2V0aG9zdGJ5YWRkcl9yIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19hZGRyLCBfX3Nv
Y2tsZW5fdCBfX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX3R5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaG9zdGVudCAqX19yZXN0cmljdCBfX3Jl
c3VsdF9idWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9f
YnVmLCBzaXplX3QgX19idWZsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
aG9zdGVudCAqKl9fcmVzdHJpY3QgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgKl9fcmVzdHJpY3QgX19oX2Vycm5vcCkgOwoKZXh0ZXJuIGludCBnZXRob3N0YnluYW1l
X3IgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3QgaG9zdGVudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZs
ZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaG9zdGVudCAqKl9fcmVzdHJp
Y3QgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3Qg
X19oX2Vycm5vcCkgOwoKZXh0ZXJuIGludCBnZXRob3N0YnluYW1lMl9yIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19uYW1lLCBpbnQgX19hZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3QgaG9zdGVudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBob3N0ZW50ICoqX19yZXN0cmljdCBf
X3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19o
X2Vycm5vcCkgOwoKCgoKCmV4dGVybiB2b2lkIHNldG5ldGVudCAoaW50IF9fc3RheV9vcGVuKSA7
CgoKZXh0ZXJuIHZvaWQgZW5kbmV0ZW50ICh2b2lkKSA7CgoKCmV4dGVybiBzdHJ1Y3QgbmV0ZW50
ICpnZXRuZXRlbnQgKHZvaWQpIDsKCgoKZXh0ZXJuIHN0cnVjdCBuZXRlbnQgKmdldG5ldGJ5YWRk
ciAodWludDMyX3QgX19uZXQsIGludCBfX3R5cGUpCiAgICAgOwoKCmV4dGVybiBzdHJ1Y3QgbmV0
ZW50ICpnZXRuZXRieW5hbWUgKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CgoKCgoKCgpleHRlcm4g
aW50IGdldG5ldGVudF9yIChzdHJ1Y3QgbmV0ZW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0X2J1ZiwK
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9f
YnVmbGVuLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbmV0ZW50ICoqX19yZXN0cmlj
dCBfX3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9faF9l
cnJub3ApIDsKCmV4dGVybiBpbnQgZ2V0bmV0YnlhZGRyX3IgKHVpbnQzMl90IF9fbmV0LCBpbnQg
X190eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbmV0ZW50ICpfX3Jlc3Ry
aWN0IF9fcmVzdWx0X2J1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0
cmljdCBfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3QgbmV0ZW50ICoqX19yZXN0cmljdCBfX3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50ICpfX3Jlc3RyaWN0IF9faF9lcnJub3ApIDsKCmV4dGVybiBpbnQgZ2V0bmV0Ynlu
YW1lX3IgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25hbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBuZXRlbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZs
ZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuZXRlbnQgKipfX3Jlc3RyaWN0
IF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19o
X2Vycm5vcCkgOwoKCgoKc3RydWN0IHNlcnZlbnQKewogIGNoYXIgKnNfbmFtZTsKICBjaGFyICoq
c19hbGlhc2VzOwogIGludCBzX3BvcnQ7CiAgY2hhciAqc19wcm90bzsKfTsKCgoKZXh0ZXJuIHZv
aWQgc2V0c2VydmVudCAoaW50IF9fc3RheV9vcGVuKSA7CgoKZXh0ZXJuIHZvaWQgZW5kc2VydmVu
dCAodm9pZCkgOwoKCgpleHRlcm4gc3RydWN0IHNlcnZlbnQgKmdldHNlcnZlbnQgKHZvaWQpIDsK
CgoKZXh0ZXJuIHN0cnVjdCBzZXJ2ZW50ICpnZXRzZXJ2YnluYW1lIChfX2NvbnN0IGNoYXIgKl9f
bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg
Kl9fcHJvdG8pIDsKCgoKZXh0ZXJuIHN0cnVjdCBzZXJ2ZW50ICpnZXRzZXJ2Ynlwb3J0IChpbnQg
X19wb3J0LCBfX2NvbnN0IGNoYXIgKl9fcHJvdG8pCiAgICAgOwoKCgoKCmV4dGVybiBpbnQgZ2V0
c2VydmVudF9yIChzdHJ1Y3Qgc2VydmVudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZs
ZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VydmVudCAqKl9fcmVzdHJpY3Qg
X19yZXN1bHQpIDsKCmV4dGVybiBpbnQgZ2V0c2VydmJ5bmFtZV9yIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fcHJvdG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
c2VydmVudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VydmVudCAqKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsK
CmV4dGVybiBpbnQgZ2V0c2VydmJ5cG9ydF9yIChpbnQgX19wb3J0LCBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19wcm90bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZXJ2
ZW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0X2J1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2J1ZmxlbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBzZXJ2ZW50ICoqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKCgoK
c3RydWN0IHByb3RvZW50CnsKICBjaGFyICpwX25hbWU7CiAgY2hhciAqKnBfYWxpYXNlczsKICBp
bnQgcF9wcm90bzsKfTsKCgoKZXh0ZXJuIHZvaWQgc2V0cHJvdG9lbnQgKGludCBfX3N0YXlfb3Bl
bikgOwoKCmV4dGVybiB2b2lkIGVuZHByb3RvZW50ICh2b2lkKSA7CgoKCmV4dGVybiBzdHJ1Y3Qg
cHJvdG9lbnQgKmdldHByb3RvZW50ICh2b2lkKSA7CgoKZXh0ZXJuIHN0cnVjdCBwcm90b2VudCAq
Z2V0cHJvdG9ieW5hbWUgKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CgoKZXh0ZXJuIHN0cnVjdCBw
cm90b2VudCAqZ2V0cHJvdG9ieW51bWJlciAoaW50IF9fcHJvdG8pIDsKCgoKCgpleHRlcm4gaW50
IGdldHByb3RvZW50X3IgKHN0cnVjdCBwcm90b2VudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90
IF9fYnVmbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwcm90b2VudCAqKl9f
cmVzdHJpY3QgX19yZXN1bHQpIDsKCmV4dGVybiBpbnQgZ2V0cHJvdG9ieW5hbWVfciAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3QgcHJvdG9lbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2J1ZmxlbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHJvdG9lbnQgKipfX3Jlc3RyaWN0IF9f
cmVzdWx0KSA7CgpleHRlcm4gaW50IGdldHByb3RvYnludW1iZXJfciAoaW50IF9fcHJvdG8sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHJvdG9lbnQgKl9fcmVzdHJpY3Qg
X19yZXN1bHRfYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0
cmljdCBfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IHByb3RvZW50ICoqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKCgoKZXh0ZXJuIGlu
dCBzZXRuZXRncmVudCAoX19jb25zdCBjaGFyICpfX25ldGdyb3VwKSA7CgoKZXh0ZXJuIHZvaWQg
ZW5kbmV0Z3JlbnQgKHZvaWQpIDsKCgoKZXh0ZXJuIGludCBnZXRuZXRncmVudCAoY2hhciAqKl9f
cmVzdHJpY3QgX19ob3N0cCwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJp
Y3QgX191c2VycCwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19k
b21haW5wKSA7CgoKCmV4dGVybiBpbnQgaW5uZXRnciAoX19jb25zdCBjaGFyICpfX25ldGdyb3Vw
LCBfX2NvbnN0IGNoYXIgKl9faG9zdCwKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg
Kl9fdXNlciwgX19jb25zdCBjaGFyICpkb21haW4pIDsKCgpleHRlcm4gaW50IGdldG5ldGdyZW50
X3IgKGNoYXIgKipfX3Jlc3RyaWN0IF9faG9zdHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX191c2VycCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICoqX19yZXN0cmljdCBfX2RvbWFpbnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq
X19yZXN0cmljdCBfX2J1ZmZlciwgc2l6ZV90IF9fYnVmbGVuKSA7CiMgMzUxICIvdXNyL2xvY2Fs
L2luY2x1ZGUvbmV0ZGIuaCIgMwpleHRlcm4gaW50IHJjbWQgKGNoYXIgKipfX3Jlc3RyaWN0IF9f
YWhvc3QsIHVuc2lnbmVkIHNob3J0IGludCBfX3Jwb3J0LAogICAgICAgICAgICAgICAgIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX2xvY3VzZXIsCiAgICAgICAgICAgICAgICAgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fcmVtdXNlciwKICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19jbWQsIGludCAqX19yZXN0cmljdCBfX2ZkMnApCiAgICAgOwoKCgpleHRl
cm4gaW50IHJjbWRfYWYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fYWhvc3QsIHVuc2lnbmVkIHNob3J0
IGludCBfX3Jwb3J0LAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2xvY3VzZXIsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fcmVtdXNlciwKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19jbWQsIGludCAqX19yZXN0cmljdCBfX2ZkMnAsCiAgICAgICAgICAgICAgICAgICAgc2FfZmFt
aWx5X3QgX19hZikgOwoKCgoKCgpleHRlcm4gaW50IHJleGVjIChjaGFyICoqX19yZXN0cmljdCBf
X2Fob3N0LCBpbnQgX19ycG9ydCwKICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbmFtZSwKICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fcGFzcywKICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fY21k
LCBpbnQgKl9fcmVzdHJpY3QgX19mZDJwKQogICAgIDsKCgoKZXh0ZXJuIGludCByZXhlY19hZiAo
Y2hhciAqKl9fcmVzdHJpY3QgX19haG9zdCwgaW50IF9fcnBvcnQsCiAgICAgICAgICAgICAgICAg
ICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25hbWUsCiAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Bhc3MsCiAgICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2NtZCwgaW50ICpfX3Jlc3RyaWN0IF9fZmQycCwKICAg
ICAgICAgICAgICAgICAgICAgc2FfZmFtaWx5X3QgX19hZikgOwoKCgoKZXh0ZXJuIGludCBydXNl
cm9rIChfX2NvbnN0IGNoYXIgKl9fcmhvc3QsIGludCBfX3N1c2VyLAogICAgICAgICAgICAgICAg
ICAgIF9fY29uc3QgY2hhciAqX19yZW11c2VyLCBfX2NvbnN0IGNoYXIgKl9fbG9jdXNlcikgOwoK
CgpleHRlcm4gaW50IHJ1c2Vyb2tfYWYgKF9fY29uc3QgY2hhciAqX19yaG9zdCwgaW50IF9fc3Vz
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3JlbXVzZXIsIF9fY29u
c3QgY2hhciAqX19sb2N1c2VyLAogICAgICAgICAgICAgICAgICAgICAgIHNhX2ZhbWlseV90IF9f
YWYpIDsKCgoKCmV4dGVybiBpbnQgcnJlc3Zwb3J0IChpbnQgKl9fYWxwb3J0KSA7CgoKCmV4dGVy
biBpbnQgcnJlc3Zwb3J0X2FmIChpbnQgKl9fYWxwb3J0LCBzYV9mYW1pbHlfdCBfX2FmKSA7CgoK
CgoKCnN0cnVjdCBhZGRyaW5mbwp7CiAgaW50IGFpX2ZsYWdzOwogIGludCBhaV9mYW1pbHk7CiAg
aW50IGFpX3NvY2t0eXBlOwogIGludCBhaV9wcm90b2NvbDsKICBzb2NrbGVuX3QgYWlfYWRkcmxl
bjsKICBzdHJ1Y3Qgc29ja2FkZHIgKmFpX2FkZHI7CiAgY2hhciAqYWlfY2Fub25uYW1lOwogIHN0
cnVjdCBhZGRyaW5mbyAqYWlfbmV4dDsKfTsKCgoKc3RydWN0IGdhaWNiCnsKICBjb25zdCBjaGFy
ICphcl9uYW1lOwogIGNvbnN0IGNoYXIgKmFyX3NlcnZpY2U7CiAgY29uc3Qgc3RydWN0IGFkZHJp
bmZvICphcl9yZXF1ZXN0OwogIHN0cnVjdCBhZGRyaW5mbyAqYXJfcmVzdWx0OwoKICBpbnQgX19y
ZXR1cm47CiAgaW50IF9fdW51c2VkWzVdOwp9OwojIDQ3NiAiL3Vzci9sb2NhbC9pbmNsdWRlL25l
dGRiLmgiIDMKZXh0ZXJuIGludCBnZXRhZGRyaW5mbyAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fc2VydmljZSwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3QgYWRkcmlu
Zm8gKl9fcmVzdHJpY3QgX19yZXEsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhZGRy
aW5mbyAqKl9fcmVzdHJpY3QgX19wYWkpIDsKCgpleHRlcm4gdm9pZCBmcmVlYWRkcmluZm8gKHN0
cnVjdCBhZGRyaW5mbyAqX19haSkgOwoKCmV4dGVybiBfX2NvbnN0IGNoYXIgKmdhaV9zdHJlcnJv
ciAoaW50IF9fZWNvZGUpIDsKCgpleHRlcm4gaW50IGdldG5hbWVpbmZvIChfX2NvbnN0IHN0cnVj
dCBzb2NrYWRkciAqX19yZXN0cmljdCBfX3NhLAogICAgICAgICAgICAgICAgICAgICAgICBzb2Nr
bGVuX3QgX19zYWxlbiwgY2hhciAqX19yZXN0cmljdCBfX2hvc3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgIHNvY2tsZW5fdCBfX2hvc3RsZW4sIGNoYXIgKl9fcmVzdHJpY3QgX19zZXJ2LAogICAg
ICAgICAgICAgICAgICAgICAgICBzb2NrbGVuX3QgX19zZXJ2bGVuLCB1bnNpZ25lZCBpbnQgX19m
bGFncykgOwoKCgoKCmV4dGVybiBpbnQgZ2V0YWRkcmluZm9fYSAoaW50IF9fbW9kZSwgc3RydWN0
IGdhaWNiICpfX2xpc3RbX19yZXN0cmljdF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IF9fZW50LCBzdHJ1Y3Qgc2lnZXZlbnQgKl9fcmVzdHJpY3QgX19zaWcpCiAgICAgOwoKCgoKZXh0
ZXJuIGludCBnYWlfc3VzcGVuZCAoX19jb25zdCBzdHJ1Y3QgZ2FpY2IgKl9fY29uc3QgX19saXN0
W10sIGludCBfX2VudCwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3QgdGlt
ZXNwZWMgKl9fdGltZW91dCkgOwoKCmV4dGVybiBpbnQgZ2FpX2Vycm9yIChzdHJ1Y3QgZ2FpY2Ig
Kl9fcmVxKSA7CgoKZXh0ZXJuIGludCBnYWlfY2FuY2VsIChzdHJ1Y3QgZ2FpY2IgKl9fZ2FpY2Jw
KSA7CgoKCgojIDIxMCAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgMSAiL3Vzci9sb2NhbC9pbmNs
dWRlL3N5c2xvZy5oIiAxIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL3N5c2xvZy5oIiAx
IDMKIyAxNjkgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc3lzbG9nLmgiIDMKCgoKZXh0ZXJuIHZv
aWQgY2xvc2Vsb2cgKHZvaWQpIDsKCgpleHRlcm4gdm9pZCBvcGVubG9nIChfX2NvbnN0IGNoYXIg
Kl9faWRlbnQsIGludCBfX29wdGlvbiwgaW50IF9fZmFjaWxpdHkpCiAgICAgOwoKCmV4dGVybiBp
bnQgc2V0bG9nbWFzayAoaW50IF9fbWFzaykgOwoKCmV4dGVybiB2b2lkIHN5c2xvZyAoaW50IF9f
cHJpLCBfX2NvbnN0IGNoYXIgKl9fZm10LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9y
bWF0X18oX19wcmludGZfXywgMiwgMykpKTsKCgoKZXh0ZXJuIHZvaWQgdnN5c2xvZyAoaW50IF9f
cHJpLCBfX2NvbnN0IGNoYXIgKl9fZm10LCBfX2dudWNfdmFfbGlzdCBfX2FwKQogICAgIF9fYXR0
cmlidXRlX18gKChfX2Zvcm1hdF9fKF9fcHJpbnRmX18sIDIsIDApKSk7CgoKCiMgMiAiL3Vzci9s
b2NhbC9pbmNsdWRlL3N5c2xvZy5oIiAyIDMKIyAyMTEgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgoj
IDEgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvZmlsZS5oIiAxIDMKIyAyOCAiL3Vzci9sb2NhbC9p
bmNsdWRlL3N5cy9maWxlLmgiIDMKCiMgNTEgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvZmlsZS5o
IiAzCmV4dGVybiBpbnQgZmxvY2sgKGludCBfX2ZkLCBpbnQgX19vcGVyYXRpb24pIDsKCgoKIyAy
MTIgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL25ldGlu
ZXQvdGNwLmgiIDEgMwojIDg5ICIvdXNyL2xvY2FsL2luY2x1ZGUvbmV0aW5ldC90Y3AuaCIgMwpz
dHJ1Y3QgdGNwaGRyCiAgewogICAgdV9pbnQxNl90IHNvdXJjZTsKICAgIHVfaW50MTZfdCBkZXN0
OwogICAgdV9pbnQzMl90IHNlcTsKICAgIHVfaW50MzJfdCBhY2tfc2VxOwoKICAgIHVfaW50MTZf
dCByZXMxOjQ7CiAgICB1X2ludDE2X3QgZG9mZjo0OwogICAgdV9pbnQxNl90IGZpbjoxOwogICAg
dV9pbnQxNl90IHN5bjoxOwogICAgdV9pbnQxNl90IHJzdDoxOwogICAgdV9pbnQxNl90IHBzaDox
OwogICAgdV9pbnQxNl90IGFjazoxOwogICAgdV9pbnQxNl90IHVyZzoxOwogICAgdV9pbnQxNl90
IHJlczI6MjsKIyAxMTggIi91c3IvbG9jYWwvaW5jbHVkZS9uZXRpbmV0L3RjcC5oIiAzCiAgICB1
X2ludDE2X3Qgd2luZG93OwogICAgdV9pbnQxNl90IGNoZWNrOwogICAgdV9pbnQxNl90IHVyZ19w
dHI7Cn07CgoKZW51bQp7CiAgVENQX0VTVEFCTElTSEVEID0gMSwKICBUQ1BfU1lOX1NFTlQsCiAg
VENQX1NZTl9SRUNWLAogIFRDUF9GSU5fV0FJVDEsCiAgVENQX0ZJTl9XQUlUMiwKICBUQ1BfVElN
RV9XQUlULAogIFRDUF9DTE9TRSwKICBUQ1BfQ0xPU0VfV0FJVCwKICBUQ1BfTEFTVF9BQ0ssCiAg
VENQX0xJU1RFTiwKICBUQ1BfQ0xPU0lORwp9OwojIDE3NiAiL3Vzci9sb2NhbC9pbmNsdWRlL25l
dGluZXQvdGNwLmgiIDMKZW51bSB0Y3BfY2Ffc3RhdGUKewogIFRDUF9DQV9PcGVuID0gMCwKICBU
Q1BfQ0FfRGlzb3JkZXIgPSAxLAogIFRDUF9DQV9DV1IgPSAyLAogIFRDUF9DQV9SZWNvdmVyeSA9
IDMsCiAgVENQX0NBX0xvc3MgPSA0Cn07CgpzdHJ1Y3QgdGNwX2luZm8KewogIHVfaW50OF90IHRj
cGlfc3RhdGU7CiAgdV9pbnQ4X3QgdGNwaV9jYV9zdGF0ZTsKICB1X2ludDhfdCB0Y3BpX3JldHJh
bnNtaXRzOwogIHVfaW50OF90IHRjcGlfcHJvYmVzOwogIHVfaW50OF90IHRjcGlfYmFja29mZjsK
ICB1X2ludDhfdCB0Y3BpX29wdGlvbnM7CiAgdV9pbnQ4X3QgdGNwaV9zbmRfd3NjYWxlIDogNCwg
dGNwaV9yY3Zfd3NjYWxlIDogNDsKCiAgdV9pbnQzMl90IHRjcGlfcnRvOwogIHVfaW50MzJfdCB0
Y3BpX2F0bzsKICB1X2ludDMyX3QgdGNwaV9zbmRfbXNzOwogIHVfaW50MzJfdCB0Y3BpX3Jjdl9t
c3M7CgogIHVfaW50MzJfdCB0Y3BpX3VuYWNrZWQ7CiAgdV9pbnQzMl90IHRjcGlfc2Fja2VkOwog
IHVfaW50MzJfdCB0Y3BpX2xvc3Q7CiAgdV9pbnQzMl90IHRjcGlfcmV0cmFuczsKICB1X2ludDMy
X3QgdGNwaV9mYWNrZXRzOwoKCiAgdV9pbnQzMl90IHRjcGlfbGFzdF9kYXRhX3NlbnQ7CiAgdV9p
bnQzMl90IHRjcGlfbGFzdF9hY2tfc2VudDsKICB1X2ludDMyX3QgdGNwaV9sYXN0X2RhdGFfcmVj
djsKICB1X2ludDMyX3QgdGNwaV9sYXN0X2Fja19yZWN2OwoKCiAgdV9pbnQzMl90IHRjcGlfcG10
dTsKICB1X2ludDMyX3QgdGNwaV9yY3Zfc3N0aHJlc2g7CiAgdV9pbnQzMl90IHRjcGlfcnR0Owog
IHVfaW50MzJfdCB0Y3BpX3J0dHZhcjsKICB1X2ludDMyX3QgdGNwaV9zbmRfc3N0aHJlc2g7CiAg
dV9pbnQzMl90IHRjcGlfc25kX2N3bmQ7CiAgdV9pbnQzMl90IHRjcGlfYWR2bXNzOwogIHVfaW50
MzJfdCB0Y3BpX3Jlb3JkZXJpbmc7Cn07CiMgMjE1ICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKIyAy
MjMgImluY2x1ZGUvaW5jbHVkZXMuaCIKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvbmV0aW5ldC9p
bl9zeXN0bS5oIiAxIDMKIyAyNiAiL3Vzci9sb2NhbC9pbmNsdWRlL25ldGluZXQvaW5fc3lzdG0u
aCIgMwoKIyAzNSAiL3Vzci9sb2NhbC9pbmNsdWRlL25ldGluZXQvaW5fc3lzdG0uaCIgMwp0eXBl
ZGVmIHVfaW50MTZfdCBuX3Nob3J0Owp0eXBlZGVmIHVfaW50MzJfdCBuX2xvbmc7CnR5cGVkZWYg
dV9pbnQzMl90IG5fdGltZTsKCgojIDIyNCAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCgoKCgoKCgoj
IDEgIi91c3IvbG9jYWwvaW5jbHVkZS9uZXRpbmV0L2lwLmgiIDEgMwojIDI3ICIvdXNyL2xvY2Fs
L2luY2x1ZGUvbmV0aW5ldC9pcC5oIiAzCgoKc3RydWN0IHRpbWVzdGFtcAogIHsKICAgIHVfaW50
OF90IGxlbjsKICAgIHVfaW50OF90IHB0cjsKCiAgICB1bnNpZ25lZCBpbnQgZmxhZ3M6NDsKICAg
IHVuc2lnbmVkIGludCBvdmVyZmxvdzo0OwoKCgoKCgogICAgdV9pbnQzMl90IGRhdGFbOV07CiAg
fTsKCnN0cnVjdCBpcGhkcgogIHsKCiAgICB1bnNpZ25lZCBpbnQgaWhsOjQ7CiAgICB1bnNpZ25l
ZCBpbnQgdmVyc2lvbjo0OwoKCgoKCgogICAgdV9pbnQ4X3QgdG9zOwogICAgdV9pbnQxNl90IHRv
dF9sZW47CiAgICB1X2ludDE2X3QgaWQ7CiAgICB1X2ludDE2X3QgZnJhZ19vZmY7CiAgICB1X2lu
dDhfdCB0dGw7CiAgICB1X2ludDhfdCBwcm90b2NvbDsKICAgIHVfaW50MTZfdCBjaGVjazsKICAg
IHVfaW50MzJfdCBzYWRkcjsKICAgIHVfaW50MzJfdCBkYWRkcjsKCiAgfTsKIyAxMDggIi91c3Iv
bG9jYWwvaW5jbHVkZS9uZXRpbmV0L2lwLmgiIDMKc3RydWN0IGlwCiAgewoKICAgIHVuc2lnbmVk
IGludCBpcF9obDo0OwogICAgdW5zaWduZWQgaW50IGlwX3Y6NDsKCgoKCgogICAgdV9pbnQ4X3Qg
aXBfdG9zOwogICAgdV9zaG9ydCBpcF9sZW47CiAgICB1X3Nob3J0IGlwX2lkOwogICAgdV9zaG9y
dCBpcF9vZmY7CgoKCgogICAgdV9pbnQ4X3QgaXBfdHRsOwogICAgdV9pbnQ4X3QgaXBfcDsKICAg
IHVfc2hvcnQgaXBfc3VtOwogICAgc3RydWN0IGluX2FkZHIgaXBfc3JjLCBpcF9kc3Q7CiAgfTsK
CgoKCnN0cnVjdCBpcF90aW1lc3RhbXAKICB7CiAgICB1X2ludDhfdCBpcHRfY29kZTsKICAgIHVf
aW50OF90IGlwdF9sZW47CiAgICB1X2ludDhfdCBpcHRfcHRyOwoKICAgIHVuc2lnbmVkIGludCBp
cHRfZmxnOjQ7CiAgICB1bnNpZ25lZCBpbnQgaXB0X29mbHc6NDsKCgoKCgogICAgdV9pbnQzMl90
IGRhdGFbOV07CiAgfTsKIyAyNDcgIi91c3IvbG9jYWwvaW5jbHVkZS9uZXRpbmV0L2lwLmgiIDMK
CiMgMjMyICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKCgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRl
L3Rlcm1pb3MuaCIgMSAzCiMgMzYgIi91c3IvbG9jYWwvaW5jbHVkZS90ZXJtaW9zLmgiIDMKCgoK
CiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvdGVybWlvcy5oIiAxIDMKIyAyNCAiL3Vzci9s
b2NhbC9pbmNsdWRlL2JpdHMvdGVybWlvcy5oIiAzCnR5cGVkZWYgdW5zaWduZWQgY2hhciBjY190
Owp0eXBlZGVmIHVuc2lnbmVkIGludCBzcGVlZF90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB0Y2Zs
YWdfdDsKCgpzdHJ1Y3QgdGVybWlvcwogIHsKICAgIHRjZmxhZ190IGNfaWZsYWc7CiAgICB0Y2Zs
YWdfdCBjX29mbGFnOwogICAgdGNmbGFnX3QgY19jZmxhZzsKICAgIHRjZmxhZ190IGNfbGZsYWc7
CiAgICBjY190IGNfbGluZTsKICAgIGNjX3QgY19jY1szMl07CiAgICBzcGVlZF90IGNfaXNwZWVk
OwogICAgc3BlZWRfdCBjX29zcGVlZDsKICB9OwojIDQxICIvdXNyL2xvY2FsL2luY2x1ZGUvdGVy
bWlvcy5oIiAyIDMKIyA0OSAiL3Vzci9sb2NhbC9pbmNsdWRlL3Rlcm1pb3MuaCIgMwpleHRlcm4g
c3BlZWRfdCBjZmdldG9zcGVlZCAoX19jb25zdCBzdHJ1Y3QgdGVybWlvcyAqX190ZXJtaW9zX3Ap
IDsKCgpleHRlcm4gc3BlZWRfdCBjZmdldGlzcGVlZCAoX19jb25zdCBzdHJ1Y3QgdGVybWlvcyAq
X190ZXJtaW9zX3ApIDsKCgpleHRlcm4gaW50IGNmc2V0b3NwZWVkIChzdHJ1Y3QgdGVybWlvcyAq
X190ZXJtaW9zX3AsIHNwZWVkX3QgX19zcGVlZCkgOwoKCmV4dGVybiBpbnQgY2ZzZXRpc3BlZWQg
KHN0cnVjdCB0ZXJtaW9zICpfX3Rlcm1pb3NfcCwgc3BlZWRfdCBfX3NwZWVkKSA7CgoKCmV4dGVy
biBpbnQgY2ZzZXRzcGVlZCAoc3RydWN0IHRlcm1pb3MgKl9fdGVybWlvc19wLCBzcGVlZF90IF9f
c3BlZWQpIDsKCgoKCmV4dGVybiBpbnQgdGNnZXRhdHRyIChpbnQgX19mZCwgc3RydWN0IHRlcm1p
b3MgKl9fdGVybWlvc19wKSA7CgoKCmV4dGVybiBpbnQgdGNzZXRhdHRyIChpbnQgX19mZCwgaW50
IF9fb3B0aW9uYWxfYWN0aW9ucywKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0
IHRlcm1pb3MgKl9fdGVybWlvc19wKSA7CgoKCgpleHRlcm4gdm9pZCBjZm1ha2VyYXcgKHN0cnVj
dCB0ZXJtaW9zICpfX3Rlcm1pb3NfcCkgOwoKCgpleHRlcm4gaW50IHRjc2VuZGJyZWFrIChpbnQg
X19mZCwgaW50IF9fZHVyYXRpb24pIDsKCgpleHRlcm4gaW50IHRjZHJhaW4gKGludCBfX2ZkKSA7
CgoKCmV4dGVybiBpbnQgdGNmbHVzaCAoaW50IF9fZmQsIGludCBfX3F1ZXVlX3NlbGVjdG9yKSA7
CgoKCmV4dGVybiBpbnQgdGNmbG93IChpbnQgX19mZCwgaW50IF9fYWN0aW9uKSA7CgoKCgpleHRl
cm4gX19waWRfdCB0Y2dldHNpZCAoaW50IF9fZmQpIDsKCgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNs
dWRlL3N5cy90dHlkZWZhdWx0cy5oIiAxIDMKIyAxMDMgIi91c3IvbG9jYWwvaW5jbHVkZS90ZXJt
aW9zLmgiIDIgMwoKCgojIDIzNyAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgMjQ2ICJpbmNsdWRl
L2luY2x1ZGVzLmgiCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2RpcmVudC5oIiAxIDMKIyAyOCAi
L3Vzci9sb2NhbC9pbmNsdWRlL2RpcmVudC5oIiAzCgojIDYyICIvdXNyL2xvY2FsL2luY2x1ZGUv
ZGlyZW50LmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9kaXJlbnQuaCIgMSAzCiMg
MjMgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL2RpcmVudC5oIiAzCnN0cnVjdCBkaXJlbnQKICB7
CgoKCgogICAgX19pbm82NF90IGRfaW5vOwogICAgX19vZmY2NF90IGRfb2ZmOwoKICAgIHVuc2ln
bmVkIHNob3J0IGludCBkX3JlY2xlbjsKICAgIHVuc2lnbmVkIGNoYXIgZF90eXBlOwogICAgY2hh
ciBkX25hbWVbMjU2XTsKICB9OwoKCnN0cnVjdCBkaXJlbnQ2NAogIHsKICAgIF9faW5vNjRfdCBk
X2lubzsKICAgIF9fb2ZmNjRfdCBkX29mZjsKICAgIHVuc2lnbmVkIHNob3J0IGludCBkX3JlY2xl
bjsKICAgIHVuc2lnbmVkIGNoYXIgZF90eXBlOwogICAgY2hhciBkX25hbWVbMjU2XTsKICB9Owoj
IDYzICIvdXNyL2xvY2FsL2luY2x1ZGUvZGlyZW50LmgiIDIgMwojIDk4ICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvZGlyZW50LmgiIDMKZW51bQogIHsKICAgIERUX1VOS05PV04gPSAwLAoKICAgIERUX0ZJ
Rk8gPSAxLAoKICAgIERUX0NIUiA9IDIsCgogICAgRFRfRElSID0gNCwKCiAgICBEVF9CTEsgPSA2
LAoKICAgIERUX1JFRyA9IDgsCgogICAgRFRfTE5LID0gMTAsCgogICAgRFRfU09DSyA9IDEyLAoK
ICAgIERUX1dIVCA9IDE0CgogIH07CiMgMTI4ICIvdXNyL2xvY2FsL2luY2x1ZGUvZGlyZW50Lmgi
IDMKdHlwZWRlZiBzdHJ1Y3QgX19kaXJzdHJlYW0gRElSOwoKCgpleHRlcm4gRElSICpvcGVuZGly
IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoKCgpleHRlcm4gaW50IGNsb3NlZGlyIChESVIgKl9f
ZGlycCkgOwojIDE0OSAiL3Vzci9sb2NhbC9pbmNsdWRlL2RpcmVudC5oIiAzCmV4dGVybiBzdHJ1
Y3QgZGlyZW50ICpyZWFkZGlyIChESVIgKl9fZGlycCkgX19hc21fXyAoIiIgInJlYWRkaXI2NCIp
OwoKCgoKCgpleHRlcm4gc3RydWN0IGRpcmVudDY0ICpyZWFkZGlyNjQgKERJUiAqX19kaXJwKSA7
CiMgMTY4ICIvdXNyL2xvY2FsL2luY2x1ZGUvZGlyZW50LmgiIDMKZXh0ZXJuIGludCByZWFkZGly
X3IgKERJUiAqX19yZXN0cmljdCBfX2RpcnAsIHN0cnVjdCBkaXJlbnQgKl9fcmVzdHJpY3QgX19l
bnRyeSwgc3RydWN0IGRpcmVudCAqKl9fcmVzdHJpY3QgX19yZXN1bHQpIF9fYXNtX18gKCIiICJy
ZWFkZGlyNjRfciIpOwojIDE3OSAiL3Vzci9sb2NhbC9pbmNsdWRlL2RpcmVudC5oIiAzCmV4dGVy
biBpbnQgcmVhZGRpcjY0X3IgKERJUiAqX19yZXN0cmljdCBfX2RpcnAsCiAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBkaXJlbnQ2NCAqX19yZXN0cmljdCBfX2VudHJ5LAogICAgICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3QgZGlyZW50NjQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgoK
CgpleHRlcm4gdm9pZCByZXdpbmRkaXIgKERJUiAqX19kaXJwKSA7CgoKCgoKZXh0ZXJuIHZvaWQg
c2Vla2RpciAoRElSICpfX2RpcnAsIGxvbmcgaW50IF9fcG9zKSA7CgoKZXh0ZXJuIGxvbmcgaW50
IHRlbGxkaXIgKERJUiAqX19kaXJwKSA7CgoKCgoKZXh0ZXJuIGludCBkaXJmZCAoRElSICpfX2Rp
cnApIDsKIyAyMjAgIi91c3IvbG9jYWwvaW5jbHVkZS9kaXJlbnQuaCIgMwojIDEgIi91c3IvbG9j
YWwvZ2NjLzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVm
LmgiIDEgMwojIDIyMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2RpcmVudC5oIiAyIDMKIyAyMzMgIi91
c3IvbG9jYWwvaW5jbHVkZS9kaXJlbnQuaCIgMwpleHRlcm4gaW50IHNjYW5kaXIgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2Rpciwgc3RydWN0IGRpcmVudCAqKipfX3Jlc3RyaWN0IF9fbmFt
ZWxpc3QsIGludCAoKl9fc2VsZWN0b3IpIChfX2NvbnN0IHN0cnVjdCBkaXJlbnQgKiksIGludCAo
Kl9fY21wKSAoX19jb25zdCB2b2lkICosIF9fY29uc3Qgdm9pZCAqKSkgX19hc21fXyAoIiIgInNj
YW5kaXI2NCIpOwojIDI0NyAiL3Vzci9sb2NhbC9pbmNsdWRlL2RpcmVudC5oIiAzCmV4dGVybiBp
bnQgc2NhbmRpcjY0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kaXIsCiAgICAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3QgZGlyZW50NjQgKioqX19yZXN0cmljdCBfX25hbWVsaXN0LAogICAg
ICAgICAgICAgICAgICAgICAgaW50ICgqX19zZWxlY3RvcikgKF9fY29uc3Qgc3RydWN0IGRpcmVu
dDY0ICopLAogICAgICAgICAgICAgICAgICAgICAgaW50ICgqX19jbXApIChfX2NvbnN0IHZvaWQg
KiwgX19jb25zdCB2b2lkICopKSA7CiMgMjU5ICIvdXNyL2xvY2FsL2luY2x1ZGUvZGlyZW50Lmgi
IDMKZXh0ZXJuIGludCBhbHBoYXNvcnQgKF9fY29uc3Qgdm9pZCAqX19lMSwgX19jb25zdCB2b2lk
ICpfX2UyKSBfX2FzbV9fICgiIiAiYWxwaGFzb3J0NjQiKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJl
X18pKTsKIyAyNjkgIi91c3IvbG9jYWwvaW5jbHVkZS9kaXJlbnQuaCIgMwpleHRlcm4gaW50IGFs
cGhhc29ydDY0IChfX2NvbnN0IHZvaWQgKl9fZTEsIF9fY29uc3Qgdm9pZCAqX19lMikKICAgICBf
X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKIyAyODAgIi91c3IvbG9jYWwvaW5jbHVkZS9kaXJl
bnQuaCIgMwpleHRlcm4gaW50IHZlcnNpb25zb3J0IChfX2NvbnN0IHZvaWQgKl9fZTEsIF9fY29u
c3Qgdm9pZCAqX19lMikgX19hc21fXyAoIiIgInZlcnNpb25zb3J0NjQiKSBfX2F0dHJpYnV0ZV9f
ICgoX19wdXJlX18pKTsKIyAyOTAgIi91c3IvbG9jYWwvaW5jbHVkZS9kaXJlbnQuaCIgMwpleHRl
cm4gaW50IHZlcnNpb25zb3J0NjQgKF9fY29uc3Qgdm9pZCAqX19lMSwgX19jb25zdCB2b2lkICpf
X2UyKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwojIDMwNSAiL3Vzci9sb2NhbC9p
bmNsdWRlL2RpcmVudC5oIiAzCmV4dGVybiBfX3NzaXplX3QgZ2V0ZGlyZW50cmllcyAoaW50IF9f
ZmQsIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX25ieXRlcywgX19vZmY2NF90ICpf
X3Jlc3RyaWN0IF9fYmFzZXApIF9fYXNtX18gKCIiICJnZXRkaXJlbnRyaWVzNjQiKTsKIyAzMTYg
Ii91c3IvbG9jYWwvaW5jbHVkZS9kaXJlbnQuaCIgMwpleHRlcm4gX19zc2l6ZV90IGdldGRpcmVu
dHJpZXM2NCAoaW50IF9fZmQsIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uYnl0ZXMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX29mZjY0X3QgKl9fcmVzdHJpY3QgX19iYXNlcCkgOwoKCgoKCiMgMjQ3
ICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKIyAyNjMgImluY2x1ZGUvaW5jbHVkZXMuaCIKIyAxICIv
dXNyL2xvY2FsL2luY2x1ZGUvc3lzL21tYW4uaCIgMSAzCiMgMjYgIi91c3IvbG9jYWwvaW5jbHVk
ZS9zeXMvbW1hbi5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MvMy9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMjcgIi91c3IvbG9jYWwvaW5j
bHVkZS9zeXMvbW1hbi5oIiAyIDMKIyA0MiAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9tbWFuLmgi
IDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9tbWFuLmgiIDEgMwojIDQzICIvdXNyL2xv
Y2FsL2luY2x1ZGUvc3lzL21tYW4uaCIgMiAzCgoKCgoKIyA2MiAiL3Vzci9sb2NhbC9pbmNsdWRl
L3N5cy9tbWFuLmgiIDMKZXh0ZXJuIHZvaWQgKiBtbWFwICh2b2lkICpfX2FkZHIsIHNpemVfdCBf
X2xlbiwgaW50IF9fcHJvdCwgaW50IF9fZmxhZ3MsIGludCBfX2ZkLCBfX29mZjY0X3QgX19vZmZz
ZXQpIF9fYXNtX18gKCIiICJtbWFwNjQiKTsKIyA3MSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9t
bWFuLmgiIDMKZXh0ZXJuIHZvaWQgKm1tYXA2NCAodm9pZCAqX19hZGRyLCBzaXplX3QgX19sZW4s
IGludCBfX3Byb3QsCiAgICAgICAgICAgICAgICAgICAgIGludCBfX2ZsYWdzLCBpbnQgX19mZCwg
X19vZmY2NF90IF9fb2Zmc2V0KSA7CgoKCgpleHRlcm4gaW50IG11bm1hcCAodm9pZCAqX19hZGRy
LCBzaXplX3QgX19sZW4pIDsKCgoKCmV4dGVybiBpbnQgbXByb3RlY3QgKHZvaWQgKl9fYWRkciwg
c2l6ZV90IF9fbGVuLCBpbnQgX19wcm90KSA7CgoKCgpleHRlcm4gaW50IG1zeW5jICh2b2lkICpf
X2FkZHIsIHNpemVfdCBfX2xlbiwgaW50IF9fZmxhZ3MpIDsKCgoKCmV4dGVybiBpbnQgbWFkdmlz
ZSAodm9pZCAqX19hZGRyLCBzaXplX3QgX19sZW4sIGludCBfX2FkdmljZSkgOwoKCgpleHRlcm4g
aW50IHBvc2l4X21hZHZpc2UgKHZvaWQgKl9fYWRkciwgc2l6ZV90IF9fbGVuLCBpbnQgX19hZHZp
Y2UpIDsKCgoKCmV4dGVybiBpbnQgbWxvY2sgKF9fY29uc3Qgdm9pZCAqX19hZGRyLCBzaXplX3Qg
X19sZW4pIDsKCgpleHRlcm4gaW50IG11bmxvY2sgKF9fY29uc3Qgdm9pZCAqX19hZGRyLCBzaXpl
X3QgX19sZW4pIDsKCgoKCmV4dGVybiBpbnQgbWxvY2thbGwgKGludCBfX2ZsYWdzKSA7CgoKCmV4
dGVybiBpbnQgbXVubG9ja2FsbCAodm9pZCkgOwoKCgoKCmV4dGVybiB2b2lkICptcmVtYXAgKHZv
aWQgKl9fYWRkciwgc2l6ZV90IF9fb2xkX2xlbiwgc2l6ZV90IF9fbmV3X2xlbiwKICAgICAgICAg
ICAgICAgICAgICAgaW50IF9fbWF5X21vdmUpIDsKCgoKCgoKZXh0ZXJuIGludCBtaW5jb3JlICh2
b2lkICpfX3N0YXJ0LCBzaXplX3QgX19sZW4sIHVuc2lnbmVkIGNoYXIgKl9fdmVjKTsKCgoKCmV4
dGVybiBpbnQgc2htX29wZW4gKF9fY29uc3QgY2hhciAqX19uYW1lLCBpbnQgX19vZmxhZywgbW9k
ZV90IF9fbW9kZSk7CgoKZXh0ZXJuIGludCBzaG1fdW5saW5rIChfX2NvbnN0IGNoYXIgKl9fbmFt
ZSk7CgoKIyAyNjQgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgoKCgojIDEgIi91c3IvbG9jYWwvaW5j
bHVkZS9uZXQvaWYuaCIgMSAzCiMgMzQgIi91c3IvbG9jYWwvaW5jbHVkZS9uZXQvaWYuaCIgMwpz
dHJ1Y3QgaWZfbmFtZWluZGV4CiAgewogICAgdW5zaWduZWQgaW50IGlmX2luZGV4OwogICAgY2hh
ciAqaWZfbmFtZTsKICB9OwoKCgoKZW51bQogIHsKICAgIElGRl9VUCA9IDB4MSwKCiAgICBJRkZf
QlJPQURDQVNUID0gMHgyLAoKICAgIElGRl9ERUJVRyA9IDB4NCwKCiAgICBJRkZfTE9PUEJBQ0sg
PSAweDgsCgogICAgSUZGX1BPSU5UT1BPSU5UID0gMHgxMCwKCiAgICBJRkZfTk9UUkFJTEVSUyA9
IDB4MjAsCgogICAgSUZGX1JVTk5JTkcgPSAweDQwLAoKICAgIElGRl9OT0FSUCA9IDB4ODAsCgog
ICAgSUZGX1BST01JU0MgPSAweDEwMCwKCgoKICAgIElGRl9BTExNVUxUSSA9IDB4MjAwLAoKCiAg
ICBJRkZfTUFTVEVSID0gMHg0MDAsCgogICAgSUZGX1NMQVZFID0gMHg4MDAsCgoKICAgIElGRl9N
VUxUSUNBU1QgPSAweDEwMDAsCgoKICAgIElGRl9QT1JUU0VMID0gMHgyMDAwLAoKICAgIElGRl9B
VVRPTUVESUEgPSAweDQwMDAKCiAgfTsKCgoKCgoKc3RydWN0IGlmYWRkcgogIHsKICAgIHN0cnVj
dCBzb2NrYWRkciBpZmFfYWRkcjsKICAgIHVuaW9uCiAgICAgIHsKICAgICAgICBzdHJ1Y3Qgc29j
a2FkZHIgaWZ1X2Jyb2FkYWRkcjsKICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgaWZ1X2RzdGFkZHI7
CiAgICAgIH0gaWZhX2lmdTsKICAgIHN0cnVjdCBpZmFjZSAqaWZhX2lmcDsKICAgIHN0cnVjdCBp
ZmFkZHIgKmlmYV9uZXh0OwogIH07CiMgMTEwICIvdXNyL2xvY2FsL2luY2x1ZGUvbmV0L2lmLmgi
IDMKc3RydWN0IGlmbWFwCiAgewogICAgdW5zaWduZWQgbG9uZyBpbnQgbWVtX3N0YXJ0OwogICAg
dW5zaWduZWQgbG9uZyBpbnQgbWVtX2VuZDsKICAgIHVuc2lnbmVkIHNob3J0IGludCBiYXNlX2Fk
ZHI7CiAgICB1bnNpZ25lZCBjaGFyIGlycTsKICAgIHVuc2lnbmVkIGNoYXIgZG1hOwogICAgdW5z
aWduZWQgY2hhciBwb3J0OwoKICB9OwoKCgoKCnN0cnVjdCBpZnJlcQogIHsKCgogICAgdW5pb24K
ICAgICAgewogICAgICAgIGNoYXIgaWZybl9uYW1lWzE2XTsKICAgICAgfSBpZnJfaWZybjsKCiAg
ICB1bmlvbgogICAgICB7CiAgICAgICAgc3RydWN0IHNvY2thZGRyIGlmcnVfYWRkcjsKICAgICAg
ICBzdHJ1Y3Qgc29ja2FkZHIgaWZydV9kc3RhZGRyOwogICAgICAgIHN0cnVjdCBzb2NrYWRkciBp
ZnJ1X2Jyb2FkYWRkcjsKICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgaWZydV9uZXRtYXNrOwogICAg
ICAgIHN0cnVjdCBzb2NrYWRkciBpZnJ1X2h3YWRkcjsKICAgICAgICBzaG9ydCBpbnQgaWZydV9m
bGFnczsKICAgICAgICBpbnQgaWZydV9pdmFsdWU7CiAgICAgICAgaW50IGlmcnVfbXR1OwogICAg
ICAgIHN0cnVjdCBpZm1hcCBpZnJ1X21hcDsKICAgICAgICBjaGFyIGlmcnVfc2xhdmVbMTZdOwog
ICAgICAgIGNoYXIgaWZydV9uZXduYW1lWzE2XTsKICAgICAgICBfX2NhZGRyX3QgaWZydV9kYXRh
OwogICAgICB9IGlmcl9pZnJ1OwogIH07CiMgMTc1ICIvdXNyL2xvY2FsL2luY2x1ZGUvbmV0L2lm
LmgiIDMKc3RydWN0IGlmY29uZgogIHsKICAgIGludCBpZmNfbGVuOwogICAgdW5pb24KICAgICAg
ewogICAgICAgIF9fY2FkZHJfdCBpZmN1X2J1ZjsKICAgICAgICBzdHJ1Y3QgaWZyZXEgKmlmY3Vf
cmVxOwogICAgICB9IGlmY19pZmN1OwogIH07CgoKCgoKCgoKZXh0ZXJuIHVuc2lnbmVkIGludCBp
Zl9uYW1ldG9pbmRleCAoX19jb25zdCBjaGFyICpfX2lmbmFtZSkgOwpleHRlcm4gY2hhciAqaWZf
aW5kZXh0b25hbWUgKHVuc2lnbmVkIGludCBfX2lmaW5kZXgsIGNoYXIgKl9faWZuYW1lKSA7CgoK
ZXh0ZXJuIHN0cnVjdCBpZl9uYW1laW5kZXggKmlmX25hbWVpbmRleCAodm9pZCkgOwoKCmV4dGVy
biB2b2lkIGlmX2ZyZWVuYW1laW5kZXggKHN0cnVjdCBpZl9uYW1laW5kZXggKl9fcHRyKSA7CgoK
IyAyNjggImluY2x1ZGUvaW5jbHVkZXMuaCIgMgoKCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUv
c3lzL21vdW50LmgiIDEgMwojIDM0ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lzL21vdW50LmgiIDMK
ZW51bQp7CiAgTVNfUkRPTkxZID0gMSwKCiAgTVNfTk9TVUlEID0gMiwKCiAgTVNfTk9ERVYgPSA0
LAoKICBNU19OT0VYRUMgPSA4LAoKICBNU19TWU5DSFJPTk9VUyA9IDE2LAoKICBNU19SRU1PVU5U
ID0gMzIsCgogIE1TX01BTkRMT0NLID0gNjQsCgogIFNfV1JJVEUgPSAxMjgsCgogIFNfQVBQRU5E
ID0gMjU2LAoKICBTX0lNTVVUQUJMRSA9IDUxMiwKCiAgTVNfTk9BVElNRSA9IDEwMjQsCgogIE1T
X05PRElSQVRJTUUgPSAyMDQ4LAoKICBNU19CSU5EID0gNDA5NiwKCn07CiMgODggIi91c3IvbG9j
YWwvaW5jbHVkZS9zeXMvbW91bnQuaCIgMwplbnVtCnsKICBNTlRfRk9SQ0UgPSAxCgp9OwoKCgoK
CmV4dGVybiBpbnQgbW91bnQgKF9fY29uc3QgY2hhciAqX19zcGVjaWFsX2ZpbGUsIF9fY29uc3Qg
Y2hhciAqX19kaXIsCiAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19mc3R5cGUsIHVu
c2lnbmVkIGxvbmcgaW50IF9fcndmbGFnLAogICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQg
Kl9fZGF0YSkgOwoKCmV4dGVybiBpbnQgdW1vdW50IChfX2NvbnN0IGNoYXIgKl9fc3BlY2lhbF9m
aWxlKSA7CgoKZXh0ZXJuIGludCB1bW91bnQyIChfX2NvbnN0IGNoYXIgKl9fc3BlY2lhbF9maWxl
LCBpbnQgX19mbGFncykgOwoKCiMgMjczICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKCgoKIyAxICIv
dXNyL2xvY2FsL2luY2x1ZGUvc3lzL3Zmcy5oIiAxIDMKCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1
ZGUvc3lzL3N0YXRmcy5oIiAxIDMKIyAyNiAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zdGF0ZnMu
aCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3N0YXRmcy5oIiAxIDMKIyAyNSAiL3Vz
ci9sb2NhbC9pbmNsdWRlL2JpdHMvc3RhdGZzLmgiIDMKc3RydWN0IHN0YXRmcwogIHsKICAgIGlu
dCBmX3R5cGU7CiAgICBpbnQgZl9ic2l6ZTsKCgoKCgoKCiAgICBfX2ZzYmxrY250NjRfdCBmX2Js
b2NrczsKICAgIF9fZnNibGtjbnQ2NF90IGZfYmZyZWU7CiAgICBfX2ZzYmxrY250NjRfdCBmX2Jh
dmFpbDsKICAgIF9fZnNmaWxjbnQ2NF90IGZfZmlsZXM7CiAgICBfX2ZzZmlsY250NjRfdCBmX2Zm
cmVlOwoKICAgIF9fZnNpZF90IGZfZnNpZDsKICAgIGludCBmX25hbWVsZW47CiAgICBpbnQgZl9z
cGFyZVs2XTsKICB9OwoKCnN0cnVjdCBzdGF0ZnM2NAogIHsKICAgIGludCBmX3R5cGU7CiAgICBp
bnQgZl9ic2l6ZTsKICAgIF9fZnNibGtjbnQ2NF90IGZfYmxvY2tzOwogICAgX19mc2Jsa2NudDY0
X3QgZl9iZnJlZTsKICAgIF9fZnNibGtjbnQ2NF90IGZfYmF2YWlsOwogICAgX19mc2ZpbGNudDY0
X3QgZl9maWxlczsKICAgIF9fZnNmaWxjbnQ2NF90IGZfZmZyZWU7CiAgICBfX2ZzaWRfdCBmX2Zz
aWQ7CiAgICBpbnQgZl9uYW1lbGVuOwogICAgaW50IGZfc3BhcmVbNl07CiAgfTsKIyAyNyAiL3Vz
ci9sb2NhbC9pbmNsdWRlL3N5cy9zdGF0ZnMuaCIgMiAzCgoKCgoKCgoKZXh0ZXJuIGludCBzdGF0
ZnMgKF9fY29uc3QgY2hhciAqX19maWxlLCBzdHJ1Y3Qgc3RhdGZzICpfX2J1ZikgX19hc21fXyAo
IiIgInN0YXRmczY0Iik7CgoKCgoKCgpleHRlcm4gaW50IHN0YXRmczY0IChfX2NvbnN0IGNoYXIg
Kl9fZmlsZSwgc3RydWN0IHN0YXRmczY0ICpfX2J1ZikgOwojIDUyICIvdXNyL2xvY2FsL2luY2x1
ZGUvc3lzL3N0YXRmcy5oIiAzCmV4dGVybiBpbnQgZnN0YXRmcyAoaW50IF9fZmlsZGVzLCBzdHJ1
Y3Qgc3RhdGZzICpfX2J1ZikgX19hc21fXyAoIiIgImZzdGF0ZnM2NCIpOwoKCgoKCgpleHRlcm4g
aW50IGZzdGF0ZnM2NCAoaW50IF9fZmlsZGVzLCBzdHJ1Y3Qgc3RhdGZzNjQgKl9fYnVmKSA7CgoK
CiMgNSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy92ZnMuaCIgMiAzCiMgMjc3ICJpbmNsdWRlL2lu
Y2x1ZGVzLmgiIDIKIyAzMDAgImluY2x1ZGUvaW5jbHVkZXMuaCIKIyAxICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvc3lzL3N0YXR2ZnMuaCIgMSAzCiMgMjYgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc3Rh
dHZmcy5oIiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc3RhdHZmcy5oIiAxIDMKIyAy
NSAiL3Vzci9sb2NhbC9pbmNsdWRlL2JpdHMvc3RhdHZmcy5oIiAzCnN0cnVjdCBzdGF0dmZzCiAg
ewogICAgdW5zaWduZWQgbG9uZyBpbnQgZl9ic2l6ZTsKICAgIHVuc2lnbmVkIGxvbmcgaW50IGZf
ZnJzaXplOwojIDM3ICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zdGF0dmZzLmgiIDMKICAgIF9f
ZnNibGtjbnQ2NF90IGZfYmxvY2tzOwogICAgX19mc2Jsa2NudDY0X3QgZl9iZnJlZTsKICAgIF9f
ZnNibGtjbnQ2NF90IGZfYmF2YWlsOwogICAgX19mc2ZpbGNudDY0X3QgZl9maWxlczsKICAgIF9f
ZnNmaWxjbnQ2NF90IGZfZmZyZWU7CiAgICBfX2ZzZmlsY250NjRfdCBmX2ZhdmFpbDsKCiAgICB1
bnNpZ25lZCBsb25nIGludCBmX2ZzaWQ7CiAgICBpbnQgX19mX3VudXNlZDsKICAgIHVuc2lnbmVk
IGxvbmcgaW50IGZfZmxhZzsKICAgIHVuc2lnbmVkIGxvbmcgaW50IGZfbmFtZW1heDsKICAgIGlu
dCBfX2Zfc3BhcmVbNl07CiAgfTsKCgoKc3RydWN0IHN0YXR2ZnM2NAogIHsKICAgIHVuc2lnbmVk
IGxvbmcgaW50IGZfYnNpemU7CiAgICB1bnNpZ25lZCBsb25nIGludCBmX2Zyc2l6ZTsKICAgIF9f
ZnNibGtjbnQ2NF90IGZfYmxvY2tzOwogICAgX19mc2Jsa2NudDY0X3QgZl9iZnJlZTsKICAgIF9f
ZnNibGtjbnQ2NF90IGZfYmF2YWlsOwogICAgX19mc2ZpbGNudDY0X3QgZl9maWxlczsKICAgIF9f
ZnNmaWxjbnQ2NF90IGZfZmZyZWU7CiAgICBfX2ZzZmlsY250NjRfdCBmX2ZhdmFpbDsKICAgIHVu
c2lnbmVkIGxvbmcgaW50IGZfZnNpZDsKICAgIGludCBfX2ZfdW51c2VkOwogICAgdW5zaWduZWQg
bG9uZyBpbnQgZl9mbGFnOwogICAgdW5zaWduZWQgbG9uZyBpbnQgZl9uYW1lbWF4OwogICAgaW50
IF9fZl9zcGFyZVs2XTsKICB9OwoKCgoKZW51bQp7CiAgU1RfUkRPTkxZID0gMSwKCiAgU1RfTk9T
VUlEID0gMiwKCgogIFNUX05PREVWID0gNCwKCiAgU1RfTk9FWEVDID0gOCwKCiAgU1RfU1lOQ0hS
T05PVVMgPSAxNiwKCiAgU1RfTUFORExPQ0sgPSA2NCwKCiAgU1RfV1JJVEUgPSAxMjgsCgogIFNU
X0FQUEVORCA9IDI1NiwKCiAgU1RfSU1NVVRBQkxFID0gNTEyLAoKICBTVF9OT0FUSU1FID0gMTAy
NCwKCiAgU1RfTk9ESVJBVElNRQoKCn07CiMgMjcgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc3Rh
dHZmcy5oIiAyIDMKIyA0OCAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zdGF0dmZzLmgiIDMKCgoK
CgoKCgpleHRlcm4gaW50IHN0YXR2ZnMgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGUs
IHN0cnVjdCBzdGF0dmZzICpfX3Jlc3RyaWN0IF9fYnVmKSBfX2FzbV9fICgiIiAic3RhdHZmczY0
Iik7CiMgNjUgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc3RhdHZmcy5oIiAzCmV4dGVybiBpbnQg
c3RhdHZmczY0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlLAogICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IHN0YXR2ZnM2NCAqX19yZXN0cmljdCBfX2J1ZikgOwojIDc1ICIvdXNy
L2xvY2FsL2luY2x1ZGUvc3lzL3N0YXR2ZnMuaCIgMwpleHRlcm4gaW50IGZzdGF0dmZzIChpbnQg
X19maWxkZXMsIHN0cnVjdCBzdGF0dmZzICpfX2J1ZikgX19hc21fXyAoIiIgImZzdGF0dmZzNjQi
KTsKCgoKCgoKZXh0ZXJuIGludCBmc3RhdHZmczY0IChpbnQgX19maWxkZXMsIHN0cnVjdCBzdGF0
dmZzNjQgKl9fYnVmKSA7CgoKCiMgMzAxICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKCgoKIyAxICIv
dXNyL2xvY2FsL2luY2x1ZGUvc2hhZG93LmgiIDEgMwojIDI2ICIvdXNyL2xvY2FsL2luY2x1ZGUv
c2hhZG93LmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvcGF0aHMuaCIgMSAzCiMgMjcgIi91
c3IvbG9jYWwvaW5jbHVkZS9zaGFkb3cuaCIgMiAzCgoKCgojIDEgIi91c3IvbG9jYWwvZ2NjLzMv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoj
IDMyICIvdXNyL2xvY2FsL2luY2x1ZGUvc2hhZG93LmgiIDIgMwoKCgoKCgoKCnN0cnVjdCBzcHdk
CiAgewogICAgY2hhciAqc3BfbmFtcDsKICAgIGNoYXIgKnNwX3B3ZHA7CiAgICBsb25nIGludCBz
cF9sc3RjaGc7CiAgICBsb25nIGludCBzcF9taW47CiAgICBsb25nIGludCBzcF9tYXg7CiAgICBs
b25nIGludCBzcF93YXJuOwoKICAgIGxvbmcgaW50IHNwX2luYWN0OwoKICAgIGxvbmcgaW50IHNw
X2V4cGlyZTsKCiAgICB1bnNpZ25lZCBsb25nIGludCBzcF9mbGFnOwogIH07CgoKCmV4dGVybiB2
b2lkIHNldHNwZW50ICh2b2lkKSA7CgoKZXh0ZXJuIHZvaWQgZW5kc3BlbnQgKHZvaWQpIDsKCgpl
eHRlcm4gc3RydWN0IHNwd2QgKmdldHNwZW50ICh2b2lkKSA7CgoKZXh0ZXJuIHN0cnVjdCBzcHdk
ICpnZXRzcG5hbSAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgpleHRlcm4gc3RydWN0IHNwd2Qg
KnNnZXRzcGVudCAoX19jb25zdCBjaGFyICpfX3N0cmluZykgOwoKCmV4dGVybiBzdHJ1Y3Qgc3B3
ZCAqZmdldHNwZW50IChGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiBpbnQgcHV0c3BlbnQgKF9f
Y29uc3Qgc3RydWN0IHNwd2QgKl9fcCwgRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQg
Z2V0c3BlbnRfciAoc3RydWN0IHNwd2QgKl9fcmVzdWx0X2J1ZiwgY2hhciAqX19idWZmZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fYnVmbGVuLCBzdHJ1Y3Qgc3B3ZCAqKl9fcmVz
dWx0KSA7CgpleHRlcm4gaW50IGdldHNwbmFtX3IgKF9fY29uc3QgY2hhciAqX19uYW1lLCBzdHJ1
Y3Qgc3B3ZCAqX19yZXN1bHRfYnVmLAogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fYnVm
ZmVyLCBzaXplX3QgX19idWZsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNwd2Qg
KipfX3Jlc3VsdCk7CgpleHRlcm4gaW50IHNnZXRzcGVudF9yIChfX2NvbnN0IGNoYXIgKl9fc3Ry
aW5nLCBzdHJ1Y3Qgc3B3ZCAqX19yZXN1bHRfYnVmLAogICAgICAgICAgICAgICAgICAgICAgICBj
aGFyICpfX2J1ZmZlciwgc2l6ZV90IF9fYnVmbGVuLAogICAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3Qgc3B3ZCAqKl9fcmVzdWx0KSA7CgpleHRlcm4gaW50IGZnZXRzcGVudF9yIChGSUxFICpf
X3N0cmVhbSwgc3RydWN0IHNwd2QgKl9fcmVzdWx0X2J1ZiwKICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqX19idWZmZXIsIHNpemVfdCBfX2J1ZmxlbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IHNwd2QgKipfX3Jlc3VsdCkgOwoKCgpleHRlcm4gaW50IGxja3B3ZGYgKHZvaWQp
IDsKCgpleHRlcm4gaW50IHVsY2twd2RmICh2b2lkKSA7CgoKIyAzMDUgImluY2x1ZGUvaW5jbHVk
ZXMuaCIgMgojIDMyNCAiaW5jbHVkZS9pbmNsdWRlcy5oIgojIDEgIi91c3IvbG9jYWwvaW5jbHVk
ZS9zdHJvcHRzLmgiIDEgMwojIDM1ICIvdXNyL2xvY2FsL2luY2x1ZGUvc3Ryb3B0cy5oIiAzCnR5
cGVkZWYgX190X3VzY2FsYXJfdCB0X3VzY2FsYXJfdDsKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVk
ZS9iaXRzL3N0cm9wdHMuaCIgMSAzCiMgMTcwICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zdHJv
cHRzLmgiIDMKc3RydWN0IGJhbmRpbmZvCiAgewogICAgdW5zaWduZWQgY2hhciBiaV9wcmk7CiAg
ICBpbnQgYmlfZmxhZzsKICB9OwoKc3RydWN0IHN0cmJ1ZgogIHsKICAgIGludCBtYXhsZW47CiAg
ICBpbnQgbGVuOwogICAgY2hhciAqYnVmOwogIH07CgpzdHJ1Y3Qgc3RycGVlawogIHsKICAgIHN0
cnVjdCBzdHJidWYgY3RsYnVmOwogICAgc3RydWN0IHN0cmJ1ZiBkYXRhYnVmOwogICAgdF91c2Nh
bGFyX3QgZmxhZ3M7CiAgfTsKCnN0cnVjdCBzdHJmZGluc2VydAogIHsKICAgIHN0cnVjdCBzdHJi
dWYgY3RsYnVmOwogICAgc3RydWN0IHN0cmJ1ZiBkYXRhYnVmOwogICAgdF91c2NhbGFyX3QgZmxh
Z3M7CiAgICBpbnQgZmlsZGVzOwogICAgaW50IG9mZnNldDsKICB9OwoKc3RydWN0IHN0cmlvY3Rs
CiAgewogICAgaW50IGljX2NtZDsKICAgIGludCBpY190aW1vdXQ7CiAgICBpbnQgaWNfbGVuOwog
ICAgY2hhciAqaWNfZHA7CiAgfTsKCnN0cnVjdCBzdHJyZWN2ZmQKICB7CiAgICBpbnQgZmQ7CiAg
ICB1aWRfdCB1aWQ7CiAgICBnaWRfdCBnaWQ7CiAgICBjaGFyIF9fZmlsbFs4XTsKICB9OwoKCnN0
cnVjdCBzdHJfbWxpc3QKICB7CiAgICBjaGFyIGxfbmFtZVs4ICsgMV07CiAgfTsKCnN0cnVjdCBz
dHJfbGlzdAogIHsKICAgIGludCBzbF9ubW9kczsKICAgIHN0cnVjdCBzdHJfbWxpc3QgKnNsX21v
ZGxpc3Q7CiAgfTsKIyAzOSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N0cm9wdHMuaCIgMiAzCgoKCgoK
ZXh0ZXJuIGludCBpc2FzdHJlYW0gKGludCBfX2ZpbGRlcykgOwoKCmV4dGVybiBpbnQgZ2V0bXNn
IChpbnQgX19maWxkZXMsIHN0cnVjdCBzdHJidWYgKl9fcmVzdHJpY3QgX19jdGxwdHIsCiAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3Qgc3RyYnVmICpfX3Jlc3RyaWN0IF9fZGF0YXB0ciwKICAgICAg
ICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX2ZsYWdzcCkgOwoKCgpleHRlcm4gaW50IGdl
dHBtc2cgKGludCBfX2ZpbGRlcywgc3RydWN0IHN0cmJ1ZiAqX19yZXN0cmljdCBfX2N0bHB0ciwK
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RyYnVmICpfX3Jlc3RyaWN0IF9fZGF0YXB0ciwK
ICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19iYW5kcCwgaW50ICpfX3Jlc3Ry
aWN0IF9fZmxhZ3NwKQogICAgIDsKCgoKCmV4dGVybiBpbnQgaW9jdGwgKGludCBfX2ZkLCB1bnNp
Z25lZCBsb25nIGludCBfX3JlcXVlc3QsIC4uLikgOwoKCmV4dGVybiBpbnQgcHV0bXNnIChpbnQg
X19maWxkZXMsIF9fY29uc3Qgc3RydWN0IHN0cmJ1ZiAqX19jdGxwdHIsCiAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IHN0cnVjdCBzdHJidWYgKl9fZGF0YXB0ciwgaW50IF9fZmxhZ3MpIDsKCgpl
eHRlcm4gaW50IHB1dHBtc2cgKGludCBfX2ZpbGRlcywgX19jb25zdCBzdHJ1Y3Qgc3RyYnVmICpf
X2N0bHB0ciwKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHN0cnVjdCBzdHJidWYgKl9fZGF0
YXB0ciwgaW50IF9fYmFuZCwgaW50IF9fZmxhZ3MpCiAgICAgOwoKCgpleHRlcm4gaW50IGZhdHRh
Y2ggKGludCBfX2ZpbGRlcywgX19jb25zdCBjaGFyICpfX3BhdGgpIDsKCgpleHRlcm4gaW50IGZk
ZXRhY2ggKF9fY29uc3QgY2hhciAqX19wYXRoKSA7CgoKIyAzMjUgImluY2x1ZGUvaW5jbHVkZXMu
aCIgMgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9wb2xsLmgiIDEgMwojIDEgIi91c3IvbG9j
YWwvaW5jbHVkZS9zeXMvcG9sbC5oIiAxIDMKIyAyNiAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9w
b2xsLmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9wb2xsLmgiIDEgMwojIDI3ICIv
dXNyL2xvY2FsL2luY2x1ZGUvc3lzL3BvbGwuaCIgMiAzCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9u
ZyBpbnQgbmZkc190OwoKCnN0cnVjdCBwb2xsZmQKICB7CiAgICBpbnQgZmQ7CiAgICBzaG9ydCBp
bnQgZXZlbnRzOwogICAgc2hvcnQgaW50IHJldmVudHM7CiAgfTsKCgoKCgoKCgoKZXh0ZXJuIGlu
dCBwb2xsIChzdHJ1Y3QgcG9sbGZkICpfX2ZkcywgbmZkc190IF9fbmZkcywgaW50IF9fdGltZW91
dCkgOwoKCiMgMiAiL3Vzci9sb2NhbC9pbmNsdWRlL3BvbGwuaCIgMiAzCiMgMzI5ICJpbmNsdWRl
L2luY2x1ZGVzLmgiIDIKIyAzNTQgImluY2x1ZGUvaW5jbHVkZXMuaCIKIyAxICIvdXNyL2xvY2Fs
L2luY2x1ZGUvcnBjL3JwYy5oIiAxIDMKIyA0MSAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwYy9ycGMu
aCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMvdHlwZXMuaCIgMSAzCiMgMzYgIi91c3Iv
bG9jYWwvaW5jbHVkZS9ycGMvdHlwZXMuaCIgMwp0eXBlZGVmIGludCBib29sX3Q7CnR5cGVkZWYg
aW50IGVudW1fdDsKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBycGNwcm9nX3Q7CnR5cGVkZWYgdW5z
aWduZWQgbG9uZyBycGN2ZXJzX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBycGNwcm9jX3Q7CnR5
cGVkZWYgdW5zaWduZWQgbG9uZyBycGNwcm90X3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBycGNw
b3J0X3Q7CiMgNDIgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMvcnBjLmgiIDIgMwoKCgojIDEgIi91
c3IvbG9jYWwvaW5jbHVkZS9ycGMveGRyLmgiIDEgMwojIDQ2ICIvdXNyL2xvY2FsL2luY2x1ZGUv
cnBjL3hkci5oIiAzCgojIDgzICIvdXNyL2xvY2FsL2luY2x1ZGUvcnBjL3hkci5oIiAzCmVudW0g
eGRyX29wIHsKICBYRFJfRU5DT0RFID0gMCwKICBYRFJfREVDT0RFID0gMSwKICBYRFJfRlJFRSA9
IDIKfTsKIyAxMTEgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMveGRyLmgiIDMKdHlwZWRlZiBzdHJ1
Y3QgWERSIFhEUjsKc3RydWN0IFhEUgogIHsKICAgIGVudW0geGRyX29wIHhfb3A7CiAgICBzdHJ1
Y3QgeGRyX29wcwogICAgICB7CiAgICAgICAgYm9vbF90ICgqeF9nZXRsb25nKSAoWERSICpfX3hk
cnMsIGxvbmcgKl9fbHApOwoKICAgICAgICBib29sX3QgKCp4X3B1dGxvbmcpIChYRFIgKl9feGRy
cywgX19jb25zdCBsb25nICpfX2xwKTsKCiAgICAgICAgYm9vbF90ICgqeF9nZXRieXRlcykgKFhE
UiAqX194ZHJzLCBjYWRkcl90IF9fYWRkciwgdV9pbnQgX19sZW4pOwoKICAgICAgICBib29sX3Qg
KCp4X3B1dGJ5dGVzKSAoWERSICpfX3hkcnMsIF9fY29uc3QgY2hhciAqX19hZGRyLCB1X2ludCBf
X2xlbik7CgogICAgICAgIHVfaW50ICgqeF9nZXRwb3N0bikgKF9fY29uc3QgWERSICpfX3hkcnMp
OwoKICAgICAgICBib29sX3QgKCp4X3NldHBvc3RuKSAoWERSICpfX3hkcnMsIHVfaW50IF9fcG9z
KTsKCiAgICAgICAgaW50MzJfdCAqKCp4X2lubGluZSkgKFhEUiAqX194ZHJzLCBpbnQgX19sZW4p
OwoKICAgICAgICB2b2lkICgqeF9kZXN0cm95KSAoWERSICpfX3hkcnMpOwoKICAgICAgICBib29s
X3QgKCp4X2dldGludDMyKSAoWERSICpfX3hkcnMsIGludDMyX3QgKl9faXApOwoKICAgICAgICBi
b29sX3QgKCp4X3B1dGludDMyKSAoWERSICpfX3hkcnMsIF9fY29uc3QgaW50MzJfdCAqX19pcCk7
CgogICAgICB9CiAgICAgKnhfb3BzOwogICAgY2FkZHJfdCB4X3B1YmxpYzsKICAgIGNhZGRyX3Qg
eF9wcml2YXRlOwogICAgY2FkZHJfdCB4X2Jhc2U7CiAgICBpbnQgeF9oYW5keTsKICB9OwojIDE1
NCAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwYy94ZHIuaCIgMwp0eXBlZGVmIGJvb2xfdCAoKnhkcnBy
b2NfdCkgKFhEUiAqLCB2b2lkICosLi4uKTsKIyAyMzQgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMv
eGRyLmgiIDMKc3RydWN0IHhkcl9kaXNjcmltCnsKICBpbnQgdmFsdWU7CiAgeGRycHJvY190IHBy
b2M7Cn07CiMgMjg5ICIvdXNyL2xvY2FsL2luY2x1ZGUvcnBjL3hkci5oIiAzCmV4dGVybiBib29s
X3QgeGRyX3ZvaWQgKHZvaWQpIDsKZXh0ZXJuIGJvb2xfdCB4ZHJfc2hvcnQgKFhEUiAqX194ZHJz
LCBzaG9ydCAqX19zcCkgOwpleHRlcm4gYm9vbF90IHhkcl91X3Nob3J0IChYRFIgKl9feGRycywg
dV9zaG9ydCAqX191c3ApIDsKZXh0ZXJuIGJvb2xfdCB4ZHJfaW50IChYRFIgKl9feGRycywgaW50
ICpfX2lwKSA7CmV4dGVybiBib29sX3QgeGRyX3VfaW50IChYRFIgKl9feGRycywgdV9pbnQgKl9f
dXApIDsKZXh0ZXJuIGJvb2xfdCB4ZHJfbG9uZyAoWERSICpfX3hkcnMsIGxvbmcgKl9fbHApIDsK
ZXh0ZXJuIGJvb2xfdCB4ZHJfdV9sb25nIChYRFIgKl9feGRycywgdV9sb25nICpfX3VscCkgOwpl
eHRlcm4gYm9vbF90IHhkcl9oeXBlciAoWERSICpfX3hkcnMsIHF1YWRfdCAqX19sbHApIDsKZXh0
ZXJuIGJvb2xfdCB4ZHJfdV9oeXBlciAoWERSICpfX3hkcnMsIHVfcXVhZF90ICpfX3VsbHApIDsK
ZXh0ZXJuIGJvb2xfdCB4ZHJfbG9uZ2xvbmdfdCAoWERSICpfX3hkcnMsIHF1YWRfdCAqX19sbHAp
IDsKZXh0ZXJuIGJvb2xfdCB4ZHJfdV9sb25nbG9uZ190IChYRFIgKl9feGRycywgdV9xdWFkX3Qg
Kl9fdWxscCkgOwpleHRlcm4gYm9vbF90IHhkcl9pbnQ4X3QgKFhEUiAqX194ZHJzLCBpbnQ4X3Qg
Kl9faXApIDsKZXh0ZXJuIGJvb2xfdCB4ZHJfdWludDhfdCAoWERSICpfX3hkcnMsIHVpbnQ4X3Qg
Kl9fdXApIDsKZXh0ZXJuIGJvb2xfdCB4ZHJfaW50MTZfdCAoWERSICpfX3hkcnMsIGludDE2X3Qg
Kl9faXApIDsKZXh0ZXJuIGJvb2xfdCB4ZHJfdWludDE2X3QgKFhEUiAqX194ZHJzLCB1aW50MTZf
dCAqX191cCkgOwpleHRlcm4gYm9vbF90IHhkcl9pbnQzMl90IChYRFIgKl9feGRycywgaW50MzJf
dCAqX19pcCkgOwpleHRlcm4gYm9vbF90IHhkcl91aW50MzJfdCAoWERSICpfX3hkcnMsIHVpbnQz
Ml90ICpfX3VwKSA7CmV4dGVybiBib29sX3QgeGRyX2ludDY0X3QgKFhEUiAqX194ZHJzLCBpbnQ2
NF90ICpfX2lwKSA7CmV4dGVybiBib29sX3QgeGRyX3VpbnQ2NF90IChYRFIgKl9feGRycywgdWlu
dDY0X3QgKl9fdXApIDsKZXh0ZXJuIGJvb2xfdCB4ZHJfYm9vbCAoWERSICpfX3hkcnMsIGJvb2xf
dCAqX19icCkgOwpleHRlcm4gYm9vbF90IHhkcl9lbnVtIChYRFIgKl9feGRycywgZW51bV90ICpf
X2VwKSA7CmV4dGVybiBib29sX3QgeGRyX2FycmF5IChYRFIgKiBfeGRycywgY2FkZHJfdCAqX19h
ZGRycCwgdV9pbnQgKl9fc2l6ZXAsCiAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBfX21h
eHNpemUsIHVfaW50IF9fZWxzaXplLCB4ZHJwcm9jX3QgX19lbHByb2MpCiAgICAgOwpleHRlcm4g
Ym9vbF90IHhkcl9ieXRlcyAoWERSICpfX3hkcnMsIGNoYXIgKipfX2NwcCwgdV9pbnQgKl9fc2l6
ZXAsCiAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBfX21heHNpemUpIDsKZXh0ZXJuIGJv
b2xfdCB4ZHJfb3BhcXVlIChYRFIgKl9feGRycywgY2FkZHJfdCBfX2NwLCB1X2ludCBfX2NudCkg
OwpleHRlcm4gYm9vbF90IHhkcl9zdHJpbmcgKFhEUiAqX194ZHJzLCBjaGFyICoqX19jcHAsIHVf
aW50IF9fbWF4c2l6ZSkgOwpleHRlcm4gYm9vbF90IHhkcl91bmlvbiAoWERSICpfX3hkcnMsIGVu
dW1fdCAqX19kc2NtcCwgY2hhciAqX191bnAsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IHN0cnVjdCB4ZHJfZGlzY3JpbSAqX19jaG9pY2VzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgeGRycHJvY190IGRmYXVsdCkgOwpleHRlcm4gYm9vbF90IHhkcl9jaGFyIChYRFIgKl9feGRy
cywgY2hhciAqX19jcCkgOwpleHRlcm4gYm9vbF90IHhkcl91X2NoYXIgKFhEUiAqX194ZHJzLCB1
X2NoYXIgKl9fY3ApIDsKZXh0ZXJuIGJvb2xfdCB4ZHJfdmVjdG9yIChYRFIgKl9feGRycywgY2hh
ciAqX19iYXNlcCwgdV9pbnQgX19uZWxlbSwKICAgICAgICAgICAgICAgICAgICAgICAgICB1X2lu
dCBfX2VsZW1zaXplLCB4ZHJwcm9jX3QgX194ZHJfZWxlbSkgOwpleHRlcm4gYm9vbF90IHhkcl9m
bG9hdCAoWERSICpfX3hkcnMsIGZsb2F0ICpfX2ZwKSA7CmV4dGVybiBib29sX3QgeGRyX2RvdWJs
ZSAoWERSICpfX3hkcnMsIGRvdWJsZSAqX19kcCkgOwpleHRlcm4gYm9vbF90IHhkcl9yZWZlcmVu
Y2UgKFhEUiAqX194ZHJzLCBjYWRkcl90ICpfX3hwcCwgdV9pbnQgX19zaXplLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHhkcnByb2NfdCBfX3Byb2MpIDsKZXh0ZXJuIGJvb2xfdCB4ZHJf
cG9pbnRlciAoWERSICpfX3hkcnMsIGNoYXIgKipfX29ianBwLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICB1X2ludCBfX29ial9zaXplLCB4ZHJwcm9jX3QgX194ZHJfb2JqKSA7CmV4dGVybiBi
b29sX3QgeGRyX3dyYXBzdHJpbmcgKFhEUiAqX194ZHJzLCBjaGFyICoqX19jcHApIDsKZXh0ZXJu
IHVfbG9uZyB4ZHJfc2l6ZW9mICh4ZHJwcm9jX3QsIHZvaWQgKikgOwoKCgoKCgpzdHJ1Y3QgbmV0
b2JqCnsKICB1X2ludCBuX2xlbjsKICBjaGFyICpuX2J5dGVzOwp9Owp0eXBlZGVmIHN0cnVjdCBu
ZXRvYmogbmV0b2JqOwpleHRlcm4gYm9vbF90IHhkcl9uZXRvYmogKFhEUiAqX194ZHJzLCBzdHJ1
Y3QgbmV0b2JqICpfX25wKSA7CgoKCgoKCgpleHRlcm4gdm9pZCB4ZHJtZW1fY3JlYXRlIChYRFIg
Kl9feGRycywgX19jb25zdCBjYWRkcl90IF9fYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdV9pbnQgX19zaXplLCBlbnVtIHhkcl9vcCBfX3hvcCkgOwoKCmV4dGVybiB2b2lkIHhkcnN0
ZGlvX2NyZWF0ZSAoWERSICpfX3hkcnMsIEZJTEUgKl9fZmlsZSwgZW51bSB4ZHJfb3AgX194b3Ap
CiAgICAgOwoKCmV4dGVybiB2b2lkIHhkcnJlY19jcmVhdGUgKFhEUiAqX194ZHJzLCB1X2ludCBf
X3NlbmRzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBfX3JlY3ZzaXplLCBj
YWRkcl90IF9fdGNwX2hhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICgqX19y
ZWFkaXQpIChjaGFyICosIGNoYXIgKiwgaW50KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50ICgqX193cml0ZWl0KSAoY2hhciAqLCBjaGFyICosIGludCkpIDsKCgpleHRlcm4gYm9vbF90
IHhkcnJlY19lbmRvZnJlY29yZCAoWERSICpfX3hkcnMsIGJvb2xfdCBfX3NlbmRub3cpIDsKCgpl
eHRlcm4gYm9vbF90IHhkcnJlY19za2lwcmVjb3JkIChYRFIgKl9feGRycykgOwoKCmV4dGVybiBi
b29sX3QgeGRycmVjX2VvZiAoWERSICpfX3hkcnMpIDsKCgpleHRlcm4gdm9pZCB4ZHJfZnJlZSAo
eGRycHJvY190IF9fcHJvYywgY2hhciAqX19vYmpwKSA7CgoKIyA0NiAiL3Vzci9sb2NhbC9pbmNs
dWRlL3JwYy9ycGMuaCIgMiAzCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvcnBjL2F1dGguaCIg
MSAzCiMgNDcgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMvYXV0aC5oIiAzCgoKCgoKCgoKZW51bSBh
dXRoX3N0YXQgewogICAgICAgIEFVVEhfT0s9MCwKCgoKICAgICAgICBBVVRIX0JBRENSRUQ9MSwK
ICAgICAgICBBVVRIX1JFSkVDVEVEQ1JFRD0yLAogICAgICAgIEFVVEhfQkFEVkVSRj0zLAogICAg
ICAgIEFVVEhfUkVKRUNURURWRVJGPTQsCiAgICAgICAgQVVUSF9UT09XRUFLPTUsCgoKCiAgICAg
ICAgQVVUSF9JTlZBTElEUkVTUD02LAogICAgICAgIEFVVEhfRkFJTEVEPTcKfTsKCnVuaW9uIGRl
c19ibG9jayB7CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVfaW50MzJfdCBoaWdo
OwogICAgICAgICAgICAgICAgdV9pbnQzMl90IGxvdzsKICAgICAgICB9IGtleTsKICAgICAgICBj
aGFyIGNbOF07Cn07CnR5cGVkZWYgdW5pb24gZGVzX2Jsb2NrIGRlc19ibG9jazsKZXh0ZXJuIGJv
b2xfdCB4ZHJfZGVzX2Jsb2NrIChYRFIgKl9feGRycywgZGVzX2Jsb2NrICpfX2Jsa3ApIDsKCgoK
CnN0cnVjdCBvcGFxdWVfYXV0aCB7CiAgICAgICAgZW51bV90IG9hX2ZsYXZvcjsKICAgICAgICBj
YWRkcl90IG9hX2Jhc2U7CiAgICAgICAgdV9pbnQgb2FfbGVuZ3RoOwp9OwoKCgoKdHlwZWRlZiBz
dHJ1Y3QgQVVUSCBBVVRIOwpzdHJ1Y3QgQVVUSCB7CiAgc3RydWN0IG9wYXF1ZV9hdXRoIGFoX2Ny
ZWQ7CiAgc3RydWN0IG9wYXF1ZV9hdXRoIGFoX3ZlcmY7CiAgdW5pb24gZGVzX2Jsb2NrIGFoX2tl
eTsKICBzdHJ1Y3QgYXV0aF9vcHMgewogICAgdm9pZCAoKmFoX25leHR2ZXJmKSAoQVVUSCAqKTsK
ICAgIGludCAoKmFoX21hcnNoYWwpIChBVVRIICosIFhEUiAqKTsKICAgIGludCAoKmFoX3ZhbGlk
YXRlKSAoQVVUSCAqLCBzdHJ1Y3Qgb3BhcXVlX2F1dGggKik7CgogICAgaW50ICgqYWhfcmVmcmVz
aCkgKEFVVEggKik7CiAgICB2b2lkICgqYWhfZGVzdHJveSkgKEFVVEggKik7CiAgfSAqYWhfb3Bz
OwogIGNhZGRyX3QgYWhfcHJpdmF0ZTsKfTsKIyAxNDUgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMv
YXV0aC5oIiAzCmV4dGVybiBzdHJ1Y3Qgb3BhcXVlX2F1dGggX251bGxfYXV0aDsKIyAxNjEgIi91
c3IvbG9jYWwvaW5jbHVkZS9ycGMvYXV0aC5oIiAzCmV4dGVybiBBVVRIICphdXRodW5peF9jcmVh
dGUgKGNoYXIgKl9fbWFjaG5hbWUsIF9fdWlkX3QgX191aWQsIF9fZ2lkX3QgX19naWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2xlbiwgX19naWRfdCAqX19hdXBfZ2lkcykg
OwpleHRlcm4gQVVUSCAqYXV0aHVuaXhfY3JlYXRlX2RlZmF1bHQgKHZvaWQpIDsKZXh0ZXJuIEFV
VEggKmF1dGhub25lX2NyZWF0ZSAodm9pZCkgOwpleHRlcm4gQVVUSCAqYXV0aGRlc19jcmVhdGUg
KGNvbnN0IGNoYXIgKl9fc2VydmVybmFtZSwgdV9pbnQgX193aW5kb3csCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyICpfX3N5bmNhZGRyLCBkZXNfYmxvY2sgKl9f
Y2tleSkKICAgICA7CmV4dGVybiBBVVRIICphdXRoZGVzX3BrX2NyZWF0ZSAoY29uc3QgY2hhciAq
LCBuZXRvYmogKiwgdV9pbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IHNvY2thZGRyICosIGRlc19ibG9jayAqKSA7CiMgMTg1ICIvdXNyL2xvY2FsL2luY2x1ZGUvcnBj
L2F1dGguaCIgMwpleHRlcm4gaW50IGdldG5ldG5hbWUgKGNoYXIgKikgOwpleHRlcm4gaW50IGhv
c3QybmV0bmFtZSAoY2hhciAqLCBfX2NvbnN0IGNoYXIgKiwgX19jb25zdCBjaGFyICopIDsKZXh0
ZXJuIGludCB1c2VyMm5ldG5hbWUgKGNoYXIgKiwgX19jb25zdCB1aWRfdCwgX19jb25zdCBjaGFy
ICopIDsKZXh0ZXJuIGludCBuZXRuYW1lMnVzZXIgKF9fY29uc3QgY2hhciAqLCB1aWRfdCAqLCBn
aWRfdCAqLCBpbnQgKiwgZ2lkX3QgKikKICAgICA7CmV4dGVybiBpbnQgbmV0bmFtZTJob3N0IChf
X2NvbnN0IGNoYXIgKiwgY2hhciAqLCBfX2NvbnN0IGludCkgOwoKCgoKCgpleHRlcm4gaW50IGtl
eV9kZWNyeXB0c2Vzc2lvbiAoY2hhciAqLCBkZXNfYmxvY2sgKikgOwpleHRlcm4gaW50IGtleV9k
ZWNyeXB0c2Vzc2lvbl9wayAoY2hhciAqLCBuZXRvYmogKiwgZGVzX2Jsb2NrICopIDsKZXh0ZXJu
IGludCBrZXlfZW5jcnlwdHNlc3Npb24gKGNoYXIgKiwgZGVzX2Jsb2NrICopIDsKZXh0ZXJuIGlu
dCBrZXlfZW5jcnlwdHNlc3Npb25fcGsgKGNoYXIgKiwgbmV0b2JqICosIGRlc19ibG9jayAqKSA7
CmV4dGVybiBpbnQga2V5X2dlbmRlcyAoZGVzX2Jsb2NrICopIDsKZXh0ZXJuIGludCBrZXlfc2V0
c2VjcmV0IChjaGFyICopIDsKZXh0ZXJuIGludCBrZXlfc2VjcmV0a2V5X2lzX3NldCAodm9pZCkg
OwpleHRlcm4gaW50IGtleV9nZXRfY29udiAoY2hhciAqLCBkZXNfYmxvY2sgKikgOwoKCgoKZXh0
ZXJuIGJvb2xfdCB4ZHJfb3BhcXVlX2F1dGggKFhEUiAqLCBzdHJ1Y3Qgb3BhcXVlX2F1dGggKikg
OwoKCiMgNDkgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMvcnBjLmgiIDIgMwoKCiMgMSAiL3Vzci9s
b2NhbC9pbmNsdWRlL3JwYy9jbG50LmgiIDEgMwojIDQ2ICIvdXNyL2xvY2FsL2luY2x1ZGUvcnBj
L2NsbnQuaCIgMwoKCgoKCgoKZW51bSBjbG50X3N0YXQgewogICAgICAgIFJQQ19TVUNDRVNTPTAs
CgoKCiAgICAgICAgUlBDX0NBTlRFTkNPREVBUkdTPTEsCiAgICAgICAgUlBDX0NBTlRERUNPREVS
RVM9MiwKICAgICAgICBSUENfQ0FOVFNFTkQ9MywKICAgICAgICBSUENfQ0FOVFJFQ1Y9NCwKICAg
ICAgICBSUENfVElNRURPVVQ9NSwKCgoKICAgICAgICBSUENfVkVSU01JU01BVENIPTYsCiAgICAg
ICAgUlBDX0FVVEhFUlJPUj03LAogICAgICAgIFJQQ19QUk9HVU5BVkFJTD04LAogICAgICAgIFJQ
Q19QUk9HVkVSU01JU01BVENIPTksCiAgICAgICAgUlBDX1BST0NVTkFWQUlMPTEwLAogICAgICAg
IFJQQ19DQU5UREVDT0RFQVJHUz0xMSwKICAgICAgICBSUENfU1lTVEVNRVJST1I9MTIsCiAgICAg
ICAgUlBDX05PQlJPQURDQVNUID0gMjEsCgoKCiAgICAgICAgUlBDX1VOS05PV05IT1NUPTEzLAog
ICAgICAgIFJQQ19VTktOT1dOUFJPVE89MTcsCiAgICAgICAgUlBDX1VOS05PV05BRERSID0gMTks
CgoKCgogICAgICAgIFJQQ19SUENCRkFJTFVSRT0xNCwKCiAgICAgICAgUlBDX1BST0dOT1RSRUdJ
U1RFUkVEPTE1LAogICAgICAgIFJQQ19OMkFYTEFURUZBSUxVUkUgPSAyMiwKCgoKICAgICAgICBS
UENfRkFJTEVEPTE2LAogICAgICAgIFJQQ19JTlRSPTE4LAogICAgICAgIFJQQ19UTElFUlJPUj0y
MCwKICAgICAgICBSUENfVURFUlJPUj0yMywKCgoKICAgICAgICBSUENfSU5QUk9HUkVTUyA9IDI0
LAogICAgICAgIFJQQ19TVEFMRVJBQ0hBTkRMRSA9IDI1Cn07CgoKCgoKc3RydWN0IHJwY19lcnIg
ewogIGVudW0gY2xudF9zdGF0IHJlX3N0YXR1czsKICB1bmlvbiB7CiAgICBpbnQgUkVfZXJybm87
CiAgICBlbnVtIGF1dGhfc3RhdCBSRV93aHk7CiAgICBzdHJ1Y3QgewogICAgICB1X2xvbmcgbG93
OwogICAgICB1X2xvbmcgaGlnaDsKICAgIH0gUkVfdmVyczsKICAgIHN0cnVjdCB7CiAgICAgIGxv
bmcgczE7CiAgICAgIGxvbmcgczI7CiAgICB9IFJFX2xiOwogIH0gcnU7CgoKCgp9OwoKCgoKCgoK
dHlwZWRlZiBzdHJ1Y3QgQ0xJRU5UIENMSUVOVDsKc3RydWN0IENMSUVOVCB7CiAgQVVUSCAqY2xf
YXV0aDsKICBzdHJ1Y3QgY2xudF9vcHMgewogICAgZW51bSBjbG50X3N0YXQgKCpjbF9jYWxsKSAo
Q0xJRU5UICosIHVfbG9uZywgeGRycHJvY190LCBjYWRkcl90LCB4ZHJwcm9jX3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYWRkcl90LCBzdHJ1Y3QgdGltZXZhbCk7CgogICAgdm9p
ZCAoKmNsX2Fib3J0KSAodm9pZCk7CiAgICB2b2lkICgqY2xfZ2V0ZXJyKSAoQ0xJRU5UICosIHN0
cnVjdCBycGNfZXJyICopOwoKICAgIGJvb2xfdCAoKmNsX2ZyZWVyZXMpIChDTElFTlQgKiwgeGRy
cHJvY190LCBjYWRkcl90KTsKCiAgICB2b2lkICgqY2xfZGVzdHJveSkgKENMSUVOVCAqKTsKICAg
IGJvb2xfdCAoKmNsX2NvbnRyb2wpIChDTElFTlQgKiwgaW50LCBjaGFyICopOwoKICB9ICpjbF9v
cHM7CiAgY2FkZHJfdCBjbF9wcml2YXRlOwp9OwojIDI4MCAiL3Vzci9sb2NhbC9pbmNsdWRlL3Jw
Yy9jbG50LmgiIDMKZXh0ZXJuIENMSUVOVCAqY2xudHJhd19jcmVhdGUgKF9fY29uc3QgdV9sb25n
IF9fcHJvZywgX19jb25zdCB1X2xvbmcgX192ZXJzKQogICAgIDsKIyAyOTQgIi91c3IvbG9jYWwv
aW5jbHVkZS9ycGMvY2xudC5oIiAzCmV4dGVybiBDTElFTlQgKmNsbnRfY3JlYXRlIChfX2NvbnN0
IGNoYXIgKl9faG9zdCwgX19jb25zdCB1X2xvbmcgX19wcm9nLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19jb25zdCB1X2xvbmcgX192ZXJzLCBfX2NvbnN0IGNoYXIgKl9fcHJvdCkKICAg
ICA7CiMgMzEwICIvdXNyL2xvY2FsL2luY2x1ZGUvcnBjL2NsbnQuaCIgMwpleHRlcm4gQ0xJRU5U
ICpjbG50dGNwX2NyZWF0ZSAoc3RydWN0IHNvY2thZGRyX2luICpfX3JhZGRyLCB1X2xvbmcgX19w
cm9nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIF9fdmVyc2lvbiwgaW50
ICpfX3NvY2twLCB1X2ludCBfX3NlbmRzeiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVfaW50IF9fcmVjdnN6KSA7CiMgMzM1ICIvdXNyL2xvY2FsL2luY2x1ZGUvcnBjL2NsbnQuaCIg
MwpleHRlcm4gQ0xJRU5UICpjbG50dWRwX2NyZWF0ZSAoc3RydWN0IHNvY2thZGRyX2luICpfX3Jh
ZGRyLCB1X2xvbmcgX19wcm9ncmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9s
b25nIF9fdmVyc2lvbiwgc3RydWN0IHRpbWV2YWwgX193YWl0X3Jlc2VuZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCAqX19zb2NrcCkgOwpleHRlcm4gQ0xJRU5UICpjbG50dWRw
X2J1ZmNyZWF0ZSAoc3RydWN0IHNvY2thZGRyX2luICpfX3JhZGRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdV9sb25nIF9fcHJvZ3JhbSwgdV9sb25nIF9fdmVyc2lvbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsIF9fd2FpdF9yZXNl
bmQsIGludCAqX19zb2NrcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50
IF9fc2VuZHN6LCB1X2ludCBfX3JlY3ZzeikgOwojIDM1NyAiL3Vzci9sb2NhbC9pbmNsdWRlL3Jw
Yy9jbG50LmgiIDMKZXh0ZXJuIENMSUVOVCAqY2xudHVuaXhfY3JlYXRlIChzdHJ1Y3Qgc29ja2Fk
ZHJfdW4gKl9fcmFkZHIsIHVfbG9uZyBfX3Byb2dyYW0sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVfbG9uZyBfX3ZlcnNpb24sIGludCAqX19zb2NrcCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdV9pbnQgX19zZW5kc3osIHVfaW50IF9fcmVjdnN6KSA7CgoKZXh0
ZXJuIGludCBjYWxscnBjIChfX2NvbnN0IGNoYXIgKl9faG9zdCwgX19jb25zdCB1X2xvbmcgX19w
cm9nbnVtLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdV9sb25nIF9fdmVyc251bSwgX19j
b25zdCB1X2xvbmcgX19wcm9jbnVtLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgeGRycHJv
Y190IF9faW5wcm9jLCBfX2NvbnN0IGNoYXIgKl9faW4sCiAgICAgICAgICAgICAgICAgICAgX19j
b25zdCB4ZHJwcm9jX3QgX19vdXRwcm9jLCBjaGFyICpfX291dCkgOwpleHRlcm4gaW50IF9ycGNf
ZHRhYmxlc2l6ZSAodm9pZCkgOwoKCgoKZXh0ZXJuIHZvaWQgY2xudF9wY3JlYXRlZXJyb3IgKF9f
Y29uc3QgY2hhciAqX19tc2cpIDsKZXh0ZXJuIGNoYXIgKmNsbnRfc3BjcmVhdGVlcnJvcihfX2Nv
bnN0IGNoYXIgKl9fbXNnKSA7CgoKCgpleHRlcm4gdm9pZCBjbG50X3BlcnJubyAoZW51bSBjbG50
X3N0YXQgX19udW0pIDsKCgoKCmV4dGVybiB2b2lkIGNsbnRfcGVycm9yIChDTElFTlQgKl9fY2xu
dCwgX19jb25zdCBjaGFyICpfX21zZykgOwoKZXh0ZXJuIGNoYXIgKmNsbnRfc3BlcnJvciAoQ0xJ
RU5UICpfX2NsbnQsIF9fY29uc3QgY2hhciAqX19tc2cpIDsKCgoKCgpzdHJ1Y3QgcnBjX2NyZWF0
ZWVyciB7CiAgICAgICAgZW51bSBjbG50X3N0YXQgY2Zfc3RhdDsKICAgICAgICBzdHJ1Y3QgcnBj
X2VyciBjZl9lcnJvcjsKfTsKCmV4dGVybiBzdHJ1Y3QgcnBjX2NyZWF0ZWVyciBycGNfY3JlYXRl
ZXJyOwoKCgoKCgpleHRlcm4gY2hhciAqY2xudF9zcGVycm5vIChlbnVtIGNsbnRfc3RhdCBfX251
bSkgOwoKCgoKZXh0ZXJuIGludCBnZXRycGNwb3J0IChfX2NvbnN0IGNoYXIgKiBfX2hvc3QsIHVf
bG9uZyBfX3Byb2dudW0sCiAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIF9fdmVyc251bSwg
dV9pbnQgcHJvdG8pIDsKCgoKCgpleHRlcm4gdm9pZCBnZXRfbXlhZGRyZXNzIChzdHJ1Y3Qgc29j
a2FkZHJfaW4gKikgOwoKCgoKCiMgNTIgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMvcnBjLmgiIDIg
MwoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwYy9ycGNfbXNnLmgiIDEgMwojIDUwICIvdXNy
L2xvY2FsL2luY2x1ZGUvcnBjL3JwY19tc2cuaCIgMwoKCgoKCgoKCmVudW0gbXNnX3R5cGUgewog
ICAgICAgIENBTEw9MCwKICAgICAgICBSRVBMWT0xCn07CgplbnVtIHJlcGx5X3N0YXQgewogICAg
ICAgIE1TR19BQ0NFUFRFRD0wLAogICAgICAgIE1TR19ERU5JRUQ9MQp9OwoKZW51bSBhY2NlcHRf
c3RhdCB7CiAgICAgICAgU1VDQ0VTUz0wLAogICAgICAgIFBST0dfVU5BVkFJTD0xLAogICAgICAg
IFBST0dfTUlTTUFUQ0g9MiwKICAgICAgICBQUk9DX1VOQVZBSUw9MywKICAgICAgICBHQVJCQUdF
X0FSR1M9NCwKICAgICAgICBTWVNURU1fRVJSPTUKfTsKCmVudW0gcmVqZWN0X3N0YXQgewogICAg
ICAgIFJQQ19NSVNNQVRDSD0wLAogICAgICAgIEFVVEhfRVJST1I9MQp9OwojIDkxICIvdXNyL2xv
Y2FsL2luY2x1ZGUvcnBjL3JwY19tc2cuaCIgMwpzdHJ1Y3QgYWNjZXB0ZWRfcmVwbHkgewogICAg
ICAgIHN0cnVjdCBvcGFxdWVfYXV0aCBhcl92ZXJmOwogICAgICAgIGVudW0gYWNjZXB0X3N0YXQg
YXJfc3RhdDsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAg
ICAgICAgICAgICAgICAgICB1X2xvbmcgbG93OwogICAgICAgICAgICAgICAgICAgICAgICB1X2xv
bmcgaGlnaDsKICAgICAgICAgICAgICAgIH0gQVJfdmVyc2lvbnM7CiAgICAgICAgICAgICAgICBz
dHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBjYWRkcl90IHdoZXJlOwogICAgICAgICAg
ICAgICAgICAgICAgICB4ZHJwcm9jX3QgcHJvYzsKICAgICAgICAgICAgICAgIH0gQVJfcmVzdWx0
czsKCiAgICAgICAgfSBydTsKCgp9OwoKCgoKc3RydWN0IHJlamVjdGVkX3JlcGx5IHsKICAgICAg
ICBlbnVtIHJlamVjdF9zdGF0IHJqX3N0YXQ7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAg
ICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGxvdzsKICAgICAgICAg
ICAgICAgICAgICAgICAgdV9sb25nIGhpZ2g7CiAgICAgICAgICAgICAgICB9IFJKX3ZlcnNpb25z
OwogICAgICAgICAgICAgICAgZW51bSBhdXRoX3N0YXQgUkpfd2h5OwogICAgICAgIH0gcnU7CgoK
fTsKCgoKCnN0cnVjdCByZXBseV9ib2R5IHsKICAgICAgICBlbnVtIHJlcGx5X3N0YXQgcnBfc3Rh
dDsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgYWNjZXB0ZWRfcmVwbHkg
UlBfYXI7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgcmVqZWN0ZWRfcmVwbHkgUlBfZHI7CiAgICAg
ICAgfSBydTsKCgp9OwoKCgoKc3RydWN0IGNhbGxfYm9keSB7CiAgICAgICAgdV9sb25nIGNiX3Jw
Y3ZlcnM7CiAgICAgICAgdV9sb25nIGNiX3Byb2c7CiAgICAgICAgdV9sb25nIGNiX3ZlcnM7CiAg
ICAgICAgdV9sb25nIGNiX3Byb2M7CiAgICAgICAgc3RydWN0IG9wYXF1ZV9hdXRoIGNiX2NyZWQ7
CiAgICAgICAgc3RydWN0IG9wYXF1ZV9hdXRoIGNiX3ZlcmY7Cn07CgoKCgpzdHJ1Y3QgcnBjX21z
ZyB7CiAgICAgICAgdV9sb25nIHJtX3hpZDsKICAgICAgICBlbnVtIG1zZ190eXBlIHJtX2RpcmVj
dGlvbjsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgY2FsbF9ib2R5IFJN
X2NtYjsKICAgICAgICAgICAgICAgIHN0cnVjdCByZXBseV9ib2R5IFJNX3JtYjsKICAgICAgICB9
IHJ1OwoKCn07CiMgMTczICIvdXNyL2xvY2FsL2luY2x1ZGUvcnBjL3JwY19tc2cuaCIgMwpleHRl
cm4gYm9vbF90IHhkcl9jYWxsbXNnIChYRFIgKl9feGRycywgc3RydWN0IHJwY19tc2cgKl9fY21z
ZykgOwoKCgoKCgoKZXh0ZXJuIGJvb2xfdCB4ZHJfY2FsbGhkciAoWERSICpfX3hkcnMsIHN0cnVj
dCBycGNfbXNnICpfX2Ntc2cpIDsKCgoKCgoKCmV4dGVybiBib29sX3QgeGRyX3JlcGx5bXNnIChY
RFIgKl9feGRycywgc3RydWN0IHJwY19tc2cgKl9fcm1zZykgOwoKCgoKCgoKZXh0ZXJuIHZvaWQg
X3NldGVycl9yZXBseSAoc3RydWN0IHJwY19tc2cgKl9fbXNnLCBzdHJ1Y3QgcnBjX2VyciAqX19l
cnJvcikKICAgICA7CgoKIyA1NSAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwYy9ycGMuaCIgMiAzCiMg
MSAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwYy9hdXRoX3VuaXguaCIgMSAzCiMgNTQgIi91c3IvbG9j
YWwvaW5jbHVkZS9ycGMvYXV0aF91bml4LmgiIDMKCiMgNjUgIi91c3IvbG9jYWwvaW5jbHVkZS9y
cGMvYXV0aF91bml4LmgiIDMKc3RydWN0IGF1dGh1bml4X3Bhcm1zCiAgewogICAgdV9sb25nIGF1
cF90aW1lOwogICAgY2hhciAqYXVwX21hY2huYW1lOwogICAgX191aWRfdCBhdXBfdWlkOwogICAg
X19naWRfdCBhdXBfZ2lkOwogICAgdV9pbnQgYXVwX2xlbjsKICAgIF9fZ2lkX3QgKmF1cF9naWRz
OwogIH07CgpleHRlcm4gYm9vbF90IHhkcl9hdXRodW5peF9wYXJtcyAoWERSICpfX3hkcnMsIHN0
cnVjdCBhdXRodW5peF9wYXJtcyAqX19wKQogICAgIDsKCgoKCgoKc3RydWN0IHNob3J0X2hhbmRf
dmVyZgogIHsKICAgIHN0cnVjdCBvcGFxdWVfYXV0aCBuZXdfY3JlZDsKICB9OwoKCiMgNTYgIi91
c3IvbG9jYWwvaW5jbHVkZS9ycGMvcnBjLmgiIDIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9y
cGMvYXV0aF9kZXMuaCIgMSAzCiMgMjUgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMvYXV0aF9kZXMu
aCIgMwoKCgplbnVtIGF1dGhkZXNfbmFtZWtpbmQKICB7CiAgICBBRE5fRlVMTE5BTUUsCiAgICBB
RE5fTklDS05BTUUKICB9OwoKCgpzdHJ1Y3QgYXV0aGRlc19mdWxsbmFtZQogIHsKICAgIGNoYXIg
Km5hbWU7CiAgICBkZXNfYmxvY2sga2V5OwogICAgdWludDMyX3Qgd2luZG93OwogIH07CgoKc3Ry
dWN0IGF1dGhkZXNfY3JlZAogIHsKICAgIGVudW0gYXV0aGRlc19uYW1la2luZCBhZGNfbmFtZWtp
bmQ7CiAgICBzdHJ1Y3QgYXV0aGRlc19mdWxsbmFtZSBhZGNfZnVsbG5hbWU7CiAgICB1aW50MzJf
dCBhZGNfbmlja25hbWU7CiAgfTsKCgpzdHJ1Y3QgcnBjX3RpbWV2YWwKICB7CiAgICB1aW50MzJf
dCB0dl9zZWM7CiAgICB1aW50MzJfdCB0dl91c2VjOwogIH07CgoKc3RydWN0IGF1dGhkZXNfdmVy
ZgogIHsKICAgIHVuaW9uCiAgICAgIHsKICAgICAgICBzdHJ1Y3QgcnBjX3RpbWV2YWwgYWR2X2N0
aW1lOwogICAgICAgIGRlc19ibG9jayBhZHZfeHRpbWU7CiAgICAgIH0KICAgIGFkdl90aW1lX3U7
CiAgICB1aW50MzJfdCBhZHZfaW50X3U7CiAgfTsKIyA4OSAiL3Vzci9sb2NhbC9pbmNsdWRlL3Jw
Yy9hdXRoX2Rlcy5oIiAzCmV4dGVybiBpbnQgYXV0aGRlc19nZXR1Y3JlZCAoX19jb25zdCBzdHJ1
Y3QgYXV0aGRlc19jcmVkICogX19hZGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlk
X3QgKiBfX3VpZCwgZ2lkX3QgKiBfX2dpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aG9ydCAqX19ncm91cGxlbiwgZ2lkX3QgKiBfX2dyb3VwcykgOwoKCgoKZXh0ZXJuIGludCBnZXRw
dWJsaWNrZXkgKF9fY29uc3QgY2hhciAqX19uYW1lLCBjaGFyICpfX2tleSkgOwoKCgoKCgpleHRl
cm4gaW50IGdldHNlY3JldGtleSAoX19jb25zdCBjaGFyICpfX25hbWUsIGNoYXIgKl9fa2V5LAog
ICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Bhc3N3ZCkgOwoKZXh0ZXJu
IGludCBydGltZSAoc3RydWN0IHNvY2thZGRyX2luICpfX2FkZHJwLCBzdHJ1Y3QgcnBjX3RpbWV2
YWwgKl9fdGltZXAsCiAgICAgICAgICAgICAgICAgIHN0cnVjdCBycGNfdGltZXZhbCAqX190aW1l
b3V0KSA7CgoKIyA1NyAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwYy9ycGMuaCIgMiAzCgoKIyAxICIv
dXNyL2xvY2FsL2luY2x1ZGUvcnBjL3N2Yy5oIiAxIDMKIyA0MiAiL3Vzci9sb2NhbC9pbmNsdWRl
L3JwYy9zdmMuaCIgMwoKIyA2NiAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwYy9zdmMuaCIgMwplbnVt
IHhwcnRfc3RhdCB7CiAgICAgICAgWFBSVF9ESUVELAogICAgICAgIFhQUlRfTU9SRVJFUVMsCiAg
ICAgICAgWFBSVF9JRExFCn07CgoKCgp0eXBlZGVmIHN0cnVjdCBTVkNYUFJUIFNWQ1hQUlQ7CnN0
cnVjdCBTVkNYUFJUIHsKICBpbnQgeHBfc29jazsKICB1X3Nob3J0IHhwX3BvcnQ7CiAgY29uc3Qg
c3RydWN0IHhwX29wcyB7CiAgICBib29sX3QgKCp4cF9yZWN2KSAoU1ZDWFBSVCAqX194cHJ0LCBz
dHJ1Y3QgcnBjX21zZyAqX19tc2cpOwoKICAgIGVudW0geHBydF9zdGF0ICgqeHBfc3RhdCkgKFNW
Q1hQUlQgKl9feHBydCk7CgogICAgYm9vbF90ICgqeHBfZ2V0YXJncykgKFNWQ1hQUlQgKl9feHBy
dCwgeGRycHJvY190IF9feGRyX2FyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
YWRkcl90IGFyZ3NfcHRyKTsKICAgIGJvb2xfdCAoKnhwX3JlcGx5KSAoU1ZDWFBSVCAqX194cHJ0
LCBzdHJ1Y3QgcnBjX21zZyAqX19tc2cpOwoKICAgIGJvb2xfdCAoKnhwX2ZyZWVhcmdzKSAoU1ZD
WFBSVCAqX194cHJ0LCB4ZHJwcm9jX3QgX194ZHJfYXJncywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjYWRkcl90IGFyZ3NfcHRyKTsKCiAgICB2b2lkICgqeHBfZGVzdHJveSkgKFNW
Q1hQUlQgKl9feHBydCk7CgogIH0gKnhwX29wczsKICBpbnQgeHBfYWRkcmxlbjsKICBzdHJ1Y3Qg
c29ja2FkZHJfaW4geHBfcmFkZHI7CiAgc3RydWN0IG9wYXF1ZV9hdXRoIHhwX3ZlcmY7CiAgY2Fk
ZHJfdCB4cF9wMTsKICBjYWRkcl90IHhwX3AyOwogIGNoYXIgeHBfcGFkIFsyNTZdOwp9OwojIDE0
OSAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwYy9zdmMuaCIgMwpzdHJ1Y3Qgc3ZjX3JlcSB7CiAgcnBj
cHJvZ190IHJxX3Byb2c7CiAgcnBjdmVyc190IHJxX3ZlcnM7CiAgcnBjcHJvY190IHJxX3Byb2M7
CiAgc3RydWN0IG9wYXF1ZV9hdXRoIHJxX2NyZWQ7CiAgY2FkZHJfdCBycV9jbG50Y3JlZDsKICBT
VkNYUFJUICpycV94cHJ0Owp9OwoKCgp0eXBlZGVmIHZvaWQgKCpfX2Rpc3BhdGNoX2ZuX3QpIChz
dHJ1Y3Qgc3ZjX3JlcSosIFNWQ1hQUlQqKTsKIyAxNzMgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMv
c3ZjLmgiIDMKZXh0ZXJuIGJvb2xfdCBzdmNfcmVnaXN0ZXIgKFNWQ1hQUlQgKl9feHBydCwgcnBj
cHJvZ190IF9fcHJvZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJwY3ZlcnNfdCBfX3Zl
cnMsIF9fZGlzcGF0Y2hfZm5fdCBfX2Rpc3BhdGNoLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcnBjcHJvdF90IF9fcHJvdG9jb2wpIDsKIyAxODQgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMv
c3ZjLmgiIDMKZXh0ZXJuIHZvaWQgc3ZjX3VucmVnaXN0ZXIgKHJwY3Byb2dfdCBfX3Byb2csIHJw
Y3ZlcnNfdCBfX3ZlcnMpIDsKCgoKCgoKCmV4dGVybiB2b2lkIHhwcnRfcmVnaXN0ZXIgKFNWQ1hQ
UlQgKl9feHBydCkgOwoKCgoKCgoKZXh0ZXJuIHZvaWQgeHBydF91bnJlZ2lzdGVyIChTVkNYUFJU
ICpfX3hwcnQpIDsKIyAyMjkgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMvc3ZjLmgiIDMKZXh0ZXJu
IGJvb2xfdCBzdmNfc2VuZHJlcGx5IChTVkNYUFJUICp4cHJ0LCB4ZHJwcm9jX3QgX194ZHJfcmVz
dWx0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhZGRyX3QgX194ZHJfbG9jYXRp
b24pIDsKCmV4dGVybiB2b2lkIHN2Y2Vycl9kZWNvZGUgKFNWQ1hQUlQgKl9feHBydCkgOwoKZXh0
ZXJuIHZvaWQgc3ZjZXJyX3dlYWthdXRoIChTVkNYUFJUICpfX3hwcnQpIDsKCmV4dGVybiB2b2lk
IHN2Y2Vycl9ub3Byb2MgKFNWQ1hQUlQgKl9feHBydCkgOwoKZXh0ZXJuIHZvaWQgc3ZjZXJyX3By
b2d2ZXJzIChTVkNYUFJUICpfX3hwcnQsIHJwY3ZlcnNfdCBfX2xvd192ZXJzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBycGN2ZXJzX3QgX19oaWdoX3ZlcnMpIDsKCmV4dGVybiB2
b2lkIHN2Y2Vycl9hdXRoIChTVkNYUFJUICpfX3hwcnQsIGVudW0gYXV0aF9zdGF0IF9fd2h5KSA7
CgpleHRlcm4gdm9pZCBzdmNlcnJfbm9wcm9nIChTVkNYUFJUICpfX3hwcnQpIDsKCmV4dGVybiB2
b2lkIHN2Y2Vycl9zeXN0ZW1lcnIgKFNWQ1hQUlQgKl9feHBydCkgOwojIDI2MyAiL3Vzci9sb2Nh
bC9pbmNsdWRlL3JwYy9zdmMuaCIgMwpleHRlcm4gc3RydWN0IHBvbGxmZCAqc3ZjX3BvbGxmZDsK
ZXh0ZXJuIGludCBzdmNfbWF4X3BvbGxmZDsKZXh0ZXJuIGZkX3NldCBzdmNfZmRzZXQ7CgoKCgoK
CmV4dGVybiB2b2lkIHN2Y19nZXRyZXEgKGludCBfX3JkZmRzKSA7CmV4dGVybiB2b2lkIHN2Y19n
ZXRyZXFfY29tbW9uIChjb25zdCBpbnQgX19mZCkgOwpleHRlcm4gdm9pZCBzdmNfZ2V0cmVxc2V0
IChmZF9zZXQgKl9fcmVhZGZkcykgOwpleHRlcm4gdm9pZCBzdmNfZ2V0cmVxX3BvbGwgKHN0cnVj
dCBwb2xsZmQgKiwgY29uc3QgaW50KSA7CmV4dGVybiB2b2lkIHN2Y19leGl0ICh2b2lkKSA7CmV4
dGVybiB2b2lkIHN2Y19ydW4gKHZvaWQpIDsKIyAyOTEgIi91c3IvbG9jYWwvaW5jbHVkZS9ycGMv
c3ZjLmgiIDMKZXh0ZXJuIFNWQ1hQUlQgKnN2Y3Jhd19jcmVhdGUgKHZvaWQpIDsKCgoKCmV4dGVy
biBTVkNYUFJUICpzdmN1ZHBfY3JlYXRlIChpbnQgX19zb2NrKSA7CmV4dGVybiBTVkNYUFJUICpz
dmN1ZHBfYnVmY3JlYXRlIChpbnQgX19zb2NrLCB1X2ludCBfX3NlbmRzeiwgdV9pbnQgX19yZWN2
c3opCiAgICAgOwoKCgoKZXh0ZXJuIFNWQ1hQUlQgKnN2Y3RjcF9jcmVhdGUgKGludCBfX3NvY2ss
IHVfaW50IF9fc2VuZHNpemUsIHVfaW50IF9fcmVjdnNpemUpCiAgICAgOwoKCgoKCmV4dGVybiBT
VkNYUFJUICpzdmN1bml4X2NyZWF0ZSAoaW50IF9fc29jaywgdV9pbnQgX19zZW5kc2l6ZSwgdV9p
bnQgX19yZWN2c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Bh
dGgpIDsKCgoKIyA2MCAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwYy9ycGMuaCIgMiAzCiMgMSAiL3Vz
ci9sb2NhbC9pbmNsdWRlL3JwYy9zdmNfYXV0aC5oIiAxIDMKIyA0NCAiL3Vzci9sb2NhbC9pbmNs
dWRlL3JwYy9zdmNfYXV0aC5oIiAzCgoKCgoKZXh0ZXJuIGVudW0gYXV0aF9zdGF0IF9hdXRoZW50
aWNhdGUgKHN0cnVjdCBzdmNfcmVxICpfX3Jxc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3QgcnBjX21zZyAqX19tc2cpIDsKCgojIDYxICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvcnBjL3JwYy5oIiAyIDMKIyA3MCAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwYy9ycGMuaCIg
MwoKCgpleHRlcm4gZmRfc2V0ICpfX3JwY190aHJlYWRfc3ZjX2Zkc2V0ICh2b2lkKSBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIHN0cnVjdCBycGNfY3JlYXRlZXJyICpfX3Jw
Y190aHJlYWRfY3JlYXRlZXJyICh2b2lkKQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsKIyA4OCAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwYy9ycGMuaCIgMwpleHRlcm4gc3RydWN0IHBv
bGxmZCAqKl9fcnBjX3RocmVhZF9zdmNfcG9sbGZkICh2b2lkKQogICAgIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50ICpfX3JwY190aHJlYWRfc3ZjX21heF9wb2xsZmQg
KHZvaWQpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKIyAzNTUgImluY2x1ZGUvaW5j
bHVkZXMuaCIgMgojIDM2MyAiaW5jbHVkZS9pbmNsdWRlcy5oIgojIDEgIi91c3IvbG9jYWwvaW5j
bHVkZS9ycGNzdmMveXBfcHJvdC5oIiAxIDMKIyAxMyAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwY3N2
Yy95cF9wcm90LmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvcnBjc3ZjL3lwY2xudC5oIiAx
IDMKIyA1MSAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwY3N2Yy95cGNsbnQuaCIgMwoKCgpzdHJ1Y3Qg
eXBhbGxfY2FsbGJhY2sKICB7CiAgICBpbnQgKCpmb3JlYWNoKSAoaW50IF9fc3RhdHVzLCBjaGFy
ICpfX2tleSwgaW50IF9fa2V5bGVuLAogICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fdmFsLCBp
bnQgX192YWxsZW4sIGNoYXIgKl9fZGF0YSk7CiAgICBjaGFyICpkYXRhOwogIH07CgoKZXh0ZXJu
IGludCB5cF9iaW5kIChfX2NvbnN0IGNoYXIgKikgOwpleHRlcm4gdm9pZCB5cF91bmJpbmQgKF9f
Y29uc3QgY2hhciAqKSA7CmV4dGVybiBpbnQgeXBfZ2V0X2RlZmF1bHRfZG9tYWluIChjaGFyICoq
KSA7CmV4dGVybiBpbnQgeXBfbWF0Y2ggKF9fY29uc3QgY2hhciAqLCBfX2NvbnN0IGNoYXIgKiwg
X19jb25zdCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgaW50LCBjaGFyICoq
LCBpbnQgKikgOwpleHRlcm4gaW50IHlwX2ZpcnN0IChfX2NvbnN0IGNoYXIgKiwgX19jb25zdCBj
aGFyICosIGNoYXIgKiosCiAgICAgICAgICAgICAgICAgICAgIGludCAqLCBjaGFyICoqLCBpbnQg
KikgOwpleHRlcm4gaW50IHlwX25leHQgKF9fY29uc3QgY2hhciAqLCBfX2NvbnN0IGNoYXIgKiwg
X19jb25zdCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBpbnQsIGNoYXIgKios
IGludCAqLCBjaGFyICoqLCBpbnQgKikgOwpleHRlcm4gaW50IHlwX21hc3RlciAoX19jb25zdCBj
aGFyICosIF9fY29uc3QgY2hhciAqLCBjaGFyICoqKSA7CmV4dGVybiBpbnQgeXBfb3JkZXIgKF9f
Y29uc3QgY2hhciAqLCBfX2NvbnN0IGNoYXIgKiwgdW5zaWduZWQgaW50ICopIDsKZXh0ZXJuIGlu
dCB5cF9hbGwgKF9fY29uc3QgY2hhciAqLCBfX2NvbnN0IGNoYXIgKiwKICAgICAgICAgICAgICAg
ICAgIF9fY29uc3Qgc3RydWN0IHlwYWxsX2NhbGxiYWNrICopIDsKZXh0ZXJuIF9fY29uc3QgY2hh
ciAqeXBlcnJfc3RyaW5nIChfX2NvbnN0IGludCkgOwpleHRlcm4gX19jb25zdCBjaGFyICp5cGJp
bmRlcnJfc3RyaW5nIChfX2NvbnN0IGludCkgOwpleHRlcm4gaW50IHlwcHJvdF9lcnIgKF9fY29u
c3QgaW50KSA7CmV4dGVybiBpbnQgeXBfdXBkYXRlIChjaGFyICosIGNoYXIgKiwgdW5zaWduZWQg
aW50LCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICBpbnQsIGNoYXIgKiwgaW50KSA7CgoK
CgoKZXh0ZXJuIGludCBfX3lwX2NoZWNrIChjaGFyICoqKSA7CgoKIyAxNCAiL3Vzci9sb2NhbC9p
bmNsdWRlL3JwY3N2Yy95cF9wcm90LmgiIDIgMwoKCiMgNzQgIi91c3IvbG9jYWwvaW5jbHVkZS9y
cGNzdmMveXBfcHJvdC5oIiAzCnR5cGVkZWYgc3RydWN0IHsKICB1X2ludCBrZXlkYXRfbGVuOwog
IGNoYXIgKmtleWRhdF92YWw7Cn0ga2V5ZGF0X3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgdV9pbnQg
dmFsZGF0X2xlbjsKICBjaGFyICp2YWxkYXRfdmFsOwp9IHZhbGRhdF90OwoKc3RydWN0IHlwbWFw
X3Bhcm1zIHsKICBjaGFyICpkb21haW47CiAgY2hhciAqbWFwOwogIHVuc2lnbmVkIGludCBvcmRl
cm51bTsKICBjaGFyICpvd25lcjsKfTsKCgoKCgpzdHJ1Y3QgeXByZXFfa2V5IHsKICBjb25zdCBj
aGFyICpkb21haW47CiAgY29uc3QgY2hhciAqbWFwOwogIGtleWRhdF90IGtleWRhdDsKfTsKCnN0
cnVjdCB5cHJlcV9ub2tleSB7CiAgY2hhciAqZG9tYWluOwogIGNoYXIgKm1hcDsKfTsKCnN0cnVj
dCB5cHJlcV94ZnIgewogIHN0cnVjdCB5cG1hcF9wYXJtcyBtYXBfcGFybXM7CiAgdV9pbnQgdHJh
bnNpZDsKICB1X2ludCBwcm90bzsKICB1X2ludCBwb3J0Owp9OwojIDEyMCAiL3Vzci9sb2NhbC9p
bmNsdWRlL3JwY3N2Yy95cF9wcm90LmgiIDMKZW51bSB5cHN0YXQgewogIFlQX1RSVUUgPSAxLAoK
ICBZUF9OT01PUkUgPSAyLAoKICBZUF9GQUxTRSA9IDAsCgogIFlQX05PTUFQID0gLTEsCgogIFlQ
X05PRE9NID0gLTIsCgogIFlQX05PS0VZID0gLTMsCgogIFlQX0JBRE9QID0gLTQsCgogIFlQX0JB
RERCID0gLTUsCgogIFlQX1lQRVJSID0gLTYsCgogIFlQX0JBREFSR1MgPSAtNywKCiAgWVBfVkVS
UyA9IC04LAoKCn07CgoKCgoKdHlwZWRlZiBlbnVtIHlwc3RhdCB5cHN0YXQ7CgpzdHJ1Y3QgeXBy
ZXNwX3ZhbCB7CiAgeXBzdGF0IHN0YXR1czsKICB2YWxkYXRfdCB2YWxkYXQ7Cn07CgpzdHJ1Y3Qg
eXByZXNwX2tleV92YWwgewogIHlwc3RhdCBzdGF0dXM7CiMgMTY4ICIvdXNyL2xvY2FsL2luY2x1
ZGUvcnBjc3ZjL3lwX3Byb3QuaCIgMwogIHZhbGRhdF90IHZhbGRhdDsKICBrZXlkYXRfdCBrZXlk
YXQ7Cgp9OwoKc3RydWN0IHlwcmVzcF9tYXN0ZXIgewogIHlwc3RhdCBzdGF0dXM7CiAgY2hhciAq
bWFzdGVyOwp9OwoKc3RydWN0IHlwcmVzcF9vcmRlciB7CiAgeXBzdGF0IHN0YXR1czsKICB1X2lu
dCBvcmRlcm51bTsKfTsKCnN0cnVjdCB5cG1hcGxpc3QgewogIGNoYXIgKm1hcDsKCiAgc3RydWN0
IHlwbWFwbGlzdCAqbmV4dDsKCn07CgpzdHJ1Y3QgeXByZXNwX21hcGxpc3QgewogIHlwc3RhdCBz
dGF0dXM7CiAgc3RydWN0IHlwbWFwbGlzdCAqbGlzdDsKfTsKIyAyNDYgIi91c3IvbG9jYWwvaW5j
bHVkZS9ycGNzdmMveXBfcHJvdC5oIiAzCmVudW0geXBiaW5kX3Jlc3B0eXBlIHtZUEJJTkRfU1VD
Q19WQUwgPSAxLCBZUEJJTkRfRkFJTF9WQUwgPSAyfTsKCnN0cnVjdCB5cGJpbmRfYmluZGluZyB7
CiAgc3RydWN0IGluX2FkZHIgeXBiaW5kX2JpbmRpbmdfYWRkcjsKICB1bnNpZ25lZCBzaG9ydCBp
bnQgeXBiaW5kX2JpbmRpbmdfcG9ydDsKfTsKCnN0cnVjdCB5cGJpbmRfcmVzcCB7CiAgZW51bSB5
cGJpbmRfcmVzcHR5cGUgeXBiaW5kX3N0YXR1czsKICB1bmlvbiB7CiAgICB1X2ludCB5cGJpbmRf
ZXJyb3I7CiAgICBzdHJ1Y3QgeXBiaW5kX2JpbmRpbmcgeXBiaW5kX2JpbmRpbmZvOwogIH0geXBi
aW5kX3Jlc3Bib2R5Owp9OwojIDI3MSAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwY3N2Yy95cF9wcm90
LmgiIDMKc3RydWN0IHlwYmluZF9zZXRkb20gewogIGNoYXIgKnlwc2V0ZG9tX2RvbWFpbjsKICBz
dHJ1Y3QgeXBiaW5kX2JpbmRpbmcgeXBzZXRkb21fYmluZGluZzsKICB1X2ludCB5cHNldGRvbV92
ZXJzOwp9OwojIDI5NSAiL3Vzci9sb2NhbC9pbmNsdWRlL3JwY3N2Yy95cF9wcm90LmgiIDMKZW51
bSB5cHB1c2hfc3RhdHVzIHsKICBZUFBVU0hfU1VDQyA9IDEsCgogIFlQUFVTSF9BR0UgPSAyLAoK
ICBZUFBVU0hfTk9NQVAgPSAtMSwKCiAgWVBQVVNIX05PRE9NID0gLTIsCgogIFlQUFVTSF9SU1JD
ID0gLTMsCgogIFlQUFVTSF9SUEMgPSAtNCwKCiAgWVBQVVNIX01BRERSID0gLTUsCgogIFlQUFVT
SF9ZUEVSUiA9IC02LAoKICBZUFBVU0hfQkFEQVJHUyA9IC03LAoKICBZUFBVU0hfREJNID0gLTgs
CgogIFlQUFVTSF9GSUxFID0gLTksCgogIFlQUFVTSF9TS0VXID0gLTEwLAoKICBZUFBVU0hfQ0xF
QVIgPSAtMTEsCgogIFlQUFVTSF9GT1JDRSA9IC0xMiwKCiAgWVBQVVNIX1hGUkVSUiA9IC0xMywK
CiAgWVBQVVNIX1JFRlVTRUQgPSAtMTQsCgogIFlQUFVTSF9OT0FMSUFTID0gLTE1Cgp9Owp0eXBl
ZGVmIGVudW0geXBwdXNoX3N0YXR1cyB5cHB1c2hfc3RhdHVzOwoKc3RydWN0IHlwcHVzaHJlc3Bf
eGZyIHsKICB1X2ludCB0cmFuc2lkOwogIHlwcHVzaF9zdGF0dXMgc3RhdHVzOwp9OwoKc3RydWN0
IHlwcmVzcF9hbGwgewogIGJvb2xfdCBtb3JlOwogIHVuaW9uIHsKICAgIHN0cnVjdCB5cHJlc3Bf
a2V5X3ZhbCB2YWw7CiAgfSB5cHJlc3BfYWxsX3U7Cn07CgpleHRlcm4gYm9vbF90IHhkcl95cHJl
cV9rZXkgKFhEUiAqX194ZHJzLCBzdHJ1Y3QgeXByZXFfa2V5ICogX19vYmpwKTsKZXh0ZXJuIGJv
b2xfdCB4ZHJfeXByZXFfbm9rZXkgKFhEUiAqX194ZHJzLCBzdHJ1Y3QgeXByZXFfbm9rZXkgKiBf
X29ianApOwpleHRlcm4gYm9vbF90IHhkcl95cHJlcV94ZnIgKFhEUiAqX194ZHJzLCBzdHJ1Y3Qg
eXByZXFfeGZyICogX19vYmpwKTsKZXh0ZXJuIGJvb2xfdCB4ZHJfeXByZXNwX3ZhbCAoWERSICpf
X3hkcnMsIHN0cnVjdCB5cHJlc3BfdmFsICogX19vYmpwKTsKZXh0ZXJuIGJvb2xfdCB4ZHJfeXBy
ZXNwX2tleV92YWwgKFhEUiAqX194ZHJzLCBzdHJ1Y3QgeXByZXNwX2tleV92YWwgKiBfX29ianAp
OwpleHRlcm4gYm9vbF90IHhkcl95cGJpbmRfcmVzcCAoWERSICpfX3hkcnMsIHN0cnVjdCB5cGJp
bmRfcmVzcCAqIF9fb2JqcCk7CmV4dGVybiBib29sX3QgeGRyX3lwYmluZF9zZXRkb20gKFhEUiAq
X194ZHJzLCBzdHJ1Y3QgeXBiaW5kX3NldGRvbSAqIF9fb2JqcCk7CmV4dGVybiBib29sX3QgeGRy
X3lwbWFwX3Bhcm1zIChYRFIgKl9feGRycywgc3RydWN0IHlwbWFwX3Bhcm1zICogX19vYmpwKTsK
ZXh0ZXJuIGJvb2xfdCB4ZHJfeXBwdXNocmVzcF94ZnIgKFhEUiAqX194ZHJzLCBzdHJ1Y3QgeXBw
dXNocmVzcF94ZnIgKiBfX29ianApOwpleHRlcm4gYm9vbF90IHhkcl95cHJlc3Bfb3JkZXIgKFhE
UiAqX194ZHJzLCBzdHJ1Y3QgeXByZXNwX29yZGVyICogX19vYmpwKTsKZXh0ZXJuIGJvb2xfdCB4
ZHJfeXByZXNwX21hc3RlciAoWERSICpfX3hkcnMsIHN0cnVjdCB5cHJlc3BfbWFzdGVyICogX19v
YmpwKTsKZXh0ZXJuIGJvb2xfdCB4ZHJfeXBhbGwgKFhEUiAqX194ZHJzLCBzdHJ1Y3QgeXBhbGxf
Y2FsbGJhY2sgKiBfX29ianApOwpleHRlcm4gYm9vbF90IHhkcl95cHJlc3BfbWFwbGlzdCAoWERS
ICpfX3hkcnMsIHN0cnVjdCB5cHJlc3BfbWFwbGlzdCAqIF9fb2JqcCk7CmV4dGVybiBib29sX3Qg
eGRyX3lwYmluZF9iaW5kaW5nIChYRFIgKl9feGRycywgc3RydWN0IHlwYmluZF9iaW5kaW5nICog
X19vYmpwKTsKZXh0ZXJuIGJvb2xfdCB4ZHJfeXBiaW5kX3Jlc3B0eXBlIChYRFIgKl9feGRycywg
ZW51bSB5cGJpbmRfcmVzcHR5cGUgKiBfX29ianApOwpleHRlcm4gYm9vbF90IHhkcl95cHN0YXQg
KFhEUiAqX194ZHJzLCBlbnVtIHlwYmluZF9yZXNwdHlwZSAqIF9fb2JqcCk7CmV4dGVybiBib29s
X3QgeGRyX3lwcmVzcF9hbGwgKFhEUiAqX194ZHJzLCBzdHJ1Y3QgeXByZXNwX2FsbCAqIF9fb2Jq
cCk7CmV4dGVybiBib29sX3QgeGRyX2RvbWFpbm5hbWUgKFhEUiAqX194ZHJzLCBjaGFyICoqIF9f
b2JqcCk7CgoKIyAzNjQgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgoKCgoKCgoKIyAxICIvdXNyL2xv
Y2FsL2luY2x1ZGUvc3lzL2lwYy5oIiAxIDMKIyAyOSAiL3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9p
cGMuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL2lwYy5oIiAxIDMKIyA0MyAiL3Vz
ci9sb2NhbC9pbmNsdWRlL2JpdHMvaXBjLmgiIDMKc3RydWN0IGlwY19wZXJtCiAgewogICAgX19r
ZXlfdCBfX2tleTsKICAgIF9fdWlkX3QgdWlkOwogICAgX19naWRfdCBnaWQ7CiAgICBfX3VpZF90
IGN1aWQ7CiAgICBfX2dpZF90IGNnaWQ7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgbW9kZTsKICAg
IHVuc2lnbmVkIHNob3J0IGludCBfX3BhZDE7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19zZXE7
CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19wYWQyOwogICAgdW5zaWduZWQgbG9uZyBpbnQgX191
bnVzZWQxOwogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQyOwogIH07CiMgMzAgIi91c3Iv
bG9jYWwvaW5jbHVkZS9zeXMvaXBjLmgiIDIgMwojIDUxICIvdXNyL2xvY2FsL2luY2x1ZGUvc3lz
L2lwYy5oIiAzCgoKCmV4dGVybiBrZXlfdCBmdG9rIChfX2NvbnN0IGNoYXIgKl9fcGF0aG5hbWUs
IGludCBfX3Byb2pfaWQpIDsKCgojIDM3MiAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCgoKCiMgMSAi
L3Vzci9sb2NhbC9pbmNsdWRlL3N5cy9zaG0uaCIgMSAzCiMgMjUgIi91c3IvbG9jYWwvaW5jbHVk
ZS9zeXMvc2htLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYy8zL2xpYi9nY2MtbGliL2k2ODYtcGMt
bGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAyNiAiL3Vzci9sb2NhbC9pbmNs
dWRlL3N5cy9zaG0uaCIgMiAzCgoKCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zaG0u
aCIgMSAzCiMgNDAgIi91c3IvbG9jYWwvaW5jbHVkZS9iaXRzL3NobS5oIiAzCnR5cGVkZWYgdW5z
aWduZWQgbG9uZyBpbnQgc2htYXR0X3Q7CgoKc3RydWN0IHNobWlkX2RzCiAgewogICAgc3RydWN0
IGlwY19wZXJtIHNobV9wZXJtOwogICAgc2l6ZV90IHNobV9zZWdzejsKICAgIF9fdGltZV90IHNo
bV9hdGltZTsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMTsKICAgIF9fdGltZV90IHNo
bV9kdGltZTsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMjsKICAgIF9fdGltZV90IHNo
bV9jdGltZTsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMzsKICAgIF9fcGlkX3Qgc2ht
X2NwaWQ7CiAgICBfX3BpZF90IHNobV9scGlkOwogICAgc2htYXR0X3Qgc2htX25hdHRjaDsKICAg
IHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkNDsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51
c2VkNTsKICB9OwojIDcwICIvdXNyL2xvY2FsL2luY2x1ZGUvYml0cy9zaG0uaCIgMwpzdHJ1Y3Qg
c2htaW5mbwogIHsKICAgIHVuc2lnbmVkIGxvbmcgaW50IHNobW1heDsKICAgIHVuc2lnbmVkIGxv
bmcgaW50IHNobW1pbjsKICAgIHVuc2lnbmVkIGxvbmcgaW50IHNobW1uaTsKICAgIHVuc2lnbmVk
IGxvbmcgaW50IHNobXNlZzsKICAgIHVuc2lnbmVkIGxvbmcgaW50IHNobWFsbDsKICAgIHVuc2ln
bmVkIGxvbmcgaW50IF9fdW51c2VkMTsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMjsK
ICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMzsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9f
dW51c2VkNDsKICB9OwoKc3RydWN0IHNobV9pbmZvCiAgewogICAgaW50IHVzZWRfaWRzOwogICAg
dW5zaWduZWQgbG9uZyBpbnQgc2htX3RvdDsKICAgIHVuc2lnbmVkIGxvbmcgaW50IHNobV9yc3M7
CiAgICB1bnNpZ25lZCBsb25nIGludCBzaG1fc3dwOwogICAgdW5zaWduZWQgbG9uZyBpbnQgc3dh
cF9hdHRlbXB0czsKICAgIHVuc2lnbmVkIGxvbmcgaW50IHN3YXBfc3VjY2Vzc2VzOwogIH07CiMg
MzIgIi91c3IvbG9jYWwvaW5jbHVkZS9zeXMvc2htLmgiIDIgMwojIDQ0ICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvc3lzL3NobS5oIiAzCgoKCgpleHRlcm4gaW50IF9fZ2V0cGFnZXNpemUgKHZvaWQpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgoKZXh0ZXJuIGludCBzaG1jdGwgKGludCBf
X3NobWlkLCBpbnQgX19jbWQsIHN0cnVjdCBzaG1pZF9kcyAqX19idWYpIDsKCgpleHRlcm4gaW50
IHNobWdldCAoa2V5X3QgX19rZXksIHNpemVfdCBfX3NpemUsIGludCBfX3NobWZsZykgOwoKCmV4
dGVybiB2b2lkICpzaG1hdCAoaW50IF9fc2htaWQsIF9fY29uc3Qgdm9pZCAqX19zaG1hZGRyLCBp
bnQgX19zaG1mbGcpCiAgICAgOwoKCmV4dGVybiBpbnQgc2htZHQgKF9fY29uc3Qgdm9pZCAqX19z
aG1hZGRyKSA7CgoKIyAzNzYgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgoKCgojIDEgIi91c3IvbG9j
YWwvaW5jbHVkZS9pY29udi5oIiAxIDMKIyAyNCAiL3Vzci9sb2NhbC9pbmNsdWRlL2ljb252Lmgi
IDMKIyAxICIvdXNyL2xvY2FsL2djYy8zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMu
MS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAyNSAiL3Vzci9sb2NhbC9pbmNsdWRlL2ljb252Lmgi
IDIgMwoKCgoKCnR5cGVkZWYgdm9pZCAqaWNvbnZfdDsKCgoKCmV4dGVybiBpY29udl90IGljb252
X29wZW4gKF9fY29uc3QgY2hhciAqX190b2NvZGUsIF9fY29uc3QgY2hhciAqX19mcm9tY29kZSkK
ICAgICA7CgoKCgpleHRlcm4gc2l6ZV90IGljb252IChpY29udl90IF9fY2QsIGNoYXIgKipfX3Jl
c3RyaWN0IF9faW5idWYsCiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBf
X2luYnl0ZXNsZWZ0LAogICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX291
dGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fb3V0Ynl0ZXNs
ZWZ0KTsKCgpleHRlcm4gaW50IGljb252X2Nsb3NlIChpY29udl90IF9fY2QpIDsKCgojIDM4MCAi
aW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgMzg5ICJpbmNsdWRlL2luY2x1ZGVzLmgiCiMgMSAiL3Vz
ci9sb2NhbC9pbmNsdWRlL2xkYXAuaCIgMSAzCiMgMjggIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFw
LmgiIDMKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvbGJlci5oIiAxIDMKIyAyNyAiL3Vzci9sb2Nh
bC9pbmNsdWRlL2xiZXIuaCIgMwojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9sYmVyX3R5cGVzLmgi
IDEgMwojIDIxICIvdXNyL2xvY2FsL2luY2x1ZGUvbGJlcl90eXBlcy5oIiAzCiMgMSAiL3Vzci9s
b2NhbC9pbmNsdWRlL2xkYXBfY2RlZnMuaCIgMSAzCiMgMjIgIi91c3IvbG9jYWwvaW5jbHVkZS9s
YmVyX3R5cGVzLmgiIDIgMwoKCiMgNDAgIi91c3IvbG9jYWwvaW5jbHVkZS9sYmVyX3R5cGVzLmgi
IDMKdHlwZWRlZiBpbnQgYmVyX2ludF90OwoKCnR5cGVkZWYgc2lnbmVkIGludCBiZXJfc2ludF90
Owp0eXBlZGVmIHVuc2lnbmVkIGludCBiZXJfdWludF90OwoKCnR5cGVkZWYgdW5zaWduZWQgbG9u
ZyBiZXJfdGFnX3Q7CgoKdHlwZWRlZiBpbnQgYmVyX3NvY2tldF90OwoKCnR5cGVkZWYgdW5zaWdu
ZWQgbG9uZyBiZXJfbGVuX3Q7CgoKdHlwZWRlZiBzaWduZWQgbG9uZyBiZXJfc2xlbl90OwoKCiMg
MjggIi91c3IvbG9jYWwvaW5jbHVkZS9sYmVyLmgiIDIgMwoKCiMgMTA4ICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvbGJlci5oIiAzCnR5cGVkZWYgaW50KiAoKkJFUl9FUlJOT19GTikgKCB2b2lkICk7Cgp0
eXBlZGVmIHZvaWQgKCpCRVJfTE9HX1BSSU5UX0ZOKSAoIGNvbnN0IGNoYXIgKmJ1ZiApOwoKdHlw
ZWRlZiB2b2lkKiAoKkJFUl9NRU1BTExPQ19GTikgKCBiZXJfbGVuX3Qgc2l6ZSApOwp0eXBlZGVm
IHZvaWQqICgqQkVSX01FTUNBTExPQ19GTikgKCBiZXJfbGVuX3QgbiwgYmVyX2xlbl90IHNpemUg
KTsKdHlwZWRlZiB2b2lkKiAoKkJFUl9NRU1SRUFMTE9DX0ZOKSAoIHZvaWQgKnAsIGJlcl9sZW5f
dCBzaXplICk7CnR5cGVkZWYgdm9pZCAoKkJFUl9NRU1GUkVFX0ZOKSAoIHZvaWQgKnAgKTsKCnR5
cGVkZWYgc3RydWN0IGxiZXJfbWVtb3J5X2ZucyB7CiAgICAgICAgQkVSX01FTUFMTE9DX0ZOIGJt
Zl9tYWxsb2M7CiAgICAgICAgQkVSX01FTUNBTExPQ19GTiBibWZfY2FsbG9jOwogICAgICAgIEJF
Ul9NRU1SRUFMTE9DX0ZOIGJtZl9yZWFsbG9jOwogICAgICAgIEJFUl9NRU1GUkVFX0ZOIGJtZl9m
cmVlOwp9IEJlck1lbW9yeUZ1bmN0aW9uczsKIyAxNTcgIi91c3IvbG9jYWwvaW5jbHVkZS9sYmVy
LmgiIDMKdHlwZWRlZiBzdHJ1Y3QgYmVyZWxlbWVudCBCZXJFbGVtZW50Owp0eXBlZGVmIHN0cnVj
dCBzb2NrYnVmIFNvY2tidWY7CnR5cGVkZWYgc3RydWN0IHNlcW9yc2V0IFNlcW9yc2V0OwoKdHlw
ZWRlZiBzdHJ1Y3Qgc29ja2J1Zl9pbyBTb2NrYnVmX0lPOwoKCnR5cGVkZWYgc3RydWN0IHNvY2ti
dWZfaW9fZGVzYyB7CiAgICAgICAgaW50IHNiaW9kX2xldmVsOwogICAgICAgIFNvY2tidWYgKnNi
aW9kX3NiOwogICAgICAgIFNvY2tidWZfSU8gKnNiaW9kX2lvOwogICAgICAgIHZvaWQgKnNiaW9k
X3B2dDsKICAgICAgICBzdHJ1Y3Qgc29ja2J1Zl9pb19kZXNjICpzYmlvZF9uZXh0Owp9IFNvY2ti
dWZfSU9fRGVzYzsKCgpzdHJ1Y3Qgc29ja2J1Zl9pbyB7CiAgICAgICAgaW50ICgqc2JpX3NldHVw
KSggU29ja2J1Zl9JT19EZXNjICpzYmlvZCwgdm9pZCAqYXJnICk7CiAgICAgICAgaW50ICgqc2Jp
X3JlbW92ZSkoIFNvY2tidWZfSU9fRGVzYyAqc2Jpb2QgKTsKICAgICAgICBpbnQgKCpzYmlfY3Ry
bCkoIFNvY2tidWZfSU9fRGVzYyAqc2Jpb2QsIGludCBvcHQsIHZvaWQgKmFyZyk7CgogICAgICAg
IGJlcl9zbGVuX3QgKCpzYmlfcmVhZCkoIFNvY2tidWZfSU9fRGVzYyAqc2Jpb2QsIHZvaWQgKmJ1
ZiwKICAgICAgICAgICAgICAgIGJlcl9sZW5fdCBsZW4gKTsKICAgICAgICBiZXJfc2xlbl90ICgq
c2JpX3dyaXRlKSggU29ja2J1Zl9JT19EZXNjICpzYmlvZCwgdm9pZCAqYnVmLAogICAgICAgICAg
ICAgICAgYmVyX2xlbl90IGxlbiApOwoKICAgICAgICBpbnQgKCpzYmlfY2xvc2UpKCBTb2NrYnVm
X0lPX0Rlc2MgKnNiaW9kICk7Cn07CiMgMTk5ICIvdXNyL2xvY2FsL2luY2x1ZGUvbGJlci5oIiAz
CnR5cGVkZWYgc3RydWN0IGJlcnZhbCB7CiAgICAgICAgYmVyX2xlbl90IGJ2X2xlbjsKICAgICAg
ICBjaGFyICpidl92YWw7Cn0gQmVyVmFsdWU7CgoKCgoKCmV4dGVybiB2b2lkCmJlcl9lcnJvcl9w
cmludCAoIGNvbnN0IGNoYXIgKmRhdGEgKTsKCgpleHRlcm4gdm9pZApiZXJfYnByaW50ICggY29u
c3QgY2hhciAqZGF0YSwgYmVyX2xlbl90IGxlbiApOwoKCmV4dGVybiB2b2lkCmJlcl9kdW1wICgg
QmVyRWxlbWVudCAqYmVyLCBpbnQgaW5vdXQgKTsKCgpleHRlcm4gdm9pZApiZXJfc29zX2R1bXAg
KCBTZXFvcnNldCAqc29zICk7CgoKCgoKCnR5cGVkZWYgaW50ICgqQkVSRGVjb2RlQ2FsbGJhY2sp
ICggQmVyRWxlbWVudCAqYmVyLCB2b2lkICpkYXRhLCBpbnQgbW9kZSApOwoKCgoKZXh0ZXJuIGJl
cl90YWdfdApiZXJfZ2V0X3RhZyAoIEJlckVsZW1lbnQgKmJlciApOwoKCmV4dGVybiBiZXJfdGFn
X3QKYmVyX3NraXBfdGFnICggQmVyRWxlbWVudCAqYmVyLCBiZXJfbGVuX3QgKmxlbiApOwoKCgpl
eHRlcm4gYmVyX3RhZ190CmJlcl9wZWVrX3RhZyAoIEJlckVsZW1lbnQgKmJlciwgYmVyX2xlbl90
ICpsZW4gKTsKCgoKZXh0ZXJuIGJlcl90YWdfdApiZXJfZ2V0X2ludCAoIEJlckVsZW1lbnQgKmJl
ciwgYmVyX2ludF90ICpudW0gKTsKCgoKZXh0ZXJuIGJlcl90YWdfdApiZXJfZ2V0X2VudW0gKCBC
ZXJFbGVtZW50ICpiZXIsIGJlcl9pbnRfdCAqbnVtICk7CgoKCmV4dGVybiBiZXJfdGFnX3QKYmVy
X2dldF9zdHJpbmdiICggQmVyRWxlbWVudCAqYmVyLCBjaGFyICpidWYsIGJlcl9sZW5fdCAqbGVu
ICk7CgoKCgpleHRlcm4gYmVyX3RhZ190CmJlcl9nZXRfc3RyaW5nYSAoIEJlckVsZW1lbnQgKmJl
ciwgY2hhciAqKmJ1ZiApOwoKCgpleHRlcm4gYmVyX3RhZ190CmJlcl9nZXRfc3RyaW5nYWwgKCBC
ZXJFbGVtZW50ICpiZXIsIHN0cnVjdCBiZXJ2YWwgKipidiApOwoKCgpleHRlcm4gYmVyX3RhZ190
CmJlcl9nZXRfYml0c3RyaW5nYSAoIEJlckVsZW1lbnQgKmJlciwgY2hhciAqKmJ1ZiwgYmVyX2xl
bl90ICpsZW4gKTsKCgoKCmV4dGVybiBiZXJfdGFnX3QKYmVyX2dldF9udWxsICggQmVyRWxlbWVu
dCAqYmVyICk7CgoKZXh0ZXJuIGJlcl90YWdfdApiZXJfZ2V0X2Jvb2xlYW4gKCBCZXJFbGVtZW50
ICpiZXIsIGJlcl9pbnRfdCAqYm9vbHZhbCApOwoKCgpleHRlcm4gYmVyX3RhZ190CmJlcl9maXJz
dF9lbGVtZW50ICggQmVyRWxlbWVudCAqYmVyLCBiZXJfbGVuX3QgKmxlbiwgY2hhciAqKmxhc3Qg
KTsKCgoKCmV4dGVybiBiZXJfdGFnX3QKYmVyX25leHRfZWxlbWVudCAoIEJlckVsZW1lbnQgKmJl
ciwgYmVyX2xlbl90ICpsZW4sIGNvbnN0IGNoYXIgKmxhc3QgKTsKCgoKCmV4dGVybiBiZXJfdGFn
X3QKYmVyX3NjYW5mICggQmVyRWxlbWVudCAqYmVyLCBjb25zdCBjaGFyICpmbXQsIC4uLiApOwoK
CgoKCgoKdHlwZWRlZiBpbnQgKCpCRVJFbmNvZGVDYWxsYmFjaykgKCBCZXJFbGVtZW50ICpiZXIs
IHZvaWQgKmRhdGEgKTsKCgoKZXh0ZXJuIGludApiZXJfcHV0X2VudW0gKCBCZXJFbGVtZW50ICpi
ZXIsIGJlcl9pbnRfdCBudW0sIGJlcl90YWdfdCB0YWcgKTsKCgoKCmV4dGVybiBpbnQKYmVyX3B1
dF9pbnQgKCBCZXJFbGVtZW50ICpiZXIsIGJlcl9pbnRfdCBudW0sIGJlcl90YWdfdCB0YWcgKTsK
CgoKCmV4dGVybiBpbnQKYmVyX3B1dF9vc3RyaW5nICggQmVyRWxlbWVudCAqYmVyLCBjb25zdCBj
aGFyICpzdHIsIGJlcl9sZW5fdCBsZW4sIGJlcl90YWdfdCB0YWcgKTsKCgoKCgpleHRlcm4gaW50
CmJlcl9wdXRfYmVydmFsICggQmVyRWxlbWVudCAqYmVyLCBjb25zdCBzdHJ1Y3QgYmVydmFsICpi
diwgYmVyX3RhZ190IHRhZyApOwoKCgoKZXh0ZXJuIGludApiZXJfcHV0X3N0cmluZyAoIEJlckVs
ZW1lbnQgKmJlciwgY29uc3QgY2hhciAqc3RyLCBiZXJfdGFnX3QgdGFnICk7CgoKCgpleHRlcm4g
aW50CmJlcl9wdXRfYml0c3RyaW5nICggQmVyRWxlbWVudCAqYmVyLCBjb25zdCBjaGFyICpzdHIs
IGJlcl9sZW5fdCBiaXRsZW4sIGJlcl90YWdfdCB0YWcgKTsKCgoKCgpleHRlcm4gaW50CmJlcl9w
dXRfbnVsbCAoIEJlckVsZW1lbnQgKmJlciwgYmVyX3RhZ190IHRhZyApOwoKCgpleHRlcm4gaW50
CmJlcl9wdXRfYm9vbGVhbiAoIEJlckVsZW1lbnQgKmJlciwgYmVyX2ludF90IGJvb2x2YWwsIGJl
cl90YWdfdCB0YWcgKTsKCgoKCmV4dGVybiBpbnQKYmVyX3N0YXJ0X3NlcSAoIEJlckVsZW1lbnQg
KmJlciwgYmVyX3RhZ190IHRhZyApOwoKCgpleHRlcm4gaW50CmJlcl9zdGFydF9zZXQgKCBCZXJF
bGVtZW50ICpiZXIsIGJlcl90YWdfdCB0YWcgKTsKCgoKZXh0ZXJuIGludApiZXJfcHV0X3NlcSAo
IEJlckVsZW1lbnQgKmJlciApOwoKCmV4dGVybiBpbnQKYmVyX3B1dF9zZXQgKCBCZXJFbGVtZW50
ICpiZXIgKTsKCgpleHRlcm4gaW50CmJlcl9wcmludGYgKCBCZXJFbGVtZW50ICpiZXIsIGNvbnN0
IGNoYXIgKmZtdCwgLi4uICk7CiMgMzkyICIvdXNyL2xvY2FsL2luY2x1ZGUvbGJlci5oIiAzCmV4
dGVybiBiZXJfc2xlbl90CmJlcl9yZWFkICggQmVyRWxlbWVudCAqYmVyLCBjaGFyICpidWYsIGJl
cl9sZW5fdCBsZW4gKTsKCgoKCmV4dGVybiBiZXJfc2xlbl90CmJlcl93cml0ZSAoIEJlckVsZW1l
bnQgKmJlciwgY29uc3QgY2hhciAqYnVmLCBiZXJfbGVuX3QgbGVuLCBpbnQgbm9zb3MgKTsKCgoK
CgpleHRlcm4gdm9pZApiZXJfZnJlZSAoIEJlckVsZW1lbnQgKmJlciwgaW50IGZyZWVidWYgKTsK
CgoKZXh0ZXJuIGludApiZXJfZmx1c2ggKCBTb2NrYnVmICpzYiwgQmVyRWxlbWVudCAqYmVyLCBp
bnQgZnJlZWl0ICk7CgoKCgpleHRlcm4gQmVyRWxlbWVudCAqCmJlcl9hbGxvYyAoIHZvaWQgKTsK
CmV4dGVybiBCZXJFbGVtZW50ICoKZGVyX2FsbG9jICggdm9pZCApOwoKZXh0ZXJuIEJlckVsZW1l
bnQgKgpiZXJfYWxsb2NfdCAoIGludCBiZXJvcHRpb25zICk7CgoKZXh0ZXJuIEJlckVsZW1lbnQg
KgpiZXJfZHVwICggQmVyRWxlbWVudCAqYmVyICk7CgoKZXh0ZXJuIGJlcl90YWdfdApiZXJfZ2V0
X25leHQgKCBTb2NrYnVmICpzYiwgYmVyX2xlbl90ICpsZW4sIEJlckVsZW1lbnQgKmJlciApOwoK
CgoKZXh0ZXJuIHZvaWQKYmVyX2luaXRfd19udWxsYyAoIEJlckVsZW1lbnQgKmJlciwgaW50IG9w
dGlvbnMgKTsKCgoKZXh0ZXJuIHZvaWQKYmVyX3Jlc2V0ICggQmVyRWxlbWVudCAqYmVyLCBpbnQg
d2FzX3dyaXRpbmcgKTsKCgoKZXh0ZXJuIEJlckVsZW1lbnQgKgpiZXJfaW5pdCAoIHN0cnVjdCBi
ZXJ2YWwgKmJ2ICk7CgoKZXh0ZXJuIGludApiZXJfZmxhdHRlbiAoIEJlckVsZW1lbnQgKmJlciwg
c3RydWN0IGJlcnZhbCAqKmJ2UHRyICk7CgoKCgoKCgpleHRlcm4gaW50CmJlcl9nZXRfb3B0aW9u
ICggdm9pZCAqaXRlbSwgaW50IG9wdGlvbiwgdm9pZCAqb3V0dmFsdWUpOwoKCgoKZXh0ZXJuIGlu
dApiZXJfc2V0X29wdGlvbiAoIHZvaWQgKml0ZW0sIGludCBvcHRpb24sIGNvbnN0IHZvaWQgKmlu
dmFsdWUpOwojIDQ3NSAiL3Vzci9sb2NhbC9pbmNsdWRlL2xiZXIuaCIgMwpleHRlcm4gU29ja2J1
ZiAqCmJlcl9zb2NrYnVmX2FsbG9jICggdm9pZCApOwoKCmV4dGVybiB2b2lkCmJlcl9zb2NrYnVm
X2ZyZWUgKCBTb2NrYnVmICpzYiApOwoKCmV4dGVybiBpbnQKYmVyX3NvY2tidWZfYWRkX2lvICgg
U29ja2J1ZiAqc2IsIFNvY2tidWZfSU8gKnNiaW8sIGludCBsYXllciwgdm9pZCAqYXJnICk7CgoK
CgoKZXh0ZXJuIGludApiZXJfc29ja2J1Zl9yZW1vdmVfaW8gKCBTb2NrYnVmICpzYiwgU29ja2J1
Zl9JTyAqc2JpbywgaW50IGxheWVyICk7CgoKCgpleHRlcm4gaW50CmJlcl9zb2NrYnVmX2N0cmwg
KCBTb2NrYnVmICpzYiwgaW50IG9wdCwgdm9pZCAqYXJnICk7CgoKCgpleHRlcm4gU29ja2J1Zl9J
TyBiZXJfc29ja2J1Zl9pb190Y3A7CmV4dGVybiBTb2NrYnVmX0lPIGJlcl9zb2NrYnVmX2lvX3Jl
YWRhaGVhZDsKZXh0ZXJuIFNvY2tidWZfSU8gYmVyX3NvY2tidWZfaW9fZmQ7CmV4dGVybiBTb2Nr
YnVmX0lPIGJlcl9zb2NrYnVmX2lvX2RlYnVnOwoKCgoKZXh0ZXJuIHZvaWQgKgpiZXJfbWVtYWxs
b2MgKCBiZXJfbGVuX3QgcyApOwoKCmV4dGVybiB2b2lkICoKYmVyX21lbXJlYWxsb2MgKCB2b2lk
KiBwLCBiZXJfbGVuX3QgcyApOwoKCgpleHRlcm4gdm9pZCAqCmJlcl9tZW1jYWxsb2MgKCBiZXJf
bGVuX3QgbiwgYmVyX2xlbl90IHMgKTsKCgoKZXh0ZXJuIHZvaWQKYmVyX21lbWZyZWUgKCB2b2lk
KiBwICk7CgoKZXh0ZXJuIHZvaWQKYmVyX21lbXZmcmVlICggdm9pZCoqIHZlY3RvciApOwoKCmV4
dGVybiB2b2lkCmJlcl9idmZyZWUgKCBzdHJ1Y3QgYmVydmFsICpidiApOwoKCmV4dGVybiB2b2lk
CmJlcl9idmVjZnJlZSAoIHN0cnVjdCBiZXJ2YWwgKipidiApOwoKCmV4dGVybiBpbnQKYmVyX2J2
ZWNhZGQgKCBzdHJ1Y3QgYmVydmFsICoqKmJ2ZWMsIHN0cnVjdCBiZXJ2YWwgKmJ2ICk7CgoKCmV4
dGVybiBzdHJ1Y3QgYmVydmFsICoKYmVyX2J2ZHVwICggY29uc3Qgc3RydWN0IGJlcnZhbCAqYnYg
KTsKCgpleHRlcm4gc3RydWN0IGJlcnZhbCAqCmJlcl9idnN0ciAoIGNvbnN0IGNoYXIgKiApOwoK
CmV4dGVybiBzdHJ1Y3QgYmVydmFsICoKYmVyX2J2c3RyZHVwICggY29uc3QgY2hhciAqICk7CgoK
ZXh0ZXJuIGNoYXIgKgpiZXJfc3RyZHVwICggY29uc3QgY2hhciAqICk7CgoKCgoKZXh0ZXJuIGlu
dCAqIGJlcl9lcnJub19hZGRyICh2b2lkKTsKCgoKCgoKCiMgMjkgIi91c3IvbG9jYWwvaW5jbHVk
ZS9sZGFwLmgiIDIgMwoKCiMgNTkgIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFwLmgiIDMKIyAxICIv
dXNyL2xvY2FsL2luY2x1ZGUvbGRhcF9mZWF0dXJlcy5oIiAxIDMKIyA2MCAiL3Vzci9sb2NhbC9p
bmNsdWRlL2xkYXAuaCIgMiAzCiMgMTY2ICIvdXNyL2xvY2FsL2luY2x1ZGUvbGRhcC5oIiAzCnR5
cGVkZWYgc3RydWN0IGxkYXBhcGlpbmZvIHsKICAgICAgICBpbnQgbGRhcGFpX2luZm9fdmVyc2lv
bjsKICAgICAgICBpbnQgbGRhcGFpX2FwaV92ZXJzaW9uOwogICAgICAgIGludCBsZGFwYWlfcHJv
dG9jb2xfdmVyc2lvbjsKICAgICAgICBjaGFyICoqbGRhcGFpX2V4dGVuc2lvbnM7CiAgICAgICAg
Y2hhciAqbGRhcGFpX3ZlbmRvcl9uYW1lOwogICAgICAgIGludCBsZGFwYWlfdmVuZG9yX3ZlcnNp
b247Cn0gTERBUEFQSUluZm87CgoKdHlwZWRlZiBzdHJ1Y3QgbGRhcF9hcGlmZWF0dXJlX2luZm8g
ewogICAgICAgIGludCBsZGFwYWlmX2luZm9fdmVyc2lvbjsKICAgICAgICBjaGFyKiBsZGFwYWlm
X25hbWU7CiAgICAgICAgaW50IGxkYXBhaWZfdmVyc2lvbjsKfSBMREFQQVBJRmVhdHVyZUluZm87
Cgp0eXBlZGVmIHN0cnVjdCBsZGFwY29udHJvbCB7CiAgICAgICAgY2hhciAqIGxkY3RsX29pZDsK
ICAgICAgICBzdHJ1Y3QgYmVydmFsIGxkY3RsX3ZhbHVlOwogICAgICAgIGNoYXIgbGRjdGxfaXNj
cml0aWNhbDsKfSBMREFQQ29udHJvbDsKIyA0MzYgIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFwLmgi
IDMKdHlwZWRlZiBzdHJ1Y3QgbGRhcG1zZyBMREFQTWVzc2FnZTsKCgp0eXBlZGVmIHN0cnVjdCBs
ZGFwbW9kIHsKICAgICAgICBpbnQgbW9kX29wOwojIDQ1MSAiL3Vzci9sb2NhbC9pbmNsdWRlL2xk
YXAuaCIgMwogICAgICAgIGNoYXIgKm1vZF90eXBlOwogICAgICAgIHVuaW9uIG1vZF92YWxzX3Ug
ewogICAgICAgICAgICAgICAgY2hhciAqKm1vZHZfc3RydmFsczsKICAgICAgICAgICAgICAgIHN0
cnVjdCBiZXJ2YWwgKiptb2R2X2J2YWxzOwogICAgICAgIH0gbW9kX3ZhbHM7CgoKfSBMREFQTW9k
OwoKCgoKCnR5cGVkZWYgc3RydWN0IGxkYXBfZmlsdF9pbmZvIHsKICAgICAgICBjaGFyICpsZmlf
ZmlsdGVyOwogICAgICAgIGNoYXIgKmxmaV9kZXNjOwogICAgICAgIGludCBsZmlfc2NvcGU7CiAg
ICAgICAgaW50IGxmaV9pc2V4YWN0OwogICAgICAgIHN0cnVjdCBsZGFwX2ZpbHRfaW5mbyAqbGZp
X25leHQ7Cn0gTERBUEZpbHRJbmZvOwoKdHlwZWRlZiBzdHJ1Y3QgbGRhcF9maWx0X2xpc3Qgewog
ICAgY2hhciAqbGZsX3RhZzsKICAgIGNoYXIgKmxmbF9wYXR0ZXJuOwogICAgY2hhciAqbGZsX2Rl
bGltczsKICAgIExEQVBGaWx0SW5mbyAqbGZsX2lsaXN0OwogICAgc3RydWN0IGxkYXBfZmlsdF9s
aXN0ICpsZmxfbmV4dDsKfSBMREFQRmlsdExpc3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCBsZGFwX2Zp
bHRfZGVzYyB7CiAgICAgICAgTERBUEZpbHRMaXN0ICpsZmRfZmlsdGxpc3Q7CiAgICAgICAgTERB
UEZpbHRJbmZvICpsZmRfY3VyZmlwOwogICAgICAgIExEQVBGaWx0SW5mbyBsZmRfcmV0Zmk7CiAg
ICAgICAgY2hhciBsZmRfZmlsdGVyWyAxMDI0IF07CiAgICAgICAgY2hhciAqbGZkX2N1cnZhbDsK
ICAgICAgICBjaGFyICpsZmRfY3VydmFsY29weTsKICAgICAgICBjaGFyICoqbGZkX2N1cnZhbHdv
cmRzOwogICAgICAgIGNoYXIgKmxmZF9maWx0cHJlZml4OwogICAgICAgIGNoYXIgKmxmZF9maWx0
c3VmZml4Owp9IExEQVBGaWx0RGVzYzsKCgoKCgoKCnR5cGVkZWYgc3RydWN0IGxkYXAgTERBUDsK
IyA1MTkgIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFwLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgbGRhcF9m
cmllbmRseSB7CiAgICAgICAgY2hhciAqbGZfdW5mcmllbmRseTsKICAgICAgICBjaGFyICpsZl9m
cmllbmRseTsKfSBMREFQRnJpZW5kbHlNYXA7CgoKCgp0eXBlZGVmIHN0cnVjdCBsZGFwX3VybF9k
ZXNjIHsKICAgICAgICBzdHJ1Y3QgbGRhcF91cmxfZGVzYyAqbHVkX25leHQ7CiAgICAgICAgY2hh
ciAqbHVkX3NjaGVtZTsKICAgICAgICBjaGFyICpsdWRfaG9zdDsKICAgICAgICBpbnQgbHVkX3Bv
cnQ7CiAgICAgICAgY2hhciAqbHVkX2RuOwogICAgICAgIGNoYXIgKipsdWRfYXR0cnM7CiAgICAg
ICAgaW50IGx1ZF9zY29wZTsKICAgICAgICBjaGFyICpsdWRfZmlsdGVyOwogICAgICAgIGNoYXIg
KipsdWRfZXh0czsKICAgICAgICBpbnQgbHVkX2NyaXRfZXh0czsKfSBMREFQVVJMRGVzYzsKIyA1
NTcgIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFwLmgiIDMKc3RydWN0IHRpbWV2YWw7CgoKCgpleHRl
cm4gaW50CmxkYXBfZ2V0X29wdGlvbiAoIExEQVAgKmxkLCBpbnQgb3B0aW9uLCB2b2lkICpvdXR2
YWx1ZSk7CgoKCgpleHRlcm4gaW50CmxkYXBfc2V0X29wdGlvbiAoIExEQVAgKmxkLCBpbnQgb3B0
aW9uLCBjb25zdCB2b2lkICppbnZhbHVlKTsKCgoKCgp0eXBlZGVmIGludCAoTERBUF9SRUJJTkRf
UFJPQykgKCBMREFQICpsZCwgY29uc3QgY2hhciAqdXJsLCBpbnQgcmVxdWVzdCwgYmVyX2ludF90
IG1zZ2lkICk7CgoKZXh0ZXJuIGludApsZGFwX3NldF9yZWJpbmRfcHJvYyAoIExEQVAgKmxkLCBM
REFQX1JFQklORF9QUk9DICpsZGFwX3Byb2MpOwoKCgoKCgpleHRlcm4gaW50CmxkYXBfY3JlYXRl
X2NvbnRyb2wgKCBjb25zdCBjaGFyICpyZXF1ZXN0T0lELCBCZXJFbGVtZW50ICpiZXIsIGludCBp
c2NyaXRpY2FsLCBMREFQQ29udHJvbCAqKmN0cmxwICk7CgoKCgoKZXh0ZXJuIHZvaWQKbGRhcF9j
b250cm9sX2ZyZWUgKCBMREFQQ29udHJvbCAqY3RybCApOwoKCmV4dGVybiB2b2lkCmxkYXBfY29u
dHJvbHNfZnJlZSAoIExEQVBDb250cm9sICoqY3RybHMgKTsKCgoKCgpleHRlcm4gaW50CmxkYXBf
ZG9tYWluMmRuICggY29uc3QgY2hhciogZG9tYWluLCBjaGFyKiogZG4gKTsKCgoKZXh0ZXJuIGlu
dApsZGFwX2RuMmRvbWFpbiAoIGNvbnN0IGNoYXIqIGRuLCBjaGFyKiogZG9tYWluICk7CgoKCmV4
dGVybiBpbnQKbGRhcF9kb21haW4yaG9zdGxpc3QgKCBjb25zdCBjaGFyICpkb21haW4sIGNoYXIq
KiBob3N0bGlzdCApOwoKCgoKCgpleHRlcm4gaW50CmxkYXBfZXh0ZW5kZWRfb3BlcmF0aW9uICgg
TERBUCAqbGQsIGNvbnN0IGNoYXIgKnJlcW9pZCwgc3RydWN0IGJlcnZhbCAqcmVxZGF0YSwgTERB
UENvbnRyb2wgKipzZXJ2ZXJjdHJscywgTERBUENvbnRyb2wgKipjbGllbnRjdHJscywgaW50ICpt
c2dpZHAgKTsKCgoKCgoKCmV4dGVybiBpbnQKbGRhcF9leHRlbmRlZF9vcGVyYXRpb25fcyAoIExE
QVAgKmxkLCBjb25zdCBjaGFyICpyZXFvaWQsIHN0cnVjdCBiZXJ2YWwgKnJlcWRhdGEsIExEQVBD
b250cm9sICoqc2VydmVyY3RybHMsIExEQVBDb250cm9sICoqY2xpZW50Y3RybHMsIGNoYXIgKipy
ZXRvaWRwLCBzdHJ1Y3QgYmVydmFsICoqcmV0ZGF0YXAgKTsKIyA2NDEgIi91c3IvbG9jYWwvaW5j
bHVkZS9sZGFwLmgiIDMKZXh0ZXJuIGludApsZGFwX3BhcnNlX2V4dGVuZGVkX3Jlc3VsdCAoIExE
QVAgKmxkLCBMREFQTWVzc2FnZSAqcmVzLCBjaGFyICoqcmV0b2lkcCwgc3RydWN0IGJlcnZhbCAq
KnJldGRhdGFwLCBpbnQgZnJlZWl0ICk7CgoKCgoKCmV4dGVybiBpbnQKbGRhcF9wYXJzZV9leHRl
bmRlZF9wYXJ0aWFsICggTERBUCAqbGQsIExEQVBNZXNzYWdlICpyZXMsIGNoYXIgKipyZXRvaWRw
LCBzdHJ1Y3QgYmVydmFsICoqcmV0ZGF0YXAsIExEQVBDb250cm9sICoqKnNlcnZlcmN0cmxzLCBp
bnQgZnJlZWl0ICk7CiMgNjYxICIvdXNyL2xvY2FsL2luY2x1ZGUvbGRhcC5oIiAzCmV4dGVybiBp
bnQKbGRhcF9hYmFuZG9uX2V4dCAoIExEQVAgKmxkLCBpbnQgbXNnaWQsIExEQVBDb250cm9sICoq
c2VydmVyY3RybHMsIExEQVBDb250cm9sICoqY2xpZW50Y3RybHMgKTsKCgoKCgpleHRlcm4gaW50
CmxkYXBfYWJhbmRvbiAoIExEQVAgKmxkLCBpbnQgbXNnaWQgKTsKCgoKCgoKCmV4dGVybiBpbnQK
bGRhcF9hZGRfZXh0ICggTERBUCAqbGQsIGNvbnN0IGNoYXIgKmRuLCBMREFQTW9kICoqYXR0cnMs
IExEQVBDb250cm9sICoqc2VydmVyY3RybHMsIExEQVBDb250cm9sICoqY2xpZW50Y3RybHMsIGlu
dCAqbXNnaWRwICk7CgoKCgoKCgpleHRlcm4gaW50CmxkYXBfYWRkX2V4dF9zICggTERBUCAqbGQs
IGNvbnN0IGNoYXIgKmRuLCBMREFQTW9kICoqYXR0cnMsIExEQVBDb250cm9sICoqc2VydmVyY3Ry
bHMsIExEQVBDb250cm9sICoqY2xpZW50Y3RybHMgKTsKCgoKCgoKZXh0ZXJuIGludApsZGFwX2Fk
ZCAoIExEQVAgKmxkLCBjb25zdCBjaGFyICpkbiwgTERBUE1vZCAqKmF0dHJzICk7CgoKCgpleHRl
cm4gaW50CmxkYXBfYWRkX3MgKCBMREFQICpsZCwgY29uc3QgY2hhciAqZG4sIExEQVBNb2QgKiph
dHRycyApOwojIDcxMCAiL3Vzci9sb2NhbC9pbmNsdWRlL2xkYXAuaCIgMwpleHRlcm4gaW50Cmxk
YXBfc2FzbF9iaW5kICggTERBUCAqbGQsIGNvbnN0IGNoYXIgKmRuLCBjb25zdCBjaGFyICptZWNo
YW5pc20sIHN0cnVjdCBiZXJ2YWwgKmNyZWQsIExEQVBDb250cm9sICoqc2VydmVyY3RybHMsIExE
QVBDb250cm9sICoqY2xpZW50Y3RybHMsIGludCAqbXNnaWRwICk7CiMgNzM0ICIvdXNyL2xvY2Fs
L2luY2x1ZGUvbGRhcC5oIiAzCnR5cGVkZWYgaW50IChMREFQX1NBU0xfSU5URVJBQ1RfUFJPQykg
KCBMREFQICpsZCwgdW5zaWduZWQgZmxhZ3MsIHZvaWQqIGRlZmF1bHRzLCB2b2lkICppbnRlcmFj
dCApOwoKCmV4dGVybiBpbnQKbGRhcF9zYXNsX2ludGVyYWN0aXZlX2JpbmRfcyAoIExEQVAgKmxk
LCBjb25zdCBjaGFyICpkbiwgY29uc3QgY2hhciAqc2FzbE1lY2hhbmlzbSwgTERBUENvbnRyb2wg
KipzZXJ2ZXJDb250cm9scywgTERBUENvbnRyb2wgKipjbGllbnRDb250cm9scywgdW5zaWduZWQg
ZmxhZ3MsIExEQVBfU0FTTF9JTlRFUkFDVF9QUk9DICpwcm9jLCB2b2lkICpkZWZhdWx0cyApOwoj
IDc1MCAiL3Vzci9sb2NhbC9pbmNsdWRlL2xkYXAuaCIgMwpleHRlcm4gaW50CmxkYXBfc2FzbF9i
aW5kX3MgKCBMREFQICpsZCwgY29uc3QgY2hhciAqZG4sIGNvbnN0IGNoYXIgKm1lY2hhbmlzbSwg
c3RydWN0IGJlcnZhbCAqY3JlZCwgTERBUENvbnRyb2wgKipzZXJ2ZXJjdHJscywgTERBUENvbnRy
b2wgKipjbGllbnRjdHJscywgc3RydWN0IGJlcnZhbCAqKnNlcnZlcmNyZWRwICk7CiMgNzYwICIv
dXNyL2xvY2FsL2luY2x1ZGUvbGRhcC5oIiAzCmV4dGVybiBpbnQKbGRhcF9wYXJzZV9zYXNsX2Jp
bmRfcmVzdWx0ICggTERBUCAqbGQsIExEQVBNZXNzYWdlICpyZXMsIHN0cnVjdCBiZXJ2YWwgKipz
ZXJ2ZXJjcmVkcCwgaW50IGZyZWVpdCApOwojIDc3MSAiL3Vzci9sb2NhbC9pbmNsdWRlL2xkYXAu
aCIgMwpleHRlcm4gaW50CmxkYXBfYmluZCAoIExEQVAgKmxkLCBjb25zdCBjaGFyICp3aG8sIGNv
bnN0IGNoYXIgKnBhc3N3ZCwgaW50IGF1dGhtZXRob2QgKTsKCgoKCgpleHRlcm4gaW50CmxkYXBf
YmluZF9zICggTERBUCAqbGQsIGNvbnN0IGNoYXIgKndobywgY29uc3QgY2hhciAqY3JlZCwgaW50
IGF1dGhtZXRob2QgKTsKIyA3ODggIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFwLmgiIDMKZXh0ZXJu
IGludApsZGFwX3NpbXBsZV9iaW5kICggTERBUCAqbGQsIGNvbnN0IGNoYXIgKndobywgY29uc3Qg
Y2hhciAqcGFzc3dkICk7CgoKCgpleHRlcm4gaW50CmxkYXBfc2ltcGxlX2JpbmRfcyAoIExEQVAg
KmxkLCBjb25zdCBjaGFyICp3aG8sIGNvbnN0IGNoYXIgKnBhc3N3ZCApOwojIDgwNSAiL3Vzci9s
b2NhbC9pbmNsdWRlL2xkYXAuaCIgMwpleHRlcm4gaW50CmxkYXBfa2VyYmVyb3NfYmluZF9zICgg
TERBUCAqbGQsIGNvbnN0IGNoYXIgKndobyApOwoKCgpleHRlcm4gaW50CmxkYXBfa2VyYmVyb3Nf
YmluZDEgKCBMREFQICpsZCwgY29uc3QgY2hhciAqd2hvICk7CgoKCmV4dGVybiBpbnQKbGRhcF9r
ZXJiZXJvc19iaW5kMV9zICggTERBUCAqbGQsIGNvbnN0IGNoYXIgKndobyApOwoKCgpleHRlcm4g
aW50CmxkYXBfa2VyYmVyb3NfYmluZDIgKCBMREFQICpsZCwgY29uc3QgY2hhciAqd2hvICk7CgoK
CmV4dGVybiBpbnQKbGRhcF9rZXJiZXJvc19iaW5kMl9zICggTERBUCAqbGQsIGNvbnN0IGNoYXIg
KndobyApOwoKCgoKCgoKZXh0ZXJuIGludApsZGFwX2VuYWJsZV9jYWNoZSAoIExEQVAgKmxkLCBs
b25nIHRpbWVvdXQsIGJlcl9sZW5fdCBtYXhtZW0gKTsKCmV4dGVybiB2b2lkCmxkYXBfZGlzYWJs
ZV9jYWNoZSAoIExEQVAgKmxkICk7CgpleHRlcm4gdm9pZApsZGFwX3NldF9jYWNoZV9vcHRpb25z
ICggTERBUCAqbGQsIHVuc2lnbmVkIGxvbmcgb3B0cyApOwoKZXh0ZXJuIHZvaWQKbGRhcF9kZXN0
cm95X2NhY2hlICggTERBUCAqbGQgKTsKCmV4dGVybiB2b2lkCmxkYXBfZmx1c2hfY2FjaGUgKCBM
REFQICpsZCApOwoKZXh0ZXJuIHZvaWQKbGRhcF91bmNhY2hlX2VudHJ5ICggTERBUCAqbGQsIGNv
bnN0IGNoYXIgKmRuICk7CgpleHRlcm4gdm9pZApsZGFwX3VuY2FjaGVfcmVxdWVzdCAoIExEQVAg
KmxkLCBpbnQgbXNnaWQgKTsKCgoKCgpleHRlcm4gaW50CmxkYXBfY29tcGFyZV9leHQgKCBMREFQ
ICpsZCwgY29uc3QgY2hhciAqZG4sIGNvbnN0IGNoYXIgKmF0dHIsIHN0cnVjdCBiZXJ2YWwgKmJ2
YWx1ZSwgTERBUENvbnRyb2wgKipzZXJ2ZXJjdHJscywgTERBUENvbnRyb2wgKipjbGllbnRjdHJs
cywgaW50ICptc2dpZHAgKTsKIyA4NjkgIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFwLmgiIDMKZXh0
ZXJuIGludApsZGFwX2NvbXBhcmVfZXh0X3MgKCBMREFQICpsZCwgY29uc3QgY2hhciAqZG4sIGNv
bnN0IGNoYXIgKmF0dHIsIHN0cnVjdCBiZXJ2YWwgKmJ2YWx1ZSwgTERBUENvbnRyb2wgKipzZXJ2
ZXJjdHJscywgTERBUENvbnRyb2wgKipjbGllbnRjdHJscyApOwoKCgoKCgoKZXh0ZXJuIGludAps
ZGFwX2NvbXBhcmUgKCBMREFQICpsZCwgY29uc3QgY2hhciAqZG4sIGNvbnN0IGNoYXIgKmF0dHIs
IGNvbnN0IGNoYXIgKnZhbHVlICk7CgoKCgoKZXh0ZXJuIGludApsZGFwX2NvbXBhcmVfcyAoIExE
QVAgKmxkLCBjb25zdCBjaGFyICpkbiwgY29uc3QgY2hhciAqYXR0ciwgY29uc3QgY2hhciAqdmFs
dWUgKTsKIyA4OTYgIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFwLmgiIDMKZXh0ZXJuIGludApsZGFw
X2RlbGV0ZV9leHQgKCBMREFQICpsZCwgY29uc3QgY2hhciAqZG4sIExEQVBDb250cm9sICoqc2Vy
dmVyY3RybHMsIExEQVBDb250cm9sICoqY2xpZW50Y3RybHMsIGludCAqbXNnaWRwICk7CgoKCgoK
CmV4dGVybiBpbnQKbGRhcF9kZWxldGVfZXh0X3MgKCBMREFQICpsZCwgY29uc3QgY2hhciAqZG4s
IExEQVBDb250cm9sICoqc2VydmVyY3RybHMsIExEQVBDb250cm9sICoqY2xpZW50Y3RybHMgKTsK
CgoKCgpleHRlcm4gaW50CmxkYXBfZGVsZXRlICggTERBUCAqbGQsIGNvbnN0IGNoYXIgKmRuICk7
CgoKCmV4dGVybiBpbnQKbGRhcF9kZWxldGVfcyAoIExEQVAgKmxkLCBjb25zdCBjaGFyICpkbiAp
OwoKCgoKCgoKZXh0ZXJuIGludApsZGFwX3BhcnNlX3Jlc3VsdCAoIExEQVAgKmxkLCBMREFQTWVz
c2FnZSAqcmVzLCBpbnQgKmVycmNvZGVwLCBjaGFyICoqbWF0Y2hlZGRucCwgY2hhciAqKmVycm1z
Z3AsIGNoYXIgKioqcmVmZXJyYWxzcCwgTERBUENvbnRyb2wgKioqc2VydmVyY3RybHMsIGludCBm
cmVlaXQgKTsKIyA5MzYgIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFwLmgiIDMKZXh0ZXJuIGNoYXIg
KgpsZGFwX2VycjJzdHJpbmcgKCBpbnQgZXJyICk7CgoKZXh0ZXJuIGludApsZGFwX3Jlc3VsdDJl
cnJvciAoIExEQVAgKmxkLCBMREFQTWVzc2FnZSAqciwgaW50IGZyZWVpdCApOwoKCgoKZXh0ZXJu
IHZvaWQKbGRhcF9wZXJyb3IgKCBMREFQICpsZCwgY29uc3QgY2hhciAqcyApOwoKCgoKCgoKZXh0
ZXJuIGludApsZGFwX21vZGlmeV9leHQgKCBMREFQICpsZCwgY29uc3QgY2hhciAqZG4sIExEQVBN
b2QgKiptb2RzLCBMREFQQ29udHJvbCAqKnNlcnZlcmN0cmxzLCBMREFQQ29udHJvbCAqKmNsaWVu
dGN0cmxzLCBpbnQgKm1zZ2lkcCApOwoKCgoKCgoKZXh0ZXJuIGludApsZGFwX21vZGlmeV9leHRf
cyAoIExEQVAgKmxkLCBjb25zdCBjaGFyICpkbiwgTERBUE1vZCAqKm1vZHMsIExEQVBDb250cm9s
ICoqc2VydmVyY3RybHMsIExEQVBDb250cm9sICoqY2xpZW50Y3RybHMgKTsKCgoKCgoKZXh0ZXJu
IGludApsZGFwX21vZGlmeSAoIExEQVAgKmxkLCBjb25zdCBjaGFyICpkbiwgTERBUE1vZCAqKm1v
ZHMgKTsKCgoKCmV4dGVybiBpbnQKbGRhcF9tb2RpZnlfcyAoIExEQVAgKmxkLCBjb25zdCBjaGFy
ICpkbiwgTERBUE1vZCAqKm1vZHMgKTsKIyA5ODggIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFwLmgi
IDMKZXh0ZXJuIGludApsZGFwX3JlbmFtZSAoIExEQVAgKmxkLCBjb25zdCBjaGFyICpkbiwgY29u
c3QgY2hhciAqbmV3cmRuLCBjb25zdCBjaGFyICpuZXdTdXBlcmlvciwgaW50IGRlbGV0ZW9sZHJk
biwgTERBUENvbnRyb2wgKipzY3RybHMsIExEQVBDb250cm9sICoqY2N0cmxzLCBpbnQgKm1zZ2lk
cCApOwojIDk5OSAiL3Vzci9sb2NhbC9pbmNsdWRlL2xkYXAuaCIgMwpleHRlcm4gaW50CmxkYXBf
cmVuYW1lX3MgKCBMREFQICpsZCwgY29uc3QgY2hhciAqZG4sIGNvbnN0IGNoYXIgKm5ld3Jkbiwg
Y29uc3QgY2hhciAqbmV3U3VwZXJpb3IsIGludCBkZWxldGVvbGRyZG4sIExEQVBDb250cm9sICoq
c2N0cmxzLCBMREFQQ29udHJvbCAqKmNjdHJscyApOwojIDEwMDkgIi91c3IvbG9jYWwvaW5jbHVk
ZS9sZGFwLmgiIDMKZXh0ZXJuIGludApsZGFwX3JlbmFtZTIgKCBMREFQICpsZCwgY29uc3QgY2hh
ciAqZG4sIGNvbnN0IGNoYXIgKm5ld3JkbiwgY29uc3QgY2hhciAqbmV3U3VwZXJpb3IsIGludCBk
ZWxldGVvbGRyZG4gKTsKCgoKCgoKZXh0ZXJuIGludApsZGFwX3JlbmFtZTJfcyAoIExEQVAgKmxk
LCBjb25zdCBjaGFyICpkbiwgY29uc3QgY2hhciAqbmV3cmRuLCBjb25zdCBjaGFyICpuZXdTdXBl
cmlvciwgaW50IGRlbGV0ZW9sZHJkbiApOwoKCgoKCgpleHRlcm4gaW50CmxkYXBfbW9kcmRuICgg
TERBUCAqbGQsIGNvbnN0IGNoYXIgKmRuLCBjb25zdCBjaGFyICpuZXdyZG4gKTsKCgoKCmV4dGVy
biBpbnQKbGRhcF9tb2RyZG5fcyAoIExEQVAgKmxkLCBjb25zdCBjaGFyICpkbiwgY29uc3QgY2hh
ciAqbmV3cmRuICk7CgoKCgpleHRlcm4gaW50CmxkYXBfbW9kcmRuMiAoIExEQVAgKmxkLCBjb25z
dCBjaGFyICpkbiwgY29uc3QgY2hhciAqbmV3cmRuLCBpbnQgZGVsZXRlb2xkcmRuICk7CgoKCgoK
ZXh0ZXJuIGludApsZGFwX21vZHJkbjJfcyAoIExEQVAgKmxkLCBjb25zdCBjaGFyICpkbiwgY29u
c3QgY2hhciAqbmV3cmRuLCBpbnQgZGVsZXRlb2xkcmRuKTsKIyAxMDU1ICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvbGRhcC5oIiAzCmV4dGVybiBMREFQICoKbGRhcF9pbml0ICggY29uc3QgY2hhciAqaG9z
dCwgaW50IHBvcnQgKTsKCgoKZXh0ZXJuIExEQVAgKgpsZGFwX29wZW4gKCBjb25zdCBjaGFyICpo
b3N0LCBpbnQgcG9ydCApOwoKCgpleHRlcm4gaW50CmxkYXBfY3JlYXRlICggTERBUCAqKmxkcCAp
OwoKCmV4dGVybiBpbnQKbGRhcF9pbml0aWFsaXplICggTERBUCAqKmxkcCwgY29uc3QgY2hhciAq
dXJsICk7CgoKCmV4dGVybiBpbnQKbGRhcF9zdGFydF90bHNfcyAoIExEQVAgKmxkLCBMREFQQ29u
dHJvbCAqKnNlcnZlcmN0cmxzLCBMREFQQ29udHJvbCAqKmNsaWVudGN0cmxzICk7CgoKCgoKCgpl
eHRlcm4gTERBUE1lc3NhZ2UgKgpsZGFwX2ZpcnN0X21lc3NhZ2UgKCBMREFQICpsZCwgTERBUE1l
c3NhZ2UgKmNoYWluICk7CgoKCmV4dGVybiBMREFQTWVzc2FnZSAqCmxkYXBfbmV4dF9tZXNzYWdl
ICggTERBUCAqbGQsIExEQVBNZXNzYWdlICptc2cgKTsKCgoKZXh0ZXJuIGludApsZGFwX2NvdW50
X21lc3NhZ2VzICggTERBUCAqbGQsIExEQVBNZXNzYWdlICpjaGFpbiApOwoKCgoKCgoKZXh0ZXJu
IExEQVBNZXNzYWdlICoKbGRhcF9maXJzdF9yZWZlcmVuY2UgKCBMREFQICpsZCwgTERBUE1lc3Nh
Z2UgKmNoYWluICk7CgoKCmV4dGVybiBMREFQTWVzc2FnZSAqCmxkYXBfbmV4dF9yZWZlcmVuY2Ug
KCBMREFQICpsZCwgTERBUE1lc3NhZ2UgKnJlZiApOwoKCgpleHRlcm4gaW50CmxkYXBfY291bnRf
cmVmZXJlbmNlcyAoIExEQVAgKmxkLCBMREFQTWVzc2FnZSAqY2hhaW4gKTsKCgoKZXh0ZXJuIGlu
dApsZGFwX3BhcnNlX3JlZmVyZW5jZSAoIExEQVAgKmxkLCBMREFQTWVzc2FnZSAqcmVmLCBjaGFy
ICoqKnJlZmVycmFsc3AsIExEQVBDb250cm9sICoqKnNlcnZlcmN0cmxzLCBpbnQgZnJlZWl0KTsK
IyAxMTI5ICIvdXNyL2xvY2FsL2luY2x1ZGUvbGRhcC5oIiAzCmV4dGVybiBMREFQTWVzc2FnZSAq
CmxkYXBfZmlyc3RfZW50cnkgKCBMREFQICpsZCwgTERBUE1lc3NhZ2UgKmNoYWluICk7CgoKCmV4
dGVybiBMREFQTWVzc2FnZSAqCmxkYXBfbmV4dF9lbnRyeSAoIExEQVAgKmxkLCBMREFQTWVzc2Fn
ZSAqZW50cnkgKTsKCgoKZXh0ZXJuIGludApsZGFwX2NvdW50X2VudHJpZXMgKCBMREFQICpsZCwg
TERBUE1lc3NhZ2UgKmNoYWluICk7CgoKCmV4dGVybiBpbnQKbGRhcF9nZXRfZW50cnlfY29udHJv
bHMgKCBMREFQICpsZCwgTERBUE1lc3NhZ2UgKmVudHJ5LCBMREFQQ29udHJvbCAqKipzZXJ2ZXJj
dHJscyk7CiMgMTE1NCAiL3Vzci9sb2NhbC9pbmNsdWRlL2xkYXAuaCIgMwpleHRlcm4gTERBUE1l
c3NhZ2UgKgpsZGFwX2RlbGV0ZV9yZXN1bHRfZW50cnkgKCBMREFQTWVzc2FnZSAqKmxpc3QsIExE
QVBNZXNzYWdlICplICk7CgoKCmV4dGVybiB2b2lkCmxkYXBfYWRkX3Jlc3VsdF9lbnRyeSAoIExE
QVBNZXNzYWdlICoqbGlzdCwgTERBUE1lc3NhZ2UgKmUgKTsKCgoKCgoKCmV4dGVybiBjaGFyICoK
bGRhcF9nZXRfZG4gKCBMREFQICpsZCwgTERBUE1lc3NhZ2UgKmVudHJ5ICk7CgoKCmV4dGVybiBj
aGFyICoKbGRhcF9kbjJ1Zm4gKCBjb25zdCBjaGFyICpkbiApOwoKCmV4dGVybiBjaGFyICoqCmxk
YXBfZXhwbG9kZV9kbiAoIGNvbnN0IGNoYXIgKmRuLCBpbnQgbm90eXBlcyApOwoKCgpleHRlcm4g
Y2hhciAqKgpsZGFwX2V4cGxvZGVfcmRuICggY29uc3QgY2hhciAqcmRuLCBpbnQgbm90eXBlcyAp
OwoKCgpleHRlcm4gY2hhciAqCmxkYXBfZG4yZGNlZG4gKCBjb25zdCBjaGFyICpkbiApOwoKZXh0
ZXJuIGNoYXIgKgpsZGFwX2RjZWRuMmRuICggY29uc3QgY2hhciAqZGNlICk7CgoKCgpleHRlcm4g
Y2hhciAqCmxkYXBfZmlyc3RfYXR0cmlidXRlICggTERBUCAqbGQsIExEQVBNZXNzYWdlICplbnRy
eSwgQmVyRWxlbWVudCAqKmJlciApOwoKCgoKZXh0ZXJuIGNoYXIgKgpsZGFwX25leHRfYXR0cmli
dXRlICggTERBUCAqbGQsIExEQVBNZXNzYWdlICplbnRyeSwgQmVyRWxlbWVudCAqYmVyICk7CiMg
MTIxMiAiL3Vzci9sb2NhbC9pbmNsdWRlL2xkYXAuaCIgMwpleHRlcm4gY2hhciAqKgpsZGFwX2dl
dF92YWx1ZXMgKCBMREFQICpsZCwgTERBUE1lc3NhZ2UgKmVudHJ5LCBjb25zdCBjaGFyICp0YXJn
ZXQgKTsKCgoKCmV4dGVybiBzdHJ1Y3QgYmVydmFsICoqCmxkYXBfZ2V0X3ZhbHVlc19sZW4gKCBM
REFQICpsZCwgTERBUE1lc3NhZ2UgKmVudHJ5LCBjb25zdCBjaGFyICp0YXJnZXQgKTsKCgoKCmV4
dGVybiBpbnQKbGRhcF9jb3VudF92YWx1ZXMgKCBjaGFyICoqdmFscyApOwoKCmV4dGVybiBpbnQK
bGRhcF9jb3VudF92YWx1ZXNfbGVuICggc3RydWN0IGJlcnZhbCAqKnZhbHMgKTsKCgpleHRlcm4g
dm9pZApsZGFwX3ZhbHVlX2ZyZWUgKCBjaGFyICoqdmFscyApOwoKCmV4dGVybiB2b2lkCmxkYXBf
dmFsdWVfZnJlZV9sZW4gKCBzdHJ1Y3QgYmVydmFsICoqdmFscyApOwoKCgoKCmV4dGVybiBpbnQK
bGRhcF9yZXN1bHQgKCBMREFQICpsZCwgaW50IG1zZ2lkLCBpbnQgYWxsLCBzdHJ1Y3QgdGltZXZh
bCAqdGltZW91dCwgTERBUE1lc3NhZ2UgKipyZXN1bHQgKTsKCgoKCgoKZXh0ZXJuIGludApsZGFw
X21zZ3R5cGUgKCBMREFQTWVzc2FnZSAqbG0gKTsKCgpleHRlcm4gaW50CmxkYXBfbXNnaWQgKCBM
REFQTWVzc2FnZSAqbG0gKTsKCgpleHRlcm4gaW50CmxkYXBfbXNnZnJlZSAoIExEQVBNZXNzYWdl
ICpsbSApOwoKCmV4dGVybiBpbnQKbGRhcF9tc2dkZWxldGUgKCBMREFQICpsZCwgaW50IG1zZ2lk
ICk7CgoKCgoKCgpleHRlcm4gaW50CmxkYXBfc2VhcmNoX2V4dCAoIExEQVAgKmxkLCBjb25zdCBj
aGFyICpiYXNlLCBpbnQgc2NvcGUsIGNvbnN0IGNoYXIgKmZpbHRlciwgY2hhciAqKmF0dHJzLCBp
bnQgYXR0cnNvbmx5LCBMREFQQ29udHJvbCAqKnNlcnZlcmN0cmxzLCBMREFQQ29udHJvbCAqKmNs
aWVudGN0cmxzLCBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCwgaW50IHNpemVsaW1pdCwgaW50ICpt
c2dpZHAgKTsKIyAxMjg2ICIvdXNyL2xvY2FsL2luY2x1ZGUvbGRhcC5oIiAzCmV4dGVybiBpbnQK
bGRhcF9zZWFyY2hfZXh0X3MgKCBMREFQICpsZCwgY29uc3QgY2hhciAqYmFzZSwgaW50IHNjb3Bl
LCBjb25zdCBjaGFyICpmaWx0ZXIsIGNoYXIgKiphdHRycywgaW50IGF0dHJzb25seSwgTERBUENv
bnRyb2wgKipzZXJ2ZXJjdHJscywgTERBUENvbnRyb2wgKipjbGllbnRjdHJscywgc3RydWN0IHRp
bWV2YWwgKnRpbWVvdXQsIGludCBzaXplbGltaXQsIExEQVBNZXNzYWdlICoqcmVzICk7CiMgMTMw
MCAiL3Vzci9sb2NhbC9pbmNsdWRlL2xkYXAuaCIgMwpleHRlcm4gaW50CmxkYXBfc2VhcmNoICgg
TERBUCAqbGQsIGNvbnN0IGNoYXIgKmJhc2UsIGludCBzY29wZSwgY29uc3QgY2hhciAqZmlsdGVy
LCBjaGFyICoqYXR0cnMsIGludCBhdHRyc29ubHkgKTsKCgoKCgoKCmV4dGVybiBpbnQKbGRhcF9z
ZWFyY2hfcyAoIExEQVAgKmxkLCBjb25zdCBjaGFyICpiYXNlLCBpbnQgc2NvcGUsIGNvbnN0IGNo
YXIgKmZpbHRlciwgY2hhciAqKmF0dHJzLCBpbnQgYXR0cnNvbmx5LCBMREFQTWVzc2FnZSAqKnJl
cyApOwojIDEzMTkgIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFwLmgiIDMKZXh0ZXJuIGludApsZGFw
X3NlYXJjaF9zdCAoIExEQVAgKmxkLCBjb25zdCBjaGFyICpiYXNlLCBpbnQgc2NvcGUsIGNvbnN0
IGNoYXIgKmZpbHRlciwgY2hhciAqKmF0dHJzLCBpbnQgYXR0cnNvbmx5LCBzdHJ1Y3QgdGltZXZh
bCAqdGltZW91dCwgTERBUE1lc3NhZ2UgKipyZXMgKTsKIyAxMzMzICIvdXNyL2xvY2FsL2luY2x1
ZGUvbGRhcC5oIiAzCmV4dGVybiBpbnQKbGRhcF91bmJpbmQgKCBMREFQICpsZCApOwoKCmV4dGVy
biBpbnQKbGRhcF91bmJpbmRfcyAoIExEQVAgKmxkICk7CgoKZXh0ZXJuIGludApsZGFwX3VuYmlu
ZF9leHQgKCBMREFQICpsZCwgTERBUENvbnRyb2wgKipzZXJ2ZXJjdHJscywgTERBUENvbnRyb2wg
KipjbGllbnRjdHJscyk7CgoKCgpleHRlcm4gaW50CmxkYXBfdW5iaW5kX2V4dF9zICggTERBUCAq
bGQsIExEQVBDb250cm9sICoqc2VydmVyY3RybHMsIExEQVBDb250cm9sICoqY2xpZW50Y3RybHMp
OwojIDEzNTcgIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFwLmgiIDMKZXh0ZXJuIExEQVBGaWx0RGVz
YyAqCmxkYXBfaW5pdF9nZXRmaWx0ZXIgKCBjb25zdCBjaGFyICpmbmFtZSApOwoKCmV4dGVybiBM
REFQRmlsdERlc2MgKgpsZGFwX2luaXRfZ2V0ZmlsdGVyX2J1ZiAoIGNoYXIgKmJ1ZiwgYmVyX2xl
bl90IGJ1ZmxlbiApOwoKCgpleHRlcm4gTERBUEZpbHRJbmZvICoKbGRhcF9nZXRmaXJzdGZpbHRl
ciAoIExEQVBGaWx0RGVzYyAqbGZkcCwgY2hhciAqdGFncGF0LCBjaGFyICp2YWx1ZSApOwoKCgoK
ZXh0ZXJuIExEQVBGaWx0SW5mbyAqCmxkYXBfZ2V0bmV4dGZpbHRlciAoIExEQVBGaWx0RGVzYyAq
bGZkcCApOwoKCmV4dGVybiB2b2lkCmxkYXBfc2V0ZmlsdGVyYWZmaXhlcyAoIExEQVBGaWx0RGVz
YyAqbGZkcCwgY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICpzdWZmaXggKTsKCgoKCmV4
dGVybiB2b2lkCmxkYXBfYnVpbGRfZmlsdGVyICggY2hhciAqYnVmLCBiZXJfbGVuX3QgYnVmbGVu
LCBjb25zdCBjaGFyICpwYXR0ZXJuLCBjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKnN1
ZmZpeCwgY29uc3QgY2hhciAqYXR0ciwgY29uc3QgY2hhciAqdmFsdWUsIGNoYXIgKip2YWx3b3Jk
cyApOwojIDEzOTggIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFwLmgiIDMKZXh0ZXJuIHZvaWQgKgps
ZGFwX21lbWFsbG9jICggYmVyX2xlbl90IHMgKTsKCgpleHRlcm4gdm9pZCAqCmxkYXBfbWVtcmVh
bGxvYyAoIHZvaWQqIHAsIGJlcl9sZW5fdCBzICk7CgoKCmV4dGVybiB2b2lkICoKbGRhcF9tZW1j
YWxsb2MgKCBiZXJfbGVuX3QgbiwgYmVyX2xlbl90IHMgKTsKCgoKZXh0ZXJuIHZvaWQKbGRhcF9t
ZW1mcmVlICggdm9pZCogcCApOwoKCmV4dGVybiB2b2lkCmxkYXBfbWVtdmZyZWUgKCB2b2lkKiog
diApOwoKCmV4dGVybiBjaGFyICoKbGRhcF9zdHJkdXAgKCBjb25zdCBjaGFyICogKTsKCgpleHRl
cm4gdm9pZApsZGFwX2dldGZpbHRlcl9mcmVlICggTERBUEZpbHREZXNjICpsZmRwICk7CgoKZXh0
ZXJuIHZvaWQKbGRhcF9tb2RzX2ZyZWUgKCBMREFQTW9kICoqbW9kcywgaW50IGZyZWVtb2RzICk7
CiMgMTQzOCAiL3Vzci9sb2NhbC9pbmNsdWRlL2xkYXAuaCIgMwpleHRlcm4gY2hhciAqCmxkYXBf
ZnJpZW5kbHlfbmFtZSAoIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjaGFyICp1bmFtZSwgTERBUEZy
aWVuZGx5TWFwICoqbWFwICk7CgoKCgpleHRlcm4gdm9pZApsZGFwX2ZyZWVfZnJpZW5kbHltYXAg
KCBMREFQRnJpZW5kbHlNYXAgKiptYXAgKTsKCgoKCgoKdHlwZWRlZiBpbnQgKExEQVBfU09SVF9B
RF9DTVBfUFJPQykgKCBjb25zdCBjaGFyICpsZWZ0LCBjb25zdCBjaGFyICpyaWdodCApOwoKCgp0
eXBlZGVmIGludCAoTERBUF9TT1JUX0FWX0NNUF9QUk9DKSAoIGNvbnN0IHZvaWQgKmxlZnQsIGNv
bnN0IHZvaWQgKnJpZ2h0ICk7CgoKCmV4dGVybiBpbnQKbGRhcF9zb3J0X2VudHJpZXMgKCBMREFQ
ICpsZCwgTERBUE1lc3NhZ2UgKipjaGFpbiwgY29uc3QgY2hhciAqYXR0ciwgTERBUF9TT1JUX0FE
X0NNUF9QUk9DICpjbXAgKTsKCgoKCmV4dGVybiBpbnQKbGRhcF9zb3J0X3ZhbHVlcyAoIExEQVAg
KmxkLCBjaGFyICoqdmFscywgTERBUF9TT1JUX0FWX0NNUF9QUk9DICpjbXAgKTsKCgoKCmV4dGVy
biBpbnQKbGRhcF9zb3J0X3N0cmNhc2VjbXAgKCBjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpi
ICk7CiMgMTQ4MyAiL3Vzci9sb2NhbC9pbmNsdWRlL2xkYXAuaCIgMwpleHRlcm4gaW50CmxkYXBf
aXNfbGRhcF91cmwgKCBjb25zdCBjaGFyICp1cmwgKTsKCgpleHRlcm4gaW50CmxkYXBfaXNfbGRh
cHNfdXJsICggY29uc3QgY2hhciAqdXJsICk7CgoKZXh0ZXJuIGludApsZGFwX2lzX2xkYXBpX3Vy
bCAoIGNvbnN0IGNoYXIgKnVybCApOwoKCmV4dGVybiBpbnQKbGRhcF91cmxfcGFyc2UgKCBjb25z
dCBjaGFyICp1cmwsIExEQVBVUkxEZXNjICoqbHVkcHAgKTsKCgoKZXh0ZXJuIHZvaWQKbGRhcF9m
cmVlX3VybGRlc2MgKCBMREFQVVJMRGVzYyAqbHVkcCApOwoKCmV4dGVybiBpbnQKbGRhcF91cmxf
c2VhcmNoICggTERBUCAqbGQsIGNvbnN0IGNoYXIgKnVybCwgaW50IGF0dHJzb25seSApOwoKCgoK
ZXh0ZXJuIGludApsZGFwX3VybF9zZWFyY2hfcyAoIExEQVAgKmxkLCBjb25zdCBjaGFyICp1cmws
IGludCBhdHRyc29ubHksIExEQVBNZXNzYWdlICoqcmVzICk7CgoKCgoKZXh0ZXJuIGludApsZGFw
X3VybF9zZWFyY2hfc3QgKCBMREFQICpsZCwgY29uc3QgY2hhciAqdXJsLCBpbnQgYXR0cnNvbmx5
LCBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCwgTERBUE1lc3NhZ2UgKipyZXMgKTsKIyAxNTMxICIv
dXNyL2xvY2FsL2luY2x1ZGUvbGRhcC5oIiAzCnR5cGVkZWYgc3RydWN0IGxkYXBzb3J0a2V5IHsK
ICAgICAgICBjaGFyICogYXR0cmlidXRlVHlwZTsKICAgICAgICBjaGFyICogb3JkZXJpbmdSdWxl
OwogICAgICAgIGludCByZXZlcnNlT3JkZXI7Cn0gTERBUFNvcnRLZXk7CgpleHRlcm4gaW50Cmxk
YXBfY3JlYXRlX3NvcnRfa2V5bGlzdCAoIExEQVBTb3J0S2V5ICoqKnNvcnRLZXlMaXN0LCBjaGFy
ICprZXlTdHJpbmcgKTsKCgoKZXh0ZXJuIHZvaWQKbGRhcF9mcmVlX3NvcnRfa2V5bGlzdCAoIExE
QVBTb3J0S2V5ICoqc29ydGtleWxpc3QgKTsKCgpleHRlcm4gaW50CmxkYXBfY3JlYXRlX3NvcnRf
Y29udHJvbCAoIExEQVAgKmxkLCBMREFQU29ydEtleSAqKmtleUxpc3QsIGludCBjdGxfaXNjcml0
aWNhbCwgTERBUENvbnRyb2wgKipjdHJscCApOwoKCgoKCmV4dGVybiBpbnQKbGRhcF9wYXJzZV9z
b3J0X2NvbnRyb2wgKCBMREFQICpsZCwgTERBUENvbnRyb2wgKipjdHJscCwgdW5zaWduZWQgbG9u
ZyAqcmVzdWx0LCBjaGFyICoqYXR0cmlidXRlICk7CiMgMTU2OCAiL3Vzci9sb2NhbC9pbmNsdWRl
L2xkYXAuaCIgMwp0eXBlZGVmIHN0cnVjdCBsZGFwdmx2aW5mbyB7CiAgICAgICAgaW50IGxkdmx2
X3ZlcnNpb247CiAgICB1bnNpZ25lZCBsb25nIGxkdmx2X2JlZm9yZV9jb3VudDsKICAgIHVuc2ln
bmVkIGxvbmcgbGR2bHZfYWZ0ZXJfY291bnQ7CiAgICB1bnNpZ25lZCBsb25nIGxkdmx2X29mZnNl
dDsKICAgIHVuc2lnbmVkIGxvbmcgbGR2bHZfY291bnQ7CiAgICBzdHJ1Y3QgYmVydmFsICpsZHZs
dl9hdHRydmFsdWU7CiAgICBzdHJ1Y3QgYmVydmFsICpsZHZsdl9jb250ZXh0OwogICAgdm9pZCAq
bGR2bHZfZXh0cmFkYXRhOwp9IExEQVBWTFZJbmZvOwoKZXh0ZXJuIGludApsZGFwX2NyZWF0ZV92
bHZfY29udHJvbCAoIExEQVAgKmxkLCBMREFQVkxWSW5mbyAqbGR2bGlzdHAsIExEQVBDb250cm9s
ICoqY3RybHAgKTsKCgoKCmV4dGVybiBpbnQKbGRhcF9wYXJzZV92bHZfY29udHJvbCAoIExEQVAg
KmxkLCBMREFQQ29udHJvbCAqKmN0cmxzLCB1bnNpZ25lZCBsb25nICp0YXJnZXRfcG9zcCwgdW5z
aWduZWQgbG9uZyAqbGlzdF9jb3VudHAsIHN0cnVjdCBiZXJ2YWwgKipjb250ZXh0cCwgaW50ICpl
cnJjb2RlcCApOwojIDE1OTUgIi91c3IvbG9jYWwvaW5jbHVkZS9sZGFwLmgiIDMKCiMgMzkwICJp
bmNsdWRlL2luY2x1ZGVzLmgiIDIKCgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9nc3NhcGkv
Z3NzYXBpLmgiIDEgMwojIDkyICIvdXNyL2xvY2FsL2luY2x1ZGUvZ3NzYXBpL2dzc2FwaS5oIiAz
CiMgMSAiL3Vzci9sb2NhbC9nY2MvMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEv
aW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgOTMgIi91c3IvbG9jYWwvaW5jbHVkZS9nc3NhcGkvZ3Nz
YXBpLmgiIDIgMwojIDExNyAiL3Vzci9sb2NhbC9pbmNsdWRlL2dzc2FwaS9nc3NhcGkuaCIgMwp0
eXBlZGVmIHZvaWQgKiBnc3NfbmFtZV90Owp0eXBlZGVmIHZvaWQgKiBnc3NfY3JlZF9pZF90Owp0
eXBlZGVmIHZvaWQgKiBnc3NfY3R4X2lkX3Q7CiMgMTI5ICIvdXNyL2xvY2FsL2luY2x1ZGUvZ3Nz
YXBpL2dzc2FwaS5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50IGdzc191aW50MzI7CnR5cGVkZWYg
aW50IGdzc19pbnQzMjsKIyAxNDYgIi91c3IvbG9jYWwvaW5jbHVkZS9nc3NhcGkvZ3NzYXBpLmgi
IDMKdHlwZWRlZiBnc3NfdWludDMyIE9NX3VpbnQzMjsKCnR5cGVkZWYgc3RydWN0IGdzc19PSURf
ZGVzY19zdHJ1Y3QgewogICAgICBPTV91aW50MzIgbGVuZ3RoOwogICAgICB2b2lkICplbGVtZW50
czsKfSBnc3NfT0lEX2Rlc2MsICpnc3NfT0lEOwoKCnR5cGVkZWYgc3RydWN0IGdzc19PSURfc2V0
X2Rlc2Nfc3RydWN0IHsKICAgICAgc2l6ZV90IGNvdW50OwogICAgICBnc3NfT0lEIGVsZW1lbnRz
Owp9IGdzc19PSURfc2V0X2Rlc2MsICpnc3NfT0lEX3NldDsKCnR5cGVkZWYgc3RydWN0IGdzc19i
dWZmZXJfZGVzY19zdHJ1Y3QgewogICAgICBzaXplX3QgbGVuZ3RoOwogICAgICB2b2lkICp2YWx1
ZTsKfSBnc3NfYnVmZmVyX2Rlc2MsICpnc3NfYnVmZmVyX3Q7Cgp0eXBlZGVmIHN0cnVjdCBnc3Nf
Y2hhbm5lbF9iaW5kaW5nc19zdHJ1Y3QgewogICAgICBPTV91aW50MzIgaW5pdGlhdG9yX2FkZHJ0
eXBlOwogICAgICBnc3NfYnVmZmVyX2Rlc2MgaW5pdGlhdG9yX2FkZHJlc3M7CiAgICAgIE9NX3Vp
bnQzMiBhY2NlcHRvcl9hZGRydHlwZTsKICAgICAgZ3NzX2J1ZmZlcl9kZXNjIGFjY2VwdG9yX2Fk
ZHJlc3M7CiAgICAgIGdzc19idWZmZXJfZGVzYyBhcHBsaWNhdGlvbl9kYXRhOwp9ICpnc3NfY2hh
bm5lbF9iaW5kaW5nc190OwoKCgoKCnR5cGVkZWYgT01fdWludDMyIGdzc19xb3BfdDsKdHlwZWRl
ZiBpbnQgZ3NzX2NyZWRfdXNhZ2VfdDsKIyAzNTYgIi91c3IvbG9jYWwvaW5jbHVkZS9nc3NhcGkv
Z3NzYXBpLmgiIDMKIE9NX3VpbnQzMiBnc3NfYWNxdWlyZV9jcmVkCihPTV91aW50MzIgKiwgZ3Nz
X25hbWVfdCwgT01fdWludDMyLCBnc3NfT0lEX3NldCwgZ3NzX2NyZWRfdXNhZ2VfdCwgZ3NzX2Ny
ZWRfaWRfdCAqLCBnc3NfT0lEX3NldCAqLCBPTV91aW50MzIgKiApOwojIDM2NyAiL3Vzci9sb2Nh
bC9pbmNsdWRlL2dzc2FwaS9nc3NhcGkuaCIgMwogT01fdWludDMyIGdzc19yZWxlYXNlX2NyZWQK
KE9NX3VpbnQzMiAqLCBnc3NfY3JlZF9pZF90ICogKTsKCgoKIE9NX3VpbnQzMiBnc3NfaW5pdF9z
ZWNfY29udGV4dAooT01fdWludDMyICosIGdzc19jcmVkX2lkX3QsIGdzc19jdHhfaWRfdCAqLCBn
c3NfbmFtZV90LCBnc3NfT0lELCBPTV91aW50MzIsIE9NX3VpbnQzMiwgZ3NzX2NoYW5uZWxfYmlu
ZGluZ3NfdCwgZ3NzX2J1ZmZlcl90LCBnc3NfT0lEICosIGdzc19idWZmZXJfdCwgT01fdWludDMy
ICosIE9NX3VpbnQzMiAqICk7CiMgMzg4ICIvdXNyL2xvY2FsL2luY2x1ZGUvZ3NzYXBpL2dzc2Fw
aS5oIiAzCiBPTV91aW50MzIgZ3NzX2FjY2VwdF9zZWNfY29udGV4dAooT01fdWludDMyICosIGdz
c19jdHhfaWRfdCAqLCBnc3NfY3JlZF9pZF90LCBnc3NfYnVmZmVyX3QsIGdzc19jaGFubmVsX2Jp
bmRpbmdzX3QsIGdzc19uYW1lX3QgKiwgZ3NzX09JRCAqLCBnc3NfYnVmZmVyX3QsIE9NX3VpbnQz
MiAqLCBPTV91aW50MzIgKiwgZ3NzX2NyZWRfaWRfdCAqICk7CiMgNDAyICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvZ3NzYXBpL2dzc2FwaS5oIiAzCiBPTV91aW50MzIgZ3NzX3Byb2Nlc3NfY29udGV4dF90
b2tlbgooT01fdWludDMyICosIGdzc19jdHhfaWRfdCwgZ3NzX2J1ZmZlcl90ICk7CgoKCgogT01f
dWludDMyIGdzc19kZWxldGVfc2VjX2NvbnRleHQKKE9NX3VpbnQzMiAqLCBnc3NfY3R4X2lkX3Qg
KiwgZ3NzX2J1ZmZlcl90ICk7CgoKCgogT01fdWludDMyIGdzc19jb250ZXh0X3RpbWUKKE9NX3Vp
bnQzMiAqLCBnc3NfY3R4X2lkX3QsIE9NX3VpbnQzMiAqICk7CgoKCgoKIE9NX3VpbnQzMiBnc3Nf
Z2V0X21pYwooT01fdWludDMyICosIGdzc19jdHhfaWRfdCwgZ3NzX3FvcF90LCBnc3NfYnVmZmVy
X3QsIGdzc19idWZmZXJfdCApOwoKCgoKCgoKIE9NX3VpbnQzMiBnc3NfdmVyaWZ5X21pYwooT01f
dWludDMyICosIGdzc19jdHhfaWRfdCwgZ3NzX2J1ZmZlcl90LCBnc3NfYnVmZmVyX3QsIGdzc19x
b3BfdCAqICk7CgoKCgoKCgogT01fdWludDMyIGdzc193cmFwCihPTV91aW50MzIgKiwgZ3NzX2N0
eF9pZF90LCBpbnQsIGdzc19xb3BfdCwgZ3NzX2J1ZmZlcl90LCBpbnQgKiwgZ3NzX2J1ZmZlcl90
ICk7CiMgNDUwICIvdXNyL2xvY2FsL2luY2x1ZGUvZ3NzYXBpL2dzc2FwaS5oIiAzCiBPTV91aW50
MzIgZ3NzX3Vud3JhcAooT01fdWludDMyICosIGdzc19jdHhfaWRfdCwgZ3NzX2J1ZmZlcl90LCBn
c3NfYnVmZmVyX3QsIGludCAqLCBnc3NfcW9wX3QgKiApOwoKCgoKCgoKIE9NX3VpbnQzMiBnc3Nf
ZGlzcGxheV9zdGF0dXMKKE9NX3VpbnQzMiAqLCBPTV91aW50MzIsIGludCwgZ3NzX09JRCwgT01f
dWludDMyICosIGdzc19idWZmZXJfdCApOwoKCgoKCgoKIE9NX3VpbnQzMiBnc3NfaW5kaWNhdGVf
bWVjaHMKKE9NX3VpbnQzMiAqLCBnc3NfT0lEX3NldCAqICk7CgoKCiBPTV91aW50MzIgZ3NzX2Nv
bXBhcmVfbmFtZQooT01fdWludDMyICosIGdzc19uYW1lX3QsIGdzc19uYW1lX3QsIGludCAqICk7
CgoKCgoKIE9NX3VpbnQzMiBnc3NfZGlzcGxheV9uYW1lCihPTV91aW50MzIgKiwgZ3NzX25hbWVf
dCwgZ3NzX2J1ZmZlcl90LCBnc3NfT0lEICogKTsKCgoKCgogT01fdWludDMyIGdzc19pbXBvcnRf
bmFtZQooT01fdWludDMyICosIGdzc19idWZmZXJfdCwgZ3NzX09JRCwgZ3NzX25hbWVfdCAqICk7
CgoKCgoKIE9NX3VpbnQzMiBnc3NfcmVsZWFzZV9uYW1lCihPTV91aW50MzIgKiwgZ3NzX25hbWVf
dCAqICk7CgoKCiBPTV91aW50MzIgZ3NzX3JlbGVhc2VfYnVmZmVyCihPTV91aW50MzIgKiwgZ3Nz
X2J1ZmZlcl90ICk7CgoKCiBPTV91aW50MzIgZ3NzX3JlbGVhc2Vfb2lkX3NldAooT01fdWludDMy
ICosIGdzc19PSURfc2V0ICogKTsKCgoKIE9NX3VpbnQzMiBnc3NfaW5xdWlyZV9jcmVkCihPTV91
aW50MzIgKiwgZ3NzX2NyZWRfaWRfdCwgZ3NzX25hbWVfdCAqLCBPTV91aW50MzIgKiwgZ3NzX2Ny
ZWRfdXNhZ2VfdCAqLCBnc3NfT0lEX3NldCAqICk7CiMgNTE5ICIvdXNyL2xvY2FsL2luY2x1ZGUv
Z3NzYXBpL2dzc2FwaS5oIiAzCiBPTV91aW50MzIgZ3NzX2lucXVpcmVfY29udGV4dAooT01fdWlu
dDMyICosIGdzc19jdHhfaWRfdCwgZ3NzX25hbWVfdCAqLCBnc3NfbmFtZV90ICosIE9NX3VpbnQz
MiAqLCBnc3NfT0lEICosIE9NX3VpbnQzMiAqLCBpbnQgKiwgaW50ICogKTsKIyA1MzIgIi91c3Iv
bG9jYWwvaW5jbHVkZS9nc3NhcGkvZ3NzYXBpLmgiIDMKIE9NX3VpbnQzMiBnc3Nfd3JhcF9zaXpl
X2xpbWl0CihPTV91aW50MzIgKiwgZ3NzX2N0eF9pZF90LCBpbnQsIGdzc19xb3BfdCwgT01fdWlu
dDMyLCBPTV91aW50MzIgKiApOwojIDU0MiAiL3Vzci9sb2NhbC9pbmNsdWRlL2dzc2FwaS9nc3Nh
cGkuaCIgMwogT01fdWludDMyIGdzc19pbXBvcnRfbmFtZV9vYmplY3QKKE9NX3VpbnQzMiAqLCB2
b2lkICosIGdzc19PSUQsIGdzc19uYW1lX3QgKiApOwoKCgoKCgogT01fdWludDMyIGdzc19leHBv
cnRfbmFtZV9vYmplY3QKKE9NX3VpbnQzMiAqLCBnc3NfbmFtZV90LCBnc3NfT0lELCB2b2lkICog
KiApOwoKCgoKCgogT01fdWludDMyIGdzc19hZGRfY3JlZAooT01fdWludDMyICosIGdzc19jcmVk
X2lkX3QsIGdzc19uYW1lX3QsIGdzc19PSUQsIGdzc19jcmVkX3VzYWdlX3QsIE9NX3VpbnQzMiwg
T01fdWludDMyLCBnc3NfY3JlZF9pZF90ICosIGdzc19PSURfc2V0ICosIE9NX3VpbnQzMiAqLCBP
TV91aW50MzIgKiApOwojIDU3MyAiL3Vzci9sb2NhbC9pbmNsdWRlL2dzc2FwaS9nc3NhcGkuaCIg
MwogT01fdWludDMyIGdzc19pbnF1aXJlX2NyZWRfYnlfbWVjaAooT01fdWludDMyICosIGdzc19j
cmVkX2lkX3QsIGdzc19PSUQsIGdzc19uYW1lX3QgKiwgT01fdWludDMyICosIE9NX3VpbnQzMiAq
LCBnc3NfY3JlZF91c2FnZV90ICogKTsKIyA1ODQgIi91c3IvbG9jYWwvaW5jbHVkZS9nc3NhcGkv
Z3NzYXBpLmgiIDMKIE9NX3VpbnQzMiBnc3NfZXhwb3J0X3NlY19jb250ZXh0CihPTV91aW50MzIg
KiwgZ3NzX2N0eF9pZF90ICosIGdzc19idWZmZXJfdCApOwoKCgoKCiBPTV91aW50MzIgZ3NzX2lt
cG9ydF9zZWNfY29udGV4dAooT01fdWludDMyICosIGdzc19idWZmZXJfdCwgZ3NzX2N0eF9pZF90
ICogKTsKCgoKCgogT01fdWludDMyIGdzc19yZWxlYXNlX29pZAooT01fdWludDMyICosIGdzc19P
SUQgKiApOwoKCgoKIE9NX3VpbnQzMiBnc3NfY3JlYXRlX2VtcHR5X29pZF9zZXQKKE9NX3VpbnQz
MiAqLCBnc3NfT0lEX3NldCAqICk7CgoKCgogT01fdWludDMyIGdzc19hZGRfb2lkX3NldF9tZW1i
ZXIKKE9NX3VpbnQzMiAqLCBnc3NfT0lELCBnc3NfT0lEX3NldCAqICk7CgoKCgoKIE9NX3VpbnQz
MiBnc3NfdGVzdF9vaWRfc2V0X21lbWJlcgooT01fdWludDMyICosIGdzc19PSUQsIGdzc19PSURf
c2V0LCBpbnQgKiApOwoKCgoKCgogT01fdWludDMyIGdzc19zdHJfdG9fb2lkCihPTV91aW50MzIg
KiwgZ3NzX2J1ZmZlcl90LCBnc3NfT0lEICogKTsKCgoKCgogT01fdWludDMyIGdzc19vaWRfdG9f
c3RyCihPTV91aW50MzIgKiwgZ3NzX09JRCwgZ3NzX2J1ZmZlcl90ICk7CgoKCgoKIE9NX3VpbnQz
MiBnc3NfaW5xdWlyZV9uYW1lc19mb3JfbWVjaAooT01fdWludDMyICosIGdzc19PSUQsIGdzc19P
SURfc2V0ICogKTsKIyA2NTIgIi91c3IvbG9jYWwvaW5jbHVkZS9nc3NhcGkvZ3NzYXBpLmgiIDMK
IE9NX3VpbnQzMiBnc3Nfc2lnbgooT01fdWludDMyICosIGdzc19jdHhfaWRfdCwgaW50LCBnc3Nf
YnVmZmVyX3QsIGdzc19idWZmZXJfdCApOwoKCgoKCgogT01fdWludDMyIGdzc192ZXJpZnkKKE9N
X3VpbnQzMiAqLCBnc3NfY3R4X2lkX3QsIGdzc19idWZmZXJfdCwgZ3NzX2J1ZmZlcl90LCBpbnQg
KiApOwoKCgoKCgogT01fdWludDMyIGdzc19zZWFsCihPTV91aW50MzIgKiwgZ3NzX2N0eF9pZF90
LCBpbnQsIGludCwgZ3NzX2J1ZmZlcl90LCBpbnQgKiwgZ3NzX2J1ZmZlcl90ICk7CiMgNjc4ICIv
dXNyL2xvY2FsL2luY2x1ZGUvZ3NzYXBpL2dzc2FwaS5oIiAzCiBPTV91aW50MzIgZ3NzX3Vuc2Vh
bAooT01fdWludDMyICosIGdzc19jdHhfaWRfdCwgZ3NzX2J1ZmZlcl90LCBnc3NfYnVmZmVyX3Qs
IGludCAqLCBpbnQgKiApOwojIDY4OCAiL3Vzci9sb2NhbC9pbmNsdWRlL2dzc2FwaS9nc3NhcGku
aCIgMwogT01fdWludDMyIGdzc19leHBvcnRfbmFtZQooT01fdWludDMyICosIGNvbnN0IGdzc19u
YW1lX3QsIGdzc19idWZmZXJfdCApOwoKCgoKCiBPTV91aW50MzIgZ3NzX2R1cGxpY2F0ZV9uYW1l
CihPTV91aW50MzIgKiwgY29uc3QgZ3NzX25hbWVfdCwgZ3NzX25hbWVfdCAqICk7CgoKCgoKIE9N
X3VpbnQzMiBnc3NfY2Fub25pY2FsaXplX25hbWUKKE9NX3VpbnQzMiAqLCBjb25zdCBnc3NfbmFt
ZV90LCBjb25zdCBnc3NfT0lELCBnc3NfbmFtZV90ICogKTsKIyAzOTYgImluY2x1ZGUvaW5jbHVk
ZXMuaCIgMgoKCgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2dzc2FwaS9nc3NhcGlfZ2VuZXJp
Yy5oIiAxIDMKIyAzMyAiL3Vzci9sb2NhbC9pbmNsdWRlL2dzc2FwaS9nc3NhcGlfZ2VuZXJpYy5o
IiAzCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2dzc2FwaS9nc3NhcGkuaCIgMSAzCiMgMzQgIi91
c3IvbG9jYWwvaW5jbHVkZS9nc3NhcGkvZ3NzYXBpX2dlbmVyaWMuaCIgMiAzCgoKIGV4dGVybiBn
c3NfT0lEIGdzc19udF91c2VyX25hbWU7CiBleHRlcm4gZ3NzX09JRCBnc3NfbnRfbWFjaGluZV91
aWRfbmFtZTsKIGV4dGVybiBnc3NfT0lEIGdzc19udF9zdHJpbmdfdWlkX25hbWU7CiBleHRlcm4g
Z3NzX09JRCBnc3NfbnRfc2VydmljZV9uYW1lOwogZXh0ZXJuIGdzc19PSUQgZ3NzX250X2V4cG9y
dGVkX25hbWU7CiBleHRlcm4gZ3NzX09JRCBnc3NfbnRfc2VydmljZV9uYW1lX3YyOwojIDQwMiAi
aW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgNjcyICJpbmNsdWRlL2luY2x1ZGVzLmgiCiMgMSAiaW5j
bHVkZS94ZmlsZS5oIiAxCiMgMjggImluY2x1ZGUveGZpbGUuaCIKdHlwZWRlZiBzdHJ1Y3Qgewog
ICAgICAgIGludCBmZDsKICAgICAgICBjaGFyICpidWY7CiAgICAgICAgY2hhciAqbmV4dDsKICAg
ICAgICBpbnQgYnVmc2l6ZTsKICAgICAgICBpbnQgYnVmdXNlZDsKICAgICAgICBpbnQgb3Blbl9m
bGFnczsKICAgICAgICBpbnQgYnVmdHlwZTsKICAgICAgICBpbnQgZmxhZ3M7Cn0gWEZJTEU7Cgpl
eHRlcm4gWEZJTEUgKnhfc3RkaW4sICp4X3N0ZG91dCwgKnhfc3RkZXJyOwojIDY3MyAiaW5jbHVk
ZS9pbmNsdWRlcy5oIiAyCiMgMSAiaW5jbHVkZS9pbnRsLmgiIDEKIyA2NzQgImluY2x1ZGUvaW5j
bHVkZXMuaCIgMgojIDEgInViaXF4L3ViaV9zTGlua0xpc3QuaCIgMQojIDEwNiAidWJpcXgvdWJp
X3NMaW5rTGlzdC5oIgojIDEgInViaXF4L3N5c19pbmNsdWRlLmgiIDEKIyAxMDcgInViaXF4L3Vi
aV9zTGlua0xpc3QuaCIgMgojIDExOCAidWJpcXgvdWJpX3NMaW5rTGlzdC5oIgp0eXBlZGVmIHN0
cnVjdCB1Ymlfc2xMaXN0Tm9kZQogIHsKICBzdHJ1Y3QgdWJpX3NsTGlzdE5vZGUgKk5leHQ7CiAg
fSB1Ymlfc2xOb2RlOwoKdHlwZWRlZiB1Ymlfc2xOb2RlICp1Ymlfc2xOb2RlUHRyOwoKdHlwZWRl
ZiBzdHJ1Y3QKICB7CiAgdWJpX3NsTm9kZVB0ciBIZWFkOwogIHViaV9zbE5vZGVQdHIgVGFpbDsK
ICB1bnNpZ25lZCBsb25nIGNvdW50OwogIH0gdWJpX3NsTGlzdDsKCnR5cGVkZWYgdWJpX3NsTGlz
dCAqdWJpX3NsTGlzdFB0cjsKIyAyMDUgInViaXF4L3ViaV9zTGlua0xpc3QuaCIKdWJpX3NsTGlz
dFB0ciB1Ymlfc2xJbml0TGlzdCggdWJpX3NsTGlzdFB0ciBMaXN0UHRyICk7CiMgMjE4ICJ1Ymlx
eC91Ymlfc0xpbmtMaXN0LmgiCnViaV9zbE5vZGVQdHIgdWJpX3NsSW5zZXJ0KCB1Ymlfc2xMaXN0
UHRyIExpc3RQdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1Ymlfc2xOb2RlUHRyIE5l
dywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHViaV9zbE5vZGVQdHIgQWZ0ZXIgKTsKIyAy
MzcgInViaXF4L3ViaV9zTGlua0xpc3QuaCIKdWJpX3NsTm9kZVB0ciB1Ymlfc2xSZW1vdmVOZXh0
KCB1Ymlfc2xMaXN0UHRyIExpc3RQdHIsIHViaV9zbE5vZGVQdHIgQWZ0ZXJNZSApOwojIDY3NSAi
aW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgMSAidWJpcXgvdWJpX2RMaW5rTGlzdC5oIiAxCiMgOTMg
InViaXF4L3ViaV9kTGlua0xpc3QuaCIKdHlwZWRlZiBzdHJ1Y3QgdWJpX2RsTGlzdE5vZGUKICB7
CiAgc3RydWN0IHViaV9kbExpc3ROb2RlICpOZXh0OwogIHN0cnVjdCB1YmlfZGxMaXN0Tm9kZSAq
UHJldjsKICB9IHViaV9kbE5vZGU7Cgp0eXBlZGVmIHViaV9kbE5vZGUgKnViaV9kbE5vZGVQdHI7
Cgp0eXBlZGVmIHN0cnVjdAogIHsKICB1YmlfZGxOb2RlUHRyIEhlYWQ7CiAgdWJpX2RsTm9kZVB0
ciBUYWlsOwogIHVuc2lnbmVkIGxvbmcgY291bnQ7CiAgfSB1YmlfZGxMaXN0OwoKdHlwZWRlZiB1
YmlfZGxMaXN0ICp1YmlfZGxMaXN0UHRyOwojIDE5NCAidWJpcXgvdWJpX2RMaW5rTGlzdC5oIgp1
YmlfZGxMaXN0UHRyIHViaV9kbEluaXRMaXN0KCB1YmlfZGxMaXN0UHRyIExpc3RQdHIgKTsKIyAy
MDcgInViaXF4L3ViaV9kTGlua0xpc3QuaCIKdWJpX2RsTm9kZVB0ciB1YmlfZGxJbnNlcnQoIHVi
aV9kbExpc3RQdHIgTGlzdFB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHViaV9kbE5v
ZGVQdHIgTmV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdWJpX2RsTm9kZVB0ciBBZnRl
ciApOwojIDIyNyAidWJpcXgvdWJpX2RMaW5rTGlzdC5oIgp1YmlfZGxOb2RlUHRyIHViaV9kbFJl
bW92ZSggdWJpX2RsTGlzdFB0ciBMaXN0UHRyLCB1YmlfZGxOb2RlUHRyIE9sZCApOwojIDY3NiAi
aW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgMSAiaW5jbHVkZS9kbGlua2xpc3QuaCIgMQojIDY3NyAi
aW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgMSAidGRiL3RkYi5oIiAxCiMgNDYgInRkYi90ZGIuaCIK
ZW51bSBUREJfRVJST1Ige1REQl9TVUNDRVNTPTAsIFREQl9FUlJfQ09SUlVQVCwgVERCX0VSUl9J
TywgVERCX0VSUl9MT0NLLAogICAgICAgICAgICAgICAgVERCX0VSUl9PT00sIFREQl9FUlJfRVhJ
U1RTLCBUREJfRVJSX05PRVhJU1QsIFREQl9FUlJfTk9MT0NLIH07CgoKCgoKdHlwZWRlZiBzdHJ1
Y3QgewogICAgICAgIGNoYXIgKmRwdHI7CiAgICAgICAgc2l6ZV90IGRzaXplOwp9IFREQl9EQVRB
OwoKdHlwZWRlZiB1bnNpZ25lZCB0ZGJfbGVuOwp0eXBlZGVmIHVuc2lnbmVkIHRkYl9vZmY7CgoK
c3RydWN0IHRkYl9oZWFkZXIgewogICAgICAgIGNoYXIgbWFnaWNfZm9vZFszMl07CiAgICAgICAg
dW5zaWduZWQgdmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBoYXNoX3NpemU7CiAgICAgICAgdGRi
X29mZiByd2xvY2tzOwogICAgICAgIHRkYl9vZmYgcmVzZXJ2ZWRbMzFdOwp9OwoKc3RydWN0IHRk
Yl9sb2NrX3R5cGUgewogICAgICAgIHVuc2lnbmVkIGNvdW50OwogICAgICAgIHVuc2lnbmVkIGx0
eXBlOwp9OwoKc3RydWN0IHRkYl90cmF2ZXJzZV9sb2NrIHsKICAgICAgICBzdHJ1Y3QgdGRiX3Ry
YXZlcnNlX2xvY2sgKm5leHQ7CiAgICAgICAgdW5zaWduZWQgb2ZmOwogICAgICAgIHVuc2lnbmVk
IGhhc2g7Cn07CgoKdHlwZWRlZiBzdHJ1Y3QgdGRiX2NvbnRleHQgewogICAgICAgIGNoYXIgKm5h
bWU7CiAgICAgICAgdm9pZCAqbWFwX3B0cjsKICAgICAgICBpbnQgZmQ7CiAgICAgICAgdGRiX2xl
biBtYXBfc2l6ZTsKICAgICAgICBpbnQgcmVhZF9vbmx5OwogICAgICAgIHN0cnVjdCB0ZGJfbG9j
a190eXBlICpsb2NrZWQ7CiAgICAgICAgZW51bSBUREJfRVJST1IgZWNvZGU7CiAgICAgICAgc3Ry
dWN0IHRkYl9oZWFkZXIgaGVhZGVyOwogICAgICAgIHVuc2lnbmVkIGZsYWdzOwogICAgICAgIHVu
c2lnbmVkICpsb2NrZWRrZXlzOwogICAgICAgIHN0cnVjdCB0ZGJfdHJhdmVyc2VfbG9jayB0cmF2
bG9ja3M7CiAgICAgICAgc3RydWN0IHRkYl9jb250ZXh0ICpuZXh0OwogICAgICAgIGRldl90IGRl
dmljZTsKICAgICAgICBpbm9fdCBpbm9kZTsKICAgICAgICB2b2lkICgqbG9nX2ZuKShzdHJ1Y3Qg
dGRiX2NvbnRleHQgKnRkYiwgaW50IGxldmVsLCBjb25zdCBjaGFyICosIC4uLik7CiAgICAgICAg
aW50IG9wZW5fZmxhZ3M7Cn0gVERCX0NPTlRFWFQ7Cgp0eXBlZGVmIGludCAoKnRkYl90cmF2ZXJz
ZV9mdW5jKShUREJfQ09OVEVYVCAqLCBUREJfREFUQSwgVERCX0RBVEEsIHZvaWQgKik7CnR5cGVk
ZWYgdm9pZCAoKnRkYl9sb2dfZnVuYykoVERCX0NPTlRFWFQgKiwgaW50ICwgY29uc3QgY2hhciAq
LCAuLi4pOwoKVERCX0NPTlRFWFQgKnRkYl9vcGVuKGNvbnN0IGNoYXIgKm5hbWUsIGludCBoYXNo
X3NpemUsIGludCB0ZGJfZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICBpbnQgb3Blbl9mbGFn
cywgbW9kZV90IG1vZGUpOwpUREJfQ09OVEVYVCAqdGRiX29wZW5fZXgoY29uc3QgY2hhciAqbmFt
ZSwgaW50IGhhc2hfc2l6ZSwgaW50IHRkYl9mbGFncywKICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBvcGVuX2ZsYWdzLCBtb2RlX3QgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHRk
Yl9sb2dfZnVuYyBsb2dfZm4pOwoKaW50IHRkYl9yZW9wZW4oVERCX0NPTlRFWFQgKnRkYik7Cmlu
dCB0ZGJfcmVvcGVuX2FsbCh2b2lkKTsKdm9pZCB0ZGJfbG9nZ2luZ19mdW5jdGlvbihUREJfQ09O
VEVYVCAqdGRiLCB0ZGJfbG9nX2Z1bmMpOwplbnVtIFREQl9FUlJPUiB0ZGJfZXJyb3IoVERCX0NP
TlRFWFQgKnRkYik7CmNvbnN0IGNoYXIgKnRkYl9lcnJvcnN0cihUREJfQ09OVEVYVCAqdGRiKTsK
VERCX0RBVEEgdGRiX2ZldGNoKFREQl9DT05URVhUICp0ZGIsIFREQl9EQVRBIGtleSk7CmludCB0
ZGJfZGVsZXRlKFREQl9DT05URVhUICp0ZGIsIFREQl9EQVRBIGtleSk7CmludCB0ZGJfc3RvcmUo
VERCX0NPTlRFWFQgKnRkYiwgVERCX0RBVEEga2V5LCBUREJfREFUQSBkYnVmLCBpbnQgZmxhZyk7
CmludCB0ZGJfY2xvc2UoVERCX0NPTlRFWFQgKnRkYik7ClREQl9EQVRBIHRkYl9maXJzdGtleShU
REJfQ09OVEVYVCAqdGRiKTsKVERCX0RBVEEgdGRiX25leHRrZXkoVERCX0NPTlRFWFQgKnRkYiwg
VERCX0RBVEEga2V5KTsKaW50IHRkYl90cmF2ZXJzZShUREJfQ09OVEVYVCAqdGRiLCB0ZGJfdHJh
dmVyc2VfZnVuYyBmbiwgdm9pZCAqc3RhdGUpOwppbnQgdGRiX2V4aXN0cyhUREJfQ09OVEVYVCAq
dGRiLCBUREJfREFUQSBrZXkpOwppbnQgdGRiX2xvY2trZXlzKFREQl9DT05URVhUICp0ZGIsIHVu
c2lnbmVkIG51bWJlciwgVERCX0RBVEEga2V5c1tdKTsKdm9pZCB0ZGJfdW5sb2Nra2V5cyhUREJf
Q09OVEVYVCAqdGRiKTsKaW50IHRkYl9sb2NrYWxsKFREQl9DT05URVhUICp0ZGIpOwp2b2lkIHRk
Yl91bmxvY2thbGwoVERCX0NPTlRFWFQgKnRkYik7CgoKaW50IHRkYl9jaGFpbmxvY2soVERCX0NP
TlRFWFQgKnRkYiwgVERCX0RBVEEga2V5KTsKdm9pZCB0ZGJfY2hhaW51bmxvY2soVERCX0NPTlRF
WFQgKnRkYiwgVERCX0RBVEEga2V5KTsKCgp2b2lkIHRkYl9kdW1wX2FsbChUREJfQ09OVEVYVCAq
dGRiKTsKdm9pZCB0ZGJfcHJpbnRmcmVlbGlzdChUREJfQ09OVEVYVCAqdGRiKTsKCmV4dGVybiBU
REJfREFUQSB0ZGJfbnVsbDsKIyA2NzggImluY2x1ZGUvaW5jbHVkZXMuaCIgMgojIDEgInRkYi9z
cGlubG9jay5oIiAxCiMgNDggInRkYi9zcGlubG9jay5oIgppbnQgdGRiX3NwaW5sb2NrKFREQl9D
T05URVhUICp0ZGIsIGludCBsaXN0LCBpbnQgcndfdHlwZSk7CmludCB0ZGJfc3BpbnVubG9jayhU
REJfQ09OVEVYVCAqdGRiLCBpbnQgbGlzdCwgaW50IHJ3X3R5cGUpOwppbnQgdGRiX2NyZWF0ZV9y
d2xvY2tzKGludCBmZCwgdW5zaWduZWQgaW50IGhhc2hfc2l6ZSk7CgppbnQgdGRiX2NsZWFyX3Nw
aW5sb2NrcyhUREJfQ09OVEVYVCAqdGRiKTsKIyA2NzkgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgoj
IDEgImluY2x1ZGUvdGFsbG9jLmgiIDEKIyAzNCAiaW5jbHVkZS90YWxsb2MuaCIKdHlwZWRlZiBz
dHJ1Y3QgdGFsbG9jX2N0eCBUQUxMT0NfQ1RYOwoKVEFMTE9DX0NUWCAqdGFsbG9jX2luaXRfbmFt
ZWQoY2hhciBjb25zdCAqZm10LCAuLi4pIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKF9fcHJpbnRm
X18sIDEsIDIpKSk7CgpjaGFyICp0YWxsb2NfdmFzcHJpbnRmKFRBTExPQ19DVFggKnQsIGNvbnN0
IGNoYXIgKmZtdCwgdmFfbGlzdCBhcCkKICAgICAgICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChf
X3ByaW50Zl9fLCAyLCAwKSkpOwoKY2hhciAqdGFsbG9jX2FzcHJpbnRmKFRBTExPQ19DVFggKnQs
IGNvbnN0IGNoYXIgKmZtdCwgLi4uKQogICAgICAgIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKF9f
cHJpbnRmX18sIDIsIDMpKSk7CiMgNjgwICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKIyAxICJpbmNs
dWRlL2Fkcy5oIiAxCgoKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB2b2lkICpsZDsKICAg
ICAgICBjaGFyICpyZWFsbTsKICAgICAgICBjaGFyICpsZGFwX3NlcnZlcjsKICAgICAgICBjaGFy
ICpsZGFwX3NlcnZlcl9uYW1lOwogICAgICAgIGNoYXIgKmtkY19zZXJ2ZXI7CiAgICAgICAgaW50
IGxkYXBfcG9ydDsKICAgICAgICBjaGFyICpiaW5kX3BhdGg7CiAgICAgICAgdGltZV90IGxhc3Rf
YXR0ZW1wdDsKICAgICAgICBjaGFyICpwYXNzd29yZDsKICAgICAgICBjaGFyICp1c2VyX25hbWU7
CiAgICAgICAgY2hhciAqc2VydmVyX3JlYWxtOwp9IEFEU19TVFJVQ1Q7CgoKZW51bSBhZHNfZXJy
b3JfdHlwZSB7QURTX0VSUk9SX0tSQjUsIEFEU19FUlJPUl9HU1MsCiAgICAgICAgICAgICAgICAg
ICAgIEFEU19FUlJPUl9MREFQLCBBRFNfRVJST1JfU1lTVEVNfTsKCnR5cGVkZWYgc3RydWN0IHsK
ICAgICAgICBlbnVtIGFkc19lcnJvcl90eXBlIGVycm9yX3R5cGU7CiAgICAgICAgaW50IHJjOwoK
CiAgICAgICAgaW50IG1pbm9yX3N0YXR1czsKfSBBRFNfU1RBVFVTOwojIDY4MSAiaW5jbHVkZS9p
bmNsdWRlcy5oIiAyCiMgMSAiaW5jbHVkZS9pbnRlcmZhY2VzLmgiIDEKCgoKCgoKCnN0cnVjdCBp
ZmFjZV9zdHJ1Y3QgewogICAgICAgIGNoYXIgbmFtZVsxNl07CiAgICAgICAgc3RydWN0IGluX2Fk
ZHIgaXA7CiAgICAgICAgc3RydWN0IGluX2FkZHIgbmV0bWFzazsKfTsKIyA2ODIgImluY2x1ZGUv
aW5jbHVkZXMuaCIgMgojIDEgImluY2x1ZGUvaGFzaC5oIiAxCiMgMjggImluY2x1ZGUvaGFzaC5o
Igp0eXBlZGVmIGludCAoKmNvbXBhcmVfZnVuY3Rpb24pKGNoYXIgKiwgY2hhciAqKTsKdHlwZWRl
ZiBpbnQgKCpoYXNoX2Z1bmN0aW9uKShpbnQsIGNoYXIgKik7CgoKCgoKdHlwZWRlZiBzdHJ1Y3Qg
bHJ1X25vZGUgewogICAgICAgIHViaV9kbE5vZGUgbHJ1X2xpbms7CiAgICAgICAgdm9pZCAqaGFz
aF9lbGVtOwp9IGxydV9ub2RlOwojIDUxICJpbmNsdWRlL2hhc2guaCIKdHlwZWRlZiBzdHJ1Y3Qg
aGFzaF9lbGVtZW50IHsKICAgICAgICB1YmlfZGxOb2RlIGJ1Y2tldF9saW5rOwogICAgICAgIGxy
dV9ub2RlIGxydV9saW5rOwogICAgICAgIHViaV9kbExpc3QgKmJ1Y2tldDsKICAgICAgICB2b2lk
ICp2YWx1ZTsKICAgICAgICBjaGFyIGtleVsxXTsKfSBoYXNoX2VsZW1lbnQ7CiMgNjcgImluY2x1
ZGUvaGFzaC5oIgp0eXBlZGVmIHN0cnVjdCBoYXNoX3RhYmxlIHsKICAgICAgICB1YmlfZGxMaXN0
ICpidWNrZXRzOwogICAgICAgIHViaV9kbExpc3QgbHJ1X2NoYWluOwogICAgICAgIGludCBudW1f
ZWxlbWVudHM7CiAgICAgICAgaW50IHNpemU7CiAgICAgICAgY29tcGFyZV9mdW5jdGlvbiBjb21w
X2Z1bmM7Cn0gaGFzaF90YWJsZTsKIyA2ODMgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgojIDEgImlu
Y2x1ZGUvdHJhbnMyLmgiIDEKIyA2ODQgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgojIDEgImluY2x1
ZGUvbnRlcnIuaCIgMQojIDY4NSAiaW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgMSAiaW5jbHVkZS9z
ZWNyZXRzLmgiIDEKIyAzNSAiaW5jbHVkZS9zZWNyZXRzLmgiCnN0cnVjdCBtYWNoaW5lX2FjY3Rf
cGFzcyB7CiAgICAgICAgdW5zaWduZWQgY2hhciBoYXNoWzE2XTsKICAgICAgICB0aW1lX3QgbW9k
X3RpbWU7Cn07CiMgNjg2ICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIKIyAxICJpbmNsdWRlL21lc3Nh
Z2VzLmgiIDEKIyA2ODcgImluY2x1ZGUvaW5jbHVkZXMuaCIgMgojIDEgImluY2x1ZGUvdXRpbF9s
aXN0LmgiIDEKIyAyOCAiaW5jbHVkZS91dGlsX2xpc3QuaCIKIyAxICJpbmNsdWRlL3NtYi5oIiAx
CiMgNDEgImluY2x1ZGUvc21iLmgiCnR5cGVkZWYgaW50IEJPT0w7CiMgNjUgImluY2x1ZGUvc21i
LmgiCiMgMSAiaW5jbHVkZS9kZWJ1Zy5oIiAxCiMgNDAgImluY2x1ZGUvZGVidWcuaCIKaW50IERl
YnVnMSggY2hhciAqLCAuLi4gKSBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChfX3ByaW50Zl9fLCAx
LCAyKSkpOwpCT09MIGRiZ3RleHQoIGNoYXIgKiwgLi4uICkgX19hdHRyaWJ1dGVfXyAoKGZvcm1h
dCAoX19wcmludGZfXywgMSwgMikpKTsKCmV4dGVybiBYRklMRSAqZGJmOwojIDk0ICJpbmNsdWRl
L2RlYnVnLmgiCmV4dGVybiBpbnQgREVCVUdMRVZFTF9DTEFTU1s4XTsKZXh0ZXJuIEJPT0wgREVC
VUdMRVZFTF9DTEFTU19JU1NFVFs4XTsKCnN0cnVjdCBkZWJ1Z2xldmVsX21lc3NhZ2UgewogICAg
ICAgIGludCBkZWJ1Z2xldmVsX2NsYXNzWzhdOwogICAgICAgIEJPT0wgZGVidWdsZXZlbF9jbGFz
c19pc3NldFs4XTsKfTsKIyA2NiAiaW5jbHVkZS9zbWIuaCIgMgojIDE1NSAiaW5jbHVkZS9zbWIu
aCIKIyAxICJpbmNsdWRlL2Rvc2Vyci5oIiAxCiMgMTU2ICJpbmNsdWRlL3NtYi5oIiAyCgoKCgoK
CnR5cGVkZWYgY2hhciBwc3RyaW5nWzEwMjRdOwp0eXBlZGVmIGNoYXIgZnN0cmluZ1syNTZdOwoj
IDE3MyAiaW5jbHVkZS9zbWIuaCIKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBzbWJfdWNzMl90OwoK
CnR5cGVkZWYgc21iX3VjczJfdCB3cHN0cmluZ1sxMDI0XTsKdHlwZWRlZiBzbWJfdWNzMl90IHdm
c3RyaW5nWzI1Nl07CiMgMjA0ICJpbmNsdWRlL3NtYi5oIgp0eXBlZGVmIHN0cnVjdCBudHRpbWVf
aW5mbwp7CiAgdW5zaWduZWQgaW50IGxvdzsKICB1bnNpZ25lZCBpbnQgaGlnaDsKfSBOVFRJTUU7
CiMgMjE3ICJpbmNsdWRlL3NtYi5oIgp0eXBlZGVmIHN0cnVjdCB7dW5zaWduZWQgaW50IHY7fSBO
VFNUQVRVUzsKIyAyMjcgImluY2x1ZGUvc21iLmgiCnR5cGVkZWYgc3RydWN0IHt1bnNpZ25lZCBp
bnQgdjt9IFdFUlJPUjsKIyAyNTcgImluY2x1ZGUvc21iLmgiCnR5cGVkZWYgc3RydWN0CnsKICAg
ICAgICB1bnNpZ25lZCBpbnQgcGlkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHZ1aWQ7Cgp9CnZ1
c2VyX2tleTsKCgpzdHJ1Y3QgdXNlX2luZm8KewogICAgICAgIEJPT0wgY29ubmVjdGVkOwogICAg
ICAgIGNoYXIgKnNydl9uYW1lOwogICAgICAgIHZ1c2VyX2tleSBrZXk7CiAgICAgICAgY2hhciAq
dXNlcl9uYW1lOwogICAgICAgIGNoYXIgKmRvbWFpbjsKfTsKIyAyODUgImluY2x1ZGUvc21iLmgi
CnR5cGVkZWYgc3RydWN0IHNpZF9pbmZvCnsKICB1bnNpZ25lZCBjaGFyIHNpZF9yZXZfbnVtOwog
IHVuc2lnbmVkIGNoYXIgbnVtX2F1dGhzOwogIHVuc2lnbmVkIGNoYXIgaWRfYXV0aFs2XTsKCgoK
CgoKICB1bnNpZ25lZCBpbnQgc3ViX2F1dGhzWzE1XTsKCn0gRE9NX1NJRDsKIyAzMTYgImluY2x1
ZGUvc21iLmgiCnR5cGVkZWYgc3RydWN0IF9udF91c2VyX3Rva2VuIHsKICAgICAgICBzaXplX3Qg
bnVtX3NpZHM7CiAgICAgICAgRE9NX1NJRCAqdXNlcl9zaWRzOwp9IE5UX1VTRVJfVE9LRU47CgoK
CgoKCnR5cGVkZWYgc3RydWN0IGxvY2FsX2dycF9tZW1iZXJfaW5mbwp7CiAgICAgICAgRE9NX1NJ
RCBzaWQgOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc2lkX3VzZTsKICAgICAgICBmc3RyaW5nIG5h
bWUgOwoKfSBMT0NBTF9HUlBfTUVNQkVSOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgbG9jYWxfZ3JwX2lu
Zm8KewogICAgICAgIGZzdHJpbmcgbmFtZTsKICAgICAgICBmc3RyaW5nIGNvbW1lbnQ7Cgp9IExP
Q0FMX0dSUDsKCgoKCnR5cGVkZWYgc3RydWN0IGRvbWFpbl9ncnBfaW5mbwp7CiAgICAgICAgZnN0
cmluZyBuYW1lOwogICAgICAgIGZzdHJpbmcgY29tbWVudDsKICAgICAgICB1bnNpZ25lZCBpbnQg
cmlkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgYXR0cjsKCn0gRE9NQUlOX0dSUDsKCgoKCnR5cGVk
ZWYgc3RydWN0IGRvbWFpbl9ncnBfbWVtYmVyX2luZm8KewogICAgICAgIGZzdHJpbmcgbmFtZTsK
ICAgICAgICB1bnNpZ25lZCBjaGFyIGF0dHI7Cgp9IERPTUFJTl9HUlBfTUVNQkVSOwoKCnR5cGVk
ZWYgc3RydWN0IHRpbWVfaW5mbwp7CiAgdW5zaWduZWQgaW50IHRpbWU7Cn0gVVRJTUU7CgoKdHlw
ZWRlZiBzdHJ1Y3QKewogIHNpemVfdCB3cl90b3RhbF93cml0dGVuOwogIGludCB3cl90aW1lb3V0
OwogIGludCB3cl9lcnJjbGFzczsKICBpbnQgd3JfZXJyb3I7CiAgQk9PTCB3cl9tb2RlOwogIEJP
T0wgd3JfZGlzY2FyZDsKfSB3cml0ZV9ibXB4X3N0cnVjdDsKCnR5cGVkZWYgc3RydWN0IHdyaXRl
X2NhY2hlCnsKICAgIG9mZl90IGZpbGVfc2l6ZTsKICAgIG9mZl90IG9mZnNldDsKICAgIHNpemVf
dCBhbGxvY19zaXplOwogICAgc2l6ZV90IGRhdGFfc2l6ZTsKICAgIGNoYXIgKmRhdGE7Cn0gd3Jp
dGVfY2FjaGU7Cgp0eXBlZGVmIHN0cnVjdAp7CiAgICAgICAgc21iX3VjczJfdCAqcGF0aDsKICAg
ICAgICBzbWJfdWNzMl90ICpuYW1lOwogICAgICAgIHNtYl91Y3MyX3QgKnVuaXhuYW1lOwogICAg
ICAgIHNtYl91Y3MyX3QgKmRvc25hbWU7CiAgICAgICAgc3RydWN0IHN0YXQgKnN0YXRpbmZvOwp9
IHNtYl9maWxlbmFtZTsKCgp0eXBlZGVmIHN0cnVjdCBmaWxlc19zdHJ1Y3QKewogICAgICAgIHN0
cnVjdCBmaWxlc19zdHJ1Y3QgKm5leHQsICpwcmV2OwogICAgICAgIGludCBmbnVtOwogICAgICAg
IHN0cnVjdCBjb25uZWN0aW9uX3N0cnVjdCAqY29ubjsKICAgICAgICBpbnQgZmQ7CiAgICAgICAg
aW50IHByaW50X2pvYmlkOwogICAgICAgIGRldl90IGRldjsKICAgICAgICBpbm9fdCBpbm9kZTsK
ICAgICAgICBCT09MIGRlbGV0ZV9vbl9jbG9zZTsKICAgICAgICBvZmZfdCBwb3M7CiAgICAgICAg
b2ZmX3Qgc2l6ZTsKICAgICAgICBtb2RlX3QgbW9kZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB2
dWlkOwogICAgICAgIHdyaXRlX2JtcHhfc3RydWN0ICp3Ym1weF9wdHI7CiAgICAgICAgd3JpdGVf
Y2FjaGUgKndjcDsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBvcGVuX3RpbWU7CiAgICAgICAgaW50
IHNoYXJlX21vZGU7CiAgICAgICAgdGltZV90IHBlbmRpbmdfbW9kdGltZTsKICAgICAgICBpbnQg
b3Bsb2NrX3R5cGU7CiAgICAgICAgaW50IHNlbnRfb3Bsb2NrX2JyZWFrOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgZmlsZV9pZDsKICAgICAgICBCT09MIGNhbl9sb2NrOwogICAgICAgIEJPT0wgY2Fu
X3JlYWQ7CiAgICAgICAgQk9PTCBjYW5fd3JpdGU7CiAgICAgICAgQk9PTCBwcmludF9maWxlOwog
ICAgICAgIEJPT0wgbW9kaWZpZWQ7CiAgICAgICAgQk9PTCBpc19kaXJlY3Rvcnk7CiAgICAgICAg
Qk9PTCBkaXJlY3RvcnlfZGVsZXRlX29uX2Nsb3NlOwogICAgICAgIEJPT0wgc3RhdF9vcGVuOwog
ICAgICAgIGNoYXIgKmZzcF9uYW1lOwp9IGZpbGVzX3N0cnVjdDsKCgoKCgoKdHlwZWRlZiBzdHJ1
Y3QKewogIHRpbWVfdCBtb2RpZnlfdGltZTsKICB0aW1lX3Qgc3RhdHVzX3RpbWU7Cn0gZGlyX3N0
YXR1c19zdHJ1Y3Q7CgpzdHJ1Y3QgdWlkX2NhY2hlIHsKICBpbnQgZW50cmllczsKICB1aWRfdCBs
aXN0WzRdOwp9OwoKdHlwZWRlZiBzdHJ1Y3QKewogIGNoYXIgKm5hbWU7CiAgQk9PTCBpc193aWxk
Owp9IG5hbWVfY29tcGFyZV9lbnRyeTsKCgoKIyAxICJpbmNsdWRlL3Zmcy5oIiAxCiMgNDYgImlu
Y2x1ZGUvdmZzLmgiCnN0cnVjdCBjb25uZWN0aW9uX3N0cnVjdDsKc3RydWN0IGZpbGVzX3N0cnVj
dDsKc3RydWN0IHNlY3VyaXR5X2Rlc2NyaXB0b3JfaW5mbzsKCnN0cnVjdCB2ZnNfb3BzIHsKCgoK
ICAgIGludCAoKmNvbm5lY3QpKHN0cnVjdCBjb25uZWN0aW9uX3N0cnVjdCAqY29ubiwgY29uc3Qg
Y2hhciAqc2VydmljZSwgY29uc3QgY2hhciAqdXNlcik7CiAgICB2b2lkICgqZGlzY29ubmVjdCko
c3RydWN0IGNvbm5lY3Rpb25fc3RydWN0ICpjb25uKTsKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyAo
KmRpc2tfZnJlZSkoc3RydWN0IGNvbm5lY3Rpb25fc3RydWN0ICpjb25uLCBjb25zdCBjaGFyICpw
YXRoLCBCT09MIHNtYWxsX3F1ZXJ5LCB1bnNpZ25lZCBsb25nIGxvbmcgKmJzaXplLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgKmRmcmVlLCB1bnNpZ25l
ZCBsb25nIGxvbmcgKmRzaXplKTsKCgoKICAgIERJUiAqKCpvcGVuZGlyKShzdHJ1Y3QgY29ubmVj
dGlvbl9zdHJ1Y3QgKmNvbm4sIGNvbnN0IGNoYXIgKmZuYW1lKTsKICAgIHN0cnVjdCBkaXJlbnQg
KigqcmVhZGRpcikoc3RydWN0IGNvbm5lY3Rpb25fc3RydWN0ICpjb25uLCBESVIgKmRpcnApOwog
ICAgaW50ICgqbWtkaXIpKHN0cnVjdCBjb25uZWN0aW9uX3N0cnVjdCAqY29ubiwgY29uc3QgY2hh
ciAqcGF0aCwgbW9kZV90IG1vZGUpOwogICAgaW50ICgqcm1kaXIpKHN0cnVjdCBjb25uZWN0aW9u
X3N0cnVjdCAqY29ubiwgY29uc3QgY2hhciAqcGF0aCk7CiAgICBpbnQgKCpjbG9zZWRpcikoc3Ry
dWN0IGNvbm5lY3Rpb25fc3RydWN0ICpjb25uLCBESVIgKmRpcik7CgoKCiAgICBpbnQgKCpvcGVu
KShzdHJ1Y3QgY29ubmVjdGlvbl9zdHJ1Y3QgKmNvbm4sIGNvbnN0IGNoYXIgKmZuYW1lLCBpbnQg
ZmxhZ3MsIG1vZGVfdCBtb2RlKTsKICAgIGludCAoKmNsb3NlKShzdHJ1Y3QgZmlsZXNfc3RydWN0
ICpmc3AsIGludCBmZCk7CiAgICBzc2l6ZV90ICgqcmVhZCkoc3RydWN0IGZpbGVzX3N0cnVjdCAq
ZnNwLCBpbnQgZmQsIHZvaWQgKmRhdGEsIHNpemVfdCBuKTsKICAgIHNzaXplX3QgKCp3cml0ZSko
c3RydWN0IGZpbGVzX3N0cnVjdCAqZnNwLCBpbnQgZmQsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVf
dCBuKTsKICAgIG9mZl90ICgqbHNlZWspKHN0cnVjdCBmaWxlc19zdHJ1Y3QgKmZzcCwgaW50IGZp
bGVkZXMsIG9mZl90IG9mZnNldCwgaW50IHdoZW5jZSk7CiAgICBpbnQgKCpyZW5hbWUpKHN0cnVj
dCBjb25uZWN0aW9uX3N0cnVjdCAqY29ubiwgY29uc3QgY2hhciAqb2xkLCBjb25zdCBjaGFyICpu
ZXcpOwogICAgaW50ICgqZnN5bmMpKHN0cnVjdCBmaWxlc19zdHJ1Y3QgKmZzcCwgaW50IGZkKTsK
ICAgIGludCAoKnN0YXQpKHN0cnVjdCBjb25uZWN0aW9uX3N0cnVjdCAqY29ubiwgY29uc3QgY2hh
ciAqZm5hbWUsIHN0cnVjdCBzdGF0ICpzYnVmKTsKICAgIGludCAoKmZzdGF0KShzdHJ1Y3QgZmls
ZXNfc3RydWN0ICpmc3AsIGludCBmZCwgc3RydWN0IHN0YXQgKnNidWYpOwogICAgaW50ICgqbHN0
YXQpKHN0cnVjdCBjb25uZWN0aW9uX3N0cnVjdCAqY29ubiwgY29uc3QgY2hhciAqcGF0aCwgc3Ry
dWN0IHN0YXQgKnNidWYpOwogICAgaW50ICgqdW5saW5rKShzdHJ1Y3QgY29ubmVjdGlvbl9zdHJ1
Y3QgKmNvbm4sIGNvbnN0IGNoYXIgKnBhdGgpOwogICAgaW50ICgqY2htb2QpKHN0cnVjdCBjb25u
ZWN0aW9uX3N0cnVjdCAqY29ubiwgY29uc3QgY2hhciAqcGF0aCwgbW9kZV90IG1vZGUpOwogICAg
aW50ICgqZmNobW9kKShzdHJ1Y3QgZmlsZXNfc3RydWN0ICpmc3AsIGludCBmZCwgbW9kZV90IG1v
ZGUpOwogICAgICAgIGludCAoKmNob3duKShzdHJ1Y3QgY29ubmVjdGlvbl9zdHJ1Y3QgKmNvbm4s
IGNvbnN0IGNoYXIgKnBhdGgsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKTsKICAgICAgICBpbnQgKCpm
Y2hvd24pKHN0cnVjdCBmaWxlc19zdHJ1Y3QgKmZzcCwgaW50IGZkLCB1aWRfdCB1aWQsIGdpZF90
IGdpZCk7CiAgICAgICAgaW50ICgqY2hkaXIpKHN0cnVjdCBjb25uZWN0aW9uX3N0cnVjdCAqY29u
biwgY29uc3QgY2hhciAqcGF0aCk7CiAgICAgICAgY2hhciAqKCpnZXR3ZCkoc3RydWN0IGNvbm5l
Y3Rpb25fc3RydWN0ICpjb25uLCBjaGFyICpidWYpOwogICAgICAgIGludCAoKnV0aW1lKShzdHJ1
Y3QgY29ubmVjdGlvbl9zdHJ1Y3QgKmNvbm4sIGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCB1dGlt
YnVmICp0aW1lcyk7CiAgICAgICAgaW50ICgqZnRydW5jYXRlKShzdHJ1Y3QgZmlsZXNfc3RydWN0
ICpmc3AsIGludCBmZCwgb2ZmX3Qgb2Zmc2V0KTsKICAgICAgICBCT09MICgqbG9jaykoc3RydWN0
IGZpbGVzX3N0cnVjdCAqZnNwLCBpbnQgZmQsIGludCBvcCwgb2ZmX3Qgb2Zmc2V0LCBvZmZfdCBj
b3VudCwgaW50IHR5cGUpOwogICAgICAgIGludCAoKnN5bWxpbmspKHN0cnVjdCBjb25uZWN0aW9u
X3N0cnVjdCAqY29ubiwgY29uc3QgY2hhciAqb2xkcGF0aCwgY29uc3QgY2hhciAqbmV3cGF0aCk7
CiAgICAgICAgaW50ICgqcmVhZGxpbmspKHN0cnVjdCBjb25uZWN0aW9uX3N0cnVjdCAqY29ubiwg
Y29uc3QgY2hhciAqcGF0aCwgY2hhciAqYnVmLCBzaXplX3QgYnVmc2l6KTsKCgoKICAgICAgICBz
aXplX3QgKCpmZ2V0X250X2FjbCkoc3RydWN0IGZpbGVzX3N0cnVjdCAqZnNwLCBpbnQgZmQsIHN0
cnVjdCBzZWN1cml0eV9kZXNjcmlwdG9yX2luZm8gKipwcGRlc2MpOwogICAgICAgIHNpemVfdCAo
KmdldF9udF9hY2wpKHN0cnVjdCBmaWxlc19zdHJ1Y3QgKmZzcCwgY29uc3QgY2hhciAqbmFtZSwg
c3RydWN0IHNlY3VyaXR5X2Rlc2NyaXB0b3JfaW5mbyAqKnBwZGVzYyk7CiAgICAgICAgQk9PTCAo
KmZzZXRfbnRfYWNsKShzdHJ1Y3QgZmlsZXNfc3RydWN0ICpmc3AsIGludCBmZCwgdW5zaWduZWQg
aW50IHNlY3VyaXR5X2luZm9fc2VudCwgc3RydWN0IHNlY3VyaXR5X2Rlc2NyaXB0b3JfaW5mbyAq
cHNkKTsKICAgICAgICBCT09MICgqc2V0X250X2FjbCkoc3RydWN0IGZpbGVzX3N0cnVjdCAqZnNw
LCBjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBpbnQgc2VjdXJpdHlfaW5mb19zZW50LCBzdHJ1
Y3Qgc2VjdXJpdHlfZGVzY3JpcHRvcl9pbmZvICpwc2QpOwoKCgogICAgICAgIGludCAoKmNobW9k
X2FjbCkoc3RydWN0IGNvbm5lY3Rpb25fc3RydWN0ICpjb25uLCBjb25zdCBjaGFyICpuYW1lLCBt
b2RlX3QgbW9kZSk7CiAgICAgICAgaW50ICgqZmNobW9kX2FjbCkoc3RydWN0IGZpbGVzX3N0cnVj
dCAqZnNwLCBpbnQgZmQsIG1vZGVfdCBtb2RlKTsKCn07CgpzdHJ1Y3QgdmZzX29wdGlvbnMgewog
ICAgc3RydWN0IHZmc19vcHRpb25zICpwcmV2LCAqbmV4dDsKICAgIGNoYXIgKm5hbWU7CiAgICBj
aGFyICp2YWx1ZTsKfTsKIyA0NjAgImluY2x1ZGUvc21iLmgiIDIKCnR5cGVkZWYgc3RydWN0IGNv
bm5lY3Rpb25fc3RydWN0CnsKICAgICAgICBzdHJ1Y3QgY29ubmVjdGlvbl9zdHJ1Y3QgKm5leHQs
ICpwcmV2OwogICAgICAgIHVuc2lnbmVkIGNudW07CiAgICAgICAgaW50IHNlcnZpY2U7CiAgICAg
ICAgQk9PTCBmb3JjZV91c2VyOwogICAgICAgIHN0cnVjdCB1aWRfY2FjaGUgdWlkX2NhY2hlOwog
ICAgICAgIHZvaWQgKmRpcnB0cjsKICAgICAgICBCT09MIHByaW50ZXI7CiAgICAgICAgQk9PTCBp
cGM7CiAgICAgICAgQk9PTCByZWFkX29ubHk7CiAgICAgICAgQk9PTCBhZG1pbl91c2VyOwogICAg
ICAgIGNoYXIgKmRpcnBhdGg7CiAgICAgICAgY2hhciAqY29ubmVjdHBhdGg7CiAgICAgICAgY2hh
ciAqb3JpZ3BhdGg7CgogICAgICAgIHN0cnVjdCB2ZnNfb3BzIHZmc19vcHM7CgogICAgICAgIHZv
aWQgKmRsX2hhbmRsZTsKCiAgICAgICAgY2hhciAqdXNlcjsKICAgICAgICB1aWRfdCB1aWQ7CiAg
ICAgICAgZ2lkX3QgZ2lkOwogICAgICAgIGNoYXIgY2xpZW50X2FkZHJlc3NbMThdOwoKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCB2dWlkOwoKCgoKICAgICAgICBpbnQgbmdyb3VwczsKICAgICAgICBn
aWRfdCAqZ3JvdXBzOwogICAgICAgIE5UX1VTRVJfVE9LRU4gKm50X3VzZXJfdG9rZW47CgogICAg
ICAgIHRpbWVfdCBsYXN0dXNlZDsKICAgICAgICBCT09MIHVzZWQ7CiAgICAgICAgaW50IG51bV9m
aWxlc19vcGVuOwogICAgICAgIG5hbWVfY29tcGFyZV9lbnRyeSAqaGlkZV9saXN0OwogICAgICAg
IG5hbWVfY29tcGFyZV9lbnRyeSAqdmV0b19saXN0OwogICAgICAgIG5hbWVfY29tcGFyZV9lbnRy
eSAqdmV0b19vcGxvY2tfbGlzdDsKCn0gY29ubmVjdGlvbl9zdHJ1Y3Q7CgpzdHJ1Y3QgY3VycmVu
dF91c2VyCnsKICAgICAgICBjb25uZWN0aW9uX3N0cnVjdCAqY29ubjsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCB2dWlkOwogICAgICAgIHVpZF90IHVpZDsKICAgICAgICBnaWRfdCBnaWQ7CiAgICAg
ICAgaW50IG5ncm91cHM7CiAgICAgICAgZ2lkX3QgKmdyb3VwczsKICAgICAgICBOVF9VU0VSX1RP
S0VOICpudF91c2VyX3Rva2VuOwp9OwoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgZnN0
cmluZyBzbWJfbmFtZTsKICAgICAgICBmc3RyaW5nIHVuaXhfbmFtZTsKICAgICAgICBmc3RyaW5n
IGZ1bGxfbmFtZTsKICAgICAgICBmc3RyaW5nIGRvbWFpbjsKfSB1c2VyZG9tX3N0cnVjdDsKCgoK
ZW51bSB7TFBRX1FVRVVFRD0wLExQUV9QQVVTRUQsTFBRX1NQT09MSU5HLExQUV9QUklOVElORyxM
UFFfRVJST1IsTFBRX0RFTEVUSU5HLAogICAgICBMUFFfT0ZGTElORSxMUFFfUEFQRVJPVVQsTFBR
X1BSSU5URUQsTFBRX0RFTEVURUQsTFBRX0JMT0NLRUQsTFBRX1VTRVJfSU5URVJWRU5USU9OfTsK
CnR5cGVkZWYgc3RydWN0IF9wcmludF9xdWV1ZV9zdHJ1Y3QKewogIGludCBqb2I7CiAgaW50IHNp
emU7CiAgaW50IHN0YXR1czsKICBpbnQgcHJpb3JpdHk7CiAgdGltZV90IHRpbWU7CiAgZnN0cmlu
ZyB1c2VyOwogIGZzdHJpbmcgZmlsZTsKfSBwcmludF9xdWV1ZV9zdHJ1Y3Q7CgplbnVtIHtMUFNU
QVRfT0ssIExQU1RBVF9TVE9QUEVELCBMUFNUQVRfRVJST1J9OwoKdHlwZWRlZiBzdHJ1Y3QKewog
IGZzdHJpbmcgbWVzc2FnZTsKICBpbnQgcWNvdW50OwogIGludCBzdGF0dXM7Cn0gcHJpbnRfc3Rh
dHVzX3N0cnVjdDsKCgpzdHJ1Y3Qgc2VydmVyX2luZm9fc3RydWN0CnsKICBmc3RyaW5nIG5hbWU7
CiAgdW5zaWduZWQgaW50IHR5cGU7CiAgZnN0cmluZyBjb21tZW50OwogIGZzdHJpbmcgZG9tYWlu
OwogIEJPT0wgc2VydmVyX2FkZGVkOwp9OwoKCgpzdHJ1Y3QgaW50ZXJmYWNlCnsKICAgICAgICBz
dHJ1Y3QgaW50ZXJmYWNlICpuZXh0LCAqcHJldjsKICAgICAgICBzdHJ1Y3QgaW5fYWRkciBpcDsK
ICAgICAgICBzdHJ1Y3QgaW5fYWRkciBiY2FzdDsKICAgICAgICBzdHJ1Y3QgaW5fYWRkciBubWFz
azsKfTsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgcGlkX3QgcGlkOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IG9wX3BvcnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgb3BfdHlwZTsKICAgICAg
ICBpbnQgc2hhcmVfbW9kZTsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCB0aW1lOwogICAgICAgIGRl
dl90IGRldjsKICAgICAgICBpbm9fdCBpbm9kZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNoYXJl
X2ZpbGVfaWQ7Cn0gc2hhcmVfbW9kZV9lbnRyeTsKIyA2MDcgImluY2x1ZGUvc21iLmgiCnR5cGVk
ZWYgc3RydWN0IHNhbV9wYXNzd2QKewoKICAgICAgICB1bnNpZ25lZCBpbnQgaW5pdF9mbGFnOwoK
ICAgICAgICB0aW1lX3QgbG9nb25fdGltZTsKICAgICAgICB0aW1lX3QgbG9nb2ZmX3RpbWU7CiAg
ICAgICAgdGltZV90IGtpY2tvZmZfdGltZTsKICAgICAgICB0aW1lX3QgcGFzc19sYXN0X3NldF90
aW1lOwogICAgICAgIHRpbWVfdCBwYXNzX2Nhbl9jaGFuZ2VfdGltZTsKICAgICAgICB0aW1lX3Qg
cGFzc19tdXN0X2NoYW5nZV90aW1lOwoKICAgICAgICBwc3RyaW5nIHVzZXJuYW1lOwogICAgICAg
IHBzdHJpbmcgZG9tYWluOwogICAgICAgIHBzdHJpbmcgbnRfdXNlcm5hbWU7CiAgICAgICAgcHN0
cmluZyBmdWxsX25hbWU7CiAgICAgICAgcHN0cmluZyBob21lX2RpcjsKICAgICAgICBwc3RyaW5n
IGRpcl9kcml2ZTsKICAgICAgICBwc3RyaW5nIGxvZ29uX3NjcmlwdDsKICAgICAgICBwc3RyaW5n
IHByb2ZpbGVfcGF0aDsKICAgICAgICBwc3RyaW5nIGFjY3RfZGVzYyA7CiAgICAgICAgcHN0cmlu
ZyB3b3Jrc3RhdGlvbnM7CiAgICAgICAgcHN0cmluZyB1bmtub3duX3N0ciA7CiAgICAgICAgcHN0
cmluZyBtdW5nZWRfZGlhbCA7CgogICAgICAgIHVpZF90IHVpZDsKICAgICAgICBnaWRfdCBnaWQ7
CiAgICAgICAgdW5zaWduZWQgaW50IHVzZXJfcmlkOwogICAgICAgIHVuc2lnbmVkIGludCBncm91
cF9yaWQ7CgogICAgICAgIHVuc2lnbmVkIGNoYXIgKmxtX3B3OwogICAgICAgIHVuc2lnbmVkIGNo
YXIgKm50X3B3OwoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBhY2N0X2N0cmw7CiAgICAgICAgdW5z
aWduZWQgaW50IHVua25vd25fMzsKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgbG9nb25fZGl2czsK
ICAgICAgICB1bnNpZ25lZCBpbnQgaG91cnNfbGVuOwogICAgICAgIHVuc2lnbmVkIGNoYXIgaG91
cnNbMzJdOwoKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bl81OwogICAgICAgIHVuc2lnbmVk
IGludCB1bmtub3duXzY7Cgp9IFNBTV9BQ0NPVU5UOwojIDY4MSAiaW5jbHVkZS9zbWIuaCIKc3Ry
dWN0IGNvbm5lY3Rpb25zX2tleSB7CiAgICAgICAgcGlkX3QgcGlkOwogICAgICAgIGludCBjbnVt
OwogICAgICAgIGZzdHJpbmcgbmFtZTsKfTsKCnN0cnVjdCBjb25uZWN0aW9uc19kYXRhIHsKICAg
ICAgICBpbnQgbWFnaWM7CiAgICAgICAgcGlkX3QgcGlkOwogICAgICAgIGludCBjbnVtOwogICAg
ICAgIHVpZF90IHVpZDsKICAgICAgICBnaWRfdCBnaWQ7CiAgICAgICAgY2hhciBuYW1lWzI0XTsK
ICAgICAgICBjaGFyIGFkZHJbMjRdOwogICAgICAgIGNoYXIgbWFjaGluZVsyNTZdOwogICAgICAg
IHRpbWVfdCBzdGFydDsKfTsKCgoKc3RydWN0IGxvY2tpbmdfa2V5IHsKICAgICAgICBkZXZfdCBk
ZXY7CiAgICAgICAgaW5vX3QgaW5vZGU7Cn07CgpzdHJ1Y3QgbG9ja2luZ19kYXRhIHsKICAgICAg
ICB1bmlvbiB7CiAgICAgICAgICAgICAgICBpbnQgbnVtX3NoYXJlX21vZGVfZW50cmllczsKICAg
ICAgICAgICAgICAgIHNoYXJlX21vZGVfZW50cnkgZHVtbXk7CiAgICAgICAgfSB1OwoKCgoKfTsK
CgoKdHlwZWRlZiBlbnVtCnsKICBQX0JPT0wsUF9CT09MUkVWLFBfQ0hBUixQX0lOVEVHRVIsUF9P
Q1RBTCxQX0xJU1QsCiAgUF9TVFJJTkcsUF9VU1RSSU5HLFBfR1NUUklORyxQX1VHU1RSSU5HLFBf
RU5VTSxQX1NFUAp9IHBhcm1fdHlwZTsKCnR5cGVkZWYgZW51bQp7CiAgUF9MT0NBTCxQX0dMT0JB
TCxQX1NFUEFSQVRPUixQX05PTkUKfSBwYXJtX2NsYXNzOwoKCmVudW0gYnJsX3R5cGUge1JFQURf
TE9DSywgV1JJVEVfTE9DS307CgpzdHJ1Y3QgZW51bV9saXN0IHsKICAgICAgICBpbnQgdmFsdWU7
CiAgICAgICAgY2hhciAqbmFtZTsKfTsKIyA3NDYgImluY2x1ZGUvc21iLmgiCnN0cnVjdCBwYXJt
X3N0cnVjdAp7CiAgICAgICAgY2hhciAqbGFiZWw7CiAgICAgICAgcGFybV90eXBlIHR5cGU7CiAg
ICAgICAgcGFybV9jbGFzcyBjbGFzczsKICAgICAgICB2b2lkICpwdHI7CiAgICAgICAgQk9PTCAo
KnNwZWNpYWwpKGNoYXIgKiwgY2hhciAqKik7CiAgICAgICAgc3RydWN0IGVudW1fbGlzdCAqZW51
bV9saXN0OwogICAgICAgIHVuc2lnbmVkIGZsYWdzOwogICAgICAgIHVuaW9uIHsKICAgICAgICAg
ICAgICAgIEJPT0wgYnZhbHVlOwogICAgICAgICAgICAgICAgaW50IGl2YWx1ZTsKICAgICAgICAg
ICAgICAgIGNoYXIgKnN2YWx1ZTsKICAgICAgICAgICAgICAgIGNoYXIgY3ZhbHVlOwogICAgICAg
ICAgICAgICAgY2hhciAqKmx2YWx1ZTsKICAgICAgICB9IGRlZjsKfTsKCnN0cnVjdCBiaXRtYXAg
ewogICAgICAgIHVuc2lnbmVkIGludCAqYjsKICAgICAgICBpbnQgbjsKfTsKIyAxMzE3ICJpbmNs
dWRlL3NtYi5oIgplbnVtIHByb3RvY29sX3R5cGVzIHtQUk9UT0NPTF9OT05FLFBST1RPQ09MX0NP
UkUsUFJPVE9DT0xfQ09SRVBMVVMsUFJPVE9DT0xfTEFOTUFOMSxQUk9UT0NPTF9MQU5NQU4yLFBS
T1RPQ09MX05UMX07CgoKZW51bSBzZWN1cml0eV90eXBlcyB7U0VDX1NIQVJFLFNFQ19VU0VSLFNF
Q19TRVJWRVIsU0VDX0RPTUFJTixTRUNfQURTfTsKCgplbnVtIHNlcnZlcl90eXBlcwp7CiAgICAg
ICAgUk9MRV9TVEFOREFMT05FLAogICAgICAgIFJPTEVfRE9NQUlOX01FTUJFUiwKICAgICAgICBS
T0xFX0RPTUFJTl9CREMsCiAgICAgICAgUk9MRV9ET01BSU5fUERDCn07CgoKZW51bSBwcmludGlu
Z190eXBlcyB7UFJJTlRfQlNELFBSSU5UX1NZU1YsUFJJTlRfQUlYLFBSSU5UX0hQVVgsCiAgICAg
ICAgICAgICAgICAgICAgIFBSSU5UX1FOWCxQUklOVF9QTFAsUFJJTlRfTFBSTkcsUFJJTlRfU09G
VFEsCiAgICAgICAgICAgICAgICAgICAgIFBSSU5UX0NVUFMsUFJJTlRfTFBSTlQsUFJJTlRfTFBS
T1MyCgoKCn07CgoKZW51bSBzY2hlbWFfdHlwZXMge1NDSEVNQV9DT01QQVQsIFNDSEVNQV9BRCwg
U0NIRU1BX1NBTUJBfTsKCgplbnVtIGxkYXBfc3NsX3R5cGVzIHtMREFQX1NTTF9PTiwgTERBUF9T
U0xfT0ZGLCBMREFQX1NTTF9TVEFSVF9UTFN9OwoKCmVudW0gcmVtb3RlX2FyY2hfdHlwZXMge1JB
X1VOS05PV04sIFJBX1dGV0csIFJBX09TMiwgUkFfV0lOOTUsIFJBX1dJTk5ULCBSQV9XSU4ySywg
UkFfU0FNQkF9OwoKCmVudW0gY2FzZV9oYW5kbGluZyB7Q0FTRV9MT1dFUixDQVNFX1VQUEVSfTsK
CgoKZW51bSBzc2xfdmVyc2lvbl9lbnVtIHtTTUJfU1NMX1YyLFNNQl9TU0xfVjMsU01CX1NTTF9W
MjMsU01CX1NTTF9UTFMxfTsKIyAxMzg1ICJpbmNsdWRlL3NtYi5oIgpleHRlcm4gaW50IGdsb2Jh
bF9pc19tdWx0aWJ5dGVfY29kZXBhZ2U7CiMgMTM5NyAiaW5jbHVkZS9zbWIuaCIKZXh0ZXJuIGlu
dCB1bml4X0VSUl9jbGFzczsKZXh0ZXJuIGludCB1bml4X0VSUl9jb2RlOwoKCgoKZXh0ZXJuIGlu
dCBjaGFpbl9zaXplOwojIDE1MTMgImluY2x1ZGUvc21iLmgiCnN0cnVjdCBrZXJuZWxfb3Bsb2Nr
cyB7CiAgICAgICAgQk9PTCAoKnJlY2VpdmVfbWVzc2FnZSkoZmRfc2V0ICpmZHMsIGNoYXIgKmJ1
ZmZlciwgaW50IGJ1ZmZlcl9sZW4pOwogICAgICAgIEJPT0wgKCpzZXRfb3Bsb2NrKShmaWxlc19z
dHJ1Y3QgKmZzcCwgaW50IG9wbG9ja190eXBlKTsKICAgICAgICB2b2lkICgqcmVsZWFzZV9vcGxv
Y2spKGZpbGVzX3N0cnVjdCAqZnNwKTsKICAgICAgICBCT09MICgqcGFyc2VfbWVzc2FnZSkoY2hh
ciAqbXNnX3N0YXJ0LCBpbnQgbXNnX2xlbiwgaW5vX3QgKmlub2RlLCBkZXZfdCAqZGV2LCB1bnNp
Z25lZCBsb25nICpmaWxlX2lkKTsKICAgICAgICBCT09MICgqbXNnX3dhaXRpbmcpKGZkX3NldCAq
ZmRzKTsKICAgICAgICBpbnQgbm90aWZpY2F0aW9uX2ZkOwp9OwoKCgoKCgpzdHJ1Y3QgY25vdGlm
eV9mbnMgewogICAgICAgIHZvaWQgKiAoKnJlZ2lzdGVyX25vdGlmeSkoY29ubmVjdGlvbl9zdHJ1
Y3QgKmNvbm4sIGNoYXIgKnBhdGgsIHVuc2lnbmVkIGludCBmbGFncyk7CiAgICAgICAgQk9PTCAo
KmNoZWNrX25vdGlmeSkoY29ubmVjdGlvbl9zdHJ1Y3QgKmNvbm4sIHVuc2lnbmVkIHNob3J0IHZ1
aWQsIGNoYXIgKnBhdGgsIHVuc2lnbmVkIGludCBmbGFncywgdm9pZCAqZGF0YSwgdGltZV90IHQp
OwogICAgICAgIHZvaWQgKCpyZW1vdmVfbm90aWZ5KSh2b2lkICpkYXRhKTsKICAgICAgICBpbnQg
c2VsZWN0X3RpbWU7Cn07CgoKCiMgMSAiaW5jbHVkZS9zbWJfbWFjcm9zLmgiIDEKIyAxNTM3ICJp
bmNsdWRlL3NtYi5oIiAyCgoKc3RydWN0IG5tYl9uYW1lIHsKICBjaGFyIG5hbWVbMTddOwogIGNo
YXIgc2NvcGVbNjRdOwogIHVuc2lnbmVkIGludCBuYW1lX3R5cGU7Cn07CgoKCnN0cnVjdCBub2Rl
X3N0YXR1cyB7CiAgICAgICAgY2hhciBuYW1lWzE2XTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHR5
cGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBmbGFnczsKfTsKCgoKCgoKCnN0cnVjdCBwd2RfaW5m
bwp7CiAgICAgICAgQk9PTCBudWxsX3B3ZDsKICAgICAgICBCT09MIGNsZWFydGV4dDsKICAgICAg
ICBCT09MIGNyeXB0ZWQ7CgogICAgICAgIGZzdHJpbmcgcGFzc3dvcmQ7CgogICAgICAgIHVuc2ln
bmVkIGNoYXIgc21iX2xtX3B3ZFsxNl07CiAgICAgICAgdW5zaWduZWQgY2hhciBzbWJfbnRfcHdk
WzE2XTsKCiAgICAgICAgdW5zaWduZWQgY2hhciBzbWJfbG1fb3dmWzI0XTsKICAgICAgICB1bnNp
Z25lZCBjaGFyIHNtYl9udF9vd2ZbMTI4XTsKICAgICAgICBzaXplX3QgbnRfb3dmX2xlbjsKCiAg
ICAgICAgdW5zaWduZWQgY2hhciBsbV9jbGlfY2hhbFs4XTsKICAgICAgICB1bnNpZ25lZCBjaGFy
IG50X2NsaV9jaGFsWzEyOF07CiAgICAgICAgc2l6ZV90IG50X2NsaV9jaGFsX2xlbjsKCiAgICAg
ICAgdW5zaWduZWQgY2hhciBzZXNzX2tleVsxNl07Cn07CgoKCgoKc3RydWN0IG5jYWNuX25wCnsK
ICAgICAgICBmc3RyaW5nIHBpcGVfbmFtZTsKICAgICAgICBzdHJ1Y3QgY2xpX3N0YXRlICpzbWI7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZm51bTsKICAgICAgICBCT09MIGluaXRpYWxpc2VkOwp9
OwoKIyAxICJpbmNsdWRlL3JwY19jcmVkcy5oIiAxCiMgMjcgImluY2x1ZGUvcnBjX2NyZWRzLmgi
CnR5cGVkZWYgc3RydWN0IG50dXNlcl9jcmVkcwp7CiAgICAgICAgZnN0cmluZyB1c2VyX25hbWU7
CiAgICAgICAgZnN0cmluZyBkb21haW47CiAgICAgICAgc3RydWN0IHB3ZF9pbmZvIHB3ZDsKCiAg
ICAgICAgdW5zaWduZWQgaW50IG50bG1zc3BfZmxhZ3M7Cgp9IENSRURTX05UOwoKdHlwZWRlZiBz
dHJ1Y3QgdW5peHVzZXJfY3JlZHMKewogICAgICAgIGZzdHJpbmcgdXNlcl9uYW1lOwogICAgICAg
IGZzdHJpbmcgcmVxdWVzdGVkX25hbWU7CiAgICAgICAgZnN0cmluZyByZWFsX25hbWU7CiAgICAg
ICAgQk9PTCBndWVzdDsKCn0gQ1JFRFNfVU5JWDsKCnR5cGVkZWYgc3RydWN0IHVuaXhzZWNfY3Jl
ZHMKewogICAgICAgIHVuc2lnbmVkIGludCB1aWQ7CiAgICAgICAgdW5zaWduZWQgaW50IGdpZDsK
ICAgICAgICBpbnQgbnVtX2dycHM7CiAgICAgICAgdW5zaWduZWQgaW50ICpncnBzOwoKfSBDUkVE
U19VTklYX1NFQzsKCnR5cGVkZWYgc3RydWN0IG50c2VjX2NyZWRzCnsKICAgICAgICBET01fU0lE
IHNpZDsKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX2dycHM7CiAgICAgICAgdW5zaWduZWQgaW50
ICpncnBfcmlkczsKCn0gQ1JFRFNfTlRfU0VDOwoKdHlwZWRlZiBzdHJ1Y3QgdXNlcl9jcmVkcwp7
CiAgICAgICAgQk9PTCByZXVzZTsKCiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9udGM7CiAgICAg
ICAgdW5zaWduZWQgaW50IHB0cl91eGM7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9udHM7CiAg
ICAgICAgdW5zaWduZWQgaW50IHB0cl91eHM7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9zc2s7
CgogICAgICAgIENSRURTX05UIG50YzsKICAgICAgICBDUkVEU19VTklYIHV4YzsKCiAgICAgICAg
Q1JFRFNfTlRfU0VDIG50czsKICAgICAgICBDUkVEU19VTklYX1NFQyB1eHM7CgogICAgICAgIHVu
c2lnbmVkIGNoYXIgdXNyX3Nlc3Nfa2V5WzE2XTsKCn0gQ1JFRFNfSFlCUklEOwoKdHlwZWRlZiBz
dHJ1Y3QgY3JlZF9jb21tYW5kCnsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB2ZXJzaW9uOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IGNvbW1hbmQ7CiAgICAgICAgdW5zaWduZWQgaW50IHBpZDsKCiAg
ICAgICAgZnN0cmluZyBuYW1lOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX2NyZWRzOwogICAg
ICAgIENSRURTX0hZQlJJRCAqY3JlZDsKCn0gQ1JFRFNfQ01EOwojIDE1OTQgImluY2x1ZGUvc21i
LmgiIDIKIyAxICJpbmNsdWRlL3JwY19taXNjLmgiIDEKIyAyNCAiaW5jbHVkZS9ycGNfbWlzYy5o
IgojIDEgImluY2x1ZGUvbnRkb21haW4uaCIgMQojIDI4ICJpbmNsdWRlL250ZG9tYWluLmgiCiMg
MSAiaW5jbHVkZS9ycGNfZGNlLmgiIDEKIyAyNyAiaW5jbHVkZS9ycGNfZGNlLmgiCiMgMSAiaW5j
bHVkZS9ycGNfbWlzYy5oIiAxCiMgMjQgImluY2x1ZGUvcnBjX21pc2MuaCIKIyAxICJpbmNsdWRl
L250ZG9tYWluLmgiIDEKIyAyNSAiaW5jbHVkZS9ycGNfbWlzYy5oIiAyCiMgMSAiaW5jbHVkZS9y
cGNfZGNlLmgiIDEKIyAyNiAiaW5jbHVkZS9ycGNfbWlzYy5oIiAyCiMgNzAgImluY2x1ZGUvcnBj
X21pc2MuaCIKdHlwZWRlZiBzdHJ1Y3QgZW51bV9obmRfaW5mbwp7CiAgICAgICAgdW5zaWduZWQg
aW50IHB0cl9obmQ7CiAgICAgICAgdW5zaWduZWQgaW50IGhhbmRsZTsKCn0gRU5VTV9ITkQ7CgoK
dHlwZWRlZiBzdHJ1Y3QgbG9va3VwX2xldmVsX2luZm8KewogIHVuc2lnbmVkIHNob3J0IHZhbHVl
OwoKfSBMT09LVVBfTEVWRUw7CgoKdHlwZWRlZiBzdHJ1Y3Qgc2lkX2luZm9fMgp7CiAgICAgICAg
dW5zaWduZWQgaW50IG51bV9hdXRoczsKCiAgICAgICAgRE9NX1NJRCBzaWQ7Cgp9IERPTV9TSUQy
OwoKCnR5cGVkZWYgc3RydWN0IGhlYWRlcl9pbmZvCnsKICB1bnNpZ25lZCBzaG9ydCBzdHJfc3Ry
X2xlbjsKICB1bnNpZ25lZCBzaG9ydCBzdHJfbWF4X2xlbjsKICB1bnNpZ25lZCBpbnQgYnVmZmVy
OwoKfSBTVFJIRFI7CgoKdHlwZWRlZiBzdHJ1Y3QgdW5paGRyX2luZm8KewogIHVuc2lnbmVkIHNo
b3J0IHVuaV9zdHJfbGVuOwogIHVuc2lnbmVkIHNob3J0IHVuaV9tYXhfbGVuOwogIHVuc2lnbmVk
IGludCBidWZmZXI7Cgp9IFVOSUhEUjsKCgp0eXBlZGVmIHN0cnVjdCB1bmloZHIyX2luZm8Kewog
IFVOSUhEUiB1bmloZHI7CiAgdW5zaWduZWQgaW50IGJ1ZmZlcjsKCn0gVU5JSERSMjsKCgoKCgoK
CnR5cGVkZWYgc3RydWN0IHVuaXN0cl9pbmZvCnsKCiAgdW5zaWduZWQgc2hvcnQgKmJ1ZmZlcjsK
fSBVTklTVFI7CgoKdHlwZWRlZiBzdHJ1Y3QgYnVmaGRyX2luZm8KewogIHVuc2lnbmVkIGludCBi
dWZfbWF4X2xlbjsKICB1bnNpZ25lZCBpbnQgYnVmX2xlbjsKCn0gQlVGSERSOwoKCgoKdHlwZWRl
ZiBzdHJ1Y3QgYnVmZmVyMl9pbmZvCnsKICB1bnNpZ25lZCBpbnQgYnVmX21heF9sZW47CiAgdW5z
aWduZWQgaW50IHVuZG9jOwogIHVuc2lnbmVkIGludCBidWZfbGVuOwoKICB1bnNpZ25lZCBzaG9y
dCAqYnVmZmVyOwoKfSBCVUZGRVIyOwoKCnR5cGVkZWYgc3RydWN0IGJ1ZmZlcjNfaW5mbwp7CiAg
dW5zaWduZWQgaW50IGJ1Zl9tYXhfbGVuOwogIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlcjsKICB1bnNp
Z25lZCBpbnQgYnVmX2xlbjsKCn0gQlVGRkVSMzsKCgp0eXBlZGVmIHN0cnVjdCBidWZmZXI1X2lu
Zm8KewogIHVuc2lnbmVkIGludCBidWZfbGVuOwogIHVuc2lnbmVkIHNob3J0ICpidWZmZXI7Cn0g
QlVGRkVSNTsKCgp0eXBlZGVmIHN0cnVjdCB1bmlzdHIyX2luZm8KewogIHVuc2lnbmVkIGludCB1
bmlfbWF4X2xlbjsKICB1bnNpZ25lZCBpbnQgdW5kb2M7CiAgdW5zaWduZWQgaW50IHVuaV9zdHJf
bGVuOwoKCgogIHVuc2lnbmVkIHNob3J0ICpidWZmZXI7Cgp9IFVOSVNUUjI7CgoKdHlwZWRlZiBz
dHJ1Y3Qgc3RyaW5nMl9pbmZvCnsKICB1bnNpZ25lZCBpbnQgc3RyX21heF9sZW47CiAgdW5zaWdu
ZWQgaW50IHVuZG9jOwogIHVuc2lnbmVkIGludCBzdHJfc3RyX2xlbjsKICB1bnNpZ25lZCBjaGFy
ICpidWZmZXI7Cgp9IFNUUklORzI7CgoKdHlwZWRlZiBzdHJ1Y3QgdW5pc3RyM19pbmZvCnsKICAg
ICAgICB1bnNpZ25lZCBpbnQgdW5pX3N0cl9sZW47CiAgICAgICAgVU5JU1RSIHN0cjsKCn0gVU5J
U1RSMzsKCgoKdHlwZWRlZiBzdHJ1Y3QgZG9tcmlkMl9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBj
aGFyIHR5cGU7CiAgICAgICAgdW5zaWduZWQgaW50IHJpZDsKICAgICAgICB1bnNpZ25lZCBpbnQg
cmlkX2lkeDsKCn0gRE9NX1JJRDI7CgoKdHlwZWRlZiBzdHJ1Y3QgZG9tcmlkM19pbmZvCnsKICAg
ICAgICB1bnNpZ25lZCBpbnQgcmlkOwogICAgICAgIHVuc2lnbmVkIGludCB0eXBlMTsKICAgICAg
ICB1bnNpZ25lZCBpbnQgcHRyX3R5cGU7CiAgICAgICAgdW5zaWduZWQgaW50IHR5cGUyOwogICAg
ICAgIHVuc2lnbmVkIGludCB1bms7Cgp9IERPTV9SSUQzOwoKCnR5cGVkZWYgc3RydWN0IGRvbXJp
ZDRfaW5mbwp7CiAgdW5zaWduZWQgaW50IHVua25vd247CiAgdW5zaWduZWQgc2hvcnQgYXR0cjsK
ICB1bnNpZ25lZCBpbnQgcmlkOwoKfSBET01fUklENDsKCgp0eXBlZGVmIHN0cnVjdCBjbG50X3Ny
dl9pbmZvCnsKICB1bnNpZ25lZCBpbnQgdW5kb2NfYnVmZmVyOwogIFVOSVNUUjIgdW5pX2xvZ29u
X3NydjsKICB1bnNpZ25lZCBpbnQgdW5kb2NfYnVmZmVyMjsKICBVTklTVFIyIHVuaV9jb21wX25h
bWU7Cgp9IERPTV9DTE5UX1NSVjsKCgp0eXBlZGVmIHN0cnVjdCBsb2dfaW5mbwp7CiAgdW5zaWdu
ZWQgaW50IHVuZG9jX2J1ZmZlcjsKICBVTklTVFIyIHVuaV9sb2dvbl9zcnY7CiAgVU5JU1RSMiB1
bmlfYWNjdF9uYW1lOwogIHVuc2lnbmVkIHNob3J0IHNlY19jaGFuOwogIFVOSVNUUjIgdW5pX2Nv
bXBfbmFtZTsKCn0gRE9NX0xPR19JTkZPOwoKCnR5cGVkZWYgc3RydWN0IGNoYWxfaW5mbwp7CiAg
ICB1bnNpZ25lZCBjaGFyIGRhdGFbOF07Cn0gRE9NX0NIQUw7CgoKdHlwZWRlZiBzdHJ1Y3QgY3Jl
ZF9pbmZvCnsKICAgIERPTV9DSEFMIGNoYWxsZW5nZTsKICAgIFVUSU1FIHRpbWVzdGFtcDsKfSBE
T01fQ1JFRDsKCgp0eXBlZGVmIHN0cnVjdCBjbG50X2luZm8KewogIERPTV9MT0dfSU5GTyBsb2dp
bjsKICBET01fQ1JFRCBjcmVkOwoKfSBET01fQ0xOVF9JTkZPOwoKCnR5cGVkZWYgc3RydWN0IGNs
bnRfaW5mbzIKewogIERPTV9DTE5UX1NSViBsb2dpbjsKICB1bnNpZ25lZCBpbnQgcHRyX2NyZWQ7
CiAgRE9NX0NSRUQgY3JlZDsKCn0gRE9NX0NMTlRfSU5GTzI7CgoKdHlwZWRlZiBzdHJ1Y3QgbG9n
b25faW5mbwp7CiAgdW5zaWduZWQgaW50IGxvdzsKICB1bnNpZ25lZCBpbnQgaGlnaDsKCn0gRE9N
X0xPR09OX0lEOwoKCnR5cGVkZWYgc3RydWN0IG93Zl9pbmZvCnsKICB1bnNpZ25lZCBjaGFyIGRh
dGFbMTZdOwoKfSBPV0ZfSU5GTzsKCgoKdHlwZWRlZiBzdHJ1Y3QgZ2lkX2luZm8KewogIHVuc2ln
bmVkIGludCBnX3JpZDsKICB1bnNpZ25lZCBpbnQgYXR0cjsKCn0gRE9NX0dJRDsKCgp0eXBlZGVm
IHN0cnVjdCBsc2FfcG9saWN5X2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBkYXRhMTsKICAg
ICAgICB1bnNpZ25lZCBpbnQgZGF0YTI7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZGF0YTM7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgZGF0YTQ7CiAgICAgICAgdW5zaWduZWQgY2hhciBkYXRhNVs4
XTsKfSBQT0xJQ1lfSE5EOwoKCgoKCnR5cGVkZWYgc3RydWN0IF9jbGlfYXV0aF9mbnMgY2xpX2F1
dGhfZm5zOwpzdHJ1Y3QgdXNlcl9jcmVkczsKc3RydWN0IGNsaV9jb25uZWN0aW9uIHsKCiAgICAg
ICAgY2hhciAqc3J2X25hbWU7CiAgICAgICAgY2hhciAqcGlwZV9uYW1lOwogICAgICAgIHN0cnVj
dCB1c2VyX2NyZWRzIHVzcl9jcmVkczsKCiAgICAgICAgc3RydWN0IGNsaV9zdGF0ZSAqcENsaV9z
dGF0ZTsKCiAgICAgICAgY2xpX2F1dGhfZm5zICphdXRoOwoKICAgICAgICB2b2lkICphdXRoX2lu
Zm87CiAgICAgICAgdm9pZCAqYXV0aF9jcmVkczsKfTsKCgoKCgp0eXBlZGVmIHN0cnVjdCBycGNf
aG5kX25vZGUgewoKICAgICAgICBQT0xJQ1lfSE5EIGhuZDsKICAgICAgICBzdHJ1Y3QgY2xpX2Nv
bm5lY3Rpb24gKmNsaTsKCn0gUlBDX0hORF9OT0RFOwoKdHlwZWRlZiBzdHJ1Y3QgdWludDY0X3MK
ewogICAgICAgIHVuc2lnbmVkIGludCBsb3c7CiAgICAgICAgdW5zaWduZWQgaW50IGhpZ2g7Cn0g
VUlOVDY0X1M7CgoKdHlwZWRlZiBzdHJ1Y3QgYnVmaGRyMl9pbmZvCnsKICAgICAgICB1bnNpZ25l
ZCBpbnQgaW5mb19sZXZlbDsKICAgICAgICB1bnNpZ25lZCBpbnQgbGVuZ3RoOwogICAgICAgIHVu
c2lnbmVkIGludCBidWZmZXI7Cgp9CkJVRkhEUjI7CgoKdHlwZWRlZiBzdHJ1Y3QgYnVmZmVyNF9p
bmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgYnVmX2xlbjsKICAgICAgICB1bnNpZ25lZCBjaGFy
IGJ1ZmZlcls1MTJdOwoKfQpCVUZGRVI0OwojIDI4ICJpbmNsdWRlL3JwY19kY2UuaCIgMgoKCgoK
ZW51bSBSUENfUEtUX1RZUEUKewogICAgICAgIFJQQ19SRVFVRVNUID0gMHgwMCwKICAgICAgICBS
UENfUkVTUE9OU0UgPSAweDAyLAogICAgICAgIFJQQ19GQVVMVCA9IDB4MDMsCiAgICAgICAgUlBD
X0JJTkQgPSAweDBCLAogICAgICAgIFJQQ19CSU5EQUNLID0gMHgwQywKICAgICAgICBSUENfQklO
RE5BQ0sgPSAweDBELAogICAgICAgIFJQQ19BTFRDT05UID0gMHgwRSwKICAgICAgICBSUENfQUxU
Q09OVFJFU1AgPSAweDBGLAogICAgICAgIFJQQ19CSU5EUkVTUCA9IDB4MTAKfTsKCgoKCgoKCmVu
dW0gTlRMTV9NRVNTQUdFX1RZUEUKewogICAgICAgIE5UTE1TU1BfTkVHT1RJQVRFID0gMSwKICAg
ICAgICBOVExNU1NQX0NIQUxMRU5HRSA9IDIsCiAgICAgICAgTlRMTVNTUF9BVVRIID0gMywKICAg
ICAgICBOVExNU1NQX1VOS05PV04gPSA0Cn07CiMgOTEgImluY2x1ZGUvcnBjX2RjZS5oIgp0eXBl
ZGVmIHN0cnVjdCBycGNfdXVpZAp7CiAgdW5zaWduZWQgaW50IHRpbWVfbG93OwogIHVuc2lnbmVk
IHNob3J0IHRpbWVfbWlkOwogIHVuc2lnbmVkIHNob3J0IHRpbWVfaGlfYW5kX3ZlcnNpb247CiAg
dW5zaWduZWQgY2hhciByZW1haW5pbmdbOF07Cn0gUlBDX1VVSUQ7CgoKCgp0eXBlZGVmIHN0cnVj
dCBycGNfaWZhY2VfaW5mbwp7CiAgUlBDX1VVSUQgdXVpZDsKICB1bnNpZ25lZCBpbnQgdmVyc2lv
bjsKCn0gUlBDX0lGQUNFOwoKCgpzdHJ1Y3QgcGlwZV9pZF9pbmZvCnsKCgogICAgICAgIGNoYXIg
KmNsaWVudF9waXBlOwogICAgICAgIFJQQ19JRkFDRSBhYnN0cl9zeW50YXg7CgogICAgICAgIGNo
YXIgKnNlcnZlcl9waXBlOwogICAgICAgIFJQQ19JRkFDRSB0cmFuc19zeW50YXg7Cn07CgoKdHlw
ZWRlZiBzdHJ1Y3QgcnBjX2hkcl9pbmZvCnsKICB1bnNpZ25lZCBjaGFyIG1ham9yOwogIHVuc2ln
bmVkIGNoYXIgbWlub3I7CiAgdW5zaWduZWQgY2hhciBwa3RfdHlwZTsKICB1bnNpZ25lZCBjaGFy
IGZsYWdzOwogIHVuc2lnbmVkIGNoYXIgcGFja190eXBlWzRdOwogIHVuc2lnbmVkIHNob3J0IGZy
YWdfbGVuOwogIHVuc2lnbmVkIHNob3J0IGF1dGhfbGVuOwogIHVuc2lnbmVkIGludCBjYWxsX2lk
OwoKfSBSUENfSERSOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgcnBjX2hkcl9yZXFfaW5mbwp7CiAgdW5z
aWduZWQgaW50IGFsbG9jX2hpbnQ7CiAgdW5zaWduZWQgc2hvcnQgY29udGV4dF9pZDsKICB1bnNp
Z25lZCBzaG9ydCBvcG51bTsKCn0gUlBDX0hEUl9SRVE7CgoKCgp0eXBlZGVmIHN0cnVjdCBycGNf
aGRyX3Jlc3BfaW5mbwp7CiAgdW5zaWduZWQgaW50IGFsbG9jX2hpbnQ7CiAgdW5zaWduZWQgc2hv
cnQgY29udGV4dF9pZDsKICB1bnNpZ25lZCBjaGFyIGNhbmNlbF9jb3VudDsKICB1bnNpZ25lZCBj
aGFyIHJlc2VydmVkOwoKfSBSUENfSERSX1JFU1A7CgoKCgp0eXBlZGVmIHN0cnVjdCBycGNfaGRy
X2ZhdWx0X2luZm8KewogIE5UU1RBVFVTIHN0YXR1czsKICB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWQ7
Cn0gUlBDX0hEUl9GQVVMVDsKIyAxNzggImluY2x1ZGUvcnBjX2RjZS5oIgp0eXBlZGVmIHN0cnVj
dCBycGNfYWRkcl9pbmZvCnsKICB1bnNpZ25lZCBzaG9ydCBsZW47CiAgZnN0cmluZyBzdHI7Cgp9
IFJQQ19BRERSX1NUUjsKCgp0eXBlZGVmIHN0cnVjdCBycGNfaGRyX2JiYV9pbmZvCnsKICB1bnNp
Z25lZCBzaG9ydCBtYXhfdHNpemU7CiAgdW5zaWduZWQgc2hvcnQgbWF4X3JzaXplOwogIHVuc2ln
bmVkIGludCBhc3NvY19naWQ7Cgp9IFJQQ19IRFJfQkJBOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgcnBj
X2hkcl9hdXRoYV9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBtYXhfdHNpemU7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgbWF4X3JzaXplOwoKICAgICAgICB1bnNpZ25lZCBjaGFyIGF1dGhf
dHlwZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGF1dGhfbGV2ZWw7CiAgICAgICAgdW5zaWduZWQg
Y2hhciBzdHViX3R5cGVfbGVuOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcGFkZGluZzsKCiAgICAg
ICAgdW5zaWduZWQgaW50IHVua25vd247Cgp9IFJQQ19IRFJfQVVUSEE7CgoKCgp0eXBlZGVmIHN0
cnVjdCBycGNfaGRyX2F1dGhfaW5mbwp7CiAgICAgICAgdW5zaWduZWQgY2hhciBhdXRoX3R5cGU7
CiAgICAgICAgdW5zaWduZWQgY2hhciBhdXRoX2xldmVsOwogICAgICAgIHVuc2lnbmVkIGNoYXIg
c3R1Yl90eXBlX2xlbjsKICAgICAgICB1bnNpZ25lZCBjaGFyIHBhZGRpbmc7CgogICAgICAgIHVu
c2lnbmVkIGludCB1bmtub3duOwoKfSBSUENfSERSX0FVVEg7CgoKCgp0eXBlZGVmIHN0cnVjdCBy
cGNfYmluZF9yZXFfaW5mbwp7CiAgUlBDX0hEUl9CQkEgYmJhOwoKICB1bnNpZ25lZCBpbnQgbnVt
X2VsZW1lbnRzOwogIHVuc2lnbmVkIHNob3J0IGNvbnRleHRfaWQ7CiAgdW5zaWduZWQgY2hhciBu
dW1fc3ludGF4ZXM7CgogIFJQQ19JRkFDRSBhYnN0cmFjdDsKICBSUENfSUZBQ0UgdHJhbnNmZXI7
Cgp9IFJQQ19IRFJfUkI7CiMgMjQ5ICJpbmNsdWRlL3JwY19kY2UuaCIKdHlwZWRlZiBzdHJ1Y3Qg
cnBjX3Jlc3VsdHNfaW5mbwp7CgoKICB1bnNpZ25lZCBjaGFyIG51bV9yZXN1bHRzOwoKCgogIHVu
c2lnbmVkIHNob3J0IHJlc3VsdDsKICB1bnNpZ25lZCBzaG9ydCByZWFzb247Cgp9IFJQQ19SRVNV
TFRTOwoKCnR5cGVkZWYgc3RydWN0IHJwY19oZHJfYmFfaW5mbwp7CiAgUlBDX0hEUl9CQkEgYmJh
OwoKICBSUENfQUREUl9TVFIgYWRkciA7CiAgUlBDX1JFU1VMVFMgcmVzIDsKICBSUENfSUZBQ0Ug
dHJhbnNmZXI7Cgp9IFJQQ19IRFJfQkE7CgoKdHlwZWRlZiBzdHJ1Y3QgcnBjX2F1dGhfdmVyaWZf
aW5mbwp7CiAgICAgICAgZnN0cmluZyBzaWduYXR1cmU7CiAgICAgICAgdW5zaWduZWQgaW50IG1z
Z190eXBlOwoKfSBSUENfQVVUSF9WRVJJRklFUjsKCgoKCnR5cGVkZWYgc3RydWN0IHJwY19hdXRo
X250bG1zc3BfbmVnX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBuZWdfZmxnczsKCiAgICAg
ICAgU1RSSERSIGhkcl9teW5hbWU7CiAgICAgICAgU1RSSERSIGhkcl9kb21haW47CgogICAgICAg
IGZzdHJpbmcgbXluYW1lOwogICAgICAgIGZzdHJpbmcgZG9tYWluOwoKfSBSUENfQVVUSF9OVExN
U1NQX05FRzsKCgoKCnR5cGVkZWYgc3RydWN0IHJwY19hdXRoX250bG1zc3BfY2hhbF9pbmZvCnsK
ICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bl8xOwogICAgICAgIHVuc2lnbmVkIGludCB1bmtu
b3duXzI7CiAgICAgICAgdW5zaWduZWQgaW50IG5lZ19mbGFnczsKCiAgICAgICAgdW5zaWduZWQg
Y2hhciBjaGFsbGVuZ2VbOF07CiAgICAgICAgdW5zaWduZWQgY2hhciByZXNlcnZlZCBbOF07Cgp9
IFJQQ19BVVRIX05UTE1TU1BfQ0hBTDsKCgoKdHlwZWRlZiBzdHJ1Y3QgcnBjX2F1dGhfbnRsbXNz
cF9yZXNwX2luZm8KewogICAgICAgIFNUUkhEUiBoZHJfbG1fcmVzcDsKICAgICAgICBTVFJIRFIg
aGRyX250X3Jlc3A7CiAgICAgICAgU1RSSERSIGhkcl9kb21haW47CiAgICAgICAgU1RSSERSIGhk
cl91c3I7CiAgICAgICAgU1RSSERSIGhkcl93a3M7CiAgICAgICAgU1RSSERSIGhkcl9zZXNzX2tl
eTsKICAgICAgICB1bnNpZ25lZCBpbnQgbmVnX2ZsYWdzOwoKICAgICAgICBmc3RyaW5nIHNlc3Nf
a2V5OwogICAgICAgIGZzdHJpbmcgd2tzOwogICAgICAgIGZzdHJpbmcgdXNlcjsKICAgICAgICBm
c3RyaW5nIGRvbWFpbjsKICAgICAgICBmc3RyaW5nIG50X3Jlc3A7CiAgICAgICAgZnN0cmluZyBs
bV9yZXNwOwoKfSBSUENfQVVUSF9OVExNU1NQX1JFU1A7CgoKCnR5cGVkZWYgc3RydWN0IHJwY19h
dXRoX250bG1zc3BfY2hrX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCB2ZXI7CiAgICAgICAg
dW5zaWduZWQgaW50IHJlc2VydmVkOwogICAgICAgIHVuc2lnbmVkIGludCBjcmMzMjsKICAgICAg
ICB1bnNpZ25lZCBpbnQgc2VxX251bTsKCn0gUlBDX0FVVEhfTlRMTVNTUF9DSEs7CiMgMjkgImlu
Y2x1ZGUvbnRkb21haW4uaCIgMgoKCiMgMSAiaW5jbHVkZS9ycGNfbWlzYy5oIiAxCiMgMzIgImlu
Y2x1ZGUvbnRkb21haW4uaCIgMgojIDQyICJpbmNsdWRlL250ZG9tYWluLmgiCnR5cGVkZWYgc3Ry
dWN0IF9wcnNfc3RydWN0CnsKICAgICAgICBCT09MIGlvOwoKCgoKICAgICAgICBCT09MIGJpZ2Vu
ZGlhbl9kYXRhOwogICAgICAgIHVuc2lnbmVkIGNoYXIgYWxpZ247CiAgICAgICAgQk9PTCBpc19k
eW5hbWljOwogICAgICAgIHVuc2lnbmVkIGludCBkYXRhX29mZnNldDsKICAgICAgICB1bnNpZ25l
ZCBpbnQgYnVmZmVyX3NpemU7CiAgICAgICAgdW5zaWduZWQgaW50IGdyb3dfc2l6ZTsKICAgICAg
ICBjaGFyICpkYXRhX3A7CiAgICAgICAgVEFMTE9DX0NUWCAqbWVtX2N0eDsKfSBwcnNfc3RydWN0
OwojIDc0ICJpbmNsdWRlL250ZG9tYWluLmgiCnR5cGVkZWYgc3RydWN0IF9vdXRwdXRfZGF0YSB7
CgoKCiAgICAgICAgcHJzX3N0cnVjdCByZGF0YTsKCgogICAgICAgIHVuc2lnbmVkIGludCBkYXRh
X3NlbnRfbGVuZ3RoOwoKCgoKCiAgICAgICAgdW5zaWduZWQgY2hhciBjdXJyZW50X3BkdVsweDE2
MzBdOwoKCiAgICAgICAgdW5zaWduZWQgaW50IGN1cnJlbnRfcGR1X2xlbjsKCgogICAgICAgIHVu
c2lnbmVkIGludCBjdXJyZW50X3BkdV9zZW50Owp9IG91dHB1dF9kYXRhOwoKdHlwZWRlZiBzdHJ1
Y3QgX2lucHV0X2RhdGEgewoKCgoKCgogICAgdW5zaWduZWQgY2hhciBjdXJyZW50X2luX3BkdVsw
eDE2MzBdOwoKCgoKCgogICAgdW5zaWduZWQgaW50IHBkdV9uZWVkZWRfbGVuOwoKCgoKCgogICAg
dW5zaWduZWQgaW50IHBkdV9yZWNlaXZlZF9sZW47CgoKCgoKCiAgICBwcnNfc3RydWN0IGRhdGE7
Cn0gaW5wdXRfZGF0YTsKCgoKCgpzdHJ1Y3QgcG9saWN5CnsKICAgIHN0cnVjdCBwb2xpY3kgKm5l
eHQsICpwcmV2OwoKICAgIFBPTElDWV9ITkQgcG9sX2huZDsKCiAgICB2b2lkICpkYXRhX3B0cjsK
ICAgIHZvaWQgKCpmcmVlX2ZuKSh2b2lkICopOwoKfTsKCnN0cnVjdCBoYW5kbGVfbGlzdCB7CiAg
ICAgICAgc3RydWN0IHBvbGljeSAqUG9saWN5OwogICAgICAgIHNpemVfdCBjb3VudDsKICAgICAg
ICBzaXplX3QgcGlwZV9yZWZfY291bnQ7Cn07CgoKc3RydWN0IGRjaW5mbwp7CiAgICAgICAgRE9N
X0NIQUwgY2xudF9jaGFsOwogICAgICAgIERPTV9DSEFMIHNydl9jaGFsOwogICAgICAgIERPTV9D
UkVEIGNsbnRfY3JlZDsKICAgICAgICBET01fQ1JFRCBzcnZfY3JlZDsKCiAgICAgICAgdW5zaWdu
ZWQgY2hhciBzZXNzX2tleVs4XTsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1kNHB3WzE2XTsKCiAg
ICAgICAgZnN0cmluZyBtYWNoX2FjY3Q7Cn07Cgp0eXBlZGVmIHN0cnVjdCBwaXBlc19zdHJ1Y3QK
ewogICAgICAgIHN0cnVjdCBwaXBlc19zdHJ1Y3QgKm5leHQsICpwcmV2OwogICAgICAgIGludCBw
bnVtOwogICAgICAgIGNvbm5lY3Rpb25fc3RydWN0ICpjb25uOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IHZ1aWQ7CiAgICAgICAgQk9PTCBvcGVuOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRldmlj
ZV9zdGF0ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBwcmlvcml0eTsKICAgICAgICBmc3RyaW5n
IG5hbWU7CiAgICAgICAgZnN0cmluZyBwaXBlX3Nydl9uYW1lOwoKICAgICAgICBSUENfSERSIGhk
cjsKICAgICAgICBSUENfSERSX1JFUSBoZHJfcmVxOwoKICAgICAgICB1bnNpZ25lZCBpbnQgbnRs
bXNzcF9jaGFsX2ZsYWdzOwogICAgICAgIEJPT0wgbnRsbXNzcF9hdXRoX3JlcXVlc3RlZDsKICAg
ICAgICBCT09MIG50bG1zc3BfYXV0aF92YWxpZGF0ZWQ7CiAgICAgICAgdW5zaWduZWQgY2hhciBj
aGFsbGVuZ2VbOF07CiAgICAgICAgdW5zaWduZWQgY2hhciBudGxtc3NwX2hhc2hbMjU4XTsKICAg
ICAgICB1bnNpZ25lZCBpbnQgbnRsbXNzcF9zZXFfbnVtOwogICAgICAgIHN0cnVjdCBkY2luZm8g
ZGM7CgoKCgogICAgICAgIGZzdHJpbmcgdXNlcl9uYW1lOwogICAgICAgIGZzdHJpbmcgZG9tYWlu
OwogICAgICAgIGZzdHJpbmcgd2tzOwoKCgoKCiAgICAgICAgZnN0cmluZyBwaXBlX3VzZXJfbmFt
ZTsKICAgICAgICBzdHJ1Y3QgY3VycmVudF91c2VyIHBpcGVfdXNlcjsKCgoKCgogICAgICAgIEJP
T0wgcGlwZV9ib3VuZDsKCgoKCgogICAgICAgIEJPT0wgZmF1bHRfc3RhdGU7CgoKCgoKICAgICAg
ICBCT09MIGVuZGlhbjsKCgoKCgogICAgICAgIGlucHV0X2RhdGEgaW5fZGF0YTsKCgoKCgogICAg
ICAgIG91dHB1dF9kYXRhIG91dF9kYXRhOwoKCgogICAgICAgIGludCBtYXhfdHJhbnNfcmVwbHk7
CgoKICAgICAgICBUQUxMT0NfQ1RYICptZW1fY3R4OwoKCiAgICAgICAgc3RydWN0IGhhbmRsZV9s
aXN0ICpwaXBlX2hhbmRsZXM7Cgp9IHBpcGVzX3N0cnVjdDsKCnN0cnVjdCBhcGlfc3RydWN0CnsK
ICBjaGFyICpuYW1lOwogIHVuc2lnbmVkIGNoYXIgb3BudW07CiAgQk9PTCAoKmZuKSAocGlwZXNf
c3RydWN0ICopOwp9OwoKdHlwZWRlZiBzdHJ1Y3QKewogICAgICAgIHVuc2lnbmVkIGludCByaWQ7
CiAgICAgICAgY2hhciAqbmFtZTsKCn0gcmlkX25hbWU7CgpzdHJ1Y3QgYWNjdF9pbmZvCnsKICAg
IGZzdHJpbmcgYWNjdF9uYW1lOwogICAgZnN0cmluZyBhY2N0X2Rlc2M7CiAgICB1bnNpZ25lZCBp
bnQgcmlkOwp9OwojIDI3NSAiaW5jbHVkZS9udGRvbWFpbi5oIgojIDEgImluY2x1ZGUvcnBjX3Nl
Y2Rlcy5oIiAxCiMgODEgImluY2x1ZGUvcnBjX3NlY2Rlcy5oIgp0eXBlZGVmIHN0cnVjdCBzZWN1
cml0eV9pbmZvX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBtYXNrOwoKfSBTRUNfQUNDRVNT
OwoKCgoKCnR5cGVkZWYgc3RydWN0IHNlY3VyaXR5X2FjZV9pbmZvCnsKICAgICAgICB1bnNpZ25l
ZCBjaGFyIHR5cGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBmbGFnczsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBzaXplOwoKICAgICAgICBTRUNfQUNDRVNTIGluZm87CiAgICAgICAgRE9NX1NJRCB0
cnVzdGVlOwoKfSBTRUNfQUNFOwojIDExNCAiaW5jbHVkZS9ycGNfc2VjZGVzLmgiCnR5cGVkZWYg
c3RydWN0IHNlY3VyaXR5X2FjbF9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBzaG9ydCByZXZpc2lv
bjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzaXplOwogICAgICAgIHVuc2lnbmVkIGludCBudW1f
YWNlczsKCiAgICAgICAgU0VDX0FDRSAqYWNlOwoKfSBTRUNfQUNMOwojIDEzMiAiaW5jbHVkZS9y
cGNfc2VjZGVzLmgiCnR5cGVkZWYgc3RydWN0IHNlY3VyaXR5X2Rlc2NyaXB0b3JfaW5mbwp7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgcmV2aXNpb247CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdHlw
ZTsKCiAgICAgICAgdW5zaWduZWQgaW50IG9mZl9vd25lcl9zaWQ7CiAgICAgICAgdW5zaWduZWQg
aW50IG9mZl9ncnBfc2lkIDsKICAgICAgICB1bnNpZ25lZCBpbnQgb2ZmX3NhY2wgOwogICAgICAg
IHVuc2lnbmVkIGludCBvZmZfZGFjbCA7CgogICAgICAgIFNFQ19BQ0wgKmRhY2w7CiAgICAgICAg
U0VDX0FDTCAqc2FjbDsKICAgICAgICBET01fU0lEICpvd25lcl9zaWQ7CiAgICAgICAgRE9NX1NJ
RCAqZ3JwX3NpZDsKCn0gU0VDX0RFU0M7CgoKCgoKdHlwZWRlZiBzdHJ1Y3Qgc2VjX2Rlc2NfYnVm
X2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBtYXhfbGVuOwogICAgICAgIHVuc2lnbmVkIGlu
dCBwdHI7CiAgICAgICAgdW5zaWduZWQgaW50IGxlbjsKCiAgICAgICAgU0VDX0RFU0MgKnNlYzsK
Cn0gU0VDX0RFU0NfQlVGOwoKCgoKCgp0eXBlZGVmIHN0cnVjdCBnZW5lcmljX21hcHBpbmcgewog
ICAgICAgIHVuc2lnbmVkIGludCBnZW5lcmljX3JlYWQ7CiAgICAgICAgdW5zaWduZWQgaW50IGdl
bmVyaWNfd3JpdGU7CiAgICAgICAgdW5zaWduZWQgaW50IGdlbmVyaWNfZXhlY3V0ZTsKICAgICAg
ICB1bnNpZ25lZCBpbnQgZ2VuZXJpY19hbGw7Cn0gR0VORVJJQ19NQVBQSU5HOwojIDI3NiAiaW5j
bHVkZS9udGRvbWFpbi5oIiAyCgoKIyAxICJpbmNsdWRlL3JwY19sc2EuaCIgMQojIDI3ICJpbmNs
dWRlL3JwY19sc2EuaCIKIyAxICJpbmNsdWRlL3JwY19taXNjLmgiIDEKIyAyOCAiaW5jbHVkZS9y
cGNfbHNhLmgiIDIKCmVudW0gU0lEX05BTUVfVVNFCnsKICAgICAgICBTSURfTkFNRV9VU0VfTk9O
RSA9IDAsCiAgICAgICAgU0lEX05BTUVfVVNFUiA9IDEsCiAgICAgICAgU0lEX05BTUVfRE9NX0dS
UCA9IDIsCiAgICAgICAgU0lEX05BTUVfRE9NQUlOID0gMywKICAgICAgICBTSURfTkFNRV9BTElB
UyA9IDQsCiAgICAgICAgU0lEX05BTUVfV0tOX0dSUCA9IDUsCiAgICAgICAgU0lEX05BTUVfREVM
RVRFRCA9IDYsCiAgICAgICAgU0lEX05BTUVfSU5WQUxJRCA9IDcsCiAgICAgICAgU0lEX05BTUVf
VU5LTk9XTiA9IDgKfTsKIyA5OCAiaW5jbHVkZS9ycGNfbHNhLmgiCnR5cGVkZWYgc3RydWN0IGRv
bV9xdWVyeV9pbmZvCnsKICB1bnNpZ25lZCBzaG9ydCB1bmlfZG9tX21heF9sZW47CiAgdW5zaWdu
ZWQgc2hvcnQgdW5pX2RvbV9zdHJfbGVuOwogIHVuc2lnbmVkIGludCBidWZmZXJfZG9tX25hbWU7
CiAgdW5zaWduZWQgaW50IGJ1ZmZlcl9kb21fc2lkOwogIFVOSVNUUjIgdW5pX2RvbWFpbl9uYW1l
OwogIERPTV9TSUQyIGRvbV9zaWQ7Cgp9IERPTV9RVUVSWTsKCgp0eXBlZGVmIERPTV9RVUVSWSBE
T01fUVVFUllfMzsKdHlwZWRlZiBET01fUVVFUlkgRE9NX1FVRVJZXzU7CgoKdHlwZWRlZiBzdHJ1
Y3QgZG9tX3F1ZXJ5XzIKewogICAgICAgIHVuc2lnbmVkIGludCBhdWRpdGluZ19lbmFibGVkOwog
ICAgICAgIHVuc2lnbmVkIGludCBjb3VudDE7CiAgICAgICAgdW5zaWduZWQgaW50IGNvdW50MjsK
ICAgICAgICB1bnNpZ25lZCBpbnQgKmF1ZGl0c2V0dGluZ3M7Cn0gRE9NX1FVRVJZXzI7CgoKdHlw
ZWRlZiBzdHJ1Y3QgZG9tX3F1ZXJ5XzYKewogICAgICAgIHVuc2lnbmVkIHNob3J0IHNlcnZlcl9y
b2xlOwp9IERPTV9RVUVSWV82OwoKdHlwZWRlZiBzdHJ1Y3Qgc2VxX3Fvc19pbmZvCnsKICAgICAg
ICB1bnNpZ25lZCBpbnQgbGVuOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNlY19pbXBfbGV2ZWw7
CiAgICAgICAgdW5zaWduZWQgY2hhciBzZWNfY3R4dF9tb2RlOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgZWZmZWN0aXZlX29ubHk7Cgp9IExTQV9TRUNfUU9TOwoKdHlwZWRlZiBzdHJ1Y3Qgb2JqX2F0
dHJfaW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IGxlbjsKICAgICAgICB1bnNpZ25lZCBpbnQg
cHRyX3Jvb3RfZGlyOwogICAgICAgIHVuc2lnbmVkIGludCBwdHJfb2JqX25hbWU7CiAgICAgICAg
dW5zaWduZWQgaW50IGF0dHJpYnV0ZXM7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9zZWNfZGVz
YzsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3NlY19xb3M7CiAgICAgICAgTFNBX1NFQ19RT1Mg
KnNlY19xb3M7Cgp9IExTQV9PQkpfQVRUUjsKCgp0eXBlZGVmIHN0cnVjdCBsc2FfcV9vcGVuX3Bv
bF9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IHN5c3RlbV9uYW1lOwogICAgICAgIExTQV9PQkpfQVRUUiBhdHRyIDsKCiAgICAgICAgdW5zaWdu
ZWQgaW50IGRlc19hY2Nlc3M7Cgp9IExTQV9RX09QRU5fUE9MOwoKCnR5cGVkZWYgc3RydWN0IGxz
YV9yX29wZW5fcG9sX2luZm8KewogICAgICAgIFBPTElDWV9ITkQgcG9sOwogICAgICAgIE5UU1RB
VFVTIHN0YXR1czsKCn0gTFNBX1JfT1BFTl9QT0w7CgoKdHlwZWRlZiBzdHJ1Y3QgbHNhX3Ffb3Bl
bl9wb2wyX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBwdHI7CiAgICAgICAgVU5JU1RSMiB1
bmlfc2VydmVyX25hbWU7CiAgICAgICAgTFNBX09CSl9BVFRSIGF0dHIgOwoKICAgICAgICB1bnNp
Z25lZCBpbnQgZGVzX2FjY2VzczsKCn0gTFNBX1FfT1BFTl9QT0wyOwoKCnR5cGVkZWYgc3RydWN0
IGxzYV9yX29wZW5fcG9sMl9pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIHBvbDsKICAgICAgICBO
VFNUQVRVUyBzdGF0dXM7Cgp9IExTQV9SX09QRU5fUE9MMjsKIyAyMzUgImluY2x1ZGUvcnBjX2xz
YS5oIgp0eXBlZGVmIHN0cnVjdCBsc2FfcXVlcnlfc2VjX29ial9pbmZvCnsKICAgICAgICBQT0xJ
Q1lfSE5EIHBvbDsKICAgICAgICB1bnNpZ25lZCBpbnQgc2VjX2luZm87Cgp9IExTQV9RX1FVRVJZ
X1NFQ19PQko7CgoKdHlwZWRlZiBzdHJ1Y3Qgcl9sc2FfcXVlcnlfc2VjX29ial9pbmZvCnsKICAg
ICAgICB1bnNpZ25lZCBpbnQgcHRyOwogICAgICAgIFNFQ19ERVNDX0JVRiAqYnVmOwoKICAgICAg
ICBOVFNUQVRVUyBzdGF0dXM7Cgp9IExTQV9SX1FVRVJZX1NFQ19PQko7CgoKdHlwZWRlZiBzdHJ1
Y3QgbHNhX3F1ZXJ5X2luZm8KewogICAgICAgIFBPTElDWV9ITkQgcG9sOwogICAgdW5zaWduZWQg
c2hvcnQgaW5mb19jbGFzczsKCn0gTFNBX1FfUVVFUllfSU5GTzsKCgp0eXBlZGVmIHVuaW9uIGxz
YV9pbmZvX3VuaW9uCnsKICAgICAgICBET01fUVVFUllfMiBpZDI7CiAgICAgICAgRE9NX1FVRVJZ
XzMgaWQzOwogICAgICAgIERPTV9RVUVSWV81IGlkNTsKICAgICAgICBET01fUVVFUllfNiBpZDY7
Cn0gTFNBX0lORk9fVU5JT047CgoKdHlwZWRlZiBzdHJ1Y3QgbHNhX3JfcXVlcnlfaW5mbwp7CiAg
ICB1bnNpZ25lZCBpbnQgdW5kb2NfYnVmZmVyOwogICAgdW5zaWduZWQgc2hvcnQgaW5mb19jbGFz
czsKCiAgICAgICAgTFNBX0lORk9fVU5JT04gZG9tOwoKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7
Cgp9IExTQV9SX1FVRVJZX0lORk87CgoKdHlwZWRlZiBzdHJ1Y3QgbHNhX2VudW1fdHJ1c3RfZG9t
X2luZm8KewogICAgICAgIFBPTElDWV9ITkQgcG9sOwogICAgdW5zaWduZWQgaW50IGVudW1fY29u
dGV4dDsKICAgIHVuc2lnbmVkIGludCBwcmVmZXJyZWRfbGVuOwoKfSBMU0FfUV9FTlVNX1RSVVNU
X0RPTTsKCgp0eXBlZGVmIHN0cnVjdCBsc2Ffcl9lbnVtX3RydXN0X2RvbV9pbmZvCnsKICAgICAg
ICB1bnNpZ25lZCBpbnQgZW51bV9jb250ZXh0OwogICAgICAgIHVuc2lnbmVkIGludCBudW1fZG9t
YWluczsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX2VudW1fZG9tYWluczsKCgogICAgICAgIHVu
c2lnbmVkIGludCBudW1fZG9tYWluczI7CiAgICAgICAgVU5JSERSMiAqaGRyX2RvbWFpbl9uYW1l
OwogICAgICAgIFVOSVNUUjIgKnVuaV9kb21haW5fbmFtZTsKICAgICAgICBET01fU0lEMiAqZG9t
YWluX3NpZDsKCiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBMU0FfUl9FTlVNX1RSVVNUX0RP
TTsKCgp0eXBlZGVmIHN0cnVjdCBsc2FfcV9jbG9zZV9pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5E
IHBvbDsKCn0gTFNBX1FfQ0xPU0U7CgoKdHlwZWRlZiBzdHJ1Y3QgbHNhX3JfY2xvc2VfaW5mbwp7
CiAgICAgICAgUE9MSUNZX0hORCBwb2w7CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gTFNB
X1JfQ0xPU0U7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgZG9tX3RydXN0X2hkcgp7CiAgICAgICAgVU5J
SERSIGhkcl9kb21fbmFtZTsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX2RvbV9zaWQ7Cgp9IERP
TV9UUlVTVF9IRFI7CgoKdHlwZWRlZiBzdHJ1Y3QgZG9tX3RydXN0X2luZm8KewogICAgICAgIFVO
SVNUUjIgdW5pX2RvbV9uYW1lOwogICAgICAgIERPTV9TSUQyIHJlZl9kb20gOwoKfSBET01fVFJV
U1RfSU5GTzsKCgp0eXBlZGVmIHN0cnVjdCBkb21fcmVmX2luZm8KewogICAgdW5zaWduZWQgaW50
IG51bV9yZWZfZG9tc18xOwogICAgdW5zaWduZWQgaW50IHB0cl9yZWZfZG9tOwogICAgdW5zaWdu
ZWQgaW50IG1heF9lbnRyaWVzOwogICAgdW5zaWduZWQgaW50IG51bV9yZWZfZG9tc18yOwoKICAg
IERPTV9UUlVTVF9IRFIgaGRyX3JlZl9kb21bMzJdOwogICAgRE9NX1RSVVNUX0lORk8gcmVmX2Rv
bSBbMzJdOwoKfSBET01fUl9SRUY7CgoKCgp0eXBlZGVmIHN0cnVjdCBsc2FfdHJhbnNfbmFtZV9p
bmZvCnsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzaWRfbmFtZV91c2U7CiAgICAgICAgVU5JSERS
IGhkcl9uYW1lOwogICAgICAgIHVuc2lnbmVkIGludCBkb21haW5faWR4OwoKfSBMU0FfVFJBTlNf
TkFNRTsKCgoKCnR5cGVkZWYgc3RydWN0IGxzYV90cmFuc19uYW1lX2VudW1faW5mbwp7CiAgICAg
ICAgdW5zaWduZWQgaW50IG51bV9lbnRyaWVzOwogICAgICAgIHVuc2lnbmVkIGludCBwdHJfdHJh
bnNfbmFtZXM7CiAgICAgICAgdW5zaWduZWQgaW50IG51bV9lbnRyaWVzMjsKCiAgICAgICAgTFNB
X1RSQU5TX05BTUUgKm5hbWU7CiAgICAgICAgVU5JU1RSMiAqdW5pX25hbWU7Cgp9IExTQV9UUkFO
U19OQU1FX0VOVU07CgoKdHlwZWRlZiBzdHJ1Y3QgbHNhX3NpZF9lbnVtX2luZm8KewogICAgICAg
IHVuc2lnbmVkIGludCBudW1fZW50cmllczsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3NpZF9l
bnVtOwogICAgICAgIHVuc2lnbmVkIGludCBudW1fZW50cmllczI7CgogICAgICAgIHVuc2lnbmVk
IGludCAqcHRyX3NpZDsKICAgICAgICBET01fU0lEMiAqc2lkOwoKfSBMU0FfU0lEX0VOVU07CgoK
dHlwZWRlZiBzdHJ1Y3QgbHNhX3FfbG9va3VwX3NpZHMKewogICAgICAgIFBPTElDWV9ITkQgcG9s
OwogICAgICAgIExTQV9TSURfRU5VTSBzaWRzOwogICAgICAgIExTQV9UUkFOU19OQU1FX0VOVU0g
bmFtZXM7CiAgICAgICAgTE9PS1VQX0xFVkVMIGxldmVsOwogICAgICAgIHVuc2lnbmVkIGludCBt
YXBwZWRfY291bnQ7Cgp9IExTQV9RX0xPT0tVUF9TSURTOwoKCnR5cGVkZWYgc3RydWN0IGxzYV9y
X2xvb2t1cF9zaWRzCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX2RvbV9yZWY7CiAgICAgICAg
RE9NX1JfUkVGICpkb21fcmVmOwoKICAgICAgICBMU0FfVFJBTlNfTkFNRV9FTlVNICpuYW1lczsK
ICAgICAgICB1bnNpZ25lZCBpbnQgbWFwcGVkX2NvdW50OwoKICAgICAgICBOVFNUQVRVUyBzdGF0
dXM7Cgp9IExTQV9SX0xPT0tVUF9TSURTOwoKCnR5cGVkZWYgc3RydWN0IGxzYV9xX2xvb2t1cF9u
YW1lcwp7CiAgICAgICAgUE9MSUNZX0hORCBwb2w7CiAgICAgICAgdW5zaWduZWQgaW50IG51bV9l
bnRyaWVzOwogICAgICAgIHVuc2lnbmVkIGludCBudW1fZW50cmllczI7CiAgICAgICAgVU5JSERS
ICpoZHJfbmFtZTsKICAgICAgICBVTklTVFIyICp1bmlfbmFtZTsKCiAgICAgICAgdW5zaWduZWQg
aW50IG51bV90cmFuc19lbnRyaWVzOwogICAgICAgIHVuc2lnbmVkIGludCBwdHJfdHJhbnNfc2lk
czsKICAgICAgICB1bnNpZ25lZCBpbnQgbG9va3VwX2xldmVsOwogICAgICAgIHVuc2lnbmVkIGlu
dCBtYXBwZWRfY291bnQ7Cgp9IExTQV9RX0xPT0tVUF9OQU1FUzsKCgp0eXBlZGVmIHN0cnVjdCBs
c2Ffcl9sb29rdXBfbmFtZXMKewogICAgICAgIHVuc2lnbmVkIGludCBwdHJfZG9tX3JlZjsKICAg
ICAgICBET01fUl9SRUYgKmRvbV9yZWY7CgogICAgICAgIHVuc2lnbmVkIGludCBudW1fZW50cmll
czsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX2VudHJpZXM7CiAgICAgICAgdW5zaWduZWQgaW50
IG51bV9lbnRyaWVzMjsKICAgICAgICBET01fUklEMiAqZG9tX3JpZDsKCiAgICAgICAgdW5zaWdu
ZWQgaW50IG1hcHBlZF9jb3VudDsKCiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwp9IExTQV9SX0xP
T0tVUF9OQU1FUzsKCgoKCnR5cGVkZWYgc3RydWN0IGxzYV9xX29wZW5fc2VjcmV0CnsKICAgICAg
ICB1bnNpZ25lZCBpbnQgZHVtbXk7Cn0gTFNBX1FfT1BFTl9TRUNSRVQ7CgoKCnR5cGVkZWYgc3Ry
dWN0IGxzYV9yX29wZW5fc2VjcmV0CnsKICAgICAgICB1bnNpZ25lZCBpbnQgZHVtbXkxOwogICAg
ICAgIHVuc2lnbmVkIGludCBkdW1teTI7CiAgICAgICAgdW5zaWduZWQgaW50IGR1bW15MzsKICAg
ICAgICB1bnNpZ25lZCBpbnQgZHVtbXk0OwogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKfSBMU0Ff
Ul9PUEVOX1NFQ1JFVDsKCnR5cGVkZWYgc3RydWN0IGxzYV9lbnVtX3ByaXZfZW50cnkKewogICAg
ICAgIFVOSUhEUiBoZHJfbmFtZTsKICAgICAgICB1bnNpZ25lZCBpbnQgbHVpZF9sb3c7CiAgICAg
ICAgdW5zaWduZWQgaW50IGx1aWRfaGlnaDsKICAgICAgICBVTklTVFIyIG5hbWU7Cgp9IExTQV9Q
UklWX0VOVFJZOwoKCnR5cGVkZWYgc3RydWN0IGxzYV9xX2VudW1fcHJpdnMKewogICAgICAgIFBP
TElDWV9ITkQgcG9sOwogICAgICAgIHVuc2lnbmVkIGludCBlbnVtX2NvbnRleHQ7CiAgICAgICAg
dW5zaWduZWQgaW50IHByZWZfbWF4X2xlbmd0aDsKfSBMU0FfUV9FTlVNX1BSSVZTOwoKdHlwZWRl
ZiBzdHJ1Y3QgbHNhX3JfZW51bV9wcml2cwp7CiAgICAgICAgdW5zaWduZWQgaW50IGVudW1fY29u
dGV4dDsKICAgICAgICB1bnNpZ25lZCBpbnQgY291bnQ7CiAgICAgICAgdW5zaWduZWQgaW50IHB0
cjsKICAgICAgICB1bnNpZ25lZCBpbnQgY291bnQxOwoKICAgICAgICBMU0FfUFJJVl9FTlRSWSAq
cHJpdnM7CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKfSBMU0FfUl9FTlVNX1BSSVZTOwoKCnR5
cGVkZWYgc3RydWN0IGxzYV9xX3ByaXZfZ2V0X2Rpc3BuYW1lCnsKICAgICAgICBQT0xJQ1lfSE5E
IHBvbDsKICAgICAgICBVTklIRFIgaGRyX25hbWU7CiAgICAgICAgVU5JU1RSMiBuYW1lOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IGxhbmdfaWQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbGFuZ19p
ZF9zeXM7Cn0gTFNBX1FfUFJJVl9HRVRfRElTUE5BTUU7Cgp0eXBlZGVmIHN0cnVjdCBsc2Ffcl9w
cml2X2dldF9kaXNwbmFtZQp7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9pbmZvOwogICAgICAg
IFVOSUhEUiBoZHJfZGVzYzsKICAgICAgICBVTklTVFIyIGRlc2M7CgogICAgICAgIHVuc2lnbmVk
IHNob3J0IGxhbmdfaWQ7CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKfSBMU0FfUl9QUklWX0dF
VF9ESVNQTkFNRTsKCgp0eXBlZGVmIHN0cnVjdCBsc2FfcV9lbnVtX2FjY291bnRzCnsKICAgICAg
ICBQT0xJQ1lfSE5EIHBvbDsKICAgICAgICB1bnNpZ25lZCBpbnQgZW51bV9jb250ZXh0OwogICAg
ICAgIHVuc2lnbmVkIGludCBwcmVmX21heF9sZW5ndGg7Cn0gTFNBX1FfRU5VTV9BQ0NPVU5UUzsK
Cgp0eXBlZGVmIHN0cnVjdCBsc2Ffcl9lbnVtX2FjY291bnRzCnsKICAgICAgICB1bnNpZ25lZCBp
bnQgZW51bV9jb250ZXh0OwogICAgICAgIExTQV9TSURfRU5VTSBzaWRzOwogICAgICAgIE5UU1RB
VFVTIHN0YXR1czsKfSBMU0FfUl9FTlVNX0FDQ09VTlRTOwoKCgp0eXBlZGVmIHN0cnVjdCBsc2Ff
cV91bmtfZ2V0X2Nvbm51c2VyCnsKICB1bnNpZ25lZCBpbnQgcHRyX3Nydm5hbWU7CiAgVU5JU1RS
MiB1bmkyX3Nydm5hbWU7CiAgdW5zaWduZWQgaW50IHVuazE7CiAgdW5zaWduZWQgaW50IHVuazI7
CiAgdW5zaWduZWQgaW50IHVuazM7Cn0gTFNBX1FfVU5LX0dFVF9DT05OVVNFUjsKCgp0eXBlZGVm
IHN0cnVjdCBsc2Ffcl91bmtfZ2V0X2Nvbm51c2VyCnsKICB1bnNpZ25lZCBpbnQgcHRyX3VzZXJf
bmFtZTsKICBVTklIRFIgaGRyX3VzZXJfbmFtZTsKICBVTklTVFIyIHVuaTJfdXNlcl9uYW1lOwoK
ICB1bnNpZ25lZCBpbnQgdW5rMTsKCiAgdW5zaWduZWQgaW50IHB0cl9kb21fbmFtZTsKICBVTklI
RFIgaGRyX2RvbV9uYW1lOwogIFVOSVNUUjIgdW5pMl9kb21fbmFtZTsKCiAgTlRTVEFUVVMgc3Rh
dHVzOwp9IExTQV9SX1VOS19HRVRfQ09OTlVTRVI7CgoKdHlwZWRlZiBzdHJ1Y3QgbHNhX3Ffb3Bl
bmFjY291bnQKewogICAgICAgIFBPTElDWV9ITkQgcG9sOwogICAgICAgIERPTV9TSUQyIHNpZDsK
ICAgICAgICB1bnNpZ25lZCBpbnQgYWNjZXNzOwp9IExTQV9RX09QRU5BQ0NPVU5UOwoKdHlwZWRl
ZiBzdHJ1Y3QgbHNhX3Jfb3BlbmFjY291bnQKewogICAgICAgIFBPTElDWV9ITkQgcG9sOwogICAg
ICAgIE5UU1RBVFVTIHN0YXR1czsKfSBMU0FfUl9PUEVOQUNDT1VOVDsKCnR5cGVkZWYgc3RydWN0
IGxzYV9xX2VudW1wcml2c2FjY291bnQKewogICAgICAgIFBPTElDWV9ITkQgcG9sOwp9IExTQV9R
X0VOVU1QUklWU0FDQ09VTlQ7CgoKdHlwZWRlZiBzdHJ1Y3QgTFVJRAp7CiAgICAgICAgdW5zaWdu
ZWQgaW50IGxvdzsKICAgICAgICB1bnNpZ25lZCBpbnQgaGlnaDsKfSBMVUlEOwoKdHlwZWRlZiBz
dHJ1Y3QgTFVJRF9BVFRSCnsKICAgICAgICBMVUlEIGx1aWQ7CiAgICAgICAgdW5zaWduZWQgaW50
IGF0dHI7Cn0gTFVJRF9BVFRSIDsKCnR5cGVkZWYgc3RydWN0IHByaXZpbGVnZV9zZXQKewogICAg
ICAgIHVuc2lnbmVkIGludCBjb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgY29udHJvbDsKICAg
ICAgICBMVUlEX0FUVFIgKnNldDsKfSBQUklWSUxFR0VfU0VUOwoKdHlwZWRlZiBzdHJ1Y3QgbHNh
X3JfZW51bXByaXZzYWNjb3VudAp7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cjsKICAgICAgICB1
bnNpZ25lZCBpbnQgY291bnQ7CiAgICAgICAgUFJJVklMRUdFX1NFVCBzZXQ7CiAgICAgICAgTlRT
VEFUVVMgc3RhdHVzOwp9IExTQV9SX0VOVU1QUklWU0FDQ09VTlQ7Cgp0eXBlZGVmIHN0cnVjdCBs
c2FfcV9nZXRzeXN0ZW1hY2NvdW50CnsKICAgICAgICBQT0xJQ1lfSE5EIHBvbDsKfSBMU0FfUV9H
RVRTWVNURU1BQ0NPVU5UOwoKdHlwZWRlZiBzdHJ1Y3QgbHNhX3JfZ2V0c3lzdGVtYWNjb3VudAp7
CiAgICAgICAgdW5zaWduZWQgaW50IGFjY2VzczsKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cn0g
TFNBX1JfR0VUU1lTVEVNQUNDT1VOVDsKCgp0eXBlZGVmIHN0cnVjdCBsc2FfcV9zZXRzeXN0ZW1h
Y2NvdW50CnsKICAgICAgICBQT0xJQ1lfSE5EIHBvbDsKICAgICAgICB1bnNpZ25lZCBpbnQgYWNj
ZXNzOwp9IExTQV9RX1NFVFNZU1RFTUFDQ09VTlQ7Cgp0eXBlZGVmIHN0cnVjdCBsc2Ffcl9zZXRz
eXN0ZW1hY2NvdW50CnsKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cn0gTFNBX1JfU0VUU1lTVEVN
QUNDT1VOVDsKCgp0eXBlZGVmIHN0cnVjdCBsc2FfcV9sb29rdXBwcml2dmFsdWUKewogICAgICAg
IFBPTElDWV9ITkQgcG9sOwogICAgICAgIFVOSUhEUiBoZHJfcmlnaHQ7CiAgICAgICAgVU5JU1RS
MiB1bmkyX3JpZ2h0Owp9IExTQV9RX0xPT0tVUFBSSVZWQUxVRTsKCnR5cGVkZWYgc3RydWN0IGxz
YV9yX2xvb2t1cHByaXZ2YWx1ZQp7CiAgICAgICAgTFVJRCBsdWlkOwogICAgICAgIE5UU1RBVFVT
IHN0YXR1czsKfSBMU0FfUl9MT09LVVBQUklWVkFMVUU7CgoKdHlwZWRlZiBzdHJ1Y3QgbHNhX3Ff
YWRkcHJpdnMKewogICAgICAgIFBPTElDWV9ITkQgcG9sOwogICAgICAgIHVuc2lnbmVkIGludCBj
b3VudDsKICAgICAgICBQUklWSUxFR0VfU0VUIHNldDsKfSBMU0FfUV9BRERQUklWUzsKCnR5cGVk
ZWYgc3RydWN0IGxzYV9yX2FkZHByaXZzCnsKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cn0gTFNB
X1JfQUREUFJJVlM7CgoKdHlwZWRlZiBzdHJ1Y3QgbHNhX3FfcmVtb3ZlcHJpdnMKewogICAgICAg
IFBPTElDWV9ITkQgcG9sOwogICAgICAgIHVuc2lnbmVkIGludCBhbGxyaWdodHM7CiAgICAgICAg
dW5zaWduZWQgaW50IHB0cjsKICAgICAgICB1bnNpZ25lZCBpbnQgY291bnQ7CiAgICAgICAgUFJJ
VklMRUdFX1NFVCBzZXQ7Cn0gTFNBX1FfUkVNT1ZFUFJJVlM7Cgp0eXBlZGVmIHN0cnVjdCBsc2Ff
cl9yZW1vdmVwcml2cwp7CiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwp9IExTQV9SX1JFTU9WRVBS
SVZTOwojIDI3OSAiaW5jbHVkZS9udGRvbWFpbi5oIiAyCiMgMSAiaW5jbHVkZS9ycGNfbmV0bG9n
b24uaCIgMQojIDEyNSAiaW5jbHVkZS9ycGNfbmV0bG9nb24uaCIKdHlwZWRlZiBzdHJ1Y3QgbmV0
X3VzZXJfaW5mb18zCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3VzZXJfaW5mbzsKCiAgICAg
ICAgTlRUSU1FIGxvZ29uX3RpbWU7CiAgICAgICAgTlRUSU1FIGxvZ29mZl90aW1lOwogICAgICAg
IE5UVElNRSBraWNrb2ZmX3RpbWU7CiAgICAgICAgTlRUSU1FIHBhc3NfbGFzdF9zZXRfdGltZTsK
ICAgICAgICBOVFRJTUUgcGFzc19jYW5fY2hhbmdlX3RpbWU7CiAgICAgICAgTlRUSU1FIHBhc3Nf
bXVzdF9jaGFuZ2VfdGltZTsKCiAgICAgICAgVU5JSERSIGhkcl91c2VyX25hbWU7CiAgICAgICAg
VU5JSERSIGhkcl9mdWxsX25hbWU7CiAgICAgICAgVU5JSERSIGhkcl9sb2dvbl9zY3JpcHQ7CiAg
ICAgICAgVU5JSERSIGhkcl9wcm9maWxlX3BhdGg7CiAgICAgICAgVU5JSERSIGhkcl9ob21lX2Rp
cjsKICAgICAgICBVTklIRFIgaGRyX2Rpcl9kcml2ZTsKCiAgICAgICAgdW5zaWduZWQgc2hvcnQg
bG9nb25fY291bnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgYmFkX3B3X2NvdW50OwoKICAgICAg
ICB1bnNpZ25lZCBpbnQgdXNlcl9yaWQ7CiAgICAgICAgdW5zaWduZWQgaW50IGdyb3VwX3JpZDsK
CiAgICAgICAgdW5zaWduZWQgaW50IG51bV9ncm91cHM7CiAgICAgICAgdW5zaWduZWQgaW50IGJ1
ZmZlcl9ncm91cHM7CiAgICAgICAgdW5zaWduZWQgaW50IHVzZXJfZmxnczsKCiAgICAgICAgdW5z
aWduZWQgY2hhciB1c2VyX3Nlc3Nfa2V5WzE2XTsKCiAgICAgICAgVU5JSERSIGhkcl9sb2dvbl9z
cnY7CiAgICAgICAgVU5JSERSIGhkcl9sb2dvbl9kb207CgogICAgICAgIHVuc2lnbmVkIGludCBi
dWZmZXJfZG9tX2lkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcGFkZGluZ1s0MF07CgogICAgICAg
IHVuc2lnbmVkIGludCBudW1fb3RoZXJfc2lkczsKICAgICAgICB1bnNpZ25lZCBpbnQgYnVmZmVy
X290aGVyX3NpZHM7CgogICAgICAgIFVOSVNUUjIgdW5pX3VzZXJfbmFtZTsKICAgICAgICBVTklT
VFIyIHVuaV9mdWxsX25hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfbG9nb25fc2NyaXB0OwogICAg
ICAgIFVOSVNUUjIgdW5pX3Byb2ZpbGVfcGF0aDsKICAgICAgICBVTklTVFIyIHVuaV9ob21lX2Rp
cjsKICAgICAgICBVTklTVFIyIHVuaV9kaXJfZHJpdmU7CgogICAgICAgIHVuc2lnbmVkIGludCBu
dW1fZ3JvdXBzMjsKICAgICAgICBET01fR0lEICpnaWRzOwoKICAgICAgICBVTklTVFIyIHVuaV9s
b2dvbl9zcnY7CiAgICAgICAgVU5JU1RSMiB1bmlfbG9nb25fZG9tOwoKICAgICAgICBET01fU0lE
MiBkb21fc2lkOwoKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX290aGVyX2dyb3VwczsKICAgICAg
ICBET01fR0lEICpvdGhlcl9naWRzOwogICAgICAgIERPTV9TSUQyICpvdGhlcl9zaWRzOwoKfSBO
RVRfVVNFUl9JTkZPXzM7CgoKCnR5cGVkZWYgc3RydWN0IG5ldGxvZ29uXzFfaW5mbwp7CiAgICAg
ICAgdW5zaWduZWQgaW50IGZsYWdzOwogICAgICAgIHVuc2lnbmVkIGludCBwZGNfc3RhdHVzOwoK
fSBORVRMT0dPTl9JTkZPXzE7CgoKdHlwZWRlZiBzdHJ1Y3QgbmV0bG9nb25fMl9pbmZvCnsKICAg
ICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgaW50IHBkY19zdGF0dXM7
CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl90cnVzdGVkX2RjX25hbWU7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHRjX3N0YXR1czsKICAgICAgICBVTklTVFIyIHVuaV90cnVzdGVkX2RjX25hbWU7Cgp9
IE5FVExPR09OX0lORk9fMjsKCgp0eXBlZGVmIHN0cnVjdCBuZXRsb2dvbl8zX2luZm8KewogICAg
ICAgIHVuc2lnbmVkIGludCBmbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQgbG9nb25fYXR0ZW1w
dHM7CiAgICAgICAgdW5zaWduZWQgaW50IHJlc2VydmVkXzE7CiAgICAgICAgdW5zaWduZWQgaW50
IHJlc2VydmVkXzI7CiAgICAgICAgdW5zaWduZWQgaW50IHJlc2VydmVkXzM7CiAgICAgICAgdW5z
aWduZWQgaW50IHJlc2VydmVkXzQ7CiAgICAgICAgdW5zaWduZWQgaW50IHJlc2VydmVkXzU7Cgp9
IE5FVExPR09OX0lORk9fMzsKIyAyMjkgImluY2x1ZGUvcnBjX25ldGxvZ29uLmgiCnR5cGVkZWYg
c3RydWN0IG5ldF9xX2xvZ29uX2N0cmxfaW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cjsK
ICAgICAgICBVTklTVFIyIHVuaV9zZXJ2ZXJfbmFtZTsKICAgICAgICB1bnNpZ25lZCBpbnQgZnVu
Y3Rpb25fY29kZTsKICAgICAgICB1bnNpZ25lZCBpbnQgcXVlcnlfbGV2ZWw7Cn0gTkVUX1FfTE9H
T05fQ1RSTDsKCgoKdHlwZWRlZiBzdHJ1Y3QgbmV0X3JfbG9nb25fY3RybF9pbmZvCnsKICAgICAg
ICB1bnNpZ25lZCBpbnQgc3dpdGNoX3ZhbHVlOwogICAgICAgIHVuc2lnbmVkIGludCBwdHI7Cgog
ICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIE5FVExPR09OX0lORk9fMSBpbmZvMTsKICAg
ICAgICB9IGxvZ29uOwoKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cn0gTkVUX1JfTE9HT05fQ1RS
TDsKIyAyNjAgImluY2x1ZGUvcnBjX25ldGxvZ29uLmgiCnR5cGVkZWYgc3RydWN0IG5ldF9xX2xv
Z29uX2N0cmwyX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBwdHI7CiAgICAgICAgVU5JU1RS
MiB1bmlfc2VydmVyX25hbWU7CgogICAgICAgIHVuc2lnbmVkIGludCBmdW5jdGlvbl9jb2RlOwog
ICAgICAgIHVuc2lnbmVkIGludCBxdWVyeV9sZXZlbDsKICAgICAgICB1bnNpZ25lZCBpbnQgc3dp
dGNoX3ZhbHVlOwoKfSBORVRfUV9MT0dPTl9DVFJMMjsKIyAyNzggImluY2x1ZGUvcnBjX25ldGxv
Z29uLmgiCnR5cGVkZWYgc3RydWN0IG5ldF9yX2xvZ29uX2N0cmwyX2luZm8KewogICAgICAgIHVu
c2lnbmVkIGludCBzd2l0Y2hfdmFsdWU7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cjsKCiAgICAg
ICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAgICBORVRMT0dPTl9JTkZPXzEgaW5mbzE7
CiAgICAgICAgICAgICAgICBORVRMT0dPTl9JTkZPXzIgaW5mbzI7CiAgICAgICAgICAgICAgICBO
RVRMT0dPTl9JTkZPXzMgaW5mbzM7CgogICAgICAgIH0gbG9nb247CgogICAgICAgIE5UU1RBVFVT
IHN0YXR1czsKCn0gTkVUX1JfTE9HT05fQ1RSTDI7CgoKdHlwZWRlZiBzdHJ1Y3QgbmV0X3FfdHJ1
c3RfZG9tX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBwdHI7CiAgICAgICAgVU5JU1RSMiB1
bmlfc2VydmVyX25hbWU7Cgp9IE5FVF9RX1RSVVNUX0RPTV9MSVNUOwoKCgoKdHlwZWRlZiBzdHJ1
Y3QgbmV0X3JfdHJ1c3RfZG9tX2luZm8KewogICAgICAgIFVOSVNUUjIgdW5pX3RydXN0X2RvbV9u
YW1lWzFdOwoKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IE5FVF9SX1RSVVNUX0RPTV9MSVNU
OwoKCgp0eXBlZGVmIHN0cnVjdCBuZWdfZmxhZ3NfaW5mbwp7CiAgICB1bnNpZ25lZCBpbnQgbmVn
X2ZsYWdzOwoKfSBORUdfRkxBR1M7CgoKCnR5cGVkZWYgc3RydWN0IG5ldF9xX3JlcV9jaGFsX2lu
Zm8KewogICAgdW5zaWduZWQgaW50IHVuZG9jX2J1ZmZlcjsKICAgIFVOSVNUUjIgdW5pX2xvZ29u
X3NydjsKICAgIFVOSVNUUjIgdW5pX2xvZ29uX2NsbnQ7CiAgICBET01fQ0hBTCBjbG50X2NoYWw7
Cgp9IE5FVF9RX1JFUV9DSEFMOwoKCgp0eXBlZGVmIHN0cnVjdCBuZXRfcl9yZXFfY2hhbF9pbmZv
CnsKICAgICAgICBET01fQ0hBTCBzcnZfY2hhbDsKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cn0g
TkVUX1JfUkVRX0NIQUw7CgoKdHlwZWRlZiBzdHJ1Y3QgbmV0X3FfYXV0aF9pbmZvCnsKICAgICAg
ICBET01fTE9HX0lORk8gY2xudF9pZDsKICAgICAgICBET01fQ0hBTCBjbG50X2NoYWw7Cn0gTkVU
X1FfQVVUSDsKCgp0eXBlZGVmIHN0cnVjdCBuZXRfcl9hdXRoX2luZm8KewogICAgICAgIERPTV9D
SEFMIHNydl9jaGFsOwogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKfSBORVRfUl9BVVRIOwoKCnR5
cGVkZWYgc3RydWN0IG5ldF9xX2F1dGgyX2luZm8KewogICAgRE9NX0xPR19JTkZPIGNsbnRfaWQ7
CiAgICBET01fQ0hBTCBjbG50X2NoYWw7CgogICAgTkVHX0ZMQUdTIGNsbnRfZmxnczsKCn0gTkVU
X1FfQVVUSF8yOwoKCgp0eXBlZGVmIHN0cnVjdCBuZXRfcl9hdXRoMl9pbmZvCnsKICAgICAgICBE
T01fQ0hBTCBzcnZfY2hhbDsKICAgICAgICBORUdfRkxBR1Mgc3J2X2ZsZ3M7CiAgICAgICAgTlRT
VEFUVVMgc3RhdHVzOwp9IE5FVF9SX0FVVEhfMjsKCgoKdHlwZWRlZiBzdHJ1Y3QgbmV0X3Ffc3J2
X3B3c2V0X2luZm8KewogICAgRE9NX0NMTlRfSU5GTyBjbG50X2lkOwogICAgdW5zaWduZWQgY2hh
ciBwd2RbMTZdOwoKfSBORVRfUV9TUlZfUFdTRVQ7CgoKdHlwZWRlZiBzdHJ1Y3QgbmV0X3Jfc3J2
X3B3c2V0X2luZm8KewogICAgRE9NX0NSRUQgc3J2X2NyZWQ7CgogIE5UU1RBVFVTIHN0YXR1czsK
Cn0gTkVUX1JfU1JWX1BXU0VUOwoKCnR5cGVkZWYgc3RydWN0IG5ldF9uZXR3b3JrX2luZm9fMgp7
CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9pZF9pbmZvMjsKICAgICAgICBVTklIRFIgaGRyX2Rv
bWFpbl9uYW1lOwogICAgICAgIHVuc2lnbmVkIGludCBwYXJhbV9jdHJsOwogICAgICAgIERPTV9M
T0dPTl9JRCBsb2dvbl9pZDsKICAgICAgICBVTklIRFIgaGRyX3VzZXJfbmFtZTsKICAgICAgICBV
TklIRFIgaGRyX3drc3RhX25hbWU7CiAgICAgICAgdW5zaWduZWQgY2hhciBsbV9jaGFsWzhdOwog
ICAgICAgIFNUUkhEUiBoZHJfbnRfY2hhbF9yZXNwOwogICAgICAgIFNUUkhEUiBoZHJfbG1fY2hh
bF9yZXNwOwoKICAgICAgICBVTklTVFIyIHVuaV9kb21haW5fbmFtZTsKICAgICAgICBVTklTVFIy
IHVuaV91c2VyX25hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfd2tzdGFfbmFtZTsKICAgICAgICBT
VFJJTkcyIG50X2NoYWxfcmVzcDsKICAgICAgICBTVFJJTkcyIGxtX2NoYWxfcmVzcDsKCn0gTkVU
X0lEX0lORk9fMjsKCgp0eXBlZGVmIHN0cnVjdCBpZF9pbmZvXzEKewogICAgICAgIHVuc2lnbmVk
IGludCBwdHJfaWRfaW5mbzE7CiAgICAgICAgVU5JSERSIGhkcl9kb21haW5fbmFtZTsKICAgICAg
ICB1bnNpZ25lZCBpbnQgcGFyYW1fY3RybDsKICAgICAgICBET01fTE9HT05fSUQgbG9nb25faWQ7
CiAgICAgICAgVU5JSERSIGhkcl91c2VyX25hbWU7CiAgICAgICAgVU5JSERSIGhkcl93a3N0YV9u
YW1lOwogICAgICAgIE9XRl9JTkZPIGxtX293ZjsKICAgICAgICBPV0ZfSU5GTyBudF9vd2Y7CiAg
ICAgICAgVU5JU1RSMiB1bmlfZG9tYWluX25hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfdXNlcl9u
YW1lOwogICAgICAgIFVOSVNUUjIgdW5pX3drc3RhX25hbWU7Cgp9IE5FVF9JRF9JTkZPXzE7CgoK
CgoKdHlwZWRlZiBzdHJ1Y3QgbmV0X2lkX2luZm9fY3RyX2luZm8KewogIHVuc2lnbmVkIHNob3J0
IHN3aXRjaF92YWx1ZTsKCiAgdW5pb24KICB7CiAgICBORVRfSURfSU5GT18xIGlkMTsKICAgIE5F
VF9JRF9JTkZPXzIgaWQyOwoKICB9IGF1dGg7Cgp9IE5FVF9JRF9JTkZPX0NUUjsKCgp0eXBlZGVm
IHN0cnVjdCBzYW1faW5mbwp7CiAgRE9NX0NMTlRfSU5GTzIgY2xpZW50OwogIHVuc2lnbmVkIGlu
dCBwdHJfcnRuX2NyZWQ7CiAgRE9NX0NSRUQgcnRuX2NyZWQ7CiAgdW5zaWduZWQgc2hvcnQgbG9n
b25fbGV2ZWw7CiAgTkVUX0lEX0lORk9fQ1RSICpjdHI7Cgp9IERPTV9TQU1fSU5GTzsKCgp0eXBl
ZGVmIHN0cnVjdCBuZXRfcV9zYW1fbG9nb25faW5mbwp7CiAgICBET01fU0FNX0lORk8gc2FtX2lk
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHZhbGlkYXRpb25fbGV2ZWw7Cgp9IE5FVF9RX1NBTV9M
T0dPTjsKCgp0eXBlZGVmIHN0cnVjdCBuZXRfcl9zYW1fbG9nb25faW5mbwp7CiAgICB1bnNpZ25l
ZCBpbnQgYnVmZmVyX2NyZWRzOwogICAgRE9NX0NSRUQgc3J2X2NyZWRzOwoKICAgICAgICB1bnNp
Z25lZCBzaG9ydCBzd2l0Y2hfdmFsdWU7CiAgICBORVRfVVNFUl9JTkZPXzMgKnVzZXI7CgogICAg
dW5zaWduZWQgaW50IGF1dGhfcmVzcDsKCiAgTlRTVEFUVVMgc3RhdHVzOwoKfSBORVRfUl9TQU1f
TE9HT047CgoKCnR5cGVkZWYgc3RydWN0IG5ldF9xX3NhbV9sb2dvZmZfaW5mbwp7CiAgICBET01f
U0FNX0lORk8gc2FtX2lkOwoKfSBORVRfUV9TQU1fTE9HT0ZGOwoKCnR5cGVkZWYgc3RydWN0IG5l
dF9yX3NhbV9sb2dvZmZfaW5mbwp7CiAgICB1bnNpZ25lZCBpbnQgYnVmZmVyX2NyZWRzOwogICAg
RE9NX0NSRUQgc3J2X2NyZWRzOwoKICBOVFNUQVRVUyBzdGF0dXM7Cgp9IE5FVF9SX1NBTV9MT0dP
RkY7CgoKdHlwZWRlZiBzdHJ1Y3QgbmV0X3Ffc2FtX3N5bmNfaW5mbwp7CiAgICAgICAgVU5JU1RS
MiB1bmlfc3J2X25hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfY2xpX25hbWU7CiAgICAgICAgRE9N
X0NSRUQgY2xpX2NyZWRzOwogICAgICAgIERPTV9DUkVEIHJldF9jcmVkczsKCiAgICAgICAgdW5z
aWduZWQgaW50IGRhdGFiYXNlX2lkOwogICAgICAgIHVuc2lnbmVkIGludCByZXN0YXJ0X3N0YXRl
OwogICAgICAgIHVuc2lnbmVkIGludCBzeW5jX2NvbnRleHQ7CgogICAgICAgIHVuc2lnbmVkIGlu
dCBtYXhfc2l6ZTsKCn0gTkVUX1FfU0FNX1NZTkM7CgoKdHlwZWRlZiBzdHJ1Y3Qgc2FtX2RlbHRh
X2hkcl9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB0eXBlOwogICAgICAgIHVuc2lnbmVk
IHNob3J0IHR5cGUyOwogICAgICAgIHVuc2lnbmVkIGludCB0YXJnZXRfcmlkOwoKICAgICAgICB1
bnNpZ25lZCBpbnQgdHlwZTM7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9kZWx0YTsKCn0gU0FN
X0RFTFRBX0hEUjsKCgp0eXBlZGVmIHN0cnVjdCBzYW1fZG9tYWluX2luZm9faW5mbwp7CiAgICAg
ICAgVU5JSERSIGhkcl9kb21fbmFtZTsKICAgICAgICBVTklIRFIgaGRyX29lbV9pbmZvOwoKICAg
ICAgICBVSU5UNjRfUyBmb3JjZV9sb2dvZmY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbWluX3B3
ZF9sZW47CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcHdkX2hpc3RvcnlfbGVuOwogICAgICAgIFVJ
TlQ2NF9TIG1heF9wd2RfYWdlOwogICAgICAgIFVJTlQ2NF9TIG1pbl9wd2RfYWdlOwogICAgICAg
IFVJTlQ2NF9TIGRvbV9tb2RfY291bnQ7CiAgICAgICAgTlRUSU1FIGNyZWF0aW9uX3RpbWU7Cgog
ICAgICAgIEJVRkhEUjIgaGRyX3NlY19kZXNjOwogICAgICAgIFVOSUhEUiBoZHJfdW5rbm93bjsK
ICAgICAgICB1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzQwXTsKCiAgICAgICAgVU5JU1RSMiB1bmlf
ZG9tX25hbWU7CiAgICAgICAgVU5JU1RSMiBidWZfb2VtX2luZm87CgogICAgICAgIEJVRkZFUjQg
YnVmX3NlY19kZXNjOwogICAgICAgIFVOSVNUUjIgYnVmX3Vua25vd247Cgp9IFNBTV9ET01BSU5f
SU5GTzsKCgp0eXBlZGVmIHN0cnVjdCBzYW1fZ3JvdXBfaW5mb19pbmZvCnsKICAgICAgICBVTklI
RFIgaGRyX2dycF9uYW1lOwogICAgICAgIERPTV9HSUQgZ2lkOwogICAgICAgIFVOSUhEUiBoZHJf
Z3JwX2Rlc2M7CiAgICAgICAgQlVGSERSMiBoZHJfc2VjX2Rlc2M7CiAgICAgICAgdW5zaWduZWQg
Y2hhciByZXNlcnZlZFs0OF07CgogICAgICAgIFVOSVNUUjIgdW5pX2dycF9uYW1lOwogICAgICAg
IFVOSVNUUjIgdW5pX2dycF9kZXNjOwogICAgICAgIEJVRkZFUjQgYnVmX3NlY19kZXNjOwoKfSBT
QU1fR1JPVVBfSU5GTzsKCgp0eXBlZGVmIHN0cnVjdCBzYW1fcGFzc3dkX2luZm8KewoKCiAgICAg
ICAgdW5zaWduZWQgaW50IHVua18wOwoKICAgICAgICBVTklIRFIgaGRyX2xtX3B3ZDsKICAgICAg
ICB1bnNpZ25lZCBjaGFyIGJ1Zl9sbV9wd2RbMTZdOwoKICAgICAgICBVTklIRFIgaGRyX250X3B3
ZDsKICAgICAgICB1bnNpZ25lZCBjaGFyIGJ1Zl9udF9wd2RbMTZdOwoKICAgICAgICBVTklIRFIg
aGRyX2VtcHR5X2xtOwogICAgICAgIFVOSUhEUiBoZHJfZW1wdHlfbnQ7Cgp9IFNBTV9QV0Q7CgoK
dHlwZWRlZiBzdHJ1Y3Qgc2FtX2FjY291bnRfaW5mb19pbmZvCnsKICAgICAgICBVTklIRFIgaGRy
X2FjY3RfbmFtZTsKICAgICAgICBVTklIRFIgaGRyX2Z1bGxfbmFtZTsKCiAgICAgICAgdW5zaWdu
ZWQgaW50IHVzZXJfcmlkOwogICAgICAgIHVuc2lnbmVkIGludCBncm91cF9yaWQ7CgogICAgICAg
IFVOSUhEUiBoZHJfaG9tZV9kaXI7CiAgICAgICAgVU5JSERSIGhkcl9kaXJfZHJpdmU7CiAgICAg
ICAgVU5JSERSIGhkcl9sb2dvbl9zY3JpcHQ7CiAgICAgICAgVU5JSERSIGhkcl9hY2N0X2Rlc2M7
CiAgICAgICAgVU5JSERSIGhkcl93b3Jrc3RhdGlvbnM7CgogICAgICAgIE5UVElNRSBsb2dvbl90
aW1lOwogICAgICAgIE5UVElNRSBsb2dvZmZfdGltZTsKCiAgICAgICAgdW5zaWduZWQgaW50IGxv
Z29uX2RpdnM7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9sb2dvbl9ocnM7CgogICAgICAgIHVu
c2lnbmVkIHNob3J0IGJhZF9wd2RfY291bnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbG9nb25f
Y291bnQ7CiAgICAgICAgTlRUSU1FIHB3ZF9sYXN0X3NldF90aW1lOwogICAgICAgIE5UVElNRSBh
Y2N0X2V4cGlyeV90aW1lOwoKICAgICAgICB1bnNpZ25lZCBpbnQgYWNiX2luZm87CiAgICAgICAg
dW5zaWduZWQgY2hhciBudF9wd2RbMTZdOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbG1fcHdkWzE2
XTsKICAgICAgICB1bnNpZ25lZCBjaGFyIG50X3B3ZF9wcmVzZW50OwogICAgICAgIHVuc2lnbmVk
IGNoYXIgbG1fcHdkX3ByZXNlbnQ7CiAgICAgICAgdW5zaWduZWQgY2hhciBwd2RfZXhwaXJlZDsK
CiAgICAgICAgVU5JSERSIGhkcl9jb21tZW50OwogICAgICAgIFVOSUhEUiBoZHJfcGFyYW1ldGVy
czsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjb3VudHJ5OwogICAgICAgIHVuc2lnbmVkIHNob3J0
IGNvZGVwYWdlOwoKICAgICAgICBCVUZIRFIyIGhkcl9zZWNfZGVzYzsKCiAgICAgICAgVU5JSERS
IGhkcl9wcm9maWxlOwogICAgICAgIFVOSUhEUiBoZHJfcmVzZXJ2ZWRbM107CiAgICAgICAgdW5z
aWduZWQgaW50IGR3X3Jlc2VydmVkWzRdOwoKCiAgICAgICAgVU5JU1RSMiB1bmlfYWNjdF9uYW1l
OwogICAgICAgIFVOSVNUUjIgdW5pX2Z1bGxfbmFtZTsKICAgICAgICBVTklTVFIyIHVuaV9ob21l
X2RpcjsKICAgICAgICBVTklTVFIyIHVuaV9kaXJfZHJpdmU7CiAgICAgICAgVU5JU1RSMiB1bmlf
bG9nb25fc2NyaXB0OwogICAgICAgIFVOSVNUUjIgdW5pX2FjY3RfZGVzYzsKICAgICAgICBVTklT
VFIyIHVuaV93b3Jrc3RhdGlvbnM7CgogICAgICAgIHVuc2lnbmVkIGludCB1bmtub3duMTsKICAg
ICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjI7CgogICAgICAgIEJVRkZFUjQgYnVmX2xvZ29uX2hy
czsKICAgICAgICBVTklTVFIyIHVuaV9jb21tZW50OwogICAgICAgIFVOSVNUUjIgdW5pX3BhcmFt
ZXRlcnM7CiAgICAgICAgU0FNX1BXRCBwYXNzOwogICAgICAgIEJVRkZFUjQgYnVmX3NlY19kZXNj
OwogICAgICAgIFVOSVNUUjIgdW5pX3Byb2ZpbGU7Cgp9IFNBTV9BQ0NPVU5UX0lORk87CgoKdHlw
ZWRlZiBzdHJ1Y3Qgc2FtX2dyb3VwX21lbV9pbmZvX2luZm8KewogICAgICAgIHVuc2lnbmVkIGlu
dCBwdHJfcmlkczsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX2F0dHJpYnM7CiAgICAgICAgdW5z
aWduZWQgaW50IG51bV9tZW1iZXJzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgdW5rbm93blsxNl07
CgogICAgICAgIHVuc2lnbmVkIGludCBudW1fbWVtYmVyczI7CiAgICAgICAgdW5zaWduZWQgaW50
ICpyaWRzOwoKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX21lbWJlcnMzOwogICAgICAgIHVuc2ln
bmVkIGludCAqYXR0cmliczsKCn0gU0FNX0dST1VQX01FTV9JTkZPOwoKCnR5cGVkZWYgc3RydWN0
IHNhbV9hbGlhc19pbmZvX2luZm8KewogICAgICAgIFVOSUhEUiBoZHJfYWxzX25hbWU7CiAgICAg
ICAgdW5zaWduZWQgaW50IGFsc19yaWQ7CiAgICAgICAgQlVGSERSMiBoZHJfc2VjX2Rlc2M7CiAg
ICAgICAgVU5JSERSIGhkcl9hbHNfZGVzYzsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJlc2VydmVk
WzQwXTsKCiAgICAgICAgVU5JU1RSMiB1bmlfYWxzX25hbWU7CiAgICAgICAgQlVGRkVSNCBidWZf
c2VjX2Rlc2M7CiAgICAgICAgVU5JU1RSMiB1bmlfYWxzX2Rlc2M7Cgp9IFNBTV9BTElBU19JTkZP
OwoKCnR5cGVkZWYgc3RydWN0IHNhbV9hbGlhc19tZW1faW5mb19pbmZvCnsKICAgICAgICB1bnNp
Z25lZCBpbnQgbnVtX21lbWJlcnM7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9tZW1iZXJzOwog
ICAgICAgIHVuc2lnbmVkIGNoYXIgdW5rbm93blsxNl07CgogICAgICAgIHVuc2lnbmVkIGludCBu
dW1fc2lkczsKICAgICAgICB1bnNpZ25lZCBpbnQgKnB0cl9zaWRzOwogICAgICAgIERPTV9TSUQy
ICpzaWRzOwoKfSBTQU1fQUxJQVNfTUVNX0lORk87CgoKCnR5cGVkZWYgc3RydWN0CnsKICAgICAg
ICB1bnNpZ25lZCBpbnQgdW5rbm93bjE7CiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd24yOwog
ICAgICAgIHVuc2lnbmVkIGludCB1bmtub3duMzsKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93
bjQ7CiAgICAgICAgdW5zaWduZWQgaW50IGNvdW50MTsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRy
MTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjb3VudDI7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
Y291bnQzOwogICAgICAgIHVuc2lnbmVkIGludCBwdHIyOwogICAgICAgIHVuc2lnbmVkIGludCBw
dHIzOwoKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjRiOwogICAgICAgIHVuc2lnbmVkIGlu
dCB1bmtub3duNTsKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjY7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHVua25vd243OwogICAgICAgIHVuc2lnbmVkIGludCB1bmtub3duODsKICAgICAgICB1
bnNpZ25lZCBpbnQgdW5rbm93bjk7CiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd24xMDsKICAg
ICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjExOwogICAgICAgIHVuc2lnbmVkIGludCB1bmtub3du
MTI7CgogICAgICAgIHVuc2lnbmVkIGludCB1bmtub3duMTM7CiAgICAgICAgdW5zaWduZWQgaW50
IHVua25vd24xNDsKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjE1OwogICAgICAgIHVuc2ln
bmVkIGludCB1bmtub3duMTY7CiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd24xNzsKCiAgICAg
ICAgdW5zaWduZWQgaW50IGNvdW50NDsKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjE4OwoK
ICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjE5OwoKICAgICAgICB1bnNpZ25lZCBpbnQgdW5r
bm93bjIwOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyNDsKCiAgICAgICAgVU5JU1RSMiBkb21h
aW5fbmFtZTsKICAgICAgICBET01fU0lEMiBkb21haW5fc2lkOwoKfSBTQU1fREVMVEFfRE9NOwoK
CnR5cGVkZWYgc3RydWN0CnsKICAgICAgICB1bnNpZ25lZCBpbnQgYnVmX3NpemU7CiAgICAgICAg
U0VDX0RFU0MgKnNlY19kZXNjOwogICAgICAgIERPTV9TSUQyIHNpZDsKICAgICAgICBVTklIRFIg
aGRyX2RvbWFpbjsKCiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd24wOwogICAgICAgIHVuc2ln
bmVkIGludCB1bmtub3duMTsKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjI7CgogICAgICAg
IHVuc2lnbmVkIGludCBidWZfc2l6ZTI7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cjsKCiAgICAg
ICAgdW5zaWduZWQgaW50IHVua25vd24zOwogICAgICAgIFVOSVNUUjIgZG9tYWluOwoKfSBTQU1f
REVMVEFfVU5LMEU7CgoKdHlwZWRlZiBzdHJ1Y3QKewogICAgICAgIHVuc2lnbmVkIGludCBidWZf
c2l6ZTsKICAgICAgICBTRUNfREVTQyAqc2VjX2Rlc2M7CiAgICAgICAgRE9NX1NJRDIgc2lkOwoK
ICAgICAgICB1bnNpZ25lZCBpbnQgcHJpdl9jb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVz
ZXJ2ZWQxOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyMTsKICAgICAgICB1bnNpZ25lZCBpbnQg
cHRyMjsKCiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd24xOwogICAgICAgIHVuc2lnbmVkIGlu
dCB1bmtub3duMjsKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjM7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHVua25vd240OwogICAgICAgIHVuc2lnbmVkIGludCB1bmtub3duNTsKICAgICAgICB1
bnNpZ25lZCBpbnQgdW5rbm93bjY7CiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd243OwogICAg
ICAgIHVuc2lnbmVkIGludCB1bmtub3duODsKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjk7
CgogICAgICAgIHVuc2lnbmVkIGludCBidWZfc2l6ZTI7CiAgICAgICAgdW5zaWduZWQgaW50IHB0
cjM7CiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd24xMDsKCiAgICAgICAgdW5zaWduZWQgaW50
IGF0dHJpYnV0ZV9jb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgKmF0dHJpYnV0ZXM7CgogICAg
ICAgIHVuc2lnbmVkIGludCBwcml2bGlzdF9jb3VudDsKICAgICAgICBVTklIRFIgKmhkcl9wcml2
c2xpc3Q7CiAgICAgICAgVU5JU1RSMiAqdW5pX3ByaXZzbGlzdDsKCgp9IFNBTV9ERUxUQV9QUklW
UzsKCgp0eXBlZGVmIHN0cnVjdAp7CiAgICAgICAgdW5zaWduZWQgaW50IGJ1Zl9zaXplOwogICAg
ICAgIFNFQ19ERVNDICpzZWNfZGVzYzsKICAgICAgICBVTklTVFIyIHNlY3JldDsKCiAgICAgICAg
dW5zaWduZWQgaW50IGNvdW50MTsKICAgICAgICB1bnNpZ25lZCBpbnQgY291bnQyOwogICAgICAg
IHVuc2lnbmVkIGludCBwdHI7CiAgICAgICAgTlRUSU1FIHRpbWUxOwogICAgICAgIHVuc2lnbmVk
IGludCBjb3VudDM7CiAgICAgICAgdW5zaWduZWQgaW50IGNvdW50NDsKICAgICAgICB1bnNpZ25l
ZCBpbnQgcHRyMjsKICAgICAgICBOVFRJTUUgdGltZTI7CiAgICAgICAgdW5zaWduZWQgaW50IHVu
a25vdzE7CgogICAgICAgIHVuc2lnbmVkIGludCBidWZfc2l6ZTI7CiAgICAgICAgdW5zaWduZWQg
aW50IHB0cjM7CiAgICAgICAgdW5zaWduZWQgaW50IHVua25vdzI7CgogICAgICAgIHVuc2lnbmVk
IGludCBjaGFsX2xlbjsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWQxOwogICAgICAgIHVu
c2lnbmVkIGludCBjaGFsX2xlbjI7CiAgICAgICAgdW5zaWduZWQgY2hhciBjaGFsWzE2XTsKCiAg
ICAgICAgdW5zaWduZWQgaW50IGtleV9sZW47CiAgICAgICAgdW5zaWduZWQgaW50IHJlc2VydmVk
MjsKICAgICAgICB1bnNpZ25lZCBpbnQga2V5X2xlbjI7CiAgICAgICAgdW5zaWduZWQgY2hhciBr
ZXlbOF07CgogICAgICAgIHVuc2lnbmVkIGludCBidWZfc2l6ZTM7CiAgICAgICAgU0VDX0RFU0Mg
KnNlY19kZXNjMjsKCn0gU0FNX0RFTFRBX1VOSzEyOwoKCnR5cGVkZWYgc3RydWN0CnsKICAgICAg
ICB1bnNpZ25lZCBpbnQgc2VxbnVtOwogICAgICAgIHVuc2lnbmVkIGludCBkb21fbW9kX2NvdW50
X3B0cjsKICAgICAgICBVSU5UNjRfUyBkb21fbW9kX2NvdW50Owp9IFNBTV9ERUxUQV9TVEFNUDsK
CnR5cGVkZWYgdW5pb24gc2FtX2RlbHRhX2N0cl9pbmZvCnsKICAgICAgICBTQU1fRE9NQUlOX0lO
Rk8gZG9tYWluX2luZm8gOwogICAgICAgIFNBTV9HUk9VUF9JTkZPIGdyb3VwX2luZm8gOwogICAg
ICAgIFNBTV9BQ0NPVU5UX0lORk8gYWNjb3VudF9pbmZvOwogICAgICAgIFNBTV9HUk9VUF9NRU1f
SU5GTyBncnBfbWVtX2luZm87CiAgICAgICAgU0FNX0FMSUFTX0lORk8gYWxpYXNfaW5mbyA7CiAg
ICAgICAgU0FNX0FMSUFTX01FTV9JTkZPIGFsc19tZW1faW5mbzsKICAgICAgICBTQU1fREVMVEFf
RE9NIGRvbV9pbmZvOwogICAgICAgIFNBTV9ERUxUQV9QUklWUyBwcml2c19pbmZvOwogICAgICAg
IFNBTV9ERUxUQV9TVEFNUCBzdGFtcDsKICAgICAgICBTQU1fREVMVEFfVU5LMEUgdW5rMGVfaW5m
bzsKICAgICAgICBTQU1fREVMVEFfVU5LMTIgdW5rMTJfaW5mbzsKfSBTQU1fREVMVEFfQ1RSOwoK
CnR5cGVkZWYgc3RydWN0IG5ldF9yX3NhbV9zeW5jX2luZm8KewogICAgICAgIERPTV9DUkVEIHNy
dl9jcmVkczsKCiAgICAgICAgdW5zaWduZWQgaW50IHN5bmNfY29udGV4dDsKCiAgICAgICAgdW5z
aWduZWQgaW50IHB0cl9kZWx0YXM7CiAgICAgICAgdW5zaWduZWQgaW50IG51bV9kZWx0YXM7CiAg
ICAgICAgdW5zaWduZWQgaW50IHB0cl9kZWx0YXMyOwogICAgICAgIHVuc2lnbmVkIGludCBudW1f
ZGVsdGFzMjsKCiAgICAgICAgU0FNX0RFTFRBX0hEUiAqaGRyX2RlbHRhczsKICAgICAgICBTQU1f
REVMVEFfQ1RSICpkZWx0YXM7CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKfSBORVRfUl9TQU1f
U1lOQzsKCgp0eXBlZGVmIHN0cnVjdCBuZXRfcV9zYW1fZGVsdGFzX2luZm8KewogICAgICAgIFVO
SVNUUjIgdW5pX3Nydl9uYW1lOwogICAgICAgIFVOSVNUUjIgdW5pX2NsaV9uYW1lOwogICAgICAg
IERPTV9DUkVEIGNsaV9jcmVkczsKICAgICAgICBET01fQ1JFRCByZXRfY3JlZHM7CgogICAgICAg
IHVuc2lnbmVkIGludCBkYXRhYmFzZV9pZDsKICAgICAgICBVSU5UNjRfUyBkb21fbW9kX2NvdW50
OwoKICAgICAgICB1bnNpZ25lZCBpbnQgbWF4X3NpemU7Cgp9IE5FVF9RX1NBTV9ERUxUQVM7CgoK
dHlwZWRlZiBzdHJ1Y3QgbmV0X3Jfc2FtX2RlbHRhc19pbmZvCnsKICAgICAgICBET01fQ1JFRCBz
cnZfY3JlZHM7CgogICAgICAgIFVJTlQ2NF9TIGRvbV9tb2RfY291bnQ7CgogICAgICAgIHVuc2ln
bmVkIGludCBwdHJfZGVsdGFzOwogICAgICAgIHVuc2lnbmVkIGludCBudW1fZGVsdGFzOwogICAg
ICAgIHVuc2lnbmVkIGludCBudW1fZGVsdGFzMjsKCiAgICAgICAgU0FNX0RFTFRBX0hEUiAqaGRy
X2RlbHRhczsKICAgICAgICBTQU1fREVMVEFfQ1RSICpkZWx0YXM7CgogICAgICAgIE5UU1RBVFVT
IHN0YXR1czsKfSBORVRfUl9TQU1fREVMVEFTOwojIDI4MCAiaW5jbHVkZS9udGRvbWFpbi5oIiAy
CiMgMSAiaW5jbHVkZS9ycGNfcmVnLmgiIDEKIyA3OCAiaW5jbHVkZS9ycGNfcmVnLmgiCnR5cGVk
ZWYgc3RydWN0IHFfcmVnX29wZW5faGtjcl9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRy
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHVua25vd25fMDsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCB1bmtub3duXzE7CiAgICAgICAgdW5zaWduZWQgaW50IGxldmVsOwoKfSBSRUdfUV9PUEVOX0hL
Q1IgOwoKCnR5cGVkZWYgc3RydWN0IHJfcmVnX29wZW5faGtjcl9pbmZvCnsKICAgICAgICBQT0xJ
Q1lfSE5EIHBvbDsKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFJFR19SX09QRU5fSEtDUjsK
CgoKdHlwZWRlZiBzdHJ1Y3QgcV9yZWdfb3Blbl9oa2xtX2luZm8KewogICAgICAgIHVuc2lnbmVk
IGludCBwdHI7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdW5rbm93bl8wOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHVua25vd25fMTsKICAgICAgICB1bnNpZ25lZCBpbnQgYWNjZXNzX21hc2s7Cgp9
ClJFR19RX09QRU5fSEtMTTsKCgp0eXBlZGVmIHN0cnVjdCByX3JlZ19vcGVuX2hrbG1faW5mbwp7
CiAgICAgICAgUE9MSUNZX0hORCBwb2w7CiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfQpSRUdf
Ul9PUEVOX0hLTE07CgoKCnR5cGVkZWYgc3RydWN0IHFfcmVnX29wZW5faGt1X2luZm8KewogICAg
ICAgIHVuc2lnbmVkIGludCBwdHI7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdW5rbm93bl8wOwog
ICAgICAgIHVuc2lnbmVkIHNob3J0IHVua25vd25fMTsKICAgICAgICB1bnNpZ25lZCBpbnQgbGV2
ZWw7Cgp9IFJFR19RX09QRU5fSEtVOwoKCnR5cGVkZWYgc3RydWN0IHJfcmVnX29wZW5faGt1X2lu
Zm8KewogICAgICAgIFBPTElDWV9ITkQgcG9sOwogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0g
UkVHX1JfT1BFTl9IS1U7CgoKCnR5cGVkZWYgc3RydWN0IHFfcmVnX29wZW5fZmx1c2hfa2V5X2lu
Zm8KewogICAgICAgIFBPTElDWV9ITkQgcG9sOwoKfSBSRUdfUV9GTFVTSF9LRVk7CgoKdHlwZWRl
ZiBzdHJ1Y3Qgcl9yZWdfb3Blbl9mbHVzaF9rZXlfaW5mbwp7CiAgICAgICAgTlRTVEFUVVMgc3Rh
dHVzOwoKfSBSRUdfUl9GTFVTSF9LRVk7CgoKCnR5cGVkZWYgc3RydWN0IHFfcmVnX3NldF9rZXlf
c2VjX2luZm8KewogICAgICAgIFBPTElDWV9ITkQgcG9sOwoKICAgICAgICB1bnNpZ25lZCBpbnQg
c2VjX2luZm87CgogICAgICAgIHVuc2lnbmVkIGludCBwdHI7CiAgICAgICAgQlVGSERSIGhkcl9z
ZWM7CiAgICAgICAgU0VDX0RFU0NfQlVGICpkYXRhOwoKfSBSRUdfUV9TRVRfS0VZX1NFQzsKCgp0
eXBlZGVmIHN0cnVjdCByX3JlZ19zZXRfa2V5X3NlY19pbmZvCnsKICAgICAgICBOVFNUQVRVUyBz
dGF0dXM7Cgp9IFJFR19SX1NFVF9LRVlfU0VDOwoKCgp0eXBlZGVmIHN0cnVjdCBxX3JlZ19nZXRf
a2V5X3NlY19pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIHBvbDsKCiAgICAgICAgdW5zaWduZWQg
aW50IHNlY19pbmZvOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyOwogICAgICAgIEJVRkhEUiBo
ZHJfc2VjOwogICAgICAgIFNFQ19ERVNDX0JVRiAqZGF0YTsKCn0gUkVHX1FfR0VUX0tFWV9TRUM7
CgoKdHlwZWRlZiBzdHJ1Y3Qgcl9yZWdfZ2V0X2tleV9zZWNfaW5mbwp7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHNlY19pbmZvOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyOwogICAgICAgIEJVRkhE
UiBoZHJfc2VjOwogICAgICAgIFNFQ19ERVNDX0JVRiAqZGF0YTsKCiAgICAgICAgTlRTVEFUVVMg
c3RhdHVzOwoKfSBSRUdfUl9HRVRfS0VZX1NFQzsKCgp0eXBlZGVmIHN0cnVjdCBxX3JlZ19jcmVh
dGVfdmFsdWVfaW5mbwp7CiAgICAgICAgUE9MSUNZX0hORCBwb2w7CgogICAgICAgIFVOSUhEUiBo
ZHJfbmFtZTsKICAgICAgICBVTklTVFIyIHVuaV9uYW1lOwoKICAgICAgICB1bnNpZ25lZCBpbnQg
dHlwZTsKCiAgICAgICAgQlVGRkVSMyAqYnVmX3ZhbHVlOwoKfSBSRUdfUV9DUkVBVEVfVkFMVUU7
CgoKdHlwZWRlZiBzdHJ1Y3Qgcl9yZWdfY3JlYXRlX3ZhbHVlX2luZm8KewogICAgICAgIE5UU1RB
VFVTIHN0YXR1czsKCn0gUkVHX1JfQ1JFQVRFX1ZBTFVFOwoKCnR5cGVkZWYgc3RydWN0IHFfcmVn
X3F1ZXJ5X3ZhbHVlX2luZm8KewogICAgICAgIFBPTElDWV9ITkQgcG9sOwoKICAgICAgICB1bnNp
Z25lZCBpbnQgdmFsX2luZGV4OwoKICAgICAgICBVTklIRFIgaGRyX25hbWU7CiAgICAgICAgVU5J
U1RSMiB1bmlfbmFtZTsKCiAgICAgICAgdW5zaWduZWQgaW50IHB0cl90eXBlOwogICAgICAgIHVu
c2lnbmVkIGludCB0eXBlOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3ZhbHVlOwogICAgICAg
IEJVRkZFUjIgYnVmX3ZhbHVlOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyMTsKICAgICAgICB1
bnNpZ25lZCBpbnQgbGVuX3ZhbHVlMTsKCiAgICAgICAgdW5zaWduZWQgaW50IHB0cjI7CiAgICAg
ICAgdW5zaWduZWQgaW50IGxlbl92YWx1ZTI7Cgp9IFJFR19RX0VOVU1fVkFMVUU7CgoKdHlwZWRl
ZiBzdHJ1Y3Qgcl9yZWdfZW51bV92YWx1ZV9pbmZvCnsKICAgICAgICBVTklIRFIgaGRyX25hbWU7
CiAgICAgICAgVU5JU1RSMiB1bmlfbmFtZTsKCiAgICAgICAgdW5zaWduZWQgaW50IHB0cl90eXBl
OwogICAgICAgIHVuc2lnbmVkIGludCB0eXBlOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3Zh
bHVlOwogICAgICAgIEJVRkZFUjIgKmJ1Zl92YWx1ZTsKCiAgICAgICAgdW5zaWduZWQgaW50IHB0
cjE7CiAgICAgICAgdW5zaWduZWQgaW50IGxlbl92YWx1ZTE7CgogICAgICAgIHVuc2lnbmVkIGlu
dCBwdHIyOwogICAgICAgIHVuc2lnbmVkIGludCBsZW5fdmFsdWUyOwoKICAgICAgICBOVFNUQVRV
UyBzdGF0dXM7Cgp9IFJFR19SX0VOVU1fVkFMVUU7CgoKdHlwZWRlZiBzdHJ1Y3QgcV9yZWdfY3Jl
YXRlX2tleV9pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIHBudF9wb2w7CgogICAgICAgIFVOSUhE
UiBoZHJfbmFtZTsKICAgICAgICBVTklTVFIyIHVuaV9uYW1lOwoKICAgICAgICBVTklIRFIgaGRy
X2NsYXNzOwogICAgICAgIFVOSVNUUjIgdW5pX2NsYXNzOwoKICAgICAgICB1bnNpZ25lZCBpbnQg
cmVzZXJ2ZWQ7CiAgICAgICAgU0VDX0FDQ0VTUyBzYW1fYWNjZXNzOwoKICAgICAgICB1bnNpZ25l
ZCBpbnQgcHRyMTsKICAgICAgICB1bnNpZ25lZCBpbnQgc2VjX2luZm87CgogICAgICAgIHVuc2ln
bmVkIGludCBwdHIyOwogICAgICAgIEJVRkhEUiBoZHJfc2VjOwogICAgICAgIHVuc2lnbmVkIGlu
dCBwdHIzOwogICAgICAgIFNFQ19ERVNDX0JVRiAqZGF0YTsKCiAgICAgICAgdW5zaWduZWQgaW50
IHVua25vd25fMjsKCn0gUkVHX1FfQ1JFQVRFX0tFWTsKCgp0eXBlZGVmIHN0cnVjdCByX3JlZ19j
cmVhdGVfa2V5X2luZm8KewogICAgICAgIFBPTElDWV9ITkQga2V5X3BvbDsKICAgICAgICB1bnNp
Z25lZCBpbnQgdW5rbm93bjsKCiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBSRUdfUl9DUkVB
VEVfS0VZOwoKCnR5cGVkZWYgc3RydWN0IHFfcmVnX2RlbGV0ZV9rZXlfaW5mbwp7CiAgICAgICAg
UE9MSUNZX0hORCBwbnRfcG9sOwoKICAgICAgICBVTklIRFIgaGRyX25hbWU7CiAgICAgICAgVU5J
U1RSMiB1bmlfbmFtZTsKfSBSRUdfUV9ERUxFVEVfS0VZOwoKCnR5cGVkZWYgc3RydWN0IHJfcmVn
X2RlbGV0ZV9rZXlfaW5mbwp7CiAgICAgICAgUE9MSUNZX0hORCBrZXlfcG9sOwoKICAgICAgICBO
VFNUQVRVUyBzdGF0dXM7Cgp9IFJFR19SX0RFTEVURV9LRVk7CgoKdHlwZWRlZiBzdHJ1Y3QgcV9y
ZWdfZGVsZXRlX3ZhbF9pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIHBudF9wb2w7CgogICAgICAg
IFVOSUhEUiBoZHJfbmFtZTsKICAgICAgICBVTklTVFIyIHVuaV9uYW1lOwoKfSBSRUdfUV9ERUxF
VEVfVkFMVUU7CgoKdHlwZWRlZiBzdHJ1Y3Qgcl9yZWdfZGVsZXRlX3ZhbF9pbmZvCnsKICAgICAg
ICBQT0xJQ1lfSE5EIGtleV9wb2w7CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gUkVHX1Jf
REVMRVRFX1ZBTFVFOwoKCnR5cGVkZWYgc3RydWN0IHFfcmVnX3F1ZXJ5X2luZm8KewogICAgICAg
IFBPTElDWV9ITkQgcG9sOwogICAgICAgIFVOSUhEUiBoZHJfY2xhc3M7CiAgICAgICAgVU5JU1RS
MiB1bmlfY2xhc3M7Cgp9IFJFR19RX1FVRVJZX0tFWTsKCgp0eXBlZGVmIHN0cnVjdCByX3JlZ19x
dWVyeV9rZXlfaW5mbwp7CiAgICAgICAgVU5JSERSIGhkcl9jbGFzczsKICAgICAgICBVTklTVFIy
IHVuaV9jbGFzczsKCiAgICAgICAgdW5zaWduZWQgaW50IG51bV9zdWJrZXlzOwogICAgICAgIHVu
c2lnbmVkIGludCBtYXhfc3Via2V5bGVuOwogICAgICAgIHVuc2lnbmVkIGludCBtYXhfc3Via2V5
c2l6ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX3ZhbHVlczsKICAgICAgICB1bnNpZ25lZCBp
bnQgbWF4X3ZhbG5hbWVsZW47CiAgICAgICAgdW5zaWduZWQgaW50IG1heF92YWxidWZzaXplOwog
ICAgICAgIHVuc2lnbmVkIGludCBzZWNfZGVzYzsKICAgICAgICBOVFRJTUUgbW9kX3RpbWU7Cgog
ICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gUkVHX1JfUVVFUllfS0VZOwoKCgp0eXBlZGVmIHN0
cnVjdCBxX3JlZ191bmtfMWFfaW5mbwp7CiAgICAgICAgUE9MSUNZX0hORCBwb2w7Cgp9IFJFR19R
X1VOS18xQTsKCgp0eXBlZGVmIHN0cnVjdCByX3JlZ191bmtfMWFfaW5mbwp7CiAgICAgICAgdW5z
aWduZWQgaW50IHVua25vd247CiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBSRUdfUl9VTktf
MUE7CgoKCnR5cGVkZWYgc3RydWN0IHJlZ19xX2Nsb3NlX2luZm8KewogICAgICAgIFBPTElDWV9I
TkQgcG9sOwoKfSBSRUdfUV9DTE9TRTsKCgp0eXBlZGVmIHN0cnVjdCByZWdfcl9jbG9zZV9pbmZv
CnsKICAgICAgICBQT0xJQ1lfSE5EIHBvbDsKCiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBS
RUdfUl9DTE9TRTsKCgoKdHlwZWRlZiBzdHJ1Y3QgcV9yZWdfZW51bV92YWx1ZV9pbmZvCnsKICAg
ICAgICBQT0xJQ1lfSE5EIHBvbDsKCiAgICAgICAgdW5zaWduZWQgaW50IGtleV9pbmRleDsKCiAg
ICAgICAgdW5zaWduZWQgc2hvcnQga2V5X25hbWVfbGVuOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IHVua25vd25fMTsKCiAgICAgICAgdW5zaWduZWQgaW50IHB0cjE7CiAgICAgICAgdW5zaWduZWQg
aW50IHVua25vd25fMjsKICAgICAgICB1bnNpZ25lZCBjaGFyIHBhZDFbOF07CgogICAgICAgIHVu
c2lnbmVkIGludCBwdHIyOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcGFkMls4XTsKCiAgICAgICAg
dW5zaWduZWQgaW50IHB0cjM7CiAgICAgICAgTlRUSU1FIHRpbWU7Cgp9IFJFR19RX0VOVU1fS0VZ
OwoKCnR5cGVkZWYgc3RydWN0IHJfcmVnX2VudW1fa2V5X2luZm8KewogICAgICAgIHVuc2lnbmVk
IHNob3J0IGtleV9uYW1lX2xlbjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB1bmtub3duXzE7Cgog
ICAgICAgIHVuc2lnbmVkIGludCBwdHIxOwogICAgICAgIHVuc2lnbmVkIGludCB1bmtub3duXzI7
CiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd25fMzsKCiAgICAgICAgVU5JU1RSMyBrZXlfbmFt
ZTsKCiAgICAgICAgdW5zaWduZWQgaW50IHB0cjI7CiAgICAgICAgdW5zaWduZWQgY2hhciBwYWQy
WzhdOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyMzsKICAgICAgICBOVFRJTUUgdGltZTsKCiAg
ICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBSRUdfUl9FTlVNX0tFWTsKCgoKdHlwZWRlZiBzdHJ1
Y3QgcV9yZWdfaW5mb19pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIHBvbDsKCiAgICAgICAgVU5J
SERSIGhkcl90eXBlOwogICAgICAgIFVOSVNUUjIgdW5pX3R5cGU7CgogICAgICAgIHVuc2lnbmVk
IGludCBwdHJfcmVzZXJ2ZWQ7CgogICAgICAgIHVuc2lnbmVkIGludCBwdHJfYnVmOwogICAgICAg
IHVuc2lnbmVkIGludCBwdHJfYnVmc2l6ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgYnVmc2l6ZTsK
ICAgICAgICB1bnNpZ25lZCBpbnQgYnVmX3VuazsKCiAgICAgICAgdW5zaWduZWQgaW50IHVuazE7
CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9idWZsZW47CiAgICAgICAgdW5zaWduZWQgaW50IGJ1
ZmxlbjsKCiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9idWZsZW4yOwogICAgICAgIHVuc2lnbmVk
IGludCBidWZsZW4yOwoKfSBSRUdfUV9JTkZPOwoKCnR5cGVkZWYgc3RydWN0IHJfcmVnX2luZm9f
aW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl90eXBlOwogICAgICAgIHVuc2lnbmVkIGlu
dCB0eXBlOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3VuaV92YWw7CiAgICAgICAgQlVGRkVS
MiAqdW5pX3ZhbDsKCiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9tYXhfbGVuOwogICAgICAgIHVu
c2lnbmVkIGludCBidWZfbWF4X2xlbjsKCiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9sZW47CiAg
ICAgICAgdW5zaWduZWQgaW50IGJ1Zl9sZW47CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0g
UkVHX1JfSU5GTzsKCgoKdHlwZWRlZiBzdHJ1Y3QgcV9yZWdfb3Blbl9lbnRyeV9pbmZvCnsKICAg
ICAgICBQT0xJQ1lfSE5EIHBvbDsKCiAgICAgICAgVU5JSERSIGhkcl9uYW1lOwogICAgICAgIFVO
SVNUUjIgdW5pX25hbWU7CgogICAgICAgIHVuc2lnbmVkIGludCB1bmtub3duXzA7CiAgICAgICAg
dW5zaWduZWQgaW50IHVua25vd25fMTsKCn0gUkVHX1FfT1BFTl9FTlRSWTsKCgoKCnR5cGVkZWYg
c3RydWN0IHJfcmVnX29wZW5fZW50cnlfaW5mbwp7CiAgICAgICAgUE9MSUNZX0hORCBwb2w7CiAg
ICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBSRUdfUl9PUEVOX0VOVFJZOwoKCnR5cGVkZWYgc3Ry
dWN0IHFfcmVnX3NodXRkb3duX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBwdHJfMDsKICAg
ICAgICB1bnNpZ25lZCBpbnQgcHRyXzE7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl8yOwogICAg
ICAgIFVOSUhEUiBoZHJfbXNnOwogICAgICAgIFVOSVNUUjIgdW5pX21zZzsKICAgICAgICB1bnNp
Z25lZCBpbnQgdGltZW91dDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBmbGFnczsKCn0gUkVHX1Ff
U0hVVERPV047CgoKdHlwZWRlZiBzdHJ1Y3Qgcl9yZWdfc2h1dGRvd25faW5mbwp7CiAgICAgICAg
TlRTVEFUVVMgc3RhdHVzOwoKfSBSRUdfUl9TSFVURE9XTjsKCgp0eXBlZGVmIHN0cnVjdCBxX3Jl
Z19hYm9ydF9zaHV0ZG93bl9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3NlcnZlcjsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBzZXJ2ZXI7Cgp9IFJFR19RX0FCT1JUX1NIVVRET1dOOwoK
CnR5cGVkZWYgc3RydWN0IHJfcmVnX2Fib3J0X3NodXRkb3duX2luZm8KewogICAgICAgIE5UU1RB
VFVTIHN0YXR1czsKCn0gUkVHX1JfQUJPUlRfU0hVVERPV047CiMgMjgxICJpbmNsdWRlL250ZG9t
YWluLmgiIDIKIyAxICJpbmNsdWRlL3JwY19zYW1yLmgiIDEKIyAyOSAiaW5jbHVkZS9ycGNfc2Ft
ci5oIgojIDEgImluY2x1ZGUvcnBjX21pc2MuaCIgMQojIDMwICJpbmNsdWRlL3JwY19zYW1yLmgi
IDIKIyAxNTAgImluY2x1ZGUvcnBjX3NhbXIuaCIKdHlwZWRlZiBzdHJ1Y3QgX0RJU1BfVVNFUl9J
TkZPIHsKICAgICAgICBTQU1fQUNDT1VOVCAqc2FtOwp9IERJU1BfVVNFUl9JTkZPOwoKdHlwZWRl
ZiBzdHJ1Y3QgX0RJU1BfR1JPVVBfSU5GTyB7CiAgICAgICAgRE9NQUlOX0dSUCAqZ3JwOwp9IERJ
U1BfR1JPVVBfSU5GTzsKCgp0eXBlZGVmIHN0cnVjdCBsb2dvbl9ob3Vyc19pbmZvCnsKICAgICAg
ICB1bnNpZ25lZCBpbnQgbGVuOwogICAgICAgIHVuc2lnbmVkIGNoYXIgaG91cnNbMzJdOwoKfSBM
T0dPTl9IUlM7CgoKdHlwZWRlZiBzdHJ1Y3Qgc2FtX3VzZXJfaW5mb18yMwp7CgogICAgICAgIE5U
VElNRSBsb2dvbl90aW1lOwogICAgICAgIE5UVElNRSBsb2dvZmZfdGltZTsKICAgICAgICBOVFRJ
TUUga2lja29mZl90aW1lOwogICAgICAgIE5UVElNRSBwYXNzX2xhc3Rfc2V0X3RpbWU7CiAgICAg
ICAgTlRUSU1FIHBhc3NfY2FuX2NoYW5nZV90aW1lOwogICAgICAgIE5UVElNRSBwYXNzX211c3Rf
Y2hhbmdlX3RpbWU7CgogICAgICAgIFVOSUhEUiBoZHJfdXNlcl9uYW1lOwogICAgICAgIFVOSUhE
UiBoZHJfZnVsbF9uYW1lOwogICAgICAgIFVOSUhEUiBoZHJfaG9tZV9kaXI7CiAgICAgICAgVU5J
SERSIGhkcl9kaXJfZHJpdmU7CiAgICAgICAgVU5JSERSIGhkcl9sb2dvbl9zY3JpcHQ7CiAgICAg
ICAgVU5JSERSIGhkcl9wcm9maWxlX3BhdGg7CiAgICAgICAgVU5JSERSIGhkcl9hY2N0X2Rlc2Mg
OwogICAgICAgIFVOSUhEUiBoZHJfd29ya3N0YXRpb25zOwogICAgICAgIFVOSUhEUiBoZHJfdW5r
bm93bl9zdHIgOwogICAgICAgIFVOSUhEUiBoZHJfbXVuZ2VkX2RpYWwgOwoKICAgICAgICB1bnNp
Z25lZCBjaGFyIGxtX3B3ZFsxNl07CiAgICAgICAgdW5zaWduZWQgY2hhciBudF9wd2RbMTZdOwoK
ICAgICAgICB1bnNpZ25lZCBpbnQgdXNlcl9yaWQ7CiAgICAgICAgdW5zaWduZWQgaW50IGdyb3Vw
X3JpZDsKCiAgICAgICAgdW5zaWduZWQgaW50IGFjYl9pbmZvOwoKICAgICAgICB1bnNpZ25lZCBp
bnQgdW5rbm93bl8zOwoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBsb2dvbl9kaXZzOwoKICAgICAg
ICB1bnNpZ25lZCBpbnQgcHRyX2xvZ29uX2hyczsKCiAgICAgICAgdW5zaWduZWQgY2hhciBwYWRk
aW5nMVs4XTsKCiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd25fNTsKCiAgICAgICAgdW5zaWdu
ZWQgY2hhciBwYXNzWzUxNl07CgogICAgICAgIFVOSVNUUjIgdW5pX3VzZXJfbmFtZTsKICAgICAg
ICBVTklTVFIyIHVuaV9mdWxsX25hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfaG9tZV9kaXI7CiAg
ICAgICAgVU5JU1RSMiB1bmlfZGlyX2RyaXZlOwogICAgICAgIFVOSVNUUjIgdW5pX2xvZ29uX3Nj
cmlwdDsKICAgICAgICBVTklTVFIyIHVuaV9wcm9maWxlX3BhdGg7CiAgICAgICAgVU5JU1RSMiB1
bmlfYWNjdF9kZXNjIDsKICAgICAgICBVTklTVFIyIHVuaV93b3Jrc3RhdGlvbnM7CiAgICAgICAg
VU5JU1RSMiB1bmlfdW5rbm93bl9zdHIgOwogICAgICAgIFVOSVNUUjIgdW5pX211bmdlZF9kaWFs
IDsKCiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd25fNjsKICAgICAgICB1bnNpZ25lZCBpbnQg
cGFkZGluZzQ7CgogICAgICAgIExPR09OX0hSUyBsb2dvbl9ocnM7Cgp9IFNBTV9VU0VSX0lORk9f
MjM7CgoKdHlwZWRlZiBzdHJ1Y3Qgc2FtX3VzZXJfaW5mb18yNAp7CiAgICAgICAgdW5zaWduZWQg
Y2hhciBwYXNzWzUxNl07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcHdfbGVuOwp9IFNBTV9VU0VS
X0lORk9fMjQ7CiMgMjQwICJpbmNsdWRlL3JwY19zYW1yLmgiCnR5cGVkZWYgc3RydWN0IHNhbV91
c2VyX2luZm9fMjUKewoKICAgICAgICBOVFRJTUUgbG9nb25fdGltZTsKICAgICAgICBOVFRJTUUg
bG9nb2ZmX3RpbWU7CiAgICAgICAgTlRUSU1FIGtpY2tvZmZfdGltZTsKICAgICAgICBOVFRJTUUg
cGFzc19sYXN0X3NldF90aW1lOwogICAgICAgIE5UVElNRSBwYXNzX2Nhbl9jaGFuZ2VfdGltZTsK
ICAgICAgICBOVFRJTUUgcGFzc19tdXN0X2NoYW5nZV90aW1lOwoKICAgICAgICBVTklIRFIgaGRy
X3VzZXJfbmFtZTsKICAgICAgICBVTklIRFIgaGRyX2Z1bGxfbmFtZTsKICAgICAgICBVTklIRFIg
aGRyX2hvbWVfZGlyOwogICAgICAgIFVOSUhEUiBoZHJfZGlyX2RyaXZlOwogICAgICAgIFVOSUhE
UiBoZHJfbG9nb25fc2NyaXB0OwogICAgICAgIFVOSUhEUiBoZHJfcHJvZmlsZV9wYXRoOwogICAg
ICAgIFVOSUhEUiBoZHJfYWNjdF9kZXNjIDsKICAgICAgICBVTklIRFIgaGRyX3dvcmtzdGF0aW9u
czsKICAgICAgICBVTklIRFIgaGRyX3Vua25vd25fc3RyIDsKICAgICAgICBVTklIRFIgaGRyX211
bmdlZF9kaWFsIDsKCiAgICAgICAgdW5zaWduZWQgY2hhciBsbV9wd2RbMTZdOwogICAgICAgIHVu
c2lnbmVkIGNoYXIgbnRfcHdkWzE2XTsKCiAgICAgICAgdW5zaWduZWQgaW50IHVzZXJfcmlkOwog
ICAgICAgIHVuc2lnbmVkIGludCBncm91cF9yaWQ7CgogICAgICAgIHVuc2lnbmVkIGludCBhY2Jf
aW5mbzsKCiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd25fNls2XTsKCiAgICAgICAgdW5zaWdu
ZWQgY2hhciBwYXNzWzUzMl07CgogICAgICAgIFVOSVNUUjIgdW5pX3VzZXJfbmFtZTsKICAgICAg
ICBVTklTVFIyIHVuaV9mdWxsX25hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfaG9tZV9kaXI7CiAg
ICAgICAgVU5JU1RSMiB1bmlfZGlyX2RyaXZlOwogICAgICAgIFVOSVNUUjIgdW5pX2xvZ29uX3Nj
cmlwdDsKICAgICAgICBVTklTVFIyIHVuaV9wcm9maWxlX3BhdGg7CiAgICAgICAgVU5JU1RSMiB1
bmlfYWNjdF9kZXNjIDsKICAgICAgICBVTklTVFIyIHVuaV93b3Jrc3RhdGlvbnM7CiAgICAgICAg
VU5JU1RSMiB1bmlfdW5rbm93bl9zdHIgOwogICAgICAgIFVOSVNUUjIgdW5pX211bmdlZF9kaWFs
IDsKfSBTQU1fVVNFUl9JTkZPXzI1OwoKCgp0eXBlZGVmIHN0cnVjdCBzYW1fdXNlcl9pbmZvXzIx
CnsKICAgICAgICBOVFRJTUUgbG9nb25fdGltZTsKICAgICAgICBOVFRJTUUgbG9nb2ZmX3RpbWU7
CiAgICAgICAgTlRUSU1FIGtpY2tvZmZfdGltZTsKICAgICAgICBOVFRJTUUgcGFzc19sYXN0X3Nl
dF90aW1lOwogICAgICAgIE5UVElNRSBwYXNzX2Nhbl9jaGFuZ2VfdGltZTsKICAgICAgICBOVFRJ
TUUgcGFzc19tdXN0X2NoYW5nZV90aW1lOwoKICAgICAgICBVTklIRFIgaGRyX3VzZXJfbmFtZTsK
ICAgICAgICBVTklIRFIgaGRyX2Z1bGxfbmFtZTsKICAgICAgICBVTklIRFIgaGRyX2hvbWVfZGly
OwogICAgICAgIFVOSUhEUiBoZHJfZGlyX2RyaXZlOwogICAgICAgIFVOSUhEUiBoZHJfbG9nb25f
c2NyaXB0OwogICAgICAgIFVOSUhEUiBoZHJfcHJvZmlsZV9wYXRoOwogICAgICAgIFVOSUhEUiBo
ZHJfYWNjdF9kZXNjIDsKICAgICAgICBVTklIRFIgaGRyX3dvcmtzdGF0aW9uczsKICAgICAgICBV
TklIRFIgaGRyX3Vua25vd25fc3RyIDsKICAgICAgICBVTklIRFIgaGRyX211bmdlZF9kaWFsIDsK
CiAgICAgICAgdW5zaWduZWQgY2hhciBsbV9wd2RbMTZdOwogICAgICAgIHVuc2lnbmVkIGNoYXIg
bnRfcHdkWzE2XTsKCiAgICAgICAgdW5zaWduZWQgaW50IHVzZXJfcmlkOwogICAgICAgIHVuc2ln
bmVkIGludCBncm91cF9yaWQ7CgogICAgICAgIHVuc2lnbmVkIGludCBhY2JfaW5mbzsKCiAgICAg
ICAgdW5zaWduZWQgaW50IHVua25vd25fMzsKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgbG9nb25f
ZGl2czsKCiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9sb2dvbl9ocnM7CgogICAgICAgIHVuc2ln
bmVkIGludCB1bmtub3duXzU7CgogICAgICAgIHVuc2lnbmVkIGNoYXIgcGFkZGluZzFbOF07Cgog
ICAgICAgIFVOSVNUUjIgdW5pX3VzZXJfbmFtZTsKICAgICAgICBVTklTVFIyIHVuaV9mdWxsX25h
bWU7CiAgICAgICAgVU5JU1RSMiB1bmlfaG9tZV9kaXI7CiAgICAgICAgVU5JU1RSMiB1bmlfZGly
X2RyaXZlOwogICAgICAgIFVOSVNUUjIgdW5pX2xvZ29uX3NjcmlwdDsKICAgICAgICBVTklTVFIy
IHVuaV9wcm9maWxlX3BhdGg7CiAgICAgICAgVU5JU1RSMiB1bmlfYWNjdF9kZXNjIDsKICAgICAg
ICBVTklTVFIyIHVuaV93b3Jrc3RhdGlvbnM7CiAgICAgICAgVU5JU1RSMiB1bmlfdW5rbm93bl9z
dHIgOwogICAgICAgIFVOSVNUUjIgdW5pX211bmdlZF9kaWFsIDsKCiAgICAgICAgdW5zaWduZWQg
aW50IHVua25vd25fNjsKICAgICAgICB1bnNpZ25lZCBpbnQgcGFkZGluZzQ7CgogICAgICAgIExP
R09OX0hSUyBsb2dvbl9ocnM7Cgp9IFNBTV9VU0VSX0lORk9fMjE7CgoKCnR5cGVkZWYgc3RydWN0
IHNhbV91c2VyX2luZm9fMjAKewogICAgICAgIFVOSUhEUiBoZHJfbXVuZ2VkX2RpYWwgOwoKICAg
ICAgICBVTklTVFIyIHVuaV9tdW5nZWRfZGlhbCA7Cgp9IFNBTV9VU0VSX0lORk9fMjA7CgoKdHlw
ZWRlZiBzdHJ1Y3Qgc2FtX3VzZXJfaW5mb18xMgp7CiAgICAgICAgdW5zaWduZWQgY2hhciBsbV9w
d2RbMTZdOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbnRfcHdkWzE2XTsKCiAgICAgICAgdW5zaWdu
ZWQgY2hhciBsbV9wd2RfYWN0aXZlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbnRfcHdkX2FjdGl2
ZTsKCn0gU0FNX1VTRVJfSU5GT18xMjsKCgp0eXBlZGVmIHN0cnVjdCBzYW1fdXNlcl9pbmZvXzEx
CnsKICAgICAgICB1bnNpZ25lZCBjaGFyIHBhZGRpbmdfMFsxNl07CiAgICAgICAgTlRUSU1FIGV4
cGlyeTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHBhZGRpbmdfMVsyNF07CgogICAgICAgIFVOSUhE
UiBoZHJfbWFjaF9hY2N0OwogICAgICAgIHVuc2lnbmVkIGludCBwYWRkaW5nXzI7CgogICAgICAg
IHVuc2lnbmVkIGludCBwdHJfMTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHBhZGRpbmdfM1szMl07
CiAgICAgICAgdW5zaWduZWQgaW50IHBhZGRpbmdfNDsKCiAgICAgICAgdW5zaWduZWQgaW50IHB0
cl8yOwogICAgICAgIHVuc2lnbmVkIGludCBwYWRkaW5nXzU7CgogICAgICAgIHVuc2lnbmVkIGlu
dCBwdHJfMzsKICAgICAgICB1bnNpZ25lZCBjaGFyIHBhZGRpbmdfNlszMl07CgogICAgICAgIHVu
c2lnbmVkIGludCByaWRfdXNlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgcmlkX2dyb3VwOwoKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBhY2N0X2N0cmw7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdW5r
bm93bl8zOwoKICAgICAgICB1bnNpZ25lZCBzaG9ydCB1bmtub3duXzQ7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgdW5rbm93bl81OwoKICAgICAgICB1bnNpZ25lZCBjaGFyIHBhZGRpbmdfN1sxNl07
CiAgICAgICAgdW5zaWduZWQgaW50IHBhZGRpbmdfODsKCiAgICAgICAgVU5JU1RSMiB1bmlfbWFj
aF9hY2N0OwoKICAgICAgICB1bnNpZ25lZCBjaGFyIHBhZGRpbmdfOVs0OF07Cgp9IFNBTV9VU0VS
X0lORk9fMTE7CgoKCnR5cGVkZWYgc3RydWN0IHNhbV91c2VyX2luZm9fMTAKewogICAgICAgIHVu
c2lnbmVkIGludCBhY2JfaW5mbzsKCn0gU0FNX1VTRVJfSU5GT18xMDsKCgoKCnR5cGVkZWYgc3Ry
dWN0IHFfc2Ftcl9jbG9zZV9obmRfaW5mbwp7CiAgICBQT0xJQ1lfSE5EIHBvbDsKCn0gU0FNUl9R
X0NMT1NFX0hORDsKCgoKdHlwZWRlZiBzdHJ1Y3Qgcl9zYW1yX2Nsb3NlX2huZF9pbmZvCnsKICAg
ICAgICBQT0xJQ1lfSE5EIHBvbDsKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNBTVJfUl9D
TE9TRV9ITkQ7CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBxX3NhbXJfdXNyZG9tX3B3aW5mb19pbmZv
CnsKICAgICAgICBQT0xJQ1lfSE5EIHVzZXJfcG9sOwoKfSBTQU1SX1FfR0VUX1VTUkRPTV9QV0lO
Rk87CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCByX3NhbXJfdXNyZG9tX3B3aW5mb19pbmZvCnsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCB1bmtub3duXzA7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdW5r
bm93bl8xOwogICAgICAgIHVuc2lnbmVkIGludCB1bmtub3duXzI7CiAgICAgICAgTlRTVEFUVVMg
c3RhdHVzOwoKfSBTQU1SX1JfR0VUX1VTUkRPTV9QV0lORk87CgoKCgoKCgp0eXBlZGVmIHN0cnVj
dCBxX3NhbXJfcXVlcnlfc2VjX29ial9pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIHVzZXJfcG9s
OwogICAgICAgIHVuc2lnbmVkIGludCBzZWNfaW5mbzsKCn0gU0FNUl9RX1FVRVJZX1NFQ19PQko7
CgoKdHlwZWRlZiBzdHJ1Y3Qgcl9zYW1yX3F1ZXJ5X3NlY19vYmpfaW5mbwp7CiAgICAgICAgdW5z
aWduZWQgaW50IHB0cjsKICAgICAgICBTRUNfREVTQ19CVUYgKmJ1ZjsKCiAgICAgICAgTlRTVEFU
VVMgc3RhdHVzOwoKfSBTQU1SX1JfUVVFUllfU0VDX09CSjsKCgoKCgoKCnR5cGVkZWYgc3RydWN0
IHFfc2Ftcl9xdWVyeV9kb21haW5faW5mbwp7CiAgICAgICAgUE9MSUNZX0hORCBkb21haW5fcG9s
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN3aXRjaF92YWx1ZTsKCn0gU0FNUl9RX1FVRVJZX0RP
TUFJTl9JTkZPOwoKdHlwZWRlZiBzdHJ1Y3Qgc2FtX3Vua25vd25faW5mb18zX2luZm8KewogICAg
ICAgIE5UVElNRSBsb2dvdXQ7CgoKCgp9IFNBTV9VTktfSU5GT18zOwoKdHlwZWRlZiBzdHJ1Y3Qg
c2FtX3Vua25vd25faW5mb182X2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCB1bmtub3duXzA7
CgogICAgICAgIHVuc2lnbmVkIGludCBwdHJfMDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHBhZGRp
bmdbMTJdOwoKfSBTQU1fVU5LX0lORk9fNjsKCnR5cGVkZWYgc3RydWN0IHNhbV91bmtub3duX2lu
Zm9fN19pbmZvCnsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB1bmtub3duXzA7Cgp9IFNBTV9VTktf
SU5GT183OwoKdHlwZWRlZiBzdHJ1Y3Qgc2FtX3Vua25vd25faW5mb18xMl9pbmYKewogICAgICAg
IE5UVElNRSBkdXJhdGlvbjsKICAgICAgICBOVFRJTUUgcmVzZXRfY291bnQ7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgYmFkX2F0dGVtcHRfbG9ja291dDsKCn0gU0FNX1VOS19JTkZPXzEyOwoKdHlw
ZWRlZiBzdHJ1Y3Qgc2FtX3Vua25vd25faW5mb181X2luZgp7CiAgICAgICAgVU5JSERSIGhkcl9z
ZXJ2ZXI7CiAgICAgICAgVU5JU1RSMiB1bmlfc2VydmVyOwoKfSBTQU1fVU5LX0lORk9fNTsKCnR5
cGVkZWYgc3RydWN0IHNhbV91bmtub3duX2luZm9fMl9pbmYKewogICAgICAgIHVuc2lnbmVkIGlu
dCB1bmtub3duXzA7CiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd25fMTsKICAgICAgICB1bnNp
Z25lZCBpbnQgdW5rbm93bl8yOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyXzA7CiAgICAgICAg
VU5JSERSIGhkcl9kb21haW47CiAgICAgICAgVU5JSERSIGhkcl9zZXJ2ZXI7CgoKCgoKICAgICAg
ICB1bnNpZ25lZCBpbnQgc2VxX251bTsKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bl8zOwoK
ICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bl80OwogICAgICAgIHVuc2lnbmVkIGludCB1bmtu
b3duXzU7CiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd25fNjsKICAgICAgICB1bnNpZ25lZCBp
bnQgbnVtX2RvbWFpbl91c3JzOwogICAgICAgIHVuc2lnbmVkIGludCBudW1fZG9tYWluX2dycHM7
CiAgICAgICAgdW5zaWduZWQgaW50IG51bV9sb2NhbF9ncnBzOwoKICAgICAgICB1bnNpZ25lZCBj
aGFyIHBhZGRpbmdbMTJdOwoKICAgICAgICBVTklTVFIyIHVuaV9kb21haW47CiAgICAgICAgVU5J
U1RSMiB1bmlfc2VydmVyOwoKfSBTQU1fVU5LX0lORk9fMjsKCnR5cGVkZWYgc3RydWN0IHNhbV91
bmtub3duX2luZm9fMV9pbmYKewogICAgICAgIHVuc2lnbmVkIHNob3J0IG1pbl9sZW5ndGhfcGFz
c3dvcmQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcGFzc3dvcmRfaGlzdG9yeTsKICAgICAgICB1
bnNpZ25lZCBpbnQgZmxhZzsKICAgICAgICBOVFRJTUUgZXhwaXJlOwogICAgICAgIE5UVElNRSBt
aW5fcGFzc3dvcmRhZ2U7Cgp9IFNBTV9VTktfSU5GT18xOwoKCnR5cGVkZWYgc3RydWN0IHNhbV91
bmtub3duX2N0cl9pbmZvCnsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAg
IFNBTV9VTktfSU5GT18xIGluZjE7CiAgICAgICAgICAgICAgICBTQU1fVU5LX0lORk9fMiBpbmYy
OwogICAgICAgICAgICAgICAgU0FNX1VOS19JTkZPXzMgaW5mMzsKICAgICAgICAgICAgICAgIFNB
TV9VTktfSU5GT181IGluZjU7CiAgICAgICAgICAgICAgICBTQU1fVU5LX0lORk9fNiBpbmY2Owog
ICAgICAgICAgICAgICAgU0FNX1VOS19JTkZPXzcgaW5mNzsKICAgICAgICAgICAgICAgIFNBTV9V
TktfSU5GT18xMiBpbmYxMjsKCiAgICAgICAgfSBpbmZvOwoKfSBTQU1fVU5LX0NUUjsKCgoKdHlw
ZWRlZiBzdHJ1Y3Qgcl9zYW1yX3F1ZXJ5X2RvbWFpbl9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBp
bnQgcHRyXzA7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3dpdGNoX3ZhbHVlOwoKICAgICAgICBT
QU1fVU5LX0NUUiAqY3RyOwoKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNBTVJfUl9RVUVS
WV9ET01BSU5fSU5GTzsKCgoKdHlwZWRlZiBzdHJ1Y3QgcV9zYW1yX2xvb2t1cF9kb21haW5faW5m
bwp7CiAgICAgICAgUE9MSUNZX0hORCBjb25uZWN0X3BvbDsKCiAgICAgICAgVU5JSERSIGhkcl9k
b21haW47CiAgICAgICAgVU5JU1RSMiB1bmlfZG9tYWluOwoKfSBTQU1SX1FfTE9PS1VQX0RPTUFJ
TjsKCgoKdHlwZWRlZiBzdHJ1Y3Qgcl9zYW1yX2xvb2t1cF9kb21haW5faW5mbwp7CiAgICAgICAg
dW5zaWduZWQgaW50IHB0cl9zaWQ7CiAgICAgICAgRE9NX1NJRDIgZG9tX3NpZDsKCiAgICAgICAg
TlRTVEFUVVMgc3RhdHVzOwoKfSBTQU1SX1JfTE9PS1VQX0RPTUFJTjsKIyA2MzIgImluY2x1ZGUv
cnBjX3NhbXIuaCIKdHlwZWRlZiBzdHJ1Y3QgcV9zYW1yX29wZW5fZG9tYWluX2luZm8KewogICAg
ICAgIFBPTElDWV9ITkQgcG9sOwogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKICAgICAgICBE
T01fU0lEMiBkb21fc2lkOwoKfSBTQU1SX1FfT1BFTl9ET01BSU47CgoKCnR5cGVkZWYgc3RydWN0
IHJfc2Ftcl9vcGVuX2RvbWFpbl9pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIGRvbWFpbl9wb2w7
CiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBTQU1SX1JfT1BFTl9ET01BSU47CgoKCnR5cGVk
ZWYgc3RydWN0IHNhbXJfZW50cnlfaW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IHJpZDsKICAg
ICAgICBVTklIRFIgaGRyX25hbWU7Cgp9IFNBTV9FTlRSWTsKCgoKdHlwZWRlZiBzdHJ1Y3QgcV9z
YW1yX2VudW1fZG9tYWluc19pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIHBvbDsKCiAgICAgICAg
dW5zaWduZWQgaW50IHN0YXJ0X2lkeDsKICAgICAgICB1bnNpZ25lZCBpbnQgbWF4X3NpemU7Cgp9
IFNBTVJfUV9FTlVNX0RPTUFJTlM7CgoKdHlwZWRlZiBzdHJ1Y3Qgcl9zYW1yX2VudW1fZG9tYWlu
c19pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgbmV4dF9pZHg7CiAgICAgICAgdW5zaWduZWQg
aW50IHB0cl9lbnRyaWVzMTsKCiAgICAgICAgdW5zaWduZWQgaW50IG51bV9lbnRyaWVzMjsKICAg
ICAgICB1bnNpZ25lZCBpbnQgcHRyX2VudHJpZXMyOwoKICAgICAgICB1bnNpZ25lZCBpbnQgbnVt
X2VudHJpZXMzOwoKICAgICAgICBTQU1fRU5UUlkgKnNhbTsKICAgICAgICBVTklTVFIyICp1bmlf
ZG9tX25hbWU7CgogICAgICAgIHVuc2lnbmVkIGludCBudW1fZW50cmllczQ7CgogICAgICAgIE5U
U1RBVFVTIHN0YXR1czsKCn0gU0FNUl9SX0VOVU1fRE9NQUlOUzsKCgp0eXBlZGVmIHN0cnVjdCBx
X3NhbXJfZW51bV9kb21fdXNlcnNfaW5mbwp7CiAgICAgICAgUE9MSUNZX0hORCBwb2w7CgogICAg
ICAgIHVuc2lnbmVkIGludCBzdGFydF9pZHg7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgYWNiX21h
c2s7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdW5rbm93bl8xOwoKICAgICAgICB1bnNpZ25lZCBp
bnQgbWF4X3NpemU7Cgp9IFNBTVJfUV9FTlVNX0RPTV9VU0VSUzsKCgoKdHlwZWRlZiBzdHJ1Y3Qg
cl9zYW1yX2VudW1fZG9tX3VzZXJzX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBuZXh0X2lk
eDsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX2VudHJpZXMxOwoKICAgICAgICB1bnNpZ25lZCBp
bnQgbnVtX2VudHJpZXMyOwogICAgICAgIHVuc2lnbmVkIGludCBwdHJfZW50cmllczI7CgogICAg
ICAgIHVuc2lnbmVkIGludCBudW1fZW50cmllczM7CgogICAgICAgIFNBTV9FTlRSWSAqc2FtOwog
ICAgICAgIFVOSVNUUjIgKnVuaV9hY2N0X25hbWU7CgogICAgICAgIHVuc2lnbmVkIGludCBudW1f
ZW50cmllczQ7CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU0FNUl9SX0VOVU1fRE9NX1VT
RVJTOwoKCgp0eXBlZGVmIHN0cnVjdCBxX3NhbXJfZW51bV9kb21fZ3JvdXBzX2luZm8KewogICAg
ICAgIFBPTElDWV9ITkQgcG9sOwoKCiAgICAgICAgdW5zaWduZWQgaW50IHN0YXJ0X2lkeDsKCiAg
ICAgICAgdW5zaWduZWQgaW50IG1heF9zaXplOwoKfSBTQU1SX1FfRU5VTV9ET01fR1JPVVBTOwoK
Cgp0eXBlZGVmIHN0cnVjdCByX3NhbXJfZW51bV9kb21fZ3JvdXBzX2luZm8KewogICAgICAgIHVu
c2lnbmVkIGludCBuZXh0X2lkeDsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX2VudHJpZXMxOwoK
ICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX2VudHJpZXMyOwogICAgICAgIHVuc2lnbmVkIGludCBw
dHJfZW50cmllczI7CgogICAgICAgIHVuc2lnbmVkIGludCBudW1fZW50cmllczM7CgogICAgICAg
IFNBTV9FTlRSWSAqc2FtOwogICAgICAgIFVOSVNUUjIgKnVuaV9ncnBfbmFtZTsKCiAgICAgICAg
dW5zaWduZWQgaW50IG51bV9lbnRyaWVzNDsKCiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBT
QU1SX1JfRU5VTV9ET01fR1JPVVBTOwoKCgp0eXBlZGVmIHN0cnVjdCBxX3NhbXJfZW51bV9kb21f
YWxpYXNlc19pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIHBvbDsKCgogICAgICAgIHVuc2lnbmVk
IGludCBzdGFydF9pZHg7CgogICAgICAgIHVuc2lnbmVkIGludCBtYXhfc2l6ZTsKCn0gU0FNUl9R
X0VOVU1fRE9NX0FMSUFTRVM7CgoKCnR5cGVkZWYgc3RydWN0IHJfc2Ftcl9lbnVtX2RvbV9hbGlh
c2VzX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBuZXh0X2lkeDsKICAgICAgICB1bnNpZ25l
ZCBpbnQgcHRyX2VudHJpZXMxOwoKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX2VudHJpZXMyOwog
ICAgICAgIHVuc2lnbmVkIGludCBwdHJfZW50cmllczI7CgogICAgICAgIHVuc2lnbmVkIGludCBu
dW1fZW50cmllczM7CgogICAgICAgIFNBTV9FTlRSWSAqc2FtOwogICAgICAgIFVOSVNUUjIgKnVu
aV9ncnBfbmFtZTsKCiAgICAgICAgdW5zaWduZWQgaW50IG51bV9lbnRyaWVzNDsKCiAgICAgICAg
TlRTVEFUVVMgc3RhdHVzOwoKfSBTQU1SX1JfRU5VTV9ET01fQUxJQVNFUzsKCgoKCnR5cGVkZWYg
c3RydWN0IHNhbXJfZW50cnlfaW5mbzEKewogICAgICAgIHVuc2lnbmVkIGludCB1c2VyX2lkeDsK
CiAgICAgICAgdW5zaWduZWQgaW50IHJpZF91c2VyOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGFj
Yl9pbmZvOwoKICAgICAgICBVTklIRFIgaGRyX2FjY3RfbmFtZTsKICAgICAgICBVTklIRFIgaGRy
X3VzZXJfbmFtZTsKICAgICAgICBVTklIRFIgaGRyX3VzZXJfZGVzYzsKCn0gU0FNX0VOVFJZMTsK
CnR5cGVkZWYgc3RydWN0IHNhbXJfc3RyX2VudHJ5X2luZm8xCnsKICAgICAgICBVTklTVFIyIHVu
aV9hY2N0X25hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfZnVsbF9uYW1lOwogICAgICAgIFVOSVNU
UjIgdW5pX2FjY3RfZGVzYzsKCn0gU0FNX1NUUjE7Cgp0eXBlZGVmIHN0cnVjdCBzYW1fZW50cnlf
aW5mb18xCnsKICAgICAgICBTQU1fRU5UUlkxICpzYW07CiAgICAgICAgU0FNX1NUUjEgKnN0cjsK
Cn0gU0FNX0RJU1BJTkZPXzE7CgoKCgp0eXBlZGVmIHN0cnVjdCBzYW1yX2VudHJ5X2luZm8yCnsK
ICAgICAgICB1bnNpZ25lZCBpbnQgdXNlcl9pZHg7CgogICAgICAgIHVuc2lnbmVkIGludCByaWRf
dXNlcjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBhY2JfaW5mbzsKCiAgICAgICAgVU5JSERSIGhk
cl9zcnZfbmFtZTsKICAgICAgICBVTklIRFIgaGRyX3Nydl9kZXNjOwoKfSBTQU1fRU5UUlkyOwoK
dHlwZWRlZiBzdHJ1Y3Qgc2Ftcl9zdHJfZW50cnlfaW5mbzIKewogICAgICAgIFVOSVNUUjIgdW5p
X3Nydl9uYW1lOwogICAgICAgIFVOSVNUUjIgdW5pX3Nydl9kZXNjOwoKfSBTQU1fU1RSMjsKCnR5
cGVkZWYgc3RydWN0IHNhbV9lbnRyeV9pbmZvXzIKewogICAgICAgIFNBTV9FTlRSWTIgKnNhbTsK
ICAgICAgICBTQU1fU1RSMiAqc3RyOwoKfSBTQU1fRElTUElORk9fMjsKCgoKCnR5cGVkZWYgc3Ry
dWN0IHNhbXJfZW50cnlfaW5mbzMKewogICAgICAgIHVuc2lnbmVkIGludCBncnBfaWR4OwoKICAg
ICAgICB1bnNpZ25lZCBpbnQgcmlkX2dycDsKICAgICAgICB1bnNpZ25lZCBpbnQgYXR0cjsKCiAg
ICAgICAgVU5JSERSIGhkcl9ncnBfbmFtZTsKICAgICAgICBVTklIRFIgaGRyX2dycF9kZXNjOwoK
fSBTQU1fRU5UUlkzOwoKdHlwZWRlZiBzdHJ1Y3Qgc2Ftcl9zdHJfZW50cnlfaW5mbzMKewogICAg
ICAgIFVOSVNUUjIgdW5pX2dycF9uYW1lOwogICAgICAgIFVOSVNUUjIgdW5pX2dycF9kZXNjOwoK
fSBTQU1fU1RSMzsKCnR5cGVkZWYgc3RydWN0IHNhbV9lbnRyeV9pbmZvXzMKewogICAgICAgIFNB
TV9FTlRSWTMgKnNhbTsKICAgICAgICBTQU1fU1RSMyAqc3RyOwoKfSBTQU1fRElTUElORk9fMzsK
CgoKCnR5cGVkZWYgc3RydWN0IHNhbXJfZW50cnlfaW5mbzQKewogICAgICAgIHVuc2lnbmVkIGlu
dCB1c2VyX2lkeDsKICAgICAgICBTVFJIRFIgaGRyX2FjY3RfbmFtZTsKCn0gU0FNX0VOVFJZNDsK
CnR5cGVkZWYgc3RydWN0IHNhbXJfc3RyX2VudHJ5X2luZm80CnsKICAgICAgICBTVFJJTkcyIGFj
Y3RfbmFtZTsKCn0gU0FNX1NUUjQ7Cgp0eXBlZGVmIHN0cnVjdCBzYW1fZW50cnlfaW5mb180CnsK
ICAgICAgICBTQU1fRU5UUlk0ICpzYW07CiAgICAgICAgU0FNX1NUUjQgKnN0cjsKCn0gU0FNX0RJ
U1BJTkZPXzQ7CgoKCgp0eXBlZGVmIHN0cnVjdCBzYW1yX2VudHJ5X2luZm81CnsKICAgICAgICB1
bnNpZ25lZCBpbnQgZ3JwX2lkeDsKICAgICAgICBTVFJIRFIgaGRyX2dycF9uYW1lOwoKfSBTQU1f
RU5UUlk1OwoKdHlwZWRlZiBzdHJ1Y3Qgc2Ftcl9zdHJfZW50cnlfaW5mbzUKewogICAgICAgIFNU
UklORzIgZ3JwX25hbWU7Cgp9IFNBTV9TVFI1OwoKdHlwZWRlZiBzdHJ1Y3Qgc2FtX2VudHJ5X2lu
Zm9fNQp7CiAgICAgICAgU0FNX0VOVFJZNSAqc2FtOwogICAgICAgIFNBTV9TVFI1ICpzdHI7Cgp9
IFNBTV9ESVNQSU5GT181OwoKCnR5cGVkZWYgc3RydWN0IHNhbV9kaXNwaW5mb19jdHJfaW5mbwp7
CiAgICAgICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAgICBTQU1fRElTUElORk9fMSAq
aW5mbzE7CiAgICAgICAgICAgICAgICBTQU1fRElTUElORk9fMiAqaW5mbzI7CiAgICAgICAgICAg
ICAgICBTQU1fRElTUElORk9fMyAqaW5mbzM7CiAgICAgICAgICAgICAgICBTQU1fRElTUElORk9f
NCAqaW5mbzQ7CiAgICAgICAgICAgICAgICBTQU1fRElTUElORk9fNSAqaW5mbzU7CiAgICAgICAg
ICAgICAgICB2b2lkICppbmZvOwoKICAgICAgICB9IHNhbTsKCn0gU0FNX0RJU1BJTkZPX0NUUjsK
CgoKdHlwZWRlZiBzdHJ1Y3QgcV9zYW1yX3F1ZXJ5X2Rpc3BfaW5mbwp7CiAgICAgICAgUE9MSUNZ
X0hORCBkb21haW5fcG9sOwoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzd2l0Y2hfbGV2ZWw7CgoK
ICAgICAgICB1bnNpZ25lZCBpbnQgc3RhcnRfaWR4OwogICAgICAgIHVuc2lnbmVkIGludCBtYXhf
ZW50cmllczsKICAgICAgICB1bnNpZ25lZCBpbnQgbWF4X3NpemU7CgoKfSBTQU1SX1FfUVVFUllf
RElTUElORk87CgoKCnR5cGVkZWYgc3RydWN0IHJfc2Ftcl9xdWVyeV9kaXNwaW5mb19pbmZvCnsK
ICAgICAgICB1bnNpZ25lZCBpbnQgdG90YWxfc2l6ZTsKCiAgICAgICAgdW5zaWduZWQgaW50IGRh
dGFfc2l6ZTsKCgogICAgICAgIHVuc2lnbmVkIHNob3J0IHN3aXRjaF9sZXZlbDsKCgogICAgICAg
IHVuc2lnbmVkIGludCBudW1fZW50cmllczsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX2VudHJp
ZXM7CiAgICAgICAgdW5zaWduZWQgaW50IG51bV9lbnRyaWVzMjsKCiAgICAgICAgU0FNX0RJU1BJ
TkZPX0NUUiAqY3RyOwoKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNBTVJfUl9RVUVSWV9E
SVNQSU5GTzsKCgoKdHlwZWRlZiBzdHJ1Y3QgcV9zYW1yX2RlbGV0ZV9kb21fZ3JvdXBfaW5mbwp7
CiAgICBQT0xJQ1lfSE5EIGdyb3VwX3BvbDsKCn0gU0FNUl9RX0RFTEVURV9ET01fR1JPVVA7CgoK
CnR5cGVkZWYgc3RydWN0IHJfc2Ftcl9kZWxldGVfZG9tX2dyb3VwX2luZm8KewogICAgICAgIFBP
TElDWV9ITkQgcG9sOwogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU0FNUl9SX0RFTEVURV9E
T01fR1JPVVA7CgoKCnR5cGVkZWYgc3RydWN0IHFfc2Ftcl9jcmVhdGVfZG9tX2dyb3VwX2luZm8K
ewogICAgICAgIFBPTElDWV9ITkQgcG9sOwoKICAgICAgICBVTklIRFIgaGRyX2FjY3RfZGVzYzsK
ICAgICAgICBVTklTVFIyIHVuaV9hY2N0X2Rlc2M7CgogICAgICAgIHVuc2lnbmVkIGludCBhY2Nl
c3NfbWFzazsKCn0gU0FNUl9RX0NSRUFURV9ET01fR1JPVVA7CgoKdHlwZWRlZiBzdHJ1Y3Qgcl9z
YW1yX2NyZWF0ZV9kb21fZ3JvdXBfaW5mbwp7CiAgICAgICAgUE9MSUNZX0hORCBwb2w7CgogICAg
ICAgIHVuc2lnbmVkIGludCByaWQ7CiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBTQU1SX1Jf
Q1JFQVRFX0RPTV9HUk9VUDsKCgp0eXBlZGVmIHN0cnVjdCBxX3NhbXJfcXVlcnlfZ3JvdXBfaW5m
bwp7CiAgICAgICAgUE9MSUNZX0hORCBwb2w7CgogICAgICAgIHVuc2lnbmVkIHNob3J0IHN3aXRj
aF9sZXZlbDsKCn0gU0FNUl9RX1FVRVJZX0dST1VQSU5GTzsKCnR5cGVkZWYgc3RydWN0IHNhbXJf
Z3JvdXBfaW5mbzEKewogICAgICAgIFVOSUhEUiBoZHJfYWNjdF9uYW1lOwoKICAgICAgICB1bnNp
Z25lZCBpbnQgdW5rbm93bl8xOwogICAgICAgIHVuc2lnbmVkIGludCBudW1fbWVtYmVyczsKCiAg
ICAgICAgVU5JSERSIGhkcl9hY2N0X2Rlc2M7CgogICAgICAgIFVOSVNUUjIgdW5pX2FjY3RfbmFt
ZTsKICAgICAgICBVTklTVFIyIHVuaV9hY2N0X2Rlc2M7Cgp9IEdST1VQX0lORk8xOwoKdHlwZWRl
ZiBzdHJ1Y3Qgc2Ftcl9ncm91cF9pbmZvMwp7CiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd25f
MTsKCn0gR1JPVVBfSU5GTzM7Cgp0eXBlZGVmIHN0cnVjdCBzYW1yX2dyb3VwX2luZm80CnsKICAg
ICAgICBVTklIRFIgaGRyX2FjY3RfZGVzYzsKICAgICAgICBVTklTVFIyIHVuaV9hY2N0X2Rlc2M7
Cgp9IEdST1VQX0lORk80OwoKCnR5cGVkZWYgc3RydWN0IGdyb3VwX2luZm9fY3RyCnsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBzd2l0Y2hfdmFsdWUxOwoKICAgICAgICB1bmlvbgogICAgICAgIHsK
ICAgICAgICAgICAgICAgIEdST1VQX0lORk8xIGluZm8xOwogICAgICAgICAgICAgICAgR1JPVVBf
SU5GTzMgaW5mbzM7CiAgICAgICAgICAgICAgICBHUk9VUF9JTkZPNCBpbmZvNDsKCiAgICAgICAg
fSBncm91cDsKCn0gR1JPVVBfSU5GT19DVFI7CgoKdHlwZWRlZiBzdHJ1Y3Qgcl9zYW1yX3F1ZXJ5
X2dyb3VwaW5mb19pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyOwogICAgICAgIEdST1VQ
X0lORk9fQ1RSICpjdHI7CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU0FNUl9SX1FVRVJZ
X0dST1VQSU5GTzsKCgoKdHlwZWRlZiBzdHJ1Y3QgcV9zYW1yX3NldF9ncm91cF9pbmZvCnsKICAg
ICAgICBQT0xJQ1lfSE5EIHBvbDsKICAgICAgICBHUk9VUF9JTkZPX0NUUiAqY3RyOwoKfSBTQU1S
X1FfU0VUX0dST1VQSU5GTzsKCgp0eXBlZGVmIHN0cnVjdCByX3NhbXJfc2V0X2dyb3VwX2luZm8K
ewogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU0FNUl9SX1NFVF9HUk9VUElORk87CgoKCnR5
cGVkZWYgc3RydWN0IHFfc2Ftcl9kZWxldGVfZG9tX2FsaWFzX2luZm8KewogICAgUE9MSUNZX0hO
RCBhbGlhc19wb2w7Cgp9IFNBTVJfUV9ERUxFVEVfRE9NX0FMSUFTOwoKCgp0eXBlZGVmIHN0cnVj
dCByX3NhbXJfZGVsZXRlX2RvbV9hbGlhc19pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIHBvbDsK
ICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNBTVJfUl9ERUxFVEVfRE9NX0FMSUFTOwoKCgp0
eXBlZGVmIHN0cnVjdCBxX3NhbXJfY3JlYXRlX2RvbV9hbGlhc19pbmZvCnsKICAgICAgICBQT0xJ
Q1lfSE5EIGRvbV9wb2w7CgogICAgICAgIFVOSUhEUiBoZHJfYWNjdF9kZXNjOwogICAgICAgIFVO
SVNUUjIgdW5pX2FjY3RfZGVzYzsKCiAgICAgICAgdW5zaWduZWQgaW50IGFjY2Vzc19tYXNrOwoK
fSBTQU1SX1FfQ1JFQVRFX0RPTV9BTElBUzsKCgp0eXBlZGVmIHN0cnVjdCByX3NhbXJfY3JlYXRl
X2RvbV9hbGlhc19pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIGFsaWFzX3BvbDsKCiAgICAgICAg
dW5zaWduZWQgaW50IHJpZDsKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNBTVJfUl9DUkVB
VEVfRE9NX0FMSUFTOwoKCnR5cGVkZWYgc3RydWN0IHFfc2Ftcl9xdWVyeV9hbGlhc19pbmZvCnsK
ICAgICAgICBQT0xJQ1lfSE5EIHBvbDsKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3dpdGNoX2xl
dmVsOwoKfSBTQU1SX1FfUVVFUllfQUxJQVNJTkZPOwoKdHlwZWRlZiBzdHJ1Y3Qgc2Ftcl9hbGlh
c19pbmZvMQp7CiAgICAgICAgVU5JSERSIGhkcl9hY2N0X25hbWU7CiAgICAgICAgVU5JSERSIGhk
cl9hY2N0X2Rlc2M7CiAgICAgICAgdW5zaWduZWQgaW50IG51bV9tZW1iZXI7CiAgICAgICAgVU5J
U1RSMiB1bmlfYWNjdF9uYW1lOwogICAgICAgIFVOSVNUUjIgdW5pX2FjY3RfZGVzYzsKCn0gQUxJ
QVNfSU5GTzE7Cgp0eXBlZGVmIHN0cnVjdCBzYW1yX2FsaWFzX2luZm8zCnsKICAgICAgICBVTklI
RFIgaGRyX2FjY3RfZGVzYzsKICAgICAgICBVTklTVFIyIHVuaV9hY2N0X2Rlc2M7Cgp9IEFMSUFT
X0lORk8zOwoKCnR5cGVkZWYgc3RydWN0IGFsaWFzX2luZm9fY3RyCnsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBzd2l0Y2hfdmFsdWUxOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN3aXRjaF92YWx1
ZTI7CgogICAgICAgIHVuaW9uCiAgICAgICAgewogICAgICAgICAgICAgICAgQUxJQVNfSU5GTzEg
aW5mbzE7CiAgICAgICAgICAgICAgICBBTElBU19JTkZPMyBpbmZvMzsKCiAgICAgICAgfSBhbGlh
czsKCn0gQUxJQVNfSU5GT19DVFI7CgoKdHlwZWRlZiBzdHJ1Y3Qgcl9zYW1yX3F1ZXJ5X2FsaWFz
aW5mb19pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyOwogICAgICAgIEFMSUFTX0lORk9f
Q1RSIGN0cjsKCiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBTQU1SX1JfUVVFUllfQUxJQVNJ
TkZPOwoKCgp0eXBlZGVmIHN0cnVjdCBxX3NhbXJfc2V0X2FsaWFzX2luZm8KewogICAgICAgIFBP
TElDWV9ITkQgYWxpYXNfcG9sOwogICAgICAgIEFMSUFTX0lORk9fQ1RSIGN0cjsKCn0gU0FNUl9R
X1NFVF9BTElBU0lORk87CgoKdHlwZWRlZiBzdHJ1Y3Qgcl9zYW1yX3NldF9hbGlhc2luZm9faW5m
bwp7CiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBTQU1SX1JfU0VUX0FMSUFTSU5GTzsKCgoK
dHlwZWRlZiBzdHJ1Y3QgcV9zYW1yX3F1ZXJ5X3VzZXJncm91cF9pbmZvCnsKICAgICAgICBQT0xJ
Q1lfSE5EIHBvbDsKCn0gU0FNUl9RX1FVRVJZX1VTRVJHUk9VUFM7CgoKdHlwZWRlZiBzdHJ1Y3Qg
cl9zYW1yX3F1ZXJ5X3VzZXJncm91cF9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyXzA7
CiAgICAgICAgdW5zaWduZWQgaW50IG51bV9lbnRyaWVzOwogICAgICAgIHVuc2lnbmVkIGludCBw
dHJfMTsKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX2VudHJpZXMyOwoKICAgICAgICBET01fR0lE
ICpnaWQ7CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU0FNUl9SX1FVRVJZX1VTRVJHUk9V
UFM7CgoKdHlwZWRlZiBzdHJ1Y3Qgc2FtX3VzZXJpbmZvX2N0cl9pbmZvCnsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCBzd2l0Y2hfdmFsdWU7CgogICAgICAgIHVuaW9uCiAgICAgICAgewogICAgICAg
ICAgICAgICAgU0FNX1VTRVJfSU5GT18xMCAqaWQxMDsKICAgICAgICAgICAgICAgIFNBTV9VU0VS
X0lORk9fMTEgKmlkMTE7CiAgICAgICAgICAgICAgICBTQU1fVVNFUl9JTkZPXzEyICppZDEyOwog
ICAgICAgICAgICAgICAgU0FNX1VTRVJfSU5GT18yMCAqaWQyMDsKICAgICAgICAgICAgICAgIFNB
TV9VU0VSX0lORk9fMjEgKmlkMjE7CiAgICAgICAgICAgICAgICBTQU1fVVNFUl9JTkZPXzIzICpp
ZDIzOwogICAgICAgICAgICAgICAgU0FNX1VTRVJfSU5GT18yNCAqaWQyNDsKICAgICAgICAgICAg
ICAgIFNBTV9VU0VSX0lORk9fMjUgKmlkMjU7CiAgICAgICAgICAgICAgICB2b2lkKiBpZDsKCiAg
ICAgICAgfSBpbmZvOwoKfSBTQU1fVVNFUklORk9fQ1RSOwoKCgp0eXBlZGVmIHN0cnVjdCBxX3Nh
bXJfc2V0X3VzZXJfaW5mbzIKewogICAgICAgIFBPTElDWV9ITkQgcG9sOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHN3aXRjaF92YWx1ZTsKCiAgICAgICAgU0FNX1VTRVJJTkZPX0NUUiAqY3RyOwoK
fSBTQU1SX1FfU0VUX1VTRVJJTkZPMjsKCgp0eXBlZGVmIHN0cnVjdCByX3NhbXJfc2V0X3VzZXJf
aW5mbzIKewogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU0FNUl9SX1NFVF9VU0VSSU5GTzI7
CgoKdHlwZWRlZiBzdHJ1Y3QgcV9zYW1yX3NldF91c2VyX2luZm8KewogICAgICAgIFBPTElDWV9I
TkQgcG9sOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN3aXRjaF92YWx1ZTsKICAgICAgICBTQU1f
VVNFUklORk9fQ1RSICpjdHI7Cgp9IFNBTVJfUV9TRVRfVVNFUklORk87CgoKdHlwZWRlZiBzdHJ1
Y3Qgcl9zYW1yX3NldF91c2VyX2luZm8KewogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU0FN
Ul9SX1NFVF9VU0VSSU5GTzsKCgoKdHlwZWRlZiBzdHJ1Y3QgcV9zYW1yX3F1ZXJ5X3VzZXJfaW5m
bwp7CiAgICAgICAgUE9MSUNZX0hORCBwb2w7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3dpdGNo
X3ZhbHVlOwoKfSBTQU1SX1FfUVVFUllfVVNFUklORk87CgoKdHlwZWRlZiBzdHJ1Y3Qgcl9zYW1y
X3F1ZXJ5X3VzZXJfaW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cjsKICAgICAgICBTQU1f
VVNFUklORk9fQ1RSICpjdHI7CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU0FNUl9SX1FV
RVJZX1VTRVJJTkZPOwojIDEzMDkgImluY2x1ZGUvcnBjX3NhbXIuaCIKdHlwZWRlZiBzdHJ1Y3Qg
cV9zYW1yX3F1ZXJ5X3VzZXJhbGlhc2VzX2luZm8KewogICAgICAgIFBPTElDWV9ITkQgcG9sOwoK
ICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX3NpZHMxOwogICAgICAgIHVuc2lnbmVkIGludCBwdHI7
CiAgICAgICAgdW5zaWduZWQgaW50IG51bV9zaWRzMjsKCiAgICAgICAgdW5zaWduZWQgaW50ICpw
dHJfc2lkOwogICAgICAgIERPTV9TSUQyICpzaWQgOwoKfSBTQU1SX1FfUVVFUllfVVNFUkFMSUFT
RVM7CgoKCnR5cGVkZWYgc3RydWN0IHJfc2Ftcl9xdWVyeV91c2VyYWxpYXNlc19pbmZvCnsKICAg
ICAgICB1bnNpZ25lZCBpbnQgbnVtX2VudHJpZXM7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cjsK
CiAgICAgICAgdW5zaWduZWQgaW50IG51bV9lbnRyaWVzMjsKICAgICAgICB1bnNpZ25lZCBpbnQg
KnJpZDsKCiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBTQU1SX1JfUVVFUllfVVNFUkFMSUFT
RVM7CgoKCgoKCnR5cGVkZWYgc3RydWN0IHFfc2Ftcl9sb29rdXBfbmFtZXNfaW5mbwp7CiAgICAg
ICAgUE9MSUNZX0hORCBwb2w7CgogICAgICAgIHVuc2lnbmVkIGludCBudW1fbmFtZXMxOwogICAg
ICAgIHVuc2lnbmVkIGludCBmbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyOwogICAgICAg
IHVuc2lnbmVkIGludCBudW1fbmFtZXMyOwoKICAgICAgICBVTklIRFIgKmhkcl9uYW1lOwogICAg
ICAgIFVOSVNUUjIgKnVuaV9uYW1lOwoKfSBTQU1SX1FfTE9PS1VQX05BTUVTOwoKCgp0eXBlZGVm
IHN0cnVjdCByX3NhbXJfbG9va3VwX25hbWVzX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBu
dW1fcmlkczE7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9yaWRzOwogICAgICAgIHVuc2lnbmVk
IGludCBudW1fcmlkczI7CgogICAgICAgIHVuc2lnbmVkIGludCAqcmlkczsKCiAgICAgICAgdW5z
aWduZWQgaW50IG51bV90eXBlczE7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl90eXBlczsKICAg
ICAgICB1bnNpZ25lZCBpbnQgbnVtX3R5cGVzMjsKCiAgICAgICAgdW5zaWduZWQgaW50ICp0eXBl
czsKCiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBTQU1SX1JfTE9PS1VQX05BTUVTOwojIDEz
ODIgImluY2x1ZGUvcnBjX3NhbXIuaCIKdHlwZWRlZiBzdHJ1Y3QgcV9zYW1yX2xvb2t1cF9yaWRz
X2luZm8KewogICAgICAgIFBPTElDWV9ITkQgcG9sOwoKICAgICAgICB1bnNpZ25lZCBpbnQgbnVt
X3JpZHMxOwogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQg
cHRyOwogICAgICAgIHVuc2lnbmVkIGludCBudW1fcmlkczI7CgogICAgICAgIHVuc2lnbmVkIGlu
dCAqcmlkOwoKfSBTQU1SX1FfTE9PS1VQX1JJRFM7CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCByX3Nh
bXJfbG9va3VwX3JpZHNfaW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IG51bV9uYW1lczE7CiAg
ICAgICAgdW5zaWduZWQgaW50IHB0cl9uYW1lczsKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX25h
bWVzMjsKCiAgICAgICAgVU5JSERSICpoZHJfbmFtZTsKICAgICAgICBVTklTVFIyICp1bmlfbmFt
ZTsKCiAgICAgICAgdW5zaWduZWQgaW50IG51bV90eXBlczE7CiAgICAgICAgdW5zaWduZWQgaW50
IHB0cl90eXBlczsKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX3R5cGVzMjsKCiAgICAgICAgdW5z
aWduZWQgaW50ICp0eXBlOwoKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNBTVJfUl9MT09L
VVBfUklEUzsKCgoKdHlwZWRlZiBzdHJ1Y3QgcV9zYW1yX29wZW5fdXNlcl9pbmZvCnsKICAgICAg
ICBQT0xJQ1lfSE5EIGRvbWFpbl9wb2w7CiAgICAgICAgdW5zaWduZWQgaW50IGFjY2Vzc19tYXNr
OwogICAgICAgIHVuc2lnbmVkIGludCB1c2VyX3JpZDsKCn0gU0FNUl9RX09QRU5fVVNFUjsKCgoK
dHlwZWRlZiBzdHJ1Y3Qgcl9zYW1yX29wZW5fdXNlcl9pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5E
IHVzZXJfcG9sOwogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU0FNUl9SX09QRU5fVVNFUjsK
CgoKdHlwZWRlZiBzdHJ1Y3QgcV9zYW1yX2NyZWF0ZV91c2VyX2luZm8KewogICAgICAgIFBPTElD
WV9ITkQgZG9tYWluX3BvbDsKCiAgICAgICAgVU5JSERSIGhkcl9uYW1lOwogICAgICAgIFVOSVNU
UjIgdW5pX25hbWU7CgogICAgICAgIHVuc2lnbmVkIGludCBhY2JfaW5mbzsKICAgICAgICB1bnNp
Z25lZCBpbnQgYWNjZXNzX21hc2s7Cgp9IFNBTVJfUV9DUkVBVEVfVVNFUjsKCgoKdHlwZWRlZiBz
dHJ1Y3Qgcl9zYW1yX2NyZWF0ZV91c2VyX2luZm8KewogICAgICAgIFBPTElDWV9ITkQgdXNlcl9w
b2w7CgogICAgICAgIHVuc2lnbmVkIGludCB1bmtub3duXzA7CiAgICAgICAgdW5zaWduZWQgaW50
IHVzZXJfcmlkOwogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU0FNUl9SX0NSRUFURV9VU0VS
OwoKCgp0eXBlZGVmIHN0cnVjdCBxX3NhbXJfZGVsZXRlX2RvbV91c2VyX2luZm8KewogICAgUE9M
SUNZX0hORCB1c2VyX3BvbDsKCn0gU0FNUl9RX0RFTEVURV9ET01fVVNFUjsKCgoKdHlwZWRlZiBz
dHJ1Y3Qgcl9zYW1yX2RlbGV0ZV9kb21fdXNlcl9pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIHBv
bDsKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNBTVJfUl9ERUxFVEVfRE9NX1VTRVI7CgoK
CnR5cGVkZWYgc3RydWN0IHFfc2Ftcl9xdWVyeV9ncm91cG1lbV9pbmZvCnsKICAgICAgICBQT0xJ
Q1lfSE5EIGdyb3VwX3BvbDsKCn0gU0FNUl9RX1FVRVJZX0dST1VQTUVNOwoKCgp0eXBlZGVmIHN0
cnVjdCByX3NhbXJfcXVlcnlfZ3JvdXBtZW1faW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IHB0
cjsKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX2VudHJpZXM7CgogICAgICAgIHVuc2lnbmVkIGlu
dCBwdHJfcmlkczsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX2F0dHJzOwoKICAgICAgICB1bnNp
Z25lZCBpbnQgbnVtX3JpZHM7CiAgICAgICAgdW5zaWduZWQgaW50ICpyaWQ7CgogICAgICAgIHVu
c2lnbmVkIGludCBudW1fYXR0cnM7CiAgICAgICAgdW5zaWduZWQgaW50ICphdHRyOwoKICAgICAg
ICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNBTVJfUl9RVUVSWV9HUk9VUE1FTTsKCgoKdHlwZWRlZiBz
dHJ1Y3QgcV9zYW1yX2RlbF9ncm91cF9tZW1faW5mbwp7CiAgICAgICAgUE9MSUNZX0hORCBwb2w7
CiAgICAgICAgdW5zaWduZWQgaW50IHJpZDsKCn0gU0FNUl9RX0RFTF9HUk9VUE1FTTsKCgoKdHlw
ZWRlZiBzdHJ1Y3Qgcl9zYW1yX2RlbF9ncm91cF9tZW1faW5mbwp7CiAgICAgICAgTlRTVEFUVVMg
c3RhdHVzOwoKfSBTQU1SX1JfREVMX0dST1VQTUVNOwoKCgp0eXBlZGVmIHN0cnVjdCBxX3NhbXJf
YWRkX2dyb3VwX21lbV9pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIHBvbDsKCiAgICAgICAgdW5z
aWduZWQgaW50IHJpZDsKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjsKCn0gU0FNUl9RX0FE
RF9HUk9VUE1FTTsKCgoKdHlwZWRlZiBzdHJ1Y3Qgcl9zYW1yX2FkZF9ncm91cF9tZW1faW5mbwp7
CiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBTQU1SX1JfQUREX0dST1VQTUVNOwoKCgp0eXBl
ZGVmIHN0cnVjdCBxX3NhbXJfb3Blbl9ncm91cF9pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIGRv
bWFpbl9wb2w7CiAgICAgICAgdW5zaWduZWQgaW50IGFjY2Vzc19tYXNrOwogICAgICAgIHVuc2ln
bmVkIGludCByaWRfZ3JvdXA7Cgp9IFNBTVJfUV9PUEVOX0dST1VQOwoKCgp0eXBlZGVmIHN0cnVj
dCByX3NhbXJfb3Blbl9ncm91cF9pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIHBvbDsKICAgICAg
ICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNBTVJfUl9PUEVOX0dST1VQOwoKCgp0eXBlZGVmIHN0cnVj
dCBxX3NhbXJfcXVlcnlfYWxpYXNtZW1faW5mbwp7CiAgICAgICAgUE9MSUNZX0hORCBhbGlhc19w
b2w7Cgp9IFNBTVJfUV9RVUVSWV9BTElBU01FTTsKCgoKdHlwZWRlZiBzdHJ1Y3Qgcl9zYW1yX3F1
ZXJ5X2FsaWFzbWVtX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBudW1fc2lkczsKICAgICAg
ICB1bnNpZ25lZCBpbnQgcHRyOwogICAgICAgIHVuc2lnbmVkIGludCBudW1fc2lkczE7CgogICAg
ICAgIERPTV9TSUQyICpzaWQ7CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU0FNUl9SX1FV
RVJZX0FMSUFTTUVNOwoKCgp0eXBlZGVmIHN0cnVjdCBxX3NhbXJfYWRkX2FsaWFzX21lbV9pbmZv
CnsKICAgICAgICBQT0xJQ1lfSE5EIGFsaWFzX3BvbDsKCiAgICAgICAgRE9NX1NJRDIgc2lkOwoK
fSBTQU1SX1FfQUREX0FMSUFTTUVNOwoKCgp0eXBlZGVmIHN0cnVjdCByX3NhbXJfYWRkX2FsaWFz
X21lbV9pbmZvCnsKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNBTVJfUl9BRERfQUxJQVNN
RU07CgoKCnR5cGVkZWYgc3RydWN0IHFfc2Ftcl9kZWxfYWxpYXNfbWVtX2luZm8KewogICAgICAg
IFBPTElDWV9ITkQgYWxpYXNfcG9sOwoKICAgICAgICBET01fU0lEMiBzaWQ7Cgp9IFNBTVJfUV9E
RUxfQUxJQVNNRU07CgoKCnR5cGVkZWYgc3RydWN0IHJfc2Ftcl9kZWxfYWxpYXNfbWVtX2luZm8K
ewogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU0FNUl9SX0RFTF9BTElBU01FTTsKCgoKCnR5
cGVkZWYgc3RydWN0IHFfc2Ftcl9vcGVuX2FsaWFzX2luZm8KewogICAgICAgIFBPTElDWV9ITkQg
ZG9tX3BvbDsKCiAgICAgICAgdW5zaWduZWQgaW50IGFjY2Vzc19tYXNrOwogICAgICAgIHVuc2ln
bmVkIGludCByaWRfYWxpYXM7Cgp9IFNBTVJfUV9PUEVOX0FMSUFTOwoKCgp0eXBlZGVmIHN0cnVj
dCByX3NhbXJfb3Blbl9hbGlhc19pbmZvCnsKICAgICAgICBQT0xJQ1lfSE5EIHBvbDsKICAgICAg
ICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNBTVJfUl9PUEVOX0FMSUFTOwoKCgp0eXBlZGVmIHN0cnVj
dCBxX3NhbXJfY29ubmVjdF9hbm9uX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBwdHI7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgdW5rbm93bl8wOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHVu
a25vd25fMTsKICAgICAgICB1bnNpZ25lZCBpbnQgYWNjZXNzX21hc2s7Cgp9IFNBTVJfUV9DT05O
RUNUX0FOT047CgoKdHlwZWRlZiBzdHJ1Y3Qgcl9zYW1yX2Nvbm5lY3RfYW5vbl9pbmZvCnsKICAg
ICAgICBQT0xJQ1lfSE5EIGNvbm5lY3RfcG9sOwogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0g
U0FNUl9SX0NPTk5FQ1RfQU5PTjsKCgp0eXBlZGVmIHN0cnVjdCBxX3NhbXJfY29ubmVjdF9pbmZv
CnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3Nydl9uYW1lOwogICAgICAgIFVOSVNUUjIgdW5p
X3Nydl9uYW1lOwoKICAgICAgICB1bnNpZ25lZCBpbnQgYWNjZXNzX21hc2s7Cgp9IFNBTVJfUV9D
T05ORUNUOwoKCgp0eXBlZGVmIHN0cnVjdCByX3NhbXJfY29ubmVjdF9pbmZvCnsKICAgIFBPTElD
WV9ITkQgY29ubmVjdF9wb2w7CiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBTQU1SX1JfQ09O
TkVDVDsKCgp0eXBlZGVmIHN0cnVjdCBxX3NhbXJfZ2V0X2RvbV9wd2luZm8KewogICAgICAgIHVu
c2lnbmVkIGludCBwdHI7CiAgICAgICAgVU5JSERSIGhkcl9zcnZfbmFtZTsKICAgICAgICBVTklT
VFIyIHVuaV9zcnZfbmFtZTsKCn0gU0FNUl9RX0dFVF9ET01fUFdJTkZPOwoKCnR5cGVkZWYgc3Ry
dWN0IHJfc2Ftcl9nZXRfZG9tX3B3aW5mbwp7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdW5rXzA7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdW5rXzE7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdW5r
XzI7CiAgICAgICAgTlRTVEFUVVMgc3RhdHVzOwoKfSBTQU1SX1JfR0VUX0RPTV9QV0lORk87CgoK
dHlwZWRlZiBzdHJ1Y3QgZW5jX3Bhc3N3ZF9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRy
OwogICAgICAgIHVuc2lnbmVkIGNoYXIgcGFzc1s1MTZdOwoKfSBTQU1SX0VOQ19QQVNTV0Q7CgoK
dHlwZWRlZiBzdHJ1Y3QgZW5jX2hhc2hfaW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cjsK
ICAgICAgICB1bnNpZ25lZCBjaGFyIGhhc2hbMTZdOwoKfSBTQU1SX0VOQ19IQVNIOwoKCnR5cGVk
ZWYgc3RydWN0IHFfc2Ftcl9jaGdwYXNzd2RfdXNlcl9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBp
bnQgcHRyXzA7CgogICAgICAgIFVOSUhEUiBoZHJfZGVzdF9ob3N0OwogICAgICAgIFVOSVNUUjIg
dW5pX2Rlc3RfaG9zdDsKCiAgICAgICAgVU5JSERSIGhkcl91c2VyX25hbWU7CiAgICAgICAgVU5J
U1RSMiB1bmlfdXNlcl9uYW1lOwoKICAgICAgICBTQU1SX0VOQ19QQVNTV0QgbnRfbmV3cGFzczsK
ICAgICAgICBTQU1SX0VOQ19IQVNIIG50X29sZGhhc2g7CgogICAgICAgIHVuc2lnbmVkIGludCB1
bmtub3duOwoKICAgICAgICBTQU1SX0VOQ19QQVNTV0QgbG1fbmV3cGFzczsKICAgICAgICBTQU1S
X0VOQ19IQVNIIGxtX29sZGhhc2g7Cgp9IFNBTVJfUV9DSEdQQVNTV0RfVVNFUjsKCgp0eXBlZGVm
IHN0cnVjdCByX3NhbXJfY2hncGFzc3dkX3VzZXJfaW5mbwp7CiAgICAgICAgTlRTVEFUVVMgc3Rh
dHVzOwoKfSBTQU1SX1JfQ0hHUEFTU1dEX1VTRVI7CgoKCnR5cGVkZWYgc3RydWN0IHFfc2Ftcl91
bmtub3duXzJkX2luZm8KewogICAgICAgIFBPTElDWV9ITkQgZG9tX3BvbDsKICAgICAgICBET01f
U0lEMiBzaWQ7Cgp9IFNBTVJfUV9VTktOT1dOXzJEOwoKCgp0eXBlZGVmIHN0cnVjdCByX3NhbXJf
dW5rbm93bl8yZF9pbmZvCnsKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNBTVJfUl9VTktO
T1dOXzJEOwojIDE3NjkgImluY2x1ZGUvcnBjX3NhbXIuaCIKdHlwZWRlZiBzdHJ1Y3Qgc2lkX2lu
Zm9fMwp7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbGVuOwoKCiAgICAgICAgRE9NX1NJRCBzaWQ7
Cgp9IERPTV9TSUQzOwoKCnR5cGVkZWYgc3RydWN0IHFfc2Ftcl91bmtub3duXzJlX2luZm8Kewog
ICAgICAgIFBPTElDWV9ITkQgZG9tYWluX3BvbDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzd2l0
Y2hfdmFsdWU7Cgp9IFNBTVJfUV9VTktOT1dOXzJFOwoKCnR5cGVkZWYgc3RydWN0IHJfc2Ftcl91
bmtub3duXzJlX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBwdHJfMDsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCBzd2l0Y2hfdmFsdWU7CiAgICAgICAgU0FNX1VOS19DVFIgKmN0cjsKICAgICAg
ICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNBTVJfUl9VTktOT1dOXzJFOwoKCnR5cGVkZWYgc3RydWN0
IHFfc2Ftcl9zZXRfZG9tYWluX2luZm8KewogICAgICAgIFBPTElDWV9ITkQgZG9tYWluX3BvbDsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBzd2l0Y2hfdmFsdWUwOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IHN3aXRjaF92YWx1ZTsKICAgICAgICBTQU1fVU5LX0NUUiAqY3RyOwoKfSBTQU1SX1FfU0VU
X0RPTUFJTl9JTkZPOwoKCnR5cGVkZWYgc3RydWN0IHJfc2Ftcl9zZXRfZG9tYWluX2luZm8Kewog
ICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU0FNUl9SX1NFVF9ET01BSU5fSU5GTzsKIyAyODIg
ImluY2x1ZGUvbnRkb21haW4uaCIgMgojIDEgImluY2x1ZGUvcnBjX3NydnN2Yy5oIiAxCiMgNDgg
ImluY2x1ZGUvcnBjX3NydnN2Yy5oIgp0eXBlZGVmIHN0cnVjdCBkaXNrX2luZm8gewogICAgICAg
IHVuc2lnbmVkIGludCB1bmtub3duOwogICAgICAgIFVOSVNUUjMgZGlza19uYW1lOwp9IERJU0tf
SU5GTzsKCnR5cGVkZWYgc3RydWN0IGRpc2tfZW51bV9jb250YWluZXIgewogICAgICAgIHVuc2ln
bmVkIGludCBsZXZlbDsKICAgICAgICB1bnNpZ25lZCBpbnQgZW50cmllc19yZWFkOwogICAgICAg
IHVuc2lnbmVkIGludCB1bmtub3duOwogICAgICAgIHVuc2lnbmVkIGludCBkaXNrX2luZm9fcHRy
OwogICAgICAgIERJU0tfSU5GTyBkaXNrX2luZm9bMTVdOwp9IERJU0tfRU5VTV9DT05UQUlORVI7
Cgp0eXBlZGVmIHN0cnVjdCBuZXRfc3J2X2Rpc2tfZW51bSB7CiAgICAgICAgdW5zaWduZWQgaW50
IHB0cl9zcnZfbmFtZTsKICAgICAgICBVTklTVFIyIHVuaV9zcnZfbmFtZTsKCiAgICAgICAgRElT
S19FTlVNX0NPTlRBSU5FUiBkaXNrX2VudW1fY3RyOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHJl
ZmVycmVkX2xlbjsKICAgICAgICB1bnNpZ25lZCBpbnQgdG90YWxfZW50cmllczsKICAgICAgICBF
TlVNX0hORCBlbnVtX2huZDsKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cn0gU1JWX1FfTkVUX0RJ
U0tfRU5VTSwgU1JWX1JfTkVUX0RJU0tfRU5VTTsKCnR5cGVkZWYgc3RydWN0IG5ldF9uYW1lX3Zh
bGlkYXRlIHsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3Nydl9uYW1lOwogICAgICAgIFVOSVNU
UjIgdW5pX3Nydl9uYW1lOwogICAgICAgIFVOSVNUUjIgdW5pX25hbWU7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwogICAgICAgIE5UU1RBVFVT
IHN0YXR1czsKfSBTUlZfUV9ORVRfTkFNRV9WQUxJREFURSwgU1JWX1JfTkVUX05BTUVfVkFMSURB
VEU7CgoKdHlwZWRlZiBzdHJ1Y3QgcHRyX3Nlc3NfaW5mbzAKewogICAgICAgIHVuc2lnbmVkIGlu
dCBwdHJfbmFtZTsKCn0gU0VTU19JTkZPXzA7CgoKdHlwZWRlZiBzdHJ1Y3Qgc3RyX3Nlc3NfaW5m
bzAKewogICAgICAgIFVOSVNUUjIgdW5pX25hbWU7Cgp9IFNFU1NfSU5GT18wX1NUUjsKCgoKCgoK
dHlwZWRlZiBzdHJ1Y3Qgc3J2X3Nlc3NfaW5mb18wX2luZm8KewogICAgICAgIHVuc2lnbmVkIGlu
dCBudW1fZW50cmllc19yZWFkOwogICAgICAgIHVuc2lnbmVkIGludCBwdHJfc2Vzc19pbmZvOwog
ICAgICAgIHVuc2lnbmVkIGludCBudW1fZW50cmllc19yZWFkMjsKCiAgICAgICAgU0VTU19JTkZP
XzAgaW5mb18wIFszMl07CiAgICAgICAgU0VTU19JTkZPXzBfU1RSIGluZm9fMF9zdHJbMzJdOwoK
fSBTUlZfU0VTU19JTkZPXzA7CgoKdHlwZWRlZiBzdHJ1Y3QgcHRyX3Nlc3NfaW5mbzEKewogICAg
ICAgIHVuc2lnbmVkIGludCBwdHJfbmFtZTsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3VzZXI7
CgogICAgICAgIHVuc2lnbmVkIGludCBudW1fb3BlbnM7CiAgICAgICAgdW5zaWduZWQgaW50IG9w
ZW5fdGltZTsKICAgICAgICB1bnNpZ25lZCBpbnQgaWRsZV90aW1lOwogICAgICAgIHVuc2lnbmVk
IGludCB1c2VyX2ZsYWdzOwoKfSBTRVNTX0lORk9fMTsKCgp0eXBlZGVmIHN0cnVjdCBzdHJfc2Vz
c19pbmZvMQp7CiAgICAgICAgVU5JU1RSMiB1bmlfbmFtZTsKICAgICAgICBVTklTVFIyIHVuaV91
c2VyOwoKfSBTRVNTX0lORk9fMV9TVFI7CgoKdHlwZWRlZiBzdHJ1Y3Qgc3J2X3Nlc3NfaW5mb18x
X2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBudW1fZW50cmllc19yZWFkOwogICAgICAgIHVu
c2lnbmVkIGludCBwdHJfc2Vzc19pbmZvOwogICAgICAgIHVuc2lnbmVkIGludCBudW1fZW50cmll
c19yZWFkMjsKCiAgICAgICAgU0VTU19JTkZPXzEgaW5mb18xIFszMl07CiAgICAgICAgU0VTU19J
TkZPXzFfU1RSIGluZm9fMV9zdHJbMzJdOwoKfSBTUlZfU0VTU19JTkZPXzE7CgoKdHlwZWRlZiBz
dHJ1Y3Qgc3J2X3Nlc3NfaW5mb19jdHJfaW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IHN3aXRj
aF92YWx1ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3Nlc3NfY3RyOwogICAgICAgIHVuaW9u
CiAgICB7CiAgICAgICAgICAgICAgICBTUlZfU0VTU19JTkZPXzAgaW5mbzA7CiAgICAgICAgICAg
ICAgICBTUlZfU0VTU19JTkZPXzEgaW5mbzE7CgogICAgfSBzZXNzOwoKfSBTUlZfU0VTU19JTkZP
X0NUUjsKCgoKdHlwZWRlZiBzdHJ1Y3QgcV9uZXRfc2Vzc19lbnVtX2luZm8KewogICAgICAgIHVu
c2lnbmVkIGludCBwdHJfc3J2X25hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfc3J2X25hbWU7Cgog
ICAgICAgIHVuc2lnbmVkIGludCBwdHJfcXVhbF9uYW1lOwogICAgICAgIFVOSVNUUjIgdW5pX3F1
YWxfbmFtZTsKCiAgICAgICAgdW5zaWduZWQgaW50IHNlc3NfbGV2ZWw7CgogICAgICAgIFNSVl9T
RVNTX0lORk9fQ1RSICpjdHI7CgogICAgICAgIHVuc2lnbmVkIGludCBwcmVmZXJyZWRfbGVuOwog
ICAgICAgIEVOVU1fSE5EIGVudW1faG5kOwoKfSBTUlZfUV9ORVRfU0VTU19FTlVNOwoKCnR5cGVk
ZWYgc3RydWN0IHJfbmV0X3Nlc3NfZW51bV9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgc2Vz
c19sZXZlbDsKCiAgICAgICAgU1JWX1NFU1NfSU5GT19DVFIgKmN0cjsKCiAgICAgICAgdW5zaWdu
ZWQgaW50IHRvdGFsX2VudHJpZXM7CiAgICAgICAgRU5VTV9ITkQgZW51bV9obmQ7CgogICAgICAg
IE5UU1RBVFVTIHN0YXR1czsKCn0gU1JWX1JfTkVUX1NFU1NfRU5VTTsKCgp0eXBlZGVmIHN0cnVj
dCBwdHJfY29ubl9pbmZvMAp7CiAgICAgICAgdW5zaWduZWQgaW50IGlkOwoKfSBDT05OX0lORk9f
MDsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3Qgc3J2X2Nvbm5faW5mb18wX2luZm8KewogICAgICAgIHVu
c2lnbmVkIGludCBudW1fZW50cmllc19yZWFkOwogICAgICAgIHVuc2lnbmVkIGludCBwdHJfY29u
bl9pbmZvOwogICAgICAgIHVuc2lnbmVkIGludCBudW1fZW50cmllc19yZWFkMjsKCiAgICAgICAg
Q09OTl9JTkZPXzAgaW5mb18wIFszMl07Cgp9IFNSVl9DT05OX0lORk9fMDsKCgp0eXBlZGVmIHN0
cnVjdCBwdHJfY29ubl9pbmZvMQp7CiAgICAgICAgdW5zaWduZWQgaW50IGlkOwogICAgICAgIHVu
c2lnbmVkIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGludCBudW1fb3BlbnM7CiAgICAgICAg
dW5zaWduZWQgaW50IG51bV91c2VyczsKICAgICAgICB1bnNpZ25lZCBpbnQgb3Blbl90aW1lOwoK
ICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3Vzcl9uYW1lOwogICAgICAgIHVuc2lnbmVkIGludCBw
dHJfbmV0X25hbWU7Cgp9IENPTk5fSU5GT18xOwoKCnR5cGVkZWYgc3RydWN0IHN0cl9jb25uX2lu
Zm8xCnsKICAgICAgICBVTklTVFIyIHVuaV91c3JfbmFtZTsKICAgICAgICBVTklTVFIyIHVuaV9u
ZXRfbmFtZTsKCn0gQ09OTl9JTkZPXzFfU1RSOwoKCnR5cGVkZWYgc3RydWN0IHNydl9jb25uX2lu
Zm9fMV9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX2VudHJpZXNfcmVhZDsKICAgICAg
ICB1bnNpZ25lZCBpbnQgcHRyX2Nvbm5faW5mbzsKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX2Vu
dHJpZXNfcmVhZDI7CgogICAgICAgIENPTk5fSU5GT18xIGluZm9fMSBbMzJdOwogICAgICAgIENP
Tk5fSU5GT18xX1NUUiBpbmZvXzFfc3RyWzMyXTsKCn0gU1JWX0NPTk5fSU5GT18xOwoKCnR5cGVk
ZWYgc3RydWN0IHNydl9jb25uX2luZm9fY3RyX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBz
d2l0Y2hfdmFsdWU7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9jb25uX2N0cjsKICAgICAgICB1
bmlvbgogICAgewogICAgICAgICAgICAgICAgU1JWX0NPTk5fSU5GT18wIGluZm8wOwogICAgICAg
ICAgICAgICAgU1JWX0NPTk5fSU5GT18xIGluZm8xOwoKICAgIH0gY29ubjsKCn0gU1JWX0NPTk5f
SU5GT19DVFI7CgoKCnR5cGVkZWYgc3RydWN0IHFfbmV0X2Nvbm5fZW51bV9pbmZvCnsKICAgICAg
ICB1bnNpZ25lZCBpbnQgcHRyX3Nydl9uYW1lOwogICAgICAgIFVOSVNUUjIgdW5pX3Nydl9uYW1l
OwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3F1YWxfbmFtZTsKICAgICAgICBVTklTVFIyIHVu
aV9xdWFsX25hbWU7CgogICAgICAgIHVuc2lnbmVkIGludCBjb25uX2xldmVsOwoKICAgICAgICBT
UlZfQ09OTl9JTkZPX0NUUiAqY3RyOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHJlZmVycmVkX2xl
bjsKICAgICAgICBFTlVNX0hORCBlbnVtX2huZDsKCn0gU1JWX1FfTkVUX0NPTk5fRU5VTTsKCgp0
eXBlZGVmIHN0cnVjdCByX25ldF9jb25uX2VudW1faW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50
IGNvbm5fbGV2ZWw7CgogICAgICAgIFNSVl9DT05OX0lORk9fQ1RSICpjdHI7CgogICAgICAgIHVu
c2lnbmVkIGludCB0b3RhbF9lbnRyaWVzOwogICAgICAgIEVOVU1fSE5EIGVudW1faG5kOwoKICAg
ICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNSVl9SX05FVF9DT05OX0VOVU07CgoKdHlwZWRlZiBz
dHJ1Y3QgcHRyX3NoYXJlX2luZm8xCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX25ldG5hbWU7
CiAgICAgICAgdW5zaWduZWQgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9yZW1h
cms7Cgp9IFNIX0lORk9fMTsKCgp0eXBlZGVmIHN0cnVjdCBzdHJfc2hhcmVfaW5mbzEKewogICAg
ICAgIFVOSVNUUjIgdW5pX25ldG5hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfcmVtYXJrOwoKfSBT
SF9JTkZPXzFfU1RSOwoKCnR5cGVkZWYgc3RydWN0IHNoYXJlX2luZm9fMV9pbmZvCnsKICAgICAg
ICBTSF9JTkZPXzEgaW5mb18xOwogICAgICAgIFNIX0lORk9fMV9TVFIgaW5mb18xX3N0cjsKCn0g
U1JWX1NIQVJFX0lORk9fMTsKCgp0eXBlZGVmIHN0cnVjdCBwdHJfc2hhcmVfaW5mbzIKewogICAg
ICAgIHVuc2lnbmVkIGludCBwdHJfbmV0bmFtZTsKICAgICAgICB1bnNpZ25lZCBpbnQgdHlwZTsK
ICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3JlbWFyazsKICAgICAgICB1bnNpZ25lZCBpbnQgcGVy
bXM7CiAgICAgICAgdW5zaWduZWQgaW50IG1heF91c2VzOwogICAgICAgIHVuc2lnbmVkIGludCBu
dW1fdXNlczsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3BhdGg7CiAgICAgICAgdW5zaWduZWQg
aW50IHB0cl9wYXNzd2Q7Cgp9IFNIX0lORk9fMjsKCgp0eXBlZGVmIHN0cnVjdCBzdHJfc2hhcmVf
aW5mbzIKewogICAgICAgIFVOSVNUUjIgdW5pX25ldG5hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlf
cmVtYXJrOwogICAgICAgIFVOSVNUUjIgdW5pX3BhdGg7CiAgICAgICAgVU5JU1RSMiB1bmlfcGFz
c3dkOwoKfSBTSF9JTkZPXzJfU1RSOwoKCnR5cGVkZWYgc3RydWN0IHNoYXJlX2luZm9fMl9pbmZv
CnsKICAgICAgICBTSF9JTkZPXzIgaW5mb18yOwogICAgICAgIFNIX0lORk9fMl9TVFIgaW5mb18y
X3N0cjsKCn0gU1JWX1NIQVJFX0lORk9fMjsKCgp0eXBlZGVmIHN0cnVjdCBwdHJfc2hhcmVfaW5m
bzUwMgp7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9uZXRuYW1lOwogICAgICAgIHVuc2lnbmVk
IGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGludCBwdHJfcmVtYXJrOwogICAgICAgIHVuc2ln
bmVkIGludCBwZXJtczsKICAgICAgICB1bnNpZ25lZCBpbnQgbWF4X3VzZXM7CiAgICAgICAgdW5z
aWduZWQgaW50IG51bV91c2VzOwogICAgICAgIHVuc2lnbmVkIGludCBwdHJfcGF0aDsKICAgICAg
ICB1bnNpZ25lZCBpbnQgcHRyX3Bhc3N3ZDsKICAgICAgICB1bnNpZ25lZCBpbnQgc2Rfc2l6ZTsK
ICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3NkOwoKfSBTSF9JTkZPXzUwMjsKCgp0eXBlZGVmIHN0
cnVjdCBzdHJfc2hhcmVfaW5mbzUwMgp7CiAgICAgICAgU0hfSU5GT181MDIgKnB0cnM7CgogICAg
ICAgIFVOSVNUUjIgdW5pX25ldG5hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfcmVtYXJrOwogICAg
ICAgIFVOSVNUUjIgdW5pX3BhdGg7CiAgICAgICAgVU5JU1RSMiB1bmlfcGFzc3dkOwoKICAgICAg
ICB1bnNpZ25lZCBpbnQgc2Rfc2l6ZTsKICAgICAgICBTRUNfREVTQyAqc2Q7Cgp9IFNIX0lORk9f
NTAyX1NUUjsKCgp0eXBlZGVmIHN0cnVjdCBzaGFyZV9pbmZvXzUwMl9pbmZvCnsKICAgICAgICBT
SF9JTkZPXzUwMiBpbmZvXzUwMjsKICAgICAgICBTSF9JTkZPXzUwMl9TVFIgaW5mb181MDJfc3Ry
OwoKfSBTUlZfU0hBUkVfSU5GT181MDI7CgoKdHlwZWRlZiBzdHJ1Y3Qgc2hhcmVfaW5mb18xMDA1
X2luZm8KewogIHVuc2lnbmVkIGludCBkZnNfcm9vdF9mbGFnOwp9IFNSVl9TSEFSRV9JTkZPXzEw
MDU7CgoKdHlwZWRlZiBzdHJ1Y3Qgc2hhcmVfaW5mb18xNTAxX2luZm8KewogICAgICAgIFNFQ19E
RVNDX0JVRiAqc2RiOwp9IFNSVl9TSEFSRV9JTkZPXzE1MDE7CgoKdHlwZWRlZiBzdHJ1Y3Qgc3J2
X3NoYXJlX2luZm9fY3RyX2luZm8KewogICAgICAgIHVuc2lnbmVkIGludCBpbmZvX2xldmVsOwog
ICAgICAgIHVuc2lnbmVkIGludCBzd2l0Y2hfdmFsdWU7CiAgICAgICAgdW5zaWduZWQgaW50IHB0
cl9zaGFyZV9pbmZvOwoKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX2VudHJpZXM7CiAgICAgICAg
dW5zaWduZWQgaW50IHB0cl9lbnRyaWVzOwogICAgICAgIHVuc2lnbmVkIGludCBudW1fZW50cmll
czI7CgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIFNSVl9TSEFSRV9JTkZPXzEgKmlu
Zm8xOwogICAgICAgICAgICAgICAgU1JWX1NIQVJFX0lORk9fMiAqaW5mbzI7CiAgICAgICAgICAg
ICAgICBTUlZfU0hBUkVfSU5GT181MDIgKmluZm81MDI7CiAgICAgICAgICAgICAgICB2b2lkICpp
bmZvOwoKICAgICAgICB9IHNoYXJlOwoKfSBTUlZfU0hBUkVfSU5GT19DVFI7CgoKdHlwZWRlZiBz
dHJ1Y3QgcV9uZXRfc2hhcmVfZW51bV9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3Ny
dl9uYW1lOwogICAgICAgIFVOSVNUUjIgdW5pX3Nydl9uYW1lOwoKICAgICAgICBTUlZfU0hBUkVf
SU5GT19DVFIgY3RyOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcHJlZmVycmVkX2xlbjsKCiAgICAg
ICAgRU5VTV9ITkQgZW51bV9obmQ7Cgp9IFNSVl9RX05FVF9TSEFSRV9FTlVNOwoKCgp0eXBlZGVm
IHN0cnVjdCByX25ldF9zaGFyZV9lbnVtX2luZm8KewogICAgICAgIFNSVl9TSEFSRV9JTkZPX0NU
UiBjdHI7CgogICAgICAgIHVuc2lnbmVkIGludCB0b3RhbF9lbnRyaWVzOwogICAgICAgIEVOVU1f
SE5EIGVudW1faG5kOwoKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNSVl9SX05FVF9TSEFS
RV9FTlVNOwoKCgp0eXBlZGVmIHN0cnVjdCBxX25ldF9zaGFyZV9nZXRfaW5mb19pbmZvCnsKICAg
ICAgICB1bnNpZ25lZCBpbnQgcHRyX3Nydl9uYW1lOwogICAgICAgIFVOSVNUUjIgdW5pX3Nydl9u
YW1lOwoKICAgICAgICBVTklTVFIyIHVuaV9zaGFyZV9uYW1lOwogICAgICAgIHVuc2lnbmVkIGlu
dCBpbmZvX2xldmVsOwoKfSBTUlZfUV9ORVRfU0hBUkVfR0VUX0lORk87CgoKCgp0eXBlZGVmIHN0
cnVjdCBzcnZfc2hhcmVfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgaW50IHN3aXRjaF92YWx1ZTsK
ICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3NoYXJlX2N0cjsKCiAgICAgICAgdW5pb24gewogICAg
ICAgICAgICAgICAgU1JWX1NIQVJFX0lORk9fMSBpbmZvMTsKICAgICAgICAgICAgICAgIFNSVl9T
SEFSRV9JTkZPXzIgaW5mbzI7CiAgICAgICAgICAgICAgICBTUlZfU0hBUkVfSU5GT181MDIgaW5m
bzUwMjsKICAgICAgICBTUlZfU0hBUkVfSU5GT18xMDA1IGluZm8xMDA1OwogICAgICAgIFNSVl9T
SEFSRV9JTkZPXzE1MDEgaW5mbzE1MDE7CiAgICAgICAgfSBzaGFyZTsKfSBTUlZfU0hBUkVfSU5G
TzsKCgp0eXBlZGVmIHN0cnVjdCByX25ldF9zaGFyZV9nZXRfaW5mb19pbmZvCnsKICAgICAgICBT
UlZfU0hBUkVfSU5GTyBpbmZvOwogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU1JWX1JfTkVU
X1NIQVJFX0dFVF9JTkZPOwoKCnR5cGVkZWYgc3RydWN0IHFfbmV0X3NoYXJlX3NldF9pbmZvX2lu
Zm8KewogICAgICAgIHVuc2lnbmVkIGludCBwdHJfc3J2X25hbWU7CiAgICAgICAgVU5JU1RSMiB1
bmlfc3J2X25hbWU7CgogICAgICAgIFVOSVNUUjIgdW5pX3NoYXJlX25hbWU7CiAgICAgICAgdW5z
aWduZWQgaW50IGluZm9fbGV2ZWw7CgogICAgICAgIFNSVl9TSEFSRV9JTkZPIGluZm87Cgp9IFNS
Vl9RX05FVF9TSEFSRV9TRVRfSU5GTzsKCgp0eXBlZGVmIHN0cnVjdCByX25ldF9zaGFyZV9zZXRf
aW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IHN3aXRjaF92YWx1ZTsKCiAgICAgICAgTlRTVEFU
VVMgc3RhdHVzOwoKfSBTUlZfUl9ORVRfU0hBUkVfU0VUX0lORk87CgoKdHlwZWRlZiBzdHJ1Y3Qg
cV9uZXRfc2hhcmVfYWRkCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3Nydl9uYW1lOwogICAg
ICAgIFVOSVNUUjIgdW5pX3Nydl9uYW1lOwoKICAgICAgICB1bnNpZ25lZCBpbnQgaW5mb19sZXZl
bDsKCiAgICAgICAgU1JWX1NIQVJFX0lORk8gaW5mbzsKCn0gU1JWX1FfTkVUX1NIQVJFX0FERDsK
Cgp0eXBlZGVmIHN0cnVjdCByX25ldF9zaGFyZV9hZGQKewogICAgICAgIHVuc2lnbmVkIGludCBz
d2l0Y2hfdmFsdWU7CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU1JWX1JfTkVUX1NIQVJF
X0FERDsKCgp0eXBlZGVmIHN0cnVjdCBxX25ldF9zaGFyZV9kZWwKewogICAgICAgIHVuc2lnbmVk
IGludCBwdHJfc3J2X25hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfc3J2X25hbWU7CiAgICAgICAg
VU5JU1RSMiB1bmlfc2hhcmVfbmFtZTsKCn0gU1JWX1FfTkVUX1NIQVJFX0RFTDsKCgp0eXBlZGVm
IHN0cnVjdCByX25ldF9zaGFyZV9kZWwKewogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU1JW
X1JfTkVUX1NIQVJFX0RFTDsKCgp0eXBlZGVmIHN0cnVjdCBmaWxlX2luZm8zX2luZm8KewogICAg
ICAgIHVuc2lnbmVkIGludCBpZDsKICAgICAgICB1bnNpZ25lZCBpbnQgcGVybXM7CiAgICAgICAg
dW5zaWduZWQgaW50IG51bV9sb2NrczsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3BhdGhfbmFt
ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3VzZXJfbmFtZTsKCn0gRklMRV9JTkZPXzM7CgoK
dHlwZWRlZiBzdHJ1Y3Qgc3RyX2ZpbGVfaW5mbzNfaW5mbwp7CiAgICAgICAgVU5JU1RSMiB1bmlf
cGF0aF9uYW1lOwogICAgICAgIFVOSVNUUjIgdW5pX3VzZXJfbmFtZTsKCn0gRklMRV9JTkZPXzNf
U1RSOwoKCgoKCgp0eXBlZGVmIHN0cnVjdCBzcnZfZmlsZV9pbmZvXzMKewogICAgICAgIHVuc2ln
bmVkIGludCBudW1fZW50cmllc19yZWFkOwogICAgICAgIHVuc2lnbmVkIGludCBwdHJfZmlsZV9p
bmZvOwoKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX2VudHJpZXNfcmVhZDI7CgogICAgICAgIEZJ
TEVfSU5GT18zIGluZm9fMyBbMzJdOwogICAgICAgIEZJTEVfSU5GT18zX1NUUiBpbmZvXzNfc3Ry
WzMyXTsKCn0gU1JWX0ZJTEVfSU5GT18zOwoKCnR5cGVkZWYgc3RydWN0IHNydl9maWxlX2luZm9f
M19pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgc3dpdGNoX3ZhbHVlOwogICAgICAgIHVuc2ln
bmVkIGludCBwdHJfZmlsZV9jdHI7CiAgICAgICAgdW5pb24KICAgIHsKICAgICAgICAgICAgICAg
IFNSVl9GSUxFX0lORk9fMyBpbmZvMzsKCiAgICB9IGZpbGU7Cgp9IFNSVl9GSUxFX0lORk9fQ1RS
OwoKCgp0eXBlZGVmIHN0cnVjdCBxX25ldF9maWxlX2VudW1faW5mbwp7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHB0cl9zcnZfbmFtZTsKICAgICAgICBVTklTVFIyIHVuaV9zcnZfbmFtZTsKCiAgICAg
ICAgdW5zaWduZWQgaW50IHB0cl9xdWFsX25hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfcXVhbF9u
YW1lOwoKICAgICAgICB1bnNpZ25lZCBpbnQgZmlsZV9sZXZlbDsKCiAgICAgICAgU1JWX0ZJTEVf
SU5GT19DVFIgKmN0cjsKCiAgICAgICAgdW5zaWduZWQgaW50IHByZWZlcnJlZF9sZW47CiAgICAg
ICAgRU5VTV9ITkQgZW51bV9obmQ7Cgp9IFNSVl9RX05FVF9GSUxFX0VOVU07CgoKCnR5cGVkZWYg
c3RydWN0IHJfbmV0X2ZpbGVfZW51bV9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgZmlsZV9s
ZXZlbDsKCiAgICAgICAgU1JWX0ZJTEVfSU5GT19DVFIgKmN0cjsKCiAgICAgICAgdW5zaWduZWQg
aW50IHRvdGFsX2VudHJpZXM7CiAgICAgICAgRU5VTV9ITkQgZW51bV9obmQ7CgogICAgICAgIE5U
U1RBVFVTIHN0YXR1czsKCn0gU1JWX1JfTkVUX0ZJTEVfRU5VTTsKCgp0eXBlZGVmIHN0cnVjdCBz
cnZfaW5mb18xMDBfaW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IHBsYXRmb3JtX2lkOwogICAg
ICAgIHVuc2lnbmVkIGludCBwdHJfbmFtZTsKCiAgICAgICAgVU5JU1RSMiB1bmlfbmFtZTsKCn0g
U1JWX0lORk9fMTAwOwoKCnR5cGVkZWYgc3RydWN0IHNydl9pbmZvXzEwMV9pbmZvCnsKICAgICAg
ICB1bnNpZ25lZCBpbnQgcGxhdGZvcm1faWQ7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9uYW1l
OwogICAgICAgIHVuc2lnbmVkIGludCB2ZXJfbWFqb3I7CiAgICAgICAgdW5zaWduZWQgaW50IHZl
cl9taW5vcjsKICAgICAgICB1bnNpZ25lZCBpbnQgc3J2X3R5cGU7CiAgICAgICAgdW5zaWduZWQg
aW50IHB0cl9jb21tZW50OwoKICAgICAgICBVTklTVFIyIHVuaV9uYW1lOwogICAgICAgIFVOSVNU
UjIgdW5pX2NvbW1lbnQ7Cgp9IFNSVl9JTkZPXzEwMTsKCgp0eXBlZGVmIHN0cnVjdCBzcnZfaW5m
b18xMDJfaW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IHBsYXRmb3JtX2lkOwogICAgICAgIHVu
c2lnbmVkIGludCBwdHJfbmFtZTsKICAgICAgICB1bnNpZ25lZCBpbnQgdmVyX21ham9yOwogICAg
ICAgIHVuc2lnbmVkIGludCB2ZXJfbWlub3I7CiAgICAgICAgdW5zaWduZWQgaW50IHNydl90eXBl
OwogICAgICAgIHVuc2lnbmVkIGludCBwdHJfY29tbWVudDsKICAgICAgICB1bnNpZ25lZCBpbnQg
dXNlcnM7CiAgICAgICAgdW5zaWduZWQgaW50IGRpc2M7CiAgICAgICAgdW5zaWduZWQgaW50IGhp
ZGRlbjsKICAgICAgICB1bnNpZ25lZCBpbnQgYW5ub3VuY2U7CiAgICAgICAgdW5zaWduZWQgaW50
IGFubl9kZWx0YTsKICAgICAgICB1bnNpZ25lZCBpbnQgbGljZW5zZXM7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHB0cl91c3JfcGF0aDsKCiAgICAgICAgVU5JU1RSMiB1bmlfbmFtZTsKICAgICAgICBV
TklTVFIyIHVuaV9jb21tZW50OwogICAgICAgIFVOSVNUUjIgdW5pX3Vzcl9wYXRoOwoKfSBTUlZf
SU5GT18xMDI7CgoKCnR5cGVkZWYgc3RydWN0IHNydl9pbmZvX2N0cl9pbmZvCnsKICAgICAgICB1
bnNpZ25lZCBpbnQgc3dpdGNoX3ZhbHVlOwogICAgICAgIHVuc2lnbmVkIGludCBwdHJfc3J2X2N0
cjsKICAgICAgICB1bmlvbgogICAgewogICAgICAgICAgICAgICAgU1JWX0lORk9fMTAyIHN2MTAy
OwogICAgICAgICAgICAgICAgU1JWX0lORk9fMTAxIHN2MTAxOwogICAgICAgICAgICAgICAgU1JW
X0lORk9fMTAwIHN2MTAwOwoKICAgIH0gc3J2OwoKfSBTUlZfSU5GT19DVFI7CgoKdHlwZWRlZiBz
dHJ1Y3QgcV9uZXRfc3J2X2dldF9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3Nydl9u
YW1lOwogICAgICAgIFVOSVNUUjIgdW5pX3Nydl9uYW1lOwogICAgICAgIHVuc2lnbmVkIGludCBz
d2l0Y2hfdmFsdWU7Cgp9IFNSVl9RX05FVF9TUlZfR0VUX0lORk87CgoKdHlwZWRlZiBzdHJ1Y3Qg
cl9uZXRfc3J2X2dldF9pbmZvCnsKICAgICAgICBTUlZfSU5GT19DVFIgKmN0cjsKCiAgICAgICAg
TlRTVEFUVVMgc3RhdHVzOwoKfSBTUlZfUl9ORVRfU1JWX0dFVF9JTkZPOwoKCnR5cGVkZWYgc3Ry
dWN0IHFfbmV0X3Nydl9zZXRfaW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9zcnZfbmFt
ZTsKICAgICAgICBVTklTVFIyIHVuaV9zcnZfbmFtZTsKICAgICAgICB1bnNpZ25lZCBpbnQgc3dp
dGNoX3ZhbHVlOwoKICAgICAgICBTUlZfSU5GT19DVFIgKmN0cjsKCn0gU1JWX1FfTkVUX1NSVl9T
RVRfSU5GTzsKCgoKdHlwZWRlZiBzdHJ1Y3Qgcl9uZXRfc3J2X3NldF9pbmZvCnsKICAgICAgICB1
bnNpZ25lZCBpbnQgc3dpdGNoX3ZhbHVlOwoKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cgp9IFNS
Vl9SX05FVF9TUlZfU0VUX0lORk87CgoKdHlwZWRlZiBzdHJ1Y3QgcV9uZXRfcmVtb3RlX3RvZAp7
CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9zcnZfbmFtZTsKICAgICAgICBVTklTVFIyIHVuaV9z
cnZfbmFtZTsKCn0gU1JWX1FfTkVUX1JFTU9URV9UT0Q7CgoKdHlwZWRlZiBzdHJ1Y3QgdGltZV9v
Zl9kYXlfaW5mbwp7CiAgICAgICAgdW5zaWduZWQgaW50IGVsYXBzZWR0OwogICAgICAgIHVuc2ln
bmVkIGludCBtc2VjczsKICAgICAgICB1bnNpZ25lZCBpbnQgaG91cnM7CiAgICAgICAgdW5zaWdu
ZWQgaW50IG1pbnM7CiAgICAgICAgdW5zaWduZWQgaW50IHNlY3M7CiAgICAgICAgdW5zaWduZWQg
aW50IGh1bmRzOwogICAgICAgIHVuc2lnbmVkIGludCB6b25lOwogICAgICAgIHVuc2lnbmVkIGlu
dCB0aW50ZXJ2YWxzOwogICAgICAgIHVuc2lnbmVkIGludCBkYXk7CiAgICAgICAgdW5zaWduZWQg
aW50IG1vbnRoOwogICAgICAgIHVuc2lnbmVkIGludCB5ZWFyOwogICAgICAgIHVuc2lnbmVkIGlu
dCB3ZWVrZGF5OwoKfSBUSU1FX09GX0RBWV9JTkZPOwoKCnR5cGVkZWYgc3RydWN0IHJfbmV0X3Jl
bW90ZV90b2QKewogICAgICAgIHVuc2lnbmVkIGludCBwdHJfc3J2X3RvZDsKICAgICAgICBUSU1F
X09GX0RBWV9JTkZPICp0b2Q7CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gU1JWX1JfTkVU
X1JFTU9URV9UT0Q7CgoKdHlwZWRlZiBzdHJ1Y3QgcV9uZXRfZmlsZV9xdWVyeV9zZWNkZXNjCnsK
ICAgICAgICB1bnNpZ25lZCBpbnQgcHRyX3Nydl9uYW1lOwogICAgICAgIFVOSVNUUjIgdW5pX3Ny
dl9uYW1lOwogICAgICAgIHVuc2lnbmVkIGludCBwdHJfcXVhbF9uYW1lOwogICAgICAgIFVOSVNU
UjIgdW5pX3F1YWxfbmFtZTsKICAgICAgICBVTklTVFIyIHVuaV9maWxlX25hbWU7CiAgICAgICAg
dW5zaWduZWQgaW50IHVua25vd24xOwogICAgICAgIHVuc2lnbmVkIGludCB1bmtub3duMjsKICAg
ICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjM7Cn0gU1JWX1FfTkVUX0ZJTEVfUVVFUllfU0VDREVT
QzsKCgp0eXBlZGVmIHN0cnVjdCByX25ldF9maWxlX3F1ZXJ5X3NlY2Rlc2MKewogICAgICAgIHVu
c2lnbmVkIGludCBwdHJfcmVzcG9uc2U7CiAgICAgICAgdW5zaWduZWQgaW50IHNpemVfcmVzcG9u
c2U7CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9zZWNkZXNjOwogICAgICAgIHVuc2lnbmVkIGlu
dCBzaXplX3NlY2Rlc2M7CiAgICAgICAgU0VDX0RFU0MgKnNlY19kZXNjOwogICAgICAgIE5UU1RB
VFVTIHN0YXR1czsKfSBTUlZfUl9ORVRfRklMRV9RVUVSWV9TRUNERVNDOwoKCnR5cGVkZWYgc3Ry
dWN0IHFfbmV0X2ZpbGVfc2V0X3NlY2Rlc2MKewogICAgICAgIHVuc2lnbmVkIGludCBwdHJfc3J2
X25hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfc3J2X25hbWU7CiAgICAgICAgdW5zaWduZWQgaW50
IHB0cl9xdWFsX25hbWU7CiAgICAgICAgVU5JU1RSMiB1bmlfcXVhbF9uYW1lOwogICAgICAgIFVO
SVNUUjIgdW5pX2ZpbGVfbmFtZTsKICAgICAgICB1bnNpZ25lZCBpbnQgc2VjX2luZm87CiAgICAg
ICAgdW5zaWduZWQgaW50IHNpemVfc2V0OwogICAgICAgIHVuc2lnbmVkIGludCBwdHJfc2VjZGVz
YzsKICAgICAgICB1bnNpZ25lZCBpbnQgc2l6ZV9zZWNkZXNjOwogICAgICAgIFNFQ19ERVNDICpz
ZWNfZGVzYzsKfSBTUlZfUV9ORVRfRklMRV9TRVRfU0VDREVTQzsKCgp0eXBlZGVmIHN0cnVjdCBy
X25ldF9maWxlX3NldF9zZWNkZXNjCnsKICAgICAgICBOVFNUQVRVUyBzdGF0dXM7Cn0gU1JWX1Jf
TkVUX0ZJTEVfU0VUX1NFQ0RFU0M7CiMgMjgzICJpbmNsdWRlL250ZG9tYWluLmgiIDIKIyAxICJp
bmNsdWRlL3JwY193a3NzdmMuaCIgMQojIDMzICJpbmNsdWRlL3JwY193a3NzdmMuaCIKdHlwZWRl
ZiBzdHJ1Y3QgcV93a3NfcXVlcnlfaW5mb19pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRy
X3Nydl9uYW1lOwogICAgICAgIFVOSVNUUjIgdW5pX3Nydl9uYW1lOwoKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBzd2l0Y2hfdmFsdWU7Cgp9IFdLU19RX1FVRVJZX0lORk87CgoKCnR5cGVkZWYgc3Ry
dWN0IHdrc19pbmZvXzEwMF9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcGxhdGZvcm1faWQ7
CiAgICAgICAgdW5zaWduZWQgaW50IHB0cl9jb21wbmFtZTsKICAgICAgICB1bnNpZ25lZCBpbnQg
cHRyX2xhbl9ncnAgOwogICAgICAgIHVuc2lnbmVkIGludCB2ZXJfbWFqb3I7CiAgICAgICAgdW5z
aWduZWQgaW50IHZlcl9taW5vcjsKCiAgICAgICAgVU5JU1RSMiB1bmlfY29tcG5hbWU7CiAgICAg
ICAgVU5JU1RSMiB1bmlfbGFuX2dycCA7Cgp9IFdLU19JTkZPXzEwMDsKCgoKdHlwZWRlZiBzdHJ1
Y3Qgcl93a3NfcXVlcnlfaW5mb19pbmZvCnsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzd2l0Y2hf
dmFsdWU7CgoKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyXzE7CiAgICAgICAgV0tTX0lORk9fMTAw
ICp3a3MxMDA7CgogICAgICAgIE5UU1RBVFVTIHN0YXR1czsKCn0gV0tTX1JfUVVFUllfSU5GTzsK
IyAyODQgImluY2x1ZGUvbnRkb21haW4uaCIgMgojIDEgImluY2x1ZGUvcnBjX3Nwb29sc3MuaCIg
MQojIDM3NyAiaW5jbHVkZS9ycGNfc3Bvb2xzcy5oIgp0eXBlZGVmIHN0cnVjdCBzcG9vbF91c2Vy
XzEKewogICAgICAgIHVuc2lnbmVkIGludCBzaXplOwogICAgICAgIHVuc2lnbmVkIGludCBjbGll
bnRfbmFtZV9wdHI7CiAgICAgICAgdW5zaWduZWQgaW50IHVzZXJfbmFtZV9wdHI7CiAgICAgICAg
dW5zaWduZWQgaW50IGJ1aWxkOwogICAgICAgIHVuc2lnbmVkIGludCBtYWpvcjsKICAgICAgICB1
bnNpZ25lZCBpbnQgbWlub3I7CiAgICAgICAgdW5zaWduZWQgaW50IHByb2Nlc3NvcjsKICAgICAg
ICBVTklTVFIyIGNsaWVudF9uYW1lOwogICAgICAgIFVOSVNUUjIgdXNlcl9uYW1lOwp9ClNQT09M
X1VTRVJfMTsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3VzZXJfY3RyX2luZm8KewogICAgICAgIHVu
c2lnbmVkIGludCBsZXZlbDsKICAgICAgICB1bnNpZ25lZCBpbnQgcHRyOwogICAgICAgIFNQT09M
X1VTRVJfMSB1c2VyMTsKfQpTUE9PTF9VU0VSX0NUUjsKCnR5cGVkZWYgc3RydWN0IGRldmljZW1v
ZGUKewogICAgICAgIFVOSVNUUiBkZXZpY2VuYW1lOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNw
ZWN2ZXJzaW9uOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRyaXZlcnZlcnNpb247CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgc2l6ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkcml2ZXJleHRyYTsK
ICAgICAgICB1bnNpZ25lZCBpbnQgZmllbGRzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG9yaWVu
dGF0aW9uOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHBhcGVyc2l6ZTsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBwYXBlcmxlbmd0aDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBwYXBlcndpZHRoOwog
ICAgICAgIHVuc2lnbmVkIHNob3J0IHNjYWxlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNvcGll
czsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkZWZhdWx0c291cmNlOwogICAgICAgIHVuc2lnbmVk
IHNob3J0IHByaW50cXVhbGl0eTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjb2xvcjsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBkdXBsZXg7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgeXJlc29sdXRp
b247CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdHRvcHRpb247CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgY29sbGF0ZTsKICAgICAgICBVTklTVFIgZm9ybW5hbWU7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgbG9ncGl4ZWxzOwogICAgICAgIHVuc2lnbmVkIGludCBiaXRzcGVycGVsOwogICAgICAgIHVu
c2lnbmVkIGludCBwZWxzd2lkdGg7CiAgICAgICAgdW5zaWduZWQgaW50IHBlbHNoZWlnaHQ7CiAg
ICAgICAgdW5zaWduZWQgaW50IGRpc3BsYXlmbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQgZGlz
cGxheWZyZXF1ZW5jeTsKICAgICAgICB1bnNpZ25lZCBpbnQgaWNtbWV0aG9kOwogICAgICAgIHVu
c2lnbmVkIGludCBpY21pbnRlbnQ7CiAgICAgICAgdW5zaWduZWQgaW50IG1lZGlhdHlwZTsKICAg
ICAgICB1bnNpZ25lZCBpbnQgZGl0aGVydHlwZTsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzZXJ2
ZWQxOwogICAgICAgIHVuc2lnbmVkIGludCByZXNlcnZlZDI7CiAgICAgICAgdW5zaWduZWQgaW50
IHBhbm5pbmd3aWR0aDsKICAgICAgICB1bnNpZ25lZCBpbnQgcGFubmluZ2hlaWdodDsKICAgICAg
ICB1bnNpZ25lZCBjaGFyICpwcml2YXRlOwp9CkRFVklDRU1PREU7Cgp0eXBlZGVmIHN0cnVjdCBf
ZGV2bW9kZV9jb250CnsKICAgICAgICB1bnNpZ25lZCBpbnQgc2l6ZTsKICAgICAgICB1bnNpZ25l
ZCBpbnQgZGV2bW9kZV9wdHI7CiAgICAgICAgREVWSUNFTU9ERSAqZGV2bW9kZTsKfQpERVZNT0RF
X0NUUjsKCnR5cGVkZWYgc3RydWN0IF9wcmludGVyX2RlZmF1bHQKewogICAgICAgIHVuc2lnbmVk
IGludCBkYXRhdHlwZV9wdHI7CiAgICAgICAgVU5JU1RSMiBkYXRhdHlwZTsKICAgICAgICBERVZN
T0RFX0NUUiBkZXZtb2RlX2NvbnQ7CiAgICAgICAgdW5zaWduZWQgaW50IGFjY2Vzc19yZXF1aXJl
ZDsKfQpQUklOVEVSX0RFRkFVTFQ7CgoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcV9vcGVuX3ByaW50
ZXJfZXgKewogICAgICAgIHVuc2lnbmVkIGludCBwcmludGVybmFtZV9wdHI7CiAgICAgICAgVU5J
U1RSMiBwcmludGVybmFtZTsKICAgICAgICBQUklOVEVSX0RFRkFVTFQgcHJpbnRlcl9kZWZhdWx0
OwogICAgICAgIHVuc2lnbmVkIGludCB1c2VyX3N3aXRjaDsKICAgICAgICBTUE9PTF9VU0VSX0NU
UiB1c2VyX2N0cjsKfQpTUE9PTF9RX09QRU5fUFJJTlRFUl9FWDsKCgp0eXBlZGVmIHN0cnVjdCBz
cG9vbF9yX29wZW5fcHJpbnRlcl9leAp7CiAgICAgICAgUE9MSUNZX0hORCBoYW5kbGU7CiAgICAg
ICAgV0VSUk9SIHN0YXR1czsKfQpTUE9PTF9SX09QRU5fUFJJTlRFUl9FWDsKCnR5cGVkZWYgc3Ry
dWN0IHNwb29sX25vdGlmeV9vcHRpb25fdHlwZQp7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdHlw
ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCByZXNlcnZlZDA7CiAgICAgICAgdW5zaWduZWQgaW50
IHJlc2VydmVkMTsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWQyOwogICAgICAgIHVuc2ln
bmVkIGludCBjb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgZmllbGRzX3B0cjsKICAgICAgICB1
bnNpZ25lZCBpbnQgY291bnQyOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGZpZWxkc1syNl07Cn0K
U1BPT0xfTk9USUZZX09QVElPTl9UWVBFOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfbm90aWZ5X29w
dGlvbl90eXBlX2N0cgp7CiAgICAgICAgdW5zaWduZWQgaW50IGNvdW50OwogICAgICAgIFNQT09M
X05PVElGWV9PUFRJT05fVFlQRSAqdHlwZTsKfQpTUE9PTF9OT1RJRllfT1BUSU9OX1RZUEVfQ1RS
OwoKCgp0eXBlZGVmIHN0cnVjdCBzX2hlYWRlcl90eXBlCnsKICAgICAgICB1bnNpZ25lZCBpbnQg
dHlwZTsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCB2YWx1ZTsKICAgICAgICAgICAgICAgIFVOSVNUUiBzdHJpbmc7CiAgICAgICAgfQogICAgICAg
IGRhdGE7Cn0KSEVBREVSX1RZUEU7Cgp0eXBlZGVmIHN0cnVjdCBuZXdfYnVmZmVyCnsKICAgICAg
ICB1bnNpZ25lZCBpbnQgcHRyOwogICAgICAgIHVuc2lnbmVkIGludCBzaXplOwogICAgICAgIHBy
c19zdHJ1Y3QgcHJzOwogICAgICAgIHVuc2lnbmVkIGludCBzdHJ1Y3Rfc3RhcnQ7CiAgICAgICAg
dW5zaWduZWQgaW50IHN0cmluZ19hdF9lbmQ7Cn0KTkVXX0JVRkZFUjsKCnR5cGVkZWYgc3RydWN0
IHNwb29sX3FfZ2V0cHJpbnRlcmRhdGEKewogICAgICAgIFBPTElDWV9ITkQgaGFuZGxlOwogICAg
ICAgIFVOSVNUUjIgdmFsdWVuYW1lOwogICAgICAgIHVuc2lnbmVkIGludCBzaXplOwp9ClNQT09M
X1FfR0VUUFJJTlRFUkRBVEE7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9yX2dldHByaW50ZXJkYXRh
CnsKICAgICAgICB1bnNpZ25lZCBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBpbnQgc2l6ZTsK
ICAgICAgICB1bnNpZ25lZCBjaGFyICpkYXRhOwogICAgICAgIHVuc2lnbmVkIGludCBuZWVkZWQ7
CiAgICAgICAgV0VSUk9SIHN0YXR1czsKfQpTUE9PTF9SX0dFVFBSSU5URVJEQVRBOwoKdHlwZWRl
ZiBzdHJ1Y3Qgc3Bvb2xfcV9kZWxldGVwcmludGVyZGF0YQp7CiAgICAgICAgUE9MSUNZX0hORCBo
YW5kbGU7CiAgICAgICAgVU5JU1RSMiB2YWx1ZW5hbWU7Cn0KU1BPT0xfUV9ERUxFVEVQUklOVEVS
REFUQTsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfZGVsZXRlcHJpbnRlcmRhdGEKewogICAgICAg
IFdFUlJPUiBzdGF0dXM7Cn0KU1BPT0xfUl9ERUxFVEVQUklOVEVSREFUQTsKCnR5cGVkZWYgc3Ry
dWN0IHNwb29sX3FfY2xvc2VwcmludGVyCnsKICAgICAgICBQT0xJQ1lfSE5EIGhhbmRsZTsKfQpT
UE9PTF9RX0NMT1NFUFJJTlRFUjsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfY2xvc2VwcmludGVy
CnsKICAgICAgICBQT0xJQ1lfSE5EIGhhbmRsZTsKICAgICAgICBXRVJST1Igc3RhdHVzOwp9ClNQ
T09MX1JfQ0xPU0VQUklOVEVSOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcV9zdGFydHBhZ2Vwcmlu
dGVyCnsKICAgICAgICBQT0xJQ1lfSE5EIGhhbmRsZTsKfQpTUE9PTF9RX1NUQVJUUEFHRVBSSU5U
RVI7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9yX3N0YXJ0cGFnZXByaW50ZXIKewogICAgICAgIFdF
UlJPUiBzdGF0dXM7Cn0KU1BPT0xfUl9TVEFSVFBBR0VQUklOVEVSOwoKdHlwZWRlZiBzdHJ1Y3Qg
c3Bvb2xfcV9lbmRwYWdlcHJpbnRlcgp7CiAgICAgICAgUE9MSUNZX0hORCBoYW5kbGU7Cn0KU1BP
T0xfUV9FTkRQQUdFUFJJTlRFUjsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfZW5kcGFnZXByaW50
ZXIKewogICAgICAgIFdFUlJPUiBzdGF0dXM7Cn0KU1BPT0xfUl9FTkRQQUdFUFJJTlRFUjsKCgp0
eXBlZGVmIHN0cnVjdCBzcG9vbF9xX2RlbGV0ZXByaW50ZXJkcml2ZXIKewogICAgICAgIHVuc2ln
bmVkIGludCBzZXJ2ZXJfcHRyOwogICAgICAgIFVOSVNUUjIgc2VydmVyOwogICAgICAgIFVOSVNU
UjIgYXJjaDsKICAgICAgICBVTklTVFIyIGRyaXZlcjsKfQpTUE9PTF9RX0RFTEVURVBSSU5URVJE
UklWRVI7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9yX2RlbGV0ZXByaW50ZXJkcml2ZXIKewogICAg
ICAgIFdFUlJPUiBzdGF0dXM7Cn0KU1BPT0xfUl9ERUxFVEVQUklOVEVSRFJJVkVSOwoKCnR5cGVk
ZWYgc3RydWN0IHNwb29sX2RvY19pbmZvXzEKewogICAgICAgIHVuc2lnbmVkIGludCBwX2RvY25h
bWU7CiAgICAgICAgdW5zaWduZWQgaW50IHBfb3V0cHV0ZmlsZTsKICAgICAgICB1bnNpZ25lZCBp
bnQgcF9kYXRhdHlwZTsKICAgICAgICBVTklTVFIyIGRvY25hbWU7CiAgICAgICAgVU5JU1RSMiBv
dXRwdXRmaWxlOwogICAgICAgIFVOSVNUUjIgZGF0YXR5cGU7Cn0KRE9DX0lORk9fMTsKCnR5cGVk
ZWYgc3RydWN0IHNwb29sX2RvY19pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgc3dpdGNoX3Zh
bHVlOwogICAgICAgIERPQ19JTkZPXzEgZG9jX2luZm9fMTsKfQpET0NfSU5GTzsKCnR5cGVkZWYg
c3RydWN0IHNwb29sX2RvY19pbmZvX2NvbnRhaW5lcgp7CiAgICAgICAgdW5zaWduZWQgaW50IGxl
dmVsOwogICAgICAgIERPQ19JTkZPIGRvY2luZm87Cn0KRE9DX0lORk9fQ09OVEFJTkVSOwoKdHlw
ZWRlZiBzdHJ1Y3Qgc3Bvb2xfcV9zdGFydGRvY3ByaW50ZXIKewogICAgICAgIFBPTElDWV9ITkQg
aGFuZGxlOwogICAgICAgIERPQ19JTkZPX0NPTlRBSU5FUiBkb2NfaW5mb19jb250YWluZXI7Cn0K
U1BPT0xfUV9TVEFSVERPQ1BSSU5URVI7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9yX3N0YXJ0ZG9j
cHJpbnRlcgp7CiAgICAgICAgdW5zaWduZWQgaW50IGpvYmlkOwogICAgICAgIFdFUlJPUiBzdGF0
dXM7Cn0KU1BPT0xfUl9TVEFSVERPQ1BSSU5URVI7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9xX2Vu
ZGRvY3ByaW50ZXIKewogICAgICAgIFBPTElDWV9ITkQgaGFuZGxlOwp9ClNQT09MX1FfRU5ERE9D
UFJJTlRFUjsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfZW5kZG9jcHJpbnRlcgp7CiAgICAgICAg
V0VSUk9SIHN0YXR1czsKfQpTUE9PTF9SX0VORERPQ1BSSU5URVI7Cgp0eXBlZGVmIHN0cnVjdCBz
cG9vbF9xX3dyaXRlcHJpbnRlcgp7CiAgICAgICAgUE9MSUNZX0hORCBoYW5kbGU7CiAgICAgICAg
dW5zaWduZWQgaW50IGJ1ZmZlcl9zaXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlcjsK
ICAgICAgICB1bnNpZ25lZCBpbnQgYnVmZmVyX3NpemUyOwp9ClNQT09MX1FfV1JJVEVQUklOVEVS
OwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcl93cml0ZXByaW50ZXIKewogICAgICAgIHVuc2lnbmVk
IGludCBidWZmZXJfd3JpdHRlbjsKICAgICAgICBXRVJST1Igc3RhdHVzOwp9ClNQT09MX1JfV1JJ
VEVQUklOVEVSOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfbm90aWZ5X29wdGlvbgp7CiAgICAgICAg
dW5zaWduZWQgaW50IHZlcnNpb247CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwogICAgICAg
IHVuc2lnbmVkIGludCBjb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgb3B0aW9uX3R5cGVfcHRy
OwogICAgICAgIFNQT09MX05PVElGWV9PUFRJT05fVFlQRV9DVFIgY3RyOwp9ClNQT09MX05PVElG
WV9PUFRJT047Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9ub3RpZnlfaW5mb19kYXRhCnsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCB0eXBlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGZpZWxkOwogICAg
ICAgIHVuc2lnbmVkIGludCByZXNlcnZlZDsKICAgICAgICB1bnNpZ25lZCBpbnQgaWQ7CiAgICAg
ICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmFsdWVbMl07
CiAgICAgICAgICAgICAgICBzdHJ1Y3QKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IGxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgc2hvcnQgKnN0cmluZzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRh
dGE7CiAgICAgICAgfQogICAgICAgIG5vdGlmeV9kYXRhOwogICAgICAgIHVuc2lnbmVkIGludCBz
aXplOwogICAgICAgIEJPT0wgZW5jX3R5cGU7Cn0gU1BPT0xfTk9USUZZX0lORk9fREFUQTsKCnR5
cGVkZWYgc3RydWN0IHNwb29sX25vdGlmeV9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgdmVy
c2lvbjsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgaW50IGNv
dW50OwogICAgICAgIFNQT09MX05PVElGWV9JTkZPX0RBVEEgKmRhdGE7Cn0KU1BPT0xfTk9USUZZ
X0lORk87CgoKCnR5cGVkZWYgc3RydWN0IHNwb29sc3NfcV9yZmZwY25leAp7CiAgICAgICAgUE9M
SUNZX0hORCBoYW5kbGU7CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwogICAgICAgIHVuc2ln
bmVkIGludCBvcHRpb25zOwogICAgICAgIHVuc2lnbmVkIGludCBsb2NhbG1hY2hpbmVfcHRyOwog
ICAgICAgIFVOSVNUUjIgbG9jYWxtYWNoaW5lOwogICAgICAgIHVuc2lnbmVkIGludCBwcmludGVy
bG9jYWw7CiAgICAgICAgdW5zaWduZWQgaW50IG9wdGlvbl9wdHI7CiAgICAgICAgU1BPT0xfTk9U
SUZZX09QVElPTiAqb3B0aW9uOwp9ClNQT09MX1FfUkZGUENORVg7Cgp0eXBlZGVmIHN0cnVjdCBz
cG9vbF9yX3JmZnBjbmV4CnsKICAgICAgICBXRVJST1Igc3RhdHVzOwp9ClNQT09MX1JfUkZGUENO
RVg7CgoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcV9yZm5wY25leAp7CiAgICAgICAgUE9MSUNZX0hO
RCBoYW5kbGU7CiAgICAgICAgdW5zaWduZWQgaW50IGNoYW5nZTsKICAgICAgICB1bnNpZ25lZCBp
bnQgb3B0aW9uX3B0cjsKICAgICAgICBTUE9PTF9OT1RJRllfT1BUSU9OICpvcHRpb247Cn0KU1BP
T0xfUV9SRk5QQ05FWDsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfcmZucGNuZXgKewogICAgICAg
IHVuc2lnbmVkIGludCBpbmZvX3B0cjsKICAgICAgICBTUE9PTF9OT1RJRllfSU5GTyBpbmZvOwog
ICAgICAgIFdFUlJPUiBzdGF0dXM7Cn0KU1BPT0xfUl9SRk5QQ05FWDsKCgp0eXBlZGVmIHN0cnVj
dCBzcG9vbF9xX2ZjcG4KewogICAgICAgIFBPTElDWV9ITkQgaGFuZGxlOwp9ClNQT09MX1FfRkNQ
TjsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfZmNwbgp7CiAgICAgICAgV0VSUk9SIHN0YXR1czsK
fQpTUE9PTF9SX0ZDUE47CgoKdHlwZWRlZiBzdHJ1Y3QgcHJpbnRlcl9pbmZvXzAKewogICAgICAg
IFVOSVNUUiBwcmludGVybmFtZTsKICAgICAgICBVTklTVFIgc2VydmVybmFtZTsKICAgICAgICB1
bnNpZ25lZCBpbnQgY2pvYnM7CiAgICAgICAgdW5zaWduZWQgaW50IHRvdGFsX2pvYnM7CiAgICAg
ICAgdW5zaWduZWQgaW50IHRvdGFsX2J5dGVzOwoKICAgICAgICB1bnNpZ25lZCBzaG9ydCB5ZWFy
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IG1vbnRoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRh
eW9md2VlazsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkYXk7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgaG91cjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBtaW51dGU7CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgc2Vjb25kOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG1pbGxpc2Vjb25kczsKCiAgICAg
ICAgdW5zaWduZWQgaW50IGdsb2JhbF9jb3VudGVyOwogICAgICAgIHVuc2lnbmVkIGludCB0b3Rh
bF9wYWdlczsKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgbWFqb3JfdmVyc2lvbjsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBidWlsZF92ZXJzaW9uOwoKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93
bjc7CiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd244OwogICAgICAgIHVuc2lnbmVkIGludCB1
bmtub3duOTsKICAgICAgICB1bnNpZ25lZCBpbnQgc2Vzc2lvbl9jb3VudGVyOwogICAgICAgIHVu
c2lnbmVkIGludCB1bmtub3duMTE7CiAgICAgICAgdW5zaWduZWQgaW50IHByaW50ZXJfZXJyb3Jz
OwogICAgICAgIHVuc2lnbmVkIGludCB1bmtub3duMTM7CiAgICAgICAgdW5zaWduZWQgaW50IHVu
a25vd24xNDsKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjE1OwogICAgICAgIHVuc2lnbmVk
IGludCB1bmtub3duMTY7CiAgICAgICAgdW5zaWduZWQgaW50IGNoYW5nZV9pZDsKICAgICAgICB1
bnNpZ25lZCBpbnQgdW5rbm93bjE4OwogICAgICAgIHVuc2lnbmVkIGludCBzdGF0dXM7CiAgICAg
ICAgdW5zaWduZWQgaW50IHVua25vd24yMDsKICAgICAgICB1bnNpZ25lZCBpbnQgY19zZXRwcmlu
dGVyOwoKICAgICAgICB1bnNpZ25lZCBzaG9ydCB1bmtub3duMjI7CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgdW5rbm93bjIzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHVua25vd24yNDsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCB1bmtub3duMjU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdW5rbm93
bjI2OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHVua25vd24yNzsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCB1bmtub3duMjg7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdW5rbm93bjI5Owp9IFBSSU5U
RVJfSU5GT18wOwoKdHlwZWRlZiBzdHJ1Y3QgcHJpbnRlcl9pbmZvXzEKewogICAgICAgIHVuc2ln
bmVkIGludCBmbGFnczsKICAgICAgICBVTklTVFIgZGVzY3JpcHRpb247CiAgICAgICAgVU5JU1RS
IG5hbWU7CiAgICAgICAgVU5JU1RSIGNvbW1lbnQ7Cn0KUFJJTlRFUl9JTkZPXzE7Cgp0eXBlZGVm
IHN0cnVjdCBwcmludGVyX2luZm9fMgp7CiAgICAgICAgVU5JU1RSIHNlcnZlcm5hbWU7CiAgICAg
ICAgVU5JU1RSIHByaW50ZXJuYW1lOwogICAgICAgIFVOSVNUUiBzaGFyZW5hbWU7CiAgICAgICAg
VU5JU1RSIHBvcnRuYW1lOwogICAgICAgIFVOSVNUUiBkcml2ZXJuYW1lOwogICAgICAgIFVOSVNU
UiBjb21tZW50OwogICAgICAgIFVOSVNUUiBsb2NhdGlvbjsKICAgICAgICBERVZJQ0VNT0RFICpk
ZXZtb2RlOwogICAgICAgIFVOSVNUUiBzZXBmaWxlOwogICAgICAgIFVOSVNUUiBwcmludHByb2Nl
c3NvcjsKICAgICAgICBVTklTVFIgZGF0YXR5cGU7CiAgICAgICAgVU5JU1RSIHBhcmFtZXRlcnM7
CiAgICAgICAgU0VDX0RFU0MgKnNlY2Rlc2M7CiAgICAgICAgdW5zaWduZWQgaW50IGF0dHJpYnV0
ZXM7CiAgICAgICAgdW5zaWduZWQgaW50IHByaW9yaXR5OwogICAgICAgIHVuc2lnbmVkIGludCBk
ZWZhdWx0cHJpb3JpdHk7CiAgICAgICAgdW5zaWduZWQgaW50IHN0YXJ0dGltZTsKICAgICAgICB1
bnNpZ25lZCBpbnQgdW50aWx0aW1lOwogICAgICAgIHVuc2lnbmVkIGludCBzdGF0dXM7CiAgICAg
ICAgdW5zaWduZWQgaW50IGNqb2JzOwogICAgICAgIHVuc2lnbmVkIGludCBhdmVyYWdlcHBtOwp9
ClBSSU5URVJfSU5GT18yOwoKdHlwZWRlZiBzdHJ1Y3QgcHJpbnRlcl9pbmZvXzMKewogICAgICAg
IHVuc2lnbmVkIGludCBmbGFnczsKICAgICAgICBTRUNfREVTQyAqc2VjZGVzYzsKfQpQUklOVEVS
X0lORk9fMzsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3FfZW51bXByaW50ZXJzCnsKICAgICAgICB1
bnNpZ25lZCBpbnQgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgaW50IHNlcnZlcm5hbWVfcHRyOwog
ICAgICAgIFVOSVNUUjIgc2VydmVybmFtZTsKICAgICAgICB1bnNpZ25lZCBpbnQgbGV2ZWw7CiAg
ICAgICAgTkVXX0JVRkZFUiAqYnVmZmVyOwogICAgICAgIHVuc2lnbmVkIGludCBvZmZlcmVkOwp9
ClNQT09MX1FfRU5VTVBSSU5URVJTOwoKdHlwZWRlZiBzdHJ1Y3QgcHJpbnRlcl9pbmZvX2N0cl9p
bmZvCnsKICAgICAgICBQUklOVEVSX0lORk9fMCAqcHJpbnRlcnNfMDsKICAgICAgICBQUklOVEVS
X0lORk9fMSAqcHJpbnRlcnNfMTsKICAgICAgICBQUklOVEVSX0lORk9fMiAqcHJpbnRlcnNfMjsK
ICAgICAgICBQUklOVEVSX0lORk9fMyAqcHJpbnRlcnNfMzsKfQpQUklOVEVSX0lORk9fQ1RSOwoK
dHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcl9lbnVtcHJpbnRlcnMKewogICAgICAgIE5FV19CVUZGRVIg
KmJ1ZmZlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgbmVlZGVkOwogICAgICAgIHVuc2lnbmVkIGlu
dCByZXR1cm5lZDsKICAgICAgICBXRVJST1Igc3RhdHVzOwp9ClNQT09MX1JfRU5VTVBSSU5URVJT
OwoKCnR5cGVkZWYgc3RydWN0IHNwb29sX3FfZ2V0cHJpbnRlcgp7CiAgICAgICAgUE9MSUNZX0hO
RCBoYW5kbGU7CiAgICAgICAgdW5zaWduZWQgaW50IGxldmVsOwogICAgICAgIE5FV19CVUZGRVIg
KmJ1ZmZlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgb2ZmZXJlZDsKfQpTUE9PTF9RX0dFVFBSSU5U
RVI7Cgp0eXBlZGVmIHN0cnVjdCBwcmludGVyX2luZm9faW5mbwp7CiAgICAgICAgdW5pb24KICAg
ICAgICB7CiAgICAgICAgICAgICAgICBQUklOVEVSX0lORk9fMCAqaW5mbzA7CiAgICAgICAgICAg
ICAgICBQUklOVEVSX0lORk9fMSAqaW5mbzE7CiAgICAgICAgICAgICAgICBQUklOVEVSX0lORk9f
MiAqaW5mbzI7CiAgICAgICAgICAgICAgICB2b2lkICppbmZvOwogICAgICAgIH0gcHJpbnRlcjsK
fSBQUklOVEVSX0lORk87Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9yX2dldHByaW50ZXIKewogICAg
ICAgIE5FV19CVUZGRVIgKmJ1ZmZlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgbmVlZGVkOwogICAg
ICAgIFdFUlJPUiBzdGF0dXM7Cn0gU1BPT0xfUl9HRVRQUklOVEVSOwoKdHlwZWRlZiBzdHJ1Y3Qg
ZHJpdmVyX2luZm9fMQp7CiAgICAgICAgVU5JU1RSIG5hbWU7Cn0gRFJJVkVSX0lORk9fMTsKCnR5
cGVkZWYgc3RydWN0IGRyaXZlcl9pbmZvXzIKewogICAgICAgIHVuc2lnbmVkIGludCB2ZXJzaW9u
OwogICAgICAgIFVOSVNUUiBuYW1lOwogICAgICAgIFVOSVNUUiBhcmNoaXRlY3R1cmU7CiAgICAg
ICAgVU5JU1RSIGRyaXZlcnBhdGg7CiAgICAgICAgVU5JU1RSIGRhdGFmaWxlOwogICAgICAgIFVO
SVNUUiBjb25maWdmaWxlOwp9IERSSVZFUl9JTkZPXzI7Cgp0eXBlZGVmIHN0cnVjdCBkcml2ZXJf
aW5mb18zCnsKICAgICAgICB1bnNpZ25lZCBpbnQgdmVyc2lvbjsKICAgICAgICBVTklTVFIgbmFt
ZTsKICAgICAgICBVTklTVFIgYXJjaGl0ZWN0dXJlOwogICAgICAgIFVOSVNUUiBkcml2ZXJwYXRo
OwogICAgICAgIFVOSVNUUiBkYXRhZmlsZTsKICAgICAgICBVTklTVFIgY29uZmlnZmlsZTsKICAg
ICAgICBVTklTVFIgaGVscGZpbGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgKmRlcGVuZGVudGZp
bGVzOwogICAgICAgIFVOSVNUUiBtb25pdG9ybmFtZTsKICAgICAgICBVTklTVFIgZGVmYXVsdGRh
dGF0eXBlOwp9CkRSSVZFUl9JTkZPXzM7Cgp0eXBlZGVmIHN0cnVjdCBkcml2ZXJfaW5mb182CnsK
ICAgICAgICB1bnNpZ25lZCBpbnQgdmVyc2lvbjsKICAgICAgICBVTklTVFIgbmFtZTsKICAgICAg
ICBVTklTVFIgYXJjaGl0ZWN0dXJlOwogICAgICAgIFVOSVNUUiBkcml2ZXJwYXRoOwogICAgICAg
IFVOSVNUUiBkYXRhZmlsZTsKICAgICAgICBVTklTVFIgY29uZmlnZmlsZTsKICAgICAgICBVTklT
VFIgaGVscGZpbGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgKmRlcGVuZGVudGZpbGVzOwogICAg
ICAgIFVOSVNUUiBtb25pdG9ybmFtZTsKICAgICAgICBVTklTVFIgZGVmYXVsdGRhdGF0eXBlOwog
ICAgICAgIHVuc2lnbmVkIHNob3J0KiBwcmV2aW91c2RyaXZlcm5hbWVzOwogICAgICAgIE5UVElN
RSBkcml2ZXJfZGF0ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgcGFkZGluZzsKICAgICAgICB1bnNp
Z25lZCBpbnQgZHJpdmVyX3ZlcnNpb25fbG93OwogICAgICAgIHVuc2lnbmVkIGludCBkcml2ZXJf
dmVyc2lvbl9oaWdoOwogICAgICAgIFVOSVNUUiBtZmduYW1lOwogICAgICAgIFVOSVNUUiBvZW1f
dXJsOwogICAgICAgIFVOSVNUUiBoYXJkd2FyZV9pZDsKICAgICAgICBVTklTVFIgcHJvdmlkZXI7
Cn0KRFJJVkVSX0lORk9fNjsKCnR5cGVkZWYgc3RydWN0IGRyaXZlcl9pbmZvX2luZm8KewogICAg
ICAgIERSSVZFUl9JTkZPXzEgKmluZm8xOwogICAgICAgIERSSVZFUl9JTkZPXzIgKmluZm8yOwog
ICAgICAgIERSSVZFUl9JTkZPXzMgKmluZm8zOwogICAgICAgIERSSVZFUl9JTkZPXzYgKmluZm82
Owp9ClBSSU5URVJfRFJJVkVSX0NUUjsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3FfZ2V0cHJpbnRl
cmRyaXZlcjIKewogICAgICAgIFBPTElDWV9ITkQgaGFuZGxlOwogICAgICAgIHVuc2lnbmVkIGlu
dCBhcmNoaXRlY3R1cmVfcHRyOwogICAgICAgIFVOSVNUUjIgYXJjaGl0ZWN0dXJlOwogICAgICAg
IHVuc2lnbmVkIGludCBsZXZlbDsKICAgICAgICBORVdfQlVGRkVSICpidWZmZXI7CiAgICAgICAg
dW5zaWduZWQgaW50IG9mZmVyZWQ7CiAgICAgICAgdW5zaWduZWQgaW50IGNsaWVudG1ham9ydmVy
c2lvbjsKICAgICAgICB1bnNpZ25lZCBpbnQgY2xpZW50bWlub3J2ZXJzaW9uOwp9ClNQT09MX1Ff
R0VUUFJJTlRFUkRSSVZFUjI7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9yX2dldHByaW50ZXJkcml2
ZXIyCnsKICAgICAgICBORVdfQlVGRkVSICpidWZmZXI7CiAgICAgICAgdW5zaWduZWQgaW50IG5l
ZWRlZDsKICAgICAgICB1bnNpZ25lZCBpbnQgc2VydmVybWFqb3J2ZXJzaW9uOwogICAgICAgIHVu
c2lnbmVkIGludCBzZXJ2ZXJtaW5vcnZlcnNpb247CiAgICAgICAgV0VSUk9SIHN0YXR1czsKfQpT
UE9PTF9SX0dFVFBSSU5URVJEUklWRVIyOwoKCnR5cGVkZWYgc3RydWN0IGFkZF9qb2JpbmZvXzEK
ewogICAgICAgIFVOSVNUUiBwYXRoOwogICAgICAgIHVuc2lnbmVkIGludCBqb2JfbnVtYmVyOwp9
CkFERF9KT0JJTkZPXzE7CgoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcV9hZGRqb2IKewogICAgICAg
IFBPTElDWV9ITkQgaGFuZGxlOwogICAgICAgIHVuc2lnbmVkIGludCBsZXZlbDsKICAgICAgICBO
RVdfQlVGRkVSICpidWZmZXI7CiAgICAgICAgdW5zaWduZWQgaW50IG9mZmVyZWQ7Cn0KU1BPT0xf
UV9BRERKT0I7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9yX2FkZGpvYgp7CiAgICAgICAgTkVXX0JV
RkZFUiAqYnVmZmVyOwogICAgICAgIHVuc2lnbmVkIGludCBuZWVkZWQ7CiAgICAgICAgV0VSUk9S
IHN0YXR1czsKfQpTUE9PTF9SX0FEREpPQjsKCgoKCgoKCnR5cGVkZWYgc3RydWN0IHN5c3RlbXRp
bWUKewogICAgICAgIHVuc2lnbmVkIHNob3J0IHllYXI7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
bW9udGg7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZGF5b2Z3ZWVrOwogICAgICAgIHVuc2lnbmVk
IHNob3J0IGRheTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBob3VyOwogICAgICAgIHVuc2lnbmVk
IHNob3J0IG1pbnV0ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzZWNvbmQ7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgbWlsbGlzZWNvbmRzOwp9ClNZU1RFTVRJTUU7Cgp0eXBlZGVmIHN0cnVjdCBz
X2pvYl9pbmZvXzEKewogICAgICAgIHVuc2lnbmVkIGludCBqb2JpZDsKICAgICAgICBVTklTVFIg
cHJpbnRlcm5hbWU7CiAgICAgICAgVU5JU1RSIG1hY2hpbmVuYW1lOwogICAgICAgIFVOSVNUUiB1
c2VybmFtZTsKICAgICAgICBVTklTVFIgZG9jdW1lbnQ7CiAgICAgICAgVU5JU1RSIGRhdGF0eXBl
OwogICAgICAgIFVOSVNUUiB0ZXh0X3N0YXR1czsKICAgICAgICB1bnNpZ25lZCBpbnQgc3RhdHVz
OwogICAgICAgIHVuc2lnbmVkIGludCBwcmlvcml0eTsKICAgICAgICB1bnNpZ25lZCBpbnQgcG9z
aXRpb247CiAgICAgICAgdW5zaWduZWQgaW50IHRvdGFscGFnZXM7CiAgICAgICAgdW5zaWduZWQg
aW50IHBhZ2VzcHJpbnRlZDsKICAgICAgICBTWVNURU1USU1FIHN1Ym1pdHRlZDsKfQpKT0JfSU5G
T18xOwoKdHlwZWRlZiBzdHJ1Y3Qgc19qb2JfaW5mb18yCnsKICAgICAgICB1bnNpZ25lZCBpbnQg
am9iaWQ7CiAgICAgICAgVU5JU1RSIHByaW50ZXJuYW1lOwogICAgICAgIFVOSVNUUiBtYWNoaW5l
bmFtZTsKICAgICAgICBVTklTVFIgdXNlcm5hbWU7CiAgICAgICAgVU5JU1RSIGRvY3VtZW50Owog
ICAgICAgIFVOSVNUUiBub3RpZnluYW1lOwogICAgICAgIFVOSVNUUiBkYXRhdHlwZTsKICAgICAg
ICBVTklTVFIgcHJpbnRwcm9jZXNzb3I7CiAgICAgICAgVU5JU1RSIHBhcmFtZXRlcnM7CiAgICAg
ICAgVU5JU1RSIGRyaXZlcm5hbWU7CiAgICAgICAgREVWSUNFTU9ERSAqZGV2bW9kZTsKICAgICAg
ICBVTklTVFIgdGV4dF9zdGF0dXM7CgogICAgICAgIHVuc2lnbmVkIGludCBzdGF0dXM7CiAgICAg
ICAgdW5zaWduZWQgaW50IHByaW9yaXR5OwogICAgICAgIHVuc2lnbmVkIGludCBwb3NpdGlvbjsK
ICAgICAgICB1bnNpZ25lZCBpbnQgc3RhcnR0aW1lOwogICAgICAgIHVuc2lnbmVkIGludCB1bnRp
bHRpbWU7CiAgICAgICAgdW5zaWduZWQgaW50IHRvdGFscGFnZXM7CiAgICAgICAgdW5zaWduZWQg
aW50IHNpemU7CiAgICAgICAgU1lTVEVNVElNRSBzdWJtaXR0ZWQ7CiAgICAgICAgdW5zaWduZWQg
aW50IHRpbWVlbGFwc2VkOwogICAgICAgIHVuc2lnbmVkIGludCBwYWdlc3ByaW50ZWQ7Cn0KSk9C
X0lORk9fMjsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3FfZW51bWpvYnMKewogICAgICAgIFBPTElD
WV9ITkQgaGFuZGxlOwogICAgICAgIHVuc2lnbmVkIGludCBmaXJzdGpvYjsKICAgICAgICB1bnNp
Z25lZCBpbnQgbnVtb2Zqb2JzOwogICAgICAgIHVuc2lnbmVkIGludCBsZXZlbDsKICAgICAgICBO
RVdfQlVGRkVSICpidWZmZXI7CiAgICAgICAgdW5zaWduZWQgaW50IG9mZmVyZWQ7Cn0KU1BPT0xf
UV9FTlVNSk9CUzsKCnR5cGVkZWYgc3RydWN0IGpvYl9pbmZvX2N0cl9pbmZvCnsKICAgICAgICB1
bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIEpPQl9JTkZPXzEgKipqb2JfaW5mb18xOwog
ICAgICAgICAgICAgICAgSk9CX0lORk9fMiAqKmpvYl9pbmZvXzI7CiAgICAgICAgICAgICAgICB2
b2lkICppbmZvOwogICAgICAgIH0gam9iOwoKfSBKT0JfSU5GT19DVFI7Cgp0eXBlZGVmIHN0cnVj
dCBzcG9vbF9yX2VudW1qb2JzCnsKICAgICAgICBORVdfQlVGRkVSICpidWZmZXI7CiAgICAgICAg
dW5zaWduZWQgaW50IG5lZWRlZDsKICAgICAgICB1bnNpZ25lZCBpbnQgcmV0dXJuZWQ7CiAgICAg
ICAgV0VSUk9SIHN0YXR1czsKfQpTUE9PTF9SX0VOVU1KT0JTOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bv
b2xfcV9zY2hlZHVsZWpvYgp7CiAgICAgICAgUE9MSUNZX0hORCBoYW5kbGU7CiAgICAgICAgdW5z
aWduZWQgaW50IGpvYmlkOwp9ClNQT09MX1FfU0NIRURVTEVKT0I7Cgp0eXBlZGVmIHN0cnVjdCBz
cG9vbF9yX3NjaGVkdWxlam9iCnsKICAgICAgICBXRVJST1Igc3RhdHVzOwp9ClNQT09MX1JfU0NI
RURVTEVKT0I7Cgp0eXBlZGVmIHN0cnVjdCBzX3BvcnRfaW5mb18xCnsKICAgICAgICBVTklTVFIg
cG9ydF9uYW1lOwp9ClBPUlRfSU5GT18xOwoKdHlwZWRlZiBzdHJ1Y3Qgc19wb3J0X2luZm9fMgp7
CiAgICAgICAgVU5JU1RSIHBvcnRfbmFtZTsKICAgICAgICBVTklTVFIgbW9uaXRvcl9uYW1lOwog
ICAgICAgIFVOSVNUUiBkZXNjcmlwdGlvbjsKICAgICAgICB1bnNpZ25lZCBpbnQgcG9ydF90eXBl
OwogICAgICAgIHVuc2lnbmVkIGludCByZXNlcnZlZDsKfQpQT1JUX0lORk9fMjsKCnR5cGVkZWYg
c3RydWN0IHNwb29sX3FfZW51bXBvcnRzCnsKICAgICAgICB1bnNpZ25lZCBpbnQgbmFtZV9wdHI7
CiAgICAgICAgVU5JU1RSMiBuYW1lOwogICAgICAgIHVuc2lnbmVkIGludCBsZXZlbDsKICAgICAg
ICBORVdfQlVGRkVSICpidWZmZXI7CiAgICAgICAgdW5zaWduZWQgaW50IG9mZmVyZWQ7Cn0KU1BP
T0xfUV9FTlVNUE9SVFM7Cgp0eXBlZGVmIHN0cnVjdCBwb3J0X2luZm9fY3RyX2luZm8KewogICAg
ICAgIHVuaW9uCiAgICAgICAgewogICAgICAgICAgICAgICAgUE9SVF9JTkZPXzEgKmluZm9fMTsK
ICAgICAgICAgICAgICAgIFBPUlRfSU5GT18yICppbmZvXzI7CiAgICAgICAgfQogICAgICAgIHBv
cnQ7Cgp9ClBPUlRfSU5GT19DVFI7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9yX2VudW1wb3J0cwp7
CiAgICAgICAgTkVXX0JVRkZFUiAqYnVmZmVyOwogICAgICAgIHVuc2lnbmVkIGludCBuZWVkZWQ7
CiAgICAgICAgdW5zaWduZWQgaW50IHJldHVybmVkOwogICAgICAgIFdFUlJPUiBzdGF0dXM7Cn0K
U1BPT0xfUl9FTlVNUE9SVFM7CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBqb2JfaW5mb19pbmZvCnsK
ICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIEpPQl9JTkZPXzEgam9iX2lu
Zm9fMTsKICAgICAgICAgICAgICAgIEpPQl9JTkZPXzIgam9iX2luZm9fMjsKICAgICAgICB9CiAg
ICAgICAgam9iOwoKfQpKT0JfSU5GTzsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3Ffc2V0am9iCnsK
ICAgICAgICBQT0xJQ1lfSE5EIGhhbmRsZTsKICAgICAgICB1bnNpZ25lZCBpbnQgam9iaWQ7CiAg
ICAgICAgdW5zaWduZWQgaW50IGxldmVsOwogICAgICAgIEpPQl9JTkZPIGN0cjsKICAgICAgICB1
bnNpZ25lZCBpbnQgY29tbWFuZDsKCn0KU1BPT0xfUV9TRVRKT0I7Cgp0eXBlZGVmIHN0cnVjdCBz
cG9vbF9yX3NldGpvYgp7CiAgICAgICAgV0VSUk9SIHN0YXR1czsKCn0KU1BPT0xfUl9TRVRKT0I7
Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9xX2VudW1wcmludGVyZHJpdmVycwp7CiAgICAgICAgdW5z
aWduZWQgaW50IG5hbWVfcHRyOwogICAgICAgIFVOSVNUUjIgbmFtZTsKICAgICAgICB1bnNpZ25l
ZCBpbnQgZW52aXJvbm1lbnRfcHRyOwogICAgICAgIFVOSVNUUjIgZW52aXJvbm1lbnQ7CiAgICAg
ICAgdW5zaWduZWQgaW50IGxldmVsOwogICAgICAgIE5FV19CVUZGRVIgKmJ1ZmZlcjsKICAgICAg
ICB1bnNpZ25lZCBpbnQgb2ZmZXJlZDsKfQpTUE9PTF9RX0VOVU1QUklOVEVSRFJJVkVSUzsKCnR5
cGVkZWYgc3RydWN0IHNwb29sX3JfZW51bXByaW50ZXJkcml2ZXJzCnsKICAgICAgICBORVdfQlVG
RkVSICpidWZmZXI7CiAgICAgICAgdW5zaWduZWQgaW50IG5lZWRlZDsKICAgICAgICB1bnNpZ25l
ZCBpbnQgcmV0dXJuZWQ7CiAgICAgICAgV0VSUk9SIHN0YXR1czsKfQpTUE9PTF9SX0VOVU1QUklO
VEVSRFJJVkVSUzsKCnR5cGVkZWYgc3RydWN0IHNwb29sX2Zvcm1fMQp7CiAgICAgICAgdW5zaWdu
ZWQgaW50IGZsYWc7CiAgICAgICAgVU5JU1RSIG5hbWU7CiAgICAgICAgdW5zaWduZWQgaW50IHdp
ZHRoOwogICAgICAgIHVuc2lnbmVkIGludCBsZW5ndGg7CiAgICAgICAgdW5zaWduZWQgaW50IGxl
ZnQ7CiAgICAgICAgdW5zaWduZWQgaW50IHRvcDsKICAgICAgICB1bnNpZ25lZCBpbnQgcmlnaHQ7
CiAgICAgICAgdW5zaWduZWQgaW50IGJvdHRvbTsKfQpGT1JNXzE7Cgp0eXBlZGVmIHN0cnVjdCBz
cG9vbF9xX2VudW1mb3Jtcwp7CiAgICAgICAgUE9MSUNZX0hORCBoYW5kbGU7CiAgICAgICAgdW5z
aWduZWQgaW50IGxldmVsOwogICAgICAgIE5FV19CVUZGRVIgKmJ1ZmZlcjsKICAgICAgICB1bnNp
Z25lZCBpbnQgb2ZmZXJlZDsKfQpTUE9PTF9RX0VOVU1GT1JNUzsKCnR5cGVkZWYgc3RydWN0IHNw
b29sX3JfZW51bWZvcm1zCnsKICAgICAgICBORVdfQlVGRkVSICpidWZmZXI7CiAgICAgICAgdW5z
aWduZWQgaW50IG5lZWRlZDsKICAgICAgICB1bnNpZ25lZCBpbnQgbnVtb2Zmb3JtczsKICAgICAg
ICBXRVJST1Igc3RhdHVzOwp9ClNQT09MX1JfRU5VTUZPUk1TOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bv
b2xfcV9nZXRmb3JtCnsKICAgICAgICBQT0xJQ1lfSE5EIGhhbmRsZTsKICAgICAgICBVTklTVFIy
IGZvcm1uYW1lOwogICAgICAgIHVuc2lnbmVkIGludCBsZXZlbDsKICAgICAgICBORVdfQlVGRkVS
ICpidWZmZXI7CiAgICAgICAgdW5zaWduZWQgaW50IG9mZmVyZWQ7Cn0KU1BPT0xfUV9HRVRGT1JN
OwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcl9nZXRmb3JtCnsKICAgICAgICBORVdfQlVGRkVSICpi
dWZmZXI7CiAgICAgICAgdW5zaWduZWQgaW50IG5lZWRlZDsKICAgICAgICBXRVJST1Igc3RhdHVz
Owp9ClNQT09MX1JfR0VURk9STTsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3ByaW50ZXJfaW5mb19s
ZXZlbF8xCnsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgaW50
IGRlc2NyaXB0aW9uX3B0cjsKICAgICAgICB1bnNpZ25lZCBpbnQgbmFtZV9wdHI7CiAgICAgICAg
dW5zaWduZWQgaW50IGNvbW1lbnRfcHRyOwogICAgICAgIFVOSVNUUjIgZGVzY3JpcHRpb247CiAg
ICAgICAgVU5JU1RSMiBuYW1lOwogICAgICAgIFVOSVNUUjIgY29tbWVudDsKfSBTUE9PTF9QUklO
VEVSX0lORk9fTEVWRUxfMTsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3ByaW50ZXJfaW5mb19sZXZl
bF8yCnsKICAgICAgICB1bnNpZ25lZCBpbnQgc2VydmVybmFtZV9wdHI7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHByaW50ZXJuYW1lX3B0cjsKICAgICAgICB1bnNpZ25lZCBpbnQgc2hhcmVuYW1lX3B0
cjsKICAgICAgICB1bnNpZ25lZCBpbnQgcG9ydG5hbWVfcHRyOwogICAgICAgIHVuc2lnbmVkIGlu
dCBkcml2ZXJuYW1lX3B0cjsKICAgICAgICB1bnNpZ25lZCBpbnQgY29tbWVudF9wdHI7CiAgICAg
ICAgdW5zaWduZWQgaW50IGxvY2F0aW9uX3B0cjsKICAgICAgICB1bnNpZ25lZCBpbnQgZGV2bW9k
ZV9wdHI7CiAgICAgICAgdW5zaWduZWQgaW50IHNlcGZpbGVfcHRyOwogICAgICAgIHVuc2lnbmVk
IGludCBwcmludHByb2Nlc3Nvcl9wdHI7CiAgICAgICAgdW5zaWduZWQgaW50IGRhdGF0eXBlX3B0
cjsKICAgICAgICB1bnNpZ25lZCBpbnQgcGFyYW1ldGVyc19wdHI7CiAgICAgICAgdW5zaWduZWQg
aW50IHNlY2Rlc2NfcHRyOwogICAgICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGVzOwogICAgICAg
IHVuc2lnbmVkIGludCBwcmlvcml0eTsKICAgICAgICB1bnNpZ25lZCBpbnQgZGVmYXVsdF9wcmlv
cml0eTsKICAgICAgICB1bnNpZ25lZCBpbnQgc3RhcnR0aW1lOwogICAgICAgIHVuc2lnbmVkIGlu
dCB1bnRpbHRpbWU7CiAgICAgICAgV0VSUk9SIHN0YXR1czsKICAgICAgICB1bnNpZ25lZCBpbnQg
Y2pvYnM7CiAgICAgICAgdW5zaWduZWQgaW50IGF2ZXJhZ2VwcG07CiAgICAgICAgVU5JU1RSMiBz
ZXJ2ZXJuYW1lOwogICAgICAgIFVOSVNUUjIgcHJpbnRlcm5hbWU7CiAgICAgICAgVU5JU1RSMiBz
aGFyZW5hbWU7CiAgICAgICAgVU5JU1RSMiBwb3J0bmFtZTsKICAgICAgICBVTklTVFIyIGRyaXZl
cm5hbWU7CiAgICAgICAgVU5JU1RSMiBjb21tZW50OwogICAgICAgIFVOSVNUUjIgbG9jYXRpb247
CiAgICAgICAgVU5JU1RSMiBzZXBmaWxlOwogICAgICAgIFVOSVNUUjIgcHJpbnRwcm9jZXNzb3I7
CiAgICAgICAgVU5JU1RSMiBkYXRhdHlwZTsKICAgICAgICBVTklTVFIyIHBhcmFtZXRlcnM7CiAg
ICAgICAgU0VDX0RFU0NfQlVGICpzZWNkZXNjOwp9ClNQT09MX1BSSU5URVJfSU5GT19MRVZFTF8y
OwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcHJpbnRlcl9pbmZvX2xldmVsXzMKewogICAgICAgIHVu
c2lnbmVkIGludCBzZWNkZXNjX3B0cjsKfQpTUE9PTF9QUklOVEVSX0lORk9fTEVWRUxfMzsKCnR5
cGVkZWYgc3RydWN0IHNwb29sX3ByaW50ZXJfaW5mb19sZXZlbAp7CiAgICAgICAgdW5zaWduZWQg
aW50IGxldmVsOwogICAgICAgIHVuc2lnbmVkIGludCBpbmZvX3B0cjsKICAgICAgICBTUE9PTF9Q
UklOVEVSX0lORk9fTEVWRUxfMSAqaW5mb18xOwogICAgICAgIFNQT09MX1BSSU5URVJfSU5GT19M
RVZFTF8yICppbmZvXzI7CiAgICAgICAgU1BPT0xfUFJJTlRFUl9JTkZPX0xFVkVMXzMgKmluZm9f
MzsKfQpTUE9PTF9QUklOVEVSX0lORk9fTEVWRUw7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9wcmlu
dGVyX2RyaXZlcl9pbmZvX2xldmVsXzMKewogICAgICAgIHVuc2lnbmVkIGludCBjdmVyc2lvbjsK
ICAgICAgICB1bnNpZ25lZCBpbnQgbmFtZV9wdHI7CiAgICAgICAgdW5zaWduZWQgaW50IGVudmly
b25tZW50X3B0cjsKICAgICAgICB1bnNpZ25lZCBpbnQgZHJpdmVycGF0aF9wdHI7CiAgICAgICAg
dW5zaWduZWQgaW50IGRhdGFmaWxlX3B0cjsKICAgICAgICB1bnNpZ25lZCBpbnQgY29uZmlnZmls
ZV9wdHI7CiAgICAgICAgdW5zaWduZWQgaW50IGhlbHBmaWxlX3B0cjsKICAgICAgICB1bnNpZ25l
ZCBpbnQgbW9uaXRvcm5hbWVfcHRyOwogICAgICAgIHVuc2lnbmVkIGludCBkZWZhdWx0ZGF0YXR5
cGVfcHRyOwogICAgICAgIHVuc2lnbmVkIGludCBkZXBlbmRlbnRmaWxlc3NpemU7CiAgICAgICAg
dW5zaWduZWQgaW50IGRlcGVuZGVudGZpbGVzX3B0cjsKCiAgICAgICAgVU5JU1RSMiBuYW1lOwog
ICAgICAgIFVOSVNUUjIgZW52aXJvbm1lbnQ7CiAgICAgICAgVU5JU1RSMiBkcml2ZXJwYXRoOwog
ICAgICAgIFVOSVNUUjIgZGF0YWZpbGU7CiAgICAgICAgVU5JU1RSMiBjb25maWdmaWxlOwogICAg
ICAgIFVOSVNUUjIgaGVscGZpbGU7CiAgICAgICAgVU5JU1RSMiBtb25pdG9ybmFtZTsKICAgICAg
ICBVTklTVFIyIGRlZmF1bHRkYXRhdHlwZTsKICAgICAgICBCVUZGRVI1IGRlcGVuZGVudGZpbGVz
OwoKfQpTUE9PTF9QUklOVEVSX0RSSVZFUl9JTkZPX0xFVkVMXzM7CgoKdHlwZWRlZiBzdHJ1Y3Qg
ewogICAgICAgIHVuc2lnbmVkIGludCB2ZXJzaW9uOwogICAgICAgIHVuc2lnbmVkIGludCBuYW1l
X3B0cjsKICAgICAgICB1bnNpZ25lZCBpbnQgZW52aXJvbm1lbnRfcHRyOwogICAgICAgIHVuc2ln
bmVkIGludCBkcml2ZXJwYXRoX3B0cjsKICAgICAgICB1bnNpZ25lZCBpbnQgZGF0YWZpbGVfcHRy
OwogICAgICAgIHVuc2lnbmVkIGludCBjb25maWdmaWxlX3B0cjsKICAgICAgICB1bnNpZ25lZCBp
bnQgaGVscGZpbGVfcHRyOwogICAgICAgIHVuc2lnbmVkIGludCBtb25pdG9ybmFtZV9wdHI7CiAg
ICAgICAgdW5zaWduZWQgaW50IGRlZmF1bHRkYXRhdHlwZV9wdHI7CiAgICAgICAgdW5zaWduZWQg
aW50IGRlcGVuZGVudGZpbGVzX2xlbjsKICAgICAgICB1bnNpZ25lZCBpbnQgZGVwZW5kZW50Zmls
ZXNfcHRyOwogICAgICAgIHVuc2lnbmVkIGludCBwcmV2aW91c25hbWVzX2xlbjsKICAgICAgICB1
bnNpZ25lZCBpbnQgcHJldmlvdXNuYW1lc19wdHI7CiAgICAgICAgTlRUSU1FIGRyaXZlcmRhdGU7
CiAgICAgICAgVUlOVDY0X1MgZHJpdmVydmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBpbnQgZHVt
bXk0OwogICAgICAgIHVuc2lnbmVkIGludCBtZmduYW1lX3B0cjsKICAgICAgICB1bnNpZ25lZCBp
bnQgb2VtdXJsX3B0cjsKICAgICAgICB1bnNpZ25lZCBpbnQgaGFyZHdhcmVpZF9wdHI7CiAgICAg
ICAgdW5zaWduZWQgaW50IHByb3ZpZGVyX3B0cjsKICAgICAgICBVTklTVFIyIG5hbWU7CiAgICAg
ICAgVU5JU1RSMiBlbnZpcm9ubWVudDsKICAgICAgICBVTklTVFIyIGRyaXZlcnBhdGg7CiAgICAg
ICAgVU5JU1RSMiBkYXRhZmlsZTsKICAgICAgICBVTklTVFIyIGNvbmZpZ2ZpbGU7CiAgICAgICAg
VU5JU1RSMiBoZWxwZmlsZTsKICAgICAgICBVTklTVFIyIG1vbml0b3JuYW1lOwogICAgICAgIFVO
SVNUUjIgZGVmYXVsdGRhdGF0eXBlOwogICAgICAgIEJVRkZFUjUgZGVwZW5kZW50ZmlsZXM7CiAg
ICAgICAgQlVGRkVSNSBwcmV2aW91c25hbWVzOwogICAgICAgIFVOSVNUUjIgbWZnbmFtZTsKICAg
ICAgICBVTklTVFIyIG9lbXVybDsKICAgICAgICBVTklTVFIyIGhhcmR3YXJlaWQ7CiAgICAgICAg
VU5JU1RSMiBwcm92aWRlcjsKfSBTUE9PTF9QUklOVEVSX0RSSVZFUl9JTkZPX0xFVkVMXzY7CgoK
dHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcHJpbnRlcl9kcml2ZXJfaW5mb19sZXZlbAp7CiAgICAgICAg
dW5zaWduZWQgaW50IGxldmVsOwogICAgICAgIHVuc2lnbmVkIGludCBwdHI7CiAgICAgICAgU1BP
T0xfUFJJTlRFUl9EUklWRVJfSU5GT19MRVZFTF8zICppbmZvXzM7CiAgICAgICAgU1BPT0xfUFJJ
TlRFUl9EUklWRVJfSU5GT19MRVZFTF82ICppbmZvXzY7Cn0KU1BPT0xfUFJJTlRFUl9EUklWRVJf
SU5GT19MRVZFTDsKCgoKCnR5cGVkZWYgc3RydWN0IHNwb29sX3VzZXJfbGV2ZWxfMQp7CiAgICAg
ICAgdW5zaWduZWQgaW50IHNpemU7CiAgICAgICAgdW5zaWduZWQgaW50IGNsaWVudF9uYW1lX3B0
cjsKICAgICAgICB1bnNpZ25lZCBpbnQgdXNlcl9uYW1lX3B0cjsKICAgICAgICB1bnNpZ25lZCBp
bnQgYnVpbGQ7CiAgICAgICAgdW5zaWduZWQgaW50IG1ham9yOwogICAgICAgIHVuc2lnbmVkIGlu
dCBtaW5vcjsKICAgICAgICB1bnNpZ25lZCBpbnQgcHJvY2Vzc29yOwogICAgICAgIFVOSVNUUjIg
Y2xpZW50X25hbWU7CiAgICAgICAgVU5JU1RSMiB1c2VyX25hbWU7Cn0KU1BPT0xfVVNFUl9MRVZF
TF8xOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfdXNlcl9sZXZlbAp7CiAgICAgICAgU1BPT0xfVVNF
Ul9MRVZFTF8xICp1c2VyX2xldmVsXzE7Cn0KU1BPT0xfVVNFUl9MRVZFTDsKCnR5cGVkZWYgc3Ry
dWN0IHNwb29sX3Ffc2V0cHJpbnRlcgp7CiAgICAgICAgUE9MSUNZX0hORCBoYW5kbGU7CiAgICAg
ICAgdW5zaWduZWQgaW50IGxldmVsOwogICAgICAgIFNQT09MX1BSSU5URVJfSU5GT19MRVZFTCBp
bmZvOwogICAgICAgIFNFQ19ERVNDX0JVRiAqc2VjZGVzY19jdHI7CiAgICAgICAgREVWTU9ERV9D
VFIgZGV2bW9kZV9jdHI7CgogICAgICAgIHVuc2lnbmVkIGludCBjb21tYW5kOwoKfQpTUE9PTF9R
X1NFVFBSSU5URVI7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9yX3NldHByaW50ZXIKewogICAgICAg
IFdFUlJPUiBzdGF0dXM7Cn0KU1BPT0xfUl9TRVRQUklOVEVSOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bv
b2xfcV9hZGRwcmludGVyCnsKICAgICAgICBVTklTVFIyIHNlcnZlcl9uYW1lOwogICAgICAgIHVu
c2lnbmVkIGludCBsZXZlbDsKICAgICAgICBTUE9PTF9QUklOVEVSX0lORk9fTEVWRUwgaW5mbzsK
ICAgICAgICB1bnNpZ25lZCBpbnQgdW5rMDsKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rMTsKICAg
ICAgICB1bnNpZ25lZCBpbnQgdW5rMjsKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rMzsKICAgICAg
ICB1bnNpZ25lZCBpbnQgdXNlcl9sZXZlbDsKICAgICAgICBTUE9PTF9VU0VSX0xFVkVMIHVzZXI7
Cn0KU1BPT0xfUV9BRERQUklOVEVSOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcl9hZGRwcmludGVy
CnsKICAgICAgICBXRVJST1Igc3RhdHVzOwp9ClNQT09MX1JfQUREUFJJTlRFUjsKCnR5cGVkZWYg
c3RydWN0IHNwb29sX3FfZGVsZXRlcHJpbnRlcgp7CiAgICAgICAgUE9MSUNZX0hORCBoYW5kbGU7
Cn0KU1BPT0xfUV9ERUxFVEVQUklOVEVSOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcl9kZWxldGVw
cmludGVyCnsKICAgICAgICBQT0xJQ1lfSE5EIGhhbmRsZTsKICAgICAgICBXRVJST1Igc3RhdHVz
Owp9ClNQT09MX1JfREVMRVRFUFJJTlRFUjsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3FfYWJvcnRw
cmludGVyCnsKICAgICAgICBQT0xJQ1lfSE5EIGhhbmRsZTsKfQpTUE9PTF9RX0FCT1JUUFJJTlRF
UjsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfYWJvcnRwcmludGVyCnsKICAgICAgICBXRVJST1Ig
c3RhdHVzOwp9ClNQT09MX1JfQUJPUlRQUklOVEVSOwoKCnR5cGVkZWYgc3RydWN0IHNwb29sX3Ff
YWRkcHJpbnRlcmV4CnsKICAgICAgICB1bnNpZ25lZCBpbnQgc2VydmVyX25hbWVfcHRyOwogICAg
ICAgIFVOSVNUUjIgc2VydmVyX25hbWU7CiAgICAgICAgdW5zaWduZWQgaW50IGxldmVsOwogICAg
ICAgIFNQT09MX1BSSU5URVJfSU5GT19MRVZFTCBpbmZvOwogICAgICAgIHVuc2lnbmVkIGludCB1
bmswOwogICAgICAgIHVuc2lnbmVkIGludCB1bmsxOwogICAgICAgIHVuc2lnbmVkIGludCB1bmsy
OwogICAgICAgIHVuc2lnbmVkIGludCB1bmszOwogICAgICAgIHVuc2lnbmVkIGludCB1c2VyX3N3
aXRjaDsKICAgICAgICBTUE9PTF9VU0VSX0NUUiB1c2VyX2N0cjsKfQpTUE9PTF9RX0FERFBSSU5U
RVJFWDsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfYWRkcHJpbnRlcmV4CnsKICAgICAgICBQT0xJ
Q1lfSE5EIGhhbmRsZTsKICAgICAgICBXRVJST1Igc3RhdHVzOwp9ClNQT09MX1JfQUREUFJJTlRF
UkVYOwoKCnR5cGVkZWYgc3RydWN0IHNwb29sX3FfYWRkcHJpbnRlcmRyaXZlcgp7CiAgICAgICAg
dW5zaWduZWQgaW50IHNlcnZlcl9uYW1lX3B0cjsKICAgICAgICBVTklTVFIyIHNlcnZlcl9uYW1l
OwogICAgICAgIHVuc2lnbmVkIGludCBsZXZlbDsKICAgICAgICBTUE9PTF9QUklOVEVSX0RSSVZF
Ul9JTkZPX0xFVkVMIGluZm87Cn0KU1BPT0xfUV9BRERQUklOVEVSRFJJVkVSOwoKdHlwZWRlZiBz
dHJ1Y3Qgc3Bvb2xfcl9hZGRwcmludGVyZHJpdmVyCnsKICAgICAgICBXRVJST1Igc3RhdHVzOwp9
ClNQT09MX1JfQUREUFJJTlRFUkRSSVZFUjsKCgp0eXBlZGVmIHN0cnVjdCBkcml2ZXJfZGlyZWN0
b3J5XzEKewogICAgICAgIFVOSVNUUiBuYW1lOwp9CkRSSVZFUl9ESVJFQ1RPUllfMTsKCnR5cGVk
ZWYgc3RydWN0IGRyaXZlcl9pbmZvX2N0cl9pbmZvCnsKICAgICAgICBEUklWRVJfRElSRUNUT1JZ
XzEgKmluZm8xOwp9CkRSSVZFUl9ESVJFQ1RPUllfQ1RSOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xf
cV9nZXRwcmludGVyZHJpdmVyZGlyZWN0b3J5CnsKICAgICAgICB1bnNpZ25lZCBpbnQgbmFtZV9w
dHI7CiAgICAgICAgVU5JU1RSMiBuYW1lOwogICAgICAgIHVuc2lnbmVkIGludCBlbnZpcm9ubWVu
dF9wdHI7CiAgICAgICAgVU5JU1RSMiBlbnZpcm9ubWVudDsKICAgICAgICB1bnNpZ25lZCBpbnQg
bGV2ZWw7CiAgICAgICAgTkVXX0JVRkZFUiAqYnVmZmVyOwogICAgICAgIHVuc2lnbmVkIGludCBv
ZmZlcmVkOwp9ClNQT09MX1FfR0VUUFJJTlRFUkRSSVZFUkRJUjsKCnR5cGVkZWYgc3RydWN0IHNw
b29sX3JfZ2V0cHJpbnRlcmRyaXZlcmRpcmVjdG9yeQp7CiAgICAgICAgTkVXX0JVRkZFUiAqYnVm
ZmVyOwogICAgICAgIHVuc2lnbmVkIGludCBuZWVkZWQ7CiAgICAgICAgV0VSUk9SIHN0YXR1czsK
fQpTUE9PTF9SX0dFVFBSSU5URVJEUklWRVJESVI7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9xX2Fk
ZHByaW50cHJvY2Vzc29yCnsKICAgICAgICB1bnNpZ25lZCBpbnQgc2VydmVyX3B0cjsKICAgICAg
ICBVTklTVFIyIHNlcnZlcjsKICAgICAgICBVTklTVFIyIGVudmlyb25tZW50OwogICAgICAgIFVO
SVNUUjIgcGF0aDsKICAgICAgICBVTklTVFIyIG5hbWU7Cn0KU1BPT0xfUV9BRERQUklOVFBST0NF
U1NPUjsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfYWRkcHJpbnRwcm9jZXNzb3IKewogICAgICAg
IFdFUlJPUiBzdGF0dXM7Cn0KU1BPT0xfUl9BRERQUklOVFBST0NFU1NPUjsKCgp0eXBlZGVmIHN0
cnVjdCBzcG9vbF9xX2VudW1wcmludHByb2Nlc3NvcnMKewogICAgICAgIHVuc2lnbmVkIGludCBu
YW1lX3B0cjsKICAgICAgICBVTklTVFIyIG5hbWU7CiAgICAgICAgdW5zaWduZWQgaW50IGVudmly
b25tZW50X3B0cjsKICAgICAgICBVTklTVFIyIGVudmlyb25tZW50OwogICAgICAgIHVuc2lnbmVk
IGludCBsZXZlbDsKICAgICAgICBORVdfQlVGRkVSICpidWZmZXI7CiAgICAgICAgdW5zaWduZWQg
aW50IG9mZmVyZWQ7Cn0KU1BPT0xfUV9FTlVNUFJJTlRQUk9DRVNTT1JTOwoKdHlwZWRlZiBzdHJ1
Y3QgcHJpbnRwcm9jZXNzb3JfMQp7CiAgICAgICAgVU5JU1RSIG5hbWU7Cn0KUFJJTlRQUk9DRVNT
T1JfMTsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfZW51bXByaW50cHJvY2Vzc29ycwp7CiAgICAg
ICAgTkVXX0JVRkZFUiAqYnVmZmVyOwogICAgICAgIHVuc2lnbmVkIGludCBuZWVkZWQ7CiAgICAg
ICAgdW5zaWduZWQgaW50IHJldHVybmVkOwogICAgICAgIFdFUlJPUiBzdGF0dXM7Cn0KU1BPT0xf
Ul9FTlVNUFJJTlRQUk9DRVNTT1JTOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcV9lbnVtcHJpbnRw
cm9jZGF0YXR5cGVzCnsKICAgICAgICB1bnNpZ25lZCBpbnQgbmFtZV9wdHI7CiAgICAgICAgVU5J
U1RSMiBuYW1lOwogICAgICAgIHVuc2lnbmVkIGludCBwcm9jZXNzb3JfcHRyOwogICAgICAgIFVO
SVNUUjIgcHJvY2Vzc29yOwogICAgICAgIHVuc2lnbmVkIGludCBsZXZlbDsKICAgICAgICBORVdf
QlVGRkVSICpidWZmZXI7CiAgICAgICAgdW5zaWduZWQgaW50IG9mZmVyZWQ7Cn0KU1BPT0xfUV9F
TlVNUFJJTlRQUk9DREFUQVRZUEVTOwoKdHlwZWRlZiBzdHJ1Y3QgcHBkYXRhdHlwZV8xCnsKICAg
ICAgICBVTklTVFIgbmFtZTsKfQpQUklOVFBST0NEQVRBVFlQRV8xOwoKdHlwZWRlZiBzdHJ1Y3Qg
c3Bvb2xfcl9lbnVtcHJpbnRwcm9jZGF0YXR5cGVzCnsKICAgICAgICBORVdfQlVGRkVSICpidWZm
ZXI7CiAgICAgICAgdW5zaWduZWQgaW50IG5lZWRlZDsKICAgICAgICB1bnNpZ25lZCBpbnQgcmV0
dXJuZWQ7CiAgICAgICAgV0VSUk9SIHN0YXR1czsKfQpTUE9PTF9SX0VOVU1QUklOVFBST0NEQVRB
VFlQRVM7Cgp0eXBlZGVmIHN0cnVjdCBwcmludG1vbml0b3JfMQp7CiAgICAgICAgVU5JU1RSIG5h
bWU7Cn0KUFJJTlRNT05JVE9SXzE7Cgp0eXBlZGVmIHN0cnVjdCBwcmludG1vbml0b3JfMgp7CiAg
ICAgICAgVU5JU1RSIG5hbWU7CiAgICAgICAgVU5JU1RSIGVudmlyb25tZW50OwogICAgICAgIFVO
SVNUUiBkbGxfbmFtZTsKfQpQUklOVE1PTklUT1JfMjsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3Ff
ZW51bXByaW50bW9uaXRvcnMKewogICAgICAgIHVuc2lnbmVkIGludCBuYW1lX3B0cjsKICAgICAg
ICBVTklTVFIyIG5hbWU7CiAgICAgICAgdW5zaWduZWQgaW50IGxldmVsOwogICAgICAgIE5FV19C
VUZGRVIgKmJ1ZmZlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgb2ZmZXJlZDsKfQpTUE9PTF9RX0VO
VU1QUklOVE1PTklUT1JTOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcl9lbnVtcHJpbnRtb25pdG9y
cwp7CiAgICAgICAgTkVXX0JVRkZFUiAqYnVmZmVyOwogICAgICAgIHVuc2lnbmVkIGludCBuZWVk
ZWQ7CiAgICAgICAgdW5zaWduZWQgaW50IHJldHVybmVkOwogICAgICAgIFdFUlJPUiBzdGF0dXM7
Cn0KU1BPT0xfUl9FTlVNUFJJTlRNT05JVE9SUzsKCgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9xX2Vu
dW1wcmludGVyZGF0YQp7CiAgICAgICAgUE9MSUNZX0hORCBoYW5kbGU7CiAgICAgICAgdW5zaWdu
ZWQgaW50IGluZGV4OwogICAgICAgIHVuc2lnbmVkIGludCB2YWx1ZXNpemU7CiAgICAgICAgdW5z
aWduZWQgaW50IGRhdGFzaXplOwp9ClNQT09MX1FfRU5VTVBSSU5URVJEQVRBOwoKdHlwZWRlZiBz
dHJ1Y3Qgc3Bvb2xfcl9lbnVtcHJpbnRlcmRhdGEKewogICAgICAgIHVuc2lnbmVkIGludCB2YWx1
ZXNpemU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgKnZhbHVlOwogICAgICAgIHVuc2lnbmVkIGlu
dCByZWFsdmFsdWVzaXplOwogICAgICAgIHVuc2lnbmVkIGludCB0eXBlOwogICAgICAgIHVuc2ln
bmVkIGludCBkYXRhc2l6ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyICpkYXRhOwogICAgICAgIHVu
c2lnbmVkIGludCByZWFsZGF0YXNpemU7CiAgICAgICAgV0VSUk9SIHN0YXR1czsKfQpTUE9PTF9S
X0VOVU1QUklOVEVSREFUQTsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3Ffc2V0cHJpbnRlcmRhdGEK
ewogICAgICAgIFBPTElDWV9ITkQgaGFuZGxlOwogICAgICAgIFVOSVNUUjIgdmFsdWU7CiAgICAg
ICAgdW5zaWduZWQgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgaW50IG1heF9sZW47CiAgICAg
ICAgdW5zaWduZWQgY2hhciAqZGF0YTsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVhbF9sZW47CiAg
ICAgICAgdW5zaWduZWQgaW50IG51bWVyaWNfZGF0YTsKfQpTUE9PTF9RX1NFVFBSSU5URVJEQVRB
OwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcl9zZXRwcmludGVyZGF0YQp7CiAgICAgICAgV0VSUk9S
IHN0YXR1czsKfQpTUE9PTF9SX1NFVFBSSU5URVJEQVRBOwoKdHlwZWRlZiBzdHJ1Y3QgX2Zvcm0K
ewogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQgbmFtZV9w
dHI7CiAgICAgICAgdW5zaWduZWQgaW50IHNpemVfeDsKICAgICAgICB1bnNpZ25lZCBpbnQgc2l6
ZV95OwogICAgICAgIHVuc2lnbmVkIGludCBsZWZ0OwogICAgICAgIHVuc2lnbmVkIGludCB0b3A7
CiAgICAgICAgdW5zaWduZWQgaW50IHJpZ2h0OwogICAgICAgIHVuc2lnbmVkIGludCBib3R0b207
CiAgICAgICAgVU5JU1RSMiBuYW1lOwp9CkZPUk07Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9xX2Fk
ZGZvcm0KewogICAgICAgIFBPTElDWV9ITkQgaGFuZGxlOwogICAgICAgIHVuc2lnbmVkIGludCBs
ZXZlbDsKICAgICAgICB1bnNpZ25lZCBpbnQgbGV2ZWwyOwogICAgICAgIEZPUk0gZm9ybTsKfQpT
UE9PTF9RX0FEREZPUk07Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9yX2FkZGZvcm0KewogICAgICAg
IFdFUlJPUiBzdGF0dXM7Cn0KU1BPT0xfUl9BRERGT1JNOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xf
cV9zZXRmb3JtCnsKICAgICAgICBQT0xJQ1lfSE5EIGhhbmRsZTsKICAgICAgICBVTklTVFIyIG5h
bWU7CiAgICAgICAgdW5zaWduZWQgaW50IGxldmVsOwogICAgICAgIHVuc2lnbmVkIGludCBsZXZl
bDI7CiAgICAgICAgRk9STSBmb3JtOwp9ClNQT09MX1FfU0VURk9STTsKCnR5cGVkZWYgc3RydWN0
IHNwb29sX3Jfc2V0Zm9ybQp7CiAgICAgICAgV0VSUk9SIHN0YXR1czsKfQpTUE9PTF9SX1NFVEZP
Uk07Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9xX2RlbGV0ZWZvcm0KewogICAgICAgIFBPTElDWV9I
TkQgaGFuZGxlOwogICAgICAgIFVOSVNUUjIgbmFtZTsKfQpTUE9PTF9RX0RFTEVURUZPUk07Cgp0
eXBlZGVmIHN0cnVjdCBzcG9vbF9yX2RlbGV0ZWZvcm0KewogICAgICAgIFdFUlJPUiBzdGF0dXM7
Cn0KU1BPT0xfUl9ERUxFVEVGT1JNOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcV9nZXRqb2IKewog
ICAgICAgIFBPTElDWV9ITkQgaGFuZGxlOwogICAgICAgIHVuc2lnbmVkIGludCBqb2JpZDsKICAg
ICAgICB1bnNpZ25lZCBpbnQgbGV2ZWw7CiAgICAgICAgTkVXX0JVRkZFUiAqYnVmZmVyOwogICAg
ICAgIHVuc2lnbmVkIGludCBvZmZlcmVkOwp9ClNQT09MX1FfR0VUSk9COwoKdHlwZWRlZiBzdHJ1
Y3QgcGpvYl9pbmZvX2luZm8KewogICAgICAgIHVuaW9uCiAgICAgICAgewogICAgICAgICAgICAg
ICAgSk9CX0lORk9fMSAqam9iX2luZm9fMTsKICAgICAgICAgICAgICAgIEpPQl9JTkZPXzIgKmpv
Yl9pbmZvXzI7CiAgICAgICAgICAgICAgICB2b2lkICppbmZvOwogICAgICAgIH0KICAgICAgICBq
b2I7Cgp9ClBKT0JfSU5GTzsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfZ2V0am9iCnsKICAgICAg
ICBORVdfQlVGRkVSICpidWZmZXI7CiAgICAgICAgdW5zaWduZWQgaW50IG5lZWRlZDsKICAgICAg
ICBXRVJST1Igc3RhdHVzOwp9ClNQT09MX1JfR0VUSk9COwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xf
cV9yZXBseW9wZW5wcmludGVyCnsKICAgICAgICBVTklTVFIyIHN0cmluZzsKICAgICAgICB1bnNp
Z25lZCBpbnQgcHJpbnRlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgdHlwZTsKICAgICAgICB1bnNp
Z25lZCBpbnQgdW5rbm93bjA7CiAgICAgICAgdW5zaWduZWQgaW50IHVua25vd24xOwp9ClNQT09M
X1FfUkVQTFlPUEVOUFJJTlRFUjsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfcmVwbHlvcGVucHJp
bnRlcgp7CiAgICAgICAgUE9MSUNZX0hORCBoYW5kbGU7CiAgICAgICAgV0VSUk9SIHN0YXR1czsK
fQpTUE9PTF9SX1JFUExZT1BFTlBSSU5URVI7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9xX3JlcGx5
Y2xvc2VwcmludGVyCnsKICAgICAgICBQT0xJQ1lfSE5EIGhhbmRsZTsKfQpTUE9PTF9RX1JFUExZ
Q0xPU0VQUklOVEVSOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcl9yZXBseWNsb3NlcHJpbnRlcgp7
CiAgICAgICAgUE9MSUNZX0hORCBoYW5kbGU7CiAgICAgICAgV0VSUk9SIHN0YXR1czsKfQpTUE9P
TF9SX1JFUExZQ0xPU0VQUklOVEVSOwoKdHlwZWRlZiBzdHJ1Y3Qgc3Bvb2xfcV9ycnBjbgp7CiAg
ICAgICAgUE9MSUNZX0hORCBoYW5kbGU7CiAgICAgICAgdW5zaWduZWQgaW50IGNoYW5nZV9sb3c7
CiAgICAgICAgdW5zaWduZWQgaW50IGNoYW5nZV9oaWdoOwogICAgICAgIHVuc2lnbmVkIGludCB1
bmtub3duMDsKICAgICAgICB1bnNpZ25lZCBpbnQgdW5rbm93bjE7CiAgICAgICAgdW5zaWduZWQg
aW50IGluZm9fcHRyOwogICAgICAgIFNQT09MX05PVElGWV9JTkZPIGluZm87Cn0KU1BPT0xfUV9S
RVBMWV9SUlBDTjsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfcnJwY24KewogICAgICAgIHVuc2ln
bmVkIGludCB1bmtub3duMDsKICAgICAgICBXRVJST1Igc3RhdHVzOwp9ClNQT09MX1JfUkVQTFlf
UlJQQ047Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9xX2dldHByaW50ZXJkYXRhZXgKewogICAgICAg
IFBPTElDWV9ITkQgaGFuZGxlOwogICAgICAgIFVOSVNUUjIga2V5bmFtZTsKICAgICAgICBVTklT
VFIyIHZhbHVlbmFtZTsKICAgICAgICB1bnNpZ25lZCBpbnQgc2l6ZTsKfQpTUE9PTF9RX0dFVFBS
SU5URVJEQVRBRVg7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9yX2dldHByaW50ZXJkYXRhZXgKewog
ICAgICAgIHVuc2lnbmVkIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGludCBzaXplOwogICAg
ICAgIHVuc2lnbmVkIGNoYXIgKmRhdGE7CiAgICAgICAgdW5zaWduZWQgaW50IG5lZWRlZDsKICAg
ICAgICBXRVJST1Igc3RhdHVzOwp9ClNQT09MX1JfR0VUUFJJTlRFUkRBVEFFWDsKCnR5cGVkZWYg
c3RydWN0IHNwb29sX3Ffc2V0cHJpbnRlcmRhdGFleAp7CiAgICAgICAgUE9MSUNZX0hORCBoYW5k
bGU7CiAgICAgICAgVU5JU1RSMiBrZXk7CiAgICAgICAgVU5JU1RSMiB2YWx1ZTsKICAgICAgICB1
bnNpZ25lZCBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBpbnQgbWF4X2xlbjsKICAgICAgICB1
bnNpZ25lZCBjaGFyICpkYXRhOwogICAgICAgIHVuc2lnbmVkIGludCByZWFsX2xlbjsKICAgICAg
ICB1bnNpZ25lZCBpbnQgbnVtZXJpY19kYXRhOwp9ClNQT09MX1FfU0VUUFJJTlRFUkRBVEFFWDsK
CnR5cGVkZWYgc3RydWN0IHNwb29sX3Jfc2V0cHJpbnRlcmRhdGFleAp7CiAgICAgICAgV0VSUk9S
IHN0YXR1czsKfQpTUE9PTF9SX1NFVFBSSU5URVJEQVRBRVg7CgoKdHlwZWRlZiBzdHJ1Y3Qgc3Bv
b2xfcV9lbnVtcHJpbnRlcmtleQp7CiAgICAgICAgUE9MSUNZX0hORCBoYW5kbGU7CiAgICAgICAg
VU5JU1RSMiBrZXk7CiAgICAgICAgdW5zaWduZWQgaW50IHNpemU7Cn0KU1BPT0xfUV9FTlVNUFJJ
TlRFUktFWTsKCnR5cGVkZWYgc3RydWN0IHNwb29sX3JfZW51bXByaW50ZXJrZXkKewogICAgICAg
IEJVRkZFUjUga2V5czsKICAgICAgICB1bnNpZ25lZCBpbnQgbmVlZGVkOwogICAgICAgIFdFUlJP
UiBzdGF0dXM7Cn0KU1BPT0xfUl9FTlVNUFJJTlRFUktFWTsKCnR5cGVkZWYgc3RydWN0IHByaW50
ZXJfZW51bV92YWx1ZXMKewogICAgICAgIFVOSVNUUiB2YWx1ZW5hbWU7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHZhbHVlX2xlbjsKICAgICAgICB1bnNpZ25lZCBpbnQgdHlwZTsKICAgICAgICB1bnNp
Z25lZCBjaGFyICpkYXRhOwogICAgICAgIHVuc2lnbmVkIGludCBkYXRhX2xlbjsKCn0KUFJJTlRF
Ul9FTlVNX1ZBTFVFUzsKCnR5cGVkZWYgc3RydWN0IHByaW50ZXJfZW51bV92YWx1ZXNfY3RyCnsK
ICAgICAgICB1bnNpZ25lZCBpbnQgc2l6ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgc2l6ZV9vZl9h
cnJheTsKICAgICAgICBQUklOVEVSX0VOVU1fVkFMVUVTICp2YWx1ZXM7Cn0KUFJJTlRFUl9FTlVN
X1ZBTFVFU19DVFI7Cgp0eXBlZGVmIHN0cnVjdCBzcG9vbF9xX2VudW1wcmludGVyZGF0YWV4CnsK
ICAgICAgICBQT0xJQ1lfSE5EIGhhbmRsZTsKICAgICAgICBVTklTVFIyIGtleTsKICAgICAgICB1
bnNpZ25lZCBpbnQgc2l6ZTsKfQpTUE9PTF9RX0VOVU1QUklOVEVSREFUQUVYOwoKdHlwZWRlZiBz
dHJ1Y3Qgc3Bvb2xfcl9lbnVtcHJpbnRlcmRhdGFleAp7CiAgICAgICAgUFJJTlRFUl9FTlVNX1ZB
TFVFU19DVFIgY3RyOwogICAgICAgIHVuc2lnbmVkIGludCBuZWVkZWQ7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHJldHVybmVkOwogICAgICAgIFdFUlJPUiBzdGF0dXM7Cn0KU1BPT0xfUl9FTlVNUFJJ
TlRFUkRBVEFFWDsKCnR5cGVkZWYgc3RydWN0IHByaW50cHJvY2Vzc29yX2RpcmVjdG9yeV8xCnsK
ICAgICAgICBVTklTVFIgbmFtZTsKfQpQUklOVFBST0NFU1NPUl9ESVJFQ1RPUllfMTsKCnR5cGVk
ZWYgc3RydWN0IHNwb29sX3FfZ2V0cHJpbnRwcm9jZXNzb3JkaXJlY3RvcnkKewogICAgICAgIFVO
SVNUUjIgbmFtZTsKICAgICAgICBVTklTVFIyIGVudmlyb25tZW50OwogICAgICAgIHVuc2lnbmVk
IGludCBsZXZlbDsKICAgICAgICBORVdfQlVGRkVSICpidWZmZXI7CiAgICAgICAgdW5zaWduZWQg
aW50IG9mZmVyZWQ7Cn0KU1BPT0xfUV9HRVRQUklOVFBST0NFU1NPUkRJUkVDVE9SWTsKCnR5cGVk
ZWYgc3RydWN0IHNwb29sX3JfZ2V0cHJpbnRwcm9jZXNzb3JkaXJlY3RvcnkKewogICAgICAgIE5F
V19CVUZGRVIgKmJ1ZmZlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgbmVlZGVkOwogICAgICAgIFdF
UlJPUiBzdGF0dXM7Cn0KU1BPT0xfUl9HRVRQUklOVFBST0NFU1NPUkRJUkVDVE9SWTsKIyAyODUg
ImluY2x1ZGUvbnRkb21haW4uaCIgMgojIDEgImluY2x1ZGUvcnBjX2Rmcy5oIiAxCiMgMzggImlu
Y2x1ZGUvcnBjX2Rmcy5oIgp0eXBlZGVmIHN0cnVjdCBkZnNfcV9kZnNfZXhpc3QKewogIHVuc2ln
bmVkIGludCBkdW1teTsKfQpERlNfUV9ERlNfRVhJU1Q7CgoKdHlwZWRlZiBzdHJ1Y3QgZGZzX3Jf
ZGZzX2V4aXN0CnsKICAgICAgICB1bnNpZ25lZCBpbnQgc3RhdHVzOwp9CkRGU19SX0RGU19FWElT
VDsKCnR5cGVkZWYgc3RydWN0IGRmc19xX2Rmc19hZGQKewogIHVuc2lnbmVkIGludCBwdHJfRGZz
RW50cnlQYXRoOwogIFVOSVNUUjIgRGZzRW50cnlQYXRoOwogIHVuc2lnbmVkIGludCBwdHJfU2Vy
dmVyTmFtZTsKICBVTklTVFIyIFNlcnZlck5hbWU7CiAgdW5zaWduZWQgaW50IHB0cl9TaGFyZU5h
bWU7CiAgVU5JU1RSMiBTaGFyZU5hbWU7CiAgdW5zaWduZWQgaW50IHB0cl9Db21tZW50OwogIFVO
SVNUUjIgQ29tbWVudDsKICB1bnNpZ25lZCBpbnQgRmxhZ3M7Cn0KREZTX1FfREZTX0FERDsKCnR5
cGVkZWYgc3RydWN0IGRmc19yX2Rmc19hZGQKewogIFdFUlJPUiBzdGF0dXM7Cn0KREZTX1JfREZT
X0FERDsKCgp0eXBlZGVmIHN0cnVjdCBkZnNfcV9kZnNfcmVtb3ZlCnsKICBVTklTVFIyIERmc0Vu
dHJ5UGF0aDsKICB1bnNpZ25lZCBpbnQgcHRyX1NlcnZlck5hbWU7CiAgVU5JU1RSMiBTZXJ2ZXJO
YW1lOwogIHVuc2lnbmVkIGludCBwdHJfU2hhcmVOYW1lOwogIFVOSVNUUjIgU2hhcmVOYW1lOwp9
CkRGU19RX0RGU19SRU1PVkU7Cgp0eXBlZGVmIHN0cnVjdCBkZnNfcl9kZnNfcmVtb3ZlCnsKICBX
RVJST1Igc3RhdHVzOwp9CkRGU19SX0RGU19SRU1PVkU7CgoKdHlwZWRlZiBzdHJ1Y3QgZGZzX2lu
Zm9fMQp7CiAgdW5zaWduZWQgaW50IHB0cl9lbnRyeXBhdGg7CiAgVU5JU1RSMiBlbnRyeXBhdGg7
Cn0KREZTX0lORk9fMTsKCnR5cGVkZWYgc3RydWN0IGRmc19pbmZvXzIKewogIHVuc2lnbmVkIGlu
dCBwdHJfZW50cnlwYXRoOwogIFVOSVNUUjIgZW50cnlwYXRoOwogIHVuc2lnbmVkIGludCBwdHJf
Y29tbWVudDsKICBVTklTVFIyIGNvbW1lbnQ7CiAgdW5zaWduZWQgaW50IHN0YXRlOwogIHVuc2ln
bmVkIGludCBudW1fc3RvcmFnZXM7Cn0KREZTX0lORk9fMjsKCnR5cGVkZWYgc3RydWN0IGRmc19z
dG9yYWdlX2luZm8KewogIHVuc2lnbmVkIGludCBzdGF0ZTsKICB1bnNpZ25lZCBpbnQgcHRyX3Nl
cnZlcm5hbWU7CiAgVU5JU1RSMiBzZXJ2ZXJuYW1lOwogIHVuc2lnbmVkIGludCBwdHJfc2hhcmVu
YW1lOwogIFVOSVNUUjIgc2hhcmVuYW1lOwp9CkRGU19TVE9SQUdFX0lORk87Cgp0eXBlZGVmIHN0
cnVjdCBkZnNfaW5mb18zCnsKICB1bnNpZ25lZCBpbnQgcHRyX2VudHJ5cGF0aDsKICBVTklTVFIy
IGVudHJ5cGF0aDsKICB1bnNpZ25lZCBpbnQgcHRyX2NvbW1lbnQ7CiAgVU5JU1RSMiBjb21tZW50
OwogIHVuc2lnbmVkIGludCBzdGF0ZTsKICB1bnNpZ25lZCBpbnQgbnVtX3N0b3JhZ2VzOwogIHVu
c2lnbmVkIGludCBwdHJfc3RvcmFnZXM7CiAgdW5zaWduZWQgaW50IG51bV9zdG9yYWdlX2luZm9z
OwogIERGU19TVE9SQUdFX0lORk8qIHN0b3JhZ2VzOwp9CkRGU19JTkZPXzM7Cgp0eXBlZGVmIHN0
cnVjdCBkZnNfaW5mb19jdHIKewoKICB1bnNpZ25lZCBpbnQgc3dpdGNoX3ZhbHVlOwogIHVuc2ln
bmVkIGludCBudW1fZW50cmllczsKICB1bnNpZ25lZCBpbnQgcHRyX2Rmc19jdHI7CiAgdW5pb24K
ICB7CiAgICBERlNfSU5GT18xICppbmZvMTsKICAgIERGU19JTkZPXzIgKmluZm8yOwogICAgREZT
X0lORk9fMyAqaW5mbzM7CiAgfSBkZnM7Cn0KREZTX0lORk9fQ1RSOwoKdHlwZWRlZiBzdHJ1Y3Qg
ZGZzX3FfZGZzX2dldF9pbmZvCnsKICBVTklTVFIyIHVuaV9wYXRoOwoKICB1bnNpZ25lZCBpbnQg
cHRyX3NlcnZlcjsKICBVTklTVFIyIHVuaV9zZXJ2ZXI7CgogIHVuc2lnbmVkIGludCBwdHJfc2hh
cmU7CiAgVU5JU1RSMiB1bmlfc2hhcmU7CgogIHVuc2lnbmVkIGludCBsZXZlbDsKfQpERlNfUV9E
RlNfR0VUX0lORk87Cgp0eXBlZGVmIHN0cnVjdCBkZnNfcl9kZnNfZ2V0X2luZm8KewogIHVuc2ln
bmVkIGludCBsZXZlbDsKICB1bnNpZ25lZCBpbnQgcHRyX2N0cjsKICBERlNfSU5GT19DVFIgY3Ry
OwogIFdFUlJPUiBzdGF0dXM7Cn0KREZTX1JfREZTX0dFVF9JTkZPOwoKdHlwZWRlZiBzdHJ1Y3Qg
ZGZzX3FfZGZzX2VudW0KewogIHVuc2lnbmVkIGludCBsZXZlbDsKICB1bnNpZ25lZCBpbnQgbWF4
cHJlZmxlbjsKICB1bnNpZ25lZCBpbnQgcHRyX2J1ZmZlcjsKICB1bnNpZ25lZCBpbnQgbGV2ZWwy
OwogIHVuc2lnbmVkIGludCBwdHJfbnVtX2VudHJpZXM7CiAgdW5zaWduZWQgaW50IG51bV9lbnRy
aWVzOwogIHVuc2lnbmVkIGludCBwdHJfbnVtX2VudHJpZXMyOwogIHVuc2lnbmVkIGludCBudW1f
ZW50cmllczI7CiAgRU5VTV9ITkQgcmVzaG5kOwp9CkRGU19RX0RGU19FTlVNOwoKdHlwZWRlZiBz
dHJ1Y3QgZGZzX3JfZGZzX2VudW0KewogIERGU19JTkZPX0NUUiAqY3RyOwogIHVuc2lnbmVkIGlu
dCBwdHJfYnVmZmVyOwogIHVuc2lnbmVkIGludCBsZXZlbDsKICB1bnNpZ25lZCBpbnQgbGV2ZWwy
OwogIHVuc2lnbmVkIGludCBwdHJfbnVtX2VudHJpZXM7CiAgdW5zaWduZWQgaW50IG51bV9lbnRy
aWVzOwogIHVuc2lnbmVkIGludCBwdHJfbnVtX2VudHJpZXMyOwogIHVuc2lnbmVkIGludCBudW1f
ZW50cmllczI7CiAgRU5VTV9ITkQgcmVzaG5kOwogIFdFUlJPUiBzdGF0dXM7Cn0KREZTX1JfREZT
X0VOVU07CiMgMjg2ICJpbmNsdWRlL250ZG9tYWluLmgiIDIKIyAxICJpbmNsdWRlL3NpZHMuaCIg
MQojIDI3ICJpbmNsdWRlL3NpZHMuaCIKZXh0ZXJuIERPTV9TSUQgZ2xvYmFsX3NhbV9zaWQ7CmV4
dGVybiBmc3RyaW5nIGdsb2JhbF9zYW1fbmFtZTsKCmV4dGVybiBET01fU0lEIGdsb2JhbF9tZW1i
ZXJfc2lkOwoKZXh0ZXJuIERPTV9TSUQgZ2xvYmFsX3NpZF9TXzFfNV8zMjsKZXh0ZXJuIERPTV9T
SUQgZ2xvYmFsX3NpZF9TXzFfMTsKZXh0ZXJuIERPTV9TSUQgZ2xvYmFsX3NpZF9OVUxMOwoKZXh0
ZXJuIGNvbnN0IERPTV9TSUQgKmdsb2JhbF9zaWRfZXZlcnlvbmU7CmV4dGVybiBjb25zdCBET01f
U0lEICpnbG9iYWxfc2lkX3N5c3RlbTsKZXh0ZXJuIGNvbnN0IERPTV9TSUQgKmdsb2JhbF9zaWRf
YnVpbHRpbjsKIyAyODcgImluY2x1ZGUvbnRkb21haW4uaCIgMgojIDI1ICJpbmNsdWRlL3JwY19t
aXNjLmgiIDIKIyAxNTk1ICJpbmNsdWRlL3NtYi5oIiAyCgojIDEgImluY2x1ZGUvbnRfcHJpbnRp
bmcuaCIgMQojIDEzNiAiaW5jbHVkZS9udF9wcmludGluZy5oIgp0eXBlZGVmIHN0cnVjdCBudF9w
cmludGVyX2RyaXZlcl9pbmZvX2xldmVsXzMKewogICAgICAgIHVuc2lnbmVkIGludCBjdmVyc2lv
bjsKCiAgICAgICAgZnN0cmluZyBuYW1lOwogICAgICAgIGZzdHJpbmcgZW52aXJvbm1lbnQ7CiAg
ICAgICAgZnN0cmluZyBkcml2ZXJwYXRoOwogICAgICAgIGZzdHJpbmcgZGF0YWZpbGU7CiAgICAg
ICAgZnN0cmluZyBjb25maWdmaWxlOwogICAgICAgIGZzdHJpbmcgaGVscGZpbGU7CiAgICAgICAg
ZnN0cmluZyBtb25pdG9ybmFtZTsKICAgICAgICBmc3RyaW5nIGRlZmF1bHRkYXRhdHlwZTsKICAg
ICAgICBmc3RyaW5nICpkZXBlbmRlbnRmaWxlczsKfSBOVF9QUklOVEVSX0RSSVZFUl9JTkZPX0xF
VkVMXzM7CgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGludCB2ZXJzaW9uOwog
ICAgICAgIGZzdHJpbmcgbmFtZTsKICAgICAgICBmc3RyaW5nIGVudmlyb25tZW50OwogICAgICAg
IGZzdHJpbmcgZHJpdmVycGF0aDsKICAgICAgICBmc3RyaW5nIGRhdGFmaWxlOwogICAgICAgIGZz
dHJpbmcgY29uZmlnZmlsZTsKICAgICAgICBmc3RyaW5nIGhlbHBmaWxlOwogICAgICAgIGZzdHJp
bmcgbW9uaXRvcm5hbWU7CiAgICAgICAgZnN0cmluZyBkZWZhdWx0ZGF0YXR5cGU7CiAgICAgICAg
ZnN0cmluZyBtZmduYW1lOwogICAgICAgIGZzdHJpbmcgb2VtdXJsOwogICAgICAgIGZzdHJpbmcg
aGFyZHdhcmVpZDsKICAgICAgICBmc3RyaW5nIHByb3ZpZGVyOwogICAgICAgIGZzdHJpbmcgKmRl
cGVuZGVudGZpbGVzOwogICAgICAgIGZzdHJpbmcgKnByZXZpb3VzbmFtZXM7Cn0gTlRfUFJJTlRF
Ul9EUklWRVJfSU5GT19MRVZFTF82OwoKCnR5cGVkZWYgc3RydWN0IG50X3ByaW50ZXJfZHJpdmVy
X2luZm9fbGV2ZWwKewogICAgICAgIE5UX1BSSU5URVJfRFJJVkVSX0lORk9fTEVWRUxfMyAqaW5m
b18zOwogICAgICAgIE5UX1BSSU5URVJfRFJJVkVSX0lORk9fTEVWRUxfNiAqaW5mb182Owp9IE5U
X1BSSU5URVJfRFJJVkVSX0lORk9fTEVWRUw7Cgp0eXBlZGVmIHN0cnVjdCBudF9wcmludGVyX3Bh
cmFtCnsKICAgICAgICBmc3RyaW5nIHZhbHVlOwogICAgICAgIHVuc2lnbmVkIGludCB0eXBlOwog
ICAgICAgIHVuc2lnbmVkIGNoYXIgKmRhdGE7CiAgICAgICAgaW50IGRhdGFfbGVuOwogICAgICAg
IHN0cnVjdCBudF9wcmludGVyX3BhcmFtICpuZXh0Owp9IE5UX1BSSU5URVJfUEFSQU07Cgp0eXBl
ZGVmIHN0cnVjdCBudGRldmljZW1vZGUKewogICAgICAgIGZzdHJpbmcgZGV2aWNlbmFtZTsKICAg
ICAgICBmc3RyaW5nIGZvcm1uYW1lOwoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzcGVjdmVyc2lv
bjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkcml2ZXJ2ZXJzaW9uOwogICAgICAgIHVuc2lnbmVk
IHNob3J0IHNpemU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZHJpdmVyZXh0cmE7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgb3JpZW50YXRpb247CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcGFwZXJz
aXplOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHBhcGVybGVuZ3RoOwogICAgICAgIHVuc2lnbmVk
IHNob3J0IHBhcGVyd2lkdGg7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2NhbGU7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgY29waWVzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRlZmF1bHRzb3Vy
Y2U7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcHJpbnRxdWFsaXR5OwogICAgICAgIHVuc2lnbmVk
IHNob3J0IGNvbG9yOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGR1cGxleDsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCB5cmVzb2x1dGlvbjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB0dG9wdGlvbjsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBjb2xsYXRlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGxv
Z3BpeGVsczsKCiAgICAgICAgdW5zaWduZWQgaW50IGZpZWxkczsKICAgICAgICB1bnNpZ25lZCBp
bnQgYml0c3BlcnBlbDsKICAgICAgICB1bnNpZ25lZCBpbnQgcGVsc3dpZHRoOwogICAgICAgIHVu
c2lnbmVkIGludCBwZWxzaGVpZ2h0OwogICAgICAgIHVuc2lnbmVkIGludCBkaXNwbGF5ZmxhZ3M7
CiAgICAgICAgdW5zaWduZWQgaW50IGRpc3BsYXlmcmVxdWVuY3k7CiAgICAgICAgdW5zaWduZWQg
aW50IGljbW1ldGhvZDsKICAgICAgICB1bnNpZ25lZCBpbnQgaWNtaW50ZW50OwogICAgICAgIHVu
c2lnbmVkIGludCBtZWRpYXR5cGU7CiAgICAgICAgdW5zaWduZWQgaW50IGRpdGhlcnR5cGU7CiAg
ICAgICAgdW5zaWduZWQgaW50IHJlc2VydmVkMTsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzZXJ2
ZWQyOwogICAgICAgIHVuc2lnbmVkIGludCBwYW5uaW5nd2lkdGg7CiAgICAgICAgdW5zaWduZWQg
aW50IHBhbm5pbmdoZWlnaHQ7CiAgICAgICAgdW5zaWduZWQgY2hhciAqcHJpdmF0ZTsKfSBOVF9E
RVZJQ0VNT0RFOwoKdHlwZWRlZiBzdHJ1Y3QgbnRfcHJpbnRlcl9pbmZvX2xldmVsXzIKewogICAg
ICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGVzOwogICAgICAgIHVuc2lnbmVkIGludCBwcmlvcml0
eTsKICAgICAgICB1bnNpZ25lZCBpbnQgZGVmYXVsdF9wcmlvcml0eTsKICAgICAgICB1bnNpZ25l
ZCBpbnQgc3RhcnR0aW1lOwogICAgICAgIHVuc2lnbmVkIGludCB1bnRpbHRpbWU7CiAgICAgICAg
V0VSUk9SIHN0YXR1czsKICAgICAgICB1bnNpZ25lZCBpbnQgY2pvYnM7CiAgICAgICAgdW5zaWdu
ZWQgaW50IGF2ZXJhZ2VwcG07CiAgICAgICAgZnN0cmluZyBzZXJ2ZXJuYW1lOwogICAgICAgIGZz
dHJpbmcgcHJpbnRlcm5hbWU7CiAgICAgICAgZnN0cmluZyBzaGFyZW5hbWU7CiAgICAgICAgZnN0
cmluZyBwb3J0bmFtZTsKICAgICAgICBmc3RyaW5nIGRyaXZlcm5hbWU7CiAgICAgICAgcHN0cmlu
ZyBjb21tZW50OwogICAgICAgIGZzdHJpbmcgbG9jYXRpb247CiAgICAgICAgTlRfREVWSUNFTU9E
RSAqZGV2bW9kZTsKICAgICAgICBmc3RyaW5nIHNlcGZpbGU7CiAgICAgICAgZnN0cmluZyBwcmlu
dHByb2Nlc3NvcjsKICAgICAgICBmc3RyaW5nIGRhdGF0eXBlOwogICAgICAgIGZzdHJpbmcgcGFy
YW1ldGVyczsKICAgICAgICBOVF9QUklOVEVSX1BBUkFNICpzcGVjaWZpYzsKICAgICAgICBTRUNf
REVTQ19CVUYgKnNlY2Rlc2NfYnVmOwoKICAgICAgICB1bnNpZ25lZCBpbnQgY2hhbmdlaWQ7CiAg
ICAgICAgdW5zaWduZWQgaW50IGNfc2V0cHJpbnRlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgc2V0
dXB0aW1lOwp9IE5UX1BSSU5URVJfSU5GT19MRVZFTF8yOwoKdHlwZWRlZiBzdHJ1Y3QgbnRfcHJp
bnRlcl9pbmZvX2xldmVsCnsKICAgICAgICBOVF9QUklOVEVSX0lORk9fTEVWRUxfMiAqaW5mb18y
Owp9IE5UX1BSSU5URVJfSU5GT19MRVZFTDsKCnR5cGVkZWYgc3RydWN0CnsKICAgICAgICBmc3Ry
aW5nIG5hbWU7CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWc7CiAgICAgICAgdW5zaWduZWQgaW50
IHdpZHRoOwogICAgICAgIHVuc2lnbmVkIGludCBsZW5ndGg7CiAgICAgICAgdW5zaWduZWQgaW50
IGxlZnQ7CiAgICAgICAgdW5zaWduZWQgaW50IHRvcDsKICAgICAgICB1bnNpZ25lZCBpbnQgcmln
aHQ7CiAgICAgICAgdW5zaWduZWQgaW50IGJvdHRvbTsKfSBudF9mb3Jtc19zdHJ1Y3Q7CiMgMTU5
NyAiaW5jbHVkZS9zbWIuaCIgMgoKdHlwZWRlZiBzdHJ1Y3QgdXNlcl9zdHJ1Y3QKewogICAgICAg
IHN0cnVjdCB1c2VyX3N0cnVjdCAqbmV4dCwgKnByZXY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
dnVpZDsKICAgICAgICB1aWRfdCB1aWQ7CiAgICAgICAgZ2lkX3QgZ2lkOwoKICAgICAgICB1c2Vy
ZG9tX3N0cnVjdCB1c2VyOwogICAgICAgIEJPT0wgZ3Vlc3Q7CgoKCiAgICAgICAgaW50IG5fZ3Jv
dXBzOwogICAgICAgIGdpZF90ICpncm91cHM7CgogICAgICAgIE5UX1VTRVJfVE9LRU4gKm50X3Vz
ZXJfdG9rZW47CgogICAgICAgIGludCBzZXNzaW9uX2lkOwp9IHVzZXJfc3RydWN0OwoKCnR5cGVk
ZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBjaGFyICpkYXRhOwogICAgICAgIHNpemVfdCBs
ZW5ndGg7Cn0gREFUQV9CTE9COwoKCgoKIyAxICJpbmNsdWRlL2NsaWVudC5oIiAxCiMgMzcgImlu
Y2x1ZGUvY2xpZW50LmgiCnR5cGVkZWYgc3RydWN0IGZpbGVfaW5mbwp7CiAgICAgICAgb2ZmX3Qg
c2l6ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBtb2RlOwogICAgICAgIHVpZF90IHVpZDsKICAg
ICAgICBnaWRfdCBnaWQ7CgogICAgICAgIHRpbWVfdCBtdGltZTsKICAgICAgICB0aW1lX3QgYXRp
bWU7CiAgICAgICAgdGltZV90IGN0aW1lOwogICAgICAgIHBzdHJpbmcgbmFtZTsKICAgICAgICBj
aGFyIHNob3J0X25hbWVbMTMqM107Cn0gZmlsZV9pbmZvOwoKc3RydWN0IHByaW50X2pvYl9pbmZv
CnsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBpZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBwcmlv
cml0eTsKICAgICAgICBzaXplX3Qgc2l6ZTsKICAgICAgICBmc3RyaW5nIHVzZXI7CiAgICAgICAg
ZnN0cmluZyBuYW1lOwogICAgICAgIHRpbWVfdCB0Owp9OwoKc3RydWN0IGNsaV9zdGF0ZSB7CiAg
ICAgICAgaW50IHBvcnQ7CiAgICAgICAgaW50IGZkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNu
dW07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcGlkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG1p
ZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB2dWlkOwogICAgICAgIGludCBwcm90b2NvbDsKICAg
ICAgICBpbnQgc2VjX21vZGU7CiAgICAgICAgaW50IHJhcF9lcnJvcjsKICAgICAgICBpbnQgcHJp
dmlsZWdlczsKCiAgICAgICAgZnN0cmluZyBlZmZfbmFtZTsKICAgICAgICBmc3RyaW5nIGRlc3Ro
b3N0OwogICAgICAgIGZzdHJpbmcgdXNlcl9uYW1lOwogICAgICAgIGZzdHJpbmcgZG9tYWluOwoK
CgoKCgogICAgICAgIGZzdHJpbmcgc2VydmVyX3R5cGU7CiAgICAgICAgZnN0cmluZyBzZXJ2ZXJf
b3M7CiAgICAgICAgZnN0cmluZyBzZXJ2ZXJfZG9tYWluOwoKICAgICAgICBmc3RyaW5nIHNoYXJl
OwogICAgICAgIGZzdHJpbmcgZGV2OwogICAgICAgIHN0cnVjdCBubWJfbmFtZSBjYWxsZWQ7CiAg
ICAgICAgc3RydWN0IG5tYl9uYW1lIGNhbGxpbmc7CiAgICAgICAgZnN0cmluZyBmdWxsX2Rlc3Rf
aG9zdF9uYW1lOwogICAgICAgIHN0cnVjdCBpbl9hZGRyIGRlc3RfaXA7CgogICAgICAgIHN0cnVj
dCBwd2RfaW5mbyBwd2Q7CiAgICAgICAgREFUQV9CTE9CIHNlY2Jsb2I7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHNlc3NrZXk7CiAgICAgICAgaW50IHNlcnZlcnpvbmU7CiAgICAgICAgdW5zaWduZWQg
aW50IHNlcnZlcnRpbWU7CiAgICAgICAgaW50IHJlYWRicmF3X3N1cHBvcnRlZDsKICAgICAgICBp
bnQgd3JpdGVicmF3X3N1cHBvcnRlZDsKICAgICAgICBpbnQgdGltZW91dDsKICAgICAgICBpbnQg
bWF4X3htaXQ7CiAgICAgICAgaW50IG1heF9tdXg7CiAgICAgICAgY2hhciAqb3V0YnVmOwogICAg
ICAgIGNoYXIgKmluYnVmOwogICAgICAgIGludCBidWZzaXplOwogICAgICAgIGludCBpbml0aWFs
aXNlZDsKICAgICAgICBpbnQgd2luOTU7CiAgICAgICAgdW5zaWduZWQgaW50IGNhcGFiaWxpdGll
czsKCiAgICAgICAgVEFMTE9DX0NUWCAqbWVtX2N0eDsKCgoKCgogICAgICAgIHVuc2lnbmVkIHNo
b3J0IG50X3BpcGVfZm51bTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNlc3Nfa2V5WzE2XTsKICAg
ICAgICB1bnNpZ25lZCBjaGFyIG50bG1zc3BfaGFzaFsyNThdOwogICAgICAgIHVuc2lnbmVkIGlu
dCBudGxtc3NwX2NsaV9mbGdzOwogICAgICAgIHVuc2lnbmVkIGludCBudGxtc3NwX3Nydl9mbGdz
OwogICAgICAgIHVuc2lnbmVkIGludCBudGxtc3NwX3NlcV9udW07CiAgICAgICAgRE9NX0NSRUQg
Y2xudF9jcmVkOwogICAgICAgIGZzdHJpbmcgbWFjaF9hY2N0OwogICAgICAgIGZzdHJpbmcgc3J2
X25hbWVfc2xhc2g7CiAgICAgICAgZnN0cmluZyBjbG50X25hbWVfc2xhc2g7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgbWF4X3htaXRfZnJhZzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBtYXhfcmVj
dl9mcmFnOwogICAgICAgIHZ1c2VyX2tleSBrZXk7CiAgICAgICAgdW5zaWduZWQgaW50IG50bG1z
c3BfZmxhZ3M7CiAgICAgICAgQk9PTCB1c2Vfa2VyYmVyb3M7CiAgICAgICAgQk9PTCB1c2Vfc3Bu
ZWdvOwoKICAgICAgICBCT09MIHVzZV9vcGxvY2tzOwogICAgICAgIEJPT0wgdXNlX2xldmVsX0lJ
X29wbG9ja3M7CgoKICAgICAgICBCT09MICgqb3Bsb2NrX2hhbmRsZXIpKHN0cnVjdCBjbGlfc3Rh
dGUgKmNsaSwgaW50IGZudW0sIHVuc2lnbmVkIGNoYXIgbGV2ZWwpOwoKICAgICAgICBCT09MIGZv
cmNlX2Rvc19lcnJvcnM7CgoKCiAgICAgICAgQk9PTCBhbGxvY2F0ZWQ7Cn07CiMgMTYyOCAiaW5j
bHVkZS9zbWIuaCIgMgojIDE2NjQgImluY2x1ZGUvc21iLmgiCiMgMSAibnNzd2l0Y2gvd2luYmlu
ZGRfbnNzLmgiIDEKIyA0MCAibnNzd2l0Y2gvd2luYmluZGRfbnNzLmgiCmVudW0gd2luYmluZGRf
Y21kIHsKCgoKICAgICAgICBXSU5CSU5ERF9HRVRQV05BTV9GUk9NX1VTRVIsCiAgICAgICAgV0lO
QklORERfR0VUUFdOQU1fRlJPTV9VSUQsCiAgICAgICAgV0lOQklORERfR0VUR1JOQU1fRlJPTV9H
Uk9VUCwKICAgICAgICBXSU5CSU5ERF9HRVRHUk5BTV9GUk9NX0dJRCwKICAgICAgICBXSU5CSU5E
RF9HRVRHUk9VUFMsCgoKCiAgICAgICAgV0lOQklORERfU0VUUFdFTlQsCiAgICAgICAgV0lOQklO
RERfRU5EUFdFTlQsCiAgICAgICAgV0lOQklORERfR0VUUFdFTlQsCiAgICAgICAgV0lOQklORERf
U0VUR1JFTlQsCiAgICAgICAgV0lOQklORERfRU5ER1JFTlQsCiAgICAgICAgV0lOQklORERfR0VU
R1JFTlQsCgoKCiAgICAgICAgV0lOQklORERfUEFNX0FVVEgsCiAgICAgICAgV0lOQklORERfUEFN
X0FVVEhfQ1JBUCwKICAgICAgICBXSU5CSU5ERF9QQU1fQ0hBVVRIVE9LLAoKCgogICAgICAgIFdJ
TkJJTkREX0xJU1RfVVNFUlMsCiAgICAgICAgV0lOQklORERfTElTVF9HUk9VUFMsCiAgICAgICAg
V0lOQklORERfTElTVF9UUlVTVERPTSwKCgoKICAgICAgICBXSU5CSU5ERF9MT09LVVBTSUQsCiAg
ICAgICAgV0lOQklORERfTE9PS1VQTkFNRSwKCgoKICAgICAgICBXSU5CSU5ERF9TSURfVE9fVUlE
LAogICAgICAgIFdJTkJJTkREX1NJRF9UT19HSUQsCiAgICAgICAgV0lOQklORERfVUlEX1RPX1NJ
RCwKICAgICAgICBXSU5CSU5ERF9HSURfVE9fU0lELAoKCgogICAgICAgIFdJTkJJTkREX0NIRUNL
X01BQ0hBQ0MsCgoKCiAgICAgICAgV0lOQklORERfTlVNX0NNRFMKfTsKCgoKc3RydWN0IHdpbmJp
bmRkX3JlcXVlc3QgewogICAgICAgIGVudW0gd2luYmluZGRfY21kIGNtZDsKICAgICAgICBwaWRf
dCBwaWQ7CgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIGZzdHJpbmcgdXNlcm5hbWU7
CiAgICAgICAgICAgICAgICBmc3RyaW5nIGdyb3VwbmFtZTsKICAgICAgICAgICAgICAgIHVpZF90
IHVpZDsKICAgICAgICAgICAgICAgIGdpZF90IGdpZDsKICAgICAgICAgICAgICAgIHN0cnVjdCB7
CiAgICAgICAgICAgICAgICAgICAgICAgIGZzdHJpbmcgdXNlcjsKICAgICAgICAgICAgICAgICAg
ICAgICAgZnN0cmluZyBwYXNzOwogICAgICAgICAgICAgICAgfSBhdXRoOwogICAgICAgICAgICAg
ICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjaGFsWzhd
OwogICAgICAgICAgICAgICAgICAgICAgICBmc3RyaW5nIHVzZXI7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGZzdHJpbmcgbG1fcmVzcDsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
c2hvcnQgbG1fcmVzcF9sZW47CiAgICAgICAgICAgICAgICAgICAgICAgIGZzdHJpbmcgbnRfcmVz
cDsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgbnRfcmVzcF9sZW47CiAg
ICAgICAgICAgICAgICB9IGF1dGhfY3JhcDsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAg
ICAgICAgICAgICAgICAgZnN0cmluZyB1c2VyOwogICAgICAgICAgICAgICAgICAgIGZzdHJpbmcg
b2xkcGFzczsKICAgICAgICAgICAgICAgICAgICBmc3RyaW5nIG5ld3Bhc3M7CiAgICAgICAgICAg
ICAgICB9IGNoYXV0aHRvazsKICAgICAgICAgICAgICAgIGZzdHJpbmcgc2lkOwogICAgICAgICAg
ICAgICAgZnN0cmluZyBuYW1lOwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG51bV9lbnRy
aWVzOwogICAgICAgIH0gZGF0YTsKICAgICAgICBmc3RyaW5nIGRvbWFpbjsKfTsKCgoKZW51bSB3
aW5iaW5kZF9yZXN1bHQgewogICAgICAgIFdJTkJJTkREX0VSUk9SLAogICAgICAgIFdJTkJJTkRE
X09LCn07CgoKCnN0cnVjdCB3aW5iaW5kZF9yZXNwb25zZSB7CgoKCiAgICAgICAgaW50IGxlbmd0
aDsKICAgICAgICBlbnVtIHdpbmJpbmRkX3Jlc3VsdCByZXN1bHQ7CgoKCiAgICAgICAgdW5pb24g
ewoKCgogICAgICAgICAgICAgICAgc3RydWN0IHdpbmJpbmRkX3B3IHsKICAgICAgICAgICAgICAg
ICAgICAgICAgZnN0cmluZyBwd19uYW1lOwogICAgICAgICAgICAgICAgICAgICAgICBmc3RyaW5n
IHB3X3Bhc3N3ZDsKICAgICAgICAgICAgICAgICAgICAgICAgdWlkX3QgcHdfdWlkOwogICAgICAg
ICAgICAgICAgICAgICAgICBnaWRfdCBwd19naWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGZz
dHJpbmcgcHdfZ2Vjb3M7CiAgICAgICAgICAgICAgICAgICAgICAgIGZzdHJpbmcgcHdfZGlyOwog
ICAgICAgICAgICAgICAgICAgICAgICBmc3RyaW5nIHB3X3NoZWxsOwogICAgICAgICAgICAgICAg
fSBwdzsKCgoKICAgICAgICAgICAgICAgIHN0cnVjdCB3aW5iaW5kZF9nciB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGZzdHJpbmcgZ3JfbmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgZnN0
cmluZyBncl9wYXNzd2Q7CiAgICAgICAgICAgICAgICAgICAgICAgIGdpZF90IGdyX2dpZDsKICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IG51bV9ncl9tZW07CiAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBncl9tZW1fb2ZzOwogICAgICAgICAgICAgICAgfSBncjsKCiAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgbnVtX2VudHJpZXM7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgd2luYmlu
ZGRfc2lkIHsKICAgICAgICAgICAgICAgICAgICAgICAgZnN0cmluZyBzaWQ7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGludCB0eXBlOwogICAgICAgICAgICAgICAgfSBzaWQ7CiAgICAgICAgICAg
ICAgICBzdHJ1Y3Qgd2luYmluZGRfbmFtZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZzdHJp
bmcgbmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IHR5cGU7CiAgICAgICAgICAgICAg
ICB9IG5hbWU7CiAgICAgICAgICAgICAgICB1aWRfdCB1aWQ7CiAgICAgICAgICAgICAgICBnaWRf
dCBnaWQ7CiAgICAgICAgfSBkYXRhOwoKCgogICAgICAgIHZvaWQgKmV4dHJhX2RhdGE7Cn07CiMg
MTY2NSAiaW5jbHVkZS9zbWIuaCIgMgojIDEgImluY2x1ZGUvc21iX2FjbHMuaCIgMQojIDI1ICJp
bmNsdWRlL3NtYl9hY2xzLmgiCiMgMSAiaW5jbHVkZS9pbmNsdWRlcy5oIiAxCiMgMjYgImluY2x1
ZGUvc21iX2FjbHMuaCIgMgojIDI2NCAiaW5jbHVkZS9zbWJfYWNscy5oIgp0eXBlZGVmIHN0cnVj
dCBTTUJfQUNMX1QgewogICAgICAgIGludCBkdW1teTsKfSAqU01CX0FDTF9UOwoKdHlwZWRlZiBz
dHJ1Y3QgU01CX0FDTF9FTlRSWV9UIHsKICAgICAgICBpbnQgZHVtbXk7Cn0gKlNNQl9BQ0xfRU5U
UllfVDsKIyAxNjY2ICJpbmNsdWRlL3NtYi5oIiAyCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAg
IHNpemVfdCAoKmRpcmVjdCkodm9pZCAqY2QsIGNoYXIgKippbmJ1Ziwgc2l6ZV90ICppbmJ5dGVz
bGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRidWYsIHNpemVfdCAqb3V0
Ynl0ZXNsZWZ0KTsKICAgICAgICBzaXplX3QgKCpwdWxsKSh2b2lkICpjZCwgY2hhciAqKmluYnVm
LCBzaXplX3QgKmluYnl0ZXNsZWZ0LAogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXRi
dWYsIHNpemVfdCAqb3V0Ynl0ZXNsZWZ0KTsKICAgICAgICBzaXplX3QgKCpwdXNoKSh2b2lkICpj
ZCwgY2hhciAqKmluYnVmLCBzaXplX3QgKmluYnl0ZXNsZWZ0LAogICAgICAgICAgICAgICAgICAg
ICAgIGNoYXIgKipvdXRidWYsIHNpemVfdCAqb3V0Ynl0ZXNsZWZ0KTsKICAgICAgICB2b2lkICpj
ZF9kaXJlY3QsICpjZF9wdWxsLCAqY2RfcHVzaDsKICAgICAgICBjaGFyICpmcm9tX25hbWUsICp0
b19uYW1lOwp9ICpzbWJfaWNvbnZfdDsKIyAyOSAiaW5jbHVkZS91dGlsX2xpc3QuaCIgMgoKCgoK
c3RydWN0IF9saXN0X25vZGU7CgoKCgpzdHJ1Y3QgX2xpc3Rfbm9kZSB7CgogICAgICAgIHZvaWQg
KmRhdGE7CiAgICAgICAgdW5zaWduZWQgY2hhciB0eXBlOwoKICAgICAgICBzdHJ1Y3QgX2xpc3Rf
bm9kZSAqbmV4dDsKCn07CgoKCgp0eXBlZGVmIHN0cnVjdCBfZ2VuZXJpY19saXN0IHsKCiAgICAg
ICAgc3RydWN0IF9saXN0X25vZGUgKmhlYWQsICp0YWlsOwogICAgICAgIHVuc2lnbmVkIGludCBs
ZW5ndGg7CiAgICAgICAgQk9PTCBpbml0aWFsaXplZDsKCn0gR0VORVJJQ19MSVNUOwojIDY4OCAi
aW5jbHVkZS9pbmNsdWRlcy5oIiAyCiMgMSAiaW5jbHVkZS9jaGFyc2V0LmgiIDEKIyAyMyAiaW5j
bHVkZS9jaGFyc2V0LmgiCnR5cGVkZWYgZW51bSB7Q0hfVUNTMj0wLCBDSF9VTklYPTEsIENIX0RJ
U1BMQVk9MiwgQ0hfRE9TPTN9IGNoYXJzZXRfdDsKIyA2ODkgImluY2x1ZGUvaW5jbHVkZXMuaCIg
MgojIDEgImluY2x1ZGUvZHluY29uZmlnLmgiIDEKIyAyNiAiaW5jbHVkZS9keW5jb25maWcuaCIK
ZXh0ZXJuIGNoYXIgY29uc3QgKmR5bl9TQklORElSLAogICAgICAgICpkeW5fQklORElSLAogICAg
ICAgICpkeW5fU1dBVERJUjsKCmV4dGVybiBwc3RyaW5nIGR5bl9DT05GSUdGSUxFOwpleHRlcm4g
cHN0cmluZyBkeW5fTE9HRklMRUJBU0UsIGR5bl9MTUhPU1RTRklMRTsKZXh0ZXJuIHBzdHJpbmcg
ZHluX0xJQkRJUjsKZXh0ZXJuIGNvbnN0IHBzdHJpbmcgZHluX0xPQ0tESVI7CmV4dGVybiBjb25z
dCBwc3RyaW5nIGR5bl9EUklWRVJGSUxFOwpleHRlcm4gY29uc3QgcHN0cmluZyBkeW5fU01CX1BB
U1NXRF9GSUxFOwpleHRlcm4gY29uc3QgcHN0cmluZyBkeW5fUFJJVkFURV9ESVI7CiMgNjkwICJp
bmNsdWRlL2luY2x1ZGVzLmgiIDIKCiMgMSAiaW5jbHVkZS91dGlsX2dldGVudC5oIiAxCiMgMjkg
ImluY2x1ZGUvdXRpbF9nZXRlbnQuaCIKc3RydWN0IHN5c19ncmVudCB7CiAgICAgICAgY2hhciAq
Z3JfbmFtZTsKICAgICAgICBjaGFyICpncl9wYXNzd2Q7CiAgICAgICAgZ2lkX3QgZ3JfZ2lkOwog
ICAgICAgIGNoYXIgKipncl9tZW07CiAgICAgICAgc3RydWN0IHN5c19ncmVudCAqbmV4dDsKfTsK
CgoKCgpzdHJ1Y3Qgc3lzX3B3ZW50IHsKICAgICAgICBjaGFyICpwd19uYW1lOwogICAgICAgIGNo
YXIgKnB3X3Bhc3N3ZDsKICAgICAgICB1aWRfdCBwd191aWQ7CiAgICAgICAgZ2lkX3QgcHdfZ2lk
OwogICAgICAgIGNoYXIgKnB3X2dlY29zOwogICAgICAgIGNoYXIgKnB3X2RpcjsKICAgICAgICBj
aGFyICpwd19zaGVsbDsKICAgICAgICBzdHJ1Y3Qgc3lzX3B3ZW50ICpuZXh0Owp9OwoKCgoKCgpz
dHJ1Y3Qgc3lzX3VzZXJsaXN0IHsKICAgICAgICBzdHJ1Y3Qgc3lzX3VzZXJsaXN0ICpuZXh0LCAq
cHJldjsKICAgICAgICBjaGFyICp1bml4X25hbWU7Cn07CiMgNjkyICJpbmNsdWRlL2luY2x1ZGVz
LmgiIDIKCgojIDEgInViaXF4L3ViaV9DYWNoZS5oIiAxCiMgMTE2ICJ1YmlxeC91YmlfQ2FjaGUu
aCIKIyAxICJ1YmlxeC91YmlfU3BsYXlUcmVlLmgiIDEKIyAxNTcgInViaXF4L3ViaV9TcGxheVRy
ZWUuaCIKIyAxICJ1YmlxeC91YmlfQmluVHJlZS5oIiAxCiMgMjM4ICJ1YmlxeC91YmlfQmluVHJl
ZS5oIgp0eXBlZGVmIGVudW0gewogIHViaV90ckxUID0gMSwKICB1YmlfdHJMRSwKICB1YmlfdHJF
USwKICB1YmlfdHJHRSwKICB1YmlfdHJHVAogIH0gdWJpX3RyQ29tcE9wczsKIyAzMTMgInViaXF4
L3ViaV9CaW5UcmVlLmgiCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1YmlfdHJCb29sOwoKdHlwZWRl
ZiB2b2lkICp1YmlfYnRJdGVtUHRyOwojIDM0MCAidWJpcXgvdWJpX0JpblRyZWUuaCIKdHlwZWRl
ZiBzdHJ1Y3QgdWJpX2J0Tm9kZVN0cnVjdCB7CiAgc3RydWN0IHViaV9idE5vZGVTdHJ1Y3QgKkxp
bmtbIDMgXTsKICBjaGFyIGdlbmRlcjsKICBjaGFyIGJhbGFuY2U7CiAgfSB1YmlfYnROb2RlOwoK
dHlwZWRlZiB1YmlfYnROb2RlICp1YmlfYnROb2RlUHRyOwojIDM3MyAidWJpcXgvdWJpX0JpblRy
ZWUuaCIKdHlwZWRlZiBpbnQgKCp1YmlfYnRDb21wRnVuYykoIHViaV9idEl0ZW1QdHIsIHViaV9i
dE5vZGVQdHIgKTsKCnR5cGVkZWYgdm9pZCAoKnViaV9idEFjdGlvblJ0bikoIHViaV9idE5vZGVQ
dHIsIHZvaWQgKiApOwoKdHlwZWRlZiB2b2lkICgqdWJpX2J0S2lsbE5vZGVSdG4pKCB1YmlfYnRO
b2RlUHRyICk7CiMgNDAxICJ1YmlxeC91YmlfQmluVHJlZS5oIgp0eXBlZGVmIHN0cnVjdCB7CiAg
dWJpX2J0Tm9kZVB0ciByb290OwogIHViaV9idENvbXBGdW5jIGNtcDsKICB1bnNpZ25lZCBsb25n
IGNvdW50OwogIGNoYXIgZmxhZ3M7CiAgfSB1YmlfYnRSb290OwoKdHlwZWRlZiB1YmlfYnRSb290
ICp1YmlfYnRSb290UHRyOwoKCgoKCgpsb25nIHViaV9idFNnbiggbG9uZyB4ICk7CiMgNDM0ICJ1
YmlxeC91YmlfQmluVHJlZS5oIgp1YmlfYnROb2RlUHRyIHViaV9idEluaXROb2RlKCB1YmlfYnRO
b2RlUHRyIE5vZGVQdHIgKTsKIyA0NDQgInViaXF4L3ViaV9CaW5UcmVlLmgiCnViaV9idFJvb3RQ
dHIgdWJpX2J0SW5pdFRyZWUoIHViaV9idFJvb3RQdHIgUm9vdFB0ciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHViaV9idENvbXBGdW5jIENvbXBGdW5jLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciBGbGFncyApOwojIDQ2OCAidWJpcXgvdWJpX0JpblRyZWUuaCIK
dWJpX3RyQm9vbCB1YmlfYnRJbnNlcnQoIHViaV9idFJvb3RQdHIgUm9vdFB0ciwKICAgICAgICAg
ICAgICAgICAgICAgICAgIHViaV9idE5vZGVQdHIgTmV3Tm9kZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgIHViaV9idEl0ZW1QdHIgSXRlbVB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgIHVi
aV9idE5vZGVQdHIgKk9sZE5vZGUgKTsKIyA1MTcgInViaXF4L3ViaV9CaW5UcmVlLmgiCnViaV9i
dE5vZGVQdHIgdWJpX2J0UmVtb3ZlKCB1YmlfYnRSb290UHRyIFJvb3RQdHIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1YmlfYnROb2RlUHRyIERlYWROb2RlICk7CiMgNTM0ICJ1YmlxeC91
YmlfQmluVHJlZS5oIgp1YmlfYnROb2RlUHRyIHViaV9idExvY2F0ZSggdWJpX2J0Um9vdFB0ciBS
b290UHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdWJpX2J0SXRlbVB0ciBGaW5kTWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1YmlfdHJDb21wT3BzIENvbXBPcCApOwojIDU4
NiAidWJpcXgvdWJpX0JpblRyZWUuaCIKdWJpX2J0Tm9kZVB0ciB1YmlfYnRGaW5kKCB1YmlfYnRS
b290UHRyIFJvb3RQdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdWJpX2J0SXRlbVB0ciBG
aW5kTWUgKTsKIyA2MDcgInViaXF4L3ViaV9CaW5UcmVlLmgiCnViaV9idE5vZGVQdHIgdWJpX2J0
TmV4dCggdWJpX2J0Tm9kZVB0ciBQICk7CiMgNjE3ICJ1YmlxeC91YmlfQmluVHJlZS5oIgp1Ymlf
YnROb2RlUHRyIHViaV9idFByZXYoIHViaV9idE5vZGVQdHIgUCApOwojIDYyNyAidWJpcXgvdWJp
X0JpblRyZWUuaCIKdWJpX2J0Tm9kZVB0ciB1YmlfYnRGaXJzdCggdWJpX2J0Tm9kZVB0ciBQICk7
CiMgNjM5ICJ1YmlxeC91YmlfQmluVHJlZS5oIgp1YmlfYnROb2RlUHRyIHViaV9idExhc3QoIHVi
aV9idE5vZGVQdHIgUCApOwojIDY1MSAidWJpcXgvdWJpX0JpblRyZWUuaCIKdWJpX2J0Tm9kZVB0
ciB1YmlfYnRGaXJzdE9mKCB1YmlfYnRSb290UHRyIFJvb3RQdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWJpX2J0SXRlbVB0ciBNYXRjaE1lLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHViaV9idE5vZGVQdHIgcCApOwojIDY3NCAidWJpcXgvdWJpX0JpblRyZWUuaCIKdWJp
X2J0Tm9kZVB0ciB1YmlfYnRMYXN0T2YoIHViaV9idFJvb3RQdHIgUm9vdFB0ciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHViaV9idEl0ZW1QdHIgTWF0Y2hNZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHViaV9idE5vZGVQdHIgcCApOwojIDY5NyAidWJpcXgvdWJpX0JpblRyZWUu
aCIKdW5zaWduZWQgbG9uZyB1YmlfYnRUcmF2ZXJzZSggdWJpX2J0Um9vdFB0ciBSb290UHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1YmlfYnRBY3Rpb25SdG4gRWFjaE5vZGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKlVzZXJEYXRhICk7CiMgNzE5ICJ1Ymlx
eC91YmlfQmluVHJlZS5oIgp1bnNpZ25lZCBsb25nIHViaV9idEtpbGxUcmVlKCB1YmlfYnRSb290
UHRyIFJvb3RQdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHViaV9idEtpbGxOb2Rl
UnRuIEZyZWVOb2RlICk7CiMgNzQ0ICJ1YmlxeC91YmlfQmluVHJlZS5oIgp1YmlfYnROb2RlUHRy
IHViaV9idExlYWZOb2RlKCB1YmlfYnROb2RlUHRyIGxlYWRlciApOwojIDc3MyAidWJpcXgvdWJp
X0JpblRyZWUuaCIKaW50IHViaV9idE1vZHVsZUlEKCBpbnQgc2l6ZSwgY2hhciAqbGlzdFtdICk7
CiMgMTU4ICJ1YmlxeC91YmlfU3BsYXlUcmVlLmgiIDIKCgoKCgp1YmlfdHJCb29sIHViaV9zcHRJ
bnNlcnQoIHViaV9idFJvb3RQdHIgUm9vdFB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICB1
YmlfYnROb2RlUHRyIE5ld05vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdWJpX2J0SXRl
bVB0ciBJdGVtUHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgIHViaV9idE5vZGVQdHIgKk9s
ZE5vZGUgKTsKIyAyMTIgInViaXF4L3ViaV9TcGxheVRyZWUuaCIKdWJpX2J0Tm9kZVB0ciB1Ymlf
c3B0UmVtb3ZlKCB1YmlfYnRSb290UHRyIFJvb3RQdHIsIHViaV9idE5vZGVQdHIgRGVhZE5vZGUg
KTsKIyAyMjggInViaXF4L3ViaV9TcGxheVRyZWUuaCIKdWJpX2J0Tm9kZVB0ciB1Ymlfc3B0TG9j
YXRlKCB1YmlfYnRSb290UHRyIFJvb3RQdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWJpX2J0SXRlbVB0ciBGaW5kTWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWJpX3Ry
Q29tcE9wcyBDb21wT3AgKTsKIyAyODAgInViaXF4L3ViaV9TcGxheVRyZWUuaCIKdWJpX2J0Tm9k
ZVB0ciB1Ymlfc3B0RmluZCggdWJpX2J0Um9vdFB0ciBSb290UHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICB1YmlfYnRJdGVtUHRyIEZpbmRNZSApOwojIDMwMSAidWJpcXgvdWJpX1NwbGF5
VHJlZS5oIgp2b2lkIHViaV9zcHRTcGxheSggdWJpX2J0Um9vdFB0ciBSb290UHRyLAogICAgICAg
ICAgICAgICAgICAgdWJpX2J0Tm9kZVB0ciBTcGxheU1lICk7CiMgMzIzICJ1YmlxeC91YmlfU3Bs
YXlUcmVlLmgiCmludCB1Ymlfc3B0TW9kdWxlSUQoIGludCBzaXplLCBjaGFyICpsaXN0W10gKTsK
IyAxMTcgInViaXF4L3ViaV9DYWNoZS5oIiAyCiMgMTM2ICJ1YmlxeC91YmlfQ2FjaGUuaCIKdHlw
ZWRlZiBzdHJ1Y3QKICB7CiAgdWJpX2J0Um9vdCByb290OwogIHViaV9idEtpbGxOb2RlUnRuIGZy
ZWVfZnVuYzsKICB1bnNpZ25lZCBsb25nIG1heF9lbnRyaWVzOwogIHVuc2lnbmVkIGxvbmcgbWF4
X21lbW9yeTsKICB1bnNpZ25lZCBsb25nIG1lbV91c2VkOwogIHVuc2lnbmVkIHNob3J0IGNhY2hl
X2hpdHM7CiAgdW5zaWduZWQgc2hvcnQgY2FjaGVfdHJ5czsKICB9IHViaV9jYWNoZVJvb3Q7Cgp0
eXBlZGVmIHViaV9jYWNoZVJvb3QgKnViaV9jYWNoZVJvb3RQdHI7CgoKdHlwZWRlZiBzdHJ1Y3QK
ICB7CiAgdWJpX2J0Tm9kZSBub2RlOwogIHVuc2lnbmVkIGxvbmcgZW50cnlfc2l6ZTsKCgogIH0g
dWJpX2NhY2hlRW50cnk7Cgp0eXBlZGVmIHViaV9jYWNoZUVudHJ5ICp1YmlfY2FjaGVFbnRyeVB0
cjsKIyAxODYgInViaXF4L3ViaV9DYWNoZS5oIgp1YmlfY2FjaGVSb290UHRyIHViaV9jYWNoZUlu
aXQoIHViaV9jYWNoZVJvb3RQdHIgQ2FjaGVQdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWJpX2J0Q29tcEZ1bmMgQ29tcEZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWJpX2J0S2lsbE5vZGVSdG4gRnJlZUZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgbG9uZyBNYXhFbnRyaWVzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgTWF4TWVtb3J5ICk7CiMgMjM3ICJ1YmlxeC91YmlfQ2Fj
aGUuaCIKdWJpX2NhY2hlUm9vdFB0ciB1YmlfY2FjaGVDbGVhciggdWJpX2NhY2hlUm9vdFB0ciBD
YWNoZVB0ciApOwojIDI0OSAidWJpcXgvdWJpX0NhY2hlLmgiCnZvaWQgdWJpX2NhY2hlUHV0KCB1
YmlfY2FjaGVSb290UHRyIENhY2hlUHRyLAogICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u
ZyBFbnRyeVNpemUsCiAgICAgICAgICAgICAgICAgICB1YmlfY2FjaGVFbnRyeVB0ciBFbnRyeVB0
ciwKICAgICAgICAgICAgICAgICAgIHViaV9idEl0ZW1QdHIgS2V5ICk7CiMgMjg5ICJ1YmlxeC91
YmlfQ2FjaGUuaCIKdWJpX2NhY2hlRW50cnlQdHIgdWJpX2NhY2hlR2V0KCB1YmlfY2FjaGVSb290
UHRyIENhY2hlUHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHViaV9idEl0ZW1Q
dHIgRmluZE1lICk7CiMgMzExICJ1YmlxeC91YmlfQ2FjaGUuaCIKdWJpX3RyQm9vbCB1YmlfY2Fj
aGVEZWxldGUoIHViaV9jYWNoZVJvb3RQdHIgQ2FjaGVQdHIsIHViaV9idEl0ZW1QdHIgRGVsZXRl
TWUgKTsKIyAzMjMgInViaXF4L3ViaV9DYWNoZS5oIgp1YmlfdHJCb29sIHViaV9jYWNoZVJlZHVj
ZSggdWJpX2NhY2hlUm9vdFB0ciBDYWNoZVB0ciwgdW5zaWduZWQgbG9uZyBjb3VudCApOwojIDM0
MyAidWJpcXgvdWJpX0NhY2hlLmgiCnVuc2lnbmVkIGxvbmcgdWJpX2NhY2hlU2V0TWF4RW50cmll
cyggdWJpX2NhY2hlUm9vdFB0ciBDYWNoZVB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBsb25nIE5ld1NpemUgKTsKIyAzNjEgInViaXF4L3ViaV9DYWNo
ZS5oIgp1bnNpZ25lZCBsb25nIHViaV9jYWNoZVNldE1heE1lbW9yeSggdWJpX2NhY2hlUm9vdFB0
ciBDYWNoZVB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGxvbmcgTmV3U2l6ZSApOwojIDM3OSAidWJpcXgvdWJpX0NhY2hlLmgiCmludCB1YmlfY2FjaGVI
aXRSYXRpbyggdWJpX2NhY2hlUm9vdFB0ciBDYWNoZVB0ciApOwojIDY5NSAiaW5jbHVkZS9pbmNs
dWRlcy5oIiAyCgoKIyAxICJ1YmlxeC9kZWJ1Z3BhcnNlLmgiIDEKIyA0NyAidWJpcXgvZGVidWdw
YXJzZS5oIgp0eXBlZGVmIGVudW0KICB7CiAgZGJnX251bGwgPSAwLAogIGRiZ19pZ25vcmUsCiAg
ZGJnX2hlYWRlciwKICBkYmdfdGltZXN0YW1wLAogIGRiZ19sZXZlbCwKICBkYmdfc291cmNlZmls
ZSwKICBkYmdfZnVuY3Rpb24sCiAgZGJnX2xpbmVubywKICBkYmdfbWVzc2FnZSwKICBkYmdfZW9m
CiAgfSBkYmdfVG9rZW47CgoKCgoKIGNoYXIgKmRiZ190b2tlbjJzdHJpbmcoIGRiZ19Ub2tlbiB0
b2sgKTsKIyA4MCAidWJpcXgvZGVidWdwYXJzZS5oIgogZGJnX1Rva2VuIGRiZ19jaGFyMnRva2Vu
KCBkYmdfVG9rZW4gKnN0YXRlLCBpbnQgYyApOwojIDY5OCAiaW5jbHVkZS9pbmNsdWRlcy5oIiAy
CgojIDEgImluY2x1ZGUvdmVyc2lvbi5oIiAxCiMgNzAwICJpbmNsdWRlL2luY2x1ZGVzLmgiIDIK
CiMgMSAic21id3JhcHBlci9zbWJ3LmgiIDEKIyAzNCAic21id3JhcHBlci9zbWJ3LmgiCnN0cnVj
dCBzbWJ3X3NlcnZlciB7CiAgICAgICAgc3RydWN0IHNtYndfc2VydmVyICpuZXh0LCAqcHJldjsK
ICAgICAgICBzdHJ1Y3QgY2xpX3N0YXRlIGNsaTsKICAgICAgICBjaGFyICpzZXJ2ZXJfbmFtZTsK
ICAgICAgICBjaGFyICpzaGFyZV9uYW1lOwogICAgICAgIGNoYXIgKndvcmtncm91cDsKICAgICAg
ICBjaGFyICp1c2VybmFtZTsKICAgICAgICBkZXZfdCBkZXY7CiAgICAgICAgQk9PTCBub19wYXRo
aW5mbzI7Cn07CgpzdHJ1Y3Qgc21id19maWxlZGVzIHsKICAgICAgICBpbnQgY2xpX2ZkOwogICAg
ICAgIGludCByZWZfY291bnQ7CiAgICAgICAgY2hhciAqZm5hbWU7CiAgICAgICAgb2ZmX3Qgb2Zm
c2V0Owp9OwoKc3RydWN0IHNtYndfZmlsZSB7CiAgICAgICAgc3RydWN0IHNtYndfZmlsZSAqbmV4
dCwgKnByZXY7CiAgICAgICAgc3RydWN0IHNtYndfZmlsZWRlcyAqZjsKICAgICAgICBpbnQgZmQ7
CiAgICAgICAgc3RydWN0IHNtYndfc2VydmVyICpzcnY7Cn07CgpzdHJ1Y3Qgc21id19kaXIgewog
ICAgICAgIHN0cnVjdCBzbWJ3X2RpciAqbmV4dCwgKnByZXY7CiAgICAgICAgaW50IGZkOwogICAg
ICAgIGludCBvZmZzZXQsIGNvdW50LCBtYWxsb2NlZDsKICAgICAgICBzdHJ1Y3Qgc21id19zZXJ2
ZXIgKnNydjsKICAgICAgICBzdHJ1Y3QgZmlsZV9pbmZvICpsaXN0OwogICAgICAgIGNoYXIgKnBh
dGg7Cn07Cgp0eXBlZGVmIHZvaWQgKCpzbWJ3X2dldF9hdXRoX2RhdGFfZm4pKGNoYXIgKnNlcnZl
ciwgY2hhciAqc2hhcmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciAqKndvcmtncm91cCwgY2hhciAqKnVzZXJuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIgKipwYXNzd29yZCk7CiMgNzAyICJpbmNsdWRlL2luY2x1ZGVzLmgi
IDIKIyAxICJpbmNsdWRlL25hbWVzZXJ2LmgiIDEKIyAzOCAiaW5jbHVkZS9uYW1lc2Vydi5oIgpl
bnVtIG5ldGJpb3NfcmVwbHlfdHlwZV9jb2RlIHsgTk1CX1FVRVJZLCBOTUJfU1RBVFVTLCBOTUJf
UkVHLCBOTUJfUkVHX1JFRlJFU0gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTUJf
UkVMLCBOTUJfV0FJVF9BQ0ssIE5NQl9NVUxUSUhPTUVEX1JFRywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdJTlNfUkVHLCBXSU5TX1FVRVJZIH07CiMgMTQyICJpbmNsdWRlL25hbWVz
ZXJ2LmgiCmVudW0gbmFtZV9zb3VyY2Uge0xNSE9TVFNfTkFNRSwgUkVHSVNURVJfTkFNRSwgU0VM
Rl9OQU1FLCBETlNfTkFNRSwKICAgICAgICAgICAgICAgICAgRE5TRkFJTF9OQU1FLCBQRVJNQU5F
TlRfTkFNRSwgV0lOU19QUk9YWV9OQU1FfTsKZW51bSBub2RlX3R5cGUge0JfTk9ERT0wLCBQX05P
REU9MSwgTV9OT0RFPTIsIE5CRERfTk9ERT0zfTsKZW51bSBwYWNrZXRfdHlwZSB7Tk1CX1BBQ0tF
VCwgREdSQU1fUEFDS0VUfTsKCmVudW0gbWFzdGVyX3N0YXRlCnsKICBNU1RfTk9ORSwKICBNU1Rf
UE9URU5USUFMLAogIE1TVF9CQUNLVVAsCiAgTVNUX01TQiwKICBNU1RfQlJPV1NFUiwKICBNU1Rf
VU5CRUNPTUlOR19NQVNURVIKfTsKCmVudW0gZG9tYWluX3N0YXRlCnsKICBET01BSU5fTk9ORSwK
ICBET01BSU5fV0FJVCwKICBET01BSU5fTVNUCn07CgplbnVtIGxvZ29uX3N0YXRlCnsKICBMT0dP
Tl9OT05FLAogIExPR09OX1dBSVQsCiAgTE9HT05fU1JWCn07CgpzdHJ1Y3Qgc3VibmV0X3JlY29y
ZDsKCnN0cnVjdCBubWJfZGF0YQp7CiAgdW5zaWduZWQgc2hvcnQgbmJfZmxhZ3M7CiAgaW50IG51
bV9pcHM7CiAgc3RydWN0IGluX2FkZHIgKmlwOwoKICBlbnVtIG5hbWVfc291cmNlIHNvdXJjZTsK
CiAgdGltZV90IGRlYXRoX3RpbWU7CiAgdGltZV90IHJlZnJlc2hfdGltZTsKfTsKCgpzdHJ1Y3Qg
bmFtZV9yZWNvcmQKICB7CiAgdWJpX2J0Tm9kZSBub2RlWzFdOwogIHN0cnVjdCBzdWJuZXRfcmVj
b3JkICpzdWJuZXQ7CiAgc3RydWN0IG5tYl9uYW1lIG5hbWU7CiAgc3RydWN0IG5tYl9kYXRhIGRh
dGE7CiAgfTsKCgpzdHJ1Y3QgYnJvd3NlX2NhY2hlX3JlY29yZAogIHsKICB1YmlfZGxOb2RlIG5v
ZGVbMV07CiAgcHN0cmluZyBsbWJfbmFtZTsKICBwc3RyaW5nIHdvcmtfZ3JvdXA7CiAgc3RydWN0
IGluX2FkZHIgaXA7CiAgdGltZV90IHN5bmNfdGltZTsKICB0aW1lX3QgZGVhdGhfdGltZTsKICB9
OwoKCgoKc3RydWN0IHNlcnZlcl9yZWNvcmQKewogIHN0cnVjdCBzZXJ2ZXJfcmVjb3JkICpuZXh0
OwogIHN0cnVjdCBzZXJ2ZXJfcmVjb3JkICpwcmV2OwoKICBzdHJ1Y3Qgc3VibmV0X3JlY29yZCAq
c3VibmV0OwoKICBzdHJ1Y3Qgc2VydmVyX2luZm9fc3RydWN0IHNlcnY7CiAgdGltZV90IGRlYXRo
X3RpbWU7Cn07CgoKc3RydWN0IHdvcmtfcmVjb3JkCnsKICBzdHJ1Y3Qgd29ya19yZWNvcmQgKm5l
eHQ7CiAgc3RydWN0IHdvcmtfcmVjb3JkICpwcmV2OwoKICBzdHJ1Y3Qgc3VibmV0X3JlY29yZCAq
c3VibmV0OwoKICBzdHJ1Y3Qgc2VydmVyX3JlY29yZCAqc2VydmVybGlzdDsKCgogIGVudW0gbWFz
dGVyX3N0YXRlIG1zdF9zdGF0ZTsKCgogIGVudW0gZG9tYWluX3N0YXRlIGRvbV9zdGF0ZTsKCgog
IGVudW0gbG9nb25fc3RhdGUgbG9nX3N0YXRlOwoKCiAgZnN0cmluZyB3b3JrX2dyb3VwOwogIGlu
dCB0b2tlbjsKICBmc3RyaW5nIGxvY2FsX21hc3Rlcl9icm93c2VyX25hbWU7CgoKICB0aW1lX3Qg
bGFzdGFubm91bmNlX3RpbWU7CiAgaW50IGFubm91bmNlX2ludGVydmFsOwogIEJPT0wgbmVlZGFu
bm91bmNlOwoKCiAgdGltZV90IGRlYXRoX3RpbWU7CgoKICBCT09MIFJ1bm5pbmdFbGVjdGlvbjsK
ICBCT09MIG5lZWRlbGVjdGlvbjsKICBpbnQgRWxlY3Rpb25Db3VudDsKICB1bnNpZ25lZCBpbnQg
RWxlY3Rpb25Dcml0ZXJpb247CgoKICBzdHJ1Y3Qgbm1iX25hbWUgZG1iX25hbWU7CiAgc3RydWN0
IGluX2FkZHIgZG1iX2FkZHI7Cn07CgoKc3RydWN0IHVzZXJkYXRhX3N0cnVjdDsKCnR5cGVkZWYg
c3RydWN0IHVzZXJkYXRhX3N0cnVjdCAqICgqdXNlcmRhdGFfY29weV9mbikoc3RydWN0IHVzZXJk
YXRhX3N0cnVjdCAqKTsKdHlwZWRlZiB2b2lkICgqdXNlcmRhdGFfZnJlZV9mbikoc3RydWN0IHVz
ZXJkYXRhX3N0cnVjdCAqKTsKCgoKc3RydWN0IHVzZXJkYXRhX3N0cnVjdCB7CiAgdXNlcmRhdGFf
Y29weV9mbiBjb3B5X2ZuOwogIHVzZXJkYXRhX2ZyZWVfZm4gZnJlZV9mbjsKICB1bnNpZ25lZCBp
bnQgdXNlcmRhdGFfbGVuOwogIGNoYXIgZGF0YVsxNl07Cn07CgpzdHJ1Y3QgcmVzcG9uc2VfcmVj
b3JkOwpzdHJ1Y3QgcGFja2V0X3N0cnVjdDsKc3RydWN0IHJlc19yZWM7CgoKdHlwZWRlZiB2b2lk
ICgqcmVzcG9uc2VfZnVuY3Rpb24pKHN0cnVjdCBzdWJuZXRfcmVjb3JkICosIHN0cnVjdCByZXNw
b25zZV9yZWNvcmQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBw
YWNrZXRfc3RydWN0ICopOwoKCnR5cGVkZWYgdm9pZCAoKnRpbWVvdXRfcmVzcG9uc2VfZnVuY3Rp
b24pKHN0cnVjdCBzdWJuZXRfcmVjb3JkICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCByZXNwb25zZV9yZWNvcmQgKik7CgoKCnR5cGVkZWYgdm9pZCAo
KnN1Y2Nlc3NfZnVuY3Rpb24pKHN0cnVjdCBzdWJuZXRfcmVjb3JkICosIHN0cnVjdCB1c2VyZGF0
YV9zdHJ1Y3QgKiwgLi4uKTsKCgoKdHlwZWRlZiB2b2lkICgqZmFpbF9mdW5jdGlvbikoc3RydWN0
IHN1Ym5ldF9yZWNvcmQgKiwgc3RydWN0IHJlc3BvbnNlX3JlY29yZCAqLCAuLi4pOwoKCgoKdHlw
ZWRlZiB2b2lkICgqcmVnaXN0ZXJfbmFtZV9zdWNjZXNzX2Z1bmN0aW9uKSggc3RydWN0IHN1Ym5l
dF9yZWNvcmQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IHVzZXJkYXRhX3N0cnVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgbm1iX25hbWUgKiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGluX2FkZHIpOwp0eXBlZGVm
IHZvaWQgKCpyZWdpc3Rlcl9uYW1lX2ZhaWxfZnVuY3Rpb24pKCBzdHJ1Y3Qgc3VibmV0X3JlY29y
ZCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
cmVzcG9uc2VfcmVjb3JkICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBubWJfbmFtZSAqKTsKCnR5cGVkZWYgdm9pZCAoKnJlbGVhc2VfbmFtZV9z
dWNjZXNzX2Z1bmN0aW9uKSggc3RydWN0IHN1Ym5ldF9yZWNvcmQgKiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdXNlcmRhdGFfc3RydWN0ICos
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5t
Yl9uYW1lICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RydWN0IGluX2FkZHIpOwp0eXBlZGVmIHZvaWQgKCpyZWxlYXNlX25hbWVfZmFpbF9mdW5jdGlv
bikoIHN0cnVjdCBzdWJuZXRfcmVjb3JkICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IHJlc3BvbnNlX3JlY29yZCAqLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBubWJfbmFtZSAqKTsKCnR5cGVkZWYg
dm9pZCAoKnJlZnJlc2hfbmFtZV9zdWNjZXNzX2Z1bmN0aW9uKSggc3RydWN0IHN1Ym5ldF9yZWNv
cmQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3QgdXNlcmRhdGFfc3RydWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IG5tYl9uYW1lICosCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbl9hZGRyKTsKdHlwZWRlZiB2b2lkICgqcmVm
cmVzaF9uYW1lX2ZhaWxfZnVuY3Rpb24pKCBzdHJ1Y3Qgc3VibmV0X3JlY29yZCAqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCByZXNwb25zZV9yZWNv
cmQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
bm1iX25hbWUgKik7Cgp0eXBlZGVmIHZvaWQgKCpxdWVyeV9uYW1lX3N1Y2Nlc3NfZnVuY3Rpb24