public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: debug/5514: 3.0.3 debug problem - undefined reference to LC5
@ 2002-12-11 14:14 bangerth
  0 siblings, 0 replies; 4+ messages in thread
From: bangerth @ 2002-12-11 14:14 UTC (permalink / raw)
  To: cheng, gcc-bugs, gcc-prs, nobody

Synopsis: 3.0.3 debug problem - undefined reference to LC5

State-Changed-From-To: feedback->closed
State-Changed-By: bangerth
State-Changed-When: Wed Dec 11 14:14:02 2002
State-Changed-Why:
    Submitter believes problem is fixed.

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


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

* Re: debug/5514: 3.0.3 debug problem - undefined reference to LC5
@ 2002-12-11 14:16 Philip Cheng
  0 siblings, 0 replies; 4+ messages in thread
From: Philip Cheng @ 2002-12-11 14:16 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

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

From: Philip Cheng <cheng@pcigeomatics.com>
To: <bangerth@dealii.org>,  <cheng@pcigeomatics.com>,  <gcc-bugs@gcc.gnu.org>, 
     <gcc-prs@gcc.gnu.org>,  <nobody@gcc.gnu.org>,  <gcc-gnats@gcc.gnu.org>
Cc:  
Subject: Re: debug/5514: 3.0.3 debug problem - undefined reference to LC5
Date: Wed, 11 Dec 2002 17:11:54 -0500 (EST)

 Dear Wolgang:
 
 We are now running gcc 3.1 and I do not find the problem anymore.
 I think it was fixed.
 
 Thanks
 
 Philip
 
 On 11 Dec 2002 bangerth@dealii.org wrote:
 
 > Synopsis: 3.0.3 debug problem - undefined reference to LC5
 > 
 > State-Changed-From-To: open->feedback
 > State-Changed-By: bangerth
 > State-Changed-When: Wed Dec 11 14:09:09 2002
 > State-Changed-Why:
 >     I can't reproduce this with 3.0.4, so maybe it was
 >     fixed in between?
 >     
 >     Could you possibly check whether you get the same problem
 >     with gcc3.2.1? I suspect it is fixed, but then it would
 >     be good if you could check this.
 >     
 >     Thanks
 >       Wolfgang
 > 
 > http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=5514
 > 
 


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

* Re: debug/5514: 3.0.3 debug problem - undefined reference to LC5
@ 2002-12-11 14:09 bangerth
  0 siblings, 0 replies; 4+ messages in thread
From: bangerth @ 2002-12-11 14:09 UTC (permalink / raw)
  To: cheng, gcc-bugs, gcc-prs, nobody

Synopsis: 3.0.3 debug problem - undefined reference to LC5

State-Changed-From-To: open->feedback
State-Changed-By: bangerth
State-Changed-When: Wed Dec 11 14:09:09 2002
State-Changed-Why:
    I can't reproduce this with 3.0.4, so maybe it was
    fixed in between?
    
    Could you possibly check whether you get the same problem
    with gcc3.2.1? I suspect it is fixed, but then it would
    be good if you could check this.
    
    Thanks
      Wolfgang

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


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

* debug/5514: 3.0.3 debug problem - undefined reference to LC5
@ 2002-01-28  7:46 cheng
  0 siblings, 0 replies; 4+ messages in thread
From: cheng @ 2002-01-28  7:46 UTC (permalink / raw)
  To: gcc-gnats


>Number:         5514
>Category:       debug
>Synopsis:       3.0.3 debug problem - undefined reference to LC5
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Jan 28 07:46:01 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     Philip Cheng
>Release:        3.0.3
>Organization:
>Environment:
Red Hat Linux 7.2 
>Description:
I have a C++ function which I used to create a shared library.
When I compiled with -O2 option, I could link the library with my
main program.  However, when I compiled with -O0 option, I got an
undefined reference to `LC5' error when I tried to link it with
my main program.   It did not happen in 2.95.2.    I have no
function call LC5.  Seems it is internal.
>How-To-Repeat:

>Fix:

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

IyA1MjAgIm1hdHJpeC5jcHAiCiNwcmFnbWEgaW1wbGVtZW50YXRpb24gIm1hdHJpeC5oaCIKCgoj
IDEgIm1hdHJpeC5oaCIgMQojIDY1ICJtYXRyaXguaGgiCiNwcmFnbWEgaW50ZXJmYWNlCgoKIyAx
ICJsc2NtaXNjLmgiIDEKIyAyODUgImxzY21pc2MuaCIKIyAxICJsc2Nfc3RyLmgiIDEKIyA0NSAi
bHNjX3N0ci5oIgojIDEgIi4uLy4uLy4uL2xpYi9jY2xiYXNlLmgiIDEKIyAzOSAiLi4vLi4vLi4v
bGliL2NjbGJhc2UuaCIKZXh0ZXJuICJDIiB7CgojIDEgIi4uLy4uLy4uL2xpYi9wY2lzeXMuaCIg
MQojIDQyICIuLi8uLi8uLi9saWIvY2NsYmFzZS5oIiAyCiMgMSAiLi4vLi4vLi4vbGliL2NjbGNv
bmYuaCIgMQojIDQzICIuLi8uLi8uLi9saWIvY2NsYmFzZS5oIiAyCiMgMSAiLi4vLi4vLi4vbGli
L2NjbHBvcnQuaCIgMQojIDY1ICIuLi8uLi8uLi9saWIvY2NscG9ydC5oIgojIDEgIi4uLy4uLy4u
L2xpYi9wY2lzeXMuaCIgMQojIDY2ICIuLi8uLi8uLi9saWIvY2NscG9ydC5oIiAyCiMgMTI5ICIu
Li8uLi8uLi9saWIvY2NscG9ydC5oIgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRpby5oIiAxIDMKIyAzNyAiL3Vzci9sb2NhbC9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAx
ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjgzICIvdXNyL2luY2x1ZGUvZmVhdHVy
ZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzCiMgMjg0ICIvdXNyL2lu
Y2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMzEyICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS9nbnUvc3R1YnMuaCIgMSAzCiMgMzEzICIvdXNyL2luY2x1ZGUvZmVh
dHVyZXMuaCIgMiAzCiMgMzggIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n
bnUvMy4wLjMvaW5jbHVkZS9zdGRpby5oIiAyIDMKCmV4dGVybiAiQyIgewoKCgojIDEgIi91c3Iv
bG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRkZWYu
aCIgMSAzCiMgMTk5ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMu
MC4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90OwojIDQ0
ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUv
c3RkaW8uaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDI2ICIv
dXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgi
IDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgojIDEgIi91c3IvbG9j
YWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRkZWYuaCIg
MSAzCiMgMzAgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwoKCnR5cGVkZWYgdW5zaWdu
ZWQgY2hhciBfX3VfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3Vfc2hvcnQ7CnR5cGVk
ZWYgdW5zaWduZWQgaW50IF9fdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3VfbG9uZzsK
Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdV9xdWFkX3Q7
Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVhZF90OwojIDQ5ICIvdXNy
L2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7CnR5
cGVkZWYgdW5zaWduZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGludCBf
X2ludDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVkZWYg
c2lnbmVkIGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7Cgpf
X2V4dGVuc2lvbl9fIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90OwpfX2V4
dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VpbnQ2NF90OwoKdHlw
ZWRlZiBfX3F1YWRfdCAqX19xYWRkcl90OwoKdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7CnR5
cGVkZWYgX191X2ludCBfX3VpZF90Owp0eXBlZGVmIF9fdV9pbnQgX19naWRfdDsKdHlwZWRlZiBf
X3VfbG9uZyBfX2lub190Owp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7CnR5cGVkZWYgX191X2lu
dCBfX25saW5rX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19vZmZfdDsKdHlwZWRlZiBfX3F1YWRfdCBf
X2xvZmZfdDsKdHlwZWRlZiBpbnQgX19waWRfdDsKdHlwZWRlZiBpbnQgX19zc2l6ZV90Owp0eXBl
ZGVmIF9fdV9sb25nIF9fcmxpbV90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19ybGltNjRfdDsKdHlw
ZWRlZiBfX3VfaW50IF9faWRfdDsKCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IF9fdmFsWzJd
OwogIH0gX19mc2lkX3Q7CgoKdHlwZWRlZiBpbnQgX19kYWRkcl90Owp0eXBlZGVmIGNoYXIgKl9f
Y2FkZHJfdDsKdHlwZWRlZiBsb25nIGludCBfX3RpbWVfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
X191c2Vjb25kc190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9u
ZyBpbnQgX19zd2Jsa190OwoKdHlwZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7CgoKdHlwZWRlZiBp
bnQgX19jbG9ja2lkX3Q7CgoKdHlwZWRlZiBpbnQgX190aW1lcl90OwoKCgoKCgp0eXBlZGVmIGlu
dCBfX2tleV90OwoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9faXBjX3BpZF90OwoKCgp0
eXBlZGVmIGxvbmcgaW50IF9fYmxrc2l6ZV90OwoKCgoKdHlwZWRlZiBsb25nIGludCBfX2Jsa2Nu
dF90Owp0eXBlZGVmIF9fcXVhZF90IF9fYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25nIF9f
ZnNibGtjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNibGtjbnQ2NF90OwoKCnR5cGVkZWYg
X191X2xvbmcgX19mc2ZpbGNudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2ZpbGNudDY0X3Q7
CgoKdHlwZWRlZiBfX3VfcXVhZF90IF9faW5vNjRfdDsKCgp0eXBlZGVmIF9fbG9mZl90IF9fb2Zm
NjRfdDsKCgp0eXBlZGVmIGxvbmcgaW50IF9fdF9zY2FsYXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBs
b25nIGludCBfX3RfdXNjYWxhcl90OwoKCnR5cGVkZWYgaW50IF9faW50cHRyX3Q7CgoKdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgX19zb2NrbGVuX3Q7CgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3B0
aHJlYWR0eXBlcy5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgi
IDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAxIDMKIyA2OCAiL3Vzci9pbmNsdWRl
L2JpdHMvc2NoZWQuaCIgMwpzdHJ1Y3QgX19zY2hlZF9wYXJhbQogIHsKICAgIGludCBfX3NjaGVk
X3ByaW9yaXR5OwogIH07CiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAy
IDMKCgpzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sKewogIGxvbmcgaW50IF9fc3RhdHVzOwogIGlu
dCBfX3NwaW5sb2NrOwoKfTsKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3RydWN0
ICpfcHRocmVhZF9kZXNjcjsKCgoKCgp0eXBlZGVmIHN0cnVjdCBfX3B0aHJlYWRfYXR0cl9zCnsK
ICBpbnQgX19kZXRhY2hzdGF0ZTsKICBpbnQgX19zY2hlZHBvbGljeTsKICBzdHJ1Y3QgX19zY2hl
ZF9wYXJhbSBfX3NjaGVkcGFyYW07CiAgaW50IF9faW5oZXJpdHNjaGVkOwogIGludCBfX3Njb3Bl
OwogIHNpemVfdCBfX2d1YXJkc2l6ZTsKICBpbnQgX19zdGFja2FkZHJfc2V0OwogIHZvaWQgKl9f
c3RhY2thZGRyOwogIHNpemVfdCBfX3N0YWNrc2l6ZTsKfSBwdGhyZWFkX2F0dHJfdDsKCgoKdHlw
ZWRlZiBzdHJ1Y3QKewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX2NfbG9jazsKICBfcHRo
cmVhZF9kZXNjciBfX2Nfd2FpdGluZzsKfSBwdGhyZWFkX2NvbmRfdDsKCgoKdHlwZWRlZiBzdHJ1
Y3QKewogIGludCBfX2R1bW15Owp9IHB0aHJlYWRfY29uZGF0dHJfdDsKCgp0eXBlZGVmIHVuc2ln
bmVkIGludCBwdGhyZWFkX2tleV90OwoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tX3Jl
c2VydmVkOwogIGludCBfX21fY291bnQ7CiAgX3B0aHJlYWRfZGVzY3IgX19tX293bmVyOwogIGlu
dCBfX21fa2luZDsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19tX2xvY2s7Cn0gcHRocmVh
ZF9tdXRleF90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbXV0ZXhraW5kOwp9IHB0aHJl
YWRfbXV0ZXhhdHRyX3Q7CgoKCnR5cGVkZWYgaW50IHB0aHJlYWRfb25jZV90OwoKCgoKdHlwZWRl
ZiBzdHJ1Y3QgX3B0aHJlYWRfcndsb2NrX3QKewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBf
X3J3X2xvY2s7CiAgaW50IF9fcndfcmVhZGVyczsKICBfcHRocmVhZF9kZXNjciBfX3J3X3dyaXRl
cjsKICBfcHRocmVhZF9kZXNjciBfX3J3X3JlYWRfd2FpdGluZzsKICBfcHRocmVhZF9kZXNjciBf
X3J3X3dyaXRlX3dhaXRpbmc7CiAgaW50IF9fcndfa2luZDsKICBpbnQgX19yd19wc2hhcmVkOwp9
IHB0aHJlYWRfcndsb2NrX3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19sb2Nra2luZDsK
ICBpbnQgX19wc2hhcmVkOwp9IHB0aHJlYWRfcndsb2NrYXR0cl90OwoKCgoKdHlwZWRlZiB2b2xh
dGlsZSBpbnQgcHRocmVhZF9zcGlubG9ja190OwoKCnR5cGVkZWYgc3RydWN0IHsKICBzdHJ1Y3Qg
X3B0aHJlYWRfZmFzdGxvY2sgX19iYV9sb2NrOwogIGludCBfX2JhX3JlcXVpcmVkOwogIGludCBf
X2JhX3ByZXNlbnQ7CiAgX3B0aHJlYWRfZGVzY3IgX19iYV93YWl0aW5nOwp9IHB0aHJlYWRfYmFy
cmllcl90OwoKCnR5cGVkZWYgc3RydWN0IHsKICBpbnQgX19wc2hhcmVkOwp9IHB0aHJlYWRfYmFy
cmllcmF0dHJfdDsKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHB0aHJlYWRfdDsKIyAx
NDQgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwojIDQ2ICIvdXNyL2xvY2FsL2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIgMiAzCiMgNTQg
Ii91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9z
dGRpby5oIiAzCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIEZJTEU7CiMgNjQgIi91c3IvbG9jYWwv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRpby5oIiAzCnR5
cGVkZWYgc3RydWN0IF9JT19GSUxFIF9fRklMRTsKIyA3NCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvbGliaW8uaCIgMSAzCiMgMzIgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL19HX2NvbmZpZy5oIiAxIDMKIyA5ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgi
IDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAxMCAiL3Vzci9pbmNsdWRl
L19HX2NvbmZpZy5oIiAyIDMKCgoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMTIgIi91c3IvbG9jYWwv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRkZWYuaCIgMwp0
eXBlZGVmIHVuc2lnbmVkIGludCB3aW50X3Q7CiMgMTUgIi91c3IvaW5jbHVkZS9fR19jb25maWcu
aCIgMiAzCiMgMjQgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMwojIDEgIi91c3IvaW5jbHVk
ZS93Y2hhci5oIiAxIDMKIyA0OCAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMKIyAxICIvdXNyL2xv
Y2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkZGVmLmgi
IDEgMwojIDQ5ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9i
aXRzL3djaGFyLmgiIDEgMwojIDUxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzCiMgNjcgIi91
c3IvaW5jbHVkZS93Y2hhci5oIiAzCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19jb3VudDsKICB1
bmlvbgogIHsKICAgIHdpbnRfdCBfX3djaDsKICAgIGNoYXIgX193Y2hiWzRdOwogIH0gX192YWx1
ZTsKfSBfX21ic3RhdGVfdDsKIyAyNSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKCnR5
cGVkZWYgc3RydWN0CnsKICBfX29mZl90IF9fcG9zOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7Cn0g
X0dfZnBvc190Owp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmY2NF90IF9fcG9zOwogIF9fbWJzdGF0
ZV90IF9fc3RhdGU7Cn0gX0dfZnBvczY0X3Q7CiMgNDQgIi91c3IvaW5jbHVkZS9fR19jb25maWcu
aCIgMwojIDEgIi91c3IvaW5jbHVkZS9nY29udi5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2dj
b252LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3IvaW5j
bHVkZS9nY29udi5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDEgMwojIDQ4ICIv
dXNyL2luY2x1ZGUvd2NoYXIuaCIgMwojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgNDkgIi91c3IvaW5jbHVk
ZS93Y2hhci5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd2NoYXIuaCIgMSAzCiMgNTEg
Ii91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKIyAyOSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIg
MwoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9p
bmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMiAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMwoKCgoK
CmVudW0KewogIF9fR0NPTlZfT0sgPSAwLAogIF9fR0NPTlZfTk9DT05WLAogIF9fR0NPTlZfTk9E
QiwKICBfX0dDT05WX05PTUVNLAoKICBfX0dDT05WX0VNUFRZX0lOUFVULAogIF9fR0NPTlZfRlVM
TF9PVVRQVVQsCiAgX19HQ09OVl9JTExFR0FMX0lOUFVULAogIF9fR0NPTlZfSU5DT01QTEVURV9J
TlBVVCwKCiAgX19HQ09OVl9JTExFR0FMX0RFU0NSSVBUT1IsCiAgX19HQ09OVl9JTlRFUk5BTF9F
UlJPUgp9OwoKCgplbnVtCnsKICBfX0dDT05WX0lTX0xBU1QgPSAweDAwMDEsCiAgX19HQ09OVl9J
R05PUkVfRVJST1JTID0gMHgwMDAyCn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXA7CnN0cnVjdCBf
X2djb252X3N0ZXBfZGF0YTsKc3RydWN0IF9fZ2NvbnZfbG9hZGVkX29iamVjdDsKc3RydWN0IF9f
Z2NvbnZfdHJhbnNfZGF0YTsKCgoKdHlwZWRlZiBpbnQgKCpfX2djb252X2ZjdCkgKHN0cnVjdCBf
X2djb252X3N0ZXAgKiwgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhICosCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiosIF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqKiwgc2l6
ZV90ICosIGludCwgaW50KTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfaW5pdF9mY3QpIChzdHJ1
Y3QgX19nY29udl9zdGVwICopOwp0eXBlZGVmIHZvaWQgKCpfX2djb252X2VuZF9mY3QpIChzdHJ1
Y3QgX19nY29udl9zdGVwICopOwoKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfZmN0KSAo
c3RydWN0IF9fZ2NvbnZfc3RlcCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhICosIHZvaWQgKiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICoqLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNoYXIg
KiosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKik7CgoKdHlwZWRl
ZiBpbnQgKCpfX2djb252X3RyYW5zX2NvbnRleHRfZmN0KSAodm9pZCAqLCBfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19j
b25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciAqKTsKCgp0eXBlZGVmIGludCAo
Kl9fZ2NvbnZfdHJhbnNfcXVlcnlfZmN0KSAoX19jb25zdCBjaGFyICosIF9fY29uc3QgY2hhciAq
KiosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKik7CgoK
dHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX2luaXRfZmN0KSAodm9pZCAqKiwgY29uc3QgY2hh
ciAqKTsKdHlwZWRlZiB2b2lkICgqX19nY29udl90cmFuc19lbmRfZmN0KSAodm9pZCAqKTsKCnN0
cnVjdCBfX2djb252X3RyYW5zX2RhdGEKewoKICBfX2djb252X3RyYW5zX2ZjdCBfX3RyYW5zX2Zj
dDsKICBfX2djb252X3RyYW5zX2NvbnRleHRfZmN0IF9fdHJhbnNfY29udGV4dF9mY3Q7CiAgX19n
Y29udl90cmFuc19lbmRfZmN0IF9fdHJhbnNfZW5kX2ZjdDsKICB2b2lkICpfX2RhdGE7CiAgc3Ry
dWN0IF9fZ2NvbnZfdHJhbnNfZGF0YSAqX19uZXh0Owp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVw
CnsKICBzdHJ1Y3QgX19nY29udl9sb2FkZWRfb2JqZWN0ICpfX3NobGliX2hhbmRsZTsKICBfX2Nv
bnN0IGNoYXIgKl9fbW9kbmFtZTsKCiAgaW50IF9fY291bnRlcjsKCiAgY2hhciAqX19mcm9tX25h
bWU7CiAgY2hhciAqX190b19uYW1lOwoKICBfX2djb252X2ZjdCBfX2ZjdDsKICBfX2djb252X2lu
aXRfZmN0IF9faW5pdF9mY3Q7CiAgX19nY29udl9lbmRfZmN0IF9fZW5kX2ZjdDsKCgoKICBpbnQg
X19taW5fbmVlZGVkX2Zyb207CiAgaW50IF9fbWF4X25lZWRlZF9mcm9tOwogIGludCBfX21pbl9u
ZWVkZWRfdG87CiAgaW50IF9fbWF4X25lZWRlZF90bzsKCgogIGludCBfX3N0YXRlZnVsOwoKICB2
b2lkICpfX2RhdGE7Cn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXBfZGF0YQp7CiAgdW5zaWduZWQg
Y2hhciAqX19vdXRidWY7CiAgdW5zaWduZWQgY2hhciAqX19vdXRidWZlbmQ7CgoKCiAgaW50IF9f
ZmxhZ3M7CgoKCiAgaW50IF9faW52b2NhdGlvbl9jb3VudGVyOwoKCgogIGludCBfX2ludGVybmFs
X3VzZTsKCiAgX19tYnN0YXRlX3QgKl9fc3RhdGVwOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7CgoK
CiAgc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YSAqX190cmFuczsKfTsKCgoKdHlwZWRlZiBzdHJ1
Y3QgX19nY29udl9pbmZvCnsKICBzaXplX3QgX19uc3RlcHM7CiAgc3RydWN0IF9fZ2NvbnZfc3Rl
cCAqX19zdGVwczsKICBfX2V4dGVuc2lvbl9fIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSBfX2Rh
dGEgW107Cn0gKl9fZ2NvbnZfdDsKIyA0NSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMK
dHlwZWRlZiB1bmlvbgp7CiAgc3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogIHN0cnVjdAogIHsK
ICAgIHN0cnVjdCBfX2djb252X2luZm8gX19jZDsKICAgIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0
YSBfX2RhdGE7CiAgfSBfX2NvbWJpbmVkOwp9IF9HX2ljb252X3Q7Cgp0eXBlZGVmIGludCBfR19p
bnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBf
R19pbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVu
c2lnbmVkIGludCBfR191aW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykp
KTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX0dfdWludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9k
ZV9fIChfX1NJX18pKSk7CiMgMzMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKIyA1MyAiL3Vz
ci9pbmNsdWRlL2xpYmlvLmgiIDMKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMt
bGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkYXJnLmgiIDEgMwojIDQzICIvdXNyL2xvY2FsL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkYXJnLmgiIDMKdHlw
ZWRlZiBfX2J1aWx0aW5fdmFfbGlzdCBfX2dudWNfdmFfbGlzdDsKIyA1NCAiL3Vzci9pbmNsdWRl
L2xpYmlvLmgiIDIgMwojIDE2MCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKc3RydWN0IF9JT19q
dW1wX3Q7IHN0cnVjdCBfSU9fRklMRTsKIyAxNzAgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5
cGVkZWYgdm9pZCBfSU9fbG9ja190OwoKCgoKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1Y3Qg
X0lPX21hcmtlciAqX25leHQ7CiAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsKCgoKICBpbnQgX3Bv
czsKIyAxOTMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCn07CgoKZW51bSBfX2NvZGVjdnRfcmVz
dWx0CnsKICBfX2NvZGVjdnRfb2ssCiAgX19jb2RlY3Z0X3BhcnRpYWwsCiAgX19jb2RlY3Z0X2Vy
cm9yLAogIF9fY29kZWN2dF9ub2NvbnYKfTsKIyAyNjEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAz
CnN0cnVjdCBfSU9fRklMRSB7CiAgaW50IF9mbGFnczsKCgoKCiAgY2hhciogX0lPX3JlYWRfcHRy
OwogIGNoYXIqIF9JT19yZWFkX2VuZDsKICBjaGFyKiBfSU9fcmVhZF9iYXNlOwogIGNoYXIqIF9J
T193cml0ZV9iYXNlOwogIGNoYXIqIF9JT193cml0ZV9wdHI7CiAgY2hhciogX0lPX3dyaXRlX2Vu
ZDsKICBjaGFyKiBfSU9fYnVmX2Jhc2U7CiAgY2hhciogX0lPX2J1Zl9lbmQ7CgogIGNoYXIgKl9J
T19zYXZlX2Jhc2U7CiAgY2hhciAqX0lPX2JhY2t1cF9iYXNlOwogIGNoYXIgKl9JT19zYXZlX2Vu
ZDsKCiAgc3RydWN0IF9JT19tYXJrZXIgKl9tYXJrZXJzOwoKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9j
aGFpbjsKCiAgaW50IF9maWxlbm87CiAgaW50IF9ibGtzaXplOwogIF9fb2ZmX3QgX29sZF9vZmZz
ZXQ7CgoKCiAgdW5zaWduZWQgc2hvcnQgX2N1cl9jb2x1bW47CiAgc2lnbmVkIGNoYXIgX3Z0YWJs
ZV9vZmZzZXQ7CiAgY2hhciBfc2hvcnRidWZbMV07CgoKCiAgX0lPX2xvY2tfdCAqX2xvY2s7CiMg
MzA1ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwogIF9fb2ZmNjRfdCBfb2Zmc2V0OwoKCgoKCiAg
dm9pZCAqX19wYWQxOwogIHZvaWQgKl9fcGFkMjsKCiAgaW50IF9tb2RlOwoKICBjaGFyIF91bnVz
ZWQyWzE1ICogc2l6ZW9mIChpbnQpIC0gMiAqIHNpemVvZiAodm9pZCAqKV07Cgp9OwoKCgoKCnN0
cnVjdCBfSU9fRklMRV9wbHVzOwoKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFf
c3RkaW5fOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRvdXRfOwpleHRl
cm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRlcnJfOwojIDM0NCAiL3Vzci9pbmNs
dWRlL2xpYmlvLmgiIDMKdHlwZWRlZiBfX3NzaXplX3QgX19pb19yZWFkX2ZuICh2b2lkICpfX2Nv
b2tpZSwgY2hhciAqX19idWYsIHNpemVfdCBfX25ieXRlcyk7CgoKCgoKCgp0eXBlZGVmIF9fc3Np
emVfdCBfX2lvX3dyaXRlX2ZuICh2b2lkICpfX2Nvb2tpZSwgX19jb25zdCBjaGFyICpfX2J1ZiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbik7CgoKCgoKCgp0eXBl
ZGVmIGludCBfX2lvX3NlZWtfZm4gKHZvaWQgKl9fY29va2llLCBfX29mZjY0X3QgKl9fcG9zLCBp
bnQgX193KTsKCgp0eXBlZGVmIGludCBfX2lvX2Nsb3NlX2ZuICh2b2lkICpfX2Nvb2tpZSk7CgoK
Cgp0eXBlZGVmIF9faW9fcmVhZF9mbiBjb29raWVfcmVhZF9mdW5jdGlvbl90Owp0eXBlZGVmIF9f
aW9fd3JpdGVfZm4gY29va2llX3dyaXRlX2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb19zZWVrX2Zu
IGNvb2tpZV9zZWVrX2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb19jbG9zZV9mbiBjb29raWVfY2xv
c2VfZnVuY3Rpb25fdDsKCgp0eXBlZGVmIHN0cnVjdAp7CiAgX19pb19yZWFkX2ZuICpyZWFkOwog
IF9faW9fd3JpdGVfZm4gKndyaXRlOwogIF9faW9fc2Vla19mbiAqc2VlazsKICBfX2lvX2Nsb3Nl
X2ZuICpjbG9zZTsKfSBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190Owp0eXBlZGVmIF9JT19jb29r
aWVfaW9fZnVuY3Rpb25zX3QgY29va2llX2lvX2Z1bmN0aW9uc190OwoKc3RydWN0IF9JT19jb29r
aWVfZmlsZTsKCgpleHRlcm4gdm9pZCBfSU9fY29va2llX2luaXQgKHN0cnVjdCBfSU9fY29va2ll
X2ZpbGUgKl9fY2ZpbGUsIGludCBfX3JlYWRfd3JpdGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAqX19jb29raWUsIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgX19mbnMpOwoK
CgoKZXh0ZXJuICJDIiB7CgoKZXh0ZXJuIGludCBfX3VuZGVyZmxvdyAoX0lPX0ZJTEUgKikgdGhy
b3cgKCk7CmV4dGVybiBpbnQgX191ZmxvdyAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7CmV4dGVybiBp
bnQgX19vdmVyZmxvdyAoX0lPX0ZJTEUgKiwgaW50KSB0aHJvdyAoKTsKZXh0ZXJuIHdpbnRfdCBf
X3d1bmRlcmZsb3cgKF9JT19GSUxFICopIHRocm93ICgpOwpleHRlcm4gd2ludF90IF9fd3VmbG93
IChfSU9fRklMRSAqKSB0aHJvdyAoKTsKZXh0ZXJuIHdpbnRfdCBfX3dvdmVyZmxvdyAoX0lPX0ZJ
TEUgKiwgd2ludF90KSB0aHJvdyAoKTsKIyA0MjYgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4
dGVybiBpbnQgX0lPX2dldGMgKF9JT19GSUxFICpfX2ZwKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBf
SU9fcHV0YyAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnApIHRocm93ICgpOwpleHRlcm4gaW50IF9J
T19mZW9mIChfSU9fRklMRSAqX19mcCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX0lPX2ZlcnJvciAo
X0lPX0ZJTEUgKl9fZnApIHRocm93ICgpOwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkIChf
SU9fRklMRSAqX19mcCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHZvaWQgX0lPX2Zsb2NrZmlsZSAo
X0lPX0ZJTEUgKikgdGhyb3cgKCk7CmV4dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAoX0lPX0ZJ
TEUgKikgdGhyb3cgKCk7CmV4dGVybiBpbnQgX0lPX2Z0cnlsb2NrZmlsZSAoX0lPX0ZJTEUgKikg
dGhyb3cgKCk7CiMgNDU2ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50IF9JT192
ZnNjYW5mIChfSU9fRklMRSAqIF9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LAog
ICAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCwgaW50ICpfX3Jlc3RyaWN0KSB0
aHJvdyAoKTsKZXh0ZXJuIGludCBfSU9fdmZwcmludGYgKF9JT19GSUxFICpfX3Jlc3RyaWN0LCBj
b25zdCBjaGFyICpfX3Jlc3RyaWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3Zh
X2xpc3QpIHRocm93ICgpOwpleHRlcm4gX19zc2l6ZV90IF9JT19wYWRuIChfSU9fRklMRSAqLCBp
bnQsIF9fc3NpemVfdCkgdGhyb3cgKCk7CmV4dGVybiBzaXplX3QgX0lPX3NnZXRuIChfSU9fRklM
RSAqLCB2b2lkICosIHNpemVfdCkgdGhyb3cgKCk7CgpleHRlcm4gX19vZmY2NF90IF9JT19zZWVr
b2ZmIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGludCwgaW50KSB0aHJvdyAoKTsKZXh0ZXJuIF9f
b2ZmNjRfdCBfSU9fc2Vla3BvcyAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQpIHRocm93ICgp
OwoKZXh0ZXJuIHZvaWQgX0lPX2ZyZWVfYmFja3VwX2FyZWEgKF9JT19GSUxFICopIHRocm93ICgp
OwojIDUxNCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKfQojIDc1ICIvdXNyL2xvY2FsL2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCgp0
eXBlZGVmIF9fZ251Y192YV9saXN0IF9fbm90X3ZhX2xpc3RfXzsKIyA4OSAiL3Vzci9sb2NhbC9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlw
ZWRlZiBfR19mcG9zX3QgZnBvc190OwoKCgoKdHlwZWRlZiBfR19mcG9zNjRfdCBmcG9zNjRfdDsK
IyAxMzggIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5j
bHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW9fbGltLmgiIDEgMwoj
IDEzOSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNs
dWRlL3N0ZGlvLmgiIDIgMwoKCgpleHRlcm4gRklMRSAqc3RkaW47CmV4dGVybiBGSUxFICpzdGRv
dXQ7CmV4dGVybiBGSUxFICpzdGRlcnI7CiMgMTUzICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2
ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IHJlbW92
ZSAoX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgcmVuYW1l
IChfX2NvbnN0IGNoYXIgKl9fb2xkLCBfX2NvbnN0IGNoYXIgKl9fbmV3KSB0aHJvdyAoKTsKCgoK
CmV4dGVybiBGSUxFICp0bXBmaWxlICh2b2lkKSB0aHJvdyAoKTsKIyAxNjkgIi91c3IvbG9jYWwv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRpby5oIiAzCmV4
dGVybiBGSUxFICp0bXBmaWxlNjQgKHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiBjaGFyICp0bXBu
YW0gKGNoYXIgKl9fcykgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqdG1wbmFtX3IgKGNoYXIg
Kl9fcykgdGhyb3cgKCk7CiMgMTg5ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gY2hhciAqdGVtcG5hbSAoX19j
b25zdCBjaGFyICpfX2RpciwgX19jb25zdCBjaGFyICpfX3BmeCkKICAgICB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgoKZXh0ZXJuIGludCBmY2xvc2UgKEZJTEUgKl9f
c3RyZWFtKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgZmZsdXNoIChGSUxFICpfX3N0cmVhbSkgdGhy
b3cgKCk7CgoKCmV4dGVybiBpbnQgZmZsdXNoX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhy
b3cgKCk7CgoKCgpleHRlcm4gaW50IGZjbG9zZWFsbCAodm9pZCkgdGhyb3cgKCk7CgoKCgoKZXh0
ZXJuIEZJTEUgKmZvcGVuIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcykgdGhyb3cg
KCk7CgpleHRlcm4gRklMRSAqZnJlb3BlbiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmls
ZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19t
b2RlcywKICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRo
cm93ICgpOwojIDIzMyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8z
LjAuMy9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIEZJTEUgKmZvcGVuNjQgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMpIHRocm93ICgpOwpleHRlcm4gRklMRSAqZnJlb3BlbjY0
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAg
ICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIEZJ
TEUgKmZkb3BlbiAoaW50IF9fZmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgdGhyb3cgKCk7CgoK
CgoKZXh0ZXJuIEZJTEUgKmZvcGVuY29va2llICh2b2lkICpfX3Jlc3RyaWN0IF9fbWFnaWNfY29v
a2llLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X21vZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9JT19jb29raWVfaW9fZnVuY3Rpb25z
X3QgX19pb19mdW5jcykgdGhyb3cgKCk7CgoKZXh0ZXJuIEZJTEUgKmZtZW1vcGVuICh2b2lkICpf
X3MsIHNpemVfdCBfX2xlbiwgX19jb25zdCBjaGFyICpfX21vZGVzKSB0aHJvdyAoKTsKCgoKCmV4
dGVybiBGSUxFICpvcGVuX21lbXN0cmVhbSAoY2hhciAqKl9fcmVzdHJpY3QgX19idWZsb2MsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fc2l6ZWxvYykg
dGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHZvaWQgc2V0YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry
ZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBzZXR2
YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAog
ICAgICAgICAgICAgICAgICAgIGludCBfX21vZGVzLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgoK
CmV4dGVybiB2b2lkIHNldGJ1ZmZlciAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAq
X19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zaXplKSB0
aHJvdyAoKTsKCgpleHRlcm4gdm9pZCBzZXRsaW5lYnVmIChGSUxFICpfX3N0cmVhbSkgdGhyb3cg
KCk7CgoKCgpleHRlcm4gaW50IGZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAg
ICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4p
IHRocm93ICgpOwoKZXh0ZXJuIGludCBwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgc3ByaW50ZiAoY2hhciAqX19yZXN0
cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
Zm9ybWF0LCAuLi4pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgdmZwcmludGYgKEZJTEUgKl9fcmVz
dHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAg
ICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgdnBy
aW50ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBf
X2FyZykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBpbnQgdnNwcmludGYgKGNoYXIgKl9fcmVzdHJp
Y3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAg
ICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBzbnBy
aW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAg
ICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pCiAgICAgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDQpKSk7Cgpl
eHRlcm4gaW50IHZzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxl
biwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1h
dCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
Zm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDApKSk7CgoKCgoKZXh0ZXJuIGludCB2YXNwcmludGYg
KGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mLAog
ICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSk7CmV4dGVybiBp
bnQgX19hc3ByaW50ZiAoY2hhciAqKl9fcmVzdHJpY3QgX19wdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CmV4dGVybiBp
bnQgYXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLAogICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAgICB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKCgpleHRlcm4gaW50
IHZkcHJpbnRmIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LAogICAg
ICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMCkpKTsKZXh0ZXJuIGludCBk
cHJpbnRmIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAg
ICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMp
KSk7CgoKCgpleHRlcm4gaW50IGZzY2FuZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKICAg
ICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0
aHJvdyAoKTsKCmV4dGVybiBpbnQgc2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zv
cm1hdCwgLi4uKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgc3NjYW5mIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZm9ybWF0LCAuLi4pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHZmc2NhbmYgKEZJTEUgKl9f
cmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAg
ICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMiwgMCkpKTsKCgpleHRlcm4gaW50IHZzY2Fu
ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2Fy
ZykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAx
LCAwKSkpOwoKCmV4dGVybiBpbnQgdnNzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
cywKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQs
IF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zv
cm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSk7CgoKCgpleHRlcm4gaW50IGZnZXRjIChGSUxFICpf
X3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgZ2V0YyAoRklMRSAqX19zdHJlYW0pIHRocm93
ICgpOwoKCmV4dGVybiBpbnQgZ2V0Y2hhciAodm9pZCkgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4g
aW50IGdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBn
ZXRjaGFyX3VubG9ja2VkICh2b2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZmdldGNfdW5s
b2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZnB1dGMgKGlu
dCBfX2MsIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBwdXRjIChpbnQgX19j
LCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwdXRjaGFyIChpbnQgX19j
KSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQgZnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJ
TEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgcHV0Y191bmxvY2tlZCAoaW50
IF9fYywgRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpleHRlcm4gaW50IHB1dGNoYXJfdW5sb2Nr
ZWQgKGludCBfX2MpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgZ2V0dyAoRklMRSAqX19zdHJl
YW0pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgcHV0dyAoaW50IF9fdywgRklMRSAqX19zdHJlYW0p
IHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKmZnZXRzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywg
aW50IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICB0aHJvdyAoKTsKCgoKZXh0
ZXJuIGNoYXIgKmZnZXRzX3VubG9ja2VkIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50IF9fbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0
aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFyICpnZXRzIChjaGFyICpfX3MpIHRocm93ICgpOwojIDQz
NyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRl
L3N0ZGlvLmgiIDMKZXh0ZXJuIF9fc3NpemVfdCBfX2dldGRlbGltIChjaGFyICoqX19yZXN0cmlj
dCBfX2xpbmVwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9fcmVz
dHJpY3QgX19uLCBpbnQgX19kZWxpbWl0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIF9fc3NpemVfdCBn
ZXRkZWxpbSAoY2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sIGludCBfX2RlbGltaXRlciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAo
KTsKCgpleHRlcm4gX19zc2l6ZV90IGdldGxpbmUgKGNoYXIgKipfX3Jlc3RyaWN0IF9fbGluZXB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJv
dyAoKTsKCgoKCmV4dGVybiBpbnQgZnB1dHMgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Ms
IEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pCiAgICAgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQg
ZnB1dHNfdW5sb2NrZWQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwoKCgpl
eHRlcm4gaW50IHB1dHMgKF9fY29uc3QgY2hhciAqX19zKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGlu
dCB1bmdldGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHNp
emVfdCBmcmVhZCAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhy
b3cgKCk7CgpleHRlcm4gc2l6ZV90IGZ3cml0ZSAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9f
cHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklM
RSAqX19yZXN0cmljdCBfX3MpIHRocm93ICgpOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkX3VubG9j
a2VkICh2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0
aHJvdyAoKTsKZXh0ZXJuIHNpemVfdCBmd3JpdGVfdW5sb2NrZWQgKF9fY29uc3Qgdm9pZCAqX19y
ZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwoKCgoK
ZXh0ZXJuIGludCBmc2VlayAoRklMRSAqX19zdHJlYW0sIGxvbmcgaW50IF9fb2ZmLCBpbnQgX193
aGVuY2UpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsIChGSUxFICpfX3N0cmVhbSkg
dGhyb3cgKCk7CgpleHRlcm4gdm9pZCByZXdpbmQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsK
IyA1MDAgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5j
bHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZnNlZWtvIChGSUxFICpfX3N0cmVhbSwgX19vZmZf
dCBfX29mZiwgaW50IF9fd2hlbmNlKSB0aHJvdyAoKTsKCmV4dGVybiBfX29mZl90IGZ0ZWxsbyAo
RklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGZnZXRwb3MgKEZJTEUgKl9f
cmVzdHJpY3QgX19zdHJlYW0sIGZwb3NfdCAqX19yZXN0cmljdCBfX3BvcykKICAgICB0aHJvdyAo
KTsKCmV4dGVybiBpbnQgZnNldHBvcyAoRklMRSAqX19zdHJlYW0sIF9fY29uc3QgZnBvc190ICpf
X3BvcykgdGhyb3cgKCk7CiMgNTM0ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZzZWVrbzY0IChGSUxF
ICpfX3N0cmVhbSwgX19vZmY2NF90IF9fb2ZmLCBpbnQgX193aGVuY2UpIHRocm93ICgpOwpleHRl
cm4gX19vZmY2NF90IGZ0ZWxsbzY0IChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBp
bnQgZmdldHBvczY0IChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBmcG9zNjRfdCAqX19yZXN0
cmljdCBfX3BvcykKICAgICB0aHJvdyAoKTsKZXh0ZXJuIGludCBmc2V0cG9zNjQgKEZJTEUgKl9f
c3RyZWFtLCBfX2NvbnN0IGZwb3M2NF90ICpfX3BvcykgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lk
IGNsZWFyZXJyIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgpleHRlcm4gaW50IGZlb2YgKEZJ
TEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgZmVycm9yIChGSUxFICpfX3N0cmVh
bSkgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIGNsZWFyZXJyX3VubG9ja2VkIChGSUxFICpfX3N0
cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0p
IHRocm93ICgpOwpleHRlcm4gaW50IGZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRo
cm93ICgpOwoKCgoKZXh0ZXJuIHZvaWQgcGVycm9yIChfX2NvbnN0IGNoYXIgKl9fcykgdGhyb3cg
KCk7CgoKCgpleHRlcm4gaW50IHN5c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0
IHN5c19lcnJsaXN0W107CgoKZXh0ZXJuIGludCBfc3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNo
YXIgKl9fY29uc3QgX3N5c19lcnJsaXN0W107CgoKCgoKZXh0ZXJuIGludCBmaWxlbm8gKEZJTEUg
Kl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZmlsZW5vX3VubG9ja2VkIChGSUxF
ICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBGSUxFICpwb3BlbiAoX19jb25zdCBj
aGFyICpfX2NvbW1hbmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgdGhyb3cgKCk7CgoKZXh0ZXJu
IGludCBwY2xvc2UgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gY2hhciAq
Y3Rlcm1pZCAoY2hhciAqX19zKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gY2hhciAqY3VzZXJpZCAo
Y2hhciAqX19zKSB0aHJvdyAoKTsKCgoKCnN0cnVjdCBvYnN0YWNrOwoKCmV4dGVybiBpbnQgb2Jz
dGFja19wcmludGYgKHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAu
Li4pIHRocm93ICgpOwpleHRlcm4gaW50IG9ic3RhY2tfdnByaW50ZiAoc3RydWN0IG9ic3RhY2sg
Kl9fcmVzdHJpY3QgX19vYnN0YWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
X19nbnVjX3ZhX2xpc3QgX19hcmdzKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiB2b2lkIGZsb2Nr
ZmlsZSAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGZ0cnlsb2NrZmls
ZSAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIGZ1bmxvY2tmaWxlIChG
SUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CiMgNjQ0ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL2k2
ODYtcGMtbGludXgtZ251LzMuMC4zL2luY2x1ZGUvc3RkaW8uaCIgMwp9CiMgMTMwICIuLi8uLi8u
Li9saWIvY2NscG9ydC5oIiAyCiMgMTYyICIuLi8uLi8uLi9saWIvY2NscG9ydC5oIgojIDEgIi91
c3IvaW5jbHVkZS9tYXRoLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMgMSAi
L3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAy
IDMKCmV4dGVybiAiQyIgewoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2h1Z2VfdmFsLmgiIDEg
MwojIDI1ICIvdXNyL2luY2x1ZGUvYml0cy9odWdlX3ZhbC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRl
L2ZlYXR1cmVzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvYml0cy9odWdlX3ZhbC5oIiAyIDMK
IyAzNCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv
bmFuLmgiIDEgMwojIDM4ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKCgojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL21hdGhkZWYuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhkZWYu
aCIgMwp0eXBlZGVmIGxvbmcgZG91YmxlIGZsb2F0X3Q7Cgp0eXBlZGVmIGxvbmcgZG91YmxlIGRv
dWJsZV90OwojIDQxICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA2MyAiL3Vzci9pbmNsdWRl
L21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMKIyA1NCAi
L3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGRvdWJsZSBhY29zIChkb3Vi
bGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2Fjb3MgKGRvdWJsZSBfX3gpIHRocm93
ICgpOwoKZXh0ZXJuIGRvdWJsZSBhc2luIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRv
dWJsZSBfX2FzaW4gKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGRvdWJsZSBhdGFuIChk
b3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2F0YW4gKGRvdWJsZSBfX3gpIHRo
cm93ICgpOwoKZXh0ZXJuIGRvdWJsZSBhdGFuMiAoZG91YmxlIF9feSwgZG91YmxlIF9feCkgdGhy
b3cgKCk7IGV4dGVybiBkb3VibGUgX19hdGFuMiAoZG91YmxlIF9feSwgZG91YmxlIF9feCkgdGhy
b3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBjb3MgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4g
ZG91YmxlIF9fY29zIChkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBkb3VibGUgc2luIChk
b3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3NpbiAoZG91YmxlIF9feCkgdGhy
b3cgKCk7CgpleHRlcm4gZG91YmxlIHRhbiAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBk
b3VibGUgX190YW4gKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gdm9pZCBzaW5jb3Mg
KGRvdWJsZSBfX3gsIGRvdWJsZSAqX19zaW54LCBkb3VibGUgKl9fY29zeCkgdGhyb3cgKCk7IGV4
dGVybiB2b2lkIF9fc2luY29zIChkb3VibGUgX194LCBkb3VibGUgKl9fc2lueCwgZG91YmxlICpf
X2Nvc3gpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZG91YmxlIGNvc2ggKGRvdWJsZSBfX3gpIHRo
cm93ICgpOyBleHRlcm4gZG91YmxlIF9fY29zaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRl
cm4gZG91YmxlIHNpbmggKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fc2lu
aCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIHRhbmggKGRvdWJsZSBfX3gp
IHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fdGFuaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoK
CmV4dGVybiBkb3VibGUgYWNvc2ggKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91Ymxl
IF9fYWNvc2ggKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGRvdWJsZSBhc2luaCAoZG91
YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19hc2luaCAoZG91YmxlIF9feCkgdGhy
b3cgKCk7CgpleHRlcm4gZG91YmxlIGF0YW5oIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJu
IGRvdWJsZSBfX2F0YW5oIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gZG91Ymxl
IGV4cCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19leHAgKGRvdWJsZSBf
X3gpIHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIGV4cDEwIChkb3VibGUgX194KSB0aHJvdyAo
KTsgZXh0ZXJuIGRvdWJsZSBfX2V4cDEwIChkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBk
b3VibGUgcG93MTAgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fcG93MTAg
KGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIGZyZXhwIChkb3VibGUgX194
LCBpbnQgKl9fZXhwb25lbnQpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZnJleHAgKGRvdWJs
ZSBfX3gsIGludCAqX19leHBvbmVudCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBsZGV4cCAo
ZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fbGRl
eHAgKGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91Ymxl
IGxvZyAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19sb2cgKGRvdWJsZSBf
X3gpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgbG9nMTAgKGRvdWJsZSBfX3gpIHRocm93ICgp
OyBleHRlcm4gZG91YmxlIF9fbG9nMTAgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBk
b3VibGUgbW9kZiAoZG91YmxlIF9feCwgZG91YmxlICpfX2lwdHIpIHRocm93ICgpOyBleHRlcm4g
ZG91YmxlIF9fbW9kZiAoZG91YmxlIF9feCwgZG91YmxlICpfX2lwdHIpIHRocm93ICgpOwoKCgpl
eHRlcm4gZG91YmxlIGV4cG0xIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBf
X2V4cG0xIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGxvZzFwIChkb3Vi
bGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2xvZzFwIChkb3VibGUgX194KSB0aHJv
dyAoKTsKCgpleHRlcm4gZG91YmxlIGxvZ2IgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4g
ZG91YmxlIF9fbG9nYiAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gZG91YmxlIGV4
cDIgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZXhwMiAoZG91YmxlIF9f
eCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBsb2cyIChkb3VibGUgX194KSB0aHJvdyAoKTsg
ZXh0ZXJuIGRvdWJsZSBfX2xvZzIgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCgpleHRlcm4g
ZG91YmxlIHBvdyAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBkb3Vi
bGUgX19wb3cgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBkb3Vi
bGUgc3FydCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19zcXJ0IChkb3Vi
bGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSBoeXBvdCAoZG91YmxlIF9feCwgZG91
YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19oeXBvdCAoZG91YmxlIF9feCwgZG91
YmxlIF9feSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gZG91YmxlIGNicnQgKGRvdWJsZSBfX3gpIHRo
cm93ICgpOyBleHRlcm4gZG91YmxlIF9fY2JydCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgoK
CmV4dGVybiBkb3VibGUgY2VpbCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUg
X19jZWlsIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGZhYnMgKGRvdWJs
ZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJs
ZSBfX2ZhYnMgKGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsKCgpleHRlcm4gZG91YmxlIGZsb29yIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRv
dWJsZSBfX2Zsb29yIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGZtb2Qg
KGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZm1vZCAo
ZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IF9faXNpbmYg
KGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoK
ZXh0ZXJuIGludCBfX2Zpbml0ZSAoZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgaXNpbmYgKGRvdWJsZSBfX3ZhbHVlKSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBmaW5pdGUg
KGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoK
ZXh0ZXJuIGRvdWJsZSBkcmVtIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0
ZXJuIGRvdWJsZSBfX2RyZW0gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCgpl
eHRlcm4gZG91YmxlIHNpZ25pZmljYW5kIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRv
dWJsZSBfX3NpZ25pZmljYW5kIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBkb3Vi
bGUgY29weXNpZ24gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2NvcHlzaWduIChkb3VibGUgX194LCBk
b3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRl
cm4gZG91YmxlIG5hbiAoX19jb25zdCBjaGFyICpfX3RhZ2IpIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX25hbiAoX19jb25zdCBjaGFyICpfX3Rh
Z2IpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQg
X19pc25hbiAoZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsKCgoKZXh0ZXJuIGludCBpc25hbiAoZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZG91YmxlIGowIChkb3VibGUpIHRocm93
ICgpOyBleHRlcm4gZG91YmxlIF9fajAgKGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBkb3VibGUg
ajEgKGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19qMSAoZG91YmxlKSB0aHJvdyAo
KTsKZXh0ZXJuIGRvdWJsZSBqbiAoaW50LCBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91Ymxl
IF9fam4gKGludCwgZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGRvdWJsZSB5MCAoZG91YmxlKSB0
aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3kwIChkb3VibGUpIHRocm93ICgpOwpleHRlcm4gZG91
YmxlIHkxIChkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9feTEgKGRvdWJsZSkgdGhy
b3cgKCk7CmV4dGVybiBkb3VibGUgeW4gKGludCwgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGRv
dWJsZSBfX3luIChpbnQsIGRvdWJsZSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGRvdWJsZSBlcmYg
KGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19lcmYgKGRvdWJsZSkgdGhyb3cgKCk7
CmV4dGVybiBkb3VibGUgZXJmYyAoZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2Vy
ZmMgKGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBkb3VibGUgbGdhbW1hIChkb3VibGUpIHRocm93
ICgpOyBleHRlcm4gZG91YmxlIF9fbGdhbW1hIChkb3VibGUpIHRocm93ICgpOwoKCgpleHRlcm4g
ZG91YmxlIHRnYW1tYSAoZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3RnYW1tYSAo
ZG91YmxlKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBkb3VibGUgZ2FtbWEgKGRvdWJsZSkgdGhyb3cg
KCk7IGV4dGVybiBkb3VibGUgX19nYW1tYSAoZG91YmxlKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJu
IGRvdWJsZSBsZ2FtbWFfciAoZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApIHRocm93ICgpOyBleHRl
cm4gZG91YmxlIF9fbGdhbW1hX3IgKGRvdWJsZSwgaW50ICpfX3NpZ25nYW1wKSB0aHJvdyAoKTsK
CgoKCgoKZXh0ZXJuIGRvdWJsZSByaW50IChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRv
dWJsZSBfX3JpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgbmV4dGFm
dGVyIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19uZXh0YWZ0ZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBf
X3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCmV4dGVybiBkb3VibGUg
bmV4dHRvd2FyZCAoZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19uZXh0dG93YXJkIChkb3VibGUg
X194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsKCgoKZXh0ZXJuIGRvdWJsZSByZW1haW5kZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRo
cm93ICgpOyBleHRlcm4gZG91YmxlIF9fcmVtYWluZGVyIChkb3VibGUgX194LCBkb3VibGUgX195
KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSBzY2FsYiAoZG91YmxlIF9feCwgZG91YmxlIF9f
bikgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19zY2FsYiAoZG91YmxlIF9feCwgZG91YmxlIF9f
bikgdGhyb3cgKCk7CgoKCgpleHRlcm4gZG91YmxlIHNjYWxibiAoZG91YmxlIF9feCwgaW50IF9f
bikgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19zY2FsYm4gKGRvdWJsZSBfX3gsIGludCBfX24p
IHRocm93ICgpOwoKCgpleHRlcm4gaW50IGlsb2diIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0
ZXJuIGludCBfX2lsb2diIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBkb3VibGUg
c2NhbGJsbiAoZG91YmxlIF9feCwgbG9uZyBpbnQgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJs
ZSBfX3NjYWxibG4gKGRvdWJsZSBfX3gsIGxvbmcgaW50IF9fbikgdGhyb3cgKCk7CgoKCmV4dGVy
biBkb3VibGUgbmVhcmJ5aW50IChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBf
X25lYXJieWludCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBkb3VibGUgcm91bmQg
KGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fcm91bmQgKGRvdWJsZSBfX3gp
IHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIHRydW5jIChkb3VibGUgX194KSB0aHJvdyAoKSBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX190cnVuYyAoZG91Ymxl
IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGRv
dWJsZSByZW1xdW8gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3ksIGludCAqX19xdW8pIHRocm93ICgp
OyBleHRlcm4gZG91YmxlIF9fcmVtcXVvIChkb3VibGUgX194LCBkb3VibGUgX195LCBpbnQgKl9f
cXVvKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcgaW50IGxyaW50IChkb3VibGUgX194KSB0
aHJvdyAoKTsgZXh0ZXJuIGxvbmcgaW50IF9fbHJpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwpl
eHRlcm4gbG9uZyBsb25nIGludCBsbHJpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4g
bG9uZyBsb25nIGludCBfX2xscmludCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBs
b25nIGludCBscm91bmQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBpbnQgX19s
cm91bmQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwpleHRlcm4gbG9uZyBsb25nIGludCBsbHJvdW5k
IChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJvdW5kIChk
b3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSBmZGltIChkb3VibGUgX194LCBk
b3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2ZkaW0gKGRvdWJsZSBfX3gsIGRv
dWJsZSBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgZm1heCAoZG91YmxlIF9feCwgZG91
YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19mbWF4IChkb3VibGUgX194LCBkb3Vi
bGUgX195KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGZtaW4gKGRvdWJsZSBfX3gsIGRvdWJs
ZSBfX3kpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZm1pbiAoZG91YmxlIF9feCwgZG91Ymxl
IF9feSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgX19mcGNsYXNzaWZ5IChkb3VibGUgX192YWx1
ZSkgdGhyb3cgKCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGlu
dCBfX3NpZ25iaXQgKGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKQogICAgIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGRvdWJsZSBmbWEgKGRvdWJsZSBfX3gsIGRvdWJsZSBf
X3ksIGRvdWJsZSBfX3opIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZm1hIChkb3VibGUgX194
LCBkb3VibGUgX195LCBkb3VibGUgX196KSB0aHJvdyAoKTsKIyA2NCAiL3Vzci9pbmNsdWRlL21h
dGguaCIgMiAzCiMgODIgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy9tYXRoY2FsbHMuaCIgMSAzCiMgNTQgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5o
IiAzCmV4dGVybiBmbG9hdCBhY29zZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0
IF9fYWNvc2YgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZmxvYXQgYXNpbmYgKGZsb2F0
IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2FzaW5mIChmbG9hdCBfX3gpIHRocm93ICgp
OwoKZXh0ZXJuIGZsb2F0IGF0YW5mIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQg
X19hdGFuZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBhdGFuMmYgKGZsb2F0
IF9feSwgZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fYXRhbjJmIChmbG9hdCBf
X3ksIGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGNvc2YgKGZsb2F0IF9feCkg
dGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2Nvc2YgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgpleHRl
cm4gZmxvYXQgc2luZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fc2luZiAo
ZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCB0YW5mIChmbG9hdCBfX3gpIHRocm93
ICgpOyBleHRlcm4gZmxvYXQgX190YW5mIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4g
dm9pZCBzaW5jb3NmIChmbG9hdCBfX3gsIGZsb2F0ICpfX3NpbngsIGZsb2F0ICpfX2Nvc3gpIHRo
cm93ICgpOyBleHRlcm4gdm9pZCBfX3NpbmNvc2YgKGZsb2F0IF9feCwgZmxvYXQgKl9fc2lueCwg
ZmxvYXQgKl9fY29zeCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBmbG9hdCBjb3NoZiAoZmxvYXQg
X194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fY29zaGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7
CgpleHRlcm4gZmxvYXQgc2luaGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBf
X3NpbmhmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IHRhbmhmIChmbG9hdCBf
X3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX190YW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKTsK
CgoKZXh0ZXJuIGZsb2F0IGFjb3NoZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0
IF9fYWNvc2hmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IGFzaW5oZiAoZmxv
YXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fYXNpbmhmIChmbG9hdCBfX3gpIHRocm93
ICgpOwoKZXh0ZXJuIGZsb2F0IGF0YW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZs
b2F0IF9fYXRhbmhmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgoKCmV4dGVybiBmbG9hdCBleHBm
IChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19leHBmIChmbG9hdCBfX3gpIHRo
cm93ICgpOwoKCgpleHRlcm4gZmxvYXQgZXhwMTBmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRl
cm4gZmxvYXQgX19leHAxMGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZmxvYXQgcG93
MTBmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19wb3cxMGYgKGZsb2F0IF9f
eCkgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCBmcmV4cGYgKGZsb2F0IF9feCwgaW50ICpfX2V4
cG9uZW50KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZnJleHBmIChmbG9hdCBfX3gsIGludCAq
X19leHBvbmVudCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGxkZXhwZiAoZmxvYXQgX194LCBp
bnQgX19leHBvbmVudCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2xkZXhwZiAoZmxvYXQgX194
LCBpbnQgX19leHBvbmVudCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGxvZ2YgKGZsb2F0IF9f
eCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2xvZ2YgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoK
ZXh0ZXJuIGZsb2F0IGxvZzEwZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9f
bG9nMTBmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBmbG9hdCBtb2RmZiAoZmxvYXQg
X194LCBmbG9hdCAqX19pcHRyKSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fbW9kZmYgKGZsb2F0
IF9feCwgZmxvYXQgKl9faXB0cikgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCBleHBtMWYgKGZs
b2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2V4cG0xZiAoZmxvYXQgX194KSB0aHJv
dyAoKTsKCgpleHRlcm4gZmxvYXQgbG9nMXBmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4g
ZmxvYXQgX19sb2cxcGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGxvZ2Jm
IChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19sb2diZiAoZmxvYXQgX194KSB0
aHJvdyAoKTsKCgoKCmV4dGVybiBmbG9hdCBleHAyZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0
ZXJuIGZsb2F0IF9fZXhwMmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGxv
ZzJmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19sb2cyZiAoZmxvYXQgX194
KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGZsb2F0IHBvd2YgKGZsb2F0IF9feCwgZmxvYXQgX195
KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fcG93ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRo
cm93ICgpOwoKCmV4dGVybiBmbG9hdCBzcXJ0ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJu
IGZsb2F0IF9fc3FydGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCBoeXBv
dGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9faHlwb3Rm
IChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gZmxvYXQgY2JydGYg
KGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2NicnRmIChmbG9hdCBfX3gpIHRo
cm93ICgpOwoKCgoKCgpleHRlcm4gZmxvYXQgY2VpbGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4
dGVybiBmbG9hdCBfX2NlaWxmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBmbG9hdCBm
YWJzZiAoZmxvYXQgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4
dGVybiBmbG9hdCBfX2ZhYnNmIChmbG9hdCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKCgpleHRlcm4gZmxvYXQgZmxvb3JmIChmbG9hdCBfX3gpIHRocm93ICgpOyBl
eHRlcm4gZmxvYXQgX19mbG9vcmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0
IGZtb2RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2Zt
b2RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IF9faXNp
bmZmIChmbG9hdCBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgoKZXh0ZXJuIGludCBfX2Zpbml0ZWYgKGZsb2F0IF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgaXNpbmZmIChmbG9hdCBfX3ZhbHVl
KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBmaW5p
dGVmIChmbG9hdCBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgoKZXh0ZXJuIGZsb2F0IGRyZW1mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7IGV4
dGVybiBmbG9hdCBfX2RyZW1mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7CgoKCmV4
dGVybiBmbG9hdCBzaWduaWZpY2FuZGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9h
dCBfX3NpZ25pZmljYW5kZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBmbG9hdCBj
b3B5c2lnbmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2NvcHlzaWduZiAoZmxvYXQgX194LCBmbG9hdCBf
X3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBmbG9h
dCBuYW5mIChfX2NvbnN0IGNoYXIgKl9fdGFnYikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19uYW5mIChfX2NvbnN0IGNoYXIgKl9fdGFnYikgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBfX2lzbmFu
ZiAoZmxvYXQgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK
CgpleHRlcm4gaW50IGlzbmFuZiAoZmxvYXQgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBqMGYgKGZsb2F0KSB0aHJvdyAoKTsgZXh0
ZXJuIGZsb2F0IF9fajBmIChmbG9hdCkgdGhyb3cgKCk7CmV4dGVybiBmbG9hdCBqMWYgKGZsb2F0
KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fajFmIChmbG9hdCkgdGhyb3cgKCk7CmV4dGVybiBm
bG9hdCBqbmYgKGludCwgZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19qbmYgKGludCwg
ZmxvYXQpIHRocm93ICgpOwpleHRlcm4gZmxvYXQgeTBmIChmbG9hdCkgdGhyb3cgKCk7IGV4dGVy
biBmbG9hdCBfX3kwZiAoZmxvYXQpIHRocm93ICgpOwpleHRlcm4gZmxvYXQgeTFmIChmbG9hdCkg
dGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3kxZiAoZmxvYXQpIHRocm93ICgpOwpleHRlcm4gZmxv
YXQgeW5mIChpbnQsIGZsb2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9feW5mIChpbnQsIGZs
b2F0KSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gZmxvYXQgZXJmZiAoZmxvYXQpIHRocm93ICgpOyBl
eHRlcm4gZmxvYXQgX19lcmZmIChmbG9hdCkgdGhyb3cgKCk7CmV4dGVybiBmbG9hdCBlcmZjZiAo
ZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19lcmZjZiAoZmxvYXQpIHRocm93ICgpOwpl
eHRlcm4gZmxvYXQgbGdhbW1hZiAoZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19sZ2Ft
bWFmIChmbG9hdCkgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCB0Z2FtbWFmIChmbG9hdCkgdGhy
b3cgKCk7IGV4dGVybiBmbG9hdCBfX3RnYW1tYWYgKGZsb2F0KSB0aHJvdyAoKTsKCgoKCmV4dGVy
biBmbG9hdCBnYW1tYWYgKGZsb2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZ2FtbWFmIChm
bG9hdCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBmbG9hdCBsZ2FtbWFmX3IgKGZsb2F0LCBpbnQg
Kl9fc2lnbmdhbXApIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19sZ2FtbWFmX3IgKGZsb2F0LCBp
bnQgKl9fc2lnbmdhbXApIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZmxvYXQgcmludGYgKGZsb2F0
IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3JpbnRmIChmbG9hdCBfX3gpIHRocm93ICgp
OwoKCmV4dGVybiBmbG9hdCBuZXh0YWZ0ZXJmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19uZXh0YWZ0ZXJm
IChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKZXh0ZXJuIGZsb2F0IG5leHR0b3dhcmRmIChmbG9hdCBfX3gsIGxvbmcgZG91YmxlIF9f
eSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19u
ZXh0dG93YXJkZiAoZmxvYXQgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGZsb2F0IHJlbWFpbmRlcmYgKGZsb2F0IF9f
eCwgZmxvYXQgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fcmVtYWluZGVyZiAoZmxvYXQg
X194LCBmbG9hdCBfX3kpIHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQgc2NhbGJmIChmbG9hdCBf
X3gsIGZsb2F0IF9fbikgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3NjYWxiZiAoZmxvYXQgX194
LCBmbG9hdCBfX24pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGZsb2F0IHNjYWxibmYgKGZsb2F0IF9f
eCwgaW50IF9fbikgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3NjYWxibmYgKGZsb2F0IF9feCwg
aW50IF9fbikgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgaWxvZ2JmIChmbG9hdCBfX3gpIHRocm93
ICgpOyBleHRlcm4gaW50IF9faWxvZ2JmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgoKZXh0ZXJu
IGZsb2F0IHNjYWxibG5mIChmbG9hdCBfX3gsIGxvbmcgaW50IF9fbikgdGhyb3cgKCk7IGV4dGVy
biBmbG9hdCBfX3NjYWxibG5mIChmbG9hdCBfX3gsIGxvbmcgaW50IF9fbikgdGhyb3cgKCk7CgoK
CmV4dGVybiBmbG9hdCBuZWFyYnlpbnRmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxv
YXQgX19uZWFyYnlpbnRmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQgcm91
bmRmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19yb3VuZGYgKGZsb2F0IF9f
eCkgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCB0cnVuY2YgKGZsb2F0IF9feCkgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX190cnVuY2YgKGZsb2F0
IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGZs
b2F0IHJlbXF1b2YgKGZsb2F0IF9feCwgZmxvYXQgX195LCBpbnQgKl9fcXVvKSB0aHJvdyAoKTsg
ZXh0ZXJuIGZsb2F0IF9fcmVtcXVvZiAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGludCAqX19xdW8p
IHRocm93ICgpOwoKCgoKCgpleHRlcm4gbG9uZyBpbnQgbHJpbnRmIChmbG9hdCBfX3gpIHRocm93
ICgpOyBleHRlcm4gbG9uZyBpbnQgX19scmludGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CmV4dGVy
biBsb25nIGxvbmcgaW50IGxscmludGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25n
IGxvbmcgaW50IF9fbGxyaW50ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcg
aW50IGxyb3VuZGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGludCBfX2xyb3Vu
ZGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGxvbmcgaW50IGxscm91bmRmIChm
bG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBsb25nIGludCBfX2xscm91bmRmIChmbG9h
dCBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQgZmRpbWYgKGZsb2F0IF9feCwgZmxvYXQg
X195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZmRpbWYgKGZsb2F0IF9feCwgZmxvYXQgX195
KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgZm1heGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0
aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZm1heGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJv
dyAoKTsKCgpleHRlcm4gZmxvYXQgZm1pbmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAo
KTsgZXh0ZXJuIGZsb2F0IF9fZm1pbmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsK
CgoKZXh0ZXJuIGludCBfX2ZwY2xhc3NpZnlmIChmbG9hdCBfX3ZhbHVlKSB0aHJvdyAoKQogICAg
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9fc2lnbmJpdGYgKGZs
b2F0IF9fdmFsdWUpIHRocm93ICgpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK
CgpleHRlcm4gZmxvYXQgZm1hZiAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGZsb2F0IF9feikgdGhy
b3cgKCk7IGV4dGVybiBmbG9hdCBfX2ZtYWYgKGZsb2F0IF9feCwgZmxvYXQgX195LCBmbG9hdCBf
X3opIHRocm93ICgpOwojIDgzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA5OSAiL3Vzci9p
bmNsdWRlL21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMK
IyA1NCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGxvbmcgZG91Ymxl
IGFjb3NsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19h
Y29zbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSBhc2lu
bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYXNpbmwg
KGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgYXRhbmwgKGxv
bmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2F0YW5sIChsb25n
IGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIGF0YW4ybCAobG9uZyBk
b3VibGUgX195LCBsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUg
X19hdGFuMmwgKGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpl
eHRlcm4gbG9uZyBkb3VibGUgY29zbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fY29zbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBs
b25nIGRvdWJsZSBzaW5sIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBk
b3VibGUgX19zaW5sIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgZG91
YmxlIHRhbmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBf
X3RhbmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIHNpbmNvc2wg
KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgKl9fc2lueCwgbG9uZyBkb3VibGUgKl9fY29z
eCkgdGhyb3cgKCk7IGV4dGVybiB2b2lkIF9fc2luY29zbCAobG9uZyBkb3VibGUgX194LCBsb25n
IGRvdWJsZSAqX19zaW54LCBsb25nIGRvdWJsZSAqX19jb3N4KSB0aHJvdyAoKTsKCgoKCgoKZXh0
ZXJuIGxvbmcgZG91YmxlIGNvc2hsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4g
bG9uZyBkb3VibGUgX19jb3NobCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBs
b25nIGRvdWJsZSBzaW5obCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcg
ZG91YmxlIF9fc2luaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBk
b3VibGUgdGFuaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJs
ZSBfX3RhbmhsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gbG9uZyBkb3Vi
bGUgYWNvc2hsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUg
X19hY29zaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUg
YXNpbmhsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19h
c2luaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgYXRh
bmhsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19hdGFu
aGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGV4
cGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2V4cGwg
KGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBleHAxMGwg
KGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2V4cDEwbCAo
bG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSBwb3cxMGwgKGxv
bmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3BvdzEwbCAobG9u
ZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZyZXhwbCAobG9u
ZyBkb3VibGUgX194LCBpbnQgKl9fZXhwb25lbnQpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3Vi
bGUgX19mcmV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KSB0aHJvdyAoKTsK
CgpleHRlcm4gbG9uZyBkb3VibGUgbGRleHBsIChsb25nIGRvdWJsZSBfX3gsIGludCBfX2V4cG9u
ZW50KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbGRleHBsIChsb25nIGRvdWJsZSBf
X3gsIGludCBfX2V4cG9uZW50KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nbCAo
bG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9nbCAobG9u
ZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nMTBsIChsb25n
IGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2cxMGwgKGxvbmcg
ZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIG1vZGZsIChsb25nIGRv
dWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX2lwdHIpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3Vi
bGUgX19tb2RmbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSAqX19pcHRyKSB0aHJvdyAo
KTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGV4cG0xbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAo
KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXhwbTFsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp
OwoKCmV4dGVybiBsb25nIGRvdWJsZSBsb2cxcGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7
IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZzFwbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsK
CgpleHRlcm4gbG9uZyBkb3VibGUgbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2xvZ2JsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIGV4cDJsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRl
cm4gbG9uZyBkb3VibGUgX19leHAybCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRl
cm4gbG9uZyBkb3VibGUgbG9nMmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBs
b25nIGRvdWJsZSBfX2xvZzJsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCgpleHRl
cm4gbG9uZyBkb3VibGUgcG93bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRo
cm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19wb3dsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcg
ZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNxcnRsIChsb25nIGRv
dWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19zcXJ0bCAobG9uZyBkb3Vi
bGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGh5cG90bCAobG9uZyBkb3Vi
bGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19o
eXBvdGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsKCgoKCmV4
dGVybiBsb25nIGRvdWJsZSBjYnJ0bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fY2JydGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgoKCmV4
dGVybiBsb25nIGRvdWJsZSBjZWlsbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fY2VpbGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJu
IGxvbmcgZG91YmxlIGZhYnNsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZmFic2wgKGxvbmcgZG91Ymxl
IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25n
IGRvdWJsZSBmbG9vcmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRv
dWJsZSBfX2Zsb29ybCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBk
b3VibGUgZm1vZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fZm1vZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUg
X195KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgX19pc2luZmwgKGxvbmcgZG91YmxlIF9fdmFs
dWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9f
ZmluaXRlbCAobG9uZyBkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBpc2luZmwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZWwg
KGxvbmcgZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3Vi
bGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZHJlbWwgKGxvbmcgZG91Ymxl
IF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNp
Z25pZmljYW5kbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fc2lnbmlmaWNhbmRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGxv
bmcgZG91YmxlIGNvcHlzaWdubCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
Y29weXNpZ25sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIG5hbmwgKF9f
Y29uc3QgY2hhciAqX190YWdiKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
IGV4dGVybiBsb25nIGRvdWJsZSBfX25hbmwgKF9fY29uc3QgY2hhciAqX190YWdiKSB0aHJvdyAo
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IF9faXNuYW5sIChs
b25nIGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgoKCmV4dGVybiBpbnQgaXNuYW5sIChsb25nIGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGowbCAobG9uZyBk
b3VibGUpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19qMGwgKGxvbmcgZG91YmxlKSB0
aHJvdyAoKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGoxbCAobG9uZyBkb3VibGUpIHRocm93ICgpOyBl
eHRlcm4gbG9uZyBkb3VibGUgX19qMWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGxv
bmcgZG91YmxlIGpubCAoaW50LCBsb25nIGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRv
dWJsZSBfX2pubCAoaW50LCBsb25nIGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGRvdWJs
ZSB5MGwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9feTBsIChs
b25nIGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGRvdWJsZSB5MWwgKGxvbmcgZG91Ymxl
KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9feTFsIChsb25nIGRvdWJsZSkgdGhyb3cg
KCk7CmV4dGVybiBsb25nIGRvdWJsZSB5bmwgKGludCwgbG9uZyBkb3VibGUpIHRocm93ICgpOyBl
eHRlcm4gbG9uZyBkb3VibGUgX195bmwgKGludCwgbG9uZyBkb3VibGUpIHRocm93ICgpOwoKCgoK
CmV4dGVybiBsb25nIGRvdWJsZSBlcmZsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBs
b25nIGRvdWJsZSBfX2VyZmwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgZG91
YmxlIGVyZmNsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Vy
ZmNsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGRvdWJsZSBsZ2FtbWFsIChs
b25nIGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xnYW1tYWwgKGxvbmcg
ZG91YmxlKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHRnYW1tYWwgKGxvbmcgZG91
YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fdGdhbW1hbCAobG9uZyBkb3VibGUp
IHRocm93ICgpOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGdhbW1hbCAobG9uZyBkb3VibGUpIHRo
cm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19nYW1tYWwgKGxvbmcgZG91YmxlKSB0aHJvdyAo
KTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxnYW1tYWxfciAobG9uZyBkb3VibGUsIGludCAq
X19zaWduZ2FtcCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xnYW1tYWxfciAobG9u
ZyBkb3VibGUsIGludCAqX19zaWduZ2FtcCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBsb25nIGRv
dWJsZSByaW50bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fcmludGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91Ymxl
IG5leHRhZnRlcmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX25leHRhZnRl
cmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgpleHRlcm4gbG9uZyBkb3VibGUgbmV4dHRvd2FyZGwgKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX25leHR0b3dhcmRsIChsb25nIGRvdWJsZSBf
X3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OwoKCgpleHRlcm4gbG9uZyBkb3VibGUgcmVtYWluZGVybCAobG9uZyBkb3VibGUgX194LCBsb25n
IGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19yZW1haW5kZXJsIChs
b25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25n
IGRvdWJsZSBzY2FsYmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX19uKSB0aHJvdyAo
KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2NhbGJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91
YmxlIF9fbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgc2NhbGJubCAobG9uZyBk
b3VibGUgX194LCBpbnQgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2NhbGJu
bCAobG9uZyBkb3VibGUgX194LCBpbnQgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBpbG9n
YmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBpbnQgX19pbG9nYmwgKGxvbmcg
ZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgc2NhbGJsbmwgKGxv
bmcgZG91YmxlIF9feCwgbG9uZyBpbnQgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fc2NhbGJsbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBpbnQgX19uKSB0aHJvdyAoKTsKCgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIG5lYXJieWludGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7
IGV4dGVybiBsb25nIGRvdWJsZSBfX25lYXJieWludGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cg
KCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSByb3VuZGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cg
KCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3JvdW5kbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAo
KTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHRydW5jbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAo
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3RydW5j
bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgcmVtcXVvbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRv
dWJsZSBfX3ksIGludCAqX19xdW8pIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19yZW1x
dW9sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSwgaW50ICpfX3F1bykgdGhyb3cg
KCk7CgoKCgoKCmV4dGVybiBsb25nIGludCBscmludGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cg
KCk7IGV4dGVybiBsb25nIGludCBfX2xyaW50bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsK
ZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyaW50bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsg
ZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJpbnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp
OwoKCgpleHRlcm4gbG9uZyBpbnQgbHJvdW5kbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsg
ZXh0ZXJuIGxvbmcgaW50IF9fbHJvdW5kbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKZXh0
ZXJuIGxvbmcgbG9uZyBpbnQgbGxyb3VuZGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4
dGVybiBsb25nIGxvbmcgaW50IF9fbGxyb3VuZGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7
CgoKCmV4dGVybiBsb25nIGRvdWJsZSBmZGltbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJs
ZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mZGltbCAobG9uZyBkb3VibGUg
X194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmbWF4
bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9u
ZyBkb3VibGUgX19mbWF4bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93
ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmbWlubCAobG9uZyBkb3VibGUgX194LCBsb25nIGRv
dWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mbWlubCAobG9uZyBkb3Vi
bGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IF9fZnBjbGFz
c2lmeWwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIHRocm93ICgpCiAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19zaWduYml0bCAobG9uZyBkb3VibGUgX192YWx1
ZSkgdGhyb3cgKCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBs
b25nIGRvdWJsZSBmbWFsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSwgbG9uZyBk
b3VibGUgX196KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZm1hbCAobG9uZyBkb3Vi
bGUgX194LCBsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feikgdGhyb3cgKCk7CiMgMTAw
ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyAxMTMgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMK
ZXh0ZXJuIGludCBzaWduZ2FtOwojIDE1NCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwplbnVtCiAg
ewogICAgRlBfTkFOLAoKICAgIEZQX0lORklOSVRFLAoKICAgIEZQX1pFUk8sCgogICAgRlBfU1VC
Tk9STUFMLAoKICAgIEZQX05PUk1BTAoKICB9OwojIDI0MCAiL3Vzci9pbmNsdWRlL21hdGguaCIg
Mwp0eXBlZGVmIGVudW0KewogIF9JRUVFXyA9IC0xLAogIF9TVklEXywKICBfWE9QRU5fLAogIF9Q
T1NJWF8sCiAgX0lTT0NfCn0gX0xJQl9WRVJTSU9OX1RZUEU7CgoKCgpleHRlcm4gX0xJQl9WRVJT
SU9OX1RZUEUgX0xJQl9WRVJTSU9OOwojIDI2MyAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwpzdHJ1
Y3QgX19leGNlcHRpb24KCgoKICB7CiAgICBpbnQgdHlwZTsKICAgIGNoYXIgKm5hbWU7CiAgICBk
b3VibGUgYXJnMTsKICAgIGRvdWJsZSBhcmcyOwogICAgZG91YmxlIHJldHZhbDsKICB9OwoKCmV4
dGVybiBpbnQgbWF0aGVyciAoc3RydWN0IF9fZXhjZXB0aW9uICpfX2V4YykgdGhyb3cgKCk7CiMg
NDExICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCn0KIyAxNjMgIi4uLy4uLy4uL2xpYi9jY2xwb3J0
LmgiIDIKCgojIDEgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRl
L2N0eXBlLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3Iv
aW5jbHVkZS9jdHlwZS5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMK
IyAyOCAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDIgMwoKZXh0ZXJuICJDIiB7CiMgNDAgIi91c3Iv
aW5jbHVkZS9jdHlwZS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAxIDMKIyAyMiAi
L3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEg
MwojIDIzICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDIgMwojIDM3ICIvdXNyL2luY2x1ZGUvZW5k
aWFuLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lbmRpYW4uaCIgMSAzCiMgMzggIi91c3Iv
aW5jbHVkZS9lbmRpYW4uaCIgMiAzCiMgNDEgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAyIDMKCgoK
CgoKZW51bQp7CiAgX0lTdXBwZXIgPSAoKDApIDwgOCA/ICgoMSA8PCAoMCkpIDw8IDgpIDogKCgx
IDw8ICgwKSkgPj4gOCkpLAogIF9JU2xvd2VyID0gKCgxKSA8IDggPyAoKDEgPDwgKDEpKSA8PCA4
KSA6ICgoMSA8PCAoMSkpID4+IDgpKSwKICBfSVNhbHBoYSA9ICgoMikgPCA4ID8gKCgxIDw8ICgy
KSkgPDwgOCkgOiAoKDEgPDwgKDIpKSA+PiA4KSksCiAgX0lTZGlnaXQgPSAoKDMpIDwgOCA/ICgo
MSA8PCAoMykpIDw8IDgpIDogKCgxIDw8ICgzKSkgPj4gOCkpLAogIF9JU3hkaWdpdCA9ICgoNCkg
PCA4ID8gKCgxIDw8ICg0KSkgPDwgOCkgOiAoKDEgPDwgKDQpKSA+PiA4KSksCiAgX0lTc3BhY2Ug
PSAoKDUpIDwgOCA/ICgoMSA8PCAoNSkpIDw8IDgpIDogKCgxIDw8ICg1KSkgPj4gOCkpLAogIF9J
U3ByaW50ID0gKCg2KSA8IDggPyAoKDEgPDwgKDYpKSA8PCA4KSA6ICgoMSA8PCAoNikpID4+IDgp
KSwKICBfSVNncmFwaCA9ICgoNykgPCA4ID8gKCgxIDw8ICg3KSkgPDwgOCkgOiAoKDEgPDwgKDcp
KSA+PiA4KSksCiAgX0lTYmxhbmsgPSAoKDgpIDwgOCA/ICgoMSA8PCAoOCkpIDw8IDgpIDogKCgx
IDw8ICg4KSkgPj4gOCkpLAogIF9JU2NudHJsID0gKCg5KSA8IDggPyAoKDEgPDwgKDkpKSA8PCA4
KSA6ICgoMSA8PCAoOSkpID4+IDgpKSwKICBfSVNwdW5jdCA9ICgoMTApIDwgOCA/ICgoMSA8PCAo
MTApKSA8PCA4KSA6ICgoMSA8PCAoMTApKSA+PiA4KSksCiAgX0lTYWxudW0gPSAoKDExKSA8IDgg
PyAoKDEgPDwgKDExKSkgPDwgOCkgOiAoKDEgPDwgKDExKSkgPj4gOCkpCn07CiMgNzUgIi91c3Iv
aW5jbHVkZS9jdHlwZS5oIiAzCmV4dGVybiBfX2NvbnN0IHVuc2lnbmVkIHNob3J0IGludCAqX19j
dHlwZV9iOwpleHRlcm4gX19jb25zdCBfX2ludDMyX3QgKl9fY3R5cGVfdG9sb3dlcjsKZXh0ZXJu
IF9fY29uc3QgX19pbnQzMl90ICpfX2N0eXBlX3RvdXBwZXI7CiMgOTEgIi91c3IvaW5jbHVkZS9j
dHlwZS5oIiAzCmV4dGVybiBpbnQgaXNhbG51bSAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBp
c2FscGhhIChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzY250cmwgKGludCkgdGhyb3cgKCk7
CmV4dGVybiBpbnQgaXNkaWdpdCAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc2xvd2VyIChp
bnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzZ3JhcGggKGludCkgdGhyb3cgKCk7CmV4dGVybiBp
bnQgaXNwcmludCAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc3B1bmN0IChpbnQpIHRocm93
ICgpOwpleHRlcm4gaW50IGlzc3BhY2UgKGludCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgaXN1cHBl
ciAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc3hkaWdpdCAoaW50KSB0aHJvdyAoKTsKCgpl
eHRlcm4gaW50IGlzYmxhbmsgKGludCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHRvbG93ZXIg
KGludCBfX2MpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgdG91cHBlciAoaW50IF9fYykgdGhyb3cg
KCk7CgoKCgoKCmV4dGVybiBpbnQgaXNhc2NpaSAoaW50IF9fYykgdGhyb3cgKCk7CgoKCmV4dGVy
biBpbnQgdG9hc2NpaSAoaW50IF9fYykgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgX3RvdXBwZXIg
KGludCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX3RvbG93ZXIgKGludCkgdGhyb3cgKCk7CiMgMjEw
ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMwojIDEgIi91c3IvaW5jbHVkZS94bG9jYWxlLmgiIDEg
MwojIDI4ICIvdXNyL2luY2x1ZGUveGxvY2FsZS5oIiAzCnR5cGVkZWYgc3RydWN0IF9fbG9jYWxl
X3N0cnVjdAp7CgogIHN0cnVjdCBsb2NhbGVfZGF0YSAqX19sb2NhbGVzWzEzXTsKCgogIGNvbnN0
IHVuc2lnbmVkIHNob3J0IGludCAqX19jdHlwZV9iOwogIGNvbnN0IGludCAqX19jdHlwZV90b2xv
d2VyOwogIGNvbnN0IGludCAqX19jdHlwZV90b3VwcGVyOwp9ICpfX2xvY2FsZV90OwojIDIxMSAi
L3Vzci9pbmNsdWRlL2N0eXBlLmgiIDIgMwojIDIyMyAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMK
ZXh0ZXJuIGludCBfX2lzYWxudW1fbCAoaW50LCBfX2xvY2FsZV90KSB0aHJvdyAoKTsKZXh0ZXJu
IGludCBfX2lzYWxwaGFfbCAoaW50LCBfX2xvY2FsZV90KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBf
X2lzY250cmxfbCAoaW50LCBfX2xvY2FsZV90KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfX2lzZGln
aXRfbCAoaW50LCBfX2xvY2FsZV90KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfX2lzbG93ZXJfbCAo
aW50LCBfX2xvY2FsZV90KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfX2lzZ3JhcGhfbCAoaW50LCBf
X2xvY2FsZV90KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfX2lzcHJpbnRfbCAoaW50LCBfX2xvY2Fs
ZV90KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfX2lzcHVuY3RfbCAoaW50LCBfX2xvY2FsZV90KSB0
aHJvdyAoKTsKZXh0ZXJuIGludCBfX2lzc3BhY2VfbCAoaW50LCBfX2xvY2FsZV90KSB0aHJvdyAo
KTsKZXh0ZXJuIGludCBfX2lzdXBwZXJfbCAoaW50LCBfX2xvY2FsZV90KSB0aHJvdyAoKTsKZXh0
ZXJuIGludCBfX2lzeGRpZ2l0X2wgKGludCwgX19sb2NhbGVfdCkgdGhyb3cgKCk7CgpleHRlcm4g
aW50IF9faXNibGFua19sIChpbnQsIF9fbG9jYWxlX3QpIHRocm93ICgpOwoKCgpleHRlcm4gaW50
IF9fdG9sb3dlcl9sIChpbnQgX19jLCBfX2xvY2FsZV90IF9fbCkgdGhyb3cgKCk7CgoKZXh0ZXJu
IGludCBfX3RvdXBwZXJfbCAoaW50IF9fYywgX19sb2NhbGVfdCBfX2wpIHRocm93ICgpOwojIDI3
NiAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMKfQojIDE2NiAiLi4vLi4vLi4vbGliL2NjbHBvcnQu
aCIgMgojIDEgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAxIDMKIyAyOSAiL3Vzci9pbmNsdWRlL2Vy
cm5vLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMzAgIi91c3IvaW5j
bHVkZS9lcnJuby5oIiAyIDMKCgpleHRlcm4gIkMiIHsKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0
cy9lcnJuby5oIiAxIDMKIyAyNSAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMwojIDEgIi91
c3IvaW5jbHVkZS9saW51eC9lcnJuby5oIiAxIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYXNtL2Vy
cm5vLmgiIDEgMwojIDUgIi91c3IvaW5jbHVkZS9saW51eC9lcnJuby5oIiAyIDMKIyAyNiAiL3Vz
ci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMiAzCiMgMzYgIi91c3IvaW5jbHVkZS9iaXRzL2Vycm5v
LmgiIDMKZXh0ZXJuIGludCBlcnJubzsKCgpleHRlcm4gaW50ICpfX2Vycm5vX2xvY2F0aW9uICh2
b2lkKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgMzcgIi91c3IvaW5j
bHVkZS9lcnJuby5oIiAyIDMKIyA1NSAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDMKZXh0ZXJuIGNo
YXIgKnByb2dyYW1faW52b2NhdGlvbl9uYW1lLCAqcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25h
bWU7CgoKCn0KIyA2OSAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDMKdHlwZWRlZiBpbnQgZXJyb3Jf
dDsKIyAxNjcgIi4uLy4uLy4uL2xpYi9jY2xwb3J0LmgiIDIKCgojIDEgIi91c3IvaW5jbHVkZS9z
dGRsaWIuaCIgMSAzCiMgMjUgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwojIDEgIi91c3IvaW5j
bHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoK
CgoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9p
bmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzNCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCmV4
dGVybiAiQyIgewoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRmbGFncy5oIiAxIDMK
IyA0MyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93
YWl0c3RhdHVzLmgiIDEgMwojIDYzICIvdXNyL2luY2x1ZGUvYml0cy93YWl0c3RhdHVzLmgiIDMK
IyAxICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDEgMwojIDY0ICIvdXNyL2luY2x1ZGUvYml0cy93
YWl0c3RhdHVzLmgiIDIgMwoKdW5pb24gd2FpdAogIHsKICAgIGludCB3X3N0YXR1czsKICAgIHN0
cnVjdAogICAgICB7CgogICAgICAgIHVuc2lnbmVkIGludCBfX3dfdGVybXNpZzo3OwogICAgICAg
IHVuc2lnbmVkIGludCBfX3dfY29yZWR1bXA6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX193X3Jl
dGNvZGU6ODsKICAgICAgICB1bnNpZ25lZCBpbnQ6MTY7CgoKCgoKCgogICAgICB9IF9fd2FpdF90
ZXJtaW5hdGVkOwogICAgc3RydWN0CiAgICAgIHsKCiAgICAgICAgdW5zaWduZWQgaW50IF9fd19z
dG9wdmFsOjg7CiAgICAgICAgdW5zaWduZWQgaW50IF9fd19zdG9wc2lnOjg7CiAgICAgICAgdW5z
aWduZWQgaW50OjE2OwoKCgoKCgogICAgICB9IF9fd2FpdF9zdG9wcGVkOwogIH07CiMgNDQgIi91
c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCiMgOTQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwp0
eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBxdW90OwogICAgaW50IHJlbTsKICB9IGRpdl90OwoK
Cgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGxvbmcgaW50IHF1b3Q7CiAgICBsb25nIGludCByZW07
CiAgfSBsZGl2X3Q7CgoKCgoKX19leHRlbnNpb25fXyB0eXBlZGVmIHN0cnVjdAogIHsKICAgIGxv
bmcgbG9uZyBpbnQgcXVvdDsKICAgIGxvbmcgbG9uZyBpbnQgcmVtOwogIH0gbGxkaXZfdDsKIyAx
MzMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gc2l6ZV90IF9fY3R5cGVfZ2V0X21i
X2N1cl9tYXggKHZvaWQpIHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIGF0b2YgKF9fY29uc3Qg
Y2hhciAqX19ucHRyKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVy
biBpbnQgYXRvaSAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKZXh0ZXJuIGxvbmcgaW50IGF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRy
KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKX19leHRlbnNpb25fXyBl
eHRlcm4gbG9uZyBsb25nIGludCBhdG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpCiAgICAgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBkb3VibGUgc3RydG9k
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQgc3Ry
dG9mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3Vi
bGUgc3RydG9sZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSB0aHJvdyAoKTsKCgoK
ZXh0ZXJuIGxvbmcgaW50IHN0cnRvbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwK
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBf
X2Jhc2UpIHRocm93ICgpOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJvdyAo
KTsKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b3EgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIHRocm93ICgpOwoKX19leHRlbnNp
b25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VxIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJvdyAoKTsK
CgoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b2xsIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgdGhyb3cgKCk7CgpfX2V4dGVu
c2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdWxsIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgdGhyb3cg
KCk7CiMgMjExICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUveGxv
Y2FsZS5oIiAxIDMKIyAyMTIgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCmV4dGVybiBs
b25nIGludCBfX3N0cnRvbF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBf
X2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9fbG9jKSB0aHJv
dyAoKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxfbCAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgX19iYXNlLCBfX2xvY2FsZV90IF9fbG9jKSB0aHJvdyAoKTsKCl9fZXh0
ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19zdHJ0b2xsX2wgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKX19leHRlbnNpb25fXwpl
eHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3N0cnRvdWxsX2wgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykKICAgICB0
aHJvdyAoKTsKCmV4dGVybiBkb3VibGUgX19zdHJ0b2RfbCAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBf
X2VuZHB0ciwgX19sb2NhbGVfdCBfX2xvYykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBf
X3N0cnRvZl9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIF9fbG9jYWxlX3QgX19sb2Mp
IHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3RydG9sZF9sIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIg
KipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
bG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZG91YmxlIF9fc3RydG9kX2lu
dGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXAp
CiAgICAgdGhyb3cgKCk7CmV4dGVybiBmbG9hdCBfX3N0cnRvZl9pbnRlcm5hbCAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApCiAgICAgdGhyb3cgKCk7CmV4
dGVybiBsb25nIGRvdWJsZSBfX3N0cnRvbGRfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIg
KipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgX19ncm91cCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBpbnQgX19zdHJ0b2xfaW50
ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIHRocm93ICgp
OwoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgX19zdHJ0b3VsX2ludGVybmFsIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIHRo
cm93ICgpOwoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxf
aW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9f
Z3JvdXApIHRocm93ICgpOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxv
bmcgaW50IF9fc3RydG91bGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdHJpY3QgX19ucHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoq
X19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApCiAgICAgdGhyb3cgKCk7CiMg
Mzg0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKmw2NGEgKGxvbmcgaW50
IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgaW50IGE2NGwgKF9fY29uc3QgY2hhciAqX19z
KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgojIDEgIi91c3IvaW5jbHVk
ZS9zeXMvdHlwZXMuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwojIDEg
Ii91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9pbmNsdWRlL3N5cy90eXBl
cy5oIiAyIDMKCmV4dGVybiAiQyIgewoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAx
IDMKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKdHlwZWRlZiBfX3VfY2hh
ciB1X2NoYXI7CnR5cGVkZWYgX191X3Nob3J0IHVfc2hvcnQ7CnR5cGVkZWYgX191X2ludCB1X2lu
dDsKdHlwZWRlZiBfX3VfbG9uZyB1X2xvbmc7CnR5cGVkZWYgX19xdWFkX3QgcXVhZF90Owp0eXBl
ZGVmIF9fdV9xdWFkX3QgdV9xdWFkX3Q7CnR5cGVkZWYgX19mc2lkX3QgZnNpZF90OwoKCgoKdHlw
ZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7CgoKCnR5cGVkZWYgX19pbm9fdCBpbm9fdDsKCgoKCgoKdHlw
ZWRlZiBfX2lubzY0X3QgaW5vNjRfdDsKCgoKCnR5cGVkZWYgX19kZXZfdCBkZXZfdDsKCgoKCnR5
cGVkZWYgX19naWRfdCBnaWRfdDsKCgoKCnR5cGVkZWYgX19tb2RlX3QgbW9kZV90OwoKCgoKdHlw
ZWRlZiBfX25saW5rX3QgbmxpbmtfdDsKCgoKCnR5cGVkZWYgX191aWRfdCB1aWRfdDsKCgoKCgp0
eXBlZGVmIF9fb2ZmX3Qgb2ZmX3Q7CgoKCgoKCnR5cGVkZWYgX19vZmY2NF90IG9mZjY0X3Q7CgoK
Cgp0eXBlZGVmIF9fcGlkX3QgcGlkX3Q7CgoKCgp0eXBlZGVmIF9faWRfdCBpZF90OwoKCgoKdHlw
ZWRlZiBfX3NzaXplX3Qgc3NpemVfdDsKCgoKCgp0eXBlZGVmIF9fZGFkZHJfdCBkYWRkcl90Owp0
eXBlZGVmIF9fY2FkZHJfdCBjYWRkcl90OwoKCgoKCnR5cGVkZWYgX19rZXlfdCBrZXlfdDsKIyAx
MzIgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgi
IDEgMwojIDU2ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv
dHlwZXMuaCIgMSAzCiMgNTcgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwoKCnR5cGVkZWYgX19j
bG9ja190IGNsb2NrX3Q7CgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEg
MwojIDY4ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgp0eXBlZGVmIF9fdGltZV90IHRpbWVf
dDsKIyA3OSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5
cGVzLmgiIDEgMwojIDgwICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgp0eXBlZGVmIF9fY2xv
Y2tpZF90IGNsb2NraWRfdDsKIyA5MSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwojIDEgIi91c3Iv
aW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDkyICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMK
Cgp0eXBlZGVmIF9fdGltZXJfdCB0aW1lcl90OwojIDEzMyAiL3Vzci9pbmNsdWRlL3N5cy90eXBl
cy5oIiAyIDMKCgoKdHlwZWRlZiBfX3VzZWNvbmRzX3QgdXNlY29uZHNfdDsKCgoKdHlwZWRlZiBf
X3N1c2Vjb25kc190IHN1c2Vjb25kc190OwoKCgoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAxNDcgIi91
c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQg
dWxvbmc7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgdWludDsKIyAxOTAgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIGlu
dCBpbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1FJX18pKSk7CnR5cGVkZWYgaW50
IGludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50
IGludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgaW50
IGludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJX18pKSk7CgoKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgdV9pbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1FJX18pKSk7
CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18g
KF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQzMl90IF9fYXR0cmlidXRlX18g
KChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDY0X3QgX19h
dHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJX18pKSk7Cgp0eXBlZGVmIGludCByZWdpc3Rlcl90
IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX193b3JkX18pKSk7CiMgMjEyICIvdXNyL2luY2x1
ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDEgMwojIDIxMyAi
L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc2Vs
ZWN0LmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzCiMgMSAiL3Vzci9p
bmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAy
IDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDI5ICIvdXNyL2luY2x1
ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAx
IDMKIyAzMiAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy9zaWdzZXQuaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAz
CnR5cGVkZWYgaW50IF9fc2lnX2F0b21pY190OwoKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICB1
bnNpZ25lZCBsb25nIGludCBfX3ZhbFsoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25n
IGludCkpKV07CiAgfSBfX3NpZ3NldF90OwojIDM1ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5o
IiAyIDMKCgoKdHlwZWRlZiBfX3NpZ3NldF90IHNpZ3NldF90OwoKCgoKCiMgMSAiL3Vzci9pbmNs
dWRlL3RpbWUuaCIgMSAzCiMgMTA2ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCnN0cnVjdCB0aW1l
c3BlYwogIHsKICAgIF9fdGltZV90IHR2X3NlYzsKICAgIGxvbmcgaW50IHR2X25zZWM7CiAgfTsK
IyA0NSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9i
aXRzL3RpbWUuaCIgMSAzCiMgNjMgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMwojIDEgIi91
c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDY0ICIvdXNyL2luY2x1ZGUvYml0cy90aW1l
LmgiIDIgMwoKCgpzdHJ1Y3QgdGltZXZhbAogIHsKICAgIF9fdGltZV90IHR2X3NlYzsKICAgIF9f
c3VzZWNvbmRzX3QgdHZfdXNlYzsKICB9OwojIDQ3ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5o
IiAyIDMKIyA1NSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwp0eXBlZGVmIGxvbmcgaW50
IF9fZmRfbWFzazsKCgoKCgoKCnR5cGVkZWYgc3RydWN0CiAgewoKCgogICAgX19mZF9tYXNrIGZk
c19iaXRzWzEwMjQgLyAoOCAqIHNpemVvZiAoX19mZF9tYXNrKSldOwoKCgoKCiAgfSBmZF9zZXQ7
CgoKCgoKCnR5cGVkZWYgX19mZF9tYXNrIGZkX21hc2s7CiMgOTUgIi91c3IvaW5jbHVkZS9zeXMv
c2VsZWN0LmgiIDMKZXh0ZXJuICJDIiB7CgoKCgoKCmV4dGVybiBpbnQgc2VsZWN0IChpbnQgX19u
ZmRzLCBmZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLAogICAgICAgICAgICAgICAgICAgZmRf
c2V0ICpfX3Jlc3RyaWN0IF9fd3JpdGVmZHMsCiAgICAgICAgICAgICAgICAgICBmZF9zZXQgKl9f
cmVzdHJpY3QgX19leGNlcHRmZHMsCiAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCAq
X19yZXN0cmljdCBfX3RpbWVvdXQpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgcHNlbGVjdCAo
aW50IF9fbmZkcywgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fcmVhZGZkcywKICAgICAgICAgICAgICAg
ICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX193cml0ZWZkcywKICAgICAgICAgICAgICAgICAgICBm
ZF9zZXQgKl9fcmVzdHJpY3QgX19leGNlcHRmZHMsCiAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RydWN0IHRpbWVzcGVjICpfX3Jlc3RyaWN0IF9fdGltZW91dCwKICAgICAgICAgICAgICAgICAg
ICBjb25zdCBfX3NpZ3NldF90ICpfX3Jlc3RyaWN0IF9fc2lnbWFzaykgdGhyb3cgKCk7CgoKfQoj
IDIxNiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9z
eXMvc3lzbWFjcm9zLmgiIDEgMwojIDIxOSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMK
CgoKCnR5cGVkZWYgX19ibGtzaXplX3QgYmxrc2l6ZV90OwoKCgoKCgp0eXBlZGVmIF9fYmxrY250
X3QgYmxrY250X3Q7CgoKCnR5cGVkZWYgX19mc2Jsa2NudF90IGZzYmxrY250X3Q7CgoKCnR5cGVk
ZWYgX19mc2ZpbGNudF90IGZzZmlsY250X3Q7CiMgMjU3ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVz
LmgiIDMKdHlwZWRlZiBfX2Jsa2NudDY0X3QgYmxrY250NjRfdDsKdHlwZWRlZiBfX2ZzYmxrY250
NjRfdCBmc2Jsa2NudDY0X3Q7CnR5cGVkZWYgX19mc2ZpbGNudDY0X3QgZnNmaWxjbnQ2NF90OwoK
Cn0KIyAzOTEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgoKCmV4dGVybiBsb25nIGlu
dCByYW5kb20gKHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIHNyYW5kb20gKHVuc2lnbmVk
IGludCBfX3NlZWQpIHRocm93ICgpOwoKCgoKCmV4dGVybiBjaGFyICppbml0c3RhdGUgKHVuc2ln
bmVkIGludCBfX3NlZWQsIGNoYXIgKl9fc3RhdGVidWYsCiAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBfX3N0YXRlbGVuKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNoYXIgKnNldHN0YXRlIChj
aGFyICpfX3N0YXRlYnVmKSB0aHJvdyAoKTsKCgoKCgoKCnN0cnVjdCByYW5kb21fZGF0YQogIHsK
ICAgIGludDMyX3QgKmZwdHI7CiAgICBpbnQzMl90ICpycHRyOwogICAgaW50MzJfdCAqc3RhdGU7
CiAgICBpbnQgcmFuZF90eXBlOwogICAgaW50IHJhbmRfZGVnOwogICAgaW50IHJhbmRfc2VwOwog
ICAgaW50MzJfdCAqZW5kX3B0cjsKICB9OwoKZXh0ZXJuIGludCByYW5kb21fciAoc3RydWN0IHJh
bmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgICBpbnQzMl90
ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgc3JhbmRvbV9yICh1
bnNpZ25lZCBpbnQgX19zZWVkLCBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fYnVmKSB0aHJvdyAoKTsK
CmV4dGVybiBpbnQgaW5pdHN0YXRlX3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fcmVz
dHJpY3QgX19zdGF0ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3RhdGVs
ZW4sCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmlj
dCBfX2J1ZikgdGhyb3cgKCk7CgpleHRlcm4gaW50IHNldHN0YXRlX3IgKGNoYXIgKl9fcmVzdHJp
Y3QgX19zdGF0ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcmFuZG9tX2RhdGEg
Kl9fcmVzdHJpY3QgX19idWYpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgcmFuZCAodm9pZCkg
dGhyb3cgKCk7CgpleHRlcm4gdm9pZCBzcmFuZCAodW5zaWduZWQgaW50IF9fc2VlZCkgdGhyb3cg
KCk7CgoKCmV4dGVybiBpbnQgcmFuZF9yICh1bnNpZ25lZCBpbnQgKl9fc2VlZCkgdGhyb3cgKCk7
CgoKCgoKCgpleHRlcm4gZG91YmxlIGRyYW5kNDggKHZvaWQpIHRocm93ICgpOwpleHRlcm4gZG91
YmxlIGVyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSB0aHJvdyAoKTsKCgpl
eHRlcm4gbG9uZyBpbnQgbHJhbmQ0OCAodm9pZCkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGludCBu
cmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgdGhyb3cgKCk7CgoKZXh0ZXJu
IGxvbmcgaW50IG1yYW5kNDggKHZvaWQpIHRocm93ICgpOwpleHRlcm4gbG9uZyBpbnQganJhbmQ0
OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pIHRocm93ICgpOwoKCmV4dGVybiB2b2lk
IHNyYW5kNDggKGxvbmcgaW50IF9fc2VlZHZhbCkgdGhyb3cgKCk7CmV4dGVybiB1bnNpZ25lZCBz
aG9ydCBpbnQgKnNlZWQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSkgdGhyb3cg
KCk7CmV4dGVybiB2b2lkIGxjb25nNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3BhcmFtWzddKSB0
aHJvdyAoKTsKCgoKCgpzdHJ1Y3QgZHJhbmQ0OF9kYXRhCiAgewogICAgdW5zaWduZWQgc2hvcnQg
aW50IF9feFszXTsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX29sZF94WzNdOwogICAgdW5zaWdu
ZWQgc2hvcnQgaW50IF9fYzsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX2luaXQ7CiAgICB1bnNp
Z25lZCBsb25nIGxvbmcgaW50IF9fYTsKICB9OwoKCmV4dGVybiBpbnQgZHJhbmQ0OF9yIChzdHJ1
Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAg
ICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBlcmFu
ZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAg
ICAgICAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7CgoKZXh0ZXJu
IGludCBscmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIs
CiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhy
b3cgKCk7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVsz
XSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3Qg
X19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jl
c3VsdCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBtcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2Rh
dGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAq
X19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQganJhbmQ0OF9yICh1bnNp
Z25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBk
cmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBs
b25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBzcmFu
ZDQ4X3IgKGxvbmcgaW50IF9fc2VlZHZhbCwgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIp
CiAgICAgdGhyb3cgKCk7CgpleHRlcm4gaW50IHNlZWQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQg
X19zZWVkMTZ2WzNdLAogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpf
X2J1ZmZlcikgdGhyb3cgKCk7CgpleHRlcm4gaW50IGxjb25nNDhfciAodW5zaWduZWQgc2hvcnQg
aW50IF9fcGFyYW1bN10sCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRh
ICpfX2J1ZmZlcikgdGhyb3cgKCk7CiMgNTI3ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0
ZXJuIHZvaWQgKm1hbGxvYyAoc2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fbWFsbG9jX18pKTsKCmV4dGVybiB2b2lkICpjYWxsb2MgKHNpemVfdCBfX25tZW1iLCBzaXpl
X3QgX19zaXplKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoK
CgoKZXh0ZXJuIHZvaWQgKnJlYWxsb2MgKHZvaWQgKl9fcHRyLCBzaXplX3QgX19zaXplKSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKZXh0ZXJuIHZvaWQgZnJlZSAodm9p
ZCAqX19wdHIpIHRocm93ICgpOwoKCgpleHRlcm4gdm9pZCBjZnJlZSAodm9pZCAqX19wdHIpIHRo
cm93ICgpOwoKCgojIDEgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMSAzCiMgMjIgIi91c3IvaW5j
bHVkZS9hbGxvY2EuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyMyAi
L3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAyIDMKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMjYgIi91c3Iv
aW5jbHVkZS9hbGxvY2EuaCIgMiAzCgpleHRlcm4gIkMiIHsKCgoKCgpleHRlcm4gdm9pZCAqYWxs
b2NhIChzaXplX3QgX19zaXplKSB0aHJvdyAoKTsKCgoKCgp9CiMgNTQ3ICIvdXNyL2luY2x1ZGUv
c3RkbGliLmgiIDIgMwoKCgoKZXh0ZXJuIHZvaWQgKnZhbGxvYyAoc2l6ZV90IF9fc2l6ZSkgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCmV4dGVybiBpbnQgcG9zaXhf
bWVtYWxpZ24gKHZvaWQgKipfX21lbXB0ciwgc2l6ZV90IF9fYWxpZ25tZW50LCBzaXplX3QgX19z
aXplKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCmV4dGVy
biB2b2lkIGFib3J0ICh2b2lkKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9f
KSk7CgoKCmV4dGVybiBpbnQgYXRleGl0ICh2b2lkICgqX19mdW5jKSAodm9pZCkpIHRocm93ICgp
OwoKCgoKZXh0ZXJuIGludCBvbl9leGl0ICh2b2lkICgqX19mdW5jKSAoaW50IF9fc3RhdHVzLCB2
b2lkICpfX2FyZyksIHZvaWQgKl9fYXJnKQogICAgIHRocm93ICgpOwoKCgoKCmV4dGVybiB2b2lk
IGV4aXQgKGludCBfX3N0YXR1cykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5f
XykpOwoKCgoKZXh0ZXJuIHZvaWQgX0V4aXQgKGludCBfX3N0YXR1cykgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKZXh0ZXJuIGNoYXIgKmdldGVudiAoX19jb25z
dCBjaGFyICpfX25hbWUpIHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqX19zZWN1cmVfZ2V0ZW52
IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBwdXRlbnYg
KGNoYXIgKl9fc3RyaW5nKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IHNldGVudiAoX19jb25z
dCBjaGFyICpfX25hbWUsIF9fY29uc3QgY2hhciAqX192YWx1ZSwgaW50IF9fcmVwbGFjZSkKICAg
ICB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHVuc2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkg
dGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgY2xlYXJlbnYgKHZvaWQpIHRocm93ICgpOwojIDYy
MyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICpta3RlbXAgKGNoYXIgKl9f
dGVtcGxhdGUpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBta3N0ZW1wIChjaGFyICpfX3Rl
bXBsYXRlKSB0aHJvdyAoKTsKIyA2NDAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4g
aW50IG1rc3RlbXA2NCAoY2hhciAqX190ZW1wbGF0ZSkgdGhyb3cgKCk7CiMgNjUwICIvdXNyL2lu
Y2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKm1rZHRlbXAgKGNoYXIgKl9fdGVtcGxhdGUp
IHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBzeXN0ZW0gKF9fY29uc3QgY2hhciAqX19jb21tYW5k
KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKmNhbm9uaWNhbGl6ZV9maWxlX25hbWUgKF9f
Y29uc3QgY2hhciAqX19uYW1lKSB0aHJvdyAoKTsKIyA2NzIgIi91c3IvaW5jbHVkZS9zdGRsaWIu
aCIgMwpleHRlcm4gY2hhciAqcmVhbHBhdGggKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX3Jlc29sdmVkKSB0
aHJvdyAoKTsKCgoKCgoKdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9mbl90KSAoX19jb25zdCB2b2lk
ICosIF9fY29uc3Qgdm9pZCAqKTsKCgp0eXBlZGVmIF9fY29tcGFyX2ZuX3QgY29tcGFyaXNvbl9m
bl90OwoKCgoKCmV4dGVybiB2b2lkICpic2VhcmNoIChfX2NvbnN0IHZvaWQgKl9fa2V5LCBfX2Nv
bnN0IHZvaWQgKl9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX25tZW1iLCBz
aXplX3QgX19zaXplLCBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIHZvaWQgcXNv
cnQgKHZvaWQgKl9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCiAgICAgICAg
ICAgICAgICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIGludCBhYnMgKGlu
dCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxvbmcg
aW50IGxhYnMgKGxvbmcgaW50IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25nIGludCBsbGFicyAobG9uZyBsb25n
IGludCBfX3gpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoK
CgpleHRlcm4gZGl2X3QgZGl2IChpbnQgX19udW1lciwgaW50IF9fZGVub20pCiAgICAgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbGRpdl90IGxkaXYgKGxvbmcg
aW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVub20pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gbGxkaXZfdCBsbGRpdiAobG9u
ZyBsb25nIGludCBfX251bWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
b25nIGxvbmcgaW50IF9fZGVub20pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOwojIDcyOCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICplY3Z0
IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwK
ICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24pIHRocm93ICgpOwoKCgoK
ZXh0ZXJuIGNoYXIgKmZjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19y
ZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2ln
bikgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqZ2N2dCAoZG91YmxlIF9fdmFsdWUsIGludCBf
X25kaWdpdCwgY2hhciAqX19idWYpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKnFlY3Z0IChs
b25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50
ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pIHRocm93ICgpOwpl
eHRlcm4gY2hhciAqcWZjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAg
ICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0
IF9fc2lnbikgdGhyb3cgKCk7CmV4dGVybiBjaGFyICpxZ2N2dCAobG9uZyBkb3VibGUgX192YWx1
ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1ZikgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGVj
dnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVj
cHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduLCBjaGFyICpfX3Jl
c3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsK
ZXh0ZXJuIGludCBmY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19y
ZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2ln
biwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2xl
bikgdGhyb3cgKCk7CgpleHRlcm4gaW50IHFlY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGlu
dCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwg
aW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3Ry
aWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIHRocm93ICgpOwpleHRlcm4gaW50IHFmY3Z0X3IgKGxv
bmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQg
Kl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgICAgICAg
ICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIHRocm93ICgpOwoK
CgoKCgpleHRlcm4gaW50IG1ibGVuIChfX2NvbnN0IGNoYXIgKl9fcywgc2l6ZV90IF9fbikgdGhy
b3cgKCk7CgoKZXh0ZXJuIGludCBtYnRvd2MgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19wd2MsCiAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19u
KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHdjdG9tYiAoY2hhciAqX19zLCB3Y2hhcl90IF9fd2No
YXIpIHRocm93ICgpOwoKCgpleHRlcm4gc2l6ZV90IG1ic3Rvd2NzICh3Y2hhcl90ICpfX3Jlc3Ry
aWN0IF9fcHdjcywKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fcywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgpleHRlcm4gc2l6ZV90IHdjc3RvbWJzIChj
aGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB3Y2hh
cl90ICpfX3Jlc3RyaWN0IF9fcHdjcywgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKTsKCgoKCgoK
CmV4dGVybiBpbnQgcnBtYXRjaCAoX19jb25zdCBjaGFyICpfX3Jlc3BvbnNlKSB0aHJvdyAoKTsK
IyA4MDggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gaW50IGdldHN1Ym9wdCAoY2hh
ciAqKl9fcmVzdHJpY3QgX19vcHRpb25wLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19j
b25zdCAqX19yZXN0cmljdCBfX3Rva2VucywKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipf
X3Jlc3RyaWN0IF9fdmFsdWVwKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9pZCBzZXRrZXkgKF9f
Y29uc3QgY2hhciAqX19rZXkpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBwb3NpeF9vcGVu
cHQgKGludCBfX29mbGFnKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQgZ3JhbnRwdCAoaW50
IF9fZmQpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHVubG9ja3B0IChpbnQgX19mZCkgdGhyb3cg
KCk7CgoKCgpleHRlcm4gY2hhciAqcHRzbmFtZSAoaW50IF9fZmQpIHRocm93ICgpOwoKCgoKCgpl
eHRlcm4gaW50IHB0c25hbWVfciAoaW50IF9fZmQsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZs
ZW4pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgZ2V0cHQgKHZvaWQpIHRocm93ICgpOwoKCgoKCgpl
eHRlcm4gaW50IGdldGxvYWRhdmcgKGRvdWJsZSBfX2xvYWRhdmdbXSwgaW50IF9fbmVsZW0pIHRo
cm93ICgpOwoKCgoKCn0KIyAxNzAgIi4uLy4uLy4uL2xpYi9jY2xwb3J0LmgiIDIKCgoKCgoKCiMg
MSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAxIDMKIyAxNzggIi4uLy4uLy4uL2xpYi9jY2xw
b3J0LmgiIDIKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAxIDMKIyAyNiAiL3Vzci9p
bmNsdWRlL3VuaXN0ZC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3
ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKZXh0ZXJuICJDIiB7CiMgMTc1ICIvdXNyL2lu
Y2x1ZGUvdW5pc3RkLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeF9vcHQuaCIgMSAz
CiMgMTc2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9i
aXRzL2Vudmlyb25tZW50cy5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvZW52aXJvbm1l
bnRzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93b3Jkc2l6ZS5oIiAxIDMKIyAyNCAiL3Vz
ci9pbmNsdWRlL2JpdHMvZW52aXJvbm1lbnRzLmgiIDIgMwojIDE4MCAiL3Vzci9pbmNsdWRlL3Vu
aXN0ZC5oIiAyIDMKIyAxOTAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDE5MSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMK
IyAxOTkgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwojIDEgIi91c3IvbG9jYWwvbGliL2djYy1s
aWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMjAwICIv
dXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwojIDI0MCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAz
CnR5cGVkZWYgX19pbnRwdHJfdCBpbnRwdHJfdDsKCgoKCgoKdHlwZWRlZiBfX3NvY2tsZW5fdCBz
b2NrbGVuX3Q7CiMgMjYwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBhY2Nl
c3MgKF9fY29uc3QgY2hhciAqX19uYW1lLCBpbnQgX190eXBlKSB0aHJvdyAoKTsKCgoKCmV4dGVy
biBpbnQgZXVpZGFjY2VzcyAoX19jb25zdCBjaGFyICpfX25hbWUsIGludCBfX3R5cGUpIHRocm93
ICgpOwojIDI5MCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBfX29mZl90IGxzZWVr
IChpbnQgX19mZCwgX19vZmZfdCBfX29mZnNldCwgaW50IF9fd2hlbmNlKSB0aHJvdyAoKTsKIyAz
MDIgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gX19vZmY2NF90IGxzZWVrNjQgKGlu
dCBfX2ZkLCBfX29mZjY0X3QgX19vZmZzZXQsIGludCBfX3doZW5jZSkgdGhyb3cgKCk7CgoKCmV4
dGVybiBpbnQgY2xvc2UgKGludCBfX2ZkKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHNzaXplX3QgcmVh
ZCAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMpIHRocm93ICgpOwoKCmV4
dGVybiBzc2l6ZV90IHdyaXRlIChpbnQgX19mZCwgX19jb25zdCB2b2lkICpfX2J1Ziwgc2l6ZV90
IF9fbikgdGhyb3cgKCk7CgoKCmV4dGVybiBzc2l6ZV90IHByZWFkIChpbnQgX19mZCwgdm9pZCAq
X19idWYsIHNpemVfdCBfX25ieXRlcywgX19vZmZfdCBfX29mZnNldCkKICAgICB0aHJvdyAoKTsK
ZXh0ZXJuIHNzaXplX3QgcHdyaXRlIChpbnQgX19mZCwgX19jb25zdCB2b2lkICpfX2J1Ziwgc2l6
ZV90IF9fbiwKICAgICAgICAgICAgICAgICAgICAgICBfX29mZl90IF9fb2Zmc2V0KSB0aHJvdyAo
KTsKIyAzNDAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gc3NpemVfdCBwcmVhZDY0
IChpbnQgX19mZCwgdm9pZCAqX19idWYsIHNpemVfdCBfX25ieXRlcywKICAgICAgICAgICAgICAg
ICAgICAgICAgX19vZmY2NF90IF9fb2Zmc2V0KSB0aHJvdyAoKTsKCgpleHRlcm4gc3NpemVfdCBw
d3JpdGU2NCAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqX19idWYsIHNpemVfdCBfX24sCiAgICAg
ICAgICAgICAgICAgICAgICAgICBfX29mZjY0X3QgX19vZmZzZXQpIHRocm93ICgpOwoKCgoKCgoK
ZXh0ZXJuIGludCBwaXBlIChpbnQgX19waXBlZGVzWzJdKSB0aHJvdyAoKTsKIyAzNjIgIi91c3Iv
aW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gdW5zaWduZWQgaW50IGFsYXJtICh1bnNpZ25lZCBp
bnQgX19zZWNvbmRzKSB0aHJvdyAoKTsKIyAzNzEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpl
eHRlcm4gdW5zaWduZWQgaW50IHNsZWVwICh1bnNpZ25lZCBpbnQgX19zZWNvbmRzKSB0aHJvdyAo
KTsKCgoKCgoKZXh0ZXJuIF9fdXNlY29uZHNfdCB1YWxhcm0gKF9fdXNlY29uZHNfdCBfX3ZhbHVl
LCBfX3VzZWNvbmRzX3QgX19pbnRlcnZhbCkKICAgICB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCB1
c2xlZXAgKF9fdXNlY29uZHNfdCBfX3VzZWNvbmRzKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50
IHBhdXNlICh2b2lkKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBjaG93biAoX19jb25zdCBjaGFy
ICpfX2ZpbGUsIF9fdWlkX3QgX19vd25lciwgX19naWRfdCBfX2dyb3VwKQogICAgIHRocm93ICgp
OwoKCgpleHRlcm4gaW50IGZjaG93biAoaW50IF9fZmQsIF9fdWlkX3QgX19vd25lciwgX19naWRf
dCBfX2dyb3VwKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgbGNob3duIChfX2NvbnN0IGNoYXIg
Kl9fZmlsZSwgX191aWRfdCBfX293bmVyLCBfX2dpZF90IF9fZ3JvdXApCiAgICAgdGhyb3cgKCk7
CgoKCgpleHRlcm4gaW50IGNoZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0aCkgdGhyb3cgKCk7CgoK
CmV4dGVybiBpbnQgZmNoZGlyIChpbnQgX19mZCkgdGhyb3cgKCk7CiMgNDIzICIvdXNyL2luY2x1
ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGNoYXIgKmdldGN3ZCAoY2hhciAqX19idWYsIHNpemVfdCBf
X3NpemUpIHRocm93ICgpOwoKCgoKCmV4dGVybiBjaGFyICpnZXRfY3VycmVudF9kaXJfbmFtZSAo
dm9pZCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBjaGFyICpnZXR3ZCAoY2hhciAqX19idWYpIHRo
cm93ICgpOwoKCgoKZXh0ZXJuIGludCBkdXAgKGludCBfX2ZkKSB0aHJvdyAoKTsKCgpleHRlcm4g
aW50IGR1cDIgKGludCBfX2ZkLCBpbnQgX19mZDIpIHRocm93ICgpOwoKCmV4dGVybiBjaGFyICoq
X19lbnZpcm9uOwoKZXh0ZXJuIGNoYXIgKiplbnZpcm9uOwoKCgoKCmV4dGVybiBpbnQgZXhlY3Zl
IChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSwKICAgICAgICAg
ICAgICAgICAgIGNoYXIgKl9fY29uc3QgX19lbnZwW10pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGlu
dCBmZXhlY3ZlIChpbnQgX19mZCwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSwgY2hhciAqX19jb25z
dCBfX2VudnBbXSkKICAgICB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZXhlY3YgKF9fY29uc3Qg
Y2hhciAqX19wYXRoLCBjaGFyICpfX2NvbnN0IF9fYXJndltdKSB0aHJvdyAoKTsKCgoKZXh0ZXJu
IGludCBleGVjbGUgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAu
Li4pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGV4ZWNsIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwg
X19jb25zdCBjaGFyICpfX2FyZywgLi4uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBleGVjdnAg
KF9fY29uc3QgY2hhciAqX19maWxlLCBjaGFyICpfX2NvbnN0IF9fYXJndltdKSB0aHJvdyAoKTsK
CgoKCmV4dGVybiBpbnQgZXhlY2xwIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19jb25zdCBjaGFy
ICpfX2FyZywgLi4uKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgbmljZSAoaW50IF9faW5jKSB0
aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkIF9leGl0IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRl
X18gKChfX25vcmV0dXJuX18pKTsKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2NvbmZuYW1l
LmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvYml0cy9jb25mbmFtZS5oIiAzCmVudW0KICB7CiAg
ICBfUENfTElOS19NQVgsCgogICAgX1BDX01BWF9DQU5PTiwKCiAgICBfUENfTUFYX0lOUFVULAoK
ICAgIF9QQ19OQU1FX01BWCwKCiAgICBfUENfUEFUSF9NQVgsCgogICAgX1BDX1BJUEVfQlVGLAoK
ICAgIF9QQ19DSE9XTl9SRVNUUklDVEVELAoKICAgIF9QQ19OT19UUlVOQywKCiAgICBfUENfVkRJ
U0FCTEUsCgogICAgX1BDX1NZTkNfSU8sCgogICAgX1BDX0FTWU5DX0lPLAoKICAgIF9QQ19QUklP
X0lPLAoKICAgIF9QQ19TT0NLX01BWEJVRiwKCiAgICBfUENfRklMRVNJWkVCSVRTLAoKICAgIF9Q
Q19SRUNfSU5DUl9YRkVSX1NJWkUsCgogICAgX1BDX1JFQ19NQVhfWEZFUl9TSVpFLAoKICAgIF9Q
Q19SRUNfTUlOX1hGRVJfU0laRSwKCiAgICBfUENfUkVDX1hGRVJfQUxJR04sCgogICAgX1BDX0FM
TE9DX1NJWkVfTUlOLAoKICAgIF9QQ19TWU1MSU5LX01BWAoKICB9OwoKCmVudW0KICB7CiAgICBf
U0NfQVJHX01BWCwKCiAgICBfU0NfQ0hJTERfTUFYLAoKICAgIF9TQ19DTEtfVENLLAoKICAgIF9T
Q19OR1JPVVBTX01BWCwKCiAgICBfU0NfT1BFTl9NQVgsCgogICAgX1NDX1NUUkVBTV9NQVgsCgog
ICAgX1NDX1RaTkFNRV9NQVgsCgogICAgX1NDX0pPQl9DT05UUk9MLAoKICAgIF9TQ19TQVZFRF9J
RFMsCgogICAgX1NDX1JFQUxUSU1FX1NJR05BTFMsCgogICAgX1NDX1BSSU9SSVRZX1NDSEVEVUxJ
TkcsCgogICAgX1NDX1RJTUVSUywKCiAgICBfU0NfQVNZTkNIUk9OT1VTX0lPLAoKICAgIF9TQ19Q
UklPUklUSVpFRF9JTywKCiAgICBfU0NfU1lOQ0hST05JWkVEX0lPLAoKICAgIF9TQ19GU1lOQywK
CiAgICBfU0NfTUFQUEVEX0ZJTEVTLAoKICAgIF9TQ19NRU1MT0NLLAoKICAgIF9TQ19NRU1MT0NL
X1JBTkdFLAoKICAgIF9TQ19NRU1PUllfUFJPVEVDVElPTiwKCiAgICBfU0NfTUVTU0FHRV9QQVNT
SU5HLAoKICAgIF9TQ19TRU1BUEhPUkVTLAoKICAgIF9TQ19TSEFSRURfTUVNT1JZX09CSkVDVFMs
CgogICAgX1NDX0FJT19MSVNUSU9fTUFYLAoKICAgIF9TQ19BSU9fTUFYLAoKICAgIF9TQ19BSU9f
UFJJT19ERUxUQV9NQVgsCgogICAgX1NDX0RFTEFZVElNRVJfTUFYLAoKICAgIF9TQ19NUV9PUEVO
X01BWCwKCiAgICBfU0NfTVFfUFJJT19NQVgsCgogICAgX1NDX1ZFUlNJT04sCgogICAgX1NDX1BB
R0VTSVpFLAoKCiAgICBfU0NfUlRTSUdfTUFYLAoKICAgIF9TQ19TRU1fTlNFTVNfTUFYLAoKICAg
IF9TQ19TRU1fVkFMVUVfTUFYLAoKICAgIF9TQ19TSUdRVUVVRV9NQVgsCgogICAgX1NDX1RJTUVS
X01BWCwKCgoKCiAgICBfU0NfQkNfQkFTRV9NQVgsCgogICAgX1NDX0JDX0RJTV9NQVgsCgogICAg
X1NDX0JDX1NDQUxFX01BWCwKCiAgICBfU0NfQkNfU1RSSU5HX01BWCwKCiAgICBfU0NfQ09MTF9X
RUlHSFRTX01BWCwKCiAgICBfU0NfRVFVSVZfQ0xBU1NfTUFYLAoKICAgIF9TQ19FWFBSX05FU1Rf
TUFYLAoKICAgIF9TQ19MSU5FX01BWCwKCiAgICBfU0NfUkVfRFVQX01BWCwKCiAgICBfU0NfQ0hB
UkNMQVNTX05BTUVfTUFYLAoKCiAgICBfU0NfMl9WRVJTSU9OLAoKICAgIF9TQ18yX0NfQklORCwK
CiAgICBfU0NfMl9DX0RFViwKCiAgICBfU0NfMl9GT1JUX0RFViwKCiAgICBfU0NfMl9GT1JUX1JV
TiwKCiAgICBfU0NfMl9TV19ERVYsCgogICAgX1NDXzJfTE9DQUxFREVGLAoKCiAgICBfU0NfUElJ
LAoKICAgIF9TQ19QSUlfWFRJLAoKICAgIF9TQ19QSUlfU09DS0VULAoKICAgIF9TQ19QSUlfSU5U
RVJORVQsCgogICAgX1NDX1BJSV9PU0ksCgogICAgX1NDX1BPTEwsCgogICAgX1NDX1NFTEVDVCwK
CiAgICBfU0NfVUlPX01BWElPViwKCiAgICBfU0NfSU9WX01BWCA9IF9TQ19VSU9fTUFYSU9WLAoK
ICAgIF9TQ19QSUlfSU5URVJORVRfU1RSRUFNLAoKICAgIF9TQ19QSUlfSU5URVJORVRfREdSQU0s
CgogICAgX1NDX1BJSV9PU0lfQ09UUywKCiAgICBfU0NfUElJX09TSV9DTFRTLAoKICAgIF9TQ19Q
SUlfT1NJX00sCgogICAgX1NDX1RfSU9WX01BWCwKCgoKICAgIF9TQ19USFJFQURTLAoKICAgIF9T
Q19USFJFQURfU0FGRV9GVU5DVElPTlMsCgogICAgX1NDX0dFVEdSX1JfU0laRV9NQVgsCgogICAg
X1NDX0dFVFBXX1JfU0laRV9NQVgsCgogICAgX1NDX0xPR0lOX05BTUVfTUFYLAoKICAgIF9TQ19U
VFlfTkFNRV9NQVgsCgogICAgX1NDX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMsCgogICAg
X1NDX1RIUkVBRF9LRVlTX01BWCwKCiAgICBfU0NfVEhSRUFEX1NUQUNLX01JTiwKCiAgICBfU0Nf
VEhSRUFEX1RIUkVBRFNfTUFYLAoKICAgIF9TQ19USFJFQURfQVRUUl9TVEFDS0FERFIsCgogICAg
X1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRSwKCiAgICBfU0NfVEhSRUFEX1BSSU9SSVRZX1NDSEVE
VUxJTkcsCgogICAgX1NDX1RIUkVBRF9QUklPX0lOSEVSSVQsCgogICAgX1NDX1RIUkVBRF9QUklP
X1BST1RFQ1QsCgogICAgX1NDX1RIUkVBRF9QUk9DRVNTX1NIQVJFRCwKCgogICAgX1NDX05QUk9D
RVNTT1JTX0NPTkYsCgogICAgX1NDX05QUk9DRVNTT1JTX09OTE4sCgogICAgX1NDX1BIWVNfUEFH
RVMsCgogICAgX1NDX0FWUEhZU19QQUdFUywKCiAgICBfU0NfQVRFWElUX01BWCwKCiAgICBfU0Nf
UEFTU19NQVgsCgoKICAgIF9TQ19YT1BFTl9WRVJTSU9OLAoKICAgIF9TQ19YT1BFTl9YQ1VfVkVS
U0lPTiwKCiAgICBfU0NfWE9QRU5fVU5JWCwKCiAgICBfU0NfWE9QRU5fQ1JZUFQsCgogICAgX1ND
X1hPUEVOX0VOSF9JMThOLAoKICAgIF9TQ19YT1BFTl9TSE0sCgoKICAgIF9TQ18yX0NIQVJfVEVS
TSwKCiAgICBfU0NfMl9DX1ZFUlNJT04sCgogICAgX1NDXzJfVVBFLAoKCiAgICBfU0NfWE9QRU5f
WFBHMiwKCiAgICBfU0NfWE9QRU5fWFBHMywKCiAgICBfU0NfWE9QRU5fWFBHNCwKCgogICAgX1ND
X0NIQVJfQklULAoKICAgIF9TQ19DSEFSX01BWCwKCiAgICBfU0NfQ0hBUl9NSU4sCgogICAgX1ND
X0lOVF9NQVgsCgogICAgX1NDX0lOVF9NSU4sCgogICAgX1NDX0xPTkdfQklULAoKICAgIF9TQ19X
T1JEX0JJVCwKCiAgICBfU0NfTUJfTEVOX01BWCwKCiAgICBfU0NfTlpFUk8sCgogICAgX1NDX1NT
SVpFX01BWCwKCiAgICBfU0NfU0NIQVJfTUFYLAoKICAgIF9TQ19TQ0hBUl9NSU4sCgogICAgX1ND
X1NIUlRfTUFYLAoKICAgIF9TQ19TSFJUX01JTiwKCiAgICBfU0NfVUNIQVJfTUFYLAoKICAgIF9T
Q19VSU5UX01BWCwKCiAgICBfU0NfVUxPTkdfTUFYLAoKICAgIF9TQ19VU0hSVF9NQVgsCgoKICAg
IF9TQ19OTF9BUkdNQVgsCgogICAgX1NDX05MX0xBTkdNQVgsCgogICAgX1NDX05MX01TR01BWCwK
CiAgICBfU0NfTkxfTk1BWCwKCiAgICBfU0NfTkxfU0VUTUFYLAoKICAgIF9TQ19OTF9URVhUTUFY
LAoKCiAgICBfU0NfWEJTNV9JTFAzMl9PRkYzMiwKCiAgICBfU0NfWEJTNV9JTFAzMl9PRkZCSUcs
CgogICAgX1NDX1hCUzVfTFA2NF9PRkY2NCwKCiAgICBfU0NfWEJTNV9MUEJJR19PRkZCSUcsCgoK
ICAgIF9TQ19YT1BFTl9MRUdBQ1ksCgogICAgX1NDX1hPUEVOX1JFQUxUSU1FLAoKICAgIF9TQ19Y
T1BFTl9SRUFMVElNRV9USFJFQURTLAoKCiAgICBfU0NfQURWSVNPUllfSU5GTywKCiAgICBfU0Nf
QkFSUklFUlMsCgogICAgX1NDX0JBU0UsCgogICAgX1NDX0NfTEFOR19TVVBQT1JULAoKICAgIF9T
Q19DX0xBTkdfU1VQUE9SVF9SLAoKICAgIF9TQ19DTE9DS19TRUxFQ1RJT04sCgogICAgX1NDX0NQ
VVRJTUUsCgogICAgX1NDX1RIUkVBRF9DUFVUSU1FLAoKICAgIF9TQ19ERVZJQ0VfSU8sCgogICAg
X1NDX0RFVklDRV9TUEVDSUZJQywKCiAgICBfU0NfREVWSUNFX1NQRUNJRklDX1IsCgogICAgX1ND
X0ZEX01HTVQsCgogICAgX1NDX0ZJRk8sCgogICAgX1NDX1BJUEUsCgogICAgX1NDX0ZJTEVfQVRU
UklCVVRFUywKCiAgICBfU0NfRklMRV9MT0NLSU5HLAoKICAgIF9TQ19GSUxFX1NZU1RFTSwKCiAg
ICBfU0NfTU9OT1RPTklDX0NMT0NLLAoKICAgIF9TQ19NVUxUSV9QUk9DRVNTLAoKICAgIF9TQ19T
SU5HTEVfUFJPQ0VTUywKCiAgICBfU0NfTkVUV09SS0lORywKCiAgICBfU0NfUkVBREVSX1dSSVRF
Ul9MT0NLUywKCiAgICBfU0NfU1BJTl9MT0NLUywKCiAgICBfU0NfUkVHRVhQLAoKICAgIF9TQ19S
RUdFWF9WRVJTSU9OLAoKICAgIF9TQ19TSEVMTCwKCiAgICBfU0NfU0lHTkFMUywKCiAgICBfU0Nf
U1BBV04sCgogICAgX1NDX1NQT1JBRElDX1NFUlZFUiwKCiAgICBfU0NfVEhSRUFEX1NQT1JBRElD
X1NFUlZFUiwKCiAgICBfU0NfU1lTVEVNX0RBVEFCQVNFLAoKICAgIF9TQ19TWVNURU1fREFUQUJB
U0VfUiwKCiAgICBfU0NfVElNRU9VVFMsCgogICAgX1NDX1RZUEVEX01FTU9SWV9PQkpFQ1RTLAoK
ICAgIF9TQ19VU0VSX0dST1VQUywKCiAgICBfU0NfVVNFUl9HUk9VUFNfUiwKCiAgICBfU0NfMl9Q
QlMsCgogICAgX1NDXzJfUEJTX0FDQ09VTlRJTkcsCgogICAgX1NDXzJfUEJTX0xPQ0FURSwKCiAg
ICBfU0NfMl9QQlNfTUVTU0FHRSwKCiAgICBfU0NfMl9QQlNfVFJBQ0ssCgogICAgX1NDX1NZTUxP
T1BfTUFYLAoKICAgIF9TQ19TVFJFQU1TLAoKICAgIF9TQ18yX1BCU19DSEVDS1BPSU5ULAoKCiAg
ICBfU0NfVjZfSUxQMzJfT0ZGMzIsCgogICAgX1NDX1Y2X0lMUDMyX09GRkJJRywKCiAgICBfU0Nf
VjZfTFA2NF9PRkY2NCwKCiAgICBfU0NfVjZfTFBCSUdfT0ZGQklHLAoKCiAgICBfU0NfSE9TVF9O
QU1FX01BWCwKCiAgICBfU0NfVFJBQ0UsCgogICAgX1NDX1RSQUNFX0VWRU5UX0ZJTFRFUiwKCiAg
ICBfU0NfVFJBQ0VfSU5IRVJJVCwKCiAgICBfU0NfVFJBQ0VfTE9HCgogIH07CgoKCgoKZW51bQog
IHsKICAgIF9DU19QQVRILAoKCgoKICAgIF9DU19MRlNfQ0ZMQUdTID0gMTAwMCwKCiAgICBfQ1Nf
TEZTX0xERkxBR1MsCgogICAgX0NTX0xGU19MSUJTLAoKICAgIF9DU19MRlNfTElOVEZMQUdTLAoK
ICAgIF9DU19MRlM2NF9DRkxBR1MsCgogICAgX0NTX0xGUzY0X0xERkxBR1MsCgogICAgX0NTX0xG
UzY0X0xJQlMsCgogICAgX0NTX0xGUzY0X0xJTlRGTEFHUywKCgoKCiAgICBfQ1NfWEJTNV9JTFAz
Ml9PRkYzMl9DRkxBR1MgPSAxMTAwLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRjMyX0xERkxBR1Ms
CgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGMzJfTElCUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkYz
Ml9MSU5URkxBR1MsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0NGTEFHUywKCiAgICBfQ1Nf
WEJTNV9JTFAzMl9PRkZCSUdfTERGTEFHUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElC
UywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElOVEZMQUdTLAoKICAgIF9DU19YQlM1X0xQ
NjRfT0ZGNjRfQ0ZMQUdTLAoKICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfTERGTEFHUywKCiAgICBf
Q1NfWEJTNV9MUDY0X09GRjY0X0xJQlMsCgogICAgX0NTX1hCUzVfTFA2NF9PRkY2NF9MSU5URkxB
R1MsCgogICAgX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0NGTEFHUywKCiAgICBfQ1NfWEJTNV9MUEJJ
R19PRkZCSUdfTERGTEFHUywKCiAgICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfTElCUywKCiAgICBf
Q1NfWEJTNV9MUEJJR19PRkZCSUdfTElOVEZMQUdTLAoKCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMy
X09GRjMyX0NGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGMzJfTERGTEFHUywKCiAg
ICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGMzJfTElCUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJf
T0ZGMzJfTElOVEZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfQ0ZMQUdTLAoK
ICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfTERGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZf
SUxQMzJfT0ZGQklHX0xJQlMsCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRkJJR19MSU5URkxB
R1MsCgogICAgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfQ0ZMQUdTLAoKICAgIF9DU19QT1NJWF9W
Nl9MUDY0X09GRjY0X0xERkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfTElCUywK
CiAgICBfQ1NfUE9TSVhfVjZfTFA2NF9PRkY2NF9MSU5URkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2
X0xQQklHX09GRkJJR19DRkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19MREZM
QUdTLAoKICAgIF9DU19QT1NJWF9WNl9MUEJJR19PRkZCSUdfTElCUywKCiAgICBfQ1NfUE9TSVhf
VjZfTFBCSUdfT0ZGQklHX0xJTlRGTEFHUywKCgoKICAgIF9DU19WNl9XSURUSF9SRVNUUklDVEVE
X0VOVlMKCiAgfTsKIyA1MDEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzCgoKZXh0ZXJuIGxv
bmcgaW50IHBhdGhjb25mIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgaW50IF9fbmFtZSkgdGhyb3cg
KCk7CgoKZXh0ZXJuIGxvbmcgaW50IGZwYXRoY29uZiAoaW50IF9fZmQsIGludCBfX25hbWUpIHRo
cm93ICgpOwoKCmV4dGVybiBsb25nIGludCBzeXNjb25mIChpbnQgX19uYW1lKSB0aHJvdyAoKSBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBzaXplX3QgY29uZnN0ciAoaW50
IF9fbmFtZSwgY2hhciAqX19idWYsIHNpemVfdCBfX2xlbikgdGhyb3cgKCk7CgoKCgpleHRlcm4g
X19waWRfdCBnZXRwaWQgKHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiBfX3BpZF90IGdldHBwaWQg
KHZvaWQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGdycCAodm9pZCkgdGhyb3cg
KCk7CiMgNTM2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIF9fcGlkX3QgX19nZXRw
Z2lkIChfX3BpZF90IF9fcGlkKSB0aHJvdyAoKTsKCmV4dGVybiBfX3BpZF90IGdldHBnaWQgKF9f
cGlkX3QgX19waWQpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50IHNldHBnaWQgKF9fcGlkX3Qg
X19waWQsIF9fcGlkX3QgX19wZ2lkKSB0aHJvdyAoKTsKIyA1NjIgIi91c3IvaW5jbHVkZS91bmlz
dGQuaCIgMwpleHRlcm4gaW50IHNldHBncnAgKHZvaWQpIHRocm93ICgpOwojIDU4MCAiL3Vzci9p
bmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBfX3BpZF90IHNldHNpZCAodm9pZCkgdGhyb3cgKCk7
CgoKCmV4dGVybiBfX3BpZF90IGdldHNpZCAoX19waWRfdCBfX3BpZCkgdGhyb3cgKCk7CgoKCmV4
dGVybiBfX3VpZF90IGdldHVpZCAodm9pZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIF9fdWlkX3QgZ2V0
ZXVpZCAodm9pZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIF9fZ2lkX3QgZ2V0Z2lkICh2b2lkKSB0aHJv
dyAoKTsKCgpleHRlcm4gX19naWRfdCBnZXRlZ2lkICh2b2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVy
biBpbnQgZ2V0Z3JvdXBzIChpbnQgX19zaXplLCBfX2dpZF90IF9fbGlzdFtdKSB0aHJvdyAoKTsK
CgoKZXh0ZXJuIGludCBncm91cF9tZW1iZXIgKF9fZ2lkX3QgX19naWQpIHRocm93ICgpOwoKCgoK
CgpleHRlcm4gaW50IHNldHVpZCAoX191aWRfdCBfX3VpZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4g
aW50IHNldHJldWlkIChfX3VpZF90IF9fcnVpZCwgX191aWRfdCBfX2V1aWQpIHRocm93ICgpOwoK
CgoKZXh0ZXJuIGludCBzZXRldWlkIChfX3VpZF90IF9fdWlkKSB0aHJvdyAoKTsKCgoKCgoKZXh0
ZXJuIGludCBzZXRnaWQgKF9fZ2lkX3QgX19naWQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBz
ZXRyZWdpZCAoX19naWRfdCBfX3JnaWQsIF9fZ2lkX3QgX19lZ2lkKSB0aHJvdyAoKTsKCgoKCmV4
dGVybiBpbnQgc2V0ZWdpZCAoX19naWRfdCBfX2dpZCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBf
X3BpZF90IGZvcmsgKHZvaWQpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gX19waWRfdCB2Zm9yayAo
dm9pZCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGNoYXIgKnR0eW5hbWUgKGludCBfX2ZkKSB0aHJv
dyAoKTsKCgoKZXh0ZXJuIGludCB0dHluYW1lX3IgKGludCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6
ZV90IF9fYnVmbGVuKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBpc2F0dHkgKGludCBfX2ZkKSB0
aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IHR0eXNsb3QgKHZvaWQpIHRocm93ICgpOwoKCgoKZXh0
ZXJuIGludCBsaW5rIChfX2NvbnN0IGNoYXIgKl9fZnJvbSwgX19jb25zdCBjaGFyICpfX3RvKSB0
aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBzeW1saW5rIChfX2NvbnN0IGNoYXIgKl9fZnJvbSwgX19j
b25zdCBjaGFyICpfX3RvKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgcmVhZGxpbmsgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX3BhdGgsIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBfX2xlbikgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgdW5s
aW5rIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBybWRpciAo
X19jb25zdCBjaGFyICpfX3BhdGgpIHRocm93ICgpOwoKCgpleHRlcm4gX19waWRfdCB0Y2dldHBn
cnAgKGludCBfX2ZkKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHRjc2V0cGdycCAoaW50IF9fZmQs
IF9fcGlkX3QgX19wZ3JwX2lkKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNoYXIgKmdldGxvZ2luICh2
b2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZ2V0bG9naW5fciAoY2hhciAqX19uYW1lLCBz
aXplX3QgX19uYW1lX2xlbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHNldGxvZ2luIChfX2Nv
bnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCk7CiMgNzI2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgi
IDMKIyAxICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDEgMwojIDM4ICIvdXNyL2luY2x1ZGUvZ2V0
b3B0LmgiIDMKZXh0ZXJuICJDIiB7CiMgNDcgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMwpleHRl
cm4gY2hhciAqb3B0YXJnOwojIDYxICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDMKZXh0ZXJuIGlu
dCBvcHRpbmQ7CgoKCgpleHRlcm4gaW50IG9wdGVycjsKCgoKZXh0ZXJuIGludCBvcHRvcHQ7CiMg
MTQ1ICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDMKZXh0ZXJuIGludCBnZXRvcHQgKGludCBfX19h
cmdjLCBjaGFyICpjb25zdCAqX19fYXJndiwgY29uc3QgY2hhciAqX19zaG9ydG9wdHMpOwojIDE3
NSAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAzCn0KIyA3MjcgIi91c3IvaW5jbHVkZS91bmlzdGQu
aCIgMiAzCgoKCgoKCgpleHRlcm4gaW50IGdldGhvc3RuYW1lIChjaGFyICpfX25hbWUsIHNpemVf
dCBfX2xlbikgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgc2V0aG9zdG5hbWUgKF9fY29uc3Qg
Y2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHNldGhv
c3RpZCAobG9uZyBpbnQgX19pZCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBnZXRkb21haW5u
YW1lIChjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikgdGhyb3cgKCk7CmV4dGVybiBpbnQgc2V0
ZG9tYWlubmFtZSAoX19jb25zdCBjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikgdGhyb3cgKCk7
CgoKCgoKZXh0ZXJuIGludCB2aGFuZ3VwICh2b2lkKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHJl
dm9rZSAoX19jb25zdCBjaGFyICpfX2ZpbGUpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBw
cm9maWwgKHVuc2lnbmVkIHNob3J0IGludCAqX19zYW1wbGVfYnVmZmVyLCBzaXplX3QgX19zaXpl
LAogICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fb2Zmc2V0LCB1bnNpZ25lZCBpbnQgX19zY2Fs
ZSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBhY2N0IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkg
dGhyb3cgKCk7CgoKCmV4dGVybiBjaGFyICpnZXR1c2Vyc2hlbGwgKHZvaWQpIHRocm93ICgpOwpl
eHRlcm4gdm9pZCBlbmR1c2Vyc2hlbGwgKHZvaWQpIHRocm93ICgpOwpleHRlcm4gdm9pZCBzZXR1
c2Vyc2hlbGwgKHZvaWQpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgZGFlbW9uIChpbnQgX19u
b2NoZGlyLCBpbnQgX19ub2Nsb3NlKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBjaHJvb3Qg
KF9fY29uc3QgY2hhciAqX19wYXRoKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNoYXIgKmdldHBhc3Mg
KF9fY29uc3QgY2hhciAqX19wcm9tcHQpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgZnN5bmMg
KGludCBfX2ZkKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcgaW50IGdldGhvc3RpZCAodm9p
ZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgc3luYyAodm9pZCkgdGhyb3cgKCk7CgoKCgpleHRl
cm4gaW50IGdldHBhZ2VzaXplICh2b2lkKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgoKCgpleHRlcm4gaW50IHRydW5jYXRlIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19v
ZmZfdCBfX2xlbmd0aCkgdGhyb3cgKCk7CiMgODM2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMK
ZXh0ZXJuIGludCB0cnVuY2F0ZTY0IChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19vZmY2NF90IF9f
bGVuZ3RoKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZnRydW5jYXRlIChpbnQgX19mZCwgX19v
ZmZfdCBfX2xlbmd0aCkgdGhyb3cgKCk7CiMgODUxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMK
ZXh0ZXJuIGludCBmdHJ1bmNhdGU2NCAoaW50IF9fZmQsIF9fb2ZmNjRfdCBfX2xlbmd0aCkgdGhy
b3cgKCk7CgoKCgoKZXh0ZXJuIGludCBnZXRkdGFibGVzaXplICh2b2lkKSB0aHJvdyAoKTsKIyA4
NjYgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IGJyayAodm9pZCAqX19hZGRy
KSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9pZCAqc2JyayAoaW50cHRyX3QgX19kZWx0YSkgdGhy
b3cgKCk7CiMgODg3ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGxvbmcgaW50IHN5
c2NhbGwgKGxvbmcgaW50IF9fc3lzbm8sIC4uLikgdGhyb3cgKCk7CiMgOTA3ICIvdXNyL2luY2x1
ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBsb2NrZiAoaW50IF9fZmQsIGludCBfX2NtZCwgX19v
ZmZfdCBfX2xlbikgdGhyb3cgKCk7CiMgOTE3ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0
ZXJuIGludCBsb2NrZjY0IChpbnQgX19mZCwgaW50IF9fY21kLCBfX29mZjY0X3QgX19sZW4pIHRo
cm93ICgpOwojIDkzOCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgZmRhdGFz
eW5jIChpbnQgX19maWxkZXMpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGNoYXIgKmNyeXB0IChf
X2NvbnN0IGNoYXIgKl9fa2V5LCBfX2NvbnN0IGNoYXIgKl9fc2FsdCkgdGhyb3cgKCk7CgoKCmV4
dGVybiB2b2lkIGVuY3J5cHQgKGNoYXIgKl9fYmxvY2ssIGludCBfX2VkZmxhZykgdGhyb3cgKCk7
CgoKCgoKCmV4dGVybiB2b2lkIHN3YWIgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX2Zyb20s
IHZvaWQgKl9fcmVzdHJpY3QgX190bywKICAgICAgICAgICAgICAgICAgc3NpemVfdCBfX24pIHRo
cm93ICgpOwoKCgoKCgoKZXh0ZXJuIGNoYXIgKmN0ZXJtaWQgKGNoYXIgKl9fcykgdGhyb3cgKCk7
CiMgOTgzICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBwdGhyZWFkX2F0Zm9y
ayAodm9pZCAoKl9fcHJlcGFyZSkgKHZvaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICB2
b2lkICgqX19wYXJlbnQpICh2b2lkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAo
Kl9fY2hpbGQpICh2b2lkKSkgdGhyb3cgKCk7CgoKfQojIDE4MyAiLi4vLi4vLi4vbGliL2NjbHBv
cnQuaCIgMgojIDE5OCAiLi4vLi4vLi4vbGliL2NjbHBvcnQuaCIKIyAxICIvdXNyL2luY2x1ZGUv
c2V0am1wLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvc2V0am1wLmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9zZXRqbXAuaCIgMiAzCgpl
eHRlcm4gIkMiIHsKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2V0am1wLmgiIDEgMwojIDM2ICIv
dXNyL2luY2x1ZGUvYml0cy9zZXRqbXAuaCIgMwp0eXBlZGVmIGludCBfX2ptcF9idWZbNl07CiMg
MzEgIi91c3IvaW5jbHVkZS9zZXRqbXAuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2ln
c2V0LmgiIDEgMwojIDMyICIvdXNyL2luY2x1ZGUvc2V0am1wLmgiIDIgMwoKCnR5cGVkZWYgc3Ry
dWN0IF9fam1wX2J1Zl90YWcKICB7CgoKCgogICAgX19qbXBfYnVmIF9fam1wYnVmOwogICAgaW50
IF9fbWFza193YXNfc2F2ZWQ7CiAgICBfX3NpZ3NldF90IF9fc2F2ZWRfbWFzazsKICB9IGptcF9i
dWZbMV07CgoKCgpleHRlcm4gaW50IHNldGptcCAoam1wX2J1ZiBfX2VudikgdGhyb3cgKCk7CgoK
CmV4dGVybiBpbnQgX3NldGptcCAoam1wX2J1ZiBfX2VudikgdGhyb3cgKCk7CgoKCgpleHRlcm4g
aW50IF9fc2lnc2V0am1wIChqbXBfYnVmIF9fZW52LCBpbnQgX19zYXZlbWFzaykgdGhyb3cgKCk7
CiMgNzMgIi91c3IvaW5jbHVkZS9zZXRqbXAuaCIgMwpleHRlcm4gdm9pZCBsb25nam1wIChqbXBf
YnVmIF9fZW52LCBpbnQgX192YWwpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9y
ZXR1cm5fXykpOwoKCgoKZXh0ZXJuIHZvaWQgX2xvbmdqbXAgKGptcF9idWYgX19lbnYsIGludCBf
X3ZhbCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgoK
Cgp0eXBlZGVmIGptcF9idWYgc2lnam1wX2J1ZjsKIyA5OCAiL3Vzci9pbmNsdWRlL3NldGptcC5o
IiAzCmV4dGVybiB2b2lkIHNpZ2xvbmdqbXAgKHNpZ2ptcF9idWYgX19lbnYsIGludCBfX3ZhbCkK
ICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKfQojIDE5OSAi
Li4vLi4vLi4vbGliL2NjbHBvcnQuaCIgMgojIDI1MSAiLi4vLi4vLi4vbGliL2NjbHBvcnQuaCIK
IyAxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvc3RyaW5n
LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVk
ZS9zdHJpbmcuaCIgMiAzCgpleHRlcm4gIkMiIHsKCgoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzNCAi
L3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgoKZXh0ZXJuIHZvaWQgKm1lbWNweSAodm9pZCAq
X19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19y
ZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgKm1lbW1v
dmUgKHZvaWQgKl9fZGVzdCwgX19jb25zdCB2b2lkICpfX3NyYywgc2l6ZV90IF9fbikKICAgICB0
aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9pZCAqbWVtY2NweSAodm9pZCAqX19yZXN0cmljdCBfX2Rl
c3QsIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywKICAgICAgICAgICAgICAgICAgICAg
IGludCBfX2MsIHNpemVfdCBfX24pCiAgICAgdGhyb3cgKCk7CgoKCgpleHRlcm4gdm9pZCAqbWVt
c2V0ICh2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCmV4dGVybiBp
bnQgbWVtY21wIChfX2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90
IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4g
dm9pZCAqbWVtY2hyIChfX2NvbnN0IHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikKICAg
ICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgpleHRlcm4gdm9pZCAq
cmF3bWVtY2hyIChfX2NvbnN0IHZvaWQgKl9fcywgaW50IF9fYykgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHZvaWQgKm1lbXJjaHIgKF9fY29uc3Qgdm9pZCAq
X19zLCBpbnQgX19jLCBzaXplX3QgX19uKQogICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCgoKCmV4dGVybiBjaGFyICpzdHJjcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19k
ZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAgdGhyb3cgKCk7CgpleHRl
cm4gY2hhciAqc3RybmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAg
ICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIHRocm93
ICgpOwoKCmV4dGVybiBjaGFyICpzdHJjYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAgdGhyb3cgKCk7CgpleHRlcm4gY2hhciAq
c3RybmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX3NyYywKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24pIHRocm93ICgpOwoKCmV4
dGVybiBpbnQgc3RyY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikK
ICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQgc3Ry
bmNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24p
CiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGludCBz
dHJjb2xsIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBzaXplX3Qgc3RyeGZybSAo
Y2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgoKCgojIDEgIi91
c3IvaW5jbHVkZS94bG9jYWxlLmgiIDEgMwojIDEwOSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAy
IDMKCgpleHRlcm4gaW50IF9fc3RyY29sbF9sIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3Qg
Y2hhciAqX19zMiwgX19sb2NhbGVfdCBfX2wpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fcHVyZV9fKSk7CgpleHRlcm4gc2l6ZV90IF9fc3RyeGZybV9sIChjaGFyICpfX2Rlc3QsIF9f
Y29uc3QgY2hhciAqX19zcmMsIHNpemVfdCBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fbG9jYWxlX3QgX19sKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFyICpzdHJkdXAgKF9fY29u
c3QgY2hhciAqX19zKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgoK
CgpleHRlcm4gY2hhciAqc3RybmR1cCAoX19jb25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9f
bikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwojIDE1NSAiL3Vz
ci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICpzdHJjaHIgKF9fY29uc3QgY2hhciAq
X19zLCBpbnQgX19jKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVy
biBjaGFyICpzdHJyY2hyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgpleHRlcm4gY2hhciAqc3RyY2hybnVsIChfX2Nv
bnN0IGNoYXIgKl9fcywgaW50IF9fYykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f
KSk7CgoKCgpleHRlcm4gc2l6ZV90IHN0cmNzcG4gKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0
IGNoYXIgKl9fcmVqZWN0KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwoKCmV4dGVybiBzaXplX3Qgc3Ryc3BuIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFy
ICpfX2FjY2VwdCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4
dGVybiBjaGFyICpzdHJwYnJrIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2Fj
Y2VwdCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBj
aGFyICpzdHJzdHIgKF9fY29uc3QgY2hhciAqX19oYXlzdGFjaywgX19jb25zdCBjaGFyICpfX25l
ZWRsZSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJu
IGNoYXIgKnN0cmNhc2VzdHIgKF9fY29uc3QgY2hhciAqX19oYXlzdGFjaywgX19jb25zdCBjaGFy
ICpfX25lZWRsZSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoK
ZXh0ZXJuIGNoYXIgKnN0cnRvayAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX2RlbGltKQogICAgIHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqX19zdHJ0
b2tfciAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpIHRocm93ICgpOwoKZXh0ZXJuIGNoYXIgKnN0cnRv
a19yIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVs
aW0sCiAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikg
dGhyb3cgKCk7CgoKCgoKCmV4dGVybiB2b2lkICptZW1tZW0gKF9fY29uc3Qgdm9pZCAqX19oYXlz
dGFjaywgc2l6ZV90IF9faGF5c3RhY2tsZW4sCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qg
dm9pZCAqX19uZWVkbGUsIHNpemVfdCBfX25lZWRsZWxlbikKICAgICB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIHZvaWQgKl9fbWVtcGNweSAodm9pZCAqX19y
ZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19y
ZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CmV4dGVybiB2b2lkICptZW1wY3B5
ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qg
dm9pZCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCgpleHRlcm4g
c2l6ZV90IHN0cmxlbiAoX19jb25zdCBjaGFyICpfX3MpIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIHNpemVfdCBzdHJubGVuIChfX2NvbnN0IGNoYXIgKl9f
c3RyaW5nLCBzaXplX3QgX19tYXhsZW4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CgoKCgpleHRlcm4gY2hhciAqc3RyZXJyb3IgKGludCBfX2Vycm51bSkgdGhyb3cg
KCk7CgoKCmV4dGVybiBjaGFyICpzdHJlcnJvcl9yIChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVm
LCBzaXplX3QgX19idWZsZW4pIHRocm93ICgpOwoKCgoKZXh0ZXJuIHZvaWQgX19iemVybyAodm9p
ZCAqX19zLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHZvaWQgYmNvcHkgKF9fY29u
c3Qgdm9pZCAqX19zcmMsIHZvaWQgKl9fZGVzdCwgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0
ZXJuIHZvaWQgYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJu
IGludCBiY21wIChfX2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90
IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4g
Y2hhciAqaW5kZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAqcmluZGV4IChfX2NvbnN0IGNoYXIg
Kl9fcywgaW50IF9fYykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4
dGVybiBpbnQgZmZzIChpbnQgX19pKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CgoKCgpleHRlcm4gaW50IGZmc2wgKGxvbmcgaW50IF9fbCkgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gaW50IGZmc2xsIChsb25n
IGxvbmcgaW50IF9fbGwpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OwoKCgoKZXh0ZXJuIGludCBzdHJjYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3Qg
Y2hhciAqX19zMikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpl
eHRlcm4gaW50IHN0cm5jYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAq
X19zMiwgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCgoKCgpleHRlcm4gaW50IF9fc3RyY2FzZWNtcF9sIChfX2NvbnN0IGNoYXIgKl9fczEsIF9f
Y29uc3QgY2hhciAqX19zMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBf
X2xvYykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gaW50IF9f
c3RybmNhc2VjbXBfbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBfX2xvY2FsZV90IF9fbG9jKQog
ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBjaGFy
ICpzdHJzZXAgKGNoYXIgKipfX3Jlc3RyaWN0IF9fc3RyaW5ncCwKICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pIHRocm93ICgpOwoKCgoKZXh0ZXJu
IGludCBzdHJ2ZXJzY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikK
ICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAq
c3Ryc2lnbmFsIChpbnQgX19zaWcpIHRocm93ICgpOwoKCmV4dGVybiBjaGFyICpfX3N0cGNweSAo
Y2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykK
ICAgICB0aHJvdyAoKTsKZXh0ZXJuIGNoYXIgKnN0cGNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rl
c3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICB0aHJvdyAoKTsKCgoKZXh0
ZXJuIGNoYXIgKl9fc3RwbmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikg
dGhyb3cgKCk7CmV4dGVybiBjaGFyICpzdHBuY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwK
ICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6
ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGNoYXIgKnN0cmZyeSAoY2hhciAqX19zdHJpbmcp
IHRocm93ICgpOwoKCmV4dGVybiB2b2lkICptZW1mcm9iICh2b2lkICpfX3MsIHNpemVfdCBfX24p
IHRocm93ICgpOwoKCgoKCgpleHRlcm4gY2hhciAqYmFzZW5hbWUgKF9fY29uc3QgY2hhciAqX19m
aWxlbmFtZSkgdGhyb3cgKCk7CiMgMzY0ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKfQojIDI1
MiAiLi4vLi4vLi4vbGliL2NjbHBvcnQuaCIgMgojIDMzNSAiLi4vLi4vLi4vbGliL2NjbHBvcnQu
aCIKICB0eXBlZGVmIGNoYXIgRlN0cmluZzsKIyAzNDUgIi4uLy4uLy4uL2xpYi9jY2xwb3J0Lmgi
CmNoYXIgKiBHZXRGT1JUUkFOU3RyaW5nKCBGU3RyaW5nICosIGludCwgY29uc3QgY2hhciAqICk7
CmNoYXIgKiBHZXRGT1JUUkFOU3RyaW5nRXgoIEZTdHJpbmcgKiwgaW50LCBjb25zdCBjaGFyICos
IGludCApOwpjaGFyICogR2V0Rk9SVFJBTlBhdGhTdHJpbmcoIEZTdHJpbmcgKiwgaW50LCBjb25z
dCBjaGFyICogKTsKIyAzOTUgIi4uLy4uLy4uL2xpYi9jY2xwb3J0LmgiCiMgMSAiL3Vzci9sb2Nh
bC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMy9pbmNsdWRlL3N0ZGFyZy5oIiAx
IDMKIyAxMTAgIi91c3IvbG9jYWwvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjMv
aW5jbHVkZS9zdGRhcmcuaCIgMwp0eXBlZGVmIF9fZ251Y192YV9saXN0IHZhX2xpc3Q7CiMgMzk2
ICIuLi8uLi8uLi9saWIvY2NscG9ydC5oIiAyCiMgNDM5ICIuLi8uLi8uLi9saWIvY2NscG9ydC5o
IgppbnQgUENJR2V0T1NWZXJzaW9uKGNoYXIgKiogcHBzek9TTmFtZSxjaGFyICoqIHBwc3pPU1Zl
cnNpb24pOwp2b2lkIFBDSV9xc29ydCh2b2lkICpiYXNlLCBzaXplX3Qgbiwgc2l6ZV90IHNpemUs
CiAgICAgICAgICAgaW50ICgqY29tcGFyKShjb25zdCB2b2lkKixjb25zdCB2b2lkKikpOwoKZG91
YmxlIFBDSV9tb2RmKGRvdWJsZSB2YWx1ZSwgZG91YmxlICogaXB0cik7CiMgNDc0ICIuLi8uLi8u
Li9saWIvY2NscG9ydC5oIgogICAgICB0eXBlZGVmIGludCAoKlFTQ01QKShjb25zdCB2b2lkICos
IGNvbnN0IHZvaWQgKik7CiMgNDQgIi4uLy4uLy4uL2xpYi9jY2xiYXNlLmgiIDIKIyAxICIuLi8u
Li8uLi9saWIvY2NsdHlwZXMuaCIgMQojIDQzICIuLi8uLi8uLi9saWIvY2NsdHlwZXMuaCIKdHlw
ZWRlZiB1bnNpZ25lZCBjaGFyIFRCeXRlOwp0eXBlZGVmIGludCBUQm9vbDsKIyAxMDkgIi4uLy4u
Ly4uL2xpYi9jY2x0eXBlcy5oIgp0eXBlZGVmIGxvbmcgbG9uZyBpbnQ2NDsKdHlwZWRlZiB1bnNp
Z25lZCBsb25nIGxvbmcgdWludDY0OwoKCnR5cGVkZWYgaW50IGludDMyOwp0eXBlZGVmIHVuc2ln
bmVkIGludCB1aW50MzI7CgoKdHlwZWRlZiBzaG9ydCBpbnQxNjsKdHlwZWRlZiB1bnNpZ25lZCBz
aG9ydCB1aW50MTY7CgoKCgoKCnR5cGVkZWYgdm9pZCAoKlBDSUNvdW50ZXIpKGRvdWJsZSk7Cgp0
eXBlZGVmIHN0cnVjdCB7CiAgZG91YmxlIHg7CiAgZG91YmxlIHk7Cn0gVmVjdG9yX3Q7CiMgMjE5
ICIuLi8uLi8uLi9saWIvY2NsdHlwZXMuaCIKdHlwZWRlZiB2b2lkICgqVHJhbnNmb3JtRnVuYyko
dm9pZCAqLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlICosIGRvdWJsZSAqKTsKCnR5cGVkZWYgc3Ry
dWN0CnsKICAgIGRvdWJsZSB4OwogICAgZG91YmxlIHk7CiAgICBkb3VibGUgejsKfSBHREJWZXJ0
ZXg7CiMgNDUgIi4uLy4uLy4uL2xpYi9jY2xiYXNlLmgiIDIKIyAxICIuLi8uLi8uLi9saWIvY2Ns
dGFzay5oIiAxCiMgMjA1ICIuLi8uLi8uLi9saWIvY2NsdGFzay5oIgp0eXBlZGVmIHZvaWQgKCpJ
TVBFeGl0UHJvYykodm9pZCk7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgY2hhciBwcm9ncmFtX25hbWVb
MTZdOwogIGNoYXIgVGFza0Rlc2NbNDhdOwogIGludCBNb25pdG9yOwogIGludCB0dHl0eXBlOwog
IGNoYXIgU3lzTGFiZWxbMTldOwogIGNoYXIgTWlzc2luZ1s0NV07CiAgaW50IGZhdGFsX2Vycm9y
OwogIGludCBwcm1fcmVxdWlyZWQ7CiAgaW50IHBybV9wcmVzZW50OwoKCiAgbG9uZyBKQmxEaXI7
CiAgbG9uZyBKQmxEYXQ7CiAgbG9uZyBQcm1PcG47CiAgRklMRSAqUHJtRlA7CiAgdWludDMyICpK
RGF0OwogIHVuc2lnbmVkIGNoYXIgQ0RhdFsxNTM2XTsKCiAgY2hhciBQQ0lIb21lWzY0XTsKICBp
bnQgaW1wX2ZsYWdzOwoKICBpbnQgbWFpbl9hcmdjOwogIGNoYXIgKiptYWluX2FyZ3Y7CgogIGlu
dCBuRXhpdFByb2M7CiAgSU1QRXhpdFByb2MgKnBhcGZuRXhpdFByb2M7Cn0gSU1QSW5mb190OwoK
CmV4dGVybiBJTVBJbmZvX3QgSU1QSW5mbzsKZXh0ZXJuIGludCBJTVBJbml0aWFsaXplZDsKCgoK
CgoKZXh0ZXJuIGludCBpbXBfZXJybm87CmV4dGVybiBpbnQgaW1wX2VycnR5cGU7CmV4dGVybiBp
bnQgaW1wX3N5c19lcnJubzsKZXh0ZXJuIGNoYXIgKmltcF9lcnJzdHJpbmc7CiMgMjYyICIuLi8u
Li8uLi9saWIvY2NsdGFzay5oIgpleHRlcm4gRklMRSAqUmVwb3J0OwpleHRlcm4gaW50IERlYnVn
TW9kZTsKCgoKCgp2b2lkIERlYnVnKGNvbnN0IGNoYXIgKiwgLi4uICk7CnZvaWQgRGVidWdPdmVy
KGludCwgY29uc3QgY2hhciAqLCAuLi4gKTsKCnZvaWQgRGVidWdPTiggdm9pZCApOwp2b2lkIERl
YnVnT0ZGKCB2b2lkICk7CnZvaWQgRGVidWdSRVNUT1JFKCB2b2lkICk7CnZvaWQgSW5zdGFsbERl
YnVnSGFuZGxlciggdm9pZCAoKikoY29uc3QgY2hhciAqKSApOwppbnQgR2V0RGVidWdNb2RlKCB2
b2lkICk7CgoKCgoKdm9pZCBJTVBTdGF0dXMoIGNoYXIgKiwgY2hhciAqLCBjaGFyICosIGNoYXIg
KiwgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIGludCAqLCB2b2lk
ICoqLCBpbnQsIGNoYXIgKiogKTsKdm9pZCBJTVBJbml0KCBjaGFyICosIGludCwgaW50LCBjaGFy
ICoqICk7CgoKCgppbnQgSU1QU2VlUGFybSggY2hhciAqLCBpbnQsIGludCwgaW50ICk7CnZvaWQg
SU1QUmVhbEVuY29kZSggZG91YmxlLCBpbnQsIGNoYXIgKiApOwpjaGFyICogSU1QVGltZSggY2hh
ciAqLCBpbnQgKTsKaW50IElNUFRlcm1pbmFsKCBjaGFyICogKTsKaW50IElNUEF1dG9tYXRpY1Rl
cm0oIHZvaWQgKTsKdm9pZCBJTVBBdEV4aXQoIElNUEV4aXRQcm9jICk7ClRCb29sIElNUFJlZ2lz
dGVyZWRGb3JFeGl0KElNUEV4aXRQcm9jKTsKdm9pZCBJTVBJbnN0YWxsRXhpdEZ1bmMoIHZvaWQg
KCopKGludCkgKTsKaW50IElNUEZhdGFsKCBpbnQgKTsKaW50IElNUFJ1blRhc2soIGNoYXIgKiwg
Y2hhciAqLCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqKSggaW50LCBp
bnQgKSwgaW50ICogKTsKaW50IElNUEtpbGxUYXNrKCBpbnQgKTsKaW50IElNUEtpbGxUYXNrQnlO
YW1lKCBjb25zdCBjaGFyICogKTsKaW50IElNUEdldFBJRCggdm9pZCApOwpUQm9vbCBJTVBHZXRQ
SURCeU5hbWUoIGNvbnN0IGNoYXIgKiwgaW50ICogKTsKClRCb29sIElNUFNldENXRCggY29uc3Qg
Y2hhciAqICk7ClRCb29sIElNUFNldENXREZyb21GaWxlKCBjb25zdCBjaGFyKiBwc3pGaWxlICk7
Cgpjb25zdCBjaGFyICpJTVBHZXRDV0QoIHZvaWQgKTsKY29uc3QgY2hhciAqSU1QR2V0VXNlckhv
bWUoIHZvaWQgKTsKaW50IElNUE1rRGlyZWN0b3J5KCBjb25zdCBjaGFyICogKTsKClRCb29sIElN
UEludm9rZUZ1bmN0aW9uKCB2b2lkICosIGNvbnN0IGNoYXIgKiwgdm9pZCAqKiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCwgdm9pZCAqICk7CnZvaWQgKklN
UEdldFN5bWJvbCggY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiApOwoK
Y2hhciAqKiBJTVBHZXRBcmdzKCBpbnQgKiApOwpJTVBJbmZvX3QgKiBJTVBHZXRJbmZvKCB2b2lk
ICk7CmludCBJTVBTY3JQYWdlKCBGSUxFICosIGludCApOwoKaW50IElNUEhscFNlYXJjaCggY2hh
ciAqLCBjaGFyICogKTsKaW50IElNUEV4ZVNlYXJjaCggY2hhciAqLCBjaGFyICogKTsKaW50IElN
UEVhc1NlYXJjaCggY2hhciAqLCBjaGFyICogKTsKdm9pZCBJTVBHZXRTeXNOYW1lKCBjaGFyICoq
LCBjaGFyICoqICk7CmNoYXIgKiBJTVBHZXRNeUV4ZVBhdGgoIHZvaWQgKTsKaW50IElNUEdldE1l
bW9yeSggVEJvb2wgKiApOwpjaGFyICogSU1QRmluZEZpbGUoIGNvbnN0IGNoYXIgKiwgY29uc3Qg
Y2hhciAqICk7CnZvaWQgSU1QT3ZlcnJpZGVGaW5kRmlsZUZ1bmMoY2hhciAqKCopKGNvbnN0IGNo
YXIqLCBjb25zdCBjaGFyKikpOwpjaGFyICogSU1QRmluZENvbmZpZyggY29uc3QgY2hhciAqcHN6
RmlsZW5hbWUsIFRCb29sIGJSZWFkTW9kZSApOwoKdm9pZCBJbnN0YWxsVVNsZWVwSG9vayggdm9p
ZCAoKikoaW50KSApOwp2b2lkIFVTbGVlcCggaW50ICk7CmRvdWJsZSBHZXRNaWNyb1NlY29uZHMo
KTsKc2hvcnQgQVBhcnNlKGNoYXIgKik7Cgp2b2lkIElNUENvdW50ZXIoIGRvdWJsZSApOwp2b2lk
IElNUFNldEN1bXVsYXRpdmVQYXJtcyggZG91YmxlLCBkb3VibGUsIHZvaWQgKCopKCBkb3VibGUg
KSApOwp2b2lkIElNUEN1bXVsYXRpdmVDb3VudGVyKCBkb3VibGUgKTsKCnR5cGVkZWYgVEJvb2wg
KCpJTVBQcm9ncmVzc0Z1bmMpKCBkb3VibGUsIGNvbnN0IGNoYXIgKiwgdm9pZCAqICk7CgpUQm9v
bCBJTVBUZXJtUHJvZ3Jlc3NDb3VudGVyKCBkb3VibGUsIGNvbnN0IGNoYXIgKiwgdm9pZCAqKTsK
VEJvb2wgSU1QRHVtbXlQcm9ncmVzcyggZG91YmxlLCBjb25zdCBjaGFyICosIHZvaWQgKiApOwpQ
Q0lDb3VudGVyIElNUFByb2dyZXNzQ291bnRlckdhdGUoIElNUFByb2dyZXNzRnVuYywgY29uc3Qg
Y2hhciAqLHZvaWQgKiApOwoKdm9pZCAqSU1QQ3JlYXRlQ3VtdWxhdGl2ZVByb2dyZXNzKCBkb3Vi
bGUsIGRvdWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IElNUFByb2dyZXNzRnVuYywgdm9pZCAqICk7ClRCb29sIElNUEN1bXVsYXRpdmVQcm9ncmVzcygg
ZG91YmxlLCBjb25zdCBjaGFyICosIHZvaWQgKiApOwoKClRCb29sIE5DQ0VzdGFibGlzaExpbmtQ
Uk0oIHZvaWQgKTsKdm9pZCBOQ0NFc3RhYmxpc2hMaW5rKCBGSUxFICogKTsKVEJvb2wgTkNDUHJv
Z3Jlc3MoIGRvdWJsZSwgY29uc3QgY2hhciAqLCB2b2lkICogKTsKCnZvaWQgTkNTU2V0dXBNb25p
dG9yKCB2b2lkICk7ClRCb29sIE5DU1BvbGwoIGRvdWJsZSAqLCBjaGFyICoqICk7CnZvaWQgTkNT
SW5zdGFsbFBvbGxlciggSU1QUHJvZ3Jlc3NGdW5jLCB2b2lkICogKTsKVEJvb2wgTkNTR2V0VGFz
a0luZm8oIGludCAqLCBjaGFyICogKTsKClRCb29sIElzV2luMzJzKCB2b2lkICk7CgppbnQgRGVz
dHJveUNvbnNvbGUoIHZvaWQgKTsKdm9pZCBTaG93Q29uc29sZSggVEJvb2wgKTsKaW50IENyZWF0
ZUNvbnNvbGUoIHZvaWQgKTsKCgoKCgoKCnZvaWQgSU1QUmV0dXJuKHZvaWQpIF9fYXR0cmlidXRl
X18oKF9fdm9sYXRpbGUpKTsKdm9pZCBJTVBFeGl0KCBpbnQgKSBfX2F0dHJpYnV0ZV9fKChfX3Zv
bGF0aWxlKSk7CiMgMzgxICIuLi8uLi8uLi9saWIvY2NsdGFzay5oIgppbnQgRE5QQ2hlY2soY29u
c3QgY2hhciopOwppbnQgRE5QUGVlayhjb25zdCBjaGFyKik7CmNoYXIgKkROUEVycm9yTXNnKHZv
aWQpOwojIDQ0OSAiLi4vLi4vLi4vbGliL2NjbHRhc2suaCIKaW50IElNUF9Qcm90ZWN0KCB2b2lk
ICk7CnZvaWQgKiBJTVBQcm90ZWN0QnVmZmVyKCB2b2lkICk7CnZvaWQgSU1QVW5wcm90ZWN0KCB2
b2lkICk7CnZvaWQgSU1QVmlvbGF0aW9uKCBpbnQsIGludCwgY29uc3QgY2hhciAqICk7CmludCBJ
TVBHZXRQcm90ZWN0UmluZ0NvdW50KCB2b2lkICk7CgoKCgoKaW50IF9JTVBBc3NlcnQoIGNoYXIg
KiwgY2hhciAqLCBpbnQgKTsKdm9pZCBJTVBDaGVja0V4cHIoY2hhciAqLCBjaGFyICosIGludCk7
CiMgNDY5ICIuLi8uLi8uLi9saWIvY2NsdGFzay5oIgp2b2lkIElNUEVyckNoYXIoIGludCwgaW50
LCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiApOwp2b2lkIElNUEVyclJlYWwoIGludCwgaW50
LCBjb25zdCBjaGFyICosIGRvdWJsZSwgaW50ICk7CnZvaWQgSU1QRXJySW50KCBpbnQsIGludCwg
Y29uc3QgY2hhciAqLCBpbnQsIGludCApOwp2b2lkIElNUEVyckxvbmcoIGludCwgaW50LCBjb25z
dCBjaGFyICosIGxvbmcsIGludCApOwp2b2lkIElNUEVyck1zZyggaW50LCBpbnQgKTsKdm9pZCBJ
TVBSZXBvcnRFcnJvciggaW50LCBpbnQsIGNvbnN0IGNoYXIgKiwgVEJvb2wgKTsKaW50IElNUEVy
cm5vKCB2b2lkICk7CnZvaWQgSU1QU2V0RXJybm8oIGludCApOwpjb25zdCBjaGFyICogSU1QRXJy
U3RyaW5nKCB2b2lkICk7CnZvaWQgSW5zdGFsbElNUFdhcm5pbmdIYW5kbGVyKCB2b2lkICgqKShj
b25zdCBjaGFyICopICk7CnZvaWQgUG9wSU1QV2FybmluZ0hhbmRsZXIodm9pZCk7Cgp2b2lkIElN
UEVycm9yKCBpbnQsIGludCwgY29uc3QgY2hhciAqLCAuLi4gKTsKCnZvaWQgSU1QUHV0Q2hhcigg
Y2hhciAqLCBjaGFyICogKTsKdm9pZCBJTVBQdXRSZWFsKCBjaGFyICosIGZsb2F0ICosIGludCAp
OwppbnQgSU1QR2V0RGVmYXVsdCggY2hhciAqLCBjaGFyICosIGNoYXIgKixmbG9hdCAqLCBmbG9h
dCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAqICk7CmludCBJTVBPcGVu
KCBpbnQgKTsKY29uc3QgY2hhciAqSU1QR2V0UFJNRmlsZW5hbWUoIHZvaWQgKTsKVEJvb2wgSU1Q
QWNxdWlyZVBSTUZpbGUoY29uc3QgY2hhciogUFJNRmlsZW5hbWUsIFRCb29sIGJPdmVyd3JpdGUp
OwppbnQgSU1QQ3JlYXRlKCB2b2lkICk7CmludCBJTVBHZXROdW1lcmljKCBjaGFyICosIGNoYXIg
Kiwgdm9pZCAqLCBpbnQgKTsKaW50IElNUEdldENoYXIoIGNoYXIgKiwgY2hhciAqLCBpbnQgKTsK
aW50IElNUERlZlBhcm0oIGNoYXIgKiwgY2hhciAqLCBpbnQsIGRvdWJsZSwgZG91YmxlLCBkb3Vi
bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiApOwpUQm9vbCBJTVBVbmRlZmlu
ZVBhcm0oIGNvbnN0IGNoYXIgKiApOwoKY29uc3QgY2hhciAqSU1QR2V0TWFqb3JSZXYoIHZvaWQg
KTsKdm9pZCBJTVBQYXRoRXhwYW5kKCBjaGFyICogKTsKdm9pZCBJTVBTZXRQQ0lIb21lKCBjb25z
dCBjaGFyICogKTsKY29uc3QgY2hhciAqIElNUE11bmdlKCBjb25zdCBjaGFyICosIC4uLiApOwpp
bnQgQ0RQYXRoRXhwYW5kKCBjaGFyICosIGludCApOwpUQm9vbCBJbml0Q0RQYXRoRXhwYW5kKGNv
bnN0IGNoYXIgKik7CnZvaWQgaW1wbXNnYyggaW50LCBjaGFyICosIGNoYXIgKiApOwppbnQgaW1w
a2V5YyggY2hhciAqLCBjaGFyICogKTsKdm9pZCBpbXBleHJjKCBpbnQsIGludCwgaW50ICk7Cmlu
dCBpbXBzcmhjKCBjaGFyICosIGxvbmcgKiwgbG9uZyAqICk7CgoKdm9pZCBJTVBQYWdlVGl0bGUo
IEZJTEUgKiwgY2hhciAqLCBjaGFyICogKTsKdm9pZCBJTVBQYWdlKCBGSUxFICosIGludCApOwoK
dm9pZCBJTVBBc3luY0Rpc2FibGUoIHZvaWQgKTsKaW50IElNUEFzeW5jR2V0Q2hhciggaW50ICk7
CmludDY0IElNUEdldEZyZWVTcGFjZSggY29uc3QgY2hhciAqICk7CgpUQm9vbCBJTVBMb2NrRmls
ZSggRklMRSAqLCBUQm9vbCApOwpUQm9vbCBJTVBVbmxvY2tGaWxlKCBGSUxFICogKTsKY29uc3Qg
Y2hhciAqIElNUEdldEVudiggY29uc3QgY2hhciAqICk7CnZvaWQgSU1QU2V0RW52KCBjb25zdCBj
aGFyICpwc3pOYW1lLCBjb25zdCBjaGFyICpwc3pWYWx1ZSApOwpUQm9vbCBJTVBSZWFkRW52Rmls
ZShjb25zdCBjaGFyICpwc3pGaWxlKTsKY29uc3QgY2hhciAqIElNUEdldFBDSUhvbWVEaXIoY29u
c3QgY2hhciogcHN6VmFyaWFibGUpOwoKY2hhciAqSU1QUmVkaXJlY3RTdGRvdXQoIHZvaWQgKTsK
dm9pZCBJTVBSZXN0b3JlU3Rkb3V0KCB2b2lkICk7CmNoYXIgKklNUFJlZGlyZWN0U3Rkb3V0T25s
eSggdm9pZCApOwp2b2lkIElNUFJlc3RvcmVTdGRvdXRPbmx5KCB2b2lkICk7CmNoYXIgKklNUFJl
ZGlyZWN0U3RkZXJyKCB2b2lkICk7CnZvaWQgSU1QUmVzdG9yZVN0ZGVyciggdm9pZCApOwoKVEJv
b2wgSU1QQWRkR3JvdXBJY29uKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpUQm9v
bCBJTVBDcmVhdGVHcm91cCAoY29uc3QgY2hhciAqKTsKVEJvb2wgSU1QU2V0UmVnaXN0cnlQQ0ko
Y29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpUQm9vbCBJTVBTZXRSZWdpc3RyeShjb25zdCBj
aGFyICosIGNvbnN0IGNoYXIgKik7CmNvbnN0IGNoYXIgKiBJTVBHZXRSZWdpc3RyeVBDSShjb25z
dCBjaGFyICopOwpjb25zdCBjaGFyICogSU1QR2V0UmVnaXN0cnlQQ0lWZXIoY29uc3QgY2hhciAq
LCBjb25zdCBjaGFyICopOwpjb25zdCBjaGFyICogSU1QR2V0UmVnaXN0cnkoY29uc3QgY2hhciAq
KTsKY2hhciAqKklNUEdldFJlZ2lzdHJ5Q2hpbGRyZW4oIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh
ciAqICk7CnZvaWQgSU1QU2V0UmVnaXN0cnlQQ0lIYW5kbGVycyhjb25zdCBjaGFyICooKnBmbkdl
dFJlZykoY29uc3QgY2hhciAqKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUQm9vbCAoKnBmblNldFJlZ2lzdHJ5KShjb25zdCBjaGFyICosCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAqKSk7ClRCb29sIElNUEdldERhdGFiYXNlUGFybXMoY2hhciAqLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiosIGNoYXIgKiosIGNoYXIqKiwgY2hhciAq
KiwgY2hhciAqKiwgY2hhciAqKik7CiMgNzIzICIuLi8uLi8uLi9saWIvY2NsdGFzay5oIgppbnQg
ZnBWYWxpZGF0ZSggRklMRSAqICk7CmludCBmcDJ0eXBlKCBGSUxFICogKTsKaW50IGZwMmluZGV4
KCBGSUxFICogKTsKdm9pZCBmcFNFVGluZGV4KCBGSUxFICosIGludCApOwppbnQgZnAyZmQoIEZJ
TEUgKiApOwp2b2lkIGZwU0VUZmQoIEZJTEUgKiwgaW50ICk7CkZJTEUgKiBmcEFsbG9jKCBjb25z
dCBjaGFyICosIGludCwgRklMRSAqICk7CnZvaWQgZnBSZWFsbG9jKEZJTEUgKmZwLCBjb25zdCBj
aGFyICogZmlsZW5hbWUsIGludCBka3R5cGUpOwp2b2lkIGZwRGVhbGxvYyggRklMRSAqICk7CmNo
YXIgKiBmcDJmaWxlbmFtZSggRklMRSAqICk7CnZvaWQgZnBTRVRmbGFnKCBGSUxFICosIGludCAp
Owp2b2lkIGZwQ0xFQVJmbGFnKCBGSUxFICosIGludCApOwppbnQgZnBUZXN0RmxhZyggRklMRSAq
LCBpbnQgKTsKaW50IGZwUmVmZXJlbmNlKCBGSUxFICogKTsKaW50IGZwRGVyZWZlcmVuY2UoIEZJ
TEUgKiApOwppbnQgZnBHZXRSZWZDb3VudCggRklMRSAqICk7CmludCBmcER1bXBGaWxlcyggdm9p
ZCApOwpGSUxFICoqIGZwRmlsZUxpc3QoIHZvaWQgKTsKVEJvb2wgREtGaWxlc0xvdyggdm9pZCAp
OwoKaW50IFByb21vdGUoIEZJTEUgKiwgdm9pZCAqICk7CgoKCgppbnQgREtDaGVjayggY29uc3Qg
Y2hhciAqICk7CnZvaWQgREtHZXQoIEZJTEUgKiwgbG9uZywgbG9uZywgdm9pZCAqICk7CnZvaWQg
REtQdXQoIEZJTEUgKiwgbG9uZywgbG9uZywgdm9pZCAqICk7CkZJTEUgKiBES09wZW4oIGNvbnN0
IGNoYXIgKiwgaW50LCBjb25zdCBjaGFyICogKTsKdm9pZCBES0Nsb3NlKCBGSUxFICogKTsKY2hh
ciAqIERLTmFtZSggRklMRSAqICk7CnZvaWQgREtFcnJvciggRklMRSAqICk7CmludCBES1JlYWQo
IEZJTEUgKiwgdm9pZCAqLCBpbnQ2NCwgbG9uZyApOwpjaGFyICogREtSZWFkTGluZSggRklMRSAq
ICk7CmludCBES1dyaXRlKCBGSUxFICosIHZvaWQgKiwgaW50NjQsIGxvbmcgKTsKdW5zaWduZWQg
Y2hhciAqIERLTU1hcEluZm8oIEZJTEUgKiwgaW50ICogKTsKaW50IERLQWxsb2MoIEZJTEUgKiAp
Owpsb25nIERLU2l6ZSggY29uc3QgY2hhciAqICk7CnZvaWQgREtTeW5jKCBGSUxFICogKTsKdm9p
ZCBES0RlbGV0ZSggY29uc3QgY2hhciAqICk7CnZvaWQgREtSZW5hbWUoIGNvbnN0IGNoYXIgKiwg
Y29uc3QgY2hhciAqICk7CnZvaWQgREtUcnVuY2F0ZSggY29uc3QgY2hhciAqLCBpbnQgKTsKCmlu
dCBES0ZSZWFkKCB2b2lkICosIGxvbmcsIGxvbmcsIEZJTEUgKiApOwppbnQgREtGV3JpdGUoIHZv
aWQgKiwgbG9uZywgbG9uZywgRklMRSAqICk7CmludCBES0ZTZWVrKCBGSUxFICosIGludDY0LCBp
bnQgKTsKaW50IERLRlNlZWs2NCggRklMRSAqLCBpbnQ2NCwgaW50ICk7CmludDY0IERLRlRlbGwo
IEZJTEUgKiApOwoKCgoKaW50IERLUHJpbnRmKCBjb25zdCBjaGFyICosIC4uLiApOwppbnQgREtG
UHJpbnRmKCBGSUxFICosIGNvbnN0IGNoYXIgKiwgLi4uICk7CnZvaWQgSW5zdGFsbFByaW50Zkhh
bmRsZXIoIHZvaWQgKCpIYW5kbGVyRnVuY3Rpb24pKGNvbnN0IGNoYXIgKikpOwoKCgoKaW50IERL
Q29weShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmludCBES0NobW9kKGNvbnN0IGNoYXIg
KiwgaW50KTsKIyA3OTkgIi4uLy4uLy4uL2xpYi9jY2x0YXNrLmgiCkZJTEUgKkZIYW5kbGUyZnAo
IGludCApOwppbnQgZnAyRkhhbmRsZSggRklMRSAqICk7CmludCBBc3NpZ25GSGFuZGxlRm9yZnAo
IEZJTEUgKiwgaW50ICk7CnZvaWQgUmVtb3ZlRkhhbmRsZSggaW50ICk7CiMgODU5ICIuLi8uLi8u
Li9saWIvY2NsdGFzay5oIgp2b2lkIFNldEhNYWxsb2NEZWJ1ZyhpbnQgbkxldmVsKTsKdm9pZCAq
IF9ITWFsbG9jKHNpemVfdCBuU2l6ZSwgY2hhciAqcHN6RmlsZSwgaW50IG5MaW5lKTsKdm9pZCAq
IF9IQ2FsbG9jKHNpemVfdCBuRWxlbSwgc2l6ZV90IG5TaXplLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICpwc3pGaWxlLCBpbnQgbkxpbmUpOwpjaGFyICogX0hTdHJpbmcoY29uc3Qg
Y2hhciAqcHN6U3RyaW5nLCBjaGFyICpwc3pGaWxlLCBpbnQgbkxpbmUpOwp2b2lkIF9IRnJlZSgg
dm9pZCAqcEJsb2NrLCBjaGFyICpwc3pGaWxlLCBpbnQgbkxpbmUpOwp2b2lkICogX0hSZWFsbG9j
KHZvaWQgKnBCbG9jaywgc2l6ZV90IG5TaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqcHN6RmlsZSwgaW50IG5MaW5lKTsKdm9pZCBfSE1lbW9yeVRlc3QoY2hhciAqcHN6Rmls
ZSwgaW50IG5MaW5lKTsKdm9pZCBfSFJlcG9ydChjaGFyICpwc3pGaWxlLCBpbnQgbkxpbmUpOwp2
b2lkIEhNSGFuZGxlcihpbnQpOwp2b2lkIEhNRGVidWdMZXZlbChpbnQgbkxldmVsKTsKdm9pZCBf
SE1hcmsoY2hhciAqcHN6RmlsZSwgaW50IG5MaW5lKTsKaW50IF9IQ2hlY2tNYXJrKGNoYXIgKnBz
ekZpbGUsIGludCBuTGluZSk7ClRCb29sIF9IVGVzdEJsb2NrKHZvaWQgKnBCbG9jaywgY2hhciAq
cHN6RmlsZSwgaW50IG5MaW5lKTsKY2hhciAqIEhTUHJpbnRmKGNvbnN0IGNoYXIgKmZvcm1hdCwg
Li4uKTsKdm9pZCBfSFJlcG9ydEJ5RmlsZXMoY2hhciAqcHN6RmlsZSwgaW50IG5MaW5lKTsKdm9p
ZCBIUHJpbnRCbG9jayh2b2lkICpwQmxvY2spOwp2b2lkIF9ITWVtSW5mbyh2b2lkICosIGNoYXIg
KiwgaW50KTsKY2hhciAqIEhTdHJpbmdFeHBhbmQoY29uc3QgY2hhciAqcHN6SW5wdXQpOwpUQm9v
bCBDQ0xIU3RyaW5nRXhwYW5kVGVzdCggdm9pZCApOwojIDkyNyAiLi4vLi4vLi4vbGliL2NjbHRh
c2suaCIKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVk
ZS9zeXMvc3RhdC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIv
dXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVz
LmgiIDEgMwojIDI5ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMiAzCgoKCiMgMSAiL3Vzci9p
bmNsdWRlL3RpbWUuaCIgMSAzCiMgMzMgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAyIDMKIyA5
NiAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKZXh0ZXJuICJDIiB7CgojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL3N0YXQuaCIgMSAzCiMgMzYgIi91c3IvaW5jbHVkZS9iaXRzL3N0YXQuaCIgMwpz
dHJ1Y3Qgc3RhdAogIHsKICAgIF9fZGV2X3Qgc3RfZGV2OwogICAgdW5zaWduZWQgc2hvcnQgaW50
IF9fcGFkMTsKCiAgICBfX2lub190IHN0X2lubzsKCgoKICAgIF9fbW9kZV90IHN0X21vZGU7CiAg
ICBfX25saW5rX3Qgc3Rfbmxpbms7CiAgICBfX3VpZF90IHN0X3VpZDsKICAgIF9fZ2lkX3Qgc3Rf
Z2lkOwogICAgX19kZXZfdCBzdF9yZGV2OwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9fcGFkMjsK
CiAgICBfX29mZl90IHN0X3NpemU7CgoKCiAgICBfX2Jsa3NpemVfdCBzdF9ibGtzaXplOwoKCiAg
ICBfX2Jsa2NudF90IHN0X2Jsb2NrczsKCgoKICAgIF9fdGltZV90IHN0X2F0aW1lOwogICAgdW5z
aWduZWQgbG9uZyBpbnQgX191bnVzZWQxOwogICAgX190aW1lX3Qgc3RfbXRpbWU7CiAgICB1bnNp
Z25lZCBsb25nIGludCBfX3VudXNlZDI7CiAgICBfX3RpbWVfdCBzdF9jdGltZTsKICAgIHVuc2ln
bmVkIGxvbmcgaW50IF9fdW51c2VkMzsKCiAgICB1bnNpZ25lZCBsb25nIGludCBfX3VudXNlZDQ7
CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3VudXNlZDU7CgoKCiAgfTsKCgpzdHJ1Y3Qgc3RhdDY0
CiAgewogICAgX19kZXZfdCBzdF9kZXY7CiAgICB1bnNpZ25lZCBpbnQgX19wYWQxOwoKICAgIF9f
aW5vX3QgX19zdF9pbm87CiAgICBfX21vZGVfdCBzdF9tb2RlOwogICAgX19ubGlua190IHN0X25s
aW5rOwogICAgX191aWRfdCBzdF91aWQ7CiAgICBfX2dpZF90IHN0X2dpZDsKICAgIF9fZGV2X3Qg
c3RfcmRldjsKICAgIHVuc2lnbmVkIGludCBfX3BhZDI7CiAgICBfX29mZjY0X3Qgc3Rfc2l6ZTsK
ICAgIF9fYmxrc2l6ZV90IHN0X2Jsa3NpemU7CgogICAgX19ibGtjbnQ2NF90IHN0X2Jsb2NrczsK
ICAgIF9fdGltZV90IHN0X2F0aW1lOwogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQxOwog
ICAgX190aW1lX3Qgc3RfbXRpbWU7CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3VudXNlZDI7CiAg
ICBfX3RpbWVfdCBzdF9jdGltZTsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMzsKICAg
IF9faW5vNjRfdCBzdF9pbm87CiAgfTsKIyA5OSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDIg
MwojIDIwMCAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKZXh0ZXJuIGludCBzdGF0IChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlLAogICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0
ICpfX3Jlc3RyaWN0IF9fYnVmKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBmc3RhdCAoaW50IF9f
ZmQsIHN0cnVjdCBzdGF0ICpfX2J1ZikgdGhyb3cgKCk7CiMgMjE5ICIvdXNyL2luY2x1ZGUvc3lz
L3N0YXQuaCIgMwpleHRlcm4gaW50IHN0YXQ2NCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
ZmlsZSwKICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0NjQgKl9fcmVzdHJpY3QgX19idWYp
IHRocm93ICgpOwpleHRlcm4gaW50IGZzdGF0NjQgKGludCBfX2ZkLCBzdHJ1Y3Qgc3RhdDY0ICpf
X2J1ZikgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgbHN0YXQgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2ZpbGUsCiAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0ICpfX3Jlc3RyaWN0
IF9fYnVmKSB0aHJvdyAoKTsKIyAyNDEgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAzCmV4dGVy
biBpbnQgbHN0YXQ2NCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZSwKICAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3Qgc3RhdDY0ICpfX3Jlc3RyaWN0IF9fYnVmKSB0aHJvdyAoKTsKCgoK
CgoKZXh0ZXJuIGludCBjaG1vZCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fbW9kZV90IF9fbW9k
ZSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgZmNobW9kIChpbnQgX19mZCwgX19tb2RlX3QgX19t
b2RlKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gX19tb2RlX3QgdW1hc2sgKF9fbW9kZV90IF9fbWFz
aykgdGhyb3cgKCk7CgoKCgpleHRlcm4gX19tb2RlX3QgZ2V0dW1hc2sgKHZvaWQpIHRocm93ICgp
OwoKCgpleHRlcm4gaW50IG1rZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19t
b2RlKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IG1rbm9kIChfX2NvbnN0IGNoYXIgKl9fcGF0
aCwgX19tb2RlX3QgX19tb2RlLCBfX2Rldl90IF9fZGV2KQogICAgIHRocm93ICgpOwoKCgoKZXh0
ZXJuIGludCBta2ZpZm8gKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX21vZGVfdCBfX21vZGUpIHRo
cm93ICgpOwojIDMwNiAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKZXh0ZXJuIGludCBfX2Z4
c3RhdCAoaW50IF9fdmVyLCBpbnQgX19maWxkZXMsIHN0cnVjdCBzdGF0ICpfX3N0YXRfYnVmKSB0
aHJvdyAoKTsKZXh0ZXJuIGludCBfX3hzdGF0IChpbnQgX192ZXIsIF9fY29uc3QgY2hhciAqX19m
aWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCAqX19zdGF0X2J1ZikgdGhy
b3cgKCk7CmV4dGVybiBpbnQgX19seHN0YXQgKGludCBfX3ZlciwgX19jb25zdCBjaGFyICpfX2Zp
bGVuYW1lLAogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCAqX19zdGF0X2J1ZikgdGhy
b3cgKCk7CiMgMzMwICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMwpleHRlcm4gaW50IF9fZnhz
dGF0NjQgKGludCBfX3ZlciwgaW50IF9fZmlsZGVzLCBzdHJ1Y3Qgc3RhdDY0ICpfX3N0YXRfYnVm
KQogICAgIHRocm93ICgpOwpleHRlcm4gaW50IF9feHN0YXQ2NCAoaW50IF9fdmVyLCBfX2NvbnN0
IGNoYXIgKl9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdDY0ICpf
X3N0YXRfYnVmKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfX2x4c3RhdDY0IChpbnQgX192ZXIsIF9f
Y29uc3QgY2hhciAqX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3Rh
dDY0ICpfX3N0YXRfYnVmKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgX194bWtub2QgKGludCBfX3Zl
ciwgX19jb25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSwKICAgICAgICAgICAgICAg
ICAgICAgX19kZXZfdCAqX19kZXYpIHRocm93ICgpOwoKCgoKZXh0ZXJuIF9faW5saW5lX18gaW50
IHN0YXQgKF9fY29uc3QgY2hhciAqX19wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RydWN0IHN0YXQgKl9fc3RhdGJ1ZikgdGhyb3cgKCkKewogIHJldHVybiBfX3hzdGF0ICgzLCBf
X3BhdGgsIF9fc3RhdGJ1Zik7Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgbHN0YXQgKF9fY29u
c3QgY2hhciAqX19wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0
ICpfX3N0YXRidWYpIHRocm93ICgpCnsKICByZXR1cm4gX19seHN0YXQgKDMsIF9fcGF0aCwgX19z
dGF0YnVmKTsKfQoKCmV4dGVybiBfX2lubGluZV9fIGludCBmc3RhdCAoaW50IF9fZmQsIHN0cnVj
dCBzdGF0ICpfX3N0YXRidWYpIHRocm93ICgpCnsKICByZXR1cm4gX19meHN0YXQgKDMsIF9fZmQs
IF9fc3RhdGJ1Zik7Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgbWtub2QgKF9fY29uc3QgY2hh
ciAqX19wYXRoLCBfX21vZGVfdCBfX21vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X19kZXZfdCBfX2RldikgdGhyb3cgKCkKewogIHJldHVybiBfX3hta25vZCAoMSwgX19wYXRoLCBf
X21vZGUsICZfX2Rldik7Cn0KCgoKCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgc3RhdDY0IChfX2Nv
bnN0IGNoYXIgKl9fcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0
YXQ2NCAqX19zdGF0YnVmKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9feHN0YXQ2NCAoMywgX19wYXRo
LCBfX3N0YXRidWYpOwp9CgoKZXh0ZXJuIF9faW5saW5lX18gaW50IGxzdGF0NjQgKF9fY29uc3Qg
Y2hhciAqX19wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQ2
NCAqX19zdGF0YnVmKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9fbHhzdGF0NjQgKDMsIF9fcGF0aCwg
X19zdGF0YnVmKTsKfQoKCmV4dGVybiBfX2lubGluZV9fIGludCBmc3RhdDY0IChpbnQgX19mZCwg
c3RydWN0IHN0YXQ2NCAqX19zdGF0YnVmKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9fZnhzdGF0NjQg
KDMsIF9fZmQsIF9fc3RhdGJ1Zik7Cn0KCgoKCn0KIyA5MjggIi4uLy4uLy4uL2xpYi9jY2x0YXNr
LmgiIDIKCgoKCgoKCnR5cGVkZWYgc3RydWN0IHN0YXQgREtTdGF0X3Q7CiMgOTU4ICIuLi8uLi8u
Li9saWIvY2NsdGFzay5oIgppbnQgREtTdGF0KCBjb25zdCBjaGFyICosIERLU3RhdF90ICogKTsK
CgoKCmNoYXIgKiogSU1QRGlyZWN0b3J5KCBjb25zdCBjaGFyICogKTsKaW50IElNUFJlZ2V4KCBj
b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgVEJvb2wgKTsKVEJvb2wgSU1QRmlsZW5hbWVDb21w
YXJlKCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiApOwpjb25zdCBjaGFyICogSU1QVGVtcE5h
bWUodm9pZCk7CmNvbnN0IGNoYXIgKiBJTVBSZWxUZW1wTmFtZSggY29uc3QgY2hhciAqcHN6TG9j
YXRpb24gKTsKY29uc3QgY2hhciAqIElNUFJlbFRlbXBOYW1lRXh0KCBjb25zdCBjaGFyICpwc3pM
b2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAqcHN6RXh0KTsKClRCb29sIElNUElzRGlyZWN0b3J5KCBjb25zdCBjaGFyKiBwc3pEaXJl
Y3RvcnkgKTsKVEJvb2wgSU1QSXNEaXJlY3RvcnlXcml0YWJsZSggY29uc3QgY2hhciogcHN6RGly
ZWN0b3J5ICk7CmNvbnN0IGNoYXIgKiBJTVBHZXRUZW1wRGlyKCB2b2lkICk7CgoKCgppbnQgSU1Q
U2lnbmFsKCBpbnQsIHZvaWQgKCopKHZvaWQpICk7CnZvaWQgSU1QU2lnbmFsSWdub3JlKCB2b2lk
ICk7CiMgMTAwMSAiLi4vLi4vLi4vbGliL2NjbHRhc2suaCIKVEJvb2wgTkVUSW5pdCggdm9pZCAp
Owp2b2lkIE5FVENsb3NlKCBGSUxFICogKTsKaW50IE5FVFNlbmQoIEZJTEUgKiwgdm9pZCAqLCBp
bnQgKTsKaW50IE5FVEFjY2VwdCggRklMRSAqLCB2b2lkICosIGludCApOwpGSUxFICpORVRPcGVu
KCBjb25zdCBjaGFyICosIGludDMyLCBpbnQzMiApOwpGSUxFICpORVRBZHZlcnRpc2UoIGNvbnN0
IGNoYXIgKiwgaW50MzIgKiwgaW50MzIgKiApOwpGSUxFICpORVRTZWxlY3QoIEZJTEUgKiwgaW50
ICk7CmxvbmcgTkVURmxhZ3MoIEZJTEUgKiApOwp2b2lkIE5FVFNldEZsYWdzKCBGSUxFICosIGxv
bmcgKTsKdm9pZCBORVRGbHVzaCggRklMRSAqICk7CmNvbnN0IGNoYXIgKk5FVEhvc3RuYW1lKCB2
b2lkICk7ClRCb29sIE5FVFBlbmRpbmdSZWFkIChGSUxFKiBmcCwgaW50IG1zZWNzKTsKIyAxMDIz
ICIuLi8uLi8uLi9saWIvY2NsdGFzay5oIgp0eXBlZGVmIGVudW0geGRyX3R5cGUgewogIFhEUlZv
aWQgPSAwLAogIFhEUkludDMyID0gMSwKICBYRFJGbG9hdCA9IDIsCiAgWERSRG91YmxlID0gMywK
ICBYRFJTdHJpbmcgPSA0LAogIFhEUkJ5dGUgPSA1LAogIFhEUkludDMyQ291bnRlZCA9IDYsCiAg
WERSRmxvYXRDb3VudGVkID0gNywKICBYRFJEb3VibGVDb3VudGVkID0gOCwKICBYRFJCeXRlQ291
bnRlZCA9IDkKfSBYRFJUeXBlOwoKaW50IFhEUlNlbmQoIEZJTEUgKiwgWERSVHlwZSwgaW50LCB2
b2lkICogKTsKaW50IFhEUkFjY2VwdCggRklMRSAqLCBYRFJUeXBlLCBpbnQsIHZvaWQgKiApOwoj
IDEwNDcgIi4uLy4uLy4uL2xpYi9jY2x0YXNrLmgiCmludCBSUENBY2NlcHQoIEZJTEUgKiwgaW50
ICogKTsKaW50IFJQQ1NlbmQoIEZJTEUgKiwgaW50LCBpbnQgKTsKCgoKCgoKCnR5cGVkZWYgVEJv
b2wgKCpJTVBEZGVDQikoIHZvaWQgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGNvbnN0
IGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqKiwgaW50
ICogKTsKdm9pZCAqSU1QRGRlQ29ubmVjdCggY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICogKTsK
dm9pZCBJTVBEZGVEaXNjb25uZWN0KCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiApOwpUQm9v
bCBJTVBEZGVFeGVjdXRlKCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq
ICk7ClRCb29sIElNUERkZVJlcXVlc3QoIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25z
dCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoq
LCBpbnQgKiApOwp2b2lkIElNUERkZVJlZ2lzdGVyU2VydmljZSggY29uc3QgY2hhciAqLCBjb25z
dCBjaGFyICosIElNUERkZUNCICk7CgoKClRCb29sIElNUFN0YXJ0KGludCwgY2hhciAqLCBjaGFy
ICosIGNoYXIqKTsKVEJvb2wgSU1QUHJpbnQoaW50LCBjaGFyICosIGNoYXIgKik7CiMgNDYgIi4u
Ly4uLy4uL2xpYi9jY2xiYXNlLmgiIDIKCn0KIyA0NiAibHNjX3N0ci5oIiAyCgoKZXh0ZXJuICJD
IiB7CiMgNzEgImxzY19zdHIuaCIKdHlwZWRlZiBlbnVtCnsKICAgIENIUlVBYWN1dGUsCiAgICBD
SFJVQWNpcmN1bWZsZXgsCiAgICBDSFJVQWRpZXJlc2lzLAogICAgQ0hSVUFHcmF2ZSwKICAgIENI
UkxBYWN1dGUsCiAgICBDSFJMQWNpcmN1bWZsZXgsCiAgICBDSFJMQWRpZXJlc2lzLAogICAgQ0hS
TEFHcmF2ZSwKCiAgICBDSFJVQ2NlZGlsbGEsCiAgICBDSFJMQ2NlZGlsbGEsCgogICAgQ0hSVUVh
Y3V0ZSwKICAgIENIUlVFY2lyY3VtZmxleCwKICAgIENIUlVFZGllcmVzaXMsCiAgICBDSFJVRWdy
YXZlLAogICAgQ0hSTEVhY3V0ZSwKICAgIENIUkxFY2lyY3VtZmxleCwKICAgIENIUkxFZGllcmVz
aXMsCiAgICBDSFJMRWdyYXZlLAoKICAgIENIUlVJYWN1dGUsCiAgICBDSFJVSWNpcmN1bWZsZXgs
CiAgICBDSFJVSWRpZXJlc2lzLAogICAgQ0hSVUlncmF2ZSwKICAgIENIUkxJYWN1dGUsCiAgICBD
SFJMSWNpcmN1bWZsZXgsCiAgICBDSFJMSWRpZXJlc2lzLAogICAgQ0hSTElncmF2ZSwKCiAgICBD
SFJVT2FjdXRlLAogICAgQ0hSVU9jaXJjdW1mbGV4LAogICAgQ0hSVU9kaWVyZXNpcywKICAgIENI
UlVPZ3JhdmUsCiAgICBDSFJMT2FjdXRlLAogICAgQ0hSTE9jaXJjdW1mbGV4LAogICAgQ0hSTE9k
aWVyZXNpcywKICAgIENIUkxPZ3JhdmUsCgogICAgQ0hSVVVhY3V0ZSwKICAgIENIUlVVY2lyY3Vt
ZmxleCwKICAgIENIUlVVZGllcmVzaXMsCiAgICBDSFJVVWdyYXZlLAogICAgQ0hSTFVhY3V0ZSwK
ICAgIENIUkxVY2lyY3VtZmxleCwKICAgIENIUkxVZGllcmVzaXMsCiAgICBDSFJMVWdyYXZlLAoK
ICAgIENIUkRlZ3JlZSwKCiAgICBDSFJMYXN0RW50cnkKfUNIUkNoYXJOYW1lOwoKCgp0eXBlZGVm
IGVudW0gewogICAgU01fRklSU1QgPSAtMSwKICAgIFNNX0lTT19MQVRJTl8xX1NUQU5EQVJEX1NP
UlQsCiAgICBTTV9JU09fTEFUSU5fMV9BQ0NFTlRfU09SVCwKICAgIFNNX0xBU1QKICAgIH0gZVNv
cnRpbmdNYXBUeXBlOwoKCnVuc2lnbmVkIGNoYXIgR2V0RXh0ZW5kZWRDaGFyKCBDSFJDaGFyTmFt
ZSBlQ2hhck5hbWUgKTsKVEJvb2wgU01TZXRTb3J0aW5nTWFwKGVTb3J0aW5nTWFwVHlwZSBlU0NQ
KTsKZVNvcnRpbmdNYXBUeXBlIFNNR2V0U29ydGluZ01hcCh2b2lkKTsKCgoKCgpjaGFyICpMU0NJ
dG9hKGludCBuTnVtYmVyKTsKVEJvb2wgTFNDSXNFbXB0eVN0cmluZyhjb25zdCBjaGFyKiBwc3pT
dHIpOwpUQm9vbCBMU0NJc0luU3RyaW5nTGlzdChjaGFyICoqcGFwc3pTdHJpbmdMaXN0LCBjaGFy
ICpwc3pTdHJpbmcpOwoKY2hhciAqTFNDUmV2ZXJzZVN0cmluZyhjaGFyICogcHN6U3RyLCBpbnQg
bkNvdW50KTsKY2hhciAqTFNDU3RyaW5nVG9VcHBlcihjaGFyICogcHN6U3RyKTsKY2hhciAqTFND
U3RyaW5nVG9Mb3dlcihjaGFyICogcHN6U3RyKTsKY2hhciAqTFNDRWF0V1NGcm9udChjaGFyICog
cHN6U3RyKTsKY2hhciAqTFNDRWF0V1NCYWNrKGNoYXIgKiBwc3pTdHIpOwpjaGFyICpMU0NFYXRX
UyhjaGFyICogcHN6U3RyKTsKY2hhciAqTFNDRWF0QWxsV1MoY2hhciAqcHN6U3RyaW5nKTsKY2hh
ciAqTFNDRWF0QWxsQ2hhck1hdGNoaW5nKGNoYXIgKnBzelN0cmluZywgaW50IGNDaGFyVG9SZW1v
dmUpOwpjaGFyICpXaGl0ZVNwYWNlVG9PbmVTcGFjZShjaGFyICogcHN6U3RyKTsKCmNoYXIgKkxT
Q0dldEZpcnN0Tm9uV2hpdGVTcGFjZShjb25zdCBjaGFyKiBwc3pTdHIpOwoKCmNoYXIgKkxTQ1N0
clRvayhjaGFyKiBwc3pTdHIsIGNvbnN0IGNoYXIqIHBzelRva3MpOwpjaGFyICpMU0NTdHJwYnJr
KHJlZ2lzdGVyIGNvbnN0IGNoYXIqIHBzelN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVnaXN0ZXIgY29uc3QgY2hhciogcHN6VG9rcyk7CmNoYXIgKkxTQ1N0ckNocihyZWdpc3RlciBj
b25zdCBjaGFyKiBwc3pUb2tzLAogICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNv
bnN0IGNoYXIgdUNoYXIpOwoKdm9pZCBMU0NTcGxpdEF1eExpbmUoY2hhciAqcHN6QXV4TGluZSwg
Y2hhciAqKnBwc3pBMSwgY2hhciAqKnBwc3pBMik7CgoKaW50IFNNU3RyaW5nQ29tcGFyZShjb25z
dCBjaGFyKiBwc3pTdHIxLCBjb25zdCBjaGFyKiBwc3pTdHIyKTsKaW50IFNNU3RyaW5nQ2FzZUNv
bXBhcmUoY29uc3QgY2hhciogcHN6U3RyMSwgY29uc3QgY2hhciogcHN6U3RyMik7CgppbnQgU01T
dHJpbmdOQ29tcGFyZShjb25zdCBjaGFyKiBwc3pTdHIxLCBjb25zdCBjaGFyKiBwc3pTdHIyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5DaGFycyk7CmludCBTTVN0cmluZ05D
YXNlQ29tcGFyZShjb25zdCBjaGFyKiBwc3pTdHIxLCBjb25zdCBjaGFyKiBwc3pTdHIyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuQ2hhcnMpOwoKaW50IFNNU3BlY2lh
bFN0cmluZ0NvbXBhcmUoY29uc3QgY2hhciogcHN6U3RyMSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHBzelN0cjIpOwoKaW50IFNNU3BlY2lhbFN0cmlu
Z0Nhc2VDb21wYXJlKGNvbnN0IGNoYXIqIHBzelN0cjEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcHN6U3RyMik7CgppbnQgTFNDU3BlY2lhbFN0
ckNtcCggY29uc3QgY2hhciogcHN6UzEsIGNvbnN0IGNoYXIqIHBzelMyICk7CmludCBMU0NTcGVj
aWFsU3RyQ2FzZUNtcCggY29uc3QgY2hhciogcHN6UzEsIGNvbnN0IGNoYXIqIHBzelMyICk7CgoK
fQojIDI4NiAibHNjbWlzYy5oIiAyCiMgMSAiLi4vLi4vLi4vbGliL2dkYi5oIiAxCiMgMzQ1ICIu
Li8uLi8uLi9saWIvZ2RiLmgiCiMgMSAiLi4vLi4vLi4vbGliL2NjbGNvbnYuaCIgMQojIDc1ICIu
Li8uLi8uLi9saWIvY2NsY29udi5oIgojIDEgIi4uLy4uLy4uL2xpYi9jY2xiYXNlLmgiIDEKIyA3
NiAiLi4vLi4vLi4vbGliL2NjbGNvbnYuaCIgMgoKZXh0ZXJuICJDIiB7CiMgOTEgIi4uLy4uLy4u
L2xpYi9jY2xjb252LmgiCmNoYXIgKiBTdHJpcFdoaXRlU3BhY2UoIGNoYXIgKiApOwppbnQgTmV4
dE11bHQoIGludCwgaW50ICk7CnZvaWQgU3RyVG9BcmcoIGNoYXIgKiwgY2hhciAqLCBjaGFyICoq
LCBpbnQgKik7CmNoYXIgKiBNa05hbWUoIGNvbnN0IGNoYXIgKiwgLi4uICk7CgpjaGFyICogTWtT
dHJpbmcoIGNoYXIgKiApOwp2b2lkIFByaW50RmxvYXQoIGNoYXIgKiwgY2hhciAqLCBkb3VibGUg
KTsKdm9pZCBQcmludERvdWJsZSggY2hhciAqLCBjaGFyICosIGRvdWJsZSApOwpjb25zdCBjaGFy
ICogRm9ybWF0RG91YmxlKCBkb3VibGUsIGNoYXIgKiApOwoKdm9pZCBQcmludEludCggY2hhciAq
LCBjaGFyICosIGxvbmcgKTsKdm9pZCBUZXh0RmllbGRGaWxsKCBjaGFyICosIGNvbnN0IGNoYXIg
KiwgaW50ICk7CgoKCgp2b2lkIFVDYXNlU3RyaW5nKCBjaGFyICogKTsKdm9pZCBMQ2FzZVN0cmlu
ZyggY2hhciAqICk7CmRvdWJsZSBTY2FuRG91YmxlKCBjaGFyICosIGludCApOwpsb25nIFNjYW5J
bnQoIGNoYXIgKiwgaW50ICk7CnZvaWQgRmlsZU5hbWUoIGNoYXIgKiwgY2hhciAqICk7CnZvaWQg
Qml0Q291bnQodW5zaWduZWQgY2hhciAqLCBpbnQsIGludCAqKTsKCmRvdWJsZSBJTVBSYW5kb20o
dm9pZCk7CmludCBJTVBJbml0UmFuZG9tKGludCk7CmludCBJTVBSYW5kSW50KHZvaWQpOwpkb3Vi
bGUgSU1QUmFuZE5vcm0oZG91YmxlKTsKCmNoYXIgKiogR2V0TmljZUdyYXBoTGFiZWxzKCBkb3Vi
bGUsIGRvdWJsZSwgaW50LCBpbnQgKik7CgoKCgp2b2lkIE1hdHJpeEludiggZG91YmxlICosIGlu
dCwgZG91YmxlICogKTsKdm9pZCBUcmlhbmd1bGFyRGVjb21wb3NlKGludCwgZG91YmxlICopOwp2
b2lkIFByaW50TWF0cml4KGNoYXIgKm5hbWUsIGludCBuLCBpbnQgbSwgZG91YmxlICptYXQpOwpk
b3VibGUgUG93SW50IChkb3VibGUsIGludCk7CgoKCgoKdm9pZCBNTTNfTXVsdChkb3VibGUgKm1h
dDEsIGRvdWJsZSAqbWF0MiwgZG91YmxlICptYXQzKTsKdm9pZCBNVjNfTXVsdChkb3VibGUgKm1h
dCwgZG91YmxlICp2ZWMxLCBkb3VibGUgKnZlYzIpOwp2b2lkIE10VjNfTXVsdChkb3VibGUgKm1h
dCwgZG91YmxlICp2ZWMxLCBkb3VibGUgKnZlYzIpOwpkb3VibGUgVmVjTGVuZ3RoKGRvdWJsZSAq
dmVjKTsKdm9pZCBWZWNOb3JtYWxpemUoZG91YmxlICp2ZWMpOwp2b2lkIFZlY0RpZmYoZG91Ymxl
ICp2ZWMxLCBkb3VibGUgKnZlYzIsIGRvdWJsZSAqdmVjMyk7CnZvaWQgVmVjU2NhbGUoZG91Ymxl
IHNjYWxlLCBkb3VibGUgKnZlYzEsIGRvdWJsZSAqdmVjMik7CmRvdWJsZSBWZWNEaXN0YW5jZShk
b3VibGUgKnZlYzEsIGRvdWJsZSAqdmVjMik7CmRvdWJsZSBEb3RQcm9kdWN0KGRvdWJsZSAqdmVj
MSwgZG91YmxlICp2ZWMyKTsKdm9pZCBDcm9zc1Byb2R1Y3QoZG91YmxlICp2ZWMxLCBkb3VibGUg
KnZlYzIsIGRvdWJsZSAqdmVjMyk7CmRvdWJsZSBwb2x5dmFsKGRvdWJsZSAqY29lZiwgaW50IG5P
cmRlciwgZG91YmxlIHgpOwoKCgoKCmNoYXIgKiogUmVhZEF1eEZpbGUoIGNvbnN0IGNoYXIgKiAp
OwpjaGFyICogRmV0Y2hBdXhFbnRyeSggY2hhciAqKiwgY29uc3QgY2hhciAqICk7CmNvbnN0IGNo
YXIgKiBGZXRjaE5leHRBdXhFbnRyeSggY2hhciAqKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFy
ICogKTsKY2hhciAqKiBTZXRBdXhFbnRyeSggY2hhciAqKiwgY29uc3QgY2hhciAqLCBjb25zdCBj
aGFyICogKTsKY2hhciAqKiBBZGRBdXhFbnRyeSggY2hhciAqKiwgY29uc3QgY2hhciAqLCBjb25z
dCBjaGFyICogKTsKY2hhciAqKiBEZWxldGVBdXhFbnRyaWVzKCBjaGFyICoqLCBjb25zdCBjaGFy
ICosIGNvbnN0IGNoYXIgKiAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRCb29sKTsKdm9pZCBXcml0ZUF1eEZpbGUoIGNvbnN0IGNoYXIgKiwgY2hhciAqKiApOwppbnQg
RmV0Y2hBdXhGaWVsZE5hbWVMZW5ndGgoIGNvbnN0IGNoYXIgKiApOwpUQm9vbCBQYXJzZUF1eEVu
dHJ5KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKiwgY29uc3QgY2hhciAqKik7CmNoYXIgKiBC
dWlsZEF1eEVudHJ5KCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiApOwoKY2hhciAqKiBEZWxl
dGVTdHJpbmdMaXN0RW50cnkoIGNoYXIgKiosIGludCApOwpUQm9vbCBTdHJpbmdMaXN0c0VxdWFs
KCBjaGFyICoqLCBjaGFyICoqICk7CmNoYXIgKiogRHVwbGljYXRlU3RyaW5nTGlzdCggY2hhciAq
KiApOwppbnQgQ291bnRTdHJpbmdMaXN0KCBjaGFyICoqICk7CnZvaWQgRGVzdHJveVN0cmluZ0xp
c3QoIGNoYXIgKiogKTsKY2hhciAqKiBBZGRTdHJpbmdMaXN0KCBjaGFyICoqLCBjaGFyICoqICk7
CmNoYXIgKiogQWRkU3RyaW5nVG9MaXN0KCBjaGFyICoqLCBjb25zdCBjaGFyICogKTsKaW50IEZp
bmRFbnRyeUluU3RyaW5nTGlzdCggY2hhciAqKiwgY29uc3QgY2hhciAqICk7CmludCBGaW5kUmVn
ZXhJblN0cmluZ0xpc3QoIGNoYXIgKiosIGNvbnN0IGNoYXIgKiApOwppbnQgUmVwbGFjZVN0cmlu
Z0luTGlzdCggY2hhciAqKiwgY29uc3QgY2hhciAqLCBpbnQgKTsKY2hhciAqKiBUZXh0RmlsZVRv
U3RyaW5nTGlzdCggY29uc3QgY2hhciAqICk7ClRCb29sIFN0cmluZ0xpc3RUb0ZpbGUoIGNoYXIg
KiosIGNvbnN0IGNoYXIgKiApOwpjaGFyICpTdHJpbmdMaXN0VG9CdWZmZXIoIGNoYXIgKiogcGFw
c3pTdHJpbmdMaXN0ICk7CmNoYXIgKipCdWZmZXJUb1N0cmluZ0xpc3QoIGNvbnN0IGNoYXIqIHBz
ekJ1ZmZlciApOwpjaGFyICoqIFRva2VuaXplKCBjb25zdCBjaGFyICogKTsKY2hhciAqKiBUb2tl
bml6ZURlbGltKCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiApOwpjaGFyICoqIFRva2VuaXpl
RGVsaW0yKCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiApOwpjaGFyICogR2V0TGFzdFRva2Vu
KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKY2hhciAqKiBJbnNlcnRTdHJpbmdJbkxpc3Qo
Y2hhciAqKiwgY29uc3QgY2hhciAqLCBpbnQgLCBUQm9vbCk7CiMgMTkxICIuLi8uLi8uLi9saWIv
Y2NsY29udi5oIgp2b2lkIFN3YXBXb3JkKCBpbnQsIHZvaWQgKiApOwojIDIwNiAiLi4vLi4vLi4v
bGliL2NjbGNvbnYuaCIKdm9pZCBDQ0xMb2dFcnJvciggY29uc3QgY2hhciAqLCBjb25zdCBjaGFy
ICosIC4uLiApOwp2b2lkIENDTExvZ1N1Y2Nlc3MoIGNvbnN0IGNoYXIgKiApOwp2b2lkIENDTFN0
YXJ0VGVzdCggY29uc3QgY2hhciAqICk7ClRCb29sIENDTEVuZFRlc3QoIHZvaWQgKTsKIyAyMTgg
Ii4uLy4uLy4uL2xpYi9jY2xjb252LmgiCnR5cGVkZWYgc3RydWN0IHsKICAgIGNoYXIgKmJhc2Vu
YW1lOwogICAgY2hhciAqZXh0ZW5zaW9uOwogICAgY2hhciAqZHJpdmU7CiAgICBpbnQgcmVsYXRp
dmU7CiAgICBpbnQgcGF0aF9lbGVtZW50czsKICAgIGNoYXIgKnBhdGhbMjRdOwp9IEdsb2JfdDsK
IyAyNTAgIi4uLy4uLy4uL2xpYi9jY2xjb252LmgiCnZvaWQgSU1QRGVzdHJveUdsb2IoIEdsb2Jf
dCAqICk7Ckdsb2JfdCAqIElNUEZpbGUyR2xvYiggY29uc3QgY2hhciAqLCBpbnQgKTsKY2hhciAq
IElNUEdsb2IyRmlsZSggY29uc3QgR2xvYl90ICosIGludCApOwpjaGFyICogSU1QR2xvYmJlcigg
Y29uc3QgY2hhciAqLCBpbnQsIGludCApOwpjaGFyICogSU1QR2V0UGF0aCggY29uc3QgR2xvYl90
ICosIGludCApOwpjaGFyICogSU1QR2V0RmlsZW5hbWUoIGNvbnN0IEdsb2JfdCAqLCBpbnQgKTsK
Y29uc3QgY2hhciAqIElNUEdldEZpbGVuYW1lUmVmKCBjb25zdCBHbG9iX3QgKiwgaW50ICk7CmNv
bnN0IGNoYXIgKiBJTVBFeHRyYWN0RmlsZW5hbWVSZWYoIGNvbnN0IGNoYXIgKiwgaW50ICk7CgoK
dm9pZCBJTVBTZXRGaWxlbmFtZSggR2xvYl90ICosIGNvbnN0IGNoYXIgKiApOwpjaGFyICogSU1Q
U2V0RXh0ZW5zaW9uKCBjb25zdCBjaGFyKiBwc3pGaWxlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHBzekV4dCApOwpjaGFyICogSU1QQWJicmV2
aWF0ZVBhdGgoIEdsb2JfdCAqLCBpbnQsIGludCApOwpjb25zdCBjaGFyICogSU1QU2VhcmNoRmls
ZSggY29uc3QgY2hhciAqICk7CgpjaGFyICogSU1QTWFrZVJlbGF0aXZlUGF0aCggY29uc3QgY2hh
ciAqLCBjb25zdCBjaGFyICogKTsKY2hhciAqIElNUE1lcmdlUmVsYXRpdmVQYXRoKCBjb25zdCBj
aGFyICosIGNvbnN0IGNoYXIgKiApOwpUQm9vbCBDQ0xSZWxhdGl2ZVRlc3QoIHZvaWQgKTsKCgoK
CnR5cGVkZWYgc3RydWN0IGxpbmtfdCB7CiAgc3RydWN0IGxpbmtfdCAqbmV4dDsKICB2b2lkICpv
YmplY3Q7Cn0gTGlua190OwoKTGlua190ICogSW5zZXJ0TGluayggTGlua190ICosIExpbmtfdCAq
ICk7CkxpbmtfdCAqIEFkZExpbmsoIExpbmtfdCAqLCBMaW5rX3QgKiApOwpMaW5rX3QgKiBDcmVh
dGVMaW5rKCB2b2lkICogKTsKTGlua190ICogRmluZExpbmsoIExpbmtfdCAqLCB2b2lkICogKTsK
TGlua190ICogRGVsZXRlTGluayggTGlua190ICosIExpbmtfdCAqICk7CkxpbmtfdCAqIFJlbW92
ZUxpbmsoIExpbmtfdCAqLCBMaW5rX3QgKiApOwpMaW5rX3QgKiBMaW5rTiggTGlua190ICosIGlu
dCApOwp2b2lkIERlc3Ryb3lMaXN0KCBMaW5rX3QgKiApOwpMaW5rX3QgKiBEdXBsaWNhdGVMaXN0
KCBMaW5rX3QgKik7CiMgMzEyICIuLi8uLi8uLi9saWIvY2NsY29udi5oIgp0eXBlZGVmIHN0cnVj
dCBDQ0hFbnRyeV90CnsKICAgIHZvaWQgKmhLZXk7CiAgICB2b2lkICpwRGF0YTsKfSBDQ0hFbnRy
eTsKCnN0cnVjdCBDQ0hDYWNoZV90OwoKdHlwZWRlZiBsb25nICgqQ0NISGFzaEZ1bmMpKHZvaWQg
Kik7CnR5cGVkZWYgaW50ICgqQ0NIQ29tcEZ1bmMpKHZvaWQgKiwgdm9pZCAqKTsKdHlwZWRlZiB2
b2lkICgqQ0NIRmx1c2hGdW5jKShzdHJ1Y3QgQ0NIQ2FjaGVfdCAqLCBDQ0hFbnRyeSAqLCB2b2lk
ICopOwoKdHlwZWRlZiBzdHJ1Y3QgQ0NIQ2FjaGVfdAp7CiAgICBpbnQzMiBuT3B0aW9uczsKICAg
IGludCBuU2l6ZTsKICAgIGludCBuRW50cmllczsKICAgIHVuc2lnbmVkIGludCBuU2xvdHM7CiAg
ICBpbnQgKnBhbkVudHJpZXNJblNsb3Q7CiAgICBDQ0hFbnRyeSAqKnBhcGFzRW50cmllczsKICAg
IENDSEhhc2hGdW5jIHBmbkhhc2g7CiAgICBDQ0hDb21wRnVuYyBwZm5Db21wOwogICAgQ0NIRmx1
c2hGdW5jIHBmbkZsdXNoOwogICAgdm9pZCAqcEZsdXNoQ0JEYXRhOwp9IENDSENhY2hlLCAqQ0NI
SGFuZGxlOwoKQ0NIRW50cnkgKiBDQ0hGaW5kRW50cnkoQ0NISGFuZGxlIHBzQ2FjaGUsIHZvaWQg
KmhLZXkpOwp2b2lkICogQ0NIRGVsZXRlKENDSEhhbmRsZSBwc0NhY2hlLCB2b2lkICpoS2V5KTsK
Q0NISGFuZGxlIENDSENyZWF0ZUNhY2hlKHNpemVfdCBuU2l6ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludDMyIG5PcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NIRmx1c2hGdW5jIHBmY0ZsdXNoRnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQgKnBGbHVzaENCRGF0YSk7CnZvaWQgKiBDQ0hVcGRhdGUoQ0NISGFuZGxlIHBzQ2Fj
aGUsIHZvaWQgKmhLZXksIHZvaWQgKnBEYXRhKTsKQ0NIRW50cnkgKiBDQ0hGaW5kRW50cnkoQ0NI
SGFuZGxlIHBzQ2FjaGUsIHZvaWQgKmhLZXkpOwp2b2lkICogQ0NIRGVsZXRlKENDSEhhbmRsZSBw
c0NhY2hlLCB2b2lkICpoS2V5KTsKdm9pZCBDQ0hGbHVzaENhY2hlKENDSEhhbmRsZSBwc0NhY2hl
KTsKdm9pZCAqKiBDQ0hHZXRBbGwoQ0NISGFuZGxlIHBzQ2FjaGUpOwppbnQgQ0NIR2V0TnVtRW50
cmllcyhDQ0hIYW5kbGUgcHNDYWNoZSk7CnZvaWQgKiBDQ0hGaW5kKENDSEhhbmRsZSBwc0NhY2hl
LCB2b2lkICpoS2V5KTsKdm9pZCBDQ0hEZWxldGVDYWNoZShDQ0hIYW5kbGUgcHNDYWNoZSk7CkND
SEVudHJ5ICoqIENDSEdldEFsbEVudHJpZXMoQ0NISGFuZGxlIHBzQ2FjaGUpOwoKCgoKY2hhciAq
IE5MU1RhZ0xvb2t1cCAoY29uc3QgY2hhciogcHN6VGFnICk7CmNoYXIgKiBOTFNMb29rdXAgKGNv
bnN0IGNoYXIqIHBzelN0cmluZyApOwpjaGFyICoqIE5MU0xvb2t1cFN0cmluZ0xpc3QgKGNoYXIg
KiogcGFzelN0cmluZ0xpc3QgKTsKVEJvb2wgTkxTVG9Eb3VibGVCeXRlIChjb25zdCBjaGFyICos
IGNoYXIgKiwgaW50KTsKY2hhciAqIE5MU0RvdWJsZVRvQ29tcG91bmQoY29uc3QgY2hhciAqcHN6
RG91YmxlQnl0ZSwgaW50IG5DaGFyQ291bnQpOwoKVEJvb2wgTkxTSGFzRG91YmxlIChjb25zdCBj
aGFyICopOwpUQm9vbCBOTFNEb3VibGVDaGFySXNOVUxMIChjb25zdCBjaGFyICopOwp2b2lkIE5M
U1NldExvY2FsZSAoY29uc3QgY2hhciAqICk7CnZvaWQgTkxTQ2xlYXJEYXRhYmFzZSAodm9pZCk7
CgoKdm9pZCBOTFNTZXRUZXN0TW9kZShUQm9vbCk7CnZvaWQgTkxTU2V0TG9nTW9kZShUQm9vbCk7
CnZvaWQgTkxTSW5pdCgpOwpUQm9vbCBOTFNJc0xlYWRCeXRlKHVuc2lnbmVkIGNoYXIpOwpjaGFy
ICogTkxTTmV4dENoYXIoY2hhciAqKTsKY2hhciAqIE5MU1ByZXZDaGFyKGNoYXIgKiwgY2hhciAq
KTsKaW50IE5MU1N0cmluZ0xlbmd0aChjaGFyICopOwppbnQgTkxTTWF4Q2hhcldpZHRoKCk7CgoK
Cgp2b2lkIFBNSW5pdGlhbGl6ZSggVEJvb2wgKTsKdm9pZCBQTVN0YXJ0VGltaW5nKCBjb25zdCBj
aGFyICogKTsKdm9pZCBQTUVuZFRpbWluZyggY29uc3QgY2hhciAqICk7CnZvaWQgUE1TdGFydFBy
b2Nlc3Modm9pZCk7CnZvaWQgUE1FbmRQcm9jZXNzKHZvaWQpOwpjaGFyICoqUE1HZXRBY3Rpb25z
KHZvaWQpOwpkb3VibGUgUE1HZXRBdmVyYWdlQWN0aW9uVGltZSggY29uc3QgY2hhciAqICk7CnZv
aWQgUE1EZWJ1Z1JlcG9ydCh2b2lkKTsKaW50IFBNR2V0RXJyb3JzKGNvbnN0IGNoYXIgKik7CgoK
Cgp0eXBlZGVmIGNoYXIgKihJTVBQcm9tcHRFbmNyeXB0S2V5KSggdW5zaWduZWQgY2hhciAqcGFi
eUZpbmdlcnByaW50RW5jcnlwdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciAqcHN6RmluZ2VycHJpbnRDbGVhciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBzelF1ZXN0aW9uICk7Cgp2b2lkIElNUFhvcldp
dGhTdHJpbmcoIGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICos
IGludCApOwp2b2lkIElNUEVuY3J5cHRCdWZmZXIoIGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgY2hh
ciAqLCB1bnNpZ25lZCBjaGFyICosIGludCApOwp2b2lkIElNUERlY3J5cHRCdWZmZXIoIGNvbnN0
IGNoYXIgKiwgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICosIGludCApOwpjaGFyICpJ
TVBHZW5lcmF0ZUVuY3J5cHRpb25LZXkoIGludCApOwoKdm9pZCBJTVBSZW1lbWJlckVuY3J5cHRL
ZXkoIGNvbnN0IGNoYXIgKiApOwpjaGFyICoqSU1QUmVjYWxsRW5jcnlwdEtleXMoIHZvaWQgKTsK
Y2hhciAqSU1QR2V0TWF0Y2hpbmdLZXkoIHVuc2lnbmVkIGNoYXIgKnBhYnlGaW5nZXJwcmludEVu
Y3J5cHRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpw
c3pGaW5nZXJwcmludENsZWFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIgKnBzelF1ZXN0aW9uICk7CnZvaWQgSU1QU2V0RW5jcnlwdEtleVByb21wdGVyKCBJ
TVBQcm9tcHRFbmNyeXB0S2V5IHBmblByb21wdGVyICk7CmNoYXIgKklNUFByb21wdFRlcm1FbmNy
eXB0S2V5KCB1bnNpZ25lZCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqICk7CgoK
CgoKdm9pZCBQcmludEhpc0RhdGEoRklMRSAqZnAsIGNvbnN0IGludCAqYW5IaXNEYXRhLCBpbnQg
bkhpc0RhdGFTaXplLAogICAgICAgICAgICAgICAgICBkb3VibGUgZGZGaXJzdEJpblZhbHVlLCBk
b3VibGUgZGZCaW5TaXplKTsKCnZvaWQgUHJpbnRIaXNBU0NJSShGSUxFICpmcCwgY29uc3QgaW50
ICphbkhpc0RhdGEsIGludCBuSGlzRGF0YVNpemUsCiAgICAgICAgICAgICAgICAgICBkb3VibGUg
ZGZGaXJzdEJpblZhbHVlLCBkb3VibGUgZGZCaW5TaXplLCBpbnQgbkhpc0NvdW50LAogICAgICAg
ICAgICAgICAgICAgZG91YmxlIGRmSGlzTWluLCBkb3VibGUgZGZIaXNNYXgsIGRvdWJsZSBkZkhp
c01lYW4sCiAgICAgICAgICAgICAgICAgICBkb3VibGUgZGZIaXNTdGREZXYsIGRvdWJsZSBkZkhp
c01lZGlhbiwgZG91YmxlIGRmQ291bnRNaW4sCiAgICAgICAgICAgICAgICAgICBkb3VibGUgZGZD
b3VudE1heCwgZG91YmxlIGRmR3JleUxldmVsTWluLAogICAgICAgICAgICAgICAgICAgZG91Ymxl
IGRmR3JleUxldmVsTWF4LCBjb25zdCBjaGFyICpwc3pUaXRsZSwKICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIgKnBzekxhYmVsWCwgY29uc3QgY2hhciAqcHN6TGFiZWxZLAogICAgICAgICAg
ICAgICAgICAgVEJvb2wgYlByaW50U3RhdHMpOwoKdm9pZCBQcmludEhpc1BTKEZJTEUgKmZwLCBj
b25zdCBpbnQgKmFuSGlzRGF0YSwgaW50IG5IaXNEYXRhU2l6ZSwKICAgICAgICAgICAgICAgIGRv
dWJsZSBkZkZpcnN0QmluVmFsdWUsIGRvdWJsZSBkZkJpblNpemUsIGludCBuSGlzQ291bnQsCiAg
ICAgICAgICAgICAgICBkb3VibGUgZGZIaXNNaW4sIGRvdWJsZSBkZkhpc01heCwgZG91YmxlIGRm
SGlzTWVhbiwKICAgICAgICAgICAgICAgIGRvdWJsZSBkZkhpc1N0ZERldiwgZG91YmxlIGRmSGlz
TWVkaWFuLCBkb3VibGUgZGZDb3VudE1pbiwKICAgICAgICAgICAgICAgIGRvdWJsZSBkZkNvdW50
TWF4LCBkb3VibGUgZGZHcmV5TGV2ZWxNaW4sIGRvdWJsZSBkZkdyZXlMZXZlbE1heCwKICAgICAg
ICAgICAgICAgIGRvdWJsZSBkZlBhZ2VXaWR0aCwgZG91YmxlIGRmUGFnZUhlaWdodCwgZG91Ymxl
IGRmV2luZG93V2lkdGgsCiAgICAgICAgICAgICAgICBkb3VibGUgZGZXaW5kb3dIZWlnaHQsIGlu
dCBiTGFuZFNjYXBlLCBjb25zdCBjaGFyICpwc3pUaXRsZSwKICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKnBzekxhYmVsWCwgY29uc3QgY2hhciAqcHN6TGFiZWxZLAogICAgICAgICAgICAgICAg
VEJvb2wgYlByaW50U3RhdHMsIGludCBuTnVtQ29waWVzKTsKCn0KIyAzNDYgIi4uLy4uLy4uL2xp
Yi9nZGIuaCIgMgojIDEgIi4uLy4uLy4uL2xpYi9jY2xwcm9qLmgiIDEKIyAyMSAiLi4vLi4vLi4v
bGliL2NjbHByb2ouaCIKZXh0ZXJuICJDIiB7CgoKCgoKCnR5cGVkZWYgc3RydWN0IHsKICBjaGFy
IFVuaXRzWzIwXTsKICBkb3VibGUgRGVhcnRoWzJdOwogIGRvdWJsZSBSZWZMb25nOwogIGRvdWJs
ZSBSZWZMYXQ7CiAgZG91YmxlIFN0ZFBhcmFsbGVsMTsKICBkb3VibGUgU3RkUGFyYWxsZWwyOwog
IGRvdWJsZSBGYWxzZUVhc3Rpbmc7CiAgZG91YmxlIEZhbHNlTm9ydGhpbmc7CiAgZG91YmxlIFNj
YWxlOwogIGRvdWJsZSBIZWlnaHQ7CiAgZG91YmxlIExvbmcxOwogIGRvdWJsZSBMYXQxOwogIGRv
dWJsZSBMb25nMjsKICBkb3VibGUgTGF0MjsKICBkb3VibGUgQXppbXV0aDsKICBpbnQgTGFuZHNh
dE51bTsKCiAgaW50IExhbmRzYXRQYXRoOwoKICBkb3VibGUgWE9mZjsKICBkb3VibGUgWU9mZjsK
ICBkb3VibGUgWFNpemU7CiAgZG91YmxlIFlTaXplOwoKICBpbnQgUHJvamVjdGlvbkNvZGU7CiAg
aW50IFByb2plY3Rpb25ab25lOwogIGRvdWJsZSBVU0dTUGFybXNbMTVdOwogIGludCBVbml0c0Nv
ZGU7CiAgaW50IFNwaGVyb2lkOwogIGludCBJRmllbGRzOwoKICBkb3VibGUgWFJvdDsKICBkb3Vi
bGUgWVJvdDsKCn0gUHJvakluZm9fdDsKIyA3MyAiLi4vLi4vLi4vbGliL2NjbHByb2ouaCIKdHlw
ZWRlZiBzdHJ1Y3QgewogIGNoYXIgc3pEYXR1bUNvZGVbNV07CiAgY2hhciAqIHBzekRhdHVtTmFt
ZTsKICBjaGFyICogcHN6RGF0dW1XaGVyZTsKCgoKCiAgY2hhciBzekVsbGlwc0NvZGVbNV07CiAg
Y2hhciAqIHBzekVsbGlwc05hbWU7CiAgZG91YmxlIGRBOwogIGRvdWJsZSBkQjsKCiAgY2hhciAq
IHBzelNoaWZ0RmlsZTE7CiAgY2hhciAqIHBzelNoaWZ0RmlsZTI7CgoKICBkb3VibGUgZFhPZmZz
ZXQ7CiAgZG91YmxlIGRZT2Zmc2V0OwogIGRvdWJsZSBkWk9mZnNldDsKCgogIGRvdWJsZSBkWFJv
dGF0ZTsKICBkb3VibGUgZFlSb3RhdGU7CiAgZG91YmxlIGRaUm90YXRlOwoKICBkb3VibGUgZFNj
YWxlOwoKICBkb3VibGUgZFhTaWdtYTsKICBkb3VibGUgZFlTaWdtYTsKICBkb3VibGUgZFpTaWdt
YTsKCiAgaW50IG5Eb3BwbGVyOwoKCiAgZG91YmxlIGRGbGF0dGVuaW5nOwojIDExOCAiLi4vLi4v
Li4vbGliL2NjbHByb2ouaCIKICBjaGFyICoqcGFzekdyaWRGaWxlOwoKICB2b2lkICogcHNHRjsK
CgoKfSBEYXR1bUluZm9fdDsKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBjaGFyIHN6VXNlck5hbWVb
MTJdOwogIGNoYXIgc3pQcm9qRGVzY1s4MF07CiAgY2hhciBzelByb2pDb3VudHJ5WzgwXTsKICBU
Qm9vbCBiQ29tbW9uOwoKICBpbnQgblJlYWxUeXBlOwoKICBQcm9qSW5mb190IHNSZWFsUHJvajsK
fSBVc2VyUHJvakluZm9fdDsKIyAxOTYgIi4uLy4uLy4uL2xpYi9jY2xwcm9qLmgiClRCb29sIEND
TFByb2pUZXN0KCB2b2lkICk7ClRCb29sIENDTFVzZXJQcm9qVGVzdCggdm9pZCApOwoKaW50IEdD
VFBTaW1wbGVUcmFuc2Zvcm0gKCBjaGFyICosIGRvdWJsZSwgZG91YmxlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIGRvdWJsZSAqLCBkb3VibGUgKiApOwoKaW50
IFBDSTJHQ1RQICggUHJvakluZm9fdCAqICk7CnZvaWQgR0NUUDJQQ0kgKCBQcm9qSW5mb190ICog
KTsKCmludCBHZW9zeXMyUHJvakluZm8gKCBQcm9qSW5mb190ICosIGNoYXIgKiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUgKTsK
aW50IEdlb3N5czJQcm9qSW5mbzIgKCBQcm9qSW5mb190ICosIGNoYXIgKiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlLCBkb3VibGUgKTsKCmludCBHQ1RQVHJh
bnNmb3JtICggUHJvakluZm9fdCAqLCBkb3VibGUsIGRvdWJsZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUHJvakluZm9fdCAqLCBkb3VibGUgKiwgZG91YmxlICogKTsKCnZvaWQgSW5p
dFByb2pJbmZvICggUHJvakluZm9fdCAqLCBpbnQgKTsKY2hhciAqIFByb2pJbmZvMlBhcm1zICgg
UHJvakluZm9fdCAqICk7CmludCBQcm9qUGFybXMySW5mbyAoIGNoYXIgKiwgUHJvakluZm9fdCAq
ICk7CmludCBQcm9qSW5mbzJQUk1GaWxlICggUHJvakluZm9fdCAqICk7CmludCBQcm9qUFJNRmls
ZTJJbmZvICggY2hhciAqLCBQcm9qSW5mb190ICogKTsKaW50IEdlb3N5c0NvbXBhdGlibGUoIGNv
bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqICk7CmludCBQcm9qQ29tcGF0aWJsZSggY29uc3QgUHJv
akluZm9fdCAqLCBjb25zdCBQcm9qSW5mb190ICogKTsKaW50IERlY29kZUdlb3N5cyggY29uc3Qg
Y2hhciAqLCBjaGFyICogKTsKaW50IEdldEVsbGlwc29pZCggY29uc3QgY2hhciAqICk7CmludCBn
ZXRfZWxsKCBjaGFyICosIGRvdWJsZSAqLCBkb3VibGUgKiApOwpjaGFyIGdldF9wcm9qKCBpbnQs
IGNoYXIgKiwgY2hhciAqLCBQcm9qSW5mb190ICosIGNoYXIgKiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSApOwpUQm9vbCBHZXRFYXJ0
aE1vZGVsKCBjb25zdCBjaGFyICosIGNoYXIgKiApOwpUQm9vbCBHZXRFbGxpcHNvaWREYXRhKCBj
b25zdCBjaGFyICosIGludCAqLCBkb3VibGUgKiwgZG91YmxlICogKTsKVEJvb2wgR2V0RWxsaXBz
b2lkSW5mbyggY29uc3QgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCAqLCBkb3VibGUgKiwgZG91YmxlICosIGNoYXIgKiogKTsKY2hhciAqIEdldEVsbGlwc29pZENv
ZGUoIGRvdWJsZSwgZG91YmxlICk7ClRCb29sIEdldERhdHVtSW5mbyAoIGNvbnN0IGNoYXIgKiwg
RGF0dW1JbmZvX3QgKiApOwpUQm9vbCBHZXREYXR1bUluZm8yICggY29uc3QgY2hhciAqLCBEYXR1
bUluZm9fdCAqKiApOwpUQm9vbCBMb25nTGF0UHJvakluZm8oIGNvbnN0IGNoYXIgKiwgUHJvaklu
Zm9fdCAqLCBQcm9qSW5mb190ICogKTsKaW50IEdlb3N5c0Rlc2NyaXB0aW9uKCBpbnQsIGNvbnN0
IGNoYXIgKiwgY2hhciAqLCBjaGFyICoqLCBjaGFyICoqICk7ClRCb29sIElzUHJvamVjdGFibGUo
IGNvbnN0IGNoYXIgKiwgY29uc3QgUHJvakluZm9fdCAqICk7ClRCb29sIFJlcXVpcmVzUHJvaklu
Zm8oIGludCApOwpUQm9vbCBJc0NvbmZvcm1hbCggY29uc3QgY2hhciAqICk7CmludCBQcm9qRGVm
YXVsdHMoIFByb2pJbmZvX3QgKiwgaW50ICosIGludCAqLCBjaGFyICosIFByb2pJbmZvX3QgKiAp
OwpjaGFyICoqIFByb2pSZXBvcnQoIFByb2pJbmZvX3QgKiApOwpUQm9vbCBQcm9qTm9ybWFsaXpl
KCBQcm9qSW5mb190ICogKTsKVXNlclByb2pJbmZvX3QgKkZpbmRVc2VyUHJvamVjdGlvbiggY29u
c3QgY2hhciAqICk7ClRCb29sIEdldFVzZXJQcm9qZWN0aW9uTmFtZSggUHJvakluZm9fdCAqLCBj
aGFyICogKTsKdm9pZCBEZWZpbmVVc2VyUHJvamVjdGlvbiggVXNlclByb2pJbmZvX3QgKiApOwpV
c2VyUHJvakluZm9fdCAqKkdldFVzZXJQcm9qZWN0aW9ucyh2b2lkKTsKCnZvaWQgVVRNWm9uZSAo
ZG91YmxlLCBkb3VibGUsIGludCAqLCBjaGFyICopOwoKdm9pZCBEZWNUb0RNUyAoZG91YmxlLCBp
bnQsIGNoYXIgKik7CmludCBETVNUb0RlYyAoY29uc3QgY2hhciAqLCBkb3VibGUgKik7CnZvaWQg
RGVjaW1hbFRvRGVncmVlcyggZG91YmxlLCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCAqLCBpbnQgKiwgaW50ICosCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCAqLCBpbnQsIGNoYXIgKiApOwoKVEJvb2wgUmVhZEFyY0luZm9Qcm9q
ZWN0aW9uRmlsZSggY2hhciAqKiwgUHJvakluZm9fdCAqICk7CmNoYXIgKiogV3JpdGVBcmNJbmZv
UHJvamVjdGlvbkZpbGUoIFByb2pJbmZvX3QgKiApOwppbnQgVVNHU19BcmNJbmZvX1NQQ1Nab25l
KCBUQm9vbCwgaW50ICk7CgoKCgoKVEJvb2wgSW52ZXJzZUFmZmluZSggZG91YmxlLCBkb3VibGUs
IGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwKICAgICAgICAgICAgICAgICAgICBkb3Vi
bGUgKiwgZG91YmxlICosIGRvdWJsZSAqLCBkb3VibGUgKiwgZG91YmxlICosIGRvdWJsZSAqKTsK
dm9pZCBBcHBseUFmZmluZSggZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUs
IGRvdWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCwgZG91YmxlICosIGRv
dWJsZSAqLCBpbnQgKTsKZG91YmxlIEFmZmluZVhTaXplKCBkb3VibGUsIGRvdWJsZSwgZG91Ymxl
LCBkb3VibGUsIGRvdWJsZSwgZG91YmxlICk7CmRvdWJsZSBBZmZpbmVZU2l6ZSggZG91YmxlLCBk
b3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSApOwpkb3VibGUgQWZmaW5lUm90
YXRpb24oIGRvdWJsZSxkb3VibGUsZG91YmxlLGRvdWJsZSxkb3VibGUsZG91YmxlICk7CgoKCgoK
aW50IERhdHVtU2hpZnQgKCBjaGFyICosIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIGRvdWJsZSAqLCBkb3VibGUgKiwgZG91Ymxl
ICogKTsKCmludCBHb29kZVRyYW5zZm9ybSggUHJvakluZm9fdCAqLCBpbnQsIGRvdWJsZSwgZG91
YmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvakluZm9fdCAqLCBkb3Vi
bGUgKiwgZG91YmxlICogKTsKCmludCBDYXNzaW5pVHJhbnNmb3JtKCBQcm9qSW5mb190ICosIGlu
dCwgZG91YmxlLCBkb3VibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBy
b2pJbmZvX3QgKiwgZG91YmxlICosIGRvdWJsZSAqICk7CgppbnQgUlNPVHJhbnNmb3JtKCBQcm9q
SW5mb190ICosIGludCwgZG91YmxlLCBkb3VibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUHJvakluZm9fdCAqLCBkb3VibGUgKiwgZG91YmxlICogKTsKCmludCBLcm92YWtUcmFu
c2Zvcm0oIFByb2pJbmZvX3QgKiwgaW50LCBkb3VibGUsIGRvdWJsZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQcm9qSW5mb190ICosIGRvdWJsZSAqLCBkb3VibGUgKiApOwoK
aW50IFNHRE9UcmFuc2Zvcm0oIFByb2pJbmZvX3QgKiwgaW50LCBkb3VibGUsIGRvdWJsZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvakluZm9fdCAqLCBkb3VibGUgKiwgZG91
YmxlICogKTsKCmludCBMQlNHVHJhbnNmb3JtKCBQcm9qSW5mb190ICosIGludCwgZG91YmxlLCBk
b3VibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2pJbmZvX3QgKiwgZG91
YmxlICosIGRvdWJsZSAqICk7CgppbnQgSVNJTlRyYW5zZm9ybSggUHJvakluZm9fdCAqLCBpbnQs
IGRvdWJsZSwgZG91YmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9qSW5m
b190ICosIGRvdWJsZSAqLCBkb3VibGUgKiApOwoKVEJvb2wgR2VvY29kZWRUb01HUlMoIFByb2pJ
bmZvX3QgKiwgZG91YmxlLCBkb3VibGUsIGludCwgY2hhciAqICk7ClRCb29sIE1HUlNUb0dlb2Nv
ZGVkKCBjb25zdCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9q
SW5mb190ICosIGRvdWJsZSAqLCBkb3VibGUgKiApOwp2b2lkIEVQU0d0b1Byb2pJbmZvKCBjaGFy
ICosIFByb2pJbmZvX3QgKik7CiMgMzEwICIuLi8uLi8uLi9saWIvY2NscHJvai5oIgp2b2lkIHBy
al9zaW5jb3MgKCBkb3VibGUsIGRvdWJsZSAqLCBkb3VibGUgKiApOwpkb3VibGUgYXNpbnogKCBk
b3VibGUgKTsKZG91YmxlIG1zZm56ICggZG91YmxlLCBkb3VibGUsIGRvdWJsZSApOwpkb3VibGUg
cXNmbnogKCBkb3VibGUsIGRvdWJsZSwgZG91YmxlICk7CmRvdWJsZSBwaGkxeiAoIGRvdWJsZSwg
ZG91YmxlLCBsb25nICogKTsKZG91YmxlIHBoaTJ6ICggZG91YmxlLCBkb3VibGUsIGxvbmcgKiAp
Owpkb3VibGUgcGhpM3ogKCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwg
bG9uZyAqICk7CmRvdWJsZSBwaGk0eiAoIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSwg
ZG91YmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSwgZG91YmxlLCBkb3VibGUg
KiwgZG91YmxlICogKTsKZG91YmxlIHBha2N6ICggZG91YmxlICk7CmRvdWJsZSBwYWtyMmRtICgg
ZG91YmxlICk7CmRvdWJsZSB0c2ZueiAoIGRvdWJsZSwgZG91YmxlLCBkb3VibGUgKTsKaW50IHBy
al9zaWduICggZG91YmxlICk7CmRvdWJsZSBhZGp1c3RfbG9uICggZG91YmxlICk7CmRvdWJsZSBl
MGZuICggZG91YmxlICk7CmRvdWJsZSBlMWZuICggZG91YmxlICk7CmRvdWJsZSBlMmZuICggZG91
YmxlICk7CmRvdWJsZSBlM2ZuICggZG91YmxlICk7CmRvdWJsZSBlNGZuICggZG91YmxlICk7CmRv
dWJsZSBtbGZuICggZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUgKTsKaW50
IGNhbGNfdXRtX3pvbmUgKCBkb3VibGUgKTsKIyAzNTYgIi4uLy4uLy4uL2xpYi9jY2xwcm9qLmgi
ClRCb29sIENDTFRyYW5zZm9ybVRlc3QoIHZvaWQgKTsKIyAzNjYgIi4uLy4uLy4uL2xpYi9jY2xw
cm9qLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgIGludCBwYng7CiAgICBpbnQgcGJ5OwogICAgZG91
YmxlIHJieFsyMV07CiAgICBkb3VibGUgcmJ5WzIxXTsKICAgIGRvdWJsZSByYWJ4WzNdOwogICAg
ZG91YmxlIHJhYnlbM107Cn0gR0VPSW5mb190OwoKCgoKdm9pZCBHQ1BMaXN0IChpbnQsIGludCAq
LCBpbnQgKiwgZG91YmxlICosIGRvdWJsZSAqLCBkb3VibGUgKiwKICAgICAgICAgICAgZG91Ymxl
ICosIGRvdWJsZSAqLCBkb3VibGUgKiwgaW50LCBkb3VibGUgKiwgZG91YmxlICosIGRvdWJsZSAq
ICk7CnZvaWQgR0NQUm9vdE1lYW5TcSAoIEdFT0luZm9fdCAqLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkb3VibGUgKiwgZG91YmxlICosIGRvdWJsZSAqLCBkb3VibGUgKiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBkb3VibGUgKiwgZG91YmxlICopOwp2b2lkIEdD
UFRyYW5zZm9ybSAoIEdFT0luZm9fdCAqLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlICosIGRvdWJs
ZSAqKTsKdm9pZCBHQ1BSZWdyZXNzaW9uICggR0VPSW5mb190ICosIGRvdWJsZSAqLCBkb3VibGUg
KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlICosIGRvdWJsZSAqLCBpbnQs
IGludCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgKiwgZG91YmxlICop
Owp2b2lkIEdDUFJlZ3Jlc3Npb24yICggR0VPSW5mb190ICosCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKiwgZG91YmxlICosIGRvdWJsZSAqLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICosIGRvdWJsZSAqLCBkb3VibGUgKiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50LCBpbnQgKiwgaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkb3VibGUgKiwgZG91YmxlICopOwp2b2lkIEdDUFJlZ3Jlc3Npb24yV2l0aFdvcnN0UG9pbnQg
KCBHRU9JbmZvX3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqLCBkb3Vi
bGUgKiwgZG91YmxlICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiwgZG91
YmxlICosIGRvdWJsZSAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQsIGludCAq
LCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqLCBkb3VibGUgKiwg
aW50ICosIGRvdWJsZSAqLCBkb3VibGUgKik7CgoKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgIGlu
dCBSYWRpYWxUZXJtQ291bnQ7CiAgICBkb3VibGUgQ1BJWFs0KjI1Nl07CiAgICBkb3VibGUgQ1BJ
WVs0KjI1Nl07CiAgICBkb3VibGUgQ29lZmZYWzQqMjU2ICszXTsKICAgIGRvdWJsZSBDb2VmZllb
NCoyNTYgKzNdOwogICAgZG91YmxlIEFmZmluZVhbM107CiAgICBkb3VibGUgQWZmaW5lWVszXTsK
ICAgIGludCBSYW5rT2ZBOwogICAgZG91YmxlIENvbmROdW1PZkE7Cn0gVFBTSW5mb190OwoKdm9p
ZCBUUFNDYWxjdWxhdGUgKFRQU0luZm9fdCAqdHBzLCBpbnQgbmNwLCBkb3VibGUgKnJpeCwgZG91
YmxlICpyaXksCiAgICAgICAgICAgICAgICAgICBkb3VibGUgKnJvdSwgZG91YmxlICpyb3YpOwoK
dm9pZCBUUFNUcmFuc2Zvcm0gKFRQU0luZm9fdCAqdHBzLCBkb3VibGUgcml4LCBkb3VibGUgcml5
LAogICAgICAgICAgICAgICAgICAgZG91YmxlICpyb3UsIGRvdWJsZSAqcm92KTsKCnZvaWQgVFBT
Uk1TRXJyb3IgKFRQU0luZm9fdCAqdHBzLCBpbnQgbmNoa3AsCiAgICAgICAgICAgICAgICAgIGRv
dWJsZSAqY2hrcGl4LCBkb3VibGUgKmNoa3BpeSwKICAgICAgICAgICAgICAgICAgZG91YmxlICpj
aGtwb3UsIGRvdWJsZSAqY2hrcG92LAogICAgICAgICAgICAgICAgICBkb3VibGUgKmF2eCwgZG91
YmxlICphdnksIGRvdWJsZSAqcm1zeCwgZG91YmxlICpybXN5KTsKCgoKCgp0eXBlZGVmIHN0cnVj
dCB7CiAgICBkb3VibGUgZGZYT2ZmLCBkZllPZmYsIGRmWFNpemUsIGRmWVNpemU7CiAgICBUQm9v
bCBiUmVwcm9qZWN0OwogICAgUHJvakluZm9fdCBzVmVjUHJvajsKICAgIFByb2pJbmZvX3Qgc0lt
Z1Byb2o7Cn0gVlRyYW5JbmZvOwoKVEJvb2wgVlRyYW5TZXR1cCggUHJvakluZm9fdCAqIHBzSW1n
UHJvaiwgUHJvakluZm9fdCAqIHBzVmVjUHJvaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZUcmFuSW5mbyAqIHBzVlRyYW4gKTsKCnZvaWQgVlRyYW5Ub1BpeGVsKCB2b2lkICosIGRvdWJs
ZSwgZG91YmxlLCBkb3VibGUgKiwgZG91YmxlICogKTsKdm9pZCBWVHJhbkZyb21QaXhlbCggdm9p
ZCAqLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlICosIGRvdWJsZSAqICk7CgoKCgp2b2lkIGRkY29t
cGMoaW50LCBkb3VibGUgKiwgaW50ICosIGludCAqKTsKdm9pZCBkc29sdmMoaW50LCBkb3VibGUg
KiwgaW50ICosIGRvdWJsZSAqKTsKdm9pZCBkcXJsc2MoZG91YmxlICosIGludCwgaW50LCBkb3Vi
bGUsIGludCAqLCBkb3VibGUgKiwgZG91YmxlICosCiAgICAgICAgICAgICAgICAgICAgICBkb3Vi
bGUgKiwgaW50ICosIGRvdWJsZSAqLCBkb3VibGUgKiwgaW50LCBpbnQgKik7CiMgNDYxICIuLi8u
Li8uLi9saWIvY2NscHJvai5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgaW50IG5UeXBlOwogIFRCb29s
IGJWYWxpZDsKCiAgdW5pb24gewogICAgR0VPSW5mb190ICpwc0dFTzsKICAgIFRQU0luZm9fdCAq
cHNUUFM7CgogICAgdm9pZCAqcHNSVENTOwogICAgdm9pZCAqcHNTUklUOwoKICB9IHU7Cn0gVFJO
SW5mb190OwoKClRSTkluZm9fdCAqIFRSTkFsbG9jYXRlKCBpbnQgKTsKdm9pZCBUUk5EZWFsbG9j
YXRlKCBUUk5JbmZvX3QgKiApOwp2b2lkIFRSTkNhbGN1bGF0ZSggVFJOSW5mb190ICosIGludCwg
ZG91YmxlICosIGRvdWJsZSAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUg
KiwgZG91YmxlICosIHZvaWQgKiApOwp2b2lkIFRSTkNhbGN1bGF0ZTNEKCBUUk5JbmZvX3QgKiwg
aW50LCBkb3VibGUgKiwgZG91YmxlICosIGRvdWJsZSAqLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRvdWJsZSAqLCBkb3VibGUgKiwgZG91YmxlICosIHZvaWQgKiApOwpUQm9vbCBU
Uk5UcmFuc2Zvcm0oIFRSTkluZm9fdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
b3VibGUsIGRvdWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlICosIGRv
dWJsZSAqKTsKVEJvb2wgVFJOVHJhbnNmb3JtM0QoIFRSTkluZm9fdCAqLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG91YmxlICosIGRvdWJsZSAqLCBkb3VibGUgKik7CnZvaWQgVFJO
Uk1TRXJyb3IoIFRSTkluZm9fdCAqLCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG91YmxlICosIGRvdWJsZSAqLCBkb3VibGUgKiwgZG91YmxlICosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG91YmxlICosIGRvdWJsZSAqICk7Cgp2b2lkIFRSTlJNU0Vycm9yM0QoIFRS
TkluZm9fdCAqLCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgKiwg
ZG91YmxlICosIGRvdWJsZSAqLCBkb3VibGUgKiwgZG91YmxlICosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkb3VibGUgKiwgZG91YmxlICogKTsKCmRvdWJsZSBQQUsyUENJKCBkb3Vi
bGUgZGVnLCBpbnQgZnVuY3Rpb24gKTsKCn0KIyAzNDcgIi4uLy4uLy4uL2xpYi9nZGIuaCIgMgoK
CmV4dGVybiAiQyIgewojIDM4NSAiLi4vLi4vLi4vbGliL2dkYi5oIgp0eXBlZGVmIGludDMyIEdE
QlNoYXBlSWQ7CiMgMzk0ICIuLi8uLi8uLi9saWIvZ2RiLmgiCnR5cGVkZWYgZW51bSBHREJMYXll
clR5cGVfZQp7CiAgICBHREJMVW5rbm93bj0wLAogICAgR0RCTFRvcG9BcmMsCiAgICBHREJMVG9w
b0FyZWEsCiAgICBHREJMVG9wb05vZGUsCiAgICBHREJMV2hvbGVQb2x5Z29uLAogICAgR0RCTFBv
aW50LAogICAgR0RCTExpbmUsCiAgICBHREJMVGFibGUKfSBHREJMYXllclR5cGU7CgoKCgoKc3Ry
dWN0IEdEQkxheWVyX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgewoKICBjaGFyIFVuaXRzWzIwXTsKCgog
IGludCBOU3RydWN0dXJlOwogIGludCBOVmVydGV4OwogIGRvdWJsZSBYU3RhcnQ7CiAgZG91Ymxl
IFlTdGFydDsKICBkb3VibGUgWEVuZDsKICBkb3VibGUgWUVuZDsKICBkb3VibGUgc2NhbGU7CgoK
ICBGSUxFICpmcDsKICBpbnQgc2VnOwogIGludCBsYXN0X3N0cnVjdCwKICAgICAgICAgICAgbmV4
dF9zdHJ1Y3QsCgogICAgICAgICAgICBidWZmZXJbMTI4XTsKICBsb25nIGxhc3RfYmxvY2s7Cgog
ICAgc3RydWN0IEdEQkxheWVyX3QgKmhMYXllcjsKfSBWSW5mb190OwoKCgoKCnR5cGVkZWYgc3Ry
dWN0IHsKICBpbnQgYWNjZXNzOwogIEZJTEUgKmZwOwogIGludCBzZWdudW07CiAgRklMRSAqdGV4
dF9mcDsKCgogIGNoYXIgKmNiX2J1ZmZlcjsKICBpbnQgY2hhcl9vZmZzZXQ7CiAgaW50IHNlZ19v
ZmZzZXQ7Cn0gVEluZm9fdDsKIyA0NjYgIi4uLy4uLy4uL2xpYi9nZGIuaCIKdHlwZWRlZiBzdHJ1
Y3QgewogICAgaW50IFNsYW50UmFuZ2VGc3RQaXhlbDsKICAgIGludCBTbGFudFJhbmdlTGFzdFBp
eGVsOwogICAgZmxvYXQgRnN0UGl4ZWxMYXQ7CiAgICBmbG9hdCBNaWRQaXhlbExhdDsKICAgIGZs
b2F0IExzdFBpeGVsTGF0OwogICAgZmxvYXQgRnN0UGl4ZWxMb25nOwogICAgZmxvYXQgTWlkUGl4
ZWxMb25nOwogICAgZmxvYXQgTHN0UGl4ZWxMb25nOwp9IEFuY2lsbGFyeURhdGFfdDsKCnR5cGVk
ZWYgc3RydWN0CnsKICAgIGNoYXIgSWRlbnRpZmllclsxN107CiAgICBjaGFyIEZhY2lsaXR5WzE3
XTsKICAgIGNoYXIgRWxsaXBzb2lkWzE3XTsKICAgIGRvdWJsZSBFcXVhdG9yaWFsUmFkaXVzOwog
ICAgZG91YmxlIFBvbGFyUmFkaXVzOwogICAgZG91YmxlIEluY2lkZW5jZUFuZ2xlOwogICAgZG91
YmxlIFBpeGVsU3BhY2luZzsKICAgIGRvdWJsZSBMaW5lU3BhY2luZzsKICAgIGRvdWJsZSBDbG9j
a0FuZ2xlOwoKICAgIGludCBOdW1iZXJCbG9ja0RhdGE7CiAgICBpbnQzMiBOdW1iZXJEYXRhOwoK
ICAgIEFuY2lsbGFyeURhdGFfdCAqTGluZTsKfSBSYWRhclNlZ190OwojIDUwMiAiLi4vLi4vLi4v
bGliL2dkYi5oIgp0eXBlZGVmIHN0cnVjdAp7CiAgICBkb3VibGUgQ2hhbmdlSW5BdHRpdHVkZTsK
ICAgIGRvdWJsZSBDaGFuZ2VFYXJ0aFNhdGVsbGl0ZURpc3Q7Cgp9IEF0dGl0dWRlTGluZV90OwoK
dHlwZWRlZiBzdHJ1Y3QKewogICAgZG91YmxlIFJvbGw7CiAgICBkb3VibGUgUGl0Y2g7CiAgICBk
b3VibGUgWWF3OwogICAgaW50MzIgTnVtYmVyT2ZMaW5lOwoKICAgIGludCBOdW1iZXJCbG9ja0Rh
dGE7CiAgICBBdHRpdHVkZUxpbmVfdCAqTGluZTsKCn0gQXR0aXR1ZGVTZWdfdDsKCgoKCgoKCnR5
cGVkZWYgc3RydWN0CnsKCiAgICBpbnQgblNjYW5MaW5lTnVtOwogICAgaW50IG5TdGFydFNjYW5U
aW1lR01UTXNlYzsKICAgIHVuc2lnbmVkIGNoYXIgYWJ5U2NhbkxpbmVRdWFsaXR5WzEwXTsKICAg
IHVuc2lnbmVkIGNoYXIgYWFieUJhZEJhbmRJbmRpY2F0b3JzWzVdWzJdOwogICAgdW5zaWduZWQg
Y2hhciBhYnlTYXRlbGxpdGVUaW1lQ29kZVs4XTsKCgogICAgaW50IGFuVGFyZ2V0VGVtcERhdGFb
M107CiAgICBpbnQgYW5UYXJnZXRTY2FuRGF0YVszXTsKICAgIGludCBhblNwYWNlU2NhbkRhdGFb
NV07Cgp9IEF2aHJyTGluZV90OwoKdHlwZWRlZiBzdHJ1Y3QKewoKICAgIGNoYXIgc3pJbWFnZUZv
cm1hdFs1MF07CiAgICBpbnQgbkltYWdlWFNpemU7CiAgICBpbnQgbkltYWdlWVNpemU7CiAgICBU
Qm9vbCBiSXNBc2NlbmRpbmc7CiAgICBUQm9vbCBiSXNJbWFnZVJvdGF0ZWQ7CgoKICAgIGNoYXIg
c3pPcmJpdE51bWJlclsxN107CiAgICBjaGFyIHN6QXNjZW5kRGVzY2VuZE5vZGVGbGFnWzE3XTsK
ICAgIGNoYXIgc3pFcG9jaFllYXJBbmREYXlbMTddOwogICAgY2hhciBzekVwb2NoVGltZVdpdGhp
bkRheVsxN107CiAgICBjaGFyIHN6VGltZURpZmZTdGF0aW9uU2F0ZWxsaXRlTXNlY1sxN107CiAg
ICBjaGFyIHN6QWN0dWFsU2Vuc29yU2NhblJhdGVbMTddOwogICAgY2hhciBzeklkZW50T2ZPcmJp
dEluZm9Tb3VyY2VbMTddOwogICAgY2hhciBzekludGVybmF0aW9uYWxEZXNpZ25hdG9yWzE3XTsK
ICAgIGNoYXIgc3pPcmJpdE51bUF0RXBvY2hbMTddOwogICAgY2hhciBzekp1bGlhbkRheUFzY2Vu
ZE5vZGVbMTddOwogICAgY2hhciBzekVwb2NoWWVhclsxN107CiAgICBjaGFyIHN6RXBvY2hNb250
aFsxN107CiAgICBjaGFyIHN6RXBvY2hEYXlbMTddOwogICAgY2hhciBzekVwb2NoSG91clsxN107
CiAgICBjaGFyIHN6RXBvY2hNaW51dGVbMTddOwogICAgY2hhciBzekVwb2NoU2Vjb25kWzE3XTsK
ICAgIGNoYXIgc3pQb2ludE9mQXJpZXNEZWdyZWVzWzE3XTsKICAgIGNoYXIgc3pBbm9tYWxpc3Rp
Y1BlcmlvZFsxN107CiAgICBjaGFyIHN6Tm9kYWxQZXJpb2RbMTddOwogICAgY2hhciBzekVjY2Vu
dHJpY2l0eVsxN107CiAgICBjaGFyIHN6QXJndW1lbnRPZlBlcmlnZWVbMTddOwogICAgY2hhciBz
elJBQU5bMTddOwogICAgY2hhciBzekluY2xpbmF0aW9uWzE3XTsKICAgIGNoYXIgc3pNZWFuQW5v
bWFseVsxN107CiAgICBjaGFyIHN6U2VtaU1ham9yQXhpc1sxN107CgoKCgogICAgaW50IG5SZWNv
cmRTaXplOwogICAgaW50IG5CbG9ja1NpemU7CiAgICBpbnQgbk51bVJlY29yZHNQZXJCbG9jazsK
ICAgIGludCBuTnVtQmxvY2tzOwogICAgaW50IG5OdW1TY2FubGluZVJlY29yZHM7CgoKICAgIEF2
aHJyTGluZV90ICpMaW5lOwoKfSBBdmhyclNlZ190OwoKCgoKCnR5cGVkZWYgdW5pb24KewogICBB
dHRpdHVkZVNlZ190ICpBdHRpdHVkZVNlZzsKICAgUmFkYXJTZWdfdCAqUmFkYXJTZWc7CiAgIEF2
aHJyU2VnX3QgKkF2aHJyU2VnOwoKfSBPcmJpdERhdGFfdDsKCnR5cGVkZWYgZW51bSB7IE9yYk5v
bmUsIE9yYkF0dGl0dWRlLCBPcmJMYXRMb25nLCBPcmJBdmhyciB9IE9yYml0VHlwZTsKdHlwZWRl
ZiBzdHJ1Y3QKewogICAgY2hhciBTYXRlbGxpdGVEZXNjWzMzXTsKICAgIGNoYXIgU2NlbmVJRFsz
M107CgogICAgY2hhciBTYXRlbGxpdGVTZW5zb3JbMTddOwogICAgY2hhciBTZW5zb3JOb1szXTsK
ICAgIGNoYXIgRGF0ZUltYWdlVGFrZW5bMjNdOwogICAgVEJvb2wgU3VwU2VnRXhpc3Q7CiAgICBk
b3VibGUgRmllbGRPZlZpZXc7CiAgICBkb3VibGUgVmlld0FuZ2xlOwogICAgZG91YmxlIE51bUNv
bENlbnRyZTsKICAgIGRvdWJsZSBSYWRpYWxTcGVlZDsKICAgIGRvdWJsZSBFY2NlbnRyaWNpdHk7
CiAgICBkb3VibGUgSGVpZ2h0OwogICAgZG91YmxlIEluY2xpbmF0aW9uOwogICAgZG91YmxlIFRp
bWVJbnRlcnZhbDsKICAgIGRvdWJsZSBOdW1MaW5lQ2VudHJlOwogICAgZG91YmxlIExvbmdDZW50
cmU7CiAgICBkb3VibGUgQW5ndWxhclNwZDsKICAgIGRvdWJsZSBBc2NOb2RlTG9uZzsKICAgIGRv
dWJsZSBBcmdQZXJpZ2VlOwogICAgZG91YmxlIExhdENlbnRyZTsKICAgIGRvdWJsZSBFYXJ0aFNh
dGVsbGl0ZURpc3Q7CiAgICBkb3VibGUgTm9taW5hbFBpdGNoOwogICAgZG91YmxlIFRpbWVBdENl
bnRyZTsKICAgIGRvdWJsZSBTYXRlbGxpdGVBcmc7CgogICAgZG91YmxlIFhDZW50cmU7CiAgICBk
b3VibGUgWUNlbnRyZTsKICAgIGRvdWJsZSBVdG1ZQ2VudHJlOwogICAgZG91YmxlIFV0bVhDZW50
cmU7CiAgICBkb3VibGUgUGl4ZWxSZXM7CiAgICBkb3VibGUgTGluZVJlczsKICAgIFRCb29sIENv
cm5lckF2YWlsOwogICAgY2hhciBNYXBVbml0WzE3XTsKICAgIGRvdWJsZSBYVUw7CiAgICBkb3Vi
bGUgWVVMOwogICAgZG91YmxlIFhVUjsKICAgIGRvdWJsZSBZVVI7CiAgICBkb3VibGUgWExSOwog
ICAgZG91YmxlIFlMUjsKICAgIGRvdWJsZSBYTEw7CiAgICBkb3VibGUgWUxMOwogICAgZG91Ymxl
IFV0bVlVTDsKICAgIGRvdWJsZSBVdG1YVUw7CiAgICBkb3VibGUgVXRtWVVSOwogICAgZG91Ymxl
IFV0bVhVUjsKICAgIGRvdWJsZSBVdG1ZTFI7CiAgICBkb3VibGUgVXRtWExSOwogICAgZG91Ymxl
IFV0bVlMTDsKICAgIGRvdWJsZSBVdG1YTEw7CgogICAgZG91YmxlIExhdENlbnRyZURlZzsKICAg
IGRvdWJsZSBMb25nQ2VudHJlRGVnOwogICAgZG91YmxlIExhdFVMOwogICAgZG91YmxlIExvbmdV
TDsKICAgIGRvdWJsZSBMYXRVUjsKICAgIGRvdWJsZSBMb25nVVI7CiAgICBkb3VibGUgTGF0TFI7
CiAgICBkb3VibGUgTG9uZ0xSOwogICAgZG91YmxlIExhdExMOwogICAgZG91YmxlIExvbmdMTDsK
CiAgICBkb3VibGUgU1BDb2VmZjFCWzM5XTsKICAgIGludCBTUENvZWZmU2dbNF07CgogICAgaW50
IEltYWdlUmVjb3JkTGVuZ3RoOwogICAgaW50IE51bWJlckltYWdlTGluZTsKICAgIGludCBOdW1i
ZXJCeXRlUGVyUGl4ZWw7CiAgICBpbnQgTnVtYmVyU2FtcGxlUGVyTGluZTsKICAgIGludCBOdW1i
ZXJQcmVmaXhCeXRlczsKICAgIGludCBOdW1iZXJTdWZmaXhCeXRlczsKICAgIGludCBTUE5Db2Vm
ZjsKCiAgICBPcmJpdFR5cGUgVHlwZTsKICAgIE9yYml0RGF0YV90ICpPcmJpdExpbmU7Cgp9IEVw
aGVtZXJpc1NlZ190OwojIDY5OCAiLi4vLi4vLi4vbGliL2dkYi5oIgp0eXBlZGVmIHN0cnVjdCB7
CiAgICAgICAgZG91YmxlIE4weDI7CiAgICAgICAgZG91YmxlIGFhOwogICAgICAgIGRvdWJsZSBT
bUFMUEhBOwogICAgICAgIGRvdWJsZSBiYjsKICAgICAgICBkb3VibGUgQzA7CiAgICAgICAgZG91
YmxlIGNjOwogICAgICAgIGRvdWJsZSBDT1NfS0hJOwogICAgICAgIGRvdWJsZSBERUxUQV9HQU1N
QTsKICAgICAgICBkb3VibGUgR0FNTUE7CiAgICAgICAgZG91YmxlIEtfMTsKICAgICAgICBkb3Vi
bGUgTDA7CiAgICAgICAgZG91YmxlIFA7CiAgICAgICAgZG91YmxlIFE7CiAgICAgICAgZG91Ymxl
IFRBVTsKICAgICAgICBkb3VibGUgVEhFVEE7CiAgICAgICAgZG91YmxlIFRIRVRBX1NFQzsKICAg
ICAgICBkb3VibGUgWDA7CiAgICAgICAgZG91YmxlIFkwOwogICAgICAgIGRvdWJsZSBkZWxoOwog
ICAgICAgIGRvdWJsZSBDT0VGX1kyOwogICAgICAgIGludCBuR0NQQ291bnQ7CiAgICAgICAgaW50
IG5FcGhlbWVyaXNTZWdObzsKICAgICAgICBpbnQgbkF0dGl0dWRlRmxhZzsKICAgICAgICBjaGFy
IEdDUFVuaXRbMTddOwogICAgICAgIGNoYXIgR0NQTWVhbkh0RmxhZzsKICAgICAgICBkb3VibGUg
ZGZHQ1BNZWFuSHQ7CiAgICAgICAgZG91YmxlIGRmR0NQTWluSHQ7CiAgICAgICAgZG91YmxlIGRm
R0NQTWF4SHQ7CiAgICAgICAgaW50IG5HQ1BJZHNbMjU2XTsKICAgICAgICBpbnQgblBpeGVsWzI1
Nl0sbkxpbmVbMjU2XTsKICAgICAgICBkb3VibGUgZGZFbGV2WzI1Nl07CiAgICAgICAgZG91Ymxl
ICpRZGVsdGFyOwogICAgICAgIGRvdWJsZSAqSGRlbHRhdDsKICAgICAgICBjaGFyIFNlbnNvclsx
Nl07CiAgICAgICAgaW50IG5TZW5zb3I7CiAgICAgICAgRXBoZW1lcmlzU2VnX3QgKk9yYml0UHRy
OwogICAgICAgIFByb2pJbmZvX3QgKnNHZW9UcmFuc2Zvcm07CiAgICAgICAgVEJvb2wgUmF3VG9H
ZW87Cn0gU1JJVEluZm9fdDsKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgIFRCb29sIGJOSVRGUlBD
OwogICAgaW50IG5Db2VmZjsKICAgIGludCBuUGl4ZWxzLCBuTGluZXM7CiAgICBkb3VibGUgKnBh
ZGZQaXhlbE51bTsKICAgIGRvdWJsZSAqcGFkZlBpeGVsRGVuOwogICAgZG91YmxlICpwYWRmTGlu
ZU51bTsKICAgIGRvdWJsZSAqcGFkZkxpbmVEZW47CiAgICBkb3VibGUgZGZYT2ZmLCBkZlhTY2Fs
ZTsKICAgIGRvdWJsZSBkZllPZmYsIGRmWVNjYWxlOwogICAgZG91YmxlIGRmWk9mZiwgZGZaU2Nh
bGU7CiAgICBkb3VibGUgZGZQT2ZmLCBkZlBTY2FsZTsKICAgIGRvdWJsZSBkZkxPZmYsIGRmTFNj
YWxlOwogICAgZG91YmxlIGRmWEFkanVzdFszXTsKICAgIGRvdWJsZSBkZllBZGp1c3RbM107CiAg
ICBjaGFyICptYXB1bml0OwogICAgUHJvakluZm9fdCAqc1Byb2plY3Rpb247Cn0gUkZJbmZvX3Q7
CgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBpbnQgblBpeGVsczsKICAgIGludCBuTGluZXM7CiAg
ICBkb3VibGUgZGZmb2NhbDsKICAgIGRvdWJsZSBhZGZYWVpbM107CiAgICBkb3VibGUgYWRmT1BL
WzNdOwogICAgZG91YmxlIGFkZngzZFszXTsKICAgIGRvdWJsZSBhZGZ5M2RbM107CiAgICBkb3Vi
bGUgYWRmejNkWzNdOwogICAgZG91YmxlIGFkZnBpeDJtbVs0XTsKICAgIGRvdWJsZSBhZGZsaW4y
bW1bNF07CiAgICBkb3VibGUgYWRmbW0ycGl4WzRdOwogICAgZG91YmxlIGFkZm1tMmxpbls0XTsK
ICAgIGRvdWJsZSBhZGZQcm9mZlsyXTsKICAgIGRvdWJsZSBhZGZSYWRpc3RbOF07CiAgICBkb3Vi
bGUgYWRmRGVjZW50WzRdOwogICAgZG91YmxlIGRmUmFkaXVzOwogICAgZG91YmxlIGRmcmZmOwog
ICAgZG91YmxlIGRmR0NQTWluSHQ7CiAgICBkb3VibGUgZGZHQ1BNYXhIdDsKICAgIFRCb29sIGJQ
cmluT2ZmOwogICAgVEJvb2wgYkRpc3RvcnQ7CiAgICBUQm9vbCBiRGVjZW50ZXI7CiAgICBUQm9v
bCBiUmFkaXVzOwogICAgY2hhciAqdXRtdW5pdDsKICAgIGNoYXIgKm1hcHVuaXQ7CiAgICBQcm9q
SW5mb190ICpzUHJvamVjdGlvbjsKfSBBUEluZm9fdDsKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAg
IEZJTEUgKmZwX2luOwogICAgRklMRSAqZnBfb3V0OwoKICAgIGNoYXIgKnBzekZpbGVPcHRpb25z
OwoKICAgIGNoYXIgc3pGaWxlVHlwZVsxNl07CgogICAgaW50ICpwYW5JVzsKCiAgICBpbnQgKmFw
YW5JQ1s0XTsKICAgIGludCBwYW5Db3VudElDWzRdOwoKICAgIGludCAqcGFuR0VPOwogICAgaW50
IG5Db3VudEdFTzsKCiAgICBpbnQgKnBhbkxVVDsKICAgIGludCBuQ291bnRMVVQ7CgogICAgaW50
ICpwYW5CSVQ7CiAgICBpbnQgbkNvdW50QklUOwoKICAgIGludCAqcGFuVkVDOwogICAgaW50IG5D
b3VudFZFQzsKCiAgICBpbnQgKnBhbk9SQjsKICAgIGludCBuQ291bnRPUkI7CgogICAgaW50ICpw
YW5TSUc7CiAgICBpbnQgbkNvdW50U0lHOwoKICAgIGludCAqcGFuVEVYOwogICAgaW50IG5Db3Vu
dFRFWDsKCiAgICBpbnQgKnBhblBDVDsKICAgIGludCBuQ291bnRQQ1Q7CgogICAgaW50ICpwYW5C
SU47CiAgICBpbnQgbkNvdW50QklOOwoKICAgIGludCAqcGFuR0NQOwogICAgaW50IG5Db3VudEdD
UDsKICAgIGludCBuT3V0cHV0Rm9ybWF0VHlwZTsKICAgIFRCb29sIGJDbGlwVmVjdG9yczsKICAg
IFRCb29sIGJDbGlwR0NQczsKCn0gRmlsZVRyYW5zZmVyX3Q7CgoKCgoKdm9pZCBDbGVhckZpbGVU
cmFuc2ZlclN0cnVjdChGaWxlVHJhbnNmZXJfdCAqcHNGVCk7Cgp2b2lkIEFsbG9jYXRlQ2hhbm5l
bExpc3QoaW50ICpwYW5Db3VudElDLGludCAqYXBhbklDWzRdLAogICAgICAgICAgICAgICAgICAg
ICAgaW50ICpuTnVtQ2hhbixpbnQgKipwYW5EQklDLGludCAqKnBhbkRCT0MpOwoKdm9pZCBEZWFs
bG9jYXRlQ2hhbm5lbExpc3QoaW50ICoqcGFuREJJQyxpbnQgKipwYW5EQk9DKTsKCgp2b2lkIFRy
YW5zZmVySW1hZ2VyeShGSUxFICpmcF9pbixGSUxFICpmcF9vdXQsaW50IG5PdXRwdXRGb3JtYXRU
eXBlLAogICAgICAgICAgICAgICAgICAgICBpbnQgbkNvdW50SUMsaW50ICpwYW5JQyxpbnQgKnBh
bklXLGludCAqcGFuREJPQywKICAgICAgICAgICAgICAgICAgICAgY2hhciAqcHN6RGVzY3JpcHRp
b24sCiAgICAgICAgICAgICAgICAgICAgIFBDSUNvdW50ZXIgcGZuQ291bnRlciApOwoKdm9pZCBU
cmFuc2ZlckJpdE1hcHMoRklMRSogZnBfaW4sRklMRSogZnBfb3V0LAogICAgICAgICAgICAgICAg
ICAgICBpbnQgbk91dHB1dEZvcm1hdFR5cGUsaW50IG5Db3VudEJJVCwKICAgICAgICAgICAgICAg
ICAgICAgaW50ICpwYW5CSVQsaW50ICpwYW5JVywKICAgICAgICAgICAgICAgICAgICAgY2hhciAq
cHN6RGVzY3JpcHRpb24sUENJQ291bnRlciBwZm5Db3VudGVyKTsKCnZvaWQgVHJhbnNmZXJWZWN0
b3JzKEZJTEUgKmZwX2luLEZJTEUgKmZwX291dCxpbnQgbk91dHB1dEZvcm1hdFR5cGUsCiAgICAg
ICAgICAgICAgICAgICAgIGludCBuQ291bnRWRUMsaW50ICpwYW5WRUMsaW50ICpwYW5JVyxUQm9v
bCBiQ2xpcCwKICAgICAgICAgICAgICAgICAgICAgY2hhciAqcHN6RGVzY3JpcHRpb24sCiAgICAg
ICAgICAgICAgICAgICAgIFBDSUNvdW50ZXIgcGZuQ291bnRlcik7Cgp2b2lkIFRyYW5zZmVyR0NQ
cyhGSUxFICpmcF9pbixGSUxFICpmcF9vdXQsaW50IG5PdXRwdXRGb3JtYXRUeXBlLAogICAgICAg
ICAgICAgICAgICBpbnQgbkNvdW50R0NQLGludCAqcGFuR0NQLGludCAqcGFuSVcsCiAgICAgICAg
ICAgICAgICAgIGNoYXIgKnBzekRlc2NyaXB0aW9uKTsKCnZvaWQgVHJhbnNmZXJURVhzKEZJTEUg
KmZwX2luLEZJTEUgKmZwX291dCxpbnQgbk91dHB1dEZvcm1hdFR5cGUsCiAgICAgICAgICAgICAg
ICAgIGludCBuQ291bnRURVgsaW50ICpwYW5URVgsaW50ICpwYW5JVywKICAgICAgICAgICAgICAg
ICAgY2hhciAqcHN6RGVzY3JpcHRpb24pOwoKdm9pZCBUcmFuc2ZlckJJTnMoRklMRSAqZnBfaW4s
RklMRSAqZnBfb3V0LGludCBuT3V0cHV0Rm9ybWF0VHlwZSwKICAgICAgICAgICAgICAgICAgaW50
IG5Db3VudEJJTixpbnQgKnBhbkJJTixpbnQgKnBhbklXLAogICAgICAgICAgICAgICAgICBjaGFy
ICpwc3pEZXNjcmlwdGlvbik7Cgp2b2lkIFRyYW5zZmVyUENUcyhGSUxFICpmcF9pbixGSUxFICpm
cF9vdXQsaW50IG5PdXRwdXRGb3JtYXRUeXBlLAogICAgICAgICAgICAgICAgICBpbnQgbkNvdW50
UENULGludCAqcGFuUENULAogICAgICAgICAgICAgICAgICBjaGFyICpwc3pEZXNjcmlwdGlvbik7
Cgp2b2lkIFRyYW5zZmVyTFVUcyhGSUxFICpmcF9pbixGSUxFICpmcF9vdXQsaW50IG5PdXRwdXRG
b3JtYXRUeXBlLAogICAgICAgICAgICAgICAgICBpbnQgbkNvdW50TFVULGludCAqcGFuTFVULAog
ICAgICAgICAgICAgICAgICBjaGFyICpwc3pEZXNjcmlwdGlvbik7Cgp2b2lkIFRyYW5zZmVyU0lH
cyhGSUxFICpmcF9pbixGSUxFICpmcF9vdXQsaW50IG5PdXRwdXRGb3JtYXRUeXBlLAogICAgICAg
ICAgICAgICAgICBpbnQgbkNvdW50U0lHLGludCAqcGFuU0lHLGludCAqcGFuSVcsCiAgICAgICAg
ICAgICAgICAgIGNoYXIgKnBzekRlc2NyaXB0aW9uKTsKCnZvaWQgVHJhbnNmZXJPUkJzKEZJTEUg
KmZwX2luLEZJTEUgKmZwX291dCxpbnQgbk91dHB1dEZvcm1hdFR5cGUsCiAgICAgICAgICAgICAg
ICAgIGludCBuQ291bnRPUkIsaW50ICpwYW5PUkIsaW50ICpwYW5JVywKICAgICAgICAgICAgICAg
ICAgY2hhciAqcHN6RGVzY3JpcHRpb24pOwoKdm9pZCBVcGRhdGVDaGFubmVsSGlzdG9yeShGSUxF
ICpmcF9pbixGSUxFICpmcF9vdXQsaW50IG5Db3VudElDLAogICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCAqcGFuSUMsaW50ICpwYW5EQk9DLGNoYXIgKnBzekRlc2NyaXB0aW9uKTsKCnZvaWQg
VXBkYXRlU2VnbWVudEhpc3RvcnkoRklMRSAqZnBfaW4sRklMRSAqZnBfb3V0LGludCBuQ291bnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpwYW5JblNlZyxpbnQgKnBhbk91dFNlZyxj
aGFyICpwc3pEZXNjcmlwdGlvbik7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBUeXBlOwog
IGNoYXIgKk5hbWU7CiAgdW5zaWduZWQgY2hhciAqRGF0YUNhY2hlOwogIGludCBDYWNoZVNpemU7
CiAgY2hhciAqKkRpckVudHJ5OwogIGludCBEaXJFbnRyaWVzOwogIEZJTEUgKmZwOwogIGludCBm
cFByaXZhdGU7Cn0gR0RCVGVzdEluZm9fdDsKCnR5cGVkZWYgR0RCVGVzdEluZm9fdCBHREJUZXN0
SW5mbzsKCnR5cGVkZWYgc3RydWN0CnsKICAgIGRvdWJsZSB4OwogICAgZG91YmxlIHk7Cn0gR0RC
VmVydGV4MkQ7CgoKZXh0ZXJuIEdEQlZlcnRleCBnc0dEQlZlcnRleE1pbjsKZXh0ZXJuIEdEQlZl
cnRleCBnc0dEQlZlcnRleE1heDsKZXh0ZXJuIEdEQlZlcnRleCBnc0dEQlZlcnRleFplcm87CgoK
dHlwZWRlZiB1aW50MzIgR0RCRmxhZ3M7CnR5cGVkZWYgdWludDMyIEdEQkhpbnRzOwoKCgoKCgp0
eXBlZGVmIHVuaW9uCnsKICBmbG9hdCBmRmxvYXQ7CiAgZG91YmxlIGREb3VibGU7CiAgY2hhciAq
cHN6U3RyaW5nOwogIGludDMyIG5JbnRlZ2VyOwogIGludDMyICpwYW5JbnRzOwp9IEdEQkZpZWxk
LCAqR0RCUmVjb3JkOwoKdHlwZWRlZiBpbnQgR0RCRmllbGRUeXBlOwojIDk2NSAiLi4vLi4vLi4v
bGliL2dkYi5oIgp0eXBlZGVmIHN0cnVjdAp7CiAgICBjaGFyICpwc3pOYW1lOwogICAgY2hhciAq
cHN6RGVzYzsKICAgIEdEQkZpZWxkVHlwZSBlVHlwZTsKICAgIEdEQkZpZWxkIHVEZWZhdWx0Owog
ICAgY2hhciAqcHN6Rm9ybWF0Owp9IEdEQkRlZm47CgoKCgoKdHlwZWRlZiBpbnQgR0RCQW5nbGVV
bml0OwojIDk5MCAiLi4vLi4vLi4vbGliL2dkYi5oIgpzdHJ1Y3QgR0RCR3JvdXBJbmRleF90Owpz
dHJ1Y3QgR0RCSW5mb19zOwpzdHJ1Y3QgR0RCUVQ7CnN0cnVjdCBHREJUb3BvSW5mb190OwoKc3Ry
dWN0IEdEQkxheWVyX3QKewogICAgc3RydWN0IEdEQkluZm9fcyAqcHNNZXRob2RzOwogICAgdm9p
ZCAqcE5hdGl2ZUluZm87CiAgICBGSUxFICpmcDsKICAgIGludCBuU2VnbWVudDsKICAgIGNoYXIg
KnBzek5hbWU7CiAgICBjaGFyICpwc3pEZXNjOwoKCgogICAgR0RCRmxhZ3MgZkZsYWdzOwoKCgog
ICAgaW50IG5GaWVsZHM7CiAgICBHREJEZWZuICpwYXNEZWZuOwoKCgogICAgQ0NISGFuZGxlIGhN
b2RDYWNoZTsKICAgIENDSEhhbmRsZSBoUmVhZENhY2hlOwogICAgQ0NISGFuZGxlIGhEZWxldGVk
Q2FjaGU7CiAgICBpbnQgbk1vZENhY2hlT3B0aW9uczsKICAgIGludCBuUmVhZENhY2hlT3B0aW9u
czsKICAgIGludCBuUmVhZENhY2hlU2l6ZTsKICAgIGludCBuTW9kQ2FjaGVTaXplOwoKCgogICAg
VEJvb2wgYk5vQ2FjaGU7CiAgICBUQm9vbCBiMkQ7CgoKCiAgICBUQm9vbCBiRXh0ZW50c0RpcnR5
OwogICAgR0RCVmVydGV4IHNNaW47CiAgICBHREJWZXJ0ZXggc01heDsKCgoKICAgIGludCBpUmVw
Q29kZUZpZWxkOwogICAgaW50IGlHcm91cElkRmllbGQ7CiAgICBpbnQgaUNoaWxkTGlzdEZpZWxk
OwogICAgaW50IGlUZXh0RmllbGQ7CiAgICBpbnQgaUFuZ2xlRmllbGQ7CiAgICBpbnQgaUhlaWdo
dEZpZWxkOwoKCgoKICAgIEdEQkFuZ2xlVW5pdCBlQW5nbGVVbml0OwoKCgoKICAgIHN0cnVjdCBH
REJHcm91cEluZGV4X3QgKmhHcm91cEluZGV4OwoKCgogICAgc3RydWN0IEdEQlFUICpwc1F1YWRU
cmVlOwoKCgoKICAgIGludCBuU2hhcGVDb3VudDsKICAgIGludCBiU2hhcGVDb3VudFZhbGlkOwoK
ICAgIGludCBuUG9pbnRzQ291bnQ7CiAgICBpbnQgbkxpbmVzQ291bnQ7CiAgICBpbnQgbkFyZWFz
Q291bnQ7CiAgICBUQm9vbCBiU2hhcGVzQ291bnRUeXBlVmFsaWQ7CgoKCgogICAgc3RydWN0IEdE
QlRvcG9JbmZvX3QgKnBzVG9wbzsKCiAgICBpbnQgaVhDb29yZEZpZWxkOwogICAgaW50IGlZQ29v
cmRGaWVsZDsKCgoKCiAgICBHREJTaGFwZUlkICpwYWhTZWxlY3RlZElkczsKICAgIGludCBuU2Vs
ZWN0ZWRDb3VudDsKICAgIGludCBuTG9ja2VkU2VsZWN0aW9uQ291bnQ7CgogICAgVEJvb2wgYlN5
bmNpbmc7CgogICAgc3RydWN0IEdEQlZlY1VuZG9MZXZlbF90ICpwc1ZVTDsKICAgIHZvaWQgKnBK
T0xUVmVjdG9yTGF5ZXI7CgoKCgogICAgaW50IGlSaW5nU3RhcnRGaWVsZDsKfTsKCnR5cGVkZWYg
c3RydWN0IEdEQkxheWVyX3QgKiBHREJMYXllcjsKCnR5cGVkZWYgc3RydWN0IHsKICAgIHZvaWQg
Km5vdGhpbmc7Cn0gR0RCUnN0OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgZG91YmxlIGRmQm91bmRh
cnk7CiAgICBkb3VibGUgZGZWYWx1ZTsKfSBHREJCcmVha1BvaW50TFVUX3Q7Cgp0eXBlZGVmIHN0
cnVjdCB7CiAgICBkb3VibGUgZGZCb3VuZGFyeTsKICAgIHVuc2lnbmVkIGNoYXIgblJlZDsKICAg
IHVuc2lnbmVkIGNoYXIgbkdyZWVuOwogICAgdW5zaWduZWQgY2hhciBuQmx1ZTsKfSBHREJCcmVh
a1BvaW50UENUX3Q7Cgp0eXBlZGVmIHN0cnVjdAp7CiAgICBHREJWZXJ0ZXggKnBhc1ZlcnRpY2Vz
OwogICAgaW50IG5Db3VudDsKICAgIEdEQkZpZWxkICpwYXNGaWVsZHM7Cn0gR0RCU2hhcGU7Cgp0
eXBlZGVmIHN0cnVjdAp7CiAgICBHREJWZXJ0ZXggKnBhc1ZlcnRpY2VzOwogICAgaW50IG5Db3Vu
dDsKICAgIEdEQkZpZWxkICogcGFzRmllbGRzOwogICAgR0RCRGVmbiAqcGFzRGVmbjsKICAgIGlu
dCBuRmllbGRzOwp9IEdEQkZhdFNoYXBlOwoKCgoKCnR5cGVkZWYgc3RydWN0IEdEQkNhcHNfdAp7
CgoKCiAgICBUQm9vbCBiSGFzVmVydGljZXM7CiAgICBUQm9vbCBiVmVydGljZXNPbmx5OwoKCgog
ICAgVEJvb2wgYkhhc0F0dHJpYnV0ZXM7CiAgICBUQm9vbCBiQXR0cmlidXRlc09ubHk7CgoKCgoK
CiAgICBUQm9vbCBiQWRkRmllbGQ7CgoKCgoKCiAgICBUQm9vbCBiQWRkUmFuZEZpZWxkOwoKCgoK
ICAgIFRCb29sIGJDYW5DcmVhdGU7CgoKCgogICAgVEJvb2wgYkNhbk1vZGlmeTsKCgoKCgoKICAg
IFRCb29sIGJSYW5kb21VcGRhdGU7CgoKCgoKCiAgICBUQm9vbCBiQ3JlYXRlTGF5ZXJzOwoKCgoK
CiAgICBpbnQgbk1heExheWVyczsKCgoKCiAgICBUQm9vbCBiRGVsZXRlTGF5ZXJzOwoKCgoKCgog
ICAgVEJvb2wgYkNhbkNyZWF0ZUxheWVyc0F0QW55VGltZTsKCgoKCiAgICBUQm9vbCBiSGFzRmxv
YXRzOwogICAgVEJvb2wgYkhhc0ludHM7CiAgICBUQm9vbCBiSGFzRG91YmxlczsKICAgIFRCb29s
IGJIYXNDaGFyOwogICAgVEJvb2wgYkhhc0ludExpc3Q7CgoKCgoKICAgIFRCb29sIGJOZWVkc0V4
dGVudHM7CgoKCgoKICAgIFRCb29sIGJOZWVkc051bWJlckVudGl0aWVzUGVyTGF5ZXI7CgoKCgoK
ICAgIFRCb29sIGJOYXRpdmVMYXllclJldHVybnNDb3B5OwoKCgoKCgogICAgR0RCRGVmbiAqKnBh
cGFzRGVmbjsKCgoKCiAgICBUQm9vbCBiQ2FuUmVhZFJlcFRhYmxlOwogICAgVEJvb2wgYkNhbldy
aXRlUmVwVGFibGU7CiAgICBUQm9vbCBiQ2FuV3JpdGVSZXBUYWJsZUxvc3NsZXNzbHk7CiMgMTI1
MSAiLi4vLi4vLi4vbGliL2dkYi5oIgogICAgVEJvb2wgYkhpZGVGcm9tVXNlcjsKICAgIFRCb29s
IGJIaWRlRnJvbVVzZXJJbkZpbGVTZWxlY3RvcjsKCgoKCgogICAgVEJvb2wgYlNwYXRpYWxRdWVy
eTsKICAgIFRCb29sIGJBdHRyaWJ1dGVRdWVyeTsKCgoKCiAgICBUQm9vbCBiVXNlcnNQYXNzd29y
ZDsKCgoKCiAgICBUQm9vbCBiQ2Fubm90Q3JlYXRlUnN0OwoKfSBHREJDYXBhYmlsaXRpZXM7CgoK
CgoKdHlwZWRlZiBzdHJ1Y3QgewogIEZJTEUgKmZwU3JjOwogIGludCBuREJJQzsKCiAgaW50IG5U
YXJnZXRDaGFuOwoKICBUQm9vbCBiQ2xlYW47CiAgVEJvb2wgYlVzZUZvckhpc3RvZ3JhbTsKCiAg
ZG91YmxlIGRmUmVzRmFjdG9yOwp9IEdEQk92ZXJ2aWV3SW5mb190OwoKCgoKCnR5cGVkZWYgc3Ry
dWN0IHsKICAgIEZJTEUgKmZwU3JjOwogICAgaW50IG5MYXllclR5cGU7CiAgICBpbnQgblNyY0xh
eWVyOwogICAgaW50ICpwYW5EQklXOwoKICAgIGludCBuRHN0TGF5ZXI7CgogICAgaW50IG5PcHRp
b25zOwoKICAgIFRCb29sIGJDbGlwR2VvOwogICAgZG91YmxlIGRmQ2xpcFhPZmY7CiAgICBkb3Vi
bGUgZGZDbGlwWU9mZjsKICAgIGRvdWJsZSBkZkNsaXBYU2l6ZTsKICAgIGRvdWJsZSBkZkNsaXBZ
U2l6ZTsKCiAgICB1bmlvbgogICAgewogICAgICAgIHN0cnVjdAogICAgICAgIHsKICAgICAgICAg
ICAgVEJvb2wgKCpwZm5Qcm9jV2l0aElkKShzdHJ1Y3QgR0RCTGF5ZXJfdCosIEdEQlNoYXBlSWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0RCU2hhcGUq
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQkxheWVyLCBHREJT
aGFwZSAqLCBUQm9vbCwgVEJvb2wgKik7CiAgICAgICAgICAgIHZvaWQgKCpwZm5NYXBwaW5nRnVu
YykoR0RCTGF5ZXIsIEdEQkxheWVyLCBpbnQgKik7CiAgICAgICAgICAgIHZvaWQgKCpwZm5Db3B5
TGF5ZXJTdHJ1Y3QpKEdEQkxheWVyLCBHREJMYXllcik7CiAgICAgICAgfSBzVk9wdDsKCiAgICAg
ICAgc3RydWN0CiAgICAgICAgewogICAgICAgICAgICB2b2lkICgqcGZuUHJvY2Vzc1RpbGUpKCBp
bnQsIGludCwgaW50LCBpbnQsIHZvaWQgKiApOwogICAgICAgIH0gc0lPcHQ7CiAgICB9IHU7Cn0g
R0RCVHJhbnNmZXJMYXllckluZm87Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBGSUxFICpmcERzdDsK
ICAgIGludCBuRHN0Q3JlYXRlVHlwZTsKICAgIGNoYXIgKnBzekRzdENyZWF0ZU9wdGlvbnM7CiAg
ICBjaGFyICpwc3pEc3RDcmVhdGVGaWxlbmFtZTsKCiAgICBjaGFyICpwc3pQcm9jZXNzSW5nOwog
ICAgY2hhciAqcHN6UHJvY2Vzc0VkOwoKICAgIGludCBuT3B0aW9uczsKCiAgICBpbnQgKnBhbkRC
T1c7CgogICAgSU1QUHJvZ3Jlc3NGdW5jIHBmblByb2dyZXNzOwogICAgdm9pZCAqcFByb2dyZXNz
QXJnOwoKICAgIGludCBuTGF5ZXJzOwogICAgR0RCVHJhbnNmZXJMYXllckluZm8gKipwYXBzTGF5
ZXJzOwoKfSBHREJUcmFuc2ZlckluZm87CgpHREJUcmFuc2ZlckluZm8gKiBHREJDcmVhdGVUcmFu
c2Zlciggdm9pZCApOwp2b2lkIEdEQkRlc3Ryb3lUcmFuc2ZlciggR0RCVHJhbnNmZXJJbmZvICog
KTsKR0RCVHJhbnNmZXJMYXllckluZm8gKgogICAgICAgIEdEQkFkZFRyYW5zZmVyTGF5ZXIoIEdE
QlRyYW5zZmVySW5mbyAqLCBGSUxFICosIGludCwgaW50LCBpbnQgKiwgaW50ICk7CgpUQm9vbCBH
REJUcmFuc2ZlckxheWVycyggR0RCVHJhbnNmZXJJbmZvICogKTsKIyAxMzcwICIuLi8uLi8uLi9s
aWIvZ2RiLmgiCnR5cGVkZWYgZW51bSB7CiAgR0RCU0FsbCwKICBHREJTTmVhcmVzdCwKICBHREJT
TmVhcmVzdFdpdGhEaXN0YW5jZSwKICBHREJTUG9seWdvbnNJbnNpZGUsCiAgR0RCU1JhZGl1cywK
ICBHREJTUmVjdCwKICBHREJTSW5zaWRlUG9seSwKICBHREJTQ3V0UG9seSwKICBHREJTT3V0c2lk
ZVBvbHksCiAgR0RCU0F0dHJpYnV0ZSwKICBHREJTSW5jbHVzaXZlLAogIEdEQlNOZWFyZXN0Tm90
SW5MaXN0LAogIEdEQlNOZWFyZXN0M0QsCiAgR0RCU05lYXJlc3ROb3RJbkxpc3QzRCwKICBHREJT
UmVwcm9qZWN0UmVjdCwKICBHREJTUmVwcm9qZWN0TmVhcmVzdCwKICBHREJTUmFkaXVzTmVhcmVz
dCwKICBHREJTUmFkaXVzTm90SW5MaXN0LAogIEdEQlNQcm9wZXJseUluc2lkZVBvbHkKCgp9IEdE
QlNlYXJjaFR5cGU7CgoKCgp0eXBlZGVmIHN0cnVjdCBHREJJbmZvX3MKewogICAgdm9pZCAoKlNp
emVJbmZvKSAoIEZJTEUgKiwgaW50ICosIGludCAqLCBpbnQgKiApOwogICAgaW50ICgqQ2hhblhT
aXplKSAoIEZJTEUgKiApOwogICAgaW50ICgqQ2hhbllTaXplKSAoIEZJTEUgKiApOwogICAgaW50
ICgqQ2hhbk51bSkgKCBGSUxFICogKTsKICAgIGludCAoKkNoYW5UeXBlKSAoIEZJTEUgKiwgaW50
ICk7CiAgICB2b2lkICgqQnl0ZUNoYW5JTykgKCBGSUxFICosIGludCwgaW50LCBpbnQsIGludCwg
aW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciAqLCBpbnQsIGludCwgaW50LCBpbnQgKiApOwogICAgdm9pZCAoKkludENoYW5JTykgKCBGSUxF
ICosIGludCwgaW50LCBpbnQsIGludCwgaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50MzIgKiwgaW50LCBpbnQsIGludCwgaW50ICogKTsKICAgIHZvaWQgKCpS
ZWFsQ2hhbklPKSAoIEZJTEUgKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAqLCBpbnQsIGludCwgaW50LCBpbnQg
KiApOwogICAgRklMRSAqKCpDcmVhdGUpICggY2hhciAqLCBpbnQsIGludCwgaW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBjaGFyICogKTsKICAgIGludCAo
Kkdlb3JlZklPKSAoIEZJTEUgKiwgaW50LCBjaGFyICosIGRvdWJsZSAqLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlICosIGRvdWJsZSAqLCBkb3VibGUgKiAp
OwogICAgaW50ICgqR2VvcmVmSU8yKSAoIEZJTEUgKiwgaW50LCBjaGFyICosIGRvdWJsZSAqLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlICosIGRvdWJsZSAq
LCBkb3VibGUgKiAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3Vi
bGUgKiwgZG91YmxlICopOwogICAgaW50ICgqSGludCkgKCBGSUxFICogKTsKICAgIGludCAoKkNo
YW5EZXNjSU8pICggRklMRSAqLCBpbnQsIGludCwgY2hhciAqICk7CiAgICB2b2lkICgqQ2xvc2Up
ICggRklMRSAqICk7CiAgICBGSUxFICooKk9wZW4pICggY2hhciAqLCBjaGFyICogKTsKICAgIEZJ
TEUgKigqUmVvcGVuKSAoIEZJTEUgKiApOwogICAgbG9uZyAoKkZpbGVBdHRyaWJ1dGUpICggdm9p
ZCApOwogICAgbG9uZyBEZWZhdWx0QXR0cmlidXRlOwogICAgdm9pZCAoKkZpbGVEZXNjKSAoIEZJ
TEUgKiApOwogICAgdm9pZCAoKlNlZ0Rlc2NJTykgKCBGSUxFICosIGludCwgaW50LCBpbnQsIGNo
YXIgKiApOwogICAgdm9pZCAoKlZlY3RvckluZm8pICggRklMRSAqLCBpbnQsIGludCwgVkluZm9f
dCAqICk7CiAgICBpbnQgKCpWZWN0b3JJTykgKCBWSW5mb190ICosIGludCwgaW50LCBpbnQsIGlu
dCAqLCBpbnQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMy
ICosIGludDMyICosIGRvdWJsZSAqKiwgZG91YmxlICosCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgKTsKICAgIGludCAoKlNlZ05leHQpICggRklMRSAqLCBpbnQs
IGludCApOwogICAgaW50ICgqR2V0Q2hhbkluZm8pICggRklMRSAqLCBpbnQsIGNoYXIgKiwgaW50
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyAqLCBsb25nICos
IGxvbmcgKiwgaW50ICogKTsKICAgIHZvaWQgKCpQY3RJTykgKCBGSUxFICosIGludCwgaW50LCB1
bnNpZ25lZCBjaGFyICogKTsKICAgIHZvaWQgKCpCcmVha1BvaW50UGN0SU8pICggRklMRSAqLCBp
bnQsIGludCwKICAgICAgICAgICAgICAgICAgICBpbnQgKiwgaW50ICosIEdEQkJyZWFrUG9pbnRQ
Q1RfdCAqKik7CiAgICB2b2lkICgqTHV0SU8pICggRklMRSAqLCBpbnQsIGludCwgdW5zaWduZWQg
Y2hhciAqICk7CiAgICB2b2lkICgqQnJlYWtQb2ludEx1dElPKSAoIEZJTEUgKiwgaW50LCBpbnQs
CiAgICAgICAgICAgICAgICAgICAgaW50ICosIGludCAqLCBHREJCcmVha1BvaW50TFVUX3QgKiog
KTsKICAgIHZvaWQgKCpCaXRtYXBJTykgKCBGSUxFICosIGludCwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICos
IGludCwgaW50ICk7CiAgICBpbnQgKCpUZXN0T3BlbikgKCBHREJUZXN0SW5mb190ICogKTsKICAg
IHZvaWQgKCpUZXh0QWNjZXNzKSAoIEZJTEUgKiwgVEluZm9fdCAqLCBjaGFyICosIGludCApOwog
ICAgaW50ICgqVGV4dFJlYWQpICggVEluZm9fdCAqLCBjaGFyICosIGludCApOwogICAgdm9pZCAo
KlRleHRXcml0ZSkgKCBUSW5mb190ICosIGNoYXIgKiApOwogICAgdm9pZCAoKlN5bmMpICggRklM
RSAqICk7CiAgICB2b2lkICgqRmlsZURlc2NJTykgKCBGSUxFICosIGludCwgaW50LCBjaGFyICog
KTsKICAgIGludCAoKlByb2plY3Rpb25JTykgKCBGSUxFICosIGludCwgUHJvakluZm9fdCAqICk7
CiAgICBjaGFyIFNob3J0TmFtZVs1XTsKICAgIGNoYXIgRXh0ZW5zaW9uWzRdOwogICAgY2hhciAq
TG9uZ05hbWU7CiAgICBpbnQgcGFkZGluZ1s4XTsKICAgIGludCAoKk1lbUNoYW5JbmZvKSAoIEZJ
TEUgKiwgaW50LCB1bnNpZ25lZCBjaGFyICoqLCBsb25nICosIGxvbmcgKiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCAqICk7CiAgICB2b2lkICgqR2NwSU8pICggRklMRSAq
LCBpbnQsIGludCwgaW50ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICosIGNoYXIgKiwgY2hhciAqLCBjaGFyICosIGludCAqLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG91YmxlICosIGRvdWJsZSAqLCBkb3VibGUgKiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqLCBkb3VibGUgKiwgZG91YmxlICogKTsKCgogICAg
R0RCTGF5ZXIgKCpHZXRMYXllcikgKEZJTEUgKiwgaW50KTsKICAgIEdEQkxheWVyICgqQ3JlYXRl
TGF5ZXIpIChGSUxFICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICopOwogICAgdm9pZCAoKkRlbGV0ZUxheWVy
KSAoRklMRSAqLCBpbnQpOwoKICAgIGludCAoKkdldFByb2plY3Rpb25JbmZvKSAoR0RCTGF5ZXIg
LCBQcm9qSW5mb190ICopOwogICAgdm9pZCAoKlNldFByb2plY3Rpb25JbmZvKSAoR0RCTGF5ZXIg
LCBQcm9qSW5mb190ICopOwoKICAgIEdEQlNoYXBlSWQgKCpHZXROZXh0U2hhcGVJZCkoR0RCTGF5
ZXIgLCBHREJTaGFwZUlkKTsKICAgIHZvaWQgKCpEZWxldGVTaGFwZSkgKEdEQkxheWVyICwgR0RC
U2hhcGVJZCk7CiAgICBHREJTaGFwZUlkICgqQ3JlYXRlU2hhcGUpIChHREJMYXllciAsIEdEQlNo
YXBlSWQpOwoKICAgIEdEQlZlcnRleCAqKCpHZXRWZXJ0aWNlcykgKEdEQkxheWVyICxHREJTaGFw
ZUlkLCBpbnQgKik7CiAgICB2b2lkICgqU2V0VmVydGljZXMpIChHREJMYXllciAsR0RCU2hhcGVJ
ZCwgaW50LEdEQlZlcnRleCAqKTsKCiAgICBHREJGaWVsZCAqICgqR2V0UmVjb3JkKSAoR0RCTGF5
ZXIsIEdEQlNoYXBlSWQpOwogICAgdm9pZCAoKlNldFJlY29yZCkgKEdEQkxheWVyLCBHREJTaGFw
ZUlkLCBHREJGaWVsZCAqKTsKCiAgICBHREJTaGFwZSAqKCpHZXRTaGFwZSkgKEdEQkxheWVyICwg
R0RCU2hhcGVJZCk7CiAgICB2b2lkICgqU2V0U2hhcGUpIChHREJMYXllciAsIEdEQlNoYXBlSWQs
IEdEQlNoYXBlICopOwoKICAgIFRCb29sICgqQWRkRmllbGQpIChHREJMYXllciwgY2hhciAqLCBH
REJGaWVsZFR5cGUsIEdEQkZpZWxkICopOwogICAgVEJvb2wgKCpEZWxldGVGaWVsZCkgKEdEQkxh
eWVyICwgY2hhciAqKTsKCiAgICB2b2lkICooKkdldFJzdCkgKEdEQkxheWVyKTsKICAgIHZvaWQg
KCpTZXRSc3QpIChHREJMYXllciwgdm9pZCAqKTsKICAgIFRCb29sICgqQ2xlYXJMYXllcikgKEdE
QkxheWVyKTsKICAgIFRCb29sICgqU2V0VXBkYXRlTW9kZSkgKEdEQkxheWVyLCBUQm9vbCk7Cgog
ICAgR0RCQ2FwYWJpbGl0aWVzIHNDYXBhYmlsaXRpZXM7CgogICAgY2hhciAqKigqTWV0YURhdGFJ
TykgKEZJTEUgKiwgaW50LCBpbnQsIGludCwgY2hhciAqKik7CgogICAgVEJvb2wgKCpDb3B5VG9w
b0xheWVycykoRklMRSAqLCBHREJMYXllciwgR0RCTGF5ZXIqLCBjb25zdCBjaGFyICosCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJMYXllciwgR0RCTGF5ZXIqLCBjb25zdCBj
aGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJMYXllciwgR0RCTGF5
ZXIqLCBjb25zdCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lD
b3VudGVyKTsKCiAgICB2b2lkICgqV3JpdGVIaXN0b3J5KSAoRklMRSAqLCBpbnQsIGludCwgY29u
c3QgY2hhciAqKTsKICAgIGNvbnN0IGNoYXIgKigqUmVhZEhpc3RvcnkpIChGSUxFICosIGludCwg
aW50LCBpbnQpOwoKICAgIHZvaWQgKCpDb21wcmVzcykgKEZJTEUgKik7CiAgICB2b2lkICgqQ2hh
bkFkZCkgKEZJTEUgKiwgaW50LCBpbnQsIFBDSUNvdW50ZXIpOwogICAgdm9pZCAoKkNoYW5EZWxl
dGUpIChGSUxFICosIGludCwgaW50ICosIFBDSUNvdW50ZXIpOwogICAgdm9pZCAoKkJ1aWxkT3Zl
cnZpZXdzKShGSUxFICosIGludCwgaW50ICosIGludCwgVEJvb2wsIGNvbnN0IGNoYXIgKiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNUFByb2dyZXNzRnVuYywgdm9pZCAqICk7
CiAgICBUQm9vbCAoKkdldFRpbGVJbmZvKSAoRklMRSAqLCBpbnQsIGludCAqLCBpbnQgKik7Cgog
ICAgR0RCT3ZlcnZpZXdJbmZvX3QgKigqR2V0T3ZlcnZpZXdzKShGSUxFICosIGludCAqICk7Cgog
ICAgdm9pZCAoKkRlbGV0ZSkgKCBjaGFyICogKTsKICAgIHZvaWQgKCpTYXRFcGhlbWVyaXNJTykg
KEZJTEUgKiwgaW50LCBpbnQsIEVwaGVtZXJpc1NlZ190ICopOwogICAgdm9pZCAoKkJpbmFyeUlP
KSAoRklMRSAqLCBpbnQsIGludCwgaW50LCBpbnQsIHVuc2lnbmVkIGNoYXIgKik7CiAgICBpbnQg
KCpHZXRCaW5hcnlMZW5ndGgpIChGSUxFICosIGludCk7CiAgICBpbnQgKCpTZWdDcmVhdGUpIChG
SUxFICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQgKTsKICAgIHZvaWQgKCpBcnJh
eUlPKSAoRklMRSAqLCBpbnQsIGludCwgaW50ICosIGludCAqLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvdWJsZSAqKixjaGFyKik7CgogICAgR0RCU2hhcGVJZCAqKCpTcGF0
aWFsUXVlcnkpIChHREJMYXllciwgaW50ICosIEdEQlNoYXBlSWQgKiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCwgR0RCU2VhcmNoVHlwZSwgdmFfbGlzdCk7CiAgICBj
aGFyICoqKCpMYXllckxpc3QpIChGSUxFICosIFRCb29sKTsKICAgIEdEQlNoYXBlSWQgKigqQXR0
cmlidXRlUXVlcnkpIChHREJMYXllciwgaW50ICosIEdEQlNoYXBlSWQgKiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCwgY29uc3QgY2hhciAqKTsKICAgIGNoYXIgKioo
Kkxpc3ROYW1lcykgKGNvbnN0IGNoYXIgKiwgaW50KTsKICAgIGNoYXIgKiooKkxpc3RGaWVsZE5h
bWVzKSAoY29uc3QgY2hhciAqKTsKCiAgICBUQm9vbCAoKkF1dG9TZXRDaGFuUElEKSggRklMRSog
ZnAsIGludCwgdWludDMyICogKTsKICAgIFRCb29sICgqR2V0Q2hhblBJRCkoIEZJTEUqIGZwLCBp
bnQsIHVpbnQzMiAqICk7CiAgICBpbnQgKCpGaW5kQ2hhbkZyb21QSUQpKCBGSUxFKiBmcCwgdWlu
dDMyICk7CgogICAgY2hhciAqKiggKkdldFZhbGlkRmllbGRWYWx1ZXMpICggR0RCTGF5ZXIsaW50
ICk7Cgp9IEdEQkluZm9fdDsKCgoKCnN0cnVjdCBHREJHcm91cF90CnsKICAgIGludCBpR3JvdXBJ
ZDsKICAgIGludCBuRW50aXRpZXM7CiAgICBHREJTaGFwZUlkICpwYWhFbnRpdGllczsKfTsKCnR5
cGVkZWYgc3RydWN0IEdEQkdyb3VwX3QgKkdEQkdyb3VwOwoKc3RydWN0IEdEQkdyb3VwSW5kZXhf
dAp7CiAgICBHREJMYXllciBoTGF5ZXI7CiAgICBpbnQgbkdyb3VwczsKICAgIGludCBuQWxsb2Nh
dGVkR3JvdXBzOwogICAgR0RCR3JvdXAgcGFzR3JvdXBzOwogICAgaW50IG5OZXh0VW51c2VkR3Jv
dXBJZDsKfTsKCnR5cGVkZWYgc3RydWN0IEdEQkdyb3VwSW5kZXhfdCAqR0RCR3JvdXBJbmRleDsK
CgoKCnR5cGVkZWYgc3RydWN0IEdRTgp7CiAgICBzdHJ1Y3QgR1FOICpwc1BhcmVudDsKICAgIHN0
cnVjdCBHUU4gKmFwc05vZGVzWzRdOwogICAgR0RCVmVydGV4IHNNaW47CiAgICBHREJWZXJ0ZXgg
c01heDsKICAgIGludCBuU2hhcGVzOwogICAgaW50IG5DYXBhY2l0eTsKICAgIEdEQlNoYXBlSWQg
KnBhaFNoYXBlSWRzOwogICAgaW50IGlJbmRleDsKfSBHREJRdWFkTm9kZTsKCnR5cGVkZWYgc3Ry
dWN0IEdEQlFUCnsKICAgIEdEQlF1YWROb2RlICpyb290OwogICAgR0RCTGF5ZXIgaExheWVyOwog
ICAgQ0NISGFuZGxlIGhFbnRpdHlMb29rVXA7CiAgICBpbnQgbkRlcHRoOwogICAgVEJvb2wgYkl0
ZW1PdXRzaWRlUm9vdDsKfSBHREJRdWFkVHJlZTsKCnR5cGVkZWYgc3RydWN0IEdEQlFUSQp7CiAg
ICBHREJRdWFkTm9kZSAqcHNDdXJyZW50Tm9kZTsKICAgIGludCBuQ3VycmVudEluZGV4OwogICAg
R0RCVmVydGV4IHNNaW47CiAgICBHREJWZXJ0ZXggc01heDsKICAgIFRCb29sIGJFeHRlbnRzQ2hh
bmdlZDsKfSBHREJRVEl0ZXJhdG9yOwoKCgoKCgp0eXBlZGVmIHN0cnVjdCBHREJTZWFyY2hfdAp7
CiAgICBUQm9vbCAoKlNlYXJjaEZ1bmMpKHN0cnVjdCBHREJTZWFyY2hfdCAqLCBHREJTaGFwZSAq
LCBpbnQzMiAqKTsKICAgIEdEQkxheWVyIHBzTGF5ZXI7CiAgICBHREJMYXllclR5cGUgZUxheWVy
VHlwZTsKICAgIEdEQkxheWVyIHBzQXJlYUxheWVyOwogICAgY2hhciAqcHN6U2VhcmNoRXhwcjsK
ICAgIEdEQlZlcnRleCBzUG9pbnQ7CiAgICBHREJWZXJ0ZXggc01pbjsKICAgIEdEQlZlcnRleCBz
TWF4OwogICAgR0RCU2hhcGVJZCBoQ2xvc2VzdFNoYXBlSWQ7CiAgICBkb3VibGUgZERpc3RhbmNl
OwogICAgZG91YmxlICpwZERpc3RhbmNlOwogICAgaW50IGlDbG9zZXN0U2VnbWVudDsKICAgIEdE
QlNoYXBlSWQgaExhc3RTaGFwZUlkOwogICAgaW50IG5MYXN0SW5kZXg7CiAgICBUQm9vbCBiSXNG
aW5kRmlyc3Q7CgoKCgogICAgVEJvb2wgYklzQXROb2RlOwogICAgR0RCVmVydGV4IHNOb2RlOwog
ICAgZG91YmxlIGRBbmdsZTsKCgoKICAgIHN0cnVjdCBHREJRVEkgc1F1YWRJdGVyYXRvcjsKICAg
IEdEQlNoYXBlSWQgKnBhaEV4Y2x1c2lvbklkTGlzdDsKICAgIGludCBuRXhjbHVzaW9uSWRDb3Vu
dDsKCgoKICAgIGludCBuQ291bnQ7CiAgICBHREJWZXJ0ZXggKnBhc1ZlcnRpY2VzOwoKCgogICAg
aW50IG5OZWFyZXN0SW5kZXg7CiAgICBpbnQgbk5lYXJlc3RTaXplOwogICAgR0RCU2hhcGVJZCAq
cGFoTmVhcmVzdDsKICAgIGRvdWJsZSAqcGFkRGlzdGFuY2VzOwogICAgVEJvb2wgYlVzZUluc2lk
ZTsKfSBHREJTZWFyY2g7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgR0RCQ3BGdW5jc190CnsKICAgIFRC
b29sICgqUHJvY2Vzc2luZ19GdW5jKSAoR0RCTGF5ZXIsIGNvbnN0IEdEQlNoYXBlICosCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCTGF5ZXIgLCBHREJTaGFwZSAq
KTsKICAgIHZvaWQgKCpNYXBwaW5nX0Z1bmMpIChHREJMYXllciwgR0RCTGF5ZXIsIGludCAqKTsK
ICAgIHZvaWQgKCpDb3VudGVyX0Z1bmMpIChkb3VibGUpOwogICAgdm9pZCAoKkNvcHlMYXllclN0
cnVjdF9GdW5jKSAoR0RCTGF5ZXIsIEdEQkxheWVyKTsKICAgIFRCb29sICgqUHJvY1dpdGhJZF9G
dW5jKSAoR0RCTGF5ZXIsIEdEQlNoYXBlSWQsIGNvbnN0IEdEQlNoYXBlKiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJMYXllciwgR0RCU2hhcGUgKiwgVEJvb2ws
IFRCb29sICopOwoKICAgIElNUFByb2dyZXNzRnVuYyBwZm5Qcm9ncmVzczsKICAgIHZvaWQgKnBQ
cm9ncmVzc0FyZzsKfSBHREJDcEZ1bmNzOwojIDE2NzggIi4uLy4uLy4uL2xpYi9nZGIuaCIKR0RC
SW5mb190ICogR0RCUmVnaXN0ZXIgKCBpbnQgKTsKR0RCSW5mb190ICogR0RCR2V0Rm9ybWF0SW5m
byAoIGludCApOwp2b2lkIEdEQkJ5dGVDaGFuSU8gKCBGSUxFICosIGludCwgaW50LCBpbnQsIGlu
dCwgaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNo
YXIgKiwgaW50LCBpbnQsIGludCwgaW50ICogKTsKdm9pZCBHREJCeXRlQ2hhbklPTG93ICggRklM
RSAqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyICosIGludCwgaW50LCBpbnQsIGludCAqICk7CnZvaWQg
R0RCSW50Q2hhbklPICggRklMRSAqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMiAqLCBpbnQsIGludCwgaW50LCBpbnQg
KiApOwp2b2lkIEdEQkludENoYW5JT0xvdyAoIEZJTEUgKiwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzIgKiwgaW50LCBp
bnQsIGludCwgaW50ICogKTsKdm9pZCBHREJSZWFsQ2hhbklPICggRklMRSAqLCBpbnQsIGludCwg
aW50LCBpbnQsIGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9h
dCAqLCBpbnQsIGludCwgaW50LCBpbnQgKiApOwp2b2lkIEdEQlJlYWxDaGFuSU9Mb3cgKCBGSUxF
ICosIGludCwgaW50LCBpbnQsIGludCwgaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsb2F0ICosIGludCwgaW50LCBpbnQsIGludCAqICk7CnZvaWQgR0RCQml0Q2hh
bklPICggRklMRSAqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICosIGludCwgaW50LCBpbnQsIGludCAq
ICk7Cgp2b2lkIEdEQkJpdG1hcElPTG93KEZJTEUgKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCwgdW5zaWduZWQgY2hhciAqLCBpbnQsIGludCk7CgppbnQgR0RCQ2hhblR5cGUgKCBGSUxF
ICosIGludCApOwpjb25zdCBjaGFyICogR0RCQ2hhblR5cGVEZXNjcmlwdGlvblJlZiAoIGludCAp
OwppbnQgR0RCQ2hhblhTaXplICggRklMRSAqICk7CmludCBHREJDaGFuWVNpemUgKCBGSUxFICog
KTsKaW50IEdEQkNoYW5OdW0gKCBGSUxFICogKTsKdm9pZCBHREJTaXplSW5mbyAoIEZJTEUgKiwg
aW50ICosIGludCAqLCBpbnQgKiApOwppbnQgR0RCSGludCAoIEZJTEUgKiApOwpUQm9vbCBHREJU
ZXN0RGVzY3JpcHRpb24oIGNvbnN0IGNoYXIgKiApOwppbnQgR0RCQ2hhbkRlc2NJTyAoIEZJTEUg
KiwgaW50LCBpbnQsIGNoYXIgKiApOwpGSUxFICogR0RCQ3JlYXRlICggaW50LCBjb25zdCBjaGFy
ICosIGludCwgaW50LCBpbnQsIGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKik7Cgp2b2lkIEdEQkNoYW5GbHVzaChGSUxFICosIGludCk7CkZJTEUgKiBHREJP
cGVuICggY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICogKTsKRklMRSAqIEdEQlJlb3BlbiAoIEZJ
TEUgKiApOwp2b2lkIEdEQkNsb3NlICggRklMRSAqICk7CnZvaWQgR0RCQ2xvc2VKT0xURmlsZSAo
IEZJTEUgKiApOwp2b2lkIEdEQkRlbGV0ZSAoIGludCwgY29uc3QgY2hhciAqICk7ClRCb29sIEdE
QkRlbGV0ZUZpZWxkICggR0RCTGF5ZXIsIGNoYXIgKiApOwpsb25nIEdEQkZpbGVBdHRyaWJ1dGUg
KCBGSUxFICogKTsKY2hhciAqKiBHREJNZXRhRGF0YUlPICggRklMRSAqLCBpbnQsIGludCwgaW50
LCBjaGFyICoqICk7CmxvbmcgR0RCQXR0cmlidXRlICggaW50ICk7CnZvaWQgR0RCRmlsZURlc2Mg
KCBGSUxFICogKTsKdm9pZCBHREJTZWdEZXNjSU8gKCBGSUxFICosIGludCwgaW50LCBpbnQsIGNo
YXIgKiApOwoKdm9pZCBHREJWZWN0b3JJbmZvICggRklMRSAqLCBpbnQsIGludCwgVkluZm9fdCAq
ICk7CmludCBHREJWZWN0b3JJTyAoIFZJbmZvX3QgKiwgaW50LCBpbnQsIGludCwgaW50ICosCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICosIGludDMyICosIGludDMy
ICosIGRvdWJsZSAqKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3Vi
bGUgKiwgaW50ICk7CgppbnQgR0RCQ29tcGF0VmVjdG9ySU8oVkluZm9fdCAqLCBpbnQgLCBpbnQg
LCBpbnQgLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqLCBp
bnQgKiwgaW50MzIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQzMiAqLCBkb3VibGUgKiosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZG91YmxlICosIGludCApOwoKdm9pZCBHREJOZXdWZWN0b3JJbmZvKCBGSUxFICosIGludCwg
aW50LCBWSW5mb190ICogKTsKaW50IEdEQk5ld1ZlY3RvcklPKCBWSW5mb190ICosIGludCwgaW50
LCBpbnQsIGludCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
KiwgaW50MzIgKiwgaW50MzIgKiwgZG91YmxlICoqLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkb3VibGUgKiwgaW50ICk7Cgp2b2lkIEdEQkJpdG1hcElPKCBGSUxFICos
IGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiwgaW50LCBpbnQgKTsKaW50IEdEQkdlb3JlZklPKCBG
SUxFICosIGludCwgY2hhciAqLCBkb3VibGUgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZG91YmxlICosIGRvdWJsZSAqLCBkb3VibGUgKiApOwppbnQgR0RCR2VvcmVmSU8y
KCBGSUxFICosIGludCwgY2hhciAqLCBkb3VibGUgKiwgZG91YmxlICosCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqLCBkb3VibGUgKiwgZG91YmxlICosIGRvdWJs
ZSAqICk7CmludCBHREJQcm9qZWN0aW9uSU8oIEZJTEUgKiwgaW50LCBQcm9qSW5mb190ICogKTsK
dm9pZCBHREJQY3RJTyggRklMRSAqLCBpbnQsIGludCwgdW5zaWduZWQgY2hhciAqICk7CnZvaWQg
R0RCTHV0SU8oIEZJTEUgKiwgaW50LCBpbnQsIHVuc2lnbmVkIGNoYXIgKiApOwp2b2lkIEdEQkJy
ZWFrUG9pbnRQY3RJTyggRklMRSAqLCBpbnQsIGludCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50ICosIGludCAqLCBHREJCcmVha1BvaW50UENUX3QgKiogKTsK
dm9pZCBHREJCcmVha1BvaW50THV0SU8oIEZJTEUgKiwgaW50LCBpbnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqLCBpbnQgKiwgR0RCQnJlYWtQb2ludExV
VF90ICoqICk7Cgp2b2lkIEdEQkdjcElPKCBGSUxFICosIGludCwgaW50ICwgaW50LCBpbnQgKiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqLCBjaGFyICosIGNoYXIgKiwg
Y2hhciAqLCBpbnQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlICos
IGRvdWJsZSAqLCBkb3VibGUgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91
YmxlICosIGRvdWJsZSAqLCBkb3VibGUgKiApOwoKdm9pZCBHREJTYXRFcGhlbWVyaXNJTyggRklM
RSAqLCBpbnQsIGludCwgRXBoZW1lcmlzU2VnX3QgKik7CnZvaWQgR0RCU2F0RXBoZW1lcmlzRnJl
ZSggRXBoZW1lcmlzU2VnX3QgKiApOwpFcGhlbWVyaXNTZWdfdCAqR0RCU2F0RXBoZW1lcmlzRHVw
bGljYXRlKCBFcGhlbWVyaXNTZWdfdCAqICk7CkVwaGVtZXJpc1NlZ190ICpHREJCaW5hcnlUb0Vw
aGVtZXJpcyggaW50LCB1bnNpZ25lZCBjaGFyICogKTsKdW5zaWduZWQgY2hhciAqR0RCRXBoZW1l
cmlzVG9CaW5hcnkoIEVwaGVtZXJpc1NlZ190ICosIGludCAqICk7CgpTUklUSW5mb190ICpHREJT
YXRNb2RlbElPKCBGSUxFICosIGludCwgaW50LCBTUklUSW5mb190ICogKTsKdm9pZCBHREJGcmVl
U1JJVEluZm8oIFNSSVRJbmZvX3QgKiApOwpTUklUSW5mb190ICpHREJCaW5hcnlUb1NSSVRJbmZv
KCBpbnQsIHVuc2lnbmVkIGNoYXIgKiApOwp1bnNpZ25lZCBjaGFyICpHREJTUklUSW5mb1RvQmlu
YXJ5KCBTUklUSW5mb190ICosIGludCAqICk7CgpSRkluZm9fdCAqUkZBbGxvY2F0ZSAoUkZJbmZv
X3QgKiwgaW50KTsKdm9pZCBSRkRlYWxsb2NhdGUgKFJGSW5mb190ICopOwpSRkluZm9fdCAqR0RC
UkZNb2RlbElPKCBGSUxFICosIGludCwgaW50LCBSRkluZm9fdCAqICk7CnZvaWQgR0RCRnJlZVJG
SW5mbyggUkZJbmZvX3QgKiApOwpSRkluZm9fdCAqR0RCQmluYXJ5VG9SRkluZm8oIGludCwgdW5z
aWduZWQgY2hhciAqICk7CnVuc2lnbmVkIGNoYXIgKkdEQlJGSW5mb1RvQmluYXJ5KCBSRkluZm9f
dCAqLCBpbnQgKiApOwoKQVBJbmZvX3QgKkFQQWxsb2NhdGUgKEFQSW5mb190ICopOwp2b2lkIEFQ
RGVhbGxvY2F0ZSAoQVBJbmZvX3QgKik7CkFQSW5mb190ICpHREJBUE1vZGVsSU8oIEZJTEUgKiwg
aW50LCBpbnQsIEFQSW5mb190ICogKTsKdm9pZCBHREJGcmVlQVBJbmZvKCBBUEluZm9fdCAqICk7
CkFQSW5mb190ICpHREJCaW5hcnlUb0FQSW5mbyggaW50LCB1bnNpZ25lZCBjaGFyICogKTsKdW5z
aWduZWQgY2hhciAqR0RCQVBJbmZvVG9CaW5hcnkoIEFQSW5mb190ICosIGludCAqICk7Cgp2b2lk
IEdEQkFycmF5SU8oIEZJTEUgKiwgaW50LCBpbnQsIGludCAqLCBpbnQgKiwgZG91YmxlICoqLCBj
aGFyKik7CgppbnQgR0RCU2VnQ3JlYXRlKCBGSUxFICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh
ciAqLCBpbnQpOwoKaW50IEdEQlNlZ05leHQoIEZJTEUgKiwgaW50LCBpbnQgKTsKdm9pZCBHREJT
ZWdDaGVjayggRklMRSAqLCBpbnQgKiwgaW50LCBpbnQsIGNoYXIgKiApOwpUQm9vbCBHREJTZWdF
eGlzdCggRklMRSAqLCBpbnQsIGludCk7CmludCBHREJTZWdDb3VudCggRklMRSAqLCBpbnQgKTsK
aW50IEdEQkxheWVyTmFtZVRvU2VnKCBGSUxFICosIGNvbnN0IGNoYXIgKiApOwpjb25zdCBjaGFy
ICogR0RCTGF5ZXJUeXBlVG9TaG9ydE5hbWUoIGludCApOwpjb25zdCBjaGFyICogR0RCTGF5ZXJU
eXBlVG9Mb25nTmFtZSggaW50ICk7CmludCBHREJTaG9ydE5hbWVUb0xheWVyVHlwZSggY29uc3Qg
Y2hhciAqICk7CmludCBHREJHZXRDaGFuSW5mbyggRklMRSAqLCBpbnQsIGNoYXIgKiwgaW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICosIGxvbmcgKiwgbG9u
ZyAqLCBpbnQgKiApOwoKaW50IEdEQk1lbUNoYW5JbmZvKCBGSUxFICosIGludCwgdW5zaWduZWQg
Y2hhciAqKiwgbG9uZyAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICosIGlu
dCAqICk7ClRCb29sIEdEQkdldFRpbGVJbmZvKCBGSUxFICosIGludCwgaW50ICosIGludCAqICk7
CgppbnQgR0RCVGVzdE9wZW4gKCBjb25zdCBjaGFyICogKTsKaW50IEdEQlRleHRBY2Nlc3MgKCBG
SUxFICosIFRJbmZvX3QgKiwgY2hhciAqLCBpbnQsIGNoYXIgKiApOwppbnQgR0RCVGV4dFJlYWQg
KCBUSW5mb190ICosIGNoYXIgKiwgaW50ICk7CnZvaWQgR0RCVGV4dFdyaXRlICggVEluZm9fdCAq
LCBjaGFyICogKTsKdm9pZCBHREJTeW5jICggRklMRSAqICk7CnZvaWQgR0RCQ29tcHJlc3MgKCBG
SUxFICogKTsKdm9pZCBHREJDaGFuQWRkICggRklMRSAqLCBpbnQsIGludCwgUENJQ291bnRlciAp
Owp2b2lkIEdEQkNoYW5EZWxldGUgKCBGSUxFICosIGludCwgaW50ICosIFBDSUNvdW50ZXIgKTsK
dm9pZCBHREJVbml0VGVzdGluZyAodm9pZCk7CgpUQm9vbCBHREJCdWlsZE92ZXJ2aWV3cyggRklM
RSAqLCBpbnQsIGludCAqLCBpbnQsIFRCb29sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIgKiwgSU1QUHJvZ3Jlc3NGdW5jLCB2b2lkICogKTsKR0RCT3ZlcnZp
ZXdJbmZvX3QgKgogICAgICAgICAgICAgICBHREJHZXRPdmVydmlld3MgKCBGSUxFICosIGludCAq
KTsKdm9pZCBHREJDaGFuQ29weSAoIEZJTEUgKiwgaW50ICosIGludCwgRklMRSAqLCBpbnQgKiwg
aW50LCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqKSggaW50
LCBpbnQsIGludCwgdm9pZCAqKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv
aWQgKCopKCBkb3VibGUgKSApOwpUQm9vbCBHREJNdWx0aUNoYW5Db3B5KCBGSUxFICosIGludCAq
LCBpbnQgKiwgRklMRSAqLCBpbnQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCAqLCBpbnQsIGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQg
KCopKCBpbnQsIGludCwgaW50LGludCx2b2lkICopLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSU1QUHJvZ3Jlc3NGdW5jLCB2b2lkICogKTsKdm9pZCBHREJCaXRtYXBDb3B5ICgg
RklMRSAqLCBpbnQgKiwgaW50LCBGSUxFICosIGludCAqLCBpbnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2b2lkICgqKShpbnQsaW50LGludCxpbnQsdm9pZCopLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJQ291bnRlciApOwoKaW50IEdEQlZlY3RvckNv
cHkoRklMRSAqZnBfaW4sIGludCBuU2VnSW4sIEZJTEUgKmZwX291dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBuU2VnT3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVEJv
b2wgKCpUcmFuc2Zvcm1fRnVuYykoR0RCTGF5ZXIgLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0RCU2hhcGUgKiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQkxheWVyICwgR0RCU2hh
cGUgKiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqTWFwcGluZ19GdW5jKShH
REJMYXllcixHREJMYXllcixpbnQgKiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
ICgqQ291bnRlcl9GdW5jKShkb3VibGUpKTsKCmludCBHREJWZWN0b3JDcChGSUxFICpmcF9pbiwg
aW50IG5TZWdJbiwgRklMRSAqZnBfb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBu
U2VnT3V0LCBHREJDcEZ1bmNzICpwc0Z1bmNzKTsKCkdEQkxheWVyCiAgICAgICAgR0RCVmVjdG9y
VHJhbnNmZXIoR0RCTGF5ZXIgaFNyY0xheWVyLCBHREJTaGFwZUlkICpwYWhTaGFwZUlkcywKICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbkNvdW50LCBHREJMYXllciBoRHN0TGF5ZXIsIGlu
dCBuT3B0aW9ucyk7CgoKR0RCU2hhcGVJZCAqR0RCR2V0TGF5ZXJTZWxlY3Rpb25SZWYoR0RCTGF5
ZXIpOwp2b2lkIEdEQlNldExheWVyU2VsZWN0aW9uKEdEQkxheWVyLCBHREJTaGFwZUlkICosIGlu
dCk7CnZvaWQgR0RCQWRkVG9MYXllclNlbGVjdGlvbihHREJMYXllciwgR0RCU2hhcGVJZCk7CnZv
aWQgR0RCQWRkVG9NdWx0aXBsZUxheWVyU2VsZWN0aW9uKEdEQkxheWVyLCBHREJTaGFwZUlkKiwg
aW50KTsKdm9pZCBHREJSZW1vdmVMYXllclNlbGVjdGlvbihHREJMYXllciwgR0RCU2hhcGVJZCAq
LCBpbnQpOwppbnQgR0RCR2V0TGF5ZXJTZWxlY3Rpb25Db3VudChHREJMYXllcik7ClRCb29sIEdE
QklzU2hhcGVTZWxlY3RlZChHREJMYXllciwgR0RCU2hhcGVJZCk7ClRCb29sIEdEQlNldExvY2tM
YXllclNlbGVjdGlvblN0YXR1cyggR0RCTGF5ZXIsIFRCb29sICk7ClRCb29sIEdEQkdldExvY2tM
YXllclNlbGVjdGlvblN0YXR1cyggR0RCTGF5ZXIgKTsKCnZvaWQgR0RCUmVzZXRSZWFkQ2FjaGVT
aXplKHZvaWQpOwp2b2lkIEdEQlNldFJlYWRDYWNoZVNpemUoaW50IG5TaXplKTsKaW50IEdEQkdl
dFJlYWRDYWNoZVNpemUodm9pZCk7CnZvaWQgR0RCQ3JlYXRlTGF5ZXJDYWNoZXMoR0RCTGF5ZXIg
cHNMYXllciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgbk1vZE9wdGlvbnMgLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBuTW9kU2l6ZSAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IG5SZWFkT3B0aW9ucyAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IG5SZWFkU2l6ZSApOwoKVEJvb2wgR0RCTGF5ZXJDYW5I
b2xkVGlsbENvbW1pdChHREJMYXllcik7CnZvaWQgR0RCRGlzY2FyZExheWVyQ2hhbmdlcyhHREJM
YXllcik7CnZvaWQgR0RCU3luY0xheWVyKEdEQkxheWVyKTsKCnZvaWQgR0RCUmVtYXBSZWNvcmQo
R0RCTGF5ZXIsIEdEQkxheWVyLCBpbnQgKiwgR0RCU2hhcGUgKik7CmludCAqIEdEQkdldExheWVy
U3RydWN0dXJlTWFwcGluZyhHREJMYXllciBoU3JjLCBHREJMYXllciBoRGVzdCk7CmludCAqIEdE
QkdldERlZm5TdHJ1Y3R1cmVNYXBwaW5nKEdEQkRlZm4gKixpbnQsR0RCRGVmbiAqLGludCk7CgoK
aW50IEhhc2hHREJJbWFnZSggRklMRSAqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCApOwp2b2lk
IEdEQkF2Z1JlYWQoIEZJTEUgKiwgaW50LCBpbnQsIGludCwgaW50LCBmbG9hdCAqLCBpbnQsIGlu
dCwgaW50KTsKdm9pZCBHREJNb2RlUmVhZCggRklMRSAqLCBpbnQsIGludCwgaW50LCBpbnQsIGZs
b2F0ICosIGludCwgaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKTsKCnZvaWQg
R0RCUmVzYW1wbGVCeXRlSW1hZ2UgKEZJTEUgKmZwLCBkb3VibGUgZGZHZW9YT2ZmLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGZHZW9ZT2ZmLCBkb3VibGUgZGZHZW9YU2l6ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRmR2VvWVNpemUsIHVuc2lnbmVkIGNo
YXIgKnBhYnlJbWFnZUJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5CdWZY
U2l6ZSwgaW50IG5CdWZZU2l6ZSwgaW50IG5CdWZDaGFuLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgKmFuQ2hhbk1hcCwgaW50IG5SZXNhbXBsZVR5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRCb29sIGJCYWNrVXNlZCwgZG91YmxlIGRmQmFja1ZhbHVlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICBQQ0lDb3VudGVyIHBmbkNvdW50ZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRvdWJsZSBkZkZpcnN0Q291bnQsIGRvdWJsZSBkZkxhc3RDb3VudCk7Cgp2b2lk
IEdEQlJlc2FtcGxlSW50SW1hZ2UgKEZJTEUgKmZwLCBkb3VibGUgZGZHZW9YT2ZmLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGZHZW9ZT2ZmLCBkb3VibGUgZGZHZW9YU2l6ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRmR2VvWVNpemUsIGludDMyICpwYW4z
MkltYWdlQnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbkJ1ZlhTaXplLCBp
bnQgbkJ1ZllTaXplLCBpbnQgbkJ1ZkNoYW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCAqYW5DaGFuTWFwLCBpbnQgblJlc2FtcGxlVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVEJvb2wgYkJhY2tVc2VkLCBkb3VibGUgZGZCYWNrVmFsdWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBDSUNvdW50ZXIgcGZuQ291bnRlciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZG91YmxlIGRmRmlyc3RDb3VudCwgZG91YmxlIGRmTGFzdENvdW50KTsKCnZvaWQgR0RCUmVz
YW1wbGVSZWFsSW1hZ2UgKEZJTEUgKmZwLCBkb3VibGUgZGZHZW9YT2ZmLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICBkb3VibGUgZGZHZW9ZT2ZmLCBkb3VibGUgZGZHZW9YU2l6ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRmR2VvWVNpemUsIGZsb2F0ICpwYWZJbWFnZUJ1
ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5CdWZYU2l6ZSwgaW50IG5CdWZZ
U2l6ZSwgaW50IG5CdWZDaGFuLAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmFuQ2hh
bk1hcCwgaW50IG5SZXNhbXBsZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFRCb29s
IGJCYWNrVXNlZCwgZG91YmxlIGRmQmFja1ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBQQ0lDb3VudGVyIHBmbkNvdW50ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJs
ZSBkZkZpcnN0Q291bnQsIGRvdWJsZSBkZkxhc3RDb3VudCk7Cgpjb25zdCBjaGFyICogR0RCRmV0
Y2hNZXRhRGF0YUVudHJ5KEZJTEUgKiwgaW50LCBpbnQsY29uc3QgY2hhciAqKTsKdm9pZCBHREJT
ZXRNZXRhRGF0YUVudHJ5KEZJTEUgKiwgaW50LCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwp2b2lkIEdE
QkRlbGV0ZU1ldGFEYXRhRW50cmllcyhGSUxFICosIGludCwgaW50LGNvbnN0IGNoYXIgKiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
KiwgVEJvb2wpOwoKdm9pZCBHREJXcml0ZUhpc3RvcnkoRklMRSAqLCBpbnQsIGludCwgY29uc3Qg
Y2hhciAqKTsKY29uc3QgY2hhciAqIEdEQlJlYWRIaXN0b3J5KEZJTEUgKiwgaW50LCBpbnQsIGlu
dCApOwoKdm9pZCBHREJCaW5hcnlJTyggRklMRSAqLCBpbnQsIGludCwgaW50LCBpbnQsIHVuc2ln
bmVkIGNoYXIgKiApOwppbnQgR0RCR2V0QmluYXJ5TGVuZ3RoKCBGSUxFICosIGludCApOwoKdm9p
ZCBHREJKT0xUSGFyZFN5bmMoIEZJTEUgKiwgVEJvb2wgYkRlc3Ryb3lJbWFnZUxheWVycyApOwoK
dm9pZCBHREJKT0xURmlsbENoYW5uZWxzQWRkZWRMaXN0KCBGSUxFKiBmcCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBwYW5DaGFuTWFwLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbk5ld0NoYW5uZWxDb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5PbGRD
aGFubmVsQ291bnQgKTsKIyAxOTI4ICIuLi8uLi8uLi9saWIvZ2RiLmgiClRCb29sIEdEQkFzc2ln
bkFsbFBJRHMoIEZJTEUqIGZwICk7CgpUQm9vbCBHREJBdXRvU2V0Q2hhblBJRCggRklMRSogZnAs
IGludCBuQ2hhbk51bWJlciwgdWludDMyICpwdVBJRCApOwpUQm9vbCBHREJHZXRDaGFuUElEKCBG
SUxFKiBmcCwgaW50IG5DaGFuTnVtYmVyLCB1aW50MzIgKnB1UElEICk7CmludCBHREJGaW5kQ2hh
bkZyb21QSUQoIEZJTEUqIGZwLCB1aW50MzIgblBJRCApOwoKVEJvb2wgU2V0Q2hhbkNSQyhGSUxF
ICpmcCwgaW50IG5DaGFuTnVtYmVyLCB1aW50MzIgKnB1UElEICk7ClRCb29sIEdldENoYW5DUkMo
IEZJTEUqIGZwLCBpbnQgbkNoYW5OdW1iZXIsIHVpbnQzMiAqcHVQSUQgKTsKaW50IEZpbmRDaGFu
RnJvbUNSQyggRklMRSogZnAsIHVpbnQzMiBuUElEICk7CgpUQm9vbCBHZW5lcmF0ZUNSQyhGSUxF
ICpmcCwgaW50IG5DaGFubmVsLCB1aW50MzIgKm5DUkMpOwoKCnZvaWQgR0RCSk9MVFJlbWFwQW5k
Q29tbWl0Q2hhbm5lbERlbGV0aW9ucyggRklMRSogZnAsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogcGFuQ2hhbk1hcCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5OZXdDaGFu
bmVsQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBuT2xkQ2hhbm5lbENvdW50ICk7Cgp2b2lkIEdEQkpPTFRSZW1hcEFuZENvbW1p
dENoYW5uZWxBZGRpdGlvbnMoRklMRSogZnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQqIHBhbkNoYW5NYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgbk5ld0NoYW5uZWxDb3VudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuT2xkQ2hhbm5lbENvdW50KTsKCgoKCgpUQm9v
bCBHREJUZXN0Q2FwYWJpbGl0eSggR0RCTGF5ZXIgLCBHREJGbGFncyApOwojIDE5NjQgIi4uLy4u
Ly4uL2xpYi9nZGIuaCIKaW50IEdEQkdldFByb2plY3Rpb25JbmZvKCBHREJMYXllciAsIFByb2pJ
bmZvX3QgKiApOwp2b2lkIEdEQlNldFByb2plY3Rpb25JbmZvKCBHREJMYXllciAsIFByb2pJbmZv
X3QgKiApOwoKR0RCTGF5ZXIgR0RCR2V0TGF5ZXIoIEZJTEUgKiwgaW50ICk7CkdEQkxheWVyVHlw
ZSBHREJHZXRMYXllclR5cGUoIEdEQkxheWVyIGhMYXllciwgVEJvb2wgYkRvU2NhbklmVW5rbm93
biApOwpHREJMYXllciBHREJDcmVhdGVMYXllciggRklMRSAqLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogcHN6TmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIHBzekRlc2MsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBwc3pPcHRp
b25zICk7CgppbnQgR0RCTGF5ZXIyU2VnbWVudCggR0RCTGF5ZXIgaExheWVyICk7CmludCBHREJM
YXllcjJUeXBlKCBHREJMYXllciApOwpGSUxFICogR0RCTGF5ZXIyZnAoIEdEQkxheWVyICk7Cgp2
b2lkIEdEQkRlbGV0ZUxheWVyKCBGSUxFICpmcCwgaW50IG5TZWdtZW50ICk7CgpHREJTaGFwZUlk
IEdEQkdldEZpcnN0KEdEQkxheWVyICk7CkdEQlNoYXBlSWQgR0RCR2V0TmV4dChHREJMYXllciAs
IEdEQlNoYXBlSWQpOwoKCgoKR0RCU2hhcGVJZCAqIEdEQlF1ZXJ5KCBHREJMYXllciBoTGF5ZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnBuT3V0U2hhcGVDb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQlNoYXBlSWQgKnBhaFNo
YXBlSWRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5JblNoYXBl
Q291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpw
c3pFeHByZXNzaW9uICk7CgpHREJTaGFwZUlkICogR0RCUXVlcnlMYXllciggR0RCTGF5ZXIgLCBp
bnQgKnBuQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdE
QlNoYXBlSWQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IG5Db3VudCwgR0RCU2VhcmNoVHlwZSwgLi4uICk7Cgp2b2lkIEdEQkZpbmRFeHRlbnRzKEdEQlZl
cnRleCAqcGFzVmVydGljZXMsIGludCBuQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHREJWZXJ0ZXggKnBzTWluLCBHREJWZXJ0ZXggKnBzTWF4KTsKVEJvb2wgR0RCRmluZFNo
YXBlRXh0ZW50cyhHREJMYXllciwgR0RCU2hhcGVJZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdEQlZlcnRleCAqLCBHREJWZXJ0ZXggKiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRCb29sIGJEaXNwbGF5RXJyb3Ip
Owp2b2lkIEdEQkZpbmRFeHRlbnRzMihHREJWZXJ0ZXggKnBhc1ZlcnRpY2VzLCBpbnQgbkNvdW50
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQlZlcnRleCAqcHNNaW4sIEdEQlZl
cnRleCAqcHNNYXgpOwp2b2lkIEdEQk1ha2VNaW5NYXgoR0RCVmVydGV4ICpwc01pbiwgR0RCVmVy
dGV4ICpwc01heCk7CmludCBHREJGaW5kTmVhcmVzdFZlcnRleChHREJMYXllciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJTaGFwZUlkLCBHREJWZXJ0
ZXggKik7CgpHREJTZWFyY2ggKiBHREJTZXRTZWFyY2hDcml0ZXJpYShHREJMYXllciAsIEdEQlNl
YXJjaFR5cGUsIC4uLik7CkdEQlNoYXBlSWQgR0RCRmluZEZpcnN0KEdEQlNlYXJjaCAqLCBHREJT
aGFwZUlkICosIGludCk7CkdEQlNoYXBlSWQgR0RCRmluZE5leHQoR0RCU2VhcmNoICosR0RCU2hh
cGVJZCAqLCBpbnQpOwp2b2lkIEdEQlJlbGVhc2VDcml0ZXJpYShHREJTZWFyY2ggKik7CgpHREJT
aGFwZUlkIEdEQkNyZWF0ZVNoYXBlKCBHREJMYXllciAsIEdEQlNoYXBlSWQpOwp2b2lkIEdEQkRl
bGV0ZVNoYXBlKCBHREJMYXllciAsIEdEQlNoYXBlSWQgKTsKR0RCU2hhcGVJZCBHREJVbkRlbGV0
ZVNoYXBlKCBHREJMYXllciAsIEdEQlNoYXBlSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0RCU2hhcGUgKnBzU2hhcGUgKTsKCkdEQlZlcnRleCAqIEdEQkdl
dFZlcnRpY2VzKEdEQkxheWVyICwgR0RCU2hhcGVJZCwgaW50ICpwbkNvdW50ICk7CkdEQlZlcnRl
eCAqIEdEQkdldFZlcnRpY2VzUmVmKEdEQkxheWVyLCBHREJTaGFwZUlkLCBpbnQgKnBuQ291bnQp
Owp2b2lkIEdEQlNldFZlcnRpY2VzKEdEQkxheWVyICwgR0RCU2hhcGVJZCwgaW50IG5Db3VudCwg
R0RCVmVydGV4ICopOwpHREJWZXJ0ZXggKiBHREJWZXJ0ZXhDb3B5KEdEQlZlcnRleCAqLCBpbnQg
bkNvdW50KTsKCmludCBHREJHZXROdW1GaWVsZHMoR0RCTGF5ZXIpOwppbnQgR0RCR2V0RmllbGRJ
bmRleChHREJMYXllciwgY29uc3QgY2hhciAqKTsKaW50IEdEQkdldEZpZWxkSW5kZXhSZWdleChH
REJMYXllciwgY29uc3QgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50LCBUQm9vbCk7CmNvbnN0IGNoYXIgKiBHREJHZXRGaWVsZE5hbWUoR0RCTGF5
ZXIsIGludCk7Cgpjb25zdCBjaGFyICogR0RCR2V0RmllbGREZXNjKEdEQkxheWVyIGhMYXllciwg
aW50IGlGaWVsZCk7CnZvaWQgR0RCU2V0RGVmYXVsdChHREJMYXllciBoTGF5ZXIsIGludCBpRmll
bGQsIEdEQkZpZWxkICpwdVZhbHVlKTsKdm9pZCBHREJTZXRGaWVsZERlc2MoR0RCTGF5ZXIgaExh
eWVyLCBpbnQgaUZpZWxkLCBjaGFyICpwc3pEZXNjKTsKdm9pZCBHREJTZXRGaWVsZE5hbWUoR0RC
TGF5ZXIgaExheWVyLCBpbnQgaUZpZWxkLCBjaGFyICpwc3pOYW1lKTsKdm9pZCBHREJTZXRGaWVs
ZEZvcm1hdChHREJMYXllciBoTGF5ZXIsIGludCBpRmllbGQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyICpwc3pGb3JtYXQpOwoKCmNvbnN0IGNoYXIgKiBHREJH
ZXRGaWVsZEZvcm1hdChHREJMYXllciwgaW50KTsKaW50IEdEQkdldEZpZWxkV2lkdGgoR0RCTGF5
ZXIsIGludCwgaW50ICosIFRCb29sICopOwpjb25zdCBjaGFyICogR0RCR2VuRmllbGRGb3JtYXQo
R0RCRmllbGRUeXBlLCBpbnQsIGludCwgVEJvb2wgKTsKdm9pZCBHREJJbml0aWFsaXplRmllbGRG
b3JtYXRzKEdEQkxheWVyIHBzTGF5ZXIpOwoKR0RCRmllbGRUeXBlIEdEQkdldEZpZWxkVHlwZSAo
R0RCTGF5ZXIsIGludCk7ClRCb29sIEdEQklzU3lzRmllbGQgKGNoYXIgKiwgR0RCTGF5ZXIsIGlu
dCk7CkdEQkZpZWxkICogR0RCR2V0RmllbGREZWZhdWx0IChHREJMYXllciwgaW50KTsKdm9pZCBH
REJTZXRGaWVsZFZhbHVlIChHREJMYXllciwgR0RCU2hhcGVJZCwgaW50LCBHREJGaWVsZCopOwpk
b3VibGUgR0RCU2V0VmFsdWUgKEdEQkxheWVyLCBHREJTaGFwZUlkLCBpbnQsIGRvdWJsZSApOwpH
REJGaWVsZCAqIEdEQkdldEZpZWxkVmFsdWUgKEdEQkxheWVyLCBHREJTaGFwZUlkLCBpbnQpOwpH
REJGaWVsZCAqIEdEQkdldEZpZWxkVmFsdWVRdWlja2x5KEdEQkxheWVyICwgR0RCU2hhcGUgKiwg
aW50KTsKZG91YmxlIEdEQkdldFZhbHVlIChHREJMYXllciwgR0RCU2hhcGVJZCwgaW50KTsKY2hh
ciAqIEdEQkdldFZhbHVlU3RyaW5nIChHREJMYXllciwgR0RCU2hhcGVJZCwgaW50KTsKdm9pZCBH
REJTZXRWYWx1ZVN0cmluZyAoR0RCTGF5ZXIsIEdEQlNoYXBlSWQsIGludCwgY2hhciAqKTsKdm9p
ZCBHREJTZXRGaWVsZFZhbHVlU3RyaW5nKEdEQkZpZWxkICpwdUZpZWxkLCBHREJGaWVsZFR5cGUg
ZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyICpwc3pWYWx1ZSk7CgoKCgp2b2lkIEdEQlNldEZpZWxkTWlzc2luZ1ZhbHVlKEdEQkxheWVy
LCBpbnQsIGNoYXIgKik7CmNoYXIgKkdEQkdldEZpZWxkTWlzc2luZ1ZhbHVlKEdEQkxheWVyLCBp
bnQpOwp2b2lkIEdEQlNldEZpZWxkUmVhZE9ubHkoR0RCTGF5ZXIsIGludCwgVEJvb2wpOwpUQm9v
bCBHREJJc0ZpZWxkUmVhZE9ubHkoR0RCTGF5ZXIsIGludCk7CnZvaWQgR0RCU2V0RmllbGRIaWRk
ZW4oR0RCTGF5ZXIsIGludCwgVEJvb2wpOwpUQm9vbCBHREJJc0ZpZWxkSGlkZGVuKEdEQkxheWVy
LCBpbnQpOwp2b2lkIEdEQlNldEZpZWxkQWxpYXMoR0RCTGF5ZXIsIGludCwgY2hhciAqKTsKY2hh
ciAqR0RCR2V0RmllbGRBbGlhcyhHREJMYXllciwgaW50KTsKdm9pZCBHREJTZXRGaWVsZFZhbGlk
YXRpb25SdWxlKEdEQkxheWVyLCBpbnQsIGNoYXIgKik7CmNoYXIgKkdEQkdldEZpZWxkVmFsaWRh
dGlvblJ1bGUoR0RCTGF5ZXIsIGludCk7CnZvaWQgR0RCU2V0RmllbGRVbmlxdWVWYWx1ZXMoR0RC
TGF5ZXIsIGludCwgVEJvb2wpOwpUQm9vbCBHREJIYXNGaWVsZFVuaXF1ZVZhbHVlcyhHREJMYXll
ciwgaW50KTsKCkdEQkZpZWxkICogR0RCR2V0UmVjb3JkIChHREJMYXllciwgR0RCU2hhcGVJZCk7
CnZvaWQgR0RCU2V0UmVjb3JkIChHREJMYXllciwgR0RCU2hhcGVJZCwgR0RCRmllbGQgKik7CkdE
QkZpZWxkICogR0RCR2V0UmVjb3JkUmVmIChHREJMYXllciwgR0RCU2hhcGVJZCk7CmludCBHREJB
ZGRGaWVsZCAoR0RCTGF5ZXIsIGNoYXIgKnBzek5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0RCRmllbGRUeXBlIGVUeXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdEQkZpZWxkICpwc0RlZmF1bHQpOwoKCkdEQkZpZWxkICog
R0RCUmVjb3JkQ29weSAoR0RCTGF5ZXIsIEdEQkZpZWxkICopOwpHREJGaWVsZCAqIEdEQlJlY29y
ZEFsbG9jIChHREJMYXllcik7CnZvaWQgR0RCUmVjb3JkRnJlZSAoR0RCTGF5ZXIsIEdEQkZpZWxk
ICopOwoKCnZvaWQgR0RCRmllbGRGcmVlIChHREJGaWVsZFR5cGUsIEdEQkZpZWxkICopOwpHREJG
aWVsZCBHREJGaWVsZENvcHkgKEdEQkZpZWxkVHlwZSwgR0RCRmllbGQgKik7ClRCb29sIEdEQkZp
ZWxkVmFsdWVJZGVudGljYWwoR0RCRmllbGRUeXBlIGVUeXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCRmllbGQqIHBzRmllbGQxLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCRmllbGQqIHBzRmll
bGQyKTsKCnZvaWQgR0RCRmx1c2hDYWNoZSAoR0RCTGF5ZXIgcHNMYXllcik7CgpHREJTaGFwZSAq
IEdEQlNoYXBlQWxsb2MoR0RCTGF5ZXIpOwp2b2lkIEdEQlNoYXBlRnJlZShHREJMYXllciwgR0RC
U2hhcGUgKik7CkdEQlNoYXBlICogR0RCR2V0U2hhcGUoR0RCTGF5ZXIsIEdEQlNoYXBlSWQpOwoK
R0RCU2hhcGUgKiBHREJHZXRTaGFwZVJlZihHREJMYXllciwgR0RCU2hhcGVJZCk7CnZvaWQgR0RC
U2V0U2hhcGUoR0RCTGF5ZXIsIEdEQlNoYXBlSWQsIEdEQlNoYXBlKik7CkdEQlNoYXBlICogR0RC
U2hhcGVDb3B5KEdEQkxheWVyLCBHREJTaGFwZSAqKTsKR0RCVmVydGV4ICogR0RCRmluZENsb3Nl
c3RQb2ludCggR0RCTGF5ZXIsIEdEQlNoYXBlSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHREJWZXJ0ZXgsIGludCAqLCBkb3VibGUgKiwgaW50ICogKTsKR0RCVmVy
dGV4ICpHREJGaW5kQ2xvc2VzdEZyb21BcnJheShHREJWZXJ0ZXggKnBzUG9pbnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgIEdEQlZlcnRleCAqcGFzVmVydGljZXMsIGludCBuQ291bnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgIGludCAqbkxlZnRJbmRleCwgZG91YmxlICpkZk1pbkRpc3QsIGlu
dCAqblZlcnRleEluZGV4KTsKCnZvaWQgX0dEQlNldENvb3JkRnJvbUF0dHJpYiggR0RCTGF5ZXIs
IEdEQlNoYXBlICogKTsKdm9pZCBfR0RCU2V0QXR0cmliRnJvbUNvb3JkKCBHREJMYXllciwgR0RC
U2hhcGUgKiApOwoKdm9pZCBHREJNb2RDYWNoZUZsdXNoRnVuYyhDQ0hIYW5kbGUgcHNDYWNoZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ0hFbnRyeSAq
cHNFbnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
b2lkICpwRGF0YSk7Cgp2b2lkIEdEQlJlYWRDYWNoZUZsdXNoRnVuYyhDQ0hIYW5kbGUgcHNDYWNo
ZSwgQ0NIRW50cnkgKnBzRW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQgKnBEYXRhKTsKCmludCBHREJHZXROdW1TaGFwZXMoR0RCTGF5ZXIpOwp2b2lkIF9H
REJTZXROdW1TaGFwZXMoR0RCTGF5ZXIsIGludCk7CnZvaWQgR0RCU2V0TnVtT2ZTaGFwZXNCeVR5
cGUoR0RCTGF5ZXIgaExheWVyLCBpbnQgblBvaW50cywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbkxpbmVzLCBpbnQgbkFyZWFzKTsKdm9pZCBH
REJHZXROdW1PZlNoYXBlc0J5VHlwZShHREJMYXllciBoTGF5ZXIsIGludCogcG5Qb2ludHMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiBwbkxp
bmVzLCBpbnQqIHBuQXJlYXMpOwpHREJMYXllclR5cGUgR0RCR2V0U2hhcGVUeXBlKEdEQkxheWVy
IGhMYXllciwgR0RCU2hhcGVJZCBoRW50aXR5KTsKdm9pZCBHREJVcGRhdGVTaGFwZUJ5VHlwZShH
REJMYXllciBoTGF5ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0RCU2hhcGVJZCBoRW50aXR5LCBpbnQgbk9wZXJhdGlvbik7CgpHREJGYXRTaGFwZSAq
IEdEQkdldEZhdFNoYXBlKEdEQkxheWVyLCBHREJTaGFwZUlkKTsKdm9pZCBHREJTZXRGYXRTaGFw
ZShHREJMYXllciwgR0RCU2hhcGVJZCwgR0RCRmF0U2hhcGUgKiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50ICopOwp2b2lkIEdEQkZhdFNoYXBlRnJlZShHREJG
YXRTaGFwZSAqcHNGYXRTaGFwZSk7CkdEQkZhdFNoYXBlICogR0RCRmF0U2hhcGVBbGxvYyhHREJM
YXllcik7CgoKdm9pZCAqIEdEQkdldFJlcFRhYmxlKEdEQkxheWVyKTsKdm9pZCBHREJTZXRSZXBU
YWJsZShHREJMYXllciwgdm9pZCAqKTsKCkdEQkxheWVyIEdEQkNvcHlMYXllclN0cnVjdHVyZShH
REJMYXllciBTcmMsIEdEQkxheWVyIERlc3QpOwpUQm9vbCBHREJMYXllckhhc05vR2VvZ3JhcGh5
KEdEQkxheWVyIGhMYXllcik7CgpUQm9vbCBHREJHZXRFeHRlbnRzKEdEQkxheWVyIHBzTGF5ZXIs
IEdEQlZlcnRleCAqcHNNaW4gLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdEQlZlcnRleCAqcHNNYXgpOwoKdm9pZCBfR0RCU2V0RXh0ZW50cyhHREJMYXllciBwc0xh
eWVyLCBHREJWZXJ0ZXggKnBzTWluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJW
ZXJ0ZXggKnBzTWF4KTsKVEJvb2wgR0RCQ2FsY0V4dGVudHMoR0RCTGF5ZXIgcHNMYXllciwgR0RC
VmVydGV4ICpwc01pbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0RCVmVydGV4ICpwc01heCk7ClRCb29sIEdEQkdldE92ZXJhbGxFeHRlbnRzKCBGSUxFICosIFBy
b2pJbmZvX3QgKiApOwoKdm9pZCBHREJTZXRDdXJyZW50QXJlYUV4dGVudHMoR0RCVmVydGV4ICpw
c01pbiwgR0RCVmVydGV4ICpwc01heCk7CnZvaWQgR0RCR2V0Q3VycmVudEFyZWFFeHRlbnRzKEdE
QlZlcnRleCAqcHNNaW4sIEdEQlZlcnRleCAqcHNNYXgpOwp2b2lkIEdEQlNldEN1cnJlbnRBcmVh
SGFzRml4ZWRFeHRlbnRzKFRCb29sIGJGaXhlZCk7ClRCb29sIEdEQkN1cnJlbnRBcmVhSGFzRml4
ZWRFeHRlbnRzKHZvaWQpOwoKVEJvb2wgR0RCR2V0VmVjQWRqdXN0ZWRYWVNpemUoIEZJTEUgKiwg
aW50ICosIGludCAqICk7Cgp2b2lkIEdEQkFkZEF0dEluZm8oIEdEQkxheWVyLCBjb25zdCBjaGFy
ICosIEdEQkZpZWxkVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQkZpZWxk
ICopOwpHREJEZWZuICogR0RCRGVmaW5lTmV3RmllbGQoR0RCTGF5ZXIgcHNMYXllciwgY29uc3Qg
Y2hhciAqcHN6RmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
ICpwc3pGaWVsZERlc2MsIEdEQkZpZWxkVHlwZSBlRmllbGRUeXBlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBHREJGaWVsZCAqcHVGaWVsZCwgY29uc3QgY2hhciAqcHN6Rm9ybWF0LCAuLi4p
OwoKR0RCRGVmbiAqIEdEQkdldEZpZWxkRGVmbihHREJMYXllciwgaW50KTsKR0RCRGVmbiAqIEdE
QkFkZEZpZWxkRGVmbihHREJMYXllciApOwp2b2lkIEdEQkRlZm5GcmVlKCBHREJEZWZuICogcHNE
ZWZuICk7Cgp2b2lkIEdEQkZyZWVBdHRJbmZvKEdEQkxheWVyKTsKdm9pZCBHREJGcmVlTGF5ZXJT
dHJ1Y3QoR0RCTGF5ZXIpOwoKRklMRSAqIEdEQkNyZWF0ZU1lbUNvcHkoR0RCTGF5ZXIgcHNMYXll
cik7CkZJTEUgKiBHREJDcmVhdGVDb21wTWVtQ29weShHREJMYXllciwgY29uc3QgY2hhciAqKTsK
CmludCAqIEdEQkNvdW50ZWRJbnRMaXN0Q29weShpbnQgKik7CmludCBHREJHZXRTZWdtZW50TnVt
KEdEQkxheWVyKTsKCkdEQkxheWVyICogR0RCQXBwZW5kTGF5ZXJBcnJheShHREJMYXllciAsIEdE
QkxheWVyICogLCBpbnQgKikgOwpHREJMYXllciBHREJJbmNyZWFzZUxheWVyQXJyYXkoRklMRSAq
LCBHREJMYXllciAqKiwgaW50ICopOwpHREJMYXllciBHREJMYXllckFsbG9jKEZJTEUgKmZwKTsK
dm9pZCBHREJMYXllckZyZWUoIEdEQkxheWVyICk7CgpHREJTaGFwZSAqIEdldEdEQlNoYXBlKFZJ
bmZvX3QgKiwgR0RCU2hhcGVJZCk7CnZvaWQgU2V0R0RCU2hhcGUoVkluZm9fdCAqLCBHREJTaGFw
ZSopOwpUQm9vbCBHREJTZXRVcGRhdGVNb2RlKEdEQkxheWVyLFRCb29sKTsKCgoKCkdEQlNoYXBl
ICogR0RCR2V0UmluZ1JlZiggR0RCTGF5ZXIsIEdEQlNoYXBlICosIGludCwgaW50MzIgKiApOwpH
REJTaGFwZSAqIEdEQkdldFJpbmcoIEdEQkxheWVyLCBHREJTaGFwZSAqLCBpbnQsIGludDMyICog
KTsKaW50IEdEQkFkZFJpbmdUb1NoYXBlKCBHREJMYXllciwgR0RCU2hhcGUgKiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQlZlcnRleCAqLCBpbnQgKTsKVEJv
b2wgR0RCR2V0UmluZ0luZm8oIEdEQkxheWVyLCBHREJTaGFwZSAqLCBpbnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKiwgaW50ICosIGludDMyICogKTsKdm9p
ZCBHREJEZWxldGVSaW5nKCBHREJMYXllciwgR0RCU2hhcGUgKiwgaW50ICk7CmludCBHREJHZXRS
aW5nQ291bnQoIEdEQkxheWVyLCBHREJTaGFwZSAqLCBpbnQzMiAqICk7CnZvaWQgR0RCU2V0Umlu
Z1ZlcnRpY2VzKEdEQkxheWVyIGhMYXllciwgR0RCU2hhcGUqIHBzU2hhcGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaVJpbmcsIEdEQlZlcnRleCAqcGFz
VmVydGljZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
bkNvdW50KTsKdm9pZCBDQ0xSaW5nVGVzdCggdm9pZCApOwpHREJWZXJ0ZXggKkdEQkNvbWJpbmVW
ZXJ0aWNlcyhHREJMYXllciBwc0xheWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdEQlNoYXBlSWQqIHBhblNoYXBlSWRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBuTnVtU2hhcGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogcG5D
b3VudCk7CgoKCgp2b2lkIElEQkNsZWFyU2hhcGVzKEdEQkxheWVyICk7ClRCb29sIElEQkNvbnZl
cnRUb05ldyhHREJMYXllciApOwpUQm9vbCBJREJDbGVhckxheWVyKEdEQkxheWVyKTsKClRCb29s
IEdEQkNsZWFyTGF5ZXIoR0RCTGF5ZXIpOwoKdm9pZCBJREJCdWZmQWxsb2MoKTsKdm9pZCBJREJC
dWZmUmVhbGxvYyhsb25nKTsKCgoKCgoKdm9pZCBNUllDbGVhckVkaXRMaXN0KEdEQkxheWVyKTsK
R0RCU2hhcGVJZCAqIE1SWUdldEVkaXRMaXN0KEdEQkxheWVyLCBpbnQgKik7CnZvaWQgTVJZSW5p
dEVkaXRMaXN0KEdEQkxheWVyKTsKdm9pZCBNUllEZXN0cm95RWRpdExpc3QoR0RCTGF5ZXIpOwpH
REJTaGFwZSAqIE1SWUdldFNoYXBlKEdEQkxheWVyLCBHREJTaGFwZUlkKTsKCgoKCgpHREJRdWFk
VHJlZSAqIEdEQlF1YWRUcmVlQWxsb2MoR0RCTGF5ZXIgaExheWVyLCBHREJWZXJ0ZXggKnBzTWlu
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJWZXJ0ZXggKnBzTWF4LCBpbnQgbkRl
cHRoKTsKdm9pZCBHREJRdWFkVHJlZUZyZWUoR0RCUXVhZFRyZWUgKnBzUVQpOwpUQm9vbCBHREJR
dWFkVHJlZVVwZGF0ZShHREJRdWFkVHJlZSAqcHNRVCwgR0RCU2hhcGVJZCBoU2hhcGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHREJWZXJ0ZXggKnBzTWluLCBHREJWZXJ0ZXggKnBz
TWF4KTsKCnZvaWQgR0RCUXVhZFRyZWVEZWxldGUoR0RCUXVhZFRyZWUgKnBzUVQsIEdEQlNoYXBl
SWQgaFNoYXBlKTsKCkdEQlF1YWROb2RlICogR0RCVXBRdWFkVHJlZShHREJRdWFkTm9kZSAqcHND
dXJyZW50LCBHREJRdWFkTm9kZSAqcHNTdGFydCk7CkdEQlNoYXBlSWQgR0RCSW5jbHVzaXZlU2Vh
cmNoKEdEQlFUSXRlcmF0b3IgKnBzSXRlcik7CnZvaWQgR0RCRW5xdWFkTGF5ZXIoR0RCTGF5ZXIp
Owp2b2lkIEdEQkRlcXVhZExheWVyKEdEQkxheWVyKTsKR0RCUXVhZE5vZGUgKiogR0RCR2V0SW5j
bHVzaXZlTm9kZUxpc3QoR0RCUXVhZFRyZWUgKiwgR0RCVmVydGV4ICosCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0RCVmVydGV4ICopOwoKCgoKVEJvb2wgR0RCU2V0UmVw
Q29kZUZpZWxkKEdEQkxheWVyLCBjaGFyICopOwppbnQgR0RCR2V0UmVwQ29kZShHREJMYXllciwg
R0RCU2hhcGVJZCk7CnZvaWQgR0RCU2V0UmVwQ29kZShHREJMYXllciwgR0RCU2hhcGVJZCwgaW50
KTsKClRCb29sIEdEQlNldEdyb3VwSWRGaWVsZChHREJMYXllciwgY2hhciAqKTsKaW50IEdEQkdl
dEdyb3VwSWQoR0RCTGF5ZXIsIEdEQlNoYXBlSWQpOwp2b2lkIEdEQlNldEdyb3VwSWQoR0RCTGF5
ZXIsIEdEQlNoYXBlSWQsIGludCk7CgpUQm9vbCBHREJTZXRDaGlsZExpc3RGaWVsZChHREJMYXll
ciwgY2hhciAqKTsKaW50ICogR0RCR2V0Q2hpbGRMaXN0KEdEQkxheWVyLCBHREJTaGFwZUlkKTsK
dm9pZCBHREJTZXRDaGlsZExpc3QoR0RCTGF5ZXIsIEdEQlNoYXBlSWQsIGludCAqKTsKClRCb29s
IEdEQlNldFRleHRGaWVsZChHREJMYXllciwgY2hhciAqKTsKY2hhciAqIEdEQkdldFRleHQoR0RC
TGF5ZXIsIEdEQlNoYXBlSWQpOwpjaGFyICogR0RCR2V0VGV4dFF1aWNrbHkoR0RCTGF5ZXIgLCBH
REJTaGFwZSAqKTsKdm9pZCBHREJTZXRUZXh0KEdEQkxheWVyLCBHREJTaGFwZUlkLCBjaGFyICop
OwoKVEJvb2wgR0RCU2V0QW5nbGVGaWVsZChHREJMYXllciwgY2hhciAqKTsKVEJvb2wgR0RCR2V0
QW5nbGUoR0RCTGF5ZXIsIEdEQlNoYXBlSWQsIGRvdWJsZSAqKTsKVEJvb2wgR0RCR2V0QW5nbGVR
dWlja2x5KEdEQkxheWVyLCBHREJTaGFwZSAqLCBkb3VibGUgKik7CnZvaWQgR0RCU2V0QW5nbGUo
R0RCTGF5ZXIsIEdEQlNoYXBlSWQsIGRvdWJsZSk7CnZvaWQgR0RCU2V0QW5nbGVVbml0KEdEQkxh
eWVyLCBHREJBbmdsZVVuaXQpOwp2b2lkIEdEQlNldEFuZ2xlVW5pdFN0cihHREJMYXllciwgY2hh
ciopOwpHREJBbmdsZVVuaXQgR0RCR2V0QW5nbGVVbml0KEdEQkxheWVyKTsKY2hhciAqR0RCR2V0
QW5nbGVVbml0U3RyKEdEQkxheWVyKTsKdm9pZCBHREJDb252ZXJ0QW5nbGUoR0RCQW5nbGVVbml0
LCBHREJBbmdsZVVuaXQsIGRvdWJsZSopOwpjaGFyICoqR0RCR2V0QW5nbGVVbml0c0xpc3QoKTsK
ClRCb29sIEdEQlNldEhlaWdodEZpZWxkKEdEQkxheWVyLCBjaGFyICopOwpkb3VibGUgR0RCR2V0
SGVpZ2h0KEdEQkxheWVyLCBHREJTaGFwZUlkKTsKVEJvb2wgR0RCR2V0SGVpZ2h0UXVpY2tseShH
REJMYXllciwgR0RCU2hhcGUgKiwgZG91YmxlICopOwp2b2lkIEdEQlNldEhlaWdodChHREJMYXll
ciwgR0RCU2hhcGVJZCwgZG91YmxlKTsKCnZvaWQgR0RCSW5pdFNwZWNpYWxGaWVsZHMoR0RCTGF5
ZXIpOwp2b2lkIEdEQlJlSW5pdFNwZWNpYWxGaWVsZHMoR0RCTGF5ZXIpOwp2b2lkIEdEQlNldFN5
c3RlbUZpZWxkKCBHREJMYXllciwgY29uc3QgY2hhciAqLCBpbnQgKTsKaW50IEdEQkdldFN5c3Rl
bUZpZWxkKCBHREJMYXllciwgY29uc3QgY2hhciAqICk7CgoKCgoKdm9pZCBHREJCdWlsZEdyb3Vw
SW5kZXgoR0RCTGF5ZXIgaExheWVyKTsKdm9pZCBHREJEZXN0cm95R3JvdXBJbmRleChHREJMYXll
ciBoTGF5ZXIpOwpUQm9vbCBHREJBZGRUb0dyb3VwKEdEQkxheWVyIGhMYXllciwgR0RCU2hhcGVJ
ZCBoU2hhcGVJZCk7CkdEQkdyb3VwIEdEQkdldEdyb3VwKEdEQkxheWVyIGhMYXllciwgaW50IGlH
cm91cElkKTsKVEJvb2wgR0RCRGVsZXRlRnJvbUdyb3VwKEdEQkxheWVyIGhMYXllciwgR0RCU2hh
cGVJZCBoU2hhcGVJZCk7ClRCb29sIEdEQlVuR3JvdXAoR0RCTGF5ZXIgaExheWVyLCBpbnQgaUdy
b3VwSWQpOwppbnQgR0RCRmluZEZyZWVHcm91cElkKEdEQkxheWVyIGhMYXllciwgaW50IGlBZHZp
c29yeUdyb3VwSWQpOwpUQm9vbCBHREJQYWNrR3JvdXBzKEdEQkxheWVyIGhMYXllcik7CmludCBH
REJHcm91cEVudGl0aWVzKCBHREJMYXllciBoTGF5ZXIsIEdEQlNoYXBlSWQgKnBhaEVudGl0aWVz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5FbnRpdGllcyApOwoKCgoK
R0RCU2hhcGVJZCAqIEdEQkdldENoaWxkTGlzdENvcHkoR0RCTGF5ZXIgaExheWVyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQlNoYXBlSWQgaEVudGl0eSk7
CnZvaWQgR0RCQXR0YWNoRW50aXRpZXMoR0RCTGF5ZXIgaExheWVyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQlNoYXBlSWQgKnBhaEVudGl0aWVzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuRW50aXRpZXMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCU2hhcGVJZCBoUGFy
ZW50U2hhcGVJZCk7CkdEQlNoYXBlSWQgR0RCRmluZENoaWxkTGlzdFBhcmVudChHREJMYXllciBo
TGF5ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
REJTaGFwZUlkIGhTaGFwZUlkKTsKR0RCU2hhcGVJZCAqIEdEQkdldEF0dGFjaGVkRW50aXRpZXMo
R0RCTGF5ZXIgaExheWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdEQlNoYXBlSWQgaFNoYXBlSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpwbkVudGl0aWVzKTsKR0RCU2hhcGVJZCAqIEdE
QkRldGFjaEVudGl0aWVzKEdEQkxheWVyIGhMYXllciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0RCU2hhcGVJZCBoRW50aXR5LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnBuRW50aXRpZXMpOwp2b2lkIEdEQkRl
dGFjaENoaWxkTGlzdEVudGl0aWVzKEdEQkxheWVyIGhMYXllciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCU2hhcGVJZCBoRW50aXR5KTsK
CgoKCnZvaWQgKiBMb2FkR0RCRHluRm9ybWF0KGNvbnN0IGNoYXIgKnBzekZvcm1hdE5hbWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwc3pCYXNlTmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBzelJlZ2lzdGVy
RnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuVmVyc2lvbiAsIGNv
bnN0IGNoYXIgKiBwc3pGaWxlTmFtZSk7Cgp2b2lkIEFMTFJlZ2lzdGVyKCB2b2lkICk7CnZvaWQg
VmVjdG9yUmVnaXN0ZXIoIHZvaWQgKTsKdm9pZCBJbWFnZVJlZ2lzdGVyKCB2b2lkICk7CnZvaWQg
Q2hlYXBSZWdpc3Rlciggdm9pZCApOwoKdm9pZCBHREJSZWdpc3RlcldpdGhKT0xUUmVnaXN0cnko
dm9pZCk7CgpHREJUZXN0SW5mb190ICogR0RCVGVzdEluZm9NYXJzaGFsKCBjb25zdCBjaGFyICos
IEZJTEUgKiApOwp2b2lkIEdEQlRlc3RJbmZvRGVzdHJveSggR0RCVGVzdEluZm9fdCAqICk7Cgpp
bnQgR0RCRmlsZW5hbWUyRm9ybWF0KCBjaGFyICpwc3pGaWxlTmFtZSApOwoKCgoKdHlwZWRlZiBz
dHJ1Y3Qgc2VndHlwZSB7CiAgaW50IG5Db2RlOwogIGNoYXIgKnBzelNob3J0TmFtZTsKICBjaGFy
ICpwc3pMb25nTmFtZTsKfSBTRUdUeXBlOwoKCmV4dGVybiBTRUdUeXBlIGdhc1R5cGVUYWJsZVtd
OwoKZXh0ZXJuIEdEQkluZm9fdCAqR0RCSW5mb1syMDBdOwojIDIzNzkgIi4uLy4uLy4uL2xpYi9n
ZGIuaCIKdHlwZWRlZiBlbnVtCnsKICAgIFBhcnNlclR5cGVGaWxlLAogICAgUGFyc2VyVHlwZVN0
cmluZwp9IFBhcnNlclR5cGU7CgoKdHlwZWRlZiBzdHJ1Y3QKewogICAgUGFyc2VyVHlwZSBUeXBl
OwogICAgdm9pZCAqU291cmNlOwoKICAgIGNoYXIgKipTdHJpbmc7CiAgICBpbnQgKklEOwogICAg
aW50IFNpemU7CgogICAgaW50IEluZGV4OwoKCn0gUEFSU0VSOwojIDI0MTEgIi4uLy4uLy4uL2xp
Yi9nZGIuaCIKUEFSU0VSICpQYXJzZXJJbml0IChQYXJzZXJUeXBlKTsKdm9pZCBQYXJzZXJUZXJt
IChQQVJTRVIgKik7CnZvaWQgUGFyc2VyUmVzZXQgKFBBUlNFUiAqLCB2b2lkICopOwp2b2lkIFBh
cnNlclRva2VuUmVnaXN0ZXIgKFBBUlNFUiAqLCBjaGFyICoqLCBpbnQgKiwgaW50KTsKaW50IFBh
cnNlclRva2VuR2V0IChQQVJTRVIgKiwgY2hhciAqKTsKIyAyNDQxICIuLi8uLi8uLi9saWIvZ2Ri
LmgiCnR5cGVkZWYgZW51bQp7CiAgICBFeHByVHlwZVByaW1hcnksCiAgICBFeHByVHlwZUJvb2xl
YW5BTkQsCiAgICBFeHByVHlwZUJvb2xlYW5PUiwKICAgIEV4cHJUeXBlQm9vbGVhbk5PVAp9IEV4
cHJUeXBlOwoKCgoKCnR5cGVkZWYgZW51bQp7CiAgICBQcmltYXJ5T3BFcXVhbCwKICAgIFByaW1h
cnlPcExlc3MsCiAgICBQcmltYXJ5T3BHcmVhdGVyLAogICAgUHJpbWFyeU9wTGVzc0VxdWFsLAog
ICAgUHJpbWFyeU9wR3JlYXRlckVxdWFsLAogICAgUHJpbWFyeU9wTm90RXF1YWwKfSBQcmltYXJ5
T3A7CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBFeHByCnsKICAgIEV4cHJUeXBlIFR5cGU7CiAgICB1
bmlvbgogICAgewogICAgICAgIHN0cnVjdAogICAgICAgIHsKICAgICAgICAgICAgY2hhciAqTmFt
ZTsKICAgICAgICAgICAgaW50IE51bTsKICAgICAgICAgICAgUHJpbWFyeU9wIE9wOwogICAgICAg
ICAgICBpbnQgSXNDaGFyVmFsdWU7CiAgICAgICAgICAgIHVuaW9uCiAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgIGNoYXIgKkNWYWx1ZTsKICAgICAgICAgICAgICAgIHN0cnVjdAogICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNoYXIgKk5hbWU7CiAgICAgICAgICAgICAg
ICAgICAgaW50IE51bTsKICAgICAgICAgICAgICAgIH0gRlZhbHVlOwogICAgICAgICAgICB9IFZh
bHVlOwogICAgICAgIH0gUHJpbWFyeTsKCiAgICAgICAgc3RydWN0CiAgICAgICAgewogICAgICAg
ICAgICBzdHJ1Y3QgRXhwciAqTGVmdDsKICAgICAgICAgICAgc3RydWN0IEV4cHIgKlJpZ2h0Owog
ICAgICAgIH0gQm9vbGVhbjsKICAgIH0gRGF0YTsKfSBFWFBSOwojIDI1MDYgIi4uLy4uLy4uL2xp
Yi9nZGIuaCIKRVhQUiAqRXhwckluaXRQcmltYXJ5IChjaGFyICosIFByaW1hcnlPcCwgY2hhciAq
LCBpbnQpOwpFWFBSICpFeHBySW5pdEJvb2xlYW4gKEV4cHJUeXBlLCBFWFBSICosIEVYUFIgKik7
CnZvaWQgRXhwclRlcm0gKEVYUFIgKik7CnZvaWQgRXhwclNldE51bSAoRVhQUiAqLCBpbnQpOwp2
b2lkIEV4cHJTZXRGVmFsdWUgKEVYUFIgKiwgY2hhciAqLCBpbnQpOwppbnQgRXhwcklzRlZhbHVl
IChFWFBSICopOwppbnQgRXhwcklzU3RyaW5nQ29uc3RhbnQgKEVYUFIgKik7CmludCBFeHByR2V0
Rk51bSAoRVhQUiAqKTsKdm9pZCBFeHByR2V0UHJpbWFyeSAoRVhQUiAqLCBjaGFyICoqLCBpbnQg
KiwgUHJpbWFyeU9wICosIGNoYXIgKiopOwppbnQgRXhwckV2YWx1YXRlIChFWFBSICosIGludCAo
KikoRVhQUiAqLCB2b2lkICopLCB2b2lkICopOwppbnQgRXhwclRyYXZlcnNlIChFWFBSICosIGlu
dCAoKikoRVhQUiAqLCB2b2lkICopLCB2b2lkICopOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogIGNo
YXIgKk5hbWU7CiAgY2hhciAqRGVzY3JpcHRpb247CgogIGludCBOU2FtcGxlczsKICBpbnQgTkNo
YW5uZWxzOwoKICBpbnQgKkNoYW5uZWw7CiAgZG91YmxlICpNZWFuOwogIGRvdWJsZSAqU3RkRGV2
aWF0aW9uOwogIGRvdWJsZSAqTG93ZXJQUEJvdW5kOwogIGRvdWJsZSAqVXBwZXJQUEJvdW5kOwoK
ICBkb3VibGUgRGV0ZXJtaW5hbnQ7CiAgZG91YmxlIFRocmVzaG9sZDsKICBkb3VibGUgQmlhczsK
CiAgZG91YmxlICpJQ292YXJpYW5jZTsKCiAgZG91YmxlICpDb3ZhcmlhbmNlOwoKICBpbnQgRW5j
b2Rpbmc7Cn0gU2lnbmF0dXJlX3Q7CgoKCgoKdm9pZCBDaGVja0NoYW4oIEZJTEUgKiwgY2hhciAq
LCBpbnQgKiwgaW50ICk7CnZvaWQgQ2hlY2tXaW4oIEZJTEUgKiwgY2hhciAqLCBpbnQgKiApOwoj
IDI2NDQgIi4uLy4uLy4uL2xpYi9nZGIuaCIKdHlwZWRlZiBpbnQgKCpUaWxlUldGdW5jKSggRklM
RSAqLCB2b2lkICosIGludCwgaW50LCB1bnNpZ25lZCBjaGFyICogKTsKdHlwZWRlZiB2b2lkICgq
Q2hhblJXRnVuYykoIEZJTEUgKiwgdm9pZCAqLCBpbnQsIGludCwgdW5zaWduZWQgY2hhciAqKTsK
CnR5cGVkZWYgc3RydWN0IHsKICBpbnQgbkxhc3RBY2Nlc3M7CiAgaW50IG5YU2l6ZTsKICBpbnQg
bllTaXplOwoKICBpbnQgblRpbGVzOwogIGludCAqcGFuVGlsZUFjY2VzczsKICBpbnQgKnBhblRp
bGVJRDsKICB1bnNpZ25lZCBjaGFyICoqcGFwYWJ5VGlsZTsKCiAgVGlsZVJXRnVuYyBwZm5Xcml0
ZVRpbGU7CiAgVGlsZVJXRnVuYyBwZm5SZWFkVGlsZTsKICB2b2lkICpwRnVuY1Rva2VuOwp9IFJh
d0NoYW5UaWxlSW5mb190OwoKdHlwZWRlZiBHREJPdmVydmlld0luZm9fdCBSYXdPdmVydmlld0lu
Zm9fdDsKCnR5cGVkZWYgc3RydWN0IHJpbmZvCnsKICBzdHJ1Y3QgcmluZm8gKm5leHQ7CiAgRklM
RSAqZnBSYXc7CiAgaW50IFhTaXplOwogIGludCBZU2l6ZTsKICBpbnQgQ2hhbm5lbHM7CiAgaW50
IEludGVybGVhdmluZzsKCgogIGxvbmcgKkNoT2ZmOwogIGxvbmcgKlBpeGVsT2Zmc2V0OwogIGxv
bmcgKkxpbmVPZmZzZXQ7CiAgaW50ICpEYXRhVHlwZTsKICBpbnQgKkRhdGFTaXplOwogIGNoYXIg
KkJ5dGVTd2FwcGVkOwoKCiAgQ2hhblJXRnVuYyAqV3JpdGVGdW5jOwogIENoYW5SV0Z1bmMgKlJl
YWRGdW5jOwogIHZvaWQgKipGdW5jVG9rZW47CgoKICBpbnQgTkJpdG1hcHM7CiAgbG9uZyAqQml0
T2Zmc2V0OwogIGxvbmcgKkJpdExpbmVPZmZzZXQ7CiAgaW50ICpCaXRTZWdtZW50OwogIGludCAq
Qml0Q29tcDsKCgogIHVuc2lnbmVkIGNoYXIgKipSYXdCaXRCdWY7CiAgbG9uZyAqUmF3Qml0QnVm
U2l6ZTsKCiAgY2hhciAqKkF1eGlsYXJ5SW5mbzsKICBUQm9vbCBiQXV4aWxhcnlNb2RpZmllZDsK
CiAgdW5zaWduZWQgY2hhciAqKk1NYXBQdHI7CgogIGludCBSYXdPcGVuZWQ7CgoKICBSYXdDaGFu
VGlsZUluZm9fdCAqKnBhcHNUaWxlSW5mbzsKCgogIGludCBuT3ZlcnZpZXdzOwogIGludCBuTWF4
T3ZlcnZpZXdzOwogIFJhd092ZXJ2aWV3SW5mb190ICpwYXNPdmVydmlld3M7CiAgVEJvb2wgYlJh
d01hbmFnZWRPdmVydmlld3M7Cgp9IFJhd0luZm9fdDsKCkZJTEUgKiBSYXdDcmVhdGUoIGNoYXIg
KiwgaW50LCBpbnQsIGludCwgaW50LCBjaGFyICogKTsKRklMRSAqIFJhd09wZW4oIGNoYXIgKiwg
Y2hhciAqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgbG9uZyApOwpGSUxFICogUmF3UmVvcGVu
KCBGSUxFICogKTsKdm9pZCBSYXdEZWZpbmUoIEZJTEUgKiwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGxvbmcgKTsKaW50IFJhd1Byb21vdGUoIEZJTEUgKiApOwppbnQgUmF3Q2hhblR5cGUoIEZJ
TEUgKiwgaW50ICk7CnZvaWQgUmF3U2l6ZUluZm8oIEZJTEUgKiwgaW50ICosIGludCAqLCBpbnQg
KiApOwppbnQgUmF3R2VvcmVmSU8oIEZJTEUgKiwgaW50LCBjaGFyICosIGRvdWJsZSAqLCBkb3Vi
bGUgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqLCBkb3VibGUgKiAp
OwppbnQgUmF3UHJvamVjdGlvbklPKCBGSUxFICosIGludCwgUHJvakluZm9fdCAqICk7CnZvaWQg
UmF3U2V0UHJvamVjdGlvbkluZm8oIEdEQkxheWVyLCBQcm9qSW5mb190ICogKTsKaW50IFJhd0dl
dFByb2plY3Rpb25JbmZvKCBHREJMYXllciwgUHJvakluZm9fdCAqICk7CnZvaWQgUmF3Qnl0ZUNo
YW5JTyggRklMRSAqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqLCBpbnQsIGludCwgaW50LCBpbnQgKiApOwp2
b2lkIFJhd0ludENoYW5JTyggRklMRSAqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMiAqLCBpbnQsIGludCwgaW50LCBpbnQgKiAp
Owp2b2lkIFJhd1JlYWxDaGFuSU8oIEZJTEUgKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0ICosIGludCwgaW50LCBpbnQsIGlu
dCAqICk7CnZvaWQgUmF3Q2hhbklPXzEoIEZJTEUgKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiwgaW50
LCBpbnQsIGludCwgaW50ICk7CmludCBSYXdDaGFuSU9fTiggRklMRSAqLCBpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
Y2hhciAqLCBpbnQsIGludCwgaW50ICosIGludCApOwp2b2lkIFJhd0NoYW5JT19NYXBwZWQoIEZJ
TEUgKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCwgdW5zaWduZWQgY2hhciAqLCBpbnQsIGludCwgaW50LCBpbnQgKTsKVEJv
b2wgUmF3Q2hhbklPX092ZXJ2aWV3KCBGSUxFICosIGludCwgaW50LCBpbnQsIGludCwgaW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiwgaW50
LCBpbnQsIGludCwgaW50ICk7CnZvaWQgUmF3UmVnaXN0ZXIoKTsKdm9pZCBGQ05DaGFuSU9fMSgg
RklMRSAqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqLCBpbnQsIGludCwgaW50LCBpbnQgKTsKdm9pZCBG
Q05DaGFuSU9fVGlsZWQoIEZJTEUgKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICosIGludCwgaW50
LCBpbnQsIGludCApOwpUQm9vbCBGQ05DaGFuSU9fTiggRklMRSAqLCBpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50LCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQsIGludCwgaW50ICosIGludCApOwp2b2lkIEZDTlNldENoYW5JbmZvKCBGSUxFICos
IGludCwgaW50LCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFuUldG
dW5jLCBDaGFuUldGdW5jLCB2b2lkICogKTsKdm9pZCBGQ05TZXRUaWxlSW5mbyggRklMRSAqLCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRpbGVSV0Z1bmMsIFRpbGVSV0Z1bmMsIHZvaWQgKiApOwp2b2lkIFJhd1NldENoYW5JbmZvKCBG
SUxFICosIGludCwgbG9uZywgbG9uZywgbG9uZywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCwgaW50ICk7CnZvaWQgUmF3U2V0Q2hhbkJ5dGVTd2FwKCBGSUxFICosIGludCwg
aW50ICk7CmludCBSYXdHZXRDaGFuSW5mbyggRklMRSAqLCBpbnQsIGNoYXIgKiwgaW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyAqLCBsb25nICosIGxvbmcgKiwgaW50
ICogKTsKVEJvb2wgUmF3R2V0VGlsZUluZm8oIEZJTEUgKiwgaW50LCBpbnQgKiwgaW50ICogKTsK
CnZvaWQgUmF3Qml0bWFwSU8oIEZJTEUgKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiwgaW50LCBpbnQg
KTsKdm9pZCBSYXdTZXRCaXRtYXBJbmZvKCBGSUxFICosIGludCwgbG9uZywgbG9uZywgaW50ICk7
Cgp2b2lkIFJhd01lbUJpdG1hcElPKCBGSUxFICosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICosIGlu
dCwgaW50ICk7CnZvaWQgUmF3U2V0TWVtQml0bWFwSW5mbyggRklMRSAqLCB1bnNpZ25lZCBjaGFy
ICosIGxvbmcsIGludCwgbG9uZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbG9uZywgaW50ICk7CgppbnQgUmF3SGludCggRklMRSAqICk7CnZvaWQgUmF3Q2xvc2UoIEZJ
TEUgKiApOwp2b2lkIFJhd0Nsb3NlT3ZlcnZpZXdzKCBGSUxFICogKTsKdm9pZCBSYXdTeW5jKCBG
SUxFICogKTsKVEJvb2wgUmF3V3JpdGVBdXhGaWxlKCBGSUxFICogKTsKdm9pZCBSYXdTd2FwQnVm
ZmVyKCB1bnNpZ25lZCBjaGFyICosIGludCwgaW50LCBpbnQgKTsKdm9pZCBSYXdTZWdEZXNjSU8o
IEZJTEUgKiwgaW50LCBpbnQsIGludCwgY2hhciAqICk7CmludCBSYXdDaGFuRGVzY0lPKCBGSUxF
ICosIGludCwgaW50LCBjaGFyICogKTsKdm9pZCBSYXdTZXRBdXhEZWZJbmZvKCBGSUxFICogKTsK
Y2hhciAqKiBSYXdNZXRhRGF0YUlPKCBGSUxFICosIGludCwgaW50LCBpbnQsIGNoYXIgKiogKTsK
Y2hhciAqKiBSYXdNZXRhRGF0YUlPV2l0aFBDVCggRklMRSAqLCBpbnQsIGludCwgaW50LCBjaGFy
ICoqICk7Cgp1bnNpZ25lZCBjaGFyICpSYXdHZXRUaWxlKCBGSUxFICogZnAsIGludCwgaW50LCBp
bnQgKTsKdW5zaWduZWQgY2hhciAqUmF3VXBkYXRlVGlsZSggRklMRSAqIGZwLCBpbnQsIGludCwg
aW50ICk7CnZvaWQgUmF3U3luY1RpbGVzKCBGSUxFICogZnAsIGludCApOwp2b2lkIFJhd1dyaXRl
U3luY1RpbGVzKCBGSUxFICogZnAsIGludCApOwoKdm9pZCBSYXdTZXRDaGFuT3ZlcnZpZXcoIEZJ
TEUgKiwgaW50LCBGSUxFICosIGludCwgVEJvb2wsIFRCb29sICk7CnZvaWQgUmF3QnVpbGRPdmVy
dmlld3MoIEZJTEUgKiwgaW50LCBpbnQgKiwgaW50LCBUQm9vbCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSU1QUHJvZ3Jlc3NGdW5jLCB2b2lkICogKTsKR0RCT3ZlcnZpZXdJbmZvX3QgKgog
ICAgICAgICAgICAgICAgUmF3R2V0T3ZlcnZpZXdzKCBGSUxFICosIGludCAqICk7CgoKCgoKIyAx
ICIuLi8uLi8uLi9saWIvbHJlZi5oIiAxCiMgMjAgIi4uLy4uLy4uL2xpYi9scmVmLmgiCmV4dGVy
biAiQyIgewoKdHlwZWRlZiBzdHJ1Y3QKewogICAgRklMRSAqZnA7CiAgICBjaGFyICpwc3pGaWxl
bmFtZTsKICAgIGludCBuUmVmVHlwZTsKICAgIGludCBuTGF5ZXJUeXBlOwogICAgaW50IG5MYXll
ckluZGV4OwogICAgVEJvb2wgYlJlZmVyZW5jZWQ7Cn0gR0RCTFJlZjsKCnR5cGVkZWYgc3RydWN0
CnsKICAgIGludCBuUmVmczsKICAgIEdEQkxSZWYgKipwYXBzU3JjTFJlZnM7CiAgICBHREJMUmVm
ICoqcGFwc0RzdExSZWZzOwp9IEdEQkxSZWZNYXA7CiMgNTAgIi4uLy4uLy4uL2xpYi9scmVmLmgi
CkdEQkxSZWYgKkdEQlBhcnNlUkVGKEZJTEUgKmZwLCBjb25zdCBjaGFyICogcHN6UmVmU3RyaW5n
ICk7CmNoYXIgKkdEQkJ1aWxkUkVGKGludCBuUmVmVHlwZSwgY29uc3QgY2hhciAqcHN6QmFzZUZp
bGUsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBzekxheWVyRmlsZSwgaW50IG5M
YXllclR5cGUsaW50IG5MYXllckluZGV4KTsKR0RCTFJlZiAqR0RCQnVpbGRMUmVmKGludCBuUmVm
VHlwZSwgRklMRSAqZnBMYXllciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyICpwc3pGaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
bkxheWVyVHlwZSwgaW50IG5MYXllckluZGV4ICk7CnZvaWQgR0RCRGVzdHJveUxSZWYoR0RCTFJl
ZiAqcHNMUmVmKTsKR0RCTFJlZiAqR0RCRHVwbGljYXRlTFJlZiggR0RCTFJlZiAqcHNMUmVmICk7
CnZvaWQgR0RCQWNjZXNzTFJlZiggR0RCTFJlZiAqcHNMUmVmICk7CnZvaWQgR0RCRGVhY2Nlc3NM
UmVmKCBHREJMUmVmICpwc0xSZWYgKTsKVEJvb2wgR0RCTFJlZkNvbXBhcmUoIGNvbnN0IEdEQkxS
ZWYgKnBzTFJlZjEsIGNvbnN0IEdEQkxSZWYgKnBzTFJlZjIgKTsKCkdEQkxSZWZNYXAgKkdEQkFk
ZFRvTFJlZk1hcChHREJMUmVmTWFwICpwc0xSZWZNYXAsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHREJMUmVmICpwc1NyY0xSZWYsIEdEQkxSZWYgKnBzRHN0TFJlZik7CkdEQkxSZWZNYXAg
KkdEQkFkZExheWVyVG9MUmVmTWFwKEdEQkxSZWZNYXAgKnBzTFJlZk1hcCwgaW50IG5SZWZUeXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbkxheWVyVHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcHN6U3JjRmlsZSwgaW50IG5T
cmNMYXllckluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
ICpwc3pEc3RGaWxlLCBpbnQgbkRzdExheWVySW5kZXggKTsKdm9pZCBHREJEZXN0cm95TFJlZk1h
cChHREJMUmVmTWFwICpwc0xSZWZNYXApOwpjaGFyICpHREJBcHBseUxSZWZNYXBUb1JFRihGSUxF
ICpmcCwgY29uc3QgY2hhciAqcHN6UkVGLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
REJMUmVmTWFwICpwc0xSZWZNYXApOwp2b2lkIEdEQkFwcGx5TFJlZk1hcFRvTGF5ZXIoRklMRSAq
ZnAsIGludCBuTFR5cGUsIGludCBuTEluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0RCTFJlZk1hcCAqIHBzTFJlZk1hcCk7CnZvaWQgR0RCQXBwbHlMUmVmTWFwVG9GaWxlKEZJ
TEUgKmZwLCBHREJMUmVmTWFwICpwc0xSZWZNYXApOwoKY2hhciAqR0RCTW92ZVJFRihGSUxFICpm
cE9sZEJhc2UsIGNvbnN0IGNoYXIgKnBzelJFRiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
RklMRSAqZnBOZXdCYXNlKTsKVEJvb2wgR0RCTWV0YURhdGFNb3ZlUkVGKGNoYXIgKipwYXBzek1l
dGFEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKmZwT2xkQmFz
ZSwgRklMRSAqZnBOZXdCYXNlKTsKdm9pZCBHREJTZXRWZWN0b3JMYXllclJFRihHREJMYXllciBw
c0Jhc2VMYXllciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqcHN6UkVGTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCTGF5
ZXIgcHNSZWZMYXllciApOwpHREJMYXllciBHREJHZXRMYXllckZyb21SRUYoIEZJTEUgKmZwLCBj
b25zdCBjaGFyICpwc3pSRUYgKTsKVEJvb2wgR0RCTGF5ZXJBbmRSRUZDb21wYXJlKEdEQkxheWVy
IHBzTGF5ZXIsIEZJTEUgKmZwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIgKnBzelJFRik7Cgp9CiMgMjc5NyAiLi4vLi4vLi4vbGliL2dkYi5oIiAyCgpH
REJMUmVmICogR0RCRGVmYXVsdFBDVCggRklMRSAqLCBpbnQgKTsKR0RCTFJlZiAqIEdEQkRlZmF1
bHRMVVQoIEZJTEUgKiwgaW50ICk7CgoKCgoKdm9pZCBDTUxSZWdpc3RlciAodm9pZCk7CkZJTEUg
KkNNTENyZWF0ZSAoY2hhciAqLCBpbnQsIGludCwgaW50LCBpbnQsIGNoYXIgKik7CnZvaWQgQ01M
U2V0Q2hhbkluZm8gKEZJTEUgKiwgaW50LCBpbnQsIHVuc2lnbmVkIGNoYXIgKiwgbG9uZywgbG9u
ZywgVEJvb2wpOwoKCgoKdm9pZCBNb3Y4VSggaW50LCBpbnQsIGludCwgaW50LCB1bnNpZ25lZCBj
aGFyICosIGludCwgaW50LCBpbnQsIHVuc2lnbmVkIGNoYXIgKik7CnZvaWQgTW92MTZTKCBpbnQs
IGludCwgaW50LCBpbnQsIHVuc2lnbmVkIGNoYXIgKiwgaW50LCBpbnQsIGludCwgdW5zaWduZWQg
Y2hhciAqKTsKdm9pZCBNb3YxNlUoIGludCwgaW50LCBpbnQsIGludCwgdW5zaWduZWQgY2hhciAq
LCBpbnQsIGludCwgaW50LCB1bnNpZ25lZCBjaGFyICopOwp2b2lkIE1vdjMyUiggaW50LCBpbnQs
IGludCwgaW50LCB1bnNpZ25lZCBjaGFyICosIGludCwgaW50LCBpbnQsIHVuc2lnbmVkIGNoYXIg
Kik7Cgpjb25zdCBjaGFyICpHREJDaGFuRGF0YVR5cGUyU3RyaW5nKCBpbnQgbkRhdGFUeXBlICk7
CgpTaWduYXR1cmVfdCAqU2lnQ3JlYXRlKCB2b2lkICk7CnZvaWQgU2lnRnJlZSggU2lnbmF0dXJl
X3QgKiApOwoKCgoKCnZvaWQgQ2hlY2tDaFJhbmdlKCBjaGFyICosIGludCAqLCBpbnQsIGludCwg
aW50ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqLCBpbnQsIGludCApOwp2
b2lkIENoZWNrRHZDaGFuKCBjaGFyICosIGludCAqLCBpbnQsIGludCApOwp2b2lkIENoZWNrRHZX
aW4oIGNoYXIgKiwgaW50ICosIGludCwgaW50ICk7CmludCBDbGlwVmVjdG9yKCBkb3VibGUgKiwg
ZG91YmxlICosIGRvdWJsZSAqLCBkb3VibGUgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSApOwp2b2lkIEJpdFdpc2VTYW1wbGUoIHVu
c2lnbmVkIGNoYXIgKiwgbG9uZywgbG9uZywgdW5zaWduZWQgY2hhciAqLCBsb25nLCBsb25nICk7
CgpUQm9vbCBDbGlwM0RWZWN0b3IoIGRvdWJsZSAqLCBkb3VibGUgKiwgZG91YmxlICosIGRvdWJs
ZSAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqLCBkb3VibGUgKiwg
ZG91YmxlLCBkb3VibGUsIGRvdWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
b3VibGUgKTsKCgoKCmV4dGVybiBpbnQgQ2hhbjJTaXplVGFibGVbXTsKCgoKCgp0eXBlZGVmIHN0
cnVjdCB7CiAgaW50IE5FbnRyaWVzOwogIGRvdWJsZSAqUmFuZ2VTdGFydDsKICBkb3VibGUgKlJh
bmdlRW5kOwogIGNoYXIgKipEZXNjcmlwdGlvbjsKCiAgaW50IE5GaWVsZHM7CiAgdm9pZCAqKkZp
ZWxkQXJyYXk7CiAgaW50ICpGaWVsZFR5cGU7CgogIGRvdWJsZSAqRG91YmxlQnVmZmVyOwogIGNo
YXIgKlN0cmluZ0J1ZmZlcjsKfSBBdHRyaWJ1dGVfdDsKCgoKCkF0dHJpYnV0ZV90ICogSW5nZXN0
QXR0cmlidXRlcyggVEluZm9fdCAqICk7CmludCBGaW5kQXR0cmlidXRlRW50cnkoIEF0dHJpYnV0
ZV90ICosIGRvdWJsZSApOwp2b2lkIERlc3Ryb3lBdHRyaWJ1dGVzKCBBdHRyaWJ1dGVfdCAqICk7
CgoKCgp2b2lkIElNUFVwZGF0ZUZsb2F0SGFzaCggZG91YmxlICosIGRvdWJsZSApOwppbnQgSU1Q
U3RyaW5nSGFzaCggY29uc3QgY2hhciAqICk7CmRvdWJsZSBHREJTaGFwZUhhc2goIEdEQkxheWVy
LCBHREJTaGFwZSAqLCBpbnQgKTsKZG91YmxlIEdEQkxheWVySGFzaCggR0RCTGF5ZXIsIGludCAp
OwpUQm9vbCBHREJSZXBvcnRXcm9uZ0hhc2goIGNvbnN0IGNoYXIgKiwgR0RCTGF5ZXIsIEdEQlNo
YXBlICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCwgZG91YmxlICk7
CiMgMjg5MCAiLi4vLi4vLi4vbGliL2dkYi5oIgp2b2lkIFREQlJlZ2lzdGVyKCB2b2lkICk7CnZv
aWQgR0RBUmVnaXN0ZXIoIHZvaWQgKTsKdm9pZCBRdWFkdHJlZVJlZ2lzdGVyKCB2b2lkICk7CgoK
CgoKY2hhciAqIF9HREJDaGFuZ2VGaWxlRXh0KCBjb25zdCBjaGFyICpwc3pOYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcHN6TmV3RXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEJvb2wgYk1hdGNoQ2FzZSAp
OwoKdm9pZCBfR0RCVXBkYXRlMkRCb3VuZHMoR0RCVmVydGV4ICpwc0JvdW5kc01pbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCVmVydGV4ICpwc0JvdW5kc01heCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCU2hhcGUgKnBzU2hhcGUp
OwoKY2hhciAqKiBfR0RCVG9rZW5pemUoY2hhciAqcHN6U3RyMSwgY2hhciAqcHN6RGVsaW0sCiAg
ICAgICAgICAgICAgICAgICAgICAgaW50IG5NYXhUb2ssIGNoYXIgKipwcHN6TmV4dCk7CgpHREJW
ZXJ0ZXggKiBfR0RCRWxsaXBzZShkb3VibGUgZGZYQ2VudGVyLCBkb3VibGUgZGZZQ2VudGVyLAog
ICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkZlhSYWRpdXMsIGRvdWJsZSBkZllSYWRpdXMs
CiAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRmU3RhcnRBbmdsZSwgZG91YmxlIGRmRW5k
QW5nbGUsCiAgICAgICAgICAgICAgICAgICAgICAgaW50IG5NYXhTZWdtZW50cywgaW50ICpwblZl
cnRpY2VzKTsKCgoKCnR5cGVkZWYgc3RydWN0CnsKICAgIGludCBuUGl4ZWxzOwogICAgaW50IG5M
aW5lczsKICAgIGludCBuQnl0ZXM7CiAgICBpbnQgbkJ1ZkxpbmVzOwogICAgaW50IG5MaW5lRmly
c3Q7CiAgICBpbnQgbkxpbmVMYXN0OwogICAgdm9pZCAqKnBwSW1hZ2U7CiAgICB2b2lkICpwTWVt
QmxvY2s7CiAgICBpbnQgbkFjY2Vzc01vZGU7CiAgICBUQm9vbCBiSW5NZW1vcnk7CiAgICBGSUxF
ICpmcEJ1ZjsKICAgIGNoYXIgKnBzekZpbGVOYW1lOwp9CkZCSW5mb1R5cGU7CgoKCgoKdm9pZCAq
KiBGQkFsbG9jSW1hZ2UoaW50IG5QaXhlbHMsIGludCBuTGluZXMsIGludCBuQnl0ZXMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbkJ1ZkxpbmVzLCBGQkluZm9UeXBlICpwc0ZC
SW5mbyk7Cgp2b2lkIEZCRnJlZUltYWdlKEZCSW5mb1R5cGUgKnBzRkJJbmZvKTsKCnZvaWQgRkJB
Y2Nlc3NMaW5lKGludCBpTGluZSwgaW50IG5MbnNBYm92ZSwgaW50IG5MbnNCZWxvdywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBuQWNjZXNzTW9kZSwgRkJJbmZvVHlwZSAqcHNGQklu
Zm8pOwoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgQUlJRmlsZUluZm9fdAp7CiAgICBGSUxFICpmcDsK
ICAgIGNoYXIgKnBzekJ1ZjsKICAgIGludCBpUHRyOwp9QUlJRmlsZUluZm87Cgp2b2lkIEFJSVJl
d2luZChBSUlGaWxlSW5mbyAqcHNGaWxlSW5mbyk7CmNoYXIgKkFJSVJlYWRDb21wcmVzc2VkTGlu
ZShBSUlGaWxlSW5mbyAqcHNGaWxlSW5mbyk7Cgp2b2lkIF9NSUZQcm9jZXNzQ09PUkRTWVMoRklM
RSAqZnBNSUYsIFByb2pJbmZvX3QgKnNQcm9qLAogICAgZG91YmxlIGRmTUlGMkdEQlVuaXRzLCBj
aGFyICoqcHBzekxpbmUgKTsKCnZvaWQgX01JRldyaXRlQ09PUkRTWVMoRklMRSAqZnBNSUYsIFBy
b2pJbmZvX3QgKnNQcm9qLAogICAgVEJvb2wgYldyaXRlRU9MICk7CgoKCgoKCkdEQkxheWVyIEdE
Qk9sZEdldExheWVyKEZJTEUgKmZwLCBpbnQgblNlZ21lbnQpOwpHREJTaGFwZUlkIEdEQk9sZEdl
dE5leHRTaGFwZUlkKEdEQkxheWVyIHBzTGF5ZXIsIEdEQlNoYXBlSWQgaFNoYXBlSWQpOwpHREJT
aGFwZUlkIEdEQk9sZENyZWF0ZVNoYXBlKEdEQkxheWVyIHBzTGF5ZXIsIEdEQlNoYXBlSWQgaEhp
bnRJZCk7CkdEQlNoYXBlICpHREJPbGRHZXRTaGFwZShHREJMYXllciBwc0xheWVyLCBHREJTaGFw
ZUlkIGhTaGFwZUlkKTsKdm9pZCBHREJPbGRTZXRTaGFwZShHREJMYXllciBwc0xheWVyLCBHREJT
aGFwZUlkIGhTaGFwZUlkLAogICAgICAgICAgICAgICAgICAgICAgICAgIEdEQlNoYXBlICpwc1No
YXBlKTsKaW50IEdEQk9sZEdldFByb2plY3Rpb25JbmZvKEdEQkxheWVyIHBzTGF5ZXIsIFByb2pJ
bmZvX3QgKnBzUHJvaik7CnZvaWQgQ3JlYXRlRHluYW1pY0NhY2hlcyhHREJMYXllciBwc0xheWVy
KTsKdm9pZCBfR0RCRGVyZWdpc3RlckxheWVyRm9yQ2xvc2UoRklMRSAqZnAsIEdEQkxheWVyIGhM
YXllcik7CnZvaWQgX0dEQkZsdXNoTGF5ZXJDYWNoZShGSUxFICpmcCk7CnZvaWQgX0dEQkNsZWFy
TGF5ZXJDb21wYXRMaXN0KEZJTEUgKmZwKTsKdm9pZCBfR0RCUmVsZWFzZUNhY2hlKEZJTEUgKmZw
KTsKdm9pZCBHREJSZWdpc3RlckxheWVyRm9yQ2xvc2UoRklMRSAqZnAsIEdEQkxheWVyIGhMYXll
cik7CgoKCgoKCmxvbmcgSW1hZ2VTdGF0cyggRklMRSAqLCBpbnQsIGludCAqLCBpbnQsIGludCAq
LCBmbG9hdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAqLCBmbG9hdCAqLCBm
bG9hdCAqICk7CmludCBJbWFnZUhpc3RvZ3JhbSggRklMRSAqIGZwLCBpbnQsIGludCAqLCBpbnQs
IGludCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICosIGludCwgZG91Ymxl
ICosIGRvdWJsZSAqLCBUQm9vbCwgVEJvb2wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJTVBQcm9ncmVzc0Z1bmMsIHZvaWQgKiApOwppbnQgSW1hZ2VTYW1wbGVkSGlzdG9ncmFtKCBG
SUxFICogZnAsIGludCwgaW50ICosIGludCwgaW50ICosCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgKiwgaW50LCBkb3VibGUgKiwgZG91YmxlICosIFRCb29sLCBUQm9vbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNUFByb2dyZXNzRnVuYywgdm9pZCAqICk7CgoK
CgoKdHlwZWRlZiBzdHJ1Y3QKewogICAgaW50IGlKb2luTnVtYmVyOwogICAgaW50IGlQcmltYXJ5
S2V5RmllbGQ7CiAgICBjaGFyICpwc3pTZWNvbmRGaWxlTmFtZTsKICAgIFRCb29sIGJJblByaW1h
cnlGaWxlOwogICAgaW50IG5TZWNvbmRTZWdtZW50TnVtOwogICAgR0RCTGF5ZXIgcHNTZWNvbmRh
cnlUYWJsZTsKICAgIGludCBpRm9yZWlnbktleUZpZWxkOwogICAgaW50IG5BY3RpdmU7Cn0gR0RC
Sm9pbkluZm87CgpHREJKb2luSW5mbyAqR0RCUmVhZEpvaW5zKEdEQkxheWVyIHBzTGF5ZXIpOwp2
b2lkIEdEQlJlbW92ZUpvaW4oR0RCTGF5ZXIgcHNMYXllcixpbnQgaUpvaW5OdW0pOwp2b2lkIEdE
QkFkZEpvaW4oR0RCTGF5ZXIgcHNMYXllcixpbnQgaVByaW1hcnlLZXksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdEQkxheWVyIHBzU2Vjb25kYXJ5VGFibGUsIGludCBpRm9yZWln
bktleSk7CnZvaWQgR0RCQWN0aXZhdGVKb2luKEdEQkxheWVyIHBzTGF5ZXIsaW50IGlKb2luTnVt
KTsKdm9pZCBHREJEZWFjdGl2YXRlSm9pbihHREJMYXllciBwc0xheWVyLCBpbnQgaUpvaW5OdW0p
Owp2b2lkIEdEQkpvaW5SZWtleShHREJMYXllciBwc0xheWVyLGludCBpSm9pbk51bSxpbnQgaU5l
d1ByaW1hcnlLZXkpOwp2b2lkIEdEQkRlc3Ryb3lKb2luSW5mbyhHREJKb2luSW5mbyAqcGFzSm9p
bnMpOwppbnQgR0RCR2V0TnVtYmVySm9pbnMoIEZJTEUgKmZwLCBpbnQgblR5cGUsIGludCBuSW5k
ZXggKTsKRklMRSAqR0RCQWNjZXNzTGF5ZXJXaXRoSm9pbnMoR0RCTGF5ZXIgcHNQcmltYXJ5TGF5
ZXIpOwpUQm9vbCBHREJDbG9zZUpvaW5lZExheWVycyhGSUxFICpmcCwgY2hhciAqKipwcGFwc3pD
bG9zZWRGaWxlcyk7CnZvaWQgR0RCQ2xvc2VKb2luRmlsZXMoY2hhciAqKnBhcHN6Q2xvc2FibGVG
aWxlcyk7ClRCb29sIEdEQklzSm9pbmVkRmllbGQoR0RCTGF5ZXIgcHNKb2luZWRMYXllciwgaW50
IGlGaWVsZCk7CgoKCgoKaW50IEdEQkdldE51bUNtYiggRklMRSAqZmRwQmFzZUZpbGUsIGludCBu
QlNlZ21lbnQpOwpUQm9vbCBHREJBZGRDb21iaW5lZExheWVyIChGSUxFICpmZHBCYXNlRmlsZSwg
aW50IG5CU2VnbWVudCwKICAgICAgICAgICAgICAgICAgICBjaGFyICpwc3pDRmlsZW5hbWUsIGlu
dCBpQ1NlZ21lbnQsIGNoYXIgKnBzek9wdGlvbik7CnZvaWQgR0RCUmVtb3ZlQ29tYmluZWRMYXll
cihGSUxFICpmZHBCYXNlRmlsZSwgaW50IG5CU2VnbWVudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyICpwc3pDRmlsZW5hbWUsaW50IGlDU2VnbWVudCk7CgoKCgp2
b2lkIEdEQlJhc3RlckFkZEpvaW4oIEZJTEUgKmZwLCBpbnQgaUNoYW5OdW0sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQkxheWVyIHBzU2Vjb25kYXJ5VGFibGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpRm9yZWlnbktl
eSApOwp2b2lkIEdEQlJhc3RlclJlbW92ZUpvaW4oIEZJTEUgKmZwLCBpbnQgaUNoYW5OdW0sIGlu
dCBpSm9pbk51bSApOwpHREJKb2luSW5mbyAqIEdEQlJhc3RlclJlYWRKb2lucyggRklMRSAqZnAs
IGludCBpQ2hhbk51bSApOwp2b2lkIEdEQlJhc3RlckFjdGl2YXRlSm9pbiggRklMRSAqZnAsIGlu
dCBpQ2hhbk51bSwgaW50IGlKb2luTnVtICk7CnZvaWQgR0RCUmFzdGVyRGVhY3RpdmF0ZUpvaW4o
IEZJTEUgKmZwLCBpbnQgaUNoYW5OdW0sIGludCBpSm9pbk51bSApOwpHREJMYXllciBHREJSYXN0
ZXJHZXRKb2luTGF5ZXIoIEZJTEUgKmZwLCBpbnQgaUNoYW5OdW0sIGludCAqcG5LZXlGaWVsZCAp
OwpHREJMYXllciBHREJSYXN0ZXJDcmVhdGVKb2luKCBGSUxFICpmcCwgaW50IGlDaGFuTnVtLCBj
aGFyICpwc3pLZXlGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKnBzek5hbWUsIGNoYXIgKnBzekRlc2MgKTsKCkdEQkZpZWxkICogR0RC
UmFzdGVyR2V0UmVjb3JkUmVmKCBGSUxFICpmcCwgaW50IGlDaGFuTnVtLCBkb3VibGUgZGZQaXhl
bFZhbHVlICk7CkdEQkZpZWxkICogR0RCUmFzdGVyR2V0UmVjb3JkKCBGSUxFICpmcCwgaW50IGlD
aGFuTnVtLCBkb3VibGUgZGZQaXhlbFZhbHVlICk7CnZvaWQgR0RCUmFzdGVyU2V0UmVjb3JkKCBG
SUxFICpmcCwgaW50IGlDaGFuTnVtLCBHREJGaWVsZCAqIHBhc0ZpZWxkcyApOwoKR0RCU2hhcGUg
KiBHREJSYXN0ZXJHZXRTaGFwZVJlZiggRklMRSAqZnAsIGludCBpQ2hhbk51bSwgZG91YmxlIGRm
UGl4ZWxWYWx1ZSApOwpHREJTaGFwZSAqIEdEQlJhc3RlckdldFNoYXBlKCBGSUxFICpmcCwgaW50
IGlDaGFuTnVtLCBkb3VibGUgZGZQaXhlbFZhbHVlICk7CnZvaWQgR0RCUmFzdGVyU2V0U2hhcGUo
IEZJTEUgKmZwLCBpbnQgaUNoYW5OdW0sIEdEQlNoYXBlICogcHNTaGFwZSApOwoKVEJvb2wgR0RC
SXNQb2ludEluc2lkZVZlcnRpY2VzKEdEQlZlcnRleCAqcHNWZXJ0ZXgsIGludCBuQ291bnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCVmVydGV4ICpwYXNWZXJ0
aWNlcywgaW50ICpuUmluZ1N0YXJ0KTsKVEJvb2wgR0RCSXNQb2ludEluc2lkZU9yT25WZXJ0aWNl
cyhHREJWZXJ0ZXggKnBzVmVydGV4LCBpbnQgbkNvdW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHREJWZXJ0ZXggKnBhc1ZlcnRpY2VzLCBpbnQgKm5SaW5n
U3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRCb29s
IGJBbGxvd09uKTsKCmRvdWJsZSBHREJHZXREaXN0YW5jZShjb25zdCBHREJWZXJ0ZXggKnBzRmly
c3RQb2ludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHREJWZXJ0ZXgg
KnBzU2Vjb25kUG9pbnQpOwoKZG91YmxlIEdEQkNvbXB1dGVTaGFwZUFyZWEoR0RCTGF5ZXIgaExh
eWVyLCBHREJTaGFwZUlkIGhTaGFwZUlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRCb29sIGJEaXNwbGF5RXJyb3IsIFRCb29sICpiVG9wb0Vycm9yKTsKZG91YmxlIEdE
QkNvbXB1dGVTaGFwZVBlcmltZXRlcihHREJMYXllciBoTGF5ZXIsIEdEQlNoYXBlSWQgaFNoYXBl
SWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQm9vbCBiRGlz
cGxheUVycm9yLCBUQm9vbCAqYlRvcG9FcnJvcik7ClRCb29sIEdEQklzU2hhcGVDbG9zZWQoR0RC
TGF5ZXIgaExheWVyLCBHREJTaGFwZSAqcHNTaGFwZSk7CgpjaGFyICoqIEdEQkNvcHlBdHRyaWJ1
dGVzKCBHREJMYXllciBoTmV3TGF5ZXIsIGludCBuTnVtYmVyTGF5ZXJzLCBHREJMYXllciAqcGFo
TGF5ZXIsIFRCb29sIGJSZXR1cm5MaXN0ICk7CgpjaGFyICoqIEdEQkxpc3ROYW1lcyhjb25zdCBj
aGFyICpwc3pGaWxlTmFtZSwgaW50IG5MYXllckxpc3RGbGFnKTsKY2hhciAqKiBHREJMaXN0Rmll
bGROYW1lcyhjb25zdCBjaGFyICpwc3pGaWxlTmFtZSk7CmNoYXIgKiBHREJMaXN0RmlsZU1hc2so
IGludCBuU2VnbWVudCwgaW50IG5Nb2RlLCBUQm9vbCBiQWRkQWxsRmlsZXMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcHN6QWRkaXRpb25hbFR5cGVzICk7
CmNoYXIgKiogR0RCR2V0VmFsaWRGaWVsZFZhbHVlcyhHREJMYXllciBoTGF5ZXIsIGludCBpRmll
bGRJbmRleCk7Cn0KIyAyODcgImxzY21pc2MuaCIgMgoKCmV4dGVybiAiQyIgewojIDM0OSAibHNj
bWlzYy5oIgpzdHJ1Y3QgWFlSYW5nZV90CnsKICAgIGRvdWJsZSBkZlhNaW4sIGRmWU1pbjsKICAg
IGRvdWJsZSBkZlhNYXgsIGRmWU1heDsKfTsKCnR5cGVkZWYgc3RydWN0IFhZUmFuZ2VfdCBYWVJh
bmdlOwoKc3RydWN0IFhZT3JpZ2luX3QKewogICAgZG91YmxlIGRmWE1pbiwgZGZZTWluOwp9OwoK
c3RydWN0IExTQ0NvdW50QWxsb2NfdAp7CiAgICBjaGFyICpwc3pBbGxvY0Rlc2NyaXB0aW9uOwog
ICAgaW50IG5Db3VudDsKfTsKdHlwZWRlZiBzdHJ1Y3QgTFNDQ291bnRBbGxvY190IExTQ0NvdW50
QWxsb2M7Cgp0eXBlZGVmIHN0cnVjdCBYWU9yaWdpbl90IFhZT3JpZ2luOwoKCgoKCnR5cGVkZWYg
ZG91YmxlIExTQ01hdHJpeFsyXVszXTsKdm9pZCBDb3B5TWF0cml4KExTQ01hdHJpeCBzU291cmNl
LCBMU0NNYXRyaXggc0Rlc3QpOwp2b2lkIEJ1aWxkTWF0cml4KGRvdWJsZSBkWCxkb3VibGUgZFks
ZG91YmxlIGRTeCxkb3VibGUgZFN5LAogICAgICAgICAgICAgICAgIGRvdWJsZSBkUngsIGRvdWJs
ZSBkUlksIGRvdWJsZSBkQW5nbGUsCiAgICAgICAgICAgICAgICAgTFNDTWF0cml4IHNSZXN1bHQp
Owp2b2lkIEV2YWx1YXRlX1JvdGF0ZShkb3VibGUgZEFuZ2xlLCBMU0NNYXRyaXggc1Jlc3VsdCk7
CnZvaWQgRXZhbHVhdGVfVHJhbnNsYXRlKGRvdWJsZSBkWCwgZG91YmxlIGRZLCBMU0NNYXRyaXgg
c1Jlc3VsdCk7CnZvaWQgRXZhbHVhdGVfU2NhbGUoZG91YmxlIGRTY2FsZVgsIGRvdWJsZSBkU2Nh
bGVZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMU0NNYXRyaXggc1Jlc3VsdCk7CnZv
aWQgQWNjdW11bGF0ZShMU0NNYXRyaXggc01hLCBMU0NNYXRyaXggc01iLCBMU0NNYXRyaXggc1Jl
c3VsdCk7CnZvaWQgQWNjdW11bGF0ZV9Sb3RhdGUoZG91YmxlIGRBbmdsZSwgTFNDTWF0cml4IHNS
ZXN1bHQpOwp2b2lkIEFjY3VtdWxhdGVfVHJhbnNsYXRlKGRvdWJsZSBkWCwgZG91YmxlIGRZLCBM
U0NNYXRyaXggc1Jlc3VsdCk7CnZvaWQgQWNjdW11bGF0ZV9TY2FsZShkb3VibGUgZFNjYWxlWCwg
ZG91YmxlIGRTY2FsZVksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFNDTWF0cml4
IHNSZXN1bHQpOwp2b2lkIFRyYW5zZm9ybVBvaW50KExTQ01hdHJpeCBzTWF0cml4LCBHREJWZXJ0
ZXgqIHBzT2xkViwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCVmVydGV4KiBwTmV3
Vik7CgoKCgoKdHlwZWRlZiBkb3VibGUgTFNDTWF0cml4M0RbM11bNF07CnZvaWQgQ29weU1hdHJp
eDNEKExTQ01hdHJpeDNEIHNTb3VyY2UsIExTQ01hdHJpeDNEIHNEZXN0KTsKdm9pZCBFdmFsdWF0
ZV9Sb3RhdGUzRFgoZG91YmxlIGRBbmdsZVgsIExTQ01hdHJpeDNEIHNSZXN1bHQpOwp2b2lkIEV2
YWx1YXRlX1JvdGF0ZTNEWShkb3VibGUgZEFuZ2xlWSwgTFNDTWF0cml4M0Qgc1Jlc3VsdCk7CnZv
aWQgRXZhbHVhdGVfUm90YXRlM0RaKGRvdWJsZSBkQW5nbGVaLCBMU0NNYXRyaXgzRCBzUmVzdWx0
KTsKdm9pZCBFdmFsdWF0ZV9UcmFuc2xhdGUzRChkb3VibGUgZFgsIGRvdWJsZSBkWSwgZG91Ymxl
IGRaLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMU0NNYXRyaXgzRCBzUmVz
dWx0KTsKdm9pZCBFdmFsdWF0ZV9TY2FsZTNEKGRvdWJsZSBkU3gsIGRvdWJsZSBkU3ksIGRvdWJs
ZSBkU3osCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFNDTWF0cml4M0Qgc1Jlc3Vs
dCk7Cgp2b2lkIEFjY3VtdWxhdGUzRChMU0NNYXRyaXgzRCBzTWEsIExTQ01hdHJpeDNEIHNNYiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExTQ01hdHJpeDNEIHNSZXN1bHQpOwoKdm9pZCBB
Y2N1bXVsYXRlX1JvdGF0ZTNEWChkb3VibGUgZEFuZ2xlWCwgTFNDTWF0cml4M0Qgc1Jlc3VsdCk7
CnZvaWQgQWNjdW11bGF0ZV9Sb3RhdGUzRFkoZG91YmxlIGRBbmdsZVksIExTQ01hdHJpeDNEIHNS
ZXN1bHQpOwp2b2lkIEFjY3VtdWxhdGVfUm90YXRlM0RaKGRvdWJsZSBkQW5nbGVaLCBMU0NNYXRy
aXgzRCBzUmVzdWx0KTsKdm9pZCBBY2N1bXVsYXRlX1RyYW5zbGF0ZTNEKGRvdWJsZSBkWCwgZG91
YmxlIGRZLCBkb3VibGUgZFosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TFNDTWF0cml4M0Qgc1Jlc3VsdCk7CnZvaWQgQWNjdW11bGF0ZV9TY2FsZTNEKGRvdWJsZSBkU3gs
IGRvdWJsZSBkU3ksIGRvdWJsZSBkU3osCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBMU0NNYXRyaXgzRCBzUmVzdWx0KTsKCnZvaWQgVHJhbnNmb3JtUG9pbnQzRChMU0NNYXRyaXgz
RCBzTWF0cml4LCBHREJWZXJ0ZXgqIHBzT2xkViwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHREJWZXJ0ZXggKnBOZXdWKTsKCgoKCnZvaWQgTFNDR0RCQ2hpbGRUb1JpbmcoR0RCTGF5
ZXIgaExheWVyKTsKVEJvb2wgSXNFbnRpdHlJbkxpc3QoR0RCU2hhcGVJZCwgR0RCU2hhcGVJZCAq
LCBpbnQpOwoKaW50IExTQ0ZsdXNoRHVwbGljYXRlZFBvaW50KEdEQlZlcnRleCAqcGFzTGluZSwg
aW50IGNvdW50KTsKCnZvaWQgTFNDUmV2ZXJzZUFycmF5T2ZWZXJ0aWNlcyggR0RCVmVydGV4ICog
cGFzVmVydGljZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IG5Db3VudCApOwoKVEJvb2wgR2V0UG9pbnRQZXJwZW5kaWN1bGFyVmVjdG9yKEdEQlZlcnRleCAq
cHNQb2ludFRhbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCVmVydGV4ICog
Y29uc3QgcHNTZWxlY3RlZFBvaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
REJWZXJ0ZXggKiBjb25zdCBwc0ZpcnN0UG9pbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdEQlZlcnRleCAqY29uc3QgcHNTZWNvbmRQb2ludCApOwpjaGFyICpDb252ZXJ0SW50
ZWdlclRvVGhvdXNhbmROb3RhdGlvbihpbnQgbk51bWJlcik7CmRvdWJsZSBHZXRNaW5EaXN0YW5j
ZSggR0RCVmVydGV4ICpQLCBHREJWZXJ0ZXggKkEsIEdEQlZlcnRleCAqQiApOwpkb3VibGUgR2V0
RGlzdGFuY2UoY29uc3QgR0RCVmVydGV4ICpwc0ZpcnN0UG9pbnQsCiAgICAgICAgICAgICAgICAg
ICBjb25zdCBHREJWZXJ0ZXggKnBzU2Vjb25kUG9pbnQpOwpkb3VibGUgR2V0QW5nbGVJblRyaWFu
Z2xlKCBjb25zdCBHREJWZXJ0ZXggKnBzQW5nbGVQb2ludCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdEQlZlcnRleCAqcHNMZWZ0UG9pbnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHREJWZXJ0ZXggKnBzUmlnaHRQb2ludCAp
OwoKVEJvb2wgR2V0SW50ZXJzZWN0aW9PZkxpbmVzKCBHREJWZXJ0ZXggKnBzVmVydGV4RGVzdCwg
R0RCVmVydGV4IHNQMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJWZXJ0ZXggc1Ay
LCBHREJWZXJ0ZXggc1AzLCBHREJWZXJ0ZXggc1A0ICk7ClRCb29sIEdldFByZWNpc2VMaW5lSW50
ZXJzZWN0aW9uKCBjb25zdCBkb3VibGUgZGZQcmVjaXNpb24sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHREJWZXJ0ZXggKnBzSW50ZXJzZWN0LCBHREJWZXJ0ZXggc1AxLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCVmVydGV4IHNQMiwgR0RCVmVydGV4IHNQ
MyxHREJWZXJ0ZXggc1A0ICk7CgpUQm9vbCBJc09uVGhlTGluZSggR0RCVmVydGV4ICpwc0ZpcnN0
UG9pbnQsIEdEQlZlcnRleCAqcHNTZWNvbmRQb2ludCwKICAgICAgICAgICAgICAgICAgIEdEQlZl
cnRleCAqcHNDaGVja1B0ICk7CgpUQm9vbCBJc1BvaW50T25FbnRpdHkoIEdEQlZlcnRleCAqcGFz
VmVydGljZXMsIGludCBuQ291bnRWZXJ0ZXgsCiAgICAgICAgICAgICAgICAgICAgICAgR0RCVmVy
dGV4ICpwc1ZlcnRleFBvcywgZG91YmxlIGRmRGlzdFRvbGVyYW5jZSApOwoKVEJvb2wgSXNQb2lu
dEluc2lkZVBvbHkoaW50IG5wb2wsIGRvdWJsZSAqeHAsIGRvdWJsZSAqeXAsIGRvdWJsZSB4LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB5KTsKClRCb29sIEN1dHNP
ckluc2lkZShHREJWZXJ0ZXggKnBhc1ZlcnRpY2VzLCBpbnQgbkNvdW50VmVydGV4LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBYWVJhbmdlIHNSYW5nZSk7Cgp2b2lkIFVwZGF0ZUJCb3go
R0RCVmVydGV4ICpwc1RvdGFsTWluLCBHREJWZXJ0ZXggKnBzVG90YWxNYXgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0RCVmVydGV4ICpwc01pbiwgR0RCVmVydGV4ICpwc01heCk7CgpHREJW
ZXJ0ZXggKkxTQ0ZpbmROZWFyZXN0UG9pbnQoR0RCVmVydGV4ICpwc1BvaW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQlZlcnRleCAqcGFzVmVydGljZXMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5Db3VudCwgaW50ICpu
TGVmdEluZGV4KTsKCmNoYXIgKiBMU0NHZW5lcmF0ZVVuaXF1ZUdEQkZpZWxkTmFtZSggR0RCTGF5
ZXIgcHNMYXllciApOwoKVEJvb2wgTFNDSXNEaXJlY3RvcnkoIGNvbnN0IGNoYXIgKnBzekRpcmVj
dG9yeSApOwpUQm9vbCBMU0NJc0RpcmVjdG9yeVdyaXRhYmxlKCBjb25zdCBjaGFyICpwc3pEaXJl
Y3RvcnkgKTsKCgppbnQgTFNDVmFsaWRBTmV3RmlsZW5hbWUoY29uc3QgY2hhciAqcHN6TmV3Rmls
ZW5hbWUpOwpjaGFyICpMU0NDcmVhdGVVbmlxdWVCYXNlTmFtZShjb25zdCBjaGFyKiBwc3pCYXNl
TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuVHJ5LCBp
bnQgbk1heEJhc2VOYW1lTGVuZ3RoKTsKY2hhciAqTFNDQ3JlYXRlTmV3RmlsZW5hbWUoY29uc3Qg
Y2hhciAqcHN6Q3VycmVudEZpbGVuYW1lKTsKY2hhciAqTFNDQ3JlYXRlTmV3QmFja3VwRmlsZW5h
bWUoY29uc3QgY2hhciAqcHN6Q3VycmVudEZpbGVuYW1lKTsKY2hhciAqTFNDQ3JlYXRlTmV3Rmls
ZW5hbWVXaXRoRXh0ZW5zaW9uKGNvbnN0IGNoYXIgKnBzekN1cnJlbnRGaWxlbmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpw
c3pFeHRlbnNpb24pOwoKY2hhciAqTFNDR2V0VGVtcG9yeUZpbGVuYW1lKCk7CmNoYXIgKkxTQ1Rl
bXBGaWxlTmFtZSggY29uc3QgY2hhciAqcHN6UGF0aCApOwpjaGFyICpMU0NUZW1wRmlsZU5hbWVS
ZWwoIGNvbnN0IGNoYXIgKnBzelJlbEZpbGUgKTsKY2hhciAqTFNDUmVsYXRpdmVGaWxlbmFtZSgg
Y29uc3QgY2hhciAqcHN6RmlsZTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIgKnBzekZpbGUyICk7CmNvbnN0IGNoYXIgKkxTQ0dldFRlbXBEaXIoIHZvaWQg
KTsKVEJvb2wgTFNDX0lTX0RJUl9PSyhjb25zdCBjaGFyKiBwc3pEaXIpOwoKY2hhciAqTFNDUmVs
YXRpdmVGaWxlbmFtZTMoY29uc3QgY2hhciAqcHN6RmlsZTEsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIgKnBzekZpbGUyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICpwc3pGaWxlMyApOwpjaGFyICpMU0NFeHRyYWN0Q29tbW9uUGF0aCggY29uc3Qg
Y2hhciAqcHN6RmlsZTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyICpwc3pGaWxlMiApOwppbnQgTFNDQ2hlY2tQYXJhbUZpbGUoKTsKaW50IExTQ0ROUENo
ZWNrKGNvbnN0IGNoYXIgKik7CmludCBMU0NETlBTZXRTdGF0dXMoIGNvbnN0IGNoYXIgKlBhY2th
Z2VDb2RlLCBpbnQgblN0YXR1cyApOwoKRklMRSAqTFNDR0RCT3Blbihjb25zdCBjaGFyICpwc3pO
YW1lLCBjb25zdCBjaGFyICpwc3pBY2Nlc3MpOwppbnQgTFNDR0RCQ2xvc2UoRklMRSAqZnApOwpG
SUxFICpMU0NHREJDcmVhdGVGaWxlKGludCBmaWxlX3R5cGUsIGNoYXIgKmZpbGVuYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgIGludCBwaXhlbHMsIGludCBsaW5lcywgaW50IGJhbmRzLCBpbnQg
ZGF0YV90eXBlLAogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm9wdGlvbnMgKTsKaW50IExT
Q0dEQkNsb3NlQWxsKCk7CmludCBMU0NHREJHZXROdW1SZXF1ZXN0b3JzKEZJTEUgKmZwKTsKdm9p
ZCBMU0NHREJGaWxlc1JlcG9ydCgpOwpsb25nIExTQ0dldEdEQlNpemUoR0RCU2hhcGUgKiBwc1No
YXBlLCBHREJMYXllciBoTGF5ZXIpOwpUQm9vbCBMU0NWZXJ0ZXhFcXVhbCggY29uc3QgR0RCVmVy
dGV4KiBwc0ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0RCVmVy
dGV4KiBwc1NlY29uZCApOwoKVEJvb2wgTFNDWFlSYW5nZUVxdWFsKCBjb25zdCBYWVJhbmdlKiBw
c1IxLCBjb25zdCBYWVJhbmdlKiBwc1IyKTsKVEJvb2wgTFNDUmFuZ2VJbnRlcnNlY3Rpb24oIGNv
bnN0IFhZUmFuZ2UqIHBzUjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgWFlSYW5nZSogcHNSMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBYWVJhbmdlKiBwc1JuZ091dCk7CgpUQm9vbCBMU0NFcXVhbE9yTGVzc1RoYW4oIGRvdWJsZSBk
ZkZpcnN0LCBkb3VibGUgZGZTZWNvbmQgKTsKVEJvb2wgTFNDRXF1YWxPckdyZWF0ZXJUaGFuKCBk
b3VibGUgZGZGaXJzdCwgZG91YmxlIGRmU2Vjb25kICk7Cgp2b2lkIExTQ1NwbGluZUN1cnZlKEdE
QlZlcnRleCAqcGFzVmVydGljZXMgLCBpbnQgbk5iVmVydGljZXMsCiAgICAgICAgICAgICAgICAg
ICAgR0RCVmVydGV4ICoqcGFzVmVydGljZXNDdXJ2ZSwgaW50ICpuTmJWZXJ0aWNlc0N1cnZlKTsK
dm9pZCBMU0NCZXppZXJDdXJ2ZShHREJWZXJ0ZXggKnBhc1ZlcnRpY2VzICwgaW50IG5OYlZlcnRp
Y2VzLAogICAgICAgICAgICAgICAgICAgIEdEQlZlcnRleCAqKnBhc1ZlcnRpY2VzQ3VydmUsIGlu
dCAqbk5iVmVydGljZXNDdXJ2ZSk7Cgp2b2lkIExTQ0hMU3RvUkdCMjU2KGludCBuSCwgaW50IG5M
LCBpbnQgblMsIGludCAqcG5SLCBpbnQgKnBuRywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50ICpwbkIpOwoKY29uc3QgY2hhciAqIExTQ0J1aWxkTGF5ZXJEZXNjKGNvbnN0IGNoYXIg
KnBzekZuYW1lLGludCBuU2VnbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIgKnBzelNlZ0Rlc2MsIFRCb29sIGJJc0FjdGl2ZSk7CmNvbnN0IGNoYXIgKiBMU0NC
dWlsZExheWVyRGVzYzIoY29uc3QgY2hhciAqcHN6Rm5hbWUsaW50IG5TZWdtZW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBzelNlZ0Rlc2MsIFRCb29sIGJJ
c0FjdGl2ZSk7CmNvbnN0IGNoYXIgKiBMU0NCdWlsZEltYWdlRGVzYyhjb25zdCBjaGFyICpwc3pG
aWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
KnBzelR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwc3pT
ZWdEZXNjLCBUQm9vbCBiSXNBY3RpdmUpOwpjaGFyICogTFNDU3RyaXBJREJEZXNjKGNvbnN0IGNo
YXIgKnBzekRlc2MpOwoKdm9pZCBMU0NHZXRQYXBlclNpemVUaGF0TWFrZVNlbnNlKFhZUmFuZ2Ug
KnBzR2VvRXh0ZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBk
ZkFwcHJveFdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFlSYW5nZSAq
cHNQYXBlckV4dGVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUg
KmRmU2NhbGluZ0ZhY3Rvcik7CgoKY29uc3QgY2hhciAqTFNDRmluZERhdGFGaWxlKGNvbnN0IGNo
YXIgKnBzekZpbGVJbik7Cgp2b2lkIENvbXB1dGVPZmZzZXRQYXJhbXMoZG91YmxlIGRmV2lkdGgs
IGRvdWJsZSBkZkhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3Vi
bGUgZGZSZXNvbHV0aW9uLCBpbnQgKnBuUGl4ZWxYLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCAqcG5PZmZzZXRQaXhlbFksIGludCAqcG5NYXhQaXhlbFksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlICpwZGZPZmZzZXRQYXBlclkpOwoKZG91
YmxlIFZhbGlkYXRlX0RQSShkb3VibGUgZGZSZXNvbHV0aW9uLGRvdWJsZSBkZldpZHRoLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGZIZWlnaHQpOwoKCgoKCgp2b2lkIExT
Q0VuY3J5cHRGUChGSUxFICpmcEluLCBGSUxFICpmcE91dCwgY2hhciAqcHN6SGVhZGVyKTsKdm9p
ZCBMU0NFbmNyeXB0RmlsZShjaGFyICpwc3pJbkZpbGUsIGNoYXIgKnBzek91dEZpbGUpOwpUQm9v
bCBMU0NEZWNyeXB0RlAoRklMRSAqZnBJbiwgRklMRSAqZnBPdXQpOwp2b2lkIExTQ0RlY3J5cHRG
aWxlKGNoYXIgKnBzekluRmlsZSwgY2hhciAqcHN6T3V0RmlsZSk7CgpjaGFyICpMU0NHZXRIZWFk
ZXJGUChGSUxFICpmcEluKTsKaW50IExTQ0luc3RhbGxQU0ZvbnRzKGNoYXIgKnBzekluUGF0aCxj
aGFyICoqcGFwc3pGb250TGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXIgKnBzek91dFBhdGgpOwp2b2lkIExTQ0dlbkZvbnRMaXN0KGNoYXIgKnBzekZvbnRMaXN0LCBj
aGFyICpwc3pTZWFyY2hQYXRoKTsKCgoKClRCb29sIE1hcERldmljZUxzYyhjaGFyICpwc3pEZXZz
dHJpbmcsIGludCAqbk5hbWUsIGludCAqblR5cGUsCiAgICAgICAgICAgICAgICAgICAgZG91Ymxl
ICpkZlhSZXMsIGRvdWJsZSAqZGZZUmVzLAogICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqZGZY
UGFnZSwgZG91YmxlICpkZllQYWdlKTsKCgoKCgp2b2lkIE1hcERldmljZShjaGFyICpwc3pEZXZz
dHJpbmcsIGludCAqbk5hbWUsIGludCAqblR5cGUsCiAgICAgICAgICAgICAgICAgICAgZG91Ymxl
ICpkZlhSZXMsIGRvdWJsZSAqZGZZUmVzLAogICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqZGZY
UGFnZSwgZG91YmxlICpkZllQYWdlKTsKCgoKaW50IHJvdGJpdF9tYWluKGNoYXIgKmZpbGksIGNo
YXIgKmZpbG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqZGJpYiwgaW50IGRiaWJj
b3VudCwgaW50IGFuZ2xlKTsKIyA1OTYgImxzY21pc2MuaCIKc3RydWN0IE1BUExheWVyX3QKewog
ICAgVEJvb2wgYkluZm9WYWxpZDsKICAgIFhZUmFuZ2Ugc1BhcGVyRXh0ZW50czsKICAgIFhZUmFu
Z2Ugc0dlb3JlZkV4dGVudHM7CiAgICBkb3VibGUgZGZHZW8yUGFwU2NhbGVYOwogICAgZG91Ymxl
IGRmR2VvMlBhcFNjYWxlWTsKICAgIGRvdWJsZSBkZkdlbzJQaXhTY2FsZVg7CiAgICBkb3VibGUg
ZGZHZW8yUGl4U2NhbGVZOwogICAgZG91YmxlIGRmR2VvWE9yaWdpbjsKICAgIGRvdWJsZSBkZkdl
b1lPcmlnaW47CiAgICBYWVJhbmdlIHNPcmdQYXBlckV4dGVudHM7CgoKCn07CnR5cGVkZWYgc3Ry
dWN0IE1BUExheWVyX3QgKiBNQVBMYXllcjsKCnN0cnVjdCBNQVBTY2FsZV90CnsKICAgIFhZUmFu
Z2Ugc1BhcGVyTWFwRXh0ZW50czsKICAgIFhZUmFuZ2Ugc1BhcGVyV2luRXh0ZW50czsKICAgIGlu
dCBuV2luWFNpemU7CiAgICBpbnQgbldpbllTaXplOwogICAgZG91YmxlIGRmUGFwMlBpeFNjYWxl
WDsKICAgIGRvdWJsZSBkZlBhcDJQaXhTY2FsZVk7CiAgICBpbnQgbkxheWVyczsKICAgIHN0cnVj
dCBNQVBMYXllcl90ICpwYXNMYXllcnM7CiAgICBYWVJhbmdlIHNPcmdQYXBlck1hcEV4dGVudHM7
CgoKICAgIFRCb29sIGJSZXZlcnNlWVBpeDsKfTsKdHlwZWRlZiBzdHJ1Y3QgTUFQU2NhbGVfdCAq
IE1BUFNjYWxlOwoKCgoKCk1BUFNjYWxlIE1BUFNjYWxlQnVpbGRJbmZvKFhZUmFuZ2UgKnBzUGFw
ZXJFeHRlbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICBYWVJhbmdlICpwc1dpbmRvd0V4
dGVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuV2luWFNpemUsIGludCBuV2lu
WVNpemUpOwp2b2lkIE1BUFNjYWxlRGVzdHJveUluZm8oTUFQU2NhbGUgcHNJbmZvKTsKdm9pZCBN
QVBTZXRQYXBlckV4dGVudHMoTUFQU2NhbGUgcHNJbmZvLCBYWVJhbmdlICpwc0V4dGVudHMpOwp2
b2lkIE1BUFNldFdpbmRvd0V4dGVudHMoTUFQU2NhbGUgcHNJbmZvLCBYWVJhbmdlICpwc0V4dGVu
dHMsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbldpblhTaXplLCBpbnQgbldpbllTaXpl
KTsKdm9pZCBNQVBTZXRMYXllckV4dGVudHMoTUFQU2NhbGUgcHNJbmZvLCBpbnQgaUxheWVyLAog
ICAgICAgICAgICAgICAgICAgICAgICBYWVJhbmdlICpwc1BhcGVyRXh0ZW50cywKICAgICAgICAg
ICAgICAgICAgICAgICAgWFlSYW5nZSAqcHNHZW9yZWZFeHRlbnRzKTsKVEJvb2wgTUFQVmVjMlBp
eCggTUFQU2NhbGUgcHNJbmZvLCBpbnQgaUxheWVyLAogICAgICAgICAgICAgICAgICBHREJWZXJ0
ZXggKnBzVmVjLCBHREJWZXJ0ZXggKnBzUGl4KTsKVEJvb2wgTUFQYVZlYzJhUGl4KCBNQVBTY2Fs
ZSBwc0luZm8sIGludCBpTGF5ZXIsIGludCBuVmVydGljZXMsCiAgICAgICAgICAgICAgICAgICAg
R0RCVmVydGV4ICpwYXNWZWMsIEdEQlZlcnRleCAqcGFzUGl4KTsKVEJvb2wgTUFQUGl4MlZlYygg
TUFQU2NhbGUgcHNJbmZvLCBpbnQgaUxheWVyLAogICAgICAgICAgICAgICAgICBHREJWZXJ0ZXgg
KnBzUGl4LCBHREJWZXJ0ZXggKnBzVmVjKTsKVEJvb2wgTUFQYVBpeDJhVmVjKCBNQVBTY2FsZSBw
c0luZm8sIGludCBpTGF5ZXIsIGludCBuVmVydGljZXMsCiAgICAgICAgICAgICAgICAgICAgR0RC
VmVydGV4ICpwYXNQaXgsIEdEQlZlcnRleCAqcGFzVmVjKTsKVEJvb2wgTUFQVmVjMlBhcCggTUFQ
U2NhbGUgcHNJbmZvLCBpbnQgaUxheWVyLAogICAgICAgICAgICAgICAgICBHREJWZXJ0ZXggKnBz
VmVjLCBHREJWZXJ0ZXggKnBzUGFwKTsKVEJvb2wgTUFQYVZlYzJhUGFwKCBNQVBTY2FsZSBwc0lu
Zm8sIGludCBpTGF5ZXIsIGludCBuVmVydGljZXMsCiAgICAgICAgICAgICAgICAgICAgR0RCVmVy
dGV4ICpwYXNWZWMsIEdEQlZlcnRleCAqcGFzUGFwKTsKVEJvb2wgTUFQUGFwMlZlYyggTUFQU2Nh
bGUgcHNJbmZvLCBpbnQgaUxheWVyLAogICAgICAgICAgICAgICAgICBHREJWZXJ0ZXggKnBzUGFw
LCBHREJWZXJ0ZXggKnBzVmVjKTsKVEJvb2wgTUFQYVBhcDJhVmVjKCBNQVBTY2FsZSBwc0luZm8s
IGludCBpTGF5ZXIsIGludCBuVmVydGljZXMsCiAgICAgICAgICAgICAgICAgICAgR0RCVmVydGV4
ICpwYXNQYXAsIEdEQlZlcnRleCAqcGFzVmVjKTsKVEJvb2wgTUFQUGFwMlBpeCggTUFQU2NhbGUg
cHNJbmZvLCBHREJWZXJ0ZXggKnBzUGFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICBHREJW
ZXJ0ZXggKnBzUGl4KTsKVEJvb2wgTUFQYVBhcDJhUGl4KCBNQVBTY2FsZSBwc0luZm8sIGludCBu
VmVydGljZXMsCiAgICAgICAgICAgICAgICAgICAgR0RCVmVydGV4ICpwYXNQYXAsIEdEQlZlcnRl
eCAqcGFzUGl4KTsKVEJvb2wgTUFQUGl4MlBhcCggTUFQU2NhbGUgcHNJbmZvLCBHREJWZXJ0ZXgg
KnBzUGl4LAogICAgICAgICAgICAgICAgICAgICAgICAgICBHREJWZXJ0ZXggKnBzUGFwKTsKVEJv
b2wgTUFQYVBpeDJhUGFwKCBNQVBTY2FsZSBwc0luZm8sIGludCBuVmVydGljZXMsCiAgICAgICAg
ICAgICAgICAgICAgR0RCVmVydGV4ICpwYXNQaXgsIEdEQlZlcnRleCAqcGFzUGFwKTsKdm9pZCBN
QVBTZXRQYXBlckZpdEZhY3RvcihNQVBTY2FsZSBwc0luZm8sIGRvdWJsZSBkZlBhcGVyRml0RmFj
dG9yKTsKTUFQU2NhbGUgTUFQU2NhbGVDb3B5KE1BUFNjYWxlIGhNYXBTY2FsZSk7ClRCb29sIE1B
UFNldFJldmVyc2VZUGl4KE1BUFNjYWxlIHBzSW5mbywgVEJvb2wgYlJldmVyc2VZUGl4KTsKCgoK
CgoKdm9pZCAqTFNDUmVhZFJTVChjaGFyICooKnBmblJlYWRGdW5jdGlvbikodm9pZCAqcERhdGEp
LHZvaWQgKnBEYXRhLAogICAgICAgICAgICAgICAgICAgIGNoYXIgKnBzelJTVEZpbGVOYW1lLCBj
b25zdCBjaGFyICpwc3pBY2Nlc3MpOwp2b2lkIExTQ1dyaXRlUlNUKHZvaWQgKlJTVFRhYmxlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqcGZuV3JpdGVGdW5jdGlvbikoY2hhciAq
cHN6RGF0YSwKICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcERhdGEpLHZvaWQgKnBEYXRhLCBj
aGFyICpwc3pSU1RGaWxlTmFtZSk7CiMgNjk1ICJsc2NtaXNjLmgiCkZJTEUgKiBHREJDb3B5RGF0
YVNldFRvTWVtKEZJTEUgKiBwc1NyY0RhdGFTZXQpOwoKRklMRSAqIEdEQkNvcHlNZW1Ub0RhdGFT
ZXQoRklMRSAqIHBzU3JjRGF0YVNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKiBwc3pEYXRhU2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqIHBzelNob3J0TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
KiBwc3pPcHRpb25zICk7CgpUQm9vbCBUTVBTZWdFeGlzdHMoRklMRSAqZnAsIGludCBuU2VnVHlw
ZSwgaW50IG5TZWdtZW50KTsKaW50IEdEQkNvcHlMYXllcihGSUxFICpmcFNyYywgaW50IG5TZWdO
dW0sIEZJTEUgKmZwRGVzdCk7CmludCBHREJVcGRhdGVMYXllcihGSUxFICpmcFNyYywgaW50IG5T
ZWdTcmMsIEZJTEUgKmZwRGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBu
U2VnRGVzdCk7CiMgNzE3ICJsc2NtaXNjLmgiCnZvaWQgVFVGT3Blbk1hc3RlckxvZyhjb25zdCBj
aGFyICpwc3pGbmFtZSk7CnZvaWQgVFVGQ2xvc2VNYXN0ZXJMb2coKTsKRklMRSAqVFVGU3RhcnRU
ZXN0KGNvbnN0IGNoYXIgKnBzelRlc3ROYW1lKTsKdm9pZCBUVUZFbmRUZXN0KGludCBuU3RhdHVz
KTsKdm9pZCBUVUZIYW5kbGVJTVBFcnJvcigpOwp2b2lkIFRVRkxvZ0VyciggY29uc3QgY2hhciAq
Zm9ybWF0LCAuLi4gKTsKdm9pZCBUVUZMb2dNc2coIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uICk7
CmNvbnN0IGNoYXIgKlRVRkZpbmREYXRhRmlsZShjb25zdCBjaGFyICpwc3pGaWxlSW4pOwojIDcz
NyAibHNjbWlzYy5oIgp2b2lkIEdEQkZpbmRFeHRlbnRzKEdEQlZlcnRleCAqLCBpbnQgLCBHREJW
ZXJ0ZXggKiwgR0RCVmVydGV4ICopOwoKCkdEQlNoYXBlSWQgKkdEQkdldENoaWxkTGlzdENvcHko
R0RCTGF5ZXIgaExheWVyLCBHREJTaGFwZUlkIGhFbnRpdHkpOwoKCgoKCmRvdWJsZSBMU0NSYW5k
VXBUbyhkb3VibGUgbk1heCk7CiMgNzY3ICJsc2NtaXNjLmgiCnZvaWQgTWF4TWluKGRvdWJsZSBk
ZkEsIGRvdWJsZSBkZkIsIGRvdWJsZSogZGZNaW4sIGRvdWJsZSoKZGZNYXgpOwoKCgoKCgpUQm9v
bCBMU0NDYWxjRXh0ZW50cyhHREJMYXllciBoTGF5ZXIsR0RCVmVydGV4ICpwc0xheWVyTWluLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCVmVydGV4ICpwc0xheWVyTWF4KTsKCgp2
b2lkIExTQ1NldFBXRChjb25zdCBjaGFyICpwc3pGaWxlbmFtZSk7CmNvbnN0IGNoYXIgKkxTQ0dl
dFBXRCgpOwoKCgp9CgoKCgoKCgp2b2lkIFNldERlYnVnRmlsZShGSUxFICpmcCk7CgoKCgoKCgp2
b2lkIENvdW50QWxsb2MoY29uc3QgY2hhciAqcHN6RGVzYyk7CnZvaWQgQ291bnREZXNhbGxvYyhj
b25zdCBjaGFyICpwc3pEZXNjKTsKdm9pZCBDb3VudEFsbG9jRGVidWcoKTsKIyA2OSAibWF0cml4
LmhoIiAyCgoKCgpjbGFzcyBNYXQzRAp7CiAgcHJpdmF0ZToKICAgIFRCb29sIG1iSW52ZXJzZTsK
ICAgIFRCb29sIG1iSW5pdGlhbGl6ZTsKICAgIFRCb29sIG1iSW52SW5pdGlhbGl6ZTsKICAgIGRv
dWJsZSBtYWRNYXRbNF1bNF07CiAgICBkb3VibGUgbWFkTWF0SW52ZXJzZVs0XVs0XTsKCiAgcHVi
bGljOgogICAgTWF0M0QoVEJvb2wgYklkZW50aXR5ID0gMSwgVEJvb2wgYkludmVyc2UgPSAxKTsK
ICAgIE1hdDNEKGNvbnN0IE1hdDNEJiBvTWF0KTsKICAgIE1hdDNEKGRvdWJsZSBkZlgxLCBkb3Vi
bGUgZGZZMSwgZG91YmxlIGRmWjEsIGRvdWJsZSBkZlcxLAogICAgICAgICAgZG91YmxlIGRmWDIs
IGRvdWJsZSBkZlkyLCBkb3VibGUgZGZaMiwgZG91YmxlIGRmVzIsCiAgICAgICAgICBkb3VibGUg
ZGZYMywgZG91YmxlIGRmWTMsIGRvdWJsZSBkZlozLCBkb3VibGUgZGZXMywKICAgICAgICAgIGRv
dWJsZSBkZlg0LCBkb3VibGUgZGZZNCwgZG91YmxlIGRmWjQsIGRvdWJsZSBkZlc0KTsKCgoKCiAg
ICB2b2lkIFNldFRyYW5zbGF0aW9uKHJlZ2lzdGVyIGRvdWJsZSBkZlRyYW5zWCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGRvdWJsZSBkZlRyYW5zWSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGRvdWJsZSBkZlRyYW5zWiA9IDAuMCk7CiAg
ICB2b2lkIEFkZFRyYW5zbGF0aW9uKHJlZ2lzdGVyIGRvdWJsZSBkZlRyYW5zWCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGRvdWJsZSBkZlRyYW5zWSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGRvdWJsZSBkZlRyYW5zWiA9IDAuMCk7Cgog
ICAgdm9pZCBTZXRTY2FsaW5nKHJlZ2lzdGVyIGRvdWJsZSBkZlNjYWxlWCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVnaXN0ZXIgZG91YmxlIGRmU2NhbGVZLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWdpc3RlciBkb3VibGUgZGZTY2FsZVogPSAxLjAsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlZ2lzdGVyIGRvdWJsZSBkZk9yaWdpblggPSAwLjAsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGRvdWJsZSBkZk9yaWdpblkgPSAwLjAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGRvdWJsZSBkZk9yaWdpblogPSAwLjApOwoKICAg
IHZvaWQgQWRkU2NhbGluZyhkb3VibGUgZGZTY2FsZVgsIGRvdWJsZSBkZlNjYWxlWSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRmU2NhbGVaID0gMS4wLCBkb3VibGUgZGZPcmln
aW5YID0gMC4wLAogICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGZPcmlnaW5ZID0g
MC4wLCBkb3VibGUgZGZPcmlnaW5aID0gMC4wKTsKCiAgICB2b2lkIFNldFNoZWFyKHJlZ2lzdGVy
IGRvdWJsZSBkZlNjYWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgZG91Ymxl
IGRmT3JpZ2luWCA9IDAuMCwKICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGRvdWJs
ZSBkZk9yaWdpblkgPSAwLjAsCiAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBkb3Vi
bGUgZGZPcmlnaW5aID0gMC4wKTsKICAgIHZvaWQgQWRkU2hlYXIoZG91YmxlIGRmU2NhbGUsIGRv
dWJsZSBkZk9yaWdpblggPSAwLjAsCiAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGZP
cmlnaW5ZID0gMC4wLCBkb3VibGUgZGZPcmlnaW5aID0gMC4wKTsKCiAgICB2b2lkIFNldFJvdGF0
aW9uKHJlZ2lzdGVyIGRvdWJsZSBkZkFuZ2xlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVnaXN0ZXIgY29uc3QgR0RCVmVydGV4JiBzRml4LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVnaXN0ZXIgZG91YmxlIGRmUm90WCA9IDAuMCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlZ2lzdGVyIGRvdWJsZSBkZlJvdFkgPSAwLjAsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZWdpc3RlciBkb3VibGUgZGZSb3RaID0gMS4wKTsKCiAgICB2b2lkIEFkZFJvdGF0aW9u
KGRvdWJsZSBkZkFuZ2xlLCBjb25zdCBHREJWZXJ0ZXgmIHNGaXgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkb3VibGUgZGZSb3RYID0gMC4wLCBkb3VibGUgZGZSb3RZID0gMC4wLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRmUm90WiA9IDEuMCk7CgogICAgdm9pZCBT
ZXRNaXJyb3IocmVnaXN0ZXIgY29uc3QgR0RCVmVydGV4JiBzUG9pbnQxLAogICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlZ2lzdGVyIGNvbnN0IEdEQlZlcnRleCYgc1BvaW50Mik7CgoKCgogICAg
dm9pZCBTZXRJZGVudGl0eSh2b2lkKTsKICAgIFRCb29sIElzSWRlbnRpdHkodm9pZCkgY29uc3Q7
CiAgICB2b2lkIFRyYW5zcG9zZSh2b2lkKTsKICAgIHZvaWQgU3dhcChyZWdpc3RlciBkb3VibGUm
IGRFbGVtZW50MSwKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgZG91YmxlJiBkRWxlbWVu
dDIpOwoKCgoKICAgIE1hdDNEJiBBZGQoY29uc3QgTWF0M0QmIG9NYXQxLCBjb25zdCBNYXQzRCYg
b01hdDIpOwogICAgTWF0M0QmIEFkZChjb25zdCBNYXQzRCYgb01hdCwgcmVnaXN0ZXIgZG91Ymxl
IGRWYWwpOwogICAgTWF0M0Qgb3BlcmF0b3IrIChjb25zdCBNYXQzRCAmb01hdCk7CiAgICBNYXQz
RCBvcGVyYXRvcisgKHJlZ2lzdGVyIGRvdWJsZSBkVmFsKTsKICAgIE1hdDNEJiBvcGVyYXRvcis9
IChjb25zdCBNYXQzRCAmb01hdCk7CiAgICBNYXQzRCYgb3BlcmF0b3IrPSAocmVnaXN0ZXIgZG91
YmxlIGRWYWwpOwoKICAgIE1hdDNEJiBTdWJzdHJhY3QoY29uc3QgTWF0M0QmIG9NYXQxLCBjb25z
dCBNYXQzRCYgb01hdDIpOwogICAgTWF0M0QmIFN1YnN0cmFjdChjb25zdCBNYXQzRCYgb01hdCwg
cmVnaXN0ZXIgZG91YmxlIGRWYWwpOwogICAgTWF0M0Qgb3BlcmF0b3ItIChjb25zdCBNYXQzRCAm
b01hdCk7CiAgICBNYXQzRCBvcGVyYXRvci0gKHJlZ2lzdGVyIGRvdWJsZSBkVmFsKTsKICAgIE1h
dDNEJiBvcGVyYXRvci09IChjb25zdCBNYXQzRCAmb01hdCk7CiAgICBNYXQzRCYgb3BlcmF0b3It
PSAocmVnaXN0ZXIgZG91YmxlIGRWYWwpOwoKICAgIE1hdDNEJiBNdWx0aXBseShjb25zdCBNYXQz
RCYgb01hdDEsIGNvbnN0IE1hdDNEJiBvTWF0Mik7CiAgICBNYXQzRCYgTXVsdGlwbHkoY29uc3Qg
TWF0M0QmIG9NYXQsIHJlZ2lzdGVyIGRvdWJsZSBkVmFsKTsKICAgIHZvaWQgTXVsdGlwbHlJbnZl
cnNlKGNvbnN0IE1hdDNEICZvTWF0MSk7CiAgICBNYXQzRCYgTXVsdGlwbHlJbnZlcnNlKGNvbnN0
IE1hdDNEJiBvTWF0MSwgY29uc3QgTWF0M0QmIG9NYXQyKTsKICAgIEdEQlZlcnRleCBNdWx0aXBs
eShyZWdpc3RlciBHREJWZXJ0ZXgmIHNWZWMpOwoKICAgIE1hdDNEJiBvcGVyYXRvcio9IChyZWdp
c3RlciBkb3VibGUgZFZhbCk7CiAgICBNYXQzRCYgb3BlcmF0b3IqPSAoY29uc3QgTWF0M0QgJm9N
YXQpOwogICAgTWF0M0Qgb3BlcmF0b3IqIChyZWdpc3RlciBkb3VibGUgZFZhbCk7CiAgICBmcmll
bmQgR0RCVmVydGV4IG9wZXJhdG9yKiAocmVnaXN0ZXIgR0RCVmVydGV4JiBzVmVjLCBjb25zdCBN
YXQzRCYgb01hdCk7CiAgICBmcmllbmQgTWF0M0Qgb3BlcmF0b3IqIChjb25zdCBNYXQzRCYgb01h
dDEsIGNvbnN0IE1hdDNEJiBvTWF0KTsKCiAgICBNYXQzRCYgb3BlcmF0b3IrKyAoKTsKICAgIE1h
dDNEJiBvcGVyYXRvci0tICgpOwogICAgTWF0M0QmIG9wZXJhdG9yPSAoY29uc3QgTWF0M0QmIG9N
YXQpOwogICAgVEJvb2wgb3BlcmF0b3I9PSAoY29uc3QgTWF0M0QmIG9NYXQpOwoKCgoKCiAgcHJp
dmF0ZToKICAgIHZvaWQgQWRkVHJhbnNsYXRpb25Mb3dMZXZlbChyZWdpc3RlciBkb3VibGUgZGZU
cmFuc1gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGRv
dWJsZSBkZlRyYW5zWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVn
aXN0ZXIgZG91YmxlIGRmVHJhbnNaID0gMC4wKTsKCiAgICB2b2lkIEFkZFNjYWxpbmdMb3dMZXZl
bChkb3VibGUgZGZTY2FsZVgsIGRvdWJsZSBkZlNjYWxlWSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkb3VibGUgZGZTY2FsZVogPSAxLjAsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZG91YmxlIGRmT3JpZ2luWCA9IDAuMCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkb3VibGUgZGZPcmlnaW5ZID0gMC4wLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkZk9yaWdpblogPSAwLjApOwoKICAgIHZvaWQgQWRk
U2hlYXJMb3dMZXZlbChkb3VibGUgZGZTY2FsZSwgZG91YmxlIGRmT3JpZ2luWCA9IDAuMCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRmT3JpZ2luWSA9IDAuMCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRmT3JpZ2luWiA9IDAuMCk7Cgog
ICAgdm9pZCBBZGRSb3RhdGlvbkxvd0xldmVsKGRvdWJsZSBkZkFuZ2xlLCBjb25zdCBHREJWZXJ0
ZXgmIHNGaXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkZlJv
dFggPSAwLjAsIGRvdWJsZSBkZlJvdFkgPSAwLjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRvdWJsZSBkZlJvdFogPSAxLjApOwoKCn07CiMgNTI0ICJtYXRyaXguY3BwIiAy
CgpzdGF0aWMgY2hhciByY3NpZFtdID0gIiRJZDogbWF0cml4LmNwcCx2IDEuMiAyMDAxLzA3LzE4
IDEzOjAwOjI0IGpkZW5pcyBFeHAgJCI7IHN0YXRpYyBjaGFyICpyY3NpZF9hdygpIHsgcmV0dXJu
KCByY3NpZF9hdygpID8gKChjaGFyICopIF9fbnVsbCkgOiByY3NpZCApOyB9CgoKCgoKCmlubGlu
ZSB2b2lkIE1hdDNEOjpTd2FwKHJlZ2lzdGVyIGRvdWJsZSYgZGZFbGVtZW50MSwKICAgICAgICAg
ICAgICAgICAgICAgICAgcmVnaXN0ZXIgZG91YmxlJiBkZkVsZW1lbnQyKQp7CiAgcmVnaXN0ZXIg
ZG91YmxlIGRmVGVtcCA9IGRmRWxlbWVudDE7CgogIGRmRWxlbWVudDEgPSBkZkVsZW1lbnQyOwog
IGRmRWxlbWVudDIgPSBkZlRlbXA7Cn0KIyA1NDggIm1hdHJpeC5jcHAiCk1hdDNEOjpNYXQzRChU
Qm9vbCBiSWRlbnRpdHksIFRCb29sIGJJbnZlcnNlKQp7CiAgICBtYkludmVyc2UgPSBiSW52ZXJz
ZTsKICAgIG1iSW5pdGlhbGl6ZSA9IDA7CiAgICBtYkludkluaXRpYWxpemUgPSAwOwoKICAgIGlm
IChiSWRlbnRpdHkpCiAgICB7CiAgICAgICAgbWJJbnZJbml0aWFsaXplID0gMTsKICAgICAgICBt
YkluaXRpYWxpemUgPSAxOwogICAgICAgIFNldElkZW50aXR5KCk7CiAgICB9Cn0KCgoKCgoKTWF0
M0Q6Ok1hdDNEKGNvbnN0IE1hdDNEJiBvTWF0KQp7CgoKCgogICAgbWJJbnZlcnNlID0gMTsKICAg
IG1iSW5pdGlhbGl6ZSA9IDE7CiAgICBtYkludkluaXRpYWxpemUgPSAxOwoKICAgICp0aGlzID0g
b01hdDsKfQoKCgoKCgpNYXQzRDo6TWF0M0QoZG91YmxlIGRmWDEsIGRvdWJsZSBkZlkxLCBkb3Vi
bGUgZGZaMSwgZG91YmxlIGRmVzEsCiAgICAgICAgICAgICBkb3VibGUgZGZYMiwgZG91YmxlIGRm
WTIsIGRvdWJsZSBkZloyLCBkb3VibGUgZGZXMiwKICAgICAgICAgICAgIGRvdWJsZSBkZlgzLCBk
b3VibGUgZGZZMywgZG91YmxlIGRmWjMsIGRvdWJsZSBkZlczLAogICAgICAgICAgICAgZG91Ymxl
IGRmWDQsIGRvdWJsZSBkZlk0LCBkb3VibGUgZGZaNCwgZG91YmxlIGRmVzQpCnsKICAgIG1iSW52
ZXJzZSA9IDE7CiAgICBtYkluaXRpYWxpemUgPSAxOwogICAgbWJJbnZJbml0aWFsaXplID0gMTsK
CiAgICBtYWRNYXRbMF1bMF09ZGZYMTsgbWFkTWF0WzBdWzFdPWRmWTE7IG1hZE1hdFswXVsyXT1k
ZloxOyBtYWRNYXRbMF1bM109ZGZXMTsKICAgIG1hZE1hdFsxXVswXT1kZlgyOyBtYWRNYXRbMV1b
MV09ZGZZMjsgbWFkTWF0WzFdWzJdPWRmWjI7IG1hZE1hdFsxXVszXT1kZlcyOwogICAgbWFkTWF0
WzJdWzBdPWRmWDM7IG1hZE1hdFsyXVsxXT1kZlkzOyBtYWRNYXRbMl1bMl09ZGZaMzsgbWFkTWF0
WzJdWzNdPWRmVzM7CiAgICBtYWRNYXRbM11bMF09ZGZYNDsgbWFkTWF0WzNdWzFdPWRmWTQ7IG1h
ZE1hdFszXVsyXT1kZlo0OyBtYWRNYXRbM11bM109ZGZXNDsKCgoKCiAgICBtYWRNYXRJbnZlcnNl
WzBdWzBdPTEuMDsgbWFkTWF0SW52ZXJzZVswXVsxXT0wLjA7CiAgICBtYWRNYXRJbnZlcnNlWzBd
WzJdPTAuMDsgbWFkTWF0SW52ZXJzZVswXVszXT0wLjA7CiAgICBtYWRNYXRJbnZlcnNlWzFdWzBd
PTAuMDsgbWFkTWF0SW52ZXJzZVsxXVsxXT0xLjA7CiAgICBtYWRNYXRJbnZlcnNlWzFdWzJdPTAu
MDsgbWFkTWF0SW52ZXJzZVsxXVszXT0wLjA7CiAgICBtYWRNYXRJbnZlcnNlWzJdWzBdPTAuMDsg
bWFkTWF0SW52ZXJzZVsyXVsxXT0wLjA7CiAgICBtYWRNYXRJbnZlcnNlWzJdWzJdPTEuMDsgbWFk
TWF0SW52ZXJzZVsyXVszXT0wLjA7CiAgICBtYWRNYXRJbnZlcnNlWzNdWzBdPTAuMDsgbWFkTWF0
SW52ZXJzZVszXVsxXT0wLjA7CiAgICBtYWRNYXRJbnZlcnNlWzNdWzJdPTAuMDsgbWFkTWF0SW52
ZXJzZVszXVszXT0xLjA7Cn0KCgoKCgoKCnZvaWQgTWF0M0Q6OlNldElkZW50aXR5KHZvaWQpCnsK
ICAgIG1hZE1hdFswXVswXT0xLjA7IG1hZE1hdFswXVsxXT0wLjA7IG1hZE1hdFswXVsyXT0wLjA7
IG1hZE1hdFswXVszXT0wLjA7CiAgICBtYWRNYXRbMV1bMF09MC4wOyBtYWRNYXRbMV1bMV09MS4w
OyBtYWRNYXRbMV1bMl09MC4wOyBtYWRNYXRbMV1bM109MC4wOwogICAgbWFkTWF0WzJdWzBdPTAu
MDsgbWFkTWF0WzJdWzFdPTAuMDsgbWFkTWF0WzJdWzJdPTEuMDsgbWFkTWF0WzJdWzNdPTAuMDsK
ICAgIG1hZE1hdFszXVswXT0wLjA7IG1hZE1hdFszXVsxXT0wLjA7IG1hZE1hdFszXVsyXT0wLjA7
IG1hZE1hdFszXVszXT0xLjA7CgogICAgbWFkTWF0SW52ZXJzZVswXVswXT0xLjA7IG1hZE1hdElu
dmVyc2VbMF1bMV09MC4wOwogICAgbWFkTWF0SW52ZXJzZVswXVsyXT0wLjA7IG1hZE1hdEludmVy
c2VbMF1bM109MC4wOwogICAgbWFkTWF0SW52ZXJzZVsxXVswXT0wLjA7IG1hZE1hdEludmVyc2Vb
MV1bMV09MS4wOwogICAgbWFkTWF0SW52ZXJzZVsxXVsyXT0wLjA7IG1hZE1hdEludmVyc2VbMV1b
M109MC4wOwogICAgbWFkTWF0SW52ZXJzZVsyXVswXT0wLjA7IG1hZE1hdEludmVyc2VbMl1bMV09
MC4wOwogICAgbWFkTWF0SW52ZXJzZVsyXVsyXT0xLjA7IG1hZE1hdEludmVyc2VbMl1bM109MC4w
OwogICAgbWFkTWF0SW52ZXJzZVszXVswXT0wLjA7IG1hZE1hdEludmVyc2VbM11bMV09MC4wOwog
ICAgbWFkTWF0SW52ZXJzZVszXVsyXT0wLjA7IG1hZE1hdEludmVyc2VbM11bM109MS4wOwp9CgoK
CgoKCgpUQm9vbCBNYXQzRDo6SXNJZGVudGl0eSh2b2lkKSBjb25zdAp7CiAgICByZXR1cm4gKCgg
KG1hZE1hdFswXVswXSAtIDEuMCkgPiAtMS4wRS05ICYmIChtYWRNYXRbMF1bMF0gLSAxLjApIDwg
MS4wRS05ICkgJiYgKCAobWFkTWF0WzBdWzFdKSA+IC0xLjBFLTkgJiYgKG1hZE1hdFswXVsxXSkg
PCAxLjBFLTkgKSAmJgogICAgICAgICAgICAoIChtYWRNYXRbMF1bMl0pID4gLTEuMEUtOSAmJiAo
bWFkTWF0WzBdWzJdKSA8IDEuMEUtOSApICYmICggKG1hZE1hdFswXVszXSkgPiAtMS4wRS05ICYm
IChtYWRNYXRbMF1bM10pIDwgMS4wRS05ICkgJiYKICAgICAgICAgICAgKCAobWFkTWF0WzFdWzBd
KSA+IC0xLjBFLTkgJiYgKG1hZE1hdFsxXVswXSkgPCAxLjBFLTkgKSAmJiAoIChtYWRNYXRbMV1b
MV0gLSAxLjApID4gLTEuMEUtOSAmJiAobWFkTWF0WzFdWzFdIC0gMS4wKSA8IDEuMEUtOSApICYm
CiAgICAgICAgICAgICggKG1hZE1hdFsxXVsyXSkgPiAtMS4wRS05ICYmIChtYWRNYXRbMV1bMl0p
IDwgMS4wRS05ICkgJiYgKCAobWFkTWF0WzFdWzNdKSA+IC0xLjBFLTkgJiYgKG1hZE1hdFsxXVsz
XSkgPCAxLjBFLTkgKSAmJgogICAgICAgICAgICAoIChtYWRNYXRbMl1bMF0pID4gLTEuMEUtOSAm
JiAobWFkTWF0WzJdWzBdKSA8IDEuMEUtOSApICYmICggKG1hZE1hdFsyXVsxXSkgPiAtMS4wRS05
ICYmIChtYWRNYXRbMl1bMV0pIDwgMS4wRS05ICkgJiYKICAgICAgICAgICAgKCAobWFkTWF0WzJd
WzJdIC0gMS4wKSA+IC0xLjBFLTkgJiYgKG1hZE1hdFsyXVsyXSAtIDEuMCkgPCAxLjBFLTkgKSAm
JiAoIChtYWRNYXRbMl1bM10pID4gLTEuMEUtOSAmJiAobWFkTWF0WzJdWzNdKSA8IDEuMEUtOSAp
ICYmCiAgICAgICAgICAgICggKG1hZE1hdFszXVswXSkgPiAtMS4wRS05ICYmIChtYWRNYXRbM11b
MF0pIDwgMS4wRS05ICkgJiYgKCAobWFkTWF0WzNdWzFdKSA+IC0xLjBFLTkgJiYgKG1hZE1hdFsz
XVsxXSkgPCAxLjBFLTkgKSAmJgogICAgICAgICAgICAoIChtYWRNYXRbM11bMl0pID4gLTEuMEUt
OSAmJiAobWFkTWF0WzNdWzJdKSA8IDEuMEUtOSApICYmICggKG1hZE1hdFszXVszXSAtIDEuMCkg
PiAtMS4wRS05ICYmIChtYWRNYXRbM11bM10gLSAxLjApIDwgMS4wRS05ICkpOwp9CiMgNjYwICJt
YXRyaXguY3BwIgp2b2lkIE1hdDNEOjpTZXRUcmFuc2xhdGlvbihyZWdpc3RlciBkb3VibGUgZGZU
cmFuc1gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGRvdWJsZSBkZlRyYW5z
WSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgZG91YmxlIGRmVHJhbnNaKQp7
CiAgICBTZXRJZGVudGl0eSgpOwogICAgQWRkVHJhbnNsYXRpb24oZGZUcmFuc1gsIGRmVHJhbnNZ
LCBkZlRyYW5zWik7Cn0KCgoKCgoKCnZvaWQgTWF0M0Q6OkFkZFRyYW5zbGF0aW9uKHJlZ2lzdGVy
IGRvdWJsZSBkZlRyYW5zWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgZG91
YmxlIGRmVHJhbnNZLAogICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBkb3VibGUg
ZGZUcmFuc1opCnsKICAgIE1hdDNEIG9NYXQ7CgoKCgoKICAgIGRmVHJhbnNaID0gMC4wOwogICAg
b01hdC5BZGRUcmFuc2xhdGlvbkxvd0xldmVsKC1kZlRyYW5zWCwgLWRmVHJhbnNZLCAtZGZUcmFu
c1opOwoKCgoKICAgIGlmIChtYkludmVyc2UpCiAgICAgIE11bHRpcGx5SW52ZXJzZShvTWF0KTsK
CiAgICBBZGRUcmFuc2xhdGlvbkxvd0xldmVsKGRmVHJhbnNYLCBkZlRyYW5zWSwgZGZUcmFuc1op
Owp9CgoKCgoKCgp2b2lkIE1hdDNEOjpBZGRUcmFuc2xhdGlvbkxvd0xldmVsKHJlZ2lzdGVyIGRv
dWJsZSBkZlRyYW5zWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3Rl
ciBkb3VibGUgZGZUcmFuc1ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVn
aXN0ZXIgZG91YmxlIGRmVHJhbnNaKQp7CgoKCgogICAgZGZUcmFuc1ogPSAwLjA7CgogICAgbWFk
TWF0WzNdWzBdICs9IGRmVHJhbnNYOwogICAgbWFkTWF0WzNdWzFdICs9IGRmVHJhbnNZOwogICAg
bWFkTWF0WzNdWzJdICs9IGRmVHJhbnNaOwogICAgbWJJbml0aWFsaXplID0gMTsKfQojIDcyNiAi
bWF0cml4LmNwcCIKdm9pZCBNYXQzRDo6U2V0U2NhbGluZyhkb3VibGUgZGZTY2FsZVgsIGRvdWJs
ZSBkZlNjYWxlWSwKICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGZTY2FsZVosIGRvdWJs
ZSBkZk9yaWdpblgsCiAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRmT3JpZ2luWSxkb3Vi
bGUgZGZPcmlnaW5aKQp7CgoKCgogICAgZGZTY2FsZVogPSAwLjA7CiAgICBkZk9yaWdpblogPSAw
LjA7CgogICAgU2V0SWRlbnRpdHkoKTsKICAgIEFkZFNjYWxpbmcoZGZTY2FsZVgsIGRmU2NhbGVZ
LCBkZlNjYWxlWiwKICAgICAgICAgICAgICAgZGZPcmlnaW5YLCBkZk9yaWdpblksIGRmT3JpZ2lu
Wik7Cn0KCgoKCgoKCnZvaWQgTWF0M0Q6OkFkZFNjYWxpbmcoZG91YmxlIGRmU2NhbGVYLCBkb3Vi
bGUgZGZTY2FsZVksIGRvdWJsZSBkZlNjYWxlWiwKICAgICAgICAgICAgICAgICAgICAgICBkb3Vi
bGUgZGZPcmlnaW5YLCBkb3VibGUgZGZPcmlnaW5ZLCBkb3VibGUgZGZPcmlnaW5aKQp7CiAgICBN
YXQzRCBvTWF0KDApOwoKCgoKICAgIGlmIChtYkludmVyc2UpCiAgICB7CiAgICAgICAgTWF0M0Qg
b01hdEludjsKICAgICAgICBvTWF0SW52LkFkZFNjYWxpbmdMb3dMZXZlbCgoMS4wL2RmU2NhbGVY
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEuMC9kZlNjYWxlWSksICgx
LjAvZGZTY2FsZVopLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZk9yaWdp
blgsIGRmT3JpZ2luWSwgZGZPcmlnaW5aKTsKICAgICAgICBNdWx0aXBseUludmVyc2Uob01hdElu
dik7CiAgICB9CgogICAgb01hdC5BZGRTY2FsaW5nTG93TGV2ZWwoZGZTY2FsZVgsIGRmU2NhbGVZ
LCBkZlNjYWxlWiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZk9yaWdpblgsIGRmT3Jp
Z2luWSwgZGZPcmlnaW5aKTsKICAgIE11bHRpcGx5KCp0aGlzLCBvTWF0KTsKfQojIDc3NyAibWF0
cml4LmNwcCIKdm9pZCBNYXQzRDo6QWRkU2NhbGluZ0xvd0xldmVsKHJlZ2lzdGVyIGRvdWJsZSBk
ZlNjYWxlWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBkb3VibGUg
ZGZTY2FsZVksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgZG91Ymxl
IGRmU2NhbGVaLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGRvdWJs
ZSBkZk9yaWdpblgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIgZG91
YmxlIGRmT3JpZ2luWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBk
b3VibGUgZGZPcmlnaW5aKQp7CgoKCgogICAgZGZTY2FsZVogPSAwLjA7CiAgICBkZk9yaWdpblog
PSAwLjA7CgogICAgbWFkTWF0WzBdWzBdID0gZGZTY2FsZVg7CiAgICBtYWRNYXRbMF1bMV0gPSAw
LjA7CiAgICBtYWRNYXRbMF1bMl0gPSAwLjA7CiAgICBtYWRNYXRbMF1bM10gPSAwLjA7CiAgICBt
YWRNYXRbMV1bMF0gPSAwLjA7CiAgICBtYWRNYXRbMV1bMV0gPSBkZlNjYWxlWTsKICAgIG1hZE1h
dFsxXVsyXSA9IDAuMDsKICAgIG1hZE1hdFsxXVszXSA9IDAuMDsKICAgIG1hZE1hdFsyXVswXSA9
IDAuMDsKICAgIG1hZE1hdFsyXVsxXSA9IDAuMDsKICAgIG1hZE1hdFsyXVsyXSA9IGRmU2NhbGVa
OwogICAgbWFkTWF0WzJdWzNdID0gMC4wOwogICAgbWFkTWF0WzNdWzBdID0gKDEuMCAtIGRmU2Nh
bGVYKSAqIGRmT3JpZ2luWDsKICAgIG1hZE1hdFszXVsxXSA9ICgxLjAgLSBkZlNjYWxlWSkgKiBk
Zk9yaWdpblk7CiAgICBtYWRNYXRbM11bMl0gPSAoMS4wIC0gZGZTY2FsZVopICogZGZPcmlnaW5a
OwogICAgbWFkTWF0WzNdWzNdID0gMS4wOwogICAgbWJJbml0aWFsaXplID0gMTsKfQoKCgoKCgoK
dm9pZCBNYXQzRDo6U2V0U2hlYXIocmVnaXN0ZXIgZG91YmxlIGRmU2NhbGUsIHJlZ2lzdGVyIGRv
dWJsZSBkZk9yaWdpblgsCiAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGRvdWJsZSBkZk9y
aWdpblksIHJlZ2lzdGVyIGRvdWJsZSBkZk9yaWdpblopCnsKICAgIHJlZ2lzdGVyIEdEQlZlcnRl
eCBzVW5pdFZlYzsKICAgIHJlZ2lzdGVyIGRvdWJsZSBkZlNjYWxhciwgZGZWZWN0b3JMZW47CgoK
CgoKICAgIGRmT3JpZ2luWiA9IDAuMDsKCgoKCiAgICBkZlZlY3RvckxlbiA9IHNxcnQoZGZPcmln
aW5YICogZGZPcmlnaW5YICsgZGZPcmlnaW5ZICogZGZPcmlnaW5ZICsKICAgICAgICAgICAgICAg
ICAgICAgICBkZk9yaWdpblogKiBkZk9yaWdpblopOwogICAgKElNUENoZWNrRXhwcigiIUVRWkVS
TyhkZlZlY3RvckxlbikiLCAibWF0cml4LmNwcCIsIDgzMyksICghKCAoZGZWZWN0b3JMZW4pID4g
LTEuMEUtOSAmJiAoZGZWZWN0b3JMZW4pIDwgMS4wRS05ICkpID8gKDApIDogX0lNUEFzc2VydCgi
IUVRWkVSTyhkZlZlY3RvckxlbikiLCJtYXRyaXguY3BwIiw4MzMpKTsKCiAgICBpZiAoISggKGRm
VmVjdG9yTGVuKSA+IC0xLjBFLTkgJiYgKGRmVmVjdG9yTGVuKSA8IDEuMEUtOSApKQogICAgewog
ICAgICAgIHNVbml0VmVjLnggPSBkZk9yaWdpblggLyBkZlZlY3RvckxlbjsKICAgICAgICBzVW5p
dFZlYy55ID0gZGZPcmlnaW5ZIC8gZGZWZWN0b3JMZW47CiAgICAgICAgc1VuaXRWZWMueiA9IGRm
T3JpZ2luWiAvIGRmVmVjdG9yTGVuOwoKCgoKCiAgICAgICAgZGZTY2FsYXIgPSAoKDEuMCAtIGRm
U2NhbGUpICogZGZPcmlnaW5YICogc1VuaXRWZWMueCArCiAgICAgICAgICAgICAgICAgICAgKDEu
MCAtIGRmU2NhbGUpICogZGZPcmlnaW5ZICogc1VuaXRWZWMueSArCiAgICAgICAgICAgICAgICAg
ICAgKDEuMCAtIGRmU2NhbGUpICogZGZPcmlnaW5aICogc1VuaXRWZWMueik7CgoKCgogICAgICAg
IG1hZE1hdFswXVswXSA9IDEuMCAtICgxLjAgLSBkZlNjYWxlKSAqIHNVbml0VmVjLnggKiBzVW5p
dFZlYy54OwogICAgICAgIG1hZE1hdFswXVsxXSA9IC0oMS4wIC0gZGZTY2FsZSkgKiBzVW5pdFZl
Yy54ICogc1VuaXRWZWMueTsKICAgICAgICBtYWRNYXRbMF1bMl0gPSAtKDEuMCAtIGRmU2NhbGUp
ICogc1VuaXRWZWMueCAqIHNVbml0VmVjLno7CiAgICAgICAgbWFkTWF0WzBdWzNdID0gMC4wOwog
ICAgICAgIG1hZE1hdFsxXVswXSA9IG1hZE1hdFswXVsxXTsKICAgICAgICBtYWRNYXRbMV1bMV0g
PSAxLjAgLSAoMS4wIC0gZGZTY2FsZSkgKiBzVW5pdFZlYy55ICogc1VuaXRWZWMueTsKICAgICAg
ICBtYWRNYXRbMV1bMl0gPSAtKDEuMCAtIGRmU2NhbGUpICogc1VuaXRWZWMueSAqIHNVbml0VmVj
Lno7CiAgICAgICAgbWFkTWF0WzFdWzNdID0gMC4wOwogICAgICAgIG1hZE1hdFsyXVswXSA9IG1h
ZE1hdFswXVsyXTsKICAgICAgICBtYWRNYXRbMl1bMV0gPSBtYWRNYXRbMV1bMl07CiAgICAgICAg
bWFkTWF0WzJdWzJdID0gMS4wIC0gKDEuMCAtIGRmU2NhbGUpICogc1VuaXRWZWMueiAqIHNVbml0
VmVjLno7CiAgICAgICAgbWFkTWF0WzJdWzNdID0gMC4wOwogICAgICAgIG1hZE1hdFszXVswXSA9
IGRmU2NhbGFyICogc1VuaXRWZWMueDsKICAgICAgICBtYWRNYXRbM11bMV0gPSBkZlNjYWxhciAq
IHNVbml0VmVjLnk7CiAgICAgICAgbWFkTWF0WzNdWzJdID0gZGZTY2FsYXIgKiBzVW5pdFZlYy56
OwogICAgICAgIG1hZE1hdFszXVszXSA9IDEuMDsKICAgIH0KfQoKCgoKCgoKdm9pZCBNYXQzRDo6
QWRkU2hlYXIoZG91YmxlIGRmU2NhbGUsIGRvdWJsZSBkZk9yaWdpblgsCiAgICAgICAgICAgICAg
ICAgICAgIGRvdWJsZSBkZk9yaWdpblksIGRvdWJsZSBkZk9yaWdpblopCgp7CiAgICBNYXQzRCBv
TWF0KDApOwoKCgoKCiAgICBkZk9yaWdpblogPSAwLjA7CgogICAgb01hdC5TZXRTY2FsaW5nKGRm
U2NhbGUsIGRmT3JpZ2luWCwgZGZPcmlnaW5ZLCBkZk9yaWdpblopOwogICAgTXVsdGlwbHkoKnRo
aXMsIG9NYXQpOwogICAgaWYgKG1iSW52ZXJzZSkKICAgICAgTXVsdGlwbHlJbnZlcnNlKCp0aGlz
LCBvTWF0KTsKfQoKCgoKdm9pZCBNYXQzRDo6QWRkU2hlYXJMb3dMZXZlbChkb3VibGUsIGRvdWJs
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlLCBkb3VibGUpCnsKCn0KIyA5
MTQgIm1hdHJpeC5jcHAiCnZvaWQgTWF0M0Q6OlNldFJvdGF0aW9uKGRvdWJsZSBkZkFuZ2xlLCBj
b25zdCBHREJWZXJ0ZXgmIHNGaXgsCiAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkZlJv
dFgsIGRvdWJsZSBkZlJvdFksIGRvdWJsZSBkZlJvdFopCnsKICAgIFNldElkZW50aXR5KCk7CiAg
ICBBZGRSb3RhdGlvbihkZkFuZ2xlLCBzRml4LCBkZlJvdFgsIGRmUm90WSwgZGZSb3RaKTsKCn0K
IyA5MjkgIm1hdHJpeC5jcHAiCnZvaWQgTWF0M0Q6OkFkZFJvdGF0aW9uKGRvdWJsZSBkZkFuZ2xl
LCBjb25zdCBHREJWZXJ0ZXgmIHNGaXgsCiAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBk
ZlJvdFgsIGRvdWJsZSBkZlJvdFksIGRvdWJsZSBkZlJvdFopCnsKICAgIE1hdDNEIG9NYXQoMCk7
CgogICAgaWYgKG1iSW52ZXJzZSkKICAgIHsKICAgICAgICBNYXQzRCBvTWF0SW52OwogICAgICAg
IG9NYXRJbnYuQWRkUm90YXRpb25Mb3dMZXZlbCgtZGZBbmdsZSwgc0ZpeCwgZGZSb3RYLCBkZlJv
dFksIGRmUm90Wik7CgoKCiAgICAgICAgTXVsdGlwbHlJbnZlcnNlKG9NYXRJbnYpOwogICAgfQoK
ICAgIG9NYXQuQWRkUm90YXRpb25Mb3dMZXZlbChkZkFuZ2xlLCBzRml4LCBkZlJvdFgsIGRmUm90
WSwgZGZSb3RaKTsKICAgIE11bHRpcGx5KCp0aGlzLCBvTWF0KTsKfQojIDk1NSAibWF0cml4LmNw
cCIKdm9pZCBNYXQzRDo6CkFkZFJvdGF0aW9uTG93TGV2ZWwocmVnaXN0ZXIgZG91YmxlIGRmQW5n
bGUsIHJlZ2lzdGVyIGNvbnN0IEdEQlZlcnRleCYgc0ZpeCwKICAgICAgICAgICAgICAgICAgICBy
ZWdpc3RlciBkb3VibGUgZGZSb3RYLCByZWdpc3RlciBkb3VibGUgZGZSb3RZLAogICAgICAgICAg
ICAgICAgICAgIHJlZ2lzdGVyIGRvdWJsZSBkZlJvdFopCnsKICAgIEdEQlZlcnRleCBzVW5pdFZl
YzsKICAgIGRvdWJsZSBkZlpWYWx1ZSA9IDAuMDsKICAgIGRvdWJsZSBkZlZlY3RvckxlbiwgZGZT
aW4sIGRmQ29zOwoKCgoKICAgIGRmVmVjdG9yTGVuID0gc3FydChkZlJvdFggKiBkZlJvdFggKyBk
ZlJvdFkgKiBkZlJvdFkgKyBkZlJvdFogKiBkZlJvdFopOwogICAgKElNUENoZWNrRXhwcigiIUVR
WkVSTyhkZlZlY3RvckxlbikiLCAibWF0cml4LmNwcCIsIDk2OCksICghKCAoZGZWZWN0b3JMZW4p
ID4gLTEuMEUtOSAmJiAoZGZWZWN0b3JMZW4pIDwgMS4wRS05ICkpID8gKDApIDogX0lNUEFzc2Vy
dCgiIUVRWkVSTyhkZlZlY3RvckxlbikiLCJtYXRyaXguY3BwIiw5NjgpKTsKCiAgICBpZiAoISgg
KGRmVmVjdG9yTGVuKSA+IC0xLjBFLTkgJiYgKGRmVmVjdG9yTGVuKSA8IDEuMEUtOSApKQogICAg
ewogICAgICAgIGRmU2luID0gc2luKGRmQW5nbGUpOwogICAgICAgIGRmQ29zID0gY29zKGRmQW5n
bGUpOwogICAgICAgIHNVbml0VmVjLnggPSBkZlJvdFggLyBkZlZlY3RvckxlbjsKICAgICAgICBz
VW5pdFZlYy55ID0gZGZSb3RZIC8gZGZWZWN0b3JMZW47CiAgICAgICAgc1VuaXRWZWMueiA9IGRm
Um90WiAvIGRmVmVjdG9yTGVuOwoKCgoKICAgICAgICBtYWRNYXRbMF1bMF0gPSBkZkNvcyArICgx
LjAgLSBkZkNvcykgKiBzVW5pdFZlYy54ICogc1VuaXRWZWMueDsKICAgICAgICBtYWRNYXRbMF1b
MV0gPSAoMS4wIC0gZGZDb3MpICogc1VuaXRWZWMueCAqIHNVbml0VmVjLnkgKwogICAgICAgICAg
ICBkZlNpbiAqIHNVbml0VmVjLno7CiAgICAgICAgbWFkTWF0WzBdWzJdID0gKDEuMCAtIGRmQ29z
KSAqIHNVbml0VmVjLnggKiBzVW5pdFZlYy56IC0KICAgICAgICAgICAgZGZTaW4gKiBzVW5pdFZl
Yy55OwogICAgICAgIG1hZE1hdFswXVszXSA9IDAuMDsKICAgICAgICBtYWRNYXRbMV1bMF0gPSAo
MS4wIC0gZGZDb3MpICogc1VuaXRWZWMueSAqIHNVbml0VmVjLnggLQogICAgICAgICAgICBkZlNp
biAqIHNVbml0VmVjLno7CiAgICAgICAgbWFkTWF0WzFdWzFdID0gZGZDb3MgKyAoMS4wIC0gZGZD
b3MpICogc1VuaXRWZWMueSAqIHNVbml0VmVjLnk7CiAgICAgICAgbWFkTWF0WzFdWzJdID0gKDEu
MCAtIGRmQ29zKSAqIHNVbml0VmVjLnkgKiBzVW5pdFZlYy56ICsKICAgICAgICAgICAgZGZTaW4g
KiBzVW5pdFZlYy54OwogICAgICAgIG1hZE1hdFsxXVszXSA9IDAuMDsKICAgICAgICBtYWRNYXRb
Ml1bMF0gPSAoMS4wIC0gZGZDb3MpICogc1VuaXRWZWMueiAqIHNVbml0VmVjLnggKwogICAgICAg
ICAgICBkZlNpbiAqIHNVbml0VmVjLnk7CiAgICAgICAgbWFkTWF0WzJdWzFdID0gKDEuMCAtIGRm
Q29zKSAqIHNVbml0VmVjLnogKiBzVW5pdFZlYy55IC0KICAgICAgICAgICAgZGZTaW4gKiBzVW5p
dFZlYy54OwogICAgICAgIG1hZE1hdFsyXVsyXSA9IGRmQ29zICsgKDEuMCAtIGRmQ29zKSAqIHNV
bml0VmVjLnogKiBzVW5pdFZlYy56OwogICAgICAgIG1hZE1hdFsyXVszXSA9IDAuMDsKICAgICAg
ICBtYWRNYXRbM11bMF0gPSBzRml4LnggLSBzRml4LnggKiBtYWRNYXRbMF1bMF0gLQogICAgICAg
ICAgICBzRml4LnkgKiBtYWRNYXRbMV1bMF0gLSBkZlpWYWx1ZSAqIG1hZE1hdFsyXVswXTsKICAg
ICAgICBtYWRNYXRbM11bMV0gPSBzRml4LnkgLSBzRml4LnggKiBtYWRNYXRbMF1bMV0gLQogICAg
ICAgICAgICBzRml4LnkgKiBtYWRNYXRbMV1bMV0gLSBkZlpWYWx1ZSAqIG1hZE1hdFsyXVsxXTsK
ICAgICAgICBtYWRNYXRbM11bMl0gPSBkZlpWYWx1ZSAtIHNGaXgueCAqIG1hZE1hdFswXVsyXSAt
CiAgICAgICAgICAgIHNGaXgueSAqIG1hZE1hdFsxXVsyXSAtIGRmWlZhbHVlICogbWFkTWF0WzJd
WzJdOwogICAgICAgIG1hZE1hdFszXVszXSA9IDEuMDsKCiAgICAgICAgbWJJbml0aWFsaXplID0g
MTsKICAgIH0KfQoKCgoKCgoKdm9pZCBNYXQzRDo6U2V0TWlycm9yKHJlZ2lzdGVyIGNvbnN0IEdE
QlZlcnRleCYgc1BvaW50MSwKICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNvbnN0IEdE
QlZlcnRleCYgc1BvaW50MikKewogICAgZG91YmxlIGRmWlZhbHVlID0gMC4wOwogICAgcmVnaXN0
ZXIgZG91YmxlIGRmQW5nbGUsIGRmU2NhbGFyOwogICAgcmVnaXN0ZXIgR0RCVmVydGV4IHNEZWx0
YSwgc1VuaXRWZWM7CgoKCgogICAgc0RlbHRhLnggPSBzUG9pbnQyLnggLSBzUG9pbnQxLng7CiAg
ICBzRGVsdGEueSA9IHNQb2ludDIueSAtIHNQb2ludDEueTsKICAgIGlmICgoIChzRGVsdGEueCkg
PiAtMS4wRS05ICYmIChzRGVsdGEueCkgPCAxLjBFLTkgKSkKICAgIHsKICAgICAgICBpZiAoKCAo
c0RlbHRhLnkpID4gLTEuMEUtOSAmJiAoc0RlbHRhLnkpIDwgMS4wRS05ICkpCiAgICAgICAgICBT
ZXRTY2FsaW5nKC0xLjAsIC0xLjAsIDAuMCwgc1BvaW50MS54LCBzUG9pbnQxLnksIGRmWlZhbHVl
KTsKICAgICAgICBlbHNlCiAgICAgICAgICBTZXRTY2FsaW5nKC0xLjAsIDEuMCwgMC4wLCBzUG9p
bnQxLngsIHNQb2ludDEueSwgZGZaVmFsdWUpOwogICAgfQoKCgogICAgZWxzZSBpZiAoKCAoc0Rl
bHRhLnkpID4gLTEuMEUtOSAmJiAoc0RlbHRhLnkpIDwgMS4wRS05ICkpCiAgICAgIFNldFNjYWxp
bmcoMS4wLCAtMS4wLCAwLjAsIHNQb2ludDEueCwgc1BvaW50MS55LCBkZlpWYWx1ZSk7CgoKCgoK
ICAgIGRmQW5nbGUgPSBhdGFuMigtc0RlbHRhLngsIHNEZWx0YS55KTsKICAgIHNVbml0VmVjLngg
PSBjb3MoZGZBbmdsZSk7CiAgICBzVW5pdFZlYy55ID0gc2luKGRmQW5nbGUpOwogICAgc1VuaXRW
ZWMueiA9IDAuMDsKCgoKCgogICAgZGZTY2FsYXIgPSAyLjAgKiAoc1BvaW50Mi54ICogc1VuaXRW
ZWMueCArIHNQb2ludDIueSAqIHNVbml0VmVjLnkgKwogICAgICAgICAgICAgICAgICAgICAgZGZa
VmFsdWUgKiBzVW5pdFZlYy56KTsKCgoKCiAgICBtYWRNYXRbMF1bMF0gPSAxLjAgLSAyLjAgKiBz
VW5pdFZlYy54ICogc1VuaXRWZWMueDsKICAgIG1hZE1hdFswXVsxXSA9IC0yLjAgKiBzVW5pdFZl
Yy54ICogc1VuaXRWZWMueTsKICAgIG1hZE1hdFswXVsyXSA9IC0yLjAgKiBzVW5pdFZlYy54ICog
c1VuaXRWZWMuejsKICAgIG1hZE1hdFswXVszXSA9IDAuMDsKICAgIG1hZE1hdFsxXVswXSA9IG1h
ZE1hdFswXVsxXTsKICAgIG1hZE1hdFsxXVsxXSA9IDEuMCAtIDIuMCAqIHNVbml0VmVjLnkgKiBz
VW5pdFZlYy55OwogICAgbWFkTWF0WzFdWzJdID0gLTIuMCAqIHNVbml0VmVjLnkgKiBzVW5pdFZl
Yy56OwogICAgbWFkTWF0WzJdWzBdID0gbWFkTWF0WzBdWzJdOwogICAgbWFkTWF0WzJdWzFdID0g
bWFkTWF0WzFdWzJdOwogICAgbWFkTWF0WzJdWzJdID0gMS4wIC0gMi4wICogc1VuaXRWZWMueiAq
IHNVbml0VmVjLno7CiAgICBtYWRNYXRbM11bMF0gPSBkZlNjYWxhciAqIHNVbml0VmVjLng7CiAg
ICBtYWRNYXRbM11bMV0gPSBkZlNjYWxhciAqIHNVbml0VmVjLnk7CiAgICBtYWRNYXRbM11bMl0g
PSBkZlNjYWxhciAqIHNVbml0VmVjLno7Cn0KCgoKCgoKdm9pZCBNYXQzRDo6VHJhbnNwb3NlKHZv
aWQpCnsKICAgIFN3YXAobWFkTWF0WzBdWzFdLCBtYWRNYXRbMV1bMF0pOwogICAgU3dhcChtYWRN
YXRbMF1bMl0sIG1hZE1hdFsyXVswXSk7CiAgICBTd2FwKG1hZE1hdFswXVszXSwgbWFkTWF0WzNd
WzBdKTsKICAgIFN3YXAobWFkTWF0WzFdWzJdLCBtYWRNYXRbMl1bMV0pOwogICAgU3dhcChtYWRN
YXRbMV1bM10sIG1hZE1hdFszXVsxXSk7CiAgICBTd2FwKG1hZE1hdFsyXVszXSwgbWFkTWF0WzNd
WzJdKTsKfQoKCgoKCgpNYXQzRCYgTWF0M0Q6OkFkZChjb25zdCBNYXQzRCYgb01hdDEsIGNvbnN0
IE1hdDNEJiBvTWF0MikKewogICAgbWFkTWF0WzBdWzBdID0gb01hdDEubWFkTWF0WzBdWzBdICsg
b01hdDIubWFkTWF0WzBdWzBdOwogICAgbWFkTWF0WzBdWzFdID0gb01hdDEubWFkTWF0WzBdWzFd
ICsgb01hdDIubWFkTWF0WzBdWzFdOwogICAgbWFkTWF0WzBdWzJdID0gb01hdDEubWFkTWF0WzBd
WzJdICsgb01hdDIubWFkTWF0WzBdWzJdOwogICAgbWFkTWF0WzBdWzNdID0gb01hdDEubWFkTWF0
WzBdWzNdICsgb01hdDIubWFkTWF0WzBdWzNdOwogICAgbWFkTWF0WzFdWzBdID0gb01hdDEubWFk
TWF0WzFdWzBdICsgb01hdDIubWFkTWF0WzFdWzBdOwogICAgbWFkTWF0WzFdWzFdID0gb01hdDEu
bWFkTWF0WzFdWzFdICsgb01hdDIubWFkTWF0WzFdWzFdOwogICAgbWFkTWF0WzFdWzJdID0gb01h
dDEubWFkTWF0WzFdWzJdICsgb01hdDIubWFkTWF0WzFdWzJdOwogICAgbWFkTWF0WzFdWzNdID0g
b01hdDEubWFkTWF0WzFdWzNdICsgb01hdDIubWFkTWF0WzFdWzNdOwogICAgbWFkTWF0WzJdWzBd
ID0gb01hdDEubWFkTWF0WzJdWzBdICsgb01hdDIubWFkTWF0WzJdWzBdOwogICAgbWFkTWF0WzJd
WzFdID0gb01hdDEubWFkTWF0WzJdWzFdICsgb01hdDIubWFkTWF0WzJdWzFdOwogICAgbWFkTWF0
WzJdWzJdID0gb01hdDEubWFkTWF0WzJdWzJdICsgb01hdDIubWFkTWF0WzJdWzJdOwogICAgbWFk
TWF0WzJdWzNdID0gb01hdDEubWFkTWF0WzJdWzNdICsgb01hdDIubWFkTWF0WzJdWzNdOwogICAg
bWFkTWF0WzNdWzBdID0gb01hdDEubWFkTWF0WzNdWzBdICsgb01hdDIubWFkTWF0WzNdWzBdOwog
ICAgbWFkTWF0WzNdWzFdID0gb01hdDEubWFkTWF0WzNdWzFdICsgb01hdDIubWFkTWF0WzNdWzFd
OwogICAgbWFkTWF0WzNdWzJdID0gb01hdDEubWFkTWF0WzNdWzJdICsgb01hdDIubWFkTWF0WzNd
WzJdOwogICAgbWFkTWF0WzNdWzNdID0gb01hdDEubWFkTWF0WzNdWzNdICsgb01hdDIubWFkTWF0
WzNdWzNdOwoKICAgIHJldHVybiAqdGhpczsKfQoKCgoKCgpNYXQzRCYgTWF0M0Q6OkFkZChjb25z
dCBNYXQzRCYgb01hdCwgcmVnaXN0ZXIgZG91YmxlIGRWYWwpCnsKICAgIG1hZE1hdFswXVswXSA9
IG9NYXQubWFkTWF0WzBdWzBdICsgZFZhbDsKICAgIG1hZE1hdFswXVsxXSA9IG9NYXQubWFkTWF0
WzBdWzFdICsgZFZhbDsKICAgIG1hZE1hdFswXVsyXSA9IG9NYXQubWFkTWF0WzBdWzJdICsgZFZh
bDsKICAgIG1hZE1hdFswXVszXSA9IG9NYXQubWFkTWF0WzBdWzNdICsgZFZhbDsKICAgIG1hZE1h
dFsxXVswXSA9IG9NYXQubWFkTWF0WzFdWzBdICsgZFZhbDsKICAgIG1hZE1hdFsxXVsxXSA9IG9N
YXQubWFkTWF0WzFdWzFdICsgZFZhbDsKICAgIG1hZE1hdFsxXVsyXSA9IG9NYXQubWFkTWF0WzFd
WzJdICsgZFZhbDsKICAgIG1hZE1hdFsxXVszXSA9IG9NYXQubWFkTWF0WzFdWzNdICsgZFZhbDsK
ICAgIG1hZE1hdFsyXVswXSA9IG9NYXQubWFkTWF0WzJdWzBdICsgZFZhbDsKICAgIG1hZE1hdFsy
XVsxXSA9IG9NYXQubWFkTWF0WzJdWzFdICsgZFZhbDsKICAgIG1hZE1hdFsyXVsyXSA9IG9NYXQu
bWFkTWF0WzJdWzJdICsgZFZhbDsKICAgIG1hZE1hdFsyXVszXSA9IG9NYXQubWFkTWF0WzJdWzNd
ICsgZFZhbDsKICAgIG1hZE1hdFszXVswXSA9IG9NYXQubWFkTWF0WzNdWzBdICsgZFZhbDsKICAg
IG1hZE1hdFszXVsxXSA9IG9NYXQubWFkTWF0WzNdWzFdICsgZFZhbDsKICAgIG1hZE1hdFszXVsy
XSA9IG9NYXQubWFkTWF0WzNdWzJdICsgZFZhbDsKICAgIG1hZE1hdFszXVszXSA9IG9NYXQubWFk
TWF0WzNdWzNdICsgZFZhbDsKCiAgICByZXR1cm4gKnRoaXM7Cn0KCgoKCgoKCk1hdDNEIE1hdDNE
OjpvcGVyYXRvcisgKGNvbnN0IE1hdDNEJiBvTWF0KQp7CiAgICByZXR1cm4gTWF0M0QobWFkTWF0
WzBdWzBdICsgb01hdC5tYWRNYXRbMF1bMF0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzBdWzFd
ICsgb01hdC5tYWRNYXRbMF1bMV0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzBdWzJdICsgb01h
dC5tYWRNYXRbMF1bMl0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzBdWzNdICsgb01hdC5tYWRN
YXRbMF1bM10sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzFdWzBdICsgb01hdC5tYWRNYXRbMV1b
MF0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzFdWzFdICsgb01hdC5tYWRNYXRbMV1bMV0sCiAg
ICAgICAgICAgICAgICAgbWFkTWF0WzFdWzJdICsgb01hdC5tYWRNYXRbMV1bMl0sCiAgICAgICAg
ICAgICAgICAgbWFkTWF0WzFdWzNdICsgb01hdC5tYWRNYXRbMV1bM10sCiAgICAgICAgICAgICAg
ICAgbWFkTWF0WzJdWzBdICsgb01hdC5tYWRNYXRbMl1bMF0sCiAgICAgICAgICAgICAgICAgbWFk
TWF0WzJdWzFdICsgb01hdC5tYWRNYXRbMl1bMV0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzJd
WzJdICsgb01hdC5tYWRNYXRbMl1bMl0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzJdWzNdICsg
b01hdC5tYWRNYXRbMl1bM10sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzNdWzBdICsgb01hdC5t
YWRNYXRbM11bMF0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzNdWzFdICsgb01hdC5tYWRNYXRb
M11bMV0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzNdWzJdICsgb01hdC5tYWRNYXRbM11bMl0s
CiAgICAgICAgICAgICAgICAgbWFkTWF0WzNdWzNdICsgb01hdC5tYWRNYXRbM11bM10pOwp9CgoK
CgoKCgpNYXQzRCBNYXQzRDo6b3BlcmF0b3IrIChyZWdpc3RlciBkb3VibGUgZFZhbCkKewogICAg
cmV0dXJuIE1hdDNEKG1hZE1hdFswXVswXSArIGRWYWwsIG1hZE1hdFswXVsxXSArIGRWYWwsCiAg
ICAgICAgICAgICAgICAgbWFkTWF0WzBdWzJdICsgZFZhbCwgbWFkTWF0WzBdWzNdICsgZFZhbCwK
ICAgICAgICAgICAgICAgICBtYWRNYXRbMV1bMF0gKyBkVmFsLCBtYWRNYXRbMV1bMV0gKyBkVmFs
LAogICAgICAgICAgICAgICAgIG1hZE1hdFsxXVsyXSArIGRWYWwsIG1hZE1hdFsxXVszXSArIGRW
YWwsCiAgICAgICAgICAgICAgICAgbWFkTWF0WzJdWzBdICsgZFZhbCwgbWFkTWF0WzJdWzFdICsg
ZFZhbCwKICAgICAgICAgICAgICAgICBtYWRNYXRbMl1bMl0gKyBkVmFsLCBtYWRNYXRbMl1bM10g
KyBkVmFsLAogICAgICAgICAgICAgICAgIG1hZE1hdFszXVswXSArIGRWYWwsIG1hZE1hdFszXVsx
XSArIGRWYWwsCiAgICAgICAgICAgICAgICAgbWFkTWF0WzNdWzJdICsgZFZhbCwgbWFkTWF0WzNd
WzNdICsgZFZhbCk7Cn0KCgoKCgoKCk1hdDNEJiBNYXQzRDo6b3BlcmF0b3IrPSAoY29uc3QgTWF0
M0QmIG9NYXQpCnsKICAgIEFkZCgqdGhpcywgb01hdCk7CgogICAgcmV0dXJuICp0aGlzOwp9CgoK
CgoKCk1hdDNEJiBNYXQzRDo6b3BlcmF0b3IrPSAocmVnaXN0ZXIgZG91YmxlIGRWYWwpCnsKICAg
IEFkZCgqdGhpcywgZFZhbCk7CgogICAgcmV0dXJuICp0aGlzOwp9CgoKCgoKCk1hdDNEJiBNYXQz
RDo6U3Vic3RyYWN0KGNvbnN0IE1hdDNEJiBvTWF0MSwgY29uc3QgTWF0M0QmIG9NYXQyKQp7CiAg
ICBtYWRNYXRbMF1bMF0gPSBvTWF0MS5tYWRNYXRbMF1bMF0gLSBvTWF0Mi5tYWRNYXRbMF1bMF07
CiAgICBtYWRNYXRbMF1bMV0gPSBvTWF0MS5tYWRNYXRbMF1bMV0gLSBvTWF0Mi5tYWRNYXRbMF1b
MV07CiAgICBtYWRNYXRbMF1bMl0gPSBvTWF0MS5tYWRNYXRbMF1bMl0gLSBvTWF0Mi5tYWRNYXRb
MF1bMl07CiAgICBtYWRNYXRbMF1bM10gPSBvTWF0MS5tYWRNYXRbMF1bM10gLSBvTWF0Mi5tYWRN
YXRbMF1bM107CiAgICBtYWRNYXRbMV1bMF0gPSBvTWF0MS5tYWRNYXRbMV1bMF0gLSBvTWF0Mi5t
YWRNYXRbMV1bMF07CiAgICBtYWRNYXRbMV1bMV0gPSBvTWF0MS5tYWRNYXRbMV1bMV0gLSBvTWF0
Mi5tYWRNYXRbMV1bMV07CiAgICBtYWRNYXRbMV1bMl0gPSBvTWF0MS5tYWRNYXRbMV1bMl0gLSBv
TWF0Mi5tYWRNYXRbMV1bMl07CiAgICBtYWRNYXRbMV1bM10gPSBvTWF0MS5tYWRNYXRbMV1bM10g
LSBvTWF0Mi5tYWRNYXRbMV1bM107CiAgICBtYWRNYXRbMl1bMF0gPSBvTWF0MS5tYWRNYXRbMl1b
MF0gLSBvTWF0Mi5tYWRNYXRbMl1bMF07CiAgICBtYWRNYXRbMl1bMV0gPSBvTWF0MS5tYWRNYXRb
Ml1bMV0gLSBvTWF0Mi5tYWRNYXRbMl1bMV07CiAgICBtYWRNYXRbMl1bMl0gPSBvTWF0MS5tYWRN
YXRbMl1bMl0gLSBvTWF0Mi5tYWRNYXRbMl1bMl07CiAgICBtYWRNYXRbMl1bM10gPSBvTWF0MS5t
YWRNYXRbMl1bM10gLSBvTWF0Mi5tYWRNYXRbMl1bM107CiAgICBtYWRNYXRbM11bMF0gPSBvTWF0
MS5tYWRNYXRbM11bMF0gLSBvTWF0Mi5tYWRNYXRbM11bMF07CiAgICBtYWRNYXRbM11bMV0gPSBv
TWF0MS5tYWRNYXRbM11bMV0gLSBvTWF0Mi5tYWRNYXRbM11bMV07CiAgICBtYWRNYXRbM11bMl0g
PSBvTWF0MS5tYWRNYXRbM11bMl0gLSBvTWF0Mi5tYWRNYXRbM11bMl07CiAgICBtYWRNYXRbM11b
M10gPSBvTWF0MS5tYWRNYXRbM11bM10gLSBvTWF0Mi5tYWRNYXRbM11bM107CgogICAgcmV0dXJu
ICp0aGlzOwp9CgoKCgoKCk1hdDNEJiBNYXQzRDo6U3Vic3RyYWN0IChjb25zdCBNYXQzRCYgb01h
dCwgcmVnaXN0ZXIgZG91YmxlIGRWYWwpCnsKICAgIG1hZE1hdFswXVswXSA9IG9NYXQubWFkTWF0
WzBdWzBdIC0gZFZhbDsKICAgIG1hZE1hdFswXVsxXSA9IG9NYXQubWFkTWF0WzBdWzFdIC0gZFZh
bDsKICAgIG1hZE1hdFswXVsyXSA9IG9NYXQubWFkTWF0WzBdWzJdIC0gZFZhbDsKICAgIG1hZE1h
dFswXVszXSA9IG9NYXQubWFkTWF0WzBdWzNdIC0gZFZhbDsKICAgIG1hZE1hdFsxXVswXSA9IG9N
YXQubWFkTWF0WzFdWzBdIC0gZFZhbDsKICAgIG1hZE1hdFsxXVsxXSA9IG9NYXQubWFkTWF0WzFd
WzFdIC0gZFZhbDsKICAgIG1hZE1hdFsxXVsyXSA9IG9NYXQubWFkTWF0WzFdWzJdIC0gZFZhbDsK
ICAgIG1hZE1hdFsxXVszXSA9IG9NYXQubWFkTWF0WzFdWzNdIC0gZFZhbDsKICAgIG1hZE1hdFsy
XVswXSA9IG9NYXQubWFkTWF0WzJdWzBdIC0gZFZhbDsKICAgIG1hZE1hdFsyXVsxXSA9IG9NYXQu
bWFkTWF0WzJdWzFdIC0gZFZhbDsKICAgIG1hZE1hdFsyXVsyXSA9IG9NYXQubWFkTWF0WzJdWzJd
IC0gZFZhbDsKICAgIG1hZE1hdFsyXVszXSA9IG9NYXQubWFkTWF0WzJdWzNdIC0gZFZhbDsKICAg
IG1hZE1hdFszXVswXSA9IG9NYXQubWFkTWF0WzNdWzBdIC0gZFZhbDsKICAgIG1hZE1hdFszXVsx
XSA9IG9NYXQubWFkTWF0WzNdWzFdIC0gZFZhbDsKICAgIG1hZE1hdFszXVsyXSA9IG9NYXQubWFk
TWF0WzNdWzJdIC0gZFZhbDsKICAgIG1hZE1hdFszXVszXSA9IG9NYXQubWFkTWF0WzNdWzNdIC0g
ZFZhbDsKCiAgICByZXR1cm4gKnRoaXM7Cn0KCgoKCgoKCk1hdDNEIE1hdDNEOjpvcGVyYXRvci0g
KGNvbnN0IE1hdDNEJiBvTWF0KQp7CiAgICByZXR1cm4gTWF0M0QobWFkTWF0WzBdWzBdIC0gb01h
dC5tYWRNYXRbMF1bMF0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzBdWzFdIC0gb01hdC5tYWRN
YXRbMF1bMV0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzBdWzJdIC0gb01hdC5tYWRNYXRbMF1b
Ml0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzBdWzNdIC0gb01hdC5tYWRNYXRbMF1bM10sCiAg
ICAgICAgICAgICAgICAgbWFkTWF0WzFdWzBdIC0gb01hdC5tYWRNYXRbMV1bMF0sCiAgICAgICAg
ICAgICAgICAgbWFkTWF0WzFdWzFdIC0gb01hdC5tYWRNYXRbMV1bMV0sCiAgICAgICAgICAgICAg
ICAgbWFkTWF0WzFdWzJdIC0gb01hdC5tYWRNYXRbMV1bMl0sCiAgICAgICAgICAgICAgICAgbWFk
TWF0WzFdWzNdIC0gb01hdC5tYWRNYXRbMV1bM10sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzJd
WzBdIC0gb01hdC5tYWRNYXRbMl1bMF0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzJdWzFdIC0g
b01hdC5tYWRNYXRbMl1bMV0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzJdWzJdIC0gb01hdC5t
YWRNYXRbMl1bMl0sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzJdWzNdIC0gb01hdC5tYWRNYXRb
Ml1bM10sCiAgICAgICAgICAgICAgICAgbWFkTWF0WzNdWzBdIC0gb01hdC5tYWRNYXRbM11bMF0s
CiAgICAgICAgICAgICAgICAgbWFkTWF0WzNdWzFdIC0gb01hdC5tYWRNYXRbM11bMV0sCiAgICAg
ICAgICAgICAgICAgbWFkTWF0WzNdWzJdIC0gb01hdC5tYWRNYXRbM11bMl0sCiAgICAgICAgICAg
ICAgICAgbWFkTWF0WzNdWzNdIC0gb01hdC5tYWRNYXRbM11bM10pOwp9CgoKCgoKCgpNYXQzRCBN
YXQzRDo6b3BlcmF0b3ItIChyZWdpc3RlciBkb3VibGUgZFZhbCkKewogICAgcmV0dXJuIE1hdDNE
KG1hZE1hdFswXVswXSAtIGRWYWwsIG1hZE1hdFswXVsxXSAtIGRWYWwsCiAgICAgICAgICAgICAg
ICAgbWFkTWF0WzBdWzJdIC0gZFZhbCwgbWFkTWF0WzBdWzNdIC0gZFZhbCwKICAgICAgICAgICAg
ICAgICBtYWRNYXRbMV1bMF0gLSBkVmFsLCBtYWRNYXRbMV1bMV0gLSBkVmFsLAogICAgICAgICAg
ICAgICAgIG1hZE1hdFsxXVsyXSAtIGRWYWwsIG1hZE1hdFsxXVszXSAtIGRWYWwsCiAgICAgICAg
ICAgICAgICAgbWFkTWF0WzJdWzBdIC0gZFZhbCwgbWFkTWF0WzJdWzFdIC0gZFZhbCwKICAgICAg
ICAgICAgICAgICBtYWRNYXRbMl1bMl0gLSBkVmFsLCBtYWRNYXRbMl1bM10gLSBkVmFsLAogICAg
ICAgICAgICAgICAgIG1hZE1hdFszXVswXSAtIGRWYWwsIG1hZE1hdFszXVsxXSAtIGRWYWwsCiAg
ICAgICAgICAgICAgICAgbWFkTWF0WzNdWzJdIC0gZFZhbCwgbWFkTWF0WzNdWzNdIC0gZFZhbCk7
Cn0KCgoKCgoKCk1hdDNEJiBNYXQzRDo6b3BlcmF0b3ItPSAoY29uc3QgTWF0M0QmIG9NYXQpCnsK
ICAgIFN1YnN0cmFjdCgqdGhpcywgb01hdCk7CgogICAgcmV0dXJuICp0aGlzOwp9CgoKCgoKCgpN
YXQzRCYgTWF0M0Q6Om9wZXJhdG9yLT0gKHJlZ2lzdGVyIGRvdWJsZSBkVmFsKQp7CiAgICBTdWJz
dHJhY3QoKnRoaXMsIGRWYWwpOwoKICAgIHJldHVybiAqdGhpczsKfQojIDEzNDUgIm1hdHJpeC5j
cHAiCk1hdDNEJiBNYXQzRDo6TXVsdGlwbHkoY29uc3QgTWF0M0QmIG9NYXQxLCBjb25zdCBNYXQz
RCYgb01hdDIpCnsKCgoKCiAgICBpZiAodGhpcyA9PSAmb01hdDEpCiAgICB7CiAgICAgICAgTWF0
M0Qgb01hdCgqdGhpcyk7CiAgICAgICAgTXVsdGlwbHkob01hdCwgb01hdDIpOwogICAgfQogICAg
ZWxzZSBpZiAodGhpcyA9PSAmb01hdDIpCiAgICB7CiAgICAgICAgTWF0M0Qgb01hdCgqdGhpcyk7
CiAgICAgICAgTXVsdGlwbHkob01hdDEsIG9NYXQpOwogICAgfQogICAgZWxzZQogICAgewogICAg
ICAgIG1hZE1hdFswXVswXSA9IG9NYXQxLm1hZE1hdFswXVswXSAqIG9NYXQyLm1hZE1hdFswXVsw
XSArCiAgICAgICAgICAgIG9NYXQxLm1hZE1hdFswXVsxXSAqIG9NYXQyLm1hZE1hdFsxXVswXSAr
CiAgICAgICAgICAgIG9NYXQxLm1hZE1hdFswXVsyXSAqIG9NYXQyLm1hZE1hdFsyXVswXSArCiAg
ICAgICAgICAgIG9NYXQxLm1hZE1hdFswXVszXSAqIG9NYXQyLm1hZE1hdFszXVswXTsKCiAgICAg
ICAgbWFkTWF0WzBdWzFdID0gb01hdDEubWFkTWF0WzBdWzBdICogb01hdDIubWFkTWF0WzBdWzFd
ICsKICAgICAgICAgICAgb01hdDEubWFkTWF0WzBdWzFdICogb01hdDIubWFkTWF0WzFdWzFdICsK
ICAgICAgICAgICAgb01hdDEubWFkTWF0WzBdWzJdICogb01hdDIubWFkTWF0WzJdWzFdICsKICAg
ICAgICAgICAgb01hdDEubWFkTWF0WzBdWzNdICogb01hdDIubWFkTWF0WzNdWzFdOwoKICAgICAg
ICBtYWRNYXRbMF1bMl0gPSBvTWF0MS5tYWRNYXRbMF1bMF0gKiBvTWF0Mi5tYWRNYXRbMF1bMl0g
KwogICAgICAgICAgICBvTWF0MS5tYWRNYXRbMF1bMV0gKiBvTWF0Mi5tYWRNYXRbMV1bMl0gKwog
ICAgICAgICAgICBvTWF0MS5tYWRNYXRbMF1bMl0gKiBvTWF0Mi5tYWRNYXRbMl1bMl0gKwogICAg
ICAgICAgICBvTWF0MS5tYWRNYXRbMF1bM10gKiBvTWF0Mi5tYWRNYXRbM11bMl07CgogICAgICAg
IG1hZE1hdFswXVszXSA9IG9NYXQxLm1hZE1hdFswXVswXSAqIG9NYXQyLm1hZE1hdFswXVszXSAr
CiAgICAgICAgICAgIG9NYXQxLm1hZE1hdFswXVsxXSAqIG9NYXQyLm1hZE1hdFsxXVszXSArCiAg
ICAgICAgICAgIG9NYXQxLm1hZE1hdFswXVsyXSAqIG9NYXQyLm1hZE1hdFsyXVszXSArCiAgICAg
ICAgICAgIG9NYXQxLm1hZE1hdFswXVszXSAqIG9NYXQyLm1hZE1hdFszXVszXTsKCiAgICAgICAg
bWFkTWF0WzFdWzBdID0gb01hdDEubWFkTWF0WzFdWzBdICogb01hdDIubWFkTWF0WzBdWzBdICsK
ICAgICAgICAgICAgb01hdDEubWFkTWF0WzFdWzFdICogb01hdDIubWFkTWF0WzFdWzBdICsKICAg
ICAgICAgICAgb01hdDEubWFkTWF0WzFdWzJdICogb01hdDIubWFkTWF0WzJdWzBdICsKICAgICAg
ICAgICAgb01hdDEubWFkTWF0WzFdWzNdICogb01hdDIubWFkTWF0WzNdWzBdOwoKICAgICAgICBt
YWRNYXRbMV1bMV0gPSBvTWF0MS5tYWRNYXRbMV1bMF0gKiBvTWF0Mi5tYWRNYXRbMF1bMV0gKwog
ICAgICAgICAgICBvTWF0MS5tYWRNYXRbMV1bMV0gKiBvTWF0Mi5tYWRNYXRbMV1bMV0gKwogICAg
ICAgICAgICBvTWF0MS5tYWRNYXRbMV1bMl0gKiBvTWF0Mi5tYWRNYXRbMl1bMV0gKwogICAgICAg
ICAgICBvTWF0MS5tYWRNYXRbMV1bM10gKiBvTWF0Mi5tYWRNYXRbM11bMV07CgogICAgICAgIG1h
ZE1hdFsxXVsyXSA9IG9NYXQxLm1hZE1hdFsxXVswXSAqIG9NYXQyLm1hZE1hdFswXVsyXSArCiAg
ICAgICAgICAgIG9NYXQxLm1hZE1hdFsxXVsxXSAqIG9NYXQyLm1hZE1hdFsxXVsyXSArCiAgICAg
ICAgICAgIG9NYXQxLm1hZE1hdFsxXVsyXSAqIG9NYXQyLm1hZE1hdFsyXVsyXSArCiAgICAgICAg
ICAgIG9NYXQxLm1hZE1hdFsxXVszXSAqIG9NYXQyLm1hZE1hdFszXVsyXTsKCiAgICAgICAgbWFk
TWF0WzFdWzNdID0gb01hdDEubWFkTWF0WzFdWzBdICogb01hdDIubWFkTWF0WzBdWzNdICsKICAg
ICAgICAgICAgb01hdDEubWFkTWF0WzFdWzFdICogb01hdDIubWFkTWF0WzFdWzNdICsKICAgICAg
ICAgICAgb01hdDEubWFkTWF0WzFdWzJdICogb01hdDIubWFkTWF0WzJdWzNdICsKICAgICAgICAg
ICAgb01hdDEubWFkTWF0WzFdWzNdICogb01hdDIubWFkTWF0WzNdWzNdOwoKICAgICAgICBtYWRN
YXRbMl1bMF0gPSBvTWF0MS5tYWRNYXRbMl1bMF0gKiBvTWF0Mi5tYWRNYXRbMF1bMF0gKwogICAg
ICAgICAgICBvTWF0MS5tYWRNYXRbMl1bMV0gKiBvTWF0Mi5tYWRNYXRbMV1bMF0gKwogICAgICAg
ICAgICBvTWF0MS5tYWRNYXRbMl1bMl0gKiBvTWF0Mi5tYWRNYXRbMl1bMF0gKwogICAgICAgICAg
ICBvTWF0MS5tYWRNYXRbMl1bM10gKiBvTWF0Mi5tYWRNYXRbM11bMF07CgogICAgICAgIG1hZE1h
dFsyXVsxXSA9IG9NYXQxLm1hZE1hdFsyXVswXSAqIG9NYXQyLm1hZE1hdFswXVsxXSArCiAgICAg
ICAgICAgIG9NYXQxLm1hZE1hdFsyXVsxXSAqIG9NYXQyLm1hZE1hdFsxXVsxXSArCiAgICAgICAg
ICAgIG9NYXQxLm1hZE1hdFsyXVsyXSAqIG9NYXQyLm1hZE1hdFsyXVsxXSArCiAgICAgICAgICAg
IG9NYXQxLm1hZE1hdFsyXVszXSAqIG9NYXQyLm1hZE1hdFszXVsxXTsKCiAgICAgICAgbWFkTWF0
WzJdWzJdID0gb01hdDEubWFkTWF0WzJdWzBdICogb01hdDIubWFkTWF0WzBdWzJdICsKICAgICAg
ICAgICAgb01hdDEubWFkTWF0WzJdWzFdICogb01hdDIubWFkTWF0WzFdWzJdICsKICAgICAgICAg
ICAgb01hdDEubWFkTWF0WzJdWzJdICogb01hdDIubWFkTWF0WzJdWzJdICsKICAgICAgICAgICAg
b01hdDEubWFkTWF0WzJdWzNdICogb01hdDIubWFkTWF0WzNdWzJdOwoKICAgICAgICBtYWRNYXRb
Ml1bM10gPSBvTWF0MS5tYWRNYXRbMl1bMF0gKiBvTWF0Mi5tYWRNYXRbMF1bM10gKwogICAgICAg
ICAgICBvTWF0MS5tYWRNYXRbMl1bMV0gKiBvTWF0Mi5tYWRNYXRbMV1bM10gKwogICAgICAgICAg
ICBvTWF0MS5tYWRNYXRbMl1bMl0gKiBvTWF0Mi5tYWRNYXRbMl1bM10gKwogICAgICAgICAgICBv
TWF0MS5tYWRNYXRbMl1bM10gKiBvTWF0Mi5tYWRNYXRbM11bM107CgogICAgICAgIG1hZE1hdFsz
XVswXSA9IG9NYXQxLm1hZE1hdFszXVswXSAqIG9NYXQyLm1hZE1hdFswXVswXSArCiAgICAgICAg
ICAgIG9NYXQxLm1hZE1hdFszXVsxXSAqIG9NYXQyLm1hZE1hdFsxXVswXSArCiAgICAgICAgICAg
IG9NYXQxLm1hZE1hdFszXVsyXSAqIG9NYXQyLm1hZE1hdFsyXVswXSArCiAgICAgICAgICAgIG9N
YXQxLm1hZE1hdFszXVszXSAqIG9NYXQyLm1hZE1hdFszXVswXTsKCiAgICAgICAgbWFkTWF0WzNd
WzFdID0gb01hdDEubWFkTWF0WzNdWzBdICogb01hdDIubWFkTWF0WzBdWzFdICsKICAgICAgICAg
ICAgb01hdDEubWFkTWF0WzNdWzFdICogb01hdDIubWFkTWF0WzFdWzFdICsKICAgICAgICAgICAg
b01hdDEubWFkTWF0WzNdWzJdICogb01hdDIubWFkTWF0WzJdWzFdICsKICAgICAgICAgICAgb01h
dDEubWFkTWF0WzNdWzNdICogb01hdDIubWFkTWF0WzNdWzFdOwoKICAgICAgICBtYWRNYXRbM11b
Ml0gPSBvTWF0MS5tYWRNYXRbM11bMF0gKiBvTWF0Mi5tYWRNYXRbMF1bMl0gKwogICAgICAgICAg
ICBvTWF0MS5tYWRNYXRbM11bMV0gKiBvTWF0Mi5tYWRNYXRbMV1bMl0gKwogICAgICAgICAgICBv
TWF0MS5tYWRNYXRbM11bMl0gKiBvTWF0Mi5tYWRNYXRbMl1bMl0gKwogICAgICAgICAgICBvTWF0
MS5tYWRNYXRbM11bM10gKiBvTWF0Mi5tYWRNYXRbM11bMl07CgogICAgICAgIG1hZE1hdFszXVsz
XSA9IG9NYXQxLm1hZE1hdFszXVswXSAqIG9NYXQyLm1hZE1hdFswXVszXSArCiAgICAgICAgICAg
IG9NYXQxLm1hZE1hdFszXVsxXSAqIG9NYXQyLm1hZE1hdFsxXVszXSArCiAgICAgICAgICAgIG9N
YXQxLm1hZE1hdFszXVsyXSAqIG9NYXQyLm1hZE1hdFsyXVszXSArCiAgICAgICAgICAgIG9NYXQx
Lm1hZE1hdFszXVszXSAqIG9NYXQyLm1hZE1hdFszXVszXTsKICAgIH0KICAgIHJldHVybiAqdGhp
czsKfQoKCgoKCgpNYXQzRCAmTWF0M0Q6Ok11bHRpcGx5SW52ZXJzZShjb25zdCBNYXQzRCYgb01h
dDEsIGNvbnN0IE1hdDNEJiBvTWF0MikKewoKCgoKICAgIGlmKHRoaXMgPT0gJm9NYXQxKQogICAg
ewogICAgICAgIE1hdDNEIG9NYXQoKnRoaXMpOwogICAgICAgIE11bHRpcGx5SW52ZXJzZShvTWF0
LCBvTWF0Mik7CiAgICB9CiAgICBlbHNlIGlmICh0aGlzID09ICZvTWF0MikKICAgIHsKICAgICAg
ICBNYXQzRCBvTWF0KCp0aGlzKTsKICAgICAgICBNdWx0aXBseUludmVyc2Uob01hdDEsIG9NYXQp
OwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIG1hZE1hdEludmVyc2VbMF1bMF0gPQogICAg
ICAgICAgICBvTWF0MS5tYWRNYXRJbnZlcnNlWzBdWzBdICogb01hdDIubWFkTWF0SW52ZXJzZVsw
XVswXSArCiAgICAgICAgICAgIG9NYXQxLm1hZE1hdEludmVyc2VbMF1bMV0gKiBvTWF0Mi5tYWRN
YXRJbnZlcnNlWzFdWzBdICsKICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVswXVsyXSAq
IG9NYXQyLm1hZE1hdEludmVyc2VbMl1bMF0gKwogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZl
cnNlWzBdWzNdICogb01hdDIubWFkTWF0SW52ZXJzZVszXVswXTsKCiAgICAgICAgbWFkTWF0SW52
ZXJzZVswXVsxXSA9CiAgICAgICAgICAgIG9NYXQxLm1hZE1hdEludmVyc2VbMF1bMF0gKiBvTWF0
Mi5tYWRNYXRJbnZlcnNlWzBdWzFdICsKICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVsw
XVsxXSAqIG9NYXQyLm1hZE1hdEludmVyc2VbMV1bMV0gKwogICAgICAgICAgICBvTWF0MS5tYWRN
YXRJbnZlcnNlWzBdWzJdICogb01hdDIubWFkTWF0SW52ZXJzZVsyXVsxXSArCiAgICAgICAgICAg
IG9NYXQxLm1hZE1hdEludmVyc2VbMF1bM10gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzNdWzFdOwoK
ICAgICAgICBtYWRNYXRJbnZlcnNlWzBdWzJdID0KICAgICAgICAgICAgb01hdDEubWFkTWF0SW52
ZXJzZVswXVswXSAqIG9NYXQyLm1hZE1hdEludmVyc2VbMF1bMl0gKwogICAgICAgICAgICBvTWF0
MS5tYWRNYXRJbnZlcnNlWzBdWzFdICogb01hdDIubWFkTWF0SW52ZXJzZVsxXVsyXSArCiAgICAg
ICAgICAgIG9NYXQxLm1hZE1hdEludmVyc2VbMF1bMl0gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzJd
WzJdICsKICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVswXVszXSAqIG9NYXQyLm1hZE1h
dEludmVyc2VbM11bMl07CgogICAgICAgIG1hZE1hdEludmVyc2VbMF1bM10gPQogICAgICAgICAg
ICBvTWF0MS5tYWRNYXRJbnZlcnNlWzBdWzBdICogb01hdDIubWFkTWF0SW52ZXJzZVswXVszXSAr
CiAgICAgICAgICAgIG9NYXQxLm1hZE1hdEludmVyc2VbMF1bMV0gKiBvTWF0Mi5tYWRNYXRJbnZl
cnNlWzFdWzNdICsKICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVswXVsyXSAqIG9NYXQy
Lm1hZE1hdEludmVyc2VbMl1bM10gKwogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZlcnNlWzBd
WzNdICogb01hdDIubWFkTWF0SW52ZXJzZVszXVszXTsKCiAgICAgICAgbWFkTWF0SW52ZXJzZVsx
XVswXSA9CiAgICAgICAgICAgIG9NYXQxLm1hZE1hdEludmVyc2VbMV1bMF0gKiBvTWF0Mi5tYWRN
YXRJbnZlcnNlWzBdWzBdICsKICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVsxXVsxXSAq
IG9NYXQyLm1hZE1hdEludmVyc2VbMV1bMF0gKwogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZl
cnNlWzFdWzJdICogb01hdDIubWFkTWF0SW52ZXJzZVsyXVswXSArCiAgICAgICAgICAgIG9NYXQx
Lm1hZE1hdEludmVyc2VbMV1bM10gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzNdWzBdOwoKICAgICAg
ICBtYWRNYXRJbnZlcnNlWzFdWzFdID0KICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVsx
XVswXSAqIG9NYXQyLm1hZE1hdEludmVyc2VbMF1bMV0gKwogICAgICAgICAgICBvTWF0MS5tYWRN
YXRJbnZlcnNlWzFdWzFdICogb01hdDIubWFkTWF0SW52ZXJzZVsxXVsxXSArCiAgICAgICAgICAg
IG9NYXQxLm1hZE1hdEludmVyc2VbMV1bMl0gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzJdWzFdICsK
ICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVsxXVszXSAqIG9NYXQyLm1hZE1hdEludmVy
c2VbM11bMV07CgogICAgICAgIG1hZE1hdEludmVyc2VbMV1bMl0gPQogICAgICAgICAgICBvTWF0
MS5tYWRNYXRJbnZlcnNlWzFdWzBdICogb01hdDIubWFkTWF0SW52ZXJzZVswXVsyXSArCiAgICAg
ICAgICAgIG9NYXQxLm1hZE1hdEludmVyc2VbMV1bMV0gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzFd
WzJdICsKICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVsxXVsyXSAqIG9NYXQyLm1hZE1h
dEludmVyc2VbMl1bMl0gKwogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZlcnNlWzFdWzNdICog
b01hdDIubWFkTWF0SW52ZXJzZVszXVsyXTsKCiAgICAgICAgbWFkTWF0SW52ZXJzZVsxXVszXSA9
CiAgICAgICAgICAgIG9NYXQxLm1hZE1hdEludmVyc2VbMV1bMF0gKiBvTWF0Mi5tYWRNYXRJbnZl
cnNlWzBdWzNdICsKICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVsxXVsxXSAqIG9NYXQy
Lm1hZE1hdEludmVyc2VbMV1bM10gKwogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZlcnNlWzFd
WzJdICogb01hdDIubWFkTWF0SW52ZXJzZVsyXVszXSArCiAgICAgICAgICAgIG9NYXQxLm1hZE1h
dEludmVyc2VbMV1bM10gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzNdWzNdOwoKICAgICAgICBtYWRN
YXRJbnZlcnNlWzJdWzBdID0KICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVsyXVswXSAq
IG9NYXQyLm1hZE1hdEludmVyc2VbMF1bMF0gKwogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZl
cnNlWzJdWzFdICogb01hdDIubWFkTWF0SW52ZXJzZVsxXVswXSArCiAgICAgICAgICAgIG9NYXQx
Lm1hZE1hdEludmVyc2VbMl1bMl0gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzJdWzBdICsKICAgICAg
ICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVsyXVszXSAqIG9NYXQyLm1hZE1hdEludmVyc2VbM11b
MF07CgogICAgICAgIG1hZE1hdEludmVyc2VbMl1bMV0gPQogICAgICAgICAgICBvTWF0MS5tYWRN
YXRJbnZlcnNlWzJdWzBdICogb01hdDIubWFkTWF0SW52ZXJzZVswXVsxXSArCiAgICAgICAgICAg
IG9NYXQxLm1hZE1hdEludmVyc2VbMl1bMV0gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzFdWzFdICsK
ICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVsyXVsyXSAqIG9NYXQyLm1hZE1hdEludmVy
c2VbMl1bMV0gKwogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZlcnNlWzJdWzNdICogb01hdDIu
bWFkTWF0SW52ZXJzZVszXVsxXTsKCiAgICAgICAgbWFkTWF0SW52ZXJzZVsyXVsyXSA9CiAgICAg
ICAgICAgIG9NYXQxLm1hZE1hdEludmVyc2VbMl1bMF0gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzBd
WzJdICsKICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVsyXVsxXSAqIG9NYXQyLm1hZE1h
dEludmVyc2VbMV1bMl0gKwogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZlcnNlWzJdWzJdICog
b01hdDIubWFkTWF0SW52ZXJzZVsyXVsyXSArCiAgICAgICAgICAgIG9NYXQxLm1hZE1hdEludmVy
c2VbMl1bM10gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzNdWzJdOwoKICAgICAgICBtYWRNYXRJbnZl
cnNlWzJdWzNdID0KICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVsyXVswXSAqIG9NYXQy
Lm1hZE1hdEludmVyc2VbMF1bM10gKwogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZlcnNlWzJd
WzFdICogb01hdDIubWFkTWF0SW52ZXJzZVsxXVszXSArCiAgICAgICAgICAgIG9NYXQxLm1hZE1h
dEludmVyc2VbMl1bMl0gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzJdWzNdICsKICAgICAgICAgICAg
b01hdDEubWFkTWF0SW52ZXJzZVsyXVszXSAqIG9NYXQyLm1hZE1hdEludmVyc2VbM11bM107Cgog
ICAgICAgIG1hZE1hdEludmVyc2VbM11bMF0gPQogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZl
cnNlWzNdWzBdICogb01hdDIubWFkTWF0SW52ZXJzZVswXVswXSArCiAgICAgICAgICAgIG9NYXQx
Lm1hZE1hdEludmVyc2VbM11bMV0gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzFdWzBdICsKICAgICAg
ICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVszXVsyXSAqIG9NYXQyLm1hZE1hdEludmVyc2VbMl1b
MF0gKwogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZlcnNlWzNdWzNdICogb01hdDIubWFkTWF0
SW52ZXJzZVszXVswXTsKCiAgICAgICAgbWFkTWF0SW52ZXJzZVszXVsxXSA9CiAgICAgICAgICAg
IG9NYXQxLm1hZE1hdEludmVyc2VbM11bMF0gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzBdWzFdICsK
ICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVszXVsxXSAqIG9NYXQyLm1hZE1hdEludmVy
c2VbMV1bMV0gKwogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZlcnNlWzNdWzJdICogb01hdDIu
bWFkTWF0SW52ZXJzZVsyXVsxXSArCiAgICAgICAgICAgIG9NYXQxLm1hZE1hdEludmVyc2VbM11b
M10gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzNdWzFdOwoKICAgICAgICBtYWRNYXRJbnZlcnNlWzNd
WzJdID0KICAgICAgICAgICAgb01hdDEubWFkTWF0SW52ZXJzZVszXVswXSAqIG9NYXQyLm1hZE1h
dEludmVyc2VbMF1bMl0gKwogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZlcnNlWzNdWzFdICog
b01hdDIubWFkTWF0SW52ZXJzZVsxXVsyXSArCiAgICAgICAgICAgIG9NYXQxLm1hZE1hdEludmVy
c2VbM11bMl0gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzJdWzJdICsKICAgICAgICAgICAgb01hdDEu
bWFkTWF0SW52ZXJzZVszXVszXSAqIG9NYXQyLm1hZE1hdEludmVyc2VbM11bMl07CgogICAgICAg
IG1hZE1hdEludmVyc2VbM11bM10gPQogICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZlcnNlWzNd
WzBdICogb01hdDIubWFkTWF0SW52ZXJzZVswXVszXSArCiAgICAgICAgICAgIG9NYXQxLm1hZE1h
dEludmVyc2VbM11bMV0gKiBvTWF0Mi5tYWRNYXRJbnZlcnNlWzFdWzNdICsKICAgICAgICAgICAg
b01hdDEubWFkTWF0SW52ZXJzZVszXVsyXSAqIG9NYXQyLm1hZE1hdEludmVyc2VbMl1bM10gKwog
ICAgICAgICAgICBvTWF0MS5tYWRNYXRJbnZlcnNlWzNdWzNdICogb01hdDIubWFkTWF0SW52ZXJz
ZVszXVszXTsKICAgIH0KICAgIHJldHVybiAqdGhpczsKfQoKCgoKCgpNYXQzRCYgTWF0M0Q6Ok11
bHRpcGx5KGNvbnN0IE1hdDNEJiBvTWF0LCByZWdpc3RlciBkb3VibGUgZFZhbCkKewogICAgbWFk
TWF0WzBdWzBdID0gb01hdC5tYWRNYXRbMF1bMF0gKiBkVmFsOwogICAgbWFkTWF0WzBdWzFdID0g
b01hdC5tYWRNYXRbMF1bMV0gKiBkVmFsOwogICAgbWFkTWF0WzBdWzJdID0gb01hdC5tYWRNYXRb
MF1bMl0gKiBkVmFsOwogICAgbWFkTWF0WzBdWzNdID0gb01hdC5tYWRNYXRbMF1bM10gKiBkVmFs
OwogICAgbWFkTWF0WzFdWzBdID0gb01hdC5tYWRNYXRbMV1bMF0gKiBkVmFsOwogICAgbWFkTWF0
WzFdWzFdID0gb01hdC5tYWRNYXRbMV1bMV0gKiBkVmFsOwogICAgbWFkTWF0WzFdWzJdID0gb01h
dC5tYWRNYXRbMV1bMl0gKiBkVmFsOwogICAgbWFkTWF0WzFdWzNdID0gb01hdC5tYWRNYXRbMV1b
M10gKiBkVmFsOwogICAgbWFkTWF0WzJdWzBdID0gb01hdC5tYWRNYXRbMl1bMF0gKiBkVmFsOwog
ICAgbWFkTWF0WzJdWzFdID0gb01hdC5tYWRNYXRbMl1bMV0gKiBkVmFsOwogICAgbWFkTWF0WzJd
WzJdID0gb01hdC5tYWRNYXRbMl1bMl0gKiBkVmFsOwogICAgbWFkTWF0WzJdWzNdID0gb01hdC5t
YWRNYXRbMl1bM10gKiBkVmFsOwogICAgbWFkTWF0WzNdWzBdID0gb01hdC5tYWRNYXRbM11bMF0g
KiBkVmFsOwogICAgbWFkTWF0WzNdWzFdID0gb01hdC5tYWRNYXRbM11bMV0gKiBkVmFsOwogICAg
bWFkTWF0WzNdWzJdID0gb01hdC5tYWRNYXRbM11bMl0gKiBkVmFsOwogICAgbWFkTWF0WzNdWzNd
ID0gb01hdC5tYWRNYXRbM11bM10gKiBkVmFsOwoKICAgIHJldHVybiAqdGhpczsKfQoKCgoKCgp2
b2lkIE1hdDNEOjpNdWx0aXBseUludmVyc2UoY29uc3QgTWF0M0QgJm9NYXQxKQp7CiAgICBkb3Vi
bGUgYWRmTWF0WzRdWzRdOwoKICAgIGFkZk1hdFswXVswXSA9CiAgICAgICAgb01hdDEubWFkTWF0
WzBdWzBdICogbWFkTWF0SW52ZXJzZVswXVswXSArCiAgICAgICAgb01hdDEubWFkTWF0WzBdWzFd
ICogbWFkTWF0SW52ZXJzZVsxXVswXSArCiAgICAgICAgb01hdDEubWFkTWF0WzBdWzJdICogbWFk
TWF0SW52ZXJzZVsyXVswXSArCiAgICAgICAgb01hdDEubWFkTWF0WzBdWzNdICogbWFkTWF0SW52
ZXJzZVszXVswXTsKCiAgICBhZGZNYXRbMF1bMV0gPQogICAgICAgIG9NYXQxLm1hZE1hdFswXVsw
XSAqIG1hZE1hdEludmVyc2VbMF1bMV0gKwogICAgICAgIG9NYXQxLm1hZE1hdFswXVsxXSAqIG1h
ZE1hdEludmVyc2VbMV1bMV0gKwogICAgICAgIG9NYXQxLm1hZE1hdFswXVsyXSAqIG1hZE1hdElu
dmVyc2VbMl1bMV0gKwogICAgICAgIG9NYXQxLm1hZE1hdFswXVszXSAqIG1hZE1hdEludmVyc2Vb
M11bMV07CgogICAgYWRmTWF0WzBdWzJdID0KICAgICAgICBvTWF0MS5tYWRNYXRbMF1bMF0gKiBt
YWRNYXRJbnZlcnNlWzBdWzJdICsKICAgICAgICBvTWF0MS5tYWRNYXRbMF1bMV0gKiBtYWRNYXRJ
bnZlcnNlWzFdWzJdICsKICAgICAgICBvTWF0MS5tYWRNYXRbMF1bMl0gKiBtYWRNYXRJbnZlcnNl
WzJdWzJdICsKICAgICAgICBvTWF0MS5tYWRNYXRbMF1bM10gKiBtYWRNYXRJbnZlcnNlWzNdWzJd
OwoKICAgIGFkZk1hdFswXVszXSA9CiAgICAgICAgb01hdDEubWFkTWF0WzBdWzBdICogbWFkTWF0
SW52ZXJzZVswXVszXSArCiAgICAgICAgb01hdDEubWFkTWF0WzBdWzFdICogbWFkTWF0SW52ZXJz
ZVsxXVszXSArCiAgICAgICAgb01hdDEubWFkTWF0WzBdWzJdICogbWFkTWF0SW52ZXJzZVsyXVsz
XSArCiAgICAgICAgb01hdDEubWFkTWF0WzBdWzNdICogbWFkTWF0SW52ZXJzZVszXVszXTsKCiAg
ICBhZGZNYXRbMV1bMF0gPQogICAgICAgIG9NYXQxLm1hZE1hdFsxXVswXSAqIG1hZE1hdEludmVy
c2VbMF1bMF0gKwogICAgICAgIG9NYXQxLm1hZE1hdFsxXVsxXSAqIG1hZE1hdEludmVyc2VbMV1b
MF0gKwogICAgICAgIG9NYXQxLm1hZE1hdFsxXVsyXSAqIG1hZE1hdEludmVyc2VbMl1bMF0gKwog
ICAgICAgIG9NYXQxLm1hZE1hdFsxXVszXSAqIG1hZE1hdEludmVyc2VbM11bMF07CgogICAgYWRm
TWF0WzFdWzFdID0KICAgICAgICBvTWF0MS5tYWRNYXRbMV1bMF0gKiBtYWRNYXRJbnZlcnNlWzBd
WzFdICsKICAgICAgICBvTWF0MS5tYWRNYXRbMV1bMV0gKiBtYWRNYXRJbnZlcnNlWzFdWzFdICsK
ICAgICAgICBvTWF0MS5tYWRNYXRbMV1bMl0gKiBtYWRNYXRJbnZlcnNlWzJdWzFdICsKICAgICAg
ICBvTWF0MS5tYWRNYXRbMV1bM10gKiBtYWRNYXRJbnZlcnNlWzNdWzFdOwoKICAgIGFkZk1hdFsx
XVsyXSA9CiAgICAgICAgb01hdDEubWFkTWF0WzFdWzBdICogbWFkTWF0SW52ZXJzZVswXVsyXSAr
CiAgICAgICAgb01hdDEubWFkTWF0WzFdWzFdICogbWFkTWF0SW52ZXJzZVsxXVsyXSArCiAgICAg
ICAgb01hdDEubWFkTWF0WzFdWzJdICogbWFkTWF0SW52ZXJzZVsyXVsyXSArCiAgICAgICAgb01h
dDEubWFkTWF0WzFdWzNdICogbWFkTWF0SW52ZXJzZVszXVsyXTsKCiAgICBhZGZNYXRbMV1bM10g
PQogICAgICAgIG9NYXQxLm1hZE1hdFsxXVswXSAqIG1hZE1hdEludmVyc2VbMF1bM10gKwogICAg
ICAgIG9NYXQxLm1hZE1hdFsxXVsxXSAqIG1hZE1hdEludmVyc2VbMV1bM10gKwogICAgICAgIG9N
YXQxLm1hZE1hdFsxXVsyXSAqIG1hZE1hdEludmVyc2VbMl1bM10gKwogICAgICAgIG9NYXQxLm1h
ZE1hdFsxXVszXSAqIG1hZE1hdEludmVyc2VbM11bM107CgogICAgYWRmTWF0WzJdWzBdID0KICAg
ICAgICBvTWF0MS5tYWRNYXRbMl1bMF0gKiBtYWRNYXRJbnZlcnNlWzBdWzBdICsKICAgICAgICBv
TWF0MS5tYWRNYXRbMl1bMV0gKiBtYWRNYXRJbnZlcnNlWzFdWzBdICsKICAgICAgICBvTWF0MS5t
YWRNYXRbMl1bMl0gKiBtYWRNYXRJbnZlcnNlWzJdWzBdICsKICAgICAgICBvTWF0MS5tYWRNYXRb
Ml1bM10gKiBtYWRNYXRJbnZlcnNlWzNdWzBdOwoKICAgIGFkZk1hdFsyXVsxXSA9CiAgICAgICAg
b01hdDEubWFkTWF0WzJdWzBdICogbWFkTWF0SW52ZXJzZVswXVsxXSArCiAgICAgICAgb01hdDEu
bWFkTWF0WzJdWzFdICogbWFkTWF0SW52ZXJzZVsxXVsxXSArCiAgICAgICAgb01hdDEubWFkTWF0
WzJdWzJdICogbWFkTWF0SW52ZXJzZVsyXVsxXSArCiAgICAgICAgb01hdDEubWFkTWF0WzJdWzNd
ICogbWFkTWF0SW52ZXJzZVszXVsxXTsKCiAgICBhZGZNYXRbMl1bMl0gPQogICAgICAgIG9NYXQx
Lm1hZE1hdFsyXVswXSAqIG1hZE1hdEludmVyc2VbMF1bMl0gKwogICAgICAgIG9NYXQxLm1hZE1h
dFsyXVsxXSAqIG1hZE1hdEludmVyc2VbMV1bMl0gKwogICAgICAgIG9NYXQxLm1hZE1hdFsyXVsy
XSAqIG1hZE1hdEludmVyc2VbMl1bMl0gKwogICAgICAgIG9NYXQxLm1hZE1hdFsyXVszXSAqIG1h
ZE1hdEludmVyc2VbM11bMl07CgogICAgYWRmTWF0WzJdWzNdID0KICAgICAgICBvTWF0MS5tYWRN
YXRbMl1bMF0gKiBtYWRNYXRJbnZlcnNlWzBdWzNdICsKICAgICAgICBvTWF0MS5tYWRNYXRbMl1b
MV0gKiBtYWRNYXRJbnZlcnNlWzFdWzNdICsKICAgICAgICBvTWF0MS5tYWRNYXRbMl1bMl0gKiBt
YWRNYXRJbnZlcnNlWzJdWzNdICsKICAgICAgICBvTWF0MS5tYWRNYXRbMl1bM10gKiBtYWRNYXRJ
bnZlcnNlWzNdWzNdOwoKICAgIGFkZk1hdFszXVswXSA9CiAgICAgICAgb01hdDEubWFkTWF0WzNd
WzBdICogbWFkTWF0SW52ZXJzZVswXVswXSArCiAgICAgICAgb01hdDEubWFkTWF0WzNdWzFdICog
bWFkTWF0SW52ZXJzZVsxXVswXSArCiAgICAgICAgb01hdDEubWFkTWF0WzNdWzJdICogbWFkTWF0
SW52ZXJzZVsyXVswXSArCiAgICAgICAgb01hdDEubWFkTWF0WzNdWzNdICogbWFkTWF0SW52ZXJz
ZVszXVswXTsKCiAgICBhZGZNYXRbM11bMV0gPQogICAgICAgIG9NYXQxLm1hZE1hdFszXVswXSAq
IG1hZE1hdEludmVyc2VbMF1bMV0gKwogICAgICAgIG9NYXQxLm1hZE1hdFszXVsxXSAqIG1hZE1h
dEludmVyc2VbMV1bMV0gKwogICAgICAgIG9NYXQxLm1hZE1hdFszXVsyXSAqIG1hZE1hdEludmVy
c2VbMl1bMV0gKwogICAgICAgIG9NYXQxLm1hZE1hdFszXVszXSAqIG1hZE1hdEludmVyc2VbM11b
MV07CgogICAgYWRmTWF0WzNdWzJdID0KICAgICAgICBvTWF0MS5tYWRNYXRbM11bMF0gKiBtYWRN
YXRJbnZlcnNlWzBdWzJdICsKICAgICAgICBvTWF0MS5tYWRNYXRbM11bMV0gKiBtYWRNYXRJbnZl
cnNlWzFdWzJdICsKICAgICAgICBvTWF0MS5tYWRNYXRbM11bMl0gKiBtYWRNYXRJbnZlcnNlWzJd
WzJdICsKICAgICAgICBvTWF0MS5tYWRNYXRbM11bM10gKiBtYWRNYXRJbnZlcnNlWzNdWzJdOwoK
ICAgIGFkZk1hdFszXVszXSA9CiAgICAgICAgb01hdDEubWFkTWF0WzNdWzBdICogbWFkTWF0SW52
ZXJzZVswXVszXSArCiAgICAgICAgb01hdDEubWFkTWF0WzNdWzFdICogbWFkTWF0SW52ZXJzZVsx
XVszXSArCiAgICAgICAgb01hdDEubWFkTWF0WzNdWzJdICogbWFkTWF0SW52ZXJzZVsyXVszXSAr
CiAgICAgICAgb01hdDEubWFkTWF0WzNdWzNdICogbWFkTWF0SW52ZXJzZVszXVszXTsKCiAgICBt
YWRNYXRJbnZlcnNlWzBdWzBdID0gYWRmTWF0WzBdWzBdOwogICAgbWFkTWF0SW52ZXJzZVswXVsx
XSA9IGFkZk1hdFswXVsxXTsKICAgIG1hZE1hdEludmVyc2VbMF1bMl0gPSBhZGZNYXRbMF1bMl07
CiAgICBtYWRNYXRJbnZlcnNlWzBdWzNdID0gYWRmTWF0WzBdWzNdOwoKICAgIG1hZE1hdEludmVy
c2VbMV1bMF0gPSBhZGZNYXRbMV1bMF07CiAgICBtYWRNYXRJbnZlcnNlWzFdWzFdID0gYWRmTWF0
WzFdWzFdOwogICAgbWFkTWF0SW52ZXJzZVsxXVsyXSA9IGFkZk1hdFsxXVsyXTsKICAgIG1hZE1h
dEludmVyc2VbMV1bM10gPSBhZGZNYXRbMV1bM107CgogICAgbWFkTWF0SW52ZXJzZVsyXVswXSA9
IGFkZk1hdFsyXVswXTsKICAgIG1hZE1hdEludmVyc2VbMl1bMV0gPSBhZGZNYXRbMl1bMV07CiAg
ICBtYWRNYXRJbnZlcnNlWzJdWzJdID0gYWRmTWF0WzJdWzJdOwogICAgbWFkTWF0SW52ZXJzZVsy
XVszXSA9IGFkZk1hdFsyXVszXTsKCiAgICBtYWRNYXRJbnZlcnNlWzNdWzBdID0gYWRmTWF0WzNd
WzBdOwogICAgbWFkTWF0SW52ZXJzZVszXVsxXSA9IGFkZk1hdFszXVsxXTsKICAgIG1hZE1hdElu
dmVyc2VbM11bMl0gPSBhZGZNYXRbM11bMl07CiAgICBtYWRNYXRJbnZlcnNlWzNdWzNdID0gYWRm
TWF0WzNdWzNdOwp9CgoKCgoKCgpNYXQzRCYgTWF0M0Q6Om9wZXJhdG9yKj0gKHJlZ2lzdGVyIGRv
dWJsZSBkVmFsKQp7CiAgICBNdWx0aXBseSgqdGhpcywgZFZhbCk7CgogICAgcmV0dXJuICp0aGlz
Owp9CgoKCgoKCgpNYXQzRCYgTWF0M0Q6Om9wZXJhdG9yKj0gKGNvbnN0IE1hdDNEICZvTWF0KQp7
CiAgICBNdWx0aXBseSgqdGhpcywgb01hdCk7CgogICAgcmV0dXJuICp0aGlzOwp9CgoKCgoKCgpN
YXQzRCBNYXQzRDo6b3BlcmF0b3IqIChyZWdpc3RlciBkb3VibGUgZFZhbCkKewogICAgcmV0dXJu
IE1hdDNEKG1hZE1hdFswXVswXSAqIGRWYWwsIG1hZE1hdFswXVsxXSAqIGRWYWwsCiAgICAgICAg
ICAgICAgICAgbWFkTWF0WzBdWzJdICogZFZhbCwgbWFkTWF0WzBdWzNdICogZFZhbCwKICAgICAg
ICAgICAgICAgICBtYWRNYXRbMV1bMF0gKiBkVmFsLCBtYWRNYXRbMV1bMV0gKiBkVmFsLAogICAg
ICAgICAgICAgICAgIG1hZE1hdFsxXVsyXSAqIGRWYWwsIG1hZE1hdFsxXVszXSAqIGRWYWwsCiAg
ICAgICAgICAgICAgICAgbWFkTWF0WzJdWzBdICogZFZhbCwgbWFkTWF0WzJdWzFdICogZFZhbCwK
ICAgICAgICAgICAgICAgICBtYWRNYXRbMl1bMl0gKiBkVmFsLCBtYWRNYXRbMl1bM10gKiBkVmFs
LAogICAgICAgICAgICAgICAgIG1hZE1hdFszXVswXSAqIGRWYWwsIG1hZE1hdFszXVsxXSAqIGRW
YWwsCiAgICAgICAgICAgICAgICAgbWFkTWF0WzNdWzJdICogZFZhbCwgbWFkTWF0WzNdWzNdICog
ZFZhbCk7Cn0KCgoKCgoKTWF0M0Qgb3BlcmF0b3IqIChjb25zdCBNYXQzRCYgb01hdDEsIGNvbnN0
IE1hdDNEJiBvTWF0MikKewogICAgcmV0dXJuIE1hdDNEKG9NYXQxLm1hZE1hdFswXVswXSAqIG9N
YXQyLm1hZE1hdFswXVswXSArCiAgICAgICAgICAgICAgICAgb01hdDEubWFkTWF0WzBdWzFdICog
b01hdDIubWFkTWF0WzFdWzBdICsKICAgICAgICAgICAgICAgICBvTWF0MS5tYWRNYXRbMF1bMl0g
KiBvTWF0Mi5tYWRNYXRbMl1bMF0gKwogICAgICAgICAgICAgICAgIG9NYXQxLm1hZE1hdFswXVsz
XSAqIG9NYXQyLm1hZE1hdFszXVswXSwKCiAgICAgICAgICAgICAgICAgb01hdDEubWFkTWF0WzBd
WzBdICogb01hdDIubWFkTWF0WzBdWzFdICsKICAgICAgICAgICAgICAgICBvTWF0MS5tYWRNYXRb
MF1bMV0gKiBvTWF0Mi5tYWRNYXRbMV1bMV0gKwogICAgICAgICAgICAgICAgIG9NYXQxLm1hZE1h
dFswXVsyXSAqIG9NYXQyLm1hZE1hdFsyXVsxXSArCiAgICAgICAgICAgICAgICAgb01hdDEubWFk
TWF0WzBdWzNdICogb01hdDIubWFkTWF0WzNdWzFdLAoKICAgICAgICAgICAgICAgICBvTWF0MS5t
YWRNYXRbMF1bMF0gKiBvTWF0Mi5tYWRNYXRbMF1bMl0gKwogICAgICAgICAgICAgICAgIG9NYXQx
Lm1hZE1hdFswXVsxXSAqIG9NYXQyLm1hZE1hdFsxXVsyXSArCiAgICAgICAgICAgICAgICAgb01h
dDEubWFkTWF0WzBdWzJdICogb01hdDIubWFkTWF0WzJdWzJdICsKICAgICAgICAgICAgICAgICBv
TWF0MS5tYWRNYXRbMF1bM10gKiBvTWF0Mi5tYWRNYXRbM11bMl0sCgogICAgICAgICAgICAgICAg
IG9NYXQxLm1hZE1hdFswXVswXSAqIG9NYXQyLm1hZE1hdFswXVszXSArCiAgICAgICAgICAgICAg
ICAgb01hdDEubWFkTWF0WzBdWzFdICogb01hdDIubWFkTWF0WzFdWzNdICsKICAgICAgICAgICAg
ICAgICBvTWF0MS5tYWRNYXRbMF1bMl0gKiBvTWF0Mi5tYWRNYXRbMl1bM10gKwogICAgICAgICAg
ICAgICAgIG9NYXQxLm1hZE1hdFswXVszXSAqIG9NYXQyLm1hZE1hdFszXVszXSwKCiAgICAgICAg
ICAgICAgICAgb01hdDEubWFkTWF0WzFdWzBdICogb01hdDIubWFkTWF0WzBdWzBdICsKICAgICAg
ICAgICAgICAgICBvTWF0MS5tYWRNYXRbMV1bMV0gKiBvTWF0Mi5tYWRNYXRbMV1bMF0gKwogICAg
ICAgICAgICAgICAgIG9NYXQxLm1hZE1hdFsxXVsyXSAqIG9NYXQyLm1hZE1hdFsyXVswXSArCiAg
ICAgICAgICAgICAgICAgb01hdDEubWFkTWF0WzFdWzNdICogb01hdDIubWFkTWF0WzNdWzBdLAoK
ICAgICAgICAgICAgICAgICBvTWF0MS5tYWRNYXRbMV1bMF0gKiBvTWF0Mi5tYWRNYXRbMF1bMV0g
KwogICAgICAgICAgICAgICAgIG9NYXQxLm1hZE1hdFsxXVsxXSAqIG9NYXQyLm1hZE1hdFsxXVsx
XSArCiAgICAgICAgICAgICAgICAgb01hdDEubWFkTWF0WzFdWzJdICogb01hdDIubWFkTWF0WzJd
WzFdICsKICAgICAgICAgICAgICAgICBvTWF0MS5tYWRNYXRbMV1bM10gKiBvTWF0Mi5tYWRNYXRb
M11bMV0sCgogICAgICAgICAgICAgICAgIG9NYXQxLm1hZE1hdFsxXVswXSAqIG9NYXQyLm1hZE1h
dFswXVsyXSArCiAgICAgICAgICAgICAgICAgb01hdDEubWFkTWF0WzFdWzFdICogb01hdDIubWFk
TWF0WzFdWzJdICsKICAgICAgICAgICAgICAgICBvTWF0MS5tYWRNYXRbMV1bMl0gKiBvTWF0Mi5t
YWRNYXRbMl1bMl0gKwogICAgICAgICAgICAgICAgIG9NYXQxLm1hZE1hdFsxXVszXSAqIG9NYXQy
Lm1hZE1hdFszXVsyXSwKCiAgICAgICAgICAgICAgICAgb01hdDEubWFkTWF0WzFdWzBdICogb01h
dDIubWFkTWF0WzBdWzNdICsKICAgICAgICAgICAgICAgICBvTWF0MS5tYWRNYXRbMV1bMV0gKiBv
TWF0Mi5tYWRNYXRbMV1bM10gKwogICAgICAgICAgICAgICAgIG9NYXQxLm1hZE1hdFsxXVsyXSAq
IG9NYXQyLm1hZE1hdFsyXVszXSArCiAgICAgICAgICAgICAgICAgb01hdDEubWFkTWF0WzFdWzNd
ICogb01hdDIubWFkTWF0WzNdWzNdLAoKICAgICAgICAgICAgICAgICBvTWF0MS5tYWRNYXRbMl1b
MF0gKiBvTWF0Mi5tYWRNYXRbMF1bMF0gKwogICAgICAgICAgICAgICAgIG9NYXQxLm1hZE1hdFsy
XVsxXSAqIG9NYXQyLm1hZE1hdFsxXVswXSArCiAgICAgICAgICAgICAgICAgb01hdDEubWFkTWF0
WzJdWzJdICogb01hdDIubWFkTWF0WzJdWzBdICsKICAgICAgICAgICAgICAgICBvTWF0MS5tYWRN
YXRbMl1bM10gKiBvTWF0Mi5tYWRNYXRbM11bMF0sCgogICAgICAgICAgICAgICAgIG9NYXQxLm1h
ZE1hdFsyXVswXSAqIG9NYXQyLm1hZE1hdFswXVsxXSArCiAgICAgICAgICAgICAgICAgb01hdDEu
bWFkTWF0WzJdWzFdICogb01hdDIubWFkTWF0WzFdWzFdICsKICAgICAgICAgICAgICAgICBvTWF0
MS5tYWRNYXRbMl1bMl0gKiBvTWF0Mi5tYWRNYXRbMl1bMV0gKwogICAgICAgICAgICAgICAgIG9N
YXQxLm1hZE1hdFsyXVszXSAqIG9NYXQyLm1hZE1hdFszXVsxXSwKCiAgICAgICAgICAgICAgICAg
b01hdDEubWFkTWF0WzJdWzBdICogb01hdDIubWFkTWF0WzBdWzJdICsKICAgICAgICAgICAgICAg
ICBvTWF0MS5tYWRNYXRbMl1bMV0gKiBvTWF0Mi5tYWRNYXRbMV1bMl0gKwogICAgICAgICAgICAg
ICAgIG9NYXQxLm1hZE1hdFsyXVsyXSAqIG9NYXQyLm1hZE1hdFsyXVsyXSArCiAgICAgICAgICAg
ICAgICAgb01hdDEubWFkTWF0WzJdWzNdICogb01hdDIubWFkTWF0WzNdWzJdLAoKICAgICAgICAg
ICAgICAgICBvTWF0MS5tYWRNYXRbMl1bMF0gKiBvTWF0Mi5tYWRNYXRbMF1bM10gKwogICAgICAg
ICAgICAgICAgIG9NYXQxLm1hZE1hdFsyXVsxXSAqIG9NYXQyLm1hZE1hdFsxXVszXSArCiAgICAg
ICAgICAgICAgICAgb01hdDEubWFkTWF0WzJdWzJdICogb01hdDIubWFkTWF0WzJdWzNdICsKICAg
ICAgICAgICAgICAgICBvTWF0MS5tYWRNYXRbMl1bM10gKiBvTWF0Mi5tYWRNYXRbM11bM10sCgog
ICAgICAgICAgICAgICAgIG9NYXQxLm1hZE1hdFszXVswXSAqIG9NYXQyLm1hZE1hdFswXVswXSAr
CiAgICAgICAgICAgICAgICAgb01hdDEubWFkTWF0WzNdWzFdICogb01hdDIubWFkTWF0WzFdWzBd
ICsKICAgICAgICAgICAgICAgICBvTWF0MS5tYWRNYXRbM11bMl0gKiBvTWF0Mi5tYWRNYXRbMl1b
MF0gKwogICAgICAgICAgICAgICAgIG9NYXQxLm1hZE1hdFszXVszXSAqIG9NYXQyLm1hZE1hdFsz
XVswXSwKCiAgICAgICAgICAgICAgICAgb01hdDEubWFkTWF0WzNdWzBdICogb01hdDIubWFkTWF0
WzBdWzFdICsKICAgICAgICAgICAgICAgICBvTWF0MS5tYWRNYXRbM11bMV0gKiBvTWF0Mi5tYWRN
YXRbMV1bMV0gKwogICAgICAgICAgICAgICAgIG9NYXQxLm1hZE1hdFszXVsyXSAqIG9NYXQyLm1h
ZE1hdFsyXVsxXSArCiAgICAgICAgICAgICAgICAgb01hdDEubWFkTWF0WzNdWzNdICogb01hdDIu
bWFkTWF0WzNdWzFdLAoKICAgICAgICAgICAgICAgICBvTWF0MS5tYWRNYXRbM11bMF0gKiBvTWF0
Mi5tYWRNYXRbMF1bMl0gKwogICAgICAgICAgICAgICAgIG9NYXQxLm1hZE1hdFszXVsxXSAqIG9N
YXQyLm1hZE1hdFsxXVsyXSArCiAgICAgICAgICAgICAgICAgb01hdDEubWFkTWF0WzNdWzJdICog
b01hdDIubWFkTWF0WzJdWzJdICsKICAgICAgICAgICAgICAgICBvTWF0MS5tYWRNYXRbM11bM10g
KiBvTWF0Mi5tYWRNYXRbM11bMl0sCgogICAgICAgICAgICAgICAgIG9NYXQxLm1hZE1hdFszXVsw
XSAqIG9NYXQyLm1hZE1hdFswXVszXSArCiAgICAgICAgICAgICAgICAgb01hdDEubWFkTWF0WzNd
WzFdICogb01hdDIubWFkTWF0WzFdWzNdICsKICAgICAgICAgICAgICAgICBvTWF0MS5tYWRNYXRb
M11bMl0gKiBvTWF0Mi5tYWRNYXRbMl1bM10gKwogICAgICAgICAgICAgICAgIG9NYXQxLm1hZE1h
dFszXVszXSAqIG9NYXQyLm1hZE1hdFszXVszXSk7Cn0KCgoKCgoKR0RCVmVydGV4IG9wZXJhdG9y
KiAocmVnaXN0ZXIgR0RCVmVydGV4JiBzVmVjSW4sIGNvbnN0IE1hdDNEJiBvTWF0KQp7CgogICAg
R0RCVmVydGV4IHNWZWNPdXQ7CiAgICBzVmVjSW4ueiA9IDAuMDsKCgoKCgogICAgc1ZlY091dC54
ID0gb01hdC5tYWRNYXRbMF1bMF0qc1ZlY0luLnggKwogICAgICAgIG9NYXQubWFkTWF0WzFdWzBd
KnNWZWNJbi55ICsgb01hdC5tYWRNYXRbM11bMF07CiAgICBzVmVjT3V0LnkgPSBvTWF0Lm1hZE1h
dFswXVsxXSpzVmVjSW4ueCArCiAgICAgICAgb01hdC5tYWRNYXRbMV1bMV0qc1ZlY0luLnkgKyBv
TWF0Lm1hZE1hdFszXVsxXTsKICAgIHNWZWNPdXQueiA9IHNWZWNJbi56OwojIDE4ODIgIm1hdHJp
eC5jcHAiCiAgICByZXR1cm4gc1ZlY091dDsKfQoKCgoKCgpHREJWZXJ0ZXggTWF0M0Q6Ok11bHRp
cGx5KHJlZ2lzdGVyIEdEQlZlcnRleCAmc1ZlYykKewogICAgY29uc3QgZG91YmxlIGRXID0gMS4w
OwogICAgR0RCVmVydGV4IHNWZWNPdXQ7CiAgICBzVmVjLnogPSAwLjA7CgogICAgc1ZlY091dC54
ID0gbWFkTWF0SW52ZXJzZVswXVswXSpzVmVjLnggKwogICAgICAgIG1hZE1hdEludmVyc2VbMV1b
MF0qc1ZlYy55ICsKICAgICAgICBtYWRNYXRJbnZlcnNlWzJdWzBdKnNWZWMueiArCiAgICAgICAg
bWFkTWF0SW52ZXJzZVszXVswXSpkVzsKCiAgICBzVmVjT3V0LnkgPSBtYWRNYXRJbnZlcnNlWzBd
WzFdKnNWZWMueCArCiAgICAgICAgbWFkTWF0SW52ZXJzZVsxXVsxXSpzVmVjLnkgKwogICAgICAg
IG1hZE1hdEludmVyc2VbMl1bMV0qc1ZlYy56ICsKICAgICAgICBtYWRNYXRJbnZlcnNlWzNdWzFd
KmRXOwoKICAgIHNWZWNPdXQueiA9IG1hZE1hdEludmVyc2VbMF1bMl0qc1ZlYy54ICsKICAgICAg
ICBtYWRNYXRJbnZlcnNlWzFdWzJdKnNWZWMueSArCiAgICAgICAgbWFkTWF0SW52ZXJzZVsyXVsy
XSpzVmVjLnogKwogICAgICAgIG1hZE1hdEludmVyc2VbM11bMl0qZFc7CgogICAgcmV0dXJuIHNW
ZWNPdXQ7Cn0KCgoKCgoKTWF0M0QmIE1hdDNEOjpvcGVyYXRvcisrICh2b2lkKQp7CiAgICArK21h
ZE1hdFswXVswXTsgKyttYWRNYXRbMF1bMV07ICsrbWFkTWF0WzBdWzJdOyArK21hZE1hdFswXVsz
XTsKICAgICsrbWFkTWF0WzFdWzBdOyArK21hZE1hdFsxXVsxXTsgKyttYWRNYXRbMV1bMl07ICsr
bWFkTWF0WzFdWzNdOwogICAgKyttYWRNYXRbMl1bMF07ICsrbWFkTWF0WzJdWzFdOyArK21hZE1h
dFsyXVsyXTsgKyttYWRNYXRbMl1bM107CiAgICArK21hZE1hdFszXVswXTsgKyttYWRNYXRbM11b
MV07ICsrbWFkTWF0WzNdWzJdOyArK21hZE1hdFszXVszXTsKCiAgICByZXR1cm4gKnRoaXM7Cn0K
CgoKCgoKTWF0M0QmIE1hdDNEOjpvcGVyYXRvci0tICgpCnsKICAgLS1tYWRNYXRbMF1bMF07IC0t
bWFkTWF0WzBdWzFdOyAtLW1hZE1hdFswXVsyXTsgLS1tYWRNYXRbMF1bM107CiAgIC0tbWFkTWF0
WzFdWzBdOyAtLW1hZE1hdFsxXVsxXTsgLS1tYWRNYXRbMV1bMl07IC0tbWFkTWF0WzFdWzNdOwog
ICAtLW1hZE1hdFsyXVswXTsgLS1tYWRNYXRbMl1bMV07IC0tbWFkTWF0WzJdWzJdOyAtLW1hZE1h
dFsyXVszXTsKICAgLS1tYWRNYXRbM11bMF07IC0tbWFkTWF0WzNdWzFdOyAtLW1hZE1hdFszXVsy
XTsgLS1tYWRNYXRbM11bM107CgogICByZXR1cm4gKnRoaXM7Cn0KCgoKCgoKTWF0M0QmIE1hdDNE
OjpvcGVyYXRvcj0gKGNvbnN0IE1hdDNEJiBvTWF0KQp7CiAgICBtYWRNYXRbMF1bMF0gPSBvTWF0
Lm1hZE1hdFswXVswXTsgbWFkTWF0WzBdWzFdID0gb01hdC5tYWRNYXRbMF1bMV07CiAgICBtYWRN
YXRbMF1bMl0gPSBvTWF0Lm1hZE1hdFswXVsyXTsgbWFkTWF0WzBdWzNdID0gb01hdC5tYWRNYXRb
MF1bM107CiAgICBtYWRNYXRbMV1bMF0gPSBvTWF0Lm1hZE1hdFsxXVswXTsgbWFkTWF0WzFdWzFd
ID0gb01hdC5tYWRNYXRbMV1bMV07CiAgICBtYWRNYXRbMV1bMl0gPSBvTWF0Lm1hZE1hdFsxXVsy
XTsgbWFkTWF0WzFdWzNdID0gb01hdC5tYWRNYXRbMV1bM107CiAgICBtYWRNYXRbMl1bMF0gPSBv
TWF0Lm1hZE1hdFsyXVswXTsgbWFkTWF0WzJdWzFdID0gb01hdC5tYWRNYXRbMl1bMV07CiAgICBt
YWRNYXRbMl1bMl0gPSBvTWF0Lm1hZE1hdFsyXVsyXTsgbWFkTWF0WzJdWzNdID0gb01hdC5tYWRN
YXRbMl1bM107CiAgICBtYWRNYXRbM11bMF0gPSBvTWF0Lm1hZE1hdFszXVswXTsgbWFkTWF0WzNd
WzFdID0gb01hdC5tYWRNYXRbM11bMV07CiAgICBtYWRNYXRbM11bMl0gPSBvTWF0Lm1hZE1hdFsz
XVsyXTsgbWFkTWF0WzNdWzNdID0gb01hdC5tYWRNYXRbM11bM107CgogICAgbWFkTWF0SW52ZXJz
ZVswXVswXSA9IG9NYXQubWFkTWF0SW52ZXJzZVswXVswXTsKICAgIG1hZE1hdEludmVyc2VbMF1b
MV0gPSBvTWF0Lm1hZE1hdEludmVyc2VbMF1bMV07CiAgICBtYWRNYXRJbnZlcnNlWzBdWzJdID0g
b01hdC5tYWRNYXRJbnZlcnNlWzBdWzJdOwogICAgbWFkTWF0SW52ZXJzZVswXVszXSA9IG9NYXQu
bWFkTWF0SW52ZXJzZVswXVszXTsKICAgIG1hZE1hdEludmVyc2VbMV1bMF0gPSBvTWF0Lm1hZE1h
dEludmVyc2VbMV1bMF07CiAgICBtYWRNYXRJbnZlcnNlWzFdWzFdID0gb01hdC5tYWRNYXRJbnZl
cnNlWzFdWzFdOwogICAgbWFkTWF0SW52ZXJzZVsxXVsyXSA9IG9NYXQubWFkTWF0SW52ZXJzZVsx
XVsyXTsKICAgIG1hZE1hdEludmVyc2VbMV1bM10gPSBvTWF0Lm1hZE1hdEludmVyc2VbMV1bM107
CiAgICBtYWRNYXRJbnZlcnNlWzJdWzBdID0gb01hdC5tYWRNYXRJbnZlcnNlWzJdWzBdOwogICAg
bWFkTWF0SW52ZXJzZVsyXVsxXSA9IG9NYXQubWFkTWF0SW52ZXJzZVsyXVsxXTsKICAgIG1hZE1h
dEludmVyc2VbMl1bMl0gPSBvTWF0Lm1hZE1hdEludmVyc2VbMl1bMl07CiAgICBtYWRNYXRJbnZl
cnNlWzJdWzNdID0gb01hdC5tYWRNYXRJbnZlcnNlWzJdWzNdOwogICAgbWFkTWF0SW52ZXJzZVsz
XVswXSA9IG9NYXQubWFkTWF0SW52ZXJzZVszXVswXTsKICAgIG1hZE1hdEludmVyc2VbM11bMV0g
PSBvTWF0Lm1hZE1hdEludmVyc2VbM11bMV07CiAgICBtYWRNYXRJbnZlcnNlWzNdWzJdID0gb01h
dC5tYWRNYXRJbnZlcnNlWzNdWzJdOwogICAgbWFkTWF0SW52ZXJzZVszXVszXSA9IG9NYXQubWFk
TWF0SW52ZXJzZVszXVszXTsKCiAgICByZXR1cm4gKnRoaXM7Cn0KCgoKCgoKVEJvb2wgTWF0M0Q6
Om9wZXJhdG9yPT0gKGNvbnN0IE1hdDNEJiBvTWF0KQp7CiAgICBpZiAoJm9NYXQgPT0gdGhpcykK
ICAgICAgcmV0dXJuIDE7CgogICAgcmV0dXJuICggKCAobWFkTWF0WzBdWzBdIC0gb01hdC5tYWRN
YXRbMF1bMF0pID4gLTEuMEUtOSAmJiAobWFkTWF0WzBdWzBdIC0gb01hdC5tYWRNYXRbMF1bMF0p
IDwgMS4wRS05ICkgJiYKICAgICAgICAgICAgICggKG1hZE1hdFswXVsxXSAtIG9NYXQubWFkTWF0
WzBdWzFdKSA+IC0xLjBFLTkgJiYgKG1hZE1hdFswXVsxXSAtIG9NYXQubWFkTWF0WzBdWzFdKSA8
IDEuMEUtOSApJiYKICAgICAgICAgICAgICggKG1hZE1hdFswXVsyXSAtIG9NYXQubWFkTWF0WzBd
WzJdKSA+IC0xLjBFLTkgJiYgKG1hZE1hdFswXVsyXSAtIG9NYXQubWFkTWF0WzBdWzJdKSA8IDEu
MEUtOSApJiYKICAgICAgICAgICAgICggKG1hZE1hdFswXVszXSAtIG9NYXQubWFkTWF0WzBdWzNd
KSA+IC0xLjBFLTkgJiYgKG1hZE1hdFswXVszXSAtIG9NYXQubWFkTWF0WzBdWzNdKSA8IDEuMEUt
OSApJiYKICAgICAgICAgICAgICggKG1hZE1hdFsxXVswXSAtIG9NYXQubWFkTWF0WzFdWzBdKSA+
IC0xLjBFLTkgJiYgKG1hZE1hdFsxXVswXSAtIG9NYXQubWFkTWF0WzFdWzBdKSA8IDEuMEUtOSAp
JiYKICAgICAgICAgICAgICggKG1hZE1hdFsxXVsxXSAtIG9NYXQubWFkTWF0WzFdWzFdKSA+IC0x
LjBFLTkgJiYgKG1hZE1hdFsxXVsxXSAtIG9NYXQubWFkTWF0WzFdWzFdKSA8IDEuMEUtOSApJiYK
ICAgICAgICAgICAgICggKG1hZE1hdFsxXVsyXSAtIG9NYXQubWFkTWF0WzFdWzJdKSA+IC0xLjBF
LTkgJiYgKG1hZE1hdFsxXVsyXSAtIG9NYXQubWFkTWF0WzFdWzJdKSA8IDEuMEUtOSApJiYKICAg
ICAgICAgICAgICggKG1hZE1hdFsxXVszXSAtIG9NYXQubWFkTWF0WzFdWzNdKSA+IC0xLjBFLTkg
JiYgKG1hZE1hdFsxXVszXSAtIG9NYXQubWFkTWF0WzFdWzNdKSA8IDEuMEUtOSApJiYKICAgICAg
ICAgICAgICggKG1hZE1hdFsyXVswXSAtIG9NYXQubWFkTWF0WzJdWzBdKSA+IC0xLjBFLTkgJiYg
KG1hZE1hdFsyXVswXSAtIG9NYXQubWFkTWF0WzJdWzBdKSA8IDEuMEUtOSApJiYKICAgICAgICAg
ICAgICggKG1hZE1hdFsyXVsxXSAtIG9NYXQubWFkTWF0WzJdWzFdKSA+IC0xLjBFLTkgJiYgKG1h
ZE1hdFsyXVsxXSAtIG9NYXQubWFkTWF0WzJdWzFdKSA8IDEuMEUtOSApJiYKICAgICAgICAgICAg
ICggKG1hZE1hdFsyXVsyXSAtIG9NYXQubWFkTWF0WzJdWzJdKSA+IC0xLjBFLTkgJiYgKG1hZE1h
dFsyXVsyXSAtIG9NYXQubWFkTWF0WzJdWzJdKSA8IDEuMEUtOSApJiYKICAgICAgICAgICAgICgg
KG1hZE1hdFsyXVszXSAtIG9NYXQubWFkTWF0WzJdWzNdKSA+IC0xLjBFLTkgJiYgKG1hZE1hdFsy
XVszXSAtIG9NYXQubWFkTWF0WzJdWzNdKSA8IDEuMEUtOSApJiYKICAgICAgICAgICAgICggKG1h
ZE1hdFszXVswXSAtIG9NYXQubWFkTWF0WzNdWzBdKSA+IC0xLjBFLTkgJiYgKG1hZE1hdFszXVsw
XSAtIG9NYXQubWFkTWF0WzNdWzBdKSA8IDEuMEUtOSApJiYKICAgICAgICAgICAgICggKG1hZE1h
dFszXVsxXSAtIG9NYXQubWFkTWF0WzNdWzFdKSA+IC0xLjBFLTkgJiYgKG1hZE1hdFszXVsxXSAt
IG9NYXQubWFkTWF0WzNdWzFdKSA8IDEuMEUtOSApJiYKICAgICAgICAgICAgICggKG1hZE1hdFsz
XVsyXSAtIG9NYXQubWFkTWF0WzNdWzJdKSA+IC0xLjBFLTkgJiYgKG1hZE1hdFszXVsyXSAtIG9N
YXQubWFkTWF0WzNdWzJdKSA8IDEuMEUtOSApJiYKICAgICAgICAgICAgICggKG1hZE1hdFszXVsz
XSAtIG9NYXQubWFkTWF0WzNdWzNdKSA+IC0xLjBFLTkgJiYgKG1hZE1hdFszXVszXSAtIG9NYXQu
bWFkTWF0WzNdWzNdKSA8IDEuMEUtOSApICk7Cn0K


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

end of thread, other threads:[~2002-12-11 22:16 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-12-11 14:14 debug/5514: 3.0.3 debug problem - undefined reference to LC5 bangerth
  -- strict thread matches above, loose matches on Subject: below --
2002-12-11 14:16 Philip Cheng
2002-12-11 14:09 bangerth
2002-01-28  7:46 cheng

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).