public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c/5020: ICE when building 8139too.c from linux-2.4.16
@ 2001-12-05 20:03 rodrigc
  0 siblings, 0 replies; 3+ messages in thread
From: rodrigc @ 2001-12-05 20:03 UTC (permalink / raw)
  To: critel, gcc-bugs, gcc-gnats, gcc-prs, nobody

Synopsis: ICE when building 8139too.c from linux-2.4.16

State-Changed-From-To: open->closed
State-Changed-By: rodrigc
State-Changed-When: Wed Dec  5 20:03:52 2001
State-Changed-Why:
    
    Duplicate of PR 4529 which is fixed:
    
    http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=4529&database=gcc

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


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

* Re: c/5020: ICE when building 8139too.c from linux-2.4.16
@ 2001-12-05 20:06 rodrigc
  0 siblings, 0 replies; 3+ messages in thread
From: rodrigc @ 2001-12-05 20:06 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

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

From: rodrigc@gcc.gnu.org
To: critel@mailvernichter.hadiko.de, gcc-bugs@gcc.gnu.org,
  gcc-gnats@gcc.gnu.org, gcc-prs@gcc.gnu.org, nobody@gcc.gnu.org
Cc:  
Subject: Re: c/5020: ICE when building 8139too.c from linux-2.4.16
Date: 6 Dec 2001 04:03:52 -0000

 Synopsis: ICE when building 8139too.c from linux-2.4.16
 
 State-Changed-From-To: open->closed
 State-Changed-By: rodrigc
 State-Changed-When: Wed Dec  5 20:03:52 2001
 State-Changed-Why:
     
     Duplicate of PR 4529 which is fixed:
     
     http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=4529&database=gcc
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&pr=5020&database=gcc


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

* c/5020: ICE when building 8139too.c from linux-2.4.16
@ 2001-12-05 10:06 critel
  0 siblings, 0 replies; 3+ messages in thread
From: critel @ 2001-12-05 10:06 UTC (permalink / raw)
  To: gcc-gnats


>Number:         5020
>Category:       c
>Synopsis:       ICE when building 8139too.c from linux-2.4.16
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Wed Dec 05 10:06:01 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     critel@mailvernichter.hadiko.de
>Release:        gcc-3.0.2
>Organization:
>Environment:

>Description:
The commandline was 'make modules', but I think the following 
Output will help you more ;-)


 /usr/lib/gcc-lib/i386-linux/3.0.2/cc1 -fpreprocessed 8139too.i -quiet -dumpbase 8139too.c -mpreferred-stack-boundary=2 -march=athlon -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -version -fomit-frame-pointer -fno-strict-aliasing -fno-common -o 8139too.s
GNU CPP version 3.0.2 (Debian) (cpplib) (i386 Linux/ELF)
GNU C version 3.0.2 (Debian) (i386-linux)
        compiled by GNU C version 3.0.2 (Debian).
8139too.c: In function `netdev_ethtool_ioctl':
8139too.c:2294: Unrecognizable insn:
(insn/i 618 1061 1058 (parallel[ 
            (set (reg:SI 6 ebp)
                (asm_operands:SI ("addl %3,%1 ; sbbl %0,%0; cmpl %1,%4; sbbl $0,%0") ("=&r") 0[ 
                        (reg/v:SI 1 edx [165])
                        (mem:SI (plus:SI (reg/f:SI 6 ebp)
                                (const_int -352 [0xfffffea0])) 0)
                        (mem/s:SI (plus:SI (reg:SI 0 eax [173])
                                (const_int 12 [0xc])) 0)
                    ] 
                    [ 
                        (asm_input:SI ("1"))
                        (asm_input:SI ("g"))
                        (asm_input:SI ("g"))
                    ]  ("/usr/src/linux/include/asm/uaccess.h") 558))
            (set (reg/v:SI 1 edx [165])
                (asm_operands:SI ("addl %3,%1 ; sbbl %0,%0; cmpl %1,%4; sbbl $0,%0") ("=r") 1[ 
                        (reg/v:SI 1 edx [165])
                        (mem:SI (plus:SI (reg/f:SI 6 ebp)
                                (const_int -352 [0xfffffea0])) 0)
                        (mem/s:SI (plus:SI (reg:SI 0 eax [173])
                                (const_int 12 [0xc])) 0)
                    ] 
                    [ 
                        (asm_input:SI ("1"))
                        (asm_input:SI ("g"))
                        (asm_input:SI ("g"))
                    ]  ("/usr/src/linux/include/asm/uaccess.h") 558))
            (clobber (reg:QI 19 dirflag))
            (clobber (reg:QI 18 fpsr))
            (clobber (reg:QI 17 flags))
        ] ) -1 (insn_list 604 (insn_list 611 (nil)))
    (nil))
8139too.c:2294: Internal compiler error in reload_cse_simplify_operands, at reload1.c:8364
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.



>How-To-Repeat:

>Fix:

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

IyAxICI4MTM5dG9vLmMiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJz
aW9ucy5oIiAxCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHNldHZlci5o
IiAxCiMgNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzLzUzYzcwMC52ZXIiIDEKIyA1
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvODM5MC52ZXIiIDEKIyA2ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvREFDOTYwLnZlciIgMQojIDcgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvbW9kdWxlcy9EaXZhc19tb2QudmVyIiAxCiMgOCAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9tb2R1bGVzL2FjOTcudmVyIiAxCiMgOSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1
bGVzL2FjOTdfY29kZWMudmVyIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
bW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxl
cy9hY2kudmVyIiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lv
bnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9hY3BpX2tz
eW1zLnZlciIgMQojIDEyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25z
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvYWQxODQ4LnZl
ciIgMQojIDEzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvYWRiLnZlciIgMQojIDE0
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvYWZfYXgyNS52ZXIiIDEKIyAxNSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2FmX2lweC52ZXIiIDEKIyAxNiAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9tb2R1bGVzL2FmX25ldGxpbmsudmVyIiAxCiMgMTcgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvbW9kdWxlcy9hZl9zcHgudmVyIiAxCiMgMTggIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvbW9kdWxlcy9hZnMudmVyIiAxCiMgMTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9k
dWxlcy9hZ3BnYXJ0X2JlLnZlciIgMQojIDIwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVs
ZXMvYWlyby52ZXIiIDEKIyAyMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJz
aW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2Fpcm9u
ZXQ0NTAwX2NhcmQudmVyIiAxCiMgMjIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9k
dmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9h
aXJvbmV0NDUwMF9jb3JlLnZlciIgMQojIDIzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVs
ZXMvYW1kNzkzMC52ZXIiIDEKIyAyNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2
ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2Fy
Y25ldC52ZXIiIDEKIyAyNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9u
cy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2FybGFuLnZl
ciIgMQojIDI2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvYXRhcmFpZC52ZXIiIDEK
IyAyNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2F0bV9taXNjLnZlciIgMQojIDI4
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvYXR5ZmJfYmFzZS52ZXIiIDEKIyAyOSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2F1ZGlvLnZlciIgMQojIDMwICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvYXVkaW9fc3ltcy52ZXIiIDEKIyAzMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9tb2R1bGVzL2F1dG9faXJxLnZlciIgMQojIDMyICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L21vZHVsZXMvYjEudmVyIiAxCiMgMzMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
bW9kdWxlcy9iMWRtYS52ZXIiIDEKIyAzNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9t
b2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVz
L2IxcGNtY2lhLnZlciIgMQojIDM1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZl
cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvYmFz
ZS52ZXIiIDEKIyAzNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2JiY19pMmMudmVy
IiAxCiMgMzcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9ibGtwZy52ZXIiIDEKIyAz
OCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2JtX29zbC52ZXIiIDEKIyAzOSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2Jvb3RsZHIudmVyIiAxCiMgNDAgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvbW9kdWxlcy9icGNrNi52ZXIiIDEKIyA0MSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9tb2R1bGVzL2J0dHYtaWYudmVyIiAxCiMgNDIgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvbW9kdWxlcy9idWZmZXIudmVyIiAxCiMgNDMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9k
dWxlcy9idXNtb3VzZS52ZXIiIDEKIyA0NCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9t
b2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVz
L2NhcGlmcy52ZXIiIDEKIyA0NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJz
aW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2NhcGl1
dGlsLnZlciIgMQojIDQ2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25z
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvY2Ryb20udmVy
IiAxCiMgNDcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9jaGVjay52ZXIiIDEKIyA0
OCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2NoaXByZWcudmVyIiAxCiMgNDkgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9jbWRsaW5lLnZlciIgMQojIDUwICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvY29tMjAwMjAudmVyIiAxCiMgNTEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvbW9kdWxlcy9jb21tb24udmVyIiAxCiMgNTIgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvbW9kdWxlcy9jb214LnZlciIgMQojIDUzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21v
ZHVsZXMvY29uZmlnLnZlciIgMQojIDU0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21v
ZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMv
Y29uc29sZS52ZXIiIDEKIyA1NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJz
aW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2NvbnRl
eHQudmVyIiAxCiMgNTYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9jcGlhLnZlciIg
MQojIDU3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvY3B1aWQudmVyIiAxCiMgNTgg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9jcy52ZXIiIDEKIyA1OSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9tb2R1bGVzL2N5YmVyMjAwMGZiLnZlciIgMQojIDYwICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L21vZHVsZXMvY3ljeF9kcnYudmVyIiAxCiMgNjEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvbW9kdWxlcy9kYnJpLnZlciIgMQojIDYyICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L21vZHVsZXMvZGNhY2hlLnZlciIgMQojIDYzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVs
ZXMvZGRwLnZlciIgMQojIDY0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNp
b25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZGVjX2Fu
ZF9sb2NrLnZlciIgMQojIDY1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNp
b25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZG1hc291
bmRfY29yZS52ZXIiIDEKIyA2NiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJz
aW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2RzLnZl
ciIgMQojIDY3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZWljb25fbW9kLnZlciIg
MQojIDY4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZXhlY19kb21haW4udmVyIiAx
CiMgNjkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9mYXMyMTYudmVyIiAxCiMgNzAg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9mYXRmc19zeW1zLnZlciIgMQojIDcxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZmJjbWFwLnZlciIgMQojIDcyICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZmJjb24tYWZiLnZlciIgMQojIDczICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L21vZHVsZXMvZmJjb24tY2ZiMTYudmVyIiAxCiMgNzQgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvbW9kdWxlcy9mYmNvbi1jZmIyLnZlciIgMQojIDc1ICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L21vZHVsZXMvZmJjb24tY2ZiMjQudmVyIiAxCiMgNzYgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvbW9kdWxlcy9mYmNvbi1jZmIzMi52ZXIiIDEKIyA3NyAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9tb2R1bGVzL2ZiY29uLWNmYjQudmVyIiAxCiMgNzggIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvbW9kdWxlcy9mYmNvbi1jZmI4LnZlciIgMQojIDc5ICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L21vZHVsZXMvZmJjb24taGdhLnZlciIgMQojIDgwICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L21vZHVsZXMvZmJjb24taWxibS52ZXIiIDEKIyA4MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9t
b2R1bGVzL2ZiY29uLWlwbGFuMnAyLnZlciIgMQojIDgyICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L21vZHVsZXMvZmJjb24taXBsYW4ycDQudmVyIiAxCiMgODMgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvbW9kdWxlcy9mYmNvbi1pcGxhbjJwOC52ZXIiIDEKIyA4NCAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9tb2R1bGVzL2ZiY29uLW1hYy52ZXIiIDEKIyA4NSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9tb2R1bGVzL2ZiY29uLW1mYi52ZXIiIDEKIyA4NiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9t
b2R1bGVzL2ZiY29uLXZnYS1wbGFuZXMudmVyIiAxCiMgODcgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvbW9kdWxlcy9mYmNvbi12Z2EudmVyIiAxCiMgODggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
bW9kdWxlcy9mYmNvbi52ZXIiIDEKIyA4OSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9t
b2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVz
L2ZibWVtLnZlciIgMQojIDkwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNp
b25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZmJtb24u
dmVyIiAxCiMgOTEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9mY19zeW1zLnZlciIg
MQojIDkyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZmlsZW1hcC52ZXIiIDEKIyA5
MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2ZpbGVzeXN0ZW1zLnZlciIgMQojIDk0
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZnNtLnZlciIgMQojIDk1ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZnRhcGVfc3ltcy52ZXIiIDEKIyA5NiAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9tb2R1bGVzL2dhbWVwb3J0LnZlciIgMQojIDk3ICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L21vZHVsZXMvZ2VuX3Byb2JlLnZlciIgMQojIDk4ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L21vZHVsZXMvZ2VuZXJpY19zZXJpYWwudmVyIiAxCiMgOTkgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvbW9kdWxlcy9nZW5oZC52ZXIiIDEKIyAxMDAgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvbW9kdWxlcy9oZGxjLnZlciIgMQojIDEwMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1
bGVzL2hkbGNkcnYudmVyIiAxCiMgMTAyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21v
ZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMv
aGVybWVzLnZlciIgMQojIDEwMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJz
aW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2kyYy1h
bGdvLWJpdC52ZXIiIDEKIyAxMDQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVy
c2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9pMmMt
YWxnby1pdGUudmVyIiAxCiMgMTA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZl
cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaTJj
LWFsZ28tcGNmLnZlciIgMQojIDEwNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2
ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2ky
Yy1jb3JlLnZlciIgMQojIDEwNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJz
aW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2kyYy1v
bGQudmVyIiAxCiMgMTA4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25z
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaTJjLXByb2Mu
dmVyIiAxCiMgMTA5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaTJvX2Jsb2NrLnZl
ciIgMQojIDExMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2kyb19jb25maWcudmVy
IiAxCiMgMTExICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaTJvX2NvcmUudmVyIiAx
CiMgMTEyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaTJvX2xhbi52ZXIiIDEKIyAx
MTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9pMm9fcGNpLnZlciIgMQojIDExNCAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2kyb19wcm9jLnZlciIgMQojIDExNSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2kyb19zY3NpLnZlciIgMQojIDExNiAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2kzODZfa3N5bXMudmVyIiAxCiMgMTE3ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaWJtLnZlciIgMQojIDExOCAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9tb2R1bGVzL2lkZS1mZWF0dXJlcy52ZXIiIDEKIyAxMTkgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvbW9kdWxlcy9pZGUudmVyIiAxCiMgMTIwICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L21vZHVsZXMvaWR0NzcxMDUudmVyIiAxCiMgMTIxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21v
ZHVsZXMvaWVlZTEzOTRfY29yZS52ZXIiIDEKIyAxMjIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
bW9kdWxlcy9pbmZsYXRlX3N5bXMudmVyIiAxCiMgMTIzICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L21vZHVsZXMvaW5pdC52ZXIiIDEKIyAxMjQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
bW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxl
cy9pbnB1dC52ZXIiIDEKIyAxMjUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVy
c2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9pcDZf
dGFibGVzLnZlciIgMQojIDEyNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJz
aW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2lwX2Nv
bm50cmFja19mdHAudmVyIiAxCiMgMTI3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21v
ZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMv
aXBfY29ubnRyYWNrX3N0YW5kYWxvbmUudmVyIiAxCiMgMTI4ICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L21vZHVsZXMvaXBfZndfY29tcGF0LnZlciIgMQojIDEyOSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9tb2R1bGVzL2lwX2dyZS52ZXIiIDEKIyAxMzAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
bW9kdWxlcy9pcF9uYXRfc3RhbmRhbG9uZS52ZXIiIDEKIyAxMzEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvbW9kdWxlcy9pcF90YWJsZXMudmVyIiAxCiMgMTMyICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L21vZHVsZXMvaXBjb21tb24udmVyIiAxCiMgMTMzICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L21vZHVsZXMvaXBpcC52ZXIiIDEKIyAxMzQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
bW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxl
cy9pcnBvcnQudmVyIiAxCiMgMTM1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZl
cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaXJz
eW1zLnZlciIgMQojIDEzNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9u
cy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2lzYXBucC52
ZXIiIDEKIyAxMzcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9pc2RuX2NvbW1vbi52
ZXIiIDEKIyAxMzggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9pc2Vuc2UudmVyIiAx
CiMgMTM5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaXhqLnZlciIgMQojIDE0MCAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2pvdXJuYWwudmVyIiAxCiMgMTQxICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMva2NhcGkudmVyIiAxCiMgMTQyICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L21vZHVsZXMva2V5Ym9hcmQudmVyIiAxCiMgMTQzICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L21vZHVsZXMva21vZC52ZXIiIDEKIyAxNDQgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvbW9kdWxlcy9rc3ltcy52ZXIiIDEKIyAxNDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9k
dWxlcy9sYXBiX2lmYWNlLnZlciIgMQojIDE0NiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1
bGVzL2xsX3J3X2Jsay52ZXIiIDEKIyAxNDcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
bW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxl
cy9sbGNfbWFjaW5pdC52ZXIiIDEKIyAxNDggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
bW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxl
cy9sb2NrZF9zeW1zLnZlciIgMQojIDE0OSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9t
b2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVz
L2xvb3AudmVyIiAxCiMgMTUwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNp
b25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvbWFjX2hp
ZC52ZXIiIDEKIyAxNTEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9tYWNoNjRfYWNj
ZWwudmVyIiAxCiMgMTUyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25z
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvbWF0cm94ZmJf
REFDMTA2NC52ZXIiIDEKIyAxNTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVy
c2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9tYXRy
b3hmYl9UaTMwMjYudmVyIiAxCiMgMTU0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21v
ZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMv
bWF0cm94ZmJfYWNjZWwudmVyIiAxCiMgMTU1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVs
ZXMvbWF0cm94ZmJfYmFzZS52ZXIiIDEKIyAxNTYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9k
dWxlcy9tYXRyb3hmYl9taXNjLnZlciIgMQojIDE1NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9t
b2R1bGVzL21jYS52ZXIiIDEKIyAxNTggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9k
dmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9t
ZC52ZXIiIDEKIyAxNTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9taWNyb2NvZGUu
dmVyIiAxCiMgMTYwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvbWlkaV9zeW1zLnZl
ciIgMQojIDE2MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL21pcm9wY20yMC1yZHMt
Y29yZS52ZXIiIDEKIyAxNjIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lv
bnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9taXNjLnZl
ciIgMQojIDE2MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL21vZGVkYi52ZXIiIDEK
IyAxNjQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9tcHRiYXNlLnZlciIgMQojIDE2
NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL21wdGN0bC52ZXIiIDEKIyAxNjYgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9tcHRsYW4udmVyIiAxCiMgMTY3ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvbXB0c2NzaWgudmVyIiAxCiMgMTY4ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L21vZHVsZXMvbXB1NDAxLnZlciIgMQojIDE2OSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9tb2R1bGVzL21zZG9zZnNfc3ltcy52ZXIiIDEKIyAxNzAgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvbW9kdWxlcy9tc2dxdWV1ZS52ZXIiIDEKIyAxNzEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvbW9kdWxlcy9tc25kLnZlciIgMQojIDE3MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9t
b2R1bGVzL21zci52ZXIiIDEKIyAxNzMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9k
dmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9t
dGRjb3JlLnZlciIgMQojIDE3NCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJz
aW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL210ZHBh
cnQudmVyIiAxCiMgMTc1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25z
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvbXRyci52ZXIi
IDEKIyAxNzYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9uYW5kLnZlciIgMQojIDE3
NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL25hbmRfZWNjLnZlciIgMQojIDE3OCAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL25ldF9pbml0LnZlciIgMQojIDE3OSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL25ldGZpbHRlci52ZXIiIDEKIyAxODAgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9uZXRzeW1zLnZlciIgMQojIDE4MSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9tb2R1bGVzL25ld3BvcnQudmVyIiAxCiMgMTgyICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L21vZHVsZXMvbmxzX2Jhc2UudmVyIiAxCiMgMTgzICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L21vZHVsZXMvbm0yNTZfYXVkaW8udmVyIiAxCiMgMTg0ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L21vZHVsZXMvbnVidXNfc3ltcy52ZXIiIDEKIyAxODUgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvbW9kdWxlcy9vaGNpMTM5NC52ZXIiIDEKIyAxODYgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvbW9kdWxlcy9vcGVuLnZlciIgMQojIDE4NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1
bGVzL29wbDMudmVyIiAxCiMgMTg4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZl
cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvb3Jp
bm9jby52ZXIiIDEKIyAxODkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lv
bnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9wODAyMi52
ZXIiIDEKIyAxOTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9wYXJwb3J0X3BjLnZl
ciIgMQojIDE5MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL3BjaS52ZXIiIDEKIyAx
OTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9wY2lfaG90cGx1Z19jb3JlLnZlciIg
MQojIDE5MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL3BjaV9ob3RwbHVnX3V0aWwu
dmVyIiAxCiMgMTk0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvcGNpX3NvY2tldC52
ZXIiIDEKIyAxOTUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9waG9uZWRldi52ZXIi
IDEKIyAxOTYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9wbS52ZXIiIDEKIyAxOTcg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9wcHBfYXN5bmMudmVyIiAxCiMgMTk4ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvcHBwX2dlbmVyaWMudmVyIiAxCiMgMTk5ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvcHBwb3gudmVyIiAxCiMgMjAwICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvcHJpbnRrLnZlciIgMQojIDIwMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9tb2R1bGVzL3Byb2MudmVyIiAxCiMgMjAyICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L21vZHVsZXMvcHJvZmlsZS52ZXIiIDEKIyAyMDMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
bW9kdWxlcy9wc25hcC52ZXIiIDEKIyAyMDQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
bW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxl
cy9wdHkudmVyIiAxCiMgMjA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNp
b25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvcHdjLXVu
Y29tcHJlc3MudmVyIiAxCiMgMjA2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZl
cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvcXVl
dWUudmVyIiAxCiMgMjA3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25z
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvcmFuZG9tLnZl
ciIgMQojIDIwOCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL3Jhdy52ZXIiIDEKIyAy
MDkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9yYXlfY3MudmVyIiAxCiMgMjEwICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvcmVkYm9vdC52ZXIiIDEKIyAyMTEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9yZXNvdXJjZXMudmVyIiAxCiMgMjEyICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvcm9vdC52ZXIiIDEKIyAyMTMgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvbW9kdWxlcy9ydGMudmVyIiAxCiMgMjE0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L21vZHVsZXMvcndzZW0tc3BpbmxvY2sudmVyIiAxCiMgMjE1ICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L21vZHVsZXMvcndzZW0udmVyIiAxCiMgMjE2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21v
ZHVsZXMvc2ExMTAwZmIudmVyIiAxCiMgMjE3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVs
ZXMvc2JfY29tbW9uLnZlciIgMQojIDIxOCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9t
b2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVz
L3Njc2lfc3ltcy52ZXIiIDEKIyAyMTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9k
dmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9z
ZGxhZHJ2LnZlciIgMQojIDIyMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJz
aW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL3NlbGVj
dGlvbi52ZXIiIDEKIyAyMjEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lv
bnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9zZXF1ZW5j
ZXJfc3ltcy52ZXIiIDEKIyAyMjIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVy
c2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9zZXJp
YWwudmVyIiAxCiMgMjIzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25z
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvc2VyaW8udmVy
IiAxCiMgMjI0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvc2dpY29ucy52ZXIiIDEK
IyAyMjUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9zaG1lbS52ZXIiIDEKIyAyMjYg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9zaG1pcS52ZXIiIDEKIyAyMjcgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9zaWduYWwudmVyIiAxCiMgMjI4ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L21vZHVsZXMvc2lzX21haW4udmVyIiAxCiMgMjI5ICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L21vZHVsZXMvc2xoYy52ZXIiIDEKIyAyMzAgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvbW9kdWxlcy9zb255cGkudmVyIiAxCiMgMjMxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21v
ZHVsZXMvc291bmRfY29yZS52ZXIiIDEKIyAyMzIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9k
dWxlcy9zb3VuZF9zeW1zLnZlciIgMQojIDIzMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1
bGVzL3N1LnZlciIgMQojIDIzNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJz
aW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL3N1bmku
dmVyIiAxCiMgMjM1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvc3VucnBjX3N5bXMu
dmVyIiAxCiMgMjM2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvc3ltcy52ZXIiIDEK
IyAyMzcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9zeW5jcHBwLnZlciIgMQojIDIz
OCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL3N5cy52ZXIiIDEKIyAyMzkgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy9zeXNycS52ZXIiIDEKIyAyNDAgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvbW9kdWxlcy90Yy52ZXIiIDEKIyAyNDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvbW9kdWxlcy90bXMzODB0ci52ZXIiIDEKIyAyNDIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
bW9kdWxlcy90dHlfaW8udmVyIiAxCiMgMjQzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVs
ZXMvdHR5X2lvY3RsLnZlciIgMQojIDI0NCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9t
b2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVz
L3VQRDk4NDAyLnZlciIgMQojIDI0NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2
ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL3Vh
cnQ0MDEudmVyIiAxCiMgMjQ2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNp
b25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvdXNiLnZl
ciIgMQojIDI0NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL3VzYnNlcmlhbC52ZXIi
IDEKIyAyNDggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy91c2VtYS52ZXIiIDEKIyAy
NDkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlcy91dGlsLnZlciIgMQojIDI1MCAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL3ZmYXRmc19zeW1zLnZlciIgMQojIDI1MSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL3ZpYS1wbXUudmVyIiAxCiMgMjUyICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvdmlkZW9kZXYudmVyIiAxCiMgMjUzICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L21vZHVsZXMvd2FubWFpbi52ZXIiIDEKIyAyNTQgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvbW9kdWxlcy94b3IudmVyIiAxCiMgMjU1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L21vZHVsZXMveWVudGEudmVyIiAxCiMgMjU2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVs
ZXMvejg1MjMwLnZlciIgMQojIDI1NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2
ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL3pm
dGFwZV9zeW1zLnZlciIgMQojIDI1OCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2
ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGVzL3pv
cnJvLnZlciIgMQojIDI1OSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9u
cy5oIiAyCiMgMiAiODEzOXRvby5jIiAyCiMgOTggIjgxMzl0b28uYyIKIyAxICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9hdXRvY29uZi5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9jb25maWcuaCIgMgojIDk5ICI4MTM5dG9vLmMiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L21vZHVsZS5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
bW9kdWxlLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQoj
IDExICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZS5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvc3BpbmxvY2suaCIgMgojIDU3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Nw
aW5sb2NrLmgiCiAgdHlwZWRlZiBzdHJ1Y3QgeyB9IHNwaW5sb2NrX3Q7CiMgMTIwICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiCiAgdHlwZWRlZiBzdHJ1Y3QgeyB9IHJ3
bG9ja190OwojIDEyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZS5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9saXN0LmgiIDEKCgoKCgojIDEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcHJlZmV0Y2guaCIgMQojIDEzICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L3ByZWZldGNoLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9h
c20vcHJvY2Vzc29yLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vz
c29yLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vdm04Ni5oIiAxCiMgNjggIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3ZtODYuaCIKc3RydWN0IHZtODZfcmVncyB7CgoKCiAg
ICAgICAgbG9uZyBlYng7CiAgICAgICAgbG9uZyBlY3g7CiAgICAgICAgbG9uZyBlZHg7CiAgICAg
ICAgbG9uZyBlc2k7CiAgICAgICAgbG9uZyBlZGk7CiAgICAgICAgbG9uZyBlYnA7CiAgICAgICAg
bG9uZyBlYXg7CiAgICAgICAgbG9uZyBfX251bGxfZHM7CiAgICAgICAgbG9uZyBfX251bGxfZXM7
CiAgICAgICAgbG9uZyBfX251bGxfZnM7CiAgICAgICAgbG9uZyBfX251bGxfZ3M7CiAgICAgICAg
bG9uZyBvcmlnX2VheDsKICAgICAgICBsb25nIGVpcDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBj
cywgX19jc2g7CiAgICAgICAgbG9uZyBlZmxhZ3M7CiAgICAgICAgbG9uZyBlc3A7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgc3MsIF9fc3NoOwoKCgogICAgICAgIHVuc2lnbmVkIHNob3J0IGVzLCBf
X2VzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkcywgX19kc2g7CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgZnMsIF9fZnNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGdzLCBfX2dzaDsKfTsKCnN0
cnVjdCByZXZlY3RvcmVkX3N0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX21hcFs4XTsK
fTsKCnN0cnVjdCB2bTg2X3N0cnVjdCB7CiAgICAgICAgc3RydWN0IHZtODZfcmVncyByZWdzOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzY3JlZW5f
Yml0bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1X3R5cGU7CiAgICAgICAgc3RydWN0IHJl
dmVjdG9yZWRfc3RydWN0IGludF9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCByZXZlY3RvcmVk
X3N0cnVjdCBpbnQyMV9yZXZlY3RvcmVkOwp9OwoKCgoKCgpzdHJ1Y3Qgdm04NnBsdXNfaW5mb19z
dHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgZm9yY2VfcmV0dXJuX2Zvcl9waWM6MTsKICAg
ICAgICB1bnNpZ25lZCBsb25nIHZtODZkYmdfYWN0aXZlOjE7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyB2bTg2ZGJnX1RGcGVuZGlnOjE7CiAgICAgICAgdW5zaWduZWQgbG9uZyB1bnVzZWQ6Mjg7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBpc192bTg2cHVzOjE7CiAgICAgICAgdW5zaWduZWQgY2hhciB2
bTg2ZGJnX2ludHh4dGFiWzMyXTsKfTsKCnN0cnVjdCB2bTg2cGx1c19zdHJ1Y3QgewogICAgICAg
IHN0cnVjdCB2bTg2X3JlZ3MgcmVnczsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgc2NyZWVuX2JpdG1hcDsKICAgICAgICB1bnNpZ25lZCBsb25nIGNw
dV90eXBlOwogICAgICAgIHN0cnVjdCByZXZlY3RvcmVkX3N0cnVjdCBpbnRfcmV2ZWN0b3JlZDsK
ICAgICAgICBzdHJ1Y3QgcmV2ZWN0b3JlZF9zdHJ1Y3QgaW50MjFfcmV2ZWN0b3JlZDsKICAgICAg
ICBzdHJ1Y3Qgdm04NnBsdXNfaW5mb19zdHJ1Y3Qgdm04NnBsdXM7Cn07CiMgMTQ1ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2FzbS92bTg2LmgiCnN0cnVjdCBrZXJuZWxfdm04Nl9yZWdzIHsKCgoK
ICAgICAgICBsb25nIGVieDsKICAgICAgICBsb25nIGVjeDsKICAgICAgICBsb25nIGVkeDsKICAg
ICAgICBsb25nIGVzaTsKICAgICAgICBsb25nIGVkaTsKICAgICAgICBsb25nIGVicDsKICAgICAg
ICBsb25nIGVheDsKICAgICAgICBsb25nIF9fbnVsbF9kczsKICAgICAgICBsb25nIF9fbnVsbF9l
czsKICAgICAgICBsb25nIG9yaWdfZWF4OwogICAgICAgIGxvbmcgZWlwOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IGNzLCBfX2NzaDsKICAgICAgICBsb25nIGVmbGFnczsKICAgICAgICBsb25nIGVz
cDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzcywgX19zc2g7CgoKCiAgICAgICAgdW5zaWduZWQg
c2hvcnQgZXMsIF9fZXNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRzLCBfX2RzaDsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBmcywgX19mc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZ3MsIF9f
Z3NoOwp9OwoKc3RydWN0IGtlcm5lbF92bTg2X3N0cnVjdCB7CiAgICAgICAgc3RydWN0IGtlcm5l
bF92bTg2X3JlZ3MgcmVnczsKIyAxODQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3ZtODYu
aCIKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2Ny
ZWVuX2JpdG1hcDsKICAgICAgICB1bnNpZ25lZCBsb25nIGNwdV90eXBlOwogICAgICAgIHN0cnVj
dCByZXZlY3RvcmVkX3N0cnVjdCBpbnRfcmV2ZWN0b3JlZDsKICAgICAgICBzdHJ1Y3QgcmV2ZWN0
b3JlZF9zdHJ1Y3QgaW50MjFfcmV2ZWN0b3JlZDsKICAgICAgICBzdHJ1Y3Qgdm04NnBsdXNfaW5m
b19zdHJ1Y3Qgdm04NnBsdXM7CiAgICAgICAgc3RydWN0IHB0X3JlZ3MgKnJlZ3MzMjsKIyAyMDEg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3ZtODYuaCIKfTsKCnZvaWQgaGFuZGxlX3ZtODZf
ZmF1bHQoc3RydWN0IGtlcm5lbF92bTg2X3JlZ3MgKiwgbG9uZyk7CmludCBoYW5kbGVfdm04Nl90
cmFwKHN0cnVjdCBrZXJuZWxfdm04Nl9yZWdzICosIGxvbmcsIGludCk7CiMgMTEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9hc20vbWF0aF9lbXUuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNt
L3NpZ2NvbnRleHQuaCIgMQojIDE4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zaWdjb250
ZXh0LmgiCnN0cnVjdCBfZnByZWcgewogICAgICAgIHVuc2lnbmVkIHNob3J0IHNpZ25pZmljYW5k
WzRdOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGV4cG9uZW50Owp9OwoKc3RydWN0IF9mcHhyZWcg
ewogICAgICAgIHVuc2lnbmVkIHNob3J0IHNpZ25pZmljYW5kWzRdOwogICAgICAgIHVuc2lnbmVk
IHNob3J0IGV4cG9uZW50OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHBhZGRpbmdbM107Cn07Cgpz
dHJ1Y3QgX3htbXJlZyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlbGVtZW50WzRdOwp9OwoKc3Ry
dWN0IF9mcHN0YXRlIHsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBjdzsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHN3OwogICAgICAgIHVuc2lnbmVkIGxvbmcgdGFnOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgaXBvZmY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjc3NlbDsKICAgICAgICB1bnNpZ25lZCBs
b25nIGRhdGFvZmY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkYXRhc2VsOwogICAgICAgIHN0cnVj
dCBfZnByZWcgX3N0WzhdOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0YXR1czsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBtYWdpYzsKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgX2Z4c3JfZW52WzZd
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgbXhjc3I7CiAgICAgICAgdW5zaWduZWQgbG9uZyByZXNl
cnZlZDsKICAgICAgICBzdHJ1Y3QgX2ZweHJlZyBfZnhzcl9zdFs4XTsKICAgICAgICBzdHJ1Y3Qg
X3htbXJlZyBfeG1tWzhdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcGFkZGluZ1s1Nl07Cn07CgoK
CnN0cnVjdCBzaWdjb250ZXh0IHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBncywgX19nc2g7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgZnMsIF9fZnNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGVz
LCBfX2VzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkcywgX19kc2g7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBlZGk7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc2k7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBlYnA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3A7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBlYng7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlZHg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBl
Y3g7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlYXg7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0cmFw
bm87CiAgICAgICAgdW5zaWduZWQgbG9uZyBlcnI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlaXA7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY3MsIF9fY3NoOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
ZWZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNwX2F0X3NpZ25hbDsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCBzcywgX19zc2g7CiAgICAgICAgc3RydWN0IF9mcHN0YXRlICogZnBzdGF0ZTsK
ICAgICAgICB1bnNpZ25lZCBsb25nIG9sZG1hc2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjcjI7
Cn07CiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vbWF0aF9lbXUuaCIgMgoKaW50IHJl
c3RvcmVfaTM4N19zb2Z0KHZvaWQgKnMzODcsIHN0cnVjdCBfZnBzdGF0ZSAqYnVmKTsKaW50IHNh
dmVfaTM4N19zb2Z0KHZvaWQgKnMzODcsIHN0cnVjdCBfZnBzdGF0ZSAqIGJ1Zik7CgoKCgoKc3Ry
dWN0IGluZm8gewogICAgICAgIGxvbmcgX19fb3JpZ19laXA7CiAgICAgICAgbG9uZyBfX19lYng7
CiAgICAgICAgbG9uZyBfX19lY3g7CiAgICAgICAgbG9uZyBfX19lZHg7CiAgICAgICAgbG9uZyBf
X19lc2k7CiAgICAgICAgbG9uZyBfX19lZGk7CiAgICAgICAgbG9uZyBfX19lYnA7CiAgICAgICAg
bG9uZyBfX19lYXg7CiAgICAgICAgbG9uZyBfX19kczsKICAgICAgICBsb25nIF9fX2VzOwogICAg
ICAgIGxvbmcgX19fb3JpZ19lYXg7CiAgICAgICAgbG9uZyBfX19laXA7CiAgICAgICAgbG9uZyBf
X19jczsKICAgICAgICBsb25nIF9fX2VmbGFnczsKICAgICAgICBsb25nIF9fX2VzcDsKICAgICAg
ICBsb25nIF9fX3NzOwogICAgICAgIGxvbmcgX19fdm04Nl9lczsKICAgICAgICBsb25nIF9fX3Zt
ODZfZHM7CiAgICAgICAgbG9uZyBfX192bTg2X2ZzOwogICAgICAgIGxvbmcgX19fdm04Nl9nczsK
fTsKIyAxMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zZWdtZW50LmgiIDEKIyAxMyAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2FzbS9wYWdlLmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGFnZS5oIgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAxMyAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9hc20vcGFnZS5oIiAyCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9hc20vbW14LmgiIDEKCgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC90eXBlcy5oIiAxCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmln
LmgiIDEKIyA2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDIKCgojIDEg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCIgMQoKCgojIDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3RkZGVmLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmgiIDIKIyAzNiAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9wb3NpeF90eXBlcy5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBmZHNfYml0cyBbKDEwMjQvKDggKiBzaXplb2YodW5zaWduZWQgbG9uZykpKV07Cn0g
X19rZXJuZWxfZmRfc2V0OwoKCnR5cGVkZWYgdm9pZCAoKl9fa2VybmVsX3NpZ2hhbmRsZXJfdCko
aW50KTsKCgp0eXBlZGVmIGludCBfX2tlcm5lbF9rZXlfdDsKCiMgMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2FzbS9wb3NpeF90eXBlcy5oIgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX2Rldl90
Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX19rZXJuZWxfaW5vX3Q7CnR5cGVkZWYgdW5zaWduZWQg
c2hvcnQgX19rZXJuZWxfbW9kZV90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX25s
aW5rX3Q7CnR5cGVkZWYgbG9uZyBfX2tlcm5lbF9vZmZfdDsKdHlwZWRlZiBpbnQgX19rZXJuZWxf
cGlkX3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfaXBjX3BpZF90Owp0eXBlZGVm
IHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX3VpZF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9f
a2VybmVsX2dpZF90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX2tlcm5lbF9zaXplX3Q7CnR5cGVk
ZWYgaW50IF9fa2VybmVsX3NzaXplX3Q7CnR5cGVkZWYgaW50IF9fa2VybmVsX3B0cmRpZmZfdDsK
dHlwZWRlZiBsb25nIF9fa2VybmVsX3RpbWVfdDsKdHlwZWRlZiBsb25nIF9fa2VybmVsX3N1c2Vj
b25kc190Owp0eXBlZGVmIGxvbmcgX19rZXJuZWxfY2xvY2tfdDsKdHlwZWRlZiBpbnQgX19rZXJu
ZWxfZGFkZHJfdDsKdHlwZWRlZiBjaGFyICogX19rZXJuZWxfY2FkZHJfdDsKdHlwZWRlZiB1bnNp
Z25lZCBzaG9ydCBfX2tlcm5lbF91aWQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2Vy
bmVsX2dpZDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fa2VybmVsX3VpZDMyX3Q7CnR5cGVk
ZWYgdW5zaWduZWQgaW50IF9fa2VybmVsX2dpZDMyX3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0
IF9fa2VybmVsX29sZF91aWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9vbGRf
Z2lkX3Q7CgoKdHlwZWRlZiBsb25nIGxvbmcgX19rZXJuZWxfbG9mZl90OwoKCnR5cGVkZWYgc3Ry
dWN0IHsKCiAgICAgICAgaW50IHZhbFsyXTsKCgoKfSBfX2tlcm5lbF9mc2lkX3Q7CiMgNDcgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCIgMgojIDkgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvYXNtL3R5cGVzLmgiIDEKCgoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1bW9kZV90OwoKCgoK
Cgp0eXBlZGVmIF9fc2lnbmVkX18gY2hhciBfX3M4Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191
ODsKCnR5cGVkZWYgX19zaWduZWRfXyBzaG9ydCBfX3MxNjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9y
dCBfX3UxNjsKCnR5cGVkZWYgX19zaWduZWRfXyBpbnQgX19zMzI7CnR5cGVkZWYgdW5zaWduZWQg
aW50IF9fdTMyOwoKCnR5cGVkZWYgX19zaWduZWRfXyBsb25nIGxvbmcgX19zNjQ7CnR5cGVkZWYg
dW5zaWduZWQgbG9uZyBsb25nIF9fdTY0OwoKCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMzEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3R5
cGVzLmgiIDIKCnR5cGVkZWYgc2lnbmVkIGNoYXIgczg7CnR5cGVkZWYgdW5zaWduZWQgY2hhciB1
ODsKCnR5cGVkZWYgc2lnbmVkIHNob3J0IHMxNjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1MTY7
Cgp0eXBlZGVmIHNpZ25lZCBpbnQgczMyOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1MzI7Cgp0eXBl
ZGVmIHNpZ25lZCBsb25nIGxvbmcgczY0Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1NjQ7
CiMgNTEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3R5cGVzLmgiCnR5cGVkZWYgdTMyIGRt
YV9hZGRyX3Q7Cgp0eXBlZGVmIHU2NCBkbWE2NF9hZGRyX3Q7CiMgMTAgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMgoKCgp0eXBlZGVmIF9fa2VybmVsX2ZkX3NldCBmZF9z
ZXQ7CnR5cGVkZWYgX19rZXJuZWxfZGV2X3QgZGV2X3Q7CnR5cGVkZWYgX19rZXJuZWxfaW5vX3Qg
aW5vX3Q7CnR5cGVkZWYgX19rZXJuZWxfbW9kZV90IG1vZGVfdDsKdHlwZWRlZiBfX2tlcm5lbF9u
bGlua190IG5saW5rX3Q7CnR5cGVkZWYgX19rZXJuZWxfb2ZmX3Qgb2ZmX3Q7CnR5cGVkZWYgX19r
ZXJuZWxfcGlkX3QgcGlkX3Q7CnR5cGVkZWYgX19rZXJuZWxfZGFkZHJfdCBkYWRkcl90Owp0eXBl
ZGVmIF9fa2VybmVsX2tleV90IGtleV90Owp0eXBlZGVmIF9fa2VybmVsX3N1c2Vjb25kc190IHN1
c2Vjb25kc190OwoKCnR5cGVkZWYgX19rZXJuZWxfdWlkMzJfdCB1aWRfdDsKdHlwZWRlZiBfX2tl
cm5lbF9naWQzMl90IGdpZF90Owp0eXBlZGVmIF9fa2VybmVsX3VpZDE2X3QgdWlkMTZfdDsKdHlw
ZWRlZiBfX2tlcm5lbF9naWQxNl90IGdpZDE2X3Q7CgoKCnR5cGVkZWYgX19rZXJuZWxfb2xkX3Vp
ZF90IG9sZF91aWRfdDsKdHlwZWRlZiBfX2tlcm5lbF9vbGRfZ2lkX3Qgb2xkX2dpZF90OwojIDQ1
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiCnR5cGVkZWYgX19rZXJuZWxf
bG9mZl90IGxvZmZfdDsKIyA1NCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5o
Igp0eXBlZGVmIF9fa2VybmVsX3NpemVfdCBzaXplX3Q7CgoKCgp0eXBlZGVmIF9fa2VybmVsX3Nz
aXplX3Qgc3NpemVfdDsKCgoKCnR5cGVkZWYgX19rZXJuZWxfcHRyZGlmZl90IHB0cmRpZmZfdDsK
CgoKCnR5cGVkZWYgX19rZXJuZWxfdGltZV90IHRpbWVfdDsKCgoKCnR5cGVkZWYgX19rZXJuZWxf
Y2xvY2tfdCBjbG9ja190OwoKCgoKdHlwZWRlZiBfX2tlcm5lbF9jYWRkcl90IGNhZGRyX3Q7CgoK
CnR5cGVkZWYgdW5zaWduZWQgY2hhciB1X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdV9z
aG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1
X2xvbmc7CgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVuY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBz
aG9ydCB1c2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQ7CnR5cGVkZWYgdW5zaWduZWQg
bG9uZyB1bG9uZzsKCgoKCnR5cGVkZWYgX191OCB1X2ludDhfdDsKdHlwZWRlZiBfX3M4IGludDhf
dDsKdHlwZWRlZiBfX3UxNiB1X2ludDE2X3Q7CnR5cGVkZWYgX19zMTYgaW50MTZfdDsKdHlwZWRl
ZiBfX3UzMiB1X2ludDMyX3Q7CnR5cGVkZWYgX19zMzIgaW50MzJfdDsKCgoKdHlwZWRlZiBfX3U4
IHVpbnQ4X3Q7CnR5cGVkZWYgX191MTYgdWludDE2X3Q7CnR5cGVkZWYgX191MzIgdWludDMyX3Q7
CgoKdHlwZWRlZiBfX3U2NCB1aW50NjRfdDsKdHlwZWRlZiBfX3U2NCB1X2ludDY0X3Q7CnR5cGVk
ZWYgX19zNjQgaW50NjRfdDsKIyAxMjMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHlw
ZXMuaCIKc3RydWN0IHVzdGF0IHsKICAgICAgICBfX2tlcm5lbF9kYWRkcl90IGZfdGZyZWU7CiAg
ICAgICAgX19rZXJuZWxfaW5vX3QgZl90aW5vZGU7CiAgICAgICAgY2hhciBmX2ZuYW1lWzZdOwog
ICAgICAgIGNoYXIgZl9mcGFja1s2XTsKfTsKIyA5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2Fz
bS9tbXguaCIgMgoKZXh0ZXJuIHZvaWQgKl9tbXhfbWVtY3B5KHZvaWQgKnRvLCBjb25zdCB2b2lk
ICpmcm9tLCBzaXplX3Qgc2l6ZSk7CmV4dGVybiB2b2lkIG1teF9jbGVhcl9wYWdlKHZvaWQgKnBh
Z2UpOwpleHRlcm4gdm9pZCBtbXhfY29weV9wYWdlKHZvaWQgKnRvLCB2b2lkICpmcm9tKTsKIyAx
NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGFnZS5oIiAyCiMgNDUgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvYXNtL3BhZ2UuaCIKdHlwZWRlZiBzdHJ1Y3QgeyB1bnNpZ25lZCBsb25nIHB0
ZV9sb3c7IH0gcHRlX3Q7CnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgbG9uZyBwbWQ7IH0gcG1k
X3Q7CnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgbG9uZyBwZ2Q7IH0gcGdkX3Q7CgoKCgp0eXBl
ZGVmIHN0cnVjdCB7IHVuc2lnbmVkIGxvbmcgcGdwcm90OyB9IHBncHJvdF90OwojIDEwNSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGFnZS5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZ2V0
X29yZGVyKHVuc2lnbmVkIGxvbmcgc2l6ZSkKewogICAgICAgIGludCBvcmRlcjsKCiAgICAgICAg
c2l6ZSA9IChzaXplLTEpID4+ICgxMiAtMSk7CiAgICAgICAgb3JkZXIgPSAtMTsKICAgICAgICBk
byB7CiAgICAgICAgICAgICAgICBzaXplID4+PSAxOwogICAgICAgICAgICAgICAgb3JkZXIrKzsK
ICAgICAgICB9IHdoaWxlIChzaXplKTsKICAgICAgICByZXR1cm4gb3JkZXI7Cn0KIyAxNCAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2FzbS90eXBlcy5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNt
L3Byb2Nlc3Nvci5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2lnY29udGV4
dC5oIiAxCiMgMTYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZS5oIiAxCiMgMTcgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9jYWNoZS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9jb25maWcuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY2FjaGUu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2NhY2hlLmgiIDEKCgoKCgoKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgOCAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9hc20vY2FjaGUuaCIgMgojIDYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvY2FjaGUuaCIgMgojIDE4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wcm9jZXNz
b3IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAx
OSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3RocmVhZHMuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L3RocmVhZHMuaCIgMgojIDIwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wcm9jZXNz
b3IuaCIgMgojIDMzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKc3Ry
dWN0IGNwdWluZm9feDg2IHsKICAgICAgICBfX3U4IHg4NjsKICAgICAgICBfX3U4IHg4Nl92ZW5k
b3I7CiAgICAgICAgX191OCB4ODZfbW9kZWw7CiAgICAgICAgX191OCB4ODZfbWFzazsKICAgICAg
ICBjaGFyIHdwX3dvcmtzX29rOwogICAgICAgIGNoYXIgaGx0X3dvcmtzX29rOwogICAgICAgIGNo
YXIgaGFyZF9tYXRoOwogICAgICAgIGNoYXIgcmZ1OwogICAgICAgIGludCBjcHVpZF9sZXZlbDsK
ICAgICAgICBfX3UzMiB4ODZfY2FwYWJpbGl0eVs0XTsKICAgICAgICBjaGFyIHg4Nl92ZW5kb3Jf
aWRbMTZdOwogICAgICAgIGNoYXIgeDg2X21vZGVsX2lkWzY0XTsKICAgICAgICBpbnQgeDg2X2Nh
Y2hlX3NpemU7CgogICAgICAgIGludCBmZGl2X2J1ZzsKICAgICAgICBpbnQgZjAwZl9idWc7CiAg
ICAgICAgaW50IGNvbWFfYnVnOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbG9vcHNfcGVyX2ppZmZ5
X1JiYTQ5N2YxMzsKICAgICAgICB1bnNpZ25lZCBsb25nICpwZ2RfcXVpY2s7CiAgICAgICAgdW5z
aWduZWQgbG9uZyAqcG1kX3F1aWNrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgKnB0ZV9xdWljazsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHBndGFibGVfY2FjaGVfc3o7Cn0gX19hdHRyaWJ1dGVfXygo
X19hbGlnbmVkX18oKDEgPDwgKCg2KSkpKSkpOwojIDcyICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2FzbS9wcm9jZXNzb3IuaCIKZXh0ZXJuIHN0cnVjdCBjcHVpbmZvX3g4NiBib290X2NwdV9kYXRh
X1IwNjU3ZDAzNzsKZXh0ZXJuIHN0cnVjdCB0c3Nfc3RydWN0IGluaXRfdHNzWzFdOwojIDk0ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKZXh0ZXJuIGNoYXIgaWdub3Jl
X2lycTEzOwoKZXh0ZXJuIHZvaWQgaWRlbnRpZnlfY3B1KHN0cnVjdCBjcHVpbmZvX3g4NiAqKTsK
ZXh0ZXJuIHZvaWQgcHJpbnRfY3B1X2luZm8oc3RydWN0IGNwdWluZm9feDg2ICopOwpleHRlcm4g
dm9pZCBkb2RneV90c2Modm9pZCk7CiMgMTI0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9w
cm9jZXNzb3IuaCIKc3RhdGljIGlubGluZSB2b2lkIGNwdWlkKGludCBvcCwgaW50ICplYXgsIGlu
dCAqZWJ4LCBpbnQgKmVjeCwgaW50ICplZHgpCnsKICAgICAgICBfX2FzbV9fKCJjcHVpZCIKICAg
ICAgICAgICAgICAgIDogIj1hIiAoKmVheCksCiAgICAgICAgICAgICAgICAgICI9YiIgKCplYngp
LAogICAgICAgICAgICAgICAgICAiPWMiICgqZWN4KSwKICAgICAgICAgICAgICAgICAgIj1kIiAo
KmVkeCkKICAgICAgICAgICAgICAgIDogIjAiIChvcCkpOwp9CgoKCgpzdGF0aWMgaW5saW5lIHVu
c2lnbmVkIGludCBjcHVpZF9lYXgodW5zaWduZWQgaW50IG9wKQp7CiAgICAgICAgdW5zaWduZWQg
aW50IGVheDsKCiAgICAgICAgX19hc21fXygiY3B1aWQiCiAgICAgICAgICAgICAgICA6ICI9YSIg
KGVheCkKICAgICAgICAgICAgICAgIDogIjAiIChvcCkKICAgICAgICAgICAgICAgIDogImJ4Iiwg
ImN4IiwgImR4Iik7CiAgICAgICAgcmV0dXJuIGVheDsKfQpzdGF0aWMgaW5saW5lIHVuc2lnbmVk
IGludCBjcHVpZF9lYngodW5zaWduZWQgaW50IG9wKQp7CiAgICAgICAgdW5zaWduZWQgaW50IGVh
eCwgZWJ4OwoKICAgICAgICBfX2FzbV9fKCJjcHVpZCIKICAgICAgICAgICAgICAgIDogIj1hIiAo
ZWF4KSwgIj1iIiAoZWJ4KQogICAgICAgICAgICAgICAgOiAiMCIgKG9wKQogICAgICAgICAgICAg
ICAgOiAiY3giLCAiZHgiICk7CiAgICAgICAgcmV0dXJuIGVieDsKfQpzdGF0aWMgaW5saW5lIHVu
c2lnbmVkIGludCBjcHVpZF9lY3godW5zaWduZWQgaW50IG9wKQp7CiAgICAgICAgdW5zaWduZWQg
aW50IGVheCwgZWN4OwoKICAgICAgICBfX2FzbV9fKCJjcHVpZCIKICAgICAgICAgICAgICAgIDog
Ij1hIiAoZWF4KSwgIj1jIiAoZWN4KQogICAgICAgICAgICAgICAgOiAiMCIgKG9wKQogICAgICAg
ICAgICAgICAgOiAiYngiLCAiZHgiICk7CiAgICAgICAgcmV0dXJuIGVjeDsKfQpzdGF0aWMgaW5s
aW5lIHVuc2lnbmVkIGludCBjcHVpZF9lZHgodW5zaWduZWQgaW50IG9wKQp7CiAgICAgICAgdW5z
aWduZWQgaW50IGVheCwgZWR4OwoKICAgICAgICBfX2FzbV9fKCJjcHVpZCIKICAgICAgICAgICAg
ICAgIDogIj1hIiAoZWF4KSwgIj1kIiAoZWR4KQogICAgICAgICAgICAgICAgOiAiMCIgKG9wKQog
ICAgICAgICAgICAgICAgOiAiYngiLCAiY3giKTsKICAgICAgICByZXR1cm4gZWR4Owp9CiMgMTk5
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKZXh0ZXJuIHVuc2lnbmVk
IGxvbmcgbW11X2NyNF9mZWF0dXJlczsKCnN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfaW5fY3I0ICh1
bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAgICBtbXVfY3I0X2ZlYXR1cmVzIHw9IG1hc2s7CiAg
ICAgICAgX19hc21fXygibW92bCAlJWNyNCwlJWVheFxuXHQiCiAgICAgICAgICAgICAgICAib3Js
ICUwLCUlZWF4XG5cdCIKICAgICAgICAgICAgICAgICJtb3ZsICUlZWF4LCUlY3I0XG4iCiAgICAg
ICAgICAgICAgICA6IDogImlyZyIgKG1hc2spCiAgICAgICAgICAgICAgICA6ImF4Iik7Cn0KCnN0
YXRpYyBpbmxpbmUgdm9pZCBjbGVhcl9pbl9jcjQgKHVuc2lnbmVkIGxvbmcgbWFzaykKewogICAg
ICAgIG1tdV9jcjRfZmVhdHVyZXMgJj0gfm1hc2s7CiAgICAgICAgX19hc21fXygibW92bCAlJWNy
NCwlJWVheFxuXHQiCiAgICAgICAgICAgICAgICAiYW5kbCAlMCwlJWVheFxuXHQiCiAgICAgICAg
ICAgICAgICAibW92bCAlJWVheCwlJWNyNFxuIgogICAgICAgICAgICAgICAgOiA6ICJpcmciICh+
bWFzaykKICAgICAgICAgICAgICAgIDoiYXgiKTsKfQojIDI1NiAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9hc20vcHJvY2Vzc29yLmgiCmV4dGVybiBpbnQgTUNBX2J1c19SZjQ4YTJjNGM7CgoKCmV4
dGVybiB1bnNpZ25lZCBpbnQgbWFjaGluZV9pZDsKZXh0ZXJuIHVuc2lnbmVkIGludCBtYWNoaW5l
X3N1Ym1vZGVsX2lkOwpleHRlcm4gdW5zaWduZWQgaW50IEJJT1NfcmV2aXNpb247CmV4dGVybiB1
bnNpZ25lZCBpbnQgbWNhX3BlbnRpdW1fZmxhZzsKIyAyODIgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdHJ1Y3QgaTM4N19mc2F2ZV9zdHJ1Y3QgewogICAgICAgIGxv
bmcgY3dkOwogICAgICAgIGxvbmcgc3dkOwogICAgICAgIGxvbmcgdHdkOwogICAgICAgIGxvbmcg
ZmlwOwogICAgICAgIGxvbmcgZmNzOwogICAgICAgIGxvbmcgZm9vOwogICAgICAgIGxvbmcgZm9z
OwogICAgICAgIGxvbmcgc3Rfc3BhY2VbMjBdOwogICAgICAgIGxvbmcgc3RhdHVzOwp9OwoKc3Ry
dWN0IGkzODdfZnhzYXZlX3N0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY3dkOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IHN3ZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB0d2Q7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgZm9wOwogICAgICAgIGxvbmcgZmlwOwogICAgICAgIGxvbmcgZmNz
OwogICAgICAgIGxvbmcgZm9vOwogICAgICAgIGxvbmcgZm9zOwogICAgICAgIGxvbmcgbXhjc3I7
CiAgICAgICAgbG9uZyByZXNlcnZlZDsKICAgICAgICBsb25nIHN0X3NwYWNlWzMyXTsKICAgICAg
ICBsb25nIHhtbV9zcGFjZVszMl07CiAgICAgICAgbG9uZyBwYWRkaW5nWzU2XTsKfSBfX2F0dHJp
YnV0ZV9fICgoYWxpZ25lZCAoMTYpKSk7CgpzdHJ1Y3QgaTM4N19zb2Z0X3N0cnVjdCB7CiAgICAg
ICAgbG9uZyBjd2Q7CiAgICAgICAgbG9uZyBzd2Q7CiAgICAgICAgbG9uZyB0d2Q7CiAgICAgICAg
bG9uZyBmaXA7CiAgICAgICAgbG9uZyBmY3M7CiAgICAgICAgbG9uZyBmb287CiAgICAgICAgbG9u
ZyBmb3M7CiAgICAgICAgbG9uZyBzdF9zcGFjZVsyMF07CiAgICAgICAgdW5zaWduZWQgY2hhciBm
dG9wLCBjaGFuZ2VkLCBsb29rYWhlYWQsIG5vX3VwZGF0ZSwgcm0sIGFsaW1pdDsKICAgICAgICBz
dHJ1Y3QgaW5mbyAqaW5mbzsKICAgICAgICB1bnNpZ25lZCBsb25nIGVudHJ5X2VpcDsKfTsKCnVu
aW9uIGkzODdfdW5pb24gewogICAgICAgIHN0cnVjdCBpMzg3X2ZzYXZlX3N0cnVjdCBmc2F2ZTsK
ICAgICAgICBzdHJ1Y3QgaTM4N19meHNhdmVfc3RydWN0IGZ4c2F2ZTsKICAgICAgICBzdHJ1Y3Qg
aTM4N19zb2Z0X3N0cnVjdCBzb2Z0Owp9OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2ln
bmVkIGxvbmcgc2VnOwp9IG1tX3NlZ21lbnRfdDsKCnN0cnVjdCB0c3Nfc3RydWN0IHsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBiYWNrX2xpbmssX19ibGg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBl
c3AwOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNzMCxfX3NzMGg7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBlc3AxOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNzMSxfX3NzMWg7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBlc3AyOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNzMixfX3NzMmg7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBfX2NyMzsKICAgICAgICB1bnNpZ25lZCBsb25nIGVpcDsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGVmbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIGVheCxlY3gsZWR4
LGVieDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVi
cDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzaTsKICAgICAgICB1bnNpZ25lZCBsb25nIGVkaTsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBlcywgX19lc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
Y3MsIF9fY3NoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNzLCBfX3NzaDsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCBkcywgX19kc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZnMsIF9fZnNoOwog
ICAgICAgIHVuc2lnbmVkIHNob3J0IGdzLCBfX2dzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBs
ZHQsIF9fbGR0aDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB0cmFjZSwgYml0bWFwOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgaW9fYml0bWFwWzMyICsxXTsKCgoKICAgICAgICB1bnNpZ25lZCBsb25n
IF9fY2FjaGVsaW5lX2ZpbGxlcls1XTsKfTsKCnN0cnVjdCB0aHJlYWRfc3RydWN0IHsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGVzcDA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlaXA7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBlc3A7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmczsKICAgICAgICB1bnNp
Z25lZCBsb25nIGdzOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGRlYnVncmVnWzhdOwoKICAgICAg
ICB1bnNpZ25lZCBsb25nIGNyMiwgdHJhcF9ubywgZXJyb3JfY29kZTsKCiAgICAgICAgdW5pb24g
aTM4N191bmlvbiBpMzg3OwoKICAgICAgICBzdHJ1Y3Qgdm04Nl9zdHJ1Y3QgKiB2bTg2X2luZm87
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzY3JlZW5fYml0bWFwOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgdjg2ZmxhZ3MsIHY4Nm1hc2ssIHY4Nm1vZGUsIHNhdmVkX2VzcDA7CgogICAgICAgIGludCBp
b3Blcm07CiAgICAgICAgdW5zaWduZWQgbG9uZyBpb19iaXRtYXBbMzIgKzFdOwp9OwojIDQyNCAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCnN0cnVjdCB0YXNrX3N0cnVj
dDsKc3RydWN0IG1tX3N0cnVjdDsKCgpleHRlcm4gdm9pZCByZWxlYXNlX3RocmVhZChzdHJ1Y3Qg
dGFza19zdHJ1Y3QgKik7CgoKCmV4dGVybiBpbnQga2VybmVsX3RocmVhZF9SN2U5ZWJiMDUoaW50
ICgqZm4pKHZvaWQgKiksIHZvaWQgKiBhcmcsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOwoKCmV4dGVy
biB2b2lkIGNvcHlfc2VnbWVudHMoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBzdHJ1Y3QgbW1fc3Ry
dWN0ICogbW0pOwpleHRlcm4gdm9pZCByZWxlYXNlX3NlZ21lbnRzKHN0cnVjdCBtbV9zdHJ1Y3Qg
KiBtbSk7CgoKCgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgdGhyZWFkX3NhdmVkX3BjKHN0
cnVjdCB0aHJlYWRfc3RydWN0ICp0KQp7CiAgICAgICAgcmV0dXJuICgodW5zaWduZWQgbG9uZyAq
KXQtPmVzcClbM107Cn0KCnVuc2lnbmVkIGxvbmcgZ2V0X3djaGFuX1JlNmExM2RkOShzdHJ1Y3Qg
dGFza19zdHJ1Y3QgKnApOwojIDQ1OCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vz
c29yLmgiCnN0cnVjdCBtaWNyb2NvZGUgewogICAgICAgIHVuc2lnbmVkIGludCBoZHJ2ZXI7CiAg
ICAgICAgdW5zaWduZWQgaW50IHJldjsKICAgICAgICB1bnNpZ25lZCBpbnQgZGF0ZTsKICAgICAg
ICB1bnNpZ25lZCBpbnQgc2lnOwogICAgICAgIHVuc2lnbmVkIGludCBja3N1bTsKICAgICAgICB1
bnNpZ25lZCBpbnQgbGRydmVyOwogICAgICAgIHVuc2lnbmVkIGludCBwZjsKICAgICAgICB1bnNp
Z25lZCBpbnQgcmVzZXJ2ZWRbNV07CiAgICAgICAgdW5zaWduZWQgaW50IGJpdHNbNTAwXTsKfTsK
CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgcmVwX25vcCh2b2lkKQp7CiAgICAgICAgX19hc21fXyBf
X3ZvbGF0aWxlX18oInJlcDtub3AiKTsKfQojIDQ5NiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9h
c20vcHJvY2Vzc29yLmgiCmV4dGVybiBpbmxpbmUgdm9pZCBwcmVmZXRjaChjb25zdCB2b2lkICp4
KQp7CiAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgicHJlZmV0Y2ggKCUwKSIgOiA6ICJy
Iih4KSk7Cn0KCmV4dGVybiBpbmxpbmUgdm9pZCBwcmVmZXRjaHcoY29uc3Qgdm9pZCAqeCkKewog
ICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoInByZWZldGNodyAoJTApIiA6IDogInIiKHgp
KTsKfQojIDE0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3ByZWZldGNoLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9jYWNoZS5oIiAxCiMgMTUgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvcHJlZmV0Y2guaCIgMgojIDcgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvbGlzdC5oIiAyCiMgMTggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbGlz
dC5oIgpzdHJ1Y3QgbGlzdF9oZWFkIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpuZXh0LCAq
cHJldjsKfTsKIyAzNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRp
YyBfX2lubGluZV9fIHZvaWQgX19saXN0X2FkZChzdHJ1Y3QgbGlzdF9oZWFkICogbmV3LAogICAg
ICAgIHN0cnVjdCBsaXN0X2hlYWQgKiBwcmV2LAogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKiBu
ZXh0KQp7CiAgICAgICAgbmV4dC0+cHJldiA9IG5ldzsKICAgICAgICBuZXctPm5leHQgPSBuZXh0
OwogICAgICAgIG5ldy0+cHJldiA9IHByZXY7CiAgICAgICAgcHJldi0+bmV4dCA9IG5ldzsKfQoj
IDU1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKc3RhdGljIF9faW5saW5l
X18gdm9pZCBsaXN0X2FkZChzdHJ1Y3QgbGlzdF9oZWFkICpuZXcsIHN0cnVjdCBsaXN0X2hlYWQg
KmhlYWQpCnsKICAgICAgICBfX2xpc3RfYWRkKG5ldywgaGVhZCwgaGVhZC0+bmV4dCk7Cn0KIyA2
OCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBfX2lubGluZV9f
IHZvaWQgbGlzdF9hZGRfdGFpbChzdHJ1Y3QgbGlzdF9oZWFkICpuZXcsIHN0cnVjdCBsaXN0X2hl
YWQgKmhlYWQpCnsKICAgICAgICBfX2xpc3RfYWRkKG5ldywgaGVhZC0+cHJldiwgaGVhZCk7Cn0K
IyA4MCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBfX2lubGlu
ZV9fIHZvaWQgX19saXN0X2RlbChzdHJ1Y3QgbGlzdF9oZWFkICogcHJldiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKiBuZXh0KQp7CiAgICAgICAg
bmV4dC0+cHJldiA9IHByZXY7CiAgICAgICAgcHJldi0+bmV4dCA9IG5leHQ7Cn0KCgoKCgoKc3Rh
dGljIF9faW5saW5lX18gdm9pZCBsaXN0X2RlbChzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeSkKewog
ICAgICAgIF9fbGlzdF9kZWwoZW50cnktPnByZXYsIGVudHJ5LT5uZXh0KTsKfQoKCgoKCnN0YXRp
YyBfX2lubGluZV9fIHZvaWQgbGlzdF9kZWxfaW5pdChzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeSkK
ewogICAgICAgIF9fbGlzdF9kZWwoZW50cnktPnByZXYsIGVudHJ5LT5uZXh0KTsKICAgICAgICBk
byB7IChlbnRyeSktPm5leHQgPSAoZW50cnkpOyAoZW50cnkpLT5wcmV2ID0gKGVudHJ5KTsgfSB3
aGlsZSAoMCk7Cn0KCgoKCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgbGlzdF9lbXB0eShzdHJ1Y3Qg
bGlzdF9oZWFkICpoZWFkKQp7CiAgICAgICAgcmV0dXJuIGhlYWQtPm5leHQgPT0gaGVhZDsKfQoK
CgoKCgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGxpc3Rfc3BsaWNlKHN0cnVjdCBsaXN0X2hlYWQg
Kmxpc3QsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCnsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFk
ICpmaXJzdCA9IGxpc3QtPm5leHQ7CgogICAgICAgIGlmIChmaXJzdCAhPSBsaXN0KSB7CiAgICAg
ICAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpsYXN0ID0gbGlzdC0+cHJldjsKICAgICAgICAg
ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmF0ID0gaGVhZC0+bmV4dDsKCiAgICAgICAgICAgICAg
ICBmaXJzdC0+cHJldiA9IGhlYWQ7CiAgICAgICAgICAgICAgICBoZWFkLT5uZXh0ID0gZmlyc3Q7
CgogICAgICAgICAgICAgICAgbGFzdC0+bmV4dCA9IGF0OwogICAgICAgICAgICAgICAgYXQtPnBy
ZXYgPSBsYXN0OwogICAgICAgIH0KfQojIDEzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L21vZHVsZS5oIiAyCiMgMjUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlLmgi
CiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEKCgoKIyAxICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9hc20vYXRvbWljLmgiIDIKIyAyMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20v
YXRvbWljLmgiCnR5cGVkZWYgc3RydWN0IHsgdm9sYXRpbGUgaW50IGNvdW50ZXI7IH0gYXRvbWlj
X3Q7CiMgNTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMgX19p
bmxpbmVfXyB2b2lkIGF0b21pY19hZGQoaW50IGksIGF0b21pY190ICp2KQp7CiAgICAgICAgX19h
c21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIiAiYWRkbCAlMSwlMCIKICAgICAg
ICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKQogICAgICAgICAgICAgICAgOiJpciIgKGkpLCAi
bSIgKHYtPmNvdW50ZXIpKTsKfQojIDY5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9hdG9t
aWMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBhdG9taWNfc3ViKGludCBpLCBhdG9taWNfdCAq
dikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiIgInN1
YmwgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAodi0+Y291bnRlcikKICAgICAgICAgICAg
ICAgIDoiaXIiIChpKSwgIm0iICh2LT5jb3VudGVyKSk7Cn0KIyA4NyAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBhdG9taWNfc3ViX2Fu
ZF90ZXN0KGludCBpLCBhdG9taWNfdCAqdikKewogICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKCiAg
ICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIiAic3VibCAlMiwl
MDsgc2V0ZSAlMSIKICAgICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKSwgIj1xbSIgKGMp
CiAgICAgICAgICAgICAgICA6ImlyIiAoaSksICJtIiAodi0+Y291bnRlcikgOiAibWVtb3J5Iik7
CiAgICAgICAgcmV0dXJuIGM7Cn0KIyAxMDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2F0
b21pYy5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGF0b21pY19pbmMoYXRvbWljX3QgKnYpCnsK
ICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIiICJpbmNsICUw
IgogICAgICAgICAgICAgICAgOiI9bSIgKHYtPmNvdW50ZXIpCiAgICAgICAgICAgICAgICA6Im0i
ICh2LT5jb3VudGVyKSk7Cn0KIyAxMjAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2F0b21p
Yy5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGF0b21pY19kZWMoYXRvbWljX3QgKnYpCnsKICAg
ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIiICJkZWNsICUwIgog
ICAgICAgICAgICAgICAgOiI9bSIgKHYtPmNvdW50ZXIpCiAgICAgICAgICAgICAgICA6Im0iICh2
LT5jb3VudGVyKSk7Cn0KIyAxMzcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2F0b21pYy5o
IgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgYXRvbWljX2RlY19hbmRfdGVzdChhdG9taWNfdCAqdikK
ewogICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o
CiAgICAgICAgICAgICAgICAiIiAiZGVjbCAlMDsgc2V0ZSAlMSIKICAgICAgICAgICAgICAgIDoi
PW0iICh2LT5jb3VudGVyKSwgIj1xbSIgKGMpCiAgICAgICAgICAgICAgICA6Im0iICh2LT5jb3Vu
dGVyKSA6ICJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gYyAhPSAwOwp9CiMgMTU3ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IGF0b21p
Y19pbmNfYW5kX3Rlc3QoYXRvbWljX3QgKnYpCnsKICAgICAgICB1bnNpZ25lZCBjaGFyIGM7Cgog
ICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiIgImluY2wgJTA7
IHNldGUgJTEiCiAgICAgICAgICAgICAgICA6Ij1tIiAodi0+Y291bnRlciksICI9cW0iIChjKQog
ICAgICAgICAgICAgICAgOiJtIiAodi0+Y291bnRlcikgOiAibWVtb3J5Iik7CiAgICAgICAgcmV0
dXJuIGMgIT0gMDsKfQojIDE3OCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYXRvbWljLmgi
CnN0YXRpYyBfX2lubGluZV9fIGludCBhdG9taWNfYWRkX25lZ2F0aXZlKGludCBpLCBhdG9taWNf
dCAqdikKewogICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0
aWxlX18oCiAgICAgICAgICAgICAgICAiIiAiYWRkbCAlMiwlMDsgc2V0cyAlMSIKICAgICAgICAg
ICAgICAgIDoiPW0iICh2LT5jb3VudGVyKSwgIj1xbSIgKGMpCiAgICAgICAgICAgICAgICA6Imly
IiAoaSksICJtIiAodi0+Y291bnRlcikgOiAibWVtb3J5Iik7CiAgICAgICAgcmV0dXJuIGM7Cn0K
IyAyNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGUuaCIgMgoKCnN0cnVjdCBl
eGNlcHRpb25fdGFibGVfZW50cnk7CgoKc3RydWN0IGtlcm5lbF9zeW0KewogICAgICAgIHVuc2ln
bmVkIGxvbmcgdmFsdWU7CiAgICAgICAgY2hhciBuYW1lWzYwXTsKfTsKCnN0cnVjdCBtb2R1bGVf
c3ltYm9sCnsKICAgICAgICB1bnNpZ25lZCBsb25nIHZhbHVlOwogICAgICAgIGNvbnN0IGNoYXIg
Km5hbWU7Cn07CgpzdHJ1Y3QgbW9kdWxlX3JlZgp7CiAgICAgICAgc3RydWN0IG1vZHVsZSAqZGVw
OwogICAgICAgIHN0cnVjdCBtb2R1bGUgKnJlZjsKICAgICAgICBzdHJ1Y3QgbW9kdWxlX3JlZiAq
bmV4dF9yZWY7Cn07CgoKc3RydWN0IG1vZHVsZV9wZXJzaXN0OwoKc3RydWN0IG1vZHVsZQp7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBzaXplX29mX3N0cnVjdDsKICAgICAgICBzdHJ1Y3QgbW9kdWxl
ICpuZXh0OwogICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBz
aXplOwoKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIGF0b21pY190IHVz
ZWNvdW50OwogICAgICAgICAgICAgICAgbG9uZyBwYWQ7CiAgICAgICAgfSB1YzsKCiAgICAgICAg
dW5zaWduZWQgbG9uZyBmbGFnczsKCiAgICAgICAgdW5zaWduZWQgbnN5bXM7CiAgICAgICAgdW5z
aWduZWQgbmRlcHM7CgogICAgICAgIHN0cnVjdCBtb2R1bGVfc3ltYm9sICpzeW1zOwogICAgICAg
IHN0cnVjdCBtb2R1bGVfcmVmICpkZXBzOwogICAgICAgIHN0cnVjdCBtb2R1bGVfcmVmICpyZWZz
OwogICAgICAgIGludCAoKmluaXQpKHZvaWQpOwogICAgICAgIHZvaWQgKCpjbGVhbnVwKSh2b2lk
KTsKICAgICAgICBjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleF90YWJsZV9z
dGFydDsKICAgICAgICBjb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleF90YWJs
ZV9lbmQ7CgoKCgoKCiAgICAgICAgY29uc3Qgc3RydWN0IG1vZHVsZV9wZXJzaXN0ICpwZXJzaXN0
X3N0YXJ0OwogICAgICAgIGNvbnN0IHN0cnVjdCBtb2R1bGVfcGVyc2lzdCAqcGVyc2lzdF9lbmQ7
CiAgICAgICAgaW50ICgqY2FuX3VubG9hZCkodm9pZCk7CiAgICAgICAgaW50IHJ1bnNpemU7CiAg
ICAgICAgY29uc3QgY2hhciAqa2FsbHN5bXNfc3RhcnQ7CiAgICAgICAgY29uc3QgY2hhciAqa2Fs
bHN5bXNfZW5kOwogICAgICAgIGNvbnN0IGNoYXIgKmFyY2hkYXRhX3N0YXJ0OwogICAgICAgIGNv
bnN0IGNoYXIgKmFyY2hkYXRhX2VuZDsKICAgICAgICBjb25zdCBjaGFyICprZXJuZWxfZGF0YTsK
fTsKCnN0cnVjdCBtb2R1bGVfaW5mbwp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBhZGRyOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAg
ICAgIGxvbmcgdXNlY291bnQ7Cn07CiMgMTgzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L21vZHVsZS5oIgpleHRlcm4gdm9pZCBpbnRlcl9tb2R1bGVfcmVnaXN0ZXJfUjYyZGFkYTA1KGNv
bnN0IGNoYXIgKiwgc3RydWN0IG1vZHVsZSAqLCBjb25zdCB2b2lkICopOwpleHRlcm4gdm9pZCBp
bnRlcl9tb2R1bGVfdW5yZWdpc3Rlcl9SN2E5ZTg0NWUoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNv
bnN0IHZvaWQgKmludGVyX21vZHVsZV9nZXRfUmY2YTBjZTI0KGNvbnN0IGNoYXIgKik7CmV4dGVy
biBjb25zdCB2b2lkICppbnRlcl9tb2R1bGVfZ2V0X3JlcXVlc3RfUmI2OWY4MjZiKGNvbnN0IGNo
YXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIHZvaWQgaW50ZXJfbW9kdWxlX3B1dF9SNmI5OWY3
ZDgoY29uc3QgY2hhciAqKTsKCnN0cnVjdCBpbnRlcl9tb2R1bGVfZW50cnkgewogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgbGlzdDsKICAgICAgICBjb25zdCBjaGFyICppbV9uYW1lOwogICAgICAg
IHN0cnVjdCBtb2R1bGUgKm93bmVyOwogICAgICAgIGNvbnN0IHZvaWQgKnVzZXJkYXRhOwp9OwoK
ZXh0ZXJuIGludCB0cnlfaW5jX21vZF9jb3VudF9SZTYxMDViMjMoc3RydWN0IG1vZHVsZSAqbW9k
KTsKIyAyOTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlLmgiCmV4dGVybiBz
dHJ1Y3QgbW9kdWxlIF9fdGhpc19tb2R1bGU7CgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC92ZXJzaW9uLmgiIDEKIyAyOTggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvbW9kdWxlLmgiIDIKc3RhdGljIGNvbnN0IGNoYXIgX19tb2R1bGVfa2VybmVsX3ZlcnNpb25b
XSBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIubW9kaW5mbyIpKSkgPQoia2VybmVsX3ZlcnNpb249
IiAiMi40LjE2IjsKCnN0YXRpYyBjb25zdCBjaGFyIF9fbW9kdWxlX3VzaW5nX2NoZWNrc3Vtc1td
IF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5tb2RpbmZvIikpKSA9CiJ1c2luZ19jaGVja3N1bXM9
MSI7CiMgMTAwICI4MTM5dG9vLmMiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L2tlcm5lbC5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgva2VybmVsLmgi
CiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzMuMC4yL2luY2x1ZGUvc3RkYXJnLmgi
IDEgMwojIDQzICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMy4wLjIvaW5jbHVkZS9zdGRh
cmcuaCIgMwp0eXBlZGVmIF9fYnVpbHRpbl92YV9saXN0IF9fZ251Y192YV9saXN0OwojIDExMCAi
L3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzMuMC4yL2luY2x1ZGUvc3RkYXJnLmgiIDMKdHlw
ZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwojIDExICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L2tlcm5lbC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9saW5r
YWdlLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAx
CiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9saW5rYWdlLmgiIDIKIyAxMiAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvc3RkZGVmLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9rZXJuZWwuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMu
aCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAyCiMgNDkg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgva2VybmVsLmgiCnN0cnVjdCBjb21wbGV0aW9u
OwoKZXh0ZXJuIHN0cnVjdCBub3RpZmllcl9ibG9jayAqcGFuaWNfbm90aWZpZXJfbGlzdDsKICAg
ICAgICAgICB2b2lkIHBhbmljX1IwMTA3NWJmMChjb25zdCBjaGFyICogZm10LCAuLi4pCiAgICAg
ICAgX19hdHRyaWJ1dGVfXyAoKG5vcmV0dXJuLCBmb3JtYXQgKHByaW50ZiwgMSwgMikpKTsKIF9f
YXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2b2lkIGRvX2V4aXQobG9uZyBlcnJvcl9jb2RlKQog
ICAgICAgIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSk7CiAgICAgICAgICAgdm9pZCBjb21wbGV0
ZV9hbmRfZXhpdF9SOTVkZWZmYjcoc3RydWN0IGNvbXBsZXRpb24gKiwgbG9uZykKICAgICAgICBf
X2F0dHJpYnV0ZV9fKChub3JldHVybikpOwpleHRlcm4gaW50IGFicyhpbnQpOwpleHRlcm4gdW5z
aWduZWQgbG9uZyBzaW1wbGVfc3RydG91bF9SMjAwMDAzMjkoY29uc3QgY2hhciAqLGNoYXIgKios
dW5zaWduZWQgaW50KTsKZXh0ZXJuIGxvbmcgc2ltcGxlX3N0cnRvbF9SMGI3NDJmZDcoY29uc3Qg
Y2hhciAqLGNoYXIgKiosdW5zaWduZWQgaW50KTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBz
aW1wbGVfc3RydG91bGwoY29uc3QgY2hhciAqLGNoYXIgKiosdW5zaWduZWQgaW50KTsKZXh0ZXJu
IGxvbmcgbG9uZyBzaW1wbGVfc3RydG9sbChjb25zdCBjaGFyICosY2hhciAqKix1bnNpZ25lZCBp
bnQpOwpleHRlcm4gaW50IHNwcmludGZfUjFkMjZhYTk4KGNoYXIgKiBidWYsIGNvbnN0IGNoYXIg
KiBmbXQsIC4uLikKICAgICAgICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChwcmludGYsIDIsIDMp
KSk7CmV4dGVybiBpbnQgdnNwcmludGZfUjk1NGNiYjI2KGNoYXIgKmJ1ZiwgY29uc3QgY2hhciAq
LCB2YV9saXN0KTsKZXh0ZXJuIGludCBzbnByaW50Zl9SMDI1ZGEwNzAoY2hhciAqIGJ1Ziwgc2l6
ZV90IHNpemUsIGNvbnN0IGNoYXIgKiBmbXQsIC4uLikKICAgICAgICBfX2F0dHJpYnV0ZV9fICgo
Zm9ybWF0IChwcmludGYsIDMsIDQpKSk7CmV4dGVybiBpbnQgdnNucHJpbnRmX1I1N2E2NTA0ZShj
aGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncyk7Cgpl
eHRlcm4gaW50IHNzY2FuZl9SODU5MjA0YWYoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4u
LikKICAgICAgICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChzY2FuZiwyLDMpKSk7CmV4dGVybiBp
bnQgdnNzY2FuZl9SYjUwNDQyNzEoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHZhX2xpc3Qp
OwoKZXh0ZXJuIGludCBnZXRfb3B0aW9uX1JiMGUxMDc4MShjaGFyICoqc3RyLCBpbnQgKnBpbnQp
OwpleHRlcm4gY2hhciAqZ2V0X29wdGlvbnNfUjBmYmZmOWI5KGNoYXIgKnN0ciwgaW50IG5pbnRz
LCBpbnQgKmludHMpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIG1lbXBhcnNlX1IyM2YyZDM2
ZihjaGFyICpwdHIsIGNoYXIgKipyZXRwdHIpOwpleHRlcm4gdm9pZCBkZXZfcHJvYmVfbG9jayh2
b2lkKTsKZXh0ZXJuIHZvaWQgZGV2X3Byb2JlX3VubG9jayh2b2lkKTsKCmV4dGVybiBpbnQgc2Vz
c2lvbl9vZl9wZ3JwKGludCBwZ3JwKTsKCiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgaW50
IHByaW50a19SMWI3ZDQwNzQoY29uc3QgY2hhciAqIGZtdCwgLi4uKQogICAgICAgIF9fYXR0cmli
dXRlX18gKChmb3JtYXQgKHByaW50ZiwgMSwgMikpKTsKCmV4dGVybiBpbnQgY29uc29sZV9sb2ds
ZXZlbDsKCnN0YXRpYyBpbmxpbmUgdm9pZCBjb25zb2xlX3NpbGVudCh2b2lkKQp7CiAgICAgICAg
Y29uc29sZV9sb2dsZXZlbCA9IDA7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBjb25zb2xlX3ZlcmJv
c2Uodm9pZCkKewogICAgICAgIGlmIChjb25zb2xlX2xvZ2xldmVsKQogICAgICAgICAgICAgICAg
Y29uc29sZV9sb2dsZXZlbCA9IDE1Owp9CgpleHRlcm4gdm9pZCBidXN0X3NwaW5sb2NrcyhpbnQg
eWVzKTsKZXh0ZXJuIGludCBvb3BzX2luX3Byb2dyZXNzOwoKZXh0ZXJuIGludCB0YWludGVkOwpl
eHRlcm4gY29uc3QgY2hhciAqcHJpbnRfdGFpbnRlZCh2b2lkKTsKIyAxNjIgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgva2VybmVsLmgiCnN0cnVjdCBzeXNpbmZvIHsKICAgICAgICBsb25n
IHVwdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGxvYWRzWzNdOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgdG90YWxyYW07CiAgICAgICAgdW5zaWduZWQgbG9uZyBmcmVlcmFtOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgc2hhcmVkcmFtOwogICAgICAgIHVuc2lnbmVkIGxvbmcgYnVmZmVycmFtOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgdG90YWxzd2FwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnJl
ZXN3YXA7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcHJvY3M7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgcGFkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdG90YWxoaWdoOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgZnJlZWhpZ2g7CiAgICAgICAgdW5zaWduZWQgaW50IG1lbV91bml0OwogICAgICAgIGNo
YXIgX2ZbMjAtMipzaXplb2YobG9uZyktc2l6ZW9mKGludCldOwp9OwojIDEwMSAiODEzOXRvby5j
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb21waWxlci5oIiAxCiMgMTAy
ICI4MTM5dG9vLmMiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3BjaS5oIiAx
CiMgMjc2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3BjaS5oIgojIDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvcGNpX2lkcy5oIiAxCiMgMjc3ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L3BjaS5oIiAyCiMgMjk5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3BjaS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDMw
MCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9wY2kuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAzMDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvcGNpLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2lvcG9y
dC5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaW9wb3J0LmgiCnN0cnVj
dCByZXNvdXJjZSB7CiAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgICB1bnNpZ25lZCBs
b25nIHN0YXJ0LCBlbmQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICBzdHJ1
Y3QgcmVzb3VyY2UgKnBhcmVudCwgKnNpYmxpbmcsICpjaGlsZDsKfTsKCnN0cnVjdCByZXNvdXJj
ZV9saXN0IHsKICAgICAgICBzdHJ1Y3QgcmVzb3VyY2VfbGlzdCAqbmV4dDsKICAgICAgICBzdHJ1
Y3QgcmVzb3VyY2UgKnJlczsKICAgICAgICBzdHJ1Y3QgcGNpX2RldiAqZGV2Owp9OwojIDgzICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2lvcG9ydC5oIgpleHRlcm4gc3RydWN0IHJlc291
cmNlIGlvcG9ydF9yZXNvdXJjZV9SODY1ZWJjY2Q7CmV4dGVybiBzdHJ1Y3QgcmVzb3VyY2UgaW9t
ZW1fcmVzb3VyY2VfUjllZmVkNWFmOwoKZXh0ZXJuIGludCBnZXRfcmVzb3VyY2VfbGlzdChzdHJ1
Y3QgcmVzb3VyY2UgKiwgY2hhciAqYnVmLCBpbnQgc2l6ZSk7CgpleHRlcm4gaW50IGNoZWNrX3Jl
c291cmNlX1JkOGQ3OGFhYShzdHJ1Y3QgcmVzb3VyY2UgKnJvb3QsIHVuc2lnbmVkIGxvbmcsIHVu
c2lnbmVkIGxvbmcpOwpleHRlcm4gaW50IHJlcXVlc3RfcmVzb3VyY2VfUjQxNjg1Y2ZiKHN0cnVj
dCByZXNvdXJjZSAqcm9vdCwgc3RydWN0IHJlc291cmNlICpuZXcpOwpleHRlcm4gaW50IHJlbGVh
c2VfcmVzb3VyY2VfUjgxNGU4NDA3KHN0cnVjdCByZXNvdXJjZSAqbmV3KTsKZXh0ZXJuIGludCBh
bGxvY2F0ZV9yZXNvdXJjZV9SYTcxNTgxMmIoc3RydWN0IHJlc291cmNlICpyb290LCBzdHJ1Y3Qg
cmVzb3VyY2UgKm5ldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n
IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtaW4sIHVu
c2lnbmVkIGxvbmcgbWF4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv
bmcgYWxpZ24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKmFsaWduZikodm9p
ZCAqLCBzdHJ1Y3QgcmVzb3VyY2UgKiwgdW5zaWduZWQgbG9uZyksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCAqYWxpZ25mX2RhdGEpOwoKCgoKCmV4dGVybiBzdHJ1Y3QgcmVzb3Vy
Y2UgKiBfX3JlcXVlc3RfcmVnaW9uX1IxYTFhNGYwOShzdHJ1Y3QgcmVzb3VyY2UgKiwgdW5zaWdu
ZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBuLCBjb25zdCBjaGFyICpuYW1lKTsKCgoKCgoK
CmV4dGVybiBpbnQgX19jaGVja19yZWdpb25fUmYxZDBjZGFiKHN0cnVjdCByZXNvdXJjZSAqLCB1
bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKZXh0ZXJuIHZvaWQgX19yZWxlYXNlX3JlZ2lv
bl9SZDQ5NTAxZDQoc3RydWN0IHJlc291cmNlICosIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxv
bmcpOwoKCgoKCmV4dGVybiB2b2lkIGF1dG9pcnFfc2V0dXBfUjVhNWEyMjgwKGludCB3YWl0dGlt
ZSk7CmV4dGVybiBpbnQgYXV0b2lycV9yZXBvcnRfUjg0NTMwYzUzKGludCB3YWl0dGltZSk7CiMg
MzAyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3BjaS5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9saXN0LmgiIDEKIyAzMDMgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvcGNpLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Vycm5v
LmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9lcnJuby5oIiAxCiMgNSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9lcnJuby5oIiAyCiMgMzA0ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3BjaS5oIiAyCgoKZW51bSBwY2lfbW1hcF9zdGF0ZSB7CiAgICAg
ICAgcGNpX21tYXBfaW8sCiAgICAgICAgcGNpX21tYXBfbWVtCn07CiMgMzM2ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3BjaS5oIgpzdHJ1Y3QgcGNpX2RldiB7CiAgICAgICAgc3RydWN0
IGxpc3RfaGVhZCBnbG9iYWxfbGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGJ1c19saXN0
OwogICAgICAgIHN0cnVjdCBwY2lfYnVzICpidXM7CiAgICAgICAgc3RydWN0IHBjaV9idXMgKnN1
Ym9yZGluYXRlOwoKICAgICAgICB2b2lkICpzeXNkYXRhOwogICAgICAgIHN0cnVjdCBwcm9jX2Rp
cl9lbnRyeSAqcHJvY2VudDsKCiAgICAgICAgdW5zaWduZWQgaW50IGRldmZuOwogICAgICAgIHVu
c2lnbmVkIHNob3J0IHZlbmRvcjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkZXZpY2U7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgc3Vic3lzdGVtX3ZlbmRvcjsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBzdWJzeXN0ZW1fZGV2aWNlOwogICAgICAgIHVuc2lnbmVkIGludCBjbGFzczsKICAgICAgICB1
OCBoZHJfdHlwZTsKICAgICAgICB1OCByb21fYmFzZV9yZWc7CgogICAgICAgIHN0cnVjdCBwY2lf
ZHJpdmVyICpkcml2ZXI7CiAgICAgICAgdm9pZCAqZHJpdmVyX2RhdGE7CiAgICAgICAgdTY0IGRt
YV9tYXNrOwoKCgoKCiAgICAgICAgdTMyIGN1cnJlbnRfc3RhdGU7CgoKCgogICAgICAgIHVuc2ln
bmVkIHNob3J0IHZlbmRvcl9jb21wYXRpYmxlWzRdOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRl
dmljZV9jb21wYXRpYmxlWzRdOwoKCgoKCiAgICAgICAgdW5zaWduZWQgaW50IGlycTsKICAgICAg
ICBzdHJ1Y3QgcmVzb3VyY2UgcmVzb3VyY2VbMTJdOwogICAgICAgIHN0cnVjdCByZXNvdXJjZSBk
bWFfcmVzb3VyY2VbMl07CiAgICAgICAgc3RydWN0IHJlc291cmNlIGlycV9yZXNvdXJjZVsyXTsK
CiAgICAgICAgY2hhciBuYW1lWzgwXTsKICAgICAgICBjaGFyIHNsb3RfbmFtZVs4XTsKICAgICAg
ICBpbnQgYWN0aXZlOwogICAgICAgIGludCBybzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCByZWdz
OwoKICAgICAgICBpbnQgKCpwcmVwYXJlKShzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKICAgICAgICBp
bnQgKCphY3RpdmF0ZSkoc3RydWN0IHBjaV9kZXYgKmRldik7CiAgICAgICAgaW50ICgqZGVhY3Rp
dmF0ZSkoc3RydWN0IHBjaV9kZXYgKmRldik7Cn07CiMgNDA3ICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L3BjaS5oIgpzdHJ1Y3QgcGNpX2J1cyB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVh
ZCBub2RlOwogICAgICAgIHN0cnVjdCBwY2lfYnVzICpwYXJlbnQ7CiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBjaGlsZHJlbjsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRldmljZXM7CiAgICAg
ICAgc3RydWN0IHBjaV9kZXYgKnNlbGY7CiAgICAgICAgc3RydWN0IHJlc291cmNlICpyZXNvdXJj
ZVs0XTsKCiAgICAgICAgc3RydWN0IHBjaV9vcHMgKm9wczsKICAgICAgICB2b2lkICpzeXNkYXRh
OwogICAgICAgIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcHJvY2RpcjsKCiAgICAgICAgdW5zaWdu
ZWQgY2hhciBudW1iZXI7CiAgICAgICAgdW5zaWduZWQgY2hhciBwcmltYXJ5OwogICAgICAgIHVu
c2lnbmVkIGNoYXIgc2Vjb25kYXJ5OwogICAgICAgIHVuc2lnbmVkIGNoYXIgc3Vib3JkaW5hdGU7
CgogICAgICAgIGNoYXIgbmFtZVs0OF07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdmVuZG9yOwog
ICAgICAgIHVuc2lnbmVkIHNob3J0IGRldmljZTsKICAgICAgICB1bnNpZ25lZCBpbnQgc2VyaWFs
OwogICAgICAgIHVuc2lnbmVkIGNoYXIgcG5wdmVyOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcHJv
ZHVjdHZlcjsKICAgICAgICB1bnNpZ25lZCBjaGFyIGNoZWNrc3VtOwogICAgICAgIHVuc2lnbmVk
IGNoYXIgcGFkMTsKfTsKCgoKZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgcGNpX3Jvb3RfYnVzZXNf
UjA4MmMzMjEzOwpleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBwY2lfZGV2aWNlc19SN2E4NGIxMDI7
CiMgNDUyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3BjaS5oIgpzdHJ1Y3QgcGNpX29w
cyB7CiAgICAgICAgaW50ICgqcmVhZF9ieXRlKShzdHJ1Y3QgcGNpX2RldiAqLCBpbnQgd2hlcmUs
IHU4ICp2YWwpOwogICAgICAgIGludCAoKnJlYWRfd29yZCkoc3RydWN0IHBjaV9kZXYgKiwgaW50
IHdoZXJlLCB1MTYgKnZhbCk7CiAgICAgICAgaW50ICgqcmVhZF9kd29yZCkoc3RydWN0IHBjaV9k
ZXYgKiwgaW50IHdoZXJlLCB1MzIgKnZhbCk7CiAgICAgICAgaW50ICgqd3JpdGVfYnl0ZSkoc3Ry
dWN0IHBjaV9kZXYgKiwgaW50IHdoZXJlLCB1OCB2YWwpOwogICAgICAgIGludCAoKndyaXRlX3dv
cmQpKHN0cnVjdCBwY2lfZGV2ICosIGludCB3aGVyZSwgdTE2IHZhbCk7CiAgICAgICAgaW50ICgq
d3JpdGVfZHdvcmQpKHN0cnVjdCBwY2lfZGV2ICosIGludCB3aGVyZSwgdTMyIHZhbCk7Cn07Cgpz
dHJ1Y3QgcGJ1c19zZXRfcmFuZ2VzX2RhdGEKewogICAgICAgIGludCBmb3VuZF92Z2E7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBpb19zdGFydCwgaW9fZW5kOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
bWVtX3N0YXJ0LCBtZW1fZW5kOwp9OwoKc3RydWN0IHBjaV9kZXZpY2VfaWQgewogICAgICAgIHVu
c2lnbmVkIGludCB2ZW5kb3IsIGRldmljZTsKICAgICAgICB1bnNpZ25lZCBpbnQgc3VidmVuZG9y
LCBzdWJkZXZpY2U7CiAgICAgICAgdW5zaWduZWQgaW50IGNsYXNzLCBjbGFzc19tYXNrOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgZHJpdmVyX2RhdGE7Cn07CgpzdHJ1Y3QgcGNpX2RyaXZlciB7CiAg
ICAgICAgc3RydWN0IGxpc3RfaGVhZCBub2RlOwogICAgICAgIGNoYXIgKm5hbWU7CiAgICAgICAg
Y29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkX3RhYmxlOwogICAgICAgIGludCAoKnByb2Jl
KSAoc3RydWN0IHBjaV9kZXYgKmRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKTsK
ICAgICAgICB2b2lkICgqcmVtb3ZlKSAoc3RydWN0IHBjaV9kZXYgKmRldik7CiAgICAgICAgaW50
ICgqc2F2ZV9zdGF0ZSkgKHN0cnVjdCBwY2lfZGV2ICpkZXYsIHUzMiBzdGF0ZSk7CiAgICAgICAg
aW50ICgqc3VzcGVuZCkoc3RydWN0IHBjaV9kZXYgKmRldiwgdTMyIHN0YXRlKTsKICAgICAgICBp
bnQgKCpyZXN1bWUpIChzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKICAgICAgICBpbnQgKCplbmFibGVf
d2FrZSkgKHN0cnVjdCBwY2lfZGV2ICpkZXYsIHUzMiBzdGF0ZSwgaW50IGVuYWJsZSk7Cn07CiMg
NDk0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3BjaS5oIgp2b2lkIHBjaWJpb3NfaW5p
dCh2b2lkKTsKdm9pZCBwY2liaW9zX2ZpeHVwX2J1cyhzdHJ1Y3QgcGNpX2J1cyAqKTsKaW50IHBj
aWJpb3NfZW5hYmxlX2RldmljZShzdHJ1Y3QgcGNpX2RldiAqKTsKY2hhciAqcGNpYmlvc19zZXR1
cCAoY2hhciAqc3RyKTsKCgp2b2lkIHBjaWJpb3NfYWxpZ25fcmVzb3VyY2Uodm9pZCAqLCBzdHJ1
Y3QgcmVzb3VyY2UgKiwgdW5zaWduZWQgbG9uZyk7CnZvaWQgcGNpYmlvc191cGRhdGVfcmVzb3Vy
Y2Uoc3RydWN0IHBjaV9kZXYgKiwgc3RydWN0IHJlc291cmNlICosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IHJlc291cmNlICosIGludCk7CnZvaWQgcGNpYmlvc191cGRhdGVf
aXJxKHN0cnVjdCBwY2lfZGV2ICosIGludCBpcnEpOwp2b2lkIHBjaWJpb3NfZml4dXBfcGJ1c19y
YW5nZXMoc3RydWN0IHBjaV9idXMgKiwgc3RydWN0IHBidXNfc2V0X3Jhbmdlc19kYXRhICopOwoK
CgppbnQgcGNpYmlvc19wcmVzZW50X1I1MjBhNzViOSh2b2lkKTsKaW50IHBjaWJpb3NfcmVhZF9j
b25maWdfYnl0ZV9SZDgwMTE1ZTEgKHVuc2lnbmVkIGNoYXIgYnVzLCB1bnNpZ25lZCBjaGFyIGRl
dl9mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciB3aGVyZSwg
dW5zaWduZWQgY2hhciAqdmFsKTsKaW50IHBjaWJpb3NfcmVhZF9jb25maWdfd29yZF9SYWE5ZWZm
ZDcgKHVuc2lnbmVkIGNoYXIgYnVzLCB1bnNpZ25lZCBjaGFyIGRldl9mbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciB3aGVyZSwgdW5zaWduZWQgc2hvcnQgKnZh
bCk7CmludCBwY2liaW9zX3JlYWRfY29uZmlnX2R3b3JkX1IzOGFlNjY4OSAodW5zaWduZWQgY2hh
ciBidXMsIHVuc2lnbmVkIGNoYXIgZGV2X2ZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciB3aGVyZSwgdW5zaWduZWQgaW50ICp2YWwpOwppbnQgcGNpYmlvc193
cml0ZV9jb25maWdfYnl0ZV9SNzE5ODU2ZWUgKHVuc2lnbmVkIGNoYXIgYnVzLCB1bnNpZ25lZCBj
aGFyIGRldl9mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIg
d2hlcmUsIHVuc2lnbmVkIGNoYXIgdmFsKTsKaW50IHBjaWJpb3Nfd3JpdGVfY29uZmlnX3dvcmRf
UjRmMWMyZTMzICh1bnNpZ25lZCBjaGFyIGJ1cywgdW5zaWduZWQgY2hhciBkZXZfZm4sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHdoZXJlLCB1bnNpZ25lZCBz
aG9ydCB2YWwpOwppbnQgcGNpYmlvc193cml0ZV9jb25maWdfZHdvcmRfUjgxYjRmNDY1ICh1bnNp
Z25lZCBjaGFyIGJ1cywgdW5zaWduZWQgY2hhciBkZXZfZm4sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciB3aGVyZSwgdW5zaWduZWQgaW50IHZhbCk7CmludCBw
Y2liaW9zX2ZpbmRfY2xhc3NfUmVmMzMzZjdiICh1bnNpZ25lZCBpbnQgY2xhc3NfY29kZSwgdW5z
aWduZWQgc2hvcnQgaW5kZXgsIHVuc2lnbmVkIGNoYXIgKmJ1cywgdW5zaWduZWQgY2hhciAqZGV2
X2ZuKTsKaW50IHBjaWJpb3NfZmluZF9kZXZpY2VfUjk3ZDQ5YzRkICh1bnNpZ25lZCBzaG9ydCB2
ZW5kb3IsIHVuc2lnbmVkIHNob3J0IGRldl9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIHNob3J0IGluZGV4LCB1bnNpZ25lZCBjaGFyICpidXMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyICpkZXZfZm4pOwoKCgp2b2lkIHBjaV9pbml0KHZvaWQpOwpp
bnQgcGNpX2J1c19leGlzdHMoY29uc3Qgc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwgaW50IG5yKTsK
c3RydWN0IHBjaV9idXMgKnBjaV9zY2FuX2J1cyhpbnQgYnVzLCBzdHJ1Y3QgcGNpX29wcyAqb3Bz
LCB2b2lkICpzeXNkYXRhKTsKc3RydWN0IHBjaV9idXMgKnBjaV9hbGxvY19wcmltYXJ5X2J1cyhp
bnQgYnVzKTsKc3RydWN0IHBjaV9kZXYgKnBjaV9zY2FuX3Nsb3RfUjA0MGQwNzQzKHN0cnVjdCBw
Y2lfZGV2ICp0ZW1wKTsKaW50IHBjaV9wcm9jX2F0dGFjaF9kZXZpY2VfUmQwYWQxMzM1KHN0cnVj
dCBwY2lfZGV2ICpkZXYpOwppbnQgcGNpX3Byb2NfZGV0YWNoX2RldmljZV9SMjE3ZjAwOTgoc3Ry
dWN0IHBjaV9kZXYgKmRldik7CmludCBwY2lfcHJvY19hdHRhY2hfYnVzX1I3MTk3NWEzMihzdHJ1
Y3QgcGNpX2J1cyAqYnVzKTsKaW50IHBjaV9wcm9jX2RldGFjaF9idXNfUjk5OTY2MGRjKHN0cnVj
dCBwY2lfYnVzICpidXMpOwp2b2lkIHBjaV9uYW1lX2RldmljZShzdHJ1Y3QgcGNpX2RldiAqZGV2
KTsKY2hhciAqcGNpX2NsYXNzX25hbWUodTMyIGNsYXNzKTsKdm9pZCBwY2lfcmVhZF9icmlkZ2Vf
YmFzZXMoc3RydWN0IHBjaV9idXMgKmNoaWxkKTsKc3RydWN0IHJlc291cmNlICpwY2lfZmluZF9w
YXJlbnRfcmVzb3VyY2VfUjVjOGRhYjg3KGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpkZXYsIHN0cnVj
dCByZXNvdXJjZSAqcmVzKTsKaW50IHBjaV9zZXR1cF9kZXZpY2VfUjAyYzQ5NDBmKHN0cnVjdCBw
Y2lfZGV2ICpkZXYpOwppbnQgcGNpX2dldF9pbnRlcnJ1cHRfcGluKHN0cnVjdCBwY2lfZGV2ICpk
ZXYsIHN0cnVjdCBwY2lfZGV2ICoqYnJpZGdlKTsKCgoKc3RydWN0IHBjaV9kZXYgKnBjaV9maW5k
X2RldmljZV9SOGI0ZDU4MTYgKHVuc2lnbmVkIGludCB2ZW5kb3IsIHVuc2lnbmVkIGludCBkZXZp
Y2UsIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpmcm9tKTsKc3RydWN0IHBjaV9kZXYgKnBjaV9maW5k
X3N1YnN5c19SZjllZDI0NGIgKHVuc2lnbmVkIGludCB2ZW5kb3IsIHVuc2lnbmVkIGludCBkZXZp
Y2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzc192ZW5k
b3IsIHVuc2lnbmVkIGludCBzc19kZXZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpmcm9tKTsKc3RydWN0IHBjaV9kZXYgKnBjaV9maW5k
X2NsYXNzX1I3OGQxMDljYiAodW5zaWduZWQgaW50IGNsYXNzLCBjb25zdCBzdHJ1Y3QgcGNpX2Rl
diAqZnJvbSk7CnN0cnVjdCBwY2lfZGV2ICpwY2lfZmluZF9zbG90X1I1NmVhOWJlMSAodW5zaWdu
ZWQgaW50IGJ1cywgdW5zaWduZWQgaW50IGRldmZuKTsKaW50IHBjaV9maW5kX2NhcGFiaWxpdHlf
UjI3ZDIwY2QzIChzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgY2FwKTsKCmludCBwY2lfcmVhZF9j
b25maWdfYnl0ZV9SM2JkMzhmNzQoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHdoZXJlLCB1OCAq
dmFsKTsKaW50IHBjaV9yZWFkX2NvbmZpZ193b3JkX1IwMTNmNGVlNChzdHJ1Y3QgcGNpX2RldiAq
ZGV2LCBpbnQgd2hlcmUsIHUxNiAqdmFsKTsKaW50IHBjaV9yZWFkX2NvbmZpZ19kd29yZF9SMTM3
MmFlNGUoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHdoZXJlLCB1MzIgKnZhbCk7CmludCBwY2lf
d3JpdGVfY29uZmlnX2J5dGVfUmMxOWU4MjQyKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCB3aGVy
ZSwgdTggdmFsKTsKaW50IHBjaV93cml0ZV9jb25maWdfd29yZF9SYzdjM2UwYTkoc3RydWN0IHBj
aV9kZXYgKmRldiwgaW50IHdoZXJlLCB1MTYgdmFsKTsKaW50IHBjaV93cml0ZV9jb25maWdfZHdv
cmRfUmFmNGFlMjQ0KHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCB3aGVyZSwgdTMyIHZhbCk7Cgpp
bnQgcGNpX2VuYWJsZV9kZXZpY2VfUjk0NGI1ZTQyKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwp2b2lk
IHBjaV9kaXNhYmxlX2RldmljZV9SMDk2Yjk5YTYoc3RydWN0IHBjaV9kZXYgKmRldik7CnZvaWQg
cGNpX3NldF9tYXN0ZXJfUjg3YTAxOTE4KHN0cnVjdCBwY2lfZGV2ICpkZXYpOwppbnQgcGNpX3Nl
dF9kbWFfbWFza19SMGY0YTI2MDQoc3RydWN0IHBjaV9kZXYgKmRldiwgdTY0IG1hc2spOwppbnQg
cGNpX2RhY19zZXRfZG1hX21hc2tfUjg5OGFlN2MzKHN0cnVjdCBwY2lfZGV2ICpkZXYsIHU2NCBt
YXNrKTsKaW50IHBjaV9hc3NpZ25fcmVzb3VyY2VfUmI3MWNhYmU5KHN0cnVjdCBwY2lfZGV2ICpk
ZXYsIGludCBpKTsKCgppbnQgcGNpX3NhdmVfc3RhdGVfUmI1YzlkZGVmKHN0cnVjdCBwY2lfZGV2
ICpkZXYsIHUzMiAqYnVmZmVyKTsKaW50IHBjaV9yZXN0b3JlX3N0YXRlX1JlYmI5NDdmMyhzdHJ1
Y3QgcGNpX2RldiAqZGV2LCB1MzIgKmJ1ZmZlcik7CmludCBwY2lfc2V0X3Bvd2VyX3N0YXRlX1Jl
NzIzZGMxYyhzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgc3RhdGUpOwppbnQgcGNpX2VuYWJsZV93
YWtlX1I0ZDI1YTcwZihzdHJ1Y3QgcGNpX2RldiAqZGV2LCB1MzIgc3RhdGUsIGludCBlbmFibGUp
OwoKCgppbnQgcGNpX2NsYWltX3Jlc291cmNlKHN0cnVjdCBwY2lfZGV2ICosIGludCk7CnZvaWQg
cGNpX2Fzc2lnbl91bmFzc2lnbmVkX3Jlc291cmNlcyh2b2lkKTsKdm9pZCBwZGV2X2VuYWJsZV9k
ZXZpY2Uoc3RydWN0IHBjaV9kZXYgKik7CnZvaWQgcGRldl9zb3J0X3Jlc291cmNlcyhzdHJ1Y3Qg
cGNpX2RldiAqLCBzdHJ1Y3QgcmVzb3VyY2VfbGlzdCAqLCB1MzIpOwp1bnNpZ25lZCBsb25nIHBj
aV9icmlkZ2VfY2hlY2tfaW8oc3RydWN0IHBjaV9kZXYgKik7CnZvaWQgcGNpX2ZpeHVwX2lycXMo
dTggKCopKHN0cnVjdCBwY2lfZGV2ICosIHU4ICopLAogICAgICAgICAgICAgICAgICAgIGludCAo
Kikoc3RydWN0IHBjaV9kZXYgKiwgdTgsIHU4KSk7CgppbnQgcGNpX3JlcXVlc3RfcmVnaW9uc19S
ZmMwOTE4OWMoc3RydWN0IHBjaV9kZXYgKiwgY2hhciAqKTsKdm9pZCBwY2lfcmVsZWFzZV9yZWdp
b25zX1JkOTE3ZTM5ZShzdHJ1Y3QgcGNpX2RldiAqKTsKCgppbnQgcGNpX3JlZ2lzdGVyX2RyaXZl
cl9SNDY1YWE0NmMoc3RydWN0IHBjaV9kcml2ZXIgKik7CnZvaWQgcGNpX3VucmVnaXN0ZXJfZHJp
dmVyX1IyNjcxM2I4NihzdHJ1Y3QgcGNpX2RyaXZlciAqKTsKdm9pZCBwY2lfaW5zZXJ0X2Rldmlj
ZV9SNTNjNDMzYTYoc3RydWN0IHBjaV9kZXYgKiwgc3RydWN0IHBjaV9idXMgKik7CnZvaWQgcGNp
X3JlbW92ZV9kZXZpY2VfUmFjZjg1ZjAxKHN0cnVjdCBwY2lfZGV2ICopOwpzdHJ1Y3QgcGNpX2Ry
aXZlciAqcGNpX2Rldl9kcml2ZXJfUjkwOTY1YTg5KGNvbnN0IHN0cnVjdCBwY2lfZGV2ICopOwpj
b25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqcGNpX21hdGNoX2RldmljZV9SYmMwZmZhZjAoY29u
c3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkcywgY29uc3Qgc3RydWN0IHBjaV9kZXYgKmRldik7
CnZvaWQgcGNpX2Fubm91bmNlX2RldmljZV90b19kcml2ZXJzX1I4ZjJjOGNjMyhzdHJ1Y3QgcGNp
X2RldiAqKTsKdW5zaWduZWQgaW50IHBjaV9kb19zY2FuX2J1c19SMmI0MGFjODAoc3RydWN0IHBj
aV9idXMgKmJ1cyk7CnN0cnVjdCBwY2lfYnVzICogcGNpX2FkZF9uZXdfYnVzX1I3MGRiY2Q5Yihz
dHJ1Y3QgcGNpX2J1cyAqcGFyZW50LCBzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgYnVzbnIpOwoK
CnN0cnVjdCBwY2lfcG9vbCAqcGNpX3Bvb2xfY3JlYXRlX1I3ZjY3OTFlYyAoY29uc3QgY2hhciAq
bmFtZSwgc3RydWN0IHBjaV9kZXYgKmRldiwKICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLCBz
aXplX3QgYWxpZ24sIHNpemVfdCBhbGxvY2F0aW9uLCBpbnQgZmxhZ3MpOwp2b2lkIHBjaV9wb29s
X2Rlc3Ryb3lfUmU2YmRhZDk1IChzdHJ1Y3QgcGNpX3Bvb2wgKnBvb2wpOwoKdm9pZCAqcGNpX3Bv
b2xfYWxsb2NfUmIyNWI4YTA3IChzdHJ1Y3QgcGNpX3Bvb2wgKnBvb2wsIGludCBmbGFncywgZG1h
X2FkZHJfdCAqaGFuZGxlKTsKdm9pZCBwY2lfcG9vbF9mcmVlX1IyNzI4ZTk2ZCAoc3RydWN0IHBj
aV9wb29sICpwb29sLCB2b2lkICp2YWRkciwgZG1hX2FkZHJfdCBhZGRyKTsKCgoKCgojIDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BjaS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNt
L3BjaS5oIiAyCiMgMTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BjaS5oIgpleHRlcm4g
dW5zaWduZWQgaW50IHBjaWJpb3NfYXNzaWduX2FsbF9idXNzZXModm9pZCk7CgoKCgpleHRlcm4g
dW5zaWduZWQgbG9uZyBwY2lfbWVtX3N0YXJ0X1IzZGExNzFmOTsKCgoKdm9pZCBwY2liaW9zX3Nl
dF9tYXN0ZXIoc3RydWN0IHBjaV9kZXYgKmRldik7CnZvaWQgcGNpYmlvc19wZW5hbGl6ZV9pc2Ff
aXJxX1I1MjExYzhiZihpbnQgaXJxKTsKc3RydWN0IGlycV9yb3V0aW5nX3RhYmxlICpwY2liaW9z
X2dldF9pcnFfcm91dGluZ190YWJsZV9SMjk0YTc2ZTUodm9pZCk7CmludCBwY2liaW9zX3NldF9p
cnFfcm91dGluZ19SZTMxN2Y1MTgoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHBpbiwgaW50IGly
cSk7CgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAz
MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGNpLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L3NsYWIuaCIgMQojIDEyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L3NsYWIuaCIKdHlwZWRlZiBzdHJ1Y3Qga21lbV9jYWNoZV9zIGttZW1fY2FjaGVfdDsKCiMg
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tbS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9hc20vcGFyYW0uaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2No
ZWQuaCIgMgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZXZlbnRfUjdiMTZjMzQ0OwoKIyAxICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgOSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9iaW5mbXRzLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3B0cmFj
ZS5oIiAxCiMgMjQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcHRyYWNlLmgiCiMgMSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcHRyYWNlLmgiIDEKIyAyNiAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9hc20vcHRyYWNlLmgiCnN0cnVjdCBwdF9yZWdzIHsKICAgICAgICBsb25nIGVi
eDsKICAgICAgICBsb25nIGVjeDsKICAgICAgICBsb25nIGVkeDsKICAgICAgICBsb25nIGVzaTsK
ICAgICAgICBsb25nIGVkaTsKICAgICAgICBsb25nIGVicDsKICAgICAgICBsb25nIGVheDsKICAg
ICAgICBpbnQgeGRzOwogICAgICAgIGludCB4ZXM7CiAgICAgICAgbG9uZyBvcmlnX2VheDsKICAg
ICAgICBsb25nIGVpcDsKICAgICAgICBpbnQgeGNzOwogICAgICAgIGxvbmcgZWZsYWdzOwogICAg
ICAgIGxvbmcgZXNwOwogICAgICAgIGludCB4c3M7Cn07CiMgNjAgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvYXNtL3B0cmFjZS5oIgpleHRlcm4gdm9pZCBzaG93X3JlZ3Moc3RydWN0IHB0X3JlZ3Mg
Kik7CiMgMjUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcHRyYWNlLmgiIDIKIyA1ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIiAxCiMgMTYgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvdHlwZXMuaCIgMQojIDE3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NhcGFiaWxp
dHkuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMQojIDkgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
ZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbGlua2FnZS5oIiAxCiMg
MTEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvbGltaXRzLmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC93YWl0Lmgi
IDEKIyAxMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC93YWl0LmgiCiMgMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L3dhaXQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
bGlzdC5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvd2FpdC5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zdGRkZWYuaCIgMQojIDE2ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvc3BpbmxvY2suaCIgMQojIDE3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3dhaXQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEK
IyAxOCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC93YWl0LmgiIDIKCiMgMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9hc20vcGFnZS5oIiAxCiMgMjAgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvd2FpdC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vz
c29yLmgiIDEKIyAyMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC93YWl0LmgiIDIKIyAz
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC93YWl0LmgiCnN0cnVjdCBfX3dhaXRfcXVl
dWUgewogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKCiAgICAgICAgc3RydWN0IHRhc2tfc3Ry
dWN0ICogdGFzazsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHRhc2tfbGlzdDsKCgoKCn07CnR5
cGVkZWYgc3RydWN0IF9fd2FpdF9xdWV1ZSB3YWl0X3F1ZXVlX3Q7CiMgNzcgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvd2FpdC5oIgpzdHJ1Y3QgX193YWl0X3F1ZXVlX2hlYWQgewogICAg
ICAgIHNwaW5sb2NrX3QgbG9jazsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHRhc2tfbGlzdDsK
CgoKCn07CnR5cGVkZWYgc3RydWN0IF9fd2FpdF9xdWV1ZV9oZWFkIHdhaXRfcXVldWVfaGVhZF90
OwojIDE1NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC93YWl0LmgiCnN0YXRpYyBpbmxp
bmUgdm9pZCBpbml0X3dhaXRxdWV1ZV9oZWFkKHdhaXRfcXVldWVfaGVhZF90ICpxKQp7CgoKCgog
ICAgICAgIHEtPmxvY2sgPSAoc3BpbmxvY2tfdCkgeyB9OwogICAgICAgIGRvIHsgKCZxLT50YXNr
X2xpc3QpLT5uZXh0ID0gKCZxLT50YXNrX2xpc3QpOyAoJnEtPnRhc2tfbGlzdCktPnByZXYgPSAo
JnEtPnRhc2tfbGlzdCk7IH0gd2hpbGUgKDApOwoKCgoKfQoKc3RhdGljIGlubGluZSB2b2lkIGlu
aXRfd2FpdHF1ZXVlX2VudHJ5KHdhaXRfcXVldWVfdCAqcSwgc3RydWN0IHRhc2tfc3RydWN0ICpw
KQp7CgoKCgogICAgICAgIHEtPmZsYWdzID0gMDsKICAgICAgICBxLT50YXNrID0gcDsKCgoKfQoK
c3RhdGljIGlubGluZSBpbnQgd2FpdHF1ZXVlX2FjdGl2ZSh3YWl0X3F1ZXVlX2hlYWRfdCAqcSkK
ewoKCgoKCgogICAgICAgIHJldHVybiAhbGlzdF9lbXB0eSgmcS0+dGFza19saXN0KTsKfQoKc3Rh
dGljIGlubGluZSB2b2lkIF9fYWRkX3dhaXRfcXVldWUod2FpdF9xdWV1ZV9oZWFkX3QgKmhlYWQs
IHdhaXRfcXVldWVfdCAqbmV3KQp7CiMgMjAzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3dhaXQuaCIKICAgICAgICBsaXN0X2FkZCgmbmV3LT50YXNrX2xpc3QsICZoZWFkLT50YXNrX2xp
c3QpOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX19hZGRfd2FpdF9xdWV1ZV90YWlsKHdhaXRf
cXVldWVfaGVhZF90ICpoZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3YWl0X3F1ZXVlX3QgKm5ldykKewojIDIyMCAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC93YWl0LmgiCiAgICAgICAgbGlzdF9hZGRfdGFpbCgmbmV3LT50YXNrX2xpc3Qs
ICZoZWFkLT50YXNrX2xpc3QpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgX19yZW1vdmVfd2FpdF9x
dWV1ZSh3YWl0X3F1ZXVlX2hlYWRfdCAqaGVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0X3F1ZXVlX3QgKm9sZCkKewoKCgoKCiAg
ICAgICAgbGlzdF9kZWwoJm9sZC0+dGFza19saXN0KTsKfQojIDEzICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R5
cGVzLmgiIDEKIyAxNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC92ZnMuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvYXNtL3N0YXRmcy5oIiAxCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L3R5cGVzLmgiIDEKIyA3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zdGF0
ZnMuaCIgMgoKdHlwZWRlZiBfX2tlcm5lbF9mc2lkX3QgZnNpZF90OwoKCgpzdHJ1Y3Qgc3RhdGZz
IHsKICAgICAgICBsb25nIGZfdHlwZTsKICAgICAgICBsb25nIGZfYnNpemU7CiAgICAgICAgbG9u
ZyBmX2Jsb2NrczsKICAgICAgICBsb25nIGZfYmZyZWU7CiAgICAgICAgbG9uZyBmX2JhdmFpbDsK
ICAgICAgICBsb25nIGZfZmlsZXM7CiAgICAgICAgbG9uZyBmX2ZmcmVlOwogICAgICAgIF9fa2Vy
bmVsX2ZzaWRfdCBmX2ZzaWQ7CiAgICAgICAgbG9uZyBmX25hbWVsZW47CiAgICAgICAgbG9uZyBm
X3NwYXJlWzZdOwp9OwojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdmZzLmgiIDIK
IyAxNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9uZXQuaCIgMQojIDIxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L25ldC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgi
IDEKIyAyMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uZXQuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc29ja2V0LmgiIDEKCgoKCgojIDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvYXNtL3NvY2tldC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9hc20vc29ja2lvcy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc29ja2V0
LmgiIDIKIyA3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zb2NraW9zLmgiIDEKIyAyMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9zb2NraW9zLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9hc20vc29ja2lvcy5oIiAxCiMgMjIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc29j
a2lvcy5oIiAyCiMgOCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zb2NrZXQuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdWlvLmgiIDEKCgoKIyAxICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L3Vpby5oIiAyCiMgMTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdWlv
LmgiCnN0cnVjdCBpb3ZlYwp7CiAgICAgICAgdm9pZCAqaW92X2Jhc2U7CiAgICAgICAgX19rZXJu
ZWxfc2l6ZV90IGlvdl9sZW47Cn07CiMgOSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9z
b2NrZXQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQoj
IDEwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIiAyCgp0eXBlZGVmIHVu
c2lnbmVkIHNob3J0IHNhX2ZhbWlseV90OwoKCgoKCnN0cnVjdCBzb2NrYWRkciB7CiAgICAgICAg
c2FfZmFtaWx5X3Qgc2FfZmFtaWx5OwogICAgICAgIGNoYXIgc2FfZGF0YVsxNF07Cn07CgpzdHJ1
Y3QgbGluZ2VyIHsKICAgICAgICBpbnQgbF9vbm9mZjsKICAgICAgICBpbnQgbF9saW5nZXI7Cn07
CgoKCgoKCgpzdHJ1Y3QgbXNnaGRyIHsKICAgICAgICB2b2lkICogbXNnX25hbWU7CiAgICAgICAg
aW50IG1zZ19uYW1lbGVuOwogICAgICAgIHN0cnVjdCBpb3ZlYyAqIG1zZ19pb3Y7CiAgICAgICAg
X19rZXJuZWxfc2l6ZV90IG1zZ19pb3ZsZW47CiAgICAgICAgdm9pZCAqIG1zZ19jb250cm9sOwog
ICAgICAgIF9fa2VybmVsX3NpemVfdCBtc2dfY29udHJvbGxlbjsKICAgICAgICB1bnNpZ25lZCBt
c2dfZmxhZ3M7Cn07CgoKCgoKCgpzdHJ1Y3QgY21zZ2hkciB7CiAgICAgICAgX19rZXJuZWxfc2l6
ZV90IGNtc2dfbGVuOwogICAgICAgIGludCBjbXNnX2xldmVsOwogICAgICAgIGludCBjbXNnX3R5
cGU7Cn07CiMgMTAyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIgpzdGF0
aWMgaW5saW5lIHN0cnVjdCBjbXNnaGRyICogX19jbXNnX254dGhkcih2b2lkICpfX2N0bCwgX19r
ZXJuZWxfc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3QgY21zZ2hkciAqX19jbXNnKQp7CiAgICAgICAgc3RydWN0IGNtc2do
ZHIgKiBfX3B0cjsKCiAgICAgICAgX19wdHIgPSAoc3RydWN0IGNtc2doZHIqKSgoKHVuc2lnbmVk
IGNoYXIgKikgX19jbXNnKSArICggKChfX2Ntc2ctPmNtc2dfbGVuKStzaXplb2YobG9uZyktMSkg
JiB+KHNpemVvZihsb25nKS0xKSApKTsKICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpKChjaGFy
KikoX19wdHIrMSkgLSAoY2hhciAqKSBfX2N0bCkgPiBfX3NpemUpCiAgICAgICAgICAgICAgICBy
ZXR1cm4gKHN0cnVjdCBjbXNnaGRyICopMDsKCiAgICAgICAgcmV0dXJuIF9fcHRyOwp9CgpzdGF0
aWMgaW5saW5lIHN0cnVjdCBjbXNnaGRyICogY21zZ19ueHRoZHIgKHN0cnVjdCBtc2doZHIgKl9f
bXNnLCBzdHJ1Y3QgY21zZ2hkciAqX19jbXNnKQp7CiAgICAgICAgcmV0dXJuIF9fY21zZ19ueHRo
ZHIoX19tc2ctPm1zZ19jb250cm9sLCBfX21zZy0+bXNnX2NvbnRyb2xsZW4sIF9fY21zZyk7Cn0K
CgoKCgoKCnN0cnVjdCB1Y3JlZCB7CiAgICAgICAgX191MzIgcGlkOwogICAgICAgIF9fdTMyIHVp
ZDsKICAgICAgICBfX3UzMiBnaWQ7Cn07CiMgMjQ1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L3NvY2tldC5oIgpleHRlcm4gaW50IG1lbWNweV9mcm9taW92ZWNfUjlmYjNkZDMwKHVuc2ln
bmVkIGNoYXIgKmtkYXRhLCBzdHJ1Y3QgaW92ZWMgKmlvdiwgaW50IGxlbik7CmV4dGVybiBpbnQg
bWVtY3B5X2Zyb21pb3ZlY2VuZF9SNmU0NDBiNTgodW5zaWduZWQgY2hhciAqa2RhdGEsIHN0cnVj
dCBpb3ZlYyAqaW92LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvZmZzZXQs
IGludCBsZW4pOwpleHRlcm4gaW50IGNzdW1fcGFydGlhbF9jb3B5X2Zyb21pb3ZlY2VuZF9SMDI4
NzY2NTcodW5zaWduZWQgY2hhciAqa2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBpb3ZlYyAqaW92LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGVuLCBpbnQgKmNzdW1wKTsKCmV4dGVybiBpbnQg
dmVyaWZ5X2lvdmVjKHN0cnVjdCBtc2doZHIgKm0sIHN0cnVjdCBpb3ZlYyAqaW92LCBjaGFyICph
ZGRyZXNzLCBpbnQgbW9kZSk7CmV4dGVybiBpbnQgbWVtY3B5X3RvaW92ZWNfUjljZWIxNjNjKHN0
cnVjdCBpb3ZlYyAqdiwgdW5zaWduZWQgY2hhciAqa2RhdGEsIGludCBsZW4pOwpleHRlcm4gdm9p
ZCBtZW1jcHlfdG9rZXJuZWxpb3ZlY19SYzEyNWUwODgoc3RydWN0IGlvdmVjICppb3YsIHVuc2ln
bmVkIGNoYXIgKmtkYXRhLCBpbnQgbGVuKTsKZXh0ZXJuIGludCBtb3ZlX2FkZHJfdG9fdXNlcl9S
MzhjOTkwOTModm9pZCAqa2FkZHIsIGludCBrbGVuLCB2b2lkICp1YWRkciwgaW50ICp1bGVuKTsK
ZXh0ZXJuIGludCBtb3ZlX2FkZHJfdG9fa2VybmVsX1I1ZGZhNDY5Nih2b2lkICp1YWRkciwgaW50
IHVsZW4sIHZvaWQgKmthZGRyKTsKZXh0ZXJuIGludCBwdXRfY21zZ19SZjM5YmY0ZDkoc3RydWN0
IG1zZ2hkciosIGludCBsZXZlbCwgaW50IHR5cGUsIGludCBsZW4sIHZvaWQgKmRhdGEpOwojIDIz
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25ldC5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC93YWl0LmgiIDEKIyAyNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9uZXQuaCIgMgoKc3RydWN0IHBvbGxfdGFibGVfc3RydWN0OwojIDQ5ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L25ldC5oIgp0eXBlZGVmIGVudW0gewogIFNTX0ZSRUUgPSAwLAog
IFNTX1VOQ09OTkVDVEVELAogIFNTX0NPTk5FQ1RJTkcsCiAgU1NfQ09OTkVDVEVELAogIFNTX0RJ
U0NPTk5FQ1RJTkcKfSBzb2NrZXRfc3RhdGU7CiMgNjUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvbmV0LmgiCnN0cnVjdCBzb2NrZXQKewogICAgICAgIHNvY2tldF9zdGF0ZSBzdGF0ZTsK
CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICBzdHJ1Y3QgcHJvdG9fb3BzICpv
cHM7CiAgICAgICAgc3RydWN0IGlub2RlICppbm9kZTsKICAgICAgICBzdHJ1Y3QgZmFzeW5jX3N0
cnVjdCAqZmFzeW5jX2xpc3Q7CiAgICAgICAgc3RydWN0IGZpbGUgKmZpbGU7CiAgICAgICAgc3Ry
dWN0IHNvY2sgKnNrOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHdhaXQ7CgogICAgICAgIHNo
b3J0IHR5cGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBwYXNzY3JlZDsKfTsKCgoKc3RydWN0IHNj
bV9jb29raWU7CnN0cnVjdCB2bV9hcmVhX3N0cnVjdDsKc3RydWN0IHBhZ2U7CgpzdHJ1Y3QgcHJv
dG9fb3BzIHsKICBpbnQgZmFtaWx5OwoKICBpbnQgKCpyZWxlYXNlKSAoc3RydWN0IHNvY2tldCAq
c29jayk7CiAgaW50ICgqYmluZCkgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRk
ciAqdW15YWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb2NrYWRkcl9sZW4pOwog
IGludCAoKmNvbm5lY3QpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVz
ZXJ2YWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb2NrYWRkcl9sZW4sIGludCBm
bGFncyk7CiAgaW50ICgqc29ja2V0cGFpcikgKHN0cnVjdCBzb2NrZXQgKnNvY2sxLCBzdHJ1Y3Qg
c29ja2V0ICpzb2NrMik7CiAgaW50ICgqYWNjZXB0KSAoc3RydWN0IHNvY2tldCAqc29jaywgc3Ry
dWN0IHNvY2tldCAqbmV3c29jaywKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncyk7
CiAgaW50ICgqZ2V0bmFtZV9SN2M2MGQ2NmUpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qg
c29ja2FkZHIgKnVhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50ICp1c29ja2FkZHJf
bGVuLCBpbnQgcGVlcik7CiAgdW5zaWduZWQgaW50ICgqcG9sbCkgKHN0cnVjdCBmaWxlICpmaWxl
LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgcG9sbF90YWJsZV9zdHJ1Y3QgKndhaXQpOwog
IGludCAoKmlvY3RsKSAoc3RydWN0IHNvY2tldCAqc29jaywgdW5zaWduZWQgaW50IGNtZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYXJnKTsKICBpbnQgKCpsaXN0ZW4p
IChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGVuKTsKICBpbnQgKCpzaHV0ZG93bikgKHN0cnVj
dCBzb2NrZXQgKnNvY2ssIGludCBmbGFncyk7CiAgaW50ICgqc2V0c29ja29wdCkgKHN0cnVjdCBz
b2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyICpvcHR2YWwsIGludCBvcHRsZW4pOwogIGludCAoKmdldHNvY2tvcHQpIChzdHJ1
Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqb3B0dmFsLCBpbnQgKm9wdGxlbik7CiAgaW50ICgqc2VuZG1zZykgKHN0
cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm0sIGludCB0b3RhbF9sZW4sIHN0cnVj
dCBzY21fY29va2llICpzY20pOwogIGludCAoKnJlY3Ztc2cpIChzdHJ1Y3Qgc29ja2V0ICpzb2Nr
LCBzdHJ1Y3QgbXNnaGRyICptLCBpbnQgdG90YWxfbGVuLCBpbnQgZmxhZ3MsIHN0cnVjdCBzY21f
Y29va2llICpzY20pOwogIGludCAoKm1tYXApIChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHNv
Y2tldCAqc29jaywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogdm1hKTsKICBzc2l6ZV90ICgqc2Vu
ZHBhZ2UpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50IG9mZnNl
dCwgc2l6ZV90IHNpemUsIGludCBmbGFncyk7Cn07CgpzdHJ1Y3QgbmV0X3Byb3RvX2ZhbWlseQp7
CiAgICAgICAgaW50IGZhbWlseTsKICAgICAgICBpbnQgKCpjcmVhdGUpKHN0cnVjdCBzb2NrZXQg
KnNvY2ssIGludCBwcm90b2NvbCk7CgoKICAgICAgICBzaG9ydCBhdXRoZW50aWNhdGlvbjsKICAg
ICAgICBzaG9ydCBlbmNyeXB0aW9uOwogICAgICAgIHNob3J0IGVuY3J5cHRfbmV0Owp9OwoKc3Ry
dWN0IG5ldF9wcm90bwp7CiAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgICB2b2lkICgq
aW5pdF9mdW5jKShzdHJ1Y3QgbmV0X3Byb3RvICopOwp9OwoKZXh0ZXJuIGludCBzb2NrX3dha2Vf
YXN5bmNfUmEwZTY3M2FjKHN0cnVjdCBzb2NrZXQgKnNrLCBpbnQgaG93LCBpbnQgYmFuZCk7CmV4
dGVybiBpbnQgc29ja19yZWdpc3Rlcl9SNTVhOWFjY2Ioc3RydWN0IG5ldF9wcm90b19mYW1pbHkg
KmZhbSk7CmV4dGVybiBpbnQgc29ja191bnJlZ2lzdGVyX1IyMzk0YTA2MihpbnQgZmFtaWx5KTsK
ZXh0ZXJuIHN0cnVjdCBzb2NrZXQgKnNvY2tfYWxsb2NfUjY5MGJlMTAxKHZvaWQpOwpleHRlcm4g
aW50IHNvY2tfY3JlYXRlX1IzYzhmMzc5MChpbnQgZmFtaWx5LCBpbnQgdHlwZSwgaW50IHByb3Rv
LCBzdHJ1Y3Qgc29ja2V0ICoqKTsKZXh0ZXJuIHZvaWQgc29ja19yZWxlYXNlX1I2ZDc2YmM1ZChz
dHJ1Y3Qgc29ja2V0ICopOwpleHRlcm4gaW50IHNvY2tfc2VuZG1zZ19SZWViZTY4NzUoc3RydWN0
IHNvY2tldCAqLCBzdHJ1Y3QgbXNnaGRyICptLCBpbnQgbGVuKTsKZXh0ZXJuIGludCBzb2NrX3Jl
Y3Ztc2dfUmRhN2QwNDRhKHN0cnVjdCBzb2NrZXQgKiwgc3RydWN0IG1zZ2hkciAqbSwgaW50IGxl
biwgaW50IGZsYWdzKTsKZXh0ZXJuIGludCBzb2NrX3JlYWR2X3dyaXRldihpbnQgdHlwZSwgc3Ry
dWN0IGlub2RlICogaW5vZGUsIHN0cnVjdCBmaWxlICogZmlsZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBpb3ZlYyAqIGlvdiwgbG9uZyBjb3VudCwgbG9u
ZyBzaXplKTsKCmV4dGVybiBpbnQgbmV0X3JhdGVsaW1pdF9SZjZlYmMwM2Iodm9pZCk7CmV4dGVy
biB1bnNpZ25lZCBsb25nIG5ldF9yYW5kb21fUjFjNjZmNjRjKHZvaWQpOwpleHRlcm4gdm9pZCBu
ZXRfc3JhbmRvbV9SZmY5NjNlZDgodW5zaWduZWQgbG9uZyk7CiMgMTYgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
a2Rldl90LmgiIDEKIyA2NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9rZGV2X3QuaCIK
dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBrZGV2X3Q7CiMgNzYgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgva2Rldl90LmgiCmV4dGVybiBjb25zdCBjaGFyICoga2Rldm5hbWVfUmMyNThjOTA2
KGtkZXZfdCk7CgoKCgoKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGtkZXZfdF90b19ucihr
ZGV2X3QgZGV2KSB7CiAgICAgICAgcmV0dXJuICgoKHVuc2lnbmVkIGludCkgKChkZXYpID4+IDgp
KTw8OCkgfCAoKHVuc2lnbmVkIGludCkgKChkZXYpICYgKCgxVSA8PCA4KSAtIDEpKSk7Cn0KCnN0
YXRpYyBpbmxpbmUga2Rldl90IHRvX2tkZXZfdChpbnQgZGV2KQp7CiAgICAgICAgaW50IG1ham9y
LCBtaW5vcjsKIyA5OCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9rZGV2X3QuaCIKICAg
ICAgICBtYWpvciA9IChkZXYgPj4gOCk7CiAgICAgICAgbWlub3IgPSAoZGV2ICYgMHhmZik7Cgog
ICAgICAgIHJldHVybiAoKChtYWpvcikgPDwgOCkgfCAobWlub3IpKTsKfQojIDE3ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L2lvY3RsLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9pb2N0
bC5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pb2N0bC5oIiAyCiMgMTgg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvbGlzdC5oIiAxCiMgMTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZGNhY2hlLmgiIDEK
CgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2F0b21pYy5oIiAxCiMgNyAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvbW91bnQuaCIgMQojIDE5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L21vdW50LmgiCnN0cnVjdCB2ZnNtb3VudAp7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBt
bnRfaGFzaDsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKm1udF9wYXJlbnQ7CiAgICAgICAgc3Ry
dWN0IGRlbnRyeSAqbW50X21vdW50cG9pbnQ7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqbW50X3Jv
b3Q7CiAgICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICptbnRfc2I7CiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBtbnRfbW91bnRzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbW50X2NoaWxkOwog
ICAgICAgIGF0b21pY190IG1udF9jb3VudDsKICAgICAgICBpbnQgbW50X2ZsYWdzOwogICAgICAg
IGNoYXIgKm1udF9kZXZuYW1lOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbW50X2xpc3Q7Cn07
CgpzdGF0aWMgaW5saW5lIHN0cnVjdCB2ZnNtb3VudCAqbW50Z2V0KHN0cnVjdCB2ZnNtb3VudCAq
bW50KQp7CiAgICAgICAgaWYgKG1udCkKICAgICAgICAgICAgICAgIGF0b21pY19pbmMoJm1udC0+
bW50X2NvdW50KTsKICAgICAgICByZXR1cm4gbW50Owp9CgpleHRlcm4gdm9pZCBfX21udHB1dF9S
MzgyNjI5ZDEoc3RydWN0IHZmc21vdW50ICptbnQpOwoKc3RhdGljIGlubGluZSB2b2lkIG1udHB1
dChzdHJ1Y3QgdmZzbW91bnQgKm1udCkKewogICAgICAgIGlmIChtbnQpIHsKICAgICAgICAgICAg
ICAgIGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZtbnQtPm1udF9jb3VudCkpCiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fbW50cHV0X1IzODI2MjlkMShtbnQpOwogICAgICAgIH0KfQojIDggIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZGNhY2hlLmgiIDIKIyAyNCAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIKc3RydWN0IHFzdHIgewogICAgICAgIGNvbnN0IHVu
c2lnbmVkIGNoYXIgKiBuYW1lOwogICAgICAgIHVuc2lnbmVkIGludCBsZW47CiAgICAgICAgdW5z
aWduZWQgaW50IGhhc2g7Cn07CgpzdHJ1Y3QgZGVudHJ5X3N0YXRfdCB7CiAgICAgICAgaW50IG5y
X2RlbnRyeTsKICAgICAgICBpbnQgbnJfdW51c2VkOwogICAgICAgIGludCBhZ2VfbGltaXQ7CiAg
ICAgICAgaW50IHdhbnRfcGFnZXM7CiAgICAgICAgaW50IGR1bW15WzJdOwp9OwpleHRlcm4gc3Ry
dWN0IGRlbnRyeV9zdGF0X3QgZGVudHJ5X3N0YXQ7CgoKCgoKCnN0YXRpYyBfX2lubGluZV9fIHVu
c2lnbmVkIGxvbmcgcGFydGlhbF9uYW1lX2hhc2godW5zaWduZWQgbG9uZyBjLCB1bnNpZ25lZCBs
b25nIHByZXZoYXNoKQp7CiAgICAgICAgcmV0dXJuIChwcmV2aGFzaCArIChjIDw8IDQpICsgKGMg
Pj4gNCkpICogMTE7Cn0KCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIGVuZF9uYW1l
X2hhc2godW5zaWduZWQgbG9uZyBoYXNoKQp7CiAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBpbnQp
IGhhc2g7Cn0KCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBpbnQgZnVsbF9uYW1lX2hhc2go
Y29uc3QgdW5zaWduZWQgY2hhciAqIG5hbWUsIHVuc2lnbmVkIGludCBsZW4pCnsKICAgICAgICB1
bnNpZ25lZCBsb25nIGhhc2ggPSAwOwogICAgICAgIHdoaWxlIChsZW4tLSkKICAgICAgICAgICAg
ICAgIGhhc2ggPSBwYXJ0aWFsX25hbWVfaGFzaCgqbmFtZSsrLCBoYXNoKTsKICAgICAgICByZXR1
cm4gZW5kX25hbWVfaGFzaChoYXNoKTsKfQoKCgpzdHJ1Y3QgZGVudHJ5IHsKICAgICAgICBhdG9t
aWNfdCBkX2NvdW50OwogICAgICAgIHVuc2lnbmVkIGludCBkX2ZsYWdzOwogICAgICAgIHN0cnVj
dCBpbm9kZSAqIGRfaW5vZGU7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqIGRfcGFyZW50OwogICAg
ICAgIHN0cnVjdCBsaXN0X2hlYWQgZF9oYXNoOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZF9s
cnU7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkX2NoaWxkOwogICAgICAgIHN0cnVjdCBsaXN0
X2hlYWQgZF9zdWJkaXJzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZF9hbGlhczsKICAgICAg
ICBpbnQgZF9tb3VudGVkOwogICAgICAgIHN0cnVjdCBxc3RyIGRfbmFtZTsKICAgICAgICB1bnNp
Z25lZCBsb25nIGRfdGltZTsKICAgICAgICBzdHJ1Y3QgZGVudHJ5X29wZXJhdGlvbnMgKmRfb3A7
CiAgICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICogZF9zYjsKICAgICAgICB1bnNpZ25lZCBsb25n
IGRfdmZzX2ZsYWdzOwogICAgICAgIHZvaWQgKiBkX2ZzZGF0YTsKICAgICAgICB1bnNpZ25lZCBj
aGFyIGRfaW5hbWVbMTZdOwp9OwoKc3RydWN0IGRlbnRyeV9vcGVyYXRpb25zIHsKICAgICAgICBp
bnQgKCpkX3JldmFsaWRhdGUpKHN0cnVjdCBkZW50cnkgKiwgaW50KTsKICAgICAgICBpbnQgKCpk
X2hhc2gpIChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBxc3RyICopOwogICAgICAgIGludCAoKmRf
Y29tcGFyZSkgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IHFzdHIgKiwgc3RydWN0IHFzdHIgKik7
CiAgICAgICAgaW50ICgqZF9kZWxldGVfUmExOWY1M2VjKShzdHJ1Y3QgZGVudHJ5ICopOwogICAg
ICAgIHZvaWQgKCpkX3JlbGVhc2UpKHN0cnVjdCBkZW50cnkgKik7CiAgICAgICAgdm9pZCAoKmRf
aXB1dCkoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKik7Cn07CiMgMTI3ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIgpleHRlcm4gc3BpbmxvY2tfdCBkY2FjaGVf
bG9ja19SNzM0NjNjZWY7CiMgMTQ2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2RjYWNo
ZS5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGRfZHJvcChzdHJ1Y3QgZGVudHJ5ICogZGVudHJ5
KQp7CiAgICAgICAgKHZvaWQpKCZkY2FjaGVfbG9ja19SNzM0NjNjZWYpOwogICAgICAgIGxpc3Rf
ZGVsKCZkZW50cnktPmRfaGFzaCk7CiAgICAgICAgZG8geyAoJmRlbnRyeS0+ZF9oYXNoKS0+bmV4
dCA9ICgmZGVudHJ5LT5kX2hhc2gpOyAoJmRlbnRyeS0+ZF9oYXNoKS0+cHJldiA9ICgmZGVudHJ5
LT5kX2hhc2gpOyB9IHdoaWxlICgwKTsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7Cn0KCnN0YXRp
YyBfX2lubGluZV9fIGludCBkbmFtZV9leHRlcm5hbChzdHJ1Y3QgZGVudHJ5ICpkKQp7CiAgICAg
ICAgcmV0dXJuIGQtPmRfbmFtZS5uYW1lICE9IGQtPmRfaW5hbWU7Cn0KCgoKCmV4dGVybiB2b2lk
IGRfaW5zdGFudGlhdGVfUmM1OGFiNTYwKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlub2RlICop
OwpleHRlcm4gdm9pZCBkX2RlbGV0ZV9SYTE5ZjUzZWMoc3RydWN0IGRlbnRyeSAqKTsKCgpleHRl
cm4gc3RydWN0IGRlbnRyeSAqIGRfYWxsb2NfUjdjNGMyN2UyKHN0cnVjdCBkZW50cnkgKiwgY29u
c3Qgc3RydWN0IHFzdHIgKik7CmV4dGVybiB2b2lkIHNocmlua19kY2FjaGVfc2JfUjA1MDBiYWVl
KHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKZXh0ZXJuIHZvaWQgc2hyaW5rX2RjYWNoZV9wYXJlbnRf
UmIyZjk5MmY0KHN0cnVjdCBkZW50cnkgKik7CmV4dGVybiBpbnQgZF9pbnZhbGlkYXRlX1JjMTA2
MDQ3NChzdHJ1Y3QgZGVudHJ5ICopOwoKCnN0cnVjdCB6b25lX3N0cnVjdDsKCmV4dGVybiBpbnQg
c2hyaW5rX2RjYWNoZV9tZW1vcnkoaW50LCB1bnNpZ25lZCBpbnQpOwpleHRlcm4gdm9pZCBwcnVu
ZV9kY2FjaGVfUjZjZjI4Zjc3KGludCk7CgoKZXh0ZXJuIGludCBzaHJpbmtfaWNhY2hlX21lbW9y
eShpbnQsIGludCk7CmV4dGVybiB2b2lkIHBydW5lX2ljYWNoZShpbnQpOwoKCmV4dGVybiBpbnQg
c2hyaW5rX2RxY2FjaGVfbWVtb3J5KGludCwgdW5zaWduZWQgaW50KTsKCgpleHRlcm4gc3RydWN0
IGRlbnRyeSAqIGRfYWxsb2Nfcm9vdF9SMmQxZTQ1MmUoc3RydWN0IGlub2RlICopOwoKCmV4dGVy
biB2b2lkIGRfZ2Vub2NpZGUoc3RydWN0IGRlbnRyeSAqKTsKCmV4dGVybiBzdHJ1Y3QgZGVudHJ5
ICpkX2ZpbmRfYWxpYXNfUjc5M2YwOWU5KHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgZF9w
cnVuZV9hbGlhc2VzX1JlNWNjNWU2MChzdHJ1Y3QgaW5vZGUgKik7CgoKZXh0ZXJuIGludCBoYXZl
X3N1Ym1vdW50c19SOTRlZGY0MGIoc3RydWN0IGRlbnRyeSAqKTsKCgoKCmV4dGVybiB2b2lkIGRf
cmVoYXNoX1I2OGQ1Y2ZmZihzdHJ1Y3QgZGVudHJ5ICopOwojIDIxMCAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9kY2FjaGUuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBkX2FkZChzdHJ1
Y3QgZGVudHJ5ICogZW50cnksIHN0cnVjdCBpbm9kZSAqIGlub2RlKQp7CiAgICAgICAgZF9pbnN0
YW50aWF0ZV9SYzU4YWI1NjAoZW50cnksIGlub2RlKTsKICAgICAgICBkX3JlaGFzaF9SNjhkNWNm
ZmYoZW50cnkpOwp9CgoKZXh0ZXJuIHZvaWQgZF9tb3ZlX1JmNmY3YWUxMyhzdHJ1Y3QgZGVudHJ5
ICosIHN0cnVjdCBkZW50cnkgKik7CgoKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX2xvb2t1cF9S
MTg4NjQ2MzAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgcXN0ciAqKTsKCgpleHRlcm4gaW50IGRf
dmFsaWRhdGVfUjQxZGU1ZGFlKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGRlbnRyeSAqKTsKCmV4
dGVybiBjaGFyICogX19kX3BhdGhfUjI4OWI5NGJjKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IHZm
c21vdW50ICosIHN0cnVjdCBkZW50cnkgKiwKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKiwgY2hh
ciAqLCBpbnQpOwojIDI0MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIK
c3RhdGljIF9faW5saW5lX18gc3RydWN0IGRlbnRyeSAqIGRnZXQoc3RydWN0IGRlbnRyeSAqZGVu
dHJ5KQp7CiAgICAgICAgaWYgKGRlbnRyeSkgewogICAgICAgICAgICAgICAgaWYgKCEoKCZkZW50
cnktPmRfY291bnQpLT5jb3VudGVyKSkKICAgICAgICAgICAgICAgICAgICAgICAgX19hc21fXyBf
X3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwogICAgICAgICAgICAgICAgYXRvbWljX2lu
YygmZGVudHJ5LT5kX2NvdW50KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGRlbnRyeTsKfQoK
ZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkZ2V0X2xvY2tlZF9SMWRiODM5ZWMoc3RydWN0IGRlbnRy
eSAqKTsKIyAyNjIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0YXRp
YyBfX2lubGluZV9fIGludCBkX3VuaGFzaGVkKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAg
ICAgIHJldHVybiBsaXN0X2VtcHR5KCZkZW50cnktPmRfaGFzaCk7Cn0KCmV4dGVybiB2b2lkIGRw
dXRfUmJmZTJiMjU4KHN0cnVjdCBkZW50cnkgKik7CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZF9t
b3VudHBvaW50KHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHJldHVybiBkZW50cnkt
PmRfbW91bnRlZDsKfQoKZXh0ZXJuIHN0cnVjdCB2ZnNtb3VudCAqbG9va3VwX21udF9SMTBmNTFl
YWYoc3RydWN0IHZmc21vdW50ICosIHN0cnVjdCBkZW50cnkgKik7CiMgMjAgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvc3RhdC5oIiAxCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zdGF0Lmgi
IDEKCgoKc3RydWN0IF9fb2xkX2tlcm5lbF9zdGF0IHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBz
dF9kZXY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfaW5vOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IHN0X21vZGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3Rfbmxpbms7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgc3RfdWlkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X2dpZDsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBzdF9yZGV2OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3Rfc2l6ZTsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2F0aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3Rf
bXRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9jdGltZTsKfTsKCnN0cnVjdCBzdGF0IHsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9kZXY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgX19w
YWQxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfaW5vOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IHN0X21vZGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3Rfbmxpbms7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgc3RfdWlkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X2dpZDsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBzdF9yZGV2OwogICAgICAgIHVuc2lnbmVkIHNob3J0IF9fcGFkMjsKICAg
ICAgICB1bnNpZ25lZCBsb25nIHN0X3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9ibGtz
aXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfYmxvY2tzOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgc3RfYXRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDE7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBzdF9tdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMjsKICAg
ICAgICB1bnNpZ25lZCBsb25nIHN0X2N0aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVz
ZWQzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQ0OwogICAgICAgIHVuc2lnbmVkIGxv
bmcgX191bnVzZWQ1Owp9OwoKCgoKc3RydWN0IHN0YXQ2NCB7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgc3RfZGV2OwogICAgICAgIHVuc2lnbmVkIGNoYXIgX19wYWQwWzEwXTsKCgogICAgICAgIHVu
c2lnbmVkIGxvbmcgX19zdF9pbm87CgogICAgICAgIHVuc2lnbmVkIGludCBzdF9tb2RlOwogICAg
ICAgIHVuc2lnbmVkIGludCBzdF9ubGluazsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF91aWQ7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9naWQ7CgogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0
X3JkZXY7CiAgICAgICAgdW5zaWduZWQgY2hhciBfX3BhZDNbMTBdOwoKICAgICAgICBsb25nIGxv
bmcgc3Rfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2Jsa3NpemU7CgogICAgICAgIHVu
c2lnbmVkIGxvbmcgc3RfYmxvY2tzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX19wYWQ0OwoKICAg
ICAgICB1bnNpZ25lZCBsb25nIHN0X2F0aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX19wYWQ1
OwoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X210aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
X19wYWQ2OwoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2N0aW1lOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgX19wYWQ3OwoKICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc3RfaW5vOwp9OwojIDcg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3RhdC5oIiAyCiMgMjEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvY2FjaGUuaCIgMQojIDIyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIiAxCiMgMjMgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvc3RyaW5nLmgiIDEKCgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC90eXBlcy5oIiAxCiMgOSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zdHJpbmcu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3RkZGVmLmgiIDEKIyAxMCAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMgoKCgoKCmV4dGVybiBjaGFy
ICogX19fc3RydG9rX1IyOTgwNWMxMzsKZXh0ZXJuIGNoYXIgKiBzdHJwYnJrX1I5YTFkZmQ2NShj
b25zdCBjaGFyICosY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKiBzdHJ0b2tfUmVlOWMxYmQ0
KGNoYXIgKixjb25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqIHN0cnNlcF9SODVkZjliNmMoY2hh
ciAqKixjb25zdCBjaGFyICopOwpleHRlcm4gX19rZXJuZWxfc2l6ZV90IHN0cnNwbl9SYzdlYzZj
MjcoY29uc3QgY2hhciAqLGNvbnN0IGNoYXIgKik7CgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2FzbS9zdHJpbmcuaCIgMQoKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L2NvbmZpZy5oIiAxCiMgNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc3RyaW5nLmgi
IDIKIyAzMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc3RyaW5nLmgiCnN0YXRpYyBpbmxp
bmUgY2hhciAqIHN0cmNweShjaGFyICogZGVzdCxjb25zdCBjaGFyICpzcmMpCnsKaW50IGQwLCBk
MSwgZDI7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICIxOlx0bG9kc2Jcblx0IgogICAg
ICAgICJzdG9zYlxuXHQiCiAgICAgICAgInRlc3RiICUlYWwsJSVhbFxuXHQiCiAgICAgICAgImpu
ZSAxYiIKICAgICAgICA6ICI9JlMiIChkMCksICI9JkQiIChkMSksICI9JmEiIChkMikKICAgICAg
ICA6IjAiIChzcmMpLCIxIiAoZGVzdCkgOiAibWVtb3J5Iik7CnJldHVybiBkZXN0Owp9CgoKc3Rh
dGljIGlubGluZSBjaGFyICogc3RybmNweShjaGFyICogZGVzdCxjb25zdCBjaGFyICpzcmMsc2l6
ZV90IGNvdW50KQp7CmludCBkMCwgZDEsIGQyLCBkMzsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAg
ICAgICAgIjE6XHRkZWNsICUyXG5cdCIKICAgICAgICAianMgMmZcblx0IgogICAgICAgICJsb2Rz
YlxuXHQiCiAgICAgICAgInN0b3NiXG5cdCIKICAgICAgICAidGVzdGIgJSVhbCwlJWFsXG5cdCIK
ICAgICAgICAiam5lIDFiXG5cdCIKICAgICAgICAicmVwXG5cdCIKICAgICAgICAic3Rvc2JcbiIK
ICAgICAgICAiMjoiCiAgICAgICAgOiAiPSZTIiAoZDApLCAiPSZEIiAoZDEpLCAiPSZjIiAoZDIp
LCAiPSZhIiAoZDMpCiAgICAgICAgOiIwIiAoc3JjKSwiMSIgKGRlc3QpLCIyIiAoY291bnQpIDog
Im1lbW9yeSIpOwpyZXR1cm4gZGVzdDsKfQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIHN0cmNhdChj
aGFyICogZGVzdCxjb25zdCBjaGFyICogc3JjKQp7CmludCBkMCwgZDEsIGQyLCBkMzsKX19hc21f
XyBfX3ZvbGF0aWxlX18oCiAgICAgICAgInJlcG5lXG5cdCIKICAgICAgICAic2Nhc2Jcblx0Igog
ICAgICAgICJkZWNsICUxXG4iCiAgICAgICAgIjE6XHRsb2RzYlxuXHQiCiAgICAgICAgInN0b3Ni
XG5cdCIKICAgICAgICAidGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiIgogICAg
ICAgIDogIj0mUyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mYSIgKGQyKSwgIj0mYyIgKGQzKQogICAg
ICAgIDogIjAiIChzcmMpLCAiMSIgKGRlc3QpLCAiMiIgKDApLCAiMyIgKDB4ZmZmZmZmZmYpOiJt
ZW1vcnkiKTsKcmV0dXJuIGRlc3Q7Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIgKiBzdHJuY2F0KGNo
YXIgKiBkZXN0LGNvbnN0IGNoYXIgKiBzcmMsc2l6ZV90IGNvdW50KQp7CmludCBkMCwgZDEsIGQy
LCBkMzsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgInJlcG5lXG5cdCIKICAgICAgICAi
c2Nhc2Jcblx0IgogICAgICAgICJkZWNsICUxXG5cdCIKICAgICAgICAibW92bCAlOCwlM1xuIgog
ICAgICAgICIxOlx0ZGVjbCAlM1xuXHQiCiAgICAgICAgImpzIDJmXG5cdCIKICAgICAgICAibG9k
c2Jcblx0IgogICAgICAgICJzdG9zYlxuXHQiCiAgICAgICAgInRlc3RiICUlYWwsJSVhbFxuXHQi
CiAgICAgICAgImpuZSAxYlxuIgogICAgICAgICIyOlx0eG9ybCAlMiwlMlxuXHQiCiAgICAgICAg
InN0b3NiIgogICAgICAgIDogIj0mUyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mYSIgKGQyKSwgIj0m
YyIgKGQzKQogICAgICAgIDogIjAiIChzcmMpLCIxIiAoZGVzdCksIjIiICgwKSwiMyIgKDB4ZmZm
ZmZmZmYpLCAiZyIgKGNvdW50KQogICAgICAgIDogIm1lbW9yeSIpOwpyZXR1cm4gZGVzdDsKfQoK
CnN0YXRpYyBpbmxpbmUgaW50IHN0cmNtcChjb25zdCBjaGFyICogY3MsY29uc3QgY2hhciAqIGN0
KQp7CmludCBkMCwgZDE7CnJlZ2lzdGVyIGludCBfX3JlczsKX19hc21fXyBfX3ZvbGF0aWxlX18o
CiAgICAgICAgIjE6XHRsb2RzYlxuXHQiCiAgICAgICAgInNjYXNiXG5cdCIKICAgICAgICAiam5l
IDJmXG5cdCIKICAgICAgICAidGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiXG5c
dCIKICAgICAgICAieG9ybCAlJWVheCwlJWVheFxuXHQiCiAgICAgICAgImptcCAzZlxuIgogICAg
ICAgICIyOlx0c2JibCAlJWVheCwlJWVheFxuXHQiCiAgICAgICAgIm9yYiAkMSwlJWFsXG4iCiAg
ICAgICAgIjM6IgogICAgICAgIDoiPWEiIChfX3JlcyksICI9JlMiIChkMCksICI9JkQiIChkMSkK
ICAgICAgICAgICAgICAgICAgICAgOiIxIiAoY3MpLCIyIiAoY3QpKTsKcmV0dXJuIF9fcmVzOwp9
CgoKc3RhdGljIGlubGluZSBpbnQgc3RybmNtcChjb25zdCBjaGFyICogY3MsY29uc3QgY2hhciAq
IGN0LHNpemVfdCBjb3VudCkKewpyZWdpc3RlciBpbnQgX19yZXM7CmludCBkMCwgZDEsIGQyOwpf
X2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAiMTpcdGRlY2wgJTNcblx0IgogICAgICAgICJq
cyAyZlxuXHQiCiAgICAgICAgImxvZHNiXG5cdCIKICAgICAgICAic2Nhc2Jcblx0IgogICAgICAg
ICJqbmUgM2Zcblx0IgogICAgICAgICJ0ZXN0YiAlJWFsLCUlYWxcblx0IgogICAgICAgICJqbmUg
MWJcbiIKICAgICAgICAiMjpcdHhvcmwgJSVlYXgsJSVlYXhcblx0IgogICAgICAgICJqbXAgNGZc
biIKICAgICAgICAiMzpcdHNiYmwgJSVlYXgsJSVlYXhcblx0IgogICAgICAgICJvcmIgJDEsJSVh
bFxuIgogICAgICAgICI0OiIKICAgICAgICAgICAgICAgICAgICAgOiI9YSIgKF9fcmVzKSwgIj0m
UyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mYyIgKGQyKQogICAgICAgICAgICAgICAgICAgICA6IjEi
IChjcyksIjIiIChjdCksIjMiIChjb3VudCkpOwpyZXR1cm4gX19yZXM7Cn0KCgpzdGF0aWMgaW5s
aW5lIGNoYXIgKiBzdHJjaHIoY29uc3QgY2hhciAqIHMsIGludCBjKQp7CmludCBkMDsKcmVnaXN0
ZXIgY2hhciAqIF9fcmVzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAibW92YiAlJWFs
LCUlYWhcbiIKICAgICAgICAiMTpcdGxvZHNiXG5cdCIKICAgICAgICAiY21wYiAlJWFoLCUlYWxc
blx0IgogICAgICAgICJqZSAyZlxuXHQiCiAgICAgICAgInRlc3RiICUlYWwsJSVhbFxuXHQiCiAg
ICAgICAgImpuZSAxYlxuXHQiCiAgICAgICAgIm1vdmwgJDEsJTFcbiIKICAgICAgICAiMjpcdG1v
dmwgJTEsJTBcblx0IgogICAgICAgICJkZWNsICUwIgogICAgICAgIDoiPWEiIChfX3JlcyksICI9
JlMiIChkMCkgOiAiMSIgKHMpLCIwIiAoYykpOwpyZXR1cm4gX19yZXM7Cn0KCgpzdGF0aWMgaW5s
aW5lIGNoYXIgKiBzdHJyY2hyKGNvbnN0IGNoYXIgKiBzLCBpbnQgYykKewppbnQgZDAsIGQxOwpy
ZWdpc3RlciBjaGFyICogX19yZXM7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJtb3Zi
ICUlYWwsJSVhaFxuIgogICAgICAgICIxOlx0bG9kc2Jcblx0IgogICAgICAgICJjbXBiICUlYWgs
JSVhbFxuXHQiCiAgICAgICAgImpuZSAyZlxuXHQiCiAgICAgICAgImxlYWwgLTEoJSVlc2kpLCUw
XG4iCiAgICAgICAgIjI6XHR0ZXN0YiAlJWFsLCUlYWxcblx0IgogICAgICAgICJqbmUgMWIiCiAg
ICAgICAgOiI9ZyIgKF9fcmVzKSwgIj0mUyIgKGQwKSwgIj0mYSIgKGQxKSA6IjAiICgwKSwiMSIg
KHMpLCIyIiAoYykpOwpyZXR1cm4gX19yZXM7Cn0KCgpzdGF0aWMgaW5saW5lIHNpemVfdCBzdHJs
ZW4oY29uc3QgY2hhciAqIHMpCnsKaW50IGQwOwpyZWdpc3RlciBpbnQgX19yZXM7Cl9fYXNtX18g
X192b2xhdGlsZV9fKAogICAgICAgICJyZXBuZVxuXHQiCiAgICAgICAgInNjYXNiXG5cdCIKICAg
ICAgICAibm90bCAlMFxuXHQiCiAgICAgICAgImRlY2wgJTAiCiAgICAgICAgOiI9YyIgKF9fcmVz
KSwgIj0mRCIgKGQwKSA6IjEiIChzKSwiYSIgKDApLCAiMCIgKDB4ZmZmZmZmZmYpKTsKcmV0dXJu
IF9fcmVzOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgKiBfX21lbWNweSh2b2lkICogdG8sIGNvbnN0
IHZvaWQgKiBmcm9tLCBzaXplX3QgbikKewppbnQgZDAsIGQxLCBkMjsKX19hc21fXyBfX3ZvbGF0
aWxlX18oCiAgICAgICAgInJlcCA7IG1vdnNsXG5cdCIKICAgICAgICAidGVzdGIgJDIsJWI0XG5c
dCIKICAgICAgICAiamUgMWZcblx0IgogICAgICAgICJtb3Zzd1xuIgogICAgICAgICIxOlx0dGVz
dGIgJDEsJWI0XG5cdCIKICAgICAgICAiamUgMmZcblx0IgogICAgICAgICJtb3ZzYlxuIgogICAg
ICAgICIyOiIKICAgICAgICA6ICI9JmMiIChkMCksICI9JkQiIChkMSksICI9JlMiIChkMikKICAg
ICAgICA6IjAiIChuLzQpLCAicSIgKG4pLCIxIiAoKGxvbmcpIHRvKSwiMiIgKChsb25nKSBmcm9t
KQogICAgICAgIDogIm1lbW9yeSIpOwpyZXR1cm4gKHRvKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUg
dm9pZCAqIF9fY29uc3RhbnRfbWVtY3B5KHZvaWQgKiB0bywgY29uc3Qgdm9pZCAqIGZyb20sIHNp
emVfdCBuKQp7CiAgICAgICAgc3dpdGNoIChuKSB7CiAgICAgICAgICAgICAgICBjYXNlIDA6CiAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMToK
ICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBjaGFyICopdG8gPSAqKGNvbnN0IHVu
c2lnbmVkIGNoYXIgKilmcm9tOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAg
ICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQg
c2hvcnQgKil0byA9ICooY29uc3QgdW5zaWduZWQgc2hvcnQgKilmcm9tOwogICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAg
ICAgICAgICAgICAgICoodW5zaWduZWQgc2hvcnQgKil0byA9ICooY29uc3QgdW5zaWduZWQgc2hv
cnQgKilmcm9tOwogICAgICAgICAgICAgICAgICAgICAgICAqKDIrKHVuc2lnbmVkIGNoYXIgKil0
bykgPSAqKDIrKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilmcm9tKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRvOwogICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAg
ICAgICAgICAqKHVuc2lnbmVkIGxvbmcgKil0byA9ICooY29uc3QgdW5zaWduZWQgbG9uZyAqKWZy
b207CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNh
c2UgNjoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBsb25nICopdG8gPSAqKGNv
bnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tOwogICAgICAgICAgICAgICAgICAgICAgICAqKDIrKHVu
c2lnbmVkIHNob3J0ICopdG8pID0gKigyKyhjb25zdCB1bnNpZ25lZCBzaG9ydCAqKWZyb20pOwog
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNlIDg6
CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgbG9uZyAqKXRvID0gKihjb25zdCB1
bnNpZ25lZCBsb25nICopZnJvbTsKICAgICAgICAgICAgICAgICAgICAgICAgKigxKyh1bnNpZ25l
ZCBsb25nICopdG8pID0gKigxKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMTI6CiAgICAg
ICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgbG9uZyAqKXRvID0gKihjb25zdCB1bnNpZ25l
ZCBsb25nICopZnJvbTsKICAgICAgICAgICAgICAgICAgICAgICAgKigxKyh1bnNpZ25lZCBsb25n
ICopdG8pID0gKigxKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICooMisodW5zaWduZWQgbG9uZyAqKXRvKSA9ICooMisoY29uc3QgdW5zaWduZWQg
bG9uZyAqKWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAgICAgICAg
ICAgICAgICBjYXNlIDE2OgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIGxvbmcg
Kil0byA9ICooY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb207CiAgICAgICAgICAgICAgICAgICAg
ICAgICooMSsodW5zaWduZWQgbG9uZyAqKXRvKSA9ICooMSsoY29uc3QgdW5zaWduZWQgbG9uZyAq
KWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICAqKDIrKHVuc2lnbmVkIGxvbmcgKil0bykg
PSAqKDIrKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgKigzKyh1bnNpZ25lZCBsb25nICopdG8pID0gKigzKyhjb25zdCB1bnNpZ25lZCBsb25nICop
ZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAg
IGNhc2UgMjA6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgbG9uZyAqKXRvID0g
Kihjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbTsKICAgICAgICAgICAgICAgICAgICAgICAgKigx
Kyh1bnNpZ25lZCBsb25nICopdG8pID0gKigxKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICooMisodW5zaWduZWQgbG9uZyAqKXRvKSA9ICooMiso
Y29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICAqKDMr
KHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDMrKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgKig0Kyh1bnNpZ25lZCBsb25nICopdG8pID0gKig0Kyhj
b25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0bzsKICAgICAgICB9CgoKCgoKCgp7CiAgICAgICAgaW50IGQwLCBkMSwgZDI7CiAgICAgICAg
c3dpdGNoIChuICUgNCkgewogICAgICAgICAgICAgICAgY2FzZSAwOiBfX2FzbV9fIF9fdm9sYXRp
bGVfXyggInJlcCA7IG1vdnNsIiAiIiA6ICI9JmMiIChkMCksICI9JkQiIChkMSksICI9JlMiIChk
MikgOiAiMCIgKG4vNCksIjEiICgobG9uZykgdG8pLCIyIiAoKGxvbmcpIGZyb20pIDogIm1lbW9y
eSIpOzsgcmV0dXJuIHRvOwogICAgICAgICAgICAgICAgY2FzZSAxOiBfX2FzbV9fIF9fdm9sYXRp
bGVfXyggInJlcCA7IG1vdnNsIiAiXG5cdG1vdnNiIiA6ICI9JmMiIChkMCksICI9JkQiIChkMSks
ICI9JlMiIChkMikgOiAiMCIgKG4vNCksIjEiICgobG9uZykgdG8pLCIyIiAoKGxvbmcpIGZyb20p
IDogIm1lbW9yeSIpOzsgcmV0dXJuIHRvOwogICAgICAgICAgICAgICAgY2FzZSAyOiBfX2FzbV9f
IF9fdm9sYXRpbGVfXyggInJlcCA7IG1vdnNsIiAiXG5cdG1vdnN3IiA6ICI9JmMiIChkMCksICI9
JkQiIChkMSksICI9JlMiIChkMikgOiAiMCIgKG4vNCksIjEiICgobG9uZykgdG8pLCIyIiAoKGxv
bmcpIGZyb20pIDogIm1lbW9yeSIpOzsgcmV0dXJuIHRvOwogICAgICAgICAgICAgICAgZGVmYXVs
dDogX19hc21fXyBfX3ZvbGF0aWxlX18oICJyZXAgOyBtb3ZzbCIgIlxuXHRtb3Zzd1xuXHRtb3Zz
YiIgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpLCAiPSZTIiAoZDIpIDogIjAiIChuLzQpLCIxIiAo
KGxvbmcpIHRvKSwiMiIgKChsb25nKSBmcm9tKSA6ICJtZW1vcnkiKTs7IHJldHVybiB0bzsKICAg
ICAgICB9Cn0KCgp9CgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9tbXguaCIg
MQojIDI5MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc3RyaW5nLmgiIDIKCgoKCgpzdGF0
aWMgaW5saW5lIHZvaWQgKiBfX2NvbnN0YW50X21lbWNweTNkKHZvaWQgKiB0bywgY29uc3Qgdm9p
ZCAqIGZyb20sIHNpemVfdCBsZW4pCnsKICAgICAgICBpZiAobGVuIDwgNTEyKQogICAgICAgICAg
ICAgICAgcmV0dXJuIF9fY29uc3RhbnRfbWVtY3B5KHRvLCBmcm9tLCBsZW4pOwogICAgICAgIHJl
dHVybiBfbW14X21lbWNweSh0bywgZnJvbSwgbGVuKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9p
ZCAqX19tZW1jcHkzZCh2b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgc2l6ZV90IGxlbikKewog
ICAgICAgIGlmIChsZW4gPCA1MTIpCiAgICAgICAgICAgICAgICByZXR1cm4gX19tZW1jcHkodG8s
IGZyb20sIGxlbik7CiAgICAgICAgcmV0dXJuIF9tbXhfbWVtY3B5KHRvLCBmcm9tLCBsZW4pOwp9
CiMgMzM1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zdHJpbmcuaCIKZXh0ZXJuIHZvaWQg
X19zdHJ1Y3RfY3B5X2J1ZyAodm9pZCk7CiMgMzQ1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2Fz
bS9zdHJpbmcuaCIKc3RhdGljIGlubGluZSB2b2lkICogbWVtbW92ZSh2b2lkICogZGVzdCxjb25z
dCB2b2lkICogc3JjLCBzaXplX3QgbikKewppbnQgZDAsIGQxLCBkMjsKaWYgKGRlc3Q8c3JjKQpf
X2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwXG5cdCIKICAgICAgICAibW92c2IiCiAg
ICAgICAgOiAiPSZjIiAoZDApLCAiPSZTIiAoZDEpLCAiPSZEIiAoZDIpCiAgICAgICAgOiIwIiAo
biksIjEiIChzcmMpLCIyIiAoZGVzdCkKICAgICAgICA6ICJtZW1vcnkiKTsKZWxzZQpfX2FzbV9f
IF9fdm9sYXRpbGVfXygKICAgICAgICAic3RkXG5cdCIKICAgICAgICAicmVwXG5cdCIKICAgICAg
ICAibW92c2Jcblx0IgogICAgICAgICJjbGQiCiAgICAgICAgOiAiPSZjIiAoZDApLCAiPSZTIiAo
ZDEpLCAiPSZEIiAoZDIpCiAgICAgICAgOiIwIiAobiksCiAgICAgICAgICIxIiAobi0xKyhjb25z
dCBjaGFyICopc3JjKSwKICAgICAgICAgIjIiIChuLTErKGNoYXIgKilkZXN0KQogICAgICAgIDoi
bWVtb3J5Iik7CnJldHVybiBkZXN0Owp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgKiBtZW1jaHIo
Y29uc3Qgdm9pZCAqIGNzLGludCBjLHNpemVfdCBjb3VudCkKewppbnQgZDA7CnJlZ2lzdGVyIHZv
aWQgKiBfX3JlczsKaWYgKCFjb3VudCkKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7Cl9fYXNt
X18gX192b2xhdGlsZV9fKAogICAgICAgICJyZXBuZVxuXHQiCiAgICAgICAgInNjYXNiXG5cdCIK
ICAgICAgICAiamUgMWZcblx0IgogICAgICAgICJtb3ZsICQxLCUwXG4iCiAgICAgICAgIjE6XHRk
ZWNsICUwIgogICAgICAgIDoiPUQiIChfX3JlcyksICI9JmMiIChkMCkgOiAiYSIgKGMpLCIwIiAo
Y3MpLCIxIiAoY291bnQpKTsKcmV0dXJuIF9fcmVzOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgKiBf
X21lbXNldF9nZW5lcmljKHZvaWQgKiBzLCBjaGFyIGMsc2l6ZV90IGNvdW50KQp7CmludCBkMCwg
ZDE7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJyZXBcblx0IgogICAgICAgICJzdG9z
YiIKICAgICAgICA6ICI9JmMiIChkMCksICI9JkQiIChkMSkKICAgICAgICA6ImEiIChjKSwiMSIg
KHMpLCIwIiAoY291bnQpCiAgICAgICAgOiJtZW1vcnkiKTsKcmV0dXJuIHM7Cn0KIyA0MDggIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3N0cmluZy5oIgpzdGF0aWMgaW5saW5lIHZvaWQgKiBf
X2NvbnN0YW50X2NfbWVtc2V0KHZvaWQgKiBzLCB1bnNpZ25lZCBsb25nIGMsIHNpemVfdCBjb3Vu
dCkKewppbnQgZDAsIGQxOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwIDsgc3Rv
c2xcblx0IgogICAgICAgICJ0ZXN0YiAkMiwlYjNcblx0IgogICAgICAgICJqZSAxZlxuXHQiCiAg
ICAgICAgInN0b3N3XG4iCiAgICAgICAgIjE6XHR0ZXN0YiAkMSwlYjNcblx0IgogICAgICAgICJq
ZSAyZlxuXHQiCiAgICAgICAgInN0b3NiXG4iCiAgICAgICAgIjI6IgogICAgICAgIDogIj0mYyIg
KGQwKSwgIj0mRCIgKGQxKQogICAgICAgIDoiYSIgKGMpLCAicSIgKGNvdW50KSwgIjAiIChjb3Vu
dC80KSwgIjEiICgobG9uZykgcykKICAgICAgICA6Im1lbW9yeSIpOwpyZXR1cm4gKHMpOwp9CgoK
CnN0YXRpYyBpbmxpbmUgc2l6ZV90IHN0cm5sZW4oY29uc3QgY2hhciAqIHMsIHNpemVfdCBjb3Vu
dCkKewppbnQgZDA7CnJlZ2lzdGVyIGludCBfX3JlczsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAg
ICAgICAgIm1vdmwgJTIsJTBcblx0IgogICAgICAgICJqbXAgMmZcbiIKICAgICAgICAiMTpcdGNt
cGIgJDAsKCUwKVxuXHQiCiAgICAgICAgImplIDNmXG5cdCIKICAgICAgICAiaW5jbCAlMFxuIgog
ICAgICAgICIyOlx0ZGVjbCAlMVxuXHQiCiAgICAgICAgImNtcGwgJC0xLCUxXG5cdCIKICAgICAg
ICAiam5lIDFiXG4iCiAgICAgICAgIjM6XHRzdWJsICUyLCUwIgogICAgICAgIDoiPWEiIChfX3Jl
cyksICI9JmQiIChkMCkKICAgICAgICA6ImMiIChzKSwiMSIgKGNvdW50KSk7CnJldHVybiBfX3Jl
czsKfQoKCgoKZXh0ZXJuIGNoYXIgKnN0cnN0cl9SMWU2ZDI2YTgoY29uc3QgY2hhciAqY3MsIGNv
bnN0IGNoYXIgKmN0KTsKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgKiBfX2NvbnN0YW50X2NfYW5k
X2NvdW50X21lbXNldCh2b2lkICogcywgdW5zaWduZWQgbG9uZyBwYXR0ZXJuLCBzaXplX3QgY291
bnQpCnsKICAgICAgICBzd2l0Y2ggKGNvdW50KSB7CiAgICAgICAgICAgICAgICBjYXNlIDA6CiAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSAxOgog
ICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIGNoYXIgKilzID0gcGF0dGVybjsKICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBjYXNlIDI6CiAg
ICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgc2hvcnQgKilzID0gcGF0dGVybjsKICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBjYXNlIDM6CiAg
ICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgc2hvcnQgKilzID0gcGF0dGVybjsKICAg
ICAgICAgICAgICAgICAgICAgICAgKigyKyh1bnNpZ25lZCBjaGFyICopcykgPSBwYXR0ZXJuOwog
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gczsKICAgICAgICAgICAgICAgIGNhc2UgNDoK
ICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBsb25nICopcyA9IHBhdHRlcm47CiAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzOwogICAgICAgIH0KCgoKCgoKCnsKICAgICAg
ICBpbnQgZDAsIGQxOwogICAgICAgIHN3aXRjaCAoY291bnQgJSA0KSB7CiAgICAgICAgICAgICAg
ICBjYXNlIDA6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgc3Rvc2wiICIiIDogIj0mYyIg
KGQwKSwgIj0mRCIgKGQxKSA6ICJhIiAocGF0dGVybiksIjAiIChjb3VudC80KSwiMSIgKChsb25n
KSBzKSA6ICJtZW1vcnkiKTsgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBjYXNlIDE6IF9fYXNt
X18gX192b2xhdGlsZV9fKCAicmVwIDsgc3Rvc2wiICJcblx0c3Rvc2IiIDogIj0mYyIgKGQwKSwg
Ij0mRCIgKGQxKSA6ICJhIiAocGF0dGVybiksIjAiIChjb3VudC80KSwiMSIgKChsb25nKSBzKSA6
ICJtZW1vcnkiKTsgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBjYXNlIDI6IF9fYXNtX18gX192
b2xhdGlsZV9fKCAicmVwIDsgc3Rvc2wiICJcblx0c3Rvc3ciIDogIj0mYyIgKGQwKSwgIj0mRCIg
KGQxKSA6ICJhIiAocGF0dGVybiksIjAiIChjb3VudC80KSwiMSIgKChsb25nKSBzKSA6ICJtZW1v
cnkiKTsgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBkZWZhdWx0OiBfX2FzbV9fIF9fdm9sYXRp
bGVfXyggInJlcCA7IHN0b3NsIiAiXG5cdHN0b3N3XG5cdHN0b3NiIiA6ICI9JmMiIChkMCksICI9
JkQiIChkMSkgOiAiYSIgKHBhdHRlcm4pLCIwIiAoY291bnQvNCksIjEiICgobG9uZykgcykgOiAi
bWVtb3J5Iik7IHJldHVybiBzOwogICAgICAgIH0KfQoKCn0KIyA1MTUgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvYXNtL3N0cmluZy5oIgpzdGF0aWMgaW5saW5lIHZvaWQgKiBtZW1zY2FuKHZvaWQg
KiBhZGRyLCBpbnQgYywgc2l6ZV90IHNpemUpCnsKICAgICAgICBpZiAoIXNpemUpCiAgICAgICAg
ICAgICAgICByZXR1cm4gYWRkcjsKICAgICAgICBfX2FzbV9fKCJyZXBuejsgc2Nhc2Jcblx0Igog
ICAgICAgICAgICAgICAgImpueiAxZlxuXHQiCiAgICAgICAgICAgICAgICAiZGVjICUlZWRpXG4i
CiAgICAgICAgICAgICAgICAiMToiCiAgICAgICAgICAgICAgICA6ICI9RCIgKGFkZHIpLCAiPWMi
IChzaXplKQogICAgICAgICAgICAgICAgOiAiMCIgKGFkZHIpLCAiMSIgKHNpemUpLCAiYSIgKGMp
KTsKICAgICAgICByZXR1cm4gYWRkcjsKfQojIDI2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L3N0cmluZy5oIiAyCiMgNDYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3RyaW5n
LmgiCmV4dGVybiBpbnQgc3RybmljbXBfUjRlODMwYTNlKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh
ciAqLCBfX2tlcm5lbF9zaXplX3QpOwojIDc3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3N0cmluZy5oIgpleHRlcm4gaW50IF9fYnVpbHRpbl9tZW1jbXAoY29uc3Qgdm9pZCAqLGNvbnN0
IHZvaWQgKixfX2tlcm5lbF9zaXplX3QpOwojIDI0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L2ZzLmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEK
IyAyNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9hc20vYml0b3BzLmgiIDEKCgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNt
L2JpdG9wcy5oIiAyCiMgMzYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpz
dGF0aWMgX19pbmxpbmVfXyB2b2lkIHNldF9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRk
cikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAiIgogICAgICAgICAgICAgICAgImJ0
c2wgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRy
KSkKICAgICAgICAgICAgICAgIDoiSXIiIChucikpOwp9CiMgNTMgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fc2V0X2JpdChpbnQg
bnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgX19hc21fXygKICAgICAgICAgICAg
ICAgICJidHNsICUxLCUwIgogICAgICAgICAgICAgICAgOiI9bSIgKCgqKHZvbGF0aWxlIGxvbmcg
KikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAobnIpKTsKfQojIDcxICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBjbGVhcl9i
aXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIF9fYXNtX18gX192b2xh
dGlsZV9fKCAiIgogICAgICAgICAgICAgICAgImJ0cmwgJTEsJTAiCiAgICAgICAgICAgICAgICA6
Ij1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIiIChu
cikpOwp9CiMgOTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMg
X19pbmxpbmVfXyB2b2lkIF9fY2hhbmdlX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRy
KQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiYnRjbCAl
MSwlMCIKICAgICAgICAgICAgICAgIDoiPW0iICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQog
ICAgICAgICAgICAgICAgOiJJciIgKG5yKSk7Cn0KIyAxMDcgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGNoYW5nZV9iaXQoaW50IG5y
LCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAi
IgogICAgICAgICAgICAgICAgImJ0Y2wgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAoKCoo
dm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIiIChucikpOwp9CiMg
MTIzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5l
X18gaW50IHRlc3RfYW5kX3NldF9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewog
ICAgICAgIGludCBvbGRiaXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAiIgogICAg
ICAgICAgICAgICAgImJ0c2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoi
PXIiIChvbGRiaXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAg
ICAgICA6IklyIiAobnIpIDogIm1lbW9yeSIpOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KIyAx
NDMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVf
XyBpbnQgX190ZXN0X2FuZF9zZXRfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsK
ICAgICAgICBpbnQgb2xkYml0OwoKICAgICAgICBfX2FzbV9fKAogICAgICAgICAgICAgICAgImJ0
c2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChvbGRiaXQpLCI9
bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAobnIp
KTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMgMTYyICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IHRlc3RfYW5kX2NsZWFyX2JpdChp
bnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgaW50IG9sZGJpdDsKCiAgICAg
ICAgX19hc21fXyBfX3ZvbGF0aWxlX18oICIiCiAgICAgICAgICAgICAgICAiYnRybCAlMiwlMVxu
XHRzYmJsICUwLCUwIgogICAgICAgICAgICAgICAgOiI9ciIgKG9sZGJpdCksIj1tIiAoKCoodm9s
YXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIiIChucikgOiAibWVtb3J5
Iik7CiAgICAgICAgcmV0dXJuIG9sZGJpdDsKfQojIDE4MiAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBfX3Rlc3RfYW5kX2NsZWFyX2Jp
dChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgaW50IG9sZGJpdDsKCiAg
ICAgICAgX19hc21fXygKICAgICAgICAgICAgICAgICJidHJsICUyLCUxXG5cdHNiYmwgJTAsJTAi
CiAgICAgICAgICAgICAgICA6Ij1yIiAob2xkYml0KSwiPW0iICgoKih2b2xhdGlsZSBsb25nICop
IGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSk7CiAgICAgICAgcmV0dXJuIG9sZGJp
dDsKfQoKCnN0YXRpYyBfX2lubGluZV9fIGludCBfX3Rlc3RfYW5kX2NoYW5nZV9iaXQoaW50IG5y
LCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIGludCBvbGRiaXQ7CgogICAgICAgIF9f
YXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgImJ0Y2wgJTIsJTFcblx0c2JibCAl
MCwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChvbGRiaXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxv
bmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAobnIpIDogIm1lbW9yeSIpOwogICAg
ICAgIHJldHVybiBvbGRiaXQ7Cn0KIyAyMTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2Jp
dG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgdGVzdF9hbmRfY2hhbmdlX2JpdChpbnQgbnIs
IHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19h
c21fXyBfX3ZvbGF0aWxlX18oICIiCiAgICAgICAgICAgICAgICAiYnRjbCAlMiwlMVxuXHRzYmJs
ICUwLCUwIgogICAgICAgICAgICAgICAgOiI9ciIgKG9sZGJpdCksIj1tIiAoKCoodm9sYXRpbGUg
bG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIiIChucikgOiAibWVtb3J5Iik7CiAg
ICAgICAgcmV0dXJuIG9sZGJpdDsKfQojIDIzMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20v
Yml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBjb25zdGFudF90ZXN0X2JpdChpbnQgbnIs
IGNvbnN0IHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgcmV0dXJuICgoMVVMIDw8IChu
ciAmIDMxKSkgJiAoKChjb25zdCB2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgYWRkcilbbnIgPj4g
NV0pKSAhPSAwOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgdmFyaWFibGVfdGVzdF9iaXQoaW50
IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIGludCBvbGRiaXQ7CgogICAgICAg
IF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgImJ0bCAlMiwlMVxuXHRzYmJs
ICUwLCUwIgogICAgICAgICAgICAgICAgOiI9ciIgKG9sZGJpdCkKICAgICAgICAgICAgICAgIDoi
bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpLCJJciIgKG5yKSk7CiAgICAgICAgcmV0dXJu
IG9sZGJpdDsKfQojIDI2MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0
YXRpYyBfX2lubGluZV9fIGludCBmaW5kX2ZpcnN0X3plcm9fYml0KHZvaWQgKiBhZGRyLCB1bnNp
Z25lZCBzaXplKQp7CiAgICAgICAgaW50IGQwLCBkMSwgZDI7CiAgICAgICAgaW50IHJlczsKCiAg
ICAgICAgaWYgKCFzaXplKQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CgogICAgICAgIF9fYXNt
X18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIm1vdmwgJC0xLCUlZWF4XG5cdCIKICAg
ICAgICAgICAgICAgICJ4b3JsICUlZWR4LCUlZWR4XG5cdCIKICAgICAgICAgICAgICAgICJyZXBl
OyBzY2FzbFxuXHQiCiAgICAgICAgICAgICAgICAiamUgMWZcblx0IgogICAgICAgICAgICAgICAg
InhvcmwgLTQoJSVlZGkpLCUlZWF4XG5cdCIKICAgICAgICAgICAgICAgICJzdWJsICQ0LCUlZWRp
XG5cdCIKICAgICAgICAgICAgICAgICJic2ZsICUlZWF4LCUlZWR4XG4iCiAgICAgICAgICAgICAg
ICAiMTpcdHN1YmwgJSVlYngsJSVlZGlcblx0IgogICAgICAgICAgICAgICAgInNobGwgJDMsJSVl
ZGlcblx0IgogICAgICAgICAgICAgICAgImFkZGwgJSVlZGksJSVlZHgiCiAgICAgICAgICAgICAg
ICA6Ij1kIiAocmVzKSwgIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mYSIgKGQyKQogICAgICAg
ICAgICAgICAgOiIxIiAoKHNpemUgKyAzMSkgPj4gNSksICIyIiAoYWRkciksICJiIiAoYWRkcikp
OwogICAgICAgIHJldHVybiByZXM7Cn0KCgoKCgoKCnN0YXRpYyBfX2lubGluZV9fIGludCBmaW5k
X25leHRfemVyb19iaXQgKHZvaWQgKiBhZGRyLCBpbnQgc2l6ZSwgaW50IG9mZnNldCkKewogICAg
ICAgIHVuc2lnbmVkIGxvbmcgKiBwID0gKCh1bnNpZ25lZCBsb25nICopIGFkZHIpICsgKG9mZnNl
dCA+PiA1KTsKICAgICAgICBpbnQgc2V0ID0gMCwgYml0ID0gb2Zmc2V0ICYgMzEsIHJlczsKCiAg
ICAgICAgaWYgKGJpdCkgewoKCgogICAgICAgICAgICAgICAgX19hc21fXygiYnNmbCAlMSwlMFxu
XHQiCiAgICAgICAgICAgICAgICAgICAgICAgICJqbmUgMWZcblx0IgogICAgICAgICAgICAgICAg
ICAgICAgICAibW92bCAkMzIsICUwXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIxOiIKICAg
ICAgICAgICAgICAgICAgICAgICAgOiAiPXIiIChzZXQpCiAgICAgICAgICAgICAgICAgICAgICAg
IDogInIiICh+KCpwID4+IGJpdCkpKTsKICAgICAgICAgICAgICAgIGlmIChzZXQgPCAoMzIgLSBi
aXQpKQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0ICsgb2Zmc2V0OwogICAgICAg
ICAgICAgICAgc2V0ID0gMzIgLSBiaXQ7CiAgICAgICAgICAgICAgICBwKys7CiAgICAgICAgfQoK
CgogICAgICAgIHJlcyA9IGZpbmRfZmlyc3RfemVyb19iaXQgKHAsIHNpemUgLSAzMiAqIChwIC0g
KHVuc2lnbmVkIGxvbmcgKikgYWRkcikpOwogICAgICAgIHJldHVybiAob2Zmc2V0ICsgc2V0ICsg
cmVzKTsKfQoKCgoKCgoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBmZnoodW5zaWdu
ZWQgbG9uZyB3b3JkKQp7CiAgICAgICAgX19hc21fXygiYnNmbCAlMSwlMCIKICAgICAgICAgICAg
ICAgIDoiPXIiICh3b3JkKQogICAgICAgICAgICAgICAgOiJyIiAofndvcmQpKTsKICAgICAgICBy
ZXR1cm4gd29yZDsKfQojIDM0MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYml0b3BzLmgi
CnN0YXRpYyBfX2lubGluZV9fIGludCBmZnMoaW50IHgpCnsKICAgICAgICBpbnQgcjsKCiAgICAg
ICAgX19hc21fXygiYnNmbCAlMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAiam56IDFmXG5cdCIK
ICAgICAgICAgICAgICAgICJtb3ZsICQtMSwlMFxuIgogICAgICAgICAgICAgICAgIjE6IiA6ICI9
ciIgKHIpIDogImciICh4KSk7CiAgICAgICAgcmV0dXJuIHIrMTsKfQojIDI3ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCnN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdDsKIyA1
MCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIgpzdHJ1Y3QgZmlsZXNfc3RhdF9z
dHJ1Y3QgewogICAgICAgIGludCBucl9maWxlczsKICAgICAgICBpbnQgbnJfZnJlZV9maWxlczsK
ICAgICAgICBpbnQgbWF4X2ZpbGVzOwp9OwpleHRlcm4gc3RydWN0IGZpbGVzX3N0YXRfc3RydWN0
IGZpbGVzX3N0YXRfUjAzY2FkYTI3OwoKc3RydWN0IGlub2Rlc19zdGF0X3QgewogICAgICAgIGlu
dCBucl9pbm9kZXM7CiAgICAgICAgaW50IG5yX3VudXNlZDsKICAgICAgICBpbnQgZHVtbXlbNV07
Cn07CmV4dGVybiBzdHJ1Y3QgaW5vZGVzX3N0YXRfdCBpbm9kZXNfc3RhdDsKCmV4dGVybiBpbnQg
bGVhc2VzX2VuYWJsZSwgZGlyX25vdGlmeV9lbmFibGUsIGxlYXNlX2JyZWFrX3RpbWU7CiMgMTk5
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiCiMgMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9hc20vc2VtYXBob3JlLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L2xpbmthZ2UuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NlbWFw
aG9yZS5oIiAyCiMgMzkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAxCgoKCiMgMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvYXNtL3N5c3RlbS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9r
ZXJuZWwuaCIgMQojIDYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pbml0LmgiIDEKCgoKIyAxICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9pbml0LmgiIDIKIyAxMzEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
aW5pdC5oIgp0eXBlZGVmIGludCAoKl9faW5pdF9tb2R1bGVfZnVuY190KSh2b2lkKTsKdHlwZWRl
ZiB2b2lkICgqX19jbGVhbnVwX21vZHVsZV9mdW5jX3QpKHZvaWQpOwojIDcgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9h
c20vc2VnbWVudC5oIiAxCiMgOCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc3lzdGVtLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2JpdG9wcy5oIiAxCiMgMTEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvYml0b3BzLmgiCnN0YXRpYyBpbmxpbmUgaW50IGdl
bmVyaWNfZmZzKGludCB4KQp7CiAgICAgICAgaW50IHIgPSAxOwoKICAgICAgICBpZiAoIXgpCiAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICBpZiAoISh4ICYgMHhmZmZmKSkgewogICAg
ICAgICAgICAgICAgeCA+Pj0gMTY7CiAgICAgICAgICAgICAgICByICs9IDE2OwogICAgICAgIH0K
ICAgICAgICBpZiAoISh4ICYgMHhmZikpIHsKICAgICAgICAgICAgICAgIHggPj49IDg7CiAgICAg
ICAgICAgICAgICByICs9IDg7CiAgICAgICAgfQogICAgICAgIGlmICghKHggJiAweGYpKSB7CiAg
ICAgICAgICAgICAgICB4ID4+PSA0OwogICAgICAgICAgICAgICAgciArPSA0OwogICAgICAgIH0K
ICAgICAgICBpZiAoISh4ICYgMykpIHsKICAgICAgICAgICAgICAgIHggPj49IDI7CiAgICAgICAg
ICAgICAgICByICs9IDI7CiAgICAgICAgfQogICAgICAgIGlmICghKHggJiAxKSkgewogICAgICAg
ICAgICAgICAgeCA+Pj0gMTsKICAgICAgICAgICAgICAgIHIgKz0gMTsKICAgICAgICB9CiAgICAg
ICAgcmV0dXJuIHI7Cn0KCgoKCgoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZ2VuZXJpY19o
d2VpZ2h0MzIodW5zaWduZWQgaW50IHcpCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzID0gKHcg
JiAweDU1NTU1NTU1KSArICgodyA+PiAxKSAmIDB4NTU1NTU1NTUpOwogICAgICAgIHJlcyA9IChy
ZXMgJiAweDMzMzMzMzMzKSArICgocmVzID4+IDIpICYgMHgzMzMzMzMzMyk7CiAgICAgICAgcmVz
ID0gKHJlcyAmIDB4MEYwRjBGMEYpICsgKChyZXMgPj4gNCkgJiAweDBGMEYwRjBGKTsKICAgICAg
ICByZXMgPSAocmVzICYgMHgwMEZGMDBGRikgKyAoKHJlcyA+PiA4KSAmIDB4MDBGRjAwRkYpOwog
ICAgICAgIHJldHVybiAocmVzICYgMHgwMDAwRkZGRikgKyAoKHJlcyA+PiAxNikgJiAweDAwMDBG
RkZGKTsKfQoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZ2VuZXJpY19od2VpZ2h0MTYodW5z
aWduZWQgaW50IHcpCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzID0gKHcgJiAweDU1NTUpICsg
KCh3ID4+IDEpICYgMHg1NTU1KTsKICAgICAgICByZXMgPSAocmVzICYgMHgzMzMzKSArICgocmVz
ID4+IDIpICYgMHgzMzMzKTsKICAgICAgICByZXMgPSAocmVzICYgMHgwRjBGKSArICgocmVzID4+
IDQpICYgMHgwRjBGKTsKICAgICAgICByZXR1cm4gKHJlcyAmIDB4MDBGRikgKyAoKHJlcyA+PiA4
KSAmIDB4MDBGRik7Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdlbmVyaWNfaHdlaWdo
dDgodW5zaWduZWQgaW50IHcpCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzID0gKHcgJiAweDU1
KSArICgodyA+PiAxKSAmIDB4NTUpOwogICAgICAgIHJlcyA9IChyZXMgJiAweDMzKSArICgocmVz
ID4+IDIpICYgMHgzMyk7CiAgICAgICAgcmV0dXJuIChyZXMgJiAweDBGKSArICgocmVzID4+IDQp
ICYgMHgwRik7Cn0KCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYml0b3BzLmgiIDEK
IyA3MCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9iaXRvcHMuaCIgMgojIDkgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAyCgoKCnN0cnVjdCB0YXNrX3N0cnVjdDsK
ZXh0ZXJuIHZvaWQgX19zd2l0Y2hfdG8oc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LCBzdHJ1Y3Qg
dGFza19zdHJ1Y3QgKm5leHQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKIyA2NCAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9hc20vc3lzdGVtLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQg
bG9uZyBfZ2V0X2Jhc2UoY2hhciAqIGFkZHIpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fYmFz
ZTsKICAgICAgICBfX2FzbV9fKCJtb3ZiICUzLCUlZGhcblx0IgogICAgICAgICAgICAgICAgIm1v
dmIgJTIsJSVkbFxuXHQiCiAgICAgICAgICAgICAgICAic2hsbCAkMTYsJSVlZHhcblx0IgogICAg
ICAgICAgICAgICAgIm1vdncgJTEsJSVkeCIKICAgICAgICAgICAgICAgIDoiPSZkIiAoX19iYXNl
KQogICAgICAgICAgICAgICAgOiJtIiAoKigoYWRkcikrMikpLAogICAgICAgICAgICAgICAgICJt
IiAoKigoYWRkcikrNCkpLAogICAgICAgICAgICAgICAgICJtIiAoKigoYWRkcikrNykpKTsKICAg
ICAgICByZXR1cm4gX19iYXNlOwp9CiMgMTMxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9z
eXN0ZW0uaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGdldF9saW1pdCh1bnNpZ25lZCBs
b25nIHNlZ21lbnQpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fbGltaXQ7CiAgICAgICAgX19h
c21fXygibHNsbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChfX2xpbWl0KToiciIgKHNl
Z21lbnQpKTsKICAgICAgICByZXR1cm4gX19saW1pdCsxOwp9CgoKCgoKCgpzdHJ1Y3QgX194Y2hn
X2R1bW15IHsgdW5zaWduZWQgbG9uZyBhWzEwMF07IH07CiMgMTU4ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2FzbS9zeXN0ZW0uaCIKc3RhdGljIGlubGluZSB2b2lkIF9fc2V0XzY0Yml0ICh1bnNp
Z25lZCBsb25nIGxvbmcgKiBwdHIsCiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbG93LCB1
bnNpZ25lZCBpbnQgaGlnaCkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgKICAgICAg
ICAgICAgICAgICJcbjE6XHQiCiAgICAgICAgICAgICAgICAibW92bCAoJTApLCAlJWVheFxuXHQi
CiAgICAgICAgICAgICAgICAibW92bCA0KCUwKSwgJSVlZHhcblx0IgogICAgICAgICAgICAgICAg
ImNtcHhjaGc4YiAoJTApXG5cdCIKICAgICAgICAgICAgICAgICJqbnogMWIiCiAgICAgICAgICAg
ICAgICA6CiAgICAgICAgICAgICAgICA6ICJEIihwdHIpLAogICAgICAgICAgICAgICAgICAgICAg
ICAiYiIobG93KSwKICAgICAgICAgICAgICAgICAgICAgICAgImMiKGhpZ2gpCiAgICAgICAgICAg
ICAgICA6ICJheCIsImR4IiwibWVtb3J5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3NldF82
NGJpdF9jb25zdGFudCAodW5zaWduZWQgbG9uZyBsb25nICpwdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsdWUp
CnsKICAgICAgICBfX3NldF82NGJpdChwdHIsKHVuc2lnbmVkIGludCkodmFsdWUpLCAodW5zaWdu
ZWQgaW50KSgodmFsdWUpPj4zMlVMTCkpOwp9CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3NldF82
NGJpdF92YXIgKHVuc2lnbmVkIGxvbmcgbG9uZyAqcHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlKQp7CiAgICAgICAgX19zZXRfNjRiaXQocHRyLCoo
KCh1bnNpZ25lZCBpbnQqKSYodmFsdWUpKSswKSwgKigoKHVuc2lnbmVkIGludCopJih2YWx1ZSkp
KzEpKTsKfQojIDIwMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc3lzdGVtLmgiCnN0YXRp
YyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfX3hjaGcodW5zaWduZWQgbG9uZyB4LCB2b2xhdGlsZSB2
b2lkICogcHRyLCBpbnQgc2l6ZSkKewogICAgICAgIHN3aXRjaCAoc2l6ZSkgewogICAgICAgICAg
ICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVf
XygieGNoZ2IgJWIwLCUxIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoiPXEiICh4
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoibSIgKCooKHN0cnVjdCBfX3hjaGdf
ZHVtbXkgKikocHRyKSkpLCAiMCIgKHgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiJtZW1vcnkiKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJ4
Y2hndyAldzAsJTEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiI9ciIgKHgpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiJtIiAoKigoc3RydWN0IF9feGNoZ19kdW1t
eSAqKShwdHIpKSksICIwIiAoeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Im1l
bW9yeSIpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNh
c2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInhjaGds
ICUwLCUxIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoiPXIiICh4KQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDoibSIgKCooKHN0cnVjdCBfX3hjaGdfZHVtbXkgKiko
cHRyKSkpLCAiMCIgKHgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiJtZW1vcnki
KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHJldHVy
biB4Owp9CiMgMjM3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIKc3RhdGlj
IGlubGluZSB1bnNpZ25lZCBsb25nIF9fY21weGNoZyh2b2xhdGlsZSB2b2lkICpwdHIsIHVuc2ln
bmVkIGxvbmcgb2xkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxvbmcgbmV3LCBpbnQgc2l6ZSkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgcHJldjsKICAg
ICAgICBzd2l0Y2ggKHNpemUpIHsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICBfX2Fz
bV9fIF9fdm9sYXRpbGVfXygiIiAiY21weGNoZ2IgJWIxLCUyIgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiAiPWEiKHByZXYpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6ICJxIihuZXcpLCAibSIoKigoc3RydWN0IF9feGNoZ19kdW1teSAqKShwdHIp
KSksICIwIihvbGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJtZW1v
cnkiKTsKICAgICAgICAgICAgICAgIHJldHVybiBwcmV2OwogICAgICAgIGNhc2UgMjoKICAgICAg
ICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIiICJjbXB4Y2hndyAldzEsJTIiCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9YSIocHJldikKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogInEiKG5ldyksICJtIigqKChzdHJ1Y3QgX194Y2hn
X2R1bW15ICopKHB0cikpKSwgIjAiKG9sZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDogIm1lbW9yeSIpOwogICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7CiAgICAgICAg
Y2FzZSA0OgogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiIgImNtcHhjaGds
ICUxLCUyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPWEiKHByZXYp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJxIihuZXcpLCAibSIoKigo
c3RydWN0IF9feGNoZ19kdW1teSAqKShwdHIpKSksICIwIihvbGQpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA6ICJtZW1vcnkiKTsKICAgICAgICAgICAgICAgIHJldHVybiBw
cmV2OwogICAgICAgIH0KICAgICAgICByZXR1cm4gb2xkOwp9CiMgMzUwICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIKdm9pZCBkaXNhYmxlX2hsdF9SNzk0NDg3ZWUodm9pZCk7
CnZvaWQgZW5hYmxlX2hsdF9SOWM3MDc3YmQodm9pZCk7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBk
bWlfYnJva2VuOwpleHRlcm4gaW50IGlzX3NvbnlfdmFpb19sYXB0b3BfUjc0NjJkNWU0OwojIDQw
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zZW1hcGhvcmUuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvYXNtL2F0b21pYy5oIiAxCiMgNDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvYXNtL3NlbWFwaG9yZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC93
YWl0LmgiIDEKIyA0MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2VtYXBob3JlLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiIDEKIyAxMCAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9yd3NlbS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvbGlua2FnZS5oIiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
cndzZW0uaCIgMgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb25maWcu
aCIgMQojIDE3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAxOCAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9yd3NlbS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9rZXJuZWwuaCIgMQojIDE5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3J3c2Vt
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMQojIDIwICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMQojIDIxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L3J3c2VtLmgiIDIKCnN0cnVjdCByd19zZW1hcGhvcmU7CgoKCgojIDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvYXNtL3J3c2VtLmgiIDEKIyA0MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9h
c20vcndzZW0uaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQoj
IDQyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9yd3NlbS5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAxCiMgNDMgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvYXNtL3J3c2VtLmgiIDIKCnN0cnVjdCByd3NlbV93YWl0ZXI7CgpleHRlcm4gc3RydWN0
IHJ3X3NlbWFwaG9yZSAqcndzZW1fZG93bl9yZWFkX2ZhaWxlZChzdHJ1Y3Qgcndfc2VtYXBob3Jl
ICpzZW0pIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHN0cnVjdCByd19zZW1h
cGhvcmUgKnJ3c2VtX2Rvd25fd3JpdGVfZmFpbGVkKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkg
X19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gc3RydWN0IHJ3X3NlbWFwaG9yZSAq
cndzZW1fd2FrZShzdHJ1Y3Qgcndfc2VtYXBob3JlICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o
MykpKTsKCgoKCnN0cnVjdCByd19zZW1hcGhvcmUgewogICAgICAgIHNpZ25lZCBsb25nIGNvdW50
OwoKCgoKCgogICAgICAgIHNwaW5sb2NrX3Qgd2FpdF9sb2NrOwogICAgICAgIHN0cnVjdCBsaXN0
X2hlYWQgd2FpdF9saXN0OwoKCgp9OwojIDg0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9y
d3NlbS5oIgpzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF9yd3NlbV9SYWM0NTgzNzUoc3RydWN0IHJ3
X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgc2VtLT5jb3VudCA9IDB4MDAwMDAwMDA7CiAgICAg
ICAgZG8geyB9IHdoaWxlKDApOwogICAgICAgIGRvIHsgKCZzZW0tPndhaXRfbGlzdCktPm5leHQg
PSAoJnNlbS0+d2FpdF9saXN0KTsgKCZzZW0tPndhaXRfbGlzdCktPnByZXYgPSAoJnNlbS0+d2Fp
dF9saXN0KTsgfSB3aGlsZSAoMCk7CgoKCn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX2Rvd25f
cmVhZF9SNmViZDQ2YTUoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgX19hc21f
XyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIyBiZWdpbm5pbmcgZG93bl9yZWFkXG5c
dCIKIiIgIiAgaW5jbCAgICAgICglJWVheClcblx0IgogICAgICAgICAgICAgICAgIiAganMgICAg
ICAgIDJmXG5cdCIKICAgICAgICAgICAgICAgICIxOlxuXHQiCiAgICAgICAgICAgICAgICAiLnNl
Y3Rpb24gLnRleHQubG9jayxcImF4XCJcbiIKICAgICAgICAgICAgICAgICIyOlxuXHQiCiAgICAg
ICAgICAgICAgICAiICBwdXNobCAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgcHVz
aGwgICAgICUlZWR4XG5cdCIKICAgICAgICAgICAgICAgICIgIGNhbGwgICAgICByd3NlbV9kb3du
X3JlYWRfZmFpbGVkXG5cdCIKICAgICAgICAgICAgICAgICIgIHBvcGwgICAgICAlJWVkeFxuXHQi
CiAgICAgICAgICAgICAgICAiICBwb3BsICAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAg
IiAgam1wICAgICAgIDFiXG4iCiAgICAgICAgICAgICAgICAiLnByZXZpb3VzIgogICAgICAgICAg
ICAgICAgIiMgZW5kaW5nIGRvd25fcmVhZFxuXHQiCiAgICAgICAgICAgICAgICA6ICIrbSIoc2Vt
LT5jb3VudCkKICAgICAgICAgICAgICAgIDogImEiKHNlbSkKICAgICAgICAgICAgICAgIDogIm1l
bW9yeSIsICJjYyIpOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX19kb3duX3dyaXRlX1I3ZmQ1
NGM1YyhzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBpbnQgdG1wOwoKICAgICAg
ICB0bXAgPSAoKC0weDAwMDEwMDAwKSArIDB4MDAwMDAwMDEpOwogICAgICAgIF9fYXNtX18gX192
b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiMgYmVnaW5uaW5nIGRvd25fd3JpdGVcblx0Igoi
IiAiICB4YWRkICAgICAgJTAsKCUlZWF4KVxuXHQiCiAgICAgICAgICAgICAgICAiICB0ZXN0bCAg
ICAgJTAsJTBcblx0IgogICAgICAgICAgICAgICAgIiAgam56ICAgICAgIDJmXG5cdCIKICAgICAg
ICAgICAgICAgICIxOlxuXHQiCiAgICAgICAgICAgICAgICAiLnNlY3Rpb24gLnRleHQubG9jayxc
ImF4XCJcbiIKICAgICAgICAgICAgICAgICIyOlxuXHQiCiAgICAgICAgICAgICAgICAiICBwdXNo
bCAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgY2FsbCAgICAgIHJ3c2VtX2Rvd25f
d3JpdGVfZmFpbGVkXG5cdCIKICAgICAgICAgICAgICAgICIgIHBvcGwgICAgICAlJWVjeFxuXHQi
CiAgICAgICAgICAgICAgICAiICBqbXAgICAgICAgMWJcbiIKICAgICAgICAgICAgICAgICIucHJl
dmlvdXNcbiIKICAgICAgICAgICAgICAgICIjIGVuZGluZyBkb3duX3dyaXRlIgogICAgICAgICAg
ICAgICAgOiAiK2QiKHRtcCksICIrbSIoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDogImEi
KHNlbSkKICAgICAgICAgICAgICAgIDogIm1lbW9yeSIsICJjYyIpOwp9CgoKCgpzdGF0aWMgaW5s
aW5lIHZvaWQgX191cF9yZWFkX1I1NzgzZThlYyhzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsK
ICAgICAgICBfX3MzMiB0bXAgPSAtMHgwMDAwMDAwMTsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRp
bGVfXygKICAgICAgICAgICAgICAgICIjIGJlZ2lubmluZyBfX3VwX3JlYWRcblx0IgoiIiAiICB4
YWRkICAgICAgJSVlZHgsKCUlZWF4KVxuXHQiCiAgICAgICAgICAgICAgICAiICBqcyAgICAgICAg
MmZcblx0IgogICAgICAgICAgICAgICAgIjE6XG5cdCIKICAgICAgICAgICAgICAgICIuc2VjdGlv
biAudGV4dC5sb2NrLFwiYXhcIlxuIgogICAgICAgICAgICAgICAgIjI6XG5cdCIKICAgICAgICAg
ICAgICAgICIgIGRlY3cgICAgICAlJWR4XG5cdCIKICAgICAgICAgICAgICAgICIgIGpueiAgICAg
ICAxYlxuXHQiCiAgICAgICAgICAgICAgICAiICBwdXNobCAgICAgJSVlY3hcblx0IgogICAgICAg
ICAgICAgICAgIiAgY2FsbCAgICAgIHJ3c2VtX3dha2Vcblx0IgogICAgICAgICAgICAgICAgIiAg
cG9wbCAgICAgICUlZWN4XG5cdCIKICAgICAgICAgICAgICAgICIgIGptcCAgICAgICAxYlxuIgog
ICAgICAgICAgICAgICAgIi5wcmV2aW91c1xuIgogICAgICAgICAgICAgICAgIiMgZW5kaW5nIF9f
dXBfcmVhZFxuIgogICAgICAgICAgICAgICAgOiAiK20iKHNlbS0+Y291bnQpLCAiK2QiKHRtcCkK
ICAgICAgICAgICAgICAgIDogImEiKHNlbSkKICAgICAgICAgICAgICAgIDogIm1lbW9yeSIsICJj
YyIpOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX191cF93cml0ZV9SNzBlYzhiYzYoc3RydWN0
IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAg
ICAgICAgICAgICAiIyBiZWdpbm5pbmcgX191cF93cml0ZVxuXHQiCiAgICAgICAgICAgICAgICAi
ICBtb3ZsICAgICAgJTIsJSVlZHhcblx0IgoiIiAiICB4YWRkbCAgICAgJSVlZHgsKCUlZWF4KVxu
XHQiCiAgICAgICAgICAgICAgICAiICBqbnogICAgICAgMmZcblx0IgogICAgICAgICAgICAgICAg
IjE6XG5cdCIKICAgICAgICAgICAgICAgICIuc2VjdGlvbiAudGV4dC5sb2NrLFwiYXhcIlxuIgog
ICAgICAgICAgICAgICAgIjI6XG5cdCIKICAgICAgICAgICAgICAgICIgIGRlY3cgICAgICAlJWR4
XG5cdCIKICAgICAgICAgICAgICAgICIgIGpueiAgICAgICAxYlxuXHQiCiAgICAgICAgICAgICAg
ICAiICBwdXNobCAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgY2FsbCAgICAgIHJ3
c2VtX3dha2Vcblx0IgogICAgICAgICAgICAgICAgIiAgcG9wbCAgICAgICUlZWN4XG5cdCIKICAg
ICAgICAgICAgICAgICIgIGptcCAgICAgICAxYlxuIgogICAgICAgICAgICAgICAgIi5wcmV2aW91
c1xuIgogICAgICAgICAgICAgICAgIiMgZW5kaW5nIF9fdXBfd3JpdGVcbiIKICAgICAgICAgICAg
ICAgIDogIittIihzZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiAiYSIoc2VtKSwgImkiKC0o
KC0weDAwMDEwMDAwKSArIDB4MDAwMDAwMDEpKQogICAgICAgICAgICAgICAgOiAibWVtb3J5Iiwg
ImNjIiwgImVkeCIpOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgcndzZW1fYXRvbWljX2FkZChp
bnQgZGVsdGEsIHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIF9fYXNtX18gX192
b2xhdGlsZV9fKAoiIiAiYWRkbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPW0iKHNlbS0+Y291
bnQpCiAgICAgICAgICAgICAgICA6ImlyIihkZWx0YSksICJtIihzZW0tPmNvdW50KSk7Cn0KCgoK
CnN0YXRpYyBpbmxpbmUgaW50IHJ3c2VtX2F0b21pY191cGRhdGUoaW50IGRlbHRhLCBzdHJ1Y3Qg
cndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBpbnQgdG1wID0gZGVsdGE7CgogICAgICAgIF9f
YXNtX18gX192b2xhdGlsZV9fKAoiIiAieGFkZCAlMCwoJTIpIgogICAgICAgICAgICAgICAgOiAi
K3IiKHRtcCksICI9bSIoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDogInIiKHNlbSksICJt
IihzZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7CgogICAgICAgIHJldHVy
biB0bXArZGVsdGE7Cn0KIyAyOCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9yd3NlbS5o
IiAyCiMgNDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcndzZW0uaCIKc3RhdGljIGlu
bGluZSB2b2lkIGRvd25fcmVhZChzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgX19kb3duX3JlYWRf
UjZlYmQ0NmE1KHNlbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBkb3duX3dyaXRlKHN0cnVjdCByd19zZW1hcGhv
cmUgKnNlbSkKewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7
CiAgICAgICAgX19kb3duX3dyaXRlX1I3ZmQ1NGM1YyhzZW0pOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIHVwX3Jl
YWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDsKICAgICAgICBfX3VwX3JlYWRfUjU3ODNlOGVjKHNlbSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwp9CgoKCgpzdGF0aWMgaW5saW5l
IHZvaWQgdXBfd3JpdGUoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgX191cF93cml0ZV9SNzBlYzhi
YzYoc2VtKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwp9CiMg
NDMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAyCgpzdHJ1Y3Qgc2Vt
YXBob3JlIHsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICBpbnQgc2xlZXBlcnM7CiAg
ICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKCgoKfTsKIyA3MyAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9hc20vc2VtYXBob3JlLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBzZW1hX2luaXQgKHN0
cnVjdCBzZW1hcGhvcmUgKnNlbSwgaW50IHZhbCkKewoKCgoKCgogICAgICAgICgoKCZzZW0tPmNv
dW50KS0+Y291bnRlcikgPSAodmFsKSk7CiAgICAgICAgc2VtLT5zbGVlcGVycyA9IDA7CiAgICAg
ICAgaW5pdF93YWl0cXVldWVfaGVhZCgmc2VtLT53YWl0KTsKCgoKfQoKc3RhdGljIGlubGluZSB2
b2lkIGluaXRfTVVURVggKHN0cnVjdCBzZW1hcGhvcmUgKnNlbSkKewogICAgICAgIHNlbWFfaW5p
dChzZW0sIDEpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF9NVVRFWF9MT0NLRUQgKHN0cnVj
dCBzZW1hcGhvcmUgKnNlbSkKewogICAgICAgIHNlbWFfaW5pdChzZW0sIDApOwp9CgogX19hdHRy
aWJ1dGVfXygocmVncGFybSgwKSkpIHZvaWQgX19kb3duX2ZhaWxlZCh2b2lkICk7CiBfX2F0dHJp
YnV0ZV9fKChyZWdwYXJtKDApKSkgaW50IF9fZG93bl9mYWlsZWRfaW50ZXJydXB0aWJsZSh2b2lk
ICk7CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgaW50IF9fZG93bl9mYWlsZWRfdHJ5bG9j
ayh2b2lkICk7CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgdm9pZCBfX3VwX3dha2V1cCh2
b2lkICk7CgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIHZvaWQgX19kb3duKHN0cnVjdCBz
ZW1hcGhvcmUgKiBzZW0pOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGludCBfX2Rvd25f
aW50ZXJydXB0aWJsZShzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKTsKIF9fYXR0cmlidXRlX18oKHJl
Z3Bhcm0oMCkpKSBpbnQgX19kb3duX3RyeWxvY2soc3RydWN0IHNlbWFwaG9yZSAqIHNlbSk7CiBf
X2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgdm9pZCBfX3VwKHN0cnVjdCBzZW1hcGhvcmUgKiBz
ZW0pOwoKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgZG93bihzdHJ1Y3Qgc2VtYXBob3JlICogc2Vt
KQp7CgoKCgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiMg
YXRvbWljIGRvd24gb3BlcmF0aW9uXG5cdCIKICAgICAgICAgICAgICAgICIiICJkZWNsICUwXG5c
dCIKICAgICAgICAgICAgICAgICJqcyAyZlxuIgogICAgICAgICAgICAgICAgIjE6XG4iCiAgICAg
ICAgICAgICAgICAiLnNlY3Rpb24gLnRleHQubG9jayxcImF4XCJcbiIKICAgICAgICAgICAgICAg
ICIyOlx0Y2FsbCBfX2Rvd25fZmFpbGVkXG5cdCIKICAgICAgICAgICAgICAgICJqbXAgMWJcbiIK
ICAgICAgICAgICAgICAgICIucHJldmlvdXMiCiAgICAgICAgICAgICAgICA6Ij1tIiAoc2VtLT5j
b3VudCkKICAgICAgICAgICAgICAgIDoiYyIgKHNlbSkKICAgICAgICAgICAgICAgIDoibWVtb3J5
Iik7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIGludCBkb3duX2ludGVycnVwdGlibGUoc3RydWN0IHNl
bWFwaG9yZSAqIHNlbSkKewogICAgICAgIGludCByZXN1bHQ7CgoKCgoKICAgICAgICBfX2FzbV9f
IF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIjIGF0b21pYyBpbnRlcnJ1cHRpYmxlIGRv
d24gb3BlcmF0aW9uXG5cdCIKICAgICAgICAgICAgICAgICIiICJkZWNsICUxXG5cdCIKICAgICAg
ICAgICAgICAgICJqcyAyZlxuXHQiCiAgICAgICAgICAgICAgICAieG9ybCAlMCwlMFxuIgogICAg
ICAgICAgICAgICAgIjE6XG4iCiAgICAgICAgICAgICAgICAiLnNlY3Rpb24gLnRleHQubG9jayxc
ImF4XCJcbiIKICAgICAgICAgICAgICAgICIyOlx0Y2FsbCBfX2Rvd25fZmFpbGVkX2ludGVycnVw
dGlibGVcblx0IgogICAgICAgICAgICAgICAgImptcCAxYlxuIgogICAgICAgICAgICAgICAgIi5w
cmV2aW91cyIKICAgICAgICAgICAgICAgIDoiPWEiIChyZXN1bHQpLCAiPW0iIChzZW0tPmNvdW50
KQogICAgICAgICAgICAgICAgOiJjIiAoc2VtKQogICAgICAgICAgICAgICAgOiJtZW1vcnkiKTsK
ICAgICAgICByZXR1cm4gcmVzdWx0Owp9CgoKCgoKc3RhdGljIGlubGluZSBpbnQgZG93bl90cnls
b2NrKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0pCnsKICAgICAgICBpbnQgcmVzdWx0OwoKCgoKCiAg
ICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIyBhdG9taWMgaW50
ZXJydXB0aWJsZSBkb3duIG9wZXJhdGlvblxuXHQiCiAgICAgICAgICAgICAgICAiIiAiZGVjbCAl
MVxuXHQiCiAgICAgICAgICAgICAgICAianMgMmZcblx0IgogICAgICAgICAgICAgICAgInhvcmwg
JTAsJTBcbiIKICAgICAgICAgICAgICAgICIxOlxuIgogICAgICAgICAgICAgICAgIi5zZWN0aW9u
IC50ZXh0LmxvY2ssXCJheFwiXG4iCiAgICAgICAgICAgICAgICAiMjpcdGNhbGwgX19kb3duX2Zh
aWxlZF90cnlsb2NrXG5cdCIKICAgICAgICAgICAgICAgICJqbXAgMWJcbiIKICAgICAgICAgICAg
ICAgICIucHJldmlvdXMiCiAgICAgICAgICAgICAgICA6Ij1hIiAocmVzdWx0KSwgIj1tIiAoc2Vt
LT5jb3VudCkKICAgICAgICAgICAgICAgIDoiYyIgKHNlbSkKICAgICAgICAgICAgICAgIDoibWVt
b3J5Iik7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKfQoKCgoKCgoKc3RhdGljIGlubGluZSB2b2lk
IHVwKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0pCnsKCgoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRp
bGVfXygKICAgICAgICAgICAgICAgICIjIGF0b21pYyB1cCBvcGVyYXRpb25cblx0IgogICAgICAg
ICAgICAgICAgIiIgImluY2wgJTBcblx0IgogICAgICAgICAgICAgICAgImpsZSAyZlxuIgogICAg
ICAgICAgICAgICAgIjE6XG4iCiAgICAgICAgICAgICAgICAiLnNlY3Rpb24gLnRleHQubG9jayxc
ImF4XCJcbiIKICAgICAgICAgICAgICAgICIyOlx0Y2FsbCBfX3VwX3dha2V1cFxuXHQiCiAgICAg
ICAgICAgICAgICAiam1wIDFiXG4iCiAgICAgICAgICAgICAgICAiLnByZXZpb3VzIgogICAgICAg
ICAgICAgICAgOiI9bSIgKHNlbS0+Y291bnQpCiAgICAgICAgICAgICAgICA6ImMiIChzZW0pCiAg
ICAgICAgICAgICAgICA6Im1lbW9yeSIpOwp9CiMgMjAwICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9ieXRlb3JkZXIu
aCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3R5cGVzLmgiIDEKIyA1ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCIgMgoKCgoKCiMgMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2FzbS9ieXRlb3JkZXIuaCIgMgoKCnN0YXRpYyBfX2lubGluZV9fIF9fY29uc3RfXyBf
X3UzMiBfX19hcmNoX19zd2FiMzIoX191MzIgeCkKewoKICAgICAgICBfX2FzbV9fKCJic3dhcCAl
MCIgOiAiPXIiICh4KSA6ICIwIiAoeCkpOwoKCgoKCgoKICAgICAgICByZXR1cm4geDsKfQoKc3Rh
dGljIF9faW5saW5lX18gX19jb25zdF9fIF9fdTE2IF9fX2FyY2hfX3N3YWIxNihfX3UxNiB4KQp7
CiAgICAgICAgX19hc21fXygieGNoZ2IgJWIwLCVoMCIgOiAiPXEiICh4KSA6ICIwIiAoeCkpOyBy
ZXR1cm4geDsKCgoKfQojIDQ1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9ieXRlb3JkZXIu
aCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9saXR0bGVfZW5k
aWFuLmgiIDEKIyAxMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvbGl0
dGxlX2VuZGlhbi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvYnl0ZW9yZGVy
L3N3YWIuaCIgMQojIDEzMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIv
c3dhYi5oIgpzdGF0aWMgX19pbmxpbmVfXyBfX2NvbnN0X18gX191MTYgX19mc3dhYjE2KF9fdTE2
IHgpCnsKICAgICAgICByZXR1cm4gX19fYXJjaF9fc3dhYjE2KHgpOwp9CnN0YXRpYyBfX2lubGlu
ZV9fIF9fdTE2IF9fc3dhYjE2cChfX3UxNiAqeCkKewogICAgICAgIHJldHVybiBfX19hcmNoX19z
d2FiMTYoKih4KSk7Cn0Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX3N3YWIxNnMoX191MTYgKmFk
ZHIpCnsKICAgICAgICBkbyB7ICooYWRkcikgPSBfX19hcmNoX19zd2FiMTYoKigoYWRkcikpKTsg
fSB3aGlsZSAoMCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fY29uc3RfXyBfX3UzMiBfX2Zzd2Fi
MzIoX191MzIgeCkKewogICAgICAgIHJldHVybiBfX19hcmNoX19zd2FiMzIoeCk7Cn0Kc3RhdGlj
IF9faW5saW5lX18gX191MzIgX19zd2FiMzJwKF9fdTMyICp4KQp7CiAgICAgICAgcmV0dXJuIF9f
X2FyY2hfX3N3YWIzMigqKHgpKTsKfQpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fc3dhYjMycyhf
X3UzMiAqYWRkcikKewogICAgICAgIGRvIHsgKihhZGRyKSA9IF9fX2FyY2hfX3N3YWIzMigqKChh
ZGRyKSkpOyB9IHdoaWxlICgwKTsKfQoKCnN0YXRpYyBfX2lubGluZV9fIF9fY29uc3RfXyBfX3U2
NCBfX2Zzd2FiNjQoX191NjQgeCkKewoKICAgICAgICBfX3UzMiBoID0geCA+PiAzMjsKICAgICAg
ICBfX3UzMiBsID0geCAmICgoMVVMTDw8MzIpLTEpOwogICAgICAgIHJldHVybiAoKChfX3U2NCko
X19idWlsdGluX2NvbnN0YW50X3AoKF9fdTMyKShsKSkgPyAoeyBfX3UzMiBfX3ggPSAoKGwpKTsg
KChfX3UzMikoICgoKF9fdTMyKShfX3gpICYgKF9fdTMyKTB4MDAwMDAwZmZVTCkgPDwgMjQpIHwg
KCgoX191MzIpKF9feCkgJiAoX191MzIpMHgwMDAwZmYwMFVMKSA8PCA4KSB8ICgoKF9fdTMyKShf
X3gpICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gOCkgfCAoKChfX3UzMikoX194KSAmIChfX3Uz
MikweGZmMDAwMDAwVUwpID4+IDI0KSApKTsgfSkgOiBfX2Zzd2FiMzIoKGwpKSkpIDw8IDMyKSB8
ICgoX191NjQpKChfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191MzIpKGgpKSA/ICh7IF9fdTMyIF9f
eCA9ICgoaCkpOyAoKF9fdTMyKSggKCgoX191MzIpKF9feCkgJiAoX191MzIpMHgwMDAwMDBmZlVM
KSA8PCAyNCkgfCAoKChfX3UzMikoX194KSAmIChfX3UzMikweDAwMDBmZjAwVUwpIDw8IDgpIHwg
KCgoX191MzIpKF9feCkgJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiA4KSB8ICgoKF9fdTMyKShf
X3gpICYgKF9fdTMyKTB4ZmYwMDAwMDBVTCkgPj4gMjQpICkpOyB9KSA6IF9fZnN3YWIzMigoaCkp
KSkpOwoKCgp9CnN0YXRpYyBfX2lubGluZV9fIF9fdTY0IF9fc3dhYjY0cChfX3U2NCAqeCkKewog
ICAgICAgIHJldHVybiAoeyBfX3U2NCBfX3RtcCA9ICgqKHgpKSA7ICh7IF9fdTY0IF9feCA9IChf
X3RtcCk7ICgoX191NjQpKCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwMDAw
MDAwMDAwMGZmVUxMKSA8PCA1NikgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgw
MDAwMDAwMDAwMDBmZjAwVUxMKSA8PCA0MCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191
NjQpMHgwMDAwMDAwMDAwZmYwMDAwVUxMKSA8PCAyNCkgfCAoX191NjQpKCgoX191NjQpKF9feCkg
JiAoX191NjQpMHgwMDAwMDAwMGZmMDAwMDAwVUxMKSA8PCA4KSB8IChfX3U2NCkoKChfX3U2NCko
X194KSAmIChfX3U2NCkweDAwMDAwMGZmMDAwMDAwMDBVTEwpID4+IDgpIHwgKF9fdTY0KSgoKF9f
dTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMGZmMDAwMDAwMDAwMFVMTCkgPj4gMjQpIHwgKF9fdTY0
KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDBmZjAwMDAwMDAwMDAwMFVMTCkgPj4gNDApIHwg
KF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4ZmYwMDAwMDAwMDAwMDAwMFVMTCkgPj4g
NTYpICkpOyB9KTsgfSk7Cn0Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX3N3YWI2NHMoX191NjQg
KmFkZHIpCnsKICAgICAgICBkbyB7ICooYWRkcikgPSAoeyBfX3U2NCBfX3RtcCA9ICgqKChhZGRy
KSkpIDsgKHsgX191NjQgX194ID0gKF9fdG1wKTsgKChfX3U2NCkoIChfX3U2NCkoKChfX3U2NCko
X194KSAmIChfX3U2NCkweDAwMDAwMDAwMDAwMDAwZmZVTEwpIDw8IDU2KSB8IChfX3U2NCkoKChf
X3U2NCkoX194KSAmIChfX3U2NCkweDAwMDAwMDAwMDAwMGZmMDBVTEwpIDw8IDQwKSB8IChfX3U2
NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDAwMDAwMDBmZjAwMDBVTEwpIDw8IDI0KSB8
IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDAwMDAwZmYwMDAwMDBVTEwpIDw8
IDgpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwZmYwMDAwMDAwMFVM
TCkgPj4gOCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwZmYwMDAwMDAw
MDAwVUxMKSA+PiAyNCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMGZmMDAw
MDAwMDAwMDAwVUxMKSA+PiA0MCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHhm
ZjAwMDAwMDAwMDAwMDAwVUxMKSA+PiA1NikgKSk7IH0pOyB9KTsgfSB3aGlsZSAoMCk7Cn0KIyAx
MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5o
IiAyCiMgNjYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2xpdHRsZV9l
bmRpYW4uaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9nZW5l
cmljLmgiIDEKIyAxNTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2dl
bmVyaWMuaCIKZXh0ZXJuIF9fdTMyIG50b2hsKF9fdTMyKTsKZXh0ZXJuIF9fdTMyIGh0b25sKF9f
dTMyKTsKCgoKCmV4dGVybiB1bnNpZ25lZCBzaG9ydCBpbnQgbnRvaHModW5zaWduZWQgc2hvcnQg
aW50KTsKZXh0ZXJuIHVuc2lnbmVkIHNob3J0IGludCBodG9ucyh1bnNpZ25lZCBzaG9ydCBpbnQp
OwojIDY3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9saXR0bGVfZW5k
aWFuLmgiIDIKIyA0NiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmgiIDIK
IyAyMDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgoKZXh0ZXJuIHZvaWQg
dXBkYXRlX2F0aW1lX1IzMTIwZmI3ZCAoc3RydWN0IGlub2RlICopOwoKCmV4dGVybiB2b2lkIGJ1
ZmZlcl9pbml0KHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gdm9pZCBpbm9kZV9pbml0KHVuc2lnbmVk
IGxvbmcpOwpleHRlcm4gdm9pZCBtbnRfaW5pdCh1bnNpZ25lZCBsb25nKTsKCgplbnVtIGJoX3N0
YXRlX2JpdHMgewogICAgICAgIEJIX1VwdG9kYXRlLAogICAgICAgIEJIX0RpcnR5LAogICAgICAg
IEJIX0xvY2ssCiAgICAgICAgQkhfUmVxLAogICAgICAgIEJIX01hcHBlZCwKICAgICAgICBCSF9O
ZXcsCiAgICAgICAgQkhfQXN5bmMsCiAgICAgICAgQkhfV2FpdF9JTywKICAgICAgICBCSF9sYXVu
ZGVyLAogICAgICAgIEJIX0pCRCwKCiAgICAgICAgQkhfUHJpdmF0ZVN0YXJ0LAoKCn07CiMgMjM4
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0cnVjdCBidWZmZXJfaGVhZCB7
CgogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYl9uZXh0OwogICAgICAgIHVuc2lnbmVkIGxv
bmcgYl9ibG9ja25yOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGJfc2l6ZTsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCBiX2xpc3Q7CiAgICAgICAga2Rldl90IGJfZGV2OwoKICAgICAgICBhdG9taWNf
dCBiX2NvdW50OwogICAgICAgIGtkZXZfdCBiX3JkZXY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBi
X3N0YXRlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgYl9mbHVzaHRpbWU7CgogICAgICAgIHN0cnVj
dCBidWZmZXJfaGVhZCAqYl9uZXh0X2ZyZWU7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpi
X3ByZXZfZnJlZTsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJfdGhpc19wYWdlOwogICAg
ICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYl9yZXFuZXh0OwoKICAgICAgICBzdHJ1Y3QgYnVmZmVy
X2hlYWQgKipiX3BwcmV2OwogICAgICAgIGNoYXIgKiBiX2RhdGE7CiAgICAgICAgc3RydWN0IHBh
Z2UgKmJfcGFnZTsKICAgICAgICB2b2lkICgqYl9lbmRfaW8pKHN0cnVjdCBidWZmZXJfaGVhZCAq
YmgsIGludCB1cHRvZGF0ZSk7CiAgICAgICAgdm9pZCAqYl9wcml2YXRlOwoKICAgICAgICB1bnNp
Z25lZCBsb25nIGJfcnNlY3RvcjsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBiX3dhaXQ7Cgog
ICAgICAgIHN0cnVjdCBpbm9kZSAqIGJfaW5vZGU7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBi
X2lub2RlX2J1ZmZlcnM7Cn07Cgp0eXBlZGVmIHZvaWQgKGJoX2VuZF9pb190KShzdHJ1Y3QgYnVm
ZmVyX2hlYWQgKmJoLCBpbnQgdXB0b2RhdGUpOwp2b2lkIGluaXRfYnVmZmVyX1I0OGNkNWIzZShz
dHJ1Y3QgYnVmZmVyX2hlYWQgKiwgYmhfZW5kX2lvX3QgKiwgdm9pZCAqKTsKIyAyODQgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKZXh0ZXJuIHZvaWQgc2V0X2JoX3BhZ2VfUmE3
YzM0NDYzKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25l
ZCBsb25nIG9mZnNldCk7CgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcGlw
ZV9mc19pLmgiIDEKCgoKCnN0cnVjdCBwaXBlX2lub2RlX2luZm8gewogICAgICAgIHdhaXRfcXVl
dWVfaGVhZF90IHdhaXQ7CiAgICAgICAgY2hhciAqYmFzZTsKICAgICAgICB1bnNpZ25lZCBpbnQg
bGVuOwogICAgICAgIHVuc2lnbmVkIGludCBzdGFydDsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVh
ZGVyczsKICAgICAgICB1bnNpZ25lZCBpbnQgd3JpdGVyczsKICAgICAgICB1bnNpZ25lZCBpbnQg
d2FpdGluZ19yZWFkZXJzOwogICAgICAgIHVuc2lnbmVkIGludCB3YWl0aW5nX3dyaXRlcnM7CiAg
ICAgICAgdW5zaWduZWQgaW50IHJfY291bnRlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgd19jb3Vu
dGVyOwp9OwojIDQyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3BpcGVfZnNfaS5oIgp2
b2lkIHBpcGVfd2FpdChzdHJ1Y3QgaW5vZGUgKiBpbm9kZSk7CgpzdHJ1Y3QgaW5vZGUqIHBpcGVf
bmV3KHN0cnVjdCBpbm9kZSogaW5vZGUpOwojIDI5MCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9taW5peF9mc19p
LmgiIDEKCgoKCgoKc3RydWN0IG1pbml4X2lub2RlX2luZm8gewogICAgICAgIHVuaW9uIHsKICAg
ICAgICAgICAgICAgIF9fdTE2IGkxX2RhdGFbMTZdOwogICAgICAgICAgICAgICAgX191MzIgaTJf
ZGF0YVsxNl07CiAgICAgICAgfSB1Owp9OwojIDI5MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9leHQyX2ZzX2ku
aCIgMQojIDIyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2V4dDJfZnNfaS5oIgpzdHJ1
Y3QgZXh0Ml9pbm9kZV9pbmZvIHsKICAgICAgICBfX3UzMiBpX2RhdGFbMTVdOwogICAgICAgIF9f
dTMyIGlfZmxhZ3M7CiAgICAgICAgX191MzIgaV9mYWRkcjsKICAgICAgICBfX3U4IGlfZnJhZ19u
bzsKICAgICAgICBfX3U4IGlfZnJhZ19zaXplOwogICAgICAgIF9fdTE2IGlfb3N5bmM7CiAgICAg
ICAgX191MzIgaV9maWxlX2FjbDsKICAgICAgICBfX3UzMiBpX2Rpcl9hY2w7CiAgICAgICAgX191
MzIgaV9kdGltZTsKICAgICAgICBfX3UzMiBpX2Jsb2NrX2dyb3VwOwogICAgICAgIF9fdTMyIGlf
bmV4dF9hbGxvY19ibG9jazsKICAgICAgICBfX3UzMiBpX25leHRfYWxsb2NfZ29hbDsKICAgICAg
ICBfX3UzMiBpX3ByZWFsbG9jX2Jsb2NrOwogICAgICAgIF9fdTMyIGlfcHJlYWxsb2NfY291bnQ7
CiAgICAgICAgX191MzIgaV9kaXJfc3RhcnRfbG9va3VwOwogICAgICAgIGludCBpX25ld19pbm9k
ZToxOwp9OwojIDI5MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9leHQzX2ZzX2kuaCIgMQojIDE5ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L2V4dDNfZnNfaS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvcndzZW0uaCIgMQojIDIwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L2V4dDNfZnNfaS5oIiAyCgoKCgpzdHJ1Y3QgZXh0M19pbm9kZV9pbmZvIHsKICAgICAgICBfX3Uz
MiBpX2RhdGFbMTVdOwogICAgICAgIF9fdTMyIGlfZmxhZ3M7CgoKCgoKCiAgICAgICAgX191MzIg
aV9maWxlX2FjbDsKICAgICAgICBfX3UzMiBpX2Rpcl9hY2w7CiAgICAgICAgX191MzIgaV9kdGlt
ZTsKICAgICAgICBfX3UzMiBpX2Jsb2NrX2dyb3VwOwogICAgICAgIF9fdTMyIGlfc3RhdGU7CiAg
ICAgICAgX191MzIgaV9uZXh0X2FsbG9jX2Jsb2NrOwogICAgICAgIF9fdTMyIGlfbmV4dF9hbGxv
Y19nb2FsOwoKCgoKICAgICAgICBfX3UzMiBpX2Rpcl9zdGFydF9sb29rdXA7CgogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgaV9vcnBoYW47CiMgNjMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvZXh0M19mc19pLmgiCiAgICAgICAgbG9mZl90IGlfZGlza3NpemU7CiMgNzUgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvZXh0M19mc19pLmgiCiAgICAgICAgc3RydWN0IHJ3X3NlbWFw
aG9yZSB0cnVuY2F0ZV9zZW07Cn07CiMgMjkzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2hwZnNfZnNfaS5oIiAx
CgoKCnN0cnVjdCBocGZzX2lub2RlX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgbW11X3By
aXZhdGU7CiAgICAgICAgaW5vX3QgaV9wYXJlbnRfZGlyOwogICAgICAgIHVuc2lnbmVkIGlfZG5v
OwogICAgICAgIHVuc2lnbmVkIGlfZHBvczsKICAgICAgICB1bnNpZ25lZCBpX2RzdWJkbm87CiAg
ICAgICAgdW5zaWduZWQgaV9maWxlX3NlYzsKICAgICAgICB1bnNpZ25lZCBpX2Rpc2tfc2VjOwog
ICAgICAgIHVuc2lnbmVkIGlfbl9zZWNzOwogICAgICAgIHVuc2lnbmVkIGlfZWFfc2l6ZTsKICAg
ICAgICB1bnNpZ25lZCBpX2NvbnYgOiAyOwogICAgICAgIHVuc2lnbmVkIGlfZWFfbW9kZSA6IDE7
CiAgICAgICAgdW5zaWduZWQgaV9lYV91aWQgOiAxOwogICAgICAgIHVuc2lnbmVkIGlfZWFfZ2lk
IDogMTsKICAgICAgICB1bnNpZ25lZCBpX2RpcnR5IDogMTsKICAgICAgICBzdHJ1Y3Qgc2VtYXBo
b3JlIGlfc2VtOwogICAgICAgIGxvZmZfdCAqKmlfcmRkaXJfb2ZmOwp9OwojIDI5NCAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9udGZzX2ZzX2kuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvdHlwZXMuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbnRmc19mc19p
LmgiIDIKCgpzdHJ1Y3QgbnRmc19hdHRyaWJ1dGU7CnN0cnVjdCBudGZzX3NiX2luZm87CgoKCgp0
eXBlZGVmIHU4IG50ZnNfdTg7CnR5cGVkZWYgdTE2IG50ZnNfdTE2Owp0eXBlZGVmIHUzMiBudGZz
X3UzMjsKdHlwZWRlZiB1NjQgbnRmc191NjQ7CnR5cGVkZWYgczggbnRmc19zODsKdHlwZWRlZiBz
MTYgbnRmc19zMTY7CnR5cGVkZWYgczMyIG50ZnNfczMyOwp0eXBlZGVmIHM2NCBudGZzX3M2NDsK
CgoKCnR5cGVkZWYgX19rZXJuZWxfbW9kZV90IG50bW9kZV90OwoKCgp0eXBlZGVmIHVpZF90IG50
ZnNfdWlkX3Q7CgoKCnR5cGVkZWYgZ2lkX3QgbnRmc19naWRfdDsKCgoKdHlwZWRlZiBfX2tlcm5l
bF9zaXplX3QgbnRmc19zaXplX3Q7CgoKCnR5cGVkZWYgX19rZXJuZWxfdGltZV90IG50ZnNfdGlt
ZV90OwoKCgoKCnR5cGVkZWYgdTE2IG50ZnNfd2NoYXJfdDsKCgoKCnR5cGVkZWYgczY0IG50ZnNf
b2Zmc2V0X3Q7CgoKCgp0eXBlZGVmIHU2NCBudGZzX3RpbWU2NF90OwojIDY5ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L250ZnNfZnNfaS5oIgp0eXBlZGVmIHMzMiBudGZzX2NsdXN0ZXJf
dDsKCgoKc3RydWN0IG50ZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgc3RydWN0IG50ZnNfc2JfaW5m
byAqdm9sOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9udW1iZXI7CiAgICAgICAgX191MTYgc2Vx
dWVuY2VfbnVtYmVyOwogICAgICAgIHVuc2lnbmVkIGNoYXIgKmF0dHI7CiAgICAgICAgaW50IGF0
dHJfY291bnQ7CiAgICAgICAgc3RydWN0IG50ZnNfYXR0cmlidXRlICphdHRyczsKICAgICAgICBp
bnQgcmVjb3JkX2NvdW50OwogICAgICAgIGludCAqcmVjb3JkczsKCiAgICAgICAgdW5pb24gewog
ICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlY29y
ZHNpemU7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBjbHVzdGVyc19wZXJfcmVjb3JkOwog
ICAgICAgICAgICAgICAgfSBpbmRleDsKICAgICAgICB9IHU7Cn07CiMgMjk1ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L21zZG9zX2ZzX2kuaCIgMQoKCgoKCgoKc3RydWN0IG1zZG9zX2lub2RlX2luZm8gewogICAg
ICAgIHVuc2lnbmVkIGxvbmcgbW11X3ByaXZhdGU7CiAgICAgICAgaW50IGlfc3RhcnQ7CiAgICAg
ICAgaW50IGlfbG9nc3RhcnQ7CiAgICAgICAgaW50IGlfYXR0cnM7CiAgICAgICAgaW50IGlfY3Rp
bWVfbXM7CiAgICAgICAgaW50IGlfbG9jYXRpb247CiAgICAgICAgc3RydWN0IGlub2RlICppX2Zh
dF9pbm9kZTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGlfZmF0X2hhc2g7Cn07CiMgMjk2ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L3Vtc2Rvc19mc19pLmgiIDEKCgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9tc2Rvc19mc19pLmgiIDEKIyA5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3Vtc2Rvc19mc19pLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3BpcGVfZnNfaS5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdW1zZG9z
X2ZzX2kuaCIgMgojIDM5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Vtc2Rvc19mc19p
LmgiCnN0cnVjdCBkaXJfbG9ja2luZ19pbmZvIHsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBw
OwogICAgICAgIHNob3J0IGludCBsb29raW5nOwogICAgICAgIHNob3J0IGludCBjcmVhdGluZzsK
CgoKICAgICAgICBsb25nIHBpZDsKCn07CgpzdHJ1Y3QgdW1zZG9zX2lub2RlX2luZm8gewogICAg
ICAgIHN0cnVjdCBtc2Rvc19pbm9kZV9pbmZvIG1zZG9zX2luZm87CiAgICAgICAgc3RydWN0IGRp
cl9sb2NraW5nX2luZm8gZGlyX2luZm87CiAgICAgICAgaW50IGlfcGF0Y2hlZDsKICAgICAgICBp
bnQgaV9pc19obGluazsKICAgICAgICBvZmZfdCBwb3M7Cn07CiMgMjk3ICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L2lzb19mc19pLmgiIDEKCgoKZW51bSBpc29mc19maWxlX2Zvcm1hdCB7CiAgICAgICAgaXNvZnNf
ZmlsZV9ub3JtYWwgPSAwLAogICAgICAgIGlzb2ZzX2ZpbGVfc3BhcnNlID0gMSwKICAgICAgICBp
c29mc19maWxlX2NvbXByZXNzZWQgPSAyLAp9OwoKCgoKc3RydWN0IGlzb19pbm9kZV9pbmZvIHsK
ICAgICAgICB1bnNpZ25lZCBpbnQgaV9maXJzdF9leHRlbnQ7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBpX2ZpbGVfZm9ybWF0OwogICAgICAgIHVuc2lnbmVkIGNoYXIgaV9mb3JtYXRfcGFybVszXTsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGlfbmV4dF9zZWN0aW9uX2lubzsKICAgICAgICBvZmZfdCBp
X3NlY3Rpb25fc2l6ZTsKfTsKIyAyOTggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmZzX2ZzX2kuaCIgMQoKCgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3R5cGVzLmgiIDEKIyA1ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2xpc3QuaCIgMQojIDYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmZz
X2ZzX2kuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmZzLmgiIDEKIyAx
MCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uZnMuaCIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L3N1bnJwYy9tc2dfcHJvdC5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvc3VucnBjL21zZ19wcm90LmgiCmVudW0gcnBjX2F1dGhfZmxhdm9yIHsK
ICAgICAgICBSUENfQVVUSF9OVUxMID0gMCwKICAgICAgICBSUENfQVVUSF9VTklYID0gMSwKICAg
ICAgICBSUENfQVVUSF9TSE9SVCA9IDIsCiAgICAgICAgUlBDX0FVVEhfREVTID0gMywKICAgICAg
ICBSUENfQVVUSF9LUkIgPSA0LAp9OwoKZW51bSBycGNfbXNnX3R5cGUgewogICAgICAgIFJQQ19D
QUxMID0gMCwKICAgICAgICBSUENfUkVQTFkgPSAxCn07CgplbnVtIHJwY19yZXBseV9zdGF0IHsK
ICAgICAgICBSUENfTVNHX0FDQ0VQVEVEID0gMCwKICAgICAgICBSUENfTVNHX0RFTklFRCA9IDEK
fTsKCmVudW0gcnBjX2FjY2VwdF9zdGF0IHsKICAgICAgICBSUENfU1VDQ0VTUyA9IDAsCiAgICAg
ICAgUlBDX1BST0dfVU5BVkFJTCA9IDEsCiAgICAgICAgUlBDX1BST0dfTUlTTUFUQ0ggPSAyLAog
ICAgICAgIFJQQ19QUk9DX1VOQVZBSUwgPSAzLAogICAgICAgIFJQQ19HQVJCQUdFX0FSR1MgPSA0
LAogICAgICAgIFJQQ19TWVNURU1fRVJSID0gNQp9OwoKZW51bSBycGNfcmVqZWN0X3N0YXQgewog
ICAgICAgIFJQQ19NSVNNQVRDSCA9IDAsCiAgICAgICAgUlBDX0FVVEhfRVJST1IgPSAxCn07Cgpl
bnVtIHJwY19hdXRoX3N0YXQgewogICAgICAgIFJQQ19BVVRIX09LID0gMCwKICAgICAgICBSUENf
QVVUSF9CQURDUkVEID0gMSwKICAgICAgICBSUENfQVVUSF9SRUpFQ1RFRENSRUQgPSAyLAogICAg
ICAgIFJQQ19BVVRIX0JBRFZFUkYgPSAzLAogICAgICAgIFJQQ19BVVRIX1JFSkVDVEVEVkVSRiA9
IDQsCiAgICAgICAgUlBDX0FVVEhfVE9PV0VBSyA9IDUKfTsKIyAxMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9uZnMuaCIgMgojIDQxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L25mcy5oIgogZW51bSBuZnNfc3RhdCB7CiAgICAgICAgTkZTX09LID0gMCwKICAgICAgICBORlNF
UlJfUEVSTSA9IDEsCiAgICAgICAgTkZTRVJSX05PRU5UID0gMiwKICAgICAgICBORlNFUlJfSU8g
PSA1LAogICAgICAgIE5GU0VSUl9OWElPID0gNiwKICAgICAgICBORlNFUlJfRUFHQUlOID0gMTEs
CiAgICAgICAgTkZTRVJSX0FDQ0VTID0gMTMsCiAgICAgICAgTkZTRVJSX0VYSVNUID0gMTcsCiAg
ICAgICAgTkZTRVJSX1hERVYgPSAxOCwKICAgICAgICBORlNFUlJfTk9ERVYgPSAxOSwKICAgICAg
ICBORlNFUlJfTk9URElSID0gMjAsCiAgICAgICAgTkZTRVJSX0lTRElSID0gMjEsCiAgICAgICAg
TkZTRVJSX0lOVkFMID0gMjIsCiAgICAgICAgTkZTRVJSX0ZCSUcgPSAyNywKICAgICAgICBORlNF
UlJfTk9TUEMgPSAyOCwKICAgICAgICBORlNFUlJfUk9GUyA9IDMwLAogICAgICAgIE5GU0VSUl9N
TElOSyA9IDMxLAogICAgICAgIE5GU0VSUl9PUE5PVFNVUFAgPSA0NSwKICAgICAgICBORlNFUlJf
TkFNRVRPT0xPTkcgPSA2MywKICAgICAgICBORlNFUlJfTk9URU1QVFkgPSA2NiwKICAgICAgICBO
RlNFUlJfRFFVT1QgPSA2OSwKICAgICAgICBORlNFUlJfU1RBTEUgPSA3MCwKICAgICAgICBORlNF
UlJfUkVNT1RFID0gNzEsCiAgICAgICAgTkZTRVJSX1dGTFVTSCA9IDk5LAogICAgICAgIE5GU0VS
Ul9CQURIQU5ETEUgPSAxMDAwMSwKICAgICAgICBORlNFUlJfTk9UX1NZTkMgPSAxMDAwMiwKICAg
ICAgICBORlNFUlJfQkFEX0NPT0tJRSA9IDEwMDAzLAogICAgICAgIE5GU0VSUl9OT1RTVVBQID0g
MTAwMDQsCiAgICAgICAgTkZTRVJSX1RPT1NNQUxMID0gMTAwMDUsCiAgICAgICAgTkZTRVJSX1NF
UlZFUkZBVUxUID0gMTAwMDYsCiAgICAgICAgTkZTRVJSX0JBRFRZUEUgPSAxMDAwNywKICAgICAg
ICBORlNFUlJfSlVLRUJPWCA9IDEwMDA4CiB9OwoKCgplbnVtIG5mc19mdHlwZSB7CiAgICAgICAg
TkZOT04gPSAwLAogICAgICAgIE5GUkVHID0gMSwKICAgICAgICBORkRJUiA9IDIsCiAgICAgICAg
TkZCTEsgPSAzLAogICAgICAgIE5GQ0hSID0gNCwKICAgICAgICBORkxOSyA9IDUsCiAgICAgICAg
TkZTT0NLID0gNiwKICAgICAgICBORkJBRCA9IDcsCiAgICAgICAgTkZGSUZPID0gOAp9OwoKCgoK
CgpzdHJ1Y3QgbmZzX2ZoIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzaXplOwogICAgICAgIHVu
c2lnbmVkIGNoYXIgZGF0YVs2NF07Cn07CiMgMTA3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L25mcy5oIgplbnVtIG5mczNfc3RhYmxlX2hvdyB7CiAgICAgICAgTkZTX1VOU1RBQkxFID0g
MCwKICAgICAgICBORlNfREFUQV9TWU5DID0gMSwKICAgICAgICBORlNfRklMRV9TWU5DID0gMgp9
OwojIDcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmZzX2ZzX2kuaCIgMgoKCgoKc3Ry
dWN0IG5mc19pbm9kZV9pbmZvIHsKCgoKICAgICAgICBfX3U2NCBmc2lkOwogICAgICAgIF9fdTY0
IGZpbGVpZDsKCgoKCiAgICAgICAgc3RydWN0IG5mc19maCBmaDsKCgoKCiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgZmxhZ3M7CiMgNDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmZzX2Zz
X2kuaCIKICAgICAgICB1bnNpZ25lZCBsb25nIHJlYWRfY2FjaGVfamlmZmllczsKICAgICAgICBf
X3U2NCByZWFkX2NhY2hlX2N0aW1lOwogICAgICAgIF9fdTY0IHJlYWRfY2FjaGVfbXRpbWU7CiAg
ICAgICAgX191NjQgcmVhZF9jYWNoZV9pc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGF0dHJ0
aW1lbzsKICAgICAgICB1bnNpZ25lZCBsb25nIGF0dHJ0aW1lb190aW1lc3RhbXA7CgoKCgoKICAg
ICAgICBfX3UzMiBjb29raWV2ZXJmWzJdOwoKCgoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHJl
YWQ7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkaXJ0eTsKICAgICAgICBzdHJ1Y3QgbGlzdF9o
ZWFkIGNvbW1pdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHdyaXRlYmFjazsKCiAgICAgICAg
dW5zaWduZWQgaW50IG5yZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaXJ0
eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuY29tbWl0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5wYWdlczsKCgogICAgICAgIHN0cnVjdCBpbm9kZSAqaGFzaF9u
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpoYXNoX3ByZXY7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBuZXh0c2NhbjsKCgogICAgICAgIHN0cnVjdCBycGNfY3JlZCAqbW1fY3Jl
ZDsKfTsKIyA5MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uZnNfZnNfaS5oIgpzdHJ1
Y3QgbmZzX2xvY2tfaW5mbyB7CiAgICAgICAgdTMyIHN0YXRlOwogICAgICAgIHUzMiBmbGFnczsK
ICAgICAgICBzdHJ1Y3QgbmxtX2hvc3QgKmhvc3Q7Cn07CiMgMjk5ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N5
c3ZfZnNfaS5oIiAxCgoKCgoKCnN0cnVjdCBzeXN2X2lub2RlX2luZm8gewogICAgICAgIHUzMiBp
X2RhdGFbMTArMSsxKzFdOwoKCgoKICAgICAgICB1MzIgaV9kaXJfc3RhcnRfbG9va3VwOwp9Owoj
IDMwMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9hZmZzX2ZzX2kuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvYS5vdXQuaCIgMQoKCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2FzbS9hLm91dC5oIiAxCgoKCnN0cnVjdCBleGVjCnsKICB1bnNpZ25lZCBsb25nIGFfaW5m
bzsKICB1bnNpZ25lZCBhX3RleHQ7CiAgdW5zaWduZWQgYV9kYXRhOwogIHVuc2lnbmVkIGFfYnNz
OwogIHVuc2lnbmVkIGFfc3ltczsKICB1bnNpZ25lZCBhX2VudHJ5OwogIHVuc2lnbmVkIGFfdHJz
aXplOwogIHVuc2lnbmVkIGFfZHJzaXplOwp9OwojIDkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvYS5vdXQuaCIgMgoKCgoKZW51bSBtYWNoaW5lX3R5cGUgewoKCgogIE1fT0xEU1VOMiA9
IDAsCgoKCgogIE1fNjgwMTAgPSAxLAoKCgoKICBNXzY4MDIwID0gMiwKCgoKCiAgTV9TUEFSQyA9
IDMsCgoKICBNXzM4NiA9IDEwMCwKICBNX01JUFMxID0gMTUxLAogIE1fTUlQUzIgPSAxNTIKfTsK
IyAxMzEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvYS5vdXQuaCIKIyAxICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2FzbS9wYWdlLmgiIDEKIyAxMzIgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvYS5vdXQuaCIgMgojIDE1NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9h
Lm91dC5oIgpzdHJ1Y3Qgbmxpc3QgewogIHVuaW9uIHsKICAgIGNoYXIgKm5fbmFtZTsKICAgIHN0
cnVjdCBubGlzdCAqbl9uZXh0OwogICAgbG9uZyBuX3N0cng7CiAgfSBuX3VuOwogIHVuc2lnbmVk
IGNoYXIgbl90eXBlOwogIGNoYXIgbl9vdGhlcjsKICBzaG9ydCBuX2Rlc2M7CiAgdW5zaWduZWQg
bG9uZyBuX3ZhbHVlOwp9OwojIDIzNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9hLm91
dC5oIgpzdHJ1Y3QgcmVsb2NhdGlvbl9pbmZvCnsKCiAgaW50IHJfYWRkcmVzczsKCiAgdW5zaWdu
ZWQgaW50IHJfc3ltYm9sbnVtOjI0OwoKCgogIHVuc2lnbmVkIGludCByX3BjcmVsOjE7CgoKICB1
bnNpZ25lZCBpbnQgcl9sZW5ndGg6MjsKCgoKCgoKICB1bnNpZ25lZCBpbnQgcl9leHRlcm46MTsK
CgoKCgoKCiAgdW5zaWduZWQgaW50IHJfcGFkOjQ7Cgp9OwojIDUgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvYWZmc19mc19pLmgiIDIKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvdGltZS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGFyYW0u
aCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdGltZS5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgNiAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC90aW1lLmgiIDIKCgoKc3RydWN0IHRpbWVzcGVjIHsKICAgICAgICB0aW1l
X3QgdHZfc2VjOwogICAgICAgIGxvbmcgdHZfbnNlYzsKfTsKIyAzMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC90aW1lLmgiCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcKdGlt
ZXNwZWNfdG9famlmZmllcyhzdHJ1Y3QgdGltZXNwZWMgKnZhbHVlKQp7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzZWMgPSB2YWx1ZS0+dHZfc2VjOwogICAgICAgIGxvbmcgbnNlYyA9IHZhbHVlLT50
dl9uc2VjOwoKICAgICAgICBpZiAoc2VjID49ICgoKH4wVUwgPj4gMSktMSkgLyAxMDApKQogICAg
ICAgICAgICAgICAgcmV0dXJuICgofjBVTCA+PiAxKS0xKTsKICAgICAgICBuc2VjICs9IDEwMDAw
MDAwMDBMIC8gMTAwIC0gMTsKICAgICAgICBuc2VjIC89IDEwMDAwMDAwMDBMIC8gMTAwOwogICAg
ICAgIHJldHVybiAxMDAgKiBzZWMgKyBuc2VjOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkCmpp
ZmZpZXNfdG9fdGltZXNwZWModW5zaWduZWQgbG9uZyBqaWZmaWVzX1IwZGEwMmQ2Nywgc3RydWN0
IHRpbWVzcGVjICp2YWx1ZSkKewogICAgICAgIHZhbHVlLT50dl9uc2VjID0gKGppZmZpZXNfUjBk
YTAyZDY3ICUgMTAwKSAqICgxMDAwMDAwMDAwTCAvIDEwMCk7CiAgICAgICAgdmFsdWUtPnR2X3Nl
YyA9IGppZmZpZXNfUjBkYTAyZDY3IC8gMTAwOwp9CiMgNjcgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvdGltZS5oIgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKbWt0aW1lICh1bnNp
Z25lZCBpbnQgeWVhciwgdW5zaWduZWQgaW50IG1vbiwKICAgICAgICB1bnNpZ25lZCBpbnQgZGF5
LCB1bnNpZ25lZCBpbnQgaG91ciwKICAgICAgICB1bnNpZ25lZCBpbnQgbWluLCB1bnNpZ25lZCBp
bnQgc2VjKQp7CiAgICAgICAgaWYgKDAgPj0gKGludCkgKG1vbiAtPSAyKSkgewogICAgICAgICAg
ICAgICAgbW9uICs9IDEyOwogICAgICAgICAgICAgICAgeWVhciAtPSAxOwogICAgICAgIH0KCiAg
ICAgICAgcmV0dXJuICgoKAogICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpICh5ZWFyLzQg
LSB5ZWFyLzEwMCArIHllYXIvNDAwICsgMzY3Km1vbi8xMiArIGRheSkgKwogICAgICAgICAgICAg
ICAgICAgICAgICB5ZWFyKjM2NSAtIDcxOTQ5OQogICAgICAgICAgICApKjI0ICsgaG91cgogICAg
ICAgICAgKSo2MCArIG1pbgogICAgICAgICkqNjAgKyBzZWM7Cn0KCgoKCnN0cnVjdCB0aW1ldmFs
IHsKICAgICAgICB0aW1lX3QgdHZfc2VjOwogICAgICAgIHN1c2Vjb25kc190IHR2X3VzZWM7Cn07
CgpzdHJ1Y3QgdGltZXpvbmUgewogICAgICAgIGludCB0el9taW51dGVzd2VzdDsKICAgICAgICBp
bnQgdHpfZHN0dGltZTsKfTsKCgoKCmV4dGVybiB2b2lkIGRvX2dldHRpbWVvZmRheV9SNzIyNzBl
MzUoc3RydWN0IHRpbWV2YWwgKnR2KTsKZXh0ZXJuIHZvaWQgZG9fc2V0dGltZW9mZGF5X1IxOWQ3
YjFmZihzdHJ1Y3QgdGltZXZhbCAqdHYpOwpleHRlcm4gdm9pZCBnZXRfZmFzdF90aW1lX1I2MDc0
MzAyMihzdHJ1Y3QgdGltZXZhbCAqdHYpOwpleHRlcm4gdm9pZCAoKmRvX2dldF9mYXN0X3RpbWUp
KHN0cnVjdCB0aW1ldmFsICopOwojIDEyMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90
aW1lLmgiCnN0cnVjdCBpdGltZXJzcGVjIHsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgaXRfaW50
ZXJ2YWw7CiAgICAgICAgc3RydWN0IHRpbWVzcGVjIGl0X3ZhbHVlOwp9OwoKc3RydWN0IGl0aW1l
cnZhbCB7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgaXRfaW50ZXJ2YWw7CiAgICAgICAgc3RydWN0
IHRpbWV2YWwgaXRfdmFsdWU7Cn07CiMgOCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9h
ZmZzX2ZzX2kuaCIgMgojIDE3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2FmZnNfZnNf
aS5oIgpzdHJ1Y3QgYWZmc19leHRfa2V5IHsKICAgICAgICB1MzIgZXh0OwogICAgICAgIHUzMiBr
ZXk7Cn07CgoKCgpzdHJ1Y3QgYWZmc19pbm9kZV9pbmZvIHsKICAgICAgICB1MzIgaV9vcGVuY250
OwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgaV9saW5rX2xvY2s7CiAgICAgICAgc3RydWN0IHNl
bWFwaG9yZSBpX2V4dF9sb2NrOwoKICAgICAgICB1MzIgaV9ibGtjbnQ7CiAgICAgICAgdTMyIGlf
ZXh0Y250OwogICAgICAgIHUzMiAqaV9sYzsKICAgICAgICB1MzIgaV9sY19zaXplOwogICAgICAg
IHUzMiBpX2xjX3NoaWZ0OwogICAgICAgIHUzMiBpX2xjX21hc2s7CiAgICAgICAgc3RydWN0IGFm
ZnNfZXh0X2tleSAqaV9hYzsKICAgICAgICB1MzIgaV9leHRfbGFzdDsKICAgICAgICBzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKmlfZXh0X2JoOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbW11X3ByaXZhdGU7
CiAgICAgICAgdTMyIGlfcHJvdGVjdDsKICAgICAgICB1MzIgaV9sYXN0YWxsb2M7CiAgICAgICAg
aW50IGlfcGFfY250OwojIDUxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2FmZnNfZnNf
aS5oIgp9OwojIDMwMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC91ZnNfZnNfaS5oIiAxCiMgMTYgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvdWZzX2ZzX2kuaCIKc3RydWN0IHVmc19pbm9kZV9pbmZvIHsK
ICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBfX3UzMiBpX2RhdGFbMTVdOwogICAgICAg
ICAgICAgICAgX191OCBpX3N5bWxpbmtbNCoxNV07CiAgICAgICAgfSBpX3UxOwogICAgICAgIF9f
dTMyIGlfZmxhZ3M7CiAgICAgICAgX191MzIgaV9nZW47CiAgICAgICAgX191MzIgaV9zaGFkb3c7
CiAgICAgICAgX191MzIgaV91bnVzZWQxOwogICAgICAgIF9fdTMyIGlfdW51c2VkMjsKICAgICAg
ICBfX3UzMiBpX29lZnRmbGFnOwogICAgICAgIF9fdTE2IGlfb3N5bmM7CiAgICAgICAgX191MzIg
aV9sYXN0ZnJhZzsKfTsKIyAzMDIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZWZzX2ZzX2kuaCIgMQojIDEyICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Vmc19mc19pLmgiCnR5cGVkZWYgaW50MzJfdCBl
ZnNfYmxvY2tfdDsKdHlwZWRlZiB1aW50MzJfdCBlZnNfaW5vX3Q7CgoKCgoKCnR5cGVkZWYgdW5p
b24gZXh0ZW50X3UgewogICAgICAgIHVuc2lnbmVkIGNoYXIgcmF3WzhdOwogICAgICAgIHN0cnVj
dCBleHRlbnRfcyB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXhfbWFnaWM6ODsKICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBleF9ibjoyNDsKICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBleF9sZW5ndGg6ODsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBleF9vZmZz
ZXQ6MjQ7CiAgICAgICAgfSBjb29rZWQ7Cn0gZWZzX2V4dGVudDsKCnR5cGVkZWYgc3RydWN0IGVk
ZXZzIHsKICAgICAgICBzaG9ydCBvZGV2OwogICAgICAgIHVuc2lnbmVkIGludCBuZGV2Owp9IGVm
c19kZXZzOwoKCgoKCnN0cnVjdCBlZnNfZGlub2RlIHsKICAgICAgICB1X3Nob3J0IGRpX21vZGU7
CiAgICAgICAgc2hvcnQgZGlfbmxpbms7CiAgICAgICAgdV9zaG9ydCBkaV91aWQ7CiAgICAgICAg
dV9zaG9ydCBkaV9naWQ7CiAgICAgICAgaW50MzJfdCBkaV9zaXplOwogICAgICAgIGludDMyX3Qg
ZGlfYXRpbWU7CiAgICAgICAgaW50MzJfdCBkaV9tdGltZTsKICAgICAgICBpbnQzMl90IGRpX2N0
aW1lOwogICAgICAgIHVpbnQzMl90IGRpX2dlbjsKICAgICAgICBzaG9ydCBkaV9udW1leHRlbnRz
OwogICAgICAgIHVfY2hhciBkaV92ZXJzaW9uOwogICAgICAgIHVfY2hhciBkaV9zcGFyZTsKICAg
ICAgICB1bmlvbiBkaV9hZGRyIHsKICAgICAgICAgICAgICAgIGVmc19leHRlbnQgZGlfZXh0ZW50
c1sxMl07CiAgICAgICAgICAgICAgICBlZnNfZGV2cyBkaV9kZXY7CiAgICAgICAgfSBkaV91Owp9
OwoKCnN0cnVjdCBlZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgaW50IG51bWV4dGVudHM7CiAgICAg
ICAgaW50IGxhc3RleHRlbnQ7CgogICAgICAgIGVmc19leHRlbnQgZXh0ZW50c1sxMl07Cn07CiMg
MzAzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L2NvZGFfZnNfaS5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvY29kYV9mc19pLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC90eXBlcy5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29kYV9mc19p
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQojIDE0ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvZGFfZnNfaS5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9jb2RhLmgiIDEKIyAxMDkgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvY29kYS5oIgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1X3F1YWRfdDsKIyAx
NjQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29kYS5oIgpzdHJ1Y3QgdmVudXNfZGly
ZW50IHsKICAgICAgICB1bnNpZ25lZCBsb25nIGRfZmlsZW5vOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IGRfcmVjbGVuOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZF90eXBlOwogICAgICAgIHVuc2ln
bmVkIGNoYXIgZF9uYW1sZW47CiAgICAgICAgY2hhciBkX25hbWVbMjU1ICsgMV07Cn07CiMgMTk4
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvZGEuaCIKdHlwZWRlZiB1X2xvbmcgVm9s
dW1lSWQ7CnR5cGVkZWYgdV9sb25nIFZub2RlSWQ7CnR5cGVkZWYgdV9sb25nIFVuaXF1ZV90Owp0
eXBlZGVmIHVfbG9uZyBGaWxlVmVyc2lvbjsKCgoKCnR5cGVkZWYgc3RydWN0IFZpY2VGaWQgewog
ICAgVm9sdW1lSWQgVm9sdW1lOwogICAgVm5vZGVJZCBWbm9kZTsKICAgIFVuaXF1ZV90IFVuaXF1
ZTsKfSBWaWNlRmlkOwoKCgoKc3RhdGljIF9faW5saW5lX18gaW5vX3QgY29kYV9mMmkoc3RydWN0
IFZpY2VGaWQgKmZpZCkKewogICAgICAgIGlmICggISBmaWQgKQogICAgICAgICAgICAgICAgcmV0
dXJuIDA7CiAgICAgICAgaWYgKGZpZC0+Vm5vZGUgPT0gMHhmZmZmZmZmZSB8fCBmaWQtPlZub2Rl
ID09IDB4ZmZmZmZmZmYpCiAgICAgICAgICAgICAgICByZXR1cm4gKChmaWQtPlZvbHVtZSA8PCAy
MCkgfCAoZmlkLT5VbmlxdWUgJiAweGZmZmZmKSk7CiAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgcmV0dXJuIChmaWQtPlVuaXF1ZSArIChmaWQtPlZub2RlPDwxMCkgKyAoZmlkLT5Wb2x1bWU8
PDIwKSk7Cn0KIyAyMzMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29kYS5oIgp0eXBl
ZGVmIHVfaW50MzJfdCB2dWlkX3Q7CnR5cGVkZWYgdV9pbnQzMl90IHZnaWRfdDsKCgoKCnN0cnVj
dCBjb2RhX2NyZWQgewogICAgdnVpZF90IGNyX3VpZCwgY3JfZXVpZCwgY3Jfc3VpZCwgY3JfZnN1
aWQ7CiAgICB2Z2lkX3QgY3JfZ3JvdXBpZCwgY3JfZWdpZCwgY3Jfc2dpZCwgY3JfZnNnaWQ7Cn07
CgoKCgoKCgplbnVtIGNvZGFfdnR5cGUgeyBDX1ZOT04sIENfVlJFRywgQ19WRElSLCBDX1ZCTEss
IENfVkNIUiwgQ19WTE5LLCBDX1ZTT0NLLCBDX1ZGSUZPLCBDX1ZCQUQgfTsKCnN0cnVjdCBjb2Rh
X3ZhdHRyIHsKICAgICAgICBsb25nIHZhX3R5cGU7CiAgICAgICAgdV9zaG9ydCB2YV9tb2RlOwog
ICAgICAgIHNob3J0IHZhX25saW5rOwogICAgICAgIHZ1aWRfdCB2YV91aWQ7CiAgICAgICAgdmdp
ZF90IHZhX2dpZDsKICAgICAgICBsb25nIHZhX2ZpbGVpZDsKICAgICAgICB1X3F1YWRfdCB2YV9z
aXplOwogICAgICAgIGxvbmcgdmFfYmxvY2tzaXplOwogICAgICAgIHN0cnVjdCB0aW1lc3BlYyB2
YV9hdGltZTsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdmFfbXRpbWU7CiAgICAgICAgc3RydWN0
IHRpbWVzcGVjIHZhX2N0aW1lOwogICAgICAgIHVfbG9uZyB2YV9nZW47CiAgICAgICAgdV9sb25n
IHZhX2ZsYWdzOwogICAgICAgIHVfcXVhZF90IHZhX3JkZXY7CiAgICAgICAgdV9xdWFkX3QgdmFf
Ynl0ZXM7CiAgICAgICAgdV9xdWFkX3QgdmFfZmlsZXJldjsKfTsKCgoKCnN0cnVjdCBjb2RhX3N0
YXRmcyB7CiAgICBpbnQzMl90IGZfYmxvY2tzOwogICAgaW50MzJfdCBmX2JmcmVlOwogICAgaW50
MzJfdCBmX2JhdmFpbDsKICAgIGludDMyX3QgZl9maWxlczsKICAgIGludDMyX3QgZl9mZnJlZTsK
fTsKIyAzMzcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29kYS5oIgpzdHJ1Y3QgY29k
YV9pbl9oZHIgewogICAgdW5zaWduZWQgbG9uZyBvcGNvZGU7CiAgICB1bnNpZ25lZCBsb25nIHVu
aXF1ZTsKICAgIHVfc2hvcnQgcGlkOwogICAgdV9zaG9ydCBwZ2lkOwogICAgdV9zaG9ydCBzaWQ7
CiAgICBzdHJ1Y3QgY29kYV9jcmVkIGNyZWQ7Cn07CgoKc3RydWN0IGNvZGFfb3V0X2hkciB7CiAg
ICB1bnNpZ25lZCBsb25nIG9wY29kZTsKICAgIHVuc2lnbmVkIGxvbmcgdW5pcXVlOwogICAgdW5z
aWduZWQgbG9uZyByZXN1bHQ7Cn07CgoKc3RydWN0IGNvZGFfcm9vdF9vdXQgewogICAgc3RydWN0
IGNvZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX3Jvb3Rf
aW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGluOwp9OwoKCnN0cnVjdCBjb2RhX29wZW5faW4g
ewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGZs
YWdzOwp9OwoKc3RydWN0IGNvZGFfb3Blbl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBv
aDsKICAgIHVfcXVhZF90IGRldjsKICAgIGlub190IGlub2RlOwp9OwoKCgpzdHJ1Y3QgY29kYV9z
dG9yZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAg
ICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9zdG9yZV9vdXQgewogICAgc3RydWN0IGNvZGFf
b3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfcmVsZWFzZV9pbiB7CiAgICBzdHJ1Y3QgY29k
YV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3Qg
Y29kYV9yZWxlYXNlX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1
Y3QgY29kYV9jbG9zZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlk
IFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9jbG9zZV9vdXQgewogICAgc3Ry
dWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfaW9jdGxfaW4gewogICAgc3Ry
dWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGNtZDsKICAgIGlu
dCBsZW47CiAgICBpbnQgcndmbGFnOwogICAgY2hhciAqZGF0YTsKfTsKCnN0cnVjdCBjb2RhX2lv
Y3RsX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgaW50IGxlbjsKICAgIGNh
ZGRyX3QgZGF0YTsKfTsKCgoKc3RydWN0IGNvZGFfZ2V0YXR0cl9pbiB7CiAgICBzdHJ1Y3QgY29k
YV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7Cn07CgpzdHJ1Y3QgY29kYV9nZXRhdHRyX291
dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0
cjsKfTsKCgoKc3RydWN0IGNvZGFfc2V0YXR0cl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIg
aWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwp9OwoKc3Ry
dWN0IGNvZGFfc2V0YXR0cl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoK
c3RydWN0IGNvZGFfYWNjZXNzX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZp
Y2VGaWQgVkZpZDsKICAgIGludCBmbGFnczsKfTsKCnN0cnVjdCBjb2RhX2FjY2Vzc19vdXQgewog
ICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKCgoKCgpzdHJ1Y3QgY29kYV9sb29rdXBf
aW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50
IG5hbWU7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9sb29rdXBfb3V0IHsKICAgIHN0
cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgdnR5cGU7Cn07
CgoKCnN0cnVjdCBjb2RhX2NyZWF0ZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAg
ICBWaWNlRmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50IGV4Y2w7
CiAgICBpbnQgbW9kZTsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfY3JlYXRlX291dCB7
CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBWRmlkOwogICAgc3RydWN0
IGNvZGFfdmF0dHIgYXR0cjsKfTsKCgoKc3RydWN0IGNvZGFfcmVtb3ZlX2luIHsKICAgIHN0cnVj
dCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBuYW1lOwp9OwoKc3Ry
dWN0IGNvZGFfcmVtb3ZlX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpz
dHJ1Y3QgY29kYV9saW5rX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VG
aWQgc291cmNlRmlkOwogICAgVmljZUZpZCBkZXN0RmlkOwogICAgaW50IHRuYW1lOwp9OwoKc3Ry
dWN0IGNvZGFfbGlua19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKCnN0
cnVjdCBjb2RhX3JlbmFtZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNl
RmlkIHNvdXJjZUZpZDsKICAgIGludCBzcmNuYW1lOwogICAgVmljZUZpZCBkZXN0RmlkOwogICAg
aW50IGRlc3RuYW1lOwp9OwoKc3RydWN0IGNvZGFfcmVuYW1lX291dCB7CiAgICBzdHJ1Y3QgY29k
YV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV9ta2Rpcl9pbiB7CiAgICBzdHJ1Y3QgY29k
YV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRy
OwogICAgaW50IG5hbWU7Cn07CgpzdHJ1Y3QgY29kYV9ta2Rpcl9vdXQgewogICAgc3RydWN0IGNv
ZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIHN0cnVjdCBjb2RhX3ZhdHRyIGF0
dHI7Cn07CgoKCnN0cnVjdCBjb2RhX3JtZGlyX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBp
aDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfcm1kaXJf
b3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoKCnN0cnVjdCBjb2RhX3N5bWxp
bmtfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAg
aW50IHNyY25hbWU7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50IHRuYW1lOwp9
OwoKc3RydWN0IGNvZGFfc3ltbGlua19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7
Cn07CgoKc3RydWN0IGNvZGFfcmVhZGxpbmtfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGlo
OwogICAgVmljZUZpZCBWRmlkOwp9OwoKc3RydWN0IGNvZGFfcmVhZGxpbmtfb3V0IHsKICAgIHN0
cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBpbnQgY291bnQ7CiAgICBjYWRkcl90IGRhdGE7Cn07
CgoKCnN0cnVjdCBjb2RhX2ZzeW5jX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAg
IFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX2ZzeW5jX291dCB7CiAgICBzdHJ1Y3QgY29k
YV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV92Z2V0X2luIHsKICAgIHN0cnVjdCBjb2Rh
X2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX3ZnZXRfb3V0IHsK
ICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgdnR5
cGU7Cn07CiMgNjE2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvZGEuaCIKc3RydWN0
IGNvZGFfcHVyZ2V1c2VyX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgc3Ry
dWN0IGNvZGFfY3JlZCBjcmVkOwp9OwoKCgpzdHJ1Y3QgY29kYV96YXBmaWxlX291dCB7CiAgICBz
dHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBDb2RhRmlkOwp9OwoKCgpzdHJ1Y3Qg
Y29kYV96YXBkaXJfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlk
IENvZGFGaWQ7Cn07CgoKCnN0cnVjdCBjb2RhX3phcHZub2RlX291dCB7CiAgICBzdHJ1Y3QgY29k
YV9vdXRfaGRyIG9oOwogICAgc3RydWN0IGNvZGFfY3JlZCBjcmVkOwogICAgVmljZUZpZCBWRmlk
Owp9OwoKCgpzdHJ1Y3QgY29kYV9wdXJnZWZpZF9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hk
ciBvaDsKICAgIFZpY2VGaWQgQ29kYUZpZDsKfTsKCgoKc3RydWN0IGNvZGFfcmVwbGFjZV9vdXQg
ewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgTmV3RmlkOwogICAgVmlj
ZUZpZCBPbGRGaWQ7Cn07CgoKc3RydWN0IGNvZGFfb3Blbl9ieV9mZF9pbiB7CiAgICBzdHJ1Y3Qg
Y29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1
Y3QgY29kYV9vcGVuX2J5X2ZkX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAg
aW50IGZkOwoKCiAgICBzdHJ1Y3QgZmlsZSAqZmg7Cgp9OwoKCnN0cnVjdCBjb2RhX29wZW5fYnlf
cGF0aF9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAg
ICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9vcGVuX2J5X3BhdGhfb3V0IHsKICAgIHN0cnVj
dCBjb2RhX291dF9oZHIgb2g7CiAgICAgICAgaW50IHBhdGg7Cn07CgoKc3RydWN0IGNvZGFfc3Rh
dGZzX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpbjsKfTsKCnN0cnVjdCBjb2RhX3N0YXRm
c19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIHN0cnVjdCBjb2RhX3N0YXRm
cyBzdGF0Owp9OwojIDcwMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb2RhLmgiCnVu
aW9uIGlucHV0QXJncyB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBzdHJ1Y3QgY29k
YV9vcGVuX2luIGNvZGFfb3BlbjsKICAgIHN0cnVjdCBjb2RhX3N0b3JlX2luIGNvZGFfc3RvcmU7
CiAgICBzdHJ1Y3QgY29kYV9yZWxlYXNlX2luIGNvZGFfcmVsZWFzZTsKICAgIHN0cnVjdCBjb2Rh
X2Nsb3NlX2luIGNvZGFfY2xvc2U7CiAgICBzdHJ1Y3QgY29kYV9pb2N0bF9pbiBjb2RhX2lvY3Rs
OwogICAgc3RydWN0IGNvZGFfZ2V0YXR0cl9pbiBjb2RhX2dldGF0dHI7CiAgICBzdHJ1Y3QgY29k
YV9zZXRhdHRyX2luIGNvZGFfc2V0YXR0cjsKICAgIHN0cnVjdCBjb2RhX2FjY2Vzc19pbiBjb2Rh
X2FjY2VzczsKICAgIHN0cnVjdCBjb2RhX2xvb2t1cF9pbiBjb2RhX2xvb2t1cDsKICAgIHN0cnVj
dCBjb2RhX2NyZWF0ZV9pbiBjb2RhX2NyZWF0ZTsKICAgIHN0cnVjdCBjb2RhX3JlbW92ZV9pbiBj
b2RhX3JlbW92ZTsKICAgIHN0cnVjdCBjb2RhX2xpbmtfaW4gY29kYV9saW5rOwogICAgc3RydWN0
IGNvZGFfcmVuYW1lX2luIGNvZGFfcmVuYW1lOwogICAgc3RydWN0IGNvZGFfbWtkaXJfaW4gY29k
YV9ta2RpcjsKICAgIHN0cnVjdCBjb2RhX3JtZGlyX2luIGNvZGFfcm1kaXI7CiAgICBzdHJ1Y3Qg
Y29kYV9zeW1saW5rX2luIGNvZGFfc3ltbGluazsKICAgIHN0cnVjdCBjb2RhX3JlYWRsaW5rX2lu
IGNvZGFfcmVhZGxpbms7CiAgICBzdHJ1Y3QgY29kYV9mc3luY19pbiBjb2RhX2ZzeW5jOwogICAg
c3RydWN0IGNvZGFfdmdldF9pbiBjb2RhX3ZnZXQ7CiAgICBzdHJ1Y3QgY29kYV9vcGVuX2J5X2Zk
X2luIGNvZGFfb3Blbl9ieV9mZDsKICAgIHN0cnVjdCBjb2RhX29wZW5fYnlfcGF0aF9pbiBjb2Rh
X29wZW5fYnlfcGF0aDsKICAgIHN0cnVjdCBjb2RhX3N0YXRmc19pbiBjb2RhX3N0YXRmczsKfTsK
CnVuaW9uIG91dHB1dEFyZ3MgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIHN0cnVj
dCBjb2RhX3Jvb3Rfb3V0IGNvZGFfcm9vdDsKICAgIHN0cnVjdCBjb2RhX29wZW5fb3V0IGNvZGFf
b3BlbjsKICAgIHN0cnVjdCBjb2RhX2lvY3RsX291dCBjb2RhX2lvY3RsOwogICAgc3RydWN0IGNv
ZGFfZ2V0YXR0cl9vdXQgY29kYV9nZXRhdHRyOwogICAgc3RydWN0IGNvZGFfbG9va3VwX291dCBj
b2RhX2xvb2t1cDsKICAgIHN0cnVjdCBjb2RhX2NyZWF0ZV9vdXQgY29kYV9jcmVhdGU7CiAgICBz
dHJ1Y3QgY29kYV9ta2Rpcl9vdXQgY29kYV9ta2RpcjsKICAgIHN0cnVjdCBjb2RhX3JlYWRsaW5r
X291dCBjb2RhX3JlYWRsaW5rOwogICAgc3RydWN0IGNvZGFfdmdldF9vdXQgY29kYV92Z2V0Owog
ICAgc3RydWN0IGNvZGFfcHVyZ2V1c2VyX291dCBjb2RhX3B1cmdldXNlcjsKICAgIHN0cnVjdCBj
b2RhX3phcGZpbGVfb3V0IGNvZGFfemFwZmlsZTsKICAgIHN0cnVjdCBjb2RhX3phcGRpcl9vdXQg
Y29kYV96YXBkaXI7CiAgICBzdHJ1Y3QgY29kYV96YXB2bm9kZV9vdXQgY29kYV96YXB2bm9kZTsK
ICAgIHN0cnVjdCBjb2RhX3B1cmdlZmlkX291dCBjb2RhX3B1cmdlZmlkOwogICAgc3RydWN0IGNv
ZGFfcmVwbGFjZV9vdXQgY29kYV9yZXBsYWNlOwogICAgc3RydWN0IGNvZGFfb3Blbl9ieV9mZF9v
dXQgY29kYV9vcGVuX2J5X2ZkOwogICAgc3RydWN0IGNvZGFfb3Blbl9ieV9wYXRoX291dCBjb2Rh
X29wZW5fYnlfcGF0aDsKICAgIHN0cnVjdCBjb2RhX3N0YXRmc19vdXQgY29kYV9zdGF0ZnM7Cn07
Cgp1bmlvbiBjb2RhX2Rvd25jYWxscyB7CgoKICAgIHN0cnVjdCBjb2RhX3B1cmdldXNlcl9vdXQg
cHVyZ2V1c2VyOwogICAgc3RydWN0IGNvZGFfemFwZmlsZV9vdXQgemFwZmlsZTsKICAgIHN0cnVj
dCBjb2RhX3phcGRpcl9vdXQgemFwZGlyOwogICAgc3RydWN0IGNvZGFfemFwdm5vZGVfb3V0IHph
cHZub2RlOwogICAgc3RydWN0IGNvZGFfcHVyZ2VmaWRfb3V0IHB1cmdlZmlkOwogICAgc3RydWN0
IGNvZGFfcmVwbGFjZV9vdXQgcmVwbGFjZTsKfTsKCgoKCgoKCnN0cnVjdCBWaWNlSW9jdGwgewog
ICAgICAgIGNhZGRyX3QgaW4sIG91dDsKICAgICAgICBzaG9ydCBpbl9zaXplOwogICAgICAgIHNo
b3J0IG91dF9zaXplOwp9OwoKc3RydWN0IFBpb2N0bERhdGEgewogICAgICAgIGNvbnN0IGNoYXIg
KnBhdGg7CiAgICAgICAgaW50IGZvbGxvdzsKICAgICAgICBzdHJ1Y3QgVmljZUlvY3RsIHZpOwp9
OwojIDc5NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb2RhLmgiCnN0cnVjdCBjb2Rh
X21vdW50X2RhdGEgewogICAgICAgIGludCB2ZXJzaW9uOwogICAgICAgIGludCBmZDsKfTsKIyAx
NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb2RhX2ZzX2kuaCIgMgoKCgoKc3RydWN0
IGNvZGFfaW5vZGVfaW5mbyB7CiAgICAgICAgc3RydWN0IFZpY2VGaWQgY19maWQ7CiAgICAgICAg
dV9zaG9ydCBjX2ZsYWdzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgY19jaWxpc3Q7CiAgICAg
ICAgc3RydWN0IGZpbGUgKmNfY29udGFpbmVyOwogICAgICAgIHVuc2lnbmVkIGludCBjX2NvbnRj
b3VudDsKICAgICAgICBzdHJ1Y3QgY29kYV9jcmVkIGNfY2FjaGVkX2NyZWQ7CiAgICAgICAgdW5z
aWduZWQgaW50IGNfY2FjaGVkX3Blcm07Cn07CgoKCgoKCgppbnQgY29kYV9jbm9kZV9tYWtlKHN0
cnVjdCBpbm9kZSAqKiwgc3RydWN0IFZpY2VGaWQgKiwgc3RydWN0IHN1cGVyX2Jsb2NrICopOwpp
bnQgY29kYV9jbm9kZV9tYWtlY3RsKHN0cnVjdCBpbm9kZSAqKmlub2RlLCBzdHJ1Y3Qgc3VwZXJf
YmxvY2sgKnNiKTsKc3RydWN0IGlub2RlICpjb2RhX2ZpZF90b19pbm9kZShWaWNlRmlkICpmaWQs
IHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwp2b2lkIGNvZGFfcmVwbGFjZV9maWQoc3RydWN0IGlu
b2RlICosIFZpY2VGaWQgKiwgVmljZUZpZCAqKTsKIyAzMDQgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcm9tZnNf
ZnNfaS5oIiAxCgoKCgoKc3RydWN0IHJvbWZzX2lub2RlX2luZm8gewogICAgICAgIHVuc2lnbmVk
IGxvbmcgaV9tZXRhc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGlfZGF0YW9mZnNldDsKfTsK
IyAzMDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvc2htZW1fZnMuaCIgMQojIDE2ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L3NobWVtX2ZzLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHZhbDsKfSBzd3BfZW50cnlfdDsKCmV4dGVybiBhdG9taWNfdCBzaG1lbV9ucnBhZ2Vz
OwoKc3RydWN0IHNobWVtX2lub2RlX2luZm8gewogICAgICAgIHNwaW5sb2NrX3QgbG9jazsKICAg
ICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKICAgICAgICB1bnNpZ25lZCBsb25nIG5leHRfaW5k
ZXg7CiAgICAgICAgc3dwX2VudHJ5X3QgaV9kaXJlY3RbMTZdOwogICAgICAgIHZvaWQgKippX2lu
ZGlyZWN0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3dhcHBlZDsKICAgICAgICBpbnQgbG9ja2Vk
OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlu
b2RlOwp9OwoKc3RydWN0IHNobWVtX3NiX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgbWF4
X2Jsb2NrczsKICAgICAgICB1bnNpZ25lZCBsb25nIGZyZWVfYmxvY2tzOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgbWF4X2lub2RlczsKICAgICAgICB1bnNpZ25lZCBsb25nIGZyZWVfaW5vZGVzOwog
ICAgICAgIHNwaW5sb2NrX3Qgc3RhdF9sb2NrOwp9OwojIDMwNiAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zbWJf
ZnNfaS5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc21iX2ZzX2kuaCIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAxNCAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9zbWJfZnNfaS5oIiAyCgoKCgpzdHJ1Y3Qgc21iX2lub2Rl
X2luZm8gewoKCgoKCiAgICAgICAgdW5zaWduZWQgaW50IG9wZW47CiAgICAgICAgX191MTYgZmls
ZWlkOwogICAgICAgIF9fdTE2IGF0dHI7CgogICAgICAgIF9fdTE2IGFjY2VzczsKICAgICAgICBf
X3UxNiBmbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIG9sZG10aW1lOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgY2xvc2VkOwogICAgICAgIHVuc2lnbmVkIG9wZW5lcnM7Cn07CiMgMzA3ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2hmc19mc19pLmgiIDEKIyAxOSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9oZnNfZnNfaS5oIgpzdHJ1Y3QgaGZzX2lub2RlX2luZm8gewogICAgICAgIGludCBtYWdpYzsK
CiAgICAgICAgdW5zaWduZWQgbG9uZyBtbXVfcHJpdmF0ZTsKICAgICAgICBzdHJ1Y3QgaGZzX2Nh
dF9lbnRyeSAqZW50cnk7CgoKICAgICAgICBzdHJ1Y3QgaGZzX2ZvcmsgKmZvcms7CiAgICAgICAg
aW50IGNvbnZlcnQ7CgoKICAgICAgICBpbm9fdCBmaWxlX3R5cGU7CiAgICAgICAgY2hhciBkaXJf
c2l6ZTsKCgogICAgICAgIGNvbnN0IHN0cnVjdCBoZnNfaGRyX2xheW91dCAqZGVmYXVsdF9sYXlv
dXQ7CiAgICAgICAgc3RydWN0IGhmc19oZHJfbGF5b3V0ICpsYXlvdXQ7CgoKICAgICAgICBpbnQg
dHpfc2Vjb25kc3dlc3Q7CgoKICAgICAgICB2b2lkICgqZF9kcm9wX29wKShzdHJ1Y3QgZGVudHJ5
ICosIGNvbnN0IGlub190KTsKfTsKIyAzMDggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
ZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvYWRmc19mc19pLmgiIDEK
IyAxMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9hZGZzX2ZzX2kuaCIKc3RydWN0IGFk
ZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtbXVfcHJpdmF0ZTsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHBhcmVudF9pZDsKICAgICAgICBfX3UzMiBsb2FkYWRkcjsKICAgICAg
ICBfX3UzMiBleGVjYWRkcjsKICAgICAgICB1bnNpZ25lZCBpbnQgZmlsZXR5cGU7CiAgICAgICAg
dW5zaWduZWQgaW50IGF0dHI7CiAgICAgICAgaW50IHN0YW1wZWQ6MTsKfTsKIyAzMDkgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvcW54NF9mc19pLmgiIDEKIyAxNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9xbng0X2ZzX2kuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3FueHR5cGVz
LmgiIDEKIyAxNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9xbnh0eXBlcy5oIgp0eXBl
ZGVmIF9fdTE2IHFueDRfbnh0bnRfdDsKdHlwZWRlZiBfX3U4IHFueDRfZnR5cGVfdDsKCnR5cGVk
ZWYgc3RydWN0IHsKICAgICAgICBfX3UzMiB4dG50X2JsazsKICAgICAgICBfX3UzMiB4dG50X3Np
emU7Cn0gcW54NF94dG50X3Q7Cgp0eXBlZGVmIF9fdTE2IHFueDRfbW9kZV90Owp0eXBlZGVmIF9f
dTE2IHFueDRfbXVpZF90Owp0eXBlZGVmIF9fdTE2IHFueDRfbWdpZF90Owp0eXBlZGVmIF9fdTMy
IHFueDRfb2ZmX3Q7CnR5cGVkZWYgX191MTYgcW54NF9ubGlua190OwojIDE1ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3FueDRfZnNfaS5oIiAyCgoKCgpzdHJ1Y3QgcW54NF9pbm9kZV9p
bmZvIHsKICAgICAgICBjaGFyIGlfcmVzZXJ2ZWRbMTZdOwogICAgICAgIHFueDRfb2ZmX3QgaV9z
aXplOwogICAgICAgIHFueDRfeHRudF90IGlfZmlyc3RfeHRudDsKICAgICAgICBfX3UzMiBpX3hi
bGs7CiAgICAgICAgX19zMzIgaV9mdGltZTsKICAgICAgICBfX3MzMiBpX210aW1lOwogICAgICAg
IF9fczMyIGlfYXRpbWU7CiAgICAgICAgX19zMzIgaV9jdGltZTsKICAgICAgICBxbng0X254dG50
X3QgaV9udW1feHRudHM7CiAgICAgICAgcW54NF9tb2RlX3QgaV9tb2RlOwogICAgICAgIHFueDRf
bXVpZF90IGlfdWlkOwogICAgICAgIHFueDRfbWdpZF90IGlfZ2lkOwogICAgICAgIHFueDRfbmxp
bmtfdCBpX25saW5rOwogICAgICAgIF9fdTggaV96ZXJvWzRdOwogICAgICAgIHFueDRfZnR5cGVf
dCBpX3R5cGU7CiAgICAgICAgX191OCBpX3N0YXR1czsKICAgICAgICB1bnNpZ25lZCBsb25nIG1t
dV9wcml2YXRlOwp9OwojIDMxMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9yZWlzZXJmc19mc19pLmgiIDEKCgoK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQojIDUgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfaS5oIiAyCgpzdHJ1Y3QgcmVpc2VyZnNf
aW5vZGVfaW5mbyB7CiAgX191MzIgaV9rZXkgWzRdOwoKCgoKCgogIGludCBpX3ZlcnNpb247Cgog
IGludCBpX3BhY2tfb25fY2xvc2UgOwoKICBfX3UzMiBpX2ZpcnN0X2RpcmVjdF9ieXRlOwojIDM1
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzX2kuaCIKICBpbnQgaV9w
cmVhbGxvY19ibG9jazsKICBpbnQgaV9wcmVhbGxvY19jb3VudDsKICBzdHJ1Y3QgbGlzdF9oZWFk
IGlfcHJlYWxsb2NfbGlzdDsKCgoKCiAgaW50IG5vcGFjazsKCgoKCiAgdW5zaWduZWQgbG9uZyBp
X3RyYW5zX2lkIDsKICB1bnNpZ25lZCBsb25nIGlfdHJhbnNfaW5kZXggOwp9OwojIDMxMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9iZnNfZnNfaS5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvYmZzX2ZzX2kuaCIKc3RydWN0IGJmc19pbm9kZV9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBs
b25nIGlfZHNrX2lubzsKICAgICAgICB1bnNpZ25lZCBsb25nIGlfc2Jsb2NrOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgaV9lYmxvY2s7Cn07CiMgMzEyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3VkZl9mc19pLmgi
IDEKIyAyNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC91ZGZfZnNfaS5oIgp0eXBlZGVm
IHN0cnVjdAp7CiAgICAgICAgX191MzIgbG9naWNhbEJsb2NrTnVtOwogICAgICAgIF9fdTE2IHBh
cnRpdGlvblJlZmVyZW5jZU51bTsKfSBsYl9hZGRyOwoKCnN0cnVjdCB1ZGZfaW5vZGVfaW5mbwp7
CiAgICAgICAgbG9uZyBpX3VtdGltZTsKICAgICAgICBsb25nIGlfdWN0aW1lOwogICAgICAgIGxv
bmcgaV9jcnRpbWU7CiAgICAgICAgbG9uZyBpX3VjcnRpbWU7CgogICAgICAgIGxiX2FkZHIgaV9s
b2NhdGlvbjsKICAgICAgICBfX3U2NCBpX3VuaXF1ZTsKICAgICAgICBfX3UzMiBpX2xlbkVBdHRy
OwogICAgICAgIF9fdTMyIGlfbGVuQWxsb2M7CiAgICAgICAgX191NjQgaV9sZW5FeHRlbnRzOwog
ICAgICAgIF9fdTMyIGlfbmV4dF9hbGxvY19ibG9jazsKICAgICAgICBfX3UzMiBpX25leHRfYWxs
b2NfZ29hbDsKICAgICAgICB1bnNpZ25lZCBpX2FsbG9jX3R5cGUgOiAzOwogICAgICAgIHVuc2ln
bmVkIGlfZXh0ZW5kZWRfZmUgOiAxOwogICAgICAgIHVuc2lnbmVkIGlfc3RyYXRfNDA5NiA6IDE7
CiAgICAgICAgdW5zaWduZWQgaV9uZXdfaW5vZGUgOiAxOwogICAgICAgIHVuc2lnbmVkIHJlc2Vy
dmVkIDogMjY7Cn07CiMgMzEzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25jcF9mc19pLmgiIDEKIyAxNyAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uY3BfZnNfaS5oIgpzdHJ1Y3QgbmNwX2lub2RlX2lu
Zm8gewogICAgICAgIF9fdTMyIGRpckVudE51bSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAg
ICAgICBfX3UzMiBEb3NEaXJOdW0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191
MzIgdm9sTnVtYmVyIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIG53YXR0
cjsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIG9wZW5fc2VtOwogICAgICAgIGF0b21pY190IG9w
ZW5lZDsKICAgICAgICBpbnQgYWNjZXNzOwogICAgICAgIF9fdTMyIHNlcnZlcl9maWxlX2hhbmRs
ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IG9wZW5fY3JlYXRlX2FjdGlv
biBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGZpbGVfaGFuZGxlWzZdIF9f
YXR0cmlidXRlX18oKHBhY2tlZCkpOwp9OwojIDMxNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9wcm9jX2ZzX2ku
aCIgMQpzdHJ1Y3QgcHJvY19pbm9kZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3Qg
KnRhc2s7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAg
aW50ICgqcHJvY19nZXRfbGluaykoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiosIHN0
cnVjdCB2ZnNtb3VudCAqKik7CiAgICAgICAgICAgICAgICBpbnQgKCpwcm9jX3JlYWQpKHN0cnVj
dCB0YXNrX3N0cnVjdCAqdGFzaywgY2hhciAqcGFnZSk7CiAgICAgICAgfSBvcDsKICAgICAgICBz
dHJ1Y3QgZmlsZSAqZmlsZTsKfTsKIyAzMTUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
ZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdXNiZGV2X2ZzX2kuaCIg
MQpzdHJ1Y3QgdXNiX2RldmljZTsKc3RydWN0IHVzYl9idXM7CgpzdHJ1Y3QgdXNiZGV2X2lub2Rl
X2luZm8gewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZGxpc3Q7CiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBzbGlzdDsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdXNi
X2RldmljZSAqZGV2OwogICAgICAgICAgICAgICAgc3RydWN0IHVzYl9idXMgKmJ1czsKICAgICAg
ICB9IHA7Cn07CiMgMzE2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX2kuaCIgMQojIDE2ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX2kuaCIKc3RydWN0IGpmZnMyX2lub2Rl
X2luZm8gewojIDI2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX2kuaCIK
ICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKCgogICAgICAgIF9fdTMyIGhpZ2hlc3RfdmVy
c2lvbjsKCgogICAgICAgIHN0cnVjdCBqZmZzMl9ub2RlX2ZyYWcgKmZyYWdsaXN0OwoKCgoKCgog
ICAgICAgIHN0cnVjdCBqZmZzMl9mdWxsX2Rub2RlICptZXRhZGF0YTsKCgogICAgICAgIHN0cnVj
dCBqZmZzMl9mdWxsX2RpcmVudCAqZGVudHM7CgoKICAgICAgICBzdHJ1Y3QgamZmczJfaW5vZGVf
Y2FjaGUgKmlub2NhY2hlOwoKCgoKCiAgICAgICAgX191MTYgZmxhZ3M7CiAgICAgICAgX191OCB1
c2VyY29tcHI7Cn07CiMgMzE3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NyYW1mc19mc19zYi5oIiAxCgoKCgoK
CnN0cnVjdCBjcmFtZnNfc2JfaW5mbyB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGxvbmcgbWFnaWM7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZTsK
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBibG9ja3M7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmlsZXM7CiAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cn07CiMgMzE4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L2ZzLmgiIDIKIyAzNDQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKc3Ry
dWN0IGlhdHRyIHsKICAgICAgICB1bnNpZ25lZCBpbnQgaWFfdmFsaWQ7CiAgICAgICAgdW1vZGVf
dCBpYV9tb2RlOwogICAgICAgIHVpZF90IGlhX3VpZDsKICAgICAgICBnaWRfdCBpYV9naWQ7CiAg
ICAgICAgbG9mZl90IGlhX3NpemU7CiAgICAgICAgdGltZV90IGlhX2F0aW1lOwogICAgICAgIHRp
bWVfdCBpYV9tdGltZTsKICAgICAgICB0aW1lX3QgaWFfY3RpbWU7CiAgICAgICAgdW5zaWduZWQg
aW50IGlhX2F0dHJfZmxhZ3M7Cn07CiMgMzY4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L2ZzLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9xdW90YS5oIiAxCiMgNDIg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcXVvdGEuaCIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDEKIyA0MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9xdW90YS5oIiAyCiMgMTA5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3F1b3Rh
LmgiCnN0cnVjdCBkcWJsayB7CiAgICAgICAgX191MzIgZHFiX2JoYXJkbGltaXQ7CiAgICAgICAg
X191MzIgZHFiX2Jzb2Z0bGltaXQ7CiAgICAgICAgX191MzIgZHFiX2N1cmJsb2NrczsKICAgICAg
ICBfX3UzMiBkcWJfaWhhcmRsaW1pdDsKICAgICAgICBfX3UzMiBkcWJfaXNvZnRsaW1pdDsKICAg
ICAgICBfX3UzMiBkcWJfY3VyaW5vZGVzOwogICAgICAgIHRpbWVfdCBkcWJfYnRpbWU7CiAgICAg
ICAgdGltZV90IGRxYl9pdGltZTsKfTsKIyAxMzQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvcXVvdGEuaCIKc3RydWN0IGRxc3RhdHMgewogICAgICAgIF9fdTMyIGxvb2t1cHM7CiAgICAg
ICAgX191MzIgZHJvcHM7CiAgICAgICAgX191MzIgcmVhZHM7CiAgICAgICAgX191MzIgd3JpdGVz
OwogICAgICAgIF9fdTMyIGNhY2hlX2hpdHM7CiAgICAgICAgX191MzIgYWxsb2NhdGVkX2RxdW90
czsKICAgICAgICBfX3UzMiBmcmVlX2RxdW90czsKICAgICAgICBfX3UzMiBzeW5jczsKfTsKCgoK
ZXh0ZXJuIGludCBucl9kcXVvdHMsIG5yX2ZyZWVfZHF1b3RzOwpleHRlcm4gaW50IGRxdW90X3Jv
b3Rfc3F1YXNoOwojIDE1OSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9xdW90YS5oIgpz
dHJ1Y3QgZHF1b3QgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZHFfaGFzaDsKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkIGRxX2ludXNlOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZHFfZnJl
ZTsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBkcV93YWl0X2xvY2s7CiAgICAgICAgd2FpdF9x
dWV1ZV9oZWFkX3QgZHFfd2FpdF9mcmVlOwogICAgICAgIGludCBkcV9jb3VudDsKCgogICAgICAg
IHN0cnVjdCBzdXBlcl9ibG9jayAqZHFfc2I7CiAgICAgICAgdW5zaWduZWQgaW50IGRxX2lkOwog
ICAgICAgIGtkZXZfdCBkcV9kZXY7CiAgICAgICAgc2hvcnQgZHFfdHlwZTsKICAgICAgICBzaG9y
dCBkcV9mbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIGRxX3JlZmVyZW5jZWQ7CgogICAgICAg
IHN0cnVjdCBkcWJsayBkcV9kcWI7Cn07CiMgMzY5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vdW50LmgiIDEK
IyAzNzAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgoKCgoKc3RydWN0IHBh
Z2U7CnN0cnVjdCBhZGRyZXNzX3NwYWNlOwpzdHJ1Y3Qga2lvYnVmOwoKc3RydWN0IGFkZHJlc3Nf
c3BhY2Vfb3BlcmF0aW9ucyB7CiAgICAgICAgaW50ICgqd3JpdGVwYWdlKShzdHJ1Y3QgcGFnZSAq
KTsKICAgICAgICBpbnQgKCpyZWFkcGFnZSkoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKik7
CiAgICAgICAgaW50ICgqc3luY19wYWdlKShzdHJ1Y3QgcGFnZSAqKTsKCgoKCiAgICAgICAgaW50
ICgqcHJlcGFyZV93cml0ZSkoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQs
IHVuc2lnbmVkKTsKICAgICAgICBpbnQgKCpjb21taXRfd3JpdGUpKHN0cnVjdCBmaWxlICosIHN0
cnVjdCBwYWdlICosIHVuc2lnbmVkLCB1bnNpZ25lZCk7CgogICAgICAgIGludCAoKmJtYXBfUmNi
MjdiOGViKShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBsb25nKTsKICAgICAgICBpbnQgKCpmbHVz
aHBhZ2UpIChzdHJ1Y3QgcGFnZSAqLCB1bnNpZ25lZCBsb25nKTsKICAgICAgICBpbnQgKCpyZWxl
YXNlcGFnZSkgKHN0cnVjdCBwYWdlICosIGludCk7CgogICAgICAgIGludCAoKmRpcmVjdF9JTyko
aW50LCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGtpb2J1ZiAqLCB1bnNpZ25lZCBsb25nLCBpbnQp
Owp9OwoKc3RydWN0IGFkZHJlc3Nfc3BhY2UgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgY2xl
YW5fcGFnZXM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkaXJ0eV9wYWdlczsKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkIGxvY2tlZF9wYWdlczsKICAgICAgICB1bnNpZ25lZCBsb25nIG5ycGFn
ZXM7CiAgICAgICAgc3RydWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyAqYV9vcHM7CiAgICAg
ICAgc3RydWN0IGlub2RlICpob3N0OwogICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqaV9t
bWFwOwogICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqaV9tbWFwX3NoYXJlZDsKICAgICAg
ICBzcGlubG9ja190IGlfc2hhcmVkX2xvY2s7CiAgICAgICAgaW50IGdmcF9tYXNrOwp9OwoKc3Ry
dWN0IGNoYXJfZGV2aWNlIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGhhc2g7CiAgICAgICAg
YXRvbWljX3QgY291bnQ7CiAgICAgICAgZGV2X3QgZGV2OwogICAgICAgIGF0b21pY190IG9wZW5l
cnM7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBzZW07Cn07CgpzdHJ1Y3QgYmxvY2tfZGV2aWNl
IHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGJkX2hhc2g7CiAgICAgICAgYXRvbWljX3QgYmRf
Y291bnQ7CiAgICAgICAgc3RydWN0IGlub2RlICogYmRfaW5vZGU7CiAgICAgICAgZGV2X3QgYmRf
ZGV2OwogICAgICAgIGludCBiZF9vcGVuZXJzOwogICAgICAgIGNvbnN0IHN0cnVjdCBibG9ja19k
ZXZpY2Vfb3BlcmF0aW9ucyAqYmRfb3A7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBiZF9zZW07
CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBiZF9pbm9kZXM7Cn07CgpzdHJ1Y3QgaW5vZGUgewog
ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaV9oYXNoOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg
aV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaV9kZW50cnk7CgogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgaV9kaXJ0eV9idWZmZXJzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaV9k
aXJ0eV9kYXRhX2J1ZmZlcnM7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9pbm87CiAgICAgICAg
YXRvbWljX3QgaV9jb3VudDsKICAgICAgICBrZGV2X3QgaV9kZXY7CiAgICAgICAgdW1vZGVfdCBp
X21vZGU7CiAgICAgICAgbmxpbmtfdCBpX25saW5rOwogICAgICAgIHVpZF90IGlfdWlkOwogICAg
ICAgIGdpZF90IGlfZ2lkOwogICAgICAgIGtkZXZfdCBpX3JkZXY7CiAgICAgICAgbG9mZl90IGlf
c2l6ZTsKICAgICAgICB0aW1lX3QgaV9hdGltZTsKICAgICAgICB0aW1lX3QgaV9tdGltZTsKICAg
ICAgICB0aW1lX3QgaV9jdGltZTsKICAgICAgICB1bnNpZ25lZCBpbnQgaV9ibGtiaXRzOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgaV9ibGtzaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9ibG9j
a3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX3ZlcnNpb247CiAgICAgICAgc3RydWN0IHNlbWFw
aG9yZSBpX3NlbTsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGlfem9tYmllOwogICAgICAgIHN0
cnVjdCBpbm9kZV9vcGVyYXRpb25zICppX29wOwogICAgICAgIHN0cnVjdCBmaWxlX29wZXJhdGlv
bnMgKmlfZm9wOwogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqaV9zYjsKICAgICAgICB3YWl0
X3F1ZXVlX2hlYWRfdCBpX3dhaXQ7CiAgICAgICAgc3RydWN0IGZpbGVfbG9jayAqaV9mbG9jazsK
ICAgICAgICBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqaV9tYXBwaW5nOwogICAgICAgIHN0cnVjdCBh
ZGRyZXNzX3NwYWNlIGlfZGF0YTsKICAgICAgICBzdHJ1Y3QgZHF1b3QgKmlfZHF1b3RbMl07Cgog
ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaV9kZXZpY2VzOwogICAgICAgIHN0cnVjdCBwaXBlX2lu
b2RlX2luZm8gKmlfcGlwZTsKICAgICAgICBzdHJ1Y3QgYmxvY2tfZGV2aWNlICppX2JkZXY7CiAg
ICAgICAgc3RydWN0IGNoYXJfZGV2aWNlICppX2NkZXY7CgogICAgICAgIHVuc2lnbmVkIGxvbmcg
aV9kbm90aWZ5X21hc2s7CiAgICAgICAgc3RydWN0IGRub3RpZnlfc3RydWN0ICppX2Rub3RpZnk7
CgogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9zdGF0ZTsKCiAgICAgICAgdW5zaWduZWQgaW50IGlf
ZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgY2hhciBpX3NvY2s7CgogICAgICAgIGF0b21pY190IGlf
d3JpdGVjb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgaV9hdHRyX2ZsYWdzOwogICAgICAgIF9f
dTMyIGlfZ2VuZXJhdGlvbjsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
bWluaXhfaW5vZGVfaW5mbyBtaW5peF9pOwogICAgICAgICAgICAgICAgc3RydWN0IGV4dDJfaW5v
ZGVfaW5mbyBleHQyX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgZXh0M19pbm9kZV9pbmZvIGV4
dDNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBocGZzX2lub2RlX2luZm8gaHBmc19pOwogICAg
ICAgICAgICAgICAgc3RydWN0IG50ZnNfaW5vZGVfaW5mbyBudGZzX2k7CiAgICAgICAgICAgICAg
ICBzdHJ1Y3QgbXNkb3NfaW5vZGVfaW5mbyBtc2Rvc19pOwogICAgICAgICAgICAgICAgc3RydWN0
IHVtc2Rvc19pbm9kZV9pbmZvIHVtc2Rvc19pOwogICAgICAgICAgICAgICAgc3RydWN0IGlzb19p
bm9kZV9pbmZvIGlzb2ZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbmZzX2lub2RlX2luZm8g
bmZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3lzdl9pbm9kZV9pbmZvIHN5c3ZfaTsKICAg
ICAgICAgICAgICAgIHN0cnVjdCBhZmZzX2lub2RlX2luZm8gYWZmc19pOwogICAgICAgICAgICAg
ICAgc3RydWN0IHVmc19pbm9kZV9pbmZvIHVmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IGVm
c19pbm9kZV9pbmZvIGVmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IHJvbWZzX2lub2RlX2lu
Zm8gcm9tZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBzaG1lbV9pbm9kZV9pbmZvIHNobWVt
X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgY29kYV9pbm9kZV9pbmZvIGNvZGFfaTsKICAgICAg
ICAgICAgICAgIHN0cnVjdCBzbWJfaW5vZGVfaW5mbyBzbWJmc19pOwogICAgICAgICAgICAgICAg
c3RydWN0IGhmc19pbm9kZV9pbmZvIGhmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IGFkZnNf
aW5vZGVfaW5mbyBhZGZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9pbmZv
IHFueDRfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCByZWlzZXJmc19pbm9kZV9pbmZvIHJlaXNl
cmZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgYmZzX2lub2RlX2luZm8gYmZzX2k7CiAgICAg
ICAgICAgICAgICBzdHJ1Y3QgdWRmX2lub2RlX2luZm8gdWRmX2k7CiAgICAgICAgICAgICAgICBz
dHJ1Y3QgbmNwX2lub2RlX2luZm8gbmNwZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBwcm9j
X2lub2RlX2luZm8gcHJvY19pOwogICAgICAgICAgICAgICAgc3RydWN0IHNvY2tldCBzb2NrZXRf
aTsKICAgICAgICAgICAgICAgIHN0cnVjdCB1c2JkZXZfaW5vZGVfaW5mbyB1c2JkZXZfaTsKICAg
ICAgICAgICAgICAgIHN0cnVjdCBqZmZzMl9pbm9kZV9pbmZvIGpmZnMyX2k7CiAgICAgICAgICAg
ICAgICB2b2lkICpnZW5lcmljX2lwOwogICAgICAgIH0gdTsKfTsKCnN0cnVjdCBmb3duX3N0cnVj
dCB7CiAgICAgICAgaW50IHBpZDsKICAgICAgICB1aWRfdCB1aWQsIGV1aWQ7CiAgICAgICAgaW50
IHNpZ251bTsKfTsKCnN0cnVjdCBmaWxlIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGZfbGlz
dDsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpmX2RlbnRyeTsKICAgICAgICBzdHJ1Y3QgdmZzbW91
bnQgKmZfdmZzbW50OwogICAgICAgIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKmZfb3A7CiAgICAg
ICAgYXRvbWljX3QgZl9jb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgZl9mbGFnczsKICAgICAg
ICBtb2RlX3QgZl9tb2RlOwogICAgICAgIGxvZmZfdCBmX3BvczsKICAgICAgICB1bnNpZ25lZCBs
b25nIGZfcmVhZGEsIGZfcmFtYXgsIGZfcmFlbmQsIGZfcmFsZW4sIGZfcmF3aW47CiAgICAgICAg
c3RydWN0IGZvd25fc3RydWN0IGZfb3duZXI7CiAgICAgICAgdW5zaWduZWQgaW50IGZfdWlkLCBm
X2dpZDsKICAgICAgICBpbnQgZl9lcnJvcjsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBmX3ZlcnNp
b247CgoKICAgICAgICB2b2lkICpwcml2YXRlX2RhdGE7CgoKICAgICAgICBzdHJ1Y3Qga2lvYnVm
ICpmX2lvYnVmOwogICAgICAgIGxvbmcgZl9pb2J1Zl9sb2NrOwp9OwpleHRlcm4gc3BpbmxvY2tf
dCBmaWxlc19sb2NrX1JmOWVmYjE2YTsKCgoKCgoKZXh0ZXJuIGludCBpbml0X3ByaXZhdGVfZmls
ZV9SNGQ0ZjEzYzUoc3RydWN0IGZpbGUgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQpOwojIDU2NiAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIgp0eXBlZGVmIHN0cnVjdCBmaWxlc19z
dHJ1Y3QgKmZsX293bmVyX3Q7CgpzdHJ1Y3QgZmlsZV9sb2NrIHsKICAgICAgICBzdHJ1Y3QgZmls
ZV9sb2NrICpmbF9uZXh0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZmxfbGluazsKICAgICAg
ICBzdHJ1Y3QgbGlzdF9oZWFkIGZsX2Jsb2NrOwogICAgICAgIGZsX293bmVyX3QgZmxfb3duZXI7
CiAgICAgICAgdW5zaWduZWQgaW50IGZsX3BpZDsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBm
bF93YWl0OwogICAgICAgIHN0cnVjdCBmaWxlICpmbF9maWxlOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgZmxfZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgY2hhciBmbF90eXBlOwogICAgICAgIGxvZmZf
dCBmbF9zdGFydDsKICAgICAgICBsb2ZmX3QgZmxfZW5kOwoKICAgICAgICB2b2lkICgqZmxfbm90
aWZ5KShzdHJ1Y3QgZmlsZV9sb2NrICopOwogICAgICAgIHZvaWQgKCpmbF9pbnNlcnQpKHN0cnVj
dCBmaWxlX2xvY2sgKik7CiAgICAgICAgdm9pZCAoKmZsX3JlbW92ZSkoc3RydWN0IGZpbGVfbG9j
ayAqKTsKCiAgICAgICAgc3RydWN0IGZhc3luY19zdHJ1Y3QgKiBmbF9mYXN5bmM7CgogICAgICAg
IHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBuZnNfbG9ja19pbmZvIG5mc19mbDsKICAg
ICAgICB9IGZsX3U7Cn07CiMgNTk5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgi
CmV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGZpbGVfbG9ja19saXN0X1I2ZTg1MTE5ZDsKCiMgMSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mY250bC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9hc20vZmNudGwuaCIgMQojIDY5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2FzbS9mY250bC5oIgpzdHJ1Y3QgZmxvY2sgewogICAgICAgIHNob3J0IGxfdHlwZTsKICAgICAg
ICBzaG9ydCBsX3doZW5jZTsKICAgICAgICBvZmZfdCBsX3N0YXJ0OwogICAgICAgIG9mZl90IGxf
bGVuOwogICAgICAgIHBpZF90IGxfcGlkOwp9OwoKc3RydWN0IGZsb2NrNjQgewogICAgICAgIHNo
b3J0IGxfdHlwZTsKICAgICAgICBzaG9ydCBsX3doZW5jZTsKICAgICAgICBsb2ZmX3QgbF9zdGFy
dDsKICAgICAgICBsb2ZmX3QgbF9sZW47CiAgICAgICAgcGlkX3QgbF9waWQ7Cn07CiMgNSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mY250bC5oIiAyCiMgNjAyICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCmV4dGVybiBpbnQgZmNudGxfZ2V0bGsodW5zaWduZWQg
aW50LCBzdHJ1Y3QgZmxvY2sgKik7CmV4dGVybiBpbnQgZmNudGxfc2V0bGsodW5zaWduZWQgaW50
LCB1bnNpZ25lZCBpbnQsIHN0cnVjdCBmbG9jayAqKTsKCmV4dGVybiBpbnQgZmNudGxfZ2V0bGs2
NCh1bnNpZ25lZCBpbnQsIHN0cnVjdCBmbG9jazY0ICopOwpleHRlcm4gaW50IGZjbnRsX3NldGxr
NjQodW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQsIHN0cnVjdCBmbG9jazY0ICopOwoKCmV4dGVy
biB2b2lkIGxvY2tzX2luaXRfbG9ja19SODc3MjcyODUoc3RydWN0IGZpbGVfbG9jayAqKTsKZXh0
ZXJuIHZvaWQgbG9ja3NfY29weV9sb2NrX1I5ODI2MzliNShzdHJ1Y3QgZmlsZV9sb2NrICosIHN0
cnVjdCBmaWxlX2xvY2sgKik7CmV4dGVybiB2b2lkIGxvY2tzX3JlbW92ZV9wb3NpeChzdHJ1Y3Qg
ZmlsZSAqLCBmbF9vd25lcl90KTsKZXh0ZXJuIHZvaWQgbG9ja3NfcmVtb3ZlX2Zsb2NrKHN0cnVj
dCBmaWxlICopOwpleHRlcm4gc3RydWN0IGZpbGVfbG9jayAqcG9zaXhfdGVzdF9sb2NrX1JjZGQy
YzVlZShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gaW50IHBvc2l4
X2xvY2tfZmlsZV9SMTAxZDMzNDQoc3RydWN0IGZpbGUgKiwgc3RydWN0IGZpbGVfbG9jayAqLCB1
bnNpZ25lZCBpbnQpOwpleHRlcm4gdm9pZCBwb3NpeF9ibG9ja19sb2NrX1IzYTMyNzU4YihzdHJ1
Y3QgZmlsZV9sb2NrICosIHN0cnVjdCBmaWxlX2xvY2sgKik7CmV4dGVybiB2b2lkIHBvc2l4X3Vu
YmxvY2tfbG9ja19SYThiMWU4M2Ioc3RydWN0IGZpbGVfbG9jayAqKTsKZXh0ZXJuIGludCBwb3Np
eF9sb2Nrc19kZWFkbG9ja19SMGIxZDNiN2Qoc3RydWN0IGZpbGVfbG9jayAqLCBzdHJ1Y3QgZmls
ZV9sb2NrICopOwpleHRlcm4gaW50IF9fZ2V0X2xlYXNlX1I2NWEwOWY3MihzdHJ1Y3QgaW5vZGUg
Kmlub2RlLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwpleHRlcm4gdGltZV90IGxlYXNlX2dldF9tdGlt
ZV9SYzVkYzVlZDQoc3RydWN0IGlub2RlICopOwpleHRlcm4gaW50IGxvY2tfbWF5X3JlYWRfUjQ0
NjE0NDgyKHN0cnVjdCBpbm9kZSAqLCBsb2ZmX3Qgc3RhcnQsIHVuc2lnbmVkIGxvbmcgY291bnQp
OwpleHRlcm4gaW50IGxvY2tfbWF5X3dyaXRlX1IzNWExOWM2ZihzdHJ1Y3QgaW5vZGUgKiwgbG9m
Zl90IHN0YXJ0LCB1bnNpZ25lZCBsb25nIGNvdW50KTsKCnN0cnVjdCBmYXN5bmNfc3RydWN0IHsK
ICAgICAgICBpbnQgbWFnaWM7CiAgICAgICAgaW50IGZhX2ZkOwogICAgICAgIHN0cnVjdCBmYXN5
bmNfc3RydWN0ICpmYV9uZXh0OwogICAgICAgIHN0cnVjdCBmaWxlICpmYV9maWxlOwp9OwoKCgoK
ZXh0ZXJuIGludCBmYXN5bmNfaGVscGVyX1I0ODhmMWJjYShpbnQsIHN0cnVjdCBmaWxlICosIGlu
dCwgc3RydWN0IGZhc3luY19zdHJ1Y3QgKiopOwoKZXh0ZXJuIHZvaWQga2lsbF9mYXN5bmNfUjdj
MGZiNTA3KHN0cnVjdCBmYXN5bmNfc3RydWN0ICoqLCBpbnQsIGludCk7CgpleHRlcm4gdm9pZCBf
X2tpbGxfZmFzeW5jX1I3MmM1MTU2NShzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqLCBpbnQsIGludCk7
CgpzdHJ1Y3QgbmFtZWlkYXRhIHsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7CiAgICAg
ICAgc3RydWN0IHZmc21vdW50ICptbnQ7CiAgICAgICAgc3RydWN0IHFzdHIgbGFzdDsKICAgICAg
ICB1bnNpZ25lZCBpbnQgZmxhZ3M7CiAgICAgICAgaW50IGxhc3RfdHlwZTsKfTsKCgoKCnN0cnVj
dCBxdW90YV9tb3VudF9vcHRpb25zCnsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CiAgICAg
ICAgc3RydWN0IHNlbWFwaG9yZSBkcWlvX3NlbTsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGRx
b2ZmX3NlbTsKICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZXNbMl07CiAgICAgICAgdGltZV90IGlu
b2RlX2V4cGlyZVsyXTsKICAgICAgICB0aW1lX3QgYmxvY2tfZXhwaXJlWzJdOwogICAgICAgIGNo
YXIgcnNxdWFzaFsyXTsKfTsKIyA2NjkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMu
aCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21pbml4X2ZzX3NiLmgiIDEKCgoK
CgoKc3RydWN0IG1pbml4X3NiX2luZm8gewogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsb25nIHNfbmlub2RlczsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBz
X256b25lczsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ltYXBfYmxv
Y2tzOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNfem1hcF9ibG9ja3M7
CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc19maXJzdGRhdGF6b25lOwog
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNfbG9nX3pvbmVfc2l6ZTsKICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX21heF9zaXplOwogICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgc19kaXJzaXplOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQg
c19uYW1lbGVuOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgc19saW5rX21heDsKICAgICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfaW1hcDsKICAgICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfem1hcDsKICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc19zYmg7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBtaW5peF9zdXBlcl9ibG9jayAqIHNfbXM7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIHNob3J0IHNfbW91bnRfc3RhdGU7CiAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIHNob3J0IHNfdmVyc2lvbjsKfTsKIyA2NzAgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZXh0
Ml9mc19zYi5oIiAxCiMgMzAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZXh0Ml9mc19z
Yi5oIgpzdHJ1Y3QgZXh0Ml9zYl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZnJhZ19z
aXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mcmFnc19wZXJfYmxvY2s7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBzX2lub2Rlc19wZXJfYmxvY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2Zy
YWdzX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfYmxvY2tzX3Blcl9ncm91cDsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVzX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHNfaXRiX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZ2RiX2NvdW50
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19kZXNjX3Blcl9ibG9jazsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHNfZ3JvdXBzX2NvdW50OwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIHNfc2Jo
OwogICAgICAgIHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICogc19lczsKICAgICAgICBzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKiogc19ncm91cF9kZXNjOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfbG9h
ZGVkX2lub2RlX2JpdG1hcHM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19sb2FkZWRfYmxvY2tf
Yml0bWFwczsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVfYml0bWFwX251bWJlcls4XTsK
ICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzX2lub2RlX2JpdG1hcFs4XTsKICAgICAgICB1
bnNpZ25lZCBsb25nIHNfYmxvY2tfYml0bWFwX251bWJlcls4XTsKICAgICAgICBzdHJ1Y3QgYnVm
ZmVyX2hlYWQgKiBzX2Jsb2NrX2JpdG1hcFs4XTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfbW91
bnRfb3B0OwogICAgICAgIHVpZF90IHNfcmVzdWlkOwogICAgICAgIGdpZF90IHNfcmVzZ2lkOwog
ICAgICAgIHVuc2lnbmVkIHNob3J0IHNfbW91bnRfc3RhdGU7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgc19wYWQ7CiAgICAgICAgaW50IHNfYWRkcl9wZXJfYmxvY2tfYml0czsKICAgICAgICBpbnQg
c19kZXNjX3Blcl9ibG9ja19iaXRzOwogICAgICAgIGludCBzX2lub2RlX3NpemU7CiAgICAgICAg
aW50IHNfZmlyc3RfaW5vOwp9OwojIDY3MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9m
cy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9leHQzX2ZzX3NiLmgiIDEK
IyAyMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9leHQzX2ZzX3NiLmgiCiMgMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90aW1lci5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvdGltZXIuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbGlzdC5o
IiAxCiMgNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90aW1lci5oIiAyCiMgMTYgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdGltZXIuaCIKc3RydWN0IHRpbWVyX2xpc3Qgewog
ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKICAgICAgICB1bnNpZ25lZCBsb25nIGV4cGly
ZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkYXRhOwogICAgICAgIHZvaWQgKCpmdW5jdGlvbiko
dW5zaWduZWQgbG9uZyk7Cn07CgpleHRlcm4gdm9pZCBhZGRfdGltZXJfUmExOWVhY2Y4KHN0cnVj
dCB0aW1lcl9saXN0ICogdGltZXIpOwpleHRlcm4gaW50IGRlbF90aW1lcl9SZmM2MmYxNmQoc3Ry
dWN0IHRpbWVyX2xpc3QgKiB0aW1lcik7CiMgNDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvdGltZXIuaCIKaW50IG1vZF90aW1lcl9SMWYxM2QzMDkoc3RydWN0IHRpbWVyX2xpc3QgKnRp
bWVyLCB1bnNpZ25lZCBsb25nIGV4cGlyZXMpOwoKZXh0ZXJuIHZvaWQgaXRfcmVhbF9mbih1bnNp
Z25lZCBsb25nKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3RpbWVyKHN0cnVjdCB0aW1lcl9s
aXN0ICogdGltZXIpCnsKICAgICAgICB0aW1lci0+bGlzdC5uZXh0ID0gdGltZXItPmxpc3QucHJl
diA9ICgodm9pZCAqKTApOwp9CgpzdGF0aWMgaW5saW5lIGludCB0aW1lcl9wZW5kaW5nIChjb25z
dCBzdHJ1Y3QgdGltZXJfbGlzdCAqIHRpbWVyKQp7CiAgICAgICAgcmV0dXJuIHRpbWVyLT5saXN0
Lm5leHQgIT0gKCh2b2lkICopMCk7Cn0KIyAyMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9leHQzX2ZzX3NiLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3dhaXQu
aCIgMQojIDIyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2V4dDNfZnNfc2IuaCIgMgoj
IDM1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2V4dDNfZnNfc2IuaCIKc3RydWN0IGV4
dDNfc2JfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ZyYWdfc2l6ZTsKICAgICAgICB1
bnNpZ25lZCBsb25nIHNfZnJhZ3NfcGVyX2Jsb2NrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19p
bm9kZXNfcGVyX2Jsb2NrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mcmFnc19wZXJfZ3JvdXA7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2Jsb2Nrc19wZXJfZ3JvdXA7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzX2lub2Rlc19wZXJfZ3JvdXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2l0Yl9w
ZXJfZ3JvdXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2dkYl9jb3VudDsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNfZGVzY19wZXJfYmxvY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2dyb3Vw
c19jb3VudDsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzX3NiaDsKICAgICAgICBzdHJ1
Y3QgZXh0M19zdXBlcl9ibG9jayAqIHNfZXM7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoq
IHNfZ3JvdXBfZGVzYzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX2xvYWRlZF9pbm9kZV9iaXRt
YXBzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfbG9hZGVkX2Jsb2NrX2JpdG1hcHM7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBzX2lub2RlX2JpdG1hcF9udW1iZXJbOF07CiAgICAgICAgc3RydWN0
IGJ1ZmZlcl9oZWFkICogc19pbm9kZV9iaXRtYXBbOF07CiAgICAgICAgdW5zaWduZWQgbG9uZyBz
X2Jsb2NrX2JpdG1hcF9udW1iZXJbOF07CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc19i
bG9ja19iaXRtYXBbOF07CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX21vdW50X29wdDsKICAgICAg
ICB1aWRfdCBzX3Jlc3VpZDsKICAgICAgICBnaWRfdCBzX3Jlc2dpZDsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBzX21vdW50X3N0YXRlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfcGFkOwogICAg
ICAgIGludCBzX2FkZHJfcGVyX2Jsb2NrX2JpdHM7CiAgICAgICAgaW50IHNfZGVzY19wZXJfYmxv
Y2tfYml0czsKICAgICAgICBpbnQgc19pbm9kZV9zaXplOwogICAgICAgIGludCBzX2ZpcnN0X2lu
bzsKCgogICAgICAgIHN0cnVjdCBpbm9kZSAqIHNfam91cm5hbF9pbm9kZTsKICAgICAgICBzdHJ1
Y3Qgam91cm5hbF9zICogc19qb3VybmFsOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgc19vcnBo
YW47CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2NvbW1pdF9pbnRlcnZhbDsKICAgICAgICBzdHJ1
Y3QgYmxvY2tfZGV2aWNlICpqb3VybmFsX2JkZXY7CgoKCgp9OwojIDY3MiAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9ocGZzX2ZzX3NiLmgiIDEKCgoKc3RydWN0IGhwZnNfc2JfaW5mbyB7CiAgICAgICAgaW5vX3Qg
c2Jfcm9vdDsKICAgICAgICB1bnNpZ25lZCBzYl9mc19zaXplOwogICAgICAgIHVuc2lnbmVkIHNi
X2JpdG1hcHM7CiAgICAgICAgdW5zaWduZWQgc2JfZGlyYmFuZF9zdGFydDsKICAgICAgICB1bnNp
Z25lZCBzYl9kaXJiYW5kX3NpemU7CiAgICAgICAgdW5zaWduZWQgc2JfZG1hcDsKICAgICAgICB1
bnNpZ25lZCBzYl9uX2ZyZWU7CiAgICAgICAgdW5zaWduZWQgc2Jfbl9mcmVlX2Rub2RlczsKICAg
ICAgICB1aWRfdCBzYl91aWQ7CiAgICAgICAgZ2lkX3Qgc2JfZ2lkOwogICAgICAgIHVtb2RlX3Qg
c2JfbW9kZTsKICAgICAgICB1bnNpZ25lZCBzYl9jb252IDogMjsKICAgICAgICB1bnNpZ25lZCBz
Yl9lYXMgOiAyOwogICAgICAgIHVuc2lnbmVkIHNiX2VyciA6IDI7CiAgICAgICAgdW5zaWduZWQg
c2JfY2hrIDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9sb3dlcmNhc2UgOiAxOwogICAgICAgIHVu
c2lnbmVkIHNiX3dhc19lcnJvciA6IDE7CiAgICAgICAgdW5zaWduZWQgc2JfY2hrZHNrIDogMjsK
ICAgICAgICB1bnNpZ25lZCBzYl9yZF9mbm9kZSA6IDI7CiAgICAgICAgdW5zaWduZWQgc2JfcmRf
aW5vZGUgOiAyOwoKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgc2JfaWdldF9xOwogICAgICAg
IHVuc2lnbmVkIGNoYXIgKnNiX2NwX3RhYmxlOwoKCiAgICAgICAgdW5zaWduZWQgKnNiX2JtcF9k
aXI7CiAgICAgICAgdW5zaWduZWQgc2JfY19iaXRtYXA7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFk
X3Qgc2JfY3JlYXRpb25fZGU7CgogICAgICAgIHVuc2lnbmVkIHNiX2NyZWF0aW9uX2RlX2xvY2sg
OiAxOwoKICAgICAgICBpbnQgc2JfdGltZXNoaWZ0Owp9OwojIDY3MyAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9u
dGZzX2ZzX3NiLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L250ZnNf
ZnNfaS5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9udGZzX2ZzX3NiLmgi
IDIKCnN0cnVjdCBudGZzX3NiX2luZm97CgogICAgICAgIG50ZnNfdWlkX3QgdWlkOwogICAgICAg
IG50ZnNfZ2lkX3QgZ2lkOwogICAgICAgIG50bW9kZV90IHVtYXNrOwogICAgICAgIHZvaWQgKm5s
c19tYXA7CiAgICAgICAgdW5zaWduZWQgaW50IG5ndDsKICAgICAgICBjaGFyIG1mdF96b25lX211
bHRpcGxpZXI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtZnRfZGF0YV9wb3M7CiAgICAgICAgbnRm
c19jbHVzdGVyX3QgbWZ0X3pvbmVfcG9zOwogICAgICAgIG50ZnNfY2x1c3Rlcl90IG1mdF96b25l
X3N0YXJ0OwogICAgICAgIG50ZnNfY2x1c3Rlcl90IG1mdF96b25lX2VuZDsKICAgICAgICBudGZz
X2NsdXN0ZXJfdCBkYXRhMV96b25lX3BvczsKICAgICAgICBudGZzX2NsdXN0ZXJfdCBkYXRhMl96
b25lX3BvczsKCgogICAgICAgIG50ZnNfc2l6ZV90IHBhcnRpdGlvbl9iaWFzOwoKICAgICAgICBu
dGZzX3UzMiBhdF9zdGFuZGFyZF9pbmZvcm1hdGlvbjsKICAgICAgICBudGZzX3UzMiBhdF9hdHRy
aWJ1dGVfbGlzdDsKICAgICAgICBudGZzX3UzMiBhdF9maWxlX25hbWU7CiAgICAgICAgbnRmc191
MzIgYXRfdm9sdW1lX3ZlcnNpb247CiAgICAgICAgbnRmc191MzIgYXRfc2VjdXJpdHlfZGVzY3Jp
cHRvcjsKICAgICAgICBudGZzX3UzMiBhdF92b2x1bWVfbmFtZTsKICAgICAgICBudGZzX3UzMiBh
dF92b2x1bWVfaW5mb3JtYXRpb247CiAgICAgICAgbnRmc191MzIgYXRfZGF0YTsKICAgICAgICBu
dGZzX3UzMiBhdF9pbmRleF9yb290OwogICAgICAgIG50ZnNfdTMyIGF0X2luZGV4X2FsbG9jYXRp
b247CiAgICAgICAgbnRmc191MzIgYXRfYml0bWFwOwogICAgICAgIG50ZnNfdTMyIGF0X3N5bWxp
bms7CgogICAgICAgIGludCBzZWN0b3Jfc2l6ZTsKICAgICAgICBpbnQgY2x1c3Rlcl9zaXplOwog
ICAgICAgIGludCBjbHVzdGVyX3NpemVfYml0czsKICAgICAgICBpbnQgbWZ0X2NsdXN0ZXJzX3Bl
cl9yZWNvcmQ7CiAgICAgICAgaW50IG1mdF9yZWNvcmRfc2l6ZTsKICAgICAgICBpbnQgbWZ0X3Jl
Y29yZF9zaXplX2JpdHM7CiAgICAgICAgaW50IGluZGV4X2NsdXN0ZXJzX3Blcl9yZWNvcmQ7CiAg
ICAgICAgaW50IGluZGV4X3JlY29yZF9zaXplOwogICAgICAgIGludCBpbmRleF9yZWNvcmRfc2l6
ZV9iaXRzOwogICAgICAgIG50ZnNfY2x1c3Rlcl90IG5yX2NsdXN0ZXJzOwogICAgICAgIG50ZnNf
Y2x1c3Rlcl90IG1mdF9sY247CiAgICAgICAgbnRmc19jbHVzdGVyX3QgbWZ0X21pcnJfbGNuOwoK
ICAgICAgICB1bnNpZ25lZCBjaGFyICptZnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgKnVwY2Fz
ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgdXBjYXNlX2xlbmd0aDsKCiAgICAgICAgc3RydWN0IG50
ZnNfaW5vZGVfaW5mbyAqbWZ0X2lubzsKICAgICAgICBzdHJ1Y3QgbnRmc19pbm9kZV9pbmZvICpt
ZnRtaXJyOwogICAgICAgIHN0cnVjdCBudGZzX2lub2RlX2luZm8gKmJpdG1hcDsKICAgICAgICBz
dHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiOwogICAgICAgIHVuc2lnbmVkIGNoYXIgaW5vX2ZsYWdzOwp9
OwojIDY3NCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9tc2Rvc19mc19zYi5oIiAxCgoKIyAxICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L2ZhdF9jdmYuaCIgMQoKCgoKCnN0cnVjdCBjdmZfZm9ybWF0Cnsg
aW50IGN2Zl92ZXJzaW9uOwogIGNoYXIqIGN2Zl92ZXJzaW9uX3RleHQ7CiAgdW5zaWduZWQgbG9u
ZyBmbGFnczsKICBpbnQgKCpkZXRlY3RfY3ZmKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiKTsKICBp
bnQgKCptb3VudF9jdmYpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sqc2IsY2hhcipvcHRpb25zKTsKICBp
bnQgKCp1bm1vdW50X2N2ZikgKHN0cnVjdCBzdXBlcl9ibG9jaypzYik7CiAgc3RydWN0IGJ1ZmZl
cl9oZWFkKiAoKmN2Zl9icmVhZCkgKHN0cnVjdCBzdXBlcl9ibG9jaypzYixpbnQgYmxvY2spOwog
IHN0cnVjdCBidWZmZXJfaGVhZCogKCpjdmZfZ2V0YmxrKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNi
LGludCBibG9jayk7CiAgdm9pZCAoKmN2Zl9icmVsc2UpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNi
LHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpOwogIHZvaWQgKCpjdmZfbWFya19idWZmZXJfZGlydHkp
IChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKTsKICB2b2lkICgqY3ZmX3NldF91cHRvZGF0ZSkgKHN0cnVj
dCBzdXBlcl9ibG9jayAqc2IsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVy
X2hlYWQgKmJoLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZhbCk7CiAgaW50ICgqY3Zm
X2lzX3VwdG9kYXRlKSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixzdHJ1Y3QgYnVmZmVyX2hlYWQg
KmJoKTsKICB2b2lkICgqY3ZmX2xsX3J3X2Jsb2NrKSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwK
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9wciwKICAgICAgICAgICAgICAgICAgICAgICAg
aW50IG5icmVxLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJo
WzMyXSk7CiAgaW50ICgqZmF0X2FjY2VzcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsaW50IG5y
LGludCBuZXdfdmFsdWUpOwogIGludCAoKmN2Zl9zdGF0ZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sg
KnNiLHN0cnVjdCBzdGF0ZnMgKmJ1ZiwgaW50IGJ1ZnNpeik7CiAgaW50ICgqY3ZmX2JtYXApIChz
dHJ1Y3QgaW5vZGUgKmlub2RlLGludCBibG9jayk7CiAgc3NpemVfdCAoKmN2Zl9maWxlX3JlYWQp
ICggc3RydWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKICBzc2l6ZV90ICgq
Y3ZmX2ZpbGVfd3JpdGUpICggc3RydWN0IGZpbGUgKiwgY29uc3QgY2hhciAqLCBzaXplX3QsIGxv
ZmZfdCAqKTsKICBpbnQgKCpjdmZfbW1hcCkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCB2bV9hcmVh
X3N0cnVjdCAqKTsKICBpbnQgKCpjdmZfcmVhZHBhZ2UpIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0
IHBhZ2UgKik7CiAgaW50ICgqY3ZmX3dyaXRlcGFnZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3Qg
cGFnZSAqKTsKICBpbnQgKCpjdmZfZGlyX2lvY3RsKSAoc3RydWN0IGlub2RlICogaW5vZGUsIHN0
cnVjdCBmaWxlICogZmlscCwKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNt
ZCwgdW5zaWduZWQgbG9uZyBhcmcpOwogIHZvaWQgKCp6ZXJvX291dF9jbHVzdGVyKSAoc3RydWN0
IGlub2RlKiwgaW50IGNsdXN0ZXJucik7Cn07CgppbnQgcmVnaXN0ZXJfY3ZmX2Zvcm1hdF9SNTMx
Mjg3M2Uoc3RydWN0IGN2Zl9mb3JtYXQqY3ZmX2Zvcm1hdCk7CmludCB1bnJlZ2lzdGVyX2N2Zl9m
b3JtYXRfUmY1YmE0MTZhKHN0cnVjdCBjdmZfZm9ybWF0KmN2Zl9mb3JtYXQpOwp2b2lkIGRlY19j
dmZfZm9ybWF0X3VzZV9jb3VudF9ieV92ZXJzaW9uKGludCB2ZXJzaW9uKTsKaW50IGRldGVjdF9j
dmYoc3RydWN0IHN1cGVyX2Jsb2NrKnNiLGNoYXIqZm9yY2UpOwoKZXh0ZXJuIHN0cnVjdCBjdmZf
Zm9ybWF0ICpjdmZfZm9ybWF0c1tdOwpleHRlcm4gaW50IGN2Zl9mb3JtYXRfdXNlX2NvdW50W107
CiMgNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tc2Rvc19mc19zYi5oIiAyCgoKCgoK
c3RydWN0IGZhdF9tb3VudF9vcHRpb25zIHsKICAgICAgICB1aWRfdCBmc191aWQ7CiAgICAgICAg
Z2lkX3QgZnNfZ2lkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGZzX3VtYXNrOwogICAgICAgIHVu
c2lnbmVkIHNob3J0IGNvZGVwYWdlOwogICAgICAgIGNoYXIgKmlvY2hhcnNldDsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBzaG9ydG5hbWU7CiAgICAgICAgdW5zaWduZWQgY2hhciBuYW1lX2NoZWNr
OwogICAgICAgIHVuc2lnbmVkIGNoYXIgY29udmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBxdWll
dDoxLAogICAgICAgICAgICAgICAgIHNob3dleGVjOjEsCiAgICAgICAgICAgICAgICAgc3lzX2lt
bXV0YWJsZToxLAogICAgICAgICAgICAgICAgIGRvdHNPSzoxLAogICAgICAgICAgICAgICAgIGlz
dmZhdDoxLAogICAgICAgICAgICAgICAgIHV0Zjg6MSwKICAgICAgICAgICAgICAgICB1bmljb2Rl
X3hsYXRlOjEsCiAgICAgICAgICAgICAgICAgcG9zaXhmczoxLAogICAgICAgICAgICAgICAgIG51
bXRhaWw6MSwKICAgICAgICAgICAgICAgICBhdGFyaToxLAogICAgICAgICAgICAgICAgIGZhdDMy
OjEsCiAgICAgICAgICAgICAgICAgbm9jYXNlOjE7Cn07CgpzdHJ1Y3QgbXNkb3Nfc2JfaW5mbyB7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY2x1c3Rlcl9zaXplOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IGNsdXN0ZXJfYml0czsKICAgICAgICB1bnNpZ25lZCBjaGFyIGZhdHMsZmF0X2JpdHM7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgZmF0X3N0YXJ0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmF0
X2xlbmd0aDsKICAgICAgICB1bnNpZ25lZCBsb25nIGRpcl9zdGFydDsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBkaXJfZW50cmllczsKICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGFfc3RhcnQ7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBjbHVzdGVyczsKICAgICAgICB1bnNpZ25lZCBsb25nIHJvb3Rf
Y2x1c3RlcjsKICAgICAgICB1bnNpZ25lZCBsb25nIGZzaW5mb19zZWN0b3I7CiAgICAgICAgc3Ry
dWN0IHNlbWFwaG9yZSBmYXRfbG9jazsKICAgICAgICBpbnQgcHJldl9mcmVlOwogICAgICAgIGlu
dCBmcmVlX2NsdXN0ZXJzOwogICAgICAgIHN0cnVjdCBmYXRfbW91bnRfb3B0aW9ucyBvcHRpb25z
OwogICAgICAgIHN0cnVjdCBubHNfdGFibGUgKm5sc19kaXNrOwogICAgICAgIHN0cnVjdCBubHNf
dGFibGUgKm5sc19pbzsKICAgICAgICBzdHJ1Y3QgY3ZmX2Zvcm1hdCogY3ZmX2Zvcm1hdDsKICAg
ICAgICB2b2lkICpkaXJfb3BzOwogICAgICAgIHZvaWQgKnByaXZhdGVfZGF0YTsKICAgICAgICBp
bnQgZGlyX3Blcl9ibG9jazsKICAgICAgICBpbnQgZGlyX3Blcl9ibG9ja19iaXRzOwp9OwojIDY3
NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9pc29fZnNfc2IuaCIgMQoKCgoKCgpzdHJ1Y3QgaXNvZnNfc2JfaW5m
byB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX25pbm9kZXM7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzX256b25lczsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZmlyc3RkYXRhem9uZTsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHNfbG9nX3pvbmVfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNf
bWF4X3NpemU7CgogICAgICAgIHVuc2lnbmVkIGNoYXIgc19oaWdoX3NpZXJyYTsKICAgICAgICB1
bnNpZ25lZCBjaGFyIHNfbWFwcGluZzsKICAgICAgICBpbnQgc19yb2NrX29mZnNldDsKICAgICAg
ICB1bnNpZ25lZCBjaGFyIHNfcm9jazsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfam9saWV0X2xl
dmVsOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc191dGY4OwogICAgICAgIHVuc2lnbmVkIGNoYXIg
c19jcnVmdDsKCgogICAgICAgIHVuc2lnbmVkIGNoYXIgc191bmhpZGU7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciBzX25vc3VpZDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfbm9kZXY7CiAgICAgICAg
dW5zaWduZWQgY2hhciBzX25vY29tcHJlc3M7CgogICAgICAgIG1vZGVfdCBzX21vZGU7CiAgICAg
ICAgZ2lkX3Qgc19naWQ7CiAgICAgICAgdWlkX3Qgc191aWQ7CiAgICAgICAgc3RydWN0IG5sc190
YWJsZSAqc19ubHNfaW9jaGFyc2V0Owp9OwojIDY3NiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uZnNfZnNfc2Iu
aCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbGlzdC5oIiAxCiMgNSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uZnNfZnNfc2IuaCIgMgoKCgoKc3RydWN0IG5m
c19zZXJ2ZXIgewogICAgICAgIHN0cnVjdCBycGNfY2xudCAqIGNsaWVudDsKICAgICAgICBzdHJ1
Y3QgbmZzX3JwY19vcHMgKiBycGNfb3BzOwogICAgICAgIGludCBmbGFnczsKICAgICAgICB1bnNp
Z25lZCBpbnQgcnNpemU7CiAgICAgICAgdW5zaWduZWQgaW50IHJwYWdlczsKICAgICAgICB1bnNp
Z25lZCBpbnQgd3NpemU7CiAgICAgICAgdW5zaWduZWQgaW50IHdwYWdlczsKICAgICAgICB1bnNp
Z25lZCBpbnQgZHRzaXplOwogICAgICAgIHVuc2lnbmVkIGludCBic2l6ZTsKICAgICAgICB1bnNp
Z25lZCBpbnQgYWNyZWdtaW47CiAgICAgICAgdW5zaWduZWQgaW50IGFjcmVnbWF4OwogICAgICAg
IHVuc2lnbmVkIGludCBhY2Rpcm1pbjsKICAgICAgICB1bnNpZ25lZCBpbnQgYWNkaXJtYXg7CiAg
ICAgICAgdW5zaWduZWQgaW50IG5hbWVsZW47CiAgICAgICAgY2hhciAqIGhvc3RuYW1lOwogICAg
ICAgIHN0cnVjdCBuZnNfcmVxbGlzdCAqIHJ3X3JlcXVlc3RzOwogICAgICAgIHN0cnVjdCBsaXN0
X2hlYWQgbHJ1X3JlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHJ1X2RpcnR5
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxydV9jb21taXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbHJ1X2J1c3k7Cn07CgoKCgpzdHJ1Y3QgbmZzX3NiX2luZm8g
ewogICAgICAgIHN0cnVjdCBuZnNfc2VydmVyIHNfc2VydmVyOwp9OwojIDY3NyAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9zeXN2X2ZzX3NiLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9z
eXN2X2ZzX3NiLmgiCnN0cnVjdCBzeXN2X3NiX2luZm8gewogICAgICAgIGludCBzX3R5cGU7CiAg
ICAgICAgY2hhciBzX2J5dGVzZXg7CiAgICAgICAgY2hhciBzX3RydW5jYXRlOwoKICAgICAgICBu
bGlua190IHNfbGlua19tYXg7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5vZGVzX3Blcl9ibG9j
azsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbm9kZXNfcGVyX2Jsb2NrXzE7CiAgICAgICAgdW5z
aWduZWQgaW50IHNfaW5vZGVzX3Blcl9ibG9ja19iaXRzOwogICAgICAgIHVuc2lnbmVkIGludCBz
X2luZF9wZXJfYmxvY2s7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5kX3Blcl9ibG9ja19iaXRz
OwogICAgICAgIHVuc2lnbmVkIGludCBzX2luZF9wZXJfYmxvY2tfMjsKICAgICAgICB1bnNpZ25l
ZCBpbnQgc190b29iaWdfYmxvY2s7CiAgICAgICAgdW5zaWduZWQgaW50IHNfYmxvY2tfYmFzZTsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX2ZpY19zaXplOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IHNfZmxjX3NpemU7CgogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqc19iaDE7CiAgICAgICAg
c3RydWN0IGJ1ZmZlcl9oZWFkICpzX2JoMjsKCgogICAgICAgIGNoYXIgKiBzX3NiZDE7CiAgICAg
ICAgY2hhciAqIHNfc2JkMjsKICAgICAgICB1MTYgKnNfc2JfZmljX2NvdW50OwogICAgICAgIHUx
NiAqc19zYl9maWNfaW5vZGVzOwogICAgICAgIHUxNiAqc19zYl90b3RhbF9mcmVlX2lub2RlczsK
ICAgICAgICB1MTYgKnNfYmNhY2hlX2NvdW50OwogICAgICAgIHUzMiAqc19iY2FjaGU7CiAgICAg
ICAgdTMyICpzX2ZyZWVfYmxvY2tzOwogICAgICAgIHUzMiAqc19zYl90aW1lOwogICAgICAgIHUz
MiAqc19zYl9zdGF0ZTsKCgogICAgICAgIHUzMiBzX2ZpcnN0aW5vZGV6b25lOwogICAgICAgIHUz
MiBzX2ZpcnN0ZGF0YXpvbmU7CiAgICAgICAgdTMyIHNfbmlub2RlczsKICAgICAgICB1MzIgc19u
ZGF0YXpvbmVzOwogICAgICAgIHUzMiBzX256b25lczsKICAgICAgICB1MTYgc19uYW1lbGVuOwp9
OwojIDY3OCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9hZmZzX2ZzX3NiLmgiIDEKIyAxMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9hZmZzX2ZzX3NiLmgiCnN0cnVjdCBhZmZzX2JtX2luZm8gewogICAg
ICAgIHUzMiBibV9rZXk7CiAgICAgICAgdTMyIGJtX2ZyZWU7Cn07CgpzdHJ1Y3QgYWZmc19zYl9p
bmZvIHsKICAgICAgICBpbnQgc19wYXJ0aXRpb25fc2l6ZTsKICAgICAgICBpbnQgc19yZXNlcnZl
ZDsKCiAgICAgICAgdTMyIHNfZGF0YV9ibGtzaXplOwogICAgICAgIHUzMiBzX3Jvb3RfYmxvY2s7
CiAgICAgICAgaW50IHNfaGFzaHNpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ZsYWdzOwog
ICAgICAgIHVpZF90IHNfdWlkOwogICAgICAgIGdpZF90IHNfZ2lkOwogICAgICAgIHVtb2RlX3Qg
c19tb2RlOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqc19yb290X2JoOwogICAgICAgIHN0
cnVjdCBzZW1hcGhvcmUgc19ibWxvY2s7CiAgICAgICAgc3RydWN0IGFmZnNfYm1faW5mbyAqc19i
aXRtYXA7CiAgICAgICAgdTMyIHNfYm1hcF9jb3VudDsKICAgICAgICB1MzIgc19ibWFwX2JpdHM7
CiAgICAgICAgdTMyIHNfbGFzdF9ibWFwOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqc19i
bWFwX2JoOwogICAgICAgIGNoYXIgKnNfcHJlZml4OwogICAgICAgIGludCBzX3ByZWZpeF9sZW47
CiAgICAgICAgY2hhciBzX3ZvbHVtZVszMl07Cn07CiMgNjc5ICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Vmc19m
c19zYi5oIiAxCiMgMTcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdWZzX2ZzX3NiLmgi
CiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC91ZnNfZnMuaCIgMQojIDMwICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDMxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3Vmc19mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIg
MQojIDMyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90aW1lLmgiIDEKIyAzMyAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC91ZnNfZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvc3RhdC5oIiAxCiMgMzQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdWZzX2ZzLmgi
IDIKIyAyMzcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdWZzX2ZzLmgiCnN0cnVjdCB1
ZnNfdGltZXZhbCB7CiAgICAgICAgX19zMzIgdHZfc2VjOwogICAgICAgIF9fczMyIHR2X3VzZWM7
Cn07CgpzdHJ1Y3QgdWZzX2Rpcl9lbnRyeSB7CiAgICAgICAgX191MzIgZF9pbm87CiAgICAgICAg
X191MTYgZF9yZWNsZW47CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgX191MTYgZF9u
YW1sZW47CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBf
X3U4IGRfdHlwZTsKICAgICAgICAgICAgICAgICAgICAgICAgX191OCBkX25hbWxlbjsKICAgICAg
ICAgICAgICAgIH0gZF80NDsKICAgICAgICB9IGRfdTsKICAgICAgICBfX3U4IGRfbmFtZVsyNTUg
KyAxXTsKfTsKCnN0cnVjdCB1ZnNfY3N1bSB7CiAgICAgICAgX191MzIgY3NfbmRpcjsKICAgICAg
ICBfX3UzMiBjc19uYmZyZWU7CiAgICAgICAgX191MzIgY3NfbmlmcmVlOwogICAgICAgIF9fdTMy
IGNzX25mZnJlZTsKfTsKCgoKCnN0cnVjdCB1ZnNfc3VwZXJfYmxvY2sgewogICAgICAgIF9fdTMy
IGZzX2xpbms7CiAgICAgICAgX191MzIgZnNfcmxpbms7CiAgICAgICAgX191MzIgZnNfc2Jsa25v
OwogICAgICAgIF9fdTMyIGZzX2NibGtubzsKICAgICAgICBfX3UzMiBmc19pYmxrbm87CiAgICAg
ICAgX191MzIgZnNfZGJsa25vOwogICAgICAgIF9fdTMyIGZzX2Nnb2Zmc2V0OwogICAgICAgIF9f
dTMyIGZzX2NnbWFzazsKICAgICAgICBfX3UzMiBmc190aW1lOwogICAgICAgIF9fdTMyIGZzX3Np
emU7CiAgICAgICAgX191MzIgZnNfZHNpemU7CiAgICAgICAgX191MzIgZnNfbmNnOwogICAgICAg
IF9fdTMyIGZzX2JzaXplOwogICAgICAgIF9fdTMyIGZzX2ZzaXplOwogICAgICAgIF9fdTMyIGZz
X2ZyYWc7CgogICAgICAgIF9fdTMyIGZzX21pbmZyZWU7CiAgICAgICAgX191MzIgZnNfcm90ZGVs
YXk7CiAgICAgICAgX191MzIgZnNfcnBzOwoKICAgICAgICBfX3UzMiBmc19ibWFzazsKICAgICAg
ICBfX3UzMiBmc19mbWFzazsKICAgICAgICBfX3UzMiBmc19ic2hpZnQ7CiAgICAgICAgX191MzIg
ZnNfZnNoaWZ0OwoKICAgICAgICBfX3UzMiBmc19tYXhjb250aWc7CiAgICAgICAgX191MzIgZnNf
bWF4YnBnOwoKICAgICAgICBfX3UzMiBmc19mcmFnc2hpZnQ7CiAgICAgICAgX191MzIgZnNfZnNi
dG9kYjsKICAgICAgICBfX3UzMiBmc19zYnNpemU7CiAgICAgICAgX191MzIgZnNfY3NtYXNrOwog
ICAgICAgIF9fdTMyIGZzX2Nzc2hpZnQ7CiAgICAgICAgX191MzIgZnNfbmluZGlyOwogICAgICAg
IF9fdTMyIGZzX2lub3BiOwogICAgICAgIF9fdTMyIGZzX25zcGY7CgogICAgICAgIF9fdTMyIGZz
X29wdGltOwoKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAg
ICAgICAgICAgICAgICAgICBfX3UzMiBmc19ucHNlY3Q7CiAgICAgICAgICAgICAgICB9IGZzX3N1
bjsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMy
IGZzX3N0YXRlOwogICAgICAgICAgICAgICAgfSBmc19zdW54ODY7CiAgICAgICAgfSBmc191MTsK
ICAgICAgICBfX3UzMiBmc19pbnRlcmxlYXZlOwogICAgICAgIF9fdTMyIGZzX3RyYWNrc2tldzsK
CgoKCiAgICAgICAgX191MzIgZnNfaWRbMl07CgogICAgICAgIF9fdTMyIGZzX2NzYWRkcjsKICAg
ICAgICBfX3UzMiBmc19jc3NpemU7CiAgICAgICAgX191MzIgZnNfY2dzaXplOwoKICAgICAgICBf
X3UzMiBmc19udHJhazsKICAgICAgICBfX3UzMiBmc19uc2VjdDsKICAgICAgICBfX3UzMiBmc19z
cGM7CgogICAgICAgIF9fdTMyIGZzX25jeWw7CgogICAgICAgIF9fdTMyIGZzX2NwZzsKICAgICAg
ICBfX3UzMiBmc19pcGc7CiAgICAgICAgX191MzIgZnNfZnBnOwoKICAgICAgICBzdHJ1Y3QgdWZz
X2NzdW0gZnNfY3N0b3RhbDsKCiAgICAgICAgX19zOCBmc19mbW9kOwogICAgICAgIF9fczggZnNf
Y2xlYW47CiAgICAgICAgX19zOCBmc19yb25seTsKICAgICAgICBfX3M4IGZzX2ZsYWdzOwogICAg
ICAgIF9fczggZnNfZnNtbnRbNTEyXTsKCiAgICAgICAgX191MzIgZnNfY2dyb3RvcjsKICAgICAg
ICBfX3UzMiBmc19jc3BbMzFdOwogICAgICAgIF9fdTMyIGZzX21heGNsdXN0ZXI7CiAgICAgICAg
X191MzIgZnNfY3BjOwogICAgICAgIF9fdTE2IGZzX29wb3N0YmxbMTZdWzhdOwogICAgICAgIHVu
aW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9f
czMyIGZzX3NwYXJlY29uWzUzXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfcmVj
bGFpbTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb24yWzFdOwogICAg
ICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAgICAgICAgICAg
ICAgX191MzIgZnNfcWJtYXNrWzJdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19x
Zm1hc2tbMl07CiAgICAgICAgICAgICAgICB9IGZzX3N1bjsKICAgICAgICAgICAgICAgIHN0cnVj
dCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uWzUzXTsKICAgICAg
ICAgICAgICAgICAgICAgICAgX19zMzIgZnNfcmVjbGFpbTsKICAgICAgICAgICAgICAgICAgICAg
ICAgX19zMzIgZnNfc3BhcmVjb24yWzFdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBm
c19ucHNlY3Q7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAg
ICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAgICAgICAg
fSBmc19zdW54ODY7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAg
ICAgICBfX3MzMiBmc19zcGFyZWNvbls1MF07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMy
IGZzX2NvbnRpZ3N1bXNpemU7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX21heHN5
bWxpbmtsZW47CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX2lub2RlZm10OwogICAg
ICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19tYXhmaWxlc2l6ZVsyXTsKICAgICAgICAgICAg
ICAgICAgICAgICAgX191MzIgZnNfcWJtYXNrWzJdOwogICAgICAgICAgICAgICAgICAgICAgICBf
X3UzMiBmc19xZm1hc2tbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3N0YXRl
OwogICAgICAgICAgICAgICAgfSBmc180NDsKICAgICAgICB9IGZzX3UyOwogICAgICAgIF9fczMy
IGZzX3Bvc3RibGZvcm1hdDsKICAgICAgICBfX3MzMiBmc19ucnBvczsKICAgICAgICBfX3MzMiBm
c19wb3N0YmxvZmY7CiAgICAgICAgX19zMzIgZnNfcm90YmxvZmY7CiAgICAgICAgX19zMzIgZnNf
bWFnaWM7CiAgICAgICAgX191OCBmc19zcGFjZVsxXTsKfTsKIyA0MTUgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvdWZzX2ZzLmgiCnN0cnVjdCB1ZnNfY3lsaW5kZXJfZ3JvdXAgewogICAg
ICAgIF9fdTMyIGNnX2xpbms7CiAgICAgICAgX191MzIgY2dfbWFnaWM7CiAgICAgICAgX191MzIg
Y2dfdGltZTsKICAgICAgICBfX3UzMiBjZ19jZ3g7CiAgICAgICAgX191MTYgY2dfbmN5bDsKICAg
ICAgICBfX3UxNiBjZ19uaWJsazsKICAgICAgICBfX3UzMiBjZ19uZGJsazsKICAgICAgICBzdHJ1
Y3QgdWZzX2NzdW0gY2dfY3M7CiAgICAgICAgX191MzIgY2dfcm90b3I7CiAgICAgICAgX191MzIg
Y2dfZnJvdG9yOwogICAgICAgIF9fdTMyIGNnX2lyb3RvcjsKICAgICAgICBfX3UzMiBjZ19mcnN1
bVsoODE5MiAvIDEwMjQpXTsKICAgICAgICBfX3UzMiBjZ19idG90b2ZmOwogICAgICAgIF9fdTMy
IGNnX2JvZmY7CiAgICAgICAgX191MzIgY2dfaXVzZWRvZmY7CiAgICAgICAgX191MzIgY2dfZnJl
ZW9mZjsKICAgICAgICBfX3UzMiBjZ19uZXh0ZnJlZW9mZjsKICAgICAgICB1bmlvbiB7CiAgICAg
ICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBjZ19jbHVz
dGVyc3Vtb2ZmOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBjZ19jbHVzdGVyb2ZmOwog
ICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBjZ19uY2x1c3RlcmJsa3M7CiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fdTMyIGNnX3NwYXJlY29uWzEzXTsKICAgICAgICAgICAgICAgIH0gY2df
NDQ7CiAgICAgICAgICAgICAgICBfX3UzMiBjZ19zcGFyZWNvblsxNl07CiAgICAgICAgfSBjZ191
OwogICAgICAgIF9fdTggY2dfc3BhY2VbMV07Cgp9OwoKCgoKc3RydWN0IHVmc19pbm9kZSB7CiAg
ICAgICAgX191MTYgdWlfbW9kZTsKICAgICAgICBfX3UxNiB1aV9ubGluazsKICAgICAgICB1bmlv
biB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3Ux
NiB1aV9zdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UxNiB1aV9zZ2lkOwogICAgICAg
ICAgICAgICAgfSBvbGRpZHM7CiAgICAgICAgICAgICAgICBfX3UzMiB1aV9pbnVtYmVyOwogICAg
ICAgICAgICAgICAgX191MzIgdWlfYXV0aG9yOwogICAgICAgIH0gdWlfdTE7CiAgICAgICAgX191
NjQgdWlfc2l6ZTsKICAgICAgICBzdHJ1Y3QgdWZzX3RpbWV2YWwgdWlfYXRpbWU7CiAgICAgICAg
c3RydWN0IHVmc190aW1ldmFsIHVpX210aW1lOwogICAgICAgIHN0cnVjdCB1ZnNfdGltZXZhbCB1
aV9jdGltZTsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAg
ICAgICAgICAgICAgICAgICBfX3UzMiB1aV9kYlsxMl07CiAgICAgICAgICAgICAgICAgICAgICAg
IF9fdTMyIHVpX2liWzNdOwogICAgICAgICAgICAgICAgfSB1aV9hZGRyOwogICAgICAgICAgICAg
ICAgX191OCB1aV9zeW1saW5rWzQqKDEyICszKV07CiAgICAgICAgfSB1aV91MjsKICAgICAgICBf
X3UzMiB1aV9mbGFnczsKICAgICAgICBfX3UzMiB1aV9ibG9ja3M7CiAgICAgICAgX191MzIgdWlf
Z2VuOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fdTMyIHVpX3NoYWRvdzsKICAgICAgICAgICAgICAgICAgICAgICAgX191
MzIgdWlfdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9naWQ7CiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fdTMyIHVpX29lZnRmbGFnOwogICAgICAgICAgICAgICAgfSB1aV9z
dW47CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3Uz
MiB1aV91aWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX2dpZDsKICAgICAgICAg
ICAgICAgICAgICAgICAgX19zMzIgdWlfc3BhcmVbMl07CiAgICAgICAgICAgICAgICB9IHVpXzQ0
OwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIg
dWlfdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9naWQ7CiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fdTE2IHVpX21vZGVoOwogICAgICAgICAgICAgICAgICAgICAgICBfX3Ux
NiB1aV9zcGFyZTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfdHJhbnM7CiAgICAg
ICAgICAgICAgICB9IHVpX2h1cmQ7CiAgICAgICAgfSB1aV91MzsKfTsKIyA1MTQgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvdWZzX2ZzLmgiCmV4dGVybiB2b2lkIHVmc19mcmVlX2ZyYWdt
ZW50cyAoc3RydWN0IGlub2RlICosIHVuc2lnbmVkLCB1bnNpZ25lZCk7CmV4dGVybiB2b2lkIHVm
c19mcmVlX2Jsb2NrcyAoc3RydWN0IGlub2RlICosIHVuc2lnbmVkLCB1bnNpZ25lZCk7CmV4dGVy
biB1bnNpZ25lZCB1ZnNfbmV3X2ZyYWdtZW50cyAoc3RydWN0IGlub2RlICosIHUzMiAqLCB1bnNp
Z25lZCwgdW5zaWduZWQsIHVuc2lnbmVkLCBpbnQgKik7CgoKZXh0ZXJuIHN0cnVjdCB1ZnNfY2df
cHJpdmF0ZV9pbmZvICogdWZzX2xvYWRfY3lsaW5kZXIgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1
bnNpZ25lZCk7CmV4dGVybiB2b2lkIHVmc19wdXRfY3lsaW5kZXIgKHN0cnVjdCBzdXBlcl9ibG9j
ayAqLCB1bnNpZ25lZCk7CgoKZXh0ZXJuIHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHVmc19kaXJf
aW5vZGVfb3BlcmF0aW9uczsKZXh0ZXJuIGludCB1ZnNfY2hlY2tfZGlyX2VudHJ5IChjb25zdCBj
aGFyICosIHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgdWZzX2Rpcl9lbnRyeSAqLCBzdHJ1Y3QgYnVm
ZmVyX2hlYWQgKiwgdW5zaWduZWQgbG9uZyk7CmV4dGVybiBpbnQgdWZzX2FkZF9saW5rIChzdHJ1
Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGlub190IHVmc19pbm9kZV9ieV9u
YW1lKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwpleHRlcm4gaW50IHVmc19tYWtl
X2VtcHR5KHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBzdHJ1Y3QgdWZz
X2Rpcl9lbnRyeSAqIHVmc19maW5kX2VudHJ5IChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBidWZm
ZXJfaGVhZCAqKik7CmV4dGVybiBpbnQgdWZzX2RlbGV0ZV9lbnRyeSAoc3RydWN0IGlub2RlICos
IHN0cnVjdCB1ZnNfZGlyX2VudHJ5ICosIHN0cnVjdCBidWZmZXJfaGVhZCAqKTsKZXh0ZXJuIGlu
dCB1ZnNfZW1wdHlfZGlyIChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBzdHJ1Y3QgdWZzX2Rpcl9l
bnRyeSAqIHVmc19kb3Rkb3QgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiop
OwpleHRlcm4gdm9pZCB1ZnNfc2V0X2xpbmsoc3RydWN0IGlub2RlICosIHN0cnVjdCB1ZnNfZGly
X2VudHJ5ICosIHN0cnVjdCBidWZmZXJfaGVhZCAqLCBzdHJ1Y3QgaW5vZGUgKik7CgoKZXh0ZXJu
IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHVmc19maWxlX2lub2RlX29wZXJhdGlvbnM7CmV4dGVy
biBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHVmc19maWxlX29wZXJhdGlvbnM7CgpleHRlcm4gc3Ry
dWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyB1ZnNfYW9wczsKCgpleHRlcm4gdm9pZCB1ZnNf
ZnJlZV9pbm9kZSAoc3RydWN0IGlub2RlICppbm9kZSk7CmV4dGVybiBzdHJ1Y3QgaW5vZGUgKiB1
ZnNfbmV3X2lub2RlIChjb25zdCBzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKCgpleHRlcm4gaW50IHVm
c19mcmFnX21hcCAoc3RydWN0IGlub2RlICosIGludCk7CmV4dGVybiB2b2lkIHVmc19yZWFkX2lu
b2RlIChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIHVmc19wdXRfaW5vZGUgKHN0cnVjdCBp
bm9kZSAqKTsKZXh0ZXJuIHZvaWQgdWZzX3dyaXRlX2lub2RlIChzdHJ1Y3QgaW5vZGUgKiwgaW50
KTsKZXh0ZXJuIGludCB1ZnNfc3luY19pbm9kZSAoc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9p
ZCB1ZnNfZGVsZXRlX2lub2RlIChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBzdHJ1Y3QgYnVmZmVy
X2hlYWQgKiB1ZnNfZ2V0ZnJhZyAoc3RydWN0IGlub2RlICosIHVuc2lnbmVkLCBpbnQsIGludCAq
KTsKZXh0ZXJuIHN0cnVjdCBidWZmZXJfaGVhZCAqIHVmc19icmVhZCAoc3RydWN0IGlub2RlICos
IHVuc2lnbmVkLCBpbnQsIGludCAqKTsKCgpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB1
ZnNfZGlyX29wZXJhdGlvbnM7CgoKZXh0ZXJuIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIHVmc19m
c190eXBlOwpleHRlcm4gdm9pZCB1ZnNfd2FybmluZyAoc3RydWN0IHN1cGVyX2Jsb2NrICosIGNv
bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHBy
aW50ZiwgMywgNCkpKTsKZXh0ZXJuIHZvaWQgdWZzX2Vycm9yIChzdHJ1Y3Qgc3VwZXJfYmxvY2sg
KiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLikgX19hdHRyaWJ1dGVfXyAoKGZvcm1h
dCAocHJpbnRmLCAzLCA0KSkpOwpleHRlcm4gdm9pZCB1ZnNfcGFuaWMgKHN0cnVjdCBzdXBlcl9i
bG9jayAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKSBfX2F0dHJpYnV0ZV9fICgo
Zm9ybWF0IChwcmludGYsIDMsIDQpKSk7CmV4dGVybiB2b2lkIHVmc193cml0ZV9zdXBlciAoc3Ry
dWN0IHN1cGVyX2Jsb2NrICopOwoKCmV4dGVybiBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyB1ZnNf
ZmFzdF9zeW1saW5rX2lub2RlX29wZXJhdGlvbnM7CgoKZXh0ZXJuIHZvaWQgdWZzX3RydW5jYXRl
IChzdHJ1Y3QgaW5vZGUgKik7CiMgMTggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdWZz
X2ZzX3NiLmgiIDIKCgoKCgpzdHJ1Y3QgdWZzX2J1ZmZlcl9oZWFkIHsKICAgICAgICB1bnNpZ25l
ZCBmcmFnbWVudDsKICAgICAgICB1bnNpZ25lZCBjb3VudDsKICAgICAgICBzdHJ1Y3QgYnVmZmVy
X2hlYWQgKiBiaFsoODE5MiAvIDEwMjQpXTsKfTsKCnN0cnVjdCB1ZnNfY2dfcHJpdmF0ZV9pbmZv
IHsKICAgICAgICBzdHJ1Y3QgdWZzX2N5bGluZGVyX2dyb3VwIHVjZzsKICAgICAgICBfX3UzMiBj
X2NneDsKICAgICAgICBfX3UxNiBjX25jeWw7CiAgICAgICAgX191MTYgY19uaWJsazsKICAgICAg
ICBfX3UzMiBjX25kYmxrOwogICAgICAgIF9fdTMyIGNfcm90b3I7CiAgICAgICAgX191MzIgY19m
cm90b3I7CiAgICAgICAgX191MzIgY19pcm90b3I7CiAgICAgICAgX191MzIgY19idG90b2ZmOwog
ICAgICAgIF9fdTMyIGNfYm9mZjsKICAgICAgICBfX3UzMiBjX2l1c2Vkb2ZmOwogICAgICAgIF9f
dTMyIGNfZnJlZW9mZjsKICAgICAgICBfX3UzMiBjX25leHRmcmVlb2ZmOwogICAgICAgIF9fdTMy
IGNfY2x1c3RlcnN1bW9mZjsKICAgICAgICBfX3UzMiBjX2NsdXN0ZXJvZmY7CiAgICAgICAgX191
MzIgY19uY2x1c3RlcmJsa3M7Cn07CgpzdHJ1Y3QgdWZzX3NiX3ByaXZhdGVfaW5mbyB7CiAgICAg
ICAgc3RydWN0IHVmc19idWZmZXJfaGVhZCBzX3ViaDsKICAgICAgICBfX3UzMiBzX3NibGtubzsK
ICAgICAgICBfX3UzMiBzX2NibGtubzsKICAgICAgICBfX3UzMiBzX2libGtubzsKICAgICAgICBf
X3UzMiBzX2RibGtubzsKICAgICAgICBfX3UzMiBzX2Nnb2Zmc2V0OwogICAgICAgIF9fdTMyIHNf
Y2dtYXNrOwogICAgICAgIF9fdTMyIHNfc2l6ZTsKICAgICAgICBfX3UzMiBzX2RzaXplOwogICAg
ICAgIF9fdTMyIHNfbmNnOwogICAgICAgIF9fdTMyIHNfYnNpemU7CiAgICAgICAgX191MzIgc19m
c2l6ZTsKICAgICAgICBfX3UzMiBzX2ZwYjsKICAgICAgICBfX3UzMiBzX21pbmZyZWU7CiAgICAg
ICAgX191MzIgc19ibWFzazsKICAgICAgICBfX3UzMiBzX2ZtYXNrOwogICAgICAgIF9fdTMyIHNf
YnNoaWZ0OwogICAgICAgIF9fdTMyIHNfZnNoaWZ0OwogICAgICAgIF9fdTMyIHNfZnBic2hpZnQ7
CiAgICAgICAgX191MzIgc19mc2J0b2RiOwogICAgICAgIF9fdTMyIHNfc2JzaXplOwogICAgICAg
IF9fdTMyIHNfY3NtYXNrOwogICAgICAgIF9fdTMyIHNfY3NzaGlmdDsKICAgICAgICBfX3UzMiBz
X25pbmRpcjsKICAgICAgICBfX3UzMiBzX2lub3BiOwogICAgICAgIF9fdTMyIHNfbnNwZjsKICAg
ICAgICBfX3UzMiBzX25wc2VjdDsKICAgICAgICBfX3UzMiBzX2ludGVybGVhdmU7CiAgICAgICAg
X191MzIgc190cmFja3NrZXc7CiAgICAgICAgX191MzIgc19jc2FkZHI7CiAgICAgICAgX191MzIg
c19jc3NpemU7CiAgICAgICAgX191MzIgc19jZ3NpemU7CiAgICAgICAgX191MzIgc19udHJhazsK
ICAgICAgICBfX3UzMiBzX25zZWN0OwogICAgICAgIF9fdTMyIHNfc3BjOwogICAgICAgIF9fdTMy
IHNfaXBnOwogICAgICAgIF9fdTMyIHNfZnBnOwogICAgICAgIF9fdTMyIHNfY3BjOwogICAgICAg
IF9fczMyIHNfY29udGlnc3Vtc2l6ZTsKICAgICAgICBfX3M2NCBzX3FibWFzazsKICAgICAgICBf
X3M2NCBzX3FmbWFzazsKICAgICAgICBfX3MzMiBzX3Bvc3RibGZvcm1hdDsKICAgICAgICBfX3Mz
MiBzX25ycG9zOwogICAgICAgIF9fczMyIHNfcG9zdGJsb2ZmOwogICAgICAgIF9fczMyIHNfcm90
YmxvZmY7CgogICAgICAgIF9fdTMyIHNfZnBibWFzazsKICAgICAgICBfX3UzMiBzX2FwYjsKICAg
ICAgICBfX3UzMiBzXzJhcGI7CiAgICAgICAgX191MzIgc18zYXBiOwogICAgICAgIF9fdTMyIHNf
YXBibWFzazsKICAgICAgICBfX3UzMiBzX2FwYnNoaWZ0OwogICAgICAgIF9fdTMyIHNfMmFwYnNo
aWZ0OwogICAgICAgIF9fdTMyIHNfM2FwYnNoaWZ0OwogICAgICAgIF9fdTMyIHNfbnNwZnNoaWZ0
OwogICAgICAgIF9fdTMyIHNfbnNwYjsKICAgICAgICBfX3UzMiBzX2lub3BmOwogICAgICAgIF9f
dTMyIHNfc2JiYXNlOwogICAgICAgIF9fdTMyIHNfYnBmOwogICAgICAgIF9fdTMyIHNfYnBmc2hp
ZnQ7CiAgICAgICAgX191MzIgc19icGZtYXNrOwoKICAgICAgICBfX3UzMiBzX21heHN5bWxpbmts
ZW47Cn07CgoKCgoKc3RydWN0IHVmc19zYl9pbmZvIHsKICAgICAgICBzdHJ1Y3QgdWZzX3NiX3By
aXZhdGVfaW5mbyAqIHNfdXNwaTsKICAgICAgICBzdHJ1Y3QgdWZzX2NzdW0gKiBzX2NzcFszMV07
CiAgICAgICAgdW5zaWduZWQgc19ieXRlc2V4OwogICAgICAgIHVuc2lnbmVkIHNfZmxhZ3M7CiAg
ICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfdWNnOwogICAgICAgIHN0cnVjdCB1ZnNfY2df
cHJpdmF0ZV9pbmZvICogc191Y3BpWzhdOwogICAgICAgIHVuc2lnbmVkIHNfY2dub1s4XTsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBzX2NnX2xvYWRlZDsKICAgICAgICB1bnNpZ25lZCBzX21vdW50
X29wdDsKfTsKCgoKCgoKCnN0cnVjdCB1ZnNfc3VwZXJfYmxvY2tfZmlyc3QgewogICAgICAgIF9f
dTMyIGZzX2xpbms7CiAgICAgICAgX191MzIgZnNfcmxpbms7CiAgICAgICAgX191MzIgZnNfc2Js
a25vOwogICAgICAgIF9fdTMyIGZzX2NibGtubzsKICAgICAgICBfX3UzMiBmc19pYmxrbm87CiAg
ICAgICAgX191MzIgZnNfZGJsa25vOwogICAgICAgIF9fdTMyIGZzX2Nnb2Zmc2V0OwogICAgICAg
IF9fdTMyIGZzX2NnbWFzazsKICAgICAgICBfX3UzMiBmc190aW1lOwogICAgICAgIF9fdTMyIGZz
X3NpemU7CiAgICAgICAgX191MzIgZnNfZHNpemU7CiAgICAgICAgX191MzIgZnNfbmNnOwogICAg
ICAgIF9fdTMyIGZzX2JzaXplOwogICAgICAgIF9fdTMyIGZzX2ZzaXplOwogICAgICAgIF9fdTMy
IGZzX2ZyYWc7CiAgICAgICAgX191MzIgZnNfbWluZnJlZTsKICAgICAgICBfX3UzMiBmc19yb3Rk
ZWxheTsKICAgICAgICBfX3UzMiBmc19ycHM7CiAgICAgICAgX191MzIgZnNfYm1hc2s7CiAgICAg
ICAgX191MzIgZnNfZm1hc2s7CiAgICAgICAgX191MzIgZnNfYnNoaWZ0OwogICAgICAgIF9fdTMy
IGZzX2ZzaGlmdDsKICAgICAgICBfX3UzMiBmc19tYXhjb250aWc7CiAgICAgICAgX191MzIgZnNf
bWF4YnBnOwogICAgICAgIF9fdTMyIGZzX2ZyYWdzaGlmdDsKICAgICAgICBfX3UzMiBmc19mc2J0
b2RiOwogICAgICAgIF9fdTMyIGZzX3Nic2l6ZTsKICAgICAgICBfX3UzMiBmc19jc21hc2s7CiAg
ICAgICAgX191MzIgZnNfY3NzaGlmdDsKICAgICAgICBfX3UzMiBmc19uaW5kaXI7CiAgICAgICAg
X191MzIgZnNfaW5vcGI7CiAgICAgICAgX191MzIgZnNfbnNwZjsKICAgICAgICBfX3UzMiBmc19v
cHRpbTsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg
ICAgICAgICAgICAgICBfX3UzMiBmc19ucHNlY3Q7CiAgICAgICAgICAgICAgICB9IGZzX3N1bjsK
ICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZz
X3N0YXRlOwogICAgICAgICAgICAgICAgfSBmc19zdW54ODY7CiAgICAgICAgfSBmc191MTsKICAg
ICAgICBfX3UzMiBmc19pbnRlcmxlYXZlOwogICAgICAgIF9fdTMyIGZzX3RyYWNrc2tldzsKICAg
ICAgICBfX3UzMiBmc19pZFsyXTsKICAgICAgICBfX3UzMiBmc19jc2FkZHI7CiAgICAgICAgX191
MzIgZnNfY3NzaXplOwogICAgICAgIF9fdTMyIGZzX2Nnc2l6ZTsKICAgICAgICBfX3UzMiBmc19u
dHJhazsKICAgICAgICBfX3UzMiBmc19uc2VjdDsKICAgICAgICBfX3UzMiBmc19zcGM7CiAgICAg
ICAgX191MzIgZnNfbmN5bDsKICAgICAgICBfX3UzMiBmc19jcGc7CiAgICAgICAgX191MzIgZnNf
aXBnOwogICAgICAgIF9fdTMyIGZzX2ZwZzsKICAgICAgICBzdHJ1Y3QgdWZzX2NzdW0gZnNfY3N0
b3RhbDsKICAgICAgICBfX3M4IGZzX2Ztb2Q7CiAgICAgICAgX19zOCBmc19jbGVhbjsKICAgICAg
ICBfX3M4IGZzX3Jvbmx5OwogICAgICAgIF9fczggZnNfZmxhZ3M7CiAgICAgICAgX19zOCBmc19m
c21udFs1MTIgLSAyMTJdOwoKfTsKCnN0cnVjdCB1ZnNfc3VwZXJfYmxvY2tfc2Vjb25kIHsKICAg
ICAgICBfX3M4IGZzX2ZzbW50WzIxMl07CiAgICAgICAgX191MzIgZnNfY2dyb3RvcjsKICAgICAg
ICBfX3UzMiBmc19jc3BbMzFdOwogICAgICAgIF9fdTMyIGZzX21heGNsdXN0ZXI7CiAgICAgICAg
X191MzIgZnNfY3BjOwogICAgICAgIF9fdTE2IGZzX29wb3N0YmxbODJdOwp9OwoKc3RydWN0IHVm
c19zdXBlcl9ibG9ja190aGlyZCB7CiAgICAgICAgX191MTYgZnNfb3Bvc3RibFs0Nl07CiAgICAg
ICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAg
ICAgX19zMzIgZnNfc3BhcmVjb25bNTNdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBm
c19yZWNsYWltOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbjJbMV07
CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3N0YXRlOwogICAgICAgICAgICAgICAg
ICAgICAgICBfX3UzMiBmc19xYm1hc2tbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMy
IGZzX3FmbWFza1syXTsKICAgICAgICAgICAgICAgIH0gZnNfc3VuOwogICAgICAgICAgICAgICAg
c3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb25bNTNdOwog
ICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19yZWNsYWltOwogICAgICAgICAgICAgICAg
ICAgICAgICBfX3MzMiBmc19zcGFyZWNvbjJbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIF9f
dTMyIGZzX25wc2VjdDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWJtYXNrWzJd
OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xZm1hc2tbMl07CiAgICAgICAgICAg
ICAgICB9IGZzX3N1bng4NjsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uWzUwXTsKICAgICAgICAgICAgICAgICAgICAgICAg
X19zMzIgZnNfY29udGlnc3Vtc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNf
bWF4c3ltbGlua2xlbjsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfaW5vZGVmbXQ7
CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX21heGZpbGVzaXplWzJdOwogICAgICAg
ICAgICAgICAgICAgICAgICBfX3UzMiBmc19xYm1hc2tbMl07CiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fdTMyIGZzX3FmbWFza1syXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNf
c3RhdGU7CiAgICAgICAgICAgICAgICB9IGZzXzQ0OwogICAgICAgIH0gZnNfdTI7CiAgICAgICAg
X19zMzIgZnNfcG9zdGJsZm9ybWF0OwogICAgICAgIF9fczMyIGZzX25ycG9zOwogICAgICAgIF9f
czMyIGZzX3Bvc3RibG9mZjsKICAgICAgICBfX3MzMiBmc19yb3RibG9mZjsKICAgICAgICBfX3Mz
MiBmc19tYWdpYzsKICAgICAgICBfX3U4IGZzX3NwYWNlWzFdOwp9OwojIDY4MCAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9lZnNfZnNfc2IuaCIgMQojIDI1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Vm
c19mc19zYi5oIgpzdHJ1Y3QgZWZzX3N1cGVyIHsKICAgICAgICBpbnQzMl90IGZzX3NpemU7CiAg
ICAgICAgaW50MzJfdCBmc19maXJzdGNnOwogICAgICAgIGludDMyX3QgZnNfY2dmc2l6ZTsKICAg
ICAgICBzaG9ydCBmc19jZ2lzaXplOwogICAgICAgIHNob3J0IGZzX3NlY3RvcnM7CiAgICAgICAg
c2hvcnQgZnNfaGVhZHM7CiAgICAgICAgc2hvcnQgZnNfbmNnOwogICAgICAgIHNob3J0IGZzX2Rp
cnR5OwogICAgICAgIGludDMyX3QgZnNfdGltZTsKICAgICAgICBpbnQzMl90IGZzX21hZ2ljOwog
ICAgICAgIGNoYXIgZnNfZm5hbWVbNl07CiAgICAgICAgY2hhciBmc19mcGFja1s2XTsKICAgICAg
ICBpbnQzMl90IGZzX2Jtc2l6ZTsKICAgICAgICBpbnQzMl90IGZzX3RmcmVlOwogICAgICAgIGlu
dDMyX3QgZnNfdGlub2RlOwogICAgICAgIGludDMyX3QgZnNfYm1ibG9jazsKICAgICAgICBpbnQz
Ml90IGZzX3JlcGxzYjsKICAgICAgICBpbnQzMl90IGZzX2xhc3RpYWxsb2M7CiAgICAgICAgY2hh
ciBmc19zcGFyZVsyMF07CiAgICAgICAgaW50MzJfdCBmc19jaGVja3N1bTsKfTsKCgpzdHJ1Y3Qg
ZWZzX3NiX2luZm8gewogICAgICAgIGludDMyX3QgZnNfbWFnaWM7CiAgICAgICAgaW50MzJfdCBm
c19zdGFydDsKICAgICAgICBpbnQzMl90IGZpcnN0X2Jsb2NrOwogICAgICAgIGludDMyX3QgdG90
YWxfYmxvY2tzOwogICAgICAgIGludDMyX3QgZ3JvdXBfc2l6ZTsKICAgICAgICBpbnQzMl90IGRh
dGFfZnJlZTsKICAgICAgICBpbnQzMl90IGlub2RlX2ZyZWU7CiAgICAgICAgc2hvcnQgaW5vZGVf
YmxvY2tzOwogICAgICAgIHNob3J0IHRvdGFsX2dyb3VwczsKfTsKIyA2ODEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvcm9tZnNfZnNfc2IuaCIgMQoKCgoKCnN0cnVjdCByb21mc19zYl9pbmZvIHsKICAgICAgICB1
bnNpZ25lZCBsb25nIHNfbWF4c2l6ZTsKfTsKIyA2ODIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc21iX2ZzX3Ni
LmgiIDEKIyAxNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zbWJfZnNfc2IuaCIKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAxNSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9zbWJfZnNfc2IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvc21iLmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9z
bWIuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAxMyAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zbWIuaCIgMgoKZW51bSBzbWJfcHJvdG9jb2wg
ewogICAgICAgIFNNQl9QUk9UT0NPTF9OT05FLAogICAgICAgIFNNQl9QUk9UT0NPTF9DT1JFLAog
ICAgICAgIFNNQl9QUk9UT0NPTF9DT1JFUExVUywKICAgICAgICBTTUJfUFJPVE9DT0xfTEFOTUFO
MSwKICAgICAgICBTTUJfUFJPVE9DT0xfTEFOTUFOMiwKICAgICAgICBTTUJfUFJPVE9DT0xfTlQx
Cn07CgplbnVtIHNtYl9jYXNlX2huZGwgewogICAgICAgIFNNQl9DQVNFX0RFRkFVTFQsCiAgICAg
ICAgU01CX0NBU0VfTE9XRVIsCiAgICAgICAgU01CX0NBU0VfVVBQRVIKfTsKCnN0cnVjdCBzbWJf
ZHNrYXR0ciB7CiAgICAgICAgX191MTYgdG90YWw7CiAgICAgICAgX191MTYgYWxsb2NibG9ja3M7
CiAgICAgICAgX191MTYgYmxvY2tzaXplOwogICAgICAgIF9fdTE2IGZyZWU7Cn07CgpzdHJ1Y3Qg
c21iX2Nvbm5fb3B0IHsKCgogICAgICAgIHVuc2lnbmVkIGludCBmZDsKCiAgICAgICAgZW51bSBz
bWJfcHJvdG9jb2wgcHJvdG9jb2w7CiAgICAgICAgZW51bSBzbWJfY2FzZV9obmRsIGNhc2VfaGFu
ZGxpbmc7CgoKCiAgICAgICAgX191MzIgbWF4X3htaXQ7CiAgICAgICAgX191MTYgc2VydmVyX3Vp
ZDsKICAgICAgICBfX3UxNiB0aWQ7CgoKICAgICAgICBfX3UxNiBzZWNtb2RlOwogICAgICAgIF9f
dTE2IG1heG11eDsKICAgICAgICBfX3UxNiBtYXh2Y3M7CiAgICAgICAgX191MTYgcmF3bW9kZTsK
ICAgICAgICBfX3UzMiBzZXNza2V5OwoKCiAgICAgICAgX191MzIgbWF4cmF3OwogICAgICAgIF9f
dTMyIGNhcGFiaWxpdGllczsKICAgICAgICBfX3MxNiBzZXJ2ZXJ6b25lOwp9OwoKCgoKc3RydWN0
IHNtYl9ubHNfY29kZXBhZ2UgewogICAgICAgIGNoYXIgbG9jYWxfbmFtZVsyMF07CiAgICAgICAg
Y2hhciByZW1vdGVfbmFtZVsyMF07Cn07CiMgNzggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvc21iLmgiCnN0cnVjdCBzbWJfZmF0dHIgewoKICAgICAgICBfX3UxNiBhdHRyOwoKICAgICAg
ICB1bnNpZ25lZCBsb25nIGZfaW5vOwogICAgICAgIHVtb2RlX3QgZl9tb2RlOwogICAgICAgIG5s
aW5rX3QgZl9ubGluazsKICAgICAgICB1aWRfdCBmX3VpZDsKICAgICAgICBnaWRfdCBmX2dpZDsK
ICAgICAgICBrZGV2X3QgZl9yZGV2OwogICAgICAgIG9mZl90IGZfc2l6ZTsKICAgICAgICB0aW1l
X3QgZl9hdGltZTsKICAgICAgICB0aW1lX3QgZl9tdGltZTsKICAgICAgICB0aW1lX3QgZl9jdGlt
ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZfYmxrc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25n
IGZfYmxvY2tzOwp9OwoKZW51bSBzbWJfY29ubl9zdGF0ZSB7CiAgICAgICAgQ09OTl9WQUxJRCwK
ICAgICAgICBDT05OX0lOVkFMSUQsCgogICAgICAgIENPTk5fUkVUUklFRCwKICAgICAgICBDT05O
X1JFVFJZSU5HCn07CiMgMTYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc21iX2ZzX3Ni
LmgiIDIKCgoKCgoKCnN0cnVjdCBzbWJfc2JfaW5mbyB7CiAgICAgICAgZW51bSBzbWJfY29ubl9z
dGF0ZSBzdGF0ZTsKICAgICAgICBzdHJ1Y3QgZmlsZSAqIHNvY2tfZmlsZTsKCiAgICAgICAgc3Ry
dWN0IHNtYl9tb3VudF9kYXRhX2tlcm5lbCAqbW50OwogICAgICAgIHVuc2lnbmVkIGNoYXIgKnRl
bXBfYnVmOwoKCgoKICAgICAgICB1bnNpZ25lZCBpbnQgZ2VuZXJhdGlvbjsKICAgICAgICBwaWRf
dCBjb25uX3BpZDsKICAgICAgICBzdHJ1Y3Qgc21iX2Nvbm5fb3B0IG9wdDsKCiAgICAgICAgc3Ry
dWN0IHNlbWFwaG9yZSBzZW07CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKCiAgICAg
ICAgX191MzIgcGFja2V0X3NpemU7CiAgICAgICAgdW5zaWduZWQgY2hhciAqIHBhY2tldDsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCByY2xzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGVycjsKCgog
ICAgICAgIHZvaWQgKmRhdGFfcmVhZHk7CgoKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpyZW1v
dGVfbmxzOwogICAgICAgIHN0cnVjdCBubHNfdGFibGUgKmxvY2FsX25sczsKCgoKCiAgICAgICAg
Y2hhciAqbmFtZV9idWY7CgogICAgICAgIGludCAoKmNvbnZlcnQpKGNoYXIgKiwgaW50LCBjb25z
dCBjaGFyICosIGludCwKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICos
IHN0cnVjdCBubHNfdGFibGUgKik7Cn07CgoKc3RhdGljIGlubGluZSB2b2lkCnNtYl9sb2NrX3Nl
cnZlcihzdHJ1Y3Qgc21iX3NiX2luZm8gKnNlcnZlcikKewogICAgICAgIGRvd24oJihzZXJ2ZXIt
PnNlbSkpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQKc21iX3VubG9ja19zZXJ2ZXIoc3RydWN0IHNt
Yl9zYl9pbmZvICpzZXJ2ZXIpCnsKICAgICAgICB1cCgmKHNlcnZlci0+c2VtKSk7Cn0KIyA2ODMg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvaGZzX2ZzX3NiLmgiIDEKIyAxNSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9oZnNfZnNfc2IuaCIKc3RydWN0IGhmc19uYW1lOwoKdHlwZWRlZiBpbnQgKCpoZnNf
bmFtZWluX2ZuKSAoY2hhciAqLCBjb25zdCBzdHJ1Y3QgaGZzX25hbWUgKik7CnR5cGVkZWYgdm9p
ZCAoKmhmc19uYW1lb3V0X2ZuKSAoc3RydWN0IGhmc19uYW1lICosIGNvbnN0IGNoYXIgKiwgaW50
KTsKdHlwZWRlZiB2b2lkICgqaGZzX2lmaWxsX2ZuKSAoc3RydWN0IGlub2RlICosIGlub190LCBj
b25zdCBpbnQpOwoKCgoKCgpzdHJ1Y3QgaGZzX3NiX2luZm8gewogICAgICAgIGludCBtYWdpYzsK
ICAgICAgICBzdHJ1Y3QgaGZzX21kYiAqc19tZGI7CiAgICAgICAgaW50IHNfcXVpZXQ7CgogICAg
ICAgIGludCBzX2xvd2VyY2FzZTsKICAgICAgICBpbnQgc19hZnBkOwogICAgICAgIGludCBzX3Zl
cnNpb247CiAgICAgICAgaGZzX25hbWVpbl9mbiBzX25hbWVpbjsKCgogICAgICAgIGhmc19uYW1l
b3V0X2ZuIHNfbmFtZW91dDsKCgogICAgICAgIGhmc19pZmlsbF9mbiBzX2lmaWxsOwoKICAgICAg
ICBjb25zdCBzdHJ1Y3QgaGZzX25hbWUgKnNfcmVzZXJ2ZWQxOwogICAgICAgIGNvbnN0IHN0cnVj
dCBoZnNfbmFtZSAqc19yZXNlcnZlZDI7CiAgICAgICAgX191MzIgc190eXBlOwogICAgICAgIF9f
dTMyIHNfY3JlYXRvcjsKICAgICAgICB1bW9kZV90IHNfdW1hc2s7CgogICAgICAgIHVpZF90IHNf
dWlkOwogICAgICAgIGdpZF90IHNfZ2lkOwogICAgICAgIGNoYXIgc19jb252Owp9OwojIDY4NCAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9hZGZzX2ZzX3NiLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9hZGZzX2ZzX3NiLmgiCnN0cnVjdCBhZGZzX2Rpc2NtYXA7CnN0cnVjdCBhZGZzX2Rp
cl9vcHM7CgoKCgpzdHJ1Y3QgYWRmc19zYl9pbmZvIHsKICAgICAgICBzdHJ1Y3QgYWRmc19kaXNj
bWFwICpzX21hcDsKICAgICAgICBzdHJ1Y3QgYWRmc19kaXJfb3BzICpzX2RpcjsKCiAgICAgICAg
dWlkX3Qgc191aWQ7CiAgICAgICAgZ2lkX3Qgc19naWQ7CiAgICAgICAgdW1vZGVfdCBzX293bmVy
X21hc2s7CiAgICAgICAgdW1vZGVfdCBzX290aGVyX21hc2s7CgogICAgICAgIF9fdTMyIHNfaWRz
X3Blcl96b25lOwogICAgICAgIF9fdTMyIHNfaWRsZW47CiAgICAgICAgX191MzIgc19tYXBfc2l6
ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfc2l6ZTsKICAgICAgICBzaWduZWQgaW50IHNfbWFw
MmJsazsKICAgICAgICB1bnNpZ25lZCBpbnQgc19sb2cyc2hhcmVzaXplOwogICAgICAgIHVuc2ln
bmVkIGludCBzX3ZlcnNpb247CiAgICAgICAgdW5zaWduZWQgaW50IHNfbmFtZWxlbjsKfTsKIyA2
ODUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvcW54NF9mc19zYi5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvcW54NF9mc19zYi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvcW54NF9mcy5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcW54NF9m
cy5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcW54dHlwZXMuaCIgMQojIDE0
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3FueDRfZnMuaCIgMgojIDQ1ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3FueDRfZnMuaCIKc3RydWN0IHFueDRfaW5vZGVfZW50cnkg
ewogICAgICAgIGNoYXIgZGlfZm5hbWVbMTZdOwogICAgICAgIHFueDRfb2ZmX3QgZGlfc2l6ZTsK
ICAgICAgICBxbng0X3h0bnRfdCBkaV9maXJzdF94dG50OwogICAgICAgIF9fdTMyIGRpX3hibGs7
CiAgICAgICAgX19zMzIgZGlfZnRpbWU7CiAgICAgICAgX19zMzIgZGlfbXRpbWU7CiAgICAgICAg
X19zMzIgZGlfYXRpbWU7CiAgICAgICAgX19zMzIgZGlfY3RpbWU7CiAgICAgICAgcW54NF9ueHRu
dF90IGRpX251bV94dG50czsKICAgICAgICBxbng0X21vZGVfdCBkaV9tb2RlOwogICAgICAgIHFu
eDRfbXVpZF90IGRpX3VpZDsKICAgICAgICBxbng0X21naWRfdCBkaV9naWQ7CiAgICAgICAgcW54
NF9ubGlua190IGRpX25saW5rOwogICAgICAgIF9fdTggZGlfemVyb1s0XTsKICAgICAgICBxbng0
X2Z0eXBlX3QgZGlfdHlwZTsKICAgICAgICBfX3U4IGRpX3N0YXR1czsKfTsKCnN0cnVjdCBxbng0
X2xpbmtfaW5mbyB7CiAgICAgICAgY2hhciBkbF9mbmFtZVs0OF07CiAgICAgICAgX191MzIgZGxf
aW5vZGVfYmxrOwogICAgICAgIF9fdTggZGxfaW5vZGVfbmR4OwogICAgICAgIF9fdTggZGxfc3Bh
cmVbMTBdOwogICAgICAgIF9fdTggZGxfc3RhdHVzOwp9OwoKc3RydWN0IHFueDRfeGJsayB7CiAg
ICAgICAgX191MzIgeGJsa19uZXh0X3hibGs7CiAgICAgICAgX191MzIgeGJsa19wcmV2X3hibGs7
CiAgICAgICAgX191OCB4YmxrX251bV94dG50czsKICAgICAgICBfX3U4IHhibGtfc3BhcmVbM107
CiAgICAgICAgX19zMzIgeGJsa19udW1fYmxvY2tzOwogICAgICAgIHFueDRfeHRudF90IHhibGtf
eHRudHNbNjBdOwogICAgICAgIGNoYXIgeGJsa19zaWduYXR1cmVbOF07CiAgICAgICAgcW54NF94
dG50X3QgeGJsa19maXJzdF94dG50Owp9OwoKc3RydWN0IHFueDRfc3VwZXJfYmxvY2sgewogICAg
ICAgIHN0cnVjdCBxbng0X2lub2RlX2VudHJ5IFJvb3REaXI7CiAgICAgICAgc3RydWN0IHFueDRf
aW5vZGVfZW50cnkgSW5vZGU7CiAgICAgICAgc3RydWN0IHFueDRfaW5vZGVfZW50cnkgQm9vdDsK
ICAgICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSBBbHRCb290Owp9OwojIDEwMCAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9xbng0X2ZzLmgiCmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICpx
bng0X2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KTsKZXh0
ZXJuIHVuc2lnbmVkIGxvbmcgcW54NF9jb3VudF9mcmVlX2Jsb2NrcyhzdHJ1Y3Qgc3VwZXJfYmxv
Y2sgKnNiKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcW54NF9ibG9ja19tYXAoc3RydWN0IGlub2Rl
ICppbm9kZSwgbG9uZyBpYmxvY2spOwoKZXh0ZXJuIHN0cnVjdCBidWZmZXJfaGVhZCAqcW54NF9n
ZXRibGsoc3RydWN0IGlub2RlICosIGludCwgaW50KTsKZXh0ZXJuIHN0cnVjdCBidWZmZXJfaGVh
ZCAqcW54NF9icmVhZChzdHJ1Y3QgaW5vZGUgKiwgaW50LCBpbnQpOwoKZXh0ZXJuIGludCBxbng0
X2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBpbnQgbW9k
ZSk7CmV4dGVybiBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBxbng0X2ZpbGVfaW5vZGVfb3BlcmF0
aW9uczsKZXh0ZXJuIHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHFueDRfZGlyX2lub2RlX29wZXJh
dGlvbnM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHFueDRfZmlsZV9vcGVyYXRpb25z
OwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBxbng0X2Rpcl9vcGVyYXRpb25zOwpleHRl
cm4gaW50IHFueDRfaXNfZnJlZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBsb25nIGJsb2NrKTsK
ZXh0ZXJuIGludCBxbng0X3NldF9iaXRtYXAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgbG9uZyBi
bG9jaywgaW50IGJ1c3kpOwpleHRlcm4gaW50IHFueDRfY3JlYXRlKHN0cnVjdCBpbm9kZSAqaW5v
ZGUsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50IG1vZGUpOwpleHRlcm4gdm9pZCBxbng0X3Ry
dW5jYXRlKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRlcm4gdm9pZCBxbng0X2ZyZWVfaW5vZGUo
c3RydWN0IGlub2RlICppbm9kZSk7CmV4dGVybiBpbnQgcW54NF91bmxpbmsoc3RydWN0IGlub2Rl
ICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7CmV4dGVybiBpbnQgcW54NF9ybWRpcihzdHJ1
Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KTsKZXh0ZXJuIGludCBxbng0X3N5
bmNfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBpbnQpOwpl
eHRlcm4gaW50IHFueDRfc3luY19pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJuIGlu
dCBxbng0X2dldF9ibG9jayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb25nIGlibG9jaywgc3RydWN0
IGJ1ZmZlcl9oZWFkICpiaCwgaW50IGNyZWF0ZSk7CiMgMTUgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvcW54NF9mc19zYi5oIiAyCgoKCgoKc3RydWN0IHFueDRfc2JfaW5mbyB7CiAgICAg
ICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpzYl9idWY7CiAgICAgICAgc3RydWN0IHFueDRfc3VwZXJf
YmxvY2sgKnNiOwogICAgICAgIHVuc2lnbmVkIGludCBWZXJzaW9uOwogICAgICAgIHN0cnVjdCBx
bng0X2lub2RlX2VudHJ5ICpCaXRNYXA7Cn07CiMgNjg2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3JlaXNlcmZz
X2ZzX3NiLmgiIDEKCgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90cXVl
dWUuaCIgMQojIDE2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIgojIDEg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIgMQojIDE3ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9saXN0LmgiIDEKIyAxOCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90
cXVldWUuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2JpdG9wcy5oIiAxCiMg
MTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHF1ZXVlLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMQojIDIwICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L3RxdWV1ZS5oIiAyCiMgMzggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
dHF1ZXVlLmgiCnN0cnVjdCB0cV9zdHJ1Y3QgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlz
dDsKICAgICAgICB1bnNpZ25lZCBsb25nIHN5bmM7CiAgICAgICAgdm9pZCAoKnJvdXRpbmUpKHZv
aWQgKik7CiAgICAgICAgdm9pZCAqZGF0YTsKfTsKIyA2NCAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC90cXVldWUuaCIKdHlwZWRlZiBzdHJ1Y3QgbGlzdF9oZWFkIHRhc2tfcXVldWU7CgoK
CgpleHRlcm4gdGFza19xdWV1ZSB0cV90aW1lcl9SZmEzZTlhY2MsIHRxX2ltbWVkaWF0ZV9SMGRh
MGRjZDEsIHRxX2Rpc2tfUjUzNzNkYmI2OwojIDk0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L3RxdWV1ZS5oIgpleHRlcm4gc3BpbmxvY2tfdCB0cXVldWVfbG9jazsKCgoKCgpzdGF0aWMg
aW5saW5lIGludCBxdWV1ZV90YXNrKHN0cnVjdCB0cV9zdHJ1Y3QgKmJoX3BvaW50ZXIsIHRhc2tf
cXVldWUgKmJoX2xpc3QpCnsKICAgICAgICBpbnQgcmV0ID0gMDsKICAgICAgICBpZiAoIXRlc3Rf
YW5kX3NldF9iaXQoMCwmYmhfcG9pbnRlci0+c3luYykpIHsKICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9f
KCJwdXNoZmwgOyBwb3BsICUwIDsgY2xpIjoiPWciIChmbGFncyk6IDoibWVtb3J5Iik7ICh2b2lk
KSgmdHF1ZXVlX2xvY2spOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgIGxpc3RfYWRkX3Rh
aWwoJmJoX3BvaW50ZXItPmxpc3QsIGJoX2xpc3QpOwogICAgICAgICAgICAgICAgZG8geyBkbyB7
IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJn
IiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICBy
ZXQgPSAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmV0Owp9CgoKCgoKZXh0ZXJuIHZvaWQg
X19ydW5fdGFza19xdWV1ZV9SMzg4OWIxMWModGFza19xdWV1ZSAqbGlzdCk7CgpzdGF0aWMgaW5s
aW5lIHZvaWQgcnVuX3Rhc2tfcXVldWUodGFza19xdWV1ZSAqbGlzdCkKewogICAgICAgIGlmICgo
IWxpc3RfZW1wdHkoJipsaXN0KSkpCiAgICAgICAgICAgICAgICBfX3J1bl90YXNrX3F1ZXVlX1Iz
ODg5YjExYyhsaXN0KTsKfQojIDkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcmVpc2Vy
ZnNfZnNfc2IuaCIgMgojIDI2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3JlaXNlcmZz
X2ZzX3NiLmgiCnN0cnVjdCByZWlzZXJmc19zdXBlcl9ibG9jawp7CiAgX191MzIgc19ibG9ja19j
b3VudDsKICBfX3UzMiBzX2ZyZWVfYmxvY2tzOwogIF9fdTMyIHNfcm9vdF9ibG9jazsKICBfX3Uz
MiBzX2pvdXJuYWxfYmxvY2s7CiAgX191MzIgc19qb3VybmFsX2RldjsKIyA0MyAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9yZWlzZXJmc19mc19zYi5oIgogIF9fdTMyIHNfb3JpZ19qb3Vy
bmFsX3NpemU7CiAgX191MzIgc19qb3VybmFsX3RyYW5zX21heCA7CiAgX191MzIgc19qb3VybmFs
X2Jsb2NrX2NvdW50IDsKICBfX3UzMiBzX2pvdXJuYWxfbWF4X2JhdGNoIDsKICBfX3UzMiBzX2pv
dXJuYWxfbWF4X2NvbW1pdF9hZ2UgOwogIF9fdTMyIHNfam91cm5hbF9tYXhfdHJhbnNfYWdlIDsK
ICBfX3UxNiBzX2Jsb2Nrc2l6ZTsKICBfX3UxNiBzX29pZF9tYXhzaXplOwogIF9fdTE2IHNfb2lk
X2N1cnNpemU7CiAgX191MTYgc19zdGF0ZTsKICBjaGFyIHNfbWFnaWNbMTJdOwogIF9fdTMyIHNf
aGFzaF9mdW5jdGlvbl9jb2RlOwogIF9fdTE2IHNfdHJlZV9oZWlnaHQ7CiAgX191MTYgc19ibWFw
X25yOwogIF9fdTE2IHNfdmVyc2lvbjsKCgoKCiAgX191MTYgc19yZXNlcnZlZDsKICBfX3UzMiBz
X2lub2RlX2dlbmVyYXRpb247CiAgY2hhciBzX3VudXNlZFsxMjRdIDsKfSBfX2F0dHJpYnV0ZV9f
ICgoX19wYWNrZWRfXykpOwojIDEyMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9yZWlz
ZXJmc19mc19zYi5oIgpzdHJ1Y3QgcmVpc2VyZnNfc3VwZXJfYmxvY2tfdjEKewogIF9fdTMyIHNf
YmxvY2tfY291bnQ7CiAgX191MzIgc19mcmVlX2Jsb2NrczsKICBfX3UzMiBzX3Jvb3RfYmxvY2s7
CiAgX191MzIgc19qb3VybmFsX2Jsb2NrOwogIF9fdTMyIHNfam91cm5hbF9kZXY7CiAgX191MzIg
c19vcmlnX2pvdXJuYWxfc2l6ZTsKICBfX3UzMiBzX2pvdXJuYWxfdHJhbnNfbWF4IDsKICBfX3Uz
MiBzX2pvdXJuYWxfYmxvY2tfY291bnQgOwogIF9fdTMyIHNfam91cm5hbF9tYXhfYmF0Y2ggOwog
IF9fdTMyIHNfam91cm5hbF9tYXhfY29tbWl0X2FnZSA7CiAgX191MzIgc19qb3VybmFsX21heF90
cmFuc19hZ2UgOwogIF9fdTE2IHNfYmxvY2tzaXplOwogIF9fdTE2IHNfb2lkX21heHNpemU7CiAg
X191MTYgc19vaWRfY3Vyc2l6ZTsKICBfX3UxNiBzX3N0YXRlOwogIGNoYXIgc19tYWdpY1sxNl07
CiAgX191MTYgc190cmVlX2hlaWdodDsKICBfX3UxNiBzX2JtYXBfbnI7CiAgX191MzIgc19yZXNl
cnZlZDsKfSBfX2F0dHJpYnV0ZV9fICgoX19wYWNrZWRfXykpOwojIDIwMCAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9yZWlzZXJmc19mc19zYi5oIgpzdHJ1Y3QgcmVpc2VyZnNfam91cm5h
bF9jbm9kZSB7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCA7CiAga2Rldl90IGRldiA7CiAgdW5z
aWduZWQgbG9uZyBibG9ja25yIDsKICBpbnQgc3RhdGUgOwogIHN0cnVjdCByZWlzZXJmc19qb3Vy
bmFsX2xpc3QgKmpsaXN0IDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqbmV4dCA7
CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKnByZXYgOwogIHN0cnVjdCByZWlzZXJm
c19qb3VybmFsX2Nub2RlICpocHJldiA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUg
KmhuZXh0IDsKfTsKCnN0cnVjdCByZWlzZXJmc19iaXRtYXBfbm9kZSB7CiAgaW50IGlkIDsKICBj
aGFyICpkYXRhIDsKICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3QgOwp9IDsKCnN0cnVjdCByZWlzZXJm
c19saXN0X2JpdG1hcCB7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfbGlzdCAqam91cm5hbF9s
aXN0IDsKICBzdHJ1Y3QgcmVpc2VyZnNfYml0bWFwX25vZGUgKipiaXRtYXBzIDsKfSA7CgoKCgpz
dHJ1Y3QgcmVpc2VyZnNfdHJhbnNhY3Rpb25faGFuZGxlIHsKCiAgY2hhciAqdF9jYWxsZXIgOwog
IGludCB0X2Jsb2Nrc19sb2dnZWQgOwogIGludCB0X2Jsb2Nrc19hbGxvY2F0ZWQgOwogIHVuc2ln
bmVkIGxvbmcgdF90cmFuc19pZCA7CiAgc3RydWN0IHN1cGVyX2Jsb2NrICp0X3N1cGVyIDsKCn0g
OwoKCgoKCgoKc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfbGlzdCB7CiAgdW5zaWduZWQgbG9uZyBq
X3N0YXJ0IDsKICB1bnNpZ25lZCBsb25nIGpfbGVuIDsKICBhdG9taWNfdCBqX25vbnplcm9sZW4g
OwogIGF0b21pY190IGpfY29tbWl0X2xlZnQgOwogIGF0b21pY190IGpfZmx1c2hpbmcgOwogIGF0
b21pY190IGpfY29tbWl0X2ZsdXNoaW5nIDsKICBhdG9taWNfdCBqX29sZGVyX2NvbW1pdHNfZG9u
ZSA7CiAgdW5zaWduZWQgbG9uZyBqX3RyYW5zX2lkIDsKICB0aW1lX3Qgal90aW1lc3RhbXAgOwog
IHN0cnVjdCByZWlzZXJmc19saXN0X2JpdG1hcCAqal9saXN0X2JpdG1hcCA7CiAgc3RydWN0IGJ1
ZmZlcl9oZWFkICpqX2NvbW1pdF9iaCA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUg
KmpfcmVhbGJsb2NrIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9mcmVlZGxp
c3QgOwogIHdhaXRfcXVldWVfaGVhZF90IGpfY29tbWl0X3dhaXQgOwogIHdhaXRfcXVldWVfaGVh
ZF90IGpfZmx1c2hfd2FpdCA7Cn0gOwoKc3RydWN0IHJlaXNlcmZzX3BhZ2VfbGlzdCA7CgpzdHJ1
Y3QgcmVpc2VyZnNfam91cm5hbCB7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIGpfYXBfYmxvY2tz
IDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9sYXN0IDsKICBzdHJ1Y3QgcmVp
c2VyZnNfam91cm5hbF9jbm9kZSAqal9maXJzdCA7CgogIGludCBqX3N0YXRlIDsKICB1bnNpZ25l
ZCBsb25nIGpfdHJhbnNfaWQgOwogIHVuc2lnbmVkIGxvbmcgal9tb3VudF9pZCA7CiAgdW5zaWdu
ZWQgbG9uZyBqX3N0YXJ0IDsKICB1bnNpZ25lZCBsb25nIGpfbGVuIDsKICB1bnNpZ25lZCBsb25n
IGpfbGVuX2FsbG9jIDsKICBhdG9taWNfdCBqX3djb3VudCA7CiAgdW5zaWduZWQgbG9uZyBqX2Jj
b3VudCA7CiAgdW5zaWduZWQgbG9uZyBqX2ZpcnN0X3VuZmx1c2hlZF9vZmZzZXQgOwogIHVuc2ln
bmVkIGxvbmcgal9sYXN0X2ZsdXNoX3RyYW5zX2lkIDsKICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmpf
aGVhZGVyX2JoIDsKCgoKCiAgc3RydWN0IHJlaXNlcmZzX3BhZ2VfbGlzdCAqal9mbHVzaF9wYWdl
cyA7CiAgdGltZV90IGpfdHJhbnNfc3RhcnRfdGltZSA7CiAgd2FpdF9xdWV1ZV9oZWFkX3Qgal93
YWl0IDsKICBhdG9taWNfdCBqX3dsb2NrIDsKICB3YWl0X3F1ZXVlX2hlYWRfdCBqX2pvaW5fd2Fp
dCA7CiAgYXRvbWljX3Qgal9qbG9jayA7CiAgaW50IGpfam91cm5hbF9saXN0X2luZGV4IDsKICBp
bnQgal9saXN0X2JpdG1hcF9pbmRleCA7CiAgaW50IGpfbXVzdF93YWl0IDsKICBpbnQgal9uZXh0
X2Z1bGxfZmx1c2ggOwogIGludCBqX25leHRfYXN5bmNfZmx1c2ggOwoKICBpbnQgal9jbm9kZV91
c2VkIDsKICBpbnQgal9jbm9kZV9mcmVlIDsKCiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25v
ZGUgKmpfY25vZGVfZnJlZV9saXN0IDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAq
al9jbm9kZV9mcmVlX29yaWcgOwoKICBpbnQgal9mcmVlX2JpdG1hcF9ub2RlcyA7CiAgaW50IGpf
dXNlZF9iaXRtYXBfbm9kZXMgOwogIHN0cnVjdCBsaXN0X2hlYWQgal9iaXRtYXBfbm9kZXMgOwog
IHN0cnVjdCBpbm9kZSBqX2R1bW15X2lub2RlIDsKICBzdHJ1Y3QgcmVpc2VyZnNfbGlzdF9iaXRt
YXAgal9saXN0X2JpdG1hcFs1XSA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfbGlzdCBqX2pv
dXJuYWxfbGlzdFs2NF0gOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlICpqX2hhc2hf
dGFibGVbODE5Ml0gOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlICpqX2xpc3RfaGFz
aF90YWJsZVs4MTkyXSA7CgogIHN0cnVjdCBsaXN0X2hlYWQgal9wcmVhbGxvY19saXN0Owp9OwoK
CgoKdHlwZWRlZiBfX3UzMiAoKmhhc2hmX3QpIChjb25zdCBzaWduZWQgY2hhciAqLCBpbnQpOwoK
c3RydWN0IHByb2NfZGlyX2VudHJ5OwoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgc3RhdF9j
bnRfdDsKdHlwZWRlZiBzdHJ1Y3QgcmVpc2VyZnNfcHJvY19pbmZvX2RhdGEKewogIHNwaW5sb2Nr
X3QgbG9jazsKICBpbnQgZXhpdGluZzsKICBpbnQgbWF4X2hhc2hfY29sbGlzaW9uczsKCiAgc3Rh
dF9jbnRfdCBicmVhZHM7CiAgc3RhdF9jbnRfdCBicmVhZF9taXNzOwogIHN0YXRfY250X3Qgc2Vh
cmNoX2J5X2tleTsKICBzdGF0X2NudF90IHNlYXJjaF9ieV9rZXlfZnNfY2hhbmdlZDsKICBzdGF0
X2NudF90IHNlYXJjaF9ieV9rZXlfcmVzdGFydGVkOwoKICBzdGF0X2NudF90IGxlYWtlZF9vaWQ7
CiAgc3RhdF9jbnRfdCBsZWF2ZXNfcmVtb3ZhYmxlOwoKCiAgc3RhdF9jbnRfdCBiYWxhbmNlX2F0
WyA1IF07CgogIHN0YXRfY250X3Qgc2JrX3JlYWRfYXRbIDUgXTsKICBzdGF0X2NudF90IHNia19m
c19jaGFuZ2VkWyA1IF07CiAgc3RhdF9jbnRfdCBzYmtfcmVzdGFydGVkWyA1IF07CiAgc3RhdF9j
bnRfdCBpdGVtc19hdFsgNSBdOwogIHN0YXRfY250X3QgZnJlZV9hdFsgNSBdOwogIHN0YXRfY250
X3QgY2FuX25vZGVfYmVfcmVtb3ZlZFsgNSBdOwogIGxvbmcgaW50IGxudW1bIDUgXTsKICBsb25n
IGludCBybnVtWyA1IF07CiAgbG9uZyBpbnQgbGJ5dGVzWyA1IF07CiAgbG9uZyBpbnQgcmJ5dGVz
WyA1IF07CiAgc3RhdF9jbnRfdCBnZXRfbmVpZ2hib3JzWyA1IF07CiAgc3RhdF9jbnRfdCBnZXRf
bmVpZ2hib3JzX3Jlc3RhcnRbIDUgXTsKICBzdGF0X2NudF90IG5lZWRfbF9uZWlnaGJvclsgNSBd
OwogIHN0YXRfY250X3QgbmVlZF9yX25laWdoYm9yWyA1IF07CgogIHN0YXRfY250X3QgZnJlZV9i
bG9jazsKICBzdHJ1Y3QgX19maW5kX2ZvcndhcmRfc3RhdHMgewogICAgICAgIHN0YXRfY250X3Qg
Y2FsbDsKICAgICAgICBzdGF0X2NudF90IHdhaXQ7CiAgICAgICAgc3RhdF9jbnRfdCBibWFwX1Jj
YjI3YjhlYjsKICAgICAgICBzdGF0X2NudF90IHJldHJ5OwogICAgICAgIHN0YXRfY250X3QgaW5f
am91cm5hbF9oaW50OwogICAgICAgIHN0YXRfY250X3QgaW5fam91cm5hbF9vdXQ7CiAgfSBmaW5k
X2ZvcndhcmQ7CiAgc3RydWN0IF9fam91cm5hbF9zdGF0cyB7CiAgICAgICAgc3RhdF9jbnRfdCBp
bl9qb3VybmFsOwogICAgICAgIHN0YXRfY250X3QgaW5fam91cm5hbF9iaXRtYXA7CiAgICAgICAg
c3RhdF9jbnRfdCBpbl9qb3VybmFsX3JldXNhYmxlOwogICAgICAgIHN0YXRfY250X3QgbG9ja19q
b3VybmFsOwogICAgICAgIHN0YXRfY250X3QgbG9ja19qb3VybmFsX3dhaXQ7CiAgICAgICAgc3Rh
dF9jbnRfdCBqb3VybmFsX2JlaW5nOwogICAgICAgIHN0YXRfY250X3Qgam91cm5hbF9yZWxvY2tf
d3JpdGVyczsKICAgICAgICBzdGF0X2NudF90IGpvdXJuYWxfcmVsb2NrX3djb3VudDsKICAgICAg
ICBzdGF0X2NudF90IG1hcmtfZGlydHk7CiAgICAgICAgc3RhdF9jbnRfdCBtYXJrX2RpcnR5X2Fs
cmVhZHk7CiAgICAgICAgc3RhdF9jbnRfdCBtYXJrX2RpcnR5X25vdGpvdXJuYWw7CiAgICAgICAg
c3RhdF9jbnRfdCByZXN0b3JlX3ByZXBhcmVkOwogICAgICAgIHN0YXRfY250X3QgcHJlcGFyZTsK
ICAgICAgICBzdGF0X2NudF90IHByZXBhcmVfcmV0cnk7CiAgfSBqb3VybmFsOwp9IHJlaXNlcmZz
X3Byb2NfaW5mb19kYXRhX3Q7CgoKCgoKCnN0cnVjdCByZWlzZXJmc19zYl9pbmZvCnsKICAgIHN0
cnVjdCBidWZmZXJfaGVhZCAqIHNfc2JoOwoKCiAgICBzdHJ1Y3QgcmVpc2VyZnNfc3VwZXJfYmxv
Y2sgKiBzX3JzOwogICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfYXBfYml0bWFwOwogICAgc3Ry
dWN0IHJlaXNlcmZzX2pvdXJuYWwgKnNfam91cm5hbCA7CiAgICB1bnNpZ25lZCBzaG9ydCBzX21v
dW50X3N0YXRlOwoKCiAgICB2b2lkICgqZW5kX2lvX2hhbmRsZXIpKHN0cnVjdCBidWZmZXJfaGVh
ZCAqLCBpbnQpOwogICAgaGFzaGZfdCBzX2hhc2hfZnVuY3Rpb247CgoKICAgIHVuc2lnbmVkIGxv
bmcgc19tb3VudF9vcHQ7CgoKCgogICAgd2FpdF9xdWV1ZV9oZWFkX3Qgc193YWl0OwoKICAgIGF0
b21pY190IHNfZ2VuZXJhdGlvbl9jb3VudGVyOwoKCgogICAgaW50IHNfa21hbGxvY3M7CiAgICBp
bnQgc19kaXNrX3JlYWRzOwogICAgaW50IHNfZGlza193cml0ZXM7CiAgICBpbnQgc19maXhfbm9k
ZXM7CiAgICBpbnQgc19kb19iYWxhbmNlOwogICAgaW50IHNfdW5uZWVkZWRfbGVmdF9uZWlnaGJv
cjsKICAgIGludCBzX2dvb2Rfc2VhcmNoX2J5X2tleV9yZWFkYTsKICAgIGludCBzX2JtYXBzOwog
ICAgaW50IHNfYm1hcHNfd2l0aG91dF9zZWFyY2g7CiAgICBpbnQgc19kaXJlY3QyaW5kaXJlY3Q7
CiAgICBpbnQgc19pbmRpcmVjdDJkaXJlY3Q7CiAgICByZWlzZXJmc19wcm9jX2luZm9fZGF0YV90
IHNfcHJvY19pbmZvX2RhdGE7CiAgICBzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKnByb2NkaXI7Cn07
CiMgNDgwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgiCnZv
aWQgcmVpc2VyZnNfZmlsZV9idWZmZXIgKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoLCBpbnQgbGlz
dCk7CmludCByZWlzZXJmc19pc19zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnMpIDsKaW50IGpv
dXJuYWxfbWFya19kaXJ0eShzdHJ1Y3QgcmVpc2VyZnNfdHJhbnNhY3Rpb25faGFuZGxlICosIHN0
cnVjdCBzdXBlcl9ibG9jayAqLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKSA7CmludCBmbHVzaF9v
bGRfY29tbWl0cyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnMsIGludCkgOwppbnQgc2hvd19yZWlzZXJm
c19sb2Nrcyh2b2lkKSA7CmludCByZWlzZXJmc19yZXNpemUoc3RydWN0IHN1cGVyX2Jsb2NrICos
IHVuc2lnbmVkIGxvbmcpIDsKIyA2ODcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvYmZzX2ZzX3NiLmgiIDEKIyAx
MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9iZnNfZnNfc2IuaCIKc3RydWN0IGJmc19z
Yl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIHNpX2Jsb2NrczsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHNpX2ZyZWViOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfZnJlZWk7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzaV9sZl9pb2ZmOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfbGZfc2Js
azsKICAgICAgICB1bnNpZ25lZCBsb25nIHNpX2xmX2VibGs7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzaV9sYXN0aTsKICAgICAgICBjaGFyICogc2lfaW1hcDsKICAgICAgICBzdHJ1Y3QgYnVmZmVy
X2hlYWQgKiBzaV9zYmg7CiAgICAgICAgc3RydWN0IGJmc19zdXBlcl9ibG9jayAqIHNpX2Jmc19z
YjsKfTsKIyA2ODggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdWRmX2ZzX3NiLmgiIDEKIyAyMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC91ZGZfZnNfc2IuaCIKI3ByYWdtYSBwYWNrKDEpCiMgMzAgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdWRmX2ZzX3NiLmgiCnN0cnVjdCB1ZGZfc3Bhcmlu
Z19kYXRhCnsKICAgICAgICBfX3UxNiBzX3BhY2tldF9sZW47CiAgICAgICAgc3RydWN0IGJ1ZmZl
cl9oZWFkICpzX3NwYXJfbWFwWzRdOwp9OwoKc3RydWN0IHVkZl92aXJ0dWFsX2RhdGEKewogICAg
ICAgIF9fdTMyIHNfbnVtX2VudHJpZXM7CiAgICAgICAgX191MTYgc19zdGFydF9vZmZzZXQ7Cn07
CgpzdHJ1Y3QgdWRmX2JpdG1hcAp7CiAgICAgICAgX191MzIgc19leHRMZW5ndGg7CiAgICAgICAg
X191MzIgc19leHRQb3NpdGlvbjsKICAgICAgICBfX3UxNiBzX25yX2dyb3VwczsKICAgICAgICBz
dHJ1Y3QgYnVmZmVyX2hlYWQgKipzX2Jsb2NrX2JpdG1hcDsKfTsKCnN0cnVjdCB1ZGZfcGFydF9t
YXAKewogICAgICAgIHVuaW9uCiAgICAgICAgewogICAgICAgICAgICAgICAgc3RydWN0IHVkZl9i
aXRtYXAgKnNfYml0bWFwOwogICAgICAgICAgICAgICAgc3RydWN0IGlub2RlICpzX3RhYmxlOwog
ICAgICAgIH0gc191c3BhY2U7CiAgICAgICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAg
ICBzdHJ1Y3QgdWRmX2JpdG1hcCAqc19iaXRtYXA7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5v
ZGUgKnNfdGFibGU7CiAgICAgICAgfSBzX2ZzcGFjZTsKICAgICAgICBfX3UzMiBzX3BhcnRpdGlv
bl9yb290OwogICAgICAgIF9fdTMyIHNfcGFydGl0aW9uX2xlbjsKICAgICAgICBfX3UxNiBzX3Bh
cnRpdGlvbl90eXBlOwogICAgICAgIF9fdTE2IHNfcGFydGl0aW9uX251bTsKICAgICAgICB1bmlv
bgogICAgICAgIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB1ZGZfc3BhcmluZ19kYXRhIHNfc3Bh
cmluZzsKICAgICAgICAgICAgICAgIHN0cnVjdCB1ZGZfdmlydHVhbF9kYXRhIHNfdmlydHVhbDsK
ICAgICAgICB9IHNfdHlwZV9zcGVjaWZpYzsKICAgICAgICBfX3UzMiAoKnNfcGFydGl0aW9uX2Z1
bmMpKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBfX3UzMiwgX191MTYsIF9fdTMyKTsKICAgICAgICBf
X3UxNiBzX3ZvbHVtZXNlcW51bTsKICAgICAgICBfX3UxNiBzX3BhcnRpdGlvbl9mbGFnczsKfTsK
CiNwcmFnbWEgcGFjaygpCgpzdHJ1Y3QgdWRmX3NiX2luZm8KewogICAgICAgIHN0cnVjdCB1ZGZf
cGFydF9tYXAgKnNfcGFydG1hcHM7CiAgICAgICAgX191OCBzX3ZvbGlkZW50WzMyXTsKCgogICAg
ICAgIF9fdTE2IHNfcGFydGl0aW9uczsKICAgICAgICBfX3UxNiBzX3BhcnRpdGlvbjsKCgogICAg
ICAgIF9fczMyIHNfc2Vzc2lvbjsKICAgICAgICBfX3UzMiBzX2FuY2hvcls0XTsKICAgICAgICBf
X3UzMiBzX2xhc3RibG9jazsKCiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpzX2x2aWRiaDsK
CgogICAgICAgIG1vZGVfdCBzX3VtYXNrOwogICAgICAgIGdpZF90IHNfZ2lkOwogICAgICAgIHVp
ZF90IHNfdWlkOwoKCiAgICAgICAgdGltZV90IHNfcmVjb3JkdGltZTsKCgogICAgICAgIF9fdTE2
IHNfc2VyaWFsbnVtOwoKCiAgICAgICAgX191MTYgc191ZGZyZXY7CgoKICAgICAgICBfX3UzMiBz
X2ZsYWdzOwoKCiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqc19ubHNfbWFwOwoKCiAgICAgICAg
c3RydWN0IGlub2RlICpzX3ZhdDsKfTsKIyA2ODkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmNwX2ZzX3NiLmgi
IDEKIyAxMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uY3BfZnNfc2IuaCIKIyAxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAxMiAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9uY3BfZnNfc2IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvbmNwX21vdW50LmgiIDEKIyAxMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9uY3BfbW91bnQuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgi
IDEKIyAxMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uY3BfbW91bnQuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmNwLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9uY3AuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3R5cGVzLmgiIDEKIyAxNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uY3AuaCIgMgoj
IDIyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25jcC5oIgpzdHJ1Y3QgbmNwX3JlcXVl
c3RfaGVhZGVyIHsKICAgICAgICBfX3UxNiB0eXBlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwog
ICAgICAgIF9fdTggc2VxdWVuY2UgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191
OCBjb25uX2xvdyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IHRhc2sgX19h
dHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb25uX2hpZ2ggX19hdHRyaWJ1dGVf
XygocGFja2VkKSk7CiAgICAgICAgX191OCBmdW5jdGlvbiBfX2F0dHJpYnV0ZV9fKChwYWNrZWQp
KTsKICAgICAgICBfX3U4IGRhdGFbMF0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07CgoKCgpz
dHJ1Y3QgbmNwX3JlcGx5X2hlYWRlciB7CiAgICAgICAgX191MTYgdHlwZSBfX2F0dHJpYnV0ZV9f
KChwYWNrZWQpKTsKICAgICAgICBfX3U4IHNlcXVlbmNlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkp
OwogICAgICAgIF9fdTggY29ubl9sb3cgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAg
X191OCB0YXNrIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggY29ubl9oaWdo
IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggY29tcGxldGlvbl9jb2RlIF9f
YXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggY29ubmVjdGlvbl9zdGF0ZSBfX2F0
dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGRhdGFbMF0gX19hdHRyaWJ1dGVfXygo
cGFja2VkKSk7Cn07CgoKCnN0cnVjdCBuY3Bfdm9sdW1lX2luZm8gewogICAgICAgIF9fdTMyIHRv
dGFsX2Jsb2NrczsKICAgICAgICBfX3UzMiBmcmVlX2Jsb2NrczsKICAgICAgICBfX3UzMiBwdXJn
ZWFibGVfYmxvY2tzOwogICAgICAgIF9fdTMyIG5vdF95ZXRfcHVyZ2VhYmxlX2Jsb2NrczsKICAg
ICAgICBfX3UzMiB0b3RhbF9kaXJfZW50cmllczsKICAgICAgICBfX3UzMiBhdmFpbGFibGVfZGly
X2VudHJpZXM7CiAgICAgICAgX191OCBzZWN0b3JzX3Blcl9ibG9jazsKICAgICAgICBjaGFyIHZv
bHVtZV9uYW1lWygxNikgKyAxXTsKfTsKIyAxMTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvbmNwLmgiCnN0cnVjdCBud19pbmZvX3N0cnVjdCB7CiAgICAgICAgX191MzIgc3BhY2VBbGxv
YyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBhdHRyaWJ1dGVzIF9fYXR0
cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGZsYWdzIF9fYXR0cmlidXRlX18oKHBh
Y2tlZCkpOwogICAgICAgIF9fdTMyIGRhdGFTdHJlYW1TaXplIF9fYXR0cmlidXRlX18oKHBhY2tl
ZCkpOwogICAgICAgIF9fdTMyIHRvdGFsU3RyZWFtU2l6ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQp
KTsKICAgICAgICBfX3UxNiBudW1iZXJPZlN0cmVhbXMgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7
CiAgICAgICAgX191MTYgY3JlYXRpb25UaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAg
ICAgIF9fdTE2IGNyZWF0aW9uRGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBf
X3UzMiBjcmVhdG9ySUQgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgbW9k
aWZ5VGltZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBtb2RpZnlEYXRl
IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIG1vZGlmaWVySUQgX19hdHRy
aWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgbGFzdEFjY2Vzc0RhdGUgX19hdHRyaWJ1
dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgYXJjaGl2ZVRpbWUgX19hdHRyaWJ1dGVfXygo
cGFja2VkKSk7CiAgICAgICAgX191MTYgYXJjaGl2ZURhdGUgX19hdHRyaWJ1dGVfXygocGFja2Vk
KSk7CiAgICAgICAgX191MzIgYXJjaGl2ZXJJRCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAg
ICAgICBfX3UxNiBpbmhlcml0ZWRSaWdodHNNYXNrIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwog
ICAgICAgIF9fdTMyIGRpckVudE51bSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBf
X3UzMiBEb3NEaXJOdW0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgdm9s
TnVtYmVyIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIEVBRGF0YVNpemUg
X19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgRUFLZXlDb3VudCBfX2F0dHJp
YnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBFQUtleVNpemUgX19hdHRyaWJ1dGVfXygo
cGFja2VkKSk7CiAgICAgICAgX191MzIgTlNDcmVhdG9yIF9fYXR0cmlidXRlX18oKHBhY2tlZCkp
OwogICAgICAgIF9fdTggbmFtZUxlbiBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBf
X3U4IGVudHJ5TmFtZVsyNTZdIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwp9OwojIDE1NiAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uY3AuaCIKc3RydWN0IG53X21vZGlmeV9kb3NfaW5m
byB7CiAgICAgICAgX191MzIgYXR0cmlidXRlcyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAg
ICAgICBfX3UxNiBjcmVhdGlvbkRhdGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAg
X191MTYgY3JlYXRpb25UaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMy
IGNyZWF0b3JJRCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBtb2RpZnlE
YXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IG1vZGlmeVRpbWUgX19h
dHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgbW9kaWZpZXJJRCBfX2F0dHJpYnV0
ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBhcmNoaXZlRGF0ZSBfX2F0dHJpYnV0ZV9fKChw
YWNrZWQpKTsKICAgICAgICBfX3UxNiBhcmNoaXZlVGltZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQp
KTsKICAgICAgICBfX3UzMiBhcmNoaXZlcklEIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAg
ICAgIF9fdTE2IGxhc3RBY2Nlc3NEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAg
IF9fdTE2IGluaGVyaXRhbmNlR3JhbnRNYXNrIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAg
ICAgIF9fdTE2IGluaGVyaXRhbmNlUmV2b2tlTWFzayBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK
ICAgICAgICBfX3UzMiBtYXhpbXVtU3BhY2UgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07Cgpz
dHJ1Y3Qgbndfc2VhcmNoX3NlcXVlbmNlIHsKICAgICAgICBfX3U4IHZvbE51bWJlciBfX2F0dHJp
YnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBkaXJCYXNlIF9fYXR0cmlidXRlX18oKHBh
Y2tlZCkpOwogICAgICAgIF9fdTMyIHNlcXVlbmNlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwp9
OwojIDEzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25jcF9tb3VudC5oIiAyCiMgMjUg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmNwX21vdW50LmgiCnN0cnVjdCBuY3BfbW91
bnRfZGF0YSB7CiAgICAgICAgaW50IHZlcnNpb247CiAgICAgICAgdW5zaWduZWQgaW50IG5jcF9m
ZDsKICAgICAgICBfX2tlcm5lbF91aWRfdCBtb3VudGVkX3VpZDsKICAgICAgICBfX2tlcm5lbF9w
aWRfdCB3ZG9nX3BpZDsKCiAgICAgICAgdW5zaWduZWQgY2hhciBtb3VudGVkX3ZvbFsoMTYpICsg
MV07CiAgICAgICAgdW5zaWduZWQgaW50IHRpbWVfb3V0OwoKICAgICAgICB1bnNpZ25lZCBpbnQg
cmV0cnlfY291bnQ7CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwoKICAgICAgICBfX2tlcm5l
bF91aWRfdCB1aWQ7CiAgICAgICAgX19rZXJuZWxfZ2lkX3QgZ2lkOwogICAgICAgIF9fa2VybmVs
X21vZGVfdCBmaWxlX21vZGU7CiAgICAgICAgX19rZXJuZWxfbW9kZV90IGRpcl9tb2RlOwp9OwoK
CgpzdHJ1Y3QgbmNwX21vdW50X2RhdGFfdjQgewogICAgICAgIGludCB2ZXJzaW9uOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgZmxhZ3M7CgoKICAgICAgICB1bnNpZ25lZCBsb25nIG1vdW50ZWRfdWlk
OwoKICAgICAgICBsb25nIHdkb2dfcGlkOwoKICAgICAgICB1bnNpZ25lZCBpbnQgbmNwX2ZkOwog
ICAgICAgIHVuc2lnbmVkIGludCB0aW1lX291dDsKCiAgICAgICAgdW5zaWduZWQgaW50IHJldHJ5
X2NvdW50OwoKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgdWlkOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgZ2lkOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGZpbGVfbW9kZTsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGRpcl9tb2RlOwp9OwoKCgpzdHJ1Y3QgbmNwX21vdW50X2RhdGFfa2VybmVsIHsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIHVuc2lnbmVkIGludCBpbnRfZmxhZ3M7
CgogICAgICAgIF9fa2VybmVsX3VpZDMyX3QgbW91bnRlZF91aWQ7CiAgICAgICAgX19rZXJuZWxf
cGlkX3Qgd2RvZ19waWQ7CiAgICAgICAgdW5zaWduZWQgaW50IG5jcF9mZDsKICAgICAgICB1bnNp
Z25lZCBpbnQgdGltZV9vdXQ7CgogICAgICAgIHVuc2lnbmVkIGludCByZXRyeV9jb3VudDsKICAg
ICAgICB1bnNpZ25lZCBjaGFyIG1vdW50ZWRfdm9sWygxNikgKyAxXTsKICAgICAgICBfX2tlcm5l
bF91aWQzMl90IHVpZDsKICAgICAgICBfX2tlcm5lbF9naWQzMl90IGdpZDsKICAgICAgICBfX2tl
cm5lbF9tb2RlX3QgZmlsZV9tb2RlOwogICAgICAgIF9fa2VybmVsX21vZGVfdCBkaXJfbW9kZTsK
fTsKIyAxMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uY3BfZnNfc2IuaCIgMgoKCgoK
CnN0cnVjdCBuY3Bfc2VydmVyIHsKCiAgICAgICAgc3RydWN0IG5jcF9tb3VudF9kYXRhX2tlcm5l
bCBtOwoKCgogICAgICAgIF9fdTggbmFtZV9zcGFjZVsoNjQpICsgMl07CgogICAgICAgIHN0cnVj
dCBmaWxlICpuY3BfZmlscDsKCiAgICAgICAgdTggc2VxdWVuY2U7CiAgICAgICAgdTggdGFzazsK
ICAgICAgICB1MTYgY29ubmVjdGlvbjsKCiAgICAgICAgdTggY29tcGxldGlvbjsKICAgICAgICB1
OCBjb25uX3N0YXR1czsKCgoKICAgICAgICBpbnQgYnVmZmVyX3NpemU7CgogICAgICAgIGludCBy
ZXBseV9zaXplOwoKICAgICAgICBpbnQgcGFja2V0X3NpemU7CiAgICAgICAgdW5zaWduZWQgY2hh
ciAqcGFja2V0OwoKCiAgICAgICAgaW50IGxvY2s7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBz
ZW07CgogICAgICAgIGludCBjdXJyZW50X3NpemU7CiAgICAgICAgaW50IGhhc19zdWJmdW5jdGlv
bjsKICAgICAgICBpbnQgbmNwX3JlcGx5X3NpemU7CgogICAgICAgIGludCByb290X3NldHVwZWQ7
CgoKICAgICAgICBpbnQgc2lnbl93YW50ZWQ7CiAgICAgICAgaW50IHNpZ25fYWN0aXZlOwogICAg
ICAgIGNoYXIgc2lnbl9yb290WzhdOwogICAgICAgIGNoYXIgc2lnbl9sYXN0WzE2XTsKCgogICAg
ICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICBpbnQgYXV0aF90eXBlOwogICAgICAgICAgICAg
ICAgc2l6ZV90IG9iamVjdF9uYW1lX2xlbjsKICAgICAgICAgICAgICAgIHZvaWQqIG9iamVjdF9u
YW1lOwogICAgICAgICAgICAgICAgaW50IG9iamVjdF90eXBlOwogICAgICAgIH0gYXV0aDsKCiAg
ICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHNpemVfdCBsZW47CiAgICAgICAgICAgICAg
ICB2b2lkKiBkYXRhOwogICAgICAgIH0gcHJpdjsKCgogICAgICAgIHN0cnVjdCBubHNfdGFibGUg
Km5sc192b2w7CiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqbmxzX2lvOwoKCiAgICAgICAgaW50
IGRlbnRyeV90dGw7CgoKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7Cn07CiMgOTIgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmNwX2ZzX3NiLmgiCnN0YXRpYyBpbmxpbmUgaW50IG5j
cF9jb25uX3ZhbGlkKHN0cnVjdCBuY3Bfc2VydmVyICpzZXJ2ZXIpCnsKICAgICAgICByZXR1cm4g
KChzZXJ2ZXItPmNvbm5fc3RhdHVzICYgMHgxMSkgPT0gMCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9p
ZCBuY3BfaW52YWxpZGF0ZV9jb25uKHN0cnVjdCBuY3Bfc2VydmVyICpzZXJ2ZXIpCnsKICAgICAg
ICBzZXJ2ZXItPmNvbm5fc3RhdHVzIHw9IDB4MDE7Cn0KIyA2OTAgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdXNi
ZGV2X2ZzX3NiLmgiIDEKc3RydWN0IHVzYmRldl9zYl9pbmZvIHsKICAgICAgICBzdHJ1Y3QgbGlz
dF9oZWFkIHNsaXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaWxpc3Q7CiAgICAgICAgdWlk
X3QgZGV2dWlkOwogICAgICAgIGdpZF90IGRldmdpZDsKICAgICAgICB1bW9kZV90IGRldm1vZGU7
CiAgICAgICAgdWlkX3QgYnVzdWlkOwogICAgICAgIGdpZF90IGJ1c2dpZDsKICAgICAgICB1bW9k
ZV90IGJ1c21vZGU7CiAgICAgICAgdWlkX3QgbGlzdHVpZDsKICAgICAgICBnaWRfdCBsaXN0Z2lk
OwogICAgICAgIHVtb2RlX3QgbGlzdG1vZGU7Cn07CiMgNjkxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NyYW1m
c19mc19zYi5oIiAxCiMgNjkyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX3NiLmgiIDEKCgoKCgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDcgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvamZmczJfZnNfc2IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIgMQojIDggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvamZmczJfZnNfc2IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
Y29tcGxldGlvbi5oIiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29tcGxl
dGlvbi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvd2FpdC5oIiAxCiMgMTIg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29tcGxldGlvbi5oIiAyCgpzdHJ1Y3QgY29t
cGxldGlvbiB7CiAgICAgICAgdW5zaWduZWQgaW50IGRvbmU7CiAgICAgICAgd2FpdF9xdWV1ZV9o
ZWFkX3Qgd2FpdDsKfTsKCgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X2NvbXBsZXRpb24o
c3RydWN0IGNvbXBsZXRpb24gKngpCnsKICAgICAgICB4LT5kb25lID0gMDsKICAgICAgICBpbml0
X3dhaXRxdWV1ZV9oZWFkKCZ4LT53YWl0KTsKfQoKZXh0ZXJuIHZvaWQgd2FpdF9mb3JfY29tcGxl
dGlvbl9SZGMwMTY0ODgoc3RydWN0IGNvbXBsZXRpb24gKikgX19hdHRyaWJ1dGVfXygocmVncGFy
bSgzKSkpOwpleHRlcm4gdm9pZCBjb21wbGV0ZV9SOTQyNjEzYWQoc3RydWN0IGNvbXBsZXRpb24g
KikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwojIDkgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvamZmczJfZnNfc2IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNt
L3NlbWFwaG9yZS5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvamZmczJf
ZnNfc2IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbGlzdC5oIiAxCiMg
MTEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvamZmczJfZnNfc2IuaCIgMgojIDIwICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX3NiLmgiCnN0cnVjdCBqZmZzMl9z
Yl9pbmZvIHsKICAgICAgICBzdHJ1Y3QgbXRkX2luZm8gKm10ZDsKCiAgICAgICAgX191MzIgaGln
aGVzdF9pbm87CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwogICAgICAgIHNwaW5sb2NrX3Qg
bm9kZWxpc3RfbG9jazsKCgogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqZ2NfdGFzazsKICAg
ICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGdjX3RocmVhZF9zdGFydDsKICAgICAgICBzdHJ1Y3QgY29t
cGxldGlvbiBnY190aHJlYWRfZXhpdDsKCgoKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGFsbG9j
X3NlbTsKCgoKCiAgICAgICAgX191MzIgZmxhc2hfc2l6ZTsKICAgICAgICBfX3UzMiB1c2VkX3Np
emU7CiAgICAgICAgX191MzIgZGlydHlfc2l6ZTsKICAgICAgICBfX3UzMiBmcmVlX3NpemU7CiAg
ICAgICAgX191MzIgZXJhc2luZ19zaXplOwogICAgICAgIF9fdTMyIGJhZF9zaXplOwogICAgICAg
IF9fdTMyIHNlY3Rvcl9zaXplOwoKCgogICAgICAgIF9fdTMyIG5yX2ZyZWVfYmxvY2tzOwogICAg
ICAgIF9fdTMyIG5yX2VyYXNpbmdfYmxvY2tzOwoKICAgICAgICBfX3UzMiBucl9ibG9ja3M7CiAg
ICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKmJsb2NrczsKCiAgICAgICAgc3RydWN0IGpm
ZnMyX2VyYXNlYmxvY2sgKm5leHRibG9jazsKCiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxv
Y2sgKmdjYmxvY2s7CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgY2xlYW5fbGlzdDsKICAgICAg
ICBzdHJ1Y3QgbGlzdF9oZWFkIGRpcnR5X2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBl
cmFzaW5nX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBlcmFzZV9wZW5kaW5nX2xpc3Q7
CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBlcmFzZV9jb21wbGV0ZV9saXN0OwogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgZnJlZV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYmFkX2xp
c3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBiYWRfdXNlZF9saXN0OwoKICAgICAgICBzcGlu
bG9ja190IGVyYXNlX2NvbXBsZXRpb25fbG9jazsKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qg
ZXJhc2Vfd2FpdDsKICAgICAgICBzdHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUgKmlub2NhY2hlX2xp
c3RbMV07CiAgICAgICAgc3BpbmxvY2tfdCBpbm9jYWNoZV9sb2NrOwp9OwojIDY5MyAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCgpleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBz
dXBlcl9ibG9ja3M7CmV4dGVybiBzcGlubG9ja190IHNiX2xvY2s7CgoKCnN0cnVjdCBzdXBlcl9i
bG9jayB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBzX2xpc3Q7CiAgICAgICAga2Rldl90IHNf
ZGV2OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19ibG9ja3NpemU7CiAgICAgICAgdW5zaWduZWQg
Y2hhciBzX2Jsb2Nrc2l6ZV9iaXRzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19kaXJ0OwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzX21heGJ5dGVzOwogICAgICAgIHN0cnVjdCBmaWxlX3N5
c3RlbV90eXBlICpzX3R5cGU7CiAgICAgICAgc3RydWN0IHN1cGVyX29wZXJhdGlvbnMgKnNfb3A7
CiAgICAgICAgc3RydWN0IGRxdW90X29wZXJhdGlvbnMgKmRxX29wOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgc19mbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfbWFnaWM7CiAgICAgICAgc3Ry
dWN0IGRlbnRyeSAqc19yb290OwogICAgICAgIHN0cnVjdCByd19zZW1hcGhvcmUgc191bW91bnQ7
CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBzX2xvY2s7CiAgICAgICAgaW50IHNfY291bnQ7CiAg
ICAgICAgYXRvbWljX3Qgc19hY3RpdmU7CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgc19kaXJ0
eTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNfbG9ja2VkX2lub2RlczsKICAgICAgICBzdHJ1
Y3QgbGlzdF9oZWFkIHNfZmlsZXM7CgogICAgICAgIHN0cnVjdCBibG9ja19kZXZpY2UgKnNfYmRl
djsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNfaW5zdGFuY2VzOwogICAgICAgIHN0cnVjdCBx
dW90YV9tb3VudF9vcHRpb25zIHNfZHF1b3Q7CgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAg
ICAgIHN0cnVjdCBtaW5peF9zYl9pbmZvIG1pbml4X3NiOwogICAgICAgICAgICAgICAgc3RydWN0
IGV4dDJfc2JfaW5mbyBleHQyX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGV4dDNfc2JfaW5m
byBleHQzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGhwZnNfc2JfaW5mbyBocGZzX3NiOwog
ICAgICAgICAgICAgICAgc3RydWN0IG50ZnNfc2JfaW5mbyBudGZzX3NiOwogICAgICAgICAgICAg
ICAgc3RydWN0IG1zZG9zX3NiX2luZm8gbXNkb3Nfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
aXNvZnNfc2JfaW5mbyBpc29mc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBuZnNfc2JfaW5m
byBuZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3lzdl9zYl9pbmZvIHN5c3Zfc2I7CiAg
ICAgICAgICAgICAgICBzdHJ1Y3QgYWZmc19zYl9pbmZvIGFmZnNfc2I7CiAgICAgICAgICAgICAg
ICBzdHJ1Y3QgdWZzX3NiX2luZm8gdWZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGVmc19z
Yl9pbmZvIGVmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBzaG1lbV9zYl9pbmZvIHNobWVt
X3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHJvbWZzX3NiX2luZm8gcm9tZnNfc2I7CiAgICAg
ICAgICAgICAgICBzdHJ1Y3Qgc21iX3NiX2luZm8gc21iZnNfc2I7CiAgICAgICAgICAgICAgICBz
dHJ1Y3QgaGZzX3NiX2luZm8gaGZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGFkZnNfc2Jf
aW5mbyBhZGZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHFueDRfc2JfaW5mbyBxbng0X3Ni
OwogICAgICAgICAgICAgICAgc3RydWN0IHJlaXNlcmZzX3NiX2luZm8gcmVpc2VyZnNfc2I7CiAg
ICAgICAgICAgICAgICBzdHJ1Y3QgYmZzX3NiX2luZm8gYmZzX3NiOwogICAgICAgICAgICAgICAg
c3RydWN0IHVkZl9zYl9pbmZvIHVkZl9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBuY3Bfc2Vy
dmVyIG5jcGZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHVzYmRldl9zYl9pbmZvIHVzYmRl
dmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGpmZnMyX3NiX2luZm8gamZmczJfc2I7CiAg
ICAgICAgICAgICAgICBzdHJ1Y3QgY3JhbWZzX3NiX2luZm8gY3JhbWZzX3NiOwogICAgICAgICAg
ICAgICAgdm9pZCAqZ2VuZXJpY19zYnA7CiAgICAgICAgfSB1OwoKCgoKICAgICAgICBzdHJ1Y3Qg
c2VtYXBob3JlIHNfdmZzX3JlbmFtZV9zZW07CiMgNzY2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L2ZzLmgiCiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBzX25mc2RfZnJlZV9wYXRoX3Nl
bTsKfTsKCgoKCmV4dGVybiBpbnQgdmZzX2NyZWF0ZV9SMDZkMDFiOTgoc3RydWN0IGlub2RlICos
IHN0cnVjdCBkZW50cnkgKiwgaW50KTsKZXh0ZXJuIGludCB2ZnNfbWtkaXJfUjA4NTgzYThhKHN0
cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCk7CmV4dGVybiBpbnQgdmZzX21rbm9k
X1IxNWNmZWQ0OChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQsIGRldl90KTsK
ZXh0ZXJuIGludCB2ZnNfc3ltbGlua19SODUwYzY5YzUoc3RydWN0IGlub2RlICosIHN0cnVjdCBk
ZW50cnkgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCB2ZnNfbGlua19SOWM1N2E2MmUoc3Ry
dWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGlu
dCB2ZnNfcm1kaXJfUjgxOGM3YzFmKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwpl
eHRlcm4gaW50IHZmc191bmxpbmtfUjE4YTg5M2RlKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVu
dHJ5ICopOwpleHRlcm4gaW50IHZmc19yZW5hbWVfUjBkYjA4M2Y2KHN0cnVjdCBpbm9kZSAqLCBz
dHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwojIDgwMCAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIgp0eXBlZGVmIGludCAoKmZpbGxkaXJf
dCkodm9pZCAqLCBjb25zdCBjaGFyICosIGludCwgbG9mZl90LCBpbm9fdCwgdW5zaWduZWQpOwoK
c3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zIHsKICAgICAgICBpbnQgKCpvcGVuKSAoc3Ry
dWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwogICAgICAgIGludCAoKnJlbGVhc2UpIChzdHJ1
Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKik7CiAgICAgICAgaW50ICgqaW9jdGwpIChzdHJ1Y3Qg
aW5vZGUgKiwgc3RydWN0IGZpbGUgKiwgdW5zaWduZWQsIHVuc2lnbmVkIGxvbmcpOwogICAgICAg
IGludCAoKmNoZWNrX21lZGlhX2NoYW5nZSkgKGtkZXZfdCk7CiAgICAgICAgaW50ICgqcmV2YWxp
ZGF0ZSkgKGtkZXZfdCk7CiAgICAgICAgc3RydWN0IG1vZHVsZSAqb3duZXI7Cn07CgoKCgoKCnN0
cnVjdCBmaWxlX29wZXJhdGlvbnMgewogICAgICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyOwogICAg
ICAgIGxvZmZfdCAoKmxsc2VlaykgKHN0cnVjdCBmaWxlICosIGxvZmZfdCwgaW50KTsKICAgICAg
ICBzc2l6ZV90ICgqcmVhZCkgKHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3Qg
Kik7CiAgICAgICAgc3NpemVfdCAoKndyaXRlKSAoc3RydWN0IGZpbGUgKiwgY29uc3QgY2hhciAq
LCBzaXplX3QsIGxvZmZfdCAqKTsKICAgICAgICBpbnQgKCpyZWFkZGlyKSAoc3RydWN0IGZpbGUg
Kiwgdm9pZCAqLCBmaWxsZGlyX3QpOwogICAgICAgIHVuc2lnbmVkIGludCAoKnBvbGwpIChzdHJ1
Y3QgZmlsZSAqLCBzdHJ1Y3QgcG9sbF90YWJsZV9zdHJ1Y3QgKik7CiAgICAgICAgaW50ICgqaW9j
dGwpIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgaW50LCB1bnNpZ25l
ZCBsb25nKTsKICAgICAgICBpbnQgKCptbWFwKSAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHZtX2Fy
ZWFfc3RydWN0ICopOwogICAgICAgIGludCAoKm9wZW4pIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0
IGZpbGUgKik7CiAgICAgICAgaW50ICgqZmx1c2gpIChzdHJ1Y3QgZmlsZSAqKTsKICAgICAgICBp
bnQgKCpyZWxlYXNlKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwogICAgICAgIGlu
dCAoKmZzeW5jKSAoc3RydWN0IGZpbGUgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQgZGF0YXN5bmMp
OwogICAgICAgIGludCAoKmZhc3luYykgKGludCwgc3RydWN0IGZpbGUgKiwgaW50KTsKICAgICAg
ICBpbnQgKCpsb2NrKSAoc3RydWN0IGZpbGUgKiwgaW50LCBzdHJ1Y3QgZmlsZV9sb2NrICopOwog
ICAgICAgIHNzaXplX3QgKCpyZWFkdikgKHN0cnVjdCBmaWxlICosIGNvbnN0IHN0cnVjdCBpb3Zl
YyAqLCB1bnNpZ25lZCBsb25nLCBsb2ZmX3QgKik7CiAgICAgICAgc3NpemVfdCAoKndyaXRldikg
KHN0cnVjdCBmaWxlICosIGNvbnN0IHN0cnVjdCBpb3ZlYyAqLCB1bnNpZ25lZCBsb25nLCBsb2Zm
X3QgKik7CiAgICAgICAgc3NpemVfdCAoKnNlbmRwYWdlKSAoc3RydWN0IGZpbGUgKiwgc3RydWN0
IHBhZ2UgKiwgaW50LCBzaXplX3QsIGxvZmZfdCAqLCBpbnQpOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgKCpnZXRfdW5tYXBwZWRfYXJlYV9SNWQyOWFkNmQpKHN0cnVjdCBmaWxlICosIHVuc2lnbmVk
IGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwp9OwoK
c3RydWN0IGlub2RlX29wZXJhdGlvbnMgewogICAgICAgIGludCAoKmNyZWF0ZSkgKHN0cnVjdCBp
bm9kZSAqLHN0cnVjdCBkZW50cnkgKixpbnQpOwogICAgICAgIHN0cnVjdCBkZW50cnkgKiAoKmxv
b2t1cCkgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CiAgICAgICAgaW50ICgqbGlu
aykgKHN0cnVjdCBkZW50cnkgKixzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOwogICAg
ICAgIGludCAoKnVubGluaykgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CiAgICAg
ICAgaW50ICgqc3ltbGluaykgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKixjb25zdCBj
aGFyICopOwogICAgICAgIGludCAoKm1rZGlyKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRy
eSAqLGludCk7CiAgICAgICAgaW50ICgqcm1kaXIpIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVu
dHJ5ICopOwogICAgICAgIGludCAoKm1rbm9kKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRy
eSAqLGludCxpbnQpOwogICAgICAgIGludCAoKnJlbmFtZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1
Y3QgZGVudHJ5ICosCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqLCBzdHJ1
Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAoKnJlYWRsaW5rKSAoc3RydWN0IGRlbnRyeSAqLCBj
aGFyICosaW50KTsKICAgICAgICBpbnQgKCpmb2xsb3dfbGluaykgKHN0cnVjdCBkZW50cnkgKiwg
c3RydWN0IG5hbWVpZGF0YSAqKTsKICAgICAgICB2b2lkICgqdHJ1bmNhdGUpIChzdHJ1Y3QgaW5v
ZGUgKik7CiAgICAgICAgaW50ICgqcGVybWlzc2lvbl9SYTI4ZWRiZDkpIChzdHJ1Y3QgaW5vZGUg
KiwgaW50KTsKICAgICAgICBpbnQgKCpyZXZhbGlkYXRlKSAoc3RydWN0IGRlbnRyeSAqKTsKICAg
ICAgICBpbnQgKCpzZXRhdHRyKSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaWF0dHIgKik7CiAg
ICAgICAgaW50ICgqZ2V0YXR0cikgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlhdHRyICopOwp9
OwoKCgoKCnN0cnVjdCBzdXBlcl9vcGVyYXRpb25zIHsKICAgICAgICB2b2lkICgqcmVhZF9pbm9k
ZSkgKHN0cnVjdCBpbm9kZSAqKTsKCgoKCgoKCiAgICAgICAgdm9pZCAoKnJlYWRfaW5vZGUyKSAo
c3RydWN0IGlub2RlICosIHZvaWQgKikgOwogICAgICAgIHZvaWQgKCpkaXJ0eV9pbm9kZSkgKHN0
cnVjdCBpbm9kZSAqKTsKICAgICAgICB2b2lkICgqd3JpdGVfaW5vZGUpIChzdHJ1Y3QgaW5vZGUg
KiwgaW50KTsKICAgICAgICB2b2lkICgqcHV0X2lub2RlKSAoc3RydWN0IGlub2RlICopOwogICAg
ICAgIHZvaWQgKCpkZWxldGVfaW5vZGUpIChzdHJ1Y3QgaW5vZGUgKik7CiAgICAgICAgdm9pZCAo
KnB1dF9zdXBlcikgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKICAgICAgICB2b2lkICgqd3JpdGVf
c3VwZXIpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CiAgICAgICAgdm9pZCAoKndyaXRlX3N1cGVy
X2xvY2tmcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKICAgICAgICB2b2lkICgqdW5sb2NrZnMp
IChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CiAgICAgICAgaW50ICgqc3RhdGZzKSAoc3RydWN0IHN1
cGVyX2Jsb2NrICosIHN0cnVjdCBzdGF0ZnMgKik7CiAgICAgICAgaW50ICgqcmVtb3VudF9mcykg
KHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQgKiwgY2hhciAqKTsKICAgICAgICB2b2lkICgqY2xl
YXJfaW5vZGVfUmIxY2Y1NGMzKSAoc3RydWN0IGlub2RlICopOwogICAgICAgIHZvaWQgKCp1bW91
bnRfYmVnaW4pIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CiMgOTA2ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L2ZzLmgiCiAgICAgICAgc3RydWN0IGRlbnRyeSAqICgqZmhfdG9fZGVudHJ5
KShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBfX3UzMiAqZmgsIGludCBsZW4sIGludCBmaHR5cGUs
IGludCBwYXJlbnQpOwogICAgICAgIGludCAoKmRlbnRyeV90b19maCkoc3RydWN0IGRlbnRyeSAq
LCBfX3UzMiAqZmgsIGludCAqbGVucCwgaW50IG5lZWRfcGFyZW50KTsKfTsKIyA5MjAgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKZXh0ZXJuIHZvaWQgX19tYXJrX2lub2RlX2Rp
cnR5X1JmZDI2YzI1ZihzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKc3RhdGljIGlubGluZSB2b2lkIG1h
cmtfaW5vZGVfZGlydHkoc3RydWN0IGlub2RlICppbm9kZSkKewogICAgICAgIF9fbWFya19pbm9k
ZV9kaXJ0eV9SZmQyNmMyNWYoaW5vZGUsICgxIHwgMiB8IDQpKTsKfQoKc3RhdGljIGlubGluZSB2
b2lkIG1hcmtfaW5vZGVfZGlydHlfc3luYyhzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAgICAg
X19tYXJrX2lub2RlX2RpcnR5X1JmZDI2YzI1Zihpbm9kZSwgMSk7Cn0KCnN0YXRpYyBpbmxpbmUg
dm9pZCBtYXJrX2lub2RlX2RpcnR5X3BhZ2VzKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAg
ICBfX21hcmtfaW5vZGVfZGlydHlfUmZkMjZjMjVmKGlub2RlLCA0KTsKfQoKc3RydWN0IGRxdW90
X29wZXJhdGlvbnMgewogICAgICAgIHZvaWQgKCppbml0aWFsaXplKSAoc3RydWN0IGlub2RlICos
IHNob3J0KTsKICAgICAgICB2b2lkICgqZHJvcCkgKHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICBp
bnQgKCphbGxvY19ibG9jaykgKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25nLCBjaGFyKTsK
ICAgICAgICBpbnQgKCphbGxvY19pbm9kZSkgKGNvbnN0IHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25l
ZCBsb25nKTsKICAgICAgICB2b2lkICgqZnJlZV9ibG9jaykgKHN0cnVjdCBpbm9kZSAqLCB1bnNp
Z25lZCBsb25nKTsKICAgICAgICB2b2lkICgqZnJlZV9pbm9kZSkgKGNvbnN0IHN0cnVjdCBpbm9k
ZSAqLCB1bnNpZ25lZCBsb25nKTsKICAgICAgICBpbnQgKCp0cmFuc2ZlcikgKHN0cnVjdCBpbm9k
ZSAqLCBzdHJ1Y3QgaWF0dHIgKik7Cn07CgpzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSB7CiAgICAg
ICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgICBpbnQgZnNfZmxhZ3M7CiAgICAgICAgc3RydWN0
IHN1cGVyX2Jsb2NrICooKnJlYWRfc3VwZXIpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdm9pZCAq
LCBpbnQpOwogICAgICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyOwogICAgICAgIHN0cnVjdCBmaWxl
X3N5c3RlbV90eXBlICogbmV4dDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGZzX3N1cGVyczsK
fTsKIyA5NzggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKZXh0ZXJuIGludCBy
ZWdpc3Rlcl9maWxlc3lzdGVtX1JmZjQ2OWIxNShzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqKTsK
ZXh0ZXJuIGludCB1bnJlZ2lzdGVyX2ZpbGVzeXN0ZW1fUjFkZmI1YmVlKHN0cnVjdCBmaWxlX3N5
c3RlbV90eXBlICopOwpleHRlcm4gc3RydWN0IHZmc21vdW50ICprZXJuX21vdW50X1JkYjkwODAx
OChzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqKTsKZXh0ZXJuIGludCBtYXlfdW1vdW50X1I1MzAw
MmZhMyhzdHJ1Y3QgdmZzbW91bnQgKik7CmV4dGVybiBsb25nIGRvX21vdW50KGNoYXIgKiwgY2hh
ciAqLCBjaGFyICosIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7CgoKCmV4dGVybiBpbnQgdmZzX3N0
YXRmc19SZjIxMTg0N2Moc3RydWN0IHN1cGVyX2Jsb2NrICosIHN0cnVjdCBzdGF0ZnMgKik7CiMg
OTk2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiCmV4dGVybiBpbnQgbG9ja3Nf
bWFuZGF0b3J5X2xvY2tlZChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgbG9ja3NfbWFuZGF0
b3J5X2FyZWFfUjAxMDNkZjJiKGludCwgc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICosIGxv
ZmZfdCwgc2l6ZV90KTsKIyAxMDA2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgi
CnN0YXRpYyBpbmxpbmUgaW50IGxvY2tzX3ZlcmlmeV9sb2NrZWQoc3RydWN0IGlub2RlICppbm9k
ZSkKewogICAgICAgIGlmICgoKChpbm9kZSktPmlfc2ItPnNfZmxhZ3MgJiAoNjQpKSAmJiAoKGlu
b2RlKS0+aV9tb2RlICYgKDAwMDIwMDAgfCAwMDAxMCkpID09IDAwMDIwMDApKQogICAgICAgICAg
ICAgICAgcmV0dXJuIGxvY2tzX21hbmRhdG9yeV9sb2NrZWQoaW5vZGUpOwogICAgICAgIHJldHVy
biAwOwp9CgpzdGF0aWMgaW5saW5lIGludCBsb2Nrc192ZXJpZnlfYXJlYShpbnQgcmVhZF93cml0
ZSwgc3RydWN0IGlub2RlICppbm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IGZpbGUgKmZpbHAsIGxvZmZfdCBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBjb3VudCkKewogICAgICAgIGlmIChpbm9kZS0+aV9mbG9j
ayAmJiAoKChpbm9kZSktPmlfc2ItPnNfZmxhZ3MgJiAoNjQpKSAmJiAoKGlub2RlKS0+aV9tb2Rl
ICYgKDAwMDIwMDAgfCAwMDAxMCkpID09IDAwMDIwMDApKQogICAgICAgICAgICAgICAgcmV0dXJu
IGxvY2tzX21hbmRhdG9yeV9hcmVhX1IwMTAzZGYyYihyZWFkX3dyaXRlLCBpbm9kZSwgZmlscCwg
b2Zmc2V0LCBjb3VudCk7CiAgICAgICAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IGxv
Y2tzX3ZlcmlmeV90cnVuY2F0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlscCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbG9mZl90IHNpemUpCnsKICAgICAgICBpZiAoaW5vZGUtPmlfZmxv
Y2sgJiYgKCgoaW5vZGUpLT5pX3NiLT5zX2ZsYWdzICYgKDY0KSkgJiYgKChpbm9kZSktPmlfbW9k
ZSAmICgwMDAyMDAwIHwgMDAwMTApKSA9PSAwMDAyMDAwKSkKICAgICAgICAgICAgICAgIHJldHVy
biBsb2Nrc19tYW5kYXRvcnlfYXJlYV9SMDEwM2RmMmIoCiAgICAgICAgICAgICAgICAgICAgICAg
IDIsIGlub2RlLCBmaWxwLAogICAgICAgICAgICAgICAgICAgICAgICBzaXplIDwgaW5vZGUtPmlf
c2l6ZSA/IHNpemUgOiBpbm9kZS0+aV9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAoc2l6
ZSA8IGlub2RlLT5pX3NpemUgPyBpbm9kZS0+aV9zaXplIC0gc2l6ZQogICAgICAgICAgICAgICAg
ICAgICAgICAgOiBzaXplIC0gaW5vZGUtPmlfc2l6ZSkKICAgICAgICAgICAgICAgICk7CiAgICAg
ICAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IGdldF9sZWFzZShzdHJ1Y3QgaW5vZGUg
Kmlub2RlLCB1bnNpZ25lZCBpbnQgbW9kZSkKewogICAgICAgIGlmIChpbm9kZS0+aV9mbG9jayAm
JiAoaW5vZGUtPmlfZmxvY2stPmZsX2ZsYWdzICYgMzIpKQogICAgICAgICAgICAgICAgcmV0dXJu
IF9fZ2V0X2xlYXNlX1I2NWEwOWY3Mihpbm9kZSwgbW9kZSk7CiAgICAgICAgcmV0dXJuIDA7Cn0K
CgoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19vcGVuKGNvbnN0IGNoYXIg
KiwgaW50LCBpbnQpOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX2Nsb3Nl
X1IyNjhjYzZhMih1bnNpZ25lZCBpbnQpOwpleHRlcm4gaW50IGRvX3RydW5jYXRlKHN0cnVjdCBk
ZW50cnkgKiwgbG9mZl90IHN0YXJ0KTsKCmV4dGVybiBzdHJ1Y3QgZmlsZSAqZmlscF9vcGVuX1I1
ZDkxMGEzYyhjb25zdCBjaGFyICosIGludCwgaW50KTsKZXh0ZXJuIHN0cnVjdCBmaWxlICogZGVu
dHJ5X29wZW5fUjBkYmRhYzdmKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IHZmc21vdW50ICosIGlu
dCk7CmV4dGVybiBpbnQgZmlscF9jbG9zZV9SZDIxMmZjZmEoc3RydWN0IGZpbGUgKiwgZmxfb3du
ZXJfdCBpZCk7CmV4dGVybiBjaGFyICogZ2V0bmFtZV9SN2M2MGQ2NmUoY29uc3QgY2hhciAqKTsK
CgpleHRlcm4gdm9pZCB2ZnNfY2FjaGVzX2luaXQodW5zaWduZWQgbG9uZyk7CgoKCgplbnVtIHtC
REVWX0ZJTEUsIEJERVZfU1dBUCwgQkRFVl9GUywgQkRFVl9SQVd9OwpleHRlcm4gaW50IHJlZ2lz
dGVyX2Jsa2Rldl9SYmVkZmRkZTIodW5zaWduZWQgaW50LCBjb25zdCBjaGFyICosIHN0cnVjdCBi
bG9ja19kZXZpY2Vfb3BlcmF0aW9ucyAqKTsKZXh0ZXJuIGludCB1bnJlZ2lzdGVyX2Jsa2Rldl9S
ZWFjMWM0YWYodW5zaWduZWQgaW50LCBjb25zdCBjaGFyICopOwpleHRlcm4gc3RydWN0IGJsb2Nr
X2RldmljZSAqYmRnZXRfUmIxNTk1OTllKGRldl90KTsKZXh0ZXJuIGludCBiZF9hY3F1aXJlKHN0
cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRlcm4gdm9pZCBiZF9mb3JnZXQoc3RydWN0IGlub2RlICpp
bm9kZSk7CmV4dGVybiB2b2lkIGJkcHV0X1I5MjI4Zjk2YihzdHJ1Y3QgYmxvY2tfZGV2aWNlICop
OwpleHRlcm4gc3RydWN0IGNoYXJfZGV2aWNlICpjZGdldF9SZGVlNzBmM2UoZGV2X3QpOwpleHRl
cm4gdm9pZCBjZHB1dF9SZDdhYjRmMWQoc3RydWN0IGNoYXJfZGV2aWNlICopOwpleHRlcm4gaW50
IGJsa2Rldl9vcGVuX1I0Nzk3MTYzMChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKik7CmV4
dGVybiBpbnQgYmxrZGV2X2Nsb3NlKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKZXh0
ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZGVmX2Jsa19mb3BzX1JlM2M4YTlkOTsKZXh0ZXJu
IHN0cnVjdCBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMgZGVmX2Jsa19hb3BzOwpleHRlcm4gc3Ry
dWN0IGZpbGVfb3BlcmF0aW9ucyBkZWZfZmlmb19mb3BzOwpleHRlcm4gaW50IGlvY3RsX2J5X2Jk
ZXZfUjQ1YzY2MjRjKHN0cnVjdCBibG9ja19kZXZpY2UgKiwgdW5zaWduZWQsIHVuc2lnbmVkIGxv
bmcpOwpleHRlcm4gaW50IGJsa2Rldl9nZXRfUjk1YWZmZDk4KHN0cnVjdCBibG9ja19kZXZpY2Ug
KiwgbW9kZV90LCB1bnNpZ25lZCwgaW50KTsKZXh0ZXJuIGludCBibGtkZXZfcHV0X1IyMTA5ZWVi
NChzdHJ1Y3QgYmxvY2tfZGV2aWNlICosIGludCk7CgoKZXh0ZXJuIGNvbnN0IHN0cnVjdCBibG9j
a19kZXZpY2Vfb3BlcmF0aW9ucyAqZ2V0X2Jsa2ZvcHModW5zaWduZWQgaW50KTsKZXh0ZXJuIGlu
dCByZWdpc3Rlcl9jaHJkZXZfUjg1YzQyMTU3KHVuc2lnbmVkIGludCwgY29uc3QgY2hhciAqLCBz
dHJ1Y3QgZmlsZV9vcGVyYXRpb25zICopOwpleHRlcm4gaW50IHVucmVnaXN0ZXJfY2hyZGV2X1Jj
MTkyZDQ5MSh1bnNpZ25lZCBpbnQsIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgY2hyZGV2X29w
ZW4oc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwpleHRlcm4gY29uc3QgY2hhciAqIGJk
ZXZuYW1lX1JkMDQ3ODJlNihrZGV2X3QpOwpleHRlcm4gY29uc3QgY2hhciAqIGNkZXZuYW1lX1I5
NzU0NzQxZChrZGV2X3QpOwpleHRlcm4gY29uc3QgY2hhciAqIGtkZXZuYW1lX1JjMjU4YzkwNihr
ZGV2X3QpOwpleHRlcm4gdm9pZCBpbml0X3NwZWNpYWxfaW5vZGVfUjRhODkxYzVlKHN0cnVjdCBp
bm9kZSAqLCB1bW9kZV90LCBpbnQpOwoKCmV4dGVybiB2b2lkIG1ha2VfYmFkX2lub2RlX1IxYmVh
NTdlMyhzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgaXNfYmFkX2lub2RlX1I4ZjM3ZGZlNihz
dHJ1Y3QgaW5vZGUgKik7CgpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyByZWFkX2ZpZm9f
Zm9wczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgd3JpdGVfZmlmb19mb3BzOwpleHRl
cm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyByZHdyX2ZpZm9fZm9wczsKZXh0ZXJuIHN0cnVjdCBm
aWxlX29wZXJhdGlvbnMgcmVhZF9waXBlX2ZvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRp
b25zIHdyaXRlX3BpcGVfZm9wczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcmR3cl9w
aXBlX2ZvcHM7CgpleHRlcm4gaW50IGZzX21heV9yZW1vdW50X3JvKHN0cnVjdCBzdXBlcl9ibG9j
ayAqKTsKCmV4dGVybiBpbnQgdHJ5X3RvX2ZyZWVfYnVmZmVyc19SZWZhOWFlMDIoc3RydWN0IHBh
Z2UgKiwgdW5zaWduZWQgaW50KTsKZXh0ZXJuIHZvaWQgcmVmaWxlX2J1ZmZlcl9SNjZkYjhkOWQo
c3RydWN0IGJ1ZmZlcl9oZWFkICogYnVmKTsKZXh0ZXJuIHZvaWQgY3JlYXRlX2VtcHR5X2J1ZmZl
cnNfUmJmOThiMDBlKHN0cnVjdCBwYWdlICosIGtkZXZfdCwgdW5zaWduZWQgbG9uZyk7CmV4dGVy
biB2b2lkIGVuZF9idWZmZXJfaW9fc3luYyhzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBpbnQgdXB0
b2RhdGUpOwoKCmV4dGVybiB2b2lkIHNldF9idWZmZXJfYXN5bmNfaW9fUjg3NjY3NmU3KHN0cnVj
dCBidWZmZXJfaGVhZCAqYmgpIDsKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGdldF9iaChzdHJ1
Y3QgYnVmZmVyX2hlYWQgKiBiaCkKewogICAgICAgIGF0b21pY19pbmMoJihiaCktPmJfY291bnQp
Owp9CgpzdGF0aWMgaW5saW5lIHZvaWQgcHV0X2JoKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCnsK
ICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwogICAgICAgIGF0
b21pY19kZWMoJmJoLT5iX2NvdW50KTsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIG1hcmtfYnVm
ZmVyX3VwdG9kYXRlKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoLCBpbnQgb24pCnsKICAgICAgICBp
ZiAob24pCiAgICAgICAgICAgICAgICBzZXRfYml0KEJIX1VwdG9kYXRlLCAmYmgtPmJfc3RhdGUp
OwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGNsZWFyX2JpdChCSF9VcHRvZGF0ZSwgJmJo
LT5iX3N0YXRlKTsKfQoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX19tYXJrX2J1ZmZlcl9jbGVhbihz
dHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKQp7CiAgICAgICAgcmVmaWxlX2J1ZmZlcl9SNjZkYjhkOWQo
YmgpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19idWZmZXJfY2xlYW4oc3RydWN0IGJ1ZmZl
cl9oZWFkICogYmgpCnsKICAgICAgICBpZiAodGVzdF9hbmRfY2xlYXJfYml0KEJIX0RpcnR5LCAm
KGJoKS0+Yl9zdGF0ZSkpCiAgICAgICAgICAgICAgICBfX21hcmtfYnVmZmVyX2NsZWFuKGJoKTsK
fQoKZXh0ZXJuIHZvaWQgX19tYXJrX2RpcnR5KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpIF9fYXR0
cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgX19tYXJrX2J1ZmZlcl9kaXJ0eV9S
NjIzZmNkZGIoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgz
KSkpOwpleHRlcm4gdm9pZCBtYXJrX2J1ZmZlcl9kaXJ0eV9SMzI1YjAwMDkoc3RydWN0IGJ1ZmZl
cl9oZWFkICpiaCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCBidWZm
ZXJfaW5zZXJ0X2lub2RlX2RhdGFfcXVldWUoc3RydWN0IGJ1ZmZlcl9oZWFkICosIHN0cnVjdCBp
bm9kZSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CgoKCnN0YXRpYyBpbmxpbmUgdm9p
ZCBtYXJrX2J1ZmZlcl9hc3luYyhzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCwgaW50IG9uKQp7CiAg
ICAgICAgaWYgKG9uKQogICAgICAgICAgICAgICAgc2V0X2JpdChCSF9Bc3luYywgJmJoLT5iX3N0
YXRlKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBjbGVhcl9iaXQoQkhfQXN5bmMsICZi
aC0+Yl9zdGF0ZSk7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBidWZmZXJfSU9fZXJyb3Io
c3RydWN0IGJ1ZmZlcl9oZWFkICogYmgpCnsKICAgICAgICBtYXJrX2J1ZmZlcl9jbGVhbihiaCk7
CgoKCiAgICAgICAgYmgtPmJfZW5kX2lvKGJoLCAwKTsKfQoKZXh0ZXJuIHZvaWQgYnVmZmVyX2lu
c2VydF9pbm9kZV9xdWV1ZV9SZGM4ZDAyNjEoc3RydWN0IGJ1ZmZlcl9oZWFkICosIHN0cnVjdCBp
bm9kZSAqKTsKc3RhdGljIGlubGluZSB2b2lkIG1hcmtfYnVmZmVyX2RpcnR5X2lub2RlKHN0cnVj
dCBidWZmZXJfaGVhZCAqYmgsIHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBtYXJrX2J1
ZmZlcl9kaXJ0eV9SMzI1YjAwMDkoYmgpOwogICAgICAgIGJ1ZmZlcl9pbnNlcnRfaW5vZGVfcXVl
dWVfUmRjOGQwMjYxKGJoLCBpbm9kZSk7Cn0KCmV4dGVybiB2b2lkIHNldF9idWZmZXJfZmx1c2h0
aW1lX1IwOGFiOTk5NihzdHJ1Y3QgYnVmZmVyX2hlYWQgKik7CmV4dGVybiB2b2lkIGJhbGFuY2Vf
ZGlydHkodm9pZCk7CmV4dGVybiBpbnQgY2hlY2tfZGlza19jaGFuZ2VfUjExZDQwNzZkKGtkZXZf
dCk7CmV4dGVybiBpbnQgaW52YWxpZGF0ZV9pbm9kZXNfUjk2MjJhNDJjKHN0cnVjdCBzdXBlcl9i
bG9jayAqKTsKZXh0ZXJuIGludCBpbnZhbGlkYXRlX2RldmljZV9SMjVhNGIwYjIoa2Rldl90LCBp
bnQpOwpleHRlcm4gdm9pZCBpbnZhbGlkYXRlX2lub2RlX3BhZ2VzX1I1MTkwYTU0NChzdHJ1Y3Qg
aW5vZGUgKik7CmV4dGVybiB2b2lkIGludmFsaWRhdGVfaW5vZGVfcGFnZXMyKHN0cnVjdCBhZGRy
ZXNzX3NwYWNlICopOwpleHRlcm4gdm9pZCBpbnZhbGlkYXRlX2lub2RlX2J1ZmZlcnMoc3RydWN0
IGlub2RlICopOwoKCmV4dGVybiB2b2lkIGludmFsaWRhdGVfYmRldl9SZmViNDFkMDcoc3RydWN0
IGJsb2NrX2RldmljZSAqLCBpbnQpOwpleHRlcm4gdm9pZCBfX2ludmFsaWRhdGVfYnVmZmVyc19S
OThmNTE1Mzgoa2Rldl90IGRldiwgaW50KTsKZXh0ZXJuIHZvaWQgc3luY19pbm9kZXMoa2Rldl90
KTsKZXh0ZXJuIHZvaWQgc3luY191bmxvY2tlZF9pbm9kZXModm9pZCk7CmV4dGVybiB2b2lkIHdy
aXRlX2lub2RlX25vd19SYjViOWMwMjUoc3RydWN0IGlub2RlICosIGludCk7CmV4dGVybiBpbnQg
c3luY19idWZmZXJzKGtkZXZfdCwgaW50KTsKZXh0ZXJuIHZvaWQgc3luY19kZXZfUmZjMGIwZjQ5
KGtkZXZfdCk7CmV4dGVybiBpbnQgZnN5bmNfZGV2X1I4ZWExMjhlMihrZGV2X3QpOwpleHRlcm4g
aW50IGZzeW5jX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKZXh0ZXJuIGludCBmc3luY19u
b19zdXBlcl9SNTc1MjA2NDQoa2Rldl90KTsKZXh0ZXJuIHZvaWQgc3luY19pbm9kZXNfc2Ioc3Ry
dWN0IHN1cGVyX2Jsb2NrICopOwpleHRlcm4gaW50IG9zeW5jX2lub2RlX2J1ZmZlcnMoc3RydWN0
IGlub2RlICopOwpleHRlcm4gaW50IG9zeW5jX2lub2RlX2RhdGFfYnVmZmVycyhzdHJ1Y3QgaW5v
ZGUgKik7CmV4dGVybiBpbnQgZnN5bmNfaW5vZGVfYnVmZmVyc19SYTE3M2I4Mjcoc3RydWN0IGlu
b2RlICopOwpleHRlcm4gaW50IGZzeW5jX2lub2RlX2RhdGFfYnVmZmVyc19SMThkNjk2MGYoc3Ry
dWN0IGlub2RlICopOwpleHRlcm4gaW50IGlub2RlX2hhc19idWZmZXJzKHN0cnVjdCBpbm9kZSAq
KTsKZXh0ZXJuIHZvaWQgZmlsZW1hcF9mZGF0YXN5bmNfUmE1ODBkMmIyKHN0cnVjdCBhZGRyZXNz
X3NwYWNlICopOwpleHRlcm4gdm9pZCBmaWxlbWFwX2ZkYXRhd2FpdF9SYjY0MDhlMzAoc3RydWN0
IGFkZHJlc3Nfc3BhY2UgKik7CmV4dGVybiB2b2lkIHN5bmNfc3VwZXJzKGtkZXZfdCk7CmV4dGVy
biBpbnQgYm1hcF9SY2IyN2I4ZWIoc3RydWN0IGlub2RlICosIGludCk7CmV4dGVybiBpbnQgbm90
aWZ5X2NoYW5nZV9SNDE1ODBhMzcoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaWF0dHIgKik7CmV4
dGVybiBpbnQgcGVybWlzc2lvbl9SYTI4ZWRiZDkoc3RydWN0IGlub2RlICosIGludCk7CmV4dGVy
biBpbnQgdmZzX3Blcm1pc3Npb25fUjA5YWVlNTAxKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpleHRl
cm4gaW50IGdldF93cml0ZV9hY2Nlc3NfUmE3ZTk2MzQ2KHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJu
IGludCBkZW55X3dyaXRlX2FjY2VzcyhzdHJ1Y3QgZmlsZSAqKTsKc3RhdGljIGlubGluZSB2b2lk
IHB1dF93cml0ZV9hY2Nlc3Moc3RydWN0IGlub2RlICogaW5vZGUpCnsKICAgICAgICBhdG9taWNf
ZGVjKCZpbm9kZS0+aV93cml0ZWNvdW50KTsKfQpzdGF0aWMgaW5saW5lIHZvaWQgYWxsb3dfd3Jp
dGVfYWNjZXNzKHN0cnVjdCBmaWxlICpmaWxlKQp7CiAgICAgICAgaWYgKGZpbGUpCiAgICAgICAg
ICAgICAgICBhdG9taWNfaW5jKCZmaWxlLT5mX2RlbnRyeS0+ZF9pbm9kZS0+aV93cml0ZWNvdW50
KTsKfQpleHRlcm4gaW50IGRvX3BpcGUoaW50ICopOwoKZXh0ZXJuIGludCBvcGVuX25hbWVpKGNv
bnN0IGNoYXIgKiwgaW50LCBpbnQsIHN0cnVjdCBuYW1laWRhdGEgKik7CgpleHRlcm4gaW50IGtl
cm5lbF9yZWFkX1IyNGQ2YmRkZihzdHJ1Y3QgZmlsZSAqLCB1bnNpZ25lZCBsb25nLCBjaGFyICos
IHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gc3RydWN0IGZpbGUgKiBvcGVuX2V4ZWNfUjQ2MmQyMmRm
KGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIGludCBpc19zdWJkaXJfUjFkNTJjMmFmKHN0cnVjdCBk
ZW50cnkgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGlub190IGZpbmRfaW5vZGVfbnVtYmVy
X1IxMDQ4YmUxMShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBxc3RyICopOwojIDEyNDkgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKc3RhdGljIGlubGluZSB2b2lkICpFUlJfUFRS
KGxvbmcgZXJyb3IpCnsKICAgICAgICByZXR1cm4gKHZvaWQgKikgZXJyb3I7Cn0KCnN0YXRpYyBp
bmxpbmUgbG9uZyBQVFJfRVJSKGNvbnN0IHZvaWQgKnB0cikKewogICAgICAgIHJldHVybiAobG9u
ZykgcHRyOwp9CgpzdGF0aWMgaW5saW5lIGxvbmcgSVNfRVJSKGNvbnN0IHZvaWQgKnB0cikKewog
ICAgICAgIHJldHVybiAodW5zaWduZWQgbG9uZylwdHIgPiAodW5zaWduZWQgbG9uZyktMTAwMEw7
Cn0KIyAxMjgwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiCmVudW0ge0xBU1Rf
Tk9STSwgTEFTVF9ST09ULCBMQVNUX0RPVCwgTEFTVF9ET1RET1QsIExBU1RfQklORH07CiMgMTI5
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIgp0eXBlZGVmIHN0cnVjdCB7CiAg
ICAgICAgc2l6ZV90IHdyaXR0ZW47CiAgICAgICAgc2l6ZV90IGNvdW50OwogICAgICAgIGNoYXIg
KiBidWY7CiAgICAgICAgaW50IGVycm9yOwp9IHJlYWRfZGVzY3JpcHRvcl90OwoKdHlwZWRlZiBp
bnQgKCpyZWFkX2FjdG9yX3QpKHJlYWRfZGVzY3JpcHRvcl90ICosIHN0cnVjdCBwYWdlICosIHVu
c2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwoKCmV4dGVybiBsb2ZmX3QgZGVmYXVsdF9sbHNl
ZWtfUmNhMzAwNWU4KHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBpbnQgb3JpZ2lu
KTsKCmV4dGVybiBpbnQgX191c2VyX3dhbGtfUmJlOTlmZjI4KGNvbnN0IGNoYXIgKiwgdW5zaWdu
ZWQsIHN0cnVjdCBuYW1laWRhdGEgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRl
cm4gaW50IHBhdGhfaW5pdF9SYzllMGEwNGQoY29uc3QgY2hhciAqLCB1bnNpZ25lZCwgc3RydWN0
IG5hbWVpZGF0YSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBpbnQgcGF0
aF93YWxrX1I0NmVkY2VhMShjb25zdCBjaGFyICosIHN0cnVjdCBuYW1laWRhdGEgKikgX19hdHRy
aWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gaW50IGxpbmtfcGF0aF93YWxrKGNvbnN0IGNo
YXIgKiwgc3RydWN0IG5hbWVpZGF0YSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4
dGVybiB2b2lkIHBhdGhfcmVsZWFzZV9SNTExZTc3YmUoc3RydWN0IG5hbWVpZGF0YSAqKTsKZXh0
ZXJuIGludCBmb2xsb3dfZG93bl9SZTM0NDkxNTEoc3RydWN0IHZmc21vdW50ICoqLCBzdHJ1Y3Qg
ZGVudHJ5ICoqKTsKZXh0ZXJuIGludCBmb2xsb3dfdXBfUjkxYjIwMWY3KHN0cnVjdCB2ZnNtb3Vu
dCAqKiwgc3RydWN0IGRlbnRyeSAqKik7CmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogbG9va3VwX29u
ZV9sZW5fUjEzN2UwNjI0KGNvbnN0IGNoYXIgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQpOwpleHRl
cm4gc3RydWN0IGRlbnRyeSAqIGxvb2t1cF9oYXNoX1I2ZjYxMWE5NChzdHJ1Y3QgcXN0ciAqLCBz
dHJ1Y3QgZGVudHJ5ICopOwoKCgpleHRlcm4gdm9pZCBpcHV0X1I5NjE5OWE4MihzdHJ1Y3QgaW5v
ZGUgKik7CmV4dGVybiB2b2lkIGZvcmNlX2RlbGV0ZV9SNjE0OTZlN2Moc3RydWN0IGlub2RlICop
OwpleHRlcm4gc3RydWN0IGlub2RlICogaWdyYWJfUjlkOTk3MmRjKHN0cnVjdCBpbm9kZSAqKTsK
ZXh0ZXJuIGlub190IGl1bmlxdWVfUmFhMjRiM2NkKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbm9f
dCk7Cgp0eXBlZGVmIGludCAoKmZpbmRfaW5vZGVfdCkoc3RydWN0IGlub2RlICosIHVuc2lnbmVk
IGxvbmcsIHZvaWQgKik7CmV4dGVybiBzdHJ1Y3QgaW5vZGUgKiBpZ2V0NF9SMTZmOWFlNmIoc3Ry
dWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkIGxvbmcsIGZpbmRfaW5vZGVfdCwgdm9pZCAqKTsK
c3RhdGljIGlubGluZSBzdHJ1Y3QgaW5vZGUgKmlnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwg
dW5zaWduZWQgbG9uZyBpbm8pCnsKICAgICAgICByZXR1cm4gaWdldDRfUjE2ZjlhZTZiKHNiLCBp
bm8sICgodm9pZCAqKTApLCAoKHZvaWQgKikwKSk7Cn0KCmV4dGVybiB2b2lkIGNsZWFyX2lub2Rl
X1JiMWNmNTRjMyhzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBzdHJ1Y3QgaW5vZGUgKiBnZXRfZW1w
dHlfaW5vZGVfUjliNDBlYjkyKHZvaWQpOwoKc3RhdGljIGlubGluZSBzdHJ1Y3QgaW5vZGUgKiBu
ZXdfaW5vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKewogICAgICAgIHN0cnVjdCBpbm9kZSAq
aW5vZGUgPSBnZXRfZW1wdHlfaW5vZGVfUjliNDBlYjkyKCk7CiAgICAgICAgaWYgKGlub2RlKSB7
CiAgICAgICAgICAgICAgICBpbm9kZS0+aV9zYiA9IHNiOwogICAgICAgICAgICAgICAgaW5vZGUt
PmlfZGV2ID0gc2ItPnNfZGV2OwogICAgICAgICAgICAgICAgaW5vZGUtPmlfYmxrYml0cyA9IHNi
LT5zX2Jsb2Nrc2l6ZV9iaXRzOwogICAgICAgIH0KICAgICAgICByZXR1cm4gaW5vZGU7Cn0KZXh0
ZXJuIHZvaWQgcmVtb3ZlX3N1aWQoc3RydWN0IGlub2RlICppbm9kZSk7CgpleHRlcm4gdm9pZCBp
bnNlcnRfaW5vZGVfaGFzaF9SMGQxMDVmNTAoc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCBy
ZW1vdmVfaW5vZGVfaGFzaF9SYzZiODQ4M2Yoc3RydWN0IGlub2RlICopOwpleHRlcm4gc3RydWN0
IGZpbGUgKiBnZXRfZW1wdHlfZmlscF9SZWVmMjgyOTEodm9pZCk7CmV4dGVybiB2b2lkIGZpbGVf
bW92ZShzdHJ1Y3QgZmlsZSAqZiwgc3RydWN0IGxpc3RfaGVhZCAqbGlzdCk7CmV4dGVybiBzdHJ1
Y3QgYnVmZmVyX2hlYWQgKiBnZXRfaGFzaF90YWJsZV9SMDY0MjM5ZGMoa2Rldl90LCBpbnQsIGlu
dCk7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBnZXRibGtfUmM5MjRjOTdjKGtkZXZfdCwg
aW50LCBpbnQpOwpleHRlcm4gdm9pZCBsbF9yd19ibG9ja19SN2E2YTMzYWMoaW50LCBpbnQsIHN0
cnVjdCBidWZmZXJfaGVhZCAqIGJoW10pOwpleHRlcm4gdm9pZCBzdWJtaXRfYmhfUjVlYzg1YjMy
KGludCwgc3RydWN0IGJ1ZmZlcl9oZWFkICopOwpleHRlcm4gaW50IGlzX3JlYWRfb25seV9SNzQw
Mjc0Y2Eoa2Rldl90KTsKZXh0ZXJuIHZvaWQgX19icmVsc2VfUmJiZWIyNzYzKHN0cnVjdCBidWZm
ZXJfaGVhZCAqKTsKc3RhdGljIGlubGluZSB2b2lkIGJyZWxzZShzdHJ1Y3QgYnVmZmVyX2hlYWQg
KmJ1ZikKewogICAgICAgIGlmIChidWYpCiAgICAgICAgICAgICAgICBfX2JyZWxzZV9SYmJlYjI3
NjMoYnVmKTsKfQpleHRlcm4gdm9pZCBfX2Jmb3JnZXRfUmNlYjY4OTgyKHN0cnVjdCBidWZmZXJf
aGVhZCAqKTsKc3RhdGljIGlubGluZSB2b2lkIGJmb3JnZXQoc3RydWN0IGJ1ZmZlcl9oZWFkICpi
dWYpCnsKICAgICAgICBpZiAoYnVmKQogICAgICAgICAgICAgICAgX19iZm9yZ2V0X1JjZWI2ODk4
MihidWYpOwp9CmV4dGVybiBpbnQgc2V0X2Jsb2Nrc2l6ZV9SYzc1ZDg1N2Moa2Rldl90LCBpbnQp
OwpleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogYnJlYWRfUmU5OTc3YzE2KGtkZXZfdCwgaW50
LCBpbnQpOwpleHRlcm4gdm9pZCB3YWtldXBfYmRmbHVzaCh2b2lkKTsKZXh0ZXJuIHZvaWQgcHV0
X3VudXNlZF9idWZmZXJfaGVhZF9SNmMzNjMxNGEoc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgpOwpl
eHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogZ2V0X3VudXNlZF9idWZmZXJfaGVhZF9SOTRjZDhh
NjAoaW50IGFzeW5jKTsKCmV4dGVybiBpbnQgYnJ3X3BhZ2VfUmQ3MjJkZWNkKGludCwgc3RydWN0
IHBhZ2UgKiwga2Rldl90LCBpbnQgW10sIGludCk7Cgp0eXBlZGVmIGludCAoZ2V0X2Jsb2NrX3Qp
KHN0cnVjdCBpbm9kZSosbG9uZyxzdHJ1Y3QgYnVmZmVyX2hlYWQqLGludCk7CgoKZXh0ZXJuIGlu
dCB0cnlfdG9fcmVsZWFzZV9wYWdlKHN0cnVjdCBwYWdlICogcGFnZSwgaW50IGdmcF9tYXNrKTsK
ZXh0ZXJuIGludCBkaXNjYXJkX2JoX3BhZ2Uoc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQgbG9uZywg
aW50KTsKCgpleHRlcm4gaW50IGJsb2NrX3N5bWxpbmtfUjk3OGJmZjhiKHN0cnVjdCBpbm9kZSAq
LCBjb25zdCBjaGFyICosIGludCk7CmV4dGVybiBpbnQgYmxvY2tfd3JpdGVfZnVsbF9wYWdlX1I3
ZmJiZTcyOShzdHJ1Y3QgcGFnZSosIGdldF9ibG9ja190Kik7CmV4dGVybiBpbnQgYmxvY2tfcmVh
ZF9mdWxsX3BhZ2VfUjQ3NmE2NmEyKHN0cnVjdCBwYWdlKiwgZ2V0X2Jsb2NrX3QqKTsKZXh0ZXJu
IGludCBibG9ja19wcmVwYXJlX3dyaXRlX1IxYWU2NGNkMChzdHJ1Y3QgcGFnZSosIHVuc2lnbmVk
LCB1bnNpZ25lZCwgZ2V0X2Jsb2NrX3QqKTsKZXh0ZXJuIGludCBjb250X3ByZXBhcmVfd3JpdGVf
UmFhMDg5MmE1KHN0cnVjdCBwYWdlKiwgdW5zaWduZWQsIHVuc2lnbmVkLCBnZXRfYmxvY2tfdCos
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqKTsKZXh0ZXJu
IGludCBibG9ja19jb21taXRfd3JpdGUoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGZyb20s
IHVuc2lnbmVkIHRvKTsKZXh0ZXJuIGludCBibG9ja19zeW5jX3BhZ2VfUjYwNjVlODI2KHN0cnVj
dCBwYWdlICopOwoKaW50IGdlbmVyaWNfYmxvY2tfYm1hcF9SM2U1YzU3YzIoc3RydWN0IGFkZHJl
c3Nfc3BhY2UgKiwgbG9uZywgZ2V0X2Jsb2NrX3QgKik7CmludCBnZW5lcmljX2NvbW1pdF93cml0
ZV9SZTIxMzY1ZWQoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQsIHVuc2ln
bmVkKTsKaW50IGJsb2NrX3RydW5jYXRlX3BhZ2VfUmFiYThmMmU3KHN0cnVjdCBhZGRyZXNzX3Nw
YWNlICosIGxvZmZfdCwgZ2V0X2Jsb2NrX3QgKik7CmV4dGVybiBpbnQgZ2VuZXJpY19kaXJlY3Rf
SU9fUjdkNjI4MDVkKGludCwgc3RydWN0IGlub2RlICosIHN0cnVjdCBraW9idWYgKiwgdW5zaWdu
ZWQgbG9uZywgaW50LCBnZXRfYmxvY2tfdCAqKTsKCmV4dGVybiBpbnQgd2FpdGZvcl9vbmVfcGFn
ZV9SNmVhNWRjZTMoc3RydWN0IHBhZ2UqKTsKZXh0ZXJuIGludCBnZW5lcmljX2ZpbGVfbW1hcF9S
NjJmN2Q1ODcoc3RydWN0IGZpbGUgKiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOwpleHRlcm4g
aW50IGZpbGVfcmVhZF9hY3RvcihyZWFkX2Rlc2NyaXB0b3JfdCAqIGRlc2MsIHN0cnVjdCBwYWdl
ICpwYWdlLCB1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBzaXplKTsKZXh0ZXJu
IHNzaXplX3QgZ2VuZXJpY19maWxlX3JlYWRfUjRmZWQ5Y2ExKHN0cnVjdCBmaWxlICosIGNoYXIg
Kiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVybiBzc2l6ZV90IGdlbmVyaWNfZmlsZV93cml0ZV9S
ZjUwMDVkY2Qoc3RydWN0IGZpbGUgKiwgY29uc3QgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsK
ZXh0ZXJuIHZvaWQgZG9fZ2VuZXJpY19maWxlX3JlYWRfUjkwYmNhMTI1KHN0cnVjdCBmaWxlICos
IGxvZmZfdCAqLCByZWFkX2Rlc2NyaXB0b3JfdCAqLCByZWFkX2FjdG9yX3QpOwpleHRlcm4gbG9m
Zl90IG5vX2xsc2Vla19SZWMyMWU5ZWMoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQs
IGludCBvcmlnaW4pOwpleHRlcm4gbG9mZl90IGdlbmVyaWNfZmlsZV9sbHNlZWtfUjY4MWI3YjVh
KHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBpbnQgb3JpZ2luKTsKZXh0ZXJuIHNz
aXplX3QgZ2VuZXJpY19yZWFkX2Rpcl9SODQ5OTE4NmIoc3RydWN0IGZpbGUgKiwgY2hhciAqLCBz
aXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIGludCBnZW5lcmljX2ZpbGVfb3Blbl9SNjE0MjdjOWIo
c3RydWN0IGlub2RlICogaW5vZGUsIHN0cnVjdCBmaWxlICogZmlscCk7CgpleHRlcm4gc3RydWN0
IGZpbGVfb3BlcmF0aW9ucyBnZW5lcmljX3JvX2ZvcHNfUmQwYmQwMGVkOwoKZXh0ZXJuIGludCB2
ZnNfcmVhZGxpbmtfUmVkODY4ZmY5KHN0cnVjdCBkZW50cnkgKiwgY2hhciAqLCBpbnQsIGNvbnN0
IGNoYXIgKik7CmV4dGVybiBpbnQgdmZzX2ZvbGxvd19saW5rX1JiZTk1ZWQ3NShzdHJ1Y3QgbmFt
ZWlkYXRhICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgcGFnZV9yZWFkbGlua19SY2M5NWE2
M2Ioc3RydWN0IGRlbnRyeSAqLCBjaGFyICosIGludCk7CmV4dGVybiBpbnQgcGFnZV9mb2xsb3df
bGlua19SODgyZWM0MTMoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgbmFtZWlkYXRhICopOwpleHRl
cm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMgcGFnZV9zeW1saW5rX2lub2RlX29wZXJhdGlvbnNf
UjA4MDJlOTlmOwoKZXh0ZXJuIGludCB2ZnNfcmVhZGRpcl9SOWY1MTgyYTIoc3RydWN0IGZpbGUg
KiwgZmlsbGRpcl90LCB2b2lkICopOwpleHRlcm4gaW50IGRjYWNoZV9yZWFkZGlyX1I3NTdhZDhj
NChzdHJ1Y3QgZmlsZSAqLCB2b2lkICosIGZpbGxkaXJfdCk7CgpleHRlcm4gc3RydWN0IGZpbGVf
c3lzdGVtX3R5cGUgKmdldF9mc190eXBlX1I4MzhjYzRiNShjb25zdCBjaGFyICpuYW1lKTsKZXh0
ZXJuIHN0cnVjdCBzdXBlcl9ibG9jayAqZ2V0X3N1cGVyX1JiMGU1NjlkOChrZGV2X3QpOwpleHRl
cm4gdm9pZCBkcm9wX3N1cGVyX1JmOGM5MDBkYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKc3Rh
dGljIGlubGluZSBpbnQgaXNfbW91bnRlZChrZGV2X3QgZGV2KQp7CiAgICAgICAgc3RydWN0IHN1
cGVyX2Jsb2NrICpzYiA9IGdldF9zdXBlcl9SYjBlNTY5ZDgoZGV2KTsKICAgICAgICBpZiAoc2Ip
IHsKICAgICAgICAgICAgICAgIGRyb3Bfc3VwZXJfUmY4YzkwMGRjKHNiKTsKICAgICAgICAgICAg
ICAgIHJldHVybiAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4gMDsKfQp1bnNpZ25lZCBsb25n
IGdlbmVyYXRlX2NsdXN0ZXIoa2Rldl90LCBpbnQgYltdLCBpbnQpOwp1bnNpZ25lZCBsb25nIGdl
bmVyYXRlX2NsdXN0ZXJfc3dhYjMyKGtkZXZfdCwgaW50IGJbXSwgaW50KTsKZXh0ZXJuIGtkZXZf
dCBST09UX0RFVl9SYjMyNDk2ZTg7CmV4dGVybiBjaGFyIHJvb3RfZGV2aWNlX25hbWVbXTsKCgpl
eHRlcm4gdm9pZCBzaG93X2J1ZmZlcnModm9pZCk7CmV4dGVybiB2b2lkIG1vdW50X3Jvb3Qodm9p
ZCk7CgoKCgoKCmV4dGVybiBzc2l6ZV90IGNoYXJfcmVhZChzdHJ1Y3QgZmlsZSAqLCBjaGFyICos
IHNpemVfdCwgbG9mZl90ICopOwpleHRlcm4gc3NpemVfdCBibG9ja19yZWFkKHN0cnVjdCBmaWxl
ICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVybiBpbnQgcmVhZF9haGVhZF9SMGFi
YjdiMDdbXTsKCmV4dGVybiBzc2l6ZV90IGNoYXJfd3JpdGUoc3RydWN0IGZpbGUgKiwgY29uc3Qg
Y2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIHNzaXplX3QgYmxvY2tfd3JpdGUoc3Ry
dWN0IGZpbGUgKiwgY29uc3QgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKCmV4dGVybiBpbnQg
ZmlsZV9mc3luY19SOTg2ODE0ZGIoc3RydWN0IGZpbGUgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQp
OwpleHRlcm4gaW50IGdlbmVyaWNfYnVmZmVyX2ZkYXRhc3luY19SZTU5NTBjZjEoc3RydWN0IGlu
b2RlICppbm9kZSwgdW5zaWduZWQgbG9uZyBzdGFydF9pZHgsIHVuc2lnbmVkIGxvbmcgZW5kX2lk
eCk7CmV4dGVybiBpbnQgZ2VuZXJpY19vc3luY19pbm9kZShzdHJ1Y3QgaW5vZGUgKiwgaW50KTsK
CgoKCmV4dGVybiBpbnQgaW5vZGVfY2hhbmdlX29rX1JjNThjODA2NChzdHJ1Y3QgaW5vZGUgKiwg
c3RydWN0IGlhdHRyICopOwpleHRlcm4gaW50IGlub2RlX3NldGF0dHJfUmQ5MDE3ODg5KHN0cnVj
dCBpbm9kZSAqLCBzdHJ1Y3QgaWF0dHIgKik7CiMgMTQ3NiAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9mcy5oIgpzdGF0aWMgaW5saW5lIHN0cnVjdCBkZW50cnkgKmxvY2tfcGFyZW50KHN0
cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHN0cnVjdCBkZW50cnkgKmRpciA9IGRnZXQo
ZGVudHJ5LT5kX3BhcmVudCk7CgogICAgICAgIGRvd24oJmRpci0+ZF9pbm9kZS0+aV9zZW0pOwog
ICAgICAgIHJldHVybiBkaXI7Cn0KCnN0YXRpYyBpbmxpbmUgc3RydWN0IGRlbnRyeSAqZ2V0X3Bh
cmVudChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKICAgICAgICByZXR1cm4gZGdldChkZW50cnkt
PmRfcGFyZW50KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHVubG9ja19kaXIoc3RydWN0IGRlbnRy
eSAqZGlyKQp7CiAgICAgICAgdXAoJmRpci0+ZF9pbm9kZS0+aV9zZW0pOwogICAgICAgIGRwdXRf
UmJmZTJiMjU4KGRpcik7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgZG91YmxlX2Rvd24oc3Ry
dWN0IHNlbWFwaG9yZSAqczEsIHN0cnVjdCBzZW1hcGhvcmUgKnMyKQp7CiAgICAgICAgaWYgKHMx
ICE9IHMyKSB7CiAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMxIDwgKHVuc2ln
bmVkIGxvbmcpIHMyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUg
KnRtcCA9IHMyOwogICAgICAgICAgICAgICAgICAgICAgICBzMiA9IHMxOyBzMSA9IHRtcDsKICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRvd24oczEpOwogICAgICAgIH0KICAgICAg
ICBkb3duKHMyKTsKfQojIDE1MjAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIK
c3RhdGljIGlubGluZSB2b2lkIHRyaXBsZV9kb3duKHN0cnVjdCBzZW1hcGhvcmUgKnMxLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqczIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICpzMykKewogICAgICAgIGlm
IChzMSAhPSBzMikgewogICAgICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25nKSBzMSA8ICh1
bnNpZ25lZCBsb25nKSBzMikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVk
IGxvbmcpIHMxIDwgKHVuc2lnbmVkIGxvbmcpIHMzKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqdG1wID0gczM7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgczMgPSBzMTsgczEgPSB0bXA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25nKSBzMSA8ICh1bnNpZ25l
ZCBsb25nKSBzMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1h
cGhvcmUgKnRtcCA9IHMyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMyID0gczE7
IHMxID0gdG1wOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMxIDwgKHVu
c2lnbmVkIGxvbmcpIHMzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IHNlbWFwaG9yZSAqdG1wID0gczM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczMg
PSBzMTsgczEgPSB0bXA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25nKSBzMiA8ICh1bnNpZ25lZCBsb25nKSBzMykgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnRtcCA9IHMz
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMzID0gczI7IHMyID0gdG1wOwogICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBk
b3duKHMxKTsKICAgICAgICB9IGVsc2UgaWYgKCh1bnNpZ25lZCBsb25nKSBzMiA8ICh1bnNpZ25l
ZCBsb25nKSBzMykgewogICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqdG1wID0gczM7
CiAgICAgICAgICAgICAgICBzMyA9IHMyOyBzMiA9IHRtcDsKICAgICAgICB9CiAgICAgICAgZG93
bihzMik7CiAgICAgICAgZG93bihzMyk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBkb3VibGVfdXAo
c3RydWN0IHNlbWFwaG9yZSAqczEsIHN0cnVjdCBzZW1hcGhvcmUgKnMyKQp7CiAgICAgICAgdXAo
czEpOwogICAgICAgIGlmIChzMSAhPSBzMikKICAgICAgICAgICAgICAgIHVwKHMyKTsKfQoKc3Rh
dGljIGlubGluZSB2b2lkIHRyaXBsZV91cChzdHJ1Y3Qgc2VtYXBob3JlICpzMSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICpzMiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICpzMykKewogICAgICAgIHVwKHMxKTsKICAg
ICAgICBpZiAoczEgIT0gczIpCiAgICAgICAgICAgICAgICB1cChzMik7CiAgICAgICAgdXAoczMp
Owp9CgpzdGF0aWMgaW5saW5lIHZvaWQgZG91YmxlX2xvY2soc3RydWN0IGRlbnRyeSAqZDEsIHN0
cnVjdCBkZW50cnkgKmQyKQp7CiAgICAgICAgZG91YmxlX2Rvd24oJmQxLT5kX2lub2RlLT5pX3Nl
bSwgJmQyLT5kX2lub2RlLT5pX3NlbSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBkb3VibGVfdW5s
b2NrKHN0cnVjdCBkZW50cnkgKmQxLCBzdHJ1Y3QgZGVudHJ5ICpkMikKewogICAgICAgIGRvdWJs
ZV91cCgmZDEtPmRfaW5vZGUtPmlfc2VtLCZkMi0+ZF9pbm9kZS0+aV9zZW0pOwogICAgICAgIGRw
dXRfUmJmZTJiMjU4KGQxKTsKICAgICAgICBkcHV0X1JiZmUyYjI1OChkMik7Cn0KIyAxOCAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmgiIDIKIyAzMiAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmgiCnR5cGVkZWYgc3RydWN0IF9fdXNlcl9j
YXBfaGVhZGVyX3N0cnVjdCB7CiAgICAgICAgX191MzIgdmVyc2lvbjsKICAgICAgICBpbnQgcGlk
Owp9ICpjYXBfdXNlcl9oZWFkZXJfdDsKCnR5cGVkZWYgc3RydWN0IF9fdXNlcl9jYXBfZGF0YV9z
dHJ1Y3QgewogICAgICAgIF9fdTMyIGVmZmVjdGl2ZTsKICAgICAgICBfX3UzMiBwZXJtaXR0ZWQ7
CiAgICAgICAgX191MzIgaW5oZXJpdGFibGU7Cn0gKmNhcF91c2VyX2RhdGFfdDsKIyA1NSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmgiCnR5cGVkZWYgX191MzIga2Vy
bmVsX2NhcF90OwojIDI4NiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5
LmgiCmV4dGVybiBrZXJuZWxfY2FwX3QgY2FwX2JzZXRfUjU5YWI0MDgwOwojIDMxNCAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmgiCnN0YXRpYyBpbmxpbmUga2VybmVs
X2NhcF90IGNhcF9jb21iaW5lKGtlcm5lbF9jYXBfdCBhLCBrZXJuZWxfY2FwX3QgYikKewogICAg
IGtlcm5lbF9jYXBfdCBkZXN0OwogICAgIChkZXN0KSA9IChhKSB8IChiKTsKICAgICByZXR1cm4g
ZGVzdDsKfQoKc3RhdGljIGlubGluZSBrZXJuZWxfY2FwX3QgY2FwX2ludGVyc2VjdChrZXJuZWxf
Y2FwX3QgYSwga2VybmVsX2NhcF90IGIpCnsKICAgICBrZXJuZWxfY2FwX3QgZGVzdDsKICAgICAo
ZGVzdCkgPSAoYSkgJiAoYik7CiAgICAgcmV0dXJuIGRlc3Q7Cn0KCnN0YXRpYyBpbmxpbmUga2Vy
bmVsX2NhcF90IGNhcF9kcm9wKGtlcm5lbF9jYXBfdCBhLCBrZXJuZWxfY2FwX3QgZHJvcCkKewog
ICAgIGtlcm5lbF9jYXBfdCBkZXN0OwogICAgIChkZXN0KSA9IChhKSAmIH4oZHJvcCk7CiAgICAg
cmV0dXJuIGRlc3Q7Cn0KCnN0YXRpYyBpbmxpbmUga2VybmVsX2NhcF90IGNhcF9pbnZlcnQoa2Vy
bmVsX2NhcF90IGMpCnsKICAgICBrZXJuZWxfY2FwX3QgZGVzdDsKICAgICAoZGVzdCkgPSB+KGMp
OwogICAgIHJldHVybiBkZXN0Owp9CiMgNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9i
aW5mbXRzLmgiIDIKIyAyMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9iaW5mbXRzLmgi
CnN0cnVjdCBsaW51eF9iaW5wcm17CiAgICAgICAgY2hhciBidWZbMTI4XTsKICAgICAgICBzdHJ1
Y3QgcGFnZSAqcGFnZVszMl07CiAgICAgICAgdW5zaWduZWQgbG9uZyBwOwogICAgICAgIGludCBz
aF9iYW5nOwogICAgICAgIHN0cnVjdCBmaWxlICogZmlsZTsKICAgICAgICBpbnQgZV91aWQsIGVf
Z2lkOwogICAgICAgIGtlcm5lbF9jYXBfdCBjYXBfaW5oZXJpdGFibGUsIGNhcF9wZXJtaXR0ZWQs
IGNhcF9lZmZlY3RpdmU7CiAgICAgICAgaW50IGFyZ2MsIGVudmM7CiAgICAgICAgY2hhciAqIGZp
bGVuYW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbG9hZGVyLCBleGVjOwp9OwoKCgoKCnN0cnVj
dCBsaW51eF9iaW5mbXQgewogICAgICAgIHN0cnVjdCBsaW51eF9iaW5mbXQgKiBuZXh0OwogICAg
ICAgIHN0cnVjdCBtb2R1bGUgKm1vZHVsZTsKICAgICAgICBpbnQgKCpsb2FkX2JpbmFyeSkoc3Ry
dWN0IGxpbnV4X2JpbnBybSAqLCBzdHJ1Y3QgcHRfcmVncyAqIHJlZ3MpOwogICAgICAgIGludCAo
KmxvYWRfc2hsaWIpKHN0cnVjdCBmaWxlICopOwogICAgICAgIGludCAoKmNvcmVfZHVtcCkobG9u
ZyBzaWduciwgc3RydWN0IHB0X3JlZ3MgKiByZWdzLCBzdHJ1Y3QgZmlsZSAqIGZpbGUpOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgbWluX2NvcmVkdW1wOwp9OwoKZXh0ZXJuIGludCByZWdpc3Rlcl9i
aW5mbXRfUjc5YzUxMWZjKHN0cnVjdCBsaW51eF9iaW5mbXQgKik7CmV4dGVybiBpbnQgdW5yZWdp
c3Rlcl9iaW5mbXRfUjIzYTRjNDVjKHN0cnVjdCBsaW51eF9iaW5mbXQgKik7CgpleHRlcm4gaW50
IHByZXBhcmVfYmlucHJtX1IzNjE5YmIxNShzdHJ1Y3QgbGludXhfYmlucHJtICopOwpleHRlcm4g
dm9pZCByZW1vdmVfYXJnX3plcm9fUjQ0MjVlOWYxKHN0cnVjdCBsaW51eF9iaW5wcm0gKik7CmV4
dGVybiBpbnQgc2VhcmNoX2JpbmFyeV9oYW5kbGVyX1I5OGYxNzA4OChzdHJ1Y3QgbGludXhfYmlu
cHJtICosc3RydWN0IHB0X3JlZ3MgKik7CmV4dGVybiBpbnQgZmx1c2hfb2xkX2V4ZWNfUjljNDgy
YTlmKHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKTsKZXh0ZXJuIGludCBzZXR1cF9hcmdfcGFn
ZXNfUjA5MzQ4MDJiKHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKTsKZXh0ZXJuIGludCBjb3B5
X3N0cmluZ3MoaW50IGFyZ2MsY2hhciAqKiBhcmd2LHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0p
OwpleHRlcm4gaW50IGNvcHlfc3RyaW5nc19rZXJuZWxfUmQ4OGM1Njg3KGludCBhcmdjLGNoYXIg
KiogYXJndixzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKTsKZXh0ZXJuIHZvaWQgY29tcHV0ZV9j
cmVkc19SNzM5MjdkM2Yoc3RydWN0IGxpbnV4X2JpbnBybSAqYmlucHJtKTsKZXh0ZXJuIGludCBk
b19jb3JlZHVtcChsb25nIHNpZ25yLCBzdHJ1Y3QgcHRfcmVncyAqIHJlZ3MpOwpleHRlcm4gdm9p
ZCBzZXRfYmluZm10X1IxYWQwYTdjOShzdHJ1Y3QgbGludXhfYmluZm10ICpuZXcpOwojIDEwICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L3RocmVhZHMuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2tlcm5l
bC5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDEzICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3RpbWVzLmgiIDEKCgoKc3RydWN0IHRtcyB7CiAgICAgICAgY2xvY2tfdCB0bXNfdXRp
bWU7CiAgICAgICAgY2xvY2tfdCB0bXNfc3RpbWU7CiAgICAgICAgY2xvY2tfdCB0bXNfY3V0aW1l
OwogICAgICAgIGNsb2NrX3QgdG1zX2NzdGltZTsKfTsKIyAxNCAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90
aW1leC5oIiAxCiMgNTQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdGltZXguaCIKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wYXJhbS5oIiAxCiMgNTUgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvdGltZXguaCIgMgojIDE1MiAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC90aW1leC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3RpbWV4Lmgi
IDEKIyA5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS90aW1leC5oIgojIDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9hc20vdGltZXguaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL21zci5o
IiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3RpbWV4LmgiIDIKIyAzMiAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9hc20vdGltZXguaCIKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxv
bmcgY3ljbGVzX3Q7CgpleHRlcm4gY3ljbGVzX3QgY2FjaGVmbHVzaF90aW1lOwoKc3RhdGljIGlu
bGluZSBjeWNsZXNfdCBnZXRfY3ljbGVzICh2b2lkKQp7CgoKCiAgICAgICAgdW5zaWduZWQgbG9u
ZyBsb25nIHJldDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInJkdHNjIiA6ICI9QSIg
KHJldCkpOwogICAgICAgIHJldHVybiByZXQ7Cgp9CgpleHRlcm4gdW5zaWduZWQgbG9uZyBjcHVf
a2h6OwojIDE1MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90aW1leC5oIiAyCiMgMTYx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3RpbWV4LmgiCnN0cnVjdCB0aW1leCB7CiAg
ICAgICAgdW5zaWduZWQgaW50IG1vZGVzOwogICAgICAgIGxvbmcgb2Zmc2V0OwogICAgICAgIGxv
bmcgZnJlcTsKICAgICAgICBsb25nIG1heGVycm9yOwogICAgICAgIGxvbmcgZXN0ZXJyb3I7CiAg
ICAgICAgaW50IHN0YXR1czsKICAgICAgICBsb25nIGNvbnN0YW50OwogICAgICAgIGxvbmcgcHJl
Y2lzaW9uOwogICAgICAgIGxvbmcgdG9sZXJhbmNlOwoKCiAgICAgICAgc3RydWN0IHRpbWV2YWwg
dGltZTsKICAgICAgICBsb25nIHRpY2s7CgogICAgICAgIGxvbmcgcHBzZnJlcTsKICAgICAgICBs
b25nIGppdHRlcjsKICAgICAgICBpbnQgc2hpZnQ7CiAgICAgICAgbG9uZyBzdGFiaWw7CiAgICAg
ICAgbG9uZyBqaXRjbnQ7CiAgICAgICAgbG9uZyBjYWxjbnQ7CiAgICAgICAgbG9uZyBlcnJjbnQ7
CiAgICAgICAgbG9uZyBzdGJjbnQ7CgogICAgICAgIGludCA6MzI7IGludCA6MzI7IGludCA6MzI7
IGludCA6MzI7CiAgICAgICAgaW50IDozMjsgaW50IDozMjsgaW50IDozMjsgaW50IDozMjsKICAg
ICAgICBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOwp9OwojIDI1MyAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC90aW1leC5oIgpleHRlcm4gbG9uZyB0aWNrOwpleHRlcm4g
aW50IHRpY2thZGo7CgoKCgpleHRlcm4gaW50IHRpbWVfc3RhdGU7CmV4dGVybiBpbnQgdGltZV9z
dGF0dXM7CmV4dGVybiBsb25nIHRpbWVfb2Zmc2V0OwpleHRlcm4gbG9uZyB0aW1lX2NvbnN0YW50
OwpleHRlcm4gbG9uZyB0aW1lX3RvbGVyYW5jZTsKZXh0ZXJuIGxvbmcgdGltZV9wcmVjaXNpb247
CmV4dGVybiBsb25nIHRpbWVfbWF4ZXJyb3I7CmV4dGVybiBsb25nIHRpbWVfZXN0ZXJyb3I7Cgpl
eHRlcm4gbG9uZyB0aW1lX3BoYXNlOwpleHRlcm4gbG9uZyB0aW1lX2ZyZXE7CmV4dGVybiBsb25n
IHRpbWVfYWRqOwpleHRlcm4gbG9uZyB0aW1lX3JlZnRpbWU7CgpleHRlcm4gbG9uZyB0aW1lX2Fk
anVzdDsKCgpleHRlcm4gbG9uZyBwcHNfb2Zmc2V0OwpleHRlcm4gbG9uZyBwcHNfaml0dGVyOwpl
eHRlcm4gbG9uZyBwcHNfZnJlcTsKZXh0ZXJuIGxvbmcgcHBzX3N0YWJpbDsKZXh0ZXJuIGxvbmcg
cHBzX3ZhbGlkOwoKCmV4dGVybiBpbnQgcHBzX3NoaWZ0OwpleHRlcm4gbG9uZyBwcHNfaml0Y250
OwpleHRlcm4gbG9uZyBwcHNfY2FsY250OwpleHRlcm4gbG9uZyBwcHNfZXJyY250OwpleHRlcm4g
bG9uZyBwcHNfc3RiY250OwojIDE1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVk
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3JidHJlZS5oIiAxCiMgOTcg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcmJ0cmVlLmgiCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMQojIDk4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3JidHJlZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zdGRk
ZWYuaCIgMQojIDk5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3JidHJlZS5oIiAyCgp0
eXBlZGVmIHN0cnVjdCByYl9ub2RlX3MKewogICAgICAgIHN0cnVjdCByYl9ub2RlX3MgKiByYl9w
YXJlbnQ7CiAgICAgICAgaW50IHJiX2NvbG9yOwoKCiAgICAgICAgc3RydWN0IHJiX25vZGVfcyAq
IHJiX3JpZ2h0OwogICAgICAgIHN0cnVjdCByYl9ub2RlX3MgKiByYl9sZWZ0Owp9CnJiX25vZGVf
dDsKCnR5cGVkZWYgc3RydWN0IHJiX3Jvb3Rfcwp7CiAgICAgICAgc3RydWN0IHJiX25vZGVfcyAq
IHJiX25vZGU7Cn0KcmJfcm9vdF90OwoKCgoKCmV4dGVybiB2b2lkIHJiX2luc2VydF9jb2xvcihy
Yl9ub2RlX3QgKiwgcmJfcm9vdF90ICopOwpleHRlcm4gdm9pZCByYl9lcmFzZShyYl9ub2RlX3Qg
KiwgcmJfcm9vdF90ICopOwoKc3RhdGljIGlubGluZSB2b2lkIHJiX2xpbmtfbm9kZShyYl9ub2Rl
X3QgKiBub2RlLCByYl9ub2RlX3QgKiBwYXJlbnQsIHJiX25vZGVfdCAqKiByYl9saW5rKQp7CiAg
ICAgICAgbm9kZS0+cmJfcGFyZW50ID0gcGFyZW50OwogICAgICAgIG5vZGUtPnJiX2NvbG9yID0g
MDsKICAgICAgICBub2RlLT5yYl9sZWZ0ID0gbm9kZS0+cmJfcmlnaHQgPSAoKHZvaWQgKikwKTsK
CiAgICAgICAgKnJiX2xpbmsgPSBub2RlOwp9CiMgMTYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvc2NoZWQuaCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zeXN0ZW0u
aCIgMQojIDE4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zZW1hcGhvcmUuaCIgMQojIDE5ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2FzbS9wYWdlLmgiIDEKIyAyMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcHRyYWNlLmgiIDEKIyAyMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9hc20vbW11LmgiIDEKCgoKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB2b2lk
ICpzZWdtZW50czsKICAgICAgICB1bnNpZ25lZCBsb25nIGNwdXZhbGlkOwp9IG1tX2NvbnRleHRf
dDsKIyAyMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCgojIDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc21wLmgiIDEKIyA5ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L3NtcC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29u
ZmlnLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zbXAuaCIgMgojIDI0
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3R0eS5oIiAxCiMgMTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvdHR5LmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIg
MQojIDIwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R0eS5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAxCiMgMjEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvdHR5LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21ham9y
LmgiIDEKIyAxNzcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbWFqb3IuaCIKc3RhdGlj
IF9faW5saW5lX18gaW50IHNjc2lfYmxrX21ham9yKGludCBtKSB7CiAgICAgICAgcmV0dXJuICgo
KG0pID09IDggfHwgKChtKSA+PSA2NSAmJiAobSkgPD0gNzEpKSB8fCAobSkgPT0gMTEpOwp9CiMg
MTkwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21ham9yLmgiCnN0YXRpYyBfX2lubGlu
ZV9fIGludCBpZGVfYmxrX21ham9yKGludCBtKQp7CiAgICAgICAgcmV0dXJuICgobSkgPT0gMyB8
fCAobSkgPT0gMjIgfHwgKG0pID09IDMzIHx8IChtKSA9PSAzNCB8fCAobSkgPT0gNTYgfHwgKG0p
ID09IDU3IHx8IChtKSA9PSA4OCB8fCAobSkgPT0gODkgfHwgKG0pID09IDkwIHx8IChtKSA9PSA5
MSk7Cn0KIyAyMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90dHkuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdGVybWlvcy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC90ZXJtaW9zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS90ZXJt
aW9zLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS90ZXJtYml0cy5oIiAx
CgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIiAxCiMg
NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vdGVybWJpdHMuaCIgMgoKdHlwZWRlZiB1bnNp
Z25lZCBjaGFyIGNjX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IHNwZWVkX3Q7CnR5cGVkZWYgdW5z
aWduZWQgaW50IHRjZmxhZ190OwoKCnN0cnVjdCB0ZXJtaW9zIHsKICAgICAgICB0Y2ZsYWdfdCBj
X2lmbGFnOwogICAgICAgIHRjZmxhZ190IGNfb2ZsYWc7CiAgICAgICAgdGNmbGFnX3QgY19jZmxh
ZzsKICAgICAgICB0Y2ZsYWdfdCBjX2xmbGFnOwogICAgICAgIGNjX3QgY19saW5lOwogICAgICAg
IGNjX3QgY19jY1sxOV07Cn07CiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vdGVybWlv
cy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vaW9jdGxzLmgiIDEKCgoKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9pb2N0bC5oIiAxCiMgNSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9hc20vaW9jdGxzLmgiIDIKIyA2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2Fz
bS90ZXJtaW9zLmgiIDIKCnN0cnVjdCB3aW5zaXplIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB3
c19yb3c7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgd3NfY29sOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IHdzX3hwaXhlbDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB3c195cGl4ZWw7Cn07CgoKc3Ry
dWN0IHRlcm1pbyB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY19pZmxhZzsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCBjX29mbGFnOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNfY2ZsYWc7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgY19sZmxhZzsKICAgICAgICB1bnNpZ25lZCBjaGFyIGNfbGluZTsK
ICAgICAgICB1bnNpZ25lZCBjaGFyIGNfY2NbOF07Cn07CiMgNiAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC90ZXJtaW9zLmgiIDIKIyAyMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC90dHkuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHF1ZXVlLmgiIDEK
IyAyNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90dHkuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvdHR5X2RyaXZlci5oIiAxCiMgMTE4ICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L3R0eV9kcml2ZXIuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L2ZzLmgiIDEKIyAxMTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHR5X2Ry
aXZlci5oIiAyCgpzdHJ1Y3QgdHR5X2RyaXZlciB7CiAgICAgICAgaW50IG1hZ2ljOwogICAgICAg
IGNvbnN0IGNoYXIgKmRyaXZlcl9uYW1lOwogICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAg
ICAgaW50IG5hbWVfYmFzZTsKICAgICAgICBzaG9ydCBtYWpvcjsKICAgICAgICBzaG9ydCBtaW5v
cl9zdGFydDsKICAgICAgICBzaG9ydCBudW07CiAgICAgICAgc2hvcnQgdHlwZTsKICAgICAgICBz
aG9ydCBzdWJ0eXBlOwogICAgICAgIHN0cnVjdCB0ZXJtaW9zIGluaXRfdGVybWlvczsKICAgICAg
ICBpbnQgZmxhZ3M7CiAgICAgICAgaW50ICpyZWZjb3VudDsKICAgICAgICBzdHJ1Y3QgcHJvY19k
aXJfZW50cnkgKnByb2NfZW50cnk7CiAgICAgICAgc3RydWN0IHR0eV9kcml2ZXIgKm90aGVyOwoK
CgoKICAgICAgICBzdHJ1Y3QgdHR5X3N0cnVjdCAqKnRhYmxlOwogICAgICAgIHN0cnVjdCB0ZXJt
aW9zICoqdGVybWlvczsKICAgICAgICBzdHJ1Y3QgdGVybWlvcyAqKnRlcm1pb3NfbG9ja2VkOwog
ICAgICAgIHZvaWQgKmRyaXZlcl9zdGF0ZTsKCgoKCgogICAgICAgIGludCAoKm9wZW4pKHN0cnVj
dCB0dHlfc3RydWN0ICogdHR5LCBzdHJ1Y3QgZmlsZSAqIGZpbHApOwogICAgICAgIHZvaWQgKCpj
bG9zZSkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0cnVjdCBmaWxlICogZmlscCk7CiAgICAg
ICAgaW50ICgqd3JpdGUpKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5LCBpbnQgZnJvbV91c2VyLAog
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgY291bnQp
OwogICAgICAgIHZvaWQgKCpwdXRfY2hhcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgdW5zaWdu
ZWQgY2hhciBjaCk7CiAgICAgICAgdm9pZCAoKmZsdXNoX2NoYXJzKShzdHJ1Y3QgdHR5X3N0cnVj
dCAqdHR5KTsKICAgICAgICBpbnQgKCp3cml0ZV9yb29tKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5
KTsKICAgICAgICBpbnQgKCpjaGFyc19pbl9idWZmZXIpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkp
OwogICAgICAgIGludCAoKmlvY3RsKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgZmls
ZSAqIGZpbGUsCiAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQg
bG9uZyBhcmcpOwogICAgICAgIHZvaWQgKCpzZXRfdGVybWlvcykoc3RydWN0IHR0eV9zdHJ1Y3Qg
KnR0eSwgc3RydWN0IHRlcm1pb3MgKiBvbGQpOwogICAgICAgIHZvaWQgKCp0aHJvdHRsZSkoc3Ry
dWN0IHR0eV9zdHJ1Y3QgKiB0dHkpOwogICAgICAgIHZvaWQgKCp1bnRocm90dGxlKShzdHJ1Y3Qg
dHR5X3N0cnVjdCAqIHR0eSk7CiAgICAgICAgdm9pZCAoKnN0b3ApKHN0cnVjdCB0dHlfc3RydWN0
ICp0dHkpOwogICAgICAgIHZvaWQgKCpzdGFydCkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAg
ICAgICAgdm9pZCAoKmhhbmd1cCkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgdm9p
ZCAoKmJyZWFrX2N0bCkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgaW50IHN0YXRlKTsKICAgICAg
ICB2b2lkICgqZmx1c2hfYnVmZmVyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICB2
b2lkICgqc2V0X2xkaXNjKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICB2b2lkICgq
d2FpdF91bnRpbF9zZW50KShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBpbnQgdGltZW91dCk7CiAg
ICAgICAgdm9pZCAoKnNlbmRfeGNoYXIpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGNoYXIgY2gp
OwogICAgICAgIGludCAoKnJlYWRfcHJvYykoY2hhciAqcGFnZSwgY2hhciAqKnN0YXJ0LCBvZmZf
dCBvZmYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvdW50LCBpbnQgKmVvZiwgdm9p
ZCAqZGF0YSk7CiAgICAgICAgaW50ICgqd3JpdGVfcHJvYykoc3RydWN0IGZpbGUgKmZpbGUsIGNv
bnN0IGNoYXIgKmJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n
IGNvdW50LCB2b2lkICpkYXRhKTsKCgoKCiAgICAgICAgc3RydWN0IHR0eV9kcml2ZXIgKm5leHQ7
CiAgICAgICAgc3RydWN0IHR0eV9kcml2ZXIgKnByZXY7Cn07CiMgMjUgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvdHR5LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3R0eV9sZGlzYy5oIiAxCiMgMTAwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R0eV9s
ZGlzYy5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMQojIDEwMSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90dHlfbGRpc2MuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvd2FpdC5oIiAxCiMgMTAyICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L3R0eV9sZGlzYy5oIiAyCgpzdHJ1Y3QgdHR5X2xkaXNjIHsKICAgICAgICBpbnQg
bWFnaWM7CiAgICAgICAgY2hhciAqbmFtZTsKICAgICAgICBpbnQgbnVtOwogICAgICAgIGludCBm
bGFnczsKCgoKICAgICAgICBpbnQgKCpvcGVuKShzdHJ1Y3QgdHR5X3N0cnVjdCAqKTsKICAgICAg
ICB2b2lkICgqY2xvc2UpKHN0cnVjdCB0dHlfc3RydWN0ICopOwogICAgICAgIHZvaWQgKCpmbHVz
aF9idWZmZXIpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIHNzaXplX3QgKCpjaGFy
c19pbl9idWZmZXIpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIHNzaXplX3QgKCpy
ZWFkKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxlLAogICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICogYnVmLCBzaXplX3QgbnIpOwogICAgICAg
IHNzaXplX3QgKCp3cml0ZSkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0cnVjdCBmaWxlICog
ZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBidWYs
IHNpemVfdCBucik7CiAgICAgICAgaW50ICgqaW9jdGwpKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5
LCBzdHJ1Y3QgZmlsZSAqIGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZyk7CiAgICAgICAgdm9pZCAoKnNldF90ZXJtaW9zKShz
dHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgdGVybWlvcyAqIG9sZCk7CiAgICAgICAgdW5z
aWduZWQgaW50ICgqcG9sbCkoc3RydWN0IHR0eV9zdHJ1Y3QgKiwgc3RydWN0IGZpbGUgKiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcG9sbF90YWJsZV9zdHJ1Y3QgKik7CgoK
CgogICAgICAgIHZvaWQgKCpyZWNlaXZlX2J1Zikoc3RydWN0IHR0eV9zdHJ1Y3QgKiwgY29uc3Qg
dW5zaWduZWQgY2hhciAqY3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpm
cCwgaW50IGNvdW50KTsKICAgICAgICBpbnQgKCpyZWNlaXZlX3Jvb20pKHN0cnVjdCB0dHlfc3Ry
dWN0ICopOwogICAgICAgIHZvaWQgKCp3cml0ZV93YWtldXApKHN0cnVjdCB0dHlfc3RydWN0ICop
Owp9OwojIDI2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R0eS5oIiAyCgojIDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAxCiMgMjggIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvdHR5LmgiIDIKIyA1OSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC90dHkuaCIKc3RydWN0IHNjcmVlbl9pbmZvX1JjN2Q4ZDRkNiB7CiAgICAgICAgdW5zaWduZWQg
Y2hhciBvcmlnX3g7CiAgICAgICAgdW5zaWduZWQgY2hhciBvcmlnX3k7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgZG9udHVzZTE7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgb3JpZ192aWRlb19wYWdl
OwogICAgICAgIHVuc2lnbmVkIGNoYXIgb3JpZ192aWRlb19tb2RlOwogICAgICAgIHVuc2lnbmVk
IGNoYXIgb3JpZ192aWRlb19jb2xzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHVudXNlZDI7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgb3JpZ192aWRlb19lZ2FfYng7CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgdW51c2VkMzsKICAgICAgICB1bnNpZ25lZCBjaGFyIG9yaWdfdmlkZW9fbGluZXM7CiAg
ICAgICAgdW5zaWduZWQgY2hhciBvcmlnX3ZpZGVvX2lzVkdBOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IG9yaWdfdmlkZW9fcG9pbnRzOwoKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgbGZiX3dpZHRo
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IGxmYl9oZWlnaHQ7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgbGZiX2RlcHRoOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbGZiX2Jhc2U7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBsZmJfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkb250dXNlMiwgZG9u
dHVzZTM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbGZiX2xpbmVsZW5ndGg7CiAgICAgICAgdW5z
aWduZWQgY2hhciByZWRfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJlZF9wb3M7CiAgICAg
ICAgdW5zaWduZWQgY2hhciBncmVlbl9zaXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZ3JlZW5f
cG9zOwogICAgICAgIHVuc2lnbmVkIGNoYXIgYmx1ZV9zaXplOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgYmx1ZV9wb3M7CiAgICAgICAgdW5zaWduZWQgY2hhciByc3ZkX3NpemU7CiAgICAgICAgdW5z
aWduZWQgY2hhciByc3ZkX3BvczsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB2ZXNhcG1fc2VnOwog
ICAgICAgIHVuc2lnbmVkIHNob3J0IHZlc2FwbV9vZmY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
cGFnZXM7Cgp9OwoKZXh0ZXJuIHN0cnVjdCBzY3JlZW5faW5mb19SYzdkOGQ0ZDYgc2NyZWVuX2lu
Zm9fUmM3ZDhkNGQ2OwojIDEzOSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90dHkuaCIK
c3RydWN0IHR0eV9mbGlwX2J1ZmZlciB7CiAgICAgICAgc3RydWN0IHRxX3N0cnVjdCB0cXVldWU7
CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBwdHlfc2VtOwogICAgICAgIGNoYXIgKmNoYXJfYnVm
X3B0cjsKICAgICAgICB1bnNpZ25lZCBjaGFyICpmbGFnX2J1Zl9wdHI7CiAgICAgICAgaW50IGNv
dW50OwogICAgICAgIGludCBidWZfbnVtOwogICAgICAgIHVuc2lnbmVkIGNoYXIgY2hhcl9idWZb
Mio1MTJdOwogICAgICAgIGNoYXIgZmxhZ19idWZbMio1MTJdOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgc2xvcFs0XTsKfTsKIyAyNTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHR5Lmgi
CnN0cnVjdCB0dHlfc3RydWN0IHsKICAgICAgICBpbnQgbWFnaWM7CiAgICAgICAgc3RydWN0IHR0
eV9kcml2ZXIgZHJpdmVyOwogICAgICAgIHN0cnVjdCB0dHlfbGRpc2MgbGRpc2M7CiAgICAgICAg
c3RydWN0IHRlcm1pb3MgKnRlcm1pb3MsICp0ZXJtaW9zX2xvY2tlZDsKICAgICAgICBpbnQgcGdy
cDsKICAgICAgICBpbnQgc2Vzc2lvbjsKICAgICAgICBrZGV2X3QgZGV2aWNlOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgaW50IGNvdW50OwogICAgICAgIHN0cnVjdCB3aW5z
aXplIHdpbnNpemU7CiAgICAgICAgdW5zaWduZWQgY2hhciBzdG9wcGVkOjEsIGh3X3N0b3BwZWQ6
MSwgZmxvd19zdG9wcGVkOjEsIHBhY2tldDoxOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbG93X2xh
dGVuY3k6MSwgd2FybmVkOjE7CiAgICAgICAgdW5zaWduZWQgY2hhciBjdHJsX3N0YXR1czsKCiAg
ICAgICAgc3RydWN0IHR0eV9zdHJ1Y3QgKmxpbms7CiAgICAgICAgc3RydWN0IGZhc3luY19zdHJ1
Y3QgKmZhc3luYzsKICAgICAgICBzdHJ1Y3QgdHR5X2ZsaXBfYnVmZmVyIGZsaXA7CiAgICAgICAg
aW50IG1heF9mbGlwX2NudDsKICAgICAgICBpbnQgYWx0X3NwZWVkOwogICAgICAgIHdhaXRfcXVl
dWVfaGVhZF90IHdyaXRlX3dhaXQ7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgcmVhZF93YWl0
OwogICAgICAgIHN0cnVjdCB0cV9zdHJ1Y3QgdHFfaGFuZ3VwOwogICAgICAgIHZvaWQgKmRpc2Nf
ZGF0YTsKICAgICAgICB2b2lkICpkcml2ZXJfZGF0YTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFk
IHR0eV9maWxlczsKCgoKCgoKCiAgICAgICAgdW5zaWduZWQgaW50IGNvbHVtbjsKICAgICAgICB1
bnNpZ25lZCBjaGFyIGxuZXh0OjEsIGVyYXNpbmc6MSwgcmF3OjEsIHJlYWxfcmF3OjEsIGljYW5v
bjoxOwogICAgICAgIHVuc2lnbmVkIGNoYXIgY2xvc2luZzoxOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IG1pbmltdW1fdG9fd2FrZTsKICAgICAgICB1bnNpZ25lZCBvdmVycnVuX3RpbWU7CiAgICAg
ICAgaW50IG51bV9vdmVycnVuOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcHJvY2Vzc19jaGFyX21h
cFsyNTYvKDgqc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKV07CiAgICAgICAgY2hhciAqcmVhZF9idWY7
CiAgICAgICAgaW50IHJlYWRfaGVhZDsKICAgICAgICBpbnQgcmVhZF90YWlsOwogICAgICAgIGlu
dCByZWFkX2NudDsKICAgICAgICB1bnNpZ25lZCBsb25nIHJlYWRfZmxhZ3NbNDA5Ni8oOCpzaXpl
b2YodW5zaWduZWQgbG9uZykpXTsKICAgICAgICBpbnQgY2Fub25fZGF0YTsKICAgICAgICB1bnNp
Z25lZCBsb25nIGNhbm9uX2hlYWQ7CiAgICAgICAgdW5zaWduZWQgaW50IGNhbm9uX2NvbHVtbjsK
ICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGF0b21pY19yZWFkOwogICAgICAgIHN0cnVjdCBzZW1h
cGhvcmUgYXRvbWljX3dyaXRlOwogICAgICAgIHNwaW5sb2NrX3QgcmVhZF9sb2NrOwoKICAgICAg
ICBzdHJ1Y3QgdHFfc3RydWN0IFNBS190cTsKfTsKIyAzNDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvdHR5LmgiCmV4dGVybiB2b2lkIHR0eV93cml0ZV9mbHVzaChzdHJ1Y3QgdHR5X3N0
cnVjdCAqKTsKCmV4dGVybiBzdHJ1Y3QgdGVybWlvcyB0dHlfc3RkX3Rlcm1pb3NfUjg5YWM1MjU0
OwpleHRlcm4gc3RydWN0IHR0eV9zdHJ1Y3QgKiByZWRpcmVjdDsKZXh0ZXJuIHN0cnVjdCB0dHlf
bGRpc2MgbGRpc2NzW107CmV4dGVybiBpbnQgZmdfY29uc29sZV9SNGU2ZThlYTcsIGxhc3RfY29u
c29sZSwgd2FudF9jb25zb2xlOwoKZXh0ZXJuIGludCBrbXNnX3JlZGlyZWN0OwoKZXh0ZXJuIHZv
aWQgY29uX2luaXQodm9pZCk7CmV4dGVybiB2b2lkIGNvbnNvbGVfaW5pdCh2b2lkKTsKCmV4dGVy
biBpbnQgbHBfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBwdHlfaW5pdCh2b2lkKTsKZXh0ZXJuIHZv
aWQgdHR5X2luaXQodm9pZCk7CmV4dGVybiBpbnQgbXhzZXJfaW5pdCh2b2lkKTsKZXh0ZXJuIGlu
dCBtb3hhX2luaXQodm9pZCk7CmV4dGVybiBpbnQgaXAyX2luaXQodm9pZCk7CmV4dGVybiBpbnQg
cGN4ZV9pbml0KHZvaWQpOwpleHRlcm4gaW50IHBjX2luaXQodm9pZCk7CmV4dGVybiBpbnQgdmNz
X2luaXQodm9pZCk7CmV4dGVybiBpbnQgcnBfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBjeV9pbml0
KHZvaWQpOwpleHRlcm4gaW50IHN0bF9pbml0KHZvaWQpOwpleHRlcm4gaW50IHN0bGlfaW5pdCh2
b2lkKTsKZXh0ZXJuIGludCBzcGVjaWFsaXhfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBlc3BzZXJp
YWxfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBtYWNzZXJpYWxfaW5pdCh2b2lkKTsKZXh0ZXJuIGlu
dCBhMjIzMmJvYXJkX2luaXQodm9pZCk7CgpleHRlcm4gaW50IHR0eV9wYXJhbm9pYV9jaGVjayhz
dHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBrZGV2X3QgZGV2aWNlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICpyb3V0aW5lKTsKZXh0ZXJuIGNoYXIgKnR0eV9uYW1lKHN0
cnVjdCB0dHlfc3RydWN0ICp0dHksIGNoYXIgKmJ1Zik7CmV4dGVybiB2b2lkIHR0eV93YWl0X3Vu
dGlsX3NlbnRfUjk4Mzk1N2Q2KHN0cnVjdCB0dHlfc3RydWN0ICogdHR5LCBsb25nIHRpbWVvdXQp
OwpleHRlcm4gaW50IHR0eV9jaGVja19jaGFuZ2VfUjcwYTQ5ZjA2KHN0cnVjdCB0dHlfc3RydWN0
ICogdHR5KTsKZXh0ZXJuIHZvaWQgc3RvcF90dHkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHkpOwpl
eHRlcm4gdm9pZCBzdGFydF90dHkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHkpOwpleHRlcm4gaW50
IHR0eV9yZWdpc3Rlcl9sZGlzY19SMDZkNmMwNjMoaW50IGRpc2MsIHN0cnVjdCB0dHlfbGRpc2Mg
Km5ld19sZGlzYyk7CmV4dGVybiBpbnQgdHR5X3JlZ2lzdGVyX2RyaXZlcl9SNGU1MWM3ZTYoc3Ry
dWN0IHR0eV9kcml2ZXIgKmRyaXZlcik7CmV4dGVybiBpbnQgdHR5X3VucmVnaXN0ZXJfZHJpdmVy
X1IwMWU0M2M2OChzdHJ1Y3QgdHR5X2RyaXZlciAqZHJpdmVyKTsKZXh0ZXJuIHZvaWQgdHR5X3Jl
Z2lzdGVyX2RldmZzX1JjYTE1MmNlZSAoc3RydWN0IHR0eV9kcml2ZXIgKmRyaXZlciwgdW5zaWdu
ZWQgaW50IGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1p
bm9yKTsKZXh0ZXJuIHZvaWQgdHR5X3VucmVnaXN0ZXJfZGV2ZnNfUjI2ZGEzM2RmIChzdHJ1Y3Qg
dHR5X2RyaXZlciAqZHJpdmVyLCB1bnNpZ25lZCBtaW5vcik7CmV4dGVybiBpbnQgdHR5X3JlYWRf
cmF3X2RhdGEoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgdW5zaWduZWQgY2hhciAqYnVmcCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnVmbGVuKTsKZXh0ZXJuIHZvaWQgdHR5X3dy
aXRlX21lc3NhZ2Uoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgY2hhciAqbXNnKTsKCmV4dGVybiBp
bnQgaXNfb3JwaGFuZWRfcGdycChpbnQgcGdycCk7CmV4dGVybiBpbnQgaXNfaWdub3JlZChpbnQg
c2lnKTsKZXh0ZXJuIGludCB0dHlfc2lnbmFsKGludCBzaWcsIHN0cnVjdCB0dHlfc3RydWN0ICp0
dHkpOwpleHRlcm4gdm9pZCB0dHlfaGFuZ3VwX1I0ZjQxMzZjZihzdHJ1Y3QgdHR5X3N0cnVjdCAq
IHR0eSk7CmV4dGVybiB2b2lkIHR0eV92aGFuZ3VwKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5KTsK
ZXh0ZXJuIHZvaWQgdHR5X3VuaGFuZ3VwKHN0cnVjdCBmaWxlICpmaWxwKTsKZXh0ZXJuIGludCB0
dHlfaHVuZ191cF9wX1IxODZiM2Q0OChzdHJ1Y3QgZmlsZSAqIGZpbHApOwpleHRlcm4gdm9pZCBk
b19TQUtfUmM1MDY2MDc4KHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwpleHRlcm4gdm9pZCBkaXNh
c3NvY2lhdGVfY3R0eShpbnQgcHJpdik7CmV4dGVybiB2b2lkIHR0eV9mbGlwX2J1ZmZlcl9wdXNo
X1I0NTg5ZWMyMChzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKZXh0ZXJuIGludCB0dHlfZ2V0X2Jh
dWRfcmF0ZV9SODZmMmE1ZDYoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CgoKZXh0ZXJuIHN0cnVj
dCB0dHlfbGRpc2MgdHR5X2xkaXNjX05fVFRZOwoKCmV4dGVybiBpbnQgbl90dHlfaW9jdGxfUjUz
ZDg3MjIxKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5LCBzdHJ1Y3QgZmlsZSAqIGZpbGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpOwoK
CgpleHRlcm4gdm9pZCBzZXJpYWxfY29uc29sZV9pbml0KHZvaWQpOwoKCgpleHRlcm4gaW50IHBj
eGVfb3BlbihzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgZmlsZSAqZmlscCk7CgoKCmV4
dGVybiB2b2lkIGNvbnNvbGVfcHJpbnRfUmI3MTRhOTgxKGNvbnN0IGNoYXIgKik7CgoKCmV4dGVy
biBpbnQgdnRfaW9jdGwoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKiBmaWxl
LAogICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJn
KTsKIyAyNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zZW0uaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvaXBjLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L3R5cGVzLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2lwYy5oIiAy
CgoKCgpzdHJ1Y3QgaXBjX3Blcm0KewogICAgICAgIF9fa2VybmVsX2tleV90IGtleTsKICAgICAg
ICBfX2tlcm5lbF91aWRfdCB1aWQ7CiAgICAgICAgX19rZXJuZWxfZ2lkX3QgZ2lkOwogICAgICAg
IF9fa2VybmVsX3VpZF90IGN1aWQ7CiAgICAgICAgX19rZXJuZWxfZ2lkX3QgY2dpZDsKICAgICAg
ICBfX2tlcm5lbF9tb2RlX3QgbW9kZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzZXE7Cn07CgoK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9pcGNidWYuaCIgMQojIDE0ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2FzbS9pcGNidWYuaCIKc3RydWN0IGlwYzY0X3Blcm0KewogICAgICAg
IF9fa2VybmVsX2tleV90IGtleTsKICAgICAgICBfX2tlcm5lbF91aWQzMl90IHVpZDsKICAgICAg
ICBfX2tlcm5lbF9naWQzMl90IGdpZDsKICAgICAgICBfX2tlcm5lbF91aWQzMl90IGN1aWQ7CiAg
ICAgICAgX19rZXJuZWxfZ2lkMzJfdCBjZ2lkOwogICAgICAgIF9fa2VybmVsX21vZGVfdCBtb2Rl
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IF9fcGFkMTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBz
ZXE7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgX19wYWQyOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
X191bnVzZWQxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQyOwp9OwojIDIyICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2lwYy5oIiAyCiMgNTcgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvaXBjLmgiCnN0cnVjdCBrZXJuX2lwY19wZXJtCnsKICAgICAgICBrZXlfdCBr
ZXk7CiAgICAgICAgdWlkX3QgdWlkOwogICAgICAgIGdpZF90IGdpZDsKICAgICAgICB1aWRfdCBj
dWlkOwogICAgICAgIGdpZF90IGNnaWQ7CiAgICAgICAgbW9kZV90IG1vZGU7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBzZXE7Cn07CiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zZW0u
aCIgMgojIDIzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NlbS5oIgpzdHJ1Y3Qgc2Vt
aWRfZHMgewogICAgICAgIHN0cnVjdCBpcGNfcGVybSBzZW1fcGVybTsKICAgICAgICBfX2tlcm5l
bF90aW1lX3Qgc2VtX290aW1lOwogICAgICAgIF9fa2VybmVsX3RpbWVfdCBzZW1fY3RpbWU7CiAg
ICAgICAgc3RydWN0IHNlbSAqc2VtX2Jhc2U7CiAgICAgICAgc3RydWN0IHNlbV9xdWV1ZSAqc2Vt
X3BlbmRpbmc7CiAgICAgICAgc3RydWN0IHNlbV9xdWV1ZSAqKnNlbV9wZW5kaW5nX2xhc3Q7CiAg
ICAgICAgc3RydWN0IHNlbV91bmRvICp1bmRvOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNlbV9u
c2VtczsKfTsKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NlbWJ1Zi5oIiAxCiMg
MTQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NlbWJ1Zi5oIgpzdHJ1Y3Qgc2VtaWQ2NF9k
cyB7CiAgICAgICAgc3RydWN0IGlwYzY0X3Blcm0gc2VtX3Blcm07CiAgICAgICAgX19rZXJuZWxf
dGltZV90IHNlbV9vdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMTsKICAgICAg
ICBfX2tlcm5lbF90aW1lX3Qgc2VtX2N0aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVz
ZWQyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VtX25zZW1zOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgX191bnVzZWQzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQ0Owp9OwojIDM2ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NlbS5oIiAyCgoKc3RydWN0IHNlbWJ1ZiB7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgc2VtX251bTsKICAgICAgICBzaG9ydCBzZW1fb3A7CiAgICAg
ICAgc2hvcnQgc2VtX2ZsZzsKfTsKCgp1bmlvbiBzZW11biB7CiAgICAgICAgaW50IHZhbDsKICAg
ICAgICBzdHJ1Y3Qgc2VtaWRfZHMgKmJ1ZjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCAqYXJyYXk7
CiAgICAgICAgc3RydWN0IHNlbWluZm8gKl9fYnVmOwogICAgICAgIHZvaWQgKl9fcGFkOwp9OwoK
c3RydWN0IHNlbWluZm8gewogICAgICAgIGludCBzZW1tYXA7CiAgICAgICAgaW50IHNlbW1uaTsK
ICAgICAgICBpbnQgc2VtbW5zOwogICAgICAgIGludCBzZW1tbnU7CiAgICAgICAgaW50IHNlbW1z
bDsKICAgICAgICBpbnQgc2Vtb3BtOwogICAgICAgIGludCBzZW11bWU7CiAgICAgICAgaW50IHNl
bXVzejsKICAgICAgICBpbnQgc2Vtdm14OwogICAgICAgIGludCBzZW1hZW07Cn07CiMgODIgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2VtLmgiCnN0cnVjdCBzZW0gewogICAgICAgIGlu
dCBzZW12YWw7CiAgICAgICAgaW50IHNlbXBpZDsKfTsKCgpzdHJ1Y3Qgc2VtX2FycmF5IHsKICAg
ICAgICBzdHJ1Y3Qga2Vybl9pcGNfcGVybSBzZW1fcGVybTsKICAgICAgICB0aW1lX3Qgc2VtX290
aW1lOwogICAgICAgIHRpbWVfdCBzZW1fY3RpbWU7CiAgICAgICAgc3RydWN0IHNlbSAqc2VtX2Jh
c2U7CiAgICAgICAgc3RydWN0IHNlbV9xdWV1ZSAqc2VtX3BlbmRpbmc7CiAgICAgICAgc3RydWN0
IHNlbV9xdWV1ZSAqKnNlbV9wZW5kaW5nX2xhc3Q7CiAgICAgICAgc3RydWN0IHNlbV91bmRvICp1
bmRvOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VtX25zZW1zOwp9OwoKCnN0cnVjdCBzZW1fcXVl
dWUgewogICAgICAgIHN0cnVjdCBzZW1fcXVldWUgKiBuZXh0OwogICAgICAgIHN0cnVjdCBzZW1f
cXVldWUgKiogcHJldjsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QqIHNsZWVwZXI7CiAgICAg
ICAgc3RydWN0IHNlbV91bmRvICogdW5kbzsKICAgICAgICBpbnQgcGlkOwogICAgICAgIGludCBz
dGF0dXM7CiAgICAgICAgc3RydWN0IHNlbV9hcnJheSAqIHNtYTsKICAgICAgICBpbnQgaWQ7CiAg
ICAgICAgc3RydWN0IHNlbWJ1ZiAqIHNvcHM7CiAgICAgICAgaW50IG5zb3BzOwogICAgICAgIGlu
dCBhbHRlcjsKfTsKCgoKCnN0cnVjdCBzZW1fdW5kbyB7CiAgICAgICAgc3RydWN0IHNlbV91bmRv
ICogcHJvY19uZXh0OwogICAgICAgIHN0cnVjdCBzZW1fdW5kbyAqIGlkX25leHQ7CiAgICAgICAg
aW50IHNlbWlkOwogICAgICAgIHNob3J0ICogc2VtYWRqOwp9OwoKIF9fYXR0cmlidXRlX18oKHJl
Z3Bhcm0oMCkpKSBsb25nIHN5c19zZW1nZXQgKGtleV90IGtleSwgaW50IG5zZW1zLCBpbnQgc2Vt
ZmxnKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zZW1vcCAoaW50IHNl
bWlkLCBzdHJ1Y3Qgc2VtYnVmICpzb3BzLCB1bnNpZ25lZCBuc29wcyk7CiBfX2F0dHJpYnV0ZV9f
KChyZWdwYXJtKDApKSkgbG9uZyBzeXNfc2VtY3RsIChpbnQgc2VtaWQsIGludCBzZW1udW0sIGlu
dCBjbWQsIHVuaW9uIHNlbXVuIGFyZyk7CiMgMjYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2lnbmFsLmgi
IDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zaWduYWwuaCIgMQoKCgojIDEg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDUgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvYXNtL3NpZ25hbC5oIiAyCgoKc3RydWN0IHNpZ2luZm87CiMgMTcgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NpZ25hbC5oIgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgb2xk
X3NpZ3NldF90OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lnWyg2
NCAvIDMyKV07Cn0gc2lnc2V0X3Q7CiMgMTI5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9z
aWduYWwuaCIKdHlwZWRlZiB2b2lkICgqX19zaWdoYW5kbGVyX3QpKGludCk7CgoKCgoKCnN0cnVj
dCBvbGRfc2lnYWN0aW9uIHsKICAgICAgICBfX3NpZ2hhbmRsZXJfdCBzYV9oYW5kbGVyOwogICAg
ICAgIG9sZF9zaWdzZXRfdCBzYV9tYXNrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2FfZmxhZ3M7
CiAgICAgICAgdm9pZCAoKnNhX3Jlc3RvcmVyKSh2b2lkKTsKfTsKCnN0cnVjdCBzaWdhY3Rpb24g
ewogICAgICAgIF9fc2lnaGFuZGxlcl90IHNhX2hhbmRsZXI7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzYV9mbGFnczsKICAgICAgICB2b2lkICgqc2FfcmVzdG9yZXIpKHZvaWQpOwogICAgICAgIHNp
Z3NldF90IHNhX21hc2s7Cn07CgpzdHJ1Y3Qga19zaWdhY3Rpb24gewogICAgICAgIHN0cnVjdCBz
aWdhY3Rpb24gc2E7Cn07CiMgMTcxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zaWduYWwu
aCIKdHlwZWRlZiBzdHJ1Y3Qgc2lnYWx0c3RhY2sgewogICAgICAgIHZvaWQgKnNzX3NwOwogICAg
ICAgIGludCBzc19mbGFnczsKICAgICAgICBzaXplX3Qgc3Nfc2l6ZTsKfSBzdGFja190OwoKCiMg
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2lnY29udGV4dC5oIiAxCiMgMTc5ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2FzbS9zaWduYWwuaCIgMgoKCgpzdGF0aWMgX19pbmxpbmVfXyB2
b2lkIHNpZ2FkZHNldChzaWdzZXRfdCAqc2V0LCBpbnQgX3NpZykKewogICAgICAgIF9fYXNtX18o
ImJ0c2wgJTEsJTAiIDogIj1tIigqc2V0KSA6ICJJciIoX3NpZyAtIDEpIDogImNjIik7Cn0KCnN0
YXRpYyBfX2lubGluZV9fIHZvaWQgc2lnZGVsc2V0KHNpZ3NldF90ICpzZXQsIGludCBfc2lnKQp7
CiAgICAgICAgX19hc21fXygiYnRybCAlMSwlMCIgOiAiPW0iKCpzZXQpIDogIklyIihfc2lnIC0g
MSkgOiAiY2MiKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fY29uc3Rfc2lnaXNtZW1iZXIo
c2lnc2V0X3QgKnNldCwgaW50IF9zaWcpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIHNpZyA9IF9z
aWcgLSAxOwogICAgICAgIHJldHVybiAxICYgKHNldC0+c2lnW3NpZyAvIDMyXSA+PiAoc2lnICUg
MzIpKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IF9fZ2VuX3NpZ2lzbWVtYmVyKHNpZ3NldF90
ICpzZXQsIGludCBfc2lnKQp7CiAgICAgICAgaW50IHJldDsKICAgICAgICBfX2FzbV9fKCJidGwg
JTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDogIj1yIihyZXQpIDogIm0iKCpz
ZXQpLCAiSXIiKF9zaWctMSkgOiAiY2MiKTsKICAgICAgICByZXR1cm4gcmV0Owp9CiMgMjEzICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zaWduYWwuaCIKc3RhdGljIF9faW5saW5lX18gaW50
IHNpZ2ZpbmRpbndvcmQodW5zaWduZWQgbG9uZyB3b3JkKQp7CiAgICAgICAgX19hc21fXygiYnNm
bCAlMSwlMCIgOiAiPXIiKHdvcmQpIDogInJtIih3b3JkKSA6ICJjYyIpOwogICAgICAgIHJldHVy
biB3b3JkOwp9CiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zaWduYWwuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NpZ2luZm8uaCIgMQoKCgojIDEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvYXNtL3NpZ2luZm8uaCIgMgoKCgp0eXBlZGVmIHVuaW9uIHNpZ3ZhbCB7CiAgICAgICAg
aW50IHNpdmFsX2ludDsKICAgICAgICB2b2lkICpzaXZhbF9wdHI7Cn0gc2lndmFsX3Q7CgoKCgp0
eXBlZGVmIHN0cnVjdCBzaWdpbmZvIHsKICAgICAgICBpbnQgc2lfc2lnbm87CiAgICAgICAgaW50
IHNpX2Vycm5vOwogICAgICAgIGludCBzaV9jb2RlOwoKICAgICAgICB1bmlvbiB7CiAgICAgICAg
ICAgICAgICBpbnQgX3BhZFsoKDEyOC9zaXplb2YoaW50KSkgLSAzKV07CgoKICAgICAgICAgICAg
ICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBpZF90IF9waWQ7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHVpZF90IF91aWQ7CiAgICAgICAgICAgICAgICB9IF9raWxsOwoKCiAg
ICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgX3RpbWVyMTsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF90aW1lcjI7
CiAgICAgICAgICAgICAgICB9IF90aW1lcjsKCgogICAgICAgICAgICAgICAgc3RydWN0IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgcGlkX3QgX3BpZDsKICAgICAgICAgICAgICAgICAgICAgICAg
dWlkX3QgX3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgc2lndmFsX3QgX3NpZ3ZhbDsKICAg
ICAgICAgICAgICAgIH0gX3J0OwoKCiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg
ICAgICAgICAgICAgICBwaWRfdCBfcGlkOwogICAgICAgICAgICAgICAgICAgICAgICB1aWRfdCBf
dWlkOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgX3N0YXR1czsKICAgICAgICAgICAgICAg
ICAgICAgICAgY2xvY2tfdCBfdXRpbWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrX3Qg
X3N0aW1lOwogICAgICAgICAgICAgICAgfSBfc2lnY2hsZDsKCgogICAgICAgICAgICAgICAgc3Ry
dWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqX2FkZHI7CiAgICAgICAgICAgICAg
ICB9IF9zaWdmYXVsdDsKCgogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IF9iYW5kOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgX2ZkOwogICAg
ICAgICAgICAgICAgfSBfc2lncG9sbDsKICAgICAgICB9IF9zaWZpZWxkczsKfSBzaWdpbmZvX3Q7
CiMgMTk5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zaWdpbmZvLmgiCnR5cGVkZWYgc3Ry
dWN0IHNpZ2V2ZW50IHsKICAgICAgICBzaWd2YWxfdCBzaWdldl92YWx1ZTsKICAgICAgICBpbnQg
c2lnZXZfc2lnbm87CiAgICAgICAgaW50IHNpZ2V2X25vdGlmeTsKICAgICAgICB1bmlvbiB7CiAg
ICAgICAgICAgICAgICBpbnQgX3BhZFsoKDY0L3NpemVvZihpbnQpKSAtIDMpXTsKCiAgICAgICAg
ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqX2Z1bmN0aW9u
KShzaWd2YWxfdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKl9hdHRyaWJ1dGU7CiAg
ICAgICAgICAgICAgICB9IF9zaWdldl90aHJlYWQ7CiAgICAgICAgfSBfc2lnZXZfdW47Cn0gc2ln
ZXZlbnRfdDsKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3RyaW5nLmgi
IDEKIyAyMTggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NpZ2luZm8uaCIgMgoKc3RhdGlj
IGlubGluZSB2b2lkIGNvcHlfc2lnaW5mbyhzaWdpbmZvX3QgKnRvLCBzaWdpbmZvX3QgKmZyb20p
CnsKICAgICAgICBpZiAoZnJvbS0+c2lfY29kZSA8IDApCiAgICAgICAgICAgICAgICAoX19idWls
dGluX2NvbnN0YW50X3Aoc2l6ZW9mKHNpZ2luZm9fdCkpID8gX19jb25zdGFudF9tZW1jcHkzZCgo
dG8pLChmcm9tKSwoc2l6ZW9mKHNpZ2luZm9fdCkpKSA6IF9fbWVtY3B5M2QoKHRvKSwoZnJvbSks
KHNpemVvZihzaWdpbmZvX3QpKSkpOwogICAgICAgIGVsc2UKCiAgICAgICAgICAgICAgICAoX19i
dWlsdGluX2NvbnN0YW50X3AoMypzaXplb2YoaW50KSArIHNpemVvZihmcm9tLT5fc2lmaWVsZHMu
X3NpZ2NobGQpKSA/IF9fY29uc3RhbnRfbWVtY3B5M2QoKHRvKSwoZnJvbSksKDMqc2l6ZW9mKGlu
dCkgKyBzaXplb2YoZnJvbS0+X3NpZmllbGRzLl9zaWdjaGxkKSkpIDogX19tZW1jcHkzZCgodG8p
LChmcm9tKSwoMypzaXplb2YoaW50KSArIHNpemVvZihmcm9tLT5fc2lmaWVsZHMuX3NpZ2NobGQp
KSkpOwp9CgpleHRlcm4gaW50IGNvcHlfc2lnaW5mb190b191c2VyKHNpZ2luZm9fdCAqdG8sIHNp
Z2luZm9fdCAqZnJvbSk7CiMgNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zaWduYWwu
aCIgMgoKCgoKCgpzdHJ1Y3Qgc2lncXVldWUgewogICAgICAgIHN0cnVjdCBzaWdxdWV1ZSAqbmV4
dDsKICAgICAgICBzaWdpbmZvX3QgaW5mbzsKfTsKCnN0cnVjdCBzaWdwZW5kaW5nIHsKICAgICAg
ICBzdHJ1Y3Qgc2lncXVldWUgKmhlYWQsICoqdGFpbDsKICAgICAgICBzaWdzZXRfdCBzaWduYWw7
Cn07CiMgNjggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2lnbmFsLmgiCiMgMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMQojIDY5ICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L3NpZ25hbC5oIiAyCiMgMTA4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3NpZ25hbC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnb3JzZXRzKHNpZ3NldF90ICpy
LCBjb25zdCBzaWdzZXRfdCAqYSwgY29uc3Qgc2lnc2V0X3QgKmIpIHsgdW5zaWduZWQgbG9uZyBh
MCwgYTEsIGEyLCBhMywgYjAsIGIxLCBiMiwgYjM7IHVuc2lnbmVkIGxvbmcgaTsgZm9yIChpID0g
MDsgaSA8ICg2NCAvIDMyKS80OyArK2kpIHsgYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNp
Z1s0KmkrMV07IGEyID0gYS0+c2lnWzQqaSsyXTsgYTMgPSBhLT5zaWdbNCppKzNdOyBiMCA9IGIt
PnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBiLT5zaWdbNCppKzJdOyBiMyA9
IGItPnNpZ1s0KmkrM107IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSB8IChiMCkpOyByLT5zaWdbNCpp
KzFdID0gKChhMSkgfCAoYjEpKTsgci0+c2lnWzQqaSsyXSA9ICgoYTIpIHwgKGIyKSk7IHItPnNp
Z1s0KmkrM10gPSAoKGEzKSB8IChiMykpOyB9IHN3aXRjaCAoKDY0IC8gMzIpICUgNCkgeyBjYXNl
IDM6IGEwID0gYS0+c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBhMiA9IGEtPnNpZ1s0
KmkrMl07IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyBiMiA9IGItPnNp
Z1s0KmkrMl07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSB8IChiMCkpOyByLT5zaWdbNCppKzFdID0g
KChhMSkgfCAoYjEpKTsgci0+c2lnWzQqaSsyXSA9ICgoYTIpIHwgKGIyKSk7IGJyZWFrOyBjYXNl
IDI6IGEwID0gYS0+c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBiMCA9IGItPnNpZ1s0
KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgci0+c2lnWzQqaSswXSA9ICgoYTApIHwgKGIwKSk7
IHItPnNpZ1s0KmkrMV0gPSAoKGExKSB8IChiMSkpOyBicmVhazsgY2FzZSAxOiBhMCA9IGEtPnNp
Z1s0KmkrMF07IGIwID0gYi0+c2lnWzQqaSswXTsgci0+c2lnWzQqaSswXSA9ICgoYTApIHwgKGIw
KSk7IGJyZWFrOyB9IH0KCgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnYW5kc2V0cyhzaWdzZXRfdCAq
ciwgY29uc3Qgc2lnc2V0X3QgKmEsIGNvbnN0IHNpZ3NldF90ICpiKSB7IHVuc2lnbmVkIGxvbmcg
YTAsIGExLCBhMiwgYTMsIGIwLCBiMSwgYjIsIGIzOyB1bnNpZ25lZCBsb25nIGk7IGZvciAoaSA9
IDA7IGkgPCAoNjQgLyAzMikvNDsgKytpKSB7IGEwID0gYS0+c2lnWzQqaSswXTsgYTEgPSBhLT5z
aWdbNCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGEzID0gYS0+c2lnWzQqaSszXTsgYjAgPSBi
LT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IGIyID0gYi0+c2lnWzQqaSsyXTsgYjMg
PSBiLT5zaWdbNCppKzNdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiAoYjApKTsgci0+c2lnWzQq
aSsxXSA9ICgoYTEpICYgKGIxKSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSAmIChiMikpOyByLT5z
aWdbNCppKzNdID0gKChhMykgJiAoYjMpKTsgfSBzd2l0Y2ggKCg2NCAvIDMyKSAlIDQpIHsgY2Fz
ZSAzOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYTIgPSBhLT5zaWdb
NCppKzJdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBiLT5z
aWdbNCppKzJdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiAoYjApKTsgci0+c2lnWzQqaSsxXSA9
ICgoYTEpICYgKGIxKSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSAmIChiMikpOyBicmVhazsgY2Fz
ZSAyOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYjAgPSBiLT5zaWdb
NCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIChiMCkp
OyByLT5zaWdbNCppKzFdID0gKChhMSkgJiAoYjEpKTsgYnJlYWs7IGNhc2UgMTogYTAgPSBhLT5z
aWdbNCppKzBdOyBiMCA9IGItPnNpZ1s0KmkrMF07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIChi
MCkpOyBicmVhazsgfSB9CgoKc3RhdGljIGlubGluZSB2b2lkIHNpZ25hbmRzZXRzKHNpZ3NldF90
ICpyLCBjb25zdCBzaWdzZXRfdCAqYSwgY29uc3Qgc2lnc2V0X3QgKmIpIHsgdW5zaWduZWQgbG9u
ZyBhMCwgYTEsIGEyLCBhMywgYjAsIGIxLCBiMiwgYjM7IHVuc2lnbmVkIGxvbmcgaTsgZm9yIChp
ID0gMDsgaSA8ICg2NCAvIDMyKS80OyArK2kpIHsgYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEt
PnNpZ1s0KmkrMV07IGEyID0gYS0+c2lnWzQqaSsyXTsgYTMgPSBhLT5zaWdbNCppKzNdOyBiMCA9
IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBiLT5zaWdbNCppKzJdOyBi
MyA9IGItPnNpZ1s0KmkrM107IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIH4oYjApKTsgci0+c2ln
WzQqaSsxXSA9ICgoYTEpICYgfihiMSkpOyByLT5zaWdbNCppKzJdID0gKChhMikgJiB+KGIyKSk7
IHItPnNpZ1s0KmkrM10gPSAoKGEzKSAmIH4oYjMpKTsgfSBzd2l0Y2ggKCg2NCAvIDMyKSAlIDQp
IHsgY2FzZSAzOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYTIgPSBh
LT5zaWdbNCppKzJdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIg
PSBiLT5zaWdbNCppKzJdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiB+KGIwKSk7IHItPnNpZ1s0
KmkrMV0gPSAoKGExKSAmIH4oYjEpKTsgci0+c2lnWzQqaSsyXSA9ICgoYTIpICYgfihiMikpOyBi
cmVhazsgY2FzZSAyOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYjAg
PSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IHItPnNpZ1s0KmkrMF0gPSAoKGEw
KSAmIH4oYjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpICYgfihiMSkpOyBicmVhazsgY2FzZSAx
OiBhMCA9IGEtPnNpZ1s0KmkrMF07IGIwID0gYi0+c2lnWzQqaSswXTsgci0+c2lnWzQqaSswXSA9
ICgoYTApICYgfihiMCkpOyBicmVhazsgfSB9CiMgMTQwICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3NpZ25hbC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnbm90c2V0KHNpZ3NldF90ICpz
ZXQpIHsgdW5zaWduZWQgbG9uZyBpOyBmb3IgKGkgPSAwOyBpIDwgKDY0IC8gMzIpLzQ7ICsraSkg
eyBzZXQtPnNpZ1s0KmkrMF0gPSAofihzZXQtPnNpZ1s0KmkrMF0pKTsgc2V0LT5zaWdbNCppKzFd
ID0gKH4oc2V0LT5zaWdbNCppKzFdKSk7IHNldC0+c2lnWzQqaSsyXSA9ICh+KHNldC0+c2lnWzQq
aSsyXSkpOyBzZXQtPnNpZ1s0KmkrM10gPSAofihzZXQtPnNpZ1s0KmkrM10pKTsgfSBzd2l0Y2gg
KCg2NCAvIDMyKSAlIDQpIHsgY2FzZSAzOiBzZXQtPnNpZ1s0KmkrMl0gPSAofihzZXQtPnNpZ1s0
KmkrMl0pKTsgY2FzZSAyOiBzZXQtPnNpZ1s0KmkrMV0gPSAofihzZXQtPnNpZ1s0KmkrMV0pKTsg
Y2FzZSAxOiBzZXQtPnNpZ1s0KmkrMF0gPSAofihzZXQtPnNpZ1s0KmkrMF0pKTsgfSB9CgoKCgpz
dGF0aWMgaW5saW5lIHZvaWQgc2lnZW1wdHlzZXQoc2lnc2V0X3QgKnNldCkKewogICAgICAgIHN3
aXRjaCAoKDY0IC8gMzIpKSB7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIChfX2J1
aWx0aW5fY29uc3RhbnRfcCgwKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKHNpZ3Nl
dF90KSkpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKChzZXQpKSwoKDB4MDEwMTAx
MDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVvZihzaWdzZXRfdCkpKSkgOiBfX2NvbnN0
YW50X2NfbWVtc2V0KCgoc2V0KSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSks
KChzaXplb2Yoc2lnc2V0X3QpKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKHNp
Z3NldF90KSkpID8gX19tZW1zZXRfZ2VuZXJpYygoKChzZXQpKSksKCgoMCkpKSwoKChzaXplb2Yo
c2lnc2V0X3QpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKChzZXQpKSwoKDApKSwoKHNpemVvZihz
aWdzZXRfdCkpKSkpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMjogc2V0
LT5zaWdbMV0gPSAwOwogICAgICAgIGNhc2UgMTogc2V0LT5zaWdbMF0gPSAwOwogICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgfQp9CgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnZmlsbHNldChz
aWdzZXRfdCAqc2V0KQp7CiAgICAgICAgc3dpdGNoICgoNjQgLyAzMikpIHsKICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKC0xKSA/IChfX2J1aWx0
aW5fY29uc3RhbnRfcCgoc2l6ZW9mKHNpZ3NldF90KSkpID8gX19jb25zdGFudF9jX2FuZF9jb3Vu
dF9tZW1zZXQoKChzZXQpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoLTEpKSksKChz
aXplb2Yoc2lnc2V0X3QpKSkpIDogX19jb25zdGFudF9jX21lbXNldCgoKHNldCkpLCgoMHgwMTAx
MDEwMVVMKih1bnNpZ25lZCBjaGFyKSgtMSkpKSwoKHNpemVvZihzaWdzZXRfdCkpKSkpIDogKF9f
YnVpbHRpbl9jb25zdGFudF9wKChzaXplb2Yoc2lnc2V0X3QpKSkgPyBfX21lbXNldF9nZW5lcmlj
KCgoKHNldCkpKSwoKCgtMSkpKSwoKChzaXplb2Yoc2lnc2V0X3QpKSkpKSA6IF9fbWVtc2V0X2dl
bmVyaWMoKChzZXQpKSwoKC0xKSksKChzaXplb2Yoc2lnc2V0X3QpKSkpKSk7CiAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICBjYXNlIDI6IHNldC0+c2lnWzFdID0gLTE7CiAgICAgICAgY2Fz
ZSAxOiBzZXQtPnNpZ1swXSA9IC0xOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQp9
CgpleHRlcm4gY2hhciAqIHJlbmRlcl9zaWdzZXRfdChzaWdzZXRfdCAqc2V0LCBjaGFyICpidWZm
ZXIpOwoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnYWRkc2V0bWFzayhzaWdzZXRfdCAqc2V0LCB1
bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAgICBzZXQtPnNpZ1swXSB8PSBtYXNrOwp9CgpzdGF0
aWMgaW5saW5lIHZvaWQgc2lnZGVsc2V0bWFzayhzaWdzZXRfdCAqc2V0LCB1bnNpZ25lZCBsb25n
IG1hc2spCnsKICAgICAgICBzZXQtPnNpZ1swXSAmPSB+bWFzazsKfQoKc3RhdGljIGlubGluZSBp
bnQgc2lndGVzdHNldG1hc2soc2lnc2V0X3QgKnNldCwgdW5zaWduZWQgbG9uZyBtYXNrKQp7CiAg
ICAgICAgcmV0dXJuIChzZXQtPnNpZ1swXSAmIG1hc2spICE9IDA7Cn0KCnN0YXRpYyBpbmxpbmUg
dm9pZCBzaWdpbml0c2V0KHNpZ3NldF90ICpzZXQsIHVuc2lnbmVkIGxvbmcgbWFzaykKewogICAg
ICAgIHNldC0+c2lnWzBdID0gbWFzazsKICAgICAgICBzd2l0Y2ggKCg2NCAvIDMyKSkgewogICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAo
X19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkgPyBfX2Nv
bnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKCZzZXQtPnNpZ1sxXSkpLCgoMHgwMTAxMDEwMVVM
Kih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkgOiBf
X2NvbnN0YW50X2NfbWVtc2V0KCgoJnNldC0+c2lnWzFdKSksKCgweDAxMDEwMTAxVUwqKHVuc2ln
bmVkIGNoYXIpKDApKSksKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkpKSkgOiAoX19idWls
dGluX2NvbnN0YW50X3AoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkgPyBfX21lbXNldF9n
ZW5lcmljKCgoKCZzZXQtPnNpZ1sxXSkpKSwoKCgwKSkpLCgoKHNpemVvZihsb25nKSooKDY0IC8g
MzIpLTEpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKCgmc2V0LT5zaWdbMV0pKSwoKDApKSwoKHNp
emVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkpKSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICBjYXNlIDI6IHNldC0+c2lnWzFdID0gMDsKICAgICAgICBjYXNlIDE6IDsKICAgICAgICB9
Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdpbml0c2V0aW52KHNpZ3NldF90ICpzZXQsIHVuc2ln
bmVkIGxvbmcgbWFzaykKewogICAgICAgIHNldC0+c2lnWzBdID0gfm1hc2s7CiAgICAgICAgc3dp
dGNoICgoNjQgLyAzMikpIHsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgKF9fYnVp
bHRpbl9jb25zdGFudF9wKC0xKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKGxvbmcp
KigoNjQgLyAzMiktMSkpKSA/IF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0KCgoJnNldC0+
c2lnWzFdKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKC0xKSkpLCgoc2l6ZW9mKGxv
bmcpKigoNjQgLyAzMiktMSkpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoJnNldC0+c2lnWzFd
KSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKC0xKSkpLCgoc2l6ZW9mKGxvbmcpKigo
NjQgLyAzMiktMSkpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2YobG9uZykqKCg2
NCAvIDMyKS0xKSkpID8gX19tZW1zZXRfZ2VuZXJpYygoKCgmc2V0LT5zaWdbMV0pKSksKCgoLTEp
KSksKCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkpIDogX19tZW1zZXRfZ2VuZXJpYygo
KCZzZXQtPnNpZ1sxXSkpLCgoLTEpKSwoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkpKSk7
CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6IHNldC0+c2lnWzFdID0gLTE7
CiAgICAgICAgY2FzZSAxOiA7CiAgICAgICAgfQp9CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0
X3NpZ3BlbmRpbmcoc3RydWN0IHNpZ3BlbmRpbmcgKnNpZykKewogICAgICAgIHNpZ2VtcHR5c2V0
KCZzaWctPnNpZ25hbCk7CiAgICAgICAgc2lnLT5oZWFkID0gKCh2b2lkICopMCk7CiAgICAgICAg
c2lnLT50YWlsID0gJnNpZy0+aGVhZDsKfQoKZXh0ZXJuIGxvbmcgZG9fc2lncGVuZGluZyh2b2lk
ICosIHVuc2lnbmVkIGxvbmcpOwojIDI3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Nj
aGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NlY3VyZWJpdHMuaCIg
MQoKCgoKCmV4dGVybiB1bnNpZ25lZCBzZWN1cmViaXRzX1JhYmU3NzQ4NDsKIyAyOCAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9mc19zdHJ1Y3QuaCIgMQoKCgoKc3RydWN0IGZzX3N0cnVjdCB7CiAgICAgICAg
YXRvbWljX3QgY291bnQ7CiAgICAgICAgcndsb2NrX3QgbG9jazsKICAgICAgICBpbnQgdW1hc2s7
CiAgICAgICAgc3RydWN0IGRlbnRyeSAqIHJvb3QsICogcHdkLCAqIGFsdHJvb3Q7CiAgICAgICAg
c3RydWN0IHZmc21vdW50ICogcm9vdG1udCwgKiBwd2RtbnQsICogYWx0cm9vdG1udDsKfTsKIyAy
MCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mc19zdHJ1Y3QuaCIKZXh0ZXJuIHZvaWQg
ZXhpdF9mc19SODYwZmEyM2Moc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBzZXRf
ZnNfYWx0cm9vdCh2b2lkKTsKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIHNldF9mc19yb290KHN0
cnVjdCBmc19zdHJ1Y3QgKmZzLAogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqbW50LAogICAgICAg
IHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHN0cnVjdCBkZW50cnkgKm9sZF9yb290
OwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqb2xkX3Jvb3RtbnQ7CiAgICAgICAgKHZvaWQpKCZm
cy0+bG9jayk7CiAgICAgICAgb2xkX3Jvb3QgPSBmcy0+cm9vdDsKICAgICAgICBvbGRfcm9vdG1u
dCA9IGZzLT5yb290bW50OwogICAgICAgIGZzLT5yb290bW50ID0gbW50Z2V0KG1udCk7CiAgICAg
ICAgZnMtPnJvb3QgPSBkZ2V0KGRlbnRyeSk7CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwogICAg
ICAgIGlmIChvbGRfcm9vdCkgewogICAgICAgICAgICAgICAgZHB1dF9SYmZlMmIyNTgob2xkX3Jv
b3QpOwogICAgICAgICAgICAgICAgbW50cHV0KG9sZF9yb290bW50KTsKICAgICAgICB9Cn0KCgoK
CgoKc3RhdGljIGlubGluZSB2b2lkIHNldF9mc19wd2Qoc3RydWN0IGZzX3N0cnVjdCAqZnMsCiAg
ICAgICAgc3RydWN0IHZmc21vdW50ICptbnQsCiAgICAgICAgc3RydWN0IGRlbnRyeSAqZGVudHJ5
KQp7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqb2xkX3B3ZDsKICAgICAgICBzdHJ1Y3QgdmZzbW91
bnQgKm9sZF9wd2RtbnQ7CiAgICAgICAgKHZvaWQpKCZmcy0+bG9jayk7CiAgICAgICAgb2xkX3B3
ZCA9IGZzLT5wd2Q7CiAgICAgICAgb2xkX3B3ZG1udCA9IGZzLT5wd2RtbnQ7CiAgICAgICAgZnMt
PnB3ZG1udCA9IG1udGdldChtbnQpOwogICAgICAgIGZzLT5wd2QgPSBkZ2V0KGRlbnRyeSk7CiAg
ICAgICAgZG8geyB9IHdoaWxlKDApOwogICAgICAgIGlmIChvbGRfcHdkKSB7CiAgICAgICAgICAg
ICAgICBkcHV0X1JiZmUyYjI1OChvbGRfcHdkKTsKICAgICAgICAgICAgICAgIG1udHB1dChvbGRf
cHdkbW50KTsKICAgICAgICB9Cn0KCnN0cnVjdCBmc19zdHJ1Y3QgKmNvcHlfZnNfc3RydWN0KHN0
cnVjdCBmc19zdHJ1Y3QgKm9sZCk7CnZvaWQgcHV0X2ZzX3N0cnVjdChzdHJ1Y3QgZnNfc3RydWN0
ICpmcyk7CiMgMjkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgoKc3Ry
dWN0IGV4ZWNfZG9tYWluOwojIDU4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVk
LmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIGF2ZW5ydW5bXTsKIyA3NSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9zY2hlZC5oIgpleHRlcm4gaW50IG5yX3J1bm5pbmdfUmNhM2M2ZDc4LCBu
cl90aHJlYWRzOwpleHRlcm4gaW50IGxhc3RfcGlkOwoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2ZzLmgiIDEKIyA3OSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hl
ZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90aW1lLmgiIDEKIyA4MCAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9wYXJhbS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9hc20vcGFyYW0uaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcGFyYW0u
aCIgMgojIDgxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Jlc291cmNlLmgiIDEKCgoKIyAxICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3RpbWUuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvcmVzb3VyY2UuaCIgMgojIDIxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3Jlc291cmNlLmgiCnN0cnVjdCBydXNhZ2UgewogICAgICAgIHN0cnVjdCB0aW1ldmFsIHJ1X3V0
aW1lOwogICAgICAgIHN0cnVjdCB0aW1ldmFsIHJ1X3N0aW1lOwogICAgICAgIGxvbmcgcnVfbWF4
cnNzOwogICAgICAgIGxvbmcgcnVfaXhyc3M7CiAgICAgICAgbG9uZyBydV9pZHJzczsKICAgICAg
ICBsb25nIHJ1X2lzcnNzOwogICAgICAgIGxvbmcgcnVfbWluZmx0OwogICAgICAgIGxvbmcgcnVf
bWFqZmx0OwogICAgICAgIGxvbmcgcnVfbnN3YXA7CiAgICAgICAgbG9uZyBydV9pbmJsb2NrOwog
ICAgICAgIGxvbmcgcnVfb3VibG9jazsKICAgICAgICBsb25nIHJ1X21zZ3NuZDsKICAgICAgICBs
b25nIHJ1X21zZ3JjdjsKICAgICAgICBsb25nIHJ1X25zaWduYWxzOwogICAgICAgIGxvbmcgcnVf
bnZjc3c7CiAgICAgICAgbG9uZyBydV9uaXZjc3c7Cn07CgpzdHJ1Y3QgcmxpbWl0IHsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHJsaW1fY3VyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcmxpbV9tYXg7
Cn07CiMgNTYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcmVzb3VyY2UuaCIKIyAxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9yZXNvdXJjZS5oIiAxCiMgNTcgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvcmVzb3VyY2UuaCIgMgojIDgyICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Rp
bWVyLmgiIDEKIyA4MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAxCiMgODUgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEyNSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9zY2hlZC5oIgpzdHJ1Y3Qgc2NoZWRfcGFyYW0gewogICAgICAgIGludCBz
Y2hlZF9wcmlvcml0eTsKfTsKCnN0cnVjdCBjb21wbGV0aW9uOwoKCgojIDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIgMQojIDEzNCAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9zY2hlZC5oIiAyCgoKCgoKCgpleHRlcm4gcndsb2NrX3QgdGFza2xpc3RfbG9j
a19SOTk5YzgwYTI7CmV4dGVybiBzcGlubG9ja190IHJ1bnF1ZXVlX2xvY2s7CmV4dGVybiBzcGlu
bG9ja190IG1tbGlzdF9sb2NrOwoKZXh0ZXJuIHZvaWQgc2NoZWRfaW5pdCh2b2lkKTsKZXh0ZXJu
IHZvaWQgaW5pdF9pZGxlKHZvaWQpOwpleHRlcm4gdm9pZCBzaG93X3N0YXRlKHZvaWQpOwpleHRl
cm4gdm9pZCBjcHVfaW5pdCAodm9pZCk7CmV4dGVybiB2b2lkIHRyYXBfaW5pdCh2b2lkKTsKZXh0
ZXJuIHZvaWQgdXBkYXRlX3Byb2Nlc3NfdGltZXMoaW50IHVzZXIpOwpleHRlcm4gdm9pZCB1cGRh
dGVfb25lX3Byb2Nlc3Moc3RydWN0IHRhc2tfc3RydWN0ICpwLCB1bnNpZ25lZCBsb25nIHVzZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHN5c3RlbSwgaW50
IGNwdSk7CgoKZXh0ZXJuIHNpZ25lZCBsb25nIHNjaGVkdWxlX3RpbWVvdXRfUjE3ZDU5ZDAxKHNp
Z25lZCBsb25nIHRpbWVvdXQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKIF9fYXR0cmli
dXRlX18oKHJlZ3Bhcm0oMCkpKSB2b2lkIHNjaGVkdWxlX1I0MjkyMzY0Yyh2b2lkKTsKCmV4dGVy
biBpbnQgc2NoZWR1bGVfdGFza19SMmQ2YzNkMDQoc3RydWN0IHRxX3N0cnVjdCAqdGFzayk7CmV4
dGVybiB2b2lkIGZsdXNoX3NjaGVkdWxlZF90YXNrc19SN2MzMjQyYjQodm9pZCk7CmV4dGVybiBp
bnQgc3RhcnRfY29udGV4dF90aHJlYWQodm9pZCk7CmV4dGVybiBpbnQgY3VycmVudF9pc19rZXZl
bnRkKHZvaWQpOwojIDE3MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpz
dHJ1Y3QgZmlsZXNfc3RydWN0IHsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICByd2xv
Y2tfdCBmaWxlX2xvY2s7CiAgICAgICAgaW50IG1heF9mZHM7CiAgICAgICAgaW50IG1heF9mZHNl
dDsKICAgICAgICBpbnQgbmV4dF9mZDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqKiBmZDsKICAgICAg
ICBmZF9zZXQgKmNsb3NlX29uX2V4ZWM7CiAgICAgICAgZmRfc2V0ICpvcGVuX2ZkczsKICAgICAg
ICBmZF9zZXQgY2xvc2Vfb25fZXhlY19pbml0OwogICAgICAgIGZkX3NldCBvcGVuX2Zkc19pbml0
OwogICAgICAgIHN0cnVjdCBmaWxlICogZmRfYXJyYXlbMzJdOwp9OwojIDIwNCAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpzdHJ1Y3QgbW1fc3RydWN0IHsKICAgICAgICBz
dHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBtbWFwOwogICAgICAgIHJiX3Jvb3RfdCBtbV9yYjsKICAg
ICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBtbWFwX2NhY2hlOwogICAgICAgIHBnZF90ICog
cGdkOwogICAgICAgIGF0b21pY190IG1tX3VzZXJzOwogICAgICAgIGF0b21pY190IG1tX2NvdW50
OwogICAgICAgIGludCBtYXBfY291bnQ7CiAgICAgICAgc3RydWN0IHJ3X3NlbWFwaG9yZSBtbWFw
X3NlbTsKICAgICAgICBzcGlubG9ja190IHBhZ2VfdGFibGVfbG9jazsKCiAgICAgICAgc3RydWN0
IGxpc3RfaGVhZCBtbWxpc3Q7CgoKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnRfY29kZSwg
ZW5kX2NvZGUsIHN0YXJ0X2RhdGEsIGVuZF9kYXRhOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3Rh
cnRfYnJrLCBicmssIHN0YXJ0X3N0YWNrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgYXJnX3N0YXJ0
LCBhcmdfZW5kLCBlbnZfc3RhcnQsIGVudl9lbmQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyByc3Ms
IHRvdGFsX3ZtLCBsb2NrZWRfdm07CiAgICAgICAgdW5zaWduZWQgbG9uZyBkZWZfZmxhZ3M7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBjcHVfdm1fbWFzazsKICAgICAgICB1bnNpZ25lZCBsb25nIHN3
YXBfYWRkcmVzczsKCiAgICAgICAgdW5zaWduZWQgZHVtcGFibGU6MTsKCgogICAgICAgIG1tX2Nv
bnRleHRfdCBjb250ZXh0Owp9OwoKZXh0ZXJuIGludCBtbWxpc3RfbnI7CiMgMjQ3ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCnN0cnVjdCBzaWduYWxfc3RydWN0IHsKICAg
ICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICBzdHJ1Y3Qga19zaWdhY3Rpb24gYWN0aW9uWzY0
XTsKICAgICAgICBzcGlubG9ja190IHNpZ2xvY2s7Cn07CiMgMjYzICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L3NjaGVkLmgiCnN0cnVjdCB1c2VyX3N0cnVjdCB7CiAgICAgICAgYXRvbWlj
X3QgX19jb3VudDsKICAgICAgICBhdG9taWNfdCBwcm9jZXNzZXM7CiAgICAgICAgYXRvbWljX3Qg
ZmlsZXM7CgoKICAgICAgICBzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKm5leHQsICoqcHByZXY7CiAgICAg
ICAgdWlkX3QgdWlkOwp9OwoKCgoKCgpleHRlcm4gc3RydWN0IHVzZXJfc3RydWN0IHJvb3RfdXNl
cjsKCgpzdHJ1Y3QgdGFza19zdHJ1Y3QgewoKCgogICAgICAgIHZvbGF0aWxlIGxvbmcgc3RhdGU7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICBpbnQgc2lncGVuZGluZzsKICAg
ICAgICBtbV9zZWdtZW50X3QgYWRkcl9saW1pdDsKCgoKICAgICAgICBzdHJ1Y3QgZXhlY19kb21h
aW4gKmV4ZWNfZG9tYWluOwogICAgICAgIHZvbGF0aWxlIGxvbmcgbmVlZF9yZXNjaGVkOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgcHRyYWNlOwoKICAgICAgICBpbnQgbG9ja19kZXB0aDsKCgoKCgoK
ICAgICAgICBsb25nIGNvdW50ZXI7CiAgICAgICAgbG9uZyBuaWNlOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgcG9saWN5OwogICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tOwogICAgICAgIGludCBw
cm9jZXNzb3I7CiMgMzE2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCiAg
ICAgICAgdW5zaWduZWQgbG9uZyBjcHVzX3J1bm5hYmxlLCBjcHVzX2FsbG93ZWQ7CgoKCgogICAg
ICAgIHN0cnVjdCBsaXN0X2hlYWQgcnVuX2xpc3Q7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzbGVl
cF90aW1lOwoKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHRfdGFzaywgKnByZXZfdGFz
azsKICAgICAgICBzdHJ1Y3QgbW1fc3RydWN0ICphY3RpdmVfbW07CiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBsb2NhbF9wYWdlczsKICAgICAgICB1bnNpZ25lZCBpbnQgYWxsb2NhdGlvbl9vcmRl
ciwgbnJfbG9jYWxfcGFnZXM7CgoKICAgICAgICBzdHJ1Y3QgbGludXhfYmluZm10ICpiaW5mbXQ7
CiAgICAgICAgaW50IGV4aXRfY29kZSwgZXhpdF9zaWduYWw7CiAgICAgICAgaW50IHBkZWF0aF9z
aWduYWw7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgcGVyc29uYWxpdHk7CiAgICAgICAgaW50IGRp
ZF9leGVjOjE7CiAgICAgICAgcGlkX3QgcGlkOwogICAgICAgIHBpZF90IHBncnA7CiAgICAgICAg
cGlkX3QgdHR5X29sZF9wZ3JwOwogICAgICAgIHBpZF90IHNlc3Npb247CiAgICAgICAgcGlkX3Qg
dGdpZDsKCiAgICAgICAgaW50IGxlYWRlcjsKCgoKCgogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVj
dCAqcF9vcHB0ciwgKnBfcHB0ciwgKnBfY3B0ciwgKnBfeXNwdHIsICpwX29zcHRyOwogICAgICAg
IHN0cnVjdCBsaXN0X2hlYWQgdGhyZWFkX2dyb3VwOwoKCiAgICAgICAgc3RydWN0IHRhc2tfc3Ry
dWN0ICpwaWRoYXNoX25leHQ7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICoqcGlkaGFzaF9w
cHJldjsKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdF9jaGxkZXhpdDsKICAgICAgICBz
dHJ1Y3QgY29tcGxldGlvbiAqdmZvcmtfZG9uZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHJ0X3By
aW9yaXR5OwogICAgICAgIHVuc2lnbmVkIGxvbmcgaXRfcmVhbF92YWx1ZSwgaXRfcHJvZl92YWx1
ZSwgaXRfdmlydF92YWx1ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGl0X3JlYWxfaW5jciwgaXRf
cHJvZl9pbmNyLCBpdF92aXJ0X2luY3I7CiAgICAgICAgc3RydWN0IHRpbWVyX2xpc3QgcmVhbF90
aW1lcjsKICAgICAgICBzdHJ1Y3QgdG1zIHRpbWVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3Rh
cnRfdGltZTsKICAgICAgICBsb25nIHBlcl9jcHVfdXRpbWVbMV0sIHBlcl9jcHVfc3RpbWVbMV07
CgogICAgICAgIHVuc2lnbmVkIGxvbmcgbWluX2ZsdCwgbWFqX2ZsdCwgbnN3YXAsIGNtaW5fZmx0
LCBjbWFqX2ZsdCwgY25zd2FwOwogICAgICAgIGludCBzd2FwcGFibGU6MTsKCiAgICAgICAgdWlk
X3QgdWlkLGV1aWQsc3VpZCxmc3VpZDsKICAgICAgICBnaWRfdCBnaWQsZWdpZCxzZ2lkLGZzZ2lk
OwogICAgICAgIGludCBuZ3JvdXBzOwogICAgICAgIGdpZF90IGdyb3Vwc1szMl07CiAgICAgICAg
a2VybmVsX2NhcF90IGNhcF9lZmZlY3RpdmUsIGNhcF9pbmhlcml0YWJsZSwgY2FwX3Blcm1pdHRl
ZDsKICAgICAgICBpbnQga2VlcF9jYXBhYmlsaXRpZXM6MTsKICAgICAgICBzdHJ1Y3QgdXNlcl9z
dHJ1Y3QgKnVzZXI7CgogICAgICAgIHN0cnVjdCBybGltaXQgcmxpbVsxMV07CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgdXNlZF9tYXRoOwogICAgICAgIGNoYXIgY29tbVsxNl07CgogICAgICAgIGlu
dCBsaW5rX2NvdW50LCB0b3RhbF9saW5rX2NvdW50OwogICAgICAgIHN0cnVjdCB0dHlfc3RydWN0
ICp0dHk7CiAgICAgICAgdW5zaWduZWQgaW50IGxvY2tzOwoKICAgICAgICBzdHJ1Y3Qgc2VtX3Vu
ZG8gKnNlbXVuZG87CiAgICAgICAgc3RydWN0IHNlbV9xdWV1ZSAqc2Vtc2xlZXBpbmc7CgogICAg
ICAgIHN0cnVjdCB0aHJlYWRfc3RydWN0IHRocmVhZDsKCiAgICAgICAgc3RydWN0IGZzX3N0cnVj
dCAqZnM7CgogICAgICAgIHN0cnVjdCBmaWxlc19zdHJ1Y3QgKmZpbGVzOwoKICAgICAgICBzcGlu
bG9ja190IHNpZ21hc2tfbG9jazsKICAgICAgICBzdHJ1Y3Qgc2lnbmFsX3N0cnVjdCAqc2lnOwoK
ICAgICAgICBzaWdzZXRfdCBibG9ja2VkOwogICAgICAgIHN0cnVjdCBzaWdwZW5kaW5nIHBlbmRp
bmc7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgc2FzX3NzX3NwOwogICAgICAgIHNpemVfdCBzYXNf
c3Nfc2l6ZTsKICAgICAgICBpbnQgKCpub3RpZmllcikodm9pZCAqcHJpdik7CiAgICAgICAgdm9p
ZCAqbm90aWZpZXJfZGF0YTsKICAgICAgICBzaWdzZXRfdCAqbm90aWZpZXJfbWFzazsKCgogICAg
ICAgIHUzMiBwYXJlbnRfZXhlY19pZDsKICAgICAgICB1MzIgc2VsZl9leGVjX2lkOwoKICAgICAg
ICBzcGlubG9ja190IGFsbG9jX2xvY2s7CgoKICAgICAgICB2b2lkICpqb3VybmFsX2luZm87Cn07
CiMgNDU2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCmV4dGVybiBzdHJ1
Y3QgZXhlY19kb21haW4gZGVmYXVsdF9leGVjX2RvbWFpbjsKIyA1MTAgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvc2NoZWQuaCIKdW5pb24gdGFza191bmlvbiB7CiAgICAgICAgc3RydWN0
IHRhc2tfc3RydWN0IHRhc2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFja1syMDQ4KnNpemVv
Zihsb25nKS9zaXplb2YobG9uZyldOwp9OwoKZXh0ZXJuIHVuaW9uIHRhc2tfdW5pb24gaW5pdF90
YXNrX3VuaW9uX1JjYTA5Y2VkYzsKCmV4dGVybiBzdHJ1Y3QgbW1fc3RydWN0IGluaXRfbW1fUmFj
Y2U4MTc2OwpleHRlcm4gc3RydWN0IHRhc2tfc3RydWN0ICppbml0X3Rhc2tzWzFdOwoKCgpleHRl
cm4gc3RydWN0IHRhc2tfc3RydWN0ICpwaWRoYXNoX1JjYmI3ZmJhN1soNDA5NiA+PiAyKV07CgoK
CnN0YXRpYyBpbmxpbmUgdm9pZCBoYXNoX3BpZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKICAg
ICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKipodGFibGUgPSAmcGlkaGFzaF9SY2JiN2ZiYTdbKCgo
KHAtPnBpZCkgPj4gOCkgXiAocC0+cGlkKSkgJiAoKDQwOTYgPj4gMikgLSAxKSldOwoKICAgICAg
ICBpZigocC0+cGlkaGFzaF9uZXh0ID0gKmh0YWJsZSkgIT0gKCh2b2lkICopMCkpCiAgICAgICAg
ICAgICAgICAoKmh0YWJsZSktPnBpZGhhc2hfcHByZXYgPSAmcC0+cGlkaGFzaF9uZXh0OwogICAg
ICAgICpodGFibGUgPSBwOwogICAgICAgIHAtPnBpZGhhc2hfcHByZXYgPSBodGFibGU7Cn0KCnN0
YXRpYyBpbmxpbmUgdm9pZCB1bmhhc2hfcGlkKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAg
ICAgIGlmKHAtPnBpZGhhc2hfbmV4dCkKICAgICAgICAgICAgICAgIHAtPnBpZGhhc2hfbmV4dC0+
cGlkaGFzaF9wcHJldiA9IHAtPnBpZGhhc2hfcHByZXY7CiAgICAgICAgKnAtPnBpZGhhc2hfcHBy
ZXYgPSBwLT5waWRoYXNoX25leHQ7Cn0KCnN0YXRpYyBpbmxpbmUgc3RydWN0IHRhc2tfc3RydWN0
ICpmaW5kX3Rhc2tfYnlfcGlkKGludCBwaWQpCnsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3Qg
KnAsICoqaHRhYmxlID0gJnBpZGhhc2hfUmNiYjdmYmE3WygoKChwaWQpID4+IDgpIF4gKHBpZCkp
ICYgKCg0MDk2ID4+IDIpIC0gMSkpXTsKCiAgICAgICAgZm9yKHAgPSAqaHRhYmxlOyBwICYmIHAt
PnBpZCAhPSBwaWQ7IHAgPSBwLT5waWRoYXNoX25leHQpCiAgICAgICAgICAgICAgICA7CgogICAg
ICAgIHJldHVybiBwOwp9CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrX3NldF9jcHUoc3RydWN0
IHRhc2tfc3RydWN0ICp0c2ssIHVuc2lnbmVkIGludCBjcHUpCnsKICAgICAgICB0c2stPnByb2Nl
c3NvciA9IGNwdTsKICAgICAgICB0c2stPmNwdXNfcnVubmFibGUgPSAxVUwgPDwgY3B1Owp9Cgpz
dGF0aWMgaW5saW5lIHZvaWQgdGFza19yZWxlYXNlX2NwdShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRz
aykKewogICAgICAgIHRzay0+Y3B1c19ydW5uYWJsZSA9IH4wVUw7Cn0KCgpleHRlcm4gc3RydWN0
IHVzZXJfc3RydWN0ICogYWxsb2NfdWlkKHVpZF90KTsKZXh0ZXJuIHZvaWQgZnJlZV91aWQoc3Ry
dWN0IHVzZXJfc3RydWN0ICopOwoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9jdXJy
ZW50LmgiIDEKCgoKc3RydWN0IHRhc2tfc3RydWN0OwoKc3RhdGljIGlubGluZSBzdHJ1Y3QgdGFz
a19zdHJ1Y3QgKiBnZXRfY3VycmVudCh2b2lkKQp7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0
ICpjdXJyZW50OwogICAgICAgIF9fYXNtX18oImFuZGwgJSVlc3AsJTA7ICI6Ij1yIiAoY3VycmVu
dCkgOiAiMCIgKH44MTkxVUwpKTsKICAgICAgICByZXR1cm4gY3VycmVudDsKIH0KIyA1NzEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgoKZXh0ZXJuIHVuc2lnbmVkIGxv
bmcgdm9sYXRpbGUgamlmZmllc19SMGRhMDJkNjc7CmV4dGVybiB1bnNpZ25lZCBsb25nIGl0aW1l
cl90aWNrczsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaXRpbWVyX25leHQ7CmV4dGVybiBzdHJ1Y3Qg
dGltZXZhbCB4dGltZV9SZjMxZGRmODM7CmV4dGVybiB2b2lkIGRvX3RpbWVyKHN0cnVjdCBwdF9y
ZWdzICopOwoKZXh0ZXJuIHVuc2lnbmVkIGludCAqIHByb2ZfYnVmZmVyOwpleHRlcm4gdW5zaWdu
ZWQgbG9uZyBwcm9mX2xlbjsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcHJvZl9zaGlmdDsKCgoKZXh0
ZXJuIHZvaWQgX193YWtlX3VwX1JiNzZjNWYxZSh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgdW5zaWdu
ZWQgaW50IG1vZGUsIGludCBucikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4g
dm9pZCBfX3dha2VfdXBfc3luY19SMDIzMWQ5ZWEod2FpdF9xdWV1ZV9oZWFkX3QgKnEsIHVuc2ln
bmVkIGludCBtb2RlLCBpbnQgbnIpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJu
IHZvaWQgc2xlZXBfb25fUmUwNjc5YTNmKHdhaXRfcXVldWVfaGVhZF90ICpxKSBfX2F0dHJpYnV0
ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBsb25nIHNsZWVwX29uX3RpbWVvdXRfUjc1YzhlMzk0
KHdhaXRfcXVldWVfaGVhZF90ICpxLCBzaWduZWQgbG9uZyB0aW1lb3V0KSBfX2F0dHJpYnV0ZV9f
KChyZWdwYXJtKDMpKSk7CgpleHRlcm4gdm9pZCBpbnRlcnJ1cHRpYmxlX3NsZWVwX29uX1I3ZTRm
ODljMyh3YWl0X3F1ZXVlX2hlYWRfdCAqcSkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpl
eHRlcm4gbG9uZyBpbnRlcnJ1cHRpYmxlX3NsZWVwX29uX3RpbWVvdXRfUjQwN2EyOGQ4KHdhaXRf
cXVldWVfaGVhZF90ICpxLCBzaWduZWQgbG9uZyB0aW1lb3V0KSBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDMpKSk7CgpleHRlcm4gaW50IHdha2VfdXBfcHJvY2Vzc19SNTIwMzM3NWEoc3RydWN0IHRh
c2tfc3RydWN0ICogdHNrKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CiMgNjA0ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt
KDApKSkgbG9uZyBzeXNfd2FpdDQocGlkX3QgcGlkLHVuc2lnbmVkIGludCAqIHN0YXRfYWRkciwg
aW50IG9wdGlvbnMsIHN0cnVjdCBydXNhZ2UgKiBydSk7CgpleHRlcm4gaW50IGluX2dyb3VwX3Bf
UmMzY2YxMTI4KGdpZF90KTsKZXh0ZXJuIGludCBpbl9lZ3JvdXBfcF9SZDhhMmFiOTUoZ2lkX3Qp
OwoKZXh0ZXJuIHZvaWQgcHJvY19jYWNoZXNfaW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQgZmx1c2hf
c2lnbmFsc19SMjBkOTJlMmQoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBmbHVz
aF9zaWduYWxfaGFuZGxlcnMoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gaW50IGRlcXVl
dWVfc2lnbmFsX1I4ZTM5MzE5YihzaWdzZXRfdCAqLCBzaWdpbmZvX3QgKik7CmV4dGVybiB2b2lk
IGJsb2NrX2FsbF9zaWduYWxzX1I0YjM0ZmJmNShpbnQgKCpub3RpZmllcikodm9pZCAqcHJpdiks
IHZvaWQgKnByaXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ3NldF90ICptYXNr
KTsKZXh0ZXJuIHZvaWQgdW5ibG9ja19hbGxfc2lnbmFsc19SMGEyNDg3ZTAodm9pZCk7CmV4dGVy
biBpbnQgc2VuZF9zaWdfaW5mb19SOGNmN2VhMDUoaW50LCBzdHJ1Y3Qgc2lnaW5mbyAqLCBzdHJ1
Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiBpbnQgZm9yY2Vfc2lnX2luZm9fUjRhNTZlMDgwKGlu
dCwgc3RydWN0IHNpZ2luZm8gKiwgc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gaW50IGtp
bGxfcGdfaW5mb19SOGUyZDQ5OTAoaW50LCBzdHJ1Y3Qgc2lnaW5mbyAqLCBwaWRfdCk7CmV4dGVy
biBpbnQga2lsbF9zbF9pbmZvX1IxOTg4ZDIxZShpbnQsIHN0cnVjdCBzaWdpbmZvICosIHBpZF90
KTsKZXh0ZXJuIGludCBraWxsX3Byb2NfaW5mb19SZmI2OGIyNjQoaW50LCBzdHJ1Y3Qgc2lnaW5m
byAqLCBwaWRfdCk7CmV4dGVybiB2b2lkIG5vdGlmeV9wYXJlbnRfUmFhZTM0MzIwKHN0cnVjdCB0
YXNrX3N0cnVjdCAqLCBpbnQpOwpleHRlcm4gdm9pZCBkb19ub3RpZnlfcGFyZW50KHN0cnVjdCB0
YXNrX3N0cnVjdCAqLCBpbnQpOwpleHRlcm4gdm9pZCBmb3JjZV9zaWdfUmFlZjYyYTU0KGludCwg
c3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gaW50IHNlbmRfc2lnX1I1YzhkNjgxMChpbnQs
IHN0cnVjdCB0YXNrX3N0cnVjdCAqLCBpbnQpOwpleHRlcm4gaW50IGtpbGxfcGdfUjM4ZjI5NzE5
KHBpZF90LCBpbnQsIGludCk7CmV4dGVybiBpbnQga2lsbF9zbF9SZmJhMTJmZDAocGlkX3QsIGlu
dCwgaW50KTsKZXh0ZXJuIGludCBraWxsX3Byb2NfUjkzMmRhNjdlKHBpZF90LCBpbnQsIGludCk7
CmV4dGVybiBpbnQgZG9fc2lnYWN0aW9uKGludCwgY29uc3Qgc3RydWN0IGtfc2lnYWN0aW9uICos
IHN0cnVjdCBrX3NpZ2FjdGlvbiAqKTsKZXh0ZXJuIGludCBkb19zaWdhbHRzdGFjayhjb25zdCBz
dGFja190ICosIHN0YWNrX3QgKiwgdW5zaWduZWQgbG9uZyk7CgpzdGF0aWMgaW5saW5lIGludCBz
aWduYWxfcGVuZGluZyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKICAgICAgICByZXR1cm4gKHAt
PnNpZ3BlbmRpbmcgIT0gMCk7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIGludCBoYXNfcGVuZGluZ19z
aWduYWxzKHNpZ3NldF90ICpzaWduYWwsIHNpZ3NldF90ICpibG9ja2VkKQp7CiAgICAgICAgdW5z
aWduZWQgbG9uZyByZWFkeTsKICAgICAgICBsb25nIGk7CgogICAgICAgIHN3aXRjaCAoKDY0IC8g
MzIpKSB7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIGZvciAoaSA9ICg2NCAvIDMy
KSwgcmVhZHkgPSAwOyAtLWkgPj0gMCA7KQogICAgICAgICAgICAgICAgICAgICAgICByZWFkeSB8
PSBzaWduYWwtPnNpZ1tpXSAmfiBibG9ja2VkLT5zaWdbaV07CiAgICAgICAgICAgICAgICBicmVh
azsKCiAgICAgICAgY2FzZSA0OiByZWFkeSA9IHNpZ25hbC0+c2lnWzNdICZ+IGJsb2NrZWQtPnNp
Z1szXTsKICAgICAgICAgICAgICAgIHJlYWR5IHw9IHNpZ25hbC0+c2lnWzJdICZ+IGJsb2NrZWQt
PnNpZ1syXTsKICAgICAgICAgICAgICAgIHJlYWR5IHw9IHNpZ25hbC0+c2lnWzFdICZ+IGJsb2Nr
ZWQtPnNpZ1sxXTsKICAgICAgICAgICAgICAgIHJlYWR5IHw9IHNpZ25hbC0+c2lnWzBdICZ+IGJs
b2NrZWQtPnNpZ1swXTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDI6IHJl
YWR5ID0gc2lnbmFsLT5zaWdbMV0gJn4gYmxvY2tlZC0+c2lnWzFdOwogICAgICAgICAgICAgICAg
cmVhZHkgfD0gc2lnbmFsLT5zaWdbMF0gJn4gYmxvY2tlZC0+c2lnWzBdOwogICAgICAgICAgICAg
ICAgYnJlYWs7CgogICAgICAgIGNhc2UgMTogcmVhZHkgPSBzaWduYWwtPnNpZ1swXSAmfiBibG9j
a2VkLT5zaWdbMF07CiAgICAgICAgfQogICAgICAgIHJldHVybiByZWFkeSAhPSAwOwp9CgoKCgoK
c3RhdGljIGlubGluZSB2b2lkIHJlY2FsY19zaWdwZW5kaW5nX1I4OTY0NzU1NChzdHJ1Y3QgdGFz
a19zdHJ1Y3QgKnQpCnsKICAgICAgICB0LT5zaWdwZW5kaW5nID0gaGFzX3BlbmRpbmdfc2lnbmFs
cygmdC0+cGVuZGluZy5zaWduYWwsICZ0LT5ibG9ja2VkKTsKfQoKCgpzdGF0aWMgaW5saW5lIGlu
dCBvbl9zaWdfc3RhY2sodW5zaWduZWQgbG9uZyBzcCkKewogICAgICAgIHJldHVybiAoc3AgLSBn
ZXRfY3VycmVudCgpLT5zYXNfc3Nfc3AgPCBnZXRfY3VycmVudCgpLT5zYXNfc3Nfc2l6ZSk7Cn0K
CnN0YXRpYyBpbmxpbmUgaW50IHNhc19zc19mbGFncyh1bnNpZ25lZCBsb25nIHNwKQp7CiAgICAg
ICAgcmV0dXJuIChnZXRfY3VycmVudCgpLT5zYXNfc3Nfc2l6ZSA9PSAwID8gMgogICAgICAgICAg
ICAgICAgOiBvbl9zaWdfc3RhY2soc3ApID8gMSA6IDApOwp9CgpleHRlcm4gaW50IHJlcXVlc3Rf
aXJxX1IwYzYwZjJlMCh1bnNpZ25lZCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAo
KmhhbmRsZXIpKGludCwgdm9pZCAqLCBzdHJ1Y3QgcHRfcmVncyAqKSwKICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBsb25nLCBjb25zdCBjaGFyICosIHZvaWQgKik7CmV4dGVybiB2b2lk
IGZyZWVfaXJxX1JmMjBkYWJkOCh1bnNpZ25lZCBpbnQsIHZvaWQgKik7CiMgNzA3ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCnN0YXRpYyBpbmxpbmUgaW50IHN1c2VyKHZv
aWQpCnsKICAgICAgICBpZiAoISggKDEgPDwgKDAgKzEpKSAmIDB4MDAwMDAwMDAgPyAoMSA8PCAo
MCkpICYgMHgwMDAwMDAwMCA6ICgxIDw8ICgwKSkgJiBzZWN1cmViaXRzX1JhYmU3NzQ4NCApICYm
IGdldF9jdXJyZW50KCktPmV1aWQgPT0gMCkgewogICAgICAgICAgICAgICAgZ2V0X2N1cnJlbnQo
KS0+ZmxhZ3MgfD0gMHgwMDAwMDEwMDsKICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAg
IH0KICAgICAgICByZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBpbnQgZnN1c2VyKHZvaWQpCnsK
ICAgICAgICBpZiAoISggKDEgPDwgKDAgKzEpKSAmIDB4MDAwMDAwMDAgPyAoMSA8PCAoMCkpICYg
MHgwMDAwMDAwMCA6ICgxIDw8ICgwKSkgJiBzZWN1cmViaXRzX1JhYmU3NzQ4NCApICYmIGdldF9j
dXJyZW50KCktPmZzdWlkID09IDApIHsKICAgICAgICAgICAgICAgIGdldF9jdXJyZW50KCktPmZs
YWdzIHw9IDB4MDAwMDAxMDA7CiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAg
ICAgICAgcmV0dXJuIDA7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgaW50IGNhcGFibGUoaW50IGNh
cCkKewoKICAgICAgICBpZiAoKChnZXRfY3VycmVudCgpLT5jYXBfZWZmZWN0aXZlKSAmICgxIDw8
IChjYXApKSkpCgoKCiAgICAgICAgewogICAgICAgICAgICAgICAgZ2V0X2N1cnJlbnQoKS0+Zmxh
Z3MgfD0gMHgwMDAwMDEwMDsKICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KICAg
ICAgICByZXR1cm4gMDsKfQoKCgoKZXh0ZXJuIHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbV9hbGxvYyh2
b2lkKTsKCmV4dGVybiBzdHJ1Y3QgbW1fc3RydWN0ICogc3RhcnRfbGF6eV90bGIodm9pZCk7CmV4
dGVybiB2b2lkIGVuZF9sYXp5X3RsYihzdHJ1Y3QgbW1fc3RydWN0ICptbSk7CgoKZXh0ZXJuIGlu
bGluZSB2b2lkIF9fbW1kcm9wKHN0cnVjdCBtbV9zdHJ1Y3QgKikgX19hdHRyaWJ1dGVfXygocmVn
cGFybSgzKSkpOwpzdGF0aWMgaW5saW5lIHZvaWQgbW1kcm9wKHN0cnVjdCBtbV9zdHJ1Y3QgKiBt
bSkKewogICAgICAgIGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZtbS0+bW1fY291bnQpKQogICAg
ICAgICAgICAgICAgX19tbWRyb3AobW0pOwp9CgoKZXh0ZXJuIHZvaWQgbW1wdXQoc3RydWN0IG1t
X3N0cnVjdCAqKTsKCmV4dGVybiB2b2lkIG1tX3JlbGVhc2Uodm9pZCk7CgoKCgpleHRlcm4gc3Ry
dWN0IGZpbGUgKiogYWxsb2NfZmRfYXJyYXkoaW50KTsKZXh0ZXJuIGludCBleHBhbmRfZmRfYXJy
YXkoc3RydWN0IGZpbGVzX3N0cnVjdCAqLCBpbnQgbnIpOwpleHRlcm4gdm9pZCBmcmVlX2ZkX2Fy
cmF5KHN0cnVjdCBmaWxlICoqLCBpbnQpOwoKZXh0ZXJuIGZkX3NldCAqYWxsb2NfZmRzZXQoaW50
KTsKZXh0ZXJuIGludCBleHBhbmRfZmRzZXQoc3RydWN0IGZpbGVzX3N0cnVjdCAqLCBpbnQgbnIp
OwpleHRlcm4gdm9pZCBmcmVlX2Zkc2V0KGZkX3NldCAqLCBpbnQpOwoKZXh0ZXJuIGludCBjb3B5
X3RocmVhZChpbnQsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcs
IHN0cnVjdCB0YXNrX3N0cnVjdCAqLCBzdHJ1Y3QgcHRfcmVncyAqKTsKZXh0ZXJuIHZvaWQgZmx1
c2hfdGhyZWFkKHZvaWQpOwpleHRlcm4gdm9pZCBleGl0X3RocmVhZCh2b2lkKTsKCmV4dGVybiB2
b2lkIGV4aXRfbW1fUmQ1NjBlZTViKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQg
ZXhpdF9maWxlc19SODM5ZjViNzMoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBl
eGl0X3NpZ2hhbmRfUjQzZTZmOGIzKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKCmV4dGVybiB2b2lk
IHJlcGFyZW50X3RvX2luaXRfUmVjNjE1OGQwKHZvaWQpOwpleHRlcm4gdm9pZCBkYWVtb25pemVf
UmQ2NmEzNTRhKHZvaWQpOwoKZXh0ZXJuIGludCBkb19leGVjdmVfUjljNjIwOThmKGNoYXIgKiwg
Y2hhciAqKiwgY2hhciAqKiwgc3RydWN0IHB0X3JlZ3MgKik7CmV4dGVybiBpbnQgZG9fZm9yayh1
bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBzdHJ1Y3QgcHRfcmVncyAqLCB1bnNpZ25lZCBs
b25nKTsKCmV4dGVybiB2b2lkIGFkZF93YWl0X3F1ZXVlX1IzZjdlNGNkNih3YWl0X3F1ZXVlX2hl
YWRfdCAqcSwgd2FpdF9xdWV1ZV90ICogd2FpdCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp
OwpleHRlcm4gdm9pZCBhZGRfd2FpdF9xdWV1ZV9leGNsdXNpdmVfUjUyYWYyM2Q5KHdhaXRfcXVl
dWVfaGVhZF90ICpxLCB3YWl0X3F1ZXVlX3QgKiB3YWl0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt
KDMpKSk7CmV4dGVybiB2b2lkIHJlbW92ZV93YWl0X3F1ZXVlX1I2ZTIwZDBhZCh3YWl0X3F1ZXVl
X2hlYWRfdCAqcSwgd2FpdF9xdWV1ZV90ICogd2FpdCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgz
KSkpOwojIDg3NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpzdGF0aWMg
aW5saW5lIHZvaWQgZGVsX2Zyb21fcnVucXVldWUoc3RydWN0IHRhc2tfc3RydWN0ICogcCkKewog
ICAgICAgIG5yX3J1bm5pbmdfUmNhM2M2ZDc4LS07CiAgICAgICAgcC0+c2xlZXBfdGltZSA9IGpp
ZmZpZXNfUjBkYTAyZDY3OwogICAgICAgIGxpc3RfZGVsKCZwLT5ydW5fbGlzdCk7CiAgICAgICAg
cC0+cnVuX2xpc3QubmV4dCA9ICgodm9pZCAqKTApOwp9CgpzdGF0aWMgaW5saW5lIGludCB0YXNr
X29uX3J1bnF1ZXVlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAgICAgIHJldHVybiAocC0+
cnVuX2xpc3QubmV4dCAhPSAoKHZvaWQgKikwKSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB1bmhh
c2hfcHJvY2VzcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKICAgICAgICBpZiAodGFza19vbl9y
dW5xdWV1ZShwKSkgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwogICAg
ICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsgKHZvaWQp
KCZ0YXNrbGlzdF9sb2NrX1I5OTljODBhMik7IH0gd2hpbGUgKDApOwogICAgICAgIG5yX3RocmVh
ZHMtLTsKICAgICAgICB1bmhhc2hfcGlkKHApOwogICAgICAgIGRvIHsgKHApLT5uZXh0X3Rhc2st
PnByZXZfdGFzayA9IChwKS0+cHJldl90YXNrOyAocCktPnByZXZfdGFzay0+bmV4dF90YXNrID0g
KHApLT5uZXh0X3Rhc2s7IGlmICgocCktPnBfb3NwdHIpIChwKS0+cF9vc3B0ci0+cF95c3B0ciA9
IChwKS0+cF95c3B0cjsgaWYgKChwKS0+cF95c3B0cikgKHApLT5wX3lzcHRyLT5wX29zcHRyID0g
KHApLT5wX29zcHRyOyBlbHNlIChwKS0+cF9wcHRyLT5wX2NwdHIgPSAocCktPnBfb3NwdHI7IH0g
d2hpbGUgKDApOwogICAgICAgIGxpc3RfZGVsKCZwLT50aHJlYWRfZ3JvdXApOwogICAgICAgIGRv
IHsgZG8geyB9IHdoaWxlKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygic3RpIjogOiA6Im1lbW9y
eSIpOyB9IHdoaWxlICgwKTsKfQoKCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrX2xvY2soc3RydWN0
IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgKHZvaWQpKCZwLT5hbGxvY19sb2NrKTsKfQoKc3Rh
dGljIGlubGluZSB2b2lkIHRhc2tfdW5sb2NrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAg
ICAgIGRvIHsgfSB3aGlsZSgwKTsKfQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIGRfcGF0aChzdHJ1
Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCB2ZnNtb3VudCAqdmZzbW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgKmJ1ZiwgaW50IGJ1ZmxlbikKewogICAgICAgIGNoYXIg
KnJlczsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKnJvb3RtbnQ7CiAgICAgICAgc3RydWN0IGRl
bnRyeSAqcm9vdDsKICAgICAgICAodm9pZCkoJmdldF9jdXJyZW50KCktPmZzLT5sb2NrKTsKICAg
ICAgICByb290bW50ID0gbW50Z2V0KGdldF9jdXJyZW50KCktPmZzLT5yb290bW50KTsKICAgICAg
ICByb290ID0gZGdldChnZXRfY3VycmVudCgpLT5mcy0+cm9vdCk7CiAgICAgICAgZG8geyB9IHdo
aWxlKDApOwogICAgICAgICh2b2lkKSgmZGNhY2hlX2xvY2tfUjczNDYzY2VmKTsKICAgICAgICBy
ZXMgPSBfX2RfcGF0aF9SMjg5Yjk0YmMoZGVudHJ5LCB2ZnNtbnQsIHJvb3QsIHJvb3RtbnQsIGJ1
ZiwgYnVmbGVuKTsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAgZHB1dF9SYmZlMmIy
NTgocm9vdCk7CiAgICAgICAgbW50cHV0KHJvb3RtbnQpOwogICAgICAgIHJldHVybiByZXM7Cn0K
IyA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21tLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDEKIyA2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L21tLmgiIDIKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZp
Zy5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW0uaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3RyaW5nLmgiIDEKIyAxMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9tbS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9saXN0LmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tbS5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMQoKCgoKCgojIDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA4ICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L21tem9uZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9zcGlubG9jay5oIiAxCiMgOSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tbXpv
bmUuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbGlzdC5oIiAxCiMgMTAg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW16b25lLmgiIDIKIyAyMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKdHlwZWRlZiBzdHJ1Y3QgZnJlZV9hcmVhX3N0
cnVjdCB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBmcmVlX2xpc3Q7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyAqbWFwOwp9IGZyZWVfYXJlYV90OwoKc3RydWN0IHBnbGlzdF9kYXRhOwojIDM2ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgp0eXBlZGVmIHN0cnVjdCB6b25l
X3N0cnVjdCB7CgoKCiAgICAgICAgc3BpbmxvY2tfdCBsb2NrOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgZnJlZV9wYWdlc19SOTk0MWNjYjg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBwYWdlc19taW4s
IHBhZ2VzX2xvdywgcGFnZXNfaGlnaDsKICAgICAgICBpbnQgbmVlZF9iYWxhbmNlOwoKCgoKICAg
ICAgICBmcmVlX2FyZWFfdCBmcmVlX2FyZWFbMTBdOwoKCgoKICAgICAgICBzdHJ1Y3QgcGdsaXN0
X2RhdGEgKnpvbmVfcGdkYXQ7CiAgICAgICAgc3RydWN0IHBhZ2UgKnpvbmVfbWVtX21hcDsKICAg
ICAgICB1bnNpZ25lZCBsb25nIHpvbmVfc3RhcnRfcGFkZHI7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyB6b25lX3N0YXJ0X21hcG5yOwoKCgoKICAgICAgICBjaGFyICpuYW1lOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgc2l6ZTsKfSB6b25lX3Q7CiMgODEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvbW16b25lLmgiCnR5cGVkZWYgc3RydWN0IHpvbmVsaXN0X3N0cnVjdCB7CiAgICAgICAgem9u
ZV90ICogem9uZXMgWzMgKzFdOwp9IHpvbmVsaXN0X3Q7CiMgOTggIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvbW16b25lLmgiCnN0cnVjdCBib290bWVtX2RhdGE7CnR5cGVkZWYgc3RydWN0
IHBnbGlzdF9kYXRhIHsKICAgICAgICB6b25lX3Qgbm9kZV96b25lc1szXTsKICAgICAgICB6b25l
bGlzdF90IG5vZGVfem9uZWxpc3RzWzB4MGYgKzFdOwogICAgICAgIGludCBucl96b25lczsKICAg
ICAgICBzdHJ1Y3QgcGFnZSAqbm9kZV9tZW1fbWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgKnZh
bGlkX2FkZHJfYml0bWFwOwogICAgICAgIHN0cnVjdCBib290bWVtX2RhdGEgKmJkYXRhOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgbm9kZV9zdGFydF9wYWRkcjsKICAgICAgICB1bnNpZ25lZCBsb25n
IG5vZGVfc3RhcnRfbWFwbnI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBub2RlX3NpemU7CiAgICAg
ICAgaW50IG5vZGVfaWQ7CiAgICAgICAgc3RydWN0IHBnbGlzdF9kYXRhICpub2RlX25leHQ7Cn0g
cGdfZGF0YV90OwoKZXh0ZXJuIGludCBudW1ub2RlczsKZXh0ZXJuIHBnX2RhdGFfdCAqcGdkYXRf
bGlzdDsKIyAxMjMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW16b25lLmgiCnN0cnVj
dCBwYWdlOwpleHRlcm4gdm9pZCBzaG93X2ZyZWVfYXJlYXNfY29yZShwZ19kYXRhX3QgKnBnZGF0
KTsKZXh0ZXJuIHZvaWQgZnJlZV9hcmVhX2luaXRfY29yZShpbnQgbmlkLCBwZ19kYXRhX3QgKnBn
ZGF0LCBzdHJ1Y3QgcGFnZSAqKmdtYXAsCiAgdW5zaWduZWQgbG9uZyAqem9uZXNfc2l6ZSwgdW5z
aWduZWQgbG9uZyBwYWRkciwgdW5zaWduZWQgbG9uZyAqemhvbGVzX3NpemUsCiAgc3RydWN0IHBh
Z2UgKnBtYXApOwoKZXh0ZXJuIHBnX2RhdGFfdCBjb250aWdfcGFnZV9kYXRhOwojIDEzICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21tLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L3N3YXAuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
c3BpbmxvY2suaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3dhcC5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGFnZS5oIiAxCiMgNiAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9zd2FwLmgiIDIKIyAyNSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9zd2FwLmgiCnVuaW9uIHN3YXBfaGVhZGVyIHsKICAgICAgICBzdHJ1Y3QKICAgICAg
ICB7CiAgICAgICAgICAgICAgICBjaGFyIHJlc2VydmVkWygxVUwgPDwgMTIpIC0gMTBdOwogICAg
ICAgICAgICAgICAgY2hhciBtYWdpY1sxMF07CiAgICAgICAgfSBtYWdpYzsKICAgICAgICBzdHJ1
Y3QKICAgICAgICB7CiAgICAgICAgICAgICAgICBjaGFyIGJvb3RiaXRzWzEwMjRdOwogICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IHZlcnNpb247CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgbGFzdF9wYWdlOwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5yX2JhZHBhZ2VzOwog
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBhZGRpbmdbMTI1XTsKICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBiYWRwYWdlc1sxXTsKICAgICAgICB9IGluZm87Cn07CiMgNTEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3dhcC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvYXNtL2F0b21pYy5oIiAxCiMgNTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3dh
cC5oIiAyCiMgNjQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3dhcC5oIgpzdHJ1Y3Qg
c3dhcF9pbmZvX3N0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwogICAgICAgIGtk
ZXZfdCBzd2FwX2RldmljZTsKICAgICAgICBzcGlubG9ja190IHNkZXZfbG9jazsKICAgICAgICBz
dHJ1Y3QgZGVudHJ5ICogc3dhcF9maWxlOwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqc3dhcF92
ZnNtbnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgKiBzd2FwX21hcDsKICAgICAgICB1bnNpZ25l
ZCBpbnQgbG93ZXN0X2JpdDsKICAgICAgICB1bnNpZ25lZCBpbnQgaGlnaGVzdF9iaXQ7CiAgICAg
ICAgdW5zaWduZWQgaW50IGNsdXN0ZXJfbmV4dDsKICAgICAgICB1bnNpZ25lZCBpbnQgY2x1c3Rl
cl9ucjsKICAgICAgICBpbnQgcHJpbzsKICAgICAgICBpbnQgcGFnZXM7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBtYXg7CiAgICAgICAgaW50IG5leHQ7Cn07CgpleHRlcm4gaW50IG5yX3N3YXBfcGFn
ZXM7CgoKCgpleHRlcm4gdW5zaWduZWQgaW50IG5yX2ZyZWVfcGFnZXModm9pZCk7CmV4dGVybiB1
bnNpZ25lZCBpbnQgbnJfZnJlZV9idWZmZXJfcGFnZXModm9pZCk7CmV4dGVybiBpbnQgbnJfYWN0
aXZlX3BhZ2VzOwpleHRlcm4gaW50IG5yX2luYWN0aXZlX3BhZ2VzOwpleHRlcm4gYXRvbWljX3Qg
bnJfYXN5bmNfcGFnZXM7CmV4dGVybiBhdG9taWNfdCBwYWdlX2NhY2hlX3NpemU7CmV4dGVybiBh
dG9taWNfdCBidWZmZXJtZW1fcGFnZXM7CmV4dGVybiBzcGlubG9ja190IHBhZ2VjYWNoZV9sb2Nr
OwpleHRlcm4gdm9pZCBfX3JlbW92ZV9pbm9kZV9wYWdlKHN0cnVjdCBwYWdlICopOwoKCnN0cnVj
dCB0YXNrX3N0cnVjdDsKc3RydWN0IHZtX2FyZWFfc3RydWN0OwpzdHJ1Y3Qgc3lzaW5mbzsKCnN0
cnVjdCB6b25lX3Q7CgoKZXh0ZXJuIHZvaWQgbHJ1X2NhY2hlX2FkZChzdHJ1Y3QgcGFnZSAqKSBf
X2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIF9fbHJ1X2NhY2hlX2RlbChz
dHJ1Y3QgcGFnZSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIGxy
dV9jYWNoZV9kZWwoc3RydWN0IHBhZ2UgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwoK
ZXh0ZXJuIHZvaWQgYWN0aXZhdGVfcGFnZShzdHJ1Y3QgcGFnZSAqKSBfX2F0dHJpYnV0ZV9fKChy
ZWdwYXJtKDMpKSk7CgpleHRlcm4gdm9pZCBzd2FwX3NldHVwKHZvaWQpOwoKCmV4dGVybiB3YWl0
X3F1ZXVlX2hlYWRfdCBrc3dhcGRfd2FpdDsKZXh0ZXJuIGludCB0cnlfdG9fZnJlZV9wYWdlcyh6
b25lX3QgKiwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQpIF9fYXR0cmlidXRlX18oKHJlZ3Bh
cm0oMykpKTsKCgpleHRlcm4gdm9pZCByd19zd2FwX3BhZ2UoaW50LCBzdHJ1Y3QgcGFnZSAqKTsK
ZXh0ZXJuIHZvaWQgcndfc3dhcF9wYWdlX25vbG9jayhpbnQsIHN3cF9lbnRyeV90LCBjaGFyICop
OwoKCgoKCgpleHRlcm4gdm9pZCBzaG93X3N3YXBfY2FjaGVfaW5mbyh2b2lkKTsKCmV4dGVybiBp
bnQgYWRkX3RvX3N3YXBfY2FjaGUoc3RydWN0IHBhZ2UgKiwgc3dwX2VudHJ5X3QpOwpleHRlcm4g
dm9pZCBfX2RlbGV0ZV9mcm9tX3N3YXBfY2FjaGUoc3RydWN0IHBhZ2UgKnBhZ2UpOwpleHRlcm4g
dm9pZCBkZWxldGVfZnJvbV9zd2FwX2NhY2hlKHN0cnVjdCBwYWdlICpwYWdlKTsKZXh0ZXJuIHZv
aWQgZnJlZV9wYWdlX2FuZF9zd2FwX2NhY2hlKHN0cnVjdCBwYWdlICpwYWdlKTsKZXh0ZXJuIHN0
cnVjdCBwYWdlICogbG9va3VwX3N3YXBfY2FjaGUoc3dwX2VudHJ5X3QpOwpleHRlcm4gc3RydWN0
IHBhZ2UgKiByZWFkX3N3YXBfY2FjaGVfYXN5bmMoc3dwX2VudHJ5X3QpOwoKCmV4dGVybiB2b2lk
IG91dF9vZl9tZW1vcnkodm9pZCk7CgoKZXh0ZXJuIGludCB0b3RhbF9zd2FwX3BhZ2VzOwpleHRl
cm4gdW5zaWduZWQgaW50IG5yX3N3YXBmaWxlczsKZXh0ZXJuIHN0cnVjdCBzd2FwX2luZm9fc3Ry
dWN0IHN3YXBfaW5mb1tdOwpleHRlcm4gaW50IGlzX3N3YXBfcGFydGl0aW9uKGtkZXZfdCk7CmV4
dGVybiB2b2lkIHNpX3N3YXBpbmZvKHN0cnVjdCBzeXNpbmZvICopOwpleHRlcm4gc3dwX2VudHJ5
X3QgZ2V0X3N3YXBfcGFnZSh2b2lkKTsKZXh0ZXJuIHZvaWQgZ2V0X3N3YXBoYW5kbGVfaW5mbyhz
d3BfZW50cnlfdCwgdW5zaWduZWQgbG9uZyAqLCBrZGV2X3QgKiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqKik7CmV4dGVybiBpbnQgc3dhcF9k
dXBsaWNhdGUoc3dwX2VudHJ5X3QpOwpleHRlcm4gaW50IHN3YXBfY291bnQoc3RydWN0IHBhZ2Ug
Kik7CmV4dGVybiBpbnQgdmFsaWRfc3dhcGhhbmRsZXMoc3dwX2VudHJ5X3QsIHVuc2lnbmVkIGxv
bmcgKik7CmV4dGVybiB2b2lkIHN3YXBfZnJlZShzd3BfZW50cnlfdCk7CmV4dGVybiB2b2lkIGZy
ZWVfc3dhcF9hbmRfY2FjaGUoc3dwX2VudHJ5X3QpOwpzdHJ1Y3Qgc3dhcF9saXN0X3QgewogICAg
ICAgIGludCBoZWFkOwogICAgICAgIGludCBuZXh0Owp9OwpleHRlcm4gc3RydWN0IHN3YXBfbGlz
dF90IHN3YXBfbGlzdDsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zd2Fw
b2ZmKGNvbnN0IGNoYXIgKik7CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNf
c3dhcG9uKGNvbnN0IGNoYXIgKiwgaW50KTsKCmV4dGVybiBzcGlubG9ja190IHBhZ2VtYXBfbHJ1
X2xvY2s7CgpleHRlcm4gdm9pZCBtYXJrX3BhZ2VfYWNjZXNzZWQoc3RydWN0IHBhZ2UgKikgX19h
dHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwojIDIwMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9zd2FwLmgiCmV4dGVybiBzcGlubG9ja190IHN3YXBsb2NrOwoKCgoKCgpleHRlcm4gdm9p
ZCBzaG1lbV91bnVzZShzd3BfZW50cnlfdCBlbnRyeSwgc3RydWN0IHBhZ2UgKnBhZ2UpOwojIDE0
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21tLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L3JidHJlZS5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvbW0uaCIgMgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbWF4X21hcG5yX1IwMTEzOWZmYzsK
ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbnVtX3BoeXNwYWdlc19SMDk0OGNkZTk7CmV4dGVybiB2b2lk
ICogaGlnaF9tZW1vcnlfUjhhN2QxYzMxOwpleHRlcm4gaW50IHBhZ2VfY2x1c3RlcjsKCmV4dGVy
biBzdHJ1Y3QgbGlzdF9oZWFkIGFjdGl2ZV9saXN0OwpleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBp
bmFjdGl2ZV9saXN0OwoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wYWdlLmgiIDEK
IyAyNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tbS5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9hc20vcGd0YWJsZS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9jb25maWcuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Bn
dGFibGUuaCIgMgojIDE2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiCiMg
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDEKIyAxNyAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9hc20vcGd0YWJsZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9hc20vZml4bWFwLmgiIDEKIyAxNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vZml4
bWFwLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDE3
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9maXhtYXAuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgva2VybmVsLmgiIDEKIyAxOCAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9hc20vZml4bWFwLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9hcGljZGVm
LmgiIDEKIyAxMjIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2FwaWNkZWYuaCIKc3RydWN0
IGxvY2FsX2FwaWMgewoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0
XTsgfSBfX3Jlc2VydmVkXzAxOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNl
cnZlZFs0XTsgfSBfX3Jlc2VydmVkXzAyOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMSA6IDI0LAogICAgICAgICAgICAgICAgICAgICAg
ICBwaHlzX2FwaWNfaWQgOiA0LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIg
OiA0OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbM107CiAgICAgICAg
fSBpZDsKCiAgICAgICAgY29uc3QKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50IHZlcnNpb24gOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVk
XzEgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBtYXhfbHZ0IDogOCwKICAgICAgICAgICAg
ICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogODsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCBfX3Jlc2VydmVkWzNdOwogICAgICAgIH0gdmVyc2lvbjsKCiAgICAgICAgc3RydWN0IHsgdW5z
aWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8wMzsKCiAgICAgICAgc3RydWN0
IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8wNDsKCiAgICAgICAg
c3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8wNTsKCiAg
ICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8w
NjsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwcmlvcml0
eSA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDI0OwogICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsKICAgICAgICB9IHRwcjsKCiAg
ICAgICAgY29uc3QKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IHByaW9yaXR5IDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogMjQ7
CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8yWzNdOwogICAgICAgIH0g
YXByOwoKICAgICAgICBjb25zdAogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgcHJpb3JpdHkgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVk
XzEgOiAyNDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107CiAg
ICAgICAgfSBwcHI7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgZW9pOwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbM107CiAgICAg
ICAgfSBlb2k7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9
IF9fcmVzZXJ2ZWRfMDc7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgX19yZXNlcnZlZF8xIDogMjQsCiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxf
ZGVzdCA6IDg7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8yWzNdOwog
ICAgICAgIH0gbGRyOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IF9fcmVzZXJ2ZWRfMSA6IDI4LAogICAgICAgICAgICAgICAgICAgICAgICBtb2RlbCA6IDQ7
CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8yWzNdOwogICAgICAgIH0g
ZGZyOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNwdXJp
b3VzX3ZlY3RvciA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIGFwaWNfZW5hYmxlZCA6IDEs
CiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzX2NwdSA6IDEsCiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDIyOwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9f
cmVzZXJ2ZWRfM1szXTsKICAgICAgICB9IHN2cjsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBiaXRmaWVsZDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCBfX3Jlc2VydmVkWzNdOwogICAgICAgIH0gaXNyIFs4XTsKCiAgICAgICAgc3RydWN0IHsKICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBiaXRmaWVsZDsKICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBfX3Jlc2VydmVkWzNdOwogICAgICAgIH0gdG1yIFs4XTsKCiAgICAgICAgc3RydWN0
IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBiaXRmaWVsZDsKICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzNdOwogICAgICAgIH0gaXJyIFs4XTsKCiAgICAgICAg
dW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IHNlbmRfY3NfZXJyb3IgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlY2VpdmVfY3NfZXJyb3IgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbmRfYWNjZXB0X2Vycm9yIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWNlaXZlX2FjY2VwdF9lcnJvciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19yZXNlcnZlZF8xIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5k
X2lsbGVnYWxfdmVjdG9yIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNl
aXZlX2lsbGVnYWxfdmVjdG9yIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bGxlZ2FsX3JlZ2lzdGVyX2FkZHJlc3MgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fcmVzZXJ2ZWRfMiA6IDI0OwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgX19yZXNlcnZlZF8zWzNdOwogICAgICAgICAgICAgICAgfSBlcnJvcl9iaXRzOwogICAgICAg
ICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGVy
cm9yczsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfM1sz
XTsKICAgICAgICAgICAgICAgIH0gYWxsX2Vycm9yczsKICAgICAgICB9IGVzcjsKCiAgICAgICAg
c3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8wODsKCiAg
ICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8w
OTsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNl
cnZlZF8xMDsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0g
X19yZXNlcnZlZF8xMTsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRb
NF07IH0gX19yZXNlcnZlZF8xMjsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVz
ZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xMzsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50
IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xNDsKCiAgICAgICAgc3RydWN0IHsKICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCB2ZWN0b3IgOiA4LAogICAgICAgICAgICAgICAgICAgICAg
ICBkZWxpdmVyeV9tb2RlIDogMywKICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25f
bW9kZSA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDEsCiAgICAgICAgICAgICAgICAg
ICAgICAgIGxldmVsIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlciA6IDEsCiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDIsCiAgICAgICAgICAgICAgICAg
ICAgICAgIHNob3J0aGFuZCA6IDIsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRf
MyA6IDEyOwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfNFszXTsKICAg
ICAgICB9IGljcjE7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bmlvbiB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzEgOiAyNCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaHlzX2Rlc3QgOiA0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDQ7CiAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzMgOiAyNCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsb2dpY2FsX2Rlc3QgOiA4OwogICAgICAgICAgICAgICAgfSBkZXN0OwogICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfNFszXTsKICAgICAgICB9IGljcjI7
CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmVjdG9yIDog
OCwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogNCwKICAgICAgICAgICAg
ICAgICAgICAgICAgZGVsaXZlcnlfc3RhdHVzIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAg
X19yZXNlcnZlZF8yIDogMywKICAgICAgICAgICAgICAgICAgICAgICAgbWFzayA6IDEsCiAgICAg
ICAgICAgICAgICAgICAgICAgIHRpbWVyX21vZGUgOiAxLAogICAgICAgICAgICAgICAgICAgICAg
ICBfX3Jlc2VydmVkXzMgOiAxNDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2Vy
dmVkXzRbM107CiAgICAgICAgfSBsdnRfdGltZXI7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVk
IGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTU7CgogICAgICAgIHN0cnVjdCB7CiAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmVjdG9yIDogOCwKICAgICAgICAgICAgICAgICAg
ICAgICAgZGVsaXZlcnlfbW9kZSA6IDMsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2
ZWRfMSA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDMsCiAgICAgICAgICAgICAgICAg
ICAgICAgIG1hc2sgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzMgOiAx
NTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzRbM107CiAgICAgICAg
fSBsdnRfcGM7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
dmVjdG9yIDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnlfbW9kZSA6IDMsCiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDEsCiAgICAgICAgICAgICAgICAg
ICAgICAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHBvbGFy
aXR5IDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlX2lyciA6IDEsCiAgICAgICAg
ICAgICAgICAgICAgICAgIHRyaWdnZXIgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBtYXNr
IDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogMTU7CiAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8zWzNdOwogICAgICAgIH0gbHZ0X2xpbnQw
OwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZlY3RvciA6
IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X21vZGUgOiAzLAogICAgICAgICAg
ICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBk
ZWxpdmVyeV9zdGF0dXMgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBwb2xhcml0eSA6IDEs
CiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZV9pcnIgOiAxLAogICAgICAgICAgICAgICAg
ICAgICAgICB0cmlnZ2VyIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgbWFzayA6IDEsCiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDE1OwogICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfM1szXTsKICAgICAgICB9IGx2dF9saW50MTsKCiAgICAg
ICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZWN0b3IgOiA4LAogICAg
ICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiA0LAogICAgICAgICAgICAgICAgICAg
ICAgICBkZWxpdmVyeV9zdGF0dXMgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2Vy
dmVkXzIgOiAzLAogICAgICAgICAgICAgICAgICAgICAgICBtYXNrIDogMSwKICAgICAgICAgICAg
ICAgICAgICAgICAgX19yZXNlcnZlZF8zIDogMTU7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgX19yZXNlcnZlZF80WzNdOwogICAgICAgIH0gbHZ0X2Vycm9yOwoKICAgICAgICBzdHJ1Y3Qg
ewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGluaXRpYWxfY291bnQ7CiAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8yWzNdOwogICAgICAgIH0gdGltZXJfaWNyOwoK
ICAgICAgICBjb25zdAogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgY3Vycl9jb3VudDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJb
M107CiAgICAgICAgfSB0aW1lcl9jY3I7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBf
X3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTY7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVk
IGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTc7CgogICAgICAgIHN0cnVjdCB7IHVu
c2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTg7CgogICAgICAgIHN0cnVj
dCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTk7CgogICAgICAg
IHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGl2aXNvciA6IDQsCiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDI4OwogICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsKICAgICAgICB9IHRpbWVyX2RjcjsKCiAgICAgICAg
c3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8yMDsKCn0g
X19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwojIDE5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2Fz
bS9maXhtYXAuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BhZ2UuaCIgMQoj
IDIwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9maXhtYXAuaCIgMgojIDUwICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2FzbS9maXhtYXAuaCIKZW51bSBmaXhlZF9hZGRyZXNzZXMgewojIDY4
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9maXhtYXAuaCIKICAgICAgICBfX2VuZF9vZl9m
aXhlZF9hZGRyZXNzZXMKfTsKCmV4dGVybiB2b2lkIF9fc2V0X2ZpeG1hcCAoZW51bSBmaXhlZF9h
ZGRyZXNzZXMgaWR4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbG9uZyBwaHlzLCBwZ3Byb3RfdCBmbGFncyk7CiMgOTQgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvYXNtL2ZpeG1hcC5oIgpleHRlcm4gdm9pZCBfX3RoaXNfZml4bWFwX2RvZXNfbm90X2V4
aXN0KHZvaWQpOwoKCgoKCgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgZml4X3RvX3ZpcnQo
Y29uc3QgdW5zaWduZWQgaW50IGlkeCkKewojIDExMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9h
c20vZml4bWFwLmgiCiAgICAgICAgaWYgKGlkeCA+PSBfX2VuZF9vZl9maXhlZF9hZGRyZXNzZXMp
CiAgICAgICAgICAgICAgICBfX3RoaXNfZml4bWFwX2RvZXNfbm90X2V4aXN0KCk7CgogICAgICAg
IHJldHVybiAoKDB4ZmZmZmUwMDBVTCkgLSAoKGlkeCkgPDwgMTIpKTsKfQojIDE4ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L3RocmVhZHMuaCIgMQojIDE5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9w
Z3RhYmxlLmgiIDIKCgoKCgpleHRlcm4gcGdkX3Qgc3dhcHBlcl9wZ19kaXJbMTAyNF07CmV4dGVy
biB2b2lkIHBhZ2luZ19pbml0KHZvaWQpOwojIDY3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2Fz
bS9wZ3RhYmxlLmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIHBna2Vybl9tYXNrOwojIDk1ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIGVt
cHR5X3plcm9fcGFnZVsxMDI0XTsKIyAxMTUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Bn
dGFibGUuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wZ3RhYmxlLTJsZXZlbC5o
IiAxCiMgMzIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BndGFibGUtMmxldmVsLmgiCnN0
YXRpYyBpbmxpbmUgaW50IHBnZF9ub25lKHBnZF90IHBnZCkgeyByZXR1cm4gMDsgfQpzdGF0aWMg
aW5saW5lIGludCBwZ2RfYmFkKHBnZF90IHBnZCkgeyByZXR1cm4gMDsgfQpzdGF0aWMgaW5saW5l
IGludCBwZ2RfcHJlc2VudChwZ2RfdCBwZ2QpIHsgcmV0dXJuIDE7IH0KIyA1MyAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9hc20vcGd0YWJsZS0ybGV2ZWwuaCIKc3RhdGljIGlubGluZSBwbWRfdCAq
IHBtZF9vZmZzZXQocGdkX3QgKiBkaXIsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKewogICAgICAg
IHJldHVybiAocG1kX3QgKikgZGlyOwp9CiMgMTE2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2Fz
bS9wZ3RhYmxlLmgiIDIKIyAyNTYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BndGFibGUu
aCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcGcwWzEwMjRdOwojIDI3NyAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9hc20vcGd0YWJsZS5oIgpzdGF0aWMgaW5saW5lIGludCBwdGVfcmVhZChwdGVfdCBw
dGUpIHsgcmV0dXJuIChwdGUpLnB0ZV9sb3cgJiAweDAwNDsgfQpzdGF0aWMgaW5saW5lIGludCBw
dGVfZXhlYyhwdGVfdCBwdGUpIHsgcmV0dXJuIChwdGUpLnB0ZV9sb3cgJiAweDAwNDsgfQpzdGF0
aWMgaW5saW5lIGludCBwdGVfZGlydHkocHRlX3QgcHRlKSB7IHJldHVybiAocHRlKS5wdGVfbG93
ICYgMHgwNDA7IH0Kc3RhdGljIGlubGluZSBpbnQgcHRlX3lvdW5nKHB0ZV90IHB0ZSkgeyByZXR1
cm4gKHB0ZSkucHRlX2xvdyAmIDB4MDIwOyB9CnN0YXRpYyBpbmxpbmUgaW50IHB0ZV93cml0ZShw
dGVfdCBwdGUpIHsgcmV0dXJuIChwdGUpLnB0ZV9sb3cgJiAweDAwMjsgfQoKc3RhdGljIGlubGlu
ZSBwdGVfdCBwdGVfcmRwcm90ZWN0KHB0ZV90IHB0ZSkgeyAocHRlKS5wdGVfbG93ICY9IH4weDAw
NDsgcmV0dXJuIHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9leHByb3RlY3QocHRlX3Qg
cHRlKSB7IChwdGUpLnB0ZV9sb3cgJj0gfjB4MDA0OyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxp
bmUgcHRlX3QgcHRlX21rY2xlYW4ocHRlX3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cgJj0gfjB4MDQw
OyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21rb2xkKHB0ZV90IHB0ZSkg
eyAocHRlKS5wdGVfbG93ICY9IH4weDAyMDsgcmV0dXJuIHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0
ZV90IHB0ZV93cnByb3RlY3QocHRlX3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cgJj0gfjB4MDAyOyBy
ZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21rcmVhZChwdGVfdCBwdGUpIHsg
KHB0ZSkucHRlX2xvdyB8PSAweDAwNDsgcmV0dXJuIHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0ZV90
IHB0ZV9ta2V4ZWMocHRlX3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cgfD0gMHgwMDQ7IHJldHVybiBw
dGU7IH0Kc3RhdGljIGlubGluZSBwdGVfdCBwdGVfbWtkaXJ0eShwdGVfdCBwdGUpIHsgKHB0ZSku
cHRlX2xvdyB8PSAweDA0MDsgcmV0dXJuIHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9t
a3lvdW5nKHB0ZV90IHB0ZSkgeyAocHRlKS5wdGVfbG93IHw9IDB4MDIwOyByZXR1cm4gcHRlOyB9
CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21rd3JpdGUocHRlX3QgcHRlKSB7IChwdGUpLnB0ZV9s
b3cgfD0gMHgwMDI7IHJldHVybiBwdGU7IH0KCnN0YXRpYyBpbmxpbmUgaW50IHB0ZXBfdGVzdF9h
bmRfY2xlYXJfZGlydHkocHRlX3QgKnB0ZXApIHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdCg2
LCBwdGVwKTsgfQpzdGF0aWMgaW5saW5lIGludCBwdGVwX3Rlc3RfYW5kX2NsZWFyX3lvdW5nKHB0
ZV90ICpwdGVwKSB7IHJldHVybiB0ZXN0X2FuZF9jbGVhcl9iaXQoNSwgcHRlcCk7IH0Kc3RhdGlj
IGlubGluZSB2b2lkIHB0ZXBfc2V0X3dycHJvdGVjdChwdGVfdCAqcHRlcCkgeyBjbGVhcl9iaXQo
MSwgcHRlcCk7IH0Kc3RhdGljIGlubGluZSB2b2lkIHB0ZXBfbWtkaXJ0eShwdGVfdCAqcHRlcCkg
eyBzZXRfYml0KDYsIHB0ZXApOyB9CiMgMzA5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9w
Z3RhYmxlLmgiCnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21vZGlmeShwdGVfdCBwdGUsIHBncHJv
dF90IG5ld3Byb3QpCnsKICAgICAgICBwdGUucHRlX2xvdyAmPSAoKH4oKDFVTCA8PCAxMiktMSkp
IHwgMHgwMjAgfCAweDA0MCk7CiAgICAgICAgcHRlLnB0ZV9sb3cgfD0gKChuZXdwcm90KS5wZ3By
b3QpOwogICAgICAgIHJldHVybiBwdGU7Cn0KIyAyNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9tbS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEK
IyAyNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tbS5oIiAyCiMgNDMgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvbW0uaCIKc3RydWN0IHZtX2FyZWFfc3RydWN0IHsKICAgICAg
ICBzdHJ1Y3QgbW1fc3RydWN0ICogdm1fbW07CiAgICAgICAgdW5zaWduZWQgbG9uZyB2bV9zdGFy
dDsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtX2VuZDsKCgoKICAgICAgICBzdHJ1Y3Qgdm1fYXJl
YV9zdHJ1Y3QgKnZtX25leHQ7CgogICAgICAgIHBncHJvdF90IHZtX3BhZ2VfcHJvdDsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHZtX2ZsYWdzOwoKICAgICAgICByYl9ub2RlX3Qgdm1fcmI7CgoKCgoK
CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bV9uZXh0X3NoYXJlOwogICAgICAgIHN0
cnVjdCB2bV9hcmVhX3N0cnVjdCAqKnZtX3BwcmV2X3NoYXJlOwoKCiAgICAgICAgc3RydWN0IHZt
X29wZXJhdGlvbnNfc3RydWN0ICogdm1fb3BzOwoKCiAgICAgICAgdW5zaWduZWQgbG9uZyB2bV9w
Z29mZjsKCiAgICAgICAgc3RydWN0IGZpbGUgKiB2bV9maWxlOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgdm1fcmFlbmQ7CiAgICAgICAgdm9pZCAqIHZtX3ByaXZhdGVfZGF0YTsKfTsKIyAxMTUgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW0uaCIKZXh0ZXJuIGludCB2bV9taW5fcmVhZGFo
ZWFkX1I0MWVmMzE0ZDsKZXh0ZXJuIGludCB2bV9tYXhfcmVhZGFoZWFkX1JmOGM5YWEzYzsKCgoK
CgpleHRlcm4gcGdwcm90X3QgcHJvdGVjdGlvbl9tYXBbMTZdOwoKCgoKCgoKc3RydWN0IHZtX29w
ZXJhdGlvbnNfc3RydWN0IHsKICAgICAgICB2b2lkICgqb3Blbikoc3RydWN0IHZtX2FyZWFfc3Ry
dWN0ICogYXJlYSk7CiAgICAgICAgdm9pZCAoKmNsb3NlKShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg
KiBhcmVhKTsKICAgICAgICBzdHJ1Y3QgcGFnZSAqICgqbm9wYWdlKShzdHJ1Y3Qgdm1fYXJlYV9z
dHJ1Y3QgKiBhcmVhLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIGludCB1bnVzZWQpOwp9OwojIDE1
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tbS5oIgp0eXBlZGVmIHN0cnVjdCBwYWdl
IHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CiAgICAgICAgc3RydWN0IGFkZHJlc3Nf
c3BhY2UgKm1hcHBpbmc7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpbmRleDsKICAgICAgICBzdHJ1
Y3QgcGFnZSAqbmV4dF9oYXNoOwoKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICB1bnNp
Z25lZCBsb25nIGZsYWdzOwoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxydTsKCiAgICAgICAg
d2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKICAgICAgICBzdHJ1Y3QgcGFnZSAqKnBwcmV2X2hhc2g7
CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogYnVmZmVyczsKICAgICAgICB2b2lkICp2aXJ0
dWFsOwoKICAgICAgICBzdHJ1Y3Qgem9uZV9zdHJ1Y3QgKnpvbmU7Cn0gbWVtX21hcF90OwojIDMw
NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tbS5oIgpleHRlcm4gdm9pZCBzZXRfcGFn
ZV9kaXJ0eShzdHJ1Y3QgcGFnZSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CiMgMzQ5
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21tLmgiCmV4dGVybiBtZW1fbWFwX3QgKiBt
ZW1fbWFwX1JjMzVhMDA3YTsKCgoKCgoKCmV4dGVybiBzdHJ1Y3QgcGFnZSAqIF9hbGxvY19wYWdl
c19SNTkwZjkxMDYodW5zaWduZWQgaW50IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpIF9f
YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHN0cnVjdCBwYWdlICogX19hbGxvY19w
YWdlc19SMzY4YmY5NjAodW5zaWduZWQgaW50IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIs
IHpvbmVsaXN0X3QgKnpvbmVsaXN0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVy
biBzdHJ1Y3QgcGFnZSAqIGFsbG9jX3BhZ2VzX25vZGVfUjk5MGYyYjc3KGludCBuaWQsIHVuc2ln
bmVkIGludCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyKTsKCnN0YXRpYyBpbmxpbmUgc3Ry
dWN0IHBhZ2UgKiBhbGxvY19wYWdlcyh1bnNpZ25lZCBpbnQgZ2ZwX21hc2ssIHVuc2lnbmVkIGlu
dCBvcmRlcikKewoKCgogICAgICAgIGlmIChvcmRlciA+PSAxMCkKICAgICAgICAgICAgICAgIHJl
dHVybiAoKHZvaWQgKikwKTsKICAgICAgICByZXR1cm4gX2FsbG9jX3BhZ2VzX1I1OTBmOTEwNihn
ZnBfbWFzaywgb3JkZXIpOwp9CgoKCmV4dGVybiB1bnNpZ25lZCBsb25nIF9fZ2V0X2ZyZWVfcGFn
ZXNfUjQ3ODRlNDI0KHVuc2lnbmVkIGludCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyKSBf
X2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB1bnNpZ25lZCBsb25nIGdldF96ZXJv
ZWRfcGFnZV9SMGMyMTg4YzcodW5zaWduZWQgaW50IGdmcF9tYXNrKSBfX2F0dHJpYnV0ZV9fKChy
ZWdwYXJtKDMpKSk7CiMgMzkwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21tLmgiCmV4
dGVybiB2b2lkIF9fZnJlZV9wYWdlc19SZjRlZDlkYWIoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2ln
bmVkIGludCBvcmRlcikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCBm
cmVlX3BhZ2VzX1I5OTQxY2NiOCh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGludCBvcmRl
cikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwoKCgoKZXh0ZXJuIHZvaWQgc2hvd19mcmVl
X2FyZWFzKHZvaWQpOwpleHRlcm4gdm9pZCBzaG93X2ZyZWVfYXJlYXNfbm9kZShwZ19kYXRhX3Qg
KnBnZGF0KTsKCmV4dGVybiB2b2lkIGNsZWFyX3BhZ2VfdGFibGVzKHN0cnVjdCBtbV9zdHJ1Y3Qg
KiwgdW5zaWduZWQgbG9uZywgaW50KTsKCmV4dGVybiBpbnQgZmFpbF93cml0ZXBhZ2VfUjZhM2Ex
MzlmKHN0cnVjdCBwYWdlICopOwpzdHJ1Y3QgcGFnZSAqIHNobWVtX25vcGFnZShzdHJ1Y3Qgdm1f
YXJlYV9zdHJ1Y3QgKiB2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgaW50IHVudXNlZCk7CnN0
cnVjdCBmaWxlICpzaG1lbV9maWxlX3NldHVwX1JmNjZhZDE3ZShjaGFyICogbmFtZSwgbG9mZl90
IHNpemUpOwpleHRlcm4gdm9pZCBzaG1lbV9sb2NrKHN0cnVjdCBmaWxlICogZmlsZSwgaW50IGxv
Y2spOwpleHRlcm4gaW50IHNobWVtX3plcm9fc2V0dXAoc3RydWN0IHZtX2FyZWFfc3RydWN0ICop
OwoKZXh0ZXJuIHZvaWQgemFwX3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2ln
bmVkIGxvbmcgYWRkcmVzcywgdW5zaWduZWQgbG9uZyBzaXplKTsKZXh0ZXJuIGludCBjb3B5X3Bh
Z2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqZHN0LCBzdHJ1Y3QgbW1fc3RydWN0ICpzcmMsIHN0
cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTsKZXh0ZXJuIGludCByZW1hcF9wYWdlX3JhbmdlX1I2
OWQwMWU3Myh1bnNpZ25lZCBsb25nIGZyb20sIHVuc2lnbmVkIGxvbmcgdG8sIHVuc2lnbmVkIGxv
bmcgc2l6ZSwgcGdwcm90X3QgcHJvdCk7CmV4dGVybiBpbnQgemVyb21hcF9wYWdlX3JhbmdlKHVu
c2lnbmVkIGxvbmcgZnJvbSwgdW5zaWduZWQgbG9uZyBzaXplLCBwZ3Byb3RfdCBwcm90KTsKCmV4
dGVybiBpbnQgdm10cnVuY2F0ZV9SOTg2M2VhNWMoc3RydWN0IGlub2RlICogaW5vZGUsIGxvZmZf
dCBvZmZzZXQpOwpleHRlcm4gcG1kX3QgKl9fcG1kX2FsbG9jKHN0cnVjdCBtbV9zdHJ1Y3QgKm1t
LCBwZ2RfdCAqcGdkLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MpIF9fYXR0cmlidXRlX18oKHJlZ3Bh
cm0oMykpKTsKZXh0ZXJuIHB0ZV90ICpwdGVfYWxsb2Moc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBt
ZF90ICpwbWQsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykgX19hdHRyaWJ1dGVfXygocmVncGFybSgz
KSkpOwpleHRlcm4gaW50IGhhbmRsZV9tbV9mYXVsdChzdHJ1Y3QgbW1fc3RydWN0ICptbSxzdHJ1
Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCBpbnQgd3JpdGVf
YWNjZXNzKTsKZXh0ZXJuIGludCBtYWtlX3BhZ2VzX3ByZXNlbnQodW5zaWduZWQgbG9uZyBhZGRy
LCB1bnNpZ25lZCBsb25nIGVuZCk7CmV4dGVybiBpbnQgYWNjZXNzX3Byb2Nlc3Nfdm0oc3RydWN0
IHRhc2tfc3RydWN0ICp0c2ssIHVuc2lnbmVkIGxvbmcgYWRkciwgdm9pZCAqYnVmLCBpbnQgbGVu
LCBpbnQgd3JpdGUpOwpleHRlcm4gaW50IHB0cmFjZV9yZWFkZGF0YShzdHJ1Y3QgdGFza19zdHJ1
Y3QgKnRzaywgdW5zaWduZWQgbG9uZyBzcmMsIGNoYXIgKmRzdCwgaW50IGxlbik7CmV4dGVybiBp
bnQgcHRyYWNlX3dyaXRlZGF0YShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgY2hhciAqIHNyYywg
dW5zaWduZWQgbG9uZyBkc3QsIGludCBsZW4pOwpleHRlcm4gaW50IHB0cmFjZV9hdHRhY2goc3Ry
dWN0IHRhc2tfc3RydWN0ICp0c2spOwpleHRlcm4gaW50IHB0cmFjZV9kZXRhY2goc3RydWN0IHRh
c2tfc3RydWN0ICosIHVuc2lnbmVkIGludCk7CmV4dGVybiB2b2lkIHB0cmFjZV9kaXNhYmxlKHN0
cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIGludCBwdHJhY2VfY2hlY2tfYXR0YWNoKHN0cnVj
dCB0YXNrX3N0cnVjdCAqdGFzaywgaW50IGtpbGwpOwoKCgoKCgpzdGF0aWMgaW5saW5lIHBtZF90
ICpwbWRfYWxsb2Moc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QsIHVuc2lnbmVkIGxv
bmcgYWRkcmVzcykKewogICAgICAgIGlmIChwZ2Rfbm9uZSgqcGdkKSkKICAgICAgICAgICAgICAg
IHJldHVybiBfX3BtZF9hbGxvYyhtbSwgcGdkLCBhZGRyZXNzKTsKICAgICAgICByZXR1cm4gcG1k
X29mZnNldChwZ2QsIGFkZHJlc3MpOwp9CgpleHRlcm4gaW50IHBndF9jYWNoZV93YXRlclsyXTsK
ZXh0ZXJuIGludCBjaGVja19wZ3RfY2FjaGUodm9pZCk7CgpleHRlcm4gdm9pZCBmcmVlX2FyZWFf
aW5pdCh1bnNpZ25lZCBsb25nICogem9uZXNfc2l6ZSk7CmV4dGVybiB2b2lkIGZyZWVfYXJlYV9p
bml0X25vZGUoaW50IG5pZCwgcGdfZGF0YV90ICpwZ2RhdCwgc3RydWN0IHBhZ2UgKnBtYXAsCiAg
ICAgICAgdW5zaWduZWQgbG9uZyAqIHpvbmVzX3NpemUsIHVuc2lnbmVkIGxvbmcgem9uZV9zdGFy
dF9wYWRkciwKICAgICAgICB1bnNpZ25lZCBsb25nICp6aG9sZXNfc2l6ZSk7CmV4dGVybiB2b2lk
IG1lbV9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBzaG93X21lbSh2b2lkKTsKZXh0ZXJuIHZvaWQg
c2lfbWVtaW5mb19SYjNhMzA3YzYoc3RydWN0IHN5c2luZm8gKiB2YWwpOwpleHRlcm4gdm9pZCBz
d2FwaW5fcmVhZGFoZWFkKHN3cF9lbnRyeV90KTsKCmV4dGVybiBzdHJ1Y3QgYWRkcmVzc19zcGFj
ZSBzd2FwcGVyX3NwYWNlOwoKCnN0YXRpYyBpbmxpbmUgaW50IGlzX3BhZ2VfY2FjaGVfZnJlZWFi
bGUoc3RydWN0IHBhZ2UgKiBwYWdlKQp7CiAgICAgICAgcmV0dXJuICgoJihwYWdlKS0+Y291bnQp
LT5jb3VudGVyKSAtICEhcGFnZS0+YnVmZmVycyA9PSAxOwp9CgpleHRlcm4gaW50IGNhbl9zaGFy
ZV9zd2FwX3BhZ2Uoc3RydWN0IHBhZ2UgKik7CmV4dGVybiBpbnQgcmVtb3ZlX2V4Y2x1c2l2ZV9z
d2FwX3BhZ2Uoc3RydWN0IHBhZ2UgKik7CgpleHRlcm4gdm9pZCBfX2ZyZWVfcHRlKHB0ZV90KTsK
CgpleHRlcm4gdm9pZCBsb2NrX3ZtYV9tYXBwaW5ncyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7
CmV4dGVybiB2b2lkIHVubG9ja192bWFfbWFwcGluZ3Moc3RydWN0IHZtX2FyZWFfc3RydWN0ICop
OwpleHRlcm4gdm9pZCBpbnNlcnRfdm1fc3RydWN0KHN0cnVjdCBtbV9zdHJ1Y3QgKiwgc3RydWN0
IHZtX2FyZWFfc3RydWN0ICopOwpleHRlcm4gdm9pZCBfX2luc2VydF92bV9zdHJ1Y3Qoc3RydWN0
IG1tX3N0cnVjdCAqLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIGJ1aWxk
X21tYXBfcmIoc3RydWN0IG1tX3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQgZXhpdF9tbWFwKHN0cnVj
dCBtbV9zdHJ1Y3QgKik7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBnZXRfdW5tYXBwZWRfYXJlYV9S
NWQyOWFkNmQoc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5z
aWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBkb19tbWFw
X3Bnb2ZmX1IzZjQ5OGUyMChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgbG9uZyBhZGRyLAog
ICAgICAgIHVuc2lnbmVkIGxvbmcgbGVuLCB1bnNpZ25lZCBsb25nIHByb3QsCiAgICAgICAgdW5z
aWduZWQgbG9uZyBmbGFnLCB1bnNpZ25lZCBsb25nIHBnb2ZmKTsKCnN0YXRpYyBpbmxpbmUgdW5z
aWduZWQgbG9uZyBkb19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBsb25nIGFkZHIs
CiAgICAgICAgdW5zaWduZWQgbG9uZyBsZW4sIHVuc2lnbmVkIGxvbmcgcHJvdCwKICAgICAgICB1
bnNpZ25lZCBsb25nIGZsYWcsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KQp7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyByZXQgPSAtMjI7CiAgICAgICAgaWYgKChvZmZzZXQgKyAoKChsZW4pKygxVUwgPDwg
MTIpLTEpJih+KCgxVUwgPDwgMTIpLTEpKSkpIDwgb2Zmc2V0KQogICAgICAgICAgICAgICAgZ290
byBvdXQ7CiAgICAgICAgaWYgKCEob2Zmc2V0ICYgfih+KCgxVUwgPDwgMTIpLTEpKSkpCiAgICAg
ICAgICAgICAgICByZXQgPSBkb19tbWFwX3Bnb2ZmX1IzZjQ5OGUyMChmaWxlLCBhZGRyLCBsZW4s
IHByb3QsIGZsYWcsIG9mZnNldCA+PiAxMik7Cm91dDoKICAgICAgICByZXR1cm4gcmV0Owp9Cgpl
eHRlcm4gaW50IGRvX211bm1hcF9SOWI3MWU0NjQoc3RydWN0IG1tX3N0cnVjdCAqLCB1bnNpZ25l
ZCBsb25nLCBzaXplX3QpOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZG9fYnJrX1I5ZWVjZGUxNih1
bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3ZtYV91
bmxpbmsoc3RydWN0IG1tX3N0cnVjdCAqIG1tLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bWEs
IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIHByZXYpCnsKICAgICAgICBwcmV2LT52bV9uZXh0ID0g
dm1hLT52bV9uZXh0OwogICAgICAgIHJiX2VyYXNlKCZ2bWEtPnZtX3JiLCAmbW0tPm1tX3JiKTsK
ICAgICAgICBpZiAobW0tPm1tYXBfY2FjaGUgPT0gdm1hKQogICAgICAgICAgICAgICAgbW0tPm1t
YXBfY2FjaGUgPSBwcmV2Owp9CgpzdGF0aWMgaW5saW5lIGludCBjYW5fdm1hX21lcmdlKHN0cnVj
dCB2bV9hcmVhX3N0cnVjdCAqIHZtYSwgdW5zaWduZWQgbG9uZyB2bV9mbGFncykKewogICAgICAg
IGlmICghdm1hLT52bV9maWxlICYmIHZtYS0+dm1fZmxhZ3MgPT0gdm1fZmxhZ3MpCiAgICAgICAg
ICAgICAgICByZXR1cm4gMTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICByZXR1cm4gMDsK
fQoKc3RydWN0IHpvbmVfdDsKCmV4dGVybiB2b2lkIHJlbW92ZV9pbm9kZV9wYWdlKHN0cnVjdCBw
YWdlICopOwpleHRlcm4gdW5zaWduZWQgbG9uZyBwYWdlX3VudXNlKHN0cnVjdCBwYWdlICopOwpl
eHRlcm4gdm9pZCB0cnVuY2F0ZV9pbm9kZV9wYWdlc19SMDlkNDViZDMoc3RydWN0IGFkZHJlc3Nf
c3BhY2UgKiwgbG9mZl90KTsKCgpleHRlcm4gaW50IGZpbGVtYXBfc3luY19SMTkxMmM4OGYoc3Ry
dWN0IHZtX2FyZWFfc3RydWN0ICosIHVuc2lnbmVkIGxvbmcsIHNpemVfdCwgdW5zaWduZWQgaW50
KTsKZXh0ZXJuIHN0cnVjdCBwYWdlICpmaWxlbWFwX25vcGFnZV9SMzdjZTM0ZDAoc3RydWN0IHZt
X2FyZWFfc3RydWN0ICosIHVuc2lnbmVkIGxvbmcsIGludCk7CiMgNTUwICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L21tLmgiCnN0YXRpYyBpbmxpbmUgaW50IGV4cGFuZF9zdGFjayhzdHJ1
Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKewogICAgICAg
IHVuc2lnbmVkIGxvbmcgZ3JvdzsKCgoKCgoKICAgICAgICBhZGRyZXNzICY9ICh+KCgxVUwgPDwg
MTIpLTEpKTsKICAgICAgICBncm93ID0gKHZtYS0+dm1fc3RhcnQgLSBhZGRyZXNzKSA+PiAxMjsK
ICAgICAgICBpZiAodm1hLT52bV9lbmQgLSBhZGRyZXNzID4gZ2V0X2N1cnJlbnQoKS0+cmxpbVsz
XS5ybGltX2N1ciB8fAogICAgICAgICAgICAoKHZtYS0+dm1fbW0tPnRvdGFsX3ZtICsgZ3Jvdykg
PDwgMTIpID4gZ2V0X2N1cnJlbnQoKS0+cmxpbVs5XS5ybGltX2N1cikKICAgICAgICAgICAgICAg
IHJldHVybiAtMTI7CiAgICAgICAgKHZvaWQpKCZ2bWEtPnZtX21tLT5wYWdlX3RhYmxlX2xvY2sp
OwogICAgICAgIHZtYS0+dm1fc3RhcnQgPSBhZGRyZXNzOwogICAgICAgIHZtYS0+dm1fcGdvZmYg
LT0gZ3JvdzsKICAgICAgICB2bWEtPnZtX21tLT50b3RhbF92bSArPSBncm93OwogICAgICAgIGlm
ICh2bWEtPnZtX2ZsYWdzICYgMHgwMDAwMjAwMCkKICAgICAgICAgICAgICAgIHZtYS0+dm1fbW0t
PmxvY2tlZF92bSArPSBncm93OwogICAgICAgIGRvIHsgfSB3aGlsZSgwKTsKICAgICAgICByZXR1
cm4gMDsKfQoKCmV4dGVybiBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBmaW5kX3ZtYV9SYzY1NjA3
ZDAoc3RydWN0IG1tX3N0cnVjdCAqIG1tLCB1bnNpZ25lZCBsb25nIGFkZHIpOwpleHRlcm4gc3Ry
dWN0IHZtX2FyZWFfc3RydWN0ICogZmluZF92bWFfcHJldihzdHJ1Y3QgbW1fc3RydWN0ICogbW0s
IHVuc2lnbmVkIGxvbmcgYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICoqcHByZXYpOwoKCgpzdGF0aWMgaW5saW5l
IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIGZpbmRfdm1hX2ludGVyc2VjdGlvbihzdHJ1Y3QgbW1f
c3RydWN0ICogbW0sIHVuc2lnbmVkIGxvbmcgc3RhcnRfYWRkciwgdW5zaWduZWQgbG9uZyBlbmRf
YWRkcikKewogICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIHZtYSA9IGZpbmRfdm1hX1Jj
NjU2MDdkMChtbSxzdGFydF9hZGRyKTsKCiAgICAgICAgaWYgKHZtYSAmJiBlbmRfYWRkciA8PSB2
bWEtPnZtX3N0YXJ0KQogICAgICAgICAgICAgICAgdm1hID0gKCh2b2lkICopMCk7CiAgICAgICAg
cmV0dXJuIHZtYTsKfQoKZXh0ZXJuIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqZmluZF9leHRlbmRf
dm1hKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIpOwojIDE1ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NsYWIuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvY2FjaGUuaCIgMQojIDE2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3NsYWIuaCIgMgojIDQ4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NsYWIuaCIKZXh0
ZXJuIHZvaWQga21lbV9jYWNoZV9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBrbWVtX2NhY2hlX3Np
emVzX2luaXQodm9pZCk7CgpleHRlcm4ga21lbV9jYWNoZV90ICprbWVtX2ZpbmRfZ2VuZXJhbF9j
YWNoZXBfUjUyYmI2ODkxKHNpemVfdCwgaW50IGdmcGZsYWdzKTsKZXh0ZXJuIGttZW1fY2FjaGVf
dCAqa21lbV9jYWNoZV9jcmVhdGVfUmQxYzBiNGU2KGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBzaXpl
X3QsIHVuc2lnbmVkIGxvbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZvaWQgKCopKHZvaWQgKiwga21lbV9jYWNoZV90ICosIHVuc2lnbmVkIGxvbmcpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqKSh2b2lkICosIGttZW1fY2Fj
aGVfdCAqLCB1bnNpZ25lZCBsb25nKSk7CmV4dGVybiBpbnQga21lbV9jYWNoZV9kZXN0cm95X1Jk
ZjgzYzY5MihrbWVtX2NhY2hlX3QgKik7CmV4dGVybiBpbnQga21lbV9jYWNoZV9zaHJpbmtfUjEy
ZjdjZjA0KGttZW1fY2FjaGVfdCAqKTsKZXh0ZXJuIHZvaWQgKmttZW1fY2FjaGVfYWxsb2NfUjc1
ODEwOTU2KGttZW1fY2FjaGVfdCAqLCBpbnQpOwpleHRlcm4gdm9pZCBrbWVtX2NhY2hlX2ZyZWVf
Ujg5MWYyNjg2KGttZW1fY2FjaGVfdCAqLCB2b2lkICopOwoKZXh0ZXJuIHZvaWQgKmttYWxsb2Nf
UjkzZDRjZmU2KHNpemVfdCwgaW50KTsKZXh0ZXJuIHZvaWQga2ZyZWVfUjAzN2EwY2JhKGNvbnN0
IHZvaWQgKik7CgpleHRlcm4gaW50IGttZW1fY2FjaGVfcmVhcChpbnQpIF9fYXR0cmlidXRlX18o
KHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIGludCBzbGFiaW5mb19yZWFkX3Byb2MoY2hhciAqcGFnZSwg
Y2hhciAqKnN0YXJ0LCBvZmZfdCBvZmYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBjb3VudCwgaW50ICplb2YsIHZvaWQgKmRhdGEpOwpleHRlcm4gaW50IHNsYWJpbmZvX3dy
aXRlX3Byb2Moc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKmJ1ZmZlciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBjb3VudCwgdm9pZCAqZGF0YSk7CgoKZXh0
ZXJuIGttZW1fY2FjaGVfdCAqdm1fYXJlYV9jYWNoZXA7CmV4dGVybiBrbWVtX2NhY2hlX3QgKm1t
X2NhY2hlcDsKZXh0ZXJuIGttZW1fY2FjaGVfdCAqbmFtZXNfY2FjaGVwX1JkMjU0NjliNDsKZXh0
ZXJuIGttZW1fY2FjaGVfdCAqZmlsZXNfY2FjaGVwOwpleHRlcm4ga21lbV9jYWNoZV90ICpmaWxw
X2NhY2hlcDsKZXh0ZXJuIGttZW1fY2FjaGVfdCAqZHF1b3RfY2FjaGVwOwpleHRlcm4ga21lbV9j
YWNoZV90ICpiaF9jYWNoZXBfUmRjYzBiYjM3OwpleHRlcm4ga21lbV9jYWNoZV90ICpmc19jYWNo
ZXA7CmV4dGVybiBrbWVtX2NhY2hlX3QgKnNpZ2FjdF9jYWNoZXA7CiMgMzMgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvYXNtL3BjaS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20v
c2NhdHRlcmxpc3QuaCIgMQoKCgpzdHJ1Y3Qgc2NhdHRlcmxpc3QgewogICAgY2hhciAqIGFkZHJl
c3M7CgogICAgc3RydWN0IHBhZ2UgKiBwYWdlOwogICAgdW5zaWduZWQgaW50IG9mZnNldDsKCiAg
ICBkbWFfYWRkcl90IGRtYV9hZGRyZXNzOwogICAgdW5zaWduZWQgaW50IGxlbmd0aDsKfTsKIyAz
NCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGNpLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIiAxCiMgMzUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
YXNtL3BjaS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vaW8uaCIgMQoKCgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA1ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2FzbS9pby5oIiAyCiMgNDYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
YXNtL2lvLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC92bWFsbG9jLmgiIDEK
CgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDEKIyA1ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3ZtYWxsb2MuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvbW0uaCIgMQojIDYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
dm1hbGxvYy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zcGlubG9jay5o
IiAxCiMgNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC92bWFsbG9jLmgiIDIKCiMgMSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGd0YWJsZS5oIiAxCiMgOSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC92bWFsbG9jLmgiIDIKCgoKCgpzdHJ1Y3Qgdm1fc3RydWN0IHsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIHZvaWQgKiBhZGRyOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgc2l6ZTsKICAgICAgICBzdHJ1Y3Qgdm1fc3RydWN0ICogbmV4dDsKfTsKCmV4
dGVybiBzdHJ1Y3Qgdm1fc3RydWN0ICogZ2V0X3ZtX2FyZWEgKHVuc2lnbmVkIGxvbmcgc2l6ZSwg
dW5zaWduZWQgbG9uZyBmbGFncyk7CmV4dGVybiB2b2lkIHZmcmVlX1IyZmQxZDgxYyh2b2lkICog
YWRkcik7CmV4dGVybiB2b2lkICogX192bWFsbG9jX1I3OTk5NWM1YiAodW5zaWduZWQgbG9uZyBz
aXplLCBpbnQgZ2ZwX21hc2ssIHBncHJvdF90IHByb3QpOwpleHRlcm4gbG9uZyB2cmVhZChjaGFy
ICpidWYsIGNoYXIgKmFkZHIsIHVuc2lnbmVkIGxvbmcgY291bnQpOwpleHRlcm4gdm9pZCB2bWZy
ZWVfYXJlYV9wYWdlcyh1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7
CmV4dGVybiBpbnQgdm1hbGxvY19hcmVhX3BhZ2VzKHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgdW5z
aWduZWQgbG9uZyBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZ2ZwX21h
c2ssIHBncHJvdF90IHByb3QpOwoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCAqIHZtYWxsb2MgKHVu
c2lnbmVkIGxvbmcgc2l6ZSkKewogICAgICAgIHJldHVybiBfX3ZtYWxsb2NfUjc5OTk1YzViKHNp
emUsICgweDIwIHwgMHgxMCB8IDB4NDAgfCAweDgwIHwgMHgxMDApIHwgMHgwMiwgKChwZ3Byb3Rf
dCkgeyAoKCgweDAwMSB8IDB4MDAyIHwgMHgwNDAgfCAweDAyMCkpIHwgMHgxMDApIH0gKSk7Cn0K
CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgKiB2bWFsbG9jX2RtYSAodW5zaWduZWQgbG9uZyBzaXpl
KQp7CiAgICAgICAgcmV0dXJuIF9fdm1hbGxvY19SNzk5OTVjNWIoc2l6ZSwgKDB4MjAgfCAweDEw
IHwgMHg0MCB8IDB4ODAgfCAweDEwMCl8MHgwMSwgKChwZ3Byb3RfdCkgeyAoKCgweDAwMSB8IDB4
MDAyIHwgMHgwNDAgfCAweDAyMCkpIHwgMHgxMDApIH0gKSk7Cn0KCgoKCgpzdGF0aWMgaW5saW5l
IHZvaWQgKiB2bWFsbG9jXzMyKHVuc2lnbmVkIGxvbmcgc2l6ZSkKewogICAgICAgIHJldHVybiBf
X3ZtYWxsb2NfUjc5OTk1YzViKHNpemUsICgweDIwIHwgMHgxMCB8IDB4NDAgfCAweDgwIHwgMHgx
MDApLCAoKHBncHJvdF90KSB7ICgoKDB4MDAxIHwgMHgwMDIgfCAweDA0MCB8IDB4MDIwKSkgfCAw
eDEwMCkgfSApKTsKfQoKCgoKCmV4dGVybiByd2xvY2tfdCB2bWxpc3RfbG9jazsKCmV4dGVybiBz
dHJ1Y3Qgdm1fc3RydWN0ICogdm1saXN0OwojIDQ3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2Fz
bS9pby5oIiAyCiMgNjYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2lvLmgiCnN0YXRpYyBp
bmxpbmUgdW5zaWduZWQgbG9uZyB2aXJ0X3RvX3BoeXModm9sYXRpbGUgdm9pZCAqIGFkZHJlc3Mp
CnsKICAgICAgICByZXR1cm4gKCh1bnNpZ25lZCBsb25nKShhZGRyZXNzKS0oKHVuc2lnbmVkIGxv
bmcpKDB4QzAwMDAwMDApKSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCAqIHBoeXNfdG9fdmlydCh1
bnNpZ25lZCBsb25nIGFkZHJlc3MpCnsKICAgICAgICByZXR1cm4gKCh2b2lkICopKCh1bnNpZ25l
ZCBsb25nKShhZGRyZXNzKSsoKHVuc2lnbmVkIGxvbmcpKDB4QzAwMDAwMDApKSkpOwp9CgoKCgoK
CmV4dGVybiB2b2lkICogX19pb3JlbWFwX1I5ZWFjMDQyYSh1bnNpZ25lZCBsb25nIG9mZnNldCwg
dW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBsb25nIGZsYWdzKTsKCnN0YXRpYyBpbmxpbmUg
dm9pZCAqIGlvcmVtYXAgKHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIHNpemUp
CnsKICAgICAgICByZXR1cm4gX19pb3JlbWFwX1I5ZWFjMDQyYShvZmZzZXQsIHNpemUsIDApOwp9
CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCAqIGlvcmVtYXBfbm9jYWNoZSAodW5zaWduZWQgbG9u
ZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKewogICAgICAgIHJldHVybiBfX2lvcmVtYXBf
UjllYWMwNDJhKG9mZnNldCwgc2l6ZSwgMHgwMTApOwp9CgpleHRlcm4gdm9pZCBpb3VubWFwX1I1
ZmIxOTZkNCh2b2lkICphZGRyKTsKIyAxNjAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2lv
LmgiCnN0YXRpYyBpbmxpbmUgaW50IGNoZWNrX3NpZ25hdHVyZSh1bnNpZ25lZCBsb25nIGlvX2Fk
ZHIsCiAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc2lnbmF0dXJlLCBpbnQgbGVuZ3RoKQp7
CiAgICAgICAgaW50IHJldHZhbCA9IDA7CiAgICAgICAgZG8gewogICAgICAgICAgICAgICAgaWYg
KCgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvX2FkZHIpKSkgIT0gKnNp
Z25hdHVyZSkKICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICAg
ICBpb19hZGRyKys7CiAgICAgICAgICAgICAgICBzaWduYXR1cmUrKzsKICAgICAgICAgICAgICAg
IGxlbmd0aC0tOwogICAgICAgIH0gd2hpbGUgKGxlbmd0aCk7CiAgICAgICAgcmV0dmFsID0gMTsK
b3V0OgogICAgICAgIHJldHVybiByZXR2YWw7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IGlzYV9jaGVj
a19zaWduYXR1cmUodW5zaWduZWQgbG9uZyBpb19hZGRyLAogICAgICAgIGNvbnN0IHVuc2lnbmVk
IGNoYXIgKnNpZ25hdHVyZSwgaW50IGxlbmd0aCkKewogICAgICAgIGludCByZXR2YWwgPSAwOwog
ICAgICAgIGRvIHsKICAgICAgICAgICAgICAgIGlmICgoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFy
ICopICgodm9pZCAqKSgoKGNoYXIgKikoKCh1bnNpZ25lZCBsb25nKSgweEMwMDAwMDAwKSkpKSAr
IChpb19hZGRyKSkpKSAhPSAqc2lnbmF0dXJlKQogICAgICAgICAgICAgICAgICAgICAgICBnb3Rv
IG91dDsKICAgICAgICAgICAgICAgIGlvX2FkZHIrKzsKICAgICAgICAgICAgICAgIHNpZ25hdHVy
ZSsrOwogICAgICAgICAgICAgICAgbGVuZ3RoLS07CiAgICAgICAgfSB3aGlsZSAobGVuZ3RoKTsK
ICAgICAgICByZXR2YWwgPSAxOwpvdXQ6CiAgICAgICAgcmV0dXJuIHJldHZhbDsKfQojIDMwOSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vaW8uaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBj
aGFyIGluYih1bnNpZ25lZCBzaG9ydCBwb3J0KSB7IHVuc2lnbmVkIGNoYXIgX3Y7IF9fYXNtX18g
X192b2xhdGlsZV9fICgiaW4iICJiIiAiICUiICJ3IiAiMSwlIiAiIiAiMCIgOiAiPWEiIChfdikg
OiAiTmQiIChwb3J0KSApOyByZXR1cm4gX3Y7IH0gc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFy
IGluYl9wKHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgdW5zaWduZWQgY2hhciBfdjsgX19hc21fXyBf
X3ZvbGF0aWxlX18gKCJpbiIgImIiICIgJSIgInciICIxLCUiICIiICIwIiAiXG5vdXRiICUlYWws
JDB4ODAiIDogIj1hIiAoX3YpIDogIk5kIiAocG9ydCkgKTsgcmV0dXJuIF92OyB9CgoKc3RhdGlj
IGlubGluZSB1bnNpZ25lZCBzaG9ydCBpbncodW5zaWduZWQgc2hvcnQgcG9ydCkgeyB1bnNpZ25l
ZCBzaG9ydCBfdjsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJpbiIgInciICIgJSIgInciICIxLCUi
ICIiICIwIiA6ICI9YSIgKF92KSA6ICJOZCIgKHBvcnQpICk7IHJldHVybiBfdjsgfSBzdGF0aWMg
aW5saW5lIHVuc2lnbmVkIHNob3J0IGlud19wKHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgdW5zaWdu
ZWQgc2hvcnQgX3Y7IF9fYXNtX18gX192b2xhdGlsZV9fICgiaW4iICJ3IiAiICUiICJ3IiAiMSwl
IiAiIiAiMCIgIlxub3V0YiAlJWFsLCQweDgwIiA6ICI9YSIgKF92KSA6ICJOZCIgKHBvcnQpICk7
IHJldHVybiBfdjsgfQoKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGlubCh1bnNpZ25lZCBz
aG9ydCBwb3J0KSB7IHVuc2lnbmVkIGludCBfdjsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJpbiIg
ImwiICIgJSIgInciICIxLCUiICIiICIwIiA6ICI9YSIgKF92KSA6ICJOZCIgKHBvcnQpICk7IHJl
dHVybiBfdjsgfSBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBpbmxfcCh1bnNpZ25lZCBzaG9y
dCBwb3J0KSB7IHVuc2lnbmVkIGludCBfdjsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJpbiIgImwi
ICIgJSIgInciICIxLCUiICIiICIwIiAiXG5vdXRiICUlYWwsJDB4ODAiIDogIj1hIiAoX3YpIDog
Ik5kIiAocG9ydCkgKTsgcmV0dXJuIF92OyB9CgoKc3RhdGljIGlubGluZSB2b2lkIG91dGIodW5z
aWduZWQgY2hhciB2YWx1ZSwgdW5zaWduZWQgc2hvcnQgcG9ydCkgeyBfX2FzbV9fIF9fdm9sYXRp
bGVfXyAoIm91dCIgImIiICIgJSIgImIiICIwLCUiICJ3IiAiMSIgOiA6ICJhIiAodmFsdWUpLCAi
TmQiIChwb3J0KSk7IH0gc3RhdGljIGlubGluZSB2b2lkIG91dGJfcCh1bnNpZ25lZCBjaGFyIHZh
bHVlLCB1bnNpZ25lZCBzaG9ydCBwb3J0KSB7IF9fYXNtX18gX192b2xhdGlsZV9fICgib3V0IiAi
YiIgIiAlIiAiYiIgIjAsJSIgInciICIxIiAiXG5vdXRiICUlYWwsJDB4ODAiIDogOiAiYSIgKHZh
bHVlKSwgIk5kIiAocG9ydCkpO30Kc3RhdGljIGlubGluZSB2b2lkIG91dHcodW5zaWduZWQgc2hv
cnQgdmFsdWUsIHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJv
dXQiICJ3IiAiICUiICJ3IiAiMCwlIiAidyIgIjEiIDogOiAiYSIgKHZhbHVlKSwgIk5kIiAocG9y
dCkpOyB9IHN0YXRpYyBpbmxpbmUgdm9pZCBvdXR3X3AodW5zaWduZWQgc2hvcnQgdmFsdWUsIHVu
c2lnbmVkIHNob3J0IHBvcnQpIHsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJvdXQiICJ3IiAiICUi
ICJ3IiAiMCwlIiAidyIgIjEiICJcbm91dGIgJSVhbCwkMHg4MCIgOiA6ICJhIiAodmFsdWUpLCAi
TmQiIChwb3J0KSk7fQpzdGF0aWMgaW5saW5lIHZvaWQgb3V0bCh1bnNpZ25lZCBpbnQgdmFsdWUs
IHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJvdXQiICJsIiAi
ICUiICIwLCUiICJ3IiAiMSIgOiA6ICJhIiAodmFsdWUpLCAiTmQiIChwb3J0KSk7IH0gc3RhdGlj
IGlubGluZSB2b2lkIG91dGxfcCh1bnNpZ25lZCBpbnQgdmFsdWUsIHVuc2lnbmVkIHNob3J0IHBv
cnQpIHsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJvdXQiICJsIiAiICUiICIwLCUiICJ3IiAiMSIg
Ilxub3V0YiAlJWFsLCQweDgwIiA6IDogImEiICh2YWx1ZSksICJOZCIgKHBvcnQpKTt9CgpzdGF0
aWMgaW5saW5lIHZvaWQgaW5zYih1bnNpZ25lZCBzaG9ydCBwb3J0LCB2b2lkICogYWRkciwgdW5z
aWduZWQgbG9uZyBjb3VudCkgeyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoInJlcCA7IGlucyIgImIi
IDogIj1EIiAoYWRkciksICI9YyIgKGNvdW50KSA6ICJkIiAocG9ydCksIjAiIChhZGRyKSwiMSIg
KGNvdW50KSk7IH0Kc3RhdGljIGlubGluZSB2b2lkIGluc3codW5zaWduZWQgc2hvcnQgcG9ydCwg
dm9pZCAqIGFkZHIsIHVuc2lnbmVkIGxvbmcgY291bnQpIHsgX19hc21fXyBfX3ZvbGF0aWxlX18g
KCJyZXAgOyBpbnMiICJ3IiA6ICI9RCIgKGFkZHIpLCAiPWMiIChjb3VudCkgOiAiZCIgKHBvcnQp
LCIwIiAoYWRkciksIjEiIChjb3VudCkpOyB9CnN0YXRpYyBpbmxpbmUgdm9pZCBpbnNsKHVuc2ln
bmVkIHNob3J0IHBvcnQsIHZvaWQgKiBhZGRyLCB1bnNpZ25lZCBsb25nIGNvdW50KSB7IF9fYXNt
X18gX192b2xhdGlsZV9fICgicmVwIDsgaW5zIiAibCIgOiAiPUQiIChhZGRyKSwgIj1jIiAoY291
bnQpIDogImQiIChwb3J0KSwiMCIgKGFkZHIpLCIxIiAoY291bnQpKTsgfQoKc3RhdGljIGlubGlu
ZSB2b2lkIG91dHNiKHVuc2lnbmVkIHNob3J0IHBvcnQsIGNvbnN0IHZvaWQgKiBhZGRyLCB1bnNp
Z25lZCBsb25nIGNvdW50KSB7IF9fYXNtX18gX192b2xhdGlsZV9fICgicmVwIDsgb3V0cyIgImIi
IDogIj1TIiAoYWRkciksICI9YyIgKGNvdW50KSA6ICJkIiAocG9ydCksIjAiIChhZGRyKSwiMSIg
KGNvdW50KSk7IH0Kc3RhdGljIGlubGluZSB2b2lkIG91dHN3KHVuc2lnbmVkIHNob3J0IHBvcnQs
IGNvbnN0IHZvaWQgKiBhZGRyLCB1bnNpZ25lZCBsb25nIGNvdW50KSB7IF9fYXNtX18gX192b2xh
dGlsZV9fICgicmVwIDsgb3V0cyIgInciIDogIj1TIiAoYWRkciksICI9YyIgKGNvdW50KSA6ICJk
IiAocG9ydCksIjAiIChhZGRyKSwiMSIgKGNvdW50KSk7IH0Kc3RhdGljIGlubGluZSB2b2lkIG91
dHNsKHVuc2lnbmVkIHNob3J0IHBvcnQsIGNvbnN0IHZvaWQgKiBhZGRyLCB1bnNpZ25lZCBsb25n
IGNvdW50KSB7IF9fYXNtX18gX192b2xhdGlsZV9fICgicmVwIDsgb3V0cyIgImwiIDogIj1TIiAo
YWRkciksICI9YyIgKGNvdW50KSA6ICJkIiAocG9ydCksIjAiIChhZGRyKSwiMSIgKGNvdW50KSk7
IH0KIyAzNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGNpLmgiIDIKCnN0cnVjdCBwY2lf
ZGV2OwojIDUyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wY2kuaCIKZXh0ZXJuIHZvaWQg
KnBjaV9hbGxvY19jb25zaXN0ZW50X1IxZjZhOGRjOChzdHJ1Y3QgcGNpX2RldiAqaHdkZXYsIHNp
emVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG1hX2FkZHJfdCAq
ZG1hX2hhbmRsZSk7CiMgNjMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BjaS5oIgpleHRl
cm4gdm9pZCBwY2lfZnJlZV9jb25zaXN0ZW50X1JkMjMxMzlmMShzdHJ1Y3QgcGNpX2RldiAqaHdk
ZXYsIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnZh
ZGRyLCBkbWFfYWRkcl90IGRtYV9oYW5kbGUpOwoKCgoKCgoKc3RhdGljIGlubGluZSBkbWFfYWRk
cl90IHBjaV9tYXBfc2luZ2xlKHN0cnVjdCBwY2lfZGV2ICpod2Rldiwgdm9pZCAqcHRyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsIGludCBkaXJl
Y3Rpb24pCnsKICAgICAgICBpZiAoZGlyZWN0aW9uID09IDMpCiAgICAgICAgICAgICAgICBfX2Fz
bV9fIF9fdm9sYXRpbGVfXygiLmJ5dGUgMHgwZiwweDBiIik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOwogICAgICAgIHJldHVybiB2aXJ0X3RvX3BoeXMocHRyKTsKfQojIDg4ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2FzbS9wY2kuaCIKc3RhdGljIGlubGluZSB2b2lkIHBjaV91bm1h
cF9zaW5nbGUoc3RydWN0IHBjaV9kZXYgKmh3ZGV2LCBkbWFfYWRkcl90IGRtYV9hZGRyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwgaW50IGRpcmVjdGlv
bikKewogICAgICAgIGlmIChkaXJlY3Rpb24gPT0gMykKICAgICAgICAgICAgICAgIF9fYXNtX18g
X192b2xhdGlsZV9fKCIuYnl0ZSAweDBmLDB4MGIiKTsKCn0KCgoKCgpzdGF0aWMgaW5saW5lIGRt
YV9hZGRyX3QgcGNpX21hcF9wYWdlKHN0cnVjdCBwY2lfZGV2ICpod2Rldiwgc3RydWN0IHBhZ2Ug
KnBhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u
ZyBvZmZzZXQsIHNpemVfdCBzaXplLCBpbnQgZGlyZWN0aW9uKQp7CiAgICAgICAgaWYgKGRpcmVj
dGlvbiA9PSAzKQogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4
MGYsMHgwYiIpOwoKICAgICAgICByZXR1cm4gKHBhZ2UgLSBtZW1fbWFwX1JjMzVhMDA3YSkgKiAo
MVVMIDw8IDEyKSArIG9mZnNldDsKfQoKc3RhdGljIGlubGluZSB2b2lkIHBjaV91bm1hcF9wYWdl
KHN0cnVjdCBwY2lfZGV2ICpod2RldiwgZG1hX2FkZHJfdCBkbWFfYWRkcmVzcywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLCBpbnQgZGlyZWN0aW9uKQp7CiAg
ICAgICAgaWYgKGRpcmVjdGlvbiA9PSAzKQogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0
aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwoKfQojIDEzMiAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9hc20vcGNpLmgiCnN0YXRpYyBpbmxpbmUgaW50IHBjaV9tYXBfc2coc3RydWN0IHBjaV9kZXYg
Kmh3ZGV2LCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBuZW50cywgaW50IGRpcmVjdGlvbikKewogICAgICAgIGludCBpOwoKICAgICAgICBp
ZiAoZGlyZWN0aW9uID09IDMpCiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygi
LmJ5dGUgMHgwZiwweDBiIik7CgoKCgogICAgICAgIGZvciAoaSA9IDA7IGkgPCBuZW50czsgaSsr
ICkgewogICAgICAgICAgICAgICAgaWYgKHNnW2ldLmFkZHJlc3MgJiYgc2dbaV0ucGFnZSkKICAg
ICAgICAgICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgw
YiIpOwogICAgICAgICAgICAgICAgZWxzZSBpZiAoIXNnW2ldLmFkZHJlc3MgJiYgIXNnW2ldLnBh
Z2UpCiAgICAgICAgICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIuYnl0ZSAw
eDBmLDB4MGIiKTsKCiAgICAgICAgICAgICAgICBpZiAoc2dbaV0uYWRkcmVzcykKICAgICAgICAg
ICAgICAgICAgICAgICAgc2dbaV0uZG1hX2FkZHJlc3MgPSB2aXJ0X3RvX3BoeXMoc2dbaV0uYWRk
cmVzcyk7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIHNnW2ld
LmRtYV9hZGRyZXNzID0gKChzZ1tpXS5wYWdlIC0gbWVtX21hcF9SYzM1YTAwN2EpIDw8IDEyKSAr
IHNnW2ldLm9mZnNldDsKICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsK
ICAgICAgICByZXR1cm4gbmVudHM7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgcGNpX3VubWFw
X3NnKHN0cnVjdCBwY2lfZGV2ICpod2Rldiwgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmVudHMsIGludCBkaXJlY3Rpb24pCnsKICAg
ICAgICBpZiAoZGlyZWN0aW9uID09IDMpCiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRp
bGVfXygiLmJ5dGUgMHgwZiwweDBiIik7Cgp9CiMgMTgwICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2FzbS9wY2kuaCIKc3RhdGljIGlubGluZSB2b2lkIHBjaV9kbWFfc3luY19zaW5nbGUoc3RydWN0
IHBjaV9kZXYgKmh3ZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
bWFfYWRkcl90IGRtYV9oYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBzaXplLCBpbnQgZGlyZWN0aW9uKQp7CiAgICAgICAgaWYgKGRpcmVjdGlvbiA9
PSAzKQogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgw
YiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKfQoKCgoKCgoKc3RhdGljIGlubGlu
ZSB2b2lkIHBjaV9kbWFfc3luY19zZyhzdHJ1Y3QgcGNpX2RldiAqaHdkZXYsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmVsZW1zLCBpbnQgZGlyZWN0aW9uKQp7CiAg
ICAgICAgaWYgKGRpcmVjdGlvbiA9PSAzKQogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0
aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsK
fQoKCgoKCgpzdGF0aWMgaW5saW5lIGludCBwY2lfZG1hX3N1cHBvcnRlZChzdHJ1Y3QgcGNpX2Rl
diAqaHdkZXYsIHU2NCBtYXNrKQp7CgoKCgoKICAgICAgICBpZihtYXNrIDwgMHgwMGZmZmZmZikK
ICAgICAgICAgICAgICAgIHJldHVybiAwOwoKICAgICAgICByZXR1cm4gMTsKfQoKCgoKc3RhdGlj
IF9faW5saW5lX18gZG1hNjRfYWRkcl90CnBjaV9kYWNfcGFnZV90b19kbWEoc3RydWN0IHBjaV9k
ZXYgKnBkZXYsIHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG9mZnNldCwgaW50IGRp
cmVjdGlvbikKewogICAgICAgIHJldHVybiAoKGRtYTY0X2FkZHJfdCkgKChwYWdlIC0gbWVtX21h
cF9SYzM1YTAwN2EpIDw8IDEyKSArCiAgICAgICAgICAgICAgICAoZG1hNjRfYWRkcl90KSBvZmZz
ZXQpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBzdHJ1Y3QgcGFnZSAqCnBjaV9kYWNfZG1hX3RvX3Bh
Z2Uoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGRtYTY0X2FkZHJfdCBkbWFfYWRkcikKewogICAgICAg
IHVuc2lnbmVkIGxvbmcgcG9mZiA9IChkbWFfYWRkciA+PiAxMik7CgogICAgICAgIHJldHVybiBt
ZW1fbWFwX1JjMzVhMDA3YSArIHBvZmY7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxv
bmcKcGNpX2RhY19kbWFfdG9fb2Zmc2V0KHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBkbWE2NF9hZGRy
X3QgZG1hX2FkZHIpCnsKICAgICAgICByZXR1cm4gKGRtYV9hZGRyICYgfih+KCgxVUwgPDwgMTIp
LTEpKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQKcGNpX2RhY19kbWFfc3luY19zaW5nbGUo
c3RydWN0IHBjaV9kZXYgKnBkZXYsIGRtYTY0X2FkZHJfdCBkbWFfYWRkciwgc2l6ZV90IGxlbiwg
aW50IGRpcmVjdGlvbikKewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKfQojIDI2MSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGNpLmgiCnN0YXRpYyBpbmxpbmUgaW50IHBjaV9j
b250cm9sbGVyX251bShzdHJ1Y3QgcGNpX2RldiAqZGV2KQp7CiAgICAgICAgcmV0dXJuIDA7Cn0K
CgpleHRlcm4gaW50IHBjaV9tbWFwX3BhZ2VfcmFuZ2Uoc3RydWN0IHBjaV9kZXYgKmRldiwgc3Ry
dWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bnVtIHBjaV9tbWFwX3N0YXRlIG1tYXBfc3RhdGUsIGludCB3cml0ZV9jb21iaW5lKTsKIyA2MTEg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcGNpLmgiIDIKIyA2NzYgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvcGNpLmgiCnN0YXRpYyBpbmxpbmUgaW50IHBjaV9tb2R1bGVfaW5p
dChzdHJ1Y3QgcGNpX2RyaXZlciAqZHJ2KQp7CiAgICAgICAgaW50IHJjID0gcGNpX3JlZ2lzdGVy
X2RyaXZlcl9SNDY1YWE0NmMgKGRydik7CgogICAgICAgIGlmIChyYyA+IDApCiAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKIyA2OTEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcGNpLmgi
CiAgICAgICAgaWYgKHJjID09IDApCiAgICAgICAgICAgICAgICByYyA9IC0xOTsKCgoKCiAgICAg
ICAgcGNpX3VucmVnaXN0ZXJfZHJpdmVyX1IyNjcxM2I4NiAoZHJ2KTsKCiAgICAgICAgcmV0dXJu
IHJjOwp9CiMgNzIxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3BjaS5oIgpzdGF0aWMg
aW5saW5lIHZvaWQgKnBjaV9nZXRfZHJ2ZGF0YSAoc3RydWN0IHBjaV9kZXYgKnBkZXYpCnsKICAg
ICAgICByZXR1cm4gcGRldi0+ZHJpdmVyX2RhdGE7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBwY2lf
c2V0X2RydmRhdGEgKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCB2b2lkICpkYXRhKQp7CiAgICAgICAg
cGRldi0+ZHJpdmVyX2RhdGEgPSBkYXRhOwp9CiMgNzM4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3BjaS5oIgpzdHJ1Y3QgcGNpX2ZpeHVwIHsKICAgICAgICBpbnQgcGFzczsKICAgICAg
ICB1MTYgdmVuZG9yLCBkZXZpY2U7CiAgICAgICAgdm9pZCAoKmhvb2spKHN0cnVjdCBwY2lfZGV2
ICpkZXYpOwp9OwoKZXh0ZXJuIHN0cnVjdCBwY2lfZml4dXAgcGNpYmlvc19maXh1cHNbXTsKCgoK
CnZvaWQgcGNpX2ZpeHVwX2RldmljZShpbnQgcGFzcywgc3RydWN0IHBjaV9kZXYgKmRldik7Cgpl
eHRlcm4gaW50IHBjaV9wY2lfcHJvYmxlbXNfUmRjMTRlZGE3OwojIDEwMyAiODEzOXRvby5jIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pbml0LmgiIDEKIyAxMDQgIjgxMzl0
b28uYyIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaW9wb3J0LmgiIDEKIyAx
MDUgIjgxMzl0b28uYyIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmV0ZGV2
aWNlLmgiIDEKIyAyOCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2lmLmgiIDEKIyAyMiAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9pZi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvdHlwZXMuaCIgMQojIDIzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2lmLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIiAxCiMgMjQgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaWYuaCIgMgojIDYxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2lmLmgiCnN0cnVjdCBpZm1hcAp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtZW1f
c3RhcnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtZW1fZW5kOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IGJhc2VfYWRkcjsKICAgICAgICB1bnNpZ25lZCBjaGFyIGlycTsKICAgICAgICB1bnNpZ25l
ZCBjaGFyIGRtYTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHBvcnQ7Cgp9OwojIDc5ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L2lmLmgiCnN0cnVjdCBpZnJlcQp7CgoKICAgICAgICB1bmlv
bgogICAgICAgIHsKICAgICAgICAgICAgICAgIGNoYXIgaWZybl9uYW1lWzE2XTsKICAgICAgICB9
IGlmcl9pZnJuOwoKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2Fk
ZHIgaWZydV9hZGRyOwogICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyIGlmcnVfZHN0YWRk
cjsKICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkciBpZnJ1X2Jyb2FkYWRkcjsKICAgICAg
ICAgICAgICAgIHN0cnVjdCBzb2NrYWRkciBpZnJ1X25ldG1hc2s7CiAgICAgICAgICAgICAgICBz
dHJ1Y3Qgc29ja2FkZHIgaWZydV9od2FkZHI7CiAgICAgICAgICAgICAgICBzaG9ydCBpZnJ1X2Zs
YWdzOwogICAgICAgICAgICAgICAgaW50IGlmcnVfaXZhbHVlOwogICAgICAgICAgICAgICAgaW50
IGlmcnVfbXR1OwogICAgICAgICAgICAgICAgc3RydWN0IGlmbWFwIGlmcnVfbWFwOwogICAgICAg
ICAgICAgICAgY2hhciBpZnJ1X3NsYXZlWzE2XTsKICAgICAgICAgICAgICAgIGNoYXIgaWZydV9u
ZXduYW1lWzE2XTsKICAgICAgICAgICAgICAgIGNoYXIgKiBpZnJ1X2RhdGE7CiAgICAgICAgfSBp
ZnJfaWZydTsKfTsKIyAxMjggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaWYuaCIKc3Ry
dWN0IGlmY29uZgp7CiAgICAgICAgaW50IGlmY19sZW47CiAgICAgICAgdW5pb24KICAgICAgICB7
CiAgICAgICAgICAgICAgICBjaGFyICogaWZjdV9idWY7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
aWZyZXEgKmlmY3VfcmVxOwogICAgICAgIH0gaWZjX2lmY3U7Cn07CiMgMjkgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2lmX2V0aGVyLmgiIDEKIyA5MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9pZl9ldGhlci5oIgpzdHJ1Y3QgZXRoaGRyCnsKICAgICAgICB1bnNpZ25lZCBjaGFyIGhfZGVz
dFs2XTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGhfc291cmNlWzZdOwogICAgICAgIHVuc2lnbmVk
IHNob3J0IGhfcHJvdG87Cn07CiMgMzAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmV0
ZGV2aWNlLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2lmX3BhY2tldC5o
IiAxCgoKCnN0cnVjdCBzb2NrYWRkcl9wa3QKewogICAgICAgIHVuc2lnbmVkIHNob3J0IHNwa3Rf
ZmFtaWx5OwogICAgICAgIHVuc2lnbmVkIGNoYXIgc3BrdF9kZXZpY2VbMTRdOwogICAgICAgIHVu
c2lnbmVkIHNob3J0IHNwa3RfcHJvdG9jb2w7Cn07CgpzdHJ1Y3Qgc29ja2FkZHJfbGwKewogICAg
ICAgIHVuc2lnbmVkIHNob3J0IHNsbF9mYW1pbHk7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2xs
X3Byb3RvY29sOwogICAgICAgIGludCBzbGxfaWZpbmRleDsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBzbGxfaGF0eXBlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc2xsX3BrdHR5cGU7CiAgICAgICAg
dW5zaWduZWQgY2hhciBzbGxfaGFsZW47CiAgICAgICAgdW5zaWduZWQgY2hhciBzbGxfYWRkcls4
XTsKfTsKIyA0MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pZl9wYWNrZXQuaCIKc3Ry
dWN0IHRwYWNrZXRfc3RhdHMKewogICAgICAgIHVuc2lnbmVkIGludCB0cF9wYWNrZXRzOwogICAg
ICAgIHVuc2lnbmVkIGludCB0cF9kcm9wczsKfTsKCnN0cnVjdCB0cGFja2V0X2hkcgp7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyB0cF9zdGF0dXM7CgoKCgoKICAgICAgICB1bnNpZ25lZCBpbnQgdHBf
bGVuOwogICAgICAgIHVuc2lnbmVkIGludCB0cF9zbmFwbGVuOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IHRwX21hYzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB0cF9uZXQ7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHRwX3NlYzsKICAgICAgICB1bnNpZ25lZCBpbnQgdHBfdXNlYzsKfTsKIyA4MiAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pZl9wYWNrZXQuaCIKc3RydWN0IHRwYWNrZXRfcmVx
CnsKICAgICAgICB1bnNpZ25lZCBpbnQgdHBfYmxvY2tfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBp
bnQgdHBfYmxvY2tfbnI7CiAgICAgICAgdW5zaWduZWQgaW50IHRwX2ZyYW1lX3NpemU7CiAgICAg
ICAgdW5zaWduZWQgaW50IHRwX2ZyYW1lX25yOwp9OwoKc3RydWN0IHBhY2tldF9tcmVxCnsKICAg
ICAgICBpbnQgbXJfaWZpbmRleDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBtcl90eXBlOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IG1yX2FsZW47CiAgICAgICAgdW5zaWduZWQgY2hhciBtcl9hZGRy
ZXNzWzhdOwp9OwojIDMxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5o
IiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2F0b21pYy5oIiAxCiMgMzMgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2FzbS9jYWNoZS5oIiAxCiMgMzQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvbmV0ZGV2aWNlLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9ieXRl
b3JkZXIuaCIgMQojIDM1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5o
IiAyCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMzgg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiIDIKCgoKCnN0cnVjdCBk
aXZlcnRfYmxrOwojIDk2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5o
IgpzdHJ1Y3QgbmV0X2RldmljZV9zdGF0cwp7CiAgICAgICAgdW5zaWduZWQgbG9uZyByeF9wYWNr
ZXRzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdHhfcGFja2V0czsKICAgICAgICB1bnNpZ25lZCBs
b25nIHJ4X2J5dGVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdHhfYnl0ZXM7CiAgICAgICAgdW5z
aWduZWQgbG9uZyByeF9lcnJvcnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0eF9lcnJvcnM7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyByeF9kcm9wcGVkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdHhf
ZHJvcHBlZDsKICAgICAgICB1bnNpZ25lZCBsb25nIG11bHRpY2FzdDsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGNvbGxpc2lvbnM7CgoKICAgICAgICB1bnNpZ25lZCBsb25nIHJ4X2xlbmd0aF9lcnJv
cnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyByeF9vdmVyX2Vycm9yczsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHJ4X2NyY19lcnJvcnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyByeF9mcmFtZV9lcnJv
cnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyByeF9maWZvX2Vycm9yczsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHJ4X21pc3NlZF9lcnJvcnM7CgoKICAgICAgICB1bnNpZ25lZCBsb25nIHR4X2Fib3J0
ZWRfZXJyb3JzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdHhfY2Fycmllcl9lcnJvcnM7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyB0eF9maWZvX2Vycm9yczsKICAgICAgICB1bnNpZ25lZCBsb25nIHR4
X2hlYXJ0YmVhdF9lcnJvcnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0eF93aW5kb3dfZXJyb3Jz
OwoKCiAgICAgICAgdW5zaWduZWQgbG9uZyByeF9jb21wcmVzc2VkOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgdHhfY29tcHJlc3NlZDsKfTsKCgoKZW51bSB7CiAgICAgICAgSUZfUE9SVF9VTktOT1dO
ID0gMCwKICAgICAgICBJRl9QT1JUXzEwQkFTRTIsCiAgICAgICAgSUZfUE9SVF8xMEJBU0VULAog
ICAgICAgIElGX1BPUlRfQVVJLAogICAgICAgIElGX1BPUlRfMTAwQkFTRVQsCiAgICAgICAgSUZf
UE9SVF8xMDBCQVNFVFgsCiAgICAgICAgSUZfUE9SVF8xMDBCQVNFRlgKfTsKCgoKZXh0ZXJuIGNv
bnN0IGNoYXIgKmlmX3BvcnRfdGV4dF9SOWNmMGM2NGZbXTsKCiMgMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9jYWNoZS5oIiAxCiMgMTQ2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L25ldGRldmljZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9za2J1
ZmYuaCIgMQojIDE3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgojIDEg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAxOCAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgva2VybmVsLmgiIDEKIyAxOSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9z
a2J1ZmYuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMQoj
IDIwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC90aW1lLmgiIDEKIyAyMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9za2J1ZmYuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
Y2FjaGUuaCIgMQojIDIyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIiAy
CgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2F0b21pYy5oIiAxCiMgMjQgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2FzbS90eXBlcy5oIiAxCiMgMjUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
c2tidWZmLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgi
IDEKIyAyNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW0uaCIgMQojIDI3ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L3NrYnVmZi5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9oaWdobWVtLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZp
Zy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9oaWdobWVtLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wZ2FsbG9jLmgiIDEKCgoKIyAxICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9hc20vcGdhbGxvYy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcHJv
Y2Vzc29yLmgiIDEKIyA2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wZ2FsbG9jLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9maXhtYXAuaCIgMQojIDcgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvYXNtL3BnYWxsb2MuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvdGhyZWFkcy5oIiAxCiMgOCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGdh
bGxvYy5oIiAyCiMgNTEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BnYWxsb2MuaCIKc3Rh
dGljIF9faW5saW5lX18gcGdkX3QgKmdldF9wZ2Rfc2xvdyh2b2lkKQp7CiAgICAgICAgcGdkX3Qg
KnBnZCA9IChwZ2RfdCAqKV9fZ2V0X2ZyZWVfcGFnZXNfUjQ3ODRlNDI0KCgoMHgyMCB8IDB4MTAg
fCAweDQwIHwgMHg4MCB8IDB4MTAwKSksMCk7CgogICAgICAgIGlmIChwZ2QpIHsKICAgICAgICAg
ICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgo
KCgoKHVuc2lnbmVkIGxvbmcpKDB4QzAwMDAwMDApKSkvKDFVTCA8PCAyMikpICogc2l6ZW9mKHBn
ZF90KSkpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKChwZ2QpKSwoKDB4MDEwMTAx
MDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKCgoKCh1bnNpZ25lZCBsb25nKSgweEMwMDAwMDAw
KSkpLygxVUwgPDwgMjIpKSAqIHNpemVvZihwZ2RfdCkpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0
KCgocGdkKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKCgoKCgodW5zaWdu
ZWQgbG9uZykoMHhDMDAwMDAwMCkpKS8oMVVMIDw8IDIyKSkgKiBzaXplb2YocGdkX3QpKSkpKSA6
IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoKCgoKHVuc2lnbmVkIGxvbmcpKDB4QzAwMDAwMDApKSkv
KDFVTCA8PCAyMikpICogc2l6ZW9mKHBnZF90KSkpID8gX19tZW1zZXRfZ2VuZXJpYygoKChwZ2Qp
KSksKCgoMCkpKSwoKCgoKCgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKS8oMVVMIDw8IDIy
KSkgKiBzaXplb2YocGdkX3QpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKChwZ2QpKSwoKDApKSwo
KCgoKCh1bnNpZ25lZCBsb25nKSgweEMwMDAwMDAwKSkpLygxVUwgPDwgMjIpKSAqIHNpemVvZihw
Z2RfdCkpKSkpKTsKICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgoMTAyNCAt
ICgoKCh1bnNpZ25lZCBsb25nKSgweEMwMDAwMDAwKSkpLygxVUwgPDwgMjIpKSkgKiBzaXplb2Yo
cGdkX3QpKSA/IF9fY29uc3RhbnRfbWVtY3B5M2QoKHBnZCArICgoKCh1bnNpZ25lZCBsb25nKSgw
eEMwMDAwMDAwKSkpLygxVUwgPDwgMjIpKSksKHN3YXBwZXJfcGdfZGlyICsgKCgoKHVuc2lnbmVk
IGxvbmcpKDB4QzAwMDAwMDApKSkvKDFVTCA8PCAyMikpKSwoKDEwMjQgLSAoKCgodW5zaWduZWQg
bG9uZykoMHhDMDAwMDAwMCkpKS8oMVVMIDw8IDIyKSkpICogc2l6ZW9mKHBnZF90KSkpIDogX19t
ZW1jcHkzZCgocGdkICsgKCgoKHVuc2lnbmVkIGxvbmcpKDB4QzAwMDAwMDApKSkvKDFVTCA8PCAy
MikpKSwoc3dhcHBlcl9wZ19kaXIgKyAoKCgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKS8o
MVVMIDw8IDIyKSkpLCgoMTAyNCAtICgoKCh1bnNpZ25lZCBsb25nKSgweEMwMDAwMDAwKSkpLygx
VUwgPDwgMjIpKSkgKiBzaXplb2YocGdkX3QpKSkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4g
cGdkOwp9CgoKCnN0YXRpYyBfX2lubGluZV9fIHBnZF90ICpnZXRfcGdkX2Zhc3Qodm9pZCkKewog
ICAgICAgIHVuc2lnbmVkIGxvbmcgKnJldDsKCiAgICAgICAgaWYgKChyZXQgPSAoYm9vdF9jcHVf
ZGF0YV9SMDY1N2QwMzcucGdkX3F1aWNrKSkgIT0gKCh2b2lkICopMCkpIHsKICAgICAgICAgICAg
ICAgIChib290X2NwdV9kYXRhX1IwNjU3ZDAzNy5wZ2RfcXVpY2spID0gKHVuc2lnbmVkIGxvbmcg
KikoKnJldCk7CiAgICAgICAgICAgICAgICByZXRbMF0gPSAwOwogICAgICAgICAgICAgICAgKGJv
b3RfY3B1X2RhdGFfUjA2NTdkMDM3LnBndGFibGVfY2FjaGVfc3opLS07CiAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICAgICByZXQgPSAodW5zaWduZWQgbG9uZyAqKWdldF9wZ2Rfc2xvdygpOwog
ICAgICAgIHJldHVybiAocGdkX3QgKilyZXQ7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgZnJl
ZV9wZ2RfZmFzdChwZ2RfdCAqcGdkKQp7CiAgICAgICAgKih1bnNpZ25lZCBsb25nICopcGdkID0g
KHVuc2lnbmVkIGxvbmcpIChib290X2NwdV9kYXRhX1IwNjU3ZDAzNy5wZ2RfcXVpY2spOwogICAg
ICAgIChib290X2NwdV9kYXRhX1IwNjU3ZDAzNy5wZ2RfcXVpY2spID0gKHVuc2lnbmVkIGxvbmcg
KikgcGdkOwogICAgICAgIChib290X2NwdV9kYXRhX1IwNjU3ZDAzNy5wZ3RhYmxlX2NhY2hlX3N6
KSsrOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGZyZWVfcGdkX3Nsb3cocGdkX3QgKnBnZCkK
ewoKCgoKCgoKICAgICAgICBmcmVlX3BhZ2VzX1I5OTQxY2NiOCgoKHVuc2lnbmVkIGxvbmcpcGdk
KSwwKTsKCn0KCnN0YXRpYyBpbmxpbmUgcHRlX3QgKnB0ZV9hbGxvY19vbmUoc3RydWN0IG1tX3N0
cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKewogICAgICAgIHB0ZV90ICpwdGU7Cgog
ICAgICAgIHB0ZSA9IChwdGVfdCAqKSBfX2dldF9mcmVlX3BhZ2VzX1I0Nzg0ZTQyNCgoKDB4MjAg
fCAweDEwIHwgMHg0MCB8IDB4ODAgfCAweDEwMCkpLDApOwogICAgICAgIGlmIChwdGUpCiAgICAg
ICAgICAgICAgICBtbXhfY2xlYXJfcGFnZSgodm9pZCAqKShwdGUpKTsKICAgICAgICByZXR1cm4g
cHRlOwp9CgpzdGF0aWMgaW5saW5lIHB0ZV90ICpwdGVfYWxsb2Nfb25lX2Zhc3Qoc3RydWN0IG1t
X3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKewogICAgICAgIHVuc2lnbmVkIGxv
bmcgKnJldDsKCiAgICAgICAgaWYgKChyZXQgPSAodW5zaWduZWQgbG9uZyAqKShib290X2NwdV9k
YXRhX1IwNjU3ZDAzNy5wdGVfcXVpY2spKSAhPSAoKHZvaWQgKikwKSkgewogICAgICAgICAgICAg
ICAgKGJvb3RfY3B1X2RhdGFfUjA2NTdkMDM3LnB0ZV9xdWljaykgPSAodW5zaWduZWQgbG9uZyAq
KSgqcmV0KTsKICAgICAgICAgICAgICAgIHJldFswXSA9IHJldFsxXTsKICAgICAgICAgICAgICAg
IChib290X2NwdV9kYXRhX1IwNjU3ZDAzNy5wZ3RhYmxlX2NhY2hlX3N6KS0tOwogICAgICAgIH0K
ICAgICAgICByZXR1cm4gKHB0ZV90ICopcmV0Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHB0
ZV9mcmVlX2Zhc3QocHRlX3QgKnB0ZSkKewogICAgICAgICoodW5zaWduZWQgbG9uZyAqKXB0ZSA9
ICh1bnNpZ25lZCBsb25nKSAoYm9vdF9jcHVfZGF0YV9SMDY1N2QwMzcucHRlX3F1aWNrKTsKICAg
ICAgICAoYm9vdF9jcHVfZGF0YV9SMDY1N2QwMzcucHRlX3F1aWNrKSA9ICh1bnNpZ25lZCBsb25n
ICopIHB0ZTsKICAgICAgICAoYm9vdF9jcHVfZGF0YV9SMDY1N2QwMzcucGd0YWJsZV9jYWNoZV9z
eikrKzsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBwdGVfZnJlZV9zbG93KHB0ZV90ICpwdGUp
CnsKICAgICAgICBmcmVlX3BhZ2VzX1I5OTQxY2NiOCgoKHVuc2lnbmVkIGxvbmcpcHRlKSwwKTsK
fQojIDE1MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGdhbGxvYy5oIgpleHRlcm4gaW50
IGRvX2NoZWNrX3BndF9jYWNoZShpbnQsIGludCk7CiMgMTc1ICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2FzbS9wZ2FsbG9jLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaF90bGJfbW0oc3RydWN0
IG1tX3N0cnVjdCAqbW0pCnsKICAgICAgICBpZiAobW0gPT0gZ2V0X2N1cnJlbnQoKS0+YWN0aXZl
X21tKQogICAgICAgICAgICAgICAgZG8geyB1bnNpZ25lZCBpbnQgdG1wcmVnOyBfX2FzbV9fIF9f
dm9sYXRpbGVfXyggIm1vdmwgJSVjcjMsICUwOyAgIyBmbHVzaCBUTEIgXG4iICJtb3ZsICUwLCAl
JWNyMzsgICAgICAgICAgICAgIFxuIiA6ICI9ciIgKHRtcHJlZykgOjogIm1lbW9yeSIpOyB9IHdo
aWxlICgwKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGZsdXNoX3RsYl9wYWdlKHN0cnVjdCB2bV9h
cmVhX3N0cnVjdCAqdm1hLAogICAgICAgIHVuc2lnbmVkIGxvbmcgYWRkcikKewogICAgICAgIGlm
ICh2bWEtPnZtX21tID09IGdldF9jdXJyZW50KCktPmFjdGl2ZV9tbSkKICAgICAgICAgICAgICAg
IF9fYXNtX18gX192b2xhdGlsZV9fKCJpbnZscGcgJTAiOiA6Im0iICgqKGNoYXIgKikgYWRkcikp
Owp9CgpzdGF0aWMgaW5saW5lIHZvaWQgZmx1c2hfdGxiX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3Qg
Km1tLAogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQp7CiAg
ICAgICAgaWYgKG1tID09IGdldF9jdXJyZW50KCktPmFjdGl2ZV9tbSkKICAgICAgICAgICAgICAg
IGRvIHsgdW5zaWduZWQgaW50IHRtcHJlZzsgX19hc21fXyBfX3ZvbGF0aWxlX18oICJtb3ZsICUl
Y3IzLCAlMDsgICMgZmx1c2ggVExCIFxuIiAibW92bCAlMCwgJSVjcjM7ICAgICAgICAgICAgICBc
biIgOiAiPXIiICh0bXByZWcpIDo6ICJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7Cn0KIyAyMjcgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BnYWxsb2MuaCIKc3RhdGljIGlubGluZSB2b2lkIGZs
dXNoX3RsYl9wZ3RhYmxlcyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVu
ZCkKewoKfQojIDYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaGlnaG1lbS5oIiAyCiMg
MzEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaGlnaG1lbS5oIgpzdGF0aWMgaW5saW5l
IHVuc2lnbmVkIGludCBucl9mcmVlX2hpZ2hwYWdlcyh2b2lkKSB7IHJldHVybiAwOyB9CgpzdGF0
aWMgaW5saW5lIHZvaWQgKmttYXAoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuICgocGFnZSkt
PnZpcnR1YWwpOyB9CiMgNDYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaGlnaG1lbS5o
IgpzdGF0aWMgaW5saW5lIHZvaWQgY2xlYXJfdXNlcl9oaWdocGFnZShzdHJ1Y3QgcGFnZSAqcGFn
ZSwgdW5zaWduZWQgbG9uZyB2YWRkcikKewogICAgICAgIHZvaWQgKmFkZHIgPSBrbWFwKHBhZ2Up
OwogICAgICAgIG1teF9jbGVhcl9wYWdlKCh2b2lkICopKGFkZHIpKTsKICAgICAgICBkbyB7IH0g
d2hpbGUgKDApOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgY2xlYXJfaGlnaHBhZ2Uoc3RydWN0IHBh
Z2UgKnBhZ2UpCnsKICAgICAgICBtbXhfY2xlYXJfcGFnZSgodm9pZCAqKShrbWFwKHBhZ2UpKSk7
CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIG1lbWNsZWFy
X2hpZ2hwYWdlKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25l
ZCBpbnQgc2l6ZSkKewogICAgICAgIGNoYXIgKmthZGRyOwoKICAgICAgICBpZiAob2Zmc2V0ICsg
c2l6ZSA+ICgxVUwgPDwgMTIpKQogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o
Ii5ieXRlIDB4MGYsMHgwYiIpOwogICAgICAgIGthZGRyID0ga21hcChwYWdlKTsKICAgICAgICAo
X19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemUpKSA/
IF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0KCgoa2FkZHIgKyBvZmZzZXQpKSwoKDB4MDEw
MTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemUpKSkgOiBfX2NvbnN0YW50X2NfbWVt
c2V0KCgoa2FkZHIgKyBvZmZzZXQpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkp
KSwoKHNpemUpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplKSkgPyBfX21lbXNldF9n
ZW5lcmljKCgoKGthZGRyICsgb2Zmc2V0KSkpLCgoKDApKSksKCgoc2l6ZSkpKSkgOiBfX21lbXNl
dF9nZW5lcmljKCgoa2FkZHIgKyBvZmZzZXQpKSwoKDApKSwoKHNpemUpKSkpKTsKICAgICAgICBk
byB7IH0gd2hpbGUgKDApOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgbWVtY2xlYXJfaGlnaHBh
Z2VfZmx1c2goc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVk
IGludCBzaXplKQp7CiAgICAgICAgY2hhciAqa2FkZHI7CgogICAgICAgIGlmIChvZmZzZXQgKyBz
aXplID4gKDFVTCA8PCAxMikpCiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygi
LmJ5dGUgMHgwZiwweDBiIik7CiAgICAgICAga2FkZHIgPSBrbWFwKHBhZ2UpOwogICAgICAgIChf
X2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZSkpID8g
X19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKChrYWRkciArIG9mZnNldCkpLCgoMHgwMTAx
MDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoc2l6ZSkpKSA6IF9fY29uc3RhbnRfY19tZW1z
ZXQoKChrYWRkciArIG9mZnNldCkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkp
LCgoc2l6ZSkpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemUpKSA/IF9fbWVtc2V0X2dl
bmVyaWMoKCgoa2FkZHIgKyBvZmZzZXQpKSksKCgoMCkpKSwoKChzaXplKSkpKSA6IF9fbWVtc2V0
X2dlbmVyaWMoKChrYWRkciArIG9mZnNldCkpLCgoMCkpLCgoc2l6ZSkpKSkpOwogICAgICAgIGRv
IHsgfSB3aGlsZSAoMCk7CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsKfQoKc3RhdGljIGlubGlu
ZSB2b2lkIGNvcHlfdXNlcl9oaWdocGFnZShzdHJ1Y3QgcGFnZSAqdG8sIHN0cnVjdCBwYWdlICpm
cm9tLCB1bnNpZ25lZCBsb25nIHZhZGRyKQp7CiAgICAgICAgY2hhciAqdmZyb20sICp2dG87Cgog
ICAgICAgIHZmcm9tID0ga21hcChmcm9tKTsKICAgICAgICB2dG8gPSBrbWFwKHRvKTsKICAgICAg
ICBtbXhfY29weV9wYWdlKHZ0byx2ZnJvbSk7CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsKICAg
ICAgICBkbyB7IH0gd2hpbGUgKDApOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgY29weV9oaWdocGFn
ZShzdHJ1Y3QgcGFnZSAqdG8sIHN0cnVjdCBwYWdlICpmcm9tKQp7CiAgICAgICAgY2hhciAqdmZy
b20sICp2dG87CgogICAgICAgIHZmcm9tID0ga21hcChmcm9tKTsKICAgICAgICB2dG8gPSBrbWFw
KHRvKTsKICAgICAgICBtbXhfY29weV9wYWdlKHZ0byx2ZnJvbSk7CiAgICAgICAgZG8geyB9IHdo
aWxlICgwKTsKICAgICAgICBkbyB7IH0gd2hpbGUgKDApOwp9CiMgMjggIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvc2tidWZmLmgiIDIKIyA4NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9za2J1ZmYuaCIKc3RydWN0IG5mX2Nvbm50cmFjayB7CiAgICAgICAgYXRvbWljX3QgdXNl
OwogICAgICAgIHZvaWQgKCpkZXN0cm95KShzdHJ1Y3QgbmZfY29ubnRyYWNrICopOwp9OwoKc3Ry
dWN0IG5mX2N0X2luZm8gewogICAgICAgIHN0cnVjdCBuZl9jb25udHJhY2sgKm1hc3RlcjsKfTsK
CgpzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHsKCiAgICAgICAgc3RydWN0IHNrX2J1ZmYgKiBuZXh0Owog
ICAgICAgIHN0cnVjdCBza19idWZmICogcHJldjsKCiAgICAgICAgX191MzIgcWxlbjsKICAgICAg
ICBzcGlubG9ja190IGxvY2s7Cn07CgpzdHJ1Y3Qgc2tfYnVmZjsKCgoKdHlwZWRlZiBzdHJ1Y3Qg
c2tiX2ZyYWdfc3RydWN0IHNrYl9mcmFnX3Q7CgpzdHJ1Y3Qgc2tiX2ZyYWdfc3RydWN0CnsKICAg
ICAgICBzdHJ1Y3QgcGFnZSAqcGFnZTsKICAgICAgICBfX3UxNiBwYWdlX29mZnNldDsKICAgICAg
ICBfX3UxNiBzaXplOwp9OwoKCgoKc3RydWN0IHNrYl9zaGFyZWRfaW5mbyB7CiAgICAgICAgYXRv
bWljX3QgZGF0YXJlZjsKICAgICAgICB1bnNpZ25lZCBpbnQgbnJfZnJhZ3M7CiAgICAgICAgc3Ry
dWN0IHNrX2J1ZmYgKmZyYWdfbGlzdDsKICAgICAgICBza2JfZnJhZ190IGZyYWdzWzZdOwp9OwoK
c3RydWN0IHNrX2J1ZmYgewoKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqIG5leHQ7CiAgICAgICAg
c3RydWN0IHNrX2J1ZmYgKiBwcmV2OwoKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICogbGlz
dDsKICAgICAgICBzdHJ1Y3Qgc29jayAqc2s7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgc3RhbXA7
CiAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldjsKCgogICAgICAgIHVuaW9uCiAgICAgICAg
ewogICAgICAgICAgICAgICAgc3RydWN0IHRjcGhkciAqdGg7CiAgICAgICAgICAgICAgICBzdHJ1
Y3QgdWRwaGRyICp1aDsKICAgICAgICAgICAgICAgIHN0cnVjdCBpY21waGRyICppY21waDsKICAg
ICAgICAgICAgICAgIHN0cnVjdCBpZ21waGRyICppZ21waDsKICAgICAgICAgICAgICAgIHN0cnVj
dCBpcGhkciAqaXBpcGg7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3B4aGRyICpzcHhoOwogICAg
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqcmF3OwogICAgICAgIH0gaDsKCgogICAgICAgIHVu
aW9uCiAgICAgICAgewogICAgICAgICAgICAgICAgc3RydWN0IGlwaGRyICppcGg7CiAgICAgICAg
ICAgICAgICBzdHJ1Y3QgaXB2NmhkciAqaXB2Nmg7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgYXJw
aGRyICphcnBoOwogICAgICAgICAgICAgICAgc3RydWN0IGlweGhkciAqaXB4aDsKICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgKnJhdzsKICAgICAgICB9IG5oOwoKCiAgICAgICAgdW5pb24K
ICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgZXRoaGRyICpldGhlcm5ldDsKICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnJhdzsKICAgICAgICB9IG1hYzsKCiAgICAgICAgc3Ry
dWN0IGRzdF9lbnRyeSAqZHN0OwoKCgoKCgoKICAgICAgICBjaGFyIGNiWzQ4XTsKCiAgICAgICAg
dW5zaWduZWQgaW50IGxlbjsKICAgICAgICB1bnNpZ25lZCBpbnQgZGF0YV9sZW47CiAgICAgICAg
dW5zaWduZWQgaW50IGNzdW07CiAgICAgICAgdW5zaWduZWQgY2hhciBfX3VudXNlZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgY2xvbmVkLAogICAgICAgICAgICAgICAgICAgICAgICBwa3RfdHlw
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgaXBfc3VtbWVkOwogICAgICAgIF9fdTMyIHByaW9y
aXR5OwogICAgICAgIGF0b21pY190IHVzZXJzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHByb3Rv
Y29sOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNlY3VyaXR5OwogICAgICAgIHVuc2lnbmVkIGlu
dCB0cnVlc2l6ZTsKCiAgICAgICAgdW5zaWduZWQgY2hhciAqaGVhZDsKICAgICAgICB1bnNpZ25l
ZCBjaGFyICpkYXRhOwogICAgICAgIHVuc2lnbmVkIGNoYXIgKnRhaWw7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciAqZW5kOwoKICAgICAgICB2b2lkICgqZGVzdHJ1Y3Rvcikoc3RydWN0IHNrX2J1ZmYg
Kik7CgoKICAgICAgICB1bnNpZ25lZCBsb25nIG5mbWFyazsKCiAgICAgICAgX191MzIgbmZjYWNo
ZTsKCiAgICAgICAgc3RydWN0IG5mX2N0X2luZm8gKm5mY3Q7CiMgMjE2ICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgogICAgICAgX191MzIgdGNfaW5kZXg7Cgp9OwojIDIy
NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKIyAxICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3NsYWIuaCIgMQojIDIyOCAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9za2J1ZmYuaCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zeXN0
ZW0uaCIgMQojIDIzMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIgMgoK
ZXh0ZXJuIHZvaWQgX19rZnJlZV9za2JfUmExOGJhNzI1KHN0cnVjdCBza19idWZmICpza2IpOwpl
eHRlcm4gc3RydWN0IHNrX2J1ZmYgKiBhbGxvY19za2JfUjc0ZDU1YTcxKHVuc2lnbmVkIGludCBz
aXplLCBpbnQgcHJpb3JpdHkpOwpleHRlcm4gdm9pZCBrZnJlZV9za2JtZW0oc3RydWN0IHNrX2J1
ZmYgKnNrYik7CmV4dGVybiBzdHJ1Y3Qgc2tfYnVmZiAqIHNrYl9jbG9uZV9SZWRjYTQwNmQoc3Ry
dWN0IHNrX2J1ZmYgKnNrYiwgaW50IHByaW9yaXR5KTsKZXh0ZXJuIHN0cnVjdCBza19idWZmICog
c2tiX2NvcHlfUmM4ODNkNzAxKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGludCBwcmlvcml0
eSk7CmV4dGVybiBzdHJ1Y3Qgc2tfYnVmZiAqIHBza2JfY29weV9SZTc4MzBlNGUoc3RydWN0IHNr
X2J1ZmYgKnNrYiwgaW50IGdmcF9tYXNrKTsKZXh0ZXJuIGludCBwc2tiX2V4cGFuZF9oZWFkX1I0
YWQwYzQ3ZihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgbmhlYWQsIGludCBudGFpbCwgaW50IGdm
cF9tYXNrKTsKZXh0ZXJuIHN0cnVjdCBza19idWZmICogc2tiX3JlYWxsb2NfaGVhZHJvb21fUjU1
MjNhZTY0KHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBoZWFkcm9vbSk7CmV4dGVy
biBzdHJ1Y3Qgc2tfYnVmZiAqIHNrYl9jb3B5X2V4cGFuZF9SZjA1MDM1NjAoY29uc3Qgc3RydWN0
IHNrX2J1ZmYgKnNrYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IG5ld2hlYWRyb29tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgbmV3dGFpbHJvb20sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBwcmlvcml0eSk7CgpleHRlcm4gdm9pZCBza2Jfb3Zl
cl9wYW5pY19SMjRlZDZlMmIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGxlbiwgdm9pZCAqaGVy
ZSk7CmV4dGVybiB2b2lkIHNrYl91bmRlcl9wYW5pY19SZThkNTE2ZGIoc3RydWN0IHNrX2J1ZmYg
KnNrYiwgaW50IGxlbiwgdm9pZCAqaGVyZSk7CiMgMjU3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIGludCBza2JfcXVldWVfZW1wdHkoc3RydWN0
IHNrX2J1ZmZfaGVhZCAqbGlzdCkKewogICAgICAgIHJldHVybiAobGlzdC0+bmV4dCA9PSAoc3Ry
dWN0IHNrX2J1ZmYgKikgbGlzdCk7Cn0KIyAyNzAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgc3RydWN0IHNrX2J1ZmYgKnNrYl9nZXQoc3RydWN0
IHNrX2J1ZmYgKnNrYikKewogICAgICAgIGF0b21pY19pbmMoJnNrYi0+dXNlcnMpOwogICAgICAg
IHJldHVybiBza2I7Cn0KIyAyODkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZm
LmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBrZnJlZV9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYikKewog
ICAgICAgIGlmICgoKCZza2ItPnVzZXJzKS0+Y291bnRlcikgPT0gMSB8fCBhdG9taWNfZGVjX2Fu
ZF90ZXN0KCZza2ItPnVzZXJzKSkKICAgICAgICAgICAgICAgIF9fa2ZyZWVfc2tiX1JhMThiYTcy
NShza2IpOwp9CgoKc3RhdGljIGlubGluZSB2b2lkIGtmcmVlX3NrYl9mYXN0KHN0cnVjdCBza19i
dWZmICpza2IpCnsKICAgICAgICBpZiAoKCgmc2tiLT51c2VycyktPmNvdW50ZXIpID09IDEgfHwg
YXRvbWljX2RlY19hbmRfdGVzdCgmc2tiLT51c2VycykpCiAgICAgICAgICAgICAgICBrZnJlZV9z
a2JtZW0oc2tiKTsKfQojIDMxMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYu
aCIKc3RhdGljIGlubGluZSBpbnQgc2tiX2Nsb25lZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQp7CiAg
ICAgICAgcmV0dXJuIHNrYi0+Y2xvbmVkICYmICgoJigoc3RydWN0IHNrYl9zaGFyZWRfaW5mbyAq
KSgoc2tiKS0+ZW5kKSktPmRhdGFyZWYpLT5jb3VudGVyKSAhPSAxOwp9CiMgMzI0ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIGludCBza2Jfc2hh
cmVkKHN0cnVjdCBza19idWZmICpza2IpCnsKICAgICAgICByZXR1cm4gKCgoJnNrYi0+dXNlcnMp
LT5jb3VudGVyKSAhPSAxKTsKfQojIDM0MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9z
a2J1ZmYuaCIKc3RhdGljIGlubGluZSBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX3NoYXJlX2NoZWNrKHN0
cnVjdCBza19idWZmICpza2IsIGludCBwcmkpCnsKICAgICAgICBpZiAoc2tiX3NoYXJlZChza2Ip
KSB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqbnNrYjsKICAgICAgICAgICAgICAg
IG5za2IgPSBza2JfY2xvbmVfUmVkY2E0MDZkKHNrYiwgcHJpKTsKICAgICAgICAgICAgICAgIGtm
cmVlX3NrYihza2IpOwogICAgICAgICAgICAgICAgcmV0dXJuIG5za2I7CiAgICAgICAgfQogICAg
ICAgIHJldHVybiBza2I7Cn0KIyAzNzYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2ti
dWZmLmgiCnN0YXRpYyBpbmxpbmUgc3RydWN0IHNrX2J1ZmYgKnNrYl91bnNoYXJlKHN0cnVjdCBz
a19idWZmICpza2IsIGludCBwcmkpCnsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqbnNrYjsKICAg
ICAgICBpZighc2tiX2Nsb25lZChza2IpKQogICAgICAgICAgICAgICAgcmV0dXJuIHNrYjsKICAg
ICAgICBuc2tiPXNrYl9jb3B5X1JjODgzZDcwMShza2IsIHByaSk7CiAgICAgICAga2ZyZWVfc2ti
KHNrYik7CiAgICAgICAgcmV0dXJuIG5za2I7Cn0KIyA0MDAgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgc3RydWN0IHNrX2J1ZmYgKnNrYl9wZWVr
KHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3RfKQp7CiAgICAgICAgc3RydWN0IHNrX2J1ZmYgKmxp
c3QgPSAoKHN0cnVjdCBza19idWZmICopbGlzdF8pLT5uZXh0OwogICAgICAgIGlmIChsaXN0ID09
IChzdHJ1Y3Qgc2tfYnVmZiAqKWxpc3RfKQogICAgICAgICAgICAgICAgbGlzdCA9ICgodm9pZCAq
KTApOwogICAgICAgIHJldHVybiBsaXN0Owp9CiMgNDIyICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHN0cnVjdCBza19idWZmICpza2JfcGVla190
YWlsKHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3RfKQp7CiAgICAgICAgc3RydWN0IHNrX2J1ZmYg
Kmxpc3QgPSAoKHN0cnVjdCBza19idWZmICopbGlzdF8pLT5wcmV2OwogICAgICAgIGlmIChsaXN0
ID09IChzdHJ1Y3Qgc2tfYnVmZiAqKWxpc3RfKQogICAgICAgICAgICAgICAgbGlzdCA9ICgodm9p
ZCAqKTApOwogICAgICAgIHJldHVybiBsaXN0Owp9CiMgNDM3ICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIF9fdTMyIHNrYl9xdWV1ZV9sZW4oc3Ry
dWN0IHNrX2J1ZmZfaGVhZCAqbGlzdF8pCnsKICAgICAgICByZXR1cm4obGlzdF8tPnFsZW4pOwp9
CgpzdGF0aWMgaW5saW5lIHZvaWQgc2tiX3F1ZXVlX2hlYWRfaW5pdChzdHJ1Y3Qgc2tfYnVmZl9o
ZWFkICpsaXN0KQp7CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwogICAgICAgIGxpc3QtPnByZXYg
PSAoc3RydWN0IHNrX2J1ZmYgKilsaXN0OwogICAgICAgIGxpc3QtPm5leHQgPSAoc3RydWN0IHNr
X2J1ZmYgKilsaXN0OwogICAgICAgIGxpc3QtPnFsZW4gPSAwOwp9CiMgNDY4ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHZvaWQgX19za2JfcXVl
dWVfaGVhZChzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0LCBzdHJ1Y3Qgc2tfYnVmZiAqbmV3c2sp
CnsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcHJldiwgKm5leHQ7CgogICAgICAgIG5ld3NrLT5s
aXN0ID0gbGlzdDsKICAgICAgICBsaXN0LT5xbGVuKys7CiAgICAgICAgcHJldiA9IChzdHJ1Y3Qg
c2tfYnVmZiAqKWxpc3Q7CiAgICAgICAgbmV4dCA9IHByZXYtPm5leHQ7CiAgICAgICAgbmV3c2st
Pm5leHQgPSBuZXh0OwogICAgICAgIG5ld3NrLT5wcmV2ID0gcHJldjsKICAgICAgICBuZXh0LT5w
cmV2ID0gbmV3c2s7CiAgICAgICAgcHJldi0+bmV4dCA9IG5ld3NrOwp9CiMgNDk1ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHZvaWQgc2tiX3F1
ZXVlX2hlYWQoc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCwgc3RydWN0IHNrX2J1ZmYgKm5ld3Nr
KQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCiAgICAgICAgZG8geyBfX2FzbV9fIF9f
dm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxhZ3MpOiA6Im1lbW9y
eSIpOyAodm9pZCkoJmxpc3QtPmxvY2spOyB9IHdoaWxlICgwKTsKICAgICAgICBfX3NrYl9xdWV1
ZV9oZWFkKGxpc3QsIG5ld3NrKTsKICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgX19hc21f
XyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9yeSIs
ICJjYyIpOyB9IHdoaWxlICgwKTsKfQojIDUxNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSB2b2lkIF9fc2tiX3F1ZXVlX3RhaWwoc3RydWN0IHNr
X2J1ZmZfaGVhZCAqbGlzdCwgc3RydWN0IHNrX2J1ZmYgKm5ld3NrKQp7CiAgICAgICAgc3RydWN0
IHNrX2J1ZmYgKnByZXYsICpuZXh0OwoKICAgICAgICBuZXdzay0+bGlzdCA9IGxpc3Q7CiAgICAg
ICAgbGlzdC0+cWxlbisrOwogICAgICAgIG5leHQgPSAoc3RydWN0IHNrX2J1ZmYgKilsaXN0Owog
ICAgICAgIHByZXYgPSBuZXh0LT5wcmV2OwogICAgICAgIG5ld3NrLT5uZXh0ID0gbmV4dDsKICAg
ICAgICBuZXdzay0+cHJldiA9IHByZXY7CiAgICAgICAgbmV4dC0+cHJldiA9IG5ld3NrOwogICAg
ICAgIHByZXYtPm5leHQgPSBuZXdzazsKfQojIDU0MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSB2b2lkIHNrYl9xdWV1ZV90YWlsKHN0cnVjdCBz
a19idWZmX2hlYWQgKmxpc3QsIHN0cnVjdCBza19idWZmICpuZXdzaykKewogICAgICAgIHVuc2ln
bmVkIGxvbmcgZmxhZ3M7CgogICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hm
bCA7IHBvcGwgJTAgOyBjbGkiOiI9ZyIgKGZsYWdzKTogOiJtZW1vcnkiKTsgKHZvaWQpKCZsaXN0
LT5sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgX19za2JfcXVldWVfdGFpbChsaXN0LCBuZXdz
ayk7CiAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJw
dXNobCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAo
MCk7Cn0KIyA1NjAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRp
YyBpbmxpbmUgc3RydWN0IHNrX2J1ZmYgKl9fc2tiX2RlcXVldWUoc3RydWN0IHNrX2J1ZmZfaGVh
ZCAqbGlzdCkKewogICAgICAgIHN0cnVjdCBza19idWZmICpuZXh0LCAqcHJldiwgKnJlc3VsdDsK
CiAgICAgICAgcHJldiA9IChzdHJ1Y3Qgc2tfYnVmZiAqKSBsaXN0OwogICAgICAgIG5leHQgPSBw
cmV2LT5uZXh0OwogICAgICAgIHJlc3VsdCA9ICgodm9pZCAqKTApOwogICAgICAgIGlmIChuZXh0
ICE9IHByZXYpIHsKICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5leHQ7CiAgICAgICAgICAgICAg
ICBuZXh0ID0gbmV4dC0+bmV4dDsKICAgICAgICAgICAgICAgIGxpc3QtPnFsZW4tLTsKICAgICAg
ICAgICAgICAgIG5leHQtPnByZXYgPSBwcmV2OwogICAgICAgICAgICAgICAgcHJldi0+bmV4dCA9
IG5leHQ7CiAgICAgICAgICAgICAgICByZXN1bHQtPm5leHQgPSAoKHZvaWQgKikwKTsKICAgICAg
ICAgICAgICAgIHJlc3VsdC0+cHJldiA9ICgodm9pZCAqKTApOwogICAgICAgICAgICAgICAgcmVz
dWx0LT5saXN0ID0gKCh2b2lkICopMCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXN1bHQ7
Cn0KIyA1ODkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBp
bmxpbmUgc3RydWN0IHNrX2J1ZmYgKnNrYl9kZXF1ZXVlKHN0cnVjdCBza19idWZmX2hlYWQgKmxp
c3QpCnsKICAgICAgICBsb25nIGZsYWdzOwogICAgICAgIHN0cnVjdCBza19idWZmICpyZXN1bHQ7
CgogICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBvcGwgJTAgOyBj
bGkiOiI9ZyIgKGZsYWdzKTogOiJtZW1vcnkiKTsgKHZvaWQpKCZsaXN0LT5sb2NrKTsgfSB3aGls
ZSAoMCk7CiAgICAgICAgcmVzdWx0ID0gX19za2JfZGVxdWV1ZShsaXN0KTsKICAgICAgICBkbyB7
IGRvIHsgfSB3aGlsZSgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwi
OiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsKICAgICAgICByZXR1
cm4gcmVzdWx0Owp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkIF9fc2tiX2luc2VydChzdHJ1Y3Qg
c2tfYnVmZiAqbmV3c2ssCiAgICAgICAgc3RydWN0IHNrX2J1ZmYgKiBwcmV2LCBzdHJ1Y3Qgc2tf
YnVmZiAqbmV4dCwKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICogbGlzdCkKewogICAgICAg
IG5ld3NrLT5uZXh0ID0gbmV4dDsKICAgICAgICBuZXdzay0+cHJldiA9IHByZXY7CiAgICAgICAg
bmV4dC0+cHJldiA9IG5ld3NrOwogICAgICAgIHByZXYtPm5leHQgPSBuZXdzazsKICAgICAgICBu
ZXdzay0+bGlzdCA9IGxpc3Q7CiAgICAgICAgbGlzdC0+cWxlbisrOwp9CiMgNjI2ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHZvaWQgc2tiX2lu
c2VydChzdHJ1Y3Qgc2tfYnVmZiAqb2xkLCBzdHJ1Y3Qgc2tfYnVmZiAqbmV3c2spCnsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGZsYWdzOwoKICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9f
KCJwdXNoZmwgOyBwb3BsICUwIDsgY2xpIjoiPWciIChmbGFncyk6IDoibWVtb3J5Iik7ICh2b2lk
KSgmb2xkLT5saXN0LT5sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgX19za2JfaW5zZXJ0KG5l
d3NrLCBvbGQtPnByZXYsIG9sZCwgb2xkLT5saXN0KTsKICAgICAgICBkbyB7IGRvIHsgfSB3aGls
ZSgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFn
cyk6Im1lbW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgdm9p
ZCBfX3NrYl9hcHBlbmQoc3RydWN0IHNrX2J1ZmYgKm9sZCwgc3RydWN0IHNrX2J1ZmYgKm5ld3Nr
KQp7CiAgICAgICAgX19za2JfaW5zZXJ0KG5ld3NrLCBvbGQsIG9sZC0+bmV4dCwgb2xkLT5saXN0
KTsKfQojIDY1NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGlj
IGlubGluZSB2b2lkIHNrYl9hcHBlbmQoc3RydWN0IHNrX2J1ZmYgKm9sZCwgc3RydWN0IHNrX2J1
ZmYgKm5ld3NrKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCiAgICAgICAgZG8geyBf
X2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxhZ3Mp
OiA6Im1lbW9yeSIpOyAodm9pZCkoJm9sZC0+bGlzdC0+bG9jayk7IH0gd2hpbGUgKDApOwogICAg
ICAgIF9fc2tiX2FwcGVuZChvbGQsIG5ld3NrKTsKICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgw
KTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6
Im1lbW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQg
X19za2JfdW5saW5rKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBza19idWZmX2hlYWQgKmxp
c3QpCnsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqIG5leHQsICogcHJldjsKCiAgICAgICAgbGlz
dC0+cWxlbi0tOwogICAgICAgIG5leHQgPSBza2ItPm5leHQ7CiAgICAgICAgcHJldiA9IHNrYi0+
cHJldjsKICAgICAgICBza2ItPm5leHQgPSAoKHZvaWQgKikwKTsKICAgICAgICBza2ItPnByZXYg
PSAoKHZvaWQgKikwKTsKICAgICAgICBza2ItPmxpc3QgPSAoKHZvaWQgKikwKTsKICAgICAgICBu
ZXh0LT5wcmV2ID0gcHJldjsKICAgICAgICBwcmV2LT5uZXh0ID0gbmV4dDsKfQojIDY5NiAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSB2b2lkIHNr
Yl91bmxpbmsoc3RydWN0IHNrX2J1ZmYgKnNrYikKewogICAgICAgIHN0cnVjdCBza19idWZmX2hl
YWQgKmxpc3QgPSBza2ItPmxpc3Q7CgogICAgICAgIGlmKGxpc3QpIHsKICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxvbmcgZmxhZ3M7CgogICAgICAgICAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9s
YXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxhZ3MpOiA6Im1lbW9yeSIp
OyAodm9pZCkoJmxpc3QtPmxvY2spOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgIGlmKHNr
Yi0+bGlzdCA9PSBsaXN0KQogICAgICAgICAgICAgICAgICAgICAgICBfX3NrYl91bmxpbmsoc2ti
LCBza2ItPmxpc3QpOwogICAgICAgICAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IF9fYXNt
X18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnki
LCAiY2MiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgfQp9CiMgNzIxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHN0cnVjdCBza19idWZmICpfX3Nr
Yl9kZXF1ZXVlX3RhaWwoc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCkKewogICAgICAgIHN0cnVj
dCBza19idWZmICpza2IgPSBza2JfcGVla190YWlsKGxpc3QpOwogICAgICAgIGlmIChza2IpCiAg
ICAgICAgICAgICAgICBfX3NrYl91bmxpbmsoc2tiLCBsaXN0KTsKICAgICAgICByZXR1cm4gc2ti
Owp9CiMgNzM4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMg
aW5saW5lIHN0cnVjdCBza19idWZmICpza2JfZGVxdWV1ZV90YWlsKHN0cnVjdCBza19idWZmX2hl
YWQgKmxpc3QpCnsKICAgICAgICBsb25nIGZsYWdzOwogICAgICAgIHN0cnVjdCBza19idWZmICpy
ZXN1bHQ7CgogICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBvcGwg
JTAgOyBjbGkiOiI9ZyIgKGZsYWdzKTogOiJtZW1vcnkiKTsgKHZvaWQpKCZsaXN0LT5sb2NrKTsg
fSB3aGlsZSAoMCk7CiAgICAgICAgcmVzdWx0ID0gX19za2JfZGVxdWV1ZV90YWlsKGxpc3QpOwog
ICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwg
JTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDApOwog
ICAgICAgIHJldHVybiByZXN1bHQ7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IHNrYl9pc19ub25saW5l
YXIoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYikKewogICAgICAgIHJldHVybiBza2ItPmRhdGFf
bGVuOwp9CgpzdGF0aWMgaW5saW5lIGludCBza2JfaGVhZGxlbihjb25zdCBzdHJ1Y3Qgc2tfYnVm
ZiAqc2tiKQp7CiAgICAgICAgcmV0dXJuIHNrYi0+bGVuIC0gc2tiLT5kYXRhX2xlbjsKfQojIDc2
NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSB1
bnNpZ25lZCBjaGFyICpfX3NrYl9wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50
IGxlbikKewogICAgICAgIHVuc2lnbmVkIGNoYXIgKnRtcD1za2ItPnRhaWw7CiAgICAgICAgZG8g
eyBpZiAoc2tiX2lzX25vbmxpbmVhcihza2IpKSBfX2FzbV9fIF9fdm9sYXRpbGVfXygiLmJ5dGUg
MHgwZiwweDBiIik7IH0gd2hpbGUgKDApOwogICAgICAgIHNrYi0+dGFpbCs9bGVuOwogICAgICAg
IHNrYi0+bGVuKz1sZW47CiAgICAgICAgcmV0dXJuIHRtcDsKfQojIDc4NiAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyICpz
a2JfcHV0KHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4pCnsKICAgICAgICB1
bnNpZ25lZCBjaGFyICp0bXA9c2tiLT50YWlsOwogICAgICAgIGRvIHsgaWYgKHNrYl9pc19ub25s
aW5lYXIoc2tiKSkgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOyB9IHdo
aWxlICgwKTsKICAgICAgICBza2ItPnRhaWwrPWxlbjsKICAgICAgICBza2ItPmxlbis9bGVuOwog
ICAgICAgIGlmKHNrYi0+dGFpbD5za2ItPmVuZCkgewogICAgICAgICAgICAgICAgc2tiX292ZXJf
cGFuaWNfUjI0ZWQ2ZTJiKHNrYiwgbGVuLCAoeyB2b2lkICpwYzsgX19hc21fXygibW92bCAkMWYs
JTBcbjE6IjoiPWciIChwYykpOyBwYzsgfSkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdG1w
Owp9CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIgKl9fc2tiX3B1c2goc3RydWN0IHNrX2J1
ZmYgKnNrYiwgdW5zaWduZWQgaW50IGxlbikKewogICAgICAgIHNrYi0+ZGF0YS09bGVuOwogICAg
ICAgIHNrYi0+bGVuKz1sZW47CiAgICAgICAgcmV0dXJuIHNrYi0+ZGF0YTsKfQojIDgxNSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSB1bnNpZ25l
ZCBjaGFyICpza2JfcHVzaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgbGVuKQp7
CiAgICAgICAgc2tiLT5kYXRhLT1sZW47CiAgICAgICAgc2tiLT5sZW4rPWxlbjsKICAgICAgICBp
Zihza2ItPmRhdGE8c2tiLT5oZWFkKSB7CiAgICAgICAgICAgICAgICBza2JfdW5kZXJfcGFuaWNf
UmU4ZDUxNmRiKHNrYiwgbGVuLCAoeyB2b2lkICpwYzsgX19hc21fXygibW92bCAkMWYsJTBcbjE6
IjoiPWciIChwYykpOyBwYzsgfSkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gc2tiLT5kYXRh
Owp9CgpzdGF0aWMgaW5saW5lIGNoYXIgKl9fc2tiX3B1bGwoc3RydWN0IHNrX2J1ZmYgKnNrYiwg
dW5zaWduZWQgaW50IGxlbikKewogICAgICAgIHNrYi0+bGVuLT1sZW47CiAgICAgICAgaWYgKHNr
Yi0+bGVuIDwgc2tiLT5kYXRhX2xlbikKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGls
ZV9fKCIuYnl0ZSAweDBmLDB4MGIiKTsKICAgICAgICByZXR1cm4gc2tiLT5kYXRhKz1sZW47Cn0K
IyA4NDQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxp
bmUgdW5zaWduZWQgY2hhciAqIHNrYl9wdWxsKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVk
IGludCBsZW4pCnsKICAgICAgICBpZiAobGVuID4gc2tiLT5sZW4pCiAgICAgICAgICAgICAgICBy
ZXR1cm4gKCh2b2lkICopMCk7CiAgICAgICAgcmV0dXJuIF9fc2tiX3B1bGwoc2tiLGxlbik7Cn0K
CmV4dGVybiB1bnNpZ25lZCBjaGFyICogX19wc2tiX3B1bGxfdGFpbF9SZDEwZDVkMWYoc3RydWN0
IHNrX2J1ZmYgKnNrYiwgaW50IGRlbHRhKTsKCnN0YXRpYyBpbmxpbmUgY2hhciAqX19wc2tiX3B1
bGwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGxlbikKewogICAgICAgIGlmIChs
ZW4gPiBza2JfaGVhZGxlbihza2IpICYmCiAgICAgICAgICAgIF9fcHNrYl9wdWxsX3RhaWxfUmQx
MGQ1ZDFmKHNrYiwgbGVuLXNrYl9oZWFkbGVuKHNrYikpID09ICgodm9pZCAqKTApKQogICAgICAg
ICAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAgICAgIHNrYi0+bGVuIC09IGxlbjsKICAg
ICAgICByZXR1cm4gc2tiLT5kYXRhICs9IGxlbjsKfQoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBj
aGFyICogcHNrYl9wdWxsKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4pCnsK
ICAgICAgICBpZiAobGVuID4gc2tiLT5sZW4pCiAgICAgICAgICAgICAgICByZXR1cm4gKCh2b2lk
ICopMCk7CiAgICAgICAgcmV0dXJuIF9fcHNrYl9wdWxsKHNrYixsZW4pOwp9CgpzdGF0aWMgaW5s
aW5lIGludCBwc2tiX21heV9wdWxsKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBs
ZW4pCnsKICAgICAgICBpZiAobGVuIDw9IHNrYl9oZWFkbGVuKHNrYikpCiAgICAgICAgICAgICAg
ICByZXR1cm4gMTsKICAgICAgICBpZiAobGVuID4gc2tiLT5sZW4pCiAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKICAgICAgICByZXR1cm4gKF9fcHNrYl9wdWxsX3RhaWxfUmQxMGQ1ZDFmKHNrYiwg
bGVuLXNrYl9oZWFkbGVuKHNrYikpICE9ICgodm9pZCAqKTApKTsKfQojIDg4NSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSBpbnQgc2tiX2hlYWRy
b29tKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpCnsKICAgICAgICByZXR1cm4gc2tiLT5kYXRh
LXNrYi0+aGVhZDsKfQojIDg5NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYu
aCIKc3RhdGljIGlubGluZSBpbnQgc2tiX3RhaWxyb29tKGNvbnN0IHN0cnVjdCBza19idWZmICpz
a2IpCnsKICAgICAgICByZXR1cm4gc2tiX2lzX25vbmxpbmVhcihza2IpID8gMCA6IHNrYi0+ZW5k
LXNrYi0+dGFpbDsKfQojIDkxMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYu
aCIKc3RhdGljIGlubGluZSB2b2lkIHNrYl9yZXNlcnZlKHN0cnVjdCBza19idWZmICpza2IsIHVu
c2lnbmVkIGludCBsZW4pCnsKICAgICAgICBza2ItPmRhdGErPWxlbjsKICAgICAgICBza2ItPnRh
aWwrPWxlbjsKfQoKZXh0ZXJuIGludCBfX19wc2tiX3RyaW1fUjk5ODhkNjRjKHN0cnVjdCBza19i
dWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4sIGludCByZWFsbG9jKTsKCnN0YXRpYyBpbmxpbmUg
dm9pZCBfX3NrYl90cmltKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4pCnsK
ICAgICAgICBpZiAoIXNrYi0+ZGF0YV9sZW4pIHsKICAgICAgICAgICAgICAgIHNrYi0+bGVuID0g
bGVuOwogICAgICAgICAgICAgICAgc2tiLT50YWlsID0gc2tiLT5kYXRhK2xlbjsKICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgX19fcHNrYl90cmltX1I5OTg4ZDY0Yyhza2IsIGxlbiwg
MCk7CiAgICAgICAgfQp9CiMgOTM4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVm
Zi5oIgpzdGF0aWMgaW5saW5lIHZvaWQgc2tiX3RyaW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5z
aWduZWQgaW50IGxlbikKewogICAgICAgIGlmIChza2ItPmxlbiA+IGxlbikgewogICAgICAgICAg
ICAgICAgX19za2JfdHJpbShza2IsIGxlbik7CiAgICAgICAgfQp9CgoKc3RhdGljIGlubGluZSBp
bnQgX19wc2tiX3RyaW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGxlbikKewog
ICAgICAgIGlmICghc2tiLT5kYXRhX2xlbikgewogICAgICAgICAgICAgICAgc2tiLT5sZW4gPSBs
ZW47CiAgICAgICAgICAgICAgICBza2ItPnRhaWwgPSBza2ItPmRhdGErbGVuOwogICAgICAgICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybiBf
X19wc2tiX3RyaW1fUjk5ODhkNjRjKHNrYiwgbGVuLCAxKTsKICAgICAgICB9Cn0KCnN0YXRpYyBp
bmxpbmUgaW50IHBza2JfdHJpbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgbGVu
KQp7CiAgICAgICAgaWYgKGxlbiA8IHNrYi0+bGVuKQogICAgICAgICAgICAgICAgcmV0dXJuIF9f
cHNrYl90cmltKHNrYiwgbGVuKTsKICAgICAgICByZXR1cm4gMDsKfQojIDk3NCAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSB2b2lkIHNrYl9vcnBo
YW4oc3RydWN0IHNrX2J1ZmYgKnNrYikKewogICAgICAgIGlmIChza2ItPmRlc3RydWN0b3IpCiAg
ICAgICAgICAgICAgICBza2ItPmRlc3RydWN0b3Ioc2tiKTsKICAgICAgICBza2ItPmRlc3RydWN0
b3IgPSAoKHZvaWQgKikwKTsKICAgICAgICBza2ItPnNrID0gKCh2b2lkICopMCk7Cn0KIyA5OTIg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgdm9p
ZCBza2JfcXVldWVfcHVyZ2Uoc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCkKewogICAgICAgIHN0
cnVjdCBza19idWZmICpza2I7CiAgICAgICAgd2hpbGUgKChza2I9c2tiX2RlcXVldWUobGlzdCkp
IT0oKHZvaWQgKikwKSkKICAgICAgICAgICAgICAgIGtmcmVlX3NrYihza2IpOwp9CiMgMTAwOSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSB2b2lk
IF9fc2tiX3F1ZXVlX3B1cmdlKHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QpCnsKICAgICAgICBz
dHJ1Y3Qgc2tfYnVmZiAqc2tiOwogICAgICAgIHdoaWxlICgoc2tiPV9fc2tiX2RlcXVldWUobGlz
dCkpIT0oKHZvaWQgKikwKSkKICAgICAgICAgICAgICAgIGtmcmVlX3NrYihza2IpOwp9CiMgMTAy
OSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSBz
dHJ1Y3Qgc2tfYnVmZiAqX19kZXZfYWxsb2Nfc2tiKHVuc2lnbmVkIGludCBsZW5ndGgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZ2ZwX21hc2spCnsK
ICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwoKICAgICAgICBza2IgPSBhbGxvY19za2JfUjc0
ZDU1YTcxKGxlbmd0aCsxNiwgZ2ZwX21hc2spOwogICAgICAgIGlmIChza2IpCiAgICAgICAgICAg
ICAgICBza2JfcmVzZXJ2ZShza2IsMTYpOwogICAgICAgIHJldHVybiBza2I7Cn0KIyAxMDUzICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHN0cnVj
dCBza19idWZmICpkZXZfYWxsb2Nfc2tiKHVuc2lnbmVkIGludCBsZW5ndGgpCnsKICAgICAgICBy
ZXR1cm4gX19kZXZfYWxsb2Nfc2tiKGxlbmd0aCwgKDB4MjApKTsKfQojIDEwNzEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgaW50CnNrYl9jb3co
c3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGhlYWRyb29tKQp7CiAgICAgICAgaW50
IGRlbHRhID0gKGhlYWRyb29tID4gMTYgPyBoZWFkcm9vbSA6IDE2KSAtIHNrYl9oZWFkcm9vbShz
a2IpOwoKICAgICAgICBpZiAoZGVsdGEgPCAwKQogICAgICAgICAgICAgICAgZGVsdGEgPSAwOwoK
ICAgICAgICBpZiAoZGVsdGEgfHwgc2tiX2Nsb25lZChza2IpKQogICAgICAgICAgICAgICAgcmV0
dXJuIHBza2JfZXhwYW5kX2hlYWRfUjRhZDBjNDdmKHNrYiwgKGRlbHRhKzE1KSZ+MTUsIDAsICgw
eDIwKSk7CiAgICAgICAgcmV0dXJuIDA7Cn0KIyAxMDkxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3NrYnVmZi5oIgppbnQgc2tiX2xpbmVhcml6ZV9SOTg3YTIwZWQoc3RydWN0IHNrX2J1
ZmYgKnNrYiwgaW50IGdmcCk7CgpzdGF0aWMgaW5saW5lIHZvaWQgKmttYXBfc2tiX2ZyYWcoY29u
c3Qgc2tiX2ZyYWdfdCAqZnJhZykKewoKCgoKCgogICAgICAgIHJldHVybiBrbWFwKGZyYWctPnBh
Z2UpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQga3VubWFwX3NrYl9mcmFnKHZvaWQgKnZhZGRyKQp7
CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsKCgoKfQoKCgoKCgoKZXh0ZXJuIHN0cnVjdCBza19i
dWZmICogc2tiX3JlY3ZfZGF0YWdyYW1fUjZmNDYzZDZmKHN0cnVjdCBzb2NrICpzayx1bnNpZ25l
ZCBmbGFncyxpbnQgbm9ibG9jaywgaW50ICplcnIpOwpleHRlcm4gdW5zaWduZWQgaW50IGRhdGFn
cmFtX3BvbGxfUjExNGEwOWEzKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgc29ja2V0ICpzb2Nr
LCBzdHJ1Y3QgcG9sbF90YWJsZV9zdHJ1Y3QgKndhaXQpOwpleHRlcm4gaW50IHNrYl9jb3B5X2Rh
dGFncmFtX1JlNjYzZGE4YShjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqZnJvbSwgaW50IG9mZnNldCwg
Y2hhciAqdG8saW50IHNpemUpOwpleHRlcm4gaW50IHNrYl9jb3B5X2RhdGFncmFtX2lvdmVjX1Jk
MjljYWI3Yyhjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqZnJvbSwgaW50IG9mZnNldCwgc3RydWN0IGlv
dmVjICp0byxpbnQgc2l6ZSk7CmV4dGVybiBpbnQgc2tiX2NvcHlfYW5kX2NzdW1fZGF0YWdyYW0o
Y29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG9mZnNldCwgdTggKnRvLCBpbnQgbGVuLCB1
bnNpZ25lZCBpbnQgKmNzdW1wKTsKZXh0ZXJuIGludCBza2JfY29weV9hbmRfY3N1bV9kYXRhZ3Jh
bV9pb3ZlY19SMWI4OGZjMDMoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGhsZW4sIHN0
cnVjdCBpb3ZlYyAqaW92KTsKZXh0ZXJuIHZvaWQgc2tiX2ZyZWVfZGF0YWdyYW1fUjExYjFkZjgz
KHN0cnVjdCBzb2NrICogc2ssIHN0cnVjdCBza19idWZmICpza2IpOwoKZXh0ZXJuIHVuc2lnbmVk
IGludCBza2JfY2hlY2tzdW1fUjc2YjA0ZTNjKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGlu
dCBvZmZzZXQsIGludCBsZW4sIHVuc2lnbmVkIGludCBjc3VtKTsKZXh0ZXJuIGludCBza2JfY29w
eV9iaXRzX1IwNjdkYWM3Nyhjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgb2Zmc2V0LCB2
b2lkICp0bywgaW50IGxlbik7CmV4dGVybiB1bnNpZ25lZCBpbnQgc2tiX2NvcHlfYW5kX2NzdW1f
Yml0c19SYzQwYWViNzYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG9mZnNldCwgdTgg
KnRvLCBpbnQgbGVuLCB1bnNpZ25lZCBpbnQgY3N1bSk7CmV4dGVybiB2b2lkIHNrYl9jb3B5X2Fu
ZF9jc3VtX2Rldl9SMTM5YzkwNDkoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggKnRvKTsK
CmV4dGVybiB2b2lkIHNrYl9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBza2JfYWRkX210dShpbnQg
bXR1KTsKCgpzdGF0aWMgaW5saW5lIHZvaWQKbmZfY29ubnRyYWNrX3B1dChzdHJ1Y3QgbmZfY3Rf
aW5mbyAqbmZjdCkKewogICAgICAgIGlmIChuZmN0ICYmIGF0b21pY19kZWNfYW5kX3Rlc3QoJm5m
Y3QtPm1hc3Rlci0+dXNlKSkKICAgICAgICAgICAgICAgIG5mY3QtPm1hc3Rlci0+ZGVzdHJveShu
ZmN0LT5tYXN0ZXIpOwp9CnN0YXRpYyBpbmxpbmUgdm9pZApuZl9jb25udHJhY2tfZ2V0KHN0cnVj
dCBuZl9jdF9pbmZvICpuZmN0KQp7CiAgICAgICAgaWYgKG5mY3QpCiAgICAgICAgICAgICAgICBh
dG9taWNfaW5jKCZuZmN0LT5tYXN0ZXItPnVzZSk7Cn0KIyAxNDcgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiIDIKCnN0cnVjdCBuZWlnaGJvdXI7CnN0cnVjdCBuZWln
aF9wYXJtczsKc3RydWN0IHNrX2J1ZmY7CgpzdHJ1Y3QgbmV0aWZfcnhfc3RhdHMKewogICAgICAg
IHVuc2lnbmVkIHRvdGFsOwogICAgICAgIHVuc2lnbmVkIGRyb3BwZWQ7CiAgICAgICAgdW5zaWdu
ZWQgdGltZV9zcXVlZXplOwogICAgICAgIHVuc2lnbmVkIHRocm90dGxlZDsKICAgICAgICB1bnNp
Z25lZCBmYXN0cm91dGVfaGl0OwogICAgICAgIHVuc2lnbmVkIGZhc3Ryb3V0ZV9zdWNjZXNzOwog
ICAgICAgIHVuc2lnbmVkIGZhc3Ryb3V0ZV9kZWZlcjsKICAgICAgICB1bnNpZ25lZCBmYXN0cm91
dGVfZGVmZXJyZWRfb3V0OwogICAgICAgIHVuc2lnbmVkIGZhc3Ryb3V0ZV9sYXRlbmN5X3JlZHVj
dGlvbjsKICAgICAgICB1bnNpZ25lZCBjcHVfY29sbGlzaW9uOwp9IF9fYXR0cmlidXRlX18gKChf
X2FsaWduZWRfXygoMSA8PCAoKDYpKSkpKSk7CgpleHRlcm4gc3RydWN0IG5ldGlmX3J4X3N0YXRz
IG5ldGRldl9yeF9zdGF0W107CgoKCgoKCnN0cnVjdCBkZXZfbWNfbGlzdAp7CiAgICAgICAgc3Ry
dWN0IGRldl9tY19saXN0ICpuZXh0OwogICAgICAgIF9fdTggZG1pX2FkZHJbOF07CiAgICAgICAg
dW5zaWduZWQgY2hhciBkbWlfYWRkcmxlbjsKICAgICAgICBpbnQgZG1pX3VzZXJzOwogICAgICAg
IGludCBkbWlfZ3VzZXJzOwp9OwoKc3RydWN0IGhoX2NhY2hlCnsKICAgICAgICBzdHJ1Y3QgaGhf
Y2FjaGUgKmhoX25leHQ7CiAgICAgICAgYXRvbWljX3QgaGhfcmVmY250OwogICAgICAgIHVuc2ln
bmVkIHNob3J0IGhoX3R5cGU7CgoKCiAgICAgICAgaW50IGhoX2xlbjsKICAgICAgICBpbnQgKCpo
aF9vdXRwdXQpKHN0cnVjdCBza19idWZmICpza2IpOwogICAgICAgIHJ3bG9ja190IGhoX2xvY2s7
CgogICAgICAgIHVuc2lnbmVkIGxvbmcgaGhfZGF0YVsxNi9zaXplb2YodW5zaWduZWQgbG9uZyld
Owp9OwoKCgoKCgplbnVtIG5ldGRldl9zdGF0ZV90CnsKICAgICAgICBfX0xJTktfU1RBVEVfWE9G
Rj0wLAogICAgICAgIF9fTElOS19TVEFURV9TVEFSVCwKICAgICAgICBfX0xJTktfU1RBVEVfUFJF
U0VOVCwKICAgICAgICBfX0xJTktfU1RBVEVfU0NIRUQsCiAgICAgICAgX19MSU5LX1NUQVRFX05P
Q0FSUklFUgp9OwoKCgoKCgpzdHJ1Y3QgbmV0ZGV2X2Jvb3Rfc2V0dXAgewogICAgICAgIGNoYXIg
bmFtZVsxNl07CiAgICAgICAgc3RydWN0IGlmbWFwIG1hcDsKfTsKIyAyMzMgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiCnN0cnVjdCBuZXRfZGV2aWNlCnsKCgoKCgoK
ICAgICAgICBjaGFyIG5hbWVbMTZdOwoKCgoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBybWVtX2Vu
ZDsKICAgICAgICB1bnNpZ25lZCBsb25nIHJtZW1fc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBtZW1fZW5kOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbWVtX3N0YXJ0OwogICAgICAgIHVuc2ln
bmVkIGxvbmcgYmFzZV9hZGRyOwogICAgICAgIHVuc2lnbmVkIGludCBpcnE7CgoKCgoKCiAgICAg
ICAgdW5zaWduZWQgY2hhciBpZl9wb3J0OwogICAgICAgIHVuc2lnbmVkIGNoYXIgZG1hOwoKICAg
ICAgICB1bnNpZ25lZCBsb25nIHN0YXRlOwoKICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmV4
dDsKCgogICAgICAgIGludCAoKmluaXQpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwoKCgogICAg
ICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZXh0X3NjaGVkOwoKCiAgICAgICAgaW50IGlmaW5kZXg7
CiAgICAgICAgaW50IGlmbGluazsKCgogICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzKiAo
KmdldF9zdGF0cykoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CiAgICAgICAgc3RydWN0IGl3X3N0
YXRpc3RpY3MqICgqZ2V0X3dpcmVsZXNzX3N0YXRzKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsK
IyAyODggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiCiAgICAgICAg
dW5zaWduZWQgbG9uZyB0cmFuc19zdGFydDsKICAgICAgICB1bnNpZ25lZCBsb25nIGxhc3Rfcng7
CgogICAgICAgIHVuc2lnbmVkIHNob3J0IGZsYWdzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGdm
bGFnczsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBwcml2X2ZsYWdzOwogICAgICAgIHVuc2lnbmVk
IHNob3J0IHVudXNlZF9hbGlnbm1lbnRfZml4ZXI7CgoKCiAgICAgICAgdW5zaWduZWQgbXR1Owog
ICAgICAgIHVuc2lnbmVkIHNob3J0IHR5cGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgaGFyZF9o
ZWFkZXJfbGVuOwogICAgICAgIHZvaWQgKnByaXY7CgogICAgICAgIHN0cnVjdCBuZXRfZGV2aWNl
ICptYXN0ZXI7CgoKCgogICAgICAgIHVuc2lnbmVkIGNoYXIgYnJvYWRjYXN0WzhdOwogICAgICAg
IHVuc2lnbmVkIGNoYXIgZGV2X2FkZHJbOF07CiAgICAgICAgdW5zaWduZWQgY2hhciBhZGRyX2xl
bjsKCiAgICAgICAgc3RydWN0IGRldl9tY19saXN0ICptY19saXN0OwogICAgICAgIGludCBtY19j
b3VudDsKICAgICAgICBpbnQgcHJvbWlzY3VpdHk7CiAgICAgICAgaW50IGFsbG11bHRpOwoKICAg
ICAgICBpbnQgd2F0Y2hkb2dfdGltZW87CiAgICAgICAgc3RydWN0IHRpbWVyX2xpc3Qgd2F0Y2hk
b2dfdGltZXI7CgoKCiAgICAgICAgdm9pZCAqYXRhbGtfcHRyOwogICAgICAgIHZvaWQgKmlwX3B0
cjsKICAgICAgICB2b2lkICpkbl9wdHI7CiAgICAgICAgdm9pZCAqaXA2X3B0cjsKICAgICAgICB2
b2lkICplY19wdHI7CgogICAgICAgIHN0cnVjdCBRZGlzYyAqcWRpc2M7CiAgICAgICAgc3RydWN0
IFFkaXNjICpxZGlzY19zbGVlcGluZzsKICAgICAgICBzdHJ1Y3QgUWRpc2MgKnFkaXNjX2xpc3Q7
CiAgICAgICAgc3RydWN0IFFkaXNjICpxZGlzY19pbmdyZXNzOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgdHhfcXVldWVfbGVuOwoKCiAgICAgICAgc3BpbmxvY2tfdCB4bWl0X2xvY2s7CgoKCiAgICAg
ICAgaW50IHhtaXRfbG9ja19vd25lcjsKCiAgICAgICAgc3BpbmxvY2tfdCBxdWV1ZV9sb2NrOwoK
ICAgICAgICBhdG9taWNfdCByZWZjbnQ7CgogICAgICAgIGludCBkZWFkYmVhZjsKCgogICAgICAg
IGludCBmZWF0dXJlczsKIyAzNTggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmV0ZGV2
aWNlLmgiCiAgICAgICAgdm9pZCAoKnVuaW5pdCkoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7Cgog
ICAgICAgIHZvaWQgKCpkZXN0cnVjdG9yKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKCgogICAg
ICAgIGludCAoKm9wZW4pKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwogICAgICAgIGludCAoKnN0
b3ApKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwogICAgICAgIGludCAoKmhhcmRfc3RhcnRfeG1p
dCkgKHN0cnVjdCBza19idWZmICpza2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKICAgICAgICBpbnQg
KCpoYXJkX2hlYWRlcikgKHN0cnVjdCBza19idWZmICpza2IsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0
IHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv
aWQgKmRhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICpzYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgbGVuKTsKICAgICAgICBpbnQgKCpyZWJ1aWxkX2hlYWRlcikoc3RydWN0
IHNrX2J1ZmYgKnNrYik7CgogICAgICAgIHZvaWQgKCpzZXRfbXVsdGljYXN0X2xpc3QpKHN0cnVj
dCBuZXRfZGV2aWNlICpkZXYpOwoKICAgICAgICBpbnQgKCpzZXRfbWFjX2FkZHJlc3MpKHN0cnVj
dCBuZXRfZGV2aWNlICpkZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZvaWQgKmFkZHIpOwoKICAgICAgICBpbnQgKCpkb19pb2N0bCkoc3RydWN0
IG5ldF9kZXZpY2UgKmRldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3QgaWZyZXEgKmlmciwgaW50IGNtZCk7CgogICAgICAgIGludCAoKnNldF9jb25m
aWcpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWZtYXAgKm1hcCk7CgogICAgICAgIGludCAoKmhhcmRf
aGVhZGVyX2NhY2hlKShzdHJ1Y3QgbmVpZ2hib3VyICpuZWlnaCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaGhfY2FjaGUgKmhoKTsK
ICAgICAgICB2b2lkICgqaGVhZGVyX2NhY2hlX3VwZGF0ZSkoc3RydWN0IGhoX2NhY2hlICpoaCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICogaGFkZHIpOwoKICAgICAgICBpbnQg
KCpjaGFuZ2VfbXR1KShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSk7CgoKICAg
ICAgICB2b2lkICgqdHhfdGltZW91dCkgKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwoKICAgICAg
ICBpbnQgKCpoYXJkX2hlYWRlcl9wYXJzZSkoc3RydWN0IHNrX2J1ZmYgKnNrYiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFy
ICpoYWRkcik7CiAgICAgICAgaW50ICgqbmVpZ2hfc2V0dXApKHN0cnVjdCBuZXRfZGV2aWNlICpk
ZXYsIHN0cnVjdCBuZWlnaF9wYXJtcyAqKTsKICAgICAgICBpbnQgKCphY2NlcHRfZmFzdHBhdGgp
KHN0cnVjdCBuZXRfZGV2aWNlICosIHN0cnVjdCBkc3RfZW50cnkqKTsKCgogICAgICAgIHN0cnVj
dCBtb2R1bGUgKm93bmVyOwoKCiAgICAgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqYnJfcG9y
dDsKIyA0MTggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiCn07CgoK
c3RydWN0IHBhY2tldF90eXBlCnsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB0eXBlOwogICAgICAg
IHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7CiAgICAgICAgaW50ICgqZnVuYykgKHN0cnVjdCBza19i
dWZmICosIHN0cnVjdCBuZXRfZGV2aWNlICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IHBhY2tldF90eXBlICopOwogICAgICAgIHZvaWQgKmRhdGE7CiAg
ICAgICAgc3RydWN0IHBhY2tldF90eXBlICpuZXh0Owp9OwoKCiMgMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIgMQoKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9p
bnRlcnJ1cHQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgva2VybmVsLmgi
IDEKIyA3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zbXAuaCIgMQojIDggIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L2NhY2hlLmgiIDEKIyA5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ludGVy
cnVwdC5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2JpdG9wcy5oIiAxCiMg
MTEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMQojIDEyICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L2ludGVycnVwdC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9h
c20vcHRyYWNlLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pbnRlcnJ1
cHQuaCIgMgoKc3RydWN0IGlycWFjdGlvbiB7CiAgICAgICAgdm9pZCAoKmhhbmRsZXIpKGludCwg
dm9pZCAqLCBzdHJ1Y3QgcHRfcmVncyAqKTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgbWFzazsKICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAg
ICAgIHZvaWQgKmRldl9pZDsKICAgICAgICBzdHJ1Y3QgaXJxYWN0aW9uICpuZXh0Owp9OwoKCgoK
CmVudW0gewogICAgICAgIFRJTUVSX0JIID0gMCwKICAgICAgICBUUVVFVUVfQkgsCiAgICAgICAg
RElHSV9CSCwKICAgICAgICBTRVJJQUxfQkgsCiAgICAgICAgUklTQ09NOF9CSCwKICAgICAgICBT
UEVDSUFMSVhfQkgsCiAgICAgICAgQVVST1JBX0JILAogICAgICAgIEVTUF9CSCwKICAgICAgICBT
Q1NJX0JILAogICAgICAgIElNTUVESUFURV9CSCwKICAgICAgICBDWUNMQURFU19CSCwKICAgICAg
ICBDTTIwNl9CSCwKICAgICAgICBKU19CSCwKICAgICAgICBNQUNTRVJJQUxfQkgsCiAgICAgICAg
SVNJQ09NX0JICn07CgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2hhcmRpcnEuaCIg
MQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA1ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9oYXJkaXJxLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L3RocmVhZHMuaCIgMQojIDYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
YXNtL2hhcmRpcnEuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaXJxLmgi
IDEKIyAxMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pcnEuaCIKIyAxICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvaXJxLmgiIDIKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L2NhY2hlLmgiIDEKIyAxNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pcnEuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIgMQojIDE4ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2lycS5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvYXNtL2lycS5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2lycS5o
IgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAxNCAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9hc20vaXJxLmgiIDIKIyAyOCAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9hc20vaXJxLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBpcnFfY2Fubm9uaWNhbGl6ZShp
bnQgaXJxKQp7CiAgICAgICAgcmV0dXJuICgoaXJxID09IDIpID8gOSA6IGlycSk7Cn0KCmV4dGVy
biB2b2lkIGRpc2FibGVfaXJxX1IzY2U0Y2E2Zih1bnNpZ25lZCBpbnQpOwpleHRlcm4gdm9pZCBk
aXNhYmxlX2lycV9ub3N5bmNfUjI3YmJmMjIxKHVuc2lnbmVkIGludCk7CmV4dGVybiB2b2lkIGVu
YWJsZV9pcnFfUmZjZWMwOTg3KHVuc2lnbmVkIGludCk7CiMgMjAgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvaXJxLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wdHJh
Y2UuaCIgMQojIDIxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2lycS5oIiAyCiMgMzkg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaXJxLmgiCnN0cnVjdCBod19pbnRlcnJ1cHRf
dHlwZSB7CiAgICAgICAgY29uc3QgY2hhciAqIHR5cGVuYW1lOwogICAgICAgIHVuc2lnbmVkIGlu
dCAoKnN0YXJ0dXApKHVuc2lnbmVkIGludCBpcnEpOwogICAgICAgIHZvaWQgKCpzaHV0ZG93biko
dW5zaWduZWQgaW50IGlycSk7CiAgICAgICAgdm9pZCAoKmVuYWJsZSkodW5zaWduZWQgaW50IGly
cSk7CiAgICAgICAgdm9pZCAoKmRpc2FibGUpKHVuc2lnbmVkIGludCBpcnEpOwogICAgICAgIHZv
aWQgKCphY2spKHVuc2lnbmVkIGludCBpcnEpOwogICAgICAgIHZvaWQgKCplbmQpKHVuc2lnbmVk
IGludCBpcnEpOwogICAgICAgIHZvaWQgKCpzZXRfYWZmaW5pdHkpKHVuc2lnbmVkIGludCBpcnEs
IHVuc2lnbmVkIGxvbmcgbWFzayk7Cn07Cgp0eXBlZGVmIHN0cnVjdCBod19pbnRlcnJ1cHRfdHlw
ZSBod19pcnFfY29udHJvbGxlcjsKIyA1OSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9p
cnEuaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGludCBzdGF0dXM7CiAgICAg
ICAgaHdfaXJxX2NvbnRyb2xsZXIgKmhhbmRsZXI7CiAgICAgICAgc3RydWN0IGlycWFjdGlvbiAq
YWN0aW9uOwogICAgICAgIHVuc2lnbmVkIGludCBkZXB0aDsKICAgICAgICBzcGlubG9ja190IGxv
Y2s7Cn0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oKDEgPDwgKCg2KSkpKSkpIGlycV9kZXNj
X3Q7CgpleHRlcm4gaXJxX2Rlc2NfdCBpcnFfZGVzYyBbMjI0XTsKCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9hc20vaHdfaXJxLmgiIDEKIyAxNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9h
c20vaHdfaXJxLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIg
MQojIDE2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9od19pcnEuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvYXNtL2F0b21pYy5oIiAxCiMgMTcgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvYXNtL2h3X2lycS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vaXJx
LmgiIDEKIyAxOCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vaHdfaXJxLmgiIDIKIyA2MSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vaHdfaXJxLmgiCmV4dGVybiBpbnQgaXJxX3ZlY3Rv
clsyMjRdOwojIDcxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9od19pcnEuaCIKZXh0ZXJu
IHZvaWQgbWFza19pcnEodW5zaWduZWQgaW50IGlycSk7CmV4dGVybiB2b2lkIHVubWFza19pcnEo
dW5zaWduZWQgaW50IGlycSk7CmV4dGVybiB2b2lkIGRpc2FibGVfODI1OUFfaXJxKHVuc2lnbmVk
IGludCBpcnEpOwpleHRlcm4gdm9pZCBlbmFibGVfODI1OUFfaXJxKHVuc2lnbmVkIGludCBpcnEp
OwpleHRlcm4gaW50IGk4MjU5QV9pcnFfcGVuZGluZyh1bnNpZ25lZCBpbnQgaXJxKTsKZXh0ZXJu
IHZvaWQgbWFrZV84MjU5QV9pcnEodW5zaWduZWQgaW50IGlycSk7CmV4dGVybiB2b2lkIGluaXRf
ODI1OUEoaW50IGFlb2kpOwpleHRlcm4gdm9pZCBzZW5kX0lQSV9zZWxmKGludCB2ZWN0b3IpIF9f
YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgaW5pdF9WSVNXU19BUElDX2ly
cXModm9pZCk7CmV4dGVybiB2b2lkIHNldHVwX0lPX0FQSUModm9pZCk7CmV4dGVybiB2b2lkIGRp
c2FibGVfSU9fQVBJQyh2b2lkKTsKZXh0ZXJuIHZvaWQgcHJpbnRfSU9fQVBJQyh2b2lkKTsKZXh0
ZXJuIGludCBJT19BUElDX2dldF9QQ0lfaXJxX3ZlY3RvcihpbnQgYnVzLCBpbnQgc2xvdCwgaW50
IGZuKTsKZXh0ZXJuIHZvaWQgc2VuZF9JUEkoaW50IGRlc3QsIGludCB2ZWN0b3IpOwoKZXh0ZXJu
IHVuc2lnbmVkIGxvbmcgaW9fYXBpY19pcnFzOwoKZXh0ZXJuIGF0b21pY190IGlycV9lcnJfY291
bnQ7CmV4dGVybiBhdG9taWNfdCBpcnFfbWlzX2NvdW50OwoKZXh0ZXJuIGNoYXIgX3N0ZXh0LCBf
ZXRleHQ7CiMgMTgzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9od19pcnEuaCIKZXh0ZXJu
IHVuc2lnbmVkIGxvbmcgcHJvZl9jcHVfbWFzazsKZXh0ZXJuIHVuc2lnbmVkIGludCAqIHByb2Zf
YnVmZmVyOwpleHRlcm4gdW5zaWduZWQgbG9uZyBwcm9mX2xlbjsKZXh0ZXJuIHVuc2lnbmVkIGxv
bmcgcHJvZl9zaGlmdDsKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgeDg2X2RvX3Byb2ZpbGUgKHVu
c2lnbmVkIGxvbmcgZWlwKQp7CiAgICAgICAgaWYgKCFwcm9mX2J1ZmZlcikKICAgICAgICAgICAg
ICAgIHJldHVybjsKCgoKCgogICAgICAgIGlmICghKCgxPDwwKSAmIHByb2ZfY3B1X21hc2spKQog
ICAgICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICBlaXAgLT0gKHVuc2lnbmVkIGxvbmcpICZf
c3RleHQ7CiAgICAgICAgZWlwID4+PSBwcm9mX3NoaWZ0OwoKCgoKCiAgICAgICAgaWYgKGVpcCA+
IHByb2ZfbGVuLTEpCiAgICAgICAgICAgICAgICBlaXAgPSBwcm9mX2xlbi0xOwogICAgICAgIGF0
b21pY19pbmMoKGF0b21pY190ICopJnByb2ZfYnVmZmVyW2VpcF0pOwp9CgoKCgoKCgpzdGF0aWMg
aW5saW5lIHZvaWQgaHdfcmVzZW5kX2lycShzdHJ1Y3QgaHdfaW50ZXJydXB0X3R5cGUgKmgsIHVu
c2lnbmVkIGludCBpKSB7fQojIDcwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2lycS5o
IiAyCgpleHRlcm4gaW50IGhhbmRsZV9JUlFfZXZlbnQodW5zaWduZWQgaW50LCBzdHJ1Y3QgcHRf
cmVncyAqLCBzdHJ1Y3QgaXJxYWN0aW9uICopOwpleHRlcm4gaW50IHNldHVwX2lycSh1bnNpZ25l
ZCBpbnQgLCBzdHJ1Y3QgaXJxYWN0aW9uICogKTsKCmV4dGVybiBod19pcnFfY29udHJvbGxlciBu
b19pcnFfdHlwZTsKZXh0ZXJuIHZvaWQgbm9fYWN0aW9uKGludCBjcGwsIHZvaWQgKmRldl9pZCwg
c3RydWN0IHB0X3JlZ3MgKnJlZ3MpOwojIDcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2hh
cmRpcnEuaCIgMgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBpbnQgX19zb2Z0
aXJxX3BlbmRpbmc7CiAgICAgICAgdW5zaWduZWQgaW50IF9fbG9jYWxfaXJxX2NvdW50OwogICAg
ICAgIHVuc2lnbmVkIGludCBfX2xvY2FsX2JoX2NvdW50OwogICAgICAgIHVuc2lnbmVkIGludCBf
X3N5c2NhbGxfY291bnQ7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICogX19rc29mdGlycWRf
dGFzazsKICAgICAgICB1bnNpZ25lZCBpbnQgX19ubWlfY291bnQ7Cn0gX19hdHRyaWJ1dGVfXygo
X19hbGlnbmVkX18oKDEgPDwgKCg2KSkpKSkpIGlycV9jcHVzdGF0X3Q7CgojIDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvaXJxX2NwdXN0YXQuaCIgMQojIDEyICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L2lycV9jcHVzdGF0LmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9jb25maWcuaCIgMQojIDEzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ly
cV9jcHVzdGF0LmgiIDIKCgoKCgoKCmV4dGVybiBpcnFfY3B1c3RhdF90IGlycV9zdGF0X1JjZGRh
Nzg3ZltdOwojIDE5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9oYXJkaXJxLmgiIDIKIyA0
NiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NvZnRpcnEuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvYXNtL2F0b21pYy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20v
c29mdGlycS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vaGFyZGlycS5oIiAx
CiMgNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc29mdGlycS5oIiAyCiMgNDcgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiIDIKIyA1NiAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIKZW51bQp7CiAgICAgICAgSElfU09GVElSUT0w
LAogICAgICAgIE5FVF9UWF9TT0ZUSVJRLAogICAgICAgIE5FVF9SWF9TT0ZUSVJRLAogICAgICAg
IFRBU0tMRVRfU09GVElSUQp9OwoKCgoKCnN0cnVjdCBzb2Z0aXJxX2FjdGlvbgp7CiAgICAgICAg
dm9pZCAoKmFjdGlvbikoc3RydWN0IHNvZnRpcnFfYWN0aW9uICopOwogICAgICAgIHZvaWQgKmRh
dGE7Cn07CgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIHZvaWQgZG9fc29mdGlycV9SZjBh
NTI5Yjcodm9pZCk7CmV4dGVybiB2b2lkIG9wZW5fc29mdGlycShpbnQgbnIsIHZvaWQgKCphY3Rp
b24pKHN0cnVjdCBzb2Z0aXJxX2FjdGlvbiopLCB2b2lkICpkYXRhKTsKZXh0ZXJuIHZvaWQgc29m
dGlycV9pbml0KHZvaWQpOwoKZXh0ZXJuIHZvaWQgY3B1X3JhaXNlX3NvZnRpcnFfUmQwMWYzZWU4
KHVuc2lnbmVkIGludCBjcHUsIHVuc2lnbmVkIGludCBucikgX19hdHRyaWJ1dGVfXygocmVncGFy
bSgzKSkpOwpleHRlcm4gdm9pZCByYWlzZV9zb2Z0aXJxX1JkOGU0ZmExYyh1bnNpZ25lZCBpbnQg
bnIpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKIyAxMDMgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvaW50ZXJydXB0LmgiCnN0cnVjdCB0YXNrbGV0X3N0cnVjdAp7CiAgICAgICAg
c3RydWN0IHRhc2tsZXRfc3RydWN0ICpuZXh0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhdGU7
CiAgICAgICAgYXRvbWljX3QgY291bnQ7CiAgICAgICAgdm9pZCAoKmZ1bmMpKHVuc2lnbmVkIGxv
bmcpOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YTsKfTsKIyAxMTkgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiCmVudW0KewogICAgICAgIFRBU0tMRVRfU1RBVEVf
U0NIRUQsCiAgICAgICAgVEFTS0xFVF9TVEFURV9SVU4KfTsKCnN0cnVjdCB0YXNrbGV0X2hlYWQK
ewogICAgICAgIHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqbGlzdDsKfSBfX2F0dHJpYnV0ZV9fICgo
X19hbGlnbmVkX18oKDEgPDwgKCg2KSkpKSkpOwoKZXh0ZXJuIHN0cnVjdCB0YXNrbGV0X2hlYWQg
dGFza2xldF92ZWNfUjQxZDNiMzY3WzFdOwpleHRlcm4gc3RydWN0IHRhc2tsZXRfaGVhZCB0YXNr
bGV0X2hpX3ZlY19SYmIwNjU3NWZbMV07CiMgMTU1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L2ludGVycnVwdC5oIgpleHRlcm4gdm9pZCBfX3Rhc2tsZXRfc2NoZWR1bGVfUmVkNWM3M2Jm
KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwoK
c3RhdGljIGlubGluZSB2b2lkIHRhc2tsZXRfc2NoZWR1bGUoc3RydWN0IHRhc2tsZXRfc3RydWN0
ICp0KQp7CiAgICAgICAgaWYgKCF0ZXN0X2FuZF9zZXRfYml0KFRBU0tMRVRfU1RBVEVfU0NIRUQs
ICZ0LT5zdGF0ZSkpCiAgICAgICAgICAgICAgICBfX3Rhc2tsZXRfc2NoZWR1bGVfUmVkNWM3M2Jm
KHQpOwp9CgpleHRlcm4gdm9pZCBfX3Rhc2tsZXRfaGlfc2NoZWR1bGVfUjYwZWE1ZmU3KHN0cnVj
dCB0YXNrbGV0X3N0cnVjdCAqdCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwoKc3RhdGlj
IGlubGluZSB2b2lkIHRhc2tsZXRfaGlfc2NoZWR1bGUoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0
KQp7CiAgICAgICAgaWYgKCF0ZXN0X2FuZF9zZXRfYml0KFRBU0tMRVRfU1RBVEVfU0NIRUQsICZ0
LT5zdGF0ZSkpCiAgICAgICAgICAgICAgICBfX3Rhc2tsZXRfaGlfc2NoZWR1bGVfUjYwZWE1ZmU3
KHQpOwp9CgoKc3RhdGljIGlubGluZSB2b2lkIHRhc2tsZXRfZGlzYWJsZV9ub3N5bmMoc3RydWN0
IHRhc2tsZXRfc3RydWN0ICp0KQp7CiAgICAgICAgYXRvbWljX2luYygmdC0+Y291bnQpOwogICAg
ICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7Cn0KCnN0YXRpYyBpbmxp
bmUgdm9pZCB0YXNrbGV0X2Rpc2FibGUoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KQp7CiAgICAg
ICAgdGFza2xldF9kaXNhYmxlX25vc3luYyh0KTsKICAgICAgICBkbyB7IH0gd2hpbGUgKDApOwog
ICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7Cn0KCnN0YXRpYyBp
bmxpbmUgdm9pZCB0YXNrbGV0X2VuYWJsZShzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpCnsKICAg
ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwogICAgICAgIGF0b21p
Y19kZWMoJnQtPmNvdW50KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHRhc2tsZXRfaGlfZW5hYmxl
KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9f
KCIiOiA6IDoibWVtb3J5Iik7CiAgICAgICAgYXRvbWljX2RlYygmdC0+Y291bnQpOwp9CgpleHRl
cm4gdm9pZCB0YXNrbGV0X2tpbGxfUjc5YWQyMjRiKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCk7
CmV4dGVybiB2b2lkIHRhc2tsZXRfaW5pdF9SYTU4MDhiYmYoc3RydWN0IHRhc2tsZXRfc3RydWN0
ICp0LAogICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKmZ1bmMpKHVuc2lnbmVkIGxvbmcp
LCB1bnNpZ25lZCBsb25nIGRhdGEpOwojIDIyMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9pbnRlcnJ1cHQuaCIKZXh0ZXJuIHN0cnVjdCB0YXNrbGV0X3N0cnVjdCBiaF90YXNrX3ZlY19S
Mjg0MTc3YjhbXTsKCgpleHRlcm4gc3BpbmxvY2tfdCBnbG9iYWxfYmhfbG9jazsKCnN0YXRpYyBp
bmxpbmUgdm9pZCBtYXJrX2JoKGludCBucikKewogICAgICAgIHRhc2tsZXRfaGlfc2NoZWR1bGUo
YmhfdGFza192ZWNfUjI4NDE3N2I4K25yKTsKfQoKZXh0ZXJuIHZvaWQgaW5pdF9iaF9SZjZjZjI3
Y2MoaW50IG5yLCB2b2lkICgqcm91dGluZSkodm9pZCkpOwpleHRlcm4gdm9pZCByZW1vdmVfYmhf
UmJjNTI0YTMyKGludCBucik7CiMgMjYzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2lu
dGVycnVwdC5oIgpleHRlcm4gdW5zaWduZWQgbG9uZyBwcm9iZV9pcnFfb25fUmIxMjEzOTBhKHZv
aWQpOwpleHRlcm4gaW50IHByb2JlX2lycV9vZmZfUmFiNjAwNDIxKHVuc2lnbmVkIGxvbmcpOwpl
eHRlcm4gdW5zaWduZWQgaW50IHByb2JlX2lycV9tYXNrX1IzNjBiMWFmZSh1bnNpZ25lZCBsb25n
KTsKIyA0MzMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmgiIDEKIyAxMiAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9ub3RpZmllci5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvZXJybm8uaCIgMQojIDEzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L25vdGlmaWVyLmgiIDIKCnN0cnVjdCBub3RpZmllcl9ibG9jawp7CiAgICAgICAgaW50ICgqbm90
aWZpZXJfY2FsbCkoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpzZWxmLCB1bnNpZ25lZCBsb25nLCB2
b2lkICopOwogICAgICAgIHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmV4dDsKICAgICAgICBpbnQg
cHJpb3JpdHk7Cn07CgoKCgpleHRlcm4gaW50IG5vdGlmaWVyX2NoYWluX3JlZ2lzdGVyX1I2MGNl
YzNiOShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKipsaXN0LCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sg
Km4pOwpleHRlcm4gaW50IG5vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXJfUmYwOTk2NzljKHN0cnVj
dCBub3RpZmllcl9ibG9jayAqKm5sLCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm4pOwpleHRlcm4g
aW50IG5vdGlmaWVyX2NhbGxfY2hhaW5fUjI4ODQ2OTYyKHN0cnVjdCBub3RpZmllcl9ibG9jayAq
Km4sIHVuc2lnbmVkIGxvbmcgdmFsLCB2b2lkICp2KTsKIyA0MzQgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiIDIKCmV4dGVybiBzdHJ1Y3QgbmV0X2RldmljZSBsb29w
YmFja19kZXZfUjlkMzhiZTM1OwpleHRlcm4gc3RydWN0IG5ldF9kZXZpY2UgKmRldl9iYXNlX1I0
ZmJhZmM4MDsKZXh0ZXJuIHJ3bG9ja190IGRldl9iYXNlX2xvY2tfUjViM2Y5YzA3OwoKZXh0ZXJu
IGludCBuZXRkZXZfYm9vdF9zZXR1cF9hZGQoY2hhciAqbmFtZSwgc3RydWN0IGlmbWFwICptYXAp
OwpleHRlcm4gaW50IG5ldGRldl9ib290X3NldHVwX2NoZWNrKHN0cnVjdCBuZXRfZGV2aWNlICpk
ZXYpOwpleHRlcm4gc3RydWN0IG5ldF9kZXZpY2UgKmRldl9nZXRieWh3YWRkcih1bnNpZ25lZCBz
aG9ydCB0eXBlLCBjaGFyICpod2FkZHIpOwpleHRlcm4gdm9pZCBkZXZfYWRkX3BhY2tfUjFiNzZi
MDBkKHN0cnVjdCBwYWNrZXRfdHlwZSAqcHQpOwpleHRlcm4gdm9pZCBkZXZfcmVtb3ZlX3BhY2tf
UmQ5MjA3ZGYxKHN0cnVjdCBwYWNrZXRfdHlwZSAqcHQpOwpleHRlcm4gaW50IGRldl9nZXRfUjc5
MjU5ZmJjKGNvbnN0IGNoYXIgKm5hbWUpOwpleHRlcm4gc3RydWN0IG5ldF9kZXZpY2UgKmRldl9n
ZXRfYnlfbmFtZV9SZGE4NzI5MDQoY29uc3QgY2hhciAqbmFtZSk7CmV4dGVybiBzdHJ1Y3QgbmV0
X2RldmljZSAqX19kZXZfZ2V0X2J5X25hbWVfUjc2Y2IyZGVkKGNvbnN0IGNoYXIgKm5hbWUpOwpl
eHRlcm4gc3RydWN0IG5ldF9kZXZpY2UgKmRldl9hbGxvY19SMWE4N2ZjOWEoY29uc3QgY2hhciAq
bmFtZSwgaW50ICplcnIpOwpleHRlcm4gaW50IGRldl9hbGxvY19uYW1lX1I3NjlmZTcwYyhzdHJ1
Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCBjaGFyICpuYW1lKTsKZXh0ZXJuIGludCBkZXZfb3Bl
bl9SYWY0NzdhZmEoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CmV4dGVybiBpbnQgZGV2X2Nsb3Nl
X1I1YzdjOWI1YShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKZXh0ZXJuIGludCBkZXZfcXVldWVf
eG1pdF9SNWRiMmE5ZmUoc3RydWN0IHNrX2J1ZmYgKnNrYik7CmV4dGVybiBpbnQgcmVnaXN0ZXJf
bmV0ZGV2aWNlX1IyYWUxNTYyNihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKZXh0ZXJuIGludCB1
bnJlZ2lzdGVyX25ldGRldmljZV9SZThhM2NhNjIoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CmV4
dGVybiBpbnQgcmVnaXN0ZXJfbmV0ZGV2aWNlX25vdGlmaWVyX1I2M2VjYWQ1MyhzdHJ1Y3Qgbm90
aWZpZXJfYmxvY2sgKm5iKTsKZXh0ZXJuIGludCB1bnJlZ2lzdGVyX25ldGRldmljZV9ub3RpZmll
cl9SZmU3Njk0NTYoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CmV4dGVybiBpbnQgZGV2X25l
d19pbmRleF9SOGZkZGM4NGModm9pZCk7CmV4dGVybiBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2X2dl
dF9ieV9pbmRleF9SOTAyODJjNDYoaW50IGlmaW5kZXgpOwpleHRlcm4gc3RydWN0IG5ldF9kZXZp
Y2UgKl9fZGV2X2dldF9ieV9pbmRleF9SMWQ2NjFhYzMoaW50IGlmaW5kZXgpOwpleHRlcm4gaW50
IGRldl9yZXN0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwoKdHlwZWRlZiBpbnQgZ2lmY29u
Zl9mdW5jX3Qoc3RydWN0IG5ldF9kZXZpY2UgKiBkZXYsIGNoYXIgKiBidWZwdHIsIGludCBsZW4p
OwpleHRlcm4gaW50IHJlZ2lzdGVyX2dpZmNvbmZfUmRhYjEyNjlhKHVuc2lnbmVkIGludCBmYW1p
bHksIGdpZmNvbmZfZnVuY190ICogZ2lmY29uZik7CnN0YXRpYyBpbmxpbmUgaW50IHVucmVnaXN0
ZXJfZ2lmY29uZih1bnNpZ25lZCBpbnQgZmFtaWx5KQp7CiAgICAgICAgcmV0dXJuIHJlZ2lzdGVy
X2dpZmNvbmZfUmRhYjEyNjlhKGZhbWlseSwgMCk7Cn0KCgoKCgoKc3RydWN0IHNvZnRuZXRfZGF0
YV9SYjYwMDQ0OGMKewogICAgICAgIGludCB0aHJvdHRsZTsKICAgICAgICBpbnQgY25nX2xldmVs
OwogICAgICAgIGludCBhdmdfYmxvZzsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZl9oZWFkIGlucHV0
X3BrdF9xdWV1ZTsKICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqb3V0cHV0X3F1ZXVlOwogICAg
ICAgIHN0cnVjdCBza19idWZmICpjb21wbGV0aW9uX3F1ZXVlOwp9IF9fYXR0cmlidXRlX18oKF9f
YWxpZ25lZF9fKCgxIDw8ICgoNikpKSkpKTsKCgpleHRlcm4gc3RydWN0IHNvZnRuZXRfZGF0YV9S
YjYwMDQ0OGMgc29mdG5ldF9kYXRhX1JiNjAwNDQ4Y1sxXTsKCgoKc3RhdGljIGlubGluZSB2b2lk
IF9fbmV0aWZfc2NoZWR1bGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIGlmICgh
dGVzdF9hbmRfc2V0X2JpdChfX0xJTktfU1RBVEVfU0NIRUQsICZkZXYtPnN0YXRlKSkgewogICAg
ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICAgICAgICAgIGludCBjcHUg
PSAwOwoKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3Bs
ICUwIDsgY2xpIjoiPWciIChmbGFncyk6IDoibWVtb3J5Iik7CiAgICAgICAgICAgICAgICBkZXYt
Pm5leHRfc2NoZWQgPSBzb2Z0bmV0X2RhdGFfUmI2MDA0NDhjW2NwdV0ub3V0cHV0X3F1ZXVlOwog
ICAgICAgICAgICAgICAgc29mdG5ldF9kYXRhX1JiNjAwNDQ4Y1tjcHVdLm91dHB1dF9xdWV1ZSA9
IGRldjsKICAgICAgICAgICAgICAgIGNwdV9yYWlzZV9zb2Z0aXJxX1JkMDFmM2VlOChjcHUsIE5F
VF9UWF9TT0ZUSVJRKTsKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNo
bCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsKICAgICAgICB9Cn0K
CnN0YXRpYyBpbmxpbmUgdm9pZCBuZXRpZl9zY2hlZHVsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2
KQp7CiAgICAgICAgaWYgKCEoX19idWlsdGluX2NvbnN0YW50X3AoX19MSU5LX1NUQVRFX1hPRkYp
ID8gY29uc3RhbnRfdGVzdF9iaXQoKF9fTElOS19TVEFURV9YT0ZGKSwoJmRldi0+c3RhdGUpKSA6
IHZhcmlhYmxlX3Rlc3RfYml0KChfX0xJTktfU1RBVEVfWE9GRiksKCZkZXYtPnN0YXRlKSkpKQog
ICAgICAgICAgICAgICAgX19uZXRpZl9zY2hlZHVsZShkZXYpOwp9CgpzdGF0aWMgaW5saW5lIHZv
aWQgbmV0aWZfc3RhcnRfcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIGNs
ZWFyX2JpdChfX0xJTktfU1RBVEVfWE9GRiwgJmRldi0+c3RhdGUpOwp9CgpzdGF0aWMgaW5saW5l
IHZvaWQgbmV0aWZfd2FrZV9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAg
aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChfX0xJTktfU1RBVEVfWE9GRiwgJmRldi0+c3RhdGUpKQog
ICAgICAgICAgICAgICAgX19uZXRpZl9zY2hlZHVsZShkZXYpOwp9CgpzdGF0aWMgaW5saW5lIHZv
aWQgbmV0aWZfc3RvcF9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgc2V0
X2JpdChfX0xJTktfU1RBVEVfWE9GRiwgJmRldi0+c3RhdGUpOwp9CgpzdGF0aWMgaW5saW5lIGlu
dCBuZXRpZl9xdWV1ZV9zdG9wcGVkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICBy
ZXR1cm4gKF9fYnVpbHRpbl9jb25zdGFudF9wKF9fTElOS19TVEFURV9YT0ZGKSA/IGNvbnN0YW50
X3Rlc3RfYml0KChfX0xJTktfU1RBVEVfWE9GRiksKCZkZXYtPnN0YXRlKSkgOiB2YXJpYWJsZV90
ZXN0X2JpdCgoX19MSU5LX1NUQVRFX1hPRkYpLCgmZGV2LT5zdGF0ZSkpKTsKfQoKc3RhdGljIGlu
bGluZSBpbnQgbmV0aWZfcnVubmluZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAg
cmV0dXJuIChfX2J1aWx0aW5fY29uc3RhbnRfcChfX0xJTktfU1RBVEVfU1RBUlQpID8gY29uc3Rh
bnRfdGVzdF9iaXQoKF9fTElOS19TVEFURV9TVEFSVCksKCZkZXYtPnN0YXRlKSkgOiB2YXJpYWJs
ZV90ZXN0X2JpdCgoX19MSU5LX1NUQVRFX1NUQVJUKSwoJmRldi0+c3RhdGUpKSk7Cn0KCgoKCnN0
YXRpYyBpbmxpbmUgdm9pZCBkZXZfa2ZyZWVfc2tiX2lycShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQp7
CiAgICAgICAgaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJnNrYi0+dXNlcnMpKSB7CiAgICAgICAg
ICAgICAgICBpbnQgY3B1ID0wOwogICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsK
CiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7
IGNsaSI6Ij1nIiAoZmxhZ3MpOiA6Im1lbW9yeSIpOwogICAgICAgICAgICAgICAgc2tiLT5uZXh0
ID0gc29mdG5ldF9kYXRhX1JiNjAwNDQ4Y1tjcHVdLmNvbXBsZXRpb25fcXVldWU7CiAgICAgICAg
ICAgICAgICBzb2Z0bmV0X2RhdGFfUmI2MDA0NDhjW2NwdV0uY29tcGxldGlvbl9xdWV1ZSA9IHNr
YjsKICAgICAgICAgICAgICAgIGNwdV9yYWlzZV9zb2Z0aXJxX1JkMDFmM2VlOChjcHUsIE5FVF9U
WF9TT0ZUSVJRKTsKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAl
MCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsKICAgICAgICB9Cn0KCgoK
CnN0YXRpYyBpbmxpbmUgdm9pZCBkZXZfa2ZyZWVfc2tiX2FueShzdHJ1Y3Qgc2tfYnVmZiAqc2ti
KQp7CiAgICAgICAgaWYgKCgoKHZvaWQpKCgwKSksIGlycV9zdGF0X1JjZGRhNzg3ZlswXS5fX2xv
Y2FsX2lycV9jb3VudCkgIT0gMCkpCiAgICAgICAgICAgICAgICBkZXZfa2ZyZWVfc2tiX2lycShz
a2IpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGtmcmVlX3NrYihza2IpOwp9CgpleHRl
cm4gdm9pZCBuZXRfY2FsbF9yeF9hdG9taWNfUmYyM2VmYjk4KHZvaWQgKCpmbikodm9pZCkpOwoK
ZXh0ZXJuIGludCBuZXRpZl9yeF9SYWEzNjY4YTMoc3RydWN0IHNrX2J1ZmYgKnNrYik7CmV4dGVy
biBpbnQgZGV2X2lvY3RsX1IzODdjNzhhNSh1bnNpZ25lZCBpbnQgY21kLCB2b2lkICopOwpleHRl
cm4gaW50IGRldl9jaGFuZ2VfZmxhZ3NfUjlmMDFmZDQ3KHN0cnVjdCBuZXRfZGV2aWNlICosIHVu
c2lnbmVkKTsKZXh0ZXJuIHZvaWQgZGV2X3F1ZXVlX3htaXRfbml0KHN0cnVjdCBza19idWZmICpz
a2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwoKZXh0ZXJuIHZvaWQgZGV2X2luaXQodm9pZCk7
CgpleHRlcm4gaW50IG5ldGRldl9uaXQ7CgoKCgpzdGF0aWMgaW5saW5lIGludCBuZXRpZl9yeF9u
aShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQp7CiAgICAgICBpbnQgZXJyID0gbmV0aWZfcnhfUmFhMzY2
OGEzKHNrYik7CiAgICAgICBpZiAoKCh2b2lkKSgoMCkpLCBpcnFfc3RhdF9SY2RkYTc4N2ZbMF0u
X19zb2Z0aXJxX3BlbmRpbmcpKQogICAgICAgICAgICAgICBkb19zb2Z0aXJxX1JmMGE1MjliNygp
OwogICAgICAgcmV0dXJuIGVycjsKfQoKc3RhdGljIGlubGluZSB2b2lkIGRldl9pbml0X2J1ZmZl
cnMoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewoKfQoKZXh0ZXJuIGludCBuZXRkZXZfZmluaXNo
X3VucmVnaXN0ZXJfUjBiMjczZWU2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwoKc3RhdGljIGlu
bGluZSB2b2lkIGRldl9wdXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIGlmIChh
dG9taWNfZGVjX2FuZF90ZXN0KCZkZXYtPnJlZmNudCkpCiAgICAgICAgICAgICAgICBuZXRkZXZf
ZmluaXNoX3VucmVnaXN0ZXJfUjBiMjczZWU2KGRldik7Cn0KIyA2MDUgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiCnN0YXRpYyBpbmxpbmUgaW50IG5ldGlmX2NhcnJp
ZXJfb2soc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIHJldHVybiAhKF9fYnVpbHRp
bl9jb25zdGFudF9wKF9fTElOS19TVEFURV9OT0NBUlJJRVIpID8gY29uc3RhbnRfdGVzdF9iaXQo
KF9fTElOS19TVEFURV9OT0NBUlJJRVIpLCgmZGV2LT5zdGF0ZSkpIDogdmFyaWFibGVfdGVzdF9i
aXQoKF9fTElOS19TVEFURV9OT0NBUlJJRVIpLCgmZGV2LT5zdGF0ZSkpKTsKfQoKZXh0ZXJuIHZv
aWQgX19uZXRkZXZfd2F0Y2hkb2dfdXBfUjA0MDljNzIxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYp
OwoKc3RhdGljIGlubGluZSB2b2lkIG5ldGlmX2NhcnJpZXJfb24oc3RydWN0IG5ldF9kZXZpY2Ug
KmRldikKewogICAgICAgIGNsZWFyX2JpdChfX0xJTktfU1RBVEVfTk9DQVJSSUVSLCAmZGV2LT5z
dGF0ZSk7CiAgICAgICAgaWYgKG5ldGlmX3J1bm5pbmcoZGV2KSkKICAgICAgICAgICAgICAgIF9f
bmV0ZGV2X3dhdGNoZG9nX3VwX1IwNDA5YzcyMShkZXYpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQg
bmV0aWZfY2Fycmllcl9vZmYoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIHNldF9i
aXQoX19MSU5LX1NUQVRFX05PQ0FSUklFUiwgJmRldi0+c3RhdGUpOwp9CgoKc3RhdGljIGlubGlu
ZSBpbnQgbmV0aWZfZGV2aWNlX3ByZXNlbnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAg
ICAgIHJldHVybiAoX19idWlsdGluX2NvbnN0YW50X3AoX19MSU5LX1NUQVRFX1BSRVNFTlQpID8g
Y29uc3RhbnRfdGVzdF9iaXQoKF9fTElOS19TVEFURV9QUkVTRU5UKSwoJmRldi0+c3RhdGUpKSA6
IHZhcmlhYmxlX3Rlc3RfYml0KChfX0xJTktfU1RBVEVfUFJFU0VOVCksKCZkZXYtPnN0YXRlKSkp
Owp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbmV0aWZfZGV2aWNlX2RldGFjaChzdHJ1Y3QgbmV0X2Rl
dmljZSAqZGV2KQp7CiAgICAgICAgaWYgKHRlc3RfYW5kX2NsZWFyX2JpdChfX0xJTktfU1RBVEVf
UFJFU0VOVCwgJmRldi0+c3RhdGUpICYmCiAgICAgICAgICAgIG5ldGlmX3J1bm5pbmcoZGV2KSkg
ewogICAgICAgICAgICAgICAgbmV0aWZfc3RvcF9xdWV1ZShkZXYpOwogICAgICAgIH0KfQoKc3Rh
dGljIGlubGluZSB2b2lkIG5ldGlmX2RldmljZV9hdHRhY2goc3RydWN0IG5ldF9kZXZpY2UgKmRl
dikKewogICAgICAgIGlmICghdGVzdF9hbmRfc2V0X2JpdChfX0xJTktfU1RBVEVfUFJFU0VOVCwg
JmRldi0+c3RhdGUpICYmCiAgICAgICAgICAgIG5ldGlmX3J1bm5pbmcoZGV2KSkgewogICAgICAg
ICAgICAgICAgbmV0aWZfd2FrZV9xdWV1ZShkZXYpOwogICAgICAgICAgICAgICAgX19uZXRkZXZf
d2F0Y2hkb2dfdXBfUjA0MDljNzIxKGRldik7CiAgICAgICAgfQp9CgoKCgoKCmVudW0gewogICAg
ICAgIE5FVElGX01TR19EUlYgPSAweDAwMDEsCiAgICAgICAgTkVUSUZfTVNHX1BST0JFID0gMHgw
MDAyLAogICAgICAgIE5FVElGX01TR19MSU5LID0gMHgwMDA0LAogICAgICAgIE5FVElGX01TR19U
SU1FUiA9IDB4MDAwOCwKICAgICAgICBORVRJRl9NU0dfSUZET1dOID0gMHgwMDEwLAogICAgICAg
IE5FVElGX01TR19JRlVQID0gMHgwMDIwLAogICAgICAgIE5FVElGX01TR19SWF9FUlIgPSAweDAw
NDAsCiAgICAgICAgTkVUSUZfTVNHX1RYX0VSUiA9IDB4MDA4MCwKICAgICAgICBORVRJRl9NU0df
VFhfUVVFVUVEID0gMHgwMTAwLAogICAgICAgIE5FVElGX01TR19JTlRSID0gMHgwMjAwLAogICAg
ICAgIE5FVElGX01TR19UWF9ET05FID0gMHgwNDAwLAogICAgICAgIE5FVElGX01TR19SWF9TVEFU
VVMgPSAweDA4MDAsCiAgICAgICAgTkVUSUZfTVNHX1BLVERBVEEgPSAweDEwMDAsCn07CiMgNjg0
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIgpleHRlcm4gdm9pZCBl
dGhlcl9zZXR1cF9SYzdlY2Q4ZmEoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CmV4dGVybiB2b2lk
IGZkZGlfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CmV4dGVybiB2b2lkIHRyX3NldHVw
KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpleHRlcm4gdm9pZCBmY19zZXR1cChzdHJ1Y3QgbmV0
X2RldmljZSAqZGV2KTsKZXh0ZXJuIHZvaWQgZmNfZnJlZWRldihzdHJ1Y3QgbmV0X2RldmljZSAq
ZGV2KTsKCmV4dGVybiBpbnQgcmVnaXN0ZXJfbmV0ZGV2X1IxNDY0NGZhMShzdHJ1Y3QgbmV0X2Rl
dmljZSAqZGV2KTsKZXh0ZXJuIHZvaWQgdW5yZWdpc3Rlcl9uZXRkZXZfUjQ4YTBjYmExKHN0cnVj
dCBuZXRfZGV2aWNlICpkZXYpOwoKZXh0ZXJuIHZvaWQgZGV2X21jX3VwbG9hZF9SMWM4MWI3Mjco
c3RydWN0IG5ldF9kZXZpY2UgKmRldik7CmV4dGVybiBpbnQgZGV2X21jX2RlbGV0ZV9SNzk0MWVm
NDIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqYWRkciwgaW50IGFsZW4sIGludCBhbGwp
OwpleHRlcm4gaW50IGRldl9tY19hZGRfUjRkY2VmYTQ1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYs
IHZvaWQgKmFkZHIsIGludCBhbGVuLCBpbnQgbmV3b25seSk7CmV4dGVybiB2b2lkIGRldl9tY19k
aXNjYXJkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpleHRlcm4gdm9pZCBkZXZfc2V0X3Byb21p
c2N1aXR5X1IwYjc2MGVjYShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgaW5jKTsKZXh0ZXJu
IHZvaWQgZGV2X3NldF9hbGxtdWx0aV9SZmE0ZWJjOGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwg
aW50IGluYyk7CmV4dGVybiB2b2lkIG5ldGRldl9zdGF0ZV9jaGFuZ2VfUjRiNmVjMGYzKHN0cnVj
dCBuZXRfZGV2aWNlICpkZXYpOwoKZXh0ZXJuIHZvaWQgZGV2X2xvYWRfUmE5MGZkM2I3KGNvbnN0
IGNoYXIgKm5hbWUpOwpleHRlcm4gdm9pZCBkZXZfbWNhc3RfaW5pdCh2b2lkKTsKZXh0ZXJuIGlu
dCBuZXRkZXZfcmVnaXN0ZXJfZmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAoKnN0aW11
bCkoc3RydWN0IG5ldF9kZXZpY2UgKmRldikpOwpleHRlcm4gdm9pZCBuZXRkZXZfdW5yZWdpc3Rl
cl9mYyhpbnQgYml0KTsKZXh0ZXJuIGludCBuZXRkZXZfbWF4X2JhY2tsb2c7CmV4dGVybiB1bnNp
Z25lZCBsb25nIG5ldGRldl9mY194b2ZmOwpleHRlcm4gYXRvbWljX3QgbmV0ZGV2X2Ryb3BwaW5n
OwpleHRlcm4gaW50IG5ldGRldl9zZXRfbWFzdGVyX1IxODkyOTM5MChzdHJ1Y3QgbmV0X2Rldmlj
ZSAqZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqbWFzdGVyKTsKZXh0ZXJuIHN0cnVjdCBza19idWZm
ICogc2tiX2NoZWNrc3VtX2hlbHBfUjliMGMyOGY0KHN0cnVjdCBza19idWZmICpza2IpOwojIDEw
NiAiODEzOXRvby5jIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9ldGhlcmRl
dmljZS5oIiAxCiMgMjcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZXRoZXJkZXZpY2Uu
aCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2lmX2V0aGVyLmgiIDEKIyAyOCAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9ldGhlcmRldmljZS5oIiAyCgoKZXh0ZXJuIGlu
dCBldGhfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgdHlwZSwg
dm9pZCAqZGFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc2Fk
ZHIsIHVuc2lnbmVkIGxlbik7CmV4dGVybiBpbnQgZXRoX3JlYnVpbGRfaGVhZGVyKHN0cnVjdCBz
a19idWZmICpza2IpOwpleHRlcm4gdW5zaWduZWQgc2hvcnQgZXRoX3R5cGVfdHJhbnNfUjJiNmM3
ZTkzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpleHRlcm4g
dm9pZCBldGhfaGVhZGVyX2NhY2hlX3VwZGF0ZShzdHJ1Y3QgaGhfY2FjaGUgKmhoLCBzdHJ1Y3Qg
bmV0X2RldmljZSAqZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyICogaGFkZHIpOwpleHRlcm4gaW50IGV0aF9oZWFkZXJfY2Fj
aGUoc3RydWN0IG5laWdoYm91ciAqbmVpZ2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IGhoX2NhY2hlICpoaCk7CmV4dGVybiBpbnQgZXRoX2hlYWRlcl9w
YXJzZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmhhZGRyKTsKZXh0ZXJuIHN0cnVjdCBuZXRfZGV2aWNl
ICppbml0X2V0aGVyZGV2X1I3Nzc5MGVmMyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgc2l6
ZW9mX3ByaXYpOwpleHRlcm4gc3RydWN0IG5ldF9kZXZpY2UgKmFsbG9jX2V0aGVyZGV2X1I1MTBl
NDRkMShpbnQgc2l6ZW9mX3ByaXYpOwoKc3RhdGljIGlubGluZSB2b2lkIGV0aF9jb3B5X2FuZF9z
dW0gKHN0cnVjdCBza19idWZmICpkZXN0LCB1bnNpZ25lZCBjaGFyICpzcmMsIGludCBsZW4sIGlu
dCBiYXNlKQp7CiAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKGxlbikgPyBfX2NvbnN0YW50
X21lbWNweTNkKChkZXN0LT5kYXRhKSwoc3JjKSwobGVuKSkgOiBfX21lbWNweTNkKChkZXN0LT5k
YXRhKSwoc3JjKSwobGVuKSkpOwp9CiMgNTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
ZXRoZXJkZXZpY2UuaCIKc3RhdGljIGlubGluZSBpbnQgaXNfdmFsaWRfZXRoZXJfYWRkciggdTgg
KmFkZHIgKQp7CiAgICAgICAgY29uc3QgY2hhciB6YWRkcls2XSA9IHswLH07CgogICAgICAgIHJl
dHVybiAhKGFkZHJbMF0mMSkgJiYgX19idWlsdGluX21lbWNtcCggYWRkciwgemFkZHIsIDYpOwp9
CiMgMTA3ICI4MTM5dG9vLmMiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3J0
bmV0bGluay5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uZXRsaW5r
LmgiIDEKIyAxNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uZXRsaW5rLmgiCnN0cnVj
dCBzb2NrYWRkcl9ubAp7CiAgICAgICAgc2FfZmFtaWx5X3QgbmxfZmFtaWx5OwogICAgICAgIHVu
c2lnbmVkIHNob3J0IG5sX3BhZDsKICAgICAgICBfX3UzMiBubF9waWQ7CiAgICAgICAgX191MzIg
bmxfZ3JvdXBzOwp9OwoKc3RydWN0IG5sbXNnaGRyCnsKICAgICAgICBfX3UzMiBubG1zZ19sZW47
CiAgICAgICAgX191MTYgbmxtc2dfdHlwZTsKICAgICAgICBfX3UxNiBubG1zZ19mbGFnczsKICAg
ICAgICBfX3UzMiBubG1zZ19zZXE7CiAgICAgICAgX191MzIgbmxtc2dfcGlkOwp9OwojIDc3ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25ldGxpbmsuaCIKc3RydWN0IG5sbXNnZXJyCnsK
ICAgICAgICBpbnQgZXJyb3I7CiAgICAgICAgc3RydWN0IG5sbXNnaGRyIG1zZzsKfTsKCgoKCgpz
dHJ1Y3QgbmV0bGlua19za2JfcGFybXMKewogICAgICAgIHN0cnVjdCB1Y3JlZCBjcmVkczsKICAg
ICAgICBfX3UzMiBwaWQ7CiAgICAgICAgX191MzIgZ3JvdXBzOwogICAgICAgIF9fdTMyIGRzdF9w
aWQ7CiAgICAgICAgX191MzIgZHN0X2dyb3VwczsKICAgICAgICBrZXJuZWxfY2FwX3QgZWZmX2Nh
cDsKfTsKCgoKCgpleHRlcm4gaW50IG5ldGxpbmtfYXR0YWNoKGludCB1bml0LCBpbnQgKCpmdW5j
dGlvbikoaW50LHN0cnVjdCBza19idWZmICpza2IpKTsKZXh0ZXJuIHZvaWQgbmV0bGlua19kZXRh
Y2goaW50IHVuaXQpOwpleHRlcm4gaW50IG5ldGxpbmtfcG9zdChpbnQgdW5pdCwgc3RydWN0IHNr
X2J1ZmYgKnNrYik7CmV4dGVybiBpbnQgaW5pdF9uZXRsaW5rKHZvaWQpOwpleHRlcm4gc3RydWN0
IHNvY2sgKm5ldGxpbmtfa2VybmVsX2NyZWF0ZV9SZDBkYjRjNGUoaW50IHVuaXQsIHZvaWQgKCpp
bnB1dCkoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGVuKSk7CmV4dGVybiB2b2lkIG5ldGxpbmtfYWNr
X1IwNThmMmI1NihzdHJ1Y3Qgc2tfYnVmZiAqaW5fc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwg
aW50IGVycik7CmV4dGVybiBpbnQgbmV0bGlua191bmljYXN0X1JlOWNjMTRkYyhzdHJ1Y3Qgc29j
ayAqc3NrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX3UzMiBwaWQsIGludCBub25ibG9jayk7CmV4
dGVybiB2b2lkIG5ldGxpbmtfYnJvYWRjYXN0X1JjY2Y0Y2JlMihzdHJ1Y3Qgc29jayAqc3NrLCBz
dHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX3UzMiBwaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fdTMyIGdyb3VwLCBpbnQgYWxsb2NhdGlvbik7CmV4dGVybiB2b2lkIG5ldGxpbmtfc2V0
X2Vycl9SNGNhMzljNTMoc3RydWN0IHNvY2sgKnNzaywgX191MzIgcGlkLCBfX3UzMiBncm91cCwg
aW50IGNvZGUpOwojIDEyMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uZXRsaW5rLmgi
CnN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrCnsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwog
ICAgICAgIHN0cnVjdCBubG1zZ2hkciAqbmxoOwogICAgICAgIGludCAoKmR1bXApKHN0cnVjdCBz
a19idWZmICogc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpOwogICAgICAgIGludCAo
KmRvbmUpKHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYik7CiAgICAgICAgaW50IGZhbWlseTsK
ICAgICAgICBsb25nIGFyZ3NbNF07Cn07CgpzdGF0aWMgX19pbmxpbmVfXyBzdHJ1Y3Qgbmxtc2do
ZHIgKgpfX25sbXNnX3B1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgcGlkLCB1MzIgc2VxLCBp
bnQgdHlwZSwgaW50IGxlbikKewogICAgICAgIHN0cnVjdCBubG1zZ2hkciAqbmxoOwogICAgICAg
IGludCBzaXplID0gKChsZW4pKyggKChzaXplb2Yoc3RydWN0IG5sbXNnaGRyKSkrNCAtMSkgJiB+
KDQgLTEpICkpOwoKICAgICAgICBubGggPSAoc3RydWN0IG5sbXNnaGRyKilza2JfcHV0KHNrYiwg
KCAoKHNpemUpKzQgLTEpICYgfig0IC0xKSApKTsKICAgICAgICBubGgtPm5sbXNnX3R5cGUgPSB0
eXBlOwogICAgICAgIG5saC0+bmxtc2dfbGVuID0gc2l6ZTsKICAgICAgICBubGgtPm5sbXNnX2Zs
YWdzID0gMDsKICAgICAgICBubGgtPm5sbXNnX3BpZCA9IHBpZDsKICAgICAgICBubGgtPm5sbXNn
X3NlcSA9IHNlcTsKICAgICAgICByZXR1cm4gbmxoOwp9CgoKCgoKZXh0ZXJuIGludCBuZXRsaW5r
X2R1bXBfc3RhcnRfUjU2YTY0MmQ3KHN0cnVjdCBzb2NrICpzc2ssIHN0cnVjdCBza19idWZmICpz
a2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBubG1zZ2hkciAqbmxoLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKCpkdW1wKShzdHJ1Y3Qgc2tfYnVmZiAq
c2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayopLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgKCpkb25lKShzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayopKTsKIyA1ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3J0bmV0bGluay5oIiAyCiMgNTcgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvcnRuZXRsaW5rLmgiCnN0cnVjdCBydGF0dHIKewogICAgICAgIHVuc2ln
bmVkIHNob3J0IHJ0YV9sZW47CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcnRhX3R5cGU7Cn07CiMg
ODMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcnRuZXRsaW5rLmgiCnN0cnVjdCBydG1z
Zwp7CiAgICAgICAgdW5zaWduZWQgY2hhciBydG1fZmFtaWx5OwogICAgICAgIHVuc2lnbmVkIGNo
YXIgcnRtX2RzdF9sZW47CiAgICAgICAgdW5zaWduZWQgY2hhciBydG1fc3JjX2xlbjsKICAgICAg
ICB1bnNpZ25lZCBjaGFyIHJ0bV90b3M7CgogICAgICAgIHVuc2lnbmVkIGNoYXIgcnRtX3RhYmxl
OwogICAgICAgIHVuc2lnbmVkIGNoYXIgcnRtX3Byb3RvY29sOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgcnRtX3Njb3BlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcnRtX3R5cGU7CgogICAgICAgIHVu
c2lnbmVkIHJ0bV9mbGFnczsKfTsKCgoKZW51bQp7CiAgICAgICAgUlROX1VOU1BFQywKICAgICAg
ICBSVE5fVU5JQ0FTVCwKICAgICAgICBSVE5fTE9DQUwsCiAgICAgICAgUlROX0JST0FEQ0FTVCwK
CiAgICAgICAgUlROX0FOWUNBU1QsCgogICAgICAgIFJUTl9NVUxUSUNBU1QsCiAgICAgICAgUlRO
X0JMQUNLSE9MRSwKICAgICAgICBSVE5fVU5SRUFDSEFCTEUsCiAgICAgICAgUlROX1BST0hJQklU
LAogICAgICAgIFJUTl9USFJPVywKICAgICAgICBSVE5fTkFULAogICAgICAgIFJUTl9YUkVTT0xW
RSwKfTsKIyAxNTUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcnRuZXRsaW5rLmgiCmVu
dW0gcnRfc2NvcGVfdAp7CiAgICAgICAgUlRfU0NPUEVfVU5JVkVSU0U9MCwKCiAgICAgICAgUlRf
U0NPUEVfU0lURT0yMDAsCiAgICAgICAgUlRfU0NPUEVfTElOSz0yNTMsCiAgICAgICAgUlRfU0NP
UEVfSE9TVD0yNTQsCiAgICAgICAgUlRfU0NPUEVfTk9XSEVSRT0yNTUKfTsKIyAxNzMgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcnRuZXRsaW5rLmgiCmVudW0gcnRfY2xhc3NfdAp7CiAg
ICAgICAgUlRfVEFCTEVfVU5TUEVDPTAsCgogICAgICAgIFJUX1RBQkxFX0RFRkFVTFQ9MjUzLAog
ICAgICAgIFJUX1RBQkxFX01BSU49MjU0LAogICAgICAgIFJUX1RBQkxFX0xPQ0FMPTI1NQp9OwoK
CgoKCgplbnVtIHJ0YXR0cl90eXBlX3QKewogICAgICAgIFJUQV9VTlNQRUMsCiAgICAgICAgUlRB
X0RTVCwKICAgICAgICBSVEFfU1JDLAogICAgICAgIFJUQV9JSUYsCiAgICAgICAgUlRBX09JRiwK
ICAgICAgICBSVEFfR0FURVdBWSwKICAgICAgICBSVEFfUFJJT1JJVFksCiAgICAgICAgUlRBX1BS
RUZTUkMsCiAgICAgICAgUlRBX01FVFJJQ1MsCiAgICAgICAgUlRBX01VTFRJUEFUSCwKICAgICAg
ICBSVEFfUFJPVE9JTkZPLAogICAgICAgIFJUQV9GTE9XLAogICAgICAgIFJUQV9DQUNIRUlORk8K
fTsKIyAyMTggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcnRuZXRsaW5rLmgiCnN0cnVj
dCBydG5leHRob3AKewogICAgICAgIHVuc2lnbmVkIHNob3J0IHJ0bmhfbGVuOwogICAgICAgIHVu
c2lnbmVkIGNoYXIgcnRuaF9mbGFnczsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJ0bmhfaG9wczsK
ICAgICAgICBpbnQgcnRuaF9pZmluZGV4Owp9OwojIDI0NSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9ydG5ldGxpbmsuaCIKc3RydWN0IHJ0YV9jYWNoZWluZm8KewogICAgICAgIF9fdTMy
IHJ0YV9jbG50cmVmOwogICAgICAgIF9fdTMyIHJ0YV9sYXN0dXNlOwogICAgICAgIF9fczMyIHJ0
YV9leHBpcmVzOwogICAgICAgIF9fdTMyIHJ0YV9lcnJvcjsKICAgICAgICBfX3UzMiBydGFfdXNl
ZDsKCgogICAgICAgIF9fdTMyIHJ0YV9pZDsKICAgICAgICBfX3UzMiBydGFfdHM7CiAgICAgICAg
X191MzIgcnRhX3RzYWdlOwp9OwoKCgplbnVtCnsKICAgICAgICBSVEFYX1VOU1BFQywKCiAgICAg
ICAgUlRBWF9MT0NLLAoKICAgICAgICBSVEFYX01UVSwKCiAgICAgICAgUlRBWF9XSU5ET1csCgog
ICAgICAgIFJUQVhfUlRULAoKICAgICAgICBSVEFYX1JUVFZBUiwKCiAgICAgICAgUlRBWF9TU1RI
UkVTSCwKCiAgICAgICAgUlRBWF9DV05ELAoKICAgICAgICBSVEFYX0FEVk1TUywKCiAgICAgICAg
UlRBWF9SRU9SREVSSU5HLAoKfTsKIyAyOTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
cnRuZXRsaW5rLmgiCnN0cnVjdCBpZmFkZHJtc2cKewogICAgICAgIHVuc2lnbmVkIGNoYXIgaWZh
X2ZhbWlseTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGlmYV9wcmVmaXhsZW47CiAgICAgICAgdW5z
aWduZWQgY2hhciBpZmFfZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgY2hhciBpZmFfc2NvcGU7CiAg
ICAgICAgaW50IGlmYV9pbmRleDsKfTsKCmVudW0KewogICAgICAgIElGQV9VTlNQRUMsCiAgICAg
ICAgSUZBX0FERFJFU1MsCiAgICAgICAgSUZBX0xPQ0FMLAogICAgICAgIElGQV9MQUJFTCwKICAg
ICAgICBJRkFfQlJPQURDQVNULAogICAgICAgIElGQV9BTllDQVNULAogICAgICAgIElGQV9DQUNI
RUlORk8KfTsKIyAzMjMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcnRuZXRsaW5rLmgi
CnN0cnVjdCBpZmFfY2FjaGVpbmZvCnsKICAgICAgICBfX3MzMiBpZmFfcHJlZmVyZWQ7CiAgICAg
ICAgX19zMzIgaWZhX3ZhbGlkOwp9OwojIDM0NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9ydG5ldGxpbmsuaCIKc3RydWN0IG5kbXNnCnsKICAgICAgICB1bnNpZ25lZCBjaGFyIG5kbV9m
YW1pbHk7CiAgICAgICAgdW5zaWduZWQgY2hhciBuZG1fcGFkMTsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCBuZG1fcGFkMjsKICAgICAgICBpbnQgbmRtX2lmaW5kZXg7CiAgICAgICAgX191MTYgbmRt
X3N0YXRlOwogICAgICAgIF9fdTggbmRtX2ZsYWdzOwogICAgICAgIF9fdTggbmRtX3R5cGU7Cn07
CgplbnVtCnsKICAgICAgICBOREFfVU5TUEVDLAogICAgICAgIE5EQV9EU1QsCiAgICAgICAgTkRB
X0xMQUREUiwKICAgICAgICBOREFfQ0FDSEVJTkZPCn07CiMgMzkzICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L3J0bmV0bGluay5oIgpzdHJ1Y3QgbmRhX2NhY2hlaW5mbwp7CiAgICAgICAg
X191MzIgbmRtX2NvbmZpcm1lZDsKICAgICAgICBfX3UzMiBuZG1fdXNlZDsKICAgICAgICBfX3Uz
MiBuZG1fdXBkYXRlZDsKICAgICAgICBfX3UzMiBuZG1fcmVmY250Owp9OwoKCgoKCnN0cnVjdCBy
dGdlbm1zZwp7CiAgICAgICAgdW5zaWduZWQgY2hhciBydGdlbl9mYW1pbHk7Cn07CiMgNDE5ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3J0bmV0bGluay5oIgpzdHJ1Y3QgaWZpbmZvbXNn
CnsKICAgICAgICB1bnNpZ25lZCBjaGFyIGlmaV9mYW1pbHk7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBfX2lmaV9wYWQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgaWZpX3R5cGU7CiAgICAgICAgaW50
IGlmaV9pbmRleDsKICAgICAgICB1bnNpZ25lZCBpZmlfZmxhZ3M7CiAgICAgICAgdW5zaWduZWQg
aWZpX2NoYW5nZTsKfTsKCmVudW0KewogICAgICAgIElGTEFfVU5TUEVDLAogICAgICAgIElGTEFf
QUREUkVTUywKICAgICAgICBJRkxBX0JST0FEQ0FTVCwKICAgICAgICBJRkxBX0lGTkFNRSwKICAg
ICAgICBJRkxBX01UVSwKICAgICAgICBJRkxBX0xJTkssCiAgICAgICAgSUZMQV9RRElTQywKICAg
ICAgICBJRkxBX1NUQVRTLAogICAgICAgIElGTEFfQ09TVCwKCiAgICAgICAgSUZMQV9QUklPUklU
WSwKCiAgICAgICAgSUZMQV9NQVNURVIKCn07CiMgNDg2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3J0bmV0bGluay5oIgpzdHJ1Y3QgdGNtc2cKewogICAgICAgIHVuc2lnbmVkIGNoYXIg
dGNtX2ZhbWlseTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHRjbV9fcGFkMTsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCB0Y21fX3BhZDI7CiAgICAgICAgaW50IHRjbV9pZmluZGV4OwogICAgICAgIF9f
dTMyIHRjbV9oYW5kbGU7CiAgICAgICAgX191MzIgdGNtX3BhcmVudDsKICAgICAgICBfX3UzMiB0
Y21faW5mbzsKfTsKCmVudW0KewogICAgICAgIFRDQV9VTlNQRUMsCiAgICAgICAgVENBX0tJTkQs
CiAgICAgICAgVENBX09QVElPTlMsCiAgICAgICAgVENBX1NUQVRTLAogICAgICAgIFRDQV9YU1RB
VFMsCiAgICAgICAgVENBX1JBVEUsCn07CiMgNTM5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L3J0bmV0bGluay5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmln
LmgiIDEKIyA1NDAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcnRuZXRsaW5rLmgiIDIK
CnN0YXRpYyBfX2lubGluZV9fIGludCBydGF0dHJfc3RyY21wKHN0cnVjdCBydGF0dHIgKnJ0YSwg
Y2hhciAqc3RyKQp7CiAgICAgICAgaW50IGxlbiA9IHN0cmxlbihzdHIpICsgMTsKICAgICAgICBy
ZXR1cm4gbGVuID4gcnRhLT5ydGFfbGVuIHx8IF9fYnVpbHRpbl9tZW1jbXAoKCh2b2lkKikoKChj
aGFyKikocnRhKSkgKyAoKCAoKHNpemVvZihzdHJ1Y3QgcnRhdHRyKSkrNCAtMSkgJiB+KDQgLTEp
ICkgKyAoMCkpKSksIHN0ciwgbGVuKTsKfQoKZXh0ZXJuIGludCBydGF0dHJfcGFyc2VfUmU0OTQx
NGU5KHN0cnVjdCBydGF0dHIgKnRiW10sIGludCBtYXhhdHRyLCBzdHJ1Y3QgcnRhdHRyICpydGEs
IGludCBsZW4pOwoKCmV4dGVybiBzdHJ1Y3Qgc29jayAqcnRubF9SMDM4ZmZiMTI7CgpzdHJ1Y3Qg
cnRuZXRsaW5rX2xpbmsKewogICAgICAgIGludCAoKmRvaXQpKHN0cnVjdCBza19idWZmICosIHN0
cnVjdCBubG1zZ2hkciosIHZvaWQgKmF0dHIpOwogICAgICAgIGludCAoKmR1bXBpdCkoc3RydWN0
IHNrX2J1ZmYgKiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKTsKfTsKCmV4dGVybiBzdHJ1
Y3QgcnRuZXRsaW5rX2xpbmsgKiBydG5ldGxpbmtfbGlua3NfUmI4YzVjMTlmWzMyXTsKZXh0ZXJu
IGludCBydG5ldGxpbmtfZHVtcF9pZmluZm9fUjMyNTIwNTVhKHN0cnVjdCBza19idWZmICpza2Is
IHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYik7CmV4dGVybiBpbnQgcnRuZXRsaW5rX3NlbmQo
c3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHBpZCwgdTMyIGdyb3VwLCBpbnQgZWNobyk7CmV4dGVy
biBpbnQgcnRuZXRsaW5rX3B1dF9tZXRyaWNzX1JlMDc1NWU2NChzdHJ1Y3Qgc2tfYnVmZiAqc2ti
LCB1bnNpZ25lZCAqbWV0cmljcyk7CgpleHRlcm4gdm9pZCBfX3J0YV9maWxsX1JlYTU1NGUwMShz
dHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgYXR0cnR5cGUsIGludCBhdHRybGVuLCBjb25zdCB2b2lk
ICpkYXRhKTsKCgoKCgpleHRlcm4gdm9pZCBydG1zZ19pZmluZm8oaW50IHR5cGUsIHN0cnVjdCBu
ZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGNoYW5nZSk7CgoKCgoKCgpleHRlcm4gc3RydWN0IHNl
bWFwaG9yZSBydG5sX3NlbV9SNTExZDBlYmU7CiMgNTk1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3J0bmV0bGluay5oIgpleHRlcm4gdm9pZCBydG5sX2xvY2tfUmM3YTRmYmVkKHZvaWQp
OwpleHRlcm4gdm9pZCBydG5sX3VubG9ja19SNmU3MjBmZjIodm9pZCk7CmV4dGVybiB2b2lkIHJ0
bmV0bGlua19pbml0KHZvaWQpOwojIDEwOCAiODEzOXRvby5jIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9kZWxheS5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvZGVsYXkuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9vcHNfcGVyX2ppZmZ5X1JiYTQ5
N2YxMzsKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vZGVsYXkuaCIgMQojIDEwICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9kZWxheS5oIgpleHRlcm4gdm9pZCBfX2JhZF91ZGVs
YXkodm9pZCk7CgpleHRlcm4gdm9pZCBfX3VkZWxheV9SOWU3ZDZiZDAodW5zaWduZWQgbG9uZyB1
c2Vjcyk7CmV4dGVybiB2b2lkIF9fY29uc3RfdWRlbGF5X1JlYWUzZGZkNih1bnNpZ25lZCBsb25n
IHVzZWNzKTsKZXh0ZXJuIHZvaWQgX19kZWxheV9SNDY2YzE0YTcodW5zaWduZWQgbG9uZyBsb29w
cyk7CiMgMTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZGVsYXkuaCIgMgojIDEwOSAi
ODEzOXRvby5jIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9ldGh0b29sLmgi
IDEKIyAxNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9ldGh0b29sLmgiCnN0cnVjdCBl
dGh0b29sX2NtZCB7CiAgICAgICAgdTMyIGNtZDsKICAgICAgICB1MzIgc3VwcG9ydGVkOwogICAg
ICAgIHUzMiBhZHZlcnRpc2luZzsKICAgICAgICB1MTYgc3BlZWQ7CiAgICAgICAgdTggZHVwbGV4
OwogICAgICAgIHU4IHBvcnQ7CiAgICAgICAgdTggcGh5X2FkZHJlc3M7CiAgICAgICAgdTggdHJh
bnNjZWl2ZXI7CiAgICAgICAgdTggYXV0b25lZzsKICAgICAgICB1MzIgbWF4dHhwa3Q7CiAgICAg
ICAgdTMyIG1heHJ4cGt0OwogICAgICAgIHUzMiByZXNlcnZlZFs0XTsKfTsKCgoKc3RydWN0IGV0
aHRvb2xfZHJ2aW5mbyB7CiAgICAgICAgdTMyIGNtZDsKICAgICAgICBjaGFyIGRyaXZlclszMl07
CiAgICAgICAgY2hhciB2ZXJzaW9uWzMyXTsKICAgICAgICBjaGFyIGZ3X3ZlcnNpb25bMzJdOwog
ICAgICAgIGNoYXIgYnVzX2luZm9bMzJdOwoKICAgICAgICBjaGFyIHJlc2VydmVkMVszMl07CiAg
ICAgICAgY2hhciByZXNlcnZlZDJbMjRdOwogICAgICAgIHUzMiBlZWR1bXBfbGVuOwogICAgICAg
IHUzMiByZWdkdW1wX2xlbjsKfTsKCgoKc3RydWN0IGV0aHRvb2xfd29saW5mbyB7CiAgICAgICAg
dTMyIGNtZDsKICAgICAgICB1MzIgc3VwcG9ydGVkOwogICAgICAgIHUzMiB3b2xvcHRzOwogICAg
ICAgIHU4IHNvcGFzc1s2XTsKfTsKCgpzdHJ1Y3QgZXRodG9vbF92YWx1ZSB7CiAgICAgICAgdTMy
IGNtZDsKICAgICAgICB1MzIgZGF0YTsKfTsKCgpzdHJ1Y3QgZXRodG9vbF9yZWdzIHsKICAgICAg
ICB1MzIgY21kOwogICAgICAgIHUzMiB2ZXJzaW9uOwogICAgICAgIHUzMiBsZW47CiAgICAgICAg
dTggZGF0YVswXTsKfTsKCgpzdHJ1Y3QgZXRodG9vbF9lZXByb20gewogICAgICAgIHUzMiBjbWQ7
CiAgICAgICAgdTMyIG1hZ2ljOwogICAgICAgIHUzMiBvZmZzZXQ7CiAgICAgICAgdTMyIGxlbjsK
ICAgICAgICB1OCBkYXRhWzBdOwp9OwojIDExMCAiODEzOXRvby5jIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9taWkuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L21paS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMuaCIg
MQojIDEyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21paS5oIiAyCiMgMTA1ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21paS5oIgpzdHJ1Y3QgbWlpX2lvY3RsX2RhdGEgewog
ICAgICAgIHUxNiBwaHlfaWQ7CiAgICAgICAgdTE2IHJlZ19udW07CiAgICAgICAgdTE2IHZhbF9p
bjsKICAgICAgICB1MTYgdmFsX291dDsKfTsKIyAxMjcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvbWlpLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IG1paV9ud2F5X3Jlc3VsdCAo
dW5zaWduZWQgaW50IG5lZ290aWF0ZWQpCnsKICAgICAgICB1bnNpZ25lZCBpbnQgcmV0OwoKICAg
ICAgICBpZiAobmVnb3RpYXRlZCAmIDB4MDEwMCkKICAgICAgICAgICAgICAgIHJldCA9IDB4MDEw
MDsKICAgICAgICBlbHNlIGlmIChuZWdvdGlhdGVkICYgMHgwMjAwKQogICAgICAgICAgICAgICAg
cmV0ID0gMHgwMjAwOwogICAgICAgIGVsc2UgaWYgKG5lZ290aWF0ZWQgJiAweDAwODApCiAgICAg
ICAgICAgICAgICByZXQgPSAweDAwODA7CiAgICAgICAgZWxzZSBpZiAobmVnb3RpYXRlZCAmIDB4
MDA0MCkKICAgICAgICAgICAgICAgIHJldCA9IDB4MDA0MDsKICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICByZXQgPSAweDAwMjA7CgogICAgICAgIHJldHVybiByZXQ7Cn0KIyAxNTQgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbWlpLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50
IG1paV9kdXBsZXggKHVuc2lnbmVkIGludCBkdXBsZXhfbG9jaywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5lZ290aWF0ZWQpCnsKICAgICAgICBp
ZiAoZHVwbGV4X2xvY2spCiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICBpZiAobWlp
X253YXlfcmVzdWx0KG5lZ290aWF0ZWQpICYgKDB4MDA0MCB8IDB4MDEwMCkpCiAgICAgICAgICAg
ICAgICByZXR1cm4gMTsKICAgICAgICByZXR1cm4gMDsKfQojIDExMSAiODEzOXRvby5jIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb21wbGV0aW9uLmgiIDEKIyAxMTIgIjgx
Mzl0b28uYyIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2lvLmgiIDEKIyAxMTMg
IjgxMzl0b28uYyIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIg
MQoKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA4
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDEKIyA5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2FzbS91YWNjZXNzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3ByZWZl
dGNoLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGFnZS5oIiAxCiMgMTEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIgMgojIDM1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2FzbS91YWNjZXNzLmgiCmV4dGVybiBpbnQgX192ZXJpZnlfd3JpdGVfUjIwM2FmYmViKGNvbnN0
IHZvaWQgKiwgdW5zaWduZWQgbG9uZyk7CiMgNjIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNt
L3VhY2Nlc3MuaCIKc3RhdGljIGlubGluZSBpbnQgdmVyaWZ5X2FyZWEoaW50IHR5cGUsIGNvbnN0
IHZvaWQgKiBhZGRyLCB1bnNpZ25lZCBsb25nIHNpemUpCnsKICAgICAgICByZXR1cm4gKCh7IHVu
c2lnbmVkIGxvbmcgZmxhZyxzdW07IGFzbSgiYWRkbCAlMywlMSA7IHNiYmwgJTAsJTA7IGNtcGwg
JTEsJTQ7IHNiYmwgJDAsJTAiIDoiPSZyIiAoZmxhZyksICI9ciIgKHN1bSkgOiIxIiAoYWRkciks
ImciICgoaW50KShzaXplKSksImciIChnZXRfY3VycmVudCgpLT5hZGRyX2xpbWl0LnNlZykpOyBm
bGFnOyB9KSA9PSAwKSA/IDAgOiAtMTQ7Cn0KIyA4MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9h
c20vdWFjY2Vzcy5oIgpzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5CnsKICAgICAgICB1bnNp
Z25lZCBsb25nIGluc24sIGZpeHVwOwp9OwoKCmV4dGVybiB1bnNpZ25lZCBsb25nIHNlYXJjaF9l
eGNlcHRpb25fdGFibGUodW5zaWduZWQgbG9uZyk7CiMgMTA1ICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2FzbS91YWNjZXNzLmgiCmV4dGVybiB2b2lkIF9fZ2V0X3VzZXJfMSh2b2lkKTsKZXh0ZXJu
IHZvaWQgX19nZXRfdXNlcl8yKHZvaWQpOwpleHRlcm4gdm9pZCBfX2dldF91c2VyXzQodm9pZCk7
CiMgMTI3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCmV4dGVybiB2b2lk
IF9fcHV0X3VzZXJfMSh2b2lkKTsKZXh0ZXJuIHZvaWQgX19wdXRfdXNlcl8yKHZvaWQpOwpleHRl
cm4gdm9pZCBfX3B1dF91c2VyXzQodm9pZCk7CmV4dGVybiB2b2lkIF9fcHV0X3VzZXJfOCh2b2lk
KTsKCmV4dGVybiB2b2lkIF9fcHV0X3VzZXJfYmFkKHZvaWQpOwojIDE4OCAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpzdHJ1Y3QgX19sYXJnZV9zdHJ1Y3QgeyB1bnNpZ25l
ZCBsb25nIGJ1ZlsxMDBdOyB9OwojIDIyMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vdWFj
Y2Vzcy5oIgpleHRlcm4gbG9uZyBfX2dldF91c2VyX2JhZCh2b2lkKTsKIyAzMDggIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25n
Cl9fZ2VuZXJpY19jb3B5X2Zyb21fdXNlcl9ub2NoZWNrKHZvaWQgKnRvLCBjb25zdCB2b2lkICpm
cm9tLCB1bnNpZ25lZCBsb25nIG4pCnsKICAgICAgICBkbyB7IGludCBfX2QwLCBfX2QxOyBfX2Fz
bV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIgltb3ZsICUzLCUwXG4iICIxOgly
ZXA7IG1vdnNiXG4iICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJbGVhIDAo
JTMsJTAsNCksJTBcbiIgIjQ6CXB1c2hsICUwXG4iICIJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUl
ZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglwb3BsICUwXG4i
ICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIg
IgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIgIi5wcmV2aW91
cyIgOiAiPSZjIihuKSwgIj0mRCIgKF9fZDApLCAiPSZTIiAoX19kMSkgOiAiciIobiAmIDMpLCAi
MCIobiAvIDQpLCAiMSIodG8pLCAiMiIoZnJvbSkgOiAibWVtb3J5Iik7IH0gd2hpbGUgKDApOwog
ICAgICAgIHJldHVybiBuOwp9CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKX19nZW5lcmlj
X2NvcHlfdG9fdXNlcl9ub2NoZWNrKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1bnNpZ25l
ZCBsb25nIG4pCnsKICAgICAgICBkbyB7IGludCBfX2QwLCBfX2QxOyBfX2FzbV9fIF9fdm9sYXRp
bGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIgltb3ZsICUzLCUwXG4iICIxOglyZXA7IG1vdnNiXG4i
ICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJbGVhIDAoJTMsJTAsNCksJTBc
biIgIglqbXAgMmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxu
IiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiwyYlxuIiAiLnByZXZp
b3VzIiA6ICI9JmMiKG4pLCAiPSZEIiAoX19kMCksICI9JlMiIChfX2QxKSA6ICJyIihuICYgMyks
ICIwIihuIC8gNCksICIxIih0byksICIyIihmcm9tKSA6ICJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7
CiAgICAgICAgcmV0dXJuIG47Cn0KIyA1NDMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Vh
Y2Nlc3MuaCIKdW5zaWduZWQgbG9uZyBfX2dlbmVyaWNfY29weV90b191c2VyX1JkNTIzZmRkMyh2
b2lkICosIGNvbnN0IHZvaWQgKiwgdW5zaWduZWQgbG9uZyk7CnVuc2lnbmVkIGxvbmcgX19nZW5l
cmljX2NvcHlfZnJvbV91c2VyX1IxMTYxNjZhYSh2b2lkICosIGNvbnN0IHZvaWQgKiwgdW5zaWdu
ZWQgbG9uZyk7CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKX19jb25zdGFudF9jb3B5X3Rv
X3VzZXIodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKewogICAg
ICAgIHByZWZldGNoKGZyb20pOwogICAgICAgIGlmICgoKHsgdW5zaWduZWQgbG9uZyBmbGFnLHN1
bTsgYXNtKCJhZGRsICUzLCUxIDsgc2JibCAlMCwlMDsgY21wbCAlMSwlNDsgc2JibCAkMCwlMCIg
OiI9JnIiIChmbGFnKSwgIj1yIiAoc3VtKSA6IjEiICh0byksImciICgoaW50KShuKSksImciIChn
ZXRfY3VycmVudCgpLT5hZGRyX2xpbWl0LnNlZykpOyBmbGFnOyB9KSA9PSAwKSkKICAgICAgICAg
ICAgICAgIGRvIHsgaW50IF9fZDAsIF9fZDE7IHN3aXRjaCAobiAmIDMpIHsgZGVmYXVsdDogX19h
c21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOlxuIiAiLnNlY3Rpb24gLmZp
eHVwLFwiYXhcIlxuIiAiMjoJc2hsICQyLCUwXG4iICIJam1wIDFiXG4iICIucHJldmlvdXNcbiIg
Ii5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDJi
XG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAi
MSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAxOiBf
X2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnNiXG4iICIyOlxu
IiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJc2hsICQyLCUwXG4iICI0OglpbmNsICUw
XG4iICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJc
biIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIgIi5wcmV2
aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwg
IjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDI6IF9fYXNtX18gX192
b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c3dcbiIgIjI6XG4iICIuc2VjdGlv
biAuZml4dXAsXCJheFwiXG4iICIzOglzaGwgJDIsJTBcbiIgIjQ6CWFkZGwgJDIsJTBcbiIgIglq
bXAgMmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5h
bGlnbiA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6
ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8p
LCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMzogX19hc21fXyBfX3ZvbGF0aWxl
X18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3Zzd1xuIiAiMjoJbW92c2JcbiIgIjM6XG4iICIu
c2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICI0OglzaGwgJDIsJTBcbiIgIjU6CWFkZGwgJDIsJTBc
biIgIjY6CWluY2wgJTBcbiIgIglqbXAgM2JcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19l
eF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsNGJcbiIgIgkubG9uZyAx
Yiw1YlxuIiAiCS5sb25nIDJiLDZiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9f
ZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9y
eSIpOyBicmVhazsgfSB9IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4gbjsKfQoKc3RhdGljIGlu
bGluZSB1bnNpZ25lZCBsb25nCl9fY29uc3RhbnRfY29weV9mcm9tX3VzZXIodm9pZCAqdG8sIGNv
bnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKewogICAgICAgIGlmICgoKHsgdW5zaWdu
ZWQgbG9uZyBmbGFnLHN1bTsgYXNtKCJhZGRsICUzLCUxIDsgc2JibCAlMCwlMDsgY21wbCAlMSwl
NDsgc2JibCAkMCwlMCIgOiI9JnIiIChmbGFnKSwgIj1yIiAoc3VtKSA6IjEiIChmcm9tKSwiZyIg
KChpbnQpKG4pKSwiZyIgKGdldF9jdXJyZW50KCktPmFkZHJfbGltaXQuc2VnKSk7IGZsYWc7IH0p
ID09IDApKQogICAgICAgICAgICAgICAgZG8geyBpbnQgX19kMCwgX19kMTsgc3dpdGNoIChuICYg
MykgeyBkZWZhdWx0OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6
XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIyOglwdXNobCAlMFxuIiAiCXB1c2hsICUl
ZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXJlcDsgc3Rvc2xcbiIgIglwb3BsICUlZWF4
XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwlMFxuIiAiCWptcCAxYlxuIiAiLnByZXZpb3VzXG4i
ICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwy
YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDog
IjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMTog
X19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3ZzYlxuIiAiMjpc
biIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CXB1c2hsICUwXG4iICIJcHVzaGwgJSVl
YXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zbFxuIiAiCXN0b3NiXG4iICIJ
cG9wbCAlJWVheFxuIiAiCXBvcGwgJTBcbiIgIglzaGwgJDIsJTBcbiIgIglpbmNsICUwXG4iICIJ
am1wIDJiXG4iICI0OglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglzdG9z
YlxuIiAiCXBvcGwgJSVlYXhcbiIgIglpbmNsICUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNc
biIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBi
LDNiXG4iICIJLmxvbmcgMWIsNGJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19k
MCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5
Iik7IGJyZWFrOyBjYXNlIDI6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxu
IiAiMToJbW92c3dcbiIgIjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglwdXNo
bCAlMFxuIiAiCXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXJlcDsgc3Rv
c2xcbiIgIglzdG9zd1xuIiAiCXBvcGwgJSVlYXhcbiIgIglwb3BsICUwXG4iICIJc2hsICQyLCUw
XG4iICIJYWRkbCAkMiwlMFxuIiAiCWptcCAyYlxuIiAiNDoJcHVzaGwgJSVlYXhcbiIgIgl4b3Js
ICUlZWF4LCUlZWF4XG4iICIJc3Rvc3dcbiIgIglwb3BsICUlZWF4XG4iICIJYWRkbCAkMiwlMFxu
IiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4i
ICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAiCS5sb25nIDFiLDRiXG4iICIucHJldmlv
dXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIy
Iih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAzOiBfX2FzbV9fIF9fdm9s
YXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnN3XG4iICIyOgltb3ZzYlxuIiAiMzpc
biIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjQ6CXB1c2hsICUwXG4iICIJcHVzaGwgJSVl
YXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zbFxuIiAiCXN0b3N3XG4iICIJ
c3Rvc2JcbiIgIglwb3BsICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwlMFxuIiAiCWFk
ZGwgJDMsJTBcbiIgIglqbXAgMmJcbiIgIjU6CXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwl
JWVheFxuIiAiCXN0b3N3XG4iICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4XG4iICIJYWRkbCAkMywl
MFxuIiAiCWptcCAyYlxuIiAiNjoJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4i
ICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4XG4iICIJaW5jbCAlMFxuIiAiCWptcCAzYlxuIiAiLnBy
ZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgku
bG9uZyAwYiw0YlxuIiAiCS5sb25nIDFiLDViXG4iICIJLmxvbmcgMmIsNmJcbiIgIi5wcmV2aW91
cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIi
KHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyB9IH0gd2hpbGUgKDApOwogICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IChfX2J1aWx0
aW5fY29uc3RhbnRfcCgobikpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKCh0bykp
LCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgobikpKSA6IF9fY29uc3RhbnRf
Y19tZW1zZXQoKCh0bykpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgobikp
KSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKG4pKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgodG8p
KSksKCgoMCkpKSwoKChuKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKCh0bykpLCgoMCkpLCgobikp
KSkpOwogICAgICAgIHJldHVybiBuOwp9CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKX19j
b25zdGFudF9jb3B5X3RvX3VzZXJfbm9jaGVjayh2b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwg
dW5zaWduZWQgbG9uZyBuKQp7CiAgICAgICAgZG8geyBpbnQgX19kMCwgX19kMTsgc3dpdGNoIChu
ICYgMykgeyBkZWZhdWx0OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIg
IjE6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIyOglzaGwgJDIsJTBcbiIgIglqbXAg
MWJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGln
biA0XG4iICIJLmxvbmcgMGIsMmJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19k
MCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5
Iik7IGJyZWFrOyBjYXNlIDE6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxu
IiAiMToJbW92c2JcbiIgIjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglzaGwg
JDIsJTBcbiIgIjQ6CWluY2wgJTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rp
b24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgku
bG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIg
KF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7
IGNhc2UgMjogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3Zz
d1xuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CXNobCAkMiwlMFxuIiAi
NDoJYWRkbCAkMiwlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4
X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAiCS5sb25nIDFi
LDRiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkg
OiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAz
OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnN3XG4iICIy
Ogltb3ZzYlxuIiAiMzpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjQ6CXNobCAkMiwl
MFxuIiAiNToJYWRkbCAkMiwlMFxuIiAiNjoJaW5jbCAlMFxuIiAiCWptcCAzYlxuIiAiLnByZXZp
b3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9u
ZyAwYiw0YlxuIiAiCS5sb25nIDFiLDViXG4iICIJLmxvbmcgMmIsNmJcbiIgIi5wcmV2aW91cyIg
OiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRv
KSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyB9IH0gd2hpbGUgKDApOwogICAgICAgIHJl
dHVybiBuOwp9CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKX19jb25zdGFudF9jb3B5X2Zy
b21fdXNlcl9ub2NoZWNrKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1bnNpZ25lZCBsb25n
IG4pCnsKICAgICAgICBkbyB7IGludCBfX2QwLCBfX2QxOyBzd2l0Y2ggKG4gJiAzKSB7IGRlZmF1
bHQ6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMTpcbiIgIi5zZWN0
aW9uIC5maXh1cCxcImF4XCJcbiIgIjI6CXB1c2hsICUwXG4iICIJcHVzaGwgJSVlYXhcbiIgIgl4
b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zbFxuIiAiCXBvcGwgJSVlYXhcbiIgIglwb3Bs
ICUwXG4iICIJc2hsICQyLCUwXG4iICIJam1wIDFiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9u
IF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDJiXG4iICIucHJl
dmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSks
ICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAxOiBfX2FzbV9fIF9f
dm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnNiXG4iICIyOlxuIiAiLnNlY3Rp
b24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJcHVzaGwgJTBcbiIgIglwdXNobCAlJWVheFxuIiAiCXhv
cmwgJSVlYXgsJSVlYXhcbiIgIglyZXA7IHN0b3NsXG4iICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4
XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwlMFxuIiAiCWluY2wgJTBcbiIgIglqbXAgMmJcbiIg
IjQ6CXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXN0b3NiXG4iICIJcG9w
bCAlJWVheFxuIiAiCWluY2wgJTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rp
b24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgku
bG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIg
KF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7
IGNhc2UgMjogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3Zz
d1xuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CXB1c2hsICUwXG4iICIJ
cHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zbFxuIiAiCXN0
b3N3XG4iICIJcG9wbCAlJWVheFxuIiAiCXBvcGwgJTBcbiIgIglzaGwgJDIsJTBcbiIgIglhZGRs
ICQyLCUwXG4iICIJam1wIDJiXG4iICI0OglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVl
YXhcbiIgIglzdG9zd1xuIiAiCXBvcGwgJSVlYXhcbiIgIglhZGRsICQyLCUwXG4iICIJam1wIDJi
XG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24g
NFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIgIi5wcmV2aW91cyIgOiAiPWMi
KG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAi
KG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDM6IF9fYXNtX18gX192b2xhdGlsZV9fKCAi
MDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c3dcbiIgIjI6CW1vdnNiXG4iICIzOlxuIiAiLnNlY3Rp
b24gLmZpeHVwLFwiYXhcIlxuIiAiNDoJcHVzaGwgJTBcbiIgIglwdXNobCAlJWVheFxuIiAiCXhv
cmwgJSVlYXgsJSVlYXhcbiIgIglyZXA7IHN0b3NsXG4iICIJc3Rvc3dcbiIgIglzdG9zYlxuIiAi
CXBvcGwgJSVlYXhcbiIgIglwb3BsICUwXG4iICIJc2hsICQyLCUwXG4iICIJYWRkbCAkMywlMFxu
IiAiCWptcCAyYlxuIiAiNToJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJ
c3Rvc3dcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglhZGRsICQzLCUwXG4iICIJam1w
IDJiXG4iICI2OglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglzdG9zYlxu
IiAiCXBvcGwgJSVlYXhcbiIgIglpbmNsICUwXG4iICIJam1wIDNiXG4iICIucHJldmlvdXNcbiIg
Ii5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDRi
XG4iICIJLmxvbmcgMWIsNWJcbiIgIgkubG9uZyAyYiw2YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIo
biksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIo
bi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0gfSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIG47
Cn0KIyA1OTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIKbG9uZyBzdHJu
Y3B5X2Zyb21fdXNlcl9SMjQ0MjhiZTUoY2hhciAqZHN0LCBjb25zdCBjaGFyICpzcmMsIGxvbmcg
Y291bnQpOwpsb25nIF9fc3RybmNweV9mcm9tX3VzZXJfUmMwMDNjNjM3KGNoYXIgKmRzdCwgY29u
c3QgY2hhciAqc3JjLCBsb25nIGNvdW50KTsKCmxvbmcgc3Rybmxlbl91c2VyX1JiY2MzMDhiYihj
b25zdCBjaGFyICpzdHIsIGxvbmcgbik7CnVuc2lnbmVkIGxvbmcgY2xlYXJfdXNlcl9SN2FlYzkw
ODkodm9pZCAqbWVtLCB1bnNpZ25lZCBsb25nIGxlbik7CnVuc2lnbmVkIGxvbmcgX19jbGVhcl91
c2VyX1JmMzM0MTI2OCh2b2lkICptZW0sIHVuc2lnbmVkIGxvbmcgbGVuKTsKIyAxMTQgIjgxMzl0
b28uYyIgMgojIDE1MiAiODEzOXRvby5jIgpzdGF0aWMgaW50IG1lZGlhWzhdID0gey0xLCAtMSwg
LTEsIC0xLCAtMSwgLTEsIC0xLCAtMX07CnN0YXRpYyBpbnQgZnVsbF9kdXBsZXhbOF0gPSB7LTEs
IC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xfTsKCgpzdGF0aWMgaW50IG1heF9pbnRlcnJ1cHRf
d29yayA9IDIwOwoKCgpzdGF0aWMgaW50IG11bHRpY2FzdF9maWx0ZXJfbGltaXQgPSAzMjsKIyAx
OTQgIjgxMzl0b28uYyIKZW51bSB7CiAgICAgICAgSEFTX01JSV9YQ1ZSID0gMHgwMTAwMDAsCiAg
ICAgICAgSEFTX0NISVBfWENWUiA9IDB4MDIwMDAwLAogICAgICAgIEhBU19MTktfQ0hORyA9IDB4
MDQwMDAwLAp9OwoKCgoKCgoKdHlwZWRlZiBlbnVtIHsKICAgICAgICBSVEw4MTM5ID0gMCwKICAg
ICAgICBSVEw4MTM5X0NCLAogICAgICAgIFNNQzEyMTFUWCwKCiAgICAgICAgREVMVEE4MTM5LAog
ICAgICAgIEFERFRST044MTM5LAogICAgICAgIERGRTUzOFRYLAogICAgICAgIERGRTY5MFRYRCwK
ICAgICAgICBSVEw4MTI5LAp9IGJvYXJkX3Q7CgoKCnN0YXRpYyBzdHJ1Y3QgewogICAgICAgIGNv
bnN0IGNoYXIgKm5hbWU7CiAgICAgICAgdTMyIGh3X2ZsYWdzOwp9IGJvYXJkX2luZm9bXSA9IHsK
ICAgICAgICB7ICJSZWFsVGVrIFJUTDgxMzkgRmFzdCBFdGhlcm5ldCIsIEhBU19DSElQX1hDVlJ8
SEFTX0xOS19DSE5HIH0sCiAgICAgICAgeyAiUmVhbFRlayBSVEw4MTM5QiBQQ0kvQ2FyZEJ1cyIs
IEhBU19DSElQX1hDVlJ8SEFTX0xOS19DSE5HIH0sCiAgICAgICAgeyAiU01DMTIxMVRYIEVaQ2Fy
ZCAxMC8xMDAgKFJlYWxUZWsgUlRMODEzOSkiLCBIQVNfQ0hJUF9YQ1ZSfEhBU19MTktfQ0hORyB9
LAoKICAgICAgICB7ICJEZWx0YSBFbGVjdHJvbmljcyA4MTM5IDEwLzEwMEJhc2VUWCIsIEhBU19D
SElQX1hDVlJ8SEFTX0xOS19DSE5HIH0sCiAgICAgICAgeyAiQWRkdHJvbiBUZWNobm9sZ3kgODEz
OSAxMC8xMDBCYXNlVFgiLCBIQVNfQ0hJUF9YQ1ZSfEhBU19MTktfQ0hORyB9LAogICAgICAgIHsg
IkQtTGluayBERkUtNTM4VFggKFJlYWxUZWsgUlRMODEzOSkiLCBIQVNfQ0hJUF9YQ1ZSfEhBU19M
TktfQ0hORyB9LAogICAgICAgIHsgIkQtTGluayBERkUtNjkwVFhEIChSZWFsVGVrIFJUTDgxMzkp
IiwgSEFTX0NISVBfWENWUnxIQVNfTE5LX0NITkcgfSwKICAgICAgICB7ICJSZWFsVGVrIFJUTDgx
MjkiLCBIQVNfTUlJX1hDVlIgfSwKfTsKCgpzdGF0aWMgc3RydWN0IHBjaV9kZXZpY2VfaWQgcnRs
ODEzOV9wY2lfdGJsW10gPSB7CiAgICAgICAgezB4MTBlYywgMHg4MTM5LCAofjApLCAofjApLCAw
LCAwLCBSVEw4MTM5IH0sCiAgICAgICAgezB4MTBlYywgMHg4MTM4LCAofjApLCAofjApLCAwLCAw
LCBSVEw4MTM5X0NCIH0sCiAgICAgICAgezB4MTExMywgMHgxMjExLCAofjApLCAofjApLCAwLCAw
LCBTTUMxMjExVFggfSwKCiAgICAgICAgezB4MTUwMCwgMHgxMzYwLCAofjApLCAofjApLCAwLCAw
LCBERUxUQTgxMzkgfSwKICAgICAgICB7MHg0MDMzLCAweDEzNjAsICh+MCksICh+MCksIDAsIDAs
IEFERFRST044MTM5IH0sCiAgICAgICAgezB4MTE4NiwgMHgxMzAwLCAofjApLCAofjApLCAwLCAw
LCBERkU1MzhUWCB9LAogICAgICAgIHsweDExODYsIDB4MTM0MCwgKH4wKSwgKH4wKSwgMCwgMCwg
REZFNjkwVFhEIH0sCiMgMjU0ICI4MTM5dG9vLmMiCiAgICAgICAgeyh+MCksIDB4ODEzOSwgMHgx
MGVjLCAweDgxMzksIDAsIDAsIFJUTDgxMzkgfSwKICAgICAgICB7KH4wKSwgMHg4MTM5LCAweDEx
ODYsIDB4MTMwMCwgMCwgMCwgREZFNTM4VFggfSwKCiAgICAgICAgezAsfQp9OwpzdGF0aWMgY29u
c3QgdW5zaWduZWQgbG9uZyBfX21vZHVsZV9wY2lfZGV2aWNlX3NpemUgX19hdHRyaWJ1dGVfXyAo
KHVudXNlZCkpID0gc2l6ZW9mKHN0cnVjdCBwY2lfZGV2aWNlX2lkKTsgc3RhdGljIGNvbnN0IHN0
cnVjdCBwY2lfZGV2aWNlX2lkICogX19tb2R1bGVfcGNpX2RldmljZV90YWJsZSBfX2F0dHJpYnV0
ZV9fICgodW51c2VkKSkgPSBydGw4MTM5X3BjaV90Ymw7CgoKCgoKZW51bSBSVEw4MTM5X3JlZ2lz
dGVycyB7CiAgICAgICAgTUFDMCA9IDAsCiAgICAgICAgTUFSMCA9IDgsCiAgICAgICAgVHhTdGF0
dXMwID0gMHgxMCwKICAgICAgICBUeEFkZHIwID0gMHgyMCwKICAgICAgICBSeEJ1ZiA9IDB4MzAs
CiAgICAgICAgQ2hpcENtZCA9IDB4MzcsCiAgICAgICAgUnhCdWZQdHIgPSAweDM4LAogICAgICAg
IFJ4QnVmQWRkciA9IDB4M0EsCiAgICAgICAgSW50ck1hc2sgPSAweDNDLAogICAgICAgIEludHJT
dGF0dXMgPSAweDNFLAogICAgICAgIFR4Q29uZmlnID0gMHg0MCwKICAgICAgICBDaGlwVmVyc2lv
biA9IDB4NDMsCiAgICAgICAgUnhDb25maWcgPSAweDQ0LAogICAgICAgIFRpbWVyID0gMHg0OCwK
ICAgICAgICBSeE1pc3NlZCA9IDB4NEMsCiAgICAgICAgQ2ZnOTM0NiA9IDB4NTAsCiAgICAgICAg
Q29uZmlnMCA9IDB4NTEsCiAgICAgICAgQ29uZmlnMSA9IDB4NTIsCiAgICAgICAgRmxhc2hSZWcg
PSAweDU0LAogICAgICAgIE1lZGlhU3RhdHVzID0gMHg1OCwKICAgICAgICBDb25maWczID0gMHg1
OSwKICAgICAgICBDb25maWc0ID0gMHg1QSwKICAgICAgICBIbHRDbGsgPSAweDVCLAogICAgICAg
IE11bHRpSW50ciA9IDB4NUMsCiAgICAgICAgVHhTdW1tYXJ5ID0gMHg2MCwKICAgICAgICBCYXNp
Y01vZGVDdHJsID0gMHg2MiwKICAgICAgICBCYXNpY01vZGVTdGF0dXMgPSAweDY0LAogICAgICAg
IE5XYXlBZHZlcnQgPSAweDY2LAogICAgICAgIE5XYXlMUEFSID0gMHg2OCwKICAgICAgICBOV2F5
RXhwYW5zaW9uID0gMHg2QSwKCiAgICAgICAgRklGT1RNUyA9IDB4NzAsCiAgICAgICAgQ1NDUiA9
IDB4NzQsCiAgICAgICAgUEFSQTc4ID0gMHg3OCwKICAgICAgICBQQVJBN2MgPSAweDdjLAogICAg
ICAgIENvbmZpZzUgPSAweEQ4LAp9OwoKZW51bSBDbGVhckJpdE1hc2tzIHsKICAgICAgICBNdWx0
aUludHJDbGVhciA9IDB4RjAwMCwKICAgICAgICBDaGlwQ21kQ2xlYXIgPSAweEUyLAogICAgICAg
IENvbmZpZzFDbGVhciA9ICgxPDw3KXwoMTw8Nil8KDE8PDMpfCgxPDwyKXwoMTw8MSksCn07Cgpl
bnVtIENoaXBDbWRCaXRzIHsKICAgICAgICBDbWRSZXNldCA9IDB4MTAsCiAgICAgICAgQ21kUnhF
bmIgPSAweDA4LAogICAgICAgIENtZFR4RW5iID0gMHgwNCwKICAgICAgICBSeEJ1ZkVtcHR5ID0g
MHgwMSwKfTsKCgplbnVtIEludHJTdGF0dXNCaXRzIHsKICAgICAgICBQQ0lFcnIgPSAweDgwMDAs
CiAgICAgICAgUENTVGltZW91dCA9IDB4NDAwMCwKICAgICAgICBSeEZJRk9PdmVyID0gMHg0MCwK
ICAgICAgICBSeFVuZGVycnVuID0gMHgyMCwKICAgICAgICBSeE92ZXJmbG93ID0gMHgxMCwKICAg
ICAgICBUeEVyciA9IDB4MDgsCiAgICAgICAgVHhPSyA9IDB4MDQsCiAgICAgICAgUnhFcnIgPSAw
eDAyLAogICAgICAgIFJ4T0sgPSAweDAxLAoKICAgICAgICBSeEFja0JpdHMgPSBSeEZJRk9PdmVy
IHwgUnhPdmVyZmxvdyB8IFJ4T0ssCn07CgplbnVtIFR4U3RhdHVzQml0cyB7CiAgICAgICAgVHhI
b3N0T3ducyA9IDB4MjAwMCwKICAgICAgICBUeFVuZGVycnVuID0gMHg0MDAwLAogICAgICAgIFR4
U3RhdE9LID0gMHg4MDAwLAogICAgICAgIFR4T3V0T2ZXaW5kb3cgPSAweDIwMDAwMDAwLAogICAg
ICAgIFR4QWJvcnRlZCA9IDB4NDAwMDAwMDAsCiAgICAgICAgVHhDYXJyaWVyTG9zdCA9IDB4ODAw
MDAwMDAsCn07CmVudW0gUnhTdGF0dXNCaXRzIHsKICAgICAgICBSeE11bHRpY2FzdCA9IDB4ODAw
MCwKICAgICAgICBSeFBoeXNpY2FsID0gMHg0MDAwLAogICAgICAgIFJ4QnJvYWRjYXN0ID0gMHgy
MDAwLAogICAgICAgIFJ4QmFkU3ltYm9sID0gMHgwMDIwLAogICAgICAgIFJ4UnVudCA9IDB4MDAx
MCwKICAgICAgICBSeFRvb0xvbmcgPSAweDAwMDgsCiAgICAgICAgUnhDUkNFcnIgPSAweDAwMDQs
CiAgICAgICAgUnhCYWRBbGlnbiA9IDB4MDAwMiwKICAgICAgICBSeFN0YXR1c09LID0gMHgwMDAx
LAp9OwoKCmVudW0gcnhfbW9kZV9iaXRzIHsKICAgICAgICBBY2NlcHRFcnIgPSAweDIwLAogICAg
ICAgIEFjY2VwdFJ1bnQgPSAweDEwLAogICAgICAgIEFjY2VwdEJyb2FkY2FzdCA9IDB4MDgsCiAg
ICAgICAgQWNjZXB0TXVsdGljYXN0ID0gMHgwNCwKICAgICAgICBBY2NlcHRNeVBoeXMgPSAweDAy
LAogICAgICAgIEFjY2VwdEFsbFBoeXMgPSAweDAxLAp9OwoKCmVudW0gdHhfY29uZmlnX2JpdHMg
ewogICAgICAgIFR4SUZHMSA9ICgxIDw8IDI1KSwKICAgICAgICBUeElGRzAgPSAoMSA8PCAyNCks
CiAgICAgICAgVHhMb29wQmFjayA9ICgxIDw8IDE4KSB8ICgxIDw8IDE3KSwKICAgICAgICBUeENS
QyA9ICgxIDw8IDE2KSwKICAgICAgICBUeENsZWFyQWJ0ID0gKDEgPDwgMCksCiAgICAgICAgVHhE
TUFTaGlmdCA9IDgsCiAgICAgICAgVHhSZXRyeVNoaWZ0ID0gNCwKCiAgICAgICAgVHhWZXJzaW9u
TWFzayA9IDB4N0M4MDAwMDAsCn07CgoKZW51bSBDb25maWcxQml0cyB7CiAgICAgICAgQ2ZnMV9Q
TV9FbmFibGUgPSAweDAxLAogICAgICAgIENmZzFfVlBEX0VuYWJsZSA9IDB4MDIsCiAgICAgICAg
Q2ZnMV9QSU8gPSAweDA0LAogICAgICAgIENmZzFfTU1JTyA9IDB4MDgsCiAgICAgICAgTFdBS0Ug
PSAweDEwLAogICAgICAgIENmZzFfRHJpdmVyX0xvYWQgPSAweDIwLAogICAgICAgIENmZzFfTEVE
MCA9IDB4NDAsCiAgICAgICAgQ2ZnMV9MRUQxID0gMHg4MCwKICAgICAgICBTTEVFUCA9ICgxIDw8
IDEpLAogICAgICAgIFBXUkROID0gKDEgPDwgMCksCn07CgoKZW51bSBDb25maWczQml0cyB7CiAg
ICAgICAgQ2ZnM19GQnRCRW4gPSAoMSA8PCAwKSwKICAgICAgICBDZmczX0Z1bmNSZWdFbiA9ICgx
IDw8IDEpLAogICAgICAgIENmZzNfQ0xLUlVOX0VuID0gKDEgPDwgMiksCiAgICAgICAgQ2ZnM19D
YXJkQl9FbiA9ICgxIDw8IDMpLAogICAgICAgIENmZzNfTGlua1VwID0gKDEgPDwgNCksCiAgICAg
ICAgQ2ZnM19NYWdpYyA9ICgxIDw8IDUpLAogICAgICAgIENmZzNfUEFSTV9FbiA9ICgxIDw8IDYp
LAogICAgICAgIENmZzNfR05UU2VsID0gKDEgPDwgNyksCn07CgoKZW51bSBDb25maWc0Qml0cyB7
CiAgICAgICAgTFdQVE4gPSAoMSA8PCAyKSwKfTsKCgplbnVtIENvbmZpZzVCaXRzIHsKICAgICAg
ICBDZmc1X1BNRV9TVFMgPSAoMSA8PCAwKSwKICAgICAgICBDZmc1X0xBTldha2UgPSAoMSA8PCAx
KSwKICAgICAgICBDZmc1X0xEUFMgPSAoMSA8PCAyKSwKICAgICAgICBDZmc1X0ZJRk9BZGRyUHRy
ID0gKDEgPDwgMyksCiAgICAgICAgQ2ZnNV9VV0YgPSAoMSA8PCA0KSwKICAgICAgICBDZmc1X01X
RiA9ICgxIDw8IDUpLAogICAgICAgIENmZzVfQldGID0gKDEgPDwgNiksCn07CgplbnVtIFJ4Q29u
ZmlnQml0cyB7CgogICAgICAgIFJ4Q2ZnRklGT1NoaWZ0ID0gMTMsCiAgICAgICAgUnhDZmdGSUZP
Tm9uZSA9ICg3IDw8IFJ4Q2ZnRklGT1NoaWZ0KSwKCgogICAgICAgIFJ4Q2ZnRE1BU2hpZnQgPSA4
LAogICAgICAgIFJ4Q2ZnRE1BVW5saW1pdGVkID0gKDcgPDwgUnhDZmdETUFTaGlmdCksCgoKICAg
ICAgICBSeENmZ1JjdjhLID0gMCwKICAgICAgICBSeENmZ1JjdjE2SyA9ICgxIDw8IDExKSwKICAg
ICAgICBSeENmZ1JjdjMySyA9ICgxIDw8IDEyKSwKICAgICAgICBSeENmZ1JjdjY0SyA9ICgxIDw8
IDExKSB8ICgxIDw8IDEyKSwKCgogICAgICAgIFJ4Tm9XcmFwID0gKDEgPDwgNyksCn07CgoKCgpl
bnVtIENTQ1JCaXRzIHsKICAgICAgICBDU0NSX0xpbmtPS0JpdCA9IDB4MDQwMCwKICAgICAgICBD
U0NSX0xpbmtDaGFuZ2VCaXQgPSAweDA4MDAsCiAgICAgICAgQ1NDUl9MaW5rU3RhdHVzQml0cyA9
IDB4MGYwMDAsCiAgICAgICAgQ1NDUl9MaW5rRG93bk9mZkNtZCA9IDB4MDAzYzAsCiAgICAgICAg
Q1NDUl9MaW5rRG93bkNtZCA9IDB4MGYzYzAsCn07CgoKZW51bSBDZmc5MzQ2Qml0cyB7CiAgICAg
ICAgQ2ZnOTM0Nl9Mb2NrID0gMHgwMCwKICAgICAgICBDZmc5MzQ2X1VubG9jayA9IDB4QzAsCn07
CgoKCgoKc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgcGFyYW1bNF1bNF0gPSB7CiAgICAgICAg
ezB4Y2IzOWRlNDMsIDB4Y2IzOWNlNDMsIDB4ZmIzOGRlMDMsIDB4Y2IzOGRlNDN9LAogICAgICAg
IHsweGNiMzlkZTQzLCAweGNiMzljZTQzLCAweGNiMzljZTgzLCAweGNiMzljZTgzfSwKICAgICAg
ICB7MHhjYjM5ZGU0MywgMHhjYjM5Y2U0MywgMHhjYjM5Y2U4MywgMHhjYjM5Y2U4M30sCiAgICAg
ICAgezB4YmIzOWRlNDMsIDB4YmIzOWNlNDMsIDB4YmIzOWNlODMsIDB4YmIzOWNlODN9Cn07Cgp0
eXBlZGVmIGVudW0gewogICAgICAgIENIXzgxMzkgPSAwLAogICAgICAgIENIXzgxMzlfSywKICAg
ICAgICBDSF84MTM5QSwKICAgICAgICBDSF84MTM5QiwKICAgICAgICBDSF84MTMwLAogICAgICAg
IENIXzgxMzlDLAp9IGNoaXBfdDsKCmVudW0gY2hpcF9mbGFncyB7CiAgICAgICAgSGFzSGx0Q2xr
ID0gKDEgPDwgMCksCiAgICAgICAgSGFzTFdha2UgPSAoMSA8PCAxKSwKfTsKCgoKY29uc3Qgc3Rh
dGljIHN0cnVjdCB7CiAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgICB1OCB2ZXJzaW9u
OwogICAgICAgIHUzMiBSeENvbmZpZ01hc2s7CiAgICAgICAgdTMyIGZsYWdzOwp9IHJ0bF9jaGlw
X2luZm9bXSA9IHsKICAgICAgICB7ICJSVEwtODEzOSIsCiAgICAgICAgICAweDQwLAogICAgICAg
ICAgMHhmMGZlMDA0MCwKICAgICAgICAgIEhhc0hsdENsaywKICAgICAgICB9LAoKICAgICAgICB7
ICJSVEwtODEzOSByZXYgSyIsCiAgICAgICAgICAweDYwLAogICAgICAgICAgMHhmMGZlMDA0MCwK
ICAgICAgICAgIEhhc0hsdENsaywKICAgICAgICB9LAoKICAgICAgICB7ICJSVEwtODEzOUEiLAog
ICAgICAgICAgMHg3MCwKICAgICAgICAgIDB4ZjBmZTAwNDAsCiAgICAgICAgICBIYXNIbHRDbGss
CiAgICAgICAgfSwKCiAgICAgICAgeyAiUlRMLTgxMzlCIiwKICAgICAgICAgIDB4NzgsCiAgICAg
ICAgICAweGYwZmMwMDQwLAogICAgICAgICAgSGFzTFdha2UsCiAgICAgICAgfSwKCiAgICAgICAg
eyAiUlRMLTgxMzAiLAogICAgICAgICAgMHg3QywKICAgICAgICAgIDB4ZjBmZTAwNDAsCiAgICAg
ICAgICBIYXNMV2FrZSwKICAgICAgICB9LAoKICAgICAgICB7ICJSVEwtODEzOUMiLAogICAgICAg
ICAgMHg3NCwKICAgICAgICAgIDB4ZjBmYzAwNDAsCiAgICAgICAgICBIYXNMV2FrZSwKICAgICAg
ICB9LAoKfTsKCnN0cnVjdCBydGxfZXh0cmFfc3RhdHMgewogICAgICAgIHVuc2lnbmVkIGxvbmcg
ZWFybHlfcng7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0eF9idWZfbWFwcGVkOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgdHhfdGltZW91dHM7Cn07CgpzdHJ1Y3QgcnRsODEzOV9wcml2YXRlIHsKICAg
ICAgICB2b2lkICptbWlvX2FkZHI7CiAgICAgICAgaW50IGRydl9mbGFnczsKICAgICAgICBzdHJ1
Y3QgcGNpX2RldiAqcGNpX2RldjsKICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZV9zdGF0cyBzdGF0
czsKICAgICAgICB1bnNpZ25lZCBjaGFyICpyeF9yaW5nOwogICAgICAgIHVuc2lnbmVkIGludCBj
dXJfcng7CiAgICAgICAgdW5zaWduZWQgaW50IHR4X2ZsYWc7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBjdXJfdHg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkaXJ0eV90eDsKICAgICAgICB1bnNpZ25l
ZCBjaGFyICp0eF9idWZbNF07CiAgICAgICAgdW5zaWduZWQgY2hhciAqdHhfYnVmczsKICAgICAg
ICBkbWFfYWRkcl90IHJ4X3JpbmdfZG1hOwogICAgICAgIGRtYV9hZGRyX3QgdHhfYnVmc19kbWE7
CiAgICAgICAgc2lnbmVkIGNoYXIgcGh5c1s0XTsKICAgICAgICBjaGFyIHR3aXN0aWUsIHR3aXN0
X3JvdywgdHdpc3RfY29sOwogICAgICAgIHVuc2lnbmVkIGludCBmdWxsX2R1cGxleDoxOwogICAg
ICAgIHVuc2lnbmVkIGludCBkdXBsZXhfbG9jazoxOwogICAgICAgIHVuc2lnbmVkIGludCBkZWZh
dWx0X3BvcnQ6NDsKICAgICAgICB1bnNpZ25lZCBpbnQgbWVkaWEyOjQ7CiAgICAgICAgdW5zaWdu
ZWQgaW50IG1lZGlhbG9jazoxOwogICAgICAgIHVuc2lnbmVkIGludCBtZWRpYXNlbnNlOjE7CiAg
ICAgICAgc3BpbmxvY2tfdCBsb2NrOwogICAgICAgIGNoaXBfdCBjaGlwc2V0OwogICAgICAgIHBp
ZF90IHRocl9waWQ7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgdGhyX3dhaXQ7CiAgICAgICAg
c3RydWN0IGNvbXBsZXRpb24gdGhyX2V4aXRlZDsKICAgICAgICB1MzIgcnhfY29uZmlnOwogICAg
ICAgIHN0cnVjdCBydGxfZXh0cmFfc3RhdHMgeHN0YXRzOwogICAgICAgIGludCB0aW1lX3RvX2Rp
ZTsKfTsKCmNvbnN0IGNoYXIgX19tb2R1bGVfYXV0aG9yW10gX19hdHRyaWJ1dGVfXygoc2VjdGlv
bigiLm1vZGluZm8iKSkpID0gImF1dGhvcj0iICJKZWZmIEdhcnppayA8amdhcnppa0BtYW5kcmFr
ZXNvZnQuY29tPiI7CmNvbnN0IGNoYXIgX19tb2R1bGVfZGVzY3JpcHRpb25bXSBfX2F0dHJpYnV0
ZV9fKChzZWN0aW9uKCIubW9kaW5mbyIpKSkgPSAiZGVzY3JpcHRpb249IiAiUmVhbFRlayBSVEwt
ODEzOSBGYXN0IEV0aGVybmV0IGRyaXZlciI7CnN0YXRpYyBjb25zdCBjaGFyIF9fbW9kdWxlX2xp
Y2Vuc2VbXSBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIubW9kaW5mbyIpKSkgPSAibGljZW5zZT0i
ICJHUEwiOwoKY29uc3QgY2hhciBfX21vZHVsZV9wYXJtX211bHRpY2FzdF9maWx0ZXJfbGltaXRb
XSBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIubW9kaW5mbyIpKSkgPSAicGFybV8iICJtdWx0aWNh
c3RfZmlsdGVyX2xpbWl0IiAiPSIgImkiOwpjb25zdCBjaGFyIF9fbW9kdWxlX3Bhcm1fbWF4X2lu
dGVycnVwdF93b3JrW10gX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLm1vZGluZm8iKSkpID0gInBh
cm1fIiAibWF4X2ludGVycnVwdF93b3JrIiAiPSIgImkiOwpjb25zdCBjaGFyIF9fbW9kdWxlX3Bh
cm1fbWVkaWFbXSBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIubW9kaW5mbyIpKSkgPSAicGFybV8i
ICJtZWRpYSIgIj0iICIxLSIgIjgiICJpIjsKY29uc3QgY2hhciBfX21vZHVsZV9wYXJtX2Z1bGxf
ZHVwbGV4W10gX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLm1vZGluZm8iKSkpID0gInBhcm1fIiAi
ZnVsbF9kdXBsZXgiICI9IiAiMS0iICI4IiAiaSI7CmNvbnN0IGNoYXIgX19tb2R1bGVfcGFybV9k
ZXNjX211bHRpY2FzdF9maWx0ZXJfbGltaXRbXSBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIubW9k
aW5mbyIpKSkgPSAicGFybV9kZXNjXyIgIm11bHRpY2FzdF9maWx0ZXJfbGltaXQiICI9IiAiODEz
OXRvbyBtYXhpbXVtIG51bWJlciBvZiBmaWx0ZXJlZCBtdWx0aWNhc3QgYWRkcmVzc2VzIjsKY29u
c3QgY2hhciBfX21vZHVsZV9wYXJtX2Rlc2NfbWF4X2ludGVycnVwdF93b3JrW10gX19hdHRyaWJ1
dGVfXygoc2VjdGlvbigiLm1vZGluZm8iKSkpID0gInBhcm1fZGVzY18iICJtYXhfaW50ZXJydXB0
X3dvcmsiICI9IiAiODEzOXRvbyBtYXhpbXVtIGV2ZW50cyBoYW5kbGVkIHBlciBpbnRlcnJ1cHQi
Owpjb25zdCBjaGFyIF9fbW9kdWxlX3Bhcm1fZGVzY19tZWRpYVtdIF9fYXR0cmlidXRlX18oKHNl
Y3Rpb24oIi5tb2RpbmZvIikpKSA9ICJwYXJtX2Rlc2NfIiAibWVkaWEiICI9IiAiODEzOXRvbzog
Qml0cyA0Kzk6IGZvcmNlIGZ1bGwgZHVwbGV4LCBiaXQgNTogMTAwTWJwcyI7CmNvbnN0IGNoYXIg
X19tb2R1bGVfcGFybV9kZXNjX2Z1bGxfZHVwbGV4W10gX19hdHRyaWJ1dGVfXygoc2VjdGlvbigi
Lm1vZGluZm8iKSkpID0gInBhcm1fZGVzY18iICJmdWxsX2R1cGxleCIgIj0iICI4MTM5dG9vOiBG
b3JjZSBmdWxsIGR1cGxleCBmb3IgYm9hcmQocykgKDEpIjsKCnN0YXRpYyBpbnQgcmVhZF9lZXBy
b20gKHZvaWQgKmlvYWRkciwgaW50IGxvY2F0aW9uLCBpbnQgYWRkcl9sZW4pOwpzdGF0aWMgaW50
IHJ0bDgxMzlfb3BlbiAoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CnN0YXRpYyBpbnQgbWRpb19y
ZWFkIChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jYXRpb24pOwpz
dGF0aWMgdm9pZCBtZGlvX3dyaXRlIChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgcGh5X2lk
LCBpbnQgbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIGludCB2YWwpOwpzdGF0aWMg
aW50IHJ0bDgxMzlfdGhyZWFkICh2b2lkICpkYXRhKTsKc3RhdGljIHZvaWQgcnRsODEzOV90eF90
aW1lb3V0IChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKc3RhdGljIHZvaWQgcnRsODEzOV9pbml0
X3JpbmcgKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpzdGF0aWMgaW50IHJ0bDgxMzlfc3RhcnRf
eG1pdCAoc3RydWN0IHNrX2J1ZmYgKnNrYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpzdGF0aWMgdm9pZCBydGw4MTM5X2ludGVycnVwdCAo
aW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOwpzdGF0aWMgaW50IHJ0bDgxMzlfY2xvc2UgKHN0cnVj
dCBuZXRfZGV2aWNlICpkZXYpOwpzdGF0aWMgaW50IG5ldGRldl9pb2N0bCAoc3RydWN0IG5ldF9k
ZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICpycSwgaW50IGNtZCk7CnN0YXRpYyBzdHJ1Y3QgbmV0
X2RldmljZV9zdGF0cyAqcnRsODEzOV9nZXRfc3RhdHMgKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYp
OwpzdGF0aWMgaW5saW5lIHUzMiBldGhlcl9jcmMgKGludCBsZW5ndGgsIHVuc2lnbmVkIGNoYXIg
KmRhdGEpOwpzdGF0aWMgdm9pZCBydGw4MTM5X3NldF9yeF9tb2RlIChzdHJ1Y3QgbmV0X2Rldmlj
ZSAqZGV2KTsKc3RhdGljIHZvaWQgX19zZXRfcnhfbW9kZSAoc3RydWN0IG5ldF9kZXZpY2UgKmRl
dik7CnN0YXRpYyB2b2lkIHJ0bDgxMzlfaHdfc3RhcnQgKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYp
OwojIDY1MyAiODEzOXRvby5jIgpzdGF0aWMgY29uc3QgdTE2IHJ0bDgxMzlfaW50cl9tYXNrID0K
ICAgICAgICBQQ0lFcnIgfCBQQ1NUaW1lb3V0IHwgUnhVbmRlcnJ1biB8IFJ4T3ZlcmZsb3cgfCBS
eEZJRk9PdmVyIHwKICAgICAgICBUeEVyciB8IFR4T0sgfCBSeEVyciB8IFJ4T0s7CgpzdGF0aWMg
Y29uc3QgdW5zaWduZWQgaW50IHJ0bDgxMzlfcnhfY29uZmlnID0KICAgICAgICBSeENmZ1JjdjMy
SyB8IFJ4Tm9XcmFwIHwKICAgICAgICAoNyA8PCBSeENmZ0ZJRk9TaGlmdCkgfAogICAgICAgICg3
IDw8IFJ4Q2ZnRE1BU2hpZnQpOwoKc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBydGw4MTM5X3R4
X2NvbmZpZyA9CiAgICAgICAgKDYgPDwgVHhETUFTaGlmdCkgfCAoOCA8PCBUeFJldHJ5U2hpZnQp
OwoKc3RhdGljIHZvaWQgX19ydGw4MTM5X2NsZWFudXBfZGV2IChzdHJ1Y3QgbmV0X2RldmljZSAq
ZGV2KQp7CiAgICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHA7CiAgICAgICAgc3RydWN0
IHBjaV9kZXYgKnBkZXY7CgogICAgICAgIGlmKCEoZGV2ICE9ICgodm9pZCAqKTApKSkgeyBwcmlu
dGtfUjFiN2Q0MDc0KCAiQXNzZXJ0aW9uIGZhaWxlZCEgJXMsJXMsJXMsbGluZT0lZFxuIiwgImRl
diAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18sNjcwKTsgfTsKICAgICAgICBpZigh
KGRldi0+cHJpdiAhPSAoKHZvaWQgKikwKSkpIHsgcHJpbnRrX1IxYjdkNDA3NCggIkFzc2VydGlv
biBmYWlsZWQhICVzLCVzLCVzLGxpbmU9JWRcbiIsICJkZXYtPnByaXYgIT0gTlVMTCIsIjgxMzl0
b28uYyIsX19GVU5DVElPTl9fLDY3MSk7IH07CgogICAgICAgIHRwID0gZGV2LT5wcml2OwogICAg
ICAgIGlmKCEodHAtPnBjaV9kZXYgIT0gKCh2b2lkICopMCkpKSB7IHByaW50a19SMWI3ZDQwNzQo
ICJBc3NlcnRpb24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAidHAtPnBjaV9kZXYgIT0g
TlVMTCIsIjgxMzl0b28uYyIsX19GVU5DVElPTl9fLDY3NCk7IH07CiAgICAgICAgcGRldiA9IHRw
LT5wY2lfZGV2OwoKCiAgICAgICAgaWYgKHRwLT5tbWlvX2FkZHIpCiAgICAgICAgICAgICAgICBp
b3VubWFwX1I1ZmIxOTZkNCAodHAtPm1taW9fYWRkcik7CgoKCiAgICAgICAgcGNpX3JlbGVhc2Vf
cmVnaW9uc19SZDkxN2UzOWUgKHBkZXYpOwoKCgogICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRf
cCgweEJDKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mIChzdHJ1Y3QgbmV0X2Rldmlj
ZSkgKyBzaXplb2YgKHN0cnVjdCBydGw4MTM5X3ByaXZhdGUpKSkgPyBfX2NvbnN0YW50X2NfYW5k
X2NvdW50X21lbXNldCgoKGRldikpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgweEJD
KSkpLCgoc2l6ZW9mIChzdHJ1Y3QgbmV0X2RldmljZSkgKyBzaXplb2YgKHN0cnVjdCBydGw4MTM5
X3ByaXZhdGUpKSkpIDogX19jb25zdGFudF9jX21lbXNldCgoKGRldikpLCgoMHgwMTAxMDEwMVVM
Kih1bnNpZ25lZCBjaGFyKSgweEJDKSkpLCgoc2l6ZW9mIChzdHJ1Y3QgbmV0X2RldmljZSkgKyBz
aXplb2YgKHN0cnVjdCBydGw4MTM5X3ByaXZhdGUpKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRf
cCgoc2l6ZW9mIChzdHJ1Y3QgbmV0X2RldmljZSkgKyBzaXplb2YgKHN0cnVjdCBydGw4MTM5X3By
aXZhdGUpKSkgPyBfX21lbXNldF9nZW5lcmljKCgoKGRldikpKSwoKCgweEJDKSkpLCgoKHNpemVv
ZiAoc3RydWN0IG5ldF9kZXZpY2UpICsgc2l6ZW9mIChzdHJ1Y3QgcnRsODEzOV9wcml2YXRlKSkp
KSkgOiBfX21lbXNldF9nZW5lcmljKCgoZGV2KSksKCgweEJDKSksKChzaXplb2YgKHN0cnVjdCBu
ZXRfZGV2aWNlKSArIHNpemVvZiAoc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSkpKSkpKTsKCgoKCiAg
ICAgICAga2ZyZWVfUjAzN2EwY2JhIChkZXYpOwoKICAgICAgICBwY2lfc2V0X2RydmRhdGEgKHBk
ZXYsICgodm9pZCAqKTApKTsKfQoKCnN0YXRpYyB2b2lkIHJ0bDgxMzlfY2hpcF9yZXNldCAodm9p
ZCAqaW9hZGRyKQp7CiAgICAgICAgaW50IGk7CgoKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25l
ZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2hpcENtZCkpKSA9ICgoQ21kUmVzZXQpKSk7
CgoKICAgICAgICBmb3IgKGkgPSAxMDAwOyBpID4gMDsgaS0tKSB7CiAgICAgICAgICAgICAgICBf
X2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwogICAgICAgICAgICAgICAgaWYg
KCgoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2hpcENt
ZCkpKSkgJiBDbWRSZXNldCkgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMTApID8gKCgxMCkgPiAyMDAwMCA/
IF9fYmFkX3VkZWxheSgpIDogX19jb25zdF91ZGVsYXlfUmVhZTNkZmQ2KCgxMCkgKiAweDEwYzZ1
bCkpIDogX191ZGVsYXlfUjllN2Q2YmQwKDEwKSk7CiAgICAgICAgfQp9CgoKc3RhdGljIGludCBy
dGw4MTM5X2luaXRfYm9hcmQgKHN0cnVjdCBwY2lfZGV2ICpwZGV2LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICoqZGV2X291dCkKewog
ICAgICAgIHZvaWQgKmlvYWRkcjsKICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2OwogICAg
ICAgIHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKnRwOwogICAgICAgIHU4IHRtcDg7CiAgICAgICAg
aW50IHJjOwogICAgICAgIHVuc2lnbmVkIGludCBpOwogICAgICAgIHUzMiBwaW9fc3RhcnQsIHBp
b19lbmQsIHBpb19mbGFncywgcGlvX2xlbjsKICAgICAgICB1bnNpZ25lZCBsb25nIG1taW9fc3Rh
cnQsIG1taW9fZW5kLCBtbWlvX2ZsYWdzLCBtbWlvX2xlbjsKICAgICAgICB1MzIgdG1wOwoKICAg
ICAgICBpZighKHBkZXYgIT0gKCh2b2lkICopMCkpKSB7IHByaW50a19SMWI3ZDQwNzQoICJBc3Nl
cnRpb24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAicGRldiAhPSBOVUxMIiwiODEzOXRv
by5jIixfX0ZVTkNUSU9OX18sNzI4KTsgfTsKCiAgICAgICAgKmRldl9vdXQgPSAoKHZvaWQgKikw
KTsKCgogICAgICAgIGRldiA9IGFsbG9jX2V0aGVyZGV2X1I1MTBlNDRkMSAoc2l6ZW9mICgqdHAp
KTsKICAgICAgICBpZiAoZGV2ID09ICgodm9pZCAqKTApKSB7CiAgICAgICAgICAgICAgICBwcmlu
dGtfUjFiN2Q0MDc0ICgiPDM+IiAiODEzOXRvbyIgIjogIiAiJXM6IFVuYWJsZSB0byBhbGxvYyBu
ZXcgbmV0IGRldmljZVxuIiwgcGRldi0+c2xvdF9uYW1lKTsKICAgICAgICAgICAgICAgIHJldHVy
biAtMTI7CiAgICAgICAgfQogICAgICAgIGRvIHsgKGRldiktPm93bmVyID0gKCZfX3RoaXNfbW9k
dWxlKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgdHAgPSBkZXYtPnByaXY7CiAgICAgICAgdHAtPnBj
aV9kZXYgPSBwZGV2OwoKCiAgICAgICAgcmMgPSBwY2lfZW5hYmxlX2RldmljZV9SOTQ0YjVlNDIg
KHBkZXYpOwogICAgICAgIGlmIChyYykKICAgICAgICAgICAgICAgIGdvdG8gZXJyX291dDsKCiAg
ICAgICAgcGlvX3N0YXJ0ID0gKChwZGV2KS0+cmVzb3VyY2VbKDApXS5zdGFydCk7CiAgICAgICAg
cGlvX2VuZCA9ICgocGRldiktPnJlc291cmNlWygwKV0uZW5kKTsKICAgICAgICBwaW9fZmxhZ3Mg
PSAoKHBkZXYpLT5yZXNvdXJjZVsoMCldLmZsYWdzKTsKICAgICAgICBwaW9fbGVuID0gKCgoKChw
ZGV2KSktPnJlc291cmNlWygoMCkpXS5zdGFydCkgPT0gMCAmJiAoKChwZGV2KSktPnJlc291cmNl
WygoMCkpXS5lbmQpID09ICgoKHBkZXYpKS0+cmVzb3VyY2VbKCgwKSldLnN0YXJ0KSkgPyAwIDog
KCgoKHBkZXYpKS0+cmVzb3VyY2VbKCgwKSldLmVuZCkgLSAoKChwZGV2KSktPnJlc291cmNlWygo
MCkpXS5zdGFydCkgKyAxKSk7CgogICAgICAgIG1taW9fc3RhcnQgPSAoKHBkZXYpLT5yZXNvdXJj
ZVsoMSldLnN0YXJ0KTsKICAgICAgICBtbWlvX2VuZCA9ICgocGRldiktPnJlc291cmNlWygxKV0u
ZW5kKTsKICAgICAgICBtbWlvX2ZsYWdzID0gKChwZGV2KS0+cmVzb3VyY2VbKDEpXS5mbGFncyk7
CiAgICAgICAgbW1pb19sZW4gPSAoKCgoKHBkZXYpKS0+cmVzb3VyY2VbKCgxKSldLnN0YXJ0KSA9
PSAwICYmICgoKHBkZXYpKS0+cmVzb3VyY2VbKCgxKSldLmVuZCkgPT0gKCgocGRldikpLT5yZXNv
dXJjZVsoKDEpKV0uc3RhcnQpKSA/IDAgOiAoKCgocGRldikpLT5yZXNvdXJjZVsoKDEpKV0uZW5k
KSAtICgoKHBkZXYpKS0+cmVzb3VyY2VbKCgxKSldLnN0YXJ0KSArIDEpKTsKCgoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKIyA3Nzcg
IjgxMzl0b28uYyIKICAgICAgICBpZiAoIShtbWlvX2ZsYWdzICYgMHgwMDAwMDIwMCkpIHsKICAg
ICAgICAgICAgICAgIHByaW50a19SMWI3ZDQwNzQgKCI8Mz4iICI4MTM5dG9vIiAiOiAiICIlczog
cmVnaW9uICMxIG5vdCBhbiBNTUlPIHJlc291cmNlLCBhYm9ydGluZ1xuIiwgcGRldi0+c2xvdF9u
YW1lKTsKICAgICAgICAgICAgICAgIHJjID0gLTE5OwogICAgICAgICAgICAgICAgZ290byBlcnJf
b3V0OwogICAgICAgIH0KICAgICAgICBpZiAobW1pb19sZW4gPCAweDgwKSB7CiAgICAgICAgICAg
ICAgICBwcmludGtfUjFiN2Q0MDc0ICgiPDM+IiAiODEzOXRvbyIgIjogIiAiJXM6IEludmFsaWQg
UENJIG1lbSByZWdpb24gc2l6ZShzKSwgYWJvcnRpbmdcbiIsIHBkZXYtPnNsb3RfbmFtZSk7CiAg
ICAgICAgICAgICAgICByYyA9IC0xOTsKICAgICAgICAgICAgICAgIGdvdG8gZXJyX291dDsKICAg
ICAgICB9CgoKICAgICAgICByYyA9IHBjaV9yZXF1ZXN0X3JlZ2lvbnNfUmZjMDkxODljIChwZGV2
LCAiODEzOXRvbyIpOwogICAgICAgIGlmIChyYykKICAgICAgICAgICAgICAgIGdvdG8gZXJyX291
dDsKCgogICAgICAgIHBjaV9zZXRfbWFzdGVyX1I4N2EwMTkxOCAocGRldik7CgoKCgoKCgogICAg
ICAgIGlvYWRkciA9IGlvcmVtYXAgKG1taW9fc3RhcnQsIG1taW9fbGVuKTsKICAgICAgICBpZiAo
aW9hZGRyID09ICgodm9pZCAqKTApKSB7CiAgICAgICAgICAgICAgICBwcmludGtfUjFiN2Q0MDc0
ICgiPDM+IiAiODEzOXRvbyIgIjogIiAiJXM6IGNhbm5vdCByZW1hcCBNTUlPLCBhYm9ydGluZ1xu
IiwgcGRldi0+c2xvdF9uYW1lKTsKICAgICAgICAgICAgICAgIHJjID0gLTU7CiAgICAgICAgICAg
ICAgICBnb3RvIGVycl9vdXQ7CiAgICAgICAgfQogICAgICAgIGRldi0+YmFzZV9hZGRyID0gKGxv
bmcpIGlvYWRkcjsKICAgICAgICB0cC0+bW1pb19hZGRyID0gaW9hZGRyOwoKCgogICAgICAgICgq
KHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChIbHRDbGspKSkg
PSAoKCdSJykpKTsKCgogICAgICAgIGlmICgoKHVuc2lnbmVkIGxvbmcpICgqKHZvbGF0aWxlIHVu
c2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKFR4Q29uZmlnKSkpKSkgPT0gMHhGRkZG
RkZGRikgewogICAgICAgICAgICAgICAgcHJpbnRrX1IxYjdkNDA3NCAoIjwzPiIgIjgxMzl0b28i
ICI6ICIgIiVzOiBDaGlwIG5vdCByZXNwb25kaW5nLCBpZ25vcmluZyBib2FyZFxuIiwKICAgICAg
ICAgICAgICAgICAgICAgICAgcGRldi0+c2xvdF9uYW1lKTsKICAgICAgICAgICAgICAgIHJjID0g
LTU7CiAgICAgICAgICAgICAgICBnb3RvIGVycl9vdXQ7CiAgICAgICAgfQoKCiAgICAgICAgdG1w
ID0gKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENoaXBW
ZXJzaW9uKSkpKTsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgKHNpemVvZihydGxfY2hpcF9pbmZv
KSAvIHNpemVvZigocnRsX2NoaXBfaW5mbylbMF0pKTsgaSsrKQogICAgICAgICAgICAgICAgaWYg
KHRtcCA9PSBydGxfY2hpcF9pbmZvW2ldLnZlcnNpb24pIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgdHAtPmNoaXBzZXQgPSBpOwogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG1hdGNoOwog
ICAgICAgICAgICAgICAgfQoKCiAgICAgICAgcHJpbnRrX1IxYjdkNDA3NCAoIjw3PiIgIjgxMzl0
b28iICI6ICIgIiVzOiB1bmtub3duIGNoaXAgdmVyc2lvbiwgYXNzdW1pbmcgUlRMLTgxMzlcbiIs
CiAgICAgICAgICAgICAgICBwZGV2LT5zbG90X25hbWUpOwogICAgICAgIHByaW50a19SMWI3ZDQw
NzQgKCI8Nz4iICI4MTM5dG9vIiAiOiAiICIlczogVHhDb25maWcgPSAweCVseFxuIiwgcGRldi0+
c2xvdF9uYW1lLCAoKHVuc2lnbmVkIGxvbmcpICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAo
KHZvaWQgKikoaW9hZGRyICsgKFR4Q29uZmlnKSkpKSkpOwogICAgICAgIHRwLT5jaGlwc2V0ID0g
MDsKCm1hdGNoOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA7CgoKCgogICAgICAgIGlmICh0cC0+Y2hpcHNldCA+PSBDSF84MTM5QikgewogICAgICAgICAg
ICAgICAgdTggbmV3X3RtcDggPSB0bXA4ID0gKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAo
KHZvaWQgKikoaW9hZGRyICsgKENvbmZpZzEpKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICBpZiAoKHJ0bF9jaGlwX2luZm9bdHAt
PmNoaXBzZXRdLmZsYWdzICYgSGFzTFdha2UpICYmCiAgICAgICAgICAgICAgICAgICAgKHRtcDgg
JiBMV0FLRSkpCiAgICAgICAgICAgICAgICAgICAgICAgIG5ld190bXA4ICY9IH5MV0FLRTsKICAg
ICAgICAgICAgICAgIG5ld190bXA4IHw9IENmZzFfUE1fRW5hYmxlOwogICAgICAgICAgICAgICAg
aWYgKG5ld190bXA4ICE9IHRtcDgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgKCoodm9sYXRp
bGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENmZzkzNDYpKSkgPSAoKENm
ZzkzNDZfVW5sb2NrKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAoKih2b2xhdGlsZSB1bnNp
Z25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ29uZmlnMSkpKSA9ICgodG1wOCkpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZv
aWQgKikoaW9hZGRyICsgKENmZzkzNDYpKSkgPSAoKENmZzkzNDZfTG9jaykpKTsKICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChydGxfY2hpcF9pbmZvW3RwLT5jaGlwc2V0XS5m
bGFncyAmIEhhc0xXYWtlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRtcDggPSAoKih2b2xh
dGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ29uZmlnNCkpKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXA4ICYgTFdQVE4pCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9h
ZGRyICsgKENvbmZpZzQpKSkgPSAoKHRtcDggJiB+TFdQVE4pKSk7CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA7CiAgICAgICAgICAgICAgICB0bXA4ID0gKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAq
KSAoKHZvaWQgKikoaW9hZGRyICsgKENvbmZpZzEpKSkpOwogICAgICAgICAgICAgICAgdG1wOCAm
PSB+KFNMRUVQIHwgUFdSRE4pOwogICAgICAgICAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQg
Y2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENvbmZpZzEpKSkgPSAoKHRtcDgpKSk7CiAgICAg
ICAgfQoKICAgICAgICBydGw4MTM5X2NoaXBfcmVzZXQgKGlvYWRkcik7CgogICAgICAgICpkZXZf
b3V0ID0gZGV2OwogICAgICAgIHJldHVybiAwOwoKZXJyX291dDoKICAgICAgICBfX3J0bDgxMzlf
Y2xlYW51cF9kZXYgKGRldik7CiAgICAgICAgcmV0dXJuIHJjOwp9CgoKc3RhdGljIGludCBydGw4
MTM5X2luaXRfb25lIChzdHJ1Y3QgcGNpX2RldiAqcGRldiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCkKewogICAg
ICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSAoKHZvaWQgKikwKTsKICAgICAgICBzdHJ1Y3Qg
cnRsODEzOV9wcml2YXRlICp0cDsKICAgICAgICBpbnQgaSwgYWRkcl9sZW4sIG9wdGlvbjsKICAg
ICAgICB2b2lkICppb2FkZHI7CiAgICAgICAgc3RhdGljIGludCBib2FyZF9pZHggPSAtMTsKICAg
ICAgICB1OCBwY2lfcmV2OwoKICAgICAgICBpZighKHBkZXYgIT0gKCh2b2lkICopMCkpKSB7IHBy
aW50a19SMWI3ZDQwNzQoICJBc3NlcnRpb24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAi
cGRldiAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18sODg4KTsgfTsKICAgICAgICBp
ZighKGVudCAhPSAoKHZvaWQgKikwKSkpIHsgcHJpbnRrX1IxYjdkNDA3NCggIkFzc2VydGlvbiBm
YWlsZWQhICVzLCVzLCVzLGxpbmU9JWRcbiIsICJlbnQgIT0gTlVMTCIsIjgxMzl0b28uYyIsX19G
VU5DVElPTl9fLDg4OSk7IH07CgogICAgICAgIGJvYXJkX2lkeCsrOwojIDkwNCAiODEzOXRvby5j
IgogICAgICAgIHBjaV9yZWFkX2NvbmZpZ19ieXRlX1IzYmQzOGY3NChwZGV2LCAweDA4LCAmcGNp
X3Jldik7CgogICAgICAgIGlmIChwZGV2LT52ZW5kb3IgPT0gMHgxMGVjICYmCiAgICAgICAgICAg
IHBkZXYtPmRldmljZSA9PSAweDgxMzkgJiYgcGNpX3JldiA+PSAweDIwKSB7CiAgICAgICAgICAg
ICAgICBwcmludGtfUjFiN2Q0MDc0KCI8Nj4iICI4MTM5dG9vIiAiOiAiICJwY2kgZGV2ICVzIChp
ZCAlMDR4OiUwNHggcmV2ICUwMngpIGlzIGFuIGVuaGFuY2VkIDgxMzlDKyBjaGlwXG4iLAogICAg
ICAgICAgICAgICAgICAgICAgIHBkZXYtPnNsb3RfbmFtZSwgcGRldi0+dmVuZG9yLCBwZGV2LT5k
ZXZpY2UsIHBjaV9yZXYpOwogICAgICAgICAgICAgICAgcHJpbnRrX1IxYjdkNDA3NCgiPDY+IiAi
ODEzOXRvbyIgIjogIiAiVXNlIHRoZSBcIjgxMzljcFwiIGRyaXZlciBmb3IgaW1wcm92ZWQgcGVy
Zm9ybWFuY2UgYW5kIHN0YWJpbGl0eS5cbiIpOwogICAgICAgIH0KCiAgICAgICAgaSA9IHJ0bDgx
MzlfaW5pdF9ib2FyZCAocGRldiwgJmRldik7CiAgICAgICAgaWYgKGkgPCAwKQogICAgICAgICAg
ICAgICAgcmV0dXJuIGk7CgogICAgICAgIHRwID0gZGV2LT5wcml2OwogICAgICAgIGlvYWRkciA9
IHRwLT5tbWlvX2FkZHI7CgogICAgICAgIGlmKCEoaW9hZGRyICE9ICgodm9pZCAqKTApKSkgeyBw
cmludGtfUjFiN2Q0MDc0KCAiQXNzZXJ0aW9uIGZhaWxlZCEgJXMsJXMsJXMsbGluZT0lZFxuIiwg
ImlvYWRkciAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18sOTIwKTsgfTsKICAgICAg
ICBpZighKGRldiAhPSAoKHZvaWQgKikwKSkpIHsgcHJpbnRrX1IxYjdkNDA3NCggIkFzc2VydGlv
biBmYWlsZWQhICVzLCVzLCVzLGxpbmU9JWRcbiIsICJkZXYgIT0gTlVMTCIsIjgxMzl0b28uYyIs
X19GVU5DVElPTl9fLDkyMSk7IH07CiAgICAgICAgaWYoISh0cCAhPSAoKHZvaWQgKikwKSkpIHsg
cHJpbnRrX1IxYjdkNDA3NCggIkFzc2VydGlvbiBmYWlsZWQhICVzLCVzLCVzLGxpbmU9JWRcbiIs
ICJ0cCAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18sOTIyKTsgfTsKCiAgICAgICAg
YWRkcl9sZW4gPSByZWFkX2VlcHJvbSAoaW9hZGRyLCAwLCA4KSA9PSAweDgxMjkgPyA4IDogNjsK
ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKQogICAgICAgICAgICAgICAgKCh1MTYgKikg
KGRldi0+ZGV2X2FkZHIpKVtpXSA9CiAgICAgICAgICAgICAgICAgICAgKChfX3UxNikocmVhZF9l
ZXByb20gKGlvYWRkciwgaSArIDcsIGFkZHJfbGVuKSkpOwoKCiAgICAgICAgZGV2LT5vcGVuID0g
cnRsODEzOV9vcGVuOwogICAgICAgIGRldi0+aGFyZF9zdGFydF94bWl0ID0gcnRsODEzOV9zdGFy
dF94bWl0OwogICAgICAgIGRldi0+c3RvcCA9IHJ0bDgxMzlfY2xvc2U7CiAgICAgICAgZGV2LT5n
ZXRfc3RhdHMgPSBydGw4MTM5X2dldF9zdGF0czsKICAgICAgICBkZXYtPnNldF9tdWx0aWNhc3Rf
bGlzdCA9IHJ0bDgxMzlfc2V0X3J4X21vZGU7CiAgICAgICAgZGV2LT5kb19pb2N0bCA9IG5ldGRl
dl9pb2N0bDsKICAgICAgICBkZXYtPnR4X3RpbWVvdXQgPSBydGw4MTM5X3R4X3RpbWVvdXQ7CiAg
ICAgICAgZGV2LT53YXRjaGRvZ190aW1lbyA9ICg2KjEwMCk7CiAgICAgICAgZGV2LT5mZWF0dXJl
cyB8PSAxfDg7CgogICAgICAgIGRldi0+aXJxID0gcGRldi0+aXJxOwoKCiAgICAgICAgdHAgPSBk
ZXYtPnByaXY7CgoKICAgICAgICB0cC0+ZHJ2X2ZsYWdzID0gYm9hcmRfaW5mb1tlbnQtPmRyaXZl
cl9kYXRhXS5od19mbGFnczsKICAgICAgICB0cC0+bW1pb19hZGRyID0gaW9hZGRyOwogICAgICAg
IGRvIHsgfSB3aGlsZSgwKTsKICAgICAgICBpbml0X3dhaXRxdWV1ZV9oZWFkICgmdHAtPnRocl93
YWl0KTsKICAgICAgICBpbml0X2NvbXBsZXRpb24gKCZ0cC0+dGhyX2V4aXRlZCk7CgoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOwogICAgICAgIGkgPSByZWdpc3Rlcl9uZXRkZXZfUjE0NjQ0ZmExIChk
ZXYpOwogICAgICAgIGlmIChpKSBnb3RvIGVycl9vdXQ7CgogICAgICAgIHBjaV9zZXRfZHJ2ZGF0
YSAocGRldiwgZGV2KTsKCiAgICAgICAgcHJpbnRrX1IxYjdkNDA3NCAoIjw2PiIgIiVzOiAlcyBh
dCAweCVseCwgIgogICAgICAgICAgICAgICAgIiUyLjJ4OiUyLjJ4OiUyLjJ4OiUyLjJ4OiUyLjJ4
OiUyLjJ4LCAiCiAgICAgICAgICAgICAgICAiSVJRICVkXG4iLAogICAgICAgICAgICAgICAgZGV2
LT5uYW1lLAogICAgICAgICAgICAgICAgYm9hcmRfaW5mb1tlbnQtPmRyaXZlcl9kYXRhXS5uYW1l
LAogICAgICAgICAgICAgICAgZGV2LT5iYXNlX2FkZHIsCiAgICAgICAgICAgICAgICBkZXYtPmRl
dl9hZGRyWzBdLCBkZXYtPmRldl9hZGRyWzFdLAogICAgICAgICAgICAgICAgZGV2LT5kZXZfYWRk
clsyXSwgZGV2LT5kZXZfYWRkclszXSwKICAgICAgICAgICAgICAgIGRldi0+ZGV2X2FkZHJbNF0s
IGRldi0+ZGV2X2FkZHJbNV0sCiAgICAgICAgICAgICAgICBkZXYtPmlycSk7CgogICAgICAgIHBy
aW50a19SMWI3ZDQwNzQgKCI8Nz4iICIlczogIElkZW50aWZpZWQgODEzOSBjaGlwIHR5cGUgJyVz
J1xuIiwKICAgICAgICAgICAgICAgIGRldi0+bmFtZSwgcnRsX2NoaXBfaW5mb1t0cC0+Y2hpcHNl
dF0ubmFtZSk7CiMgOTk3ICI4MTM5dG9vLmMiCiAgICAgICAgICAgICAgICB0cC0+cGh5c1swXSA9
IDMyOwoKCiAgICAgICAgb3B0aW9uID0gKGJvYXJkX2lkeCA+PSA4KSA/IDAgOiBtZWRpYVtib2Fy
ZF9pZHhdOwogICAgICAgIGlmIChvcHRpb24gPiAwKSB7CiAgICAgICAgICAgICAgICB0cC0+ZnVs
bF9kdXBsZXggPSAob3B0aW9uICYgMHgyMTApID8gMSA6IDA7CiAgICAgICAgICAgICAgICB0cC0+
ZGVmYXVsdF9wb3J0ID0gb3B0aW9uICYgMHhGRjsKICAgICAgICAgICAgICAgIGlmICh0cC0+ZGVm
YXVsdF9wb3J0KQogICAgICAgICAgICAgICAgICAgICAgICB0cC0+bWVkaWFsb2NrID0gMTsKICAg
ICAgICB9CiAgICAgICAgaWYgKGJvYXJkX2lkeCA8IDggJiYgZnVsbF9kdXBsZXhbYm9hcmRfaWR4
XSA+IDApCiAgICAgICAgICAgICAgICB0cC0+ZnVsbF9kdXBsZXggPSBmdWxsX2R1cGxleFtib2Fy
ZF9pZHhdOwogICAgICAgIGlmICh0cC0+ZnVsbF9kdXBsZXgpIHsKICAgICAgICAgICAgICAgIHBy
aW50a19SMWI3ZDQwNzQoIjw2PiIgIiVzOiBNZWRpYSB0eXBlIGZvcmNlZCB0byBGdWxsIER1cGxl
eC5cbiIsIGRldi0+bmFtZSk7CgoKICAgICAgICAgICAgICAgIHRwLT5kdXBsZXhfbG9jayA9IDE7
CiAgICAgICAgfQogICAgICAgIGlmICh0cC0+ZGVmYXVsdF9wb3J0KSB7CiAgICAgICAgICAgICAg
ICBwcmludGtfUjFiN2Q0MDc0KCI8Nj4iICIgIEZvcmNpbmcgJWRNYnBzICVzLWR1cGxleCBvcGVy
YXRpb24uXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAob3B0aW9uICYgMHgyMCA/IDEw
MCA6IDEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvbiAmIDB4MTAgPyAiZnVs
bCIgOiAiaGFsZiIpKTsKICAgICAgICAgICAgICAgIG1kaW9fd3JpdGUoZGV2LCB0cC0+cGh5c1sw
XSwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG9wdGlvbiAmIDB4MjAp
ID8gMHgyMDAwIDogMCkgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgob3B0
aW9uICYgMHgxMCkgPyAweDAxMDAgOiAwKSk7CiAgICAgICAgfQoKCiAgICAgICAgaWYgKHJ0bF9j
aGlwX2luZm9bdHAtPmNoaXBzZXRdLmZsYWdzICYgSGFzSGx0Q2xrKQogICAgICAgICAgICAgICAg
KCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKEhsdENsaykp
KSA9ICgoJ0gnKSkpOwoKICAgICAgICByZXR1cm4gMDsKCmVycl9vdXQ6CiAgICAgICAgX19ydGw4
MTM5X2NsZWFudXBfZGV2IChkZXYpOwogICAgICAgIHJldHVybiBpOwp9CgoKc3RhdGljIHZvaWQg
cnRsODEzOV9yZW1vdmVfb25lIChzdHJ1Y3QgcGNpX2RldiAqcGRldikKewogICAgICAgIHN0cnVj
dCBuZXRfZGV2aWNlICpkZXYgPSBwY2lfZ2V0X2RydmRhdGEgKHBkZXYpOwogICAgICAgIHN0cnVj
dCBydGw4MTM5X3ByaXZhdGUgKm5wOwoKICAgICAgICBpZighKGRldiAhPSAoKHZvaWQgKikwKSkp
IHsgcHJpbnRrX1IxYjdkNDA3NCggIkFzc2VydGlvbiBmYWlsZWQhICVzLCVzLCVzLGxpbmU9JWRc
biIsICJkZXYgIT0gTlVMTCIsIjgxMzl0b28uYyIsX19GVU5DVElPTl9fLDEwNDEpOyB9OwogICAg
ICAgIG5wID0gZGV2LT5wcml2OwogICAgICAgIGlmKCEobnAgIT0gKCh2b2lkICopMCkpKSB7IHBy
aW50a19SMWI3ZDQwNzQoICJBc3NlcnRpb24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAi
bnAgIT0gTlVMTCIsIjgxMzl0b28uYyIsX19GVU5DVElPTl9fLDEwNDMpOyB9OwoKICAgICAgICB1
bnJlZ2lzdGVyX25ldGRldl9SNDhhMGNiYTEgKGRldik7CgogICAgICAgIF9fcnRsODEzOV9jbGVh
bnVwX2RldiAoZGV2KTsKfQojIDEwNzMgIjgxMzl0b28uYyIKc3RhdGljIGludCByZWFkX2VlcHJv
bSAodm9pZCAqaW9hZGRyLCBpbnQgbG9jYXRpb24sIGludCBhZGRyX2xlbikKewogICAgICAgIGlu
dCBpOwogICAgICAgIHVuc2lnbmVkIHJldHZhbCA9IDA7CiAgICAgICAgdm9pZCAqZWVfYWRkciA9
IGlvYWRkciArIENmZzkzNDY7CiAgICAgICAgaW50IHJlYWRfY21kID0gbG9jYXRpb24gfCAoKDYp
IDw8IGFkZHJfbGVuKTsKCiAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZv
aWQgKikoZWVfYWRkcikpID0gKCgweDgwIHwgMHgwOCkgJiB+MHgwOCkpOwogICAgICAgICgqKHZv
bGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGVlX2FkZHIpKSA9ICgoMHg4MCB8IDB4
MDgpKSk7CiAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShlZV9h
ZGRyKSkpOwoKCiAgICAgICAgZm9yIChpID0gNCArIGFkZHJfbGVuOyBpID49IDA7IGktLSkgewog
ICAgICAgICAgICAgICAgaW50IGRhdGF2YWwgPSAocmVhZF9jbWQgJiAoMSA8PCBpKSkgPyAweDAy
IDogMDsKICAgICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lk
ICopKGVlX2FkZHIpKSA9ICgoMHg4MCB8IDB4MDgpIHwgZGF0YXZhbCkpOwogICAgICAgICAgICAg
ICAgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShlZV9hZGRyKSkpOwogICAg
ICAgICAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoZWVfYWRk
cikpID0gKCgweDgwIHwgMHgwOCkgfCBkYXRhdmFsIHwgMHgwNCkpOwogICAgICAgICAgICAgICAg
KCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShlZV9hZGRyKSkpOwogICAgICAg
IH0KICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShlZV9hZGRy
KSkgPSAoKDB4ODAgfCAweDA4KSkpOwogICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAq
KSAoKHZvaWQgKikoZWVfYWRkcikpKTsKCiAgICAgICAgZm9yIChpID0gMTY7IGkgPiAwOyBpLS0p
IHsKICAgICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICop
KGVlX2FkZHIpKSA9ICgoMHg4MCB8IDB4MDgpIHwgMHgwNCkpOwogICAgICAgICAgICAgICAgKCoo
dm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShlZV9hZGRyKSkpOwogICAgICAgICAg
ICAgICAgcmV0dmFsID0KICAgICAgICAgICAgICAgICAgICAocmV0dmFsIDw8IDEpIHwgKCgoKih2
b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShlZV9hZGRyKSkpICYgMHgwMSkgPyAx
IDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwogICAgICAgICAgICAg
ICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoZWVfYWRkcikpID0gKCgw
eDgwIHwgMHgwOCkpKTsKICAgICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAq
KSAoKHZvaWQgKikoZWVfYWRkcikpKTsKICAgICAgICB9CgoKICAgICAgICAoKih2b2xhdGlsZSB1
bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShlZV9hZGRyKSkgPSAofjB4MDgpKTsKICAgICAgICAo
Kih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGVlX2FkZHIpKSk7CgogICAgICAg
IHJldHVybiByZXR2YWw7Cn0KIyAxMTI4ICI4MTM5dG9vLmMiCnN0YXRpYyBjaGFyIG1paV8yXzgx
MzlfbWFwWzhdID0gewogICAgICAgIEJhc2ljTW9kZUN0cmwsCiAgICAgICAgQmFzaWNNb2RlU3Rh
dHVzLAogICAgICAgIDAsCiAgICAgICAgMCwKICAgICAgICBOV2F5QWR2ZXJ0LAogICAgICAgIE5X
YXlMUEFSLAogICAgICAgIE5XYXlFeHBhbnNpb24sCiAgICAgICAgMAp9OwojIDExNTUgIjgxMzl0
b28uYyIKc3RhdGljIGludCBtZGlvX3JlYWQgKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBw
aHlfaWQsIGludCBsb2NhdGlvbikKewogICAgICAgIHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKnRw
ID0gZGV2LT5wcml2OwogICAgICAgIGludCByZXR2YWwgPSAwOwoKCgoKCgogICAgICAgIGlmIChw
aHlfaWQgPiAzMSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9uIDwgOCAmJiBtaWlf
Ml84MTM5X21hcFtsb2NhdGlvbl0gPwogICAgICAgICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVu
c2lnbmVkIHNob3J0ICopICgodm9pZCAqKSh0cC0+bW1pb19hZGRyICsgbWlpXzJfODEzOV9tYXBb
bG9jYXRpb25dKSkpIDogMDsKICAgICAgICB9CiMgMTE5MiAiODEzOXRvby5jIgogICAgICAgIHJl
dHVybiAocmV0dmFsID4+IDEpICYgMHhmZmZmOwp9CgoKc3RhdGljIHZvaWQgbWRpb193cml0ZSAo
c3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IHBoeV9pZCwgaW50IGxvY2F0aW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgdmFsdWUpCnsKICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2
YXRlICp0cCA9IGRldi0+cHJpdjsKCgoKCgoKICAgICAgICBpZiAocGh5X2lkID4gMzEpIHsKICAg
ICAgICAgICAgICAgIHZvaWQgKmlvYWRkciA9IHRwLT5tbWlvX2FkZHI7CiAgICAgICAgICAgICAg
ICBpZiAobG9jYXRpb24gPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAoKih2b2xhdGls
ZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2ZnOTM0NikpKSA9ICgoQ2Zn
OTM0Nl9VbmxvY2spKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2ln
bmVkIHNob3J0ICopICgodm9pZCAqKShpb2FkZHIgKyAoQmFzaWNNb2RlQ3RybCkpKSA9ICgodmFs
dWUpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIg
KikgKCh2b2lkICopKGlvYWRkciArIChDZmc5MzQ2KSkpID0gKChDZmc5MzQ2X0xvY2spKSk7CiAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxvY2F0aW9uIDwgOCAmJiBtaWlfMl84MTM5X21hcFts
b2NhdGlvbl0pCiAgICAgICAgICAgICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIHNo
b3J0ICopICgodm9pZCAqKShpb2FkZHIgKyAobWlpXzJfODEzOV9tYXBbbG9jYXRpb25dKSkpID0g
KCh2YWx1ZSkpKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiMgMTIzNyAiODEz
OXRvby5jIgp9CgoKc3RhdGljIGludCBydGw4MTM5X29wZW4gKHN0cnVjdCBuZXRfZGV2aWNlICpk
ZXYpCnsKICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRlICp0cCA9IGRldi0+cHJpdjsKICAg
ICAgICBpbnQgcmV0dmFsOwoKCgoKICAgICAgICByZXR2YWwgPSByZXF1ZXN0X2lycV9SMGM2MGYy
ZTAgKGRldi0+aXJxLCBydGw4MTM5X2ludGVycnVwdCwgMHgwNDAwMDAwMCwgZGV2LT5uYW1lLCBk
ZXYpOwogICAgICAgIGlmIChyZXR2YWwpCiAgICAgICAgICAgICAgICByZXR1cm4gcmV0dmFsOwoK
ICAgICAgICB0cC0+dHhfYnVmcyA9IHBjaV9hbGxvY19jb25zaXN0ZW50X1IxZjZhOGRjOCh0cC0+
cGNpX2RldiwgKDE1MzYgKiA0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZ0cC0+dHhfYnVmc19kbWEpOwogICAgICAgIHRwLT5yeF9yaW5nID0gcGNpX2FsbG9j
X2NvbnNpc3RlbnRfUjFmNmE4ZGM4KHRwLT5wY2lfZGV2LCAoKDgxOTIgPDwgMikgKyAxNiArIDIw
NDgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwLT5yeF9y
aW5nX2RtYSk7CiAgICAgICAgaWYgKHRwLT50eF9idWZzID09ICgodm9pZCAqKTApIHx8IHRwLT5y
eF9yaW5nID09ICgodm9pZCAqKTApKSB7CiAgICAgICAgICAgICAgICBmcmVlX2lycV9SZjIwZGFi
ZDgoZGV2LT5pcnEsIGRldik7CgogICAgICAgICAgICAgICAgaWYgKHRwLT50eF9idWZzKQogICAg
ICAgICAgICAgICAgICAgICAgICBwY2lfZnJlZV9jb25zaXN0ZW50X1JkMjMxMzlmMSh0cC0+cGNp
X2RldiwgKDE1MzYgKiA0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0cC0+dHhfYnVmcywgdHAtPnR4X2J1ZnNfZG1hKTsKICAgICAgICAgICAgICAgIGlmICh0
cC0+cnhfcmluZykKICAgICAgICAgICAgICAgICAgICAgICAgcGNpX2ZyZWVfY29uc2lzdGVudF9S
ZDIzMTM5ZjEodHAtPnBjaV9kZXYsICgoODE5MiA8PCAyKSArIDE2ICsgMjA0OCksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnJ4X3JpbmcsIHRwLT5yeF9y
aW5nX2RtYSk7CgogICAgICAgICAgICAgICAgcmV0dXJuIC0xMjsKCiAgICAgICAgfQoKICAgICAg
ICB0cC0+ZnVsbF9kdXBsZXggPSB0cC0+ZHVwbGV4X2xvY2s7CiAgICAgICAgdHAtPnR4X2ZsYWcg
PSAoMjU2IDw8IDExKSAmIDB4MDAzZjAwMDA7CiAgICAgICAgdHAtPnR3aXN0aWUgPSAxOwogICAg
ICAgIHRwLT50aW1lX3RvX2RpZSA9IDA7CgogICAgICAgIHJ0bDgxMzlfaW5pdF9yaW5nIChkZXYp
OwogICAgICAgIHJ0bDgxMzlfaHdfc3RhcnQgKGRldik7CgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgoKCiAgICAgICAgdHAtPnRo
cl9waWQgPSBrZXJuZWxfdGhyZWFkX1I3ZTllYmIwNSAocnRsODEzOV90aHJlYWQsIGRldiwgMHgw
MDAwMDIwMCB8IDB4MDAwMDA0MDApOwogICAgICAgIGlmICh0cC0+dGhyX3BpZCA8IDApCiAgICAg
ICAgICAgICAgICBwcmludGtfUjFiN2Q0MDc0ICgiPDQ+IiAiJXM6IHVuYWJsZSB0byBzdGFydCBr
ZXJuZWwgdGhyZWFkXG4iLAogICAgICAgICAgICAgICAgICAgICAgICBkZXYtPm5hbWUpOwoKICAg
ICAgICByZXR1cm4gMDsKfQoKCnN0YXRpYyB2b2lkIHJ0bF9jaGVja19tZWRpYSAoc3RydWN0IG5l
dF9kZXZpY2UgKmRldikKewogICAgICAgIHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKnRwID0gZGV2
LT5wcml2OwoKICAgICAgICBpZiAodHAtPnBoeXNbMF0gPj0gMCkgewogICAgICAgICAgICAgICAg
dTE2IG1paV9yZWc1ID0gbWRpb19yZWFkKGRldiwgdHAtPnBoeXNbMF0sIDUpOwogICAgICAgICAg
ICAgICAgaWYgKG1paV9yZWc1ID09IDB4ZmZmZikKICAgICAgICAgICAgICAgICAgICAgICAgOwog
ICAgICAgICAgICAgICAgZWxzZSBpZiAoKG1paV9yZWc1ICYgMHgwMTAwKSA9PSAweDAxMDAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKG1paV9yZWc1ICYgMHgwMEMwKSA9PSAw
eDAwNDApCiAgICAgICAgICAgICAgICAgICAgICAgIHRwLT5mdWxsX2R1cGxleCA9IDE7CgogICAg
ICAgICAgICAgICAgcHJpbnRrX1IxYjdkNDA3NCAoIjw2PiIiJXM6IFNldHRpbmcgJXMlcy1kdXBs
ZXggYmFzZWQgb24iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBhdXRvLW5lZ290
aWF0ZWQgcGFydG5lciBhYmlsaXR5ICU0LjR4LlxuIiwKICAgICAgICAgICAgICAgICAgICAgICAg
ZGV2LT5uYW1lLCBtaWlfcmVnNSA9PSAwID8gIiIgOgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChtaWlfcmVnNSAmIDB4MDE4MCkgPyAiMTAwbWJwcyAiIDogIjEwbWJwcyAiLAogICAg
ICAgICAgICAgICAgICAgICAgICB0cC0+ZnVsbF9kdXBsZXggPyAiZnVsbCIgOiAiaGFsZiIsIG1p
aV9yZWc1KTsKICAgICAgICB9Cn0KCgpzdGF0aWMgdm9pZCBydGw4MTM5X2h3X3N0YXJ0IChzdHJ1
Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHAg
PSBkZXYtPnByaXY7CiAgICAgICAgdm9pZCAqaW9hZGRyID0gdHAtPm1taW9fYWRkcjsKICAgICAg
ICB1MzIgaTsKICAgICAgICB1OCB0bXA7CgoKICAgICAgICBpZiAocnRsX2NoaXBfaW5mb1t0cC0+
Y2hpcHNldF0uZmxhZ3MgJiBIYXNIbHRDbGspCiAgICAgICAgICAgICAgICAoKih2b2xhdGlsZSB1
bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoSGx0Q2xrKSkpID0gKCgnUicpKSk7
CgogICAgICAgIHJ0bDgxMzlfY2hpcF9yZXNldCAoaW9hZGRyKTsKCgogICAgICAgIGRvIHsgKCoo
dm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENmZzkzNDYpKSkg
PSAoKENmZzkzNDZfVW5sb2NrKSkpOyAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9p
ZCAqKShpb2FkZHIgKyAoQ2ZnOTM0NikpKSk7IH0gd2hpbGUgKDApOwoKICAgICAgICBkbyB7ICgq
KHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKE1BQzAgKyAwKSkp
ID0gKCgoKF9fdTMyKSgqKHUzMiAqKSAoZGV2LT5kZXZfYWRkciArIDApKSkpKSk7ICgqKHZvbGF0
aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKE1BQzAgKyAwKSkpKTsgfSB3
aGlsZSAoMCk7CiAgICAgICAgZG8geyAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lk
ICopKGlvYWRkciArIChNQUMwICsgNCkpKSA9ICgoKChfX3UzMikoKih1MzIgKikgKGRldi0+ZGV2
X2FkZHIgKyA0KSkpKSkpOyAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlv
YWRkciArIChNQUMwICsgNCkpKSk7IH0gd2hpbGUgKDApOwoKCiAgICAgICAgKCoodm9sYXRpbGUg
dW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENoaXBDbWQpKSkgPSAoKENtZFJ4
RW5iIHwgQ21kVHhFbmIpKSk7CgogICAgICAgIHRwLT5yeF9jb25maWcgPSBydGw4MTM5X3J4X2Nv
bmZpZyB8IEFjY2VwdEJyb2FkY2FzdCB8IEFjY2VwdE15UGh5czsKICAgICAgICAoKih2b2xhdGls
ZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChSeENvbmZpZykpKSA9ICgodHAt
PnJ4X2NvbmZpZykpKTsKCgogICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZv
aWQgKikoaW9hZGRyICsgKFR4Q29uZmlnKSkpID0gKChydGw4MTM5X3R4X2NvbmZpZykpKTsKCiAg
ICAgICAgdHAtPmN1cl9yeCA9IDA7CgogICAgICAgIHJ0bF9jaGVja19tZWRpYSAoZGV2KTsKCiAg
ICAgICAgaWYgKHRwLT5jaGlwc2V0ID49IENIXzgxMzlCKSB7CgoKCiAgICAgICAgICAgICAgICAo
Kih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ29uZmlnMykp
KSA9ICgoKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENv
bmZpZzMpKSkpICYgfkNmZzNfTWFnaWMpKSk7CiAgICAgICAgfQoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOwoKCiAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQg
Y2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENmZzkzNDYpKSkgPSAoKENmZzkzNDZfTG9jaykp
KTsKCgogICAgICAgIGRvIHsgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShp
b2FkZHIgKyAoUnhCdWYpKSkgPSAoKHRwLT5yeF9yaW5nX2RtYSkpKTsgKCoodm9sYXRpbGUgdW5z
aWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoUnhCdWYpKSkpOyB9IHdoaWxlICgwKTsK
CgogICAgICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspCiAgICAgICAgICAgICAgICBkbyB7ICgq
KHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKFR4QWRkcjAgKyAo
aSAqIDQpKSkpID0gKCh0cC0+dHhfYnVmc19kbWEgKyAodHAtPnR4X2J1ZltpXSAtIHRwLT50eF9i
dWZzKSkpKTsgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAo
VHhBZGRyMCArIChpICogNCkpKSkpOyB9IHdoaWxlICgwKTsKCiAgICAgICAgKCoodm9sYXRpbGUg
dW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoUnhNaXNzZWQpKSkgPSAoKDApKSk7
CgogICAgICAgIHJ0bDgxMzlfc2V0X3J4X21vZGUgKGRldik7CgoKICAgICAgICAoKih2b2xhdGls
ZSB1bnNpZ25lZCBzaG9ydCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKE11bHRpSW50cikpKSA9ICgo
KCoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikgKCh2b2lkICopKGlvYWRkciArIChNdWx0aUlu
dHIpKSkpICYgTXVsdGlJbnRyQ2xlYXIpKSk7CgoKICAgICAgICB0bXAgPSAoKih2b2xhdGlsZSB1
bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2hpcENtZCkpKSk7CiAgICAgICAg
aWYgKCghKHRtcCAmIENtZFJ4RW5iKSkgfHwgKCEodG1wICYgQ21kVHhFbmIpKSkKICAgICAgICAg
ICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChD
aGlwQ21kKSkpID0gKChDbWRSeEVuYiB8IENtZFR4RW5iKSkpOwoKCiAgICAgICAgKCoodm9sYXRp
bGUgdW5zaWduZWQgc2hvcnQgKikgKCh2b2lkICopKGlvYWRkciArIChJbnRyTWFzaykpKSA9ICgo
cnRsODEzOV9pbnRyX21hc2spKSk7CgogICAgICAgIG5ldGlmX3N0YXJ0X3F1ZXVlIChkZXYpOwp9
CgoKCnN0YXRpYyB2b2lkIHJ0bDgxMzlfaW5pdF9yaW5nIChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2
KQp7CiAgICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHAgPSBkZXYtPnByaXY7CiAgICAg
ICAgaW50IGk7CgogICAgICAgIHRwLT5jdXJfcnggPSAwOwogICAgICAgIHRwLT5jdXJfdHggPSAw
OwogICAgICAgIHRwLT5kaXJ0eV90eCA9IDA7CgogICAgICAgIGZvciAoaSA9IDA7IGkgPCA0OyBp
KyspCiAgICAgICAgICAgICAgICB0cC0+dHhfYnVmW2ldID0gJnRwLT50eF9idWZzW2kgKiAxNTM2
XTsKfQoKCgpzdGF0aWMgaW50IG5leHRfdGljayA9IDMgKiAxMDA7CgoKc3RhdGljIGlubGluZSB2
b2lkIHJ0bDgxMzlfdHVuZV90d2lzdGVyIChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHApIHt9
CiMgMTQ5MyAiODEzOXRvby5jIgpzdGF0aWMgaW5saW5lIHZvaWQgcnRsODEzOV90aHJlYWRfaXRl
ciAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZvaWQgKmlvYWRkcikKewogICAgICAgIGludCBtaWlfcmVnNTsKCiAgICAgICAgbWlp
X3JlZzUgPSBtZGlvX3JlYWQgKGRldiwgdHAtPnBoeXNbMF0sIDUpOwoKICAgICAgICBpZiAoIXRw
LT5kdXBsZXhfbG9jayAmJiBtaWlfcmVnNSAhPSAweGZmZmYpIHsKICAgICAgICAgICAgICAgIGlu
dCBkdXBsZXggPSAobWlpX3JlZzUgJiAweDAxMDApCiAgICAgICAgICAgICAgICAgICAgfHwgKG1p
aV9yZWc1ICYgMHgwMUMwKSA9PSAweDAwNDA7CiAgICAgICAgICAgICAgICBpZiAodHAtPmZ1bGxf
ZHVwbGV4ICE9IGR1cGxleCkgewogICAgICAgICAgICAgICAgICAgICAgICB0cC0+ZnVsbF9kdXBs
ZXggPSBkdXBsZXg7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAobWlpX3JlZzUpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGtfUjFiN2Q0MDc0ICgiPDY+IgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzOiBTZXR0aW5nICVzLWR1cGxl
eCBiYXNlZCBvbiBNSUkgIyVkIGxpbmsiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiIHBhcnRuZXIgYWJpbGl0eSBvZiAlNC40eC5cbiIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZXYtPm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0cC0+ZnVsbF9kdXBsZXggPyAiZnVsbCIgOiAiaGFsZiIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cC0+cGh5c1swXSwgbWlpX3JlZzUp
OwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHByaW50a19SMWI3ZDQwNzQoIjw2PiIiJXM6IG1lZGlhIGlzIHVuY29ubmVjdGVk
LCBsaW5rIGRvd24sIG9yIGluY29tcGF0aWJsZSBjb25uZWN0aW9uXG4iLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXYtPm5hbWUpOwogICAgICAgICAgICAgICAgICAg
ICAgICB9CgoKCgoKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG5leHRfdGlj
ayA9IDEwMCAqIDYwOwoKICAgICAgICBydGw4MTM5X3R1bmVfdHdpc3RlciAoZGV2LCB0cCk7Cgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKfQoKCnN0YXRpYyBp
bnQgcnRsODEzOV90aHJlYWQgKHZvaWQgKmRhdGEpCnsKICAgICAgICBzdHJ1Y3QgbmV0X2Rldmlj
ZSAqZGV2ID0gZGF0YTsKICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRlICp0cCA9IGRldi0+
cHJpdjsKICAgICAgICB1bnNpZ25lZCBsb25nIHRpbWVvdXQ7CgogICAgICAgIGRhZW1vbml6ZV9S
ZDY2YTM1NGEgKCk7CiAgICAgICAgcmVwYXJlbnRfdG9faW5pdF9SZWM2MTU4ZDAoKTsKICAgICAg
ICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJjbGkiOiA6IDoibWVtb3J5Iik7ICh2b2lkKSgm
Z2V0X2N1cnJlbnQoKS0+c2lnbWFza19sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgc2lnZW1w
dHlzZXQoJmdldF9jdXJyZW50KCktPmJsb2NrZWQpOwogICAgICAgIHJlY2FsY19zaWdwZW5kaW5n
X1I4OTY0NzU1NChnZXRfY3VycmVudCgpKTsKICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsg
X19hc21fXyBfX3ZvbGF0aWxlX18oInN0aSI6IDogOiJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7Cgog
ICAgICAgIHN0cm5jcHkgKGdldF9jdXJyZW50KCktPmNvbW0sIGRldi0+bmFtZSwgc2l6ZW9mKGdl
dF9jdXJyZW50KCktPmNvbW0pIC0gMSk7CiAgICAgICAgZ2V0X2N1cnJlbnQoKS0+Y29tbVtzaXpl
b2YoZ2V0X2N1cnJlbnQoKS0+Y29tbSkgLSAxXSA9ICdcMCc7CgogICAgICAgIHdoaWxlICgxKSB7
CiAgICAgICAgICAgICAgICB0aW1lb3V0ID0gbmV4dF90aWNrOwogICAgICAgICAgICAgICAgZG8g
ewogICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gaW50ZXJydXB0aWJsZV9zbGVlcF9v
bl90aW1lb3V0X1I0MDdhMjhkOCAoJnRwLT50aHJfd2FpdCwgdGltZW91dCk7CiAgICAgICAgICAg
ICAgICB9IHdoaWxlICghc2lnbmFsX3BlbmRpbmcgKGdldF9jdXJyZW50KCkpICYmICh0aW1lb3V0
ID4gMCkpOwoKICAgICAgICAgICAgICAgIGlmIChzaWduYWxfcGVuZGluZyAoZ2V0X2N1cnJlbnQo
KSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygi
Y2xpIjogOiA6Im1lbW9yeSIpOyAodm9pZCkoJmdldF9jdXJyZW50KCktPnNpZ21hc2tfbG9jayk7
IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgICAgICBmbHVzaF9zaWduYWxzX1IyMGQ5
MmUyZChnZXRfY3VycmVudCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgZG8geyBkbyB7IH0g
d2hpbGUoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJzdGkiOiA6IDoibWVtb3J5Iik7IH0gd2hp
bGUgKDApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICh0cC0+dGltZV90
b19kaWUpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIHJ0
bmxfbG9ja19SYzdhNGZiZWQgKCk7CiAgICAgICAgICAgICAgICBydGw4MTM5X3RocmVhZF9pdGVy
IChkZXYsIHRwLCB0cC0+bW1pb19hZGRyKTsKICAgICAgICAgICAgICAgIHJ0bmxfdW5sb2NrX1I2
ZTcyMGZmMiAoKTsKICAgICAgICB9CgogICAgICAgIGNvbXBsZXRlX2FuZF9leGl0X1I5NWRlZmZi
NyAoJnRwLT50aHJfZXhpdGVkLCAwKTsKfQoKCnN0YXRpYyB2b2lkIHJ0bDgxMzlfdHhfY2xlYXIg
KHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKnRwKQp7CiAgICAgICAgdHAtPmN1cl90eCA9IDA7CiAg
ICAgICAgdHAtPmRpcnR5X3R4ID0gMDsKCgp9CgoKc3RhdGljIHZvaWQgcnRsODEzOV90eF90aW1l
b3V0IChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgc3RydWN0IHJ0bDgxMzlfcHJp
dmF0ZSAqdHAgPSBkZXYtPnByaXY7CiAgICAgICAgdm9pZCAqaW9hZGRyID0gdHAtPm1taW9fYWRk
cjsKICAgICAgICBpbnQgaTsKICAgICAgICB1OCB0bXA4OwogICAgICAgIHVuc2lnbmVkIGxvbmcg
ZmxhZ3M7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoKCgogICAg
ICAgIHRwLT54c3RhdHMudHhfdGltZW91dHMrKzsKCgogICAgICAgIHRtcDggPSAoKih2b2xhdGls
ZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2hpcENtZCkpKSk7CiAgICAg
ICAgaWYgKHRtcDggJiBDbWRUeEVuYikKICAgICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2ln
bmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDaGlwQ21kKSkpID0gKChDbWRSeEVuYikp
KTsKCgogICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopICgodm9pZCAqKShpb2Fk
ZHIgKyAoSW50ck1hc2spKSkgPSAoKDB4MDAwMCkpKTsKCgogICAgICAgIHByaW50a19SMWI3ZDQw
NzQgKCI8Nz4iICIlczogVHggcXVldWUgc3RhcnQgZW50cnkgJWxkICBkaXJ0eSBlbnRyeSAlbGQu
XG4iLAogICAgICAgICAgICAgICAgZGV2LT5uYW1lLCB0cC0+Y3VyX3R4LCB0cC0+ZGlydHlfdHgp
OwogICAgICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspCiAgICAgICAgICAgICAgICBwcmludGtf
UjFiN2Q0MDc0ICgiPDc+IiAiJXM6ICBUeCBkZXNjcmlwdG9yICVkIGlzICU4LjhseC4lc1xuIiwK
ICAgICAgICAgICAgICAgICAgICAgICAgZGV2LT5uYW1lLCBpLCAoKHVuc2lnbmVkIGxvbmcpICgq
KHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKFR4U3RhdHVzMCAr
IChpICogNCkpKSkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgaSA9PSB0cC0+ZGlydHlfdHgg
JSA0ID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIChxdWV1ZSBoZWFkKSIgOiAi
Iik7CgoKICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUw
IDsgY2xpIjoiPWciIChmbGFncyk6IDoibWVtb3J5Iik7ICh2b2lkKSgmdHAtPmxvY2spOyB9IHdo
aWxlICgwKTsKICAgICAgICBydGw4MTM5X3R4X2NsZWFyICh0cCk7CiAgICAgICAgZG8geyBkbyB7
IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJn
IiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7CgoKICAgICAgICBydGw4MTM5
X2h3X3N0YXJ0IChkZXYpOwoKICAgICAgICBuZXRpZl93YWtlX3F1ZXVlIChkZXYpOwp9CgoKc3Rh
dGljIGludCBydGw4MTM5X3N0YXJ0X3htaXQgKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBu
ZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRlICp0cCA9IGRl
di0+cHJpdjsKICAgICAgICB2b2lkICppb2FkZHIgPSB0cC0+bW1pb19hZGRyOwogICAgICAgIHVu
c2lnbmVkIGludCBlbnRyeTsKCgogICAgICAgIGVudHJ5ID0gdHAtPmN1cl90eCAlIDQ7CgogICAg
ICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0KChza2ItPmxlbiA8IDE1MzYpLDEpKSB7CiAgICAgICAg
ICAgICAgICBza2JfY29weV9hbmRfY3N1bV9kZXZfUjEzOWM5MDQ5KHNrYiwgdHAtPnR4X2J1Zltl
bnRyeV0pOwogICAgICAgICAgICAgICAga2ZyZWVfc2tiKHNrYik7CiAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgIGtmcmVlX3NrYihza2IpOwogICAgICAgICAgICAgICAgdHAtPnN0YXRz
LnR4X2Ryb3BwZWQrKzsKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCgogICAg
ICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsgKHZvaWQp
KCZ0cC0+bG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgIGRvIHsgKCoodm9sYXRpbGUgdW5zaWdu
ZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoVHhTdGF0dXMwICsgKGVudHJ5ICogc2l6ZW9m
ICh1MzIpKSkpKSA9ICgodHAtPnR4X2ZsYWcgfCAoc2tiLT5sZW4gPj0gNjAgPyBza2ItPmxlbiA6
IDYwKSkpKTsgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAo
VHhTdGF0dXMwICsgKGVudHJ5ICogc2l6ZW9mICh1MzIpKSkpKSk7IH0gd2hpbGUgKDApOwoKCiAg
ICAgICAgZGV2LT50cmFuc19zdGFydCA9IGppZmZpZXNfUjBkYTAyZDY3OwoKICAgICAgICB0cC0+
Y3VyX3R4Kys7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCIiOiA6IDoibWVtb3J5Iik7
CgogICAgICAgIGlmICgodHAtPmN1cl90eCAtIDQpID09IHRwLT5kaXJ0eV90eCkKICAgICAgICAg
ICAgICAgIG5ldGlmX3N0b3BfcXVldWUgKGRldik7CiAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUo
MCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJzdGkiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDAp
OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDsKCgogICAgICAgIHJldHVybiAwOwp9CgoKc3RhdGljIHZvaWQgcnRsODEzOV90eF9pbnRlcnJ1
cHQgKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRlICp0cCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQgKmlvYWRkcikKewogICAgICAgIHVuc2lnbmVkIGxvbmcgZGlydHlfdHgs
IHR4X2xlZnQ7CgogICAgICAgIGlmKCEoZGV2ICE9ICgodm9pZCAqKTApKSkgeyBwcmludGtfUjFi
N2Q0MDc0KCAiQXNzZXJ0aW9uIGZhaWxlZCEgJXMsJXMsJXMsbGluZT0lZFxuIiwgImRldiAhPSBO
VUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18sMTY3OSk7IH07CiAgICAgICAgaWYoISh0cCAh
PSAoKHZvaWQgKikwKSkpIHsgcHJpbnRrX1IxYjdkNDA3NCggIkFzc2VydGlvbiBmYWlsZWQhICVz
LCVzLCVzLGxpbmU9JWRcbiIsICJ0cCAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18s
MTY4MCk7IH07CiAgICAgICAgaWYoIShpb2FkZHIgIT0gKCh2b2lkICopMCkpKSB7IHByaW50a19S
MWI3ZDQwNzQoICJBc3NlcnRpb24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAiaW9hZGRy
ICE9IE5VTEwiLCI4MTM5dG9vLmMiLF9fRlVOQ1RJT05fXywxNjgxKTsgfTsKCiAgICAgICAgZGly
dHlfdHggPSB0cC0+ZGlydHlfdHg7CiAgICAgICAgdHhfbGVmdCA9IHRwLT5jdXJfdHggLSBkaXJ0
eV90eDsKICAgICAgICB3aGlsZSAodHhfbGVmdCA+IDApIHsKICAgICAgICAgICAgICAgIGludCBl
bnRyeSA9IGRpcnR5X3R4ICUgNDsKICAgICAgICAgICAgICAgIGludCB0eHN0YXR1czsKCiAgICAg
ICAgICAgICAgICB0eHN0YXR1cyA9ICgodW5zaWduZWQgbG9uZykgKCoodm9sYXRpbGUgdW5zaWdu
ZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoVHhTdGF0dXMwICsgKGVudHJ5ICogc2l6ZW9m
ICh1MzIpKSkpKSkpOwoKICAgICAgICAgICAgICAgIGlmICghKHR4c3RhdHVzICYgKFR4U3RhdE9L
IHwgVHhVbmRlcnJ1biB8IFR4QWJvcnRlZCkpKQogICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKCgogICAgICAgICAgICAgICAgaWYgKHR4c3RhdHVzICYgKFR4T3V0T2ZXaW5kb3cgfCBUeEFi
b3J0ZWQpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDsKCiAgICAgICAgICAgICAgICAgICAgICAgIHRwLT5zdGF0cy50eF9lcnJvcnMrKzsK
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR4c3RhdHVzICYgVHhBYm9ydGVkKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnN0YXRzLnR4X2Fib3J0ZWRfZXJyb3JzKys7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50
ICopICgodm9pZCAqKShpb2FkZHIgKyAoVHhDb25maWcpKSkgPSAoKFR4Q2xlYXJBYnQpKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQg
KikgKCh2b2lkICopKGlvYWRkciArIChJbnRyU3RhdHVzKSkpID0gKChUeEVycikpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIiI6IDogOiJt
ZW1vcnkiKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICBpZiAodHhzdGF0dXMgJiBUeENhcnJpZXJMb3N0KQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRwLT5zdGF0cy50eF9jYXJyaWVyX2Vycm9ycysrOwogICAgICAgICAgICAgICAgICAg
ICAgICBpZiAodHhzdGF0dXMgJiBUeE91dE9mV2luZG93KQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRwLT5zdGF0cy50eF93aW5kb3dfZXJyb3JzKys7CgoKCgogICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR4c3RhdHVzICYgVHhVbmRl
cnJ1bikgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHAtPnR4X2ZsYWcg
PCAweDAwMzAwMDAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAt
PnR4X2ZsYWcgKz0gMHgwMDAyMDAwMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
cC0+c3RhdHMudHhfZmlmb19lcnJvcnMrKzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICB0cC0+c3RhdHMuY29sbGlzaW9ucyArPSAodHhzdGF0dXMgPj4g
MjQpICYgMTU7CiAgICAgICAgICAgICAgICAgICAgICAgIHRwLT5zdGF0cy50eF9ieXRlcyArPSB0
eHN0YXR1cyAmIDB4N2ZmOwogICAgICAgICAgICAgICAgICAgICAgICB0cC0+c3RhdHMudHhfcGFj
a2V0cysrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGRpcnR5X3R4Kys7CiAg
ICAgICAgICAgICAgICB0eF9sZWZ0LS07CiAgICAgICAgfQoKCiAgICAgICAgaWYgKHRwLT5jdXJf
dHggLSBkaXJ0eV90eCA+IDQpIHsKICAgICAgICAgICAgICAgIHByaW50a19SMWI3ZDQwNzQgKCI8
Mz4iICIlczogT3V0LW9mLXN5bmMgZGlydHkgcG9pbnRlciwgJWxkIHZzLiAlbGQuXG4iLAogICAg
ICAgICAgICAgICAgICAgICAgICBkZXYtPm5hbWUsIGRpcnR5X3R4LCB0cC0+Y3VyX3R4KTsKICAg
ICAgICAgICAgICAgIGRpcnR5X3R4ICs9IDQ7CiAgICAgICAgfQoKCgogICAgICAgIGlmICh0cC0+
ZGlydHlfdHggIT0gZGlydHlfdHgpIHsKICAgICAgICAgICAgICAgIHRwLT5kaXJ0eV90eCA9IGRp
cnR5X3R4OwogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJsb2NrOyBhZGRs
ICQwLDAoJSVlc3ApIjogOiA6Im1lbW9yeSIpOwogICAgICAgICAgICAgICAgaWYgKG5ldGlmX3F1
ZXVlX3N0b3BwZWQgKGRldikpCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldGlmX3dha2VfcXVl
dWUgKGRldik7CiAgICAgICAgfQp9CgoKCnN0YXRpYyB2b2lkIHJ0bDgxMzlfcnhfZXJyICh1MzIg
cnhfc3RhdHVzLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHAsIHZvaWQgKmlvYWRkcikKewogICAgICAg
IHU4IHRtcDg7CiAgICAgICAgaW50IHRtcF93b3JrOwoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA7CgogICAgICAgIGlmIChyeF9zdGF0dXMgJiBSeFRvb0xvbmcpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgogICAgICAgIH0K
ICAgICAgICB0cC0+c3RhdHMucnhfZXJyb3JzKys7CiAgICAgICAgaWYgKHJ4X3N0YXR1cyAmIChS
eEJhZFN5bWJvbCB8IFJ4QmFkQWxpZ24pKQogICAgICAgICAgICAgICAgdHAtPnN0YXRzLnJ4X2Zy
YW1lX2Vycm9ycysrOwogICAgICAgIGlmIChyeF9zdGF0dXMgJiAoUnhSdW50IHwgUnhUb29Mb25n
KSkKICAgICAgICAgICAgICAgIHRwLT5zdGF0cy5yeF9sZW5ndGhfZXJyb3JzKys7CiAgICAgICAg
aWYgKHJ4X3N0YXR1cyAmIFJ4Q1JDRXJyKQogICAgICAgICAgICAgICAgdHAtPnN0YXRzLnJ4X2Ny
Y19lcnJvcnMrKzsKCgoKCiAgICAgICAgZG8geyAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICop
ICgodm9pZCAqKShpb2FkZHIgKyAoQ2hpcENtZCkpKSA9ICgoQ21kVHhFbmIpKSk7ICgqKHZvbGF0
aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDaGlwQ21kKSkpKTsgfSB3
aGlsZSAoMCk7CiAgICAgICAgdG1wX3dvcmsgPSAyMDA7CiAgICAgICAgd2hpbGUgKC0tdG1wX3dv
cmsgPiAwKSB7CiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMSkgPyAoKDEp
ID4gMjAwMDAgPyBfX2JhZF91ZGVsYXkoKSA6IF9fY29uc3RfdWRlbGF5X1JlYWUzZGZkNigoMSkg
KiAweDEwYzZ1bCkpIDogX191ZGVsYXlfUjllN2Q2YmQwKDEpKTsKICAgICAgICAgICAgICAgIHRt
cDggPSAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2hp
cENtZCkpKSk7CiAgICAgICAgICAgICAgICBpZiAoISh0bXA4ICYgQ21kUnhFbmIpKQogICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgaWYgKHRtcF93b3JrIDw9
IDApCiAgICAgICAgICAgICAgICBwcmludGtfUjFiN2Q0MDc0ICgiPDQ+IiAiODEzOXRvbyIgIjog
IiAicnggc3RvcCB3YWl0IHRvbyBsb25nXG4iKTsKCiAgICAgICAgdG1wX3dvcmsgPSAyMDA7CiAg
ICAgICAgd2hpbGUgKC0tdG1wX3dvcmsgPiAwKSB7CiAgICAgICAgICAgICAgICBkbyB7ICgqKHZv
bGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDaGlwQ21kKSkpID0g
KChDbWRSeEVuYiB8IENtZFR4RW5iKSkpOyAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgo
dm9pZCAqKShpb2FkZHIgKyAoQ2hpcENtZCkpKSk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAg
ICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDEpID8gKCgxKSA+IDIwMDAwID8gX19iYWRfdWRlbGF5
KCkgOiBfX2NvbnN0X3VkZWxheV9SZWFlM2RmZDYoKDEpICogMHgxMGM2dWwpKSA6IF9fdWRlbGF5
X1I5ZTdkNmJkMCgxKSk7CiAgICAgICAgICAgICAgICB0bXA4ID0gKCoodm9sYXRpbGUgdW5zaWdu
ZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENoaXBDbWQpKSkpOwogICAgICAgICAgICAg
ICAgaWYgKCh0bXA4ICYgQ21kUnhFbmIpICYmICh0bXA4ICYgQ21kVHhFbmIpKQogICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgaWYgKHRtcF93b3JrIDw9IDAp
CiAgICAgICAgICAgICAgICBwcmludGtfUjFiN2Q0MDc0ICgiPDQ+IiAiODEzOXRvbyIgIjogIiAi
dHgvcnggZW5hYmxlIHdhaXQgdG9vIGxvbmdcbiIpOwoKCiAgICAgICAgZG8geyAoKih2b2xhdGls
ZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2ZnOTM0NikpKSA9ICgoQ2Zn
OTM0Nl9VbmxvY2spKSk7ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlv
YWRkciArIChDZmc5MzQ2KSkpKTsgfSB3aGlsZSAoMCk7CgogICAgICAgICgqKHZvbGF0aWxlIHVu
c2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDaGlwQ21kKSkpID0gKChDbWRSeEVu
YiB8IENtZFR4RW5iKSkpOwoKICAgICAgICB0cC0+cnhfY29uZmlnID0gcnRsODEzOV9yeF9jb25m
aWcgfCBBY2NlcHRCcm9hZGNhc3QgfCBBY2NlcHRNeVBoeXM7CiAgICAgICAgKCoodm9sYXRpbGUg
dW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoUnhDb25maWcpKSkgPSAoKHRwLT5y
eF9jb25maWcpKSk7CiAgICAgICAgdHAtPmN1cl9yeCA9IDA7CgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA7CgoKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBj
aGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2ZnOTM0NikpKSA9ICgoQ2ZnOTM0Nl9Mb2NrKSkp
OwoKCiAgICAgICAgZG8geyAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlv
YWRkciArIChSeEJ1ZikpKSA9ICgodHAtPnJ4X3JpbmdfZG1hKSkpOyAoKih2b2xhdGlsZSB1bnNp
Z25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChSeEJ1ZikpKSk7IH0gd2hpbGUgKDApOwoK
CiAgICAgICAgX19zZXRfcnhfbW9kZSAoZGV2KTsKfQoKc3RhdGljIHZvaWQgcnRsODEzOV9yeF9p
bnRlcnJ1cHQgKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRlICp0cCwgdm9pZCAqaW9hZGRyKQp7CiAg
ICAgICAgdW5zaWduZWQgY2hhciAqcnhfcmluZzsKICAgICAgICB1MTYgY3VyX3J4OwoKICAgICAg
ICBpZighKGRldiAhPSAoKHZvaWQgKikwKSkpIHsgcHJpbnRrX1IxYjdkNDA3NCggIkFzc2VydGlv
biBmYWlsZWQhICVzLCVzLCVzLGxpbmU9JWRcbiIsICJkZXYgIT0gTlVMTCIsIjgxMzl0b28uYyIs
X19GVU5DVElPTl9fLDE4MjIpOyB9OwogICAgICAgIGlmKCEodHAgIT0gKCh2b2lkICopMCkpKSB7
IHByaW50a19SMWI3ZDQwNzQoICJBc3NlcnRpb24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4i
LCAidHAgIT0gTlVMTCIsIjgxMzl0b28uYyIsX19GVU5DVElPTl9fLDE4MjMpOyB9OwogICAgICAg
IGlmKCEoaW9hZGRyICE9ICgodm9pZCAqKTApKSkgeyBwcmludGtfUjFiN2Q0MDc0KCAiQXNzZXJ0
aW9uIGZhaWxlZCEgJXMsJXMsJXMsbGluZT0lZFxuIiwgImlvYWRkciAhPSBOVUxMIiwiODEzOXRv
by5jIixfX0ZVTkNUSU9OX18sMTgyNCk7IH07CgogICAgICAgIHJ4X3JpbmcgPSB0cC0+cnhfcmlu
ZzsKICAgICAgICBjdXJfcnggPSB0cC0+Y3VyX3J4OwoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgoKICAgICAgICB3aGlsZSAoKCgqKHZv
bGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDaGlwQ21kKSkpKSAm
IFJ4QnVmRW1wdHkpID09IDApIHsKICAgICAgICAgICAgICAgIGludCByaW5nX29mZnNldCA9IGN1
cl9yeCAlICg4MTkyIDw8IDIpOwogICAgICAgICAgICAgICAgdTMyIHJ4X3N0YXR1czsKICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCByeF9zaXplOwogICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IHBrdF9zaXplOwogICAgICAgICAgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYjsKCiAgICAg
ICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImxvY2s7IGFkZGwgJDAsMCglJWVzcCki
OiA6IDoibWVtb3J5Iik7CgoKICAgICAgICAgICAgICAgIHJ4X3N0YXR1cyA9ICgoX191MzIpKCoo
dTMyICopIChyeF9yaW5nICsgcmluZ19vZmZzZXQpKSk7CiAgICAgICAgICAgICAgICByeF9zaXpl
ID0gcnhfc3RhdHVzID4+IDE2OwogICAgICAgICAgICAgICAgcGt0X3NpemUgPSByeF9zaXplIC0g
NDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwojIDE4NjYgIjgx
Mzl0b28uYyIKICAgICAgICAgICAgICAgIGlmIChyeF9zaXplID09IDB4ZmZmMCkgewogICAgICAg
ICAgICAgICAgICAgICAgICB0cC0+eHN0YXRzLmVhcmx5X3J4Kys7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKCgoKCgogICAgICAgICAgICAgICAgaWYg
KChyeF9zaXplID4gKDE1MzYgKzQpKSB8fAogICAgICAgICAgICAgICAgICAgIChyeF9zaXplIDwg
OCkgfHwKICAgICAgICAgICAgICAgICAgICAoIShyeF9zdGF0dXMgJiBSeFN0YXR1c09LKSkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgcnRsODEzOV9yeF9lcnIgKHJ4X3N0YXR1cywgZGV2LCB0
cCwgaW9hZGRyKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
ICAgfQojIDE4OTIgIjgxMzl0b28uYyIKICAgICAgICAgICAgICAgIHNrYiA9IGRldl9hbGxvY19z
a2IgKHBrdF9zaXplICsgMik7CiAgICAgICAgICAgICAgICBpZiAoc2tiKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHNrYi0+ZGV2ID0gZGV2OwogICAgICAgICAgICAgICAgICAgICAgICBza2Jf
cmVzZXJ2ZSAoc2tiLCAyKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGV0aF9jb3B5X2FuZF9z
dW0gKHNrYiwgJnJ4X3JpbmdbcmluZ19vZmZzZXQgKyA0XSwgcGt0X3NpemUsIDApOwogICAgICAg
ICAgICAgICAgICAgICAgICBza2JfcHV0IChza2IsIHBrdF9zaXplKTsKCiAgICAgICAgICAgICAg
ICAgICAgICAgIHNrYi0+cHJvdG9jb2wgPSBldGhfdHlwZV90cmFuc19SMmI2YzdlOTMgKHNrYiwg
ZGV2KTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV0aWZfcnhfUmFhMzY2OGEzIChza2IpOwog
ICAgICAgICAgICAgICAgICAgICAgICBkZXYtPmxhc3RfcnggPSBqaWZmaWVzX1IwZGEwMmQ2NzsK
ICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnN0YXRzLnJ4X2J5dGVzICs9IHBrdF9zaXplOwog
ICAgICAgICAgICAgICAgICAgICAgICB0cC0+c3RhdHMucnhfcGFja2V0cysrOwogICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRrX1IxYjdkNDA3NCAo
Ijw0PiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXM6IE1lbW9yeSBzcXVlZXpl
LCBkcm9wcGluZyBwYWNrZXQuXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
di0+bmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRwLT5zdGF0cy5yeF9kcm9wcGVkKys7
CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgY3VyX3J4ID0gKGN1cl9yeCArIHJ4
X3NpemUgKyA0ICsgMykgJiB+MzsKICAgICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVk
IHNob3J0ICopICgodm9pZCAqKShpb2FkZHIgKyAoUnhCdWZQdHIpKSkgPSAoKGN1cl9yeCAtIDE2
KSkpOwoKICAgICAgICAgICAgICAgIGlmICgoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSAo
KHZvaWQgKikoaW9hZGRyICsgKEludHJTdGF0dXMpKSkpICYgUnhBY2tCaXRzKQogICAgICAgICAg
ICAgICAgICAgICAgICBkbyB7ICgqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopICgodm9pZCAq
KShpb2FkZHIgKyAoSW50clN0YXR1cykpKSA9ICgoUnhBY2tCaXRzKSkpOyAoKih2b2xhdGlsZSB1
bnNpZ25lZCBzaG9ydCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKEludHJTdGF0dXMpKSkpOyB9IHdo
aWxlICgwKTsKICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA7CgoKCgogICAgICAgIHRwLT5jdXJfcnggPSBjdXJfcng7Cn0KCgpz
dGF0aWMgdm9pZCBydGw4MTM5X3dlaXJkX2ludGVycnVwdCAoc3RydWN0IG5ldF9kZXZpY2UgKmRl
diwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGw4MTM5X3By
aXZhdGUgKnRwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqaW9h
ZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXR1cywgaW50
IGxpbmtfY2hhbmdlZCkKewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgog
ICAgICAgIGlmKCEoZGV2ICE9ICgodm9pZCAqKTApKSkgeyBwcmludGtfUjFiN2Q0MDc0KCAiQXNz
ZXJ0aW9uIGZhaWxlZCEgJXMsJXMsJXMsbGluZT0lZFxuIiwgImRldiAhPSBOVUxMIiwiODEzOXRv
by5jIixfX0ZVTkNUSU9OX18sMTkzNik7IH07CiAgICAgICAgaWYoISh0cCAhPSAoKHZvaWQgKikw
KSkpIHsgcHJpbnRrX1IxYjdkNDA3NCggIkFzc2VydGlvbiBmYWlsZWQhICVzLCVzLCVzLGxpbmU9
JWRcbiIsICJ0cCAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18sMTkzNyk7IH07CiAg
ICAgICAgaWYoIShpb2FkZHIgIT0gKCh2b2lkICopMCkpKSB7IHByaW50a19SMWI3ZDQwNzQoICJB
c3NlcnRpb24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAiaW9hZGRyICE9IE5VTEwiLCI4
MTM5dG9vLmMiLF9fRlVOQ1RJT05fXywxOTM4KTsgfTsKCgogICAgICAgIHRwLT5zdGF0cy5yeF9t
aXNzZWRfZXJyb3JzICs9ICgodW5zaWduZWQgbG9uZykgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50
ICopICgodm9pZCAqKShpb2FkZHIgKyAoUnhNaXNzZWQpKSkpKTsKICAgICAgICAoKih2b2xhdGls
ZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChSeE1pc3NlZCkpKSA9ICgoMCkp
KTsKCiAgICAgICAgaWYgKChzdGF0dXMgJiBSeFVuZGVycnVuKSAmJiBsaW5rX2NoYW5nZWQgJiYK
ICAgICAgICAgICAgKHRwLT5kcnZfZmxhZ3MgJiBIQVNfTE5LX0NITkcpKSB7CgogICAgICAgICAg
ICAgICAgaW50IGxwYXIgPSAoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSAoKHZvaWQgKiko
aW9hZGRyICsgKE5XYXlMUEFSKSkpKTsKICAgICAgICAgICAgICAgIGludCBkdXBsZXggPSAobHBh
ciAmIDB4MDEwMCkgfHwgKGxwYXIgJiAweDAxQzApID09IDB4MDA0MAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHx8IHRwLT5kdXBsZXhfbG9jazsKICAgICAgICAgICAgICAgIGlmICh0
cC0+ZnVsbF9kdXBsZXggIT0gZHVwbGV4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRwLT5m
dWxsX2R1cGxleCA9IGR1cGxleDsKCgoKCgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgc3RhdHVzICY9IH5SeFVuZGVycnVuOwogICAgICAgIH0KCgogICAgICAgIGlmIChzdGF0dXMg
JgogICAgICAgICAgICAoUnhVbmRlcnJ1biB8IFJ4T3ZlcmZsb3cgfCBSeEVyciB8IFJ4RklGT092
ZXIpKQogICAgICAgICAgICAgICAgdHAtPnN0YXRzLnJ4X2Vycm9ycysrOwoKICAgICAgICBpZiAo
c3RhdHVzICYgUENTVGltZW91dCkKICAgICAgICAgICAgICAgIHRwLT5zdGF0cy5yeF9sZW5ndGhf
ZXJyb3JzKys7CiAgICAgICAgaWYgKHN0YXR1cyAmIChSeFVuZGVycnVuIHwgUnhGSUZPT3Zlcikp
CiAgICAgICAgICAgICAgICB0cC0+c3RhdHMucnhfZmlmb19lcnJvcnMrKzsKICAgICAgICBpZiAo
c3RhdHVzICYgUENJRXJyKSB7CiAgICAgICAgICAgICAgICB1MTYgcGNpX2NtZF9zdGF0dXM7CiAg
ICAgICAgICAgICAgICBwY2lfcmVhZF9jb25maWdfd29yZF9SMDEzZjRlZTQgKHRwLT5wY2lfZGV2
LCAweDA2LCAmcGNpX2NtZF9zdGF0dXMpOwogICAgICAgICAgICAgICAgcGNpX3dyaXRlX2NvbmZp
Z193b3JkX1JjN2MzZTBhOSAodHAtPnBjaV9kZXYsIDB4MDYsIHBjaV9jbWRfc3RhdHVzKTsKCiAg
ICAgICAgICAgICAgICBwcmludGtfUjFiN2Q0MDc0ICgiPDM+IiAiJXM6IFBDSSBCdXMgZXJyb3Ig
JTQuNHguXG4iLAogICAgICAgICAgICAgICAgICAgICAgICBkZXYtPm5hbWUsIHBjaV9jbWRfc3Rh
dHVzKTsKICAgICAgICB9Cn0KCgoKCnN0YXRpYyB2b2lkIHJ0bDgxMzlfaW50ZXJydXB0IChpbnQg
aXJxLCB2b2lkICpkZXZfaW5zdGFuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3QgcHRfcmVncyAqcmVncykKewogICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSAo
c3RydWN0IG5ldF9kZXZpY2UgKikgZGV2X2luc3RhbmNlOwogICAgICAgIHN0cnVjdCBydGw4MTM5
X3ByaXZhdGUgKnRwID0gZGV2LT5wcml2OwogICAgICAgIGludCBib2d1c2NudCA9IG1heF9pbnRl
cnJ1cHRfd29yazsKICAgICAgICB2b2lkICppb2FkZHIgPSB0cC0+bW1pb19hZGRyOwogICAgICAg
IGludCBhY2tzdGF0LCBzdGF0dXM7CiAgICAgICAgaW50IGxpbmtfY2hhbmdlZCA9IDA7CgogICAg
ICAgICh2b2lkKSgmdHAtPmxvY2spOwoKICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICBzdGF0
dXMgPSAoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKElu
dHJTdGF0dXMpKSkpOwoKCiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09IDB4RkZGRikKICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgaWYgKChzdGF0dXMg
JgogICAgICAgICAgICAgICAgICAgICAoUENJRXJyIHwgUENTVGltZW91dCB8IFJ4VW5kZXJydW4g
fCBSeE92ZXJmbG93IHwKICAgICAgICAgICAgICAgICAgICAgIFJ4RklGT092ZXIgfCBUeEVyciB8
IFR4T0sgfCBSeEVyciB8IFJ4T0spKSA9PSAwKQogICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKCgoKICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgJiBSeFVuZGVycnVuKQogICAgICAgICAg
ICAgICAgICAgICAgICBsaW5rX2NoYW5nZWQgPSAoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAq
KSAoKHZvaWQgKikoaW9hZGRyICsgKENTQ1IpKSkpICYgQ1NDUl9MaW5rQ2hhbmdlQml0OwoKCgoK
ICAgICAgICAgICAgICAgIGFja3N0YXQgPSBzdGF0dXMgJiB+KFJ4QWNrQml0cyB8IFR4RXJyKTsK
ICAgICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopICgodm9pZCAqKShp
b2FkZHIgKyAoSW50clN0YXR1cykpKSA9ICgoYWNrc3RhdCkpKTsKCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OwoKCiAgICAgICAgICAgICAgICBpZiAobmV0aWZfcnVubmluZyAoZGV2KSAmJiAoc3RhdHVzICYg
UnhBY2tCaXRzKSkKICAgICAgICAgICAgICAgICAgICAgICAgcnRsODEzOV9yeF9pbnRlcnJ1cHQg
KGRldiwgdHAsIGlvYWRkcik7CgoKICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgJiAoUENJRXJy
IHwgUENTVGltZW91dCB8IFJ4VW5kZXJydW4gfCBSeE92ZXJmbG93IHwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUnhGSUZPT3ZlciB8IFJ4RXJyKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgcnRsODEzOV93ZWlyZF9pbnRlcnJ1cHQgKGRldiwgdHAsIGlvYWRkciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cywgbGlua19jaGFuZ2Vk
KTsKCiAgICAgICAgICAgICAgICBpZiAobmV0aWZfcnVubmluZyAoZGV2KSAmJiAoc3RhdHVzICYg
KFR4T0sgfCBUeEVycikpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJ0bDgxMzlfdHhfaW50
ZXJydXB0IChkZXYsIHRwLCBpb2FkZHIpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3Rh
dHVzICYgVHhFcnIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCoodm9sYXRpbGUg
dW5zaWduZWQgc2hvcnQgKikgKCh2b2lkICopKGlvYWRkciArIChJbnRyU3RhdHVzKSkpID0gKChU
eEVycikpKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBib2d1c2NudC0tOwog
ICAgICAgIH0gd2hpbGUgKGJvZ3VzY250ID4gMCk7CgogICAgICAgIGlmIChib2d1c2NudCA8PSAw
KSB7CiAgICAgICAgICAgICAgICBwcmludGtfUjFiN2Q0MDc0ICgiPDQ+IiAiJXM6IFRvbyBtdWNo
IHdvcmsgYXQgaW50ZXJydXB0LCAiCiAgICAgICAgICAgICAgICAgICAgICAgICJJbnRyU3RhdHVz
PTB4JTQuNHguXG4iLCBkZXYtPm5hbWUsIHN0YXR1cyk7CgoKICAgICAgICAgICAgICAgICgqKHZv
bGF0aWxlIHVuc2lnbmVkIHNob3J0ICopICgodm9pZCAqKShpb2FkZHIgKyAoSW50clN0YXR1cykp
KSA9ICgoMHhmZmZmKSkpOwogICAgICAgIH0KCiAgICAgICAgZG8geyB9IHdoaWxlKDApOwoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCn0KCgpzdGF0
aWMgaW50IHJ0bDgxMzlfY2xvc2UgKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICBz
dHJ1Y3QgcnRsODEzOV9wcml2YXRlICp0cCA9IGRldi0+cHJpdjsKICAgICAgICB2b2lkICppb2Fk
ZHIgPSB0cC0+bW1pb19hZGRyOwogICAgICAgIGludCByZXQgPSAwOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgZmxhZ3M7CgogICAgICAgIG5ldGlmX3N0b3BfcXVldWUgKGRldik7CgogICAgICAgIGlm
ICh0cC0+dGhyX3BpZCA+PSAwKSB7CiAgICAgICAgICAgICAgICB0cC0+dGltZV90b19kaWUgPSAx
OwogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCIiOiA6IDoibWVtb3J5Iik7
CiAgICAgICAgICAgICAgICByZXQgPSBraWxsX3Byb2NfUjkzMmRhNjdlICh0cC0+dGhyX3BpZCwg
MTUsIDEpOwogICAgICAgICAgICAgICAgaWYgKHJldCkgewogICAgICAgICAgICAgICAgICAgICAg
ICBwcmludGtfUjFiN2Q0MDc0ICgiPDM+IiAiJXM6IHVuYWJsZSB0byBzaWduYWwgdGhyZWFkXG4i
LCBkZXYtPm5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwogICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgd2FpdF9mb3JfY29tcGxldGlvbl9SZGMwMTY0ODgg
KCZ0cC0+dGhyX2V4aXRlZCk7CiAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKICAgICAgICBkbyB7IF9fYXNtX18gX192
b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIDsgY2xpIjoiPWciIChmbGFncyk6IDoibWVtb3J5
Iik7ICh2b2lkKSgmdHAtPmxvY2spOyB9IHdoaWxlICgwKTsKCgogICAgICAgICgqKHZvbGF0aWxl
IHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDaGlwQ21kKSkpID0gKCgwKSkp
OwoKCiAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikgKCh2b2lkICopKGlvYWRk
ciArIChJbnRyTWFzaykpKSA9ICgoMCkpKTsKCgogICAgICAgIHRwLT5zdGF0cy5yeF9taXNzZWRf
ZXJyb3JzICs9ICgodW5zaWduZWQgbG9uZykgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgo
dm9pZCAqKShpb2FkZHIgKyAoUnhNaXNzZWQpKSkpKTsKICAgICAgICAoKih2b2xhdGlsZSB1bnNp
Z25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChSeE1pc3NlZCkpKSA9ICgoMCkpKTsKCiAg
ICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAl
MCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7Cgog
ICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CiAgICAgICAgZnJl
ZV9pcnFfUmYyMGRhYmQ4IChkZXYtPmlycSwgZGV2KTsKCiAgICAgICAgcnRsODEzOV90eF9jbGVh
ciAodHApOwoKICAgICAgICBwY2lfZnJlZV9jb25zaXN0ZW50X1JkMjMxMzlmMSh0cC0+cGNpX2Rl
diwgKCg4MTkyIDw8IDIpICsgMTYgKyAyMDQ4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRwLT5yeF9yaW5nLCB0cC0+cnhfcmluZ19kbWEpOwogICAgICAgIHBjaV9mcmVlX2NvbnNpc3Rl
bnRfUmQyMzEzOWYxKHRwLT5wY2lfZGV2LCAoMTUzNiAqIDQpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHAtPnR4X2J1ZnMsIHRwLT50eF9idWZzX2RtYSk7CiAgICAgICAgdHAtPnJ4X3Jp
bmcgPSAoKHZvaWQgKikwKTsKICAgICAgICB0cC0+dHhfYnVmcyA9ICgodm9pZCAqKTApOwoKCiAg
ICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENm
ZzkzNDYpKSkgPSAoKENmZzkzNDZfVW5sb2NrKSkpOwoKICAgICAgICBpZiAocnRsX2NoaXBfaW5m
b1t0cC0+Y2hpcHNldF0uZmxhZ3MgJiBIYXNIbHRDbGspCiAgICAgICAgICAgICAgICAoKih2b2xh
dGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoSGx0Q2xrKSkpID0gKCgn
SCcpKSk7CgogICAgICAgIHJldHVybiAwOwp9CgoKCgoKc3RhdGljIHZvaWQgbmV0ZGV2X2dldF9l
c2V0IChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF9jbWQgKmVzZXQpCnsK
ICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRlICpucCA9IGRldi0+cHJpdjsKICAgICAgICB2
b2lkICppb2FkZHIgPSBucC0+bW1pb19hZGRyOwogICAgICAgIHUxNiBhZHZlcnQ7CgogICAgICAg
IGVzZXQtPnN1cHBvcnRlZCA9ICgxIDw8IDApCiAgICAgICAgICAgICAgICAgICAgICAgIHwgKDEg
PDwgMSkKICAgICAgICAgICAgICAgICAgICAgICAgfCAoMSA8PCAyKQogICAgICAgICAgICAgICAg
ICAgICAgICB8ICgxIDw8IDMpCiAgICAgICAgICAgICAgICAgICAgICAgIHwgKDEgPDwgNikKICAg
ICAgICAgICAgICAgICAgICAgICAgfCAoMSA8PCA3KTsKCiAgICAgICAgZXNldC0+YWR2ZXJ0aXNp
bmcgPSAoMSA8PCA3KSB8ICgxIDw8IDYpOwogICAgICAgIGFkdmVydCA9IG1kaW9fcmVhZCAoZGV2
LCBucC0+cGh5c1swXSwgNCk7CiAgICAgICAgaWYgKGFkdmVydCAmIDB4MDAyMCkKICAgICAgICAg
ICAgICAgIGVzZXQtPmFkdmVydGlzaW5nIHw9ICgxIDw8IDApOwogICAgICAgIGlmIChhZHZlcnQg
JiAweDAwNDApCiAgICAgICAgICAgICAgICBlc2V0LT5hZHZlcnRpc2luZyB8PSAoMSA8PCAxKTsK
ICAgICAgICBpZiAoYWR2ZXJ0ICYgMHgwMDgwKQogICAgICAgICAgICAgICAgZXNldC0+YWR2ZXJ0
aXNpbmcgfD0gKDEgPDwgMik7CiAgICAgICAgaWYgKGFkdmVydCAmIDB4MDEwMCkKICAgICAgICAg
ICAgICAgIGVzZXQtPmFkdmVydGlzaW5nIHw9ICgxIDw8IDMpOwoKICAgICAgICBlc2V0LT5zcGVl
ZCA9ICgoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoTWVk
aWFTdGF0dXMpKSkpICYgMHgwOCkgPyAxMCA6IDEwMDsKCgoKICAgICAgICBlc2V0LT5kdXBsZXgg
PSBucC0+ZnVsbF9kdXBsZXggPyAweDAxIDogMHgwMDsKICAgICAgICBlc2V0LT5wb3J0ID0gMHgw
MDsKCiAgICAgICAgZXNldC0+cGh5X2FkZHJlc3MgPSBucC0+cGh5c1swXTsKICAgICAgICBlc2V0
LT50cmFuc2NlaXZlciA9IDB4MDA7CiAgICAgICAgZXNldC0+YXV0b25lZyA9IChtZGlvX3JlYWQg
KGRldiwgbnAtPnBoeXNbMF0sIDApICYgMHgxMDAwKSAhPSAwOwogICAgICAgIGVzZXQtPm1heHR4
cGt0ID0gMTsKICAgICAgICBlc2V0LT5tYXhyeHBrdCA9IDE7Cn0KCgoKCgpzdGF0aWMgdm9pZCBu
ZXRkZXZfZ2V0X3dvbCAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0aHRvb2xfd29s
aW5mbyAqd29sKQp7CiAgICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqbnAgPSBkZXYtPnBy
aXY7CiAgICAgICAgdm9pZCAqaW9hZGRyID0gbnAtPm1taW9fYWRkcjsKCiAgICAgICAgaWYgKHJ0
bF9jaGlwX2luZm9bbnAtPmNoaXBzZXRdLmZsYWdzICYgSGFzTFdha2UpIHsKICAgICAgICAgICAg
ICAgIHU4IGNmZzMgPSAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2Fk
ZHIgKyAoQ29uZmlnMykpKSk7CiAgICAgICAgICAgICAgICB1OCBjZmc1ID0gKCoodm9sYXRpbGUg
dW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENvbmZpZzUpKSkpOwoKICAgICAg
ICAgICAgICAgIHdvbC0+c3VwcG9ydGVkID0gKDEgPDwgMCkgfCAoMSA8PCA1KQogICAgICAgICAg
ICAgICAgICAgICAgICB8ICgxIDw8IDEpIHwgKDEgPDwgMikgfCAoMSA8PCAzKTsKCiAgICAgICAg
ICAgICAgICB3b2wtPndvbG9wdHMgPSAwOwogICAgICAgICAgICAgICAgaWYgKGNmZzMgJiBDZmcz
X0xpbmtVcCkKICAgICAgICAgICAgICAgICAgICAgICAgd29sLT53b2xvcHRzIHw9ICgxIDw8IDAp
OwogICAgICAgICAgICAgICAgaWYgKGNmZzMgJiBDZmczX01hZ2ljKQogICAgICAgICAgICAgICAg
ICAgICAgICB3b2wtPndvbG9wdHMgfD0gKDEgPDwgNSk7CgoKICAgICAgICAgICAgICAgIGlmIChj
Zmc1ICYgQ2ZnNV9VV0YpCiAgICAgICAgICAgICAgICAgICAgICAgIHdvbC0+d29sb3B0cyB8PSAo
MSA8PCAxKTsKICAgICAgICAgICAgICAgIGlmIChjZmc1ICYgQ2ZnNV9NV0YpCiAgICAgICAgICAg
ICAgICAgICAgICAgIHdvbC0+d29sb3B0cyB8PSAoMSA8PCAyKTsKICAgICAgICAgICAgICAgIGlm
IChjZmc1ICYgQ2ZnNV9CV0YpCiAgICAgICAgICAgICAgICAgICAgICAgIHdvbC0+d29sb3B0cyB8
PSAoMSA8PCAzKTsKICAgICAgICB9Cn0KCgoKCgpzdGF0aWMgaW50IG5ldGRldl9zZXRfd29sIChz
dHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dHJ1Y3QgZXRodG9vbF93b2xpbmZvICp3b2wpCnsKICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2
YXRlICpucCA9IGRldi0+cHJpdjsKICAgICAgICB2b2lkICppb2FkZHIgPSBucC0+bW1pb19hZGRy
OwogICAgICAgIHUzMiBzdXBwb3J0OwogICAgICAgIHU4IGNmZzMsIGNmZzU7CgogICAgICAgIHN1
cHBvcnQgPSAoKHJ0bF9jaGlwX2luZm9bbnAtPmNoaXBzZXRdLmZsYWdzICYgSGFzTFdha2UpCiAg
ICAgICAgICAgICAgICAgICA/ICgoMSA8PCAwKSB8ICgxIDw8IDUpCiAgICAgICAgICAgICAgICAg
ICAgICB8ICgxIDw8IDEpIHwgKDEgPDwgMikgfCAoMSA8PCAzKSkKICAgICAgICAgICAgICAgICAg
IDogMCk7CiAgICAgICAgaWYgKHdvbC0+d29sb3B0cyAmIH5zdXBwb3J0KQogICAgICAgICAgICAg
ICAgcmV0dXJuIC0yMjsKCiAgICAgICAgY2ZnMyA9ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIg
KikgKCh2b2lkICopKGlvYWRkciArIChDb25maWczKSkpKSAmIH4oQ2ZnM19MaW5rVXAgfCBDZmcz
X01hZ2ljKTsKICAgICAgICBpZiAod29sLT53b2xvcHRzICYgKDEgPDwgMCkpCiAgICAgICAgICAg
ICAgICBjZmczIHw9IENmZzNfTGlua1VwOwogICAgICAgIGlmICh3b2wtPndvbG9wdHMgJiAoMSA8
PCA1KSkKICAgICAgICAgICAgICAgIGNmZzMgfD0gQ2ZnM19NYWdpYzsKICAgICAgICAoKih2b2xh
dGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2ZnOTM0NikpKSA9ICgo
Q2ZnOTM0Nl9VbmxvY2spKSk7CiAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAo
KHZvaWQgKikoaW9hZGRyICsgKENvbmZpZzMpKSkgPSAoKGNmZzMpKSk7CiAgICAgICAgKCoodm9s
YXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENmZzkzNDYpKSkgPSAo
KENmZzkzNDZfTG9jaykpKTsKCiAgICAgICAgY2ZnNSA9ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNo
YXIgKikgKCh2b2lkICopKGlvYWRkciArIChDb25maWc1KSkpKSAmIH4oQ2ZnNV9VV0YgfCBDZmc1
X01XRiB8IENmZzVfQldGKTsKCgoKICAgICAgICBpZiAod29sLT53b2xvcHRzICYgKDEgPDwgMSkp
CiAgICAgICAgICAgICAgICBjZmc1IHw9IENmZzVfVVdGOwogICAgICAgIGlmICh3b2wtPndvbG9w
dHMgJiAoMSA8PCAyKSkKICAgICAgICAgICAgICAgIGNmZzUgfD0gQ2ZnNV9NV0Y7CiAgICAgICAg
aWYgKHdvbC0+d29sb3B0cyAmICgxIDw8IDMpKQogICAgICAgICAgICAgICAgY2ZnNSB8PSBDZmc1
X0JXRjsKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2Fk
ZHIgKyAoQ29uZmlnNSkpKSA9ICgoY2ZnNSkpKTsKCiAgICAgICAgcmV0dXJuIDA7Cn0KCgpzdGF0
aWMgaW50IG5ldGRldl9ldGh0b29sX2lvY3RsIChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lk
ICp1c2VyYWRkcikKewogICAgICAgIHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKm5wID0gZGV2LT5w
cml2OwogICAgICAgIHUzMiBldGhjbWQ7CgoKCgogICAgICAgIGlmICgoX19idWlsdGluX2NvbnN0
YW50X3Aoc2l6ZW9mIChldGhjbWQpKSA/IF9fY29uc3RhbnRfY29weV9mcm9tX3VzZXIoKCZldGhj
bWQpLCh1c2VyYWRkciksKHNpemVvZiAoZXRoY21kKSkpIDogX19nZW5lcmljX2NvcHlfZnJvbV91
c2VyX1IxMTYxNjZhYSgoJmV0aGNtZCksKHVzZXJhZGRyKSwoc2l6ZW9mIChldGhjbWQpKSkpKQog
ICAgICAgICAgICAgICAgcmV0dXJuIC0xNDsKCiAgICAgICAgc3dpdGNoIChldGhjbWQpIHsKICAg
ICAgICBjYXNlIDB4MDAwMDAwMDE6CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBldGh0b29sX2NtZCBlc2V0ID0geyAweDAwMDAwMDAxIH07CiAgICAgICAg
ICAgICAgICAgICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJtZW1v
cnkiKTsgKHZvaWQpKCZucC0+bG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAg
ICAgICBuZXRkZXZfZ2V0X2VzZXQgKGRldiwgJmVzZXQpOwogICAgICAgICAgICAgICAgICAgICAg
ICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInN0aSI6IDogOiJt
ZW1vcnkiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoX19idWls
dGluX2NvbnN0YW50X3Aoc2l6ZW9mIChlc2V0KSkgPyBfX2NvbnN0YW50X2NvcHlfdG9fdXNlcigo
dXNlcmFkZHIpLCgmZXNldCksKHNpemVvZiAoZXNldCkpKSA6IF9fZ2VuZXJpY19jb3B5X3RvX3Vz
ZXJfUmQ1MjNmZGQzKCh1c2VyYWRkciksKCZlc2V0KSwoc2l6ZW9mIChlc2V0KSkpKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE0OwogICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgIH0KCgoKICAgICAgICBjYXNlIDB4MDAwMDAw
MDM6CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBldGh0
b29sX2RydmluZm8gaW5mbyA9IHsgMHgwMDAwMDAwMyB9OwogICAgICAgICAgICAgICAgICAgICAg
ICBzdHJjcHkgKGluZm8uZHJpdmVyLCAiODEzOXRvbyIpOwogICAgICAgICAgICAgICAgICAgICAg
ICBzdHJjcHkgKGluZm8udmVyc2lvbiwgIjAuOS4yMiIpOwogICAgICAgICAgICAgICAgICAgICAg
ICBzdHJjcHkgKGluZm8uYnVzX2luZm8sIG5wLT5wY2lfZGV2LT5zbG90X25hbWUpOwogICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoKF9fYnVpbHRpbl9jb25zdGFudF9wKHNpemVvZiAoaW5mbykp
ID8gX19jb25zdGFudF9jb3B5X3RvX3VzZXIoKHVzZXJhZGRyKSwoJmluZm8pLChzaXplb2YgKGlu
Zm8pKSkgOiBfX2dlbmVyaWNfY29weV90b191c2VyX1JkNTIzZmRkMygodXNlcmFkZHIpLCgmaW5m
byksKHNpemVvZiAoaW5mbykpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIC0xNDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAg
ICB9CgogICAgICAgIGNhc2UgMHgwMDAwMDAwNToKICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IGV0aHRvb2xfd29saW5mbyB3b2wgPSB7IDB4MDAwMDAwMDUg
fTsKICAgICAgICAgICAgICAgICAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiY2xp
IjogOiA6Im1lbW9yeSIpOyAodm9pZCkoJm5wLT5sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIG5ldGRldl9nZXRfd29sIChkZXYsICZ3b2wpOwogICAgICAgICAgICAg
ICAgICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInN0
aSI6IDogOiJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgoX19idWlsdGluX2NvbnN0YW50X3Aoc2l6ZW9mICh3b2wpKSA/IF9fY29uc3RhbnRfY29weV90
b191c2VyKCh1c2VyYWRkciksKCZ3b2wpLChzaXplb2YgKHdvbCkpKSA6IF9fZ2VuZXJpY19jb3B5
X3RvX3VzZXJfUmQ1MjNmZGQzKCh1c2VyYWRkciksKCZ3b2wpLChzaXplb2YgKHdvbCkpKSkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xNDsKICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICB9CgogICAgICAgIGNhc2UgMHgwMDAw
MDAwNjoKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGV0
aHRvb2xfd29saW5mbyB3b2w7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCByYzsKICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKChfX2J1aWx0aW5fY29uc3RhbnRfcChzaXplb2YgKHdvbCkp
ID8gX19jb25zdGFudF9jb3B5X2Zyb21fdXNlcigoJndvbCksKHVzZXJhZGRyKSwoc2l6ZW9mICh3
b2wpKSkgOiBfX2dlbmVyaWNfY29weV9mcm9tX3VzZXJfUjExNjE2NmFhKCgmd29sKSwodXNlcmFk
ZHIpLChzaXplb2YgKHdvbCkpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIC0xNDsKICAgICAgICAgICAgICAgICAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVf
XygiY2xpIjogOiA6Im1lbW9yeSIpOyAodm9pZCkoJm5wLT5sb2NrKTsgfSB3aGlsZSAoMCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHJjID0gbmV0ZGV2X3NldF93b2wgKGRldiwgJndvbCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2FzbV9fIF9fdm9s
YXRpbGVfXygic3RpIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHJjOwogICAgICAgICAgICAgICAgfQoKICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gLTk1Owp9CgoK
c3RhdGljIGludCBuZXRkZXZfaW9jdGwgKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBp
ZnJlcSAqcnEsIGludCBjbWQpCnsKICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRlICp0cCA9
IGRldi0+cHJpdjsKICAgICAgICBzdHJ1Y3QgbWlpX2lvY3RsX2RhdGEgKmRhdGEgPSAoc3RydWN0
IG1paV9pb2N0bF9kYXRhICopJnJxLT5pZnJfaWZydS5pZnJ1X2RhdGE7CiAgICAgICAgaW50IHJj
ID0gMDsKICAgICAgICBpbnQgcGh5ID0gdHAtPnBoeXNbMF0gJiAweDNmOwoKICAgICAgICBpZiAo
Y21kICE9IDB4ODk0NikgewoKICAgICAgICAgICAgICAgIGRhdGEtPnBoeV9pZCAmPSAweDFmOwog
ICAgICAgICAgICAgICAgZGF0YS0+cmVnX251bSAmPSAweDFmOwogICAgICAgIH0KCiAgICAgICAg
c3dpdGNoIChjbWQpIHsKICAgICAgICBjYXNlIDB4ODk0NjoKICAgICAgICAgICAgICAgIHJldHVy
biBuZXRkZXZfZXRodG9vbF9pb2N0bChkZXYsICh2b2lkICopIHJxLT5pZnJfaWZydS5pZnJ1X2Rh
dGEpOwoKICAgICAgICBjYXNlIDB4ODk0NzoKICAgICAgICBjYXNlIDB4ODlGMDoKICAgICAgICAg
ICAgICAgIGRhdGEtPnBoeV9pZCA9IHBoeTsKCgogICAgICAgIGNhc2UgMHg4OTQ4OgogICAgICAg
IGNhc2UgMHg4OUYwICsxOgogICAgICAgICAgICAgICAgZGF0YS0+dmFsX291dCA9IG1kaW9fcmVh
ZCAoZGV2LCBkYXRhLT5waHlfaWQsIGRhdGEtPnJlZ19udW0pOwogICAgICAgICAgICAgICAgYnJl
YWs7CgogICAgICAgIGNhc2UgMHg4OTQ5OgogICAgICAgIGNhc2UgMHg4OUYwICsyOgogICAgICAg
ICAgICAgICAgaWYgKCFjYXBhYmxlICgxMikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmMg
PSAtMTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9Cgog
ICAgICAgICAgICAgICAgaWYgKGRhdGEtPnBoeV9pZCA9PSBwaHkpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgdTE2IHZhbHVlID0gZGF0YS0+dmFsX2luOwogICAgICAgICAgICAgICAgICAgICAg
ICBzd2l0Y2ggKGRhdGEtPnJlZ19udW0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAw
OgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cC0+bWVkaWFsb2NrID0gKHZhbHVl
ICYgMHg5MDAwKSA/IDAgOiAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0
cC0+bWVkaWFsb2NrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAt
PmZ1bGxfZHVwbGV4ID0gKHZhbHVlICYgMHgwMTAwKSA/IDEgOiAwOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IGJy
ZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICBtZGlvX3dyaXRlKGRldiwgZGF0YS0+cGh5X2lkLCBkYXRhLT5yZWdfbnVtLCBkYXRh
LT52YWxfaW4pOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICAgICByYyA9IC05NTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAg
ICAgICAgcmV0dXJuIHJjOwp9CgoKc3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzICpydGw4
MTM5X2dldF9zdGF0cyAoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIHN0cnVjdCBy
dGw4MTM5X3ByaXZhdGUgKnRwID0gZGV2LT5wcml2OwogICAgICAgIHZvaWQgKmlvYWRkciA9IHRw
LT5tbWlvX2FkZHI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCiAgICAgICAgaWYgKG5l
dGlmX3J1bm5pbmcoZGV2KSkgewogICAgICAgICAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9sYXRp
bGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxhZ3MpOiA6Im1lbW9yeSIpOyAo
dm9pZCkoJnRwLT5sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICB0cC0+c3RhdHMu
cnhfbWlzc2VkX2Vycm9ycyArPSAoKHVuc2lnbmVkIGxvbmcpICgqKHZvbGF0aWxlIHVuc2lnbmVk
IGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKFJ4TWlzc2VkKSkpKSk7CiAgICAgICAgICAgICAg
ICAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChSeE1pc3Nl
ZCkpKSA9ICgoMCkpKTsKICAgICAgICAgICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2Fz
bV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5
IiwgImNjIik7IH0gd2hpbGUgKDApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICZ0cC0+c3Rh
dHM7Cn0KCgoKCnN0YXRpYyB1bnNpZ25lZCBjb25zdCBldGhlcm5ldF9wb2x5bm9taWFsID0gMHgw
NGMxMWRiN1U7CnN0YXRpYyBpbmxpbmUgdTMyIGV0aGVyX2NyYyAoaW50IGxlbmd0aCwgdW5zaWdu
ZWQgY2hhciAqZGF0YSkKewogICAgICAgIGludCBjcmMgPSAtMTsKCiAgICAgICAgd2hpbGUgKC0t
bGVuZ3RoID49IDApIHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY3VycmVudF9vY3Rl
dCA9ICpkYXRhKys7CiAgICAgICAgICAgICAgICBpbnQgYml0OwogICAgICAgICAgICAgICAgZm9y
IChiaXQgPSAwOyBiaXQgPCA4OyBiaXQrKywgY3VycmVudF9vY3RldCA+Pj0gMSkKICAgICAgICAg
ICAgICAgICAgICAgICAgY3JjID0gKGNyYyA8PCAxKSBeICgoY3JjIDwgMCkgXiAoY3VycmVudF9v
Y3RldCAmIDEpID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlcm5ldF9wb2x5bm9t
aWFsIDogMCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gY3JjOwp9CgoKc3RhdGljIHZvaWQg
X19zZXRfcnhfbW9kZSAoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIHN0cnVjdCBy
dGw4MTM5X3ByaXZhdGUgKnRwID0gZGV2LT5wcml2OwogICAgICAgIHZvaWQgKmlvYWRkciA9IHRw
LT5tbWlvX2FkZHI7CiAgICAgICAgdTMyIG1jX2ZpbHRlclsyXTsKICAgICAgICBpbnQgaSwgcnhf
bW9kZTsKICAgICAgICB1MzIgdG1wOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgogICAgICAgIGlmIChkZXYtPmZs
YWdzICYgMHgxMDApIHsKCiAgICAgICAgICAgICAgICBwcmludGtfUjFiN2Q0MDc0ICgiPDU+IiAi
JXM6IFByb21pc2N1b3VzIG1vZGUgZW5hYmxlZC5cbiIsCiAgICAgICAgICAgICAgICAgICAgICAg
IGRldi0+bmFtZSk7CiAgICAgICAgICAgICAgICByeF9tb2RlID0KICAgICAgICAgICAgICAgICAg
ICBBY2NlcHRCcm9hZGNhc3QgfCBBY2NlcHRNdWx0aWNhc3QgfCBBY2NlcHRNeVBoeXMgfAogICAg
ICAgICAgICAgICAgICAgIEFjY2VwdEFsbFBoeXM7CiAgICAgICAgICAgICAgICBtY19maWx0ZXJb
MV0gPSBtY19maWx0ZXJbMF0gPSAweGZmZmZmZmZmOwogICAgICAgIH0gZWxzZSBpZiAoKGRldi0+
bWNfY291bnQgPiBtdWx0aWNhc3RfZmlsdGVyX2xpbWl0KQogICAgICAgICAgICAgICAgICAgfHwg
KGRldi0+ZmxhZ3MgJiAweDIwMCkpIHsKCiAgICAgICAgICAgICAgICByeF9tb2RlID0gQWNjZXB0
QnJvYWRjYXN0IHwgQWNjZXB0TXVsdGljYXN0IHwgQWNjZXB0TXlQaHlzOwogICAgICAgICAgICAg
ICAgbWNfZmlsdGVyWzFdID0gbWNfZmlsdGVyWzBdID0gMHhmZmZmZmZmZjsKICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgc3RydWN0IGRldl9tY19saXN0ICptY2xpc3Q7CiAgICAgICAg
ICAgICAgICByeF9tb2RlID0gQWNjZXB0QnJvYWRjYXN0IHwgQWNjZXB0TXlQaHlzOwogICAgICAg
ICAgICAgICAgbWNfZmlsdGVyWzFdID0gbWNfZmlsdGVyWzBdID0gMDsKICAgICAgICAgICAgICAg
IGZvciAoaSA9IDAsIG1jbGlzdCA9IGRldi0+bWNfbGlzdDsgbWNsaXN0ICYmIGkgPCBkZXYtPm1j
X2NvdW50OwogICAgICAgICAgICAgICAgICAgICBpKyssIG1jbGlzdCA9IG1jbGlzdC0+bmV4dCkg
ewogICAgICAgICAgICAgICAgICAgICAgICBpbnQgYml0X25yID0gZXRoZXJfY3JjKDYsIG1jbGlz
dC0+ZG1pX2FkZHIpID4+IDI2OwoKICAgICAgICAgICAgICAgICAgICAgICAgbWNfZmlsdGVyW2Jp
dF9uciA+PiA1XSB8PSAoKF9fdTMyKSgxIDw8IChiaXRfbnIgJiAzMSkpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgcnhfbW9kZSB8PSBBY2NlcHRNdWx0aWNhc3Q7CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgfQoKCiAgICAgICAgdG1wID0gcnRsODEzOV9yeF9jb25maWcgfCByeF9tb2RlOwog
ICAgICAgIGlmICh0cC0+cnhfY29uZmlnICE9IHRtcCkgewogICAgICAgICAgICAgICAgZG8geyAo
Kih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChSeENvbmZpZykp
KSA9ICgodG1wKSkpOyAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRk
ciArIChSeENvbmZpZykpKSk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgdHAtPnJ4X2Nv
bmZpZyA9IHRtcDsKICAgICAgICB9CiAgICAgICAgZG8geyAoKih2b2xhdGlsZSB1bnNpZ25lZCBp
bnQgKikgKCh2b2lkICopKGlvYWRkciArIChNQVIwICsgMCkpKSA9ICgobWNfZmlsdGVyWzBdKSkp
OyAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChNQVIwICsg
MCkpKSk7IH0gd2hpbGUgKDApOwogICAgICAgIGRvIHsgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50
ICopICgodm9pZCAqKShpb2FkZHIgKyAoTUFSMCArIDQpKSkgPSAoKG1jX2ZpbHRlclsxXSkpKTsg
KCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoTUFSMCArIDQp
KSkpOyB9IHdoaWxlICgwKTsKfQoKc3RhdGljIHZvaWQgcnRsODEzOV9zZXRfcnhfbW9kZSAoc3Ry
dWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAg
ICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHAgPSBkZXYtPnByaXY7CgogICAgICAgIGRvIHsg
X19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBvcGwgJTAgOyBjbGkiOiI9ZyIgKGZsYWdz
KTogOiJtZW1vcnkiKTsgKHZvaWQpKCZ0cC0+bG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgIF9f
c2V0X3J4X21vZGUoZGV2KTsKICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgX19hc21fXyBf
X3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJj
YyIpOyB9IHdoaWxlICgwKTsKfQojIDI0OTIgIjgxMzl0b28uYyIKc3RhdGljIHN0cnVjdCBwY2lf
ZHJpdmVyIHJ0bDgxMzlfcGNpX2RyaXZlciA9IHsKICAgICAgICBuYW1lOiAiODEzOXRvbyIsCiAg
ICAgICAgaWRfdGFibGU6IHJ0bDgxMzlfcGNpX3RibCwKICAgICAgICBwcm9iZTogcnRsODEzOV9p
bml0X29uZSwKICAgICAgICByZW1vdmU6IHJ0bDgxMzlfcmVtb3ZlX29uZSwKCgoKCn07CgoKc3Rh
dGljIGludCBydGw4MTM5X2luaXRfbW9kdWxlICh2b2lkKQp7CgoKCgogICAgICAgIHByaW50a19S
MWI3ZDQwNzQgKCI8Nj4iICI4MTM5dG9vIiAiIEZhc3QgRXRoZXJuZXQgZHJpdmVyICIgIjAuOS4y
MiIgIlxuIik7CgoKICAgICAgICByZXR1cm4gcGNpX21vZHVsZV9pbml0ICgmcnRsODEzOV9wY2lf
ZHJpdmVyKTsKfQoKCnN0YXRpYyB2b2lkIHJ0bDgxMzlfY2xlYW51cF9tb2R1bGUgKHZvaWQpCnsK
ICAgICAgICBwY2lfdW5yZWdpc3Rlcl9kcml2ZXJfUjI2NzEzYjg2ICgmcnRsODEzOV9wY2lfZHJp
dmVyKTsKfQoKCmludCBpbml0X21vZHVsZSh2b2lkKSBfX2F0dHJpYnV0ZV9fKChhbGlhcygicnRs
ODEzOV9pbml0X21vZHVsZSIpKSk7IHN0YXRpYyBpbmxpbmUgX19pbml0X21vZHVsZV9mdW5jX3Qg
X19pbml0X21vZHVsZV9pbmxpbmUodm9pZCkgeyByZXR1cm4gcnRsODEzOV9pbml0X21vZHVsZTsg
fTsKdm9pZCBjbGVhbnVwX21vZHVsZSh2b2lkKSBfX2F0dHJpYnV0ZV9fKChhbGlhcygicnRsODEz
OV9jbGVhbnVwX21vZHVsZSIpKSk7IHN0YXRpYyBpbmxpbmUgX19jbGVhbnVwX21vZHVsZV9mdW5j
X3QgX19jbGVhbnVwX21vZHVsZV9pbmxpbmUodm9pZCkgeyByZXR1cm4gcnRsODEzOV9jbGVhbnVw
X21vZHVsZTsgfTsK


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

end of thread, other threads:[~2001-12-06  4:06 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-12-05 20:03 c/5020: ICE when building 8139too.c from linux-2.4.16 rodrigc
  -- strict thread matches above, loose matches on Subject: below --
2001-12-05 20:06 rodrigc
2001-12-05 10:06 critel

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