public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c/4853: ICE when compiling linux 2.4.13-ac8 (preempt patch) sched.c
@ 2001-11-06 18:01 rodrigc
  0 siblings, 0 replies; 3+ messages in thread
From: rodrigc @ 2001-11-06 18:01 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR c/4853; it has been noted by GNATS.

From: rodrigc@gcc.gnu.org
To: gcc-bugs@gcc.gnu.org, gcc-gnats@gcc.gnu.org, gcc-prs@gcc.gnu.org,
  nobody@gcc.gnu.org, simon.brenner@home.se
Cc:  
Subject: Re: c/4853: ICE when compiling linux 2.4.13-ac8 (preempt patch) sched.c
Date: 17 Nov 2001 06:31:28 -0000

 Synopsis: ICE when compiling linux 2.4.13-ac8 (preempt patch) sched.c
 
 State-Changed-From-To: open->closed
 State-Changed-By: rodrigc
 State-Changed-When: Fri Nov 16 22:31:27 2001
 State-Changed-Why:
     Duplicate of PR4815.
     Can you see if the patch I attached to PR4815 solves
     your problem?
     http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&pr=4815&database=gcc
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&pr=4853&database=gcc


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: c/4853: ICE when compiling linux 2.4.13-ac8 (preempt patch) sched.c
@ 2001-11-06 17:02 rodrigc
  0 siblings, 0 replies; 3+ messages in thread
From: rodrigc @ 2001-11-06 17:02 UTC (permalink / raw)
  To: gcc-bugs, gcc-gnats, gcc-prs, nobody, simon.brenner

Synopsis: ICE when compiling linux 2.4.13-ac8 (preempt patch) sched.c

State-Changed-From-To: open->closed
State-Changed-By: rodrigc
State-Changed-When: Fri Nov 16 22:31:27 2001
State-Changed-Why:
    Duplicate of PR4815.
    Can you see if the patch I attached to PR4815 solves
    your problem?
    http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&pr=4815&database=gcc

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&pr=4853&database=gcc


^ permalink raw reply	[flat|nested] 3+ messages in thread

* c/4853: ICE when compiling linux 2.4.13-ac8 (preempt patch) sched.c
@ 2001-11-01  5:56 simon.brenner
  0 siblings, 0 replies; 3+ messages in thread
From: simon.brenner @ 2001-11-01  5:56 UTC (permalink / raw)
  To: gcc-gnats


>Number:         4853
>Category:       c
>Synopsis:       ICE when compiling linux 2.4.13-ac8 (preempt patch) sched.c
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Sun Nov 11 13:46:00 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     simon.brenner@home.se
>Release:        3.0
>Organization:
>Environment:
RedHat Linux
>Description:
i get this error when compiling sched.c:
sched.c: In function schedule:
sched.c:723: ICE in rtx_equal_for_memref_p, at alias.c:1106
>How-To-Repeat:
run gcc -O2 -c sched.i
>Fix:
gcc -O1 -c sched.i
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/postscript; name="sched.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="sched.i"

IyAyMiAia2VybmVsL3NjaGVkLmMiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUv
bGludXgvY29uZmlnLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9s
aW51eC9hdXRvY29uZi5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGlu
dXgvY29uZmlnLmgiIDIKIyAyMyAia2VybmVsL3NjaGVkLmMiIDIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvaW5jbHVkZS9saW51eC9tbS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9pbmNsdWRlL2FzbS9wYXJhbS5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1
ZGUvbGludXgvc2NoZWQuaCIgMgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZXZlbnQ7CgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgOSAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3B0cmFjZS5oIiAxCiMgMjQgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3B0cmFjZS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9pbmNsdWRlL2FzbS9wdHJhY2UuaCIgMQojIDI2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5j
bHVkZS9hc20vcHRyYWNlLmgiCnN0cnVjdCBwdF9yZWdzIHsKICAgICAgICBsb25nIGVieDsKICAg
ICAgICBsb25nIGVjeDsKICAgICAgICBsb25nIGVkeDsKICAgICAgICBsb25nIGVzaTsKICAgICAg
ICBsb25nIGVkaTsKICAgICAgICBsb25nIGVicDsKICAgICAgICBsb25nIGVheDsKICAgICAgICBp
bnQgeGRzOwogICAgICAgIGludCB4ZXM7CiAgICAgICAgbG9uZyBvcmlnX2VheDsKICAgICAgICBs
b25nIGVpcDsKICAgICAgICBpbnQgeGNzOwogICAgICAgIGxvbmcgZWZsYWdzOwogICAgICAgIGxv
bmcgZXNwOwogICAgICAgIGludCB4c3M7Cn07CiMgNjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9p
bmNsdWRlL2FzbS9wdHJhY2UuaCIKZXh0ZXJuIHZvaWQgc2hvd19yZWdzKHN0cnVjdCBwdF9yZWdz
ICopOwpleHRlcm4gdm9pZCBzaG93X3JlZ2lzdGVycyhzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CiMg
MjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3B0cmFjZS5oIiAyCiMgNSAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvYmluZm10cy5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIiAxCiMgMTYgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHkuaCIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCgoKCgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNiAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMgoKCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCIgMQoKCgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIiAxCiMgNSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCIgMgojIDM2ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIgp0eXBlZGVmIHN0cnVjdCB7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBmZHNfYml0cyBbKDEwMjQvKDggKiBzaXplb2YodW5zaWdu
ZWQgbG9uZykpKV07Cn0gX19rZXJuZWxfZmRfc2V0OwoKCnR5cGVkZWYgdm9pZCAoKl9fa2VybmVs
X3NpZ2hhbmRsZXJfdCkoaW50KTsKCgp0eXBlZGVmIGludCBfX2tlcm5lbF9rZXlfdDsKCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmgiIDEKIyAxMCAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmgiCnR5cGVkZWYg
dW5zaWduZWQgc2hvcnQgX19rZXJuZWxfZGV2X3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX2tl
cm5lbF9pbm9fdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9tb2RlX3Q7CnR5cGVk
ZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfbmxpbmtfdDsKdHlwZWRlZiBsb25nIF9fa2VybmVs
X29mZl90Owp0eXBlZGVmIGludCBfX2tlcm5lbF9waWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9y
dCBfX2tlcm5lbF9pcGNfcGlkX3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfdWlk
X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfZ2lkX3Q7CnR5cGVkZWYgdW5zaWdu
ZWQgaW50IF9fa2VybmVsX3NpemVfdDsKdHlwZWRlZiBpbnQgX19rZXJuZWxfc3NpemVfdDsKdHlw
ZWRlZiBpbnQgX19rZXJuZWxfcHRyZGlmZl90Owp0eXBlZGVmIGxvbmcgX19rZXJuZWxfdGltZV90
Owp0eXBlZGVmIGxvbmcgX19rZXJuZWxfc3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9uZyBfX2tlcm5l
bF9jbG9ja190Owp0eXBlZGVmIGludCBfX2tlcm5lbF9kYWRkcl90Owp0eXBlZGVmIGNoYXIgKiBf
X2tlcm5lbF9jYWRkcl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX3VpZDE2X3Q7
CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfZ2lkMTZfdDsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgX19rZXJuZWxfdWlkMzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19rZXJuZWxfZ2lk
MzJfdDsKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfb2xkX3VpZF90Owp0eXBlZGVm
IHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX29sZF9naWRfdDsKCgp0eXBlZGVmIGxvbmcgbG9uZyBf
X2tlcm5lbF9sb2ZmX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgewoKICAgICAgICBpbnQgdmFsWzJdOwoK
Cgp9IF9fa2VybmVsX2ZzaWRfdDsKIyA0NyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUv
bGludXgvcG9zaXhfdHlwZXMuaCIgMgojIDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRl
L2xpbnV4L3R5cGVzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20v
dHlwZXMuaCIgMQoKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVtb2RlX3Q7CgoKCgoKCnR5cGVk
ZWYgX19zaWduZWRfXyBjaGFyIF9fczg7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3U4OwoKdHlw
ZWRlZiBfX3NpZ25lZF9fIHNob3J0IF9fczE2Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdTE2
OwoKdHlwZWRlZiBfX3NpZ25lZF9fIGludCBfX3MzMjsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191
MzI7CgoKdHlwZWRlZiBfX3NpZ25lZF9fIGxvbmcgbG9uZyBfX3M2NDsKdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIGxvbmcgX191NjQ7CgoKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNs
dWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRl
L2FzbS90eXBlcy5oIiAyCgp0eXBlZGVmIHNpZ25lZCBjaGFyIHM4Owp0eXBlZGVmIHVuc2lnbmVk
IGNoYXIgdTg7Cgp0eXBlZGVmIHNpZ25lZCBzaG9ydCBzMTY7CnR5cGVkZWYgdW5zaWduZWQgc2hv
cnQgdTE2OwoKdHlwZWRlZiBzaWduZWQgaW50IHMzMjsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdTMy
OwoKdHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIHM2NDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxv
bmcgdTY0OwojIDUxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vdHlwZXMuaCIK
dHlwZWRlZiB1MzIgZG1hX2FkZHJfdDsKCnR5cGVkZWYgdTY0IGRtYTY0X2FkZHJfdDsKIyAxMCAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMgoKCgp0eXBlZGVm
IF9fa2VybmVsX2ZkX3NldCBmZF9zZXQ7CnR5cGVkZWYgX19rZXJuZWxfZGV2X3QgZGV2X3Q7CnR5
cGVkZWYgX19rZXJuZWxfaW5vX3QgaW5vX3Q7CnR5cGVkZWYgX19rZXJuZWxfbW9kZV90IG1vZGVf
dDsKdHlwZWRlZiBfX2tlcm5lbF9ubGlua190IG5saW5rX3Q7CnR5cGVkZWYgX19rZXJuZWxfb2Zm
X3Qgb2ZmX3Q7CnR5cGVkZWYgX19rZXJuZWxfcGlkX3QgcGlkX3Q7CnR5cGVkZWYgX19rZXJuZWxf
ZGFkZHJfdCBkYWRkcl90Owp0eXBlZGVmIF9fa2VybmVsX2tleV90IGtleV90Owp0eXBlZGVmIF9f
a2VybmVsX3N1c2Vjb25kc190IHN1c2Vjb25kc190OwoKCnR5cGVkZWYgX19rZXJuZWxfdWlkMzJf
dCB1aWRfdDsKdHlwZWRlZiBfX2tlcm5lbF9naWQzMl90IGdpZF90Owp0eXBlZGVmIF9fa2VybmVs
X3VpZDE2X3QgdWlkMTZfdDsKdHlwZWRlZiBfX2tlcm5lbF9naWQxNl90IGdpZDE2X3Q7CgoKCnR5
cGVkZWYgX19rZXJuZWxfb2xkX3VpZF90IG9sZF91aWRfdDsKdHlwZWRlZiBfX2tlcm5lbF9vbGRf
Z2lkX3Qgb2xkX2dpZF90OwojIDQ1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51
eC90eXBlcy5oIgp0eXBlZGVmIF9fa2VybmVsX2xvZmZfdCBsb2ZmX3Q7CiMgNTQgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiCnR5cGVkZWYgX19rZXJuZWxfc2l6
ZV90IHNpemVfdDsKCgoKCnR5cGVkZWYgX19rZXJuZWxfc3NpemVfdCBzc2l6ZV90OwoKCgoKdHlw
ZWRlZiBfX2tlcm5lbF9wdHJkaWZmX3QgcHRyZGlmZl90OwoKCgoKdHlwZWRlZiBfX2tlcm5lbF90
aW1lX3QgdGltZV90OwoKCgoKdHlwZWRlZiBfX2tlcm5lbF9jbG9ja190IGNsb2NrX3Q7CgoKCgp0
eXBlZGVmIF9fa2VybmVsX2NhZGRyX3QgY2FkZHJfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFy
IHVfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVk
IGludCB1X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVfbG9uZzsKCgp0eXBlZGVmIHVuc2ln
bmVkIGNoYXIgdW5jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVzaG9ydDsKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgdWludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVsb25nOwoKCgoKdHlwZWRl
ZiBfX3U4IHVfaW50OF90Owp0eXBlZGVmIF9fczggaW50OF90Owp0eXBlZGVmIF9fdTE2IHVfaW50
MTZfdDsKdHlwZWRlZiBfX3MxNiBpbnQxNl90Owp0eXBlZGVmIF9fdTMyIHVfaW50MzJfdDsKdHlw
ZWRlZiBfX3MzMiBpbnQzMl90OwoKCgp0eXBlZGVmIF9fdTggdWludDhfdDsKdHlwZWRlZiBfX3Ux
NiB1aW50MTZfdDsKdHlwZWRlZiBfX3UzMiB1aW50MzJfdDsKCgp0eXBlZGVmIF9fdTY0IHVpbnQ2
NF90Owp0eXBlZGVmIF9fdTY0IHVfaW50NjRfdDsKdHlwZWRlZiBfX3M2NCBpbnQ2NF90OwojIDEy
MyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvdHlwZXMuaCIKc3RydWN0IHVz
dGF0IHsKICAgICAgICBfX2tlcm5lbF9kYWRkcl90IGZfdGZyZWU7CiAgICAgICAgX19rZXJuZWxf
aW5vX3QgZl90aW5vZGU7CiAgICAgICAgY2hhciBmX2ZuYW1lWzZdOwogICAgICAgIGNoYXIgZl9m
cGFja1s2XTsKfTsKIyAxNyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvY2Fw
YWJpbGl0eS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvZnMu
aCIgMQojIDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2ZzLmgiCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAxMCAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2xpbmthZ2UuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2luY2x1ZGUvbGludXgvbGlua2FnZS5oIiAyCiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5j
bHVkZS9saW51eC9saW1pdHMuaCIgMQojIDEyICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVk
ZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgv
d2FpdC5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3dhaXQu
aCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMQoj
IDEwICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIKIyAxICIv
dXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC9pbmNsdWRlL3N0ZGFyZy5oIiAx
IDMKIyA0MyAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAvaW5jbHVkZS9z
dGRhcmcuaCIgMwp0eXBlZGVmIF9fYnVpbHRpbl92YV9saXN0IF9fZ251Y192YV9saXN0OwojIDEx
MCAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAvaW5jbHVkZS9zdGRhcmcu
aCIgMwp0eXBlZGVmIF9fZ251Y192YV9saXN0IHZhX2xpc3Q7CiMgMTEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2luY2x1ZGUvbGludXgvbGlua2FnZS5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2lu
Y2x1ZGUvbGludXgvc3RkZGVmLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1
ZGUvbGludXgva2VybmVsLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9s
aW51eC90eXBlcy5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4
L2tlcm5lbC5oIiAyCiMgNDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2tl
cm5lbC5oIgpzdHJ1Y3QgY29tcGxldGlvbjsKCmV4dGVybiBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sg
KnBhbmljX25vdGlmaWVyX2xpc3Q7CiAgICAgICAgICAgdm9pZCBwYW5pYyhjb25zdCBjaGFyICog
Zm10LCAuLi4pCiAgICAgICAgX19hdHRyaWJ1dGVfXyAoKG5vcmV0dXJuLCBmb3JtYXQgKHByaW50
ZiwgMSwgMikpKTsKICAgICAgICAgICB2b2lkIGRvX2V4aXQobG9uZyBlcnJvcl9jb2RlKQogICAg
ICAgIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSk7CiAgICAgICAgICAgdm9pZCBjb21wbGV0ZV9h
bmRfZXhpdChzdHJ1Y3QgY29tcGxldGlvbiAqLCBsb25nKQogICAgICAgIF9fYXR0cmlidXRlX18o
KG5vcmV0dXJuKSk7CmV4dGVybiBpbnQgYWJzKGludCk7CmV4dGVybiB1bnNpZ25lZCBsb25nIHNp
bXBsZV9zdHJ0b3VsKGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGludCk7CmV4dGVybiBs
b25nIHNpbXBsZV9zdHJ0b2woY29uc3QgY2hhciAqLGNoYXIgKiosdW5zaWduZWQgaW50KTsKZXh0
ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBzaW1wbGVfc3RydG91bGwoY29uc3QgY2hhciAqLGNoYXIg
KiosdW5zaWduZWQgaW50KTsKZXh0ZXJuIGxvbmcgbG9uZyBzaW1wbGVfc3RydG9sbChjb25zdCBj
aGFyICosY2hhciAqKix1bnNpZ25lZCBpbnQpOwpleHRlcm4gaW50IHNwcmludGYoY2hhciAqIGJ1
ZiwgY29uc3QgY2hhciAqIGZtdCwgLi4uKTsKZXh0ZXJuIGludCB2c3ByaW50ZihjaGFyICpidWYs
IGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7CmV4dGVybiBpbnQgc25wcmludGYoY2hhciAqIGJ1Ziwg
c2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKZXh0ZXJuIGludCB2c25wcmludGYo
Y2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3MpOwoK
ZXh0ZXJuIGludCBzc2NhbmYoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLikKICAgICAg
ICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChzY2FuZiwyLDMpKSk7CmV4dGVybiBpbnQgdnNzY2Fu
Zihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7CgpleHRlcm4gaW50IGdldF9v
cHRpb24oY2hhciAqKnN0ciwgaW50ICpwaW50KTsKZXh0ZXJuIGNoYXIgKmdldF9vcHRpb25zKGNo
YXIgKnN0ciwgaW50IG5pbnRzLCBpbnQgKmludHMpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25n
IG1lbXBhcnNlKGNoYXIgKnB0ciwgY2hhciAqKnJldHB0cik7CmV4dGVybiB2b2lkIGRldl9wcm9i
ZV9sb2NrKHZvaWQpOwpleHRlcm4gdm9pZCBkZXZfcHJvYmVfdW5sb2NrKHZvaWQpOwoKZXh0ZXJu
IGludCBzZXNzaW9uX29mX3BncnAoaW50IHBncnApOwoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o
MCkpKSBpbnQgcHJpbnRrKGNvbnN0IGNoYXIgKiBmbXQsIC4uLikKICAgICAgICBfX2F0dHJpYnV0
ZV9fICgoZm9ybWF0IChwcmludGYsIDEsIDIpKSk7CgpleHRlcm4gaW50IGNvbnNvbGVfbG9nbGV2
ZWw7CgpzdGF0aWMgaW5saW5lIHZvaWQgY29uc29sZV9zaWxlbnQodm9pZCkKewogICAgICAgIGNv
bnNvbGVfbG9nbGV2ZWwgPSAwOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgY29uc29sZV92ZXJib3Nl
KHZvaWQpCnsKICAgICAgICBpZiAoY29uc29sZV9sb2dsZXZlbCkKICAgICAgICAgICAgICAgIGNv
bnNvbGVfbG9nbGV2ZWwgPSAxNTsKfQoKZXh0ZXJuIHZvaWQgYnVzdF9zcGlubG9ja3MoaW50IHll
cyk7CmV4dGVybiBpbnQgb29wc19pbl9wcm9ncmVzczsKCmV4dGVybiBpbnQgdGFpbnRlZDsKZXh0
ZXJuIGNvbnN0IGNoYXIgKnByaW50X3RhaW50ZWQodm9pZCk7CiMgMTYwICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIKc3RydWN0IHN5c2luZm8gewogICAgICAg
IGxvbmcgdXB0aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbG9hZHNbM107CiAgICAgICAgdW5z
aWduZWQgbG9uZyB0b3RhbHJhbTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZyZWVyYW07CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBzaGFyZWRyYW07CiAgICAgICAgdW5zaWduZWQgbG9uZyBidWZmZXJy
YW07CiAgICAgICAgdW5zaWduZWQgbG9uZyB0b3RhbHN3YXA7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBmcmVlc3dhcDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBwcm9jczsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBwYWQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0b3RhbGhpZ2g7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBmcmVlaGlnaDsKICAgICAgICB1bnNpZ25lZCBpbnQgbWVtX3VuaXQ7CiAgICAg
ICAgY2hhciBfZlsyMC0yKnNpemVvZihsb25nKS1zaXplb2YoaW50KV07Cn07CiMgMTQgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQoKCgoKCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvbGludXgvcHJlZmV0Y2guaCIgMQojIDEzICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvaW5jbHVkZS9saW51eC9wcmVmZXRjaC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2lu
Y2x1ZGUvYXNtL3ZtODYuaCIgMQojIDY4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9h
c20vdm04Ni5oIgpzdHJ1Y3Qgdm04Nl9yZWdzIHsKCgoKICAgICAgICBsb25nIGVieDsKICAgICAg
ICBsb25nIGVjeDsKICAgICAgICBsb25nIGVkeDsKICAgICAgICBsb25nIGVzaTsKICAgICAgICBs
b25nIGVkaTsKICAgICAgICBsb25nIGVicDsKICAgICAgICBsb25nIGVheDsKICAgICAgICBsb25n
IF9fbnVsbF9kczsKICAgICAgICBsb25nIF9fbnVsbF9lczsKICAgICAgICBsb25nIF9fbnVsbF9m
czsKICAgICAgICBsb25nIF9fbnVsbF9nczsKICAgICAgICBsb25nIG9yaWdfZWF4OwogICAgICAg
IGxvbmcgZWlwOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNzLCBfX2NzaDsKICAgICAgICBsb25n
IGVmbGFnczsKICAgICAgICBsb25nIGVzcDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzcywgX19z
c2g7CgoKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXMsIF9fZXNoOwogICAgICAgIHVuc2lnbmVk
IHNob3J0IGRzLCBfX2RzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBmcywgX19mc2g7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgZ3MsIF9fZ3NoOwp9OwoKc3RydWN0IHJldmVjdG9yZWRfc3RydWN0
IHsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fbWFwWzhdOwp9OwoKc3RydWN0IHZtODZfc3RydWN0
IHsKICAgICAgICBzdHJ1Y3Qgdm04Nl9yZWdzIHJlZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBm
bGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIHNjcmVlbl9iaXRtYXA7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBjcHVfdHlwZTsKICAgICAgICBzdHJ1Y3QgcmV2ZWN0b3JlZF9zdHJ1Y3QgaW50X3Jl
dmVjdG9yZWQ7CiAgICAgICAgc3RydWN0IHJldmVjdG9yZWRfc3RydWN0IGludDIxX3JldmVjdG9y
ZWQ7Cn07CgoKCgoKCnN0cnVjdCB2bTg2cGx1c19pbmZvX3N0cnVjdCB7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBmb3JjZV9yZXR1cm5fZm9yX3BpYzoxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdm04
NmRiZ19hY3RpdmU6MTsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtODZkYmdfVEZwZW5kaWc6MTsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHVudXNlZDoyODsKICAgICAgICB1bnNpZ25lZCBsb25nIGlz
X3ZtODZwdXM6MTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHZtODZkYmdfaW50eHh0YWJbMzJdOwp9
OwoKc3RydWN0IHZtODZwbHVzX3N0cnVjdCB7CiAgICAgICAgc3RydWN0IHZtODZfcmVncyByZWdz
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzY3Jl
ZW5fYml0bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1X3R5cGU7CiAgICAgICAgc3RydWN0
IHJldmVjdG9yZWRfc3RydWN0IGludF9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCByZXZlY3Rv
cmVkX3N0cnVjdCBpbnQyMV9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCB2bTg2cGx1c19pbmZv
X3N0cnVjdCB2bTg2cGx1czsKfTsKIyAxNDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRl
L2FzbS92bTg2LmgiCnN0cnVjdCBrZXJuZWxfdm04Nl9yZWdzIHsKCgoKICAgICAgICBsb25nIGVi
eDsKICAgICAgICBsb25nIGVjeDsKICAgICAgICBsb25nIGVkeDsKICAgICAgICBsb25nIGVzaTsK
ICAgICAgICBsb25nIGVkaTsKICAgICAgICBsb25nIGVicDsKICAgICAgICBsb25nIGVheDsKICAg
ICAgICBsb25nIF9fbnVsbF9kczsKICAgICAgICBsb25nIF9fbnVsbF9lczsKICAgICAgICBsb25n
IG9yaWdfZWF4OwogICAgICAgIGxvbmcgZWlwOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNzLCBf
X2NzaDsKICAgICAgICBsb25nIGVmbGFnczsKICAgICAgICBsb25nIGVzcDsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCBzcywgX19zc2g7CgoKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXMsIF9fZXNo
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRzLCBfX2RzaDsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBmcywgX19mc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZ3MsIF9fZ3NoOwp9OwoKc3RydWN0
IGtlcm5lbF92bTg2X3N0cnVjdCB7CiAgICAgICAgc3RydWN0IGtlcm5lbF92bTg2X3JlZ3MgcmVn
czsKIyAxODQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS92bTg2LmgiCiAgICAg
ICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIHNjcmVlbl9iaXRt
YXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjcHVfdHlwZTsKICAgICAgICBzdHJ1Y3QgcmV2ZWN0
b3JlZF9zdHJ1Y3QgaW50X3JldmVjdG9yZWQ7CiAgICAgICAgc3RydWN0IHJldmVjdG9yZWRfc3Ry
dWN0IGludDIxX3JldmVjdG9yZWQ7CiAgICAgICAgc3RydWN0IHZtODZwbHVzX2luZm9fc3RydWN0
IHZtODZwbHVzOwogICAgICAgIHN0cnVjdCBwdF9yZWdzICpyZWdzMzI7CiMgMjAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vdm04Ni5oIgp9OwoKdm9pZCBoYW5kbGVfdm04Nl9m
YXVsdChzdHJ1Y3Qga2VybmVsX3ZtODZfcmVncyAqLCBsb25nKTsKaW50IGhhbmRsZV92bTg2X3Ry
YXAoc3RydWN0IGtlcm5lbF92bTg2X3JlZ3MgKiwgbG9uZywgaW50KTsKIyAxMSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvYXNtL21hdGhfZW11LmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvaW5jbHVkZS9hc20vc2lnY29udGV4dC5oIiAxCiMgMTggIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9pbmNsdWRlL2FzbS9zaWdjb250ZXh0LmgiCnN0cnVjdCBfZnByZWcgewogICAgICAg
IHVuc2lnbmVkIHNob3J0IHNpZ25pZmljYW5kWzRdOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGV4
cG9uZW50Owp9OwoKc3RydWN0IF9mcHhyZWcgewogICAgICAgIHVuc2lnbmVkIHNob3J0IHNpZ25p
ZmljYW5kWzRdOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGV4cG9uZW50OwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHBhZGRpbmdbM107Cn07CgpzdHJ1Y3QgX3htbXJlZyB7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBlbGVtZW50WzRdOwp9OwoKc3RydWN0IF9mcHN0YXRlIHsKCiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBjdzsKICAgICAgICB1bnNpZ25lZCBsb25nIHN3OwogICAgICAgIHVuc2lnbmVkIGxv
bmcgdGFnOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaXBvZmY7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBjc3NlbDsKICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGFvZmY7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBkYXRhc2VsOwogICAgICAgIHN0cnVjdCBfZnByZWcgX3N0WzhdOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHN0YXR1czsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBtYWdpYzsKCgogICAgICAg
IHVuc2lnbmVkIGxvbmcgX2Z4c3JfZW52WzZdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbXhjc3I7
CiAgICAgICAgdW5zaWduZWQgbG9uZyByZXNlcnZlZDsKICAgICAgICBzdHJ1Y3QgX2ZweHJlZyBf
Znhzcl9zdFs4XTsKICAgICAgICBzdHJ1Y3QgX3htbXJlZyBfeG1tWzhdOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgcGFkZGluZ1s1Nl07Cn07CgoKCnN0cnVjdCBzaWdjb250ZXh0IHsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBncywgX19nc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZnMsIF9fZnNo
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IGVzLCBfX2VzaDsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBkcywgX19kc2g7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlZGk7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBlc2k7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlYnA7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBlc3A7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlYng7CiAgICAgICAgdW5zaWduZWQgbG9uZyBl
ZHg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlY3g7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlYXg7
CiAgICAgICAgdW5zaWduZWQgbG9uZyB0cmFwbm87CiAgICAgICAgdW5zaWduZWQgbG9uZyBlcnI7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBlaXA7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY3MsIF9f
Y3NoOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
ZXNwX2F0X3NpZ25hbDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzcywgX19zc2g7CiAgICAgICAg
c3RydWN0IF9mcHN0YXRlICogZnBzdGF0ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIG9sZG1hc2s7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBjcjI7Cn07CiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2luY2x1ZGUvYXNtL21hdGhfZW11LmgiIDIKCmludCByZXN0b3JlX2kzODdfc29mdCh2b2lkICpz
Mzg3LCBzdHJ1Y3QgX2Zwc3RhdGUgKmJ1Zik7CmludCBzYXZlX2kzODdfc29mdCh2b2lkICpzMzg3
LCBzdHJ1Y3QgX2Zwc3RhdGUgKiBidWYpOwoKCgoKCnN0cnVjdCBpbmZvIHsKICAgICAgICBsb25n
IF9fX29yaWdfZWlwOwogICAgICAgIGxvbmcgX19fZWJ4OwogICAgICAgIGxvbmcgX19fZWN4Owog
ICAgICAgIGxvbmcgX19fZWR4OwogICAgICAgIGxvbmcgX19fZXNpOwogICAgICAgIGxvbmcgX19f
ZWRpOwogICAgICAgIGxvbmcgX19fZWJwOwogICAgICAgIGxvbmcgX19fZWF4OwogICAgICAgIGxv
bmcgX19fZHM7CiAgICAgICAgbG9uZyBfX19lczsKICAgICAgICBsb25nIF9fX29yaWdfZWF4Owog
ICAgICAgIGxvbmcgX19fZWlwOwogICAgICAgIGxvbmcgX19fY3M7CiAgICAgICAgbG9uZyBfX19l
ZmxhZ3M7CiAgICAgICAgbG9uZyBfX19lc3A7CiAgICAgICAgbG9uZyBfX19zczsKICAgICAgICBs
b25nIF9fX3ZtODZfZXM7CiAgICAgICAgbG9uZyBfX192bTg2X2RzOwogICAgICAgIGxvbmcgX19f
dm04Nl9mczsKICAgICAgICBsb25nIF9fX3ZtODZfZ3M7Cn07CiMgMTIgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9pbmNsdWRlL2FzbS9zZWdtZW50LmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2lu
Y2x1ZGUvYXNtL3BhZ2UuaCIgMQojIDEyICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9h
c20vcGFnZS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2NvbmZp
Zy5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9wYWdlLmgiIDIK
IyA0NSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3BhZ2UuaCIKdHlwZWRlZiBz
dHJ1Y3QgeyB1bnNpZ25lZCBsb25nIHB0ZV9sb3c7IH0gcHRlX3Q7CnR5cGVkZWYgc3RydWN0IHsg
dW5zaWduZWQgbG9uZyBwbWQ7IH0gcG1kX3Q7CnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgbG9u
ZyBwZ2Q7IH0gcGdkX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCB7IHVuc2lnbmVkIGxvbmcgcGdwcm90
OyB9IHBncHJvdF90OwojIDEwNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3Bh
Z2UuaCIKc3RhdGljIF9faW5saW5lX18gaW50IGdldF9vcmRlcih1bnNpZ25lZCBsb25nIHNpemUp
CnsKICAgICAgICBpbnQgb3JkZXI7CgogICAgICAgIHNpemUgPSAoc2l6ZS0xKSA+PiAoMTIgLTEp
OwogICAgICAgIG9yZGVyID0gLTE7CiAgICAgICAgZG8gewogICAgICAgICAgICAgICAgc2l6ZSA+
Pj0gMTsKICAgICAgICAgICAgICAgIG9yZGVyKys7CiAgICAgICAgfSB3aGlsZSAoc2l6ZSk7CiAg
ICAgICAgcmV0dXJuIG9yZGVyOwp9CiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRl
L2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2Fz
bS90eXBlcy5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9wcm9j
ZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9zaWdjb250
ZXh0LmgiIDEKIyAxNiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3Byb2Nlc3Nv
ci5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUu
aCIgMQojIDE3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEKCgoK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDUg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMgojIDIyICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vYXRvbWljLmgiCnR5cGVkZWYgc3RydWN0IHsg
dm9sYXRpbGUgaW50IGNvdW50ZXI7IH0gYXRvbWljX3Q7CiMgNTMgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBhdG9taWNf
YWRkKGludCBpLCBhdG9taWNfdCAqdikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAog
ICAgICAgICAgICAgICAgIiIgImFkZGwgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAodi0+
Y291bnRlcikKICAgICAgICAgICAgICAgIDoiaXIiIChpKSwgIm0iICh2LT5jb3VudGVyKSk7Cn0K
IyA2OSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMg
X19pbmxpbmVfXyB2b2lkIGF0b21pY19zdWIoaW50IGksIGF0b21pY190ICp2KQp7CiAgICAgICAg
X19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIiAic3VibCAlMSwlMCIKICAg
ICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKQogICAgICAgICAgICAgICAgOiJpciIgKGkp
LCAibSIgKHYtPmNvdW50ZXIpKTsKfQojIDg3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVk
ZS9hc20vYXRvbWljLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBhdG9taWNfc3ViX2FuZF90ZXN0
KGludCBpLCBhdG9taWNfdCAqdikKewogICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKCiAgICAgICAg
X19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIiAic3VibCAlMiwlMDsgc2V0
ZSAlMSIKICAgICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKSwgIj1xbSIgKGMpCiAgICAg
ICAgICAgICAgICA6ImlyIiAoaSksICJtIiAodi0+Y291bnRlcikgOiAibWVtb3J5Iik7CiAgICAg
ICAgcmV0dXJuIGM7Cn0KIyAxMDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9h
dG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBhdG9taWNfaW5jKGF0b21pY190ICp2KQp7
CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIiAiaW5jbCAl
MCIKICAgICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKQogICAgICAgICAgICAgICAgOiJt
IiAodi0+Y291bnRlcikpOwp9CiMgMTIwICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9h
c20vYXRvbWljLmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgYXRvbWljX2RlYyhhdG9taWNfdCAq
dikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiIgImRl
Y2wgJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAodi0+Y291bnRlcikKICAgICAgICAgICAgICAg
IDoibSIgKHYtPmNvdW50ZXIpKTsKfQojIDEzNyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1
ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgYXRvbWljX2RlY19hbmRfdGVz
dChhdG9taWNfdCAqdikKewogICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKCiAgICAgICAgX19hc21f
XyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIiAiZGVjbCAlMDsgc2V0ZSAlMSIKICAg
ICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKSwgIj1xbSIgKGMpCiAgICAgICAgICAgICAg
ICA6Im0iICh2LT5jb3VudGVyKSA6ICJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gYyAhPSAwOwp9
CiMgMTU3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRp
YyBfX2lubGluZV9fIGludCBhdG9taWNfaW5jX2FuZF90ZXN0KGF0b21pY190ICp2KQp7CiAgICAg
ICAgdW5zaWduZWQgY2hhciBjOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAg
ICAgICAgICAgICIiICJpbmNsICUwOyBzZXRlICUxIgogICAgICAgICAgICAgICAgOiI9bSIgKHYt
PmNvdW50ZXIpLCAiPXFtIiAoYykKICAgICAgICAgICAgICAgIDoibSIgKHYtPmNvdW50ZXIpIDog
Im1lbW9yeSIpOwogICAgICAgIHJldHVybiBjICE9IDA7Cn0KIyAxNzggIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IGF0b21p
Y19hZGRfbmVnYXRpdmUoaW50IGksIGF0b21pY190ICp2KQp7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBjOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIiICJh
ZGRsICUyLCUwOyBzZXRzICUxIgogICAgICAgICAgICAgICAgOiI9bSIgKHYtPmNvdW50ZXIpLCAi
PXFtIiAoYykKICAgICAgICAgICAgICAgIDoiaXIiIChpKSwgIm0iICh2LT5jb3VudGVyKSA6ICJt
ZW1vcnkiKTsKICAgICAgICByZXR1cm4gYzsKfQojIDE4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
aW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5j
bHVkZS9saW51eC9jYWNoZS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1
ZGUvbGludXgvY29uZmlnLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9s
aW51eC9jYWNoZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL2Nh
Y2hlLmgiIDEKCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9j
b25maWcuaCIgMQojIDggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9jYWNoZS5o
IiAyCiMgNiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvY2FjaGUuaCIgMgoj
IDE5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDIwICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC90aHJlYWRzLmgiIDEKCgoKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDUgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3RocmVhZHMuaCIgMgojIDIxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKIyAzNCAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdHJ1Y3QgY3B1aW5mb194ODYgewog
ICAgICAgIF9fdTggeDg2OwogICAgICAgIF9fdTggeDg2X3ZlbmRvcjsKICAgICAgICBfX3U4IHg4
Nl9tb2RlbDsKICAgICAgICBfX3U4IHg4Nl9tYXNrOwogICAgICAgIGNoYXIgd3Bfd29ya3Nfb2s7
CiAgICAgICAgY2hhciBobHRfd29ya3Nfb2s7CiAgICAgICAgY2hhciBoYXJkX21hdGg7CiAgICAg
ICAgY2hhciByZnU7CiAgICAgICAgaW50IGNwdWlkX2xldmVsOwogICAgICAgIF9fdTMyIHg4Nl9j
YXBhYmlsaXR5WzRdOwogICAgICAgIGNoYXIgeDg2X3ZlbmRvcl9pZFsxNl07CiAgICAgICAgY2hh
ciB4ODZfbW9kZWxfaWRbNjRdOwogICAgICAgIGludCB4ODZfY2FjaGVfc2l6ZTsKCiAgICAgICAg
X191MTYgY2xvY2ttdWw7CiAgICAgICAgaW50IGZkaXZfYnVnOwogICAgICAgIGludCBmMDBmX2J1
ZzsKICAgICAgICBpbnQgY29tYV9idWc7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsb29wc19wZXJf
amlmZnk7CiAgICAgICAgdW5zaWduZWQgbG9uZyAqcGdkX3F1aWNrOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgKnBtZF9xdWljazsKICAgICAgICB1bnNpZ25lZCBsb25nICpwdGVfcXVpY2s7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBwZ3RhYmxlX2NhY2hlX3N6Owp9IF9fYXR0cmlidXRlX18oKF9fYWxp
Z25lZF9fKCgxIDw8ICgoNSkpKSkpKTsKIyA3NCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1
ZGUvYXNtL3Byb2Nlc3Nvci5oIgpleHRlcm4gc3RydWN0IGNwdWluZm9feDg2IGJvb3RfY3B1X2Rh
dGE7CmV4dGVybiBzdHJ1Y3QgdHNzX3N0cnVjdCBpbml0X3Rzc1sxXTsKIyA5NiAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpleHRlcm4gY2hhciBpZ25vcmVf
aXJxMTM7CgpleHRlcm4gdm9pZCBpZGVudGlmeV9jcHUoc3RydWN0IGNwdWluZm9feDg2ICopOwpl
eHRlcm4gdm9pZCBwcmludF9jcHVfaW5mbyhzdHJ1Y3QgY3B1aW5mb194ODYgKik7CmV4dGVybiB2
b2lkIGRvZGd5X3RzYyh2b2lkKTsKIyAxMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRl
L2FzbS9wcm9jZXNzb3IuaCIKc3RhdGljIGlubGluZSB2b2lkIGNwdWlkKGludCBvcCwgaW50ICpl
YXgsIGludCAqZWJ4LCBpbnQgKmVjeCwgaW50ICplZHgpCnsKICAgICAgICBfX2FzbV9fKCJjcHVp
ZCIKICAgICAgICAgICAgICAgIDogIj1hIiAoKmVheCksCiAgICAgICAgICAgICAgICAgICI9YiIg
KCplYngpLAogICAgICAgICAgICAgICAgICAiPWMiICgqZWN4KSwKICAgICAgICAgICAgICAgICAg
Ij1kIiAoKmVkeCkKICAgICAgICAgICAgICAgIDogIjAiIChvcCkpOwp9CgoKCgpzdGF0aWMgaW5s
aW5lIHVuc2lnbmVkIGludCBjcHVpZF9lYXgodW5zaWduZWQgaW50IG9wKQp7CiAgICAgICAgdW5z
aWduZWQgaW50IGVheDsKCiAgICAgICAgX19hc21fXygiY3B1aWQiCiAgICAgICAgICAgICAgICA6
ICI9YSIgKGVheCkKICAgICAgICAgICAgICAgIDogIjAiIChvcCkKICAgICAgICAgICAgICAgIDog
ImJ4IiwgImN4IiwgImR4Iik7CiAgICAgICAgcmV0dXJuIGVheDsKfQpzdGF0aWMgaW5saW5lIHVu
c2lnbmVkIGludCBjcHVpZF9lYngodW5zaWduZWQgaW50IG9wKQp7CiAgICAgICAgdW5zaWduZWQg
aW50IGVheCwgZWJ4OwoKICAgICAgICBfX2FzbV9fKCJjcHVpZCIKICAgICAgICAgICAgICAgIDog
Ij1hIiAoZWF4KSwgIj1iIiAoZWJ4KQogICAgICAgICAgICAgICAgOiAiMCIgKG9wKQogICAgICAg
ICAgICAgICAgOiAiY3giLCAiZHgiICk7CiAgICAgICAgcmV0dXJuIGVieDsKfQpzdGF0aWMgaW5s
aW5lIHVuc2lnbmVkIGludCBjcHVpZF9lY3godW5zaWduZWQgaW50IG9wKQp7CiAgICAgICAgdW5z
aWduZWQgaW50IGVheCwgZWN4OwoKICAgICAgICBfX2FzbV9fKCJjcHVpZCIKICAgICAgICAgICAg
ICAgIDogIj1hIiAoZWF4KSwgIj1jIiAoZWN4KQogICAgICAgICAgICAgICAgOiAiMCIgKG9wKQog
ICAgICAgICAgICAgICAgOiAiYngiLCAiZHgiICk7CiAgICAgICAgcmV0dXJuIGVjeDsKfQpzdGF0
aWMgaW5saW5lIHVuc2lnbmVkIGludCBjcHVpZF9lZHgodW5zaWduZWQgaW50IG9wKQp7CiAgICAg
ICAgdW5zaWduZWQgaW50IGVheCwgZWR4OwoKICAgICAgICBfX2FzbV9fKCJjcHVpZCIKICAgICAg
ICAgICAgICAgIDogIj1hIiAoZWF4KSwgIj1kIiAoZWR4KQogICAgICAgICAgICAgICAgOiAiMCIg
KG9wKQogICAgICAgICAgICAgICAgOiAiYngiLCAiY3giKTsKICAgICAgICByZXR1cm4gZWR4Owp9
CiMgMjAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCmV4
dGVybiB1bnNpZ25lZCBsb25nIG1tdV9jcjRfZmVhdHVyZXM7CgpzdGF0aWMgaW5saW5lIHZvaWQg
c2V0X2luX2NyNCAodW5zaWduZWQgbG9uZyBtYXNrKQp7CiAgICAgICAgbW11X2NyNF9mZWF0dXJl
cyB8PSBtYXNrOwogICAgICAgIF9fYXNtX18oIm1vdmwgJSVjcjQsJSVlYXhcblx0IgogICAgICAg
ICAgICAgICAgIm9ybCAlMCwlJWVheFxuXHQiCiAgICAgICAgICAgICAgICAibW92bCAlJWVheCwl
JWNyNFxuIgogICAgICAgICAgICAgICAgOiA6ICJpcmciIChtYXNrKQogICAgICAgICAgICAgICAg
OiJheCIpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgY2xlYXJfaW5fY3I0ICh1bnNpZ25lZCBsb25n
IG1hc2spCnsKICAgICAgICBtbXVfY3I0X2ZlYXR1cmVzICY9IH5tYXNrOwogICAgICAgIF9fYXNt
X18oIm1vdmwgJSVjcjQsJSVlYXhcblx0IgogICAgICAgICAgICAgICAgImFuZGwgJTAsJSVlYXhc
blx0IgogICAgICAgICAgICAgICAgIm1vdmwgJSVlYXgsJSVjcjRcbiIKICAgICAgICAgICAgICAg
IDogOiAiaXJnIiAofm1hc2spCiAgICAgICAgICAgICAgICA6ImF4Iik7Cn0KIyAyNTggIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKZXh0ZXJuIGludCBNQ0Ff
YnVzOwoKCgpleHRlcm4gdW5zaWduZWQgaW50IG1hY2hpbmVfaWQ7CmV4dGVybiB1bnNpZ25lZCBp
bnQgbWFjaGluZV9zdWJtb2RlbF9pZDsKZXh0ZXJuIHVuc2lnbmVkIGludCBCSU9TX3JldmlzaW9u
OwpleHRlcm4gdW5zaWduZWQgaW50IG1jYV9wZW50aXVtX2ZsYWc7CiMgMjg0ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCnN0cnVjdCBpMzg3X2ZzYXZlX3N0
cnVjdCB7CiAgICAgICAgbG9uZyBjd2Q7CiAgICAgICAgbG9uZyBzd2Q7CiAgICAgICAgbG9uZyB0
d2Q7CiAgICAgICAgbG9uZyBmaXA7CiAgICAgICAgbG9uZyBmY3M7CiAgICAgICAgbG9uZyBmb287
CiAgICAgICAgbG9uZyBmb3M7CiAgICAgICAgbG9uZyBzdF9zcGFjZVsyMF07CiAgICAgICAgbG9u
ZyBzdGF0dXM7Cn07CgpzdHJ1Y3QgaTM4N19meHNhdmVfc3RydWN0IHsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBjd2Q7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3dkOwogICAgICAgIHVuc2lnbmVk
IHNob3J0IHR3ZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBmb3A7CiAgICAgICAgbG9uZyBmaXA7
CiAgICAgICAgbG9uZyBmY3M7CiAgICAgICAgbG9uZyBmb287CiAgICAgICAgbG9uZyBmb3M7CiAg
ICAgICAgbG9uZyBteGNzcjsKICAgICAgICBsb25nIHJlc2VydmVkOwogICAgICAgIGxvbmcgc3Rf
c3BhY2VbMzJdOwogICAgICAgIGxvbmcgeG1tX3NwYWNlWzMyXTsKICAgICAgICBsb25nIHBhZGRp
bmdbNTZdOwp9IF9fYXR0cmlidXRlX18gKChhbGlnbmVkICgxNikpKTsKCnN0cnVjdCBpMzg3X3Nv
ZnRfc3RydWN0IHsKICAgICAgICBsb25nIGN3ZDsKICAgICAgICBsb25nIHN3ZDsKICAgICAgICBs
b25nIHR3ZDsKICAgICAgICBsb25nIGZpcDsKICAgICAgICBsb25nIGZjczsKICAgICAgICBsb25n
IGZvbzsKICAgICAgICBsb25nIGZvczsKICAgICAgICBsb25nIHN0X3NwYWNlWzIwXTsKICAgICAg
ICB1bnNpZ25lZCBjaGFyIGZ0b3AsIGNoYW5nZWQsIGxvb2thaGVhZCwgbm9fdXBkYXRlLCBybSwg
YWxpbWl0OwogICAgICAgIHN0cnVjdCBpbmZvICppbmZvOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
ZW50cnlfZWlwOwp9OwoKdW5pb24gaTM4N191bmlvbiB7CiAgICAgICAgc3RydWN0IGkzODdfZnNh
dmVfc3RydWN0IGZzYXZlOwogICAgICAgIHN0cnVjdCBpMzg3X2Z4c2F2ZV9zdHJ1Y3QgZnhzYXZl
OwogICAgICAgIHN0cnVjdCBpMzg3X3NvZnRfc3RydWN0IHNvZnQ7Cn07Cgp0eXBlZGVmIHN0cnVj
dCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZWc7Cn0gbW1fc2VnbWVudF90OwoKc3RydWN0IHRz
c19zdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIHNob3J0IGJhY2tfbGluayxfX2JsaDsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGVzcDA7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3MwLF9fc3MwaDsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGVzcDE7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3MxLF9f
c3MxaDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcDI7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
c3MyLF9fc3MyaDsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fY3IzOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgZWlwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWZsYWdzOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgZWF4LGVjeCxlZHgsZWJ4OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNwOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgZWJwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNpOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgZWRpOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGVzLCBfX2VzaDsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBjcywgX19jc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3MsIF9f
c3NoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRzLCBfX2RzaDsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCBmcywgX19mc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZ3MsIF9fZ3NoOwogICAgICAg
IHVuc2lnbmVkIHNob3J0IGxkdCwgX19sZHRoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHRyYWNl
LCBiaXRtYXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpb19iaXRtYXBbMzIgKzFdOwoKCgogICAg
ICAgIHVuc2lnbmVkIGxvbmcgX19jYWNoZWxpbmVfZmlsbGVyWzVdOwp9OwoKc3RydWN0IHRocmVh
ZF9zdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNwMDsKICAgICAgICB1bnNpZ25lZCBs
b25nIGVpcDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcDsKICAgICAgICB1bnNpZ25lZCBsb25n
IGZzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZ3M7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgZGVi
dWdyZWdbOF07CgogICAgICAgIHVuc2lnbmVkIGxvbmcgY3IyLCB0cmFwX25vLCBlcnJvcl9jb2Rl
OwoKICAgICAgICB1bmlvbiBpMzg3X3VuaW9uIGkzODc7CgogICAgICAgIHN0cnVjdCB2bTg2X3N0
cnVjdCAqIHZtODZfaW5mbzsKICAgICAgICB1bnNpZ25lZCBsb25nIHNjcmVlbl9iaXRtYXA7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyB2ODZmbGFncywgdjg2bWFzaywgdjg2bW9kZSwgc2F2ZWRfZXNw
MDsKCiAgICAgICAgaW50IGlvcGVybTsKICAgICAgICB1bnNpZ25lZCBsb25nIGlvX2JpdG1hcFsz
MiArMV07Cn07CgpzdHJ1Y3QgdGFza19zdHJ1Y3RfaW5mbwp7CiAgICAgICAgdm9pZCAqa3N0YWNr
OwogICAgICAgIGF0b21pY190IHVzZXJzOwp9OwoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbml0
X3Rhc2tfc3RhY2tbXTsKIyA0MzkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9w
cm9jZXNzb3IuaCIKc3RydWN0IHRhc2tfc3RydWN0OwpzdHJ1Y3QgbW1fc3RydWN0OwoKCmV4dGVy
biB2b2lkIHJlbGVhc2VfdGhyZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKCgoKZXh0ZXJuIGlu
dCBrZXJuZWxfdGhyZWFkKGludCAoKmZuKSh2b2lkICopLCB2b2lkICogYXJnLCB1bnNpZ25lZCBs
b25nIGZsYWdzKTsKCgpleHRlcm4gdm9pZCBjb3B5X3NlZ21lbnRzKHN0cnVjdCB0YXNrX3N0cnVj
dCAqcCwgc3RydWN0IG1tX3N0cnVjdCAqIG1tKTsKZXh0ZXJuIHZvaWQgcmVsZWFzZV9zZWdtZW50
cyhzdHJ1Y3QgbW1fc3RydWN0ICogbW0pOwoKCgoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25n
IHRocmVhZF9zYXZlZF9wYyhzdHJ1Y3QgdGhyZWFkX3N0cnVjdCAqdCkKewogICAgICAgIHJldHVy
biAoKHVuc2lnbmVkIGxvbmcgKil0LT5lc3ApWzNdOwp9Cgp1bnNpZ25lZCBsb25nIGdldF93Y2hh
bihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApOwojIDQ3MSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2lu
Y2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgp2b2lkIGluaXRfdHNrX2FsbG9jYXRvcih2b2lkKTsKc3Ry
dWN0IHRhc2tfc3RydWN0ICogYWxsb2NfdGFza19zdHJ1Y3Qodm9pZCk7CnZvaWQgZ2V0X3Rhc2tf
c3RydWN0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKTsKdm9pZCBmcmVlX3Rhc2tfc3RydWN0KHN0
cnVjdCB0YXNrX3N0cnVjdCAqdHNrKTsKCgoKc3RydWN0IG1pY3JvY29kZSB7CiAgICAgICAgdW5z
aWduZWQgaW50IGhkcnZlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgcmV2OwogICAgICAgIHVuc2ln
bmVkIGludCBkYXRlOwogICAgICAgIHVuc2lnbmVkIGludCBzaWc7CiAgICAgICAgdW5zaWduZWQg
aW50IGNrc3VtOwogICAgICAgIHVuc2lnbmVkIGludCBsZHJ2ZXI7CiAgICAgICAgdW5zaWduZWQg
aW50IHBmOwogICAgICAgIHVuc2lnbmVkIGludCByZXNlcnZlZFs1XTsKICAgICAgICB1bnNpZ25l
ZCBpbnQgYml0c1s1MDBdOwp9OwoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCByZXBfbm9wKHZvaWQp
CnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygicmVwO25vcCIpOwp9CiMgMTQgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3ByZWZldGNoLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vY2FjaGUuaCIgMQojIDE1ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvaW5jbHVkZS9saW51eC9wcmVmZXRjaC5oIiAyCiMgNDMgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3ByZWZldGNoLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBwcmVm
ZXRjaChjb25zdCB2b2lkICp4KSB7O30KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBwcmVmZXRjaHco
Y29uc3Qgdm9pZCAqeCkgezt9CiMgNyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGlu
dXgvbGlzdC5oIiAyCiMgMTggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2xp
c3QuaCIKc3RydWN0IGxpc3RfaGVhZCB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqbmV4dCwg
KnByZXY7Cn07CiMgMzcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2xpc3Qu
aCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2xpc3RfYWRkKHN0cnVjdCBsaXN0X2hlYWQgKiBu
ZXcsCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqIHByZXYsCiAgICAgICAgc3RydWN0IGxpc3Rf
aGVhZCAqIG5leHQpCnsKICAgICAgICBuZXh0LT5wcmV2ID0gbmV3OwogICAgICAgIG5ldy0+bmV4
dCA9IG5leHQ7CiAgICAgICAgbmV3LT5wcmV2ID0gcHJldjsKICAgICAgICBwcmV2LT5uZXh0ID0g
bmV3Owp9CiMgNTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2xpc3QuaCIK
c3RhdGljIF9faW5saW5lX18gdm9pZCBsaXN0X2FkZChzdHJ1Y3QgbGlzdF9oZWFkICpuZXcsIHN0
cnVjdCBsaXN0X2hlYWQgKmhlYWQpCnsKICAgICAgICBfX2xpc3RfYWRkKG5ldywgaGVhZCwgaGVh
ZC0+bmV4dCk7Cn0KIyA2OCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvbGlz
dC5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGxpc3RfYWRkX3RhaWwoc3RydWN0IGxpc3RfaGVh
ZCAqbmV3LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiAgICAgICAgX19saXN0X2FkZChuZXcs
IGhlYWQtPnByZXYsIGhlYWQpOwp9CiMgODAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRl
L2xpbnV4L2xpc3QuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2xpc3RfZGVsKHN0cnVjdCBs
aXN0X2hlYWQgKiBwcmV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IGxpc3RfaGVhZCAqIG5leHQpCnsKICAgICAgICBuZXh0LT5wcmV2ID0gcHJldjsKICAgICAgICBw
cmV2LT5uZXh0ID0gbmV4dDsKfQoKCgoKCgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGxpc3RfZGVs
KHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5KQp7CiAgICAgICAgX19saXN0X2RlbChlbnRyeS0+cHJl
diwgZW50cnktPm5leHQpOwp9CgoKCgoKc3RhdGljIF9faW5saW5lX18gdm9pZCBsaXN0X2RlbF9p
bml0KHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5KQp7CiAgICAgICAgX19saXN0X2RlbChlbnRyeS0+
cHJldiwgZW50cnktPm5leHQpOwogICAgICAgIGRvIHsgKGVudHJ5KS0+bmV4dCA9IChlbnRyeSk7
IChlbnRyeSktPnByZXYgPSAoZW50cnkpOyB9IHdoaWxlICgwKTsKfQoKCgoKCnN0YXRpYyBfX2lu
bGluZV9fIGludCBsaXN0X2VtcHR5KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCnsKICAgICAgICBy
ZXR1cm4gaGVhZC0+bmV4dCA9PSBoZWFkOwp9CgoKCgoKCnN0YXRpYyBfX2lubGluZV9fIHZvaWQg
bGlzdF9zcGxpY2Uoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwgc3RydWN0IGxpc3RfaGVhZCAqaGVh
ZCkKewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmZpcnN0ID0gbGlzdC0+bmV4dDsKCiAgICAg
ICAgaWYgKGZpcnN0ICE9IGxpc3QpIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg
Kmxhc3QgPSBsaXN0LT5wcmV2OwogICAgICAgICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqYXQg
PSBoZWFkLT5uZXh0OwoKICAgICAgICAgICAgICAgIGZpcnN0LT5wcmV2ID0gaGVhZDsKICAgICAg
ICAgICAgICAgIGhlYWQtPm5leHQgPSBmaXJzdDsKCiAgICAgICAgICAgICAgICBsYXN0LT5uZXh0
ID0gYXQ7CiAgICAgICAgICAgICAgICBhdC0+cHJldiA9IGxhc3Q7CiAgICAgICAgfQp9CiMgMTUg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIiAxCiMgMTYgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDIKIyA1OSAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIKICB0eXBlZGVmIHN0cnVjdCB7IH0gc3Bpbmxv
Y2tfdDsKIyAxMjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3NwaW5sb2Nr
LmgiCiAgdHlwZWRlZiBzdHJ1Y3QgeyB9IHJ3bG9ja190OwojIDIwMyAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEKIyAyMDQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9p
bmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDIKZXh0ZXJuIGludCBhdG9taWNfZGVjX2FuZF9sb2Nr
KGF0b21pY190ICphdG9taWMsIHNwaW5sb2NrX3QgKmxvY2spOwojIDE3ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvaW5jbHVkZS9saW51eC93YWl0LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDE4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
aW5jbHVkZS9saW51eC93YWl0LmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1
ZGUvYXNtL3BhZ2UuaCIgMQojIDIwICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51
eC93YWl0LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vcHJvY2Vz
c29yLmgiIDEKIyAyMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvd2FpdC5o
IiAyCiMgMzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3dhaXQuaCIKc3Ry
dWN0IF9fd2FpdF9xdWV1ZSB7CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwoKICAgICAgICBz
dHJ1Y3QgdGFza19zdHJ1Y3QgKiB0YXNrOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgdGFza19s
aXN0OwoKCgoKfTsKdHlwZWRlZiBzdHJ1Y3QgX193YWl0X3F1ZXVlIHdhaXRfcXVldWVfdDsKIyA3
NyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvd2FpdC5oIgpzdHJ1Y3QgX193
YWl0X3F1ZXVlX2hlYWQgewogICAgICAgIHNwaW5sb2NrX3QgbG9jazsKICAgICAgICBzdHJ1Y3Qg
bGlzdF9oZWFkIHRhc2tfbGlzdDsKCgoKCn07CnR5cGVkZWYgc3RydWN0IF9fd2FpdF9xdWV1ZV9o
ZWFkIHdhaXRfcXVldWVfaGVhZF90OwojIDE1NSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1
ZGUvbGludXgvd2FpdC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF93YWl0cXVldWVfaGVhZCh3
YWl0X3F1ZXVlX2hlYWRfdCAqcSkKewoKCgoKICAgICAgICBxLT5sb2NrID0gKHNwaW5sb2NrX3Qp
IHsgfTsKICAgICAgICBkbyB7ICgmcS0+dGFza19saXN0KS0+bmV4dCA9ICgmcS0+dGFza19saXN0
KTsgKCZxLT50YXNrX2xpc3QpLT5wcmV2ID0gKCZxLT50YXNrX2xpc3QpOyB9IHdoaWxlICgwKTsK
CgoKCn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3dhaXRxdWV1ZV9lbnRyeSh3YWl0X3F1ZXVl
X3QgKnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewoKCgoKICAgICAgICBxLT5mbGFncyA9IDA7
CiAgICAgICAgcS0+dGFzayA9IHA7CgoKCn0KCnN0YXRpYyBpbmxpbmUgaW50IHdhaXRxdWV1ZV9h
Y3RpdmUod2FpdF9xdWV1ZV9oZWFkX3QgKnEpCnsKCgoKCgoKICAgICAgICByZXR1cm4gIWxpc3Rf
ZW1wdHkoJnEtPnRhc2tfbGlzdCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBfX2FkZF93YWl0X3F1
ZXVlKHdhaXRfcXVldWVfaGVhZF90ICpoZWFkLCB3YWl0X3F1ZXVlX3QgKm5ldykKewojIDIwMyAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvd2FpdC5oIgogICAgICAgIGxpc3Rf
YWRkKCZuZXctPnRhc2tfbGlzdCwgJmhlYWQtPnRhc2tfbGlzdCk7Cn0KCgoKCnN0YXRpYyBpbmxp
bmUgdm9pZCBfX2FkZF93YWl0X3F1ZXVlX3RhaWwod2FpdF9xdWV1ZV9oZWFkX3QgKmhlYWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRfcXVldWVf
dCAqbmV3KQp7CiMgMjIwICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC93YWl0
LmgiCiAgICAgICAgbGlzdF9hZGRfdGFpbCgmbmV3LT50YXNrX2xpc3QsICZoZWFkLT50YXNrX2xp
c3QpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgX19yZW1vdmVfd2FpdF9xdWV1ZSh3YWl0X3F1ZXVl
X2hlYWRfdCAqaGVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3YWl0X3F1ZXVlX3QgKm9sZCkKewoKCgoKCiAgICAgICAgbGlzdF9kZWwo
Jm9sZC0+dGFza19saXN0KTsKfQojIDEzICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9s
aW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvdHlw
ZXMuaCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9mcy5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvdmZzLmgiIDEKCgoKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vc3RhdGZzLmgiIDEKCgoKCgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyA3ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vc3RhdGZzLmgiIDIKCnR5cGVkZWYgX19rZXJu
ZWxfZnNpZF90IGZzaWRfdDsKCgoKc3RydWN0IHN0YXRmcyB7CiAgICAgICAgbG9uZyBmX3R5cGU7
CiAgICAgICAgbG9uZyBmX2JzaXplOwogICAgICAgIGxvbmcgZl9ibG9ja3M7CiAgICAgICAgbG9u
ZyBmX2JmcmVlOwogICAgICAgIGxvbmcgZl9iYXZhaWw7CiAgICAgICAgbG9uZyBmX2ZpbGVzOwog
ICAgICAgIGxvbmcgZl9mZnJlZTsKICAgICAgICBfX2tlcm5lbF9mc2lkX3QgZl9mc2lkOwogICAg
ICAgIGxvbmcgZl9uYW1lbGVuOwogICAgICAgIGxvbmcgZl9zcGFyZVs2XTsKfTsKIyA1ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC92ZnMuaCIgMgojIDE1ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2luY2x1ZGUvbGludXgvbmV0LmgiIDEKIyAyMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2lu
Y2x1ZGUvbGludXgvbmV0LmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGlu
dXgvY29uZmlnLmgiIDEKIyAyMiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgv
bmV0LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9zb2NrZXQu
aCIgMQoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3NvY2tldC5o
IiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3NvY2tpb3MuaCIg
MQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9zb2NrZXQuaCIgMgojIDcg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvc29ja2lvcy5oIiAxCiMgMjEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3NvY2tpb3MuaCIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvaW5jbHVkZS9hc20vc29ja2lvcy5oIiAxCiMgMjIgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3NvY2tpb3MuaCIgMgojIDggIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2luY2x1ZGUvbGludXgvdWlvLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5j
bHVkZS9saW51eC90eXBlcy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUv
bGludXgvdWlvLmgiIDIKIyAxOSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgv
dWlvLmgiCnN0cnVjdCBpb3ZlYwp7CiAgICAgICAgdm9pZCAqaW92X2Jhc2U7CiAgICAgICAgX19r
ZXJuZWxfc2l6ZV90IGlvdl9sZW47Cn07CiMgOSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1
ZGUvbGludXgvc29ja2V0LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9s
aW51eC90eXBlcy5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4
L3NvY2tldC5oIiAyCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHNhX2ZhbWlseV90OwoKCgoKCnN0
cnVjdCBzb2NrYWRkciB7CiAgICAgICAgc2FfZmFtaWx5X3Qgc2FfZmFtaWx5OwogICAgICAgIGNo
YXIgc2FfZGF0YVsxNF07Cn07CgpzdHJ1Y3QgbGluZ2VyIHsKICAgICAgICBpbnQgbF9vbm9mZjsK
ICAgICAgICBpbnQgbF9saW5nZXI7Cn07CgoKCgoKCgpzdHJ1Y3QgbXNnaGRyIHsKICAgICAgICB2
b2lkICogbXNnX25hbWU7CiAgICAgICAgaW50IG1zZ19uYW1lbGVuOwogICAgICAgIHN0cnVjdCBp
b3ZlYyAqIG1zZ19pb3Y7CiAgICAgICAgX19rZXJuZWxfc2l6ZV90IG1zZ19pb3ZsZW47CiAgICAg
ICAgdm9pZCAqIG1zZ19jb250cm9sOwogICAgICAgIF9fa2VybmVsX3NpemVfdCBtc2dfY29udHJv
bGxlbjsKICAgICAgICB1bnNpZ25lZCBtc2dfZmxhZ3M7Cn07CgoKCgoKCgpzdHJ1Y3QgY21zZ2hk
ciB7CiAgICAgICAgX19rZXJuZWxfc2l6ZV90IGNtc2dfbGVuOwogICAgICAgIGludCBjbXNnX2xl
dmVsOwogICAgICAgIGludCBjbXNnX3R5cGU7Cn07CiMgMTAyICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvaW5jbHVkZS9saW51eC9zb2NrZXQuaCIKc3RhdGljIGlubGluZSBzdHJ1Y3QgY21zZ2hkciAq
IF9fY21zZ19ueHRoZHIodm9pZCAqX19jdGwsIF9fa2VybmVsX3NpemVfdCBfX3NpemUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNtc2doZHIg
Kl9fY21zZykKewogICAgICAgIHN0cnVjdCBjbXNnaGRyICogX19wdHI7CgogICAgICAgIF9fcHRy
ID0gKHN0cnVjdCBjbXNnaGRyKikoKCh1bnNpZ25lZCBjaGFyICopIF9fY21zZykgKyAoICgoX19j
bXNnLT5jbXNnX2xlbikrc2l6ZW9mKGxvbmcpLTEpICYgfihzaXplb2YobG9uZyktMSkgKSk7CiAg
ICAgICAgaWYgKCh1bnNpZ25lZCBsb25nKSgoY2hhciopKF9fcHRyKzEpIC0gKGNoYXIgKikgX19j
dGwpID4gX19zaXplKQogICAgICAgICAgICAgICAgcmV0dXJuIChzdHJ1Y3QgY21zZ2hkciAqKTA7
CgogICAgICAgIHJldHVybiBfX3B0cjsKfQoKc3RhdGljIGlubGluZSBzdHJ1Y3QgY21zZ2hkciAq
IGNtc2dfbnh0aGRyIChzdHJ1Y3QgbXNnaGRyICpfX21zZywgc3RydWN0IGNtc2doZHIgKl9fY21z
ZykKewogICAgICAgIHJldHVybiBfX2Ntc2dfbnh0aGRyKF9fbXNnLT5tc2dfY29udHJvbCwgX19t
c2ctPm1zZ19jb250cm9sbGVuLCBfX2Ntc2cpOwp9CgoKCgoKCgpzdHJ1Y3QgdWNyZWQgewogICAg
ICAgIF9fdTMyIHBpZDsKICAgICAgICBfX3UzMiB1aWQ7CiAgICAgICAgX191MzIgZ2lkOwp9Owoj
IDI0NSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvc29ja2V0LmgiCmV4dGVy
biBpbnQgbWVtY3B5X2Zyb21pb3ZlYyh1bnNpZ25lZCBjaGFyICprZGF0YSwgc3RydWN0IGlvdmVj
ICppb3YsIGludCBsZW4pOwpleHRlcm4gaW50IG1lbWNweV9mcm9taW92ZWNlbmQodW5zaWduZWQg
Y2hhciAqa2RhdGEsIHN0cnVjdCBpb3ZlYyAqaW92LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBvZmZzZXQsIGludCBsZW4pOwpleHRlcm4gaW50IGNzdW1fcGFydGlhbF9jb3B5
X2Zyb21pb3ZlY2VuZCh1bnNpZ25lZCBjaGFyICprZGF0YSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGlvdmVjICppb3YsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsZW4sIGludCAqY3N1bXApOwoKZXh0
ZXJuIGludCB2ZXJpZnlfaW92ZWMoc3RydWN0IG1zZ2hkciAqbSwgc3RydWN0IGlvdmVjICppb3Ys
IGNoYXIgKmFkZHJlc3MsIGludCBtb2RlKTsKZXh0ZXJuIGludCBtZW1jcHlfdG9pb3ZlYyhzdHJ1
Y3QgaW92ZWMgKnYsIHVuc2lnbmVkIGNoYXIgKmtkYXRhLCBpbnQgbGVuKTsKZXh0ZXJuIHZvaWQg
bWVtY3B5X3Rva2VybmVsaW92ZWMoc3RydWN0IGlvdmVjICppb3YsIHVuc2lnbmVkIGNoYXIgKmtk
YXRhLCBpbnQgbGVuKTsKZXh0ZXJuIGludCBtb3ZlX2FkZHJfdG9fdXNlcih2b2lkICprYWRkciwg
aW50IGtsZW4sIHZvaWQgKnVhZGRyLCBpbnQgKnVsZW4pOwpleHRlcm4gaW50IG1vdmVfYWRkcl90
b19rZXJuZWwodm9pZCAqdWFkZHIsIGludCB1bGVuLCB2b2lkICprYWRkcik7CmV4dGVybiBpbnQg
cHV0X2Ntc2coc3RydWN0IG1zZ2hkciosIGludCBsZXZlbCwgaW50IHR5cGUsIGludCBsZW4sIHZv
aWQgKmRhdGEpOwojIDIzICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9uZXQu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMQoj
IDI0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9uZXQuaCIgMgoKc3RydWN0
IHBvbGxfdGFibGVfc3RydWN0OwojIDQ5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9s
aW51eC9uZXQuaCIKdHlwZWRlZiBlbnVtIHsKICBTU19GUkVFID0gMCwKICBTU19VTkNPTk5FQ1RF
RCwKICBTU19DT05ORUNUSU5HLAogIFNTX0NPTk5FQ1RFRCwKICBTU19ESVNDT05ORUNUSU5HCn0g
c29ja2V0X3N0YXRlOwojIDY1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9u
ZXQuaCIKc3RydWN0IHNvY2tldAp7CiAgICAgICAgc29ja2V0X3N0YXRlIHN0YXRlOwoKICAgICAg
ICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIHN0cnVjdCBwcm90b19vcHMgKm9wczsKICAg
ICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlOwogICAgICAgIHN0cnVjdCBmYXN5bmNfc3RydWN0ICpm
YXN5bmNfbGlzdDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZTsKICAgICAgICBzdHJ1Y3Qgc29j
ayAqc2s7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKCiAgICAgICAgc2hvcnQgdHlw
ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHBhc3NjcmVkOwp9OwoKCgpzdHJ1Y3Qgc2NtX2Nvb2tp
ZTsKc3RydWN0IHZtX2FyZWFfc3RydWN0OwpzdHJ1Y3QgcGFnZTsKCnN0cnVjdCBwcm90b19vcHMg
ewogIGludCBmYW1pbHk7CgogIGludCAoKnJlbGVhc2UpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrKTsK
ICBpbnQgKCpiaW5kKSAoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICp1bXlh
ZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvY2thZGRyX2xlbik7CiAgaW50ICgq
Y29ubmVjdCkgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqdXNlcnZhZGRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvY2thZGRyX2xlbiwgaW50IGZsYWdzKTsK
ICBpbnQgKCpzb2NrZXRwYWlyKSAoc3RydWN0IHNvY2tldCAqc29jazEsIHN0cnVjdCBzb2NrZXQg
KnNvY2syKTsKICBpbnQgKCphY2NlcHQpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29j
a2V0ICpuZXdzb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKTsKICBpbnQg
KCpnZXRuYW1lKSAoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICp1YWRkciwK
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqdXNvY2thZGRyX2xlbiwgaW50IHBlZXIpOwog
IHVuc2lnbmVkIGludCAoKnBvbGwpIChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHNvY2tldCAq
c29jaywgc3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICp3YWl0KTsKICBpbnQgKCppb2N0bCkgKHN0
cnVjdCBzb2NrZXQgKnNvY2ssIHVuc2lnbmVkIGludCBjbWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBsb25nIGFyZyk7CiAgaW50ICgqbGlzdGVuKSAoc3RydWN0IHNvY2tldCAq
c29jaywgaW50IGxlbik7CiAgaW50ICgqc2h1dGRvd24pIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBp
bnQgZmxhZ3MpOwogIGludCAoKnNldHNvY2tvcHQpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQg
bGV2ZWwsIGludCBvcHRuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqb3B0dmFs
LCBpbnQgb3B0bGVuKTsKICBpbnQgKCpnZXRzb2Nrb3B0KSAoc3RydWN0IHNvY2tldCAqc29jaywg
aW50IGxldmVsLCBpbnQgb3B0bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm9w
dHZhbCwgaW50ICpvcHRsZW4pOwogIGludCAoKnNlbmRtc2cpIChzdHJ1Y3Qgc29ja2V0ICpzb2Nr
LCBzdHJ1Y3QgbXNnaGRyICptLCBpbnQgdG90YWxfbGVuLCBzdHJ1Y3Qgc2NtX2Nvb2tpZSAqc2Nt
KTsKICBpbnQgKCpyZWN2bXNnKSAoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAq
bSwgaW50IHRvdGFsX2xlbiwgaW50IGZsYWdzLCBzdHJ1Y3Qgc2NtX2Nvb2tpZSAqc2NtKTsKICBp
bnQgKCptbWFwKSAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVj
dCB2bV9hcmVhX3N0cnVjdCAqIHZtYSk7CiAgc3NpemVfdCAoKnNlbmRwYWdlKSAoc3RydWN0IHNv
Y2tldCAqc29jaywgc3RydWN0IHBhZ2UgKnBhZ2UsIGludCBvZmZzZXQsIHNpemVfdCBzaXplLCBp
bnQgZmxhZ3MpOwp9OwoKc3RydWN0IG5ldF9wcm90b19mYW1pbHkKewogICAgICAgIGludCBmYW1p
bHk7CiAgICAgICAgaW50ICgqY3JlYXRlKShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgcHJvdG9j
b2wpOwoKCiAgICAgICAgc2hvcnQgYXV0aGVudGljYXRpb247CiAgICAgICAgc2hvcnQgZW5jcnlw
dGlvbjsKICAgICAgICBzaG9ydCBlbmNyeXB0X25ldDsKfTsKCnN0cnVjdCBuZXRfcHJvdG8Kewog
ICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAgdm9pZCAoKmluaXRfZnVuYykoc3RydWN0
IG5ldF9wcm90byAqKTsKfTsKCmV4dGVybiBpbnQgc29ja193YWtlX2FzeW5jKHN0cnVjdCBzb2Nr
ZXQgKnNrLCBpbnQgaG93LCBpbnQgYmFuZCk7CmV4dGVybiBpbnQgc29ja19yZWdpc3RlcihzdHJ1
Y3QgbmV0X3Byb3RvX2ZhbWlseSAqZmFtKTsKZXh0ZXJuIGludCBzb2NrX3VucmVnaXN0ZXIoaW50
IGZhbWlseSk7CmV4dGVybiBzdHJ1Y3Qgc29ja2V0ICpzb2NrX2FsbG9jKHZvaWQpOwpleHRlcm4g
aW50IHNvY2tfY3JlYXRlKGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG8sIHN0cnVjdCBz
b2NrZXQgKiopOwpleHRlcm4gdm9pZCBzb2NrX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqKTsKZXh0
ZXJuIGludCBzb2NrX3NlbmRtc2coc3RydWN0IHNvY2tldCAqLCBzdHJ1Y3QgbXNnaGRyICptLCBp
bnQgbGVuKTsKZXh0ZXJuIGludCBzb2NrX3JlY3Ztc2coc3RydWN0IHNvY2tldCAqLCBzdHJ1Y3Qg
bXNnaGRyICptLCBpbnQgbGVuLCBpbnQgZmxhZ3MpOwpleHRlcm4gaW50IHNvY2tfcmVhZHZfd3Jp
dGV2KGludCB0eXBlLCBzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwgc3RydWN0IGZpbGUgKiBmaWxlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGlvdmVjICogaW92
LCBsb25nIGNvdW50LCBsb25nIHNpemUpOwoKZXh0ZXJuIGludCBuZXRfcmF0ZWxpbWl0KHZvaWQp
OwpleHRlcm4gdW5zaWduZWQgbG9uZyBuZXRfcmFuZG9tKHZvaWQpOwpleHRlcm4gdm9pZCBuZXRf
c3JhbmRvbSh1bnNpZ25lZCBsb25nKTsKIyAxNiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1
ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4
L2tkZXZfdC5oIiAxCiMgNjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2tk
ZXZfdC5oIgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGtkZXZfdDsKIyA3NiAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvbGludXgva2Rldl90LmgiCmV4dGVybiBjb25zdCBjaGFyICoga2Rl
dm5hbWUoa2Rldl90KTsKCgoKCgoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQga2Rldl90X3Rv
X25yKGtkZXZfdCBkZXYpIHsKICAgICAgICByZXR1cm4gKCgodW5zaWduZWQgaW50KSAoKGRldikg
Pj4gOCkpPDw4KSB8ICgodW5zaWduZWQgaW50KSAoKGRldikgJiAoKDFVIDw8IDgpIC0gMSkpKTsK
fQoKc3RhdGljIGlubGluZSBrZGV2X3QgdG9fa2Rldl90KGludCBkZXYpCnsKICAgICAgICBpbnQg
bWFqb3IsIG1pbm9yOwojIDk4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9r
ZGV2X3QuaCIKICAgICAgICBtYWpvciA9IChkZXYgPj4gOCk7CiAgICAgICAgbWlub3IgPSAoZGV2
ICYgMHhmZik7CgogICAgICAgIHJldHVybiAoKChtYWpvcikgPDwgOCkgfCAobWlub3IpKTsKfQoj
IDE3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvaW9jdGwuaCIgMQoKCgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9pb2N0bC5oIiAxCiMgNSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvbGludXgvaW9jdGwuaCIgMgojIDE4ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2lu
Y2x1ZGUvbGludXgvbGlzdC5oIiAxCiMgMTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRl
L2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9k
Y2FjaGUuaCIgMQoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL2F0
b21pYy5oIiAxCiMgNyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvZGNhY2hl
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9tb3VudC5oIiAx
CiMgMTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L21vdW50LmgiCnN0cnVj
dCB2ZnNtb3VudAp7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBtbnRfaGFzaDsKICAgICAgICBz
dHJ1Y3QgdmZzbW91bnQgKm1udF9wYXJlbnQ7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqbW50X21v
dW50cG9pbnQ7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqbW50X3Jvb3Q7CiAgICAgICAgc3RydWN0
IHN1cGVyX2Jsb2NrICptbnRfc2I7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBtbnRfbW91bnRz
OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbW50X2NoaWxkOwogICAgICAgIGF0b21pY190IG1u
dF9jb3VudDsKICAgICAgICBpbnQgbW50X2ZsYWdzOwogICAgICAgIGNoYXIgKm1udF9kZXZuYW1l
OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbW50X2xpc3Q7Cn07CgpzdGF0aWMgaW5saW5lIHN0
cnVjdCB2ZnNtb3VudCAqbW50Z2V0KHN0cnVjdCB2ZnNtb3VudCAqbW50KQp7CiAgICAgICAgaWYg
KG1udCkKICAgICAgICAgICAgICAgIGF0b21pY19pbmMoJm1udC0+bW50X2NvdW50KTsKICAgICAg
ICByZXR1cm4gbW50Owp9CgpleHRlcm4gdm9pZCBfX21udHB1dChzdHJ1Y3QgdmZzbW91bnQgKm1u
dCk7CgpzdGF0aWMgaW5saW5lIHZvaWQgbW50cHV0KHN0cnVjdCB2ZnNtb3VudCAqbW50KQp7CiAg
ICAgICAgaWYgKG1udCkgewogICAgICAgICAgICAgICAgaWYgKGF0b21pY19kZWNfYW5kX3Rlc3Qo
Jm1udC0+bW50X2NvdW50KSkKICAgICAgICAgICAgICAgICAgICAgICAgX19tbnRwdXQobW50KTsK
ICAgICAgICB9Cn0KIyA4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9kY2Fj
aGUuaCIgMgojIDI0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9kY2FjaGUu
aCIKc3RydWN0IHFzdHIgewogICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBuYW1lOwogICAg
ICAgIHVuc2lnbmVkIGludCBsZW47CiAgICAgICAgdW5zaWduZWQgaW50IGhhc2g7Cn07CgpzdHJ1
Y3QgZGVudHJ5X3N0YXRfdCB7CiAgICAgICAgaW50IG5yX2RlbnRyeTsKICAgICAgICBpbnQgbnJf
dW51c2VkOwogICAgICAgIGludCBhZ2VfbGltaXQ7CiAgICAgICAgaW50IHdhbnRfcGFnZXM7CiAg
ICAgICAgaW50IGR1bW15WzJdOwp9OwpleHRlcm4gc3RydWN0IGRlbnRyeV9zdGF0X3QgZGVudHJ5
X3N0YXQ7CgoKCgoKCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgcGFydGlhbF9uYW1l
X2hhc2godW5zaWduZWQgbG9uZyBjLCB1bnNpZ25lZCBsb25nIHByZXZoYXNoKQp7CiAgICAgICAg
cmV0dXJuIChwcmV2aGFzaCArIChjIDw8IDQpICsgKGMgPj4gNCkpICogMTE7Cn0KCgpzdGF0aWMg
X19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIGVuZF9uYW1lX2hhc2godW5zaWduZWQgbG9uZyBoYXNo
KQp7CiAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBpbnQpIGhhc2g7Cn0KCgpzdGF0aWMgX19pbmxp
bmVfXyB1bnNpZ25lZCBpbnQgZnVsbF9uYW1lX2hhc2goY29uc3QgdW5zaWduZWQgY2hhciAqIG5h
bWUsIHVuc2lnbmVkIGludCBsZW4pCnsKICAgICAgICB1bnNpZ25lZCBsb25nIGhhc2ggPSAwOwog
ICAgICAgIHdoaWxlIChsZW4tLSkKICAgICAgICAgICAgICAgIGhhc2ggPSBwYXJ0aWFsX25hbWVf
aGFzaCgqbmFtZSsrLCBoYXNoKTsKICAgICAgICByZXR1cm4gZW5kX25hbWVfaGFzaChoYXNoKTsK
fQoKCgpzdHJ1Y3QgZGVudHJ5IHsKICAgICAgICBhdG9taWNfdCBkX2NvdW50OwogICAgICAgIHVu
c2lnbmVkIGludCBkX2ZsYWdzOwogICAgICAgIHN0cnVjdCBpbm9kZSAqIGRfaW5vZGU7CiAgICAg
ICAgc3RydWN0IGRlbnRyeSAqIGRfcGFyZW50OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZF9o
YXNoOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZF9scnU7CiAgICAgICAgc3RydWN0IGxpc3Rf
aGVhZCBkX2NoaWxkOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZF9zdWJkaXJzOwogICAgICAg
IHN0cnVjdCBsaXN0X2hlYWQgZF9hbGlhczsKICAgICAgICBpbnQgZF9tb3VudGVkOwogICAgICAg
IHN0cnVjdCBxc3RyIGRfbmFtZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGRfdGltZTsKICAgICAg
ICBzdHJ1Y3QgZGVudHJ5X29wZXJhdGlvbnMgKmRfb3A7CiAgICAgICAgc3RydWN0IHN1cGVyX2Js
b2NrICogZF9zYjsKICAgICAgICB1bnNpZ25lZCBsb25nIGRfdmZzX2ZsYWdzOwogICAgICAgIHZv
aWQgKiBkX2ZzZGF0YTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGRfaW5hbWVbMTZdOwp9OwoKc3Ry
dWN0IGRlbnRyeV9vcGVyYXRpb25zIHsKICAgICAgICBpbnQgKCpkX3JldmFsaWRhdGUpKHN0cnVj
dCBkZW50cnkgKiwgaW50KTsKICAgICAgICBpbnQgKCpkX2hhc2gpIChzdHJ1Y3QgZGVudHJ5ICos
IHN0cnVjdCBxc3RyICopOwogICAgICAgIGludCAoKmRfY29tcGFyZSkgKHN0cnVjdCBkZW50cnkg
Kiwgc3RydWN0IHFzdHIgKiwgc3RydWN0IHFzdHIgKik7CiAgICAgICAgaW50ICgqZF9kZWxldGUp
KHN0cnVjdCBkZW50cnkgKik7CiAgICAgICAgdm9pZCAoKmRfcmVsZWFzZSkoc3RydWN0IGRlbnRy
eSAqKTsKICAgICAgICB2b2lkICgqZF9pcHV0KShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9k
ZSAqKTsKfTsKIyAxMjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2RjYWNo
ZS5oIgpleHRlcm4gc3BpbmxvY2tfdCBkY2FjaGVfbG9jazsKCnN0YXRpYyBfX2lubGluZV9fIGlu
dCBkbmFtZV9leHRlcm5hbChzdHJ1Y3QgZGVudHJ5ICpkKQp7CiAgICAgICAgcmV0dXJuIGQtPmRf
bmFtZS5uYW1lICE9IGQtPmRfaW5hbWU7Cn0KCgoKCmV4dGVybiB2b2lkIGRfaW5zdGFudGlhdGUo
c3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIGRfZGVsZXRlKHN0
cnVjdCBkZW50cnkgKik7CgoKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX2FsbG9jKHN0cnVjdCBk
ZW50cnkgKiwgY29uc3Qgc3RydWN0IHFzdHIgKik7CmV4dGVybiB2b2lkIHNocmlua19kY2FjaGVf
c2Ioc3RydWN0IHN1cGVyX2Jsb2NrICopOwpleHRlcm4gdm9pZCBzaHJpbmtfZGNhY2hlX3BhcmVu
dChzdHJ1Y3QgZGVudHJ5ICopOwpleHRlcm4gaW50IGRfaW52YWxpZGF0ZShzdHJ1Y3QgZGVudHJ5
ICopOwoKCnN0cnVjdCB6b25lX3N0cnVjdDsKCmV4dGVybiB2b2lkIHNocmlua19kY2FjaGVfbWVt
b3J5KGludCwgdW5zaWduZWQgaW50KTsKZXh0ZXJuIHZvaWQgcHJ1bmVfZGNhY2hlKGludCk7CgoK
ZXh0ZXJuIHZvaWQgc2hyaW5rX2ljYWNoZV9tZW1vcnkoaW50LCBpbnQpOwpleHRlcm4gdm9pZCBw
cnVuZV9pY2FjaGUoaW50KTsKCgpleHRlcm4gdm9pZCBzaHJpbmtfZHFjYWNoZV9tZW1vcnkoaW50
LCB1bnNpZ25lZCBpbnQpOwoKCmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogZF9hbGxvY19yb290KHN0
cnVjdCBpbm9kZSAqKTsKCgpleHRlcm4gdm9pZCBkX2dlbm9jaWRlKHN0cnVjdCBkZW50cnkgKik7
CgpleHRlcm4gc3RydWN0IGRlbnRyeSAqZF9maW5kX2FsaWFzKHN0cnVjdCBpbm9kZSAqKTsKZXh0
ZXJuIHZvaWQgZF9wcnVuZV9hbGlhc2VzKHN0cnVjdCBpbm9kZSAqKTsKCgpleHRlcm4gaW50IGhh
dmVfc3VibW91bnRzKHN0cnVjdCBkZW50cnkgKik7CgoKCgpleHRlcm4gdm9pZCBkX3JlaGFzaChz
dHJ1Y3QgZGVudHJ5ICopOwojIDE4NSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGlu
dXgvZGNhY2hlLmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgZF9hZGQoc3RydWN0IGRlbnRyeSAq
IGVudHJ5LCBzdHJ1Y3QgaW5vZGUgKiBpbm9kZSkKewogICAgICAgIGRfaW5zdGFudGlhdGUoZW50
cnksIGlub2RlKTsKICAgICAgICBkX3JlaGFzaChlbnRyeSk7Cn0KCgpleHRlcm4gdm9pZCBkX21v
dmUoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwoKCmV4dGVybiBzdHJ1Y3QgZGVu
dHJ5ICogZF9sb29rdXAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgcXN0ciAqKTsKCgpleHRlcm4g
aW50IGRfdmFsaWRhdGUoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwoKZXh0ZXJu
IGNoYXIgKiBfX2RfcGF0aChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCB2ZnNtb3VudCAqLCBzdHJ1
Y3QgZGVudHJ5ICosCiAgICAgICAgc3RydWN0IHZmc21vdW50ICosIGNoYXIgKiwgaW50KTsKIyAy
MTggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIgpzdGF0aWMg
X19pbmxpbmVfXyBzdHJ1Y3QgZGVudHJ5ICogZGdldChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsK
ICAgICAgICBpZiAoZGVudHJ5KSB7CiAgICAgICAgICAgICAgICBpZiAoISgoJmRlbnRyeS0+ZF9j
b3VudCktPmNvdW50ZXIpKQogICAgICAgICAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRp
bGVfXygiLmJ5dGUgMHgwZiwweDBiIik7CiAgICAgICAgICAgICAgICBhdG9taWNfaW5jKCZkZW50
cnktPmRfY291bnQpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZGVudHJ5Owp9CgpleHRlcm4g
c3RydWN0IGRlbnRyeSAqIGRnZXRfbG9ja2VkKHN0cnVjdCBkZW50cnkgKik7CiMgMjM3ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIKc3RhdGljIF9faW5saW5l
X18gaW50IGRfdW5oYXNoZWQoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAgcmV0dXJu
IGxpc3RfZW1wdHkoJmRlbnRyeS0+ZF9oYXNoKTsKfQoKZXh0ZXJuIHZvaWQgZHB1dChzdHJ1Y3Qg
ZGVudHJ5ICopOwoKc3RhdGljIF9faW5saW5lX18gaW50IGRfbW91bnRwb2ludChzdHJ1Y3QgZGVu
dHJ5ICpkZW50cnkpCnsKICAgICAgICByZXR1cm4gZGVudHJ5LT5kX21vdW50ZWQ7Cn0KCmV4dGVy
biBzdHJ1Y3QgdmZzbW91bnQgKmxvb2t1cF9tbnQoc3RydWN0IHZmc21vdW50ICosIHN0cnVjdCBk
ZW50cnkgKik7CiMgMjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2ZzLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9zdGF0LmgiIDEKCgoK
CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9zdGF0LmgiIDEKCgoKc3Ry
dWN0IF9fb2xkX2tlcm5lbF9zdGF0IHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9kZXY7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgc3RfaW5vOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X21v
ZGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3Rfbmxpbms7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgc3RfdWlkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X2dpZDsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBzdF9yZGV2OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3Rfc2l6ZTsKICAgICAgICB1
bnNpZ25lZCBsb25nIHN0X2F0aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfbXRpbWU7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBzdF9jdGltZTsKfTsKCnN0cnVjdCBzdGF0IHsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBzdF9kZXY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgX19wYWQxOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgc3RfaW5vOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X21vZGU7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3Rfbmxpbms7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
c3RfdWlkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X2dpZDsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCBzdF9yZGV2OwogICAgICAgIHVuc2lnbmVkIHNob3J0IF9fcGFkMjsKICAgICAgICB1bnNp
Z25lZCBsb25nIHN0X3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9ibGtzaXplOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgc3RfYmxvY2tzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfYXRp
bWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDE7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzdF9tdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMjsKICAgICAgICB1bnNp
Z25lZCBsb25nIHN0X2N0aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQzOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQ0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVz
ZWQ1Owp9OwoKCgoKc3RydWN0IHN0YXQ2NCB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfZGV2
OwogICAgICAgIHVuc2lnbmVkIGNoYXIgX19wYWQwWzEwXTsKCgogICAgICAgIHVuc2lnbmVkIGxv
bmcgX19zdF9pbm87CgogICAgICAgIHVuc2lnbmVkIGludCBzdF9tb2RlOwogICAgICAgIHVuc2ln
bmVkIGludCBzdF9ubGluazsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF91aWQ7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzdF9naWQ7CgogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X3JkZXY7CiAg
ICAgICAgdW5zaWduZWQgY2hhciBfX3BhZDNbMTBdOwoKICAgICAgICBsb25nIGxvbmcgc3Rfc2l6
ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2Jsa3NpemU7CgogICAgICAgIHVuc2lnbmVkIGxv
bmcgc3RfYmxvY2tzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX19wYWQ0OwoKICAgICAgICB1bnNp
Z25lZCBsb25nIHN0X2F0aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX19wYWQ1OwoKICAgICAg
ICB1bnNpZ25lZCBsb25nIHN0X210aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX19wYWQ2OwoK
ICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2N0aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX19w
YWQ3OwoKICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc3RfaW5vOwp9OwojIDcgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3N0YXQuaCIgMgojIDIxICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2luY2x1ZGUvbGludXgvY2FjaGUuaCIgMQojIDIyICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5j
bHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGlu
dXgvc3RkZGVmLmgiIDEKIyAyMyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgv
ZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3N0cmluZy5o
IiAxCgoKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3R5cGVz
LmgiIDEKIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9zdHJpbmcuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIiAxCiMg
MTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIiAyCgoKCgoK
ZXh0ZXJuIGNoYXIgKiBfX19zdHJ0b2s7CmV4dGVybiBjaGFyICogc3RycGJyayhjb25zdCBjaGFy
ICosY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKiBzdHJ0b2soY2hhciAqLGNvbnN0IGNoYXIg
Kik7CmV4dGVybiBjaGFyICogc3Ryc2VwKGNoYXIgKiosY29uc3QgY2hhciAqKTsKZXh0ZXJuIF9f
a2VybmVsX3NpemVfdCBzdHJzcG4oY29uc3QgY2hhciAqLGNvbnN0IGNoYXIgKik7CgoKCgoKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vc3RyaW5nLmgiIDEKCgoKCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA2ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vc3RyaW5nLmgiIDIKIyAzMyAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3N0cmluZy5oIgpzdGF0aWMgaW5saW5lIGNoYXIgKiBz
dHJjcHkoY2hhciAqIGRlc3QsY29uc3QgY2hhciAqc3JjKQp7CmludCBkMCwgZDEsIGQyOwpfX2Fz
bV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAiMTpcdGxvZHNiXG5cdCIKICAgICAgICAic3Rvc2Jc
blx0IgogICAgICAgICJ0ZXN0YiAlJWFsLCUlYWxcblx0IgogICAgICAgICJqbmUgMWIiCiAgICAg
ICAgOiAiPSZTIiAoZDApLCAiPSZEIiAoZDEpLCAiPSZhIiAoZDIpCiAgICAgICAgOiIwIiAoc3Jj
KSwiMSIgKGRlc3QpIDogIm1lbW9yeSIpOwpyZXR1cm4gZGVzdDsKfQoKCnN0YXRpYyBpbmxpbmUg
Y2hhciAqIHN0cm5jcHkoY2hhciAqIGRlc3QsY29uc3QgY2hhciAqc3JjLHNpemVfdCBjb3VudCkK
ewppbnQgZDAsIGQxLCBkMiwgZDM7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICIxOlx0
ZGVjbCAlMlxuXHQiCiAgICAgICAgImpzIDJmXG5cdCIKICAgICAgICAibG9kc2Jcblx0IgogICAg
ICAgICJzdG9zYlxuXHQiCiAgICAgICAgInRlc3RiICUlYWwsJSVhbFxuXHQiCiAgICAgICAgImpu
ZSAxYlxuXHQiCiAgICAgICAgInJlcFxuXHQiCiAgICAgICAgInN0b3NiXG4iCiAgICAgICAgIjI6
IgogICAgICAgIDogIj0mUyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mYyIgKGQyKSwgIj0mYSIgKGQz
KQogICAgICAgIDoiMCIgKHNyYyksIjEiIChkZXN0KSwiMiIgKGNvdW50KSA6ICJtZW1vcnkiKTsK
cmV0dXJuIGRlc3Q7Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIgKiBzdHJjYXQoY2hhciAqIGRlc3Qs
Y29uc3QgY2hhciAqIHNyYykKewppbnQgZDAsIGQxLCBkMiwgZDM7Cl9fYXNtX18gX192b2xhdGls
ZV9fKAogICAgICAgICJyZXBuZVxuXHQiCiAgICAgICAgInNjYXNiXG5cdCIKICAgICAgICAiZGVj
bCAlMVxuIgogICAgICAgICIxOlx0bG9kc2Jcblx0IgogICAgICAgICJzdG9zYlxuXHQiCiAgICAg
ICAgInRlc3RiICUlYWwsJSVhbFxuXHQiCiAgICAgICAgImpuZSAxYiIKICAgICAgICA6ICI9JlMi
IChkMCksICI9JkQiIChkMSksICI9JmEiIChkMiksICI9JmMiIChkMykKICAgICAgICA6ICIwIiAo
c3JjKSwgIjEiIChkZXN0KSwgIjIiICgwKSwgIjMiICgweGZmZmZmZmZmKToibWVtb3J5Iik7CnJl
dHVybiBkZXN0Owp9CgoKc3RhdGljIGlubGluZSBjaGFyICogc3RybmNhdChjaGFyICogZGVzdCxj
b25zdCBjaGFyICogc3JjLHNpemVfdCBjb3VudCkKewppbnQgZDAsIGQxLCBkMiwgZDM7Cl9fYXNt
X18gX192b2xhdGlsZV9fKAogICAgICAgICJyZXBuZVxuXHQiCiAgICAgICAgInNjYXNiXG5cdCIK
ICAgICAgICAiZGVjbCAlMVxuXHQiCiAgICAgICAgIm1vdmwgJTgsJTNcbiIKICAgICAgICAiMTpc
dGRlY2wgJTNcblx0IgogICAgICAgICJqcyAyZlxuXHQiCiAgICAgICAgImxvZHNiXG5cdCIKICAg
ICAgICAic3Rvc2Jcblx0IgogICAgICAgICJ0ZXN0YiAlJWFsLCUlYWxcblx0IgogICAgICAgICJq
bmUgMWJcbiIKICAgICAgICAiMjpcdHhvcmwgJTIsJTJcblx0IgogICAgICAgICJzdG9zYiIKICAg
ICAgICA6ICI9JlMiIChkMCksICI9JkQiIChkMSksICI9JmEiIChkMiksICI9JmMiIChkMykKICAg
ICAgICA6ICIwIiAoc3JjKSwiMSIgKGRlc3QpLCIyIiAoMCksIjMiICgweGZmZmZmZmZmKSwgImci
IChjb3VudCkKICAgICAgICA6ICJtZW1vcnkiKTsKcmV0dXJuIGRlc3Q7Cn0KCgpzdGF0aWMgaW5s
aW5lIGludCBzdHJjbXAoY29uc3QgY2hhciAqIGNzLGNvbnN0IGNoYXIgKiBjdCkKewppbnQgZDAs
IGQxOwpyZWdpc3RlciBpbnQgX19yZXM7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICIx
Olx0bG9kc2Jcblx0IgogICAgICAgICJzY2FzYlxuXHQiCiAgICAgICAgImpuZSAyZlxuXHQiCiAg
ICAgICAgInRlc3RiICUlYWwsJSVhbFxuXHQiCiAgICAgICAgImpuZSAxYlxuXHQiCiAgICAgICAg
InhvcmwgJSVlYXgsJSVlYXhcblx0IgogICAgICAgICJqbXAgM2ZcbiIKICAgICAgICAiMjpcdHNi
YmwgJSVlYXgsJSVlYXhcblx0IgogICAgICAgICJvcmIgJDEsJSVhbFxuIgogICAgICAgICIzOiIK
ICAgICAgICA6Ij1hIiAoX19yZXMpLCAiPSZTIiAoZDApLCAiPSZEIiAoZDEpCiAgICAgICAgICAg
ICAgICAgICAgIDoiMSIgKGNzKSwiMiIgKGN0KSk7CnJldHVybiBfX3JlczsKfQoKCnN0YXRpYyBp
bmxpbmUgaW50IHN0cm5jbXAoY29uc3QgY2hhciAqIGNzLGNvbnN0IGNoYXIgKiBjdCxzaXplX3Qg
Y291bnQpCnsKcmVnaXN0ZXIgaW50IF9fcmVzOwppbnQgZDAsIGQxLCBkMjsKX19hc21fXyBfX3Zv
bGF0aWxlX18oCiAgICAgICAgIjE6XHRkZWNsICUzXG5cdCIKICAgICAgICAianMgMmZcblx0Igog
ICAgICAgICJsb2RzYlxuXHQiCiAgICAgICAgInNjYXNiXG5cdCIKICAgICAgICAiam5lIDNmXG5c
dCIKICAgICAgICAidGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiXG4iCiAgICAg
ICAgIjI6XHR4b3JsICUlZWF4LCUlZWF4XG5cdCIKICAgICAgICAiam1wIDRmXG4iCiAgICAgICAg
IjM6XHRzYmJsICUlZWF4LCUlZWF4XG5cdCIKICAgICAgICAib3JiICQxLCUlYWxcbiIKICAgICAg
ICAiNDoiCiAgICAgICAgICAgICAgICAgICAgIDoiPWEiIChfX3JlcyksICI9JlMiIChkMCksICI9
JkQiIChkMSksICI9JmMiIChkMikKICAgICAgICAgICAgICAgICAgICAgOiIxIiAoY3MpLCIyIiAo
Y3QpLCIzIiAoY291bnQpKTsKcmV0dXJuIF9fcmVzOwp9CgoKc3RhdGljIGlubGluZSBjaGFyICog
c3RyY2hyKGNvbnN0IGNoYXIgKiBzLCBpbnQgYykKewppbnQgZDA7CnJlZ2lzdGVyIGNoYXIgKiBf
X3JlczsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgIm1vdmIgJSVhbCwlJWFoXG4iCiAg
ICAgICAgIjE6XHRsb2RzYlxuXHQiCiAgICAgICAgImNtcGIgJSVhaCwlJWFsXG5cdCIKICAgICAg
ICAiamUgMmZcblx0IgogICAgICAgICJ0ZXN0YiAlJWFsLCUlYWxcblx0IgogICAgICAgICJqbmUg
MWJcblx0IgogICAgICAgICJtb3ZsICQxLCUxXG4iCiAgICAgICAgIjI6XHRtb3ZsICUxLCUwXG5c
dCIKICAgICAgICAiZGVjbCAlMCIKICAgICAgICA6Ij1hIiAoX19yZXMpLCAiPSZTIiAoZDApIDog
IjEiIChzKSwiMCIgKGMpKTsKcmV0dXJuIF9fcmVzOwp9CgoKc3RhdGljIGlubGluZSBjaGFyICog
c3RycmNocihjb25zdCBjaGFyICogcywgaW50IGMpCnsKaW50IGQwLCBkMTsKcmVnaXN0ZXIgY2hh
ciAqIF9fcmVzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAibW92YiAlJWFsLCUlYWhc
biIKICAgICAgICAiMTpcdGxvZHNiXG5cdCIKICAgICAgICAiY21wYiAlJWFoLCUlYWxcblx0Igog
ICAgICAgICJqbmUgMmZcblx0IgogICAgICAgICJsZWFsIC0xKCUlZXNpKSwlMFxuIgogICAgICAg
ICIyOlx0dGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiIgogICAgICAgIDoiPWci
IChfX3JlcyksICI9JlMiIChkMCksICI9JmEiIChkMSkgOiIwIiAoMCksIjEiIChzKSwiMiIgKGMp
KTsKcmV0dXJuIF9fcmVzOwp9CgoKc3RhdGljIGlubGluZSBzaXplX3Qgc3RybGVuKGNvbnN0IGNo
YXIgKiBzKQp7CmludCBkMDsKcmVnaXN0ZXIgaW50IF9fcmVzOwpfX2FzbV9fIF9fdm9sYXRpbGVf
XygKICAgICAgICAicmVwbmVcblx0IgogICAgICAgICJzY2FzYlxuXHQiCiAgICAgICAgIm5vdGwg
JTBcblx0IgogICAgICAgICJkZWNsICUwIgogICAgICAgIDoiPWMiIChfX3JlcyksICI9JkQiIChk
MCkgOiIxIiAocyksImEiICgwKSwgIjAiICgweGZmZmZmZmZmKSk7CnJldHVybiBfX3JlczsKfQoK
c3RhdGljIGlubGluZSB2b2lkICogX19tZW1jcHkodm9pZCAqIHRvLCBjb25zdCB2b2lkICogZnJv
bSwgc2l6ZV90IG4pCnsKaW50IGQwLCBkMSwgZDI7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAg
ICAgICJyZXAgOyBtb3ZzbFxuXHQiCiAgICAgICAgInRlc3RiICQyLCViNFxuXHQiCiAgICAgICAg
ImplIDFmXG5cdCIKICAgICAgICAibW92c3dcbiIKICAgICAgICAiMTpcdHRlc3RiICQxLCViNFxu
XHQiCiAgICAgICAgImplIDJmXG5cdCIKICAgICAgICAibW92c2JcbiIKICAgICAgICAiMjoiCiAg
ICAgICAgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpLCAiPSZTIiAoZDIpCiAgICAgICAgOiIwIiAo
bi80KSwgInEiIChuKSwiMSIgKChsb25nKSB0byksIjIiICgobG9uZykgZnJvbSkKICAgICAgICA6
ICJtZW1vcnkiKTsKcmV0dXJuICh0byk7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgKiBfX2Nv
bnN0YW50X21lbWNweSh2b2lkICogdG8sIGNvbnN0IHZvaWQgKiBmcm9tLCBzaXplX3QgbikKewog
ICAgICAgIHN3aXRjaCAobikgewogICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAg
ICAgICAgICAgICAgICoodW5zaWduZWQgY2hhciAqKXRvID0gKihjb25zdCB1bnNpZ25lZCBjaGFy
ICopZnJvbTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgICAgICAg
ICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIHNob3J0ICopdG8g
PSAqKGNvbnN0IHVuc2lnbmVkIHNob3J0ICopZnJvbTsKICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRvOwogICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAgICAg
ICAqKHVuc2lnbmVkIHNob3J0ICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIHNob3J0ICopZnJvbTsK
ICAgICAgICAgICAgICAgICAgICAgICAgKigyKyh1bnNpZ25lZCBjaGFyICopdG8pID0gKigyKyhj
b25zdCB1bnNpZ25lZCBjaGFyICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0bzsKICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgKih1
bnNpZ25lZCBsb25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tOwogICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNlIDY6CiAgICAg
ICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgbG9uZyAqKXRvID0gKihjb25zdCB1bnNpZ25l
ZCBsb25nICopZnJvbTsKICAgICAgICAgICAgICAgICAgICAgICAgKigyKyh1bnNpZ25lZCBzaG9y
dCAqKXRvKSA9ICooMisoY29uc3QgdW5zaWduZWQgc2hvcnQgKilmcm9tKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAg
ICAgICAgICAgICAgICAqKHVuc2lnbmVkIGxvbmcgKil0byA9ICooY29uc3QgdW5zaWduZWQgbG9u
ZyAqKWZyb207CiAgICAgICAgICAgICAgICAgICAgICAgICooMSsodW5zaWduZWQgbG9uZyAqKXRv
KSA9ICooMSsoY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwogICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICAgICAg
ICAgICAgICAqKHVuc2lnbmVkIGxvbmcgKil0byA9ICooY29uc3QgdW5zaWduZWQgbG9uZyAqKWZy
b207CiAgICAgICAgICAgICAgICAgICAgICAgICooMSsodW5zaWduZWQgbG9uZyAqKXRvKSA9ICoo
MSsoY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICAq
KDIrKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDIrKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9t
KTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgICAgICAgICAgY2Fz
ZSAxNjoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBsb25nICopdG8gPSAqKGNv
bnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tOwogICAgICAgICAgICAgICAgICAgICAgICAqKDErKHVu
c2lnbmVkIGxvbmcgKil0bykgPSAqKDErKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgKigyKyh1bnNpZ25lZCBsb25nICopdG8pID0gKigyKyhjb25z
dCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICooMysodW5z
aWduZWQgbG9uZyAqKXRvKSA9ICooMysoY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwogICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNlIDIwOgog
ICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIGxvbmcgKil0byA9ICooY29uc3QgdW5z
aWduZWQgbG9uZyAqKWZyb207CiAgICAgICAgICAgICAgICAgICAgICAgICooMSsodW5zaWduZWQg
bG9uZyAqKXRvKSA9ICooMSsoY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwogICAgICAgICAg
ICAgICAgICAgICAgICAqKDIrKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDIrKGNvbnN0IHVuc2ln
bmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgKigzKyh1bnNpZ25lZCBs
b25nICopdG8pID0gKigzKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICooNCsodW5zaWduZWQgbG9uZyAqKXRvKSA9ICooNCsoY29uc3QgdW5zaWdu
ZWQgbG9uZyAqKWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAgICAg
ICAgfQoKCgoKCgoKewogICAgICAgIGludCBkMCwgZDEsIGQyOwogICAgICAgIHN3aXRjaCAobiAl
IDQpIHsKICAgICAgICAgICAgICAgIGNhc2UgMDogX19hc21fXyBfX3ZvbGF0aWxlX18oICJyZXAg
OyBtb3ZzbCIgIiIgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpLCAiPSZTIiAoZDIpIDogIjAiIChu
LzQpLCIxIiAoKGxvbmcpIHRvKSwiMiIgKChsb25nKSBmcm9tKSA6ICJtZW1vcnkiKTs7IHJldHVy
biB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMTogX19hc21fXyBfX3ZvbGF0aWxlX18oICJyZXAg
OyBtb3ZzbCIgIlxuXHRtb3ZzYiIgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpLCAiPSZTIiAoZDIp
IDogIjAiIChuLzQpLCIxIiAoKGxvbmcpIHRvKSwiMiIgKChsb25nKSBmcm9tKSA6ICJtZW1vcnki
KTs7IHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMjogX19hc21fXyBfX3ZvbGF0aWxl
X18oICJyZXAgOyBtb3ZzbCIgIlxuXHRtb3ZzdyIgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpLCAi
PSZTIiAoZDIpIDogIjAiIChuLzQpLCIxIiAoKGxvbmcpIHRvKSwiMiIgKChsb25nKSBmcm9tKSA6
ICJtZW1vcnkiKTs7IHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6IF9fYXNtX18g
X192b2xhdGlsZV9fKCAicmVwIDsgbW92c2wiICJcblx0bW92c3dcblx0bW92c2IiIDogIj0mYyIg
KGQwKSwgIj0mRCIgKGQxKSwgIj0mUyIgKGQyKSA6ICIwIiAobi80KSwiMSIgKChsb25nKSB0byks
IjIiICgobG9uZykgZnJvbSkgOiAibWVtb3J5Iik7OyByZXR1cm4gdG87CiAgICAgICAgfQp9CgoK
fQojIDMzNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3N0cmluZy5oIgpleHRl
cm4gdm9pZCBfX3N0cnVjdF9jcHlfYnVnICh2b2lkKTsKIyAzNDUgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9pbmNsdWRlL2FzbS9zdHJpbmcuaCIKc3RhdGljIGlubGluZSB2b2lkICogbWVtbW92ZSh2
b2lkICogZGVzdCxjb25zdCB2b2lkICogc3JjLCBzaXplX3QgbikKewppbnQgZDAsIGQxLCBkMjsK
aWYgKGRlc3Q8c3JjKQpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwXG5cdCIKICAg
ICAgICAibW92c2IiCiAgICAgICAgOiAiPSZjIiAoZDApLCAiPSZTIiAoZDEpLCAiPSZEIiAoZDIp
CiAgICAgICAgOiIwIiAobiksIjEiIChzcmMpLCIyIiAoZGVzdCkKICAgICAgICA6ICJtZW1vcnki
KTsKZWxzZQpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAic3RkXG5cdCIKICAgICAgICAi
cmVwXG5cdCIKICAgICAgICAibW92c2Jcblx0IgogICAgICAgICJjbGQiCiAgICAgICAgOiAiPSZj
IiAoZDApLCAiPSZTIiAoZDEpLCAiPSZEIiAoZDIpCiAgICAgICAgOiIwIiAobiksCiAgICAgICAg
ICIxIiAobi0xKyhjb25zdCBjaGFyICopc3JjKSwKICAgICAgICAgIjIiIChuLTErKGNoYXIgKilk
ZXN0KQogICAgICAgIDoibWVtb3J5Iik7CnJldHVybiBkZXN0Owp9CgoKCgpzdGF0aWMgaW5saW5l
IHZvaWQgKiBtZW1jaHIoY29uc3Qgdm9pZCAqIGNzLGludCBjLHNpemVfdCBjb3VudCkKewppbnQg
ZDA7CnJlZ2lzdGVyIHZvaWQgKiBfX3JlczsKaWYgKCFjb3VudCkKICAgICAgICByZXR1cm4gKCh2
b2lkICopMCk7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJyZXBuZVxuXHQiCiAgICAg
ICAgInNjYXNiXG5cdCIKICAgICAgICAiamUgMWZcblx0IgogICAgICAgICJtb3ZsICQxLCUwXG4i
CiAgICAgICAgIjE6XHRkZWNsICUwIgogICAgICAgIDoiPUQiIChfX3JlcyksICI9JmMiIChkMCkg
OiAiYSIgKGMpLCIwIiAoY3MpLCIxIiAoY291bnQpKTsKcmV0dXJuIF9fcmVzOwp9CgpzdGF0aWMg
aW5saW5lIHZvaWQgKiBfX21lbXNldF9nZW5lcmljKHZvaWQgKiBzLCBjaGFyIGMsc2l6ZV90IGNv
dW50KQp7CmludCBkMCwgZDE7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJyZXBcblx0
IgogICAgICAgICJzdG9zYiIKICAgICAgICA6ICI9JmMiIChkMCksICI9JkQiIChkMSkKICAgICAg
ICA6ImEiIChjKSwiMSIgKHMpLCIwIiAoY291bnQpCiAgICAgICAgOiJtZW1vcnkiKTsKcmV0dXJu
IHM7Cn0KIyA0MDggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9zdHJpbmcuaCIK
c3RhdGljIGlubGluZSB2b2lkICogX19jb25zdGFudF9jX21lbXNldCh2b2lkICogcywgdW5zaWdu
ZWQgbG9uZyBjLCBzaXplX3QgY291bnQpCnsKaW50IGQwLCBkMTsKX19hc21fXyBfX3ZvbGF0aWxl
X18oCiAgICAgICAgInJlcCA7IHN0b3NsXG5cdCIKICAgICAgICAidGVzdGIgJDIsJWIzXG5cdCIK
ICAgICAgICAiamUgMWZcblx0IgogICAgICAgICJzdG9zd1xuIgogICAgICAgICIxOlx0dGVzdGIg
JDEsJWIzXG5cdCIKICAgICAgICAiamUgMmZcblx0IgogICAgICAgICJzdG9zYlxuIgogICAgICAg
ICIyOiIKICAgICAgICA6ICI9JmMiIChkMCksICI9JkQiIChkMSkKICAgICAgICA6ImEiIChjKSwg
InEiIChjb3VudCksICIwIiAoY291bnQvNCksICIxIiAoKGxvbmcpIHMpCiAgICAgICAgOiJtZW1v
cnkiKTsKcmV0dXJuIChzKTsKfQoKCgpzdGF0aWMgaW5saW5lIHNpemVfdCBzdHJubGVuKGNvbnN0
IGNoYXIgKiBzLCBzaXplX3QgY291bnQpCnsKaW50IGQwOwpyZWdpc3RlciBpbnQgX19yZXM7Cl9f
YXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJtb3ZsICUyLCUwXG5cdCIKICAgICAgICAiam1w
IDJmXG4iCiAgICAgICAgIjE6XHRjbXBiICQwLCglMClcblx0IgogICAgICAgICJqZSAzZlxuXHQi
CiAgICAgICAgImluY2wgJTBcbiIKICAgICAgICAiMjpcdGRlY2wgJTFcblx0IgogICAgICAgICJj
bXBsICQtMSwlMVxuXHQiCiAgICAgICAgImpuZSAxYlxuIgogICAgICAgICIzOlx0c3VibCAlMiwl
MCIKICAgICAgICA6Ij1hIiAoX19yZXMpLCAiPSZkIiAoZDApCiAgICAgICAgOiJjIiAocyksIjEi
IChjb3VudCkpOwpyZXR1cm4gX19yZXM7Cn0KCgoKCmV4dGVybiBjaGFyICpzdHJzdHIoY29uc3Qg
Y2hhciAqY3MsIGNvbnN0IGNoYXIgKmN0KTsKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgKiBfX2Nv
bnN0YW50X2NfYW5kX2NvdW50X21lbXNldCh2b2lkICogcywgdW5zaWduZWQgbG9uZyBwYXR0ZXJu
LCBzaXplX3QgY291bnQpCnsKICAgICAgICBzd2l0Y2ggKGNvdW50KSB7CiAgICAgICAgICAgICAg
ICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzOwogICAgICAgICAgICAg
ICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIGNoYXIgKilzID0g
cGF0dGVybjsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHM7CiAgICAgICAgICAgICAg
ICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgc2hvcnQgKilzID0g
cGF0dGVybjsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHM7CiAgICAgICAgICAgICAg
ICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgc2hvcnQgKilzID0g
cGF0dGVybjsKICAgICAgICAgICAgICAgICAgICAgICAgKigyKyh1bnNpZ25lZCBjaGFyICopcykg
PSBwYXR0ZXJuOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gczsKICAgICAgICAgICAg
ICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBsb25nICopcyA9
IHBhdHRlcm47CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzOwogICAgICAgIH0KCgoK
CgoKCnsKICAgICAgICBpbnQgZDAsIGQxOwogICAgICAgIHN3aXRjaCAoY291bnQgJSA0KSB7CiAg
ICAgICAgICAgICAgICBjYXNlIDA6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgc3Rvc2wi
ICIiIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSA6ICJhIiAocGF0dGVybiksIjAiIChjb3VudC80
KSwiMSIgKChsb25nKSBzKSA6ICJtZW1vcnkiKTsgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBj
YXNlIDE6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgc3Rvc2wiICJcblx0c3Rvc2IiIDog
Ij0mYyIgKGQwKSwgIj0mRCIgKGQxKSA6ICJhIiAocGF0dGVybiksIjAiIChjb3VudC80KSwiMSIg
KChsb25nKSBzKSA6ICJtZW1vcnkiKTsgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBjYXNlIDI6
IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgc3Rvc2wiICJcblx0c3Rvc3ciIDogIj0mYyIg
KGQwKSwgIj0mRCIgKGQxKSA6ICJhIiAocGF0dGVybiksIjAiIChjb3VudC80KSwiMSIgKChsb25n
KSBzKSA6ICJtZW1vcnkiKTsgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBkZWZhdWx0OiBfX2Fz
bV9fIF9fdm9sYXRpbGVfXyggInJlcCA7IHN0b3NsIiAiXG5cdHN0b3N3XG5cdHN0b3NiIiA6ICI9
JmMiIChkMCksICI9JkQiIChkMSkgOiAiYSIgKHBhdHRlcm4pLCIwIiAoY291bnQvNCksIjEiICgo
bG9uZykgcykgOiAibWVtb3J5Iik7IHJldHVybiBzOwogICAgICAgIH0KfQoKCn0KIyA1MTUgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9zdHJpbmcuaCIKc3RhdGljIGlubGluZSB2
b2lkICogbWVtc2Nhbih2b2lkICogYWRkciwgaW50IGMsIHNpemVfdCBzaXplKQp7CiAgICAgICAg
aWYgKCFzaXplKQogICAgICAgICAgICAgICAgcmV0dXJuIGFkZHI7CiAgICAgICAgX19hc21fXygi
cmVwbno7IHNjYXNiXG5cdCIKICAgICAgICAgICAgICAgICJqbnogMWZcblx0IgogICAgICAgICAg
ICAgICAgImRlYyAlJWVkaVxuIgogICAgICAgICAgICAgICAgIjE6IgogICAgICAgICAgICAgICAg
OiAiPUQiIChhZGRyKSwgIj1jIiAoc2l6ZSkKICAgICAgICAgICAgICAgIDogIjAiIChhZGRyKSwg
IjEiIChzaXplKSwgImEiIChjKSk7CiAgICAgICAgcmV0dXJuIGFkZHI7Cn0KIyAyNiAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiIDIKIyA0NiAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiCmV4dGVybiBpbnQgc3RybmljbXAo
Y29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIF9fa2VybmVsX3NpemVfdCk7CiMgNzcgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIgpleHRlcm4gaW50IF9fYnVp
bHRpbl9tZW1jbXAoY29uc3Qgdm9pZCAqLGNvbnN0IHZvaWQgKixfX2tlcm5lbF9zaXplX3QpOwoj
IDI0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9mcy5oIiAyCgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMQojIDI2ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2luY2x1ZGUvYXNtL2JpdG9wcy5oIiAxCgoKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgOSAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2luY2x1ZGUvYXNtL2JpdG9wcy5oIiAyCiMgMzYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9p
bmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBzZXRfYml0KGludCBu
ciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygg
IiIKICAgICAgICAgICAgICAgICJidHNsICUxLCUwIgogICAgICAgICAgICAgICAgOiI9bSIgKCgq
KHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAobnIpKTsKfQoj
IDUzICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBf
X2lubGluZV9fIHZvaWQgX19zZXRfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsK
ICAgICAgICBfX2FzbV9fKAogICAgICAgICAgICAgICAgImJ0c2wgJTEsJTAiCiAgICAgICAgICAg
ICAgICA6Ij1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAgICAgIDoi
SXIiIChucikpOwp9CiMgNzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9iaXRv
cHMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBjbGVhcl9iaXQoaW50IG5yLCB2b2xhdGlsZSB2
b2lkICogYWRkcikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAiIgogICAgICAgICAg
ICAgICAgImJ0cmwgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAoKCoodm9sYXRpbGUgbG9u
ZyAqKSBhZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIiIChucikpOwp9CiMgOTAgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gdm9p
ZCBfX2NoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIF9f
YXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgImJ0Y2wgJTEsJTAiCiAgICAgICAg
ICAgICAgICA6Ij1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAgICAg
IDoiSXIiIChucikpOwp9CiMgMTA3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20v
Yml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgY2hhbmdlX2JpdChpbnQgbnIsIHZvbGF0
aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oICIiCiAgICAg
ICAgICAgICAgICAiYnRjbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPW0iICgoKih2b2xhdGls
ZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSk7Cn0KIyAxMjMgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5l
X18gaW50IHRlc3RfYW5kX3NldF9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewog
ICAgICAgIGludCBvbGRiaXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAiIgogICAg
ICAgICAgICAgICAgImJ0c2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoi
PXIiIChvbGRiaXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAg
ICAgICA6IklyIiAobnIpIDogIm1lbW9yeSIpOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KIyAx
NDMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9f
aW5saW5lX18gaW50IF9fdGVzdF9hbmRfc2V0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBh
ZGRyKQp7CiAgICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21fXygKICAgICAgICAgICAg
ICAgICJidHNsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAob2xk
Yml0KSwiPW0iICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJ
ciIgKG5yKSk7CiAgICAgICAgcmV0dXJuIG9sZGJpdDsKfQojIDE2MiAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgdGVzdF9h
bmRfY2xlYXJfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBpbnQg
b2xkYml0OwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIiIKICAgICAgICAgICAgICAg
ICJidHJsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAob2xkYml0
KSwiPW0iICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIg
KG5yKSA6ICJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMgMTgyICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIGlu
dCBfX3Rlc3RfYW5kX2NsZWFyX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAg
ICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21fXygKICAgICAgICAgICAgICAgICJidHJs
ICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAob2xkYml0KSwiPW0i
ICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSk7
CiAgICAgICAgcmV0dXJuIG9sZGJpdDsKfQoKCnN0YXRpYyBfX2lubGluZV9fIGludCBfX3Rlc3Rf
YW5kX2NoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIGlu
dCBvbGRiaXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAg
ImJ0Y2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChvbGRiaXQp
LCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAo
bnIpIDogIm1lbW9yeSIpOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KIyAyMTMgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50
IHRlc3RfYW5kX2NoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAg
ICAgIGludCBvbGRiaXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAiIgogICAgICAg
ICAgICAgICAgImJ0Y2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoiPXIi
IChvbGRiaXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAg
ICA6IklyIiAobnIpIDogIm1lbW9yeSIpOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KIyAyMzMg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5s
aW5lX18gaW50IGNvbnN0YW50X3Rlc3RfYml0KGludCBuciwgY29uc3Qgdm9sYXRpbGUgdm9pZCAq
IGFkZHIpCnsKICAgICAgICByZXR1cm4gKCgxVUwgPDwgKG5yICYgMzEpKSAmICgoKGNvbnN0IHZv
bGF0aWxlIHVuc2lnbmVkIGludCAqKSBhZGRyKVtuciA+PiA1XSkpICE9IDA7Cn0KCnN0YXRpYyBf
X2lubGluZV9fIGludCB2YXJpYWJsZV90ZXN0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBh
ZGRyKQp7CiAgICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o
CiAgICAgICAgICAgICAgICAiYnRsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAg
ICA6Ij1yIiAob2xkYml0KQogICAgICAgICAgICAgICAgOiJtIiAoKCoodm9sYXRpbGUgbG9uZyAq
KSBhZGRyKSksIklyIiAobnIpKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMgMjYyICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9f
IGludCBmaW5kX2ZpcnN0X3plcm9fYml0KHZvaWQgKiBhZGRyLCB1bnNpZ25lZCBzaXplKQp7CiAg
ICAgICAgaW50IGQwLCBkMSwgZDI7CiAgICAgICAgaW50IHJlczsKCiAgICAgICAgaWYgKCFzaXpl
KQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9f
KAogICAgICAgICAgICAgICAgIm1vdmwgJC0xLCUlZWF4XG5cdCIKICAgICAgICAgICAgICAgICJ4
b3JsICUlZWR4LCUlZWR4XG5cdCIKICAgICAgICAgICAgICAgICJyZXBlOyBzY2FzbFxuXHQiCiAg
ICAgICAgICAgICAgICAiamUgMWZcblx0IgogICAgICAgICAgICAgICAgInhvcmwgLTQoJSVlZGkp
LCUlZWF4XG5cdCIKICAgICAgICAgICAgICAgICJzdWJsICQ0LCUlZWRpXG5cdCIKICAgICAgICAg
ICAgICAgICJic2ZsICUlZWF4LCUlZWR4XG4iCiAgICAgICAgICAgICAgICAiMTpcdHN1YmwgJSVl
YngsJSVlZGlcblx0IgogICAgICAgICAgICAgICAgInNobGwgJDMsJSVlZGlcblx0IgogICAgICAg
ICAgICAgICAgImFkZGwgJSVlZGksJSVlZHgiCiAgICAgICAgICAgICAgICA6Ij1kIiAocmVzKSwg
Ij0mYyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mYSIgKGQyKQogICAgICAgICAgICAgICAgOiIxIiAo
KHNpemUgKyAzMSkgPj4gNSksICIyIiAoYWRkciksICJiIiAoYWRkcikpOwogICAgICAgIHJldHVy
biByZXM7Cn0KCgoKCgoKCnN0YXRpYyBfX2lubGluZV9fIGludCBmaW5kX25leHRfemVyb19iaXQg
KHZvaWQgKiBhZGRyLCBpbnQgc2l6ZSwgaW50IG9mZnNldCkKewogICAgICAgIHVuc2lnbmVkIGxv
bmcgKiBwID0gKCh1bnNpZ25lZCBsb25nICopIGFkZHIpICsgKG9mZnNldCA+PiA1KTsKICAgICAg
ICBpbnQgc2V0ID0gMCwgYml0ID0gb2Zmc2V0ICYgMzEsIHJlczsKCiAgICAgICAgaWYgKGJpdCkg
ewoKCgogICAgICAgICAgICAgICAgX19hc21fXygiYnNmbCAlMSwlMFxuXHQiCiAgICAgICAgICAg
ICAgICAgICAgICAgICJqbmUgMWZcblx0IgogICAgICAgICAgICAgICAgICAgICAgICAibW92bCAk
MzIsICUwXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIxOiIKICAgICAgICAgICAgICAgICAg
ICAgICAgOiAiPXIiIChzZXQpCiAgICAgICAgICAgICAgICAgICAgICAgIDogInIiICh+KCpwID4+
IGJpdCkpKTsKICAgICAgICAgICAgICAgIGlmIChzZXQgPCAoMzIgLSBiaXQpKQogICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gc2V0ICsgb2Zmc2V0OwogICAgICAgICAgICAgICAgc2V0ID0g
MzIgLSBiaXQ7CiAgICAgICAgICAgICAgICBwKys7CiAgICAgICAgfQoKCgogICAgICAgIHJlcyA9
IGZpbmRfZmlyc3RfemVyb19iaXQgKHAsIHNpemUgLSAzMiAqIChwIC0gKHVuc2lnbmVkIGxvbmcg
KikgYWRkcikpOwogICAgICAgIHJldHVybiAob2Zmc2V0ICsgc2V0ICsgcmVzKTsKfQoKCgoKCgoK
c3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBmZnoodW5zaWduZWQgbG9uZyB3b3JkKQp7
CiAgICAgICAgX19hc21fXygiYnNmbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPXIiICh3b3Jk
KQogICAgICAgICAgICAgICAgOiJyIiAofndvcmQpKTsKICAgICAgICByZXR1cm4gd29yZDsKfQoj
IDM0MyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMg
X19pbmxpbmVfXyBpbnQgZmZzKGludCB4KQp7CiAgICAgICAgaW50IHI7CgogICAgICAgIF9fYXNt
X18oImJzZmwgJTEsJTBcblx0IgogICAgICAgICAgICAgICAgImpueiAxZlxuXHQiCiAgICAgICAg
ICAgICAgICAibW92bCAkLTEsJTBcbiIKICAgICAgICAgICAgICAgICIxOiIgOiAiPXIiIChyKSA6
ICJnIiAoeCkpOwogICAgICAgIHJldHVybiByKzE7Cn0KIyAyNyAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2luY2x1ZGUvbGludXgvZnMuaCIgMgoKc3RydWN0IHBvbGxfdGFibGVfc3RydWN0OwojIDUw
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9mcy5oIgpzdHJ1Y3QgZmlsZXNf
c3RhdF9zdHJ1Y3QgewogICAgICAgIGludCBucl9maWxlczsKICAgICAgICBpbnQgbnJfZnJlZV9m
aWxlczsKICAgICAgICBpbnQgbWF4X2ZpbGVzOwp9OwpleHRlcm4gc3RydWN0IGZpbGVzX3N0YXRf
c3RydWN0IGZpbGVzX3N0YXQ7CgpzdHJ1Y3QgaW5vZGVzX3N0YXRfdCB7CiAgICAgICAgaW50IG5y
X2lub2RlczsKICAgICAgICBpbnQgbnJfdW51c2VkOwogICAgICAgIGludCBkdW1teVs1XTsKfTsK
ZXh0ZXJuIHN0cnVjdCBpbm9kZXNfc3RhdF90IGlub2Rlc19zdGF0OwoKZXh0ZXJuIGludCBsZWFz
ZXNfZW5hYmxlLCBkaXJfbm90aWZ5X2VuYWJsZSwgbGVhc2VfYnJlYWtfdGltZTsKIyAxOTggIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2ZzLmgiCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvbGludXgvbGlua2FnZS5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAyCiMgMzkgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9pbmNsdWRlL2FzbS9zZW1hcGhvcmUuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
aW5jbHVkZS9hc20vc3lzdGVtLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5j
bHVkZS9saW51eC9jb25maWcuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRl
L2FzbS9zeXN0ZW0uaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4
L2tlcm5lbC5oIiAxCiMgNiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3N5c3Rl
bS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvaW5pdC5oIiAx
CgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEK
IyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9pbml0LmgiIDIKIyA0OCAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvaW5pdC5oIgp0eXBlZGVmIGludCAo
KmluaXRjYWxsX3QpKHZvaWQpOwp0eXBlZGVmIHZvaWQgKCpleGl0Y2FsbF90KSh2b2lkKTsKCmV4
dGVybiBpbml0Y2FsbF90IF9faW5pdGNhbGxfc3RhcnQsIF9faW5pdGNhbGxfZW5kOwojIDYxICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9pbml0LmgiCnN0cnVjdCBrZXJuZWxf
cGFyYW0gewogICAgICAgIGNvbnN0IGNoYXIgKnN0cjsKICAgICAgICBpbnQgKCpzZXR1cF9mdW5j
KShjaGFyICopOwp9OwoKZXh0ZXJuIHN0cnVjdCBrZXJuZWxfcGFyYW0gX19zZXR1cF9zdGFydCwg
X19zZXR1cF9lbmQ7CiMgNyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3N5c3Rl
bS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3NlZ21lbnQuaCIg
MQojIDggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2JpdG9wcy5oIiAxCiMgMTEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2JpdG9wcy5oIgpzdGF0aWMgaW5saW5l
IGludCBnZW5lcmljX2ZmcyhpbnQgeCkKewogICAgICAgIGludCByID0gMTsKCiAgICAgICAgaWYg
KCF4KQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgaWYgKCEoeCAmIDB4ZmZmZikp
IHsKICAgICAgICAgICAgICAgIHggPj49IDE2OwogICAgICAgICAgICAgICAgciArPSAxNjsKICAg
ICAgICB9CiAgICAgICAgaWYgKCEoeCAmIDB4ZmYpKSB7CiAgICAgICAgICAgICAgICB4ID4+PSA4
OwogICAgICAgICAgICAgICAgciArPSA4OwogICAgICAgIH0KICAgICAgICBpZiAoISh4ICYgMHhm
KSkgewogICAgICAgICAgICAgICAgeCA+Pj0gNDsKICAgICAgICAgICAgICAgIHIgKz0gNDsKICAg
ICAgICB9CiAgICAgICAgaWYgKCEoeCAmIDMpKSB7CiAgICAgICAgICAgICAgICB4ID4+PSAyOwog
ICAgICAgICAgICAgICAgciArPSAyOwogICAgICAgIH0KICAgICAgICBpZiAoISh4ICYgMSkpIHsK
ICAgICAgICAgICAgICAgIHggPj49IDE7CiAgICAgICAgICAgICAgICByICs9IDE7CiAgICAgICAg
fQogICAgICAgIHJldHVybiByOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdl
bmVyaWNfaHdlaWdodDMyKHVuc2lnbmVkIGludCB3KQp7CiAgICAgICAgdW5zaWduZWQgaW50IHJl
cyA9ICh3ICYgMHg1NTU1NTU1NSkgKyAoKHcgPj4gMSkgJiAweDU1NTU1NTU1KTsKICAgICAgICBy
ZXMgPSAocmVzICYgMHgzMzMzMzMzMykgKyAoKHJlcyA+PiAyKSAmIDB4MzMzMzMzMzMpOwogICAg
ICAgIHJlcyA9IChyZXMgJiAweDBGMEYwRjBGKSArICgocmVzID4+IDQpICYgMHgwRjBGMEYwRik7
CiAgICAgICAgcmVzID0gKHJlcyAmIDB4MDBGRjAwRkYpICsgKChyZXMgPj4gOCkgJiAweDAwRkYw
MEZGKTsKICAgICAgICByZXR1cm4gKHJlcyAmIDB4MDAwMEZGRkYpICsgKChyZXMgPj4gMTYpICYg
MHgwMDAwRkZGRik7Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdlbmVyaWNfaHdlaWdo
dDE2KHVuc2lnbmVkIGludCB3KQp7CiAgICAgICAgdW5zaWduZWQgaW50IHJlcyA9ICh3ICYgMHg1
NTU1KSArICgodyA+PiAxKSAmIDB4NTU1NSk7CiAgICAgICAgcmVzID0gKHJlcyAmIDB4MzMzMykg
KyAoKHJlcyA+PiAyKSAmIDB4MzMzMyk7CiAgICAgICAgcmVzID0gKHJlcyAmIDB4MEYwRikgKyAo
KHJlcyA+PiA0KSAmIDB4MEYwRik7CiAgICAgICAgcmV0dXJuIChyZXMgJiAweDAwRkYpICsgKChy
ZXMgPj4gOCkgJiAweDAwRkYpOwp9CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBnZW5lcmlj
X2h3ZWlnaHQ4KHVuc2lnbmVkIGludCB3KQp7CiAgICAgICAgdW5zaWduZWQgaW50IHJlcyA9ICh3
ICYgMHg1NSkgKyAoKHcgPj4gMSkgJiAweDU1KTsKICAgICAgICByZXMgPSAocmVzICYgMHgzMykg
KyAoKHJlcyA+PiAyKSAmIDB4MzMpOwogICAgICAgIHJldHVybiAocmVzICYgMHgwRikgKyAoKHJl
cyA+PiA0KSAmIDB4MEYpOwp9CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2Fz
bS9iaXRvcHMuaCIgMQojIDcwICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9i
aXRvcHMuaCIgMgojIDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9zeXN0ZW0u
aCIgMgoKCgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7CmV4dGVybiB2b2lkIF9fc3dpdGNoX3RvKHN0cnVj
dCB0YXNrX3N0cnVjdCAqcHJldiwgc3RydWN0IHRhc2tfc3RydWN0ICpuZXh0KSBfX2F0dHJpYnV0
ZV9fKChyZWdwYXJtKDMpKSk7CiMgNjQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2Fz
bS9zeXN0ZW0uaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9nZXRfYmFzZShjaGFyICog
YWRkcikKewogICAgICAgIHVuc2lnbmVkIGxvbmcgX19iYXNlOwogICAgICAgIF9fYXNtX18oIm1v
dmIgJTMsJSVkaFxuXHQiCiAgICAgICAgICAgICAgICAibW92YiAlMiwlJWRsXG5cdCIKICAgICAg
ICAgICAgICAgICJzaGxsICQxNiwlJWVkeFxuXHQiCiAgICAgICAgICAgICAgICAibW92dyAlMSwl
JWR4IgogICAgICAgICAgICAgICAgOiI9JmQiIChfX2Jhc2UpCiAgICAgICAgICAgICAgICA6Im0i
ICgqKChhZGRyKSsyKSksCiAgICAgICAgICAgICAgICAgIm0iICgqKChhZGRyKSs0KSksCiAgICAg
ICAgICAgICAgICAgIm0iICgqKChhZGRyKSs3KSkpOwogICAgICAgIHJldHVybiBfX2Jhc2U7Cn0K
IyAxMzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIKc3RhdGlj
IGlubGluZSB1bnNpZ25lZCBsb25nIGdldF9saW1pdCh1bnNpZ25lZCBsb25nIHNlZ21lbnQpCnsK
ICAgICAgICB1bnNpZ25lZCBsb25nIF9fbGltaXQ7CiAgICAgICAgX19hc21fXygibHNsbCAlMSwl
MCIKICAgICAgICAgICAgICAgIDoiPXIiIChfX2xpbWl0KToiciIgKHNlZ21lbnQpKTsKICAgICAg
ICByZXR1cm4gX19saW1pdCsxOwp9CgoKCgoKCgpzdHJ1Y3QgX194Y2hnX2R1bW15IHsgdW5zaWdu
ZWQgbG9uZyBhWzEwMF07IH07CiMgMTU4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9h
c20vc3lzdGVtLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3NldF82NGJpdCAodW5zaWduZWQgbG9u
ZyBsb25nICogcHRyLAogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxvdywgdW5zaWduZWQg
aW50IGhpZ2gpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCiAgICAgICAgICAgICAg
ICAiXG4xOlx0IgogICAgICAgICAgICAgICAgIm1vdmwgKCUwKSwgJSVlYXhcblx0IgogICAgICAg
ICAgICAgICAgIm1vdmwgNCglMCksICUlZWR4XG5cdCIKICAgICAgICAgICAgICAgICJjbXB4Y2hn
OGIgKCUwKVxuXHQiCiAgICAgICAgICAgICAgICAiam56IDFiIgogICAgICAgICAgICAgICAgOgog
ICAgICAgICAgICAgICAgOiAiRCIocHRyKSwKICAgICAgICAgICAgICAgICAgICAgICAgImIiKGxv
dyksCiAgICAgICAgICAgICAgICAgICAgICAgICJjIihoaWdoKQogICAgICAgICAgICAgICAgOiAi
YXgiLCJkeCIsIm1lbW9yeSIpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgX19zZXRfNjRiaXRfY29u
c3RhbnQgKHVuc2lnbmVkIGxvbmcgbG9uZyAqcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlKQp7CiAgICAg
ICAgX19zZXRfNjRiaXQocHRyLCh1bnNpZ25lZCBpbnQpKHZhbHVlKSwgKHVuc2lnbmVkIGludCko
KHZhbHVlKT4+MzJVTEwpKTsKfQoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX19zZXRfNjRiaXRfdmFy
ICh1bnNpZ25lZCBsb25nIGxvbmcgKnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxvbmcgbG9uZyB2YWx1ZSkKewogICAgICAgIF9fc2V0XzY0Yml0KHB0ciwqKCgodW5zaWdu
ZWQgaW50KikmKHZhbHVlKSkrMCksICooKCh1bnNpZ25lZCBpbnQqKSYodmFsdWUpKSsxKSk7Cn0K
IyAyMDMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIKc3RhdGlj
IGlubGluZSB1bnNpZ25lZCBsb25nIF9feGNoZyh1bnNpZ25lZCBsb25nIHgsIHZvbGF0aWxlIHZv
aWQgKiBwdHIsIGludCBzaXplKQp7CiAgICAgICAgc3dpdGNoIChzaXplKSB7CiAgICAgICAgICAg
ICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9f
KCJ4Y2hnYiAlYjAsJTEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiI9cSIgKHgp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiJtIiAoKigoc3RydWN0IF9feGNoZ19k
dW1teSAqKShwdHIpKSksICIwIiAoeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
Im1lbW9yeSIpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
IGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInhj
aGd3ICV3MCwlMSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Ij1yIiAoeCkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Im0iICgqKChzdHJ1Y3QgX194Y2hnX2R1bW15
ICopKHB0cikpKSwgIjAiICh4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoibWVt
b3J5Iik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2Fz
ZSA0OgogICAgICAgICAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygieGNoZ2wg
JTAsJTEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiI9ciIgKHgpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiJtIiAoKigoc3RydWN0IF9feGNoZ19kdW1teSAqKShw
dHIpKSksICIwIiAoeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Im1lbW9yeSIp
OwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgcmV0dXJu
IHg7Cn0KIyAyMzcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIK
c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9fY21weGNoZyh2b2xhdGlsZSB2b2lkICpwdHIs
IHVuc2lnbmVkIGxvbmcgb2xkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxvbmcgbmV3LCBpbnQgc2l6ZSkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgcHJl
djsKICAgICAgICBzd2l0Y2ggKHNpemUpIHsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAg
ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIiAiY21weGNoZ2IgJWIxLCUyIgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiAiPWEiKHByZXYpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6ICJxIihuZXcpLCAibSIoKigoc3RydWN0IF9feGNoZ19kdW1teSAq
KShwdHIpKSksICIwIihvbGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
ICJtZW1vcnkiKTsKICAgICAgICAgICAgICAgIHJldHVybiBwcmV2OwogICAgICAgIGNhc2UgMjoK
ICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIiICJjbXB4Y2hndyAldzEsJTIi
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9YSIocHJldikKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogInEiKG5ldyksICJtIigqKChzdHJ1Y3Qg
X194Y2hnX2R1bW15ICopKHB0cikpKSwgIjAiKG9sZCkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogIm1lbW9yeSIpOwogICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7CiAg
ICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiIgImNt
cHhjaGdsICUxLCUyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPWEi
KHByZXYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJxIihuZXcpLCAi
bSIoKigoc3RydWN0IF9feGNoZ19kdW1teSAqKShwdHIpKSksICIwIihvbGQpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJtZW1vcnkiKTsKICAgICAgICAgICAgICAgIHJl
dHVybiBwcmV2OwogICAgICAgIH0KICAgICAgICByZXR1cm4gb2xkOwp9CiMgMzUwICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vc3lzdGVtLmgiCnZvaWQgZGlzYWJsZV9obHQodm9p
ZCk7CnZvaWQgZW5hYmxlX2hsdCh2b2lkKTsKCmludCBfX2F0dHJpYnV0ZV9fICgoX19zZWN0aW9u
X18gKCIudGV4dC5pbml0IikpKSBkbWlfc2Nhbl9tYWNoaW5lKHZvaWQpOwpleHRlcm4gdW5zaWdu
ZWQgbG9uZyBkbWlfYnJva2VuOwpleHRlcm4gaW50IGlzX3NvbnlfdmFpb19sYXB0b3A7CiMgNDAg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9zZW1hcGhvcmUuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMQojIDQxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vc2VtYXBob3JlLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC93YWl0LmgiIDEKIyA0MiAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2luY2x1ZGUvbGludXgvcndzZW0uaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
aW5jbHVkZS9saW51eC9yd3NlbS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRl
L2xpbnV4L2xpbmthZ2UuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9s
aW51eC9yd3NlbS5oIiAyCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9s
aW51eC9jb25maWcuaCIgMQojIDE3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51
eC9yd3NlbS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvdHlw
ZXMuaCIgMQojIDE4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9yd3NlbS5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgva2VybmVsLmgiIDEK
IyAxOSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvcndzZW0uaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMQojIDIwICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9yd3NlbS5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2luY2x1ZGUvYXNtL2F0b21pYy5oIiAxCiMgMjEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiIDIKCnN0cnVjdCByd19zZW1hcGhvcmU7CgoK
CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9yd3NlbS5oIiAxCiMgNDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9yd3NlbS5oIgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQojIDQyICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvaW5jbHVkZS9hc20vcndzZW0uaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDEKIyA0MyAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2luY2x1ZGUvYXNtL3J3c2VtLmgiIDIKCnN0cnVjdCByd3NlbV93YWl0ZXI7CgpleHRlcm4gc3Ry
dWN0IHJ3X3NlbWFwaG9yZSAqcndzZW1fZG93bl9yZWFkX2ZhaWxlZChzdHJ1Y3Qgcndfc2VtYXBo
b3JlICpzZW0pIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHN0cnVjdCByd19z
ZW1hcGhvcmUgKnJ3c2VtX2Rvd25fd3JpdGVfZmFpbGVkKHN0cnVjdCByd19zZW1hcGhvcmUgKnNl
bSkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gc3RydWN0IHJ3X3NlbWFwaG9y
ZSAqcndzZW1fd2FrZShzdHJ1Y3Qgcndfc2VtYXBob3JlICopIF9fYXR0cmlidXRlX18oKHJlZ3Bh
cm0oMykpKTsKCgoKCnN0cnVjdCByd19zZW1hcGhvcmUgewogICAgICAgIHNpZ25lZCBsb25nIGNv
dW50OwoKCgoKCgogICAgICAgIHNwaW5sb2NrX3Qgd2FpdF9sb2NrOwogICAgICAgIHN0cnVjdCBs
aXN0X2hlYWQgd2FpdF9saXN0OwoKCgp9OwojIDg0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5j
bHVkZS9hc20vcndzZW0uaCIKc3RhdGljIGlubGluZSB2b2lkIGluaXRfcndzZW0oc3RydWN0IHJ3
X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgc2VtLT5jb3VudCA9IDB4MDAwMDAwMDA7CiAgICAg
ICAgZG8geyB9IHdoaWxlKDApOwogICAgICAgIGRvIHsgKCZzZW0tPndhaXRfbGlzdCktPm5leHQg
PSAoJnNlbS0+d2FpdF9saXN0KTsgKCZzZW0tPndhaXRfbGlzdCktPnByZXYgPSAoJnNlbS0+d2Fp
dF9saXN0KTsgfSB3aGlsZSAoMCk7CgoKCn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX2Rvd25f
cmVhZChzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRp
bGVfXygKICAgICAgICAgICAgICAgICIjIGJlZ2lubmluZyBkb3duX3JlYWRcblx0IgoiIiAiICBp
bmNsICAgICAgKCUlZWF4KVxuXHQiCiAgICAgICAgICAgICAgICAiICBqcyAgICAgICAgMmZcblx0
IgogICAgICAgICAgICAgICAgIjE6XG5cdCIKICAgICAgICAgICAgICAgICIuc2VjdGlvbiAudGV4
dC5sb2NrLFwiYXhcIlxuIgogICAgICAgICAgICAgICAgIjI6XG5cdCIKICAgICAgICAgICAgICAg
ICIgIHB1c2hsICAgICAlJWVjeFxuXHQiCiAgICAgICAgICAgICAgICAiICBwdXNobCAgICAgJSVl
ZHhcblx0IgogICAgICAgICAgICAgICAgIiAgY2FsbCAgICAgIHJ3c2VtX2Rvd25fcmVhZF9mYWls
ZWRcblx0IgogICAgICAgICAgICAgICAgIiAgcG9wbCAgICAgICUlZWR4XG5cdCIKICAgICAgICAg
ICAgICAgICIgIHBvcGwgICAgICAlJWVjeFxuXHQiCiAgICAgICAgICAgICAgICAiICBqbXAgICAg
ICAgMWJcbiIKICAgICAgICAgICAgICAgICIucHJldmlvdXMiCiAgICAgICAgICAgICAgICAiIyBl
bmRpbmcgZG93bl9yZWFkXG5cdCIKICAgICAgICAgICAgICAgIDogIittIihzZW0tPmNvdW50KQog
ICAgICAgICAgICAgICAgOiAiYSIoc2VtKQogICAgICAgICAgICAgICAgOiAibWVtb3J5IiwgImNj
Iik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX2Rvd25fd3JpdGUoc3RydWN0IHJ3X3NlbWFw
aG9yZSAqc2VtKQp7CiAgICAgICAgaW50IHRtcDsKCiAgICAgICAgdG1wID0gKCgtMHgwMDAxMDAw
MCkgKyAweDAwMDAwMDAxKTsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAg
ICAgICAgICIjIGJlZ2lubmluZyBkb3duX3dyaXRlXG5cdCIKIiIgIiAgeGFkZCAgICAgICUwLCgl
JWVheClcblx0IgogICAgICAgICAgICAgICAgIiAgdGVzdGwgICAgICUwLCUwXG5cdCIKICAgICAg
ICAgICAgICAgICIgIGpueiAgICAgICAyZlxuXHQiCiAgICAgICAgICAgICAgICAiMTpcblx0Igog
ICAgICAgICAgICAgICAgIi5zZWN0aW9uIC50ZXh0LmxvY2ssXCJheFwiXG4iCiAgICAgICAgICAg
ICAgICAiMjpcblx0IgogICAgICAgICAgICAgICAgIiAgcHVzaGwgICAgICUlZWN4XG5cdCIKICAg
ICAgICAgICAgICAgICIgIGNhbGwgICAgICByd3NlbV9kb3duX3dyaXRlX2ZhaWxlZFxuXHQiCiAg
ICAgICAgICAgICAgICAiICBwb3BsICAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAg
am1wICAgICAgIDFiXG4iCiAgICAgICAgICAgICAgICAiLnByZXZpb3VzXG4iCiAgICAgICAgICAg
ICAgICAiIyBlbmRpbmcgZG93bl93cml0ZSIKICAgICAgICAgICAgICAgIDogIitkIih0bXApLCAi
K20iKHNlbS0+Y291bnQpCiAgICAgICAgICAgICAgICA6ICJhIihzZW0pCiAgICAgICAgICAgICAg
ICA6ICJtZW1vcnkiLCAiY2MiKTsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIF9fdXBfcmVhZChz
dHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBfX3MzMiB0bXAgPSAtMHgwMDAwMDAw
MTsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIjIGJlZ2lu
bmluZyBfX3VwX3JlYWRcblx0IgoiIiAiICB4YWRkICAgICAgJSVlZHgsKCUlZWF4KVxuXHQiCiAg
ICAgICAgICAgICAgICAiICBqcyAgICAgICAgMmZcblx0IgogICAgICAgICAgICAgICAgIjE6XG5c
dCIKICAgICAgICAgICAgICAgICIuc2VjdGlvbiAudGV4dC5sb2NrLFwiYXhcIlxuIgogICAgICAg
ICAgICAgICAgIjI6XG5cdCIKICAgICAgICAgICAgICAgICIgIGRlY3cgICAgICAlJWR4XG5cdCIK
ICAgICAgICAgICAgICAgICIgIGpueiAgICAgICAxYlxuXHQiCiAgICAgICAgICAgICAgICAiICBw
dXNobCAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgY2FsbCAgICAgIHJ3c2VtX3dh
a2Vcblx0IgogICAgICAgICAgICAgICAgIiAgcG9wbCAgICAgICUlZWN4XG5cdCIKICAgICAgICAg
ICAgICAgICIgIGptcCAgICAgICAxYlxuIgogICAgICAgICAgICAgICAgIi5wcmV2aW91c1xuIgog
ICAgICAgICAgICAgICAgIiMgZW5kaW5nIF9fdXBfcmVhZFxuIgogICAgICAgICAgICAgICAgOiAi
K20iKHNlbS0+Y291bnQpLCAiK2QiKHRtcCkKICAgICAgICAgICAgICAgIDogImEiKHNlbSkKICAg
ICAgICAgICAgICAgIDogIm1lbW9yeSIsICJjYyIpOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQg
X191cF93cml0ZShzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBfX2FzbV9fIF9f
dm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIjIGJlZ2lubmluZyBfX3VwX3dyaXRlXG5cdCIK
ICAgICAgICAgICAgICAgICIgIG1vdmwgICAgICAlMiwlJWVkeFxuXHQiCiIiICIgIHhhZGRsICAg
ICAlJWVkeCwoJSVlYXgpXG5cdCIKICAgICAgICAgICAgICAgICIgIGpueiAgICAgICAyZlxuXHQi
CiAgICAgICAgICAgICAgICAiMTpcblx0IgogICAgICAgICAgICAgICAgIi5zZWN0aW9uIC50ZXh0
LmxvY2ssXCJheFwiXG4iCiAgICAgICAgICAgICAgICAiMjpcblx0IgogICAgICAgICAgICAgICAg
IiAgZGVjdyAgICAgICUlZHhcblx0IgogICAgICAgICAgICAgICAgIiAgam56ICAgICAgIDFiXG5c
dCIKICAgICAgICAgICAgICAgICIgIHB1c2hsICAgICAlJWVjeFxuXHQiCiAgICAgICAgICAgICAg
ICAiICBjYWxsICAgICAgcndzZW1fd2FrZVxuXHQiCiAgICAgICAgICAgICAgICAiICBwb3BsICAg
ICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgam1wICAgICAgIDFiXG4iCiAgICAgICAg
ICAgICAgICAiLnByZXZpb3VzXG4iCiAgICAgICAgICAgICAgICAiIyBlbmRpbmcgX191cF93cml0
ZVxuIgogICAgICAgICAgICAgICAgOiAiK20iKHNlbS0+Y291bnQpCiAgICAgICAgICAgICAgICA6
ICJhIihzZW0pLCAiaSIoLSgoLTB4MDAwMTAwMDApICsgMHgwMDAwMDAwMSkpCiAgICAgICAgICAg
ICAgICA6ICJtZW1vcnkiLCAiY2MiLCAiZWR4Iik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBy
d3NlbV9hdG9taWNfYWRkKGludCBkZWx0YSwgc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAg
ICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiIiICJhZGRsICUxLCUwIgogICAgICAgICAgICAg
ICAgOiI9bSIoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDoiaXIiKGRlbHRhKSwgIm0iKHNl
bS0+Y291bnQpKTsKfQoKCgoKc3RhdGljIGlubGluZSBpbnQgcndzZW1fYXRvbWljX3VwZGF0ZShp
bnQgZGVsdGEsIHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIGludCB0bXAgPSBk
ZWx0YTsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiIiICJ4YWRkICUwLCglMikiCiAg
ICAgICAgICAgICAgICA6ICIrciIodG1wKSwgIj1tIihzZW0tPmNvdW50KQogICAgICAgICAgICAg
ICAgOiAiciIoc2VtKSwgIm0iKHNlbS0+Y291bnQpCiAgICAgICAgICAgICAgICA6ICJtZW1vcnki
KTsKCiAgICAgICAgcmV0dXJuIHRtcCtkZWx0YTsKfQojIDI4ICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvaW5jbHVkZS9saW51eC9yd3NlbS5oIiAyCiMgNDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9p
bmNsdWRlL2xpbnV4L3J3c2VtLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBkb3duX3JlYWQoc3RydWN0
IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOwogICAgICAgIF9fZG93bl9yZWFkKHNlbSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBkb3duX3dy
aXRlKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgX19kb3duX3dyaXRlKHNlbSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwp9CgoKCgpzdGF0aWMgaW5saW5l
IHZvaWQgdXBfcmVhZChzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgIF9fdXBfcmVhZChzZW0pOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKfQoKCgoKc3RhdGljIGlubGlu
ZSB2b2lkIHVwX3dyaXRlKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgIF9fdXBfd3JpdGUoc2VtKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwp9CiMgNDMgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9zZW1hcGhvcmUuaCIgMgoKc3RydWN0IHNlbWFw
aG9yZSB7CiAgICAgICAgYXRvbWljX3QgY291bnQ7CiAgICAgICAgaW50IHNsZWVwZXJzOwogICAg
ICAgIHdhaXRfcXVldWVfaGVhZF90IHdhaXQ7CgoKCn07CiMgNzMgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9pbmNsdWRlL2FzbS9zZW1hcGhvcmUuaCIKc3RhdGljIGlubGluZSB2b2lkIHNlbWFfaW5p
dCAoc3RydWN0IHNlbWFwaG9yZSAqc2VtLCBpbnQgdmFsKQp7CgoKCgoKCiAgICAgICAgKCgoJnNl
bS0+Y291bnQpLT5jb3VudGVyKSA9ICh2YWwpKTsKICAgICAgICBzZW0tPnNsZWVwZXJzID0gMDsK
ICAgICAgICBpbml0X3dhaXRxdWV1ZV9oZWFkKCZzZW0tPndhaXQpOwoKCgp9CgpzdGF0aWMgaW5s
aW5lIHZvaWQgaW5pdF9NVVRFWCAoc3RydWN0IHNlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgc2Vt
YV9pbml0KHNlbSwgMSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X01VVEVYX0xPQ0tFRCAo
c3RydWN0IHNlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgc2VtYV9pbml0KHNlbSwgMCk7Cn0KCiBf
X2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgdm9pZCBfX2Rvd25fZmFpbGVkKHZvaWQgKTsKIF9f
YXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBpbnQgX19kb3duX2ZhaWxlZF9pbnRlcnJ1cHRpYmxl
KHZvaWQgKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBpbnQgX19kb3duX2ZhaWxlZF90
cnlsb2NrKHZvaWQgKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2b2lkIF9fdXBfd2Fr
ZXVwKHZvaWQgKTsKCiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgdm9pZCBfX2Rvd24oc3Ry
dWN0IHNlbWFwaG9yZSAqIHNlbSk7CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgaW50IF9f
ZG93bl9pbnRlcnJ1cHRpYmxlKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0pOwogX19hdHRyaWJ1dGVf
XygocmVncGFybSgwKSkpIGludCBfX2Rvd25fdHJ5bG9jayhzdHJ1Y3Qgc2VtYXBob3JlICogc2Vt
KTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2b2lkIF9fdXAoc3RydWN0IHNlbWFwaG9y
ZSAqIHNlbSk7CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBkb3duKHN0cnVjdCBzZW1hcGhvcmUg
KiBzZW0pCnsKCgoKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAg
ICAiIyBhdG9taWMgZG93biBvcGVyYXRpb25cblx0IgogICAgICAgICAgICAgICAgIiIgImRlY2wg
JTBcblx0IgogICAgICAgICAgICAgICAgImpzIDJmXG4iCiAgICAgICAgICAgICAgICAiMTpcbiIK
ICAgICAgICAgICAgICAgICIuc2VjdGlvbiAudGV4dC5sb2NrLFwiYXhcIlxuIgogICAgICAgICAg
ICAgICAgIjI6XHRjYWxsIF9fZG93bl9mYWlsZWRcblx0IgogICAgICAgICAgICAgICAgImptcCAx
YlxuIgogICAgICAgICAgICAgICAgIi5wcmV2aW91cyIKICAgICAgICAgICAgICAgIDoiPW0iIChz
ZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiJjIiAoc2VtKQogICAgICAgICAgICAgICAgOiJt
ZW1vcnkiKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgaW50IGRvd25faW50ZXJydXB0aWJsZShzdHJ1
Y3Qgc2VtYXBob3JlICogc2VtKQp7CiAgICAgICAgaW50IHJlc3VsdDsKCgoKCgogICAgICAgIF9f
YXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiMgYXRvbWljIGludGVycnVwdGli
bGUgZG93biBvcGVyYXRpb25cblx0IgogICAgICAgICAgICAgICAgIiIgImRlY2wgJTFcblx0Igog
ICAgICAgICAgICAgICAgImpzIDJmXG5cdCIKICAgICAgICAgICAgICAgICJ4b3JsICUwLCUwXG4i
CiAgICAgICAgICAgICAgICAiMTpcbiIKICAgICAgICAgICAgICAgICIuc2VjdGlvbiAudGV4dC5s
b2NrLFwiYXhcIlxuIgogICAgICAgICAgICAgICAgIjI6XHRjYWxsIF9fZG93bl9mYWlsZWRfaW50
ZXJydXB0aWJsZVxuXHQiCiAgICAgICAgICAgICAgICAiam1wIDFiXG4iCiAgICAgICAgICAgICAg
ICAiLnByZXZpb3VzIgogICAgICAgICAgICAgICAgOiI9YSIgKHJlc3VsdCksICI9bSIgKHNlbS0+
Y291bnQpCiAgICAgICAgICAgICAgICA6ImMiIChzZW0pCiAgICAgICAgICAgICAgICA6Im1lbW9y
eSIpOwogICAgICAgIHJldHVybiByZXN1bHQ7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIGludCBkb3du
X3RyeWxvY2soc3RydWN0IHNlbWFwaG9yZSAqIHNlbSkKewogICAgICAgIGludCByZXN1bHQ7CgoK
CgoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIjIGF0b21p
YyBpbnRlcnJ1cHRpYmxlIGRvd24gb3BlcmF0aW9uXG5cdCIKICAgICAgICAgICAgICAgICIiICJk
ZWNsICUxXG5cdCIKICAgICAgICAgICAgICAgICJqcyAyZlxuXHQiCiAgICAgICAgICAgICAgICAi
eG9ybCAlMCwlMFxuIgogICAgICAgICAgICAgICAgIjE6XG4iCiAgICAgICAgICAgICAgICAiLnNl
Y3Rpb24gLnRleHQubG9jayxcImF4XCJcbiIKICAgICAgICAgICAgICAgICIyOlx0Y2FsbCBfX2Rv
d25fZmFpbGVkX3RyeWxvY2tcblx0IgogICAgICAgICAgICAgICAgImptcCAxYlxuIgogICAgICAg
ICAgICAgICAgIi5wcmV2aW91cyIKICAgICAgICAgICAgICAgIDoiPWEiIChyZXN1bHQpLCAiPW0i
IChzZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiJjIiAoc2VtKQogICAgICAgICAgICAgICAg
OiJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gcmVzdWx0Owp9CgoKCgoKCgpzdGF0aWMgaW5saW5l
IHZvaWQgdXAoc3RydWN0IHNlbWFwaG9yZSAqIHNlbSkKewoKCgogICAgICAgIF9fYXNtX18gX192
b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiMgYXRvbWljIHVwIG9wZXJhdGlvblxuXHQiCiAg
ICAgICAgICAgICAgICAiIiAiaW5jbCAlMFxuXHQiCiAgICAgICAgICAgICAgICAiamxlIDJmXG4i
CiAgICAgICAgICAgICAgICAiMTpcbiIKICAgICAgICAgICAgICAgICIuc2VjdGlvbiAudGV4dC5s
b2NrLFwiYXhcIlxuIgogICAgICAgICAgICAgICAgIjI6XHRjYWxsIF9fdXBfd2FrZXVwXG5cdCIK
ICAgICAgICAgICAgICAgICJqbXAgMWJcbiIKICAgICAgICAgICAgICAgICIucHJldmlvdXMiCiAg
ICAgICAgICAgICAgICA6Ij1tIiAoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDoiYyIgKHNl
bSkKICAgICAgICAgICAgICAgIDoibWVtb3J5Iik7Cn0KIyAxOTkgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5j
bHVkZS9hc20vYnl0ZW9yZGVyLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5j
bHVkZS9hc20vdHlwZXMuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2Fz
bS9ieXRlb3JkZXIuaCIgMgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUv
bGludXgvY29uZmlnLmgiIDEKIyAxMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNt
L2J5dGVvcmRlci5oIiAyCgoKc3RhdGljIF9faW5saW5lX18gX19jb25zdF9fIF9fdTMyIF9fX2Fy
Y2hfX3N3YWIzMihfX3UzMiB4KQp7CgogICAgICAgIF9fYXNtX18oImJzd2FwICUwIiA6ICI9ciIg
KHgpIDogIjAiICh4KSk7CgoKCgoKCgogICAgICAgIHJldHVybiB4Owp9CgpzdGF0aWMgX19pbmxp
bmVfXyBfX2NvbnN0X18gX191MTYgX19fYXJjaF9fc3dhYjE2KF9fdTE2IHgpCnsKICAgICAgICBf
X2FzbV9fKCJ4Y2hnYiAlYjAsJWgwIiA6ICI9cSIgKHgpIDogIjAiICh4KSk7IHJldHVybiB4OwoK
Cgp9CiMgNDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvbGl0dGxl
X2VuZGlhbi5oIiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2J5
dGVvcmRlci9saXR0bGVfZW5kaWFuLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1
ZGUvbGludXgvYnl0ZW9yZGVyL3N3YWIuaCIgMQojIDEzMSAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL3N3YWIuaCIKc3RhdGljIF9faW5saW5lX18gX19jb25z
dF9fIF9fdTE2IF9fZnN3YWIxNihfX3UxNiB4KQp7CiAgICAgICAgcmV0dXJuIF9fX2FyY2hfX3N3
YWIxNih4KTsKfQpzdGF0aWMgX19pbmxpbmVfXyBfX3UxNiBfX3N3YWIxNnAoX191MTYgKngpCnsK
ICAgICAgICByZXR1cm4gX19fYXJjaF9fc3dhYjE2KCooeCkpOwp9CnN0YXRpYyBfX2lubGluZV9f
IHZvaWQgX19zd2FiMTZzKF9fdTE2ICphZGRyKQp7CiAgICAgICAgZG8geyAqKGFkZHIpID0gX19f
YXJjaF9fc3dhYjE2KCooKGFkZHIpKSk7IH0gd2hpbGUgKDApOwp9CgpzdGF0aWMgX19pbmxpbmVf
XyBfX2NvbnN0X18gX191MzIgX19mc3dhYjMyKF9fdTMyIHgpCnsKICAgICAgICByZXR1cm4gX19f
YXJjaF9fc3dhYjMyKHgpOwp9CnN0YXRpYyBfX2lubGluZV9fIF9fdTMyIF9fc3dhYjMycChfX3Uz
MiAqeCkKewogICAgICAgIHJldHVybiBfX19hcmNoX19zd2FiMzIoKih4KSk7Cn0Kc3RhdGljIF9f
aW5saW5lX18gdm9pZCBfX3N3YWIzMnMoX191MzIgKmFkZHIpCnsKICAgICAgICBkbyB7ICooYWRk
cikgPSBfX19hcmNoX19zd2FiMzIoKigoYWRkcikpKTsgfSB3aGlsZSAoMCk7Cn0KCgpzdGF0aWMg
X19pbmxpbmVfXyBfX2NvbnN0X18gX191NjQgX19mc3dhYjY0KF9fdTY0IHgpCnsKCiAgICAgICAg
X191MzIgaCA9IHggPj4gMzI7CiAgICAgICAgX191MzIgbCA9IHggJiAoKDFVTEw8PDMyKS0xKTsK
ICAgICAgICByZXR1cm4gKCgoX191NjQpKF9fYnVpbHRpbl9jb25zdGFudF9wKChfX3UzMikobCkp
ID8gKHsgX191MzIgX194ID0gKChsKSk7ICgoX191MzIpKCAoKChfX3UzMikoX194KSAmIChfX3Uz
MikweDAwMDAwMGZmVUwpIDw8IDI0KSB8ICgoKF9fdTMyKShfX3gpICYgKF9fdTMyKTB4MDAwMGZm
MDBVTCkgPDwgOCkgfCAoKChfX3UzMikoX194KSAmIChfX3UzMikweDAwZmYwMDAwVUwpID4+IDgp
IHwgKCgoX191MzIpKF9feCkgJiAoX191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkgKSk7IH0pIDog
X19mc3dhYjMyKChsKSkpKSA8PCAzMikgfCAoKF9fdTY0KSgoX19idWlsdGluX2NvbnN0YW50X3Ao
KF9fdTMyKShoKSkgPyAoeyBfX3UzMiBfX3ggPSAoKGgpKTsgKChfX3UzMikoICgoKF9fdTMyKShf
X3gpICYgKF9fdTMyKTB4MDAwMDAwZmZVTCkgPDwgMjQpIHwgKCgoX191MzIpKF9feCkgJiAoX191
MzIpMHgwMDAwZmYwMFVMKSA8PCA4KSB8ICgoKF9fdTMyKShfX3gpICYgKF9fdTMyKTB4MDBmZjAw
MDBVTCkgPj4gOCkgfCAoKChfX3UzMikoX194KSAmIChfX3UzMikweGZmMDAwMDAwVUwpID4+IDI0
KSApKTsgfSkgOiBfX2Zzd2FiMzIoKGgpKSkpKTsKCgoKfQpzdGF0aWMgX19pbmxpbmVfXyBfX3U2
NCBfX3N3YWI2NHAoX191NjQgKngpCnsKICAgICAgICByZXR1cm4gKHsgX191NjQgX190bXAgPSAo
Kih4KSkgOyAoeyBfX3U2NCBfX3ggPSAoX190bXApOyAoKF9fdTY0KSggKF9fdTY0KSgoKF9fdTY0
KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAwMDBmZlVMTCkgPDwgNTYpIHwgKF9fdTY0KSgo
KF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAwZmYwMFVMTCkgPDwgNDApIHwgKF9f
dTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMGZmMDAwMFVMTCkgPDwgMjQp
IHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDBmZjAwMDAwMFVMTCkg
PDwgOCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwMDBmZjAwMDAwMDAw
VUxMKSA+PiA4KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDBmZjAwMDAw
MDAwMDBVTEwpID4+IDI0KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwZmYw
MDAwMDAwMDAwMDBVTEwpID4+IDQwKSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkw
eGZmMDAwMDAwMDAwMDAwMDBVTEwpID4+IDU2KSApKTsgfSk7IH0pOwp9CnN0YXRpYyBfX2lubGlu
ZV9fIHZvaWQgX19zd2FiNjRzKF9fdTY0ICphZGRyKQp7CiAgICAgICAgZG8geyAqKGFkZHIpID0g
KHsgX191NjQgX190bXAgPSAoKigoYWRkcikpKSA7ICh7IF9fdTY0IF9feCA9IChfX3RtcCk7ICgo
X191NjQpKCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwMDAwMDAwMDAwMGZm
VUxMKSA8PCA1NikgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwMDAwMDAw
MDBmZjAwVUxMKSA8PCA0MCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAw
MDAwMDAwZmYwMDAwVUxMKSA8PCAyNCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQp
MHgwMDAwMDAwMGZmMDAwMDAwVUxMKSA8PCA4KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChf
X3U2NCkweDAwMDAwMGZmMDAwMDAwMDBVTEwpID4+IDgpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gp
ICYgKF9fdTY0KTB4MDAwMGZmMDAwMDAwMDAwMFVMTCkgPj4gMjQpIHwgKF9fdTY0KSgoKF9fdTY0
KShfX3gpICYgKF9fdTY0KTB4MDBmZjAwMDAwMDAwMDAwMFVMTCkgPj4gNDApIHwgKF9fdTY0KSgo
KF9fdTY0KShfX3gpICYgKF9fdTY0KTB4ZmYwMDAwMDAwMDAwMDAwMFVMTCkgPj4gNTYpICkpOyB9
KTsgfSk7IH0gd2hpbGUgKDApOwp9CiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRl
L2xpbnV4L2J5dGVvcmRlci9saXR0bGVfZW5kaWFuLmgiIDIKIyA2NiAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvZ2VuZXJpYy5oIiAxCiMg
MTUwICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvZ2VuZXJp
Yy5oIgpleHRlcm4gX191MzIgbnRvaGwoX191MzIpOwpleHRlcm4gX191MzIgaHRvbmwoX191MzIp
OwoKCgoKZXh0ZXJuIHVuc2lnbmVkIHNob3J0IGludCBudG9ocyh1bnNpZ25lZCBzaG9ydCBpbnQp
OwpleHRlcm4gdW5zaWduZWQgc2hvcnQgaW50IGh0b25zKHVuc2lnbmVkIHNob3J0IGludCk7CiMg
NjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9saXR0bGVf
ZW5kaWFuLmgiIDIKIyA0NiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL2J5dGVv
cmRlci5oIiAyCiMgMjAwICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9mcy5o
IiAyCgpleHRlcm4gdm9pZCB1cGRhdGVfYXRpbWUgKHN0cnVjdCBpbm9kZSAqKTsKCgpleHRlcm4g
dm9pZCBidWZmZXJfaW5pdCh1bnNpZ25lZCBsb25nKTsKZXh0ZXJuIHZvaWQgaW5vZGVfaW5pdCh1
bnNpZ25lZCBsb25nKTsKZXh0ZXJuIHZvaWQgbW50X2luaXQodW5zaWduZWQgbG9uZyk7CiMgMjIx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9mcy5oIgplbnVtIGJoX3N0YXRl
X2JpdHMgewogICAgICAgIEJIX1VwdG9kYXRlLAogICAgICAgIEJIX0RpcnR5LAogICAgICAgIEJI
X0xvY2ssCiAgICAgICAgQkhfUmVxLAogICAgICAgIEJIX01hcHBlZCwKICAgICAgICBCSF9OZXcs
CiAgICAgICAgQkhfUHJvdGVjdGVkLAogICAgICAgIEJIX0pCRCwKICAgICAgICBCSF9Bc3luYywK
CiAgICAgICAgQkhfUHJpdmF0ZVN0YXJ0LAoKCn07CiMgMjQ4ICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvaW5jbHVkZS9saW51eC9mcy5oIgpzdHJ1Y3QgYnVmZmVyX2hlYWQgewoKICAgICAgICBzdHJ1
Y3QgYnVmZmVyX2hlYWQgKmJfbmV4dDsKICAgICAgICB1bnNpZ25lZCBsb25nIGJfYmxvY2tucjsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBiX3NpemU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgYl9s
aXN0OwogICAgICAgIGtkZXZfdCBiX2RldjsKCiAgICAgICAgYXRvbWljX3QgYl9jb3VudDsKICAg
ICAgICBrZGV2X3QgYl9yZGV2OwogICAgICAgIHVuc2lnbmVkIGxvbmcgYl9zdGF0ZTsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGJfZmx1c2h0aW1lOwoKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQg
KmJfbmV4dF9mcmVlOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYl9wcmV2X2ZyZWU7CiAg
ICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiX3RoaXNfcGFnZTsKICAgICAgICBzdHJ1Y3QgYnVm
ZmVyX2hlYWQgKmJfcmVxbmV4dDsKCiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqYl9wcHJl
djsKICAgICAgICBjaGFyICogYl9kYXRhOwogICAgICAgIHN0cnVjdCBwYWdlICpiX3BhZ2U7CiAg
ICAgICAgdm9pZCAoKmJfZW5kX2lvKShzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBpbnQgdXB0b2Rh
dGUpOwogICAgICAgIHZvaWQgKmJfcHJpdmF0ZTsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBiX3Jz
ZWN0b3I7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgYl93YWl0OwoKICAgICAgICBzdHJ1Y3Qg
aW5vZGUgKiBiX2lub2RlOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYl9pbm9kZV9idWZmZXJz
Owp9OwoKdHlwZWRlZiB2b2lkIChiaF9lbmRfaW9fdCkoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwg
aW50IHVwdG9kYXRlKTsKdm9pZCBpbml0X2J1ZmZlcihzdHJ1Y3QgYnVmZmVyX2hlYWQgKiwgYmhf
ZW5kX2lvX3QgKiwgdm9pZCAqKTsKIyAyOTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRl
L2xpbnV4L2ZzLmgiCmV4dGVybiB2b2lkIHNldF9iaF9wYWdlKHN0cnVjdCBidWZmZXJfaGVhZCAq
YmgsIHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7CgoKCgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3BpcGVfZnNfaS5oIiAxCgoKCgpzdHJ1
Y3QgcGlwZV9pbm9kZV9pbmZvIHsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0OwogICAg
ICAgIGNoYXIgKmJhc2U7CiAgICAgICAgdW5zaWduZWQgaW50IGxlbjsKICAgICAgICB1bnNpZ25l
ZCBpbnQgc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgaW50IHJlYWRlcnM7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHdyaXRlcnM7CiAgICAgICAgdW5zaWduZWQgaW50IHdhaXRpbmdfcmVhZGVyczsKICAg
ICAgICB1bnNpZ25lZCBpbnQgd2FpdGluZ193cml0ZXJzOwogICAgICAgIHVuc2lnbmVkIGludCBy
X2NvdW50ZXI7CiAgICAgICAgdW5zaWduZWQgaW50IHdfY291bnRlcjsKfTsKIyA0MiAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvcGlwZV9mc19pLmgiCnZvaWQgcGlwZV93YWl0
KHN0cnVjdCBpbm9kZSAqIGlub2RlKTsKCnN0cnVjdCBpbm9kZSogcGlwZV9uZXcoc3RydWN0IGlu
b2RlKiBpbm9kZSk7CiMgMzAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9m
cy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvbWluaXhfZnNf
aS5oIiAxCgoKCgoKCnN0cnVjdCBtaW5peF9pbm9kZV9pbmZvIHsKICAgICAgICB1bmlvbiB7CiAg
ICAgICAgICAgICAgICBfX3UxNiBpMV9kYXRhWzE2XTsKICAgICAgICAgICAgICAgIF9fdTMyIGky
X2RhdGFbMTZdOwogICAgICAgIH0gdTsKfTsKIyAzMDIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9p
bmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9s
aW51eC9leHQyX2ZzX2kuaCIgMQojIDIyICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9s
aW51eC9leHQyX2ZzX2kuaCIKc3RydWN0IGV4dDJfaW5vZGVfaW5mbyB7CiAgICAgICAgX191MzIg
aV9kYXRhWzE1XTsKICAgICAgICBfX3UzMiBpX2ZsYWdzOwogICAgICAgIF9fdTMyIGlfZmFkZHI7
CiAgICAgICAgX191OCBpX2ZyYWdfbm87CiAgICAgICAgX191OCBpX2ZyYWdfc2l6ZTsKICAgICAg
ICBfX3UxNiBpX29zeW5jOwogICAgICAgIF9fdTMyIGlfZmlsZV9hY2w7CiAgICAgICAgX191MzIg
aV9kaXJfYWNsOwogICAgICAgIF9fdTMyIGlfZHRpbWU7CiAgICAgICAgX191MzIgaV9ibG9ja19n
cm91cDsKICAgICAgICBfX3UzMiBpX25leHRfYWxsb2NfYmxvY2s7CiAgICAgICAgX191MzIgaV9u
ZXh0X2FsbG9jX2dvYWw7CiAgICAgICAgX191MzIgaV9wcmVhbGxvY19ibG9jazsKICAgICAgICBf
X3UzMiBpX3ByZWFsbG9jX2NvdW50OwogICAgICAgIF9fdTMyIGlfZGlyX3N0YXJ0X2xvb2t1cDsK
ICAgICAgICBpbnQgaV9uZXdfaW5vZGU6MTsKfTsKIyAzMDMgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVk
ZS9saW51eC9leHQzX2ZzX2kuaCIgMQojIDE5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVk
ZS9saW51eC9leHQzX2ZzX2kuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9s
aW51eC9yd3NlbS5oIiAxCiMgMjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4
L2V4dDNfZnNfaS5oIiAyCgoKCgpzdHJ1Y3QgZXh0M19pbm9kZV9pbmZvIHsKICAgICAgICBfX3Uz
MiBpX2RhdGFbMTVdOwogICAgICAgIF9fdTMyIGlfZmxhZ3M7CgoKCgoKCiAgICAgICAgX191MzIg
aV9maWxlX2FjbDsKICAgICAgICBfX3UzMiBpX2Rpcl9hY2w7CiAgICAgICAgX191MzIgaV9kdGlt
ZTsKICAgICAgICBfX3UzMiBpX2Jsb2NrX2dyb3VwOwogICAgICAgIF9fdTMyIGlfc3RhdGU7CiAg
ICAgICAgX191MzIgaV9uZXh0X2FsbG9jX2Jsb2NrOwogICAgICAgIF9fdTMyIGlfbmV4dF9hbGxv
Y19nb2FsOwoKCgoKICAgICAgICBfX3UzMiBpX2Rpcl9zdGFydF9sb29rdXA7CgogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgaV9vcnBoYW47CiMgNjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNs
dWRlL2xpbnV4L2V4dDNfZnNfaS5oIgogICAgICAgIGxvZmZfdCBpX2Rpc2tzaXplOwojIDc1ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9leHQzX2ZzX2kuaCIKICAgICAgICBz
dHJ1Y3Qgcndfc2VtYXBob3JlIHRydW5jYXRlX3NlbTsKfTsKIyAzMDQgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
aW5jbHVkZS9saW51eC9ocGZzX2ZzX2kuaCIgMQoKCgpzdHJ1Y3QgaHBmc19pbm9kZV9pbmZvIHsK
ICAgICAgICB1bnNpZ25lZCBsb25nIG1tdV9wcml2YXRlOwogICAgICAgIGlub190IGlfcGFyZW50
X2RpcjsKICAgICAgICB1bnNpZ25lZCBpX2RubzsKICAgICAgICB1bnNpZ25lZCBpX2Rwb3M7CiAg
ICAgICAgdW5zaWduZWQgaV9kc3ViZG5vOwogICAgICAgIHVuc2lnbmVkIGlfZmlsZV9zZWM7CiAg
ICAgICAgdW5zaWduZWQgaV9kaXNrX3NlYzsKICAgICAgICB1bnNpZ25lZCBpX25fc2VjczsKICAg
ICAgICB1bnNpZ25lZCBpX2VhX3NpemU7CiAgICAgICAgdW5zaWduZWQgaV9jb252IDogMjsKICAg
ICAgICB1bnNpZ25lZCBpX2VhX21vZGUgOiAxOwogICAgICAgIHVuc2lnbmVkIGlfZWFfdWlkIDog
MTsKICAgICAgICB1bnNpZ25lZCBpX2VhX2dpZCA6IDE7CiAgICAgICAgdW5zaWduZWQgaV9kaXJ0
eSA6IDE7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBpX3NlbTsKICAgICAgICBsb2ZmX3QgKipp
X3JkZGlyX29mZjsKfTsKIyAzMDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4
L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9udGZzX2Zz
X2kuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3R5cGVz
LmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9udGZzX2ZzX2ku
aCIgMgoKCnN0cnVjdCBudGZzX2F0dHJpYnV0ZTsKc3RydWN0IG50ZnNfc2JfaW5mbzsKCgoKCnR5
cGVkZWYgdTggbnRmc191ODsKdHlwZWRlZiB1MTYgbnRmc191MTY7CnR5cGVkZWYgdTMyIG50ZnNf
dTMyOwp0eXBlZGVmIHU2NCBudGZzX3U2NDsKdHlwZWRlZiBzOCBudGZzX3M4Owp0eXBlZGVmIHMx
NiBudGZzX3MxNjsKdHlwZWRlZiBzMzIgbnRmc19zMzI7CnR5cGVkZWYgczY0IG50ZnNfczY0OwoK
CgoKdHlwZWRlZiBfX2tlcm5lbF9tb2RlX3QgbnRtb2RlX3Q7CgoKCnR5cGVkZWYgdWlkX3QgbnRm
c191aWRfdDsKCgoKdHlwZWRlZiBnaWRfdCBudGZzX2dpZF90OwoKCgp0eXBlZGVmIF9fa2VybmVs
X3NpemVfdCBudGZzX3NpemVfdDsKCgoKdHlwZWRlZiBfX2tlcm5lbF90aW1lX3QgbnRmc190aW1l
X3Q7CgoKCgoKdHlwZWRlZiB1MTYgbnRmc193Y2hhcl90OwoKCgoKdHlwZWRlZiBzNjQgbnRmc19v
ZmZzZXRfdDsKCgoKCnR5cGVkZWYgdTY0IG50ZnNfdGltZTY0X3Q7CiMgNjkgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L250ZnNfZnNfaS5oIgp0eXBlZGVmIHMzMiBudGZzX2Ns
dXN0ZXJfdDsKCgoKc3RydWN0IG50ZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgc3RydWN0IG50ZnNf
c2JfaW5mbyAqdm9sOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9udW1iZXI7CiAgICAgICAgX191
MTYgc2VxdWVuY2VfbnVtYmVyOwogICAgICAgIHVuc2lnbmVkIGNoYXIgKmF0dHI7CiAgICAgICAg
aW50IGF0dHJfY291bnQ7CiAgICAgICAgc3RydWN0IG50ZnNfYXR0cmlidXRlICphdHRyczsKICAg
ICAgICBpbnQgcmVjb3JkX2NvdW50OwogICAgICAgIGludCAqcmVjb3JkczsKCiAgICAgICAgdW5p
b24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHJlY29yZHNpemU7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBjbHVzdGVyc19wZXJfcmVj
b3JkOwogICAgICAgICAgICAgICAgfSBpbmRleDsKICAgICAgICB9IHU7Cn07CiMgMzA2ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvbGludXgvbXNkb3NfZnNfaS5oIiAxCgoKCgoKCgpzdHJ1Y3QgbXNk
b3NfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtbXVfcHJpdmF0ZTsKICAgICAg
ICBpbnQgaV9zdGFydDsKICAgICAgICBpbnQgaV9sb2dzdGFydDsKICAgICAgICBpbnQgaV9hdHRy
czsKICAgICAgICBpbnQgaV9jdGltZV9tczsKICAgICAgICBpbnQgaV9sb2NhdGlvbjsKICAgICAg
ICBzdHJ1Y3QgaW5vZGUgKmlfZmF0X2lub2RlOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaV9m
YXRfaGFzaDsKfTsKIyAzMDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2Zz
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC91bXNkb3NfZnNf
aS5oIiAxCgoKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L21z
ZG9zX2ZzX2kuaCIgMQojIDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3Vt
c2Rvc19mc19pLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9w
aXBlX2ZzX2kuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC91
bXNkb3NfZnNfaS5oIiAyCiMgMzkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4
L3Vtc2Rvc19mc19pLmgiCnN0cnVjdCBkaXJfbG9ja2luZ19pbmZvIHsKICAgICAgICB3YWl0X3F1
ZXVlX2hlYWRfdCBwOwogICAgICAgIHNob3J0IGludCBsb29raW5nOwogICAgICAgIHNob3J0IGlu
dCBjcmVhdGluZzsKCgoKICAgICAgICBsb25nIHBpZDsKCn07CgpzdHJ1Y3QgdW1zZG9zX2lub2Rl
X2luZm8gewogICAgICAgIHN0cnVjdCBtc2Rvc19pbm9kZV9pbmZvIG1zZG9zX2luZm87CiAgICAg
ICAgc3RydWN0IGRpcl9sb2NraW5nX2luZm8gZGlyX2luZm87CiAgICAgICAgaW50IGlfcGF0Y2hl
ZDsKICAgICAgICBpbnQgaV9pc19obGluazsKICAgICAgICBvZmZfdCBwb3M7Cn07CiMgMzA4ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvaXNvX2ZzX2kuaCIgMQoKCgplbnVtIGlzb2ZzX2Zp
bGVfZm9ybWF0IHsKICAgICAgICBpc29mc19maWxlX25vcm1hbCA9IDAsCiAgICAgICAgaXNvZnNf
ZmlsZV9zcGFyc2UgPSAxLAogICAgICAgIGlzb2ZzX2ZpbGVfY29tcHJlc3NlZCA9IDIsCn07CgoK
CgpzdHJ1Y3QgaXNvX2lub2RlX2luZm8gewogICAgICAgIHVuc2lnbmVkIGludCBpX2ZpcnN0X2V4
dGVudDsKICAgICAgICB1bnNpZ25lZCBjaGFyIGlfZmlsZV9mb3JtYXQ7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciBpX2Zvcm1hdF9wYXJtWzNdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9uZXh0X3Nl
Y3Rpb25faW5vOwogICAgICAgIG9mZl90IGlfc2VjdGlvbl9zaXplOwp9OwojIDMwOSAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvaW5jbHVkZS9hc20vdHlwZXMuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
aW5jbHVkZS9saW51eC9saXN0LmgiIDEKIyA2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVk
ZS9saW51eC9uZnNfZnNfaS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUv
bGludXgvbmZzLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgv
bmZzLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvc3VucnBjL21z
Z19wcm90LmgiIDEKIyAxNCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvc3Vu
cnBjL21zZ19wcm90LmgiCmVudW0gcnBjX2F1dGhfZmxhdm9yIHsKICAgICAgICBSUENfQVVUSF9O
VUxMID0gMCwKICAgICAgICBSUENfQVVUSF9VTklYID0gMSwKICAgICAgICBSUENfQVVUSF9TSE9S
VCA9IDIsCiAgICAgICAgUlBDX0FVVEhfREVTID0gMywKICAgICAgICBSUENfQVVUSF9LUkIgPSA0
LAp9OwoKZW51bSBycGNfbXNnX3R5cGUgewogICAgICAgIFJQQ19DQUxMID0gMCwKICAgICAgICBS
UENfUkVQTFkgPSAxCn07CgplbnVtIHJwY19yZXBseV9zdGF0IHsKICAgICAgICBSUENfTVNHX0FD
Q0VQVEVEID0gMCwKICAgICAgICBSUENfTVNHX0RFTklFRCA9IDEKfTsKCmVudW0gcnBjX2FjY2Vw
dF9zdGF0IHsKICAgICAgICBSUENfU1VDQ0VTUyA9IDAsCiAgICAgICAgUlBDX1BST0dfVU5BVkFJ
TCA9IDEsCiAgICAgICAgUlBDX1BST0dfTUlTTUFUQ0ggPSAyLAogICAgICAgIFJQQ19QUk9DX1VO
QVZBSUwgPSAzLAogICAgICAgIFJQQ19HQVJCQUdFX0FSR1MgPSA0LAogICAgICAgIFJQQ19TWVNU
RU1fRVJSID0gNQp9OwoKZW51bSBycGNfcmVqZWN0X3N0YXQgewogICAgICAgIFJQQ19NSVNNQVRD
SCA9IDAsCiAgICAgICAgUlBDX0FVVEhfRVJST1IgPSAxCn07CgplbnVtIHJwY19hdXRoX3N0YXQg
ewogICAgICAgIFJQQ19BVVRIX09LID0gMCwKICAgICAgICBSUENfQVVUSF9CQURDUkVEID0gMSwK
ICAgICAgICBSUENfQVVUSF9SRUpFQ1RFRENSRUQgPSAyLAogICAgICAgIFJQQ19BVVRIX0JBRFZF
UkYgPSAzLAogICAgICAgIFJQQ19BVVRIX1JFSkVDVEVEVkVSRiA9IDQsCiAgICAgICAgUlBDX0FV
VEhfVE9PV0VBSyA9IDUKfTsKIyAxMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGlu
dXgvbmZzLmgiIDIKIyA0MSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvbmZz
LmgiCiBlbnVtIG5mc19zdGF0IHsKICAgICAgICBORlNfT0sgPSAwLAogICAgICAgIE5GU0VSUl9Q
RVJNID0gMSwKICAgICAgICBORlNFUlJfTk9FTlQgPSAyLAogICAgICAgIE5GU0VSUl9JTyA9IDUs
CiAgICAgICAgTkZTRVJSX05YSU8gPSA2LAogICAgICAgIE5GU0VSUl9FQUdBSU4gPSAxMSwKICAg
ICAgICBORlNFUlJfQUNDRVMgPSAxMywKICAgICAgICBORlNFUlJfRVhJU1QgPSAxNywKICAgICAg
ICBORlNFUlJfWERFViA9IDE4LAogICAgICAgIE5GU0VSUl9OT0RFViA9IDE5LAogICAgICAgIE5G
U0VSUl9OT1RESVIgPSAyMCwKICAgICAgICBORlNFUlJfSVNESVIgPSAyMSwKICAgICAgICBORlNF
UlJfSU5WQUwgPSAyMiwKICAgICAgICBORlNFUlJfRkJJRyA9IDI3LAogICAgICAgIE5GU0VSUl9O
T1NQQyA9IDI4LAogICAgICAgIE5GU0VSUl9ST0ZTID0gMzAsCiAgICAgICAgTkZTRVJSX01MSU5L
ID0gMzEsCiAgICAgICAgTkZTRVJSX09QTk9UU1VQUCA9IDQ1LAogICAgICAgIE5GU0VSUl9OQU1F
VE9PTE9ORyA9IDYzLAogICAgICAgIE5GU0VSUl9OT1RFTVBUWSA9IDY2LAogICAgICAgIE5GU0VS
Ul9EUVVPVCA9IDY5LAogICAgICAgIE5GU0VSUl9TVEFMRSA9IDcwLAogICAgICAgIE5GU0VSUl9S
RU1PVEUgPSA3MSwKICAgICAgICBORlNFUlJfV0ZMVVNIID0gOTksCiAgICAgICAgTkZTRVJSX0JB
REhBTkRMRSA9IDEwMDAxLAogICAgICAgIE5GU0VSUl9OT1RfU1lOQyA9IDEwMDAyLAogICAgICAg
IE5GU0VSUl9CQURfQ09PS0lFID0gMTAwMDMsCiAgICAgICAgTkZTRVJSX05PVFNVUFAgPSAxMDAw
NCwKICAgICAgICBORlNFUlJfVE9PU01BTEwgPSAxMDAwNSwKICAgICAgICBORlNFUlJfU0VSVkVS
RkFVTFQgPSAxMDAwNiwKICAgICAgICBORlNFUlJfQkFEVFlQRSA9IDEwMDA3LAogICAgICAgIE5G
U0VSUl9KVUtFQk9YID0gMTAwMDgKIH07CgoKCmVudW0gbmZzX2Z0eXBlIHsKICAgICAgICBORk5P
TiA9IDAsCiAgICAgICAgTkZSRUcgPSAxLAogICAgICAgIE5GRElSID0gMiwKICAgICAgICBORkJM
SyA9IDMsCiAgICAgICAgTkZDSFIgPSA0LAogICAgICAgIE5GTE5LID0gNSwKICAgICAgICBORlNP
Q0sgPSA2LAogICAgICAgIE5GQkFEID0gNywKICAgICAgICBORkZJRk8gPSA4Cn07CgoKCgoKCnN0
cnVjdCBuZnNfZmggewogICAgICAgIHVuc2lnbmVkIGludCBzaXplOwogICAgICAgIHVuc2lnbmVk
IGludCBkYXRhWzY0IC8gc2l6ZW9mKGludCldOwp9OwojIDEwNyAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2luY2x1ZGUvbGludXgvbmZzLmgiCmVudW0gbmZzM19zdGFibGVfaG93IHsKICAgICAgICBO
RlNfVU5TVEFCTEUgPSAwLAogICAgICAgIE5GU19EQVRBX1NZTkMgPSAxLAogICAgICAgIE5GU19G
SUxFX1NZTkMgPSAyCn07CiMgNyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgv
bmZzX2ZzX2kuaCIgMgoKCgoKc3RydWN0IG5mc19pbm9kZV9pbmZvIHsKCgoKICAgICAgICBfX3U2
NCBmc2lkOwogICAgICAgIF9fdTY0IGZpbGVpZDsKCgoKCiAgICAgICAgc3RydWN0IG5mc19maCBm
aDsKCgoKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgZmxhZ3M7CiMgNDUgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiCiAgICAgICAgdW5zaWduZWQgbG9uZyBy
ZWFkX2NhY2hlX2ppZmZpZXM7CiAgICAgICAgX191NjQgcmVhZF9jYWNoZV9jdGltZTsKICAgICAg
ICBfX3U2NCByZWFkX2NhY2hlX210aW1lOwogICAgICAgIF9fdTY0IHJlYWRfY2FjaGVfaXNpemU7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBhdHRydGltZW87CiAgICAgICAgdW5zaWduZWQgbG9uZyBh
dHRydGltZW9fdGltZXN0YW1wOwoKCgoKCiAgICAgICAgX191MzIgY29va2lldmVyZlsyXTsKCgoK
CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCByZWFkOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg
ZGlydHk7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBjb21taXQ7CiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCB3cml0ZWJhY2s7CgogICAgICAgIHVuc2lnbmVkIGludCBucmVhZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuZGlydHksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbmNvbW1pdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBucGFnZXM7CgoK
ICAgICAgICBzdHJ1Y3QgaW5vZGUgKmhhc2hfbmV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqaGFzaF9wcmV2OwogICAgICAgIHVuc2lnbmVkIGxvbmcgbmV4dHNjYW47CgoKICAg
ICAgICBzdHJ1Y3QgcnBjX2NyZWQgKm1tX2NyZWQ7Cn07CiMgOTIgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiCnN0cnVjdCBuZnNfbG9ja19pbmZvIHsKICAg
ICAgICB1MzIgc3RhdGU7CiAgICAgICAgdTMyIGZsYWdzOwogICAgICAgIHN0cnVjdCBubG1faG9z
dCAqaG9zdDsKfTsKIyAzMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2Zz
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9zeXN2X2ZzX2ku
aCIgMQoKCgoKCgpzdHJ1Y3Qgc3lzdl9pbm9kZV9pbmZvIHsKICAgICAgICB1MzIgaV9kYXRhWzEw
KzErMSsxXTsKCgoKCiAgICAgICAgdTMyIGlfZGlyX3N0YXJ0X2xvb2t1cDsKfTsKIyAzMTEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9hZmZzX2ZzX2kuaCIgMQoKCgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2Eub3V0LmgiIDEKCgoKCgoKCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL2Eub3V0LmgiIDEKCgoKc3RydWN0IGV4ZWMKewog
IHVuc2lnbmVkIGxvbmcgYV9pbmZvOwogIHVuc2lnbmVkIGFfdGV4dDsKICB1bnNpZ25lZCBhX2Rh
dGE7CiAgdW5zaWduZWQgYV9ic3M7CiAgdW5zaWduZWQgYV9zeW1zOwogIHVuc2lnbmVkIGFfZW50
cnk7CiAgdW5zaWduZWQgYV90cnNpemU7CiAgdW5zaWduZWQgYV9kcnNpemU7Cn07CiMgOSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvYS5vdXQuaCIgMgoKCgoKZW51bSBtYWNo
aW5lX3R5cGUgewoKCgogIE1fT0xEU1VOMiA9IDAsCgoKCgogIE1fNjgwMTAgPSAxLAoKCgoKICBN
XzY4MDIwID0gMiwKCgoKCiAgTV9TUEFSQyA9IDMsCgoKICBNXzM4NiA9IDEwMCwKICBNX01JUFMx
ID0gMTUxLAogIE1fTUlQUzIgPSAxNTIKfTsKIyAxMzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9p
bmNsdWRlL2xpbnV4L2Eub3V0LmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUv
YXNtL3BhZ2UuaCIgMQojIDEzMiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgv
YS5vdXQuaCIgMgojIDE1NyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvYS5v
dXQuaCIKc3RydWN0IG5saXN0IHsKICB1bmlvbiB7CiAgICBjaGFyICpuX25hbWU7CiAgICBzdHJ1
Y3Qgbmxpc3QgKm5fbmV4dDsKICAgIGxvbmcgbl9zdHJ4OwogIH0gbl91bjsKICB1bnNpZ25lZCBj
aGFyIG5fdHlwZTsKICBjaGFyIG5fb3RoZXI7CiAgc2hvcnQgbl9kZXNjOwogIHVuc2lnbmVkIGxv
bmcgbl92YWx1ZTsKfTsKIyAyMzUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4
L2Eub3V0LmgiCnN0cnVjdCByZWxvY2F0aW9uX2luZm8KewoKICBpbnQgcl9hZGRyZXNzOwoKICB1
bnNpZ25lZCBpbnQgcl9zeW1ib2xudW06MjQ7CgoKCiAgdW5zaWduZWQgaW50IHJfcGNyZWw6MTsK
CgogIHVuc2lnbmVkIGludCByX2xlbmd0aDoyOwoKCgoKCgogIHVuc2lnbmVkIGludCByX2V4dGVy
bjoxOwoKCgoKCgoKICB1bnNpZ25lZCBpbnQgcl9wYWQ6NDsKCn07CiMgNSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvbGludXgvYWZmc19mc19pLmgiIDIKCgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3RpbWUuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9pbmNsdWRlL2FzbS9wYXJhbS5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2luY2x1ZGUvbGludXgvdGltZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1
ZGUvbGludXgvdHlwZXMuaCIgMQojIDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xp
bnV4L3RpbWUuaCIgMgoKCgpzdHJ1Y3QgdGltZXNwZWMgewogICAgICAgIHRpbWVfdCB0dl9zZWM7
CiAgICAgICAgbG9uZyB0dl9uc2VjOwp9OwojIDMxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5j
bHVkZS9saW51eC90aW1lLmgiCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcKdGltZXNw
ZWNfdG9famlmZmllcyhzdHJ1Y3QgdGltZXNwZWMgKnZhbHVlKQp7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBzZWMgPSB2YWx1ZS0+dHZfc2VjOwogICAgICAgIGxvbmcgbnNlYyA9IHZhbHVlLT50dl9u
c2VjOwoKICAgICAgICBpZiAoc2VjID49ICgoKH4wVUwgPj4gMSktMSkgLyAxMDApKQogICAgICAg
ICAgICAgICAgcmV0dXJuICgofjBVTCA+PiAxKS0xKTsKICAgICAgICBuc2VjICs9IDEwMDAwMDAw
MDBMIC8gMTAwIC0gMTsKICAgICAgICBuc2VjIC89IDEwMDAwMDAwMDBMIC8gMTAwOwogICAgICAg
IHJldHVybiAxMDAgKiBzZWMgKyBuc2VjOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkCmppZmZp
ZXNfdG9fdGltZXNwZWModW5zaWduZWQgbG9uZyBqaWZmaWVzLCBzdHJ1Y3QgdGltZXNwZWMgKnZh
bHVlKQp7CiAgICAgICAgdmFsdWUtPnR2X25zZWMgPSAoamlmZmllcyAlIDEwMCkgKiAoMTAwMDAw
MDAwMEwgLyAxMDApOwogICAgICAgIHZhbHVlLT50dl9zZWMgPSBqaWZmaWVzIC8gMTAwOwp9CiMg
NjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3RpbWUuaCIKc3RhdGljIGlu
bGluZSB1bnNpZ25lZCBsb25nCm1rdGltZSAodW5zaWduZWQgaW50IHllYXIsIHVuc2lnbmVkIGlu
dCBtb24sCiAgICAgICAgdW5zaWduZWQgaW50IGRheSwgdW5zaWduZWQgaW50IGhvdXIsCiAgICAg
ICAgdW5zaWduZWQgaW50IG1pbiwgdW5zaWduZWQgaW50IHNlYykKewogICAgICAgIGlmICgwID49
IChpbnQpIChtb24gLT0gMikpIHsKICAgICAgICAgICAgICAgIG1vbiArPSAxMjsKICAgICAgICAg
ICAgICAgIHllYXIgLT0gMTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAoKCgKICAgICAgICAg
ICAgICAgICh1bnNpZ25lZCBsb25nKSAoeWVhci80IC0geWVhci8xMDAgKyB5ZWFyLzQwMCArIDM2
Nyptb24vMTIgKyBkYXkpICsKICAgICAgICAgICAgICAgICAgICAgICAgeWVhciozNjUgLSA3MTk0
OTkKICAgICAgICAgICAgKSoyNCArIGhvdXIKICAgICAgICAgICkqNjAgKyBtaW4KICAgICAgICAp
KjYwICsgc2VjOwp9CgoKCgpzdHJ1Y3QgdGltZXZhbCB7CiAgICAgICAgdGltZV90IHR2X3NlYzsK
ICAgICAgICBzdXNlY29uZHNfdCB0dl91c2VjOwp9OwoKc3RydWN0IHRpbWV6b25lIHsKICAgICAg
ICBpbnQgdHpfbWludXRlc3dlc3Q7CiAgICAgICAgaW50IHR6X2RzdHRpbWU7Cn07CgoKCgpleHRl
cm4gdm9pZCBkb19nZXR0aW1lb2ZkYXkoc3RydWN0IHRpbWV2YWwgKnR2KTsKZXh0ZXJuIHZvaWQg
ZG9fc2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0dik7CmV4dGVybiB2b2lkIGdldF9mYXN0
X3RpbWUoc3RydWN0IHRpbWV2YWwgKnR2KTsKZXh0ZXJuIHZvaWQgKCpkb19nZXRfZmFzdF90aW1l
KShzdHJ1Y3QgdGltZXZhbCAqKTsKIyAxMjEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRl
L2xpbnV4L3RpbWUuaCIKc3RydWN0IGl0aW1lcnNwZWMgewogICAgICAgIHN0cnVjdCB0aW1lc3Bl
YyBpdF9pbnRlcnZhbDsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgaXRfdmFsdWU7Cn07CgpzdHJ1
Y3QgaXRpbWVydmFsIHsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBpdF9pbnRlcnZhbDsKICAgICAg
ICBzdHJ1Y3QgdGltZXZhbCBpdF92YWx1ZTsKfTsKIyA4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
aW5jbHVkZS9saW51eC9hZmZzX2ZzX2kuaCIgMgojIDE3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
aW5jbHVkZS9saW51eC9hZmZzX2ZzX2kuaCIKc3RydWN0IGFmZnNfZXh0X2tleSB7CiAgICAgICAg
dTMyIGV4dDsKICAgICAgICB1MzIga2V5Owp9OwoKCgoKc3RydWN0IGFmZnNfaW5vZGVfaW5mbyB7
CiAgICAgICAgdTMyIGlfb3BlbmNudDsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGlfbGlua19s
b2NrOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgaV9leHRfbG9jazsKCiAgICAgICAgdTMyIGlf
YmxrY250OwogICAgICAgIHUzMiBpX2V4dGNudDsKICAgICAgICB1MzIgKmlfbGM7CiAgICAgICAg
dTMyIGlfbGNfc2l6ZTsKICAgICAgICB1MzIgaV9sY19zaGlmdDsKICAgICAgICB1MzIgaV9sY19t
YXNrOwogICAgICAgIHN0cnVjdCBhZmZzX2V4dF9rZXkgKmlfYWM7CiAgICAgICAgdTMyIGlfZXh0
X2xhc3Q7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICppX2V4dF9iaDsKICAgICAgICB1bnNp
Z25lZCBsb25nIG1tdV9wcml2YXRlOwogICAgICAgIHUzMiBpX3Byb3RlY3Q7CiAgICAgICAgdTMy
IGlfbGFzdGFsbG9jOwogICAgICAgIGludCBpX3BhX2NudDsKIyA1MSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2luY2x1ZGUvbGludXgvYWZmc19mc19pLmgiCn07CiMgMzEyICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2luY2x1ZGUvbGludXgvdWZzX2ZzX2kuaCIgMQojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
aW5jbHVkZS9saW51eC91ZnNfZnNfaS5oIgpzdHJ1Y3QgdWZzX2lub2RlX2luZm8gewogICAgICAg
IHVuaW9uIHsKICAgICAgICAgICAgICAgIF9fdTMyIGlfZGF0YVsxNV07CiAgICAgICAgICAgICAg
ICBfX3U4IGlfc3ltbGlua1s0KjE1XTsKICAgICAgICB9IGlfdTE7CiAgICAgICAgX191MzIgaV9m
bGFnczsKICAgICAgICBfX3UzMiBpX2dlbjsKICAgICAgICBfX3UzMiBpX3NoYWRvdzsKICAgICAg
ICBfX3UzMiBpX3VudXNlZDE7CiAgICAgICAgX191MzIgaV91bnVzZWQyOwogICAgICAgIF9fdTMy
IGlfb2VmdGZsYWc7CiAgICAgICAgX191MTYgaV9vc3luYzsKICAgICAgICBfX3UzMiBpX2xhc3Rm
cmFnOwp9OwojIDMxMyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvZnMuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2Vmc19mc19pLmgiIDEK
IyAxMiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvZWZzX2ZzX2kuaCIKdHlw
ZWRlZiBpbnQzMl90IGVmc19ibG9ja190Owp0eXBlZGVmIHVpbnQzMl90IGVmc19pbm9fdDsKCgoK
CgoKdHlwZWRlZiB1bmlvbiBleHRlbnRfdSB7CiAgICAgICAgdW5zaWduZWQgY2hhciByYXdbOF07
CiAgICAgICAgc3RydWN0IGV4dGVudF9zIHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBl
eF9tYWdpYzo4OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGV4X2JuOjI0OwogICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IGV4X2xlbmd0aDo4OwogICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IGV4X29mZnNldDoyNDsKICAgICAgICB9IGNvb2tlZDsKfSBlZnNfZXh0ZW50OwoKdHlw
ZWRlZiBzdHJ1Y3QgZWRldnMgewogICAgICAgIHNob3J0IG9kZXY7CiAgICAgICAgdW5zaWduZWQg
aW50IG5kZXY7Cn0gZWZzX2RldnM7CgoKCgoKc3RydWN0IGVmc19kaW5vZGUgewogICAgICAgIHVf
c2hvcnQgZGlfbW9kZTsKICAgICAgICBzaG9ydCBkaV9ubGluazsKICAgICAgICB1X3Nob3J0IGRp
X3VpZDsKICAgICAgICB1X3Nob3J0IGRpX2dpZDsKICAgICAgICBpbnQzMl90IGRpX3NpemU7CiAg
ICAgICAgaW50MzJfdCBkaV9hdGltZTsKICAgICAgICBpbnQzMl90IGRpX210aW1lOwogICAgICAg
IGludDMyX3QgZGlfY3RpbWU7CiAgICAgICAgdWludDMyX3QgZGlfZ2VuOwogICAgICAgIHNob3J0
IGRpX251bWV4dGVudHM7CiAgICAgICAgdV9jaGFyIGRpX3ZlcnNpb247CiAgICAgICAgdV9jaGFy
IGRpX3NwYXJlOwogICAgICAgIHVuaW9uIGRpX2FkZHIgewogICAgICAgICAgICAgICAgZWZzX2V4
dGVudCBkaV9leHRlbnRzWzEyXTsKICAgICAgICAgICAgICAgIGVmc19kZXZzIGRpX2RldjsKICAg
ICAgICB9IGRpX3U7Cn07CgoKc3RydWN0IGVmc19pbm9kZV9pbmZvIHsKICAgICAgICBpbnQgbnVt
ZXh0ZW50czsKICAgICAgICBpbnQgbGFzdGV4dGVudDsKCiAgICAgICAgZWZzX2V4dGVudCBleHRl
bnRzWzEyXTsKfTsKIyAzMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2Zz
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9jb2RhX2ZzX2ku
aCIgMQojIDEyICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9jb2RhX2ZzX2ku
aCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMg
MTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2NvZGFfZnNfaS5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvbGlzdC5oIiAxCiMgMTQgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2NvZGFfZnNfaS5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvY29kYS5oIiAxCiMgMTA5ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9jb2RhLmgiCnR5cGVkZWYgdW5zaWduZWQgbG9u
ZyBsb25nIHVfcXVhZF90OwojIDE2NCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGlu
dXgvY29kYS5oIgpzdHJ1Y3QgdmVudXNfZGlyZW50IHsKICAgICAgICB1bnNpZ25lZCBsb25nIGRf
ZmlsZW5vOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRfcmVjbGVuOwogICAgICAgIHVuc2lnbmVk
IGNoYXIgZF90eXBlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZF9uYW1sZW47CiAgICAgICAgY2hh
ciBkX25hbWVbMjU1ICsgMV07Cn07CiMgMTk4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVk
ZS9saW51eC9jb2RhLmgiCnR5cGVkZWYgdV9sb25nIFZvbHVtZUlkOwp0eXBlZGVmIHVfbG9uZyBW
bm9kZUlkOwp0eXBlZGVmIHVfbG9uZyBVbmlxdWVfdDsKdHlwZWRlZiB1X2xvbmcgRmlsZVZlcnNp
b247CgoKCgp0eXBlZGVmIHN0cnVjdCBWaWNlRmlkIHsKICAgIFZvbHVtZUlkIFZvbHVtZTsKICAg
IFZub2RlSWQgVm5vZGU7CiAgICBVbmlxdWVfdCBVbmlxdWU7Cn0gVmljZUZpZDsKCgoKCnN0YXRp
YyBfX2lubGluZV9fIGlub190IGNvZGFfZjJpKHN0cnVjdCBWaWNlRmlkICpmaWQpCnsKICAgICAg
ICBpZiAoICEgZmlkICkKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIGlmIChmaWQt
PlZub2RlID09IDB4ZmZmZmZmZmUgfHwgZmlkLT5Wbm9kZSA9PSAweGZmZmZmZmZmKQogICAgICAg
ICAgICAgICAgcmV0dXJuICgoZmlkLT5Wb2x1bWUgPDwgMjApIHwgKGZpZC0+VW5pcXVlICYgMHhm
ZmZmZikpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHJldHVybiAoZmlkLT5VbmlxdWUg
KyAoZmlkLT5Wbm9kZTw8MTApICsgKGZpZC0+Vm9sdW1lPDwyMCkpOwp9CiMgMjMzICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9jb2RhLmgiCnR5cGVkZWYgdV9pbnQzMl90IHZ1
aWRfdDsKdHlwZWRlZiB1X2ludDMyX3QgdmdpZF90OwoKCgoKc3RydWN0IGNvZGFfY3JlZCB7CiAg
ICB2dWlkX3QgY3JfdWlkLCBjcl9ldWlkLCBjcl9zdWlkLCBjcl9mc3VpZDsKICAgIHZnaWRfdCBj
cl9ncm91cGlkLCBjcl9lZ2lkLCBjcl9zZ2lkLCBjcl9mc2dpZDsKfTsKCgoKCgoKCmVudW0gY29k
YV92dHlwZSB7IENfVk5PTiwgQ19WUkVHLCBDX1ZESVIsIENfVkJMSywgQ19WQ0hSLCBDX1ZMTkss
IENfVlNPQ0ssIENfVkZJRk8sIENfVkJBRCB9OwoKc3RydWN0IGNvZGFfdmF0dHIgewogICAgICAg
IGxvbmcgdmFfdHlwZTsKICAgICAgICB1X3Nob3J0IHZhX21vZGU7CiAgICAgICAgc2hvcnQgdmFf
bmxpbms7CiAgICAgICAgdnVpZF90IHZhX3VpZDsKICAgICAgICB2Z2lkX3QgdmFfZ2lkOwogICAg
ICAgIGxvbmcgdmFfZmlsZWlkOwogICAgICAgIHVfcXVhZF90IHZhX3NpemU7CiAgICAgICAgbG9u
ZyB2YV9ibG9ja3NpemU7CiAgICAgICAgc3RydWN0IHRpbWVzcGVjIHZhX2F0aW1lOwogICAgICAg
IHN0cnVjdCB0aW1lc3BlYyB2YV9tdGltZTsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdmFfY3Rp
bWU7CiAgICAgICAgdV9sb25nIHZhX2dlbjsKICAgICAgICB1X2xvbmcgdmFfZmxhZ3M7CiAgICAg
ICAgdV9xdWFkX3QgdmFfcmRldjsKICAgICAgICB1X3F1YWRfdCB2YV9ieXRlczsKICAgICAgICB1
X3F1YWRfdCB2YV9maWxlcmV2Owp9OwoKCgoKc3RydWN0IGNvZGFfc3RhdGZzIHsKICAgIGludDMy
X3QgZl9ibG9ja3M7CiAgICBpbnQzMl90IGZfYmZyZWU7CiAgICBpbnQzMl90IGZfYmF2YWlsOwog
ICAgaW50MzJfdCBmX2ZpbGVzOwogICAgaW50MzJfdCBmX2ZmcmVlOwp9OwojIDMzNyAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvY29kYS5oIgpzdHJ1Y3QgY29kYV9pbl9oZHIg
ewogICAgdW5zaWduZWQgbG9uZyBvcGNvZGU7CiAgICB1bnNpZ25lZCBsb25nIHVuaXF1ZTsKICAg
IHVfc2hvcnQgcGlkOwogICAgdV9zaG9ydCBwZ2lkOwogICAgdV9zaG9ydCBzaWQ7CiAgICBzdHJ1
Y3QgY29kYV9jcmVkIGNyZWQ7Cn07CgoKc3RydWN0IGNvZGFfb3V0X2hkciB7CiAgICB1bnNpZ25l
ZCBsb25nIG9wY29kZTsKICAgIHVuc2lnbmVkIGxvbmcgdW5pcXVlOwogICAgdW5zaWduZWQgbG9u
ZyByZXN1bHQ7Cn07CgoKc3RydWN0IGNvZGFfcm9vdF9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0
X2hkciBvaDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX3Jvb3RfaW4gewogICAg
c3RydWN0IGNvZGFfaW5faGRyIGluOwp9OwoKCnN0cnVjdCBjb2RhX29wZW5faW4gewogICAgc3Ry
dWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGZsYWdzOwp9OwoK
c3RydWN0IGNvZGFfb3Blbl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIHVf
cXVhZF90IGRldjsKICAgIGlub190IGlub2RlOwp9OwoKCgpzdHJ1Y3QgY29kYV9zdG9yZV9pbiB7
CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgZmxh
Z3M7Cn07CgpzdHJ1Y3QgY29kYV9zdG9yZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBv
dXQ7Cn07CgoKc3RydWN0IGNvZGFfcmVsZWFzZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIg
aWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9yZWxl
YXNlX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV9j
bG9zZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAg
ICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9jbG9zZV9vdXQgewogICAgc3RydWN0IGNvZGFf
b3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfaW9jdGxfaW4gewogICAgc3RydWN0IGNvZGFf
aW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGNtZDsKICAgIGludCBsZW47CiAg
ICBpbnQgcndmbGFnOwogICAgY2hhciAqZGF0YTsKfTsKCnN0cnVjdCBjb2RhX2lvY3RsX291dCB7
CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgaW50IGxlbjsKICAgIGNhZGRyX3QgZGF0
YTsKfTsKCgoKc3RydWN0IGNvZGFfZ2V0YXR0cl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIg
aWg7CiAgICBWaWNlRmlkIFZGaWQ7Cn07CgpzdHJ1Y3QgY29kYV9nZXRhdHRyX291dCB7CiAgICBz
dHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKfTsKCgoK
c3RydWN0IGNvZGFfc2V0YXR0cl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBW
aWNlRmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwp9OwoKc3RydWN0IGNvZGFf
c2V0YXR0cl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNv
ZGFfYWNjZXNzX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZp
ZDsKICAgIGludCBmbGFnczsKfTsKCnN0cnVjdCBjb2RhX2FjY2Vzc19vdXQgewogICAgc3RydWN0
IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKCgoKCgpzdHJ1Y3QgY29kYV9sb29rdXBfaW4gewogICAg
c3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IG5hbWU7CiAg
ICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9sb29rdXBfb3V0IHsKICAgIHN0cnVjdCBjb2Rh
X291dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgdnR5cGU7Cn07CgoKCnN0cnVj
dCBjb2RhX2NyZWF0ZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlk
IFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50IGV4Y2w7CiAgICBpbnQg
bW9kZTsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfY3JlYXRlX291dCB7CiAgICBzdHJ1
Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBWRmlkOwogICAgc3RydWN0IGNvZGFfdmF0
dHIgYXR0cjsKfTsKCgoKc3RydWN0IGNvZGFfcmVtb3ZlX2luIHsKICAgIHN0cnVjdCBjb2RhX2lu
X2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFf
cmVtb3ZlX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29k
YV9saW5rX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgc291cmNl
RmlkOwogICAgVmljZUZpZCBkZXN0RmlkOwogICAgaW50IHRuYW1lOwp9OwoKc3RydWN0IGNvZGFf
bGlua19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKCnN0cnVjdCBjb2Rh
X3JlbmFtZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIHNvdXJj
ZUZpZDsKICAgIGludCBzcmNuYW1lOwogICAgVmljZUZpZCBkZXN0RmlkOwogICAgaW50IGRlc3Ru
YW1lOwp9OwoKc3RydWN0IGNvZGFfcmVuYW1lX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRy
IG91dDsKfTsKCgpzdHJ1Y3QgY29kYV9ta2Rpcl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIg
aWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50
IG5hbWU7Cn07CgpzdHJ1Y3QgY29kYV9ta2Rpcl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hk
ciBvaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIHN0cnVjdCBjb2RhX3ZhdHRyIGF0dHI7Cn07CgoK
CnN0cnVjdCBjb2RhX3JtZGlyX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZp
Y2VGaWQgVkZpZDsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfcm1kaXJfb3V0IHsKICAg
IHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoKCnN0cnVjdCBjb2RhX3N5bWxpbmtfaW4gewog
ICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IHNyY25h
bWU7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50IHRuYW1lOwp9OwoKc3RydWN0
IGNvZGFfc3ltbGlua19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3Ry
dWN0IGNvZGFfcmVhZGxpbmtfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmlj
ZUZpZCBWRmlkOwp9OwoKc3RydWN0IGNvZGFfcmVhZGxpbmtfb3V0IHsKICAgIHN0cnVjdCBjb2Rh
X291dF9oZHIgb2g7CiAgICBpbnQgY291bnQ7CiAgICBjYWRkcl90IGRhdGE7Cn07CgoKCnN0cnVj
dCBjb2RhX2ZzeW5jX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQg
VkZpZDsKfTsKCnN0cnVjdCBjb2RhX2ZzeW5jX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRy
IG91dDsKfTsKCgpzdHJ1Y3QgY29kYV92Z2V0X2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBp
aDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX3ZnZXRfb3V0IHsKICAgIHN0cnVj
dCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgdnR5cGU7Cn07CiMg
NjE2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9jb2RhLmgiCnN0cnVjdCBj
b2RhX3B1cmdldXNlcl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIHN0cnVj
dCBjb2RhX2NyZWQgY3JlZDsKfTsKCgoKc3RydWN0IGNvZGFfemFwZmlsZV9vdXQgewogICAgc3Ry
dWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgQ29kYUZpZDsKfTsKCgoKc3RydWN0IGNv
ZGFfemFwZGlyX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBD
b2RhRmlkOwp9OwoKCgpzdHJ1Y3QgY29kYV96YXB2bm9kZV9vdXQgewogICAgc3RydWN0IGNvZGFf
b3V0X2hkciBvaDsKICAgIHN0cnVjdCBjb2RhX2NyZWQgY3JlZDsKICAgIFZpY2VGaWQgVkZpZDsK
fTsKCgoKc3RydWN0IGNvZGFfcHVyZ2VmaWRfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIg
b2g7CiAgICBWaWNlRmlkIENvZGFGaWQ7Cn07CgoKCnN0cnVjdCBjb2RhX3JlcGxhY2Vfb3V0IHsK
ICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIE5ld0ZpZDsKICAgIFZpY2VG
aWQgT2xkRmlkOwp9OwoKCnN0cnVjdCBjb2RhX29wZW5fYnlfZmRfaW4gewogICAgc3RydWN0IGNv
ZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGZsYWdzOwp9OwoKc3RydWN0
IGNvZGFfb3Blbl9ieV9mZF9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIGlu
dCBmZDsKCgogICAgc3RydWN0IGZpbGUgKmZoOwoKfTsKCgpzdHJ1Y3QgY29kYV9vcGVuX2J5X3Bh
dGhfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAg
aW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFfb3Blbl9ieV9wYXRoX291dCB7CiAgICBzdHJ1Y3Qg
Y29kYV9vdXRfaGRyIG9oOwogICAgICAgIGludCBwYXRoOwp9OwoKCnN0cnVjdCBjb2RhX3N0YXRm
c19pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaW47Cn07CgpzdHJ1Y3QgY29kYV9zdGF0ZnNf
b3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBzdHJ1Y3QgY29kYV9zdGF0ZnMg
c3RhdDsKfTsKIyA3MDMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2NvZGEu
aCIKdW5pb24gaW5wdXRBcmdzIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIHN0cnVj
dCBjb2RhX29wZW5faW4gY29kYV9vcGVuOwogICAgc3RydWN0IGNvZGFfc3RvcmVfaW4gY29kYV9z
dG9yZTsKICAgIHN0cnVjdCBjb2RhX3JlbGVhc2VfaW4gY29kYV9yZWxlYXNlOwogICAgc3RydWN0
IGNvZGFfY2xvc2VfaW4gY29kYV9jbG9zZTsKICAgIHN0cnVjdCBjb2RhX2lvY3RsX2luIGNvZGFf
aW9jdGw7CiAgICBzdHJ1Y3QgY29kYV9nZXRhdHRyX2luIGNvZGFfZ2V0YXR0cjsKICAgIHN0cnVj
dCBjb2RhX3NldGF0dHJfaW4gY29kYV9zZXRhdHRyOwogICAgc3RydWN0IGNvZGFfYWNjZXNzX2lu
IGNvZGFfYWNjZXNzOwogICAgc3RydWN0IGNvZGFfbG9va3VwX2luIGNvZGFfbG9va3VwOwogICAg
c3RydWN0IGNvZGFfY3JlYXRlX2luIGNvZGFfY3JlYXRlOwogICAgc3RydWN0IGNvZGFfcmVtb3Zl
X2luIGNvZGFfcmVtb3ZlOwogICAgc3RydWN0IGNvZGFfbGlua19pbiBjb2RhX2xpbms7CiAgICBz
dHJ1Y3QgY29kYV9yZW5hbWVfaW4gY29kYV9yZW5hbWU7CiAgICBzdHJ1Y3QgY29kYV9ta2Rpcl9p
biBjb2RhX21rZGlyOwogICAgc3RydWN0IGNvZGFfcm1kaXJfaW4gY29kYV9ybWRpcjsKICAgIHN0
cnVjdCBjb2RhX3N5bWxpbmtfaW4gY29kYV9zeW1saW5rOwogICAgc3RydWN0IGNvZGFfcmVhZGxp
bmtfaW4gY29kYV9yZWFkbGluazsKICAgIHN0cnVjdCBjb2RhX2ZzeW5jX2luIGNvZGFfZnN5bmM7
CiAgICBzdHJ1Y3QgY29kYV92Z2V0X2luIGNvZGFfdmdldDsKICAgIHN0cnVjdCBjb2RhX29wZW5f
YnlfZmRfaW4gY29kYV9vcGVuX2J5X2ZkOwogICAgc3RydWN0IGNvZGFfb3Blbl9ieV9wYXRoX2lu
IGNvZGFfb3Blbl9ieV9wYXRoOwogICAgc3RydWN0IGNvZGFfc3RhdGZzX2luIGNvZGFfc3RhdGZz
Owp9OwoKdW5pb24gb3V0cHV0QXJncyB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAg
c3RydWN0IGNvZGFfcm9vdF9vdXQgY29kYV9yb290OwogICAgc3RydWN0IGNvZGFfb3Blbl9vdXQg
Y29kYV9vcGVuOwogICAgc3RydWN0IGNvZGFfaW9jdGxfb3V0IGNvZGFfaW9jdGw7CiAgICBzdHJ1
Y3QgY29kYV9nZXRhdHRyX291dCBjb2RhX2dldGF0dHI7CiAgICBzdHJ1Y3QgY29kYV9sb29rdXBf
b3V0IGNvZGFfbG9va3VwOwogICAgc3RydWN0IGNvZGFfY3JlYXRlX291dCBjb2RhX2NyZWF0ZTsK
ICAgIHN0cnVjdCBjb2RhX21rZGlyX291dCBjb2RhX21rZGlyOwogICAgc3RydWN0IGNvZGFfcmVh
ZGxpbmtfb3V0IGNvZGFfcmVhZGxpbms7CiAgICBzdHJ1Y3QgY29kYV92Z2V0X291dCBjb2RhX3Zn
ZXQ7CiAgICBzdHJ1Y3QgY29kYV9wdXJnZXVzZXJfb3V0IGNvZGFfcHVyZ2V1c2VyOwogICAgc3Ry
dWN0IGNvZGFfemFwZmlsZV9vdXQgY29kYV96YXBmaWxlOwogICAgc3RydWN0IGNvZGFfemFwZGly
X291dCBjb2RhX3phcGRpcjsKICAgIHN0cnVjdCBjb2RhX3phcHZub2RlX291dCBjb2RhX3phcHZu
b2RlOwogICAgc3RydWN0IGNvZGFfcHVyZ2VmaWRfb3V0IGNvZGFfcHVyZ2VmaWQ7CiAgICBzdHJ1
Y3QgY29kYV9yZXBsYWNlX291dCBjb2RhX3JlcGxhY2U7CiAgICBzdHJ1Y3QgY29kYV9vcGVuX2J5
X2ZkX291dCBjb2RhX29wZW5fYnlfZmQ7CiAgICBzdHJ1Y3QgY29kYV9vcGVuX2J5X3BhdGhfb3V0
IGNvZGFfb3Blbl9ieV9wYXRoOwogICAgc3RydWN0IGNvZGFfc3RhdGZzX291dCBjb2RhX3N0YXRm
czsKfTsKCnVuaW9uIGNvZGFfZG93bmNhbGxzIHsKCgogICAgc3RydWN0IGNvZGFfcHVyZ2V1c2Vy
X291dCBwdXJnZXVzZXI7CiAgICBzdHJ1Y3QgY29kYV96YXBmaWxlX291dCB6YXBmaWxlOwogICAg
c3RydWN0IGNvZGFfemFwZGlyX291dCB6YXBkaXI7CiAgICBzdHJ1Y3QgY29kYV96YXB2bm9kZV9v
dXQgemFwdm5vZGU7CiAgICBzdHJ1Y3QgY29kYV9wdXJnZWZpZF9vdXQgcHVyZ2VmaWQ7CiAgICBz
dHJ1Y3QgY29kYV9yZXBsYWNlX291dCByZXBsYWNlOwp9OwoKCgoKCgoKc3RydWN0IFZpY2VJb2N0
bCB7CiAgICAgICAgY2FkZHJfdCBpbiwgb3V0OwogICAgICAgIHNob3J0IGluX3NpemU7CiAgICAg
ICAgc2hvcnQgb3V0X3NpemU7Cn07CgpzdHJ1Y3QgUGlvY3RsRGF0YSB7CiAgICAgICAgY29uc3Qg
Y2hhciAqcGF0aDsKICAgICAgICBpbnQgZm9sbG93OwogICAgICAgIHN0cnVjdCBWaWNlSW9jdGwg
dmk7Cn07CiMgNzk3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9jb2RhLmgi
CnN0cnVjdCBjb2RhX21vdW50X2RhdGEgewogICAgICAgIGludCB2ZXJzaW9uOwogICAgICAgIGlu
dCBmZDsKfTsKIyAxNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvY29kYV9m
c19pLmgiIDIKCgoKCnN0cnVjdCBjb2RhX2lub2RlX2luZm8gewogICAgICAgIHN0cnVjdCBWaWNl
RmlkIGNfZmlkOwogICAgICAgIHVfc2hvcnQgY19mbGFnczsKICAgICAgICBzdHJ1Y3QgbGlzdF9o
ZWFkIGNfY2lsaXN0OwogICAgICAgIHN0cnVjdCBmaWxlICpjX2NvbnRhaW5lcjsKICAgICAgICB1
bnNpZ25lZCBpbnQgY19jb250Y291bnQ7CiAgICAgICAgc3RydWN0IGNvZGFfY3JlZCBjX2NhY2hl
ZF9jcmVkOwogICAgICAgIHVuc2lnbmVkIGludCBjX2NhY2hlZF9wZXJtOwp9OwoKCgoKCgoKaW50
IGNvZGFfY25vZGVfbWFrZShzdHJ1Y3QgaW5vZGUgKiosIHN0cnVjdCBWaWNlRmlkICosIHN0cnVj
dCBzdXBlcl9ibG9jayAqKTsKaW50IGNvZGFfY25vZGVfbWFrZWN0bChzdHJ1Y3QgaW5vZGUgKipp
bm9kZSwgc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CnN0cnVjdCBpbm9kZSAqY29kYV9maWRfdG9f
aW5vZGUoVmljZUZpZCAqZmlkLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKdm9pZCBjb2RhX3Jl
cGxhY2VfZmlkKHN0cnVjdCBpbm9kZSAqLCBWaWNlRmlkICosIFZpY2VGaWQgKik7CiMgMzE1ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvcm9tZnNfZnNfaS5oIiAxCgoKCgoKc3RydWN0IHJv
bWZzX2lub2RlX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9tZXRhc2l6ZTsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGlfZGF0YW9mZnNldDsKfTsKIyAzMTYgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5j
bHVkZS9saW51eC9zaG1lbV9mcy5oIiAxCiMgMTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNs
dWRlL2xpbnV4L3NobWVtX2ZzLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBs
b25nIHZhbDsKfSBzd3BfZW50cnlfdDsKCmV4dGVybiBhdG9taWNfdCBzaG1lbV9ucnBhZ2VzOwoK
c3RydWN0IHNobWVtX2lub2RlX2luZm8gewogICAgICAgIHNwaW5sb2NrX3QgbG9jazsKICAgICAg
ICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKICAgICAgICB1bnNpZ25lZCBsb25nIG5leHRfaW5kZXg7
CiAgICAgICAgc3dwX2VudHJ5X3QgaV9kaXJlY3RbMTZdOwogICAgICAgIHZvaWQgKippX2luZGly
ZWN0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3dhcHBlZDsKICAgICAgICBpbnQgbG9ja2VkOwog
ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2Rl
Owp9OwoKc3RydWN0IHNobWVtX3NiX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgbWF4X2Js
b2NrczsKICAgICAgICB1bnNpZ25lZCBsb25nIGZyZWVfYmxvY2tzOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgbWF4X2lub2RlczsKICAgICAgICB1bnNpZ25lZCBsb25nIGZyZWVfaW5vZGVzOwogICAg
ICAgIHNwaW5sb2NrX3Qgc3RhdF9sb2NrOwp9OwojIDMxNyAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRl
L2xpbnV4L3NtYl9mc19pLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUv
bGludXgvc21iX2ZzX2kuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51
eC90eXBlcy5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3Nt
Yl9mc19pLmgiIDIKCgoKCnN0cnVjdCBzbWJfaW5vZGVfaW5mbyB7CgoKCgoKICAgICAgICB1bnNp
Z25lZCBpbnQgb3BlbjsKICAgICAgICBfX3UxNiBmaWxlaWQ7CiAgICAgICAgX191MTYgYXR0cjsK
CiAgICAgICAgX191MTYgYWNjZXNzOwogICAgICAgIF9fdTE2IGZsYWdzOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgb2xkbXRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjbG9zZWQ7CiAgICAgICAg
dW5zaWduZWQgb3BlbmVyczsKfTsKIyAzMTggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRl
L2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9o
ZnNfZnNfaS5oIiAxCiMgMTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2hm
c19mc19pLmgiCnN0cnVjdCBoZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgaW50IG1hZ2ljOwoKICAg
ICAgICB1bnNpZ25lZCBsb25nIG1tdV9wcml2YXRlOwogICAgICAgIHN0cnVjdCBoZnNfY2F0X2Vu
dHJ5ICplbnRyeTsKCgogICAgICAgIHN0cnVjdCBoZnNfZm9yayAqZm9yazsKICAgICAgICBpbnQg
Y29udmVydDsKCgogICAgICAgIGlub190IGZpbGVfdHlwZTsKICAgICAgICBjaGFyIGRpcl9zaXpl
OwoKCiAgICAgICAgY29uc3Qgc3RydWN0IGhmc19oZHJfbGF5b3V0ICpkZWZhdWx0X2xheW91dDsK
ICAgICAgICBzdHJ1Y3QgaGZzX2hkcl9sYXlvdXQgKmxheW91dDsKCgogICAgICAgIGludCB0el9z
ZWNvbmRzd2VzdDsKCgogICAgICAgIHZvaWQgKCpkX2Ryb3Bfb3ApKHN0cnVjdCBkZW50cnkgKiwg
Y29uc3QgaW5vX3QpOwp9OwojIDMxOSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGlu
dXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2FkZnNf
ZnNfaS5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2FkZnNf
ZnNfaS5oIgpzdHJ1Y3QgYWRmc19pbm9kZV9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIG1t
dV9wcml2YXRlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcGFyZW50X2lkOwogICAgICAgIF9fdTMy
IGxvYWRhZGRyOwogICAgICAgIF9fdTMyIGV4ZWNhZGRyOwogICAgICAgIHVuc2lnbmVkIGludCBm
aWxldHlwZTsKICAgICAgICB1bnNpZ25lZCBpbnQgYXR0cjsKICAgICAgICBpbnQgc3RhbXBlZDox
Owp9OwojIDMyMCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvZnMuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3FueDRfZnNfaS5oIiAxCiMg
MTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3FueDRfZnNfaS5oIgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3FueHR5cGVzLmgiIDEKIyAxNSAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvcW54dHlwZXMuaCIKdHlwZWRlZiBf
X3UxNiBxbng0X254dG50X3Q7CnR5cGVkZWYgX191OCBxbng0X2Z0eXBlX3Q7Cgp0eXBlZGVmIHN0
cnVjdCB7CiAgICAgICAgX191MzIgeHRudF9ibGs7CiAgICAgICAgX191MzIgeHRudF9zaXplOwp9
IHFueDRfeHRudF90OwoKdHlwZWRlZiBfX3UxNiBxbng0X21vZGVfdDsKdHlwZWRlZiBfX3UxNiBx
bng0X211aWRfdDsKdHlwZWRlZiBfX3UxNiBxbng0X21naWRfdDsKdHlwZWRlZiBfX3UzMiBxbng0
X29mZl90Owp0eXBlZGVmIF9fdTE2IHFueDRfbmxpbmtfdDsKIyAxNSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2luY2x1ZGUvbGludXgvcW54NF9mc19pLmgiIDIKCgoKCnN0cnVjdCBxbng0X2lub2Rl
X2luZm8gewogICAgICAgIGNoYXIgaV9yZXNlcnZlZFsxNl07CiAgICAgICAgcW54NF9vZmZfdCBp
X3NpemU7CiAgICAgICAgcW54NF94dG50X3QgaV9maXJzdF94dG50OwogICAgICAgIF9fdTMyIGlf
eGJsazsKICAgICAgICBfX3MzMiBpX2Z0aW1lOwogICAgICAgIF9fczMyIGlfbXRpbWU7CiAgICAg
ICAgX19zMzIgaV9hdGltZTsKICAgICAgICBfX3MzMiBpX2N0aW1lOwogICAgICAgIHFueDRfbnh0
bnRfdCBpX251bV94dG50czsKICAgICAgICBxbng0X21vZGVfdCBpX21vZGU7CiAgICAgICAgcW54
NF9tdWlkX3QgaV91aWQ7CiAgICAgICAgcW54NF9tZ2lkX3QgaV9naWQ7CiAgICAgICAgcW54NF9u
bGlua190IGlfbmxpbms7CiAgICAgICAgX191OCBpX3plcm9bNF07CiAgICAgICAgcW54NF9mdHlw
ZV90IGlfdHlwZTsKICAgICAgICBfX3U4IGlfc3RhdHVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
bW11X3ByaXZhdGU7Cn07CiMgMzIxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51
eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvcmVpc2Vy
ZnNfZnNfaS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgv
bGlzdC5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvcmVpc2Vy
ZnNfZnNfaS5oIiAyCgpzdHJ1Y3QgcmVpc2VyZnNfaW5vZGVfaW5mbyB7CiAgX191MzIgaV9rZXkg
WzRdOwoKCgoKCgogIGludCBpX3ZlcnNpb247CgogIGludCBpX3BhY2tfb25fY2xvc2UgOwoKICBf
X3UzMiBpX2ZpcnN0X2RpcmVjdF9ieXRlOwojIDM1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5j
bHVkZS9saW51eC9yZWlzZXJmc19mc19pLmgiCiAgaW50IGlfcHJlYWxsb2NfYmxvY2s7CiAgaW50
IGlfcHJlYWxsb2NfY291bnQ7CiAgc3RydWN0IGxpc3RfaGVhZCBpX3ByZWFsbG9jX2xpc3Q7CgoK
CgogIGludCBub3BhY2s7CgoKCgogIHVuc2lnbmVkIGxvbmcgaV90cmFuc19pZCA7CiAgdW5zaWdu
ZWQgbG9uZyBpX3RyYW5zX2luZGV4IDsKfTsKIyAzMjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9p
bmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9s
aW51eC9iZnNfZnNfaS5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xp
bnV4L2Jmc19mc19pLmgiCnN0cnVjdCBiZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBpX2Rza19pbm87CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX3NibG9jazsKICAgICAgICB1
bnNpZ25lZCBsb25nIGlfZWJsb2NrOwp9OwojIDMyMyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2lu
Y2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xp
bnV4L3VkZl9mc19pLmgiIDEKIyAyNCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGlu
dXgvdWRmX2ZzX2kuaCIKdHlwZWRlZiBzdHJ1Y3QKewogICAgICAgIF9fdTMyIGxvZ2ljYWxCbG9j
a051bTsKICAgICAgICBfX3UxNiBwYXJ0aXRpb25SZWZlcmVuY2VOdW07Cn0gbGJfYWRkcjsKCgpz
dHJ1Y3QgdWRmX2lub2RlX2luZm8KewogICAgICAgIGxvbmcgaV91bXRpbWU7CiAgICAgICAgbG9u
ZyBpX3VjdGltZTsKICAgICAgICBsb25nIGlfY3J0aW1lOwogICAgICAgIGxvbmcgaV91Y3J0aW1l
OwoKICAgICAgICBsYl9hZGRyIGlfbG9jYXRpb247CiAgICAgICAgX191NjQgaV91bmlxdWU7CiAg
ICAgICAgX191MzIgaV9sZW5FQXR0cjsKICAgICAgICBfX3UzMiBpX2xlbkFsbG9jOwogICAgICAg
IF9fdTY0IGlfbGVuRXh0ZW50czsKICAgICAgICBfX3UzMiBpX25leHRfYWxsb2NfYmxvY2s7CiAg
ICAgICAgX191MzIgaV9uZXh0X2FsbG9jX2dvYWw7CiAgICAgICAgdW5zaWduZWQgaV9hbGxvY190
eXBlIDogMzsKICAgICAgICB1bnNpZ25lZCBpX2V4dGVuZGVkX2ZlIDogMTsKICAgICAgICB1bnNp
Z25lZCBpX3N0cmF0XzQwOTYgOiAxOwogICAgICAgIHVuc2lnbmVkIGlfbmV3X2lub2RlIDogMTsK
ICAgICAgICB1bnNpZ25lZCByZXNlcnZlZCA6IDI2Owp9OwojIDMyNCAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9p
bmNsdWRlL2xpbnV4L25jcF9mc19pLmgiIDEKIyAxNyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2lu
Y2x1ZGUvbGludXgvbmNwX2ZzX2kuaCIKc3RydWN0IG5jcF9pbm9kZV9pbmZvIHsKICAgICAgICBf
X3UzMiBkaXJFbnROdW0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgRG9z
RGlyTnVtIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIHZvbE51bWJlciBf
X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBud2F0dHI7CiAgICAgICAgc3Ry
dWN0IHNlbWFwaG9yZSBvcGVuX3NlbTsKICAgICAgICBhdG9taWNfdCBvcGVuZWQ7CiAgICAgICAg
aW50IGFjY2VzczsKICAgICAgICBfX3UzMiBzZXJ2ZXJfZmlsZV9oYW5kbGUgX19hdHRyaWJ1dGVf
XygocGFja2VkKSk7CiAgICAgICAgX191OCBvcGVuX2NyZWF0ZV9hY3Rpb24gX19hdHRyaWJ1dGVf
XygocGFja2VkKSk7CiAgICAgICAgX191OCBmaWxlX2hhbmRsZVs2XSBfX2F0dHJpYnV0ZV9fKChw
YWNrZWQpKTsKfTsKIyAzMjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2Zz
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9wcm9jX2ZzX2ku
aCIgMQpzdHJ1Y3QgcHJvY19pbm9kZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3Qg
KnRhc2s7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAg
aW50ICgqcHJvY19nZXRfbGluaykoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiosIHN0
cnVjdCB2ZnNtb3VudCAqKik7CiAgICAgICAgICAgICAgICBpbnQgKCpwcm9jX3JlYWQpKHN0cnVj
dCB0YXNrX3N0cnVjdCAqdGFzaywgY2hhciAqcGFnZSk7CiAgICAgICAgfSBvcDsKICAgICAgICBz
dHJ1Y3QgZmlsZSAqZmlsZTsKfTsKIyAzMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRl
L2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC91
c2JkZXZfZnNfaS5oIiAxCnN0cnVjdCB1c2JfZGV2aWNlOwpzdHJ1Y3QgdXNiX2J1czsKCnN0cnVj
dCB1c2JkZXZfaW5vZGVfaW5mbyB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkbGlzdDsKICAg
ICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNsaXN0OwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAg
ICAgIHN0cnVjdCB1c2JfZGV2aWNlICpkZXY7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdXNiX2J1
cyAqYnVzOwogICAgICAgIH0gcDsKfTsKIyAzMjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNs
dWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51
eC9qZmZzMl9mc19pLmgiIDEKIyAxNiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGlu
dXgvamZmczJfZnNfaS5oIgpzdHJ1Y3QgamZmczJfaW5vZGVfaW5mbyB7CiMgMjYgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX2kuaCIKICAgICAgICBzdHJ1Y3Qg
c2VtYXBob3JlIHNlbTsKCgogICAgICAgIF9fdTMyIGhpZ2hlc3RfdmVyc2lvbjsKCgogICAgICAg
IHN0cnVjdCBqZmZzMl9ub2RlX2ZyYWcgKmZyYWdsaXN0OwoKCgoKCgogICAgICAgIHN0cnVjdCBq
ZmZzMl9mdWxsX2Rub2RlICptZXRhZGF0YTsKCgogICAgICAgIHN0cnVjdCBqZmZzMl9mdWxsX2Rp
cmVudCAqZGVudHM7CgoKICAgICAgICBzdHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUgKmlub2NhY2hl
OwoKCgoKCiAgICAgICAgX191MTYgZmxhZ3M7CiAgICAgICAgX191OCB1c2VyY29tcHI7Cn07CiMg
MzI4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvY3JhbWZzX2ZzX3NiLmgiIDEKCgoKCgoK
c3RydWN0IGNyYW1mc19zYl9pbmZvIHsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bG9uZyBtYWdpYzsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzaXplOwog
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGJsb2NrczsKICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmaWxlczsKICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgbG9uZyBmbGFnczsKfTsKIyAzMjkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNs
dWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51
eC9ob3N0ZnNfZnNfaS5oIiAxCgoKCnN0cnVjdCBob3N0ZnNfaW5vZGVfaW5mbyB7CiAgICAgICAg
Y2hhciAqaG9zdF9maWxlbmFtZTsKICAgICAgICBpbnQgZmQ7CiAgICAgICAgaW50IG1vZGU7Cn07
CiMgMzMwICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMzU2
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9mcy5oIgpzdHJ1Y3QgaWF0dHIg
ewogICAgICAgIHVuc2lnbmVkIGludCBpYV92YWxpZDsKICAgICAgICB1bW9kZV90IGlhX21vZGU7
CiAgICAgICAgdWlkX3QgaWFfdWlkOwogICAgICAgIGdpZF90IGlhX2dpZDsKICAgICAgICBsb2Zm
X3QgaWFfc2l6ZTsKICAgICAgICB0aW1lX3QgaWFfYXRpbWU7CiAgICAgICAgdGltZV90IGlhX210
aW1lOwogICAgICAgIHRpbWVfdCBpYV9jdGltZTsKICAgICAgICB1bnNpZ25lZCBpbnQgaWFfYXR0
cl9mbGFnczsKfTsKIyAzODAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2Zz
LmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvcXVvdGEuaCIgMQoj
IDQyICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9xdW90YS5oIgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDEKCgoKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vZXJybm8uaCIgMQojIDUgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDIKIyA0MyAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2luY2x1ZGUvbGludXgvcXVvdGEuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyA0NCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2lu
Y2x1ZGUvbGludXgvcXVvdGEuaCIgMgoKdHlwZWRlZiBfX2tlcm5lbF91aWQzMl90IHFpZF90Owp0
eXBlZGVmIF9fdTY0IHFzaXplX3Q7CiMgMTE3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVk
ZS9saW51eC9xdW90YS5oIgpzdHJ1Y3QgZGlza19kcWJsayB7CiAgICAgICAgX191MzIgZHFiX2lk
OwogICAgICAgIF9fdTMyIGRxYl9paGFyZGxpbWl0OwogICAgICAgIF9fdTMyIGRxYl9pc29mdGxp
bWl0OwogICAgICAgIF9fdTMyIGRxYl9jdXJpbm9kZXM7CiAgICAgICAgX191MzIgZHFiX2JoYXJk
bGltaXQ7CiAgICAgICAgX191MzIgZHFiX2Jzb2Z0bGltaXQ7CiAgICAgICAgX191NjQgZHFiX2N1
cnNwYWNlOwogICAgICAgIF9fdTY0IGRxYl9idGltZTsKICAgICAgICBfX3U2NCBkcWJfaXRpbWU7
Cn07CgoKc3RydWN0IG1lbV9kcWJsayB7CiAgICAgICAgdW5zaWduZWQgaW50IGRxYl9paGFyZGxp
bWl0OwogICAgICAgIHVuc2lnbmVkIGludCBkcWJfaXNvZnRsaW1pdDsKICAgICAgICB1bnNpZ25l
ZCBpbnQgZHFiX2N1cmlub2RlczsKICAgICAgICB1bnNpZ25lZCBpbnQgZHFiX2JoYXJkbGltaXQ7
CiAgICAgICAgdW5zaWduZWQgaW50IGRxYl9ic29mdGxpbWl0OwogICAgICAgIHFzaXplX3QgZHFi
X2N1cnNwYWNlOwogICAgICAgIF9fa2VybmVsX3RpbWVfdCBkcWJfYnRpbWU7CiAgICAgICAgX19r
ZXJuZWxfdGltZV90IGRxYl9pdGltZTsKfTsKCgoKCgpzdHJ1Y3QgZGlza19kcWhlYWRlciB7CiAg
ICAgICAgX191MzIgZHFoX21hZ2ljOwogICAgICAgIF9fdTMyIGRxaF92ZXJzaW9uOwp9OwoKCnN0
cnVjdCBkaXNrX2RxaW5mbyB7CiAgICAgICAgX191MzIgZHFpX2JncmFjZTsKICAgICAgICBfX3Uz
MiBkcWlfaWdyYWNlOwogICAgICAgIF9fdTMyIGRxaV9mbGFnczsKICAgICAgICBfX3UzMiBkcWlf
YmxvY2tzOwogICAgICAgIF9fdTMyIGRxaV9mcmVlX2JsazsKICAgICAgICBfX3UzMiBkcWlfZnJl
ZV9lbnRyeTsKfTsKCgpzdHJ1Y3QgbWVtX2RxaW5mbyB7CiAgICAgICAgdW5zaWduZWQgaW50IGRx
aV9iZ3JhY2U7CiAgICAgICAgdW5zaWduZWQgaW50IGRxaV9pZ3JhY2U7CiAgICAgICAgdW5zaWdu
ZWQgaW50IGRxaV9mbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQgZHFpX2Jsb2NrczsKICAgICAg
ICB1bnNpZ25lZCBpbnQgZHFpX2ZyZWVfYmxrOwogICAgICAgIHVuc2lnbmVkIGludCBkcWlfZnJl
ZV9lbnRyeTsKfTsKCgoKCgoKZXh0ZXJuIGlubGluZSB2b2lkIG1hcmtfaW5mb19kaXJ0eShzdHJ1
Y3QgbWVtX2RxaW5mbyAqaW5mbykKewogICAgICAgIGluZm8tPmRxaV9mbGFncyB8PSAweDAwMTA7
Cn0KCgoKCgoKc3RydWN0IGRpc2tfZHFkYmhlYWRlciB7CiAgICAgICAgX191MzIgZHFkaF9uZXh0
X2ZyZWU7CiAgICAgICAgX191MzIgZHFkaF9wcmV2X2ZyZWU7CiAgICAgICAgX191MTYgZHFkaF9l
bnRyaWVzOwogICAgICAgIF9fdTE2IGRxZGhfcGFkMTsKICAgICAgICBfX3UzMiBkcWRoX3BhZDI7
Cn07CiMgMjAwICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9xdW90YS5oIgpz
dHJ1Y3QgZHFzdGF0cyB7CiAgICAgICAgX191MzIgbG9va3VwczsKICAgICAgICBfX3UzMiBkcm9w
czsKICAgICAgICBfX3UzMiByZWFkczsKICAgICAgICBfX3UzMiB3cml0ZXM7CiAgICAgICAgX191
MzIgY2FjaGVfaGl0czsKICAgICAgICBfX3UzMiBhbGxvY2F0ZWRfZHF1b3RzOwogICAgICAgIF9f
dTMyIGZyZWVfZHF1b3RzOwogICAgICAgIF9fdTMyIHN5bmNzOwogICAgICAgIF9fdTMyIHZlcnNp
b247Cn07CgoKCmV4dGVybiBpbnQgbnJfZHF1b3RzLCBucl9mcmVlX2RxdW90czsKIyAyMjUgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiCnN0cnVjdCBkcXVvdCB7
CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkcV9oYXNoOwogICAgICAgIHN0cnVjdCBsaXN0X2hl
YWQgZHFfaW51c2U7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkcV9mcmVlOwogICAgICAgIHdh
aXRfcXVldWVfaGVhZF90IGRxX3dhaXRfbG9jazsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBk
cV93YWl0X2ZyZWU7CiAgICAgICAgaW50IGRxX2NvdW50OwogICAgICAgIGludCBkcV9kdXBfcmVm
OwoKCiAgICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICpkcV9zYjsKICAgICAgICBxaWRfdCBkcV9p
ZDsKICAgICAgICBrZGV2X3QgZHFfZGV2OwogICAgICAgIHNob3J0IGRxX3R5cGU7CiAgICAgICAg
c2hvcnQgZHFfZmxhZ3M7CiAgICAgICAgbG9mZl90IGRxX29mZjsKICAgICAgICB1bnNpZ25lZCBs
b25nIGRxX3JlZmVyZW5jZWQ7CgogICAgICAgIHN0cnVjdCBtZW1fZHFibGsgZHFfZHFiOwp9Owoj
IDI3NCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvcXVvdGEuaCIKdHlwZWRl
ZiBjaGFyICpkcWJ1Zl90OwojIDM4MSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGlu
dXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L21vdW50
LmgiIDEKIyAzODIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIK
CgoKCnN0cnVjdCBwYWdlOwpzdHJ1Y3QgYWRkcmVzc19zcGFjZTsKCnN0cnVjdCBhZGRyZXNzX3Nw
YWNlX29wZXJhdGlvbnMgewogICAgICAgIGludCAoKndyaXRlcGFnZSkoc3RydWN0IHBhZ2UgKik7
CiAgICAgICAgaW50ICgqcmVhZHBhZ2UpKHN0cnVjdCBmaWxlICosIHN0cnVjdCBwYWdlICopOwog
ICAgICAgIGludCAoKnN5bmNfcGFnZSkoc3RydWN0IHBhZ2UgKik7CiAgICAgICAgaW50ICgqcHJl
cGFyZV93cml0ZSkoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQsIHVuc2ln
bmVkKTsKICAgICAgICBpbnQgKCpjb21taXRfd3JpdGUpKHN0cnVjdCBmaWxlICosIHN0cnVjdCBw
YWdlICosIHVuc2lnbmVkLCB1bnNpZ25lZCk7CiAgICAgICAgdm9pZCAoKnJlbW92ZXBhZ2UpKHN0
cnVjdCBwYWdlICopOwoKICAgICAgICBpbnQgKCpibWFwKShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAq
LCBsb25nKTsKICAgICAgICBpbnQgKCpmbHVzaHBhZ2UpIChzdHJ1Y3QgcGFnZSAqLCB1bnNpZ25l
ZCBsb25nKTsKICAgICAgICBpbnQgKCpyZWxlYXNlcGFnZSkgKHN0cnVjdCBwYWdlICosIGludCk7
Cn07CgpzdHJ1Y3QgYWRkcmVzc19zcGFjZSB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBjbGVh
bl9wYWdlczsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRpcnR5X3BhZ2VzOwogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgbG9ja2VkX3BhZ2VzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbnJwYWdl
czsKICAgICAgICBzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zICphX29wczsKICAgICAg
ICBzdHJ1Y3QgaW5vZGUgKmhvc3Q7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICppX21t
YXA7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICppX21tYXBfc2hhcmVkOwogICAgICAg
IHNwaW5sb2NrX3QgaV9zaGFyZWRfbG9jazsKICAgICAgICBpbnQgZ2ZwX21hc2s7Cn07CgpzdHJ1
Y3QgY2hhcl9kZXZpY2UgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaGFzaDsKICAgICAgICBh
dG9taWNfdCBjb3VudDsKICAgICAgICBkZXZfdCBkZXY7CiAgICAgICAgYXRvbWljX3Qgb3BlbmVy
czsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKfTsKCnN0cnVjdCBibG9ja19kZXZpY2Ug
ewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYmRfaGFzaDsKICAgICAgICBhdG9taWNfdCBiZF9j
b3VudDsKCiAgICAgICAgZGV2X3QgYmRfZGV2OwogICAgICAgIGF0b21pY190IGJkX29wZW5lcnM7
CiAgICAgICAgY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zICpiZF9vcDsKICAg
ICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGJkX3NlbTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGJk
X2lub2RlczsKfTsKCnN0cnVjdCBpbm9kZSB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2hh
c2g7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3Rf
aGVhZCBpX2RlbnRyeTsKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2RpcnR5X2J1ZmZlcnM7
CgogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9pbm87CiAgICAgICAgYXRvbWljX3QgaV9jb3VudDsK
ICAgICAgICBrZGV2X3QgaV9kZXY7CiAgICAgICAgdW1vZGVfdCBpX21vZGU7CiAgICAgICAgbmxp
bmtfdCBpX25saW5rOwogICAgICAgIHVpZF90IGlfdWlkOwogICAgICAgIGdpZF90IGlfZ2lkOwog
ICAgICAgIGtkZXZfdCBpX3JkZXY7CiAgICAgICAgbG9mZl90IGlfc2l6ZTsKICAgICAgICB0aW1l
X3QgaV9hdGltZTsKICAgICAgICB0aW1lX3QgaV9tdGltZTsKICAgICAgICB0aW1lX3QgaV9jdGlt
ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgaV9ibGtiaXRzOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
aV9ibGtzaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9ibG9ja3M7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBpX3ZlcnNpb247CiAgICAgICAgdW5zaWduZWQgc2hvcnQgaV9ieXRlczsKICAgICAg
ICBzdHJ1Y3Qgc2VtYXBob3JlIGlfc2VtOwogICAgICAgIHN0cnVjdCByd19zZW1hcGhvcmUgaV90
cnVuY2F0ZV9zZW07CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBpX3pvbWJpZTsKICAgICAgICBz
dHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyAqaV9vcDsKICAgICAgICBzdHJ1Y3QgZmlsZV9vcGVyYXRp
b25zICppX2ZvcDsKICAgICAgICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmlfc2I7CiAgICAgICAgd2Fp
dF9xdWV1ZV9oZWFkX3QgaV93YWl0OwogICAgICAgIHN0cnVjdCBmaWxlX2xvY2sgKmlfZmxvY2s7
CiAgICAgICAgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmlfbWFwcGluZzsKICAgICAgICBzdHJ1Y3Qg
YWRkcmVzc19zcGFjZSBpX2RhdGE7CiAgICAgICAgc3RydWN0IGRxdW90ICppX2RxdW90WzJdOwoK
ICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGlfZGV2aWNlczsKICAgICAgICBzdHJ1Y3QgcGlwZV9p
bm9kZV9pbmZvICppX3BpcGU7CiAgICAgICAgc3RydWN0IGJsb2NrX2RldmljZSAqaV9iZGV2Owog
ICAgICAgIHN0cnVjdCBjaGFyX2RldmljZSAqaV9jZGV2OwoKICAgICAgICB1bnNpZ25lZCBsb25n
IGlfZG5vdGlmeV9tYXNrOwogICAgICAgIHN0cnVjdCBkbm90aWZ5X3N0cnVjdCAqaV9kbm90aWZ5
OwoKICAgICAgICB1bnNpZ25lZCBsb25nIGlfc3RhdGU7CgogICAgICAgIHVuc2lnbmVkIGludCBp
X2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgaV9zb2NrOwoKICAgICAgICBhdG9taWNfdCBp
X3dyaXRlY291bnQ7CiAgICAgICAgdW5zaWduZWQgaW50IGlfYXR0cl9mbGFnczsKICAgICAgICBf
X3UzMiBpX2dlbmVyYXRpb247CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0
IG1pbml4X2lub2RlX2luZm8gbWluaXhfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBleHQyX2lu
b2RlX2luZm8gZXh0Ml9pOwogICAgICAgICAgICAgICAgc3RydWN0IGV4dDNfaW5vZGVfaW5mbyBl
eHQzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaHBmc19pbm9kZV9pbmZvIGhwZnNfaTsKICAg
ICAgICAgICAgICAgIHN0cnVjdCBudGZzX2lub2RlX2luZm8gbnRmc19pOwogICAgICAgICAgICAg
ICAgc3RydWN0IG1zZG9zX2lub2RlX2luZm8gbXNkb3NfaTsKICAgICAgICAgICAgICAgIHN0cnVj
dCB1bXNkb3NfaW5vZGVfaW5mbyB1bXNkb3NfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBpc29f
aW5vZGVfaW5mbyBpc29mc19pOwogICAgICAgICAgICAgICAgc3RydWN0IHN5c3ZfaW5vZGVfaW5m
byBzeXN2X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgYWZmc19pbm9kZV9pbmZvIGFmZnNfaTsK
ICAgICAgICAgICAgICAgIHN0cnVjdCB1ZnNfaW5vZGVfaW5mbyB1ZnNfaTsKICAgICAgICAgICAg
ICAgIHN0cnVjdCBlZnNfaW5vZGVfaW5mbyBlZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBy
b21mc19pbm9kZV9pbmZvIHJvbWZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2htZW1faW5v
ZGVfaW5mbyBzaG1lbV9pOwogICAgICAgICAgICAgICAgc3RydWN0IGNvZGFfaW5vZGVfaW5mbyBj
b2RhX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc21iX2lub2RlX2luZm8gc21iZnNfaTsKICAg
ICAgICAgICAgICAgIHN0cnVjdCBoZnNfaW5vZGVfaW5mbyBoZnNfaTsKICAgICAgICAgICAgICAg
IHN0cnVjdCBhZGZzX2lub2RlX2luZm8gYWRmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IHFu
eDRfaW5vZGVfaW5mbyBxbng0X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgcmVpc2VyZnNfaW5v
ZGVfaW5mbyByZWlzZXJmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IGJmc19pbm9kZV9pbmZv
IGJmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IHVkZl9pbm9kZV9pbmZvIHVkZl9pOwogICAg
ICAgICAgICAgICAgc3RydWN0IG5jcF9pbm9kZV9pbmZvIG5jcGZzX2k7CiAgICAgICAgICAgICAg
ICBzdHJ1Y3QgcHJvY19pbm9kZV9pbmZvIHByb2NfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBz
b2NrZXQgc29ja2V0X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdXNiZGV2X2lub2RlX2luZm8g
dXNiZGV2X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgamZmczJfaW5vZGVfaW5mbyBqZmZzMl9p
OwogICAgICAgICAgICAgICAgc3RydWN0IGhvc3Rmc19pbm9kZV9pbmZvIGhvc3Rmc19pOwogICAg
ICAgICAgICAgICAgdm9pZCAqZ2VuZXJpY19pcDsKICAgICAgICB9IHU7Cn07CgpzdHJ1Y3QgZm93
bl9zdHJ1Y3QgewogICAgICAgIGludCBwaWQ7CiAgICAgICAgdWlkX3QgdWlkLCBldWlkOwogICAg
ICAgIGludCBzaWdudW07Cn07CgpzdHJ1Y3QgZmlsZSB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVh
ZCBmX2xpc3Q7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqZl9kZW50cnk7CiAgICAgICAgc3RydWN0
IHZmc21vdW50ICpmX3Zmc21udDsKICAgICAgICBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpmX29w
OwogICAgICAgIGF0b21pY190IGZfY291bnQ7CiAgICAgICAgdW5zaWduZWQgaW50IGZfZmxhZ3M7
CiAgICAgICAgbW9kZV90IGZfbW9kZTsKICAgICAgICBsb2ZmX3QgZl9wb3M7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBmX3JlYWRhLCBmX3JhbWF4LCBmX3JhZW5kLCBmX3JhbGVuLCBmX3Jhd2luOwog
ICAgICAgIHN0cnVjdCBmb3duX3N0cnVjdCBmX293bmVyOwogICAgICAgIHVuc2lnbmVkIGludCBm
X3VpZCwgZl9naWQ7CiAgICAgICAgaW50IGZfZXJyb3I7CgogICAgICAgIHVuc2lnbmVkIGxvbmcg
Zl92ZXJzaW9uOwoKCiAgICAgICAgdm9pZCAqcHJpdmF0ZV9kYXRhOwp9OwpleHRlcm4gc3Bpbmxv
Y2tfdCBmaWxlc19sb2NrOwoKCgoKCgpleHRlcm4gaW50IGluaXRfcHJpdmF0ZV9maWxlKHN0cnVj
dCBmaWxlICosIHN0cnVjdCBkZW50cnkgKiwgaW50KTsKIyA1NjkgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9pbmNsdWRlL2xpbnV4L2ZzLmgiCnR5cGVkZWYgc3RydWN0IGZpbGVzX3N0cnVjdCAqZmxf
b3duZXJfdDsKCnN0cnVjdCBmaWxlX2xvY2sgewogICAgICAgIHN0cnVjdCBmaWxlX2xvY2sgKmZs
X25leHQ7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBmbF9saW5rOwogICAgICAgIHN0cnVjdCBs
aXN0X2hlYWQgZmxfYmxvY2s7CiAgICAgICAgZmxfb3duZXJfdCBmbF9vd25lcjsKICAgICAgICB1
bnNpZ25lZCBpbnQgZmxfcGlkOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IGZsX3dhaXQ7CiAg
ICAgICAgc3RydWN0IGZpbGUgKmZsX2ZpbGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBmbF9mbGFn
czsKICAgICAgICB1bnNpZ25lZCBjaGFyIGZsX3R5cGU7CiAgICAgICAgbG9mZl90IGZsX3N0YXJ0
OwogICAgICAgIGxvZmZfdCBmbF9lbmQ7CgogICAgICAgIHZvaWQgKCpmbF9ub3RpZnkpKHN0cnVj
dCBmaWxlX2xvY2sgKik7CiAgICAgICAgdm9pZCAoKmZsX2luc2VydCkoc3RydWN0IGZpbGVfbG9j
ayAqKTsKICAgICAgICB2b2lkICgqZmxfcmVtb3ZlKShzdHJ1Y3QgZmlsZV9sb2NrICopOwoKICAg
ICAgICBzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqIGZsX2Zhc3luYzsKCiAgICAgICAgdW5pb24gewog
ICAgICAgICAgICAgICAgc3RydWN0IG5mc19sb2NrX2luZm8gbmZzX2ZsOwogICAgICAgIH0gZmxf
dTsKfTsKIyA2MDIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2ZzLmgiCmV4
dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGZpbGVfbG9ja19saXN0OwoKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvaW5jbHVkZS9saW51eC9mY250bC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2luY2x1ZGUvYXNtL2ZjbnRsLmgiIDEKIyA2OSAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2luY2x1ZGUvYXNtL2ZjbnRsLmgiCnN0cnVjdCBmbG9jayB7CiAgICAgICAgc2hvcnQgbF90eXBl
OwogICAgICAgIHNob3J0IGxfd2hlbmNlOwogICAgICAgIG9mZl90IGxfc3RhcnQ7CiAgICAgICAg
b2ZmX3QgbF9sZW47CiAgICAgICAgcGlkX3QgbF9waWQ7Cn07CgpzdHJ1Y3QgZmxvY2s2NCB7CiAg
ICAgICAgc2hvcnQgbF90eXBlOwogICAgICAgIHNob3J0IGxfd2hlbmNlOwogICAgICAgIGxvZmZf
dCBsX3N0YXJ0OwogICAgICAgIGxvZmZfdCBsX2xlbjsKICAgICAgICBwaWRfdCBsX3BpZDsKfTsK
IyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9mY250bC5oIiAyCiMgNjA1
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9mcy5oIiAyCgpleHRlcm4gaW50
IGZjbnRsX2dldGxrKHVuc2lnbmVkIGludCwgc3RydWN0IGZsb2NrICopOwpleHRlcm4gaW50IGZj
bnRsX3NldGxrKHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50LCBzdHJ1Y3QgZmxvY2sgKik7Cgpl
eHRlcm4gaW50IGZjbnRsX2dldGxrNjQodW5zaWduZWQgaW50LCBzdHJ1Y3QgZmxvY2s2NCAqKTsK
ZXh0ZXJuIGludCBmY250bF9zZXRsazY0KHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50LCBzdHJ1
Y3QgZmxvY2s2NCAqKTsKCgpleHRlcm4gdm9pZCBsb2Nrc19pbml0X2xvY2soc3RydWN0IGZpbGVf
bG9jayAqKTsKZXh0ZXJuIHZvaWQgbG9ja3NfY29weV9sb2NrKHN0cnVjdCBmaWxlX2xvY2sgKiwg
c3RydWN0IGZpbGVfbG9jayAqKTsKZXh0ZXJuIHZvaWQgbG9ja3NfcmVtb3ZlX3Bvc2l4KHN0cnVj
dCBmaWxlICosIGZsX293bmVyX3QpOwpleHRlcm4gdm9pZCBsb2Nrc19yZW1vdmVfZmxvY2soc3Ry
dWN0IGZpbGUgKik7CmV4dGVybiBzdHJ1Y3QgZmlsZV9sb2NrICpwb3NpeF90ZXN0X2xvY2soc3Ry
dWN0IGZpbGUgKiwgc3RydWN0IGZpbGVfbG9jayAqKTsKZXh0ZXJuIGludCBwb3NpeF9sb2NrX2Zp
bGUoc3RydWN0IGZpbGUgKiwgc3RydWN0IGZpbGVfbG9jayAqLCB1bnNpZ25lZCBpbnQpOwpleHRl
cm4gdm9pZCBwb3NpeF9ibG9ja19sb2NrKHN0cnVjdCBmaWxlX2xvY2sgKiwgc3RydWN0IGZpbGVf
bG9jayAqKTsKZXh0ZXJuIGludCBwb3NpeF9sb2Nrc19kZWFkbG9jayhzdHJ1Y3QgZmlsZV9sb2Nr
ICosIHN0cnVjdCBmaWxlX2xvY2sgKik7CmV4dGVybiB2b2lkIHBvc2l4X3VuYmxvY2tfbG9jayhz
dHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gaW50IHBvc2l4X2xvY2tzX2RlYWRsb2NrKHN0cnVj
dCBmaWxlX2xvY2sgKiwgc3RydWN0IGZpbGVfbG9jayAqKTsKZXh0ZXJuIGludCBfX2dldF9sZWFz
ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwpleHRlcm4gdGltZV90
IGxlYXNlX2dldF9tdGltZShzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgbG9ja19tYXlfcmVh
ZChzdHJ1Y3QgaW5vZGUgKiwgbG9mZl90IHN0YXJ0LCB1bnNpZ25lZCBsb25nIGNvdW50KTsKZXh0
ZXJuIGludCBsb2NrX21heV93cml0ZShzdHJ1Y3QgaW5vZGUgKiwgbG9mZl90IHN0YXJ0LCB1bnNp
Z25lZCBsb25nIGNvdW50KTsKCnN0cnVjdCBmYXN5bmNfc3RydWN0IHsKICAgICAgICBpbnQgbWFn
aWM7CiAgICAgICAgaW50IGZhX2ZkOwogICAgICAgIHN0cnVjdCBmYXN5bmNfc3RydWN0ICpmYV9u
ZXh0OwogICAgICAgIHN0cnVjdCBmaWxlICpmYV9maWxlOwp9OwoKCgoKZXh0ZXJuIGludCBmYXN5
bmNfaGVscGVyKGludCwgc3RydWN0IGZpbGUgKiwgaW50LCBzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAq
Kik7CgpleHRlcm4gdm9pZCBraWxsX2Zhc3luYyhzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqKiwgaW50
LCBpbnQpOwoKZXh0ZXJuIHZvaWQgX19raWxsX2Zhc3luYyhzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAq
LCBpbnQsIGludCk7CgpzdHJ1Y3QgbmFtZWlkYXRhIHsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpk
ZW50cnk7CiAgICAgICAgc3RydWN0IHZmc21vdW50ICptbnQ7CiAgICAgICAgc3RydWN0IHFzdHIg
bGFzdDsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CiAgICAgICAgaW50IGxhc3RfdHlwZTsK
fTsKCgoKCnN0cnVjdCBxdW90YV9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CiAg
ICAgICAgc3RydWN0IHNlbWFwaG9yZSBkcWlvX3NlbTsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3Jl
IGRxb2ZmX3NlbTsKICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZXNbMl07CiAgICAgICAgc3RydWN0
IG1lbV9kcWluZm8gaW5mb1syXTsKfTsKIyA2NzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNs
dWRlL2xpbnV4L2ZzLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgv
bWluaXhfZnNfc2IuaCIgMQoKCgoKCgpzdHJ1Y3QgbWluaXhfc2JfaW5mbyB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc19uaW5vZGVzOwogICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBsb25nIHNfbnpvbmVzOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBsb25nIHNfaW1hcF9ibG9ja3M7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGxvbmcgc196bWFwX2Jsb2NrczsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u
ZyBzX2ZpcnN0ZGF0YXpvbmU7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg
c19sb2dfem9uZV9zaXplOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNf
bWF4X3NpemU7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBzX2RpcnNpemU7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBzX25hbWVsZW47CiAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBzX2xpbmtfbWF4OwogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQg
Kiogc19pbWFwOwogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiog
c196bWFwOwogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzX3Ni
aDsKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG1pbml4X3N1cGVyX2Jsb2NrICogc19t
czsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgc19tb3VudF9zdGF0ZTsK
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgc192ZXJzaW9uOwp9OwojIDY3
MiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2V4dDJfZnNfc2IuaCIgMQojIDMwICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9leHQyX2ZzX3NiLmgiCnN0cnVjdCBleHQy
X3NiX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mcmFnX3NpemU7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBzX2ZyYWdzX3Blcl9ibG9jazsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5v
ZGVzX3Blcl9ibG9jazsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZnJhZ3NfcGVyX2dyb3VwOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgc19ibG9ja3NfcGVyX2dyb3VwOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgc19pbm9kZXNfcGVyX2dyb3VwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19pdGJfcGVy
X2dyb3VwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19nZGJfY291bnQ7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzX2Rlc2NfcGVyX2Jsb2NrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19ncm91cHNf
Y291bnQ7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc19zYmg7CiAgICAgICAgc3RydWN0
IGV4dDJfc3VwZXJfYmxvY2sgKiBzX2VzOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqKiBz
X2dyb3VwX2Rlc2M7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19sb2FkZWRfaW5vZGVfYml0bWFw
czsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX2xvYWRlZF9ibG9ja19iaXRtYXBzOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgc19pbm9kZV9iaXRtYXBfbnVtYmVyWzhdOwogICAgICAgIHN0cnVjdCBi
dWZmZXJfaGVhZCAqIHNfaW5vZGVfYml0bWFwWzhdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19i
bG9ja19iaXRtYXBfbnVtYmVyWzhdOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIHNfYmxv
Y2tfYml0bWFwWzhdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19tb3VudF9vcHQ7CiAgICAgICAg
dWlkX3Qgc19yZXN1aWQ7CiAgICAgICAgZ2lkX3Qgc19yZXNnaWQ7CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgc19tb3VudF9zdGF0ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX3BhZDsKICAgICAg
ICBpbnQgc19hZGRyX3Blcl9ibG9ja19iaXRzOwogICAgICAgIGludCBzX2Rlc2NfcGVyX2Jsb2Nr
X2JpdHM7CiAgICAgICAgaW50IHNfaW5vZGVfc2l6ZTsKICAgICAgICBpbnQgc19maXJzdF9pbm87
Cn07CiMgNjczICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvZXh0M19mc19zYi5oIiAxCiMg
MjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2V4dDNfZnNfc2IuaCIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC90aW1lci5oIiAxCgoKCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA1ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC90aW1lci5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvbGlzdC5oIiAxCiMgNiAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2luY2x1ZGUvbGludXgvdGltZXIuaCIgMgojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvaW5jbHVkZS9saW51eC90aW1lci5oIgpzdHJ1Y3QgdGltZXJfbGlzdCB7CiAgICAgICAgc3Ry
dWN0IGxpc3RfaGVhZCBsaXN0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXhwaXJlczsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGRhdGE7CiAgICAgICAgdm9pZCAoKmZ1bmN0aW9uKSh1bnNpZ25lZCBs
b25nKTsKfTsKCmV4dGVybiB2b2lkIGFkZF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqIHRpbWVy
KTsKZXh0ZXJuIGludCBkZWxfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKiB0aW1lcik7CiMgNDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3RpbWVyLmgiCmludCBtb2RfdGlt
ZXIoc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyLCB1bnNpZ25lZCBsb25nIGV4cGlyZXMpOwoKZXh0
ZXJuIHZvaWQgaXRfcmVhbF9mbih1bnNpZ25lZCBsb25nKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBp
bml0X3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICogdGltZXIpCnsKICAgICAgICB0aW1lci0+bGlz
dC5uZXh0ID0gdGltZXItPmxpc3QucHJldiA9ICgodm9pZCAqKTApOwp9CgpzdGF0aWMgaW5saW5l
IGludCB0aW1lcl9wZW5kaW5nIChjb25zdCBzdHJ1Y3QgdGltZXJfbGlzdCAqIHRpbWVyKQp7CiAg
ICAgICAgcmV0dXJuIHRpbWVyLT5saXN0Lm5leHQgIT0gKCh2b2lkICopMCk7Cn0KIyAyMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvZXh0M19mc19zYi5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvd2FpdC5oIiAxCiMgMjIgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2V4dDNfZnNfc2IuaCIgMgojIDM1ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9leHQzX2ZzX3NiLmgiCnN0cnVjdCBleHQzX3Ni
X2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mcmFnX3NpemU7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzX2ZyYWdzX3Blcl9ibG9jazsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVz
X3Blcl9ibG9jazsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZnJhZ3NfcGVyX2dyb3VwOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgc19ibG9ja3NfcGVyX2dyb3VwOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgc19pbm9kZXNfcGVyX2dyb3VwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19pdGJfcGVyX2dy
b3VwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19nZGJfY291bnQ7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBzX2Rlc2NfcGVyX2Jsb2NrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19ncm91cHNfY291
bnQ7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc19zYmg7CiAgICAgICAgc3RydWN0IGV4
dDNfc3VwZXJfYmxvY2sgKiBzX2VzOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqKiBzX2dy
b3VwX2Rlc2M7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19sb2FkZWRfaW5vZGVfYml0bWFwczsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX2xvYWRlZF9ibG9ja19iaXRtYXBzOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgc19pbm9kZV9iaXRtYXBfbnVtYmVyWzhdOwogICAgICAgIHN0cnVjdCBidWZm
ZXJfaGVhZCAqIHNfaW5vZGVfYml0bWFwWzhdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19ibG9j
a19iaXRtYXBfbnVtYmVyWzhdOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIHNfYmxvY2tf
Yml0bWFwWzhdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19tb3VudF9vcHQ7CiAgICAgICAgdWlk
X3Qgc19yZXN1aWQ7CiAgICAgICAgZ2lkX3Qgc19yZXNnaWQ7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgc19tb3VudF9zdGF0ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX3BhZDsKICAgICAgICBp
bnQgc19hZGRyX3Blcl9ibG9ja19iaXRzOwogICAgICAgIGludCBzX2Rlc2NfcGVyX2Jsb2NrX2Jp
dHM7CiAgICAgICAgaW50IHNfaW5vZGVfc2l6ZTsKICAgICAgICBpbnQgc19maXJzdF9pbm87CgoK
ICAgICAgICBzdHJ1Y3QgaW5vZGUgKiBzX2pvdXJuYWxfaW5vZGU7CiAgICAgICAgc3RydWN0IGpv
dXJuYWxfcyAqIHNfam91cm5hbDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNfb3JwaGFuOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgc19jb21taXRfaW50ZXJ2YWw7CiAgICAgICAgc3RydWN0IGJs
b2NrX2RldmljZSAqam91cm5hbF9iZGV2OwoKCgoKfTsKIyA2NzQgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5j
bHVkZS9saW51eC9ocGZzX2ZzX3NiLmgiIDEKCgoKc3RydWN0IGhwZnNfc2JfaW5mbyB7CiAgICAg
ICAgaW5vX3Qgc2Jfcm9vdDsKICAgICAgICB1bnNpZ25lZCBzYl9mc19zaXplOwogICAgICAgIHVu
c2lnbmVkIHNiX2JpdG1hcHM7CiAgICAgICAgdW5zaWduZWQgc2JfZGlyYmFuZF9zdGFydDsKICAg
ICAgICB1bnNpZ25lZCBzYl9kaXJiYW5kX3NpemU7CiAgICAgICAgdW5zaWduZWQgc2JfZG1hcDsK
ICAgICAgICB1bnNpZ25lZCBzYl9uX2ZyZWU7CiAgICAgICAgdW5zaWduZWQgc2Jfbl9mcmVlX2Ru
b2RlczsKICAgICAgICB1aWRfdCBzYl91aWQ7CiAgICAgICAgZ2lkX3Qgc2JfZ2lkOwogICAgICAg
IHVtb2RlX3Qgc2JfbW9kZTsKICAgICAgICB1bnNpZ25lZCBzYl9jb252IDogMjsKICAgICAgICB1
bnNpZ25lZCBzYl9lYXMgOiAyOwogICAgICAgIHVuc2lnbmVkIHNiX2VyciA6IDI7CiAgICAgICAg
dW5zaWduZWQgc2JfY2hrIDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9sb3dlcmNhc2UgOiAxOwog
ICAgICAgIHVuc2lnbmVkIHNiX3dhc19lcnJvciA6IDE7CiAgICAgICAgdW5zaWduZWQgc2JfY2hr
ZHNrIDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9yZF9mbm9kZSA6IDI7CiAgICAgICAgdW5zaWdu
ZWQgc2JfcmRfaW5vZGUgOiAyOwoKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgc2JfaWdldF9x
OwogICAgICAgIHVuc2lnbmVkIGNoYXIgKnNiX2NwX3RhYmxlOwoKCiAgICAgICAgdW5zaWduZWQg
KnNiX2JtcF9kaXI7CiAgICAgICAgdW5zaWduZWQgc2JfY19iaXRtYXA7CiAgICAgICAgd2FpdF9x
dWV1ZV9oZWFkX3Qgc2JfY3JlYXRpb25fZGU7CgogICAgICAgIHVuc2lnbmVkIHNiX2NyZWF0aW9u
X2RlX2xvY2sgOiAxOwoKICAgICAgICBpbnQgc2JfdGltZXNoaWZ0Owp9OwojIDY3NSAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9pbmNsdWRlL2xpbnV4L250ZnNfZnNfc2IuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L250ZnNfZnNfaS5oIiAxCiMgNSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvbGludXgvbnRmc19mc19zYi5oIiAyCgpzdHJ1Y3QgbnRmc19zYl9p
bmZvewoKICAgICAgICBudGZzX3VpZF90IHVpZDsKICAgICAgICBudGZzX2dpZF90IGdpZDsKICAg
ICAgICBudG1vZGVfdCB1bWFzazsKICAgICAgICB2b2lkICpubHNfbWFwOwogICAgICAgIHVuc2ln
bmVkIGludCBuZ3Q7CiAgICAgICAgY2hhciBtZnRfem9uZV9tdWx0aXBsaWVyOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgbWZ0X2RhdGFfcG9zOwogICAgICAgIG50ZnNfY2x1c3Rlcl90IG1mdF96b25l
X3BvczsKICAgICAgICBudGZzX2NsdXN0ZXJfdCBtZnRfem9uZV9zdGFydDsKICAgICAgICBudGZz
X2NsdXN0ZXJfdCBtZnRfem9uZV9lbmQ7CiAgICAgICAgbnRmc19jbHVzdGVyX3QgZGF0YTFfem9u
ZV9wb3M7CiAgICAgICAgbnRmc19jbHVzdGVyX3QgZGF0YTJfem9uZV9wb3M7CgoKICAgICAgICBu
dGZzX3NpemVfdCBwYXJ0aXRpb25fYmlhczsKCiAgICAgICAgbnRmc191MzIgYXRfc3RhbmRhcmRf
aW5mb3JtYXRpb247CiAgICAgICAgbnRmc191MzIgYXRfYXR0cmlidXRlX2xpc3Q7CiAgICAgICAg
bnRmc191MzIgYXRfZmlsZV9uYW1lOwogICAgICAgIG50ZnNfdTMyIGF0X3ZvbHVtZV92ZXJzaW9u
OwogICAgICAgIG50ZnNfdTMyIGF0X3NlY3VyaXR5X2Rlc2NyaXB0b3I7CiAgICAgICAgbnRmc191
MzIgYXRfdm9sdW1lX25hbWU7CiAgICAgICAgbnRmc191MzIgYXRfdm9sdW1lX2luZm9ybWF0aW9u
OwogICAgICAgIG50ZnNfdTMyIGF0X2RhdGE7CiAgICAgICAgbnRmc191MzIgYXRfaW5kZXhfcm9v
dDsKICAgICAgICBudGZzX3UzMiBhdF9pbmRleF9hbGxvY2F0aW9uOwogICAgICAgIG50ZnNfdTMy
IGF0X2JpdG1hcDsKICAgICAgICBudGZzX3UzMiBhdF9zeW1saW5rOwoKICAgICAgICBpbnQgc2Vj
dG9yX3NpemU7CiAgICAgICAgaW50IGNsdXN0ZXJfc2l6ZTsKICAgICAgICBpbnQgY2x1c3Rlcl9z
aXplX2JpdHM7CiAgICAgICAgaW50IG1mdF9jbHVzdGVyc19wZXJfcmVjb3JkOwogICAgICAgIGlu
dCBtZnRfcmVjb3JkX3NpemU7CiAgICAgICAgaW50IG1mdF9yZWNvcmRfc2l6ZV9iaXRzOwogICAg
ICAgIGludCBpbmRleF9jbHVzdGVyc19wZXJfcmVjb3JkOwogICAgICAgIGludCBpbmRleF9yZWNv
cmRfc2l6ZTsKICAgICAgICBpbnQgaW5kZXhfcmVjb3JkX3NpemVfYml0czsKICAgICAgICBudGZz
X2NsdXN0ZXJfdCBucl9jbHVzdGVyczsKICAgICAgICBudGZzX2NsdXN0ZXJfdCBtZnRfbGNuOwog
ICAgICAgIG50ZnNfY2x1c3Rlcl90IG1mdF9taXJyX2xjbjsKCiAgICAgICAgdW5zaWduZWQgY2hh
ciAqbWZ0OwogICAgICAgIHVuc2lnbmVkIHNob3J0ICp1cGNhc2U7CiAgICAgICAgdW5zaWduZWQg
aW50IHVwY2FzZV9sZW5ndGg7CgogICAgICAgIHN0cnVjdCBudGZzX2lub2RlX2luZm8gKm1mdF9p
bm87CiAgICAgICAgc3RydWN0IG50ZnNfaW5vZGVfaW5mbyAqbWZ0bWlycjsKICAgICAgICBzdHJ1
Y3QgbnRmc19pbm9kZV9pbmZvICpiaXRtYXA7CiAgICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICpz
YjsKICAgICAgICB1bnNpZ25lZCBjaGFyIGlub19mbGFnczsKfTsKIyA2NzYgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvaW5jbHVkZS9saW51eC9tc2Rvc19mc19zYi5oIiAxCgoKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvaW5jbHVkZS9saW51eC9mYXRfY3ZmLmgiIDEKCgoKCgpzdHJ1Y3QgY3ZmX2Zvcm1hdAp7
IGludCBjdmZfdmVyc2lvbjsKICBjaGFyKiBjdmZfdmVyc2lvbl90ZXh0OwogIHVuc2lnbmVkIGxv
bmcgZmxhZ3M7CiAgaW50ICgqZGV0ZWN0X2N2ZikgKHN0cnVjdCBzdXBlcl9ibG9jaypzYik7CiAg
aW50ICgqbW91bnRfY3ZmKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiLGNoYXIqb3B0aW9ucyk7CiAg
aW50ICgqdW5tb3VudF9jdmYpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sqc2IpOwogIHN0cnVjdCBidWZm
ZXJfaGVhZCogKCpjdmZfYnJlYWQpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sqc2IsaW50IGJsb2NrKTsK
ICBzdHJ1Y3QgYnVmZmVyX2hlYWQqICgqY3ZmX2dldGJsaykgKHN0cnVjdCBzdXBlcl9ibG9jaypz
YixpbnQgYmxvY2spOwogIHZvaWQgKCpjdmZfYnJlbHNlKSAoc3RydWN0IHN1cGVyX2Jsb2NrICpz
YixzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKTsKICB2b2lkICgqY3ZmX21hcmtfYnVmZmVyX2RpcnR5
KSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RydWN0IGJ1ZmZlcl9oZWFkICpiaCk7CiAgdm9pZCAoKmN2Zl9zZXRfdXB0b2RhdGUpIChzdHJ1
Y3Qgc3VwZXJfYmxvY2sgKnNiLAogICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGJ1ZmZl
cl9oZWFkICpiaCwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2YWwpOwogIGludCAoKmN2
Zl9pc191cHRvZGF0ZSkgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2Isc3RydWN0IGJ1ZmZlcl9oZWFk
ICpiaCk7CiAgdm9pZCAoKmN2Zl9sbF9yd19ibG9jaykgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2Is
CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBvcHIsCiAgICAgICAgICAgICAgICAgICAgICAg
IGludCBuYnJlcSwKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpi
aFszMl0pOwogIGludCAoKmZhdF9hY2Nlc3MpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLGludCBu
cixpbnQgbmV3X3ZhbHVlKTsKICBpbnQgKCpjdmZfc3RhdGZzKSAoc3RydWN0IHN1cGVyX2Jsb2Nr
ICpzYixzdHJ1Y3Qgc3RhdGZzICpidWYsIGludCBidWZzaXopOwogIGludCAoKmN2Zl9ibWFwKSAo
c3RydWN0IGlub2RlICppbm9kZSxpbnQgYmxvY2spOwogIHNzaXplX3QgKCpjdmZfZmlsZV9yZWFk
KSAoIHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CiAgc3NpemVfdCAo
KmN2Zl9maWxlX3dyaXRlKSAoIHN0cnVjdCBmaWxlICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBs
b2ZmX3QgKik7CiAgaW50ICgqY3ZmX21tYXApIChzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3Qgdm1fYXJl
YV9zdHJ1Y3QgKik7CiAgaW50ICgqY3ZmX3JlYWRwYWdlKSAoc3RydWN0IGlub2RlICosIHN0cnVj
dCBwYWdlICopOwogIGludCAoKmN2Zl93cml0ZXBhZ2UpIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0
IHBhZ2UgKik7CiAgaW50ICgqY3ZmX2Rpcl9pb2N0bCkgKHN0cnVjdCBpbm9kZSAqIGlub2RlLCBz
dHJ1Y3QgZmlsZSAqIGZpbHAsCiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBj
bWQsIHVuc2lnbmVkIGxvbmcgYXJnKTsKICB2b2lkICgqemVyb19vdXRfY2x1c3RlcikgKHN0cnVj
dCBpbm9kZSosIGludCBjbHVzdGVybnIpOwp9OwoKaW50IHJlZ2lzdGVyX2N2Zl9mb3JtYXQoc3Ry
dWN0IGN2Zl9mb3JtYXQqY3ZmX2Zvcm1hdCk7CmludCB1bnJlZ2lzdGVyX2N2Zl9mb3JtYXQoc3Ry
dWN0IGN2Zl9mb3JtYXQqY3ZmX2Zvcm1hdCk7CnZvaWQgZGVjX2N2Zl9mb3JtYXRfdXNlX2NvdW50
X2J5X3ZlcnNpb24oaW50IHZlcnNpb24pOwppbnQgZGV0ZWN0X2N2ZihzdHJ1Y3Qgc3VwZXJfYmxv
Y2sqc2IsY2hhcipmb3JjZSk7CgpleHRlcm4gc3RydWN0IGN2Zl9mb3JtYXQgKmN2Zl9mb3JtYXRz
W107CmV4dGVybiBpbnQgY3ZmX2Zvcm1hdF91c2VfY291bnRbXTsKIyA0ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvaW5jbHVkZS9saW51eC9tc2Rvc19mc19zYi5oIiAyCgoKCgoKc3RydWN0IGZhdF9t
b3VudF9vcHRpb25zIHsKICAgICAgICB1aWRfdCBmc191aWQ7CiAgICAgICAgZ2lkX3QgZnNfZ2lk
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IGZzX3VtYXNrOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IGNvZGVwYWdlOwogICAgICAgIGNoYXIgKmlvY2hhcnNldDsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBzaG9ydG5hbWU7CiAgICAgICAgdW5zaWduZWQgY2hhciBuYW1lX2NoZWNrOwogICAgICAgIHVu
c2lnbmVkIGNoYXIgY29udmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBxdWlldDoxLAogICAgICAg
ICAgICAgICAgIHNob3dleGVjOjEsCiAgICAgICAgICAgICAgICAgc3lzX2ltbXV0YWJsZToxLAog
ICAgICAgICAgICAgICAgIGRvdHNPSzoxLAogICAgICAgICAgICAgICAgIGlzdmZhdDoxLAogICAg
ICAgICAgICAgICAgIHV0Zjg6MSwKICAgICAgICAgICAgICAgICB1bmljb2RlX3hsYXRlOjEsCiAg
ICAgICAgICAgICAgICAgcG9zaXhmczoxLAogICAgICAgICAgICAgICAgIG51bXRhaWw6MSwKICAg
ICAgICAgICAgICAgICBhdGFyaToxLAogICAgICAgICAgICAgICAgIGZhdDMyOjEsCiAgICAgICAg
ICAgICAgICAgbm9jYXNlOjE7Cn07CgpzdHJ1Y3QgbXNkb3Nfc2JfaW5mbyB7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgY2x1c3Rlcl9zaXplOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNsdXN0ZXJf
Yml0czsKICAgICAgICB1bnNpZ25lZCBjaGFyIGZhdHMsZmF0X2JpdHM7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgZmF0X3N0YXJ0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmF0X2xlbmd0aDsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGRpcl9zdGFydDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkaXJf
ZW50cmllczsKICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGFfc3RhcnQ7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBjbHVzdGVyczsKICAgICAgICB1bnNpZ25lZCBsb25nIHJvb3RfY2x1c3RlcjsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGZzaW5mb19zZWN0b3I7CiAgICAgICAgc3RydWN0IHNlbWFwaG9y
ZSBmYXRfbG9jazsKICAgICAgICBpbnQgcHJldl9mcmVlOwogICAgICAgIGludCBmcmVlX2NsdXN0
ZXJzOwogICAgICAgIHN0cnVjdCBmYXRfbW91bnRfb3B0aW9ucyBvcHRpb25zOwogICAgICAgIHN0
cnVjdCBubHNfdGFibGUgKm5sc19kaXNrOwogICAgICAgIHN0cnVjdCBubHNfdGFibGUgKm5sc19p
bzsKICAgICAgICBzdHJ1Y3QgY3ZmX2Zvcm1hdCogY3ZmX2Zvcm1hdDsKICAgICAgICB2b2lkICpk
aXJfb3BzOwogICAgICAgIHZvaWQgKnByaXZhdGVfZGF0YTsKICAgICAgICBpbnQgZGlyX3Blcl9i
bG9jazsKICAgICAgICBpbnQgZGlyX3Blcl9ibG9ja19iaXRzOwp9OwojIDY3NyAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9pbmNsdWRlL2xpbnV4L2lzb19mc19zYi5oIiAxCgoKCgoKCnN0cnVjdCBpc29mc19zYl9p
bmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfbmlub2RlczsKICAgICAgICB1bnNpZ25lZCBs
b25nIHNfbnpvbmVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19maXJzdGRhdGF6b25lOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgc19sb2dfem9uZV9zaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
c19tYXhfc2l6ZTsKCiAgICAgICAgdW5zaWduZWQgY2hhciBzX2hpZ2hfc2llcnJhOwogICAgICAg
IHVuc2lnbmVkIGNoYXIgc19tYXBwaW5nOwogICAgICAgIGludCBzX3JvY2tfb2Zmc2V0OwogICAg
ICAgIHVuc2lnbmVkIGNoYXIgc19yb2NrOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19qb2xpZXRf
bGV2ZWw7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX3V0Zjg7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBzX2NydWZ0OwoKCiAgICAgICAgdW5zaWduZWQgY2hhciBzX3VuaGlkZTsKICAgICAgICB1bnNp
Z25lZCBjaGFyIHNfbm9zdWlkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19ub2RldjsKICAgICAg
ICB1bnNpZ25lZCBjaGFyIHNfbm9jb21wcmVzczsKCiAgICAgICAgbW9kZV90IHNfbW9kZTsKICAg
ICAgICBnaWRfdCBzX2dpZDsKICAgICAgICB1aWRfdCBzX3VpZDsKICAgICAgICBzdHJ1Y3Qgbmxz
X3RhYmxlICpzX25sc19pb2NoYXJzZXQ7Cn07CiMgNjc4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
aW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUv
bGludXgvbmZzX2ZzX3NiLmgiIDEKCgoKCgoKc3RydWN0IG5mc19zZXJ2ZXIgewogICAgICAgIHN0
cnVjdCBycGNfY2xudCAqIGNsaWVudDsKICAgICAgICBzdHJ1Y3QgbmZzX3JwY19vcHMgKiBycGNf
b3BzOwogICAgICAgIGludCBmbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQgcnNpemU7CiAgICAg
ICAgdW5zaWduZWQgaW50IHJwYWdlczsKICAgICAgICB1bnNpZ25lZCBpbnQgd3NpemU7CiAgICAg
ICAgdW5zaWduZWQgaW50IHdwYWdlczsKICAgICAgICB1bnNpZ25lZCBpbnQgZHRzaXplOwogICAg
ICAgIHVuc2lnbmVkIGludCBic2l6ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgYWNyZWdtaW47CiAg
ICAgICAgdW5zaWduZWQgaW50IGFjcmVnbWF4OwogICAgICAgIHVuc2lnbmVkIGludCBhY2Rpcm1p
bjsKICAgICAgICB1bnNpZ25lZCBpbnQgYWNkaXJtYXg7CiAgICAgICAgdW5zaWduZWQgaW50IG5h
bWVsZW47CiAgICAgICAgY2hhciAqIGhvc3RuYW1lOwogICAgICAgIHN0cnVjdCBuZnNfcmVxbGlz
dCAqIHJ3X3JlcXVlc3RzOwp9OwoKCgoKc3RydWN0IG5mc19zYl9pbmZvIHsKICAgICAgICBzdHJ1
Y3QgbmZzX3NlcnZlciBzX3NlcnZlcjsKfTsKIyA2NzkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9p
bmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9s
aW51eC9zeXN2X2ZzX3NiLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUv
bGludXgvc3lzdl9mc19zYi5oIgpzdHJ1Y3Qgc3lzdl9zYl9pbmZvIHsKICAgICAgICBpbnQgc190
eXBlOwogICAgICAgIGNoYXIgc19ieXRlc2V4OwogICAgICAgIGNoYXIgc190cnVuY2F0ZTsKCiAg
ICAgICAgbmxpbmtfdCBzX2xpbmtfbWF4OwogICAgICAgIHVuc2lnbmVkIGludCBzX2lub2Rlc19w
ZXJfYmxvY2s7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5vZGVzX3Blcl9ibG9ja18xOwogICAg
ICAgIHVuc2lnbmVkIGludCBzX2lub2Rlc19wZXJfYmxvY2tfYml0czsKICAgICAgICB1bnNpZ25l
ZCBpbnQgc19pbmRfcGVyX2Jsb2NrOwogICAgICAgIHVuc2lnbmVkIGludCBzX2luZF9wZXJfYmxv
Y2tfYml0czsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbmRfcGVyX2Jsb2NrXzI7CiAgICAgICAg
dW5zaWduZWQgaW50IHNfdG9vYmlnX2Jsb2NrOwogICAgICAgIHVuc2lnbmVkIGludCBzX2Jsb2Nr
X2Jhc2U7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19maWNfc2l6ZTsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBzX2ZsY19zaXplOwoKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfYmgxOwog
ICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqc19iaDI7CgoKICAgICAgICBjaGFyICogc19zYmQx
OwogICAgICAgIGNoYXIgKiBzX3NiZDI7CiAgICAgICAgdTE2ICpzX3NiX2ZpY19jb3VudDsKICAg
ICAgICB1MTYgKnNfc2JfZmljX2lub2RlczsKICAgICAgICB1MTYgKnNfc2JfdG90YWxfZnJlZV9p
bm9kZXM7CiAgICAgICAgdTE2ICpzX2JjYWNoZV9jb3VudDsKICAgICAgICB1MzIgKnNfYmNhY2hl
OwogICAgICAgIHUzMiAqc19mcmVlX2Jsb2NrczsKICAgICAgICB1MzIgKnNfc2JfdGltZTsKICAg
ICAgICB1MzIgKnNfc2Jfc3RhdGU7CgoKICAgICAgICB1MzIgc19maXJzdGlub2Rlem9uZTsKICAg
ICAgICB1MzIgc19maXJzdGRhdGF6b25lOwogICAgICAgIHUzMiBzX25pbm9kZXM7CiAgICAgICAg
dTMyIHNfbmRhdGF6b25lczsKICAgICAgICB1MzIgc19uem9uZXM7CiAgICAgICAgdTE2IHNfbmFt
ZWxlbjsKfTsKIyA2ODAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2ZzLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9hZmZzX2ZzX3NiLmgi
IDEKIyAxMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvYWZmc19mc19zYi5o
IgpzdHJ1Y3QgYWZmc19ibV9pbmZvIHsKICAgICAgICB1MzIgYm1fa2V5OwogICAgICAgIHUzMiBi
bV9mcmVlOwp9OwoKc3RydWN0IGFmZnNfc2JfaW5mbyB7CiAgICAgICAgaW50IHNfcGFydGl0aW9u
X3NpemU7CiAgICAgICAgaW50IHNfcmVzZXJ2ZWQ7CgogICAgICAgIHUzMiBzX2RhdGFfYmxrc2l6
ZTsKICAgICAgICB1MzIgc19yb290X2Jsb2NrOwogICAgICAgIGludCBzX2hhc2hzaXplOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgc19mbGFnczsKICAgICAgICB1aWRfdCBzX3VpZDsKICAgICAgICBn
aWRfdCBzX2dpZDsKICAgICAgICB1bW9kZV90IHNfbW9kZTsKICAgICAgICBzdHJ1Y3QgYnVmZmVy
X2hlYWQgKnNfcm9vdF9iaDsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNfYm1sb2NrOwogICAg
ICAgIHN0cnVjdCBhZmZzX2JtX2luZm8gKnNfYml0bWFwOwogICAgICAgIHUzMiBzX2JtYXBfY291
bnQ7CiAgICAgICAgdTMyIHNfYm1hcF9iaXRzOwogICAgICAgIHUzMiBzX2xhc3RfYm1hcDsKICAg
ICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfYm1hcF9iaDsKICAgICAgICBjaGFyICpzX3ByZWZp
eDsKICAgICAgICBpbnQgc19wcmVmaXhfbGVuOwogICAgICAgIGNoYXIgc192b2x1bWVbMzJdOwp9
OwojIDY4MSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3Vmc19mc19zYi5oIiAxCiMgMTcg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3Vmc19mc19zYi5oIgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIiAxCiMgMzAgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAzMSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2luY2x1ZGUvbGludXgvdWZzX2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMQojIDMyICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
aW5jbHVkZS9saW51eC91ZnNfZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNs
dWRlL2xpbnV4L3RpbWUuaCIgMQojIDMzICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9s
aW51eC91ZnNfZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4
L3N0YXQuaCIgMQojIDM0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC91ZnNf
ZnMuaCIgMgojIDIzNyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvdWZzX2Zz
LmgiCnN0cnVjdCB1ZnNfdGltZXZhbCB7CiAgICAgICAgX19zMzIgdHZfc2VjOwogICAgICAgIF9f
czMyIHR2X3VzZWM7Cn07CgpzdHJ1Y3QgdWZzX2Rpcl9lbnRyeSB7CiAgICAgICAgX191MzIgZF9p
bm87CiAgICAgICAgX191MTYgZF9yZWNsZW47CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAg
ICAgX191MTYgZF9uYW1sZW47CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAg
ICAgICAgICAgICBfX3U4IGRfdHlwZTsKICAgICAgICAgICAgICAgICAgICAgICAgX191OCBkX25h
bWxlbjsKICAgICAgICAgICAgICAgIH0gZF80NDsKICAgICAgICB9IGRfdTsKICAgICAgICBfX3U4
IGRfbmFtZVsyNTUgKyAxXTsKfTsKCnN0cnVjdCB1ZnNfY3N1bSB7CiAgICAgICAgX191MzIgY3Nf
bmRpcjsKICAgICAgICBfX3UzMiBjc19uYmZyZWU7CiAgICAgICAgX191MzIgY3NfbmlmcmVlOwog
ICAgICAgIF9fdTMyIGNzX25mZnJlZTsKfTsKCgoKCnN0cnVjdCB1ZnNfc3VwZXJfYmxvY2sgewog
ICAgICAgIF9fdTMyIGZzX2xpbms7CiAgICAgICAgX191MzIgZnNfcmxpbms7CiAgICAgICAgX191
MzIgZnNfc2Jsa25vOwogICAgICAgIF9fdTMyIGZzX2NibGtubzsKICAgICAgICBfX3UzMiBmc19p
Ymxrbm87CiAgICAgICAgX191MzIgZnNfZGJsa25vOwogICAgICAgIF9fdTMyIGZzX2Nnb2Zmc2V0
OwogICAgICAgIF9fdTMyIGZzX2NnbWFzazsKICAgICAgICBfX3UzMiBmc190aW1lOwogICAgICAg
IF9fdTMyIGZzX3NpemU7CiAgICAgICAgX191MzIgZnNfZHNpemU7CiAgICAgICAgX191MzIgZnNf
bmNnOwogICAgICAgIF9fdTMyIGZzX2JzaXplOwogICAgICAgIF9fdTMyIGZzX2ZzaXplOwogICAg
ICAgIF9fdTMyIGZzX2ZyYWc7CgogICAgICAgIF9fdTMyIGZzX21pbmZyZWU7CiAgICAgICAgX191
MzIgZnNfcm90ZGVsYXk7CiAgICAgICAgX191MzIgZnNfcnBzOwoKICAgICAgICBfX3UzMiBmc19i
bWFzazsKICAgICAgICBfX3UzMiBmc19mbWFzazsKICAgICAgICBfX3UzMiBmc19ic2hpZnQ7CiAg
ICAgICAgX191MzIgZnNfZnNoaWZ0OwoKICAgICAgICBfX3UzMiBmc19tYXhjb250aWc7CiAgICAg
ICAgX191MzIgZnNfbWF4YnBnOwoKICAgICAgICBfX3UzMiBmc19mcmFnc2hpZnQ7CiAgICAgICAg
X191MzIgZnNfZnNidG9kYjsKICAgICAgICBfX3UzMiBmc19zYnNpemU7CiAgICAgICAgX191MzIg
ZnNfY3NtYXNrOwogICAgICAgIF9fdTMyIGZzX2Nzc2hpZnQ7CiAgICAgICAgX191MzIgZnNfbmlu
ZGlyOwogICAgICAgIF9fdTMyIGZzX2lub3BiOwogICAgICAgIF9fdTMyIGZzX25zcGY7CgogICAg
ICAgIF9fdTMyIGZzX29wdGltOwoKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1
Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19ucHNlY3Q7CiAgICAgICAgICAg
ICAgICB9IGZzX3N1bjsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fczMyIGZzX3N0YXRlOwogICAgICAgICAgICAgICAgfSBmc19zdW54ODY7CiAgICAg
ICAgfSBmc191MTsKICAgICAgICBfX3UzMiBmc19pbnRlcmxlYXZlOwogICAgICAgIF9fdTMyIGZz
X3RyYWNrc2tldzsKCgoKCiAgICAgICAgX191MzIgZnNfaWRbMl07CgogICAgICAgIF9fdTMyIGZz
X2NzYWRkcjsKICAgICAgICBfX3UzMiBmc19jc3NpemU7CiAgICAgICAgX191MzIgZnNfY2dzaXpl
OwoKICAgICAgICBfX3UzMiBmc19udHJhazsKICAgICAgICBfX3UzMiBmc19uc2VjdDsKICAgICAg
ICBfX3UzMiBmc19zcGM7CgogICAgICAgIF9fdTMyIGZzX25jeWw7CgogICAgICAgIF9fdTMyIGZz
X2NwZzsKICAgICAgICBfX3UzMiBmc19pcGc7CiAgICAgICAgX191MzIgZnNfZnBnOwoKICAgICAg
ICBzdHJ1Y3QgdWZzX2NzdW0gZnNfY3N0b3RhbDsKCiAgICAgICAgX19zOCBmc19mbW9kOwogICAg
ICAgIF9fczggZnNfY2xlYW47CiAgICAgICAgX19zOCBmc19yb25seTsKICAgICAgICBfX3M4IGZz
X2ZsYWdzOwogICAgICAgIF9fczggZnNfZnNtbnRbNTEyXTsKCiAgICAgICAgX191MzIgZnNfY2dy
b3RvcjsKICAgICAgICBfX3UzMiBmc19jc3BbMzFdOwogICAgICAgIF9fdTMyIGZzX21heGNsdXN0
ZXI7CiAgICAgICAgX191MzIgZnNfY3BjOwogICAgICAgIF9fdTE2IGZzX29wb3N0YmxbMTZdWzhd
OwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uWzUzXTsKICAgICAgICAgICAgICAgICAgICAgICAg
X19zMzIgZnNfcmVjbGFpbTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVj
b24yWzFdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zdGF0ZTsKICAgICAgICAg
ICAgICAgICAgICAgICAgX191MzIgZnNfcWJtYXNrWzJdOwogICAgICAgICAgICAgICAgICAgICAg
ICBfX3UzMiBmc19xZm1hc2tbMl07CiAgICAgICAgICAgICAgICB9IGZzX3N1bjsKICAgICAgICAg
ICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29u
WzUzXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfcmVjbGFpbTsKICAgICAgICAg
ICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb24yWzFdOwogICAgICAgICAgICAgICAgICAg
ICAgICBfX3UzMiBmc19ucHNlY3Q7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3Fi
bWFza1syXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAg
ICAgICAgICAgICAgfSBmc19zdW54ODY7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAg
ICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbls1MF07CiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fczMyIGZzX2NvbnRpZ3N1bXNpemU7CiAgICAgICAgICAgICAgICAgICAgICAgIF9f
czMyIGZzX21heHN5bWxpbmtsZW47CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX2lu
b2RlZm10OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19tYXhmaWxlc2l6ZVsyXTsK
ICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWJtYXNrWzJdOwogICAgICAgICAgICAg
ICAgICAgICAgICBfX3UzMiBmc19xZm1hc2tbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9f
czMyIGZzX3N0YXRlOwogICAgICAgICAgICAgICAgfSBmc180NDsKICAgICAgICB9IGZzX3UyOwog
ICAgICAgIF9fczMyIGZzX3Bvc3RibGZvcm1hdDsKICAgICAgICBfX3MzMiBmc19ucnBvczsKICAg
ICAgICBfX3MzMiBmc19wb3N0YmxvZmY7CiAgICAgICAgX19zMzIgZnNfcm90YmxvZmY7CiAgICAg
ICAgX19zMzIgZnNfbWFnaWM7CiAgICAgICAgX191OCBmc19zcGFjZVsxXTsKfTsKIyA0MTUgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIgpzdHJ1Y3QgdWZzX2N5
bGluZGVyX2dyb3VwIHsKICAgICAgICBfX3UzMiBjZ19saW5rOwogICAgICAgIF9fdTMyIGNnX21h
Z2ljOwogICAgICAgIF9fdTMyIGNnX3RpbWU7CiAgICAgICAgX191MzIgY2dfY2d4OwogICAgICAg
IF9fdTE2IGNnX25jeWw7CiAgICAgICAgX191MTYgY2dfbmlibGs7CiAgICAgICAgX191MzIgY2df
bmRibGs7CiAgICAgICAgc3RydWN0IHVmc19jc3VtIGNnX2NzOwogICAgICAgIF9fdTMyIGNnX3Jv
dG9yOwogICAgICAgIF9fdTMyIGNnX2Zyb3RvcjsKICAgICAgICBfX3UzMiBjZ19pcm90b3I7CiAg
ICAgICAgX191MzIgY2dfZnJzdW1bKDgxOTIgLyAxMDI0KV07CiAgICAgICAgX191MzIgY2dfYnRv
dG9mZjsKICAgICAgICBfX3UzMiBjZ19ib2ZmOwogICAgICAgIF9fdTMyIGNnX2l1c2Vkb2ZmOwog
ICAgICAgIF9fdTMyIGNnX2ZyZWVvZmY7CiAgICAgICAgX191MzIgY2dfbmV4dGZyZWVvZmY7CiAg
ICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAg
ICAgICAgX191MzIgY2dfY2x1c3RlcnN1bW9mZjsKICAgICAgICAgICAgICAgICAgICAgICAgX191
MzIgY2dfY2x1c3Rlcm9mZjsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgY2dfbmNsdXN0
ZXJibGtzOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBjZ19zcGFyZWNvblsxM107CiAg
ICAgICAgICAgICAgICB9IGNnXzQ0OwogICAgICAgICAgICAgICAgX191MzIgY2dfc3BhcmVjb25b
MTZdOwogICAgICAgIH0gY2dfdTsKICAgICAgICBfX3U4IGNnX3NwYWNlWzFdOwoKfTsKCgoKCnN0
cnVjdCB1ZnNfaW5vZGUgewogICAgICAgIF9fdTE2IHVpX21vZGU7CiAgICAgICAgX191MTYgdWlf
bmxpbms7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAg
ICAgICAgICAgICAgICAgX191MTYgdWlfc3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgX191
MTYgdWlfc2dpZDsKICAgICAgICAgICAgICAgIH0gb2xkaWRzOwogICAgICAgICAgICAgICAgX191
MzIgdWlfaW51bWJlcjsKICAgICAgICAgICAgICAgIF9fdTMyIHVpX2F1dGhvcjsKICAgICAgICB9
IHVpX3UxOwogICAgICAgIF9fdTY0IHVpX3NpemU7CiAgICAgICAgc3RydWN0IHVmc190aW1ldmFs
IHVpX2F0aW1lOwogICAgICAgIHN0cnVjdCB1ZnNfdGltZXZhbCB1aV9tdGltZTsKICAgICAgICBz
dHJ1Y3QgdWZzX3RpbWV2YWwgdWlfY3RpbWU7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAg
ICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfZGJbMTJdOwogICAg
ICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9pYlszXTsKICAgICAgICAgICAgICAgIH0gdWlf
YWRkcjsKICAgICAgICAgICAgICAgIF9fdTggdWlfc3ltbGlua1s0KigxMiArMyldOwogICAgICAg
IH0gdWlfdTI7CiAgICAgICAgX191MzIgdWlfZmxhZ3M7CiAgICAgICAgX191MzIgdWlfYmxvY2tz
OwogICAgICAgIF9fdTMyIHVpX2dlbjsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBz
dHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9zaGFkb3c7CiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fdTMyIHVpX3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgX191
MzIgdWlfZ2lkOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9vZWZ0ZmxhZzsKICAg
ICAgICAgICAgICAgIH0gdWlfc3VuOwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAg
ICAgICAgICAgICAgICAgX191MzIgdWlfdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBfX3Uz
MiB1aV9naWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIHVpX3NwYXJlWzJdOwogICAg
ICAgICAgICAgICAgfSB1aV80NDsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fdTMyIHVpX3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIg
dWlfZ2lkOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UxNiB1aV9tb2RlaDsKICAgICAgICAg
ICAgICAgICAgICAgICAgX191MTYgdWlfc3BhcmU7CiAgICAgICAgICAgICAgICAgICAgICAgIF9f
dTMyIHVpX3RyYW5zOwogICAgICAgICAgICAgICAgfSB1aV9odXJkOwogICAgICAgIH0gdWlfdTM7
Cn07CiMgNTE0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC91ZnNfZnMuaCIK
ZXh0ZXJuIHZvaWQgdWZzX2ZyZWVfZnJhZ21lbnRzIChzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQs
IHVuc2lnbmVkKTsKZXh0ZXJuIHZvaWQgdWZzX2ZyZWVfYmxvY2tzIChzdHJ1Y3QgaW5vZGUgKiwg
dW5zaWduZWQsIHVuc2lnbmVkKTsKZXh0ZXJuIHVuc2lnbmVkIHVmc19uZXdfZnJhZ21lbnRzIChz
dHJ1Y3QgaW5vZGUgKiwgdTMyICosIHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWduZWQsIGludCAq
KTsKCgpleHRlcm4gc3RydWN0IHVmc19jZ19wcml2YXRlX2luZm8gKiB1ZnNfbG9hZF9jeWxpbmRl
ciAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkKTsKZXh0ZXJuIHZvaWQgdWZzX3B1dF9j
eWxpbmRlciAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkKTsKCgpleHRlcm4gc3RydWN0
IGlub2RlX29wZXJhdGlvbnMgdWZzX2Rpcl9pbm9kZV9vcGVyYXRpb25zOwpleHRlcm4gaW50IHVm
c19jaGVja19kaXJfZW50cnkgKGNvbnN0IGNoYXIgKiwgc3RydWN0IGlub2RlICosIHN0cnVjdCB1
ZnNfZGlyX2VudHJ5ICosIHN0cnVjdCBidWZmZXJfaGVhZCAqLCB1bnNpZ25lZCBsb25nKTsKZXh0
ZXJuIGludCB1ZnNfYWRkX2xpbmsgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlub2RlICopOwpl
eHRlcm4gaW5vX3QgdWZzX2lub2RlX2J5X25hbWUoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50
cnkgKik7CmV4dGVybiBpbnQgdWZzX21ha2VfZW1wdHkoc3RydWN0IGlub2RlICosIHN0cnVjdCBp
bm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCB1ZnNfZGlyX2VudHJ5ICogdWZzX2ZpbmRfZW50cnkgKHN0
cnVjdCBkZW50cnkgKiwgc3RydWN0IGJ1ZmZlcl9oZWFkICoqKTsKZXh0ZXJuIGludCB1ZnNfZGVs
ZXRlX2VudHJ5IChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHVmc19kaXJfZW50cnkgKiwgc3RydWN0
IGJ1ZmZlcl9oZWFkICopOwpleHRlcm4gaW50IHVmc19lbXB0eV9kaXIgKHN0cnVjdCBpbm9kZSAq
KTsKZXh0ZXJuIHN0cnVjdCB1ZnNfZGlyX2VudHJ5ICogdWZzX2RvdGRvdCAoc3RydWN0IGlub2Rl
ICosIHN0cnVjdCBidWZmZXJfaGVhZCAqKik7CmV4dGVybiB2b2lkIHVmc19zZXRfbGluayhzdHJ1
Y3QgaW5vZGUgKiwgc3RydWN0IHVmc19kaXJfZW50cnkgKiwgc3RydWN0IGJ1ZmZlcl9oZWFkICos
IHN0cnVjdCBpbm9kZSAqKTsKCgpleHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMgdWZzX2Zp
bGVfaW5vZGVfb3BlcmF0aW9uczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdWZzX2Zp
bGVfb3BlcmF0aW9uczsKCmV4dGVybiBzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zIHVm
c19hb3BzOwoKCmV4dGVybiB2b2lkIHVmc19mcmVlX2lub2RlIChzdHJ1Y3QgaW5vZGUgKmlub2Rl
KTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAqIHVmc19uZXdfaW5vZGUgKGNvbnN0IHN0cnVjdCBpbm9k
ZSAqLCBpbnQpOwoKCmV4dGVybiBpbnQgdWZzX2ZyYWdfbWFwIChzdHJ1Y3QgaW5vZGUgKiwgaW50
KTsKZXh0ZXJuIHZvaWQgdWZzX3JlYWRfaW5vZGUgKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZv
aWQgdWZzX3B1dF9pbm9kZSAoc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCB1ZnNfd3JpdGVf
aW5vZGUgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpleHRlcm4gaW50IHVmc19zeW5jX2lub2RlIChz
dHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIHVmc19kZWxldGVfaW5vZGUgKHN0cnVjdCBpbm9k
ZSAqKTsKZXh0ZXJuIHN0cnVjdCBidWZmZXJfaGVhZCAqIHVmc19nZXRmcmFnIChzdHJ1Y3QgaW5v
ZGUgKiwgdW5zaWduZWQsIGludCwgaW50ICopOwpleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICog
dWZzX2JyZWFkIChzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQsIGludCwgaW50ICopOwoKCmV4dGVy
biBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHVmc19kaXJfb3BlcmF0aW9uczsKCgpleHRlcm4gc3Ry
dWN0IGZpbGVfc3lzdGVtX3R5cGUgdWZzX2ZzX3R5cGU7CmV4dGVybiB2b2lkIHVmc193YXJuaW5n
IChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLikg
X19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAzLCA0KSkpOwpleHRlcm4gdm9pZCB1ZnNf
ZXJyb3IgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwg
Li4uKSBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChwcmludGYsIDMsIDQpKSk7CmV4dGVybiB2b2lk
IHVmc19wYW5pYyAoc3RydWN0IHN1cGVyX2Jsb2NrICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh
ciAqLCAuLi4pIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMywgNCkpKTsKZXh0ZXJu
IHZvaWQgdWZzX3dyaXRlX3N1cGVyIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CgoKZXh0ZXJuIHN0
cnVjdCBpbm9kZV9vcGVyYXRpb25zIHVmc19mYXN0X3N5bWxpbmtfaW5vZGVfb3BlcmF0aW9uczsK
CgpleHRlcm4gdm9pZCB1ZnNfdHJ1bmNhdGUgKHN0cnVjdCBpbm9kZSAqKTsKIyAxOCAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvdWZzX2ZzX3NiLmgiIDIKCgoKCgpzdHJ1Y3Qg
dWZzX2J1ZmZlcl9oZWFkIHsKICAgICAgICB1bnNpZ25lZCBmcmFnbWVudDsKICAgICAgICB1bnNp
Z25lZCBjb3VudDsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaFsoODE5MiAvIDEwMjQp
XTsKfTsKCnN0cnVjdCB1ZnNfY2dfcHJpdmF0ZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgdWZzX2N5
bGluZGVyX2dyb3VwIHVjZzsKICAgICAgICBfX3UzMiBjX2NneDsKICAgICAgICBfX3UxNiBjX25j
eWw7CiAgICAgICAgX191MTYgY19uaWJsazsKICAgICAgICBfX3UzMiBjX25kYmxrOwogICAgICAg
IF9fdTMyIGNfcm90b3I7CiAgICAgICAgX191MzIgY19mcm90b3I7CiAgICAgICAgX191MzIgY19p
cm90b3I7CiAgICAgICAgX191MzIgY19idG90b2ZmOwogICAgICAgIF9fdTMyIGNfYm9mZjsKICAg
ICAgICBfX3UzMiBjX2l1c2Vkb2ZmOwogICAgICAgIF9fdTMyIGNfZnJlZW9mZjsKICAgICAgICBf
X3UzMiBjX25leHRmcmVlb2ZmOwogICAgICAgIF9fdTMyIGNfY2x1c3RlcnN1bW9mZjsKICAgICAg
ICBfX3UzMiBjX2NsdXN0ZXJvZmY7CiAgICAgICAgX191MzIgY19uY2x1c3RlcmJsa3M7Cn07Cgpz
dHJ1Y3QgdWZzX3NiX3ByaXZhdGVfaW5mbyB7CiAgICAgICAgc3RydWN0IHVmc19idWZmZXJfaGVh
ZCBzX3ViaDsKICAgICAgICBfX3UzMiBzX3NibGtubzsKICAgICAgICBfX3UzMiBzX2NibGtubzsK
ICAgICAgICBfX3UzMiBzX2libGtubzsKICAgICAgICBfX3UzMiBzX2RibGtubzsKICAgICAgICBf
X3UzMiBzX2Nnb2Zmc2V0OwogICAgICAgIF9fdTMyIHNfY2dtYXNrOwogICAgICAgIF9fdTMyIHNf
c2l6ZTsKICAgICAgICBfX3UzMiBzX2RzaXplOwogICAgICAgIF9fdTMyIHNfbmNnOwogICAgICAg
IF9fdTMyIHNfYnNpemU7CiAgICAgICAgX191MzIgc19mc2l6ZTsKICAgICAgICBfX3UzMiBzX2Zw
YjsKICAgICAgICBfX3UzMiBzX21pbmZyZWU7CiAgICAgICAgX191MzIgc19ibWFzazsKICAgICAg
ICBfX3UzMiBzX2ZtYXNrOwogICAgICAgIF9fdTMyIHNfYnNoaWZ0OwogICAgICAgIF9fdTMyIHNf
ZnNoaWZ0OwogICAgICAgIF9fdTMyIHNfZnBic2hpZnQ7CiAgICAgICAgX191MzIgc19mc2J0b2Ri
OwogICAgICAgIF9fdTMyIHNfc2JzaXplOwogICAgICAgIF9fdTMyIHNfY3NtYXNrOwogICAgICAg
IF9fdTMyIHNfY3NzaGlmdDsKICAgICAgICBfX3UzMiBzX25pbmRpcjsKICAgICAgICBfX3UzMiBz
X2lub3BiOwogICAgICAgIF9fdTMyIHNfbnNwZjsKICAgICAgICBfX3UzMiBzX25wc2VjdDsKICAg
ICAgICBfX3UzMiBzX2ludGVybGVhdmU7CiAgICAgICAgX191MzIgc190cmFja3NrZXc7CiAgICAg
ICAgX191MzIgc19jc2FkZHI7CiAgICAgICAgX191MzIgc19jc3NpemU7CiAgICAgICAgX191MzIg
c19jZ3NpemU7CiAgICAgICAgX191MzIgc19udHJhazsKICAgICAgICBfX3UzMiBzX25zZWN0Owog
ICAgICAgIF9fdTMyIHNfc3BjOwogICAgICAgIF9fdTMyIHNfaXBnOwogICAgICAgIF9fdTMyIHNf
ZnBnOwogICAgICAgIF9fdTMyIHNfY3BjOwogICAgICAgIF9fczMyIHNfY29udGlnc3Vtc2l6ZTsK
ICAgICAgICBfX3M2NCBzX3FibWFzazsKICAgICAgICBfX3M2NCBzX3FmbWFzazsKICAgICAgICBf
X3MzMiBzX3Bvc3RibGZvcm1hdDsKICAgICAgICBfX3MzMiBzX25ycG9zOwogICAgICAgIF9fczMy
IHNfcG9zdGJsb2ZmOwogICAgICAgIF9fczMyIHNfcm90YmxvZmY7CgogICAgICAgIF9fdTMyIHNf
ZnBibWFzazsKICAgICAgICBfX3UzMiBzX2FwYjsKICAgICAgICBfX3UzMiBzXzJhcGI7CiAgICAg
ICAgX191MzIgc18zYXBiOwogICAgICAgIF9fdTMyIHNfYXBibWFzazsKICAgICAgICBfX3UzMiBz
X2FwYnNoaWZ0OwogICAgICAgIF9fdTMyIHNfMmFwYnNoaWZ0OwogICAgICAgIF9fdTMyIHNfM2Fw
YnNoaWZ0OwogICAgICAgIF9fdTMyIHNfbnNwZnNoaWZ0OwogICAgICAgIF9fdTMyIHNfbnNwYjsK
ICAgICAgICBfX3UzMiBzX2lub3BmOwogICAgICAgIF9fdTMyIHNfc2JiYXNlOwogICAgICAgIF9f
dTMyIHNfYnBmOwogICAgICAgIF9fdTMyIHNfYnBmc2hpZnQ7CiAgICAgICAgX191MzIgc19icGZt
YXNrOwoKICAgICAgICBfX3UzMiBzX21heHN5bWxpbmtsZW47Cn07CgoKCgoKc3RydWN0IHVmc19z
Yl9pbmZvIHsKICAgICAgICBzdHJ1Y3QgdWZzX3NiX3ByaXZhdGVfaW5mbyAqIHNfdXNwaTsKICAg
ICAgICBzdHJ1Y3QgdWZzX2NzdW0gKiBzX2NzcFszMV07CiAgICAgICAgdW5zaWduZWQgc19ieXRl
c2V4OwogICAgICAgIHVuc2lnbmVkIHNfZmxhZ3M7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFk
ICoqIHNfdWNnOwogICAgICAgIHN0cnVjdCB1ZnNfY2dfcHJpdmF0ZV9pbmZvICogc191Y3BpWzhd
OwogICAgICAgIHVuc2lnbmVkIHNfY2dub1s4XTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX2Nn
X2xvYWRlZDsKICAgICAgICB1bnNpZ25lZCBzX21vdW50X29wdDsKfTsKCgoKCgoKCnN0cnVjdCB1
ZnNfc3VwZXJfYmxvY2tfZmlyc3QgewogICAgICAgIF9fdTMyIGZzX2xpbms7CiAgICAgICAgX191
MzIgZnNfcmxpbms7CiAgICAgICAgX191MzIgZnNfc2Jsa25vOwogICAgICAgIF9fdTMyIGZzX2Ni
bGtubzsKICAgICAgICBfX3UzMiBmc19pYmxrbm87CiAgICAgICAgX191MzIgZnNfZGJsa25vOwog
ICAgICAgIF9fdTMyIGZzX2Nnb2Zmc2V0OwogICAgICAgIF9fdTMyIGZzX2NnbWFzazsKICAgICAg
ICBfX3UzMiBmc190aW1lOwogICAgICAgIF9fdTMyIGZzX3NpemU7CiAgICAgICAgX191MzIgZnNf
ZHNpemU7CiAgICAgICAgX191MzIgZnNfbmNnOwogICAgICAgIF9fdTMyIGZzX2JzaXplOwogICAg
ICAgIF9fdTMyIGZzX2ZzaXplOwogICAgICAgIF9fdTMyIGZzX2ZyYWc7CiAgICAgICAgX191MzIg
ZnNfbWluZnJlZTsKICAgICAgICBfX3UzMiBmc19yb3RkZWxheTsKICAgICAgICBfX3UzMiBmc19y
cHM7CiAgICAgICAgX191MzIgZnNfYm1hc2s7CiAgICAgICAgX191MzIgZnNfZm1hc2s7CiAgICAg
ICAgX191MzIgZnNfYnNoaWZ0OwogICAgICAgIF9fdTMyIGZzX2ZzaGlmdDsKICAgICAgICBfX3Uz
MiBmc19tYXhjb250aWc7CiAgICAgICAgX191MzIgZnNfbWF4YnBnOwogICAgICAgIF9fdTMyIGZz
X2ZyYWdzaGlmdDsKICAgICAgICBfX3UzMiBmc19mc2J0b2RiOwogICAgICAgIF9fdTMyIGZzX3Ni
c2l6ZTsKICAgICAgICBfX3UzMiBmc19jc21hc2s7CiAgICAgICAgX191MzIgZnNfY3NzaGlmdDsK
ICAgICAgICBfX3UzMiBmc19uaW5kaXI7CiAgICAgICAgX191MzIgZnNfaW5vcGI7CiAgICAgICAg
X191MzIgZnNfbnNwZjsKICAgICAgICBfX3UzMiBmc19vcHRpbTsKICAgICAgICB1bmlvbiB7CiAg
ICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19u
cHNlY3Q7CiAgICAgICAgICAgICAgICB9IGZzX3N1bjsKICAgICAgICAgICAgICAgIHN0cnVjdCB7
CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3N0YXRlOwogICAgICAgICAgICAgICAg
fSBmc19zdW54ODY7CiAgICAgICAgfSBmc191MTsKICAgICAgICBfX3UzMiBmc19pbnRlcmxlYXZl
OwogICAgICAgIF9fdTMyIGZzX3RyYWNrc2tldzsKICAgICAgICBfX3UzMiBmc19pZFsyXTsKICAg
ICAgICBfX3UzMiBmc19jc2FkZHI7CiAgICAgICAgX191MzIgZnNfY3NzaXplOwogICAgICAgIF9f
dTMyIGZzX2Nnc2l6ZTsKICAgICAgICBfX3UzMiBmc19udHJhazsKICAgICAgICBfX3UzMiBmc19u
c2VjdDsKICAgICAgICBfX3UzMiBmc19zcGM7CiAgICAgICAgX191MzIgZnNfbmN5bDsKICAgICAg
ICBfX3UzMiBmc19jcGc7CiAgICAgICAgX191MzIgZnNfaXBnOwogICAgICAgIF9fdTMyIGZzX2Zw
ZzsKICAgICAgICBzdHJ1Y3QgdWZzX2NzdW0gZnNfY3N0b3RhbDsKICAgICAgICBfX3M4IGZzX2Zt
b2Q7CiAgICAgICAgX19zOCBmc19jbGVhbjsKICAgICAgICBfX3M4IGZzX3Jvbmx5OwogICAgICAg
IF9fczggZnNfZmxhZ3M7CiAgICAgICAgX19zOCBmc19mc21udFs1MTIgLSAyMTJdOwoKfTsKCnN0
cnVjdCB1ZnNfc3VwZXJfYmxvY2tfc2Vjb25kIHsKICAgICAgICBfX3M4IGZzX2ZzbW50WzIxMl07
CiAgICAgICAgX191MzIgZnNfY2dyb3RvcjsKICAgICAgICBfX3UzMiBmc19jc3BbMzFdOwogICAg
ICAgIF9fdTMyIGZzX21heGNsdXN0ZXI7CiAgICAgICAgX191MzIgZnNfY3BjOwogICAgICAgIF9f
dTE2IGZzX29wb3N0YmxbODJdOwp9OwoKc3RydWN0IHVmc19zdXBlcl9ibG9ja190aGlyZCB7CiAg
ICAgICAgX191MTYgZnNfb3Bvc3RibFs0Nl07CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAg
ICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb25bNTNd
OwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19yZWNsYWltOwogICAgICAgICAgICAg
ICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbjJbMV07CiAgICAgICAgICAgICAgICAgICAgICAg
IF9fczMyIGZzX3N0YXRlOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xYm1hc2tb
Ml07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FmbWFza1syXTsKICAgICAgICAg
ICAgICAgIH0gZnNfc3VuOwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAg
ICAgICAgICAgX19zMzIgZnNfc3BhcmVjb25bNTNdOwogICAgICAgICAgICAgICAgICAgICAgICBf
X3MzMiBmc19yZWNsYWltOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNv
bjJbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX25wc2VjdDsKICAgICAgICAg
ICAgICAgICAgICAgICAgX191MzIgZnNfcWJtYXNrWzJdOwogICAgICAgICAgICAgICAgICAgICAg
ICBfX3UzMiBmc19xZm1hc2tbMl07CiAgICAgICAgICAgICAgICB9IGZzX3N1bng4NjsKICAgICAg
ICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJl
Y29uWzUwXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfY29udGlnc3Vtc2l6ZTsK
ICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfbWF4c3ltbGlua2xlbjsKICAgICAgICAg
ICAgICAgICAgICAgICAgX19zMzIgZnNfaW5vZGVmbXQ7CiAgICAgICAgICAgICAgICAgICAgICAg
IF9fdTMyIGZzX21heGZpbGVzaXplWzJdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBm
c19xYm1hc2tbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FmbWFza1syXTsK
ICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3RhdGU7CiAgICAgICAgICAgICAgICB9
IGZzXzQ0OwogICAgICAgIH0gZnNfdTI7CiAgICAgICAgX19zMzIgZnNfcG9zdGJsZm9ybWF0Owog
ICAgICAgIF9fczMyIGZzX25ycG9zOwogICAgICAgIF9fczMyIGZzX3Bvc3RibG9mZjsKICAgICAg
ICBfX3MzMiBmc19yb3RibG9mZjsKICAgICAgICBfX3MzMiBmc19tYWdpYzsKICAgICAgICBfX3U4
IGZzX3NwYWNlWzFdOwp9OwojIDY4MiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGlu
dXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2Vmc19m
c19zYi5oIiAxCiMgMjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2Vmc19m
c19zYi5oIgpzdHJ1Y3QgZWZzX3N1cGVyIHsKICAgICAgICBpbnQzMl90IGZzX3NpemU7CiAgICAg
ICAgaW50MzJfdCBmc19maXJzdGNnOwogICAgICAgIGludDMyX3QgZnNfY2dmc2l6ZTsKICAgICAg
ICBzaG9ydCBmc19jZ2lzaXplOwogICAgICAgIHNob3J0IGZzX3NlY3RvcnM7CiAgICAgICAgc2hv
cnQgZnNfaGVhZHM7CiAgICAgICAgc2hvcnQgZnNfbmNnOwogICAgICAgIHNob3J0IGZzX2RpcnR5
OwogICAgICAgIGludDMyX3QgZnNfdGltZTsKICAgICAgICBpbnQzMl90IGZzX21hZ2ljOwogICAg
ICAgIGNoYXIgZnNfZm5hbWVbNl07CiAgICAgICAgY2hhciBmc19mcGFja1s2XTsKICAgICAgICBp
bnQzMl90IGZzX2Jtc2l6ZTsKICAgICAgICBpbnQzMl90IGZzX3RmcmVlOwogICAgICAgIGludDMy
X3QgZnNfdGlub2RlOwogICAgICAgIGludDMyX3QgZnNfYm1ibG9jazsKICAgICAgICBpbnQzMl90
IGZzX3JlcGxzYjsKICAgICAgICBpbnQzMl90IGZzX2xhc3RpYWxsb2M7CiAgICAgICAgY2hhciBm
c19zcGFyZVsyMF07CiAgICAgICAgaW50MzJfdCBmc19jaGVja3N1bTsKfTsKCgpzdHJ1Y3QgZWZz
X3NiX2luZm8gewogICAgICAgIGludDMyX3QgZnNfbWFnaWM7CiAgICAgICAgaW50MzJfdCBmc19z
dGFydDsKICAgICAgICBpbnQzMl90IGZpcnN0X2Jsb2NrOwogICAgICAgIGludDMyX3QgdG90YWxf
YmxvY2tzOwogICAgICAgIGludDMyX3QgZ3JvdXBfc2l6ZTsKICAgICAgICBpbnQzMl90IGRhdGFf
ZnJlZTsKICAgICAgICBpbnQzMl90IGlub2RlX2ZyZWU7CiAgICAgICAgc2hvcnQgaW5vZGVfYmxv
Y2tzOwogICAgICAgIHNob3J0IHRvdGFsX2dyb3VwczsKfTsKIyA2ODMgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
aW5jbHVkZS9saW51eC9yb21mc19mc19zYi5oIiAxCgoKCgoKc3RydWN0IHJvbWZzX3NiX2luZm8g
ewogICAgICAgIHVuc2lnbmVkIGxvbmcgc19tYXhzaXplOwp9OwojIDY4NCAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9pbmNsdWRlL2xpbnV4L3NtYl9mc19zYi5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9pbmNsdWRlL2xpbnV4L3NtYl9mc19zYi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9p
bmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAxNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1
ZGUvbGludXgvc21iX2ZzX3NiLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVk
ZS9saW51eC9zbWIuaCIgMQojIDEyICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51
eC9zbWIuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC90eXBlcy5o
IiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3NtYi5oIiAyCgpl
bnVtIHNtYl9wcm90b2NvbCB7CiAgICAgICAgU01CX1BST1RPQ09MX05PTkUsCiAgICAgICAgU01C
X1BST1RPQ09MX0NPUkUsCiAgICAgICAgU01CX1BST1RPQ09MX0NPUkVQTFVTLAogICAgICAgIFNN
Ql9QUk9UT0NPTF9MQU5NQU4xLAogICAgICAgIFNNQl9QUk9UT0NPTF9MQU5NQU4yLAogICAgICAg
IFNNQl9QUk9UT0NPTF9OVDEKfTsKCmVudW0gc21iX2Nhc2VfaG5kbCB7CiAgICAgICAgU01CX0NB
U0VfREVGQVVMVCwKICAgICAgICBTTUJfQ0FTRV9MT1dFUiwKICAgICAgICBTTUJfQ0FTRV9VUFBF
Ugp9OwoKc3RydWN0IHNtYl9kc2thdHRyIHsKICAgICAgICBfX3UxNiB0b3RhbDsKICAgICAgICBf
X3UxNiBhbGxvY2Jsb2NrczsKICAgICAgICBfX3UxNiBibG9ja3NpemU7CiAgICAgICAgX191MTYg
ZnJlZTsKfTsKCnN0cnVjdCBzbWJfY29ubl9vcHQgewoKCiAgICAgICAgdW5zaWduZWQgaW50IGZk
OwoKICAgICAgICBlbnVtIHNtYl9wcm90b2NvbCBwcm90b2NvbDsKICAgICAgICBlbnVtIHNtYl9j
YXNlX2huZGwgY2FzZV9oYW5kbGluZzsKCgoKICAgICAgICBfX3UzMiBtYXhfeG1pdDsKICAgICAg
ICBfX3UxNiBzZXJ2ZXJfdWlkOwogICAgICAgIF9fdTE2IHRpZDsKCgogICAgICAgIF9fdTE2IHNl
Y21vZGU7CiAgICAgICAgX191MTYgbWF4bXV4OwogICAgICAgIF9fdTE2IG1heHZjczsKICAgICAg
ICBfX3UxNiByYXdtb2RlOwogICAgICAgIF9fdTMyIHNlc3NrZXk7CgoKICAgICAgICBfX3UzMiBt
YXhyYXc7CiAgICAgICAgX191MzIgY2FwYWJpbGl0aWVzOwogICAgICAgIF9fczE2IHNlcnZlcnpv
bmU7Cn07CgoKCgpzdHJ1Y3Qgc21iX25sc19jb2RlcGFnZSB7CiAgICAgICAgY2hhciBsb2NhbF9u
YW1lWzIwXTsKICAgICAgICBjaGFyIHJlbW90ZV9uYW1lWzIwXTsKfTsKIyA3OCAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvc21iLmgiCnN0cnVjdCBzbWJfZmF0dHIgewoKICAg
ICAgICBfX3UxNiBhdHRyOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGZfaW5vOwogICAgICAgIHVt
b2RlX3QgZl9tb2RlOwogICAgICAgIG5saW5rX3QgZl9ubGluazsKICAgICAgICB1aWRfdCBmX3Vp
ZDsKICAgICAgICBnaWRfdCBmX2dpZDsKICAgICAgICBrZGV2X3QgZl9yZGV2OwogICAgICAgIG9m
Zl90IGZfc2l6ZTsKICAgICAgICB0aW1lX3QgZl9hdGltZTsKICAgICAgICB0aW1lX3QgZl9tdGlt
ZTsKICAgICAgICB0aW1lX3QgZl9jdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZfYmxrc2l6
ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZfYmxvY2tzOwp9OwoKZW51bSBzbWJfY29ubl9zdGF0
ZSB7CiAgICAgICAgQ09OTl9WQUxJRCwKICAgICAgICBDT05OX0lOVkFMSUQsCgogICAgICAgIENP
Tk5fUkVUUklFRCwKICAgICAgICBDT05OX1JFVFJZSU5HCn07CiMgMTYgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3NtYl9mc19zYi5oIiAyCgoKCgoKCgpzdHJ1Y3Qgc21iX3Ni
X2luZm8gewogICAgICAgIGVudW0gc21iX2Nvbm5fc3RhdGUgc3RhdGU7CiAgICAgICAgc3RydWN0
IGZpbGUgKiBzb2NrX2ZpbGU7CgogICAgICAgIHN0cnVjdCBzbWJfbW91bnRfZGF0YV9rZXJuZWwg
Km1udDsKICAgICAgICB1bnNpZ25lZCBjaGFyICp0ZW1wX2J1ZjsKCgoKCiAgICAgICAgdW5zaWdu
ZWQgaW50IGdlbmVyYXRpb247CiAgICAgICAgcGlkX3QgY29ubl9waWQ7CiAgICAgICAgc3RydWN0
IHNtYl9jb25uX29wdCBvcHQ7CgogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgc2VtOwogICAgICAg
IHdhaXRfcXVldWVfaGVhZF90IHdhaXQ7CgogICAgICAgIF9fdTMyIHBhY2tldF9zaXplOwogICAg
ICAgIHVuc2lnbmVkIGNoYXIgKiBwYWNrZXQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcmNsczsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBlcnI7CgoKICAgICAgICB2b2lkICpkYXRhX3JlYWR5OwoK
CiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqcmVtb3RlX25sczsKICAgICAgICBzdHJ1Y3Qgbmxz
X3RhYmxlICpsb2NhbF9ubHM7CgoKCgogICAgICAgIGNoYXIgKm5hbWVfYnVmOwoKICAgICAgICBp
bnQgKCpjb252ZXJ0KShjaGFyICosIGludCwgY29uc3QgY2hhciAqLCBpbnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IG5sc190YWJsZSAqLCBzdHJ1Y3QgbmxzX3RhYmxlICopOwp9OwoK
CnN0YXRpYyBpbmxpbmUgdm9pZApzbWJfbG9ja19zZXJ2ZXIoc3RydWN0IHNtYl9zYl9pbmZvICpz
ZXJ2ZXIpCnsKICAgICAgICBkb3duKCYoc2VydmVyLT5zZW0pKTsKfQoKc3RhdGljIGlubGluZSB2
b2lkCnNtYl91bmxvY2tfc2VydmVyKHN0cnVjdCBzbWJfc2JfaW5mbyAqc2VydmVyKQp7CiAgICAg
ICAgdXAoJihzZXJ2ZXItPnNlbSkpOwp9CiMgNjg1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5j
bHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGlu
dXgvaGZzX2ZzX3NiLmgiIDEKIyAxNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGlu
dXgvaGZzX2ZzX3NiLmgiCnN0cnVjdCBoZnNfbmFtZTsKCnR5cGVkZWYgaW50ICgqaGZzX25hbWVp
bl9mbikgKGNoYXIgKiwgY29uc3Qgc3RydWN0IGhmc19uYW1lICopOwp0eXBlZGVmIHZvaWQgKCpo
ZnNfbmFtZW91dF9mbikgKHN0cnVjdCBoZnNfbmFtZSAqLCBjb25zdCBjaGFyICosIGludCk7CnR5
cGVkZWYgdm9pZCAoKmhmc19pZmlsbF9mbikgKHN0cnVjdCBpbm9kZSAqLCBpbm9fdCwgY29uc3Qg
aW50KTsKCgoKCgoKc3RydWN0IGhmc19zYl9pbmZvIHsKICAgICAgICBpbnQgbWFnaWM7CiAgICAg
ICAgc3RydWN0IGhmc19tZGIgKnNfbWRiOwogICAgICAgIGludCBzX3F1aWV0OwoKICAgICAgICBp
bnQgc19sb3dlcmNhc2U7CiAgICAgICAgaW50IHNfYWZwZDsKICAgICAgICBpbnQgc192ZXJzaW9u
OwogICAgICAgIGhmc19uYW1laW5fZm4gc19uYW1laW47CgoKICAgICAgICBoZnNfbmFtZW91dF9m
biBzX25hbWVvdXQ7CgoKICAgICAgICBoZnNfaWZpbGxfZm4gc19pZmlsbDsKCiAgICAgICAgY29u
c3Qgc3RydWN0IGhmc19uYW1lICpzX3Jlc2VydmVkMTsKICAgICAgICBjb25zdCBzdHJ1Y3QgaGZz
X25hbWUgKnNfcmVzZXJ2ZWQyOwogICAgICAgIF9fdTMyIHNfdHlwZTsKICAgICAgICBfX3UzMiBz
X2NyZWF0b3I7CiAgICAgICAgdW1vZGVfdCBzX3VtYXNrOwoKICAgICAgICB1aWRfdCBzX3VpZDsK
ICAgICAgICBnaWRfdCBzX2dpZDsKICAgICAgICBjaGFyIHNfY29udjsKfTsKIyA2ODYgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvaW5jbHVkZS9saW51eC9hZGZzX2ZzX3NiLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvbGludXgvYWRmc19mc19zYi5oIgpzdHJ1Y3QgYWRmc19kaXNjbWFw
OwpzdHJ1Y3QgYWRmc19kaXJfb3BzOwoKCgoKc3RydWN0IGFkZnNfc2JfaW5mbyB7CiAgICAgICAg
c3RydWN0IGFkZnNfZGlzY21hcCAqc19tYXA7CiAgICAgICAgc3RydWN0IGFkZnNfZGlyX29wcyAq
c19kaXI7CgogICAgICAgIHVpZF90IHNfdWlkOwogICAgICAgIGdpZF90IHNfZ2lkOwogICAgICAg
IHVtb2RlX3Qgc19vd25lcl9tYXNrOwogICAgICAgIHVtb2RlX3Qgc19vdGhlcl9tYXNrOwoKICAg
ICAgICBfX3UzMiBzX2lkc19wZXJfem9uZTsKICAgICAgICBfX3UzMiBzX2lkbGVuOwogICAgICAg
IF9fdTMyIHNfbWFwX3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX3NpemU7CiAgICAgICAg
c2lnbmVkIGludCBzX21hcDJibGs7CiAgICAgICAgdW5zaWduZWQgaW50IHNfbG9nMnNoYXJlc2l6
ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgc192ZXJzaW9uOwogICAgICAgIHVuc2lnbmVkIGludCBz
X25hbWVsZW47Cn07CiMgNjg3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9m
cy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvcW54NF9mc19z
Yi5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3FueDRfZnNf
c2IuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9xbng0X2ZzLmgi
IDEKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvcW54NF9mcy5oIgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3FueHR5cGVzLmgiIDEKIyAx
NCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvcW54NF9mcy5oIiAyCiMgNDUg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3FueDRfZnMuaCIKc3RydWN0IHFu
eDRfaW5vZGVfZW50cnkgewogICAgICAgIGNoYXIgZGlfZm5hbWVbMTZdOwogICAgICAgIHFueDRf
b2ZmX3QgZGlfc2l6ZTsKICAgICAgICBxbng0X3h0bnRfdCBkaV9maXJzdF94dG50OwogICAgICAg
IF9fdTMyIGRpX3hibGs7CiAgICAgICAgX19zMzIgZGlfZnRpbWU7CiAgICAgICAgX19zMzIgZGlf
bXRpbWU7CiAgICAgICAgX19zMzIgZGlfYXRpbWU7CiAgICAgICAgX19zMzIgZGlfY3RpbWU7CiAg
ICAgICAgcW54NF9ueHRudF90IGRpX251bV94dG50czsKICAgICAgICBxbng0X21vZGVfdCBkaV9t
b2RlOwogICAgICAgIHFueDRfbXVpZF90IGRpX3VpZDsKICAgICAgICBxbng0X21naWRfdCBkaV9n
aWQ7CiAgICAgICAgcW54NF9ubGlua190IGRpX25saW5rOwogICAgICAgIF9fdTggZGlfemVyb1s0
XTsKICAgICAgICBxbng0X2Z0eXBlX3QgZGlfdHlwZTsKICAgICAgICBfX3U4IGRpX3N0YXR1czsK
fTsKCnN0cnVjdCBxbng0X2xpbmtfaW5mbyB7CiAgICAgICAgY2hhciBkbF9mbmFtZVs0OF07CiAg
ICAgICAgX191MzIgZGxfaW5vZGVfYmxrOwogICAgICAgIF9fdTggZGxfaW5vZGVfbmR4OwogICAg
ICAgIF9fdTggZGxfc3BhcmVbMTBdOwogICAgICAgIF9fdTggZGxfc3RhdHVzOwp9OwoKc3RydWN0
IHFueDRfeGJsayB7CiAgICAgICAgX191MzIgeGJsa19uZXh0X3hibGs7CiAgICAgICAgX191MzIg
eGJsa19wcmV2X3hibGs7CiAgICAgICAgX191OCB4YmxrX251bV94dG50czsKICAgICAgICBfX3U4
IHhibGtfc3BhcmVbM107CiAgICAgICAgX19zMzIgeGJsa19udW1fYmxvY2tzOwogICAgICAgIHFu
eDRfeHRudF90IHhibGtfeHRudHNbNjBdOwogICAgICAgIGNoYXIgeGJsa19zaWduYXR1cmVbOF07
CiAgICAgICAgcW54NF94dG50X3QgeGJsa19maXJzdF94dG50Owp9OwoKc3RydWN0IHFueDRfc3Vw
ZXJfYmxvY2sgewogICAgICAgIHN0cnVjdCBxbng0X2lub2RlX2VudHJ5IFJvb3REaXI7CiAgICAg
ICAgc3RydWN0IHFueDRfaW5vZGVfZW50cnkgSW5vZGU7CiAgICAgICAgc3RydWN0IHFueDRfaW5v
ZGVfZW50cnkgQm9vdDsKICAgICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSBBbHRCb290Owp9
OwojIDEwMCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvcW54NF9mcy5oIgpl
eHRlcm4gc3RydWN0IGRlbnRyeSAqcW54NF9sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVj
dCBkZW50cnkgKmRlbnRyeSk7CmV4dGVybiB1bnNpZ25lZCBsb25nIHFueDRfY291bnRfZnJlZV9i
bG9ja3Moc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CmV4dGVybiB1bnNpZ25lZCBsb25nIHFueDRf
YmxvY2tfbWFwKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvbmcgaWJsb2NrKTsKCmV4dGVybiBzdHJ1
Y3QgYnVmZmVyX2hlYWQgKnFueDRfZ2V0YmxrKHN0cnVjdCBpbm9kZSAqLCBpbnQsIGludCk7CmV4
dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnFueDRfYnJlYWQoc3RydWN0IGlub2RlICosIGludCwg
aW50KTsKCmV4dGVybiBpbnQgcW54NF9jcmVhdGUoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBk
ZW50cnkgKmRlbnRyeSwgaW50IG1vZGUpOwpleHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMg
cW54NF9maWxlX2lub2RlX29wZXJhdGlvbnM7CmV4dGVybiBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9u
cyBxbng0X2Rpcl9pbm9kZV9vcGVyYXRpb25zOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9u
cyBxbng0X2ZpbGVfb3BlcmF0aW9uczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcW54
NF9kaXJfb3BlcmF0aW9uczsKZXh0ZXJuIGludCBxbng0X2lzX2ZyZWUoc3RydWN0IHN1cGVyX2Js
b2NrICpzYiwgbG9uZyBibG9jayk7CmV4dGVybiBpbnQgcW54NF9zZXRfYml0bWFwKHN0cnVjdCBz
dXBlcl9ibG9jayAqc2IsIGxvbmcgYmxvY2ssIGludCBidXN5KTsKZXh0ZXJuIGludCBxbng0X2Ny
ZWF0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCBtb2Rl
KTsKZXh0ZXJuIHZvaWQgcW54NF90cnVuY2F0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJu
IHZvaWQgcW54NF9mcmVlX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRlcm4gaW50IHFu
eDRfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOwpleHRl
cm4gaW50IHFueDRfcm1kaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRy
eSk7CmV4dGVybiBpbnQgcW54NF9zeW5jX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBk
ZW50cnkgKmRlbnRyeSwgaW50KTsKZXh0ZXJuIGludCBxbng0X3N5bmNfaW5vZGUoc3RydWN0IGlu
b2RlICppbm9kZSk7CmV4dGVybiBpbnQgcW54NF9nZXRfYmxvY2soc3RydWN0IGlub2RlICppbm9k
ZSwgbG9uZyBpYmxvY2ssIHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGludCBjcmVhdGUpOwojIDE1
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9xbng0X2ZzX3NiLmgiIDIKCgoK
CgpzdHJ1Y3QgcW54NF9zYl9pbmZvIHsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNiX2J1
ZjsKICAgICAgICBzdHJ1Y3QgcW54NF9zdXBlcl9ibG9jayAqc2I7CiAgICAgICAgdW5zaWduZWQg
aW50IFZlcnNpb247CiAgICAgICAgc3RydWN0IHFueDRfaW5vZGVfZW50cnkgKkJpdE1hcDsKfTsK
IyA2ODggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9yZWlzZXJmc19mc19zYi5oIiAxCgoK
CgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIiAx
CiMgMTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDEKIyAxNyAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvdHF1ZXVlLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9saXN0LmgiIDEKIyAxOCAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvdHF1ZXVlLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvaW5jbHVkZS9hc20vYml0b3BzLmgiIDEKIyAxOSAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2luY2x1ZGUvbGludXgvdHF1ZXVlLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
aW5jbHVkZS9hc20vc3lzdGVtLmgiIDEKIyAyMCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1
ZGUvbGludXgvdHF1ZXVlLmgiIDIKIyAzOCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUv
bGludXgvdHF1ZXVlLmgiCnN0cnVjdCB0cV9zdHJ1Y3QgewogICAgICAgIHN0cnVjdCBsaXN0X2hl
YWQgbGlzdDsKICAgICAgICB1bnNpZ25lZCBsb25nIHN5bmM7CiAgICAgICAgdm9pZCAoKnJvdXRp
bmUpKHZvaWQgKik7CiAgICAgICAgdm9pZCAqZGF0YTsKfTsKIyA2NCAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2luY2x1ZGUvbGludXgvdHF1ZXVlLmgiCnR5cGVkZWYgc3RydWN0IGxpc3RfaGVhZCB0
YXNrX3F1ZXVlOwoKCgoKZXh0ZXJuIHRhc2tfcXVldWUgdHFfdGltZXIsIHRxX2ltbWVkaWF0ZSwg
dHFfZGlzazsKIyA5NCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvdHF1ZXVl
LmgiCmV4dGVybiBzcGlubG9ja190IHRxdWV1ZV9sb2NrOwoKCgoKCmV4dGVybiB2b2lkIF9fcnVu
X3Rhc2tfcXVldWUodGFza19xdWV1ZSAqbGlzdCk7CgpzdGF0aWMgaW5saW5lIHZvaWQgcnVuX3Rh
c2tfcXVldWUodGFza19xdWV1ZSAqbGlzdCkKewogICAgICAgIGlmICgoIWxpc3RfZW1wdHkoJips
aXN0KSkpCiAgICAgICAgICAgICAgICBfX3J1bl90YXNrX3F1ZXVlKGxpc3QpOwp9CiMgOSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfc2IuaCIgMgojIDI2
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9yZWlzZXJmc19mc19zYi5oIgpz
dHJ1Y3QgcmVpc2VyZnNfc3VwZXJfYmxvY2sKewogIF9fdTMyIHNfYmxvY2tfY291bnQ7CiAgX191
MzIgc19mcmVlX2Jsb2NrczsKICBfX3UzMiBzX3Jvb3RfYmxvY2s7CiAgX191MzIgc19qb3VybmFs
X2Jsb2NrOwogIF9fdTMyIHNfam91cm5hbF9kZXY7CiMgNDMgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgiCiAgX191MzIgc19vcmlnX2pvdXJuYWxf
c2l6ZTsKICBfX3UzMiBzX2pvdXJuYWxfdHJhbnNfbWF4IDsKICBfX3UzMiBzX2pvdXJuYWxfYmxv
Y2tfY291bnQgOwogIF9fdTMyIHNfam91cm5hbF9tYXhfYmF0Y2ggOwogIF9fdTMyIHNfam91cm5h
bF9tYXhfY29tbWl0X2FnZSA7CiAgX191MzIgc19qb3VybmFsX21heF90cmFuc19hZ2UgOwogIF9f
dTE2IHNfYmxvY2tzaXplOwogIF9fdTE2IHNfb2lkX21heHNpemU7CiAgX191MTYgc19vaWRfY3Vy
c2l6ZTsKICBfX3UxNiBzX3N0YXRlOwogIGNoYXIgc19tYWdpY1sxMl07CiAgX191MzIgc19oYXNo
X2Z1bmN0aW9uX2NvZGU7CiAgX191MTYgc190cmVlX2hlaWdodDsKICBfX3UxNiBzX2JtYXBfbnI7
CiAgX191MTYgc192ZXJzaW9uOwoKCgoKICBfX3UxNiBzX3Jlc2VydmVkOwogIF9fdTMyIHNfaW5v
ZGVfZ2VuZXJhdGlvbjsKICBjaGFyIHNfdW51c2VkWzEyNF0gOwp9IF9fYXR0cmlidXRlX18gKChf
X3BhY2tlZF9fKSk7CiMgMTIxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9y
ZWlzZXJmc19mc19zYi5oIgpzdHJ1Y3QgcmVpc2VyZnNfc3VwZXJfYmxvY2tfdjEKewogIF9fdTMy
IHNfYmxvY2tfY291bnQ7CiAgX191MzIgc19mcmVlX2Jsb2NrczsKICBfX3UzMiBzX3Jvb3RfYmxv
Y2s7CiAgX191MzIgc19qb3VybmFsX2Jsb2NrOwogIF9fdTMyIHNfam91cm5hbF9kZXY7CiAgX191
MzIgc19vcmlnX2pvdXJuYWxfc2l6ZTsKICBfX3UzMiBzX2pvdXJuYWxfdHJhbnNfbWF4IDsKICBf
X3UzMiBzX2pvdXJuYWxfYmxvY2tfY291bnQgOwogIF9fdTMyIHNfam91cm5hbF9tYXhfYmF0Y2gg
OwogIF9fdTMyIHNfam91cm5hbF9tYXhfY29tbWl0X2FnZSA7CiAgX191MzIgc19qb3VybmFsX21h
eF90cmFuc19hZ2UgOwogIF9fdTE2IHNfYmxvY2tzaXplOwogIF9fdTE2IHNfb2lkX21heHNpemU7
CiAgX191MTYgc19vaWRfY3Vyc2l6ZTsKICBfX3UxNiBzX3N0YXRlOwogIGNoYXIgc19tYWdpY1sx
Nl07CiAgX191MTYgc190cmVlX2hlaWdodDsKICBfX3UxNiBzX2JtYXBfbnI7CiAgX191MzIgc19y
ZXNlcnZlZDsKfSBfX2F0dHJpYnV0ZV9fICgoX19wYWNrZWRfXykpOwojIDIwMCAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfc2IuaCIKc3RydWN0IHJlaXNl
cmZzX2pvdXJuYWxfY25vZGUgewogIHN0cnVjdCBidWZmZXJfaGVhZCAqYmggOwogIGtkZXZfdCBk
ZXYgOwogIHVuc2lnbmVkIGxvbmcgYmxvY2tuciA7CiAgaW50IHN0YXRlIDsKICBzdHJ1Y3QgcmVp
c2VyZnNfam91cm5hbF9saXN0ICpqbGlzdCA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25v
ZGUgKm5leHQgOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlICpwcmV2IDsKICBzdHJ1
Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqaHByZXYgOwogIHN0cnVjdCByZWlzZXJmc19qb3Vy
bmFsX2Nub2RlICpobmV4dCA7Cn07CgpzdHJ1Y3QgcmVpc2VyZnNfYml0bWFwX25vZGUgewogIGlu
dCBpZCA7CiAgY2hhciAqZGF0YSA7CiAgc3RydWN0IGxpc3RfaGVhZCBsaXN0IDsKfSA7CgpzdHJ1
Y3QgcmVpc2VyZnNfbGlzdF9iaXRtYXAgewogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2xpc3Qg
KmpvdXJuYWxfbGlzdCA7CiAgc3RydWN0IHJlaXNlcmZzX2JpdG1hcF9ub2RlICoqYml0bWFwcyA7
Cn0gOwoKCgoKc3RydWN0IHJlaXNlcmZzX3RyYW5zYWN0aW9uX2hhbmRsZSB7CgogIGNoYXIgKnRf
Y2FsbGVyIDsKICBpbnQgdF9ibG9ja3NfbG9nZ2VkIDsKICBpbnQgdF9ibG9ja3NfYWxsb2NhdGVk
IDsKICB1bnNpZ25lZCBsb25nIHRfdHJhbnNfaWQgOwogIHN0cnVjdCBzdXBlcl9ibG9jayAqdF9z
dXBlciA7Cgp9IDsKCgoKCgoKCnN0cnVjdCByZWlzZXJmc19qb3VybmFsX2xpc3QgewogIHVuc2ln
bmVkIGxvbmcgal9zdGFydCA7CiAgdW5zaWduZWQgbG9uZyBqX2xlbiA7CiAgYXRvbWljX3Qgal9u
b256ZXJvbGVuIDsKICBhdG9taWNfdCBqX2NvbW1pdF9sZWZ0IDsKICBhdG9taWNfdCBqX2ZsdXNo
aW5nIDsKICBhdG9taWNfdCBqX2NvbW1pdF9mbHVzaGluZyA7CiAgYXRvbWljX3Qgal9vbGRlcl9j
b21taXRzX2RvbmUgOwogIHVuc2lnbmVkIGxvbmcgal90cmFuc19pZCA7CiAgdGltZV90IGpfdGlt
ZXN0YW1wIDsKICBzdHJ1Y3QgcmVpc2VyZnNfbGlzdF9iaXRtYXAgKmpfbGlzdF9iaXRtYXAgOwog
IHN0cnVjdCBidWZmZXJfaGVhZCAqal9jb21taXRfYmggOwogIHN0cnVjdCByZWlzZXJmc19qb3Vy
bmFsX2Nub2RlICpqX3JlYWxibG9jayA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUg
KmpfZnJlZWRsaXN0IDsKICB3YWl0X3F1ZXVlX2hlYWRfdCBqX2NvbW1pdF93YWl0IDsKICB3YWl0
X3F1ZXVlX2hlYWRfdCBqX2ZsdXNoX3dhaXQgOwp9IDsKCnN0cnVjdCByZWlzZXJmc19wYWdlX2xp
c3QgOwoKc3RydWN0IHJlaXNlcmZzX2pvdXJuYWwgewogIHN0cnVjdCBidWZmZXJfaGVhZCAqKiBq
X2FwX2Jsb2NrcyA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfbGFzdCA7CiAg
c3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfZmlyc3QgOwoKICBpbnQgal9zdGF0ZSA7
CiAgdW5zaWduZWQgbG9uZyBqX3RyYW5zX2lkIDsKICB1bnNpZ25lZCBsb25nIGpfbW91bnRfaWQg
OwogIHVuc2lnbmVkIGxvbmcgal9zdGFydCA7CiAgdW5zaWduZWQgbG9uZyBqX2xlbiA7CiAgdW5z
aWduZWQgbG9uZyBqX2xlbl9hbGxvYyA7CiAgYXRvbWljX3Qgal93Y291bnQgOwogIHVuc2lnbmVk
IGxvbmcgal9iY291bnQgOwogIHVuc2lnbmVkIGxvbmcgal9maXJzdF91bmZsdXNoZWRfb2Zmc2V0
IDsKICB1bnNpZ25lZCBsb25nIGpfbGFzdF9mbHVzaF90cmFuc19pZCA7CiAgc3RydWN0IGJ1ZmZl
cl9oZWFkICpqX2hlYWRlcl9iaCA7CgoKCgogIHN0cnVjdCByZWlzZXJmc19wYWdlX2xpc3QgKmpf
Zmx1c2hfcGFnZXMgOwogIHRpbWVfdCBqX3RyYW5zX3N0YXJ0X3RpbWUgOwogIHdhaXRfcXVldWVf
aGVhZF90IGpfd2FpdCA7CiAgYXRvbWljX3Qgal93bG9jayA7CiAgd2FpdF9xdWV1ZV9oZWFkX3Qg
al9qb2luX3dhaXQgOwogIGF0b21pY190IGpfamxvY2sgOwogIGludCBqX2pvdXJuYWxfbGlzdF9p
bmRleCA7CiAgaW50IGpfbGlzdF9iaXRtYXBfaW5kZXggOwogIGludCBqX211c3Rfd2FpdCA7CiAg
aW50IGpfbmV4dF9mdWxsX2ZsdXNoIDsKICBpbnQgal9uZXh0X2FzeW5jX2ZsdXNoIDsKCiAgaW50
IGpfY25vZGVfdXNlZCA7CiAgaW50IGpfY25vZGVfZnJlZSA7CgogIHN0cnVjdCByZWlzZXJmc19q
b3VybmFsX2Nub2RlICpqX2Nub2RlX2ZyZWVfbGlzdCA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJu
YWxfY25vZGUgKmpfY25vZGVfZnJlZV9vcmlnIDsKCiAgaW50IGpfZnJlZV9iaXRtYXBfbm9kZXMg
OwogIGludCBqX3VzZWRfYml0bWFwX25vZGVzIDsKICBzdHJ1Y3QgbGlzdF9oZWFkIGpfYml0bWFw
X25vZGVzIDsKICBzdHJ1Y3QgaW5vZGUgal9kdW1teV9pbm9kZSA7CiAgc3RydWN0IHJlaXNlcmZz
X2xpc3RfYml0bWFwIGpfbGlzdF9iaXRtYXBbNV0gOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFs
X2xpc3Qgal9qb3VybmFsX2xpc3RbNjRdIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9k
ZSAqal9oYXNoX3RhYmxlWzgxOTJdIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAq
al9saXN0X2hhc2hfdGFibGVbODE5Ml0gOwoKICBzdHJ1Y3QgbGlzdF9oZWFkIGpfcHJlYWxsb2Nf
bGlzdDsKfTsKCgoKCnR5cGVkZWYgX191MzIgKCpoYXNoZl90KSAoY29uc3Qgc2lnbmVkIGNoYXIg
KiwgaW50KTsKCgpzdHJ1Y3QgcmVpc2VyZnNfc2JfaW5mbwp7CiAgICBzdHJ1Y3QgYnVmZmVyX2hl
YWQgKiBzX3NiaDsKCgogICAgc3RydWN0IHJlaXNlcmZzX3N1cGVyX2Jsb2NrICogc19yczsKICAg
IHN0cnVjdCBidWZmZXJfaGVhZCAqKiBzX2FwX2JpdG1hcDsKICAgIHN0cnVjdCByZWlzZXJmc19q
b3VybmFsICpzX2pvdXJuYWwgOwogICAgdW5zaWduZWQgc2hvcnQgc19tb3VudF9zdGF0ZTsKCgog
ICAgdm9pZCAoKmVuZF9pb19oYW5kbGVyKShzdHJ1Y3QgYnVmZmVyX2hlYWQgKiwgaW50KTsKICAg
IGhhc2hmX3Qgc19oYXNoX2Z1bmN0aW9uOwoKCiAgICB1bnNpZ25lZCBsb25nIHNfbW91bnRfb3B0
OwoKCgoKICAgIHdhaXRfcXVldWVfaGVhZF90IHNfd2FpdDsKCiAgICBhdG9taWNfdCBzX2dlbmVy
YXRpb25fY291bnRlcjsKCgoKICAgIGludCBzX2ttYWxsb2NzOwogICAgaW50IHNfZGlza19yZWFk
czsKICAgIGludCBzX2Rpc2tfd3JpdGVzOwogICAgaW50IHNfZml4X25vZGVzOwogICAgaW50IHNf
ZG9fYmFsYW5jZTsKICAgIGludCBzX3VubmVlZGVkX2xlZnRfbmVpZ2hib3I7CiAgICBpbnQgc19n
b29kX3NlYXJjaF9ieV9rZXlfcmVhZGE7CiAgICBpbnQgc19ibWFwczsKICAgIGludCBzX2JtYXBz
X3dpdGhvdXRfc2VhcmNoOwogICAgaW50IHNfZGlyZWN0MmluZGlyZWN0OwogICAgaW50IHNfaW5k
aXJlY3QyZGlyZWN0Owp9OwojIDQxMCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGlu
dXgvcmVpc2VyZnNfZnNfc2IuaCIKdm9pZCByZWlzZXJmc19maWxlX2J1ZmZlciAoc3RydWN0IGJ1
ZmZlcl9oZWFkICogYmgsIGludCBsaXN0KTsKaW50IHJlaXNlcmZzX2lzX3N1cGVyKHN0cnVjdCBz
dXBlcl9ibG9jayAqcykgOwppbnQgam91cm5hbF9tYXJrX2RpcnR5KHN0cnVjdCByZWlzZXJmc190
cmFuc2FjdGlvbl9oYW5kbGUgKiwgc3RydWN0IHN1cGVyX2Jsb2NrICosIHN0cnVjdCBidWZmZXJf
aGVhZCAqYmgpIDsKaW50IGZsdXNoX29sZF9jb21taXRzKHN0cnVjdCBzdXBlcl9ibG9jayAqcywg
aW50KSA7CmludCBzaG93X3JlaXNlcmZzX2xvY2tzKHZvaWQpIDsKaW50IHJlaXNlcmZzX3Jlc2l6
ZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdW5zaWduZWQgbG9uZykgOwojIDY4OSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9pbmNsdWRlL2xpbnV4L2Jmc19mc19zYi5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9pbmNsdWRlL2xpbnV4L2Jmc19mc19zYi5oIgpzdHJ1Y3QgYmZzX3NiX2luZm8gewogICAg
ICAgIHVuc2lnbmVkIGxvbmcgc2lfYmxvY2tzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfZnJl
ZWI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaV9mcmVlaTsKICAgICAgICB1bnNpZ25lZCBsb25n
IHNpX2xmX2lvZmY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaV9sZl9zYmxrOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgc2lfbGZfZWJsazsKICAgICAgICB1bnNpZ25lZCBsb25nIHNpX2xhc3RpOwog
ICAgICAgIGNoYXIgKiBzaV9pbWFwOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIHNpX3Ni
aDsKICAgICAgICBzdHJ1Y3QgYmZzX3N1cGVyX2Jsb2NrICogc2lfYmZzX3NiOwp9OwojIDY5MCAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3VkZl9mc19zYi5oIiAxCiMgMjEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3VkZl9mc19zYi5oIgojcHJhZ21hIHBhY2soMSkK
IyAzMCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvdWRmX2ZzX3NiLmgiCnN0
cnVjdCB1ZGZfc3BhcmluZ19kYXRhCnsKICAgICAgICBfX3UxNiBzX3BhY2tldF9sZW47CiAgICAg
ICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpzX3NwYXJfbWFwWzRdOwp9OwoKc3RydWN0IHVkZl92aXJ0
dWFsX2RhdGEKewogICAgICAgIF9fdTMyIHNfbnVtX2VudHJpZXM7CiAgICAgICAgX191MTYgc19z
dGFydF9vZmZzZXQ7Cn07CgpzdHJ1Y3QgdWRmX2JpdG1hcAp7CiAgICAgICAgX191MzIgc19leHRM
ZW5ndGg7CiAgICAgICAgX191MzIgc19leHRQb3NpdGlvbjsKICAgICAgICBfX3UxNiBzX25yX2dy
b3VwczsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKipzX2Jsb2NrX2JpdG1hcDsKfTsKCnN0
cnVjdCB1ZGZfcGFydF9tYXAKewogICAgICAgIHVuaW9uCiAgICAgICAgewogICAgICAgICAgICAg
ICAgc3RydWN0IHVkZl9iaXRtYXAgKnNfYml0bWFwOwogICAgICAgICAgICAgICAgc3RydWN0IGlu
b2RlICpzX3RhYmxlOwogICAgICAgIH0gc191c3BhY2U7CiAgICAgICAgdW5pb24KICAgICAgICB7
CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRmX2JpdG1hcCAqc19iaXRtYXA7CiAgICAgICAgICAg
ICAgICBzdHJ1Y3QgaW5vZGUgKnNfdGFibGU7CiAgICAgICAgfSBzX2ZzcGFjZTsKICAgICAgICBf
X3UzMiBzX3BhcnRpdGlvbl9yb290OwogICAgICAgIF9fdTMyIHNfcGFydGl0aW9uX2xlbjsKICAg
ICAgICBfX3UxNiBzX3BhcnRpdGlvbl90eXBlOwogICAgICAgIF9fdTE2IHNfcGFydGl0aW9uX251
bTsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB1ZGZfc3Bh
cmluZ19kYXRhIHNfc3BhcmluZzsKICAgICAgICAgICAgICAgIHN0cnVjdCB1ZGZfdmlydHVhbF9k
YXRhIHNfdmlydHVhbDsKICAgICAgICB9IHNfdHlwZV9zcGVjaWZpYzsKICAgICAgICBfX3UzMiAo
KnNfcGFydGl0aW9uX2Z1bmMpKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBfX3UzMiwgX191MTYsIF9f
dTMyKTsKICAgICAgICBfX3UxNiBzX3ZvbHVtZXNlcW51bTsKICAgICAgICBfX3UxNiBzX3BhcnRp
dGlvbl9mbGFnczsKfTsKCiNwcmFnbWEgcGFjaygpCgpzdHJ1Y3QgdWRmX3NiX2luZm8KewogICAg
ICAgIHN0cnVjdCB1ZGZfcGFydF9tYXAgKnNfcGFydG1hcHM7CiAgICAgICAgX191OCBzX3ZvbGlk
ZW50WzMyXTsKCgogICAgICAgIF9fdTE2IHNfcGFydGl0aW9uczsKICAgICAgICBfX3UxNiBzX3Bh
cnRpdGlvbjsKCgogICAgICAgIF9fczMyIHNfc2Vzc2lvbjsKICAgICAgICBfX3UzMiBzX2FuY2hv
cls0XTsKICAgICAgICBfX3UzMiBzX2xhc3RibG9jazsKCiAgICAgICAgc3RydWN0IGJ1ZmZlcl9o
ZWFkICpzX2x2aWRiaDsKCgogICAgICAgIG1vZGVfdCBzX3VtYXNrOwogICAgICAgIGdpZF90IHNf
Z2lkOwogICAgICAgIHVpZF90IHNfdWlkOwoKCiAgICAgICAgdGltZV90IHNfcmVjb3JkdGltZTsK
CgogICAgICAgIF9fdTE2IHNfc2VyaWFsbnVtOwoKCiAgICAgICAgX191MTYgc191ZGZyZXY7CgoK
ICAgICAgICBfX3UzMiBzX2ZsYWdzOwoKCiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqc19ubHNf
bWFwOwoKCiAgICAgICAgc3RydWN0IGlub2RlICpzX3ZhdDsKfTsKIyA2OTEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvaW5jbHVkZS9saW51eC9uY3BfZnNfc2IuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvaW5jbHVkZS9saW51eC9uY3BfZnNfc2IuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
aW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNs
dWRlL2xpbnV4L25jcF9mc19zYi5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1
ZGUvbGludXgvbmNwX21vdW50LmgiIDEKIyAxMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1
ZGUvbGludXgvbmNwX21vdW50LmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUv
bGludXgvdHlwZXMuaCIgMQojIDEyICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51
eC9uY3BfbW91bnQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4
L25jcC5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L25jcC5o
IgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAx
NCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvbmNwLmgiIDIKIyAyMiAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvbmNwLmgiCnN0cnVjdCBuY3BfcmVxdWVz
dF9oZWFkZXIgewogICAgICAgIF9fdTE2IHR5cGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAg
ICAgICAgX191OCBzZXF1ZW5jZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4
IGNvbm5fbG93IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggdGFzayBfX2F0
dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGNvbm5faGlnaCBfX2F0dHJpYnV0ZV9f
KChwYWNrZWQpKTsKICAgICAgICBfX3U4IGZ1bmN0aW9uIF9fYXR0cmlidXRlX18oKHBhY2tlZCkp
OwogICAgICAgIF9fdTggZGF0YVswXSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKfTsKCgoKCnN0
cnVjdCBuY3BfcmVwbHlfaGVhZGVyIHsKICAgICAgICBfX3UxNiB0eXBlIF9fYXR0cmlidXRlX18o
KHBhY2tlZCkpOwogICAgICAgIF9fdTggc2VxdWVuY2UgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7
CiAgICAgICAgX191OCBjb25uX2xvdyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBf
X3U4IHRhc2sgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb25uX2hpZ2gg
X19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb21wbGV0aW9uX2NvZGUgX19h
dHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb25uZWN0aW9uX3N0YXRlIF9fYXR0
cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggZGF0YVswXSBfX2F0dHJpYnV0ZV9fKChw
YWNrZWQpKTsKfTsKCgoKc3RydWN0IG5jcF92b2x1bWVfaW5mbyB7CiAgICAgICAgX191MzIgdG90
YWxfYmxvY2tzOwogICAgICAgIF9fdTMyIGZyZWVfYmxvY2tzOwogICAgICAgIF9fdTMyIHB1cmdl
YWJsZV9ibG9ja3M7CiAgICAgICAgX191MzIgbm90X3lldF9wdXJnZWFibGVfYmxvY2tzOwogICAg
ICAgIF9fdTMyIHRvdGFsX2Rpcl9lbnRyaWVzOwogICAgICAgIF9fdTMyIGF2YWlsYWJsZV9kaXJf
ZW50cmllczsKICAgICAgICBfX3U4IHNlY3RvcnNfcGVyX2Jsb2NrOwogICAgICAgIGNoYXIgdm9s
dW1lX25hbWVbKDE2KSArIDFdOwp9OwojIDExMiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1
ZGUvbGludXgvbmNwLmgiCnN0cnVjdCBud19pbmZvX3N0cnVjdCB7CiAgICAgICAgX191MzIgc3Bh
Y2VBbGxvYyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBhdHRyaWJ1dGVz
IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGZsYWdzIF9fYXR0cmlidXRl
X18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIGRhdGFTdHJlYW1TaXplIF9fYXR0cmlidXRlX18o
KHBhY2tlZCkpOwogICAgICAgIF9fdTMyIHRvdGFsU3RyZWFtU2l6ZSBfX2F0dHJpYnV0ZV9fKChw
YWNrZWQpKTsKICAgICAgICBfX3UxNiBudW1iZXJPZlN0cmVhbXMgX19hdHRyaWJ1dGVfXygocGFj
a2VkKSk7CiAgICAgICAgX191MTYgY3JlYXRpb25UaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkp
OwogICAgICAgIF9fdTE2IGNyZWF0aW9uRGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAg
ICAgICBfX3UzMiBjcmVhdG9ySUQgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191
MTYgbW9kaWZ5VGltZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBtb2Rp
ZnlEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIG1vZGlmaWVySUQg
X19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgbGFzdEFjY2Vzc0RhdGUgX19h
dHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgYXJjaGl2ZVRpbWUgX19hdHRyaWJ1
dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgYXJjaGl2ZURhdGUgX19hdHRyaWJ1dGVfXygo
cGFja2VkKSk7CiAgICAgICAgX191MzIgYXJjaGl2ZXJJRCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQp
KTsKICAgICAgICBfX3UxNiBpbmhlcml0ZWRSaWdodHNNYXNrIF9fYXR0cmlidXRlX18oKHBhY2tl
ZCkpOwogICAgICAgIF9fdTMyIGRpckVudE51bSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAg
ICAgICBfX3UzMiBEb3NEaXJOdW0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191
MzIgdm9sTnVtYmVyIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIEVBRGF0
YVNpemUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgRUFLZXlDb3VudCBf
X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBFQUtleVNpemUgX19hdHRyaWJ1
dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgTlNDcmVhdG9yIF9fYXR0cmlidXRlX18oKHBh
Y2tlZCkpOwogICAgICAgIF9fdTggbmFtZUxlbiBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAg
ICAgICBfX3U4IGVudHJ5TmFtZVsyNTZdIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwp9OwojIDE1
NiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvbmNwLmgiCnN0cnVjdCBud19t
b2RpZnlfZG9zX2luZm8gewogICAgICAgIF9fdTMyIGF0dHJpYnV0ZXMgX19hdHRyaWJ1dGVfXygo
cGFja2VkKSk7CiAgICAgICAgX191MTYgY3JlYXRpb25EYXRlIF9fYXR0cmlidXRlX18oKHBhY2tl
ZCkpOwogICAgICAgIF9fdTE2IGNyZWF0aW9uVGltZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK
ICAgICAgICBfX3UzMiBjcmVhdG9ySUQgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAg
X191MTYgbW9kaWZ5RGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBt
b2RpZnlUaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIG1vZGlmaWVy
SUQgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgYXJjaGl2ZURhdGUgX19h
dHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgYXJjaGl2ZVRpbWUgX19hdHRyaWJ1
dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgYXJjaGl2ZXJJRCBfX2F0dHJpYnV0ZV9fKChw
YWNrZWQpKTsKICAgICAgICBfX3UxNiBsYXN0QWNjZXNzRGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNr
ZWQpKTsKICAgICAgICBfX3UxNiBpbmhlcml0YW5jZUdyYW50TWFzayBfX2F0dHJpYnV0ZV9fKChw
YWNrZWQpKTsKICAgICAgICBfX3UxNiBpbmhlcml0YW5jZVJldm9rZU1hc2sgX19hdHRyaWJ1dGVf
XygocGFja2VkKSk7CiAgICAgICAgX191MzIgbWF4aW11bVNwYWNlIF9fYXR0cmlidXRlX18oKHBh
Y2tlZCkpOwp9OwoKc3RydWN0IG53X3NlYXJjaF9zZXF1ZW5jZSB7CiAgICAgICAgX191OCB2b2xO
dW1iZXIgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgZGlyQmFzZSBfX2F0
dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBzZXF1ZW5jZSBfX2F0dHJpYnV0ZV9f
KChwYWNrZWQpKTsKfTsKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgv
bmNwX21vdW50LmgiIDIKIyAyNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgv
bmNwX21vdW50LmgiCnN0cnVjdCBuY3BfbW91bnRfZGF0YSB7CiAgICAgICAgaW50IHZlcnNpb247
CiAgICAgICAgdW5zaWduZWQgaW50IG5jcF9mZDsKICAgICAgICBfX2tlcm5lbF91aWRfdCBtb3Vu
dGVkX3VpZDsKICAgICAgICBfX2tlcm5lbF9waWRfdCB3ZG9nX3BpZDsKCiAgICAgICAgdW5zaWdu
ZWQgY2hhciBtb3VudGVkX3ZvbFsoMTYpICsgMV07CiAgICAgICAgdW5zaWduZWQgaW50IHRpbWVf
b3V0OwoKICAgICAgICB1bnNpZ25lZCBpbnQgcmV0cnlfY291bnQ7CiAgICAgICAgdW5zaWduZWQg
aW50IGZsYWdzOwoKICAgICAgICBfX2tlcm5lbF91aWRfdCB1aWQ7CiAgICAgICAgX19rZXJuZWxf
Z2lkX3QgZ2lkOwogICAgICAgIF9fa2VybmVsX21vZGVfdCBmaWxlX21vZGU7CiAgICAgICAgX19r
ZXJuZWxfbW9kZV90IGRpcl9tb2RlOwp9OwoKCgpzdHJ1Y3QgbmNwX21vdW50X2RhdGFfdjQgewog
ICAgICAgIGludCB2ZXJzaW9uOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CgoKICAgICAg
ICB1bnNpZ25lZCBsb25nIG1vdW50ZWRfdWlkOwoKICAgICAgICBsb25nIHdkb2dfcGlkOwoKICAg
ICAgICB1bnNpZ25lZCBpbnQgbmNwX2ZkOwogICAgICAgIHVuc2lnbmVkIGludCB0aW1lX291dDsK
CiAgICAgICAgdW5zaWduZWQgaW50IHJldHJ5X2NvdW50OwoKCgogICAgICAgIHVuc2lnbmVkIGxv
bmcgdWlkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZ2lkOwoKICAgICAgICB1bnNpZ25lZCBsb25n
IGZpbGVfbW9kZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGRpcl9tb2RlOwp9OwoKCgpzdHJ1Y3Qg
bmNwX21vdW50X2RhdGFfa2VybmVsIHsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAg
ICAgIHVuc2lnbmVkIGludCBpbnRfZmxhZ3M7CgogICAgICAgIF9fa2VybmVsX3VpZDMyX3QgbW91
bnRlZF91aWQ7CiAgICAgICAgX19rZXJuZWxfcGlkX3Qgd2RvZ19waWQ7CiAgICAgICAgdW5zaWdu
ZWQgaW50IG5jcF9mZDsKICAgICAgICB1bnNpZ25lZCBpbnQgdGltZV9vdXQ7CgogICAgICAgIHVu
c2lnbmVkIGludCByZXRyeV9jb3VudDsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1vdW50ZWRfdm9s
WygxNikgKyAxXTsKICAgICAgICBfX2tlcm5lbF91aWQzMl90IHVpZDsKICAgICAgICBfX2tlcm5l
bF9naWQzMl90IGdpZDsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgZmlsZV9tb2RlOwogICAgICAg
IF9fa2VybmVsX21vZGVfdCBkaXJfbW9kZTsKfTsKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2luY2x1ZGUvbGludXgvbmNwX2ZzX3NiLmgiIDIKCgoKCgpzdHJ1Y3QgbmNwX3NlcnZlciB7Cgog
ICAgICAgIHN0cnVjdCBuY3BfbW91bnRfZGF0YV9rZXJuZWwgbTsKCgoKICAgICAgICBfX3U4IG5h
bWVfc3BhY2VbKDY0KSArIDJdOwoKICAgICAgICBzdHJ1Y3QgZmlsZSAqbmNwX2ZpbHA7CgogICAg
ICAgIHU4IHNlcXVlbmNlOwogICAgICAgIHU4IHRhc2s7CiAgICAgICAgdTE2IGNvbm5lY3Rpb247
CgogICAgICAgIHU4IGNvbXBsZXRpb247CiAgICAgICAgdTggY29ubl9zdGF0dXM7CgoKCiAgICAg
ICAgaW50IGJ1ZmZlcl9zaXplOwoKICAgICAgICBpbnQgcmVwbHlfc2l6ZTsKCiAgICAgICAgaW50
IHBhY2tldF9zaXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIgKnBhY2tldDsKCgogICAgICAgIGlu
dCBsb2NrOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgc2VtOwoKICAgICAgICBpbnQgY3VycmVu
dF9zaXplOwogICAgICAgIGludCBoYXNfc3ViZnVuY3Rpb247CiAgICAgICAgaW50IG5jcF9yZXBs
eV9zaXplOwoKICAgICAgICBpbnQgcm9vdF9zZXR1cGVkOwoKCiAgICAgICAgaW50IHNpZ25fd2Fu
dGVkOwogICAgICAgIGludCBzaWduX2FjdGl2ZTsKICAgICAgICBjaGFyIHNpZ25fcm9vdFs4XTsK
ICAgICAgICBjaGFyIHNpZ25fbGFzdFsxNl07CgoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg
ICAgICAgaW50IGF1dGhfdHlwZTsKICAgICAgICAgICAgICAgIHNpemVfdCBvYmplY3RfbmFtZV9s
ZW47CiAgICAgICAgICAgICAgICB2b2lkKiBvYmplY3RfbmFtZTsKICAgICAgICAgICAgICAgIGlu
dCBvYmplY3RfdHlwZTsKICAgICAgICB9IGF1dGg7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAg
ICAgICAgICBzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgdm9pZCogZGF0YTsKICAgICAgICB9
IHByaXY7CgoKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpubHNfdm9sOwogICAgICAgIHN0cnVj
dCBubHNfdGFibGUgKm5sc19pbzsKCgogICAgICAgIGludCBkZW50cnlfdHRsOwoKCiAgICAgICAg
dW5zaWduZWQgaW50IGZsYWdzOwp9OwojIDkyICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVk
ZS9saW51eC9uY3BfZnNfc2IuaCIKc3RhdGljIGlubGluZSBpbnQgbmNwX2Nvbm5fdmFsaWQoc3Ry
dWN0IG5jcF9zZXJ2ZXIgKnNlcnZlcikKewogICAgICAgIHJldHVybiAoKHNlcnZlci0+Y29ubl9z
dGF0dXMgJiAweDExKSA9PSAwKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIG5jcF9pbnZhbGlkYXRl
X2Nvbm4oc3RydWN0IG5jcF9zZXJ2ZXIgKnNlcnZlcikKewogICAgICAgIHNlcnZlci0+Y29ubl9z
dGF0dXMgfD0gMHgwMTsKfQojIDY5MiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGlu
dXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3VzYmRl
dl9mc19zYi5oIiAxCnN0cnVjdCB1c2JkZXZfc2JfaW5mbyB7CiAgICAgICAgc3RydWN0IGxpc3Rf
aGVhZCBzbGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGlsaXN0OwogICAgICAgIHVpZF90
IGRldnVpZDsKICAgICAgICBnaWRfdCBkZXZnaWQ7CiAgICAgICAgdW1vZGVfdCBkZXZtb2RlOwog
ICAgICAgIHVpZF90IGJ1c3VpZDsKICAgICAgICBnaWRfdCBidXNnaWQ7CiAgICAgICAgdW1vZGVf
dCBidXNtb2RlOwogICAgICAgIHVpZF90IGxpc3R1aWQ7CiAgICAgICAgZ2lkX3QgbGlzdGdpZDsK
ICAgICAgICB1bW9kZV90IGxpc3Rtb2RlOwp9OwojIDY5MyAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRl
L2xpbnV4L2pmZnMyX2ZzX3NiLmgiIDEKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9p
bmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyA3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVk
ZS9saW51eC9qZmZzMl9mc19zYi5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1
ZGUvbGludXgvc3BpbmxvY2suaCIgMQojIDggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRl
L2xpbnV4L2pmZnMyX2ZzX3NiLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVk
ZS9saW51eC9jb21wbGV0aW9uLmgiIDEKIyAxMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1
ZGUvbGludXgvY29tcGxldGlvbi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRl
L2xpbnV4L3dhaXQuaCIgMQojIDEyICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51
eC9jb21wbGV0aW9uLmgiIDIKCnN0cnVjdCBjb21wbGV0aW9uIHsKICAgICAgICB1bnNpZ25lZCBp
bnQgZG9uZTsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0Owp9OwoKCgoKCgoKc3RhdGlj
IGlubGluZSB2b2lkIGluaXRfY29tcGxldGlvbihzdHJ1Y3QgY29tcGxldGlvbiAqeCkKewogICAg
ICAgIHgtPmRvbmUgPSAwOwogICAgICAgIGluaXRfd2FpdHF1ZXVlX2hlYWQoJngtPndhaXQpOwp9
CgpleHRlcm4gdm9pZCB3YWl0X2Zvcl9jb21wbGV0aW9uKHN0cnVjdCBjb21wbGV0aW9uICopIF9f
YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgY29tcGxldGUoc3RydWN0IGNv
bXBsZXRpb24gKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwojIDkgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX3NiLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvaW5jbHVkZS9hc20vc2VtYXBob3JlLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvbGludXgvamZmczJfZnNfc2IuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvaW5jbHVkZS9saW51eC9qZmZzMl9mc19zYi5oIiAyCiMgMjAgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX3NiLmgiCnN0cnVjdCBqZmZzMl9zYl9pbmZv
IHsKICAgICAgICBzdHJ1Y3QgbXRkX2luZm8gKm10ZDsKCiAgICAgICAgX191MzIgaGlnaGVzdF9p
bm87CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwogICAgICAgIHNwaW5sb2NrX3Qgbm9kZWxp
c3RfbG9jazsKCgogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqZ2NfdGFzazsKICAgICAgICBz
dHJ1Y3Qgc2VtYXBob3JlIGdjX3RocmVhZF9zdGFydDsKICAgICAgICBzdHJ1Y3QgY29tcGxldGlv
biBnY190aHJlYWRfZXhpdDsKCgoKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGFsbG9jX3NlbTsK
CgoKCiAgICAgICAgX191MzIgZmxhc2hfc2l6ZTsKICAgICAgICBfX3UzMiB1c2VkX3NpemU7CiAg
ICAgICAgX191MzIgZGlydHlfc2l6ZTsKICAgICAgICBfX3UzMiBmcmVlX3NpemU7CiAgICAgICAg
X191MzIgZXJhc2luZ19zaXplOwogICAgICAgIF9fdTMyIGJhZF9zaXplOwogICAgICAgIF9fdTMy
IHNlY3Rvcl9zaXplOwoKCgogICAgICAgIF9fdTMyIG5yX2ZyZWVfYmxvY2tzOwogICAgICAgIF9f
dTMyIG5yX2VyYXNpbmdfYmxvY2tzOwoKICAgICAgICBfX3UzMiBucl9ibG9ja3M7CiAgICAgICAg
c3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKmJsb2NrczsKCiAgICAgICAgc3RydWN0IGpmZnMyX2Vy
YXNlYmxvY2sgKm5leHRibG9jazsKCiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKmdj
YmxvY2s7CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgY2xlYW5fbGlzdDsKICAgICAgICBzdHJ1
Y3QgbGlzdF9oZWFkIGRpcnR5X2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBlcmFzaW5n
X2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBlcmFzZV9wZW5kaW5nX2xpc3Q7CiAgICAg
ICAgc3RydWN0IGxpc3RfaGVhZCBlcmFzZV9jb21wbGV0ZV9saXN0OwogICAgICAgIHN0cnVjdCBs
aXN0X2hlYWQgZnJlZV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYmFkX2xpc3Q7CiAg
ICAgICAgc3RydWN0IGxpc3RfaGVhZCBiYWRfdXNlZF9saXN0OwoKICAgICAgICBzcGlubG9ja190
IGVyYXNlX2NvbXBsZXRpb25fbG9jazsKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgZXJhc2Vf
d2FpdDsKICAgICAgICBzdHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUgKmlub2NhY2hlX2xpc3RbMV07
CiAgICAgICAgc3BpbmxvY2tfdCBpbm9jYWNoZV9sb2NrOwp9OwojIDY5NCAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvbGludXgvZnMuaCIgMgoKZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQg
c3VwZXJfYmxvY2tzOwpleHRlcm4gc3BpbmxvY2tfdCBzYl9sb2NrOwoKCgpzdHJ1Y3Qgc3VwZXJf
YmxvY2sgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgc19saXN0OwogICAgICAgIGtkZXZfdCBz
X2RldjsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfYmxvY2tzaXplOwogICAgICAgIHVuc2lnbmVk
IGNoYXIgc19ibG9ja3NpemVfYml0czsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfZGlydDsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc19tYXhieXRlczsKICAgICAgICBzdHJ1Y3QgZmlsZV9z
eXN0ZW1fdHlwZSAqc190eXBlOwogICAgICAgIHN0cnVjdCBzdXBlcl9vcGVyYXRpb25zICpzX29w
OwogICAgICAgIHN0cnVjdCBkcXVvdF9vcGVyYXRpb25zICpkcV9vcDsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHNfZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX21hZ2ljOwogICAgICAgIHN0
cnVjdCBkZW50cnkgKnNfcm9vdDsKICAgICAgICBzdHJ1Y3Qgcndfc2VtYXBob3JlIHNfdW1vdW50
OwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgc19sb2NrOwogICAgICAgIGludCBzX2NvdW50Owog
ICAgICAgIGF0b21pY190IHNfYWN0aXZlOwoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNfZGly
dHk7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBzX2xvY2tlZF9pbm9kZXM7CiAgICAgICAgc3Ry
dWN0IGxpc3RfaGVhZCBzX2ZpbGVzOwoKICAgICAgICBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpzX2Jk
ZXY7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBzX2luc3RhbmNlczsKICAgICAgICBzdHJ1Y3Qg
cXVvdGFfaW5mbyBzX2RxdW90OwoKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1
Y3QgbWluaXhfc2JfaW5mbyBtaW5peF9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBleHQyX3Ni
X2luZm8gZXh0Ml9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBleHQzX3NiX2luZm8gZXh0M19z
YjsKICAgICAgICAgICAgICAgIHN0cnVjdCBocGZzX3NiX2luZm8gaHBmc19zYjsKICAgICAgICAg
ICAgICAgIHN0cnVjdCBudGZzX3NiX2luZm8gbnRmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVj
dCBtc2Rvc19zYl9pbmZvIG1zZG9zX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGlzb2ZzX3Ni
X2luZm8gaXNvZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbmZzX3NiX2luZm8gbmZzX3Ni
OwogICAgICAgICAgICAgICAgc3RydWN0IHN5c3Zfc2JfaW5mbyBzeXN2X3NiOwogICAgICAgICAg
ICAgICAgc3RydWN0IGFmZnNfc2JfaW5mbyBhZmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0
IHVmc19zYl9pbmZvIHVmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBlZnNfc2JfaW5mbyBl
ZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2htZW1fc2JfaW5mbyBzaG1lbV9zYjsKICAg
ICAgICAgICAgICAgIHN0cnVjdCByb21mc19zYl9pbmZvIHJvbWZzX3NiOwogICAgICAgICAgICAg
ICAgc3RydWN0IHNtYl9zYl9pbmZvIHNtYmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGhm
c19zYl9pbmZvIGhmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBhZGZzX3NiX2luZm8gYWRm
c19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBxbng0X3NiX2luZm8gcW54NF9zYjsKICAgICAg
ICAgICAgICAgIHN0cnVjdCByZWlzZXJmc19zYl9pbmZvIHJlaXNlcmZzX3NiOwogICAgICAgICAg
ICAgICAgc3RydWN0IGJmc19zYl9pbmZvIGJmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCB1
ZGZfc2JfaW5mbyB1ZGZfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbmNwX3NlcnZlciBuY3Bm
c19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCB1c2JkZXZfc2JfaW5mbyB1c2JkZXZmc19zYjsK
ICAgICAgICAgICAgICAgIHN0cnVjdCBqZmZzMl9zYl9pbmZvIGpmZnMyX3NiOwogICAgICAgICAg
ICAgICAgc3RydWN0IGNyYW1mc19zYl9pbmZvIGNyYW1mc19zYjsKICAgICAgICAgICAgICAgIHZv
aWQgKmdlbmVyaWNfc2JwOwogICAgICAgIH0gdTsKCgoKCiAgICAgICAgc3RydWN0IHNlbWFwaG9y
ZSBzX3Zmc19yZW5hbWVfc2VtOwojIDc2NyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUv
bGludXgvZnMuaCIKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNfbmZzZF9mcmVlX3BhdGhfc2Vt
Owp9OwoKCgoKZXh0ZXJuIGludCB2ZnNfY3JlYXRlKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVu
dHJ5ICosIGludCk7CmV4dGVybiBpbnQgdmZzX21rZGlyKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3Qg
ZGVudHJ5ICosIGludCk7CmV4dGVybiBpbnQgdmZzX21rbm9kKHN0cnVjdCBpbm9kZSAqLCBzdHJ1
Y3QgZGVudHJ5ICosIGludCwgZGV2X3QpOwpleHRlcm4gaW50IHZmc19zeW1saW5rKHN0cnVjdCBp
bm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgdmZzX2xp
bmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0
ZXJuIGludCB2ZnNfcm1kaXIoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CmV4dGVy
biBpbnQgdmZzX3VubGluayhzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJu
IGludCB2ZnNfcmVuYW1lKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBp
bm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwojIDgwMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2lu
Y2x1ZGUvbGludXgvZnMuaCIKdHlwZWRlZiBpbnQgKCpmaWxsZGlyX3QpKHZvaWQgKiwgY29uc3Qg
Y2hhciAqLCBpbnQsIGxvZmZfdCwgaW5vX3QsIHVuc2lnbmVkKTsKCnN0cnVjdCBibG9ja19kZXZp
Y2Vfb3BlcmF0aW9ucyB7CiAgICAgICAgaW50ICgqb3BlbikgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1
Y3QgZmlsZSAqKTsKICAgICAgICBpbnQgKCpyZWxlYXNlKSAoc3RydWN0IGlub2RlICosIHN0cnVj
dCBmaWxlICopOwogICAgICAgIGludCAoKmlvY3RsKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBm
aWxlICosIHVuc2lnbmVkLCB1bnNpZ25lZCBsb25nKTsKICAgICAgICBpbnQgKCpjaGVja19tZWRp
YV9jaGFuZ2UpIChrZGV2X3QpOwogICAgICAgIGludCAoKnJldmFsaWRhdGUpIChrZGV2X3QpOwp9
OwoKCgoKCgpzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHsKICAgICAgICBzdHJ1Y3QgbW9kdWxlICpv
d25lcjsKICAgICAgICBsb2ZmX3QgKCpsbHNlZWspIChzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGlu
dCk7CiAgICAgICAgc3NpemVfdCAoKnJlYWQpIChzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVf
dCwgbG9mZl90ICopOwogICAgICAgIHNzaXplX3QgKCp3cml0ZSkgKHN0cnVjdCBmaWxlICosIGNv
bnN0IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CiAgICAgICAgaW50ICgqcmVhZGRpcikgKHN0
cnVjdCBmaWxlICosIHZvaWQgKiwgZmlsbGRpcl90KTsKICAgICAgICB1bnNpZ25lZCBpbnQgKCpw
b2xsKSAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICopOwogICAgICAg
IGludCAoKmlvY3RsKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGlu
dCwgdW5zaWduZWQgbG9uZyk7CiAgICAgICAgaW50ICgqbW1hcCkgKHN0cnVjdCBmaWxlICosIHN0
cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKICAgICAgICBpbnQgKCpvcGVuKSAoc3RydWN0IGlub2Rl
ICosIHN0cnVjdCBmaWxlICopOwogICAgICAgIGludCAoKmZsdXNoKSAoc3RydWN0IGZpbGUgKik7
CiAgICAgICAgaW50ICgqcmVsZWFzZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsK
ICAgICAgICBpbnQgKCpmc3luYykgKHN0cnVjdCBmaWxlICosIHN0cnVjdCBkZW50cnkgKiwgaW50
IGRhdGFzeW5jKTsKICAgICAgICBpbnQgKCpmYXN5bmMpIChpbnQsIHN0cnVjdCBmaWxlICosIGlu
dCk7CiAgICAgICAgaW50ICgqbG9jaykgKHN0cnVjdCBmaWxlICosIGludCwgc3RydWN0IGZpbGVf
bG9jayAqKTsKICAgICAgICBzc2l6ZV90ICgqcmVhZHYpIChzdHJ1Y3QgZmlsZSAqLCBjb25zdCBz
dHJ1Y3QgaW92ZWMgKiwgdW5zaWduZWQgbG9uZywgbG9mZl90ICopOwogICAgICAgIHNzaXplX3Qg
KCp3cml0ZXYpIChzdHJ1Y3QgZmlsZSAqLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKiwgdW5zaWduZWQg
bG9uZywgbG9mZl90ICopOwogICAgICAgIHNzaXplX3QgKCpzZW5kcGFnZSkgKHN0cnVjdCBmaWxl
ICosIHN0cnVjdCBwYWdlICosIGludCwgc2l6ZV90LCBsb2ZmX3QgKiwgaW50KTsKICAgICAgICB1
bnNpZ25lZCBsb25nICgqZ2V0X3VubWFwcGVkX2FyZWEpKHN0cnVjdCBmaWxlICosIHVuc2lnbmVk
IGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwp9OwoK
c3RydWN0IGlub2RlX29wZXJhdGlvbnMgewogICAgICAgIGludCAoKmNyZWF0ZSkgKHN0cnVjdCBp
bm9kZSAqLHN0cnVjdCBkZW50cnkgKixpbnQpOwogICAgICAgIHN0cnVjdCBkZW50cnkgKiAoKmxv
b2t1cCkgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CiAgICAgICAgaW50ICgqbGlu
aykgKHN0cnVjdCBkZW50cnkgKixzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOwogICAg
ICAgIGludCAoKnVubGluaykgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CiAgICAg
ICAgaW50ICgqc3ltbGluaykgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKixjb25zdCBj
aGFyICopOwogICAgICAgIGludCAoKm1rZGlyKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRy
eSAqLGludCk7CiAgICAgICAgaW50ICgqcm1kaXIpIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVu
dHJ5ICopOwogICAgICAgIGludCAoKm1rbm9kKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRy
eSAqLGludCxpbnQpOwogICAgICAgIGludCAoKnJlbmFtZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1
Y3QgZGVudHJ5ICosCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqLCBzdHJ1
Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAoKnJlYWRsaW5rKSAoc3RydWN0IGRlbnRyeSAqLCBj
aGFyICosaW50KTsKICAgICAgICBpbnQgKCpmb2xsb3dfbGluaykgKHN0cnVjdCBkZW50cnkgKiwg
c3RydWN0IG5hbWVpZGF0YSAqKTsKICAgICAgICB2b2lkICgqdHJ1bmNhdGUpIChzdHJ1Y3QgaW5v
ZGUgKik7CiAgICAgICAgaW50ICgqcGVybWlzc2lvbikgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwog
ICAgICAgIGludCAoKnJldmFsaWRhdGUpIChzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAo
KnNldGF0dHIpIChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpYXR0ciAqKTsKICAgICAgICBpbnQg
KCpnZXRhdHRyKSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaWF0dHIgKik7Cn07CgoKCgoKc3Ry
dWN0IHN1cGVyX29wZXJhdGlvbnMgewogICAgICAgIHZvaWQgKCpyZWFkX2lub2RlKSAoc3RydWN0
IGlub2RlICopOwoKCgoKCgoKICAgICAgICB2b2lkICgqcmVhZF9pbm9kZTIpIChzdHJ1Y3QgaW5v
ZGUgKiwgdm9pZCAqKSA7CiAgICAgICAgdm9pZCAoKmRpcnR5X2lub2RlKSAoc3RydWN0IGlub2Rl
ICopOwogICAgICAgIHZvaWQgKCp3cml0ZV9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwog
ICAgICAgIHZvaWQgKCpwdXRfaW5vZGUpIChzdHJ1Y3QgaW5vZGUgKik7CiAgICAgICAgdm9pZCAo
KmRlbGV0ZV9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICB2b2lkICgqcHV0X3N1cGVy
KSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwogICAgICAgIHZvaWQgKCp3cml0ZV9zdXBlcikgKHN0
cnVjdCBzdXBlcl9ibG9jayAqKTsKICAgICAgICB2b2lkICgqd3JpdGVfc3VwZXJfbG9ja2ZzKSAo
c3RydWN0IHN1cGVyX2Jsb2NrICopOwogICAgICAgIHZvaWQgKCp1bmxvY2tmcykgKHN0cnVjdCBz
dXBlcl9ibG9jayAqKTsKICAgICAgICBpbnQgKCpzdGF0ZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sg
Kiwgc3RydWN0IHN0YXRmcyAqKTsKICAgICAgICBpbnQgKCpyZW1vdW50X2ZzKSAoc3RydWN0IHN1
cGVyX2Jsb2NrICosIGludCAqLCBjaGFyICopOwogICAgICAgIHZvaWQgKCpjbGVhcl9pbm9kZSkg
KHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICB2b2lkICgqdW1vdW50X2JlZ2luKSAoc3RydWN0IHN1
cGVyX2Jsb2NrICopOwojIDkwNiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgv
ZnMuaCIKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICogKCpmaF90b19kZW50cnkpKHN0cnVjdCBzdXBl
cl9ibG9jayAqc2IsIF9fdTMyICpmaCwgaW50IGxlbiwgaW50IGZodHlwZSwgaW50IHBhcmVudCk7
CiAgICAgICAgaW50ICgqZGVudHJ5X3RvX2ZoKShzdHJ1Y3QgZGVudHJ5ICosIF9fdTMyICpmaCwg
aW50ICpsZW5wLCBpbnQgbmVlZF9wYXJlbnQpOwp9OwojIDkyMCAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2luY2x1ZGUvbGludXgvZnMuaCIKZXh0ZXJuIHZvaWQgX19tYXJrX2lub2RlX2RpcnR5KHN0
cnVjdCBpbm9kZSAqLCBpbnQpOwpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19pbm9kZV9kaXJ0eShz
dHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAgICAgX19tYXJrX2lub2RlX2RpcnR5KGlub2RlLCAo
MSB8IDIgfCA0KSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrX2lub2RlX2RpcnR5X3N5bmMo
c3RydWN0IGlub2RlICppbm9kZSkKewogICAgICAgIF9fbWFya19pbm9kZV9kaXJ0eShpbm9kZSwg
MSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBpbm9kZV9hZGRfYnl0ZXMoc3RydWN0IGlub2RlICpp
bm9kZSwgbG9mZl90IGJ5dGVzKQp7CiAgICAgICAgaW5vZGUtPmlfYmxvY2tzICs9IGJ5dGVzID4+
IDk7CiAgICAgICAgYnl0ZXMgJj0gNTExOwogICAgICAgIGlub2RlLT5pX2J5dGVzICs9IGJ5dGVz
OwogICAgICAgIGlmIChpbm9kZS0+aV9ieXRlcyA+PSA1MTIpIHsKICAgICAgICAgICAgICAgIGlu
b2RlLT5pX2Jsb2NrcysrOwogICAgICAgICAgICAgICAgaW5vZGUtPmlfYnl0ZXMgLT0gNTEyOwog
ICAgICAgIH0KfQoKc3RhdGljIGlubGluZSB2b2lkIGlub2RlX3N1Yl9ieXRlcyhzdHJ1Y3QgaW5v
ZGUgKmlub2RlLCBsb2ZmX3QgYnl0ZXMpCnsKICAgICAgICBpbm9kZS0+aV9ibG9ja3MgLT0gYnl0
ZXMgPj4gOTsKICAgICAgICBieXRlcyAmPSA1MTE7CiAgICAgICAgaWYgKGlub2RlLT5pX2J5dGVz
IDwgYnl0ZXMpIHsKICAgICAgICAgICAgICAgIGlub2RlLT5pX2Jsb2Nrcy0tOwogICAgICAgICAg
ICAgICAgaW5vZGUtPmlfYnl0ZXMgKz0gNTEyOwogICAgICAgIH0KICAgICAgICBpbm9kZS0+aV9i
eXRlcyAtPSBieXRlczsKfQoKc3RhdGljIGlubGluZSBsb2ZmX3QgaW5vZGVfZ2V0X2J5dGVzKHN0
cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICByZXR1cm4gKCgobG9mZl90KWlub2RlLT5pX2Js
b2NrcykgPDwgOSkgKyBpbm9kZS0+aV9ieXRlczsKfQoKc3RhdGljIGlubGluZSB2b2lkIGlub2Rl
X3NldF9ieXRlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgYnl0ZXMpCnsKICAgICAgICBp
bm9kZS0+aV9ibG9ja3MgPSBieXRlcyA+PiA5OwogICAgICAgIGlub2RlLT5pX2J5dGVzID0gYnl0
ZXMgJiA1MTE7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrX2lub2RlX2RpcnR5X3BhZ2VzKHN0
cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBfX21hcmtfaW5vZGVfZGlydHkoaW5vZGUsIDQp
Owp9CgpzdHJ1Y3QgZHF1b3Rfb3BlcmF0aW9ucyB7CiAgICAgICAgdm9pZCAoKmluaXRpYWxpemUp
IChzdHJ1Y3QgaW5vZGUgKiwgc2hvcnQpOwogICAgICAgIHZvaWQgKCpkcm9wKSAoc3RydWN0IGlu
b2RlICopOwogICAgICAgIGludCAoKmFsbG9jX3NwYWNlKSAoc3RydWN0IGlub2RlICosIHFzaXpl
X3QsIGNoYXIpOwogICAgICAgIGludCAoKmFsbG9jX2lub2RlKSAoY29uc3Qgc3RydWN0IGlub2Rl
ICosIHVuc2lnbmVkIGxvbmcpOwogICAgICAgIHZvaWQgKCpmcmVlX3NwYWNlKSAoc3RydWN0IGlu
b2RlICosIHFzaXplX3QpOwogICAgICAgIHZvaWQgKCpmcmVlX2lub2RlKSAoY29uc3Qgc3RydWN0
IGlub2RlICosIHVuc2lnbmVkIGxvbmcpOwogICAgICAgIGludCAoKnRyYW5zZmVyKSAoc3RydWN0
IGlub2RlICosIHN0cnVjdCBpYXR0ciAqKTsKfTsKCnN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIHsK
ICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAgIGludCBmc19mbGFnczsKICAgICAgICBz
dHJ1Y3Qgc3VwZXJfYmxvY2sgKigqcmVhZF9zdXBlcikgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB2
b2lkICosIGludCk7CiAgICAgICAgc3RydWN0IG1vZHVsZSAqb3duZXI7CiAgICAgICAgc3RydWN0
IGZpbGVfc3lzdGVtX3R5cGUgKiBuZXh0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZnNfc3Vw
ZXJzOwp9OwojIDEwMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2ZzLmgi
CmV4dGVybiBpbnQgcmVnaXN0ZXJfZmlsZXN5c3RlbShzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAq
KTsKZXh0ZXJuIGludCB1bnJlZ2lzdGVyX2ZpbGVzeXN0ZW0oc3RydWN0IGZpbGVfc3lzdGVtX3R5
cGUgKik7CmV4dGVybiBzdHJ1Y3QgdmZzbW91bnQgKmtlcm5fbW91bnQoc3RydWN0IGZpbGVfc3lz
dGVtX3R5cGUgKik7CmV4dGVybiBpbnQgbWF5X3Vtb3VudChzdHJ1Y3QgdmZzbW91bnQgKik7CmV4
dGVybiBsb25nIGRvX21vdW50KGNoYXIgKiwgY2hhciAqLCBjaGFyICosIHVuc2lnbmVkIGxvbmcs
IHZvaWQgKik7CgoKCmV4dGVybiBpbnQgdmZzX3N0YXRmcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwg
c3RydWN0IHN0YXRmcyAqKTsKIyAxMDI5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9s
aW51eC9mcy5oIgpleHRlcm4gaW50IGxvY2tzX21hbmRhdG9yeV9sb2NrZWQoc3RydWN0IGlub2Rl
ICopOwpleHRlcm4gaW50IGxvY2tzX21hbmRhdG9yeV9hcmVhKGludCwgc3RydWN0IGlub2RlICos
IHN0cnVjdCBmaWxlICosIGxvZmZfdCwgc2l6ZV90KTsKIyAxMDM5ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvaW5jbHVkZS9saW51eC9mcy5oIgpzdGF0aWMgaW5saW5lIGludCBsb2Nrc192ZXJpZnlf
bG9ja2VkKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBpZiAoKCgoaW5vZGUpLT5pX3Ni
LT5zX2ZsYWdzICYgKDY0KSkgJiYgKChpbm9kZSktPmlfbW9kZSAmICgwMDAyMDAwIHwgMDAwMTAp
KSA9PSAwMDAyMDAwKSkKICAgICAgICAgICAgICAgIHJldHVybiBsb2Nrc19tYW5kYXRvcnlfbG9j
a2VkKGlub2RlKTsKICAgICAgICByZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBpbnQgbG9ja3Nf
dmVyaWZ5X2FyZWEoaW50IHJlYWRfd3JpdGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmaWxlICpmaWxwLCBsb2ZmX3Qgb2Zm
c2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY291bnQpCnsK
ICAgICAgICBpZiAoaW5vZGUtPmlfZmxvY2sgJiYgKCgoaW5vZGUpLT5pX3NiLT5zX2ZsYWdzICYg
KDY0KSkgJiYgKChpbm9kZSktPmlfbW9kZSAmICgwMDAyMDAwIHwgMDAwMTApKSA9PSAwMDAyMDAw
KSkKICAgICAgICAgICAgICAgIHJldHVybiBsb2Nrc19tYW5kYXRvcnlfYXJlYShyZWFkX3dyaXRl
LCBpbm9kZSwgZmlscCwgb2Zmc2V0LCBjb3VudCk7CiAgICAgICAgcmV0dXJuIDA7Cn0KCnN0YXRp
YyBpbmxpbmUgaW50IGxvY2tzX3ZlcmlmeV90cnVuY2F0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlscCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9mZl90IHNpemUpCnsKICAgICAgICBp
ZiAoaW5vZGUtPmlfZmxvY2sgJiYgKCgoaW5vZGUpLT5pX3NiLT5zX2ZsYWdzICYgKDY0KSkgJiYg
KChpbm9kZSktPmlfbW9kZSAmICgwMDAyMDAwIHwgMDAwMTApKSA9PSAwMDAyMDAwKSkKICAgICAg
ICAgICAgICAgIHJldHVybiBsb2Nrc19tYW5kYXRvcnlfYXJlYSgKICAgICAgICAgICAgICAgICAg
ICAgICAgMiwgaW5vZGUsIGZpbHAsCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPCBpbm9k
ZS0+aV9zaXplID8gc2l6ZSA6IGlub2RlLT5pX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAg
IChzaXplIDwgaW5vZGUtPmlfc2l6ZSA/IGlub2RlLT5pX3NpemUgLSBzaXplCiAgICAgICAgICAg
ICAgICAgICAgICAgICA6IHNpemUgLSBpbm9kZS0+aV9zaXplKQogICAgICAgICAgICAgICAgKTsK
ICAgICAgICByZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBpbnQgZ2V0X2xlYXNlKHN0cnVjdCBp
bm9kZSAqaW5vZGUsIHVuc2lnbmVkIGludCBtb2RlKQp7CiAgICAgICAgaWYgKGlub2RlLT5pX2Zs
b2NrICYmIChpbm9kZS0+aV9mbG9jay0+ZmxfZmxhZ3MgJiAzMikpCiAgICAgICAgICAgICAgICBy
ZXR1cm4gX19nZXRfbGVhc2UoaW5vZGUsIG1vZGUpOwogICAgICAgIHJldHVybiAwOwp9CgoKCiBf
X2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfb3Blbihjb25zdCBjaGFyICosIGlu
dCwgaW50KTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19jbG9zZSh1bnNp
Z25lZCBpbnQpOwpleHRlcm4gaW50IGRvX3RydW5jYXRlKHN0cnVjdCBkZW50cnkgKiwgbG9mZl90
IHN0YXJ0KTsKCmV4dGVybiBzdHJ1Y3QgZmlsZSAqZmlscF9vcGVuKGNvbnN0IGNoYXIgKiwgaW50
LCBpbnQpOwpleHRlcm4gc3RydWN0IGZpbGUgKiBkZW50cnlfb3BlbihzdHJ1Y3QgZGVudHJ5ICos
IHN0cnVjdCB2ZnNtb3VudCAqLCBpbnQpOwpleHRlcm4gaW50IGZpbHBfY2xvc2Uoc3RydWN0IGZp
bGUgKiwgZmxfb3duZXJfdCBpZCk7CmV4dGVybiBjaGFyICogZ2V0bmFtZShjb25zdCBjaGFyICop
OwoKCmV4dGVybiB2b2lkIHZmc19jYWNoZXNfaW5pdCh1bnNpZ25lZCBsb25nKTsKCgoKCmVudW0g
e0JERVZfRklMRSwgQkRFVl9TV0FQLCBCREVWX0ZTLCBCREVWX1JBV307CmV4dGVybiBpbnQgcmVn
aXN0ZXJfYmxrZGV2KHVuc2lnbmVkIGludCwgY29uc3QgY2hhciAqLCBzdHJ1Y3QgYmxvY2tfZGV2
aWNlX29wZXJhdGlvbnMgKik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9ibGtkZXYodW5zaWduZWQg
aW50LCBjb25zdCBjaGFyICopOwpleHRlcm4gc3RydWN0IGJsb2NrX2RldmljZSAqYmRnZXQoZGV2
X3QpOwpleHRlcm4gaW50IGJkX2FjcXVpcmUoc3RydWN0IGlub2RlICppbm9kZSk7CmV4dGVybiB2
b2lkIGJkX2ZvcmdldChzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJuIHZvaWQgYmRwdXQoc3Ry
dWN0IGJsb2NrX2RldmljZSAqKTsKZXh0ZXJuIHN0cnVjdCBjaGFyX2RldmljZSAqY2RnZXQoZGV2
X3QpOwpleHRlcm4gdm9pZCBjZHB1dChzdHJ1Y3QgY2hhcl9kZXZpY2UgKik7CmV4dGVybiBpbnQg
YmxrZGV2X29wZW4oc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwpleHRlcm4gc3RydWN0
IGZpbGVfb3BlcmF0aW9ucyBkZWZfYmxrX2ZvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRp
b25zIGRlZl9maWZvX2ZvcHM7CmV4dGVybiBpbnQgaW9jdGxfYnlfYmRldihzdHJ1Y3QgYmxvY2tf
ZGV2aWNlICosIHVuc2lnbmVkLCB1bnNpZ25lZCBsb25nKTsKZXh0ZXJuIGludCBibGtkZXZfZ2V0
KHN0cnVjdCBibG9ja19kZXZpY2UgKiwgbW9kZV90LCB1bnNpZ25lZCwgaW50KTsKZXh0ZXJuIGlu
dCBibGtkZXZfcHV0KHN0cnVjdCBibG9ja19kZXZpY2UgKiwgaW50KTsKCgpleHRlcm4gY29uc3Qg
c3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zICpnZXRfYmxrZm9wcyh1bnNpZ25lZCBpbnQp
OwpleHRlcm4gaW50IHJlZ2lzdGVyX2NocmRldih1bnNpZ25lZCBpbnQsIGNvbnN0IGNoYXIgKiwg
c3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqKTsKZXh0ZXJuIGludCB1bnJlZ2lzdGVyX2NocmRldih1
bnNpZ25lZCBpbnQsIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgY2hyZGV2X29wZW4oc3RydWN0
IGlub2RlICosIHN0cnVjdCBmaWxlICopOwpleHRlcm4gY29uc3QgY2hhciAqIGJkZXZuYW1lKGtk
ZXZfdCk7CmV4dGVybiBjb25zdCBjaGFyICogY2Rldm5hbWUoa2Rldl90KTsKZXh0ZXJuIGNvbnN0
IGNoYXIgKiBrZGV2bmFtZShrZGV2X3QpOwpleHRlcm4gdm9pZCBpbml0X3NwZWNpYWxfaW5vZGUo
c3RydWN0IGlub2RlICosIHVtb2RlX3QsIGludCk7CgoKZXh0ZXJuIHZvaWQgbWFrZV9iYWRfaW5v
ZGUoc3RydWN0IGlub2RlICopOwpleHRlcm4gaW50IGlzX2JhZF9pbm9kZShzdHJ1Y3QgaW5vZGUg
Kik7CgpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyByZWFkX2ZpZm9fZm9wczsKZXh0ZXJu
IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgd3JpdGVfZmlmb19mb3BzOwpleHRlcm4gc3RydWN0IGZp
bGVfb3BlcmF0aW9ucyByZHdyX2ZpZm9fZm9wczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlv
bnMgcmVhZF9waXBlX2ZvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHdyaXRlX3Bp
cGVfZm9wczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcmR3cl9waXBlX2ZvcHM7Cgpl
eHRlcm4gaW50IGZzX21heV9yZW1vdW50X3JvKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKCmV4dGVy
biBpbnQgdHJ5X3RvX2ZyZWVfYnVmZmVycyhzdHJ1Y3QgcGFnZSAqLCB1bnNpZ25lZCBpbnQpOwpl
eHRlcm4gdm9pZCByZWZpbGVfYnVmZmVyKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJ1Zik7CmV4dGVy
biB2b2lkIGNyZWF0ZV9lbXB0eV9idWZmZXJzKHN0cnVjdCBwYWdlICosIGtkZXZfdCwgdW5zaWdu
ZWQgbG9uZyk7CmV4dGVybiB2b2lkIGVuZF9idWZmZXJfaW9fc3luYyhzdHJ1Y3QgYnVmZmVyX2hl
YWQgKmJoLCBpbnQgdXB0b2RhdGUpOwoKCmV4dGVybiB2b2lkIHNldF9idWZmZXJfYXN5bmNfaW8o
c3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkgOwoKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGdldF9i
aChzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCkKewogICAgICAgIGF0b21pY19pbmMoJihiaCktPmJf
Y291bnQpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgcHV0X2JoKHN0cnVjdCBidWZmZXJfaGVhZCAq
YmgpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwogICAg
ICAgIGF0b21pY19kZWMoJmJoLT5iX2NvdW50KTsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIG1h
cmtfYnVmZmVyX3VwdG9kYXRlKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoLCBpbnQgb24pCnsKICAg
ICAgICBpZiAob24pCiAgICAgICAgICAgICAgICBzZXRfYml0KEJIX1VwdG9kYXRlLCAmYmgtPmJf
c3RhdGUpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGNsZWFyX2JpdChCSF9VcHRvZGF0
ZSwgJmJoLT5iX3N0YXRlKTsKfQoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX19tYXJrX2J1ZmZlcl9j
bGVhbihzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKQp7CiAgICAgICAgcmVmaWxlX2J1ZmZlcihiaCk7
Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrX2J1ZmZlcl9jbGVhbihzdHJ1Y3QgYnVmZmVyX2hl
YWQgKiBiaCkKewoKCgoKICAgICAgICBpZiAodGVzdF9hbmRfY2xlYXJfYml0KEJIX0RpcnR5LCAm
KGJoKS0+Yl9zdGF0ZSkpCiAgICAgICAgICAgICAgICBfX21hcmtfYnVmZmVyX2NsZWFuKGJoKTsK
fQoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX19tYXJrX2J1ZmZlcl9wcm90ZWN0ZWQoc3RydWN0IGJ1
ZmZlcl9oZWFkICpiaCkKewogICAgICAgIHJlZmlsZV9idWZmZXIoYmgpOwp9CgpzdGF0aWMgaW5s
aW5lIHZvaWQgbWFya19idWZmZXJfcHJvdGVjdGVkKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoKQp7
CiAgICAgICAgaWYgKCF0ZXN0X2FuZF9zZXRfYml0KEJIX1Byb3RlY3RlZCwgJihiaCktPmJfc3Rh
dGUpKQogICAgICAgICAgICAgICAgX19tYXJrX2J1ZmZlcl9wcm90ZWN0ZWQoYmgpOwp9CgpleHRl
cm4gdm9pZCBfX21hcmtfYnVmZmVyX2RpcnR5KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpIF9fYXR0
cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgbWFya19idWZmZXJfZGlydHkoc3Ry
dWN0IGJ1ZmZlcl9oZWFkICpiaCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwoKCgpzdGF0
aWMgaW5saW5lIHZvaWQgbWFya19idWZmZXJfYXN5bmMoc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgs
IGludCBvbikKewogICAgICAgIGlmIChvbikKICAgICAgICAgICAgICAgIHNldF9iaXQoQkhfQXN5
bmMsICZiaC0+Yl9zdGF0ZSk7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgY2xlYXJfYml0
KEJIX0FzeW5jLCAmYmgtPmJfc3RhdGUpOwp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgYnVm
ZmVyX0lPX2Vycm9yKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoKQp7CiAgICAgICAgbWFya19idWZm
ZXJfY2xlYW4oYmgpOwoKCgogICAgICAgIGJoLT5iX2VuZF9pbyhiaCwgMCk7Cn0KCmV4dGVybiB2
b2lkIGJ1ZmZlcl9pbnNlcnRfaW5vZGVfcXVldWUoc3RydWN0IGJ1ZmZlcl9oZWFkICosIHN0cnVj
dCBpbm9kZSAqKTsKc3RhdGljIGlubGluZSB2b2lkIG1hcmtfYnVmZmVyX2RpcnR5X2lub2RlKHN0
cnVjdCBidWZmZXJfaGVhZCAqYmgsIHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBtYXJr
X2J1ZmZlcl9kaXJ0eShiaCk7CiAgICAgICAgYnVmZmVyX2luc2VydF9pbm9kZV9xdWV1ZShiaCwg
aW5vZGUpOwp9CgpleHRlcm4gdm9pZCBzZXRfYnVmZmVyX2ZsdXNodGltZShzdHJ1Y3QgYnVmZmVy
X2hlYWQgKik7CmV4dGVybiB2b2lkIGJhbGFuY2VfZGlydHkoa2Rldl90KTsKZXh0ZXJuIGludCBj
aGVja19kaXNrX2NoYW5nZShrZGV2X3QpOwpleHRlcm4gaW50IGludmFsaWRhdGVfaW5vZGVzKHN0
cnVjdCBzdXBlcl9ibG9jayAqKTsKZXh0ZXJuIGludCBpbnZhbGlkYXRlX2RldmljZShrZGV2X3Qs
IGludCk7CmV4dGVybiB2b2lkIGludmFsaWRhdGVfaW5vZGVfcGFnZXMoc3RydWN0IGlub2RlICop
OwpleHRlcm4gdm9pZCBpbnZhbGlkYXRlX2lub2RlX2J1ZmZlcnMoc3RydWN0IGlub2RlICopOwoK
CmV4dGVybiB2b2lkIF9faW52YWxpZGF0ZV9idWZmZXJzKGtkZXZfdCBkZXYsIGludCk7CmV4dGVy
biB2b2lkIHN5bmNfaW5vZGVzKGtkZXZfdCk7CmV4dGVybiB2b2lkIHN5bmNfdW5sb2NrZWRfaW5v
ZGVzKHZvaWQpOwpleHRlcm4gdm9pZCB3cml0ZV9pbm9kZV9ub3coc3RydWN0IGlub2RlICosIGlu
dCk7CmV4dGVybiB2b2lkIHN5bmNfZGV2KGtkZXZfdCk7CmV4dGVybiBpbnQgZnN5bmNfZGV2KGtk
ZXZfdCk7CmV4dGVybiBpbnQgZnN5bmNfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICopOwpleHRl
cm4gaW50IGZzeW5jX25vX3N1cGVyKGtkZXZfdCk7CmV4dGVybiB2b2lkIHN5bmNfaW5vZGVzX3Ni
KHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKZXh0ZXJuIGludCBmc3luY19pbm9kZV9idWZmZXJzKHN0
cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGludCBvc3luY19pbm9kZV9idWZmZXJzKHN0cnVjdCBpbm9k
ZSAqKTsKZXh0ZXJuIGludCBpbm9kZV9oYXNfYnVmZmVycyhzdHJ1Y3QgaW5vZGUgKik7CmV4dGVy
biB2b2lkIGZpbGVtYXBfZmRhdGFzeW5jKHN0cnVjdCBhZGRyZXNzX3NwYWNlICopOwpleHRlcm4g
dm9pZCBmaWxlbWFwX2ZkYXRhd2FpdChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqKTsKZXh0ZXJuIHZv
aWQgc3luY19zdXBlcnMoa2Rldl90KTsKZXh0ZXJuIGludCBibWFwKHN0cnVjdCBpbm9kZSAqLCBp
bnQpOwpleHRlcm4gaW50IG5vdGlmeV9jaGFuZ2Uoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaWF0
dHIgKik7CmV4dGVybiBpbnQgcGVybWlzc2lvbihzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0ZXJu
IGludCB2ZnNfcGVybWlzc2lvbihzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0ZXJuIGludCBnZXRf
d3JpdGVfYWNjZXNzKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGludCBkZW55X3dyaXRlX2FjY2Vz
cyhzdHJ1Y3QgZmlsZSAqKTsKc3RhdGljIGlubGluZSB2b2lkIHB1dF93cml0ZV9hY2Nlc3Moc3Ry
dWN0IGlub2RlICogaW5vZGUpCnsKICAgICAgICBhdG9taWNfZGVjKCZpbm9kZS0+aV93cml0ZWNv
dW50KTsKfQpzdGF0aWMgaW5saW5lIHZvaWQgYWxsb3dfd3JpdGVfYWNjZXNzKHN0cnVjdCBmaWxl
ICpmaWxlKQp7CiAgICAgICAgaWYgKGZpbGUpCiAgICAgICAgICAgICAgICBhdG9taWNfaW5jKCZm
aWxlLT5mX2RlbnRyeS0+ZF9pbm9kZS0+aV93cml0ZWNvdW50KTsKfQpleHRlcm4gaW50IGRvX3Bp
cGUoaW50ICopOwoKZXh0ZXJuIGludCBvcGVuX25hbWVpKGNvbnN0IGNoYXIgKiwgaW50LCBpbnQs
IHN0cnVjdCBuYW1laWRhdGEgKik7CgpleHRlcm4gaW50IGtlcm5lbF9yZWFkKHN0cnVjdCBmaWxl
ICosIHVuc2lnbmVkIGxvbmcsIGNoYXIgKiwgdW5zaWduZWQgbG9uZyk7CmV4dGVybiBzdHJ1Y3Qg
ZmlsZSAqIG9wZW5fZXhlYyhjb25zdCBjaGFyICopOwoKCmV4dGVybiBpbnQgaXNfc3ViZGlyKHN0
cnVjdCBkZW50cnkgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGlub190IGZpbmRfaW5vZGVf
bnVtYmVyKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IHFzdHIgKik7CiMgMTI5MSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvZnMuaCIKc3RhdGljIGlubGluZSB2b2lkICpFUlJf
UFRSKGxvbmcgZXJyb3IpCnsKICAgICAgICByZXR1cm4gKHZvaWQgKikgZXJyb3I7Cn0KCnN0YXRp
YyBpbmxpbmUgbG9uZyBQVFJfRVJSKGNvbnN0IHZvaWQgKnB0cikKewogICAgICAgIHJldHVybiAo
bG9uZykgcHRyOwp9CgpzdGF0aWMgaW5saW5lIGxvbmcgSVNfRVJSKGNvbnN0IHZvaWQgKnB0cikK
ewogICAgICAgIHJldHVybiAodW5zaWduZWQgbG9uZylwdHIgPiAodW5zaWduZWQgbG9uZyktMTAw
MEw7Cn0KIyAxMzIyICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9mcy5oIgpl
bnVtIHtMQVNUX05PUk0sIExBU1RfUk9PVCwgTEFTVF9ET1QsIExBU1RfRE9URE9ULCBMQVNUX0JJ
TkR9OwojIDEzMzMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2ZzLmgiCnR5
cGVkZWYgc3RydWN0IHsKICAgICAgICBzaXplX3Qgd3JpdHRlbjsKICAgICAgICBzaXplX3QgY291
bnQ7CiAgICAgICAgY2hhciAqIGJ1ZjsKICAgICAgICBpbnQgZXJyb3I7Cn0gcmVhZF9kZXNjcmlw
dG9yX3Q7Cgp0eXBlZGVmIGludCAoKnJlYWRfYWN0b3JfdCkocmVhZF9kZXNjcmlwdG9yX3QgKiwg
c3RydWN0IHBhZ2UgKiwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CgoKZXh0ZXJuIGxv
ZmZfdCBkZWZhdWx0X2xsc2VlayhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgaW50
IG9yaWdpbik7CmV4dGVybiBsb2ZmX3Qgbm9fbGxzZWVrKHN0cnVjdCBmaWxlICosIGxvZmZfdCwg
aW50KTsKCmV4dGVybiBpbnQgX191c2VyX3dhbGsoY29uc3QgY2hhciAqLCB1bnNpZ25lZCwgc3Ry
dWN0IG5hbWVpZGF0YSAqKTsKZXh0ZXJuIGludCBwYXRoX2luaXQoY29uc3QgY2hhciAqLCB1bnNp
Z25lZCwgc3RydWN0IG5hbWVpZGF0YSAqKTsKZXh0ZXJuIGludCBwYXRoX3dhbGsoY29uc3QgY2hh
ciAqLCBzdHJ1Y3QgbmFtZWlkYXRhICopOwpleHRlcm4gdm9pZCBwYXRoX3JlbGVhc2Uoc3RydWN0
IG5hbWVpZGF0YSAqKTsKZXh0ZXJuIGludCBmb2xsb3dfZG93bihzdHJ1Y3QgdmZzbW91bnQgKios
IHN0cnVjdCBkZW50cnkgKiopOwpleHRlcm4gaW50IGZvbGxvd191cChzdHJ1Y3QgdmZzbW91bnQg
KiosIHN0cnVjdCBkZW50cnkgKiopOwpleHRlcm4gc3RydWN0IGRlbnRyeSAqIGxvb2t1cF9vbmVf
bGVuKGNvbnN0IGNoYXIgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQpOwpleHRlcm4gc3RydWN0IGRl
bnRyeSAqIGxvb2t1cF9oYXNoKHN0cnVjdCBxc3RyICosIHN0cnVjdCBkZW50cnkgKik7CgoKCmV4
dGVybiB2b2lkIGlwdXQoc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCBmb3JjZV9kZWxldGUo
c3RydWN0IGlub2RlICopOwpleHRlcm4gc3RydWN0IGlub2RlICogaWdyYWIoc3RydWN0IGlub2Rl
ICopOwpleHRlcm4gaW5vX3QgaXVuaXF1ZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgaW5vX3QpOwoK
dHlwZWRlZiBpbnQgKCpmaW5kX2lub2RlX3QpKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25n
LCB2b2lkICopOwpleHRlcm4gc3RydWN0IGlub2RlICogaWdldDQoc3RydWN0IHN1cGVyX2Jsb2Nr
ICosIHVuc2lnbmVkIGxvbmcsIGZpbmRfaW5vZGVfdCwgdm9pZCAqKTsKc3RhdGljIGlubGluZSBz
dHJ1Y3QgaW5vZGUgKmlnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBp
bm8pCnsKICAgICAgICByZXR1cm4gaWdldDQoc2IsIGlubywgKCh2b2lkICopMCksICgodm9pZCAq
KTApKTsKfQoKZXh0ZXJuIHZvaWQgY2xlYXJfaW5vZGUoc3RydWN0IGlub2RlICopOwpleHRlcm4g
c3RydWN0IGlub2RlICogZ2V0X2VtcHR5X2lub2RlKHZvaWQpOwpzdGF0aWMgaW5saW5lIHN0cnVj
dCBpbm9kZSAqIG5ld19pbm9kZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQp7CiAgICAgICAgc3Ry
dWN0IGlub2RlICppbm9kZSA9IGdldF9lbXB0eV9pbm9kZSgpOwogICAgICAgIGlmIChpbm9kZSkg
ewogICAgICAgICAgICAgICAgaW5vZGUtPmlfc2IgPSBzYjsKICAgICAgICAgICAgICAgIGlub2Rl
LT5pX2RldiA9IHNiLT5zX2RldjsKICAgICAgICAgICAgICAgIGlub2RlLT5pX2Jsa2JpdHMgPSBz
Yi0+c19ibG9ja3NpemVfYml0czsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGlub2RlOwp9CmV4
dGVybiB2b2lkIHJlbW92ZV9zdWlkKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwoKZXh0ZXJuIHZvaWQg
aW5zZXJ0X2lub2RlX2hhc2goc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCByZW1vdmVfaW5v
ZGVfaGFzaChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBzdHJ1Y3QgZmlsZSAqIGdldF9lbXB0eV9m
aWxwKHZvaWQpOwpleHRlcm4gdm9pZCBmaWxlX21vdmUoc3RydWN0IGZpbGUgKmYsIHN0cnVjdCBs
aXN0X2hlYWQgKmxpc3QpOwpleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogZ2V0X2hhc2hfdGFi
bGUoa2Rldl90LCBpbnQsIGludCk7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBnZXRibGso
a2Rldl90LCBpbnQsIGludCk7CmV4dGVybiB2b2lkIGxsX3J3X2Jsb2NrKGludCwgaW50LCBzdHJ1
Y3QgYnVmZmVyX2hlYWQgKiBiaFtdKTsKZXh0ZXJuIHZvaWQgc3VibWl0X2JoKGludCwgc3RydWN0
IGJ1ZmZlcl9oZWFkICopOwpleHRlcm4gaW50IGlzX3JlYWRfb25seShrZGV2X3QpOwpleHRlcm4g
dm9pZCBfX2JyZWxzZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKik7CnN0YXRpYyBpbmxpbmUgdm9pZCBi
cmVsc2Uoc3RydWN0IGJ1ZmZlcl9oZWFkICpidWYpCnsKICAgICAgICBpZiAoYnVmKQogICAgICAg
ICAgICAgICAgX19icmVsc2UoYnVmKTsKfQpleHRlcm4gdm9pZCBfX2Jmb3JnZXQoc3RydWN0IGJ1
ZmZlcl9oZWFkICopOwpzdGF0aWMgaW5saW5lIHZvaWQgYmZvcmdldChzdHJ1Y3QgYnVmZmVyX2hl
YWQgKmJ1ZikKewogICAgICAgIGlmIChidWYpCiAgICAgICAgICAgICAgICBfX2Jmb3JnZXQoYnVm
KTsKfQpleHRlcm4gaW50IHNldF9ibG9ja3NpemUoa2Rldl90LCBpbnQpOwpleHRlcm4gc3RydWN0
IGJ1ZmZlcl9oZWFkICogYnJlYWQoa2Rldl90LCBpbnQsIGludCk7CmV4dGVybiB2b2lkIHdha2V1
cF9iZGZsdXNoKGludCB3YWl0KTsKZXh0ZXJuIHZvaWQgcHV0X3VudXNlZF9idWZmZXJfaGVhZChz
dHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCk7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBnZXRf
dW51c2VkX2J1ZmZlcl9oZWFkKGludCBhc3luYyk7CgpleHRlcm4gaW50IGJyd19wYWdlKGludCwg
c3RydWN0IHBhZ2UgKiwga2Rldl90LCBpbnQgW10sIGludCk7Cgp0eXBlZGVmIGludCAoZ2V0X2Js
b2NrX3QpKHN0cnVjdCBpbm9kZSosbG9uZyxzdHJ1Y3QgYnVmZmVyX2hlYWQqLGludCk7CgoKZXh0
ZXJuIGludCBibG9ja19mbHVzaHBhZ2Uoc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQgbG9uZyk7CmV4
dGVybiBpbnQgdHJ5X3RvX3JlbGVhc2VfcGFnZShzdHJ1Y3QgcGFnZSAqIHBhZ2UsIGludCBnZnBf
bWFzayk7CmV4dGVybiBpbnQgYmxvY2tfc3ltbGluayhzdHJ1Y3QgaW5vZGUgKiwgY29uc3QgY2hh
ciAqLCBpbnQpOwpleHRlcm4gaW50IGJsb2NrX3dyaXRlX2Z1bGxfcGFnZShzdHJ1Y3QgcGFnZSos
IGdldF9ibG9ja190Kik7CmV4dGVybiBpbnQgYmxvY2tfcmVhZF9mdWxsX3BhZ2Uoc3RydWN0IHBh
Z2UqLCBnZXRfYmxvY2tfdCopOwpleHRlcm4gaW50IGJsb2NrX3ByZXBhcmVfd3JpdGUoc3RydWN0
IHBhZ2UqLCB1bnNpZ25lZCwgdW5zaWduZWQsIGdldF9ibG9ja190Kik7CmV4dGVybiBpbnQgY29u
dF9wcmVwYXJlX3dyaXRlKHN0cnVjdCBwYWdlKiwgdW5zaWduZWQsIHVuc2lnbmVkLCBnZXRfYmxv
Y2tfdCosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqKTsK
ZXh0ZXJuIGludCBibG9ja19zeW5jX3BhZ2Uoc3RydWN0IHBhZ2UgKik7CgppbnQgZ2VuZXJpY19i
bG9ja19ibWFwKHN0cnVjdCBhZGRyZXNzX3NwYWNlICosIGxvbmcsIGdldF9ibG9ja190ICopOwpp
bnQgZ2VuZXJpY19jb21taXRfd3JpdGUoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKiwgdW5z
aWduZWQsIHVuc2lnbmVkKTsKaW50IGJsb2NrX3RydW5jYXRlX3BhZ2Uoc3RydWN0IGFkZHJlc3Nf
c3BhY2UgKiwgbG9mZl90LCBnZXRfYmxvY2tfdCAqKTsKCmV4dGVybiBpbnQgd2FpdGZvcl9vbmVf
cGFnZShzdHJ1Y3QgcGFnZSopOwpleHRlcm4gaW50IGdlbmVyaWNfZmlsZV9tbWFwKHN0cnVjdCBm
aWxlICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKZXh0ZXJuIGludCBmaWxlX3JlYWRfYWN0
b3IocmVhZF9kZXNjcmlwdG9yX3QgKiBkZXNjLCBzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQg
bG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CmV4dGVybiBzc2l6ZV90IGdlbmVyaWNf
ZmlsZV9yZWFkKHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVy
biBzc2l6ZV90IGdlbmVyaWNfZmlsZV93cml0ZShzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICos
IHNpemVfdCwgbG9mZl90ICopOwpleHRlcm4gdm9pZCBkb19nZW5lcmljX2ZpbGVfcmVhZChzdHJ1
Y3QgZmlsZSAqLCBsb2ZmX3QgKiwgcmVhZF9kZXNjcmlwdG9yX3QgKiwgcmVhZF9hY3Rvcl90KTsK
CmV4dGVybiBzc2l6ZV90IGdlbmVyaWNfcmVhZF9kaXIoc3RydWN0IGZpbGUgKiwgY2hhciAqLCBz
aXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIGxvZmZfdCBnZW5lcmljX2ZpbGVfbGxzZWVrKHN0cnVj
dCBmaWxlICosIGxvZmZfdCwgaW50KTsKZXh0ZXJuIGludCBnZW5lcmljX2ZpbGVfb3BlbihzdHJ1
Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKik7CgpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9u
cyBnZW5lcmljX3JvX2ZvcHM7CgpleHRlcm4gaW50IHZmc19yZWFkbGluayhzdHJ1Y3QgZGVudHJ5
ICosIGNoYXIgKiwgaW50LCBjb25zdCBjaGFyICopOwpleHRlcm4gaW50IHZmc19mb2xsb3dfbGlu
ayhzdHJ1Y3QgbmFtZWlkYXRhICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgcGFnZV9yZWFk
bGluayhzdHJ1Y3QgZGVudHJ5ICosIGNoYXIgKiwgaW50KTsKZXh0ZXJuIGludCBwYWdlX2ZvbGxv
d19saW5rKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IG5hbWVpZGF0YSAqKTsKZXh0ZXJuIHN0cnVj
dCBpbm9kZV9vcGVyYXRpb25zIHBhZ2Vfc3ltbGlua19pbm9kZV9vcGVyYXRpb25zOwoKZXh0ZXJu
IGludCB2ZnNfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqLCBmaWxsZGlyX3QsIHZvaWQgKik7CmV4dGVy
biBpbnQgZGNhY2hlX3JlYWRkaXIoc3RydWN0IGZpbGUgKiwgdm9pZCAqLCBmaWxsZGlyX3QpOwoK
ZXh0ZXJuIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpnZXRfZnNfdHlwZShjb25zdCBjaGFyICpu
YW1lKTsKZXh0ZXJuIHN0cnVjdCBzdXBlcl9ibG9jayAqZ2V0X3N1cGVyKGtkZXZfdCk7CmV4dGVy
biB2b2lkIGRyb3Bfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CnN0YXRpYyBpbmxpbmUg
aW50IGlzX21vdW50ZWQoa2Rldl90IGRldikKewogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAq
c2IgPSBnZXRfc3VwZXIoZGV2KTsKICAgICAgICBpZiAoc2IpIHsKICAgICAgICAgICAgICAgIGRy
b3Bfc3VwZXIoc2IpOwogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgICAg
IHJldHVybiAwOwp9CmV4dGVybiBrZGV2X3QgUk9PVF9ERVY7CmV4dGVybiBjaGFyIHJvb3RfZGV2
aWNlX25hbWVbXTsKCgpleHRlcm4gdm9pZCBzaG93X2J1ZmZlcnModm9pZCk7CmV4dGVybiB2b2lk
IG1vdW50X3Jvb3Qodm9pZCk7CgoKCgoKCmV4dGVybiBzc2l6ZV90IGNoYXJfcmVhZChzdHJ1Y3Qg
ZmlsZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwpleHRlcm4gc3NpemVfdCBibG9ja19y
ZWFkKHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVybiBpbnQg
cmVhZF9haGVhZFtdOwoKZXh0ZXJuIHNzaXplX3QgY2hhcl93cml0ZShzdHJ1Y3QgZmlsZSAqLCBj
b25zdCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwpleHRlcm4gc3NpemVfdCBibG9ja193cml0
ZShzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwoKZXh0ZXJu
IGludCBmaWxlX2ZzeW5jKHN0cnVjdCBmaWxlICosIHN0cnVjdCBkZW50cnkgKiwgaW50KTsKZXh0
ZXJuIGludCBnZW5lcmljX2J1ZmZlcl9mZGF0YXN5bmMoc3RydWN0IGlub2RlICppbm9kZSwgdW5z
aWduZWQgbG9uZyBzdGFydF9pZHgsIHVuc2lnbmVkIGxvbmcgZW5kX2lkeCk7CmV4dGVybiBpbnQg
Z2VuZXJpY19vc3luY19pbm9kZShzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKCmV4dGVybiBpbnQgaW5v
ZGVfY2hhbmdlX29rKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgaWF0dHIgKik7CmV4dGVybiBpbnQg
aW5vZGVfc2V0YXR0cihzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGlhdHRyICopOwojIDE1MDggIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0YXRpYyBpbmxpbmUgc3Ry
dWN0IGRlbnRyeSAqbG9ja19wYXJlbnQoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAg
c3RydWN0IGRlbnRyeSAqZGlyID0gZGdldChkZW50cnktPmRfcGFyZW50KTsKCiAgICAgICAgZG93
bigmZGlyLT5kX2lub2RlLT5pX3NlbSk7CiAgICAgICAgcmV0dXJuIGRpcjsKfQoKc3RhdGljIGlu
bGluZSBzdHJ1Y3QgZGVudHJ5ICpnZXRfcGFyZW50KHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewog
ICAgICAgIHJldHVybiBkZ2V0KGRlbnRyeS0+ZF9wYXJlbnQpOwp9CgpzdGF0aWMgaW5saW5lIHZv
aWQgdW5sb2NrX2RpcihzdHJ1Y3QgZGVudHJ5ICpkaXIpCnsKICAgICAgICB1cCgmZGlyLT5kX2lu
b2RlLT5pX3NlbSk7CiAgICAgICAgZHB1dChkaXIpOwp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lk
IGRvdWJsZV9kb3duKHN0cnVjdCBzZW1hcGhvcmUgKnMxLCBzdHJ1Y3Qgc2VtYXBob3JlICpzMikK
ewogICAgICAgIGlmIChzMSAhPSBzMikgewogICAgICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCBs
b25nKSBzMSA8ICh1bnNpZ25lZCBsb25nKSBzMikgewogICAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBzMjsKICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBz
MTsgczEgPSB0bXA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkb3duKHMxKTsK
ICAgICAgICB9CiAgICAgICAgZG93bihzMik7Cn0KIyAxNTUyICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvaW5jbHVkZS9saW51eC9mcy5oIgpzdGF0aWMgaW5saW5lIHZvaWQgdHJpcGxlX2Rvd24oc3Ry
dWN0IHNlbWFwaG9yZSAqczEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
c2VtYXBob3JlICpzMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1h
cGhvcmUgKnMzKQp7CiAgICAgICAgaWYgKHMxICE9IHMyKSB7CiAgICAgICAgICAgICAgICBpZiAo
KHVuc2lnbmVkIGxvbmcpIHMxIDwgKHVuc2lnbmVkIGxvbmcpIHMyKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczEgPCAodW5zaWduZWQgbG9uZykgczMpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBz
MzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMyA9IHMxOyBzMSA9IHRtcDsKICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHVuc2ln
bmVkIGxvbmcpIHMxIDwgKHVuc2lnbmVkIGxvbmcpIHMyKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqdG1wID0gczI7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgczIgPSBzMTsgczEgPSB0bXA7CiAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgo
dW5zaWduZWQgbG9uZykgczEgPCAodW5zaWduZWQgbG9uZykgczMpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBzMzsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzMyA9IHMxOyBzMSA9IHRtcDsKICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMyIDwg
KHVuc2lnbmVkIGxvbmcpIHMzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IHNlbWFwaG9yZSAqdG1wID0gczM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
czMgPSBzMjsgczIgPSB0bXA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgIGRvd24oczEpOwogICAgICAgIH0gZWxzZSBpZiAoKHVuc2ln
bmVkIGxvbmcpIHMyIDwgKHVuc2lnbmVkIGxvbmcpIHMzKSB7CiAgICAgICAgICAgICAgICBzdHJ1
Y3Qgc2VtYXBob3JlICp0bXAgPSBzMzsKICAgICAgICAgICAgICAgIHMzID0gczI7IHMyID0gdG1w
OwogICAgICAgIH0KICAgICAgICBkb3duKHMyKTsKICAgICAgICBkb3duKHMzKTsKfQoKc3RhdGlj
IGlubGluZSB2b2lkIGRvdWJsZV91cChzdHJ1Y3Qgc2VtYXBob3JlICpzMSwgc3RydWN0IHNlbWFw
aG9yZSAqczIpCnsKICAgICAgICB1cChzMSk7CiAgICAgICAgaWYgKHMxICE9IHMyKQogICAgICAg
ICAgICAgICAgdXAoczIpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdHJpcGxlX3VwKHN0cnVjdCBz
ZW1hcGhvcmUgKnMxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhv
cmUgKnMyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMz
KQp7CiAgICAgICAgdXAoczEpOwogICAgICAgIGlmIChzMSAhPSBzMikKICAgICAgICAgICAgICAg
IHVwKHMyKTsKICAgICAgICB1cChzMyk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBkb3VibGVfbG9j
ayhzdHJ1Y3QgZGVudHJ5ICpkMSwgc3RydWN0IGRlbnRyeSAqZDIpCnsKICAgICAgICBkb3VibGVf
ZG93bigmZDEtPmRfaW5vZGUtPmlfc2VtLCAmZDItPmRfaW5vZGUtPmlfc2VtKTsKfQoKc3RhdGlj
IGlubGluZSB2b2lkIGRvdWJsZV91bmxvY2soc3RydWN0IGRlbnRyeSAqZDEsIHN0cnVjdCBkZW50
cnkgKmQyKQp7CiAgICAgICAgZG91YmxlX3VwKCZkMS0+ZF9pbm9kZS0+aV9zZW0sJmQyLT5kX2lu
b2RlLT5pX3NlbSk7CiAgICAgICAgZHB1dChkMSk7CiAgICAgICAgZHB1dChkMik7Cn0KIyAxOCAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIiAyCiMgMzIg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHkuaCIKdHlwZWRl
ZiBzdHJ1Y3QgX191c2VyX2NhcF9oZWFkZXJfc3RydWN0IHsKICAgICAgICBfX3UzMiB2ZXJzaW9u
OwogICAgICAgIGludCBwaWQ7Cn0gKmNhcF91c2VyX2hlYWRlcl90OwoKdHlwZWRlZiBzdHJ1Y3Qg
X191c2VyX2NhcF9kYXRhX3N0cnVjdCB7CiAgICAgICAgX191MzIgZWZmZWN0aXZlOwogICAgICAg
IF9fdTMyIHBlcm1pdHRlZDsKICAgICAgICBfX3UzMiBpbmhlcml0YWJsZTsKfSAqY2FwX3VzZXJf
ZGF0YV90OwojIDU1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9jYXBhYmls
aXR5LmgiCnR5cGVkZWYgX191MzIga2VybmVsX2NhcF90OwojIDI4NiAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIgpleHRlcm4ga2VybmVsX2NhcF90IGNh
cF9ic2V0OwojIDMxNCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvY2FwYWJp
bGl0eS5oIgpzdGF0aWMgaW5saW5lIGtlcm5lbF9jYXBfdCBjYXBfY29tYmluZShrZXJuZWxfY2Fw
X3QgYSwga2VybmVsX2NhcF90IGIpCnsKICAgICBrZXJuZWxfY2FwX3QgZGVzdDsKICAgICAoZGVz
dCkgPSAoYSkgfCAoYik7CiAgICAgcmV0dXJuIGRlc3Q7Cn0KCnN0YXRpYyBpbmxpbmUga2VybmVs
X2NhcF90IGNhcF9pbnRlcnNlY3Qoa2VybmVsX2NhcF90IGEsIGtlcm5lbF9jYXBfdCBiKQp7CiAg
ICAga2VybmVsX2NhcF90IGRlc3Q7CiAgICAgKGRlc3QpID0gKGEpICYgKGIpOwogICAgIHJldHVy
biBkZXN0Owp9CgpzdGF0aWMgaW5saW5lIGtlcm5lbF9jYXBfdCBjYXBfZHJvcChrZXJuZWxfY2Fw
X3QgYSwga2VybmVsX2NhcF90IGRyb3ApCnsKICAgICBrZXJuZWxfY2FwX3QgZGVzdDsKICAgICAo
ZGVzdCkgPSAoYSkgJiB+KGRyb3ApOwogICAgIHJldHVybiBkZXN0Owp9CgpzdGF0aWMgaW5saW5l
IGtlcm5lbF9jYXBfdCBjYXBfaW52ZXJ0KGtlcm5lbF9jYXBfdCBjKQp7CiAgICAga2VybmVsX2Nh
cF90IGRlc3Q7CiAgICAgKGRlc3QpID0gfihjKTsKICAgICByZXR1cm4gZGVzdDsKfQojIDYgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaCIgMgojIDIyICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9iaW5mbXRzLmgiCnN0cnVjdCBsaW51eF9i
aW5wcm17CiAgICAgICAgY2hhciBidWZbMTI4XTsKICAgICAgICBzdHJ1Y3QgcGFnZSAqcGFnZVsz
Ml07CiAgICAgICAgdW5zaWduZWQgbG9uZyBwOwogICAgICAgIGludCBzaF9iYW5nOwogICAgICAg
IHN0cnVjdCBmaWxlICogZmlsZTsKICAgICAgICBpbnQgZV91aWQsIGVfZ2lkOwogICAgICAgIGtl
cm5lbF9jYXBfdCBjYXBfaW5oZXJpdGFibGUsIGNhcF9wZXJtaXR0ZWQsIGNhcF9lZmZlY3RpdmU7
CiAgICAgICAgaW50IGFyZ2MsIGVudmM7CiAgICAgICAgY2hhciAqIGZpbGVuYW1lOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgbG9hZGVyLCBleGVjOwp9OwoKCgoKCnN0cnVjdCBsaW51eF9iaW5mbXQg
ewogICAgICAgIHN0cnVjdCBsaW51eF9iaW5mbXQgKiBuZXh0OwogICAgICAgIHN0cnVjdCBtb2R1
bGUgKm1vZHVsZTsKICAgICAgICBpbnQgKCpsb2FkX2JpbmFyeSkoc3RydWN0IGxpbnV4X2JpbnBy
bSAqLCBzdHJ1Y3QgcHRfcmVncyAqIHJlZ3MpOwogICAgICAgIGludCAoKmxvYWRfc2hsaWIpKHN0
cnVjdCBmaWxlICopOwogICAgICAgIGludCAoKmNvcmVfZHVtcCkobG9uZyBzaWduciwgc3RydWN0
IHB0X3JlZ3MgKiByZWdzLCBzdHJ1Y3QgZmlsZSAqIGZpbGUpOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgbWluX2NvcmVkdW1wOwp9OwoKZXh0ZXJuIGludCByZWdpc3Rlcl9iaW5mbXQoc3RydWN0IGxp
bnV4X2JpbmZtdCAqKTsKZXh0ZXJuIGludCB1bnJlZ2lzdGVyX2JpbmZtdChzdHJ1Y3QgbGludXhf
YmluZm10ICopOwoKZXh0ZXJuIGludCBwcmVwYXJlX2JpbnBybShzdHJ1Y3QgbGludXhfYmlucHJt
ICopOwpleHRlcm4gdm9pZCByZW1vdmVfYXJnX3plcm8oc3RydWN0IGxpbnV4X2JpbnBybSAqKTsK
ZXh0ZXJuIGludCBzZWFyY2hfYmluYXJ5X2hhbmRsZXIoc3RydWN0IGxpbnV4X2JpbnBybSAqLHN0
cnVjdCBwdF9yZWdzICopOwpleHRlcm4gaW50IGZsdXNoX29sZF9leGVjKHN0cnVjdCBsaW51eF9i
aW5wcm0gKiBicHJtKTsKZXh0ZXJuIGludCBzZXR1cF9hcmdfcGFnZXMoc3RydWN0IGxpbnV4X2Jp
bnBybSAqIGJwcm0pOwpleHRlcm4gaW50IGNvcHlfc3RyaW5ncyhpbnQgYXJnYyxjaGFyICoqIGFy
Z3Ysc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSk7CmV4dGVybiBpbnQgY29weV9zdHJpbmdzX2tl
cm5lbChpbnQgYXJnYyxjaGFyICoqIGFyZ3Ysc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSk7CmV4
dGVybiB2b2lkIGNvbXB1dGVfY3JlZHMoc3RydWN0IGxpbnV4X2JpbnBybSAqYmlucHJtKTsKZXh0
ZXJuIGludCBkb19jb3JlZHVtcChsb25nIHNpZ25yLCBzdHJ1Y3QgcHRfcmVncyAqIHJlZ3MpOwpl
eHRlcm4gdm9pZCBzZXRfYmluZm10KHN0cnVjdCBsaW51eF9iaW5mbXQgKm5ldyk7CiMgMTAgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC90aHJlYWRzLmgiIDEKIyAxMSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
aW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNs
dWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9s
aW51eC90aW1lcy5oIiAxCgoKCnN0cnVjdCB0bXMgewogICAgICAgIGNsb2NrX3QgdG1zX3V0aW1l
OwogICAgICAgIGNsb2NrX3QgdG1zX3N0aW1lOwogICAgICAgIGNsb2NrX3QgdG1zX2N1dGltZTsK
ICAgICAgICBjbG9ja190IHRtc19jc3RpbWU7Cn07CiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5j
bHVkZS9saW51eC90aW1leC5oIiAxCiMgNTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRl
L2xpbnV4L3RpbWV4LmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3Bh
cmFtLmgiIDEKIyA1NSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvdGltZXgu
aCIgMgojIDE1MiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvdGltZXguaCIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vdGltZXguaCIgMQojIDkgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS90aW1leC5oIgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9pbmNsdWRlL2FzbS90aW1leC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2luY2x1ZGUvYXNtL21zci5oIiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRl
L2FzbS90aW1leC5oIiAyCiMgMzIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS90
aW1leC5oIgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBjeWNsZXNfdDsKCmV4dGVybiBjeWNs
ZXNfdCBjYWNoZWZsdXNoX3RpbWU7CgpzdGF0aWMgaW5saW5lIGN5Y2xlc190IGdldF9jeWNsZXMg
KHZvaWQpCnsKCgoKICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcmV0OwoKICAgICAgICBfX2Fz
bV9fIF9fdm9sYXRpbGVfXygicmR0c2MiIDogIj1BIiAocmV0KSk7CiAgICAgICAgcmV0dXJuIHJl
dDsKCn0KCmV4dGVybiB1bnNpZ25lZCBsb25nIGNwdV9raHo7CiMgMTUzICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvaW5jbHVkZS9saW51eC90aW1leC5oIiAyCiMgMTYxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvaW5jbHVkZS9saW51eC90aW1leC5oIgpzdHJ1Y3QgdGltZXggewogICAgICAgIHVuc2ln
bmVkIGludCBtb2RlczsKICAgICAgICBsb25nIG9mZnNldDsKICAgICAgICBsb25nIGZyZXE7CiAg
ICAgICAgbG9uZyBtYXhlcnJvcjsKICAgICAgICBsb25nIGVzdGVycm9yOwogICAgICAgIGludCBz
dGF0dXM7CiAgICAgICAgbG9uZyBjb25zdGFudDsKICAgICAgICBsb25nIHByZWNpc2lvbjsKICAg
ICAgICBsb25nIHRvbGVyYW5jZTsKCgogICAgICAgIHN0cnVjdCB0aW1ldmFsIHRpbWU7CiAgICAg
ICAgbG9uZyB0aWNrOwoKICAgICAgICBsb25nIHBwc2ZyZXE7CiAgICAgICAgbG9uZyBqaXR0ZXI7
CiAgICAgICAgaW50IHNoaWZ0OwogICAgICAgIGxvbmcgc3RhYmlsOwogICAgICAgIGxvbmcgaml0
Y250OwogICAgICAgIGxvbmcgY2FsY250OwogICAgICAgIGxvbmcgZXJyY250OwogICAgICAgIGxv
bmcgc3RiY250OwoKICAgICAgICBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOwog
ICAgICAgIGludCA6MzI7IGludCA6MzI7IGludCA6MzI7IGludCA6MzI7CiAgICAgICAgaW50IDoz
MjsgaW50IDozMjsgaW50IDozMjsgaW50IDozMjsKfTsKIyAyNTMgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9pbmNsdWRlL2xpbnV4L3RpbWV4LmgiCmV4dGVybiBsb25nIHRpY2s7CmV4dGVybiBpbnQg
dGlja2FkajsKCgoKCmV4dGVybiBpbnQgdGltZV9zdGF0ZTsKZXh0ZXJuIGludCB0aW1lX3N0YXR1
czsKZXh0ZXJuIGxvbmcgdGltZV9vZmZzZXQ7CmV4dGVybiBsb25nIHRpbWVfY29uc3RhbnQ7CmV4
dGVybiBsb25nIHRpbWVfdG9sZXJhbmNlOwpleHRlcm4gbG9uZyB0aW1lX3ByZWNpc2lvbjsKZXh0
ZXJuIGxvbmcgdGltZV9tYXhlcnJvcjsKZXh0ZXJuIGxvbmcgdGltZV9lc3RlcnJvcjsKCmV4dGVy
biBsb25nIHRpbWVfcGhhc2U7CmV4dGVybiBsb25nIHRpbWVfZnJlcTsKZXh0ZXJuIGxvbmcgdGlt
ZV9hZGo7CmV4dGVybiBsb25nIHRpbWVfcmVmdGltZTsKCmV4dGVybiBsb25nIHRpbWVfYWRqdXN0
OwoKCmV4dGVybiBsb25nIHBwc19vZmZzZXQ7CmV4dGVybiBsb25nIHBwc19qaXR0ZXI7CmV4dGVy
biBsb25nIHBwc19mcmVxOwpleHRlcm4gbG9uZyBwcHNfc3RhYmlsOwpleHRlcm4gbG9uZyBwcHNf
dmFsaWQ7CgoKZXh0ZXJuIGludCBwcHNfc2hpZnQ7CmV4dGVybiBsb25nIHBwc19qaXRjbnQ7CmV4
dGVybiBsb25nIHBwc19jYWxjbnQ7CmV4dGVybiBsb25nIHBwc19lcnJjbnQ7CmV4dGVybiBsb25n
IHBwc19zdGJjbnQ7CiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3Nj
aGVkLmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3N5c3RlbS5o
IiAxCiMgMTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vc2VtYXBob3JlLmgiIDEKIyAx
OCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9wYWdlLmgiIDEKIyAxOSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9pbmNsdWRlL2FzbS9wdHJhY2UuaCIgMQojIDIwICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2lu
Y2x1ZGUvYXNtL21tdS5oIiAxCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgdm9pZCAq
c2VnbWVudHM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjcHV2YWxpZDsKfSBtbV9jb250ZXh0X3Q7
CiMgMjEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvc21wLmgiIDEKIyA5ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9zbXAuaCIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvaW5jbHVkZS9saW51eC9zbXAuaCIgMgojIDIzICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
aW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1
ZGUvbGludXgvdHR5LmgiIDEKIyAxOSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGlu
dXgvdHR5LmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvY29uZmln
LmgiIDEKIyAyMCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvdHR5LmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9mcy5oIiAxCiMgMjEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3R0eS5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvbWFqb3IuaCIgMQojIDE3NyAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvbGludXgvbWFqb3IuaCIKc3RhdGljIF9faW5saW5lX18gaW50IHNj
c2lfYmxrX21ham9yKGludCBtKSB7CiAgICAgICAgcmV0dXJuICgoKG0pID09IDggfHwgKChtKSA+
PSA2NSAmJiAobSkgPD0gNzEpKSB8fCAobSkgPT0gMTEpOwp9CiMgMTkwICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvaW5jbHVkZS9saW51eC9tYWpvci5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgaWRl
X2Jsa19tYWpvcihpbnQgbSkKewogICAgICAgIHJldHVybiAoKG0pID09IDMgfHwgKG0pID09IDIy
IHx8IChtKSA9PSAzMyB8fCAobSkgPT0gMzQgfHwgKG0pID09IDU2IHx8IChtKSA9PSA1NyB8fCAo
bSkgPT0gODggfHwgKG0pID09IDg5IHx8IChtKSA9PSA5MCB8fCAobSkgPT0gOTEpOwp9CiMgMjIg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3R0eS5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvdGVybWlvcy5oIiAxCgoKCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDUgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3Rlcm1pb3MuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9pbmNsdWRlL2FzbS90ZXJtaW9zLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvaW5jbHVkZS9hc20vdGVybWJpdHMuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvaW5jbHVkZS9hc20vdGVybWJpdHMuaCIgMgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIGNj
X3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IHNwZWVkX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IHRj
ZmxhZ190OwoKCnN0cnVjdCB0ZXJtaW9zIHsKICAgICAgICB0Y2ZsYWdfdCBjX2lmbGFnOwogICAg
ICAgIHRjZmxhZ190IGNfb2ZsYWc7CiAgICAgICAgdGNmbGFnX3QgY19jZmxhZzsKICAgICAgICB0
Y2ZsYWdfdCBjX2xmbGFnOwogICAgICAgIGNjX3QgY19saW5lOwogICAgICAgIGNjX3QgY19jY1sx
OV07Cn07CiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3Rlcm1pb3MuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9pb2N0bHMuaCIgMQoKCgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9pb2N0bC5oIiAxCiMgNSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL2lvY3Rscy5oIiAyCiMgNiAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3Rlcm1pb3MuaCIgMgoKc3RydWN0IHdpbnNpemUgewog
ICAgICAgIHVuc2lnbmVkIHNob3J0IHdzX3JvdzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB3c19j
b2w7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgd3NfeHBpeGVsOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IHdzX3lwaXhlbDsKfTsKCgpzdHJ1Y3QgdGVybWlvIHsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBjX2lmbGFnOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNfb2ZsYWc7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgY19jZmxhZzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjX2xmbGFnOwogICAgICAg
IHVuc2lnbmVkIGNoYXIgY19saW5lOwogICAgICAgIHVuc2lnbmVkIGNoYXIgY19jY1s4XTsKfTsK
IyA2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC90ZXJtaW9zLmgiIDIKIyAy
MyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvdHR5LmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC90cXVldWUuaCIgMQojIDI0ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC90dHkuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3R0eV9kcml2ZXIuaCIgMQojIDExOCAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvbGludXgvdHR5X2RyaXZlci5oIgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2ZzLmgiIDEKIyAxMTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9pbmNsdWRlL2xpbnV4L3R0eV9kcml2ZXIuaCIgMgoKc3RydWN0IHR0eV9kcml2ZXIgewogICAg
ICAgIGludCBtYWdpYzsKICAgICAgICBjb25zdCBjaGFyICpkcml2ZXJfbmFtZTsKICAgICAgICBj
b25zdCBjaGFyICpuYW1lOwogICAgICAgIGludCBuYW1lX2Jhc2U7CiAgICAgICAgc2hvcnQgbWFq
b3I7CiAgICAgICAgc2hvcnQgbWlub3Jfc3RhcnQ7CiAgICAgICAgc2hvcnQgbnVtOwogICAgICAg
IHNob3J0IHR5cGU7CiAgICAgICAgc2hvcnQgc3VidHlwZTsKICAgICAgICBzdHJ1Y3QgdGVybWlv
cyBpbml0X3Rlcm1pb3M7CiAgICAgICAgaW50IGZsYWdzOwogICAgICAgIGludCAqcmVmY291bnQ7
CiAgICAgICAgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpwcm9jX2VudHJ5OwogICAgICAgIHN0cnVj
dCB0dHlfZHJpdmVyICpvdGhlcjsKCgoKCiAgICAgICAgc3RydWN0IHR0eV9zdHJ1Y3QgKip0YWJs
ZTsKICAgICAgICBzdHJ1Y3QgdGVybWlvcyAqKnRlcm1pb3M7CiAgICAgICAgc3RydWN0IHRlcm1p
b3MgKip0ZXJtaW9zX2xvY2tlZDsKICAgICAgICB2b2lkICpkcml2ZXJfc3RhdGU7CgoKCgoKICAg
ICAgICBpbnQgKCpvcGVuKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBm
aWxwKTsKICAgICAgICB2b2lkICgqY2xvc2UpKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5LCBzdHJ1
Y3QgZmlsZSAqIGZpbHApOwogICAgICAgIGludCAoKndyaXRlKShzdHJ1Y3QgdHR5X3N0cnVjdCAq
IHR0eSwgaW50IGZyb21fdXNlciwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVk
IGNoYXIgKmJ1ZiwgaW50IGNvdW50KTsKICAgICAgICB2b2lkICgqcHV0X2NoYXIpKHN0cnVjdCB0
dHlfc3RydWN0ICp0dHksIHVuc2lnbmVkIGNoYXIgY2gpOwogICAgICAgIHZvaWQgKCpmbHVzaF9j
aGFycykoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgaW50ICgqd3JpdGVfcm9vbSko
c3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgaW50ICgqY2hhcnNfaW5fYnVmZmVyKShz
dHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICBpbnQgKCppb2N0bCkoc3RydWN0IHR0eV9z
dHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKiBmaWxlLAogICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKTsKICAgICAgICB2b2lkICgqc2V0X3Rlcm1p
b3MpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCB0ZXJtaW9zICogb2xkKTsKICAgICAg
ICB2b2lkICgqdGhyb3R0bGUpKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5KTsKICAgICAgICB2b2lk
ICgqdW50aHJvdHRsZSkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHkpOwogICAgICAgIHZvaWQgKCpz
dG9wKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICB2b2lkICgqc3RhcnQpKHN0cnVj
dCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIHZvaWQgKCpoYW5ndXApKHN0cnVjdCB0dHlfc3Ry
dWN0ICp0dHkpOwogICAgICAgIHZvaWQgKCpicmVha19jdGwpKHN0cnVjdCB0dHlfc3RydWN0ICp0
dHksIGludCBzdGF0ZSk7CiAgICAgICAgdm9pZCAoKmZsdXNoX2J1ZmZlcikoc3RydWN0IHR0eV9z
dHJ1Y3QgKnR0eSk7CiAgICAgICAgdm9pZCAoKnNldF9sZGlzYykoc3RydWN0IHR0eV9zdHJ1Y3Qg
KnR0eSk7CiAgICAgICAgdm9pZCAoKndhaXRfdW50aWxfc2VudCkoc3RydWN0IHR0eV9zdHJ1Y3Qg
KnR0eSwgaW50IHRpbWVvdXQpOwogICAgICAgIHZvaWQgKCpzZW5kX3hjaGFyKShzdHJ1Y3QgdHR5
X3N0cnVjdCAqdHR5LCBjaGFyIGNoKTsKICAgICAgICBpbnQgKCpyZWFkX3Byb2MpKGNoYXIgKnBh
Z2UsIGNoYXIgKipzdGFydCwgb2ZmX3Qgb2ZmLAogICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBjb3VudCwgaW50ICplb2YsIHZvaWQgKmRhdGEpOwogICAgICAgIGludCAoKndyaXRlX3Byb2Mp
KHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyICpidWZmZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgbG9uZyBjb3VudCwgdm9pZCAqZGF0YSk7CgoKCgogICAgICAgIHN0
cnVjdCB0dHlfZHJpdmVyICpuZXh0OwogICAgICAgIHN0cnVjdCB0dHlfZHJpdmVyICpwcmV2Owp9
OwojIDI1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC90dHkuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3R0eV9sZGlzYy5oIiAxCiMgMTAw
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC90dHlfbGRpc2MuaCIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9mcy5oIiAxCiMgMTAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC90dHlfbGRpc2MuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMQojIDEwMiAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvbGludXgvdHR5X2xkaXNjLmgiIDIKCnN0cnVjdCB0dHlfbGRpc2Mg
ewogICAgICAgIGludCBtYWdpYzsKICAgICAgICBjaGFyICpuYW1lOwogICAgICAgIGludCBudW07
CiAgICAgICAgaW50IGZsYWdzOwoKCgogICAgICAgIGludCAoKm9wZW4pKHN0cnVjdCB0dHlfc3Ry
dWN0ICopOwogICAgICAgIHZvaWQgKCpjbG9zZSkoc3RydWN0IHR0eV9zdHJ1Y3QgKik7CiAgICAg
ICAgdm9pZCAoKmZsdXNoX2J1ZmZlcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAg
c3NpemVfdCAoKmNoYXJzX2luX2J1ZmZlcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAg
ICAgc3NpemVfdCAoKnJlYWQpKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5LCBzdHJ1Y3QgZmlsZSAq
IGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiBidWYsIHNpemVf
dCBucik7CiAgICAgICAgc3NpemVfdCAoKndyaXRlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwg
c3RydWN0IGZpbGUgKiBmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWdu
ZWQgY2hhciAqIGJ1Ziwgc2l6ZV90IG5yKTsKICAgICAgICBpbnQgKCppb2N0bCkoc3RydWN0IHR0
eV9zdHJ1Y3QgKiB0dHksIHN0cnVjdCBmaWxlICogZmlsZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKTsKICAgICAgICB2b2lkICgq
c2V0X3Rlcm1pb3MpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCB0ZXJtaW9zICogb2xk
KTsKICAgICAgICB1bnNpZ25lZCBpbnQgKCpwb2xsKShzdHJ1Y3QgdHR5X3N0cnVjdCAqLCBzdHJ1
Y3QgZmlsZSAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwb2xsX3RhYmxl
X3N0cnVjdCAqKTsKCgoKCiAgICAgICAgdm9pZCAoKnJlY2VpdmVfYnVmKShzdHJ1Y3QgdHR5X3N0
cnVjdCAqLCBjb25zdCB1bnNpZ25lZCBjaGFyICpjcCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYXIgKmZwLCBpbnQgY291bnQpOwogICAgICAgIGludCAoKnJlY2VpdmVfcm9vbSko
c3RydWN0IHR0eV9zdHJ1Y3QgKik7CiAgICAgICAgdm9pZCAoKndyaXRlX3dha2V1cCkoc3RydWN0
IHR0eV9zdHJ1Y3QgKik7Cn07CiMgMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xp
bnV4L3R0eS5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9zeXN0
ZW0uaCIgMQojIDI4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC90dHkuaCIg
MgojIDU4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC90dHkuaCIKc3RydWN0
IHNjcmVlbl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBjaGFyIG9yaWdfeDsKICAgICAgICB1bnNp
Z25lZCBjaGFyIG9yaWdfeTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkb250dXNlMTsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBvcmlnX3ZpZGVvX3BhZ2U7CiAgICAgICAgdW5zaWduZWQgY2hhciBv
cmlnX3ZpZGVvX21vZGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBvcmlnX3ZpZGVvX2NvbHM7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgdW51c2VkMjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBvcmln
X3ZpZGVvX2VnYV9ieDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB1bnVzZWQzOwogICAgICAgIHVu
c2lnbmVkIGNoYXIgb3JpZ192aWRlb19saW5lczsKICAgICAgICB1bnNpZ25lZCBjaGFyIG9yaWdf
dmlkZW9faXNWR0E7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgb3JpZ192aWRlb19wb2ludHM7CgoK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBsZmJfd2lkdGg7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
bGZiX2hlaWdodDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBsZmJfZGVwdGg7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBsZmJfYmFzZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGxmYl9zaXplOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IGRvbnR1c2UyLCBkb250dXNlMzsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCBsZmJfbGluZWxlbmd0aDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJlZF9zaXplOwogICAg
ICAgIHVuc2lnbmVkIGNoYXIgcmVkX3BvczsKICAgICAgICB1bnNpZ25lZCBjaGFyIGdyZWVuX3Np
emU7CiAgICAgICAgdW5zaWduZWQgY2hhciBncmVlbl9wb3M7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBibHVlX3NpemU7CiAgICAgICAgdW5zaWduZWQgY2hhciBibHVlX3BvczsKICAgICAgICB1bnNp
Z25lZCBjaGFyIHJzdmRfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJzdmRfcG9zOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IHZlc2FwbV9zZWc7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdmVz
YXBtX29mZjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBwYWdlczsKCn07CgpleHRlcm4gc3RydWN0
IHNjcmVlbl9pbmZvIHNjcmVlbl9pbmZvOwojIDEzOCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2lu
Y2x1ZGUvbGludXgvdHR5LmgiCnN0cnVjdCB0dHlfZmxpcF9idWZmZXIgewogICAgICAgIHN0cnVj
dCB0cV9zdHJ1Y3QgdHF1ZXVlOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgcHR5X3NlbTsKICAg
ICAgICBjaGFyICpjaGFyX2J1Zl9wdHI7CiAgICAgICAgdW5zaWduZWQgY2hhciAqZmxhZ19idWZf
cHRyOwogICAgICAgIGludCBjb3VudDsKICAgICAgICBpbnQgYnVmX251bTsKICAgICAgICB1bnNp
Z25lZCBjaGFyIGNoYXJfYnVmWzIqNTEyXTsKICAgICAgICBjaGFyIGZsYWdfYnVmWzIqNTEyXTsK
ICAgICAgICB1bnNpZ25lZCBjaGFyIHNsb3BbNF07Cn07CiMgMjU4ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvaW5jbHVkZS9saW51eC90dHkuaCIKc3RydWN0IHR0eV9zdHJ1Y3QgewogICAgICAgIGlu
dCBtYWdpYzsKICAgICAgICBzdHJ1Y3QgdHR5X2RyaXZlciBkcml2ZXI7CiAgICAgICAgc3RydWN0
IHR0eV9sZGlzYyBsZGlzYzsKICAgICAgICBzdHJ1Y3QgdGVybWlvcyAqdGVybWlvcywgKnRlcm1p
b3NfbG9ja2VkOwogICAgICAgIGludCBwZ3JwOwogICAgICAgIGludCBzZXNzaW9uOwogICAgICAg
IGtkZXZfdCBkZXZpY2U7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICBpbnQg
Y291bnQ7CiAgICAgICAgc3RydWN0IHdpbnNpemUgd2luc2l6ZTsKICAgICAgICB1bnNpZ25lZCBj
aGFyIHN0b3BwZWQ6MSwgaHdfc3RvcHBlZDoxLCBmbG93X3N0b3BwZWQ6MSwgcGFja2V0OjE7CiAg
ICAgICAgdW5zaWduZWQgY2hhciBsb3dfbGF0ZW5jeToxLCB3YXJuZWQ6MTsKICAgICAgICB1bnNp
Z25lZCBjaGFyIGN0cmxfc3RhdHVzOwoKICAgICAgICBzdHJ1Y3QgdHR5X3N0cnVjdCAqbGluazsK
ICAgICAgICBzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqZmFzeW5jOwogICAgICAgIHN0cnVjdCB0dHlf
ZmxpcF9idWZmZXIgZmxpcDsKICAgICAgICBpbnQgbWF4X2ZsaXBfY250OwogICAgICAgIGludCBh
bHRfc3BlZWQ7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd3JpdGVfd2FpdDsKICAgICAgICB3
YWl0X3F1ZXVlX2hlYWRfdCByZWFkX3dhaXQ7CiAgICAgICAgc3RydWN0IHRxX3N0cnVjdCB0cV9o
YW5ndXA7CiAgICAgICAgdm9pZCAqZGlzY19kYXRhOwogICAgICAgIHZvaWQgKmRyaXZlcl9kYXRh
OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgdHR5X2ZpbGVzOwoKCgoKCgoKICAgICAgICB1bnNp
Z25lZCBpbnQgY29sdW1uOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbG5leHQ6MSwgZXJhc2luZzox
LCByYXc6MSwgcmVhbF9yYXc6MSwgaWNhbm9uOjE7CiAgICAgICAgdW5zaWduZWQgY2hhciBjbG9z
aW5nOjE7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbWluaW11bV90b193YWtlOwogICAgICAgIHVu
c2lnbmVkIG92ZXJydW5fdGltZTsKICAgICAgICBpbnQgbnVtX292ZXJydW47CiAgICAgICAgdW5z
aWduZWQgbG9uZyBwcm9jZXNzX2NoYXJfbWFwWzI1Ni8oOCpzaXplb2YodW5zaWduZWQgbG9uZykp
XTsKICAgICAgICBjaGFyICpyZWFkX2J1ZjsKICAgICAgICBpbnQgcmVhZF9oZWFkOwogICAgICAg
IGludCByZWFkX3RhaWw7CiAgICAgICAgaW50IHJlYWRfY250OwogICAgICAgIHVuc2lnbmVkIGxv
bmcgcmVhZF9mbGFnc1s0MDk2Lyg4KnNpemVvZih1bnNpZ25lZCBsb25nKSldOwogICAgICAgIGlu
dCBjYW5vbl9kYXRhOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY2Fub25faGVhZDsKICAgICAgICB1
bnNpZ25lZCBpbnQgY2Fub25fY29sdW1uOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgYXRvbWlj
X3JlYWQ7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBhdG9taWNfd3JpdGU7CiAgICAgICAgc3Bp
bmxvY2tfdCByZWFkX2xvY2s7CgogICAgICAgIHN0cnVjdCB0cV9zdHJ1Y3QgU0FLX3RxOwp9Owoj
IDM0MCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvdHR5LmgiCmV4dGVybiB2
b2lkIHR0eV93cml0ZV9mbHVzaChzdHJ1Y3QgdHR5X3N0cnVjdCAqKTsKCmV4dGVybiBzdHJ1Y3Qg
dGVybWlvcyB0dHlfc3RkX3Rlcm1pb3M7CmV4dGVybiBzdHJ1Y3QgdHR5X3N0cnVjdCAqIHJlZGly
ZWN0OwpleHRlcm4gc3RydWN0IHR0eV9sZGlzYyBsZGlzY3NbXTsKZXh0ZXJuIGludCBmZ19jb25z
b2xlLCBsYXN0X2NvbnNvbGUsIHdhbnRfY29uc29sZTsKCmV4dGVybiBpbnQga21zZ19yZWRpcmVj
dDsKCmV4dGVybiB2b2lkIGNvbl9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBjb25zb2xlX2luaXQo
dm9pZCk7CgpleHRlcm4gaW50IGxwX2luaXQodm9pZCk7CmV4dGVybiBpbnQgcHR5X2luaXQodm9p
ZCk7CmV4dGVybiB2b2lkIHR0eV9pbml0KHZvaWQpOwpleHRlcm4gaW50IG14c2VyX2luaXQodm9p
ZCk7CmV4dGVybiBpbnQgbW94YV9pbml0KHZvaWQpOwpleHRlcm4gaW50IGlwMl9pbml0KHZvaWQp
OwpleHRlcm4gaW50IHBjeGVfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBwY19pbml0KHZvaWQpOwpl
eHRlcm4gaW50IHZjc19pbml0KHZvaWQpOwpleHRlcm4gaW50IHJwX2luaXQodm9pZCk7CmV4dGVy
biBpbnQgY3lfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBzdGxfaW5pdCh2b2lkKTsKZXh0ZXJuIGlu
dCBzdGxpX2luaXQodm9pZCk7CmV4dGVybiBpbnQgc3BlY2lhbGl4X2luaXQodm9pZCk7CmV4dGVy
biBpbnQgZXNwc2VyaWFsX2luaXQodm9pZCk7CmV4dGVybiBpbnQgbWFjc2VyaWFsX2luaXQodm9p
ZCk7CmV4dGVybiBpbnQgYTIyMzJib2FyZF9pbml0KHZvaWQpOwpleHRlcm4gaW50IHN0ZGlvX2lu
aXQodm9pZCk7CgpleHRlcm4gaW50IHR0eV9wYXJhbm9pYV9jaGVjayhzdHJ1Y3QgdHR5X3N0cnVj
dCAqdHR5LCBrZGV2X3QgZGV2aWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyICpyb3V0aW5lKTsKZXh0ZXJuIGNoYXIgKnR0eV9uYW1lKHN0cnVjdCB0dHlfc3RydWN0
ICp0dHksIGNoYXIgKmJ1Zik7CmV4dGVybiB2b2lkIHR0eV93YWl0X3VudGlsX3NlbnQoc3RydWN0
IHR0eV9zdHJ1Y3QgKiB0dHksIGxvbmcgdGltZW91dCk7CmV4dGVybiBpbnQgdHR5X2NoZWNrX2No
YW5nZShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSk7CmV4dGVybiB2b2lkIHN0b3BfdHR5KHN0cnVj
dCB0dHlfc3RydWN0ICogdHR5KTsKZXh0ZXJuIHZvaWQgc3RhcnRfdHR5KHN0cnVjdCB0dHlfc3Ry
dWN0ICogdHR5KTsKZXh0ZXJuIGludCB0dHlfcmVnaXN0ZXJfbGRpc2MoaW50IGRpc2MsIHN0cnVj
dCB0dHlfbGRpc2MgKm5ld19sZGlzYyk7CmV4dGVybiBpbnQgdHR5X3JlZ2lzdGVyX2RyaXZlcihz
dHJ1Y3QgdHR5X2RyaXZlciAqZHJpdmVyKTsKZXh0ZXJuIGludCB0dHlfdW5yZWdpc3Rlcl9kcml2
ZXIoc3RydWN0IHR0eV9kcml2ZXIgKmRyaXZlcik7CmV4dGVybiB2b2lkIHR0eV9yZWdpc3Rlcl9k
ZXZmcyAoc3RydWN0IHR0eV9kcml2ZXIgKmRyaXZlciwgdW5zaWduZWQgaW50IGZsYWdzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1pbm9yKTsKZXh0ZXJuIHZvaWQg
dHR5X3VucmVnaXN0ZXJfZGV2ZnMgKHN0cnVjdCB0dHlfZHJpdmVyICpkcml2ZXIsIHVuc2lnbmVk
IG1pbm9yKTsKc3RydWN0IGRldmZzX2VudHJ5OwpleHRlcm4gdm9pZCB0dHlfcmVnaXN0ZXJfZGV2
ZnNfbmFtZSAoc3RydWN0IHR0eV9kcml2ZXIgKmRyaXZlciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBmbGFncywgdW5zaWduZWQgbWlub3IsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGV2ZnNfZW50cnkgKmRpciwg
Y29uc3QgY2hhciAqbmFtZSk7CmV4dGVybiB2b2lkIHR0eV91bnJlZ2lzdGVyX2RldmZzX25hbWUg
KHN0cnVjdCB0dHlfZHJpdmVyICpkcml2ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIG1pbm9yLCBzdHJ1Y3QgZGV2ZnNfZW50cnkgKmRpciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSk7CmV4dGVy
biBpbnQgdHR5X3JlYWRfcmF3X2RhdGEoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgdW5zaWduZWQg
Y2hhciAqYnVmcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnVmbGVuKTsKZXh0
ZXJuIHZvaWQgdHR5X3dyaXRlX21lc3NhZ2Uoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgY2hhciAq
bXNnKTsKCmV4dGVybiBpbnQgaXNfb3JwaGFuZWRfcGdycChpbnQgcGdycCk7CmV4dGVybiBpbnQg
aXNfaWdub3JlZChpbnQgc2lnKTsKZXh0ZXJuIGludCB0dHlfc2lnbmFsKGludCBzaWcsIHN0cnVj
dCB0dHlfc3RydWN0ICp0dHkpOwpleHRlcm4gdm9pZCB0dHlfaGFuZ3VwKHN0cnVjdCB0dHlfc3Ry
dWN0ICogdHR5KTsKZXh0ZXJuIHZvaWQgdHR5X3ZoYW5ndXAoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0
dHkpOwpleHRlcm4gdm9pZCB0dHlfdW5oYW5ndXAoc3RydWN0IGZpbGUgKmZpbHApOwpleHRlcm4g
aW50IHR0eV9odW5nX3VwX3Aoc3RydWN0IGZpbGUgKiBmaWxwKTsKZXh0ZXJuIHZvaWQgZG9fU0FL
KHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwpleHRlcm4gdm9pZCBkaXNhc3NvY2lhdGVfY3R0eShp
bnQgcHJpdik7CmV4dGVybiB2b2lkIHR0eV9mbGlwX2J1ZmZlcl9wdXNoKHN0cnVjdCB0dHlfc3Ry
dWN0ICp0dHkpOwpleHRlcm4gaW50IHR0eV9nZXRfYmF1ZF9yYXRlKHN0cnVjdCB0dHlfc3RydWN0
ICp0dHkpOwoKCmV4dGVybiBzdHJ1Y3QgdHR5X2xkaXNjIHR0eV9sZGlzY19OX1RUWTsKCgpleHRl
cm4gaW50IG5fdHR5X2lvY3RsKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5LCBzdHJ1Y3QgZmlsZSAq
IGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQg
bG9uZyBhcmcpOwoKCgpleHRlcm4gdm9pZCBzZXJpYWxfY29uc29sZV9pbml0KHZvaWQpOwoKCgpl
eHRlcm4gaW50IHBjeGVfb3BlbihzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgZmlsZSAq
ZmlscCk7CgoKCmV4dGVybiB2b2lkIGNvbnNvbGVfcHJpbnQoY29uc3QgY2hhciAqKTsKCgoKZXh0
ZXJuIGludCB2dF9pb2N0bChzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgZmlsZSAqIGZp
bGUsCiAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBh
cmcpOwoKZXh0ZXJuIHZvaWQgc3RkaW9fY29uc29sZV9pbml0KHZvaWQpOwojIDI0ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvbGludXgvc2VtLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvaW5jbHVkZS9saW51eC9pcGMuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5j
bHVkZS9saW51eC9pcGMuaCIgMgoKCgoKc3RydWN0IGlwY19wZXJtCnsKICAgICAgICBfX2tlcm5l
bF9rZXlfdCBrZXk7CiAgICAgICAgX19rZXJuZWxfdWlkX3QgdWlkOwogICAgICAgIF9fa2VybmVs
X2dpZF90IGdpZDsKICAgICAgICBfX2tlcm5lbF91aWRfdCBjdWlkOwogICAgICAgIF9fa2VybmVs
X2dpZF90IGNnaWQ7CiAgICAgICAgX19rZXJuZWxfbW9kZV90IG1vZGU7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgc2VxOwp9OwoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNt
L2lwY2J1Zi5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9pcGNi
dWYuaCIKc3RydWN0IGlwYzY0X3Blcm0KewogICAgICAgIF9fa2VybmVsX2tleV90IGtleTsKICAg
ICAgICBfX2tlcm5lbF91aWQzMl90IHVpZDsKICAgICAgICBfX2tlcm5lbF9naWQzMl90IGdpZDsK
ICAgICAgICBfX2tlcm5lbF91aWQzMl90IGN1aWQ7CiAgICAgICAgX19rZXJuZWxfZ2lkMzJfdCBj
Z2lkOwogICAgICAgIF9fa2VybmVsX21vZGVfdCBtb2RlOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IF9fcGFkMTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzZXE7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgX19wYWQyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQxOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgX191bnVzZWQyOwp9OwojIDIyICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVk
ZS9saW51eC9pcGMuaCIgMgojIDU3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51
eC9pcGMuaCIKc3RydWN0IGtlcm5faXBjX3Blcm0KewogICAgICAgIGtleV90IGtleTsKICAgICAg
ICB1aWRfdCB1aWQ7CiAgICAgICAgZ2lkX3QgZ2lkOwogICAgICAgIHVpZF90IGN1aWQ7CiAgICAg
ICAgZ2lkX3QgY2dpZDsKICAgICAgICBtb2RlX3QgbW9kZTsKICAgICAgICB1bnNpZ25lZCBsb25n
IHNlcTsKfTsKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9zZW0uaCIg
MgojIDIzICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9zZW0uaCIKc3RydWN0
IHNlbWlkX2RzIHsKICAgICAgICBzdHJ1Y3QgaXBjX3Blcm0gc2VtX3Blcm07CiAgICAgICAgX19r
ZXJuZWxfdGltZV90IHNlbV9vdGltZTsKICAgICAgICBfX2tlcm5lbF90aW1lX3Qgc2VtX2N0aW1l
OwogICAgICAgIHN0cnVjdCBzZW0gKnNlbV9iYXNlOwogICAgICAgIHN0cnVjdCBzZW1fcXVldWUg
KnNlbV9wZW5kaW5nOwogICAgICAgIHN0cnVjdCBzZW1fcXVldWUgKipzZW1fcGVuZGluZ19sYXN0
OwogICAgICAgIHN0cnVjdCBzZW1fdW5kbyAqdW5kbzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBz
ZW1fbnNlbXM7Cn07CgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vc2Vt
YnVmLmgiIDEKIyAxNCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3NlbWJ1Zi5o
IgpzdHJ1Y3Qgc2VtaWQ2NF9kcyB7CiAgICAgICAgc3RydWN0IGlwYzY0X3Blcm0gc2VtX3Blcm07
CiAgICAgICAgX19rZXJuZWxfdGltZV90IHNlbV9vdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25n
IF9fdW51c2VkMTsKICAgICAgICBfX2tlcm5lbF90aW1lX3Qgc2VtX2N0aW1lOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgX191bnVzZWQyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VtX25zZW1zOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191
bnVzZWQ0Owp9OwojIDM2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9zZW0u
aCIgMgoKCnN0cnVjdCBzZW1idWYgewogICAgICAgIHVuc2lnbmVkIHNob3J0IHNlbV9udW07CiAg
ICAgICAgc2hvcnQgc2VtX29wOwogICAgICAgIHNob3J0IHNlbV9mbGc7Cn07CgoKdW5pb24gc2Vt
dW4gewogICAgICAgIGludCB2YWw7CiAgICAgICAgc3RydWN0IHNlbWlkX2RzICpidWY7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgKmFycmF5OwogICAgICAgIHN0cnVjdCBzZW1pbmZvICpfX2J1ZjsK
ICAgICAgICB2b2lkICpfX3BhZDsKfTsKCnN0cnVjdCBzZW1pbmZvIHsKICAgICAgICBpbnQgc2Vt
bWFwOwogICAgICAgIGludCBzZW1tbmk7CiAgICAgICAgaW50IHNlbW1uczsKICAgICAgICBpbnQg
c2VtbW51OwogICAgICAgIGludCBzZW1tc2w7CiAgICAgICAgaW50IHNlbW9wbTsKICAgICAgICBp
bnQgc2VtdW1lOwogICAgICAgIGludCBzZW11c3o7CiAgICAgICAgaW50IHNlbXZteDsKICAgICAg
ICBpbnQgc2VtYWVtOwp9OwojIDgyICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51
eC9zZW0uaCIKc3RydWN0IHNlbSB7CiAgICAgICAgaW50IHNlbXZhbDsKICAgICAgICBpbnQgc2Vt
cGlkOwp9OwoKCnN0cnVjdCBzZW1fYXJyYXkgewogICAgICAgIHN0cnVjdCBrZXJuX2lwY19wZXJt
IHNlbV9wZXJtOwogICAgICAgIHRpbWVfdCBzZW1fb3RpbWU7CiAgICAgICAgdGltZV90IHNlbV9j
dGltZTsKICAgICAgICBzdHJ1Y3Qgc2VtICpzZW1fYmFzZTsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1
ZXVlICpzZW1fcGVuZGluZzsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVlICoqc2VtX3BlbmRpbmdf
bGFzdDsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKnVuZG87CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzZW1fbnNlbXM7Cn07CgoKc3RydWN0IHNlbV9xdWV1ZSB7CiAgICAgICAgc3RydWN0IHNlbV9x
dWV1ZSAqIG5leHQ7CiAgICAgICAgc3RydWN0IHNlbV9xdWV1ZSAqKiBwcmV2OwogICAgICAgIHN0
cnVjdCB0YXNrX3N0cnVjdCogc2xlZXBlcjsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKiB1bmRv
OwogICAgICAgIGludCBwaWQ7CiAgICAgICAgaW50IHN0YXR1czsKICAgICAgICBzdHJ1Y3Qgc2Vt
X2FycmF5ICogc21hOwogICAgICAgIGludCBpZDsKICAgICAgICBzdHJ1Y3Qgc2VtYnVmICogc29w
czsKICAgICAgICBpbnQgbnNvcHM7CiAgICAgICAgaW50IGFsdGVyOwp9OwoKCgoKc3RydWN0IHNl
bV91bmRvIHsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKiBwcm9jX25leHQ7CiAgICAgICAgc3Ry
dWN0IHNlbV91bmRvICogaWRfbmV4dDsKICAgICAgICBpbnQgc2VtaWQ7CiAgICAgICAgc2hvcnQg
KiBzZW1hZGo7Cn07CgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3NlbWdl
dCAoa2V5X3Qga2V5LCBpbnQgbnNlbXMsIGludCBzZW1mbGcpOwogX19hdHRyaWJ1dGVfXygocmVn
cGFybSgwKSkpIGxvbmcgc3lzX3NlbW9wIChpbnQgc2VtaWQsIHN0cnVjdCBzZW1idWYgKnNvcHMs
IHVuc2lnbmVkIG5zb3BzKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19z
ZW1jdGwgKGludCBzZW1pZCwgaW50IHNlbW51bSwgaW50IGNtZCwgdW5pb24gc2VtdW4gYXJnKTsK
IyAyNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3NpZ25hbC5oIiAxCgoKCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3NpZ25hbC5oIiAxCgoKCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDUgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9zaWduYWwuaCIgMgoKCnN0cnVjdCBzaWdpbmZvOwoj
IDE3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vc2lnbmFsLmgiCnR5cGVkZWYg
dW5zaWduZWQgbG9uZyBvbGRfc2lnc2V0X3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBzaWdbKDY0IC8gMzIpXTsKfSBzaWdzZXRfdDsKIyAxMjkgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9zaWduYWwuaCIKdHlwZWRlZiB2b2lkICgqX19zaWdoYW5k
bGVyX3QpKGludCk7CgoKCgoKCnN0cnVjdCBvbGRfc2lnYWN0aW9uIHsKICAgICAgICBfX3NpZ2hh
bmRsZXJfdCBzYV9oYW5kbGVyOwogICAgICAgIG9sZF9zaWdzZXRfdCBzYV9tYXNrOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgc2FfZmxhZ3M7CiAgICAgICAgdm9pZCAoKnNhX3Jlc3RvcmVyKSh2b2lk
KTsKfTsKCnN0cnVjdCBzaWdhY3Rpb24gewogICAgICAgIF9fc2lnaGFuZGxlcl90IHNhX2hhbmRs
ZXI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzYV9mbGFnczsKICAgICAgICB2b2lkICgqc2FfcmVz
dG9yZXIpKHZvaWQpOwogICAgICAgIHNpZ3NldF90IHNhX21hc2s7Cn07CgpzdHJ1Y3Qga19zaWdh
Y3Rpb24gewogICAgICAgIHN0cnVjdCBzaWdhY3Rpb24gc2E7Cn07CiMgMTcxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvaW5jbHVkZS9hc20vc2lnbmFsLmgiCnR5cGVkZWYgc3RydWN0IHNpZ2FsdHN0
YWNrIHsKICAgICAgICB2b2lkICpzc19zcDsKICAgICAgICBpbnQgc3NfZmxhZ3M7CiAgICAgICAg
c2l6ZV90IHNzX3NpemU7Cn0gc3RhY2tfdDsKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9p
bmNsdWRlL2FzbS9zaWdjb250ZXh0LmgiIDEKIyAxNzkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9p
bmNsdWRlL2FzbS9zaWduYWwuaCIgMgoKCgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHNpZ2FkZHNl
dChzaWdzZXRfdCAqc2V0LCBpbnQgX3NpZykKewogICAgICAgIF9fYXNtX18oImJ0c2wgJTEsJTAi
IDogIj1tIigqc2V0KSA6ICJJciIoX3NpZyAtIDEpIDogImNjIik7Cn0KCnN0YXRpYyBfX2lubGlu
ZV9fIHZvaWQgc2lnZGVsc2V0KHNpZ3NldF90ICpzZXQsIGludCBfc2lnKQp7CiAgICAgICAgX19h
c21fXygiYnRybCAlMSwlMCIgOiAiPW0iKCpzZXQpIDogIklyIihfc2lnIC0gMSkgOiAiY2MiKTsK
fQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fY29uc3Rfc2lnaXNtZW1iZXIoc2lnc2V0X3QgKnNl
dCwgaW50IF9zaWcpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIHNpZyA9IF9zaWcgLSAxOwogICAg
ICAgIHJldHVybiAxICYgKHNldC0+c2lnW3NpZyAvIDMyXSA+PiAoc2lnICUgMzIpKTsKfQoKc3Rh
dGljIF9faW5saW5lX18gaW50IF9fZ2VuX3NpZ2lzbWVtYmVyKHNpZ3NldF90ICpzZXQsIGludCBf
c2lnKQp7CiAgICAgICAgaW50IHJldDsKICAgICAgICBfX2FzbV9fKCJidGwgJTIsJTFcblx0c2Ji
bCAlMCwlMCIKICAgICAgICAgICAgICAgIDogIj1yIihyZXQpIDogIm0iKCpzZXQpLCAiSXIiKF9z
aWctMSkgOiAiY2MiKTsKICAgICAgICByZXR1cm4gcmV0Owp9CiMgMjEzICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvaW5jbHVkZS9hc20vc2lnbmFsLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBzaWdm
aW5kaW53b3JkKHVuc2lnbmVkIGxvbmcgd29yZCkKewogICAgICAgIF9fYXNtX18oImJzZmwgJTEs
JTAiIDogIj1yIih3b3JkKSA6ICJybSIod29yZCkgOiAiY2MiKTsKICAgICAgICByZXR1cm4gd29y
ZDsKfQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3NpZ25hbC5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3NpZ2luZm8uaCIgMQoKCgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyA1ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vc2lnaW5mby5oIiAyCgoKCnR5cGVkZWYg
dW5pb24gc2lndmFsIHsKICAgICAgICBpbnQgc2l2YWxfaW50OwogICAgICAgIHZvaWQgKnNpdmFs
X3B0cjsKfSBzaWd2YWxfdDsKCgoKCnR5cGVkZWYgc3RydWN0IHNpZ2luZm8gewogICAgICAgIGlu
dCBzaV9zaWdubzsKICAgICAgICBpbnQgc2lfZXJybm87CiAgICAgICAgaW50IHNpX2NvZGU7Cgog
ICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIGludCBfcGFkWygoMTI4L3NpemVvZihpbnQp
KSAtIDMpXTsKCgogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAg
ICAgcGlkX3QgX3BpZDsKICAgICAgICAgICAgICAgICAgICAgICAgdWlkX3QgX3VpZDsKICAgICAg
ICAgICAgICAgIH0gX2tpbGw7CgoKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfdGltZXIxOwogICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgX3RpbWVyMjsKICAgICAgICAgICAgICAgIH0gX3RpbWVyOwoKCiAgICAg
ICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBwaWRfdCBfcGlkOwog
ICAgICAgICAgICAgICAgICAgICAgICB1aWRfdCBfdWlkOwogICAgICAgICAgICAgICAgICAgICAg
ICBzaWd2YWxfdCBfc2lndmFsOwogICAgICAgICAgICAgICAgfSBfcnQ7CgoKICAgICAgICAgICAg
ICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBpZF90IF9waWQ7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHVpZF90IF91aWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBf
c3RhdHVzOwogICAgICAgICAgICAgICAgICAgICAgICBjbG9ja190IF91dGltZTsKICAgICAgICAg
ICAgICAgICAgICAgICAgY2xvY2tfdCBfc3RpbWU7CiAgICAgICAgICAgICAgICB9IF9zaWdjaGxk
OwoKCiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICB2b2lk
ICpfYWRkcjsKICAgICAgICAgICAgICAgIH0gX3NpZ2ZhdWx0OwoKCiAgICAgICAgICAgICAgICBz
dHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBpbnQgX2JhbmQ7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBfZmQ7CiAgICAgICAgICAgICAgICB9IF9zaWdwb2xsOwogICAgICAgIH0g
X3NpZmllbGRzOwp9IHNpZ2luZm9fdDsKIyAxOTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNs
dWRlL2FzbS9zaWdpbmZvLmgiCnR5cGVkZWYgc3RydWN0IHNpZ2V2ZW50IHsKICAgICAgICBzaWd2
YWxfdCBzaWdldl92YWx1ZTsKICAgICAgICBpbnQgc2lnZXZfc2lnbm87CiAgICAgICAgaW50IHNp
Z2V2X25vdGlmeTsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBpbnQgX3BhZFsoKDY0
L3NpemVvZihpbnQpKSAtIDMpXTsKCiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg
ICAgICAgICAgICAgICB2b2lkICgqX2Z1bmN0aW9uKShzaWd2YWxfdCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQgKl9hdHRyaWJ1dGU7CiAgICAgICAgICAgICAgICB9IF9zaWdldl90aHJl
YWQ7CiAgICAgICAgfSBfc2lnZXZfdW47Cn0gc2lnZXZlbnRfdDsKCgoKCgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIiAxCiMgMjE4ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvaW5jbHVkZS9hc20vc2lnaW5mby5oIiAyCgpzdGF0aWMgaW5saW5lIHZvaWQg
Y29weV9zaWdpbmZvKHNpZ2luZm9fdCAqdG8sIHNpZ2luZm9fdCAqZnJvbSkKewogICAgICAgIGlm
IChmcm9tLT5zaV9jb2RlIDwgMCkKICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRf
cChzaXplb2Yoc2lnaW5mb190KSkgPyBfX2NvbnN0YW50X21lbWNweSgodG8pLChmcm9tKSwoc2l6
ZW9mKHNpZ2luZm9fdCkpKSA6IF9fbWVtY3B5KCh0byksKGZyb20pLChzaXplb2Yoc2lnaW5mb190
KSkpKTsKICAgICAgICBlbHNlCgogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9w
KDMqc2l6ZW9mKGludCkgKyBzaXplb2YoZnJvbS0+X3NpZmllbGRzLl9zaWdjaGxkKSkgPyBfX2Nv
bnN0YW50X21lbWNweSgodG8pLChmcm9tKSwoMypzaXplb2YoaW50KSArIHNpemVvZihmcm9tLT5f
c2lmaWVsZHMuX3NpZ2NobGQpKSkgOiBfX21lbWNweSgodG8pLChmcm9tKSwoMypzaXplb2YoaW50
KSArIHNpemVvZihmcm9tLT5fc2lmaWVsZHMuX3NpZ2NobGQpKSkpOwp9CgpleHRlcm4gaW50IGNv
cHlfc2lnaW5mb190b191c2VyKHNpZ2luZm9fdCAqdG8sIHNpZ2luZm9fdCAqZnJvbSk7CiMgNiAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvc2lnbmFsLmgiIDIKCgoKCgoKc3Ry
dWN0IHNpZ3F1ZXVlIHsKICAgICAgICBzdHJ1Y3Qgc2lncXVldWUgKm5leHQ7CiAgICAgICAgc2ln
aW5mb190IGluZm87Cn07CgpzdHJ1Y3Qgc2lncGVuZGluZyB7CiAgICAgICAgc3RydWN0IHNpZ3F1
ZXVlICpoZWFkLCAqKnRhaWw7CiAgICAgICAgc2lnc2V0X3Qgc2lnbmFsOwp9OwojIDY4ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9zaWduYWwuaCIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMQojIDY5ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvaW5jbHVkZS9saW51eC9zaWduYWwuaCIgMgojIDEwOCAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2luY2x1ZGUvbGludXgvc2lnbmFsLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdvcnNl
dHMoc2lnc2V0X3QgKnIsIGNvbnN0IHNpZ3NldF90ICphLCBjb25zdCBzaWdzZXRfdCAqYikgeyB1
bnNpZ25lZCBsb25nIGEwLCBhMSwgYTIsIGEzLCBiMCwgYjEsIGIyLCBiMzsgdW5zaWduZWQgbG9u
ZyBpOyBmb3IgKGkgPSAwOyBpIDwgKDY0IC8gMzIpLzQ7ICsraSkgeyBhMCA9IGEtPnNpZ1s0Kmkr
MF07IGExID0gYS0+c2lnWzQqaSsxXTsgYTIgPSBhLT5zaWdbNCppKzJdOyBhMyA9IGEtPnNpZ1s0
KmkrM107IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyBiMiA9IGItPnNp
Z1s0KmkrMl07IGIzID0gYi0+c2lnWzQqaSszXTsgci0+c2lnWzQqaSswXSA9ICgoYTApIHwgKGIw
KSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSB8IChiMSkpOyByLT5zaWdbNCppKzJdID0gKChhMikg
fCAoYjIpKTsgci0+c2lnWzQqaSszXSA9ICgoYTMpIHwgKGIzKSk7IH0gc3dpdGNoICgoNjQgLyAz
MikgJSA0KSB7IGNhc2UgMzogYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07
IGEyID0gYS0+c2lnWzQqaSsyXTsgYjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0Kmkr
MV07IGIyID0gYi0+c2lnWzQqaSsyXTsgci0+c2lnWzQqaSswXSA9ICgoYTApIHwgKGIwKSk7IHIt
PnNpZ1s0KmkrMV0gPSAoKGExKSB8IChiMSkpOyByLT5zaWdbNCppKzJdID0gKChhMikgfCAoYjIp
KTsgYnJlYWs7IGNhc2UgMjogYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07
IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyByLT5zaWdbNCppKzBdID0g
KChhMCkgfCAoYjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpIHwgKGIxKSk7IGJyZWFrOyBjYXNl
IDE6IGEwID0gYS0+c2lnWzQqaSswXTsgYjAgPSBiLT5zaWdbNCppKzBdOyByLT5zaWdbNCppKzBd
ID0gKChhMCkgfCAoYjApKTsgYnJlYWs7IH0gfQoKCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdhbmRz
ZXRzKHNpZ3NldF90ICpyLCBjb25zdCBzaWdzZXRfdCAqYSwgY29uc3Qgc2lnc2V0X3QgKmIpIHsg
dW5zaWduZWQgbG9uZyBhMCwgYTEsIGEyLCBhMywgYjAsIGIxLCBiMiwgYjM7IHVuc2lnbmVkIGxv
bmcgaTsgZm9yIChpID0gMDsgaSA8ICg2NCAvIDMyKS80OyArK2kpIHsgYTAgPSBhLT5zaWdbNCpp
KzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07IGEyID0gYS0+c2lnWzQqaSsyXTsgYTMgPSBhLT5zaWdb
NCppKzNdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBiLT5z
aWdbNCppKzJdOyBiMyA9IGItPnNpZ1s0KmkrM107IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIChi
MCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgJiAoYjEpKTsgci0+c2lnWzQqaSsyXSA9ICgoYTIp
ICYgKGIyKSk7IHItPnNpZ1s0KmkrM10gPSAoKGEzKSAmIChiMykpOyB9IHN3aXRjaCAoKDY0IC8g
MzIpICUgNCkgeyBjYXNlIDM6IGEwID0gYS0+c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFd
OyBhMiA9IGEtPnNpZ1s0KmkrMl07IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCpp
KzFdOyBiMiA9IGItPnNpZ1s0KmkrMl07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIChiMCkpOyBy
LT5zaWdbNCppKzFdID0gKChhMSkgJiAoYjEpKTsgci0+c2lnWzQqaSsyXSA9ICgoYTIpICYgKGIy
KSk7IGJyZWFrOyBjYXNlIDI6IGEwID0gYS0+c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFd
OyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgci0+c2lnWzQqaSswXSA9
ICgoYTApICYgKGIwKSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSAmIChiMSkpOyBicmVhazsgY2Fz
ZSAxOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGIwID0gYi0+c2lnWzQqaSswXTsgci0+c2lnWzQqaSsw
XSA9ICgoYTApICYgKGIwKSk7IGJyZWFrOyB9IH0KCgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnbmFu
ZHNldHMoc2lnc2V0X3QgKnIsIGNvbnN0IHNpZ3NldF90ICphLCBjb25zdCBzaWdzZXRfdCAqYikg
eyB1bnNpZ25lZCBsb25nIGEwLCBhMSwgYTIsIGEzLCBiMCwgYjEsIGIyLCBiMzsgdW5zaWduZWQg
bG9uZyBpOyBmb3IgKGkgPSAwOyBpIDwgKDY0IC8gMzIpLzQ7ICsraSkgeyBhMCA9IGEtPnNpZ1s0
KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYTIgPSBhLT5zaWdbNCppKzJdOyBhMyA9IGEtPnNp
Z1s0KmkrM107IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyBiMiA9IGIt
PnNpZ1s0KmkrMl07IGIzID0gYi0+c2lnWzQqaSszXTsgci0+c2lnWzQqaSswXSA9ICgoYTApICYg
fihiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgJiB+KGIxKSk7IHItPnNpZ1s0KmkrMl0gPSAo
KGEyKSAmIH4oYjIpKTsgci0+c2lnWzQqaSszXSA9ICgoYTMpICYgfihiMykpOyB9IHN3aXRjaCAo
KDY0IC8gMzIpICUgNCkgeyBjYXNlIDM6IGEwID0gYS0+c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdb
NCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5z
aWdbNCppKzFdOyBiMiA9IGItPnNpZ1s0KmkrMl07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIH4o
YjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpICYgfihiMSkpOyByLT5zaWdbNCppKzJdID0gKChh
MikgJiB+KGIyKSk7IGJyZWFrOyBjYXNlIDI6IGEwID0gYS0+c2lnWzQqaSswXTsgYTEgPSBhLT5z
aWdbNCppKzFdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgci0+c2ln
WzQqaSswXSA9ICgoYTApICYgfihiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgJiB+KGIxKSk7
IGJyZWFrOyBjYXNlIDE6IGEwID0gYS0+c2lnWzQqaSswXTsgYjAgPSBiLT5zaWdbNCppKzBdOyBy
LT5zaWdbNCppKzBdID0gKChhMCkgJiB+KGIwKSk7IGJyZWFrOyB9IH0KIyAxNDAgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3NpZ25hbC5oIgpzdGF0aWMgaW5saW5lIHZvaWQg
c2lnbm90c2V0KHNpZ3NldF90ICpzZXQpIHsgdW5zaWduZWQgbG9uZyBpOyBmb3IgKGkgPSAwOyBp
IDwgKDY0IC8gMzIpLzQ7ICsraSkgeyBzZXQtPnNpZ1s0KmkrMF0gPSAofihzZXQtPnNpZ1s0Kmkr
MF0pKTsgc2V0LT5zaWdbNCppKzFdID0gKH4oc2V0LT5zaWdbNCppKzFdKSk7IHNldC0+c2lnWzQq
aSsyXSA9ICh+KHNldC0+c2lnWzQqaSsyXSkpOyBzZXQtPnNpZ1s0KmkrM10gPSAofihzZXQtPnNp
Z1s0KmkrM10pKTsgfSBzd2l0Y2ggKCg2NCAvIDMyKSAlIDQpIHsgY2FzZSAzOiBzZXQtPnNpZ1s0
KmkrMl0gPSAofihzZXQtPnNpZ1s0KmkrMl0pKTsgY2FzZSAyOiBzZXQtPnNpZ1s0KmkrMV0gPSAo
fihzZXQtPnNpZ1s0KmkrMV0pKTsgY2FzZSAxOiBzZXQtPnNpZ1s0KmkrMF0gPSAofihzZXQtPnNp
Z1s0KmkrMF0pKTsgfSB9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnZW1wdHlzZXQoc2lnc2V0
X3QgKnNldCkKewogICAgICAgIHN3aXRjaCAoKDY0IC8gMzIpKSB7CiAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IChfX2J1aWx0aW5fY29u
c3RhbnRfcCgoc2l6ZW9mKHNpZ3NldF90KSkpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1z
ZXQoKChzZXQpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVvZihz
aWdzZXRfdCkpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoc2V0KSksKCgweDAxMDEwMTAxVUwq
KHVuc2lnbmVkIGNoYXIpKDApKSksKChzaXplb2Yoc2lnc2V0X3QpKSkpKSA6IChfX2J1aWx0aW5f
Y29uc3RhbnRfcCgoc2l6ZW9mKHNpZ3NldF90KSkpID8gX19tZW1zZXRfZ2VuZXJpYygoKChzZXQp
KSksKCgoMCkpKSwoKChzaXplb2Yoc2lnc2V0X3QpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKChz
ZXQpKSwoKDApKSwoKHNpemVvZihzaWdzZXRfdCkpKSkpKTsKICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgIGNhc2UgMjogc2V0LT5zaWdbMV0gPSAwOwogICAgICAgIGNhc2UgMTogc2V0LT5z
aWdbMF0gPSAwOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQp9CgpzdGF0aWMgaW5s
aW5lIHZvaWQgc2lnZmlsbHNldChzaWdzZXRfdCAqc2V0KQp7CiAgICAgICAgc3dpdGNoICgoNjQg
LyAzMikpIHsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25z
dGFudF9wKC0xKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKHNpZ3NldF90KSkpID8g
X19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKChzZXQpKSwoKDB4MDEwMTAxMDFVTCoodW5z
aWduZWQgY2hhcikoLTEpKSksKChzaXplb2Yoc2lnc2V0X3QpKSkpIDogX19jb25zdGFudF9jX21l
bXNldCgoKHNldCkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgtMSkpKSwoKHNpemVv
ZihzaWdzZXRfdCkpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2Yoc2lnc2V0X3Qp
KSkgPyBfX21lbXNldF9nZW5lcmljKCgoKHNldCkpKSwoKCgtMSkpKSwoKChzaXplb2Yoc2lnc2V0
X3QpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKChzZXQpKSwoKC0xKSksKChzaXplb2Yoc2lnc2V0
X3QpKSkpKSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6IHNldC0+c2ln
WzFdID0gLTE7CiAgICAgICAgY2FzZSAxOiBzZXQtPnNpZ1swXSA9IC0xOwogICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgfQp9CgpleHRlcm4gY2hhciAqIHJlbmRlcl9zaWdzZXRfdChzaWdz
ZXRfdCAqc2V0LCBjaGFyICpidWZmZXIpOwoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnYWRkc2V0
bWFzayhzaWdzZXRfdCAqc2V0LCB1bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAgICBzZXQtPnNp
Z1swXSB8PSBtYXNrOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnZGVsc2V0bWFzayhzaWdzZXRf
dCAqc2V0LCB1bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAgICBzZXQtPnNpZ1swXSAmPSB+bWFz
azsKfQoKc3RhdGljIGlubGluZSBpbnQgc2lndGVzdHNldG1hc2soc2lnc2V0X3QgKnNldCwgdW5z
aWduZWQgbG9uZyBtYXNrKQp7CiAgICAgICAgcmV0dXJuIChzZXQtPnNpZ1swXSAmIG1hc2spICE9
IDA7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdpbml0c2V0KHNpZ3NldF90ICpzZXQsIHVuc2ln
bmVkIGxvbmcgbWFzaykKewogICAgICAgIHNldC0+c2lnWzBdID0gbWFzazsKICAgICAgICBzd2l0
Y2ggKCg2NCAvIDMyKSkgewogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAoX19idWls
dGluX2NvbnN0YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihsb25nKSoo
KDY0IC8gMzIpLTEpKSkgPyBfX2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKCZzZXQtPnNp
Z1sxXSkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoc2l6ZW9mKGxvbmcp
KigoNjQgLyAzMiktMSkpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoJnNldC0+c2lnWzFdKSks
KCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChzaXplb2YobG9uZykqKCg2NCAv
IDMyKS0xKSkpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihsb25nKSooKDY0IC8g
MzIpLTEpKSkgPyBfX21lbXNldF9nZW5lcmljKCgoKCZzZXQtPnNpZ1sxXSkpKSwoKCgwKSkpLCgo
KHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKCgmc2V0
LT5zaWdbMV0pKSwoKDApKSwoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkpKSk7CiAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6IHNldC0+c2lnWzFdID0gMDsKICAgICAg
ICBjYXNlIDE6IDsKICAgICAgICB9Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdpbml0c2V0aW52
KHNpZ3NldF90ICpzZXQsIHVuc2lnbmVkIGxvbmcgbWFzaykKewogICAgICAgIHNldC0+c2lnWzBd
ID0gfm1hc2s7CiAgICAgICAgc3dpdGNoICgoNjQgLyAzMikpIHsKICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKC0xKSA/IChfX2J1aWx0aW5fY29u
c3RhbnRfcCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSA/IF9fY29uc3RhbnRfY19hbmRf
Y291bnRfbWVtc2V0KCgoJnNldC0+c2lnWzFdKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNo
YXIpKC0xKSkpLCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkgOiBfX2NvbnN0YW50X2Nf
bWVtc2V0KCgoJnNldC0+c2lnWzFdKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKC0x
KSkpLCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFu
dF9wKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkpID8gX19tZW1zZXRfZ2VuZXJpYygoKCgm
c2V0LT5zaWdbMV0pKSksKCgoLTEpKSksKCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkp
IDogX19tZW1zZXRfZ2VuZXJpYygoKCZzZXQtPnNpZ1sxXSkpLCgoLTEpKSwoKHNpemVvZihsb25n
KSooKDY0IC8gMzIpLTEpKSkpKSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNl
IDI6IHNldC0+c2lnWzFdID0gLTE7CiAgICAgICAgY2FzZSAxOiA7CiAgICAgICAgfQp9CgoKCnN0
YXRpYyBpbmxpbmUgdm9pZCBpbml0X3NpZ3BlbmRpbmcoc3RydWN0IHNpZ3BlbmRpbmcgKnNpZykK
ewogICAgICAgIHNpZ2VtcHR5c2V0KCZzaWctPnNpZ25hbCk7CiAgICAgICAgc2lnLT5oZWFkID0g
KCh2b2lkICopMCk7CiAgICAgICAgc2lnLT50YWlsID0gJnNpZy0+aGVhZDsKfQoKZXh0ZXJuIGxv
bmcgZG9fc2lncGVuZGluZyh2b2lkICosIHVuc2lnbmVkIGxvbmcpOwojIDI2ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2luY2x1ZGUvbGludXgvc2VjdXJlYml0cy5oIiAxCgoKCgoKZXh0ZXJuIHVuc2lnbmVk
IHNlY3VyZWJpdHM7CiMgMjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3Nj
aGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9mc19zdHJ1
Y3QuaCIgMQoKCgoKc3RydWN0IGZzX3N0cnVjdCB7CiAgICAgICAgYXRvbWljX3QgY291bnQ7CiAg
ICAgICAgcndsb2NrX3QgbG9jazsKICAgICAgICBpbnQgdW1hc2s7CiAgICAgICAgc3RydWN0IGRl
bnRyeSAqIHJvb3QsICogcHdkLCAqIGFsdHJvb3Q7CiAgICAgICAgc3RydWN0IHZmc21vdW50ICog
cm9vdG1udCwgKiBwd2RtbnQsICogYWx0cm9vdG1udDsKfTsKIyAyMCAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2luY2x1ZGUvbGludXgvZnNfc3RydWN0LmgiCmV4dGVybiB2b2lkIGV4aXRfZnMoc3Ry
dWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBzZXRfZnNfYWx0cm9vdCh2b2lkKTsKCnN0
cnVjdCBmc19zdHJ1Y3QgKmNvcHlfZnNfc3RydWN0KHN0cnVjdCBmc19zdHJ1Y3QgKm9sZCk7CnZv
aWQgcHV0X2ZzX3N0cnVjdChzdHJ1Y3QgZnNfc3RydWN0ICpmcyk7CiMgMjggIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKCnN0cnVjdCBleGVjX2RvbWFpbjsK
IyA1NyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKZXh0ZXJu
IHVuc2lnbmVkIGxvbmcgYXZlbnJ1bltdOwojIDc0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5j
bHVkZS9saW51eC9zY2hlZC5oIgpleHRlcm4gaW50IG5yX3J1bm5pbmcsIG5yX3RocmVhZHM7CmV4
dGVybiBpbnQgbGFzdF9waWQ7CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xp
bnV4L2ZzLmgiIDEKIyA3OCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvc2No
ZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3RpbWUuaCIg
MQojIDc5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvcGFyYW0uaCIgMQoKCgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9wYXJhbS5oIiAxCiMgNSAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvcGFyYW0uaCIgMgojIDgwICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2luY2x1ZGUvbGludXgvcmVzb3VyY2UuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3RpbWUuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9pbmNsdWRlL2xpbnV4L3Jlc291cmNlLmgiIDIKIyAyMSAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2luY2x1ZGUvbGludXgvcmVzb3VyY2UuaCIKc3RydWN0IHJ1c2FnZSB7CiAgICAgICAgc3RydWN0
IHRpbWV2YWwgcnVfdXRpbWU7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgcnVfc3RpbWU7CiAgICAg
ICAgbG9uZyBydV9tYXhyc3M7CiAgICAgICAgbG9uZyBydV9peHJzczsKICAgICAgICBsb25nIHJ1
X2lkcnNzOwogICAgICAgIGxvbmcgcnVfaXNyc3M7CiAgICAgICAgbG9uZyBydV9taW5mbHQ7CiAg
ICAgICAgbG9uZyBydV9tYWpmbHQ7CiAgICAgICAgbG9uZyBydV9uc3dhcDsKICAgICAgICBsb25n
IHJ1X2luYmxvY2s7CiAgICAgICAgbG9uZyBydV9vdWJsb2NrOwogICAgICAgIGxvbmcgcnVfbXNn
c25kOwogICAgICAgIGxvbmcgcnVfbXNncmN2OwogICAgICAgIGxvbmcgcnVfbnNpZ25hbHM7CiAg
ICAgICAgbG9uZyBydV9udmNzdzsKICAgICAgICBsb25nIHJ1X25pdmNzdzsKfTsKCnN0cnVjdCBy
bGltaXQgewogICAgICAgIHVuc2lnbmVkIGxvbmcgcmxpbV9jdXI7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBybGltX21heDsKfTsKIyA1NiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGlu
dXgvcmVzb3VyY2UuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vcmVz
b3VyY2UuaCIgMQojIDU3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9yZXNv
dXJjZS5oIiAyCiMgODEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3NjaGVk
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC90aW1lci5oIiAx
CiMgODIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAxCiMgODQg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxMjUgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCnN0cnVjdCBzY2hlZF9w
YXJhbSB7CiAgICAgICAgaW50IHNjaGVkX3ByaW9yaXR5Owp9OwoKc3RydWN0IGNvbXBsZXRpb247
CgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIg
MQojIDEzNCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgoK
CgoKCgoKZXh0ZXJuIHJ3bG9ja190IHRhc2tsaXN0X2xvY2s7CmV4dGVybiBzcGlubG9ja190IHJ1
bnF1ZXVlX2xvY2s7CmV4dGVybiBzcGlubG9ja190IG1tbGlzdF9sb2NrOwoKZXh0ZXJuIHZvaWQg
c2NoZWRfaW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQgaW5pdF9pZGxlKHZvaWQpOwpleHRlcm4gdm9p
ZCBzaG93X3N0YXRlKHZvaWQpOwpleHRlcm4gdm9pZCBjcHVfaW5pdCAodm9pZCk7CmV4dGVybiB2
b2lkIHRyYXBfaW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQgdXBkYXRlX3Byb2Nlc3NfdGltZXMoaW50
IHVzZXIpOwpleHRlcm4gdm9pZCB1cGRhdGVfb25lX3Byb2Nlc3Moc3RydWN0IHRhc2tfc3RydWN0
ICpwLCB1bnNpZ25lZCBsb25nIHVzZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBsb25nIHN5c3RlbSwgaW50IGNwdSk7CgoKZXh0ZXJuIHNpZ25lZCBsb25nIHNjaGVk
dWxlX3RpbWVvdXQoc2lnbmVkIGxvbmcgdGltZW91dCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgz
KSkpOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIHZvaWQgc2NoZWR1bGUodm9pZCk7Cgog
X19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIHZvaWQgcHJlZW1wdF9zY2hlZHVsZSh2b2lkKTsK
CgpleHRlcm4gaW50IHNjaGVkdWxlX3Rhc2soc3RydWN0IHRxX3N0cnVjdCAqdGFzayk7CmV4dGVy
biB2b2lkIGZsdXNoX3NjaGVkdWxlZF90YXNrcyh2b2lkKTsKZXh0ZXJuIGludCBzdGFydF9jb250
ZXh0X3RocmVhZCh2b2lkKTsKZXh0ZXJuIGludCBjdXJyZW50X2lzX2tldmVudGQodm9pZCk7CiMg
MTc1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpzdHJ1Y3Qg
ZmlsZXNfc3RydWN0IHsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICByd2xvY2tfdCBm
aWxlX2xvY2s7CiAgICAgICAgaW50IG1heF9mZHM7CiAgICAgICAgaW50IG1heF9mZHNldDsKICAg
ICAgICBpbnQgbmV4dF9mZDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqKiBmZDsKICAgICAgICBmZF9z
ZXQgKmNsb3NlX29uX2V4ZWM7CiAgICAgICAgZmRfc2V0ICpvcGVuX2ZkczsKICAgICAgICBmZF9z
ZXQgY2xvc2Vfb25fZXhlY19pbml0OwogICAgICAgIGZkX3NldCBvcGVuX2Zkc19pbml0OwogICAg
ICAgIHN0cnVjdCBmaWxlICogZmRfYXJyYXlbMzJdOwp9OwojIDIwNyAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKZXh0ZXJuIGludCBtYXhfbWFwX2NvdW50OwoK
CgoKc3RydWN0IG1tX3N0cnVjdCB7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogbW1h
cDsKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBtbWFwX2F2bDsKICAgICAgICBzdHJ1
Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBtbWFwX2NhY2hlOwogICAgICAgIHBnZF90ICogcGdkOwogICAg
ICAgIGF0b21pY190IG1tX3VzZXJzOwogICAgICAgIGF0b21pY190IG1tX2NvdW50OwogICAgICAg
IGludCBtYXBfY291bnQ7CiAgICAgICAgc3RydWN0IHJ3X3NlbWFwaG9yZSBtbWFwX3NlbTsKICAg
ICAgICBzcGlubG9ja190IHBhZ2VfdGFibGVfbG9jazsKCiAgICAgICAgc3RydWN0IGxpc3RfaGVh
ZCBtbWxpc3Q7CgoKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnRfY29kZSwgZW5kX2NvZGUs
IHN0YXJ0X2RhdGEsIGVuZF9kYXRhOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnRfYnJrLCBi
cmssIHN0YXJ0X3N0YWNrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgYXJnX3N0YXJ0LCBhcmdfZW5k
LCBlbnZfc3RhcnQsIGVudl9lbmQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyByc3MsIHRvdGFsX3Zt
LCBsb2NrZWRfdm07CiAgICAgICAgdW5zaWduZWQgbG9uZyBkZWZfZmxhZ3M7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBjcHVfdm1fbWFzazsKICAgICAgICB1bnNpZ25lZCBsb25nIHN3YXBfYWRkcmVz
czsKCiAgICAgICAgdW5zaWduZWQgZHVtcGFibGU6MTsKCgogICAgICAgIG1tX2NvbnRleHRfdCBj
b250ZXh0Owp9OwoKZXh0ZXJuIGludCBtbWxpc3RfbnI7CiMgMjU4ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpzdHJ1Y3Qgc2lnbmFsX3N0cnVjdCB7CiAgICAg
ICAgYXRvbWljX3QgY291bnQ7CiAgICAgICAgc3RydWN0IGtfc2lnYWN0aW9uIGFjdGlvbls2NF07
CiAgICAgICAgc3BpbmxvY2tfdCBzaWdsb2NrOwp9OwojIDI3NCAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKc3RydWN0IHVzZXJfc3RydWN0IHsKICAgICAgICBh
dG9taWNfdCBfX2NvdW50OwogICAgICAgIGF0b21pY190IHByb2Nlc3NlczsKICAgICAgICBhdG9t
aWNfdCBmaWxlczsKCgogICAgICAgIHN0cnVjdCB1c2VyX3N0cnVjdCAqbmV4dCwgKipwcHJldjsK
ICAgICAgICB1aWRfdCB1aWQ7Cn07CgoKCgoKCmV4dGVybiBzdHJ1Y3QgdXNlcl9zdHJ1Y3Qgcm9v
dF91c2VyOwoKCnN0cnVjdCB0YXNrX3N0cnVjdCB7CgoKCiAgICAgICAgdm9sYXRpbGUgbG9uZyBz
dGF0ZTsKIyAzMDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3NjaGVkLmgi
CiAgICAgICAgaW50IHByZWVtcHRfY291bnQ7CiAgICAgICAgaW50IHNpZ3BlbmRpbmc7CiAgICAg
ICAgbW1fc2VnbWVudF90IGFkZHJfbGltaXQ7CgoKCiAgICAgICAgc3RydWN0IGV4ZWNfZG9tYWlu
ICpleGVjX2RvbWFpbjsKICAgICAgICB2b2xhdGlsZSBsb25nIG5lZWRfcmVzY2hlZDsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHB0cmFjZTsKCiAgICAgICAgaW50IGxvY2tfZGVwdGg7CgoKCgoKCiAg
ICAgICAgbG9uZyBjb3VudGVyOwogICAgICAgIGxvbmcgbmljZTsKICAgICAgICB1bnNpZ25lZCBs
b25nIHBvbGljeTsKICAgICAgICBzdHJ1Y3QgbW1fc3RydWN0ICptbTsKICAgICAgICBpbnQgaGFz
X2NwdSwgcHJvY2Vzc29yOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1c19hbGxvd2VkOwoKCgoK
ICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHJ1bl9saXN0OwogICAgICAgIHVuc2lnbmVkIGxvbmcg
c2xlZXBfdGltZTsKCiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpuZXh0X3Rhc2ssICpwcmV2
X3Rhc2s7CiAgICAgICAgc3RydWN0IG1tX3N0cnVjdCAqYWN0aXZlX21tOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgZmxhZ3M7CgoKICAgICAgICBzdHJ1Y3QgbGludXhfYmluZm10ICpiaW5mbXQ7CiAg
ICAgICAgaW50IGV4aXRfY29kZSwgZXhpdF9zaWduYWw7CiAgICAgICAgaW50IHBkZWF0aF9zaWdu
YWw7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgcGVyc29uYWxpdHk7CiAgICAgICAgaW50IGRpZF9l
eGVjOjE7CiAgICAgICAgcGlkX3QgcGlkOwogICAgICAgIHBpZF90IHBncnA7CiAgICAgICAgcGlk
X3QgdHR5X29sZF9wZ3JwOwogICAgICAgIHBpZF90IHNlc3Npb247CiAgICAgICAgcGlkX3QgdGdp
ZDsKCiAgICAgICAgaW50IGxlYWRlcjsKCgoKCgogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAq
cF9vcHB0ciwgKnBfcHB0ciwgKnBfY3B0ciwgKnBfeXNwdHIsICpwX29zcHRyOwogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgdGhyZWFkX2dyb3VwOwoKCiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0
ICpwaWRoYXNoX25leHQ7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICoqcGlkaGFzaF9wcHJl
djsKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdF9jaGxkZXhpdDsKICAgICAgICBzdHJ1
Y3QgY29tcGxldGlvbiAqdmZvcmtfZG9uZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHJ0X3ByaW9y
aXR5OwogICAgICAgIHVuc2lnbmVkIGxvbmcgaXRfcmVhbF92YWx1ZSwgaXRfcHJvZl92YWx1ZSwg
aXRfdmlydF92YWx1ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGl0X3JlYWxfaW5jciwgaXRfcHJv
Zl9pbmNyLCBpdF92aXJ0X2luY3I7CiAgICAgICAgc3RydWN0IHRpbWVyX2xpc3QgcmVhbF90aW1l
cjsKICAgICAgICBzdHJ1Y3QgdG1zIHRpbWVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnRf
dGltZTsKICAgICAgICBsb25nIHBlcl9jcHVfdXRpbWVbMV0sIHBlcl9jcHVfc3RpbWVbMV07Cgog
ICAgICAgIHVuc2lnbmVkIGxvbmcgbWluX2ZsdCwgbWFqX2ZsdCwgbnN3YXAsIGNtaW5fZmx0LCBj
bWFqX2ZsdCwgY25zd2FwOwogICAgICAgIGludCBzd2FwcGFibGU6MTsKCiAgICAgICAgdWlkX3Qg
dWlkLGV1aWQsc3VpZCxmc3VpZDsKICAgICAgICBnaWRfdCBnaWQsZWdpZCxzZ2lkLGZzZ2lkOwog
ICAgICAgIGludCBuZ3JvdXBzOwogICAgICAgIGdpZF90IGdyb3Vwc1szMl07CiAgICAgICAga2Vy
bmVsX2NhcF90IGNhcF9lZmZlY3RpdmUsIGNhcF9pbmhlcml0YWJsZSwgY2FwX3Blcm1pdHRlZDsK
ICAgICAgICBpbnQga2VlcF9jYXBhYmlsaXRpZXM6MTsKICAgICAgICBzdHJ1Y3QgdXNlcl9zdHJ1
Y3QgKnVzZXI7CgogICAgICAgIHN0cnVjdCBybGltaXQgcmxpbVsxMV07CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgdXNlZF9tYXRoOwogICAgICAgIGNoYXIgY29tbVsxNl07CgogICAgICAgIGludCBs
aW5rX2NvdW50LCB0b3RhbF9saW5rX2NvdW50OwogICAgICAgIHN0cnVjdCB0dHlfc3RydWN0ICp0
dHk7CiAgICAgICAgdW5zaWduZWQgaW50IGxvY2tzOwoKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8g
KnNlbXVuZG87CiAgICAgICAgc3RydWN0IHNlbV9xdWV1ZSAqc2Vtc2xlZXBpbmc7CgogICAgICAg
IHN0cnVjdCB0aHJlYWRfc3RydWN0IHRocmVhZDsKCiAgICAgICAgc3RydWN0IGZzX3N0cnVjdCAq
ZnM7CgogICAgICAgIHN0cnVjdCBmaWxlc19zdHJ1Y3QgKmZpbGVzOwoKICAgICAgICBzcGlubG9j
a190IHNpZ21hc2tfbG9jazsKICAgICAgICBzdHJ1Y3Qgc2lnbmFsX3N0cnVjdCAqc2lnOwoKICAg
ICAgICBzaWdzZXRfdCBibG9ja2VkOwogICAgICAgIHN0cnVjdCBzaWdwZW5kaW5nIHBlbmRpbmc7
CgogICAgICAgIHVuc2lnbmVkIGxvbmcgc2FzX3NzX3NwOwogICAgICAgIHNpemVfdCBzYXNfc3Nf
c2l6ZTsKICAgICAgICBpbnQgKCpub3RpZmllcikodm9pZCAqcHJpdik7CiAgICAgICAgdm9pZCAq
bm90aWZpZXJfZGF0YTsKICAgICAgICBzaWdzZXRfdCAqbm90aWZpZXJfbWFzazsKCgogICAgICAg
IHUzMiBwYXJlbnRfZXhlY19pZDsKICAgICAgICB1MzIgc2VsZl9leGVjX2lkOwoKICAgICAgICBz
cGlubG9ja190IGFsbG9jX2xvY2s7CgoKICAgICAgICB2b2lkICpqb3VybmFsX2luZm87Cn07CiMg
NDY2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpleHRlcm4g
c3RydWN0IGV4ZWNfZG9tYWluIGRlZmF1bHRfZXhlY19kb21haW47CiMgNTE5ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9zY2hlZC5oIgp1bmlvbiB0YXNrX3VuaW9uIHsKICAg
ICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgdGFzazsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0YWNr
WyhzaXplb2Yoc3RydWN0IHRhc2tfc3RydWN0KSArIHNpemVvZihzdHJ1Y3QgdGFza19zdHJ1Y3Rf
aW5mbykpL3NpemVvZihsb25nKV07Cn07CgpleHRlcm4gdW5pb24gdGFza191bmlvbiBpbml0X3Rh
c2tfdW5pb247CgpleHRlcm4gc3RydWN0IG1tX3N0cnVjdCBpbml0X21tOwpleHRlcm4gc3RydWN0
IHRhc2tfc3RydWN0ICppbml0X3Rhc2tzWzFdOwoKCgpleHRlcm4gc3RydWN0IHRhc2tfc3RydWN0
ICpwaWRoYXNoWyg0MDk2ID4+IDIpXTsKCgoKc3RhdGljIGlubGluZSB2b2lkIGhhc2hfcGlkKHN0
cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqKmh0YWJs
ZSA9ICZwaWRoYXNoWygoKChwLT5waWQpID4+IDgpIF4gKHAtPnBpZCkpICYgKCg0MDk2ID4+IDIp
IC0gMSkpXTsKCiAgICAgICAgaWYoKHAtPnBpZGhhc2hfbmV4dCA9ICpodGFibGUpICE9ICgodm9p
ZCAqKTApKQogICAgICAgICAgICAgICAgKCpodGFibGUpLT5waWRoYXNoX3BwcmV2ID0gJnAtPnBp
ZGhhc2hfbmV4dDsKICAgICAgICAqaHRhYmxlID0gcDsKICAgICAgICBwLT5waWRoYXNoX3BwcmV2
ID0gaHRhYmxlOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdW5oYXNoX3BpZChzdHJ1Y3QgdGFza19z
dHJ1Y3QgKnApCnsKICAgICAgICBpZihwLT5waWRoYXNoX25leHQpCiAgICAgICAgICAgICAgICBw
LT5waWRoYXNoX25leHQtPnBpZGhhc2hfcHByZXYgPSBwLT5waWRoYXNoX3BwcmV2OwogICAgICAg
ICpwLT5waWRoYXNoX3BwcmV2ID0gcC0+cGlkaGFzaF9uZXh0Owp9CgpzdGF0aWMgaW5saW5lIHN0
cnVjdCB0YXNrX3N0cnVjdCAqZmluZF90YXNrX2J5X3BpZChpbnQgcGlkKQp7CiAgICAgICAgc3Ry
dWN0IHRhc2tfc3RydWN0ICpwLCAqKmh0YWJsZSA9ICZwaWRoYXNoWygoKChwaWQpID4+IDgpIF4g
KHBpZCkpICYgKCg0MDk2ID4+IDIpIC0gMSkpXTsKCiAgICAgICAgZm9yKHAgPSAqaHRhYmxlOyBw
ICYmIHAtPnBpZCAhPSBwaWQ7IHAgPSBwLT5waWRoYXNoX25leHQpCiAgICAgICAgICAgICAgICA7
CgogICAgICAgIHJldHVybiBwOwp9CgoKZXh0ZXJuIHN0cnVjdCB1c2VyX3N0cnVjdCAqIGFsbG9j
X3VpZCh1aWRfdCk7CmV4dGVybiB2b2lkIGZyZWVfdWlkKHN0cnVjdCB1c2VyX3N0cnVjdCAqKTsK
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL2N1cnJlbnQuaCIgMQoKCgpz
dHJ1Y3QgdGFza19zdHJ1Y3Q7CgpzdGF0aWMgaW5saW5lIHN0cnVjdCB0YXNrX3N0cnVjdCAqIGdl
dF9jdXJyZW50KHZvaWQpCnsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzazsKICAgICAg
ICBfX2FzbV9fKCJtb3ZsICUlY3IyLCUwOyI6ICI9ciIgKHRzaykpOwogICAgICAgIHJldHVybiB0
c2s7Cn0KCgpzdGF0aWMgaW5saW5lIHN0cnVjdCB0YXNrX3N0cnVjdCAqIGhhcmRfZ2V0X2N1cnJl
bnQodm9pZCkKewogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqKnB0c2s7CiAgICAgICAgX19h
c21fXygiYW5kbCAlJWVzcCwlMDsgIjoiPXIiIChwdHNrKSA6ICIwIiAofjgxOTFVTCkpOwogICAg
ICAgIHJldHVybiAqcHRzazsKfQoKc3RhdGljIGlubGluZSB2b2lkIHNldF9jdXJyZW50KHN0cnVj
dCB0YXNrX3N0cnVjdCAqdHNrKQp7CiAgICAgICAgX19hc21fXygibW92bCAlMCwlJWNyMjsiCiAg
ICAgICAgICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgICAgICAgICAgOiJyIiAodHNr
KSk7Cn0KIyA1NjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3NjaGVkLmgi
IDIKCmV4dGVybiB1bnNpZ25lZCBsb25nIHZvbGF0aWxlIGppZmZpZXM7CmV4dGVybiB1bnNpZ25l
ZCBsb25nIGl0aW1lcl90aWNrczsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaXRpbWVyX25leHQ7CmV4
dGVybiBzdHJ1Y3QgdGltZXZhbCB4dGltZTsKZXh0ZXJuIHZvaWQgZG9fdGltZXIoc3RydWN0IHB0
X3JlZ3MgKik7CgpleHRlcm4gdW5zaWduZWQgaW50ICogcHJvZl9idWZmZXI7CmV4dGVybiB1bnNp
Z25lZCBsb25nIHByb2ZfbGVuOwpleHRlcm4gdW5zaWduZWQgbG9uZyBwcm9mX3NoaWZ0OwoKCgpl
eHRlcm4gdm9pZCBfX3dha2VfdXAod2FpdF9xdWV1ZV9oZWFkX3QgKnEsIHVuc2lnbmVkIGludCBt
b2RlLCBpbnQgbnIpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgX193
YWtlX3VwX3N5bmMod2FpdF9xdWV1ZV9oZWFkX3QgKnEsIHVuc2lnbmVkIGludCBtb2RlLCBpbnQg
bnIpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgX191bndha2V1cF9w
cm9jZXNzKHN0cnVjdCB0YXNrX3N0cnVjdCAqIHAsIGxvbmcgc3RhdGUpIF9fYXR0cmlidXRlX18o
KHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgc2xlZXBfb24od2FpdF9xdWV1ZV9oZWFkX3QgKnEp
IF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIGxvbmcgc2xlZXBfb25fdGltZW91
dCh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgc2lnbmVkIGxvbmcgdGltZW91dCkgX19hdHRyaWJ1dGVf
XygocmVncGFybSgzKSkpOwoKZXh0ZXJuIHZvaWQgaW50ZXJydXB0aWJsZV9zbGVlcF9vbih3YWl0
X3F1ZXVlX2hlYWRfdCAqcSkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gbG9u
ZyBpbnRlcnJ1cHRpYmxlX3NsZWVwX29uX3RpbWVvdXQod2FpdF9xdWV1ZV9oZWFkX3QgKnEsIHNp
Z25lZCBsb25nIHRpbWVvdXQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCmV4dGVybiBp
bnQgd2FrZV91cF9wcm9jZXNzKHN0cnVjdCB0YXNrX3N0cnVjdCAqIHRzaykgX19hdHRyaWJ1dGVf
XygocmVncGFybSgzKSkpOwojIDYwOCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGlu
dXgvc2NoZWQuaCIKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c193YWl0NChw
aWRfdCBwaWQsdW5zaWduZWQgaW50ICogc3RhdF9hZGRyLCBpbnQgb3B0aW9ucywgc3RydWN0IHJ1
c2FnZSAqIHJ1KTsKCmV4dGVybiBpbnQgaW5fZ3JvdXBfcChnaWRfdCk7CmV4dGVybiBpbnQgaW5f
ZWdyb3VwX3AoZ2lkX3QpOwoKZXh0ZXJuIHZvaWQgcHJvY19jYWNoZXNfaW5pdCh2b2lkKTsKZXh0
ZXJuIHZvaWQgZmx1c2hfc2lnbmFscyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiB2b2lk
IGZsdXNoX3NpZ25hbF9oYW5kbGVycyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiBpbnQg
ZGVxdWV1ZV9zaWduYWwoc2lnc2V0X3QgKiwgc2lnaW5mb190ICopOwpleHRlcm4gdm9pZCBibG9j
a19hbGxfc2lnbmFscyhpbnQgKCpub3RpZmllcikodm9pZCAqcHJpdiksIHZvaWQgKnByaXYsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ3NldF90ICptYXNrKTsKZXh0ZXJuIHZvaWQg
dW5ibG9ja19hbGxfc2lnbmFscyh2b2lkKTsKZXh0ZXJuIGludCBzZW5kX3NpZ19pbmZvKGludCwg
c3RydWN0IHNpZ2luZm8gKiwgc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gaW50IGZvcmNl
X3NpZ19pbmZvKGludCwgc3RydWN0IHNpZ2luZm8gKiwgc3RydWN0IHRhc2tfc3RydWN0ICopOwpl
eHRlcm4gaW50IGtpbGxfcGdfaW5mbyhpbnQsIHN0cnVjdCBzaWdpbmZvICosIHBpZF90KTsKZXh0
ZXJuIGludCBraWxsX3NsX2luZm8oaW50LCBzdHJ1Y3Qgc2lnaW5mbyAqLCBwaWRfdCk7CmV4dGVy
biBpbnQga2lsbF9wcm9jX2luZm8oaW50LCBzdHJ1Y3Qgc2lnaW5mbyAqLCBwaWRfdCk7CmV4dGVy
biB2b2lkIG5vdGlmeV9wYXJlbnQoc3RydWN0IHRhc2tfc3RydWN0ICosIGludCk7CmV4dGVybiB2
b2lkIGRvX25vdGlmeV9wYXJlbnQoc3RydWN0IHRhc2tfc3RydWN0ICosIGludCk7CmV4dGVybiB2
b2lkIGZvcmNlX3NpZyhpbnQsIHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIGludCBzZW5k
X3NpZyhpbnQsIHN0cnVjdCB0YXNrX3N0cnVjdCAqLCBpbnQpOwpleHRlcm4gaW50IGtpbGxfcGco
cGlkX3QsIGludCwgaW50KTsKZXh0ZXJuIGludCBraWxsX3NsKHBpZF90LCBpbnQsIGludCk7CmV4
dGVybiBpbnQga2lsbF9wcm9jKHBpZF90LCBpbnQsIGludCk7CmV4dGVybiBpbnQgZG9fc2lnYWN0
aW9uKGludCwgY29uc3Qgc3RydWN0IGtfc2lnYWN0aW9uICosIHN0cnVjdCBrX3NpZ2FjdGlvbiAq
KTsKZXh0ZXJuIGludCBkb19zaWdhbHRzdGFjayhjb25zdCBzdGFja190ICosIHN0YWNrX3QgKiwg
dW5zaWduZWQgbG9uZyk7CgpzdGF0aWMgaW5saW5lIGludCBzaWduYWxfcGVuZGluZyhzdHJ1Y3Qg
dGFza19zdHJ1Y3QgKnApCnsKICAgICAgICByZXR1cm4gKHAtPnNpZ3BlbmRpbmcgIT0gMCk7Cn0K
CgoKCgpzdGF0aWMgaW5saW5lIGludCBoYXNfcGVuZGluZ19zaWduYWxzKHNpZ3NldF90ICpzaWdu
YWwsIHNpZ3NldF90ICpibG9ja2VkKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyByZWFkeTsKICAg
ICAgICBsb25nIGk7CgogICAgICAgIHN3aXRjaCAoKDY0IC8gMzIpKSB7CiAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgICAgIGZvciAoaSA9ICg2NCAvIDMyKSwgcmVhZHkgPSAwOyAtLWkgPj0g
MCA7KQogICAgICAgICAgICAgICAgICAgICAgICByZWFkeSB8PSBzaWduYWwtPnNpZ1tpXSAmfiBi
bG9ja2VkLT5zaWdbaV07CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA0OiBy
ZWFkeSA9IHNpZ25hbC0+c2lnWzNdICZ+IGJsb2NrZWQtPnNpZ1szXTsKICAgICAgICAgICAgICAg
IHJlYWR5IHw9IHNpZ25hbC0+c2lnWzJdICZ+IGJsb2NrZWQtPnNpZ1syXTsKICAgICAgICAgICAg
ICAgIHJlYWR5IHw9IHNpZ25hbC0+c2lnWzFdICZ+IGJsb2NrZWQtPnNpZ1sxXTsKICAgICAgICAg
ICAgICAgIHJlYWR5IHw9IHNpZ25hbC0+c2lnWzBdICZ+IGJsb2NrZWQtPnNpZ1swXTsKICAgICAg
ICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDI6IHJlYWR5ID0gc2lnbmFsLT5zaWdbMV0g
Jn4gYmxvY2tlZC0+c2lnWzFdOwogICAgICAgICAgICAgICAgcmVhZHkgfD0gc2lnbmFsLT5zaWdb
MF0gJn4gYmxvY2tlZC0+c2lnWzBdOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNh
c2UgMTogcmVhZHkgPSBzaWduYWwtPnNpZ1swXSAmfiBibG9ja2VkLT5zaWdbMF07CiAgICAgICAg
fQogICAgICAgIHJldHVybiByZWFkeSAhPSAwOwp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkIHJl
Y2FsY19zaWdwZW5kaW5nKHN0cnVjdCB0YXNrX3N0cnVjdCAqdCkKewogICAgICAgIHQtPnNpZ3Bl
bmRpbmcgPSBoYXNfcGVuZGluZ19zaWduYWxzKCZ0LT5wZW5kaW5nLnNpZ25hbCwgJnQtPmJsb2Nr
ZWQpOwp9CgoKCnN0YXRpYyBpbmxpbmUgaW50IG9uX3NpZ19zdGFjayh1bnNpZ25lZCBsb25nIHNw
KQp7CiAgICAgICAgcmV0dXJuIChzcCAtIGdldF9jdXJyZW50KCktPnNhc19zc19zcCA8IGdldF9j
dXJyZW50KCktPnNhc19zc19zaXplKTsKfQoKc3RhdGljIGlubGluZSBpbnQgc2FzX3NzX2ZsYWdz
KHVuc2lnbmVkIGxvbmcgc3ApCnsKICAgICAgICByZXR1cm4gKGdldF9jdXJyZW50KCktPnNhc19z
c19zaXplID09IDAgPyAyCiAgICAgICAgICAgICAgICA6IG9uX3NpZ19zdGFjayhzcCkgPyAxIDog
MCk7Cn0KCmV4dGVybiBpbnQgcmVxdWVzdF9pcnEodW5zaWduZWQgaW50LAogICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQgKCpoYW5kbGVyKShpbnQsIHZvaWQgKiwgc3RydWN0IHB0X3JlZ3MgKiks
CiAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZywgY29uc3QgY2hhciAqLCB2b2lk
ICopOwpleHRlcm4gdm9pZCBmcmVlX2lycSh1bnNpZ25lZCBpbnQsIHZvaWQgKik7CiMgNzExICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpzdGF0aWMgaW5saW5l
IGludCBzdXNlcih2b2lkKQp7CiAgICAgICAgaWYgKCEoICgxIDw8ICgwICsxKSkgJiAweDAwMDAw
MDAwID8gKDEgPDwgKDApKSAmIDB4MDAwMDAwMDAgOiAoMSA8PCAoMCkpICYgc2VjdXJlYml0cyAp
ICYmIGdldF9jdXJyZW50KCktPmV1aWQgPT0gMCkgewogICAgICAgICAgICAgICAgZ2V0X2N1cnJl
bnQoKS0+ZmxhZ3MgfD0gMHgwMDAwMDEwMDsKICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAg
ICAgIH0KICAgICAgICByZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBpbnQgZnN1c2VyKHZvaWQp
CnsKICAgICAgICBpZiAoISggKDEgPDwgKDAgKzEpKSAmIDB4MDAwMDAwMDAgPyAoMSA8PCAoMCkp
ICYgMHgwMDAwMDAwMCA6ICgxIDw8ICgwKSkgJiBzZWN1cmViaXRzICkgJiYgZ2V0X2N1cnJlbnQo
KS0+ZnN1aWQgPT0gMCkgewogICAgICAgICAgICAgICAgZ2V0X2N1cnJlbnQoKS0+ZmxhZ3MgfD0g
MHgwMDAwMDEwMDsKICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KICAgICAgICBy
ZXR1cm4gMDsKfQoKCgoKCgoKc3RhdGljIGlubGluZSBpbnQgY2FwYWJsZShpbnQgY2FwKQp7Cgog
ICAgICAgIGlmICgoKGdldF9jdXJyZW50KCktPmNhcF9lZmZlY3RpdmUpICYgKDEgPDwgKGNhcCkp
KSkKCgoKICAgICAgICB7CiAgICAgICAgICAgICAgICBnZXRfY3VycmVudCgpLT5mbGFncyB8PSAw
eDAwMDAwMTAwOwogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgICAgIHJl
dHVybiAwOwp9CgoKCgpleHRlcm4gc3RydWN0IG1tX3N0cnVjdCAqIG1tX2FsbG9jKHZvaWQpOwoK
ZXh0ZXJuIHN0cnVjdCBtbV9zdHJ1Y3QgKiBzdGFydF9sYXp5X3RsYih2b2lkKTsKZXh0ZXJuIHZv
aWQgZW5kX2xhenlfdGxiKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKTsKCgpleHRlcm4gaW5saW5lIHZv
aWQgX19tbWRyb3Aoc3RydWN0IG1tX3N0cnVjdCAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMp
KSk7CnN0YXRpYyBpbmxpbmUgdm9pZCBtbWRyb3Aoc3RydWN0IG1tX3N0cnVjdCAqIG1tKQp7CiAg
ICAgICAgaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJm1tLT5tbV9jb3VudCkpCiAgICAgICAgICAg
ICAgICBfX21tZHJvcChtbSk7Cn0KCgpleHRlcm4gdm9pZCBtbXB1dChzdHJ1Y3QgbW1fc3RydWN0
ICopOwoKZXh0ZXJuIHZvaWQgbW1fcmVsZWFzZSh2b2lkKTsKCgoKCmV4dGVybiBzdHJ1Y3QgZmls
ZSAqKiBhbGxvY19mZF9hcnJheShpbnQpOwpleHRlcm4gaW50IGV4cGFuZF9mZF9hcnJheShzdHJ1
Y3QgZmlsZXNfc3RydWN0ICosIGludCBucik7CmV4dGVybiB2b2lkIGZyZWVfZmRfYXJyYXkoc3Ry
dWN0IGZpbGUgKiosIGludCk7CgpleHRlcm4gZmRfc2V0ICphbGxvY19mZHNldChpbnQpOwpleHRl
cm4gaW50IGV4cGFuZF9mZHNldChzdHJ1Y3QgZmlsZXNfc3RydWN0ICosIGludCBucik7CmV4dGVy
biB2b2lkIGZyZWVfZmRzZXQoZmRfc2V0ICosIGludCk7CgpleHRlcm4gaW50IGNvcHlfdGhyZWFk
KGludCwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgc3RydWN0
IHRhc2tfc3RydWN0ICosIHN0cnVjdCBwdF9yZWdzICopOwpleHRlcm4gdm9pZCBmbHVzaF90aHJl
YWQodm9pZCk7CmV4dGVybiB2b2lkIGV4aXRfdGhyZWFkKHZvaWQpOwoKZXh0ZXJuIHZvaWQgZXhp
dF9tbShzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIGV4aXRfZmlsZXMoc3RydWN0
IHRhc2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBleGl0X3NpZ2hhbmQoc3RydWN0IHRhc2tfc3Ry
dWN0ICopOwoKZXh0ZXJuIHZvaWQgcmVwYXJlbnRfdG9faW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQg
ZGFlbW9uaXplKHZvaWQpOwoKZXh0ZXJuIGludCBkb19leGVjdmUoY2hhciAqLCBjaGFyICoqLCBj
aGFyICoqLCBzdHJ1Y3QgcHRfcmVncyAqKTsKZXh0ZXJuIGludCBkb19mb3JrKHVuc2lnbmVkIGxv
bmcsIHVuc2lnbmVkIGxvbmcsIHN0cnVjdCBwdF9yZWdzICosIHVuc2lnbmVkIGxvbmcpOwoKZXh0
ZXJuIHZvaWQgYWRkX3dhaXRfcXVldWUod2FpdF9xdWV1ZV9oZWFkX3QgKnEsIHdhaXRfcXVldWVf
dCAqIHdhaXQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgYWRkX3dh
aXRfcXVldWVfZXhjbHVzaXZlKHdhaXRfcXVldWVfaGVhZF90ICpxLCB3YWl0X3F1ZXVlX3QgKiB3
YWl0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIHJlbW92ZV93YWl0
X3F1ZXVlKHdhaXRfcXVldWVfaGVhZF90ICpxLCB3YWl0X3F1ZXVlX3QgKiB3YWl0KSBfX2F0dHJp
YnV0ZV9fKChyZWdwYXJtKDMpKSk7CiMgODc5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVk
ZS9saW51eC9zY2hlZC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgZGVsX2Zyb21fcnVucXVldWUoc3Ry
dWN0IHRhc2tfc3RydWN0ICogcCkKewogICAgICAgIG5yX3J1bm5pbmctLTsKICAgICAgICBwLT5z
bGVlcF90aW1lID0gamlmZmllczsKICAgICAgICBsaXN0X2RlbCgmcC0+cnVuX2xpc3QpOwogICAg
ICAgIHAtPnJ1bl9saXN0Lm5leHQgPSAoKHZvaWQgKikwKTsKfQoKc3RhdGljIGlubGluZSBpbnQg
dGFza19vbl9ydW5xdWV1ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKICAgICAgICByZXR1cm4g
KHAtPnJ1bl9saXN0Lm5leHQgIT0gKCh2b2lkICopMCkpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQg
dW5oYXNoX3Byb2Nlc3Moc3RydWN0IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgaWYgKHRhc2tf
b25fcnVucXVldWUocCkpIF9fYXNtX18gX192b2xhdGlsZV9fKCIuYnl0ZSAweDBmLDB4MGIiKTsK
ICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJjbGkiOiA6IDoibWVtb3J5Iik7ICh7
ZG8geyArK2dldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQ7IF9fYXNtX18gX192b2xhdGlsZV9f
KCIiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOyAodm9pZCkoJnRhc2tsaXN0X2xvY2spO30p
OyB9IHdoaWxlICgwKTsKICAgICAgICBucl90aHJlYWRzLS07CiAgICAgICAgdW5oYXNoX3BpZChw
KTsKICAgICAgICBkbyB7IChwKS0+bmV4dF90YXNrLT5wcmV2X3Rhc2sgPSAocCktPnByZXZfdGFz
azsgKHApLT5wcmV2X3Rhc2stPm5leHRfdGFzayA9IChwKS0+bmV4dF90YXNrOyBpZiAoKHApLT5w
X29zcHRyKSAocCktPnBfb3NwdHItPnBfeXNwdHIgPSAocCktPnBfeXNwdHI7IGlmICgocCktPnBf
eXNwdHIpIChwKS0+cF95c3B0ci0+cF9vc3B0ciA9IChwKS0+cF9vc3B0cjsgZWxzZSAocCktPnBf
cHB0ci0+cF9jcHRyID0gKHApLT5wX29zcHRyOyB9IHdoaWxlICgwKTsKICAgICAgICBsaXN0X2Rl
bCgmcC0+dGhyZWFkX2dyb3VwKTsKICAgICAgICBkbyB7ICh7ZG8geyB9IHdoaWxlKDApOyBkbyB7
IC0tZ2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9jb3VudDsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6
IDogOiJtZW1vcnkiKTsgaWYgKChnZXRfY3VycmVudCgpLT5wcmVlbXB0X2NvdW50ID09IDApICYm
IGdldF9jdXJyZW50KCktPm5lZWRfcmVzY2hlZCkgcHJlZW1wdF9zY2hlZHVsZSgpOyB9IHdoaWxl
ICgwKTt9KTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInN0aSI6IDogOiJtZW1vcnkiKTsgfSB3aGls
ZSAoMCk7Cn0KCgpzdGF0aWMgaW5saW5lIHZvaWQgdGFza19sb2NrKHN0cnVjdCB0YXNrX3N0cnVj
dCAqcCkKewogICAgICAgIGRvIHsgZG8geyArK2dldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQ7
IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOyAodm9p
ZCkoJnAtPmFsbG9jX2xvY2spOyB9IHdoaWxlKDApOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdGFz
a191bmxvY2soc3RydWN0IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgZG8geyBkbyB7IH0gd2hp
bGUoMCk7IGRvIHsgLS1nZXRfY3VycmVudCgpLT5wcmVlbXB0X2NvdW50OyBfX2FzbV9fIF9fdm9s
YXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyBpZiAoKGdldF9jdXJyZW50KCktPnByZWVtcHRfY291
bnQgPT0gMCkgJiYgZ2V0X2N1cnJlbnQoKS0+bmVlZF9yZXNjaGVkKSBwcmVlbXB0X3NjaGVkdWxl
KCk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKfQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIGRf
cGF0aChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCB2ZnNtb3VudCAqdmZzbW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmJ1ZiwgaW50IGJ1ZmxlbikKewogICAg
ICAgIGNoYXIgKnJlczsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKnJvb3RtbnQ7CiAgICAgICAg
c3RydWN0IGRlbnRyeSAqcm9vdDsKICAgICAgICAoe2RvIHsgKytnZXRfY3VycmVudCgpLT5wcmVl
bXB0X2NvdW50OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxl
ICgwKTsgKHZvaWQpKCZnZXRfY3VycmVudCgpLT5mcy0+bG9jayk7fSk7CiAgICAgICAgcm9vdG1u
dCA9IG1udGdldChnZXRfY3VycmVudCgpLT5mcy0+cm9vdG1udCk7CiAgICAgICAgcm9vdCA9IGRn
ZXQoZ2V0X2N1cnJlbnQoKS0+ZnMtPnJvb3QpOwogICAgICAgICh7ZG8geyB9IHdoaWxlKDApOyBk
byB7IC0tZ2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9jb3VudDsgX19hc21fXyBfX3ZvbGF0aWxlX18o
IiI6IDogOiJtZW1vcnkiKTsgaWYgKChnZXRfY3VycmVudCgpLT5wcmVlbXB0X2NvdW50ID09IDAp
ICYmIGdldF9jdXJyZW50KCktPm5lZWRfcmVzY2hlZCkgcHJlZW1wdF9zY2hlZHVsZSgpOyB9IHdo
aWxlICgwKTt9KTsKICAgICAgICBkbyB7IGRvIHsgKytnZXRfY3VycmVudCgpLT5wcmVlbXB0X2Nv
dW50OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlICgwKTsg
KHZvaWQpKCZkY2FjaGVfbG9jayk7IH0gd2hpbGUoMCk7CiAgICAgICAgcmVzID0gX19kX3BhdGgo
ZGVudHJ5LCB2ZnNtbnQsIHJvb3QsIHJvb3RtbnQsIGJ1ZiwgYnVmbGVuKTsKICAgICAgICBkbyB7
IGRvIHsgfSB3aGlsZSgwKTsgZG8geyAtLWdldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQ7IF9f
YXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IGlmICgoZ2V0X2N1cnJlbnQoKS0+
cHJlZW1wdF9jb3VudCA9PSAwKSAmJiBnZXRfY3VycmVudCgpLT5uZWVkX3Jlc2NoZWQpIHByZWVt
cHRfc2NoZWR1bGUoKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwogICAgICAgIGRwdXQocm9v
dCk7CiAgICAgICAgbW50cHV0KHJvb3RtbnQpOwogICAgICAgIHJldHVybiByZXM7Cn0KCgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIiAxCiMgMjc1ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIKc3RhdGljIF9faW5s
aW5lX18gdm9pZCBkX2Ryb3Aoc3RydWN0IGRlbnRyeSAqIGRlbnRyeSkKewogICAgICAgIGRvIHsg
ZG8geyArK2dldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQ7IF9fYXNtX18gX192b2xhdGlsZV9f
KCIiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOyAodm9pZCkoJmRjYWNoZV9sb2NrKTsgfSB3
aGlsZSgwKTsKICAgICAgICBsaXN0X2RlbCgmZGVudHJ5LT5kX2hhc2gpOwogICAgICAgIGRvIHsg
KCZkZW50cnktPmRfaGFzaCktPm5leHQgPSAoJmRlbnRyeS0+ZF9oYXNoKTsgKCZkZW50cnktPmRf
aGFzaCktPnByZXYgPSAoJmRlbnRyeS0+ZF9oYXNoKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgZG8g
eyBkbyB7IH0gd2hpbGUoMCk7IGRvIHsgLS1nZXRfY3VycmVudCgpLT5wcmVlbXB0X2NvdW50OyBf
X2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyBpZiAoKGdldF9jdXJyZW50KCkt
PnByZWVtcHRfY291bnQgPT0gMCkgJiYgZ2V0X2N1cnJlbnQoKS0+bmVlZF9yZXNjaGVkKSBwcmVl
bXB0X3NjaGVkdWxlKCk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKfQojIDkzNSAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIiAxCiMgMTE2ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvaW5jbHVkZS9saW51eC90cXVldWUuaCIKc3RhdGljIGlubGluZSBpbnQgcXVldWVf
dGFzayhzdHJ1Y3QgdHFfc3RydWN0ICpiaF9wb2ludGVyLCB0YXNrX3F1ZXVlICpiaF9saXN0KQp7
CiAgICAgICAgaW50IHJldCA9IDA7CiAgICAgICAgaWYgKCF0ZXN0X2FuZF9zZXRfYml0KDAsJmJo
X3BvaW50ZXItPnN5bmMpKSB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwog
ICAgICAgICAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAl
MCA7IGNsaSI6Ij1nIiAoZmxhZ3MpOiA6Im1lbW9yeSIpOyBkbyB7IGRvIHsgKytnZXRfY3VycmVu
dCgpLT5wcmVlbXB0X2NvdW50OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIp
OyB9IHdoaWxlICgwKTsgKHZvaWQpKCZ0cXVldWVfbG9jayk7IH0gd2hpbGUoMCk7IH0gd2hpbGUg
KDApOwogICAgICAgICAgICAgICAgbGlzdF9hZGRfdGFpbCgmYmhfcG9pbnRlci0+bGlzdCwgYmhf
bGlzdCk7CiAgICAgICAgICAgICAgICBkbyB7IGRvIHsgZG8geyB9IHdoaWxlKDApOyBkbyB7IC0t
Z2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9jb3VudDsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDog
OiJtZW1vcnkiKTsgaWYgKChnZXRfY3VycmVudCgpLT5wcmVlbXB0X2NvdW50ID09IDApICYmIGdl
dF9jdXJyZW50KCktPm5lZWRfcmVzY2hlZCkgcHJlZW1wdF9zY2hlZHVsZSgpOyB9IHdoaWxlICgw
KTsgfSB3aGlsZSAoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjog
OiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAg
ICByZXQgPSAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmV0Owp9CiMgOTM2ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvbGludXgvZnNfc3RydWN0LmgiIDEKIyAzNyAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvbGludXgvZnNfc3RydWN0LmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBz
ZXRfZnNfcm9vdChzdHJ1Y3QgZnNfc3RydWN0ICpmcywKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQg
Km1udCwKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKICAgICAgICBzdHJ1Y3QgZGVu
dHJ5ICpvbGRfcm9vdDsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKm9sZF9yb290bW50OwogICAg
ICAgICh7ZG8geyArK2dldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQ7IF9fYXNtX18gX192b2xh
dGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOyAodm9pZCkoJmZzLT5sb2NrKTt9
KTsKICAgICAgICBvbGRfcm9vdCA9IGZzLT5yb290OwogICAgICAgIG9sZF9yb290bW50ID0gZnMt
PnJvb3RtbnQ7CiAgICAgICAgZnMtPnJvb3RtbnQgPSBtbnRnZXQobW50KTsKICAgICAgICBmcy0+
cm9vdCA9IGRnZXQoZGVudHJ5KTsKICAgICAgICAoe2RvIHsgfSB3aGlsZSgwKTsgZG8geyAtLWdl
dF9jdXJyZW50KCktPnByZWVtcHRfY291bnQ7IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoi
bWVtb3J5Iik7IGlmICgoZ2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9jb3VudCA9PSAwKSAmJiBnZXRf
Y3VycmVudCgpLT5uZWVkX3Jlc2NoZWQpIHByZWVtcHRfc2NoZWR1bGUoKTsgfSB3aGlsZSAoMCk7
fSk7CiAgICAgICAgaWYgKG9sZF9yb290KSB7CiAgICAgICAgICAgICAgICBkcHV0KG9sZF9yb290
KTsKICAgICAgICAgICAgICAgIG1udHB1dChvbGRfcm9vdG1udCk7CiAgICAgICAgfQp9CgoKCgoK
CnN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZnNfcHdkKHN0cnVjdCBmc19zdHJ1Y3QgKmZzLAogICAg
ICAgIHN0cnVjdCB2ZnNtb3VudCAqbW50LAogICAgICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSkK
ewogICAgICAgIHN0cnVjdCBkZW50cnkgKm9sZF9wd2Q7CiAgICAgICAgc3RydWN0IHZmc21vdW50
ICpvbGRfcHdkbW50OwogICAgICAgICh7ZG8geyArK2dldF9jdXJyZW50KCktPnByZWVtcHRfY291
bnQ7IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOyAo
dm9pZCkoJmZzLT5sb2NrKTt9KTsKICAgICAgICBvbGRfcHdkID0gZnMtPnB3ZDsKICAgICAgICBv
bGRfcHdkbW50ID0gZnMtPnB3ZG1udDsKICAgICAgICBmcy0+cHdkbW50ID0gbW50Z2V0KG1udCk7
CiAgICAgICAgZnMtPnB3ZCA9IGRnZXQoZGVudHJ5KTsKICAgICAgICAoe2RvIHsgfSB3aGlsZSgw
KTsgZG8geyAtLWdldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQ7IF9fYXNtX18gX192b2xhdGls
ZV9fKCIiOiA6IDoibWVtb3J5Iik7IGlmICgoZ2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9jb3VudCA9
PSAwKSAmJiBnZXRfY3VycmVudCgpLT5uZWVkX3Jlc2NoZWQpIHByZWVtcHRfc2NoZWR1bGUoKTsg
fSB3aGlsZSAoMCk7fSk7CiAgICAgICAgaWYgKG9sZF9wd2QpIHsKICAgICAgICAgICAgICAgIGRw
dXQob2xkX3B3ZCk7CiAgICAgICAgICAgICAgICBtbnRwdXQob2xkX3B3ZG1udCk7CiAgICAgICAg
fQp9CiMgOTM3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAy
CiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvbW0uaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDEKIyA2ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9tbS5oIiAyCgoKCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2luY2x1ZGUvbGludXgvbW0uaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9p
bmNsdWRlL2xpbnV4L3N0cmluZy5oIiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNs
dWRlL2xpbnV4L21tLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51
eC9saXN0LmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvbW0u
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L21tem9uZS5oIiAx
CgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvY29uZmlnLmgi
IDEKIyA4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDEKIyA5
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQojIDEwICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMgojIDIxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKdHlwZWRlZiBzdHJ1Y3QgZnJlZV9h
cmVhX3N0cnVjdCB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBmcmVlX2xpc3Q7CiAgICAgICAg
dW5zaWduZWQgbG9uZyAqbWFwOwp9IGZyZWVfYXJlYV90OwoKc3RydWN0IHBnbGlzdF9kYXRhOwoj
IDM2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKdHlwZWRl
ZiBzdHJ1Y3Qgem9uZV9zdHJ1Y3QgewoKCgogICAgICAgIHNwaW5sb2NrX3QgbG9jazsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGZyZWVfcGFnZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpbmFjdGl2
ZV9jbGVhbl9wYWdlczsKICAgICAgICB1bnNpZ25lZCBsb25nIGluYWN0aXZlX2RpcnR5X3BhZ2Vz
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgcGFnZXNfbWluLCBwYWdlc19sb3csIHBhZ2VzX2hpZ2g7
CgoKCgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaW5hY3RpdmVfY2xlYW5fbGlzdDsKICAgICAg
ICBmcmVlX2FyZWFfdCBmcmVlX2FyZWFbMTBdOwoKCgoKICAgICAgICBzdHJ1Y3QgcGdsaXN0X2Rh
dGEgKnpvbmVfcGdkYXQ7CiAgICAgICAgc3RydWN0IHBhZ2UgKnpvbmVfbWVtX21hcDsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHpvbmVfc3RhcnRfcGFkZHI7CiAgICAgICAgdW5zaWduZWQgbG9uZyB6
b25lX3N0YXJ0X21hcG5yOwoKCgoKICAgICAgICBjaGFyICpuYW1lOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgc2l6ZTsKfSB6b25lX3Q7CiMgODMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRl
L2xpbnV4L21tem9uZS5oIgp0eXBlZGVmIHN0cnVjdCB6b25lbGlzdF9zdHJ1Y3QgewogICAgICAg
IHpvbmVfdCAqIHpvbmVzIFszICsxXTsKfSB6b25lbGlzdF90OwojIDEwMCAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvbGludXgvbW16b25lLmgiCnN0cnVjdCBib290bWVtX2RhdGE7CnR5
cGVkZWYgc3RydWN0IHBnbGlzdF9kYXRhIHsKICAgICAgICB6b25lX3Qgbm9kZV96b25lc1szXTsK
ICAgICAgICB6b25lbGlzdF90IG5vZGVfem9uZWxpc3RzWzB4MGYgKzFdOwogICAgICAgIHN0cnVj
dCBwYWdlICpub2RlX21lbV9tYXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyAqdmFsaWRfYWRkcl9i
aXRtYXA7CiAgICAgICAgc3RydWN0IGJvb3RtZW1fZGF0YSAqYmRhdGE7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBub2RlX3N0YXJ0X3BhZGRyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbm9kZV9zdGFy
dF9tYXBucjsKICAgICAgICB1bnNpZ25lZCBsb25nIG5vZGVfc2l6ZTsKICAgICAgICBpbnQgbm9k
ZV9pZDsKICAgICAgICBzdHJ1Y3QgcGdsaXN0X2RhdGEgKm5vZGVfbmV4dDsKfSBwZ19kYXRhX3Q7
CgpleHRlcm4gaW50IG51bW5vZGVzOwpleHRlcm4gcGdfZGF0YV90ICpwZ2RhdF9saXN0OwojIDEy
NCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvbW16b25lLmgiCnN0cnVjdCBw
YWdlOwpleHRlcm4gdm9pZCBzaG93X2ZyZWVfYXJlYXNfY29yZShwZ19kYXRhX3QgKnBnZGF0KTsK
ZXh0ZXJuIHZvaWQgZnJlZV9hcmVhX2luaXRfY29yZShpbnQgbmlkLCBwZ19kYXRhX3QgKnBnZGF0
LCBzdHJ1Y3QgcGFnZSAqKmdtYXAsCiAgdW5zaWduZWQgbG9uZyAqem9uZXNfc2l6ZSwgdW5zaWdu
ZWQgbG9uZyBwYWRkciwgdW5zaWduZWQgbG9uZyAqemhvbGVzX3NpemUsCiAgc3RydWN0IHBhZ2Ug
KnBtYXApOwoKZXh0ZXJuIHBnX2RhdGFfdCBjb250aWdfcGFnZV9kYXRhOwojIDEzICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9tbS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2luY2x1ZGUvbGludXgvc3dhcC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9pbmNsdWRlL2xpbnV4L3N3YXAuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNs
dWRlL2FzbS9wYWdlLmgiIDEKIyA2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51
eC9zd2FwLmgiIDIKIyAyNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvc3dh
cC5oIgp1bmlvbiBzd2FwX2hlYWRlciB7CiAgICAgICAgc3RydWN0CiAgICAgICAgewogICAgICAg
ICAgICAgICAgY2hhciByZXNlcnZlZFsoMVVMIDw8IDEyKSAtIDEwXTsKICAgICAgICAgICAgICAg
IGNoYXIgbWFnaWNbMTBdOwogICAgICAgIH0gbWFnaWM7CiAgICAgICAgc3RydWN0CiAgICAgICAg
ewogICAgICAgICAgICAgICAgY2hhciBib290Yml0c1sxMDI0XTsKICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCB2ZXJzaW9uOwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxhc3RfcGFn
ZTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9iYWRwYWdlczsKICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBwYWRkaW5nWzEyNV07CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgYmFkcGFnZXNbMV07CiAgICAgICAgfSBpbmZvOwp9OwojIDUxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvaW5jbHVkZS9saW51eC9zd2FwLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2lu
Y2x1ZGUvYXNtL2F0b21pYy5oIiAxCiMgNTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRl
L2xpbnV4L3N3YXAuaCIgMgojIDY0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51
eC9zd2FwLmgiCnN0cnVjdCBzd2FwX2luZm9fc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBpbnQg
ZmxhZ3M7CiAgICAgICAga2Rldl90IHN3YXBfZGV2aWNlOwogICAgICAgIHNwaW5sb2NrX3Qgc2Rl
dl9sb2NrOwogICAgICAgIHN0cnVjdCBkZW50cnkgKiBzd2FwX2ZpbGU7CiAgICAgICAgc3RydWN0
IHZmc21vdW50ICpzd2FwX3Zmc21udDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCAqIHN3YXBfbWFw
OwogICAgICAgIHVuc2lnbmVkIGludCBsb3dlc3RfYml0OwogICAgICAgIHVuc2lnbmVkIGludCBo
aWdoZXN0X2JpdDsKICAgICAgICB1bnNpZ25lZCBpbnQgY2x1c3Rlcl9uZXh0OwogICAgICAgIHVu
c2lnbmVkIGludCBjbHVzdGVyX25yOwogICAgICAgIGludCBwcmlvOwogICAgICAgIGludCBwYWdl
czsKICAgICAgICB1bnNpZ25lZCBsb25nIG1heDsKICAgICAgICBpbnQgbmV4dDsKfTsKCmV4dGVy
biBpbnQgbnJfc3dhcF9wYWdlczsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbnVtX3BoeXNwYWdlczsK
ZXh0ZXJuIHVuc2lnbmVkIGludCBucl9mcmVlX3BhZ2VzKHZvaWQpOwpleHRlcm4gdW5zaWduZWQg
aW50IG5yX2ZyZWVfcGFnZXNfem9uZShpbnQpOwpleHRlcm4gdW5zaWduZWQgaW50IG5yX2luYWN0
aXZlX2NsZWFuX3BhZ2VzKHZvaWQpOwpleHRlcm4gdW5zaWduZWQgaW50IG5yX2luYWN0aXZlX2Ns
ZWFuX3BhZ2VzX3pvbmUoaW50KTsKZXh0ZXJuIHVuc2lnbmVkIGludCBucl9mcmVlX2J1ZmZlcl9w
YWdlcyh2b2lkKTsKZXh0ZXJuIGludCBucl9hY3RpdmVfcGFnZXM7CmV4dGVybiBpbnQgbnJfaW5h
Y3RpdmVfZGlydHlfcGFnZXM7CmV4dGVybiBhdG9taWNfdCBwYWdlX2NhY2hlX3NpemU7CmV4dGVy
biBhdG9taWNfdCBidWZmZXJtZW1fcGFnZXM7CmV4dGVybiBzcGlubG9ja190IHBhZ2VjYWNoZV9s
b2NrOwpleHRlcm4gdm9pZCBfX3JlbW92ZV9pbm9kZV9wYWdlKHN0cnVjdCBwYWdlICopOwoKCmV4
dGVybiBpbnQgdm1fcGFnZV9hZ2luZ190YWN0aWM7CmV4dGVybiBpbnQgdm1fc3RhdGljX2luYWN0
aXZlX3RhcmdldDsKZXh0ZXJuIGludCB2bV9kcm9wX2JlaGluZDsKCgpzdHJ1Y3QgdGFza19zdHJ1
Y3Q7CnN0cnVjdCB2bV9hcmVhX3N0cnVjdDsKc3RydWN0IHN5c2luZm87CgpzdHJ1Y3Qgem9uZV90
OwoKCmV4dGVybiB2b2lkIGRlYWN0aXZhdGVfcGFnZShzdHJ1Y3QgcGFnZSAqKTsKZXh0ZXJuIHZv
aWQgZGVhY3RpdmF0ZV9wYWdlX25vbG9jayhzdHJ1Y3QgcGFnZSAqKTsKZXh0ZXJuIHZvaWQgYWN0
aXZhdGVfcGFnZShzdHJ1Y3QgcGFnZSAqKTsKZXh0ZXJuIHZvaWQgYWN0aXZhdGVfcGFnZV9ub2xv
Y2soc3RydWN0IHBhZ2UgKik7CmV4dGVybiB2b2lkIGxydV9jYWNoZV9hZGQoc3RydWN0IHBhZ2Ug
Kik7CmV4dGVybiB2b2lkIF9fbHJ1X2NhY2hlX2RlbChzdHJ1Y3QgcGFnZSAqKTsKZXh0ZXJuIHZv
aWQgbHJ1X2NhY2hlX2RlbChzdHJ1Y3QgcGFnZSAqKTsKZXh0ZXJuIHZvaWQgc3dhcF9zZXR1cCh2
b2lkKTsKCgpleHRlcm4gc3RydWN0IHBhZ2UgKiByZWNsYWltX3BhZ2Uoem9uZV90ICopOwpleHRl
cm4gd2FpdF9xdWV1ZV9oZWFkX3Qga3N3YXBkX3dhaXQ7CmV4dGVybiB3YWl0X3F1ZXVlX2hlYWRf
dCBrcmVjbGFpbWRfd2FpdDsKZXh0ZXJuIGludCBwYWdlX2xhdW5kZXIoaW50LCBpbnQpOwpleHRl
cm4gaW50IGZyZWVfc2hvcnRhZ2Uodm9pZCk7CmV4dGVybiBpbnQgdG90YWxfZnJlZV9zaG9ydGFn
ZSh2b2lkKTsKZXh0ZXJuIGludCBpbmFjdGl2ZV9zaG9ydGFnZSh2b2lkKTsKZXh0ZXJuIGludCB0
b3RhbF9pbmFjdGl2ZV9zaG9ydGFnZSh2b2lkKTsKZXh0ZXJuIHZvaWQgd2FrZXVwX2tzd2FwZCh2
b2lkKTsKZXh0ZXJuIGludCB0cnlfdG9fZnJlZV9wYWdlcyh1bnNpZ25lZCBpbnQgZ2ZwX21hc2sp
OwoKZXh0ZXJuIHVuc2lnbmVkIGludCB6b25lX2ZyZWVfc2hvcnRhZ2Uoem9uZV90ICp6b25lKTsK
ZXh0ZXJuIHVuc2lnbmVkIGludCB6b25lX2luYWN0aXZlX3Nob3J0YWdlKHpvbmVfdCAqem9uZSk7
CgoKZXh0ZXJuIHZvaWQgcndfc3dhcF9wYWdlKGludCwgc3RydWN0IHBhZ2UgKik7CmV4dGVybiB2
b2lkIHJ3X3N3YXBfcGFnZV9ub2xvY2soaW50LCBzd3BfZW50cnlfdCwgY2hhciAqKTsKCgoKCgoK
ZXh0ZXJuIHZvaWQgc2hvd19zd2FwX2NhY2hlX2luZm8odm9pZCk7CgpleHRlcm4gaW50IGFkZF90
b19zd2FwX2NhY2hlKHN0cnVjdCBwYWdlICosIHN3cF9lbnRyeV90KTsKZXh0ZXJuIHZvaWQgX19k
ZWxldGVfZnJvbV9zd2FwX2NhY2hlKHN0cnVjdCBwYWdlICpwYWdlKTsKZXh0ZXJuIHZvaWQgZGVs
ZXRlX2Zyb21fc3dhcF9jYWNoZShzdHJ1Y3QgcGFnZSAqcGFnZSk7CmV4dGVybiB2b2lkIGZyZWVf
cGFnZV9hbmRfc3dhcF9jYWNoZShzdHJ1Y3QgcGFnZSAqcGFnZSk7CmV4dGVybiB2b2lkIGZyZWVf
c3dhcF9hbmRfc3dhcF9jYWNoZShzd3BfZW50cnlfdCk7CmV4dGVybiBzdHJ1Y3QgcGFnZSAqIGxv
b2t1cF9zd2FwX2NhY2hlKHN3cF9lbnRyeV90KTsKZXh0ZXJuIHN0cnVjdCBwYWdlICogcmVhZF9z
d2FwX2NhY2hlX2FzeW5jKHN3cF9lbnRyeV90KTsKCgpleHRlcm4gaW50IG91dF9vZl9tZW1vcnko
dm9pZCk7CmV4dGVybiB2b2lkIG9vbV9raWxsKHZvaWQpOwoKCmV4dGVybiBpbnQgdm1fc3dhcF9m
dWxsKHZvaWQpOwpleHRlcm4gdW5zaWduZWQgaW50IG5yX3N3YXBmaWxlczsKZXh0ZXJuIHN0cnVj
dCBzd2FwX2luZm9fc3RydWN0IHN3YXBfaW5mb1tdOwpleHRlcm4gaW50IGlzX3N3YXBfcGFydGl0
aW9uKGtkZXZfdCk7CmV4dGVybiB2b2lkIHNpX3N3YXBpbmZvKHN0cnVjdCBzeXNpbmZvICopOwpl
eHRlcm4gc3dwX2VudHJ5X3QgZ2V0X3N3YXBfcGFnZSh2b2lkKTsKZXh0ZXJuIHZvaWQgZ2V0X3N3
YXBoYW5kbGVfaW5mbyhzd3BfZW50cnlfdCwgdW5zaWduZWQgbG9uZyAqLCBrZGV2X3QgKiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqKik7CmV4
dGVybiBpbnQgc3dhcF9kdXBsaWNhdGUoc3dwX2VudHJ5X3QpOwpleHRlcm4gaW50IHN3YXBfY291
bnQoc3RydWN0IHBhZ2UgKik7CmV4dGVybiBpbnQgdmFsaWRfc3dhcGhhbmRsZXMoc3dwX2VudHJ5
X3QsIHVuc2lnbmVkIGxvbmcgKik7CmV4dGVybiB2b2lkIHN3YXBfZnJlZShzd3BfZW50cnlfdCk7
CnN0cnVjdCBzd2FwX2xpc3RfdCB7CiAgICAgICAgaW50IGhlYWQ7CiAgICAgICAgaW50IG5leHQ7
Cn07CmV4dGVybiBzdHJ1Y3Qgc3dhcF9saXN0X3Qgc3dhcF9saXN0OwogX19hdHRyaWJ1dGVfXygo
cmVncGFybSgwKSkpIGxvbmcgc3lzX3N3YXBvZmYoY29uc3QgY2hhciAqKTsKIF9fYXR0cmlidXRl
X18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zd2Fwb24oY29uc3QgY2hhciAqLCBpbnQpOwoKZXh0
ZXJuIHNwaW5sb2NrX3QgcGFnZW1hcF9scnVfbG9jazsKIyAyNTQgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9pbmNsdWRlL2xpbnV4L3N3YXAuaCIKc3RhdGljIGlubGluZSBpbnQgaW5hY3RpdmVfdGFy
Z2V0KHZvaWQpCnsKICAgICAgICBpZiAodm1fc3RhdGljX2luYWN0aXZlX3RhcmdldCkKICAgICAg
ICAgICAgICAgIHJldHVybiB2bV9zdGF0aWNfaW5hY3RpdmVfdGFyZ2V0OwoKICAgICAgICByZXR1
cm4gbnVtX3BoeXNwYWdlcyAvIDU7Cn0KIyAyNzkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNs
dWRlL2xpbnV4L3N3YXAuaCIKZXh0ZXJuIHNwaW5sb2NrX3Qgc3dhcGxvY2s7CgoKCgoKCmV4dGVy
biB2b2lkIHNobWVtX3VudXNlKHN3cF9lbnRyeV90IGVudHJ5LCBzdHJ1Y3QgcGFnZSAqcGFnZSk7
CiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L21tLmgiIDIKCmV4dGVy
biB1bnNpZ25lZCBsb25nIG1heF9tYXBucjsKZXh0ZXJuIHZvaWQgKiBoaWdoX21lbW9yeTsKZXh0
ZXJuIGludCBwYWdlX2NsdXN0ZXI7CgpleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBhY3RpdmVfbGlz
dDsKZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgaW5hY3RpdmVfZGlydHlfbGlzdDsKCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3BhZ2UuaCIgMQojIDIzICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9tbS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjEzL2luY2x1ZGUvYXNtL3BndGFibGUuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2lu
Y2x1ZGUvYXNtL3BndGFibGUuaCIgMgojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVk
ZS9hc20vcGd0YWJsZS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9w
cm9jZXNzb3IuaCIgMQojIDE3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vcGd0
YWJsZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL2ZpeG1hcC5o
IiAxCiMgMTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9maXhtYXAuaCIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDE3ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vZml4bWFwLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMQojIDE4ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvaW5jbHVkZS9hc20vZml4bWFwLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvaW5jbHVkZS9hc20vYXBpY2RlZi5oIiAxCiMgMTIyICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvaW5jbHVkZS9hc20vYXBpY2RlZi5oIgpzdHJ1Y3QgbG9jYWxfYXBpYyB7CgogICAgICAgIHN0
cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDE7CgogICAg
ICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDI7
CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZl
ZF8xIDogMjQsCiAgICAgICAgICAgICAgICAgICAgICAgIHBoeXNfYXBpY19pZCA6IDQsCiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDQ7CiAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgX19yZXNlcnZlZFszXTsKICAgICAgICB9IGlkOwoKICAgICAgICBjb25zdAogICAg
ICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmVyc2lvbiA6IDgsCiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDgsCiAgICAgICAgICAgICAgICAg
ICAgICAgIG1heF9sdnQgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIg
OiA4OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbM107CiAgICAgICAg
fSB2ZXJzaW9uOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsg
fSBfX3Jlc2VydmVkXzAzOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZl
ZFs0XTsgfSBfX3Jlc2VydmVkXzA0OwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19y
ZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzA1OwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBp
bnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzA2OwoKICAgICAgICBzdHJ1Y3QgewogICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IHByaW9yaXR5IDogOCwKICAgICAgICAgICAgICAgICAg
ICAgICAgX19yZXNlcnZlZF8xIDogMjQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19y
ZXNlcnZlZF8yWzNdOwogICAgICAgIH0gdHByOwoKICAgICAgICBjb25zdAogICAgICAgIHN0cnVj
dCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcHJpb3JpdHkgOiA4LAogICAgICAgICAg
ICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAyNDsKICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCBfX3Jlc2VydmVkXzJbM107CiAgICAgICAgfSBhcHI7CgogICAgICAgIGNvbnN0CiAgICAg
ICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwcmlvcml0eSA6IDgsCiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDI0OwogICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsKICAgICAgICB9IHBwcjsKCiAgICAgICAgc3Ry
dWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBlb2k7CiAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgX19yZXNlcnZlZFszXTsKICAgICAgICB9IGVvaTsKCiAgICAgICAgc3RydWN0
IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8wNzsKCiAgICAgICAg
c3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzEgOiAyNCwK
ICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNhbF9kZXN0IDogODsKICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107CiAgICAgICAgfSBsZHI7CgogICAgICAgIHN0
cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8xIDogMjgsCiAg
ICAgICAgICAgICAgICAgICAgICAgIG1vZGVsIDogNDsKICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCBfX3Jlc2VydmVkXzJbM107CiAgICAgICAgfSBkZnI7CgogICAgICAgIHN0cnVjdCB7CiAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc3B1cmlvdXNfdmVjdG9yIDogOCwKICAgICAgICAg
ICAgICAgICAgICAgICAgYXBpY19lbmFibGVkIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAg
Zm9jdXNfY3B1IDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogMjI7
CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8zWzNdOwogICAgICAgIH0g
c3ZyOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGJpdGZp
ZWxkOwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbM107CiAgICAgICAg
fSBpc3IgWzhdOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IGJpdGZpZWxkOwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbM107CiAg
ICAgICAgfSB0bXIgWzhdOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IGJpdGZpZWxkOwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRb
M107CiAgICAgICAgfSBpcnIgWzhdOwoKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBz
dHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2VuZF9jc19lcnJv
ciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZV9jc19lcnJvciA6
IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZF9hY2NlcHRfZXJyb3IgOiAx
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVfYWNjZXB0X2Vycm9yIDog
MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAxLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRfaWxsZWdhbF92ZWN0b3IgOiAxLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVfaWxsZWdhbF92ZWN0b3IgOiAxLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlsbGVnYWxfcmVnaXN0ZXJfYWRkcmVzcyA6
IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogMjQ7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzNbM107CiAgICAg
ICAgICAgICAgICB9IGVycm9yX2JpdHM7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXJyb3JzOwogICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8zWzNdOwogICAgICAgICAgICAgICAgfSBhbGxf
ZXJyb3JzOwogICAgICAgIH0gZXNyOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19y
ZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzA4OwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBp
bnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzA5OwoKICAgICAgICBzdHJ1Y3QgeyB1bnNp
Z25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzEwOwoKICAgICAgICBzdHJ1Y3Qg
eyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzExOwoKICAgICAgICBz
dHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzEyOwoKICAg
ICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzEz
OwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2Vy
dmVkXzE0OwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZl
Y3RvciA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X21vZGUgOiAzLAogICAg
ICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl9tb2RlIDogMSwKICAgICAgICAgICAgICAg
ICAgICAgICAgZGVsaXZlcnlfc3RhdHVzIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgX19y
ZXNlcnZlZF8xIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwgOiAxLAogICAgICAg
ICAgICAgICAgICAgICAgICB0cmlnZ2VyIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgX19y
ZXNlcnZlZF8yIDogMiwKICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnRoYW5kIDogMiwKICAg
ICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8zIDogMTI7CiAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgX19yZXNlcnZlZF80WzNdOwogICAgICAgIH0gaWNyMTsKCiAgICAgICAgc3Ry
dWN0IHsKICAgICAgICAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50IF9fcmVzZXJ2ZWRfMSA6IDI0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBoeXNfZGVzdCA6IDQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNl
cnZlZF8yIDogNDsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2
ZWRfMyA6IDI0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxfZGVzdCA6
IDg7CiAgICAgICAgICAgICAgICB9IGRlc3Q7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
X19yZXNlcnZlZF80WzNdOwogICAgICAgIH0gaWNyMjsKCiAgICAgICAgc3RydWN0IHsKICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCB2ZWN0b3IgOiA4LAogICAgICAgICAgICAgICAgICAgICAg
ICBfX3Jlc2VydmVkXzEgOiA0LAogICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVyeV9zdGF0
dXMgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAzLAogICAgICAg
ICAgICAgICAgICAgICAgICBtYXNrIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgdGltZXJf
bW9kZSA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMyA6IDE0OwogICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfNFszXTsKICAgICAgICB9IGx2dF90
aW1lcjsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19y
ZXNlcnZlZF8xNTsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCB2ZWN0b3IgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVyeV9tb2RlIDogMywK
ICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogMSwKICAgICAgICAgICAgICAg
ICAgICAgICAgZGVsaXZlcnlfc3RhdHVzIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgX19y
ZXNlcnZlZF8yIDogMywKICAgICAgICAgICAgICAgICAgICAgICAgbWFzayA6IDEsCiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMyA6IDE1OwogICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IF9fcmVzZXJ2ZWRfNFszXTsKICAgICAgICB9IGx2dF9wYzsKCiAgICAgICAgc3RydWN0
IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZWN0b3IgOiA4LAogICAgICAgICAgICAg
ICAgICAgICAgICBkZWxpdmVyeV9tb2RlIDogMywKICAgICAgICAgICAgICAgICAgICAgICAgX19y
ZXNlcnZlZF8xIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnlfc3RhdHVzIDog
MSwKICAgICAgICAgICAgICAgICAgICAgICAgcG9sYXJpdHkgOiAxLAogICAgICAgICAgICAgICAg
ICAgICAgICByZW1vdGVfaXJyIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlciA6
IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIG1hc2sgOiAxLAogICAgICAgICAgICAgICAgICAg
ICAgICBfX3Jlc2VydmVkXzIgOiAxNTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jl
c2VydmVkXzNbM107CiAgICAgICAgfSBsdnRfbGludDA7CgogICAgICAgIHN0cnVjdCB7CiAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmVjdG9yIDogOCwKICAgICAgICAgICAgICAgICAgICAg
ICAgZGVsaXZlcnlfbW9kZSA6IDMsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRf
MSA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCiAgICAg
ICAgICAgICAgICAgICAgICAgIHBvbGFyaXR5IDogMSwKICAgICAgICAgICAgICAgICAgICAgICAg
cmVtb3RlX2lyciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIgOiAxLAogICAg
ICAgICAgICAgICAgICAgICAgICBtYXNrIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgX19y
ZXNlcnZlZF8yIDogMTU7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8z
WzNdOwogICAgICAgIH0gbHZ0X2xpbnQxOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IHZlY3RvciA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVz
ZXJ2ZWRfMSA6IDQsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEs
CiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDMsCiAgICAgICAgICAgICAg
ICAgICAgICAgIG1hc2sgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzMg
OiAxNTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzRbM107CiAgICAg
ICAgfSBsdnRfZXJyb3I7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgaW5pdGlhbF9jb3VudDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2Vy
dmVkXzJbM107CiAgICAgICAgfSB0aW1lcl9pY3I7CgogICAgICAgIGNvbnN0CiAgICAgICAgc3Ry
dWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjdXJyX2NvdW50OwogICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsKICAgICAgICB9IHRpbWVyX2NjcjsK
CiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZl
ZF8xNjsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19y
ZXNlcnZlZF8xNzsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07
IH0gX19yZXNlcnZlZF8xODsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2
ZWRbNF07IH0gX19yZXNlcnZlZF8xOTsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBkaXZpc29yIDogNCwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNl
cnZlZF8xIDogMjg7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8yWzNd
OwogICAgICAgIH0gdGltZXJfZGNyOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19y
ZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzIwOwoKfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7
CiMgMTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9maXhtYXAuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9wYWdlLmgiIDEKIyAyMCAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIiAyCiMgNTAgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9maXhtYXAuaCIKZW51bSBmaXhlZF9hZGRyZXNzZXMgewoK
ICAgICAgICBGSVhfQVBJQ19CQVNFLAoKCiAgICAgICAgRklYX0lPX0FQSUNfQkFTRV8wLAogICAg
ICAgIEZJWF9JT19BUElDX0JBU0VfRU5EID0gRklYX0lPX0FQSUNfQkFTRV8wICsgOCAtMSwKIyA2
OCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIgogICAgICAgIF9f
ZW5kX29mX2ZpeGVkX2FkZHJlc3Nlcwp9OwoKZXh0ZXJuIHZvaWQgX19zZXRfZml4bWFwIChlbnVt
IGZpeGVkX2FkZHJlc3NlcyBpZHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBsb25nIHBoeXMsIHBncHJvdF90IGZsYWdzKTsKIyA5NCAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIgpleHRlcm4gdm9pZCBfX3RoaXNfZml4
bWFwX2RvZXNfbm90X2V4aXN0KHZvaWQpOwoKCgoKCgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxv
bmcgZml4X3RvX3ZpcnQoY29uc3QgdW5zaWduZWQgaW50IGlkeCkKewojIDExMiAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIgogICAgICAgIGlmIChpZHggPj0gX19l
bmRfb2ZfZml4ZWRfYWRkcmVzc2VzKQogICAgICAgICAgICAgICAgX190aGlzX2ZpeG1hcF9kb2Vz
X25vdF9leGlzdCgpOwoKICAgICAgICByZXR1cm4gKCgweGZmZmZlMDAwVUwpIC0gKChpZHgpIDw8
IDEyKSk7Cn0KIyAxOCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3BndGFibGUu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3RocmVhZHMuaCIg
MQojIDE5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vcGd0YWJsZS5oIiAyCgoK
CgoKZXh0ZXJuIHBnZF90IHN3YXBwZXJfcGdfZGlyWzEwMjRdOwpleHRlcm4gdm9pZCBwYWdpbmdf
aW5pdCh2b2lkKTsKIyA2NyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3BndGFi
bGUuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcGdrZXJuX21hc2s7CiMgOTUgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIGVt
cHR5X3plcm9fcGFnZVsxMDI0XTsKIyAxMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRl
L2FzbS9wZ3RhYmxlLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3Bn
dGFibGUtMmxldmVsLmgiIDEKIyAzMiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNt
L3BndGFibGUtMmxldmVsLmgiCnN0YXRpYyBpbmxpbmUgaW50IHBnZF9ub25lKHBnZF90IHBnZCkg
eyByZXR1cm4gMDsgfQpzdGF0aWMgaW5saW5lIGludCBwZ2RfYmFkKHBnZF90IHBnZCkgeyByZXR1
cm4gMDsgfQpzdGF0aWMgaW5saW5lIGludCBwZ2RfcHJlc2VudChwZ2RfdCBwZ2QpIHsgcmV0dXJu
IDE7IH0KIyA1MyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3BndGFibGUtMmxl
dmVsLmgiCnN0YXRpYyBpbmxpbmUgcG1kX3QgKiBwbWRfb2Zmc2V0KHBnZF90ICogZGlyLCB1bnNp
Z25lZCBsb25nIGFkZHJlc3MpCnsKICAgICAgICByZXR1cm4gKHBtZF90ICopIGRpcjsKfQojIDEx
NiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3BndGFibGUuaCIgMgojIDI1NiAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3BndGFibGUuaCIKZXh0ZXJuIHVuc2ln
bmVkIGxvbmcgcGcwWzEwMjRdOwojIDI3NyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUv
YXNtL3BndGFibGUuaCIKc3RhdGljIGlubGluZSBpbnQgcHRlX3JlYWQocHRlX3QgcHRlKSB7IHJl
dHVybiAocHRlKS5wdGVfbG93ICYgMHgwMDQ7IH0Kc3RhdGljIGlubGluZSBpbnQgcHRlX2V4ZWMo
cHRlX3QgcHRlKSB7IHJldHVybiAocHRlKS5wdGVfbG93ICYgMHgwMDQ7IH0Kc3RhdGljIGlubGlu
ZSBpbnQgcHRlX2RpcnR5KHB0ZV90IHB0ZSkgeyByZXR1cm4gKHB0ZSkucHRlX2xvdyAmIDB4MDQw
OyB9CnN0YXRpYyBpbmxpbmUgaW50IHB0ZV95b3VuZyhwdGVfdCBwdGUpIHsgcmV0dXJuIChwdGUp
LnB0ZV9sb3cgJiAweDAyMDsgfQpzdGF0aWMgaW5saW5lIGludCBwdGVfd3JpdGUocHRlX3QgcHRl
KSB7IHJldHVybiAocHRlKS5wdGVfbG93ICYgMHgwMDI7IH0KCnN0YXRpYyBpbmxpbmUgcHRlX3Qg
cHRlX3JkcHJvdGVjdChwdGVfdCBwdGUpIHsgKHB0ZSkucHRlX2xvdyAmPSB+MHgwMDQ7IHJldHVy
biBwdGU7IH0Kc3RhdGljIGlubGluZSBwdGVfdCBwdGVfZXhwcm90ZWN0KHB0ZV90IHB0ZSkgeyAo
cHRlKS5wdGVfbG93ICY9IH4weDAwNDsgcmV0dXJuIHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0ZV90
IHB0ZV9ta2NsZWFuKHB0ZV90IHB0ZSkgeyAocHRlKS5wdGVfbG93ICY9IH4weDA0MDsgcmV0dXJu
IHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9ta29sZChwdGVfdCBwdGUpIHsgKHB0ZSku
cHRlX2xvdyAmPSB+MHgwMjA7IHJldHVybiBwdGU7IH0Kc3RhdGljIGlubGluZSBwdGVfdCBwdGVf
d3Jwcm90ZWN0KHB0ZV90IHB0ZSkgeyAocHRlKS5wdGVfbG93ICY9IH4weDAwMjsgcmV0dXJuIHB0
ZTsgfQpzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9ta3JlYWQocHRlX3QgcHRlKSB7IChwdGUpLnB0
ZV9sb3cgfD0gMHgwMDQ7IHJldHVybiBwdGU7IH0Kc3RhdGljIGlubGluZSBwdGVfdCBwdGVfbWtl
eGVjKHB0ZV90IHB0ZSkgeyAocHRlKS5wdGVfbG93IHw9IDB4MDA0OyByZXR1cm4gcHRlOyB9CnN0
YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21rZGlydHkocHRlX3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cg
fD0gMHgwNDA7IHJldHVybiBwdGU7IH0Kc3RhdGljIGlubGluZSBwdGVfdCBwdGVfbWt5b3VuZyhw
dGVfdCBwdGUpIHsgKHB0ZSkucHRlX2xvdyB8PSAweDAyMDsgcmV0dXJuIHB0ZTsgfQpzdGF0aWMg
aW5saW5lIHB0ZV90IHB0ZV9ta3dyaXRlKHB0ZV90IHB0ZSkgeyAocHRlKS5wdGVfbG93IHw9IDB4
MDAyOyByZXR1cm4gcHRlOyB9CgpzdGF0aWMgaW5saW5lIGludCBwdGVwX3Rlc3RfYW5kX2NsZWFy
X2RpcnR5KHB0ZV90ICpwdGVwKSB7IHJldHVybiB0ZXN0X2FuZF9jbGVhcl9iaXQoNiwgcHRlcCk7
IH0Kc3RhdGljIGlubGluZSBpbnQgcHRlcF90ZXN0X2FuZF9jbGVhcl95b3VuZyhwdGVfdCAqcHRl
cCkgeyByZXR1cm4gdGVzdF9hbmRfY2xlYXJfYml0KDUsIHB0ZXApOyB9CnN0YXRpYyBpbmxpbmUg
dm9pZCBwdGVwX3NldF93cnByb3RlY3QocHRlX3QgKnB0ZXApIHsgY2xlYXJfYml0KDEsIHB0ZXAp
OyB9CnN0YXRpYyBpbmxpbmUgdm9pZCBwdGVwX21rZGlydHkocHRlX3QgKnB0ZXApIHsgc2V0X2Jp
dCg2LCBwdGVwKTsgfQojIDMwOSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3Bn
dGFibGUuaCIKc3RhdGljIGlubGluZSBwdGVfdCBwdGVfbW9kaWZ5KHB0ZV90IHB0ZSwgcGdwcm90
X3QgbmV3cHJvdCkKewogICAgICAgIHB0ZS5wdGVfbG93ICY9ICgofigoMVVMIDw8IDEyKS0xKSkg
fCAweDAyMCB8IDB4MDQwKTsKICAgICAgICBwdGUucHRlX2xvdyB8PSAoKG5ld3Byb3QpLnBncHJv
dCk7CiAgICAgICAgcmV0dXJuIHB0ZTsKfQojIDI0ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5j
bHVkZS9saW51eC9tbS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNt
L2F0b21pYy5oIiAxCiMgMjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L21t
LmgiIDIKIyA0MSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvbW0uaCIKc3Ry
dWN0IHZtX2FyZWFfc3RydWN0IHsKICAgICAgICBzdHJ1Y3QgbW1fc3RydWN0ICogdm1fbW07CiAg
ICAgICAgdW5zaWduZWQgbG9uZyB2bV9zdGFydDsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtX2Vu
ZDsKCgoKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtX25leHQ7CgogICAgICAgIHBn
cHJvdF90IHZtX3BhZ2VfcHJvdDsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtX2ZsYWdzOwoKCiAg
ICAgICAgc2hvcnQgdm1fYXZsX2hlaWdodDsKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg
KiB2bV9hdmxfbGVmdDsKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bV9hdmxfcmln
aHQ7CgoKCgoKCiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bV9uZXh0X3NoYXJlOwog
ICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKnZtX3BwcmV2X3NoYXJlOwoKCiAgICAgICAg
c3RydWN0IHZtX29wZXJhdGlvbnNfc3RydWN0ICogdm1fb3BzOwoKCiAgICAgICAgdW5zaWduZWQg
bG9uZyB2bV9wZ29mZjsKCiAgICAgICAgc3RydWN0IGZpbGUgKiB2bV9maWxlOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgdm1fcmFlbmQ7CiAgICAgICAgdm9pZCAqIHZtX3ByaXZhdGVfZGF0YTsKfTsK
IyAxMTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L21tLmgiCmV4dGVybiBp
bnQgdm1fbWluX3JlYWRhaGVhZDsKZXh0ZXJuIGludCB2bV9tYXhfcmVhZGFoZWFkOwoKCgoKCmV4
dGVybiBwZ3Byb3RfdCBwcm90ZWN0aW9uX21hcFsxNl07CgoKCgoKCgpzdHJ1Y3Qgdm1fb3BlcmF0
aW9uc19zdHJ1Y3QgewogICAgICAgIHZvaWQgKCpvcGVuKShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg
KiBhcmVhKTsKICAgICAgICB2b2lkICgqY2xvc2UpKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIGFy
ZWEpOwogICAgICAgIHN0cnVjdCBwYWdlICogKCpub3BhZ2UpKHN0cnVjdCB2bV9hcmVhX3N0cnVj
dCAqIGFyZWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgaW50IHdyaXRlX2FjY2Vzcyk7Cn07CiMg
MTUyICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9tbS5oIgp0eXBlZGVmIHN0
cnVjdCBwYWdlIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CiAgICAgICAgc3RydWN0
IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmc7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpbmRleDsKCiAg
ICAgICAgc3RydWN0IHBhZ2UgKm5leHRfaGFzaDsKCiAgICAgICAgYXRvbWljX3QgY291bnQ7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBscnU7
CgogICAgICAgIHVuc2lnbmVkIGxvbmcgYWdlOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHdh
aXQ7CiAgICAgICAgc3RydWN0IHBhZ2UgKipwcHJldl9oYXNoOwogICAgICAgIHN0cnVjdCBidWZm
ZXJfaGVhZCAqIGJ1ZmZlcnM7CiAgICAgICAgdm9pZCAqdmlydHVhbDsKCiAgICAgICAgc3RydWN0
IHpvbmVfc3RydWN0ICp6b25lOwp9IG1lbV9tYXBfdDsKIyAzMDYgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9pbmNsdWRlL2xpbnV4L21tLmgiCmV4dGVybiB2b2lkIF9fc2V0X3BhZ2VfZGlydHkoc3Ry
dWN0IHBhZ2UgKik7CgpzdGF0aWMgaW5saW5lIHZvaWQgc2V0X3BhZ2VfZGlydHkoc3RydWN0IHBh
Z2UgKiBwYWdlKQp7CiAgICAgICAgaWYgKCF0ZXN0X2FuZF9zZXRfYml0KDQsICZwYWdlLT5mbGFn
cykpCiAgICAgICAgICAgICAgICBfX3NldF9wYWdlX2RpcnR5KHBhZ2UpOwp9CiMgMzY2ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9tbS5oIgpzdGF0aWMgaW5saW5lIHZvaWQg
dG91Y2hfcGFnZShzdHJ1Y3QgcGFnZSAqIHBhZ2UpCnsKICAgICAgICBpZiAoKF9fYnVpbHRpbl9j
b25zdGFudF9wKDExKSA/IGNvbnN0YW50X3Rlc3RfYml0KCgxMSksKCYocGFnZSktPmZsYWdzKSkg
OiB2YXJpYWJsZV90ZXN0X2JpdCgoMTEpLCgmKHBhZ2UpLT5mbGFncykpKSkKICAgICAgICAgICAg
ICAgIGFjdGl2YXRlX3BhZ2UocGFnZSk7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgc2V0
X2JpdCgyLCAmKHBhZ2UpLT5mbGFncyk7Cn0KIyAzODEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9p
bmNsdWRlL2xpbnV4L21tLmgiCmV4dGVybiBtZW1fbWFwX3QgKiBtZW1fbWFwOwoKCgoKCgoKZXh0
ZXJuIHN0cnVjdCBwYWdlICogX2FsbG9jX3BhZ2VzKHVuc2lnbmVkIGludCBnZnBfbWFzaywgdW5z
aWduZWQgbG9uZyBvcmRlcikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gc3Ry
dWN0IHBhZ2UgKiBfX2FsbG9jX3BhZ2VzKHVuc2lnbmVkIGludCBnZnBfbWFzaywgdW5zaWduZWQg
bG9uZyBvcmRlciwgem9uZWxpc3RfdCAqem9uZWxpc3QpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o
MykpKTsKZXh0ZXJuIHN0cnVjdCBwYWdlICogYWxsb2NfcGFnZXNfbm9kZShpbnQgbmlkLCBpbnQg
Z2ZwX21hc2ssIHVuc2lnbmVkIGxvbmcgb3JkZXIpOwoKc3RhdGljIGlubGluZSBzdHJ1Y3QgcGFn
ZSAqIGFsbG9jX3BhZ2VzKGludCBnZnBfbWFzaywgdW5zaWduZWQgbG9uZyBvcmRlcikKewoKCgog
ICAgICAgIGlmIChvcmRlciA+PSAxMCkKICAgICAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikw
KTsKICAgICAgICByZXR1cm4gX2FsbG9jX3BhZ2VzKGdmcF9tYXNrLCBvcmRlcik7Cn0KCgoKZXh0
ZXJuIHVuc2lnbmVkIGxvbmcgX19nZXRfZnJlZV9wYWdlcyhpbnQgZ2ZwX21hc2ssIHVuc2lnbmVk
IGxvbmcgb3JkZXIpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHVuc2lnbmVk
IGxvbmcgZ2V0X3plcm9lZF9wYWdlKGludCBnZnBfbWFzaykgX19hdHRyaWJ1dGVfXygocmVncGFy
bSgzKSkpOwojIDQyMiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvbW0uaCIK
ZXh0ZXJuIHZvaWQgX19mcmVlX3BhZ2VzKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25n
IG9yZGVyKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIGZyZWVfcGFn
ZXModW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIG9yZGVyKSBfX2F0dHJpYnV0ZV9f
KChyZWdwYXJtKDMpKSk7CgoKCgpleHRlcm4gdm9pZCBzaG93X2ZyZWVfYXJlYXModm9pZCk7CmV4
dGVybiB2b2lkIHNob3dfZnJlZV9hcmVhc19ub2RlKHBnX2RhdGFfdCAqcGdkYXQpOwoKZXh0ZXJu
IHZvaWQgY2xlYXJfcGFnZV90YWJsZXMoc3RydWN0IG1tX3N0cnVjdCAqLCB1bnNpZ25lZCBsb25n
LCBpbnQpOwoKc3RydWN0IHBhZ2UgKiBzaG1lbV9ub3BhZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0
ICogdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIGludCBub19zaGFyZSk7CnN0cnVjdCBmaWxl
ICpzaG1lbV9maWxlX3NldHVwKGNoYXIgKiBuYW1lLCBsb2ZmX3Qgc2l6ZSk7CmV4dGVybiB2b2lk
IHNobWVtX2xvY2soc3RydWN0IGZpbGUgKiBmaWxlLCBpbnQgbG9jayk7CmV4dGVybiBpbnQgc2ht
ZW1femVyb19zZXR1cChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7CgpleHRlcm4gdm9pZCB6YXBf
cGFnZV9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCB1
bnNpZ25lZCBsb25nIHNpemUpOwpleHRlcm4gdm9pZCB6YXBfaW5vZGVfbWFwcGluZyhzdHJ1Y3Qg
YWRkcmVzc19zcGFjZSAqbWFwcGluZyk7CmV4dGVybiBpbnQgY29weV9wYWdlX3JhbmdlKHN0cnVj
dCBtbV9zdHJ1Y3QgKmRzdCwgc3RydWN0IG1tX3N0cnVjdCAqc3JjLCBzdHJ1Y3Qgdm1fYXJlYV9z
dHJ1Y3QgKnZtYSk7CmV4dGVybiBpbnQgcmVtYXBfcGFnZV9yYW5nZSh1bnNpZ25lZCBsb25nIGZy
b20sIHVuc2lnbmVkIGxvbmcgdG8sIHVuc2lnbmVkIGxvbmcgc2l6ZSwgcGdwcm90X3QgcHJvdCk7
CmV4dGVybiBpbnQgemVyb21hcF9wYWdlX3JhbmdlKHVuc2lnbmVkIGxvbmcgZnJvbSwgdW5zaWdu
ZWQgbG9uZyBzaXplLCBwZ3Byb3RfdCBwcm90KTsKCmV4dGVybiBpbnQgdm10cnVuY2F0ZShzdHJ1
Y3QgaW5vZGUgKiBpbm9kZSwgbG9mZl90IG9mZnNldCk7CmV4dGVybiBwbWRfdCAqX19wbWRfYWxs
b2Moc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QsIHVuc2lnbmVkIGxvbmcgYWRkcmVz
cykgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gcHRlX3QgKnB0ZV9hbGxvYyhz
dHJ1Y3QgbW1fc3RydWN0ICptbSwgcG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyZXNzKSBf
X2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBpbnQgaGFuZGxlX21tX2ZhdWx0KHN0
cnVjdCBtbV9zdHJ1Y3QgKm1tLHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBs
b25nIGFkZHJlc3MsIGludCB3cml0ZV9hY2Nlc3MpOwpleHRlcm4gaW50IG1ha2VfcGFnZXNfcHJl
c2VudCh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kKTsKZXh0ZXJuIGludCBh
Y2Nlc3NfcHJvY2Vzc192bShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgdW5zaWduZWQgbG9uZyBh
ZGRyLCB2b2lkICpidWYsIGludCBsZW4sIGludCB3cml0ZSk7CmV4dGVybiBpbnQgcHRyYWNlX3Jl
YWRkYXRhKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCB1bnNpZ25lZCBsb25nIHNyYywgY2hhciAq
ZHN0LCBpbnQgbGVuKTsKZXh0ZXJuIGludCBwdHJhY2Vfd3JpdGVkYXRhKHN0cnVjdCB0YXNrX3N0
cnVjdCAqdHNrLCBjaGFyICogc3JjLCB1bnNpZ25lZCBsb25nIGRzdCwgaW50IGxlbik7CmV4dGVy
biBpbnQgcHRyYWNlX2F0dGFjaChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayk7CmV4dGVybiBpbnQg
cHRyYWNlX2RldGFjaChzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgdW5zaWduZWQgaW50KTsKZXh0ZXJu
IHZvaWQgcHRyYWNlX2Rpc2FibGUoc3RydWN0IHRhc2tfc3RydWN0ICopOwoKaW50IGdldF91c2Vy
X3BhZ2VzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5z
aWduZWQgbG9uZyBzdGFydCwKICAgICAgICAgICAgICAgIGludCBsZW4sIGludCB3cml0ZSwgaW50
IGZvcmNlLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKip2bWFz
KTsKIyA0NjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L21tLmgiCnN0YXRp
YyBpbmxpbmUgcG1kX3QgKnBtZF9hbGxvYyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBn
ZCwgdW5zaWduZWQgbG9uZyBhZGRyZXNzKQp7CiAgICAgICAgaWYgKCFwZ2RfcHJlc2VudCgqcGdk
KSkKICAgICAgICAgICAgICAgIHJldHVybiBfX3BtZF9hbGxvYyhtbSwgcGdkLCBhZGRyZXNzKTsK
ICAgICAgICByZXR1cm4gcG1kX29mZnNldChwZ2QsIGFkZHJlc3MpOwp9CgpleHRlcm4gaW50IHBn
dF9jYWNoZV93YXRlclsyXTsKZXh0ZXJuIGludCBjaGVja19wZ3RfY2FjaGUodm9pZCk7CgpleHRl
cm4gdm9pZCBmcmVlX2FyZWFfaW5pdCh1bnNpZ25lZCBsb25nICogem9uZXNfc2l6ZSk7CmV4dGVy
biB2b2lkIGZyZWVfYXJlYV9pbml0X25vZGUoaW50IG5pZCwgcGdfZGF0YV90ICpwZ2RhdCwgc3Ry
dWN0IHBhZ2UgKnBtYXAsCiAgICAgICAgdW5zaWduZWQgbG9uZyAqIHpvbmVzX3NpemUsIHVuc2ln
bmVkIGxvbmcgem9uZV9zdGFydF9wYWRkciwKICAgICAgICB1bnNpZ25lZCBsb25nICp6aG9sZXNf
c2l6ZSk7CmV4dGVybiB2b2lkIG1lbV9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBzaG93X21lbSh2
b2lkKTsKZXh0ZXJuIHZvaWQgc2lfbWVtaW5mbyhzdHJ1Y3Qgc3lzaW5mbyAqIHZhbCk7CmV4dGVy
biB2b2lkIHN3YXBpbl9yZWFkYWhlYWQoc3dwX2VudHJ5X3QpOwoKZXh0ZXJuIHN0cnVjdCBhZGRy
ZXNzX3NwYWNlIHN3YXBwZXJfc3BhY2U7CgoKCgoKCnN0YXRpYyBpbmxpbmUgaW50IGV4Y2x1c2l2
ZV9zd2FwX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UpCnsKICAgICAgICBpZiAoIShfX2J1aWx0aW5f
Y29uc3RhbnRfcCgwKSA/IGNvbnN0YW50X3Rlc3RfYml0KCgwKSwoJihwYWdlKS0+ZmxhZ3MpKSA6
IHZhcmlhYmxlX3Rlc3RfYml0KCgwKSwoJihwYWdlKS0+ZmxhZ3MpKSkpCiAgICAgICAgICAgICAg
ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiLmJ5dGUgMHgwZiwweDBiIik7CiAgICAgICAgaWYgKCEo
KHBhZ2UpLT5tYXBwaW5nID09ICZzd2FwcGVyX3NwYWNlKSkKICAgICAgICAgICAgICAgIHJldHVy
biAwOwogICAgICAgIGlmICgoKCYocGFnZSktPmNvdW50KS0+Y291bnRlcikgLSAhIXBhZ2UtPmJ1
ZmZlcnMgIT0gMikKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIHJldHVybiBzd2Fw
X2NvdW50KHBhZ2UpID09IDE7Cn0KCgoKc3RhdGljIGlubGluZSB2b2lkIF9fZnJlZV9wdGUocHRl
X3QgcHRlKQp7CiAgICAgICAgc3RydWN0IHBhZ2UgKnBhZ2UgPSAobWVtX21hcCsoKHVuc2lnbmVk
IGxvbmcpKCgocHRlKS5wdGVfbG93ID4+IDEyKSkpKTsKICAgICAgICBpZiAoKCEoKHBhZ2UgLSBt
ZW1fbWFwKSA8IG1heF9tYXBucikpIHx8IChfX2J1aWx0aW5fY29uc3RhbnRfcCgzMSkgPyBjb25z
dGFudF90ZXN0X2JpdCgoMzEpLCgmKHBhZ2UpLT5mbGFncykpIDogdmFyaWFibGVfdGVzdF9iaXQo
KDMxKSwoJihwYWdlKS0+ZmxhZ3MpKSkpCiAgICAgICAgICAgICAgICByZXR1cm47CgoKCgogICAg
ICAgIGlmIChwdGVfZGlydHkocHRlKSAmJiBwYWdlLT5tYXBwaW5nKQogICAgICAgICAgICAgICAg
c2V0X3BhZ2VfZGlydHkocGFnZSk7CiAgICAgICAgZnJlZV9wYWdlX2FuZF9zd2FwX2NhY2hlKHBh
Z2UpOwp9CgoKZXh0ZXJuIHZvaWQgbG9ja192bWFfbWFwcGluZ3Moc3RydWN0IHZtX2FyZWFfc3Ry
dWN0ICopOwpleHRlcm4gdm9pZCB1bmxvY2tfdm1hX21hcHBpbmdzKHN0cnVjdCB2bV9hcmVhX3N0
cnVjdCAqKTsKZXh0ZXJuIHZvaWQgaW5zZXJ0X3ZtX3N0cnVjdChzdHJ1Y3QgbW1fc3RydWN0ICos
IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQgX19pbnNlcnRfdm1fc3RydWN0
KHN0cnVjdCBtbV9zdHJ1Y3QgKiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOwpleHRlcm4gdm9p
ZCBidWlsZF9tbWFwX2F2bChzdHJ1Y3QgbW1fc3RydWN0ICopOwpleHRlcm4gdm9pZCBleGl0X21t
YXAoc3RydWN0IG1tX3N0cnVjdCAqKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGdldF91bm1hcHBl
ZF9hcmVhKHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2ln
bmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZG9fbW1hcF9w
Z29mZihzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgbG9uZyBhZGRyLAogICAgICAgIHVuc2ln
bmVkIGxvbmcgbGVuLCB1bnNpZ25lZCBsb25nIHByb3QsCiAgICAgICAgdW5zaWduZWQgbG9uZyBm
bGFnLCB1bnNpZ25lZCBsb25nIHBnb2ZmKTsKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBk
b19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBsb25nIGFkZHIsCiAgICAgICAgdW5z
aWduZWQgbG9uZyBsZW4sIHVuc2lnbmVkIGxvbmcgcHJvdCwKICAgICAgICB1bnNpZ25lZCBsb25n
IGZsYWcsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyByZXQg
PSAtMjI7CiAgICAgICAgaWYgKChvZmZzZXQgKyAoKChsZW4pKygxVUwgPDwgMTIpLTEpJih+KCgx
VUwgPDwgMTIpLTEpKSkpIDwgb2Zmc2V0KQogICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAg
ICAgaWYgKCEob2Zmc2V0ICYgfih+KCgxVUwgPDwgMTIpLTEpKSkpCiAgICAgICAgICAgICAgICBy
ZXQgPSBkb19tbWFwX3Bnb2ZmKGZpbGUsIGFkZHIsIGxlbiwgcHJvdCwgZmxhZywgb2Zmc2V0ID4+
IDEyKTsKb3V0OgogICAgICAgIHJldHVybiByZXQ7Cn0KCmV4dGVybiBpbnQgZG9fbXVubWFwKHN0
cnVjdCBtbV9zdHJ1Y3QgKiwgdW5zaWduZWQgbG9uZywgc2l6ZV90KTsKCmV4dGVybiB1bnNpZ25l
ZCBsb25nIGRvX2Jyayh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKZXh0ZXJuIHZvaWQg
bWVyZ2VfYW5vbl92bWFzKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0
LCB1bnNpZ25lZCBsb25nIGVuZCk7CgpzdHJ1Y3Qgem9uZV90OwoKZXh0ZXJuIHZvaWQgcmVtb3Zl
X2lub2RlX3BhZ2Uoc3RydWN0IHBhZ2UgKik7CmV4dGVybiB1bnNpZ25lZCBsb25nIHBhZ2VfdW51
c2Uoc3RydWN0IHBhZ2UgKik7CmV4dGVybiB2b2lkIHRydW5jYXRlX2lub2RlX3BhZ2VzKHN0cnVj
dCBhZGRyZXNzX3NwYWNlICosIGxvZmZfdCk7CgoKZXh0ZXJuIGludCBmaWxlbWFwX3N5bmMoc3Ry
dWN0IHZtX2FyZWFfc3RydWN0ICosIHVuc2lnbmVkIGxvbmcsIHNpemVfdCwgdW5zaWduZWQgaW50
KTsKZXh0ZXJuIHN0cnVjdCBwYWdlICpmaWxlbWFwX25vcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1
Y3QgKiwgdW5zaWduZWQgbG9uZywgaW50KTsKIyA1OTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9p
bmNsdWRlL2xpbnV4L21tLmgiCnN0YXRpYyBpbmxpbmUgaW50IGV4cGFuZF9zdGFjayhzdHJ1Y3Qg
dm1fYXJlYV9zdHJ1Y3QgKiB2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKewogICAgICAgIHVu
c2lnbmVkIGxvbmcgZ3JvdzsKCiAgICAgICAgZG8geyBkbyB7ICsrZ2V0X2N1cnJlbnQoKS0+cHJl
ZW1wdF9jb3VudDsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgfSB3aGls
ZSAoMCk7ICh2b2lkKSgmdm1hLT52bV9tbS0+cGFnZV90YWJsZV9sb2NrKTsgfSB3aGlsZSgwKTsK
ICAgICAgICBhZGRyZXNzICY9ICh+KCgxVUwgPDwgMTIpLTEpKTsKICAgICAgICBncm93ID0gKHZt
YS0+dm1fc3RhcnQgLSBhZGRyZXNzKSA+PiAxMjsKICAgICAgICBpZiAodm1hLT52bV9lbmQgLSBh
ZGRyZXNzID4gZ2V0X2N1cnJlbnQoKS0+cmxpbVszXS5ybGltX2N1ciB8fAogICAgICAgICAgICAo
KHZtYS0+dm1fbW0tPnRvdGFsX3ZtICsgZ3JvdykgPDwgMTIpID4gZ2V0X2N1cnJlbnQoKS0+cmxp
bVs5XS5ybGltX2N1cikgewogICAgICAgICAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IGRv
IHsgLS1nZXRfY3VycmVudCgpLT5wcmVlbXB0X2NvdW50OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygi
IjogOiA6Im1lbW9yeSIpOyBpZiAoKGdldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQgPT0gMCkg
JiYgZ2V0X2N1cnJlbnQoKS0+bmVlZF9yZXNjaGVkKSBwcmVlbXB0X3NjaGVkdWxlKCk7IH0gd2hp
bGUgKDApOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgIHJldHVybiAtMTI7CiAgICAgICAg
fQogICAgICAgIHZtYS0+dm1fc3RhcnQgPSBhZGRyZXNzOwogICAgICAgIHZtYS0+dm1fcGdvZmYg
LT0gZ3JvdzsKICAgICAgICB2bWEtPnZtX21tLT50b3RhbF92bSArPSBncm93OwogICAgICAgIGlm
ICh2bWEtPnZtX2ZsYWdzICYgMHgwMDAwMjAwMCkKICAgICAgICAgICAgICAgIHZtYS0+dm1fbW0t
PmxvY2tlZF92bSArPSBncm93OwogICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBkbyB7IC0t
Z2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9jb3VudDsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDog
OiJtZW1vcnkiKTsgaWYgKChnZXRfY3VycmVudCgpLT5wcmVlbXB0X2NvdW50ID09IDApICYmIGdl
dF9jdXJyZW50KCktPm5lZWRfcmVzY2hlZCkgcHJlZW1wdF9zY2hlZHVsZSgpOyB9IHdoaWxlICgw
KTsgfSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIDA7Cn0KCgpleHRlcm4gc3RydWN0IHZtX2Fy
ZWFfc3RydWN0ICogZmluZF92bWEoc3RydWN0IG1tX3N0cnVjdCAqIG1tLCB1bnNpZ25lZCBsb25n
IGFkZHIpOwpleHRlcm4gc3RydWN0IHZtX2FyZWFfc3RydWN0ICogZmluZF92bWFfcHJldihzdHJ1
Y3QgbW1fc3RydWN0ICogbW0sIHVuc2lnbmVkIGxvbmcgYWRkciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICoqcHByZXYp
OwoKCgpzdGF0aWMgaW5saW5lIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIGZpbmRfdm1hX2ludGVy
c2VjdGlvbihzdHJ1Y3QgbW1fc3RydWN0ICogbW0sIHVuc2lnbmVkIGxvbmcgc3RhcnRfYWRkciwg
dW5zaWduZWQgbG9uZyBlbmRfYWRkcikKewogICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq
IHZtYSA9IGZpbmRfdm1hKG1tLHN0YXJ0X2FkZHIpOwoKICAgICAgICBpZiAodm1hICYmIGVuZF9h
ZGRyIDw9IHZtYS0+dm1fc3RhcnQpCiAgICAgICAgICAgICAgICB2bWEgPSAoKHZvaWQgKikwKTsK
ICAgICAgICByZXR1cm4gdm1hOwp9CgpleHRlcm4gc3RydWN0IHZtX2FyZWFfc3RydWN0ICpmaW5k
X2V4dGVuZF92bWEoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcik7CiMg
MjQgImtlcm5lbC9zY2hlZC5jIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUv
bGludXgvaW5pdC5oIiAxCiMgMjUgImtlcm5lbC9zY2hlZC5jIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvbGludXgvc21wX2xvY2suaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2luY2x1ZGUvbGludXgvc21wX2xvY2suaCIgMgojIDE2ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvaW5jbHVkZS9saW51eC9zbXBfbG9jay5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9pbmNsdWRlL2FzbS9zbXBsb2NrLmgiIDEKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oIiAxCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNiAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
aW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMQojIDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNs
dWRlL2xpbnV4L2ludGVycnVwdC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1
ZGUvbGludXgvc21wLmgiIDEKIyA4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51
eC9pbnRlcnJ1cHQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4
L2NhY2hlLmgiIDEKIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9pbnRl
cnJ1cHQuaCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vYml0b3Bz
LmgiIDEKIyAxMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvaW50ZXJydXB0
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEK
IyAxMiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vcHRyYWNlLmgiIDEKIyAxMyAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiIDIKCnN0cnVj
dCBpcnFhY3Rpb24gewogICAgICAgIHZvaWQgKCpoYW5kbGVyKShpbnQsIHZvaWQgKiwgc3RydWN0
IHB0X3JlZ3MgKik7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICB1bnNpZ25l
ZCBsb25nIG1hc2s7CiAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgICB2b2lkICpkZXZf
aWQ7CiAgICAgICAgc3RydWN0IGlycWFjdGlvbiAqbmV4dDsKfTsKCgoKCgplbnVtIHsKICAgICAg
ICBUSU1FUl9CSCA9IDAsCiAgICAgICAgVFFVRVVFX0JILAogICAgICAgIERJR0lfQkgsCiAgICAg
ICAgU0VSSUFMX0JILAogICAgICAgIFJJU0NPTThfQkgsCiAgICAgICAgU1BFQ0lBTElYX0JILAog
ICAgICAgIEFVUk9SQV9CSCwKICAgICAgICBFU1BfQkgsCiAgICAgICAgU0NTSV9CSCwKICAgICAg
ICBJTU1FRElBVEVfQkgsCiAgICAgICAgQ1lDTEFERVNfQkgsCiAgICAgICAgQ00yMDZfQkgsCiAg
ICAgICAgSlNfQkgsCiAgICAgICAgTUFDU0VSSUFMX0JILAogICAgICAgIElTSUNPTV9CSAp9OwoK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vaGFyZGlycS5oIiAxCgoKCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA1ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vaGFyZGlycS5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvdGhyZWFkcy5oIiAxCiMgNiAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2luY2x1ZGUvYXNtL2hhcmRpcnEuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2lycS5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
My9pbmNsdWRlL2xpbnV4L2lycS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRl
L2xpbnV4L2NvbmZpZy5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xp
bnV4L2lycS5oIiAyCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgv
Y2FjaGUuaCIgMQojIDE3ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9pcnEu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgi
IDEKIyAxOCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvaXJxLmgiIDIKCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL2lycS5oIiAxCiMgMTMgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9pcnEuaCIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvaW5jbHVkZS9hc20vaXJxLmgiIDIKIyAyOCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1
ZGUvYXNtL2lycS5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgaXJxX2Nhbm5vbmljYWxpemUoaW50
IGlycSkKewogICAgICAgIHJldHVybiAoKGlycSA9PSAyKSA/IDkgOiBpcnEpOwp9CgpleHRlcm4g
dm9pZCBkaXNhYmxlX2lycSh1bnNpZ25lZCBpbnQpOwpleHRlcm4gdm9pZCBkaXNhYmxlX2lycV9u
b3N5bmModW5zaWduZWQgaW50KTsKZXh0ZXJuIHZvaWQgZW5hYmxlX2lycSh1bnNpZ25lZCBpbnQp
OwojIDIwICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9pcnEuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9wdHJhY2UuaCIgMQojIDIxICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9pcnEuaCIgMgojIDM5ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9pcnEuaCIKc3RydWN0IGh3X2ludGVycnVwdF90eXBl
IHsKICAgICAgICBjb25zdCBjaGFyICogdHlwZW5hbWU7CiAgICAgICAgdW5zaWduZWQgaW50ICgq
c3RhcnR1cCkodW5zaWduZWQgaW50IGlycSk7CiAgICAgICAgdm9pZCAoKnNodXRkb3duKSh1bnNp
Z25lZCBpbnQgaXJxKTsKICAgICAgICB2b2lkICgqZW5hYmxlKSh1bnNpZ25lZCBpbnQgaXJxKTsK
ICAgICAgICB2b2lkICgqZGlzYWJsZSkodW5zaWduZWQgaW50IGlycSk7CiAgICAgICAgdm9pZCAo
KmFjaykodW5zaWduZWQgaW50IGlycSk7CiAgICAgICAgdm9pZCAoKmVuZCkodW5zaWduZWQgaW50
IGlycSk7CiAgICAgICAgdm9pZCAoKnNldF9hZmZpbml0eSkodW5zaWduZWQgaW50IGlycSwgdW5z
aWduZWQgbG9uZyBtYXNrKTsKfTsKCnR5cGVkZWYgc3RydWN0IGh3X2ludGVycnVwdF90eXBlIGh3
X2lycV9jb250cm9sbGVyOwojIDU5ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51
eC9pcnEuaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGludCBzdGF0dXM7CiAg
ICAgICAgaHdfaXJxX2NvbnRyb2xsZXIgKmhhbmRsZXI7CiAgICAgICAgc3RydWN0IGlycWFjdGlv
biAqYWN0aW9uOwogICAgICAgIHVuc2lnbmVkIGludCBkZXB0aDsKICAgICAgICBzcGlubG9ja190
IGxvY2s7Cn0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oKDEgPDwgKCg1KSkpKSkpIGlycV9k
ZXNjX3Q7CgpleHRlcm4gaXJxX2Rlc2NfdCBpcnFfZGVzYyBbMjI0XTsKCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2luY2x1ZGUvYXNtL2h3X2lycS5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMy9pbmNsdWRlL2FzbS9od19pcnEuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
aW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5j
bHVkZS9hc20vaHdfaXJxLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9h
c20vYXRvbWljLmgiIDEKIyAxNyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL2h3
X2lycS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL2lycS5oIiAx
CiMgMTggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9od19pcnEuaCIgMgojIDYx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vaHdfaXJxLmgiCmV4dGVybiBpbnQg
aXJxX3ZlY3RvclsyMjRdOwojIDcxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20v
aHdfaXJxLmgiCmV4dGVybiB2b2lkIG1hc2tfaXJxKHVuc2lnbmVkIGludCBpcnEpOwpleHRlcm4g
dm9pZCB1bm1hc2tfaXJxKHVuc2lnbmVkIGludCBpcnEpOwpleHRlcm4gdm9pZCBkaXNhYmxlXzgy
NTlBX2lycSh1bnNpZ25lZCBpbnQgaXJxKTsKZXh0ZXJuIHZvaWQgZW5hYmxlXzgyNTlBX2lycSh1
bnNpZ25lZCBpbnQgaXJxKTsKZXh0ZXJuIGludCBpODI1OUFfaXJxX3BlbmRpbmcodW5zaWduZWQg
aW50IGlycSk7CmV4dGVybiB2b2lkIG1ha2VfODI1OUFfaXJxKHVuc2lnbmVkIGludCBpcnEpOwpl
eHRlcm4gdm9pZCBpbml0XzgyNTlBKGludCBhZW9pKTsKZXh0ZXJuIHZvaWQgc2VuZF9JUElfc2Vs
ZihpbnQgdmVjdG9yKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIGlu
aXRfVklTV1NfQVBJQ19pcnFzKHZvaWQpOwpleHRlcm4gdm9pZCBzZXR1cF9JT19BUElDKHZvaWQp
OwpleHRlcm4gdm9pZCBkaXNhYmxlX0lPX0FQSUModm9pZCk7CmV4dGVybiB2b2lkIHByaW50X0lP
X0FQSUModm9pZCk7CmV4dGVybiBpbnQgSU9fQVBJQ19nZXRfUENJX2lycV92ZWN0b3IoaW50IGJ1
cywgaW50IHNsb3QsIGludCBmbik7CmV4dGVybiB2b2lkIHNlbmRfSVBJKGludCBkZXN0LCBpbnQg
dmVjdG9yKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGlvX2FwaWNfaXJxczsKCmV4dGVybiBhdG9t
aWNfdCBpcnFfZXJyX2NvdW50OwpleHRlcm4gYXRvbWljX3QgaXJxX21pc19jb3VudDsKCmV4dGVy
biBjaGFyIF9zdGV4dCwgX2V0ZXh0OwojIDIwMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1
ZGUvYXNtL2h3X2lycS5oIgpleHRlcm4gdW5zaWduZWQgbG9uZyBwcm9mX2NwdV9tYXNrOwpleHRl
cm4gdW5zaWduZWQgaW50ICogcHJvZl9idWZmZXI7CmV4dGVybiB1bnNpZ25lZCBsb25nIHByb2Zf
bGVuOwpleHRlcm4gdW5zaWduZWQgbG9uZyBwcm9mX3NoaWZ0OwoKCgoKCnN0YXRpYyBpbmxpbmUg
dm9pZCB4ODZfZG9fcHJvZmlsZSAodW5zaWduZWQgbG9uZyBlaXApCnsKICAgICAgICBpZiAoIXBy
b2ZfYnVmZmVyKQogICAgICAgICAgICAgICAgcmV0dXJuOwoKCgoKCiAgICAgICAgaWYgKCEoKDE8
PDApICYgcHJvZl9jcHVfbWFzaykpCiAgICAgICAgICAgICAgICByZXR1cm47CgogICAgICAgIGVp
cCAtPSAodW5zaWduZWQgbG9uZykgJl9zdGV4dDsKICAgICAgICBlaXAgPj49IHByb2Zfc2hpZnQ7
CgoKCgoKICAgICAgICBpZiAoZWlwID4gcHJvZl9sZW4tMSkKICAgICAgICAgICAgICAgIGVpcCA9
IHByb2ZfbGVuLTE7CiAgICAgICAgYXRvbWljX2luYygoYXRvbWljX3QgKikmcHJvZl9idWZmZXJb
ZWlwXSk7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBod19yZXNlbmRfaXJxKHN0cnVjdCBo
d19pbnRlcnJ1cHRfdHlwZSAqaCwgdW5zaWduZWQgaW50IGkpIHt9CiMgNzAgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2lycS5oIiAyCgpleHRlcm4gaW50IGhhbmRsZV9JUlFf
ZXZlbnQodW5zaWduZWQgaW50LCBzdHJ1Y3QgcHRfcmVncyAqLCBzdHJ1Y3QgaXJxYWN0aW9uICop
OwpleHRlcm4gaW50IHNldHVwX2lycSh1bnNpZ25lZCBpbnQgLCBzdHJ1Y3QgaXJxYWN0aW9uICog
KTsKCmV4dGVybiBod19pcnFfY29udHJvbGxlciBub19pcnFfdHlwZTsKZXh0ZXJuIHZvaWQgbm9f
YWN0aW9uKGludCBjcGwsIHZvaWQgKmRldl9pZCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOwojIDcg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9oYXJkaXJxLmgiIDIKCgp0eXBlZGVm
IHN0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgaW50IF9fc29mdGlycV9wZW5kaW5nOwogICAgICAg
IHVuc2lnbmVkIGludCBfX2xvY2FsX2lycV9jb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgX19s
b2NhbF9iaF9jb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgX19zeXNjYWxsX2NvdW50OwogICAg
ICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqIF9fa3NvZnRpcnFkX3Rhc2s7CiAgICAgICAgdW5zaWdu
ZWQgaW50IF9fbm1pX2NvdW50Owp9IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgxIDw8ICgo
NSkpKSkpKSBpcnFfY3B1c3RhdF90OwoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVk
ZS9saW51eC9pcnFfY3B1c3RhdC5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNs
dWRlL2xpbnV4L2lycV9jcHVzdGF0LmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1
ZGUvbGludXgvY29uZmlnLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUv
bGludXgvaXJxX2NwdXN0YXQuaCIgMgoKCgoKCgoKZXh0ZXJuIGlycV9jcHVzdGF0X3QgaXJxX3N0
YXRbXTsKIyAxOSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL2hhcmRpcnEuaCIg
MgojIDQ2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9zb2Z0aXJxLmgiIDEKCgoK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEKIyA1ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vc29mdGlycS5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL2hhcmRpcnEuaCIgMQojIDYgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9zb2Z0aXJxLmgiIDIKIyA0NyAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiIDIKIyA1NiAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiCmVudW0KewogICAgICAgIEhJX1NPRlRJ
UlE9MCwKICAgICAgICBORVRfVFhfU09GVElSUSwKICAgICAgICBORVRfUlhfU09GVElSUSwKICAg
ICAgICBUQVNLTEVUX1NPRlRJUlEKfTsKCgoKCgpzdHJ1Y3Qgc29mdGlycV9hY3Rpb24KewogICAg
ICAgIHZvaWQgKCphY3Rpb24pKHN0cnVjdCBzb2Z0aXJxX2FjdGlvbiAqKTsKICAgICAgICB2b2lk
ICpkYXRhOwp9OwoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2b2lkIGRvX3NvZnRpcnEo
dm9pZCk7CmV4dGVybiB2b2lkIG9wZW5fc29mdGlycShpbnQgbnIsIHZvaWQgKCphY3Rpb24pKHN0
cnVjdCBzb2Z0aXJxX2FjdGlvbiopLCB2b2lkICpkYXRhKTsKZXh0ZXJuIHZvaWQgc29mdGlycV9p
bml0KHZvaWQpOwoKZXh0ZXJuIHZvaWQgY3B1X3JhaXNlX3NvZnRpcnEodW5zaWduZWQgaW50IGNw
dSwgdW5zaWduZWQgaW50IG5yKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2
b2lkIHJhaXNlX3NvZnRpcnEodW5zaWduZWQgaW50IG5yKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt
KDMpKSk7CiMgMTAzICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9pbnRlcnJ1
cHQuaCIKc3RydWN0IHRhc2tsZXRfc3RydWN0CnsKICAgICAgICBzdHJ1Y3QgdGFza2xldF9zdHJ1
Y3QgKm5leHQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGF0ZTsKICAgICAgICBhdG9taWNfdCBj
b3VudDsKICAgICAgICB2b2lkICgqZnVuYykodW5zaWduZWQgbG9uZyk7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBkYXRhOwp9OwojIDExOSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGlu
dXgvaW50ZXJydXB0LmgiCmVudW0KewogICAgICAgIFRBU0tMRVRfU1RBVEVfU0NIRUQsCiAgICAg
ICAgVEFTS0xFVF9TVEFURV9SVU4KfTsKCnN0cnVjdCB0YXNrbGV0X2hlYWQKewogICAgICAgIHN0
cnVjdCB0YXNrbGV0X3N0cnVjdCAqbGlzdDsKfSBfX2F0dHJpYnV0ZV9fICgoX19hbGlnbmVkX18o
KDEgPDwgKCg1KSkpKSkpOwoKZXh0ZXJuIHN0cnVjdCB0YXNrbGV0X2hlYWQgdGFza2xldF92ZWNb
MV07CmV4dGVybiBzdHJ1Y3QgdGFza2xldF9oZWFkIHRhc2tsZXRfaGlfdmVjWzFdOwojIDE1NSAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiCmV4dGVybiB2
b2lkIF9fdGFza2xldF9zY2hlZHVsZShzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpIF9fYXR0cmli
dXRlX18oKHJlZ3Bhcm0oMykpKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrbGV0X3NjaGVkdWxl
KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCkKewogICAgICAgIGlmICghdGVzdF9hbmRfc2V0X2Jp
dChUQVNLTEVUX1NUQVRFX1NDSEVELCAmdC0+c3RhdGUpKQogICAgICAgICAgICAgICAgX190YXNr
bGV0X3NjaGVkdWxlKHQpOwp9CgpleHRlcm4gdm9pZCBfX3Rhc2tsZXRfaGlfc2NoZWR1bGUoc3Ry
dWN0IHRhc2tsZXRfc3RydWN0ICp0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CgpzdGF0
aWMgaW5saW5lIHZvaWQgdGFza2xldF9oaV9zY2hlZHVsZShzdHJ1Y3QgdGFza2xldF9zdHJ1Y3Qg
KnQpCnsKICAgICAgICBpZiAoIXRlc3RfYW5kX3NldF9iaXQoVEFTS0xFVF9TVEFURV9TQ0hFRCwg
JnQtPnN0YXRlKSkKICAgICAgICAgICAgICAgIF9fdGFza2xldF9oaV9zY2hlZHVsZSh0KTsKfQoK
CnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrbGV0X2Rpc2FibGVfbm9zeW5jKHN0cnVjdCB0YXNrbGV0
X3N0cnVjdCAqdCkKewogICAgICAgIGF0b21pY19pbmMoJnQtPmNvdW50KTsKICAgICAgICBfX2Fz
bV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQg
dGFza2xldF9kaXNhYmxlKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCkKewogICAgICAgIHRhc2ts
ZXRfZGlzYWJsZV9ub3N5bmModCk7CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsKICAgICAgICBf
X2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwp9CgpzdGF0aWMgaW5saW5lIHZv
aWQgdGFza2xldF9lbmFibGUoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KQp7CiAgICAgICAgX19h
c21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKICAgICAgICBhdG9taWNfZGVjKCZ0
LT5jb3VudCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrbGV0X2hpX2VuYWJsZShzdHJ1Y3Qg
dGFza2xldF9zdHJ1Y3QgKnQpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6
Im1lbW9yeSIpOwogICAgICAgIGF0b21pY19kZWMoJnQtPmNvdW50KTsKfQoKZXh0ZXJuIHZvaWQg
dGFza2xldF9raWxsKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCk7CmV4dGVybiB2b2lkIHRhc2ts
ZXRfaW5pdChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICgqZnVuYykodW5zaWduZWQgbG9uZyksIHVuc2lnbmVkIGxvbmcgZGF0YSk7CiMgMjIy
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIKZXh0ZXJu
IHN0cnVjdCB0YXNrbGV0X3N0cnVjdCBiaF90YXNrX3ZlY1tdOwoKCmV4dGVybiBzcGlubG9ja190
IGdsb2JhbF9iaF9sb2NrOwoKc3RhdGljIGlubGluZSB2b2lkIG1hcmtfYmgoaW50IG5yKQp7CiAg
ICAgICAgdGFza2xldF9oaV9zY2hlZHVsZShiaF90YXNrX3ZlYytucik7Cn0KCmV4dGVybiB2b2lk
IGluaXRfYmgoaW50IG5yLCB2b2lkICgqcm91dGluZSkodm9pZCkpOwpleHRlcm4gdm9pZCByZW1v
dmVfYmgoaW50IG5yKTsKIyAyNjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4
L2ludGVycnVwdC5oIgpleHRlcm4gdW5zaWduZWQgbG9uZyBwcm9iZV9pcnFfb24odm9pZCk7CmV4
dGVybiBpbnQgcHJvYmVfaXJxX29mZih1bnNpZ25lZCBsb25nKTsKZXh0ZXJuIHVuc2lnbmVkIGlu
dCBwcm9iZV9pcnFfbWFzayh1bnNpZ25lZCBsb25nKTsKIyA3ICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvaW5jbHVkZS9hc20vc21wbG9jay5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2lu
Y2x1ZGUvbGludXgvc3BpbmxvY2suaCIgMQojIDggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNs
dWRlL2FzbS9zbXBsb2NrLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9s
aW51eC9zY2hlZC5oIiAxCiMgOSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3Nt
cGxvY2suaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9jdXJyZW50
LmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3NtcGxvY2suaCIg
MgoKZXh0ZXJuIHNwaW5sb2NrX3Qga2VybmVsX2ZsYWc7CiMgNTEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9pbmNsdWRlL2FzbS9zbXBsb2NrLmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgbG9ja19r
ZXJuZWwodm9pZCkKewoKICAgICAgICBpZiAoZ2V0X2N1cnJlbnQoKS0+bG9ja19kZXB0aCA9PSAt
MSkKICAgICAgICAgICAgICAgIGRvIHsgZG8geyArK2dldF9jdXJyZW50KCktPnByZWVtcHRfY291
bnQ7IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOyAo
dm9pZCkoJmtlcm5lbF9mbGFnKTsgfSB3aGlsZSgwKTsKICAgICAgICArK2dldF9jdXJyZW50KCkt
PmxvY2tfZGVwdGg7CiMgNzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9zbXBs
b2NrLmgiCn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgdW5sb2NrX2tlcm5lbCh2b2lkKQp7CiAg
ICAgICAgaWYgKGdldF9jdXJyZW50KCktPmxvY2tfZGVwdGggPCAwKQogICAgICAgICAgICAgICAg
X19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwoKICAgICAgICBpZiAoLS1n
ZXRfY3VycmVudCgpLT5sb2NrX2RlcHRoIDwgMCkKICAgICAgICAgICAgICAgIGRvIHsgZG8geyB9
IHdoaWxlKDApOyBkbyB7IC0tZ2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9jb3VudDsgX19hc21fXyBf
X3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgaWYgKChnZXRfY3VycmVudCgpLT5wcmVlbXB0
X2NvdW50ID09IDApICYmIGdldF9jdXJyZW50KCktPm5lZWRfcmVzY2hlZCkgcHJlZW1wdF9zY2hl
ZHVsZSgpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CiMgODkgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9pbmNsdWRlL2FzbS9zbXBsb2NrLmgiCn0KIyAxNyAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2luY2x1ZGUvbGludXgvc21wX2xvY2suaCIgMgojIDI2ICJrZXJuZWwvc2NoZWQuYyIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L25taS5oIiAxCgoKCgoKCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL2lycS5oIiAxCiMgOCAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvbm1pLmgiIDIKIyAxNyAiL3Vzci9zcmMvbGludXgt
Mi40LjEzL2luY2x1ZGUvbGludXgvbm1pLmgiCmV4dGVybiB2b2lkIHRvdWNoX25taV93YXRjaGRv
Zyh2b2lkKTsKIyAyNyAia2VybmVsL3NjaGVkLmMiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIgMQojIDI4ICJrZXJuZWwvc2NoZWQuYyIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2tlcm5lbF9zdGF0LmgiIDEK
CgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQoj
IDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2tlcm5lbF9zdGF0LmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vaXJxLmgiIDEKIyA2ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9rZXJuZWxfc3RhdC5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvc21wLmgiIDEKIyA3ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9rZXJuZWxfc3RhdC5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvdGhyZWFkcy5oIiAxCiMgOCAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvbGludXgva2VybmVsX3N0YXQuaCIgMgojIDE4ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9rZXJuZWxfc3RhdC5oIgpzdHJ1Y3Qga2VybmVsX3N0
YXQgewogICAgICAgIHVuc2lnbmVkIGludCBwZXJfY3B1X3VzZXJbMV0sCiAgICAgICAgICAgICAg
ICAgICAgIHBlcl9jcHVfbmljZVsxXSwKICAgICAgICAgICAgICAgICAgICAgcGVyX2NwdV9zeXN0
ZW1bMV07CiAgICAgICAgdW5zaWduZWQgaW50IGRrX2RyaXZlWzk5XVsxNl07CiAgICAgICAgdW5z
aWduZWQgaW50IGRrX2RyaXZlX3Jpb1s5OV1bMTZdOwogICAgICAgIHVuc2lnbmVkIGludCBka19k
cml2ZV93aW9bOTldWzE2XTsKICAgICAgICB1bnNpZ25lZCBpbnQgZGtfZHJpdmVfcmJsa1s5OV1b
MTZdOwogICAgICAgIHVuc2lnbmVkIGludCBka19kcml2ZV93YmxrWzk5XVsxNl07CiAgICAgICAg
dW5zaWduZWQgaW50IHBncGdpbiwgcGdwZ291dDsKICAgICAgICB1bnNpZ25lZCBpbnQgcHN3cGlu
LCBwc3dwb3V0OwoKICAgICAgICB1bnNpZ25lZCBpbnQgaXJxc1sxXVsyMjRdOwoKICAgICAgICB1
bnNpZ25lZCBpbnQgaXBhY2tldHMsIG9wYWNrZXRzOwogICAgICAgIHVuc2lnbmVkIGludCBpZXJy
b3JzLCBvZXJyb3JzOwogICAgICAgIHVuc2lnbmVkIGludCBjb2xsaXNpb25zOwogICAgICAgIHVu
c2lnbmVkIGludCBjb250ZXh0X3N3dGNoOwp9OwoKZXh0ZXJuIHN0cnVjdCBrZXJuZWxfc3RhdCBr
c3RhdDsKCgoKCgpzdGF0aWMgaW5saW5lIGludCBrc3RhdF9pcnFzIChpbnQgaXJxKQp7CiAgICAg
ICAgaW50IGksIHN1bT0wOwoKICAgICAgICBmb3IgKGkgPSAwIDsgaSA8IDEgOyBpKyspCiAgICAg
ICAgICAgICAgICBzdW0gKz0ga3N0YXQuaXJxc1swXVtpcnFdOwoKICAgICAgICByZXR1cm4gc3Vt
Owp9CiMgMjkgImtlcm5lbC9zY2hlZC5jIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2lu
Y2x1ZGUvbGludXgvY29tcGxldGlvbi5oIiAxCiMgMzAgImtlcm5lbC9zY2hlZC5jIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvcHJlZmV0Y2guaCIgMQojIDMxICJr
ZXJuZWwvc2NoZWQuYyIgMgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20v
dWFjY2Vzcy5oIiAxCgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGlu
dXgvY29uZmlnLmgiIDEKIyA4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vdWFj
Y2Vzcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvc2NoZWQu
aCIgMQojIDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS91YWNjZXNzLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC9wcmVmZXRjaC5oIiAxCiMg
MTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS91YWNjZXNzLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vcGFnZS5oIiAxCiMgMTEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS91YWNjZXNzLmgiIDIKIyAzNSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIKZXh0ZXJuIGludCBfX3ZlcmlmeV93cml0
ZShjb25zdCB2b2lkICosIHVuc2lnbmVkIGxvbmcpOwojIDYyICIvdXNyL3NyYy9saW51eC0yLjQu
MTMvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpzdGF0aWMgaW5saW5lIGludCB2ZXJpZnlfYXJlYShp
bnQgdHlwZSwgY29uc3Qgdm9pZCAqIGFkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKewogICAgICAg
IHJldHVybiAoKHsgdW5zaWduZWQgbG9uZyBmbGFnLHN1bTsgYXNtKCJhZGRsICUzLCUxIDsgc2Ji
bCAlMCwlMDsgY21wbCAlMSwlNDsgc2JibCAkMCwlMCIgOiI9JnIiIChmbGFnKSwgIj1yIiAoc3Vt
KSA6IjEiIChhZGRyKSwiZyIgKChpbnQpKHNpemUpKSwiZyIgKGdldF9jdXJyZW50KCktPmFkZHJf
bGltaXQuc2VnKSk7IGZsYWc7IH0pID09IDApID8gMCA6IC0xNDsKfQojIDgxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxl
X2VudHJ5CnsKICAgICAgICB1bnNpZ25lZCBsb25nIGluc24sIGZpeHVwOwp9OwoKCmV4dGVybiB1
bnNpZ25lZCBsb25nIHNlYXJjaF9leGNlcHRpb25fdGFibGUodW5zaWduZWQgbG9uZyk7CiMgMTA1
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpleHRlcm4gdm9p
ZCBfX2dldF91c2VyXzEodm9pZCk7CmV4dGVybiB2b2lkIF9fZ2V0X3VzZXJfMih2b2lkKTsKZXh0
ZXJuIHZvaWQgX19nZXRfdXNlcl80KHZvaWQpOwojIDEyNyAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIKZXh0ZXJuIHZvaWQgX19wdXRfdXNlcl8xKHZvaWQpOwpl
eHRlcm4gdm9pZCBfX3B1dF91c2VyXzIodm9pZCk7CmV4dGVybiB2b2lkIF9fcHV0X3VzZXJfNCh2
b2lkKTsKZXh0ZXJuIHZvaWQgX19wdXRfdXNlcl84KHZvaWQpOwoKZXh0ZXJuIHZvaWQgX19wdXRf
dXNlcl9iYWQodm9pZCk7CiMgMTg4ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20v
dWFjY2Vzcy5oIgpzdHJ1Y3QgX19sYXJnZV9zdHJ1Y3QgeyB1bnNpZ25lZCBsb25nIGJ1ZlsxMDBd
OyB9OwojIDIyMCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIK
ZXh0ZXJuIGxvbmcgX19nZXRfdXNlcl9iYWQodm9pZCk7CiMgMzA4ICIvdXNyL3NyYy9saW51eC0y
LjQuMTMvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcK
X19nZW5lcmljX2NvcHlfZnJvbV91c2VyX25vY2hlY2sodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZy
b20sIHVuc2lnbmVkIGxvbmcgbikKewogICAgICAgIGRvIHsgaW50IF9fZDAsIF9fZDE7IF9fYXNt
X18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiCW1vdmwgJTMsJTBcbiIgIjE6CXJl
cDsgbW92c2JcbiIgIjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglsZWEgMCgl
MywlMCw0KSwlMFxuIiAiNDoJcHVzaGwgJTBcbiIgIglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVl
YXgsJSVlYXhcbiIgIglyZXA7IHN0b3NiXG4iICIJcG9wbCAlJWVheFxuIiAiCXBvcGwgJTBcbiIg
IglqbXAgMmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAi
CS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3Vz
IiA6ICI9JmMiKG4pLCAiPSZEIiAoX19kMCksICI9JlMiIChfX2QxKSA6ICJyIihuICYgMyksICIw
IihuIC8gNCksICIxIih0byksICIyIihmcm9tKSA6ICJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7CiAg
ICAgICAgcmV0dXJuIG47Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwpfX2dlbmVyaWNf
Y29weV90b191c2VyX25vY2hlY2sodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVk
IGxvbmcgbikKewogICAgICAgIGRvIHsgaW50IF9fZDAsIF9fZDE7IF9fYXNtX18gX192b2xhdGls
ZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiCW1vdmwgJTMsJTBcbiIgIjE6CXJlcDsgbW92c2JcbiIg
IjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglsZWEgMCglMywlMCw0KSwlMFxu
IiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4i
ICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAiCS5sb25nIDFiLDJiXG4iICIucHJldmlv
dXMiIDogIj0mYyIobiksICI9JkQiIChfX2QwKSwgIj0mUyIgKF9fZDEpIDogInIiKG4gJiAzKSwg
IjAiKG4gLyA0KSwgIjEiKHRvKSwgIjIiKGZyb20pIDogIm1lbW9yeSIpOyB9IHdoaWxlICgwKTsK
ICAgICAgICByZXR1cm4gbjsKfQojIDU0MyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUv
YXNtL3VhY2Nlc3MuaCIKdW5zaWduZWQgbG9uZyBfX2dlbmVyaWNfY29weV90b191c2VyKHZvaWQg
KiwgY29uc3Qgdm9pZCAqLCB1bnNpZ25lZCBsb25nKTsKdW5zaWduZWQgbG9uZyBfX2dlbmVyaWNf
Y29weV9mcm9tX3VzZXIodm9pZCAqLCBjb25zdCB2b2lkICosIHVuc2lnbmVkIGxvbmcpOwoKc3Rh
dGljIGlubGluZSB1bnNpZ25lZCBsb25nCl9fY29uc3RhbnRfY29weV90b191c2VyKHZvaWQgKnRv
LCBjb25zdCB2b2lkICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pCnsKICAgICAgICBwcmVmZXRjaChm
cm9tKTsKICAgICAgICBpZiAoKCh7IHVuc2lnbmVkIGxvbmcgZmxhZyxzdW07IGFzbSgiYWRkbCAl
MywlMSA7IHNiYmwgJTAsJTA7IGNtcGwgJTEsJTQ7IHNiYmwgJDAsJTAiIDoiPSZyIiAoZmxhZyks
ICI9ciIgKHN1bSkgOiIxIiAodG8pLCJnIiAoKGludCkobikpLCJnIiAoZ2V0X2N1cnJlbnQoKS0+
YWRkcl9saW1pdC5zZWcpKTsgZmxhZzsgfSkgPT0gMCkpCiAgICAgICAgICAgICAgICBkbyB7IGlu
dCBfX2QwLCBfX2QxOyBzd2l0Y2ggKG4gJiAzKSB7IGRlZmF1bHQ6IF9fYXNtX18gX192b2xhdGls
ZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMTpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIg
IjI6CXNobCAkMiwlMFxuIiAiCWptcCAxYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4
X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwyYlxuIiAiLnByZXZpb3Vz
IiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIo
dG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMTogX19hc21fXyBfX3ZvbGF0
aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3ZzYlxuIiAiMjpcbiIgIi5zZWN0aW9uIC5m
aXh1cCxcImF4XCJcbiIgIjM6CXNobCAkMiwlMFxuIiAiNDoJaW5jbCAlMFxuIiAiCWptcCAyYlxu
IiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRc
biIgIgkubG9uZyAwYiwzYlxuIiAiCS5sb25nIDFiLDRiXG4iICIucHJldmlvdXMiIDogIj1jIihu
KSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihu
LzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAyOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6
CXJlcDsgbW92c2xcbiIgIjE6CW1vdnN3XG4iICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhc
IlxuIiAiMzoJc2hsICQyLCUwXG4iICI0OglhZGRsICQyLCUwXG4iICIJam1wIDJiXG4iICIucHJl
dmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5s
b25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZT
IiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAi
bWVtb3J5Iik7IGJyZWFrOyBjYXNlIDM6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBt
b3ZzbFxuIiAiMToJbW92c3dcbiIgIjI6CW1vdnNiXG4iICIzOlxuIiAiLnNlY3Rpb24gLmZpeHVw
LFwiYXhcIlxuIiAiNDoJc2hsICQyLCUwXG4iICI1OglhZGRsICQyLCUwXG4iICI2OglpbmNsICUw
XG4iICIJam1wIDNiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJc
biIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDRiXG4iICIJLmxvbmcgMWIsNWJcbiIgIgkubG9u
ZyAyYiw2YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9f
ZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0g
fSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIG47Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQg
bG9uZwpfX2NvbnN0YW50X2NvcHlfZnJvbV91c2VyKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9t
LCB1bnNpZ25lZCBsb25nIG4pCnsKICAgICAgICBpZiAoKCh7IHVuc2lnbmVkIGxvbmcgZmxhZyxz
dW07IGFzbSgiYWRkbCAlMywlMSA7IHNiYmwgJTAsJTA7IGNtcGwgJTEsJTQ7IHNiYmwgJDAsJTAi
IDoiPSZyIiAoZmxhZyksICI9ciIgKHN1bSkgOiIxIiAoZnJvbSksImciICgoaW50KShuKSksImci
IChnZXRfY3VycmVudCgpLT5hZGRyX2xpbWl0LnNlZykpOyBmbGFnOyB9KSA9PSAwKSkKICAgICAg
ICAgICAgICAgIGRvIHsgaW50IF9fZDAsIF9fZDE7IHN3aXRjaCAobiAmIDMpIHsgZGVmYXVsdDog
X19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOlxuIiAiLnNlY3Rpb24g
LmZpeHVwLFwiYXhcIlxuIiAiMjoJcHVzaGwgJTBcbiIgIglwdXNobCAlJWVheFxuIiAiCXhvcmwg
JSVlYXgsJSVlYXhcbiIgIglyZXA7IHN0b3NsXG4iICIJcG9wbCAlJWVheFxuIiAiCXBvcGwgJTBc
biIgIglzaGwgJDIsJTBcbiIgIglqbXAgMWJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19l
eF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsMmJcbiIgIi5wcmV2aW91
cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIi
KHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDE6IF9fYXNtX18gX192b2xh
dGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c2JcbiIgIjI6XG4iICIuc2VjdGlvbiAu
Zml4dXAsXCJheFwiXG4iICIzOglwdXNobCAlMFxuIiAiCXB1c2hsICUlZWF4XG4iICIJeG9ybCAl
JWVheCwlJWVheFxuIiAiCXJlcDsgc3Rvc2xcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIg
Iglwb3BsICUwXG4iICIJc2hsICQyLCUwXG4iICIJaW5jbCAlMFxuIiAiCWptcCAyYlxuIiAiNDoJ
cHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJc3Rvc2JcbiIgIglwb3BsICUl
ZWF4XG4iICIJaW5jbCAlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBf
X2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAiCS5sb25n
IDFiLDRiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19k
MSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2Fz
ZSAyOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnN3XG4i
ICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJcHVzaGwgJTBcbiIgIglwdXNo
bCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglyZXA7IHN0b3NsXG4iICIJc3Rvc3dc
biIgIglwb3BsICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwlMFxuIiAiCWFkZGwgJDIs
JTBcbiIgIglqbXAgMmJcbiIgIjQ6CXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxu
IiAiCXN0b3N3XG4iICIJcG9wbCAlJWVheFxuIiAiCWFkZGwgJDIsJTBcbiIgIglqbXAgMmJcbiIg
Ii5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4i
ICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiks
ICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80
KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMzogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOgly
ZXA7IG1vdnNsXG4iICIxOgltb3Zzd1xuIiAiMjoJbW92c2JcbiIgIjM6XG4iICIuc2VjdGlvbiAu
Zml4dXAsXCJheFwiXG4iICI0OglwdXNobCAlMFxuIiAiCXB1c2hsICUlZWF4XG4iICIJeG9ybCAl
JWVheCwlJWVheFxuIiAiCXJlcDsgc3Rvc2xcbiIgIglzdG9zd1xuIiAiCXN0b3NiXG4iICIJcG9w
bCAlJWVheFxuIiAiCXBvcGwgJTBcbiIgIglzaGwgJDIsJTBcbiIgIglhZGRsICQzLCUwXG4iICIJ
am1wIDJiXG4iICI1OglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglzdG9z
d1xuIiAiCXN0b3NiXG4iICIJcG9wbCAlJWVheFxuIiAiCWFkZGwgJDMsJTBcbiIgIglqbXAgMmJc
biIgIjY6CXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXN0b3NiXG4iICIJ
cG9wbCAlJWVheFxuIiAiCWluY2wgJTBcbiIgIglqbXAgM2JcbiIgIi5wcmV2aW91c1xuIiAiLnNl
Y3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsNGJcbiIg
IgkubG9uZyAxYiw1YlxuIiAiCS5sb25nIDJiLDZiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwg
Ij0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQp
IDogIm1lbW9yeSIpOyBicmVhazsgfSB9IHdoaWxlICgwKTsKICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50X3Ao
KG4pKSA/IF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0KCgodG8pKSwoKDB4MDEwMTAxMDFV
TCoodW5zaWduZWQgY2hhcikoMCkpKSwoKG4pKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgodG8p
KSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKG4pKSkpIDogKF9fYnVpbHRp
bl9jb25zdGFudF9wKChuKSkgPyBfX21lbXNldF9nZW5lcmljKCgoKHRvKSkpLCgoKDApKSksKCgo
bikpKSkgOiBfX21lbXNldF9nZW5lcmljKCgodG8pKSwoKDApKSwoKG4pKSkpKTsKICAgICAgICBy
ZXR1cm4gbjsKfQoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCl9fY29uc3RhbnRfY29weV90
b191c2VyX25vY2hlY2sodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcg
bikKewogICAgICAgIGRvIHsgaW50IF9fZDAsIF9fZDE7IHN3aXRjaCAobiAmIDMpIHsgZGVmYXVs
dDogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOlxuIiAiLnNlY3Rp
b24gLmZpeHVwLFwiYXhcIlxuIiAiMjoJc2hsICQyLCUwXG4iICIJam1wIDFiXG4iICIucHJldmlv
dXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25n
IDBiLDJiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19k
MSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2Fz
ZSAxOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnNiXG4i
ICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJc2hsICQyLCUwXG4iICI0Oglp
bmNsICUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUs
XCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIg
Ii5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihm
cm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDI6IF9fYXNt
X18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c3dcbiIgIjI6XG4iICIu
c2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglzaGwgJDIsJTBcbiIgIjQ6CWFkZGwgJDIsJTBc
biIgIglqbXAgMmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxu
IiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZp
b3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAi
MiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMzogX19hc21fXyBfX3Zv
bGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3Zzd1xuIiAiMjoJbW92c2JcbiIgIjM6
XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICI0OglzaGwgJDIsJTBcbiIgIjU6CWFkZGwg
JDIsJTBcbiIgIjY6CWluY2wgJTBcbiIgIglqbXAgM2JcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rp
b24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsNGJcbiIgIgku
bG9uZyAxYiw1YlxuIiAiCS5sb25nIDJiLDZiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0m
UyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDog
Im1lbW9yeSIpOyBicmVhazsgfSB9IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4gbjsKfQoKc3Rh
dGljIGlubGluZSB1bnNpZ25lZCBsb25nCl9fY29uc3RhbnRfY29weV9mcm9tX3VzZXJfbm9jaGVj
ayh2b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKQp7CiAgICAgICAg
ZG8geyBpbnQgX19kMCwgX19kMTsgc3dpdGNoIChuICYgMykgeyBkZWZhdWx0OiBfX2FzbV9fIF9f
dm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJh
eFwiXG4iICIyOglwdXNobCAlMFxuIiAiCXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVh
eFxuIiAiCXJlcDsgc3Rvc2xcbiIgIglwb3BsICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCXNobCAk
MiwlMFxuIiAiCWptcCAxYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwi
YVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwyYlxuIiAiLnByZXZpb3VzIiA6ICI9YyIo
biksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIo
bi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMTogX19hc21fXyBfX3ZvbGF0aWxlX18oICIw
OglyZXA7IG1vdnNsXG4iICIxOgltb3ZzYlxuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4
XCJcbiIgIjM6CXB1c2hsICUwXG4iICIJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4
XG4iICIJcmVwOyBzdG9zbFxuIiAiCXN0b3NiXG4iICIJcG9wbCAlJWVheFxuIiAiCXBvcGwgJTBc
biIgIglzaGwgJDIsJTBcbiIgIglpbmNsICUwXG4iICIJam1wIDJiXG4iICI0OglwdXNobCAlJWVh
eFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglp
bmNsICUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUs
XCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIg
Ii5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihm
cm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDI6IF9fYXNt
X18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c3dcbiIgIjI6XG4iICIu
c2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglwdXNobCAlMFxuIiAiCXB1c2hsICUlZWF4XG4i
ICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXJlcDsgc3Rvc2xcbiIgIglzdG9zd1xuIiAiCXBvcGwg
JSVlYXhcbiIgIglwb3BsICUwXG4iICIJc2hsICQyLCUwXG4iICIJYWRkbCAkMiwlMFxuIiAiCWpt
cCAyYlxuIiAiNDoJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJc3Rvc3dc
biIgIglwb3BsICUlZWF4XG4iICIJYWRkbCAkMiwlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3Vz
XG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAw
YiwzYlxuIiAiCS5sb25nIDFiLDRiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9f
ZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9y
eSIpOyBicmVhazsgY2FzZSAzOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xc
biIgIjE6CW1vdnN3XG4iICIyOgltb3ZzYlxuIiAiMzpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4
XCJcbiIgIjQ6CXB1c2hsICUwXG4iICIJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4
XG4iICIJcmVwOyBzdG9zbFxuIiAiCXN0b3N3XG4iICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4XG4i
ICIJcG9wbCAlMFxuIiAiCXNobCAkMiwlMFxuIiAiCWFkZGwgJDMsJTBcbiIgIglqbXAgMmJcbiIg
IjU6CXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXN0b3N3XG4iICIJc3Rv
c2JcbiIgIglwb3BsICUlZWF4XG4iICIJYWRkbCAkMywlMFxuIiAiCWptcCAyYlxuIiAiNjoJcHVz
aGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4
XG4iICIJaW5jbCAlMFxuIiAiCWptcCAzYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4
X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiw0YlxuIiAiCS5sb25nIDFi
LDViXG4iICIJLmxvbmcgMmIsNmJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19k
MCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5
Iik7IGJyZWFrOyB9IH0gd2hpbGUgKDApOwogICAgICAgIHJldHVybiBuOwp9CiMgNTk5ICIvdXNy
L3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpsb25nIHN0cm5jcHlfZnJv
bV91c2VyKGNoYXIgKmRzdCwgY29uc3QgY2hhciAqc3JjLCBsb25nIGNvdW50KTsKbG9uZyBfX3N0
cm5jcHlfZnJvbV91c2VyKGNoYXIgKmRzdCwgY29uc3QgY2hhciAqc3JjLCBsb25nIGNvdW50KTsK
Cmxvbmcgc3Rybmxlbl91c2VyKGNvbnN0IGNoYXIgKnN0ciwgbG9uZyBuKTsKdW5zaWduZWQgbG9u
ZyBjbGVhcl91c2VyKHZvaWQgKm1lbSwgdW5zaWduZWQgbG9uZyBsZW4pOwp1bnNpZ25lZCBsb25n
IF9fY2xlYXJfdXNlcih2b2lkICptZW0sIHVuc2lnbmVkIGxvbmcgbGVuKTsKIyAzMyAia2VybmVs
L3NjaGVkLmMiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vbW11X2Nv
bnRleHQuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2xpbnV4L2Nv
bmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL21tdV9jb250
ZXh0LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vZGVzYy5oIiAx
CgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL2xkdC5oIiAxCiMgMTUg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9sZHQuaCIKc3RydWN0IG1vZGlmeV9s
ZHRfbGR0X3MgewogICAgICAgIHVuc2lnbmVkIGludCBlbnRyeV9udW1iZXI7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBiYXNlX2FkZHI7CiAgICAgICAgdW5zaWduZWQgaW50IGxpbWl0OwogICAgICAg
IHVuc2lnbmVkIGludCBzZWdfMzJiaXQ6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgY29udGVudHM6
MjsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVhZF9leGVjX29ubHk6MTsKICAgICAgICB1bnNpZ25l
ZCBpbnQgbGltaXRfaW5fcGFnZXM6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgc2VnX25vdF9wcmVz
ZW50OjE7CiAgICAgICAgdW5zaWduZWQgaW50IHVzZWFibGU6MTsKfTsKIyA1ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvaW5jbHVkZS9hc20vZGVzYy5oIiAyCiMgNTIgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9pbmNsdWRlL2FzbS9kZXNjLmgiCnN0cnVjdCBkZXNjX3N0cnVjdCB7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBhLGI7Cn07CgpleHRlcm4gc3RydWN0IGRlc2Nfc3RydWN0IGdkdF90YWJsZVtd
OwpleHRlcm4gc3RydWN0IGRlc2Nfc3RydWN0ICppZHQsICpnZHQ7CgpzdHJ1Y3QgWGd0X2Rlc2Nf
c3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzaXplOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgYWRkcmVzcyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKfTsKIyA3NSAiL3Vzci9zcmMvbGlu
dXgtMi40LjEzL2luY2x1ZGUvYXNtL2Rlc2MuaCIKZXh0ZXJuIHN0cnVjdCBkZXNjX3N0cnVjdCBk
ZWZhdWx0X2xkdFtdOwpleHRlcm4gdm9pZCBzZXRfaW50cl9nYXRlKHVuc2lnbmVkIGludCBpcnEs
IHZvaWQgKiBhZGRyKTsKZXh0ZXJuIHZvaWQgc2V0X2xkdF9kZXNjKHVuc2lnbmVkIGludCBuLCB2
b2lkICphZGRyLCB1bnNpZ25lZCBpbnQgc2l6ZSk7CmV4dGVybiB2b2lkIHNldF90c3NfZGVzYyh1
bnNpZ25lZCBpbnQgbiwgdm9pZCAqYWRkcik7CgpzdGF0aWMgaW5saW5lIHZvaWQgY2xlYXJfTERU
KHZvaWQpCnsKICAgICAgICBpbnQgY3B1ID0gMDsKICAgICAgICBzZXRfbGR0X2Rlc2MoY3B1LCAm
ZGVmYXVsdF9sZHRbMF0sIDUpOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJsbGR0ICUl
YXgiOjoiYSIgKCgoKGNwdSk8PDIpICsgKDIwICsxKSk8PDMpKTsKfQoKCgoKc3RhdGljIGlubGlu
ZSB2b2lkIGxvYWRfTERUIChzdHJ1Y3QgbW1fc3RydWN0ICptbSkKewogICAgICAgIGludCBjcHUg
PSAwOwogICAgICAgIHZvaWQgKnNlZ21lbnRzID0gbW0tPmNvbnRleHQuc2VnbWVudHM7CiAgICAg
ICAgaW50IGNvdW50ID0gODE5MjsKCiAgICAgICAgaWYgKCFzZWdtZW50cykgewogICAgICAgICAg
ICAgICAgc2VnbWVudHMgPSAmZGVmYXVsdF9sZHRbMF07CiAgICAgICAgICAgICAgICBjb3VudCA9
IDU7CiAgICAgICAgfQoKICAgICAgICBzZXRfbGR0X2Rlc2MoY3B1LCBzZWdtZW50cywgY291bnQp
OwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJsbGR0ICUlYXgiOjoiYSIgKCgoKGNwdSk8
PDIpICsgKDIwICsxKSk8PDMpKTsKfQojIDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRl
L2FzbS9tbXVfY29udGV4dC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUv
YXNtL2F0b21pYy5oIiAxCiMgNyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL21t
dV9jb250ZXh0LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vcGdh
bGxvYy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvbGludXgvY29u
ZmlnLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vcGdhbGxvYy5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAx
CiMgNiAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNtL3BnYWxsb2MuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9maXhtYXAuaCIgMQojIDcgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMy9pbmNsdWRlL2FzbS9wZ2FsbG9jLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTMvaW5jbHVkZS9saW51eC90aHJlYWRzLmgiIDEKIyA4ICIvdXNyL3NyYy9saW51
eC0yLjQuMTMvaW5jbHVkZS9hc20vcGdhbGxvYy5oIiAyCiMgNTcgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMy9pbmNsdWRlL2FzbS9wZ2FsbG9jLmgiCnN0YXRpYyBpbmxpbmUgcGdkX3QgKmdldF9wZ2Rf
c2xvdyh2b2lkKQp7CiAgICAgICAgcGdkX3QgKnBnZCA9IChwZ2RfdCAqKV9fZ2V0X2ZyZWVfcGFn
ZXMoKCgweDIwIHwgMHgxMCB8IDB4NDAgfCAweDgwKSksMCk7CgogICAgICAgIGlmIChwZ2QpIHsK
ICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IChfX2J1aWx0aW5fY29u
c3RhbnRfcCgoKCgoKHVuc2lnbmVkIGxvbmcpKDB4QzAwMDAwMDApKSkvKDFVTCA8PCAyMikpICog
c2l6ZW9mKHBnZF90KSkpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKChwZ2QpKSwo
KDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKCgoKCh1bnNpZ25lZCBsb25nKSgw
eEMwMDAwMDAwKSkpLygxVUwgPDwgMjIpKSAqIHNpemVvZihwZ2RfdCkpKSkgOiBfX2NvbnN0YW50
X2NfbWVtc2V0KCgocGdkKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKCgo
KCgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKS8oMVVMIDw8IDIyKSkgKiBzaXplb2YocGdk
X3QpKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoKCgoKHVuc2lnbmVkIGxvbmcpKDB4QzAw
MDAwMDApKSkvKDFVTCA8PCAyMikpICogc2l6ZW9mKHBnZF90KSkpID8gX19tZW1zZXRfZ2VuZXJp
YygoKChwZ2QpKSksKCgoMCkpKSwoKCgoKCgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKS8o
MVVMIDw8IDIyKSkgKiBzaXplb2YocGdkX3QpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKChwZ2Qp
KSwoKDApKSwoKCgoKCh1bnNpZ25lZCBsb25nKSgweEMwMDAwMDAwKSkpLygxVUwgPDwgMjIpKSAq
IHNpemVvZihwZ2RfdCkpKSkpKTsKICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRf
cCgoMTAyNCAtICgoKCh1bnNpZ25lZCBsb25nKSgweEMwMDAwMDAwKSkpLygxVUwgPDwgMjIpKSkg
KiBzaXplb2YocGdkX3QpKSA/IF9fY29uc3RhbnRfbWVtY3B5KChwZ2QgKyAoKCgodW5zaWduZWQg
bG9uZykoMHhDMDAwMDAwMCkpKS8oMVVMIDw8IDIyKSkpLChzd2FwcGVyX3BnX2RpciArICgoKCh1
bnNpZ25lZCBsb25nKSgweEMwMDAwMDAwKSkpLygxVUwgPDwgMjIpKSksKCgxMDI0IC0gKCgoKHVu
c2lnbmVkIGxvbmcpKDB4QzAwMDAwMDApKSkvKDFVTCA8PCAyMikpKSAqIHNpemVvZihwZ2RfdCkp
KSA6IF9fbWVtY3B5KChwZ2QgKyAoKCgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKS8oMVVM
IDw8IDIyKSkpLChzd2FwcGVyX3BnX2RpciArICgoKCh1bnNpZ25lZCBsb25nKSgweEMwMDAwMDAw
KSkpLygxVUwgPDwgMjIpKSksKCgxMDI0IC0gKCgoKHVuc2lnbmVkIGxvbmcpKDB4QzAwMDAwMDAp
KSkvKDFVTCA8PCAyMikpKSAqIHNpemVvZihwZ2RfdCkpKSk7CiAgICAgICAgfQogICAgICAgIHJl
dHVybiBwZ2Q7Cn0KCgoKc3RhdGljIGlubGluZSBwZ2RfdCAqZ2V0X3BnZF9mYXN0KHZvaWQpCnsK
ICAgICAgICB1bnNpZ25lZCBsb25nICpyZXQ7CgogICAgICAgIGRvIHsgKytnZXRfY3VycmVudCgp
LT5wcmVlbXB0X2NvdW50OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyB9
IHdoaWxlICgwKTsKICAgICAgICBpZiAoKHJldCA9IChib290X2NwdV9kYXRhLnBnZF9xdWljaykp
ICE9ICgodm9pZCAqKTApKSB7CiAgICAgICAgICAgICAgICAoYm9vdF9jcHVfZGF0YS5wZ2RfcXVp
Y2spID0gKHVuc2lnbmVkIGxvbmcgKikoKnJldCk7CiAgICAgICAgICAgICAgICByZXRbMF0gPSAw
OwogICAgICAgICAgICAgICAgKGJvb3RfY3B1X2RhdGEucGd0YWJsZV9jYWNoZV9zeiktLTsKICAg
ICAgICAgICAgICAgIGRvIHsgLS1nZXRfY3VycmVudCgpLT5wcmVlbXB0X2NvdW50OyBfX2FzbV9f
IF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyBpZiAoKGdldF9jdXJyZW50KCktPnByZWVt
cHRfY291bnQgPT0gMCkgJiYgZ2V0X2N1cnJlbnQoKS0+bmVlZF9yZXNjaGVkKSBwcmVlbXB0X3Nj
aGVkdWxlKCk7IH0gd2hpbGUgKDApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBk
byB7IC0tZ2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9jb3VudDsgX19hc21fXyBfX3ZvbGF0aWxlX18o
IiI6IDogOiJtZW1vcnkiKTsgaWYgKChnZXRfY3VycmVudCgpLT5wcmVlbXB0X2NvdW50ID09IDAp
ICYmIGdldF9jdXJyZW50KCktPm5lZWRfcmVzY2hlZCkgcHJlZW1wdF9zY2hlZHVsZSgpOyB9IHdo
aWxlICgwKTsKICAgICAgICAgICAgICAgIHJldCA9ICh1bnNpZ25lZCBsb25nICopZ2V0X3BnZF9z
bG93KCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAocGdkX3QgKilyZXQ7Cn0KCnN0YXRpYyBp
bmxpbmUgdm9pZCBmcmVlX3BnZF9mYXN0KHBnZF90ICpwZ2QpCnsKICAgICAgICBkbyB7ICsrZ2V0
X2N1cnJlbnQoKS0+cHJlZW1wdF9jb3VudDsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJt
ZW1vcnkiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgKih1bnNpZ25lZCBsb25nICopcGdkID0gKHVu
c2lnbmVkIGxvbmcpIChib290X2NwdV9kYXRhLnBnZF9xdWljayk7CiAgICAgICAgKGJvb3RfY3B1
X2RhdGEucGdkX3F1aWNrKSA9ICh1bnNpZ25lZCBsb25nICopIHBnZDsKICAgICAgICAoYm9vdF9j
cHVfZGF0YS5wZ3RhYmxlX2NhY2hlX3N6KSsrOwogICAgICAgIGRvIHsgLS1nZXRfY3VycmVudCgp
LT5wcmVlbXB0X2NvdW50OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyBp
ZiAoKGdldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQgPT0gMCkgJiYgZ2V0X2N1cnJlbnQoKS0+
bmVlZF9yZXNjaGVkKSBwcmVlbXB0X3NjaGVkdWxlKCk7IH0gd2hpbGUgKDApOwp9CgpzdGF0aWMg
aW5saW5lIHZvaWQgZnJlZV9wZ2Rfc2xvdyhwZ2RfdCAqcGdkKQp7CgoKCgoKCgogICAgICAgIGZy
ZWVfcGFnZXMoKCh1bnNpZ25lZCBsb25nKXBnZCksMCk7Cgp9CgpzdGF0aWMgaW5saW5lIHB0ZV90
ICpwdGVfYWxsb2Nfb25lKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHJl
c3MpCnsKICAgICAgICBwdGVfdCAqcHRlOwoKICAgICAgICBwdGUgPSAocHRlX3QgKikgX19nZXRf
ZnJlZV9wYWdlcygoKDB4MjAgfCAweDEwIHwgMHg0MCB8IDB4ODApKSwwKTsKICAgICAgICBpZiAo
cHRlKQogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDApID8gKF9fYnVpbHRp
bl9jb25zdGFudF9wKCgoMVVMIDw8IDEyKSkpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1z
ZXQoKCgodm9pZCAqKShwdGUpKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSks
KCgoMVVMIDw8IDEyKSkpKSA6IF9fY29uc3RhbnRfY19tZW1zZXQoKCgodm9pZCAqKShwdGUpKSks
KCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKCgoMVVMIDw8IDEyKSkpKSkgOiAo
X19idWlsdGluX2NvbnN0YW50X3AoKCgxVUwgPDwgMTIpKSkgPyBfX21lbXNldF9nZW5lcmljKCgo
KCh2b2lkICopKHB0ZSkpKSksKCgoMCkpKSwoKCgoMVVMIDw8IDEyKSkpKSkgOiBfX21lbXNldF9n
ZW5lcmljKCgoKHZvaWQgKikocHRlKSkpLCgoMCkpLCgoKDFVTCA8PCAxMikpKSkpKTsKICAgICAg
ICByZXR1cm4gcHRlOwp9CgpzdGF0aWMgaW5saW5lIHB0ZV90ICpwdGVfYWxsb2Nfb25lX2Zhc3Qo
c3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKewogICAgICAgIHVu
c2lnbmVkIGxvbmcgKnJldDsKCiAgICAgICAgZG8geyArK2dldF9jdXJyZW50KCktPnByZWVtcHRf
Y291bnQ7IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDAp
OwogICAgICAgIGlmICgocmV0ID0gKHVuc2lnbmVkIGxvbmcgKikoYm9vdF9jcHVfZGF0YS5wdGVf
cXVpY2spKSAhPSAoKHZvaWQgKikwKSkgewogICAgICAgICAgICAgICAgKGJvb3RfY3B1X2RhdGEu
cHRlX3F1aWNrKSA9ICh1bnNpZ25lZCBsb25nICopKCpyZXQpOwogICAgICAgICAgICAgICAgcmV0
WzBdID0gcmV0WzFdOwogICAgICAgICAgICAgICAgKGJvb3RfY3B1X2RhdGEucGd0YWJsZV9jYWNo
ZV9zeiktLTsKICAgICAgICB9CiAgICAgICAgZG8geyAtLWdldF9jdXJyZW50KCktPnByZWVtcHRf
Y291bnQ7IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IGlmICgoZ2V0X2N1
cnJlbnQoKS0+cHJlZW1wdF9jb3VudCA9PSAwKSAmJiBnZXRfY3VycmVudCgpLT5uZWVkX3Jlc2No
ZWQpIHByZWVtcHRfc2NoZWR1bGUoKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIChwdGVf
dCAqKXJldDsKfQoKc3RhdGljIGlubGluZSB2b2lkIHB0ZV9mcmVlX2Zhc3QocHRlX3QgKnB0ZSkK
ewogICAgICAgIGRvIHsgKytnZXRfY3VycmVudCgpLT5wcmVlbXB0X2NvdW50OyBfX2FzbV9fIF9f
dm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlICgwKTsKICAgICAgICAqKHVuc2ln
bmVkIGxvbmcgKilwdGUgPSAodW5zaWduZWQgbG9uZykgKGJvb3RfY3B1X2RhdGEucHRlX3F1aWNr
KTsKICAgICAgICAoYm9vdF9jcHVfZGF0YS5wdGVfcXVpY2spID0gKHVuc2lnbmVkIGxvbmcgKikg
cHRlOwogICAgICAgIChib290X2NwdV9kYXRhLnBndGFibGVfY2FjaGVfc3opKys7CiAgICAgICAg
ZG8geyAtLWdldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQ7IF9fYXNtX18gX192b2xhdGlsZV9f
KCIiOiA6IDoibWVtb3J5Iik7IGlmICgoZ2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9jb3VudCA9PSAw
KSAmJiBnZXRfY3VycmVudCgpLT5uZWVkX3Jlc2NoZWQpIHByZWVtcHRfc2NoZWR1bGUoKTsgfSB3
aGlsZSAoMCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBwdGVfZnJlZV9zbG93KHB0ZV90ICpwdGUp
CnsKICAgICAgICBmcmVlX3BhZ2VzKCgodW5zaWduZWQgbG9uZylwdGUpLDApOwp9CiMgMTY0ICIv
dXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vcGdhbGxvYy5oIgpleHRlcm4gaW50IGRv
X2NoZWNrX3BndF9jYWNoZShpbnQsIGludCk7CiMgMTg2ICIvdXNyL3NyYy9saW51eC0yLjQuMTMv
aW5jbHVkZS9hc20vcGdhbGxvYy5oIgpzdGF0aWMgaW5saW5lIHZvaWQgZmx1c2hfdGxiX21tKHN0
cnVjdCBtbV9zdHJ1Y3QgKm1tKQp7CiAgICAgICAgaWYgKG1tID09IGdldF9jdXJyZW50KCktPmFj
dGl2ZV9tbSkKICAgICAgICAgICAgICAgIGRvIHsgdW5zaWduZWQgaW50IHRtcHJlZzsgX19hc21f
XyBfX3ZvbGF0aWxlX18oICJtb3ZsICUlY3IzLCAlMDsgICMgZmx1c2ggVExCIFxuIiAibW92bCAl
MCwgJSVjcjM7ICAgICAgICAgICAgICBcbiIgOiAiPXIiICh0bXByZWcpIDo6ICJtZW1vcnkiKTsg
fSB3aGlsZSAoMCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaF90bGJfcGFnZShzdHJ1Y3Qg
dm1fYXJlYV9zdHJ1Y3QgKnZtYSwKICAgICAgICB1bnNpZ25lZCBsb25nIGFkZHIpCnsKICAgICAg
ICBpZiAodm1hLT52bV9tbSA9PSBnZXRfY3VycmVudCgpLT5hY3RpdmVfbW0pCiAgICAgICAgICAg
ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiaW52bHBnICUwIjogOiJtIiAoKihjaGFyICopIGFk
ZHIpKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGZsdXNoX3RsYl9yYW5nZShzdHJ1Y3QgbW1fc3Ry
dWN0ICptbSwKICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCkK
ewogICAgICAgIGlmIChtbSA9PSBnZXRfY3VycmVudCgpLT5hY3RpdmVfbW0pCiAgICAgICAgICAg
ICAgICBkbyB7IHVuc2lnbmVkIGludCB0bXByZWc7IF9fYXNtX18gX192b2xhdGlsZV9fKCAibW92
bCAlJWNyMywgJTA7ICAjIGZsdXNoIFRMQiBcbiIgIm1vdmwgJTAsICUlY3IzOyAgICAgICAgICAg
ICAgXG4iIDogIj1yIiAodG1wcmVnKSA6OiAibWVtb3J5Iik7IH0gd2hpbGUgKDApOwp9CiMgMjM4
ICIvdXNyL3NyYy9saW51eC0yLjQuMTMvaW5jbHVkZS9hc20vcGdhbGxvYy5oIgpzdGF0aWMgaW5s
aW5lIHZvaWQgZmx1c2hfdGxiX3BndGFibGVzKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2ln
bmVkIGxvbmcgZW5kKQp7Cgp9CiMgOCAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNt
L21tdV9jb250ZXh0LmgiIDIKIyAyMyAiL3Vzci9zcmMvbGludXgtMi40LjEzL2luY2x1ZGUvYXNt
L21tdV9jb250ZXh0LmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBlbnRlcl9sYXp5X3RsYihzdHJ1Y3Qg
bW1fc3RydWN0ICptbSwgc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHVuc2lnbmVkIGNwdSkKewp9
CgoKc3RhdGljIGlubGluZSB2b2lkIHN3aXRjaF9tbShzdHJ1Y3QgbW1fc3RydWN0ICpwcmV2LCBz
dHJ1Y3QgbW1fc3RydWN0ICpuZXh0LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgdW5zaWduZWQg
Y3B1KQp7CgogICAgICAgIGlmICgoZ2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9jb3VudCkgPT0gMCkK
ICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIuYnl0ZSAweDBmLDB4MGIiKTsK
CiAgICAgICAgaWYgKHByZXYgIT0gbmV4dCkgewoKICAgICAgICAgICAgICAgIGNsZWFyX2JpdChj
cHUsICZwcmV2LT5jcHVfdm1fbWFzayk7CgoKCiAgICAgICAgICAgICAgICBpZiAocHJldi0+Y29u
dGV4dC5zZWdtZW50cyAhPSBuZXh0LT5jb250ZXh0LnNlZ21lbnRzKQogICAgICAgICAgICAgICAg
ICAgICAgICBsb2FkX0xEVChuZXh0KTsKCgoKCiAgICAgICAgICAgICAgICBzZXRfYml0KGNwdSwg
Jm5leHQtPmNwdV92bV9tYXNrKTsKICAgICAgICAgICAgICAgIHNldF9iaXQoY3B1LCAmbmV4dC0+
Y29udGV4dC5jcHV2YWxpZCk7CgogICAgICAgICAgICAgICAgYXNtIHZvbGF0aWxlKCJtb3ZsICUw
LCUlY3IzIjogOiJyIiAoKCh1bnNpZ25lZCBsb25nKShuZXh0LT5wZ2QpLSgodW5zaWduZWQgbG9u
ZykoMHhDMDAwMDAwMCkpKSkpOwogICAgICAgIH0KIyA2NiAiL3Vzci9zcmMvbGludXgtMi40LjEz
L2luY2x1ZGUvYXNtL21tdV9jb250ZXh0LmgiCn0KIyAzNCAia2VybmVsL3NjaGVkLmMiIDIKCmV4
dGVybiB2b2lkIHRpbWVyX2JoKHZvaWQpOwpleHRlcm4gdm9pZCB0cXVldWVfYmgodm9pZCk7CmV4
dGVybiB2b2lkIGltbWVkaWF0ZV9iaCh2b2lkKTsKCgoKCgp1bnNpZ25lZCBzZWN1cmViaXRzID0g
MHgwMDAwMDAwMDsKCmV4dGVybiB2b2lkIG1lbV91c2Uodm9pZCk7CiMgNzggImtlcm5lbC9zY2hl
ZC5jIgpzdHJ1Y3QgdGFza19zdHJ1Y3QgKiBpbml0X3Rhc2tzWzFdID0geyYoaW5pdF90YXNrX3Vu
aW9uLnRhc2spLCB9OwojIDkxICJrZXJuZWwvc2NoZWQuYyIKc3BpbmxvY2tfdCBydW5xdWV1ZV9s
b2NrIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgxIDw8ICgoNSkpKSksIF9fc2VjdGlvbl9f
KCIuZGF0YS5jYWNoZWxpbmVfYWxpZ25lZCIpKSkgPSAoc3BpbmxvY2tfdCkgeyB9Owpyd2xvY2tf
dCB0YXNrbGlzdF9sb2NrIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgxIDw8ICgoNSkpKSks
IF9fc2VjdGlvbl9fKCIuZGF0YS5jYWNoZWxpbmVfYWxpZ25lZCIpKSkgPSAocndsb2NrX3QpIHsg
fTsKCnN0YXRpYyBzdHJ1Y3QgbGlzdF9oZWFkIHJ1bnF1ZXVlX2hlYWQgPSB7ICYocnVucXVldWVf
aGVhZCksICYocnVucXVldWVfaGVhZCkgfTsKCgoKCgpzdGF0aWMgdW5pb24gewogICAgICAgIHN0
cnVjdCBzY2hlZHVsZV9kYXRhIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAq
IGN1cnI7CiAgICAgICAgICAgICAgICBjeWNsZXNfdCBsYXN0X3NjaGVkdWxlOwogICAgICAgIH0g
c2NoZWR1bGVfZGF0YTsKICAgICAgICBjaGFyIF9fcGFkIFsoMSA8PCAoKDUpKSldOwp9IGFsaWdu
ZWRfZGF0YSBbMV0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oKDEgPDwgKCg1KSkpKSwgX19z
ZWN0aW9uX18oIi5kYXRhLmNhY2hlbGluZV9hbGlnbmVkIikpKSA9IHsge3smKGluaXRfdGFza191
bmlvbi50YXNrKSwwfX19OwoKCgoKc3RydWN0IGtlcm5lbF9zdGF0IGtzdGF0OwpleHRlcm4gc3Ry
dWN0IHRhc2tfc3RydWN0ICpjaGlsZF9yZWFwZXI7CiMgMTI3ICJrZXJuZWwvc2NoZWQuYyIKdm9p
ZCBzY2hlZHVsaW5nX2Z1bmN0aW9uc19zdGFydF9oZXJlKHZvaWQpIHsgfQojIDE0MyAia2VybmVs
L3NjaGVkLmMiCnN0YXRpYyBpbmxpbmUgaW50IGdvb2RuZXNzKHN0cnVjdCB0YXNrX3N0cnVjdCAq
IHAsIGludCB0aGlzX2NwdSwgc3RydWN0IG1tX3N0cnVjdCAqdGhpc19tbSkKewogICAgICAgIGlu
dCB3ZWlnaHQ7CgoKCgoKCiAgICAgICAgd2VpZ2h0ID0gLTE7CiAgICAgICAgaWYgKHAtPnBvbGlj
eSAmIDB4MTApCiAgICAgICAgICAgICAgICBnb3RvIG91dDsKCgoKCiAgICAgICAgaWYgKHAtPnBv
bGljeSA9PSAwKSB7CgoKCgoKCgogICAgICAgICAgICAgICAgd2VpZ2h0ID0gcC0+Y291bnRlcjsK
ICAgICAgICAgICAgICAgIGlmICghd2VpZ2h0KQogICAgICAgICAgICAgICAgICAgICAgICBnb3Rv
IG91dDsKIyAxNzkgImtlcm5lbC9zY2hlZC5jIgogICAgICAgICAgICAgICAgaWYgKHAtPm1tID09
IHRoaXNfbW0gfHwgIXAtPm1tKQogICAgICAgICAgICAgICAgICAgICAgICB3ZWlnaHQgKz0gMTsK
ICAgICAgICAgICAgICAgIHdlaWdodCArPSAyMCAtIHAtPm5pY2U7CiAgICAgICAgICAgICAgICBn
b3RvIG91dDsKICAgICAgICB9CgoKCgoKCiAgICAgICAgd2VpZ2h0ID0gMTAwMCArIHAtPnJ0X3By
aW9yaXR5OwpvdXQ6CiAgICAgICAgcmV0dXJuIHdlaWdodDsKfQoKCgoKCnN0YXRpYyBpbmxpbmUg
aW50IHByZWVtcHRpb25fZ29vZG5lc3Moc3RydWN0IHRhc2tfc3RydWN0ICogcHJldiwgc3RydWN0
IHRhc2tfc3RydWN0ICogcCwgaW50IGNwdSkKewogICAgICAgIHJldHVybiBnb29kbmVzcyhwLCBj
cHUsIHByZXYtPmFjdGl2ZV9tbSkgLSBnb29kbmVzcyhwcmV2LCBjcHUsIHByZXYtPmFjdGl2ZV9t
bSk7Cn0KCgoKCgoKc3RhdGljIHZvaWQgcmVzY2hlZHVsZV9pZGxlKHN0cnVjdCB0YXNrX3N0cnVj
dCAqIHApIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCnN0YXRpYyB2b2lkIHJlc2NoZWR1
bGVfaWRsZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKiBwKQp7CiMgMjkzICJrZXJuZWwvc2NoZWQuYyIK
ICAgICAgICBpbnQgdGhpc19jcHUgPSAwOwogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNr
OwoKICAgICAgICB0c2sgPSBhbGlnbmVkX2RhdGFbKHRoaXNfY3B1KV0uc2NoZWR1bGVfZGF0YS5j
dXJyOwogICAgICAgIGlmIChwcmVlbXB0aW9uX2dvb2RuZXNzKHRzaywgcCwgdGhpc19jcHUpID4g
MCkKICAgICAgICAgICAgICAgIHRzay0+bmVlZF9yZXNjaGVkID0gMTsKCn0KIyAzMDkgImtlcm5l
bC9zY2hlZC5jIgpzdGF0aWMgaW5saW5lIHZvaWQgYWRkX3RvX3J1bnF1ZXVlKHN0cnVjdCB0YXNr
X3N0cnVjdCAqIHApCnsKICAgICAgICBsaXN0X2FkZCgmcC0+cnVuX2xpc3QsICZydW5xdWV1ZV9o
ZWFkKTsKICAgICAgICBucl9ydW5uaW5nKys7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBtb3ZlX2xh
c3RfcnVucXVldWUoc3RydWN0IHRhc2tfc3RydWN0ICogcCkKewogICAgICAgIGxpc3RfZGVsKCZw
LT5ydW5fbGlzdCk7CiAgICAgICAgbGlzdF9hZGRfdGFpbCgmcC0+cnVuX2xpc3QsICZydW5xdWV1
ZV9oZWFkKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIG1vdmVfZmlyc3RfcnVucXVldWUoc3RydWN0
IHRhc2tfc3RydWN0ICogcCkKewogICAgICAgIGxpc3RfZGVsKCZwLT5ydW5fbGlzdCk7CiAgICAg
ICAgbGlzdF9hZGQoJnAtPnJ1bl9saXN0LCAmcnVucXVldWVfaGVhZCk7Cn0KIyAzMzUgImtlcm5l
bC9zY2hlZC5jIgpzdGF0aWMgaW5saW5lIGludCB0cnlfdG9fd2FrZV91cChzdHJ1Y3QgdGFza19z
dHJ1Y3QgKiBwLCBpbnQgc3luY2hyb25vdXMpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdz
OwogICAgICAgIGludCBzdWNjZXNzID0gMDsKCgoKCiAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9s
YXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxhZ3MpOiA6Im1lbW9yeSIp
OyBkbyB7IGRvIHsgKytnZXRfY3VycmVudCgpLT5wcmVlbXB0X2NvdW50OyBfX2FzbV9fIF9fdm9s
YXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlICgwKTsgKHZvaWQpKCZydW5xdWV1ZV9s
b2NrKTsgfSB3aGlsZSgwKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgcC0+c3RhdGUgPSAwOwogICAg
ICAgIGlmICh0YXNrX29uX3J1bnF1ZXVlKHApKQogICAgICAgICAgICAgICAgZ290byBvdXQ7CiAg
ICAgICAgYWRkX3RvX3J1bnF1ZXVlKHApOwogICAgICAgIGlmICghc3luY2hyb25vdXMgfHwgIShw
LT5jcHVzX2FsbG93ZWQgJiAoMSA8PCAwKSkpCiAgICAgICAgICAgICAgICByZXNjaGVkdWxlX2lk
bGUocCk7CiAgICAgICAgc3VjY2VzcyA9IDE7Cm91dDoKICAgICAgICBkbyB7IGRvIHsgZG8geyB9
IHdoaWxlKDApOyBkbyB7IC0tZ2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9jb3VudDsgX19hc21fXyBf
X3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgaWYgKChnZXRfY3VycmVudCgpLT5wcmVlbXB0
X2NvdW50ID09IDApICYmIGdldF9jdXJyZW50KCktPm5lZWRfcmVzY2hlZCkgcHJlZW1wdF9zY2hl
ZHVsZSgpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJw
dXNobCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAo
MCk7CiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7Cn0KCmlubGluZSBpbnQgd2FrZV91cF9wcm9jZXNz
KHN0cnVjdCB0YXNrX3N0cnVjdCAqIHApCnsKICAgICAgICByZXR1cm4gdHJ5X3RvX3dha2VfdXAo
cCwgMCk7Cn0KCnN0YXRpYyB2b2lkIHByb2Nlc3NfdGltZW91dCh1bnNpZ25lZCBsb25nIF9fZGF0
YSkKewogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqIHAgPSAoc3RydWN0IHRhc2tfc3RydWN0
ICopIF9fZGF0YTsKCiAgICAgICAgd2FrZV91cF9wcm9jZXNzKHApOwp9CiMgMzk0ICJrZXJuZWwv
c2NoZWQuYyIKc2lnbmVkIGxvbmcgc2NoZWR1bGVfdGltZW91dChzaWduZWQgbG9uZyB0aW1lb3V0
KQp7CiAgICAgICAgc3RydWN0IHRpbWVyX2xpc3QgdGltZXI7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBleHBpcmU7CgogICAgICAgIHN3aXRjaCAodGltZW91dCkKICAgICAgICB7CiAgICAgICAgY2Fz
ZSAoKGxvbmcpKH4wVUw+PjEpKToKCgoKCgoKCiAgICAgICAgICAgICAgICBzY2hlZHVsZSgpOwog
ICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgZGVmYXVsdDoKCgoKCgoKCiAgICAgICAg
ICAgICAgICBpZiAodGltZW91dCA8IDApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHByaW50aygiPDM+IiAic2NoZWR1bGVfdGltZW91dDogd3JvbmcgdGltZW91dCAi
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUgJWx4IGZyb20gJXBcbiIsIHRp
bWVvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2J1aWx0aW5fcmV0dXJuX2Fk
ZHJlc3MoMCkpOwogICAgICAgICAgICAgICAgICAgICAgICBnZXRfY3VycmVudCgpLT5zdGF0ZSA9
IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgICAgfQog
ICAgICAgIH0KCiAgICAgICAgZXhwaXJlID0gdGltZW91dCArIGppZmZpZXM7CgogICAgICAgIGlu
aXRfdGltZXIoJnRpbWVyKTsKICAgICAgICB0aW1lci5leHBpcmVzID0gZXhwaXJlOwogICAgICAg
IHRpbWVyLmRhdGEgPSAodW5zaWduZWQgbG9uZykgZ2V0X2N1cnJlbnQoKTsKICAgICAgICB0aW1l
ci5mdW5jdGlvbiA9IHByb2Nlc3NfdGltZW91dDsKCiAgICAgICAgYWRkX3RpbWVyKCZ0aW1lcik7
CiAgICAgICAgc2NoZWR1bGUoKTsKICAgICAgICBkZWxfdGltZXIoJnRpbWVyKTsKCiAgICAgICAg
dGltZW91dCA9IGV4cGlyZSAtIGppZmZpZXM7Cgogb3V0OgogICAgICAgIHJldHVybiB0aW1lb3V0
IDwgMCA/IDAgOiB0aW1lb3V0Owp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3NjaGVkdWxl
X3RhaWwoc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2KQp7CiMgNTE0ICJrZXJuZWwvc2NoZWQuYyIK
ICAgICAgICBwcmV2LT5wb2xpY3kgJj0gfjB4MTA7Cgp9Cgp2b2lkIHNjaGVkdWxlX3RhaWwoc3Ry
dWN0IHRhc2tfc3RydWN0ICpwcmV2KQp7CiAgICAgICAgX19zY2hlZHVsZV90YWlsKHByZXYpOwog
ICAgICAgIGRvIHsgLS1nZXRfY3VycmVudCgpLT5wcmVlbXB0X2NvdW50OyBfX2FzbV9fIF9fdm9s
YXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyBpZiAoKGdldF9jdXJyZW50KCktPnByZWVtcHRfY291
bnQgPT0gMCkgJiYgZ2V0X2N1cnJlbnQoKS0+bmVlZF9yZXNjaGVkKSBwcmVlbXB0X3NjaGVkdWxl
KCk7IH0gd2hpbGUgKDApOwp9CiMgNTM0ICJrZXJuZWwvc2NoZWQuYyIKIF9fYXR0cmlidXRlX18o
KHJlZ3Bhcm0oMCkpKSB2b2lkIHNjaGVkdWxlKHZvaWQpCnsKICAgICAgICBzdHJ1Y3Qgc2NoZWR1
bGVfZGF0YSAqIHNjaGVkX2RhdGE7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LCAq
bmV4dCwgKnA7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqdG1wOwogICAgICAgIGludCB0aGlz
X2NwdSwgYzsKCgogICAgICAgIHByZWZldGNodygmcnVucXVldWVfbG9jayk7CgogICAgICAgIGRv
IHsgKytnZXRfY3VycmVudCgpLT5wcmVlbXB0X2NvdW50OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygi
IjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlICgwKTsKCiAgICAgICAgaWYgKCFnZXRfY3VycmVudCgp
LT5hY3RpdmVfbW0pIF9fYXNtX18gX192b2xhdGlsZV9fKCIuYnl0ZSAweDBmLDB4MGIiKTsKbmVl
ZF9yZXNjaGVkX2JhY2s6CiAgICAgICAgcHJldiA9IGdldF9jdXJyZW50KCk7CiAgICAgICAgdGhp
c19jcHUgPSBwcmV2LT5wcm9jZXNzb3I7CgogICAgICAgIGlmICgoeyBpbnQgX19jcHUgPSAwOyAo
KCh2b2lkKSgoX19jcHUpKSwgaXJxX3N0YXRbMF0uX19sb2NhbF9pcnFfY291bnQpICsgKCh2b2lk
KSgoX19jcHUpKSwgaXJxX3N0YXRbMF0uX19sb2NhbF9iaF9jb3VudCkgIT0gMCk7IH0pKQogICAg
ICAgICAgICAgICAgZ290byBzY2hlZHVsaW5nX2luX2ludGVycnVwdDsKCiAgICAgICAgZG8geyBp
ZiAocHJldi0+bG9ja19kZXB0aCA+PSAwKSBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgZG8geyAtLWdl
dF9jdXJyZW50KCktPnByZWVtcHRfY291bnQ7IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoi
bWVtb3J5Iik7IGlmICgoZ2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9jb3VudCA9PSAwKSAmJiBnZXRf
Y3VycmVudCgpLT5uZWVkX3Jlc2NoZWQpIHByZWVtcHRfc2NoZWR1bGUoKTsgfSB3aGlsZSAoMCk7
IH0gd2hpbGUgKDApOyBkbyB7IH0gd2hpbGUgKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygic3Rp
IjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlICgwKTsKCgoKCgogICAgICAgIHNjaGVkX2RhdGEgPSAm
IGFsaWduZWRfZGF0YVt0aGlzX2NwdV0uc2NoZWR1bGVfZGF0YTsKCiAgICAgICAgZG8geyBfX2Fz
bV9fIF9fdm9sYXRpbGVfXygiY2xpIjogOiA6Im1lbW9yeSIpOyBkbyB7IGRvIHsgKytnZXRfY3Vy
cmVudCgpLT5wcmVlbXB0X2NvdW50OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9y
eSIpOyB9IHdoaWxlICgwKTsgKHZvaWQpKCZydW5xdWV1ZV9sb2NrKTsgfSB3aGlsZSgwKTsgfSB3
aGlsZSAoMCk7CgoKICAgICAgICBpZiAocHJldi0+cG9saWN5ID09IDIpCiAgICAgICAgICAgICAg
ICBnb3RvIG1vdmVfcnJfbGFzdDsKbW92ZV9ycl9iYWNrOgoKCiAgICAgICAgaWYgKChnZXRfY3Vy
cmVudCgpLT5wcmVlbXB0X2NvdW50KSAmIDB4NDAwMDAwMDApIGdvdG8gdHJlYXRfbGlrZV9ydW47
CgogICAgICAgIHN3aXRjaCAocHJldi0+c3RhdGUpIHsKICAgICAgICAgICAgICAgIGNhc2UgMToK
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNpZ25hbF9wZW5kaW5nKHByZXYpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldi0+c3RhdGUgPSAwOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICBkZWxfZnJvbV9ydW5x
dWV1ZShwcmV2KTsKICAgICAgICAgICAgICAgIGNhc2UgMDo7CiAgICAgICAgfQoKICAgICAgICB0
cmVhdF9saWtlX3J1bjoKCiAgICAgICAgcHJldi0+bmVlZF9yZXNjaGVkID0gMDsKCgoKCgpyZXBl
YXRfc2NoZWR1bGU6CgoKCiAgICAgICAgbmV4dCA9ICgmKGluaXRfdGFza191bmlvbi50YXNrKSk7
CiAgICAgICAgYyA9IC0xMDAwOwogICAgICAgIGlmICh0YXNrX29uX3J1bnF1ZXVlKHByZXYpKQog
ICAgICAgICAgICAgICAgZ290byBzdGlsbF9ydW5uaW5nOwoKc3RpbGxfcnVubmluZ19iYWNrOgog
ICAgICAgIGZvciAodG1wID0gKCZydW5xdWV1ZV9oZWFkKS0+bmV4dCwgcHJlZmV0Y2godG1wLT5u
ZXh0KTsgdG1wICE9ICgmcnVucXVldWVfaGVhZCk7IHRtcCA9IHRtcC0+bmV4dCwgcHJlZmV0Y2go
dG1wLT5uZXh0KSkgewogICAgICAgICAgICAgICAgcCA9ICgoc3RydWN0IHRhc2tfc3RydWN0ICop
KChjaGFyICopKHRtcCktKHVuc2lnbmVkIGxvbmcpKCYoKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTAp
LT5ydW5fbGlzdCkpKTsKICAgICAgICAgICAgICAgIGlmICgoMSkpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IHdlaWdodCA9IGdvb2RuZXNzKHAsIHRoaXNfY3B1LCBwcmV2LT5hY3RpdmVf
bW0pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAod2VpZ2h0ID4gYykKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjID0gd2VpZ2h0LCBuZXh0ID0gcDsKICAgICAgICAgICAgICAg
IH0KICAgICAgICB9CgoKICAgICAgICBpZiAoIWMpCiAgICAgICAgICAgICAgICBnb3RvIHJlY2Fs
Y3VsYXRlOwoKCgoKCiAgICAgICAgc2NoZWRfZGF0YS0+Y3VyciA9IG5leHQ7CgoKCgogICAgICAg
IGRvIHsgZG8geyBkbyB7IH0gd2hpbGUoMCk7IGRvIHsgLS1nZXRfY3VycmVudCgpLT5wcmVlbXB0
X2NvdW50OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyBpZiAoKGdldF9j
dXJyZW50KCktPnByZWVtcHRfY291bnQgPT0gMCkgJiYgZ2V0X2N1cnJlbnQoKS0+bmVlZF9yZXNj
aGVkKSBwcmVlbXB0X3NjaGVkdWxlKCk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsgX19hc21f
XyBfX3ZvbGF0aWxlX18oInN0aSI6IDogOiJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7CgogICAgICAg
IGlmIChwcmV2ID09IG5leHQpIHsKCiAgICAgICAgICAgICAgICBwcmV2LT5wb2xpY3kgJj0gfjB4
MTA7CiAgICAgICAgICAgICAgICBnb3RvIHNhbWVfcHJvY2VzczsKICAgICAgICB9CiMgNjQ5ICJr
ZXJuZWwvc2NoZWQuYyIKICAgICAgICBrc3RhdC5jb250ZXh0X3N3dGNoKys7CiMgNjU5ICJrZXJu
ZWwvc2NoZWQuYyIKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAgewogICAgICAgICAg
ICAgICAgc3RydWN0IG1tX3N0cnVjdCAqbW0gPSBuZXh0LT5tbTsKICAgICAgICAgICAgICAgIHN0
cnVjdCBtbV9zdHJ1Y3QgKm9sZG1tID0gcHJldi0+YWN0aXZlX21tOwogICAgICAgICAgICAgICAg
aWYgKCFtbSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV4dC0+YWN0aXZlX21tKSBf
X2FzbV9fIF9fdm9sYXRpbGVfXygiLmJ5dGUgMHgwZiwweDBiIik7CiAgICAgICAgICAgICAgICAg
ICAgICAgIG5leHQtPmFjdGl2ZV9tbSA9IG9sZG1tOwogICAgICAgICAgICAgICAgICAgICAgICBh
dG9taWNfaW5jKCZvbGRtbS0+bW1fY291bnQpOwogICAgICAgICAgICAgICAgICAgICAgICBlbnRl
cl9sYXp5X3RsYihvbGRtbSwgbmV4dCwgdGhpc19jcHUpOwogICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHQtPmFjdGl2ZV9tbSAhPSBtbSkgX19h
c21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwogICAgICAgICAgICAgICAgICAg
ICAgICBzd2l0Y2hfbW0ob2xkbW0sIG1tLCBuZXh0LCB0aGlzX2NwdSk7CiAgICAgICAgICAgICAg
ICB9CgogICAgICAgICAgICAgICAgaWYgKCFwcmV2LT5tbSkgewogICAgICAgICAgICAgICAgICAg
ICAgICBwcmV2LT5hY3RpdmVfbW0gPSAoKHZvaWQgKikwKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgbW1kcm9wKG9sZG1tKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgoKCgoKICAgICAg
ICBkbyB7IGFzbSB2b2xhdGlsZSgicHVzaGwgJSVlc2lcblx0IiAicHVzaGwgJSVlZGlcblx0IiAi
cHVzaGwgJSVlYnBcblx0IiAibW92bCAlJWVzcCwlMFxuXHQiICJtb3ZsICUzLCUlZXNwXG5cdCIg
Im1vdmwgJDFmLCUxXG5cdCIgInB1c2hsICU0XG5cdCIgImptcCBfX3N3aXRjaF90b1xuIiAiMTpc
dCIgInBvcGwgJSVlYnBcblx0IiAicG9wbCAlJWVkaVxuXHQiICJwb3BsICUlZXNpXG5cdCIgOiI9
bSIgKHByZXYtPnRocmVhZC5lc3ApLCI9bSIgKHByZXYtPnRocmVhZC5laXApLCAiPWIiIChwcmV2
KSA6Im0iIChuZXh0LT50aHJlYWQuZXNwKSwibSIgKG5leHQtPnRocmVhZC5laXApLCAiYSIgKHBy
ZXYpLCAiZCIgKG5leHQpLCAiYiIgKHByZXYpKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgX19zY2hl
ZHVsZV90YWlsKHByZXYpOwoKc2FtZV9wcm9jZXNzOgogICAgICAgIGRvIHsgaWYgKGdldF9jdXJy
ZW50KCktPmxvY2tfZGVwdGggPj0gMCkgZG8geyBkbyB7ICsrZ2V0X2N1cnJlbnQoKS0+cHJlZW1w
dF9jb3VudDsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgfSB3aGlsZSAo
MCk7ICh2b2lkKSgma2VybmVsX2ZsYWcpOyB9IHdoaWxlKDApOyB9IHdoaWxlICgwKTsKICAgICAg
ICBpZiAoZ2V0X2N1cnJlbnQoKS0+bmVlZF9yZXNjaGVkKQogICAgICAgICAgICAgICAgZ290byBu
ZWVkX3Jlc2NoZWRfYmFjazsKICAgICAgICBkbyB7IC0tZ2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9j
b3VudDsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7
CiAgICAgICAgcmV0dXJuOwoKcmVjYWxjdWxhdGU6CiAgICAgICAgewogICAgICAgICAgICAgICAg
c3RydWN0IHRhc2tfc3RydWN0ICpwOwogICAgICAgICAgICAgICAgZG8geyBkbyB7IGRvIHsgfSB3
aGlsZSgwKTsgZG8geyAtLWdldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQ7IF9fYXNtX18gX192
b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IGlmICgoZ2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9j
b3VudCA9PSAwKSAmJiBnZXRfY3VycmVudCgpLT5uZWVkX3Jlc2NoZWQpIHByZWVtcHRfc2NoZWR1
bGUoKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygic3Rp
IjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICh7ZG8geyArK2dl
dF9jdXJyZW50KCktPnByZWVtcHRfY291bnQ7IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoi
bWVtb3J5Iik7IH0gd2hpbGUgKDApOyAodm9pZCkoJnRhc2tsaXN0X2xvY2spO30pOwogICAgICAg
ICAgICAgICAgZm9yIChwID0gJihpbml0X3Rhc2tfdW5pb24udGFzaykgOyAocCA9IHAtPm5leHRf
dGFzaykgIT0gJihpbml0X3Rhc2tfdW5pb24udGFzaykgOyApCiAgICAgICAgICAgICAgICAgICAg
ICAgIHAtPmNvdW50ZXIgPSAocC0+Y291bnRlciA+PiAxKSArICgoKDIwLShwLT5uaWNlKSkgPj4g
MikrMSk7CiAgICAgICAgICAgICAgICAoe2RvIHsgfSB3aGlsZSgwKTsgZG8geyAtLWdldF9jdXJy
ZW50KCktPnByZWVtcHRfY291bnQ7IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5
Iik7IGlmICgoZ2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9jb3VudCA9PSAwKSAmJiBnZXRfY3VycmVu
dCgpLT5uZWVkX3Jlc2NoZWQpIHByZWVtcHRfc2NoZWR1bGUoKTsgfSB3aGlsZSAoMCk7fSk7CiAg
ICAgICAgICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJjbGkiOiA6IDoibWVtb3J5
Iik7IGRvIHsgZG8geyArK2dldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQ7IF9fYXNtX18gX192
b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOyAodm9pZCkoJnJ1bnF1ZXVl
X2xvY2spOyB9IHdoaWxlKDApOyB9IHdoaWxlICgwKTsKICAgICAgICB9CiAgICAgICAgZ290byBy
ZXBlYXRfc2NoZWR1bGU7CgpzdGlsbF9ydW5uaW5nOgogICAgICAgIGlmICghKHByZXYtPmNwdXNf
YWxsb3dlZCAmICgxVUwgPDwgdGhpc19jcHUpKSkKICAgICAgICAgICAgICAgIGdvdG8gc3RpbGxf
cnVubmluZ19iYWNrOwogICAgICAgIGMgPSBnb29kbmVzcyhwcmV2LCB0aGlzX2NwdSwgcHJldi0+
YWN0aXZlX21tKTsKICAgICAgICBuZXh0ID0gcHJldjsKICAgICAgICBnb3RvIHN0aWxsX3J1bm5p
bmdfYmFjazsKCm1vdmVfcnJfbGFzdDoKICAgICAgICBpZiAoIXByZXYtPmNvdW50ZXIpIHsKICAg
ICAgICAgICAgICAgIHByZXYtPmNvdW50ZXIgPSAoKCgyMC0ocHJldi0+bmljZSkpID4+IDIpKzEp
OwogICAgICAgICAgICAgICAgbW92ZV9sYXN0X3J1bnF1ZXVlKHByZXYpOwogICAgICAgIH0KICAg
ICAgICBnb3RvIG1vdmVfcnJfYmFjazsKCnNjaGVkdWxpbmdfaW5faW50ZXJydXB0OgogICAgICAg
IHByaW50aygiU2NoZWR1bGluZyBpbiBpbnRlcnJ1cHRcbiIpOwogICAgICAgIF9fYXNtX18gX192
b2xhdGlsZV9fKCIuYnl0ZSAweDBmLDB4MGIiKTsKICAgICAgICByZXR1cm47Cn0KIyA3MzQgImtl
cm5lbC9zY2hlZC5jIgpzdGF0aWMgaW5saW5lIHZvaWQgX193YWtlX3VwX2NvbW1vbiAod2FpdF9x
dWV1ZV9oZWFkX3QgKnEsIHVuc2lnbmVkIGludCBtb2RlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IG5yX2V4Y2x1c2l2ZSwgY29uc3QgaW50IHN5bmMpCnsKICAgICAg
ICBzdHJ1Y3QgbGlzdF9oZWFkICp0bXA7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwOwoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOwoKICAgICAgICBmb3IgKHRtcCA9ICgmcS0+dGFza19saXN0KS0+bmV4
dCwgcHJlZmV0Y2godG1wLT5uZXh0KTsgdG1wICE9ICgmcS0+dGFza19saXN0KTsgdG1wID0gdG1w
LT5uZXh0LCBwcmVmZXRjaCh0bXAtPm5leHQpKSB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgc3RhdGU7CiAgICAgICAgICAgICAgICB3YWl0X3F1ZXVlX3QgKmN1cnIgPSAoKHdhaXRfcXVl
dWVfdCAqKSgoY2hhciAqKSh0bXApLSh1bnNpZ25lZCBsb25nKSgmKCh3YWl0X3F1ZXVlX3QgKikw
KS0+dGFza19saXN0KSkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOwogICAgICAgICAgICAgICAgcCA9IGN1cnItPnRhc2s7CiAgICAgICAgICAgICAgICBzdGF0
ZSA9IHAtPnN0YXRlOwogICAgICAgICAgICAgICAgaWYgKHN0YXRlICYgbW9kZSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAg
ICAgICBpZiAodHJ5X3RvX3dha2VfdXAocCwgc3luYykgJiYgKGN1cnItPmZsYWdzJjB4MDEpICYm
ICEtLW5yX2V4Y2x1c2l2ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgIH0KICAgICAgICB9Cn0KCnZvaWQgX193YWtlX3VwKHdhaXRfcXVldWVf
aGVhZF90ICpxLCB1bnNpZ25lZCBpbnQgbW9kZSwgaW50IG5yKQp7CiAgICAgICAgaWYgKHEpIHsK
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgICAgICAgICBkbyB7
IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIDsgY2xpIjoiPWciIChmbGFn
cyk6IDoibWVtb3J5Iik7IGRvIHsgZG8geyArK2dldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQ7
IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOyAodm9p
ZCkoJnEtPmxvY2spOyB9IHdoaWxlKDApOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgIF9f
d2FrZV91cF9jb21tb24ocSwgbW9kZSwgbnIsIDApOwogICAgICAgICAgICAgICAgZG8geyBkbyB7
IGRvIHsgfSB3aGlsZSgwKTsgZG8geyAtLWdldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQ7IF9f
YXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IGlmICgoZ2V0X2N1cnJlbnQoKS0+
cHJlZW1wdF9jb3VudCA9PSAwKSAmJiBnZXRfY3VycmVudCgpLT5uZWVkX3Jlc2NoZWQpIHByZWVt
cHRfc2NoZWR1bGUoKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBfX2FzbV9fIF9fdm9sYXRp
bGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7IH0g
d2hpbGUgKDApOwogICAgICAgIH0KfQoKdm9pZCBfX3dha2VfdXBfc3luYyh3YWl0X3F1ZXVlX2hl
YWRfdCAqcSwgdW5zaWduZWQgaW50IG1vZGUsIGludCBucikKewogICAgICAgIGlmIChxKSB7CiAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgICAgICAgICAgZG8geyBf
X2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxhZ3Mp
OiA6Im1lbW9yeSIpOyBkbyB7IGRvIHsgKytnZXRfY3VycmVudCgpLT5wcmVlbXB0X2NvdW50OyBf
X2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlICgwKTsgKHZvaWQp
KCZxLT5sb2NrKTsgfSB3aGlsZSgwKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICBfX3dh
a2VfdXBfY29tbW9uKHEsIG1vZGUsIG5yLCAxKTsKICAgICAgICAgICAgICAgIGRvIHsgZG8geyBk
byB7IH0gd2hpbGUoMCk7IGRvIHsgLS1nZXRfY3VycmVudCgpLT5wcmVlbXB0X2NvdW50OyBfX2Fz
bV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyBpZiAoKGdldF9jdXJyZW50KCktPnBy
ZWVtcHRfY291bnQgPT0gMCkgJiYgZ2V0X2N1cnJlbnQoKS0+bmVlZF9yZXNjaGVkKSBwcmVlbXB0
X3NjaGVkdWxlKCk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsgX19hc21fXyBfX3ZvbGF0aWxl
X18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIpOyB9IHdo
aWxlICgwKTsKICAgICAgICB9Cn0KCnZvaWQgY29tcGxldGUoc3RydWN0IGNvbXBsZXRpb24gKngp
CnsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwoKICAgICAgICBkbyB7IF9fYXNtX18gX192
b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIDsgY2xpIjoiPWciIChmbGFncyk6IDoibWVtb3J5
Iik7IGRvIHsgZG8geyArK2dldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQ7IF9fYXNtX18gX192
b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOyAodm9pZCkoJngtPndhaXQu
bG9jayk7IH0gd2hpbGUoMCk7IH0gd2hpbGUgKDApOwogICAgICAgIHgtPmRvbmUrKzsKICAgICAg
ICBfX3dha2VfdXBfY29tbW9uKCZ4LT53YWl0LCAyIHwgMSwgMSwgMCk7CiAgICAgICAgZG8geyBk
byB7IGRvIHsgfSB3aGlsZSgwKTsgZG8geyAtLWdldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQ7
IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IGlmICgoZ2V0X2N1cnJlbnQo
KS0+cHJlZW1wdF9jb3VudCA9PSAwKSAmJiBnZXRfY3VycmVudCgpLT5uZWVkX3Jlc2NoZWQpIHBy
ZWVtcHRfc2NoZWR1bGUoKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBfX2FzbV9fIF9fdm9s
YXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7
IH0gd2hpbGUgKDApOwp9Cgp2b2lkIHdhaXRfZm9yX2NvbXBsZXRpb24oc3RydWN0IGNvbXBsZXRp
b24gKngpCnsKICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJjbGkiOiA6IDoibWVt
b3J5Iik7IGRvIHsgZG8geyArK2dldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQ7IF9fYXNtX18g
X192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOyAodm9pZCkoJngtPndh
aXQubG9jayk7IH0gd2hpbGUoMCk7IH0gd2hpbGUgKDApOwogICAgICAgIGlmICgheC0+ZG9uZSkg
ewogICAgICAgICAgICAgICAgd2FpdF9xdWV1ZV90IHdhaXQgPSB7IHRhc2s6IGdldF9jdXJyZW50
KCksIHRhc2tfbGlzdDogeyAoKHZvaWQgKikwKSwgKCh2b2lkICopMCkgfSwgfTsKCiAgICAgICAg
ICAgICAgICB3YWl0LmZsYWdzIHw9IDB4MDE7CiAgICAgICAgICAgICAgICBfX2FkZF93YWl0X3F1
ZXVlX3RhaWwoJngtPndhaXQsICZ3YWl0KTsKICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgZG8geyBnZXRfY3VycmVudCgpLT5zdGF0ZSA9ICgyKTsgfSB3aGlsZSAo
MCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsgZG8geyBkbyB7IH0gd2hpbGUoMCk7IGRv
IHsgLS1nZXRfY3VycmVudCgpLT5wcmVlbXB0X2NvdW50OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygi
IjogOiA6Im1lbW9yeSIpOyBpZiAoKGdldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQgPT0gMCkg
JiYgZ2V0X2N1cnJlbnQoKS0+bmVlZF9yZXNjaGVkKSBwcmVlbXB0X3NjaGVkdWxlKCk7IH0gd2hp
bGUgKDApOyB9IHdoaWxlICgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInN0aSI6IDogOiJtZW1v
cnkiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVkdWxlKCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDog
OiJtZW1vcnkiKTsgZG8geyBkbyB7ICsrZ2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9jb3VudDsgX19h
c21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7ICh2b2lkKSgm
eC0+d2FpdC5sb2NrKTsgfSB3aGlsZSgwKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICB9
IHdoaWxlICgheC0+ZG9uZSk7CiAgICAgICAgICAgICAgICBfX3JlbW92ZV93YWl0X3F1ZXVlKCZ4
LT53YWl0LCAmd2FpdCk7CiAgICAgICAgfQogICAgICAgIHgtPmRvbmUtLTsKICAgICAgICBkbyB7
IGRvIHsgZG8geyB9IHdoaWxlKDApOyBkbyB7IC0tZ2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9jb3Vu
dDsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgaWYgKChnZXRfY3VycmVu
dCgpLT5wcmVlbXB0X2NvdW50ID09IDApICYmIGdldF9jdXJyZW50KCktPm5lZWRfcmVzY2hlZCkg
cHJlZW1wdF9zY2hlZHVsZSgpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IF9fYXNtX18gX192
b2xhdGlsZV9fKCJzdGkiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOwp9CiMgODIzICJrZXJu
ZWwvc2NoZWQuYyIKdm9pZCBpbnRlcnJ1cHRpYmxlX3NsZWVwX29uKHdhaXRfcXVldWVfaGVhZF90
ICpxKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsgd2FpdF9xdWV1ZV90IHdhaXQ7IGlu
aXRfd2FpdHF1ZXVlX2VudHJ5KCZ3YWl0LCBnZXRfY3VycmVudCgpKTsKCiAgICAgICAgZ2V0X2N1
cnJlbnQoKS0+c3RhdGUgPSAxOwoKICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJw
dXNoZmwgOyBwb3BsICUwIDsgY2xpIjoiPWciIChmbGFncyk6IDoibWVtb3J5Iik7IGRvIHsgZG8g
eyArK2dldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQ7IF9fYXNtX18gX192b2xhdGlsZV9fKCIi
OiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOyAodm9pZCkoJnEtPmxvY2spOyB9IHdoaWxlKDAp
OyB9IHdoaWxlICgwKTsgX19hZGRfd2FpdF9xdWV1ZShxLCAmd2FpdCk7IGRvIHsgZG8geyB9IHdo
aWxlKDApOyBkbyB7IC0tZ2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9jb3VudDsgX19hc21fXyBfX3Zv
bGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgaWYgKChnZXRfY3VycmVudCgpLT5wcmVlbXB0X2Nv
dW50ID09IDApICYmIGdldF9jdXJyZW50KCktPm5lZWRfcmVzY2hlZCkgcHJlZW1wdF9zY2hlZHVs
ZSgpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgc2NoZWR1bGUoKTsKICAgICAg
ICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJjbGkiOiA6IDoibWVtb3J5Iik7IGRvIHsgZG8g
eyArK2dldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQ7IF9fYXNtX18gX192b2xhdGlsZV9fKCIi
OiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOyAodm9pZCkoJnEtPmxvY2spOyB9IHdoaWxlKDAp
OyB9IHdoaWxlICgwKTsgX19yZW1vdmVfd2FpdF9xdWV1ZShxLCAmd2FpdCk7IGRvIHsgZG8geyBk
byB7IH0gd2hpbGUoMCk7IGRvIHsgLS1nZXRfY3VycmVudCgpLT5wcmVlbXB0X2NvdW50OyBfX2Fz
bV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyBpZiAoKGdldF9jdXJyZW50KCktPnBy
ZWVtcHRfY291bnQgPT0gMCkgJiYgZ2V0X2N1cnJlbnQoKS0+bmVlZF9yZXNjaGVkKSBwcmVlbXB0
X3NjaGVkdWxlKCk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsgX19hc21fXyBfX3ZvbGF0aWxl
X18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIpOyB9IHdo
aWxlICgwKTsKfQoKbG9uZyBpbnRlcnJ1cHRpYmxlX3NsZWVwX29uX3RpbWVvdXQod2FpdF9xdWV1
ZV9oZWFkX3QgKnEsIGxvbmcgdGltZW91dCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7
IHdhaXRfcXVldWVfdCB3YWl0OyBpbml0X3dhaXRxdWV1ZV9lbnRyeSgmd2FpdCwgZ2V0X2N1cnJl
bnQoKSk7CgogICAgICAgIGdldF9jdXJyZW50KCktPnN0YXRlID0gMTsKCiAgICAgICAgZG8geyBf
X2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxhZ3Mp
OiA6Im1lbW9yeSIpOyBkbyB7IGRvIHsgKytnZXRfY3VycmVudCgpLT5wcmVlbXB0X2NvdW50OyBf
X2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlICgwKTsgKHZvaWQp
KCZxLT5sb2NrKTsgfSB3aGlsZSgwKTsgfSB3aGlsZSAoMCk7IF9fYWRkX3dhaXRfcXVldWUocSwg
JndhaXQpOyBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgZG8geyAtLWdldF9jdXJyZW50KCktPnByZWVt
cHRfY291bnQ7IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IGlmICgoZ2V0
X2N1cnJlbnQoKS0+cHJlZW1wdF9jb3VudCA9PSAwKSAmJiBnZXRfY3VycmVudCgpLT5uZWVkX3Jl
c2NoZWQpIHByZWVtcHRfc2NoZWR1bGUoKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwogICAg
ICAgIHRpbWVvdXQgPSBzY2hlZHVsZV90aW1lb3V0KHRpbWVvdXQpOwogICAgICAgIGRvIHsgX19h
c21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsgZG8geyBkbyB7ICsrZ2V0X2N1
cnJlbnQoKS0+cHJlZW1wdF9jb3VudDsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1v
cnkiKTsgfSB3aGlsZSAoMCk7ICh2b2lkKSgmcS0+bG9jayk7IH0gd2hpbGUoMCk7IH0gd2hpbGUg
KDApOyBfX3JlbW92ZV93YWl0X3F1ZXVlKHEsICZ3YWl0KTsgZG8geyBkbyB7IGRvIHsgfSB3aGls
ZSgwKTsgZG8geyAtLWdldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQ7IF9fYXNtX18gX192b2xh
dGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IGlmICgoZ2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9jb3Vu
dCA9PSAwKSAmJiBnZXRfY3VycmVudCgpLT5uZWVkX3Jlc2NoZWQpIHByZWVtcHRfc2NoZWR1bGUo
KTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwg
JTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDApOwoK
ICAgICAgICByZXR1cm4gdGltZW91dDsKfQoKdm9pZCBzbGVlcF9vbih3YWl0X3F1ZXVlX2hlYWRf
dCAqcSkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7IHdhaXRfcXVldWVfdCB3YWl0OyBp
bml0X3dhaXRxdWV1ZV9lbnRyeSgmd2FpdCwgZ2V0X2N1cnJlbnQoKSk7CgogICAgICAgIGdldF9j
dXJyZW50KCktPnN0YXRlID0gMjsKCiAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygi
cHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxhZ3MpOiA6Im1lbW9yeSIpOyBkbyB7IGRv
IHsgKytnZXRfY3VycmVudCgpLT5wcmVlbXB0X2NvdW50OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygi
IjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlICgwKTsgKHZvaWQpKCZxLT5sb2NrKTsgfSB3aGlsZSgw
KTsgfSB3aGlsZSAoMCk7IF9fYWRkX3dhaXRfcXVldWUocSwgJndhaXQpOyBkbyB7IGRvIHsgfSB3
aGlsZSgwKTsgZG8geyAtLWdldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQ7IF9fYXNtX18gX192
b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IGlmICgoZ2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9j
b3VudCA9PSAwKSAmJiBnZXRfY3VycmVudCgpLT5uZWVkX3Jlc2NoZWQpIHByZWVtcHRfc2NoZWR1
bGUoKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwogICAgICAgIHNjaGVkdWxlKCk7CiAgICAg
ICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiY2xpIjogOiA6Im1lbW9yeSIpOyBkbyB7IGRv
IHsgKytnZXRfY3VycmVudCgpLT5wcmVlbXB0X2NvdW50OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygi
IjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlICgwKTsgKHZvaWQpKCZxLT5sb2NrKTsgfSB3aGlsZSgw
KTsgfSB3aGlsZSAoMCk7IF9fcmVtb3ZlX3dhaXRfcXVldWUocSwgJndhaXQpOyBkbyB7IGRvIHsg
ZG8geyB9IHdoaWxlKDApOyBkbyB7IC0tZ2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9jb3VudDsgX19h
c21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgaWYgKChnZXRfY3VycmVudCgpLT5w
cmVlbXB0X2NvdW50ID09IDApICYmIGdldF9jdXJyZW50KCktPm5lZWRfcmVzY2hlZCkgcHJlZW1w
dF9zY2hlZHVsZSgpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IF9fYXNtX18gX192b2xhdGls
ZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3
aGlsZSAoMCk7Cn0KCmxvbmcgc2xlZXBfb25fdGltZW91dCh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwg
bG9uZyB0aW1lb3V0KQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsgd2FpdF9xdWV1ZV90
IHdhaXQ7IGluaXRfd2FpdHF1ZXVlX2VudHJ5KCZ3YWl0LCBnZXRfY3VycmVudCgpKTsKCiAgICAg
ICAgZ2V0X2N1cnJlbnQoKS0+c3RhdGUgPSAyOwoKICAgICAgICBkbyB7IF9fYXNtX18gX192b2xh
dGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIDsgY2xpIjoiPWciIChmbGFncyk6IDoibWVtb3J5Iik7
IGRvIHsgZG8geyArK2dldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQ7IF9fYXNtX18gX192b2xh
dGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOyAodm9pZCkoJnEtPmxvY2spOyB9
IHdoaWxlKDApOyB9IHdoaWxlICgwKTsgX19hZGRfd2FpdF9xdWV1ZShxLCAmd2FpdCk7IGRvIHsg
ZG8geyB9IHdoaWxlKDApOyBkbyB7IC0tZ2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9jb3VudDsgX19h
c21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgaWYgKChnZXRfY3VycmVudCgpLT5w
cmVlbXB0X2NvdW50ID09IDApICYmIGdldF9jdXJyZW50KCktPm5lZWRfcmVzY2hlZCkgcHJlZW1w
dF9zY2hlZHVsZSgpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgdGltZW91dCA9
IHNjaGVkdWxlX3RpbWVvdXQodGltZW91dCk7CiAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9sYXRp
bGVfXygiY2xpIjogOiA6Im1lbW9yeSIpOyBkbyB7IGRvIHsgKytnZXRfY3VycmVudCgpLT5wcmVl
bXB0X2NvdW50OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxl
ICgwKTsgKHZvaWQpKCZxLT5sb2NrKTsgfSB3aGlsZSgwKTsgfSB3aGlsZSAoMCk7IF9fcmVtb3Zl
X3dhaXRfcXVldWUocSwgJndhaXQpOyBkbyB7IGRvIHsgZG8geyB9IHdoaWxlKDApOyBkbyB7IC0t
Z2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9jb3VudDsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDog
OiJtZW1vcnkiKTsgaWYgKChnZXRfY3VycmVudCgpLT5wcmVlbXB0X2NvdW50ID09IDApICYmIGdl
dF9jdXJyZW50KCktPm5lZWRfcmVzY2hlZCkgcHJlZW1wdF9zY2hlZHVsZSgpOyB9IHdoaWxlICgw
KTsgfSB3aGlsZSAoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjog
OiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7CgogICAgICAgIHJldHVy
biB0aW1lb3V0Owp9Cgp2b2lkIHNjaGVkdWxpbmdfZnVuY3Rpb25zX2VuZF9oZXJlKHZvaWQpIHsg
fQojIDg4MSAia2VybmVsL3NjaGVkLmMiCiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9u
ZyBzeXNfbmljZShpbnQgaW5jcmVtZW50KQp7CiAgICAgICAgbG9uZyBuZXdwcmlvOwoKCgoKCgog
ICAgICAgIGlmIChpbmNyZW1lbnQgPCAwKSB7CiAgICAgICAgICAgICAgICBpZiAoIWNhcGFibGUo
MjMpKQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICBp
ZiAoaW5jcmVtZW50IDwgLTQwKQogICAgICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnQgPSAt
NDA7CiAgICAgICAgfQogICAgICAgIGlmIChpbmNyZW1lbnQgPiA0MCkKICAgICAgICAgICAgICAg
IGluY3JlbWVudCA9IDQwOwoKICAgICAgICBuZXdwcmlvID0gZ2V0X2N1cnJlbnQoKS0+bmljZSAr
IGluY3JlbWVudDsKICAgICAgICBpZiAobmV3cHJpbyA8IC0yMCkKICAgICAgICAgICAgICAgIG5l
d3ByaW8gPSAtMjA7CiAgICAgICAgaWYgKG5ld3ByaW8gPiAxOSkKICAgICAgICAgICAgICAgIG5l
d3ByaW8gPSAxOTsKICAgICAgICBnZXRfY3VycmVudCgpLT5uaWNlID0gbmV3cHJpbzsKICAgICAg
ICByZXR1cm4gMDsKfQoKCgpzdGF0aWMgaW5saW5lIHN0cnVjdCB0YXNrX3N0cnVjdCAqZmluZF9w
cm9jZXNzX2J5X3BpZChwaWRfdCBwaWQpCnsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRz
ayA9IGdldF9jdXJyZW50KCk7CgogICAgICAgIGlmIChwaWQpCiAgICAgICAgICAgICAgICB0c2sg
PSBmaW5kX3Rhc2tfYnlfcGlkKHBpZCk7CiAgICAgICAgcmV0dXJuIHRzazsKfQoKc3RhdGljIGlu
dCBzZXRzY2hlZHVsZXIocGlkX3QgcGlkLCBpbnQgcG9saWN5LAogICAgICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKnBhcmFtKQp7CiAgICAgICAgc3RydWN0IHNjaGVkX3Bh
cmFtIGxwOwogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqcDsKICAgICAgICBpbnQgcmV0dmFs
OwoKICAgICAgICByZXR2YWwgPSAtMjI7CiAgICAgICAgaWYgKCFwYXJhbSB8fCBwaWQgPCAwKQog
ICAgICAgICAgICAgICAgZ290byBvdXRfbm91bmxvY2s7CgogICAgICAgIHJldHZhbCA9IC0xNDsK
ICAgICAgICBpZiAoKF9fYnVpbHRpbl9jb25zdGFudF9wKHNpemVvZihzdHJ1Y3Qgc2NoZWRfcGFy
YW0pKSA/IF9fY29uc3RhbnRfY29weV9mcm9tX3VzZXIoKCZscCksKHBhcmFtKSwoc2l6ZW9mKHN0
cnVjdCBzY2hlZF9wYXJhbSkpKSA6IF9fZ2VuZXJpY19jb3B5X2Zyb21fdXNlcigoJmxwKSwocGFy
YW0pLChzaXplb2Yoc3RydWN0IHNjaGVkX3BhcmFtKSkpKSkKICAgICAgICAgICAgICAgIGdvdG8g
b3V0X25vdW5sb2NrOwoKCgoKICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJjbGki
OiA6IDoibWVtb3J5Iik7ICh7ZG8geyArK2dldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQ7IF9f
YXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOyAodm9pZCko
JnRhc2tsaXN0X2xvY2spO30pOyB9IHdoaWxlICgwKTsKICAgICAgICBkbyB7IGRvIHsgKytnZXRf
Y3VycmVudCgpLT5wcmVlbXB0X2NvdW50OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1l
bW9yeSIpOyB9IHdoaWxlICgwKTsgKHZvaWQpKCZydW5xdWV1ZV9sb2NrKTsgfSB3aGlsZSgwKTsK
CiAgICAgICAgcCA9IGZpbmRfcHJvY2Vzc19ieV9waWQocGlkKTsKCiAgICAgICAgcmV0dmFsID0g
LTM7CiAgICAgICAgaWYgKCFwKQogICAgICAgICAgICAgICAgZ290byBvdXRfdW5sb2NrOwoKICAg
ICAgICBpZiAocG9saWN5IDwgMCkKICAgICAgICAgICAgICAgIHBvbGljeSA9IHAtPnBvbGljeTsK
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHZhbCA9IC0yMjsKICAgICAgICAgICAg
ICAgIGlmIChwb2xpY3kgIT0gMSAmJiBwb2xpY3kgIT0gMiAmJgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBvbGljeSAhPSAwKQogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91
dF91bmxvY2s7CiAgICAgICAgfQoKCgoKCiAgICAgICAgcmV0dmFsID0gLTIyOwogICAgICAgIGlm
IChscC5zY2hlZF9wcmlvcml0eSA8IDAgfHwgbHAuc2NoZWRfcHJpb3JpdHkgPiA5OSkKICAgICAg
ICAgICAgICAgIGdvdG8gb3V0X3VubG9jazsKICAgICAgICBpZiAoKHBvbGljeSA9PSAwKSAhPSAo
bHAuc2NoZWRfcHJpb3JpdHkgPT0gMCkpCiAgICAgICAgICAgICAgICBnb3RvIG91dF91bmxvY2s7
CgogICAgICAgIHJldHZhbCA9IC0xOwogICAgICAgIGlmICgocG9saWN5ID09IDEgfHwgcG9saWN5
ID09IDIpICYmCiAgICAgICAgICAgICFjYXBhYmxlKDIzKSkKICAgICAgICAgICAgICAgIGdvdG8g
b3V0X3VubG9jazsKICAgICAgICBpZiAoKGdldF9jdXJyZW50KCktPmV1aWQgIT0gcC0+ZXVpZCkg
JiYgKGdldF9jdXJyZW50KCktPmV1aWQgIT0gcC0+dWlkKSAmJgogICAgICAgICAgICAhY2FwYWJs
ZSgyMykpCiAgICAgICAgICAgICAgICBnb3RvIG91dF91bmxvY2s7CgogICAgICAgIHJldHZhbCA9
IDA7CiAgICAgICAgcC0+cG9saWN5ID0gcG9saWN5OwogICAgICAgIHAtPnJ0X3ByaW9yaXR5ID0g
bHAuc2NoZWRfcHJpb3JpdHk7CiAgICAgICAgaWYgKHRhc2tfb25fcnVucXVldWUocCkpCiAgICAg
ICAgICAgICAgICBtb3ZlX2ZpcnN0X3J1bnF1ZXVlKHApOwoKICAgICAgICBnZXRfY3VycmVudCgp
LT5uZWVkX3Jlc2NoZWQgPSAxOwoKb3V0X3VubG9jazoKICAgICAgICBkbyB7IGRvIHsgfSB3aGls
ZSgwKTsgZG8geyAtLWdldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQ7IF9fYXNtX18gX192b2xh
dGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IGlmICgoZ2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9jb3Vu
dCA9PSAwKSAmJiBnZXRfY3VycmVudCgpLT5uZWVkX3Jlc2NoZWQpIHByZWVtcHRfc2NoZWR1bGUo
KTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwogICAgICAgIGRvIHsgKHtkbyB7IH0gd2hpbGUo
MCk7IGRvIHsgLS1nZXRfY3VycmVudCgpLT5wcmVlbXB0X2NvdW50OyBfX2FzbV9fIF9fdm9sYXRp
bGVfXygiIjogOiA6Im1lbW9yeSIpOyBpZiAoKGdldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQg
PT0gMCkgJiYgZ2V0X2N1cnJlbnQoKS0+bmVlZF9yZXNjaGVkKSBwcmVlbXB0X3NjaGVkdWxlKCk7
IH0gd2hpbGUgKDApO30pOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygic3RpIjogOiA6Im1lbW9yeSIp
OyB9IHdoaWxlICgwKTsKCm91dF9ub3VubG9jazoKICAgICAgICByZXR1cm4gcmV0dmFsOwp9Cgog
X19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3NjaGVkX3NldHNjaGVkdWxlcihw
aWRfdCBwaWQsIGludCBwb2xpY3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IHNjaGVkX3BhcmFtICpwYXJhbSkKewogICAgICAgIHJldHVybiBzZXRzY2hlZHVs
ZXIocGlkLCBwb2xpY3ksIHBhcmFtKTsKfQoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBs
b25nIHN5c19zY2hlZF9zZXRwYXJhbShwaWRfdCBwaWQsIHN0cnVjdCBzY2hlZF9wYXJhbSAqcGFy
YW0pCnsKICAgICAgICByZXR1cm4gc2V0c2NoZWR1bGVyKHBpZCwgLTEsIHBhcmFtKTsKfQojIDEw
MTIgImtlcm5lbC9zY2hlZC5jIgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIHZvaWQgcHJl
ZW1wdF9zY2hlZHVsZSh2b2lkKQp7CiAgICAgICAgd2hpbGUgKGdldF9jdXJyZW50KCktPm5lZWRf
cmVzY2hlZCkgewoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAg
ICAgICAgICBnZXRfY3VycmVudCgpLT5wcmVlbXB0X2NvdW50ICs9IDB4NDAwMDAwMDAgKyAxOwog
ICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKICAg
ICAgICAgICAgICAgIHNjaGVkdWxlKCk7CiAgICAgICAgICAgICAgICBnZXRfY3VycmVudCgpLT5w
cmVlbXB0X2NvdW50IC09IDB4NDAwMDAwMDAgKyAxOwogICAgICAgICAgICAgICAgX19hc21fXyBf
X3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA7CiAgICAgICAgfQp9CgoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBs
b25nIHN5c19zY2hlZF9nZXRzY2hlZHVsZXIocGlkX3QgcGlkKQp7CiAgICAgICAgc3RydWN0IHRh
c2tfc3RydWN0ICpwOwogICAgICAgIGludCByZXR2YWw7CgogICAgICAgIHJldHZhbCA9IC0yMjsK
ICAgICAgICBpZiAocGlkIDwgMCkKICAgICAgICAgICAgICAgIGdvdG8gb3V0X25vdW5sb2NrOwoK
ICAgICAgICByZXR2YWwgPSAtMzsKICAgICAgICAoe2RvIHsgKytnZXRfY3VycmVudCgpLT5wcmVl
bXB0X2NvdW50OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxl
ICgwKTsgKHZvaWQpKCZ0YXNrbGlzdF9sb2NrKTt9KTsKICAgICAgICBwID0gZmluZF9wcm9jZXNz
X2J5X3BpZChwaWQpOwogICAgICAgIGlmIChwKQogICAgICAgICAgICAgICAgcmV0dmFsID0gcC0+
cG9saWN5ICYgfjB4MTA7CiAgICAgICAgKHtkbyB7IH0gd2hpbGUoMCk7IGRvIHsgLS1nZXRfY3Vy
cmVudCgpLT5wcmVlbXB0X2NvdW50OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9y
eSIpOyBpZiAoKGdldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQgPT0gMCkgJiYgZ2V0X2N1cnJl
bnQoKS0+bmVlZF9yZXNjaGVkKSBwcmVlbXB0X3NjaGVkdWxlKCk7IH0gd2hpbGUgKDApO30pOwoK
b3V0X25vdW5sb2NrOgogICAgICAgIHJldHVybiByZXR2YWw7Cn0KCiBfX2F0dHJpYnV0ZV9fKChy
ZWdwYXJtKDApKSkgbG9uZyBzeXNfc2NoZWRfZ2V0cGFyYW0ocGlkX3QgcGlkLCBzdHJ1Y3Qgc2No
ZWRfcGFyYW0gKnBhcmFtKQp7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwOwogICAgICAg
IHN0cnVjdCBzY2hlZF9wYXJhbSBscDsKICAgICAgICBpbnQgcmV0dmFsOwoKICAgICAgICByZXR2
YWwgPSAtMjI7CiAgICAgICAgaWYgKCFwYXJhbSB8fCBwaWQgPCAwKQogICAgICAgICAgICAgICAg
Z290byBvdXRfbm91bmxvY2s7CgogICAgICAgICh7ZG8geyArK2dldF9jdXJyZW50KCktPnByZWVt
cHRfY291bnQ7IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUg
KDApOyAodm9pZCkoJnRhc2tsaXN0X2xvY2spO30pOwogICAgICAgIHAgPSBmaW5kX3Byb2Nlc3Nf
YnlfcGlkKHBpZCk7CiAgICAgICAgcmV0dmFsID0gLTM7CiAgICAgICAgaWYgKCFwKQogICAgICAg
ICAgICAgICAgZ290byBvdXRfdW5sb2NrOwogICAgICAgIGxwLnNjaGVkX3ByaW9yaXR5ID0gcC0+
cnRfcHJpb3JpdHk7CiAgICAgICAgKHtkbyB7IH0gd2hpbGUoMCk7IGRvIHsgLS1nZXRfY3VycmVu
dCgpLT5wcmVlbXB0X2NvdW50OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIp
OyBpZiAoKGdldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQgPT0gMCkgJiYgZ2V0X2N1cnJlbnQo
KS0+bmVlZF9yZXNjaGVkKSBwcmVlbXB0X3NjaGVkdWxlKCk7IH0gd2hpbGUgKDApO30pOwoKCgoK
ICAgICAgICByZXR2YWwgPSAoX19idWlsdGluX2NvbnN0YW50X3Aoc2l6ZW9mKCpwYXJhbSkpID8g
X19jb25zdGFudF9jb3B5X3RvX3VzZXIoKHBhcmFtKSwoJmxwKSwoc2l6ZW9mKCpwYXJhbSkpKSA6
IF9fZ2VuZXJpY19jb3B5X3RvX3VzZXIoKHBhcmFtKSwoJmxwKSwoc2l6ZW9mKCpwYXJhbSkpKSkg
PyAtMTQgOiAwOwoKb3V0X25vdW5sb2NrOgogICAgICAgIHJldHVybiByZXR2YWw7CgpvdXRfdW5s
b2NrOgogICAgICAgICh7ZG8geyB9IHdoaWxlKDApOyBkbyB7IC0tZ2V0X2N1cnJlbnQoKS0+cHJl
ZW1wdF9jb3VudDsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgaWYgKChn
ZXRfY3VycmVudCgpLT5wcmVlbXB0X2NvdW50ID09IDApICYmIGdldF9jdXJyZW50KCktPm5lZWRf
cmVzY2hlZCkgcHJlZW1wdF9zY2hlZHVsZSgpOyB9IHdoaWxlICgwKTt9KTsKICAgICAgICByZXR1
cm4gcmV0dmFsOwp9CgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3NjaGVk
X3lpZWxkKHZvaWQpCnsKIyAxMDg5ICJrZXJuZWwvc2NoZWQuYyIKICAgICAgICBpbnQgbnJfcGVu
ZGluZyA9IG5yX3J1bm5pbmc7CiMgMTEwMiAia2VybmVsL3NjaGVkLmMiCiAgICAgICAgbnJfcGVu
ZGluZy0tOwoKICAgICAgICBpZiAobnJfcGVuZGluZykgewoKCgoKICAgICAgICAgICAgICAgIGlm
IChnZXRfY3VycmVudCgpLT5wb2xpY3kgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0
X2N1cnJlbnQoKS0+cG9saWN5IHw9IDB4MTA7CiAgICAgICAgICAgICAgICBnZXRfY3VycmVudCgp
LT5uZWVkX3Jlc2NoZWQgPSAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4gMDsKfQoKIF9fYXR0
cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4KGlu
dCBwb2xpY3kpCnsKICAgICAgICBpbnQgcmV0ID0gLTIyOwoKICAgICAgICBzd2l0Y2ggKHBvbGlj
eSkgewogICAgICAgIGNhc2UgMToKICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICByZXQg
PSA5OTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMDoKICAgICAgICAgICAg
ICAgIHJldCA9IDA7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgcmV0
dXJuIHJldDsKfQoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zY2hlZF9n
ZXRfcHJpb3JpdHlfbWluKGludCBwb2xpY3kpCnsKICAgICAgICBpbnQgcmV0ID0gLTIyOwoKICAg
ICAgICBzd2l0Y2ggKHBvbGljeSkgewogICAgICAgIGNhc2UgMToKICAgICAgICBjYXNlIDI6CiAg
ICAgICAgICAgICAgICByZXQgPSAxOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2Fz
ZSAwOgogICAgICAgICAgICAgICAgcmV0ID0gMDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJl
dDsKfQoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zY2hlZF9ycl9nZXRf
aW50ZXJ2YWwocGlkX3QgcGlkLCBzdHJ1Y3QgdGltZXNwZWMgKmludGVydmFsKQp7CiAgICAgICAg
c3RydWN0IHRpbWVzcGVjIHQ7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwOwogICAgICAg
IGludCByZXR2YWwgPSAtMjI7CgogICAgICAgIGlmIChwaWQgPCAwKQogICAgICAgICAgICAgICAg
Z290byBvdXRfbm91bmxvY2s7CgogICAgICAgIHJldHZhbCA9IC0zOwogICAgICAgICh7ZG8geyAr
K2dldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQ7IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6
IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOyAodm9pZCkoJnRhc2tsaXN0X2xvY2spO30pOwogICAg
ICAgIHAgPSBmaW5kX3Byb2Nlc3NfYnlfcGlkKHBpZCk7CiAgICAgICAgaWYgKHApCiAgICAgICAg
ICAgICAgICBqaWZmaWVzX3RvX3RpbWVzcGVjKHAtPnBvbGljeSAmIDEgPyAwIDogKCgoMjAtKHAt
Pm5pY2UpKSA+PiAyKSsxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnQp
OwogICAgICAgICh7ZG8geyB9IHdoaWxlKDApOyBkbyB7IC0tZ2V0X2N1cnJlbnQoKS0+cHJlZW1w
dF9jb3VudDsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgaWYgKChnZXRf
Y3VycmVudCgpLT5wcmVlbXB0X2NvdW50ID09IDApICYmIGdldF9jdXJyZW50KCktPm5lZWRfcmVz
Y2hlZCkgcHJlZW1wdF9zY2hlZHVsZSgpOyB9IHdoaWxlICgwKTt9KTsKICAgICAgICBpZiAocCkK
ICAgICAgICAgICAgICAgIHJldHZhbCA9IChfX2J1aWx0aW5fY29uc3RhbnRfcChzaXplb2YodCkp
ID8gX19jb25zdGFudF9jb3B5X3RvX3VzZXIoKGludGVydmFsKSwoJnQpLChzaXplb2YodCkpKSA6
IF9fZ2VuZXJpY19jb3B5X3RvX3VzZXIoKGludGVydmFsKSwoJnQpLChzaXplb2YodCkpKSkgPyAt
MTQgOiAwOwpvdXRfbm91bmxvY2s6CiAgICAgICAgcmV0dXJuIHJldHZhbDsKfQoKc3RhdGljIHZv
aWQgc2hvd190YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqIHApCnsKICAgICAgICB1bnNpZ25lZCBs
b25nIGZyZWUgPSAwOwogICAgICAgIGludCBzdGF0ZTsKICAgICAgICBzdGF0aWMgY29uc3QgY2hh
ciAqIHN0YXRfbmFtW10gPSB7ICJSIiwgIlMiLCAiRCIsICJaIiwgIlQiLCAiVyIgfTsKCiAgICAg
ICAgcHJpbnRrKCIlLTEzLjEzcyAiLCBwLT5jb21tKTsKICAgICAgICBzdGF0ZSA9IHAtPnN0YXRl
ID8gZmZ6KH5wLT5zdGF0ZSkgKyAxIDogMDsKICAgICAgICBpZiAoKCh1bnNpZ25lZCkgc3RhdGUp
IDwgc2l6ZW9mKHN0YXRfbmFtKS9zaXplb2YoY2hhciAqKSkKICAgICAgICAgICAgICAgIHByaW50
ayhzdGF0X25hbVtzdGF0ZV0pOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHByaW50aygi
ICIpOwoKICAgICAgICBpZiAocCA9PSBnZXRfY3VycmVudCgpKQogICAgICAgICAgICAgICAgcHJp
bnRrKCIgY3VycmVudCAgIik7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcHJpbnRrKCIg
JTA4bFggIiwgdGhyZWFkX3NhdmVkX3BjKCZwLT50aHJlYWQpKTsKCgoKCgoKICAgICAgICB7CiAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICogbiA9ICh1bnNpZ25lZCBsb25nICopIChwKzEp
OwogICAgICAgICAgICAgICAgd2hpbGUgKCEqbikKICAgICAgICAgICAgICAgICAgICAgICAgbisr
OwogICAgICAgICAgICAgICAgZnJlZSA9ICh1bnNpZ25lZCBsb25nKSBuIC0gKHVuc2lnbmVkIGxv
bmcpKHArMSk7CiAgICAgICAgfQogICAgICAgIHByaW50aygiJTVsdSAlNWQgJTZkICIsIGZyZWUs
IHAtPnBpZCwgcC0+cF9wcHRyLT5waWQpOwogICAgICAgIGlmIChwLT5wX2NwdHIpCiAgICAgICAg
ICAgICAgICBwcmludGsoIiU1ZCAiLCBwLT5wX2NwdHItPnBpZCk7CiAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgcHJpbnRrKCIgICAgICAiKTsKICAgICAgICBpZiAocC0+cF95c3B0cikKICAg
ICAgICAgICAgICAgIHByaW50aygiJTdkIiwgcC0+cF95c3B0ci0+cGlkKTsKICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICBwcmludGsoIiAgICAgICAiKTsKICAgICAgICBpZiAocC0+cF9vc3B0
cikKICAgICAgICAgICAgICAgIHByaW50aygiICU1ZCIsIHAtPnBfb3NwdHItPnBpZCk7CiAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgcHJpbnRrKCIgICAgICAiKTsKICAgICAgICBpZiAoIXAt
Pm1tKQogICAgICAgICAgICAgICAgcHJpbnRrKCIgKEwtVExCKVxuIik7CiAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgcHJpbnRrKCIgKE5PVExCKVxuIik7CgoKCiAgICAgICAgewogICAgICAg
ICAgICAgICAgZXh0ZXJuIHZvaWQgc2hvd190cmFjZV90YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAq
dHNrKTsKICAgICAgICAgICAgICAgIHNob3dfdHJhY2VfdGFzayhwKTsKICAgICAgICB9Cgp9Cgpj
aGFyICogcmVuZGVyX3NpZ3NldF90KHNpZ3NldF90ICpzZXQsIGNoYXIgKmJ1ZmZlcikKewogICAg
ICAgIGludCBpID0gNjQsIHg7CiAgICAgICAgZG8gewogICAgICAgICAgICAgICAgaSAtPSA0LCB4
ID0gMDsKICAgICAgICAgICAgICAgIGlmICgoX19idWlsdGluX2NvbnN0YW50X3AoaSsxKSA/IF9f
Y29uc3Rfc2lnaXNtZW1iZXIoKHNldCksKGkrMSkpIDogX19nZW5fc2lnaXNtZW1iZXIoKHNldCks
KGkrMSkpKSkgeCB8PSAxOwogICAgICAgICAgICAgICAgaWYgKChfX2J1aWx0aW5fY29uc3RhbnRf
cChpKzIpID8gX19jb25zdF9zaWdpc21lbWJlcigoc2V0KSwoaSsyKSkgOiBfX2dlbl9zaWdpc21l
bWJlcigoc2V0KSwoaSsyKSkpKSB4IHw9IDI7CiAgICAgICAgICAgICAgICBpZiAoKF9fYnVpbHRp
bl9jb25zdGFudF9wKGkrMykgPyBfX2NvbnN0X3NpZ2lzbWVtYmVyKChzZXQpLChpKzMpKSA6IF9f
Z2VuX3NpZ2lzbWVtYmVyKChzZXQpLChpKzMpKSkpIHggfD0gNDsKICAgICAgICAgICAgICAgIGlm
ICgoX19idWlsdGluX2NvbnN0YW50X3AoaSs0KSA/IF9fY29uc3Rfc2lnaXNtZW1iZXIoKHNldCks
KGkrNCkpIDogX19nZW5fc2lnaXNtZW1iZXIoKHNldCksKGkrNCkpKSkgeCB8PSA4OwogICAgICAg
ICAgICAgICAgKmJ1ZmZlcisrID0gKHggPCAxMCA/ICcwJyA6ICdhJyAtIDEwKSArIHg7CiAgICAg
ICAgfSB3aGlsZSAoaSA+PSA0KTsKICAgICAgICAqYnVmZmVyID0gMDsKICAgICAgICByZXR1cm4g
YnVmZmVyOwp9Cgp2b2lkIHNob3dfc3RhdGUodm9pZCkKewogICAgICAgIHN0cnVjdCB0YXNrX3N0
cnVjdCAqcDsKCgogICAgICAgIHByaW50aygiXG4iCiAgICAgICAgICAgICAgICIgICAgICAgICAg
ICAgICAgICAgICAgICAgZnJlZSAgICAgICAgICAgICAgICAgICAgICAgIHNpYmxpbmdcbiIpOwog
ICAgICAgIHByaW50aygiICB0YXNrICAgICAgICAgICAgIFBDICAgIHN0YWNrICAgcGlkIGZhdGhl
ciBjaGlsZCB5b3VuZ2VyIG9sZGVyXG4iKTsKCgoKCgogICAgICAgICh7ZG8geyArK2dldF9jdXJy
ZW50KCktPnByZWVtcHRfY291bnQ7IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5
Iik7IH0gd2hpbGUgKDApOyAodm9pZCkoJnRhc2tsaXN0X2xvY2spO30pOwogICAgICAgIGZvciAo
cCA9ICYoaW5pdF90YXNrX3VuaW9uLnRhc2spIDsgKHAgPSBwLT5uZXh0X3Rhc2spICE9ICYoaW5p
dF90YXNrX3VuaW9uLnRhc2spIDsgKSB7CgoKCgogICAgICAgICAgICAgICAgdG91Y2hfbm1pX3dh
dGNoZG9nKCk7CiAgICAgICAgICAgICAgICBzaG93X3Rhc2socCk7CiAgICAgICAgfQogICAgICAg
ICh7ZG8geyB9IHdoaWxlKDApOyBkbyB7IC0tZ2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9jb3VudDsg
X19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgaWYgKChnZXRfY3VycmVudCgp
LT5wcmVlbXB0X2NvdW50ID09IDApICYmIGdldF9jdXJyZW50KCktPm5lZWRfcmVzY2hlZCkgcHJl
ZW1wdF9zY2hlZHVsZSgpOyB9IHdoaWxlICgwKTt9KTsKfQojIDEyNzcgImtlcm5lbC9zY2hlZC5j
Igp2b2lkIHJlcGFyZW50X3RvX2luaXQodm9pZCkKewogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVj
dCAqdGhpc190YXNrID0gZ2V0X2N1cnJlbnQoKTsKCiAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9s
YXRpbGVfXygiY2xpIjogOiA6Im1lbW9yeSIpOyAoe2RvIHsgKytnZXRfY3VycmVudCgpLT5wcmVl
bXB0X2NvdW50OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxl
ICgwKTsgKHZvaWQpKCZ0YXNrbGlzdF9sb2NrKTt9KTsgfSB3aGlsZSAoMCk7CgoKICAgICAgICBk
byB7ICh0aGlzX3Rhc2spLT5uZXh0X3Rhc2stPnByZXZfdGFzayA9ICh0aGlzX3Rhc2spLT5wcmV2
X3Rhc2s7ICh0aGlzX3Rhc2spLT5wcmV2X3Rhc2stPm5leHRfdGFzayA9ICh0aGlzX3Rhc2spLT5u
ZXh0X3Rhc2s7IGlmICgodGhpc190YXNrKS0+cF9vc3B0cikgKHRoaXNfdGFzayktPnBfb3NwdHIt
PnBfeXNwdHIgPSAodGhpc190YXNrKS0+cF95c3B0cjsgaWYgKCh0aGlzX3Rhc2spLT5wX3lzcHRy
KSAodGhpc190YXNrKS0+cF95c3B0ci0+cF9vc3B0ciA9ICh0aGlzX3Rhc2spLT5wX29zcHRyOyBl
bHNlICh0aGlzX3Rhc2spLT5wX3BwdHItPnBfY3B0ciA9ICh0aGlzX3Rhc2spLT5wX29zcHRyOyB9
IHdoaWxlICgwKTsKICAgICAgICB0aGlzX3Rhc2stPnBfcHB0ciA9IGNoaWxkX3JlYXBlcjsKICAg
ICAgICB0aGlzX3Rhc2stPnBfb3BwdHIgPSBjaGlsZF9yZWFwZXI7CiAgICAgICAgZG8geyAodGhp
c190YXNrKS0+bmV4dF90YXNrID0gJihpbml0X3Rhc2tfdW5pb24udGFzayk7ICh0aGlzX3Rhc2sp
LT5wcmV2X3Rhc2sgPSAoaW5pdF90YXNrX3VuaW9uLnRhc2spLnByZXZfdGFzazsgKGluaXRfdGFz
a191bmlvbi50YXNrKS5wcmV2X3Rhc2stPm5leHRfdGFzayA9ICh0aGlzX3Rhc2spOyAoaW5pdF90
YXNrX3VuaW9uLnRhc2spLnByZXZfdGFzayA9ICh0aGlzX3Rhc2spOyAodGhpc190YXNrKS0+cF95
c3B0ciA9ICgodm9pZCAqKTApOyBpZiAoKCh0aGlzX3Rhc2spLT5wX29zcHRyID0gKHRoaXNfdGFz
ayktPnBfcHB0ci0+cF9jcHRyKSAhPSAoKHZvaWQgKikwKSkgKHRoaXNfdGFzayktPnBfb3NwdHIt
PnBfeXNwdHIgPSB0aGlzX3Rhc2s7ICh0aGlzX3Rhc2spLT5wX3BwdHItPnBfY3B0ciA9IHRoaXNf
dGFzazsgfSB3aGlsZSAoMCk7CgoKICAgICAgICB0aGlzX3Rhc2stPmV4aXRfc2lnbmFsID0gMTc7
CgoKCiAgICAgICAgZG8geyBkbyB7ICsrZ2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9jb3VudDsgX19h
c21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7ICh2b2lkKSgm
cnVucXVldWVfbG9jayk7IH0gd2hpbGUoMCk7CgogICAgICAgIHRoaXNfdGFzay0+cHRyYWNlID0g
MDsKICAgICAgICB0aGlzX3Rhc2stPm5pY2UgPSAoMCk7CiAgICAgICAgdGhpc190YXNrLT5wb2xp
Y3kgPSAwOwoKCgogICAgICAgIHRoaXNfdGFzay0+Y2FwX2VmZmVjdGl2ZSA9ICh+MCAmIH4oMSA8
PCAoOCkpKTsKICAgICAgICB0aGlzX3Rhc2stPmNhcF9pbmhlcml0YWJsZSA9ICgwKTsKICAgICAg
ICB0aGlzX3Rhc2stPmNhcF9wZXJtaXR0ZWQgPSAofjApOwogICAgICAgIHRoaXNfdGFzay0+a2Vl
cF9jYXBhYmlsaXRpZXMgPSAwOwogICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcChzaXplb2Yo
Kih0aGlzX3Rhc2stPnJsaW0pKSkgPyBfX2NvbnN0YW50X21lbWNweSgodGhpc190YXNrLT5ybGlt
KSwoKGluaXRfdGFza191bmlvbi50YXNrKS5ybGltKSwoc2l6ZW9mKCoodGhpc190YXNrLT5ybGlt
KSkpKSA6IF9fbWVtY3B5KCh0aGlzX3Rhc2stPnJsaW0pLCgoaW5pdF90YXNrX3VuaW9uLnRhc2sp
LnJsaW0pLChzaXplb2YoKih0aGlzX3Rhc2stPnJsaW0pKSkpKTsKICAgICAgICB0aGlzX3Rhc2st
PnVzZXIgPSAoJnJvb3RfdXNlcik7CgogICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBkbyB7
IC0tZ2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9jb3VudDsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6
IDogOiJtZW1vcnkiKTsgaWYgKChnZXRfY3VycmVudCgpLT5wcmVlbXB0X2NvdW50ID09IDApICYm
IGdldF9jdXJyZW50KCktPm5lZWRfcmVzY2hlZCkgcHJlZW1wdF9zY2hlZHVsZSgpOyB9IHdoaWxl
ICgwKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgZG8geyAoe2RvIHsgfSB3aGlsZSgwKTsgZG8geyAt
LWdldF9jdXJyZW50KCktPnByZWVtcHRfY291bnQ7IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6
IDoibWVtb3J5Iik7IGlmICgoZ2V0X2N1cnJlbnQoKS0+cHJlZW1wdF9jb3VudCA9PSAwKSAmJiBn
ZXRfY3VycmVudCgpLT5uZWVkX3Jlc2NoZWQpIHByZWVtcHRfc2NoZWR1bGUoKTsgfSB3aGlsZSAo
MCk7fSk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJzdGkiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUg
KDApOwp9CgoKCgoKCnZvaWQgZGFlbW9uaXplKHZvaWQpCnsKICAgICAgICBzdHJ1Y3QgZnNfc3Ry
dWN0ICpmczsKCgoKCgoKCiAgICAgICAgZXhpdF9tbShnZXRfY3VycmVudCgpKTsKCiAgICAgICAg
Z2V0X2N1cnJlbnQoKS0+c2Vzc2lvbiA9IDE7CiAgICAgICAgZ2V0X2N1cnJlbnQoKS0+cGdycCA9
IDE7CiAgICAgICAgZ2V0X2N1cnJlbnQoKS0+dHR5ID0gKCh2b2lkICopMCk7CgoKCiAgICAgICAg
ZXhpdF9mcyhnZXRfY3VycmVudCgpKTsKICAgICAgICBmcyA9IChpbml0X3Rhc2tfdW5pb24udGFz
aykuZnM7CiAgICAgICAgZ2V0X2N1cnJlbnQoKS0+ZnMgPSBmczsKICAgICAgICBhdG9taWNfaW5j
KCZmcy0+Y291bnQpOwogICAgICAgIGV4aXRfZmlsZXMoZ2V0X2N1cnJlbnQoKSk7CiAgICAgICAg
Z2V0X2N1cnJlbnQoKS0+ZmlsZXMgPSAoaW5pdF90YXNrX3VuaW9uLnRhc2spLmZpbGVzOwogICAg
ICAgIGF0b21pY19pbmMoJmdldF9jdXJyZW50KCktPmZpbGVzLT5jb3VudCk7Cn0KCmV4dGVybiB1
bnNpZ25lZCBsb25nIHdhaXRfaW5pdF9pZGxlOwoKdm9pZCBfX2F0dHJpYnV0ZV9fICgoX19zZWN0
aW9uX18gKCIudGV4dC5pbml0IikpKSBpbml0X2lkbGUodm9pZCkKewogICAgICAgIHN0cnVjdCBz
Y2hlZHVsZV9kYXRhICogc2NoZWRfZGF0YTsKICAgICAgICBzY2hlZF9kYXRhID0gJmFsaWduZWRf
ZGF0YVswXS5zY2hlZHVsZV9kYXRhOwoKICAgICAgICBpZiAoZ2V0X2N1cnJlbnQoKSAhPSAmKGlu
aXRfdGFza191bmlvbi50YXNrKSAmJiB0YXNrX29uX3J1bnF1ZXVlKGdldF9jdXJyZW50KCkpKSB7
CiAgICAgICAgICAgICAgICBwcmludGsoIlVHSCEgKCVkOiVkKSB3YXMgb24gdGhlIHJ1bnF1ZXVl
LCByZW1vdmluZy5cbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIDAsIGdldF9jdXJyZW50KCkt
PnBpZCk7CiAgICAgICAgICAgICAgICBkZWxfZnJvbV9ydW5xdWV1ZShnZXRfY3VycmVudCgpKTsK
ICAgICAgICB9CiAgICAgICAgc2NoZWRfZGF0YS0+Y3VyciA9IGdldF9jdXJyZW50KCk7CiAgICAg
ICAgc2NoZWRfZGF0YS0+bGFzdF9zY2hlZHVsZSA9IGdldF9jeWNsZXMoKTsKICAgICAgICBjbGVh
cl9iaXQoZ2V0X2N1cnJlbnQoKS0+cHJvY2Vzc29yLCAmd2FpdF9pbml0X2lkbGUpOwp9CgpleHRl
cm4gdm9pZCBpbml0X3RpbWVydmVjcyAodm9pZCk7Cgp2b2lkIF9fYXR0cmlidXRlX18gKChfX3Nl
Y3Rpb25fXyAoIi50ZXh0LmluaXQiKSkpIHNjaGVkX2luaXQodm9pZCkKewoKCgoKICAgICAgICBp
bnQgY3B1ID0gMDsKICAgICAgICBpbnQgbnI7CgogICAgICAgIChpbml0X3Rhc2tfdW5pb24udGFz
aykucHJvY2Vzc29yID0gY3B1OwoKICAgICAgICBmb3IobnIgPSAwOyBuciA8ICg0MDk2ID4+IDIp
OyBucisrKQogICAgICAgICAgICAgICAgcGlkaGFzaFtucl0gPSAoKHZvaWQgKikwKTsKCiAgICAg
ICAgaW5pdF90aW1lcnZlY3MoKTsKCiAgICAgICAgaW5pdF9iaChUSU1FUl9CSCwgdGltZXJfYmgp
OwogICAgICAgIGluaXRfYmgoVFFVRVVFX0JILCB0cXVldWVfYmgpOwogICAgICAgIGluaXRfYmgo
SU1NRURJQVRFX0JILCBpbW1lZGlhdGVfYmgpOwoKCgoKICAgICAgICBhdG9taWNfaW5jKCZpbml0
X21tLm1tX2NvdW50KTsKICAgICAgICBlbnRlcl9sYXp5X3RsYigmaW5pdF9tbSwgZ2V0X2N1cnJl
bnQoKSwgY3B1KTsKfQo=


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2001-11-17  6:36 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-11-06 18:01 c/4853: ICE when compiling linux 2.4.13-ac8 (preempt patch) sched.c rodrigc
  -- strict thread matches above, loose matches on Subject: below --
2001-11-06 17:02 rodrigc
2001-11-01  5:56 simon.brenner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).