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


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

c++/688: Problem accesing a field of a union.



>Number:         688
>Category:       c++
>Synopsis:       Problem accesing a field of a union.
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Wed Oct 25 08:26:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator:     jesus@comuh.uh.cu
>Release:        egcs 2.91.66 19990314/Linux (egcs 1.1.2 release)
>Organization:
>Environment:
RedHad Linux ver 6.1 on a Pentium pro
>Description:
the output look like:
var.h:36: warning: class `Var' is implicilty friend with itself
var.cc: In method `void Var::assign(class Var *)':
var.cc:27: warning: invalid use of type decl `union Var::v' as expression
var.cc:27: Internal compiler error 40
>How-To-Repeat:
compiling  ;)
>Fix:

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

IyAxICJ2YXIuY2MiCiAKCgoKIyAxICJ2YXIuaCIgMQogCgoKCgoKCgojIDEgIi91c3IvaW5jbHVk
ZS9nbGliLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2xpYi9pbmNsdWRlL2dsaWJj
b25maWcuaCIgMQogCgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoKIyAxICIvdXNyL2xpYi9nY2MtbGli
L2kzODYtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIAoK
CiAKCgoKCgogCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC9lZ2NzLTIu
OTEuNjYvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMSAzCiAKCgoKCgojIDEgIi91c3IvbGliL2djYy1s
aWIvaTM4Ni1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvbGltaXRzLmgiIDEgMwog
CgoKIAoKIyAxMTQgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvZWdjcy0yLjkx
LjY2L2luY2x1ZGUvbGltaXRzLmgiIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDEg
MwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5o
IiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
CgogCgoKCiAKCgoKCgoKCiAKIyAxMzcgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCgoKIAoK
CgoKCgoKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDE5NSAiL3Vzci9p
bmNsdWRlL2ZlYXR1cmVzLmgiIDMKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAK
CgoKIAoKCgoKCgoKCiAKCgoKCiAKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAxIDMK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiAKCgoKCgogCgoKCgoKCgoKIAoKCgoKIyA3MSAi
L3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzCgoKIAoKCgoKCgoKIAoKCgojIDEwMyAiL3Vzci9p
bmNsdWRlL3N5cy9jZGVmcy5oIiAzCgoKCiAKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCiAKCgoK
CgoKCgogCgoKCgoKCgoKIAoKCgoKCgoKCgogCgoKCgoKCgojIDI0OSAiL3Vzci9pbmNsdWRlL2Zl
YXR1cmVzLmgiIDIgMwoKCiAKCgoKCgoKCgogCgoKCgoKIAoKIAoKCgoKCgoKCiMgMSAiL3Vzci9p
bmNsdWRlL2dudS9zdHVicy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCiMgMjc3ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCgoKCgojIDI2ICIvdXNy
L2luY2x1ZGUvbGltaXRzLmgiIDIgMwoKCgogCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcG9zaXgx
X2xpbS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKIAoKCiAKCgogCgoK
IAoKCiAKCgogCgoKIAoKCiAKCgoKIAoKCiAKCgogCgoKIAoKCiAKCgoKIAoKCiAKCgogCgoKIAoK
CiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKCiAKCgogCgoKIAoKCiAKCgogCgoKCiAK
IyAxICIvdXNyL2luY2x1ZGUvYml0cy9sb2NhbF9saW0uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoK
CgoKIAoKCgoKCiAKIyAxICIvdXNyL2luY2x1ZGUvbGludXgvbGltaXRzLmgiIDEgMwoKCgoKCgoK
CgoKCgoKCgoKCgoKIyAyNyAiL3Vzci9pbmNsdWRlL2JpdHMvbG9jYWxfbGltLmgiIDIgMwoKCiAK
CgoKCgogCgogCgoKIAoKIAoKCiAKCiAKCgogCgoKCiAKCiMgMTI2ICIvdXNyL2luY2x1ZGUvYml0
cy9wb3NpeDFfbGltLmgiIDIgMwoKCgoKCgoKCiAKCgoKCgoKCiMgMzAgIi91c3IvaW5jbHVkZS9s
aW1pdHMuaCIgMiAzCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4Ml9saW0uaCIgMSAz
CiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgogCgoKIAoKCiAKCgogCgoKIAoKCgoKIAoKCgoK
IAoKCgogCgoKIAoKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CiMgMzQgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMiAzCgoKCgoKCgoKIAoKCgoKCiAKCiMgMTIx
ICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDMKCgoKCiAgCgoKCgoKCgoKIyAxMTcgIi91c3IvbGli
L2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvbGltaXRzLmgi
IDIgMwoKCgoKIyA3ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4L2VnY3MtMi45
MS42Ni9pbmNsdWRlL3N5c2xpbWl0cy5oIiAyIDMKCgojIDExICIvdXNyL2xpYi9nY2MtbGliL2kz
ODYtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKCgoKCgog
CgoKCiAKCgoKIAoKCgoKIAoKCgoKCiAKCgoKIAoKCgoKCgoKCgoKCgogCgogCgoKCgogCgoKCiAK
CgoKCgoKCgogCgoKCiAKCgoKCgoKCgoKCgoKCiAKCgoKIyAxMDcgIi91c3IvbGliL2djYy1saWIv
aTM4Ni1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvbGltaXRzLmgiIDMKCgoKCiAK
CgoKCgoKCgoKIyAxMyAiL3Vzci9saWIvZ2xpYi9pbmNsdWRlL2dsaWJjb25maWcuaCIgMgoKIyAx
ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRl
L2Zsb2F0LmgiIDEgMwogCgoKCiAKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoK
ICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKCiAgICAKCgogICAgCgoK
ICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCgogICAgCgoK
ICAgIAoKCiAgICAKCgoKdW5pb24gX19jb252ZXJ0X2xvbmdfZG91YmxlIHsKICB1bnNpZ25lZCBf
X2NvbnZlcnRfbG9uZ19kb3VibGVfaVs0XTsKICBsb25nIGRvdWJsZSBfX2NvbnZlcnRfbG9uZ19k
b3VibGVfZDsKfTsKCgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgoK
CiMgMTQgIi91c3IvbGliL2dsaWIvaW5jbHVkZS9nbGliY29uZmlnLmgiIDIKCgoKCgoKCgoKCgoK
Cgp0eXBlZGVmIHNpZ25lZCBjaGFyIGdpbnQ4Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgZ3VpbnQ4
Owp0eXBlZGVmIHNpZ25lZCBzaG9ydCBnaW50MTY7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgZ3Vp
bnQxNjsKdHlwZWRlZiBzaWduZWQgaW50IGdpbnQzMjsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgZ3Vp
bnQzMjsKCgoKCgoKCgoKX19leHRlbnNpb25fXyAgdHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIGdp
bnQ2NDsKX19leHRlbnNpb25fXyAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgZ3VpbnQ2NDsK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9HU3RhdGlj
TXV0ZXggR1N0YXRpY011dGV4OwpzdHJ1Y3QgX0dTdGF0aWNNdXRleAp7CiAgc3RydWN0IF9HTXV0
ZXggKnJ1bnRpbWVfbXV0ZXg7CiAgdW5pb24gewogICAgY2hhciAgIHBhZFsyNF07CiAgICBkb3Vi
bGUgZHVtbXlfZG91YmxlOwogICAgdm9pZCAgKmR1bW15X3BvaW50ZXI7CiAgICBsb25nICAgZHVt
bXlfbG9uZzsKICB9IGFsaWduZWRfcGFkX3U7Cn07CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKfQoKCgojIDY2ICIvdXNyL2luY2x1ZGUvZ2xpYi5oIiAyIDMKCgogCgojIDEg
Ii91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUv
c3RkYXJnLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCnR5cGVkZWYgdm9pZCAqX19nbnVjX3ZhX2xpc3Q7
CgoKCiAKCgoKIAoKCgoKCgoKCgoKCgoKCnZvaWQgdmFfZW5kIChfX2dudWNfdmFfbGlzdCk7CQkg
CgoKIAoKCgogCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKIAoKCgoKCgoK
CgoKCgoKIyAxNjggIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvZWdjcy0yLjkx
LjY2L2luY2x1ZGUvc3RkYXJnLmgiIDMKCgogCgoKCgogCgogCgogCgp0eXBlZGVmIF9fZ251Y192
YV9saXN0IHZhX2xpc3Q7CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNzAgIi91c3IvaW5jbHVk
ZS9nbGliLmgiIDIgMwoKCiAKCgoKCgoKIyA4OSAiL3Vzci9pbmNsdWRlL2dsaWIuaCIgMwoKCiAK
CgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgog
CgoKIyAxNDYgIi91c3IvaW5jbHVkZS9nbGliLmgiIDMKCgoKIAoKCgoKCgoKCgoKIAoKCgoKCgoK
CgoKCgoKCgoKCiMgMTkyICIvdXNyL2luY2x1ZGUvZ2xpYi5oIiAzCgoKCgoKCgoKCgoKCgoKCgoK
CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CgoKCgoKCgoKIAoKCgoKCgoKCgogCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKIyAzNTcgIi91c3IvaW5jbHVkZS9nbGli
LmgiIDMKCgoKCgoKCgoKIyAzODQgIi91c3IvaW5jbHVkZS9nbGliLmgiIDMKCgoKCgoKCgoKCgoK
CgoKIyA0MTAgIi91c3IvaW5jbHVkZS9nbGliLmgiIDMKCgojIDQyMyAiL3Vzci9pbmNsdWRlL2ds
aWIuaCIgMwoKIyA0NTAgIi91c3IvaW5jbHVkZS9nbGliLmgiIDMKCgoKCgogCgoKCgoKCnR5cGVk
ZWYgY2hhciAgIGdjaGFyOwp0eXBlZGVmIHNob3J0ICBnc2hvcnQ7CnR5cGVkZWYgbG9uZyAgIGds
b25nOwp0eXBlZGVmIGludCAgICBnaW50Owp0eXBlZGVmIGdpbnQgICBnYm9vbGVhbjsKCnR5cGVk
ZWYgdW5zaWduZWQgY2hhcglndWNoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQJZ3VzaG9ydDsK
dHlwZWRlZiB1bnNpZ25lZCBsb25nCWd1bG9uZzsKdHlwZWRlZiB1bnNpZ25lZCBpbnQJZ3VpbnQ7
Cgp0eXBlZGVmIGZsb2F0CWdmbG9hdDsKdHlwZWRlZiBkb3VibGUJZ2RvdWJsZTsKCiAKCgoKCgoK
CgoKCnR5cGVkZWYgdm9pZCogZ3BvaW50ZXI7CnR5cGVkZWYgY29uc3Qgdm9pZCAqZ2NvbnN0cG9p
bnRlcjsKCgp0eXBlZGVmIGdpbnQzMglnc3NpemU7CnR5cGVkZWYgZ3VpbnQzMiBnc2l6ZTsKdHlw
ZWRlZiBndWludDMyIEdRdWFyazsKdHlwZWRlZiBnaW50MzIJR1RpbWU7CgoKIAoKCgoKCgoJCgoK
IAoKCgoKCgoKCgoKIAoKCgojIDUzMSAiL3Vzci9pbmNsdWRlL2dsaWIuaCIgMwoKCgoKIyA1NDYg
Ii91c3IvaW5jbHVkZS9nbGliLmgiIDMKIyA1NTcgIi91c3IvaW5jbHVkZS9nbGliLmgiIDMKCgoK
CgoKCgoKIyA1ODIgIi91c3IvaW5jbHVkZS9nbGliLmgiIDMKCgojIDU5OCAiL3Vzci9pbmNsdWRl
L2dsaWIuaCIgMwoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
IAoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKZXh0ZXJuICBjb25zdCBndWludCBnbGliX21ham9yX3Zl
cnNpb247CmV4dGVybiAgY29uc3QgZ3VpbnQgZ2xpYl9taW5vcl92ZXJzaW9uOwpleHRlcm4gIGNv
bnN0IGd1aW50IGdsaWJfbWljcm9fdmVyc2lvbjsKZXh0ZXJuICBjb25zdCBndWludCBnbGliX2lu
dGVyZmFjZV9hZ2U7CmV4dGVybiAgY29uc3QgZ3VpbnQgZ2xpYl9iaW5hcnlfYWdlOwoKCgoKCgoK
IAoKdHlwZWRlZiBzdHJ1Y3QgX0dBbGxvY2F0b3IJR0FsbG9jYXRvcjsKdHlwZWRlZiBzdHJ1Y3Qg
X0dBcnJheQkJR0FycmF5Owp0eXBlZGVmIHN0cnVjdCBfR0J5dGVBcnJheQlHQnl0ZUFycmF5Owp0
eXBlZGVmIHN0cnVjdCBfR0NhY2hlCQlHQ2FjaGU7CnR5cGVkZWYgc3RydWN0IF9HQ29tcGxldGlv
bglHQ29tcGxldGlvbjsKdHlwZWRlZglzdHJ1Y3QgX0dEYXRhCQlHRGF0YTsKdHlwZWRlZiBzdHJ1
Y3QgX0dEZWJ1Z0tleQlHRGVidWdLZXk7CnR5cGVkZWYgc3RydWN0IF9HSGFzaFRhYmxlCUdIYXNo
VGFibGU7CnR5cGVkZWYgc3RydWN0IF9HSG9vawkJR0hvb2s7CnR5cGVkZWYgc3RydWN0IF9HSG9v
a0xpc3QJR0hvb2tMaXN0Owp0eXBlZGVmIHN0cnVjdCBfR0xpc3QJCUdMaXN0Owp0eXBlZGVmIHN0
cnVjdCBfR01lbUNodW5rCUdNZW1DaHVuazsKdHlwZWRlZiBzdHJ1Y3QgX0dOb2RlCQlHTm9kZTsK
dHlwZWRlZiBzdHJ1Y3QgX0dQdHJBcnJheQlHUHRyQXJyYXk7CnR5cGVkZWYgc3RydWN0IF9HUmVs
YXRpb24JR1JlbGF0aW9uOwp0eXBlZGVmIHN0cnVjdCBfR1NjYW5uZXIJR1NjYW5uZXI7CnR5cGVk
ZWYgc3RydWN0IF9HU2Nhbm5lckNvbmZpZwlHU2Nhbm5lckNvbmZpZzsKdHlwZWRlZiBzdHJ1Y3Qg
X0dTTGlzdAkJR1NMaXN0Owp0eXBlZGVmIHN0cnVjdCBfR1N0cmluZwkJR1N0cmluZzsKdHlwZWRl
ZiBzdHJ1Y3QgX0dTdHJpbmdDaHVuawlHU3RyaW5nQ2h1bms7CnR5cGVkZWYgc3RydWN0IF9HVGlt
ZXIJCUdUaW1lcjsKdHlwZWRlZiBzdHJ1Y3QgX0dUcmVlCQlHVHJlZTsKdHlwZWRlZiBzdHJ1Y3Qg
X0dUdXBsZXMJCUdUdXBsZXM7CnR5cGVkZWYgdW5pb24gIF9HVG9rZW5WYWx1ZQlHVG9rZW5WYWx1
ZTsKdHlwZWRlZiBzdHJ1Y3QgX0dJT0NoYW5uZWwJR0lPQ2hhbm5lbDsKCiAKdHlwZWRlZiBlbnVt
CnsKICBHX1RSQVZFUlNFX0xFQUZTCT0gMSA8PCAwLAogIEdfVFJBVkVSU0VfTk9OX0xFQUZTCT0g
MSA8PCAxLAogIEdfVFJBVkVSU0VfQUxMCT0gR19UUkFWRVJTRV9MRUFGUyB8IEdfVFJBVkVSU0Vf
Tk9OX0xFQUZTLAogIEdfVFJBVkVSU0VfTUFTSwk9IDB4MDMKfSBHVHJhdmVyc2VGbGFnczsKCiAK
dHlwZWRlZiBlbnVtCnsKICBHX0lOX09SREVSLAogIEdfUFJFX09SREVSLAogIEdfUE9TVF9PUkRF
UiwKICBHX0xFVkVMX09SREVSCn0gR1RyYXZlcnNlVHlwZTsKCiAKCgoKCiAKCnR5cGVkZWYgZW51
bQp7CiAgIAogIEdfTE9HX0ZMQUdfUkVDVVJTSU9OCQk9IDEgPDwgMCwKICBHX0xPR19GTEFHX0ZB
VEFMCQk9IDEgPDwgMSwKICAKICAgCiAgR19MT0dfTEVWRUxfRVJST1IJCT0gMSA8PCAyLAkgCiAg
R19MT0dfTEVWRUxfQ1JJVElDQUwJCT0gMSA8PCAzLAogIEdfTE9HX0xFVkVMX1dBUk5JTkcJCT0g
MSA8PCA0LAogIEdfTE9HX0xFVkVMX01FU1NBR0UJCT0gMSA8PCA1LAogIEdfTE9HX0xFVkVMX0lO
Rk8JCT0gMSA8PCA2LAogIEdfTE9HX0xFVkVMX0RFQlVHCQk9IDEgPDwgNywKICAKICBHX0xPR19M
RVZFTF9NQVNLCQk9IH4oR19MT0dfRkxBR19SRUNVUlNJT04gfCBHX0xPR19GTEFHX0ZBVEFMKQp9
IEdMb2dMZXZlbEZsYWdzOwoKIAoKCgp0eXBlZGVmIGdwb2ludGVyCSgqR0NhY2hlTmV3RnVuYykJ
KGdwb2ludGVyCWtleSk7CnR5cGVkZWYgZ3BvaW50ZXIJKCpHQ2FjaGVEdXBGdW5jKQkoZ3BvaW50
ZXIJdmFsdWUpOwp0eXBlZGVmIHZvaWQJCSgqR0NhY2hlRGVzdHJveUZ1bmMpCShncG9pbnRlcgl2
YWx1ZSk7CnR5cGVkZWYgZ2ludAkJKCpHQ29tcGFyZUZ1bmMpCQkoZ2NvbnN0cG9pbnRlcglhLAoJ
CQkJCQkgZ2NvbnN0cG9pbnRlcgliKTsKdHlwZWRlZiBnY2hhcioJCSgqR0NvbXBsZXRpb25GdW5j
KQkoZ3BvaW50ZXIpOwp0eXBlZGVmIHZvaWQJCSgqR0Rlc3Ryb3lOb3RpZnkpCShncG9pbnRlcglk
YXRhKTsKdHlwZWRlZiB2b2lkCQkoKkdEYXRhRm9yZWFjaEZ1bmMpCShHUXVhcmsJCWtleV9pZCwK
CQkJCQkJIGdwb2ludGVyCWRhdGEsCgkJCQkJCSBncG9pbnRlcgl1c2VyX2RhdGEpOwp0eXBlZGVm
IHZvaWQJCSgqR0Z1bmMpCQkoZ3BvaW50ZXIJZGF0YSwKCQkJCQkJIGdwb2ludGVyCXVzZXJfZGF0
YSk7CnR5cGVkZWYgZ3VpbnQJCSgqR0hhc2hGdW5jKQkJKGdjb25zdHBvaW50ZXIJa2V5KTsKdHlw
ZWRlZiB2b2lkCQkoKkdGcmVlRnVuYykJCShncG9pbnRlcglkYXRhKTsKdHlwZWRlZiB2b2lkCQko
KkdIRnVuYykJCShncG9pbnRlcglrZXksCgkJCQkJCSBncG9pbnRlcgl2YWx1ZSwKCQkJCQkJIGdw
b2ludGVyCXVzZXJfZGF0YSk7CnR5cGVkZWYgZ2Jvb2xlYW4JKCpHSFJGdW5jKQkJKGdwb2ludGVy
CWtleSwKCQkJCQkJIGdwb2ludGVyCXZhbHVlLAoJCQkJCQkgZ3BvaW50ZXIJdXNlcl9kYXRhKTsK
dHlwZWRlZiBnaW50CQkoKkdIb29rQ29tcGFyZUZ1bmMpCShHSG9vawkJKm5ld19ob29rLAoJCQkJ
CQkgR0hvb2sJCSpzaWJsaW5nKTsKdHlwZWRlZiBnYm9vbGVhbgkoKkdIb29rRmluZEZ1bmMpCShH
SG9vawkJKmhvb2ssCgkJCQkJCSBncG9pbnRlcgkgZGF0YSk7CnR5cGVkZWYgdm9pZAkJKCpHSG9v
a01hcnNoYWxsZXIpCShHSG9vawkJKmhvb2ssCgkJCQkJCSBncG9pbnRlcgkgZGF0YSk7CnR5cGVk
ZWYgZ2Jvb2xlYW4JKCpHSG9va0NoZWNrTWFyc2hhbGxlcikJKEdIb29rCQkqaG9vaywKCQkJCQkJ
IGdwb2ludGVyCSBkYXRhKTsKdHlwZWRlZiB2b2lkCQkoKkdIb29rRnVuYykJCShncG9pbnRlcgkg
ZGF0YSk7CnR5cGVkZWYgZ2Jvb2xlYW4JKCpHSG9va0NoZWNrRnVuYykJKGdwb2ludGVyCSBkYXRh
KTsKdHlwZWRlZiB2b2lkCQkoKkdIb29rRnJlZUZ1bmMpCShHSG9va0xpc3QgICAgICAqaG9va19s
aXN0LAoJCQkJCQkgR0hvb2sgICAgICAgICAgKmhvb2spOwp0eXBlZGVmIHZvaWQJCSgqR0xvZ0Z1
bmMpCQkoY29uc3QgZ2NoYXIgICAqbG9nX2RvbWFpbiwKCQkJCQkJIEdMb2dMZXZlbEZsYWdzCWxv
Z19sZXZlbCwKCQkJCQkJIGNvbnN0IGdjaGFyICAgKm1lc3NhZ2UsCgkJCQkJCSBncG9pbnRlcgl1
c2VyX2RhdGEpOwp0eXBlZGVmIGdib29sZWFuCSgqR05vZGVUcmF2ZXJzZUZ1bmMpCShHTm9kZQkg
ICAgICAgKm5vZGUsCgkJCQkJCSBncG9pbnRlcglkYXRhKTsKdHlwZWRlZiB2b2lkCQkoKkdOb2Rl
Rm9yZWFjaEZ1bmMpCShHTm9kZQkgICAgICAgKm5vZGUsCgkJCQkJCSBncG9pbnRlcglkYXRhKTsK
dHlwZWRlZiBnaW50CQkoKkdTZWFyY2hGdW5jKQkJKGdwb2ludGVyCWtleSwKCQkJCQkJIGdwb2lu
dGVyCWRhdGEpOwp0eXBlZGVmIHZvaWQJCSgqR1NjYW5uZXJNc2dGdW5jKQkoR1NjYW5uZXIgICAg
ICAqc2Nhbm5lciwKCQkJCQkJIGdjaGFyCSAgICAgICAqbWVzc2FnZSwKCQkJCQkJIGdpbnQJCWVy
cm9yKTsKdHlwZWRlZiBnaW50CQkoKkdUcmF2ZXJzZUZ1bmMpCShncG9pbnRlcglrZXksCgkJCQkJ
CSBncG9pbnRlcgl2YWx1ZSwKCQkJCQkJIGdwb2ludGVyCWRhdGEpOwp0eXBlZGVmCXZvaWQJCSgq
R1ZvaWRGdW5jKQkJKHZvaWQpOwoKCnN0cnVjdCBfR0xpc3QKewogIGdwb2ludGVyIGRhdGE7CiAg
R0xpc3QgKm5leHQ7CiAgR0xpc3QgKnByZXY7Cn07CgpzdHJ1Y3QgX0dTTGlzdAp7CiAgZ3BvaW50
ZXIgZGF0YTsKICBHU0xpc3QgKm5leHQ7Cn07CgpzdHJ1Y3QgX0dTdHJpbmcKewogIGdjaGFyICpz
dHI7CiAgZ2ludCBsZW47Cn07CgpzdHJ1Y3QgX0dBcnJheQp7CiAgZ2NoYXIgKmRhdGE7CiAgZ3Vp
bnQgbGVuOwp9OwoKc3RydWN0IF9HQnl0ZUFycmF5CnsKICBndWludDggKmRhdGE7CiAgZ3VpbnQJ
ICBsZW47Cn07CgpzdHJ1Y3QgX0dQdHJBcnJheQp7CiAgZ3BvaW50ZXIgKnBkYXRhOwogIGd1aW50
CSAgICBsZW47Cn07CgpzdHJ1Y3QgX0dUdXBsZXMKewogIGd1aW50IGxlbjsKfTsKCnN0cnVjdCBf
R0RlYnVnS2V5CnsKICBnY2hhciAqa2V5OwogIGd1aW50CSB2YWx1ZTsKfTsKCgogCgp2b2lkICAg
Z19saXN0X3B1c2hfYWxsb2NhdG9yICAgIChHQWxsb2NhdG9yICAgICAqYWxsb2NhdG9yKTsKdm9p
ZCAgIGdfbGlzdF9wb3BfYWxsb2NhdG9yICAgICAodm9pZCk7CkdMaXN0KiBnX2xpc3RfYWxsb2MJ
CSh2b2lkKTsKdm9pZCAgIGdfbGlzdF9mcmVlCQkoR0xpc3QJCSpsaXN0KTsKdm9pZCAgIGdfbGlz
dF9mcmVlXzEJCShHTGlzdAkJKmxpc3QpOwpHTGlzdCogZ19saXN0X2FwcGVuZAkJKEdMaXN0CQkq
bGlzdCwKCQkJCSBncG9pbnRlcgkgZGF0YSk7CkdMaXN0KiBnX2xpc3RfcHJlcGVuZAkJKEdMaXN0
CQkqbGlzdCwKCQkJCSBncG9pbnRlcgkgZGF0YSk7CkdMaXN0KiBnX2xpc3RfaW5zZXJ0CQkoR0xp
c3QJCSpsaXN0LAoJCQkJIGdwb2ludGVyCSBkYXRhLAoJCQkJIGdpbnQJCSBwb3NpdGlvbik7CkdM
aXN0KiBnX2xpc3RfaW5zZXJ0X3NvcnRlZAkoR0xpc3QJCSpsaXN0LAoJCQkJIGdwb2ludGVyCSBk
YXRhLAoJCQkJIEdDb21wYXJlRnVuYwkgZnVuYyk7CkdMaXN0KiBnX2xpc3RfY29uY2F0CQkoR0xp
c3QJCSpsaXN0MSwKCQkJCSBHTGlzdAkJKmxpc3QyKTsKR0xpc3QqIGdfbGlzdF9yZW1vdmUJCShH
TGlzdAkJKmxpc3QsCgkJCQkgZ3BvaW50ZXIJIGRhdGEpOwpHTGlzdCogZ19saXN0X3JlbW92ZV9s
aW5rCShHTGlzdAkJKmxpc3QsCgkJCQkgR0xpc3QJCSpsbGluayk7CkdMaXN0KiBnX2xpc3RfcmV2
ZXJzZQkJKEdMaXN0CQkqbGlzdCk7CkdMaXN0KiBnX2xpc3RfY29weQkJKEdMaXN0CQkqbGlzdCk7
CkdMaXN0KiBnX2xpc3RfbnRoCQkoR0xpc3QJCSpsaXN0LAoJCQkJIGd1aW50CQkgbik7CkdMaXN0
KiBnX2xpc3RfZmluZAkJKEdMaXN0CQkqbGlzdCwKCQkJCSBncG9pbnRlcgkgZGF0YSk7CkdMaXN0
KiBnX2xpc3RfZmluZF9jdXN0b20JKEdMaXN0CQkqbGlzdCwKCQkJCSBncG9pbnRlcgkgZGF0YSwK
CQkJCSBHQ29tcGFyZUZ1bmMJIGZ1bmMpOwpnaW50ICAgZ19saXN0X3Bvc2l0aW9uCQkoR0xpc3QJ
CSpsaXN0LAoJCQkJIEdMaXN0CQkqbGxpbmspOwpnaW50ICAgZ19saXN0X2luZGV4CQkoR0xpc3QJ
CSpsaXN0LAoJCQkJIGdwb2ludGVyCSBkYXRhKTsKR0xpc3QqIGdfbGlzdF9sYXN0CQkoR0xpc3QJ
CSpsaXN0KTsKR0xpc3QqIGdfbGlzdF9maXJzdAkJKEdMaXN0CQkqbGlzdCk7Cmd1aW50ICBnX2xp
c3RfbGVuZ3RoCQkoR0xpc3QJCSpsaXN0KTsKdm9pZCAgIGdfbGlzdF9mb3JlYWNoCQkoR0xpc3QJ
CSpsaXN0LAoJCQkJIEdGdW5jCQkgZnVuYywKCQkJCSBncG9pbnRlcgkgdXNlcl9kYXRhKTsKR0xp
c3QqIGdfbGlzdF9zb3J0ICAgICAgICAgICAgICAoR0xpc3QgICAgICAgICAgKmxpc3QsCgkJICAg
ICAgICAgICAgICAgICBHQ29tcGFyZUZ1bmMgICAgY29tcGFyZV9mdW5jKTsKZ3BvaW50ZXIgZ19s
aXN0X250aF9kYXRhCShHTGlzdAkJKmxpc3QsCgkJCQkgZ3VpbnQJCSBuKTsKCgoKCiAKCnZvaWQg
ICAgZ19zbGlzdF9wdXNoX2FsbG9jYXRvciAgKEdBbGxvY2F0b3IgICAgICphbGxvY2F0b3IpOwp2
b2lkICAgIGdfc2xpc3RfcG9wX2FsbG9jYXRvciAgICh2b2lkKTsKR1NMaXN0KiBnX3NsaXN0X2Fs
bG9jCQkodm9pZCk7CnZvaWQJZ19zbGlzdF9mcmVlCQkoR1NMaXN0CQkqbGlzdCk7CnZvaWQJZ19z
bGlzdF9mcmVlXzEJCShHU0xpc3QJCSpsaXN0KTsKR1NMaXN0KiBnX3NsaXN0X2FwcGVuZAkJKEdT
TGlzdAkJKmxpc3QsCgkJCQkgZ3BvaW50ZXIJIGRhdGEpOwpHU0xpc3QqIGdfc2xpc3RfcHJlcGVu
ZAkJKEdTTGlzdAkJKmxpc3QsCgkJCQkgZ3BvaW50ZXIJIGRhdGEpOwpHU0xpc3QqIGdfc2xpc3Rf
aW5zZXJ0CQkoR1NMaXN0CQkqbGlzdCwKCQkJCSBncG9pbnRlcgkgZGF0YSwKCQkJCSBnaW50CQkg
cG9zaXRpb24pOwpHU0xpc3QqIGdfc2xpc3RfaW5zZXJ0X3NvcnRlZAkoR1NMaXN0CQkqbGlzdCwK
CQkJCSBncG9pbnRlcgkgZGF0YSwKCQkJCSBHQ29tcGFyZUZ1bmMJIGZ1bmMpOwpHU0xpc3QqIGdf
c2xpc3RfY29uY2F0CQkoR1NMaXN0CQkqbGlzdDEsCgkJCQkgR1NMaXN0CQkqbGlzdDIpOwpHU0xp
c3QqIGdfc2xpc3RfcmVtb3ZlCQkoR1NMaXN0CQkqbGlzdCwKCQkJCSBncG9pbnRlcgkgZGF0YSk7
CkdTTGlzdCogZ19zbGlzdF9yZW1vdmVfbGluawkoR1NMaXN0CQkqbGlzdCwKCQkJCSBHU0xpc3QJ
CSpsbGluayk7CkdTTGlzdCogZ19zbGlzdF9yZXZlcnNlCQkoR1NMaXN0CQkqbGlzdCk7CkdTTGlz
dCoJZ19zbGlzdF9jb3B5CQkoR1NMaXN0CQkqbGlzdCk7CkdTTGlzdCogZ19zbGlzdF9udGgJCShH
U0xpc3QJCSpsaXN0LAoJCQkJIGd1aW50CQkgbik7CkdTTGlzdCogZ19zbGlzdF9maW5kCQkoR1NM
aXN0CQkqbGlzdCwKCQkJCSBncG9pbnRlcgkgZGF0YSk7CkdTTGlzdCogZ19zbGlzdF9maW5kX2N1
c3RvbQkoR1NMaXN0CQkqbGlzdCwKCQkJCSBncG9pbnRlcgkgZGF0YSwKCQkJCSBHQ29tcGFyZUZ1
bmMJIGZ1bmMpOwpnaW50CWdfc2xpc3RfcG9zaXRpb24JKEdTTGlzdAkJKmxpc3QsCgkJCQkgR1NM
aXN0CQkqbGxpbmspOwpnaW50CWdfc2xpc3RfaW5kZXgJCShHU0xpc3QJCSpsaXN0LAoJCQkJIGdw
b2ludGVyCSBkYXRhKTsKR1NMaXN0KiBnX3NsaXN0X2xhc3QJCShHU0xpc3QJCSpsaXN0KTsKZ3Vp
bnQJZ19zbGlzdF9sZW5ndGgJCShHU0xpc3QJCSpsaXN0KTsKdm9pZAlnX3NsaXN0X2ZvcmVhY2gJ
CShHU0xpc3QJCSpsaXN0LAoJCQkJIEdGdW5jCQkgZnVuYywKCQkJCSBncG9pbnRlcgkgdXNlcl9k
YXRhKTsKR1NMaXN0KiAgZ19zbGlzdF9zb3J0ICAgICAgICAgICAoR1NMaXN0ICAgICAgICAgICps
aXN0LAoJCSAgICAgICAgICAgICAgICAgR0NvbXBhcmVGdW5jICAgIGNvbXBhcmVfZnVuYyk7Cmdw
b2ludGVyIGdfc2xpc3RfbnRoX2RhdGEJKEdTTGlzdAkJKmxpc3QsCgkJCQkgZ3VpbnQJCSBuKTsK
CgoKIAoKR0hhc2hUYWJsZSogZ19oYXNoX3RhYmxlX25ldwkJKEdIYXNoRnVuYwkgaGFzaF9mdW5j
LAoJCQkJCSBHQ29tcGFyZUZ1bmMJIGtleV9jb21wYXJlX2Z1bmMpOwp2b2lkCSAgICBnX2hhc2hf
dGFibGVfZGVzdHJveQkoR0hhc2hUYWJsZQkqaGFzaF90YWJsZSk7CnZvaWQJICAgIGdfaGFzaF90
YWJsZV9pbnNlcnQJCShHSGFzaFRhYmxlCSpoYXNoX3RhYmxlLAoJCQkJCSBncG9pbnRlcgkga2V5
LAoJCQkJCSBncG9pbnRlcgkgdmFsdWUpOwp2b2lkCSAgICBnX2hhc2hfdGFibGVfcmVtb3ZlCQko
R0hhc2hUYWJsZQkqaGFzaF90YWJsZSwKCQkJCQkgZ2NvbnN0cG9pbnRlcgkga2V5KTsKZ3BvaW50
ZXIgICAgZ19oYXNoX3RhYmxlX2xvb2t1cAkJKEdIYXNoVGFibGUJKmhhc2hfdGFibGUsCgkJCQkJ
IGdjb25zdHBvaW50ZXIJIGtleSk7Cmdib29sZWFuICAgIGdfaGFzaF90YWJsZV9sb29rdXBfZXh0
ZW5kZWQoR0hhc2hUYWJsZQkqaGFzaF90YWJsZSwKCQkJCQkgZ2NvbnN0cG9pbnRlcgkgbG9va3Vw
X2tleSwKCQkJCQkgZ3BvaW50ZXIJKm9yaWdfa2V5LAoJCQkJCSBncG9pbnRlcgkqdmFsdWUpOwp2
b2lkCSAgICBnX2hhc2hfdGFibGVfZnJlZXplCQkoR0hhc2hUYWJsZQkqaGFzaF90YWJsZSk7CnZv
aWQJICAgIGdfaGFzaF90YWJsZV90aGF3CQkoR0hhc2hUYWJsZQkqaGFzaF90YWJsZSk7CnZvaWQJ
ICAgIGdfaGFzaF90YWJsZV9mb3JlYWNoCShHSGFzaFRhYmxlCSpoYXNoX3RhYmxlLAoJCQkJCSBH
SEZ1bmMJCSBmdW5jLAoJCQkJCSBncG9pbnRlcgkgdXNlcl9kYXRhKTsKZ3VpbnQJICAgIGdfaGFz
aF90YWJsZV9mb3JlYWNoX3JlbW92ZQkoR0hhc2hUYWJsZQkqaGFzaF90YWJsZSwKCQkJCQkgR0hS
RnVuYwkgZnVuYywKCQkJCQkgZ3BvaW50ZXIJIHVzZXJfZGF0YSk7Cmd1aW50CSAgICBnX2hhc2hf
dGFibGVfc2l6ZQkJKEdIYXNoVGFibGUJKmhhc2hfdGFibGUpOwoKCiAKCkdDYWNoZSoJIGdfY2Fj
aGVfbmV3CSAgICAgICAoR0NhY2hlTmV3RnVuYwkgICB2YWx1ZV9uZXdfZnVuYywKCQkJCUdDYWNo
ZURlc3Ryb3lGdW5jICB2YWx1ZV9kZXN0cm95X2Z1bmMsCgkJCQlHQ2FjaGVEdXBGdW5jCSAgIGtl
eV9kdXBfZnVuYywKCQkJCUdDYWNoZURlc3Ryb3lGdW5jICBrZXlfZGVzdHJveV9mdW5jLAoJCQkJ
R0hhc2hGdW5jCSAgIGhhc2hfa2V5X2Z1bmMsCgkJCQlHSGFzaEZ1bmMJICAgaGFzaF92YWx1ZV9m
dW5jLAoJCQkJR0NvbXBhcmVGdW5jCSAgIGtleV9jb21wYXJlX2Z1bmMpOwp2b2lkCSBnX2NhY2hl
X2Rlc3Ryb3kgICAgICAgKEdDYWNoZQkJICAqY2FjaGUpOwpncG9pbnRlciBnX2NhY2hlX2luc2Vy
dAkgICAgICAgKEdDYWNoZQkJICAqY2FjaGUsCgkJCQlncG9pbnRlcgkgICBrZXkpOwp2b2lkCSBn
X2NhY2hlX3JlbW92ZQkgICAgICAgKEdDYWNoZQkJICAqY2FjaGUsCgkJCQlncG9pbnRlcgkgICB2
YWx1ZSk7CnZvaWQJIGdfY2FjaGVfa2V5X2ZvcmVhY2ggICAoR0NhY2hlCQkgICpjYWNoZSwKCQkJ
CUdIRnVuYwkJICAgZnVuYywKCQkJCWdwb2ludGVyCSAgIHVzZXJfZGF0YSk7CnZvaWQJIGdfY2Fj
aGVfdmFsdWVfZm9yZWFjaCAoR0NhY2hlCQkgICpjYWNoZSwKCQkJCUdIRnVuYwkJICAgZnVuYywK
CQkJCWdwb2ludGVyCSAgIHVzZXJfZGF0YSk7CgoKIAoKR1RyZWUqCSBnX3RyZWVfbmV3CSAoR0Nv
bXBhcmVGdW5jCSBrZXlfY29tcGFyZV9mdW5jKTsKdm9pZAkgZ190cmVlX2Rlc3Ryb3kJIChHVHJl
ZQkJKnRyZWUpOwp2b2lkCSBnX3RyZWVfaW5zZXJ0CSAoR1RyZWUJCSp0cmVlLAoJCQkgIGdwb2lu
dGVyCSBrZXksCgkJCSAgZ3BvaW50ZXIJIHZhbHVlKTsKdm9pZAkgZ190cmVlX3JlbW92ZQkgKEdU
cmVlCQkqdHJlZSwKCQkJICBncG9pbnRlcgkga2V5KTsKZ3BvaW50ZXIgZ190cmVlX2xvb2t1cAkg
KEdUcmVlCQkqdHJlZSwKCQkJICBncG9pbnRlcgkga2V5KTsKdm9pZAkgZ190cmVlX3RyYXZlcnNl
IChHVHJlZQkJKnRyZWUsCgkJCSAgR1RyYXZlcnNlRnVuYwkgdHJhdmVyc2VfZnVuYywKCQkJICBH
VHJhdmVyc2VUeXBlCSB0cmF2ZXJzZV90eXBlLAoJCQkgIGdwb2ludGVyCSBkYXRhKTsKZ3BvaW50
ZXIgZ190cmVlX3NlYXJjaAkgKEdUcmVlCQkqdHJlZSwKCQkJICBHU2VhcmNoRnVuYwkgc2VhcmNo
X2Z1bmMsCgkJCSAgZ3BvaW50ZXIJIGRhdGEpOwpnaW50CSBnX3RyZWVfaGVpZ2h0CSAoR1RyZWUJ
CSp0cmVlKTsKZ2ludAkgZ190cmVlX25ub2RlcwkgKEdUcmVlCQkqdHJlZSk7CgoKCiAKCnN0cnVj
dCBfR05vZGUKewogIGdwb2ludGVyIGRhdGE7CiAgR05vZGUJICAqbmV4dDsKICBHTm9kZQkgICpw
cmV2OwogIEdOb2RlCSAgKnBhcmVudDsKICBHTm9kZQkgICpjaGlsZHJlbjsKfTsKCgoKCgoKdm9p
ZCAgICAgZ19ub2RlX3B1c2hfYWxsb2NhdG9yICAoR0FsbG9jYXRvciAgICAgICAqYWxsb2NhdG9y
KTsKdm9pZCAgICAgZ19ub2RlX3BvcF9hbGxvY2F0b3IgICAodm9pZCk7CkdOb2RlKgkgZ19ub2Rl
X25ldwkJKGdwb2ludGVyCSAgIGRhdGEpOwp2b2lkCSBnX25vZGVfZGVzdHJveQkJKEdOb2RlCQkg
ICpyb290KTsKdm9pZAkgZ19ub2RlX3VubGluawkJKEdOb2RlCQkgICpub2RlKTsKR05vZGUqCSBn
X25vZGVfaW5zZXJ0CQkoR05vZGUJCSAgKnBhcmVudCwKCQkJCSBnaW50CQkgICBwb3NpdGlvbiwK
CQkJCSBHTm9kZQkJICAqbm9kZSk7CkdOb2RlKgkgZ19ub2RlX2luc2VydF9iZWZvcmUJKEdOb2Rl
CQkgICpwYXJlbnQsCgkJCQkgR05vZGUJCSAgKnNpYmxpbmcsCgkJCQkgR05vZGUJCSAgKm5vZGUp
OwpHTm9kZSoJIGdfbm9kZV9wcmVwZW5kCQkoR05vZGUJCSAgKnBhcmVudCwKCQkJCSBHTm9kZQkJ
ICAqbm9kZSk7Cmd1aW50CSBnX25vZGVfbl9ub2RlcwkJKEdOb2RlCQkgICpyb290LAoJCQkJIEdU
cmF2ZXJzZUZsYWdzCSAgIGZsYWdzKTsKR05vZGUqCSBnX25vZGVfZ2V0X3Jvb3QJKEdOb2RlCQkg
ICpub2RlKTsKZ2Jvb2xlYW4gZ19ub2RlX2lzX2FuY2VzdG9yCShHTm9kZQkJICAqbm9kZSwKCQkJ
CSBHTm9kZQkJICAqZGVzY2VuZGFudCk7Cmd1aW50CSBnX25vZGVfZGVwdGgJCShHTm9kZQkJICAq
bm9kZSk7CkdOb2RlKgkgZ19ub2RlX2ZpbmQJCShHTm9kZQkJICAqcm9vdCwKCQkJCSBHVHJhdmVy
c2VUeXBlCSAgIG9yZGVyLAoJCQkJIEdUcmF2ZXJzZUZsYWdzCSAgIGZsYWdzLAoJCQkJIGdwb2lu
dGVyCSAgIGRhdGEpOwoKIAoKCgoKCgoKCgoKCiAKCgoKCnZvaWQJIGdfbm9kZV90cmF2ZXJzZQko
R05vZGUJCSAgKnJvb3QsCgkJCQkgR1RyYXZlcnNlVHlwZQkgICBvcmRlciwKCQkJCSBHVHJhdmVy
c2VGbGFncwkgICBmbGFncywKCQkJCSBnaW50CQkgICBtYXhfZGVwdGgsCgkJCQkgR05vZGVUcmF2
ZXJzZUZ1bmMgZnVuYywKCQkJCSBncG9pbnRlcgkgICBkYXRhKTsKCiAKCgoKCmd1aW50CSBnX25v
ZGVfbWF4X2hlaWdodAkgKEdOb2RlICpyb290KTsKCnZvaWQJIGdfbm9kZV9jaGlsZHJlbl9mb3Jl
YWNoIChHTm9kZQkJICAqbm9kZSwKCQkJCSAgR1RyYXZlcnNlRmxhZ3MgICBmbGFncywKCQkJCSAg
R05vZGVGb3JlYWNoRnVuYyBmdW5jLAoJCQkJICBncG9pbnRlcgkgICBkYXRhKTsKdm9pZAkgZ19u
b2RlX3JldmVyc2VfY2hpbGRyZW4gKEdOb2RlCQkgICpub2RlKTsKZ3VpbnQJIGdfbm9kZV9uX2No
aWxkcmVuCSAoR05vZGUJCSAgKm5vZGUpOwpHTm9kZSoJIGdfbm9kZV9udGhfY2hpbGQJIChHTm9k
ZQkJICAqbm9kZSwKCQkJCSAgZ3VpbnQJCSAgIG4pOwpHTm9kZSoJIGdfbm9kZV9sYXN0X2NoaWxk
CSAoR05vZGUJCSAgKm5vZGUpOwpHTm9kZSoJIGdfbm9kZV9maW5kX2NoaWxkCSAoR05vZGUJCSAg
Km5vZGUsCgkJCQkgIEdUcmF2ZXJzZUZsYWdzICAgZmxhZ3MsCgkJCQkgIGdwb2ludGVyCSAgIGRh
dGEpOwpnaW50CSBnX25vZGVfY2hpbGRfcG9zaXRpb24JIChHTm9kZQkJICAqbm9kZSwKCQkJCSAg
R05vZGUJCSAgKmNoaWxkKTsKZ2ludAkgZ19ub2RlX2NoaWxkX2luZGV4CSAoR05vZGUJCSAgKm5v
ZGUsCgkJCQkgIGdwb2ludGVyCSAgIGRhdGEpOwoKR05vZGUqCSBnX25vZGVfZmlyc3Rfc2libGlu
ZwkgKEdOb2RlCQkgICpub2RlKTsKR05vZGUqCSBnX25vZGVfbGFzdF9zaWJsaW5nCSAoR05vZGUJ
CSAgKm5vZGUpOwoKCgoKCgoKCgogCgoKdHlwZWRlZiBlbnVtCnsKICBHX0hPT0tfRkxBR19BQ1RJ
VkUJPSAxIDw8IDAsCiAgR19IT09LX0ZMQUdfSU5fQ0FMTAk9IDEgPDwgMSwKICBHX0hPT0tfRkxB
R19NQVNLCT0gMHgwZgp9IEdIb29rRmxhZ01hc2s7CgoKCnN0cnVjdCBfR0hvb2tMaXN0CnsKICBn
dWludAkJIHNlcV9pZDsKICBndWludAkJIGhvb2tfc2l6ZTsKICBndWludAkJIGlzX3NldHVwIDog
MTsKICBHSG9vawkJKmhvb2tzOwogIEdNZW1DaHVuawkqaG9va19tZW1jaHVuazsKICBHSG9va0Zy
ZWVGdW5jCSBob29rX2ZyZWU7ICAKICBHSG9va0ZyZWVGdW5jCSBob29rX2Rlc3Ryb3k7ICAKfTsK
CnN0cnVjdCBfR0hvb2sKewogIGdwb2ludGVyCSBkYXRhOwogIEdIb29rCQkqbmV4dDsKICBHSG9v
awkJKnByZXY7CiAgZ3VpbnQJCSByZWZfY291bnQ7CiAgZ3VpbnQJCSBob29rX2lkOwogIGd1aW50
CQkgZmxhZ3M7CiAgZ3BvaW50ZXIJIGZ1bmM7CiAgR0Rlc3Ryb3lOb3RpZnkgZGVzdHJveTsKfTsK
CgoKCgoKCgoKCgoKdm9pZAkgZ19ob29rX2xpc3RfaW5pdAkJKEdIb29rTGlzdAkJKmhvb2tfbGlz
dCwKCQkJCQkgZ3VpbnQJCQkgaG9va19zaXplKTsKdm9pZAkgZ19ob29rX2xpc3RfY2xlYXIJCShH
SG9va0xpc3QJCSpob29rX2xpc3QpOwpHSG9vayoJIGdfaG9va19hbGxvYwkJCShHSG9va0xpc3QJ
CSpob29rX2xpc3QpOwp2b2lkCSBnX2hvb2tfZnJlZQkJCShHSG9va0xpc3QJCSpob29rX2xpc3Qs
CgkJCQkJIEdIb29rCQkJKmhvb2spOwp2b2lkCSBnX2hvb2tfcmVmCQkJKEdIb29rTGlzdAkJKmhv
b2tfbGlzdCwKCQkJCQkgR0hvb2sJCQkqaG9vayk7CnZvaWQJIGdfaG9va191bnJlZgkJCShHSG9v
a0xpc3QJCSpob29rX2xpc3QsCgkJCQkJIEdIb29rCQkJKmhvb2spOwpnYm9vbGVhbiBnX2hvb2tf
ZGVzdHJveQkJCShHSG9va0xpc3QJCSpob29rX2xpc3QsCgkJCQkJIGd1aW50CQkJIGhvb2tfaWQp
Owp2b2lkCSBnX2hvb2tfZGVzdHJveV9saW5rCQkoR0hvb2tMaXN0CQkqaG9va19saXN0LAoJCQkJ
CSBHSG9vawkJCSpob29rKTsKdm9pZAkgZ19ob29rX3ByZXBlbmQJCQkoR0hvb2tMaXN0CQkqaG9v
a19saXN0LAoJCQkJCSBHSG9vawkJCSpob29rKTsKdm9pZAkgZ19ob29rX2luc2VydF9iZWZvcmUJ
CShHSG9va0xpc3QJCSpob29rX2xpc3QsCgkJCQkJIEdIb29rCQkJKnNpYmxpbmcsCgkJCQkJIEdI
b29rCQkJKmhvb2spOwp2b2lkCSBnX2hvb2tfaW5zZXJ0X3NvcnRlZAkJKEdIb29rTGlzdAkJKmhv
b2tfbGlzdCwKCQkJCQkgR0hvb2sJCQkqaG9vaywKCQkJCQkgR0hvb2tDb21wYXJlRnVuYwkgZnVu
Yyk7CkdIb29rKgkgZ19ob29rX2dldAkJCShHSG9va0xpc3QJCSpob29rX2xpc3QsCgkJCQkJIGd1
aW50CQkJIGhvb2tfaWQpOwpHSG9vayoJIGdfaG9va19maW5kCQkJKEdIb29rTGlzdAkJKmhvb2tf
bGlzdCwKCQkJCQkgZ2Jvb2xlYW4JCSBuZWVkX3ZhbGlkcywKCQkJCQkgR0hvb2tGaW5kRnVuYwkJ
IGZ1bmMsCgkJCQkJIGdwb2ludGVyCQkgZGF0YSk7CkdIb29rKgkgZ19ob29rX2ZpbmRfZGF0YQkJ
KEdIb29rTGlzdAkJKmhvb2tfbGlzdCwKCQkJCQkgZ2Jvb2xlYW4JCSBuZWVkX3ZhbGlkcywKCQkJ
CQkgZ3BvaW50ZXIJCSBkYXRhKTsKR0hvb2sqCSBnX2hvb2tfZmluZF9mdW5jCQkoR0hvb2tMaXN0
CQkqaG9va19saXN0LAoJCQkJCSBnYm9vbGVhbgkJIG5lZWRfdmFsaWRzLAoJCQkJCSBncG9pbnRl
cgkJIGZ1bmMpOwpHSG9vayoJIGdfaG9va19maW5kX2Z1bmNfZGF0YQkJKEdIb29rTGlzdAkJKmhv
b2tfbGlzdCwKCQkJCQkgZ2Jvb2xlYW4JCSBuZWVkX3ZhbGlkcywKCQkJCQkgZ3BvaW50ZXIJCSBm
dW5jLAoJCQkJCSBncG9pbnRlcgkJIGRhdGEpOwogCkdIb29rKgkgZ19ob29rX2ZpcnN0X3ZhbGlk
CQkoR0hvb2tMaXN0CQkqaG9va19saXN0LAoJCQkJCSBnYm9vbGVhbgkJIG1heV9iZV9pbl9jYWxs
KTsKIAoKCkdIb29rKgkgZ19ob29rX25leHRfdmFsaWQJCShHSG9va0xpc3QJCSpob29rX2xpc3Qs
CgkJCQkJIEdIb29rCQkJKmhvb2ssCgkJCQkJIGdib29sZWFuCQkgbWF5X2JlX2luX2NhbGwpOwoK
IApnaW50CSBnX2hvb2tfY29tcGFyZV9pZHMJCShHSG9vawkJCSpuZXdfaG9vaywKCQkJCQkgR0hv
b2sJCQkqc2libGluZyk7CgogCgoKCiAKCnZvaWQJIGdfaG9va19saXN0X2ludm9rZQkJKEdIb29r
TGlzdAkJKmhvb2tfbGlzdCwKCQkJCQkgZ2Jvb2xlYW4JCSBtYXlfcmVjdXJzZSk7CiAKCgp2b2lk
CSBnX2hvb2tfbGlzdF9pbnZva2VfY2hlY2sJKEdIb29rTGlzdAkJKmhvb2tfbGlzdCwKCQkJCQkg
Z2Jvb2xlYW4JCSBtYXlfcmVjdXJzZSk7CiAKCnZvaWQJIGdfaG9va19saXN0X21hcnNoYWwJCShH
SG9va0xpc3QJCSpob29rX2xpc3QsCgkJCQkJIGdib29sZWFuCQkgbWF5X3JlY3Vyc2UsCgkJCQkJ
IEdIb29rTWFyc2hhbGxlcgkgbWFyc2hhbGxlciwKCQkJCQkgZ3BvaW50ZXIJCSBkYXRhKTsKdm9p
ZAkgZ19ob29rX2xpc3RfbWFyc2hhbF9jaGVjawkoR0hvb2tMaXN0CQkqaG9va19saXN0LAoJCQkJ
CSBnYm9vbGVhbgkJIG1heV9yZWN1cnNlLAoJCQkJCSBHSG9va0NoZWNrTWFyc2hhbGxlcgkgbWFy
c2hhbGxlciwKCQkJCQkgZ3BvaW50ZXIJCSBkYXRhKTsKCgogCgoKCgoKCgoKdm9pZCBnX29uX2Vy
cm9yX3F1ZXJ5IChjb25zdCBnY2hhciAqcHJnX25hbWUpOwp2b2lkIGdfb25fZXJyb3Jfc3RhY2tf
dHJhY2UgKGNvbnN0IGdjaGFyICpwcmdfbmFtZSk7CgoKIAoKZXh0ZXJuCSAgICAgICAgY29uc3Qg
Z2NoYXIJCSpnX2xvZ19kb21haW5fZ2xpYjsKZ3VpbnQJCWdfbG9nX3NldF9oYW5kbGVyCShjb25z
dCBnY2hhcgkqbG9nX2RvbWFpbiwKCQkJCQkgR0xvZ0xldmVsRmxhZ3MJIGxvZ19sZXZlbHMsCgkJ
CQkJIEdMb2dGdW5jCSBsb2dfZnVuYywKCQkJCQkgZ3BvaW50ZXIJIHVzZXJfZGF0YSk7CnZvaWQJ
CWdfbG9nX3JlbW92ZV9oYW5kbGVyCShjb25zdCBnY2hhcgkqbG9nX2RvbWFpbiwKCQkJCQkgZ3Vp
bnQJCSBoYW5kbGVyX2lkKTsKdm9pZAkJZ19sb2dfZGVmYXVsdF9oYW5kbGVyCShjb25zdCBnY2hh
cgkqbG9nX2RvbWFpbiwKCQkJCQkgR0xvZ0xldmVsRmxhZ3MJIGxvZ19sZXZlbCwKCQkJCQkgY29u
c3QgZ2NoYXIJKm1lc3NhZ2UsCgkJCQkJIGdwb2ludGVyCSB1bnVzZWRfZGF0YSk7CnZvaWQJCWdf
bG9nCQkJKGNvbnN0IGdjaGFyCSpsb2dfZG9tYWluLAoJCQkJCSBHTG9nTGV2ZWxGbGFncwkgbG9n
X2xldmVsLAoJCQkJCSBjb25zdCBnY2hhcgkqZm9ybWF0LAoJCQkJCSAuLi4pIF9fYXR0cmlidXRl
X18oKGZvcm1hdCAocHJpbnRmLCAgMyAsICAgNCApKSkgOwp2b2lkCQlnX2xvZ3YJCQkoY29uc3Qg
Z2NoYXIJKmxvZ19kb21haW4sCgkJCQkJIEdMb2dMZXZlbEZsYWdzCSBsb2dfbGV2ZWwsCgkJCQkJ
IGNvbnN0IGdjaGFyCSpmb3JtYXQsCgkJCQkJIHZhX2xpc3QJIGFyZ3MpOwpHTG9nTGV2ZWxGbGFn
cwlnX2xvZ19zZXRfZmF0YWxfbWFzawkoY29uc3QgZ2NoYXIJKmxvZ19kb21haW4sCgkJCQkJIEdM
b2dMZXZlbEZsYWdzCSBmYXRhbF9tYXNrKTsKR0xvZ0xldmVsRmxhZ3MJZ19sb2dfc2V0X2Fsd2F5
c19mYXRhbAkoR0xvZ0xldmVsRmxhZ3MJIGZhdGFsX21hc2spOwoKCgoKCgoKCgoKCgoKIyAxMzIx
ICIvdXNyL2luY2x1ZGUvZ2xpYi5oIiAzCgoKdHlwZWRlZiB2b2lkCSgqR1ByaW50RnVuYykJCShj
b25zdCBnY2hhcgkqc3RyaW5nKTsKdm9pZAkJZ19wcmludAkJCShjb25zdCBnY2hhcgkqZm9ybWF0
LAoJCQkJCSAuLi4pIF9fYXR0cmlidXRlX18oKGZvcm1hdCAocHJpbnRmLCAgMSAsICAgMiApKSkg
OwpHUHJpbnRGdW5jCWdfc2V0X3ByaW50X2hhbmRsZXIJKEdQcmludEZ1bmMJIGZ1bmMpOwp2b2lk
CQlnX3ByaW50ZXJyCQkoY29uc3QgZ2NoYXIJKmZvcm1hdCwKCQkJCQkgLi4uKSBfX2F0dHJpYnV0
ZV9fKChmb3JtYXQgKHByaW50ZiwgIDEgLCAgIDIgKSkpIDsKR1ByaW50RnVuYwlnX3NldF9wcmlu
dGVycl9oYW5kbGVyCShHUHJpbnRGdW5jCSBmdW5jKTsKCiAKdHlwZWRlZiB2b2lkCQkoKkdFcnJv
ckZ1bmMpCQkoY29uc3QgZ2NoYXIgKnN0cik7CnR5cGVkZWYgdm9pZAkJKCpHV2FybmluZ0Z1bmMp
CQkoY29uc3QgZ2NoYXIgKnN0cik7CkdFcnJvckZ1bmMgICBnX3NldF9lcnJvcl9oYW5kbGVyICAg
KEdFcnJvckZ1bmMJIGZ1bmMpOwpHV2FybmluZ0Z1bmMgZ19zZXRfd2FybmluZ19oYW5kbGVyIChH
V2FybmluZ0Z1bmMgZnVuYyk7CkdQcmludEZ1bmMgICBnX3NldF9tZXNzYWdlX2hhbmRsZXIgKEdQ
cmludEZ1bmMgZnVuYyk7CgoKIAoKCgoKCgoKCgoKZ3BvaW50ZXIgZ19tYWxsb2MgICAgICAoZ3Vs
b25nCSAgc2l6ZSk7Cmdwb2ludGVyIGdfbWFsbG9jMCAgICAgKGd1bG9uZwkgIHNpemUpOwpncG9p
bnRlciBnX3JlYWxsb2MgICAgIChncG9pbnRlciAgbWVtLAoJCQlndWxvbmcJICBzaXplKTsKdm9p
ZAkgZ19mcmVlCSAgICAgICAoZ3BvaW50ZXIgIG1lbSk7CgoKCnZvaWQJIGdfbWVtX3Byb2ZpbGUg
KHZvaWQpOwp2b2lkCSBnX21lbV9jaGVjayAgIChncG9pbnRlciAgbWVtKTsKCiAKCkdBbGxvY2F0
b3IqIGdfYWxsb2NhdG9yX25ldyAgIChjb25zdCBnY2hhciAgKm5hbWUsCgkJCSAgICAgICBndWlu
dCAgICAgICAgIG5fcHJlYWxsb2NzKTsKdm9pZCAgICAgICAgZ19hbGxvY2F0b3JfZnJlZSAgKEdB
bGxvY2F0b3IgICAqYWxsb2NhdG9yKTsKCgoKCgoKIAoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKR01l
bUNodW5rKiBnX21lbV9jaHVua19uZXcgICAgIChnY2hhcgkgICpuYW1lLAoJCQkJZ2ludAkgICBh
dG9tX3NpemUsCgkJCQlndWxvbmcJICAgYXJlYV9zaXplLAoJCQkJZ2ludAkgICB0eXBlKTsKdm9p
ZAkgICBnX21lbV9jaHVua19kZXN0cm95IChHTWVtQ2h1bmsgKm1lbV9jaHVuayk7Cmdwb2ludGVy
ICAgZ19tZW1fY2h1bmtfYWxsb2MgICAoR01lbUNodW5rICptZW1fY2h1bmspOwpncG9pbnRlciAg
IGdfbWVtX2NodW5rX2FsbG9jMCAgKEdNZW1DaHVuayAqbWVtX2NodW5rKTsKdm9pZAkgICBnX21l
bV9jaHVua19mcmVlICAgIChHTWVtQ2h1bmsgKm1lbV9jaHVuaywKCQkJCWdwb2ludGVyICAgbWVt
KTsKdm9pZAkgICBnX21lbV9jaHVua19jbGVhbiAgIChHTWVtQ2h1bmsgKm1lbV9jaHVuayk7CnZv
aWQJICAgZ19tZW1fY2h1bmtfcmVzZXQgICAoR01lbUNodW5rICptZW1fY2h1bmspOwp2b2lkCSAg
IGdfbWVtX2NodW5rX3ByaW50ICAgKEdNZW1DaHVuayAqbWVtX2NodW5rKTsKdm9pZAkgICBnX21l
bV9jaHVua19pbmZvICAgICh2b2lkKTsKCiAKCgoKCgoKCnZvaWQgZ19ibG93X2NodW5rcyAodm9p
ZCk7CgoKIAoKR1RpbWVyKiBnX3RpbWVyX25ldwkodm9pZCk7CnZvaWQJZ190aW1lcl9kZXN0cm95
IChHVGltZXIJICp0aW1lcik7CnZvaWQJZ190aW1lcl9zdGFydAkoR1RpbWVyCSAqdGltZXIpOwp2
b2lkCWdfdGltZXJfc3RvcAkoR1RpbWVyCSAqdGltZXIpOwp2b2lkCWdfdGltZXJfcmVzZXQJKEdU
aW1lcgkgKnRpbWVyKTsKZ2RvdWJsZSBnX3RpbWVyX2VsYXBzZWQgKEdUaW1lcgkgKnRpbWVyLAoJ
CQkgZ3Vsb25nCSAqbWljcm9zZWNvbmRzKTsKCgogCgoKCmdjaGFyKgkgZ19zdHJkZWxpbWl0CQko
Z2NoYXIJICAgICAqc3RyaW5nLAoJCQkJIGNvbnN0IGdjaGFyICpkZWxpbWl0ZXJzLAoJCQkJIGdj
aGFyCSAgICAgIG5ld19kZWxpbWl0ZXIpOwpnZG91YmxlCSBnX3N0cnRvZAkJKGNvbnN0IGdjaGFy
ICpucHRyLAoJCQkJIGdjaGFyCSAgICAqKmVuZHB0cik7CmdjaGFyKgkgZ19zdHJlcnJvcgkJKGdp
bnQJICAgICAgZXJybnVtKTsKZ2NoYXIqCSBnX3N0cnNpZ25hbAkJKGdpbnQJICAgICAgc2lnbnVt
KTsKZ2ludAkgZ19zdHJjYXNlY21wCQkoY29uc3QgZ2NoYXIgKnMxLAoJCQkJIGNvbnN0IGdjaGFy
ICpzMik7CmdpbnQJIGdfc3RybmNhc2VjbXAJCShjb25zdCBnY2hhciAqczEsCgkJCQkgY29uc3Qg
Z2NoYXIgKnMyLAoJCQkJIGd1aW50IAkgICAgICBuKTsKdm9pZAkgZ19zdHJkb3duCQkoZ2NoYXIJ
ICAgICAqc3RyaW5nKTsKdm9pZAkgZ19zdHJ1cAkJKGdjaGFyCSAgICAgKnN0cmluZyk7CnZvaWQJ
IGdfc3RycmV2ZXJzZQkJKGdjaGFyCSAgICAgKnN0cmluZyk7CiAKZ2NoYXIqICAgZ19zdHJjaHVn
ICAgICAgICAgICAgICAoZ2NoYXIgICAgICAgICpzdHJpbmcpOwogCmdjaGFyKiAgZ19zdHJjaG9t
cCAgICAgICAgICAgICAgKGdjaGFyICAgICAgICAqc3RyaW5nKTsKIAoKCiAKCgpnY2hhcioJIGdf
c3RyZHVwCQkoY29uc3QgZ2NoYXIgKnN0cik7CmdjaGFyKgkgZ19zdHJkdXBfcHJpbnRmCShjb25z
dCBnY2hhciAqZm9ybWF0LAoJCQkJIC4uLikgX19hdHRyaWJ1dGVfXygoZm9ybWF0IChwcmludGYs
ICAxICwgICAyICkpKSA7CmdjaGFyKgkgZ19zdHJkdXBfdnByaW50ZgkoY29uc3QgZ2NoYXIgKmZv
cm1hdCwKCQkJCSB2YV9saXN0ICAgICAgYXJncyk7CmdjaGFyKgkgZ19zdHJuZHVwCQkoY29uc3Qg
Z2NoYXIgKnN0ciwKCQkJCSBndWludAkgICAgICBuKTsKZ2NoYXIqCSBnX3N0cm5maWxsCQkoZ3Vp
bnQJICAgICAgbGVuZ3RoLAoJCQkJIGdjaGFyCSAgICAgIGZpbGxfY2hhcik7CmdjaGFyKgkgZ19z
dHJjb25jYXQJCShjb25zdCBnY2hhciAqc3RyaW5nMSwKCQkJCSAuLi4pOyAgCmdjaGFyKiAgIGdf
c3Ryam9pbgkJKGNvbnN0IGdjaGFyICAqc2VwYXJhdG9yLAoJCQkJIC4uLik7ICAKZ2NoYXIqCSBn
X3N0cmVzY2FwZQkJKGdjaGFyCSAgICAgICpzdHJpbmcpOwpncG9pbnRlciBnX21lbWR1cAkJKGdj
b25zdHBvaW50ZXIgbWVtLAoJCQkJIGd1aW50CSAgICAgICBieXRlX3NpemUpOwoKIAoKCgoKCgpn
Y2hhcioqCSBnX3N0cnNwbGl0CQkoY29uc3QgZ2NoYXIgICpzdHJpbmcsCgkJCQkgY29uc3QgZ2No
YXIgICpkZWxpbWl0ZXIsCgkJCQkgZ2ludCAgICAgICAgICBtYXhfdG9rZW5zKTsKZ2NoYXIqICAg
Z19zdHJqb2ludgkJKGNvbnN0IGdjaGFyICAqc2VwYXJhdG9yLAoJCQkJIGdjaGFyICAgICAgICoq
c3RyX2FycmF5KTsKdm9pZCAgICAgZ19zdHJmcmVldgkJKGdjaGFyICAgICAgICoqc3RyX2FycmF5
KTsKCgoKIAoKZ3VpbnQJZ19wcmludGZfc3RyaW5nX3VwcGVyX2JvdW5kIChjb25zdCBnY2hhciog
Zm9ybWF0LAoJCQkJICAgICB2YV9saXN0CSAgYXJncyk7CgoKIAoKZ2NoYXIqCWdfZ2V0X3VzZXJf
bmFtZQkJKHZvaWQpOwpnY2hhcioJZ19nZXRfcmVhbF9uYW1lCQkodm9pZCk7CmdjaGFyKglnX2dl
dF9ob21lX2RpcgkJKHZvaWQpOwpnY2hhcioJZ19nZXRfdG1wX2RpcgkJKHZvaWQpOwpnY2hhcioJ
Z19nZXRfcHJnbmFtZQkJKHZvaWQpOwp2b2lkCWdfc2V0X3ByZ25hbWUJCShjb25zdCBnY2hhciAq
cHJnbmFtZSk7CgoKIAoKZ3VpbnQJZ19wYXJzZV9kZWJ1Z19zdHJpbmcJKGNvbnN0IGdjaGFyICpz
dHJpbmcsCgkJCQkgR0RlYnVnS2V5ICAgKmtleXMsCgkJCQkgZ3VpbnQJICAgICAgbmtleXMpOwpn
aW50CWdfc25wcmludGYJCShnY2hhcgkgICAgICpzdHJpbmcsCgkJCQkgZ3Vsb25nCSAgICAgIG4s
CgkJCQkgZ2NoYXIgY29uc3QgKmZvcm1hdCwKCQkJCSAuLi4pIF9fYXR0cmlidXRlX18oKGZvcm1h
dCAocHJpbnRmLCAgMyAsICAgNCApKSkgOwpnaW50CWdfdnNucHJpbnRmCQkoZ2NoYXIJICAgICAq
c3RyaW5nLAoJCQkJIGd1bG9uZwkgICAgICBuLAoJCQkJIGdjaGFyIGNvbnN0ICpmb3JtYXQsCgkJ
CQkgdmFfbGlzdCAgICAgIGFyZ3MpOwpnY2hhcioJZ19iYXNlbmFtZQkJKGNvbnN0IGdjaGFyICpm
aWxlX25hbWUpOwogCmdib29sZWFuIGdfcGF0aF9pc19hYnNvbHV0ZQkoY29uc3QgZ2NoYXIgKmZp
bGVfbmFtZSk7CiAKZ2NoYXIqICBnX3BhdGhfc2tpcF9yb290CShnY2hhciAgICAgICAqZmlsZV9u
YW1lKTsKCiAKZ2NoYXIqCWdfZGlybmFtZQkJKGNvbnN0IGdjaGFyICpmaWxlX25hbWUpOwpnY2hh
cioJZ19nZXRfY3VycmVudF9kaXIJKHZvaWQpOwpnY2hhciogIGdfZ2V0ZW52CQkoY29uc3QgZ2No
YXIgKnZhcmlhYmxlKTsKCgogCgoKCgp2b2lkCWdfYXRleGl0CQkoR1ZvaWRGdW5jICAgIGZ1bmMp
OwoKCiAKCmV4dGVybiAgZ2ludAlnX2JpdF9udGhfbHNmIChndWludDMyIG1hc2ssCgkJCQkgICAg
ICAgZ2ludCAgICBudGhfYml0KTsKIyAxNTU5ICIvdXNyL2luY2x1ZGUvZ2xpYi5oIiAzCgoKZXh0
ZXJuICBnaW50CWdfYml0X250aF9tc2YgKGd1aW50MzIgbWFzaywKCQkJCSAgICAgICBnaW50ICAg
IG50aF9iaXQpOwojIDE1NzkgIi91c3IvaW5jbHVkZS9nbGliLmgiIDMKCgpleHRlcm4gIGd1aW50
CWdfYml0X3N0b3JhZ2UgKGd1aW50IG51bWJlcik7CiMgMTU5NiAiL3Vzci9pbmNsdWRlL2dsaWIu
aCIgMwoKCiAKCkdTdHJpbmdDaHVuayogZ19zdHJpbmdfY2h1bmtfbmV3CSAgIChnaW50IHNpemUp
Owp2b2lkCSAgICAgIGdfc3RyaW5nX2NodW5rX2ZyZWUJICAgKEdTdHJpbmdDaHVuayAqY2h1bmsp
OwpnY2hhcioJICAgICAgZ19zdHJpbmdfY2h1bmtfaW5zZXJ0CSAgIChHU3RyaW5nQ2h1bmsgKmNo
dW5rLAoJCQkJCSAgICBjb25zdCBnY2hhcgkgKnN0cmluZyk7CmdjaGFyKgkgICAgICBnX3N0cmlu
Z19jaHVua19pbnNlcnRfY29uc3QgIChHU3RyaW5nQ2h1bmsgKmNodW5rLAoJCQkJCSAgICBjb25z
dCBnY2hhcgkgKnN0cmluZyk7CgoKIAoKR1N0cmluZyogZ19zdHJpbmdfbmV3CSAgICAoY29uc3Qg
Z2NoYXIgKmluaXQpOwpHU3RyaW5nKiBnX3N0cmluZ19zaXplZF9uZXcgKGd1aW50CSAgZGZsX3Np
emUpOwp2b2lkCSBnX3N0cmluZ19mcmVlCSAgICAoR1N0cmluZwkgKnN0cmluZywKCQkJICAgICBn
aW50CSAgZnJlZV9zZWdtZW50KTsKR1N0cmluZyogZ19zdHJpbmdfYXNzaWduICAgIChHU3RyaW5n
CSAqbHZhbCwKCQkJICAgICBjb25zdCBnY2hhciAqcnZhbCk7CkdTdHJpbmcqIGdfc3RyaW5nX3Ry
dW5jYXRlICAoR1N0cmluZwkgKnN0cmluZywKCQkJICAgICBnaW50CSAgbGVuKTsKR1N0cmluZyog
Z19zdHJpbmdfYXBwZW5kICAgIChHU3RyaW5nCSAqc3RyaW5nLAoJCQkgICAgIGNvbnN0IGdjaGFy
ICp2YWwpOwpHU3RyaW5nKiBnX3N0cmluZ19hcHBlbmRfYyAgKEdTdHJpbmcJICpzdHJpbmcsCgkJ
CSAgICAgZ2NoYXIJICBjKTsKR1N0cmluZyogZ19zdHJpbmdfcHJlcGVuZCAgIChHU3RyaW5nCSAq
c3RyaW5nLAoJCQkgICAgIGNvbnN0IGdjaGFyICp2YWwpOwpHU3RyaW5nKiBnX3N0cmluZ19wcmVw
ZW5kX2MgKEdTdHJpbmcJICpzdHJpbmcsCgkJCSAgICAgZ2NoYXIJICBjKTsKR1N0cmluZyogZ19z
dHJpbmdfaW5zZXJ0ICAgIChHU3RyaW5nCSAqc3RyaW5nLAoJCQkgICAgIGdpbnQJICBwb3MsCgkJ
CSAgICAgY29uc3QgZ2NoYXIgKnZhbCk7CkdTdHJpbmcqIGdfc3RyaW5nX2luc2VydF9jICAoR1N0
cmluZwkgKnN0cmluZywKCQkJICAgICBnaW50CSAgcG9zLAoJCQkgICAgIGdjaGFyCSAgYyk7CkdT
dHJpbmcqIGdfc3RyaW5nX2VyYXNlCSAgICAoR1N0cmluZwkgKnN0cmluZywKCQkJICAgICBnaW50
CSAgcG9zLAoJCQkgICAgIGdpbnQJICBsZW4pOwpHU3RyaW5nKiBnX3N0cmluZ19kb3duCSAgICAo
R1N0cmluZwkgKnN0cmluZyk7CkdTdHJpbmcqIGdfc3RyaW5nX3VwCSAgICAoR1N0cmluZwkgKnN0
cmluZyk7CnZvaWQJIGdfc3RyaW5nX3NwcmludGYgICAoR1N0cmluZwkgKnN0cmluZywKCQkJICAg
ICBjb25zdCBnY2hhciAqZm9ybWF0LAoJCQkgICAgIC4uLikgX19hdHRyaWJ1dGVfXygoZm9ybWF0
IChwcmludGYsICAyICwgICAzICkpKSA7CnZvaWQJIGdfc3RyaW5nX3NwcmludGZhICAoR1N0cmlu
ZwkgKnN0cmluZywKCQkJICAgICBjb25zdCBnY2hhciAqZm9ybWF0LAoJCQkgICAgIC4uLikgX19h
dHRyaWJ1dGVfXygoZm9ybWF0IChwcmludGYsICAyICwgICAzICkpKSA7CgoKIAoKCgoKCgoKCgpH
QXJyYXkqIGdfYXJyYXlfbmV3CSAgICAgICAgICAoZ2Jvb2xlYW4JICAgIHplcm9fdGVybWluYXRl
ZCwKCQkJCSAgIGdib29sZWFuCSAgICBjbGVhciwKCQkJCSAgIGd1aW50CSAgICBlbGVtZW50X3Np
emUpOwp2b2lkCWdfYXJyYXlfZnJlZQkgICAgICAgICAgKEdBcnJheQkgICAqYXJyYXksCgkJCQkg
ICBnYm9vbGVhbgkgICAgZnJlZV9zZWdtZW50KTsKR0FycmF5KiBnX2FycmF5X2FwcGVuZF92YWxz
ICAgICAgIChHQXJyYXkJICAgKmFycmF5LAoJCQkJICAgZ2NvbnN0cG9pbnRlciAgICBkYXRhLAoJ
CQkJICAgZ3VpbnQJICAgIGxlbik7CkdBcnJheSogZ19hcnJheV9wcmVwZW5kX3ZhbHMgICAgICAo
R0FycmF5CSAgICphcnJheSwKCQkJCSAgIGdjb25zdHBvaW50ZXIgICAgZGF0YSwKCQkJCSAgIGd1
aW50CSAgICBsZW4pOwpHQXJyYXkqIGdfYXJyYXlfaW5zZXJ0X3ZhbHMgICAgICAgKEdBcnJheSAg
ICAgICAgICAqYXJyYXksCgkJCQkgICBndWludCAgICAgICAgICAgIGluZGV4LAoJCQkJICAgZ2Nv
bnN0cG9pbnRlciAgICBkYXRhLAoJCQkJICAgZ3VpbnQgICAgICAgICAgICBsZW4pOwpHQXJyYXkq
IGdfYXJyYXlfc2V0X3NpemUgICAgICAgICAgKEdBcnJheQkgICAqYXJyYXksCgkJCQkgICBndWlu
dAkgICAgbGVuZ3RoKTsKR0FycmF5KiBnX2FycmF5X3JlbW92ZV9pbmRleAkgIChHQXJyYXkJICAg
KmFycmF5LAoJCQkJICAgZ3VpbnQJICAgIGluZGV4KTsKR0FycmF5KiBnX2FycmF5X3JlbW92ZV9p
bmRleF9mYXN0IChHQXJyYXkJICAgKmFycmF5LAoJCQkJICAgZ3VpbnQJICAgIGluZGV4KTsKCiAK
CgoKCgpHUHRyQXJyYXkqICBnX3B0cl9hcnJheV9uZXcJCSAgICh2b2lkKTsKdm9pZAkgICAgZ19w
dHJfYXJyYXlfZnJlZQkJICAgKEdQdHJBcnJheQkqYXJyYXksCgkJCQkJICAgIGdib29sZWFuCSBm
cmVlX3NlZyk7CnZvaWQJICAgIGdfcHRyX2FycmF5X3NldF9zaXplCSAgIChHUHRyQXJyYXkJKmFy
cmF5LAoJCQkJCSAgICBnaW50CSBsZW5ndGgpOwpncG9pbnRlciAgICBnX3B0cl9hcnJheV9yZW1v
dmVfaW5kZXgJICAgKEdQdHJBcnJheQkqYXJyYXksCgkJCQkJICAgIGd1aW50CSBpbmRleCk7Cmdw
b2ludGVyICAgIGdfcHRyX2FycmF5X3JlbW92ZV9pbmRleF9mYXN0ICAoR1B0ckFycmF5CSphcnJh
eSwKCQkJCQkgICAgZ3VpbnQJIGluZGV4KTsKZ2Jvb2xlYW4gICAgZ19wdHJfYXJyYXlfcmVtb3Zl
CQkgICAoR1B0ckFycmF5CSphcnJheSwKCQkJCQkgICAgZ3BvaW50ZXIJIGRhdGEpOwpnYm9vbGVh
biAgICBnX3B0cl9hcnJheV9yZW1vdmVfZmFzdCAgICAgICAgKEdQdHJBcnJheQkqYXJyYXksCgkJ
CQkJICAgIGdwb2ludGVyCSBkYXRhKTsKdm9pZAkgICAgZ19wdHJfYXJyYXlfYWRkCQkgICAoR1B0
ckFycmF5CSphcnJheSwKCQkJCQkgICAgZ3BvaW50ZXIJIGRhdGEpOwoKIAoKCgpHQnl0ZUFycmF5
KiBnX2J5dGVfYXJyYXlfbmV3CSAgICAgICAgICAgKHZvaWQpOwp2b2lkCSAgICBnX2J5dGVfYXJy
YXlfZnJlZQkgICAgICAgICAgIChHQnl0ZUFycmF5CSAqYXJyYXksCgkJCQkJICAgIGdib29sZWFu
CSAgZnJlZV9zZWdtZW50KTsKR0J5dGVBcnJheSogZ19ieXRlX2FycmF5X2FwcGVuZAkgICAgICAg
ICAgIChHQnl0ZUFycmF5CSAqYXJyYXksCgkJCQkJICAgIGNvbnN0IGd1aW50OCAqZGF0YSwKCQkJ
CQkgICAgZ3VpbnQJICBsZW4pOwpHQnl0ZUFycmF5KiBnX2J5dGVfYXJyYXlfcHJlcGVuZCAgICAg
ICAgICAgKEdCeXRlQXJyYXkJICphcnJheSwKCQkJCQkgICAgY29uc3QgZ3VpbnQ4ICpkYXRhLAoJ
CQkJCSAgICBndWludAkgIGxlbik7CkdCeXRlQXJyYXkqIGdfYnl0ZV9hcnJheV9zZXRfc2l6ZSAg
ICAgICAgICAoR0J5dGVBcnJheQkgKmFycmF5LAoJCQkJCSAgICBndWludAkgIGxlbmd0aCk7CkdC
eXRlQXJyYXkqIGdfYnl0ZV9hcnJheV9yZW1vdmVfaW5kZXgJICAgKEdCeXRlQXJyYXkJICphcnJh
eSwKCQkJCQkgICAgZ3VpbnQJICBpbmRleCk7CkdCeXRlQXJyYXkqIGdfYnl0ZV9hcnJheV9yZW1v
dmVfaW5kZXhfZmFzdCAoR0J5dGVBcnJheQkgKmFycmF5LAoJCQkJCSAgICBndWludAkgIGluZGV4
KTsKCgogCgpnaW50ICBnX3N0cl9lcXVhbCAoZ2NvbnN0cG9pbnRlciAgIHYsCgkJICAgZ2NvbnN0
cG9pbnRlciAgIHYyKTsKZ3VpbnQgZ19zdHJfaGFzaCAgKGdjb25zdHBvaW50ZXIgICB2KTsKCmdp
bnQgIGdfaW50X2VxdWFsIChnY29uc3Rwb2ludGVyICAgdiwKCQkgICBnY29uc3Rwb2ludGVyICAg
djIpOwpndWludCBnX2ludF9oYXNoICAoZ2NvbnN0cG9pbnRlciAgIHYpOwoKIAoKCgoKCmd1aW50
IGdfZGlyZWN0X2hhc2ggIChnY29uc3Rwb2ludGVyIHYpOwpnaW50ICBnX2RpcmVjdF9lcXVhbCAo
Z2NvbnN0cG9pbnRlciB2LAoJCSAgICAgIGdjb25zdHBvaW50ZXIgdjIpOwoKCiAKCkdRdWFyawkg
IGdfcXVhcmtfdHJ5X3N0cmluZwkJKGNvbnN0IGdjaGFyCSpzdHJpbmcpOwpHUXVhcmsJICBnX3F1
YXJrX2Zyb21fc3RhdGljX3N0cmluZwkoY29uc3QgZ2NoYXIJKnN0cmluZyk7CkdRdWFyawkgIGdf
cXVhcmtfZnJvbV9zdHJpbmcJCShjb25zdCBnY2hhcgkqc3RyaW5nKTsKZ2NoYXIqCSAgZ19xdWFy
a190b19zdHJpbmcJCShHUXVhcmsJCSBxdWFyayk7CgoKIAoKdm9pZAkgIGdfZGF0YWxpc3RfaW5p
dAkJIChHRGF0YQkJICoqZGF0YWxpc3QpOwp2b2lkCSAgZ19kYXRhbGlzdF9jbGVhcgkJIChHRGF0
YQkJICoqZGF0YWxpc3QpOwpncG9pbnRlciAgZ19kYXRhbGlzdF9pZF9nZXRfZGF0YQkgKEdEYXRh
CQkgKipkYXRhbGlzdCwKCQkJCQkgIEdRdWFyawkgICBrZXlfaWQpOwp2b2lkCSAgZ19kYXRhbGlz
dF9pZF9zZXRfZGF0YV9mdWxsCSAoR0RhdGEJCSAqKmRhdGFsaXN0LAoJCQkJCSAgR1F1YXJrCSAg
IGtleV9pZCwKCQkJCQkgIGdwb2ludGVyCSAgIGRhdGEsCgkJCQkJICBHRGVzdHJveU5vdGlmeSAg
IGRlc3Ryb3lfZnVuYyk7CnZvaWQJICBnX2RhdGFsaXN0X2lkX3JlbW92ZV9ub19ub3RpZnkgKEdE
YXRhCQkgKipkYXRhbGlzdCwKCQkJCQkgIEdRdWFyawkgICBrZXlfaWQpOwp2b2lkCSAgZ19kYXRh
bGlzdF9mb3JlYWNoCQkgKEdEYXRhCQkgKipkYXRhbGlzdCwKCQkJCQkgIEdEYXRhRm9yZWFjaEZ1
bmMgZnVuYywKCQkJCQkgIGdwb2ludGVyCSAgIHVzZXJfZGF0YSk7CgoKCgoKCgoKCgoKCgoKCgog
Cgp2b2lkCSAgZ19kYXRhc2V0X2Rlc3Ryb3kJCShnY29uc3Rwb2ludGVyCSAgZGF0YXNldF9sb2Nh
dGlvbik7Cmdwb2ludGVyICBnX2RhdGFzZXRfaWRfZ2V0X2RhdGEJCShnY29uc3Rwb2ludGVyCSAg
ZGF0YXNldF9sb2NhdGlvbiwKCQkJCQkgR1F1YXJrCQkgIGtleV9pZCk7CnZvaWQJICBnX2RhdGFz
ZXRfaWRfc2V0X2RhdGFfZnVsbAkoZ2NvbnN0cG9pbnRlcgkgIGRhdGFzZXRfbG9jYXRpb24sCgkJ
CQkJIEdRdWFyawkJICBrZXlfaWQsCgkJCQkJIGdwb2ludGVyCSAgZGF0YSwKCQkJCQkgR0Rlc3Ry
b3lOb3RpZnkJICBkZXN0cm95X2Z1bmMpOwp2b2lkCSAgZ19kYXRhc2V0X2lkX3JlbW92ZV9ub19u
b3RpZnkJKGdjb25zdHBvaW50ZXIJICBkYXRhc2V0X2xvY2F0aW9uLAoJCQkJCSBHUXVhcmsJCSAg
a2V5X2lkKTsKdm9pZAkgIGdfZGF0YXNldF9mb3JlYWNoCQkoZ2NvbnN0cG9pbnRlcgkgIGRhdGFz
ZXRfbG9jYXRpb24sCgkJCQkJIEdEYXRhRm9yZWFjaEZ1bmMgZnVuYywKCQkJCQkgZ3BvaW50ZXIJ
ICB1c2VyX2RhdGEpOwoKCgoKCgoKCgoKCgoKCgoKIAoKCiAKCgoKCgoKCgoKCgogCnR5cGVkZWYg
ZW51bQp7CiAgR19FUlJfVU5LTk9XTiwKICBHX0VSUl9VTkVYUF9FT0YsCiAgR19FUlJfVU5FWFBf
RU9GX0lOX1NUUklORywKICBHX0VSUl9VTkVYUF9FT0ZfSU5fQ09NTUVOVCwKICBHX0VSUl9OT05f
RElHSVRfSU5fQ09OU1QsCiAgR19FUlJfRElHSVRfUkFESVgsCiAgR19FUlJfRkxPQVRfUkFESVgs
CiAgR19FUlJfRkxPQVRfTUFMRk9STUVECn0gR0Vycm9yVHlwZTsKCiAKdHlwZWRlZiBlbnVtCnsK
ICBHX1RPS0VOX0VPRgkJCT0gICAwLAogIAogIEdfVE9LRU5fTEVGVF9QQVJFTgkJPSAnKCcsCiAg
R19UT0tFTl9SSUdIVF9QQVJFTgkJPSAnKScsCiAgR19UT0tFTl9MRUZUX0NVUkxZCQk9ICd7JywK
ICBHX1RPS0VOX1JJR0hUX0NVUkxZCQk9ICd9JywKICBHX1RPS0VOX0xFRlRfQlJBQ0UJCT0gJ1sn
LAogIEdfVE9LRU5fUklHSFRfQlJBQ0UJCT0gJ10nLAogIEdfVE9LRU5fRVFVQUxfU0lHTgkJPSAn
PScsCiAgR19UT0tFTl9DT01NQQkJCT0gJywnLAogIAogIEdfVE9LRU5fTk9ORQkJCT0gMjU2LAog
IAogIEdfVE9LRU5fRVJST1IsCiAgCiAgR19UT0tFTl9DSEFSLAogIEdfVE9LRU5fQklOQVJZLAog
IEdfVE9LRU5fT0NUQUwsCiAgR19UT0tFTl9JTlQsCiAgR19UT0tFTl9IRVgsCiAgR19UT0tFTl9G
TE9BVCwKICBHX1RPS0VOX1NUUklORywKICAKICBHX1RPS0VOX1NZTUJPTCwKICBHX1RPS0VOX0lE
RU5USUZJRVIsCiAgR19UT0tFTl9JREVOVElGSUVSX05VTEwsCiAgCiAgR19UT0tFTl9DT01NRU5U
X1NJTkdMRSwKICBHX1RPS0VOX0NPTU1FTlRfTVVMVEksCiAgR19UT0tFTl9MQVNUCn0gR1Rva2Vu
VHlwZTsKCnVuaW9uCV9HVG9rZW5WYWx1ZQp7CiAgZ3BvaW50ZXIJdl9zeW1ib2w7CiAgZ2NoYXIJ
CSp2X2lkZW50aWZpZXI7CiAgZ3Vsb25nCXZfYmluYXJ5OwogIGd1bG9uZwl2X29jdGFsOwogIGd1
bG9uZwl2X2ludDsKICBnZG91YmxlCXZfZmxvYXQ7CiAgZ3Vsb25nCXZfaGV4OwogIGdjaGFyCQkq
dl9zdHJpbmc7CiAgZ2NoYXIJCSp2X2NvbW1lbnQ7CiAgZ3VjaGFyCXZfY2hhcjsKICBndWludAkJ
dl9lcnJvcjsKfTsKCnN0cnVjdAlfR1NjYW5uZXJDb25maWcKewogICAKCiAgZ2NoYXIJCSpjc2V0
X3NraXBfY2hhcmFjdGVyczsJCSAKICBnY2hhcgkJKmNzZXRfaWRlbnRpZmllcl9maXJzdDsKICBn
Y2hhcgkJKmNzZXRfaWRlbnRpZmllcl9udGg7CiAgZ2NoYXIJCSpjcGFpcl9jb21tZW50X3Npbmds
ZTsJCSAKICAKICAgCgogIGd1aW50CQljYXNlX3NlbnNpdGl2ZSA6IDE7CiAgCiAgIAoKCiAgZ3Vp
bnQJCXNraXBfY29tbWVudF9tdWx0aSA6IDE7CQkgCiAgZ3VpbnQJCXNraXBfY29tbWVudF9zaW5n
bGUgOiAxOwkgCiAgZ3VpbnQJCXNjYW5fY29tbWVudF9tdWx0aSA6IDE7CQkgCiAgZ3VpbnQJCXNj
YW5faWRlbnRpZmllciA6IDE7CiAgZ3VpbnQJCXNjYW5faWRlbnRpZmllcl8xY2hhciA6IDE7CiAg
Z3VpbnQJCXNjYW5faWRlbnRpZmllcl9OVUxMIDogMTsKICBndWludAkJc2Nhbl9zeW1ib2xzIDog
MTsKICBndWludAkJc2Nhbl9iaW5hcnkgOiAxOwogIGd1aW50CQlzY2FuX29jdGFsIDogMTsKICBn
dWludAkJc2Nhbl9mbG9hdCA6IDE7CiAgZ3VpbnQJCXNjYW5faGV4IDogMTsJCQkgCiAgZ3VpbnQJ
CXNjYW5faGV4X2RvbGxhciA6IDE7CQkgCiAgZ3VpbnQJCXNjYW5fc3RyaW5nX3NxIDogMTsJCSAK
ICBndWludAkJc2Nhbl9zdHJpbmdfZHEgOiAxOwkJIAogIGd1aW50CQludW1iZXJzXzJfaW50IDog
MTsJCSAKICBndWludAkJaW50XzJfZmxvYXQgOiAxOwkJIAogIGd1aW50CQlpZGVudGlmaWVyXzJf
c3RyaW5nIDogMTsKICBndWludAkJY2hhcl8yX3Rva2VuIDogMTsJCSAKICBndWludAkJc3ltYm9s
XzJfdG9rZW4gOiAxOwogIGd1aW50CQlzY29wZV8wX2ZhbGxiYWNrIDogMTsJCSAKfTsKCnN0cnVj
dAlfR1NjYW5uZXIKewogICAKICBncG9pbnRlcgkJdXNlcl9kYXRhOwogIGd1aW50CQkJbWF4X3Bh
cnNlX2Vycm9yczsKICAKICAgCiAgZ3VpbnQJCQlwYXJzZV9lcnJvcnM7CiAgCiAgIAogIGNvbnN0
IGdjaGFyCQkqaW5wdXRfbmFtZTsKICAKICAgCiAgZ3BvaW50ZXIJCWRlcml2ZWRfZGF0YTsKICAK
ICAgCiAgR1NjYW5uZXJDb25maWcJKmNvbmZpZzsKICAKICAgCiAgR1Rva2VuVHlwZQkJdG9rZW47
CiAgR1Rva2VuVmFsdWUJCXZhbHVlOwogIGd1aW50CQkJbGluZTsKICBndWludAkJCXBvc2l0aW9u
OwogIAogICAKICBHVG9rZW5UeXBlCQluZXh0X3Rva2VuOwogIEdUb2tlblZhbHVlCQluZXh0X3Zh
bHVlOwogIGd1aW50CQkJbmV4dF9saW5lOwogIGd1aW50CQkJbmV4dF9wb3NpdGlvbjsKICAKICAg
CiAgR0hhc2hUYWJsZQkJKnN5bWJvbF90YWJsZTsKICBnaW50CQkJaW5wdXRfZmQ7CiAgY29uc3Qg
Z2NoYXIJCSp0ZXh0OwogIGNvbnN0IGdjaGFyCQkqdGV4dF9lbmQ7CiAgZ2NoYXIJCQkqYnVmZmVy
OwogIGd1aW50CQkJc2NvcGVfaWQ7CiAgCiAgIAogIEdTY2FubmVyTXNnRnVuYwltc2dfaGFuZGxl
cjsKfTsKCkdTY2FubmVyKglnX3NjYW5uZXJfbmV3CQkJKEdTY2FubmVyQ29uZmlnICpjb25maWdf
dGVtcGwpOwp2b2lkCQlnX3NjYW5uZXJfZGVzdHJveQkJKEdTY2FubmVyCSpzY2FubmVyKTsKdm9p
ZAkJZ19zY2FubmVyX2lucHV0X2ZpbGUJCShHU2Nhbm5lcgkqc2Nhbm5lciwKCQkJCQkJIGdpbnQJ
CWlucHV0X2ZkKTsKdm9pZAkJZ19zY2FubmVyX3N5bmNfZmlsZV9vZmZzZXQJKEdTY2FubmVyCSpz
Y2FubmVyKTsKdm9pZAkJZ19zY2FubmVyX2lucHV0X3RleHQJCShHU2Nhbm5lcgkqc2Nhbm5lciwK
CQkJCQkJIGNvbnN0CWdjaGFyCSp0ZXh0LAoJCQkJCQkgZ3VpbnQJCXRleHRfbGVuKTsKR1Rva2Vu
VHlwZQlnX3NjYW5uZXJfZ2V0X25leHRfdG9rZW4JKEdTY2FubmVyCSpzY2FubmVyKTsKR1Rva2Vu
VHlwZQlnX3NjYW5uZXJfcGVla19uZXh0X3Rva2VuCShHU2Nhbm5lcgkqc2Nhbm5lcik7CkdUb2tl
blR5cGUJZ19zY2FubmVyX2N1cl90b2tlbgkJKEdTY2FubmVyCSpzY2FubmVyKTsKR1Rva2VuVmFs
dWUJZ19zY2FubmVyX2N1cl92YWx1ZQkJKEdTY2FubmVyCSpzY2FubmVyKTsKZ3VpbnQJCWdfc2Nh
bm5lcl9jdXJfbGluZQkJKEdTY2FubmVyCSpzY2FubmVyKTsKZ3VpbnQJCWdfc2Nhbm5lcl9jdXJf
cG9zaXRpb24JCShHU2Nhbm5lcgkqc2Nhbm5lcik7Cmdib29sZWFuCWdfc2Nhbm5lcl9lb2YJCQko
R1NjYW5uZXIJKnNjYW5uZXIpOwpndWludAkJZ19zY2FubmVyX3NldF9zY29wZQkJKEdTY2FubmVy
CSpzY2FubmVyLAoJCQkJCQkgZ3VpbnQJCSBzY29wZV9pZCk7CnZvaWQJCWdfc2Nhbm5lcl9zY29w
ZV9hZGRfc3ltYm9sCShHU2Nhbm5lcgkqc2Nhbm5lciwKCQkJCQkJIGd1aW50CQkgc2NvcGVfaWQs
CgkJCQkJCSBjb25zdCBnY2hhcgkqc3ltYm9sLAoJCQkJCQkgZ3BvaW50ZXIJdmFsdWUpOwp2b2lk
CQlnX3NjYW5uZXJfc2NvcGVfcmVtb3ZlX3N5bWJvbAkoR1NjYW5uZXIJKnNjYW5uZXIsCgkJCQkJ
CSBndWludAkJIHNjb3BlX2lkLAoJCQkJCQkgY29uc3QgZ2NoYXIJKnN5bWJvbCk7Cmdwb2ludGVy
CWdfc2Nhbm5lcl9zY29wZV9sb29rdXBfc3ltYm9sCShHU2Nhbm5lcgkqc2Nhbm5lciwKCQkJCQkJ
IGd1aW50CQkgc2NvcGVfaWQsCgkJCQkJCSBjb25zdCBnY2hhcgkqc3ltYm9sKTsKdm9pZAkJZ19z
Y2FubmVyX3Njb3BlX2ZvcmVhY2hfc3ltYm9sCShHU2Nhbm5lcgkqc2Nhbm5lciwKCQkJCQkJIGd1
aW50CQkgc2NvcGVfaWQsCgkJCQkJCSBHSEZ1bmMJCSBmdW5jLAoJCQkJCQkgZ3BvaW50ZXIJIHVz
ZXJfZGF0YSk7Cmdwb2ludGVyCWdfc2Nhbm5lcl9sb29rdXBfc3ltYm9sCQkoR1NjYW5uZXIJKnNj
YW5uZXIsCgkJCQkJCSBjb25zdCBnY2hhcgkqc3ltYm9sKTsKdm9pZAkJZ19zY2FubmVyX2ZyZWV6
ZV9zeW1ib2xfdGFibGUJKEdTY2FubmVyCSpzY2FubmVyKTsKdm9pZAkJZ19zY2FubmVyX3RoYXdf
c3ltYm9sX3RhYmxlCShHU2Nhbm5lcgkqc2Nhbm5lcik7CnZvaWQJCWdfc2Nhbm5lcl91bmV4cF90
b2tlbgkJKEdTY2FubmVyCSpzY2FubmVyLAoJCQkJCQkgR1Rva2VuVHlwZQlleHBlY3RlZF90b2tl
biwKCQkJCQkJIGNvbnN0IGdjaGFyCSppZGVudGlmaWVyX3NwZWMsCgkJCQkJCSBjb25zdCBnY2hh
cgkqc3ltYm9sX3NwZWMsCgkJCQkJCSBjb25zdCBnY2hhcgkqc3ltYm9sX25hbWUsCgkJCQkJCSBj
b25zdCBnY2hhcgkqbWVzc2FnZSwKCQkJCQkJIGdpbnQJCSBpc19lcnJvcik7CnZvaWQJCWdfc2Nh
bm5lcl9lcnJvcgkJCShHU2Nhbm5lcgkqc2Nhbm5lciwKCQkJCQkJIGNvbnN0IGdjaGFyCSpmb3Jt
YXQsCgkJCQkJCSAuLi4pIF9fYXR0cmlidXRlX18oKGZvcm1hdCAocHJpbnRmLCAgMiAsICAzICkp
KSA7CnZvaWQJCWdfc2Nhbm5lcl93YXJuCQkJKEdTY2FubmVyCSpzY2FubmVyLAoJCQkJCQkgY29u
c3QgZ2NoYXIJKmZvcm1hdCwKCQkJCQkJIC4uLikgX19hdHRyaWJ1dGVfXygoZm9ybWF0IChwcmlu
dGYsICAyICwgIDMgKSkpIDsKZ2ludAkJZ19zY2FubmVyX3N0YXRfbW9kZQkJKGNvbnN0IGdjaGFy
CSpmaWxlbmFtZSk7CiAKCgoKCgoKCgoKCgogCgoKc3RydWN0IF9HQ29tcGxldGlvbgp7CiAgR0xp
c3QqIGl0ZW1zOwogIEdDb21wbGV0aW9uRnVuYyBmdW5jOwogIAogIGdjaGFyKiBwcmVmaXg7CiAg
R0xpc3QqIGNhY2hlOwp9OwoKR0NvbXBsZXRpb24qIGdfY29tcGxldGlvbl9uZXcJICAgICAgIChH
Q29tcGxldGlvbkZ1bmMgZnVuYyk7CnZvaWQJICAgICBnX2NvbXBsZXRpb25fYWRkX2l0ZW1zICAg
IChHQ29tcGxldGlvbioJY21wLAoJCQkJCUdMaXN0KgkJaXRlbXMpOwp2b2lkCSAgICAgZ19jb21w
bGV0aW9uX3JlbW92ZV9pdGVtcyAoR0NvbXBsZXRpb24qCWNtcCwKCQkJCQlHTGlzdCoJCWl0ZW1z
KTsKdm9pZAkgICAgIGdfY29tcGxldGlvbl9jbGVhcl9pdGVtcyAgKEdDb21wbGV0aW9uKgljbXAp
OwpHTGlzdCoJICAgICBnX2NvbXBsZXRpb25fY29tcGxldGUgICAgIChHQ29tcGxldGlvbioJY21w
LAoJCQkJCWdjaGFyKgkJcHJlZml4LAoJCQkJCWdjaGFyKioJCW5ld19wcmVmaXgpOwp2b2lkCSAg
ICAgZ19jb21wbGV0aW9uX2ZyZWUJICAgICAgIChHQ29tcGxldGlvbioJY21wKTsKCgogCgoKCgoK
CgoKdHlwZWRlZiBndWludDE2IEdEYXRlWWVhcjsKdHlwZWRlZiBndWludDggIEdEYXRlRGF5OyAg
ICAKdHlwZWRlZiBzdHJ1Y3QgX0dEYXRlIEdEYXRlOwogCnN0cnVjdCB0bTsKCiAKdHlwZWRlZiBl
bnVtCnsKICBHX0RBVEVfREFZICAgPSAwLAogIEdfREFURV9NT05USCA9IDEsCiAgR19EQVRFX1lF
QVIgID0gMgp9IEdEYXRlRE1ZOwoKIAp0eXBlZGVmIGVudW0KewogIEdfREFURV9CQURfV0VFS0RB
WSAgPSAwLAogIEdfREFURV9NT05EQVkgICAgICAgPSAxLAogIEdfREFURV9UVUVTREFZICAgICAg
PSAyLAogIEdfREFURV9XRURORVNEQVkgICAgPSAzLAogIEdfREFURV9USFVSU0RBWSAgICAgPSA0
LAogIEdfREFURV9GUklEQVkgICAgICAgPSA1LAogIEdfREFURV9TQVRVUkRBWSAgICAgPSA2LAog
IEdfREFURV9TVU5EQVkgICAgICAgPSA3Cn0gR0RhdGVXZWVrZGF5Owp0eXBlZGVmIGVudW0Kewog
IEdfREFURV9CQURfTU9OVEggPSAwLAogIEdfREFURV9KQU5VQVJZICAgPSAxLAogIEdfREFURV9G
RUJSVUFSWSAgPSAyLAogIEdfREFURV9NQVJDSCAgICAgPSAzLAogIEdfREFURV9BUFJJTCAgICAg
PSA0LAogIEdfREFURV9NQVkgICAgICAgPSA1LAogIEdfREFURV9KVU5FICAgICAgPSA2LAogIEdf
REFURV9KVUxZICAgICAgPSA3LAogIEdfREFURV9BVUdVU1QgICAgPSA4LAogIEdfREFURV9TRVBU
RU1CRVIgPSA5LAogIEdfREFURV9PQ1RPQkVSICAgPSAxMCwKICBHX0RBVEVfTk9WRU1CRVIgID0g
MTEsCiAgR19EQVRFX0RFQ0VNQkVSICA9IDEyCn0gR0RhdGVNb250aDsKCgoKCgogCgoKCgpzdHJ1
Y3QgX0dEYXRlCnsgCiAgZ3VpbnQganVsaWFuX2RheXMgOiAzMjsgIAoKCgoKCiAgZ3VpbnQganVs
aWFuIDogMTsgICAgIAogIGd1aW50IGRteSAgICA6IDE7ICAgICAKCiAgIAogIGd1aW50IGRheSAg
ICA6IDY7ICAKICBndWludCBtb250aCAgOiA0OyAKICBndWludCB5ZWFyICAgOiAxNjsgCn07Cgog
CgoKCkdEYXRlKiAgICAgICBnX2RhdGVfbmV3ICAgICAgICAgICAgICAgICAgICh2b2lkKTsKR0Rh
dGUqICAgICAgIGdfZGF0ZV9uZXdfZG15ICAgICAgICAgICAgICAgKEdEYXRlRGF5ICAgICBkYXks
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RhdGVNb250aCAg
IG1vbnRoLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEYXRl
WWVhciAgICB5ZWFyKTsKR0RhdGUqICAgICAgIGdfZGF0ZV9uZXdfanVsaWFuICAgICAgICAgICAg
KGd1aW50MzIgICAgICBqdWxpYW5fZGF5KTsKdm9pZCAgICAgICAgIGdfZGF0ZV9mcmVlICAgICAg
ICAgICAgICAgICAgKEdEYXRlICAgICAgICpkYXRlKTsKCiAKCgoKCmdib29sZWFuICAgICBnX2Rh
dGVfdmFsaWQgICAgICAgICAgICAgICAgIChHRGF0ZSAgICAgICAqZGF0ZSk7Cmdib29sZWFuICAg
ICBnX2RhdGVfdmFsaWRfZGF5ICAgICAgICAgICAgIChHRGF0ZURheSAgICAgZGF5KTsKZ2Jvb2xl
YW4gICAgIGdfZGF0ZV92YWxpZF9tb250aCAgICAgICAgICAgKEdEYXRlTW9udGggICBtb250aCk7
Cmdib29sZWFuICAgICBnX2RhdGVfdmFsaWRfeWVhciAgICAgICAgICAgIChHRGF0ZVllYXIgICAg
eWVhcik7Cmdib29sZWFuICAgICBnX2RhdGVfdmFsaWRfd2Vla2RheSAgICAgICAgIChHRGF0ZVdl
ZWtkYXkgd2Vla2RheSk7Cmdib29sZWFuICAgICBnX2RhdGVfdmFsaWRfanVsaWFuICAgICAgICAg
IChndWludDMyICAgICAganVsaWFuX2RhdGUpOwpnYm9vbGVhbiAgICAgZ19kYXRlX3ZhbGlkX2Rt
eSAgICAgICAgICAgICAoR0RhdGVEYXkgICAgIGRheSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdEYXRlTW9udGggICBtb250aCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdEYXRlWWVhciAgICB5ZWFyKTsKCkdEYXRlV2Vla2Rh
eSBnX2RhdGVfd2Vla2RheSAgICAgICAgICAgICAgIChHRGF0ZSAgICAgICAqZGF0ZSk7CkdEYXRl
TW9udGggICBnX2RhdGVfbW9udGggICAgICAgICAgICAgICAgIChHRGF0ZSAgICAgICAqZGF0ZSk7
CkdEYXRlWWVhciAgICBnX2RhdGVfeWVhciAgICAgICAgICAgICAgICAgIChHRGF0ZSAgICAgICAq
ZGF0ZSk7CkdEYXRlRGF5ICAgICBnX2RhdGVfZGF5ICAgICAgICAgICAgICAgICAgIChHRGF0ZSAg
ICAgICAqZGF0ZSk7Cmd1aW50MzIgICAgICBnX2RhdGVfanVsaWFuICAgICAgICAgICAgICAgIChH
RGF0ZSAgICAgICAqZGF0ZSk7Cmd1aW50ICAgICAgICBnX2RhdGVfZGF5X29mX3llYXIgICAgICAg
ICAgIChHRGF0ZSAgICAgICAqZGF0ZSk7CgogCgoKCgoKZ3VpbnQgICAgICAgIGdfZGF0ZV9tb25k
YXlfd2Vla19vZl95ZWFyICAgKEdEYXRlICAgICAgKmRhdGUpOwpndWludCAgICAgICAgZ19kYXRl
X3N1bmRheV93ZWVrX29mX3llYXIgICAoR0RhdGUgICAgICAqZGF0ZSk7CgogCgoKCnZvaWQgICAg
ICAgICBnX2RhdGVfY2xlYXIgICAgICAgICAgICAgICAgIChHRGF0ZSAgICAgICAqZGF0ZSwgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgbl9k
YXRlcyk7CgogCgoKCnZvaWQgICAgICAgICBnX2RhdGVfc2V0X3BhcnNlICAgICAgICAgICAgIChH
RGF0ZSAgICAgICAqZGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdjaGFyICpzdHIpOwp2b2lkICAgICAgICAgZ19kYXRlX3NldF90aW1lICAgICAg
ICAgICAgICAoR0RhdGUgICAgICAgKmRhdGUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR1RpbWUgICAgICAgIHRpbWUpOwp2b2lkICAgICAgICAgZ19kYXRlX3Nl
dF9tb250aCAgICAgICAgICAgICAoR0RhdGUgICAgICAgKmRhdGUsIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RhdGVNb250aCAgIG1vbnRoKTsKdm9pZCAgICAg
ICAgIGdfZGF0ZV9zZXRfZGF5ICAgICAgICAgICAgICAgKEdEYXRlICAgICAgICpkYXRlLCAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEYXRlRGF5ICAgICBkYXkp
Owp2b2lkICAgICAgICAgZ19kYXRlX3NldF95ZWFyICAgICAgICAgICAgICAoR0RhdGUgICAgICAg
KmRhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRGF0ZVll
YXIgICAgeWVhcik7CnZvaWQgICAgICAgICBnX2RhdGVfc2V0X2RteSAgICAgICAgICAgICAgIChH
RGF0ZSAgICAgICAqZGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdEYXRlRGF5ICAgICBkYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHRGF0ZU1vbnRoICAgbW9udGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHRGF0ZVllYXIgICAgeSk7CnZvaWQgICAgICAgICBnX2RhdGVfc2V0X2p1
bGlhbiAgICAgICAgICAgIChHRGF0ZSAgICAgICAqZGF0ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGd1aW50MzIgICAgICBqdWxpYW5fZGF0ZSk7Cmdib29sZWFu
ICAgICBnX2RhdGVfaXNfZmlyc3Rfb2ZfbW9udGggICAgIChHRGF0ZSAgICAgICAqZGF0ZSk7Cmdi
b29sZWFuICAgICBnX2RhdGVfaXNfbGFzdF9vZl9tb250aCAgICAgIChHRGF0ZSAgICAgICAqZGF0
ZSk7CgogCnZvaWQgICAgICAgICBnX2RhdGVfYWRkX2RheXMgICAgICAgICAgICAgIChHRGF0ZSAg
ICAgICAqZGF0ZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
dWludCAgICAgICAgbl9kYXlzKTsKdm9pZCAgICAgICAgIGdfZGF0ZV9zdWJ0cmFjdF9kYXlzICAg
ICAgICAgKEdEYXRlICAgICAgICpkYXRlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGd1aW50ICAgICAgICBuX2RheXMpOwoKIAp2b2lkICAgICAgICAgZ19kYXRl
X2FkZF9tb250aHMgICAgICAgICAgICAoR0RhdGUgICAgICAgKmRhdGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgbl9tb250aHMpOwp2b2lk
ICAgICAgICAgZ19kYXRlX3N1YnRyYWN0X21vbnRocyAgICAgICAoR0RhdGUgICAgICAgKmRhdGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAg
bl9tb250aHMpOwoKIAp2b2lkICAgICAgICAgZ19kYXRlX2FkZF95ZWFycyAgICAgICAgICAgICAo
R0RhdGUgICAgICAgKmRhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBndWludCAgICAgICAgbl95ZWFycyk7CnZvaWQgICAgICAgICBnX2RhdGVfc3VidHJhY3Rf
eWVhcnMgICAgICAgIChHRGF0ZSAgICAgICAqZGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICBuX3llYXJzKTsKZ2Jvb2xlYW4gICAgIGdf
ZGF0ZV9pc19sZWFwX3llYXIgICAgICAgICAgKEdEYXRlWWVhciAgICB5ZWFyKTsKZ3VpbnQ4ICAg
ICAgIGdfZGF0ZV9kYXlzX2luX21vbnRoICAgICAgICAgKEdEYXRlTW9udGggICBtb250aCwgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRGF0ZVllYXIgICAgeWVh
cik7Cmd1aW50OCAgICAgICBnX2RhdGVfbW9uZGF5X3dlZWtzX2luX3llYXIgIChHRGF0ZVllYXIg
ICAgeWVhcik7Cmd1aW50OCAgICAgICBnX2RhdGVfc3VuZGF5X3dlZWtzX2luX3llYXIgIChHRGF0
ZVllYXIgICAgeWVhcik7CgogCmdpbnQgICAgICAgICBnX2RhdGVfY29tcGFyZSAgICAgICAgICAg
ICAgIChHRGF0ZSAgICAgICAqbGhzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0RhdGUgICAgICAgKnJocyk7CnZvaWQgICAgICAgICBnX2RhdGVfdG9fc3RydWN0
X3RtICAgICAgICAgIChHRGF0ZSAgICAgICAqZGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0bSAgICp0bSk7CgogCgoKZ3NpemUgICAgICAgIGdf
ZGF0ZV9zdHJmdGltZSAgICAgICAgICAgICAgKGdjaGFyICAgICAgICpzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3NpemUgICAgICAgIHNsZW4sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqZm9ybWF0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RhdGUgICAgICAgKmRh
dGUpOwoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCkdSZWxhdGlvbiogZ19yZWxhdGlvbl9uZXcg
ICAgIChnaW50CSAgICBmaWVsZHMpOwp2b2lkCSAgIGdfcmVsYXRpb25fZGVzdHJveSAoR1JlbGF0
aW9uICAgKnJlbGF0aW9uKTsKdm9pZAkgICBnX3JlbGF0aW9uX2luZGV4ICAgKEdSZWxhdGlvbiAg
ICpyZWxhdGlvbiwKCQkJICAgICAgIGdpbnQJICAgIGZpZWxkLAoJCQkgICAgICAgR0hhc2hGdW5j
ICAgIGhhc2hfZnVuYywKCQkJICAgICAgIEdDb21wYXJlRnVuYyBrZXlfY29tcGFyZV9mdW5jKTsK
dm9pZAkgICBnX3JlbGF0aW9uX2luc2VydCAgKEdSZWxhdGlvbiAgICpyZWxhdGlvbiwKCQkJICAg
ICAgIC4uLik7CmdpbnQJICAgZ19yZWxhdGlvbl9kZWxldGUgIChHUmVsYXRpb24gICAqcmVsYXRp
b24sCgkJCSAgICAgICBnY29uc3Rwb2ludGVyICBrZXksCgkJCSAgICAgICBnaW50CSAgICBmaWVs
ZCk7CkdUdXBsZXMqICAgZ19yZWxhdGlvbl9zZWxlY3QgIChHUmVsYXRpb24gICAqcmVsYXRpb24s
CgkJCSAgICAgICBnY29uc3Rwb2ludGVyICBrZXksCgkJCSAgICAgICBnaW50CSAgICBmaWVsZCk7
CmdpbnQJICAgZ19yZWxhdGlvbl9jb3VudCAgIChHUmVsYXRpb24gICAqcmVsYXRpb24sCgkJCSAg
ICAgICBnY29uc3Rwb2ludGVyICBrZXksCgkJCSAgICAgICBnaW50CSAgICBmaWVsZCk7Cmdib29s
ZWFuICAgZ19yZWxhdGlvbl9leGlzdHMgIChHUmVsYXRpb24gICAqcmVsYXRpb24sCgkJCSAgICAg
ICAuLi4pOwp2b2lkCSAgIGdfcmVsYXRpb25fcHJpbnQgICAoR1JlbGF0aW9uICAgKnJlbGF0aW9u
KTsKCnZvaWQJICAgZ190dXBsZXNfZGVzdHJveSAgIChHVHVwbGVzCSAgICp0dXBsZXMpOwpncG9p
bnRlciAgIGdfdHVwbGVzX2luZGV4ICAgICAoR1R1cGxlcwkgICAqdHVwbGVzLAoJCQkgICAgICAg
Z2ludAkgICAgaW5kZXgsCgkJCSAgICAgICBnaW50CSAgICBmaWVsZCk7CgoKIAoKCiAKCgoKCgpn
dWludAkgICBnX3NwYWNlZF9wcmltZXNfY2xvc2VzdCAoZ3VpbnQgbnVtKTsKCgogCgoKdHlwZWRl
ZiBzdHJ1Y3QgX0dJT0Z1bmNzIEdJT0Z1bmNzOwp0eXBlZGVmIGVudW0KewogIEdfSU9fRVJST1Jf
Tk9ORSwKICBHX0lPX0VSUk9SX0FHQUlOLAogIEdfSU9fRVJST1JfSU5WQUwsCiAgR19JT19FUlJP
Ul9VTktOT1dOCn0gR0lPRXJyb3I7CnR5cGVkZWYgZW51bQp7CiAgR19TRUVLX0NVUiwKICBHX1NF
RUtfU0VULAogIEdfU0VFS19FTkQKfSBHU2Vla1R5cGU7CnR5cGVkZWYgZW51bQp7CiAgR19JT19J
Tgk9MSAsCiAgR19JT19PVVQJPTQgLAogIEdfSU9fUFJJCT0yICwKICBHX0lPX0VSUgk9OCAsCiAg
R19JT19IVVAJPTE2ICwKICBHX0lPX05WQUwJPTMyIAp9IEdJT0NvbmRpdGlvbjsKCnN0cnVjdCBf
R0lPQ2hhbm5lbAp7CiAgZ3VpbnQgY2hhbm5lbF9mbGFnczsKICBndWludCByZWZfY291bnQ7CiAg
R0lPRnVuY3MgKmZ1bmNzOwp9OwoKdHlwZWRlZiBnYm9vbGVhbiAoKkdJT0Z1bmMpIChHSU9DaGFu
bmVsICAgKnNvdXJjZSwKCQkJICAgICBHSU9Db25kaXRpb24gIGNvbmRpdGlvbiwKCQkJICAgICBn
cG9pbnRlciAgICAgIGRhdGEpOwpzdHJ1Y3QgX0dJT0Z1bmNzCnsKICBHSU9FcnJvciAoKmlvX3Jl
YWQpICAgKEdJT0NoYW5uZWwgCSpjaGFubmVsLCAKCQkgICAgICAgICBnY2hhciAgICAgIAkqYnVm
LCAKCQkgICAgICAgICBndWludCAgICAgIAkgY291bnQsCgkJCSBndWludCAgICAgIAkqYnl0ZXNf
cmVhZCk7CiAgR0lPRXJyb3IgKCppb193cml0ZSkgIChHSU9DaGFubmVsIAkqY2hhbm5lbCwgCgkJ
IAkgZ2NoYXIgICAgICAJKmJ1ZiwgCgkJCSBndWludCAgICAgIAkgY291bnQsCgkJCSBndWludCAg
ICAgIAkqYnl0ZXNfd3JpdHRlbik7CiAgR0lPRXJyb3IgKCppb19zZWVrKSAgIChHSU9DaGFubmVs
ICAgCSpjaGFubmVsLCAKCQkgCSBnaW50ICAgICAgIAkgb2Zmc2V0LCAKCQkgIAkgR1NlZWtUeXBl
ICAJIHR5cGUpOwogIHZvaWQgKCppb19jbG9zZSkgICAgICAoR0lPQ2hhbm5lbAkqY2hhbm5lbCk7
CiAgZ3VpbnQgKCppb19hZGRfd2F0Y2gpIChHSU9DaGFubmVsICAgICAqY2hhbm5lbCwKCQkJIGdp
bnQgICAgICAgICAgICBwcmlvcml0eSwKCQkJIEdJT0NvbmRpdGlvbiAgICBjb25kaXRpb24sCgkJ
CSBHSU9GdW5jICAgICAgICAgZnVuYywKCQkJIGdwb2ludGVyICAgICAgICB1c2VyX2RhdGEsCgkJ
CSBHRGVzdHJveU5vdGlmeSAgbm90aWZ5KTsKICB2b2lkICgqaW9fZnJlZSkgICAgICAgKEdJT0No
YW5uZWwJKmNoYW5uZWwpOwp9OwoKdm9pZCAgICAgICAgZ19pb19jaGFubmVsX2luaXQgICAoR0lP
Q2hhbm5lbCAgICAqY2hhbm5lbCk7CnZvaWQgICAgICAgIGdfaW9fY2hhbm5lbF9yZWYgICAgKEdJ
T0NoYW5uZWwgICAgKmNoYW5uZWwpOwp2b2lkICAgICAgICBnX2lvX2NoYW5uZWxfdW5yZWYgIChH
SU9DaGFubmVsICAgICpjaGFubmVsKTsKR0lPRXJyb3IgICAgZ19pb19jaGFubmVsX3JlYWQgICAo
R0lPQ2hhbm5lbCAgICAqY2hhbm5lbCwgCgkJCSAgICAgICAgIGdjaGFyICAgICAgICAgKmJ1Ziwg
CgkJCSAgICAgICAgIGd1aW50ICAgICAgICAgIGNvdW50LAoJCQkgICAgICAgICBndWludCAgICAg
ICAgICpieXRlc19yZWFkKTsKR0lPRXJyb3IgIGdfaW9fY2hhbm5lbF93cml0ZSAgICAoR0lPQ2hh
bm5lbCAgICAqY2hhbm5lbCwgCgkJCSAgICAgICAgIGdjaGFyICAgICAgICAgKmJ1ZiwgCgkJCSAg
ICAgICAgIGd1aW50ICAgICAgICAgIGNvdW50LAoJCQkgICAgICAgICBndWludCAgICAgICAgICpi
eXRlc193cml0dGVuKTsKR0lPRXJyb3IgIGdfaW9fY2hhbm5lbF9zZWVrICAgICAoR0lPQ2hhbm5l
bCAgICAqY2hhbm5lbCwKCQkJICAgICAgICAgZ2ludCAgICAgICAgICAgb2Zmc2V0LCAKCQkJICAg
ICAgICAgR1NlZWtUeXBlICAgICAgdHlwZSk7CnZvaWQgICAgICBnX2lvX2NoYW5uZWxfY2xvc2Ug
ICAgKEdJT0NoYW5uZWwgICAgKmNoYW5uZWwpOwpndWludCAgICAgZ19pb19hZGRfd2F0Y2hfZnVs
bCAgIChHSU9DaGFubmVsICAgICpjaGFubmVsLAoJCQkgICAgICAgICBnaW50ICAgICAgICAgICBw
cmlvcml0eSwKCQkJICAgICAgICAgR0lPQ29uZGl0aW9uICAgY29uZGl0aW9uLAoJCQkgICAgICAg
ICBHSU9GdW5jICAgICAgICBmdW5jLAoJCQkgICAgICAgICBncG9pbnRlciAgICAgICB1c2VyX2Rh
dGEsCgkJCSAgICAgICAgIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSk7Cmd1aW50ICAgIGdfaW9fYWRk
X3dhdGNoICAgICAgICAgKEdJT0NoYW5uZWwgICAgKmNoYW5uZWwsCgkJCSAgICAgICAgIEdJT0Nv
bmRpdGlvbiAgIGNvbmRpdGlvbiwKCQkJICAgICAgICAgR0lPRnVuYyAgICAgICAgZnVuYywKCQkJ
ICAgICAgICAgZ3BvaW50ZXIgICAgICAgdXNlcl9kYXRhKTsKCgogCgp0eXBlZGVmIHN0cnVjdCBf
R1RpbWVWYWwJR1RpbWVWYWw7CnR5cGVkZWYgc3RydWN0IF9HU291cmNlRnVuY3MJR1NvdXJjZUZ1
bmNzOwp0eXBlZGVmIHN0cnVjdCBfR01haW5Mb29wCUdNYWluTG9vcDsJIAoKc3RydWN0IF9HVGlt
ZVZhbAp7CiAgZ2xvbmcgdHZfc2VjOwogIGdsb25nIHR2X3VzZWM7Cn07CnN0cnVjdCBfR1NvdXJj
ZUZ1bmNzCnsKICBnYm9vbGVhbiAoKnByZXBhcmUpICAoZ3BvaW50ZXIgIHNvdXJjZV9kYXRhLCAK
CQkJR1RpbWVWYWwgKmN1cnJlbnRfdGltZSwKCQkJZ2ludCAgICAgKnRpbWVvdXQsCgkJCWdwb2lu
dGVyICB1c2VyX2RhdGEpOwogIGdib29sZWFuICgqY2hlY2spICAgIChncG9pbnRlciAgc291cmNl
X2RhdGEsCgkJCUdUaW1lVmFsICpjdXJyZW50X3RpbWUsCgkJCWdwb2ludGVyICB1c2VyX2RhdGEp
OwogIGdib29sZWFuICgqZGlzcGF0Y2gpIChncG9pbnRlciAgc291cmNlX2RhdGEsIAoJCQlHVGlt
ZVZhbCAqY3VycmVudF90aW1lLAoJCQlncG9pbnRlciAgdXNlcl9kYXRhKTsKICBHRGVzdHJveU5v
dGlmeSBkZXN0cm95Owp9OwoKIAoKCgoKCgoKdHlwZWRlZiBnYm9vbGVhbiAoKkdTb3VyY2VGdW5j
KSAoZ3BvaW50ZXIgZGF0YSk7CgogCmd1aW50ICAgIGdfc291cmNlX2FkZCAgICAgICAgICAgICAg
ICAgICAgICAgIChnaW50ICAgICAgICAgICBwcmlvcml0eSwgCgkJCQkJICAgICAgZ2Jvb2xlYW4g
ICAgICAgY2FuX3JlY3Vyc2UsCgkJCQkJICAgICAgR1NvdXJjZUZ1bmNzICAqZnVuY3MsCgkJCQkJ
ICAgICAgZ3BvaW50ZXIgICAgICAgc291cmNlX2RhdGEsIAoJCQkJCSAgICAgIGdwb2ludGVyICAg
ICAgIHVzZXJfZGF0YSwKCQkJCQkgICAgICBHRGVzdHJveU5vdGlmeSBub3RpZnkpOwpnYm9vbGVh
biBnX3NvdXJjZV9yZW1vdmUgICAgICAgICAgICAgICAgICAgICAoZ3VpbnQgICAgICAgICAgdGFn
KTsKZ2Jvb2xlYW4gZ19zb3VyY2VfcmVtb3ZlX2J5X3VzZXJfZGF0YSAgICAgICAgKGdwb2ludGVy
ICAgICAgIHVzZXJfZGF0YSk7Cmdib29sZWFuIGdfc291cmNlX3JlbW92ZV9ieV9zb3VyY2VfZGF0
YSAgICAgIChncG9pbnRlciAgICAgICBzb3VyY2VfZGF0YSk7Cmdib29sZWFuIGdfc291cmNlX3Jl
bW92ZV9ieV9mdW5jc191c2VyX2RhdGEgIChHU291cmNlRnVuY3MgICpmdW5jcywKCQkJCQkgICAg
ICBncG9pbnRlciAgICAgICB1c2VyX2RhdGEpOwoKdm9pZCBnX2dldF9jdXJyZW50X3RpbWUJCSAg
ICAoR1RpbWVWYWwJICAgKnJlc3VsdCk7CgogCkdNYWluTG9vcCoJZ19tYWluX25ldwkJKGdib29s
ZWFuCSBpc19ydW5uaW5nKTsKdm9pZAkJZ19tYWluX3J1bgkJKEdNYWluTG9vcAkqbG9vcCk7CnZv
aWQJCWdfbWFpbl9xdWl0CQkoR01haW5Mb29wCSpsb29wKTsKdm9pZAkJZ19tYWluX2Rlc3Ryb3kJ
CShHTWFpbkxvb3AJKmxvb3ApOwpnYm9vbGVhbglnX21haW5faXNfcnVubmluZwkoR01haW5Mb29w
CSpsb29wKTsKCiAKCgpnYm9vbGVhbglnX21haW5faXRlcmF0aW9uCShnYm9vbGVhbgltYXlfYmxv
Y2spOwoKIApnYm9vbGVhbglnX21haW5fcGVuZGluZwkJKHZvaWQpOwoKIApndWludAkJZ190aW1l
b3V0X2FkZF9mdWxsCShnaW50ICAgICAgICAgICBwcmlvcml0eSwKCQkJCQkgZ3VpbnQgICAgICAg
ICAgaW50ZXJ2YWwsIAoJCQkJCSBHU291cmNlRnVuYyAgICBmdW5jdGlvbiwKCQkJCQkgZ3BvaW50
ZXIgICAgICAgZGF0YSwKCQkJCQkgR0Rlc3Ryb3lOb3RpZnkgbm90aWZ5KTsKZ3VpbnQJCWdfdGlt
ZW91dF9hZGQJCShndWludCAgICAgICAgICBpbnRlcnZhbCwKCQkJCQkgR1NvdXJjZUZ1bmMgICAg
ZnVuY3Rpb24sCgkJCQkJIGdwb2ludGVyICAgICAgIGRhdGEpOwpndWludAkJZ19pZGxlX2FkZAkg
ICAJKEdTb3VyY2VGdW5jCWZ1bmN0aW9uLAoJCQkJCSBncG9pbnRlcglkYXRhKTsKZ3VpbnQJICAg
CWdfaWRsZV9hZGRfZnVsbAkJKGdpbnQgICAJcHJpb3JpdHksCgkJCQkJIEdTb3VyY2VGdW5jCWZ1
bmN0aW9uLAoJCQkJCSBncG9pbnRlcglkYXRhLAoJCQkJCSBHRGVzdHJveU5vdGlmeSBkZXN0cm95
KTsKZ2Jvb2xlYW4JZ19pZGxlX3JlbW92ZV9ieV9kYXRhCShncG9pbnRlcglkYXRhKTsKCiAKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfR1BvbGxGRCBHUG9sbEZEOwp0eXBl
ZGVmIGdpbnQJKCpHUG9sbEZ1bmMpCShHUG9sbEZEICp1ZmRzLAoJCQkJIGd1aW50CSAgbmZzZCwK
CQkJCSBnaW50ICAgICB0aW1lb3V0KTsKc3RydWN0IF9HUG9sbEZECnsKICBnaW50CQlmZDsKICBn
dXNob3J0IAlldmVudHM7CiAgZ3VzaG9ydCAJcmV2ZW50czsKfTsKCnZvaWQgICAgICAgIGdfbWFp
bl9hZGRfcG9sbCAgICAgICAgICAoR1BvbGxGRCAgICAqZmQsCgkJCQkgICAgICBnaW50ICAgICAg
ICBwcmlvcml0eSk7CnZvaWQgICAgICAgIGdfbWFpbl9yZW1vdmVfcG9sbCAgICAgICAoR1BvbGxG
RCAgICAqZmQpOwp2b2lkICAgICAgICBnX21haW5fc2V0X3BvbGxfZnVuYyAgICAgKEdQb2xsRnVu
YyAgIGZ1bmMpOwoKIAoKCgoKCgoKCgoKR0lPQ2hhbm5lbCogZ19pb19jaGFubmVsX3VuaXhfbmV3
ICAgIChpbnQgICAgICAgICBmZCk7CmdpbnQgICAgICAgIGdfaW9fY2hhbm5lbF91bml4X2dldF9m
ZCAoR0lPQ2hhbm5lbCAqY2hhbm5lbCk7CgojIDI1ODEgIi91c3IvaW5jbHVkZS9nbGliLmgiIDMK
CgogCgojIDI2NDAgIi91c3IvaW5jbHVkZS9nbGliLmgiIDMKCgoKIAoKdHlwZWRlZiBzdHJ1Y3Qg
X0dNdXRleAkJR011dGV4Owp0eXBlZGVmIHN0cnVjdCBfR0NvbmQJCUdDb25kOwp0eXBlZGVmIHN0
cnVjdCBfR1ByaXZhdGUJR1ByaXZhdGU7CnR5cGVkZWYgc3RydWN0IF9HU3RhdGljUHJpdmF0ZQlH
U3RhdGljUHJpdmF0ZTsKdHlwZWRlZiBzdHJ1Y3QgX0dUaHJlYWRGdW5jdGlvbnMgR1RocmVhZEZ1
bmN0aW9uczsKc3RydWN0IF9HVGhyZWFkRnVuY3Rpb25zCnsKICBHTXV0ZXgqICAoKm11dGV4X25l
dykgICAgICAgKHZvaWQpOwogIHZvaWQgICAgICgqbXV0ZXhfbG9jaykgICAgICAoR011dGV4CQkq
bXV0ZXgpOwogIGdib29sZWFuICgqbXV0ZXhfdHJ5bG9jaykgICAoR011dGV4CQkqbXV0ZXgpOwog
IHZvaWQgICAgICgqbXV0ZXhfdW5sb2NrKSAgICAoR011dGV4CQkqbXV0ZXgpOwogIHZvaWQgICAg
ICgqbXV0ZXhfZnJlZSkgICAgICAoR011dGV4CQkqbXV0ZXgpOwogIEdDb25kKiAgICgqY29uZF9u
ZXcpICAgICAgICAodm9pZCk7CiAgdm9pZCAgICAgKCpjb25kX3NpZ25hbCkgICAgIChHQ29uZAkJ
KmNvbmQpOwogIHZvaWQgICAgICgqY29uZF9icm9hZGNhc3QpICAoR0NvbmQJCSpjb25kKTsKICB2
b2lkICAgICAoKmNvbmRfd2FpdCkgICAgICAgKEdDb25kCQkqY29uZCwKCQkJICAgICAgIEdNdXRl
eAkJKm11dGV4KTsKICBnYm9vbGVhbiAoKmNvbmRfdGltZWRfd2FpdCkgKEdDb25kCQkqY29uZCwK
CQkJICAgICAgIEdNdXRleAkJKm11dGV4LCAKCQkJICAgICAgIEdUaW1lVmFsIAkqZW5kX3RpbWUp
OwogIHZvaWQgICAgICAoKmNvbmRfZnJlZSkgICAgICAoR0NvbmQJCSpjb25kKTsKICBHUHJpdmF0
ZSogKCpwcml2YXRlX25ldykgICAgKEdEZXN0cm95Tm90aWZ5CSBkZXN0cnVjdG9yKTsKICBncG9p
bnRlciAgKCpwcml2YXRlX2dldCkgICAgKEdQcml2YXRlCQkqcHJpdmF0ZV9rZXkpOwogIHZvaWQg
ICAgICAoKnByaXZhdGVfc2V0KSAgICAoR1ByaXZhdGUJCSpwcml2YXRlX2tleSwKCQkJICAgICAg
IGdwb2ludGVyCQkgZGF0YSk7Cn07CgpleHRlcm4gIEdUaHJlYWRGdW5jdGlvbnMJZ190aHJlYWRf
ZnVuY3Rpb25zX2Zvcl9nbGliX3VzZTsKZXh0ZXJuICBnYm9vbGVhbgkJZ190aHJlYWRfdXNlX2Rl
ZmF1bHRfaW1wbDsKZXh0ZXJuICBnYm9vbGVhbgkJZ190aHJlYWRzX2dvdF9pbml0aWFsaXplZDsK
CiAKCgoKdm9pZAlnX3RocmVhZF9pbml0CShHVGhyZWFkRnVuY3Rpb25zCSp2dGFibGUpOwoKIApH
TXV0ZXgqCWdfc3RhdGljX211dGV4X2dldF9tdXRleF9pbXBsCShHTXV0ZXgJKiptdXRleCk7Cgog
CgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKc3RydWN0IF9HU3Rh
dGljUHJpdmF0ZQp7CiAgZ3VpbnQgaW5kZXg7Cn07CgpncG9pbnRlciBnX3N0YXRpY19wcml2YXRl
X2dldCAoR1N0YXRpY1ByaXZhdGUJKnByaXZhdGVfa2V5KTsKdm9pZCAgICAgZ19zdGF0aWNfcHJp
dmF0ZV9zZXQgKEdTdGF0aWNQcml2YXRlCSpwcml2YXRlX2tleSwgCgkJCSAgICAgICBncG9pbnRl
ciAgICAgICAgCSBkYXRhLAoJCQkgICAgICAgR0Rlc3Ryb3lOb3RpZnkgICAgbm90aWZ5KTsKCiAK
CgoKCgoKCgpleHRlcm4gdm9pZCBnbGliX2R1bW15X2RlY2wgKHZvaWQpOwoKCgoKCgoKIyAyNzc2
ICIvdXNyL2luY2x1ZGUvZ2xpYi5oIiAzCgoKCgoKCgoKCgoKCgoKCn0KCgoKCiMgOSAidmFyLmgi
IDIKCiMgMSAidHlwZXMuaCIgMQogCgoKCgoKCgoKCgoKCgoKCiAKCgoKIAoKY2xhc3MgdFR5cGUg
ewoJY2hhciogX25hbWU7CgpwdWJsaWM6Cgl0VHlwZSAoY2hhciogYSkgOiBfbmFtZShhKSB7fTsK
CXZpcnR1YWwgYm9vbCBpc19jb21wYXRpYmxlKHRUeXBlKiB0KSB7IHQtPm5hbWUoKSA9PSBfbmFt
ZTsgfTsKCXZpcnR1YWwgYm9vbCBpc19idWlsZGluKCkgPSAwOwoJaW5saW5lIGNoYXIqIG5hbWUo
KSB7IHJldHVybiBfbmFtZTsgfTsKfTsKCiAKCmNsYXNzIHRCdWlsZGluIDogcHVibGljIHRUeXBl
IHsKcHVibGljOgogIHRCdWlsZGluKGNoYXIqIGEpIDogdFR5cGUgKGEpIHt9OyAKCWJvb2wgaXNi
dWlsZGluKCkgeyByZXR1cm4gdHJ1ZTsgfTsKfTsKCiAKCmNsYXNzIHRGbG9hdCA6IHB1YmxpYyB0
QnVpbGRpbiB7CnB1YmxpYzoKCXRGbG9hdCgpIDogdEJ1aWxkaW4oImZsb2F0Iikge307Cglib29s
IGlzX2NvbXBhdGlibGUodFR5cGUqIHQpIAoJCXsgcmV0dXJuICh0VHlwZSA6OiBpc19jb21wYXRp
YmxlKHQpIHx8ICh0LT5uYW1lKCkgPT0gImludGVnZXIiKSk7IH07Cn07CgogCgpjbGFzcyB0Q2hh
ciA6IHB1YmxpYyB0QnVpbGRpbiB7CnB1YmxpYzoKCXRDaGFyKCkgOiB0QnVpbGRpbigiY2hhciIp
IHt9Owp9OwoKCiAKCmNsYXNzIHRJbnRlZ2VyIDogcHVibGljIHRCdWlsZGluIHsKcHVibGljOgoJ
dEludGVnZXIoKSA6IHRCdWlsZGluICgiaW50ZWdlciIpIHt9OwoJYm9vbCBpc19jb21wYXRpYmxl
KHRUeXBlKiB0KQoJCXsgcmV0dXJuICh0QnVpbGRpbiA6OiBpc19jb21wYXRpYmxlKHQpIHx8ICh0
LT5uYW1lKCkgPT0gImZsb2F0IikpOyB9Owp9OwoKCiAKCmNsYXNzIHRTdHJpbmcgOiBwdWJsaWMg
dEJ1aWxkaW4gewpwdWJsaWM6Cgl0U3RyaW5nKCkgOiB0QnVpbGRpbigic3RyaW5nIikge307Cn07
CgoKIyAxMCAidmFyLmgiIDIKCgogCgoKCgpjbGFzcyB2YWxpc3Q7CgogCgpjbGFzcyBWYXIgewoJ
dFR5cGUqIF90eXBlOwoJY2hhciogX25hbWU7CgoJdW5pb24gdiB7CgkJZmxvYXQgX2Zsb2F0OwoJ
CWludAkJX2ludDsKCQljaGFyKiBfc3RyaW5nOwoJCWNoYXIJX2NoYXI7CgkJYm9vbAlfYm9vbDsK
CQl2YWxpc3QgKl9jbGFzczsKCX07CgogIHYgX3ZhbHVlOwoJCmZyaWVuZCBjbGFzcyBWYXI7CnB1
YmxpYzoKCXZvaWQqIHR5cGVfY2FzdCgpOwoJdm9pZCBhc3NpZ24gKFZhciogYSk7CglpbmxpbmUg
diogdmFsdWUoKSB7IHJldHVybiAmX3ZhbHVlOyB9Owp9OyAKCiAKCmNsYXNzIHZhbGlzdCB7CglH
QXJyYXkgKl9zdHJ1Y3Q7CglpbnQgX3NpemU7CgpwdWJsaWM6Cgl2YWxpc3QoKSB7X3N0cnVjdCA9
IGdfYXJyYXlfbmV3IChmYWxzZSwgZmFsc2Usc2l6ZW9mKFZhcikpOyBfc2l6ZSA9IDA7IH07Cgl2
b2lkIGFkZChWYXIqIGEpIHsgZ19hcnJheV9hcHBlbmRfdmFscyAoIF9zdHJ1Y3QgLCAmIGEgLCAx
KSA7IF9zaXplKys7IH07CglWYXIqIHZhcihpbnQgaSkgCgl7IAoJCWlmIChpPl9zaXplKSAKCQkJ
cmV0dXJuICAoVmFyKikoKHZvaWQqKSAwKSA7IAoJCWVsc2UgCgkJCXJldHVybiAgJiAoKCggVmFy
ICopICggX3N0cnVjdCApLT5kYXRhKSBbKCBpICldKSA7IAoJfTsKCWlubGluZSBzaXplKCkgeyBy
ZXR1cm4gX3NpemU7IH07Cn07CgogCgpjbGFzcyBUU3ltYm9scyB7CglHQXJyYXkgdHlwZXM7Cglp
bnQgY2FudDsKCnB1YmxpYzoKCXZvaWQgYWRkICh0VHlwZSogdCk7Cgl0VHlwZSogcmV0cmlldmUg
KGNoYXIqIG5hbWUpOwp9OwoKCiMgNSAidmFyLmNjIiAyCgojIDEgImV4Y2VwdGlvbnMuaCIgMQog
CgoKCiBjbGFzcyBlaW5jb21wYXRpYmxlVHlwZXMge307CiMgNiAidmFyLmNjIiAyCgoKdm9pZCog
VmFyIDo6IHR5cGVfY2FzdCAoKSAKewoJc3dpdGNoIChfdHlwZS0+bmFtZSgpWzBdKSB7CgkKCQlj
YXNlICdmJzogcmV0dXJuICZfdmFsdWUuX2Zsb2F0OwoJCWNhc2UgJ2knOiByZXR1cm4gJl92YWx1
ZS5faW50OwoJCWNhc2UgJ2MnOiByZXR1cm4gJl92YWx1ZS5fY2hhcjsKCQljYXNlICdzJzogcmV0
dXJuICZfdmFsdWUuX3N0cmluZzsKCQljYXNlICd1JzogcmV0dXJuICZfdmFsdWUuX2NsYXNzOwoJ
fQp9Cgp2b2lkIFZhciA6OiBhc3NpZ24gKFZhciogYSkgCnsKIAogCgoJc3dpdGNoIChfdHlwZS0+
bmFtZSgpWzBdKSB7CgkKCQljYXNlICdmJzogX3ZhbHVlLl9mbG9hdCA9IGEtPnYuX2Zsb2F0OyAK
CQljYXNlICdpJzogX3ZhbHVlLl9pbnQgPSAoaW50KWEtPnR5cGVfY2FzdCgpOwoJCWNhc2UgJ2Mn
OiBfdmFsdWUuX2NoYXIgPSAoY2hhcilhLT50eXBlX2Nhc3QoKTsKCQljYXNlICdzJzogX3ZhbHVl
Ll9zdHJpbmcgPSAoY2hhciopYS0+dHlwZV9jYXN0KCk7CgkJY2FzZSAndSc6IF92YWx1ZS5fY2xh
c3MgPSAodmFsaXN0KWEtPnR5cGVfY2FzdCgpOwoJfQp9Cg==

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