This is the mail archive of the gdb-prs@sources.redhat.com mailing list for the GDB 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]

gdb/781: illegal stabs info for gcc 3.2 +gdb 20021001 (sparc-sun-solaris2.8)


>Number:         781
>Category:       gdb
>Synopsis:       illegal stabs info for gcc 3.2 +gdb 20021001 (sparc-sun-solaris2.8)
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Oct 02 11:58:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     rrh@cray.com
>Release:        gdb 20021001
>Organization:
>Environment:
sparc-sun-solaris2.8 gcc3.2
>Description:
The enclosed (long, sorry about that: attempts to shorten
fail) file when compiled using gcc 3.2 on sparc-sun-solaris2.8
produces a .stabs entry that causes gdb 20021001 to
discard on (the gdb internal function error_type is called).
The offending stabs starts off
        .stabs  "srm:/2(1,2494):_ZN8Relation3srmE;......
gdb doesn't know what to do about a type code of '/'.
The offending C++ declaration is
...  
static SavedRelationManager srm;
...
SavedRelationManager Relation::srm;

>How-To-Repeat:

>Fix:

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

dHlwZWRlZiBpbnQgcHRyZGlmZl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBzaXplX3Q7CmV4dGVy
biAiQyIgewp9CmV4dGVybiAiQyIgewp9CmV4dGVybiAiQyIgewpleHRlcm4gdW5zaWduZWQgY2hh
ciBfX2N0eXBlW107CnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgcXVvdDsKICAgICAgICBp
bnQgcmVtOwp9IGRpdl90Owp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgbG9uZyBxdW90OwogICAg
ICAgIGxvbmcgcmVtOwp9IGxkaXZfdDsKZXh0ZXJuIHZvaWQgYWJvcnQodm9pZCk7CmV4dGVybiBp
bnQgYWJzKGludCk7CmV4dGVybiBpbnQgYXRleGl0KHZvaWQgKCopKHZvaWQpKTsKZXh0ZXJuIGRv
dWJsZSBhdG9mKGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgYXRvaShjb25zdCBjaGFyICopOwpl
eHRlcm4gbG9uZyBpbnQgYXRvbChjb25zdCBjaGFyICopOwpleHRlcm4gdm9pZCAqYnNlYXJjaChj
b25zdCB2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsCiAgICAgICAgaW50ICgq
KShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwpleHRlcm4gdm9pZCAqY2FsbG9jKHNpemVf
dCwgc2l6ZV90KTsKZXh0ZXJuIGRpdl90IGRpdihpbnQsIGludCk7CmV4dGVybiB2b2lkIGV4aXQo
aW50KTsKZXh0ZXJuIHZvaWQgZnJlZSh2b2lkICopOwpleHRlcm4gY2hhciAqZ2V0ZW52KGNvbnN0
IGNoYXIgKik7CmV4dGVybiBsb25nIGludCBsYWJzKGxvbmcpOwpleHRlcm4gbGRpdl90IGxkaXYo
bG9uZywgbG9uZyk7CmV4dGVybiB2b2lkICptYWxsb2Moc2l6ZV90KTsKZXh0ZXJuIGludCBtYmxl
bihjb25zdCBjaGFyICosIHNpemVfdCk7CmV4dGVybiBzaXplX3QgbWJzdG93Y3Mod2NoYXJfdCAq
LCBjb25zdCBjaGFyICosIHNpemVfdCk7CmV4dGVybiBpbnQgbWJ0b3djKHdjaGFyX3QgKiwgY29u
c3QgY2hhciAqLCBzaXplX3QpOwpleHRlcm4gdm9pZCBxc29ydCh2b2lkICosIHNpemVfdCwgc2l6
ZV90LAogICAgICAgIGludCAoKikoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKTsKZXh0ZXJu
IGludCByYW5kKHZvaWQpOwpleHRlcm4gdm9pZCAqcmVhbGxvYyh2b2lkICosIHNpemVfdCk7CmV4
dGVybiB2b2lkIHNyYW5kKHVuc2lnbmVkIGludCk7CmV4dGVybiBkb3VibGUgc3RydG9kKGNvbnN0
IGNoYXIgKiwgY2hhciAqKik7CmV4dGVybiBsb25nIGludCBzdHJ0b2woY29uc3QgY2hhciAqLCBj
aGFyICoqLCBpbnQpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgc3RydG91bChjb25zdCBjaGFy
ICosIGNoYXIgKiosIGludCk7CmV4dGVybiBpbnQgc3lzdGVtKGNvbnN0IGNoYXIgKik7CmV4dGVy
biBpbnQgd2N0b21iKGNoYXIgKiwgd2NoYXJfdCk7CmV4dGVybiBzaXplX3Qgd2NzdG9tYnMoY2hh
ciAqLCBjb25zdCB3Y2hhcl90ICosIHNpemVfdCk7Cn0KZXh0ZXJuICJDIiB7CnR5cGVkZWYgc3Ry
dWN0IF9sYWJlbF90IHsgbG9uZyB2YWxbMl07IH0gbGFiZWxfdDsKdHlwZWRlZiB1bnNpZ25lZCBj
aGFyIGxvY2tfdDsKfQpleHRlcm4gIkMiIHsKdHlwZWRlZiBjaGFyIGludDhfdDsKdHlwZWRlZiBz
aG9ydCBpbnQxNl90Owp0eXBlZGVmIGludCBpbnQzMl90Owp0eXBlZGVmIGxvbmcgbG9uZyBpbnQ2
NF90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludDhfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9y
dCB1aW50MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDMyX3Q7CnR5cGVkZWYgdW5zaWdu
ZWQgbG9uZyBsb25nIHVpbnQ2NF90Owp0eXBlZGVmIGludDY0X3QgaW50bWF4X3Q7CnR5cGVkZWYg
dWludDY0X3QgdWludG1heF90Owp0eXBlZGVmIGludCBpbnRwdHJfdDsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgdWludHB0cl90Owp0eXBlZGVmIGNoYXIgaW50X2xlYXN0OF90Owp0eXBlZGVmIHNob3J0
IGludF9sZWFzdDE2X3Q7CnR5cGVkZWYgaW50IGludF9sZWFzdDMyX3Q7CnR5cGVkZWYgbG9uZyBs
b25nIGludF9sZWFzdDY0X3Q7CnR5cGVkZWYgdW5zaWduZWQgY2hhciB1aW50X2xlYXN0OF90Owp0
eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVpbnRfbGVhc3QxNl90Owp0eXBlZGVmIHVuc2lnbmVkIGlu
dCB1aW50X2xlYXN0MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWludF9sZWFzdDY0
X3Q7Cn0KZXh0ZXJuICJDIiB7CnR5cGVkZWYgbG9uZyBsb25nIGxvbmdsb25nX3Q7CnR5cGVkZWYg
dW5zaWduZWQgbG9uZyBsb25nIHVfbG9uZ2xvbmdfdDsKdHlwZWRlZiBsb25nIHRfc2NhbGFyX3Q7
CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB0X3VzY2FsYXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBjaGFy
IHVjaGFyX3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdXNob3J0X3Q7CnR5cGVkZWYgdW5zaWdu
ZWQgaW50IHVpbnRfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVsb25nX3Q7CnR5cGVkZWYgY2hh
ciAqY2FkZHJfdDsKdHlwZWRlZiBsb25nIGRhZGRyX3Q7CnR5cGVkZWYgc2hvcnQgY250X3Q7CnR5
cGVkZWYgdWxvbmdfdCBwYWRkcl90Owp0eXBlZGVmIHVsb25nX3QgcGZuX3Q7CnR5cGVkZWYgdWxv
bmdfdCBwZ2NudF90Owp0eXBlZGVmIGxvbmcgc3BnY250X3Q7CnR5cGVkZWYgdWNoYXJfdCB1c2Vf
dDsKdHlwZWRlZiBzaG9ydCBzeXNpZF90Owp0eXBlZGVmIHNob3J0IGluZGV4X3Q7CnR5cGVkZWYg
dm9pZCAqdGltZW91dF9pZF90Owp0eXBlZGVmIHZvaWQgKmJ1ZmNhbGxfaWRfdDsKdHlwZWRlZiBs
b25nIG9mZl90Owp0eXBlZGVmIGxvbmdsb25nX3Qgb2ZmNjRfdDsKdHlwZWRlZiB1bG9uZ190IGlu
b190Owp0eXBlZGVmIGxvbmcgYmxrY250X3Q7CnR5cGVkZWYgdWxvbmdfdCBmc2Jsa2NudF90Owp0
eXBlZGVmIHVsb25nX3QgZnNmaWxjbnRfdDsKdHlwZWRlZiB1X2xvbmdsb25nX3QgaW5vNjRfdDsK
dHlwZWRlZiBsb25nbG9uZ190IGJsa2NudDY0X3Q7CnR5cGVkZWYgdV9sb25nbG9uZ190IGZzYmxr
Y250NjRfdDsKdHlwZWRlZiB1X2xvbmdsb25nX3QgZnNmaWxjbnQ2NF90Owp0eXBlZGVmIGxvbmcg
Ymxrc2l6ZV90Owp0eXBlZGVmIGVudW0geyBfQl9GQUxTRSwgX0JfVFJVRSB9IGJvb2xlYW5fdDsK
dHlwZWRlZiBpbnQ2NF90IHBhZDY0X3Q7CnR5cGVkZWYgdWludDY0X3QgdXBhZDY0X3Q7CnR5cGVk
ZWYgbG9uZ2xvbmdfdCBvZmZzZXRfdDsKdHlwZWRlZiB1X2xvbmdsb25nX3QgdV9vZmZzZXRfdDsK
dHlwZWRlZiB1X2xvbmdsb25nX3QgbGVuX3Q7CnR5cGVkZWYgbG9uZ2xvbmdfdCBkaXNrYWRkcl90
Owp0eXBlZGVmIHVuaW9uIHsKICAgICAgICBvZmZzZXRfdCBfZjsKICAgICAgICBzdHJ1Y3Qgewog
ICAgICAgICAgICAgICAgaW50MzJfdCBfdTsKICAgICAgICAgICAgICAgIGludDMyX3QgX2w7CiAg
ICAgICAgfSBfcDsKfSBsbG9mZl90Owp0eXBlZGVmIHVuaW9uIHsKICAgICAgICBkaXNrYWRkcl90
IF9mOwogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICBpbnQzMl90IF91OwogICAgICAg
ICAgICAgICAgaW50MzJfdCBfbDsKICAgICAgICB9IF9wOwp9IGxsZGFkZHJfdDsKdHlwZWRlZiB1
aW50X3Qga19mbHRzZXRfdDsKdHlwZWRlZiBsb25nIGlkX3Q7CnR5cGVkZWYgdWludF90IHVzZWNv
bmRzX3Q7CnR5cGVkZWYgbG9uZyBzdXNlY29uZHNfdDsKdHlwZWRlZiB1bG9uZ190IG1ham9yX3Q7
CnR5cGVkZWYgdWxvbmdfdCBtaW5vcl90Owp0eXBlZGVmIHNob3J0IHByaV90Owp0eXBlZGVmIHVz
aG9ydF90IG9fbW9kZV90Owp0eXBlZGVmIHNob3J0IG9fZGV2X3Q7CnR5cGVkZWYgdXNob3J0X3Qg
b191aWRfdDsKdHlwZWRlZiBvX3VpZF90IG9fZ2lkX3Q7CnR5cGVkZWYgc2hvcnQgb19ubGlua190
Owp0eXBlZGVmIHNob3J0IG9fcGlkX3Q7CnR5cGVkZWYgdXNob3J0X3Qgb19pbm9fdDsKdHlwZWRl
ZiBpbnQga2V5X3Q7CnR5cGVkZWYgdWxvbmdfdCBtb2RlX3Q7CnR5cGVkZWYgbG9uZyB1aWRfdDsK
dHlwZWRlZiB1aWRfdCBnaWRfdDsKdHlwZWRlZiBpZF90IHRhc2tpZF90Owp0eXBlZGVmIGlkX3Qg
cHJvamlkX3Q7CnR5cGVkZWYgdWludF90IHB0aHJlYWRfdDsKdHlwZWRlZiB1aW50X3QgcHRocmVh
ZF9rZXlfdDsKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfbXV0ZXggewogICAgICAgIHN0cnVjdCB7
CiAgICAgICAgICAgICAgICB1aW50MTZfdCBfX3B0aHJlYWRfbXV0ZXhfZmxhZzE7CiAgICAgICAg
ICAgICAgICB1aW50OF90IF9fcHRocmVhZF9tdXRleF9mbGFnMjsKICAgICAgICAgICAgICAgIHVp
bnQ4X3QgX19wdGhyZWFkX211dGV4X2NlaWxpbmc7CiAgICAgICAgICAgICAgICB1aW50MTZfdCBf
X3B0aHJlYWRfbXV0ZXhfdHlwZTsKICAgICAgICAgICAgICAgIHVpbnQxNl90IF9fcHRocmVhZF9t
dXRleF9tYWdpYzsKICAgICAgICB9IF9fcHRocmVhZF9tdXRleF9mbGFnczsKICAgICAgICB1bmlv
biB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICB1aW50
OF90IF9fcHRocmVhZF9tdXRleF9wYWRbOF07CiAgICAgICAgICAgICAgICB9IF9fcHRocmVhZF9t
dXRleF9sb2NrNjQ7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAg
ICAgICB1aW50MzJfdCBfX3B0aHJlYWRfb3duZXJwaWQ7CiAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQzMl90IF9fcHRocmVhZF9sb2Nrd29yZDsKICAgICAgICAgICAgICAgIH0gX19wdGhyZWFk
X211dGV4X2xvY2szMjsKICAgICAgICAgICAgICAgIHVwYWQ2NF90IF9fcHRocmVhZF9tdXRleF9v
d25lcjY0OwogICAgICAgIH0gX19wdGhyZWFkX211dGV4X2xvY2s7CiAgICAgICAgdXBhZDY0X3Qg
X19wdGhyZWFkX211dGV4X2RhdGE7Cn0gcHRocmVhZF9tdXRleF90Owp0eXBlZGVmIHN0cnVjdCBf
cHRocmVhZF9jb25kIHsKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdWludDhfdCBf
X3B0aHJlYWRfY29uZF9mbGFnWzRdOwogICAgICAgICAgICAgICAgdWludDE2X3QgX19wdGhyZWFk
X2NvbmRfdHlwZTsKICAgICAgICAgICAgICAgIHVpbnQxNl90IF9fcHRocmVhZF9jb25kX21hZ2lj
OwogICAgICAgIH0gX19wdGhyZWFkX2NvbmRfZmxhZ3M7CiAgICAgICAgdXBhZDY0X3QgX19wdGhy
ZWFkX2NvbmRfZGF0YTsKfSBwdGhyZWFkX2NvbmRfdDsKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRf
cndsb2NrIHsKICAgICAgICBpbnQzMl90IF9fcHRocmVhZF9yd2xvY2tfcmVhZGVyczsKICAgICAg
ICB1aW50MTZfdCBfX3B0aHJlYWRfcndsb2NrX3R5cGU7CiAgICAgICAgdWludDE2X3QgX19wdGhy
ZWFkX3J3bG9ja19tYWdpYzsKICAgICAgICB1cGFkNjRfdCBfX3B0aHJlYWRfcndsb2NrX3BhZDFb
M107CiAgICAgICAgdXBhZDY0X3QgX19wdGhyZWFkX3J3bG9ja19wYWQyWzJdOwogICAgICAgIHVw
YWQ2NF90IF9fcHRocmVhZF9yd2xvY2tfcGFkM1syXTsKfSBwdGhyZWFkX3J3bG9ja190Owp0eXBl
ZGVmIHN0cnVjdCB7CiAgICAgICAgdm9pZCAqX19wdGhyZWFkX2F0dHJwOwp9IHB0aHJlYWRfYXR0
cl90Owp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgdm9pZCAqX19wdGhyZWFkX211dGV4YXR0cnA7
Cn0gcHRocmVhZF9tdXRleGF0dHJfdDsKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHZvaWQgKl9f
cHRocmVhZF9jb25kYXR0cnA7Cn0gcHRocmVhZF9jb25kYXR0cl90Owp0eXBlZGVmIHN0cnVjdCB7
CiAgICAgICAgdXBhZDY0X3QgX19wdGhyZWFkX29uY2VfcGFkWzRdOwp9IHB0aHJlYWRfb25jZV90
Owp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgdm9pZCAqX19wdGhyZWFkX3J3bG9ja2F0dHJwOwp9
IHB0aHJlYWRfcndsb2NrYXR0cl90Owp0eXBlZGVmIHVsb25nX3QgZGV2X3Q7CnR5cGVkZWYgdWxv
bmdfdCBubGlua190Owp0eXBlZGVmIGxvbmcgcGlkX3Q7CnR5cGVkZWYgaW50IHNzaXplX3Q7CnR5
cGVkZWYgbG9uZyB0aW1lX3Q7CnR5cGVkZWYgbG9uZyBjbG9ja190Owp0eXBlZGVmIGludCBjbG9j
a2lkX3Q7CnR5cGVkZWYgaW50IHRpbWVyX3Q7CnR5cGVkZWYgdW5zaWduZWQgY2hhciB1bmNoYXI7
CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50
Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWxvbmc7CnR5cGVkZWYgdW5zaWduZWQgY2hhciB1X2No
YXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
dV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1X2xvbmc7CnR5cGVkZWYgc3RydWN0IF9xdWFk
IHsgaW50IHZhbFsyXTsgfSBxdWFkX3Q7CnR5cGVkZWYgcXVhZF90IHF1YWQ7CmV4dGVybiAiQyIg
ewpzdHJ1Y3QgdGltZXZhbCB7CiAgICAgICAgdGltZV90IHR2X3NlYzsKICAgICAgICBzdXNlY29u
ZHNfdCB0dl91c2VjOwp9OwpzdHJ1Y3QgdGltZXpvbmUgewogICAgICAgIGludCB0el9taW51dGVz
d2VzdDsKICAgICAgICBpbnQgdHpfZHN0dGltZTsKfTsKfQpleHRlcm4gIkMiIHsKc3RydWN0IGl0
aW1lcnZhbCB7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgaXRfaW50ZXJ2YWw7CiAgICAgICAgc3Ry
dWN0IHRpbWV2YWwgaXRfdmFsdWU7Cn07CnR5cGVkZWYgbG9uZ2xvbmdfdCBocnRpbWVfdDsKaW50
IGFkanRpbWUoc3RydWN0IHRpbWV2YWwgKiwgc3RydWN0IHRpbWV2YWwgKik7CmludCBnZXRpdGlt
ZXIoaW50LCBzdHJ1Y3QgaXRpbWVydmFsICopOwppbnQgdXRpbWVzKGNvbnN0IGNoYXIgKiwgY29u
c3Qgc3RydWN0IHRpbWV2YWwgKik7CmludCBzZXRpdGltZXIoaW50LCBjb25zdCBzdHJ1Y3QgaXRp
bWVydmFsICosIHN0cnVjdCBpdGltZXJ2YWwgKik7CmludCBzZXR0aW1lb2ZkYXkoc3RydWN0IHRp
bWV2YWwgKiwgdm9pZCAqKTsKaHJ0aW1lX3QgZ2V0aHJ0aW1lKHZvaWQpOwpocnRpbWVfdCBnZXRo
cnZ0aW1lKHZvaWQpOwppbnQgZ2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICosIHZvaWQgKik7
CmV4dGVybiAiQyIgewpzdHJ1Y3QgdG0gewogICAgICAgIGludCB0bV9zZWM7CiAgICAgICAgaW50
IHRtX21pbjsKICAgICAgICBpbnQgdG1faG91cjsKICAgICAgICBpbnQgdG1fbWRheTsKICAgICAg
ICBpbnQgdG1fbW9uOwogICAgICAgIGludCB0bV95ZWFyOwogICAgICAgIGludCB0bV93ZGF5Owog
ICAgICAgIGludCB0bV95ZGF5OwogICAgICAgIGludCB0bV9pc2RzdDsKfTsKZXh0ZXJuIGNoYXIg
KmFzY3RpbWUoY29uc3Qgc3RydWN0IHRtICopOwpleHRlcm4gY2xvY2tfdCBjbG9jayh2b2lkKTsK
ZXh0ZXJuIGNoYXIgKmN0aW1lKGNvbnN0IHRpbWVfdCAqKTsKZXh0ZXJuIGRvdWJsZSBkaWZmdGlt
ZSh0aW1lX3QsIHRpbWVfdCk7CmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZShjb25zdCB0aW1lX3Qg
Kik7CmV4dGVybiBzdHJ1Y3QgdG0gKmxvY2FsdGltZShjb25zdCB0aW1lX3QgKik7CmV4dGVybiB0
aW1lX3QgbWt0aW1lKHN0cnVjdCB0bSAqKTsKZXh0ZXJuIHRpbWVfdCB0aW1lKHRpbWVfdCAqKTsK
ZXh0ZXJuIHNpemVfdCBzdHJmdGltZShjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCBjb25z
dCBzdHJ1Y3QgdG0gKik7Cn0KZXh0ZXJuICJDIiB7CmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZV9y
KGNvbnN0IHRpbWVfdCAqLCBzdHJ1Y3QgdG0gKik7CmV4dGVybiBzdHJ1Y3QgdG0gKmxvY2FsdGlt
ZV9yKGNvbnN0IHRpbWVfdCAqLCBzdHJ1Y3QgdG0gKik7CmV4dGVybiBjaGFyICpzdHJwdGltZShj
b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgc3RydWN0IHRtICopOwpleHRlcm4gIkMiIHsKdHlw
ZWRlZiBzdHJ1Y3QgdGltZXNwZWMgewogICAgICAgIHRpbWVfdCB0dl9zZWM7CiAgICAgICAgbG9u
ZyB0dl9uc2VjOwp9IHRpbWVzcGVjX3Q7CnR5cGVkZWYgc3RydWN0IHRpbWVzcGVjIHRpbWVzdHJ1
Y190Owp0eXBlZGVmIHN0cnVjdCBpdGltZXJzcGVjIHsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMg
aXRfaW50ZXJ2YWw7CiAgICAgICAgc3RydWN0IHRpbWVzcGVjIGl0X3ZhbHVlOwp9IGl0aW1lcnNw
ZWNfdDsKfQp1bmlvbiBzaWd2YWwgewogICAgICAgIGludCBzaXZhbF9pbnQ7CiAgICAgICAgdm9p
ZCAqc2l2YWxfcHRyOwp9OwpzdHJ1Y3Qgc2lnZXZlbnQgewogICAgICAgIGludCBzaWdldl9ub3Rp
Znk7CiAgICAgICAgaW50IHNpZ2V2X3NpZ25vOwogICAgICAgIHVuaW9uIHNpZ3ZhbCBzaWdldl92
YWx1ZTsKICAgICAgICB2b2lkICgqc2lnZXZfbm90aWZ5X2Z1bmN0aW9uKSh1bmlvbiBzaWd2YWwp
OwogICAgICAgIHB0aHJlYWRfYXR0cl90ICpzaWdldl9ub3RpZnlfYXR0cmlidXRlczsKICAgICAg
ICBpbnQgX19zaWdldl9wYWQyOwp9OwpleHRlcm4gaW50IGNsb2NrX2dldHJlcyhjbG9ja2lkX3Qs
IHN0cnVjdCB0aW1lc3BlYyAqKTsKZXh0ZXJuIGludCBjbG9ja19nZXR0aW1lKGNsb2NraWRfdCwg
c3RydWN0IHRpbWVzcGVjICopOwpleHRlcm4gaW50IGNsb2NrX3NldHRpbWUoY2xvY2tpZF90LCBj
b25zdCBzdHJ1Y3QgdGltZXNwZWMgKik7CmV4dGVybiBpbnQgdGltZXJfY3JlYXRlKGNsb2NraWRf
dCwgc3RydWN0IHNpZ2V2ZW50ICosIHRpbWVyX3QgKik7CmV4dGVybiBpbnQgdGltZXJfZGVsZXRl
KHRpbWVyX3QpOwpleHRlcm4gaW50IHRpbWVyX2dldG92ZXJydW4odGltZXJfdCk7CmV4dGVybiBp
bnQgdGltZXJfZ2V0dGltZSh0aW1lcl90LCBzdHJ1Y3QgaXRpbWVyc3BlYyAqKTsKZXh0ZXJuIGlu
dCB0aW1lcl9zZXR0aW1lKHRpbWVyX3QsIGludCwgY29uc3Qgc3RydWN0IGl0aW1lcnNwZWMgKiwK
ICAgICAgICAgICAgICAgIHN0cnVjdCBpdGltZXJzcGVjICopOwpleHRlcm4gaW50IG5hbm9zbGVl
cChjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKiwgc3RydWN0IHRpbWVzcGVjICopOwpleHRlcm4gdm9p
ZCB0enNldCh2b2lkKTsKZXh0ZXJuIGNoYXIgKnR6bmFtZVsyXTsKZXh0ZXJuIGxvbmcgX3N5c2Nv
bmYoaW50KTsKZXh0ZXJuIGxvbmcgdGltZXpvbmU7CmV4dGVybiBpbnQgZGF5bGlnaHQ7CmV4dGVy
biBzdHJ1Y3QgdG0gKmdldGRhdGUoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBnZXRkYXRlX2Vy
cjsKZXh0ZXJuIGNoYXIgKmFzY3RpbWVfcihjb25zdCBzdHJ1Y3QgdG0gKiwgY2hhciAqKTsKZXh0
ZXJuIGNoYXIgKmN0aW1lX3IoY29uc3QgdGltZV90ICosIGNoYXIgKik7Cn0KfQpleHRlcm4gIkMi
IHsKdHlwZWRlZiBsb25nIGZkX21hc2s7CnR5cGVkZWYgbG9uZyBmZHNfbWFzazsKdHlwZWRlZiBz
dHJ1Y3QgZmRfc2V0IHsKICAgICAgICBsb25nIGZkc19iaXRzWygoKDEwMjQpKygoKHNpemVvZiAo
ZmRzX21hc2spICogOCkpLTEpKS8oKHNpemVvZiAoZmRzX21hc2spICogOCkpKV07Cn0gZmRfc2V0
OwpleHRlcm4gaW50IHNlbGVjdChpbnQsIGZkX3NldCAqLCBmZF9zZXQgKiwgZmRfc2V0ICosIHN0
cnVjdCB0aW1ldmFsICopOwp9Cn0KZXh0ZXJuICJDIiB7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBy
bGltX3Q7CnN0cnVjdCBybGltaXQgewogICAgICAgIHJsaW1fdCBybGltX2N1cjsKICAgICAgICBy
bGltX3QgcmxpbV9tYXg7Cn07CnR5cGVkZWYgdV9sb25nbG9uZ190IHJsaW02NF90OwpzdHJ1Y3Qg
cmxpbWl0NjQgewogICAgICAgIHJsaW02NF90IHJsaW1fY3VyOwogICAgICAgIHJsaW02NF90IHJs
aW1fbWF4Owp9OwpzdHJ1Y3QgcnVzYWdlIHsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBydV91dGlt
ZTsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBydV9zdGltZTsKICAgICAgICBsb25nIHJ1X21heHJz
czsKICAgICAgICBsb25nIHJ1X2l4cnNzOwogICAgICAgIGxvbmcgcnVfaWRyc3M7CiAgICAgICAg
bG9uZyBydV9pc3JzczsKICAgICAgICBsb25nIHJ1X21pbmZsdDsKICAgICAgICBsb25nIHJ1X21h
amZsdDsKICAgICAgICBsb25nIHJ1X25zd2FwOwogICAgICAgIGxvbmcgcnVfaW5ibG9jazsKICAg
ICAgICBsb25nIHJ1X291YmxvY2s7CiAgICAgICAgbG9uZyBydV9tc2dzbmQ7CiAgICAgICAgbG9u
ZyBydV9tc2dyY3Y7CiAgICAgICAgbG9uZyBydV9uc2lnbmFsczsKICAgICAgICBsb25nIHJ1X252
Y3N3OwogICAgICAgIGxvbmcgcnVfbml2Y3N3Owp9OwpleHRlcm4gaW50IHNldHJsaW1pdChpbnQs
IGNvbnN0IHN0cnVjdCBybGltaXQgKik7CmV4dGVybiBpbnQgZ2V0cmxpbWl0KGludCwgc3RydWN0
IHJsaW1pdCAqKTsKZXh0ZXJuIGludCBzZXRybGltaXQ2NChpbnQsIGNvbnN0IHN0cnVjdCBybGlt
aXQ2NCAqKTsKZXh0ZXJuIGludCBnZXRybGltaXQ2NChpbnQsIHN0cnVjdCBybGltaXQ2NCAqKTsK
ZXh0ZXJuIGludCBnZXRwcmlvcml0eShpbnQsIGlkX3QpOwpleHRlcm4gaW50IHNldHByaW9yaXR5
KGludCwgaWRfdCwgaW50KTsKZXh0ZXJuIGludCBnZXRydXNhZ2UoaW50LCBzdHJ1Y3QgcnVzYWdl
ICopOwp9CmV4dGVybiAiQyIgewpleHRlcm4gIkMiIHsKfQp0eXBlZGVmIHN0cnVjdCBzaWdpbmZv
IHsKICAgICAgICBpbnQgc2lfc2lnbm87CiAgICAgICAgaW50IHNpX2NvZGU7CiAgICAgICAgaW50
IHNpX2Vycm5vOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIGludCBfX3BhZFsoKDEy
OCAvIHNpemVvZiAoaW50KSkgLSAzKV07CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAg
ICAgICAgICAgICAgICAgICBwaWRfdCBfX3BpZDsKICAgICAgICAgICAgICAgICAgICAgICAgdW5p
b24gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aWRfdCBfX3VpZDsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uIHNpZ3ZhbCBfX3ZhbHVlOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0gX19raWxsOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
bG9ja190IF9fdXRpbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgX19zdGF0dXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9j
a190IF9fc3RpbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBfX2NsZDsKICAg
ICAgICAgICAgICAgICAgICAgICAgfSBfX3BkYXRhOwogICAgICAgICAgICAgICAgfSBfX3Byb2M7
CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpf
X2FkZHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX3RyYXBubzsKICAgICAgICAgICAg
ICAgICAgICAgICAgY2FkZHJfdCBfX3BjOwogICAgICAgICAgICAgICAgfSBfX2ZhdWx0OwogICAg
ICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fZmQ7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGxvbmcgX19iYW5kOwogICAgICAgICAgICAgICAgfSBfX2Zp
bGU7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBjYWRk
cl90IF9fZmFkZHI7CiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdHJ1Y190IF9fdHN0YW1w
OwogICAgICAgICAgICAgICAgICAgICAgICBzaG9ydCBfX3N5c2NhbGw7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgX19uc3lzYXJnOwogICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9f
ZmF1bHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgX19zeXNhcmdbOF07CiAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBfX21zdGF0ZVsxMF07CiAgICAgICAgICAgICAgICB9IF9fcHJv
ZjsKICAgICAgICB9IF9fZGF0YTsKfSBzaWdpbmZvX3Q7CnR5cGVkZWYgc3RydWN0IGtfc2lnaW5m
byB7CiAgICAgICAgaW50IHNpX3NpZ25vOwogICAgICAgIGludCBzaV9jb2RlOwogICAgICAgIGlu
dCBzaV9lcnJubzsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAg
ICAgICAgICAgICAgICAgICAgICBwaWRfdCBfX3BpZDsKICAgICAgICAgICAgICAgICAgICAgICAg
dW5pb24gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aWRfdCBfX3VpZDsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uIHNpZ3ZhbCBfX3ZhbHVlOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0gX19raWxsOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjbG9ja190IF9fdXRpbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgX19zdGF0dXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
bG9ja190IF9fc3RpbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBfX2NsZDsK
ICAgICAgICAgICAgICAgICAgICAgICAgfSBfX3BkYXRhOwogICAgICAgICAgICAgICAgfSBfX3By
b2M7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICB2b2lk
ICpfX2FkZHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX3RyYXBubzsKICAgICAgICAg
ICAgICAgICAgICAgICAgY2FkZHJfdCBfX3BjOwogICAgICAgICAgICAgICAgfSBfX2ZhdWx0Owog
ICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fZmQ7
CiAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgX19iYW5kOwogICAgICAgICAgICAgICAgfSBf
X2ZpbGU7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBj
YWRkcl90IF9fZmFkZHI7CiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdHJ1Y190IF9fdHN0
YW1wOwogICAgICAgICAgICAgICAgICAgICAgICBzaG9ydCBfX3N5c2NhbGw7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIgX19uc3lzYXJnOwogICAgICAgICAgICAgICAgICAgICAgICBjaGFy
IF9fZmF1bHQ7CiAgICAgICAgICAgICAgICB9IF9fcHJvZjsKICAgICAgICB9IF9fZGF0YTsKfSBr
X3NpZ2luZm9fdDsKdHlwZWRlZiBzdHJ1Y3Qgc2lncXVldWUgewogICAgICAgIHN0cnVjdCBzaWdx
dWV1ZSAqc3FfbmV4dDsKICAgICAgICBrX3NpZ2luZm9fdCBzcV9pbmZvOwogICAgICAgIHZvaWQg
KCpzcV9mdW5jKShzdHJ1Y3Qgc2lncXVldWUgKik7CiAgICAgICAgdm9pZCAqc3FfYmFja3B0cjsK
fSBzaWdxdWV1ZV90Owp9CmV4dGVybiAiQyIgewp0eXBlZGVmIGVudW0KICAgICAgICBpZHR5cGUK
ICAgICAgICAgICAgICAgIHsKICAgICAgICBQX1BJRCwKICAgICAgICBQX1BQSUQsCiAgICAgICAg
UF9QR0lELAogICAgICAgIFBfU0lELAogICAgICAgIFBfQ0lELAogICAgICAgIFBfVUlELAogICAg
ICAgIFBfR0lELAogICAgICAgIFBfQUxMLAogICAgICAgIFBfTFdQSUQsCiAgICAgICAgUF9UQVNL
SUQsCiAgICAgICAgUF9QUk9KSUQKfSBpZHR5cGVfdDsKdHlwZWRlZiBlbnVtIGlkb3AgewogICAg
ICAgIFBPUF9ESUZGLAogICAgICAgIFBPUF9BTkQsCiAgICAgICAgUE9QX09SLAogICAgICAgIFBP
UF9YT1IKfSBpZG9wX3Q7CnR5cGVkZWYgc3RydWN0IHByb2NzZXQgewogICAgICAgIGlkb3BfdCBw
X29wOwogICAgICAgIGlkdHlwZV90IHBfbGlkdHlwZTsKICAgICAgICBpZF90IHBfbGlkOwogICAg
ICAgIGlkdHlwZV90IHBfcmlkdHlwZTsKICAgICAgICBpZF90IHBfcmlkOwp9IHByb2NzZXRfdDsK
fQpleHRlcm4gIkMiIHsKZXh0ZXJuIHBpZF90IHdhaXQoaW50ICopOwpleHRlcm4gcGlkX3Qgd2Fp
dHBpZChwaWRfdCwgaW50ICosIGludCk7CmV4dGVybiBpbnQgd2FpdGlkKGlkdHlwZV90LCBpZF90
LCBzaWdpbmZvX3QgKiwgaW50KTsKZXh0ZXJuIHBpZF90IHdhaXQzKGludCAqLCBpbnQsIHN0cnVj
dCBydXNhZ2UgKik7CmV4dGVybiBwaWRfdCB3YWl0NChwaWRfdCwgaW50ICosIGludCwgc3RydWN0
IHJ1c2FnZSAqKTsKfQpleHRlcm4gIkMiIHsKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGxvbmcg
bG9uZyBxdW90OwogICAgICAgIGxvbmcgbG9uZyByZW07Cn0gbGxkaXZfdDsKZXh0ZXJuIGludCBy
YW5kX3IodW5zaWduZWQgaW50ICopOwpleHRlcm4gdm9pZCBfZXhpdGhhbmRsZSh2b2lkKTsKZXh0
ZXJuIGRvdWJsZSBkcmFuZDQ4KHZvaWQpOwpleHRlcm4gZG91YmxlIGVyYW5kNDgodW5zaWduZWQg
c2hvcnQgKik7CmV4dGVybiBsb25nIGpyYW5kNDgodW5zaWduZWQgc2hvcnQgKik7CmV4dGVybiB2
b2lkIGxjb25nNDgodW5zaWduZWQgc2hvcnQgKik7CmV4dGVybiBsb25nIGxyYW5kNDgodm9pZCk7
CmV4dGVybiBsb25nIG1yYW5kNDgodm9pZCk7CmV4dGVybiBsb25nIG5yYW5kNDgodW5zaWduZWQg
c2hvcnQgKik7CmV4dGVybiB1bnNpZ25lZCBzaG9ydCAqc2VlZDQ4KHVuc2lnbmVkIHNob3J0ICop
OwpleHRlcm4gdm9pZCBzcmFuZDQ4KGxvbmcpOwpleHRlcm4gaW50IHB1dGVudihjaGFyICopOwpl
eHRlcm4gdm9pZCBzZXRrZXkoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBta3N0ZW1wKGNoYXIg
Kik7CmV4dGVybiBpbnQgbWtzdGVtcDY0KGNoYXIgKik7CmV4dGVybiBsb25nIGE2NGwoY29uc3Qg
Y2hhciAqKTsKZXh0ZXJuIGNoYXIgKmVjdnQoZG91YmxlLCBpbnQsIGludCAqLCBpbnQgKik7CmV4
dGVybiBjaGFyICpmY3Z0KGRvdWJsZSwgaW50LCBpbnQgKiwgaW50ICopOwpleHRlcm4gY2hhciAq
Z2N2dChkb3VibGUsIGludCwgY2hhciAqKTsKZXh0ZXJuIGludCBnZXRzdWJvcHQoY2hhciAqKiwg
Y2hhciAqY29uc3QgKiwgY2hhciAqKik7CmV4dGVybiBpbnQgZ3JhbnRwdChpbnQpOwpleHRlcm4g
Y2hhciAqaW5pdHN0YXRlKHVuc2lnbmVkLCBjaGFyICosIHNpemVfdCk7CmV4dGVybiBjaGFyICps
NjRhKGxvbmcpOwpleHRlcm4gY2hhciAqbWt0ZW1wKGNoYXIgKik7CmV4dGVybiBjaGFyICpwdHNu
YW1lKGludCk7CmV4dGVybiBsb25nIHJhbmRvbSh2b2lkKTsKZXh0ZXJuIGNoYXIgKnJlYWxwYXRo
KGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnNldHN0YXRlKGNvbnN0IGNoYXIg
Kik7CmV4dGVybiB2b2lkIHNyYW5kb20odW5zaWduZWQpOwpleHRlcm4gaW50IHR0eXNsb3Qodm9p
ZCk7CmV4dGVybiBpbnQgdW5sb2NrcHQoaW50KTsKZXh0ZXJuIHZvaWQgKnZhbGxvYyhzaXplX3Qp
OwpleHRlcm4gaW50IGR1cDIoaW50LCBpbnQpOwpleHRlcm4gY2hhciAqcWVjdnQobG9uZyBkb3Vi
bGUsIGludCwgaW50ICosIGludCAqKTsKZXh0ZXJuIGNoYXIgKnFmY3Z0KGxvbmcgZG91YmxlLCBp
bnQsIGludCAqLCBpbnQgKik7CmV4dGVybiBjaGFyICpxZ2N2dChsb25nIGRvdWJsZSwgaW50LCBj
aGFyICopOwpleHRlcm4gY2hhciAqZ2V0Y3dkKGNoYXIgKiwgc2l6ZV90KTsKZXh0ZXJuIGNvbnN0
IGNoYXIgKmdldGV4ZWNuYW1lKHZvaWQpOwpleHRlcm4gY2hhciAqZ2V0bG9naW4odm9pZCk7CmV4
dGVybiBpbnQgZ2V0b3B0KGludCwgY2hhciAqY29uc3QgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJu
IGNoYXIgKm9wdGFyZzsKZXh0ZXJuIGludCBvcHRpbmQsIG9wdGVyciwgb3B0b3B0OwpleHRlcm4g
Y2hhciAqZ2V0cGFzcyhjb25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqZ2V0cGFzc3BocmFzZShj
b25zdCBjaGFyICopOwpleHRlcm4gaW50IGdldHB3KHVpZF90LCBjaGFyICopOwpleHRlcm4gaW50
IGlzYXR0eShpbnQpOwpleHRlcm4gdm9pZCAqbWVtYWxpZ24oc2l6ZV90LCBzaXplX3QpOwpleHRl
cm4gY2hhciAqdHR5bmFtZShpbnQpOwpleHRlcm4gbG9uZyBsb25nIGF0b2xsKGNvbnN0IGNoYXIg
Kik7CmV4dGVybiBsb25nIGxvbmcgbGxhYnMobG9uZyBsb25nKTsKZXh0ZXJuIGxsZGl2X3QgbGxk
aXYobG9uZyBsb25nLCBsb25nIGxvbmcpOwpleHRlcm4gY2hhciAqbGx0b3N0cihsb25nIGxvbmcs
IGNoYXIgKik7CmV4dGVybiBsb25nIGxvbmcgc3RydG9sbChjb25zdCBjaGFyICosIGNoYXIgKios
IGludCk7CmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgc3RydG91bGwoY29uc3QgY2hhciAqLCBj
aGFyICoqLCBpbnQpOwpleHRlcm4gY2hhciAqdWxsdG9zdHIodW5zaWduZWQgbG9uZyBsb25nLCBj
aGFyICopOwp9CmV4dGVybiAiQyIgewpzdHJ1Y3Qgc3RhdCB7CiAgICAgICAgZGV2X3Qgc3RfZGV2
OwogICAgICAgIGxvbmcgc3RfcGFkMVszXTsKICAgICAgICBpbm9fdCBzdF9pbm87CiAgICAgICAg
bW9kZV90IHN0X21vZGU7CiAgICAgICAgbmxpbmtfdCBzdF9ubGluazsKICAgICAgICB1aWRfdCBz
dF91aWQ7CiAgICAgICAgZ2lkX3Qgc3RfZ2lkOwogICAgICAgIGRldl90IHN0X3JkZXY7CiAgICAg
ICAgbG9uZyBzdF9wYWQyWzJdOwogICAgICAgIG9mZl90IHN0X3NpemU7CiAgICAgICAgbG9uZyBz
dF9wYWQzOwogICAgICAgIHRpbWVzdHJ1Y190IHN0X2F0aW07CiAgICAgICAgdGltZXN0cnVjX3Qg
c3RfbXRpbTsKICAgICAgICB0aW1lc3RydWNfdCBzdF9jdGltOwogICAgICAgIGJsa3NpemVfdCBz
dF9ibGtzaXplOwogICAgICAgIGJsa2NudF90IHN0X2Jsb2NrczsKICAgICAgICBjaGFyIHN0X2Zz
dHlwZVsxNl07CiAgICAgICAgbG9uZyBzdF9wYWQ0WzhdOwp9OwpzdHJ1Y3Qgc3RhdDY0IHsKICAg
ICAgICBkZXZfdCBzdF9kZXY7CiAgICAgICAgbG9uZyBzdF9wYWQxWzNdOwogICAgICAgIGlubzY0
X3Qgc3RfaW5vOwogICAgICAgIG1vZGVfdCBzdF9tb2RlOwogICAgICAgIG5saW5rX3Qgc3Rfbmxp
bms7CiAgICAgICAgdWlkX3Qgc3RfdWlkOwogICAgICAgIGdpZF90IHN0X2dpZDsKICAgICAgICBk
ZXZfdCBzdF9yZGV2OwogICAgICAgIGxvbmcgc3RfcGFkMlsyXTsKICAgICAgICBvZmY2NF90IHN0
X3NpemU7CiAgICAgICAgdGltZXN0cnVjX3Qgc3RfYXRpbTsKICAgICAgICB0aW1lc3RydWNfdCBz
dF9tdGltOwogICAgICAgIHRpbWVzdHJ1Y190IHN0X2N0aW07CiAgICAgICAgYmxrc2l6ZV90IHN0
X2Jsa3NpemU7CiAgICAgICAgYmxrY250NjRfdCBzdF9ibG9ja3M7CiAgICAgICAgY2hhciBzdF9m
c3R5cGVbMTZdOwogICAgICAgIGxvbmcgc3RfcGFkNFs4XTsKfTsKZXh0ZXJuIGludCBmY2htb2Qo
aW50LCBtb2RlX3QpOwpleHRlcm4gaW50IGNobW9kKGNvbnN0IGNoYXIgKiwgbW9kZV90KTsKZXh0
ZXJuIGludCBta2Rpcihjb25zdCBjaGFyICosIG1vZGVfdCk7CmV4dGVybiBpbnQgbWtmaWZvKGNv
bnN0IGNoYXIgKiwgbW9kZV90KTsKZXh0ZXJuIG1vZGVfdCB1bWFzayhtb2RlX3QpOwpleHRlcm4g
aW50IGZzdGF0NjQoaW50LCBzdHJ1Y3Qgc3RhdDY0ICopOwpleHRlcm4gaW50IHN0YXQ2NChjb25z
dCBjaGFyICosIHN0cnVjdCBzdGF0NjQgKik7CmV4dGVybiBpbnQgbHN0YXQ2NChjb25zdCBjaGFy
ICosIHN0cnVjdCBzdGF0NjQgKik7CmV4dGVybiAiQyIgewpleHRlcm4gaW50IGZzdGF0KGludCwg
c3RydWN0IHN0YXQgKik7CmV4dGVybiBpbnQgc3RhdChjb25zdCBjaGFyICosIHN0cnVjdCBzdGF0
ICopOwpleHRlcm4gaW50IGxzdGF0KGNvbnN0IGNoYXIgKiwgc3RydWN0IHN0YXQgKik7CmV4dGVy
biBpbnQgbWtub2QoY29uc3QgY2hhciAqLCBtb2RlX3QsIGRldl90KTsKfQp9CmV4dGVybiAiQyIg
ewp9CmV4dGVybiAiQyIgewpleHRlcm4gbG9uZyBfc3lzY29uZihpbnQpOwp0eXBlZGVmIHZvaWQg
U0lHX0ZVTkNfVFlQKGludCk7CnR5cGVkZWYgU0lHX0ZVTkNfVFlQICpTSUdfVFlQOwp9CmV4dGVy
biAiQyIgewp0eXBlZGVmIGludCBzaWdfYXRvbWljX3Q7CmV4dGVybiAiQyIgU0lHX1RZUCBzaWdu
YWwoaW50LCBTSUdfVFlQKTsKZXh0ZXJuIGludCByYWlzZShpbnQpOwp9CmV4dGVybiAiQyIgewp0
eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgaW50IF9fc2lnYml0c1s0XTsKfSBzaWdz
ZXRfdDsKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGludCBfX3NpZ2JpdHNbMl07
Cn0ga19zaWdzZXRfdDsKc3RydWN0IHNpZ2FjdGlvbiB7CiAgICAgICAgaW50IHNhX2ZsYWdzOwog
ICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHZvaWQgKCpfaGFuZGxlcikoaW50KTsKICAg
ICAgICAgICAgICAgIHZvaWQgKCpfc2lnYWN0aW9uKShpbnQsIHNpZ2luZm9fdCAqLCB2b2lkICop
OwogICAgICAgIH0gX2Z1bmNwdHI7CiAgICAgICAgc2lnc2V0X3Qgc2FfbWFzazsKICAgICAgICBp
bnQgc2FfcmVzdlsyXTsKfTsKdHlwZWRlZiBzdHJ1Y3Qgc2lnYWx0c3RhY2sgewogICAgICAgIHZv
aWQgKnNzX3NwOwogICAgICAgIHNpemVfdCBzc19zaXplOwogICAgICAgIGludCBzc19mbGFnczsK
fSBzdGFja190Owp0eXBlZGVmIHN0cnVjdCBzaWdub3RpZnlfaWQgewogICAgICAgIHBpZF90IHNu
X3BpZDsKICAgICAgICBpbnQgc25faW5kZXg7CiAgICAgICAgaW50IHNuX3BhZDsKfSBzaWdub3Rp
ZnlfaWRfdDsKc3RydWN0IHNpZ3N0YWNrIHsKICAgICAgICB2b2lkICpzc19zcDsKICAgICAgICBp
bnQgc3Nfb25zdGFjazsKfTsKZXh0ZXJuICJDIiB7CnR5cGVkZWYgaW50IGdyZWdfdDsKdHlwZWRl
ZiBncmVnX3QgZ3JlZ3NldF90WzE5XTsKc3RydWN0IHJ3aW5kb3cgewogICAgICAgIGdyZWdfdCBy
d19sb2NhbFs4XTsKICAgICAgICBncmVnX3QgcndfaW5bOF07Cn07CnR5cGVkZWYgc3RydWN0IGd3
aW5kb3dzIHsKICAgICAgICBpbnQgd2JjbnQ7CiAgICAgICAgZ3JlZ190ICpzcGJ1ZlszMV07CiAg
ICAgICAgc3RydWN0IHJ3aW5kb3cgd2J1ZlszMV07Cn0gZ3dpbmRvd3NfdDsKc3RydWN0IGZwcSB7
CiAgICAgICAgdW5zaWduZWQgaW50ICpmcHFfYWRkcjsKICAgICAgICB1bnNpZ25lZCBpbnQgZnBx
X2luc3RyOwp9OwpzdHJ1Y3QgZnEgewogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIGRv
dWJsZSB3aG9sZTsKICAgICAgICAgICAgICAgIHN0cnVjdCBmcHEgZnBxOwogICAgICAgIH0gRlF1
Owp9OwpzdHJ1Y3QgZnB1IHsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICB1aW50MzJf
dCBmcHVfcmVnc1szMl07CiAgICAgICAgICAgICAgICBkb3VibGUgZnB1X2RyZWdzWzE2XTsKICAg
ICAgICB9IGZwdV9mcjsKICAgICAgICBzdHJ1Y3QgZnEgKmZwdV9xOwogICAgICAgIHVpbnQzMl90
IGZwdV9mc3I7CiAgICAgICAgdWludDhfdCBmcHVfcWNudDsKICAgICAgICB1aW50OF90IGZwdV9x
X2VudHJ5c2l6ZTsKICAgICAgICB1aW50OF90IGZwdV9lbjsKfTsKdHlwZWRlZiBzdHJ1Y3QgZnB1
IGZwcmVnc2V0X3Q7CnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBpbnQgeHJzX2lk
OwogICAgICAgIGNhZGRyX3QgeHJzX3B0cjsKfSB4cnNfdDsKdHlwZWRlZiBzdHJ1Y3QgewogICAg
ICAgIGdyZWdzZXRfdCBncmVnczsKICAgICAgICBnd2luZG93c190ICpnd2luczsKICAgICAgICBm
cHJlZ3NldF90IGZwcmVnczsKICAgICAgICB4cnNfdCB4cnM7CiAgICAgICAgbG9uZyBmaWxsZXJb
MTldOwp9IG1jb250ZXh0X3Q7CmV4dGVybiAiQyIgewpleHRlcm4gIkMiIHsKdHlwZWRlZiBpbnQg
cHN3X3Q7Cn0KZXh0ZXJuICJDIiB7Cn0Kc3RydWN0IHJlZ3MgewogICAgICAgIGxvbmcgcl9wc3I7
CiAgICAgICAgbG9uZyByX3BjOwogICAgICAgIGxvbmcgcl9ucGM7CiAgICAgICAgbG9uZyByX3k7
CiAgICAgICAgbG9uZyByX2cxOwogICAgICAgIGxvbmcgcl9nMjsKICAgICAgICBsb25nIHJfZzM7
CiAgICAgICAgbG9uZyByX2c0OwogICAgICAgIGxvbmcgcl9nNTsKICAgICAgICBsb25nIHJfZzY7
CiAgICAgICAgbG9uZyByX2c3OwogICAgICAgIGxvbmcgcl9vMDsKICAgICAgICBsb25nIHJfbzE7
CiAgICAgICAgbG9uZyByX28yOwogICAgICAgIGxvbmcgcl9vMzsKICAgICAgICBsb25nIHJfbzQ7
CiAgICAgICAgbG9uZyByX281OwogICAgICAgIGxvbmcgcl9vNjsKICAgICAgICBsb25nIHJfbzc7
Cn07Cn0KfQpleHRlcm4gIkMiIHsKdHlwZWRlZiBzdHJ1Y3QgdWNvbnRleHQgdWNvbnRleHRfdDsK
c3RydWN0IHVjb250ZXh0IHsKICAgICAgICB1aW50X3QgdWNfZmxhZ3M7CiAgICAgICAgdWNvbnRl
eHRfdCAqdWNfbGluazsKICAgICAgICBzaWdzZXRfdCB1Y19zaWdtYXNrOwogICAgICAgIHN0YWNr
X3QgdWNfc3RhY2s7CiAgICAgICAgbWNvbnRleHRfdCB1Y19tY29udGV4dDsKICAgICAgICBsb25n
IHVjX2ZpbGxlclsyM107Cn07Cn0KfQpleHRlcm4gIkMiIHsKZXh0ZXJuIGNvbnN0IGNoYXIgKipf
c3lzX3NpZ2xpc3RwOwpleHRlcm4gY29uc3QgaW50IF9zeXNfc2lnbGlzdG47CmV4dGVybiBpbnQg
a2lsbChwaWRfdCwgaW50KTsKZXh0ZXJuIGludCBzaWdhY3Rpb24oaW50LCBjb25zdCBzdHJ1Y3Qg
c2lnYWN0aW9uICosIHN0cnVjdCBzaWdhY3Rpb24gKik7CmV4dGVybiBpbnQgc2lnYWRkc2V0KHNp
Z3NldF90ICosIGludCk7CmV4dGVybiBpbnQgc2lnZGVsc2V0KHNpZ3NldF90ICosIGludCk7CmV4
dGVybiBpbnQgc2lnZW1wdHlzZXQoc2lnc2V0X3QgKik7CmV4dGVybiBpbnQgc2lnZmlsbHNldChz
aWdzZXRfdCAqKTsKZXh0ZXJuIGludCBzaWdpc21lbWJlcihjb25zdCBzaWdzZXRfdCAqLCBpbnQp
OwpleHRlcm4gaW50IHNpZ3BlbmRpbmcoc2lnc2V0X3QgKik7CmV4dGVybiBpbnQgc2lncHJvY21h
c2soaW50LCBjb25zdCBzaWdzZXRfdCAqLCBzaWdzZXRfdCAqKTsKZXh0ZXJuIGludCBzaWdzdXNw
ZW5kKGNvbnN0IHNpZ3NldF90ICopOwpleHRlcm4gaW50IGdzaWduYWwoaW50KTsKZXh0ZXJuIGlu
dCAoKnNzaWduYWwoaW50LCBpbnQgKCopKGludCkpKShpbnQpOwpleHRlcm4gaW50IHNpZ3NlbmQo
aWR0eXBlX3QsIGlkX3QsIGludCk7CmV4dGVybiBpbnQgc2lnc2VuZHNldChjb25zdCBwcm9jc2V0
X3QgKiwgaW50KTsKZXh0ZXJuIGludCBzaWcyc3RyKGludCwgY2hhciAqKTsKZXh0ZXJuIGludCBz
dHIyc2lnKGNvbnN0IGNoYXIgKiwgaW50ICopOwpleHRlcm4gdm9pZCAoKmJzZF9zaWduYWwoaW50
LCB2b2lkICgqKShpbnQpKSkoaW50KTsKZXh0ZXJuIGludCBraWxscGcocGlkX3QsIGludCk7CmV4
dGVybiBpbnQgc2lnaW50ZXJydXB0KGludCwgaW50KTsKZXh0ZXJuIGludCBzaWdhbHRzdGFjayhj
b25zdCBzdGFja190ICosIHN0YWNrX3QgKik7CmV4dGVybiBpbnQgc2lnaG9sZChpbnQpOwpleHRl
cm4gaW50IHNpZ2lnbm9yZShpbnQpOwpleHRlcm4gaW50IHNpZ3BhdXNlKGludCk7CmV4dGVybiBp
bnQgc2lncmVsc2UoaW50KTsKZXh0ZXJuIHZvaWQgKCpzaWdzZXQoaW50LCB2b2lkICgqKShpbnQp
KSkoaW50KTsKZXh0ZXJuIGludCBzaWdzdGFjayhzdHJ1Y3Qgc2lnc3RhY2sgKiwgc3RydWN0IHNp
Z3N0YWNrICopOwpleHRlcm4gaW50IHB0aHJlYWRfa2lsbChwdGhyZWFkX3QsIGludCk7CmV4dGVy
biBpbnQgcHRocmVhZF9zaWdtYXNrKGludCwgY29uc3Qgc2lnc2V0X3QgKiwgc2lnc2V0X3QgKik7
CmV4dGVybiBpbnQgc2lnd2FpdGluZm8oY29uc3Qgc2lnc2V0X3QgKiwgc2lnaW5mb190ICopOwpl
eHRlcm4gaW50IHNpZ3RpbWVkd2FpdChjb25zdCBzaWdzZXRfdCAqLCBzaWdpbmZvX3QgKiwgY29u
c3Qgc3RydWN0IHRpbWVzcGVjICopOwpleHRlcm4gaW50IHNpZ3F1ZXVlKHBpZF90LCBpbnQsIGNv
bnN0IHVuaW9uIHNpZ3ZhbCk7CmV4dGVybiBpbnQgc2lnd2FpdChjb25zdCBzaWdzZXRfdCAqLCBp
bnQgKik7Cn0KZXh0ZXJuICJDIiB7CmV4dGVybiBpbnQgaXNhbG51bShpbnQpOwpleHRlcm4gaW50
IGlzYWxwaGEoaW50KTsKZXh0ZXJuIGludCBpc2NudHJsKGludCk7CmV4dGVybiBpbnQgaXNkaWdp
dChpbnQpOwpleHRlcm4gaW50IGlzZ3JhcGgoaW50KTsKZXh0ZXJuIGludCBpc2xvd2VyKGludCk7
CmV4dGVybiBpbnQgaXNwcmludChpbnQpOwpleHRlcm4gaW50IGlzcHVuY3QoaW50KTsKZXh0ZXJu
IGludCBpc3NwYWNlKGludCk7CmV4dGVybiBpbnQgaXN1cHBlcihpbnQpOwpleHRlcm4gaW50IGlz
eGRpZ2l0KGludCk7CmV4dGVybiBpbnQgdG9sb3dlcihpbnQpOwpleHRlcm4gaW50IHRvdXBwZXIo
aW50KTsKZXh0ZXJuIHVuc2lnbmVkIGNoYXIgX19jdHlwZVtdOwpleHRlcm4gdW5zaWduZWQgaW50
ICpfX2N0eXBlX21hc2s7CmV4dGVybiBpbnQgKl9fdHJhbnNfdXBwZXI7CmV4dGVybiBpbnQgKl9f
dHJhbnNfbG93ZXI7Cn0KZXh0ZXJuICJDIiB7CmV4dGVybiBpbnQgaXNhc2NpaShpbnQpOwpleHRl
cm4gaW50IHRvYXNjaWkoaW50KTsKZXh0ZXJuIGludCBfdG9sb3dlcihpbnQpOwpleHRlcm4gaW50
IF90b3VwcGVyKGludCk7Cn0KZXh0ZXJuICJDIiB7CmV4dGVybiBpbnQgbWVtY21wKGNvbnN0IHZv
aWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwpleHRlcm4gdm9pZCAqbWVtY3B5KHZvaWQgKiwg
Y29uc3Qgdm9pZCAqLCBzaXplX3QpOwpleHRlcm4gdm9pZCAqbWVtbW92ZSh2b2lkICosIGNvbnN0
IHZvaWQgKiwgc2l6ZV90KTsKZXh0ZXJuIHZvaWQgKm1lbXNldCh2b2lkICosIGludCwgc2l6ZV90
KTsKZXh0ZXJuIGNoYXIgKnN0cmNhdChjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQg
c3RyY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnN0cmNweShj
aGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgc3RyY29sbChjb25zdCBjaGFyICosIGNv
bnN0IGNoYXIgKik7CmV4dGVybiBzaXplX3Qgc3RyY3Nwbihjb25zdCBjaGFyICosIGNvbnN0IGNo
YXIgKik7CmV4dGVybiBjaGFyICpzdHJlcnJvcihpbnQpOwpleHRlcm4gc2l6ZV90IHN0cmxlbihj
b25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqc3RybmNhdChjaGFyICosIGNvbnN0IGNoYXIgKiwg
c2l6ZV90KTsKZXh0ZXJuIGludCBzdHJuY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBz
aXplX3QpOwpleHRlcm4gY2hhciAqc3RybmNweShjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90
KTsKZXh0ZXJuIHNpemVfdCBzdHJzcG4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRl
cm4gY2hhciAqc3RydG9rKGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIHNpemVfdCBzdHJ4
ZnJtKGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwpleHRlcm4gdm9pZCAqbWVtY2hyKGNv
bnN0IHZvaWQgKiwgaW50LCBzaXplX3QpOwpleHRlcm4gY2hhciAqc3RyY2hyKGNvbnN0IGNoYXIg
KiwgaW50KTsKZXh0ZXJuIGNoYXIgKnN0cnBicmsoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICop
OwpleHRlcm4gY2hhciAqc3RycmNocihjb25zdCBjaGFyICosIGludCk7CmV4dGVybiBjaGFyICpz
dHJzdHIoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwp9CmV4dGVybiAiQyIgewpleHRlcm4g
Y2hhciAqc3RydG9rX3IoY2hhciAqLCBjb25zdCBjaGFyICosIGNoYXIgKiopOwpleHRlcm4gdm9p
ZCAqbWVtY2NweSh2b2lkICosIGNvbnN0IHZvaWQgKiwgaW50LCBzaXplX3QpOwpleHRlcm4gY2hh
ciAqc3Ryc2lnbmFsKGludCk7CmV4dGVybiBpbnQgZmZzKGludCk7CmV4dGVybiBpbnQgc3RyY2Fz
ZWNtcChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgc3RybmNhc2VjbXAo
Y29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CmV4dGVybiBzaXplX3Qgc3RybGNw
eShjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKZXh0ZXJuIHNpemVfdCBzdHJsY2F0KGNo
YXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwpleHRlcm4gY2hhciAqc3RyZHVwKGNvbnN0IGNo
YXIgKik7Cn0KZXh0ZXJuICJDIiB7CmV4dGVybiBpbnQgYmNtcChjb25zdCB2b2lkICosIGNvbnN0
IHZvaWQgKiwgc2l6ZV90KTsKZXh0ZXJuIHZvaWQgYmNvcHkoY29uc3Qgdm9pZCAqLCB2b2lkICos
IHNpemVfdCk7CmV4dGVybiB2b2lkIGJ6ZXJvKHZvaWQgKiwgc2l6ZV90KTsKZXh0ZXJuIGNoYXIg
KmluZGV4KGNvbnN0IGNoYXIgKiwgaW50KTsKZXh0ZXJuIGNoYXIgKnJpbmRleChjb25zdCBjaGFy
ICosIGludCk7Cn0KZXh0ZXJuICJDIiB7CnR5cGVkZWYgdW5pb24gX2hfdmFsIHsKICAgICAgICB1
bnNpZ25lZCBsb25nIF9pW3NpemVvZihkb3VibGUpIC8gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpXTsK
ICAgICAgICBkb3VibGUgX2Q7Cn0gX2hfdmFsOwpleHRlcm4gY29uc3QgX2hfdmFsIF9faHVnZV92
YWw7CmV4dGVybiBkb3VibGUgYWNvcyAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBhc2luIChkb3Vi
bGUpOwpleHRlcm4gZG91YmxlIGF0YW4gKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgYXRhbjIgKGRv
dWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBjb3MgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUg
c2luIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHRhbiAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBj
b3NoIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHNpbmggKGRvdWJsZSk7CmV4dGVybiBkb3VibGUg
dGFuaCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBleHAgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUg
ZnJleHAgKGRvdWJsZSwgaW50ICopOwpleHRlcm4gZG91YmxlIGxkZXhwIChkb3VibGUsIGludCk7
CmV4dGVybiBkb3VibGUgbG9nIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGxvZzEwIChkb3VibGUp
OwpleHRlcm4gZG91YmxlIG1vZGYgKGRvdWJsZSwgZG91YmxlICopOwpleHRlcm4gZG91YmxlIHBv
dyAoZG91YmxlLCBkb3VibGUpOwpleHRlcm4gZG91YmxlIHNxcnQgKGRvdWJsZSk7CmV4dGVybiBk
b3VibGUgY2VpbCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBmYWJzIChkb3VibGUpOwpleHRlcm4g
ZG91YmxlIGZsb29yIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGZtb2QgKGRvdWJsZSwgZG91Ymxl
KTsKfQpleHRlcm4gIkMiIHsKZXh0ZXJuIGludCBzaWduZ2FtOwplbnVtIHZlcnNpb24ge2xpYm1f
aWVlZSA9IC0xLCBjX2lzc3VlXzQsIGFuc2lfMSwgc3RyaWN0X2Fuc2l9OwpleHRlcm4gY29uc3Qg
ZW51bSB2ZXJzaW9uIF9saWJfdmVyc2lvbjsKc3RydWN0IF9fbWF0aF9leGNlcHRpb24gewogICAg
ICAgIGludCB0eXBlOwogICAgICAgIGNoYXIgKm5hbWU7CiAgICAgICAgZG91YmxlIGFyZzE7CiAg
ICAgICAgZG91YmxlIGFyZzI7CiAgICAgICAgZG91YmxlIHJldHZhbDsKfTsKZXh0ZXJuIGRvdWJs
ZSBlcmYgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgZXJmYyAoZG91YmxlKTsKZXh0ZXJuIGRvdWJs
ZSBnYW1tYSAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBoeXBvdCAoZG91YmxlLCBkb3VibGUpOwpl
eHRlcm4gaW50IGlzbmFuIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGowIChkb3VibGUpOwpleHRl
cm4gZG91YmxlIGoxIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGpuIChpbnQsIGRvdWJsZSk7CmV4
dGVybiBkb3VibGUgbGdhbW1hIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHkwIChkb3VibGUpOwpl
eHRlcm4gZG91YmxlIHkxIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHluIChpbnQsIGRvdWJsZSk7
CmV4dGVybiBkb3VibGUgYWNvc2ggKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgYXNpbmggKGRvdWJs
ZSk7CmV4dGVybiBkb3VibGUgYXRhbmggKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgY2JydCAoZG91
YmxlKTsKZXh0ZXJuIGRvdWJsZSBsb2diIChkb3VibGUpOwpleHRlcm4gZG91YmxlIG5leHRhZnRl
ciAoZG91YmxlLCBkb3VibGUpOwpleHRlcm4gZG91YmxlIHJlbWFpbmRlciAoZG91YmxlLCBkb3Vi
bGUpOwpleHRlcm4gZG91YmxlIHNjYWxiIChkb3VibGUsIGRvdWJsZSk7CmV4dGVybiBkb3VibGUg
ZXhwbTEgKGRvdWJsZSk7CmV4dGVybiBpbnQgaWxvZ2IgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUg
bG9nMXAgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgcmludCAoZG91YmxlKTsKZXh0ZXJuIGludCBt
YXRoZXJyIChzdHJ1Y3QgX19tYXRoX2V4Y2VwdGlvbiAqKTsKZXh0ZXJuIGRvdWJsZSBzaWduaWZp
Y2FuZCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBjb3B5c2lnbiAoZG91YmxlLCBkb3VibGUpOwpl
eHRlcm4gZG91YmxlIHNjYWxibiAoZG91YmxlLCBpbnQpOwpleHRlcm4gZmxvYXQgbW9kZmYgKGZs
b2F0LCBmbG9hdCAqKTsKZXh0ZXJuICJDIiB7CnR5cGVkZWYgc3RydWN0IF9fRklMRSBfX0ZJTEU7
Cn0KZXh0ZXJuICJDIiB7CmVudW0gZnBfZGlyZWN0aW9uX3R5cGUgewogICAgICAgIGZwX25lYXJl
c3QgPSAwLAogICAgICAgIGZwX3RvemVybyA9IDEsCiAgICAgICAgZnBfcG9zaXRpdmUgPSAyLAog
ICAgICAgIGZwX25lZ2F0aXZlID0gMwp9OwplbnVtIGZwX3ByZWNpc2lvbl90eXBlIHsKICAgICAg
ICBmcF9leHRlbmRlZCA9IDAsCiAgICAgICAgZnBfc2luZ2xlID0gMSwKICAgICAgICBmcF9kb3Vi
bGUgPSAyLAogICAgICAgIGZwX3ByZWNpc2lvbl8zID0gMwp9OwplbnVtIGZwX2V4Y2VwdGlvbl90
eXBlIHsKICAgICAgICBmcF9pbmV4YWN0ID0gMCwKICAgICAgICBmcF9kaXZpc2lvbiA9IDEsCiAg
ICAgICAgZnBfdW5kZXJmbG93ID0gMiwKICAgICAgICBmcF9vdmVyZmxvdyA9IDMsCiAgICAgICAg
ZnBfaW52YWxpZCA9IDQKfTsKZW51bSBmcF90cmFwX2VuYWJsZV90eXBlIHsKICAgICAgICBmcF90
cmFwX2luZXhhY3QgPSAwLAogICAgICAgIGZwX3RyYXBfZGl2aXNpb24gPSAxLAogICAgICAgIGZw
X3RyYXBfdW5kZXJmbG93ID0gMiwKICAgICAgICBmcF90cmFwX292ZXJmbG93ID0gMywKICAgICAg
ICBmcF90cmFwX2ludmFsaWQgPSA0Cn07CmVudW0gZnBfY2xhc3NfdHlwZSB7CiAgICAgICAgZnBf
emVybyA9IDAsCiAgICAgICAgZnBfc3Vibm9ybWFsID0gMSwKICAgICAgICBmcF9ub3JtYWwgPSAy
LAogICAgICAgIGZwX2luZmluaXR5ID0gMywKICAgICAgICBmcF9xdWlldCA9IDQsCiAgICAgICAg
ZnBfc2lnbmFsaW5nID0gNQp9Owp9CmV4dGVybiAiQyIgewp0eXBlZGVmIF9fRklMRSBGSUxFOwp0
eXBlZGVmIGludCBzaWdmcGVfY29kZV90eXBlOwp0eXBlZGVmIHZvaWQgKCpzaWdmcGVfaGFuZGxl
cl90eXBlKSgpOwpleHRlcm4gc2lnZnBlX2hhbmRsZXJfdHlwZSBzaWdmcGUgKHNpZ2ZwZV9jb2Rl
X3R5cGUsIHNpZ2ZwZV9oYW5kbGVyX3R5cGUpOwp0eXBlZGVmIGZsb2F0IHNpbmdsZTsKdHlwZWRl
ZiB1bnNpZ25lZCBleHRlbmRlZFszXTsKdHlwZWRlZiBsb25nIGRvdWJsZSBxdWFkcnVwbGU7CnR5
cGVkZWYgdW5zaWduZWQgZnBfZXhjZXB0aW9uX2ZpZWxkX3R5cGU7CnR5cGVkZWYgY2hhciBkZWNp
bWFsX3N0cmluZ1s1MTJdOwp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgZW51bSBmcF9jbGFzc190
eXBlIGZwY2xhc3M7CiAgICAgICAgaW50IHNpZ247CiAgICAgICAgaW50IGV4cG9uZW50OwogICAg
ICAgIGRlY2ltYWxfc3RyaW5nIGRzOwogICAgICAgIGludCBtb3JlOwogICAgICAgIGludCBuZGln
aXRzOwp9IGRlY2ltYWxfcmVjb3JkOwplbnVtIGRlY2ltYWxfZm9ybSB7CiAgICAgICAgZml4ZWRf
Zm9ybSwKICAgICAgICBmbG9hdGluZ19mb3JtCn07CnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBl
bnVtIGZwX2RpcmVjdGlvbl90eXBlIHJkOwogICAgICAgIGVudW0gZGVjaW1hbF9mb3JtIGRmOwog
ICAgICAgIGludCBuZGlnaXRzOwp9IGRlY2ltYWxfbW9kZTsKZW51bSBkZWNpbWFsX3N0cmluZ19m
b3JtIHsKICAgICAgICBpbnZhbGlkX2Zvcm0sCiAgICAgICAgd2hpdGVzcGFjZV9mb3JtLAogICAg
ICAgIGZpeGVkX2ludF9mb3JtLAogICAgICAgIGZpeGVkX2ludGRvdF9mb3JtLAogICAgICAgIGZp
eGVkX2RvdGZyYWNfZm9ybSwKICAgICAgICBmaXhlZF9pbnRkb3RmcmFjX2Zvcm0sCiAgICAgICAg
ZmxvYXRpbmdfaW50X2Zvcm0sCiAgICAgICAgZmxvYXRpbmdfaW50ZG90X2Zvcm0sCiAgICAgICAg
ZmxvYXRpbmdfZG90ZnJhY19mb3JtLAogICAgICAgIGZsb2F0aW5nX2ludGRvdGZyYWNfZm9ybSwK
ICAgICAgICBpbmZfZm9ybSwKICAgICAgICBpbmZpbml0eV9mb3JtLAogICAgICAgIG5hbl9mb3Jt
LAogICAgICAgIG5hbnN0cmluZ19mb3JtCn07CmV4dGVybiB2b2lkIHNpbmdsZV90b19kZWNpbWFs
IChzaW5nbGUgKiwgZGVjaW1hbF9tb2RlICosIGRlY2ltYWxfcmVjb3JkICosIGZwX2V4Y2VwdGlv
bl9maWVsZF90eXBlICopOwpleHRlcm4gdm9pZCBkb3VibGVfdG9fZGVjaW1hbCAoZG91YmxlICos
IGRlY2ltYWxfbW9kZSAqLCBkZWNpbWFsX3JlY29yZCAqLCBmcF9leGNlcHRpb25fZmllbGRfdHlw
ZSAqKTsKZXh0ZXJuIHZvaWQgZXh0ZW5kZWRfdG9fZGVjaW1hbCAoZXh0ZW5kZWQgKiwgZGVjaW1h
bF9tb2RlICosIGRlY2ltYWxfcmVjb3JkICosIGZwX2V4Y2VwdGlvbl9maWVsZF90eXBlICopOwpl
eHRlcm4gdm9pZCBxdWFkcnVwbGVfdG9fZGVjaW1hbCAocXVhZHJ1cGxlICosIGRlY2ltYWxfbW9k
ZSAqLCBkZWNpbWFsX3JlY29yZCAqLCBmcF9leGNlcHRpb25fZmllbGRfdHlwZSAqKTsKZXh0ZXJu
IHZvaWQgZGVjaW1hbF90b19zaW5nbGUgKHNpbmdsZSAqLCBkZWNpbWFsX21vZGUgKiwgZGVjaW1h
bF9yZWNvcmQgKiwgZnBfZXhjZXB0aW9uX2ZpZWxkX3R5cGUgKik7CmV4dGVybiB2b2lkIGRlY2lt
YWxfdG9fZG91YmxlIChkb3VibGUgKiwgZGVjaW1hbF9tb2RlICosIGRlY2ltYWxfcmVjb3JkICos
IGZwX2V4Y2VwdGlvbl9maWVsZF90eXBlICopOwpleHRlcm4gdm9pZCBkZWNpbWFsX3RvX2V4dGVu
ZGVkIChleHRlbmRlZCAqLCBkZWNpbWFsX21vZGUgKiwgZGVjaW1hbF9yZWNvcmQgKiwgZnBfZXhj
ZXB0aW9uX2ZpZWxkX3R5cGUgKik7CmV4dGVybiB2b2lkIGRlY2ltYWxfdG9fcXVhZHJ1cGxlIChx
dWFkcnVwbGUgKiwgZGVjaW1hbF9tb2RlICosIGRlY2ltYWxfcmVjb3JkICosIGZwX2V4Y2VwdGlv
bl9maWVsZF90eXBlICopOwpleHRlcm4gdm9pZCBzdHJpbmdfdG9fZGVjaW1hbCAoY2hhciAqKiwg
aW50LCBpbnQsIGRlY2ltYWxfcmVjb3JkICosIGVudW0gZGVjaW1hbF9zdHJpbmdfZm9ybSAqLCBj
aGFyICoqKTsKZXh0ZXJuIHZvaWQgZnVuY190b19kZWNpbWFsIChjaGFyICoqLCBpbnQsIGludCwg
ZGVjaW1hbF9yZWNvcmQgKiwgZW51bSBkZWNpbWFsX3N0cmluZ19mb3JtICosIGNoYXIgKiosIGlu
dCAoKikodm9pZCksIGludCAqLCBpbnQgKCopKGludCkpOwpleHRlcm4gdm9pZCBmaWxlX3RvX2Rl
Y2ltYWwgKGNoYXIgKiosIGludCwgaW50LCBkZWNpbWFsX3JlY29yZCAqLCBlbnVtIGRlY2ltYWxf
c3RyaW5nX2Zvcm0gKiwgY2hhciAqKiwgRklMRSAqLCBpbnQgKik7CmV4dGVybiBjaGFyICpzZWNv
bnZlcnQgKHNpbmdsZSAqLCBpbnQsIGludCAqLCBpbnQgKiwgY2hhciAqKTsKZXh0ZXJuIGNoYXIg
KnNmY29udmVydCAoc2luZ2xlICosIGludCwgaW50ICosIGludCAqLCBjaGFyICopOwpleHRlcm4g
Y2hhciAqc2djb252ZXJ0IChzaW5nbGUgKiwgaW50LCBpbnQsIGNoYXIgKik7CmV4dGVybiBjaGFy
ICplY29udmVydCAoZG91YmxlLCBpbnQsIGludCAqLCBpbnQgKiwgY2hhciAqKTsKZXh0ZXJuIGNo
YXIgKmZjb252ZXJ0IChkb3VibGUsIGludCwgaW50ICosIGludCAqLCBjaGFyICopOwpleHRlcm4g
Y2hhciAqZ2NvbnZlcnQgKGRvdWJsZSwgaW50LCBpbnQsIGNoYXIgKik7CmV4dGVybiBjaGFyICpx
ZWNvbnZlcnQgKHF1YWRydXBsZSAqLCBpbnQsIGludCAqLCBpbnQgKiwgY2hhciAqKTsKZXh0ZXJu
IGNoYXIgKnFmY29udmVydCAocXVhZHJ1cGxlICosIGludCwgaW50ICosIGludCAqLCBjaGFyICop
OwpleHRlcm4gY2hhciAqcWdjb252ZXJ0IChxdWFkcnVwbGUgKiwgaW50LCBpbnQsIGNoYXIgKik7
CmV4dGVybiBjaGFyICplY3Z0IChkb3VibGUsIGludCwgaW50ICosIGludCAqKTsKZXh0ZXJuIGNo
YXIgKmZjdnQgKGRvdWJsZSwgaW50LCBpbnQgKiwgaW50ICopOwpleHRlcm4gY2hhciAqZ2N2dCAo
ZG91YmxlLCBpbnQsIGNoYXIgKik7CmV4dGVybiBkb3VibGUgYXRvZiAoY29uc3QgY2hhciAqKTsK
ZXh0ZXJuIGRvdWJsZSBzdHJ0b2QgKGNvbnN0IGNoYXIgKiwgY2hhciAqKik7Cn0KfQpleHRlcm4g
IkMiIHsKfQpleHRlcm4gIkMiIHsKfQpleHRlcm4gIkMiIHsKZXh0ZXJuIGxvbmcgX3N5c2NvbmYo
aW50KTsKfQpleHRlcm4gIkMiIHsKZXh0ZXJuIGludCBhY2Nlc3MoY29uc3QgY2hhciAqLCBpbnQp
OwpleHRlcm4gaW50IGFjY3QoY29uc3QgY2hhciAqKTsKZXh0ZXJuIHVuc2lnbmVkIGFsYXJtKHVu
c2lnbmVkKTsKZXh0ZXJuIGludCBicmsodm9pZCAqKTsKZXh0ZXJuIGludCBjaGRpcihjb25zdCBj
aGFyICopOwpleHRlcm4gaW50IGNob3duKGNvbnN0IGNoYXIgKiwgdWlkX3QsIGdpZF90KTsKZXh0
ZXJuIGludCBjaHJvb3QoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBjbG9zZShpbnQpOwpleHRl
cm4gc2l6ZV90IGNvbmZzdHIoaW50LCBjaGFyICosIHNpemVfdCk7CmV4dGVybiBjaGFyICpjcnlw
dChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBjaGFyICpjdGVybWlkKGNoYXIg
Kik7CmV4dGVybiBjaGFyICpjdXNlcmlkKGNoYXIgKik7CmV4dGVybiBpbnQgZHVwKGludCk7CmV4
dGVybiBpbnQgZHVwMihpbnQsIGludCk7CmV4dGVybiB2b2lkIGVuY3J5cHQoY2hhciAqLCBpbnQp
OwpleHRlcm4gaW50IGV4ZWNsKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwpleHRl
cm4gaW50IGV4ZWNsZShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKZXh0ZXJuIGlu
dCBleGVjbHAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLik7CmV4dGVybiBpbnQgZXhl
Y3YoY29uc3QgY2hhciAqLCBjaGFyICpjb25zdCAqKTsKZXh0ZXJuIGludCBleGVjdmUoY29uc3Qg
Y2hhciAqLCBjaGFyICpjb25zdCAqLCBjaGFyICpjb25zdCAqKTsKZXh0ZXJuIGludCBleGVjdnAo
Y29uc3QgY2hhciAqLCBjaGFyICpjb25zdCAqKTsKZXh0ZXJuIHZvaWQgX2V4aXQoaW50KTsKZXh0
ZXJuIGludCBmYXR0YWNoKGludCwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBmY2hkaXIoaW50
KTsKZXh0ZXJuIGludCBmY2hvd24oaW50LCB1aWRfdCwgZ2lkX3QpOwpleHRlcm4gaW50IGZjaHJv
b3QoaW50KTsKZXh0ZXJuIGludCBmZGF0YXN5bmMoaW50KTsKZXh0ZXJuIGludCBmZGV0YWNoKGNv
bnN0IGNoYXIgKik7CmV4dGVybiBwaWRfdCBmb3JrKHZvaWQpOwpleHRlcm4gcGlkX3QgZm9yazEo
dm9pZCk7CmV4dGVybiBsb25nIGZwYXRoY29uZihpbnQsIGludCk7CmV4dGVybiBpbnQgZnN5bmMo
aW50KTsKZXh0ZXJuIGludCBmdHJ1bmNhdGUoaW50LCBvZmZfdCk7CmV4dGVybiBjaGFyICpnZXRj
d2QoY2hhciAqLCBzaXplX3QpOwpleHRlcm4gaW50IGdldGR0YWJsZXNpemUodm9pZCk7CmV4dGVy
biBnaWRfdCBnZXRlZ2lkKHZvaWQpOwpleHRlcm4gdWlkX3QgZ2V0ZXVpZCh2b2lkKTsKZXh0ZXJu
IGdpZF90IGdldGdpZCh2b2lkKTsKZXh0ZXJuIGludCBnZXRncm91cHMoaW50LCBnaWRfdCAqKTsK
ZXh0ZXJuIGxvbmcgZ2V0aG9zdGlkKHZvaWQpOwpleHRlcm4gaW50IGdldGhvc3RuYW1lKGNoYXIg
Kiwgc2l6ZV90KTsKZXh0ZXJuIGNoYXIgKmdldGxvZ2luKHZvaWQpOwpleHRlcm4gaW50IGdldG9w
dChpbnQsIGNoYXIgKmNvbnN0ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBjaGFyICpvcHRhcmc7
CmV4dGVybiBpbnQgb3B0ZXJyLCBvcHRpbmQsIG9wdG9wdDsKZXh0ZXJuIGNoYXIgKmdldHBhc3Mo
Y29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBnZXRwYWdlc2l6ZSh2b2lkKTsKZXh0ZXJuIHBpZF90
IGdldHBnaWQocGlkX3QpOwpleHRlcm4gcGlkX3QgZ2V0cGlkKHZvaWQpOwpleHRlcm4gcGlkX3Qg
Z2V0cHBpZCh2b2lkKTsKZXh0ZXJuIHBpZF90IGdldHBncnAodm9pZCk7CmNoYXIgKmdldHR4dChj
b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBwaWRfdCBnZXRzaWQocGlkX3QpOwpl
eHRlcm4gdWlkX3QgZ2V0dWlkKHZvaWQpOwpleHRlcm4gY2hhciAqZ2V0d2QoY2hhciAqKTsKZXh0
ZXJuIGludCBpb2N0bChpbnQsIGludCwgLi4uKTsKZXh0ZXJuIGludCBpc2FleGVjKGNvbnN0IGNo
YXIgKiwgY2hhciAqY29uc3QgKiwgY2hhciAqY29uc3QgKik7CmV4dGVybiBpbnQgaXNhdHR5KGlu
dCk7CmV4dGVybiBpbnQgbGluayhjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBp
bnQgbGNob3duKGNvbnN0IGNoYXIgKiwgdWlkX3QsIGdpZF90KTsKZXh0ZXJuIGludCBsb2NrZihp
bnQsIGludCwgb2ZmX3QpOwpleHRlcm4gaW50IHJlYWRsaW5rKGNvbnN0IGNoYXIgKiwgY2hhciAq
LCBzaXplX3QpOwpleHRlcm4gb2ZmX3QgbHNlZWsoaW50LCBvZmZfdCwgaW50KTsKZXh0ZXJuIGlu
dCBuaWNlKGludCk7CmV4dGVybiBsb25nIHBhdGhjb25mKGNvbnN0IGNoYXIgKiwgaW50KTsKZXh0
ZXJuIGludCBwYXVzZSh2b2lkKTsKZXh0ZXJuIGludCBwaXBlKGludCAqKTsKZXh0ZXJuIG9mZnNl
dF90IGxsc2VlayhpbnQsIG9mZnNldF90LCBpbnQpOwpleHRlcm4gb2ZmX3QgdGVsbChpbnQpOwpl
eHRlcm4gaW50IG1pbmNvcmUoY2FkZHJfdCwgc2l6ZV90LCBjaGFyICopOwpleHRlcm4gc3NpemVf
dCBwcmVhZChpbnQsIHZvaWQgKiwgc2l6ZV90LCBvZmZfdCk7CmV4dGVybiB2b2lkIHByb2ZpbCh1
bnNpZ25lZCBzaG9ydCAqLCBzaXplX3QsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGludCk7CmV4
dGVybiBpbnQgcHRocmVhZF9hdGZvcmsodm9pZCAoKikgKHZvaWQpLCB2b2lkICgqKSAodm9pZCks
IHZvaWQgKCopICh2b2lkKSk7CmV4dGVybiBsb25nIHB0cmFjZShpbnQsIHBpZF90LCBsb25nLCBs
b25nKTsKZXh0ZXJuIHNzaXplX3QgcHdyaXRlKGludCwgY29uc3Qgdm9pZCAqLCBzaXplX3QsIG9m
Zl90KTsKZXh0ZXJuIHNzaXplX3QgcmVhZChpbnQsIHZvaWQgKiwgc2l6ZV90KTsKZXh0ZXJuIGlu
dCByZW5hbWUoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gaW50IHJlc29sdmVw
YXRoKGNvbnN0IGNoYXIgKiwgY2hhciAqLCBzaXplX3QpOwpleHRlcm4gaW50IHJtZGlyKGNvbnN0
IGNoYXIgKik7CmV4dGVybiB2b2lkICpzYnJrKGludHB0cl90KTsKZXh0ZXJuIGludCBzZXRnaWQo
Z2lkX3QpOwpleHRlcm4gaW50IHNldGVnaWQoZ2lkX3QpOwpleHRlcm4gaW50IHNldGdyb3Vwcyhp
bnQsIGNvbnN0IGdpZF90ICopOwpleHRlcm4gaW50IHNldHBnaWQocGlkX3QsIHBpZF90KTsKZXh0
ZXJuIHBpZF90IHNldHBncnAodm9pZCk7CmV4dGVybiBpbnQgc2V0cmVnaWQoZ2lkX3QsIGdpZF90
KTsKZXh0ZXJuIGludCBzZXRyZXVpZCh1aWRfdCwgdWlkX3QpOwpleHRlcm4gcGlkX3Qgc2V0c2lk
KHZvaWQpOwpleHRlcm4gaW50IHNldHVpZCh1aWRfdCk7CmV4dGVybiBpbnQgc2V0ZXVpZCh1aWRf
dCk7CmV4dGVybiB1bnNpZ25lZCBzbGVlcCh1bnNpZ25lZCk7CmV4dGVybiBpbnQgc3RpbWUoY29u
c3QgdGltZV90ICopOwpleHRlcm4gdm9pZCBzd2FiKGNvbnN0IHZvaWQgKiwgdm9pZCAqLCBzc2l6
ZV90KTsKZXh0ZXJuIGludCBzeW1saW5rKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0
ZXJuIHZvaWQgc3luYyh2b2lkKTsKZXh0ZXJuIGxvbmcgc3lzY29uZihpbnQpOwpleHRlcm4gcGlk
X3QgdGNnZXRwZ3JwKGludCk7CmV4dGVybiBpbnQgdGNzZXRwZ3JwKGludCwgcGlkX3QpOwpleHRl
cm4gb2ZmX3QgdGVsbChpbnQpOwpleHRlcm4gaW50IHRydW5jYXRlKGNvbnN0IGNoYXIgKiwgb2Zm
X3QpOwpleHRlcm4gY2hhciAqdHR5bmFtZShpbnQpOwpleHRlcm4gdXNlY29uZHNfdCB1YWxhcm0o
dXNlY29uZHNfdCwgdXNlY29uZHNfdCk7CmV4dGVybiBpbnQgdW5saW5rKGNvbnN0IGNoYXIgKik7
CmV4dGVybiBpbnQgdXNsZWVwKHVzZWNvbmRzX3QpOwpleHRlcm4gcGlkX3QgdmZvcmsodm9pZCk7
CmV4dGVybiB2b2lkIHZoYW5ndXAodm9pZCk7CmV4dGVybiBzc2l6ZV90IHdyaXRlKGludCwgY29u
c3Qgdm9pZCAqLCBzaXplX3QpOwpleHRlcm4gdm9pZCB5aWVsZCh2b2lkKTsKZXh0ZXJuIGludCBm
dHJ1bmNhdGU2NChpbnQsIG9mZjY0X3QpOwpleHRlcm4gb2ZmNjRfdCBsc2VlazY0KGludCwgb2Zm
NjRfdCwgaW50KTsKZXh0ZXJuIHNzaXplX3QgcHJlYWQ2NChpbnQsIHZvaWQgKiwgc2l6ZV90LCBv
ZmY2NF90KTsKZXh0ZXJuIHNzaXplX3QgcHdyaXRlNjQoaW50LCBjb25zdCB2b2lkICosIHNpemVf
dCwgb2ZmNjRfdCk7CmV4dGVybiBvZmY2NF90IHRlbGw2NChpbnQpOwpleHRlcm4gaW50IHRydW5j
YXRlNjQoY29uc3QgY2hhciAqLCBvZmY2NF90KTsKZXh0ZXJuIGludCBsb2NrZjY0KGludCwgaW50
LCBvZmY2NF90KTsKZXh0ZXJuIGludCBnZXRsb2dpbl9yKGNoYXIgKiwgaW50KTsKZXh0ZXJuIGlu
dCB0dHluYW1lX3IoaW50LCBjaGFyICosIHNpemVfdCk7Cn0KZXh0ZXJuICJDIiB7Cn0KZXh0ZXJu
ICJDIiB7CmV4dGVybiBpbnQgKl9fX2Vycm5vKCk7Cn0KZXh0ZXJuICJDIiB7CmV4dGVybiBjaGFy
ICpyZV9jb21wKGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgcmVfZXhlYyhjb25zdCBjaGFyICop
Owp9CmludCBpcmludChkb3VibGUpOwppbnQgbmludChkb3VibGUpOwpkb3VibGUgcG93KGRvdWJs
ZSwgZG91YmxlKTsKaW50IGlzX25hbihkb3VibGUgeCk7CmludCBpc19pbmYoZG91YmxlIHgpOwpp
bnQgaXNfemVybyhkb3VibGUgeCk7CmludCBpc19ub3JtYWwoZG91YmxlIHgpOwppbnQgaXNfc3Vi
bm9ybWFsKGRvdWJsZSB4KTsKZG91YmxlIG1ha2VuYW4odm9pZCk7CmRvdWJsZSBtYWtlTmFOKHZv
aWQpOwpkb3VibGUgbWFrZWluZih2b2lkKTsKZG91YmxlIG1ha2VJbmYodm9pZCk7CmludCBsZzIo
dW5zaWduZWQgaW50IHgpOwpkb3VibGUgZG1pbihkb3VibGUsIGRvdWJsZSk7CmRvdWJsZSBkbWF4
KGRvdWJsZSwgZG91YmxlKTsKZG91YmxlIGRsb2coZG91YmxlKTsKZW51bSB7CiAgRFFVT1RFPTA0
Mgp9OwogdHlwZWRlZiBzaWduZWQgY2hhciBzY2hhcjsKIHR5cGVkZWYgdW5zaWduZWQgY2hhciB1
Y2hhcjsKIHR5cGVkZWYgc2lnbmVkIGNoYXIgaW50ODsKIHR5cGVkZWYgdW5zaWduZWQgY2hhciB1
aW50ODsKIHR5cGVkZWYgc2hvcnQgaW50MTY7CiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVpbnQx
NjsKIHR5cGVkZWYgaW50IGludDMyOwogdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDMyOwogdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgdWludGZtdDsKIHR5cGVkZWYgbG9uZyBsb25nIGludDY0OwogdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWludDY0OwplbnVtIHsKICBNQVhNRVhQUj01MTIKfTsK
Y2xhc3MgaW50MTI4cyB7CnB1YmxpYzoKICB1aW50NjQgbG93ZXI7CiAgIGludDY0IHVwcGVyOwp9
OwpjbGFzcyBQcmludGY7CmNsYXNzIERTdHJpbmc7CmNsYXNzIGludDEyOCA6IHB1YmxpYyBpbnQx
MjhzIHsKcHVibGljOgogIGlubGluZSB2b2lkIHNldCh1aW50NjQgdSwgaW50NjQgbCkge3VwcGVy
ID0gdTsgbG93ZXIgPSBsO30KICBpbmxpbmUgdm9pZCB6ZXJvKHZvaWQpIHtsb3dlciA9IDA7IHVw
cGVyID0gMDt9CiAgaW5saW5lIGJvb2wgaXNfemVybyh2b2lkKSBjb25zdCB7cmV0dXJuKGxvd2Vy
PT0wTEwgJiYgdXBwZXI9PTBMTCk7fQogIGlubGluZSBib29sIG5lcShjb25zdCBpbnQxMjggJngp
IGNvbnN0CiAgICB7cmV0dXJuKGxvd2VyICE9IHgubG93ZXIgfHwgdXBwZXIgIT0geC51cHBlcik7
fQogIGlubGluZSBib29sIGVxbChjb25zdCBpbnQxMjggJngpIGNvbnN0CiAgICB7cmV0dXJuKGxv
d2VyID09IHgubG93ZXIgJiYgdXBwZXIgPT0geC51cHBlcik7fQogIHZvaWQgc2V0X3JhbmQodm9p
ZCk7CnB1YmxpYzoKICBpbnQgcG9wY291bnQodm9pZCkgY29uc3Q7CnB1YmxpYzoKICBpbnQxMjgg
cmV2ZXJzZShpbnQgbGcpIGNvbnN0Owpwcml2YXRlOgogIGludDEyOCBzbG93X3JldmVyc2UoaW50
IGxnKSBjb25zdDsKICBpbnQxMjggZmFzdF9yZXZlcnNlKGludCBsZykgY29uc3Q7CiAgc3RhdGlj
IGludCBkaXZpZGUoY29uc3QgaW50MTI4ICZ4LCBjb25zdCBpbnQxMjggJnksCiAgICBpbnQxMjgg
JmRlc3QsIGludDEyOCAmcmVtKTsKcHJpdmF0ZToKICBzdGF0aWMgdW5zaWduZWQgc2hvcnQgcmV2
ZmFzdFsxPDwxNl07CiAgc3RhdGljIGludCBoYXZlX3JldmZhc3Q7CnB1YmxpYzoKICB2b2lkIGR1
bXAodm9pZCkgY29uc3Q7CiAgdm9pZCBwcmludChQcmludGYgKmZwLCBpbnQgbmJpdHM9MTI4KSBj
b25zdDsKICBjb25zdCBjaGFyICpzcHJpbnQoRFN0cmluZyAmYnVmLCBpbnQgbmJpdHM9MTI4KSBj
b25zdDsKcHVibGljOgpwdWJsaWM6CiAgZnJpZW5kIHZvaWQgc2lnbmV4dGVuZChpbnQxMjggJmRl
c3QpOwogIGlubGluZSBpbnQxMjgodm9pZCkge2xvd2VyID0gMExMOyB1cHBlciA9IDBMTDt9CiAg
aW5saW5lIGludDEyOChpbnQgeSkge2xvd2VyID0geTsgc2lnbmV4dGVuZCgqdGhpcyk7fQogIGlu
bGluZSBpbnQxMjgodW5zaWduZWQgaW50IHkpIHtsb3dlciA9IHk7IHVwcGVyID0gMExMO30KICBp
bmxpbmUgaW50MTI4KHVpbnQ4IHkpIHtsb3dlciA9IHk7IHVwcGVyID0gMExMO30KICBpbmxpbmUg
aW50MTI4KHVpbnQxNiB5KSB7bG93ZXIgPSB5OyB1cHBlciA9IDBMTDt9CiAgaW5saW5lIGludDEy
OChpbnQ2NCB5KSB7bG93ZXIgPSB5OyBzaWduZXh0ZW5kKCp0aGlzKTt9CiAgaW5saW5lIGludDEy
OCh1aW50NjQgeSkge2xvd2VyID0geTsgdXBwZXIgPSAwTEw7fQogIGlubGluZSBpbnQxMjgoaW50
MTI4cyBzKSB7bG93ZXIgPSBzLmxvd2VyOyB1cHBlciA9IHMudXBwZXI7fQogIGludDEyOChkb3Vi
bGUgeSk7CiAgaW5saW5lIGludDEyOChpbnQ2NCB1LCB1aW50NjQgbCkgewogICAgdXBwZXIgPSB1
OwogICAgbG93ZXIgPSBsOwogIH0KICBpbmxpbmUgaW50MTI4KGNvbnN0IGludDEyOCYgeSkgewog
ICAgbG93ZXIgPSB5Lmxvd2VyOwogICAgdXBwZXIgPSB5LnVwcGVyOwogIH0KcHVibGljOgogIGlu
dDEyOCYgb3BlcmF0b3IrKyh2b2lkKTsKICBpbnQxMjgmIG9wZXJhdG9yLS0odm9pZCk7CiAgdm9p
ZCBuZWdhdGUodm9pZCk7CiAgdm9pZCBhYnModm9pZCk7CiAgdm9pZCBjb21wbGVtZW50KHZvaWQp
OwogIGludDEyOCYgb3BlcmF0b3IrPShjb25zdCBpbnQxMjgmKTsKICBpbnQxMjgmIG9wZXJhdG9y
LT0oY29uc3QgaW50MTI4Jik7CiAgaW50MTI4JiBvcGVyYXRvcio9KGNvbnN0IGludDEyOCYpOwog
IGludDEyOCYgb3BlcmF0b3IvPShjb25zdCBpbnQxMjgmKTsKICBpbnQxMjgmIG9wZXJhdG9yJT0o
Y29uc3QgaW50MTI4Jik7CiAgaW50MTI4JiBvcGVyYXRvcjw8PShjb25zdCBpbnQxMjgmKTsKICBp
bnQxMjgmIG9wZXJhdG9yPj49KGNvbnN0IGludDEyOCYpOwogIGludDEyOCYgb3BlcmF0b3ImPShj
b25zdCBpbnQxMjgmKTsKICBpbnQxMjgmIG9wZXJhdG9yfD0oY29uc3QgaW50MTI4Jik7CiAgaW50
MTI4JiBvcGVyYXRvcl49KGNvbnN0IGludDEyOCYpOwogIGludDEyOCYgb3BlcmF0b3IrPShpbnQp
OwogIGludDEyOCYgb3BlcmF0b3ItPShpbnQpOwogIGludDEyOCYgb3BlcmF0b3IqPShpbnQpOwog
IGludDEyOCYgb3BlcmF0b3IvPShpbnQpOwogIGludDEyOCYgb3BlcmF0b3IlPShpbnQpOwogIGlu
dDEyOCYgb3BlcmF0b3I8PD0oaW50KTsKICBpbnQxMjgmIG9wZXJhdG9yPj49KGludCk7CiAgaW50
MTI4JiBvcGVyYXRvciY9KGludCk7CiAgaW50MTI4JiBvcGVyYXRvcnw9KGludCk7CiAgaW50MTI4
JiBvcGVyYXRvcl49KGludCk7CiAgaW50MTI4JiBvcGVyYXRvcis9KGludDY0KTsKICBpbnQxMjgm
IG9wZXJhdG9yLT0oaW50NjQpOwogIGludDEyOCYgb3BlcmF0b3IqPShpbnQ2NCk7CiAgaW50MTI4
JiBvcGVyYXRvci89KGludDY0KTsKICBpbnQxMjgmIG9wZXJhdG9yJT0oaW50NjQpOwogIGludDEy
OCYgb3BlcmF0b3I8PD0oaW50NjQpOwogIGludDEyOCYgb3BlcmF0b3I+Pj0oaW50NjQpOwogIGlu
dDEyOCYgb3BlcmF0b3ImPShpbnQ2NCk7CiAgaW50MTI4JiBvcGVyYXRvcnw9KGludDY0KTsKICBp
bnQxMjgmIG9wZXJhdG9yXj0oaW50NjQpOwogIGZyaWVuZCBpbnQgY29tcGFyZShjb25zdCBpbnQx
MjgmLCBpbnQ2NCk7CiAgZnJpZW5kIGludCB1Y29tcGFyZShjb25zdCBpbnQxMjgmLCBpbnQ2NCk7
CiAgZnJpZW5kIHZvaWQgYWRkKGNvbnN0IGludDEyOCYgeCwgaW50NjQgeSwgaW50MTI4JiBkZXN0
KTsKICBmcmllbmQgdm9pZCBzdWIoY29uc3QgaW50MTI4JiB4LCBpbnQ2NCB5LCBpbnQxMjgmIGRl
c3QpOwogIGZyaWVuZCB2b2lkIG11bChjb25zdCBpbnQxMjgmIHgsIGludDY0IHksIGludDEyOCYg
ZGVzdCk7CiAgZnJpZW5kIHZvaWQgZGl2KGNvbnN0IGludDEyOCYgeCwgaW50NjQgeSwgaW50MTI4
JiBkZXN0KTsKICBmcmllbmQgdm9pZCBtb2QoY29uc3QgaW50MTI4JiB4LCBpbnQ2NCB5LCBpbnQx
MjgmIGRlc3QpOwogIGZyaWVuZCB2b2lkIGFuZDEyOChjb25zdCBpbnQxMjgmIHgsIGludDY0IHks
IGludDEyOCYgZGVzdCk7CiAgZnJpZW5kIHZvaWQgb3IxMjgoY29uc3QgaW50MTI4JiB4LCBpbnQ2
NCB5LCBpbnQxMjgmIGRlc3QpOwogIGZyaWVuZCB2b2lkIHhvcjEyOChjb25zdCBpbnQxMjgmIHgs
IGludDY0IHksIGludDEyOCYgZGVzdCk7CiAgZnJpZW5kIHZvaWQgbHNoaWZ0KGNvbnN0IGludDEy
OCYgeCwgaW50NjQgeSwgaW50MTI4JiBkZXN0KTsKICBmcmllbmQgdm9pZCByc2hpZnQoY29uc3Qg
aW50MTI4JiB4LCBpbnQ2NCB5LCBpbnQxMjgmIGRlc3QpOwogIGZyaWVuZCBib29sIGV2ZW4oY29u
c3QgaW50MTI4Jik7CiAgZnJpZW5kIGJvb2wgb2RkKGNvbnN0IGludDEyOCYpOwogIGZyaWVuZCBp
bnQgc2lnbihjb25zdCBpbnQxMjgmKTsKICBmcmllbmQgdm9pZCBzZXRiaXQoaW50MTI4JiB4LCB1
bnNpZ25lZCBiKTsKICBmcmllbmQgdm9pZCBjbGVhcmJpdChpbnQxMjgmIHgsIHVuc2lnbmVkIGIp
OwogIGZyaWVuZCBpbnQgdGVzdGJpdChjb25zdCBpbnQxMjgmIHgsIHVuc2lnbmVkIGIpOwogIGZy
aWVuZCB2b2lkIGFzc2lnbmJpdChpbnQxMjgmeCwgdW5zaWduZWQgYiwgaW50IHYpOwogIGZyaWVu
ZCB2b2lkIGFicyhjb25zdCBpbnQxMjgmIHgsIGludDEyOCYgZGVzdCk7CiAgZnJpZW5kIHZvaWQg
bmVnYXRlKGNvbnN0IGludDEyOCYgeCwgaW50MTI4JiBkZXN0KTsKICBmcmllbmQgdm9pZCBjb21w
bGVtZW50KGNvbnN0IGludDEyOCYgeCwgaW50MTI4JiBkZXN0KTsKICBmcmllbmQgaW50IGNvbXBh
cmUoY29uc3QgaW50MTI4JiwgY29uc3QgaW50MTI4Jik7CiAgZnJpZW5kIGludCB1Y29tcGFyZShj
b25zdCBpbnQxMjgmLCBjb25zdCBpbnQxMjgmKTsKICBmcmllbmQgdm9pZCBhZGQoY29uc3QgaW50
MTI4JiB4LCBjb25zdCBpbnQxMjgmIHksIGludDEyOCYgZGVzdCk7CiAgZnJpZW5kIHZvaWQgc3Vi
KGNvbnN0IGludDEyOCYgeCwgY29uc3QgaW50MTI4JiB5LCBpbnQxMjgmIGRlc3QpOwogIGZyaWVu
ZCB2b2lkIG11bChjb25zdCBpbnQxMjgmIHgsIGNvbnN0IGludDEyOCYgeSwgaW50MTI4JiBkZXN0
KTsKICBmcmllbmQgdm9pZCBkaXYoY29uc3QgaW50MTI4JiB4LCBjb25zdCBpbnQxMjgmIHksIGlu
dDEyOCYgZGVzdCk7CiAgZnJpZW5kIHZvaWQgbW9kKGNvbnN0IGludDEyOCYgeCwgY29uc3QgaW50
MTI4JiB5LCBpbnQxMjgmIGRlc3QpOwogIGZyaWVuZCB2b2lkIGFuZDEyOChjb25zdCBpbnQxMjgm
IHgsIGNvbnN0IGludDEyOCYgeSwgaW50MTI4JiBkZXN0KTsKICBmcmllbmQgdm9pZCBvcjEyOChj
b25zdCBpbnQxMjgmIHgsIGNvbnN0IGludDEyOCYgeSwgaW50MTI4JiBkZXN0KTsKICBmcmllbmQg
dm9pZCB4b3IxMjgoY29uc3QgaW50MTI4JiB4LCBjb25zdCBpbnQxMjgmIHksIGludDEyOCYgZGVz
dCk7CiAgZnJpZW5kIHZvaWQgbHNoaWZ0KGNvbnN0IGludDEyOCYgeCwgY29uc3QgaW50MTI4JiB5
LCBpbnQxMjgmIGRlc3QpOwogIGZyaWVuZCB2b2lkIHJzaGlmdChjb25zdCBpbnQxMjgmIHgsIGNv
bnN0IGludDEyOCYgeSwgaW50MTI4JiBkZXN0KTsKICBmcmllbmQgaW50IGNvbXBhcmUoY29uc3Qg
aW50MTI4JiwgaW50KTsKICBmcmllbmQgaW50IHVjb21wYXJlKGNvbnN0IGludDEyOCYsIGludCk7
CiAgZnJpZW5kIHZvaWQgYWRkKGNvbnN0IGludDEyOCYgeCwgaW50IHksIGludDEyOCYgZGVzdCk7
CiAgZnJpZW5kIHZvaWQgc3ViKGNvbnN0IGludDEyOCYgeCwgaW50IHksIGludDEyOCYgZGVzdCk7
CiAgZnJpZW5kIHZvaWQgbXVsKGNvbnN0IGludDEyOCYgeCwgaW50IHksIGludDEyOCYgZGVzdCk7
CiAgZnJpZW5kIHZvaWQgZGl2KGNvbnN0IGludDEyOCYgeCwgaW50IHksIGludDEyOCYgZGVzdCk7
CiAgZnJpZW5kIHZvaWQgbW9kKGNvbnN0IGludDEyOCYgeCwgaW50IHksIGludDEyOCYgZGVzdCk7
CiAgZnJpZW5kIHZvaWQgYW5kMTI4KGNvbnN0IGludDEyOCYgeCwgaW50IHksIGludDEyOCYgZGVz
dCk7CiAgZnJpZW5kIHZvaWQgb3IxMjgoY29uc3QgaW50MTI4JiB4LCBpbnQgeSwgaW50MTI4JiBk
ZXN0KTsKICBmcmllbmQgdm9pZCB4b3IxMjgoY29uc3QgaW50MTI4JiB4LCBpbnQgeSwgaW50MTI4
JiBkZXN0KTsKICBmcmllbmQgdm9pZCBsc2hpZnQoY29uc3QgaW50MTI4JiB4LCBpbnQgeSwgaW50
MTI4JiBkZXN0KTsKICBmcmllbmQgdm9pZCByc2hpZnQoY29uc3QgaW50MTI4JiB4LCBpbnQgeSwg
aW50MTI4JiBkZXN0KTsKICBmcmllbmQgaW50IGNvbXBhcmUoaW50LCBjb25zdCBpbnQxMjgmKTsK
ICBmcmllbmQgaW50IHVjb21wYXJlKGludCwgY29uc3QgaW50MTI4Jik7CiAgZnJpZW5kIHZvaWQg
YWRkKGludCB4LCBjb25zdCBpbnQxMjgmIHksIGludDEyOCYgZGVzdCk7CiAgZnJpZW5kIHZvaWQg
c3ViKGludCB4LCBjb25zdCBpbnQxMjgmIHksIGludDEyOCYgZGVzdCk7CiAgZnJpZW5kIHZvaWQg
bXVsKGludCB4LCBjb25zdCBpbnQxMjgmIHksIGludDEyOCYgZGVzdCk7CiAgZnJpZW5kIHZvaWQg
YW5kMTI4KGludCB4LCBjb25zdCBpbnQxMjgmIHksIGludDEyOCYgZGVzdCk7CiAgZnJpZW5kIHZv
aWQgb3IxMjgoaW50IHgsIGNvbnN0IGludDEyOCYgeSwgaW50MTI4JiBkZXN0KTsKICBmcmllbmQg
dm9pZCB4b3IxMjgoaW50IHgsIGNvbnN0IGludDEyOCYgeSwgaW50MTI4JiBkZXN0KTsKICBpbmxp
bmUgYm9vbCBmaXRzX2luX2xvbmcoKSBjb25zdCB7CiAgICBpZiAoKHVwcGVyID09IDBMTCkgJiYg
KChpbnQobG93ZXIgPj4gMzIpKT09MCkpIHsKICAgICAgcmV0dXJuKHRydWUpOwogICAgfQogICAg
aWYgKCh1cHBlciA9PSAtMUxMKSAmJiAoKGludChsb3dlciA+PiAzMikpPT1pbnQoMHhmZmZmZmZm
ZikpKSB7CiAgICAgIHJldHVybih0cnVlKTsKICAgIH0KICAgIHJldHVybihmYWxzZSk7CiAgfQog
IGlubGluZSBib29sIGZpdHNfaW5fZG91YmxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogIG9w
ZXJhdG9yIGludCh2b2lkKSBjb25zdCB7cmV0dXJuKGludChsb3dlcikpO30KICBvcGVyYXRvciB1
bnNpZ25lZCh2b2lkKSBjb25zdCB7cmV0dXJuKHVuc2lnbmVkKGxvd2VyKSk7fQogIG9wZXJhdG9y
IHVpbnQ4KHZvaWQpIGNvbnN0IHtyZXR1cm4odWludDgobG93ZXIpKTt9CiAgb3BlcmF0b3IgdWlu
dDE2KHZvaWQpIGNvbnN0IHtyZXR1cm4odWludDE2KGxvd2VyKSk7fQogIG9wZXJhdG9yIGludDY0
KHZvaWQpIGNvbnN0IHtyZXR1cm4oIGludDY0KGxvd2VyKSk7fQogIG9wZXJhdG9yIHVpbnQ2NCh2
b2lkKSBjb25zdCB7cmV0dXJuKHVpbnQ2NChsb3dlcikpO30KICBvcGVyYXRvciBkb3VibGUodm9p
ZCkgY29uc3Qge3JldHVybiBkb3VibGUoaW50NjQobG93ZXIpKSA7fQogIGZyaWVuZCBjb25zdCBj
aGFyICppbnQxMjh0b2EoY29uc3QgaW50MTI4JiB4LCBpbnQgYmFzZT0xMCwgaW50IHdpZHRoPTAp
OwogIGZyaWVuZCBpbnQxMjggVUlfYXRvaW50MTI4KGNvbnN0IGNoYXIgKnMpOwogIGZyaWVuZCBp
bnQxMjggc3RydG9pbnQxMjgoY29uc3QgY2hhciAqcywgY2hhciAqKmVuZCwgaW50IGJhc2UpOwp9
Owpib29sIG9wZXJhdG9yPT0oY29uc3QgaW50MTI4JiwgY29uc3QgaW50MTI4Jik7CmJvb2wgb3Bl
cmF0b3I9PShjb25zdCBpbnQxMjgmLCBpbnQpOwpib29sIG9wZXJhdG9yIT0oY29uc3QgaW50MTI4
JiwgY29uc3QgaW50MTI4Jik7CmJvb2wgb3BlcmF0b3IhPShjb25zdCBpbnQxMjgmLCBpbnQpOwpi
b29sIG9wZXJhdG9yPChjb25zdCBpbnQxMjgmLCBjb25zdCBpbnQxMjgmKTsKYm9vbCBvcGVyYXRv
cjwoY29uc3QgaW50MTI4JiwgaW50KTsKYm9vbCBvcGVyYXRvcjw9KGNvbnN0IGludDEyOCYsIGNv
bnN0IGludDEyOCYpOwpib29sIG9wZXJhdG9yPD0oY29uc3QgaW50MTI4JiwgaW50KTsKYm9vbCBv
cGVyYXRvcj4oY29uc3QgaW50MTI4JiwgY29uc3QgaW50MTI4Jik7CmJvb2wgb3BlcmF0b3I+KGNv
bnN0IGludDEyOCYsIGludCk7CmJvb2wgb3BlcmF0b3I+PShjb25zdCBpbnQxMjgmLCBjb25zdCBp
bnQxMjgmKTsKYm9vbCBvcGVyYXRvcj49KGNvbnN0IGludDEyOCYsIGludCk7CmludDEyOCBvcGVy
YXRvcisoY29uc3QgaW50MTI4Jik7CmludDEyOCBvcGVyYXRvci0oY29uc3QgaW50MTI4Jik7Cmlu
dDEyOCBvcGVyYXRvcn4oY29uc3QgaW50MTI4Jik7CmludDEyOCBvcGVyYXRvcisoY29uc3QgaW50
MTI4JiwgY29uc3QgaW50MTI4Jik7CmludDEyOCBvcGVyYXRvcisoY29uc3QgaW50MTI4JiwgaW50
KTsKaW50MTI4IG9wZXJhdG9yKyhpbnQsIGNvbnN0IGludDEyOCYpOwppbnQxMjggb3BlcmF0b3It
KGNvbnN0IGludDEyOCYsIGNvbnN0IGludDEyOCYpOwppbnQxMjggb3BlcmF0b3ItKGNvbnN0IGlu
dDEyOCYsIGludCk7CmludDEyOCBvcGVyYXRvci0oaW50LCBjb25zdCBpbnQxMjgmKTsKaW50MTI4
IG9wZXJhdG9yKihjb25zdCBpbnQxMjgmLCBjb25zdCBpbnQxMjgmKTsKaW50MTI4IG9wZXJhdG9y
Kihjb25zdCBpbnQxMjgmLCBpbnQpOwppbnQxMjggb3BlcmF0b3IqKGludCwgY29uc3QgaW50MTI4
Jik7CmludDEyOCBvcGVyYXRvci8oY29uc3QgaW50MTI4JiwgY29uc3QgaW50MTI4Jik7CmludDEy
OCBvcGVyYXRvci8oY29uc3QgaW50MTI4JiwgaW50KTsKaW50MTI4IG9wZXJhdG9yJShjb25zdCBp
bnQxMjgmLCBjb25zdCBpbnQxMjgmKTsKaW50MTI4IG9wZXJhdG9yJShjb25zdCBpbnQxMjgmLCBp
bnQpOwppbnQxMjggb3BlcmF0b3I8PChjb25zdCBpbnQxMjgmLCBjb25zdCBpbnQxMjgmKTsKaW50
MTI4IG9wZXJhdG9yPDwoY29uc3QgaW50MTI4JiwgaW50KTsKaW50MTI4IG9wZXJhdG9yPj4oY29u
c3QgaW50MTI4JiwgY29uc3QgaW50MTI4Jik7CmludDEyOCBvcGVyYXRvcj4+KGNvbnN0IGludDEy
OCYsIGludCk7CmludDEyOCBvcGVyYXRvciYoY29uc3QgaW50MTI4JiwgY29uc3QgaW50MTI4Jik7
CmludDEyOCBvcGVyYXRvciYoY29uc3QgaW50MTI4JiwgaW50KTsKaW50MTI4IG9wZXJhdG9yJihp
bnQsIGNvbnN0IGludDEyOCYpOwppbnQxMjggb3BlcmF0b3J8KGNvbnN0IGludDEyOCYsIGNvbnN0
IGludDEyOCYpOwppbnQxMjggb3BlcmF0b3J8KGNvbnN0IGludDEyOCYsIGludCk7CmludDEyOCBv
cGVyYXRvcnwoaW50LCBjb25zdCBpbnQxMjgmKTsKaW50MTI4IG9wZXJhdG9yXihjb25zdCBpbnQx
MjgmLCBjb25zdCBpbnQxMjgmKTsKaW50MTI4IG9wZXJhdG9yXihjb25zdCBpbnQxMjgmLCBpbnQp
OwppbnQxMjggb3BlcmF0b3JeKGludCwgY29uc3QgaW50MTI4Jik7CmludDEyOCBhYnMoY29uc3Qg
aW50MTI4Jik7CmludDEyOCBzcXIoY29uc3QgaW50MTI4Jik7CmJvb2wgb3BlcmF0b3I9PShjb25z
dCBpbnQxMjgmLCBpbnQ2NCk7CmJvb2wgb3BlcmF0b3IhPShjb25zdCBpbnQxMjgmLCBpbnQ2NCk7
CmJvb2wgb3BlcmF0b3I8KGNvbnN0IGludDEyOCYsIGludDY0KTsKYm9vbCBvcGVyYXRvcjw9KGNv
bnN0IGludDEyOCYsIGludDY0KTsKYm9vbCBvcGVyYXRvcj4oY29uc3QgaW50MTI4JiwgaW50NjQp
Owpib29sIG9wZXJhdG9yPj0oY29uc3QgaW50MTI4JiwgaW50NjQpOwppbnQxMjggb3BlcmF0b3Ir
KGNvbnN0IGludDEyOCYsIGludDY0KTsKaW50MTI4IG9wZXJhdG9yKyhpbnQ2NCwgY29uc3QgaW50
MTI4Jik7CmludDEyOCBvcGVyYXRvci0oY29uc3QgaW50MTI4JiwgaW50NjQpOwppbnQxMjggb3Bl
cmF0b3ItKGludDY0LCBjb25zdCBpbnQxMjgmKTsKaW50MTI4IG9wZXJhdG9yKihjb25zdCBpbnQx
MjgmLCBpbnQ2NCk7CmludDEyOCBvcGVyYXRvciooaW50NjQsIGNvbnN0IGludDEyOCYpOwppbnQx
Mjggb3BlcmF0b3IvKGNvbnN0IGludDEyOCYsIGludDY0KTsKaW50MTI4IG9wZXJhdG9yJShjb25z
dCBpbnQxMjgmLCBpbnQ2NCk7CmludDEyOCBvcGVyYXRvcjw8KGNvbnN0IGludDEyOCYsIGludDY0
KTsKaW50MTI4IG9wZXJhdG9yPj4oY29uc3QgaW50MTI4JiwgaW50NjQpOwppbnQxMjggb3BlcmF0
b3ImKGNvbnN0IGludDEyOCYsIGludDY0KTsKaW50MTI4IG9wZXJhdG9yJihpbnQ2NCwgY29uc3Qg
aW50MTI4Jik7CmludDEyOCBvcGVyYXRvcnwoY29uc3QgaW50MTI4JiwgaW50NjQpOwppbnQxMjgg
b3BlcmF0b3J8KGludDY0LCBjb25zdCBpbnQxMjgmKTsKaW50MTI4IG9wZXJhdG9yXihjb25zdCBp
bnQxMjgmLCBpbnQ2NCk7CmludDEyOCBvcGVyYXRvcl4oaW50NjQsIGNvbnN0IGludDEyOCYpOwpz
dHJ1Y3Qgc2ltcGxlX2ludDEyOCB7CiAgdWludDY0IGxvd2VyOwogIHVpbnQ2NCB1cHBlcjsKfTsK
dW5pb24gb3ZlcmxheWludDEyOCB7CiAgc2ltcGxlX2ludDEyOCB2YWx1ZTsKICB1aW50MTYgc2hv
cnRzWzEyOC8xNl07Cn07CmNsYXNzIEVudW1JbmZvIHsKcHVibGljOgogIGludCBpbmRleDsKICBj
b25zdCBjaGFyICpzaG9ydF9uYW1lOwogIGNvbnN0IGNoYXIgKmxvbmdfbmFtZTsKfTsKY2xhc3Mg
TmV3VmFsdWU7CmNsYXNzIFZhbHVlOwpjbGFzcyBUY2xfSW50ZXJwOwpjbGFzcyBQcmludGY7CmNs
YXNzIEVudW1JbmZvX0Jsb2NrIHsKZnJpZW5kIGNsYXNzIEVudW1JdGVyYXRvcjsKcHVibGljOgog
IGVudW0gewogICAgTUFYRU5VTT0yNTYKICB9OwogIHN0YXRpYyBpbnQgbmVudW1zOwogIHN0YXRp
YyBjb25zdCBFbnVtSW5mb19CbG9jayBNZXRhRW51bUluZm87CiAgc3RhdGljIEVudW1JbmZvIE1l
dGFFbnVtSW5mb19EYXRhW01BWEVOVU1dOwpwcml2YXRlOgogIGNvbnN0IEVudW1JbmZvICpkYXRh
OwogIHZvaWQgKm1hcDsKcHVibGljOgogIGNvbnN0IGNoYXIgKm5hbWU7CiAgaW50IG5kYXRhOwog
IGJvb2wgZG9fd2Fybl9vbl9iYWRfbWFwOwpwdWJsaWM6CiAgRW51bUluZm9fQmxvY2soY29uc3Qg
RW51bUluZm8gKl9kYXRhLCBjb25zdCBjaGFyICpfbmFtZSwKICAgIGJvb2wgbXVzdF9iZV9vbmVf
dG9fb25lPWZhbHNlLCBib29sIGRvX3dhcm5fb25fYmFkX21hcD10cnVlKTsKICB2aXJ0dWFsIH5F
bnVtSW5mb19CbG9jaygpOwpwcml2YXRlOgogIGludCBmaW5kX3dvcmtlcihjb25zdCBjaGFyICpz
dHIsIGJvb2wgZG9fc2hvcnQsCiAgICBib29sIGNhc2VjbXAsIGJvb2wgcHJlZml4LCBib29sIGRv
X2ZpbmQpIGNvbnN0OwpwdWJsaWM6CiAgY29uc3QgRW51bUluZm8gJm9wZXJhdG9yW10oaW50IHgp
IGNvbnN0OwogIGNvbnN0IEVudW1JbmZvICZtZW1iZXIoaW50IGlvdGEpIGNvbnN0OwogIGNvbnN0
IEVudW1JbmZvICppbmRleChpbnQgeCwgYm9vbCBkb193YXJuKSBjb25zdDsKICBpbnQgcXVlcnko
Y29uc3QgY2hhciAqdmFyX25hbWUsIGludCBvbGRfdmFsdWUpIGNvbnN0OwpwdWJsaWM6CiAgY29u
c3QgY2hhciAqZm9ybWF0Yml0c2V0KERTdHJpbmcgJmJ1ZiwgdW5zaWduZWQgaW50IHNldCkgY29u
c3Q7CiAgY29uc3QgY2hhciAqZm9ybWF0Yml0c2V0KERTdHJpbmcgJmJ1ZiwgdW5zaWduZWQgaW50
IHNldCwgaW50IGxiKSBjb25zdDsKcHVibGljOgogIGludCBmaW5kKGNvbnN0IGNoYXIgKnN0ciwK
ICAgIGJvb2wgY2FzZWNtcD1mYWxzZSwgYm9vbCBwcmVmaXg9ZmFsc2UsIGJvb2wgZG9fd2Fybj10
cnVlKSBjb25zdDsKICBpbnQgZmluZF9zaG9ydChjb25zdCBjaGFyICpzdHIsCiAgICBib29sIGNh
c2VjbXA9ZmFsc2UsIGJvb2wgcHJlZml4PWZhbHNlLCBib29sIGRvX3dhcm49dHJ1ZSkgY29uc3Q7
CiAgaW50IGZpbmRfbG9uZyhjb25zdCBjaGFyICpzdHIsCiAgICBib29sIGNhc2VjbXA9ZmFsc2Us
IGJvb2wgcHJlZml4PWZhbHNlLCBib29sIGRvX3dhcm49dHJ1ZSkgY29uc3Q7CiAgaW50IGZpbmQo
Y29uc3QgTmV3VmFsdWUgJnYpIGNvbnN0OwogIGludCBmaW5kKGNvbnN0IFZhbHVlICZ2KSBjb25z
dDsKcHVibGljOgogIHZvaWQgZHVtcCh2b2lkKSBjb25zdDsKICB2b2lkIGxpbmtfdGNsKFRjbF9J
bnRlcnAgKmludGVycCwgY29uc3QgY2hhciAqdmFyX3ByZWZpeCkgY29uc3Q7CnB1YmxpYzoKICB2
b2lkIGV4cGxhaW4oUHJpbnRmICpmcCwKICAgIGNvbnN0IGNoYXIgKmxlYWRlcj0wLCBib29sIGJy
aWVmPWZhbHNlLCBib29sIGRvX2FsaWFzZXM9ZmFsc2UpIGNvbnN0OwogIHZvaWQgZXhwbGFpbl90
Y2woVGNsX0ludGVycCAqaW50ZXJwLAogICAgY29uc3QgY2hhciAqbGVhZGVyPTAsIGJvb2wgYnJp
ZWY9ZmFsc2UsIGJvb2wgZG9fYWxpYXNlcz1mYWxzZSkgY29uc3Q7CiAgdm9pZCBwcmludChQcmlu
dGYgKmZwLCBpbnQgcHJpbnRfbGV2ZWw9MTApIGNvbnN0Owp9OwpjbGFzcyBFbnVtSXRlcmF0b3Ig
ewpwcml2YXRlOgogIGNvbnN0IEVudW1JbmZvX0Jsb2NrICZpbmZvOwogIGludCBhcmdjOwogIGNv
bnN0IGNoYXIgKiphcmd2Owpwcml2YXRlOgogIGJvb2wgZG9hbGw7CiAgaW50IGk7CnB1YmxpYzoK
ICBFbnVtSXRlcmF0b3IoY29uc3QgRW51bUluZm9fQmxvY2sgJl9pbmZvLCBpbnQgX2FyZ2MsIGNv
bnN0IGNoYXIgKipfYXJndiwKICAgIGJvb2wgX2RvYWxsPXRydWUpOwogIGludCBuZXh0KGludCAm
YmFjaywgUHJpbnRmICpmcD0wLCBib29sIGNhc2VjbXA9ZmFsc2UsIGJvb2wgY29tcGxhaW49ZmFs
c2UpOwogIGludCBuZXh0KGludCAmYmFjayk7Cn07CnR5cGVkZWYgbG9uZyBsb25nIGludCBWYWx1
ZUludFR5cGU7CnR5cGVkZWYgbG9uZyBsb25nIHVuc2lnbmVkIGludCBWYWx1ZVVuc1R5cGU7CnR5
cGVkZWYgZG91YmxlIFZhbHVlRmxvYXRUeXBlOwpjbGFzcyBWYWx1ZTsKZW51bSBWYWx1ZVRhZyB7
CiAgVFlQRV9OT05FLAogIFRZUEVfSU5ULAogIFRZUEVfSEVYSU5ULAogIFRZUEVfQ0hBUiwKICBU
WVBFX0ZMT0FULAogIFRZUEVfUkVYUFIsCiAgVFlQRV9TVFJJTkcsCiAgVFlQRV9SRUxBVElPTiwK
ICBUWVBFX1VOQ0VSVEFJTgp9OwpleHRlcm4gY29uc3QgRW51bUluZm9fQmxvY2sgVmFsdWVUYWdJ
bmZvOwplbnVtIFZhbHVlT3BlcmF0b3IgewogIE9QX0ZJUlNULAogIE9QX0lERU5ULAogIE9QX0lO
VEVHRVIsCiAgT1BfSEVYSU5URUdFUiwKICBPUF9GTE9BVCwKICBPUF9TVFJJTkcsCiAgT1BfVU5D
RVJUQUlOLAogIE9QX1NUUklOR19VTkFSWSwKICBPUF9TVFJJTkdfQklOQVJZLAogIE9QX0lPVEEs
CiAgT1BfSUZUUlVFLAogIE9QX0lGRkFMU0UsCiAgT1BfU1RSU1RSLAogIE9QX1NUUkNNUCwKICBP
UF9TVFJDQVNFQ01QLAogIE9QX1NUUkxFTiwKICBPUF9TVFJWQUxDTVAsCiAgT1BfU1RSVkFMQ0FT
RUNNUCwKICBPUF9TVFJQQ01QLAogIE9QX1NUUlBDQVNFQ01QLAogIE9QX1JFQ01QLAogIE9QX0FU
T0ksCiAgT1BfQVRPRiwKICBPUF9NQVgsCiAgT1BfTUlOLAogIE9QX0lTSU5GLAogIE9QX0lTTkFO
LAogIE9QX1VNQVgsCiAgT1BfVU1JTiwKICBPUF9VVFlQLAogIE9QX1VCVUlMRCwKICBPUF9VRkFV
TFQsCiAgT1BfQUJTLAogIE9QX0NFSUwsCiAgT1BfRkxPT1IsCiAgT1BfUk9VTkQsCiAgT1BfRVZB
TCwKICBPUF9QT1csCiAgT1BfRVhQLAogIE9QX0xOLAogIE9QX1NJTiwKICBPUF9DT1MsCiAgT1Bf
QVRBTjIsCiAgT1BfQ09QWVNJR04sCiAgT1BfUExVUywKICBPUF9NSU5VUywKICBPUF9NVUwsCiAg
T1BfRElWLAogIE9QX01PRCwKICBPUF9BTkQsCiAgT1BfT1IsCiAgT1BfWE9SLAogIE9QX0NPTkNB
VCwKICBPUF9DT01NQSwKICBPUF9TQ09SLAogIE9QX1NDQU5ELAogIE9QX0xFRlRTSElGVCwKICBP
UF9SSUdIVFNISUZULAogIE9QX0xFLAogIE9QX0xULAogIE9QX0VRLAogIE9QX05FLAogIE9QX0dF
LAogIE9QX0dULAogIE9QX05PVCwKICBPUF9QQVJFTiwKICBPUF9DT01QTEVNRU5ULAogIE9QX05F
R0FURSwKICBPUF9RVUVTVCwKICBPUF9DT0xPTiwKICBPUF9HRVRTLAogIE9QX1BFUklPRCwKICBP
UF9ET1RET1QsCiAgT1BfU0lOR0xFX1FVT1RFLAogIE9QX0JBQ0tfU0xBU0gsCiAgT1BfQVNTSUdO
LAogIE9QX0FTR1BMVVMsCiAgT1BfQVNHTUlOVVMsCiAgT1BfQVNHTVVMLAogIE9QX0FTR0RJViwK
ICBPUF9BU0dNT0QsCiAgT1BfQVNHQU5ELAogIE9QX0FTR09SLAogIE9QX0FTR1hPUiwKICBPUF9V
UFRPLAogIE9QX0RPV05UTywKICBPUF9SQVJST1csCiAgT1BfQkFDS19RVU9URSwKICBPUF9SQURJ
WCwKICBPUF9TUEFDRSwKICBPUF9JTkRFWCwKICBPUF9ET0xMQVIsCiAgT1BfU0NSQVRDSCwKICBP
UF9ORVdMSU5FLAogIE9QX0xBU1QKfTsKZW51bSBTb3J0Q29udHJvbENvZGUgewogIFNvcnRfTWlu
LAogIFNvcnRfVHlwLAogIFNvcnRfTWF4LAogIFNvcnRfU3ByZWFkLAogIFNvcnRfRmF1bHQsCiAg
U29ydF9SZXZNaW4sCiAgU29ydF9SZXZUeXAsCiAgU29ydF9SZXZNYXgsCiAgU29ydF9SZXZTcHJl
YWQsCiAgU29ydF9SZXZGYXVsdCwKICBTb3J0X0xhc3QKfTsKZXh0ZXJuIGNvbnN0IEVudW1JbmZv
X0Jsb2NrIFNvcnRDb250cm9sQ29kZUluZm87CmNsYXNzIFVuY2VydGFpblZhbHVlIHsKcHJpdmF0
ZToKICBmbG9hdCB2bWluOwogIGZsb2F0IHZ0eXA7CiAgZmxvYXQgdm1heDsKcHVibGljOgogIG9w
ZXJhdG9yIGludCh2b2lkKSBjb25zdDsKICBvcGVyYXRvciBkb3VibGUodm9pZCkgY29uc3Q7CiAg
b3BlcmF0b3IgY29uc3QgY2hhciAqKHZvaWQpIGNvbnN0OwogIHZvaWQgcHJpbnQoUHJpbnRmICpm
cCwgaW50IHByaW50X2xldmVsPTEwKSBjb25zdDsKICBjb25zdCBjaGFyICpwcmludChEU3RyaW5n
ICZidWYpIGNvbnN0Owpwcml2YXRlOgogIFVuY2VydGFpblZhbHVlIHVuYXJ5ZG91YmxlKGRvdWJs
ZSAoKmZ1bmMpKGRvdWJsZSkpIGNvbnN0OwpwdWJsaWM6CiAgdm9pZCBzZXR0b3Aodm9pZCk7CiAg
dm9pZCBzZXRib3R0b20odm9pZCk7CiAgdm9pZCBzZXRudWxsKHZvaWQpOwpwdWJsaWM6CiAgdm9p
ZCBpbmNyKGNvbnN0IFVuY2VydGFpblZhbHVlICZyKTsKICB2b2lkIGRlY3IoY29uc3QgVW5jZXJ0
YWluVmFsdWUgJnIpOwpwdWJsaWM6CiAgVW5jZXJ0YWluVmFsdWUgYWRkKGNvbnN0IFVuY2VydGFp
blZhbHVlICZyKSBjb25zdDsKICBVbmNlcnRhaW5WYWx1ZSBzdWIoY29uc3QgVW5jZXJ0YWluVmFs
dWUgJnIpIGNvbnN0OwogIFVuY2VydGFpblZhbHVlIG11bChjb25zdCBVbmNlcnRhaW5WYWx1ZSAm
cikgY29uc3Q7CiAgVW5jZXJ0YWluVmFsdWUgZGl2KGNvbnN0IFVuY2VydGFpblZhbHVlICZyKSBj
b25zdDsKICBVbmNlcnRhaW5WYWx1ZSBtYXgoY29uc3QgVW5jZXJ0YWluVmFsdWUgJnIpIGNvbnN0
OwogIFVuY2VydGFpblZhbHVlIG1pbihjb25zdCBVbmNlcnRhaW5WYWx1ZSAmcikgY29uc3Q7CiAg
VW5jZXJ0YWluVmFsdWUgcG93KGNvbnN0IFVuY2VydGFpblZhbHVlICZyKSBjb25zdDsKICBVbmNl
cnRhaW5WYWx1ZSBleHAodm9pZCkgY29uc3Q7CiAgVW5jZXJ0YWluVmFsdWUgbG9nKHZvaWQpIGNv
bnN0OwogIFVuY2VydGFpblZhbHVlIHNpbih2b2lkKSBjb25zdDsKICBVbmNlcnRhaW5WYWx1ZSBj
b3Modm9pZCkgY29uc3Q7CiAgVW5jZXJ0YWluVmFsdWUgYXRhbjIoY29uc3QgVW5jZXJ0YWluVmFs
dWUgJnIpIGNvbnN0OwogIFVuY2VydGFpblZhbHVlIGNvcHlzaWduKGNvbnN0IFVuY2VydGFpblZh
bHVlICZyKSBjb25zdDsKICBVbmNlcnRhaW5WYWx1ZSBhYnModm9pZCkgY29uc3Q7CiAgVW5jZXJ0
YWluVmFsdWUgbmVnKHZvaWQpIGNvbnN0OwogIFVuY2VydGFpblZhbHVlIGNlaWwodm9pZCkgY29u
c3Q7CiAgVW5jZXJ0YWluVmFsdWUgZmxvb3Iodm9pZCkgY29uc3Q7CiAgVW5jZXJ0YWluVmFsdWUg
cm91bmQodm9pZCkgY29uc3Q7CnB1YmxpYzoKICBkb3VibGUgdW1heCh2b2lkKSBjb25zdDsKICBk
b3VibGUgdW1pbih2b2lkKSBjb25zdDsKICBkb3VibGUgdXR5cCh2b2lkKSBjb25zdDsKcHVibGlj
OgogIGludCB1ZmF1bHQodm9pZCkgY29uc3Q7CiAgaW50IGlzX25hbih2b2lkKSBjb25zdDsKICBp
bnQgaXNfaW5mKHZvaWQpIGNvbnN0OwpwdWJsaWM6CiAgaW50IGxlKGNvbnN0IFVuY2VydGFpblZh
bHVlICZyKSBjb25zdDsKICBpbnQgbHQoY29uc3QgVW5jZXJ0YWluVmFsdWUgJnIpIGNvbnN0Owog
IGludCBlcShjb25zdCBVbmNlcnRhaW5WYWx1ZSAmcikgY29uc3Q7CiAgaW50IG5lKGNvbnN0IFVu
Y2VydGFpblZhbHVlICZyKSBjb25zdDsKICBpbnQgZ2UoY29uc3QgVW5jZXJ0YWluVmFsdWUgJnIp
IGNvbnN0OwogIGludCBndChjb25zdCBVbmNlcnRhaW5WYWx1ZSAmcikgY29uc3Q7CiAgaW50IGRp
ZmYoY29uc3QgVW5jZXJ0YWluVmFsdWUgJnIpIGNvbnN0OwpwdWJsaWM6CiAgdm9pZCBtYWtlX1Vu
Y2VydGFpblZhbHVlKGludCk7CiAgdm9pZCBtYWtlX1VuY2VydGFpblZhbHVlKGludCwgaW50KTsK
ICB2b2lkIG1ha2VfVW5jZXJ0YWluVmFsdWUoVmFsdWVJbnRUeXBlKTsKICB2b2lkIG1ha2VfVW5j
ZXJ0YWluVmFsdWUoVmFsdWVJbnRUeXBlLCBWYWx1ZUludFR5cGUpOwogIHZvaWQgbWFrZV9VbmNl
cnRhaW5WYWx1ZShWYWx1ZUZsb2F0VHlwZSk7CiAgdm9pZCBtYWtlX1VuY2VydGFpblZhbHVlKFZh
bHVlRmxvYXRUeXBlLCBWYWx1ZUZsb2F0VHlwZSk7CiAgdm9pZCBtYWtlX1VuY2VydGFpblZhbHVl
KGNvbnN0IGNoYXIgKik7CiAgdm9pZCBtYWtlX1VuY2VydGFpblZhbHVlKHZvaWQpOwpwdWJsaWM6
Cn07CmNsYXNzIFJlbGF0aW9uOwp1bmlvbiBWYWx1ZVVuaW9uIHsKcHVibGljOgogIFVuY2VydGFp
blZhbHVlIHU7CnB1YmxpYzoKICBWYWx1ZUludFR5cGUgaTY0OwogIFZhbHVlVW5zVHlwZSB1NjQ7
CiAgVmFsdWVGbG9hdFR5cGUgZjY0OwpwdWJsaWM6CiAgY29uc3QgY2hhciAqczsKICBSZWxhdGlv
biAqcjsKICB2b2lkICpwOwp9Owp1bmlvbiBWYWx1ZVVuaW9uMzIgewpwdWJsaWM6CiAgaW50IGk7
CiAgZmxvYXQgZjsKICBjb25zdCBjaGFyICpzOwogIFJlbGF0aW9uICpyOwogIHZvaWQgKnA7Cn07
CnVuaW9uIFZhbHVlVW5pb242NCB7CnB1YmxpYzoKICBWYWx1ZUludFR5cGUgaTY0OwogIFZhbHVl
VW5zVHlwZSB1NjQ7CiAgVmFsdWVGbG9hdFR5cGUgZjY0Owp9Owp0eXBlZGVmIGNvbnN0IGNoYXIg
KigqU3RyaW5nUmV3cml0ZTFGdW5jdGlvbikoY29uc3QgY2hhciAqczEpOwp0eXBlZGVmIGNvbnN0
IGNoYXIgKigqU3RyaW5nUmV3cml0ZTJGdW5jdGlvbikoY29uc3QgY2hhciAqczEsIGNvbnN0IGNo
YXIgKnMyKTsKdHlwZWRlZiBib29sICgqVmFsdWVsZWFmZXZhbHVhdG9yKShjb25zdCBjaGFyICpu
YW1lLAogIHZvaWQgKmhhbmRsZSwgVmFsdWUgJmx2YWwsIFZhbHVlICpydmFsKTsKY2xhc3MgVmFs
dWUgewpwdWJsaWM6CiAgY2hhciB0YWc7CiAgY2hhciBpc19zZXQ7CiAgY2hhciBpc19pbmRpcmVj
dDsKcHJpdmF0ZToKICBjaGFyIGhvbGVfMTsKcHVibGljOgogIFZhbHVlVW5pb24zMiB2MzI7CiAg
VmFsdWVVbmlvbjY0IHY2NDsKcHVibGljOgogIHN0YXRpYyBjb25zdCBjaGFyICpJbml0aWFsU3Ry
aW5nVmFsdWU7CiAgc3RhdGljIGNvbnN0IEVudW1JbmZvX0Jsb2NrIGV4cHJfa2V5d29yZHM7CnB1
YmxpYzoKZW51bSBWYWx1ZU1hdGNoIHsKICBWTV9zdHJjbXAsCiAgVk1fc3RyY2FzZWNtcCwKICBW
TV9zdHJ2YWxjbXAsCiAgVk1fc3RydmFsY2FzZWNtcCwKICBWTV9MQVNUCn07CiAgc3RhdGljIGNv
bnN0IEVudW1JbmZvIFZhbHVlTWF0Y2hJbmZvX0RhdGFbXTsKICBzdGF0aWMgY29uc3QgRW51bUlu
Zm9fQmxvY2sgVmFsdWVNYXRjaEluZm87CiAgc3RhdGljIFZhbHVlTWF0Y2ggdmFsX21hdGNoOwpw
dWJsaWM6CiAgc3RhdGljIGJvb2wgZG9fcmV4cHJfbWF0Y2g7CiAgc3RhdGljIFNvcnRDb250cm9s
Q29kZSBzb3J0Y29udHJvbDsKICBpbnQgZ2VuZXJhbF9zdHJjbXAoY29uc3QgVmFsdWUgKnJ2YWx1
ZSkgY29uc3Q7CnB1YmxpYzoKICBWYWx1ZShpbnQpOwogIFZhbHVlKHVuc2lnbmVkIGludCk7CiAg
VmFsdWUoVmFsdWVJbnRUeXBlKTsKICBWYWx1ZShWYWx1ZUZsb2F0VHlwZSk7CiAgVmFsdWUoY29u
c3QgY2hhciAqKTsKICBWYWx1ZShSZWxhdGlvbiAqKTsKICBWYWx1ZShjb25zdCBVbmNlcnRhaW5W
YWx1ZSAmdSk7CiAgVmFsdWUodm9pZCk7CiAgflZhbHVlKCk7CnB1YmxpYzoKICB2b2lkIGNsZWFy
KHZvaWQpOwogIHZvaWQgc2V0KFZhbHVlSW50VHlwZSk7CiAgdm9pZCBpbmNyKFZhbHVlSW50VHlw
ZSk7CiAgdm9pZCBkZWNyKFZhbHVlSW50VHlwZSk7CnB1YmxpYzoKICB2b2lkIHNldChWYWx1ZUZs
b2F0VHlwZSk7CiAgdm9pZCBpbmNyKFZhbHVlRmxvYXRUeXBlKTsKICB2b2lkIGRlY3IoVmFsdWVG
bG9hdFR5cGUpOwpwdWJsaWM6CiAgdm9pZCBzZXQoY29uc3QgVW5jZXJ0YWluVmFsdWUgJnUpOwog
IHZvaWQgaW5jcihjb25zdCBVbmNlcnRhaW5WYWx1ZSAmdSk7CiAgdm9pZCBkZWNyKGNvbnN0IFVu
Y2VydGFpblZhbHVlICZ1KTsKcHVibGljOgogIHZvaWQgY29tYmluZShWYWx1ZUludFR5cGUgdjIs
IFZhbHVlT3BlcmF0b3Igb3ApOwogIHZvaWQgY29tYmluZShWYWx1ZUZsb2F0VHlwZSB2MiwgVmFs
dWVPcGVyYXRvciBvcCk7CnByaXZhdGU6CiAgdm9pZCBjb21iaW5lX2RvdWJsZShWYWx1ZUZsb2F0
VHlwZSB2MSwgVmFsdWVGbG9hdFR5cGUgdjIsCiAgICBWYWx1ZU9wZXJhdG9yIG9wKTsKICB2b2lk
IGNvbWJpbmVfdW5jZXJ0YWluKFZhbHVlRmxvYXRUeXBlIHYxLCBWYWx1ZUZsb2F0VHlwZSB2MiwK
ICAgIFZhbHVlT3BlcmF0b3Igb3ApOwogIHZvaWQgY29tYmluZV9pbnQoVmFsdWVJbnRUeXBlIHYx
LCBWYWx1ZUludFR5cGUgdjIsCiAgICBWYWx1ZU9wZXJhdG9yIG9wKTsKcHVibGljOgogIHZvaWQg
c2V0KGNvbnN0IGNoYXIgKik7CiAgdm9pZCBzZXQoUmVsYXRpb24gKik7CnB1YmxpYzoKICB2b2lk
IHNldF90b19tYXgodm9pZCk7CiAgdm9pZCBzZXRfdG9fbWluKHZvaWQpOwpwdWJsaWM6CiAgdm9p
ZCBjb3B5X2Zyb20oY29uc3QgVmFsdWUgJmZyb20pOwpwdWJsaWM6CiAgdm9pZCBzbmFwX2luZGly
ZWN0KHZvaWQpOwogIHZvaWQgc2V0X2luZGlyZWN0KFZhbHVlSW50VHlwZSAqcCk7CiAgdm9pZCBz
ZXRfaW5kaXJlY3QoaW50ICpwKTsKICB2b2lkIHNldF9pbmRpcmVjdChWYWx1ZUZsb2F0VHlwZSAq
cCk7CiAgdm9pZCBzZXRfaW5kaXJlY3QoUmVsYXRpb24gKnApOwogIHZvaWQgc2V0X2luZGlyZWN0
KGNvbnN0IGNoYXIgKipwKTsKICB2b2lkIHNldF9pbmRpcmVjdChVbmNlcnRhaW5WYWx1ZSAqcCk7
CnByaXZhdGU6CiAgdm9pZCBzZXRfaW5kaXJlY3Rfd29ya2VyKHZvaWQgKnAsIFZhbHVlVGFnIHNy
Y190YWcpOwpwdWJsaWM6CiAgaW50IG5vbnplcm8odm9pZCkgY29uc3Q7CnB1YmxpYzoKICBWYWx1
ZUludFR5cGUgYXNfaW50KHZvaWQpIGNvbnN0OwogIFZhbHVlRmxvYXRUeXBlIGFzX2RvdWJsZSh2
b2lkKSBjb25zdDsKICBVbmNlcnRhaW5WYWx1ZSBhc191bmNlcnRhaW4odm9pZCkgY29uc3Q7CiAg
UmVsYXRpb24gKmFzX3JlbGF0aW9uKHZvaWQpIGNvbnN0OwogIGNvbnN0IGNoYXIgKmFzX3N0cmlu
Zyh2b2lkKSBjb25zdDsKICBjb25zdCBjaGFyICphc19mbXQodm9pZCkgY29uc3Q7CnB1YmxpYzoK
ICB2b2lkIGNvZXJjZShWYWx1ZVRhZyB0YWcpOwpwdWJsaWM6CiAgc3RhdGljIHZvaWQgZXJyb3Io
Y29uc3QgY2hhciAqbXNnKTsKICBzdGF0aWMgdm9pZCBlcnJvcl9zdHIoY29uc3QgY2hhciAqbXNn
LCBjb25zdCBjaGFyICpzdHIpOwpwdWJsaWM6CiAgc3RhdGljIFZhbHVlSW50VHlwZSBzdHJpbmdf
dG9faW50KGNvbnN0IGNoYXIgKnRleHQsIGludCBiYXNlKTsKICBzdGF0aWMgVmFsdWVGbG9hdFR5
cGUgc3RyaW5nX3RvX2RvdWJsZShjb25zdCBjaGFyICp0ZXh0LCBjb25zdCBjaGFyICoqZW5kPTAp
OwpwdWJsaWM6CiAgdm9pZCBkdW1wKHZvaWQpIGNvbnN0OwogIHZvaWQgcHJpbnQoUHJpbnRmICpm
cCwgaW50IHByaW50X3R5cGU9MCkgY29uc3Q7CiAgdm9pZCBzcHJpbnQoRFN0cmluZyAmY3AsIGJv
b2wgZG9fcXVvdGU9dHJ1ZSkgY29uc3Q7CiAgaW50IHNwcmludHdpZHRoKGJvb2wgZG9fcXVvdGU9
dHJ1ZSkgY29uc3Q7CnB1YmxpYzoKICBpbnQgb3BlcmF0b3IgPj0oY29uc3QgVmFsdWUgJnYpIGNv
bnN0OwogIGludCBvcGVyYXRvciA+KGNvbnN0IFZhbHVlICZ2KSBjb25zdDsKICBpbnQgb3BlcmF0
b3IgPChjb25zdCBWYWx1ZSAmdikgY29uc3Q7CiAgaW50IG9wZXJhdG9yIDw9KGNvbnN0IFZhbHVl
ICZ2KSBjb25zdDsKICBpbnQgb3BlcmF0b3IgPT0oY29uc3QgVmFsdWUgJnYpIGNvbnN0OwogIGlu
dCBvcGVyYXRvciAhPShjb25zdCBWYWx1ZSAmdikgY29uc3Q7CnB1YmxpYzoKICBzdGF0aWMgaW50
IGdlbmVyaWNfY29tcGFyZShWYWx1ZU9wZXJhdG9yIG9wY29kZSwKICAgIGNvbnN0IFZhbHVlICZs
dmFsdWUsIGNvbnN0IFZhbHVlICZydmFsdWUpOwogIHN0YXRpYyBWYWx1ZSBnZW5lcmljX3N0cmlu
Z19vcChWYWx1ZU9wZXJhdG9yIG9wY29kZSwKICAgIGNvbnN0IFZhbHVlICZsdmFsdWUsIGNvbnN0
IFZhbHVlICZydmFsdWUpOwogIHN0YXRpYyBWYWx1ZSBnZW5lcmljX29wKFZhbHVlT3BlcmF0b3Ig
b3Bjb2RlLAogICAgY29uc3QgVmFsdWUgJmx2YWx1ZSwgY29uc3QgVmFsdWUgJnJ2YWx1ZSk7CnB1
YmxpYzoKICBzdGF0aWMgVmFsdWVJbnRUeXBlIGltYXgoVmFsdWVJbnRUeXBlLCBWYWx1ZUludFR5
cGUpOwogIHN0YXRpYyBWYWx1ZUludFR5cGUgaW1pbihWYWx1ZUludFR5cGUsIFZhbHVlSW50VHlw
ZSk7CiAgc3RhdGljIFZhbHVlSW50VHlwZSBpcG93KFZhbHVlSW50VHlwZSwgVmFsdWVJbnRUeXBl
KTsKICBzdGF0aWMgVmFsdWVJbnRUeXBlIGlhYnMoVmFsdWVJbnRUeXBlKTsKICBzdGF0aWMgVmFs
dWVGbG9hdFR5cGUgZG1heChWYWx1ZUZsb2F0VHlwZSwgVmFsdWVGbG9hdFR5cGUpOwogIHN0YXRp
YyBWYWx1ZUZsb2F0VHlwZSBkbWluKFZhbHVlRmxvYXRUeXBlLCBWYWx1ZUZsb2F0VHlwZSk7CiAg
c3RhdGljIFZhbHVlRmxvYXRUeXBlIGRwb3coVmFsdWVGbG9hdFR5cGUsIFZhbHVlRmxvYXRUeXBl
KTsKICBzdGF0aWMgVmFsdWVGbG9hdFR5cGUgZGFicyhWYWx1ZUZsb2F0VHlwZSk7CiAgc3RhdGlj
IFZhbHVlRmxvYXRUeXBlIGRsb2coVmFsdWVGbG9hdFR5cGUpOwpwdWJsaWM6CiAgc3RhdGljIFN0
cmluZ1Jld3JpdGUxRnVuY3Rpb24gc3RyaW5nX3Jld3JpdGVyMTsKICBzdGF0aWMgU3RyaW5nUmV3
cml0ZTJGdW5jdGlvbiBzdHJpbmdfcmV3cml0ZXIyOwpwdWJsaWM6CiAgc3RhdGljIHZvaWQgc2V0
X3N0cmluZ19yZXdyaXRlKFN0cmluZ1Jld3JpdGUxRnVuY3Rpb24gZnVuYyk7CiAgc3RhdGljIHZv
aWQgc2V0X3N0cmluZ19yZXdyaXRlMShTdHJpbmdSZXdyaXRlMUZ1bmN0aW9uIGZ1bmMpOwogIHN0
YXRpYyB2b2lkIHNldF9zdHJpbmdfcmV3cml0ZTIoU3RyaW5nUmV3cml0ZTJGdW5jdGlvbiBmdW5j
KTsKfTsKdHlwZWRlZiB1aW50NjQgRXJyb3JCYXNlVHlwZTsKY2xhc3MgRXJyb3JJbmZvIHsKcHVi
bGljOgogIGNvbnN0IGNoYXIgKndoYXQ7CnByaXZhdGU6CiAgY29uc3QgY2hhciAqcGFkOwpwdWJs
aWM6CiAgRXJyb3JCYXNlVHlwZSBuZXJyb3JzOwogIEVycm9yQmFzZVR5cGUgbnRlc3RzOwogIEVy
cm9yQmFzZVR5cGUgbm90ZXN0OwpwdWJsaWM6CiAgRXJyb3JJbmZvKHZvaWQpOwogIEVycm9ySW5m
byhjb25zdCBjaGFyICopOwogIEVycm9ySW5mbyhFcnJvckJhc2VUeXBlIG5lcnJvcnMsIEVycm9y
QmFzZVR5cGUgbnRlc3RzKTsKcHVibGljOgogIHZvaWQgcHJpbnQoUHJpbnRmICpmcCwgaW50IHBy
aW50X2xldmVsPTEwKSBjb25zdDsKICBjb25zdCBjaGFyICpzcHJpbnQoRFN0cmluZyAmc3RyKSBj
b25zdDsKICBjb25zdCBjaGFyICpzcHJpbnRfZnVsbChEU3RyaW5nICZzdHIpIGNvbnN0OwogIGlu
dCBzY2FuZihjb25zdCBjaGFyICpidWYpOwogIHZvaWQgY2xlYXIodm9pZCk7CiAgdm9pZCB6ZXJv
KHZvaWQpOwogIGludCBjaGVjayh2b2lkKSBjb25zdDsKcHVibGljOgogIHZvaWQgb3BlcmF0b3Ig
Kz0oY29uc3QgRXJyb3JJbmZvICYpOwogIHZvaWQgb3BlcmF0b3IgLT0oY29uc3QgRXJyb3JJbmZv
ICYpOwp9OwpjbGFzcyBQZlZhbDsKZW51bSBQcmludGZUeXBlIHsKICBQVF9JTlQsCiAgUFRfSU5U
NjQsCiAgUFRfSU5UMTI4LAogIFBUX0ZMT0FULAogIFBUX0RPVUJMRSwKICBQVF9TVFJJTkcsCiAg
UFRfUFRSLAogIFBUX1VOQ0VSVEFJTiwKICBQVF9VTksKfTsKY2xhc3MgRFN0cmluZzsKY2xhc3Mg
UGZWYWwgewpmcmllbmQgY2xhc3MgUHJpbnRmOwpmcmllbmQgY2xhc3MgVHVwbGU7CnByaXZhdGU6
CiAgUHJpbnRmVHlwZSB0YWc7CiAgdW5pb24gewogICAgY29uc3Qgdm9pZCAqcDsKICAgIGNvbnN0
IGNoYXIgKnM7CiAgICBpbnQgaTsKICAgIGZsb2F0IGY7CiAgICBkb3VibGUgZDsKICAgIHVpbnQ2
NCB1bDsKICAgIGludDY0IGw7CiAgICBpbnQxMjhzIGwxMjg7CiAgICBVbmNlcnRhaW5WYWx1ZSB1
bmM7CiAgfTsKcHVibGljOgogIFBmVmFsKHZvaWQpOwogIFBmVmFsKGNvbnN0IGJvb2wpOwogIFBm
VmFsKGNvbnN0IGNoYXIpOwogIFBmVmFsKGNvbnN0IHVuc2lnbmVkIGNoYXIpOwogIFBmVmFsKGNv
bnN0IHNob3J0KTsKICBQZlZhbChjb25zdCB1bnNpZ25lZCBzaG9ydCk7CiAgUGZWYWwoY29uc3Qg
aW50KTsKICBQZlZhbChjb25zdCB1bnNpZ25lZCBpbnQpOwogIFBmVmFsKGNvbnN0IGxvbmcpOwog
IFBmVmFsKGNvbnN0IHVuc2lnbmVkIGxvbmcpOwogIFBmVmFsKGNvbnN0IGludDY0KTsKICBQZlZh
bChjb25zdCB1aW50NjQpOwogIFBmVmFsKGNvbnN0IGludDEyOHMpOwogIFBmVmFsKGNvbnN0IGZs
b2F0KTsKICBQZlZhbChjb25zdCBkb3VibGUpOwogIFBmVmFsKGNvbnN0IFVuY2VydGFpblZhbHVl
ICYpOwogIFBmVmFsKGNvbnN0IGNoYXIgKik7CiAgUGZWYWwoY29uc3QgdW5zaWduZWQgY2hhciAq
KTsKICBQZlZhbChjb25zdCBEU3RyaW5nICYpOwogIFBmVmFsKGNvbnN0IHZvaWQgKik7Cn07CmNs
YXNzIFByaW50ZiB7CnB1YmxpYzoKICBpbnQgZG9jYXQ7CiAgaW50IGZsYWdzOwpwcml2YXRlOgog
IGludCByZWN1cjsKICBjb25zdCBjaGFyICpmbXQ7CiAgY29uc3QgUGZWYWwgKip2OwogIGludCBu
Owpwcml2YXRlOgogIGludCBuY29udjsKcHJpdmF0ZToKICBpbnQgd2lkdGg7CiAgaW50IHByZWM7
CiAgaW50IHpwYWQ7CiAgaW50IGxhZGp1c3Q7CiAgaW50IGxvbmdhcmc7CiAgaW50IHNpZ25fY2hh
cjsKICBpbnQgYXN1cHBlcjsKICBpbnQgYXN1bnNpZ25lZDsKICBpbnQgcmFkaXg7CnByaXZhdGU6
CiAgaW50IG5lZWRfbWFzazsKcHVibGljOgogIGludCBpb3ZwcmludGYoY29uc3QgY2hhciAqZm10
LCBjb25zdCBQZlZhbCAqdltdLCBpbnQgbik7CnByaXZhdGU6CiAgaW50IHByaW50Zl9mb3JtYXQo
dm9pZCk7CnByaXZhdGU6CiAgY29uc3QgY2hhciAqcHJpbnRmX2dldF93aWR0aChjb25zdCBjaGFy
ICpmcCk7CiAgY29uc3QgY2hhciAqcHJpbnRmX2dldF90eXBlKGNvbnN0IGNoYXIgKmZwKTsKICBi
b29sIHByaW50Zl9jaGVja190eXBlKGludCBuZWVkX21hc2ssIGJvb2wgc2lsZW50KSBjb25zdDsK
ICBpbnQgcHJpbnRmX2dldF9zdGFyX3ZhbHVlKGludCAmdmFsKTsKICB1Y2hhciBwcmludGZfZ2V0
X2NoYXJfdmFsdWUodm9pZCk7CiAgdm9pZCBwcmludGZfc3ByZWFkX3ZhbHVlKERTdHJpbmcgJnZh
bGJ1ZiwgaW50IGxnKTsKICB2b2lkIHByaW50Zl9kaWFnbm9zZV90eXBlX2ZhdWx0KGludCBuZWVk
X21hc2ssIFByaW50ZlR5cGUgdGFnKSBjb25zdDsKcHJpdmF0ZToKICBpbnQgcHJpbnRmX3VpbnQ2
NChEU3RyaW5nICZ2YWxidWYsIHVpbnQ2NCB4KTsKICBpbnQgcHJpbnRmX3Vuc2lnbmVkKERTdHJp
bmcgJnZhbGJ1ZiwgdW5zaWduZWQgeCk7CiAgaW50IHByaW50Zl9pbnQxMjgoRFN0cmluZyAmdmFs
YnVmLCBjb25zdCBpbnQxMjhzICZ4KTsKcHJpdmF0ZToKICB2b2lkIHByaW50Zl9maWxsX3dpdGgo
aW50IG5maWxsLCBjaGFyIGZpbGwpOwogIHZvaWQgcHJpbnRmX2ZpbGxfc3RyaW5nKGNvbnN0IGNo
YXIgKmNoKTsKICB2b2lkIHByaW50Zl9zdGFydF9jaHVuayh2b2lkKTsKcHVibGljOgogIGludCBp
b3ByaW50Zihjb25zdCBjaGFyICpmbXQpOwogIGludCBpb3ByaW50Zihjb25zdCBjaGFyICpmbXQg
LGNvbnN0IFBmVmFsIHYxKTsKICBpbnQgaW9wcmludGYoY29uc3QgY2hhciAqZm10ICxjb25zdCBQ
ZlZhbCB2MSAsY29uc3QgUGZWYWwgdjIpOwogIGludCBpb3ByaW50Zihjb25zdCBjaGFyICpmbXQg
LGNvbnN0IFBmVmFsIHYxICxjb25zdCBQZlZhbCB2MiAsY29uc3QgUGZWYWwgdjMpOwogIGludCBp
b3ByaW50Zihjb25zdCBjaGFyICpmbXQgLGNvbnN0IFBmVmFsIHYxICxjb25zdCBQZlZhbCB2MiAs
Y29uc3QgUGZWYWwgdjMgLGNvbnN0IFBmVmFsIHY0KTsKICBpbnQgaW9wcmludGYoY29uc3QgY2hh
ciAqZm10ICxjb25zdCBQZlZhbCB2MSAsY29uc3QgUGZWYWwgdjIgLGNvbnN0IFBmVmFsIHYzICxj
b25zdCBQZlZhbCB2NCAsY29uc3QgUGZWYWwgdjUpOwogIGludCBpb3ByaW50Zihjb25zdCBjaGFy
ICpmbXQgLGNvbnN0IFBmVmFsIHYxICxjb25zdCBQZlZhbCB2MiAsY29uc3QgUGZWYWwgdjMgLGNv
bnN0IFBmVmFsIHY0ICxjb25zdCBQZlZhbCB2NSAsY29uc3QgUGZWYWwgdjYpOwogIGludCBpb3By
aW50Zihjb25zdCBjaGFyICpmbXQgLGNvbnN0IFBmVmFsIHYxICxjb25zdCBQZlZhbCB2MiAsY29u
c3QgUGZWYWwgdjMgLGNvbnN0IFBmVmFsIHY0ICxjb25zdCBQZlZhbCB2NSAsY29uc3QgUGZWYWwg
djYgLGNvbnN0IFBmVmFsIHY3KTsKICBpbnQgaW9wcmludGYoY29uc3QgY2hhciAqZm10ICxjb25z
dCBQZlZhbCB2MSAsY29uc3QgUGZWYWwgdjIgLGNvbnN0IFBmVmFsIHYzICxjb25zdCBQZlZhbCB2
NCAsY29uc3QgUGZWYWwgdjUgLGNvbnN0IFBmVmFsIHY2ICxjb25zdCBQZlZhbCB2NyAsY29uc3Qg
UGZWYWwgdjgpOwogIGludCBpb3ByaW50Zihjb25zdCBjaGFyICpmbXQgLGNvbnN0IFBmVmFsIHYx
ICxjb25zdCBQZlZhbCB2MiAsY29uc3QgUGZWYWwgdjMgLGNvbnN0IFBmVmFsIHY0ICxjb25zdCBQ
ZlZhbCB2NSAsY29uc3QgUGZWYWwgdjYgLGNvbnN0IFBmVmFsIHY3ICxjb25zdCBQZlZhbCB2OCAs
Y29uc3QgUGZWYWwgdjkpOwogIGludCBpb3ByaW50Zihjb25zdCBjaGFyICpmbXQgLGNvbnN0IFBm
VmFsIHYxICxjb25zdCBQZlZhbCB2MiAsY29uc3QgUGZWYWwgdjMgLGNvbnN0IFBmVmFsIHY0ICxj
b25zdCBQZlZhbCB2NSAsY29uc3QgUGZWYWwgdjYgLGNvbnN0IFBmVmFsIHY3ICxjb25zdCBQZlZh
bCB2OCAsY29uc3QgUGZWYWwgdjkgLGNvbnN0IFBmVmFsIHYxMCk7CiAgaW50IGlvcHJpbnRmKGNv
bnN0IGNoYXIgKmZtdCAsY29uc3QgUGZWYWwgdjEgLGNvbnN0IFBmVmFsIHYyICxjb25zdCBQZlZh
bCB2MyAsY29uc3QgUGZWYWwgdjQgLGNvbnN0IFBmVmFsIHY1ICxjb25zdCBQZlZhbCB2NiAsY29u
c3QgUGZWYWwgdjcgLGNvbnN0IFBmVmFsIHY4ICxjb25zdCBQZlZhbCB2OSAsY29uc3QgUGZWYWwg
djEwICxjb25zdCBQZlZhbCB2MTEpOwogIGludCBpb3ByaW50Zihjb25zdCBjaGFyICpmbXQgLGNv
bnN0IFBmVmFsIHYxICxjb25zdCBQZlZhbCB2MiAsY29uc3QgUGZWYWwgdjMgLGNvbnN0IFBmVmFs
IHY0ICxjb25zdCBQZlZhbCB2NSAsY29uc3QgUGZWYWwgdjYgLGNvbnN0IFBmVmFsIHY3ICxjb25z
dCBQZlZhbCB2OCAsY29uc3QgUGZWYWwgdjkgLGNvbnN0IFBmVmFsIHYxMCAsY29uc3QgUGZWYWwg
djExICxjb25zdCBQZlZhbCB2MTIpOwogIGludCBpb3ByaW50Zihjb25zdCBjaGFyICpmbXQgLGNv
bnN0IFBmVmFsIHYxICxjb25zdCBQZlZhbCB2MiAsY29uc3QgUGZWYWwgdjMgLGNvbnN0IFBmVmFs
IHY0ICxjb25zdCBQZlZhbCB2NSAsY29uc3QgUGZWYWwgdjYgLGNvbnN0IFBmVmFsIHY3ICxjb25z
dCBQZlZhbCB2OCAsY29uc3QgUGZWYWwgdjkgLGNvbnN0IFBmVmFsIHYxMCAsY29uc3QgUGZWYWwg
djExICxjb25zdCBQZlZhbCB2MTIgLGNvbnN0IFBmVmFsIHYxMyk7CiAgaW50IGlvcHJpbnRmKGNv
bnN0IGNoYXIgKmZtdCAsY29uc3QgUGZWYWwgdjEgLGNvbnN0IFBmVmFsIHYyICxjb25zdCBQZlZh
bCB2MyAsY29uc3QgUGZWYWwgdjQgLGNvbnN0IFBmVmFsIHY1ICxjb25zdCBQZlZhbCB2NiAsY29u
c3QgUGZWYWwgdjcgLGNvbnN0IFBmVmFsIHY4ICxjb25zdCBQZlZhbCB2OSAsY29uc3QgUGZWYWwg
djEwICxjb25zdCBQZlZhbCB2MTEgLGNvbnN0IFBmVmFsIHYxMiAsY29uc3QgUGZWYWwgdjEzICxj
b25zdCBQZlZhbCB2MTQpOwogIGludCBpb3ByaW50Zihjb25zdCBjaGFyICpmbXQgLGNvbnN0IFBm
VmFsIHYxICxjb25zdCBQZlZhbCB2MiAsY29uc3QgUGZWYWwgdjMgLGNvbnN0IFBmVmFsIHY0ICxj
b25zdCBQZlZhbCB2NSAsY29uc3QgUGZWYWwgdjYgLGNvbnN0IFBmVmFsIHY3ICxjb25zdCBQZlZh
bCB2OCAsY29uc3QgUGZWYWwgdjkgLGNvbnN0IFBmVmFsIHYxMCAsY29uc3QgUGZWYWwgdjExICxj
b25zdCBQZlZhbCB2MTIgLGNvbnN0IFBmVmFsIHYxMyAsY29uc3QgUGZWYWwgdjE0ICxjb25zdCBQ
ZlZhbCB2MTUpOwogIGludCBpb3ByaW50Zihjb25zdCBjaGFyICpmbXQgLGNvbnN0IFBmVmFsIHYx
ICxjb25zdCBQZlZhbCB2MiAsY29uc3QgUGZWYWwgdjMgLGNvbnN0IFBmVmFsIHY0ICxjb25zdCBQ
ZlZhbCB2NSAsY29uc3QgUGZWYWwgdjYgLGNvbnN0IFBmVmFsIHY3ICxjb25zdCBQZlZhbCB2OCAs
Y29uc3QgUGZWYWwgdjkgLGNvbnN0IFBmVmFsIHYxMCAsY29uc3QgUGZWYWwgdjExICxjb25zdCBQ
ZlZhbCB2MTIgLGNvbnN0IFBmVmFsIHYxMyAsY29uc3QgUGZWYWwgdjE0ICxjb25zdCBQZlZhbCB2
MTUgLGNvbnN0IFBmVmFsIHYxNik7CnB1YmxpYzoKICBQcmludGYodm9pZCk7CiAgdmlydHVhbCB+
UHJpbnRmKCk7CiAgdm9pZCBpbml0KGNvbnN0IGNoYXIgKl9mbXQsIGNvbnN0IFBmVmFsICoqX3Ys
IGludCBfbik7CnB1YmxpYzoKICB2aXJ0dWFsIGxvbmcgaW9zZWVrKGxvbmcgb2Zmc2V0LCBpbnQg
cHRybmFtZSkgPSAwOwogIHZpcnR1YWwgbG9uZyBpb3RlbGwodm9pZCkgPSAwOwogIHZpcnR1YWwg
aW50IGlvZmx1c2godm9pZCkgPSAwOwogIHZpcnR1YWwgaW50IGlvcmV3aW5kKHZvaWQpID0gMDsK
ICB2aXJ0dWFsIGludCBpb2dldHMoRFN0cmluZyAmc3RyKSA9IDA7CiAgdmlydHVhbCBpbnQgaW9n
ZXRjKHZvaWQpID0gMDsKICB2aXJ0dWFsIGludCBpb3B1dHMoY29uc3QgY2hhciAqYnVmKSA9IDA7
CiAgdmlydHVhbCBpbnQgaW9wdXRjKGNoYXIgYykgPSAwOwogIHZpcnR1YWwgaW50IGlvZmlsZW5v
KHZvaWQpID0gMDsKICB2aXJ0dWFsIGludCBpb2Vycm9yKHZvaWQpID0gMDsKICB2aXJ0dWFsIGlu
dCBpb2NsZWFyZXJyKHZvaWQpID0gMDsKICB2aXJ0dWFsIGludCBpb2ZjbG9zZSh2b2lkKSA9IDA7
CiAgdmlydHVhbCBpbnQgaW9wY2xvc2Uodm9pZCkgPSAwOwogIHZpcnR1YWwgaW50IGlvd3JpdGUo
Y29uc3Qgdm9pZCAqcHRyLCBpbnQgc2l6ZSwgaW50IG5pdGVtcykgPSAwOwogIHZpcnR1YWwgaW50
IGlvcmVhZCh2b2lkICpwdHIsIGludCBzaXplLCBpbnQgbml0ZW1zKSA9IDA7CiAgdmlydHVhbCBp
bnQgc2V0dmJ1ZihpbnQgY29kZSkgPSAwOwogIHZpcnR1YWwgaW50IHRydW5jKGludCkgPSAwOwpw
dWJsaWM6CiAgdmlydHVhbCBjb25zdCBjaGFyICpmbmFtZV9mb3Iodm9pZCkgPSAwOwogIHZpcnR1
YWwgaW50IGVuZHByaW50Zih2b2lkKSA9IDA7CnB1YmxpYzoKICBzdGF0aWMgaW50IHJlZ3Jlc3Mo
aW50IGRvX3NldCk7CiAgc3RhdGljIHZvaWQgZGVidWcoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiph
cmd2KTsKfTsKY2xhc3MgRFN0cmluZzsKY2xhc3MgU2ZWYWwgewpmcmllbmQgY2xhc3MgU2NhbmY7
CmZyaWVuZCBjbGFzcyBUdXBsZTsKcHJpdmF0ZToKICBQcmludGZUeXBlIHRhZzsKICB1bmlvbiB7
CiAgICBpbnQgKmk7CiAgICBmbG9hdCAqZjsKICAgIGRvdWJsZSAqZDsKICAgIHVpbnQ2NCAqdWk2
NDsKICAgIGludDY0ICppNjQ7CiAgICBpbnQxMjhzICpsMTI4OwogICAgRFN0cmluZyAqczsKICAg
IFVuY2VydGFpblZhbHVlICp1bmM7CiAgfTsKcHVibGljOgogIFNmVmFsKHZvaWQpOwogIFNmVmFs
KGludCAmKTsKICBTZlZhbChib29sICYpOwogIFNmVmFsKHVuc2lnbmVkIGludCAmKTsKICBTZlZh
bChsb25nICYpOwogIFNmVmFsKHVuc2lnbmVkIGxvbmcgJik7CiAgU2ZWYWwoaW50NjQgJik7CiAg
U2ZWYWwodWludDY0ICYpOwogIFNmVmFsKGludDEyOHMgJik7CiAgU2ZWYWwoZmxvYXQgJik7CiAg
U2ZWYWwoZG91YmxlICYpOwogIFNmVmFsKERTdHJpbmcgJik7CiAgU2ZWYWwoVW5jZXJ0YWluVmFs
dWUgJik7Cn07CmNsYXNzIFZhbHVlOwpjbGFzcyBTY2FuZjsKY2xhc3MgU2NhbmYgewpmcmllbmQg
Y2xhc3MgVHVwbGU7CnB1YmxpYzoKICBpbnQgZmxhZ3M7CnB1YmxpYzoKICBzdGF0aWMgY29uc3Qg
Y2hhciAqbGFzdF9zY2FuZl9lcnJvcjsKICBzdGF0aWMgY29uc3QgY2hhciAqbGFzdF9zY2FuZl93
YXJuaW5nOwpwdWJsaWM6CiAgU2NhbmYodm9pZCk7CiAgflNjYW5mKCk7CnB1YmxpYzoKICBzdGF0
aWMgaW50IHNzY2FuZihjb25zdCBjaGFyICpidWYsIGNvbnN0IGNoYXIgKmZtdCAsU2ZWYWwgdjEp
OwogIHN0YXRpYyBpbnQgc3NjYW5mKGNvbnN0IGNoYXIgKmJ1ZiwgY29uc3QgY2hhciAqZm10ICxT
ZlZhbCB2MSAsU2ZWYWwgdjIpOwogIHN0YXRpYyBpbnQgc3NjYW5mKGNvbnN0IGNoYXIgKmJ1Ziwg
Y29uc3QgY2hhciAqZm10ICxTZlZhbCB2MSAsU2ZWYWwgdjIgLFNmVmFsIHYzKTsKICBzdGF0aWMg
aW50IHNzY2FuZihjb25zdCBjaGFyICpidWYsIGNvbnN0IGNoYXIgKmZtdCAsU2ZWYWwgdjEgLFNm
VmFsIHYyICxTZlZhbCB2MyAsU2ZWYWwgdjQpOwogIHN0YXRpYyBpbnQgc3NjYW5mKGNvbnN0IGNo
YXIgKmJ1ZiwgY29uc3QgY2hhciAqZm10ICxTZlZhbCB2MSAsU2ZWYWwgdjIgLFNmVmFsIHYzICxT
ZlZhbCB2NCAsU2ZWYWwgdjUpOwogIHN0YXRpYyBpbnQgc3NjYW5mKGNvbnN0IGNoYXIgKmJ1Ziwg
Y29uc3QgY2hhciAqZm10ICxTZlZhbCB2MSAsU2ZWYWwgdjIgLFNmVmFsIHYzICxTZlZhbCB2NCAs
U2ZWYWwgdjUgLFNmVmFsIHY2KTsKICBzdGF0aWMgaW50IHNzY2FuZihjb25zdCBjaGFyICpidWYs
IGNvbnN0IGNoYXIgKmZtdCAsU2ZWYWwgdjEgLFNmVmFsIHYyICxTZlZhbCB2MyAsU2ZWYWwgdjQg
LFNmVmFsIHY1ICxTZlZhbCB2NiAsU2ZWYWwgdjcpOwogIHN0YXRpYyBpbnQgc3NjYW5mKGNvbnN0
IGNoYXIgKmJ1ZiwgY29uc3QgY2hhciAqZm10ICxTZlZhbCB2MSAsU2ZWYWwgdjIgLFNmVmFsIHYz
ICxTZlZhbCB2NCAsU2ZWYWwgdjUgLFNmVmFsIHY2ICxTZlZhbCB2NyAsU2ZWYWwgdjgpOwogIHN0
YXRpYyBpbnQgc3NjYW5mKGNvbnN0IGNoYXIgKmJ1ZiwgY29uc3QgY2hhciAqZm10ICxTZlZhbCB2
MSAsU2ZWYWwgdjIgLFNmVmFsIHYzICxTZlZhbCB2NCAsU2ZWYWwgdjUgLFNmVmFsIHY2ICxTZlZh
bCB2NyAsU2ZWYWwgdjggLFNmVmFsIHY5KTsKICBzdGF0aWMgaW50IHNzY2FuZihjb25zdCBjaGFy
ICpidWYsIGNvbnN0IGNoYXIgKmZtdCAsU2ZWYWwgdjEgLFNmVmFsIHYyICxTZlZhbCB2MyAsU2ZW
YWwgdjQgLFNmVmFsIHY1ICxTZlZhbCB2NiAsU2ZWYWwgdjcgLFNmVmFsIHY4ICxTZlZhbCB2OSAs
U2ZWYWwgdjEwKTsKICBzdGF0aWMgaW50IHNzY2FuZihjb25zdCBjaGFyICpidWYsIGNvbnN0IGNo
YXIgKmZtdCAsU2ZWYWwgdjEgLFNmVmFsIHYyICxTZlZhbCB2MyAsU2ZWYWwgdjQgLFNmVmFsIHY1
ICxTZlZhbCB2NiAsU2ZWYWwgdjcgLFNmVmFsIHY4ICxTZlZhbCB2OSAsU2ZWYWwgdjEwICxTZlZh
bCB2MTEpOwpwcml2YXRlOgogIGludCBpb3NzY2FuZihjb25zdCBjaGFyICpidWYsIGNvbnN0IGNo
YXIgKmZtdCwgU2ZWYWwgdltdLCBpbnQgbiwKICAgIGludCBhc19zcGVjaWFsKTsKcHVibGljOgog
IGludCBnZXRfZm9ybWF0X3R5cGVzKGNvbnN0IGNoYXIgKnN0ciwKICAgIFZhbHVlIHZhbHVlX3Rh
Z3NbXSwgaW50IG1heF9maWVsZHMpOwogIHN0YXRpYyBpbnQgY2F0ZWdvcml6ZV9mb3JtYXRfY2hh
cmFjdGVyKGNoYXIgY2gpOwpwcml2YXRlOgogIGludCBkaXNzZW1pbmF0ZShTZlZhbCAmdiwgY29u
c3QgaW50NjQgdmFsLCB1bnNpZ25lZCBtYXNrKTsKICBpbnQgZGlzc2VtaW5hdGUoU2ZWYWwgJnYs
IGNvbnN0IGludDEyOCAmdmFsLCB1bnNpZ25lZCBtYXNrKTsKICBpbnQgZGlzc2VtaW5hdGUoU2ZW
YWwgJnYsIGNvbnN0IERTdHJpbmcgJnZhbCwgdW5zaWduZWQgbWFzayk7CiAgaW50IGRpc3NlbWlu
YXRlKFNmVmFsICZ2LCBjb25zdCBkb3VibGUgJnZhbCwgdW5zaWduZWQgbWFzayk7CiAgaW50IGRp
c3NlbWluYXRlKFNmVmFsICZ2LCBjb25zdCBVbmNlcnRhaW5WYWx1ZSAmdmFsLCB1bnNpZ25lZCBt
YXNrKTsKcHVibGljOgogIHN0YXRpYyBpbnQgZG9fdGNsX3NjYW4xMjgoY29uc3QgY2hhciAqc3Vi
amVjdCwKICAgIGNvbnN0IGNoYXIgKmZtdCwgaW50IGFyZ2MsIERTdHJpbmcgKnhhcmd2CiAgKTsK
fTsKZXh0ZXJuICJDIiB7CnR5cGVkZWYgX19idWlsdGluX3ZhX2xpc3QgX19nbnVjX3ZhX2xpc3Q7
CmV4dGVybiAiQyIgewp0eXBlZGVmIHZvaWQgKl9fdmFfbGlzdDsKfQpleHRlcm4gIkMiIHsKc3Ry
dWN0IF9fRklMRQp7CiAgICAgICAgc3NpemVfdCBfY250OwogICAgICAgIHVuc2lnbmVkIGNoYXIg
Kl9wdHI7CiAgICAgICAgdW5zaWduZWQgY2hhciAqX2Jhc2U7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBfZmxhZzsKICAgICAgICB1bnNpZ25lZCBjaGFyIF9maWxlOwogICAgICAgIHVuc2lnbmVkIF9f
b3JpZW50YXRpb246MjsKICAgICAgICB1bnNpZ25lZCBfX2lvbm9sb2NrOjE7CiAgICAgICAgdW5z
aWduZWQgX19maWxsZXI6NTsKfTsKfQpleHRlcm4gIkMiIHsKdHlwZWRlZiBsb25nIGxvbmcgX19s
b25nbG9uZ190Owp0eXBlZGVmIGxvbmcgZnBvc190OwpleHRlcm4gX19GSUxFIF9faW9iWzIwXTsK
ZXh0ZXJuIGludCByZW1vdmUoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCByZW5hbWUoY29uc3Qg
Y2hhciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gRklMRSAqdG1wZmlsZSh2b2lkKTsKZXh0ZXJu
IGNoYXIgKnRtcG5hbShjaGFyICopOwpleHRlcm4gaW50IGZjbG9zZShGSUxFICopOwpleHRlcm4g
aW50IGZmbHVzaChGSUxFICopOwpleHRlcm4gRklMRSAqZm9wZW4oY29uc3QgY2hhciAqLCBjb25z
dCBjaGFyICopOwpleHRlcm4gRklMRSAqZnJlb3Blbihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg
KiwgRklMRSAqKTsKZXh0ZXJuIHZvaWQgc2V0YnVmKEZJTEUgKiwgY2hhciAqKTsKZXh0ZXJuIGlu
dCBzZXR2YnVmKEZJTEUgKiwgY2hhciAqLCBpbnQsIHNpemVfdCk7CmV4dGVybiBpbnQgZnByaW50
ZihGSUxFICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKZXh0ZXJuIGludCBmc2NhbmYoRklMRSAqLCBj
b25zdCBjaGFyICosIC4uLik7CmV4dGVybiBpbnQgcHJpbnRmKGNvbnN0IGNoYXIgKiwgLi4uKTsK
ZXh0ZXJuIGludCBzY2FuZihjb25zdCBjaGFyICosIC4uLik7CmV4dGVybiBpbnQgc3ByaW50Zihj
aGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKZXh0ZXJuIGludCBzc2NhbmYoY29uc3QgY2hhciAq
LCBjb25zdCBjaGFyICosIC4uLik7CmV4dGVybiBpbnQgdmZwcmludGYoRklMRSAqLCBjb25zdCBj
aGFyICosIF9fdmFfbGlzdCk7CmV4dGVybiBpbnQgdnByaW50Zihjb25zdCBjaGFyICosIF9fdmFf
bGlzdCk7CmV4dGVybiBpbnQgdnNwcmludGYoY2hhciAqLCBjb25zdCBjaGFyICosIF9fdmFfbGlz
dCk7CmV4dGVybiBpbnQgZmdldGMoRklMRSAqKTsKZXh0ZXJuIGNoYXIgKmZnZXRzKGNoYXIgKiwg
aW50LCBGSUxFICopOwpleHRlcm4gaW50IGZwdXRjKGludCwgRklMRSAqKTsKZXh0ZXJuIGludCBm
cHV0cyhjb25zdCBjaGFyICosIEZJTEUgKik7CmV4dGVybiBpbnQgZ2V0YyhGSUxFICopOwpleHRl
cm4gaW50IHB1dGMoaW50LCBGSUxFICopOwpleHRlcm4gaW50IGdldGNoYXIodm9pZCk7CmV4dGVy
biBpbnQgcHV0Y2hhcihpbnQpOwpleHRlcm4gY2hhciAqZ2V0cyhjaGFyICopOwpleHRlcm4gaW50
IHB1dHMoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCB1bmdldGMoaW50LCBGSUxFICopOwpleHRl
cm4gc2l6ZV90IGZyZWFkKHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIEZJTEUgKik7CmV4dGVybiBz
aXplX3QgZndyaXRlKGNvbnN0IHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIEZJTEUgKik7CmV4dGVy
biBpbnQgZmdldHBvcyhGSUxFICosIGZwb3NfdCAqKTsKZXh0ZXJuIGludCBmc2VlayhGSUxFICos
IGxvbmcsIGludCk7CmV4dGVybiBpbnQgZnNldHBvcyhGSUxFICosIGNvbnN0IGZwb3NfdCAqKTsK
ZXh0ZXJuIGxvbmcgZnRlbGwoRklMRSAqKTsKZXh0ZXJuIHZvaWQgcmV3aW5kKEZJTEUgKik7CmV4
dGVybiB2b2lkIGNsZWFyZXJyKEZJTEUgKik7CmV4dGVybiBpbnQgZmVvZihGSUxFICopOwpleHRl
cm4gaW50IGZlcnJvcihGSUxFICopOwpleHRlcm4gdm9pZCBwZXJyb3IoY29uc3QgY2hhciAqKTsK
ZXh0ZXJuIGludCBfX2ZpbGJ1ZihGSUxFICopOwpleHRlcm4gaW50IF9fZmxzYnVmKGludCwgRklM
RSAqKTsKfQpleHRlcm4gIkMiIHsKdHlwZWRlZiBfX2xvbmdsb25nX3QgZnBvczY0X3Q7CnR5cGVk
ZWYgX192YV9saXN0IF9fbm90X3ZhX2xpc3RfXzsKZXh0ZXJuIHVuc2lnbmVkIGNoYXIgX3NpYnVm
W10sIF9zb2J1ZltdOwpleHRlcm4gdW5zaWduZWQgY2hhciAqX2J1ZmVuZHRhYltdOwpleHRlcm4g
RklMRSAqX2xhc3RidWY7CmV4dGVybiBjaGFyICp0bXBuYW1fcihjaGFyICopOwpleHRlcm4gdm9p
ZCBzZXRidWZmZXIoRklMRSAqLCBjaGFyICosIHNpemVfdCk7CmV4dGVybiBpbnQgc2V0bGluZWJ1
ZihGSUxFICopOwpleHRlcm4gaW50IHNucHJpbnRmKGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFy
ICosIC4uLik7CmV4dGVybiBpbnQgdnNucHJpbnRmKGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFy
ICosIF9fZ251Y192YV9saXN0KTsKZXh0ZXJuIEZJTEUgKmZkb3BlbihpbnQsIGNvbnN0IGNoYXIg
Kik7CmV4dGVybiBjaGFyICpjdGVybWlkKGNoYXIgKik7CmV4dGVybiBpbnQgZmlsZW5vKEZJTEUg
Kik7CmV4dGVybiB2b2lkIGZsb2NrZmlsZShGSUxFICopOwpleHRlcm4gaW50IGZ0cnlsb2NrZmls
ZShGSUxFICopOwpleHRlcm4gdm9pZCBmdW5sb2NrZmlsZShGSUxFICopOwpleHRlcm4gaW50IGdl
dGNfdW5sb2NrZWQoRklMRSAqKTsKZXh0ZXJuIGludCBnZXRjaGFyX3VubG9ja2VkKHZvaWQpOwpl
eHRlcm4gaW50IHB1dGNfdW5sb2NrZWQoaW50LCBGSUxFICopOwpleHRlcm4gaW50IHB1dGNoYXJf
dW5sb2NrZWQoaW50KTsKZXh0ZXJuIEZJTEUgKnBvcGVuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh
ciAqKTsKZXh0ZXJuIGNoYXIgKmN1c2VyaWQoY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnRlbXBuYW0o
Y29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gaW50IGdldG9wdChpbnQsIGNoYXIg
KmNvbnN0ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBjaGFyICpvcHRhcmc7CmV4dGVybiBpbnQg
b3B0aW5kLCBvcHRlcnIsIG9wdG9wdDsKZXh0ZXJuIGludCBnZXR3KEZJTEUgKik7CmV4dGVybiBp
bnQgcHV0dyhpbnQsIEZJTEUgKik7CmV4dGVybiBpbnQgcGNsb3NlKEZJTEUgKik7CmV4dGVybiBp
bnQgZnNlZWtvKEZJTEUgKiwgb2ZmX3QsIGludCk7CmV4dGVybiBvZmZfdCBmdGVsbG8oRklMRSAq
KTsKZXh0ZXJuIEZJTEUgKmZvcGVuNjQoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRl
cm4gRklMRSAqZnJlb3BlbjY0KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBGSUxFICopOwpl
eHRlcm4gRklMRSAqdG1wZmlsZTY0KHZvaWQpOwpleHRlcm4gaW50IGZnZXRwb3M2NChGSUxFICos
IGZwb3M2NF90ICopOwpleHRlcm4gaW50IGZzZXRwb3M2NChGSUxFICosIGNvbnN0IGZwb3M2NF90
ICopOwpleHRlcm4gaW50IGZzZWVrbzY0KEZJTEUgKiwgb2ZmNjRfdCwgaW50KTsKZXh0ZXJuIG9m
ZjY0X3QgZnRlbGxvNjQoRklMRSAqKTsKfQp0eXBlZGVmIF9fZ251Y192YV9saXN0IHZhX2xpc3Q7
CiAgICB0eXBlZGVmIHZvaWQgKkNsaWVudERhdGE7CnR5cGVkZWYgc3RydWN0IFRjbF9JbnRlcnAg
ewogICAgY2hhciAqcmVzdWx0OwogICAgdm9pZCAoKmZyZWVQcm9jKSAoY2hhciAqYmxvY2tQdHIp
OwogICAgaW50IGVycm9yTGluZTsKfSBUY2xfSW50ZXJwOwp0eXBlZGVmIHN0cnVjdCBUY2xfQXN5
bmNIYW5kbGVyXyAqVGNsX0FzeW5jSGFuZGxlcjsKdHlwZWRlZiBzdHJ1Y3QgVGNsX0NoYW5uZWxf
ICpUY2xfQ2hhbm5lbDsKdHlwZWRlZiBzdHJ1Y3QgVGNsX0NvbW1hbmRfICpUY2xfQ29tbWFuZDsK
dHlwZWRlZiBzdHJ1Y3QgVGNsX0NvbmRpdGlvbl8gKlRjbF9Db25kaXRpb247CnR5cGVkZWYgc3Ry
dWN0IFRjbF9FbmNvZGluZ1N0YXRlXyAqVGNsX0VuY29kaW5nU3RhdGU7CnR5cGVkZWYgc3RydWN0
IFRjbF9FbmNvZGluZ18gKlRjbF9FbmNvZGluZzsKdHlwZWRlZiBzdHJ1Y3QgVGNsX0V2ZW50IFRj
bF9FdmVudDsKdHlwZWRlZiBzdHJ1Y3QgVGNsX011dGV4XyAqVGNsX011dGV4Owp0eXBlZGVmIHN0
cnVjdCBUY2xfUGlkXyAqVGNsX1BpZDsKdHlwZWRlZiBzdHJ1Y3QgVGNsX1JlZ0V4cF8gKlRjbF9S
ZWdFeHA7CnR5cGVkZWYgc3RydWN0IFRjbF9UaHJlYWREYXRhS2V5XyAqVGNsX1RocmVhZERhdGFL
ZXk7CnR5cGVkZWYgc3RydWN0IFRjbF9UaHJlYWRJZF8gKlRjbF9UaHJlYWRJZDsKdHlwZWRlZiBz
dHJ1Y3QgVGNsX1RpbWVyVG9rZW5fICpUY2xfVGltZXJUb2tlbjsKdHlwZWRlZiBzdHJ1Y3QgVGNs
X1RyYWNlXyAqVGNsX1RyYWNlOwp0eXBlZGVmIHN0cnVjdCBUY2xfVmFyXyAqVGNsX1ZhcjsKdHlw
ZWRlZiBzdHJ1Y3QgVGNsX0NoYW5uZWxUeXBlVmVyc2lvbl8gKlRjbF9DaGFubmVsVHlwZVZlcnNp
b247CnR5cGVkZWYgdm9pZCAoVGNsX1RocmVhZENyZWF0ZVByb2MpIChDbGllbnREYXRhIGNsaWVu
dERhdGEpOwp0eXBlZGVmIHN0cnVjdCBUY2xfUmVnRXhwSW5kaWNlcyB7CiAgICBsb25nIHN0YXJ0
OwogICAgbG9uZyBlbmQ7Cn0gVGNsX1JlZ0V4cEluZGljZXM7CnR5cGVkZWYgc3RydWN0IFRjbF9S
ZWdFeHBJbmZvIHsKICAgIGludCBuc3ViczsKICAgIFRjbF9SZWdFeHBJbmRpY2VzICptYXRjaGVz
OwogICAgbG9uZyBleHRlbmRTdGFydDsKICAgIGxvbmcgcmVzZXJ2ZWQ7Cn0gVGNsX1JlZ0V4cElu
Zm87CnR5cGVkZWYgc3RydWN0IHN0YXQgKlRjbF9TdGF0XzsKdHlwZWRlZiBlbnVtIHtUQ0xfSU5U
LCBUQ0xfRE9VQkxFLCBUQ0xfRUlUSEVSfSBUY2xfVmFsdWVUeXBlOwp0eXBlZGVmIHN0cnVjdCBU
Y2xfVmFsdWUgewogICAgVGNsX1ZhbHVlVHlwZSB0eXBlOwogICAgbG9uZyBpbnRWYWx1ZTsKICAg
IGRvdWJsZSBkb3VibGVWYWx1ZTsKfSBUY2xfVmFsdWU7CnN0cnVjdCBUY2xfT2JqOwp0eXBlZGVm
IGludCAoVGNsX0FwcEluaXRQcm9jKSAoVGNsX0ludGVycCAqaW50ZXJwKTsKdHlwZWRlZiBpbnQg
KFRjbF9Bc3luY1Byb2MpIChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JbnRlcnAgKmludGVy
cCwgaW50IGNvZGUpOwp0eXBlZGVmIHZvaWQgKFRjbF9DaGFubmVsUHJvYykgKENsaWVudERhdGEg
Y2xpZW50RGF0YSwgaW50IG1hc2spOwp0eXBlZGVmIHZvaWQgKFRjbF9DbG9zZVByb2MpIChDbGll
bnREYXRhIGRhdGEpOwp0eXBlZGVmIHZvaWQgKFRjbF9DbWREZWxldGVQcm9jKSAoQ2xpZW50RGF0
YSBjbGllbnREYXRhKTsKdHlwZWRlZiBpbnQgKFRjbF9DbWRQcm9jKSAoQ2xpZW50RGF0YSBjbGll
bnREYXRhLCBUY2xfSW50ZXJwICppbnRlcnAsIGludCBhcmdjLCBjaGFyICphcmd2W10pOwp0eXBl
ZGVmIHZvaWQgKFRjbF9DbWRUcmFjZVByb2MpIChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9J
bnRlcnAgKmludGVycCwgaW50IGxldmVsLCBjaGFyICpjb21tYW5kLCBUY2xfQ21kUHJvYyAqcHJv
YywgQ2xpZW50RGF0YSBjbWRDbGllbnREYXRhLCBpbnQgYXJnYywgY2hhciAqYXJndltdKTsKdHlw
ZWRlZiB2b2lkIChUY2xfRHVwSW50ZXJuYWxSZXBQcm9jKSAoc3RydWN0IFRjbF9PYmogKnNyY1B0
ciwgc3RydWN0IFRjbF9PYmogKmR1cFB0cik7CnR5cGVkZWYgaW50IChUY2xfRW5jb2RpbmdDb252
ZXJ0UHJvYykoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBjb25zdCBjaGFyICpzcmMsIGludCBzcmNM
ZW4sIGludCBmbGFncywgVGNsX0VuY29kaW5nU3RhdGUgKnN0YXRlUHRyLCBjaGFyICpkc3QsIGlu
dCBkc3RMZW4sIGludCAqc3JjUmVhZFB0ciwgaW50ICpkc3RXcm90ZVB0ciwgaW50ICpkc3RDaGFy
c1B0cik7CnR5cGVkZWYgdm9pZCAoVGNsX0VuY29kaW5nRnJlZVByb2MpKENsaWVudERhdGEgY2xp
ZW50RGF0YSk7CnR5cGVkZWYgaW50IChUY2xfRXZlbnRQcm9jKSAoVGNsX0V2ZW50ICpldlB0ciwg
aW50IGZsYWdzKTsKdHlwZWRlZiB2b2lkIChUY2xfRXZlbnRDaGVja1Byb2MpIChDbGllbnREYXRh
IGNsaWVudERhdGEsIGludCBmbGFncyk7CnR5cGVkZWYgaW50IChUY2xfRXZlbnREZWxldGVQcm9j
KSAoVGNsX0V2ZW50ICpldlB0ciwgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKdHlwZWRlZiB2b2lk
IChUY2xfRXZlbnRTZXR1cFByb2MpIChDbGllbnREYXRhIGNsaWVudERhdGEsIGludCBmbGFncyk7
CnR5cGVkZWYgdm9pZCAoVGNsX0V4aXRQcm9jKSAoQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKdHlw
ZWRlZiB2b2lkIChUY2xfRmlsZVByb2MpIChDbGllbnREYXRhIGNsaWVudERhdGEsIGludCBtYXNr
KTsKdHlwZWRlZiB2b2lkIChUY2xfRmlsZUZyZWVQcm9jKSAoQ2xpZW50RGF0YSBjbGllbnREYXRh
KTsKdHlwZWRlZiB2b2lkIChUY2xfRnJlZUludGVybmFsUmVwUHJvYykgKHN0cnVjdCBUY2xfT2Jq
ICpvYmpQdHIpOwp0eXBlZGVmIHZvaWQgKFRjbF9GcmVlUHJvYykgKGNoYXIgKmJsb2NrUHRyKTsK
dHlwZWRlZiB2b2lkIChUY2xfSWRsZVByb2MpIChDbGllbnREYXRhIGNsaWVudERhdGEpOwp0eXBl
ZGVmIHZvaWQgKFRjbF9JbnRlcnBEZWxldGVQcm9jKSAoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBU
Y2xfSW50ZXJwICppbnRlcnApOwp0eXBlZGVmIGludCAoVGNsX01hdGhQcm9jKSAoQ2xpZW50RGF0
YSBjbGllbnREYXRhLCBUY2xfSW50ZXJwICppbnRlcnAsIFRjbF9WYWx1ZSAqYXJncywgVGNsX1Zh
bHVlICpyZXN1bHRQdHIpOwp0eXBlZGVmIHZvaWQgKFRjbF9OYW1lc3BhY2VEZWxldGVQcm9jKSAo
Q2xpZW50RGF0YSBjbGllbnREYXRhKTsKdHlwZWRlZiBpbnQgKFRjbF9PYmpDbWRQcm9jKSAoQ2xp
ZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSW50ZXJwICppbnRlcnAsIGludCBvYmpjLCBzdHJ1Y3Qg
VGNsX09iaiAqY29uc3Qgb2JqdltdKTsKdHlwZWRlZiBpbnQgKFRjbF9QYWNrYWdlSW5pdFByb2Mp
IChUY2xfSW50ZXJwICppbnRlcnApOwp0eXBlZGVmIHZvaWQgKFRjbF9QYW5pY1Byb2MpIChjaGFy
ICogZm9ybWF0LCAuLi4pOwp0eXBlZGVmIHZvaWQgKFRjbF9UY3BBY2NlcHRQcm9jKSAoQ2xpZW50
RGF0YSBjYWxsYmFja0RhdGEsIFRjbF9DaGFubmVsIGNoYW4sIGNoYXIgKmFkZHJlc3MsIGludCBw
b3J0KTsKdHlwZWRlZiB2b2lkIChUY2xfVGltZXJQcm9jKSAoQ2xpZW50RGF0YSBjbGllbnREYXRh
KTsKdHlwZWRlZiBpbnQgKFRjbF9TZXRGcm9tQW55UHJvYykgKFRjbF9JbnRlcnAgKmludGVycCwg
c3RydWN0IFRjbF9PYmogKm9ialB0cik7CnR5cGVkZWYgdm9pZCAoVGNsX1VwZGF0ZVN0cmluZ1By
b2MpIChzdHJ1Y3QgVGNsX09iaiAqb2JqUHRyKTsKdHlwZWRlZiBjaGFyICooVGNsX1ZhclRyYWNl
UHJvYykgKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLCBjaGFyICpw
YXJ0MSwgY2hhciAqcGFydDIsIGludCBmbGFncyk7CnR5cGVkZWYgdm9pZCAoVGNsX0NyZWF0ZUZp
bGVIYW5kbGVyUHJvYykgKGludCBmZCwgaW50IG1hc2ssIFRjbF9GaWxlUHJvYyAqcHJvYywgQ2xp
ZW50RGF0YSBjbGllbnREYXRhKTsKdHlwZWRlZiB2b2lkIChUY2xfRGVsZXRlRmlsZUhhbmRsZXJQ
cm9jKSAoaW50IGZkKTsKdHlwZWRlZiBzdHJ1Y3QgVGNsX09ialR5cGUgewogICAgY2hhciAqbmFt
ZTsKICAgIFRjbF9GcmVlSW50ZXJuYWxSZXBQcm9jICpmcmVlSW50UmVwUHJvYzsKICAgIFRjbF9E
dXBJbnRlcm5hbFJlcFByb2MgKmR1cEludFJlcFByb2M7CiAgICBUY2xfVXBkYXRlU3RyaW5nUHJv
YyAqdXBkYXRlU3RyaW5nUHJvYzsKICAgIFRjbF9TZXRGcm9tQW55UHJvYyAqc2V0RnJvbUFueVBy
b2M7Cn0gVGNsX09ialR5cGU7CnR5cGVkZWYgc3RydWN0IFRjbF9PYmogewogICAgaW50IHJlZkNv
dW50OwogICAgY2hhciAqYnl0ZXM7CiAgICBpbnQgbGVuZ3RoOwogICAgVGNsX09ialR5cGUgKnR5
cGVQdHI7CiAgICB1bmlvbiB7CiAgICAgICAgbG9uZyBsb25nVmFsdWU7CiAgICAgICAgZG91Ymxl
IGRvdWJsZVZhbHVlOwogICAgICAgIHZvaWQgKm90aGVyVmFsdWVQdHI7CiAgICAgICAgc3RydWN0
IHsKICAgICAgICAgICAgdm9pZCAqcHRyMTsKICAgICAgICAgICAgdm9pZCAqcHRyMjsKICAgICAg
ICB9IHR3b1B0clZhbHVlOwogICAgfSBpbnRlcm5hbFJlcDsKfSBUY2xfT2JqOwp2b2lkIFRjbF9J
bmNyUmVmQ291bnQgKFRjbF9PYmogKm9ialB0cik7CnZvaWQgVGNsX0RlY3JSZWZDb3VudCAoVGNs
X09iaiAqb2JqUHRyKTsKaW50IFRjbF9Jc1NoYXJlZCAoVGNsX09iaiAqb2JqUHRyKTsKdHlwZWRl
ZiBzdHJ1Y3QgVGNsX1NhdmVkUmVzdWx0IHsKICAgIGNoYXIgKnJlc3VsdDsKICAgIFRjbF9GcmVl
UHJvYyAqZnJlZVByb2M7CiAgICBUY2xfT2JqICpvYmpSZXN1bHRQdHI7CiAgICBjaGFyICphcHBl
bmRSZXN1bHQ7CiAgICBpbnQgYXBwZW5kQXZsOwogICAgaW50IGFwcGVuZFVzZWQ7CiAgICBjaGFy
IHJlc3VsdFNwYWNlWzIwMCArMV07Cn0gVGNsX1NhdmVkUmVzdWx0Owp0eXBlZGVmIHN0cnVjdCBU
Y2xfTmFtZXNwYWNlIHsKICAgIGNoYXIgKm5hbWU7CiAgICBjaGFyICpmdWxsTmFtZTsKICAgIENs
aWVudERhdGEgY2xpZW50RGF0YTsKICAgIFRjbF9OYW1lc3BhY2VEZWxldGVQcm9jKiBkZWxldGVQ
cm9jOwogICAgc3RydWN0IFRjbF9OYW1lc3BhY2UqIHBhcmVudFB0cjsKfSBUY2xfTmFtZXNwYWNl
Owp0eXBlZGVmIHN0cnVjdCBUY2xfQ2FsbEZyYW1lIHsKICAgIFRjbF9OYW1lc3BhY2UgKm5zUHRy
OwogICAgaW50IGR1bW15MTsKICAgIGludCBkdW1teTI7CiAgICBjaGFyICpkdW1teTM7CiAgICBj
aGFyICpkdW1teTQ7CiAgICBjaGFyICpkdW1teTU7CiAgICBpbnQgZHVtbXk2OwogICAgY2hhciAq
ZHVtbXk3OwogICAgY2hhciAqZHVtbXk4OwogICAgaW50IGR1bW15OTsKICAgIGNoYXIqIGR1bW15
MTA7Cn0gVGNsX0NhbGxGcmFtZTsKdHlwZWRlZiBzdHJ1Y3QgVGNsX0NtZEluZm8gewogICAgaW50
IGlzTmF0aXZlT2JqZWN0UHJvYzsKICAgIFRjbF9PYmpDbWRQcm9jICpvYmpQcm9jOwogICAgQ2xp
ZW50RGF0YSBvYmpDbGllbnREYXRhOwogICAgVGNsX0NtZFByb2MgKnByb2M7CiAgICBDbGllbnRE
YXRhIGNsaWVudERhdGE7CiAgICBUY2xfQ21kRGVsZXRlUHJvYyAqZGVsZXRlUHJvYzsKICAgIENs
aWVudERhdGEgZGVsZXRlRGF0YTsKICAgIFRjbF9OYW1lc3BhY2UgKm5hbWVzcGFjZVB0cjsKfSBU
Y2xfQ21kSW5mbzsKdHlwZWRlZiBzdHJ1Y3QgVGNsX0RTdHJpbmcgewogICAgY2hhciAqc3RyaW5n
OwogICAgaW50IGxlbmd0aDsKICAgIGludCBzcGFjZUF2bDsKICAgIGNoYXIgc3RhdGljU3BhY2Vb
MjAwXTsKfSBUY2xfRFN0cmluZzsKc3RydWN0IFRjbF9IYXNoVGFibGU7CnR5cGVkZWYgc3RydWN0
IFRjbF9IYXNoRW50cnkgewogICAgc3RydWN0IFRjbF9IYXNoRW50cnkgKm5leHRQdHI7CiAgICBz
dHJ1Y3QgVGNsX0hhc2hUYWJsZSAqdGFibGVQdHI7CiAgICBzdHJ1Y3QgVGNsX0hhc2hFbnRyeSAq
KmJ1Y2tldFB0cjsKICAgIENsaWVudERhdGEgY2xpZW50RGF0YTsKICAgIHVuaW9uIHsKICAgICAg
ICBjaGFyICpvbmVXb3JkVmFsdWU7CiAgICAgICAgaW50IHdvcmRzWzFdOwogICAgICAgIGNoYXIg
c3RyaW5nWzRdOwogICAgfSBrZXk7Cn0gVGNsX0hhc2hFbnRyeTsKdHlwZWRlZiBzdHJ1Y3QgVGNs
X0hhc2hUYWJsZSB7CiAgICBUY2xfSGFzaEVudHJ5ICoqYnVja2V0czsKICAgIFRjbF9IYXNoRW50
cnkgKnN0YXRpY0J1Y2tldHNbNF07CiAgICBpbnQgbnVtQnVja2V0czsKICAgIGludCBudW1FbnRy
aWVzOwogICAgaW50IHJlYnVpbGRTaXplOwogICAgaW50IGRvd25TaGlmdDsKICAgIGludCBtYXNr
OwogICAgaW50IGtleVR5cGU7CiAgICBUY2xfSGFzaEVudHJ5ICooKmZpbmRQcm9jKSAoc3RydWN0
IFRjbF9IYXNoVGFibGUgKnRhYmxlUHRyLCBjb25zdCBjaGFyICprZXkpOwogICAgVGNsX0hhc2hF
bnRyeSAqKCpjcmVhdGVQcm9jKSAoc3RydWN0IFRjbF9IYXNoVGFibGUgKnRhYmxlUHRyLCBjb25z
dCBjaGFyICprZXksIGludCAqbmV3UHRyKTsKfSBUY2xfSGFzaFRhYmxlOwp0eXBlZGVmIHN0cnVj
dCBUY2xfSGFzaFNlYXJjaCB7CiAgICBUY2xfSGFzaFRhYmxlICp0YWJsZVB0cjsKICAgIGludCBu
ZXh0SW5kZXg7CiAgICBUY2xfSGFzaEVudHJ5ICpuZXh0RW50cnlQdHI7Cn0gVGNsX0hhc2hTZWFy
Y2g7CnN0cnVjdCBUY2xfRXZlbnQgewogICAgVGNsX0V2ZW50UHJvYyAqcHJvYzsKICAgIHN0cnVj
dCBUY2xfRXZlbnQgKm5leHRQdHI7Cn07CnR5cGVkZWYgZW51bSB7CiAgICBUQ0xfUVVFVUVfVEFJ
TCwgVENMX1FVRVVFX0hFQUQsIFRDTF9RVUVVRV9NQVJLCn0gVGNsX1F1ZXVlUG9zaXRpb247CnR5
cGVkZWYgc3RydWN0IFRjbF9UaW1lIHsKICAgIGxvbmcgc2VjOwogICAgbG9uZyB1c2VjOwp9IFRj
bF9UaW1lOwp0eXBlZGVmIHZvaWQgKFRjbF9TZXRUaW1lclByb2MpIChUY2xfVGltZSAqdGltZVB0
cik7CnR5cGVkZWYgaW50IChUY2xfV2FpdEZvckV2ZW50UHJvYykgKFRjbF9UaW1lICp0aW1lUHRy
KTsKdHlwZWRlZiBpbnQgKFRjbF9Ecml2ZXJCbG9ja01vZGVQcm9jKSAoIENsaWVudERhdGEgaW5z
dGFuY2VEYXRhLCBpbnQgbW9kZSk7CnR5cGVkZWYgaW50IChUY2xfRHJpdmVyQ2xvc2VQcm9jKSAo
Q2xpZW50RGF0YSBpbnN0YW5jZURhdGEsIFRjbF9JbnRlcnAgKmludGVycCk7CnR5cGVkZWYgaW50
IChUY2xfRHJpdmVyQ2xvc2UyUHJvYykgKENsaWVudERhdGEgaW5zdGFuY2VEYXRhLCBUY2xfSW50
ZXJwICppbnRlcnAsIGludCBmbGFncyk7CnR5cGVkZWYgaW50IChUY2xfRHJpdmVySW5wdXRQcm9j
KSAoQ2xpZW50RGF0YSBpbnN0YW5jZURhdGEsIGNoYXIgKmJ1ZiwgaW50IHRvUmVhZCwgaW50ICpl
cnJvckNvZGVQdHIpOwp0eXBlZGVmIGludCAoVGNsX0RyaXZlck91dHB1dFByb2MpIChDbGllbnRE
YXRhIGluc3RhbmNlRGF0YSwgY2hhciAqYnVmLCBpbnQgdG9Xcml0ZSwgaW50ICplcnJvckNvZGVQ
dHIpOwp0eXBlZGVmIGludCAoVGNsX0RyaXZlclNlZWtQcm9jKSAoQ2xpZW50RGF0YSBpbnN0YW5j
ZURhdGEsIGxvbmcgb2Zmc2V0LCBpbnQgbW9kZSwgaW50ICplcnJvckNvZGVQdHIpOwp0eXBlZGVm
IGludCAoVGNsX0RyaXZlclNldE9wdGlvblByb2MpICggQ2xpZW50RGF0YSBpbnN0YW5jZURhdGEs
IFRjbF9JbnRlcnAgKmludGVycCwgY2hhciAqb3B0aW9uTmFtZSwgY2hhciAqdmFsdWUpOwp0eXBl
ZGVmIGludCAoVGNsX0RyaXZlckdldE9wdGlvblByb2MpICggQ2xpZW50RGF0YSBpbnN0YW5jZURh
dGEsIFRjbF9JbnRlcnAgKmludGVycCwgY2hhciAqb3B0aW9uTmFtZSwgVGNsX0RTdHJpbmcgKmRz
UHRyKTsKdHlwZWRlZiB2b2lkIChUY2xfRHJpdmVyV2F0Y2hQcm9jKSAoIENsaWVudERhdGEgaW5z
dGFuY2VEYXRhLCBpbnQgbWFzayk7CnR5cGVkZWYgaW50IChUY2xfRHJpdmVyR2V0SGFuZGxlUHJv
YykgKCBDbGllbnREYXRhIGluc3RhbmNlRGF0YSwgaW50IGRpcmVjdGlvbiwgQ2xpZW50RGF0YSAq
aGFuZGxlUHRyKTsKdHlwZWRlZiBpbnQgKFRjbF9Ecml2ZXJGbHVzaFByb2MpICggQ2xpZW50RGF0
YSBpbnN0YW5jZURhdGEpOwp0eXBlZGVmIGludCAoVGNsX0RyaXZlckhhbmRsZXJQcm9jKSAoIENs
aWVudERhdGEgaW5zdGFuY2VEYXRhLCBpbnQgaW50ZXJlc3RNYXNrKTsKdHlwZWRlZiBlbnVtIFRj
bF9Fb2xUcmFuc2xhdGlvbiB7CiAgICBUQ0xfVFJBTlNMQVRFX0FVVE8sCiAgICBUQ0xfVFJBTlNM
QVRFX0NSLAogICAgVENMX1RSQU5TTEFURV9MRiwKICAgIFRDTF9UUkFOU0xBVEVfQ1JMRgp9IFRj
bF9Fb2xUcmFuc2xhdGlvbjsKdHlwZWRlZiBzdHJ1Y3QgVGNsX0NoYW5uZWxUeXBlIHsKICAgIGNo
YXIgKnR5cGVOYW1lOwogICAgVGNsX0NoYW5uZWxUeXBlVmVyc2lvbiB2ZXJzaW9uOwogICAgVGNs
X0RyaXZlckNsb3NlUHJvYyAqY2xvc2VQcm9jOwogICAgVGNsX0RyaXZlcklucHV0UHJvYyAqaW5w
dXRQcm9jOwogICAgVGNsX0RyaXZlck91dHB1dFByb2MgKm91dHB1dFByb2M7CiAgICBUY2xfRHJp
dmVyU2Vla1Byb2MgKnNlZWtQcm9jOwogICAgVGNsX0RyaXZlclNldE9wdGlvblByb2MgKnNldE9w
dGlvblByb2M7CiAgICBUY2xfRHJpdmVyR2V0T3B0aW9uUHJvYyAqZ2V0T3B0aW9uUHJvYzsKICAg
IFRjbF9Ecml2ZXJXYXRjaFByb2MgKndhdGNoUHJvYzsKICAgIFRjbF9Ecml2ZXJHZXRIYW5kbGVQ
cm9jICpnZXRIYW5kbGVQcm9jOwogICAgVGNsX0RyaXZlckNsb3NlMlByb2MgKmNsb3NlMlByb2M7
CiAgICBUY2xfRHJpdmVyQmxvY2tNb2RlUHJvYyAqYmxvY2tNb2RlUHJvYzsKICAgIFRjbF9Ecml2
ZXJGbHVzaFByb2MgKmZsdXNoUHJvYzsKICAgIFRjbF9Ecml2ZXJIYW5kbGVyUHJvYyAqaGFuZGxl
clByb2M7Cn0gVGNsX0NoYW5uZWxUeXBlOwp0eXBlZGVmIGVudW0gVGNsX1BhdGhUeXBlIHsKICAg
IFRDTF9QQVRIX0FCU09MVVRFLAogICAgVENMX1BBVEhfUkVMQVRJVkUsCiAgICBUQ0xfUEFUSF9W
T0xVTUVfUkVMQVRJVkUKfSBUY2xfUGF0aFR5cGU7CnR5cGVkZWYgc3RydWN0IFRjbF9Ob3RpZmll
clByb2NzIHsKICAgIFRjbF9TZXRUaW1lclByb2MgKnNldFRpbWVyUHJvYzsKICAgIFRjbF9XYWl0
Rm9yRXZlbnRQcm9jICp3YWl0Rm9yRXZlbnRQcm9jOwogICAgVGNsX0NyZWF0ZUZpbGVIYW5kbGVy
UHJvYyAqY3JlYXRlRmlsZUhhbmRsZXJQcm9jOwogICAgVGNsX0RlbGV0ZUZpbGVIYW5kbGVyUHJv
YyAqZGVsZXRlRmlsZUhhbmRsZXJQcm9jOwp9IFRjbF9Ob3RpZmllclByb2NzOwp0eXBlZGVmIHN0
cnVjdCBUY2xfRW5jb2RpbmdUeXBlIHsKICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nTmFtZTsKICAg
IFRjbF9FbmNvZGluZ0NvbnZlcnRQcm9jICp0b1V0ZlByb2M7CiAgICBUY2xfRW5jb2RpbmdDb252
ZXJ0UHJvYyAqZnJvbVV0ZlByb2M7CiAgICBUY2xfRW5jb2RpbmdGcmVlUHJvYyAqZnJlZVByb2M7
CiAgICBDbGllbnREYXRhIGNsaWVudERhdGE7CiAgICBpbnQgbnVsbFNpemU7Cn0gVGNsX0VuY29k
aW5nVHlwZTsKdHlwZWRlZiBzdHJ1Y3QgVGNsX1Rva2VuIHsKICAgIGludCB0eXBlOwogICAgY2hh
ciAqc3RhcnQ7CiAgICBpbnQgc2l6ZTsKICAgIGludCBudW1Db21wb25lbnRzOwp9IFRjbF9Ub2tl
bjsKdHlwZWRlZiBzdHJ1Y3QgVGNsX1BhcnNlIHsKICAgIGNoYXIgKmNvbW1lbnRTdGFydDsKICAg
IGludCBjb21tZW50U2l6ZTsKICAgIGNoYXIgKmNvbW1hbmRTdGFydDsKICAgIGludCBjb21tYW5k
U2l6ZTsKICAgIGludCBudW1Xb3JkczsKICAgIFRjbF9Ub2tlbiAqdG9rZW5QdHI7CiAgICBpbnQg
bnVtVG9rZW5zOwogICAgaW50IHRva2Vuc0F2YWlsYWJsZTsKICAgIGludCBlcnJvclR5cGU7CiAg
ICBjaGFyICpzdHJpbmc7CiAgICBjaGFyICplbmQ7CiAgICBUY2xfSW50ZXJwICppbnRlcnA7CiAg
ICBjaGFyICp0ZXJtOwogICAgaW50IGluY29tcGxldGU7CiAgICBUY2xfVG9rZW4gc3RhdGljVG9r
ZW5zWzIwXTsKfSBUY2xfUGFyc2U7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgVGNsX1VuaUNoYXI7
CmV4dGVybiAiQyIgY2hhciAqIFRjbF9Jbml0U3R1YnMgKFRjbF9JbnRlcnAgKmludGVycCwgY2hh
ciAqdmVyc2lvbiwgaW50IGV4YWN0KTsKZXh0ZXJuICJDIiBpbnQgVGNsX1BrZ1Byb3ZpZGVFeCAo
VGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIG5hbWUsIGNoYXIgKiB2ZXJzaW9uLCBDbGllbnRE
YXRhIGNsaWVudERhdGEpOwpleHRlcm4gIkMiIGNoYXIgKiBUY2xfUGtnUmVxdWlyZUV4IChUY2xf
SW50ZXJwICogaW50ZXJwLCBjaGFyICogbmFtZSwgY2hhciAqIHZlcnNpb24sIGludCBleGFjdCwg
Q2xpZW50RGF0YSAqIGNsaWVudERhdGFQdHIpOwpleHRlcm4gIkMiIHZvaWQgVGNsX1BhbmljIChj
aGFyICogZm9ybWF0LCAuLi4pOwpleHRlcm4gIkMiIGNoYXIgKiBUY2xfQWxsb2MgKHVuc2lnbmVk
IGludCBzaXplKTsKZXh0ZXJuICJDIiB2b2lkIFRjbF9GcmVlIChjaGFyICogcHRyKTsKZXh0ZXJu
ICJDIiBjaGFyICogVGNsX1JlYWxsb2MgKGNoYXIgKiBwdHIsIHVuc2lnbmVkIGludCBzaXplKTsK
ZXh0ZXJuICJDIiBjaGFyICogVGNsX0RiQ2thbGxvYyAodW5zaWduZWQgaW50IHNpemUsIGNoYXIg
KiBmaWxlLCBpbnQgbGluZSk7CmV4dGVybiAiQyIgaW50IFRjbF9EYkNrZnJlZSAoY2hhciAqIHB0
ciwgY2hhciAqIGZpbGUsIGludCBsaW5lKTsKZXh0ZXJuICJDIiBjaGFyICogVGNsX0RiQ2tyZWFs
bG9jIChjaGFyICogcHRyLCB1bnNpZ25lZCBpbnQgc2l6ZSwgY2hhciAqIGZpbGUsIGludCBsaW5l
KTsKZXh0ZXJuICJDIiB2b2lkIFRjbF9DcmVhdGVGaWxlSGFuZGxlciAoaW50IGZkLCBpbnQgbWFz
aywgVGNsX0ZpbGVQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKZXh0ZXJuICJD
IiB2b2lkIFRjbF9EZWxldGVGaWxlSGFuZGxlciAoaW50IGZkKTsKZXh0ZXJuICJDIiB2b2lkIFRj
bF9TZXRUaW1lciAoVGNsX1RpbWUgKiB0aW1lUHRyKTsKZXh0ZXJuICJDIiB2b2lkIFRjbF9TbGVl
cCAoaW50IG1zKTsKZXh0ZXJuICJDIiBpbnQgVGNsX1dhaXRGb3JFdmVudCAoVGNsX1RpbWUgKiB0
aW1lUHRyKTsKZXh0ZXJuICJDIiBpbnQgVGNsX0FwcGVuZEFsbE9ialR5cGVzICggVGNsX0ludGVy
cCAqIGludGVycCwgVGNsX09iaiAqIG9ialB0cik7CmV4dGVybiAiQyIgdm9pZCBUY2xfQXBwZW5k
U3RyaW5nc1RvT2JqIChUY2xfT2JqICogb2JqUHRyLCAuLi4pOwpleHRlcm4gIkMiIHZvaWQgVGNs
X0FwcGVuZFRvT2JqIChUY2xfT2JqICogb2JqUHRyLCBjaGFyICogYnl0ZXMsIGludCBsZW5ndGgp
OwpleHRlcm4gIkMiIFRjbF9PYmogKiBUY2xfQ29uY2F0T2JqIChpbnQgb2JqYywgVGNsX09iaiAq
Y29uc3Qgb2JqdltdKTsKZXh0ZXJuICJDIiBpbnQgVGNsX0NvbnZlcnRUb1R5cGUgKFRjbF9JbnRl
cnAgKiBpbnRlcnAsIFRjbF9PYmogKiBvYmpQdHIsIFRjbF9PYmpUeXBlICogdHlwZVB0cik7CmV4
dGVybiAiQyIgdm9pZCBUY2xfRGJEZWNyUmVmQ291bnQgKFRjbF9PYmogKiBvYmpQdHIsIGNoYXIg
KiBmaWxlLCBpbnQgbGluZSk7CmV4dGVybiAiQyIgdm9pZCBUY2xfRGJJbmNyUmVmQ291bnQgKFRj
bF9PYmogKiBvYmpQdHIsIGNoYXIgKiBmaWxlLCBpbnQgbGluZSk7CmV4dGVybiAiQyIgaW50IFRj
bF9EYklzU2hhcmVkIChUY2xfT2JqICogb2JqUHRyLCBjaGFyICogZmlsZSwgaW50IGxpbmUpOwpl
eHRlcm4gIkMiIFRjbF9PYmogKiBUY2xfRGJOZXdCb29sZWFuT2JqIChpbnQgYm9vbFZhbHVlLCBj
aGFyICogZmlsZSwgaW50IGxpbmUpOwpleHRlcm4gIkMiIFRjbF9PYmogKiBUY2xfRGJOZXdCeXRl
QXJyYXlPYmogKCB1bnNpZ25lZCBjaGFyICogYnl0ZXMsIGludCBsZW5ndGgsIGNoYXIgKiBmaWxl
LCBpbnQgbGluZSk7CmV4dGVybiAiQyIgVGNsX09iaiAqIFRjbF9EYk5ld0RvdWJsZU9iaiAoZG91
YmxlIGRvdWJsZVZhbHVlLCBjaGFyICogZmlsZSwgaW50IGxpbmUpOwpleHRlcm4gIkMiIFRjbF9P
YmogKiBUY2xfRGJOZXdMaXN0T2JqIChpbnQgb2JqYywgVGNsX09iaiAqY29uc3Qgb2JqdltdLCBj
aGFyICogZmlsZSwgaW50IGxpbmUpOwpleHRlcm4gIkMiIFRjbF9PYmogKiBUY2xfRGJOZXdMb25n
T2JqIChsb25nIGxvbmdWYWx1ZSwgY2hhciAqIGZpbGUsIGludCBsaW5lKTsKZXh0ZXJuICJDIiBU
Y2xfT2JqICogVGNsX0RiTmV3T2JqIChjaGFyICogZmlsZSwgaW50IGxpbmUpOwpleHRlcm4gIkMi
IFRjbF9PYmogKiBUY2xfRGJOZXdTdHJpbmdPYmogKGNvbnN0IGNoYXIgKiBieXRlcywgaW50IGxl
bmd0aCwgY2hhciAqIGZpbGUsIGludCBsaW5lKTsKZXh0ZXJuICJDIiBUY2xfT2JqICogVGNsX0R1
cGxpY2F0ZU9iaiAoVGNsX09iaiAqIG9ialB0cik7CmV4dGVybiAiQyIgdm9pZCBUY2xGcmVlT2Jq
IChUY2xfT2JqICogb2JqUHRyKTsKZXh0ZXJuICJDIiBpbnQgVGNsX0dldEJvb2xlYW4gKFRjbF9J
bnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzdHIsIGludCAqIGJvb2xQdHIpOwpleHRlcm4gIkMiIGlu
dCBUY2xfR2V0Qm9vbGVhbkZyb21PYmogKCBUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICog
b2JqUHRyLCBpbnQgKiBib29sUHRyKTsKZXh0ZXJuICJDIiB1bnNpZ25lZCBjaGFyICogVGNsX0dl
dEJ5dGVBcnJheUZyb21PYmogKCBUY2xfT2JqICogb2JqUHRyLCBpbnQgKiBsZW5ndGhQdHIpOwpl
eHRlcm4gIkMiIGludCBUY2xfR2V0RG91YmxlIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICog
c3RyLCBkb3VibGUgKiBkb3VibGVQdHIpOwpleHRlcm4gIkMiIGludCBUY2xfR2V0RG91YmxlRnJv
bU9iaiAoIFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBvYmpQdHIsIGRvdWJsZSAqIGRv
dWJsZVB0cik7CmV4dGVybiAiQyIgaW50IFRjbF9HZXRJbmRleEZyb21PYmogKFRjbF9JbnRlcnAg
KiBpbnRlcnAsIFRjbF9PYmogKiBvYmpQdHIsIGNoYXIgKiogdGFibGVQdHIsIGNoYXIgKiBtc2cs
IGludCBmbGFncywgaW50ICogaW5kZXhQdHIpOwpleHRlcm4gIkMiIGludCBUY2xfR2V0SW50IChU
Y2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogc3RyLCBpbnQgKiBpbnRQdHIpOwpleHRlcm4gIkMi
IGludCBUY2xfR2V0SW50RnJvbU9iaiAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX09iaiAqIG9i
alB0ciwgaW50ICogaW50UHRyKTsKZXh0ZXJuICJDIiBpbnQgVGNsX0dldExvbmdGcm9tT2JqIChU
Y2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogb2JqUHRyLCBsb25nICogbG9uZ1B0cik7CmV4
dGVybiAiQyIgVGNsX09ialR5cGUgKiBUY2xfR2V0T2JqVHlwZSAoY2hhciAqIHR5cGVOYW1lKTsK
ZXh0ZXJuICJDIiBjaGFyICogVGNsX0dldFN0cmluZ0Zyb21PYmogKFRjbF9PYmogKiBvYmpQdHIs
IGludCAqIGxlbmd0aFB0cik7CmV4dGVybiAiQyIgdm9pZCBUY2xfSW52YWxpZGF0ZVN0cmluZ1Jl
cCAoIFRjbF9PYmogKiBvYmpQdHIpOwpleHRlcm4gIkMiIGludCBUY2xfTGlzdE9iakFwcGVuZExp
c3QgKCBUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogbGlzdFB0ciwgVGNsX09iaiAqIGVs
ZW1MaXN0UHRyKTsKZXh0ZXJuICJDIiBpbnQgVGNsX0xpc3RPYmpBcHBlbmRFbGVtZW50ICggVGNs
X0ludGVycCAqIGludGVycCwgVGNsX09iaiAqIGxpc3RQdHIsIFRjbF9PYmogKiBvYmpQdHIpOwpl
eHRlcm4gIkMiIGludCBUY2xfTGlzdE9iakdldEVsZW1lbnRzICggVGNsX0ludGVycCAqIGludGVy
cCwgVGNsX09iaiAqIGxpc3RQdHIsIGludCAqIG9iamNQdHIsIFRjbF9PYmogKioqIG9ianZQdHIp
OwpleHRlcm4gIkMiIGludCBUY2xfTGlzdE9iakluZGV4IChUY2xfSW50ZXJwICogaW50ZXJwLCBU
Y2xfT2JqICogbGlzdFB0ciwgaW50IGluZGV4LCBUY2xfT2JqICoqIG9ialB0clB0cik7CmV4dGVy
biAiQyIgaW50IFRjbF9MaXN0T2JqTGVuZ3RoIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2Jq
ICogbGlzdFB0ciwgaW50ICogaW50UHRyKTsKZXh0ZXJuICJDIiBpbnQgVGNsX0xpc3RPYmpSZXBs
YWNlIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogbGlzdFB0ciwgaW50IGZpcnN0LCBp
bnQgY291bnQsIGludCBvYmpjLCBUY2xfT2JqICpjb25zdCBvYmp2W10pOwpleHRlcm4gIkMiIFRj
bF9PYmogKiBUY2xfTmV3Qm9vbGVhbk9iaiAoaW50IGJvb2xWYWx1ZSk7CmV4dGVybiAiQyIgVGNs
X09iaiAqIFRjbF9OZXdCeXRlQXJyYXlPYmogKCB1bnNpZ25lZCBjaGFyICogYnl0ZXMsIGludCBs
ZW5ndGgpOwpleHRlcm4gIkMiIFRjbF9PYmogKiBUY2xfTmV3RG91YmxlT2JqIChkb3VibGUgZG91
YmxlVmFsdWUpOwpleHRlcm4gIkMiIFRjbF9PYmogKiBUY2xfTmV3SW50T2JqIChpbnQgaW50VmFs
dWUpOwpleHRlcm4gIkMiIFRjbF9PYmogKiBUY2xfTmV3TGlzdE9iaiAoaW50IG9iamMsIFRjbF9P
YmogKmNvbnN0IG9ianZbXSk7CmV4dGVybiAiQyIgVGNsX09iaiAqIFRjbF9OZXdMb25nT2JqIChs
b25nIGxvbmdWYWx1ZSk7CmV4dGVybiAiQyIgVGNsX09iaiAqIFRjbF9OZXdPYmogKHZvaWQpOwpl
eHRlcm4gIkMiIFRjbF9PYmogKiBUY2xfTmV3U3RyaW5nT2JqIChjb25zdCBjaGFyICogYnl0ZXMs
IGludCBsZW5ndGgpOwpleHRlcm4gIkMiIHZvaWQgVGNsX1NldEJvb2xlYW5PYmogKFRjbF9PYmog
KiBvYmpQdHIsIGludCBib29sVmFsdWUpOwpleHRlcm4gIkMiIHVuc2lnbmVkIGNoYXIgKiBUY2xf
U2V0Qnl0ZUFycmF5TGVuZ3RoIChUY2xfT2JqICogb2JqUHRyLCBpbnQgbGVuZ3RoKTsKZXh0ZXJu
ICJDIiB2b2lkIFRjbF9TZXRCeXRlQXJyYXlPYmogKFRjbF9PYmogKiBvYmpQdHIsIHVuc2lnbmVk
IGNoYXIgKiBieXRlcywgaW50IGxlbmd0aCk7CmV4dGVybiAiQyIgdm9pZCBUY2xfU2V0RG91Ymxl
T2JqIChUY2xfT2JqICogb2JqUHRyLCBkb3VibGUgZG91YmxlVmFsdWUpOwpleHRlcm4gIkMiIHZv
aWQgVGNsX1NldEludE9iaiAoVGNsX09iaiAqIG9ialB0ciwgaW50IGludFZhbHVlKTsKZXh0ZXJu
ICJDIiB2b2lkIFRjbF9TZXRMaXN0T2JqIChUY2xfT2JqICogb2JqUHRyLCBpbnQgb2JqYywgVGNs
X09iaiAqY29uc3Qgb2JqdltdKTsKZXh0ZXJuICJDIiB2b2lkIFRjbF9TZXRMb25nT2JqIChUY2xf
T2JqICogb2JqUHRyLCBsb25nIGxvbmdWYWx1ZSk7CmV4dGVybiAiQyIgdm9pZCBUY2xfU2V0T2Jq
TGVuZ3RoIChUY2xfT2JqICogb2JqUHRyLCBpbnQgbGVuZ3RoKTsKZXh0ZXJuICJDIiB2b2lkIFRj
bF9TZXRTdHJpbmdPYmogKFRjbF9PYmogKiBvYmpQdHIsIGNoYXIgKiBieXRlcywgaW50IGxlbmd0
aCk7CmV4dGVybiAiQyIgdm9pZCBUY2xfQWRkRXJyb3JJbmZvIChUY2xfSW50ZXJwICogaW50ZXJw
LCBjb25zdCBjaGFyICogbWVzc2FnZSk7CmV4dGVybiAiQyIgdm9pZCBUY2xfQWRkT2JqRXJyb3JJ
bmZvIChUY2xfSW50ZXJwICogaW50ZXJwLCBjb25zdCBjaGFyICogbWVzc2FnZSwgaW50IGxlbmd0
aCk7CmV4dGVybiAiQyIgdm9pZCBUY2xfQWxsb3dFeGNlcHRpb25zIChUY2xfSW50ZXJwICogaW50
ZXJwKTsKZXh0ZXJuICJDIiB2b2lkIFRjbF9BcHBlbmRFbGVtZW50IChUY2xfSW50ZXJwICogaW50
ZXJwLCBjb25zdCBjaGFyICogc3RyaW5nKTsKZXh0ZXJuICJDIiB2b2lkIFRjbF9BcHBlbmRSZXN1
bHQgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIC4uLik7CmV4dGVybiAiQyIgVGNsX0FzeW5jSGFuZGxl
ciBUY2xfQXN5bmNDcmVhdGUgKFRjbF9Bc3luY1Byb2MgKiBwcm9jLCBDbGllbnREYXRhIGNsaWVu
dERhdGEpOwpleHRlcm4gIkMiIHZvaWQgVGNsX0FzeW5jRGVsZXRlIChUY2xfQXN5bmNIYW5kbGVy
IGFzeW5jKTsKZXh0ZXJuICJDIiBpbnQgVGNsX0FzeW5jSW52b2tlIChUY2xfSW50ZXJwICogaW50
ZXJwLCBpbnQgY29kZSk7CmV4dGVybiAiQyIgdm9pZCBUY2xfQXN5bmNNYXJrIChUY2xfQXN5bmNI
YW5kbGVyIGFzeW5jKTsKZXh0ZXJuICJDIiBpbnQgVGNsX0FzeW5jUmVhZHkgKHZvaWQpOwpleHRl
cm4gIkMiIHZvaWQgVGNsX0JhY2tncm91bmRFcnJvciAoVGNsX0ludGVycCAqIGludGVycCk7CmV4
dGVybiAiQyIgY2hhciBUY2xfQmFja3NsYXNoIChjb25zdCBjaGFyICogc3JjLCBpbnQgKiByZWFk
UHRyKTsKZXh0ZXJuICJDIiBpbnQgVGNsX0JhZENoYW5uZWxPcHRpb24gKCBUY2xfSW50ZXJwICog
aW50ZXJwLCBjaGFyICogb3B0aW9uTmFtZSwgY2hhciAqIG9wdGlvbkxpc3QpOwpleHRlcm4gIkMi
IHZvaWQgVGNsX0NhbGxXaGVuRGVsZXRlZCAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX0ludGVy
cERlbGV0ZVByb2MgKiBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwpleHRlcm4gIkMiIHZv
aWQgVGNsX0NhbmNlbElkbGVDYWxsICggVGNsX0lkbGVQcm9jICogaWRsZVByb2MsIENsaWVudERh
dGEgY2xpZW50RGF0YSk7CmV4dGVybiAiQyIgaW50IFRjbF9DbG9zZSAoVGNsX0ludGVycCAqIGlu
dGVycCwgVGNsX0NoYW5uZWwgY2hhbik7CmV4dGVybiAiQyIgaW50IFRjbF9Db21tYW5kQ29tcGxl
dGUgKGNoYXIgKiBjbWQpOwpleHRlcm4gIkMiIGNoYXIgKiBUY2xfQ29uY2F0IChpbnQgYXJnYywg
Y2hhciAqKiBhcmd2KTsKZXh0ZXJuICJDIiBpbnQgVGNsX0NvbnZlcnRFbGVtZW50IChjb25zdCBj
aGFyICogc3JjLCBjaGFyICogZHN0LCBpbnQgZmxhZ3MpOwpleHRlcm4gIkMiIGludCBUY2xfQ29u
dmVydENvdW50ZWRFbGVtZW50ICggY29uc3QgY2hhciAqIHNyYywgaW50IGxlbmd0aCwgY2hhciAq
IGRzdCwgaW50IGZsYWdzKTsKZXh0ZXJuICJDIiBpbnQgVGNsX0NyZWF0ZUFsaWFzIChUY2xfSW50
ZXJwICogc2xhdmUsIGNoYXIgKiBzbGF2ZUNtZCwgVGNsX0ludGVycCAqIHRhcmdldCwgY2hhciAq
IHRhcmdldENtZCwgaW50IGFyZ2MsIGNoYXIgKiogYXJndik7CmV4dGVybiAiQyIgaW50IFRjbF9D
cmVhdGVBbGlhc09iaiAoVGNsX0ludGVycCAqIHNsYXZlLCBjaGFyICogc2xhdmVDbWQsIFRjbF9J
bnRlcnAgKiB0YXJnZXQsIGNoYXIgKiB0YXJnZXRDbWQsIGludCBvYmpjLCBUY2xfT2JqICpjb25z
dCBvYmp2W10pOwpleHRlcm4gIkMiIFRjbF9DaGFubmVsIFRjbF9DcmVhdGVDaGFubmVsICggVGNs
X0NoYW5uZWxUeXBlICogdHlwZVB0ciwgY2hhciAqIGNoYW5OYW1lLCBDbGllbnREYXRhIGluc3Rh
bmNlRGF0YSwgaW50IG1hc2spOwpleHRlcm4gIkMiIHZvaWQgVGNsX0NyZWF0ZUNoYW5uZWxIYW5k
bGVyICggVGNsX0NoYW5uZWwgY2hhbiwgaW50IG1hc2ssIFRjbF9DaGFubmVsUHJvYyAqIHByb2Ms
IENsaWVudERhdGEgY2xpZW50RGF0YSk7CmV4dGVybiAiQyIgdm9pZCBUY2xfQ3JlYXRlQ2xvc2VI
YW5kbGVyIChUY2xfQ2hhbm5lbCBjaGFuLCBUY2xfQ2xvc2VQcm9jICogcHJvYywgQ2xpZW50RGF0
YSBjbGllbnREYXRhKTsKZXh0ZXJuICJDIiBUY2xfQ29tbWFuZCBUY2xfQ3JlYXRlQ29tbWFuZCAo
VGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIGNtZE5hbWUsIFRjbF9DbWRQcm9jICogcHJvYywg
Q2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfQ21kRGVsZXRlUHJvYyAqIGRlbGV0ZVByb2MpOwpl
eHRlcm4gIkMiIHZvaWQgVGNsX0NyZWF0ZUV2ZW50U291cmNlICggVGNsX0V2ZW50U2V0dXBQcm9j
ICogc2V0dXBQcm9jLCBUY2xfRXZlbnRDaGVja1Byb2MgKiBjaGVja1Byb2MsIENsaWVudERhdGEg
Y2xpZW50RGF0YSk7CmV4dGVybiAiQyIgdm9pZCBUY2xfQ3JlYXRlRXhpdEhhbmRsZXIgKCBUY2xf
RXhpdFByb2MgKiBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwpleHRlcm4gIkMiIFRjbF9J
bnRlcnAgKiBUY2xfQ3JlYXRlSW50ZXJwICh2b2lkKTsKZXh0ZXJuICJDIiB2b2lkIFRjbF9DcmVh
dGVNYXRoRnVuYyAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIG5hbWUsIGludCBudW1Bcmdz
LCBUY2xfVmFsdWVUeXBlICogYXJnVHlwZXMsIFRjbF9NYXRoUHJvYyAqIHByb2MsIENsaWVudERh
dGEgY2xpZW50RGF0YSk7CmV4dGVybiAiQyIgVGNsX0NvbW1hbmQgVGNsX0NyZWF0ZU9iakNvbW1h
bmQgKCBUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogY21kTmFtZSwgVGNsX09iakNtZFByb2Mg
KiBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9DbWREZWxldGVQcm9jICogZGVsZXRl
UHJvYyk7CmV4dGVybiAiQyIgVGNsX0ludGVycCAqIFRjbF9DcmVhdGVTbGF2ZSAoVGNsX0ludGVy
cCAqIGludGVycCwgY2hhciAqIHNsYXZlTmFtZSwgaW50IGlzU2FmZSk7CmV4dGVybiAiQyIgVGNs
X1RpbWVyVG9rZW4gVGNsX0NyZWF0ZVRpbWVySGFuZGxlciAoaW50IG1pbGxpc2Vjb25kcywgVGNs
X1RpbWVyUHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CmV4dGVybiAiQyIgVGNs
X1RyYWNlIFRjbF9DcmVhdGVUcmFjZSAoVGNsX0ludGVycCAqIGludGVycCwgaW50IGxldmVsLCBU
Y2xfQ21kVHJhY2VQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKZXh0ZXJuICJD
IiB2b2lkIFRjbF9EZWxldGVBc3NvY0RhdGEgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBu
YW1lKTsKZXh0ZXJuICJDIiB2b2lkIFRjbF9EZWxldGVDaGFubmVsSGFuZGxlciAoIFRjbF9DaGFu
bmVsIGNoYW4sIFRjbF9DaGFubmVsUHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7
CmV4dGVybiAiQyIgdm9pZCBUY2xfRGVsZXRlQ2xvc2VIYW5kbGVyIChUY2xfQ2hhbm5lbCBjaGFu
LCBUY2xfQ2xvc2VQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKZXh0ZXJuICJD
IiBpbnQgVGNsX0RlbGV0ZUNvbW1hbmQgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBjbWRO
YW1lKTsKZXh0ZXJuICJDIiBpbnQgVGNsX0RlbGV0ZUNvbW1hbmRGcm9tVG9rZW4gKCBUY2xfSW50
ZXJwICogaW50ZXJwLCBUY2xfQ29tbWFuZCBjb21tYW5kKTsKZXh0ZXJuICJDIiB2b2lkIFRjbF9E
ZWxldGVFdmVudHMgKCBUY2xfRXZlbnREZWxldGVQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGll
bnREYXRhKTsKZXh0ZXJuICJDIiB2b2lkIFRjbF9EZWxldGVFdmVudFNvdXJjZSAoIFRjbF9FdmVu
dFNldHVwUHJvYyAqIHNldHVwUHJvYywgVGNsX0V2ZW50Q2hlY2tQcm9jICogY2hlY2tQcm9jLCBD
bGllbnREYXRhIGNsaWVudERhdGEpOwpleHRlcm4gIkMiIHZvaWQgVGNsX0RlbGV0ZUV4aXRIYW5k
bGVyICggVGNsX0V4aXRQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKZXh0ZXJu
ICJDIiB2b2lkIFRjbF9EZWxldGVIYXNoRW50cnkgKCBUY2xfSGFzaEVudHJ5ICogZW50cnlQdHIp
OwpleHRlcm4gIkMiIHZvaWQgVGNsX0RlbGV0ZUhhc2hUYWJsZSAoIFRjbF9IYXNoVGFibGUgKiB0
YWJsZVB0cik7CmV4dGVybiAiQyIgdm9pZCBUY2xfRGVsZXRlSW50ZXJwIChUY2xfSW50ZXJwICog
aW50ZXJwKTsKZXh0ZXJuICJDIiB2b2lkIFRjbF9EZXRhY2hQaWRzIChpbnQgbnVtUGlkcywgVGNs
X1BpZCAqIHBpZFB0cik7CmV4dGVybiAiQyIgdm9pZCBUY2xfRGVsZXRlVGltZXJIYW5kbGVyICgg
VGNsX1RpbWVyVG9rZW4gdG9rZW4pOwpleHRlcm4gIkMiIHZvaWQgVGNsX0RlbGV0ZVRyYWNlIChU
Y2xfSW50ZXJwICogaW50ZXJwLCBUY2xfVHJhY2UgdHJhY2UpOwpleHRlcm4gIkMiIHZvaWQgVGNs
X0RvbnRDYWxsV2hlbkRlbGV0ZWQgKCBUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfSW50ZXJwRGVs
ZXRlUHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CmV4dGVybiAiQyIgaW50IFRj
bF9Eb09uZUV2ZW50IChpbnQgZmxhZ3MpOwpleHRlcm4gIkMiIHZvaWQgVGNsX0RvV2hlbklkbGUg
KFRjbF9JZGxlUHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CmV4dGVybiAiQyIg
Y2hhciAqIFRjbF9EU3RyaW5nQXBwZW5kIChUY2xfRFN0cmluZyAqIGRzUHRyLCBjb25zdCBjaGFy
ICogc3RyLCBpbnQgbGVuZ3RoKTsKZXh0ZXJuICJDIiBjaGFyICogVGNsX0RTdHJpbmdBcHBlbmRF
bGVtZW50ICggVGNsX0RTdHJpbmcgKiBkc1B0ciwgY29uc3QgY2hhciAqIHN0cmluZyk7CmV4dGVy
biAiQyIgdm9pZCBUY2xfRFN0cmluZ0VuZFN1Ymxpc3QgKCBUY2xfRFN0cmluZyAqIGRzUHRyKTsK
ZXh0ZXJuICJDIiB2b2lkIFRjbF9EU3RyaW5nRnJlZSAoVGNsX0RTdHJpbmcgKiBkc1B0cik7CmV4
dGVybiAiQyIgdm9pZCBUY2xfRFN0cmluZ0dldFJlc3VsdCAoIFRjbF9JbnRlcnAgKiBpbnRlcnAs
IFRjbF9EU3RyaW5nICogZHNQdHIpOwpleHRlcm4gIkMiIHZvaWQgVGNsX0RTdHJpbmdJbml0IChU
Y2xfRFN0cmluZyAqIGRzUHRyKTsKZXh0ZXJuICJDIiB2b2lkIFRjbF9EU3RyaW5nUmVzdWx0IChU
Y2xfSW50ZXJwICogaW50ZXJwLCBUY2xfRFN0cmluZyAqIGRzUHRyKTsKZXh0ZXJuICJDIiB2b2lk
IFRjbF9EU3RyaW5nU2V0TGVuZ3RoICggVGNsX0RTdHJpbmcgKiBkc1B0ciwgaW50IGxlbmd0aCk7
CmV4dGVybiAiQyIgdm9pZCBUY2xfRFN0cmluZ1N0YXJ0U3VibGlzdCAoIFRjbF9EU3RyaW5nICog
ZHNQdHIpOwpleHRlcm4gIkMiIGludCBUY2xfRW9mIChUY2xfQ2hhbm5lbCBjaGFuKTsKZXh0ZXJu
ICJDIiBjaGFyICogVGNsX0Vycm5vSWQgKHZvaWQpOwpleHRlcm4gIkMiIGNoYXIgKiBUY2xfRXJy
bm9Nc2cgKGludCBlcnIpOwpleHRlcm4gIkMiIGludCBUY2xfRXZhbCAoVGNsX0ludGVycCAqIGlu
dGVycCwgY2hhciAqIHN0cmluZyk7CmV4dGVybiAiQyIgaW50IFRjbF9FdmFsRmlsZSAoVGNsX0lu
dGVycCAqIGludGVycCwgY2hhciAqIGZpbGVOYW1lKTsKZXh0ZXJuICJDIiBpbnQgVGNsX0V2YWxP
YmogKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBvYmpQdHIpOwpleHRlcm4gIkMiIHZv
aWQgVGNsX0V2ZW50dWFsbHlGcmVlICggQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfRnJlZVBy
b2MgKiBmcmVlUHJvYyk7CmV4dGVybiAiQyIgdm9pZCBUY2xfRXhpdCAoaW50IHN0YXR1cyk7CmV4
dGVybiAiQyIgaW50IFRjbF9FeHBvc2VDb21tYW5kIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFy
ICogaGlkZGVuQ21kVG9rZW4sIGNoYXIgKiBjbWROYW1lKTsKZXh0ZXJuICJDIiBpbnQgVGNsX0V4
cHJCb29sZWFuIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogc3RyLCBpbnQgKiBwdHIpOwpl
eHRlcm4gIkMiIGludCBUY2xfRXhwckJvb2xlYW5PYmogKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRj
bF9PYmogKiBvYmpQdHIsIGludCAqIHB0cik7CmV4dGVybiAiQyIgaW50IFRjbF9FeHByRG91Ymxl
IChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogc3RyLCBkb3VibGUgKiBwdHIpOwpleHRlcm4g
IkMiIGludCBUY2xfRXhwckRvdWJsZU9iaiAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX09iaiAq
IG9ialB0ciwgZG91YmxlICogcHRyKTsKZXh0ZXJuICJDIiBpbnQgVGNsX0V4cHJMb25nIChUY2xf
SW50ZXJwICogaW50ZXJwLCBjaGFyICogc3RyLCBsb25nICogcHRyKTsKZXh0ZXJuICJDIiBpbnQg
VGNsX0V4cHJMb25nT2JqIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogb2JqUHRyLCBs
b25nICogcHRyKTsKZXh0ZXJuICJDIiBpbnQgVGNsX0V4cHJPYmogKFRjbF9JbnRlcnAgKiBpbnRl
cnAsIFRjbF9PYmogKiBvYmpQdHIsIFRjbF9PYmogKiogcmVzdWx0UHRyUHRyKTsKZXh0ZXJuICJD
IiBpbnQgVGNsX0V4cHJTdHJpbmcgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzdHJpbmcp
OwpleHRlcm4gIkMiIHZvaWQgVGNsX0ZpbmFsaXplICh2b2lkKTsKZXh0ZXJuICJDIiB2b2lkIFRj
bF9GaW5kRXhlY3V0YWJsZSAoY29uc3QgY2hhciAqIGFyZ3YwKTsKZXh0ZXJuICJDIiBUY2xfSGFz
aEVudHJ5ICogVGNsX0ZpcnN0SGFzaEVudHJ5ICggVGNsX0hhc2hUYWJsZSAqIHRhYmxlUHRyLCBU
Y2xfSGFzaFNlYXJjaCAqIHNlYXJjaFB0cik7CmV4dGVybiAiQyIgaW50IFRjbF9GbHVzaCAoVGNs
X0NoYW5uZWwgY2hhbik7CmV4dGVybiAiQyIgdm9pZCBUY2xfRnJlZVJlc3VsdCAoVGNsX0ludGVy
cCAqIGludGVycCk7CmV4dGVybiAiQyIgaW50IFRjbF9HZXRBbGlhcyAoVGNsX0ludGVycCAqIGlu
dGVycCwgY2hhciAqIHNsYXZlQ21kLCBUY2xfSW50ZXJwICoqIHRhcmdldEludGVycFB0ciwgY2hh
ciAqKiB0YXJnZXRDbWRQdHIsIGludCAqIGFyZ2NQdHIsIGNoYXIgKioqIGFyZ3ZQdHIpOwpleHRl
cm4gIkMiIGludCBUY2xfR2V0QWxpYXNPYmogKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBz
bGF2ZUNtZCwgVGNsX0ludGVycCAqKiB0YXJnZXRJbnRlcnBQdHIsIGNoYXIgKiogdGFyZ2V0Q21k
UHRyLCBpbnQgKiBvYmpjUHRyLCBUY2xfT2JqICoqKiBvYmp2KTsKZXh0ZXJuICJDIiBDbGllbnRE
YXRhIFRjbF9HZXRBc3NvY0RhdGEgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBuYW1lLCBU
Y2xfSW50ZXJwRGVsZXRlUHJvYyAqKiBwcm9jUHRyKTsKZXh0ZXJuICJDIiBUY2xfQ2hhbm5lbCBU
Y2xfR2V0Q2hhbm5lbCAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIGNoYW5OYW1lLCBpbnQg
KiBtb2RlUHRyKTsKZXh0ZXJuICJDIiBpbnQgVGNsX0dldENoYW5uZWxCdWZmZXJTaXplICggVGNs
X0NoYW5uZWwgY2hhbik7CmV4dGVybiAiQyIgaW50IFRjbF9HZXRDaGFubmVsSGFuZGxlIChUY2xf
Q2hhbm5lbCBjaGFuLCBpbnQgZGlyZWN0aW9uLCBDbGllbnREYXRhICogaGFuZGxlUHRyKTsKZXh0
ZXJuICJDIiBDbGllbnREYXRhIFRjbF9HZXRDaGFubmVsSW5zdGFuY2VEYXRhICggVGNsX0NoYW5u
ZWwgY2hhbik7CmV4dGVybiAiQyIgaW50IFRjbF9HZXRDaGFubmVsTW9kZSAoVGNsX0NoYW5uZWwg
Y2hhbik7CmV4dGVybiAiQyIgY2hhciAqIFRjbF9HZXRDaGFubmVsTmFtZSAoVGNsX0NoYW5uZWwg
Y2hhbik7CmV4dGVybiAiQyIgaW50IFRjbF9HZXRDaGFubmVsT3B0aW9uICggVGNsX0ludGVycCAq
IGludGVycCwgVGNsX0NoYW5uZWwgY2hhbiwgY2hhciAqIG9wdGlvbk5hbWUsIFRjbF9EU3RyaW5n
ICogZHNQdHIpOwpleHRlcm4gIkMiIFRjbF9DaGFubmVsVHlwZSAqIFRjbF9HZXRDaGFubmVsVHlw
ZSAoVGNsX0NoYW5uZWwgY2hhbik7CmV4dGVybiAiQyIgaW50IFRjbF9HZXRDb21tYW5kSW5mbyAo
VGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIGNtZE5hbWUsIFRjbF9DbWRJbmZvICogaW5mb1B0
cik7CmV4dGVybiAiQyIgY2hhciAqIFRjbF9HZXRDb21tYW5kTmFtZSAoVGNsX0ludGVycCAqIGlu
dGVycCwgVGNsX0NvbW1hbmQgY29tbWFuZCk7CmV4dGVybiAiQyIgaW50IFRjbF9HZXRFcnJubyAo
dm9pZCk7CmV4dGVybiAiQyIgY2hhciAqIFRjbF9HZXRIb3N0TmFtZSAodm9pZCk7CmV4dGVybiAi
QyIgaW50IFRjbF9HZXRJbnRlcnBQYXRoICggVGNsX0ludGVycCAqIGFza0ludGVycCwgVGNsX0lu
dGVycCAqIHNsYXZlSW50ZXJwKTsKZXh0ZXJuICJDIiBUY2xfSW50ZXJwICogVGNsX0dldE1hc3Rl
ciAoVGNsX0ludGVycCAqIGludGVycCk7CmV4dGVybiAiQyIgY29uc3QgY2hhciAqIFRjbF9HZXRO
YW1lT2ZFeGVjdXRhYmxlICh2b2lkKTsKZXh0ZXJuICJDIiBUY2xfT2JqICogVGNsX0dldE9ialJl
c3VsdCAoVGNsX0ludGVycCAqIGludGVycCk7CmV4dGVybiAiQyIgaW50IFRjbF9HZXRPcGVuRmls
ZSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHN0ciwgaW50IGZvcldyaXRpbmcsIGludCBj
aGVja1VzYWdlLCBDbGllbnREYXRhICogZmlsZVB0cik7CmV4dGVybiAiQyIgVGNsX1BhdGhUeXBl
IFRjbF9HZXRQYXRoVHlwZSAoY2hhciAqIHBhdGgpOwpleHRlcm4gIkMiIGludCBUY2xfR2V0cyAo
VGNsX0NoYW5uZWwgY2hhbiwgVGNsX0RTdHJpbmcgKiBkc1B0cik7CmV4dGVybiAiQyIgaW50IFRj
bF9HZXRzT2JqIChUY2xfQ2hhbm5lbCBjaGFuLCBUY2xfT2JqICogb2JqUHRyKTsKZXh0ZXJuICJD
IiBpbnQgVGNsX0dldFNlcnZpY2VNb2RlICh2b2lkKTsKZXh0ZXJuICJDIiBUY2xfSW50ZXJwICog
VGNsX0dldFNsYXZlIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogc2xhdmVOYW1lKTsKZXh0
ZXJuICJDIiBUY2xfQ2hhbm5lbCBUY2xfR2V0U3RkQ2hhbm5lbCAoaW50IHR5cGUpOwpleHRlcm4g
IkMiIGNoYXIgKiBUY2xfR2V0U3RyaW5nUmVzdWx0IChUY2xfSW50ZXJwICogaW50ZXJwKTsKZXh0
ZXJuICJDIiBjaGFyICogVGNsX0dldFZhciAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHZh
ck5hbWUsIGludCBmbGFncyk7CmV4dGVybiAiQyIgY2hhciAqIFRjbF9HZXRWYXIyIChUY2xfSW50
ZXJwICogaW50ZXJwLCBjaGFyICogcGFydDEsIGNoYXIgKiBwYXJ0MiwgaW50IGZsYWdzKTsKZXh0
ZXJuICJDIiBpbnQgVGNsX0dsb2JhbEV2YWwgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBj
b21tYW5kKTsKZXh0ZXJuICJDIiBpbnQgVGNsX0dsb2JhbEV2YWxPYmogKFRjbF9JbnRlcnAgKiBp
bnRlcnAsIFRjbF9PYmogKiBvYmpQdHIpOwpleHRlcm4gIkMiIGludCBUY2xfSGlkZUNvbW1hbmQg
KFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBjbWROYW1lLCBjaGFyICogaGlkZGVuQ21kVG9r
ZW4pOwpleHRlcm4gIkMiIGludCBUY2xfSW5pdCAoVGNsX0ludGVycCAqIGludGVycCk7CmV4dGVy
biAiQyIgdm9pZCBUY2xfSW5pdEhhc2hUYWJsZSAoIFRjbF9IYXNoVGFibGUgKiB0YWJsZVB0ciwg
aW50IGtleVR5cGUpOwpleHRlcm4gIkMiIGludCBUY2xfSW5wdXRCbG9ja2VkIChUY2xfQ2hhbm5l
bCBjaGFuKTsKZXh0ZXJuICJDIiBpbnQgVGNsX0lucHV0QnVmZmVyZWQgKFRjbF9DaGFubmVsIGNo
YW4pOwpleHRlcm4gIkMiIGludCBUY2xfSW50ZXJwRGVsZXRlZCAoVGNsX0ludGVycCAqIGludGVy
cCk7CmV4dGVybiAiQyIgaW50IFRjbF9Jc1NhZmUgKFRjbF9JbnRlcnAgKiBpbnRlcnApOwpleHRl
cm4gIkMiIGNoYXIgKiBUY2xfSm9pblBhdGggKGludCBhcmdjLCBjaGFyICoqIGFyZ3YsIFRjbF9E
U3RyaW5nICogcmVzdWx0UHRyKTsKZXh0ZXJuICJDIiBpbnQgVGNsX0xpbmtWYXIgKFRjbF9JbnRl
cnAgKiBpbnRlcnAsIGNoYXIgKiB2YXJOYW1lLCBjaGFyICogYWRkciwgaW50IHR5cGUpOwpleHRl
cm4gIkMiIFRjbF9DaGFubmVsIFRjbF9NYWtlRmlsZUNoYW5uZWwgKENsaWVudERhdGEgaGFuZGxl
LCBpbnQgbW9kZSk7CmV4dGVybiAiQyIgaW50IFRjbF9NYWtlU2FmZSAoVGNsX0ludGVycCAqIGlu
dGVycCk7CmV4dGVybiAiQyIgVGNsX0NoYW5uZWwgVGNsX01ha2VUY3BDbGllbnRDaGFubmVsICgg
Q2xpZW50RGF0YSB0Y3BTb2NrZXQpOwpleHRlcm4gIkMiIGNoYXIgKiBUY2xfTWVyZ2UgKGludCBh
cmdjLCBjaGFyICoqIGFyZ3YpOwpleHRlcm4gIkMiIFRjbF9IYXNoRW50cnkgKiBUY2xfTmV4dEhh
c2hFbnRyeSAoIFRjbF9IYXNoU2VhcmNoICogc2VhcmNoUHRyKTsKZXh0ZXJuICJDIiB2b2lkIFRj
bF9Ob3RpZnlDaGFubmVsIChUY2xfQ2hhbm5lbCBjaGFubmVsLCBpbnQgbWFzayk7CmV4dGVybiAi
QyIgVGNsX09iaiAqIFRjbF9PYmpHZXRWYXIyIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2Jq
ICogcGFydDFQdHIsIFRjbF9PYmogKiBwYXJ0MlB0ciwgaW50IGZsYWdzKTsKZXh0ZXJuICJDIiBU
Y2xfT2JqICogVGNsX09ialNldFZhcjIgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBw
YXJ0MVB0ciwgVGNsX09iaiAqIHBhcnQyUHRyLCBUY2xfT2JqICogbmV3VmFsdWVQdHIsIGludCBm
bGFncyk7CmV4dGVybiAiQyIgVGNsX0NoYW5uZWwgVGNsX09wZW5Db21tYW5kQ2hhbm5lbCAoIFRj
bF9JbnRlcnAgKiBpbnRlcnAsIGludCBhcmdjLCBjaGFyICoqIGFyZ3YsIGludCBmbGFncyk7CmV4
dGVybiAiQyIgVGNsX0NoYW5uZWwgVGNsX09wZW5GaWxlQ2hhbm5lbCAoVGNsX0ludGVycCAqIGlu
dGVycCwgY2hhciAqIGZpbGVOYW1lLCBjaGFyICogbW9kZVN0cmluZywgaW50IHBlcm1pc3Npb25z
KTsKZXh0ZXJuICJDIiBUY2xfQ2hhbm5lbCBUY2xfT3BlblRjcENsaWVudCAoVGNsX0ludGVycCAq
IGludGVycCwgaW50IHBvcnQsIGNoYXIgKiBhZGRyZXNzLCBjaGFyICogbXlhZGRyLCBpbnQgbXlw
b3J0LCBpbnQgYXN5bmMpOwpleHRlcm4gIkMiIFRjbF9DaGFubmVsIFRjbF9PcGVuVGNwU2VydmVy
IChUY2xfSW50ZXJwICogaW50ZXJwLCBpbnQgcG9ydCwgY2hhciAqIGhvc3QsIFRjbF9UY3BBY2Nl
cHRQcm9jICogYWNjZXB0UHJvYywgQ2xpZW50RGF0YSBjYWxsYmFja0RhdGEpOwpleHRlcm4gIkMi
IHZvaWQgVGNsX1ByZXNlcnZlIChDbGllbnREYXRhIGRhdGEpOwpleHRlcm4gIkMiIHZvaWQgVGNs
X1ByaW50RG91YmxlIChUY2xfSW50ZXJwICogaW50ZXJwLCBkb3VibGUgdmFsdWUsIGNoYXIgKiBk
c3QpOwpleHRlcm4gIkMiIGludCBUY2xfUHV0RW52IChjb25zdCBjaGFyICogc3RyaW5nKTsKZXh0
ZXJuICJDIiBjaGFyICogVGNsX1Bvc2l4RXJyb3IgKFRjbF9JbnRlcnAgKiBpbnRlcnApOwpleHRl
cm4gIkMiIHZvaWQgVGNsX1F1ZXVlRXZlbnQgKFRjbF9FdmVudCAqIGV2UHRyLCBUY2xfUXVldWVQ
b3NpdGlvbiBwb3NpdGlvbik7CmV4dGVybiAiQyIgaW50IFRjbF9SZWFkIChUY2xfQ2hhbm5lbCBj
aGFuLCBjaGFyICogYnVmUHRyLCBpbnQgdG9SZWFkKTsKZXh0ZXJuICJDIiB2b2lkIFRjbF9SZWFw
RGV0YWNoZWRQcm9jcyAodm9pZCk7CmV4dGVybiAiQyIgaW50IFRjbF9SZWNvcmRBbmRFdmFsIChU
Y2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogY21kLCBpbnQgZmxhZ3MpOwpleHRlcm4gIkMiIGlu
dCBUY2xfUmVjb3JkQW5kRXZhbE9iaiAoIFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBj
bWRQdHIsIGludCBmbGFncyk7CmV4dGVybiAiQyIgdm9pZCBUY2xfUmVnaXN0ZXJDaGFubmVsIChU
Y2xfSW50ZXJwICogaW50ZXJwLCBUY2xfQ2hhbm5lbCBjaGFuKTsKZXh0ZXJuICJDIiB2b2lkIFRj
bF9SZWdpc3Rlck9ialR5cGUgKCBUY2xfT2JqVHlwZSAqIHR5cGVQdHIpOwpleHRlcm4gIkMiIFRj
bF9SZWdFeHAgVGNsX1JlZ0V4cENvbXBpbGUgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBz
dHJpbmcpOwpleHRlcm4gIkMiIGludCBUY2xfUmVnRXhwRXhlYyAoVGNsX0ludGVycCAqIGludGVy
cCwgVGNsX1JlZ0V4cCByZWdleHAsIGNvbnN0IGNoYXIgKiBzdHIsIGNvbnN0IGNoYXIgKiBzdGFy
dCk7CmV4dGVybiAiQyIgaW50IFRjbF9SZWdFeHBNYXRjaCAoVGNsX0ludGVycCAqIGludGVycCwg
Y2hhciAqIHN0ciwgY2hhciAqIHBhdHRlcm4pOwpleHRlcm4gIkMiIHZvaWQgVGNsX1JlZ0V4cFJh
bmdlIChUY2xfUmVnRXhwIHJlZ2V4cCwgaW50IGluZGV4LCBjaGFyICoqIHN0YXJ0UHRyLCBjaGFy
ICoqIGVuZFB0cik7CmV4dGVybiAiQyIgdm9pZCBUY2xfUmVsZWFzZSAoQ2xpZW50RGF0YSBjbGll
bnREYXRhKTsKZXh0ZXJuICJDIiB2b2lkIFRjbF9SZXNldFJlc3VsdCAoVGNsX0ludGVycCAqIGlu
dGVycCk7CmV4dGVybiAiQyIgaW50IFRjbF9TY2FuRWxlbWVudCAoY29uc3QgY2hhciAqIHN0ciwg
aW50ICogZmxhZ1B0cik7CmV4dGVybiAiQyIgaW50IFRjbF9TY2FuQ291bnRlZEVsZW1lbnQgKGNv
bnN0IGNoYXIgKiBzdHIsIGludCBsZW5ndGgsIGludCAqIGZsYWdQdHIpOwpleHRlcm4gIkMiIGlu
dCBUY2xfU2VlayAoVGNsX0NoYW5uZWwgY2hhbiwgaW50IG9mZnNldCwgaW50IG1vZGUpOwpleHRl
cm4gIkMiIGludCBUY2xfU2VydmljZUFsbCAodm9pZCk7CmV4dGVybiAiQyIgaW50IFRjbF9TZXJ2
aWNlRXZlbnQgKGludCBmbGFncyk7CmV4dGVybiAiQyIgdm9pZCBUY2xfU2V0QXNzb2NEYXRhIChU
Y2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogbmFtZSwgVGNsX0ludGVycERlbGV0ZVByb2MgKiBw
cm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwpleHRlcm4gIkMiIHZvaWQgVGNsX1NldENoYW5u
ZWxCdWZmZXJTaXplICggVGNsX0NoYW5uZWwgY2hhbiwgaW50IHN6KTsKZXh0ZXJuICJDIiBpbnQg
VGNsX1NldENoYW5uZWxPcHRpb24gKCBUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfQ2hhbm5lbCBj
aGFuLCBjaGFyICogb3B0aW9uTmFtZSwgY2hhciAqIG5ld1ZhbHVlKTsKZXh0ZXJuICJDIiBpbnQg
VGNsX1NldENvbW1hbmRJbmZvIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogY21kTmFtZSwg
VGNsX0NtZEluZm8gKiBpbmZvUHRyKTsKZXh0ZXJuICJDIiB2b2lkIFRjbF9TZXRFcnJubyAoaW50
IGVycik7CmV4dGVybiAiQyIgdm9pZCBUY2xfU2V0RXJyb3JDb2RlIChUY2xfSW50ZXJwICogaW50
ZXJwLCAuLi4pOwpleHRlcm4gIkMiIHZvaWQgVGNsX1NldE1heEJsb2NrVGltZSAoVGNsX1RpbWUg
KiB0aW1lUHRyKTsKZXh0ZXJuICJDIiB2b2lkIFRjbF9TZXRQYW5pY1Byb2MgKCBUY2xfUGFuaWNQ
cm9jICogcGFuaWNQcm9jKTsKZXh0ZXJuICJDIiBpbnQgVGNsX1NldFJlY3Vyc2lvbkxpbWl0ICgg
VGNsX0ludGVycCAqIGludGVycCwgaW50IGRlcHRoKTsKZXh0ZXJuICJDIiB2b2lkIFRjbF9TZXRS
ZXN1bHQgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzdHIsIFRjbF9GcmVlUHJvYyAqIGZy
ZWVQcm9jKTsKZXh0ZXJuICJDIiBpbnQgVGNsX1NldFNlcnZpY2VNb2RlIChpbnQgbW9kZSk7CmV4
dGVybiAiQyIgdm9pZCBUY2xfU2V0T2JqRXJyb3JDb2RlIChUY2xfSW50ZXJwICogaW50ZXJwLCBU
Y2xfT2JqICogZXJyb3JPYmpQdHIpOwpleHRlcm4gIkMiIHZvaWQgVGNsX1NldE9ialJlc3VsdCAo
VGNsX0ludGVycCAqIGludGVycCwgVGNsX09iaiAqIHJlc3VsdE9ialB0cik7CmV4dGVybiAiQyIg
dm9pZCBUY2xfU2V0U3RkQ2hhbm5lbCAoVGNsX0NoYW5uZWwgY2hhbm5lbCwgaW50IHR5cGUpOwpl
eHRlcm4gIkMiIGNoYXIgKiBUY2xfU2V0VmFyIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICog
dmFyTmFtZSwgY2hhciAqIG5ld1ZhbHVlLCBpbnQgZmxhZ3MpOwpleHRlcm4gIkMiIGNoYXIgKiBU
Y2xfU2V0VmFyMiAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHBhcnQxLCBjaGFyICogcGFy
dDIsIGNoYXIgKiBuZXdWYWx1ZSwgaW50IGZsYWdzKTsKZXh0ZXJuICJDIiBjaGFyICogVGNsX1Np
Z25hbElkIChpbnQgc2lnKTsKZXh0ZXJuICJDIiBjaGFyICogVGNsX1NpZ25hbE1zZyAoaW50IHNp
Zyk7CmV4dGVybiAiQyIgdm9pZCBUY2xfU291cmNlUkNGaWxlIChUY2xfSW50ZXJwICogaW50ZXJw
KTsKZXh0ZXJuICJDIiBpbnQgVGNsX1NwbGl0TGlzdCAoVGNsX0ludGVycCAqIGludGVycCwgY29u
c3QgY2hhciAqIGxpc3RTdHIsIGludCAqIGFyZ2NQdHIsIGNoYXIgKioqIGFyZ3ZQdHIpOwpleHRl
cm4gIkMiIHZvaWQgVGNsX1NwbGl0UGF0aCAoY29uc3QgY2hhciAqIHBhdGgsIGludCAqIGFyZ2NQ
dHIsIGNoYXIgKioqIGFyZ3ZQdHIpOwpleHRlcm4gIkMiIHZvaWQgVGNsX1N0YXRpY1BhY2thZ2Ug
KFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBwa2dOYW1lLCBUY2xfUGFja2FnZUluaXRQcm9j
ICogaW5pdFByb2MsIFRjbF9QYWNrYWdlSW5pdFByb2MgKiBzYWZlSW5pdFByb2MpOwpleHRlcm4g
IkMiIGludCBUY2xfU3RyaW5nTWF0Y2ggKGNvbnN0IGNoYXIgKiBzdHIsIGNvbnN0IGNoYXIgKiBw
YXR0ZXJuKTsKZXh0ZXJuICJDIiBpbnQgVGNsX1RlbGwgKFRjbF9DaGFubmVsIGNoYW4pOwpleHRl
cm4gIkMiIGludCBUY2xfVHJhY2VWYXIgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiB2YXJO
YW1lLCBpbnQgZmxhZ3MsIFRjbF9WYXJUcmFjZVByb2MgKiBwcm9jLCBDbGllbnREYXRhIGNsaWVu
dERhdGEpOwpleHRlcm4gIkMiIGludCBUY2xfVHJhY2VWYXIyIChUY2xfSW50ZXJwICogaW50ZXJw
LCBjaGFyICogcGFydDEsIGNoYXIgKiBwYXJ0MiwgaW50IGZsYWdzLCBUY2xfVmFyVHJhY2VQcm9j
ICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKZXh0ZXJuICJDIiBjaGFyICogVGNsX1Ry
YW5zbGF0ZUZpbGVOYW1lICggVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIG5hbWUsIFRjbF9E
U3RyaW5nICogYnVmZmVyUHRyKTsKZXh0ZXJuICJDIiBpbnQgVGNsX1VuZ2V0cyAoVGNsX0NoYW5u
ZWwgY2hhbiwgY2hhciAqIHN0ciwgaW50IGxlbiwgaW50IGF0SGVhZCk7CmV4dGVybiAiQyIgdm9p
ZCBUY2xfVW5saW5rVmFyIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogdmFyTmFtZSk7CmV4
dGVybiAiQyIgaW50IFRjbF9VbnJlZ2lzdGVyQ2hhbm5lbCAoIFRjbF9JbnRlcnAgKiBpbnRlcnAs
IFRjbF9DaGFubmVsIGNoYW4pOwpleHRlcm4gIkMiIGludCBUY2xfVW5zZXRWYXIgKFRjbF9JbnRl
cnAgKiBpbnRlcnAsIGNoYXIgKiB2YXJOYW1lLCBpbnQgZmxhZ3MpOwpleHRlcm4gIkMiIGludCBU
Y2xfVW5zZXRWYXIyIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogcGFydDEsIGNoYXIgKiBw
YXJ0MiwgaW50IGZsYWdzKTsKZXh0ZXJuICJDIiB2b2lkIFRjbF9VbnRyYWNlVmFyIChUY2xfSW50
ZXJwICogaW50ZXJwLCBjaGFyICogdmFyTmFtZSwgaW50IGZsYWdzLCBUY2xfVmFyVHJhY2VQcm9j
ICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKZXh0ZXJuICJDIiB2b2lkIFRjbF9VbnRy
YWNlVmFyMiAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHBhcnQxLCBjaGFyICogcGFydDIs
IGludCBmbGFncywgVGNsX1ZhclRyYWNlUHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0
YSk7CmV4dGVybiAiQyIgdm9pZCBUY2xfVXBkYXRlTGlua2VkVmFyIChUY2xfSW50ZXJwICogaW50
ZXJwLCBjaGFyICogdmFyTmFtZSk7CmV4dGVybiAiQyIgaW50IFRjbF9VcFZhciAoVGNsX0ludGVy
cCAqIGludGVycCwgY2hhciAqIGZyYW1lTmFtZSwgY2hhciAqIHZhck5hbWUsIGNoYXIgKiBsb2Nh
bE5hbWUsIGludCBmbGFncyk7CmV4dGVybiAiQyIgaW50IFRjbF9VcFZhcjIgKFRjbF9JbnRlcnAg
KiBpbnRlcnAsIGNoYXIgKiBmcmFtZU5hbWUsIGNoYXIgKiBwYXJ0MSwgY2hhciAqIHBhcnQyLCBj
aGFyICogbG9jYWxOYW1lLCBpbnQgZmxhZ3MpOwpleHRlcm4gIkMiIGludCBUY2xfVmFyRXZhbCAo
VGNsX0ludGVycCAqIGludGVycCwgLi4uKTsKZXh0ZXJuICJDIiBDbGllbnREYXRhIFRjbF9WYXJU
cmFjZUluZm8gKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiB2YXJOYW1lLCBpbnQgZmxhZ3Ms
IFRjbF9WYXJUcmFjZVByb2MgKiBwcm9jUHRyLCBDbGllbnREYXRhIHByZXZDbGllbnREYXRhKTsK
ZXh0ZXJuICJDIiBDbGllbnREYXRhIFRjbF9WYXJUcmFjZUluZm8yIChUY2xfSW50ZXJwICogaW50
ZXJwLCBjaGFyICogcGFydDEsIGNoYXIgKiBwYXJ0MiwgaW50IGZsYWdzLCBUY2xfVmFyVHJhY2VQ
cm9jICogcHJvY1B0ciwgQ2xpZW50RGF0YSBwcmV2Q2xpZW50RGF0YSk7CmV4dGVybiAiQyIgaW50
IFRjbF9Xcml0ZSAoVGNsX0NoYW5uZWwgY2hhbiwgY2hhciAqIHMsIGludCBzbGVuKTsKZXh0ZXJu
ICJDIiB2b2lkIFRjbF9Xcm9uZ051bUFyZ3MgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGludCBvYmpj
LCBUY2xfT2JqICpjb25zdCBvYmp2W10sIGNoYXIgKiBtZXNzYWdlKTsKZXh0ZXJuICJDIiBpbnQg
VGNsX0R1bXBBY3RpdmVNZW1vcnkgKGNoYXIgKiBmaWxlTmFtZSk7CmV4dGVybiAiQyIgdm9pZCBU
Y2xfVmFsaWRhdGVBbGxNZW1vcnkgKGNoYXIgKiBmaWxlLCBpbnQgbGluZSk7CmV4dGVybiAiQyIg
dm9pZCBUY2xfQXBwZW5kUmVzdWx0VkEgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIHZhX2xpc3QgYXJn
TGlzdCk7CmV4dGVybiAiQyIgdm9pZCBUY2xfQXBwZW5kU3RyaW5nc1RvT2JqVkEgKCBUY2xfT2Jq
ICogb2JqUHRyLCB2YV9saXN0IGFyZ0xpc3QpOwpleHRlcm4gIkMiIGNoYXIgKiBUY2xfSGFzaFN0
YXRzIChUY2xfSGFzaFRhYmxlICogdGFibGVQdHIpOwpleHRlcm4gIkMiIGNoYXIgKiBUY2xfUGFy
c2VWYXIgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzdHIsIGNoYXIgKiogdGVybVB0cik7
CmV4dGVybiAiQyIgY2hhciAqIFRjbF9Qa2dQcmVzZW50IChUY2xfSW50ZXJwICogaW50ZXJwLCBj
aGFyICogbmFtZSwgY2hhciAqIHZlcnNpb24sIGludCBleGFjdCk7CmV4dGVybiAiQyIgY2hhciAq
IFRjbF9Qa2dQcmVzZW50RXggKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBuYW1lLCBjaGFy
ICogdmVyc2lvbiwgaW50IGV4YWN0LCBDbGllbnREYXRhICogY2xpZW50RGF0YVB0cik7CmV4dGVy
biAiQyIgaW50IFRjbF9Qa2dQcm92aWRlIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogbmFt
ZSwgY2hhciAqIHZlcnNpb24pOwpleHRlcm4gIkMiIGNoYXIgKiBUY2xfUGtnUmVxdWlyZSAoVGNs
X0ludGVycCAqIGludGVycCwgY2hhciAqIG5hbWUsIGNoYXIgKiB2ZXJzaW9uLCBpbnQgZXhhY3Qp
OwpleHRlcm4gIkMiIHZvaWQgVGNsX1NldEVycm9yQ29kZVZBIChUY2xfSW50ZXJwICogaW50ZXJw
LCB2YV9saXN0IGFyZ0xpc3QpOwpleHRlcm4gIkMiIGludCBUY2xfVmFyRXZhbFZBIChUY2xfSW50
ZXJwICogaW50ZXJwLCB2YV9saXN0IGFyZ0xpc3QpOwpleHRlcm4gIkMiIFRjbF9QaWQgVGNsX1dh
aXRQaWQgKFRjbF9QaWQgcGlkLCBpbnQgKiBzdGF0UHRyLCBpbnQgb3B0aW9ucyk7CmV4dGVybiAi
QyIgdm9pZCBUY2xfUGFuaWNWQSAoY2hhciAqIGZvcm1hdCwgdmFfbGlzdCBhcmdMaXN0KTsKZXh0
ZXJuICJDIiB2b2lkIFRjbF9HZXRWZXJzaW9uIChpbnQgKiBtYWpvciwgaW50ICogbWlub3IsIGlu
dCAqIHBhdGNoTGV2ZWwsIGludCAqIHR5cGUpOwpleHRlcm4gIkMiIHZvaWQgVGNsX0luaXRNZW1v
cnkgKFRjbF9JbnRlcnAgKiBpbnRlcnApOwpleHRlcm4gIkMiIFRjbF9DaGFubmVsIFRjbF9TdGFj
a0NoYW5uZWwgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9DaGFubmVsVHlwZSAqIHR5cGVQdHIs
IENsaWVudERhdGEgaW5zdGFuY2VEYXRhLCBpbnQgbWFzaywgVGNsX0NoYW5uZWwgcHJldkNoYW4p
OwpleHRlcm4gIkMiIGludCBUY2xfVW5zdGFja0NoYW5uZWwgKFRjbF9JbnRlcnAgKiBpbnRlcnAs
IFRjbF9DaGFubmVsIGNoYW4pOwpleHRlcm4gIkMiIFRjbF9DaGFubmVsIFRjbF9HZXRTdGFja2Vk
Q2hhbm5lbCAoVGNsX0NoYW5uZWwgY2hhbik7CmV4dGVybiAiQyIgdm9pZCBUY2xfQXBwZW5kT2Jq
VG9PYmogKFRjbF9PYmogKiBvYmpQdHIsIFRjbF9PYmogKiBhcHBlbmRPYmpQdHIpOwpleHRlcm4g
IkMiIFRjbF9FbmNvZGluZyBUY2xfQ3JlYXRlRW5jb2RpbmcgKCBUY2xfRW5jb2RpbmdUeXBlICog
dHlwZVB0cik7CmV4dGVybiAiQyIgdm9pZCBUY2xfQ3JlYXRlVGhyZWFkRXhpdEhhbmRsZXIgKCBU
Y2xfRXhpdFByb2MgKiBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwpleHRlcm4gIkMiIHZv
aWQgVGNsX0RlbGV0ZVRocmVhZEV4aXRIYW5kbGVyICggVGNsX0V4aXRQcm9jICogcHJvYywgQ2xp
ZW50RGF0YSBjbGllbnREYXRhKTsKZXh0ZXJuICJDIiB2b2lkIFRjbF9EaXNjYXJkUmVzdWx0ICgg
VGNsX1NhdmVkUmVzdWx0ICogc3RhdGVQdHIpOwpleHRlcm4gIkMiIGludCBUY2xfRXZhbEV4IChU
Y2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogc2NyaXB0LCBpbnQgbnVtQnl0ZXMsIGludCBmbGFn
cyk7CmV4dGVybiAiQyIgaW50IFRjbF9FdmFsT2JqdiAoVGNsX0ludGVycCAqIGludGVycCwgaW50
IG9iamMsIFRjbF9PYmogKmNvbnN0IG9ianZbXSwgaW50IGZsYWdzKTsKZXh0ZXJuICJDIiBpbnQg
VGNsX0V2YWxPYmpFeCAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX09iaiAqIG9ialB0ciwgaW50
IGZsYWdzKTsKZXh0ZXJuICJDIiB2b2lkIFRjbF9FeGl0VGhyZWFkIChpbnQgc3RhdHVzKTsKZXh0
ZXJuICJDIiBpbnQgVGNsX0V4dGVybmFsVG9VdGYgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9F
bmNvZGluZyBlbmNvZGluZywgY29uc3QgY2hhciAqIHNyYywgaW50IHNyY0xlbiwgaW50IGZsYWdz
LCBUY2xfRW5jb2RpbmdTdGF0ZSAqIHN0YXRlUHRyLCBjaGFyICogZHN0LCBpbnQgZHN0TGVuLCBp
bnQgKiBzcmNSZWFkUHRyLCBpbnQgKiBkc3RXcm90ZVB0ciwgaW50ICogZHN0Q2hhcnNQdHIpOwpl
eHRlcm4gIkMiIGNoYXIgKiBUY2xfRXh0ZXJuYWxUb1V0ZkRTdHJpbmcgKCBUY2xfRW5jb2Rpbmcg
ZW5jb2RpbmcsIGNvbnN0IGNoYXIgKiBzcmMsIGludCBzcmNMZW4sIFRjbF9EU3RyaW5nICogZHNQ
dHIpOwpleHRlcm4gIkMiIHZvaWQgVGNsX0ZpbmFsaXplVGhyZWFkICh2b2lkKTsKZXh0ZXJuICJD
IiB2b2lkIFRjbF9GaW5hbGl6ZU5vdGlmaWVyICggQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKZXh0
ZXJuICJDIiB2b2lkIFRjbF9GcmVlRW5jb2RpbmcgKFRjbF9FbmNvZGluZyBlbmNvZGluZyk7CmV4
dGVybiAiQyIgVGNsX1RocmVhZElkIFRjbF9HZXRDdXJyZW50VGhyZWFkICh2b2lkKTsKZXh0ZXJu
ICJDIiBUY2xfRW5jb2RpbmcgVGNsX0dldEVuY29kaW5nIChUY2xfSW50ZXJwICogaW50ZXJwLCBj
b25zdCBjaGFyICogbmFtZSk7CmV4dGVybiAiQyIgY2hhciAqIFRjbF9HZXRFbmNvZGluZ05hbWUg
KCBUY2xfRW5jb2RpbmcgZW5jb2RpbmcpOwpleHRlcm4gIkMiIHZvaWQgVGNsX0dldEVuY29kaW5n
TmFtZXMgKCBUY2xfSW50ZXJwICogaW50ZXJwKTsKZXh0ZXJuICJDIiBpbnQgVGNsX0dldEluZGV4
RnJvbU9ialN0cnVjdCAoIFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBvYmpQdHIsIGNo
YXIgKiogdGFibGVQdHIsIGludCBvZmZzZXQsIGNoYXIgKiBtc2csIGludCBmbGFncywgaW50ICog
aW5kZXhQdHIpOwpleHRlcm4gIkMiIHZvaWQgKiBUY2xfR2V0VGhyZWFkRGF0YSAoIFRjbF9UaHJl
YWREYXRhS2V5ICoga2V5UHRyLCBpbnQgc2l6ZSk7CmV4dGVybiAiQyIgVGNsX09iaiAqIFRjbF9H
ZXRWYXIyRXggKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBwYXJ0MSwgY2hhciAqIHBhcnQy
LCBpbnQgZmxhZ3MpOwpleHRlcm4gIkMiIENsaWVudERhdGEgVGNsX0luaXROb3RpZmllciAodm9p
ZCk7CmV4dGVybiAiQyIgdm9pZCBUY2xfTXV0ZXhMb2NrIChUY2xfTXV0ZXggKiBtdXRleFB0cik7
CmV4dGVybiAiQyIgdm9pZCBUY2xfTXV0ZXhVbmxvY2sgKFRjbF9NdXRleCAqIG11dGV4UHRyKTsK
ZXh0ZXJuICJDIiB2b2lkIFRjbF9Db25kaXRpb25Ob3RpZnkgKCBUY2xfQ29uZGl0aW9uICogY29u
ZFB0cik7CmV4dGVybiAiQyIgdm9pZCBUY2xfQ29uZGl0aW9uV2FpdCAoIFRjbF9Db25kaXRpb24g
KiBjb25kUHRyLCBUY2xfTXV0ZXggKiBtdXRleFB0ciwgVGNsX1RpbWUgKiB0aW1lUHRyKTsKZXh0
ZXJuICJDIiBpbnQgVGNsX051bVV0ZkNoYXJzIChjb25zdCBjaGFyICogc3JjLCBpbnQgbGVuKTsK
ZXh0ZXJuICJDIiBpbnQgVGNsX1JlYWRDaGFycyAoVGNsX0NoYW5uZWwgY2hhbm5lbCwgVGNsX09i
aiAqIG9ialB0ciwgaW50IGNoYXJzVG9SZWFkLCBpbnQgYXBwZW5kRmxhZyk7CmV4dGVybiAiQyIg
dm9pZCBUY2xfUmVzdG9yZVJlc3VsdCAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX1NhdmVkUmVz
dWx0ICogc3RhdGVQdHIpOwpleHRlcm4gIkMiIHZvaWQgVGNsX1NhdmVSZXN1bHQgKFRjbF9JbnRl
cnAgKiBpbnRlcnAsIFRjbF9TYXZlZFJlc3VsdCAqIHN0YXRlUHRyKTsKZXh0ZXJuICJDIiBpbnQg
VGNsX1NldFN5c3RlbUVuY29kaW5nICggVGNsX0ludGVycCAqIGludGVycCwgY29uc3QgY2hhciAq
IG5hbWUpOwpleHRlcm4gIkMiIFRjbF9PYmogKiBUY2xfU2V0VmFyMkV4IChUY2xfSW50ZXJwICog
aW50ZXJwLCBjaGFyICogcGFydDEsIGNoYXIgKiBwYXJ0MiwgVGNsX09iaiAqIG5ld1ZhbHVlUHRy
LCBpbnQgZmxhZ3MpOwpleHRlcm4gIkMiIHZvaWQgVGNsX1RocmVhZEFsZXJ0IChUY2xfVGhyZWFk
SWQgdGhyZWFkSWQpOwpleHRlcm4gIkMiIHZvaWQgVGNsX1RocmVhZFF1ZXVlRXZlbnQgKCBUY2xf
VGhyZWFkSWQgdGhyZWFkSWQsIFRjbF9FdmVudCogZXZQdHIsIFRjbF9RdWV1ZVBvc2l0aW9uIHBv
c2l0aW9uKTsKZXh0ZXJuICJDIiBUY2xfVW5pQ2hhciBUY2xfVW5pQ2hhckF0SW5kZXggKGNvbnN0
IGNoYXIgKiBzcmMsIGludCBpbmRleCk7CmV4dGVybiAiQyIgVGNsX1VuaUNoYXIgVGNsX1VuaUNo
YXJUb0xvd2VyIChpbnQgY2gpOwpleHRlcm4gIkMiIFRjbF9VbmlDaGFyIFRjbF9VbmlDaGFyVG9U
aXRsZSAoaW50IGNoKTsKZXh0ZXJuICJDIiBUY2xfVW5pQ2hhciBUY2xfVW5pQ2hhclRvVXBwZXIg
KGludCBjaCk7CmV4dGVybiAiQyIgaW50IFRjbF9VbmlDaGFyVG9VdGYgKGludCBjaCwgY2hhciAq
IGJ1Zik7CmV4dGVybiAiQyIgY2hhciAqIFRjbF9VdGZBdEluZGV4IChjb25zdCBjaGFyICogc3Jj
LCBpbnQgaW5kZXgpOwpleHRlcm4gIkMiIGludCBUY2xfVXRmQ2hhckNvbXBsZXRlIChjb25zdCBj
aGFyICogc3JjLCBpbnQgbGVuKTsKZXh0ZXJuICJDIiBpbnQgVGNsX1V0ZkJhY2tzbGFzaCAoY29u
c3QgY2hhciAqIHNyYywgaW50ICogcmVhZFB0ciwgY2hhciAqIGRzdCk7CmV4dGVybiAiQyIgY2hh
ciAqIFRjbF9VdGZGaW5kRmlyc3QgKGNvbnN0IGNoYXIgKiBzcmMsIGludCBjaCk7CmV4dGVybiAi
QyIgY2hhciAqIFRjbF9VdGZGaW5kTGFzdCAoY29uc3QgY2hhciAqIHNyYywgaW50IGNoKTsKZXh0
ZXJuICJDIiBjaGFyICogVGNsX1V0Zk5leHQgKGNvbnN0IGNoYXIgKiBzcmMpOwpleHRlcm4gIkMi
IGNoYXIgKiBUY2xfVXRmUHJldiAoY29uc3QgY2hhciAqIHNyYywgY29uc3QgY2hhciAqIHN0YXJ0
KTsKZXh0ZXJuICJDIiBpbnQgVGNsX1V0ZlRvRXh0ZXJuYWwgKFRjbF9JbnRlcnAgKiBpbnRlcnAs
IFRjbF9FbmNvZGluZyBlbmNvZGluZywgY29uc3QgY2hhciAqIHNyYywgaW50IHNyY0xlbiwgaW50
IGZsYWdzLCBUY2xfRW5jb2RpbmdTdGF0ZSAqIHN0YXRlUHRyLCBjaGFyICogZHN0LCBpbnQgZHN0
TGVuLCBpbnQgKiBzcmNSZWFkUHRyLCBpbnQgKiBkc3RXcm90ZVB0ciwgaW50ICogZHN0Q2hhcnNQ
dHIpOwpleHRlcm4gIkMiIGNoYXIgKiBUY2xfVXRmVG9FeHRlcm5hbERTdHJpbmcgKCBUY2xfRW5j
b2RpbmcgZW5jb2RpbmcsIGNvbnN0IGNoYXIgKiBzcmMsIGludCBzcmNMZW4sIFRjbF9EU3RyaW5n
ICogZHNQdHIpOwpleHRlcm4gIkMiIGludCBUY2xfVXRmVG9Mb3dlciAoY2hhciAqIHNyYyk7CmV4
dGVybiAiQyIgaW50IFRjbF9VdGZUb1RpdGxlIChjaGFyICogc3JjKTsKZXh0ZXJuICJDIiBpbnQg
VGNsX1V0ZlRvVW5pQ2hhciAoY29uc3QgY2hhciAqIHNyYywgVGNsX1VuaUNoYXIgKiBjaFB0cik7
CmV4dGVybiAiQyIgaW50IFRjbF9VdGZUb1VwcGVyIChjaGFyICogc3JjKTsKZXh0ZXJuICJDIiBp
bnQgVGNsX1dyaXRlQ2hhcnMgKFRjbF9DaGFubmVsIGNoYW4sIGNvbnN0IGNoYXIgKiBzcmMsIGlu
dCBzcmNMZW4pOwpleHRlcm4gIkMiIGludCBUY2xfV3JpdGVPYmogKFRjbF9DaGFubmVsIGNoYW4s
IFRjbF9PYmogKiBvYmpQdHIpOwpleHRlcm4gIkMiIGNoYXIgKiBUY2xfR2V0U3RyaW5nIChUY2xf
T2JqICogb2JqUHRyKTsKZXh0ZXJuICJDIiBjaGFyICogVGNsX0dldERlZmF1bHRFbmNvZGluZ0Rp
ciAodm9pZCk7CmV4dGVybiAiQyIgdm9pZCBUY2xfU2V0RGVmYXVsdEVuY29kaW5nRGlyIChjaGFy
ICogcGF0aCk7CmV4dGVybiAiQyIgdm9pZCBUY2xfQWxlcnROb3RpZmllciAoQ2xpZW50RGF0YSBj
bGllbnREYXRhKTsKZXh0ZXJuICJDIiB2b2lkIFRjbF9TZXJ2aWNlTW9kZUhvb2sgKGludCBtb2Rl
KTsKZXh0ZXJuICJDIiBpbnQgVGNsX1VuaUNoYXJJc0FsbnVtIChpbnQgY2gpOwpleHRlcm4gIkMi
IGludCBUY2xfVW5pQ2hhcklzQWxwaGEgKGludCBjaCk7CmV4dGVybiAiQyIgaW50IFRjbF9VbmlD
aGFySXNEaWdpdCAoaW50IGNoKTsKZXh0ZXJuICJDIiBpbnQgVGNsX1VuaUNoYXJJc0xvd2VyIChp
bnQgY2gpOwpleHRlcm4gIkMiIGludCBUY2xfVW5pQ2hhcklzU3BhY2UgKGludCBjaCk7CmV4dGVy
biAiQyIgaW50IFRjbF9VbmlDaGFySXNVcHBlciAoaW50IGNoKTsKZXh0ZXJuICJDIiBpbnQgVGNs
X1VuaUNoYXJJc1dvcmRDaGFyIChpbnQgY2gpOwpleHRlcm4gIkMiIGludCBUY2xfVW5pQ2hhckxl
biAoVGNsX1VuaUNoYXIgKiBzdHIpOwpleHRlcm4gIkMiIGludCBUY2xfVW5pQ2hhck5jbXAgKGNv
bnN0IFRjbF9VbmlDaGFyICogY3MsIGNvbnN0IFRjbF9VbmlDaGFyICogY3QsIHVuc2lnbmVkIGxv
bmcgbik7CmV4dGVybiAiQyIgY2hhciAqIFRjbF9VbmlDaGFyVG9VdGZEU3RyaW5nICggY29uc3Qg
VGNsX1VuaUNoYXIgKiBzdHJpbmcsIGludCBudW1DaGFycywgVGNsX0RTdHJpbmcgKiBkc1B0cik7
CmV4dGVybiAiQyIgVGNsX1VuaUNoYXIgKiBUY2xfVXRmVG9VbmlDaGFyRFN0cmluZyAoIGNvbnN0
IGNoYXIgKiBzdHJpbmcsIGludCBsZW5ndGgsIFRjbF9EU3RyaW5nICogZHNQdHIpOwpleHRlcm4g
IkMiIFRjbF9SZWdFeHAgVGNsX0dldFJlZ0V4cEZyb21PYmogKCBUY2xfSW50ZXJwICogaW50ZXJw
LCBUY2xfT2JqICogcGF0T2JqLCBpbnQgZmxhZ3MpOwpleHRlcm4gIkMiIFRjbF9PYmogKiBUY2xf
RXZhbFRva2VucyAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX1Rva2VuICogdG9rZW5QdHIsIGlu
dCBjb3VudCk7CmV4dGVybiAiQyIgdm9pZCBUY2xfRnJlZVBhcnNlIChUY2xfUGFyc2UgKiBwYXJz
ZVB0cik7CmV4dGVybiAiQyIgdm9pZCBUY2xfTG9nQ29tbWFuZEluZm8gKFRjbF9JbnRlcnAgKiBp
bnRlcnAsIGNoYXIgKiBzY3JpcHQsIGNoYXIgKiBjb21tYW5kLCBpbnQgbGVuZ3RoKTsKZXh0ZXJu
ICJDIiBpbnQgVGNsX1BhcnNlQnJhY2VzIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogc3Ry
aW5nLCBpbnQgbnVtQnl0ZXMsIFRjbF9QYXJzZSAqIHBhcnNlUHRyLCBpbnQgYXBwZW5kLCBjaGFy
ICoqIHRlcm1QdHIpOwpleHRlcm4gIkMiIGludCBUY2xfUGFyc2VDb21tYW5kIChUY2xfSW50ZXJw
ICogaW50ZXJwLCBjaGFyICogc3RyaW5nLCBpbnQgbnVtQnl0ZXMsIGludCBuZXN0ZWQsIFRjbF9Q
YXJzZSAqIHBhcnNlUHRyKTsKZXh0ZXJuICJDIiBpbnQgVGNsX1BhcnNlRXhwciAoVGNsX0ludGVy
cCAqIGludGVycCwgY2hhciAqIHN0cmluZywgaW50IG51bUJ5dGVzLCBUY2xfUGFyc2UgKiBwYXJz
ZVB0cik7CmV4dGVybiAiQyIgaW50IFRjbF9QYXJzZVF1b3RlZFN0cmluZyAoIFRjbF9JbnRlcnAg
KiBpbnRlcnAsIGNoYXIgKiBzdHJpbmcsIGludCBudW1CeXRlcywgVGNsX1BhcnNlICogcGFyc2VQ
dHIsIGludCBhcHBlbmQsIGNoYXIgKiogdGVybVB0cik7CmV4dGVybiAiQyIgaW50IFRjbF9QYXJz
ZVZhck5hbWUgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzdHJpbmcsIGludCBudW1CeXRl
cywgVGNsX1BhcnNlICogcGFyc2VQdHIsIGludCBhcHBlbmQpOwpleHRlcm4gIkMiIGNoYXIgKiBU
Y2xfR2V0Q3dkIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfRFN0cmluZyAqIGN3ZFB0cik7CmV4
dGVybiAiQyIgaW50IFRjbF9DaGRpciAoY29uc3QgY2hhciAqIGRpck5hbWUpOwpleHRlcm4gIkMi
IGludCBUY2xfQWNjZXNzIChjb25zdCBjaGFyICogcGF0aCwgaW50IG1vZGUpOwpleHRlcm4gIkMi
IGludCBUY2xfU3RhdCAoY29uc3QgY2hhciAqIHBhdGgsIHN0cnVjdCBzdGF0ICogYnVmUHRyKTsK
ZXh0ZXJuICJDIiBpbnQgVGNsX1V0Zk5jbXAgKGNvbnN0IGNoYXIgKiBzMSwgY29uc3QgY2hhciAq
IHMyLCB1bnNpZ25lZCBsb25nIG4pOwpleHRlcm4gIkMiIGludCBUY2xfVXRmTmNhc2VjbXAgKGNv
bnN0IGNoYXIgKiBzMSwgY29uc3QgY2hhciAqIHMyLCB1bnNpZ25lZCBsb25nIG4pOwpleHRlcm4g
IkMiIGludCBUY2xfU3RyaW5nQ2FzZU1hdGNoIChjb25zdCBjaGFyICogc3RyLCBjb25zdCBjaGFy
ICogcGF0dGVybiwgaW50IG5vY2FzZSk7CmV4dGVybiAiQyIgaW50IFRjbF9VbmlDaGFySXNDb250
cm9sIChpbnQgY2gpOwpleHRlcm4gIkMiIGludCBUY2xfVW5pQ2hhcklzR3JhcGggKGludCBjaCk7
CmV4dGVybiAiQyIgaW50IFRjbF9VbmlDaGFySXNQcmludCAoaW50IGNoKTsKZXh0ZXJuICJDIiBp
bnQgVGNsX1VuaUNoYXJJc1B1bmN0IChpbnQgY2gpOwpleHRlcm4gIkMiIGludCBUY2xfUmVnRXhw
RXhlY09iaiAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX1JlZ0V4cCByZWdleHAsIFRjbF9PYmog
KiBvYmpQdHIsIGludCBvZmZzZXQsIGludCBubWF0Y2hlcywgaW50IGZsYWdzKTsKZXh0ZXJuICJD
IiB2b2lkIFRjbF9SZWdFeHBHZXRJbmZvIChUY2xfUmVnRXhwIHJlZ2V4cCwgVGNsX1JlZ0V4cElu
Zm8gKiBpbmZvUHRyKTsKZXh0ZXJuICJDIiBUY2xfT2JqICogVGNsX05ld1VuaWNvZGVPYmogKFRj
bF9VbmlDaGFyICogdW5pY29kZSwgaW50IG51bUNoYXJzKTsKZXh0ZXJuICJDIiB2b2lkIFRjbF9T
ZXRVbmljb2RlT2JqIChUY2xfT2JqICogb2JqUHRyLCBUY2xfVW5pQ2hhciAqIHVuaWNvZGUsIGlu
dCBudW1DaGFycyk7CmV4dGVybiAiQyIgaW50IFRjbF9HZXRDaGFyTGVuZ3RoIChUY2xfT2JqICog
b2JqUHRyKTsKZXh0ZXJuICJDIiBUY2xfVW5pQ2hhciBUY2xfR2V0VW5pQ2hhciAoVGNsX09iaiAq
IG9ialB0ciwgaW50IGluZGV4KTsKZXh0ZXJuICJDIiBUY2xfVW5pQ2hhciAqIFRjbF9HZXRVbmlj
b2RlIChUY2xfT2JqICogb2JqUHRyKTsKZXh0ZXJuICJDIiBUY2xfT2JqICogVGNsX0dldFJhbmdl
IChUY2xfT2JqICogb2JqUHRyLCBpbnQgZmlyc3QsIGludCBsYXN0KTsKZXh0ZXJuICJDIiB2b2lk
IFRjbF9BcHBlbmRVbmljb2RlVG9PYmogKFRjbF9PYmogKiBvYmpQdHIsIFRjbF9VbmlDaGFyICog
dW5pY29kZSwgaW50IGxlbmd0aCk7CmV4dGVybiAiQyIgaW50IFRjbF9SZWdFeHBNYXRjaE9iaiAo
VGNsX0ludGVycCAqIGludGVycCwgVGNsX09iaiAqIHN0cmluZ09iaiwgVGNsX09iaiAqIHBhdHRl
cm5PYmopOwpleHRlcm4gIkMiIHZvaWQgVGNsX1NldE5vdGlmaWVyICggVGNsX05vdGlmaWVyUHJv
Y3MgKiBub3RpZmllclByb2NQdHIpOwpleHRlcm4gIkMiIFRjbF9NdXRleCAqIFRjbF9HZXRBbGxv
Y011dGV4ICh2b2lkKTsKZXh0ZXJuICJDIiBpbnQgVGNsX0dldENoYW5uZWxOYW1lcyAoVGNsX0lu
dGVycCAqIGludGVycCk7CmV4dGVybiAiQyIgaW50IFRjbF9HZXRDaGFubmVsTmFtZXNFeCAoIFRj
bF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBwYXR0ZXJuKTsKZXh0ZXJuICJDIiBpbnQgVGNsX1By
b2NPYmpDbWQgKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0ludGVycCAqIGludGVycCwgaW50
IG9iamMsIFRjbF9PYmogKmNvbnN0IG9ianZbXSk7CmV4dGVybiAiQyIgdm9pZCBUY2xfQ29uZGl0
aW9uRmluYWxpemUgKCBUY2xfQ29uZGl0aW9uICogY29uZFB0cik7CmV4dGVybiAiQyIgdm9pZCBU
Y2xfTXV0ZXhGaW5hbGl6ZSAoVGNsX011dGV4ICogbXV0ZXgpOwpleHRlcm4gIkMiIGludCBUY2xf
Q3JlYXRlVGhyZWFkIChUY2xfVGhyZWFkSWQgKiBpZFB0ciwgVGNsX1RocmVhZENyZWF0ZVByb2Mg
cHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhLCBpbnQgc3RhY2tTaXplLCBpbnQgZmxhZ3MpOwpl
eHRlcm4gIkMiIGludCBUY2xfUmVhZFJhdyAoVGNsX0NoYW5uZWwgY2hhbiwgY2hhciAqIGRzdCwg
aW50IGJ5dGVzVG9SZWFkKTsKZXh0ZXJuICJDIiBpbnQgVGNsX1dyaXRlUmF3IChUY2xfQ2hhbm5l
bCBjaGFuLCBjaGFyICogc3JjLCBpbnQgc3JjTGVuKTsKZXh0ZXJuICJDIiBUY2xfQ2hhbm5lbCBU
Y2xfR2V0VG9wQ2hhbm5lbCAoVGNsX0NoYW5uZWwgY2hhbik7CmV4dGVybiAiQyIgaW50IFRjbF9D
aGFubmVsQnVmZmVyZWQgKFRjbF9DaGFubmVsIGNoYW4pOwpleHRlcm4gIkMiIGNoYXIgKiBUY2xf
Q2hhbm5lbE5hbWUgKCBUY2xfQ2hhbm5lbFR5cGUgKiBjaGFuVHlwZVB0cik7CmV4dGVybiAiQyIg
VGNsX0NoYW5uZWxUeXBlVmVyc2lvbiBUY2xfQ2hhbm5lbFZlcnNpb24gKCBUY2xfQ2hhbm5lbFR5
cGUgKiBjaGFuVHlwZVB0cik7CmV4dGVybiAiQyIgVGNsX0RyaXZlckJsb2NrTW9kZVByb2MgKiBU
Y2xfQ2hhbm5lbEJsb2NrTW9kZVByb2MgKCBUY2xfQ2hhbm5lbFR5cGUgKiBjaGFuVHlwZVB0cik7
CmV4dGVybiAiQyIgVGNsX0RyaXZlckNsb3NlUHJvYyAqIFRjbF9DaGFubmVsQ2xvc2VQcm9jICgg
VGNsX0NoYW5uZWxUeXBlICogY2hhblR5cGVQdHIpOwpleHRlcm4gIkMiIFRjbF9Ecml2ZXJDbG9z
ZTJQcm9jICogVGNsX0NoYW5uZWxDbG9zZTJQcm9jICggVGNsX0NoYW5uZWxUeXBlICogY2hhblR5
cGVQdHIpOwpleHRlcm4gIkMiIFRjbF9Ecml2ZXJJbnB1dFByb2MgKiBUY2xfQ2hhbm5lbElucHV0
UHJvYyAoIFRjbF9DaGFubmVsVHlwZSAqIGNoYW5UeXBlUHRyKTsKZXh0ZXJuICJDIiBUY2xfRHJp
dmVyT3V0cHV0UHJvYyAqIFRjbF9DaGFubmVsT3V0cHV0UHJvYyAoIFRjbF9DaGFubmVsVHlwZSAq
IGNoYW5UeXBlUHRyKTsKZXh0ZXJuICJDIiBUY2xfRHJpdmVyU2Vla1Byb2MgKiBUY2xfQ2hhbm5l
bFNlZWtQcm9jICggVGNsX0NoYW5uZWxUeXBlICogY2hhblR5cGVQdHIpOwpleHRlcm4gIkMiIFRj
bF9Ecml2ZXJTZXRPcHRpb25Qcm9jICogVGNsX0NoYW5uZWxTZXRPcHRpb25Qcm9jICggVGNsX0No
YW5uZWxUeXBlICogY2hhblR5cGVQdHIpOwpleHRlcm4gIkMiIFRjbF9Ecml2ZXJHZXRPcHRpb25Q
cm9jICogVGNsX0NoYW5uZWxHZXRPcHRpb25Qcm9jICggVGNsX0NoYW5uZWxUeXBlICogY2hhblR5
cGVQdHIpOwpleHRlcm4gIkMiIFRjbF9Ecml2ZXJXYXRjaFByb2MgKiBUY2xfQ2hhbm5lbFdhdGNo
UHJvYyAoIFRjbF9DaGFubmVsVHlwZSAqIGNoYW5UeXBlUHRyKTsKZXh0ZXJuICJDIiBUY2xfRHJp
dmVyR2V0SGFuZGxlUHJvYyAqIFRjbF9DaGFubmVsR2V0SGFuZGxlUHJvYyAoIFRjbF9DaGFubmVs
VHlwZSAqIGNoYW5UeXBlUHRyKTsKZXh0ZXJuICJDIiBUY2xfRHJpdmVyRmx1c2hQcm9jICogVGNs
X0NoYW5uZWxGbHVzaFByb2MgKCBUY2xfQ2hhbm5lbFR5cGUgKiBjaGFuVHlwZVB0cik7CmV4dGVy
biAiQyIgVGNsX0RyaXZlckhhbmRsZXJQcm9jICogVGNsX0NoYW5uZWxIYW5kbGVyUHJvYyAoIFRj
bF9DaGFubmVsVHlwZSAqIGNoYW5UeXBlUHRyKTsKdHlwZWRlZiBzdHJ1Y3QgVGNsU3R1Ykhvb2tz
IHsKICAgIHN0cnVjdCBUY2xQbGF0U3R1YnMgKnRjbFBsYXRTdHViczsKICAgIHN0cnVjdCBUY2xJ
bnRTdHVicyAqdGNsSW50U3R1YnM7CiAgICBzdHJ1Y3QgVGNsSW50UGxhdFN0dWJzICp0Y2xJbnRQ
bGF0U3R1YnM7Cn0gVGNsU3R1Ykhvb2tzOwp0eXBlZGVmIHN0cnVjdCBUY2xTdHVicyB7CiAgICBp
bnQgbWFnaWM7CiAgICBzdHJ1Y3QgVGNsU3R1Ykhvb2tzICpob29rczsKICAgIGludCAoKnRjbF9Q
a2dQcm92aWRlRXgpIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogbmFtZSwgY2hhciAqIHZl
cnNpb24sIENsaWVudERhdGEgY2xpZW50RGF0YSk7CiAgICBjaGFyICogKCp0Y2xfUGtnUmVxdWly
ZUV4KSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIG5hbWUsIGNoYXIgKiB2ZXJzaW9uLCBp
bnQgZXhhY3QsIENsaWVudERhdGEgKiBjbGllbnREYXRhUHRyKTsKICAgIHZvaWQgKCp0Y2xfUGFu
aWMpIChjaGFyICogZm9ybWF0LCAuLi4pOwogICAgY2hhciAqICgqdGNsX0FsbG9jKSAodW5zaWdu
ZWQgaW50IHNpemUpOwogICAgdm9pZCAoKnRjbF9GcmVlKSAoY2hhciAqIHB0cik7CiAgICBjaGFy
ICogKCp0Y2xfUmVhbGxvYykgKGNoYXIgKiBwdHIsIHVuc2lnbmVkIGludCBzaXplKTsKICAgIGNo
YXIgKiAoKnRjbF9EYkNrYWxsb2MpICh1bnNpZ25lZCBpbnQgc2l6ZSwgY2hhciAqIGZpbGUsIGlu
dCBsaW5lKTsKICAgIGludCAoKnRjbF9EYkNrZnJlZSkgKGNoYXIgKiBwdHIsIGNoYXIgKiBmaWxl
LCBpbnQgbGluZSk7CiAgICBjaGFyICogKCp0Y2xfRGJDa3JlYWxsb2MpIChjaGFyICogcHRyLCB1
bnNpZ25lZCBpbnQgc2l6ZSwgY2hhciAqIGZpbGUsIGludCBsaW5lKTsKICAgIHZvaWQgKCp0Y2xf
Q3JlYXRlRmlsZUhhbmRsZXIpIChpbnQgZmQsIGludCBtYXNrLCBUY2xfRmlsZVByb2MgKiBwcm9j
LCBDbGllbnREYXRhIGNsaWVudERhdGEpOwogICAgdm9pZCAoKnRjbF9EZWxldGVGaWxlSGFuZGxl
cikgKGludCBmZCk7CiAgICB2b2lkICgqdGNsX1NldFRpbWVyKSAoVGNsX1RpbWUgKiB0aW1lUHRy
KTsKICAgIHZvaWQgKCp0Y2xfU2xlZXApIChpbnQgbXMpOwogICAgaW50ICgqdGNsX1dhaXRGb3JF
dmVudCkgKFRjbF9UaW1lICogdGltZVB0cik7CiAgICBpbnQgKCp0Y2xfQXBwZW5kQWxsT2JqVHlw
ZXMpIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogb2JqUHRyKTsKICAgIHZvaWQgKCp0
Y2xfQXBwZW5kU3RyaW5nc1RvT2JqKSAoVGNsX09iaiAqIG9ialB0ciwgLi4uKTsKICAgIHZvaWQg
KCp0Y2xfQXBwZW5kVG9PYmopIChUY2xfT2JqICogb2JqUHRyLCBjaGFyICogYnl0ZXMsIGludCBs
ZW5ndGgpOwogICAgVGNsX09iaiAqICgqdGNsX0NvbmNhdE9iaikgKGludCBvYmpjLCBUY2xfT2Jq
ICpjb25zdCBvYmp2W10pOwogICAgaW50ICgqdGNsX0NvbnZlcnRUb1R5cGUpIChUY2xfSW50ZXJw
ICogaW50ZXJwLCBUY2xfT2JqICogb2JqUHRyLCBUY2xfT2JqVHlwZSAqIHR5cGVQdHIpOwogICAg
dm9pZCAoKnRjbF9EYkRlY3JSZWZDb3VudCkgKFRjbF9PYmogKiBvYmpQdHIsIGNoYXIgKiBmaWxl
LCBpbnQgbGluZSk7CiAgICB2b2lkICgqdGNsX0RiSW5jclJlZkNvdW50KSAoVGNsX09iaiAqIG9i
alB0ciwgY2hhciAqIGZpbGUsIGludCBsaW5lKTsKICAgIGludCAoKnRjbF9EYklzU2hhcmVkKSAo
VGNsX09iaiAqIG9ialB0ciwgY2hhciAqIGZpbGUsIGludCBsaW5lKTsKICAgIFRjbF9PYmogKiAo
KnRjbF9EYk5ld0Jvb2xlYW5PYmopIChpbnQgYm9vbFZhbHVlLCBjaGFyICogZmlsZSwgaW50IGxp
bmUpOwogICAgVGNsX09iaiAqICgqdGNsX0RiTmV3Qnl0ZUFycmF5T2JqKSAodW5zaWduZWQgY2hh
ciAqIGJ5dGVzLCBpbnQgbGVuZ3RoLCBjaGFyICogZmlsZSwgaW50IGxpbmUpOwogICAgVGNsX09i
aiAqICgqdGNsX0RiTmV3RG91YmxlT2JqKSAoZG91YmxlIGRvdWJsZVZhbHVlLCBjaGFyICogZmls
ZSwgaW50IGxpbmUpOwogICAgVGNsX09iaiAqICgqdGNsX0RiTmV3TGlzdE9iaikgKGludCBvYmpj
LCBUY2xfT2JqICpjb25zdCBvYmp2W10sIGNoYXIgKiBmaWxlLCBpbnQgbGluZSk7CiAgICBUY2xf
T2JqICogKCp0Y2xfRGJOZXdMb25nT2JqKSAobG9uZyBsb25nVmFsdWUsIGNoYXIgKiBmaWxlLCBp
bnQgbGluZSk7CiAgICBUY2xfT2JqICogKCp0Y2xfRGJOZXdPYmopIChjaGFyICogZmlsZSwgaW50
IGxpbmUpOwogICAgVGNsX09iaiAqICgqdGNsX0RiTmV3U3RyaW5nT2JqKSAoY29uc3QgY2hhciAq
IGJ5dGVzLCBpbnQgbGVuZ3RoLCBjaGFyICogZmlsZSwgaW50IGxpbmUpOwogICAgVGNsX09iaiAq
ICgqdGNsX0R1cGxpY2F0ZU9iaikgKFRjbF9PYmogKiBvYmpQdHIpOwogICAgdm9pZCAoKnRjbEZy
ZWVPYmopIChUY2xfT2JqICogb2JqUHRyKTsKICAgIGludCAoKnRjbF9HZXRCb29sZWFuKSAoVGNs
X0ludGVycCAqIGludGVycCwgY2hhciAqIHN0ciwgaW50ICogYm9vbFB0cik7CiAgICBpbnQgKCp0
Y2xfR2V0Qm9vbGVhbkZyb21PYmopIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogb2Jq
UHRyLCBpbnQgKiBib29sUHRyKTsKICAgIHVuc2lnbmVkIGNoYXIgKiAoKnRjbF9HZXRCeXRlQXJy
YXlGcm9tT2JqKSAoVGNsX09iaiAqIG9ialB0ciwgaW50ICogbGVuZ3RoUHRyKTsKICAgIGludCAo
KnRjbF9HZXREb3VibGUpIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogc3RyLCBkb3VibGUg
KiBkb3VibGVQdHIpOwogICAgaW50ICgqdGNsX0dldERvdWJsZUZyb21PYmopIChUY2xfSW50ZXJw
ICogaW50ZXJwLCBUY2xfT2JqICogb2JqUHRyLCBkb3VibGUgKiBkb3VibGVQdHIpOwogICAgaW50
ICgqdGNsX0dldEluZGV4RnJvbU9iaikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBv
YmpQdHIsIGNoYXIgKiogdGFibGVQdHIsIGNoYXIgKiBtc2csIGludCBmbGFncywgaW50ICogaW5k
ZXhQdHIpOwogICAgaW50ICgqdGNsX0dldEludCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIg
KiBzdHIsIGludCAqIGludFB0cik7CiAgICBpbnQgKCp0Y2xfR2V0SW50RnJvbU9iaikgKFRjbF9J
bnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBvYmpQdHIsIGludCAqIGludFB0cik7CiAgICBpbnQg
KCp0Y2xfR2V0TG9uZ0Zyb21PYmopIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogb2Jq
UHRyLCBsb25nICogbG9uZ1B0cik7CiAgICBUY2xfT2JqVHlwZSAqICgqdGNsX0dldE9ialR5cGUp
IChjaGFyICogdHlwZU5hbWUpOwogICAgY2hhciAqICgqdGNsX0dldFN0cmluZ0Zyb21PYmopIChU
Y2xfT2JqICogb2JqUHRyLCBpbnQgKiBsZW5ndGhQdHIpOwogICAgdm9pZCAoKnRjbF9JbnZhbGlk
YXRlU3RyaW5nUmVwKSAoVGNsX09iaiAqIG9ialB0cik7CiAgICBpbnQgKCp0Y2xfTGlzdE9iakFw
cGVuZExpc3QpIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogbGlzdFB0ciwgVGNsX09i
aiAqIGVsZW1MaXN0UHRyKTsKICAgIGludCAoKnRjbF9MaXN0T2JqQXBwZW5kRWxlbWVudCkgKFRj
bF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBsaXN0UHRyLCBUY2xfT2JqICogb2JqUHRyKTsK
ICAgIGludCAoKnRjbF9MaXN0T2JqR2V0RWxlbWVudHMpIChUY2xfSW50ZXJwICogaW50ZXJwLCBU
Y2xfT2JqICogbGlzdFB0ciwgaW50ICogb2JqY1B0ciwgVGNsX09iaiAqKiogb2JqdlB0cik7CiAg
ICBpbnQgKCp0Y2xfTGlzdE9iakluZGV4KSAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX09iaiAq
IGxpc3RQdHIsIGludCBpbmRleCwgVGNsX09iaiAqKiBvYmpQdHJQdHIpOwogICAgaW50ICgqdGNs
X0xpc3RPYmpMZW5ndGgpIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogbGlzdFB0ciwg
aW50ICogaW50UHRyKTsKICAgIGludCAoKnRjbF9MaXN0T2JqUmVwbGFjZSkgKFRjbF9JbnRlcnAg
KiBpbnRlcnAsIFRjbF9PYmogKiBsaXN0UHRyLCBpbnQgZmlyc3QsIGludCBjb3VudCwgaW50IG9i
amMsIFRjbF9PYmogKmNvbnN0IG9ianZbXSk7CiAgICBUY2xfT2JqICogKCp0Y2xfTmV3Qm9vbGVh
bk9iaikgKGludCBib29sVmFsdWUpOwogICAgVGNsX09iaiAqICgqdGNsX05ld0J5dGVBcnJheU9i
aikgKHVuc2lnbmVkIGNoYXIgKiBieXRlcywgaW50IGxlbmd0aCk7CiAgICBUY2xfT2JqICogKCp0
Y2xfTmV3RG91YmxlT2JqKSAoZG91YmxlIGRvdWJsZVZhbHVlKTsKICAgIFRjbF9PYmogKiAoKnRj
bF9OZXdJbnRPYmopIChpbnQgaW50VmFsdWUpOwogICAgVGNsX09iaiAqICgqdGNsX05ld0xpc3RP
YmopIChpbnQgb2JqYywgVGNsX09iaiAqY29uc3Qgb2JqdltdKTsKICAgIFRjbF9PYmogKiAoKnRj
bF9OZXdMb25nT2JqKSAobG9uZyBsb25nVmFsdWUpOwogICAgVGNsX09iaiAqICgqdGNsX05ld09i
aikgKHZvaWQpOwogICAgVGNsX09iaiAqICgqdGNsX05ld1N0cmluZ09iaikgKGNvbnN0IGNoYXIg
KiBieXRlcywgaW50IGxlbmd0aCk7CiAgICB2b2lkICgqdGNsX1NldEJvb2xlYW5PYmopIChUY2xf
T2JqICogb2JqUHRyLCBpbnQgYm9vbFZhbHVlKTsKICAgIHVuc2lnbmVkIGNoYXIgKiAoKnRjbF9T
ZXRCeXRlQXJyYXlMZW5ndGgpIChUY2xfT2JqICogb2JqUHRyLCBpbnQgbGVuZ3RoKTsKICAgIHZv
aWQgKCp0Y2xfU2V0Qnl0ZUFycmF5T2JqKSAoVGNsX09iaiAqIG9ialB0ciwgdW5zaWduZWQgY2hh
ciAqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgIHZvaWQgKCp0Y2xfU2V0RG91YmxlT2JqKSAoVGNs
X09iaiAqIG9ialB0ciwgZG91YmxlIGRvdWJsZVZhbHVlKTsKICAgIHZvaWQgKCp0Y2xfU2V0SW50
T2JqKSAoVGNsX09iaiAqIG9ialB0ciwgaW50IGludFZhbHVlKTsKICAgIHZvaWQgKCp0Y2xfU2V0
TGlzdE9iaikgKFRjbF9PYmogKiBvYmpQdHIsIGludCBvYmpjLCBUY2xfT2JqICpjb25zdCBvYmp2
W10pOwogICAgdm9pZCAoKnRjbF9TZXRMb25nT2JqKSAoVGNsX09iaiAqIG9ialB0ciwgbG9uZyBs
b25nVmFsdWUpOwogICAgdm9pZCAoKnRjbF9TZXRPYmpMZW5ndGgpIChUY2xfT2JqICogb2JqUHRy
LCBpbnQgbGVuZ3RoKTsKICAgIHZvaWQgKCp0Y2xfU2V0U3RyaW5nT2JqKSAoVGNsX09iaiAqIG9i
alB0ciwgY2hhciAqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgIHZvaWQgKCp0Y2xfQWRkRXJyb3JJ
bmZvKSAoVGNsX0ludGVycCAqIGludGVycCwgY29uc3QgY2hhciAqIG1lc3NhZ2UpOwogICAgdm9p
ZCAoKnRjbF9BZGRPYmpFcnJvckluZm8pIChUY2xfSW50ZXJwICogaW50ZXJwLCBjb25zdCBjaGFy
ICogbWVzc2FnZSwgaW50IGxlbmd0aCk7CiAgICB2b2lkICgqdGNsX0FsbG93RXhjZXB0aW9ucykg
KFRjbF9JbnRlcnAgKiBpbnRlcnApOwogICAgdm9pZCAoKnRjbF9BcHBlbmRFbGVtZW50KSAoVGNs
X0ludGVycCAqIGludGVycCwgY29uc3QgY2hhciAqIHN0cmluZyk7CiAgICB2b2lkICgqdGNsX0Fw
cGVuZFJlc3VsdCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIC4uLik7CiAgICBUY2xfQXN5bmNIYW5k
bGVyICgqdGNsX0FzeW5jQ3JlYXRlKSAoVGNsX0FzeW5jUHJvYyAqIHByb2MsIENsaWVudERhdGEg
Y2xpZW50RGF0YSk7CiAgICB2b2lkICgqdGNsX0FzeW5jRGVsZXRlKSAoVGNsX0FzeW5jSGFuZGxl
ciBhc3luYyk7CiAgICBpbnQgKCp0Y2xfQXN5bmNJbnZva2UpIChUY2xfSW50ZXJwICogaW50ZXJw
LCBpbnQgY29kZSk7CiAgICB2b2lkICgqdGNsX0FzeW5jTWFyaykgKFRjbF9Bc3luY0hhbmRsZXIg
YXN5bmMpOwogICAgaW50ICgqdGNsX0FzeW5jUmVhZHkpICh2b2lkKTsKICAgIHZvaWQgKCp0Y2xf
QmFja2dyb3VuZEVycm9yKSAoVGNsX0ludGVycCAqIGludGVycCk7CiAgICBjaGFyICgqdGNsX0Jh
Y2tzbGFzaCkgKGNvbnN0IGNoYXIgKiBzcmMsIGludCAqIHJlYWRQdHIpOwogICAgaW50ICgqdGNs
X0JhZENoYW5uZWxPcHRpb24pIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogb3B0aW9uTmFt
ZSwgY2hhciAqIG9wdGlvbkxpc3QpOwogICAgdm9pZCAoKnRjbF9DYWxsV2hlbkRlbGV0ZWQpIChU
Y2xfSW50ZXJwICogaW50ZXJwLCBUY2xfSW50ZXJwRGVsZXRlUHJvYyAqIHByb2MsIENsaWVudERh
dGEgY2xpZW50RGF0YSk7CiAgICB2b2lkICgqdGNsX0NhbmNlbElkbGVDYWxsKSAoVGNsX0lkbGVQ
cm9jICogaWRsZVByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CiAgICBpbnQgKCp0Y2xfQ2xv
c2UpIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfQ2hhbm5lbCBjaGFuKTsKICAgIGludCAoKnRj
bF9Db21tYW5kQ29tcGxldGUpIChjaGFyICogY21kKTsKICAgIGNoYXIgKiAoKnRjbF9Db25jYXQp
IChpbnQgYXJnYywgY2hhciAqKiBhcmd2KTsKICAgIGludCAoKnRjbF9Db252ZXJ0RWxlbWVudCkg
KGNvbnN0IGNoYXIgKiBzcmMsIGNoYXIgKiBkc3QsIGludCBmbGFncyk7CiAgICBpbnQgKCp0Y2xf
Q29udmVydENvdW50ZWRFbGVtZW50KSAoY29uc3QgY2hhciAqIHNyYywgaW50IGxlbmd0aCwgY2hh
ciAqIGRzdCwgaW50IGZsYWdzKTsKICAgIGludCAoKnRjbF9DcmVhdGVBbGlhcykgKFRjbF9JbnRl
cnAgKiBzbGF2ZSwgY2hhciAqIHNsYXZlQ21kLCBUY2xfSW50ZXJwICogdGFyZ2V0LCBjaGFyICog
dGFyZ2V0Q21kLCBpbnQgYXJnYywgY2hhciAqKiBhcmd2KTsKICAgIGludCAoKnRjbF9DcmVhdGVB
bGlhc09iaikgKFRjbF9JbnRlcnAgKiBzbGF2ZSwgY2hhciAqIHNsYXZlQ21kLCBUY2xfSW50ZXJw
ICogdGFyZ2V0LCBjaGFyICogdGFyZ2V0Q21kLCBpbnQgb2JqYywgVGNsX09iaiAqY29uc3Qgb2Jq
dltdKTsKICAgIFRjbF9DaGFubmVsICgqdGNsX0NyZWF0ZUNoYW5uZWwpIChUY2xfQ2hhbm5lbFR5
cGUgKiB0eXBlUHRyLCBjaGFyICogY2hhbk5hbWUsIENsaWVudERhdGEgaW5zdGFuY2VEYXRhLCBp
bnQgbWFzayk7CiAgICB2b2lkICgqdGNsX0NyZWF0ZUNoYW5uZWxIYW5kbGVyKSAoVGNsX0NoYW5u
ZWwgY2hhbiwgaW50IG1hc2ssIFRjbF9DaGFubmVsUHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xp
ZW50RGF0YSk7CiAgICB2b2lkICgqdGNsX0NyZWF0ZUNsb3NlSGFuZGxlcikgKFRjbF9DaGFubmVs
IGNoYW4sIFRjbF9DbG9zZVByb2MgKiBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwogICAg
VGNsX0NvbW1hbmQgKCp0Y2xfQ3JlYXRlQ29tbWFuZCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNo
YXIgKiBjbWROYW1lLCBUY2xfQ21kUHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSwg
VGNsX0NtZERlbGV0ZVByb2MgKiBkZWxldGVQcm9jKTsKICAgIHZvaWQgKCp0Y2xfQ3JlYXRlRXZl
bnRTb3VyY2UpIChUY2xfRXZlbnRTZXR1cFByb2MgKiBzZXR1cFByb2MsIFRjbF9FdmVudENoZWNr
UHJvYyAqIGNoZWNrUHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKICAgIHZvaWQgKCp0Y2xf
Q3JlYXRlRXhpdEhhbmRsZXIpIChUY2xfRXhpdFByb2MgKiBwcm9jLCBDbGllbnREYXRhIGNsaWVu
dERhdGEpOwogICAgVGNsX0ludGVycCAqICgqdGNsX0NyZWF0ZUludGVycCkgKHZvaWQpOwogICAg
dm9pZCAoKnRjbF9DcmVhdGVNYXRoRnVuYykgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBu
YW1lLCBpbnQgbnVtQXJncywgVGNsX1ZhbHVlVHlwZSAqIGFyZ1R5cGVzLCBUY2xfTWF0aFByb2Mg
KiBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwogICAgVGNsX0NvbW1hbmQgKCp0Y2xfQ3Jl
YXRlT2JqQ29tbWFuZCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBjbWROYW1lLCBUY2xf
T2JqQ21kUHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0NtZERlbGV0ZVBy
b2MgKiBkZWxldGVQcm9jKTsKICAgIFRjbF9JbnRlcnAgKiAoKnRjbF9DcmVhdGVTbGF2ZSkgKFRj
bF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzbGF2ZU5hbWUsIGludCBpc1NhZmUpOwogICAgVGNs
X1RpbWVyVG9rZW4gKCp0Y2xfQ3JlYXRlVGltZXJIYW5kbGVyKSAoaW50IG1pbGxpc2Vjb25kcywg
VGNsX1RpbWVyUHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CiAgICBUY2xfVHJh
Y2UgKCp0Y2xfQ3JlYXRlVHJhY2UpIChUY2xfSW50ZXJwICogaW50ZXJwLCBpbnQgbGV2ZWwsIFRj
bF9DbWRUcmFjZVByb2MgKiBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwogICAgdm9pZCAo
KnRjbF9EZWxldGVBc3NvY0RhdGEpIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogbmFtZSk7
CiAgICB2b2lkICgqdGNsX0RlbGV0ZUNoYW5uZWxIYW5kbGVyKSAoVGNsX0NoYW5uZWwgY2hhbiwg
VGNsX0NoYW5uZWxQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKICAgIHZvaWQg
KCp0Y2xfRGVsZXRlQ2xvc2VIYW5kbGVyKSAoVGNsX0NoYW5uZWwgY2hhbiwgVGNsX0Nsb3NlUHJv
YyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CiAgICBpbnQgKCp0Y2xfRGVsZXRlQ29t
bWFuZCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBjbWROYW1lKTsKICAgIGludCAoKnRj
bF9EZWxldGVDb21tYW5kRnJvbVRva2VuKSAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX0NvbW1h
bmQgY29tbWFuZCk7CiAgICB2b2lkICgqdGNsX0RlbGV0ZUV2ZW50cykgKFRjbF9FdmVudERlbGV0
ZVByb2MgKiBwcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwogICAgdm9pZCAoKnRjbF9EZWxl
dGVFdmVudFNvdXJjZSkgKFRjbF9FdmVudFNldHVwUHJvYyAqIHNldHVwUHJvYywgVGNsX0V2ZW50
Q2hlY2tQcm9jICogY2hlY2tQcm9jLCBDbGllbnREYXRhIGNsaWVudERhdGEpOwogICAgdm9pZCAo
KnRjbF9EZWxldGVFeGl0SGFuZGxlcikgKFRjbF9FeGl0UHJvYyAqIHByb2MsIENsaWVudERhdGEg
Y2xpZW50RGF0YSk7CiAgICB2b2lkICgqdGNsX0RlbGV0ZUhhc2hFbnRyeSkgKFRjbF9IYXNoRW50
cnkgKiBlbnRyeVB0cik7CiAgICB2b2lkICgqdGNsX0RlbGV0ZUhhc2hUYWJsZSkgKFRjbF9IYXNo
VGFibGUgKiB0YWJsZVB0cik7CiAgICB2b2lkICgqdGNsX0RlbGV0ZUludGVycCkgKFRjbF9JbnRl
cnAgKiBpbnRlcnApOwogICAgdm9pZCAoKnRjbF9EZXRhY2hQaWRzKSAoaW50IG51bVBpZHMsIFRj
bF9QaWQgKiBwaWRQdHIpOwogICAgdm9pZCAoKnRjbF9EZWxldGVUaW1lckhhbmRsZXIpIChUY2xf
VGltZXJUb2tlbiB0b2tlbik7CiAgICB2b2lkICgqdGNsX0RlbGV0ZVRyYWNlKSAoVGNsX0ludGVy
cCAqIGludGVycCwgVGNsX1RyYWNlIHRyYWNlKTsKICAgIHZvaWQgKCp0Y2xfRG9udENhbGxXaGVu
RGVsZXRlZCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9JbnRlcnBEZWxldGVQcm9jICogcHJv
YywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKICAgIGludCAoKnRjbF9Eb09uZUV2ZW50KSAoaW50
IGZsYWdzKTsKICAgIHZvaWQgKCp0Y2xfRG9XaGVuSWRsZSkgKFRjbF9JZGxlUHJvYyAqIHByb2Ms
IENsaWVudERhdGEgY2xpZW50RGF0YSk7CiAgICBjaGFyICogKCp0Y2xfRFN0cmluZ0FwcGVuZCkg
KFRjbF9EU3RyaW5nICogZHNQdHIsIGNvbnN0IGNoYXIgKiBzdHIsIGludCBsZW5ndGgpOwogICAg
Y2hhciAqICgqdGNsX0RTdHJpbmdBcHBlbmRFbGVtZW50KSAoVGNsX0RTdHJpbmcgKiBkc1B0ciwg
Y29uc3QgY2hhciAqIHN0cmluZyk7CiAgICB2b2lkICgqdGNsX0RTdHJpbmdFbmRTdWJsaXN0KSAo
VGNsX0RTdHJpbmcgKiBkc1B0cik7CiAgICB2b2lkICgqdGNsX0RTdHJpbmdGcmVlKSAoVGNsX0RT
dHJpbmcgKiBkc1B0cik7CiAgICB2b2lkICgqdGNsX0RTdHJpbmdHZXRSZXN1bHQpIChUY2xfSW50
ZXJwICogaW50ZXJwLCBUY2xfRFN0cmluZyAqIGRzUHRyKTsKICAgIHZvaWQgKCp0Y2xfRFN0cmlu
Z0luaXQpIChUY2xfRFN0cmluZyAqIGRzUHRyKTsKICAgIHZvaWQgKCp0Y2xfRFN0cmluZ1Jlc3Vs
dCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9EU3RyaW5nICogZHNQdHIpOwogICAgdm9pZCAo
KnRjbF9EU3RyaW5nU2V0TGVuZ3RoKSAoVGNsX0RTdHJpbmcgKiBkc1B0ciwgaW50IGxlbmd0aCk7
CiAgICB2b2lkICgqdGNsX0RTdHJpbmdTdGFydFN1Ymxpc3QpIChUY2xfRFN0cmluZyAqIGRzUHRy
KTsKICAgIGludCAoKnRjbF9Fb2YpIChUY2xfQ2hhbm5lbCBjaGFuKTsKICAgIGNoYXIgKiAoKnRj
bF9FcnJub0lkKSAodm9pZCk7CiAgICBjaGFyICogKCp0Y2xfRXJybm9Nc2cpIChpbnQgZXJyKTsK
ICAgIGludCAoKnRjbF9FdmFsKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHN0cmluZyk7
CiAgICBpbnQgKCp0Y2xfRXZhbEZpbGUpIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogZmls
ZU5hbWUpOwogICAgaW50ICgqdGNsX0V2YWxPYmopIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xf
T2JqICogb2JqUHRyKTsKICAgIHZvaWQgKCp0Y2xfRXZlbnR1YWxseUZyZWUpIChDbGllbnREYXRh
IGNsaWVudERhdGEsIFRjbF9GcmVlUHJvYyAqIGZyZWVQcm9jKTsKICAgIHZvaWQgKCp0Y2xfRXhp
dCkgKGludCBzdGF0dXMpOwogICAgaW50ICgqdGNsX0V4cG9zZUNvbW1hbmQpIChUY2xfSW50ZXJw
ICogaW50ZXJwLCBjaGFyICogaGlkZGVuQ21kVG9rZW4sIGNoYXIgKiBjbWROYW1lKTsKICAgIGlu
dCAoKnRjbF9FeHByQm9vbGVhbikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzdHIsIGlu
dCAqIHB0cik7CiAgICBpbnQgKCp0Y2xfRXhwckJvb2xlYW5PYmopIChUY2xfSW50ZXJwICogaW50
ZXJwLCBUY2xfT2JqICogb2JqUHRyLCBpbnQgKiBwdHIpOwogICAgaW50ICgqdGNsX0V4cHJEb3Vi
bGUpIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogc3RyLCBkb3VibGUgKiBwdHIpOwogICAg
aW50ICgqdGNsX0V4cHJEb3VibGVPYmopIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICog
b2JqUHRyLCBkb3VibGUgKiBwdHIpOwogICAgaW50ICgqdGNsX0V4cHJMb25nKSAoVGNsX0ludGVy
cCAqIGludGVycCwgY2hhciAqIHN0ciwgbG9uZyAqIHB0cik7CiAgICBpbnQgKCp0Y2xfRXhwckxv
bmdPYmopIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogb2JqUHRyLCBsb25nICogcHRy
KTsKICAgIGludCAoKnRjbF9FeHByT2JqKSAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX09iaiAq
IG9ialB0ciwgVGNsX09iaiAqKiByZXN1bHRQdHJQdHIpOwogICAgaW50ICgqdGNsX0V4cHJTdHJp
bmcpIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogc3RyaW5nKTsKICAgIHZvaWQgKCp0Y2xf
RmluYWxpemUpICh2b2lkKTsKICAgIHZvaWQgKCp0Y2xfRmluZEV4ZWN1dGFibGUpIChjb25zdCBj
aGFyICogYXJndjApOwogICAgVGNsX0hhc2hFbnRyeSAqICgqdGNsX0ZpcnN0SGFzaEVudHJ5KSAo
VGNsX0hhc2hUYWJsZSAqIHRhYmxlUHRyLCBUY2xfSGFzaFNlYXJjaCAqIHNlYXJjaFB0cik7CiAg
ICBpbnQgKCp0Y2xfRmx1c2gpIChUY2xfQ2hhbm5lbCBjaGFuKTsKICAgIHZvaWQgKCp0Y2xfRnJl
ZVJlc3VsdCkgKFRjbF9JbnRlcnAgKiBpbnRlcnApOwogICAgaW50ICgqdGNsX0dldEFsaWFzKSAo
VGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHNsYXZlQ21kLCBUY2xfSW50ZXJwICoqIHRhcmdl
dEludGVycFB0ciwgY2hhciAqKiB0YXJnZXRDbWRQdHIsIGludCAqIGFyZ2NQdHIsIGNoYXIgKioq
IGFyZ3ZQdHIpOwogICAgaW50ICgqdGNsX0dldEFsaWFzT2JqKSAoVGNsX0ludGVycCAqIGludGVy
cCwgY2hhciAqIHNsYXZlQ21kLCBUY2xfSW50ZXJwICoqIHRhcmdldEludGVycFB0ciwgY2hhciAq
KiB0YXJnZXRDbWRQdHIsIGludCAqIG9iamNQdHIsIFRjbF9PYmogKioqIG9ianYpOwogICAgQ2xp
ZW50RGF0YSAoKnRjbF9HZXRBc3NvY0RhdGEpIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICog
bmFtZSwgVGNsX0ludGVycERlbGV0ZVByb2MgKiogcHJvY1B0cik7CiAgICBUY2xfQ2hhbm5lbCAo
KnRjbF9HZXRDaGFubmVsKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIGNoYW5OYW1lLCBp
bnQgKiBtb2RlUHRyKTsKICAgIGludCAoKnRjbF9HZXRDaGFubmVsQnVmZmVyU2l6ZSkgKFRjbF9D
aGFubmVsIGNoYW4pOwogICAgaW50ICgqdGNsX0dldENoYW5uZWxIYW5kbGUpIChUY2xfQ2hhbm5l
bCBjaGFuLCBpbnQgZGlyZWN0aW9uLCBDbGllbnREYXRhICogaGFuZGxlUHRyKTsKICAgIENsaWVu
dERhdGEgKCp0Y2xfR2V0Q2hhbm5lbEluc3RhbmNlRGF0YSkgKFRjbF9DaGFubmVsIGNoYW4pOwog
ICAgaW50ICgqdGNsX0dldENoYW5uZWxNb2RlKSAoVGNsX0NoYW5uZWwgY2hhbik7CiAgICBjaGFy
ICogKCp0Y2xfR2V0Q2hhbm5lbE5hbWUpIChUY2xfQ2hhbm5lbCBjaGFuKTsKICAgIGludCAoKnRj
bF9HZXRDaGFubmVsT3B0aW9uKSAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX0NoYW5uZWwgY2hh
biwgY2hhciAqIG9wdGlvbk5hbWUsIFRjbF9EU3RyaW5nICogZHNQdHIpOwogICAgVGNsX0NoYW5u
ZWxUeXBlICogKCp0Y2xfR2V0Q2hhbm5lbFR5cGUpIChUY2xfQ2hhbm5lbCBjaGFuKTsKICAgIGlu
dCAoKnRjbF9HZXRDb21tYW5kSW5mbykgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBjbWRO
YW1lLCBUY2xfQ21kSW5mbyAqIGluZm9QdHIpOwogICAgY2hhciAqICgqdGNsX0dldENvbW1hbmRO
YW1lKSAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX0NvbW1hbmQgY29tbWFuZCk7CiAgICBpbnQg
KCp0Y2xfR2V0RXJybm8pICh2b2lkKTsKICAgIGNoYXIgKiAoKnRjbF9HZXRIb3N0TmFtZSkgKHZv
aWQpOwogICAgaW50ICgqdGNsX0dldEludGVycFBhdGgpIChUY2xfSW50ZXJwICogYXNrSW50ZXJw
LCBUY2xfSW50ZXJwICogc2xhdmVJbnRlcnApOwogICAgVGNsX0ludGVycCAqICgqdGNsX0dldE1h
c3RlcikgKFRjbF9JbnRlcnAgKiBpbnRlcnApOwogICAgY29uc3QgY2hhciAqICgqdGNsX0dldE5h
bWVPZkV4ZWN1dGFibGUpICh2b2lkKTsKICAgIFRjbF9PYmogKiAoKnRjbF9HZXRPYmpSZXN1bHQp
IChUY2xfSW50ZXJwICogaW50ZXJwKTsKICAgIGludCAoKnRjbF9HZXRPcGVuRmlsZSkgKFRjbF9J
bnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzdHIsIGludCBmb3JXcml0aW5nLCBpbnQgY2hlY2tVc2Fn
ZSwgQ2xpZW50RGF0YSAqIGZpbGVQdHIpOwogICAgVGNsX1BhdGhUeXBlICgqdGNsX0dldFBhdGhU
eXBlKSAoY2hhciAqIHBhdGgpOwogICAgaW50ICgqdGNsX0dldHMpIChUY2xfQ2hhbm5lbCBjaGFu
LCBUY2xfRFN0cmluZyAqIGRzUHRyKTsKICAgIGludCAoKnRjbF9HZXRzT2JqKSAoVGNsX0NoYW5u
ZWwgY2hhbiwgVGNsX09iaiAqIG9ialB0cik7CiAgICBpbnQgKCp0Y2xfR2V0U2VydmljZU1vZGUp
ICh2b2lkKTsKICAgIFRjbF9JbnRlcnAgKiAoKnRjbF9HZXRTbGF2ZSkgKFRjbF9JbnRlcnAgKiBp
bnRlcnAsIGNoYXIgKiBzbGF2ZU5hbWUpOwogICAgVGNsX0NoYW5uZWwgKCp0Y2xfR2V0U3RkQ2hh
bm5lbCkgKGludCB0eXBlKTsKICAgIGNoYXIgKiAoKnRjbF9HZXRTdHJpbmdSZXN1bHQpIChUY2xf
SW50ZXJwICogaW50ZXJwKTsKICAgIGNoYXIgKiAoKnRjbF9HZXRWYXIpIChUY2xfSW50ZXJwICog
aW50ZXJwLCBjaGFyICogdmFyTmFtZSwgaW50IGZsYWdzKTsKICAgIGNoYXIgKiAoKnRjbF9HZXRW
YXIyKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHBhcnQxLCBjaGFyICogcGFydDIsIGlu
dCBmbGFncyk7CiAgICBpbnQgKCp0Y2xfR2xvYmFsRXZhbCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAs
IGNoYXIgKiBjb21tYW5kKTsKICAgIGludCAoKnRjbF9HbG9iYWxFdmFsT2JqKSAoVGNsX0ludGVy
cCAqIGludGVycCwgVGNsX09iaiAqIG9ialB0cik7CiAgICBpbnQgKCp0Y2xfSGlkZUNvbW1hbmQp
IChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogY21kTmFtZSwgY2hhciAqIGhpZGRlbkNtZFRv
a2VuKTsKICAgIGludCAoKnRjbF9Jbml0KSAoVGNsX0ludGVycCAqIGludGVycCk7CiAgICB2b2lk
ICgqdGNsX0luaXRIYXNoVGFibGUpIChUY2xfSGFzaFRhYmxlICogdGFibGVQdHIsIGludCBrZXlU
eXBlKTsKICAgIGludCAoKnRjbF9JbnB1dEJsb2NrZWQpIChUY2xfQ2hhbm5lbCBjaGFuKTsKICAg
IGludCAoKnRjbF9JbnB1dEJ1ZmZlcmVkKSAoVGNsX0NoYW5uZWwgY2hhbik7CiAgICBpbnQgKCp0
Y2xfSW50ZXJwRGVsZXRlZCkgKFRjbF9JbnRlcnAgKiBpbnRlcnApOwogICAgaW50ICgqdGNsX0lz
U2FmZSkgKFRjbF9JbnRlcnAgKiBpbnRlcnApOwogICAgY2hhciAqICgqdGNsX0pvaW5QYXRoKSAo
aW50IGFyZ2MsIGNoYXIgKiogYXJndiwgVGNsX0RTdHJpbmcgKiByZXN1bHRQdHIpOwogICAgaW50
ICgqdGNsX0xpbmtWYXIpIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogdmFyTmFtZSwgY2hh
ciAqIGFkZHIsIGludCB0eXBlKTsKICAgIHZvaWQgKnJlc2VydmVkMTg4OwogICAgVGNsX0NoYW5u
ZWwgKCp0Y2xfTWFrZUZpbGVDaGFubmVsKSAoQ2xpZW50RGF0YSBoYW5kbGUsIGludCBtb2RlKTsK
ICAgIGludCAoKnRjbF9NYWtlU2FmZSkgKFRjbF9JbnRlcnAgKiBpbnRlcnApOwogICAgVGNsX0No
YW5uZWwgKCp0Y2xfTWFrZVRjcENsaWVudENoYW5uZWwpIChDbGllbnREYXRhIHRjcFNvY2tldCk7
CiAgICBjaGFyICogKCp0Y2xfTWVyZ2UpIChpbnQgYXJnYywgY2hhciAqKiBhcmd2KTsKICAgIFRj
bF9IYXNoRW50cnkgKiAoKnRjbF9OZXh0SGFzaEVudHJ5KSAoVGNsX0hhc2hTZWFyY2ggKiBzZWFy
Y2hQdHIpOwogICAgdm9pZCAoKnRjbF9Ob3RpZnlDaGFubmVsKSAoVGNsX0NoYW5uZWwgY2hhbm5l
bCwgaW50IG1hc2spOwogICAgVGNsX09iaiAqICgqdGNsX09iakdldFZhcjIpIChUY2xfSW50ZXJw
ICogaW50ZXJwLCBUY2xfT2JqICogcGFydDFQdHIsIFRjbF9PYmogKiBwYXJ0MlB0ciwgaW50IGZs
YWdzKTsKICAgIFRjbF9PYmogKiAoKnRjbF9PYmpTZXRWYXIyKSAoVGNsX0ludGVycCAqIGludGVy
cCwgVGNsX09iaiAqIHBhcnQxUHRyLCBUY2xfT2JqICogcGFydDJQdHIsIFRjbF9PYmogKiBuZXdW
YWx1ZVB0ciwgaW50IGZsYWdzKTsKICAgIFRjbF9DaGFubmVsICgqdGNsX09wZW5Db21tYW5kQ2hh
bm5lbCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGludCBhcmdjLCBjaGFyICoqIGFyZ3YsIGludCBm
bGFncyk7CiAgICBUY2xfQ2hhbm5lbCAoKnRjbF9PcGVuRmlsZUNoYW5uZWwpIChUY2xfSW50ZXJw
ICogaW50ZXJwLCBjaGFyICogZmlsZU5hbWUsIGNoYXIgKiBtb2RlU3RyaW5nLCBpbnQgcGVybWlz
c2lvbnMpOwogICAgVGNsX0NoYW5uZWwgKCp0Y2xfT3BlblRjcENsaWVudCkgKFRjbF9JbnRlcnAg
KiBpbnRlcnAsIGludCBwb3J0LCBjaGFyICogYWRkcmVzcywgY2hhciAqIG15YWRkciwgaW50IG15
cG9ydCwgaW50IGFzeW5jKTsKICAgIFRjbF9DaGFubmVsICgqdGNsX09wZW5UY3BTZXJ2ZXIpIChU
Y2xfSW50ZXJwICogaW50ZXJwLCBpbnQgcG9ydCwgY2hhciAqIGhvc3QsIFRjbF9UY3BBY2NlcHRQ
cm9jICogYWNjZXB0UHJvYywgQ2xpZW50RGF0YSBjYWxsYmFja0RhdGEpOwogICAgdm9pZCAoKnRj
bF9QcmVzZXJ2ZSkgKENsaWVudERhdGEgZGF0YSk7CiAgICB2b2lkICgqdGNsX1ByaW50RG91Ymxl
KSAoVGNsX0ludGVycCAqIGludGVycCwgZG91YmxlIHZhbHVlLCBjaGFyICogZHN0KTsKICAgIGlu
dCAoKnRjbF9QdXRFbnYpIChjb25zdCBjaGFyICogc3RyaW5nKTsKICAgIGNoYXIgKiAoKnRjbF9Q
b3NpeEVycm9yKSAoVGNsX0ludGVycCAqIGludGVycCk7CiAgICB2b2lkICgqdGNsX1F1ZXVlRXZl
bnQpIChUY2xfRXZlbnQgKiBldlB0ciwgVGNsX1F1ZXVlUG9zaXRpb24gcG9zaXRpb24pOwogICAg
aW50ICgqdGNsX1JlYWQpIChUY2xfQ2hhbm5lbCBjaGFuLCBjaGFyICogYnVmUHRyLCBpbnQgdG9S
ZWFkKTsKICAgIHZvaWQgKCp0Y2xfUmVhcERldGFjaGVkUHJvY3MpICh2b2lkKTsKICAgIGludCAo
KnRjbF9SZWNvcmRBbmRFdmFsKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIGNtZCwgaW50
IGZsYWdzKTsKICAgIGludCAoKnRjbF9SZWNvcmRBbmRFdmFsT2JqKSAoVGNsX0ludGVycCAqIGlu
dGVycCwgVGNsX09iaiAqIGNtZFB0ciwgaW50IGZsYWdzKTsKICAgIHZvaWQgKCp0Y2xfUmVnaXN0
ZXJDaGFubmVsKSAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX0NoYW5uZWwgY2hhbik7CiAgICB2
b2lkICgqdGNsX1JlZ2lzdGVyT2JqVHlwZSkgKFRjbF9PYmpUeXBlICogdHlwZVB0cik7CiAgICBU
Y2xfUmVnRXhwICgqdGNsX1JlZ0V4cENvbXBpbGUpIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFy
ICogc3RyaW5nKTsKICAgIGludCAoKnRjbF9SZWdFeHBFeGVjKSAoVGNsX0ludGVycCAqIGludGVy
cCwgVGNsX1JlZ0V4cCByZWdleHAsIGNvbnN0IGNoYXIgKiBzdHIsIGNvbnN0IGNoYXIgKiBzdGFy
dCk7CiAgICBpbnQgKCp0Y2xfUmVnRXhwTWF0Y2gpIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFy
ICogc3RyLCBjaGFyICogcGF0dGVybik7CiAgICB2b2lkICgqdGNsX1JlZ0V4cFJhbmdlKSAoVGNs
X1JlZ0V4cCByZWdleHAsIGludCBpbmRleCwgY2hhciAqKiBzdGFydFB0ciwgY2hhciAqKiBlbmRQ
dHIpOwogICAgdm9pZCAoKnRjbF9SZWxlYXNlKSAoQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKICAg
IHZvaWQgKCp0Y2xfUmVzZXRSZXN1bHQpIChUY2xfSW50ZXJwICogaW50ZXJwKTsKICAgIGludCAo
KnRjbF9TY2FuRWxlbWVudCkgKGNvbnN0IGNoYXIgKiBzdHIsIGludCAqIGZsYWdQdHIpOwogICAg
aW50ICgqdGNsX1NjYW5Db3VudGVkRWxlbWVudCkgKGNvbnN0IGNoYXIgKiBzdHIsIGludCBsZW5n
dGgsIGludCAqIGZsYWdQdHIpOwogICAgaW50ICgqdGNsX1NlZWspIChUY2xfQ2hhbm5lbCBjaGFu
LCBpbnQgb2Zmc2V0LCBpbnQgbW9kZSk7CiAgICBpbnQgKCp0Y2xfU2VydmljZUFsbCkgKHZvaWQp
OwogICAgaW50ICgqdGNsX1NlcnZpY2VFdmVudCkgKGludCBmbGFncyk7CiAgICB2b2lkICgqdGNs
X1NldEFzc29jRGF0YSkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBuYW1lLCBUY2xfSW50
ZXJwRGVsZXRlUHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CiAgICB2b2lkICgq
dGNsX1NldENoYW5uZWxCdWZmZXJTaXplKSAoVGNsX0NoYW5uZWwgY2hhbiwgaW50IHN6KTsKICAg
IGludCAoKnRjbF9TZXRDaGFubmVsT3B0aW9uKSAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX0No
YW5uZWwgY2hhbiwgY2hhciAqIG9wdGlvbk5hbWUsIGNoYXIgKiBuZXdWYWx1ZSk7CiAgICBpbnQg
KCp0Y2xfU2V0Q29tbWFuZEluZm8pIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogY21kTmFt
ZSwgVGNsX0NtZEluZm8gKiBpbmZvUHRyKTsKICAgIHZvaWQgKCp0Y2xfU2V0RXJybm8pIChpbnQg
ZXJyKTsKICAgIHZvaWQgKCp0Y2xfU2V0RXJyb3JDb2RlKSAoVGNsX0ludGVycCAqIGludGVycCwg
Li4uKTsKICAgIHZvaWQgKCp0Y2xfU2V0TWF4QmxvY2tUaW1lKSAoVGNsX1RpbWUgKiB0aW1lUHRy
KTsKICAgIHZvaWQgKCp0Y2xfU2V0UGFuaWNQcm9jKSAoVGNsX1BhbmljUHJvYyAqIHBhbmljUHJv
Yyk7CiAgICBpbnQgKCp0Y2xfU2V0UmVjdXJzaW9uTGltaXQpIChUY2xfSW50ZXJwICogaW50ZXJw
LCBpbnQgZGVwdGgpOwogICAgdm9pZCAoKnRjbF9TZXRSZXN1bHQpIChUY2xfSW50ZXJwICogaW50
ZXJwLCBjaGFyICogc3RyLCBUY2xfRnJlZVByb2MgKiBmcmVlUHJvYyk7CiAgICBpbnQgKCp0Y2xf
U2V0U2VydmljZU1vZGUpIChpbnQgbW9kZSk7CiAgICB2b2lkICgqdGNsX1NldE9iakVycm9yQ29k
ZSkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiBlcnJvck9ialB0cik7CiAgICB2b2lk
ICgqdGNsX1NldE9ialJlc3VsdCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9PYmogKiByZXN1
bHRPYmpQdHIpOwogICAgdm9pZCAoKnRjbF9TZXRTdGRDaGFubmVsKSAoVGNsX0NoYW5uZWwgY2hh
bm5lbCwgaW50IHR5cGUpOwogICAgY2hhciAqICgqdGNsX1NldFZhcikgKFRjbF9JbnRlcnAgKiBp
bnRlcnAsIGNoYXIgKiB2YXJOYW1lLCBjaGFyICogbmV3VmFsdWUsIGludCBmbGFncyk7CiAgICBj
aGFyICogKCp0Y2xfU2V0VmFyMikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBwYXJ0MSwg
Y2hhciAqIHBhcnQyLCBjaGFyICogbmV3VmFsdWUsIGludCBmbGFncyk7CiAgICBjaGFyICogKCp0
Y2xfU2lnbmFsSWQpIChpbnQgc2lnKTsKICAgIGNoYXIgKiAoKnRjbF9TaWduYWxNc2cpIChpbnQg
c2lnKTsKICAgIHZvaWQgKCp0Y2xfU291cmNlUkNGaWxlKSAoVGNsX0ludGVycCAqIGludGVycCk7
CiAgICBpbnQgKCp0Y2xfU3BsaXRMaXN0KSAoVGNsX0ludGVycCAqIGludGVycCwgY29uc3QgY2hh
ciAqIGxpc3RTdHIsIGludCAqIGFyZ2NQdHIsIGNoYXIgKioqIGFyZ3ZQdHIpOwogICAgdm9pZCAo
KnRjbF9TcGxpdFBhdGgpIChjb25zdCBjaGFyICogcGF0aCwgaW50ICogYXJnY1B0ciwgY2hhciAq
KiogYXJndlB0cik7CiAgICB2b2lkICgqdGNsX1N0YXRpY1BhY2thZ2UpIChUY2xfSW50ZXJwICog
aW50ZXJwLCBjaGFyICogcGtnTmFtZSwgVGNsX1BhY2thZ2VJbml0UHJvYyAqIGluaXRQcm9jLCBU
Y2xfUGFja2FnZUluaXRQcm9jICogc2FmZUluaXRQcm9jKTsKICAgIGludCAoKnRjbF9TdHJpbmdN
YXRjaCkgKGNvbnN0IGNoYXIgKiBzdHIsIGNvbnN0IGNoYXIgKiBwYXR0ZXJuKTsKICAgIGludCAo
KnRjbF9UZWxsKSAoVGNsX0NoYW5uZWwgY2hhbik7CiAgICBpbnQgKCp0Y2xfVHJhY2VWYXIpIChU
Y2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogdmFyTmFtZSwgaW50IGZsYWdzLCBUY2xfVmFyVHJh
Y2VQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKICAgIGludCAoKnRjbF9UcmFj
ZVZhcjIpIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogcGFydDEsIGNoYXIgKiBwYXJ0Miwg
aW50IGZsYWdzLCBUY2xfVmFyVHJhY2VQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRh
KTsKICAgIGNoYXIgKiAoKnRjbF9UcmFuc2xhdGVGaWxlTmFtZSkgKFRjbF9JbnRlcnAgKiBpbnRl
cnAsIGNoYXIgKiBuYW1lLCBUY2xfRFN0cmluZyAqIGJ1ZmZlclB0cik7CiAgICBpbnQgKCp0Y2xf
VW5nZXRzKSAoVGNsX0NoYW5uZWwgY2hhbiwgY2hhciAqIHN0ciwgaW50IGxlbiwgaW50IGF0SGVh
ZCk7CiAgICB2b2lkICgqdGNsX1VubGlua1ZhcikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIg
KiB2YXJOYW1lKTsKICAgIGludCAoKnRjbF9VbnJlZ2lzdGVyQ2hhbm5lbCkgKFRjbF9JbnRlcnAg
KiBpbnRlcnAsIFRjbF9DaGFubmVsIGNoYW4pOwogICAgaW50ICgqdGNsX1Vuc2V0VmFyKSAoVGNs
X0ludGVycCAqIGludGVycCwgY2hhciAqIHZhck5hbWUsIGludCBmbGFncyk7CiAgICBpbnQgKCp0
Y2xfVW5zZXRWYXIyKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHBhcnQxLCBjaGFyICog
cGFydDIsIGludCBmbGFncyk7CiAgICB2b2lkICgqdGNsX1VudHJhY2VWYXIpIChUY2xfSW50ZXJw
ICogaW50ZXJwLCBjaGFyICogdmFyTmFtZSwgaW50IGZsYWdzLCBUY2xfVmFyVHJhY2VQcm9jICog
cHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKICAgIHZvaWQgKCp0Y2xfVW50cmFjZVZhcjIp
IChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogcGFydDEsIGNoYXIgKiBwYXJ0MiwgaW50IGZs
YWdzLCBUY2xfVmFyVHJhY2VQcm9jICogcHJvYywgQ2xpZW50RGF0YSBjbGllbnREYXRhKTsKICAg
IHZvaWQgKCp0Y2xfVXBkYXRlTGlua2VkVmFyKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAq
IHZhck5hbWUpOwogICAgaW50ICgqdGNsX1VwVmFyKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hh
ciAqIGZyYW1lTmFtZSwgY2hhciAqIHZhck5hbWUsIGNoYXIgKiBsb2NhbE5hbWUsIGludCBmbGFn
cyk7CiAgICBpbnQgKCp0Y2xfVXBWYXIyKSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIGZy
YW1lTmFtZSwgY2hhciAqIHBhcnQxLCBjaGFyICogcGFydDIsIGNoYXIgKiBsb2NhbE5hbWUsIGlu
dCBmbGFncyk7CiAgICBpbnQgKCp0Y2xfVmFyRXZhbCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIC4u
Lik7CiAgICBDbGllbnREYXRhICgqdGNsX1ZhclRyYWNlSW5mbykgKFRjbF9JbnRlcnAgKiBpbnRl
cnAsIGNoYXIgKiB2YXJOYW1lLCBpbnQgZmxhZ3MsIFRjbF9WYXJUcmFjZVByb2MgKiBwcm9jUHRy
LCBDbGllbnREYXRhIHByZXZDbGllbnREYXRhKTsKICAgIENsaWVudERhdGEgKCp0Y2xfVmFyVHJh
Y2VJbmZvMikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBwYXJ0MSwgY2hhciAqIHBhcnQy
LCBpbnQgZmxhZ3MsIFRjbF9WYXJUcmFjZVByb2MgKiBwcm9jUHRyLCBDbGllbnREYXRhIHByZXZD
bGllbnREYXRhKTsKICAgIGludCAoKnRjbF9Xcml0ZSkgKFRjbF9DaGFubmVsIGNoYW4sIGNoYXIg
KiBzLCBpbnQgc2xlbik7CiAgICB2b2lkICgqdGNsX1dyb25nTnVtQXJncykgKFRjbF9JbnRlcnAg
KiBpbnRlcnAsIGludCBvYmpjLCBUY2xfT2JqICpjb25zdCBvYmp2W10sIGNoYXIgKiBtZXNzYWdl
KTsKICAgIGludCAoKnRjbF9EdW1wQWN0aXZlTWVtb3J5KSAoY2hhciAqIGZpbGVOYW1lKTsKICAg
IHZvaWQgKCp0Y2xfVmFsaWRhdGVBbGxNZW1vcnkpIChjaGFyICogZmlsZSwgaW50IGxpbmUpOwog
ICAgdm9pZCAoKnRjbF9BcHBlbmRSZXN1bHRWQSkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIHZhX2xp
c3QgYXJnTGlzdCk7CiAgICB2b2lkICgqdGNsX0FwcGVuZFN0cmluZ3NUb09ialZBKSAoVGNsX09i
aiAqIG9ialB0ciwgdmFfbGlzdCBhcmdMaXN0KTsKICAgIGNoYXIgKiAoKnRjbF9IYXNoU3RhdHMp
IChUY2xfSGFzaFRhYmxlICogdGFibGVQdHIpOwogICAgY2hhciAqICgqdGNsX1BhcnNlVmFyKSAo
VGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHN0ciwgY2hhciAqKiB0ZXJtUHRyKTsKICAgIGNo
YXIgKiAoKnRjbF9Qa2dQcmVzZW50KSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIG5hbWUs
IGNoYXIgKiB2ZXJzaW9uLCBpbnQgZXhhY3QpOwogICAgY2hhciAqICgqdGNsX1BrZ1ByZXNlbnRF
eCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBuYW1lLCBjaGFyICogdmVyc2lvbiwgaW50
IGV4YWN0LCBDbGllbnREYXRhICogY2xpZW50RGF0YVB0cik7CiAgICBpbnQgKCp0Y2xfUGtnUHJv
dmlkZSkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBuYW1lLCBjaGFyICogdmVyc2lvbik7
CiAgICBjaGFyICogKCp0Y2xfUGtnUmVxdWlyZSkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIg
KiBuYW1lLCBjaGFyICogdmVyc2lvbiwgaW50IGV4YWN0KTsKICAgIHZvaWQgKCp0Y2xfU2V0RXJy
b3JDb2RlVkEpIChUY2xfSW50ZXJwICogaW50ZXJwLCB2YV9saXN0IGFyZ0xpc3QpOwogICAgaW50
ICgqdGNsX1ZhckV2YWxWQSkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIHZhX2xpc3QgYXJnTGlzdCk7
CiAgICBUY2xfUGlkICgqdGNsX1dhaXRQaWQpIChUY2xfUGlkIHBpZCwgaW50ICogc3RhdFB0ciwg
aW50IG9wdGlvbnMpOwogICAgdm9pZCAoKnRjbF9QYW5pY1ZBKSAoY2hhciAqIGZvcm1hdCwgdmFf
bGlzdCBhcmdMaXN0KTsKICAgIHZvaWQgKCp0Y2xfR2V0VmVyc2lvbikgKGludCAqIG1ham9yLCBp
bnQgKiBtaW5vciwgaW50ICogcGF0Y2hMZXZlbCwgaW50ICogdHlwZSk7CiAgICB2b2lkICgqdGNs
X0luaXRNZW1vcnkpIChUY2xfSW50ZXJwICogaW50ZXJwKTsKICAgIFRjbF9DaGFubmVsICgqdGNs
X1N0YWNrQ2hhbm5lbCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9DaGFubmVsVHlwZSAqIHR5
cGVQdHIsIENsaWVudERhdGEgaW5zdGFuY2VEYXRhLCBpbnQgbWFzaywgVGNsX0NoYW5uZWwgcHJl
dkNoYW4pOwogICAgaW50ICgqdGNsX1Vuc3RhY2tDaGFubmVsKSAoVGNsX0ludGVycCAqIGludGVy
cCwgVGNsX0NoYW5uZWwgY2hhbik7CiAgICBUY2xfQ2hhbm5lbCAoKnRjbF9HZXRTdGFja2VkQ2hh
bm5lbCkgKFRjbF9DaGFubmVsIGNoYW4pOwogICAgdm9pZCAqcmVzZXJ2ZWQyODQ7CiAgICB2b2lk
ICpyZXNlcnZlZDI4NTsKICAgIHZvaWQgKCp0Y2xfQXBwZW5kT2JqVG9PYmopIChUY2xfT2JqICog
b2JqUHRyLCBUY2xfT2JqICogYXBwZW5kT2JqUHRyKTsKICAgIFRjbF9FbmNvZGluZyAoKnRjbF9D
cmVhdGVFbmNvZGluZykgKFRjbF9FbmNvZGluZ1R5cGUgKiB0eXBlUHRyKTsKICAgIHZvaWQgKCp0
Y2xfQ3JlYXRlVGhyZWFkRXhpdEhhbmRsZXIpIChUY2xfRXhpdFByb2MgKiBwcm9jLCBDbGllbnRE
YXRhIGNsaWVudERhdGEpOwogICAgdm9pZCAoKnRjbF9EZWxldGVUaHJlYWRFeGl0SGFuZGxlcikg
KFRjbF9FeGl0UHJvYyAqIHByb2MsIENsaWVudERhdGEgY2xpZW50RGF0YSk7CiAgICB2b2lkICgq
dGNsX0Rpc2NhcmRSZXN1bHQpIChUY2xfU2F2ZWRSZXN1bHQgKiBzdGF0ZVB0cik7CiAgICBpbnQg
KCp0Y2xfRXZhbEV4KSAoVGNsX0ludGVycCAqIGludGVycCwgY2hhciAqIHNjcmlwdCwgaW50IG51
bUJ5dGVzLCBpbnQgZmxhZ3MpOwogICAgaW50ICgqdGNsX0V2YWxPYmp2KSAoVGNsX0ludGVycCAq
IGludGVycCwgaW50IG9iamMsIFRjbF9PYmogKmNvbnN0IG9ianZbXSwgaW50IGZsYWdzKTsKICAg
IGludCAoKnRjbF9FdmFsT2JqRXgpIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogb2Jq
UHRyLCBpbnQgZmxhZ3MpOwogICAgdm9pZCAoKnRjbF9FeGl0VGhyZWFkKSAoaW50IHN0YXR1cyk7
CiAgICBpbnQgKCp0Y2xfRXh0ZXJuYWxUb1V0ZikgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9F
bmNvZGluZyBlbmNvZGluZywgY29uc3QgY2hhciAqIHNyYywgaW50IHNyY0xlbiwgaW50IGZsYWdz
LCBUY2xfRW5jb2RpbmdTdGF0ZSAqIHN0YXRlUHRyLCBjaGFyICogZHN0LCBpbnQgZHN0TGVuLCBp
bnQgKiBzcmNSZWFkUHRyLCBpbnQgKiBkc3RXcm90ZVB0ciwgaW50ICogZHN0Q2hhcnNQdHIpOwog
ICAgY2hhciAqICgqdGNsX0V4dGVybmFsVG9VdGZEU3RyaW5nKSAoVGNsX0VuY29kaW5nIGVuY29k
aW5nLCBjb25zdCBjaGFyICogc3JjLCBpbnQgc3JjTGVuLCBUY2xfRFN0cmluZyAqIGRzUHRyKTsK
ICAgIHZvaWQgKCp0Y2xfRmluYWxpemVUaHJlYWQpICh2b2lkKTsKICAgIHZvaWQgKCp0Y2xfRmlu
YWxpemVOb3RpZmllcikgKENsaWVudERhdGEgY2xpZW50RGF0YSk7CiAgICB2b2lkICgqdGNsX0Zy
ZWVFbmNvZGluZykgKFRjbF9FbmNvZGluZyBlbmNvZGluZyk7CiAgICBUY2xfVGhyZWFkSWQgKCp0
Y2xfR2V0Q3VycmVudFRocmVhZCkgKHZvaWQpOwogICAgVGNsX0VuY29kaW5nICgqdGNsX0dldEVu
Y29kaW5nKSAoVGNsX0ludGVycCAqIGludGVycCwgY29uc3QgY2hhciAqIG5hbWUpOwogICAgY2hh
ciAqICgqdGNsX0dldEVuY29kaW5nTmFtZSkgKFRjbF9FbmNvZGluZyBlbmNvZGluZyk7CiAgICB2
b2lkICgqdGNsX0dldEVuY29kaW5nTmFtZXMpIChUY2xfSW50ZXJwICogaW50ZXJwKTsKICAgIGlu
dCAoKnRjbF9HZXRJbmRleEZyb21PYmpTdHJ1Y3QpIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xf
T2JqICogb2JqUHRyLCBjaGFyICoqIHRhYmxlUHRyLCBpbnQgb2Zmc2V0LCBjaGFyICogbXNnLCBp
bnQgZmxhZ3MsIGludCAqIGluZGV4UHRyKTsKICAgIHZvaWQgKiAoKnRjbF9HZXRUaHJlYWREYXRh
KSAoVGNsX1RocmVhZERhdGFLZXkgKiBrZXlQdHIsIGludCBzaXplKTsKICAgIFRjbF9PYmogKiAo
KnRjbF9HZXRWYXIyRXgpIChUY2xfSW50ZXJwICogaW50ZXJwLCBjaGFyICogcGFydDEsIGNoYXIg
KiBwYXJ0MiwgaW50IGZsYWdzKTsKICAgIENsaWVudERhdGEgKCp0Y2xfSW5pdE5vdGlmaWVyKSAo
dm9pZCk7CiAgICB2b2lkICgqdGNsX011dGV4TG9jaykgKFRjbF9NdXRleCAqIG11dGV4UHRyKTsK
ICAgIHZvaWQgKCp0Y2xfTXV0ZXhVbmxvY2spIChUY2xfTXV0ZXggKiBtdXRleFB0cik7CiAgICB2
b2lkICgqdGNsX0NvbmRpdGlvbk5vdGlmeSkgKFRjbF9Db25kaXRpb24gKiBjb25kUHRyKTsKICAg
IHZvaWQgKCp0Y2xfQ29uZGl0aW9uV2FpdCkgKFRjbF9Db25kaXRpb24gKiBjb25kUHRyLCBUY2xf
TXV0ZXggKiBtdXRleFB0ciwgVGNsX1RpbWUgKiB0aW1lUHRyKTsKICAgIGludCAoKnRjbF9OdW1V
dGZDaGFycykgKGNvbnN0IGNoYXIgKiBzcmMsIGludCBsZW4pOwogICAgaW50ICgqdGNsX1JlYWRD
aGFycykgKFRjbF9DaGFubmVsIGNoYW5uZWwsIFRjbF9PYmogKiBvYmpQdHIsIGludCBjaGFyc1Rv
UmVhZCwgaW50IGFwcGVuZEZsYWcpOwogICAgdm9pZCAoKnRjbF9SZXN0b3JlUmVzdWx0KSAoVGNs
X0ludGVycCAqIGludGVycCwgVGNsX1NhdmVkUmVzdWx0ICogc3RhdGVQdHIpOwogICAgdm9pZCAo
KnRjbF9TYXZlUmVzdWx0KSAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX1NhdmVkUmVzdWx0ICog
c3RhdGVQdHIpOwogICAgaW50ICgqdGNsX1NldFN5c3RlbUVuY29kaW5nKSAoVGNsX0ludGVycCAq
IGludGVycCwgY29uc3QgY2hhciAqIG5hbWUpOwogICAgVGNsX09iaiAqICgqdGNsX1NldFZhcjJF
eCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBwYXJ0MSwgY2hhciAqIHBhcnQyLCBUY2xf
T2JqICogbmV3VmFsdWVQdHIsIGludCBmbGFncyk7CiAgICB2b2lkICgqdGNsX1RocmVhZEFsZXJ0
KSAoVGNsX1RocmVhZElkIHRocmVhZElkKTsKICAgIHZvaWQgKCp0Y2xfVGhyZWFkUXVldWVFdmVu
dCkgKFRjbF9UaHJlYWRJZCB0aHJlYWRJZCwgVGNsX0V2ZW50KiBldlB0ciwgVGNsX1F1ZXVlUG9z
aXRpb24gcG9zaXRpb24pOwogICAgVGNsX1VuaUNoYXIgKCp0Y2xfVW5pQ2hhckF0SW5kZXgpIChj
b25zdCBjaGFyICogc3JjLCBpbnQgaW5kZXgpOwogICAgVGNsX1VuaUNoYXIgKCp0Y2xfVW5pQ2hh
clRvTG93ZXIpIChpbnQgY2gpOwogICAgVGNsX1VuaUNoYXIgKCp0Y2xfVW5pQ2hhclRvVGl0bGUp
IChpbnQgY2gpOwogICAgVGNsX1VuaUNoYXIgKCp0Y2xfVW5pQ2hhclRvVXBwZXIpIChpbnQgY2gp
OwogICAgaW50ICgqdGNsX1VuaUNoYXJUb1V0ZikgKGludCBjaCwgY2hhciAqIGJ1Zik7CiAgICBj
aGFyICogKCp0Y2xfVXRmQXRJbmRleCkgKGNvbnN0IGNoYXIgKiBzcmMsIGludCBpbmRleCk7CiAg
ICBpbnQgKCp0Y2xfVXRmQ2hhckNvbXBsZXRlKSAoY29uc3QgY2hhciAqIHNyYywgaW50IGxlbik7
CiAgICBpbnQgKCp0Y2xfVXRmQmFja3NsYXNoKSAoY29uc3QgY2hhciAqIHNyYywgaW50ICogcmVh
ZFB0ciwgY2hhciAqIGRzdCk7CiAgICBjaGFyICogKCp0Y2xfVXRmRmluZEZpcnN0KSAoY29uc3Qg
Y2hhciAqIHNyYywgaW50IGNoKTsKICAgIGNoYXIgKiAoKnRjbF9VdGZGaW5kTGFzdCkgKGNvbnN0
IGNoYXIgKiBzcmMsIGludCBjaCk7CiAgICBjaGFyICogKCp0Y2xfVXRmTmV4dCkgKGNvbnN0IGNo
YXIgKiBzcmMpOwogICAgY2hhciAqICgqdGNsX1V0ZlByZXYpIChjb25zdCBjaGFyICogc3JjLCBj
b25zdCBjaGFyICogc3RhcnQpOwogICAgaW50ICgqdGNsX1V0ZlRvRXh0ZXJuYWwpIChUY2xfSW50
ZXJwICogaW50ZXJwLCBUY2xfRW5jb2RpbmcgZW5jb2RpbmcsIGNvbnN0IGNoYXIgKiBzcmMsIGlu
dCBzcmNMZW4sIGludCBmbGFncywgVGNsX0VuY29kaW5nU3RhdGUgKiBzdGF0ZVB0ciwgY2hhciAq
IGRzdCwgaW50IGRzdExlbiwgaW50ICogc3JjUmVhZFB0ciwgaW50ICogZHN0V3JvdGVQdHIsIGlu
dCAqIGRzdENoYXJzUHRyKTsKICAgIGNoYXIgKiAoKnRjbF9VdGZUb0V4dGVybmFsRFN0cmluZykg
KFRjbF9FbmNvZGluZyBlbmNvZGluZywgY29uc3QgY2hhciAqIHNyYywgaW50IHNyY0xlbiwgVGNs
X0RTdHJpbmcgKiBkc1B0cik7CiAgICBpbnQgKCp0Y2xfVXRmVG9Mb3dlcikgKGNoYXIgKiBzcmMp
OwogICAgaW50ICgqdGNsX1V0ZlRvVGl0bGUpIChjaGFyICogc3JjKTsKICAgIGludCAoKnRjbF9V
dGZUb1VuaUNoYXIpIChjb25zdCBjaGFyICogc3JjLCBUY2xfVW5pQ2hhciAqIGNoUHRyKTsKICAg
IGludCAoKnRjbF9VdGZUb1VwcGVyKSAoY2hhciAqIHNyYyk7CiAgICBpbnQgKCp0Y2xfV3JpdGVD
aGFycykgKFRjbF9DaGFubmVsIGNoYW4sIGNvbnN0IGNoYXIgKiBzcmMsIGludCBzcmNMZW4pOwog
ICAgaW50ICgqdGNsX1dyaXRlT2JqKSAoVGNsX0NoYW5uZWwgY2hhbiwgVGNsX09iaiAqIG9ialB0
cik7CiAgICBjaGFyICogKCp0Y2xfR2V0U3RyaW5nKSAoVGNsX09iaiAqIG9ialB0cik7CiAgICBj
aGFyICogKCp0Y2xfR2V0RGVmYXVsdEVuY29kaW5nRGlyKSAodm9pZCk7CiAgICB2b2lkICgqdGNs
X1NldERlZmF1bHRFbmNvZGluZ0RpcikgKGNoYXIgKiBwYXRoKTsKICAgIHZvaWQgKCp0Y2xfQWxl
cnROb3RpZmllcikgKENsaWVudERhdGEgY2xpZW50RGF0YSk7CiAgICB2b2lkICgqdGNsX1NlcnZp
Y2VNb2RlSG9vaykgKGludCBtb2RlKTsKICAgIGludCAoKnRjbF9VbmlDaGFySXNBbG51bSkgKGlu
dCBjaCk7CiAgICBpbnQgKCp0Y2xfVW5pQ2hhcklzQWxwaGEpIChpbnQgY2gpOwogICAgaW50ICgq
dGNsX1VuaUNoYXJJc0RpZ2l0KSAoaW50IGNoKTsKICAgIGludCAoKnRjbF9VbmlDaGFySXNMb3dl
cikgKGludCBjaCk7CiAgICBpbnQgKCp0Y2xfVW5pQ2hhcklzU3BhY2UpIChpbnQgY2gpOwogICAg
aW50ICgqdGNsX1VuaUNoYXJJc1VwcGVyKSAoaW50IGNoKTsKICAgIGludCAoKnRjbF9VbmlDaGFy
SXNXb3JkQ2hhcikgKGludCBjaCk7CiAgICBpbnQgKCp0Y2xfVW5pQ2hhckxlbikgKFRjbF9VbmlD
aGFyICogc3RyKTsKICAgIGludCAoKnRjbF9VbmlDaGFyTmNtcCkgKGNvbnN0IFRjbF9VbmlDaGFy
ICogY3MsIGNvbnN0IFRjbF9VbmlDaGFyICogY3QsIHVuc2lnbmVkIGxvbmcgbik7CiAgICBjaGFy
ICogKCp0Y2xfVW5pQ2hhclRvVXRmRFN0cmluZykgKGNvbnN0IFRjbF9VbmlDaGFyICogc3RyaW5n
LCBpbnQgbnVtQ2hhcnMsIFRjbF9EU3RyaW5nICogZHNQdHIpOwogICAgVGNsX1VuaUNoYXIgKiAo
KnRjbF9VdGZUb1VuaUNoYXJEU3RyaW5nKSAoY29uc3QgY2hhciAqIHN0cmluZywgaW50IGxlbmd0
aCwgVGNsX0RTdHJpbmcgKiBkc1B0cik7CiAgICBUY2xfUmVnRXhwICgqdGNsX0dldFJlZ0V4cEZy
b21PYmopIChUY2xfSW50ZXJwICogaW50ZXJwLCBUY2xfT2JqICogcGF0T2JqLCBpbnQgZmxhZ3Mp
OwogICAgVGNsX09iaiAqICgqdGNsX0V2YWxUb2tlbnMpIChUY2xfSW50ZXJwICogaW50ZXJwLCBU
Y2xfVG9rZW4gKiB0b2tlblB0ciwgaW50IGNvdW50KTsKICAgIHZvaWQgKCp0Y2xfRnJlZVBhcnNl
KSAoVGNsX1BhcnNlICogcGFyc2VQdHIpOwogICAgdm9pZCAoKnRjbF9Mb2dDb21tYW5kSW5mbykg
KFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzY3JpcHQsIGNoYXIgKiBjb21tYW5kLCBpbnQg
bGVuZ3RoKTsKICAgIGludCAoKnRjbF9QYXJzZUJyYWNlcykgKFRjbF9JbnRlcnAgKiBpbnRlcnAs
IGNoYXIgKiBzdHJpbmcsIGludCBudW1CeXRlcywgVGNsX1BhcnNlICogcGFyc2VQdHIsIGludCBh
cHBlbmQsIGNoYXIgKiogdGVybVB0cik7CiAgICBpbnQgKCp0Y2xfUGFyc2VDb21tYW5kKSAoVGNs
X0ludGVycCAqIGludGVycCwgY2hhciAqIHN0cmluZywgaW50IG51bUJ5dGVzLCBpbnQgbmVzdGVk
LCBUY2xfUGFyc2UgKiBwYXJzZVB0cik7CiAgICBpbnQgKCp0Y2xfUGFyc2VFeHByKSAoVGNsX0lu
dGVycCAqIGludGVycCwgY2hhciAqIHN0cmluZywgaW50IG51bUJ5dGVzLCBUY2xfUGFyc2UgKiBw
YXJzZVB0cik7CiAgICBpbnQgKCp0Y2xfUGFyc2VRdW90ZWRTdHJpbmcpIChUY2xfSW50ZXJwICog
aW50ZXJwLCBjaGFyICogc3RyaW5nLCBpbnQgbnVtQnl0ZXMsIFRjbF9QYXJzZSAqIHBhcnNlUHRy
LCBpbnQgYXBwZW5kLCBjaGFyICoqIHRlcm1QdHIpOwogICAgaW50ICgqdGNsX1BhcnNlVmFyTmFt
ZSkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBzdHJpbmcsIGludCBudW1CeXRlcywgVGNs
X1BhcnNlICogcGFyc2VQdHIsIGludCBhcHBlbmQpOwogICAgY2hhciAqICgqdGNsX0dldEN3ZCkg
KFRjbF9JbnRlcnAgKiBpbnRlcnAsIFRjbF9EU3RyaW5nICogY3dkUHRyKTsKICAgIGludCAoKnRj
bF9DaGRpcikgKGNvbnN0IGNoYXIgKiBkaXJOYW1lKTsKICAgIGludCAoKnRjbF9BY2Nlc3MpIChj
b25zdCBjaGFyICogcGF0aCwgaW50IG1vZGUpOwogICAgaW50ICgqdGNsX1N0YXQpIChjb25zdCBj
aGFyICogcGF0aCwgc3RydWN0IHN0YXQgKiBidWZQdHIpOwogICAgaW50ICgqdGNsX1V0Zk5jbXAp
IChjb25zdCBjaGFyICogczEsIGNvbnN0IGNoYXIgKiBzMiwgdW5zaWduZWQgbG9uZyBuKTsKICAg
IGludCAoKnRjbF9VdGZOY2FzZWNtcCkgKGNvbnN0IGNoYXIgKiBzMSwgY29uc3QgY2hhciAqIHMy
LCB1bnNpZ25lZCBsb25nIG4pOwogICAgaW50ICgqdGNsX1N0cmluZ0Nhc2VNYXRjaCkgKGNvbnN0
IGNoYXIgKiBzdHIsIGNvbnN0IGNoYXIgKiBwYXR0ZXJuLCBpbnQgbm9jYXNlKTsKICAgIGludCAo
KnRjbF9VbmlDaGFySXNDb250cm9sKSAoaW50IGNoKTsKICAgIGludCAoKnRjbF9VbmlDaGFySXNH
cmFwaCkgKGludCBjaCk7CiAgICBpbnQgKCp0Y2xfVW5pQ2hhcklzUHJpbnQpIChpbnQgY2gpOwog
ICAgaW50ICgqdGNsX1VuaUNoYXJJc1B1bmN0KSAoaW50IGNoKTsKICAgIGludCAoKnRjbF9SZWdF
eHBFeGVjT2JqKSAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX1JlZ0V4cCByZWdleHAsIFRjbF9P
YmogKiBvYmpQdHIsIGludCBvZmZzZXQsIGludCBubWF0Y2hlcywgaW50IGZsYWdzKTsKICAgIHZv
aWQgKCp0Y2xfUmVnRXhwR2V0SW5mbykgKFRjbF9SZWdFeHAgcmVnZXhwLCBUY2xfUmVnRXhwSW5m
byAqIGluZm9QdHIpOwogICAgVGNsX09iaiAqICgqdGNsX05ld1VuaWNvZGVPYmopIChUY2xfVW5p
Q2hhciAqIHVuaWNvZGUsIGludCBudW1DaGFycyk7CiAgICB2b2lkICgqdGNsX1NldFVuaWNvZGVP
YmopIChUY2xfT2JqICogb2JqUHRyLCBUY2xfVW5pQ2hhciAqIHVuaWNvZGUsIGludCBudW1DaGFy
cyk7CiAgICBpbnQgKCp0Y2xfR2V0Q2hhckxlbmd0aCkgKFRjbF9PYmogKiBvYmpQdHIpOwogICAg
VGNsX1VuaUNoYXIgKCp0Y2xfR2V0VW5pQ2hhcikgKFRjbF9PYmogKiBvYmpQdHIsIGludCBpbmRl
eCk7CiAgICBUY2xfVW5pQ2hhciAqICgqdGNsX0dldFVuaWNvZGUpIChUY2xfT2JqICogb2JqUHRy
KTsKICAgIFRjbF9PYmogKiAoKnRjbF9HZXRSYW5nZSkgKFRjbF9PYmogKiBvYmpQdHIsIGludCBm
aXJzdCwgaW50IGxhc3QpOwogICAgdm9pZCAoKnRjbF9BcHBlbmRVbmljb2RlVG9PYmopIChUY2xf
T2JqICogb2JqUHRyLCBUY2xfVW5pQ2hhciAqIHVuaWNvZGUsIGludCBsZW5ndGgpOwogICAgaW50
ICgqdGNsX1JlZ0V4cE1hdGNoT2JqKSAoVGNsX0ludGVycCAqIGludGVycCwgVGNsX09iaiAqIHN0
cmluZ09iaiwgVGNsX09iaiAqIHBhdHRlcm5PYmopOwogICAgdm9pZCAoKnRjbF9TZXROb3RpZmll
cikgKFRjbF9Ob3RpZmllclByb2NzICogbm90aWZpZXJQcm9jUHRyKTsKICAgIFRjbF9NdXRleCAq
ICgqdGNsX0dldEFsbG9jTXV0ZXgpICh2b2lkKTsKICAgIGludCAoKnRjbF9HZXRDaGFubmVsTmFt
ZXMpIChUY2xfSW50ZXJwICogaW50ZXJwKTsKICAgIGludCAoKnRjbF9HZXRDaGFubmVsTmFtZXNF
eCkgKFRjbF9JbnRlcnAgKiBpbnRlcnAsIGNoYXIgKiBwYXR0ZXJuKTsKICAgIGludCAoKnRjbF9Q
cm9jT2JqQ21kKSAoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSW50ZXJwICogaW50ZXJwLCBp
bnQgb2JqYywgVGNsX09iaiAqY29uc3Qgb2JqdltdKTsKICAgIHZvaWQgKCp0Y2xfQ29uZGl0aW9u
RmluYWxpemUpIChUY2xfQ29uZGl0aW9uICogY29uZFB0cik7CiAgICB2b2lkICgqdGNsX011dGV4
RmluYWxpemUpIChUY2xfTXV0ZXggKiBtdXRleCk7CiAgICBpbnQgKCp0Y2xfQ3JlYXRlVGhyZWFk
KSAoVGNsX1RocmVhZElkICogaWRQdHIsIFRjbF9UaHJlYWRDcmVhdGVQcm9jIHByb2MsIENsaWVu
dERhdGEgY2xpZW50RGF0YSwgaW50IHN0YWNrU2l6ZSwgaW50IGZsYWdzKTsKICAgIGludCAoKnRj
bF9SZWFkUmF3KSAoVGNsX0NoYW5uZWwgY2hhbiwgY2hhciAqIGRzdCwgaW50IGJ5dGVzVG9SZWFk
KTsKICAgIGludCAoKnRjbF9Xcml0ZVJhdykgKFRjbF9DaGFubmVsIGNoYW4sIGNoYXIgKiBzcmMs
IGludCBzcmNMZW4pOwogICAgVGNsX0NoYW5uZWwgKCp0Y2xfR2V0VG9wQ2hhbm5lbCkgKFRjbF9D
aGFubmVsIGNoYW4pOwogICAgaW50ICgqdGNsX0NoYW5uZWxCdWZmZXJlZCkgKFRjbF9DaGFubmVs
IGNoYW4pOwogICAgY2hhciAqICgqdGNsX0NoYW5uZWxOYW1lKSAoVGNsX0NoYW5uZWxUeXBlICog
Y2hhblR5cGVQdHIpOwogICAgVGNsX0NoYW5uZWxUeXBlVmVyc2lvbiAoKnRjbF9DaGFubmVsVmVy
c2lvbikgKFRjbF9DaGFubmVsVHlwZSAqIGNoYW5UeXBlUHRyKTsKICAgIFRjbF9Ecml2ZXJCbG9j
a01vZGVQcm9jICogKCp0Y2xfQ2hhbm5lbEJsb2NrTW9kZVByb2MpIChUY2xfQ2hhbm5lbFR5cGUg
KiBjaGFuVHlwZVB0cik7CiAgICBUY2xfRHJpdmVyQ2xvc2VQcm9jICogKCp0Y2xfQ2hhbm5lbENs
b3NlUHJvYykgKFRjbF9DaGFubmVsVHlwZSAqIGNoYW5UeXBlUHRyKTsKICAgIFRjbF9Ecml2ZXJD
bG9zZTJQcm9jICogKCp0Y2xfQ2hhbm5lbENsb3NlMlByb2MpIChUY2xfQ2hhbm5lbFR5cGUgKiBj
aGFuVHlwZVB0cik7CiAgICBUY2xfRHJpdmVySW5wdXRQcm9jICogKCp0Y2xfQ2hhbm5lbElucHV0
UHJvYykgKFRjbF9DaGFubmVsVHlwZSAqIGNoYW5UeXBlUHRyKTsKICAgIFRjbF9Ecml2ZXJPdXRw
dXRQcm9jICogKCp0Y2xfQ2hhbm5lbE91dHB1dFByb2MpIChUY2xfQ2hhbm5lbFR5cGUgKiBjaGFu
VHlwZVB0cik7CiAgICBUY2xfRHJpdmVyU2Vla1Byb2MgKiAoKnRjbF9DaGFubmVsU2Vla1Byb2Mp
IChUY2xfQ2hhbm5lbFR5cGUgKiBjaGFuVHlwZVB0cik7CiAgICBUY2xfRHJpdmVyU2V0T3B0aW9u
UHJvYyAqICgqdGNsX0NoYW5uZWxTZXRPcHRpb25Qcm9jKSAoVGNsX0NoYW5uZWxUeXBlICogY2hh
blR5cGVQdHIpOwogICAgVGNsX0RyaXZlckdldE9wdGlvblByb2MgKiAoKnRjbF9DaGFubmVsR2V0
T3B0aW9uUHJvYykgKFRjbF9DaGFubmVsVHlwZSAqIGNoYW5UeXBlUHRyKTsKICAgIFRjbF9Ecml2
ZXJXYXRjaFByb2MgKiAoKnRjbF9DaGFubmVsV2F0Y2hQcm9jKSAoVGNsX0NoYW5uZWxUeXBlICog
Y2hhblR5cGVQdHIpOwogICAgVGNsX0RyaXZlckdldEhhbmRsZVByb2MgKiAoKnRjbF9DaGFubmVs
R2V0SGFuZGxlUHJvYykgKFRjbF9DaGFubmVsVHlwZSAqIGNoYW5UeXBlUHRyKTsKICAgIFRjbF9E
cml2ZXJGbHVzaFByb2MgKiAoKnRjbF9DaGFubmVsRmx1c2hQcm9jKSAoVGNsX0NoYW5uZWxUeXBl
ICogY2hhblR5cGVQdHIpOwogICAgVGNsX0RyaXZlckhhbmRsZXJQcm9jICogKCp0Y2xfQ2hhbm5l
bEhhbmRsZXJQcm9jKSAoVGNsX0NoYW5uZWxUeXBlICogY2hhblR5cGVQdHIpOwp9IFRjbFN0dWJz
OwpleHRlcm4gIkMiIHsKZXh0ZXJuIFRjbFN0dWJzICp0Y2xTdHVic1B0cjsKfQpleHRlcm4gIkMi
IHZvaWQgVGNsX01haW4gKGludCBhcmdjLCBjaGFyICoqYXJndiwgVGNsX0FwcEluaXRQcm9jICph
cHBJbml0UHJvYyk7CmV4dGVybiAiQyIgaW50IFRjbF9BcHBJbml0IChUY2xfSW50ZXJwICppbnRl
cnApOwp9CmNsYXNzIFVJOwpjbGFzcyBBcmdQYXJzZXI7ClRjbF9IYXNoRW50cnkgKnhUY2xfRmlu
ZEhhc2hFbnRyeShjb25zdCBUY2xfSGFzaFRhYmxlICosIGNvbnN0IGNoYXIgKik7ClRjbF9IYXNo
RW50cnkgKnhUY2xfQ3JlYXRlSGFzaEVudHJ5KGNvbnN0IFRjbF9IYXNoVGFibGUgKiwgY29uc3Qg
Y2hhciAqLCBpbnQgKik7CnZvaWQgeFRjbF9TZXRIYXNoVmFsdWUoVGNsX0hhc2hFbnRyeSAqLCBD
bGllbnREYXRhKTsKQ2xpZW50RGF0YSB4VGNsX0dldEhhc2hWYWx1ZShUY2xfSGFzaEVudHJ5ICop
Owpjb25zdCBjaGFyICp4VGNsX0dldEhhc2hLZXkoY29uc3QgVGNsX0hhc2hUYWJsZSAqLCBUY2xf
SGFzaEVudHJ5ICopOwppbnQgeFRjbF9MaW5rVmFyKFRjbF9JbnRlcnAgKiwgY29uc3QgY2hhciAq
LCBkb3VibGUgKiwgaW50KTsKaW50IHhUY2xfTGlua1ZhcihUY2xfSW50ZXJwICosIGNvbnN0IGNo
YXIgKiwgaW50ICosIGludCk7CmludCB4VGNsX0xpbmtWYXIoVGNsX0ludGVycCAqLCBjb25zdCBj
aGFyICosIGNoYXIgKiosIGludCk7CmludCB4VGNsX0xpbmtWYXIoVGNsX0ludGVycCAqLCBjb25z
dCBjaGFyICosIGNvbnN0IGNoYXIgKiosIGludCk7CmludCB4VGNsX1VuTGlua1ZhcihUY2xfSW50
ZXJwICosIGNvbnN0IGNoYXIgKik7CmNvbnN0IGNoYXIgKnhUY2xfU2V0VmFyKFRjbF9JbnRlcnAg
KiwgY29uc3QgY2hhciAqLAogIGNvbnN0IGNoYXIgKiwgaW50KTsKY29uc3QgY2hhciAqeFRjbF9T
ZXRWYXIyKFRjbF9JbnRlcnAgKiwgY29uc3QgY2hhciAqLAogIGNvbnN0IGNoYXIgKiwgY29uc3Qg
Y2hhciAqLCBpbnQpOwpjb25zdCBjaGFyICp4VGNsX0dldFZhcihUY2xfSW50ZXJwICosIGNvbnN0
IGNoYXIgKiwgaW50KTsKY29uc3QgY2hhciAqeFRjbF9HZXRWYXJfb3JfZGllKFRjbF9JbnRlcnAg
KiwgY29uc3QgY2hhciAqLCBpbnQpOwpjb25zdCBjaGFyICp4VGNsX0dldFZhcjIoVGNsX0ludGVy
cCAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKaW50IHhUY2xfVHJhY2VWYXIo
VGNsX0ludGVycCAqLCBjb25zdCBjaGFyICosIGludCwKICBUY2xfVmFyVHJhY2VQcm9jICosIENs
aWVudERhdGEpOwppbnQgeFRjbF9UcmFjZVZhcjIoVGNsX0ludGVycCAqLCBjb25zdCBjaGFyICos
IGNvbnN0IGNoYXIgKiwgaW50LAogIFRjbF9WYXJUcmFjZVByb2MgKiwgQ2xpZW50RGF0YSk7Cmlu
dCB4VGNsX1VudHJhY2VWYXIoVGNsX0ludGVycCAqLCBjb25zdCBjaGFyICosIGludCwKICBUY2xf
VmFyVHJhY2VQcm9jICosIENsaWVudERhdGEpOwppbnQgeFRjbF9VbnRyYWNlVmFyMihUY2xfSW50
ZXJwICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQsCiAgVGNsX1ZhclRyYWNlUHJv
YyAqLCBDbGllbnREYXRhKTsKaW50IHhUY2xfUmVnRXhwTWF0Y2goVGNsX0ludGVycCAqLCBjb25z
dCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmludCB4VGNsX1N0cmluZ01hdGNoKGNvbnN0IGNoYXIg
KiwgY29uc3QgY2hhciAqKTsKY29uc3QgY2hhciAqeFRjbF9EU3RyaW5nQXBwZW5kKFRjbF9EU3Ry
aW5nICosIGNvbnN0IGNoYXIgKiwgaW50KTsKY29uc3QgY2hhciAqeFRjbF9EU3RyaW5nQXBwZW5k
RWxlbWVudChUY2xfRFN0cmluZyAqLCBjb25zdCBjaGFyICopOwppbnQgeFRjbF9HZXRDb21tYW5k
SW5mbyhUY2xfSW50ZXJwICosIGNvbnN0IGNoYXIgKiwgVGNsX0NtZEluZm8gKik7CmludCB4VGNs
X1NldENvbW1hbmRJbmZvKFRjbF9JbnRlcnAgKiwgY29uc3QgY2hhciAqLCBUY2xfQ21kSW5mbyAq
KTsKaW50IHhUY2xfQ3JlYXRlQ29tbWFuZChUY2xfSW50ZXJwICosIGNvbnN0IGNoYXIgKiwgVGNs
X0NtZFByb2MgKiwgQ2xpZW50RGF0YSwKICBUY2xfQ21kRGVsZXRlUHJvYyAqKTsKaW50IHhUY2xf
RGVsZXRlQ29tbWFuZChUY2xfSW50ZXJwICosIGNvbnN0IGNoYXIgKik7CmludCB4VGNsX0NyZWF0
ZU9iakNvbW1hbmQoVGNsX0ludGVycCAqLCBjb25zdCBjaGFyICosCiAgVGNsX09iakNtZFByb2Mg
KiwgQ2xpZW50RGF0YSwgVGNsX0NtZERlbGV0ZVByb2MgKik7CmludCB4VGNsX1NldFJlc3VsdChU
Y2xfSW50ZXJwICosIGNvbnN0IGNoYXIgKiwgVGNsX0ZyZWVQcm9jICopOwppbnQgeFRjbF9BcHBl
bmRSZXN1bHQoVGNsX0ludGVycCAqLCBjb25zdCBjaGFyICopOwppbnQgeFRjbF9BcHBlbmRFbGVt
ZW50KFRjbF9JbnRlcnAgKiwgY29uc3QgY2hhciAqKTsKaW50IHhUY2xfQXBwZW5kRWxlbWVudChU
Y2xfSW50ZXJwICosIGNvbnN0IGNoYXIgKik7CnZvaWQgeFRjbF9GaW5kRXhlY3V0YWJsZShjb25z
dCBjaGFyICopOwpjb25zdCBjaGFyICp4VGNsX0dldE5hbWVPZkV4ZWN1dGFibGUodm9pZCk7Cmlu
dCB4VGNsX0V2YWxGaWxlKFRjbF9JbnRlcnAgKiwgY29uc3QgY2hhciAqKTsKaW50IHhUY2xfRXZh
bChUY2xfSW50ZXJwICosIGNvbnN0IGNoYXIgKik7CmludCB4VGNsX0dsb2JhbEV2YWwoVGNsX0lu
dGVycCAqLCBjb25zdCBjaGFyICopOwppbnQgeFRjbF9SZWNvcmRBbmRFdmFsKFRjbF9JbnRlcnAg
KiwgY29uc3QgY2hhciAqLCBpbnQpOwppbnQgeFRjbF9Db21tYW5kQ29tcGxldGUoY29uc3QgY2hh
ciAqKTsKaW50IHhUY2xfU3BsaXRMaXN0KFRjbF9JbnRlcnAgKmludGVycCwgY29uc3QgY2hhciAq
bGlzdCwgaW50ICosIGNoYXIgKioqKTsKaW50IHhUY2xfR2V0SW50KFRjbF9JbnRlcnAgKmludGVy
cCwgY29uc3QgY2hhciAqbGlzdCwgaW50ICopOwpjbGFzcyBEU3RyaW5nIDogcHVibGljIFByaW50
ZiB7CnByaXZhdGU6CiAgZW51bSB7CiAgICBEU1RSSU5HX1NUQVRJQz0xMjgKICB9OwogIGNoYXIg
KnN0cmluZzsKICBpbnQgY3VycmVudF9sZW5ndGg7CiAgaW50IHNwYWNlYXZhaWw7CiAgY2hhciBz
dGF0aWNzcGFjZVtEU1RSSU5HX1NUQVRJQ107CnByaXZhdGU6CiAgdm9pZCBleHBhbmQoaW50IHN6
KTsKcHVibGljOgogIGludCBsZW5ndGgodm9pZCkgY29uc3Q7CiAgaW5saW5lIGNvbnN0IGNoYXIg
KnZhbHVlKHZvaWQpIGNvbnN0IHsKICAgIHJldHVybihzdHJpbmcpOwogIH0KICBjb25zdCBjaGFy
ICpzZXQoY29uc3QgY2hhciAqKTsKICBjb25zdCBjaGFyICpzZXQoY29uc3QgRFN0cmluZyAmKTsK
ICB2aXJ0dWFsIGludCB0cnVuYyhpbnQgbGc9MCk7CiAgY29uc3QgY2hhciAqYXBwZW5kKGNvbnN0
IGNoYXIgKiwgaW50IGxnPS0xKTsKICBjb25zdCBjaGFyICphcHBlbmQoY2hhciBjaCwgaW50IGxn
PTEpOwogIGNvbnN0IGNoYXIgKmFwcGVuZChjb25zdCBEU3RyaW5nICYpOwpwdWJsaWM6CiAgaW5s
aW5lIGNoYXIgKm11dGFibGVfdmFsdWUodm9pZCkgY29uc3QgewogICAgcmV0dXJuKHN0cmluZyk7
CiAgfQpwdWJsaWM6CnB1YmxpYzoKICB2b2lkIHJlbW92ZV9hbGxfY2hhcnNldChjb25zdCBjaGFy
ICopOwogIGludCBjb3VudF9hbGxfY2hhcnNldChjb25zdCBjaGFyICopIGNvbnN0OwpwdWJsaWM6
CiAgdm9pZCB0cmFuc2xhdGUoY2hhciBjaCwgY29uc3QgY2hhciAqc3RyKTsKICB2b2lkIHRyYW5z
bGF0ZShjb25zdCBjaGFyICpzMSwgY29uc3QgY2hhciAqczIpOwogIHZvaWQgdHJhbnNsYXRlX3N0
cmluZyhjb25zdCBjaGFyICpzMSwgY29uc3QgY2hhciAqczIpOwogIHZvaWQgY29tcHJlc3NfZHVw
cyhjb25zdCBjaGFyICpzMSwgY29uc3QgY2hhciAqczIpOwpwdWJsaWM6CiAgdm9pZCByZXRhaW5f
Zmlyc3RfbGVmdF9jaGFyc2V0KGNvbnN0IGNoYXIgKiwgaW50IG9mZnNldD0wKTsKICB2b2lkIHJl
dGFpbl9maXJzdF9yaWdodF9jaGFyc2V0KGNvbnN0IGNoYXIgKiwgaW50IG9mZnNldD0wKTsKICB2
b2lkIHJldGFpbl9sYXN0X2xlZnRfY2hhcnNldChjb25zdCBjaGFyICosIGludCBvZmZzZXQ9MCk7
CiAgdm9pZCByZXRhaW5fbGFzdF9yaWdodF9jaGFyc2V0KGNvbnN0IGNoYXIgKiwgaW50IG9mZnNl
dD0wKTsKcHVibGljOgogIHZvaWQgdHJpbV9yaWdodF9jaGFyc2V0KGNvbnN0IGNoYXIgKik7CiAg
dm9pZCB0cmltX2xlZnRfY2hhcnNldChjb25zdCBjaGFyICopOwpwdWJsaWM6CiAgdm9pZCByZXBs
YWNlX2NoYXIoaW50IGksIGNoYXIgY2gpOwpwdWJsaWM6CiAgaW50IHBvc19sZWZ0KGNoYXIgY2gp
OwogIGludCBwb3NfbGVmdChjb25zdCBjaGFyICpjaCk7CiAgaW50IHBvc19yaWdodChjaGFyIGNo
KTsKICBpbnQgcG9zX3JpZ2h0KGNvbnN0IGNoYXIgKmNoKTsKcHVibGljOgogIHZvaWQgcmVtb3Zl
X3JpZ2h0KGludCBjb3VudCk7CiAgdm9pZCByZW1vdmVfbGVmdChpbnQgY291bnQpOwogIHZvaWQg
cmVtb3ZlX2xhc3QoaW50IGNvdW50PTEpOwpwdWJsaWM6CiAgdm9pZCBhc19Dc3RyaW5nKHZvaWQp
OwogIHZvaWQgYXNfQ3ZhcihjaGFyIGNoKTsKICB2b2lkIGdyb3dfdG8oaW50IGxlbmd0aCk7CiAg
Y2hhciBnZXRfbGFzdCh2b2lkKSBjb25zdDsKcHVibGljOgogIHZvaWQgb3JfY2hhcihpbnQgaSwg
dWNoYXIgY2gpOwogIHZvaWQgYW5kX2NoYXIoaW50IGksIHVjaGFyIGNoKTsKcHVibGljOgogIHZv
aWQgc3RyX3RvdXBwZXIodm9pZCk7CiAgdm9pZCBzdHJfdG9sb3dlcih2b2lkKTsKICB2b2lkIHJl
dmVyc2Uodm9pZCk7CnB1YmxpYzoKICB2aXJ0dWFsIGxvbmcgaW9zZWVrKGxvbmcgb2Zmc2V0LCBp
bnQgcHRybmFtZSk7CiAgdmlydHVhbCBsb25nIGlvdGVsbCh2b2lkKTsKICB2aXJ0dWFsIGludCBp
b2ZsdXNoKHZvaWQpOwogIHZpcnR1YWwgaW50IGlvcmV3aW5kKHZvaWQpOwogIHZpcnR1YWwgaW50
IGlvZ2V0cyhEU3RyaW5nICZzdHIpOwogIHZpcnR1YWwgaW50IGlvZ2V0Yyh2b2lkKTsKICB2aXJ0
dWFsIGludCBpb3B1dHMoY29uc3QgY2hhciAqYnVmKTsKICB2aXJ0dWFsIGludCBpb3B1dGMoY2hh
ciBjKTsKICB2aXJ0dWFsIGludCBpb2ZpbGVubyh2b2lkKSA7CiAgdmlydHVhbCBpbnQgaW9lcnJv
cih2b2lkKTsKICB2aXJ0dWFsIGludCBpb2NsZWFyZXJyKHZvaWQpOwogIHZpcnR1YWwgaW50IGlv
ZmNsb3NlKHZvaWQpOwogIHZpcnR1YWwgaW50IGlvcGNsb3NlKHZvaWQpOwogIHZpcnR1YWwgaW50
IGlvd3JpdGUoY29uc3Qgdm9pZCAqcHRyLCBpbnQgc2l6ZSwgaW50IG5pdGVtcyk7CiAgdmlydHVh
bCBpbnQgaW9yZWFkKHZvaWQgKnB0ciwgaW50IHNpemUsIGludCBuaXRlbXMpOwogIHZpcnR1YWwg
aW50IGVuZHByaW50Zih2b2lkKTsKICB2aXJ0dWFsIGNvbnN0IGNoYXIgKmZuYW1lX2Zvcih2b2lk
KTsKICB2aXJ0dWFsIGludCBzZXR2YnVmKGludCBjb2RlKTsKcHVibGljOgogIERTdHJpbmcodm9p
ZCk7CiAgRFN0cmluZyhjb25zdCBEU3RyaW5nICYpOwogIERTdHJpbmcoY29uc3QgY2hhciAqaW5p
dGlhbCk7CiAgdmlydHVhbCB+RFN0cmluZygpOwpwdWJsaWM6CiAgdm9pZCBvcGVyYXRvcj0oY29u
c3QgRFN0cmluZyAmbW9kZWwpOwogIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEU3RyaW5nICZyKSBj
b25zdDsKcHJpdmF0ZToKICB2b2lkIGluaXRfRFN0cmluZyh2b2lkKTsKcHJpdmF0ZToKICBzdGF0
aWMgaW50IG1lbWJlcihjaGFyIGNoLCBjb25zdCBjaGFyICpzKTsKcHVibGljOgogIHN0YXRpYyBp
bnQgZGVidWcoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KTsKcHJpdmF0ZToKICBzdGF0aWMg
dm9pZCBjaGVjayhpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsCiAgICBjb25zdCBEU3RyaW5n
ICZidWYsIGNvbnN0IGNoYXIgKmV4cGVjdCk7Cn07CmNoYXIgKm1zYXZlc3RyKGNvbnN0IGNoYXIg
KnMpOwpjaGFyICptc2F2ZXN0cihjb25zdCBEU3RyaW5nICZzKTsKZXh0ZXJuIGludCBVSV9hdG9Y
X2ZhdWx0OwppbnQgVUlfYXRvaShjb25zdCBjaGFyICpwKTsKaW50IFVJX2F0b2ludDMyKGNvbnN0
IGNoYXIgKnApOwppbnQgVUlfc3RydG9sKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGNoYXIgKip0ZXJt
LCBpbnQgYmFzZSk7CmludCBVSV9hdG91aW50MzIoY29uc3QgY2hhciAqcCwgdWludDMyICZ2YWx1
ZV9yZXQpOwppbnQgVUlfYXRvdWludDY0KGNvbnN0IGNoYXIgKnAsIHVpbnQ2NCAmdmFsdWVfcmV0
KTsKdWludDY0IFVJX2F0b3VpbnQ2NChjb25zdCBjaGFyICpwKTsKdWludDY0IFVJX3N0cnRvdWlu
dDY0IChjb25zdCBjaGFyICpwLCBjb25zdCBjaGFyICoqdGVybSwgaW50IGJhc2UpOwpkb3VibGUg
VUlfYXRvZihjb25zdCBjaGFyICpwKTsKZG91YmxlIFVJX3N0cnRvZChjb25zdCBjaGFyICpwLCBj
b25zdCBjaGFyICoqZW5kKTsKaW50MTI4IFVJX2F0b2ludDEyOChjb25zdCBjaGFyICpwKTsKaW50
MTI4IFVJX3N0cnRvaW50MTI4KGNvbnN0IGNoYXIgKnAsIGNvbnN0IGNoYXIgKip0ZXJtLCBpbnQg
YmFzZSk7CmNvbnN0IGNoYXIgKlVJX3NwcmludF9pbnQ2NCAoRFN0cmluZyAmYnVmLCBjb25zdCBj
aGFyICpmbXQsIGludDY0IHgpOwpjb25zdCBjaGFyICpVSV9zcHJpbnRfdWludDY0KERTdHJpbmcg
JmJ1ZiwgY29uc3QgY2hhciAqZm10LCB1aW50NjQgeCk7CnRlbXBsYXRlPGNsYXNzIFQ+CmNsYXNz
IFRCYXNpY0ZsZXhBcnJheSB7CnByb3RlY3RlZDoKICBpbnQgaW5pdGlhbF9hbGxvYzsKICBpbnQg
bmFsbG9jOwogIFQgKnA7CiAgZW51bSB7CiAgICBtYXggPSAweDIwMDAwLAogICAgbWluID0gOCwK
ICAgIHNmID0gMgogIH07CnB1YmxpYzoKICBpbnQgbjsKICBpbnQgY2xpZW50X2luZm87CiAgVEJh
c2ljRmxleEFycmF5KGludCBfaW5pdGlhbF9hbGxvYz1taW4pOwogIHZpcnR1YWwgflRCYXNpY0Zs
ZXhBcnJheSgpOwogIGlubGluZSBUICZvcGVyYXRvcltdKGludCB4KSBjb25zdCB7cmV0dXJuKHBb
eF0pO30KICBUICZzYWZlX2luZGV4KGludCB4KSBjb25zdDsKICBUICZzYWZlX2V4dGVuZGluZ19p
bmRleChpbnQgeCk7CiAgaW5saW5lIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFQgJik7CiAgYm9vbCBp
c19zcGFjZShpbnQgbnNsb3RzKSBjb25zdDsKICBpbnQgZ2V0X25hbGxvYyh2b2lkKSBjb25zdCB7
cmV0dXJuKG5hbGxvYyk7fQogIHZvaWQgcmVhbGxvYyhpbnQgbnNsb3RzKTsKICB2b2lkIGFkZChj
b25zdCBUICZwKTsKICBib29sIGFkZF9jaGVjayhjb25zdCBUICZwKTsKICB2b2lkIHB1cmdlKHZv
aWQpOwogIHZvaWQgZHVtcCh2b2lkKSBjb25zdDsKICB2aXJ0dWFsIHZvaWQgcHJpbnQoUHJpbnRm
ICpmcCwgaW50IHByaW50X2xldmVsPTEwKSBjb25zdDsKICB2aXJ0dWFsIFQgKnJlYWxsb2NfYW5k
X2ZpbGwoY29uc3QgVCAqcCwgaW50IG5hbGxvYywgaW50IG5uYWxsb2MpIGNvbnN0OwogIHZpcnR1
YWwgdm9pZCBkZWFsbG9jKFQgKnApIGNvbnN0Owp9Owp0ZW1wbGF0ZTxjbGFzcyBUPgpjbGFzcyBU
TWFsbG9jRmxleEFycmF5IDogcHVibGljIFRCYXNpY0ZsZXhBcnJheTxUPiB7CnB1YmxpYzoKICBU
TWFsbG9jRmxleEFycmF5KGludCBpbml0aWFsX2FsbG9jPS0xKTsKICB2aXJ0dWFsIH5UTWFsbG9j
RmxleEFycmF5KCk7CiAgdmlydHVhbCBUICpyZWFsbG9jX2FuZF9maWxsKGNvbnN0IFQgKnAsIGlu
dCBuYWxsb2MsIGludCBubmFsbG9jKSBjb25zdDsKICB2aXJ0dWFsIHZvaWQgZGVhbGxvYyhUICpw
KSBjb25zdDsKfTsKdGVtcGxhdGU8Y2xhc3MgVD4KY2xhc3MgVEZsZXhBcnJheSA6IHB1YmxpYyBU
QmFzaWNGbGV4QXJyYXk8VD4gewpwdWJsaWM6CiAgVCBsYXN0OwogIGJvb2wgY29udGFpbnMoY29u
c3QgVCAmeCkgY29uc3Q7CiAgVEZsZXhBcnJheShpbnQgaW5pdGlhbF9hbGxvYz0tMSk7CiAgdmly
dHVhbCB+VEZsZXhBcnJheSgpOwogIGJvb2wgcmVtb3ZlKGNvbnN0IFQgJngpOwogIHZvaWQgc29y
dChpbnQgKCpzb3J0ZXIpKGNvbnN0IFQqLCBjb25zdCBUKikpOwogIFQgKmJzZWFyY2goY29uc3Qg
VCAqa2V5LCBpbnQgKCpzb3J0ZXIpKGNvbnN0IFQqLCBjb25zdCBUKikpIGNvbnN0OwogIFQgKmxz
ZWFyY2goY29uc3QgVCAqa2V5LCBpbnQgKCpzb3J0ZXIpKGNvbnN0IFQqLCBjb25zdCBUKikpIGNv
bnN0Owp9Owp0ZW1wbGF0ZTxjbGFzcyBUPgpjbGFzcyBURHVtcEZsZXhBcnJheSA6IHB1YmxpYyBU
RmxleEFycmF5PFQ+IHsKcHVibGljOgogIFREdW1wRmxleEFycmF5KGludCBpbml0aWFsX2FsbG9j
PS0xKTsKICB2aXJ0dWFsIH5URHVtcEZsZXhBcnJheSgpOwpwdWJsaWM6CiAgdmlydHVhbCB2b2lk
IHByaW50KFByaW50ZiAqZnAsIGludCBwcmludF9sZXZlbD0xMCkgY29uc3Q7Cn07CnRlbXBsYXRl
PGNsYXNzIFQ+CmNsYXNzIFRNYWxsb2NGbGV4U3RhY2sgOiBwdWJsaWMgVE1hbGxvY0ZsZXhBcnJh
eTxUPiB7CnB1YmxpYzoKICBUTWFsbG9jRmxleFN0YWNrKGludCBpbml0aWFsX2FsbG9jPS0xKTsK
ICB2aXJ0dWFsIH5UTWFsbG9jRmxleFN0YWNrKCk7CnB1YmxpYzoKICB2b2lkIHJlcGxhY2V0b3Ao
Y29uc3QgVCB4KTsKICB2b2lkIHB1c2huZXcoY29uc3QgVCB4KTsKICB2b2lkIHB1c2goaW50IGxl
dmVsPTEpOwogIHZvaWQgcG9wKGludCBsZXZlbD0wKTsKICBjb25zdCBUICZkaXJ0b3AoaW50IGxl
dmVsPTApIGNvbnN0Owp9OwpzdHJ1Y3QgVGNsX0hhc2hUYWJsZTsKdGVtcGxhdGUgPGNsYXNzIFQ+
IGNsYXNzIFRIYXNoVGFibGVJdGVyYXRvcjsKdGVtcGxhdGU8Y2xhc3MgVD4KY2xhc3MgVEhhc2hU
YWJsZSB7CmZyaWVuZCBjbGFzcyBUSGFzaFRhYmxlSXRlcmF0b3I8VD47CnByaXZhdGU6CiAgVGNs
X0hhc2hUYWJsZSAqdGFibGU7CnB1YmxpYzoKICBUSGFzaFRhYmxlKHZvaWQpOwogIH5USGFzaFRh
YmxlKCk7CiAgdm9pZCBhZGQoY29uc3QgVCBpdGVtKTsKICB2b2lkIHJlbW92ZShjb25zdCBUIGl0
ZW0pOwp9Owp0ZW1wbGF0ZTxjbGFzcyBUPgpjbGFzcyBUSGFzaFRhYmxlSXRlcmF0b3Igewpwcml2
YXRlOgogIGNvbnN0IFRIYXNoVGFibGU8VD4gJnRhYmxlOwogIFRjbF9IYXNoU2VhcmNoICpzZWFy
Y2g7CnB1YmxpYzoKICBUSGFzaFRhYmxlSXRlcmF0b3IoY29uc3QgVEhhc2hUYWJsZTxUPiAmX3Rh
YmxlKTsKICB+VEhhc2hUYWJsZUl0ZXJhdG9yKHZvaWQpOwogIGJvb2wgbmV4dChUICZpdGVtKTsK
fTsKdHlwZWRlZiBsb25nIGxvbmcgaW50IFZhbHVlSW50VHlwZTsKdHlwZWRlZiBkb3VibGUgVmFs
dWVGbG9hdFR5cGU7CmVudW0gVmFsdWVQcmVjZWRlbmNlIHsKICAgRVBfSU5UMzIKICAsRVBfSU5U
NjQKICAsRVBfSU5UMTI4CiAgLEVQX0ZMT0FUCiAgLEVQX0RPVUJMRQogICxFUF9VTkNFUlRBSU4K
ICAsRVBfU1RSSU5HCiAgLEVQX0NPTExFQ1RJT04KICAsRVBfUkVMQVRJT04KfTsKZW51bSBOZXdP
cGVyYXRvciB7CiAgIE5PUF9FT0YKICAsTk9QX0xQQVIKICAsTk9QX1JQQVIKICAsTk9QX0xTUVVB
UkUKICAsTk9QX1JTUVVBUkUKICAsTk9QX0xDVVJMWQogICxOT1BfUkNVUkxZCiAgLE5PUF9WQUxV
RQogICxOT1BfSURFTlQKICAsTk9QX1NUUklORwogICxOT1BfTElTVAogICxOT1BfVEhVTksKICAs
Tk9QX0RPTExBUgogICxOT1BfQ09NTUEKICAsTk9QX1BFUklPRAogICxOT1BfRE9URE9UCiAgLE5P
UF9BU1NJR04KICAsTk9QX1BMVVMKICAsTk9QX01JTlVTCiAgLE5PUF9SRVZNSU5VUwogICxOT1Bf
TVVMCiAgLE5PUF9ESVYKICAsTk9QX1JFVkRJVgogICxOT1BfTU9ECiAgLE5PUF9SRVZNT0QKICAs
Tk9QX01JTgogICxOT1BfTUFYCiAgLE5PUF9ORUdBVEUKICAsTk9QX1VQTFVTCiAgLE5PUF9BQlMK
ICAsTk9QX1VNQVgKICAsTk9QX1VNSU4KICAsTk9QX1VUWVAKICAsTk9QX0xFRlRTSElGVAogICxO
T1BfUklHSFRTSElGVAogICxOT1BfQU5ECiAgLE5PUF9YT1IKICAsTk9QX09SCiAgLE5PUF9DT01Q
TEVNRU5UCiAgLE5PUF9CQUNLX1NMQVNICiAgLE5PUF9MRQogICxOT1BfTFQKICAsTk9QX0VRCiAg
LE5PUF9ORQogICxOT1BfR0UKICAsTk9QX0dUCiAgLE5PUF9DT01QQVJFCiAgLE5PUF9SRVZDT01Q
QVJFCiAgLE5PUF9TQ0FORAogICxOT1BfU0NPUgogICxOT1BfUVVFU1QKICAsTk9QX0NPTE9OCiAg
LE5PUF9JU0lORgogICxOT1BfSVNOQU4KICAsTk9QX0lTWkVSTwogICxOT1BfU0NOT1QKICAsTk9Q
X1JPVU5ECiAgLE5PUF9JTlQKICAsTk9QX0NFSUwKICAsTk9QX0ZMT09SCiAgLE5PUF9JT1RBCiAg
LE5PUF9QT1cKICAsTk9QX0FUQU4yCiAgLE5PUF9GTU9ECiAgLE5PUF9IWVBPVAogICxOT1BfQ09Q
WVNJR04KICAsTk9QX0RPVUJMRQogICxOT1BfU1FSVAogICxOT1BfRVhQCiAgLE5PUF9MT0cKICAs
Tk9QX0xPRzEwCiAgLE5PUF9TSU4KICAsTk9QX0NPUwogICxOT1BfVEFOCiAgLE5PUF9TSU5ICiAg
LE5PUF9DT1NICiAgLE5PUF9UQU5ICiAgLE5PUF9BU0lOCiAgLE5PUF9BQ09TCiAgLE5PUF9BVEFO
CiAgLE5PUF9BU0lOSAogICxOT1BfQUNPU0gKICAsTk9QX0FUQU5ICiAgLE5PUF9TVFJTVFIKICAs
Tk9QX1NUUkNNUAogICxOT1BfU1RSQ0FTRUNNUAogICxOT1BfU1RSVkFMQ01QCiAgLE5PUF9TVFJW
QUxDQVNFQ01QCiAgLE5PUF9TVFJQQ01QCiAgLE5PUF9TVFJQQ0FTRUNNUAogICxOT1BfU1RSTEVO
CiAgLE5PUF9BVE9JCiAgLE5PUF9BVE9GCn07CmNsYXNzIERTdHJpbmc7CmNsYXNzIFByaW50ZjsK
Y2xhc3MgTmV3VmFsdWU7CmNsYXNzIE5ld0V4cHI7CmNsYXNzIE5ld1ZhcmlhYmxlQ2xvc3VyZTsK
Y2xhc3MgTXVsdGlOZXdWYWx1ZTsKY2xhc3MgTXVsdGlOZXdFeHByOwpjbGFzcyBSZWxhdGlvbjsK
Y2xhc3MgVHVwbGU7CnR5cGVkZWYgaW50ICgqTmV3VmFsdWVsZWFmZXZhbHVhdG9yKShjb25zdCBj
aGFyICpuYW1lLAogIHZvaWQgKmhhbmRsZSwgTmV3VmFsdWUgJmx2YWwsIE5ld1ZhbHVlICpydmFs
KTsKY2xhc3MgSW50ZWdlckJhc2VWYWx1ZTsKY2xhc3MgSW50ZWdlcjMyVmFsdWU7CmNsYXNzIElu
dGVnZXIxMjhWYWx1ZTsKY2xhc3MgRG91YmxlNjRWYWx1ZTsKY2xhc3MgVW5jZXJ0YWluRmxvYXRW
YWx1ZTsKY2xhc3MgU3RyaW5nVmFsdWU7CmNsYXNzIE5ld1ZhbHVlIHsKcHVibGljOgogIHN0YXRp
YyBpbnQgZG9fcmV4cHJfbWF0Y2g7CnB1YmxpYzoKICBzdGF0aWMgaW50IG50ZW1wczsKICBzdGF0
aWMgaW50IG50ZW1wc19tYXg7CnB1YmxpYzoKICBjaGFyIGlzX3NldDsKcHVibGljOgogIGNvbnN0
IGNoYXIgKnByZWZmbXQ7CnB1YmxpYzoKICBOZXdWYWx1ZSh2b2lkKTsKICB2aXJ0dWFsIH5OZXdW
YWx1ZSgpOwogIHN0YXRpYyB2b2lkIGRlbGV0ZV9zdGF0aWModm9pZCk7CnB1YmxpYzoKICB2aXJ0
dWFsIFZhbHVlUHJlY2VkZW5jZSB0eXBlX3ByZWModm9pZCkgY29uc3QgPSAwOwogIHZpcnR1YWwg
Ym9vbCBpc19mbG9hdF90eXBlKHZvaWQpIGNvbnN0ID0gMDsKICB2aXJ0dWFsIGJvb2wgaXNfaW50
ZWdyYWxfdHlwZSh2b2lkKSBjb25zdCA9IDA7CiAgdmlydHVhbCBjb25zdCBjaGFyICp0eXBlX3N0
cmluZyh2b2lkKSBjb25zdCA9IDA7CiAgdmlydHVhbCBjb25zdCBjaGFyICpmbXRfc3RyaW5nKHZv
aWQpIGNvbnN0ID0gMDsKcHVibGljOgogIHZpcnR1YWwgTmV3VmFsdWUgJmNsb25lKHZvaWQpIGNv
bnN0ID0gMDsKcHVibGljOgogIHZvaWQgcHJpbnQoUHJpbnRmICpmcCwgaW50IHByaW50X3R5cGU9
MCkgY29uc3Q7CiAgdm9pZCBzcHJpbnQoUHJpbnRmICpmcCwgYm9vbCBwcmludF9xdW90ZT10cnVl
KSBjb25zdDsKICBpbnQgcHJpbnRfd2lkdGgoYm9vbCBwcmludF9xdW90ZSkgY29uc3Q7CiAgYm9v
bCBpc19udW1lcmljX3R5cGUodm9pZCkgY29uc3Q7CiAgY29uc3QgY2hhciAqYXNfc3RyaW5nKHZv
aWQpIGNvbnN0OwpwdWJsaWM6CiAgSW50ZWdlcjMyVmFsdWUgJmNvbXBhcmUoY29uc3QgTmV3VmFs
dWUgJikgY29uc3Q7CiAgaW50IGNvbXBhcmVpbnQoY29uc3QgTmV3VmFsdWUgJikgY29uc3Q7CnB1
YmxpYzoKICB2aXJ0dWFsIGJvb2wgaXNfemVybyh2b2lkKSBjb25zdCA9IDA7CnB1YmxpYzoKICB2
aXJ0dWFsIE5ld1ZhbHVlICZvcGVyYXRvcisoY29uc3QgTmV3VmFsdWUgJikgY29uc3Q7CiAgdmly
dHVhbCBOZXdWYWx1ZSAmb3BlcmF0b3ItKGNvbnN0IE5ld1ZhbHVlICYpIGNvbnN0OwogIHZpcnR1
YWwgTmV3VmFsdWUgJm9wZXJhdG9yKihjb25zdCBOZXdWYWx1ZSAmKSBjb25zdDsKICB2aXJ0dWFs
IE5ld1ZhbHVlICZvcGVyYXRvci8oY29uc3QgTmV3VmFsdWUgJikgY29uc3Q7CiAgdmlydHVhbCBO
ZXdWYWx1ZSAmbWluKGNvbnN0IE5ld1ZhbHVlICYpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUg
Jm1heChjb25zdCBOZXdWYWx1ZSAmKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZhYnModm9p
ZCkgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmb3BlcmF0b3IrKHZvaWQpIGNvbnN0OwogIHZp
cnR1YWwgTmV3VmFsdWUgJm9wZXJhdG9yLSh2b2lkKSBjb25zdDsKICB2aXJ0dWFsIEludGVnZXIz
MlZhbHVlICZvcGVyYXRvciEodm9pZCkgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmcmV2c3Vi
KGNvbnN0IE5ld1ZhbHVlICYpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJnJldmRpdihjb25z
dCBOZXdWYWx1ZSAmKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZvcGVyYXRvciUoY29uc3Qg
TmV3VmFsdWUgJikgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmcmV2bW9kKGNvbnN0IE5ld1Zh
bHVlICYpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJm9wZXJhdG9yfih2b2lkKSBjb25zdDsK
ICB2aXJ0dWFsIE5ld1ZhbHVlICZvcGVyYXRvciYoY29uc3QgTmV3VmFsdWUgJikgY29uc3Q7CiAg
dmlydHVhbCBOZXdWYWx1ZSAmb3BlcmF0b3J8KGNvbnN0IE5ld1ZhbHVlICYpIGNvbnN0OwogIHZp
cnR1YWwgTmV3VmFsdWUgJm9wZXJhdG9yXihjb25zdCBOZXdWYWx1ZSAmKSBjb25zdDsKICB2aXJ0
dWFsIE5ld1ZhbHVlICZvcGVyYXRvcjw8KGNvbnN0IE5ld1ZhbHVlICYpIGNvbnN0OwogIHZpcnR1
YWwgTmV3VmFsdWUgJm9wZXJhdG9yPj4oY29uc3QgTmV3VmFsdWUgJikgY29uc3Q7CiAgdmlydHVh
bCBJbnRlZ2VyMzJWYWx1ZSAmb3BlcmF0b3I8PShjb25zdCBOZXdWYWx1ZSAmKSBjb25zdDsKICB2
aXJ0dWFsIEludGVnZXIzMlZhbHVlICZvcGVyYXRvcjwgKGNvbnN0IE5ld1ZhbHVlICYpIGNvbnN0
OwogIHZpcnR1YWwgSW50ZWdlcjMyVmFsdWUgJm9wZXJhdG9yPT0oY29uc3QgTmV3VmFsdWUgJikg
Y29uc3Q7CiAgdmlydHVhbCBJbnRlZ2VyMzJWYWx1ZSAmb3BlcmF0b3IhPShjb25zdCBOZXdWYWx1
ZSAmKSBjb25zdDsKICB2aXJ0dWFsIEludGVnZXIzMlZhbHVlICZvcGVyYXRvcj4gKGNvbnN0IE5l
d1ZhbHVlICYpIGNvbnN0OwogIHZpcnR1YWwgSW50ZWdlcjMyVmFsdWUgJm9wZXJhdG9yPj0oY29u
c3QgTmV3VmFsdWUgJikgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmY2VpbCh2b2lkKSBjb25z
dDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZmbG9vcih2b2lkKSBjb25zdDsKICB2aXJ0dWFsIE5ld1Zh
bHVlICZyb3VuZCh2b2lkKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZ0b19pbnRlZ2VyKHZv
aWQpIGNvbnN0OwogIHZpcnR1YWwgSW50ZWdlcjMyVmFsdWUgJmlzX2luZih2b2lkKSBjb25zdDsK
ICB2aXJ0dWFsIEludGVnZXIzMlZhbHVlICZpc19uYW4odm9pZCkgY29uc3Q7CiAgdmlydHVhbCBO
ZXdWYWx1ZSAmcG93KGNvbnN0IE5ld1ZhbHVlICYpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUg
JmF0YW4yKGNvbnN0IE5ld1ZhbHVlICYpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJmZtb2Qo
Y29uc3QgTmV3VmFsdWUgJikgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmaHlwb3QoY29uc3Qg
TmV3VmFsdWUgJikgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmY29weXNpZ24oY29uc3QgTmV3
VmFsdWUgJikgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmdG9fZG91YmxlKHZvaWQpIGNvbnN0
OwogIHZpcnR1YWwgTmV3VmFsdWUgJnNxcnQodm9pZCkgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1
ZSAmZXhwKHZvaWQpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJmxvZyh2b2lkKSBjb25zdDsK
ICB2aXJ0dWFsIE5ld1ZhbHVlICZsb2cxMCh2b2lkKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVl
ICZzaW4odm9pZCkgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmY29zKHZvaWQpIGNvbnN0Owog
IHZpcnR1YWwgTmV3VmFsdWUgJnRhbih2b2lkKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZz
aW5oKHZvaWQpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJmNvc2godm9pZCkgY29uc3Q7CiAg
dmlydHVhbCBOZXdWYWx1ZSAmdGFuaCh2b2lkKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZh
c2luKHZvaWQpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJmFjb3Modm9pZCkgY29uc3Q7CiAg
dmlydHVhbCBOZXdWYWx1ZSAmYXRhbih2b2lkKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZh
c2luaCh2b2lkKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZhY29zaCh2b2lkKSBjb25zdDsK
ICB2aXJ0dWFsIE5ld1ZhbHVlICZhdGFuaCh2b2lkKSBjb25zdDsKICB2aXJ0dWFsIEludGVnZXIz
MlZhbHVlICZzdHJzdHIoY29uc3QgTmV3VmFsdWUgJnYxKSBjb25zdDsKICB2aXJ0dWFsIEludGVn
ZXIzMlZhbHVlICZzdHJjbXAoY29uc3QgTmV3VmFsdWUgJnYxKSBjb25zdDsKICB2aXJ0dWFsIElu
dGVnZXIzMlZhbHVlICZzdHJjYXNlY21wKGNvbnN0IE5ld1ZhbHVlICZ2MSkgY29uc3Q7CiAgdmly
dHVhbCBJbnRlZ2VyMzJWYWx1ZSAmc3RydmFsY21wKGNvbnN0IE5ld1ZhbHVlICZ2MSkgY29uc3Q7
CiAgdmlydHVhbCBJbnRlZ2VyMzJWYWx1ZSAmc3RydmFsY2FzZWNtcChjb25zdCBOZXdWYWx1ZSAm
djEpIGNvbnN0OwogIHZpcnR1YWwgSW50ZWdlcjMyVmFsdWUgJnN0cnBjbXAoY29uc3QgTmV3VmFs
dWUgJnYxKSBjb25zdDsKICB2aXJ0dWFsIEludGVnZXIzMlZhbHVlICZzdHJwY2FzZWNtcChjb25z
dCBOZXdWYWx1ZSAmdjEpIGNvbnN0OwogIHZpcnR1YWwgSW50ZWdlcjMyVmFsdWUgJnN0cmxlbih2
b2lkKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZhdG9pKHZvaWQpIGNvbnN0OwogIHZpcnR1
YWwgTmV3VmFsdWUgJmF0b2Yodm9pZCkgY29uc3Q7CiAgdmlydHVhbCB2b2lkIGNvbnZlcnQoRFN0
cmluZyAmdikgY29uc3Q7CiAgdmlydHVhbCB2b2lkIGNvbnZlcnQoSW50ZWdlcjMyVmFsdWUgJnYp
IGNvbnN0OwogIHZpcnR1YWwgdm9pZCBjb252ZXJ0KEludGVnZXIxMjhWYWx1ZSAmdikgY29uc3Q7
CiAgdmlydHVhbCB2b2lkIGNvbnZlcnQoRG91YmxlNjRWYWx1ZSAmdikgY29uc3Q7CiAgdmlydHVh
bCB2b2lkIGNvbnZlcnQoU3RyaW5nVmFsdWUgJnYpIGNvbnN0OwpwdWJsaWM6CnB1YmxpYzoKICB2
b2lkIGR1bXAodm9pZCk7CnB1YmxpYzoKICBzdGF0aWMgaW50IGV4cHIxMjgoVGNsX0ludGVycCAq
aW50ZXJwLCBpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpOwpwdWJsaWM6CiAgdm9pZCBkb21h
aW5fZXJyb3JfbXNnKGNvbnN0IGNoYXIgKm9wLCBjb25zdCBjaGFyICp0bmFtZSkgY29uc3Q7CiAg
dm9pZCBkb21haW5fZXJyb3JfZXJybm8oaW50IGVycm51bWJlciwgZG91YmxlIHZhbHVlKSBjb25z
dDsKcHVibGljOgogIEludGVnZXIxMjhWYWx1ZSAmZG9tYWluX2Vycm9yX2ludGVnZXIoY29uc3Qg
Y2hhciAqb3AsIGNvbnN0IGNoYXIgKnR5cGUpIGNvbnN0OwogIEludGVnZXIzMlZhbHVlICZkb21h
aW5fZXJyb3Jfc21hbGwoY29uc3QgY2hhciAqb3AsIGNvbnN0IGNoYXIgKnR5cGUpIGNvbnN0Owog
IEludGVnZXIzMlZhbHVlICZkb21haW5fZXJyb3JfYm9vbGVhbihjb25zdCBjaGFyICpvcCwgY29u
c3QgY2hhciAqdHlwZSkgY29uc3Q7CnB1YmxpYzoKICBpbnQzMiBkb21haW5fZXJyb3IoY29uc3Qg
Y2hhciAqb3AsIGNvbnN0IGludDMyJikgY29uc3Q7IGludDMyIGRvbWFpbl9lcnJvcihjb25zdCBj
aGFyICpvcCwgY29uc3QgaW50MzImLCBjb25zdCBpbnQzMiYpIGNvbnN0OyBpbnQzMiBlcnJvcl92
YWx1ZShjb25zdCBpbnQzMiYpIGNvbnN0OwogIGludDEyOCBkb21haW5fZXJyb3IoY29uc3QgY2hh
ciAqb3AsIGNvbnN0IGludDEyOCYpIGNvbnN0OyBpbnQxMjggZG9tYWluX2Vycm9yKGNvbnN0IGNo
YXIgKm9wLCBjb25zdCBpbnQxMjgmLCBjb25zdCBpbnQxMjgmKSBjb25zdDsgaW50MTI4IGVycm9y
X3ZhbHVlKGNvbnN0IGludDEyOCYpIGNvbnN0OwogIERTdHJpbmcgZG9tYWluX2Vycm9yKGNvbnN0
IGNoYXIgKm9wLCBjb25zdCBEU3RyaW5nJikgY29uc3Q7IERTdHJpbmcgZG9tYWluX2Vycm9yKGNv
bnN0IGNoYXIgKm9wLCBjb25zdCBEU3RyaW5nJiwgY29uc3QgRFN0cmluZyYpIGNvbnN0OyBEU3Ry
aW5nIGVycm9yX3ZhbHVlKGNvbnN0IERTdHJpbmcmKSBjb25zdDsKcHVibGljOgogIHN0YXRpYyBp
bnQgZHRjbHJvdW5kKGRvdWJsZSB4KTsKICBzdGF0aWMgdm9pZCBhZGRfZnJhY3Rpb24oRFN0cmlu
ZyAmYnVmKTsKICBzdGF0aWMgdm9pZCBwcmludF9mbG9hdDY0KERTdHJpbmcgJmJ1ZiwgZG91Ymxl
IHgpOwp9OwpjbGFzcyBOZXdFeHByIHsKcHVibGljOgogIE5ld09wZXJhdG9yIG9wOwpwdWJsaWM6
CiAgTmV3RXhwciAqbDsKICBOZXdFeHByICpyOwogIE5ld1ZhbHVlICp2YWw7CnB1YmxpYzoKICBO
ZXdFeHByKE5ld09wZXJhdG9yIG9wKTsKICB2aXJ0dWFsIH5OZXdFeHByKCk7CnB1YmxpYzoKICBz
dGF0aWMgSW50ZWdlcjEyOFZhbHVlIHplcm9fdmFsOwpwdWJsaWM6CiAgTmV3VmFsdWUgJmV2YWx1
YXRlKHZvaWQpIGNvbnN0OwogIE5ld1ZhbHVlICZldmFsKE5ld1ZhbHVlbGVhZmV2YWx1YXRvciBm
dW5jLCBOZXdWYXJpYWJsZUNsb3N1cmUgKik7CnB1YmxpYzoKICB2b2lkIGRvbWFpbl9lcnJvcihj
b25zdCBjaGFyICptc2cpIGNvbnN0OwogIHN0YXRpYyBJbnRlZ2VyMzJWYWx1ZSAmbWFrZV9ib29s
ZWFudmFsdWUoaW50KTsKICBzdGF0aWMgSW50ZWdlcjMyVmFsdWUgJm1ha2Vfc21hbGx2YWx1ZShp
bnQpOwpwdWJsaWM6CiAgc3RhdGljIGJvb2wgdHJhY2VfZXZhbDsKcHVibGljOgogIHZvaWQgZHVt
cCh2b2lkKSBjb25zdDsKICB2b2lkIHByaW50KFByaW50ZiAqZnAsIGludCBkZXB0aD0wKSBjb25z
dDsKICB2b2lkIGluZml4KERTdHJpbmcgJnN0cikgY29uc3Q7CnB1YmxpYzoKICBOZXdWYWx1ZSAm
YmluYXJ5X2NvbWJpbmUoTmV3T3BlcmF0b3Igb3AsCiAgICBjb25zdCBOZXdWYWx1ZSAmbGUsIGNv
bnN0IE5ld1ZhbHVlICZyZSkgY29uc3Q7CiAgTmV3VmFsdWUgJnVuYXJ5X2NvbWJpbmUoTmV3T3Bl
cmF0b3Igb3AsCiAgICBjb25zdCBOZXdWYWx1ZSAmbGUpIGNvbnN0Owpwcml2YXRlOgogIE5ld1Zh
bHVlICZiaW5hcnlfY29tYmluZV9kb2l0KGJvb2wgZGlkX3JldmVyc2UsIE5ld09wZXJhdG9yIG9w
LAogICAgY29uc3QgTmV3VmFsdWUgJmxlLCBjb25zdCBOZXdWYWx1ZSAmcmUpIGNvbnN0Owp9Owpj
bGFzcyBJbnRlZ2VyQmFzZVZhbHVlIDogcHVibGljIE5ld1ZhbHVlIHsKcHVibGljOgogIEludGVn
ZXJCYXNlVmFsdWUodm9pZCk7CiAgdmlydHVhbCB+SW50ZWdlckJhc2VWYWx1ZSgpOwpwdWJsaWM6
CiAgdmlydHVhbCBib29sIGlzX2Zsb2F0X3R5cGUodm9pZCkgY29uc3Qge3JldHVybihmYWxzZSk7
fQogIHZpcnR1YWwgYm9vbCBpc19pbnRlZ3JhbF90eXBlKHZvaWQpIGNvbnN0IHtyZXR1cm4odHJ1
ZSk7fQp9OwpjbGFzcyBGbG9hdEJhc2VWYWx1ZSA6IHB1YmxpYyBOZXdWYWx1ZSB7CnB1YmxpYzoK
ICBGbG9hdEJhc2VWYWx1ZSh2b2lkKTsKICB2aXJ0dWFsIH5GbG9hdEJhc2VWYWx1ZSgpOwpwdWJs
aWM6CiAgdmlydHVhbCBib29sIGlzX2Zsb2F0X3R5cGUodm9pZCkgY29uc3Qge3JldHVybih0cnVl
KTt9CiAgdmlydHVhbCBib29sIGlzX2ludGVncmFsX3R5cGUodm9pZCkgY29uc3Qge3JldHVybihm
YWxzZSk7fQp9OwpjbGFzcyBTdHJpbmdWYWx1ZSA6IHB1YmxpYyBOZXdWYWx1ZSB7CnB1YmxpYzoK
ICBEU3RyaW5nIHY7CnB1YmxpYzoKICBTdHJpbmdWYWx1ZSh2b2lkKTsKICBTdHJpbmdWYWx1ZShj
b25zdCBjaGFyICopOwogIFN0cmluZ1ZhbHVlKGNvbnN0IERTdHJpbmcgJik7CiAgdmlydHVhbCB+
U3RyaW5nVmFsdWUoKTsKcHVibGljOgogIHZpcnR1YWwgYm9vbCBpc19mbG9hdF90eXBlKHZvaWQp
IGNvbnN0IHtyZXR1cm4oZmFsc2UpO30KICB2aXJ0dWFsIGJvb2wgaXNfaW50ZWdyYWxfdHlwZSh2
b2lkKSBjb25zdCB7cmV0dXJuKGZhbHNlKTt9CiAgdmlydHVhbCBib29sIGlzX3plcm8odm9pZCkg
Y29uc3Qge3JldHVybihmYWxzZSk7fQogIHZpcnR1YWwgY29uc3QgY2hhciAqdHlwZV9zdHJpbmco
dm9pZCkgY29uc3Q7CiAgdmlydHVhbCBjb25zdCBjaGFyICpmbXRfc3RyaW5nKHZvaWQpIGNvbnN0
OwogIHZpcnR1YWwgVmFsdWVQcmVjZWRlbmNlIHR5cGVfcHJlYyh2b2lkKSBjb25zdCB7cmV0dXJu
KEVQX1NUUklORyk7fQogIHZpcnR1YWwgTmV3VmFsdWUgJmNsb25lKHZvaWQpIGNvbnN0OwpwdWJs
aWM6CiAgdmlydHVhbCBjb25zdCBEU3RyaW5nICZ2YWx1ZSh2b2lkKSBjb25zdCB7cmV0dXJuKHYp
O307CiAgdmlydHVhbCBEU3RyaW5nICZhc2d2YWx1ZSh2b2lkKSB7cmV0dXJuKHYpO307CiAgdmly
dHVhbCBjb25zdCBjaGFyICpzdHJ2YWx1ZSh2b2lkKSBjb25zdCB7cmV0dXJuKHYudmFsdWUoKSk7
fTsKcHVibGljOgogIHN0YXRpYyBTdHJpbmdWYWx1ZSAmdGVtcCh2b2lkKTsKICBzdGF0aWMgVEZs
ZXhBcnJheTxTdHJpbmdWYWx1ZSAqPiAqdGVtcHM7CiAgc3RhdGljIHZvaWQgZGVsZXRlX3N0YXRp
Yyh2b2lkKTsKcHJpdmF0ZToKICBJbnRlZ2VyMzJWYWx1ZSAmc3RyaW5nYXBwbGllcihjb25zdCBO
ZXdWYWx1ZSAmdjEsCiAgICBpbnQgKCpmdW5jKSAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICop
KSBjb25zdDsKcHVibGljOgogIHZpcnR1YWwgSW50ZWdlcjMyVmFsdWUgJm9wZXJhdG9yPD0oY29u
c3QgTmV3VmFsdWUgJikgY29uc3Q7CiAgdmlydHVhbCBJbnRlZ2VyMzJWYWx1ZSAmb3BlcmF0b3I8
IChjb25zdCBOZXdWYWx1ZSAmKSBjb25zdDsKICB2aXJ0dWFsIEludGVnZXIzMlZhbHVlICZvcGVy
YXRvcj09KGNvbnN0IE5ld1ZhbHVlICYpIGNvbnN0OwogIHZpcnR1YWwgSW50ZWdlcjMyVmFsdWUg
Jm9wZXJhdG9yIT0oY29uc3QgTmV3VmFsdWUgJikgY29uc3Q7CiAgdmlydHVhbCBJbnRlZ2VyMzJW
YWx1ZSAmb3BlcmF0b3I+IChjb25zdCBOZXdWYWx1ZSAmKSBjb25zdDsKICB2aXJ0dWFsIEludGVn
ZXIzMlZhbHVlICZvcGVyYXRvcj49KGNvbnN0IE5ld1ZhbHVlICYpIGNvbnN0OwogIHZpcnR1YWwg
SW50ZWdlcjMyVmFsdWUgJnN0cnN0cihjb25zdCBOZXdWYWx1ZSAmdjEpIGNvbnN0OwogIHZpcnR1
YWwgSW50ZWdlcjMyVmFsdWUgJnN0cmNtcChjb25zdCBOZXdWYWx1ZSAmdjEpIGNvbnN0OwogIHZp
cnR1YWwgSW50ZWdlcjMyVmFsdWUgJnN0cmNhc2VjbXAoY29uc3QgTmV3VmFsdWUgJnYxKSBjb25z
dDsKICB2aXJ0dWFsIEludGVnZXIzMlZhbHVlICZzdHJ2YWxjbXAoY29uc3QgTmV3VmFsdWUgJnYx
KSBjb25zdDsKICB2aXJ0dWFsIEludGVnZXIzMlZhbHVlICZzdHJ2YWxjYXNlY21wKGNvbnN0IE5l
d1ZhbHVlICZ2MSkgY29uc3Q7CiAgdmlydHVhbCBJbnRlZ2VyMzJWYWx1ZSAmc3RycGNtcChjb25z
dCBOZXdWYWx1ZSAmdjEpIGNvbnN0OwogIHZpcnR1YWwgSW50ZWdlcjMyVmFsdWUgJnN0cnBjYXNl
Y21wKGNvbnN0IE5ld1ZhbHVlICZ2MSkgY29uc3Q7CiAgdmlydHVhbCBJbnRlZ2VyMzJWYWx1ZSAm
c3RybGVuKHZvaWQpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJmF0b2kodm9pZCkgY29uc3Q7
CiAgdmlydHVhbCBOZXdWYWx1ZSAmYXRvZih2b2lkKSBjb25zdDsKICB2aXJ0dWFsIHZvaWQgY29u
dmVydChEU3RyaW5nICZ2KSBjb25zdDsKICB2aXJ0dWFsIHZvaWQgY29udmVydChJbnRlZ2VyMzJW
YWx1ZSAmdikgY29uc3Q7CiAgdmlydHVhbCB2b2lkIGNvbnZlcnQoSW50ZWdlcjEyOFZhbHVlICZ2
KSBjb25zdDsKICB2aXJ0dWFsIHZvaWQgY29udmVydChEb3VibGU2NFZhbHVlICZ2KSBjb25zdDsK
ICB2aXJ0dWFsIHZvaWQgY29udmVydChTdHJpbmdWYWx1ZSAmdikgY29uc3Q7Cn07CmNsYXNzIElu
dGVnZXIzMlZhbHVlIDogcHVibGljIEludGVnZXJCYXNlVmFsdWUgewpwcml2YXRlOgogIGludDMy
IHY7CnB1YmxpYzoKICBJbnRlZ2VyMzJWYWx1ZSh2b2lkKTsKICBJbnRlZ2VyMzJWYWx1ZShpbnQz
MiBfdik7CiAgdmlydHVhbCB+SW50ZWdlcjMyVmFsdWUoKTsKcHVibGljOgogIHZpcnR1YWwgY29u
c3QgaW50MzImIHZhbHVlKHZvaWQpIGNvbnN0IHtyZXR1cm4gKHYpO307CiAgdmlydHVhbCBpbnQz
MiYgYXNndmFsdWUodm9pZCkge3JldHVybiAodik7fTsKICB2aXJ0dWFsIFZhbHVlUHJlY2VkZW5j
ZSB0eXBlX3ByZWModm9pZCkgY29uc3Qge3JldHVybiBFUF9JTlQzMjt9OwpwdWJsaWM6CiAgc3Rh
dGljIEludGVnZXIzMlZhbHVlICZ0ZW1wKHZvaWQpOwogIE5ld1ZhbHVlICZjbG9uZSh2b2lkKSBj
b25zdDsKICBzdGF0aWMgVEZsZXhBcnJheTxJbnRlZ2VyMzJWYWx1ZSAqPiAqdGVtcHM7CiAgc3Rh
dGljIHZvaWQgZGVsZXRlX3N0YXRpYyh2b2lkKTsKcHVibGljOgogIHZpcnR1YWwgTmV3VmFsdWUg
Jm9wZXJhdG9yKyhjb25zdCBOZXdWYWx1ZSAmKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZv
cGVyYXRvci0oY29uc3QgTmV3VmFsdWUgJikgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmb3Bl
cmF0b3IqKGNvbnN0IE5ld1ZhbHVlICYpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJm9wZXJh
dG9yLyhjb25zdCBOZXdWYWx1ZSAmKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZtaW4oY29u
c3QgTmV3VmFsdWUgJikgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmbWF4KGNvbnN0IE5ld1Zh
bHVlICYpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJmFicyh2b2lkKSBjb25zdDsKICB2aXJ0
dWFsIE5ld1ZhbHVlICZvcGVyYXRvcisodm9pZCkgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAm
b3BlcmF0b3ItKHZvaWQpIGNvbnN0OwogIHZpcnR1YWwgSW50ZWdlcjMyVmFsdWUgJm9wZXJhdG9y
ISh2b2lkKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZyZXZzdWIoY29uc3QgTmV3VmFsdWUg
JikgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmcmV2ZGl2KGNvbnN0IE5ld1ZhbHVlICYpIGNv
bnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJm9wZXJhdG9yJShjb25zdCBOZXdWYWx1ZSAmKSBjb25z
dDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZyZXZtb2QoY29uc3QgTmV3VmFsdWUgJikgY29uc3Q7CiAg
dmlydHVhbCBOZXdWYWx1ZSAmb3BlcmF0b3J+KHZvaWQpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFs
dWUgJm9wZXJhdG9yJihjb25zdCBOZXdWYWx1ZSAmKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVl
ICZvcGVyYXRvcnwoY29uc3QgTmV3VmFsdWUgJikgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAm
b3BlcmF0b3JeKGNvbnN0IE5ld1ZhbHVlICYpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJm9w
ZXJhdG9yPDwoY29uc3QgTmV3VmFsdWUgJikgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmb3Bl
cmF0b3I+Pihjb25zdCBOZXdWYWx1ZSAmKSBjb25zdDsKICB2aXJ0dWFsIEludGVnZXIzMlZhbHVl
ICZvcGVyYXRvcjw9KGNvbnN0IE5ld1ZhbHVlICYpIGNvbnN0OwogIHZpcnR1YWwgSW50ZWdlcjMy
VmFsdWUgJm9wZXJhdG9yPCAoY29uc3QgTmV3VmFsdWUgJikgY29uc3Q7CiAgdmlydHVhbCBJbnRl
Z2VyMzJWYWx1ZSAmb3BlcmF0b3I9PShjb25zdCBOZXdWYWx1ZSAmKSBjb25zdDsKICB2aXJ0dWFs
IEludGVnZXIzMlZhbHVlICZvcGVyYXRvciE9KGNvbnN0IE5ld1ZhbHVlICYpIGNvbnN0OwogIHZp
cnR1YWwgSW50ZWdlcjMyVmFsdWUgJm9wZXJhdG9yPiAoY29uc3QgTmV3VmFsdWUgJikgY29uc3Q7
CiAgdmlydHVhbCBJbnRlZ2VyMzJWYWx1ZSAmb3BlcmF0b3I+PShjb25zdCBOZXdWYWx1ZSAmKSBj
b25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZjZWlsKHZvaWQpIGNvbnN0OwogIHZpcnR1YWwgTmV3
VmFsdWUgJmZsb29yKHZvaWQpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJnJvdW5kKHZvaWQp
IGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJnRvX2ludGVnZXIodm9pZCkgY29uc3Q7CiAgdmly
dHVhbCBJbnRlZ2VyMzJWYWx1ZSAmaXNfaW5mKHZvaWQpIGNvbnN0OwogIHZpcnR1YWwgSW50ZWdl
cjMyVmFsdWUgJmlzX25hbih2b2lkKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZwb3coY29u
c3QgTmV3VmFsdWUgJikgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmYXRhbjIoY29uc3QgTmV3
VmFsdWUgJikgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmZm1vZChjb25zdCBOZXdWYWx1ZSAm
KSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZoeXBvdChjb25zdCBOZXdWYWx1ZSAmKSBjb25z
dDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZjb3B5c2lnbihjb25zdCBOZXdWYWx1ZSAmKSBjb25zdDsK
ICB2aXJ0dWFsIE5ld1ZhbHVlICZ0b19kb3VibGUodm9pZCkgY29uc3Q7CiAgdmlydHVhbCBOZXdW
YWx1ZSAmc3FydCh2b2lkKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZleHAodm9pZCkgY29u
c3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmbG9nKHZvaWQpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFs
dWUgJmxvZzEwKHZvaWQpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJnNpbih2b2lkKSBjb25z
dDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZjb3Modm9pZCkgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1
ZSAmdGFuKHZvaWQpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJnNpbmgodm9pZCkgY29uc3Q7
CiAgdmlydHVhbCBOZXdWYWx1ZSAmY29zaCh2b2lkKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVl
ICZ0YW5oKHZvaWQpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJmFzaW4odm9pZCkgY29uc3Q7
CiAgdmlydHVhbCBOZXdWYWx1ZSAmYWNvcyh2b2lkKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVl
ICZhdGFuKHZvaWQpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJmFzaW5oKHZvaWQpIGNvbnN0
OwogIHZpcnR1YWwgTmV3VmFsdWUgJmFjb3NoKHZvaWQpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFs
dWUgJmF0YW5oKHZvaWQpIGNvbnN0OwogIHZpcnR1YWwgdm9pZCBjb252ZXJ0KERTdHJpbmcgJnYp
IGNvbnN0OwogIHZpcnR1YWwgdm9pZCBjb252ZXJ0KEludGVnZXIzMlZhbHVlICZ2KSBjb25zdDsK
ICB2aXJ0dWFsIHZvaWQgY29udmVydChJbnRlZ2VyMTI4VmFsdWUgJnYpIGNvbnN0OwogIHZpcnR1
YWwgdm9pZCBjb252ZXJ0KERvdWJsZTY0VmFsdWUgJnYpIGNvbnN0OwogIHZpcnR1YWwgdm9pZCBj
b252ZXJ0KFN0cmluZ1ZhbHVlICZ2KSBjb25zdDsKcHJpdmF0ZToKICB2aXJ0dWFsIGNvbnN0IGNo
YXIgKnR5cGVfc3RyaW5nKHZvaWQpIGNvbnN0OwogIHZpcnR1YWwgY29uc3QgY2hhciAqZm10X3N0
cmluZyh2b2lkKSBjb25zdDsKICB2aXJ0dWFsIGJvb2wgaXNfemVybyh2b2lkKSBjb25zdCB7cmV0
dXJuKHZhbHVlKCkgPT0gMCk7fQp9OwpjbGFzcyBSZWZJbnRlZ2VyMzJWYWx1ZSA6IHB1YmxpYyBJ
bnRlZ2VyMzJWYWx1ZSB7CnByaXZhdGU6CiAgaW50MzImIHY7CnB1YmxpYzoKICBSZWZJbnRlZ2Vy
MzJWYWx1ZShpbnQzMiYgX3YpOnYoX3Ype30KICB2aXJ0dWFsIGNvbnN0IGludDMyJiB2YWx1ZSh2
b2lkKSBjb25zdCB7cmV0dXJuKHYpO30KICB2aXJ0dWFsIGludDMyJiBhc2d2YWx1ZSh2b2lkKSB7
cmV0dXJuKHYpO30KcHVibGljOgogIHN0YXRpYyBSZWZJbnRlZ2VyMzJWYWx1ZSAmdGVtcChpbnQz
MiYgdik7CiAgc3RhdGljIFRGbGV4QXJyYXk8UmVmSW50ZWdlcjMyVmFsdWUgKj4gKnRlbXBzOwog
IHN0YXRpYyB2b2lkIGRlbGV0ZV9zdGF0aWModm9pZCk7Cn07CmNsYXNzIEludGVnZXIxMjhWYWx1
ZSA6IHB1YmxpYyBJbnRlZ2VyQmFzZVZhbHVlIHsKcHJpdmF0ZToKICBpbnQxMjggdjsKcHVibGlj
OgogIEludGVnZXIxMjhWYWx1ZSh2b2lkKTsKICBJbnRlZ2VyMTI4VmFsdWUoaW50MTI4IF92KTsK
ICB2aXJ0dWFsIH5JbnRlZ2VyMTI4VmFsdWUoKTsKcHVibGljOgogIHZpcnR1YWwgY29uc3QgaW50
MTI4JiB2YWx1ZSh2b2lkKSBjb25zdCB7cmV0dXJuICh2KTt9OwogIHZpcnR1YWwgaW50MTI4JiBh
c2d2YWx1ZSh2b2lkKSB7cmV0dXJuICh2KTt9OwogIHZpcnR1YWwgVmFsdWVQcmVjZWRlbmNlIHR5
cGVfcHJlYyh2b2lkKSBjb25zdCB7cmV0dXJuIEVQX0lOVDEyODt9OwpwdWJsaWM6CiAgc3RhdGlj
IEludGVnZXIxMjhWYWx1ZSAmdGVtcCh2b2lkKTsKICBOZXdWYWx1ZSAmY2xvbmUodm9pZCkgY29u
c3Q7CiAgc3RhdGljIFRGbGV4QXJyYXk8SW50ZWdlcjEyOFZhbHVlICo+ICp0ZW1wczsKICBzdGF0
aWMgdm9pZCBkZWxldGVfc3RhdGljKHZvaWQpOwpwdWJsaWM6CiAgdmlydHVhbCBOZXdWYWx1ZSAm
b3BlcmF0b3IrKGNvbnN0IE5ld1ZhbHVlICYpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJm9w
ZXJhdG9yLShjb25zdCBOZXdWYWx1ZSAmKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZvcGVy
YXRvciooY29uc3QgTmV3VmFsdWUgJikgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmb3BlcmF0
b3IvKGNvbnN0IE5ld1ZhbHVlICYpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJm1pbihjb25z
dCBOZXdWYWx1ZSAmKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZtYXgoY29uc3QgTmV3VmFs
dWUgJikgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmYWJzKHZvaWQpIGNvbnN0OwogIHZpcnR1
YWwgTmV3VmFsdWUgJm9wZXJhdG9yKyh2b2lkKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZv
cGVyYXRvci0odm9pZCkgY29uc3Q7CiAgdmlydHVhbCBJbnRlZ2VyMzJWYWx1ZSAmb3BlcmF0b3Ih
KHZvaWQpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJnJldnN1Yihjb25zdCBOZXdWYWx1ZSAm
KSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZyZXZkaXYoY29uc3QgTmV3VmFsdWUgJikgY29u
c3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmb3BlcmF0b3IlKGNvbnN0IE5ld1ZhbHVlICYpIGNvbnN0
OwogIHZpcnR1YWwgTmV3VmFsdWUgJnJldm1vZChjb25zdCBOZXdWYWx1ZSAmKSBjb25zdDsKICB2
aXJ0dWFsIE5ld1ZhbHVlICZvcGVyYXRvcn4odm9pZCkgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1
ZSAmb3BlcmF0b3ImKGNvbnN0IE5ld1ZhbHVlICYpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUg
Jm9wZXJhdG9yfChjb25zdCBOZXdWYWx1ZSAmKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZv
cGVyYXRvcl4oY29uc3QgTmV3VmFsdWUgJikgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmb3Bl
cmF0b3I8PChjb25zdCBOZXdWYWx1ZSAmKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZvcGVy
YXRvcj4+KGNvbnN0IE5ld1ZhbHVlICYpIGNvbnN0OwogIHZpcnR1YWwgSW50ZWdlcjMyVmFsdWUg
Jm9wZXJhdG9yPD0oY29uc3QgTmV3VmFsdWUgJikgY29uc3Q7CiAgdmlydHVhbCBJbnRlZ2VyMzJW
YWx1ZSAmb3BlcmF0b3I8IChjb25zdCBOZXdWYWx1ZSAmKSBjb25zdDsKICB2aXJ0dWFsIEludGVn
ZXIzMlZhbHVlICZvcGVyYXRvcj09KGNvbnN0IE5ld1ZhbHVlICYpIGNvbnN0OwogIHZpcnR1YWwg
SW50ZWdlcjMyVmFsdWUgJm9wZXJhdG9yIT0oY29uc3QgTmV3VmFsdWUgJikgY29uc3Q7CiAgdmly
dHVhbCBJbnRlZ2VyMzJWYWx1ZSAmb3BlcmF0b3I+IChjb25zdCBOZXdWYWx1ZSAmKSBjb25zdDsK
ICB2aXJ0dWFsIEludGVnZXIzMlZhbHVlICZvcGVyYXRvcj49KGNvbnN0IE5ld1ZhbHVlICYpIGNv
bnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJmNlaWwodm9pZCkgY29uc3Q7CiAgdmlydHVhbCBOZXdW
YWx1ZSAmZmxvb3Iodm9pZCkgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmcm91bmQodm9pZCkg
Y29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmdG9faW50ZWdlcih2b2lkKSBjb25zdDsKICB2aXJ0
dWFsIEludGVnZXIzMlZhbHVlICZpc19pbmYodm9pZCkgY29uc3Q7CiAgdmlydHVhbCBJbnRlZ2Vy
MzJWYWx1ZSAmaXNfbmFuKHZvaWQpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJnBvdyhjb25z
dCBOZXdWYWx1ZSAmKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZhdGFuMihjb25zdCBOZXdW
YWx1ZSAmKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZmbW9kKGNvbnN0IE5ld1ZhbHVlICYp
IGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJmh5cG90KGNvbnN0IE5ld1ZhbHVlICYpIGNvbnN0
OwogIHZpcnR1YWwgTmV3VmFsdWUgJmNvcHlzaWduKGNvbnN0IE5ld1ZhbHVlICYpIGNvbnN0Owog
IHZpcnR1YWwgTmV3VmFsdWUgJnRvX2RvdWJsZSh2b2lkKSBjb25zdDsKICB2aXJ0dWFsIE5ld1Zh
bHVlICZzcXJ0KHZvaWQpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJmV4cCh2b2lkKSBjb25z
dDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZsb2codm9pZCkgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1
ZSAmbG9nMTAodm9pZCkgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmc2luKHZvaWQpIGNvbnN0
OwogIHZpcnR1YWwgTmV3VmFsdWUgJmNvcyh2b2lkKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVl
ICZ0YW4odm9pZCkgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmc2luaCh2b2lkKSBjb25zdDsK
ICB2aXJ0dWFsIE5ld1ZhbHVlICZjb3NoKHZvaWQpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUg
JnRhbmgodm9pZCkgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmYXNpbih2b2lkKSBjb25zdDsK
ICB2aXJ0dWFsIE5ld1ZhbHVlICZhY29zKHZvaWQpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUg
JmF0YW4odm9pZCkgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmYXNpbmgodm9pZCkgY29uc3Q7
CiAgdmlydHVhbCBOZXdWYWx1ZSAmYWNvc2godm9pZCkgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1
ZSAmYXRhbmgodm9pZCkgY29uc3Q7CiAgdmlydHVhbCB2b2lkIGNvbnZlcnQoRFN0cmluZyAmdikg
Y29uc3Q7CiAgdmlydHVhbCB2b2lkIGNvbnZlcnQoSW50ZWdlcjMyVmFsdWUgJnYpIGNvbnN0Owog
IHZpcnR1YWwgdm9pZCBjb252ZXJ0KEludGVnZXIxMjhWYWx1ZSAmdikgY29uc3Q7CiAgdmlydHVh
bCB2b2lkIGNvbnZlcnQoRG91YmxlNjRWYWx1ZSAmdikgY29uc3Q7CiAgdmlydHVhbCB2b2lkIGNv
bnZlcnQoU3RyaW5nVmFsdWUgJnYpIGNvbnN0Owpwcml2YXRlOgogIHZpcnR1YWwgYm9vbCBpc19m
bG9hdF90eXBlKHZvaWQpIGNvbnN0IHtyZXR1cm4oZmFsc2UpO30KICB2aXJ0dWFsIGJvb2wgaXNf
aW50ZWdyYWxfdHlwZSh2b2lkKSBjb25zdCB7cmV0dXJuKHRydWUpO30KICB2aXJ0dWFsIGNvbnN0
IGNoYXIgKnR5cGVfc3RyaW5nKHZvaWQpIGNvbnN0OwogIHZpcnR1YWwgY29uc3QgY2hhciAqZm10
X3N0cmluZyh2b2lkKSBjb25zdDsKICB2aXJ0dWFsIGJvb2wgaXNfemVybyh2b2lkKSBjb25zdCB7
cmV0dXJuKHZhbHVlKCkuaXNfemVybygpKTt9Cn07CmNsYXNzIFJlZkludGVnZXIxMjhWYWx1ZSA6
IHB1YmxpYyBJbnRlZ2VyMTI4VmFsdWUgewpwcml2YXRlOgogIGludDEyOCYgdjsKcHVibGljOgog
IFJlZkludGVnZXIxMjhWYWx1ZShpbnQxMjgmIF92KTp2KF92KXt9CiAgdmlydHVhbCBjb25zdCBp
bnQxMjgmIHZhbHVlKHZvaWQpIGNvbnN0IHtyZXR1cm4odik7fQogIHZpcnR1YWwgaW50MTI4JiBh
c2d2YWx1ZSh2b2lkKSB7cmV0dXJuKHYpO30KcHVibGljOgogIHN0YXRpYyBSZWZJbnRlZ2VyMTI4
VmFsdWUgJnRlbXAoaW50MTI4JiB2KTsKICBzdGF0aWMgVEZsZXhBcnJheTxSZWZJbnRlZ2VyMTI4
VmFsdWUgKj4gKnRlbXBzOwogIHN0YXRpYyB2b2lkIGRlbGV0ZV9zdGF0aWModm9pZCk7Cn07CmNs
YXNzIERvdWJsZTY0VmFsdWUgOiBwdWJsaWMgRmxvYXRCYXNlVmFsdWUgewpwcml2YXRlOgogIGRv
dWJsZSB2OwpwdWJsaWM6CiAgRG91YmxlNjRWYWx1ZSh2b2lkKTsKICBEb3VibGU2NFZhbHVlKGRv
dWJsZSBfdik7CiAgdmlydHVhbCB+RG91YmxlNjRWYWx1ZSgpOwpwdWJsaWM6CiAgdmlydHVhbCBj
b25zdCBkb3VibGUmIHZhbHVlKHZvaWQpIGNvbnN0IHtyZXR1cm4gKHYpO307CiAgdmlydHVhbCBk
b3VibGUmIGFzZ3ZhbHVlKHZvaWQpIHtyZXR1cm4gKHYpO307CiAgdmlydHVhbCBWYWx1ZVByZWNl
ZGVuY2UgdHlwZV9wcmVjKHZvaWQpIGNvbnN0IHtyZXR1cm4gRVBfRE9VQkxFO307CnB1YmxpYzoK
ICBzdGF0aWMgRG91YmxlNjRWYWx1ZSAmdGVtcCh2b2lkKTsKICBOZXdWYWx1ZSAmY2xvbmUodm9p
ZCkgY29uc3Q7CiAgc3RhdGljIFRGbGV4QXJyYXk8RG91YmxlNjRWYWx1ZSAqPiAqdGVtcHM7CiAg
c3RhdGljIHZvaWQgZGVsZXRlX3N0YXRpYyh2b2lkKTsKcHVibGljOgogIHZpcnR1YWwgTmV3VmFs
dWUgJm9wZXJhdG9yKyhjb25zdCBOZXdWYWx1ZSAmKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVl
ICZvcGVyYXRvci0oY29uc3QgTmV3VmFsdWUgJikgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAm
b3BlcmF0b3IqKGNvbnN0IE5ld1ZhbHVlICYpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJm9w
ZXJhdG9yLyhjb25zdCBOZXdWYWx1ZSAmKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZtaW4o
Y29uc3QgTmV3VmFsdWUgJikgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmbWF4KGNvbnN0IE5l
d1ZhbHVlICYpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJmFicyh2b2lkKSBjb25zdDsKICB2
aXJ0dWFsIE5ld1ZhbHVlICZvcGVyYXRvcisodm9pZCkgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1
ZSAmb3BlcmF0b3ItKHZvaWQpIGNvbnN0OwogIHZpcnR1YWwgSW50ZWdlcjMyVmFsdWUgJm9wZXJh
dG9yISh2b2lkKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZyZXZzdWIoY29uc3QgTmV3VmFs
dWUgJikgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmcmV2ZGl2KGNvbnN0IE5ld1ZhbHVlICYp
IGNvbnN0OwogIHZpcnR1YWwgSW50ZWdlcjMyVmFsdWUgJm9wZXJhdG9yPD0oY29uc3QgTmV3VmFs
dWUgJikgY29uc3Q7CiAgdmlydHVhbCBJbnRlZ2VyMzJWYWx1ZSAmb3BlcmF0b3I8IChjb25zdCBO
ZXdWYWx1ZSAmKSBjb25zdDsKICB2aXJ0dWFsIEludGVnZXIzMlZhbHVlICZvcGVyYXRvcj09KGNv
bnN0IE5ld1ZhbHVlICYpIGNvbnN0OwogIHZpcnR1YWwgSW50ZWdlcjMyVmFsdWUgJm9wZXJhdG9y
IT0oY29uc3QgTmV3VmFsdWUgJikgY29uc3Q7CiAgdmlydHVhbCBJbnRlZ2VyMzJWYWx1ZSAmb3Bl
cmF0b3I+IChjb25zdCBOZXdWYWx1ZSAmKSBjb25zdDsKICB2aXJ0dWFsIEludGVnZXIzMlZhbHVl
ICZvcGVyYXRvcj49KGNvbnN0IE5ld1ZhbHVlICYpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUg
JmNlaWwodm9pZCkgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmZmxvb3Iodm9pZCkgY29uc3Q7
CiAgdmlydHVhbCBOZXdWYWx1ZSAmcm91bmQodm9pZCkgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1
ZSAmdG9faW50ZWdlcih2b2lkKSBjb25zdDsKICB2aXJ0dWFsIEludGVnZXIzMlZhbHVlICZpc19p
bmYodm9pZCkgY29uc3Q7CiAgdmlydHVhbCBJbnRlZ2VyMzJWYWx1ZSAmaXNfbmFuKHZvaWQpIGNv
bnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJnBvdyhjb25zdCBOZXdWYWx1ZSAmKSBjb25zdDsKICB2
aXJ0dWFsIE5ld1ZhbHVlICZhdGFuMihjb25zdCBOZXdWYWx1ZSAmKSBjb25zdDsKICB2aXJ0dWFs
IE5ld1ZhbHVlICZmbW9kKGNvbnN0IE5ld1ZhbHVlICYpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFs
dWUgJmh5cG90KGNvbnN0IE5ld1ZhbHVlICYpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJmNv
cHlzaWduKGNvbnN0IE5ld1ZhbHVlICYpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJnRvX2Rv
dWJsZSh2b2lkKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZzcXJ0KHZvaWQpIGNvbnN0Owog
IHZpcnR1YWwgTmV3VmFsdWUgJmV4cCh2b2lkKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZs
b2codm9pZCkgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmbG9nMTAodm9pZCkgY29uc3Q7CiAg
dmlydHVhbCBOZXdWYWx1ZSAmc2luKHZvaWQpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJmNv
cyh2b2lkKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZ0YW4odm9pZCkgY29uc3Q7CiAgdmly
dHVhbCBOZXdWYWx1ZSAmc2luaCh2b2lkKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZjb3No
KHZvaWQpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJnRhbmgodm9pZCkgY29uc3Q7CiAgdmly
dHVhbCBOZXdWYWx1ZSAmYXNpbih2b2lkKSBjb25zdDsKICB2aXJ0dWFsIE5ld1ZhbHVlICZhY29z
KHZvaWQpIGNvbnN0OwogIHZpcnR1YWwgTmV3VmFsdWUgJmF0YW4odm9pZCkgY29uc3Q7CiAgdmly
dHVhbCBOZXdWYWx1ZSAmYXNpbmgodm9pZCkgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmYWNv
c2godm9pZCkgY29uc3Q7CiAgdmlydHVhbCBOZXdWYWx1ZSAmYXRhbmgodm9pZCkgY29uc3Q7CiAg
dmlydHVhbCB2b2lkIGNvbnZlcnQoRFN0cmluZyAmdikgY29uc3Q7CiAgdmlydHVhbCB2b2lkIGNv
bnZlcnQoSW50ZWdlcjMyVmFsdWUgJnYpIGNvbnN0OwogIHZpcnR1YWwgdm9pZCBjb252ZXJ0KElu
dGVnZXIxMjhWYWx1ZSAmdikgY29uc3Q7CiAgdmlydHVhbCB2b2lkIGNvbnZlcnQoRG91YmxlNjRW
YWx1ZSAmdikgY29uc3Q7CiAgdmlydHVhbCB2b2lkIGNvbnZlcnQoU3RyaW5nVmFsdWUgJnYpIGNv
bnN0Owpwcml2YXRlOgogIHZpcnR1YWwgYm9vbCBpc19mbG9hdF90eXBlKHZvaWQpIGNvbnN0IHty
ZXR1cm4odHJ1ZSk7fQogIHZpcnR1YWwgYm9vbCBpc19pbnRlZ3JhbF90eXBlKHZvaWQpIGNvbnN0
IHtyZXR1cm4oZmFsc2UpO30KICB2aXJ0dWFsIGNvbnN0IGNoYXIgKnR5cGVfc3RyaW5nKHZvaWQp
IGNvbnN0OwogIHZpcnR1YWwgY29uc3QgY2hhciAqZm10X3N0cmluZyh2b2lkKSBjb25zdDsKICB2
aXJ0dWFsIGJvb2wgaXNfemVybyh2b2lkKSBjb25zdCB7cmV0dXJuKDo6aXNfemVybyh2YWx1ZSgp
KSA/IHRydWUgOiBmYWxzZSk7fQp9OwpjbGFzcyBSZWZEb3VibGUgOiBwdWJsaWMgRG91YmxlNjRW
YWx1ZSB7CnByaXZhdGU6CiAgZG91YmxlJiB2OwpwdWJsaWM6CiAgUmVmRG91YmxlKGRvdWJsZSYg
X3YpOnYoX3Ype30KICB2aXJ0dWFsIGNvbnN0IGRvdWJsZSYgdmFsdWUodm9pZCkgY29uc3Qge3Jl
dHVybih2KTt9CiAgdmlydHVhbCBkb3VibGUmIGFzZ3ZhbHVlKHZvaWQpIHtyZXR1cm4odik7fQpw
dWJsaWM6CiAgc3RhdGljIFJlZkRvdWJsZSAmdGVtcChkb3VibGUmIHYpOwogIHN0YXRpYyBURmxl
eEFycmF5PFJlZkRvdWJsZSAqPiAqdGVtcHM7CiAgc3RhdGljIHZvaWQgZGVsZXRlX3N0YXRpYyh2
b2lkKTsKfTsKY2xhc3MgTXVsdGlOZXdFeHByIHsKcHJpdmF0ZToKICBpbnQgcHJlc2VydmVfc3Ry
dWN0dXJlOwpwdWJsaWM6CiAgaW50IG5leHByOwogIE5ld0V4cHIgKmV4cHJbTUFYTUVYUFJdOwpw
cml2YXRlOgogIHZvaWQgdW5yYXZlbChOZXdFeHByICp0cmVlLCBpbnQgX3ByZXNlcnZlX3N0cnVj
dHVyZT0wKTsKcHVibGljOgogIE11bHRpTmV3RXhwcihOZXdFeHByICp0cmVlLCBpbnQgX3ByZXNl
cnZlX3N0cnVjdHVyZT0wKTsKICBNdWx0aU5ld0V4cHIoY29uc3QgY2hhciAqZXhwcik7CiAgfk11
bHRpTmV3RXhwcigpOwpwdWJsaWM6CiAgdm9pZCBkdW1wKHZvaWQpIGNvbnN0OwogIHZvaWQgcHJp
bnQoUHJpbnRmICpmcCwgaW50IHByaW50X2xldmVsPTEwKSBjb25zdDsKfTsKY2xhc3MgTXVsdGlO
ZXdWYWx1ZSB7CnB1YmxpYzoKICBpbnQgbnZhbHVlOwogIE5ld1ZhbHVlICp2YWx1ZVtNQVhNRVhQ
Ul07CnB1YmxpYzoKICBNdWx0aU5ld1ZhbHVlKGNvbnN0IE11bHRpTmV3RXhwciAqbXVsdGlfZXhw
ciwgaW50IHJuLAogICAgUmVsYXRpb24gKm9yZWwsIGNvbnN0IFR1cGxlICpvdHVwbGUsCiAgICBS
ZWxhdGlvbiAqbnJlbD0wLCBUdXBsZSAqbnR1cGxlPTApOwogIE11bHRpTmV3VmFsdWUoY29uc3Qg
TXVsdGlOZXdFeHByICptdWx0aV9leHByLAogICAgTmV3VmFsdWVsZWFmZXZhbHVhdG9yIGZuLCBO
ZXdWYXJpYWJsZUNsb3N1cmUgKmhhbmRsZSk7CnB1YmxpYzoKICB2b2lkIHNwcmludChEU3RyaW5n
ICZidWYpIGNvbnN0OwogIHZvaWQgZHVtcCh2b2lkKSBjb25zdDsKICB2b2lkIHByaW50KFByaW50
ZiAqZnAsIGludCBwcmludF9sZXZlbD0xMCkgY29uc3Q7Cn07CmNsYXNzIE5ld1ZhcmlhYmxlQ2xv
c3VyZSB7CnB1YmxpYzoKICBpbnQgcm47CiAgUmVsYXRpb24gKnJlbDsKICBjb25zdCBUdXBsZSAq
dHVwbGU7CiAgUmVsYXRpb24gKnJlbDI7CiAgY29uc3QgVHVwbGUgKnR1cGxlMjsKICBjb25zdCBN
dWx0aU5ld0V4cHIgKm11bHRpX2V4cHI7CnB1YmxpYzoKICBOZXdWYXJpYWJsZUNsb3N1cmUodm9p
ZCk7CiAgfk5ld1ZhcmlhYmxlQ2xvc3VyZSgpOwp9OwpjbGFzcyBTY2FubmVyTG9jYXRpb24gewpw
dWJsaWM6CiAgY29uc3QgY2hhciAqZmlsZW5hbWU7CiAgaW50IGxpbmVubzsKcHVibGljOgogIHZv
aWQgcG9zdGVycm9yKGNvbnN0IERTdHJpbmcgJm1zZyk7CnB1YmxpYzoKICBTY2FubmVyTG9jYXRp
b24odm9pZCk7CiAgU2Nhbm5lckxvY2F0aW9uKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgbGlu
ZW5vKTsKICB+U2Nhbm5lckxvY2F0aW9uKCk7Cn07CmNsYXNzIFByZWNUb2tlbiB7CnB1YmxpYzoK
ICBOZXdPcGVyYXRvciBvcDsKICBEU3RyaW5nIHN0cjsKICBOZXdWYWx1ZSAqdmFsOwpwdWJsaWM6
CiAgUHJlY1Rva2VuKHZvaWQpOwp9OwpjbGFzcyBQcmVjUGFyc2VyIHsKcHVibGljOgogIHN0cnVj
dCBPcFRhYmxlIHsKICAgIE5ld09wZXJhdG9yIG9wOwogICAgY29uc3QgY2hhciAqbmFtZTsKICAg
IGludCBwcmVjOwogICAgaW50IG5hcmdzOwogICAgTmV3T3BlcmF0b3IgcmV2OwogIH07CiAgc3Rh
dGljIE9wVGFibGUgb3B0YWJsZVtdOwpwdWJsaWM6CiAgUHJlY1Rva2VuIHRva2VuOwpwcml2YXRl
OgogIHN0YXRpYyBib29sIGRpZF9vcG1hcDsKICBzdGF0aWMgVGNsX0hhc2hUYWJsZSBvcG1hcDsK
cHVibGljOgogIHN0YXRpYyBpbnQgaXNfZmF1bHQ7CiAgc3RhdGljIGNvbnN0IGNoYXIgKmZhdWx0
X3N0cjsKICBzdGF0aWMgdm9pZCByZWdpc3Rlcl9mYXVsdChjb25zdCBjaGFyICpzdHIpOwogIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyX2ZhdWx0KGNvbnN0IERTdHJpbmcgJnN0cik7CnByb3RlY3RlZDoK
ICBEU3RyaW5nIGluYnVmOwogIGNoYXIgKm5leHRwOwpwdWJsaWM6CiAgUHJpbnRmICpmcDsKICBT
Y2FubmVyTG9jYXRpb24gKmxvYzsKcHVibGljOgogIGJvb2wgY29tbWVudHNfYXNfYXdrOwogIGJv
b2wgY29tbWVudHNfYXNfYzsKICBib29sIGNvbW1lbnRzX2FzX2NwbHVzOwpwdWJsaWM6CiAgc3Rh
dGljIGJvb2wgdHJhY2VfbGV4OwogIHN0YXRpYyBib29sIHRyYWNlX3RyZWU7CnB1YmxpYzoKICBi
b29sIGZpbGVyZWFkKFByaW50ZiAqZnApOwogIGludCBzcGFuKFByaW50ZiAqb3V0ZnAsIFByaW50
ZiAqaW5mcCwgY29uc3QgY2hhciAqZW5kYnVmKTsKcHVibGljOgogIFByZWNQYXJzZXIoU2Nhbm5l
ckxvY2F0aW9uICpfbG9jLCBib29sIGlzZmlsZSwgY29uc3QgY2hhciAqX2ZpbGVuYW1lKTsKICB2
aXJ0dWFsIH5QcmVjUGFyc2VyKCk7CnB1YmxpYzoKICBOZXdPcGVyYXRvciB5eWxleCh2b2lkKTsK
cHJpdmF0ZToKICBOZXdPcGVyYXRvciByZWFseXlsZXgodm9pZCk7CnB1YmxpYzoKICBzdGF0aWMg
TmV3T3BlcmF0b3IgZnVuY2xvb2soY29uc3QgY2hhciAqb3ApOwpwcml2YXRlOgogIE5ld0V4cHIg
KnByaW1hcnkoaW50IGN1cnNwZWMpOwogIE5ld0V4cHIgKmV4cHIoaW50IGN1cnNwZWMpOwogIE5l
d0V4cHIgKnN5bnRheF9lcnJvcihjb25zdCBjaGFyICptc2cpOwpwdWJsaWM6CiAgTmV3RXhwciAq
cGFyc2Uodm9pZCk7CnByaXZhdGU6CiAgdm9pZCBpbGxlZ2FsX2NoYXJhY3RlcihjaGFyIGNoKTsK
cHVibGljOgogIHN0YXRpYyB2b2lkIGRlbGV0ZV9zdGF0aWModm9pZCk7Cn07CmNsYXNzIEZpbGVJ
TyA6IHB1YmxpYyBQcmludGYgewpwcml2YXRlOgogIERTdHJpbmcgYnVmOwpwcml2YXRlOgogIHZv
aWQgKmZwOwpwcml2YXRlOgogIGVudW0gewogICAgSU9CVUZTSVo9MTAyNAogIH07CnB1YmxpYzoK
ICBlbnVtIHsKICAgIElPRU9GPS0xCiAgfTsKcHVibGljOgogIEZpbGVJTyh2b2lkKTsKICBGaWxl
SU8odm9pZCAqX2ZwKTsKICB2aXJ0dWFsIH5GaWxlSU8oKTsKcHVibGljOgogIHZvaWQgKmdldGZw
KHZvaWQpOwpwdWJsaWM6CiAgdmlydHVhbCBsb25nIGlvc2Vlayhsb25nIG9mZnNldCwgaW50IHB0
cm5hbWUpOwogIHZpcnR1YWwgbG9uZyBpb3RlbGwodm9pZCk7CiAgdmlydHVhbCBpbnQgaW9mbHVz
aCh2b2lkKTsKICB2aXJ0dWFsIGludCBpb3Jld2luZCh2b2lkKTsKcHVibGljOgogIGludCBpb2dl
dHMoRFN0cmluZyAmc3RyKTsKICBpbnQgaW9nZXRjKHZvaWQpOwpwdWJsaWM6CiAgdmlydHVhbCBp
bnQgaW9wdXRzKGNvbnN0IGNoYXIgKmJ1Zik7CiAgdmlydHVhbCBpbnQgaW9wdXRjKGNoYXIgYyk7
CnB1YmxpYzoKICB2aXJ0dWFsIGludCBpb2ZpbGVubyh2b2lkKSA7CiAgdmlydHVhbCBpbnQgaW9l
cnJvcih2b2lkKTsKICB2aXJ0dWFsIGludCBpb2NsZWFyZXJyKHZvaWQpOwpwdWJsaWM6CiAgc3Rh
dGljIEZpbGVJTyAqaW9mb3Blbihjb25zdCBjaGFyICpmbmFtZSwgY29uc3QgY2hhciAqbW9kZSk7
CiAgdmlydHVhbCBpbnQgaW9mY2xvc2Uodm9pZCk7CiAgdmlydHVhbCBpbnQgc2V0dmJ1ZihpbnQg
Y29kZSk7CnB1YmxpYzoKICBzdGF0aWMgRmlsZUlPICppb3BvcGVuKGNvbnN0IGNoYXIgKmNvbW1h
bmQsIGNvbnN0IGNoYXIgKm1vZGUpOwogIHZpcnR1YWwgaW50IGlvcGNsb3NlKHZvaWQpOwpwdWJs
aWM6CiAgdmlydHVhbCBpbnQgaW93cml0ZShjb25zdCB2b2lkICpwdHIsIGludCBzaXplLCBpbnQg
bml0ZW1zKTsKICB2aXJ0dWFsIGludCBpb3JlYWQodm9pZCAqcHRyLCBpbnQgc2l6ZSwgaW50IG5p
dGVtcyk7CnB1YmxpYzoKICB2aXJ0dWFsIGNvbnN0IGNoYXIgKmZuYW1lX2Zvcih2b2lkKTsKICB2
aXJ0dWFsIGludCB0cnVuYyhpbnQpOwogIHZpcnR1YWwgaW50IGVuZHByaW50Zih2b2lkKTsKfTsK
ZXh0ZXJuIEZpbGVJTyAqZ2xvYmFsX3N0ZGluOwpleHRlcm4gRmlsZUlPICpnbG9iYWxfc3Rkb3V0
OwpleHRlcm4gRmlsZUlPICpnbG9iYWxfc3RkZXJyOwpjbGFzcyBUVEVUaW1lciB7CnB1YmxpYzoK
ICBlbnVtIFdhaXRTZW1hbnRpY3MgewogICAgSGFuZGxlX0V2ZW50cywKICAgIElnbm9yZV9FdmVu
dHMsCiAgICBCdXN5X1dhaXQKICB9OwpwdWJsaWM6CiAgc3RhdGljIHVuc2lnbmVkIGludCBzbGVl
cCh1bnNpZ25lZCBpbnQgc2VjcywgV2FpdFNlbWFudGljcz1IYW5kbGVfRXZlbnRzKTsKICBzdGF0
aWMgdW5zaWduZWQgaW50IG1zbGVlcCh1bnNpZ25lZCBpbnQgbXNlY3MsIFdhaXRTZW1hbnRpY3M9
SWdub3JlX0V2ZW50cyk7CiAgc3RhdGljIHVuc2lnbmVkIGludCB1c2xlZXAodW5zaWduZWQgaW50
IHVzZWNzLCBXYWl0U2VtYW50aWNzPUJ1c3lfV2FpdCk7Cn07CmNsYXNzIFN0cmluZ1Bvb2w7CmNs
YXNzIERTdHJpbmc7CmNvbnN0IGNoYXIgKnNhdmVzdHIoY29uc3QgY2hhciAqcCk7CmNvbnN0IGNo
YXIgKnNhdmVzdHIoY29uc3QgRFN0cmluZyAmKTsKY29uc3QgY2hhciAqc2F2ZXNwcmludGYoY29u
c3QgY2hhciAqZm10LCBpbnQgYTEpOwpjb25zdCBjaGFyICpzYXZlc3ByaW50Zihjb25zdCBjaGFy
ICpmbXQsIGludCBhMSwgaW50IGEyKTsKY29uc3QgY2hhciAqc2F2ZXNwcmludGYoY29uc3QgY2hh
ciAqZm10LCBjb25zdCBjaGFyICphMSk7CmNvbnN0IGNoYXIgKnNhdmVzcHJpbnRmKGNvbnN0IGNo
YXIgKmZtdCwgY29uc3QgY2hhciAqYTEsIGNvbnN0IGNoYXIgKmEyKTsKY29uc3QgY2hhciAqc2F2
ZXNwcmludGYoY29uc3QgY2hhciAqZm10LCBjb25zdCBjaGFyICphMSwgaW50IGEyKTsKY29uc3Qg
Y2hhciAqY29udmVydF90b19NSyhzaXplX3QgdmFsKTsKY2hhciAqbmV3c3RyKGNvbnN0IGNoYXIg
KnApOwpjaGFyICpuZXdzdHIoY29uc3QgRFN0cmluZyAmKTsKU3RyaW5nUG9vbCAqcmV0YXJnZXRf
c2F2ZXN0cihTdHJpbmdQb29sICpwb29sKTsKY29uc3QgY2hhciAqc3RyX3RvbG93ZXIoY29uc3Qg
Y2hhciAqcCk7CmNvbnN0IGNoYXIgKnN0cl90b3VwcGVyKGNvbnN0IGNoYXIgKnApOwpjb25zdCBj
aGFyICpyZXZzdHIoY29uc3QgY2hhciAqc3RyKTsKY2hhciAqZXh0cmFjdChjb25zdCBjaGFyICpz
diwgaW50IHNvLCBpbnQgbGcsIGNoYXIgKnRvKTsKY29uc3QgY2hhciAqYXJ0aWNsZShjb25zdCBj
aGFyICpub3VuKTsKY29uc3QgY2hhciAqZm9ybWF0X25vdyh2b2lkKTsKY29uc3QgY2hhciAqaGV4
X3RvX2JpbmFyeSh1aW50NjQgeCwgaW50IG5iaXRzKTsKdWludDY0IGNvbnZlcnRfZnJvbV9iaW5h
cnkoY29uc3QgY2hhciAqcCk7CnZvaWQgcHJpbnRfZGF0YShjb25zdCBjaGFyICp3aGVyZSwgY29u
c3QgdWNoYXIgKmRhdGEsIGludCBuKTsKdm9pZCBmb3JtYXRfYW5kX2JyZWFrX2xpbmUoUHJpbnRm
ICpmcCwgY29uc3QgY2hhciAqc3RyLCBjaGFyIGJyZWFrY2gsCiAgaW50IGxpbmVsZywgY29uc3Qg
Y2hhciAqc3RhcnRsaW5lLCBjb25zdCBjaGFyICplbmRsaW5lKTsKdWludDMyIGNoZWNrc3VtICh1
aW50MzIgKl9wLCBzaXplX3QgYnl0ZV9zaXplLCB1aW50MzIgY2hlY2tzdW0pOwp1aW50NjQgY2hl
Y2tzdW02NCh1aW50MzIgKl9wLCBzaXplX3QgYnl0ZV9zaXplLCB1aW50NjQgY2hlY2tzdW0pOwpp
bnQgc3RydmFsY21wKGNvbnN0IGNoYXIgKnAxLCBjb25zdCBjaGFyICpwMik7CmludCBzdHJ2YWxj
YXNlY21wKGNvbnN0IGNoYXIgKnAxLCBjb25zdCBjaGFyICpwMik7CmludCBzdHJwY21wKGNvbnN0
IGNoYXIgKnAxLCBjb25zdCBjaGFyICpwMik7CmludCBzdHJwY2FzZWNtcChjb25zdCBjaGFyICpw
MSwgY29uc3QgY2hhciAqcDIpOwppbnQgbXlzdHJzdHIoY29uc3QgY2hhciAqcDEsIGNvbnN0IGNo
YXIgKnAyKTsKY29uc3QgY2hhciAqcHN0cmluZyhjb25zdCBjaGFyICopOwpjaGFyICpzdHJjYXNl
c3RyKGNvbnN0IGNoYXIgKnMxLCBjb25zdCBjaGFyICpzMik7CmludCByZGJfcmVjbXAoY29uc3Qg
Y2hhciAqcGF0dGVybiwgY29uc3QgY2hhciAqc3ViamVjdCk7CmVudW0gYXNzZXJ0X2VudW0gewog
IEZPUkNFX0FCT1JULAogIEZPUkNFX1JFVFVSTgp9OwppbnQgc3RhbmRhcmRfbWVzc2FnZV9nZW5l
cmF0b3IoYm9vbCBpc19zdGRlcnIsIGludCBwcmludF9sZXZlbCwKICBjb25zdCBjaGFyICpwcm9s
b2csIGNvbnN0IGNoYXIgKnJlYXNvbiwgY29uc3QgY2hhciAqZm5hbWUsIGludCBsaW5lKTsKaW50
IGFzc2VydF9ub3RpZnkoY29uc3QgY2hhciAqcHJvbG9nLAogIGNvbnN0IGNoYXIgKnJlYXNvbiwg
Y29uc3QgY2hhciAqZm5hbWUsIGludCBsaW5lKTsKYXNzZXJ0X2VudW0gYXNzZXJ0X2Fib3J0KGFz
c2VydF9lbnVtIGRvX2Fib3J0KTsKdm9pZCBhc3NlcnRfcmV0dXJuKHZvaWQpOwp2b2lkIGdpdmV1
cF9hbmRfZXhpdChpbnQgZXhpdF9jb2RlKTsKZXh0ZXJuIGludCBnbG9iYWxfYXNzZXJ0X2xpbmU7
CmV4dGVybiBjb25zdCBjaGFyICpnbG9iYWxfYXNzZXJ0X2ZpbGU7CmV4dGVybiBpbnQgZ2xvYmFs
X2Fzc2VydHNfY291bnQ7CmV4dGVybiBpbnQgZ2xvYmFsX2Fzc2VydHNfZHVyaW5nX3Vud2luZGlu
ZzsKY2xhc3MgQXNzZXJ0RmF1bHRlciA6IHB1YmxpYyBEU3RyaW5nIHsKcHVibGljOgogIEFzc2Vy
dEZhdWx0ZXIodm9pZCk7CiAgdmlydHVhbCB+QXNzZXJ0RmF1bHRlcigpOwpwdWJsaWM6CiAgdmly
dHVhbCBpbnQgZW5kcHJpbnRmKHZvaWQpOwp9OwpleHRlcm4gQXNzZXJ0RmF1bHRlciBhc3NlcnRf
YXNzZXJ0ZXI7CmludCB3YXJuaW5nX25vdGlmeShjb25zdCBjaGFyICpwcm9sb2csCiAgY29uc3Qg
Y2hhciAqcmVhc29uLCBjb25zdCBjaGFyICpmbmFtZSwgaW50IGxpbmUpOwpleHRlcm4gaW50IGds
b2JhbF93YXJuaW5nc19jb3VudDsKZXh0ZXJuIGludCBnbG9iYWxfd2FybmluZ3NfZHVyaW5nX3Vu
d2luZGluZzsKdm9pZCB3YXJuaW5nX3JldHVybih2b2lkKTsKY2xhc3MgV2FybkZhdWx0ZXIgOiBw
dWJsaWMgRFN0cmluZyB7CnB1YmxpYzoKICBXYXJuRmF1bHRlcih2b2lkKTsKICB2aXJ0dWFsIH5X
YXJuRmF1bHRlcigpOwpwdWJsaWM6CiAgdmlydHVhbCBpbnQgZW5kcHJpbnRmKHZvaWQpOwp9Owpl
eHRlcm4gV2FybkZhdWx0ZXIgYXNzZXJ0X3dhcm5lcjsKdHlwZWRlZiBpbnQgTElOS0VEQk9PTDsK
Y2xhc3MgUkdCX0RhdGEgewpwdWJsaWM6CiAgdWNoYXIgcmVkOwogIHVjaGFyIGdyZWVuOwogIHVj
aGFyIGJsdWU7Cn07CmVudW0gTGlzdEl0ZXJhdG9yS2luZCB7CiAgTElLX2ZvcndhcmRfc3RvcCwK
ICBMSUtfYmFja3dhcmRfc3RvcCwKICBMSUtfTEFTVAp9OwpjbGFzcyBQcmludGY7CnRlbXBsYXRl
IDxjbGFzcyBUPgpjbGFzcyBUTGlzdEVsZW1lbnQgewpwdWJsaWM6CiAgVCAqbmV4dDsKICBUICpw
cmV2OwpwdWJsaWM6CiAgVExpc3RFbGVtZW50KHZvaWQpOwogIHZpcnR1YWwgflRMaXN0RWxlbWVu
dCgpOwpwdWJsaWM6CiAgdm9pZCB1bmxpbmsoVCAqdCk7CiAgdm9pZCBhcHBlbmQgKFQgKnQsIFQg
KnApOwogIHZvaWQgcHJlcGVuZChUICp0LCBUICpwKTsKfTsKdGVtcGxhdGUgPGNsYXNzIFQ+CmNs
YXNzIFRMaXN0SGVhZCB7CnB1YmxpYzoKICBUICpoZWFkOwogIFQgKnRhaWw7CiAgY29uc3QgY2hh
ciAqbmFtZTsKcHVibGljOgogIFRMaXN0SGVhZChjb25zdCBjaGFyICpfbmFtZT0wKTsKICB2aXJ0
dWFsIH5UTGlzdEhlYWQoKTsKcHVibGljOgogIHZvaWQgYXBwZW5kKFQgKnApOwogIHZvaWQgcHJl
cGVuZChUICpwKTsKICB2b2lkIHVubGluayhUICpwKTsKICBpbnQgbGVuZ3RoKHZvaWQpIGNvbnN0
OwogIHZvaWQgcmVtb3ZlX2FsbCh2b2lkKTsKfTsKdGVtcGxhdGUgPGNsYXNzIFQ+CmNsYXNzIFRM
aXN0SXRlcmF0b3Igewpwcml2YXRlOgogIExpc3RJdGVyYXRvcktpbmQga2luZDsKICBjb25zdCBU
TGlzdEhlYWQ8VD4gKmhkOwogIGNvbnN0IFQgKnAwOwogIFQgKnAxOwpwdWJsaWM6CiAgVExpc3RJ
dGVyYXRvcihMaXN0SXRlcmF0b3JLaW5kIF9raW5kLCBjb25zdCBUTGlzdEhlYWQ8VD4gKl9oZCk7
CiAgVExpc3RJdGVyYXRvcihjb25zdCBUTGlzdEhlYWQ8VD4gKl9oZCk7CiAgflRMaXN0SXRlcmF0
b3IoKTsKcHVibGljOgogIGlubGluZSBpbnQgbmV4dChjb25zdCBUIComYmFjaykgewogICAgYmFj
ayA9IHAwOwogICAgaWYgKHAwKSB7CiAgICAgIHAwID0gKGtpbmQgPT0gTElLX2ZvcndhcmRfc3Rv
cCkgPyBwMC0+bmV4dCA6IHAwLT5wcmV2OwogICAgfQogICAgcmV0dXJuKGJhY2sgPyAxIDogMCk7
CiAgfQogIGlubGluZSBpbnQgbW9kbmV4dChUIComYmFjaykgewogICAgYmFjayA9IHAxOwogICAg
aWYgKHAxKSB7CiAgICAgIHAxID0gKGtpbmQgPT0gTElLX2ZvcndhcmRfc3RvcCkgPyBwMS0+bmV4
dCA6IHAxLT5wcmV2OwogICAgfQogICAgcmV0dXJuKGJhY2sgPyAxIDogMCk7CiAgfQp9OwpzdHJ1
Y3QgSU9SZWRpcmVjdG9yX2lvc3RhY2sgewogIEZpbGVJTyAqZnA7CiAgaW50IHBpcGVfY29kZTsK
fTsKc3RydWN0IElPUmVkaXJlY3Rvcl9jb250cm9sIHsKICBjb25zdCBjaGFyICpvcDsKICBpbnQg
ZG9fc3RkZXJyOwogIGludCBkb19hcHBlbmQ7CiAgaW50IGRvX3NpbGVudDsKICBpbnQgcGlwZV9j
b2RlOwogIGNvbnN0IGNoYXIgKmRvYzsKfTsKY2xhc3MgSU9SZWRpcmVjdG9yIHsKcHJpdmF0ZToK
ICBzdGF0aWMgY29uc3QgSU9SZWRpcmVjdG9yX2NvbnRyb2wgcmVkaXJlY3RzW107CnB1YmxpYzoK
ICBJT1JlZGlyZWN0b3Iodm9pZCk7CiAgfklPUmVkaXJlY3RvcigpOwpwdWJsaWM6CiAgaW50IHN0
YXJ0X291dHB1dF9yZWRpcmVjdChpbnQgKnJfYXJnYywgY2hhciAqKipyX2FyZ3YpOwogIHZvaWQg
ZmluaXNoX291dHB1dF9yZWRpcmVjdCh2b2lkKTsKcHVibGljOgogIHN0YXRpYyBpbnQgdGNsX2xp
bmsoVGNsX0ludGVycCAqaW50ZXJwKTsKcHJpdmF0ZToKICBzdGF0aWMgaW50IHVfcmVkaXJlY3Qo
Q2xpZW50RGF0YSBjbGllbnRkYXRhLAogICAgVGNsX0ludGVycCAqaW50ZXJwLCBpbnQgYXJnYywg
Y2hhciAqKmFyZ3YpOwogIHN0YXRpYyBpbnQgdV9wcmVmaXhfcmVkaXJlY3QoQ2xpZW50RGF0YSBj
bGllbnRkYXRhLAogICAgVGNsX0ludGVycCAqaW50ZXJwLCBpbnQgYXJnYywgY2hhciAqKmFyZ3Yp
Owpwcml2YXRlOgogIGludCBmaW5kX2RvX3JlZGlyZWN0KFRjbF9JbnRlcnAgKmludGVycCwgaW50
IGFyZ2MsIGNoYXIgKiphcmd2KTsKICBpbnQgZG9fcmVkaXJlY3QoVGNsX0ludGVycCAqaW50ZXJw
LCBjb25zdCBJT1JlZGlyZWN0b3JfY29udHJvbCAqcCwKICAgIGludCBhcmdjLCBjaGFyICoqYXJn
diwgY29uc3QgY2hhciAqb2ZpbGUpOwogIGludCBkb19hcHBseShUY2xfSW50ZXJwICppbnRlcnAs
IGludCBhcmdjLCBjaGFyICoqYXJndik7CnByaXZhdGU6CiAgaW50IGR1cF9jbG9zZShpbnQgZmQp
OwogIHZvaWQgY2xvc2VfZHVwKGludCBmZCwgaW50IGR1cGZkKTsKfTsKZXh0ZXJuIElPUmVkaXJl
Y3RvciBnbG9iYWxfcmVkaXJlY3RvcjsKY2xhc3MgQXJnSW5mbzsKY2xhc3MgRW51bUluZm9fQmxv
Y2s7CmVudW0gQXJndW1lbnRUeXBlIHsKICBBVF9JbnRlZ2VyLAogIEFUX0ludDY0LAogIEFUX0lu
dDEyOCwKICBBVF9GbG9hdCwKICBBVF9Eb3VibGUsCiAgQVRfU3RyaW5nLAogIEFUX1NhdmVTdHJp
bmcsCiAgQVRfQm9vbGVhbiwKICBBVF9JbnRCb29sZWFuLAogIEFUX0VudW0sCiAgQVRfRW51bVNl
dCwKICBBVF9FbnVtU2V0NjQsCiAgQVRfRW51bUxpc3QsCiAgQVRfRnVuYywKICBBVF9PdGhlcnMs
CiAgQVRfTEFTVAp9OwpleHRlcm4gY29uc3QgRW51bUluZm9fQmxvY2sgQXJndW1lbnRUeXBlSW5m
bzsKZW51bSBBcmdDb2RlIHsKICBBUkdfT0ssCiAgQVJHX0hFTFBfT05MWSwKICBBUkdfRkFVTFQK
fTsKY2xhc3MgQXJnUHJpbnRDb250cm9sIHsKcHVibGljOgogIGNvbnN0IGNoYXIgKmNvbW1hbmRf
bmFtZTsKICBib29sIGFzX3JlcGxheTsKICBib29sIGFzX3BsaXN0OwogIFRjbF9JbnRlcnAgKmlu
dGVycDsKICBpbnQgcmVwbGF5X3NldDsKICBib29sIGRvX3ZlcmJvc2U7CiAgYm9vbCBkb19sYXRl
eDsKICBjb25zdCBjaGFyICphcmdfbWF0Y2hfcGF0dGVybjsKcHVibGljOgogIEFyZ1ByaW50Q29u
dHJvbCh2b2lkKTsKICB+QXJnUHJpbnRDb250cm9sKCk7Cn07CnN0cnVjdCBUY2xfSW50ZXJwOwpj
bGFzcyBBcmdQYXJzZXIgewpmcmllbmQgY2xhc3MgVUk7CnByaXZhdGU6CiAgYm9vbCBleHBsYWlu
X29ubHk7CiAgYm9vbCBkb19sYXRleDsKICBib29sIGRvX3ZlcmJvc2U7CiAgY29uc3QgY2hhciAq
YXJnX21hdGNoX3BhdHRlcm47CiAgaW50IG9yaWdpbmFsX2FyZ2M7CiAgY29uc3QgY2hhciAqKm9y
aWdpbmFsX2FyZ3Y7CnB1YmxpYzoKICBib29sIGZhdWx0OwogIEZpbGVJTyAqb3V0ZnA7CiAgaW50
IGFyZ2M7CiAgaW50IG5hcmdjX2FsbG9jOwogIGNvbnN0IGNoYXIgKiphcmd2OwpwdWJsaWM6CiAg
QXJnUGFyc2VyKGludCBhcmdjID0gMCwgY29uc3QgY2hhciAqKmFyZ3YgPSAwKTsKICB+QXJnUGFy
c2VyKCk7CiAgc3RhdGljIHZvaWQgcHJpbnRfYXJnY19hcmd2KAogICAgUHJpbnRmICpmcCwKICAg
IGludCBhcmdjLAogICAgY29uc3QgY2hhciAqKmFyZ3YsCiAgICBpbnQgb2Zmc2V0ID0gMAogICAg
KTsKICB2b2lkIHByaW50X2FyZ2NfYXJndihQcmludGYgKmZwID0gZ2xvYmFsX3N0ZG91dCwgaW50
IG9mZnNldCA9IDApIGNvbnN0OwogIHN0YXRpYyB2b2lkIHdyb25nX251bV9hcmdzKFByaW50ZiAq
ZnAsIGludCBhcmdjID0gMCwgY29uc3QgY2hhciAqKmFyZ3YgPSAwKTsKICB2b2lkIHhwYXJzZShj
b25zdCBjaGFyICpidWYpOwogIEFyZ0NvZGUgZG9fZml4ZWRfYXJncyhBcmdJbmZvICphaSwgaW50
IGFyZ2NfZXhwZWN0ZWQpOwogIEFyZ0NvZGUgZG9fYXJncyhjb25zdCBBcmdJbmZvICphaSwgaW50
IGNvYWxlc2NlX2NvbnRyb2xfY29kZT0xLGJvb2wgZG9faW5pdD10cnVlKTsKICBpbnQgZXhwbGFp
bl9hcmdzKGNvbnN0IEFyZ1ByaW50Q29udHJvbCAmY29udHJvbCwgY29uc3QgQXJnSW5mbyAqYWkp
IGNvbnN0OwogIGludCBleHBsYWluX2FyZ3MoY29uc3QgQXJnSW5mbyAqYWkpIGNvbnN0OwogIHZv
aWQgZHVtcCh2b2lkKSBjb25zdDsKICB2b2lkIHByaW50KFByaW50ZiAqZnAsIGludCBwcmludF9s
ZXZlbD0xMCkgY29uc3Q7CnByaXZhdGU6CiAgYm9vbCBpc19leHBsYWluX29ubHkodm9pZCkgY29u
c3Qge3JldHVybiBleHBsYWluX29ubHk7fQogIHZvaWQgZ3JvdyhpbnQgbmVlZCk7Cn07CmNsYXNz
IGludDEyODsKY2xhc3MgQXJnSW5mbyB7CmZyaWVuZCBjbGFzcyBBcmdQYXJzZXI7CnByaXZhdGU6
CiAgY29uc3QgY2hhciAqYXJnbmFtZTsKICBjb25zdCBjaGFyICphcmdjb21tZW50OwogIEFyZ3Vt
ZW50VHlwZSB0eXBlOwogIHZvaWQgKmFyZ3ZhbHVlOwogIGludCBpZGVmdmFsdWU7CiAgaW50NjQg
aTY0ZGVmdmFsdWU7CiAgaW50MTI4IGkxMjhkZWZ2YWx1ZTsKICBkb3VibGUgZGRlZnZhbHVlOwog
IGNvbnN0IGNoYXIgKnNkZWZ2YWx1ZTsKICBjb25zdCBFbnVtSW5mb19CbG9jayAqZW51bWJsb2Nr
OwogIGJvb2wgKmRpZHNldDsKICBib29sIGZhdWx0OwpwdWJsaWM6CiAgQXJnSW5mbyhBcmd1bWVu
dFR5cGUgdCwgY29uc3QgY2hhciAqX2FyZ25hbWUsIGNvbnN0IGNoYXIgKl9hcmdjb21tZW50LAog
ICAgYm9vbCAmX2FyZ3ZhbHVlLCBib29sIF9kZWZ2YWx1ZSwgYm9vbCAqZGlkc2V0PTApOwogIEFy
Z0luZm8oQXJndW1lbnRUeXBlIHQsIGNvbnN0IGNoYXIgKl9hcmduYW1lLCBjb25zdCBjaGFyICpf
YXJnY29tbWVudCwKICAgIGludCAmX2FyZ3ZhbHVlLCBpbnQgX2RlZnZhbHVlLCBib29sICpkaWRz
ZXQ9MCk7CiAgQXJnSW5mbyhBcmd1bWVudFR5cGUgdCwgY29uc3QgY2hhciAqX2FyZ25hbWUsIGNv
bnN0IGNoYXIgKl9hcmdjb21tZW50LAogICAgdW5zaWduZWQgaW50ICZfYXJndmFsdWUsIGludCBf
ZGVmdmFsdWUsIGJvb2wgKmRpZHNldD0wKTsKICBBcmdJbmZvKEFyZ3VtZW50VHlwZSB0LCBjb25z
dCBjaGFyICpfYXJnbmFtZSwgY29uc3QgY2hhciAqX2FyZ2NvbW1lbnQsCiAgICBmbG9hdCAmX2Fy
Z3ZhbHVlLCBmbG9hdCBfZGVmdmFsdWUsIGJvb2wgKmRpZHNldD0wKTsKICBBcmdJbmZvKEFyZ3Vt
ZW50VHlwZSB0LCBjb25zdCBjaGFyICpfYXJnbmFtZSwgY29uc3QgY2hhciAqX2FyZ2NvbW1lbnQs
CiAgICBkb3VibGUgJl9hcmd2YWx1ZSwgZG91YmxlIF9kZWZ2YWx1ZSwgYm9vbCAqZGlkc2V0PTAp
OwogIEFyZ0luZm8oQXJndW1lbnRUeXBlIHQsIGNvbnN0IGNoYXIgKl9hcmduYW1lLCBjb25zdCBj
aGFyICpfYXJnY29tbWVudCwKICAgIGNvbnN0IGNoYXIgKiZfYXJndmFsdWUsIGNvbnN0IGNoYXIg
Kl9kZWZ2YWx1ZSwgYm9vbCAqZGlkc2V0PTApOwogIEFyZ0luZm8oQXJndW1lbnRUeXBlIHQsIGNv
bnN0IGNoYXIgKl9hcmduYW1lLCBjb25zdCBjaGFyICpfYXJnY29tbWVudCwKICAgIGludCAmX2Fy
Z3ZhbHVlLCBpbnQgX2RlZnZhbHVlLCBjb25zdCBFbnVtSW5mb19CbG9jayAqX2VudW1ibG9jaywK
ICAgIGJvb2wgKmRpZHNldD0wKTsKICBBcmdJbmZvKEFyZ3VtZW50VHlwZSB0LCBjb25zdCBjaGFy
ICpfYXJnbmFtZSwgY29uc3QgY2hhciAqX2FyZ2NvbW1lbnQsCiAgICBURmxleEFycmF5PGludD4g
Jl9hcmd2YWx1ZSwgaW50IF9kZWZ2YWx1ZSwgY29uc3QgRW51bUluZm9fQmxvY2sgKl9lbnVtYmxv
Y2ssCiAgICBib29sICpkaWRzZXQ9MCk7CiAgQXJnSW5mbyhBcmd1bWVudFR5cGUgdCwgY29uc3Qg
Y2hhciAqX2FyZ25hbWUsIGNvbnN0IGNoYXIgKl9hcmdjb21tZW50LAogICAgaW50NjQgJl9hcmd2
YWx1ZSwgaW50NjQgX2RlZnZhbHVlLCBib29sICpkaWRzZXQ9MCk7CiAgQXJnSW5mbyhBcmd1bWVu
dFR5cGUgdCwgY29uc3QgY2hhciAqX2FyZ25hbWUsIGNvbnN0IGNoYXIgKl9hcmdjb21tZW50LAog
ICAgdWludDY0ICZfYXJndmFsdWUsIHVpbnQ2NCBfZGVmdmFsdWUsIGJvb2wgKmRpZHNldD0wKTsK
ICBBcmdJbmZvKEFyZ3VtZW50VHlwZSB0LCBjb25zdCBjaGFyICpfYXJnbmFtZSwgY29uc3QgY2hh
ciAqX2FyZ2NvbW1lbnQsCiAgICB1aW50NjQgJl9hcmd2YWx1ZSwgdWludDY0IF9kZWZ2YWx1ZSwg
Y29uc3QgRW51bUluZm9fQmxvY2sgKl9lbnVtYmxvY2ssCiAgICBib29sICpkaWRzZXQ9MCk7CiAg
QXJnSW5mbyhBcmd1bWVudFR5cGUgdCwgY29uc3QgY2hhciAqX2FyZ25hbWUsIGNvbnN0IGNoYXIg
Kl9hcmdjb21tZW50LAogICAgaW50MTI4ICZfYXJndmFsdWUsIGludDEyOCBfZGVmdmFsdWUsIGJv
b2wgKmRpZHNldD0wKTsKICBBcmdJbmZvKEFyZ3VtZW50VHlwZSB0LCBjb25zdCBjaGFyICpfYXJn
bmFtZSwgY29uc3QgY2hhciAqX2FyZ2NvbW1lbnQsCiAgICB2b2lkICgqKShjb25zdCBjaGFyICop
LCBib29sICpkaWRzZXQ9MCk7CiAgQXJnSW5mbyhBcmd1bWVudFR5cGUgdCwgY29uc3QgY2hhciAq
X2FyZ25hbWUsIGNvbnN0IGNoYXIgKl9hcmdjb21tZW50KTsKICBBcmdJbmZvKHZvaWQpOwogIHZv
aWQgZHVtcCh2b2lkKSBjb25zdDsKICB2b2lkIHByaW50KGNvbnN0IEFyZ1ByaW50Q29udHJvbCAm
Y29udHJvbCwgUHJpbnRmICpmcCkgY29uc3Q7CnByaXZhdGU6CiAgY29uc3QgY2hhciAqcHJvdGVj
dF9sYXRleChjb25zdCBjaGFyICopIGNvbnN0OwogIGNvbnN0IGNoYXIgKnByaW50X2VudW1zZXQo
RFN0cmluZyAmdmFsYnVmLCB1aW50NjQgeDY0LAogICAgY29uc3QgY2hhciAqdHlwZV9uYW1lKSBj
b25zdDsKICB2b2lkIGFyZ19mYXVsdCh2b2lkKTsKfTsKY2xhc3MgQXJnSXRlcmF0b3Igewpwcml2
YXRlOgogIGNvbnN0IEFyZ1BhcnNlciAmYXJndjsKICBpbnQgaTsKICBjb25zdCBjaGFyICpkZWZh
dWx0X2FyZzsKICBpbnQgaGF2ZV9kZWZhdWx0X2FyZzsKcHJpdmF0ZToKICBEU3RyaW5nIGdsb2Ji
dWY7CiAgY2hhciAqZnJlZV9kZWZhdWx0X2FyZzsKcHVibGljOgogIEFyZ0l0ZXJhdG9yKGNvbnN0
IEFyZ1BhcnNlciAmX2FyZ3YsIGNvbnN0IGNoYXIgKmRlZmF1bHRfYXJnPTAsCiAgICBpbnQgX2hh
dmVfZGVmYXVsdF9hcmc9MCwgaW50IGdsb2JfcmVtYWluaW5nPTApOwogIH5BcmdJdGVyYXRvcigp
OwpwdWJsaWM6CiAgaW50IG5leHQoY29uc3QgY2hhciAqJmFyZyk7Cn07CmV4dGVybiAiQyIgY2hh
ciAqZXhwX3B0eV9lcnJvcjsKZXh0ZXJuICJDIiBpbnQgZXhwX2Rpc2Nvbm5lY3RlZDsKZXh0ZXJu
ICJDIiBpbnQgZXhwX2NtZGxpbmVjbWRzOwpleHRlcm4gIkMiIGludCBleHBfaW50ZXJhY3RpdmU7
CmV4dGVybiAiQyIgRklMRSAqZXhwX2NtZGZpbGU7CmV4dGVybiAiQyIgY2hhciAqZXhwX2NtZGZp
bGVuYW1lOwpleHRlcm4gIkMiIGludCBleHBfZ2V0cGlkOwpleHRlcm4gIkMiIGludCBleHBfYnVm
ZmVyX2NvbW1hbmRfaW5wdXQ7CmV4dGVybiAiQyIgaW50IGV4cF90Y2xfZGVidWdnZXJfYXZhaWxh
YmxlOwpleHRlcm4gIkMiIFRjbF9JbnRlcnAgKmV4cF9pbnRlcnA7CmV4dGVybiAiQyIgaW50IEV4
cGVjdF9Jbml0IChUY2xfSW50ZXJwICopOwpleHRlcm4gIkMiIHZvaWQgZXhwX3BhcnNlX2FyZ3Yg
KFRjbF9JbnRlcnAgKixpbnQgYXJnYyxjaGFyICoqYXJndik7CmV4dGVybiAiQyIgaW50IGV4cF9p
bnRlcnByZXRlciAoVGNsX0ludGVycCAqLFRjbF9PYmogKik7CmV4dGVybiAiQyIgaW50IGV4cF9p
bnRlcnByZXRfY21kZmlsZSAoVGNsX0ludGVycCAqLEZJTEUgKik7CmV4dGVybiAiQyIgaW50IGV4
cF9pbnRlcnByZXRfY21kZmlsZW5hbWUgKFRjbF9JbnRlcnAgKixjaGFyICopOwpleHRlcm4gIkMi
IHZvaWQgZXhwX2ludGVycHJldF9yY2ZpbGVzIChUY2xfSW50ZXJwICosaW50IG15X3JjLGludCBz
eXNfcmMpOwpleHRlcm4gIkMiIGNoYXIgKiBleHBfY29vayAoY2hhciAqcyxpbnQgKmxlbik7CmV4
dGVybiAiQyIgdm9pZCBleHBDbG9zZU9uRXhlYyAoaW50KTsKZXh0ZXJuICJDIiB2b2lkICgqZXhw
X2FwcF9leGl0KShUY2xfSW50ZXJwICopOwpleHRlcm4gIkMiIHZvaWQgZXhwX2V4aXRfaGFuZGxl
cnMgKENsaWVudERhdGEpOwpleHRlcm4gIkMiIHZvaWQgZXhwX2Vycm9yIChUY2xfSW50ZXJwICog
aW50ZXJwLCAuLi4pOwplbnVtIFByb21wdEhlbHBLaW5kIHsKICBQSF9QcmVmaXgsCiAgUEhfRXhh
Y3QsCiAgUEhfU3RyaW5nCn07CmV4dGVybiBjb25zdCBFbnVtSW5mb19CbG9jayBQcm9tcHRIZWxw
S2luZEluZm87CnR5cGVkZWYgaW50IENvbW1hbmRSZXR1cm5UeXBlOwpjbGFzcyBBcmdQYXJzZXI7
CnR5cGVkZWYgQ29tbWFuZFJldHVyblR5cGUgKCpDb21tYW5kRnVuYykoVGNsX0ludGVycCAqaW50
ZXJwLCBBcmdQYXJzZXIgJmFyZ3YpOwpjbGFzcyBDb21tYW5kSW5mbyA6IHB1YmxpYyBUTGlzdEVs
ZW1lbnQ8Q29tbWFuZEluZm8+IHsKZnJpZW5kIGNsYXNzIFVJOwpwdWJsaWM6CiAgY29uc3QgY2hh
ciAqY29tbWFuZDsKICBjb25zdCBjaGFyICpoZWxwX2luZm87CiAgQ29tbWFuZEZ1bmMgZnVuYzsK
cHVibGljOgogIENvbW1hbmRJbmZvKGNvbnN0IGNoYXIgKl9jb21tYW5kLCBjb25zdCBjaGFyICpf
aGVscF9pbmZvLCBDb21tYW5kRnVuYyBfZnVuYyk7CiAgdmlydHVhbCB+Q29tbWFuZEluZm8oKTsK
fTsKY2xhc3MgSGVscENvbnRyb2xCbG9jayB7CnB1YmxpYzoKICBGaWxlSU8gKmZwOwogIFByb21w
dEhlbHBLaW5kIGtpbmQ7CiAgY29uc3QgQXJnUGFyc2VyICphcmd2cDsKcHVibGljOgogIGNvbnN0
IGNoYXIgKmJhbm5lcl9pbmZvOwogIGNvbnN0IGNoYXIgKmFyZ19tYXRjaF9wYXR0ZXJuOwogIGNv
bnN0IGNoYXIgKmNvbW1hbmRfcHJpbnRfbmFtZTsKICBib29sIGRvX3ZlcmJvc2U7CiAgYm9vbCBk
b19sYXRleDsKcHVibGljOgogIEhlbHBDb250cm9sQmxvY2sodm9pZCk7CiAgfkhlbHBDb250cm9s
QmxvY2soKTsKfTsKdHlwZWRlZiBpbnQgKCpUY2xFdmFsdWF0b3IpKFRjbF9JbnRlcnAgKmludGVy
cCwgY29uc3QgY2hhciAqc2NyaXB0KTsKdHlwZWRlZiBpbnQgKCpBcHBsaWNhdGlvbkluaXRpYWxp
emF0aW9uRnVuYykoQXJnUGFyc2VyICYpOwpjbGFzcyBFcnJvckluZm87CmNsYXNzIFVJIHsKZnJp
ZW5kIGNsYXNzIFVJRmF1bHRlcjsKcHJpdmF0ZToKICBlbnVtIEV4aXRDb2RlIHsKICAgIFNFVFVQ
X0VSUk9SID0gMiwKICAgIEdMT0JBTF9VTldJTkRJTkcgPSAzCiAgfTsKICBzdGF0aWMgQXJnUGFy
c2VyICpsYXN0X2FwOwogIHN0YXRpYyBib29sIGdvdFBhcnRpYWw7CiAgc3RhdGljIGJvb2wgc3Rh
dGljX29rX3RvX3ByaW50X3Byb21wdDsKICBzdGF0aWMgdm9pZCB1bml4c3RkX2FyZ3MoQXJnUGFy
c2VyICZhcCk7CiAgc3RhdGljIHZvaWQgc3RhdGljX2VmX2NvbW1vbihjb25zdCBjaGFyICphcmcs
IGJvb2wgaXNfZXhwcik7CiAgc3RhdGljIHZvaWQgdV9leHByX2NvbnN1bWVyKGNvbnN0IGNoYXIg
KmFyZyk7CiAgc3RhdGljIHZvaWQgdV9mbmFtZV9jb25zdW1lcihjb25zdCBjaGFyICphcmcpOwog
IHN0YXRpYyB2b2lkIHVfdGNsX2ludGVyYWN0aXZlX2NhbGxiYWNrKENsaWVudERhdGEgY2xpZW50
RGF0YSwgaW50IG1hc2spOwogIHN0YXRpYyBjb25zdCBjaGFyICpwcm9ncmFtX25hbWU7CiAgc3Rh
dGljIHZvaWQgbWFrZV9nbG9iYWxfdGNsX2ludGVycCh2b2lkKTsKICBzdGF0aWMgdm9pZCBkb19p
bnRlcmFjdGl2ZV9sb29wKHZvaWQpOwogIHN0YXRpYyB2b2lkIGludGVyYWN0aXZlX2xvb3Bib2R5
KHZvaWQpOwogIHN0YXRpYyBpbnQgaW5pdGlhbGl6ZV90ayh2b2lkKTsKcHVibGljOgogIHN0YXRp
YyBib29sIHN0YXRpY19kb19leGl0OwogIHN0YXRpYyBpbnQgc3RhdGljX2V4aXRfY29kZTsKICBz
dGF0aWMgaW50IGlvZXJyb3Jjb3VudDsKcHJpdmF0ZToKICBzdGF0aWMgYm9vbCBpbnRlcmFjdDsK
cHVibGljOgogIHN0YXRpYyBpbnQgdWlfZXhlY3V0ZShBcmdQYXJzZXIgJm1haW5fYXAsCiAgICBj
b25zdCBjaGFyICpoaXN0b3J5X2ZpbGUsIGNvbnN0IGNoYXIgKnByb2dyYW1fbmFtZSwKICAgIEFw
cGxpY2F0aW9uSW5pdGlhbGl6YXRpb25GdW5jIGluaXRpYWxpemUKICApOwogIHN0YXRpYyBGaWxl
SU8gKmZwOwogIHN0YXRpYyBib29sIGlzX3Byb3RlY3RlZDsKICBzdGF0aWMgVGNsX0RTdHJpbmcg
KmNvbW1hbmQ7CiAgc3RhdGljIFRMaXN0SGVhZDxDb21tYW5kSW5mbz4gY29tbWFuZHM7CiAgc3Rh
dGljIGJvb2wgZG9fdHJhY2U7CiAgc3RhdGljIGJvb2wgc3RhdGljX2hhdmVfZGlzcGxheTsKICBz
dGF0aWMgaW50IGZnZXRzX3ZhbHVlOwogIHN0YXRpYyBpbnQgZmdldHNfZmxhZzsKICBzdGF0aWMg
aW50IGZnZXRzKERTdHJpbmcgJmJ1ZmZlciwgRmlsZUlPICpmcCk7CiAgc3RhdGljIHZvaWQgZmdl
dHNfaGVscGVyKENsaWVudERhdGEgZGF0YSwgaW50IG1hc2spOwogIHN0YXRpYyB2b2lkIGFjdGlv
bnNfYmVmb3JlX2RlbGF5KHZvaWQpOwogIHN0YXRpYyBDb21tYW5kUmV0dXJuVHlwZSB3cm9uZ19u
dW1fYXJncyhUY2xfSW50ZXJwICppbnRlcnApOwogIHN0YXRpYyBDb21tYW5kUmV0dXJuVHlwZSB3
cm9uZ19udW1fYXJncyhUY2xfSW50ZXJwICppbnRlcnAsIGludCBhcmdjLAogICAgY2hhciAqKmFy
Z3YpOwogIHN0YXRpYyBDb21tYW5kUmV0dXJuVHlwZSB3cm9uZ19udW1fYXJncyhUY2xfSW50ZXJw
ICppbnRlcnAsIGludCBhcmdjLAogICAgY29uc3QgY2hhciAqKmFyZ3YpOwogIHN0YXRpYyB2b2lk
IGFkZChjb25zdCBjaGFyICpwMSwgY29uc3QgY2hhciAqcDIsCiAgICBjb25zdCBjaGFyICpjb21t
YW5kLCBjb25zdCBjaGFyICpoZWxwX2luZm8sIENvbW1hbmRGdW5jIGZ1bmMpOwogIHN0YXRpYyBD
b21tYW5kUmV0dXJuVHlwZSBtYWtlX2ludChUY2xfSW50ZXJwICppbnRlcnAsIGludCk7CiAgc3Rh
dGljIENvbW1hbmRSZXR1cm5UeXBlIG1ha2VfZG91YmxlKFRjbF9JbnRlcnAgKmludGVycCwgZG91
YmxlKTsKICBzdGF0aWMgQ29tbWFuZFJldHVyblR5cGUgbWFrZV9laW5mbyhUY2xfSW50ZXJwICpp
bnRlcnAsIGNvbnN0IEVycm9ySW5mbyAmKTsKICBzdGF0aWMgQ29tbWFuZFJldHVyblR5cGUgbWFr
ZV9zdHIoVGNsX0ludGVycCAqaW50ZXJwLCBjb25zdCBjaGFyICopOwogIHN0YXRpYyBDb21tYW5k
UmV0dXJuVHlwZSBmYXVsdChUY2xfSW50ZXJwICppbnRlcnAsIGNvbnN0IERTdHJpbmcgJm1zZyk7
CiAgc3RhdGljIENvbW1hbmRSZXR1cm5UeXBlIGV4Y2VwdGlvbmFsX2FyZ19yZXR1cm4oVGNsX0lu
dGVycCAqaW50ZXJwLAogICAgQXJnQ29kZSBjb2RlKTsKICBzdGF0aWMgaW50IGF0b2koY29uc3Qg
Y2hhciAqcCk7CiAgc3RhdGljIGRvdWJsZSBhdG9mKGNvbnN0IGNoYXIgKnApOwogIHN0YXRpYyB1
bnNpZ25lZCBsb25nIGxvbmcgYXRvdWludDY0KGNvbnN0IGNoYXIgKnApOwogIHN0YXRpYyB2b2lk
IHRjbF9wcm90ZWN0X2V2YWwodm9pZCk7CiAgc3RhdGljIHZvaWQgdGNsX3VucHJvdGVjdF9ldmFs
KHZvaWQpOwogIHN0YXRpYyBSR0JfRGF0YSBUa19HZXRDb2xvcihjb25zdCBjaGFyICpjb2xvcl9u
YW1lKTsKICBzdGF0aWMgdm9pZCBpbnRlcmFjdGl2ZV9wcmludF9wcm9tcHQodm9pZCk7CiAgc3Rh
dGljIGludCBoZWxwKGNvbnN0IEhlbHBDb250cm9sQmxvY2sgJmNvbnRyb2wpOwogIHN0YXRpYyBp
bnQgaGVscF9tYXRjaChQcm9tcHRIZWxwS2luZCBraW5kLAogICAgY29uc3QgY2hhciAqcGF0dGVy
biwgc2l6ZV90IHBhdHRlcm5fbGcsCiAgICBjb25zdCBjaGFyICpzdWJqZWN0KTsKICBzdGF0aWMg
aW50IHRjbF9jcmVhdGVjb21tYW5kKFRjbF9JbnRlcnAgKmludGVycCwKICAgIGNvbnN0IGNoYXIg
KmNvbW1hbmRfbmFtZSwKICAgIGNvbnN0IGNoYXIgKmFyZ19kb2MsIGNvbnN0IGNoYXIgKmNvbW1h
bmRfZG9jLAogICAgVGNsX0NtZFByb2MgKmNtZFByb2MsIENsaWVudERhdGEgZGF0YSwKICAgIFRj
bF9DbWREZWxldGVQcm9jICpkZWxldGVQcm9jKTsKICBzdGF0aWMgdm9pZCBzdGF0aWNfYmluZF91
aV9zaWduYWwoaW50IHNpZ25vKTsKICBzdGF0aWMgdm9pZCBzdGF0aWNfcmVfYmluZF91aV9zaWdu
YWwoaW50IHNpZ25vKTsKICBzdGF0aWMgdm9pZCBzaWduYWxfYmluZGVyKGludCBzaWdubywgdm9p
ZCAoKmZ1bmMpKGludCkpOwogIHN0YXRpYyB2b2lkIHNpZ19oYW5kbGVyMShpbnQgc2lnbm8pOwog
IHN0YXRpYyBpbnQgZWNob19hcmdzKFByaW50ZiAqZnAsIEFyZ1BhcnNlciAmYXJndiwgaW50IG9m
ZnNldD0wKTsKICBzdGF0aWMgdm9pZCByZWNvcmRfYXJnY19hcmd2KGludCBhcmdjLCBjb25zdCBj
aGFyICoqYXJndik7CiAgc3RhdGljIGJvb2wgZmluZF9hbmRfc291cmNlX2NvbmZpZ19maWxlKFRj
bF9JbnRlcnAgKmludGVycCwKICAgIGNvbnN0IGNoYXIgKmFyZ3YwLCBjb25zdCBjaGFyICpleGVj
dXRlX2NvbmZpZ19hcmcpOwogIHN0YXRpYyBib29sIGhhdmVfZGlzcGxheSh2b2lkKTsKICBzdGF0
aWMgaW50IHR0ZV9jb21tYW5kKENsaWVudERhdGEgaGFuZGxlLAogICAgVGNsX0ludGVycCAqaW50
ZXJwLCBpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpOwogIHN0YXRpYyBpbnQgYm9vbGVhbl9x
dWVyeShjb25zdCBjaGFyICp3aGVyZSk7CiAgc3RhdGljIHZvaWQgYm91bmRhcnkoUHJpbnRmICpm
cCwgY29uc3QgY2hhciAqbXNnKTsKICBzdGF0aWMgYm9vbCB4dGVybV9iYW5uZXIoY29uc3QgY2hh
ciAqbWVzc2FnZSk7Cn07CmRvdWJsZSBVSV9hdG9mKGNvbnN0IGNoYXIgKnN0cik7CmludCBVSV9h
dG9pKGNvbnN0IGNoYXIgKnN0cik7CnR5cGVkZWYgaW50IFRva2VuOwpjbGFzcyBLZXlXb3JkQmxv
Y2sgOiBwdWJsaWMgRW51bUluZm9fQmxvY2sgewpwdWJsaWM6CiAgaW50IGtleWxvb2soY29uc3Qg
Y2hhciAqdGV4dCkgY29uc3Q7CnB1YmxpYzoKICBLZXlXb3JkQmxvY2soY29uc3QgRW51bUluZm8g
KmRhdGEpOwogIHZpcnR1YWwgfktleVdvcmRCbG9jaygpOwp9OwppbnQgc3RydmFsY21wKGNvbnN0
IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKaW50IHN0cnZhbGNhc2VjbXAoY29uc3QgY2hhciAqLCBj
b25zdCBjaGFyICopOwpjbGFzcyBFeHByZXNzaW9uOwpleHRlcm4gRXhwcmVzc2lvbiAqZXhwcl9y
b290OwpjbGFzcyBTdGF0ZW1lbnQ7CmVudW0gVmFsdWVPcGVyYXRvcjsKY2xhc3MgR2VuZXJhbFNj
YW5uZXIgewpwcm90ZWN0ZWQ6CiAgY29uc3QgS2V5V29yZEJsb2NrICpwcmltYXJ5X2tleXdvcmRz
OwogIGNvbnN0IEtleVdvcmRCbG9jayAqc2Vjb25kYXJ5X2tleXdvcmRzOwpwdWJsaWM6CiAgVG9r
ZW4ga2V5bG9vayhjb25zdCBjaGFyICp0ZXh0KSBjb25zdDsKcHVibGljOgogIHN0YXRpYyBpbnQg
Y2FzZV9zZW5zaXRpdmU7CnB1YmxpYzoKICBpbnQgY29tbWVudHNfYXNfYXdrOwogIGludCBjb21t
ZW50c19hc192aGRsOwogIGludCBjb21tZW50c19hc19jOwogIGludCBjb21tZW50c19hc19jcGx1
czsKICBib29sIGRvX3NwYWNlczsKcHJvdGVjdGVkOgogIERTdHJpbmcgaW5idWY7CiAgY2hhciAq
bmV4dHA7CiAgRFN0cmluZyB0ZXh0OwpwdWJsaWM6CiAgRmlsZUlPICpmcDsKICBTY2FubmVyTG9j
YXRpb24gKmxvYzsKcHJvdGVjdGVkOgogIGludCBuZXdsaW5lX3BlbmRpbmc7CnB1YmxpYzoKICBU
b2tlbiBmaXJzdHRva2VuOwogIHZpcnR1YWwgaW50IHl5cGFyc2Uodm9pZCkgPSAwOwpwcm90ZWN0
ZWQ6CiAgY29uc3QgY2hhciAqc3BlY2lhbF9pZGVudF9jaGFyczsKcHJvdGVjdGVkOgogIGludCBm
aWxlcmVhZChQcmludGYgKmluZnApOwpwdWJsaWM6CiAgaW50IHNwYW4oUHJpbnRmICpvdXRmcCwg
UHJpbnRmICppbmZwLCBjb25zdCBjaGFyICplbmRidWYpOwpwcm90ZWN0ZWQ6CiAgdmlydHVhbCBU
b2tlbiByZWFseXlsZXgodm9pZCAqeXlsdmFsKSA9IDA7CiAgdmlydHVhbCBUb2tlbiBPcF90b19U
b2tlbihWYWx1ZU9wZXJhdG9yKSA9IDA7CnB1YmxpYzoKICBsb25nIGxvbmcgaW50IHl5bHZhbFsx
MF07CnB1YmxpYzoKICBHZW5lcmFsU2Nhbm5lcihTY2FubmVyTG9jYXRpb24gKl9sb2MsCiAgICBi
b29sIGlzZmlsZSwgY29uc3QgY2hhciAqX2ZpbGVuYW1lLAogICAgY29uc3QgY2hhciAqaWRlbnRf
Y2hhcnMpOwogIEdlbmVyYWxTY2FubmVyKFNjYW5uZXJMb2NhdGlvbiAqX2xvYywgRmlsZUlPICpf
ZnAsCiAgICBjb25zdCBjaGFyICppZGVudF9jaGFycyk7CiAgdmlydHVhbCB+R2VuZXJhbFNjYW5u
ZXIoKTsKcHJpdmF0ZToKICB2b2lkIGluaXRfR2VuZXJhbFNjYW5uZXIoY29uc3QgY2hhciAqaWRl
bnRfY2hhcnMpOwpwdWJsaWM6CiAgdm9pZCBzZXRfaWRlbnRfY2hhcnMoY29uc3QgY2hhciAqaWRl
bnRfY2hhcnMpOwogIFRva2VuIHl5bGV4KHZvaWQgKnl5bHZhbCk7Cn07CmNvbnN0IGNoYXIgKm1h
a2VfY29uY2F0X3N0cmluZyhjb25zdCBjaGFyICpzMSwgY29uc3QgY2hhciAqczIpOwpjbGFzcyBS
ZWxhdGlvbjsKY2xhc3MgVmFyaWFibGU7CmVudW0gewogIE1BWEZJRUxEUz01MTIKfTsKY2xhc3Mg
UmVsYXRpb247CmNsYXNzIFR1cGxlOwpjbGFzcyBNdWx0aUV4cHJlc3Npb247CmNsYXNzIE11bHRp
VmFsdWUgewpwdWJsaWM6CiAgaW50IG52YWx1ZTsKICBWYWx1ZSB2YWx1ZVtNQVhNRVhQUl07CnB1
YmxpYzoKICBNdWx0aVZhbHVlKGNvbnN0IE11bHRpRXhwcmVzc2lvbiAqbXVsdGlfZXhwciwgaW50
IHJuLAogICAgUmVsYXRpb24gKm9yZWwsIGNvbnN0IFR1cGxlICpvdHVwbGUsCiAgICBSZWxhdGlv
biAqbnJlbD0wLCBUdXBsZSAqbnR1cGxlPTApOwogIE11bHRpVmFsdWUoY29uc3QgTXVsdGlFeHBy
ZXNzaW9uICptdWx0aV9leHByLAogICAgVmFsdWVsZWFmZXZhbHVhdG9yIGZuLCB2b2lkICpoYW5k
bGUpOwpwdWJsaWM6CiAgdm9pZCBzcHJpbnQoRFN0cmluZyAmYnVmKSBjb25zdDsKICB2b2lkIGR1
bXAodm9pZCkgY29uc3Q7CiAgdm9pZCBwcmludChQcmludGYgKmZwLCBpbnQgcHJpbnRfbGV2ZWw9
MTApIGNvbnN0Owp9OwpjbGFzcyBFeHByZXNzaW9uIHsKcHVibGljOgogIFZhbHVlT3BlcmF0b3Ig
b3Bjb2RlOwogIFZhbHVlIHZhbHVlOwogIEV4cHJlc3Npb24gKmxlZnQ7CiAgRXhwcmVzc2lvbiAq
cmlnaHQ7CnB1YmxpYzoKICBFeHByZXNzaW9uKHZvaWQpOwogIH5FeHByZXNzaW9uKCk7CnB1Ymxp
YzoKICBzdGF0aWMgRXhwcmVzc2lvbiAqY29ucyhWYWx1ZU9wZXJhdG9yIG9wY29kZSwKICAgIEV4
cHJlc3Npb24gKmxlZnQsIEV4cHJlc3Npb24gKnJpZ2h0KTsKICBzdGF0aWMgRXhwcmVzc2lvbiAq
c3RyaW5nbGVhZihjb25zdCBjaGFyICp2YWx1ZSk7CiAgc3RhdGljIEV4cHJlc3Npb24gKmlkZW50
bGVhZihjb25zdCBjaGFyICp2YWx1ZSk7CiAgc3RhdGljIEV4cHJlc3Npb24gKmludGxlYWYoVmFs
dWVJbnRUeXBlIHZhbHVlKTsKICBzdGF0aWMgRXhwcmVzc2lvbiAqaGV4aW50bGVhZihWYWx1ZUlu
dFR5cGUgdmFsdWUpOwogIHN0YXRpYyBFeHByZXNzaW9uICp1c2VybGVhZihVbmNlcnRhaW5WYWx1
ZSAmdmFsdWUpOwogIHN0YXRpYyBFeHByZXNzaW9uICpmbG9hdGxlYWYoVmFsdWVGbG9hdFR5cGUg
dmFsdWUpOwpwcml2YXRlOgogIGludCBwcmludF9sZWFmKERTdHJpbmcgJnN0cikgY29uc3Q7CiAg
aW50IHByZWNlZGVuY2UoVmFsdWVPcGVyYXRvciBvcCkgY29uc3Q7CiAgdm9pZCBwcmVjX2luZml4
KGludCBwLCBEU3RyaW5nICZidWYpIGNvbnN0OwpwdWJsaWM6CiAgdm9pZCBwcmVmaXgodm9pZCkg
Y29uc3Q7CiAgdm9pZCBwcmVmaXgoUHJpbnRmICpmcCkgY29uc3Q7CiAgdm9pZCBwcmVmaXgoRFN0
cmluZyAmYnVmKSBjb25zdDsKICB2b2lkIGluZml4KHZvaWQpIGNvbnN0OwogIHZvaWQgaW5maXgo
UHJpbnRmICpmcCkgY29uc3Q7CiAgdm9pZCBpbmZpeChEU3RyaW5nICZidWYpIGNvbnN0OwogIGNv
bnN0IGNoYXIgKm9wX25hbWUodm9pZCkgY29uc3Q7CiAgVmFsdWUgZXZhbChWYWx1ZWxlYWZldmFs
dWF0b3IgZm4sIHZvaWQgKmhhbmRsZSkgY29uc3Q7CiAgdm9pZCBob29rKHZvaWQpIGNvbnN0Owpw
dWJsaWM6CiAgZG91YmxlIGFzX2RvdWJsZShWYWx1ZWxlYWZldmFsdWF0b3IgZm4sIHZvaWQgKmhh
bmRsZSkgY29uc3Q7CiAgaW50IGFzX2ludChWYWx1ZWxlYWZldmFsdWF0b3IgZm4sIHZvaWQgKmhh
bmRsZSkgY29uc3Q7CnB1YmxpYzoKICB2b2lkIGR1bXAodm9pZCkgY29uc3Q7CiAgdm9pZCBwcmlu
dChQcmludGYgKmZwLCBpbnQgcHJpbnRfbGV2ZWw9MTApIGNvbnN0Owp9OwpjbGFzcyBNdWx0aUV4
cHJlc3Npb24gewpwcml2YXRlOgogIGludCBwcmVzZXJ2ZV9zdHJ1Y3R1cmU7CnB1YmxpYzoKICBp
bnQgbmV4cHI7CiAgRXhwcmVzc2lvbiAqZXhwcltNQVhNRVhQUl07CnByaXZhdGU6CiAgdm9pZCB1
bnJhdmVsKEV4cHJlc3Npb24gKnRyZWUsIGludCBfcHJlc2VydmVfc3RydWN0dXJlPTApOwpwdWJs
aWM6CiAgTXVsdGlFeHByZXNzaW9uKEV4cHJlc3Npb24gKnRyZWUsIGludCBfcHJlc2VydmVfc3Ry
dWN0dXJlPTApOwogIE11bHRpRXhwcmVzc2lvbihjb25zdCBjaGFyICpleHByLCBjb25zdCBjaGFy
ICppZGVudF9jaGFycyk7CiAgfk11bHRpRXhwcmVzc2lvbigpOwpwcml2YXRlOgogIHN0YXRpYyBj
b25zdCBjaGFyICp2YXJzX2luX2Vycm9yWzhdOwogIHN0YXRpYyBpbnQgbnZhcnNfaW5fZXJyb3I7
CnB1YmxpYzoKICBzdGF0aWMgdm9pZCBub192YXJpYWJsZShjb25zdCBjaGFyICpuYW1lKTsKICB2
b2lkIHJlc3RhcnRfZXJyb3JzKHZvaWQpOwpwdWJsaWM6CiAgdm9pZCBkdW1wKHZvaWQpIGNvbnN0
OwogIHZvaWQgcHJpbnQoUHJpbnRmICpmcCwgaW50IHByaW50X2xldmVsPTEwKSBjb25zdDsKfTsK
Y2xhc3MgUmVsYXRpb247CmNsYXNzIFR1cGxlOwpjbGFzcyBWYXJpYWJsZUNsb3N1cmUgewpwdWJs
aWM6CiAgaW50IHJuOwogIFJlbGF0aW9uICpyZWw7CiAgY29uc3QgVHVwbGUgKnR1cGxlOwogIFJl
bGF0aW9uICpyZWwyOwogIGNvbnN0IFR1cGxlICp0dXBsZTI7CiAgY29uc3QgTXVsdGlFeHByZXNz
aW9uICptdWx0aV9leHByOwpwdWJsaWM6CiAgVmFyaWFibGVDbG9zdXJlKHZvaWQpOwp9OwpWYWx1
ZSBldmFsKGNvbnN0IGNoYXIgKnN0cik7CmludCByZGJfcmVjbXAoY29uc3QgY2hhciAqcGF0dGVy
biwgY29uc3QgY2hhciAqc3ViamVjdCk7CmNsYXNzIFJkYlBhcnNlciA6IHB1YmxpYyBHZW5lcmFs
U2Nhbm5lciB7CnB1YmxpYzoKICB2aXJ0dWFsIGludCB5eXBhcnNlKHZvaWQpOwogIHZpcnR1YWwg
Ym9vbCBpc2xldHRlcihjaGFyIGNoKTsKICB2aXJ0dWFsIGJvb2wgaXNzcGVjbGV0dGVyKGNoYXIg
Y2gpOwogIHZpcnR1YWwgVG9rZW4gcmVhbHl5bGV4KHZvaWQgKnl5bHZhbCk7CiAgdmlydHVhbCBp
bnQgT3BfdG9fVG9rZW4oVmFsdWVPcGVyYXRvcik7CnB1YmxpYzoKICBSZGJQYXJzZXIoU2Nhbm5l
ckxvY2F0aW9uICpyZWZsb2MsCiAgICBib29sIGlzZmlsZSwgY29uc3QgY2hhciAqX2ZpbGVuYW1l
LCBjb25zdCBjaGFyICppZGVudF9jaGFycyk7CiAgdmlydHVhbCB+UmRiUGFyc2VyKCk7CnB1Ymxp
YzoKICBzdGF0aWMgY29uc3QgS2V5V29yZEJsb2NrIHJkYl9rZXl3b3JkczsKfTsKY2xhc3MgUmRi
UHJpbnRDb250cm9sOwpjbGFzcyBUdXBsZTsKY2xhc3MgVmFsdWU7CmNsYXNzIFNhdmVkUmVsYXRp
b247CmNsYXNzIFJlbGF0aW9uOwpjbGFzcyBNdWx0aUV4cHJlc3Npb247CnR5cGVkZWYgaW50ICgq
UmRiVW5yZWFkSGFuZGxlcikoUHJpbnRmICpmcCwgRFN0cmluZyAmbGluZSwKICBjb25zdCBjaGFy
ICpmbmFtZSwgaW50ICZsaW5lbm8pOwp0eXBlZGVmIGludCAoKlJlbGF0aW9uVGVzdGVyKShjb25z
dCBjaGFyICp3aGF0LCBjb25zdCBjaGFyICpmbmFtZSwKICBSZWxhdGlvbiAqcmVsLCBjb25zdCB2
b2lkICpoYW5kbGUpOwplbnVtIFJlbFF1ZXJ5VHlwZSB7CiAgUlFUX2V4aXN0cywKICBSUVRfbmFt
ZSwKICBSUVRfbnJvd3MsCiAgUlFUX25jb2xzLAogIFJRVF9jb2xzLAogIFJRVF90eXBlcywKICBS
UVRfY29sZG9jLAogIFJRVF9maWxlZG9jLAogIFJRVF9wcmludCwKICBSUVRfc2Nhbgp9OwpjbGFz
cyBSZWxhdGlvbklkZW50cyB7CnB1YmxpYzoKICBjb25zdCBjaGFyICpmbXQ7CiAgY29uc3QgY2hh
ciAqbmFtZTsKICBjb25zdCBjaGFyICpkb2M7Cn07CmNsYXNzIFJkYlByaW50Q29udHJvbCB7CnB1
YmxpYzoKICBib29sIGRvX2FzX25hbWVsaXN0OwogIGJvb2wgZG9fcXVvdGU7CiAgYm9vbCBkb19m
aXhlZF93aWR0aDsKICBib29sIGRvX2xlZnRfanVzdGlmeTsKICBib29sIGRvX3ByaW50X25sOwog
IGludCBwcmludF90eXBlOwogIGJvb2wgZG9fYnVyc3RfaGVhZGVyOwogIGJvb2wgZG9fYnVyc3Rf
ZGF0YTsKICBib29sIGRvX2JyaWVmOwogIGNvbnN0IGNoYXIgKmxhdGV4X21hY3JvX25hbWU7CiAg
Y29uc3QgY2hhciAqbGF0ZXhfc2xpY2VfbmFtZTsKcHVibGljOgogIGNvbnN0IGNoYXIgKkZTOwog
IGNvbnN0IGNoYXIgKndyaXRlX2NvbW1lbnQ7CiAgdW5zaWduZWQgaW50IHdyaXRlX2NvbW1lbnRf
bWFzazsKICBUdXBsZSAqbWF4X2NvbF93aWR0aDsKcHVibGljOgogIFJkYlByaW50Q29udHJvbCh2
b2lkKTsKICBSZGJQcmludENvbnRyb2woY29uc3QgUmRiUHJpbnRDb250cm9sICZtb2RlbCk7CiAg
flJkYlByaW50Q29udHJvbCgpOwp9OwpjbGFzcyBDb21iaW5lRGVmYXVsdHMgewpwdWJsaWM6CiAg
Y29uc3QgY2hhciAqc3RyaW5nX2RlZmF1bHQ7CiAgVmFsdWVJbnRUeXBlIGludF9kZWZhdWx0Owog
IFZhbHVlRmxvYXRUeXBlIGRfZGVmYXVsdDsKcHVibGljOgogIENvbWJpbmVEZWZhdWx0cyh2b2lk
KTsKfTsKY2xhc3MgU2F2ZWRSZWxhdGlvbiA6IHB1YmxpYyBUTGlzdEVsZW1lbnQ8U2F2ZWRSZWxh
dGlvbj4gewpwdWJsaWM6CiAgY29uc3QgY2hhciAqbmFtZTsKICBSZWxhdGlvbiAqcmVsOwpwdWJs
aWM6CiAgU2F2ZWRSZWxhdGlvbih2b2lkKTsKICB2aXJ0dWFsIH5TYXZlZFJlbGF0aW9uKCk7Cn07
CmNsYXNzIFNhdmVkUmVsYXRpb25NYW5hZ2VyIHsKcHVibGljOgogIFRMaXN0SGVhZDxTYXZlZFJl
bGF0aW9uPiBzcmVsX2hlYWQ7CiAgVExpc3RIZWFkPFNhdmVkUmVsYXRpb24+IGdhcmJhZ2VfaGVh
ZDsKcHVibGljOgogIFNhdmVkUmVsYXRpb25NYW5hZ2VyKHZvaWQpOwogIH5TYXZlZFJlbGF0aW9u
TWFuYWdlcigpOwp9OwpjbGFzcyBSZGJQbG90Q29udHJvbCB7CnB1YmxpYzoKICBjb25zdCBjaGFy
ICpwbG90X2tpbmQ7CiAgY29uc3QgY2hhciAqZmFtaWx5OwogIGNvbnN0IGNoYXIgKnhyYW5nZTsK
ICBjb25zdCBjaGFyICp5cmFuZ2U7CiAgY29uc3QgY2hhciAqenJhbmdlOwogIGJvb2wgaXNfM0Q7
CiAgaW50IHdhaXRfdGltZV9zZWM7CiAgY29uc3QgY2hhciAqdGl0bGU7CnB1YmxpYzoKICBSZGJQ
bG90Q29udHJvbCh2b2lkKTsKICB+UmRiUGxvdENvbnRyb2woKTsKfTsKY2xhc3MgUmRiUmVhZENv
bnRyb2wgewpwdWJsaWM6CiAgaW50IGZhdWx0OwogIGludCBhc19waXBlOwogIGludCBvd25zX2Zw
OwogIFNjYW5uZXJMb2NhdGlvbiBsb2M7CnB1YmxpYzoKICBjb25zdCBjaGFyICpmbXQ7CiAgY29u
c3QgY2hhciAqZm5hbWU7CiAgUHJpbnRmICpmcDsKICBSZGJVbnJlYWRIYW5kbGVyIGhhbmRsZXI7
CnB1YmxpYzoKICBjb25zdCBjaGFyICpyZWFkX2NvbW1lbnQ7CiAgY29uc3QgY2hhciAqd3JpdGVf
Y29tbWVudDsKICBpbnQgcmVhZF9jb21tZW50X2xnOwogIGludCB3cml0ZV9jb21tZW50X2xnOwog
IGJvb2wgZG9fYWx0X2NvbF9jb21tZW50czsKcHVibGljOgogIFJkYlJlYWRDb250cm9sKGNvbnN0
IGNoYXIgKmZuYW1lKTsKICBSZGJSZWFkQ29udHJvbChjb25zdCBjaGFyICpmbXQsIGNvbnN0IGNo
YXIgKmZuYW1lKTsKICBSZGJSZWFkQ29udHJvbChjb25zdCBjaGFyICpmbmFtZSwgRmlsZUlPICpm
cCk7CiAgUmRiUmVhZENvbnRyb2woY29uc3QgY2hhciAqZm10LCBjb25zdCBjaGFyICpmbmFtZSwg
RmlsZUlPICpmcCk7CiAgUmRiUmVhZENvbnRyb2woY29uc3QgY2hhciAqZm5hbWUsIGJvb2wgZG9f
dHJhY2UpOwpwdWJsaWM6CiAgdm9pZCBwcmVhZChjb25zdCBjaGFyICpwbmFtZSk7CiAgdm9pZCBw
cmVhZF9mbXQoY29uc3QgY2hhciAqZm10LCBjb25zdCBjaGFyICpwbmFtZSk7CnB1YmxpYzoKICBS
ZGJSZWFkQ29udHJvbCh2b2lkKTsKICB+UmRiUmVhZENvbnRyb2woKTsKcHJpdmF0ZToKICB2b2lk
IGluaXRfUmRiUmVhZENvbnRyb2wodm9pZCk7Cn07CmVudW0gUmVhZFR5cGUgewogIFJFQURfU0NB
TkYsCiAgUkVBRF9OQU1FTElTVAp9OwpjbGFzcyBUY2xfSW50ZXJwOwpjbGFzcyBVbmNlcnRhaW5W
YWx1ZTsKY2xhc3MgSW5kZXhWZWN0b3I7CmNsYXNzIE11bHRpRXhwcmVzc2lvbjsKdHlwZWRlZiBp
bnQgKCpSZWxhdGlvbldhbGtlclZhbHVlRnVuY3Rpb24pKFZhbHVlICZ2KTsKY2xhc3MgUmVsYXRp
b24gewpmcmllbmQgY2xhc3MgVHVwbGU7CmZyaWVuZCBjbGFzcyBSZWxhdGlvbkl0ZXJhdG9yOwpm
cmllbmQgY2xhc3MgUmVsYXRpb25GaWVsZEl0ZXJhdG9yOwpwdWJsaWM6CiAgY29uc3QgY2hhciAq
bmFtZTsKICBjb25zdCBjaGFyICppZGVudF9jaGFyczsKcHJpdmF0ZToKICBpbnQgbnJvd3M7CiAg
aW50IG5yb3dzX2FsbG9jOwogIFR1cGxlICpjb2xfbmFtZXM7CiAgVHVwbGUgKmNvbF90eXBlczsK
ICBUdXBsZSAqY29sX2ZpbGVfZG9jOwogIFR1cGxlICpjb2xfZG9jOwogIFR1cGxlICoqdGFibGU7
CiAgY29uc3QgY2hhciAqc2Nhbl9zdHJpbmc7CiAgY29uc3QgY2hhciAqcHJpbnRfc3RyaW5nOwog
IFJlYWRUeXBlIHJlYWRfdHlwZTsKcHJpdmF0ZToKICBzdHJ1Y3QgY29sX25hbWVzX2RhdGEgewog
ICAgY29uc3QgY2hhciAqbmFtZTsKICAgIGludCBpbmRleDsKICB9OwogIGNvbF9uYW1lc19kYXRh
ICpjb2xfbmFtZXNfY2FjaGU7CiAgY29sX25hbWVzX2RhdGEgKmxhc3RfaGl0OwogIGludCBzb3J0
X2Nhc2VjbXA7CiAgdm9pZCBmbHVzaF9jb2xfbmFtZXNfY2FjaGUodm9pZCk7CiAgc3RhdGljIGlu
dCBjb2xfbmFtZXNfc29ydGVyKGNvbnN0IHZvaWQgKnAxLCBjb25zdCB2b2lkICpwMik7CiAgc3Rh
dGljIGludCBjb2xfbmFtZXNfc29ydGVyX2Nhc2UoY29uc3Qgdm9pZCAqcDEsIGNvbnN0IHZvaWQg
KnAyKTsKcHVibGljOgogIGludCBmaW5kX2NvbF9uYW1lKGNvbnN0IGNoYXIgKnN0ciwgYm9vbCBj
YXNlY21wPWZhbHNlKTsKcHJpdmF0ZToKICBzdGF0aWMgUmVsYXRpb24gKmhlYWQ7CiAgc3RhdGlj
IFJlbGF0aW9uICp0YWlsOwpwcml2YXRlOgogIFJlbGF0aW9uICpwcmV2OwogIFJlbGF0aW9uICpu
ZXh0OwogIHZvaWQgdW50aHJlYWRfbGlua3Modm9pZCk7CiAgdm9pZCB0aHJlYWRfbGlua3Modm9p
ZCk7CnB1YmxpYzoKICBpbnQgc2VyaWFsOwogIHN0YXRpYyBpbnQgbnNlcmlhbDsKcHVibGljOgog
IGJvb2wgb3duc19lbWJlZGRlZF9yZWxhdGlvbnM7CiAgUmVsYXRpb24gKnBhcmVudF9yZWxhdGlv
bjsKcHVibGljOgogIHN0YXRpYyBjb25zdCBjaGFyICpvdmVycmlkZV93cml0ZV9jb21tZW50Owpw
dWJsaWM6CiAgc3RhdGljIGludCBzaW5nbGVfam9pbjsKcHVibGljOgpwdWJsaWM6CiAgUmVsYXRp
b24oY29uc3QgY2hhciAqX2lkZW50X2NoYXJzPTApOwogIFJlbGF0aW9uKGludCBuZmllbGRzLCBW
YWx1ZSAqY29sX25hbWVzLCBWYWx1ZSAqY29sX3R5cGVzLCBWYWx1ZSAqY29sX2RvYyk7CiAgflJl
bGF0aW9uKCk7CnByaXZhdGU6CiAgdm9pZCBpbml0X1JlbGF0aW9uKHZvaWQpOwpwdWJsaWM6CiAg
dm9pZCBzZXRfaWRlbnRfY2hhcnMoY29uc3QgY2hhciAqaWRlbnRfY2hhcnMpOwogIFR1cGxlICpn
ZXRfdHVwbGUoaW50IGlvdGEpOwogIGNvbnN0IGNoYXIgKmdldF9jb2xfbmFtZShpbnQgaW90YSk7
CiAgY29uc3QgY2hhciAqZ2V0X2NvbF9kb2MoY29uc3QgY2hhciAqZmllbGRfbmFtZSwgYm9vbCBj
b21wbGFpbj10cnVlKTsKICBjb25zdCBjaGFyICpnZXRfY29sX2ZpbGVfZG9jKGNvbnN0IGNoYXIg
KmZpZWxkX25hbWUsIGJvb2wgY29tcGxhaW49dHJ1ZSk7CiAgdm9pZCBmaWxsX3F1ZXJ5KFJlbFF1
ZXJ5VHlwZSBycXQpIGNvbnN0OwpwdWJsaWM6CiAgaW50IGRlbGV0ZV9lbWJlZGRlZF9yZWxhdGlv
bnModm9pZCk7CiAgaW50IGNhcHR1cmVfaW5kaXJlY3Qodm9pZCk7CnByaXZhdGU6CiAgaW50IGNl
bGxfd2Fsa2VyKFJlbGF0aW9uV2Fsa2VyVmFsdWVGdW5jdGlvbiBmKTsKICBzdGF0aWMgaW50IHVf
dmFsdWVfZGVsZXRlX3JlbGF0aW9uKFZhbHVlICZ2KTsKICBzdGF0aWMgaW50IHVfdmFsdWVfY2Fw
dHVyZV9pbmRpcmVjdChWYWx1ZSAmdik7CnB1YmxpYzoKICBpbnQgZmluZF9pb3RhKGNvbnN0IGNo
YXIgKmZpZWxkX25hbWUsIGNvbnN0IGNoYXIgKmZpZWxkX3ZhbHVlKTsKcHJpdmF0ZToKICBlbnVt
IHsKICAgIE5DQUNIRT04CiAgfTsKICBjb25zdCBjaGFyICpzb3J0X2ZpZWxkX25hbWVbTkNBQ0hF
XTsKICBSZWxhdGlvbiAqcmVsX3NvcnRfZGF0YVtOQ0FDSEVdOwogIGludCBscnVwb3M7CiAgdm9p
ZCBmbHVzaF9pb3RhX2NhY2hlKHZvaWQpOwpwdWJsaWM6CiAgc3RhdGljIGNvbnN0IGNoYXIgKmxv
Z25hbWUoY29uc3QgY2hhciAqbmFtZSk7CiAgc3RhdGljIGNvbnN0IGNoYXIgKm1ha2VfbG9nbmFt
ZShjb25zdCBjaGFyICpmbXQsCiAgICBjb25zdCBjaGFyICphMT0wLCBjb25zdCBjaGFyICphMj0w
LAogICAgY29uc3QgY2hhciAqYTM9MCwgY29uc3QgY2hhciAqYTQ9MCk7CiAgY29uc3QgY2hhciAq
c2hvcnRfbmFtZShpbnQgbGc9NjApOwpwdWJsaWM6CiAgaW50IGdldF9jb2xfdHlwZShpbnQgaW90
YSk7CiAgUmVsYXRpb24gKmNvcHkodm9pZCk7CiAgc3RhdGljIGludCBub3JtYWxpemVfc3RyaW5n
KGNvbnN0IGNoYXIgKiZsdmFsKTsKICBpbnQgYXNzaW1pbGF0ZShjb25zdCBjaGFyICpmcm9tLCBj
b25zdCBjaGFyICp0byk7CiAgaW50IHJlcGxhY2VmaWVsZHMoY29uc3QgY2hhciAqZXhwciwgUmVs
YXRpb24gKmZyb20pOwpwdWJsaWM6CiAgaW50IGR1bXAodm9pZCkgY29uc3Q7CiAgaW50IGR1bXBo
KHZvaWQpIGNvbnN0OwogIGludCBkdW1wZihjaGFyICpmbmFtZSkgY29uc3Q7CiAgc3RhdGljIFJk
YlByaW50Q29udHJvbCBkZWZhdWx0X3JmbXQ7CiAgaW50IHByaW50X2NvbF9pbmZvKFByaW50ZiAq
ZnAsCiAgICBjb25zdCBSZGJQcmludENvbnRyb2wgJnJmbXQ9UmVsYXRpb246OmRlZmF1bHRfcmZt
dCkgY29uc3Q7CiAgaW50IHByaW50KFByaW50ZiAqZnAsCiAgICBjb25zdCBSZGJQcmludENvbnRy
b2wgJnJmbXQ9UmVsYXRpb246OmRlZmF1bHRfcmZtdCkgY29uc3Q7CiAgaW50IHByaW50aChQcmlu
dGYgKmZwLAogICAgY29uc3QgUmRiUHJpbnRDb250cm9sICZyZm10PVJlbGF0aW9uOjpkZWZhdWx0
X3JmbXQpIGNvbnN0OwogIGludCBwcmludChQcmludGYgKmZwLCBUdXBsZSAqcHJpbnRfbmFtZXMs
CiAgICBjb25zdCBSZGJQcmludENvbnRyb2wgJnJmbXQ9UmVsYXRpb246OmRlZmF1bHRfcmZtdCkg
Y29uc3Q7CiAgaW50IHByaW50KFByaW50ZiAqZnAsIGNvbnN0IGNoYXIgKmZtdCwgY29uc3QgY2hh
ciAqZXhwciwKICAgIGNvbnN0IFJkYlByaW50Q29udHJvbCAmcmZtdD1SZWxhdGlvbjo6ZGVmYXVs
dF9yZm10KSBjb25zdDsKICBpbnQgcHJpbnQoUHJpbnRmICpmcCwgY29uc3QgY2hhciAqZm10LCBN
dWx0aUV4cHJlc3Npb24gKm11bHRpX2V4cHIsCiAgICBjb25zdCBSZGJQcmludENvbnRyb2wgJnJm
bXQ9UmVsYXRpb246OmRlZmF1bHRfcmZtdCkgY29uc3Q7CiAgc3RhdGljIGNvbnN0IGNoYXIgKnBy
aW50X3JlbGF0aW9uX2hlYWRlcihQcmludGYgKm91dGZwLAogICAgUmVsYXRpb25JZGVudHMgaWRl
bnRzW10pOwogIHN0YXRpYyBjb25zdCBjaGFyICpwcmludF9yZWxhdGlvbl9oZWFkZXIoUHJpbnRm
ICpmcCwKICAgIGludCBuLCBSZWxhdGlvbklkZW50cyAqaWRlbnRzW10pOwogIHZvaWQgYWRkX2Nv
bF9maWxlX2RvYyhjb25zdCBjaGFyICpmbmFtZSk7CiAgaW50IHBsb3QoUHJpbnRmICpmcCwgTXVs
dGlFeHByZXNzaW9uICptZSwgY29uc3QgY2hhciAqZmFtKTsKICBpbnQgeHBsb3QoUHJpbnRmICpm
cCwgTXVsdGlFeHByZXNzaW9uICptZSwgY29uc3QgY2hhciAqZmFtKTsKICBpbnQgbGFwbG90KFBy
aW50ZiAqZnAsIE11bHRpRXhwcmVzc2lvbiAqbWUsIGNvbnN0IGNoYXIgKmZhbSk7CiAgaW50IHBz
cGxvdChQcmludGYgKmZwLCBNdWx0aUV4cHJlc3Npb24gKm1lLCBjb25zdCBjaGFyICpmYW0pOwog
IHZvaWQgY29udmVydF9maWVsZF90b2xvd2VyKGNvbnN0IGNoYXIgKmZpZWxkX25hbWUpOwpwdWJs
aWM6CiAgdm9pZCBzb3J0KFR1cGxlICpzb3J0X25hbWVzLCBWYWx1ZTo6VmFsdWVNYXRjaCB2bT1W
YWx1ZTo6Vk1fTEFTVCk7CiAgdm9pZCBzb3J0KGNvbnN0IGNoYXIgKmV4cHIsIFZhbHVlOjpWYWx1
ZU1hdGNoIHZtPVZhbHVlOjpWTV9MQVNUKTsKICB2b2lkIHNvcnQoTXVsdGlFeHByZXNzaW9uICpt
ZSwgVmFsdWU6OlZhbHVlTWF0Y2ggdm09VmFsdWU6OlZNX0xBU1QpOwpwdWJsaWM6CiAgUmVsYXRp
b24gKmFkZF9jb2x1bW4oY29uc3QgY2hhciAqbmFtZSwKICAgIGNvbnN0IGNoYXIgKnZhbHVlLCBj
b25zdCBjaGFyICpkb2M9MCk7CiAgUmVsYXRpb24gKmFkZF9jb2x1bW4oY29uc3QgY2hhciAqbmFt
ZSwKICAgIGludCB2YWx1ZSwgY29uc3QgY2hhciAqZG9jPTApOwogIFJlbGF0aW9uICphZGRfY29s
dW1uKGNvbnN0IGNoYXIgKm5hbWUsCiAgICBWYWx1ZUludFR5cGUgdmFsdWUsIGNvbnN0IGNoYXIg
KmRvYz0wKTsKICBSZWxhdGlvbiAqYWRkX2NvbHVtbihjb25zdCBjaGFyICpuYW1lLAogICAgVmFs
dWVGbG9hdFR5cGUgdmFsdWUsIGNvbnN0IGNoYXIgKmRvYz0wKTsKICBSZWxhdGlvbiAqYWRkX2Nv
bHVtbihjb25zdCBjaGFyICpuYW1lLAogICAgY29uc3QgVmFsdWUgJnZhbHVlLCBjb25zdCBjaGFy
ICpkb2M9MCk7CiAgUmVsYXRpb24gKmFkZF9jb2x1bW4oY29uc3QgY2hhciAqbmFtZSwKICAgIGNv
bnN0IFVuY2VydGFpblZhbHVlICZ1diwgY29uc3QgY2hhciAqZG9jPTApOwogIFJlbGF0aW9uICpj
b3B5X2NvbHVtbl9pZl9uZWVkZWQoY29uc3QgY2hhciAqZHN0LCBjb25zdCBjaGFyICpzcmMsCiAg
ICBjb25zdCBjaGFyICpkb2M9MCk7CnByaXZhdGU6CiAgUmVsYXRpb24gKmFkZF9jb2x1bW4oY29u
c3QgY2hhciAqbmFtZSwgY29uc3QgVmFsdWUgJnZhbHVlLAogICAgY29uc3QgY2hhciAqZG9jLCBp
bnQgaW90YSwgaW50IGNvcHlpb3RhKTsKICB2b2lkIHByZXNlcnZlX2pvaW5fZmF1bHQoCiAgICBS
ZWxhdGlvbiAqYSwgY29uc3QgY2hhciAqYWZpZWxkcywgUmVsYXRpb24gKmFfbm90am9pbmVkLAog
ICAgUmVsYXRpb24gKmIsIGNvbnN0IGNoYXIgKmJmaWVsZHMpOwpwdWJsaWM6CiAgUmVsYXRpb24g
KmFkZF9pb3RhX2NvbHVtbihjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpkb2MpOwogIFJl
bGF0aW9uICpwb3Bjb3VudChjb25zdCBjaGFyICpleHByLAogICAgY29uc3QgY2hhciAqY291bnRm
aWVsZD0iQ291bnQiKTsKICBSZWxhdGlvbiAqcG9wY291bnQoTXVsdGlFeHByZXNzaW9uICptZSwK
ICAgIGNvbnN0IGNoYXIgKmV4cHIsIGNvbnN0IGNoYXIgKmNvdW50ZmllbGQ9IkNvdW50Iik7CiAg
UmVsYXRpb24gKnN0YXRpc3RpY3MoY29uc3QgY2hhciAqZXhwciwKICAgIFZhbHVlT3BlcmF0b3Ig
b3A9T1BfUExVUyk7CiAgUmVsYXRpb24gKnN0YXRpc3RpY3MoTXVsdGlFeHByZXNzaW9uICptZSwg
Y29uc3QgY2hhciAqZXhwciwKICAgIFZhbHVlT3BlcmF0b3Igb3A9T1BfUExVUyk7CiAgVmFsdWUg
bWluX3N0YXRpc3RpY3MoY29uc3QgY2hhciAqZXhwcik7CiAgVmFsdWUgbWF4X3N0YXRpc3RpY3Mo
Y29uc3QgY2hhciAqZXhwcik7CiAgUmVsYXRpb24gKnBvcHN0YXRpc3RpY3MoY29uc3QgY2hhciAq
cGV4cHIsIGNvbnN0IGNoYXIgKmV4cHIsCiAgICBWYWx1ZU9wZXJhdG9yIG9wPU9QX1BMVVMpOwog
IFJlbGF0aW9uICpwb3BzdGF0aXN0aWNzKE11bHRpRXhwcmVzc2lvbiAqcG1lLCBjb25zdCBjaGFy
ICpwZXhwciwKICAgIE11bHRpRXhwcmVzc2lvbiAqbWUsIGNvbnN0IGNoYXIgKmV4cHIsIFZhbHVl
T3BlcmF0b3Igb3A9T1BfUExVUyk7CiAgUmVsYXRpb24gKnJlYnVpbGQoY29uc3QgY2hhciAqZXhw
cik7CiAgUmVsYXRpb24gKnJlYnVpbGQoTXVsdGlFeHByZXNzaW9uICptZSwgY29uc3QgY2hhciAq
ZXhwciwKICAgIGNvbnN0IGNoYXIgKipjb2xuYW1lcz0wKTsKICBSZWxhdGlvbiAqcmVidWlsZChJ
bmRleFZlY3RvciAmcGVybSk7CiAgUmVsYXRpb24gKnJlYnVpbGQoUmVsYXRpb24gKmZyZWwsCiAg
ICBjb25zdCBjaGFyICpmaWVsZF9maWVsZF9uYW1lLAogICAgY29uc3QgY2hhciAqZmllbGRfZmll
bGRfZGVmYXVsdCwKICAgIGNvbnN0IGNoYXIgKmZpZWxkX2ZpZWxkX2RvYwogICk7CiAgUmVsYXRp
b24gKnNlbGVjdChjb25zdCBjaGFyICpleHByKTsKICBSZWxhdGlvbiAqc2VsZWN0KGNvbnN0IERT
dHJpbmcgJnN0cik7CiAgUmVsYXRpb24gKnNlbGVjdChjb25zdCBjaGFyICpmaWVsZCwgaW50IHZh
bHVlKTsKICBSZWxhdGlvbiAqc2VsZWN0KGNvbnN0IGNoYXIgKmZpZWxkLCBkb3VibGUgdmFsdWUp
OwogIFJlbGF0aW9uICpzZWxlY3QoY29uc3QgY2hhciAqZmllbGQsIGNvbnN0IGNoYXIgKnZhbHVl
KTsKICBSZWxhdGlvbiAqc2VsZWN0KE11bHRpRXhwcmVzc2lvbiAqbWUsIGNvbnN0IGNoYXIgKmV4
cHIpOwogIHZvaWQgY29tYmluZV90dXBsZXMoVHVwbGUgKnR0LCBSZWxhdGlvbiAqeCwgVHVwbGUg
Knh0LCBjb25zdCBjaGFyICpiaW5vcCk7CnB1YmxpYzoKICBSZWxhdGlvbiAqam9pbihjb25zdCBj
aGFyICp0ZXhwciwgUmVsYXRpb24gKngsIGNvbnN0IGNoYXIgKnhleHByLAogICAgaW50IHByaW50
X3Ryb3VibGVzPTApOwogIFJlbGF0aW9uICpyZWplY3QoY29uc3QgY2hhciAqdGV4cHIsIFJlbGF0
aW9uICp4LCBjb25zdCBjaGFyICp4ZXhwcik7CiAgUmVsYXRpb24gKmF1Z21lbnQoY29uc3QgY2hh
ciAqdGV4cHIsIFJlbGF0aW9uICp4LCBjb25zdCBjaGFyICp4ZXhwciwKICAgIGludCBwcmludF90
cm91Ymxlcz0wKTsKICBSZWxhdGlvbiAqc3RyaWN0X2F1Z21lbnQoY29uc3QgY2hhciAqdGV4cHIs
IFJlbGF0aW9uICp4LCBjb25zdCBjaGFyICp4ZXhwciwKICAgIGludCBwcmludF90bWlzc2luZz0x
LCBpbnQgcHJpbnRfeG1pc3Npbmc9MSwgaW50IHByaW50X3Ryb3VibGVzPTEpOwogIGJvb2wgaW50
ZXJzZWN0KGNvbnN0IGNoYXIgKnRleHByLAogICAgUmVsYXRpb24gKngsIGNvbnN0IGNoYXIgKnhl
eHByLAogICAgaW50IHByaW50X3Ryb3VibGVzLCBSZWxhdGlvbiAqam9pbmVkLAogICAgUmVsYXRp
b24gKnRoaXNqb2luZWQsIFJlbGF0aW9uICp0aGlzbm90am9pbmVkLAogICAgUmVsYXRpb24gKnhq
b2luZWQsIFJlbGF0aW9uICp4bm90am9pbmVkCiAgKTsKICBSZWxhdGlvbiAqcHJlc2VydmVfam9p
bihjb25zdCBjaGFyICp0ZmllbGQsCiAgICBSZWxhdGlvbiAqeCwgY29uc3QgY2hhciAqeGZpZWxk
LAogICAgaW50IHJlcG9ydF90bWlzc2luZywgaW50IHJlcG9ydF94bWlzc2luZywKICAgIENvbWJp
bmVEZWZhdWx0cyAqY2Q9MCk7CiAgaW50IHNlYXJjaChjb25zdCBjaGFyICp4ZXhwciwgY29uc3Qg
VmFsdWUgJnh2YWx1ZSwgaW50IGFnYWluPTApOwogIFJlbGF0aW9uICpjb21iaW5lKFJlbGF0aW9u
ICp4LCBDb21iaW5lRGVmYXVsdHMgKmNkZWZhdWx0cz0wKTsKICBpbnQgYnVpbGRfbWF4X2NvbF93
aWR0aChSZGJQcmludENvbnRyb2wgJnJmbXQpIGNvbnN0OwpwdWJsaWM6CiAgaW50IHJlbmFtZV9j
b2xfcG9zaXRpb24oaW50IGNvbF9wb3NpdGlvbiwgY29uc3QgY2hhciAqbmV3X25hbWUsCiAgICBi
b29sIGNvbXBsYWluKTsKICBpbnQgcmVkb2NfY29sX3Bvc2l0aW9uKGludCBjb2xfcG9zaXRpb24s
IGNvbnN0IGNoYXIgKm5ld19uYW1lLAogICAgYm9vbCBjb21wbGFpbik7CnB1YmxpYzoKICBpbnQg
cmVuYW1lX2NvbF9uYW1lKGNvbnN0IGNoYXIgKm9sZF9uYW1lLCBjb25zdCBjaGFyICpuZXdfbmFt
ZSwKICAgIGJvb2wgY29tcGxhaW4sIGJvb2wgY2FzZWNtcD1mYWxzZSk7CiAgaW50IHJlZG9jX2Nv
bF9uYW1lKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKm5ld19kb2MsCiAgICBib29sIGNv
bXBsYWluLCBib29sIGNhc2VjbXA9ZmFsc2UpOwogIGludCByZWZkb2NfY29sX25hbWUoY29uc3Qg
Y2hhciAqbmFtZSwgY29uc3QgY2hhciAqbmV3X2Zkb2MsCiAgICBib29sIGNvbXBsYWluLCBib29s
IGNhc2VjbXA9ZmFsc2UpOwpwcml2YXRlOgogIGludCBkb19yZW5hbWVfY29sKFR1cGxlICp0LAog
ICAgY29uc3QgY2hhciAqb2xkX25hbWUsIGNvbnN0IGNoYXIgKm5ld19uYW1lLAogICAgYm9vbCBj
b21wbGFpbiwgYm9vbCBjYXNlY21wKTsKcHVibGljOgogIGludCBjb252ZXJ0X3VucmF2ZWxfcG9z
KGNvbnN0IGNoYXIgKm5hbWUpOwogIGludCBjb2xfZXhpc3RzKGNvbnN0IGNoYXIgKm9sZF9uYW1l
LCBib29sIGNhc2VjbXA9ZmFsc2UpOwogIHZvaWQgc2V0X3NjYW5fc3RyaW5nKGNvbnN0IGNoYXIg
Kik7CiAgdm9pZCBzZXRfcHJpbnRfc3RyaW5nKGNvbnN0IGNoYXIgKik7CnB1YmxpYzoKICBSZWxh
dGlvbiAqdW5pcXVlKGNvbnN0IGNoYXIgKmV4cHJlc3Npb24sCiAgICBpbnQgcHJlZmVyPS0xLCBj
b25zdCBjaGFyICpjb3VudGZpZWxkPSJVbmlxdWVfQ291bnQiKTsKcHVibGljOgogIGludCBjaGVj
a191bmlxdWUoUHJpbnRmICpmcCwgY29uc3QgY2hhciAqZmllbGRfbmFtZXMpOwogIGludCBjaGVj
a191bmlxdWUoUHJpbnRmICpmcCwgY29uc3QgY2hhciAqZmllbGRfbmFtZXMsIGludCB2KTsKICBp
bnQgY2hlY2tfdW5pcXVlKFByaW50ZiAqZnAsIGNvbnN0IGNoYXIgKmZpZWxkX25hbWVzLCBkb3Vi
bGUgdik7CiAgaW50IGNoZWNrX3VuaXF1ZShQcmludGYgKmZwLCBjb25zdCBjaGFyICpmaWVsZF9u
YW1lcywgY29uc3QgY2hhciAqdik7CiAgaW50IGNoZWNrX3VuaXF1ZV9yZWplY3QoUHJpbnRmICpm
cCwgY29uc3QgY2hhciAqZmllbGRfbmFtZXMsIGNvbnN0IGNoYXIgKnYpOwogIGludCBjaGVja19k
ZW5zZShQcmludGYgKmZwLCBjb25zdCBjaGFyICpmaWVsZF9uYW1lcywgaW50IGxiLCBpbnQgdWIp
OwpwdWJsaWM6CiAgdm9pZCByZW5hbWVfcHJlZml4X3RvX2FsbF9maWVsZHMoY29uc3QgY2hhciAq
cHJlZml4LCBjb25zdCBjaGFyICp0byk7CiAgdm9pZCByZW5hbWVfc3Vic3RyX3RvX2FsbF9maWVs
ZHMoY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICp0byk7CiAgdm9pZCBhZGRfcHJlZml4
X3RvX2FsbF9maWVsZHMoY29uc3QgY2hhciAqcHJlZml4KTsKICB2b2lkIGFkZF9zdWZmaXhfdG9f
YWxsX2ZpZWxkcyhjb25zdCBjaGFyICpzdWZmaXgpOwogIHZvaWQgcmF0aW9uYWxpemVfZmllbGRf
bmFtZXModm9pZCk7CnB1YmxpYzoKICBpbnQgZXh0cmFjdF9jb2x1bW4oVGNsX0ludGVycCAqaW50
ZXJwLCBjb25zdCBjaGFyICpmaWVsZF9uYW1lLCBib29sIGNhc2VjbXApOwpwdWJsaWM6CiAgaW50
IGdldF9maWVsZF9ieV9uYW1lKGNvbnN0IFR1cGxlICp0dXBsZSwgY29uc3QgY2hhciAqZmllbGRf
bmFtZSwKICAgIGJvb2wgJnAsIGludCBjb21wbGFpbl90aHJlc2g9MiwgYm9vbCBjYXNlY21wPWZh
bHNlKTsKICBpbnQgZ2V0X2ZpZWxkX2J5X25hbWUoY29uc3QgVHVwbGUgKnR1cGxlLCBjb25zdCBj
aGFyICpmaWVsZF9uYW1lLAogICAgaW50ICZwLCBpbnQgY29tcGxhaW5fdGhyZXNoPTIsIGJvb2wg
Y2FzZWNtcD1mYWxzZSk7CiAgaW50IGdldF9maWVsZF9ieV9uYW1lKGNvbnN0IFR1cGxlICp0dXBs
ZSwgY29uc3QgY2hhciAqZmllbGRfbmFtZSwKICAgIHVuc2lnbmVkIGludCAmcCwgaW50IGNvbXBs
YWluX3RocmVzaD0yLCBib29sIGNhc2VjbXA9ZmFsc2UpOwogIGludCBnZXRfZmllbGRfYnlfbmFt
ZShjb25zdCBUdXBsZSAqdHVwbGUsIGNvbnN0IGNoYXIgKmZpZWxkX25hbWUsCiAgICBWYWx1ZUlu
dFR5cGUgJnAsIGludCBjb21wbGFpbl90aHJlc2g9MiwgYm9vbCBjYXNlY21wPWZhbHNlKTsKICBp
bnQgZ2V0X2ZpZWxkX2J5X25hbWUoY29uc3QgVHVwbGUgKnR1cGxlLCBjb25zdCBjaGFyICpmaWVs
ZF9uYW1lLAogICAgZmxvYXQgJnAsIGludCBjb21wbGFpbl90aHJlc2g9MiwgYm9vbCBjYXNlY21w
PWZhbHNlKTsKICBpbnQgZ2V0X2ZpZWxkX2J5X25hbWUoY29uc3QgVHVwbGUgKnR1cGxlLCBjb25z
dCBjaGFyICpmaWVsZF9uYW1lLAogICAgZG91YmxlICZwLCBpbnQgY29tcGxhaW5fdGhyZXNoPTIs
IGJvb2wgY2FzZWNtcD1mYWxzZSk7CiAgaW50IGdldF9maWVsZF9ieV9uYW1lKGNvbnN0IFR1cGxl
ICp0dXBsZSwgY29uc3QgY2hhciAqZmllbGRfbmFtZSwKICAgIGNvbnN0IGNoYXIgKiZwLCBpbnQg
Y29tcGxhaW5fdGhyZXNoPTIsIGJvb2wgY2FzZWNtcD1mYWxzZSk7CiAgaW50IGdldF9maWVsZF9i
eV9uYW1lKGNvbnN0IFR1cGxlICp0dXBsZSwgY29uc3QgY2hhciAqZmllbGRfbmFtZSwKICAgIFJl
bGF0aW9uIComcCwgaW50IGNvbXBsYWluX3RocmVzaD0yLCBib29sIGNhc2VjbXA9ZmFsc2UpOwog
IGludCBnZXRfZmllbGRfYnlfbmFtZShjb25zdCBUdXBsZSAqdHVwbGUsIGNvbnN0IGNoYXIgKmZp
ZWxkX25hbWUsCiAgICBVbmNlcnRhaW5WYWx1ZSAmcCwgaW50IGNvbXBsYWluX3RocmVzaD0yLCBi
b29sIGNhc2VjbXA9ZmFsc2UpOwogIGludCBzZXRfZmllbGRfYnlfbmFtZShUdXBsZSAqdHVwbGUs
IGNvbnN0IGNoYXIgKmZpZWxkX25hbWUsCiAgICBpbnQgcCwgaW50IGNvbXBsYWluX3RocmVzaD0y
LCBib29sIGNhc2VjbXA9ZmFsc2UpOwogIGludCBzZXRfZmllbGRfYnlfbmFtZShUdXBsZSAqdHVw
bGUsIGNvbnN0IGNoYXIgKmZpZWxkX25hbWUsCiAgICBWYWx1ZUludFR5cGUgcCwgaW50IGNvbXBs
YWluX3RocmVzaD0yLCBib29sIGNhc2VjbXA9ZmFsc2UpOwogIGludCBzZXRfZmllbGRfYnlfbmFt
ZShUdXBsZSAqdHVwbGUsIGNvbnN0IGNoYXIgKmZpZWxkX25hbWUsCiAgICBjb25zdCBjaGFyICpw
LCBpbnQgY29tcGxhaW5fdGhyZXNoPTIsIGJvb2wgY2FzZWNtcD1mYWxzZSk7CiAgaW50IHNldF9m
aWVsZF9ieV9uYW1lKFR1cGxlICp0dXBsZSwgY29uc3QgY2hhciAqZmllbGRfbmFtZSwKICAgIGZs
b2F0IHAsIGludCBjb21wbGFpbl90aHJlc2g9MiwgYm9vbCBjYXNlY21wPWZhbHNlKTsKICBpbnQg
c2V0X2ZpZWxkX2J5X25hbWUoVHVwbGUgKnR1cGxlLCBjb25zdCBjaGFyICpmaWVsZF9uYW1lLAog
ICAgZG91YmxlIHAsIGludCBjb21wbGFpbl90aHJlc2g9MiwgYm9vbCBjYXNlY21wPWZhbHNlKTsK
ICBpbnQgc2V0X2ZpZWxkX2J5X25hbWUoVHVwbGUgKnR1cGxlLCBjb25zdCBjaGFyICpmaWVsZF9u
YW1lLAogICAgY29uc3QgVW5jZXJ0YWluVmFsdWUgJnAsIGludCBjb21wbGFpbl90aHJlc2g9Miwg
Ym9vbCBjYXNlY21wPWZhbHNlKTsKcHVibGljOgogIGludCBnZXRfbnJvd3Modm9pZCkgY29uc3R7
cmV0dXJuIHRoaXM/bnJvd3M6MDt9CiAgaW50IGdldF9uY29scyh2b2lkKSBjb25zdDsKICBpbnQg
Z2V0X25maWVsZHModm9pZCkgY29uc3Q7CiAgaW50IGJ1aWxkX2NvbF9uYW1lcyhjaGFyICpidWYp
OwogIGJvb2wgZ3Jvd190dXBsZSh2b2lkKTsKICBib29sIGdyb3dfdHVwbGUoY29uc3QgY2hhciAq
c3RyKTsKICBib29sIGdyb3dfdHVwbGUoVmFsdWUgKnYpOwpwdWJsaWM6CiAgc3RhdGljIGludCBy
ZWxhdGlvbl9udW1iZXI7CiAgc3RhdGljIFNhdmVkUmVsYXRpb25NYW5hZ2VyIHNybTsKcHVibGlj
OgogIHN0YXRpYyBSZWxhdGlvbiAqdWlfZmluZF9yZWxhdGlvbihjb25zdCBjaGFyICpuYW1lLAog
ICAgYm9vbCBjb21wbGFpbj10cnVlLCBib29sIGNhc2VjbXA9ZmFsc2UpOwogIHN0YXRpYyBTYXZl
ZFJlbGF0aW9uICpmaW5kX2NhcnJpZXIoY29uc3QgY2hhciAqbmFtZSwKICAgIGJvb2wgY29tcGxh
aW49dHJ1ZSwgYm9vbCBjYXNlY21wPWZhbHNlKTsKICBzdGF0aWMgY29uc3QgY2hhciAqdWlfcmVn
aXN0ZXJfcmVsYXRpb24oaW50IHNpbGVudCwgUmVsYXRpb24gKnJlbCwKICAgIGNvbnN0IGNoYXIg
Km5hbWUsIGNvbnN0IGNoYXIgKmhvd19idWlsdCwKICAgIGludCBkZWxldGVfb2xkPTAsIFJlbGF0
aW9uICpuYW1lX2NhcnJpZXI9MCk7CiAgc3RhdGljIHZvaWQgdWlfcHJpbnRfcmVsYXRpb25zKFBy
aW50ZiAqZnAsIGNvbnN0IGNoYXIgKm5hbWUsCiAgICBjb25zdCBSZGJQcmludENvbnRyb2wgJnJm
bXQpOwpwcml2YXRlOgpwcml2YXRlOgogIHZvaWQgZ3Jvdyh2b2lkKTsKICBpbnQgcHJpbnRfY29s
X2luZm9fYmFzaWMoUHJpbnRmICpmcCwgY29uc3QgUmRiUHJpbnRDb250cm9sICZyZm10KSBjb25z
dDsKICB2b2lkIHByaW50X2NvbF9pbmZvX2Jhc2ljX2NvbF9kb2MoUHJpbnRmICpmcCwKICAgIGNv
bnN0IFJkYlByaW50Q29udHJvbCAmcmZtdCkgY29uc3Q7CiAgdm9pZCBwcmludF9jb2xfaW5mb19i
YXNpY19sYXRleChQcmludGYgKmZwLAogICAgY29uc3QgUmRiUHJpbnRDb250cm9sICZyZm10KSBj
b25zdDsKICB2b2lkIHByaW50X2NvbF9pbmZvX2Jhc2ljX2NvbF9mZG9jKFByaW50ZiAqZnAsCiAg
ICBjb25zdCBSZGJQcmludENvbnRyb2wgJnJmbXQpIGNvbnN0OwogIHZvaWQgcHJpbnRfY29sX2lu
Zm9fYmFzaWNfZm9ybWF0KFByaW50ZiAqZnAsCiAgICBjb25zdCBSZGJQcmludENvbnRyb2wgJnJm
bXQpIGNvbnN0OwogIHZvaWQgcHJpbnRfY29sX2luZm9fYmFzaWNfY29sX25hbWVzKFByaW50ZiAq
ZnAsCiAgICBjb25zdCBSZGJQcmludENvbnRyb2wgJnJmbXQpIGNvbnN0OwogIHN0cnVjdCBSZWxh
dGlvbkV4dHJhQ29sRGF0YSB7CiAgICBjb25zdCBjaGFyICpuYW1lOwogICAgaW50IHR5cGU7CiAg
fTsKICBpbnQgYnVpbGRfZXhwcl9jb2xzKFJlbGF0aW9uICptb2RlbCwKICAgIE11bHRpRXhwcmVz
c2lvbiAqbXVsdGlfZXhwciwKICAgIFJlbGF0aW9uRXh0cmFDb2xEYXRhIGV4dHJhX2luZm9bXSwg
aW50IG5leHRyYSwKICAgIFJlbGF0aW9uICptb2RlbDI9MCwgVHVwbGUgKnR1cGxlMj0wKTsKICB2
b2lkIGNvcHlfY29sdW1uX2hlYWRlcihSZWxhdGlvbiAqbW9kZWwsIGludCBuZXh0cmE9MCk7CnB1
YmxpYzoKICBUdXBsZSAqY29weV9yb3coUmVsYXRpb24gKm1vZGVsLCBpbnQgaSwgaW50IG5leHRy
YT0wKTsKICBUdXBsZSAqY29weV9yb3coVHVwbGUgKmZyb20sIGludCBuZXh0cmE9MCk7CnByaXZh
dGU6CiAgc3RhdGljIGNvbnN0IGNoYXIgKmlkX2hlYWRlcl9zdHJpbmc7CiAgc3RhdGljIGNvbnN0
IGNoYXIgKmNvbF9kb2NfaGVhZGVyX3N0cmluZzsKICBzdGF0aWMgY29uc3QgY2hhciAqY29sX2Zp
bGVfZG9jX2hlYWRlcl9zdHJpbmc7CiAgc3RhdGljIGNvbnN0IGNoYXIgKnJlY29yZF9zZXBhcmF0
b3I7CiAgc3RhdGljIGNvbnN0IGNoYXIgKmluY2x1ZGVfc2VwYXJhdG9yOwogIHN0YXRpYyBjb25z
dCBjaGFyICpza2lwX3N0YXJ0OwogIHN0YXRpYyBjb25zdCBjaGFyICpza2lwX2VuZDsKcHJpdmF0
ZToKICBib29sIGRvX2ludGVyc2VjdChjb25zdCBjaGFyICp0ZXhwciwKICAgIFJlbGF0aW9uICp4
LCBjb25zdCBjaGFyICp4ZXhwciwKICAgIGludCBwcmludF90cm91YmxlcywgUmVsYXRpb24gKmpv
aW5lZCwKICAgIFJlbGF0aW9uICp0aGlzam9pbmVkLCBSZWxhdGlvbiAqdGhpc25vdGpvaW5lZAog
ICk7CiAgaW50IGNoZWNrX3VuaXF1ZV9jb21tb24oUHJpbnRmICpmcCwgY29uc3QgY2hhciAqZmll
bGRfbmFtZXMsCiAgICBWYWx1ZSAqdiwgaW50IHVzZV92LCBjb25zdCBjaGFyICpyZWplY3QpOwog
IGludCBjb21tb25fZ2V0X2ZpZWxkX2J5X25hbWUoY29uc3QgVHVwbGUgKnR1cGxlLCBjb25zdCBj
aGFyICpmbmFtZSwKICAgIHZvaWQgKnAsIGludCBjb21wbGFpbl90aHJlc2gsIGludCB0YWcsIGJv
b2wgY2FzZWNtcCwgaW50IHN6KTsKICBpbnQgY29tbW9uX3NldF9maWVsZF9ieV9uYW1lKFR1cGxl
ICp0dXBsZSwgY29uc3QgY2hhciAqZmllbGRfbmFtZSwKICAgIHZvaWQgKnAsIGludCBjb21wbGFp
bl90aHJlc2gsIGludCBpdGFnLCBib29sIGNhc2VjbXAsIGludCBzeik7CnB1YmxpYzoKICBpbnQg
cGxvdF9jb21tb24oUHJpbnRmICpmcCwgTXVsdGlFeHByZXNzaW9uICptZSwgY29uc3QgUmRiUGxv
dENvbnRyb2wgJmNvbnRyb2wpOwogIGludCByZWFkKFJkYlJlYWRDb250cm9sICZjb250cm9sKTsK
ICBpbnQgcmVhZChjb25zdCBjaGFyICpmbmFtZSk7Cn07CmNsYXNzIFJlbGF0aW9uRmllbGRJdGVy
YXRvciB7CnByaXZhdGU6CiAgaW50IG47CiAgUmVsYXRpb24gKnJlbGF0aW9uOwpwdWJsaWM6CiAg
UmVsYXRpb25GaWVsZEl0ZXJhdG9yKFJlbGF0aW9uICpfcmVsYXRpb24pOwogIGludCBuZXh0KGNv
bnN0IGNoYXIgKiZmaWVsZF9uYW1lLCBjb25zdCBjaGFyIComZmllbGRfdHlwZSk7CiAgaW50IHJl
c2V0KGludCBjbik7Cn07CmNsYXNzIFJlbGF0aW9uSXRlcmF0b3Igewpwcml2YXRlOgogIGludCBu
OwogIFJlbGF0aW9uICpyZWxhdGlvbjsKcHVibGljOgogIFJlbGF0aW9uSXRlcmF0b3IoUmVsYXRp
b24gKl9yZWxhdGlvbik7CiAgflJlbGF0aW9uSXRlcmF0b3IoKTsKcHVibGljOgogIGludCBuZXh0
KFR1cGxlIComdHVwbGUpOwogIGludCByZXNldChpbnQgcm4pOwogIGludCBpb3RhKHZvaWQpOwp9
OwpjbGFzcyBUbXBGaWxlOwpjbGFzcyBJbmNyZW1lbnRhbFJlbGF0aW9uIHsKcHJpdmF0ZToKICBU
bXBGaWxlICp0ZjsKcHJpdmF0ZToKICBib29sIGRvX2J1aWxkX2RpcmVjdDsKcHJpdmF0ZToKICBl
bnVtIHsKICAgIE1BWF9GSUVMRFM9NjQKICB9OwogIGludCBpbml0OwogIGludCBudHVwbGVzOwog
IGludCBuZmllbGRzOwogIGludCBuZjsKcHJpdmF0ZToKICBEU3RyaW5nIGRhdGE7CiAgRFN0cmlu
ZyBmb3JtYXQ7CiAgRFN0cmluZyBuYW1lOwogIFRGbGV4QXJyYXk8Y29uc3QgY2hhciAqPiBjb2w7
CiAgVEZsZXhBcnJheTxjb25zdCBjaGFyICo+IGRvYzsKcHJpdmF0ZToKICBWYWx1ZSAqdmFsdWVz
OwogIFZhbHVlICpjb2xfbmFtZXM7CiAgVmFsdWUgKmNvbF90eXBlczsKICBWYWx1ZSAqY29sX2Rv
YzsKICBSZWxhdGlvbiAqcmVsOwpwdWJsaWM6CiAgSW5jcmVtZW50YWxSZWxhdGlvbihib29sIGRv
X2J1aWxkX2RpcmVjdD10cnVlKTsKICB2aXJ0dWFsIH5JbmNyZW1lbnRhbFJlbGF0aW9uKCk7CnBy
aXZhdGU6CiAgdm9pZCBhZGRfZmllbGRfZm10KGNvbnN0IGNoYXIgKmZpZWxkX25hbWUsCiAgICBj
b25zdCBjaGFyICpkYXRhX3R5cGUsIGNvbnN0IGNoYXIgKmRvY3N0cik7CnB1YmxpYzoKICB2b2lk
IGFkZF9maWVsZChjb25zdCBjaGFyICpmaWVsZF9uYW1lLCBib29sICZ2YWx1ZSwgYm9vbCBpc19p
bmRpcmVjdCwKICAgIGNvbnN0IGNoYXIgKmRvY3N0cik7CiAgdm9pZCBhZGRfZmllbGQoY29uc3Qg
Y2hhciAqZmllbGRfbmFtZSwgYm9vbCB2YWx1ZSwKICAgIGNvbnN0IGNoYXIgKmRvY3N0cik7CiAg
dm9pZCBhZGRfZmllbGQoY29uc3QgY2hhciAqZmllbGRfbmFtZSwgaW50ICZ2YWx1ZSwgYm9vbCBp
c19pbmRpcmVjdCwKICAgIGNvbnN0IGNoYXIgKmRvY3N0cik7CiAgdm9pZCBhZGRfZmllbGQoY29u
c3QgY2hhciAqZmllbGRfbmFtZSwgaW50IHZhbHVlLAogICAgY29uc3QgY2hhciAqZG9jc3RyKTsK
ICB2b2lkIGFkZF9maWVsZChjb25zdCBjaGFyICpmaWVsZF9uYW1lLCBWYWx1ZUludFR5cGUgJnZh
bHVlLCBib29sIGlzX2luZGlyZWN0LAogICAgY29uc3QgY2hhciAqZG9jc3RyKTsKICB2b2lkIGFk
ZF9maWVsZChjb25zdCBjaGFyICpmaWVsZF9uYW1lLCBWYWx1ZUludFR5cGUgdmFsdWUsCiAgICBj
b25zdCBjaGFyICpkb2NzdHIpOwogIHZvaWQgYWRkX2ZpZWxkKGNvbnN0IGNoYXIgKmZpZWxkX25h
bWUsIGNvbnN0IGNoYXIgKiZ2YWx1ZSwgYm9vbCBpc19pbmRpcmVjdCwKICAgIGNvbnN0IGNoYXIg
KmRvY3N0cik7CiAgdm9pZCBhZGRfZmllbGQoY29uc3QgY2hhciAqZmllbGRfbmFtZSwgY29uc3Qg
Y2hhciAqdmFsdWUsCiAgICBjb25zdCBjaGFyICpkb2NzdHIpOwogIGNvbnN0IGNoYXIgKnNwcmlu
dGYoY29uc3QgY2hhciAqZm10LCBjb25zdCBjaGFyICphMSk7CnB1YmxpYzoKICB2b2lkIGRvbmVf
dHVwbGUodm9pZCk7CiAgUmVsYXRpb24gKmRvbmVfcmVsYXRpb24oY29uc3QgY2hhciAqbmFtZSk7
Cn07CmNsYXNzIFJlbGF0aW9uOwplbnVtIEdlbmVyYWxGaWxlU3RhdHVzIHsKICBHRlNfU1RESU49
MCwKICBHRlNfU1RET1VUPTEsCiAgR0ZTX1NUREVSUj0yLAogIEdGU19QRklMRT0xMCwKICBHRlNf
WkZJTEU9MTEsCiAgR0ZTX2d6RklMRT0xMiwKICBHRlNfYnpGSUxFPTEzLAogIEdGU19OT1RfRVhJ
U1RTPTIwCn07CmNsYXNzIFRyYW5zaWVudEZpbGUgewpwcml2YXRlOgogIERTdHJpbmcgdGVtcF9p
ZDsKICBib29sIGRvX3VubGluazsKcHVibGljOgogIEZpbGVJTyAqZnA7CnB1YmxpYzoKICBUcmFu
c2llbnRGaWxlKGNvbnN0IGNoYXIgKnJvb3QsIGJvb2wgZG9fdW5saW5rPXRydWUsIGNvbnN0IGNo
YXIgKmhvdz0idyIpOwogIH5UcmFuc2llbnRGaWxlKCk7CnB1YmxpYzoKICBjb25zdCBjaGFyICpu
YW1lKHZvaWQpIGNvbnN0OwogIHZvaWQgY2xvc2Uodm9pZCk7CiAgdm9pZCBkb19ub3RfZWRpdChj
b25zdCBjaGFyICptc2c9MCkgY29uc3Q7Cn07CmNsYXNzIFRtcEZpbGUgOiBwdWJsaWMgVHJhbnNp
ZW50RmlsZSB7CnB1YmxpYzoKICBUbXBGaWxlKGNvbnN0IGNoYXIgKnJvb3QsIGJvb2wgZG9fdW5s
aW5rPXRydWUsIGNvbnN0IGNoYXIgKmhvdz0idyIpOwogIH5UbXBGaWxlKCk7Cn07CmNsYXNzIFJl
bGF0aW9uOwpjbGFzcyBGaWxlSGFuZGxlciB7CnByaXZhdGU6CiAgc3RhdGljIHZvaWQgbGFiZWxf
ZmlsZV90aW1lKFByaW50ZiAqZnAsIGNvbnN0IGNoYXIgKnNjb21tZW50LAogICAgY29uc3QgY2hh
ciAqZWNvbW1lbnQpOwogIHN0YXRpYyB2b2lkIGxhYmVsX2ZpbGVfcmV2KFByaW50ZiAqZnAsIGNv
bnN0IGNoYXIgKnNjb21tZW50LAogICAgY29uc3QgY2hhciAqZWNvbW1lbnQsIGNvbnN0IGNoYXIg
KiopOwogIHN0YXRpYyBib29sIG1rZGlyKGNvbnN0IGNoYXIgKmRpcm5hbWUpOwogIHN0cnVjdCBm
aWxlX3ByZWZpeF9pbmZvIHsKICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICBjb25zdCBjaGFyICp2
YWx1ZTsKICB9OwogIHN0YXRpYyBmaWxlX3ByZWZpeF9pbmZvIG5hbWVtYXBbXTsKcHVibGljOgog
IEZpbGVIYW5kbGVyKHZvaWQpOwogIHZpcnR1YWwgfkZpbGVIYW5kbGVyKCk7CiAgc3RhdGljIGNv
bnN0IGNoYXIgKmVkaXRvcl9uYW1lOwogIHN0YXRpYyBib29sIGRvX3RyYWNlOwpwdWJsaWM6CiAg
c3RhdGljIGNvbnN0IGNoYXIgKnRpbWVfbm93KHZvaWQpOwogIHN0YXRpYyBjb25zdCBjaGFyICp0
aW1lX3N0cmluZyh0aW1lX3QgdCk7CiAgc3RhdGljIHZvaWQgbGFiZWxfZmlsZShQcmludGYgKmZw
LCBjb25zdCBjaGFyICpzY29tbWVudD0iIyIsCiAgICBjb25zdCBjaGFyICplY29tbWVudD0iIiwg
Y29uc3QgY2hhciAqKnJldmlzaW9ubG9nX2ZuYW1lPTApOwogIHN0YXRpYyB2b2lkIGxhYmVsX2Zp
bGVfc3RhcnQoUHJpbnRmICpmcCwgY29uc3QgY2hhciAqc2NvbW1lbnQsCiAgICBjb25zdCBjaGFy
ICplY29tbWVudCwgaW50IGFyZ2MgPSAwLCBjb25zdCBjaGFyICoqYXJndiA9IDAsCiAgICBib29s
IGRvX3NpbXBsZV9hcmdfc3R5bGUgPSBmYWxzZSk7CiAgc3RhdGljIHZvaWQgcHJpbnRfcmNzaWQo
RmlsZUlPICpmcCk7CiAgc3RhdGljIGNvbnN0IGNoYXIgKm5vcm1hbGl6ZV9maWxlX25hbWUoY29u
c3QgY2hhciAqZm5hbWUpOwogIHN0YXRpYyBpbnQgZmlsZV9leGlzdHMoY29uc3QgY2hhciAqZmls
ZW5hbWUpOwogIHN0YXRpYyBpbnQgZG9fc3lzdGVtKGNvbnN0IGNoYXIgKmNvbW1hbmQsIGJvb2wg
ZG9fdHJhY2U9dHJ1ZSk7CiAgc3RhdGljIGludCBkaXJlY3RvcnlfZXhpc3RzKGNvbnN0IGNoYXIg
KmRpcm5hbWUpOwogIHN0YXRpYyB2b2lkIG1rZGlyX2Zvcl9maWxlKGNvbnN0IGNoYXIgKmZpbGVu
YW1lKTsKICBzdGF0aWMgY29uc3QgY2hhciAqZW1iZWRzX3N0cmluZyhjb25zdCBjaGFyICpzMSwg
Y29uc3QgY2hhciAqczIpOwogIHN0YXRpYyB2b2lkIHBlcnJvcihjb25zdCBjaGFyICpzKTsKICBz
dGF0aWMgaW50IHBlcnJvcl9jb3VudDsKICBlbnVtIHsKICAgIE5OQU1FVEFCTEU9MTI4CiAgfTsK
ICBzdGF0aWMgY29uc3QgY2hhciAqbmFtZXRhYmxlW05OQU1FVEFCTEVdOwogIHN0YXRpYyBjaGFy
IHBpcGV0YWJsZVtOTkFNRVRBQkxFXTsKICBzdGF0aWMgaW50IGdlbmVyYWxfZmNsb3NlKEZpbGVJ
TyAqJmZwKTsKICBzdGF0aWMgY29uc3QgY2hhciAqZm5hbWVfZm9yKFByaW50ZiAqZnApOwogIHN0
YXRpYyBjb25zdCBjaGFyICpmaWxlX2V4cGFuZChjb25zdCBjaGFyICpnaXZlbl9mbmFtZSwKICAg
IEdlbmVyYWxGaWxlU3RhdHVzICZjb21wcmVzcywgaW50ICZleGlzdHMpOwogIHN0YXRpYyBGaWxl
SU8gKmdlbmVyYWxfZm9wZW4oY29uc3QgY2hhciAqZ2l2ZW5fZm5hbWUsIGNvbnN0IGNoYXIgKmhv
dyk7CiAgc3RhdGljIGludCBmaWxlX3BlcnJvcihjb25zdCBjaGFyICpmbmFtZSwgaW50IG9yaWdp
bmFsX2Vycm5vKTsKICBzdGF0aWMgYm9vbCBpc191c2luZ190dHkodm9pZCk7CiAgc3RhdGljIGNv
bnN0IGNoYXIgKmRvbGxhcl9leHBhbmQoY29uc3QgY2hhciAqZ2l2ZW5fZm5hbWUpOwogIHN0YXRp
YyBjb25zdCBjaGFyICp0aWxkZV9leHBhbmQoY29uc3QgY2hhciAqZmlsZW5hbWUpOwogIHN0YXRp
YyBjb25zdCBjaGFyICpwYXRoX2V4cGFuZChjb25zdCBjaGFyICpmaWxlbmFtZSk7CiAgc3RhdGlj
IGludCBjb3B5X2ZpbGUoY29uc3QgY2hhciAqZnJvbV9mbmFtZSwgUHJpbnRmICp0b19mcCk7CiAg
c3RhdGljIGludCBjb3B5X2ZpbGUoY29uc3QgY2hhciAqZnJvbV9mbmFtZSwgY29uc3QgY2hhciAq
dG9fZm5hbWUpOwogIHN0YXRpYyB2b2lkIHByaW50X2d1YXJkX25ld2xpbmVzKFByaW50ZiAqZnAs
CiAgICBjb25zdCBjaGFyICpzY29tbWVudCwgY29uc3QgY2hhciAqZWNvbW1lbnQsIGNvbnN0IGNo
YXIgKmxpbmUpOwogIHN0YXRpYyBpbnQgb3Blbihjb25zdCBjaGFyICosIGludCwgaW50KTsKICBz
dGF0aWMgaW50IGNsb3NlKGludCBmZCk7CiAgc3RhdGljIGludCByZWdpc3Rlcl9mb3Blbl9jb2Rl
OwogIHN0YXRpYyB2b2lkIHJlZ2lzdGVyX2ZvcGVuX3JlcXVlc3QoY29uc3QgY2hhciAqZm5hbWUs
IGNvbnN0IGNoYXIgKmhvdyk7CiAgc3RhdGljIHZvaWQgY29uZmlndXJlX2V4cGFuZGVyKAogICAg
Y29uc3QgY2hhciAqYXJndjAsIGNvbnN0IGNoYXIgKmV4ZWN1dGVfY29uZmlnX2FyZyk7CiAgc3Rh
dGljIEZpbGVJTyAqZmlsZV9oYW5kbGVyX2Zvcihjb25zdCBjaGFyICpmcm9tX25hbWUsCiAgICBG
aWxlSU8gKmlmX3Vua25vd24pOwogIHN0YXRpYyBHZW5lcmFsRmlsZVN0YXR1cyBnZnNfZm9yKGNv
bnN0IGNoYXIgKmdpdmVuX2ZuYW1lLAogICAgR2VuZXJhbEZpbGVTdGF0dXMgaWZfdW5rbm93bik7
Cn07CnN0cnVjdCBQYXRoSXRlcmF0b3JFbnRyeSB7CnB1YmxpYzoKICBjb25zdCBjaGFyICoqbmFt
ZTsKICBjb25zdCBjaGFyICpmbXQ7CiAgY29uc3QgY2hhciAqZm10X2FyZzsKfTsKc3RydWN0IFBh
dGhJdGVyYXRvckVudHJ5OwpjbGFzcyBQYXRoSXRlcmF0b3Igewpwcml2YXRlOgogIGVudW0gewog
ICAgTUFYX05QQVRIUz04CiAgfTsKICBjb25zdCBjaGFyICpwYXRoc1tNQVhfTlBBVEhTXTsKICBp
bnQgbnBhdGhzOwogIGludCBwb3M7CnB1YmxpYzoKICBQYXRoSXRlcmF0b3IoY29uc3QgY2hhciAq
cDAsIGNvbnN0IGNoYXIgKnAxPTAsIGNvbnN0IGNoYXIgKnAyPTApOwogIH5QYXRoSXRlcmF0b3Io
KTsKcHVibGljOgogIGludCBuZXh0KGNvbnN0IGNoYXIgKiZwYXRoKTsKICBpbnQgZXhwYW5kKFBh
dGhJdGVyYXRvckVudHJ5ICp0KTsKfTsKY2xhc3MgSW5kZXhWZWN0b3IgewpwdWJsaWM6CiAgaW50
IG5pbmRleHY7CiAgaW50ICppbmRleHY7CnB1YmxpYzoKICBJbmRleFZlY3RvcihpbnQgbik7CiAg
fkluZGV4VmVjdG9yKCk7Cn07CmNsYXNzIFJlbGF0aW9uOwpjbGFzcyBUdXBsZSB7CnB1YmxpYzoK
ICBzaG9ydCBuY29sczsKICB1bnNpZ25lZCBzaG9ydCBmbGFnczsKICBSZWxhdGlvbiAqcmVsOwog
IFZhbHVlICpkYXRhOwpwdWJsaWM6CiAgaW5saW5lIFZhbHVlICZvcGVyYXRvcltdKGludCB4KSBj
b25zdCB7cmV0dXJuIGRhdGFbeF07fQogIGlubGluZSBjb25zdCBWYWx1ZSAmY2luZGV4KGludCB4
KSBjb25zdCB7cmV0dXJuIGRhdGFbeF07fQpwdWJsaWM6CiAgVHVwbGUoaW50IF9uY29scyk7CiAg
VHVwbGUoaW50IF9uY29scywgY29uc3QgY2hhciAqKmZpZWxkcyk7CiAgVHVwbGUoaW50IF9uY29s
cywgVmFsdWUgKnYpOwogIHZvaWQgaW5pdF9UdXBsZShpbnQgX25jb2xzKTsKICB+VHVwbGUoKTsK
cHVibGljOgogIGludCBtYWtlX2luZGV4X3ZlY3RvcihUdXBsZSAqeCwgSW5kZXhWZWN0b3IgJnYs
IGJvb2wgY29tcGxhaW49dHJ1ZSk7CnByaXZhdGU6CiAgc3RhdGljIGNvbnN0IEluZGV4VmVjdG9y
ICpzaW1wbGVfcm93X3NvcnRlcl9oZWxwZXI7CnB1YmxpYzoKICBzdGF0aWMgdm9pZCBzaW1wbGVf
cm93X3NvcnRlcl9iZWdpbihjb25zdCBJbmRleFZlY3RvciAqaGVscGVyKSB7CiAgICAoKCFUdXBs
ZTo6c2ltcGxlX3Jvd19zb3J0ZXJfaGVscGVyKSA/IDEgOiBhc3NlcnRfbm90aWZ5KCJhc3NlcnQg
ZmFpbGVkOiIsICIhVHVwbGU6OnNpbXBsZV9yb3dfc29ydGVyX2hlbHBlciIsICJTUkMvdXRpbHMv
c3JjL3JkYmltcGwuaCIsIDUxKSk7CiAgICBUdXBsZTo6c2ltcGxlX3Jvd19zb3J0ZXJfaGVscGVy
ID0gaGVscGVyOwogIH0KICBzdGF0aWMgaW50IHNpbXBsZV9yb3dfc29ydGVyKGNvbnN0IHZvaWQg
KnZwMSwgY29uc3Qgdm9pZCAqdnAyKTsKICBzdGF0aWMgdm9pZCBzaW1wbGVfcm93X3NvcnRlcl9l
bmQodm9pZCkKICAgIHsgVHVwbGU6OnNpbXBsZV9yb3dfc29ydGVyX2hlbHBlciA9IDA7IH0KcHJp
dmF0ZToKICBzdGF0aWMgY29uc3QgVmFyaWFibGVDbG9zdXJlICpleHByX3Jvd19zb3J0ZXJfaGVs
cGVyOwpwdWJsaWM6CiAgc3RhdGljIHZvaWQgZXhwcl9yb3dfc29ydGVyX2JlZ2luKGNvbnN0IFZh
cmlhYmxlQ2xvc3VyZSAqaGVscGVyKSB7CiAgICAoKCEgVHVwbGU6OmV4cHJfcm93X3NvcnRlcl9o
ZWxwZXIpID8gMSA6IGFzc2VydF9ub3RpZnkoImFzc2VydCBmYWlsZWQ6IiwgIiEgVHVwbGU6OmV4
cHJfcm93X3NvcnRlcl9oZWxwZXIiLCAiU1JDL3V0aWxzL3NyYy9yZGJpbXBsLmgiLCA2MikpOwog
ICAgVHVwbGU6OmV4cHJfcm93X3NvcnRlcl9oZWxwZXIgPSBoZWxwZXI7CiAgfQogIHN0YXRpYyBp
bnQgZXhwcl9yb3dfc29ydGVyKGNvbnN0IHZvaWQgKnZwMSwgY29uc3Qgdm9pZCAqdnAyKTsKICBz
dGF0aWMgdm9pZCBleHByX3Jvd19zb3J0ZXJfZW5kKHZvaWQpCiAgICB7IFR1cGxlOjpleHByX3Jv
d19zb3J0ZXJfaGVscGVyID0gMDsgfQogIHN0YXRpYyBpbnQgZGlmZl92YWx1ZXMoY29uc3QgVmFs
dWUgKmMxLCBjb25zdCBWYWx1ZSAqYzIpOwogIHN0YXRpYyBUdXBsZSAqYnVpbGRfY29sX3R5cGVz
KGludCBuY29scywgVmFsdWUgKnRhZ3MpOwogIHZvaWQgcmlnaHRfanVzdGlmeShEU3RyaW5nICZi
dWYsIGludCBjbiwgY29uc3QgUmRiUHJpbnRDb250cm9sICZyZm10KSBjb25zdDsKICBpbnQgcHJp
bnQoUHJpbnRmICpmcCwgY29uc3QgUmVsYXRpb24gKnJlbCwKICAgIGNvbnN0IFJkYlByaW50Q29u
dHJvbCAmcmZtdD1SZWxhdGlvbjo6ZGVmYXVsdF9yZm10KSBjb25zdDsKICBpbnQgcHJpbnQoUHJp
bnRmICpmcCwgY29uc3QgUmVsYXRpb24gKnJlbCwgSW5kZXhWZWN0b3IgJnBlcm0sCiAgICBjb25z
dCBSZGJQcmludENvbnRyb2wgJnJmbXQ9UmVsYXRpb246OmRlZmF1bHRfcmZtdCkgY29uc3Q7CiAg
aW50IHByaW50KFByaW50ZiAqZnAsIGNvbnN0IFJlbGF0aW9uICpyZWwsIGNvbnN0IFJkYlByaW50
Q29udHJvbCAmcmZtdCwKICAgIGludCBybiwgY29uc3QgY2hhciAqZm10LCBjbGFzcyBNdWx0aUV4
cHJlc3Npb24gKm1lKSBjb25zdDsKICBpbnQgc3ByaW50KERTdHJpbmcgJmJ1ZiwKICAgIGNvbnN0
IFJkYlByaW50Q29udHJvbCAmcmZtdD1SZWxhdGlvbjo6ZGVmYXVsdF9yZm10KSBjb25zdDsKICBp
bnQgZHVtcCh2b2lkKSBjb25zdDsKICBzdGF0aWMgVHVwbGUgKnNjYW4oY29uc3QgY2hhciAqZm10
LCBUdXBsZSAqY29sX3R5cGVzLAogICAgY29uc3QgY2hhciAqYnVmLCBpbnQgZmllbGRfb2Zmc2V0
LCBjb25zdCBjaGFyICppZGVudF9jaGFycyk7CiAgc3RhdGljIFR1cGxlICpwYXJzZShTY2FubmVy
TG9jYXRpb24gKmxvYywKICAgIGNvbnN0IGNoYXIgKmJ1ZiwgaW50IG9mZnNldCwgY29uc3QgY2hh
ciAqaWRlbnRfY2hhcnMpOwogIHN0YXRpYyBUdXBsZSAqbWVyZ2Vfcm93KFR1cGxlICphLCBUdXBs
ZSAqYiwgSW5kZXhWZWN0b3IgJmJfZXhjZXB0KTsKICBzdGF0aWMgYm9vbCB1X3Zhcl9ldmFsdWF0
b3IoY29uc3QgY2hhciAqdmFyX25hbWUsIHZvaWQgKmhhbmRsZSwKICAgIFZhbHVlICZ2LCBWYWx1
ZSAqcnZhbHVlKTsKfTsKZXh0ZXJuIGludCBnbG9iYWxfdW53aW5kaW5nOwpleHRlcm4gaW50IGds
b2JhbF93YXJuaW5nc19jb3VudDsKZXh0ZXJuIGludCBnbG9iYWxfYXNzZXJ0c19jb3VudDsKZXh0
ZXJuIExJTktFREJPT0wgZ2xvYmFsX3hmbGFnOwpleHRlcm4gaW50IGdsb2JhbF90cmFjZV9sZXZl
bDsKZXh0ZXJuIGludCBnbG9iYWxfZGlhZ19sZXZlbDsKZXh0ZXJuIGludCBnbG9iYWxfb3V0cHV0
X3JhZGl4OwpjbGFzcyBUY2xTY2FuTW9kZWw7CmV4dGVybiBUY2xTY2FuTW9kZWwgKmdsb2JhbF90
Y2xzY2FubW9kZWw7CmV4dGVybiBjb25zdCBjaGFyICpnbG9iYWxfYm9hcmRzX2RpcjsKZXh0ZXJu
IGludCBnbG9iYWxfbGZsYWdzZXQ7CmNsYXNzIE1UQV9Mb2NrOwpleHRlcm4gTVRBX0xvY2sgZ2xv
YmFsX210YV9sb2NrOwpleHRlcm4gaW50IGdsb2JhbF94MV9hc2ljc19vbl9wc2J0dl9zdXBwb3J0
OwpleHRlcm4gTElOS0VEQk9PTCBnbG9iYWxfaGF2ZV9hc2ljOwpleHRlcm4gTElOS0VEQk9PTCBn
bG9iYWxfZG9fdW5saW5rOwpleHRlcm4gTElOS0VEQk9PTCBnbG9iYWxfc2ZsYWc7CmV4dGVybiBp
bnQgZ2xvYmFsX2NhY2hlX3NwY2h3OwpleHRlcm4gTElOS0VEQk9PTCBnbG9iYWxfYWxsX3NwY2h3
OwpleHRlcm4gTElOS0VEQk9PTCBnbG9iYWxfaW50cmFfY2FnZV9nY3NiX3N5bmM7CmV4dGVybiBM
SU5LRURCT09MIGdsb2JhbF91ZmxhZzsKZXh0ZXJuIGludCBnbG9iYWxfbGlua2VyX2RlYnVnX2xl
dmVsOwpjbGFzcyBGaWxlSU87CmV4dGVybiBGaWxlSU8gKmdsb2JhbF90cmFjZWZpbGU7CmV4dGVy
biBjb25zdCBjaGFyICpnbG9iYWxfZWhvc3RuYW1lOwpleHRlcm4gY29uc3QgY2hhciAqZ2xvYmFs
X3Job3N0bmFtZTsKY2xhc3MgU3lzdGVtSW5zdGFuY2U7CmV4dGVybiBjbGFzcyBTeXN0ZW1JbnN0
YW5jZSAqZ2xvYmFsX3N5c3RlbTsKY2xhc3MgSW5zdGFuY2VtYW5hZ2VyOwpleHRlcm4gY2xhc3Mg
SW5zdGFuY2VNYW5hZ2VyICpnbG9iYWxfaGllcjsKY2xhc3MgSW50ZXJpb3JJbnN0YW5jZTsKZXh0
ZXJuIGNsYXNzIEludGVyaW9ySW5zdGFuY2UgKmdsb2JhbF9yb290OwpleHRlcm4gTElOS0VEQk9P
TCBnbG9iYWxfY2hlY2tfZGF0YTsKZXh0ZXJuIGludCBnbG9iYWxfb3Zlcl9UYXBEZWxheURlbHRh
OwpjbGFzcyBUY2xJbnRlcnA7CmV4dGVybiBUY2xfSW50ZXJwICpnbG9iYWxfZXhwYW5kZXJfZmls
ZV9pbnRlcnA7CmV4dGVybiBUY2xfSW50ZXJwICpnbG9iYWxfdGNsX2ludGVycDsKZW51bSBTZXRU
b2tlbiB7CiAgU1RfbGVmdCwKICBTVF9yaWdodCwKICBTVF9jb21tYSwKICBTVF9jb2xvbiwKICBT
VF9kb3QsCiAgU1RfZG93bnRvLAogIFNUX3VwdG8sCiAgU1RfaW50ZWdlciwKICBTVF9pZCwKICBT
VF9lb2YsCiAgU1RfY29uY2F0LAogIFNUX3Vua25vd24KfTsKY2xhc3MgRW51bUluZm9fQmxvY2s7
CmNsYXNzIEludGVnZXJDb2xsZWN0aW9uIHsKICBlbnVtIHsKICAgICBNRU1CRVJfTUFYID0gMHg3
ZmZmZmZmZgogICAgLE1FTUJFUl9NSU4gPSAweDgwMDAwMDAwCiAgfTsKcHVibGljOgogIGNvbnN0
IGNoYXIgKm9yaWdpbmFsOwpwcm90ZWN0ZWQ6CiAgY2hhciAqYnVmOwogIGNvbnN0IGNoYXIgKmNw
OwogIFNldFRva2VuIHRva2VuOwogIHR5cGVkZWYgaW50MTI4IFlZSU5UVFlQRTsKICBZWUlOVFRZ
UEUgeXl2YWx1ZTsKICBib29sIGFkZF92aWFfcGFyc2U7CnB1YmxpYzoKICBjb25zdCBFbnVtSW5m
b19CbG9jayAqZW51bWluZm87CnB1YmxpYzoKICBib29sIGlzcG9zaW5mOwogIGJvb2wgaXNuZWdp
bmY7CiAgaW50IHBvc2luZl9mcm9tOwogIGludCBuZWdpbmZfZnJvbTsKcHVibGljOgogIGludCBt
ZW1iZXJfbWluOwogIGludCBtZW1iZXJfbWF4OwpwdWJsaWM6CiAgYm9vbCBjb21wbGFpbjsKcHVi
bGljOgogIGNvbnN0IGNoYXIgKndhc19lcnJvcjsKcHJvdGVjdGVkOgogIGludCBpbmNsdXNpdmVf
bGI7CiAgaW50IGV4Y2x1c2l2ZV91YjsKICBpbnQgbmV4dHZhbHVlOwpwcml2YXRlOgogIFNldFRv
a2VuIHNjYW5fZG9pdCh2b2lkKTsKcHJvdGVjdGVkOgogIFNldFRva2VuIHNjYW4odm9pZCk7CiAg
dm9pZCBwYXJzZV9zZXQodm9pZCk7CiAgdm9pZCBwYXJzZV9wcmltYXJ5KHZvaWQpOwogIHZvaWQg
c3ludGF4X2Vycm9yKGNvbnN0IGNoYXIgKm1zZyk7CnB1YmxpYzoKICBJbnRlZ2VyQ29sbGVjdGlv
bihjb25zdCBjaGFyICphcmdzLCBjb25zdCBFbnVtSW5mb19CbG9jayAqYmxvY2s9MCwKICAgIGJv
b2wgY29tcGxhaW49dHJ1ZSk7CiAgdmlydHVhbCB+SW50ZWdlckNvbGxlY3Rpb24oKTsKcHVibGlj
OgogIHZpcnR1YWwgYm9vbCBtZW1iZXIoaW50IGkpIGNvbnN0ID0gMDsKICB2aXJ0dWFsIGludCBz
ZWxlY3QoaW50IGlvdGEpIGNvbnN0ID0gMDsKICB2aXJ0dWFsIGludCBjYXJkaW5hbGl0eSh2b2lk
KSBjb25zdCA9IDA7CiAgdmlydHVhbCB2b2lkIGRvX2FkZChpbnQgbGIsIGludCB1YiwgaW50IGRp
ciwgYm9vbCBpc19hZGQpID0gMDsKcHJpdmF0ZToKICB2aXJ0dWFsIGludCBiYXNpY19uZXh0KGlu
dCAmdmFsdWUpID0gMDsKICB2aXJ0dWFsIHZvaWQgYmFzaWNfc3RhcnRfbmV4dCh2b2lkKSA9IDA7
CnB1YmxpYzoKICB2b2lkIGRvX2FkZChjb25zdCBjaGFyICpzdHIsIGJvb2wgaXNfYWRkKTsKICB2
b2lkIGFkZChjb25zdCBjaGFyICpzdHIpOwogIHZvaWQgc3ViKGNvbnN0IGNoYXIgKnN0cik7CiAg
dm9pZCBhZGQoaW50IGxiLCBpbnQgdWIpOwogIHZvaWQgYWRkKGludCBsYik7CiAgdm9pZCBzdWIo
aW50IGxiLCBpbnQgdWIpOwogIHZvaWQgc3ViKGludCBsYik7CnB1YmxpYzoKICB2b2lkIGR1bXAo
dm9pZCk7CiAgdm9pZCBwcmludChQcmludGYgKmZwLCBpbnQgbGI9MCwgaW50IHViPTEwMCk7CiAg
dm9pZCBzdGFydF9uZXh0KGludCBfaW5jbHVzaXZlX2xiLCBpbnQgX2V4Y2x1c2l2ZV91Yik7CiAg
aW50IG5leHQoaW50ICZ2YWx1ZSk7Cn07CmNsYXNzIEludGVnZXJTZXRIdW5rOwpjbGFzcyBJbnRl
Z2VyU2V0IDogcHVibGljIEludGVnZXJDb2xsZWN0aW9uIHsKcHJpdmF0ZToKICBJbnRlZ2VyU2V0
SHVuayAqdmFsdWU7CiAgSW50ZWdlclNldEh1bmsgKm5leHRwOwogIGludCBuZXh0aTsKcHJpdmF0
ZToKICB2aXJ0dWFsIHZvaWQgZG9fYWRkKGludCBsYiwgaW50IHViLCBpbnQgZGlyLCBib29sIGlz
X2FkZCk7CnByaXZhdGU6CiAgaW50IGZpbmRfYmFzZShpbnQgaSk7CnB1YmxpYzoKICBJbnRlZ2Vy
U2V0KGNvbnN0IGNoYXIgKmFyZ3M9MCwgY29uc3QgRW51bUluZm9fQmxvY2sgKl9ibG9jaz0wLAog
ICAgYm9vbCBjb21wbGFpbj10cnVlKTsKICB2aXJ0dWFsIH5JbnRlZ2VyU2V0KCk7CnByaXZhdGU6
CiAgdmlydHVhbCB2b2lkIGJhc2ljX3N0YXJ0X25leHQodm9pZCk7CiAgdmlydHVhbCBpbnQgYmFz
aWNfbmV4dChpbnQgJnZhbHVlKTsKcHVibGljOgogIHZpcnR1YWwgYm9vbCBtZW1iZXIoaW50IGkp
IGNvbnN0OwogIHZpcnR1YWwgaW50IGNhcmRpbmFsaXR5KHZvaWQpIGNvbnN0OwogIHZpcnR1YWwg
aW50IHNlbGVjdChpbnQgaW90YSkgY29uc3Q7CnB1YmxpYzoKICBzdGF0aWMgdWludDY0IGNvbnZl
cnRfZW51bV9zdHJpbmcoY29uc3QgY2hhciAqc3RyLAogICAgY29uc3QgRW51bUluZm9fQmxvY2sg
KmJsb2NrLCBpbnQgbGIsIGludCB1YiwgY29uc3QgY2hhciAqJmZhdWx0KTsKfTsKY2xhc3MgSW50
ZWdlckJhZyA6IHB1YmxpYyBJbnRlZ2VyQ29sbGVjdGlvbiB7CnByaXZhdGU6CiAgVEZsZXhBcnJh
eTxpbnQ+IGRhdGE7CnByaXZhdGU6CiAgaW50IG5leHRpOwpwdWJsaWM6CiAgSW50ZWdlckJhZyhj
b25zdCBjaGFyICphcmdzPTAsIGNvbnN0IEVudW1JbmZvX0Jsb2NrICpfYmxvY2s9MCwKICAgIGJv
b2wgY29tcGxhaW49dHJ1ZSk7CiAgdmlydHVhbCB+SW50ZWdlckJhZygpOwpwdWJsaWM6CiAgdmly
dHVhbCB2b2lkIGRvX2FkZChpbnQgbGIsIGludCB1YiwgaW50IGRpciwgYm9vbCBpc19hZGQpOwog
IHZpcnR1YWwgYm9vbCBtZW1iZXIoaW50IGkpIGNvbnN0OwogIHZpcnR1YWwgaW50IHNlbGVjdChp
bnQgaW90YSkgY29uc3Q7CiAgdmlydHVhbCBpbnQgY2FyZGluYWxpdHkodm9pZCkgY29uc3Q7CiAg
dmlydHVhbCB2b2lkIGJhc2ljX3N0YXJ0X25leHQodm9pZCk7CiAgdmlydHVhbCBpbnQgYmFzaWNf
bmV4dChpbnQgJnZhbHVlKTsKcHVibGljOgogIHZvaWQgZGVsZXRlX3NldCh2b2lkKTsKcHJpdmF0
ZToKICB2b2lkIGFkZGl0ZW0oaW50IHgpOwp9OwpjbGFzcyBJbnRlZ2VyQml0QnVpbGRlciA6IHB1
YmxpYyBJbnRlZ2VyQmFnIHsKcHVibGljOgogIFlZSU5UVFlQRSB2YWx1ZTsKICBpbnQgZGVidWc7
CnB1YmxpYzoKICBJbnRlZ2VyQml0QnVpbGRlcihjb25zdCBjaGFyICphcmdzLCBpbnQgZGVidWc9
MCk7CiAgdmlydHVhbCB+SW50ZWdlckJpdEJ1aWxkZXIoKTsKcHVibGljOgogIHZvaWQgYWRkKGNv
bnN0IGNoYXIgKnN0cik7Cn07CmNsYXNzIEludGVnZXJSYW5nZSA6IHB1YmxpYyBJbnRlZ2VyQ29s
bGVjdGlvbiB7CnByaXZhdGU6CiAgaW50IGxiOwogIGludCB1YjsKICBpbnQgbmV4dGk7CnB1Ymxp
YzoKICBJbnRlZ2VyUmFuZ2UoaW50IF9sYiwgaW50IF91Yik7CiAgdmlydHVhbCB+SW50ZWdlclJh
bmdlKCk7CnB1YmxpYzoKICB2aXJ0dWFsIHZvaWQgZG9fYWRkKGludCBsYiwgaW50IHViLCBpbnQg
ZGlyLCBib29sIGlzX2FkZCk7CiAgdmlydHVhbCBib29sIG1lbWJlcihpbnQgaSkgY29uc3Q7CiAg
dmlydHVhbCBpbnQgc2VsZWN0KGludCBpb3RhKSBjb25zdDsKICB2aXJ0dWFsIGludCBjYXJkaW5h
bGl0eSh2b2lkKSBjb25zdDsKICB2aXJ0dWFsIHZvaWQgYmFzaWNfc3RhcnRfbmV4dCh2b2lkKTsK
ICB2aXJ0dWFsIGludCBiYXNpY19uZXh0KGludCAmdmFsdWUpOwogIHZvaWQgZGVsZXRlX3NldCh2
b2lkKTsKfTsKdHlwZWRlZiB1bmlvbiB7CiAgRXhwcmVzc2lvbiAqeXlfRXhwcjsKICBTdGF0ZW1l
bnQgKnl5X1N0YXQ7CiAgVmFsdWVJbnRUeXBlIHl5X2ludDsKICBWYWx1ZUZsb2F0VHlwZSB5eV9m
bG9hdDsKICBVbmNlcnRhaW5WYWx1ZSB5eV91c2VyOwogIGNvbnN0IGNoYXIgKnl5X3N0cjsKfSBZ
WVNUWVBFOwpleHRlcm4gWVlTVFlQRSBZWUxWQUw7CmNsYXNzIFJlbGF0aW9uOwpjbGFzcyBQb2lu
dCB7CnB1YmxpYzoKICBmbG9hdCB4OwogIGZsb2F0IHk7CiAgZmxvYXQgejsKcHVibGljOgogIFBv
aW50KGZsb2F0IF94LCBmbG9hdCBfeSwgZmxvYXQgX3ope3ggPSBfeDsgeSA9IF95OyB6ID0gX3o7
fQogIFBvaW50KGZsb2F0IF94LCBmbG9hdCBfeSl7eCA9IF94OyB5ID0gX3k7IHogPSAwLjA7fQog
IFBvaW50KHZvaWQpe3ggPSAwLjA7IHkgPSAwLjA7IHogPSAwLjA7fQpwdWJsaWM6CiAgdm9pZCBv
cGVyYXRvcis9KGZsb2F0IHMpOwogIHZvaWQgb3BlcmF0b3ItPShmbG9hdCBzKTsKICB2b2lkIG9w
ZXJhdG9yKj0oZmxvYXQgcyk7CiAgdm9pZCBvcGVyYXRvci89KGZsb2F0IHMpOwogIFBvaW50IG9w
ZXJhdG9yKyhmbG9hdCBzKTsKICBQb2ludCBvcGVyYXRvci0oZmxvYXQgcyk7CiAgUG9pbnQgb3Bl
cmF0b3IqKGZsb2F0IHMpOwogIFBvaW50IG9wZXJhdG9yLyhmbG9hdCBzKTsKICBQb2ludCBvcGVy
YXRvcisoY29uc3QgUG9pbnQgJnMpOwogIFBvaW50IG9wZXJhdG9yLShjb25zdCBQb2ludCAmcyk7
CnB1YmxpYzoKICB2b2lkIGR1bXAodm9pZCkgY29uc3Q7CiAgdm9pZCBwcmludChQcmludGYgKmZw
LCBpbnQgcHJpbnRfbGV2ZWw9MTApIGNvbnN0OwpwdWJsaWM6CiAgc3RhdGljIFBvaW50IGZpbmRf
Y2VudGVyKGNvbnN0IFBvaW50IGNbM10sIGRvdWJsZSAmcmFkaXVzKTsKICBQb2ludCBkaXRoZXIo
aW50IG1heCkgY29uc3Q7Cn07CmNsYXNzIFRNIHsKcHVibGljOgogIGVudW0gewogICAgUkFOSz00
CiAgfTsKICBmbG9hdCBNW1JBTktdW1JBTktdOwpwdWJsaWM6CiAgc3RhdGljIGludCB0bV9kZWJ1
ZzsKcHVibGljOgogIFRNKHZvaWQpOwogIFRNKGNvbnN0IFRNICYpOwogIH5UTSgpOwpwdWJsaWM6
CiAgdm9pZCBpZGVudCh2b2lkKTsKcHVibGljOgogIHN0YXRpYyB2b2lkIG11bHQoVE0gJmEsIGNv
bnN0IFRNICZiLCBpbnQgcmV2PTApOwogIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFRNICYpOwpwdWJs
aWM6CiAgdm9pZCBzY2FsZShmbG9hdCBzeCwgZmxvYXQgc3ksIGZsb2F0IHN6PTEuMCk7CiAgdm9p
ZCB0cmFuc2xhdGUoZmxvYXQgdHgsIGZsb2F0IHR5LCBmbG9hdCB0ej0wLjApOwogIHZvaWQgcm90
YXRlKGZsb2F0IHhfZGVncmVlcywgZmxvYXQgeV9kZWdyZWVzLCBmbG9hdCB6X2RlZ3JlZXMpOwog
IHZvaWQgcm90YXRlKGZsb2F0IHhfZGVncmVlcyk7CnB1YmxpYzoKICB2b2lkIHNjcmVlbl9wcm9q
ZWN0KGZsb2F0IHByb2pfZGVncmVlcywgYm9vbCBpc19jYWJpbmV0KTsKICB2b2lkIGF6ZWxfcHJv
amVjdChmbG9hdCBhemFuZywgZmxvYXQgZWxhbmcpOwpwdWJsaWM6CiAgdm9pZCBtYWtlX3JvdGF0
ZV94KGZsb2F0IGRlZ3JlZXMpOwogIHZvaWQgbWFrZV9yb3RhdGVfeShmbG9hdCBkZWdyZWVzKTsK
ICB2b2lkIG1ha2Vfcm90YXRlX3ooZmxvYXQgZGVncmVlcyk7CiAgdm9pZCBtYWtlX2NhdmFsaWVy
X3Byb2plY3Rpb24oZmxvYXQgZGVncmVlcyk7CiAgdm9pZCBtYWtlX2NhYmluZXRfcHJvamVjdGlv
bihmbG9hdCBkZWdyZXMpOwpwdWJsaWM6CiAgdm9pZCB0cmFuc2Zvcm0oZmxvYXQgeCwgZmxvYXQg
eSwgZmxvYXQgeiwKICAgIGZsb2F0ICZYLCBmbG9hdCAmWSwgZmxvYXQgJlopIGNvbnN0OwogIGlu
dCB1bnRyYW5zZm9ybShmbG9hdCBYLCBmbG9hdCBZLCBmbG9hdCBaLAogICAgZmxvYXQgJngsIGZs
b2F0ICZ5LCBmbG9hdCAmeikgY29uc3Q7CiAgdm9pZCB0cmFuc2Zvcm0oZmxvYXQgeCwgZmxvYXQg
eSwgZmxvYXQgJlgsIGZsb2F0ICZZKSBjb25zdDsKICBpbnQgdW50cmFuc2Zvcm0oZmxvYXQgWCwg
ZmxvYXQgWSwgZmxvYXQgJngsIGZsb2F0ICZ5KSBjb25zdDsKcHVibGljOgogIHZvaWQgZHVtcCh2
b2lkKSBjb25zdDsKICB2b2lkIHByaW50KFByaW50ZiAqZnAsIGludCBwcmludF9sZXZlbD0xMCkg
Y29uc3Q7CnB1YmxpYzoKICB2b2lkIGdldF9zY2FsZV90aGV0YShmbG9hdCAmc2NhbGVfeCwgZmxv
YXQgJnNjYWxlX3ksIGZsb2F0ICZ0aGV0YSkgY29uc3Q7CiAgdm9pZCBnZXRfdGhldGEoZmxvYXQg
JnRoZXRhKSBjb25zdDsKICB2b2lkIGdldF9zY2FsZShmbG9hdCAmc2NhbGVfeCwgZmxvYXQgJnNj
YWxlX3kpIGNvbnN0OwogIHZvaWQgZ2V0X3RyYW5zKGZsb2F0ICZ0cmFuc194LCBmbG9hdCAmdHJh
bnNfeSkgY29uc3Q7CiAgVE0gbWFrZV91bml0KHZvaWQpIGNvbnN0Owp9OwpjbGFzcyBUY2xfSW50
ZXJwOwp0eXBlZGVmIHZvaWQgKm15Q2xpZW50RGF0YTsKY2xhc3MgVE1TdGFjayB7CiAgZW51bSB7
CiAgICBUTVN0YWNrX05TVEFDSz0zMgogIH07CnByaXZhdGU6CiAgc3RhdGljIGNvbnN0IGNoYXIg
KmV4dGVybmFsX2hhbmRsZV9mbXQ7CiAgaW50IG5zdGFjazsKICBUTSBUTXN0YWNrW1RNU3RhY2tf
TlNUQUNLXTsKcHVibGljOgogIFRNU3RhY2sodm9pZCk7CiAgflRNU3RhY2soKTsKcHVibGljOgog
IHN0YXRpYyBUTVN0YWNrIGdlbmVyaWNfY3RtOwpwdWJsaWM6CiAgdm9pZCBzYXZlKHZvaWQpOwog
IHZvaWQgcmVzdG9yZSh2b2lkKTsKICB2b2lkIHB1cmdlKHZvaWQpOwpwdWJsaWM6CiAgUG9pbnQg
dHJhbnNmb3JtKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopOwogIFBvaW50IHRyYW5zZm9ybShm
bG9hdCB4LCBmbG9hdCB5KTsKICBQb2ludCB0cmFuc2Zvcm0oUG9pbnQgcCk7CiAgdm9pZCB0cmFu
c2xhdGUoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeik7CiAgdm9pZCB0cmFuc2xhdGUoZmxvYXQg
eCwgZmxvYXQgeSk7CiAgdm9pZCB0cmFuc2xhdGUoUG9pbnQgcCk7CiAgdm9pZCBzY2FsZShmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsKICB2b2lkIHNjYWxlKGZsb2F0IHgsIGZsb2F0IHkpOwog
IHZvaWQgc2NhbGUoUG9pbnQgcCk7CiAgdm9pZCByb3RhdGUoZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgeik7CiAgdm9pZCByb3RhdGUoZmxvYXQgeCwgZmxvYXQgeSk7CiAgdm9pZCByb3RhdGUoZmxv
YXQgeCk7CiAgdm9pZCByb3RhdGUoUG9pbnQgcCk7CiAgdm9pZCBzY3JlZW5fcHJvamVjdChmbG9h
dCBwcm9qX2RlZ3JlZXMsIGJvb2wgaXNfY2FiaW5ldCk7CiAgdm9pZCBhemVsX3Byb2plY3QoZmxv
YXQgYXphbmcsIGZsb2F0IGVsYW5nKTsKICBpbnQgZGVwdGgodm9pZCl7cmV0dXJuKG5zdGFjayk7
fQpwdWJsaWM6CiAgVE0gJnRvcCh2b2lkKSB7cmV0dXJuKFRNc3RhY2tbbnN0YWNrXSk7fQpwdWJs
aWM6CiAgdm9pZCBkdW1wKHZvaWQpIGNvbnN0OwogIHZvaWQgcHJpbnQoUHJpbnRmICpmcCwgaW50
IHByaW50X2xldmVsPTEwKSBjb25zdDsKcHVibGljOgogIHN0YXRpYyBpbnQgdV9kaXNwYXRjaChD
bGllbnREYXRhIHhwLCBUY2xfSW50ZXJwICppbnRlcnAsCiAgICBpbnQgYXJnYywgY2hhciAqKmFy
Z3YpOwogIHN0YXRpYyBpbnQgdV9uZXcoQ2xpZW50RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLAog
ICAgaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKfTsKZW51bSBQYWRTdGF0ZSB7CiAgUGFkU3RhdGVf
T3BlbiwKICBQYWRTdGF0ZV9DbG9zZWQsCiAgUGFkU3RhdGVfVW5jZXJ0YWluLAogIFBhZFN0YXRl
X1NwZWNpYWwsCiAgUGFkU3RhdGVfTG9jYXRlLAogIFBhZFN0YXRlX05vUGFkLAogIFBhZFN0YXRl
X0xhc3QKfTsKY2xhc3MgR2VuZXJhbERlbGV0aW9uQ2FsbGJhY2sgewpwdWJsaWM6CiAgY29uc3Qg
Y2hhciAqcHJvY25hbWU7CiAgaW50IG5kZWxldGVzOwogIHN0cnVjdCBEZWxldGlvbkNhbGxiYWNr
Q2xvc3VyZSB7CiAgICBUY2xfQ21kRGVsZXRlUHJvYyAqcHJvYzsKICAgIENsaWVudERhdGEgZGF0
YTsKICB9OwogIERlbGV0aW9uQ2FsbGJhY2tDbG9zdXJlIGRlbGV0ZXNbMTBdOwpwdWJsaWM6CiAg
R2VuZXJhbERlbGV0aW9uQ2FsbGJhY2soY29uc3QgY2hhciAqcHJvY25hbWUpOwogIHZpcnR1YWwg
fkdlbmVyYWxEZWxldGlvbkNhbGxiYWNrKCk7CnByaXZhdGU6CiAgdm9pZCBhZGQoVGNsX0NtZERl
bGV0ZVByb2MgKnByb2MsIENsaWVudERhdGEgZGF0YSk7CiAgc3RhdGljIHZvaWQgZGVsZXRpb25f
Y2FsbGJhY2soQ2xpZW50RGF0YSBkYXRhKTsKcHVibGljOgogIHN0YXRpYyB2b2lkIGFkZChjb25z
dCBjaGFyICpwcm9jbmFtZSwKICAgIFRjbF9DbWREZWxldGVQcm9jICpwcm9jLCBDbGllbnREYXRh
IGRhdGEpOwp9OwpjbGFzcyBQYWRJbnN0YW5jZURhdGEgewpwdWJsaWM6CiAgUGFkU3RhdGUgc3Rh
dGU7CiAgaW50IGRpcmVjdGlvbjsKfTsKY2xhc3MgUGFkU2V0SW5zdGFuY2VEYXRhIHsKcHJpdmF0
ZToKICBpbnQgbnBhZHNfYWxsb2M7CnB1YmxpYzoKICBpbnQgbnBhZHM7CiAgUGFkSW5zdGFuY2VE
YXRhICpwYWRzOwpwdWJsaWM6CiAgUGFkU2V0SW5zdGFuY2VEYXRhKGludCBucGFkcyk7CiAgdmly
dHVhbCB+UGFkU2V0SW5zdGFuY2VEYXRhKCk7CnB1YmxpYzoKICB2aXJ0dWFsIGNvbnN0IGNoYXIg
KmNvbG9yX25hbWUoaW50IHBhZCk7CiAgdmlydHVhbCBSR0JfRGF0YSBjb2xvcl9yZ2IoaW50IHBh
ZCk7Cn07CmNsYXNzIFJhbVJGRGlzcGxheWVyIHsKcHJpdmF0ZToKICBjb25zdCBjaGFyICpyYW1y
Zl9uYW1lOwogIGludCBueDsKICBpbnQgbnk7CiAgaW50IGJ3eDsKICBpbnQgYnd5Owpwcml2YXRl
OgogIFJhbVJGRGlzcGxheWVyICoqb3duZXJzX3JlZjsKICBpbnQgZGVzdHJveWluZzsKcHVibGlj
OgogIFBhZFNldEluc3RhbmNlRGF0YSAqZGF0YTsKcHVibGljOgogIFJhbVJGRGlzcGxheWVyKGNv
bnN0IGNoYXIgKnJhbXJmX25hbWUsCiAgICBpbnQgcGFkc194LCBpbnQgcGFkc195LCBpbnQgX3Bp
eF9wZXJfY2VsbCwKICAgIFBhZFNldEluc3RhbmNlRGF0YSAqX2RhdGEpOwpwdWJsaWM6CiAgdmly
dHVhbCB+UmFtUkZEaXNwbGF5ZXIoKTsKcHJpdmF0ZToKICBzdGF0aWMgaW50IHVfY29tbWFuZChD
bGllbnREYXRhIGNsaWVudERhdGEsCiAgICBUY2xfSW50ZXJwICppbnRlcnAsIGludCBhcmdjLCBj
aGFyICoqYXJndik7CnB1YmxpYzoKICBpbnQgZG9fZGlzcGxheSh2b2lkKTsKICB2aXJ0dWFsIHZv
aWQgZmlsbF9jZWxsKGludCB4LCBpbnQgeSwgaW50IGtpbmQpOwpwdWJsaWM6CiAgUkdCX0RhdGEg
Z2V0X3JnYihjb25zdCBjaGFyICpjb2xvcl9uYW1lKTsKcHVibGljOgogIHZpcnR1YWwgaW50IGRl
c3Ryb3kodm9pZCk7CiAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyX2NsZWFyX29uX2Rlc3Ryb3koUmFt
UkZEaXNwbGF5ZXIgKiZwKTsKcHJpdmF0ZToKICBzdGF0aWMgdm9pZCB1X2Rlc3Ryb3koQ2xpZW50
RGF0YSBkYXRhKTsKfTsKZXh0ZXJuIFZhbHVlIGV2YWwoY29uc3QgY2hhciAqKTsKY29uc3QgSW5k
ZXhWZWN0b3IgKlR1cGxlOjpzaW1wbGVfcm93X3NvcnRlcl9oZWxwZXIgPSAwOwpjb25zdCBWYXJp
YWJsZUNsb3N1cmUgKlR1cGxlOjpleHByX3Jvd19zb3J0ZXJfaGVscGVyID0gMDsKaW50IGdsb2Jh
bF91bndpbmRpbmcgPSAwOwpMSU5LRURCT09MIGdsb2JhbF94ZmxhZyA9IGZhbHNlOwppbnQgZ2xv
YmFsX3RyYWNlX2xldmVsID0gMDsKaW50IGdsb2JhbF9kaWFnX2xldmVsID0gMDsKYm9vbCBnbG9i
YWxfcmRidWlfc2lsZW50ID0gZmFsc2U7CkZpbGVJTyAqZ2xvYmFsX3RyYWNlZmlsZSA9IDA7CnN0
YXRpYyB2b2lkIGNvbnN1bWVfdm9pZChjb25zdCB2b2lkICopCnsKfQoKY29uc3QgY2hhciAqUmVs
YXRpb246OnJlY29yZF9zZXBhcmF0b3IgPSAiUlMiOwpjb25zdCBjaGFyICpSZWxhdGlvbjo6aW5j
bHVkZV9zZXBhcmF0b3IgPSAiaW5jbHVkZSI7CmNvbnN0IGNoYXIgKlJlbGF0aW9uOjppZF9oZWFk
ZXJfc3RyaW5nID0gIklEIjsKY29uc3QgY2hhciAqUmVsYXRpb246OmNvbF9kb2NfaGVhZGVyX3N0
cmluZyA9ICJDSUQiOwpjb25zdCBjaGFyICpSZWxhdGlvbjo6Y29sX2ZpbGVfZG9jX2hlYWRlcl9z
dHJpbmcgPSAiRklEIjsKY29uc3QgY2hhciAqUmVsYXRpb246OnNraXBfc3RhcnQgPSAie3siOwpj
b25zdCBjaGFyICpSZWxhdGlvbjo6c2tpcF9lbmQgPSAifX0iOwpSZGJQcmludENvbnRyb2wgUmVs
YXRpb246OmRlZmF1bHRfcmZtdDsKaW50IFJlbGF0aW9uOjpzaW5nbGVfam9pbiA9IDA7ClNhdmVk
UmVsYXRpb25NYW5hZ2VyIFJlbGF0aW9uOjpzcm07CmludCBSZWxhdGlvbjo6cmVsYXRpb25fbnVt
YmVyID0gMDsKUmVsYXRpb24gKlJlbGF0aW9uOjpoZWFkID0gMDsKUmVsYXRpb24gKlJlbGF0aW9u
Ojp0YWlsID0gMDsK


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