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


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

target/6775: x86-64-netbsd compiler dies with SIGILL when using -Os



>Number:         6775
>Category:       target
>Synopsis:       x86-64-netbsd compiler dies with SIGILL when using -Os
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed May 22 17:56:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Jason R Thorpe
>Release:        GNU C version 3.2 20020521 (experimental) (x86_64-unknown-netbsd)
>Organization:
>Environment:
i386-netbsdelf host, x86_64-netbsd target
building NetBSD/x86_64 kernel
>Description:
When building the NetBSD/x86_64 kernel with -Os (as we do
for use in the simulator), cc1 dies with an illegal
instruction when compiling the interrupt service routine
of the LANCE Ethernet driver.
>How-To-Repeat:
The attached preprocessed source file contains the function
which causes the compiler to croak.  The following will
reproduce the problem:

x86_64-unknown-netbsd-gcc -Os -ffreestanding -c am7990.i
>Fix:
The file can be compiled with -O0, -O1, -O2, and -O3.  Only
-Os exhibits the problem.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="am7990.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="am7990.i"

IyAxICJhbTc5OTAuYyIKIyAxICI8YnVpbHQtaW4+IgojIDEgIjxjb21tYW5kIGxpbmU+IgojIDEg
ImFtNzk5MC5jIgojIDc4ICJhbTc5OTAuYyIKIyAxICIuLi8uLi8uLi8uLi9zeXMvY2RlZnMuaCIg
MQojIDYzICIuLi8uLi8uLi8uLi9zeXMvY2RlZnMuaCIKIyAxICJtYWNoaW5lL2NkZWZzLmgiIDEK
IyA2NCAiLi4vLi4vLi4vLi4vc3lzL2NkZWZzLmgiIDIKCiMgMSAiLi4vLi4vLi4vLi4vc3lzL2Nk
ZWZzX2VsZi5oIiAxCiMgNjYgIi4uLy4uLy4uLy4uL3N5cy9jZGVmcy5oIiAyCiMgNzkgImFtNzk5
MC5jIiAyCl9fYXNtX18oIi5zZWN0aW9uICIgIi5pZGVudCIgIiA7IC5hc2NpeiBcIiIgIiROZXRC
U0Q6IGFtNzk5MC5jLHYgMS42NCAyMDAxLzExLzEzIDEzOjE0OjM0IGx1a2VtIEV4cCAkIiAiXCIg
OyAudGV4dCIpOwoKIyAxICJicGZpbHRlci5oIiAxCiMgODIgImFtNzk5MC5jIiAyCiMgMSAicm5k
LmgiIDEKIyA4MyAiYW03OTkwLmMiIDIKCiMgMSAiLi4vLi4vLi4vLi4vc3lzL3BhcmFtLmgiIDEK
IyA4NiAiLi4vLi4vLi4vLi4vc3lzL3BhcmFtLmgiCiMgMSAiLi4vLi4vLi4vLi4vc3lzL251bGwu
aCIgMQojIDg3ICIuLi8uLi8uLi8uLi9zeXMvcGFyYW0uaCIgMgoKCiMgMSAiLi4vLi4vLi4vLi4v
c3lzL2ludHR5cGVzLmgiIDEKIyA0NiAiLi4vLi4vLi4vLi4vc3lzL2ludHR5cGVzLmgiCiMgMSAi
Li4vLi4vLi4vLi4vc3lzL3N0ZGludC5oIiAxCiMgNDIgIi4uLy4uLy4uLy4uL3N5cy9zdGRpbnQu
aCIKIyAxICJtYWNoaW5lL2ludF90eXBlcy5oIiAxCiMgNDcgIm1hY2hpbmUvaW50X3R5cGVzLmgi
CnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3Vp
bnQ4X3Q7CnR5cGVkZWYgc2hvcnQgaW50IF9faW50MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9y
dCBpbnQgX191aW50MTZfdDsKdHlwZWRlZiBpbnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVk
IGludCBfX3VpbnQzMl90Owp0eXBlZGVmIGxvbmcgaW50IF9faW50NjRfdDsKdHlwZWRlZiB1bnNp
Z25lZCBsb25nIGludCBfX3VpbnQ2NF90OwoKCgoKCnR5cGVkZWYgbG9uZyBfX2ludHB0cl90Owp0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgX191aW50cHRyX3Q7CiMgNDMgIi4uLy4uLy4uLy4uL3N5cy9z
dGRpbnQuaCIgMgoKCnR5cGVkZWYgX19pbnQ4X3QgaW50OF90OwoKCgoKdHlwZWRlZiBfX3VpbnQ4
X3QgdWludDhfdDsKCgoKCnR5cGVkZWYgX19pbnQxNl90IGludDE2X3Q7CgoKCgp0eXBlZGVmIF9f
dWludDE2X3QgdWludDE2X3Q7CgoKCgp0eXBlZGVmIF9faW50MzJfdCBpbnQzMl90OwoKCgoKdHlw
ZWRlZiBfX3VpbnQzMl90IHVpbnQzMl90OwoKCgoKdHlwZWRlZiBfX2ludDY0X3QgaW50NjRfdDsK
CgoKCnR5cGVkZWYgX191aW50NjRfdCB1aW50NjRfdDsKCgoKCnR5cGVkZWYgX19pbnRwdHJfdCBp
bnRwdHJfdDsKCgoKCnR5cGVkZWYgX191aW50cHRyX3QgdWludHB0cl90OwoKCgojIDEgIm1hY2hp
bmUvaW50X213Z3d0eXBlcy5oIiAxCiMgNDggIm1hY2hpbmUvaW50X213Z3d0eXBlcy5oIgp0eXBl
ZGVmIHNpZ25lZCBjaGFyIGludF9sZWFzdDhfdDsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnRf
bGVhc3Q4X3Q7CnR5cGVkZWYgc2hvcnQgaW50IGludF9sZWFzdDE2X3Q7CnR5cGVkZWYgdW5zaWdu
ZWQgc2hvcnQgaW50IHVpbnRfbGVhc3QxNl90Owp0eXBlZGVmIGludCBpbnRfbGVhc3QzMl90Owp0
eXBlZGVmIHVuc2lnbmVkIGludCB1aW50X2xlYXN0MzJfdDsKdHlwZWRlZiBsb25nIGludCBpbnRf
bGVhc3Q2NF90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHVpbnRfbGVhc3Q2NF90OwoKCnR5
cGVkZWYgaW50IGludF9mYXN0OF90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50X2Zhc3Q4X3Q7
CnR5cGVkZWYgaW50IGludF9mYXN0MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9mYXN0
MTZfdDsKdHlwZWRlZiBpbnQgaW50X2Zhc3QzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50
X2Zhc3QzMl90Owp0eXBlZGVmIGxvbmcgaW50IGludF9mYXN0NjRfdDsKdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIGludCB1aW50X2Zhc3Q2NF90OwoKCgp0eXBlZGVmIGxvbmcgaW50IGludG1heF90Owp0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHVpbnRtYXhfdDsKIyA5NSAiLi4vLi4vLi4vLi4vc3lz
L3N0ZGludC5oIiAyCgoKIyAxICJtYWNoaW5lL2ludF9saW1pdHMuaCIgMQojIDk4ICIuLi8uLi8u
Li8uLi9zeXMvc3RkaW50LmgiIDIKCgoKIyAxICJtYWNoaW5lL2ludF9jb25zdC5oIiAxCiMgMTAy
ICIuLi8uLi8uLi8uLi9zeXMvc3RkaW50LmgiIDIKIyA0NyAiLi4vLi4vLi4vLi4vc3lzL2ludHR5
cGVzLmgiIDIKCgojIDEgIm1hY2hpbmUvaW50X2ZtdGlvLmgiIDEKIyA1MCAiLi4vLi4vLi4vLi4v
c3lzL2ludHR5cGVzLmgiIDIKIyA5MCAiLi4vLi4vLi4vLi4vc3lzL3BhcmFtLmgiIDIKIyAxICIu
Li8uLi8uLi8uLi9zeXMvdHlwZXMuaCIgMQojIDQ3ICIuLi8uLi8uLi8uLi9zeXMvdHlwZXMuaCIK
IyAxICJtYWNoaW5lL3R5cGVzLmgiIDEKIyA0NSAibWFjaGluZS90eXBlcy5oIgp0eXBlZGVmIHN0
cnVjdCBsYWJlbF90IHsKICAgICAgICBsb25nIHZhbFs4XTsKfSBsYWJlbF90OwoKCgoKdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIHBhZGRyX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBwc2l6ZV90Owp0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgdmFkZHJfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHZzaXpl
X3Q7CgoKdHlwZWRlZiBsb25nIGludCByZWdpc3Rlcl90Owp0eXBlZGVmIGludCByZWdpc3RlcjMy
X3Q7CiMgNDggIi4uLy4uLy4uLy4uL3N5cy90eXBlcy5oIiAyCgojIDEgIm1hY2hpbmUvYW5zaS5o
IiAxCiMgOTQgIm1hY2hpbmUvYW5zaS5oIgp0eXBlZGVmIHVuaW9uIHsKICAgICAgICBjaGFyIF9f
bWJzdGF0ZThbMTI4XTsKICAgICAgICBfX2ludDY0X3QgX19tYnN0YXRlTDsKfSBfX21ic3RhdGVf
dDsKIyA1MCAiLi4vLi4vLi4vLi4vc3lzL3R5cGVzLmgiIDIKCgoKIyAxICIuLi8uLi8uLi8uLi9z
eXMvYW5zaS5oIiAxCiMgNDQgIi4uLy4uLy4uLy4uL3N5cy9hbnNpLmgiCnR5cGVkZWYgY2hhciAq
IF9fY2FkZHJfdDsKdHlwZWRlZiBfX3VpbnQzMl90IF9fZ2lkX3Q7CnR5cGVkZWYgX191aW50MzJf
dCBfX2luX2FkZHJfdDsKdHlwZWRlZiBfX3VpbnQxNl90IF9faW5fcG9ydF90Owp0eXBlZGVmIF9f
dWludDMyX3QgX19tb2RlX3Q7CnR5cGVkZWYgX19pbnQ2NF90IF9fb2ZmX3Q7CnR5cGVkZWYgX19p
bnQzMl90IF9fcGlkX3Q7CnR5cGVkZWYgX191aW50OF90IF9fc2FfZmFtaWx5X3Q7CnR5cGVkZWYg
dW5zaWduZWQgaW50IF9fc29ja2xlbl90Owp0eXBlZGVmIF9fdWludDMyX3QgX191aWRfdDsKIyA1
NCAiLi4vLi4vLi4vLi4vc3lzL3R5cGVzLmgiIDIKIyA5NSAiLi4vLi4vLi4vLi4vc3lzL3R5cGVz
LmgiCnR5cGVkZWYgX191aW50OF90IHVfaW50OF90Owp0eXBlZGVmIF9fdWludDE2X3QgdV9pbnQx
Nl90Owp0eXBlZGVmIF9fdWludDMyX3QgdV9pbnQzMl90Owp0eXBlZGVmIF9fdWludDY0X3QgdV9p
bnQ2NF90OwoKIyAxICJtYWNoaW5lL2VuZGlhbi5oIiAxCgoKIyAxICIuLi8uLi8uLi8uLi9zeXMv
ZW5kaWFuLmgiIDEKIyA0OSAiLi4vLi4vLi4vLi4vc3lzL2VuZGlhbi5oIgojIDEgIm1hY2hpbmUv
ZW5kaWFuX21hY2hkZXAuaCIgMQoKCgoKCgojIDEgIm1hY2hpbmUvYnl0ZV9zd2FwLmgiIDEKIyA0
NyAibWFjaGluZS9ieXRlX3N3YXAuaCIKc3RhdGljIF9faW5saW5lIHVfaW50MzJfdCBfX2J5dGVf
c3dhcF9sb25nX3ZhcmlhYmxlKHVfaW50MzJfdCk7CnN0YXRpYyBfX2lubGluZSB1X2ludDE2X3Qg
X19ieXRlX3N3YXBfd29yZF92YXJpYWJsZSh1X2ludDE2X3QpOwoKc3RhdGljIF9faW5saW5lIHVf
aW50MzJfdApfX2J5dGVfc3dhcF9sb25nX3ZhcmlhYmxlKHVfaW50MzJfdCB4KQp7CiAgICAgICAg
X19hc20gdm9sYXRpbGUgKCAiYnN3YXAgJTEiIDogIj1yIiAoeCkgOiAiMCIgKHgpKTsKICAgICAg
ICByZXR1cm4gKHgpOwp9CgpzdGF0aWMgX19pbmxpbmUgdV9pbnQxNl90Cl9fYnl0ZV9zd2FwX3dv
cmRfdmFyaWFibGUodV9pbnQxNl90IHgpCnsKICAgICAgICBfX2FzbSB2b2xhdGlsZSAoInJvcncg
JDgsICV3MSIgOiAiPXIiICh4KSA6ICIwIiAoeCkpOwogICAgICAgIHJldHVybiAoeCk7Cn0KIyA4
ICJtYWNoaW5lL2VuZGlhbl9tYWNoZGVwLmgiIDIKIyA1MCAiLi4vLi4vLi4vLi4vc3lzL2VuZGlh
bi5oIiAyCiMgODEgIi4uLy4uLy4uLy4uL3N5cy9lbmRpYW4uaCIKIyAxICIuLi8uLi8uLi8uLi9z
eXMvdHlwZXMuaCIgMQojIDgyICIuLi8uLi8uLi8uLi9zeXMvZW5kaWFuLmgiIDIKCgp0eXBlZGVm
IF9faW5fYWRkcl90IGluX2FkZHJfdDsKCgoKCnR5cGVkZWYgX19pbl9wb3J0X3QgaW5fcG9ydF90
OwoKCgoKX191aW50MzJfdCBodG9ubCAoX191aW50MzJfdCkgX19hdHRyaWJ1dGVfXygoX19jb25z
dF9fKSk7Cl9fdWludDE2X3QgaHRvbnMgKF9fdWludDE2X3QpIF9fYXR0cmlidXRlX18oKF9fY29u
c3RfXykpOwpfX3VpbnQzMl90IG50b2hsIChfX3VpbnQzMl90KSBfX2F0dHJpYnV0ZV9fKChfX2Nv
bnN0X18pKTsKX191aW50MTZfdCBudG9ocyAoX191aW50MTZfdCkgX19hdHRyaWJ1dGVfXygoX19j
b25zdF9fKSk7CgojIDEyNiAiLi4vLi4vLi4vLi4vc3lzL2VuZGlhbi5oIgojIDEgIm1hY2hpbmUv
YnN3YXAuaCIgMQojIDkgIm1hY2hpbmUvYnN3YXAuaCIKIyAxICIuLi8uLi8uLi8uLi9zeXMvYnN3
YXAuaCIgMQojIDE2ICIuLi8uLi8uLi8uLi9zeXMvYnN3YXAuaCIKCgp1X2ludDE2X3QgYnN3YXAx
NiAodV9pbnQxNl90KTsKdV9pbnQzMl90IGJzd2FwMzIgKHVfaW50MzJfdCk7CgoKCgp1X2ludDY0
X3QgYnN3YXA2NCAodV9pbnQ2NF90KTsKCiMgMTAgIm1hY2hpbmUvYnN3YXAuaCIgMgojIDEyNyAi
Li4vLi4vLi4vLi4vc3lzL2VuZGlhbi5oIiAyCiMgNCAibWFjaGluZS9lbmRpYW4uaCIgMgojIDEw
MSAiLi4vLi4vLi4vLi4vc3lzL3R5cGVzLmgiIDIKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdV9j
aGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVfc2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50
IHVfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdV9sb25nOwoKdHlwZWRlZiB1bnNpZ25lZCBj
aGFyIHVuY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1c2hvcnQ7CnR5cGVkZWYgdW5zaWdu
ZWQgaW50IHVpbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1bG9uZzsKCnR5cGVkZWYgdV9sb25n
IGNwdWlkX3Q7CgoKdHlwZWRlZiB1X2ludDY0X3QgdV9xdWFkX3Q7CnR5cGVkZWYgX19pbnQ2NF90
IHF1YWRfdDsKdHlwZWRlZiBxdWFkX3QgKiBxYWRkcl90OwojIDEzMCAiLi4vLi4vLi4vLi4vc3lz
L3R5cGVzLmgiCnR5cGVkZWYgcXVhZF90IGxvbmdsb25nX3Q7CnR5cGVkZWYgdV9xdWFkX3QgdV9s
b25nbG9uZ190OwoKdHlwZWRlZiBfX2ludDY0X3QgYmxrY250X3Q7CnR5cGVkZWYgdV9pbnQzMl90
IGJsa3NpemVfdDsKCgp0eXBlZGVmIF9fY2FkZHJfdCBjYWRkcl90OwoKCgp0eXBlZGVmIF9faW50
MzJfdCBkYWRkcl90Owp0eXBlZGVmIHVfaW50MzJfdCBkZXZfdDsKdHlwZWRlZiB1X2ludDMyX3Qg
Zml4cHRfdDsKCgp0eXBlZGVmIF9fZ2lkX3QgZ2lkX3Q7CgoKCnR5cGVkZWYgdV9pbnQzMl90IGlk
X3Q7CnR5cGVkZWYgdV9pbnQzMl90IGlub190Owp0eXBlZGVmIGxvbmcga2V5X3Q7CgoKdHlwZWRl
ZiBfX21vZGVfdCBtb2RlX3Q7CgoKCnR5cGVkZWYgdV9pbnQzMl90IG5saW5rX3Q7CgoKdHlwZWRl
ZiBfX29mZl90IG9mZl90OwoKCgoKdHlwZWRlZiBfX3BpZF90IHBpZF90OwoKCgp0eXBlZGVmIHF1
YWRfdCBybGltX3Q7CnR5cGVkZWYgX19pbnQzMl90IHNlZ3N6X3Q7CnR5cGVkZWYgX19pbnQzMl90
IHN3YmxrX3Q7CgoKdHlwZWRlZiBfX3VpZF90IHVpZF90OwoKCgp0eXBlZGVmIF9faW50MzJfdCBk
dGltZV90OwoKCgoKCgoKdW5pb24gX19zZW11biB7CiAgICAgICAgaW50IHZhbDsKICAgICAgICBz
dHJ1Y3Qgc2VtaWRfZHMgKmJ1ZjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCAqYXJyYXk7Cn07CiMg
MjI1ICIuLi8uLi8uLi8uLi9zeXMvdHlwZXMuaCIKdHlwZWRlZiB1bnNpZ25lZCBpbnQgY2xvY2tf
dDsKCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBzaXplX3Q7CgoKCgoKdHlwZWRlZiBsb25nIHNz
aXplX3Q7CgoKCgp0eXBlZGVmIGludCB0aW1lX3Q7CgoKCgp0eXBlZGVmIGludCBjbG9ja2lkX3Q7
CgoKCgp0eXBlZGVmIGludCB0aW1lcl90OwoKCgoKdHlwZWRlZiBpbnQgc3VzZWNvbmRzX3Q7CgoK
Cgp0eXBlZGVmIHVuc2lnbmVkIGludCB1c2Vjb25kc190OwojIDI3NCAiLi4vLi4vLi4vLi4vc3lz
L3R5cGVzLmgiCnR5cGVkZWYgX19pbnQzMl90IF9fZmRfbWFzazsKIyAyOTMgIi4uLy4uLy4uLy4u
L3N5cy90eXBlcy5oIgp0eXBlZGVmIHN0cnVjdCBmZF9zZXQgewogICAgICAgIF9fZmRfbWFzayBm
ZHNfYml0c1soKCgyNTYpICsgKCgoc2l6ZW9mKF9fZmRfbWFzaykgKiA4KSkgLSAxKSkgLyAoKHNp
emVvZihfX2ZkX21hc2spICogOCkpKV07Cn0gZmRfc2V0OwojIDMyNyAiLi4vLi4vLi4vLi4vc3lz
L3R5cGVzLmgiCnN0cnVjdCBwcm9jOwpzdHJ1Y3QgcGdycDsKc3RydWN0IHVjcmVkOwpzdHJ1Y3Qg
cnVzYWdlOwpzdHJ1Y3QgZmlsZTsKc3RydWN0IGJ1ZjsKc3RydWN0IHR0eTsKc3RydWN0IHVpbzsK
IyA5MSAiLi4vLi4vLi4vLi4vc3lzL3BhcmFtLmgiIDIKIyAxMDAgIi4uLy4uLy4uLy4uL3N5cy9w
YXJhbS5oIgojIDEgIi4uLy4uLy4uLy4uL3N5cy9zeXNsaW1pdHMuaCIgMQojIDQxICIuLi8uLi8u
Li8uLi9zeXMvc3lzbGltaXRzLmgiCiMgMSAiLi4vLi4vLi4vLi4vc3lzL2ZlYXR1cmV0ZXN0Lmgi
IDEKIyA0MiAiLi4vLi4vLi4vLi4vc3lzL3N5c2xpbWl0cy5oIiAyCiMgMTAxICIuLi8uLi8uLi8u
Li9zeXMvcGFyYW0uaCIgMgojIDEyMyAiLi4vLi4vLi4vLi4vc3lzL3BhcmFtLmgiCiMgMSAiLi4v
Li4vLi4vLi4vc3lzL2Vycm5vLmgiIDEKIyAxMjQgIi4uLy4uLy4uLy4uL3N5cy9wYXJhbS5oIiAy
CiMgMSAiLi4vLi4vLi4vLi4vc3lzL3RpbWUuaCIgMQojIDQ3ICIuLi8uLi8uLi8uLi9zeXMvdGlt
ZS5oIgpzdHJ1Y3QgdGltZXZhbCB7CiAgICAgICAgbG9uZyB0dl9zZWM7CiAgICAgICAgbG9uZyB0
dl91c2VjOwp9OwoKCgoKc3RydWN0IHRpbWVzcGVjIHsKICAgICAgICB0aW1lX3QgdHZfc2VjOwog
ICAgICAgIGxvbmcgdHZfbnNlYzsKfTsKIyA3MyAiLi4vLi4vLi4vLi4vc3lzL3RpbWUuaCIKc3Ry
dWN0IHRpbWV6b25lIHsKICAgICAgICBpbnQgdHpfbWludXRlc3dlc3Q7CiAgICAgICAgaW50IHR6
X2RzdHRpbWU7Cn07CiMgMTM4ICIuLi8uLi8uLi8uLi9zeXMvdGltZS5oIgpzdHJ1Y3QgaXRpbWVy
dmFsIHsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBpdF9pbnRlcnZhbDsKICAgICAgICBzdHJ1Y3Qg
dGltZXZhbCBpdF92YWx1ZTsKfTsKCgoKCnN0cnVjdCBjbG9ja2luZm8gewogICAgICAgIGludCBo
ejsKICAgICAgICBpbnQgdGljazsKICAgICAgICBpbnQgdGlja2FkajsKICAgICAgICBpbnQgc3Rh
dGh6OwogICAgICAgIGludCBwcm9maHo7Cn07CiMgMTYzICIuLi8uLi8uLi8uLi9zeXMvdGltZS5o
IgppbnQgaXRpbWVyZml4IChzdHJ1Y3QgdGltZXZhbCAqdHYpOwppbnQgaXRpbWVyZGVjciAoc3Ry
dWN0IGl0aW1lcnZhbCAqaXRwLCBpbnQgdXNlYyk7CnZvaWQgbWljcm90aW1lIChzdHJ1Y3QgdGlt
ZXZhbCAqdHYpOwppbnQgc2V0dGltZSAoc3RydWN0IHRpbWV2YWwgKik7CmludCByYXRlY2hlY2sg
KHN0cnVjdCB0aW1ldmFsICosIGNvbnN0IHN0cnVjdCB0aW1ldmFsICopOwppbnQgcHBzcmF0ZWNo
ZWNrIChzdHJ1Y3QgdGltZXZhbCAqLCBpbnQgKiwgaW50KTsKaW50IHNldHRpbWVvZmRheTEgKGNv
bnN0IHN0cnVjdCB0aW1ldmFsICosIGNvbnN0IHN0cnVjdCB0aW1lem9uZSAqLCBzdHJ1Y3QgcHJv
YyAqKTsKCmludCBhZGp0aW1lMSAoY29uc3Qgc3RydWN0IHRpbWV2YWwgKiwgc3RydWN0IHRpbWV2
YWwgKiwgc3RydWN0IHByb2MgKik7CmludCBjbG9ja19zZXR0aW1lMSAoY2xvY2tpZF90LCBjb25z
dCBzdHJ1Y3QgdGltZXNwZWMgKik7CiMgMTI1ICIuLi8uLi8uLi8uLi9zeXMvcGFyYW0uaCIgMgoj
IDEgIi4uLy4uLy4uLy4uL3N5cy9yZXNvdXJjZS5oIiAxCiMgNjAgIi4uLy4uLy4uLy4uL3N5cy9y
ZXNvdXJjZS5oIgpzdHJ1Y3QgcnVzYWdlIHsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBydV91dGlt
ZTsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBydV9zdGltZTsKICAgICAgICBsb25nIHJ1X21heHJz
czsKCiAgICAgICAgbG9uZyBydV9peHJzczsKICAgICAgICBsb25nIHJ1X2lkcnNzOwogICAgICAg
IGxvbmcgcnVfaXNyc3M7CiAgICAgICAgbG9uZyBydV9taW5mbHQ7CiAgICAgICAgbG9uZyBydV9t
YWpmbHQ7CiAgICAgICAgbG9uZyBydV9uc3dhcDsKICAgICAgICBsb25nIHJ1X2luYmxvY2s7CiAg
ICAgICAgbG9uZyBydV9vdWJsb2NrOwogICAgICAgIGxvbmcgcnVfbXNnc25kOwogICAgICAgIGxv
bmcgcnVfbXNncmN2OwogICAgICAgIGxvbmcgcnVfbnNpZ25hbHM7CiAgICAgICAgbG9uZyBydV9u
dmNzdzsKICAgICAgICBsb25nIHJ1X25pdmNzdzsKCn07CiMgMTAyICIuLi8uLi8uLi8uLi9zeXMv
cmVzb3VyY2UuaCIKc3RydWN0IG9ybGltaXQgewogICAgICAgIF9faW50MzJfdCBybGltX2N1cjsK
ICAgICAgICBfX2ludDMyX3QgcmxpbV9tYXg7Cn07CgoKc3RydWN0IHJsaW1pdCB7CiAgICAgICAg
cmxpbV90IHJsaW1fY3VyOwogICAgICAgIHJsaW1fdCBybGltX21heDsKfTsKCgoKc3RydWN0IGxv
YWRhdmcgewogICAgICAgIGZpeHB0X3QgbGRhdmdbM107CiAgICAgICAgbG9uZyBmc2NhbGU7Cn07
CgoKCmV4dGVybiBzdHJ1Y3QgbG9hZGF2ZyBhdmVydW5uYWJsZTsKc3RydWN0IHBjcmVkOwppbnQg
ZG9zZXRybGltaXQgKHN0cnVjdCBwcm9jICosIHN0cnVjdCBwY3JlZCAqLCBpbnQsIHN0cnVjdCBy
bGltaXQgKik7CmludCBkb25pY2UgKHN0cnVjdCBwcm9jICosIHN0cnVjdCBwcm9jICosIGludCk7
CiMgMTI2ICIuLi8uLi8uLi8uLi9zeXMvcGFyYW0uaCIgMgojIDEgIi4uLy4uLy4uLy4uL3N5cy91
Y3JlZC5oIiAxCiMgNDYgIi4uLy4uLy4uLy4uL3N5cy91Y3JlZC5oIgpzdHJ1Y3QgdXVjcmVkIHsK
ICAgICAgICB1X3Nob3J0IGNyX3VudXNlZDsKICAgICAgICBfX3VpZF90IGNyX3VpZDsKICAgICAg
ICBfX2dpZF90IGNyX2dpZDsKICAgICAgICBzaG9ydCBjcl9uZ3JvdXBzOwogICAgICAgIF9fZ2lk
X3QgY3JfZ3JvdXBzWzE2XTsKfTsKCnN0cnVjdCB1Y3JlZCB7CiAgICAgICAgdV9pbnQzMl90IGNy
X3JlZjsKICAgICAgICBfX3VpZF90IGNyX3VpZDsKICAgICAgICBfX2dpZF90IGNyX2dpZDsKICAg
ICAgICB1X2ludDMyX3QgY3Jfbmdyb3VwczsKICAgICAgICBfX2dpZF90IGNyX2dyb3Vwc1sxNl07
Cn07CiMgNjkgIi4uLy4uLy4uLy4uL3N5cy91Y3JlZC5oIgpzdHJ1Y3QgdWNyZWQgKmNyY29weSAo
c3RydWN0IHVjcmVkICopOwpzdHJ1Y3QgdWNyZWQgKmNyZHVwIChzdHJ1Y3QgdWNyZWQgKik7CnZv
aWQgY3JmcmVlIChzdHJ1Y3QgdWNyZWQgKik7CnN0cnVjdCB1Y3JlZCAqY3JnZXQgKHZvaWQpOwpp
bnQgc3VzZXIgKHN0cnVjdCB1Y3JlZCAqLCB1X3Nob3J0ICopOwp2b2lkIGNyY3Z0IChzdHJ1Y3Qg
dWNyZWQgKiwgY29uc3Qgc3RydWN0IHV1Y3JlZCAqKTsKIyAxMjcgIi4uLy4uLy4uLy4uL3N5cy9w
YXJhbS5oIiAyCiMgMSAiLi4vLi4vLi4vLi4vc3lzL3Vpby5oIiAxCiMgNDIgIi4uLy4uLy4uLy4u
L3N5cy91aW8uaCIKIyAxICIuLi8uLi8uLi8uLi9zeXMvZmVhdHVyZXRlc3QuaCIgMQojIDQzICIu
Li8uLi8uLi8uLi9zeXMvdWlvLmgiIDIKIyA1NCAiLi4vLi4vLi4vLi4vc3lzL3Vpby5oIgpzdHJ1
Y3QgaW92ZWMgewogICAgICAgIHZvaWQgKmlvdl9iYXNlOwogICAgICAgIHNpemVfdCBpb3ZfbGVu
Owp9OwojIDY3ICIuLi8uLi8uLi8uLi9zeXMvdWlvLmgiCmVudW0gdWlvX3J3IHsgVUlPX1JFQUQs
IFVJT19XUklURSB9OwoKCmVudW0gdWlvX3NlZyB7CiAgICAgICAgVUlPX1VTRVJTUEFDRSwKICAg
ICAgICBVSU9fU1lTU1BBQ0UKfTsKCnN0cnVjdCB1aW8gewogICAgICAgIHN0cnVjdCBpb3ZlYyAq
dWlvX2lvdjsKICAgICAgICBpbnQgdWlvX2lvdmNudDsKICAgICAgICBfX29mZl90IHVpb19vZmZz
ZXQ7CiAgICAgICAgc2l6ZV90IHVpb19yZXNpZDsKICAgICAgICBlbnVtIHVpb19zZWcgdWlvX3Nl
Z2ZsZzsKICAgICAgICBlbnVtIHVpb19ydyB1aW9fcnc7CiAgICAgICAgc3RydWN0IHByb2MgKnVp
b19wcm9jcDsKfTsKIyAxMDggIi4uLy4uLy4uLy4uL3N5cy91aW8uaCIKaW50IHVyZWFkYyAoaW50
IGMsIHN0cnVjdCB1aW8gKik7CiMgMTI4ICIuLi8uLi8uLi8uLi9zeXMvcGFyYW0uaCIgMgojIDE0
MSAiLi4vLi4vLi4vLi4vc3lzL3BhcmFtLmgiCiMgMSAiLi4vLi4vLi4vLi4vc3lzL3NpZ25hbC5o
IiAxCiMgNDYgIi4uLy4uLy4uLy4uL3N5cy9zaWduYWwuaCIKIyAxICIuLi8uLi8uLi8uLi9zeXMv
ZmVhdHVyZXRlc3QuaCIgMQojIDQ3ICIuLi8uLi8uLi8uLi9zeXMvc2lnbmFsLmgiIDIKIyAxMjMg
Ii4uLy4uLy4uLy4uL3N5cy9zaWduYWwuaCIKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2lnc2V0MTNf
dDsKIyAxMzggIi4uLy4uLy4uLy4uL3N5cy9zaWduYWwuaCIKc3RydWN0IHNpZ2FjdGlvbjEzIHsK
ICAgICAgICB2b2lkICgqc2FfaGFuZGxlcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChp
bnQpOwogICAgICAgIHNpZ3NldDEzX3Qgc2FfbWFzazsKICAgICAgICBpbnQgc2FfZmxhZ3M7Cn07
CgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVfaW50MzJfdCBfX2JpdHNbNF07Cn0gc2lnc2V0
X3Q7CiMgMTkyICIuLi8uLi8uLi8uLi9zeXMvc2lnbmFsLmgiCnN0cnVjdCBzaWdhY3Rpb24gewog
ICAgICAgIHZvaWQgKCpzYV9oYW5kbGVyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlu
dCk7CiAgICAgICAgc2lnc2V0X3Qgc2FfbWFzazsKICAgICAgICBpbnQgc2FfZmxhZ3M7Cn07CiMg
MjI1ICIuLi8uLi8uLi8uLi9zeXMvc2lnbmFsLmgiCnR5cGVkZWYgdm9pZCAoKnNpZ190KSAoaW50
KTsKCgoKCgoKc3RydWN0IHNpZ2FsdHN0YWNrMTMgewogICAgICAgIGNoYXIgKnNzX3NwOwogICAg
ICAgIGludCBzc19zaXplOwogICAgICAgIGludCBzc19mbGFnczsKfTsKCgoKCgp0eXBlZGVmIHN0
cnVjdAoKICAgICAgICAgICAgICAgc2lnYWx0c3RhY2sKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHsKICAgICAgICB2b2lkICpzc19zcDsKICAgICAgICBzaXplX3Qgc3Nfc2l6ZTsKICAgICAg
ICBpbnQgc3NfZmxhZ3M7Cn0gc3RhY2tfdDsKIyAyNjYgIi4uLy4uLy4uLy4uL3N5cy9zaWduYWwu
aCIKc3RydWN0IHNpZ3ZlYyB7CiAgICAgICAgdm9pZCAoKnN2X2hhbmRsZXIpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoaW50KTsKICAgICAgICBpbnQgc3ZfbWFzazsKICAgICAgICBpbnQg
c3ZfZmxhZ3M7Cn07CiMgMjg0ICIuLi8uLi8uLi8uLi9zeXMvc2lnbmFsLmgiCnN0cnVjdCBzaWdz
dGFjayB7CiAgICAgICAgdm9pZCAqc3Nfc3A7CiAgICAgICAgaW50IHNzX29uc3RhY2s7Cn07CgoK
IyAxICJtYWNoaW5lL3NpZ25hbC5oIiAxCiMgNDEgIm1hY2hpbmUvc2lnbmFsLmgiCnR5cGVkZWYg
aW50IHNpZ19hdG9taWNfdDsKCgoKCgoKIyAxICJtYWNoaW5lL3RyYXAuaCIgMQoKCgojIDEgIi4u
Ly4uLy4uLy4uL2FyY2gvaTM4Ni9pbmNsdWRlL3RyYXAuaCIgMQojIDUgIm1hY2hpbmUvdHJhcC5o
IiAyCiMgNDkgIm1hY2hpbmUvc2lnbmFsLmgiIDIKIyAxICJtYWNoaW5lL2ZwdS5oIiAxCiMgMTIg
Im1hY2hpbmUvZnB1LmgiCnN0cnVjdCBmeHNhdmU2NCB7CiAgICAgICAgICAgICAgICAgdV9pbnQ2
NF90IGZ4X2ZjdzoxNjsKICAgICAgICAgICAgICAgICB1X2ludDY0X3QgZnhfZnN3OjE2OwogICAg
ICAgICAgICAgICAgIHVfaW50NjRfdCBmeF91bnVzZWQxOjg7CiAgICAgICAgICAgICAgICAgdV9p
bnQ2NF90IGZ4X2Z0dzo4OwogICAgICAgICAgICAgICAgIHVfaW50NjRfdCBmeF9mb3A6MTY7CiAg
ICAgICAgICAgICAgICAgdV9pbnQ2NF90IGZ4X3JpcDsKICAgICAgICAgICAgICAgICB1X2ludDY0
X3QgZnhfZHA7CiAgICAgICAgICAgICAgICAgdV9pbnQ2NF90IGZ4X214Y3NyOjMyOwogICAgICAg
ICAgICAgICAgIHVfaW50NjRfdCBmeF91bnVzZWQyOjMyOwogICAgICAgICAgICAgICAgIHVfaW50
NjRfdCBmeF9zdFs4ICogMl07CiAgICAgICAgICAgICAgICAgdV9pbnQ2NF90IGZ4X3htbVsxNiAq
IDJdOwogICAgICAgICAgICAgICAgIHVfaW50OF90IGZ4X3VudXNlZDNbOTZdOwp9IF9fYXR0cmli
dXRlX18gKChhbGlnbmVkICgxNikpKTsKCgoKCnN0cnVjdCBvbGRmc2F2ZSB7CiAgICAgICAgdV9p
bnQxNl90IGZzX2NvbnRyb2w7CiAgICAgICAgdV9pbnQxNl90IGZzX3VudXNlZDA7CiAgICAgICAg
dV9pbnQxNl90IGZzX3N0YXR1czsKICAgICAgICB1X2ludDE2X3QgZnNfdW51c2VkMTsKICAgICAg
ICB1X2ludDE2X3QgZnNfdGFnOwogICAgICAgIHVfaW50MTZfdCBmc191bnVzZWQyOwogICAgICAg
IHVfaW50MzJfdCBmc19pcG9mZjsKICAgICAgICB1X2ludDE2X3QgZnNfaXBzZWw7CiAgICAgICAg
dV9pbnQxNl90IGZzX29wOwogICAgICAgIHVfaW50MzJfdCBmc19vcG9mZjsKICAgICAgICB1X2lu
dDE2X3QgZnNfb3BzZWw7Cn0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwojIDc1ICJtYWNoaW5l
L2ZwdS5oIgpzdHJ1Y3QgdHJhcGZyYW1lOwoKZXh0ZXJuIHZvaWQgZnB1aW5pdCh2b2lkKTsKZXh0
ZXJuIHZvaWQgZnB1ZHJvcCh2b2lkKTsKZXh0ZXJuIHZvaWQgZnB1c2F2ZSh2b2lkKTsKZXh0ZXJu
IHZvaWQgZnB1dHJhcChzdHJ1Y3QgdHJhcGZyYW1lICopOwoKZXh0ZXJuIHN0cnVjdCBwcm9jICpm
cHVwcm9jOwojIDUwICJtYWNoaW5lL3NpZ25hbC5oIiAyCiMgNTggIm1hY2hpbmUvc2lnbmFsLmgi
CnN0cnVjdCBzaWdjb250ZXh0IHsKICAgICAgICBpbnQgc2NfZ3M7CiAgICAgICAgaW50IHNjX2Zz
OwogICAgICAgIGludCBzY19lczsKICAgICAgICBpbnQgc2NfZHM7CiAgICAgICAgdV9pbnQ2NF90
IHNjX3I4OwogICAgICAgIHVfaW50NjRfdCBzY19yOTsKICAgICAgICB1X2ludDY0X3Qgc2NfcjEw
OwogICAgICAgIHVfaW50NjRfdCBzY19yMTE7CiAgICAgICAgdV9pbnQ2NF90IHNjX3IxMjsKICAg
ICAgICB1X2ludDY0X3Qgc2NfcjEzOwogICAgICAgIHVfaW50NjRfdCBzY19yMTQ7CiAgICAgICAg
dV9pbnQ2NF90IHNjX3IxNTsKICAgICAgICB1X2ludDY0X3Qgc2NfcmRpOwogICAgICAgIHVfaW50
NjRfdCBzY19yc2k7CiAgICAgICAgdV9pbnQ2NF90IHNjX3JicDsKICAgICAgICB1X2ludDY0X3Qg
c2NfcmJ4OwogICAgICAgIHVfaW50NjRfdCBzY19yZHg7CiAgICAgICAgdV9pbnQ2NF90IHNjX3Jj
eDsKICAgICAgICB1X2ludDY0X3Qgc2NfcmF4OwogICAgICAgIHVfaW50NjRfdCBzY190cmFwbm87
CiAgICAgICAgdV9pbnQ2NF90IHNjX2VycjsKICAgICAgICB1X2ludDY0X3Qgc2NfcmlwOwogICAg
ICAgIGludCBzY19jczsKICAgICAgICBpbnQgc2NfcGFkMDsKICAgICAgICB1X2ludDY0X3Qgc2Nf
ZWZsYWdzOwogICAgICAgIHVfaW50NjRfdCBzY19yc3Bfb25zaWc7CiAgICAgICAgc3RydWN0IGZ4
c2F2ZTY0ICpzY19mcHN0YXRlOwogICAgICAgIGludCBzY19zczsKICAgICAgICBpbnQgc2NfcGFk
MTsKCiAgICAgICAgc2lnc2V0X3Qgc2NfbWFzazsKICAgICAgICB1X2ludDY0X3Qgc2Nfb25zdGFj
azsKCiAgICAgICAgdV9pbnQ2NF90IHNjX3JzcDsKfTsKIyAyOTEgIi4uLy4uLy4uLy4uL3N5cy9z
aWduYWwuaCIgMgojIDMwOCAiLi4vLi4vLi4vLi4vc3lzL3NpZ25hbC5oIgoKdm9pZCAoKnNpZ25h
bCAoaW50LCB2b2lkICgqKSAoaW50KSkpIChpbnQpOwoKIyAxNDIgIi4uLy4uLy4uLy4uL3N5cy9w
YXJhbS5oIiAyCgoKIyAxICJtYWNoaW5lL3BhcmFtLmgiIDEKCgoKCgoKIyAxICJtYWNoaW5lL2Nw
dS5oIiAxCiMgNTAgIm1hY2hpbmUvY3B1LmgiCiMgMSAib3B0X211bHRpcHJvY2Vzc29yLmgiIDEK
IyA1MSAibWFjaGluZS9jcHUuaCIgMgojIDEgIm9wdF9sb2NrZGVidWcuaCIgMQojIDUyICJtYWNo
aW5lL2NwdS5oIiAyCgoKCgoKIyAxICJtYWNoaW5lL3BzbC5oIiAxCgoKCiMgMSAiLi4vLi4vLi4v
Li4vYXJjaC9pMzg2L2luY2x1ZGUvcHNsLmgiIDEKIyA3MCAiLi4vLi4vLi4vLi4vYXJjaC9pMzg2
L2luY2x1ZGUvcHNsLmgiCiMgMSAib3B0X3ZtODYuaCIgMQojIDcxICIuLi8uLi8uLi8uLi9hcmNo
L2kzODYvaW5jbHVkZS9wc2wuaCIgMgojIDc5ICIuLi8uLi8uLi8uLi9hcmNoL2kzODYvaW5jbHVk
ZS9wc2wuaCIKIyAxICJtYWNoaW5lL2ludHIuaCIgMQojIDc3ICJtYWNoaW5lL2ludHIuaCIKdm9s
YXRpbGUgaW50IGNwbCwgaXBlbmRpbmcsIGFzdHBlbmRpbmc7CmludCBpbWFza1sxMF07CgpleHRl
cm4gdm9pZCBYc3BsbG93ZXIgKHZvaWQpOwoKc3RhdGljIF9faW5saW5lIGludCBzcGxyYWlzZSAo
aW50KTsKc3RhdGljIF9faW5saW5lIHZvaWQgc3BsbG93ZXIgKGludCk7CnN0YXRpYyBfX2lubGlu
ZSB2b2lkIHNvZnRpbnRyIChpbnQpOwoKCgoKc3RhdGljIF9faW5saW5lIGludApzcGxyYWlzZShu
Y3BsKQogICAgICAgIHJlZ2lzdGVyIGludCBuY3BsOwp7CiAgICAgICAgcmVnaXN0ZXIgaW50IG9j
cGwgPSBjcGw7CgogICAgICAgIGNwbCA9IG9jcGwgfCBuY3BsOwogICAgICAgIHJldHVybiAob2Nw
bCk7Cn0KCgoKCgpzdGF0aWMgX19pbmxpbmUgdm9pZApzcGxsb3dlcihuY3BsKQogICAgICAgIHJl
Z2lzdGVyIGludCBuY3BsOwp7CgogICAgICAgIGNwbCA9IG5jcGw7CiAgICAgICAgaWYgKGlwZW5k
aW5nICYgfm5jcGwpCiAgICAgICAgICAgICAgICBYc3BsbG93ZXIoKTsKfQojIDE1MyAibWFjaGlu
ZS9pbnRyLmgiCnN0YXRpYyBfX2lubGluZSB2b2lkCnNvZnRpbnRyKG1hc2spCiAgICAgICAgcmVn
aXN0ZXIgaW50IG1hc2s7CnsKICAgICAgICBfX2FzbSB2b2xhdGlsZSgib3JsICUxLCAlMCIgOiAi
PW0iKGlwZW5kaW5nKSA6ICJpciIgKDEgPDwgbWFzaykpOwp9CiMgODAgIi4uLy4uLy4uLy4uL2Fy
Y2gvaTM4Ni9pbmNsdWRlL3BzbC5oIiAyCiMgNSAibWFjaGluZS9wc2wuaCIgMgojIDU4ICJtYWNo
aW5lL2NwdS5oIiAyCiMgMSAibWFjaGluZS9mcmFtZS5oIiAxCiMgOTQgIm1hY2hpbmUvZnJhbWUu
aCIKc3RydWN0IHRyYXBmcmFtZSB7CiAgICAgICAgX19pbnQ2NF90IHRmX3IxNTsKICAgICAgICBf
X2ludDY0X3QgdGZfcjE0OwogICAgICAgIF9faW50NjRfdCB0Zl9yMTM7CiAgICAgICAgX19pbnQ2
NF90IHRmX3IxMjsKICAgICAgICBfX2ludDY0X3QgdGZfcjExOwogICAgICAgIF9faW50NjRfdCB0
Zl9yMTA7CiAgICAgICAgX19pbnQ2NF90IHRmX3I5OwogICAgICAgIF9faW50NjRfdCB0Zl9yODsK
ICAgICAgICBfX2ludDY0X3QgdGZfcmRpOwogICAgICAgIF9faW50NjRfdCB0Zl9yc2k7CiAgICAg
ICAgX19pbnQ2NF90IHRmX3JicDsKICAgICAgICBfX2ludDY0X3QgdGZfcmJ4OwogICAgICAgIF9f
aW50NjRfdCB0Zl9yZHg7CiAgICAgICAgX19pbnQ2NF90IHRmX3JjeDsKICAgICAgICBfX2ludDY0
X3QgdGZfcmF4OwogICAgICAgIF9faW50NjRfdCB0Zl90cmFwbm87CgogICAgICAgIF9faW50NjRf
dCB0Zl9lcnI7CiAgICAgICAgX19pbnQ2NF90IHRmX3JpcDsKICAgICAgICBfX2ludDY0X3QgdGZf
Y3M7CiAgICAgICAgX19pbnQ2NF90IHRmX2VmbGFnczsKCiAgICAgICAgX19pbnQ2NF90IHRmX3Jz
cDsKICAgICAgICBfX2ludDY0X3QgdGZfc3M7Cn07CgoKCgpzdHJ1Y3QgaW50cmZyYW1lIHsKICAg
ICAgICBfX2ludDY0X3QgaWZfcHBsOwogICAgICAgIF9faW50NjRfdCBpZl9yMTU7CiAgICAgICAg
X19pbnQ2NF90IGlmX3IxNDsKICAgICAgICBfX2ludDY0X3QgaWZfcjEzOwogICAgICAgIF9faW50
NjRfdCBpZl9yMTI7CiAgICAgICAgX19pbnQ2NF90IGlmX3IxMTsKICAgICAgICBfX2ludDY0X3Qg
aWZfcjEwOwogICAgICAgIF9faW50NjRfdCBpZl9yOTsKICAgICAgICBfX2ludDY0X3QgaWZfcjg7
CiAgICAgICAgX19pbnQ2NF90IGlmX3JkaTsKICAgICAgICBfX2ludDY0X3QgaWZfcnNpOwogICAg
ICAgIF9faW50NjRfdCBpZl9yYnA7CiAgICAgICAgX19pbnQ2NF90IGlmX3JieDsKICAgICAgICBf
X2ludDY0X3QgaWZfcmR4OwogICAgICAgIF9faW50NjRfdCBpZl9yY3g7CiAgICAgICAgX19pbnQ2
NF90IGlmX3JheDsKICAgICAgICB1X2ludDY0X3QgX19pZl90cmFwbm87CiAgICAgICAgdV9pbnQ2
NF90IF9faWZfZXJyOwoKICAgICAgICBfX2ludDY0X3QgaWZfcmlwOwogICAgICAgIF9faW50NjRf
dCBpZl9jczsKICAgICAgICBfX2ludDY0X3QgaWZfZWZsYWdzOwoKICAgICAgICBfX2ludDY0X3Qg
aWZfcnNwOwogICAgICAgIF9faW50NjRfdCBpZl9zczsKfTsKCgoKCnN0cnVjdCBzd2l0Y2hmcmFt
ZSB7CiAgICAgICAgX19pbnQ2NF90IHNmX3BwbDsKICAgICAgICBfX2ludDY0X3Qgc2ZfcjE1Owog
ICAgICAgIF9faW50NjRfdCBzZl9yMTQ7CiAgICAgICAgX19pbnQ2NF90IHNmX3IxMzsKICAgICAg
ICBfX2ludDY0X3Qgc2ZfcjEyOwogICAgICAgIF9faW50NjRfdCBzZl9yYnA7CiAgICAgICAgX19p
bnQ2NF90IHNmX3JieDsKICAgICAgICBfX2ludDY0X3Qgc2ZfcmlwOwp9OwoKCgoKc3RydWN0IHNp
Z2ZyYW1lIHsKICAgICAgICBfX2ludDY0X3Qgc2Zfc2lnbnVtOwogICAgICAgIF9faW50NjRfdCBz
Zl9jb2RlOwogICAgICAgIHN0cnVjdCBzaWdjb250ZXh0ICpzZl9zY3A7CiAgICAgICAgc2lnX3Qg
c2ZfaGFuZGxlcjsKICAgICAgICBzdHJ1Y3Qgc2lnY29udGV4dCBzZl9zYzsKICAgICAgICBzdHJ1
Y3QgZnhzYXZlNjQgKnNmX2ZwcDsKICAgICAgICBzdHJ1Y3QgZnhzYXZlNjQgc2ZfZnA7Cn07CiMg
NTkgIm1hY2hpbmUvY3B1LmgiIDIKIyAxICJtYWNoaW5lL3NlZ21lbnRzLmgiIDEKIyAxMDEgIm1h
Y2hpbmUvc2VnbWVudHMuaCIKc3RydWN0IHN5c19zZWdtZW50X2Rlc2NyaXB0b3IgewogICAgICAg
ICAgICAgICAgIHVfaW50NjRfdCBzZF9sb2xpbWl0OjE2OwogICAgICAgICAgICAgICAgIHVfaW50
NjRfdCBzZF9sb2Jhc2U6MjQ7CiAgICAgICAgICAgICAgICAgdV9pbnQ2NF90IHNkX3R5cGU6NTsK
ICAgICAgICAgICAgICAgICB1X2ludDY0X3Qgc2RfZHBsOjI7CiAgICAgICAgICAgICAgICAgdV9p
bnQ2NF90IHNkX3A6MTsKICAgICAgICAgICAgICAgICB1X2ludDY0X3Qgc2RfaGlsaW1pdDo0Owog
ICAgICAgICAgICAgICAgIHVfaW50NjRfdCBzZF94eDE6MzsKICAgICAgICAgICAgICAgICB1X2lu
dDY0X3Qgc2RfZ3JhbjoxOwogICAgICAgICAgICAgICAgIHVfaW50NjRfdCBzZF9oaWJhc2U6NDA7
CiAgICAgICAgICAgICAgICAgdV9pbnQ2NF90IHNkX3h4Mjo4OwogICAgICAgICAgICAgICAgIHVf
aW50NjRfdCBzZF96ZXJvOjU7CiAgICAgICAgICAgICAgICAgdV9pbnQ2NF90IHNkX3h4MzoxOTsK
fSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKCgoKCnN0cnVjdCBtZW1fc2VnbWVudF9kZXNjcmlw
dG9yIHsKICAgICAgICB1bnNpZ25lZCBzZF9sb2xpbWl0OjE2OwogICAgICAgIHVuc2lnbmVkIHNk
X2xvYmFzZToyNDsKICAgICAgICB1bnNpZ25lZCBzZF90eXBlOjU7CiAgICAgICAgdW5zaWduZWQg
c2RfZHBsOjI7CiAgICAgICAgdW5zaWduZWQgc2RfcDoxOwogICAgICAgIHVuc2lnbmVkIHNkX2hp
bGltaXQ6NDsKICAgICAgICB1bnNpZ25lZCBzZF9hdmw6MTsKICAgICAgICB1bnNpZ25lZCBzZF9s
b25nOjE7CiAgICAgICAgdW5zaWduZWQgc2RfZGVmMzI6MTsKICAgICAgICB1bnNpZ25lZCBzZF9n
cmFuOjE7CiAgICAgICAgdW5zaWduZWQgc2RfaGliYXNlOjg7Cn0gX19hdHRyaWJ1dGVfXygocGFj
a2VkKSk7CgoKCgpzdHJ1Y3QgZ2F0ZV9kZXNjcmlwdG9yIHsKICAgICAgICAgICAgICAgICB1X2lu
dDY0X3QgZ2RfbG9vZmZzZXQ6MTY7CiAgICAgICAgICAgICAgICAgdV9pbnQ2NF90IGdkX3NlbGVj
dG9yOjE2OwogICAgICAgICAgICAgICAgIHVfaW50NjRfdCBnZF9pc3Q6MzsKICAgICAgICAgICAg
ICAgICB1X2ludDY0X3QgZ2RfeHgxOjU7CiAgICAgICAgICAgICAgICAgdV9pbnQ2NF90IGdkX3R5
cGU6NTsKICAgICAgICAgICAgICAgICB1X2ludDY0X3QgZ2RfZHBsOjI7CiAgICAgICAgICAgICAg
ICAgdV9pbnQ2NF90IGdkX3A6MTsKICAgICAgICAgICAgICAgICB1X2ludDY0X3QgZ2RfaGlvZmZz
ZXQ6NDg7CiAgICAgICAgICAgICAgICAgdV9pbnQ2NF90IGdkX3h4Mjo4OwogICAgICAgICAgICAg
ICAgIHVfaW50NjRfdCBnZF96ZXJvOjU7CiAgICAgICAgICAgICAgICAgdV9pbnQ2NF90IGdkX3h4
MzoxOTsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKCgoKCnN0cnVjdCByZWdpb25fZGVzY3Jp
cHRvciB7CiAgICAgICAgdV9pbnQxNl90IHJkX2xpbWl0OwogICAgICAgIHVfaW50NjRfdCByZF9i
YXNlOwp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoKCmV4dGVybiBzdHJ1Y3Qgc3lzX3NlZ21l
bnRfZGVzY3JpcHRvciAqbGR0OwpleHRlcm4gc3RydWN0IGdhdGVfZGVzY3JpcHRvciAqaWR0Owpl
eHRlcm4gY2hhciAqZ2R0c3RvcmU7Cgp2b2lkIHNldGdhdGUgKHN0cnVjdCBnYXRlX2Rlc2NyaXB0
b3IgKiwgdm9pZCAqLCBpbnQsIGludCwgaW50KTsKdm9pZCBzZXRyZWdpb24gKHN0cnVjdCByZWdp
b25fZGVzY3JpcHRvciAqLCB2b2lkICosIHVfaW50MTZfdCk7CnZvaWQgc2V0X3N5c19zZWdtZW50
IChzdHJ1Y3Qgc3lzX3NlZ21lbnRfZGVzY3JpcHRvciAqLCB2b2lkICosIHNpemVfdCwgaW50LCBp
bnQsIGludCk7Cgp2b2lkIHNldF9tZW1fc2VnbWVudCAoc3RydWN0IG1lbV9zZWdtZW50X2Rlc2Ny
aXB0b3IgKiwgdm9pZCAqLCBzaXplX3QsIGludCwgaW50LCBpbnQsIGludCwgaW50KTsKIyA2MCAi
bWFjaGluZS9jcHUuaCIgMgoKIyAxICIuLi8uLi8uLi8uLi9zeXMvc2NoZWQuaCIgMQojIDgzICIu
Li8uLi8uLi8uLi9zeXMvc2NoZWQuaCIKIyAxICJvcHRfbXVsdGlwcm9jZXNzb3IuaCIgMQojIDg0
ICIuLi8uLi8uLi8uLi9zeXMvc2NoZWQuaCIgMgojIDEgIm9wdF9sb2NrZGVidWcuaCIgMQojIDg1
ICIuLi8uLi8uLi8uLi9zeXMvc2NoZWQuaCIgMgojIDEwNSAiLi4vLi4vLi4vLi4vc3lzL3NjaGVk
LmgiCnN0cnVjdCBzbHBxdWUgewogICAgICAgIHN0cnVjdCBwcm9jICpzcV9oZWFkOwogICAgICAg
IHN0cnVjdCBwcm9jICoqc3FfdGFpbHA7Cn07CiMgMTIwICIuLi8uLi8uLi8uLi9zeXMvc2NoZWQu
aCIKc3RydWN0IHByb2NoZCB7CiAgICAgICAgc3RydWN0IHByb2MgKnBoX2xpbms7CiAgICAgICAg
c3RydWN0IHByb2MgKnBoX3JsaW5rOwp9OwojIDE0MCAiLi4vLi4vLi4vLi4vc3lzL3NjaGVkLmgi
CnN0cnVjdCBzY2hlZHN0YXRlX3BlcmNwdSB7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgc3BjX3J1
bnRpbWU7CiAgICAgICAgdm9sYXRpbGUgaW50IHNwY19mbGFnczsKICAgICAgICB1X2ludCBzcGNf
c2NoZWR0aWNrczsKICAgICAgICB1X2ludDY0X3Qgc3BjX2NwX3RpbWVbNV07CiAgICAgICAgdV9j
aGFyIHNwY19jdXJwcmlvcml0eTsKICAgICAgICBpbnQgc3BjX3JydGlja3M7CiAgICAgICAgaW50
IHNwY19wc2NudDsKICAgICAgICBpbnQgc3BjX3BzZGl2Owp9OwojIDE3OSAiLi4vLi4vLi4vLi4v
c3lzL3NjaGVkLmgiCmV4dGVybiBpbnQgc2NoZWRoejsKZXh0ZXJuIGludCBycnRpY2tzOwojIDE5
MCAiLi4vLi4vLi4vLi4vc3lzL3NjaGVkLmgiCmV4dGVybiBzdHJ1Y3QgcHJvY2hkIHNjaGVkX3Fz
W107CmV4dGVybiBzdHJ1Y3Qgc2xwcXVlIHNjaGVkX3NscHF1ZVtdOwpleHRlcm4gdm9sYXRpbGUg
dV9pbnQzMl90IHNjaGVkX3doaWNocXM7CgoKCnN0cnVjdCBwcm9jOwpzdHJ1Y3QgY3B1X2luZm87
Cgp2b2lkIHNjaGVkY2xvY2soc3RydWN0IHByb2MgKnApOwp2b2lkIHNjaGVkX3dha2V1cCh2b2lk
ICopOwp2b2lkIHJvdW5kcm9iaW4oc3RydWN0IGNwdV9pbmZvICopOwojIDYyICJtYWNoaW5lL2Nw
dS5oIiAyCnN0cnVjdCBjcHVfaW5mbyB7CiAgICAgICAgc3RydWN0IHNjaGVkc3RhdGVfcGVyY3B1
IGNpX3NjaGVkc3RhdGU7CgoKCgp9OwoKCmV4dGVybiBzdHJ1Y3QgY3B1X2luZm8gY3B1X2luZm9f
c3RvcmU7CiMgMTA3ICJtYWNoaW5lL2NwdS5oIgppbnQgd2FudF9yZXNjaGVkOwojIDEzMyAibWFj
aGluZS9jcHUuaCIKZXh0ZXJuIGludCBiaW9zYmFzZW1lbTsKZXh0ZXJuIGludCBiaW9zZXh0bWVt
OwpleHRlcm4gaW50IGNwdTsKZXh0ZXJuIGludCBjcHVfZmVhdHVyZTsKZXh0ZXJuIGludCBjcHVf
aWQ7CmV4dGVybiBjaGFyIGNwdV92ZW5kb3JbXTsKZXh0ZXJuIGludCBjcHVpZF9sZXZlbDsKCgp2
b2lkIGRlbGF5IChpbnQpOwp2b2lkIGR1bXBjb25mICh2b2lkKTsKdm9pZCBjcHVfcmVzZXQgKHZv
aWQpOwp2b2lkIHg4Nl82NF9wcm9jMF90c3NfbGR0X2luaXQgKHZvaWQpOwp2b2lkIHg4Nl82NF9i
dWZpbml0ICh2b2lkKTsKCgpzdHJ1Y3QgcmVnaW9uX2Rlc2NyaXB0b3I7CnZvaWQgbGdkdCAoc3Ry
dWN0IHJlZ2lvbl9kZXNjcmlwdG9yICopOwp2b2lkIGZpbGx3IChzaG9ydCwgdm9pZCAqLCBzaXpl
X3QpOwoKc3RydWN0IHBjYjsKdm9pZCBzYXZlY3R4IChzdHJ1Y3QgcGNiICopOwp2b2lkIHN3aXRj
aF9leGl0IChzdHJ1Y3QgcHJvYyAqKTsKdm9pZCBwcm9jX3RyYW1wb2xpbmUgKHZvaWQpOwoKCnZv
aWQgaW5pdHJ0Y2xvY2sgKHZvaWQpOwp2b2lkIHN0YXJ0cnRjbG9jayAodm9pZCk7CgoKaW50IGt2
dG9wIChfX2NhZGRyX3QpOwojIDE3MiAibWFjaGluZS9jcHUuaCIKdm9pZCBpc2FfZGVmYXVsdGly
cSAodm9pZCk7CmludCBpc2Ffbm1pICh2b2lkKTsKCgp2b2lkIGNoaWxkX3JldHVybiAodm9pZCAq
KTsKCgp2b2lkIGtnZGJfcG9ydF9pbml0ICh2b2lkKTsKCgp2b2lkIHg4Nl82NF9idXNfc3BhY2Vf
aW5pdCAodm9pZCk7CnZvaWQgeDg2XzY0X2J1c19zcGFjZV9tYWxsb2NvayAodm9pZCk7CiMgMjE3
ICJtYWNoaW5lL2NwdS5oIgpzdHJ1Y3QgZGlza2xpc3QgewogICAgICAgIGludCBkbF9uYmlvc2Rp
c2tzOwogICAgICAgIHN0cnVjdCBiaW9zZGlza19pbmZvIHsKICAgICAgICAgICAgICAgIGludCBi
aV9kZXY7CiAgICAgICAgICAgICAgICBpbnQgYmlfY3lsOwogICAgICAgICAgICAgICAgaW50IGJp
X2hlYWQ7CiAgICAgICAgICAgICAgICBpbnQgYmlfc2VjOwogICAgICAgICAgICAgICAgdV9pbnQ2
NF90IGJpX2xiYXNlY3M7CgoKICAgICAgICAgICAgICAgIGludCBiaV9mbGFnczsKICAgICAgICB9
IGRsX2Jpb3NkaXNrc1sxNl07CgogICAgICAgIGludCBkbF9ubmF0aXZlZGlza3M7CiAgICAgICAg
c3RydWN0IG5hdGl2ZWRpc2tfaW5mbyB7CiAgICAgICAgICAgICAgICBjaGFyIG5pX2Rldm5hbWVb
MTZdOwogICAgICAgICAgICAgICAgaW50IG5pX25tYXRjaGVzOwogICAgICAgICAgICAgICAgaW50
IG5pX2Jpb3NtYXRjaGVzWzE2XTsKICAgICAgICB9IGRsX25hdGl2ZWRpc2tzWzFdOwp9OwojIDgg
Im1hY2hpbmUvcGFyYW0uaCIgMgojIDg4ICJtYWNoaW5lL3BhcmFtLmgiCiMgMSAib3B0X2dhdGV3
YXkuaCIgMQojIDg5ICJtYWNoaW5lL3BhcmFtLmgiIDIKIyAxNDUgIi4uLy4uLy4uLy4uL3N5cy9w
YXJhbS5oIiAyCiMgMSAibWFjaGluZS9saW1pdHMuaCIgMQojIDE0NiAiLi4vLi4vLi4vLi4vc3lz
L3BhcmFtLmgiIDIKIyA4NSAiYW03OTkwLmMiIDIKIyAxICIuLi8uLi8uLi8uLi9zeXMvc3lzdG0u
aCIgMQojIDc1ICIuLi8uLi8uLi8uLi9zeXMvc3lzdG0uaCIKIyAxICJvcHRfZGRiLmgiIDEKIyA3
NiAiLi4vLi4vLi4vLi4vc3lzL3N5c3RtLmgiIDIKIyAxICJvcHRfbXVsdGlwcm9jZXNzb3IuaCIg
MQojIDc3ICIuLi8uLi8uLi8uLi9zeXMvc3lzdG0uaCIgMgoKCiMgMSAibWFjaGluZS9lbmRpYW4u
aCIgMQojIDgwICIuLi8uLi8uLi8uLi9zeXMvc3lzdG0uaCIgMgoKc3RydWN0IGludHJmcmFtZTsK
c3RydWN0IGRldmljZTsKc3RydWN0IHByb2M7CnN0cnVjdCB0aW1ldmFsOwpzdHJ1Y3QgdHR5Owpz
dHJ1Y3QgdWlvOwpzdHJ1Y3Qgdm5vZGU7CgpleHRlcm4gaW50IHNlY3VyZWxldmVsOwpleHRlcm4g
Y29uc3QgY2hhciAqcGFuaWNzdHI7CmV4dGVybiBpbnQgZG9pbmdfc2h1dGRvd247CgpleHRlcm4g
Y29uc3QgY2hhciBjb3B5cmlnaHRbXTsKZXh0ZXJuIGNoYXIgY3B1X21vZGVsW107CmV4dGVybiBj
aGFyIG1hY2hpbmVbXTsKZXh0ZXJuIGNoYXIgbWFjaGluZV9hcmNoW107CmV4dGVybiBjb25zdCBj
aGFyIG9zcmVsZWFzZVtdOwpleHRlcm4gY29uc3QgY2hhciBvc3R5cGVbXTsKZXh0ZXJuIGNvbnN0
IGNoYXIgdmVyc2lvbltdOwoKZXh0ZXJuIGludCBhdXRvbmljZXRpbWU7CmV4dGVybiBpbnQgYXV0
b25pY2V2YWw7CgpleHRlcm4gaW50IG5ibGtkZXY7CmV4dGVybiBpbnQgbmNocmRldjsKCmV4dGVy
biBpbnQgc2Vsd2FpdDsKCmV4dGVybiBpbnQgbWF4bWVtOwpleHRlcm4gaW50IHBoeXNtZW07Cgpl
eHRlcm4gZGV2X3QgZHVtcGRldjsKZXh0ZXJuIGxvbmcgZHVtcGxvOwpleHRlcm4gaW50IGR1bXBz
aXplOwpleHRlcm4gY29uc3QgY2hhciAqZHVtcHNwZWM7CgpleHRlcm4gZGV2X3Qgcm9vdGRldjsK
ZXh0ZXJuIHN0cnVjdCB2bm9kZSAqcm9vdHZwOwpleHRlcm4gc3RydWN0IGRldmljZSAqcm9vdF9k
ZXZpY2U7CmV4dGVybiBjb25zdCBjaGFyICpyb290c3BlYzsKCgoKCgoKZXh0ZXJuIGRldl90IHN3
YXBkZXY7CmV4dGVybiBzdHJ1Y3Qgdm5vZGUgKnN3YXBkZXZfdnA7Cgp0eXBlZGVmIGludCBzeV9j
YWxsX3Qoc3RydWN0IHByb2MgKiwgdm9pZCAqLCByZWdpc3Rlcl90ICopOwoKZXh0ZXJuIHN0cnVj
dCBzeXNlbnQgewogICAgICAgIHNob3J0IHN5X25hcmc7CiAgICAgICAgc2hvcnQgc3lfYXJnc2l6
ZTsKICAgICAgICBpbnQgc3lfZmxhZ3M7CiAgICAgICAgc3lfY2FsbF90ICpzeV9jYWxsOwp9IHN5
c2VudFtdOwpleHRlcm4gaW50IG5zeXNlbnQ7CiMgMTQ5ICIuLi8uLi8uLi8uLi9zeXMvc3lzdG0u
aCIKZXh0ZXJuIGludCBib290aG93dG87CgoKCmV4dGVybiB2b2lkICgqdl9wdXRjKSAoaW50KTsK
CmV4dGVybiB2b2lkIF9pbnNxdWUgKHZvaWQgKiwgdm9pZCAqKTsKZXh0ZXJuIHZvaWQgX3JlbXF1
ZSAodm9pZCAqKTsKIyAxNjUgIi4uLy4uLy4uLy4uL3N5cy9zeXN0bS5oIgppbnQgbnVsbG9wICh2
b2lkICopOwppbnQgZW5vZGV2ICh2b2lkKTsKaW50IGVub3N5cyAodm9pZCk7CmludCBlbm9pb2N0
bCAodm9pZCk7CmludCBlbnhpbyAodm9pZCk7CmludCBlb3Bub3RzdXBwICh2b2lkKTsKCgoKCgpl
bnVtIGhhc2h0eXBlIHsKICAgICAgICBIQVNIX0xJU1QsCiAgICAgICAgSEFTSF9UQUlMUQp9OwoK
dm9pZCAqaGFzaGluaXQgKGludCwgZW51bSBoYXNodHlwZSwgaW50LCBpbnQsIHVfbG9uZyAqKTsK
dm9pZCBoYXNoZG9uZSAodm9pZCAqLCBpbnQpOwppbnQgc2VsdHJ1ZSAoZGV2X3QsIGludCwgc3Ry
dWN0IHByb2MgKik7CmludCBzeXNfbm9zeXMgKHN0cnVjdCBwcm9jICosIHZvaWQgKiwgcmVnaXN0
ZXJfdCAqKTsKCgoKdm9pZCBwcmludGYgKGNvbnN0IGNoYXIgKiwgLi4uKQogICAgX19hdHRyaWJ1
dGVfXygoX19mb3JtYXRfXyhfX3ByaW50Zl9fLDEsMikpKTsKaW50IHNwcmludGYgKGNoYXIgKiwg
Y29uc3QgY2hhciAqLCAuLi4pCiAgICBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKF9fcHJpbnRm
X18sMiwzKSkpOwppbnQgc25wcmludGYgKGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIC4u
LikKICAgIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18oX19wcmludGZfXywzLDQpKSk7CnZvaWQg
dnByaW50ZiAoY29uc3QgY2hhciAqLCBfX2J1aWx0aW5fdmFfbGlzdCk7CmludCB2c3ByaW50ZiAo
Y2hhciAqLCBjb25zdCBjaGFyICosIF9fYnVpbHRpbl92YV9saXN0KTsKaW50IHZzbnByaW50ZiAo
Y2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwgX19idWlsdGluX3ZhX2xpc3QpOwoKCnZvaWQg
cGFuaWMgKGNvbnN0IGNoYXIgKiwgLi4uKQogICAgX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9f
LF9fZm9ybWF0X18oX19wcmludGZfXywxLDIpKSk7CnZvaWQgdXByaW50ZiAoY29uc3QgY2hhciAq
LCAuLi4pCiAgICBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKF9fcHJpbnRmX18sMSwyKSkpOwp2
b2lkIHR0eXByaW50ZiAoc3RydWN0IHR0eSAqLCBjb25zdCBjaGFyICosIC4uLikKICAgIF9fYXR0
cmlidXRlX18oKF9fZm9ybWF0X18oX19wcmludGZfXywyLDMpKSk7CgpjaGFyICpiaXRtYXNrX3Nu
cHJpbnRmICh1X3F1YWRfdCwgY29uc3QgY2hhciAqLCBjaGFyICosIHNpemVfdCk7CgppbnQgaHVt
YW5pemVfbnVtYmVyIChjaGFyICosIHNpemVfdCwgdV9pbnQ2NF90LCBjb25zdCBjaGFyICosIGlu
dCk7CmludCBmb3JtYXRfYnl0ZXMgKGNoYXIgKiwgc2l6ZV90LCB1X2ludDY0X3QpOwoKdm9pZCB0
YWJsZWZ1bGwgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKCmludCBrY29weSAoY29uc3Qg
dm9pZCAqLCB2b2lkICosIHNpemVfdCk7CgoKCgoKCgppbnQgY29weXN0ciAoY29uc3Qgdm9pZCAq
LCB2b2lkICosIHNpemVfdCwgc2l6ZV90ICopOwppbnQgY29weWluc3RyIChjb25zdCB2b2lkICos
IHZvaWQgKiwgc2l6ZV90LCBzaXplX3QgKik7CmludCBjb3B5b3V0c3RyIChjb25zdCB2b2lkICos
IHZvaWQgKiwgc2l6ZV90LCBzaXplX3QgKik7CmludCBjb3B5aW4gKGNvbnN0IHZvaWQgKiwgdm9p
ZCAqLCBzaXplX3QpOwppbnQgY29weW91dCAoY29uc3Qgdm9pZCAqLCB2b2lkICosIHNpemVfdCk7
CgppbnQgc3VieXRlICh2b2lkICosIGludCk7CmludCBzdWlieXRlICh2b2lkICosIGludCk7Cmlu
dCBzdXN3b3JkICh2b2lkICosIHNob3J0KTsKaW50IHN1aXN3b3JkICh2b2lkICosIHNob3J0KTsK
aW50IHN1c3dpbnRyICh2b2lkICosIHNob3J0KTsKaW50IHN1d29yZCAodm9pZCAqLCBsb25nKTsK
aW50IHN1aXdvcmQgKHZvaWQgKiwgbG9uZyk7CgppbnQgZnVieXRlIChjb25zdCB2b2lkICopOwpp
bnQgZnVpYnl0ZSAoY29uc3Qgdm9pZCAqKTsKaW50IGZ1c3dvcmQgKGNvbnN0IHZvaWQgKik7Cmlu
dCBmdWlzd29yZCAoY29uc3Qgdm9pZCAqKTsKaW50IGZ1c3dpbnRyIChjb25zdCB2b2lkICopOwps
b25nIGZ1d29yZCAoY29uc3Qgdm9pZCAqKTsKbG9uZyBmdWl3b3JkIChjb25zdCB2b2lkICopOwoK
aW50IGh6dG8gKHN0cnVjdCB0aW1ldmFsICopOwp2b2lkIHJlYWxpdGV4cGlyZSAodm9pZCAqKTsK
CnZvaWQgaGFyZGNsb2NrIChzdHJ1Y3QgaW50cmZyYW1lICopOwoKdm9pZCBzb2Z0Y2xvY2sgKHZv
aWQgKik7Cgp2b2lkIHN0YXRjbG9jayAoc3RydWN0IGludHJmcmFtZSAqKTsKCgoKCgoKCnZvaWQg
aW5pdGNsb2NrcyAodm9pZCk7CnZvaWQgaW5pdHRvZHIgKHRpbWVfdCk7CnZvaWQgcmVzZXR0b2Ry
ICh2b2lkKTsKdm9pZCBjcHVfaW5pdGNsb2NrcyAodm9pZCk7Cgp2b2lkIHN0YXJ0cHJvZmNsb2Nr
IChzdHJ1Y3QgcHJvYyAqKTsKdm9pZCBzdG9wcHJvZmNsb2NrIChzdHJ1Y3QgcHJvYyAqKTsKdm9p
ZCBzZXRzdGF0Y2xvY2tyYXRlIChpbnQpOwoKCgoKCnZvaWQgKnNodXRkb3duaG9va19lc3RhYmxp
c2ggKHZvaWQgKCopKHZvaWQgKiksIHZvaWQgKik7CnZvaWQgc2h1dGRvd25ob29rX2Rpc2VzdGFi
bGlzaCAodm9pZCAqKTsKdm9pZCBkb3NodXRkb3duaG9va3MgKHZvaWQpOwoKCgoKdm9pZCAqcG93
ZXJob29rX2VzdGFibGlzaCAodm9pZCAoKikoaW50LCB2b2lkICopLCB2b2lkICopOwp2b2lkIHBv
d2VyaG9va19kaXNlc3RhYmxpc2ggKHZvaWQgKik7CnZvaWQgZG9wb3dlcmhvb2tzIChpbnQpOwoj
IDI5MyAiLi4vLi4vLi4vLi4vc3lzL3N5c3RtLmgiCmV4dGVybiBpbnQgKCptb3VudHJvb3QpKHZv
aWQpOwp2b2lkICptb3VudHJvb3Rob29rX2VzdGFibGlzaCAodm9pZCAoKikoc3RydWN0IGRldmlj
ZSAqKSwgc3RydWN0IGRldmljZSAqKTsKCnZvaWQgbW91bnRyb290aG9va19kaXNlc3RhYmxpc2gg
KHZvaWQgKik7CnZvaWQgbW91bnRyb290aG9va19kZXN0cm95ICh2b2lkKTsKdm9pZCBkb21vdW50
cm9vdGhvb2sgKHZvaWQpOwoKCgoKCnZvaWQgKmV4ZWNob29rX2VzdGFibGlzaCAodm9pZCAoKiko
c3RydWN0IHByb2MgKiwgdm9pZCAqKSwgdm9pZCAqKTsKdm9pZCBleGVjaG9va19kaXNlc3RhYmxp
c2ggKHZvaWQgKik7CnZvaWQgZG9leGVjaG9va3MgKHN0cnVjdCBwcm9jICopOwoKCgoKdm9pZCAq
ZXhpdGhvb2tfZXN0YWJsaXNoICh2b2lkICgqKShzdHJ1Y3QgcHJvYyAqLCB2b2lkICopLCB2b2lk
ICopOwp2b2lkIGV4aXRob29rX2Rpc2VzdGFibGlzaCAodm9pZCAqKTsKdm9pZCBkb2V4aXRob29r
cyAoc3RydWN0IHByb2MgKik7CgppbnQgdWlvbW92ZSAodm9pZCAqLCBpbnQsIHN0cnVjdCB1aW8g
Kik7CgoKX19jYWRkcl90IGFsbG9jc3lzIChfX2NhZGRyX3QsIF9fY2FkZHJfdCAoKikoX19jYWRk
cl90KSk7CgoKCmludCBzZXRqbXAgKGxhYmVsX3QgKik7CnZvaWQgbG9uZ2ptcCAobGFiZWxfdCAq
KTsKCgp2b2lkIGNvbnNpbml0ICh2b2lkKTsKCnZvaWQgY3B1X3N0YXJ0dXAgKHZvaWQpOwp2b2lk
IGNwdV9jb25maWd1cmUgKHZvaWQpOwp2b2lkIGNwdV9yb290Y29uZiAodm9pZCk7CnZvaWQgY3B1
X2R1bXBjb25mICh2b2lkKTsKCgoKCgoKIyAxICIuLi8uLi8uLi8uLi9saWIvbGlia2Vybi9saWJr
ZXJuLmgiIDEKIyA0OCAiLi4vLi4vLi4vLi4vbGliL2xpYmtlcm4vbGlia2Vybi5oIgpzdGF0aWMg
X19pbmxpbmUgaW50IGltYXggKGludCwgaW50KSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7CnN0
YXRpYyBfX2lubGluZSBpbnQgaW1pbiAoaW50LCBpbnQpIF9fYXR0cmlidXRlX18gKCh1bnVzZWQp
KTsKc3RhdGljIF9faW5saW5lIHVfaW50IG1heCAodV9pbnQsIHVfaW50KSBfX2F0dHJpYnV0ZV9f
ICgodW51c2VkKSk7CnN0YXRpYyBfX2lubGluZSB1X2ludCBtaW4gKHVfaW50LCB1X2ludCkgX19h
dHRyaWJ1dGVfXyAoKHVudXNlZCkpOwpzdGF0aWMgX19pbmxpbmUgbG9uZyBsbWF4IChsb25nLCBs
b25nKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7CnN0YXRpYyBfX2lubGluZSBsb25nIGxtaW4g
KGxvbmcsIGxvbmcpIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKc3RhdGljIF9faW5saW5lIHVf
bG9uZyB1bG1heCAodV9sb25nLCB1X2xvbmcpIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKc3Rh
dGljIF9faW5saW5lIHVfbG9uZyB1bG1pbiAodV9sb25nLCB1X2xvbmcpIF9fYXR0cmlidXRlX18g
KCh1bnVzZWQpKTsKc3RhdGljIF9faW5saW5lIGludCBhYnMgKGludCkgX19hdHRyaWJ1dGVfXyAo
KHVudXNlZCkpOwoKc3RhdGljIF9faW5saW5lIGludCBpc3NwYWNlIChpbnQpIF9fYXR0cmlidXRl
X18oKF9fdW51c2VkX18pKTsKc3RhdGljIF9faW5saW5lIGludCBpc2FzY2lpIChpbnQpIF9fYXR0
cmlidXRlX18oKF9fdW51c2VkX18pKTsKc3RhdGljIF9faW5saW5lIGludCBpc3VwcGVyIChpbnQp
IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKTsKc3RhdGljIF9faW5saW5lIGludCBpc2xvd2Vy
IChpbnQpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKTsKc3RhdGljIF9faW5saW5lIGludCBp
c2FscGhhIChpbnQpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKTsKc3RhdGljIF9faW5saW5l
IGludCBpc2RpZ2l0IChpbnQpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKTsKc3RhdGljIF9f
aW5saW5lIGludCBpc3hkaWdpdCAoaW50KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSk7CnN0
YXRpYyBfX2lubGluZSBpbnQgdG91cHBlciAoaW50KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f
KSk7CnN0YXRpYyBfX2lubGluZSBpbnQgdG9sb3dlciAoaW50KSBfX2F0dHJpYnV0ZV9fKChfX3Vu
dXNlZF9fKSk7CgoKc3RhdGljIF9faW5saW5lIGludAppbWF4KGEsIGIpCiAgICAgICAgaW50IGEs
IGI7CnsKICAgICAgICByZXR1cm4gKGEgPiBiID8gYSA6IGIpOwp9CnN0YXRpYyBfX2lubGluZSBp
bnQKaW1pbihhLCBiKQogICAgICAgIGludCBhLCBiOwp7CiAgICAgICAgcmV0dXJuIChhIDwgYiA/
IGEgOiBiKTsKfQpzdGF0aWMgX19pbmxpbmUgbG9uZwpsbWF4KGEsIGIpCiAgICAgICAgbG9uZyBh
LCBiOwp7CiAgICAgICAgcmV0dXJuIChhID4gYiA/IGEgOiBiKTsKfQpzdGF0aWMgX19pbmxpbmUg
bG9uZwpsbWluKGEsIGIpCiAgICAgICAgbG9uZyBhLCBiOwp7CiAgICAgICAgcmV0dXJuIChhIDwg
YiA/IGEgOiBiKTsKfQpzdGF0aWMgX19pbmxpbmUgdV9pbnQKbWF4KGEsIGIpCiAgICAgICAgdV9p
bnQgYSwgYjsKewogICAgICAgIHJldHVybiAoYSA+IGIgPyBhIDogYik7Cn0Kc3RhdGljIF9faW5s
aW5lIHVfaW50Cm1pbihhLCBiKQogICAgICAgIHVfaW50IGEsIGI7CnsKICAgICAgICByZXR1cm4g
KGEgPCBiID8gYSA6IGIpOwp9CnN0YXRpYyBfX2lubGluZSB1X2xvbmcKdWxtYXgoYSwgYikKICAg
ICAgICB1X2xvbmcgYSwgYjsKewogICAgICAgIHJldHVybiAoYSA+IGIgPyBhIDogYik7Cn0Kc3Rh
dGljIF9faW5saW5lIHVfbG9uZwp1bG1pbihhLCBiKQogICAgICAgIHVfbG9uZyBhLCBiOwp7CiAg
ICAgICAgcmV0dXJuIChhIDwgYiA/IGEgOiBiKTsKfQoKc3RhdGljIF9faW5saW5lIGludAphYnMo
aikKICAgICAgICBpbnQgajsKewogICAgICAgIHJldHVybihqIDwgMCA/IC1qIDogaik7Cn0KCnN0
YXRpYyBfX2lubGluZSBpbnQKaXNzcGFjZShjaCkKICAgICAgICBpbnQgY2g7CnsKCiAgICAgICAg
cmV0dXJuIChjaCA9PSAnICcgfHwgKGNoID49ICdcdCcgJiYgY2ggPD0gJ1xyJykpOwp9CgpzdGF0
aWMgX19pbmxpbmUgaW50CmlzYXNjaWkoY2gpCiAgICAgICAgaW50IGNoOwp7CgogICAgICAgIHJl
dHVybiAoKGNoICYgfjB4N2YpID09IDApOwp9CgpzdGF0aWMgX19pbmxpbmUgaW50CmlzdXBwZXIo
Y2gpCiAgICAgICAgaW50IGNoOwp7CgogICAgICAgIHJldHVybiAoY2ggPj0gJ0EnICYmIGNoIDw9
ICdaJyk7Cn0KCnN0YXRpYyBfX2lubGluZSBpbnQKaXNsb3dlcihjaCkKICAgICAgICBpbnQgY2g7
CnsKCiAgICAgICAgcmV0dXJuIChjaCA+PSAnYScgJiYgY2ggPD0gJ3onKTsKfQoKc3RhdGljIF9f
aW5saW5lIGludAppc2FscGhhKGNoKQogICAgICAgIGludCBjaDsKewoKICAgICAgICByZXR1cm4g
KGlzdXBwZXIoY2gpIHx8IGlzbG93ZXIoY2gpKTsKfQoKc3RhdGljIF9faW5saW5lIGludAppc2Rp
Z2l0KGNoKQogICAgICAgIGludCBjaDsKewoKICAgICAgICByZXR1cm4gKGNoID49ICcwJyAmJiBj
aCA8PSAnOScpOwp9CgpzdGF0aWMgX19pbmxpbmUgaW50CmlzeGRpZ2l0KGNoKQogICAgICAgIGlu
dCBjaDsKewoKICAgICAgICByZXR1cm4gKGlzZGlnaXQoY2gpIHx8CiAgICAgICAgICAgIChjaCA+
PSAnQScgJiYgY2ggPD0gJ0YnKSB8fAogICAgICAgICAgICAoY2ggPj0gJ2EnICYmIGNoIDw9ICdm
JykpOwp9CgpzdGF0aWMgX19pbmxpbmUgaW50CnRvdXBwZXIoY2gpCiAgICAgICAgaW50IGNoOwp7
CgogICAgICAgIGlmIChpc2xvd2VyKGNoKSkKICAgICAgICAgICAgICAgIHJldHVybiAoY2ggLSAw
eDIwKTsKICAgICAgICByZXR1cm4gKGNoKTsKfQoKc3RhdGljIF9faW5saW5lIGludAp0b2xvd2Vy
KGNoKQogICAgICAgIGludCBjaDsKewoKICAgICAgICBpZiAoaXN1cHBlcihjaCkpCiAgICAgICAg
ICAgICAgICByZXR1cm4gKGNoICsgMHgyMCk7CiAgICAgICAgcmV0dXJuIChjaCk7Cn0KIyAyNTQg
Ii4uLy4uLy4uLy4uL2xpYi9saWJrZXJuL2xpYmtlcm4uaCIKaW50IGJjbXAgKGNvbnN0IHZvaWQg
KiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwp2b2lkIGJ6ZXJvICh2b2lkICosIHNpemVfdCk7CgoK
CnZvaWQgKm1lbWNweSAodm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7CmludCBtZW1jbXAg
KGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwp2b2lkICptZW1zZXQgKHZvaWQg
KiwgaW50LCBzaXplX3QpOwoKCgoKCgpjaGFyICpzdHJjcHkgKGNoYXIgKiwgY29uc3QgY2hhciAq
KTsKaW50IHN0cmNtcCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpzaXplX3Qgc3RybGVu
IChjb25zdCBjaGFyICopOwojIDI4MyAiLi4vLi4vLi4vLi4vbGliL2xpYmtlcm4vbGlia2Vybi5o
IgpjaGFyICpzdHJjYXQgKGNoYXIgKiwgY29uc3QgY2hhciAqKTsKY2hhciAqc3RybmNweSAoY2hh
ciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CmludCBzdHJuY21wIChjb25zdCBjaGFyICosIGNv
bnN0IGNoYXIgKiwgc2l6ZV90KTsKY2hhciAqc3RyY2hyIChjb25zdCBjaGFyICosIGludCk7CmNo
YXIgKnN0cnJjaHIgKGNvbnN0IGNoYXIgKiwgaW50KTsKCgppbnQgZmZzIChpbnQpOwoKdm9pZCBf
X2Fzc2VydCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCwgY29uc3QgY2hhciAqKQog
ICAgICAgICAgICBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKTsKdV9pbnQzMl90CiAgICAg
ICAgIGluZXRfYWRkciAoY29uc3QgY2hhciAqKTsKY2hhciAqaW50b2EgKHVfaW50MzJfdCk7Cgp2
b2lkICptZW1jaHIgKGNvbnN0IHZvaWQgKiwgaW50LCBzaXplX3QpOwp2b2lkICptZW1tb3ZlICh2
b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKaW50IHBtYXRjaCAoY29uc3QgY2hhciAqLCBj
b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiopOwp1X2xvbmcgcmFuZG9tICh2b2lkKTsKaW50IHNj
YW5jICh1X2ludCwgY29uc3QgdV9jaGFyICosIGNvbnN0IHVfY2hhciAqLCBpbnQpOwppbnQgc2tw
YyAoaW50LCBzaXplX3QsIHVfY2hhciAqKTsKaW50IHN0cmNhc2VjbXAgKGNvbnN0IGNoYXIgKiwg
Y29uc3QgY2hhciAqKTsKaW50IHN0cm5jYXNlY21wIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg
Kiwgc2l6ZV90KTsKdV9sb25nIHN0cnRvdWwgKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsK
IyAzMzkgIi4uLy4uLy4uLy4uL3N5cy9zeXN0bS5oIiAyCiMgMzQ4ICIuLi8uLi8uLi8uLi9zeXMv
c3lzdG0uaCIKdHlwZWRlZiBzdHJ1Y3QgY25tX3N0YXRlIHsKICAgICAgICBpbnQgY25tX3N0YXRl
OwogICAgICAgIHVfc2hvcnQgKmNubV9tYWdpYzsKfSBjbm1fc3RhdGVfdDsKIyAzNjEgIi4uLy4u
Ly4uLy4uL3N5cy9zeXN0bS5oIgp2b2lkIGNuX2luaXRfbWFnaWMgKGNubV9zdGF0ZV90ICpjbm0p
Owp2b2lkIGNuX2Rlc3Ryb3lfbWFnaWMgKGNubV9zdGF0ZV90ICpjbm0pOwppbnQgY25fc2V0X21h
Z2ljIChjaGFyICptYWdpYyk7CmludCBjbl9nZXRfbWFnaWMgKGNoYXIgKm1hZ2ljLCBpbnQgbGVu
KTsKIyA4NiAiYW03OTkwLmMiIDIKIyAxICIuLi8uLi8uLi8uLi9zeXMvbWJ1Zi5oIiAxCiMgODAg
Ii4uLy4uLy4uLy4uL3N5cy9tYnVmLmgiCiMgMSAiLi4vLi4vLi4vLi4vc3lzL21hbGxvYy5oIiAx
CiMgNDIgIi4uLy4uLy4uLy4uL3N5cy9tYWxsb2MuaCIKIyAxICJvcHRfa21lbXN0YXRzLmgiIDEK
IyA0MyAiLi4vLi4vLi4vLi4vc3lzL21hbGxvYy5oIiAyCiMgMSAib3B0X21hbGxvY2xvZy5oIiAx
CiMgNDQgIi4uLy4uLy4uLy4uL3N5cy9tYWxsb2MuaCIgMgojIDEgIm9wdF9tYWxsb2NfZGVidWcu
aCIgMQojIDQ1ICIuLi8uLi8uLi8uLi9zeXMvbWFsbG9jLmgiIDIKIyAxICJvcHRfbG9ja2RlYnVn
LmgiIDEKIyA0NiAiLi4vLi4vLi4vLi4vc3lzL21hbGxvYy5oIiAyCiMgMzM1ICIuLi8uLi8uLi8u
Li9zeXMvbWFsbG9jLmgiCnN0cnVjdCBrbWVtc3RhdHMgewogICAgICAgIHVfbG9uZyBrc19pbnVz
ZTsKICAgICAgICB1X2xvbmcga3NfY2FsbHM7CiAgICAgICAgdV9sb25nIGtzX21lbXVzZTsKICAg
ICAgICB1X3Nob3J0IGtzX2xpbWJsb2NrczsKICAgICAgICB1X3Nob3J0IGtzX21hcGJsb2NrczsK
ICAgICAgICB1X2xvbmcga3NfbWF4dXNlZDsKICAgICAgICB1X2xvbmcga3NfbGltaXQ7CiAgICAg
ICAgdV9sb25nIGtzX3NpemU7CiAgICAgICAgdV9sb25nIGtzX3NwYXJlOwp9OwoKCgoKc3RydWN0
IGttZW11c2FnZSB7CiAgICAgICAgc2hvcnQga3VfaW5keDsKICAgICAgICB1bmlvbiB7CiAgICAg
ICAgICAgICAgICB1X3Nob3J0IGZyZWVjbnQ7CiAgICAgICAgICAgICAgICB1X3Nob3J0IHBhZ2Vj
bnQ7CiAgICAgICAgfSBrdV91bjsKfTsKCgoKCgoKc3RydWN0IGttZW1idWNrZXRzIHsKICAgICAg
ICBfX2NhZGRyX3Qga2JfbmV4dDsKICAgICAgICBfX2NhZGRyX3Qga2JfbGFzdDsKICAgICAgICBs
b25nIGtiX2NhbGxzOwogICAgICAgIGxvbmcga2JfdG90YWw7CiAgICAgICAgbG9uZyBrYl90b3Rh
bGZyZWU7CiAgICAgICAgbG9uZyBrYl9lbG1wZXJjbDsKICAgICAgICBsb25nIGtiX2hpZ2h3YXQ7
CiAgICAgICAgbG9uZyBrYl9jb3VsZGZyZWU7Cn07CiMgNDU5ICIuLi8uLi8uLi8uLi9zeXMvbWFs
bG9jLmgiCmV4dGVybiBzdHJ1Y3Qga21lbXN0YXRzIGttZW1zdGF0c1tdOwpleHRlcm4gc3RydWN0
IGttZW11c2FnZSAqa21lbXVzYWdlOwpleHRlcm4gY2hhciAqa21lbWJhc2U7CmV4dGVybiBzdHJ1
Y3Qga21lbWJ1Y2tldHMgYnVja2V0W107CiMgNDczICIuLi8uLi8uLi8uLi9zeXMvbWFsbG9jLmgi
CnZvaWQgKm1hbGxvYyh1bnNpZ25lZCBsb25nIHNpemUsIGludCB0eXBlLCBpbnQgZmxhZ3MpOwp2
b2lkIGZyZWUodm9pZCAqYWRkciwgaW50IHR5cGUpOwojIDQ4NiAiLi4vLi4vLi4vLi4vc3lzL21h
bGxvYy5oIgp2b2lkICpyZWFsbG9jKHZvaWQgKmN1cmFkZHIsIHVuc2lnbmVkIGxvbmcgbmV3c2l6
ZSwgaW50IHR5cGUsCiAgICAgICAgICAgIGludCBmbGFncyk7CnVuc2lnbmVkIGxvbmcKICAgICAg
ICBtYWxsb2Nfcm91bmR1cCh1bnNpZ25lZCBsb25nKTsKIyA4MSAiLi4vLi4vLi4vLi4vc3lzL21i
dWYuaCIgMgoKIyAxICIuLi8uLi8uLi8uLi9zeXMvcG9vbC5oIiAxCiMgNDggIi4uLy4uLy4uLy4u
L3N5cy9wb29sLmgiCiMgMSAib3B0X3Bvb2wuaCIgMQojIDQ5ICIuLi8uLi8uLi8uLi9zeXMvcG9v
bC5oIiAyCgoKCiMgMSAiLi4vLi4vLi4vLi4vc3lzL2xvY2suaCIgMQojIDg2ICIuLi8uLi8uLi8u
Li9zeXMvbG9jay5oIgojIDEgIm9wdF9sb2NrZGVidWcuaCIgMQojIDg3ICIuLi8uLi8uLi8uLi9z
eXMvbG9jay5oIiAyCiMgMSAib3B0X211bHRpcHJvY2Vzc29yLmgiIDEKIyA4OCAiLi4vLi4vLi4v
Li4vc3lzL2xvY2suaCIgMgoKCiMgMSAiLi4vLi4vLi4vLi4vc3lzL3F1ZXVlLmgiIDEKIyA5MSAi
Li4vLi4vLi4vLi4vc3lzL2xvY2suaCIgMgojIDEgIm1hY2hpbmUvbG9jay5oIiAxCiMgNDYgIm1h
Y2hpbmUvbG9jay5oIgp0eXBlZGVmIHZvbGF0aWxlIGludCBfX2NwdV9zaW1wbGVfbG9ja190OwoK
CgoKc3RhdGljIF9faW5saW5lIHZvaWQgX19jcHVfc2ltcGxlX2xvY2tfaW5pdCAoX19jcHVfc2lt
cGxlX2xvY2tfdCAqKQogICAgICAgIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKTsKc3RhdGlj
IF9faW5saW5lIHZvaWQgX19jcHVfc2ltcGxlX2xvY2sgKF9fY3B1X3NpbXBsZV9sb2NrX3QgKikK
ICAgICAgICBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSk7CnN0YXRpYyBfX2lubGluZSBpbnQg
X19jcHVfc2ltcGxlX2xvY2tfdHJ5IChfX2NwdV9zaW1wbGVfbG9ja190ICopCiAgICAgICAgX19h
dHRyaWJ1dGVfXygoX191bnVzZWRfXykpOwpzdGF0aWMgX19pbmxpbmUgdm9pZCBfX2NwdV9zaW1w
bGVfdW5sb2NrIChfX2NwdV9zaW1wbGVfbG9ja190ICopCiAgICAgICAgX19hdHRyaWJ1dGVfXygo
X191bnVzZWRfXykpOwoKc3RhdGljIF9faW5saW5lIHZvaWQKX19jcHVfc2ltcGxlX2xvY2tfaW5p
dChfX2NwdV9zaW1wbGVfbG9ja190ICphbHApCnsKCiAgICAgICAgKmFscCA9IDA7Cn0KCnN0YXRp
YyBfX2lubGluZSB2b2lkCl9fY3B1X3NpbXBsZV9sb2NrKF9fY3B1X3NpbXBsZV9sb2NrX3QgKmFs
cCkKewogICAgICAgIGludCBfX3ZhbCA9IDE7CgogICAgICAgIGRvIHsKICAgICAgICAgICAgICAg
IF9fYXNtIHZvbGF0aWxlKCJ4Y2hnbCAlMCwgJTIiCiAgICAgICAgICAgICAgICAgICAgICAgIDog
Ij1yIiAoX192YWwpCiAgICAgICAgICAgICAgICAgICAgICAgIDogIjAiIChfX3ZhbCksICJtIiAo
KmFscCkpOwogICAgICAgIH0gd2hpbGUgKF9fdmFsICE9IDApOwp9CgpzdGF0aWMgX19pbmxpbmUg
aW50Cl9fY3B1X3NpbXBsZV9sb2NrX3RyeShfX2NwdV9zaW1wbGVfbG9ja190ICphbHApCnsKICAg
ICAgICBpbnQgX192YWwgPSAxOwoKICAgICAgICBfX2FzbSB2b2xhdGlsZSgieGNoZ2wgJTAsICUy
IgogICAgICAgICAgICAgICAgOiAiPXIiIChfX3ZhbCkKICAgICAgICAgICAgICAgIDogIjAiIChf
X3ZhbCksICJtIiAoKmFscCkpOwoKICAgICAgICByZXR1cm4gKChfX3ZhbCA9PSAwKSA/IDEgOiAw
KTsKfQoKdm9pZApfX2NwdV9zaW1wbGVfdW5sb2NrKF9fY3B1X3NpbXBsZV9sb2NrX3QgKmFscCkK
ewoKICAgICAgICAqYWxwID0gMDsKfQojIDkyICIuLi8uLi8uLi8uLi9zeXMvbG9jay5oIiAyCgoK
CgoKCnN0cnVjdCBzaW1wbGVsb2NrIHsKICAgICAgICBfX2NwdV9zaW1wbGVfbG9ja190IGxvY2tf
ZGF0YTsKIyAxMDggIi4uLy4uLy4uLy4uL3N5cy9sb2NrLmgiCn07CiMgMTIyICIuLi8uLi8uLi8u
Li9zeXMvbG9jay5oIgpzdHJ1Y3QgbG9jayB7CiAgICAgICAgc3RydWN0IHNpbXBsZWxvY2sgbGtf
aW50ZXJsb2NrOwogICAgICAgIHVfaW50IGxrX2ZsYWdzOwogICAgICAgIGludCBsa19zaGFyZWNv
dW50OwogICAgICAgIHNob3J0IGxrX2V4Y2x1c2l2ZWNvdW50OwogICAgICAgIHNob3J0IGxrX3Jl
Y3Vyc2VsZXZlbDsKICAgICAgICBpbnQgbGtfd2FpdGNvdW50OwoKCgoKCiAgICAgICAgY29uc3Qg
Y2hhciAqbGtfd21lc2c7CgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7
CgogICAgICAgICAgICAgICAgICAgICAgICBfX3BpZF90IGxrX3NsZWVwX2xvY2tob2xkZXI7CgoK
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxrX3NsZWVwX3ByaW87CgoKICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGxrX3NsZWVwX3RpbW87CiAgICAgICAgICAgICAgICB9IGxrX3VuX3Ns
ZWVwOwogICAgICAgICAgICAgICAgc3RydWN0IHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGNw
dWlkX3QgbGtfc3Bpbl9jcHU7CgoKCiAgICAgICAgICAgICAgICB9IGxrX3VuX3NwaW47CiAgICAg
ICAgfSBsa191bjsKIyAxNzEgIi4uLy4uLy4uLy4uL3N5cy9sb2NrLmgiCn07CiMgMjc1ICIuLi8u
Li8uLi8uLi9zeXMvbG9jay5oIgpzdHJ1Y3QgcHJvYzsKCnZvaWQgbG9ja2luaXQoc3RydWN0IGxv
Y2sgKiwgaW50IHByaW8sIGNvbnN0IGNoYXIgKndtZXNnLCBpbnQgdGltbywKICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGZsYWdzKTsKCgoKCgppbnQgbG9ja21ncih2b2xhdGlsZSBzdHJ1Y3Qg
bG9jayAqLCB1X2ludCBmbGFncywgc3RydWN0IHNpbXBsZWxvY2sgKik7CgppbnQgbG9ja3N0YXR1
cyhzdHJ1Y3QgbG9jayAqKTsKdm9pZCBsb2NrbWdyX3ByaW50aW5mbyh2b2xhdGlsZSBzdHJ1Y3Qg
bG9jayAqKTsKIyAzMTIgIi4uLy4uLy4uLy4uL3N5cy9sb2NrLmgiCmludCBzcGlubG9ja19yZWxl
YXNlX2FsbCh2b2xhdGlsZSBzdHJ1Y3QgbG9jayAqKTsKdm9pZCBzcGlubG9ja19hY3F1aXJlX2Nv
dW50KHZvbGF0aWxlIHN0cnVjdCBsb2NrICosIGludCk7CiMgNTMgIi4uLy4uLy4uLy4uL3N5cy9w
b29sLmgiIDIKIyA2MiAiLi4vLi4vLi4vLi4vc3lzL3Bvb2wuaCIKc3RydWN0IHBvb2xfY2FjaGVf
Z3JvdXAgewogICAgICAgIHN0cnVjdCB7IHN0cnVjdCBwb29sX2NhY2hlX2dyb3VwICp0cWVfbmV4
dDsgc3RydWN0IHBvb2xfY2FjaGVfZ3JvdXAgKip0cWVfcHJldjsgfQogICAgICAgICAgICAgICAg
cGNnX2xpc3Q7CiAgICAgICAgdV9pbnQgcGNnX2F2YWlsOwoKICAgICAgICB2b2lkICpwY2dfb2Jq
ZWN0c1sxNl07Cn07CgpzdHJ1Y3QgcG9vbF9jYWNoZSB7CiAgICAgICAgc3RydWN0IHsgc3RydWN0
IHBvb2xfY2FjaGUgKnRxZV9uZXh0OyBzdHJ1Y3QgcG9vbF9jYWNoZSAqKnRxZV9wcmV2OyB9CiAg
ICAgICAgICAgICAgICAgICAgICAgIHBjX3Bvb2xsaXN0OwogICAgICAgIHN0cnVjdCB7IHN0cnVj
dCBwb29sX2NhY2hlX2dyb3VwICp0cWhfZmlyc3Q7IHN0cnVjdCBwb29sX2NhY2hlX2dyb3VwICoq
dHFoX2xhc3Q7IH0KICAgICAgICAgICAgICAgICAgICAgICAgcGNfZ3JvdXBsaXN0OwogICAgICAg
IHN0cnVjdCBwb29sX2NhY2hlX2dyb3VwCiAgICAgICAgICAgICAgICAgICAgICAgICpwY19hbGxv
Y2Zyb207CiAgICAgICAgc3RydWN0IHBvb2xfY2FjaGVfZ3JvdXAKICAgICAgICAgICAgICAgICAg
ICAgICAgKnBjX2ZyZWV0bzsKICAgICAgICBzdHJ1Y3QgcG9vbCAqcGNfcG9vbDsKICAgICAgICBz
dHJ1Y3Qgc2ltcGxlbG9jayBwY19zbG9jazsKCiAgICAgICAgaW50ICgqcGNfY3Rvcikodm9pZCAq
LCB2b2lkICosIGludCk7CiAgICAgICAgdm9pZCAoKnBjX2R0b3IpKHZvaWQgKiwgdm9pZCAqKTsK
ICAgICAgICB2b2lkICpwY19hcmc7CgoKICAgICAgICB1bnNpZ25lZCBsb25nIHBjX2hpdHM7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBwY19taXNzZXM7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgcGNf
bmdyb3VwczsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBwY19uaXRlbXM7Cn07CgpzdHJ1Y3QgcG9v
bF9hbGxvY2F0b3IgewogICAgICAgIHZvaWQgKigqcGFfYWxsb2MpKHN0cnVjdCBwb29sICosIGlu
dCk7CiAgICAgICAgdm9pZCAoKnBhX2ZyZWUpKHN0cnVjdCBwb29sICosIHZvaWQgKik7CiAgICAg
ICAgaW50IHBhX3BhZ2VzejsKCgogICAgICAgIHN0cnVjdCBzaW1wbGVsb2NrIHBhX3Nsb2NrOwog
ICAgICAgIHN0cnVjdCB7IHN0cnVjdCBwb29sICp0cWhfZmlyc3Q7IHN0cnVjdCBwb29sICoqdHFo
X2xhc3Q7IH0gcGFfbGlzdDsKICAgICAgICBpbnQgcGFfZmxhZ3M7CgoKICAgICAgICBpbnQgcGFf
cGFnZW1hc2s7CiAgICAgICAgaW50IHBhX3BhZ2VzaGlmdDsKfTsKCnN0cnVjdCBwb29sIHsKICAg
ICAgICBzdHJ1Y3QgeyBzdHJ1Y3QgcG9vbCAqdHFlX25leHQ7IHN0cnVjdCBwb29sICoqdHFlX3By
ZXY7IH0KICAgICAgICAgICAgICAgICAgICAgICAgcHJfcG9vbGxpc3Q7CiAgICAgICAgc3RydWN0
IHsgc3RydWN0IHBvb2xfaXRlbV9oZWFkZXIgKnRxaF9maXJzdDsgc3RydWN0IHBvb2xfaXRlbV9o
ZWFkZXIgKip0cWhfbGFzdDsgfQogICAgICAgICAgICAgICAgICAgICAgICBwcl9wYWdlbGlzdDsK
ICAgICAgICBzdHJ1Y3QgcG9vbF9pdGVtX2hlYWRlciAqcHJfY3VycGFnZTsKICAgICAgICBzdHJ1
Y3QgeyBzdHJ1Y3QgcG9vbF9jYWNoZSAqdHFoX2ZpcnN0OyBzdHJ1Y3QgcG9vbF9jYWNoZSAqKnRx
aF9sYXN0OyB9CiAgICAgICAgICAgICAgICAgICAgICAgIHByX2NhY2hlbGlzdDsKICAgICAgICB1
bnNpZ25lZCBpbnQgcHJfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgcHJfYWxpZ247CiAgICAg
ICAgdW5zaWduZWQgaW50IHByX2l0ZW1vZmZzZXQ7CiAgICAgICAgdW5zaWduZWQgaW50IHByX21p
bml0ZW1zOwogICAgICAgIHVuc2lnbmVkIGludCBwcl9taW5wYWdlczsKICAgICAgICB1bnNpZ25l
ZCBpbnQgcHJfbWF4cGFnZXM7CiAgICAgICAgdW5zaWduZWQgaW50IHByX25wYWdlczsKICAgICAg
ICB1bnNpZ25lZCBpbnQgcHJfaXRlbXNwZXJwYWdlOwogICAgICAgIHVuc2lnbmVkIGludCBwcl9z
bGFjazsKICAgICAgICB1bnNpZ25lZCBpbnQgcHJfbml0ZW1zOwogICAgICAgIHVuc2lnbmVkIGlu
dCBwcl9ub3V0OwogICAgICAgIHVuc2lnbmVkIGludCBwcl9oYXJkbGltaXQ7CgogICAgICAgIHN0
cnVjdCBwb29sX2FsbG9jYXRvciAqcHJfYWxsb2M7CiAgICAgICAgc3RydWN0IHsgc3RydWN0IHBv
b2wgKnRxZV9uZXh0OyBzdHJ1Y3QgcG9vbCAqKnRxZV9wcmV2OyB9IHByX2FsbG9jX2xpc3Q7CgoK
ICAgICAgICB2b2lkICgqcHJfZHJhaW5faG9vaykodm9pZCAqLCBpbnQpOwogICAgICAgIHZvaWQg
KnByX2RyYWluX2hvb2tfYXJnOwoKICAgICAgICBjb25zdCBjaGFyICpwcl93Y2hhbjsKICAgICAg
ICB1bnNpZ25lZCBpbnQgcHJfZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgaW50IHByX3JvZmxhZ3M7
CiMgMTU4ICIuLi8uLi8uLi8uLi9zeXMvcG9vbC5oIgogICAgICAgIHN0cnVjdCBzaW1wbGVsb2Nr
IHByX3Nsb2NrOwoKICAgICAgICBzdHJ1Y3QgeyBzdHJ1Y3QgcG9vbF9pdGVtX2hlYWRlciAqbGhf
Zmlyc3Q7IH0KICAgICAgICAgICAgICAgICAgICAgICAgcHJfaGFzaHRhYls4XTsKCiAgICAgICAg
aW50IHByX21heGNvbG9yOwogICAgICAgIGludCBwcl9jdXJjb2xvcjsKICAgICAgICBpbnQgcHJf
cGhvZmZzZXQ7CgoKCgoKICAgICAgICBjb25zdCBjaGFyICpwcl9oYXJkbGltaXRfd2FybmluZzsK
ICAgICAgICBzdHJ1Y3QgdGltZXZhbCBwcl9oYXJkbGltaXRfcmF0ZWNhcDsKICAgICAgICBzdHJ1
Y3QgdGltZXZhbCBwcl9oYXJkbGltaXRfd2FybmluZ19sYXN0OwoKCgoKICAgICAgICB1bnNpZ25l
ZCBsb25nIHByX25nZXQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBwcl9uZmFpbDsKICAgICAgICB1
bnNpZ25lZCBsb25nIHByX25wdXQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBwcl9ucGFnZWFsbG9j
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgcHJfbnBhZ2VmcmVlOwogICAgICAgIHVuc2lnbmVkIGlu
dCBwcl9oaXdhdDsKICAgICAgICB1bnNpZ25lZCBsb25nIHByX25pZGxlOwoKCgoKICAgICAgICBz
dHJ1Y3QgcG9vbF9sb2cgKnByX2xvZzsKICAgICAgICBpbnQgcHJfY3VybG9nZW50cnk7CiAgICAg
ICAgaW50IHByX2xvZ3NpemU7CgogICAgICAgIGNvbnN0IGNoYXIgKnByX2VudGVyZWRfZmlsZTsK
ICAgICAgICBsb25nIHByX2VudGVyZWRfbGluZTsKfTsKIyAyMDUgIi4uLy4uLy4uLy4uL3N5cy9w
b29sLmgiCmV4dGVybiBzdHJ1Y3QgcG9vbF9hbGxvY2F0b3IgcG9vbF9hbGxvY2F0b3Jfa21lbTsK
ZXh0ZXJuIHN0cnVjdCBwb29sX2FsbG9jYXRvciBwb29sX2FsbG9jYXRvcl9ub2ludHI7Cgp2b2lk
IHBvb2xfaW5pdChzdHJ1Y3QgcG9vbCAqLCBzaXplX3QsIHVfaW50LCB1X2ludCwKICAgICAgICAg
ICAgICAgICAgICBpbnQsIGNvbnN0IGNoYXIgKiwgc3RydWN0IHBvb2xfYWxsb2NhdG9yICopOwp2
b2lkIHBvb2xfZGVzdHJveShzdHJ1Y3QgcG9vbCAqKTsKCnZvaWQgcG9vbF9zZXRfZHJhaW5faG9v
ayhzdHJ1Y3QgcG9vbCAqLAogICAgICAgICAgICAgICAgICAgIHZvaWQgKCopKHZvaWQgKiwgaW50
KSwgdm9pZCAqKTsKCnZvaWQgKnBvb2xfZ2V0KHN0cnVjdCBwb29sICosIGludCk7CnZvaWQgcG9v
bF9wdXQoc3RydWN0IHBvb2wgKiwgdm9pZCAqKTsKaW50IHBvb2xfcmVjbGFpbShzdHJ1Y3QgcG9v
bCAqKTsKIyAyMzEgIi4uLy4uLy4uLy4uL3N5cy9wb29sLmgiCmludCBwb29sX3ByaW1lKHN0cnVj
dCBwb29sICosIGludCk7CnZvaWQgcG9vbF9zZXRsb3dhdChzdHJ1Y3QgcG9vbCAqLCBpbnQpOwp2
b2lkIHBvb2xfc2V0aGl3YXQoc3RydWN0IHBvb2wgKiwgaW50KTsKdm9pZCBwb29sX3NldGhhcmRs
aW1pdChzdHJ1Y3QgcG9vbCAqLCBpbnQsIGNvbnN0IGNoYXIgKiwgaW50KTsKdm9pZCBwb29sX2Ry
YWluKHZvaWQgKik7CgoKCgp2b2lkIHBvb2xfcHJpbnQoc3RydWN0IHBvb2wgKiwgY29uc3QgY2hh
ciAqKTsKdm9pZCBwb29sX3ByaW50aXQoc3RydWN0IHBvb2wgKiwgY29uc3QgY2hhciAqLAogICAg
ICAgICAgICAgICAgICAgIHZvaWQgKCopKGNvbnN0IGNoYXIgKiwgLi4uKSk7CmludCBwb29sX2No
ayhzdHJ1Y3QgcG9vbCAqLCBjb25zdCBjaGFyICopOwoKCgoKdm9pZCBwb29sX2NhY2hlX2luaXQo
c3RydWN0IHBvb2xfY2FjaGUgKiwgc3RydWN0IHBvb2wgKiwKICAgICAgICAgICAgICAgICAgICBp
bnQgKCpjdG9yKSh2b2lkICosIHZvaWQgKiwgaW50KSwKICAgICAgICAgICAgICAgICAgICB2b2lk
ICgqZHRvcikodm9pZCAqLCB2b2lkICopLAogICAgICAgICAgICAgICAgICAgIHZvaWQgKik7CnZv
aWQgcG9vbF9jYWNoZV9kZXN0cm95KHN0cnVjdCBwb29sX2NhY2hlICopOwp2b2lkICpwb29sX2Nh
Y2hlX2dldChzdHJ1Y3QgcG9vbF9jYWNoZSAqLCBpbnQpOwp2b2lkIHBvb2xfY2FjaGVfcHV0KHN0
cnVjdCBwb29sX2NhY2hlICosIHZvaWQgKik7CnZvaWQgcG9vbF9jYWNoZV9kZXN0cnVjdF9vYmpl
Y3Qoc3RydWN0IHBvb2xfY2FjaGUgKiwgdm9pZCAqKTsKdm9pZCBwb29sX2NhY2hlX2ludmFsaWRh
dGUoc3RydWN0IHBvb2xfY2FjaGUgKik7CiMgODMgIi4uLy4uLy4uLy4uL3N5cy9tYnVmLmgiIDIK
IyAxMDUgIi4uLy4uLy4uLy4uL3N5cy9tYnVmLmgiCnN0cnVjdCBtX2hkciB7CiAgICAgICAgc3Ry
dWN0IG1idWYgKm1oX25leHQ7CiAgICAgICAgc3RydWN0IG1idWYgKm1oX25leHRwa3Q7CiAgICAg
ICAgX19jYWRkcl90IG1oX2RhdGE7CiAgICAgICAgaW50IG1oX2xlbjsKICAgICAgICBzaG9ydCBt
aF90eXBlOwogICAgICAgIHNob3J0IG1oX2ZsYWdzOwp9OwojIDEyOCAiLi4vLi4vLi4vLi4vc3lz
L21idWYuaCIKc3RydWN0IHBrdGhkciB7CiAgICAgICAgc3RydWN0IGlmbmV0ICpyY3ZpZjsKICAg
ICAgICBpbnQgbGVuOwogICAgICAgIGludCBjc3VtX2ZsYWdzOwogICAgICAgIHVfaW50MzJfdCBj
c3VtX2RhdGE7CiAgICAgICAgc3RydWN0IG1idWYgKmF1eDsKfTsKIyAxNTAgIi4uLy4uLy4uLy4u
L3N5cy9tYnVmLmgiCnN0cnVjdCBtX2V4dCB7CiAgICAgICAgX19jYWRkcl90IGV4dF9idWY7CiAg
ICAgICAgdm9pZCAoKmV4dF9mcmVlKQogICAgICAgICAgICAgICAgKHN0cnVjdCBtYnVmICosIF9f
Y2FkZHJfdCwgdV9pbnQsIHZvaWQgKik7CiAgICAgICAgdm9pZCAqZXh0X2FyZzsKICAgICAgICB1
X2ludCBleHRfc2l6ZTsKICAgICAgICBpbnQgZXh0X3R5cGU7CiAgICAgICAgc3RydWN0IG1idWYg
KmV4dF9uZXh0cmVmOwogICAgICAgIHN0cnVjdCBtYnVmICpleHRfcHJldnJlZjsKCgoKCgoKfTsK
CnN0cnVjdCBtYnVmIHsKICAgICAgICBzdHJ1Y3QgbV9oZHIgbV9oZHI7CiAgICAgICAgdW5pb24g
ewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IHBrdGhkciBNSF9wa3RoZHI7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbV9leHQgTUhfZXh0OwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgTUhfZGF0YWJ1ZlsoKDI1NiAtIHNpemVvZihzdHJ1
Y3QgbV9oZHIpKSAtIHNpemVvZihzdHJ1Y3QgcGt0aGRyKSldOwogICAgICAgICAgICAgICAgICAg
ICAgICB9IE1IX2RhdDsKICAgICAgICAgICAgICAgIH0gTUg7CiAgICAgICAgICAgICAgICBjaGFy
IE1fZGF0YWJ1ZlsoMjU2IC0gc2l6ZW9mKHN0cnVjdCBtX2hkcikpXTsKICAgICAgICB9IE1fZGF0
Owp9OwojIDU4MiAiLi4vLi4vLi4vLi4vc3lzL21idWYuaCIKc3RydWN0IG1hdXh0YWcgewogICAg
ICAgIGludCBhZjsKICAgICAgICBpbnQgdHlwZTsKfTsKCgoKCgoKc3RydWN0IG1ic3RhdCB7CiAg
ICAgICAgdV9sb25nIF9tX3NwYXJlOwogICAgICAgIHVfbG9uZyBfbV9zcGFyZTE7CiAgICAgICAg
dV9sb25nIF9tX3NwYXJlMjsKICAgICAgICB1X2xvbmcgX21fc3BhcmUzOwogICAgICAgIHVfbG9u
ZyBtX2Ryb3BzOwogICAgICAgIHVfbG9uZyBtX3dhaXQ7CiAgICAgICAgdV9sb25nIG1fZHJhaW47
CiAgICAgICAgdV9zaG9ydCBtX210eXBlc1syNTZdOwp9OwojIDYyNiAiLi4vLi4vLi4vLi4vc3lz
L21idWYuaCIKZXh0ZXJuIHN0cnVjdCBtYnN0YXQgbWJzdGF0OwpleHRlcm4gaW50IG5tYmNsdXN0
ZXJzOwpleHRlcm4gaW50IG1ibG93YXQ7CmV4dGVybiBpbnQgbWNsbG93YXQ7CmV4dGVybiBpbnQg
bWF4X2xpbmtoZHI7CmV4dGVybiBpbnQgbWF4X3Byb3RvaGRyOwpleHRlcm4gaW50IG1heF9oZHI7
CmV4dGVybiBpbnQgbWF4X2RhdGFsZW47CmV4dGVybiBjb25zdCBpbnQgbXNpemU7CmV4dGVybiBj
b25zdCBpbnQgbWNsYnl0ZXM7CmV4dGVybiBjb25zdCBpbnQgbWJ0eXBlc1tdOwpleHRlcm4gc3Ry
dWN0IHBvb2wgbWJwb29sOwpleHRlcm4gc3RydWN0IHBvb2wgbWNscG9vbDsKZXh0ZXJuIHN0cnVj
dCBwb29sX2NhY2hlIG1icG9vbF9jYWNoZTsKZXh0ZXJuIHN0cnVjdCBwb29sX2NhY2hlIG1jbHBv
b2xfY2FjaGU7CgpzdHJ1Y3QgbWJ1ZiAqbV9jb3B5bSAoc3RydWN0IG1idWYgKiwgaW50LCBpbnQs
IGludCk7CnN0cnVjdCBtYnVmICptX2NvcHlwYWNrZXQgKHN0cnVjdCBtYnVmICosIGludCk7CnN0
cnVjdCBtYnVmICptX2RldmdldCAoY2hhciAqLCBpbnQsIGludCwgc3RydWN0IGlmbmV0ICosIHZv
aWQgKCpjb3B5KShjb25zdCB2b2lkICosIHZvaWQgKiwgc2l6ZV90KSk7CgpzdHJ1Y3QgbWJ1ZiAq
bV9kdXAgKHN0cnVjdCBtYnVmICosIGludCwgaW50LCBpbnQpOwpzdHJ1Y3QgbWJ1ZiAqbV9mcmVl
IChzdHJ1Y3QgbWJ1ZiAqKTsKc3RydWN0IG1idWYgKm1fZ2V0IChpbnQsIGludCk7CnN0cnVjdCBt
YnVmICptX2dldGNsciAoaW50LCBpbnQpOwpzdHJ1Y3QgbWJ1ZiAqbV9nZXRoZHIgKGludCwgaW50
KTsKc3RydWN0IG1idWYgKm1fcHJlcGVuZCAoc3RydWN0IG1idWYgKixpbnQsaW50KTsKc3RydWN0
IG1idWYgKm1fcHVsbGRvd24gKHN0cnVjdCBtYnVmICosIGludCwgaW50LCBpbnQgKik7CnN0cnVj
dCBtYnVmICptX3B1bGx1cCAoc3RydWN0IG1idWYgKiwgaW50KTsKc3RydWN0IG1idWYgKm1fc2x1
cnAgKHN0cnVjdCBtYnVmICosIGludCwgaW50KTsKc3RydWN0IG1idWYgKm1fc3BsaXQgKHN0cnVj
dCBtYnVmICosaW50LGludCk7CnZvaWQgbV9hZGogKHN0cnVjdCBtYnVmICosIGludCk7CnZvaWQg
bV9jYXQgKHN0cnVjdCBtYnVmICosc3RydWN0IG1idWYgKik7CmludCBtX21iYWxsb2MgKGludCwg
aW50KTsKdm9pZCBtX2NvcHliYWNrIChzdHJ1Y3QgbWJ1ZiAqLCBpbnQsIGludCwgX19jYWRkcl90
KTsKdm9pZCBtX2NvcHlkYXRhIChzdHJ1Y3QgbWJ1ZiAqLGludCxpbnQsX19jYWRkcl90KTsKdm9p
ZCBtX2ZyZWVtIChzdHJ1Y3QgbWJ1ZiAqKTsKdm9pZCBtX3JlY2xhaW0gKHZvaWQgKiwgaW50KTsK
dm9pZCBtYmluaXQgKHZvaWQpOwoKc3RydWN0IG1idWYgKm1fYXV4X2FkZCAoc3RydWN0IG1idWYg
KiwgaW50LCBpbnQpOwpzdHJ1Y3QgbWJ1ZiAqbV9hdXhfZmluZCAoc3RydWN0IG1idWYgKiwgaW50
LCBpbnQpOwp2b2lkIG1fYXV4X2RlbGV0ZSAoc3RydWN0IG1idWYgKiwgc3RydWN0IG1idWYgKik7
CiMgODcgImFtNzk5MC5jIiAyCgojIDEgIi4uLy4uLy4uLy4uL3N5cy9zb2NrZXQuaCIgMQojIDgw
ICIuLi8uLi8uLi8uLi9zeXMvc29ja2V0LmgiCnR5cGVkZWYgX19zYV9mYW1pbHlfdCBzYV9mYW1p
bHlfdDsKCgoKCnR5cGVkZWYgX19zb2NrbGVuX3Qgc29ja2xlbl90OwojIDE0MiAiLi4vLi4vLi4v
Li4vc3lzL3NvY2tldC5oIgpzdHJ1Y3QgbGluZ2VyIHsKICAgICAgICBpbnQgbF9vbm9mZjsKICAg
ICAgICBpbnQgbF9saW5nZXI7Cn07CiMgMjA1ICIuLi8uLi8uLi8uLi9zeXMvc29ja2V0LmgiCnN0
cnVjdCBzb2NrYWRkciB7CiAgICAgICAgX191aW50OF90IHNhX2xlbjsKICAgICAgICBfX3NhX2Zh
bWlseV90IHNhX2ZhbWlseTsKICAgICAgICBjaGFyIHNhX2RhdGFbMTRdOwp9OwoKCgoKCgpzdHJ1
Y3Qgc29ja3Byb3RvIHsKICAgICAgICB1X3Nob3J0IHNwX2ZhbWlseTsKICAgICAgICB1X3Nob3J0
IHNwX3Byb3RvY29sOwp9OwojIDIzMyAiLi4vLi4vLi4vLi4vc3lzL3NvY2tldC5oIgpzdHJ1Y3Qg
c29ja2FkZHJfc3RvcmFnZSB7CiAgICAgICAgX191aW50OF90IHNzX2xlbjsKICAgICAgICBfX3Nh
X2ZhbWlseV90IHNzX2ZhbWlseTsKICAgICAgICBjaGFyIF9fc3NfcGFkMVsoKHNpemVvZihfX2lu
dDY0X3QpKSAtIDIpXTsKICAgICAgICBfX2ludDY0X3QgX19zc19hbGlnbjsKICAgICAgICBjaGFy
IF9fc3NfcGFkMlsoMTI4IC0gMiAtICgoc2l6ZW9mKF9faW50NjRfdCkpIC0gMikgLSAoc2l6ZW9m
KF9faW50NjRfdCkpKV07Cn07CiMgMzAzICIuLi8uLi8uLi8uLi9zeXMvc29ja2V0LmgiCnN0cnVj
dCBzb2NrY3JlZCB7CiAgICAgICAgX191aWRfdCBzY191aWQ7CiAgICAgICAgX191aWRfdCBzY19l
dWlkOwogICAgICAgIF9fZ2lkX3Qgc2NfZ2lkOwogICAgICAgIF9fZ2lkX3Qgc2NfZWdpZDsKICAg
ICAgICBpbnQgc2Nfbmdyb3VwczsKICAgICAgICBfX2dpZF90IHNjX2dyb3Vwc1sxXTsKfTsKIyAz
OTkgIi4uLy4uLy4uLy4uL3N5cy9zb2NrZXQuaCIKc3RydWN0IG1zZ2hkciB7CiAgICAgICAgdm9p
ZCAqbXNnX25hbWU7CiAgICAgICAgX19zb2NrbGVuX3QgbXNnX25hbWVsZW47CiAgICAgICAgc3Ry
dWN0IGlvdmVjICptc2dfaW92OwogICAgICAgIGludCBtc2dfaW92bGVuOwogICAgICAgIHZvaWQg
Km1zZ19jb250cm9sOwogICAgICAgIF9fc29ja2xlbl90IG1zZ19jb250cm9sbGVuOwogICAgICAg
IGludCBtc2dfZmxhZ3M7Cn07CiMgNDI2ICIuLi8uLi8uLi8uLi9zeXMvc29ja2V0LmgiCnN0cnVj
dCBjbXNnaGRyIHsKICAgICAgICBfX3NvY2tsZW5fdCBjbXNnX2xlbjsKICAgICAgICBpbnQgY21z
Z19sZXZlbDsKICAgICAgICBpbnQgY21zZ190eXBlOwoKfTsKIyA0OTAgIi4uLy4uLy4uLy4uL3N5
cy9zb2NrZXQuaCIKc3RydWN0IG9zb2NrYWRkciB7CiAgICAgICAgX191aW50MTZfdCBzYV9mYW1p
bHk7CiAgICAgICAgY2hhciBzYV9kYXRhWzE0XTsKfTsKCgoKCnN0cnVjdCBvbXNnaGRyIHsKICAg
ICAgICBfX2NhZGRyX3QgbXNnX25hbWU7CiAgICAgICAgaW50IG1zZ19uYW1lbGVuOwogICAgICAg
IHN0cnVjdCBpb3ZlYyAqbXNnX2lvdjsKICAgICAgICBpbnQgbXNnX2lvdmxlbjsKICAgICAgICBf
X2NhZGRyX3QgbXNnX2FjY3JpZ2h0czsKICAgICAgICBpbnQgbXNnX2FjY3JpZ2h0c2xlbjsKfTsK
CgoKCgppbnQgX19jbXNnX2FsaWduYnl0ZXMgKHZvaWQpOwoKIyA4OSAiYW03OTkwLmMiIDIKIyAx
ICIuLi8uLi8uLi8uLi9zeXMvZGV2aWNlLmgiIDEKIyA5MCAiLi4vLi4vLi4vLi4vc3lzL2Rldmlj
ZS5oIgplbnVtIGRldmNsYXNzIHsKICAgICAgICBEVl9EVUxMLAogICAgICAgIERWX0NQVSwKICAg
ICAgICBEVl9ESVNLLAogICAgICAgIERWX0lGTkVULAogICAgICAgIERWX1RBUEUsCiAgICAgICAg
RFZfVFRZCn07CgoKCgplbnVtIGRldmFjdCB7CiAgICAgICAgRFZBQ1RfQUNUSVZBVEUsCiAgICAg
ICAgRFZBQ1RfREVBQ1RJVkFURQp9OwoKc3RydWN0IGRldmljZSB7CiAgICAgICAgZW51bSBkZXZj
bGFzcyBkdl9jbGFzczsKICAgICAgICBzdHJ1Y3QgeyBzdHJ1Y3QgZGV2aWNlICp0cWVfbmV4dDsg
c3RydWN0IGRldmljZSAqKnRxZV9wcmV2OyB9IGR2X2xpc3Q7CiAgICAgICAgc3RydWN0IGNmZGF0
YSAqZHZfY2ZkYXRhOwogICAgICAgIGludCBkdl91bml0OwogICAgICAgIGNoYXIgZHZfeG5hbWVb
MTZdOwogICAgICAgIHN0cnVjdCBkZXZpY2UgKmR2X3BhcmVudDsKICAgICAgICBpbnQgZHZfZmxh
Z3M7Cn07CgoKCgpzdHJ1Y3QgZGV2aWNlbGlzdCB7IHN0cnVjdCBkZXZpY2UgKnRxaF9maXJzdDsg
c3RydWN0IGRldmljZSAqKnRxaF9sYXN0OyB9OwoKCgoKCnN0cnVjdCBldmNudCB7CiAgICAgICAg
dV9pbnQ2NF90IGV2X2NvdW50OwogICAgICAgIHN0cnVjdCB7IHN0cnVjdCBldmNudCAqdHFlX25l
eHQ7IHN0cnVjdCBldmNudCAqKnRxZV9wcmV2OyB9IGV2X2xpc3Q7CiAgICAgICAgdW5zaWduZWQg
Y2hhciBldl90eXBlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZXZfZ3JvdXBsZW47CiAgICAgICAg
dW5zaWduZWQgY2hhciBldl9uYW1lbGVuOwogICAgICAgIGNoYXIgZXZfcGFkMTsKICAgICAgICBj
b25zdCBzdHJ1Y3QgZXZjbnQgKmV2X3BhcmVudDsKICAgICAgICBjb25zdCBjaGFyICpldl9ncm91
cDsKICAgICAgICBjb25zdCBjaGFyICpldl9uYW1lOwp9OwpzdHJ1Y3QgZXZjbnRsaXN0IHsgc3Ry
dWN0IGV2Y250ICp0cWhfZmlyc3Q7IHN0cnVjdCBldmNudCAqKnRxaF9sYXN0OyB9OwojIDE2NyAi
Li4vLi4vLi4vLi4vc3lzL2RldmljZS5oIgpzdHJ1Y3QgY2ZkYXRhIHsKICAgICAgICBzdHJ1Y3Qg
Y2ZhdHRhY2ggKmNmX2F0dGFjaDsKICAgICAgICBzdHJ1Y3QgY2Zkcml2ZXIgKmNmX2RyaXZlcjsK
ICAgICAgICBzaG9ydCBjZl91bml0OwogICAgICAgIHNob3J0IGNmX2ZzdGF0ZTsKICAgICAgICBp
bnQgKmNmX2xvYzsKICAgICAgICBpbnQgY2ZfZmxhZ3M7CiAgICAgICAgc2hvcnQgKmNmX3BhcmVu
dHM7CiAgICAgICAgY29uc3QgY2hhciAqKmNmX2xvY25hbWVzOwp9OwoKCgoKCgp0eXBlZGVmIGlu
dCAoKmNmbWF0Y2hfdCkoc3RydWN0IGRldmljZSAqLCBzdHJ1Y3QgY2ZkYXRhICosIHZvaWQgKik7
CiMgMjAwICIuLi8uLi8uLi8uLi9zeXMvZGV2aWNlLmgiCnN0cnVjdCBjZmF0dGFjaCB7CiAgICAg
ICAgc2l6ZV90IGNhX2RldnNpemU7CiAgICAgICAgY2ZtYXRjaF90IGNhX21hdGNoOwogICAgICAg
IHZvaWQgKCpjYV9hdHRhY2gpKHN0cnVjdCBkZXZpY2UgKiwgc3RydWN0IGRldmljZSAqLCB2b2lk
ICopOwogICAgICAgIGludCAoKmNhX2RldGFjaCkoc3RydWN0IGRldmljZSAqLCBpbnQpOwogICAg
ICAgIGludCAoKmNhX2FjdGl2YXRlKShzdHJ1Y3QgZGV2aWNlICosIGVudW0gZGV2YWN0KTsKfTsK
CgoKCgpzdHJ1Y3QgY2Zkcml2ZXIgewogICAgICAgIHZvaWQgKipjZF9kZXZzOwogICAgICAgIGNo
YXIgKmNkX25hbWU7CiAgICAgICAgZW51bSBkZXZjbGFzcyBjZF9jbGFzczsKICAgICAgICBpbnQg
Y2RfbmRldnM7Cn07CgoKCgoKCgp0eXBlZGVmIGludCAoKmNmcHJpbnRfdCkodm9pZCAqLCBjb25z
dCBjaGFyICopOwoKCgoKCgoKc3RydWN0IHBkZXZpbml0IHsKICAgICAgICB2b2lkICgqcGRldl9h
dHRhY2gpKGludCk7CiAgICAgICAgaW50IHBkZXZfY291bnQ7Cn07CgoKCmV4dGVybiBzdHJ1Y3Qg
ZGV2aWNlbGlzdCBhbGxkZXZzOwpleHRlcm4gc3RydWN0IGV2Y250bGlzdCBhbGxldmVudHM7CmV4
dGVybiBzdHJ1Y3QgZGV2aWNlICpib290ZWRfZGV2aWNlOwoKZXh0ZXJuIHZvbGF0aWxlIGludCBj
b25maWdfcGVuZGluZzsKCnZvaWQgY29uZmlndXJlKHZvaWQpOwpzdHJ1Y3QgY2ZkYXRhICpjb25m
aWdfc2VhcmNoKGNmbWF0Y2hfdCwgc3RydWN0IGRldmljZSAqLCB2b2lkICopOwpzdHJ1Y3QgY2Zk
YXRhICpjb25maWdfcm9vdHNlYXJjaChjZm1hdGNoX3QsIGNvbnN0IGNoYXIgKiwgdm9pZCAqKTsK
c3RydWN0IGRldmljZSAqY29uZmlnX2ZvdW5kX3NtKHN0cnVjdCBkZXZpY2UgKiwgdm9pZCAqLCBj
ZnByaW50X3QsIGNmbWF0Y2hfdCk7CnN0cnVjdCBkZXZpY2UgKmNvbmZpZ19yb290Zm91bmQoY29u
c3QgY2hhciAqLCB2b2lkICopOwpzdHJ1Y3QgZGV2aWNlICpjb25maWdfYXR0YWNoKHN0cnVjdCBk
ZXZpY2UgKiwgc3RydWN0IGNmZGF0YSAqLCB2b2lkICosCiAgICBjZnByaW50X3QpOwp2b2lkIGNv
bmZpZ19tYWtlcm9vbShpbnQgbiwgc3RydWN0IGNmZHJpdmVyICpjZCk7CmludCBjb25maWdfZGV0
YWNoKHN0cnVjdCBkZXZpY2UgKiwgaW50KTsKaW50IGNvbmZpZ19hY3RpdmF0ZShzdHJ1Y3QgZGV2
aWNlICopOwppbnQgY29uZmlnX2RlYWN0aXZhdGUoc3RydWN0IGRldmljZSAqKTsKdm9pZCBjb25m
aWdfZGVmZXIoc3RydWN0IGRldmljZSAqLCB2b2lkICgqKShzdHJ1Y3QgZGV2aWNlICopKTsKdm9p
ZCBjb25maWdfaW50ZXJydXB0cyhzdHJ1Y3QgZGV2aWNlICosIHZvaWQgKCopKHN0cnVjdCBkZXZp
Y2UgKikpOwp2b2lkIGNvbmZpZ19wZW5kaW5nX2luY3Iodm9pZCk7CnZvaWQgY29uZmlnX3BlbmRp
bmdfZGVjcih2b2lkKTsKCgp2b2lkIGRldmljZV9yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICosIHZv
aWQgKik7CgoKdm9pZCBldmNudF9hdHRhY2hfc3RhdGljKHN0cnVjdCBldmNudCAqKTsKdm9pZCBl
dmNudF9hdHRhY2hfZHluYW1pYyhzdHJ1Y3QgZXZjbnQgKiwgaW50LCBjb25zdCBzdHJ1Y3QgZXZj
bnQgKiwKICAgICAgICAgICAgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwp2b2lkIGV2Y250
X2RldGFjaChzdHJ1Y3QgZXZjbnQgKik7CiMgOTAgImFtNzk5MC5jIiAyCgoKCgoKCgojIDEgIi4u
Ly4uLy4uLy4uL25ldC9pZi5oIiAxCiMgODAgIi4uLy4uLy4uLy4uL25ldC9pZi5oIgojIDEgIi4u
Ly4uLy4uLy4uL25ldC9kbHQuaCIgMQojIDgxICIuLi8uLi8uLi8uLi9uZXQvaWYuaCIgMgojIDEg
Ii4uLy4uLy4uLy4uL25ldC9wZmlsLmgiIDEKIyAzOCAiLi4vLi4vLi4vLi4vbmV0L3BmaWwuaCIK
c3RydWN0IG1idWY7CnN0cnVjdCBpZm5ldDsKCgoKCgpzdHJ1Y3QgcGFja2V0X2ZpbHRlcl9ob29r
IHsKICAgICAgICBzdHJ1Y3QgeyBzdHJ1Y3QgcGFja2V0X2ZpbHRlcl9ob29rICp0cWVfbmV4dDsg
c3RydWN0IHBhY2tldF9maWx0ZXJfaG9vayAqKnRxZV9wcmV2OyB9IHBmaWxfbGluazsKICAgICAg
ICBpbnQgKCpwZmlsX2Z1bmMpKHZvaWQgKiwgc3RydWN0IG1idWYgKiosIHN0cnVjdCBpZm5ldCAq
LCBpbnQpOwogICAgICAgIHZvaWQgKnBmaWxfYXJnOwogICAgICAgIGludCBwZmlsX2ZsYWdzOwp9
OwoKCgoKCgp0eXBlZGVmIHN0cnVjdCBwZmlsX2xpc3QgeyBzdHJ1Y3QgcGFja2V0X2ZpbHRlcl9o
b29rICp0cWhfZmlyc3Q7IHN0cnVjdCBwYWNrZXRfZmlsdGVyX2hvb2sgKip0cWhfbGFzdDsgfSBw
ZmlsX2xpc3RfdDsKCgoKCnN0cnVjdCBwZmlsX2hlYWQgewogICAgICAgIHBmaWxfbGlzdF90IHBo
X2luOwogICAgICAgIHBmaWxfbGlzdF90IHBoX291dDsKICAgICAgICBpbnQgcGhfdHlwZTsKICAg
ICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICB1X2xvbmcgcGh1X3ZhbDsKICAgICAgICAgICAg
ICAgIHZvaWQgKnBodV9wdHI7CiAgICAgICAgfSBwaF91bjsKCgogICAgICAgIHN0cnVjdCB7IHN0
cnVjdCBwZmlsX2hlYWQgKmxlX25leHQ7IHN0cnVjdCBwZmlsX2hlYWQgKipsZV9wcmV2OyB9IHBo
X2xpc3Q7Cn07CnR5cGVkZWYgc3RydWN0IHBmaWxfaGVhZCBwZmlsX2hlYWRfdDsKCmludCBwZmls
X3J1bl9ob29rcyhzdHJ1Y3QgcGZpbF9oZWFkICosIHN0cnVjdCBtYnVmICoqLCBzdHJ1Y3QgaWZu
ZXQgKiwKICAgICAgICAgICAgaW50KTsKCmludCBwZmlsX2FkZF9ob29rKGludCAoKmZ1bmMpKHZv
aWQgKiwgc3RydWN0IG1idWYgKiosCiAgICAgICAgICAgIHN0cnVjdCBpZm5ldCAqLCBpbnQpLCB2
b2lkICosIGludCwgc3RydWN0IHBmaWxfaGVhZCAqKTsKaW50IHBmaWxfcmVtb3ZlX2hvb2soaW50
ICgqZnVuYykodm9pZCAqLCBzdHJ1Y3QgbWJ1ZiAqKiwKICAgICAgICAgICAgc3RydWN0IGlmbmV0
ICosIGludCksIHZvaWQgKiwgaW50LCBzdHJ1Y3QgcGZpbF9oZWFkICopOwoKaW50IHBmaWxfaGVh
ZF9yZWdpc3RlcihzdHJ1Y3QgcGZpbF9oZWFkICopOwppbnQgcGZpbF9oZWFkX3VucmVnaXN0ZXIo
c3RydWN0IHBmaWxfaGVhZCAqKTsKCnN0cnVjdCBwZmlsX2hlYWQgKnBmaWxfaGVhZF9nZXQoaW50
LCB1X2xvbmcpOwoKc3RhdGljIF9faW5saW5lIHN0cnVjdCBwYWNrZXRfZmlsdGVyX2hvb2sgKgpw
ZmlsX2hvb2tfZ2V0KGludCBkaXIsIHN0cnVjdCBwZmlsX2hlYWQgKnBoKQp7CgogICAgICAgIGlm
IChkaXIgPT0gMHgwMDAwMDAwMSkKICAgICAgICAgICAgICAgIHJldHVybiAoKCgmcGgtPnBoX2lu
KS0+dHFoX2ZpcnN0KSk7CiAgICAgICAgZWxzZSBpZiAoZGlyID09IDB4MDAwMDAwMDIpCiAgICAg
ICAgICAgICAgICByZXR1cm4gKCgoJnBoLT5waF9vdXQpLT50cWhfZmlyc3QpKTsKICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICByZXR1cm4gKDApOwp9CgoKCiMgMSAiaXBmaWx0ZXIuaCIgMQoj
IDEwNCAiLi4vLi4vLi4vLi4vbmV0L3BmaWwuaCIgMgojIDgyICIuLi8uLi8uLi8uLi9uZXQvaWYu
aCIgMgoKCgoKCgoKIyAxICIuLi8uLi8uLi8uLi9hbHRxL2lmX2FsdHEuaCIgMQojIDMzICIuLi8u
Li8uLi8uLi9hbHRxL2lmX2FsdHEuaCIKIyAxICIuLi8uLi8uLi8uLi9hbHRxL2FsdHFjb25mLmgi
IDEKCgoKIyAxICJvcHRfYWx0cV9lbmFibGVkLmgiIDEKIyA1ICIuLi8uLi8uLi8uLi9hbHRxL2Fs
dHFjb25mLmgiIDIKCiMgMSAiLi4vLi4vLi4vLi4vc3lzL2NvbmYuaCIgMQojIDUwICIuLi8uLi8u
Li8uLi9zeXMvY29uZi5oIgpzdHJ1Y3QgYnVmOwpzdHJ1Y3QgcHJvYzsKc3RydWN0IHR0eTsKc3Ry
dWN0IHVpbzsKc3RydWN0IHZub2RlOwojIDgxICIuLi8uLi8uLi8uLi9zeXMvY29uZi5oIgpzdHJ1
Y3QgYmRldnN3IHsKICAgICAgICBpbnQgKCpkX29wZW4pIChkZXZfdCBkZXYsIGludCBvZmxhZ3Ms
IGludCBkZXZ0eXBlLCBzdHJ1Y3QgcHJvYyAqcCk7CgogICAgICAgIGludCAoKmRfY2xvc2UpIChk
ZXZfdCBkZXYsIGludCBmZmxhZywgaW50IGRldnR5cGUsIHN0cnVjdCBwcm9jICpwKTsKCiAgICAg
ICAgdm9pZCAoKmRfc3RyYXRlZ3kpIChzdHJ1Y3QgYnVmICpicCk7CiAgICAgICAgaW50ICgqZF9p
b2N0bCkgKGRldl90IGRldiwgdV9sb25nIGNtZCwgX19jYWRkcl90IGRhdGEsIGludCBmZmxhZywg
c3RydWN0IHByb2MgKnApOwoKICAgICAgICBpbnQgKCpkX2R1bXApIChkZXZfdCBkZXYsIGRhZGRy
X3QgYmxrbm8sIF9fY2FkZHJfdCB2YSwgc2l6ZV90IHNpemUpOwoKICAgICAgICBpbnQgKCpkX3Bz
aXplKSAoZGV2X3QgZGV2KTsKICAgICAgICBpbnQgZF90eXBlOwp9OwoKCgpleHRlcm4gc3RydWN0
IGJkZXZzdyBiZGV2c3dbXTsKIyAxNDQgIi4uLy4uLy4uLy4uL3N5cy9jb25mLmgiCnN0cnVjdCBj
ZGV2c3cgewogICAgICAgIGludCAoKmRfb3BlbikgKGRldl90IGRldiwgaW50IG9mbGFncywgaW50
IGRldnR5cGUsIHN0cnVjdCBwcm9jICpwKTsKCiAgICAgICAgaW50ICgqZF9jbG9zZSkgKGRldl90
IGRldiwgaW50IGZmbGFnLCBpbnQgZGV2dHlwZSwgc3RydWN0IHByb2MgKik7CgogICAgICAgIGlu
dCAoKmRfcmVhZCkgKGRldl90IGRldiwgc3RydWN0IHVpbyAqdWlvLCBpbnQgaW9mbGFnKTsKICAg
ICAgICBpbnQgKCpkX3dyaXRlKSAoZGV2X3QgZGV2LCBzdHJ1Y3QgdWlvICp1aW8sIGludCBpb2Zs
YWcpOwogICAgICAgIGludCAoKmRfaW9jdGwpIChkZXZfdCBkZXYsIHVfbG9uZyBjbWQsIF9fY2Fk
ZHJfdCBkYXRhLCBpbnQgZmZsYWcsIHN0cnVjdCBwcm9jICpwKTsKCiAgICAgICAgdm9pZCAoKmRf
c3RvcCkgKHN0cnVjdCB0dHkgKnRwLCBpbnQgcncpOwogICAgICAgIHN0cnVjdCB0dHkgKgogICAg
ICAgICAgICAgICAgKCpkX3R0eSkgKGRldl90IGRldik7CiAgICAgICAgaW50ICgqZF9wb2xsKSAo
ZGV2X3QgZGV2LCBpbnQgZXZlbnRzLCBzdHJ1Y3QgcHJvYyAqcCk7CiAgICAgICAgcGFkZHJfdCAo
KmRfbW1hcCkgKGRldl90LCBfX29mZl90LCBpbnQpOwogICAgICAgIGludCBkX3R5cGU7Cn07CgoK
CmV4dGVybiBzdHJ1Y3QgY2RldnN3IGNkZXZzd1tdOwojIDQ2NyAiLi4vLi4vLi4vLi4vc3lzL2Nv
bmYuaCIKZXh0ZXJuIGNvbnN0IGNoYXIgZGV2b3BuW10sIGRldmlvW10sIGRldndhaXRbXSwgZGV2
aW5bXSwgZGV2b3V0W107CmV4dGVybiBjb25zdCBjaGFyIGRldmlvY1tdLCBkZXZjbHNbXTsKCgoK
CgoKc3RydWN0IGxpbmVzdyB7CiAgICAgICAgY2hhciAqbF9uYW1lOwogICAgICAgIGludCBsX25v
OwoKICAgICAgICBpbnQgKCpsX29wZW4pIChkZXZfdCBkZXYsIHN0cnVjdCB0dHkgKnRwKTsKICAg
ICAgICBpbnQgKCpsX2Nsb3NlKSAoc3RydWN0IHR0eSAqdHAsIGludCBmbGFncyk7CiAgICAgICAg
aW50ICgqbF9yZWFkKSAoc3RydWN0IHR0eSAqdHAsIHN0cnVjdCB1aW8gKnVpbywgaW50IGZsYWcp
OwoKICAgICAgICBpbnQgKCpsX3dyaXRlKSAoc3RydWN0IHR0eSAqdHAsIHN0cnVjdCB1aW8gKnVp
bywgaW50IGZsYWcpOwoKICAgICAgICBpbnQgKCpsX2lvY3RsKSAoc3RydWN0IHR0eSAqdHAsIHVf
bG9uZyBjbWQsIF9fY2FkZHJfdCBkYXRhLCBpbnQgZmxhZywgc3RydWN0IHByb2MgKnApOwoKICAg
ICAgICBpbnQgKCpsX3JpbnQpIChpbnQgYywgc3RydWN0IHR0eSAqdHApOwogICAgICAgIGludCAo
Kmxfc3RhcnQpIChzdHJ1Y3QgdHR5ICp0cCk7CiAgICAgICAgaW50ICgqbF9tb2RlbSkgKHN0cnVj
dCB0dHkgKnRwLCBpbnQgZmxhZyk7CiAgICAgICAgaW50ICgqbF9wb2xsKSAoc3RydWN0IHR0eSAq
dHAsIGludCBldmVudHMsIHN0cnVjdCBwcm9jICpwKTsKCn07CgoKZXh0ZXJuIHN0cnVjdCBsaW5l
c3cgKipsaW5lc3c7CmV4dGVybiBpbnQgbmxpbmVzdzsKZXh0ZXJuIHZvaWQgdHR5bGRpc2NfaW5p
dCAodm9pZCk7CmludCB0dHlsZGlzY19hZGQgKHN0cnVjdCBsaW5lc3cgKmRpc2MsIGludCBubyk7
CnN0cnVjdCBsaW5lc3cgKnR0eWxkaXNjX3JlbW92ZSAoY2hhciAqbmFtZSk7CnN0cnVjdCBsaW5l
c3cgKnR0eWxkaXNjX2xvb2t1cCAoY2hhciAqbmFtZSk7CiMgNTEwICIuLi8uLi8uLi8uLi9zeXMv
Y29uZi5oIgppbnQgbnVsbGlvY3RsIChzdHJ1Y3QgdHR5ICosIHVfbG9uZywgX19jYWRkcl90LCBp
bnQsIHN0cnVjdCBwcm9jICopOwoKCgoKCnN0cnVjdCBzd2RldnQgewogICAgICAgIGRldl90IHN3
X2RldjsKICAgICAgICBpbnQgc3dfZmxhZ3M7CiAgICAgICAgaW50IHN3X25ibGtzOwogICAgICAg
IHN0cnVjdCB2bm9kZSAqc3dfdnA7Cn07CgoKCgoKZXh0ZXJuIHN0cnVjdCBzd2RldnQgc3dkZXZ0
W107CgpkZXZfdCBjaHJ0b2JsayAoZGV2X3QpOwppbnQgaXNrbWVtZGV2IChkZXZfdCk7CmludCBp
c3plcm9kZXYgKGRldl90KTsKCgoKCmludCBjbm9wZW4gKGRldl90LCBpbnQsIGludCwgc3RydWN0
IHByb2MgKik7IGludCBjbmNsb3NlIChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyBp
bnQgY25yZWFkIChkZXZfdCwgc3RydWN0IHVpbyAqLCBpbnQpOyBpbnQgY253cml0ZSAoZGV2X3Qs
IHN0cnVjdCB1aW8gKiwgaW50KTsgaW50IGNuaW9jdGwgKGRldl90LCB1X2xvbmcsIF9fY2FkZHJf
dCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgdm9pZCBjbnN0b3AgKHN0cnVjdCB0dHkgKiwgaW50KTsg
c3RydWN0IHR0eSAqY250dHkgKGRldl90KTsgaW50IGNucG9sbCAoZGV2X3QsIGludCwgc3RydWN0
IHByb2MgKik7IHBhZGRyX3QgY25tbWFwIChkZXZfdCwgX19vZmZfdCwgaW50KTsKCmludCBjdHR5
b3BlbiAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IGN0dHljbG9zZSAoZGV2
X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IGN0dHlyZWFkIChkZXZfdCwgc3RydWN0
IHVpbyAqLCBpbnQpOyBpbnQgY3R0eXdyaXRlIChkZXZfdCwgc3RydWN0IHVpbyAqLCBpbnQpOyBp
bnQgY3R0eWlvY3RsIChkZXZfdCwgdV9sb25nLCBfX2NhZGRyX3QsIGludCwgc3RydWN0IHByb2Mg
Kik7IHZvaWQgY3R0eXN0b3AgKHN0cnVjdCB0dHkgKiwgaW50KTsgc3RydWN0IHR0eSAqY3R0eXR0
eSAoZGV2X3QpOyBpbnQgY3R0eXBvbGwgKGRldl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyBwYWRk
cl90IGN0dHltbWFwIChkZXZfdCwgX19vZmZfdCwgaW50KTsKCgoKaW50IHB0Y29wZW4gKGRldl90
LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGludCBwdGNjbG9zZSAoZGV2X3QsIGludCwgaW50
LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IHB0Y3JlYWQgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7
IGludCBwdGN3cml0ZSAoZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50IHB0eWlvY3RsIChk
ZXZfdCwgdV9sb25nLCBfX2NhZGRyX3QsIGludCwgc3RydWN0IHByb2MgKik7IHZvaWQgcHRjc3Rv
cCAoc3RydWN0IHR0eSAqLCBpbnQpOyBzdHJ1Y3QgdHR5ICpwdHl0dHkgKGRldl90KTsgaW50IHB0
Y3BvbGwgKGRldl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyBwYWRkcl90IHB0Y21tYXAgKGRldl90
LCBfX29mZl90LCBpbnQpOwoKCgppbnQgcHRzb3BlbiAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3Qg
cHJvYyAqKTsgaW50IHB0c2Nsb3NlIChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyBp
bnQgcHRzcmVhZCAoZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50IHB0c3dyaXRlIChkZXZf
dCwgc3RydWN0IHVpbyAqLCBpbnQpOyBpbnQgcHR5aW9jdGwgKGRldl90LCB1X2xvbmcsIF9fY2Fk
ZHJfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgdm9pZCBwdHNzdG9wIChzdHJ1Y3QgdHR5ICosIGlu
dCk7IHN0cnVjdCB0dHkgKnB0eXR0eSAoZGV2X3QpOyBpbnQgcHRzcG9sbCAoZGV2X3QsIGludCwg
c3RydWN0IHByb2MgKik7IHBhZGRyX3QgcHRzbW1hcCAoZGV2X3QsIF9fb2ZmX3QsIGludCk7CgoK
CmludCBtbW9wZW4gKGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGludCBtbWNsb3Nl
IChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyBpbnQgbW1ydyAoZGV2X3QsIHN0cnVj
dCB1aW8gKiwgaW50KTsgaW50IG1tcncgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7IGludCBt
bWlvY3RsIChkZXZfdCwgdV9sb25nLCBfX2NhZGRyX3QsIGludCwgc3RydWN0IHByb2MgKik7IHZv
aWQgbW1zdG9wIChzdHJ1Y3QgdHR5ICosIGludCk7IHN0cnVjdCB0dHkgKm1tdHR5IChkZXZfdCk7
IGludCBtbXBvbGwgKGRldl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyBwYWRkcl90IG1tbW1hcCAo
ZGV2X3QsIF9fb2ZmX3QsIGludCk7CiMgNTY0ICIuLi8uLi8uLi8uLi9zeXMvY29uZi5oIgppbnQg
Y2Nkb3BlbiAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IGNjZGNsb3NlIChk
ZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lkIGNjZHN0cmF0ZWd5IChzdHJ1Y3Qg
YnVmICopOyBpbnQgY2NkaW9jdGwgKGRldl90LCB1X2xvbmcsIF9fY2FkZHJfdCwgaW50LCBzdHJ1
Y3QgcHJvYyAqKTsgaW50IGNjZGR1bXAgKGRldl90LCBkYWRkcl90LCBfX2NhZGRyX3QsIHNpemVf
dCk7IGludCBjY2RzaXplIChkZXZfdCk7CmludCBjY2RvcGVuIChkZXZfdCwgaW50LCBpbnQsIHN0
cnVjdCBwcm9jICopOyBpbnQgY2NkY2xvc2UgKGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2Mg
Kik7IGludCBjY2RyZWFkIChkZXZfdCwgc3RydWN0IHVpbyAqLCBpbnQpOyBpbnQgY2Nkd3JpdGUg
KGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7IGludCBjY2Rpb2N0bCAoZGV2X3QsIHVfbG9uZywg
X19jYWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lkIGNjZHN0b3AgKHN0cnVjdCB0dHkg
KiwgaW50KTsgc3RydWN0IHR0eSAqY2NkdHR5IChkZXZfdCk7IGludCBjY2Rwb2xsIChkZXZfdCwg
aW50LCBzdHJ1Y3QgcHJvYyAqKTsgcGFkZHJfdCBjY2RtbWFwIChkZXZfdCwgX19vZmZfdCwgaW50
KTsKCmludCBtZG9wZW4gKGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGludCBtZGNs
b3NlIChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lkIG1kc3RyYXRlZ3kgKHN0
cnVjdCBidWYgKik7IGludCBtZGlvY3RsIChkZXZfdCwgdV9sb25nLCBfX2NhZGRyX3QsIGludCwg
c3RydWN0IHByb2MgKik7IGludCBtZGR1bXAgKGRldl90LCBkYWRkcl90LCBfX2NhZGRyX3QsIHNp
emVfdCk7IGludCBtZHNpemUgKGRldl90KTsKaW50IG1kb3BlbiAoZGV2X3QsIGludCwgaW50LCBz
dHJ1Y3QgcHJvYyAqKTsgaW50IG1kY2xvc2UgKGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2Mg
Kik7IGludCBtZHJlYWQgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7IGludCBtZHdyaXRlIChk
ZXZfdCwgc3RydWN0IHVpbyAqLCBpbnQpOyBpbnQgbWRpb2N0bCAoZGV2X3QsIHVfbG9uZywgX19j
YWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lkIG1kc3RvcCAoc3RydWN0IHR0eSAqLCBp
bnQpOyBzdHJ1Y3QgdHR5ICptZHR0eSAoZGV2X3QpOyBpbnQgbWRwb2xsIChkZXZfdCwgaW50LCBz
dHJ1Y3QgcHJvYyAqKTsgcGFkZHJfdCBtZG1tYXAgKGRldl90LCBfX29mZl90LCBpbnQpOwoKaW50
IHJhaWRvcGVuIChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyBpbnQgcmFpZGNsb3Nl
IChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lkIHJhaWRzdHJhdGVneSAoc3Ry
dWN0IGJ1ZiAqKTsgaW50IHJhaWRpb2N0bCAoZGV2X3QsIHVfbG9uZywgX19jYWRkcl90LCBpbnQs
IHN0cnVjdCBwcm9jICopOyBpbnQgcmFpZGR1bXAgKGRldl90LCBkYWRkcl90LCBfX2NhZGRyX3Qs
IHNpemVfdCk7IGludCByYWlkc2l6ZSAoZGV2X3QpOwppbnQgcmFpZG9wZW4gKGRldl90LCBpbnQs
IGludCwgc3RydWN0IHByb2MgKik7IGludCByYWlkY2xvc2UgKGRldl90LCBpbnQsIGludCwgc3Ry
dWN0IHByb2MgKik7IGludCByYWlkcmVhZCAoZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50
IHJhaWR3cml0ZSAoZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50IHJhaWRpb2N0bCAoZGV2
X3QsIHVfbG9uZywgX19jYWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lkIHJhaWRzdG9w
IChzdHJ1Y3QgdHR5ICosIGludCk7IHN0cnVjdCB0dHkgKnJhaWR0dHkgKGRldl90KTsgaW50IHJh
aWRwb2xsIChkZXZfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgcGFkZHJfdCByYWlkbW1hcCAoZGV2
X3QsIF9fb2ZmX3QsIGludCk7CgppbnQgdm5kb3BlbiAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3Qg
cHJvYyAqKTsgaW50IHZuZGNsb3NlIChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2
b2lkIHZuZHN0cmF0ZWd5IChzdHJ1Y3QgYnVmICopOyBpbnQgdm5kaW9jdGwgKGRldl90LCB1X2xv
bmcsIF9fY2FkZHJfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IHZuZGR1bXAgKGRldl90LCBk
YWRkcl90LCBfX2NhZGRyX3QsIHNpemVfdCk7IGludCB2bmRzaXplIChkZXZfdCk7CmludCB2bmRv
cGVuIChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyBpbnQgdm5kY2xvc2UgKGRldl90
LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGludCB2bmRyZWFkIChkZXZfdCwgc3RydWN0IHVp
byAqLCBpbnQpOyBpbnQgdm5kd3JpdGUgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7IGludCB2
bmRpb2N0bCAoZGV2X3QsIHVfbG9uZywgX19jYWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2
b2lkIHZuZHN0b3AgKHN0cnVjdCB0dHkgKiwgaW50KTsgc3RydWN0IHR0eSAqdm5kdHR5IChkZXZf
dCk7IGludCB2bmRwb2xsIChkZXZfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgcGFkZHJfdCB2bmRt
bWFwIChkZXZfdCwgX19vZmZfdCwgaW50KTsKCgoKCmludCBjZG9wZW4gKGRldl90LCBpbnQsIGlu
dCwgc3RydWN0IHByb2MgKik7IGludCBjZGNsb3NlIChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBw
cm9jICopOyB2b2lkIGNkc3RyYXRlZ3kgKHN0cnVjdCBidWYgKik7IGludCBjZGlvY3RsIChkZXZf
dCwgdV9sb25nLCBfX2NhZGRyX3QsIGludCwgc3RydWN0IHByb2MgKik7IGludCBjZGR1bXAgKGRl
dl90LCBkYWRkcl90LCBfX2NhZGRyX3QsIHNpemVfdCk7IGludCBjZHNpemUgKGRldl90KTsKaW50
IGNkb3BlbiAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IGNkY2xvc2UgKGRl
dl90LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGludCBjZHJlYWQgKGRldl90LCBzdHJ1Y3Qg
dWlvICosIGludCk7IGludCBjZHdyaXRlIChkZXZfdCwgc3RydWN0IHVpbyAqLCBpbnQpOyBpbnQg
Y2Rpb2N0bCAoZGV2X3QsIHVfbG9uZywgX19jYWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2
b2lkIGNkc3RvcCAoc3RydWN0IHR0eSAqLCBpbnQpOyBzdHJ1Y3QgdHR5ICpjZHR0eSAoZGV2X3Qp
OyBpbnQgY2Rwb2xsIChkZXZfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgcGFkZHJfdCBjZG1tYXAg
KGRldl90LCBfX29mZl90LCBpbnQpOwoKaW50IGNob3BlbiAoZGV2X3QsIGludCwgaW50LCBzdHJ1
Y3QgcHJvYyAqKTsgaW50IGNoY2xvc2UgKGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7
IGludCBjaHJlYWQgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7IGludCBjaHdyaXRlIChkZXZf
dCwgc3RydWN0IHVpbyAqLCBpbnQpOyBpbnQgY2hpb2N0bCAoZGV2X3QsIHVfbG9uZywgX19jYWRk
cl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lkIGNoc3RvcCAoc3RydWN0IHR0eSAqLCBpbnQp
OyBzdHJ1Y3QgdHR5ICpjaHR0eSAoZGV2X3QpOyBpbnQgY2hwb2xsIChkZXZfdCwgaW50LCBzdHJ1
Y3QgcHJvYyAqKTsgcGFkZHJfdCBjaG1tYXAgKGRldl90LCBfX29mZl90LCBpbnQpOwoKaW50IHNk
b3BlbiAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IHNkY2xvc2UgKGRldl90
LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IHZvaWQgc2RzdHJhdGVneSAoc3RydWN0IGJ1ZiAq
KTsgaW50IHNkaW9jdGwgKGRldl90LCB1X2xvbmcsIF9fY2FkZHJfdCwgaW50LCBzdHJ1Y3QgcHJv
YyAqKTsgaW50IHNkZHVtcCAoZGV2X3QsIGRhZGRyX3QsIF9fY2FkZHJfdCwgc2l6ZV90KTsgaW50
IHNkc2l6ZSAoZGV2X3QpOwppbnQgc2RvcGVuIChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9j
ICopOyBpbnQgc2RjbG9zZSAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IHNk
cmVhZCAoZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50IHNkd3JpdGUgKGRldl90LCBzdHJ1
Y3QgdWlvICosIGludCk7IGludCBzZGlvY3RsIChkZXZfdCwgdV9sb25nLCBfX2NhZGRyX3QsIGlu
dCwgc3RydWN0IHByb2MgKik7IHZvaWQgc2RzdG9wIChzdHJ1Y3QgdHR5ICosIGludCk7IHN0cnVj
dCB0dHkgKnNkdHR5IChkZXZfdCk7IGludCBzZHBvbGwgKGRldl90LCBpbnQsIHN0cnVjdCBwcm9j
ICopOyBwYWRkcl90IHNkbW1hcCAoZGV2X3QsIF9fb2ZmX3QsIGludCk7CgoKaW50IHNlb3BlbiAo
ZGV2X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IHNlY2xvc2UgKGRldl90LCBpbnQs
IGludCwgc3RydWN0IHByb2MgKik7IGludCBzZWlvY3RsIChkZXZfdCwgdV9sb25nLCBfX2NhZGRy
X3QsIGludCwgc3RydWN0IHByb2MgKik7CgppbnQgc3RvcGVuIChkZXZfdCwgaW50LCBpbnQsIHN0
cnVjdCBwcm9jICopOyBpbnQgc3RjbG9zZSAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAq
KTsgdm9pZCBzdHN0cmF0ZWd5IChzdHJ1Y3QgYnVmICopOyBpbnQgc3Rpb2N0bCAoZGV2X3QsIHVf
bG9uZywgX19jYWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyBpbnQgc3RkdW1wIChkZXZfdCwg
ZGFkZHJfdCwgX19jYWRkcl90LCBzaXplX3QpOyBpbnQgc3RzaXplIChkZXZfdCk7CmludCBzdG9w
ZW4gKGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGludCBzdGNsb3NlIChkZXZfdCwg
aW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyBpbnQgc3RyZWFkIChkZXZfdCwgc3RydWN0IHVpbyAq
LCBpbnQpOyBpbnQgc3R3cml0ZSAoZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50IHN0aW9j
dGwgKGRldl90LCB1X2xvbmcsIF9fY2FkZHJfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgdm9pZCBz
dHN0b3AgKHN0cnVjdCB0dHkgKiwgaW50KTsgc3RydWN0IHR0eSAqc3R0dHkgKGRldl90KTsgaW50
IHN0cG9sbCAoZGV2X3QsIGludCwgc3RydWN0IHByb2MgKik7IHBhZGRyX3Qgc3RtbWFwIChkZXZf
dCwgX19vZmZfdCwgaW50KTsKCmludCBzc29wZW4gKGRldl90LCBpbnQsIGludCwgc3RydWN0IHBy
b2MgKik7IGludCBzc2Nsb3NlIChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lk
IHNzc3RyYXRlZ3kgKHN0cnVjdCBidWYgKik7IGludCBzc2lvY3RsIChkZXZfdCwgdV9sb25nLCBf
X2NhZGRyX3QsIGludCwgc3RydWN0IHByb2MgKik7IGludCBzc2R1bXAgKGRldl90LCBkYWRkcl90
LCBfX2NhZGRyX3QsIHNpemVfdCk7IGludCBzc3NpemUgKGRldl90KTsKaW50IHNzb3BlbiAoZGV2
X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IHNzY2xvc2UgKGRldl90LCBpbnQsIGlu
dCwgc3RydWN0IHByb2MgKik7IGludCBzc3JlYWQgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7
IGludCBzc3dyaXRlIChkZXZfdCwgc3RydWN0IHVpbyAqLCBpbnQpOyBpbnQgc3Npb2N0bCAoZGV2
X3QsIHVfbG9uZywgX19jYWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lkIHNzc3RvcCAo
c3RydWN0IHR0eSAqLCBpbnQpOyBzdHJ1Y3QgdHR5ICpzc3R0eSAoZGV2X3QpOyBpbnQgc3Nwb2xs
IChkZXZfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgcGFkZHJfdCBzc21tYXAgKGRldl90LCBfX29m
Zl90LCBpbnQpOwoKaW50IHVrb3BlbiAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsg
aW50IHVrY2xvc2UgKGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IHZvaWQgdWtzdHJh
dGVneSAoc3RydWN0IGJ1ZiAqKTsgaW50IHVraW9jdGwgKGRldl90LCB1X2xvbmcsIF9fY2FkZHJf
dCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IHVrZHVtcCAoZGV2X3QsIGRhZGRyX3QsIF9fY2Fk
ZHJfdCwgc2l6ZV90KTsgaW50IHVrc2l6ZSAoZGV2X3QpOwppbnQgdWtvcGVuIChkZXZfdCwgaW50
LCBpbnQsIHN0cnVjdCBwcm9jICopOyBpbnQgdWtjbG9zZSAoZGV2X3QsIGludCwgaW50LCBzdHJ1
Y3QgcHJvYyAqKTsgaW50IHVrcmVhZCAoZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50IHVr
d3JpdGUgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7IGludCB1a2lvY3RsIChkZXZfdCwgdV9s
b25nLCBfX2NhZGRyX3QsIGludCwgc3RydWN0IHByb2MgKik7IHZvaWQgdWtzdG9wIChzdHJ1Y3Qg
dHR5ICosIGludCk7IHN0cnVjdCB0dHkgKnVrdHR5IChkZXZfdCk7IGludCB1a3BvbGwgKGRldl90
LCBpbnQsIHN0cnVjdCBwcm9jICopOyBwYWRkcl90IHVrbW1hcCAoZGV2X3QsIF9fb2ZmX3QsIGlu
dCk7CgoKCgppbnQgbGRvcGVuIChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyBpbnQg
bGRjbG9zZSAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgdm9pZCBsZHN0cmF0ZWd5
IChzdHJ1Y3QgYnVmICopOyBpbnQgbGRpb2N0bCAoZGV2X3QsIHVfbG9uZywgX19jYWRkcl90LCBp
bnQsIHN0cnVjdCBwcm9jICopOyBpbnQgbGRkdW1wIChkZXZfdCwgZGFkZHJfdCwgX19jYWRkcl90
LCBzaXplX3QpOyBpbnQgbGRzaXplIChkZXZfdCk7CmludCBsZG9wZW4gKGRldl90LCBpbnQsIGlu
dCwgc3RydWN0IHByb2MgKik7IGludCBsZGNsb3NlIChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBw
cm9jICopOyBpbnQgbGRyZWFkIChkZXZfdCwgc3RydWN0IHVpbyAqLCBpbnQpOyBpbnQgbGR3cml0
ZSAoZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50IGxkaW9jdGwgKGRldl90LCB1X2xvbmcs
IF9fY2FkZHJfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgdm9pZCBsZHN0b3AgKHN0cnVjdCB0dHkg
KiwgaW50KTsgc3RydWN0IHR0eSAqbGR0dHkgKGRldl90KTsgaW50IGxkcG9sbCAoZGV2X3QsIGlu
dCwgc3RydWN0IHByb2MgKik7IHBhZGRyX3QgbGRtbWFwIChkZXZfdCwgX19vZmZfdCwgaW50KTsK
CgoKCmludCBia3Ryb3BlbiAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IGJr
dHJjbG9zZSAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IGJrdHJyZWFkIChk
ZXZfdCwgc3RydWN0IHVpbyAqLCBpbnQpOyBpbnQgYmt0cndyaXRlIChkZXZfdCwgc3RydWN0IHVp
byAqLCBpbnQpOyBpbnQgYmt0cmlvY3RsIChkZXZfdCwgdV9sb25nLCBfX2NhZGRyX3QsIGludCwg
c3RydWN0IHByb2MgKik7IHZvaWQgYmt0cnN0b3AgKHN0cnVjdCB0dHkgKiwgaW50KTsgc3RydWN0
IHR0eSAqYmt0cnR0eSAoZGV2X3QpOyBpbnQgYmt0cnBvbGwgKGRldl90LCBpbnQsIHN0cnVjdCBw
cm9jICopOyBwYWRkcl90IGJrdHJtbWFwIChkZXZfdCwgX19vZmZfdCwgaW50KTsKCgoKCmludCBi
cGZvcGVuIChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyBpbnQgYnBmY2xvc2UgKGRl
dl90LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGludCBicGZyZWFkIChkZXZfdCwgc3RydWN0
IHVpbyAqLCBpbnQpOyBpbnQgYnBmd3JpdGUgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7IGlu
dCBicGZpb2N0bCAoZGV2X3QsIHVfbG9uZywgX19jYWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICop
OyB2b2lkIGJwZnN0b3AgKHN0cnVjdCB0dHkgKiwgaW50KTsgc3RydWN0IHR0eSAqYnBmdHR5IChk
ZXZfdCk7IGludCBicGZwb2xsIChkZXZfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgcGFkZHJfdCBi
cGZtbWFwIChkZXZfdCwgX19vZmZfdCwgaW50KTsKCmludCBpcGxvcGVuIChkZXZfdCwgaW50LCBp
bnQsIHN0cnVjdCBwcm9jICopOyBpbnQgaXBsY2xvc2UgKGRldl90LCBpbnQsIGludCwgc3RydWN0
IHByb2MgKik7IGludCBpcGxyZWFkIChkZXZfdCwgc3RydWN0IHVpbyAqLCBpbnQpOyBpbnQgaXBs
d3JpdGUgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7IGludCBpcGxpb2N0bCAoZGV2X3QsIHVf
bG9uZywgX19jYWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lkIGlwbHN0b3AgKHN0cnVj
dCB0dHkgKiwgaW50KTsgc3RydWN0IHR0eSAqaXBsdHR5IChkZXZfdCk7IGludCBpcGxwb2xsIChk
ZXZfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgcGFkZHJfdCBpcGxtbWFwIChkZXZfdCwgX19vZmZf
dCwgaW50KTsKCgoKCgoKaW50IHN2cjRfbmV0b3BlbiAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3Qg
cHJvYyAqKTsgaW50IHN2cjRfbmV0Y2xvc2UgKGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2Mg
Kik7IGludCBzdnI0X25ldHJlYWQgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7IGludCBzdnI0
X25ldHdyaXRlIChkZXZfdCwgc3RydWN0IHVpbyAqLCBpbnQpOyBpbnQgc3ZyNF9uZXRpb2N0bCAo
ZGV2X3QsIHVfbG9uZywgX19jYWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lkIHN2cjRf
bmV0c3RvcCAoc3RydWN0IHR0eSAqLCBpbnQpOyBzdHJ1Y3QgdHR5ICpzdnI0X25ldHR0eSAoZGV2
X3QpOyBpbnQgc3ZyNF9uZXRwb2xsIChkZXZfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgcGFkZHJf
dCBzdnI0X25ldG1tYXAgKGRldl90LCBfX29mZl90LCBpbnQpOwoKaW50IHR1bm9wZW4gKGRldl90
LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGludCB0dW5jbG9zZSAoZGV2X3QsIGludCwgaW50
LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IHR1bnJlYWQgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7
IGludCB0dW53cml0ZSAoZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50IHR1bmlvY3RsIChk
ZXZfdCwgdV9sb25nLCBfX2NhZGRyX3QsIGludCwgc3RydWN0IHByb2MgKik7IHZvaWQgdHVuc3Rv
cCAoc3RydWN0IHR0eSAqLCBpbnQpOyBzdHJ1Y3QgdHR5ICp0dW50dHkgKGRldl90KTsgaW50IHR1
bnBvbGwgKGRldl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyBwYWRkcl90IHR1bm1tYXAgKGRldl90
LCBfX29mZl90LCBpbnQpOwoKCgoKaW50IGF1ZGlvb3BlbiAoZGV2X3QsIGludCwgaW50LCBzdHJ1
Y3QgcHJvYyAqKTsgaW50IGF1ZGlvY2xvc2UgKGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2Mg
Kik7IGludCBhdWRpb3JlYWQgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7IGludCBhdWRpb3dy
aXRlIChkZXZfdCwgc3RydWN0IHVpbyAqLCBpbnQpOyBpbnQgYXVkaW9pb2N0bCAoZGV2X3QsIHVf
bG9uZywgX19jYWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lkIGF1ZGlvc3RvcCAoc3Ry
dWN0IHR0eSAqLCBpbnQpOyBzdHJ1Y3QgdHR5ICphdWRpb3R0eSAoZGV2X3QpOyBpbnQgYXVkaW9w
b2xsIChkZXZfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgcGFkZHJfdCBhdWRpb21tYXAgKGRldl90
LCBfX29mZl90LCBpbnQpOwppbnQgbWlkaW9wZW4gKGRldl90LCBpbnQsIGludCwgc3RydWN0IHBy
b2MgKik7IGludCBtaWRpY2xvc2UgKGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGlu
dCBtaWRpcmVhZCAoZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50IG1pZGl3cml0ZSAoZGV2
X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50IG1pZGlpb2N0bCAoZGV2X3QsIHVfbG9uZywgX19j
YWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lkIG1pZGlzdG9wIChzdHJ1Y3QgdHR5ICos
IGludCk7IHN0cnVjdCB0dHkgKm1pZGl0dHkgKGRldl90KTsgaW50IG1pZGlwb2xsIChkZXZfdCwg
aW50LCBzdHJ1Y3QgcHJvYyAqKTsgcGFkZHJfdCBtaWRpbW1hcCAoZGV2X3QsIF9fb2ZmX3QsIGlu
dCk7CmludCBzZXF1ZW5jZXJvcGVuIChkZXZfdCwgaW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyBp
bnQgc2VxdWVuY2VyY2xvc2UgKGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGludCBz
ZXF1ZW5jZXJyZWFkIChkZXZfdCwgc3RydWN0IHVpbyAqLCBpbnQpOyBpbnQgc2VxdWVuY2Vyd3Jp
dGUgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7IGludCBzZXF1ZW5jZXJpb2N0bCAoZGV2X3Qs
IHVfbG9uZywgX19jYWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyB2b2lkIHNlcXVlbmNlcnN0
b3AgKHN0cnVjdCB0dHkgKiwgaW50KTsgc3RydWN0IHR0eSAqc2VxdWVuY2VydHR5IChkZXZfdCk7
IGludCBzZXF1ZW5jZXJwb2xsIChkZXZfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgcGFkZHJfdCBz
ZXF1ZW5jZXJtbWFwIChkZXZfdCwgX19vZmZfdCwgaW50KTsKCmludCBmaWxlZGVzY29wZW4gKGRl
dl90LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGludCBmaWxlZGVzY2Nsb3NlIChkZXZfdCwg
aW50LCBpbnQsIHN0cnVjdCBwcm9jICopOyBpbnQgZmlsZWRlc2NyZWFkIChkZXZfdCwgc3RydWN0
IHVpbyAqLCBpbnQpOyBpbnQgZmlsZWRlc2N3cml0ZSAoZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50
KTsgaW50IGZpbGVkZXNjaW9jdGwgKGRldl90LCB1X2xvbmcsIF9fY2FkZHJfdCwgaW50LCBzdHJ1
Y3QgcHJvYyAqKTsgdm9pZCBmaWxlZGVzY3N0b3AgKHN0cnVjdCB0dHkgKiwgaW50KTsgc3RydWN0
IHR0eSAqZmlsZWRlc2N0dHkgKGRldl90KTsgaW50IGZpbGVkZXNjcG9sbCAoZGV2X3QsIGludCwg
c3RydWN0IHByb2MgKik7IHBhZGRyX3QgZmlsZWRlc2NtbWFwIChkZXZfdCwgX19vZmZfdCwgaW50
KTsKCgoKCgoKaW50IGxrbW9wZW4gKGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGlu
dCBsa21jbG9zZSAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IGxrbXJlYWQg
KGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7IGludCBsa213cml0ZSAoZGV2X3QsIHN0cnVjdCB1
aW8gKiwgaW50KTsgaW50IGxrbWlvY3RsIChkZXZfdCwgdV9sb25nLCBfX2NhZGRyX3QsIGludCwg
c3RydWN0IHByb2MgKik7IHZvaWQgbGttc3RvcCAoc3RydWN0IHR0eSAqLCBpbnQpOyBzdHJ1Y3Qg
dHR5ICpsa210dHkgKGRldl90KTsgaW50IGxrbXBvbGwgKGRldl90LCBpbnQsIHN0cnVjdCBwcm9j
ICopOyBwYWRkcl90IGxrbW1tYXAgKGRldl90LCBfX29mZl90LCBpbnQpOwoKaW50IGxvZ29wZW4g
KGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGludCBsb2djbG9zZSAoZGV2X3QsIGlu
dCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgaW50IGxvZ3JlYWQgKGRldl90LCBzdHJ1Y3QgdWlvICos
IGludCk7IGludCBsb2d3cml0ZSAoZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50IGxvZ2lv
Y3RsIChkZXZfdCwgdV9sb25nLCBfX2NhZGRyX3QsIGludCwgc3RydWN0IHByb2MgKik7IHZvaWQg
bG9nc3RvcCAoc3RydWN0IHR0eSAqLCBpbnQpOyBzdHJ1Y3QgdHR5ICpsb2d0dHkgKGRldl90KTsg
aW50IGxvZ3BvbGwgKGRldl90LCBpbnQsIHN0cnVjdCBwcm9jICopOyBwYWRkcl90IGxvZ21tYXAg
KGRldl90LCBfX29mZl90LCBpbnQpOwoKaW50IHJuZG9wZW4gKGRldl90LCBpbnQsIGludCwgc3Ry
dWN0IHByb2MgKik7IGludCBybmRjbG9zZSAoZGV2X3QsIGludCwgaW50LCBzdHJ1Y3QgcHJvYyAq
KTsgaW50IHJuZHJlYWQgKGRldl90LCBzdHJ1Y3QgdWlvICosIGludCk7IGludCBybmR3cml0ZSAo
ZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50IHJuZGlvY3RsIChkZXZfdCwgdV9sb25nLCBf
X2NhZGRyX3QsIGludCwgc3RydWN0IHByb2MgKik7IHZvaWQgcm5kc3RvcCAoc3RydWN0IHR0eSAq
LCBpbnQpOyBzdHJ1Y3QgdHR5ICpybmR0dHkgKGRldl90KTsgaW50IHJuZHBvbGwgKGRldl90LCBp
bnQsIHN0cnVjdCBwcm9jICopOyBwYWRkcl90IHJuZG1tYXAgKGRldl90LCBfX29mZl90LCBpbnQp
OwojIDY1MyAiLi4vLi4vLi4vLi4vc3lzL2NvbmYuaCIKc3RydWN0IGRldm5hbWV0b2JkZXZtYWog
ewogICAgICAgIGNvbnN0IGNoYXIgKmRfbmFtZTsKICAgICAgICBpbnQgZF9tYWo7Cn07CgoKZXh0
ZXJuIHN0cnVjdCBkZXZuYW1ldG9iZGV2bWFqIGRldl9uYW1lMmJsa1tdOwpzdHJ1Y3QgZGV2aWNl
Owp2b2lkIHNldHJvb3QgKHN0cnVjdCBkZXZpY2UgKiwgaW50KTsKdm9pZCBzd2FwY29uZiAodm9p
ZCk7CiMgNyAiLi4vLi4vLi4vLi4vYWx0cS9hbHRxY29uZi5oIiAyCgoKCgoKCgppbnQgYWx0cW9w
ZW4gKGRldl90LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGludCBhbHRxY2xvc2UgKGRldl90
LCBpbnQsIGludCwgc3RydWN0IHByb2MgKik7IGludCBhbHRxcmVhZCAoZGV2X3QsIHN0cnVjdCB1
aW8gKiwgaW50KTsgaW50IGFsdHF3cml0ZSAoZGV2X3QsIHN0cnVjdCB1aW8gKiwgaW50KTsgaW50
IGFsdHFpb2N0bCAoZGV2X3QsIHVfbG9uZywgX19jYWRkcl90LCBpbnQsIHN0cnVjdCBwcm9jICop
OyB2b2lkIGFsdHFzdG9wIChzdHJ1Y3QgdHR5ICosIGludCk7IHN0cnVjdCB0dHkgKmFsdHF0dHkg
KGRldl90KTsgaW50IGFsdHFwb2xsIChkZXZfdCwgaW50LCBzdHJ1Y3QgcHJvYyAqKTsgcGFkZHJf
dCBhbHRxbW1hcCAoZGV2X3QsIF9fb2ZmX3QsIGludCk7CiMgMzQgIi4uLy4uLy4uLy4uL2FsdHEv
aWZfYWx0cS5oIiAyCgoKc3RydWN0IGFsdHFfcGt0YXR0cjsgc3RydWN0IHRiX3JlZ3VsYXRvcjsg
c3RydWN0IHRvcF9jZG5yOwoKCgoKc3RydWN0IGlmYWx0cSB7CgogICAgICAgIHN0cnVjdCBtYnVm
ICppZnFfaGVhZDsKICAgICAgICBzdHJ1Y3QgbWJ1ZiAqaWZxX3RhaWw7CiAgICAgICAgaW50IGlm
cV9sZW47CiAgICAgICAgaW50IGlmcV9tYXhsZW47CiAgICAgICAgaW50IGlmcV9kcm9wczsKCgog
ICAgICAgIGludCBhbHRxX3R5cGU7CiAgICAgICAgaW50IGFsdHFfZmxhZ3M7CiAgICAgICAgdm9p
ZCAqYWx0cV9kaXNjOwogICAgICAgIHN0cnVjdCBpZm5ldCAqYWx0cV9pZnA7CgogICAgICAgIGlu
dCAoKmFsdHFfZW5xdWV1ZSkgKHN0cnVjdCBpZmFsdHEgKiwgc3RydWN0IG1idWYgKiwgc3RydWN0
IGFsdHFfcGt0YXR0ciAqKTsKCiAgICAgICAgc3RydWN0IG1idWYgKigqYWx0cV9kZXF1ZXVlKSAo
c3RydWN0IGlmYWx0cSAqLCBpbnQpOwogICAgICAgIGludCAoKmFsdHFfcmVxdWVzdCkgKHN0cnVj
dCBpZmFsdHEgKiwgaW50LCB2b2lkICopOwoKCiAgICAgICAgdm9pZCAqYWx0cV9jbGZpZXI7CiAg
ICAgICAgdm9pZCAqKCphbHRxX2NsYXNzaWZ5KSAodm9pZCAqLCBzdHJ1Y3QgbWJ1ZiAqLCBpbnQp
OwoKCiAgICAgICAgc3RydWN0IHRiX3JlZ3VsYXRvciAqYWx0cV90YnI7CgoKICAgICAgICBzdHJ1
Y3QgdG9wX2NkbnIgKmFsdHFfY2RucjsKfTsKIyA4NSAiLi4vLi4vLi4vLi4vYWx0cS9pZl9hbHRx
LmgiCnN0cnVjdCBhbHRxX3BrdGF0dHIgewogICAgICAgIHZvaWQgKnBhdHRyX2NsYXNzOwogICAg
ICAgIGludCBwYXR0cl9hZjsKICAgICAgICBfX2NhZGRyX3QgcGF0dHJfaGRyOwp9OwojIDEwMCAi
Li4vLi4vLi4vLi4vYWx0cS9pZl9hbHRxLmgiCnN0cnVjdCB0Yl9yZWd1bGF0b3IgewogICAgICAg
IF9faW50NjRfdCB0YnJfcmF0ZTsKICAgICAgICBfX2ludDY0X3QgdGJyX2RlcHRoOwoKICAgICAg
ICBfX2ludDY0X3QgdGJyX3Rva2VuOwogICAgICAgIF9faW50NjRfdCB0YnJfZmlsbHVwdGltZTsK
ICAgICAgICB1X2ludDY0X3QgdGJyX2xhc3Q7CgogICAgICAgIGludCB0YnJfbGFzdG9wOwoKfTsK
IyAxNDkgIi4uLy4uLy4uLy4uL2FsdHEvaWZfYWx0cS5oIgpleHRlcm4gaW50IGFsdHFfYXR0YWNo
IChzdHJ1Y3QgaWZhbHRxICosIGludCwgdm9pZCAqLCBpbnQgKCopKHN0cnVjdCBpZmFsdHEgKiwg
c3RydWN0IG1idWYgKiwgc3RydWN0IGFsdHFfcGt0YXR0ciAqKSwgc3RydWN0IG1idWYgKigqKShz
dHJ1Y3QgaWZhbHRxICosIGludCksIGludCAoKikoc3RydWN0IGlmYWx0cSAqLCBpbnQsIHZvaWQg
KiksIHZvaWQgKiwgdm9pZCAqKCopKHZvaWQgKiwgc3RydWN0IG1idWYgKiwgaW50KSk7CgoKCgoK
CmV4dGVybiBpbnQgYWx0cV9kZXRhY2ggKHN0cnVjdCBpZmFsdHEgKik7CmV4dGVybiBpbnQgYWx0
cV9lbmFibGUgKHN0cnVjdCBpZmFsdHEgKik7CmV4dGVybiBpbnQgYWx0cV9kaXNhYmxlIChzdHJ1
Y3QgaWZhbHRxICopOwpleHRlcm4gc3RydWN0IG1idWYgKnRicl9kZXF1ZXVlIChzdHJ1Y3QgaWZh
bHRxICosIGludCk7CmV4dGVybiBpbnQgKCphbHRxX2lucHV0KSAoc3RydWN0IG1idWYgKiwgaW50
KTsKdm9pZCBhbHRxX2V0aGVyY2xhc3NpZnkgKHN0cnVjdCBpZmFsdHEgKiwgc3RydWN0IG1idWYg
Kiwgc3RydWN0IGFsdHFfcGt0YXR0ciAqKTsKIyA5MCAiLi4vLi4vLi4vLi4vbmV0L2lmLmgiIDIK
IyAxMTkgIi4uLy4uLy4uLy4uL25ldC9pZi5oIgojIDEgIm9wdF9jb21wYXRfbmV0YnNkLmgiIDEK
IyAxMjAgIi4uLy4uLy4uLy4uL25ldC9pZi5oIiAyCgoKc3RydWN0IG1idWY7CnN0cnVjdCBwcm9j
OwpzdHJ1Y3QgcnRlbnRyeTsKc3RydWN0IHNvY2tldDsKc3RydWN0IGV0aGVyX2hlYWRlcjsKc3Ry
dWN0IGlmbmV0OwpzdHJ1Y3QgcnRfYWRkcmluZm87CiMgMTQwICIuLi8uLi8uLi8uLi9uZXQvaWYu
aCIKc3RydWN0IGlmX2Nsb25lIHsKICAgICAgICBzdHJ1Y3QgeyBzdHJ1Y3QgaWZfY2xvbmUgKmxl
X25leHQ7IHN0cnVjdCBpZl9jbG9uZSAqKmxlX3ByZXY7IH0gaWZjX2xpc3Q7CiAgICAgICAgY29u
c3QgY2hhciAqaWZjX25hbWU7CiAgICAgICAgc2l6ZV90IGlmY19uYW1lbGVuOwoKICAgICAgICBp
bnQgKCppZmNfY3JlYXRlKShzdHJ1Y3QgaWZfY2xvbmUgKiwgaW50KTsKICAgICAgICB2b2lkICgq
aWZjX2Rlc3Ryb3kpKHN0cnVjdCBpZm5ldCAqKTsKfTsKCgoKCgoKCnN0cnVjdCBpZl9jbG9uZXJl
cSB7CiAgICAgICAgaW50IGlmY3JfdG90YWw7CiAgICAgICAgaW50IGlmY3JfY291bnQ7CiAgICAg
ICAgY2hhciAqaWZjcl9idWZmZXI7Cn07CgoKCgoKc3RydWN0IGlmX2RhdGEgewoKICAgICAgICB1
X2NoYXIgaWZpX3R5cGU7CiAgICAgICAgdV9jaGFyIGlmaV9hZGRybGVuOwogICAgICAgIHVfY2hh
ciBpZmlfaGRybGVuOwogICAgICAgIGludCBpZmlfbGlua19zdGF0ZTsKICAgICAgICB1X3F1YWRf
dCBpZmlfbXR1OwogICAgICAgIHVfcXVhZF90IGlmaV9tZXRyaWM7CiAgICAgICAgdV9xdWFkX3Qg
aWZpX2JhdWRyYXRlOwoKICAgICAgICB1X3F1YWRfdCBpZmlfaXBhY2tldHM7CiAgICAgICAgdV9x
dWFkX3QgaWZpX2llcnJvcnM7CiAgICAgICAgdV9xdWFkX3QgaWZpX29wYWNrZXRzOwogICAgICAg
IHVfcXVhZF90IGlmaV9vZXJyb3JzOwogICAgICAgIHVfcXVhZF90IGlmaV9jb2xsaXNpb25zOwog
ICAgICAgIHVfcXVhZF90IGlmaV9pYnl0ZXM7CiAgICAgICAgdV9xdWFkX3QgaWZpX29ieXRlczsK
ICAgICAgICB1X3F1YWRfdCBpZmlfaW1jYXN0czsKICAgICAgICB1X3F1YWRfdCBpZmlfb21jYXN0
czsKICAgICAgICB1X3F1YWRfdCBpZmlfaXFkcm9wczsKICAgICAgICB1X3F1YWRfdCBpZmlfbm9w
cm90bzsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBpZmlfbGFzdGNoYW5nZTsKfTsKIyAyMjUgIi4u
Ly4uLy4uLy4uL25ldC9pZi5oIgpzdHJ1Y3QgaWZxdWV1ZSB7CiAgICAgICAgc3RydWN0IG1idWYg
KmlmcV9oZWFkOwogICAgICAgIHN0cnVjdCBtYnVmICppZnFfdGFpbDsKICAgICAgICBpbnQgaWZx
X2xlbjsKICAgICAgICBpbnQgaWZxX21heGxlbjsKICAgICAgICBpbnQgaWZxX2Ryb3BzOwp9OwoK
CgoKCgpzdHJ1Y3QgaWZuZXRfaGVhZCB7IHN0cnVjdCBpZm5ldCAqdHFoX2ZpcnN0OyBzdHJ1Y3Qg
aWZuZXQgKip0cWhfbGFzdDsgfTsKCnN0cnVjdCBpZm5ldCB7CiAgICAgICAgdm9pZCAqaWZfc29m
dGM7CiAgICAgICAgc3RydWN0IHsgc3RydWN0IGlmbmV0ICp0cWVfbmV4dDsgc3RydWN0IGlmbmV0
ICoqdHFlX3ByZXY7IH0gaWZfbGlzdDsKICAgICAgICBzdHJ1Y3QgeyBzdHJ1Y3QgaWZhZGRyICp0
cWhfZmlyc3Q7IHN0cnVjdCBpZmFkZHIgKip0cWhfbGFzdDsgfSBpZl9hZGRybGlzdDsKICAgICAg
ICBjaGFyIGlmX3huYW1lWzE2XTsKICAgICAgICBpbnQgaWZfcGNvdW50OwogICAgICAgIF9fY2Fk
ZHJfdCBpZl9icGY7CiAgICAgICAgdV9zaG9ydCBpZl9pbmRleDsKICAgICAgICBzaG9ydCBpZl90
aW1lcjsKICAgICAgICBzaG9ydCBpZl9mbGFnczsKICAgICAgICBzaG9ydCBpZl9fcGFkMTsKICAg
ICAgICBzdHJ1Y3QgaWZfZGF0YSBpZl9kYXRhOwoKCgoKICAgICAgICBpbnQgKCppZl9vdXRwdXQp
CiAgICAgICAgICAgICAgICAoc3RydWN0IGlmbmV0ICosIHN0cnVjdCBtYnVmICosIHN0cnVjdCBz
b2NrYWRkciAqLCBzdHJ1Y3QgcnRlbnRyeSAqKTsKCiAgICAgICAgdm9pZCAoKmlmX2lucHV0KQog
ICAgICAgICAgICAgICAgKHN0cnVjdCBpZm5ldCAqLCBzdHJ1Y3QgbWJ1ZiAqKTsKICAgICAgICB2
b2lkICgqaWZfc3RhcnQpCiAgICAgICAgICAgICAgICAoc3RydWN0IGlmbmV0ICopOwogICAgICAg
IGludCAoKmlmX2lvY3RsKQogICAgICAgICAgICAgICAgKHN0cnVjdCBpZm5ldCAqLCB1X2xvbmcs
IF9fY2FkZHJfdCk7CiAgICAgICAgaW50ICgqaWZfaW5pdCkKICAgICAgICAgICAgICAgIChzdHJ1
Y3QgaWZuZXQgKik7CiAgICAgICAgdm9pZCAoKmlmX3N0b3ApCiAgICAgICAgICAgICAgICAoc3Ry
dWN0IGlmbmV0ICosIGludCk7CiAgICAgICAgdm9pZCAoKmlmX3dhdGNoZG9nKQogICAgICAgICAg
ICAgICAgKHN0cnVjdCBpZm5ldCAqKTsKICAgICAgICB2b2lkICgqaWZfZHJhaW4pCiAgICAgICAg
ICAgICAgICAoc3RydWN0IGlmbmV0ICopOwogICAgICAgIHN0cnVjdCBpZmFsdHEgaWZfc25kOwog
ICAgICAgIHN0cnVjdCBzb2NrYWRkcl9kbCAqaWZfc2FkbDsKICAgICAgICB1X2ludDhfdCAqaWZf
YnJvYWRjYXN0YWRkcjsKICAgICAgICBzdHJ1Y3QgaWZwcmVmaXggKmlmX3ByZWZpeGxpc3Q7CiAg
ICAgICAgdm9pZCAqaWZfYnJpZGdlOwogICAgICAgIGludCBpZl9kbHQ7CiAgICAgICAgc3RydWN0
IHBmaWxfaGVhZCBpZl9wZmlsOwogICAgICAgIF9fdWludDY0X3QgaWZfY2FwYWJpbGl0aWVzOwog
ICAgICAgIF9fdWludDY0X3QgaWZfY2FwZW5hYmxlOwoKCgoKCiAgICAgICAgaW50IGlmX2NzdW1f
ZmxhZ3NfdHg7CiAgICAgICAgaW50IGlmX2NzdW1fZmxhZ3Nfcng7Cn07CiMgNDA0ICIuLi8uLi8u
Li8uLi9uZXQvaWYuaCIKc3RydWN0IGlmYWRkcl9kYXRhIHsKICAgICAgICBfX2ludDY0X3QgaWZh
ZF9pbmJ5dGVzOwogICAgICAgIF9faW50NjRfdCBpZmFkX291dGJ5dGVzOwp9OwoKCgoKCgoKc3Ry
dWN0IGlmYWRkciB7CiAgICAgICAgc3RydWN0IHNvY2thZGRyICppZmFfYWRkcjsKICAgICAgICBz
dHJ1Y3Qgc29ja2FkZHIgKmlmYV9kc3RhZGRyOwoKICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgKmlm
YV9uZXRtYXNrOwogICAgICAgIHN0cnVjdCBpZm5ldCAqaWZhX2lmcDsKICAgICAgICBzdHJ1Y3Qg
eyBzdHJ1Y3QgaWZhZGRyICp0cWVfbmV4dDsgc3RydWN0IGlmYWRkciAqKnRxZV9wcmV2OyB9IGlm
YV9saXN0OwogICAgICAgIHN0cnVjdCBpZmFkZHJfZGF0YSBpZmFfZGF0YTsKICAgICAgICB2b2lk
ICgqaWZhX3J0cmVxdWVzdCkKICAgICAgICAgICAgICAgICAgICAoaW50LCBzdHJ1Y3QgcnRlbnRy
eSAqLCBzdHJ1Y3QgcnRfYWRkcmluZm8gKik7CiAgICAgICAgdV9pbnQgaWZhX2ZsYWdzOwogICAg
ICAgIGludCBpZmFfcmVmY250OwogICAgICAgIGludCBpZmFfbWV0cmljOwp9OwojIDQzNyAiLi4v
Li4vLi4vLi4vbmV0L2lmLmgiCnN0cnVjdCBpZnByZWZpeCB7CiAgICAgICAgc3RydWN0IHNvY2th
ZGRyICppZnByX3ByZWZpeDsKICAgICAgICBzdHJ1Y3QgaWZuZXQgKmlmcHJfaWZwOwogICAgICAg
IHN0cnVjdCBpZnByZWZpeCAqaWZwcl9uZXh0OwogICAgICAgIHVfY2hhciBpZnByX3BsZW47CiAg
ICAgICAgdV9jaGFyIGlmcHJfdHlwZTsKfTsKCgoKCgpzdHJ1Y3QgaWZfbXNnaGRyIHsKICAgICAg
ICB1X3Nob3J0IGlmbV9tc2dsZW47CiAgICAgICAgdV9jaGFyIGlmbV92ZXJzaW9uOwogICAgICAg
IHVfY2hhciBpZm1fdHlwZTsKICAgICAgICBpbnQgaWZtX2FkZHJzOwogICAgICAgIGludCBpZm1f
ZmxhZ3M7CiAgICAgICAgdV9zaG9ydCBpZm1faW5kZXg7CiAgICAgICAgc3RydWN0IGlmX2RhdGEg
aWZtX2RhdGE7Cn07CiMgNDc2ICIuLi8uLi8uLi8uLi9uZXQvaWYuaCIKc3RydWN0IGlmYV9tc2do
ZHIgewogICAgICAgIHVfc2hvcnQgaWZhbV9tc2dsZW47CiAgICAgICAgdV9jaGFyIGlmYW1fdmVy
c2lvbjsKICAgICAgICB1X2NoYXIgaWZhbV90eXBlOwogICAgICAgIGludCBpZmFtX2FkZHJzOwog
ICAgICAgIGludCBpZmFtX2ZsYWdzOwogICAgICAgIHVfc2hvcnQgaWZhbV9pbmRleDsKICAgICAg
ICBpbnQgaWZhbV9tZXRyaWM7Cn07CgoKCgpzdHJ1Y3QgaWZfYW5ub3VuY2Vtc2doZHIgewogICAg
ICAgIHVfc2hvcnQgaWZhbl9tc2dsZW47CiAgICAgICAgdV9jaGFyIGlmYW5fdmVyc2lvbjsKICAg
ICAgICB1X2NoYXIgaWZhbl90eXBlOwogICAgICAgIHVfc2hvcnQgaWZhbl9pbmRleDsKICAgICAg
ICBjaGFyIGlmYW5fbmFtZVsxNl07CiAgICAgICAgdV9zaG9ydCBpZmFuX3doYXQ7Cn07CiMgNTA3
ICIuLi8uLi8uLi8uLi9uZXQvaWYuaCIKc3RydWN0IGlmcmVxIHsKICAgICAgICBjaGFyIGlmcl9u
YW1lWzE2XTsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIg
aWZydV9hZGRyOwogICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyIGlmcnVfZHN0YWRkcjsK
ICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkciBpZnJ1X2Jyb2FkYWRkcjsKICAgICAgICAg
ICAgICAgIHNob3J0IGlmcnVfZmxhZ3M7CiAgICAgICAgICAgICAgICBpbnQgaWZydV9tZXRyaWM7
CiAgICAgICAgICAgICAgICBpbnQgaWZydV9tdHU7CiAgICAgICAgICAgICAgICBpbnQgaWZydV9k
bHQ7CiAgICAgICAgICAgICAgICB1X2ludCBpZnJ1X3ZhbHVlOwogICAgICAgICAgICAgICAgX19j
YWRkcl90IGlmcnVfZGF0YTsKICAgICAgICB9IGlmcl9pZnJ1OwojIDUzMCAiLi4vLi4vLi4vLi4v
bmV0L2lmLmgiCn07CgpzdHJ1Y3QgaWZjYXByZXEgewogICAgICAgIGNoYXIgaWZjcl9uYW1lWzE2
XTsKICAgICAgICBfX3VpbnQ2NF90IGlmY3JfY2FwYWJpbGl0aWVzOwogICAgICAgIF9fdWludDY0
X3QgaWZjcl9jYXBlbmFibGU7Cn07CgpzdHJ1Y3QgaWZhbGlhc3JlcSB7CiAgICAgICAgY2hhciBp
ZnJhX25hbWVbMTZdOwogICAgICAgIHN0cnVjdCBzb2NrYWRkciBpZnJhX2FkZHI7CiAgICAgICAg
c3RydWN0IHNvY2thZGRyIGlmcmFfZHN0YWRkcjsKCiAgICAgICAgc3RydWN0IHNvY2thZGRyIGlm
cmFfbWFzazsKfTsKCnN0cnVjdCBpZm1lZGlhcmVxIHsKICAgICAgICBjaGFyIGlmbV9uYW1lWzE2
XTsKICAgICAgICBpbnQgaWZtX2N1cnJlbnQ7CiAgICAgICAgaW50IGlmbV9tYXNrOwogICAgICAg
IGludCBpZm1fc3RhdHVzOwogICAgICAgIGludCBpZm1fYWN0aXZlOwogICAgICAgIGludCBpZm1f
Y291bnQ7CgogICAgICAgIGludCAqaWZtX3VsaXN0Owp9OwoKCnN0cnVjdCBpZmRydiB7CiAgICAg
ICAgY2hhciBpZmRfbmFtZVsxNl07CiAgICAgICAgdW5zaWduZWQgbG9uZyBpZmRfY21kOwogICAg
ICAgIHNpemVfdCBpZmRfbGVuOwogICAgICAgIHZvaWQgKmlmZF9kYXRhOwp9OwoKCgoKCgoKc3Ry
dWN0IGlmY29uZiB7CiAgICAgICAgaW50IGlmY19sZW47CiAgICAgICAgdW5pb24gewogICAgICAg
ICAgICAgICAgX19jYWRkcl90IGlmY3VfYnVmOwogICAgICAgICAgICAgICAgc3RydWN0IGlmcmVx
ICppZmN1X3JlcTsKICAgICAgICB9IGlmY19pZmN1OwoKCn07CgoKCgpzdHJ1Y3QgaWZfbGFkZHJy
ZXEgewogICAgICAgIGNoYXIgaWZscl9uYW1lWzE2XTsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxh
Z3M7CgogICAgICAgIHVuc2lnbmVkIGludCBwcmVmaXhsZW47CiAgICAgICAgc3RydWN0IHNvY2th
ZGRyX3N0b3JhZ2UgYWRkcjsKICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBkc3RhZGRy
Owp9OwoKIyAxICIuLi8uLi8uLi8uLi9uZXQvaWZfYXJwLmgiIDEKIyA1MCAiLi4vLi4vLi4vLi4v
bmV0L2lmX2FycC5oIgpzdHJ1Y3QgYXJwaGRyIHsKICAgICAgICB1X2ludDE2X3QgYXJfaHJkOwoK
CgoKCgogICAgICAgIHVfaW50MTZfdCBhcl9wcm87CiAgICAgICAgdV9pbnQ4X3QgYXJfaGxuOwog
ICAgICAgIHVfaW50OF90IGFyX3BsbjsKICAgICAgICB1X2ludDE2X3QgYXJfb3A7CiMgODIgIi4u
Ly4uLy4uLy4uL25ldC9pZl9hcnAuaCIKfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSk7CgoK
CgoKc3RydWN0IGFycHJlcSB7CiAgICAgICAgc3RydWN0IHNvY2thZGRyIGFycF9wYTsKICAgICAg
ICBzdHJ1Y3Qgc29ja2FkZHIgYXJwX2hhOwogICAgICAgIGludCBhcnBfZmxhZ3M7Cn07CiMgMTAz
ICIuLi8uLi8uLi8uLi9uZXQvaWZfYXJwLmgiCnN0cnVjdCBhcnBzdGF0IHsKICAgICAgICB1X3F1
YWRfdCBhc19zbmR0b3RhbDsKICAgICAgICB1X3F1YWRfdCBhc19zbmRyZXBseTsKICAgICAgICB1
X3F1YWRfdCBhc19zbmRyZXF1ZXN0OwoKICAgICAgICB1X3F1YWRfdCBhc19yY3Z0b3RhbDsKICAg
ICAgICB1X3F1YWRfdCBhc19yY3ZyZXF1ZXN0OwogICAgICAgIHVfcXVhZF90IGFzX3JjdnJlcGx5
OwogICAgICAgIHVfcXVhZF90IGFzX3Jjdm1jYXN0OwogICAgICAgIHVfcXVhZF90IGFzX3JjdmJh
ZHByb3RvOwogICAgICAgIHVfcXVhZF90IGFzX3JjdmJhZGxlbjsKICAgICAgICB1X3F1YWRfdCBh
c19yY3Z6ZXJvdHBhOwogICAgICAgIHVfcXVhZF90IGFzX3Jjdnplcm9zcGE7CiAgICAgICAgdV9x
dWFkX3QgYXNfcmN2bm9pbnQ7CiAgICAgICAgdV9xdWFkX3QgYXNfcmN2bG9jYWxzaGE7CiAgICAg
ICAgdV9xdWFkX3QgYXNfcmN2YmNhc3RzaGE7CiAgICAgICAgdV9xdWFkX3QgYXNfcmN2bG9jYWxz
cGE7CiAgICAgICAgdV9xdWFkX3QgYXNfcmN2b3ZlcnBlcm07CiAgICAgICAgdV9xdWFkX3QgYXNf
cmN2b3ZlcmludDsKICAgICAgICB1X3F1YWRfdCBhc19yY3ZvdmVyOwogICAgICAgIHVfcXVhZF90
IGFzX3JjdmxlbmNoZzsKCiAgICAgICAgdV9xdWFkX3QgYXNfZGZydG90YWw7CiAgICAgICAgdV9x
dWFkX3QgYXNfZGZyc2VudDsKICAgICAgICB1X3F1YWRfdCBhc19kZnJkcm9wcGVkOwoKICAgICAg
ICB1X3F1YWRfdCBhc19hbGxvY2ZhaWw7Cn07CiMgNTk0ICIuLi8uLi8uLi8uLi9uZXQvaWYuaCIg
MgojIDczMyAiLi4vLi4vLi4vLi4vbmV0L2lmLmgiCmV4dGVybiBzdHJ1Y3QgaWZuZXRfaGVhZCBp
Zm5ldDsKZXh0ZXJuIHN0cnVjdCBpZm5ldCAqKmlmaW5kZXgyaWZuZXQ7CgoKCmV4dGVybiBpbnQg
aWZfaW5kZXg7CgpjaGFyICpldGhlcl9zcHJpbnRmIChjb25zdCB1X2NoYXIgKik7Cgp2b2lkIGlm
X2FsbG9jX3NhZGwgKHN0cnVjdCBpZm5ldCAqKTsKdm9pZCBpZl9mcmVlX3NhZGwgKHN0cnVjdCBp
Zm5ldCAqKTsKdm9pZCBpZl9hdHRhY2ggKHN0cnVjdCBpZm5ldCAqKTsKdm9pZCBpZl9kZWFjdGl2
YXRlIChzdHJ1Y3QgaWZuZXQgKik7CnZvaWQgaWZfZGV0YWNoIChzdHJ1Y3QgaWZuZXQgKik7CnZv
aWQgaWZfZG93biAoc3RydWN0IGlmbmV0ICopOwp2b2lkIGlmX3Nsb3d0aW1vICh2b2lkICopOwp2
b2lkIGlmX3VwIChzdHJ1Y3QgaWZuZXQgKik7CmludCBpZmNvbmYgKHVfbG9uZywgX19jYWRkcl90
KTsKdm9pZCBpZmluaXQgKHZvaWQpOwppbnQgaWZpb2N0bCAoc3RydWN0IHNvY2tldCAqLCB1X2xv
bmcsIF9fY2FkZHJfdCwgc3RydWN0IHByb2MgKik7CmludCBpZnByb21pc2MgKHN0cnVjdCBpZm5l
dCAqLCBpbnQpOwpzdHJ1Y3QgaWZuZXQgKmlmdW5pdCAoY29uc3QgY2hhciAqKTsKCnN0cnVjdCBp
ZmFkZHIgKmlmYV9pZndpdGhhZGRyIChzdHJ1Y3Qgc29ja2FkZHIgKik7CnN0cnVjdCBpZmFkZHIg
KmlmYV9pZndpdGhhZiAoaW50KTsKc3RydWN0IGlmYWRkciAqaWZhX2lmd2l0aGRzdGFkZHIgKHN0
cnVjdCBzb2NrYWRkciAqKTsKc3RydWN0IGlmYWRkciAqaWZhX2lmd2l0aG5ldCAoc3RydWN0IHNv
Y2thZGRyICopOwpzdHJ1Y3QgaWZhZGRyICppZmFfaWZ3aXRobGFkZHIgKHN0cnVjdCBzb2NrYWRk
ciAqKTsKc3RydWN0IGlmYWRkciAqaWZhX2lmd2l0aHJvdXRlIChpbnQsIHN0cnVjdCBzb2NrYWRk
ciAqLCBzdHJ1Y3Qgc29ja2FkZHIgKik7CgpzdHJ1Y3QgaWZhZGRyICppZmFvZl9pZnBmb3JhZGRy
IChzdHJ1Y3Qgc29ja2FkZHIgKiwgc3RydWN0IGlmbmV0ICopOwp2b2lkIGlmYWZyZWUgKHN0cnVj
dCBpZmFkZHIgKik7CnZvaWQgbGlua19ydHJlcXVlc3QgKGludCwgc3RydWN0IHJ0ZW50cnkgKiwg
c3RydWN0IHJ0X2FkZHJpbmZvICopOwoKdm9pZCBpZl9jbG9uZV9hdHRhY2ggKHN0cnVjdCBpZl9j
bG9uZSAqKTsKdm9pZCBpZl9jbG9uZV9kZXRhY2ggKHN0cnVjdCBpZl9jbG9uZSAqKTsKCmludCBp
Zl9jbG9uZV9jcmVhdGUgKGNvbnN0IGNoYXIgKik7CmludCBpZl9jbG9uZV9kZXN0cm95IChjb25z
dCBjaGFyICopOwoKaW50IGxvaW9jdGwgKHN0cnVjdCBpZm5ldCAqLCB1X2xvbmcsIF9fY2FkZHJf
dCk7CnZvaWQgbG9vcGF0dGFjaCAoaW50KTsKaW50IGxvb3V0cHV0IChzdHJ1Y3QgaWZuZXQgKiwg
c3RydWN0IG1idWYgKiwgc3RydWN0IHNvY2thZGRyICosIHN0cnVjdCBydGVudHJ5ICopOwoKdm9p
ZCBsb3J0cmVxdWVzdCAoaW50LCBzdHJ1Y3QgcnRlbnRyeSAqLCBzdHJ1Y3QgcnRfYWRkcmluZm8g
Kik7CgoKCgoKaW50IGlmX251bGxvdXRwdXQgKHN0cnVjdCBpZm5ldCAqLCBzdHJ1Y3QgbWJ1ZiAq
LCBzdHJ1Y3Qgc29ja2FkZHIgKiwgc3RydWN0IHJ0ZW50cnkgKik7Cgp2b2lkIGlmX251bGxpbnB1
dCAoc3RydWN0IGlmbmV0ICosIHN0cnVjdCBtYnVmICopOwp2b2lkIGlmX251bGxzdGFydCAoc3Ry
dWN0IGlmbmV0ICopOwppbnQgaWZfbnVsbGlvY3RsIChzdHJ1Y3QgaWZuZXQgKiwgdV9sb25nLCBf
X2NhZGRyX3QpOwppbnQgaWZfbnVsbGluaXQgKHN0cnVjdCBpZm5ldCAqKTsKdm9pZCBpZl9udWxs
c3RvcCAoc3RydWN0IGlmbmV0ICosIGludCk7CnZvaWQgaWZfbnVsbHdhdGNoZG9nIChzdHJ1Y3Qg
aWZuZXQgKik7CnZvaWQgaWZfbnVsbGRyYWluIChzdHJ1Y3QgaWZuZXQgKik7CiMgOTggImFtNzk5
MC5jIiAyCiMgMSAiLi4vLi4vLi4vLi4vbmV0L2lmX2RsLmgiIDEKIyA2OSAiLi4vLi4vLi4vLi4v
bmV0L2lmX2RsLmgiCnN0cnVjdCBzb2NrYWRkcl9kbCB7CiAgICAgICAgdV9jaGFyIHNkbF9sZW47
CiAgICAgICAgX19zYV9mYW1pbHlfdCBzZGxfZmFtaWx5OwogICAgICAgIHVfaW50MTZfdCBzZGxf
aW5kZXg7CiAgICAgICAgdV9jaGFyIHNkbF90eXBlOwogICAgICAgIHVfY2hhciBzZGxfbmxlbjsK
ICAgICAgICB1X2NoYXIgc2RsX2FsZW47CiAgICAgICAgdV9jaGFyIHNkbF9zbGVuOwogICAgICAg
IGNoYXIgc2RsX2RhdGFbMTJdOwoKfTsKIyA5OSAiYW03OTkwLmMiIDIKIyAxICIuLi8uLi8uLi8u
Li9uZXQvaWZfZXRoZXIuaCIgMQojIDYxICIuLi8uLi8uLi8uLi9uZXQvaWZfZXRoZXIuaCIKc3Ry
dWN0IGV0aGVyX2FkZHIgewogICAgICAgIHVfaW50OF90IGV0aGVyX2FkZHJfb2N0ZXRbNl07Cn0g
X19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpOwoKCgoKc3RydWN0IGV0aGVyX2hlYWRlciB7CiAg
ICAgICAgdV9pbnQ4X3QgZXRoZXJfZGhvc3RbNl07CiAgICAgICAgdV9pbnQ4X3QgZXRoZXJfc2hv
c3RbNl07CiAgICAgICAgdV9pbnQxNl90IGV0aGVyX3R5cGU7Cn0gX19hdHRyaWJ1dGVfXygoX19w
YWNrZWRfXykpOwoKIyAxICIuLi8uLi8uLi8uLi9uZXQvZXRoZXJ0eXBlcy5oIiAxCiMgNzUgIi4u
Ly4uLy4uLy4uL25ldC9pZl9ldGhlci5oIiAyCiMgMTQ0ICIuLi8uLi8uLi8uLi9uZXQvaWZfZXRo
ZXIuaCIKc3RydWN0IGV0aGVyY29tIHsKICAgICAgICBzdHJ1Y3QgaWZuZXQgZWNfaWY7CiAgICAg
ICAgc3RydWN0IHsgc3RydWN0IGV0aGVyX211bHRpICpsaF9maXJzdDsgfSBlY19tdWx0aWFkZHJz
OwoKICAgICAgICBpbnQgZWNfbXVsdGljbnQ7CgogICAgICAgIGludCBlY19jYXBhYmlsaXRpZXM7
CgogICAgICAgIGludCBlY19jYXBlbmFibGU7CgoKICAgICAgICBpbnQgZWNfbnZsYW5zOwp9OwoK
CgoKCgpleHRlcm4gdV9pbnQ4X3QgZXRoZXJicm9hZGNhc3RhZGRyWzZdOwpleHRlcm4gdV9pbnQ4
X3QgZXRoZXJfaXBtdWx0aWNhc3RfbWluWzZdOwpleHRlcm4gdV9pbnQ4X3QgZXRoZXJfaXBtdWx0
aWNhc3RfbWF4WzZdOwoKaW50IGV0aGVyX2lvY3RsKHN0cnVjdCBpZm5ldCAqLCB1X2xvbmcsIF9f
Y2FkZHJfdCk7CmludCBldGhlcl9hZGRtdWx0aSAoc3RydWN0IGlmcmVxICosIHN0cnVjdCBldGhl
cmNvbSAqKTsKaW50IGV0aGVyX2RlbG11bHRpIChzdHJ1Y3QgaWZyZXEgKiwgc3RydWN0IGV0aGVy
Y29tICopOwppbnQgZXRoZXJfY2hhbmdlYWRkciAoc3RydWN0IGlmcmVxICosIHN0cnVjdCBldGhl
cmNvbSAqKTsKaW50IGV0aGVyX211bHRpYWRkcihzdHJ1Y3Qgc29ja2FkZHIgKiwgdV9pbnQ4X3Rb
XSwgdV9pbnQ4X3RbXSk7CiMgMTgwICIuLi8uLi8uLi8uLi9uZXQvaWZfZXRoZXIuaCIKc3RydWN0
IGV0aGVyX211bHRpIHsKICAgICAgICB1X2ludDhfdCBlbm1fYWRkcmxvWzZdOwogICAgICAgIHVf
aW50OF90IGVubV9hZGRyaGlbNl07CiAgICAgICAgc3RydWN0IGV0aGVyY29tICplbm1fZWM7CiAg
ICAgICAgdV9pbnQgZW5tX3JlZmNvdW50OwogICAgICAgIHN0cnVjdCB7IHN0cnVjdCBldGhlcl9t
dWx0aSAqbGVfbmV4dDsgc3RydWN0IGV0aGVyX211bHRpICoqbGVfcHJldjsgfSBlbm1fbGlzdDsK
fTsKCgoKCgpzdHJ1Y3QgZXRoZXJfbXVsdGlzdGVwIHsKICAgICAgICBzdHJ1Y3QgZXRoZXJfbXVs
dGkgKmVfZW5tOwp9OwojIDIzOSAiLi4vLi4vLi4vLi4vbmV0L2lmX2V0aGVyLmgiCnZvaWQgZXRo
ZXJfaWZhdHRhY2goc3RydWN0IGlmbmV0ICosIGNvbnN0IHVfaW50OF90ICopOwp2b2lkIGV0aGVy
X2lmZGV0YWNoKHN0cnVjdCBpZm5ldCAqKTsKCmNoYXIgKmV0aGVyX3NwcmludGYoY29uc3QgdV9p
bnQ4X3QgKik7Cgp1X2ludDMyX3QgZXRoZXJfY3JjMzJfbGUoY29uc3QgdV9pbnQ4X3QgKiwgc2l6
ZV90KTsKdV9pbnQzMl90IGV0aGVyX2NyYzMyX2JlKGNvbnN0IHVfaW50OF90ICosIHNpemVfdCk7
CiMgMTAwICJhbTc5OTAuYyIgMgojIDEgIi4uLy4uLy4uLy4uL25ldC9pZl9tZWRpYS5oIiAxCiMg
OTYgIi4uLy4uLy4uLy4uL25ldC9pZl9tZWRpYS5oIgp0eXBlZGVmIGludCAoKmlmbV9jaGFuZ2Vf
Y2JfdCkgKHN0cnVjdCBpZm5ldCAqaWZwKTsKdHlwZWRlZiB2b2lkICgqaWZtX3N0YXRfY2JfdCkg
KHN0cnVjdCBpZm5ldCAqaWZwLCBzdHJ1Y3QgaWZtZWRpYXJlcSAqcmVxKTsKCgoKCnN0cnVjdCBp
Zm1lZGlhX2VudHJ5IHsKICAgICAgICBzdHJ1Y3QgeyBzdHJ1Y3QgaWZtZWRpYV9lbnRyeSAqdHFl
X25leHQ7IHN0cnVjdCBpZm1lZGlhX2VudHJ5ICoqdHFlX3ByZXY7IH0gaWZtX2xpc3Q7CiAgICAg
ICAgaW50IGlmbV9tZWRpYTsKICAgICAgICBpbnQgaWZtX2RhdGE7CiAgICAgICAgdm9pZCAqaWZt
X2F1eDsKfTsKCgoKCgpzdHJ1Y3QgaWZtZWRpYSB7CiAgICAgICAgaW50IGlmbV9tYXNrOwogICAg
ICAgIGludCBpZm1fbWVkaWE7CiAgICAgICAgc3RydWN0IGlmbWVkaWFfZW50cnkgKmlmbV9jdXI7
CiAgICAgICAgc3RydWN0IHsgc3RydWN0IGlmbWVkaWFfZW50cnkgKnRxaF9maXJzdDsgc3RydWN0
IGlmbWVkaWFfZW50cnkgKip0cWhfbGFzdDsgfSBpZm1fbGlzdDsKICAgICAgICBpZm1fY2hhbmdl
X2NiX3QgaWZtX2NoYW5nZTsKICAgICAgICBpZm1fc3RhdF9jYl90IGlmbV9zdGF0dXM7Cn07CgoK
dm9pZCBpZm1lZGlhX2luaXQgKHN0cnVjdCBpZm1lZGlhICppZm0sIGludCBkb250Y2FyZV9tYXNr
LCBpZm1fY2hhbmdlX2NiX3QgY2hhbmdlX2NhbGxiYWNrLCBpZm1fc3RhdF9jYl90IHN0YXR1c19j
YWxsYmFjayk7CgoKCnZvaWQgaWZtZWRpYV9hZGQgKHN0cnVjdCBpZm1lZGlhICppZm0sIGludCBt
d29yZCwgaW50IGRhdGEsIHZvaWQgKmF1eCk7CgoKdm9pZCBpZm1lZGlhX2xpc3RfYWRkKHN0cnVj
dCBpZm1lZGlhICptcCwgc3RydWN0IGlmbWVkaWFfZW50cnkgKmxwLAogICAgICAgICAgICBpbnQg
Y291bnQpOwoKCnZvaWQgaWZtZWRpYV9zZXQgKHN0cnVjdCBpZm1lZGlhICppZm0sIGludCBtd29y
ZCk7CgoKaW50IGlmbWVkaWFfaW9jdGwgKHN0cnVjdCBpZm5ldCAqaWZwLCBzdHJ1Y3QgaWZyZXEg
Kmlmciwgc3RydWN0IGlmbWVkaWEgKmlmbSwgdV9sb25nIGNtZCk7CgoKCnN0cnVjdCBpZm1lZGlh
X2VudHJ5ICppZm1lZGlhX21hdGNoIChzdHJ1Y3QgaWZtZWRpYSAqaWZtLCBpbnQgZmxhZ3MsIGlu
dCBtYXNrKTsKCgoKdm9pZCBpZm1lZGlhX2RlbGV0ZV9pbnN0YW5jZSAoc3RydWN0IGlmbWVkaWEg
KiwgaW50KTsKCgppbnQgaWZtZWRpYV9iYXVkcmF0ZSAoaW50KTsKIyAyOTUgIi4uLy4uLy4uLy4u
L25ldC9pZl9tZWRpYS5oIgpzdHJ1Y3QgaWZtZWRpYV9kZXNjcmlwdGlvbiB7CiAgICAgICAgaW50
IGlmbXRfd29yZDsKICAgICAgICBjb25zdCBjaGFyICppZm10X3N0cmluZzsKfTsKIyA0MjUgIi4u
Ly4uLy4uLy4uL25ldC9pZl9tZWRpYS5oIgpzdHJ1Y3QgaWZtZWRpYV9iYXVkcmF0ZSB7CiAgICAg
ICAgaW50IGlmbWJfd29yZDsKICAgICAgICBpbnQgaWZtYl9iYXVkcmF0ZTsKfTsKIyA0NjkgIi4u
Ly4uLy4uLy4uL25ldC9pZl9tZWRpYS5oIgpzdHJ1Y3QgaWZtZWRpYV9zdGF0dXNfZGVzY3JpcHRp
b24gewogICAgICAgIGludCBpZm1zX3R5cGU7CiAgICAgICAgaW50IGlmbXNfdmFsaWQ7CiAgICAg
ICAgaW50IGlmbXNfYml0OwogICAgICAgIGNvbnN0IGNoYXIgKmlmbXNfc3RyaW5nWzJdOwp9Owoj
IDEwMSAiYW03OTkwLmMiIDIKCgoKCgoKIyAxICIuLi8uLi8uLi8uLi9kZXYvaWMvbGFuY2VyZWcu
aCIgMQojIDEwOCAiYW03OTkwLmMiIDIKIyAxICIuLi8uLi8uLi8uLi9kZXYvaWMvbGFuY2V2YXIu
aCIgMQojIDQwICIuLi8uLi8uLi8uLi9kZXYvaWMvbGFuY2V2YXIuaCIKIyAxICJybmQuaCIgMQoj
IDQxICIuLi8uLi8uLi8uLi9kZXYvaWMvbGFuY2V2YXIuaCIgMgoKCgoKCnN0cnVjdCBsYW5jZV9z
b2Z0YyB7CiAgICAgICAgc3RydWN0IGRldmljZSBzY19kZXY7CiAgICAgICAgc3RydWN0IGV0aGVy
Y29tIHNjX2V0aGVyY29tOwogICAgICAgIHN0cnVjdCBpZm1lZGlhIHNjX21lZGlhOwojIDU4ICIu
Li8uLi8uLi8uLi9kZXYvaWMvbGFuY2V2YXIuaCIKICAgICAgICB2b2lkICgqc2NfY29weXRvZGVz
YykKICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGxhbmNlX3NvZnRjICosIHZvaWQgKiwgaW50
LCBpbnQpOwogICAgICAgIHZvaWQgKCpzY19jb3B5ZnJvbWRlc2MpCiAgICAgICAgICAgICAgICAg
ICAgKHN0cnVjdCBsYW5jZV9zb2Z0YyAqLCB2b2lkICosIGludCwgaW50KTsKICAgICAgICB2b2lk
ICgqc2NfY29weXRvYnVmKQogICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgbGFuY2Vfc29mdGMg
Kiwgdm9pZCAqLCBpbnQsIGludCk7CiAgICAgICAgdm9pZCAoKnNjX2NvcHlmcm9tYnVmKQogICAg
ICAgICAgICAgICAgICAgIChzdHJ1Y3QgbGFuY2Vfc29mdGMgKiwgdm9pZCAqLCBpbnQsIGludCk7
CiAgICAgICAgdm9pZCAoKnNjX3plcm9idWYpCiAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBs
YW5jZV9zb2Z0YyAqLCBpbnQsIGludCk7CiMgNzggIi4uLy4uLy4uLy4uL2Rldi9pYy9sYW5jZXZh
ci5oIgogICAgICAgIHVfaW50MTZfdCAoKnNjX3JkY3NyKQogICAgICAgICAgICAgICAgICAgIChz
dHJ1Y3QgbGFuY2Vfc29mdGMgKiwgdV9pbnQxNl90KTsKICAgICAgICB2b2lkICgqc2Nfd3Jjc3Ip
CiAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBsYW5jZV9zb2Z0YyAqLCB1X2ludDE2X3QsIHVf
aW50MTZfdCk7CiAgICAgICAgdm9pZCAoKnNjX2h3cmVzZXQpIChzdHJ1Y3QgbGFuY2Vfc29mdGMg
Kik7CiAgICAgICAgdm9pZCAoKnNjX2h3aW5pdCkgKHN0cnVjdCBsYW5jZV9zb2Z0YyAqKTsKICAg
ICAgICB2b2lkICgqc2Nfbm9jYXJyaWVyKSAoc3RydWN0IGxhbmNlX3NvZnRjICopOwogICAgICAg
IGludCAoKnNjX21lZGlhY2hhbmdlKSAoc3RydWN0IGxhbmNlX3NvZnRjICopOwogICAgICAgIHZv
aWQgKCpzY19tZWRpYXN0YXR1cykgKHN0cnVjdCBsYW5jZV9zb2Z0YyAqLCBzdHJ1Y3QgaWZtZWRp
YXJlcSAqKTsKCgoKCgoKICAgICAgICBpbnQgKnNjX3N1cG1lZGlhOwogICAgICAgIGludCBzY19u
c3VwbWVkaWE7CiAgICAgICAgaW50IHNjX2RlZmF1bHRtZWRpYTsKCgogICAgICAgIGludCBzY19p
bml0bW9kZW1lZGlhOwoKICAgICAgICBpbnQgc2NfaGF2ZWNhcnJpZXI7CgogICAgICAgIHZvaWQg
KnNjX3NoOwoKICAgICAgICB1X2ludDE2X3Qgc2NfY29uZjM7CiAgICAgICAgdV9pbnQxNl90IHNj
X3NhdmVkX2NzcjA7CgogICAgICAgIHZvaWQgKnNjX21lbTsKICAgICAgICB1X2xvbmcgc2NfYWRk
cjsKCiAgICAgICAgdV9sb25nIHNjX21lbXNpemU7CgogICAgICAgIGludCBzY19ucmJ1ZjsKICAg
ICAgICBpbnQgc2NfbnRidWY7CiAgICAgICAgaW50IHNjX2xhc3RfcmQ7CiAgICAgICAgaW50IHNj
X2ZpcnN0X3RkLCBzY19sYXN0X3RkLCBzY19ub190ZDsKCiAgICAgICAgaW50IHNjX2luaXRhZGRy
OwogICAgICAgIGludCBzY19ybWRhZGRyOwogICAgICAgIGludCBzY190bWRhZGRyOwogICAgICAg
IGludCAqc2NfcmJ1ZmFkZHI7CiAgICAgICAgaW50ICpzY190YnVmYWRkcjsKCgoKCiAgICAgICAg
dV9pbnQ4X3Qgc2NfZW5hZGRyWzZdOwogICAgICAgIHVfaW50OF90IHNjX3BhZFsyXTsKCgoKCiAg
ICAgICAgdm9pZCAoKnNjX21lbWluaXQpIChzdHJ1Y3QgbGFuY2Vfc29mdGMgKik7CiAgICAgICAg
dm9pZCAoKnNjX3N0YXJ0KSAoc3RydWN0IGlmbmV0ICopOwp9OwoKdm9pZCBsYW5jZV9jb25maWcg
KHN0cnVjdCBsYW5jZV9zb2Z0YyAqKTsKdm9pZCBsYW5jZV9yZXNldCAoc3RydWN0IGxhbmNlX3Nv
ZnRjICopOwppbnQgbGFuY2VfaW5pdCAoc3RydWN0IGlmbmV0ICopOwppbnQgbGFuY2VfcHV0IChz
dHJ1Y3QgbGFuY2Vfc29mdGMgKiwgaW50LCBzdHJ1Y3QgbWJ1ZiAqKTsKdm9pZCBsYW5jZV9yZWFk
IChzdHJ1Y3QgbGFuY2Vfc29mdGMgKiwgaW50LCBpbnQpOwp2b2lkIGxhbmNlX3NldGxhZHJmIChz
dHJ1Y3QgZXRoZXJjb20gKiwgdV9pbnQxNl90ICopOwoKCgoKCgoKdm9pZCBsYW5jZV9jb3B5dG9i
dWZfY29udGlnIChzdHJ1Y3QgbGFuY2Vfc29mdGMgKiwgdm9pZCAqLCBpbnQsIGludCk7CnZvaWQg
bGFuY2VfY29weWZyb21idWZfY29udGlnIChzdHJ1Y3QgbGFuY2Vfc29mdGMgKiwgdm9pZCAqLCBp
bnQsIGludCk7CnZvaWQgbGFuY2VfemVyb2J1Zl9jb250aWcgKHN0cnVjdCBsYW5jZV9zb2Z0YyAq
LCBpbnQsIGludCk7CiMgMTA5ICJhbTc5OTAuYyIgMgojIDEgIi4uLy4uLy4uLy4uL2Rldi9pYy9h
bTc5OTByZWcuaCIgMQojIDgwICIuLi8uLi8uLi8uLi9kZXYvaWMvYW03OTkwcmVnLmgiCnN0cnVj
dCBsZXJtZCB7CiAgICAgICAgdV9pbnQxNl90IHJtZDA7CgoKCgogICAgICAgIHVfaW50OF90IHJt
ZDFfaGFkcjsKICAgICAgICB1X2ludDhfdCBybWQxX2JpdHM7CgogICAgICAgIF9faW50MTZfdCBy
bWQyOwogICAgICAgIHVfaW50MTZfdCBybWQzOwp9OwoKCgoKc3RydWN0IGxldG1kIHsKICAgICAg
ICB1X2ludDE2X3QgdG1kMDsKCgoKCiAgICAgICAgdV9pbnQ4X3QgdG1kMV9oYWRyOwogICAgICAg
IHVfaW50OF90IHRtZDFfYml0czsKCiAgICAgICAgX19pbnQxNl90IHRtZDI7CiAgICAgICAgdV9p
bnQxNl90IHRtZDM7Cn07CgoKCgpzdHJ1Y3QgbGVpbml0IHsKICAgICAgICB1X2ludDE2X3QgaW5p
dF9tb2RlOwogICAgICAgIHVfaW50MTZfdCBpbml0X3BhZHJbM107CiAgICAgICAgdV9pbnQxNl90
IGluaXRfbGFkcmZbNF07CiAgICAgICAgdV9pbnQxNl90IGluaXRfcmRyYTsKICAgICAgICB1X2lu
dDE2X3QgaW5pdF9ybGVuOwogICAgICAgIHVfaW50MTZfdCBpbml0X3RkcmE7CiAgICAgICAgdV9p
bnQxNl90IGluaXRfdGxlbjsKICAgICAgICBfX2ludDE2X3QgcGFkMFs0XTsKfTsKIyAxMTAgImFt
Nzk5MC5jIiAyCiMgMSAiLi4vLi4vLi4vLi4vZGV2L2ljL2FtNzk5MHZhci5oIiAxCiMgNDkgIi4u
Ly4uLy4uLy4uL2Rldi9pYy9hbTc5OTB2YXIuaCIKc3RydWN0IGFtNzk5MF9zb2Z0YyB7CiAgICAg
ICAgc3RydWN0IGxhbmNlX3NvZnRjIGxzYzsKfTsKCnZvaWQgYW03OTkwX2NvbmZpZyAoc3RydWN0
IGFtNzk5MF9zb2Z0YyAqKTsKaW50IGFtNzk5MF9pbnRyICh2b2lkICopOwojIDExMSAiYW03OTkw
LmMiIDIKCnZvaWQgYW03OTkwX21lbWluaXQgKHN0cnVjdCBsYW5jZV9zb2Z0YyAqKTsKdm9pZCBh
bTc5OTBfc3RhcnQgKHN0cnVjdCBpZm5ldCAqKTsKCgojIDEgIm9wdF9kZGIuaCIgMQojIDExNyAi
YW03OTkwLmMiIDIKIyAxMjggImFtNzk5MC5jIgogdm9pZCBhbTc5OTBfcmludCAoc3RydWN0IGxh
bmNlX3NvZnRjICopOwogdm9pZCBhbTc5OTBfdGludCAoc3RydWN0IGxhbmNlX3NvZnRjICopOwoj
IDQwNSAiYW03OTkwLmMiCmludAphbTc5OTBfaW50cihhcmcpCiAgICAgICAgdm9pZCAqYXJnOwp7
CiAgICAgICAgc3RydWN0IGxhbmNlX3NvZnRjICpzYyA9IGFyZzsKICAgICAgICB1X2ludDE2X3Qg
aXNyOwoKICAgICAgICBpc3IgPSAoKnNjLT5zY19yZGNzcikoc2MsIDB4MDAwMCkgfCBzYy0+c2Nf
c2F2ZWRfY3NyMDsKICAgICAgICBzYy0+c2Nfc2F2ZWRfY3NyMCA9IDA7CgoKCgoKICAgICAgICBp
ZiAoKGlzciAmIDB4MDA4MCkgPT0gMCkKICAgICAgICAgICAgICAgIHJldHVybiAoMCk7CiMgNDMx
ICJhbTc5OTAuYyIKICAgICAgICAoKnNjLT5zY193cmNzcikoc2MsIDB4MDAwMCwKICAgICAgICAg
ICAgaXNyICYgKDB4MDA0MCB8IDB4NDAwMCB8IDB4MTAwMCB8IDB4MDgwMCB8CiAgICAgICAgICAg
ICAgICAgICAweDA0MDAgfCAweDAyMDAgfCAweDAxMDApKTsKCiAgICAgICAgaWYgKGlzciAmIDB4
ODAwMCkgewogICAgICAgICAgICAgICAgaWYgKGlzciAmIDB4NDAwMCkgewoKCgogICAgICAgICAg
ICAgICAgICAgICAgICAoJnNjLT5zY19ldGhlcmNvbS5lY19pZiktPmlmX2RhdGEuaWZpX29lcnJv
cnMrKzsKICAgICAgICAgICAgICAgIH0KCgoKCgoKICAgICAgICAgICAgICAgIGlmIChpc3IgJiAw
eDEwMDApIHsKCgoKICAgICAgICAgICAgICAgICAgICAgICAgKCZzYy0+c2NfZXRoZXJjb20uZWNf
aWYpLT5pZl9kYXRhLmlmaV9pZXJyb3JzKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICBpZiAoaXNyICYgMHgwODAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50Zigi
JXM6IG1lbW9yeSBlcnJvclxuIiwgc2MtPnNjX2Rldi5kdl94bmFtZSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGxhbmNlX3Jlc2V0KHNjKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICgxKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgoaXNyICYgMHgw
MDIwKSA9PSAwKSB7CiAgICAgICAgICAgICAgICBwcmludGYoIiVzOiByZWNlaXZlciBkaXNhYmxl
ZFxuIiwgc2MtPnNjX2Rldi5kdl94bmFtZSk7CiAgICAgICAgICAgICAgICAoJnNjLT5zY19ldGhl
cmNvbS5lY19pZiktPmlmX2RhdGEuaWZpX2llcnJvcnMrKzsKICAgICAgICAgICAgICAgIGxhbmNl
X3Jlc2V0KHNjKTsKICAgICAgICAgICAgICAgIHJldHVybiAoMSk7CiAgICAgICAgfQogICAgICAg
IGlmICgoaXNyICYgMHgwMDEwKSA9PSAwKSB7CiAgICAgICAgICAgICAgICBwcmludGYoIiVzOiB0
cmFuc21pdHRlciBkaXNhYmxlZFxuIiwgc2MtPnNjX2Rldi5kdl94bmFtZSk7CiAgICAgICAgICAg
ICAgICAoJnNjLT5zY19ldGhlcmNvbS5lY19pZiktPmlmX2RhdGEuaWZpX29lcnJvcnMrKzsKICAg
ICAgICAgICAgICAgIGxhbmNlX3Jlc2V0KHNjKTsKICAgICAgICAgICAgICAgIHJldHVybiAoMSk7
CiAgICAgICAgfQoKCgoKCiAgICAgICAgc2MtPnNjX2hhdmVjYXJyaWVyID0gMTsKCiAgICAgICAg
aWYgKGlzciAmIDB4MDQwMCkKICAgICAgICAgICAgICAgIGFtNzk5MF9yaW50KHNjKTsKICAgICAg
ICBpZiAoaXNyICYgMHgwMjAwKQogICAgICAgICAgICAgICAgYW03OTkwX3RpbnQoc2MpOwoKCgoK
CiAgICAgICAgcmV0dXJuICgxKTsKfQo=


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