public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* c/4726: Cannot compile 8139too.c from Linux kernel 2.4.13
@ 2001-10-29  2:46 mojza
  0 siblings, 0 replies; 2+ messages in thread
From: mojza @ 2001-10-29  2:46 UTC (permalink / raw)
  To: gcc-gnats

>Number:         4726
>Category:       c
>Synopsis:       Cannot compile 8139too.c from Linux kernel 2.4.13
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Oct 29 02:46:04 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     Mojza
>Release:        3.0.1
>Organization:
>Environment:
# gcc -v
Reading specs from /usr/lib/gcc-lib/i386-pld-linux/3.0.1/specs
Configured with: ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --enable-shared --enable-threads=posix --enable-haifa --enable-languages=c,c++,f77,gcov,java,objc --enable-long-long --enable-namespaces --enable-multilib --with-gnu-as --with-gnu-ld --with-system-zlib --with-slibdir=/lib --without-x i386-pld-linux
Thread model: posix
gcc version 3.0.1
>Description:
8139too.c: In function `netdev_ethtool_ioctl':
8139too.c:2432: Unrecognizable insn:
(insn/i 609 1066 1063 (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 595 (insn_list 602 (nil)))
    (nil))
8139too.c:2432: Internal compiler error in reload_cse_simplify_operands, at relo
ad1.c:8355
>How-To-Repeat:
gcc -D__KERNEL__ -I/usr/src/linux/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=i586    -c -o 8139too.o 8139too.c
>Fix:

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

IyAxNDUgIjgxMzl0b28uYyIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZp
Zy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9hdXRvY29uZi5oIiAx
CiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMgojIDE0NiAiODEz
OXRvby5jIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGUuaCIgMQoj
IDEwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZS5oIgojIDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAxMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9tb2R1bGUuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
c3BpbmxvY2suaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmln
LmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDIKIyA1
NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIgogIHR5cGVkZWYgc3Ry
dWN0IHsgfSBzcGlubG9ja190OwojIDEyMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9z
cGlubG9jay5oIgogIHR5cGVkZWYgc3RydWN0IHsgfSByd2xvY2tfdDsKIyAxMiAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9tb2R1bGUuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvbGlzdC5oIiAxCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3ByZWZldGNoLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9wcmVmZXRj
aC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAxCiMgMTAg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgojIDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvYXNtL3ZtODYuaCIgMQojIDY4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2Fz
bS92bTg2LmgiCnN0cnVjdCB2bTg2X3JlZ3MgewoKCgogICAgICAgIGxvbmcgZWJ4OwogICAgICAg
IGxvbmcgZWN4OwogICAgICAgIGxvbmcgZWR4OwogICAgICAgIGxvbmcgZXNpOwogICAgICAgIGxv
bmcgZWRpOwogICAgICAgIGxvbmcgZWJwOwogICAgICAgIGxvbmcgZWF4OwogICAgICAgIGxvbmcg
X19udWxsX2RzOwogICAgICAgIGxvbmcgX19udWxsX2VzOwogICAgICAgIGxvbmcgX19udWxsX2Zz
OwogICAgICAgIGxvbmcgX19udWxsX2dzOwogICAgICAgIGxvbmcgb3JpZ19lYXg7CiAgICAgICAg
bG9uZyBlaXA7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY3MsIF9fY3NoOwogICAgICAgIGxvbmcg
ZWZsYWdzOwogICAgICAgIGxvbmcgZXNwOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNzLCBfX3Nz
aDsKCgoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBlcywgX19lc2g7CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgZHMsIF9fZHNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGZzLCBfX2ZzaDsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBncywgX19nc2g7Cn07CgpzdHJ1Y3QgcmV2ZWN0b3JlZF9zdHJ1Y3Qg
ewogICAgICAgIHVuc2lnbmVkIGxvbmcgX19tYXBbOF07Cn07CgpzdHJ1Y3Qgdm04Nl9zdHJ1Y3Qg
ewogICAgICAgIHN0cnVjdCB2bTg2X3JlZ3MgcmVnczsKICAgICAgICB1bnNpZ25lZCBsb25nIGZs
YWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2NyZWVuX2JpdG1hcDsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGNwdV90eXBlOwogICAgICAgIHN0cnVjdCByZXZlY3RvcmVkX3N0cnVjdCBpbnRfcmV2
ZWN0b3JlZDsKICAgICAgICBzdHJ1Y3QgcmV2ZWN0b3JlZF9zdHJ1Y3QgaW50MjFfcmV2ZWN0b3Jl
ZDsKfTsKCgoKCgoKc3RydWN0IHZtODZwbHVzX2luZm9fc3RydWN0IHsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGZvcmNlX3JldHVybl9mb3JfcGljOjE7CiAgICAgICAgdW5zaWduZWQgbG9uZyB2bTg2
ZGJnX2FjdGl2ZToxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdm04NmRiZ19URnBlbmRpZzoxOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgdW51c2VkOjI4OwogICAgICAgIHVuc2lnbmVkIGxvbmcgaXNf
dm04NnB1czoxOwogICAgICAgIHVuc2lnbmVkIGNoYXIgdm04NmRiZ19pbnR4eHRhYlszMl07Cn07
CgpzdHJ1Y3Qgdm04NnBsdXNfc3RydWN0IHsKICAgICAgICBzdHJ1Y3Qgdm04Nl9yZWdzIHJlZ3M7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIHNjcmVl
bl9iaXRtYXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjcHVfdHlwZTsKICAgICAgICBzdHJ1Y3Qg
cmV2ZWN0b3JlZF9zdHJ1Y3QgaW50X3JldmVjdG9yZWQ7CiAgICAgICAgc3RydWN0IHJldmVjdG9y
ZWRfc3RydWN0IGludDIxX3JldmVjdG9yZWQ7CiAgICAgICAgc3RydWN0IHZtODZwbHVzX2luZm9f
c3RydWN0IHZtODZwbHVzOwp9OwojIDE0NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vdm04
Ni5oIgpzdHJ1Y3Qga2VybmVsX3ZtODZfcmVncyB7CgoKCiAgICAgICAgbG9uZyBlYng7CiAgICAg
ICAgbG9uZyBlY3g7CiAgICAgICAgbG9uZyBlZHg7CiAgICAgICAgbG9uZyBlc2k7CiAgICAgICAg
bG9uZyBlZGk7CiAgICAgICAgbG9uZyBlYnA7CiAgICAgICAgbG9uZyBlYXg7CiAgICAgICAgbG9u
ZyBfX251bGxfZHM7CiAgICAgICAgbG9uZyBfX251bGxfZXM7CiAgICAgICAgbG9uZyBvcmlnX2Vh
eDsKICAgICAgICBsb25nIGVpcDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjcywgX19jc2g7CiAg
ICAgICAgbG9uZyBlZmxhZ3M7CiAgICAgICAgbG9uZyBlc3A7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgc3MsIF9fc3NoOwoKCgogICAgICAgIHVuc2lnbmVkIHNob3J0IGVzLCBfX2VzaDsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBkcywgX19kc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZnMsIF9f
ZnNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGdzLCBfX2dzaDsKfTsKCnN0cnVjdCBrZXJuZWxf
dm04Nl9zdHJ1Y3QgewogICAgICAgIHN0cnVjdCBrZXJuZWxfdm04Nl9yZWdzIHJlZ3M7CiMgMTg0
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS92bTg2LmgiCiAgICAgICAgdW5zaWduZWQgbG9u
ZyBmbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIHNjcmVlbl9iaXRtYXA7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBjcHVfdHlwZTsKICAgICAgICBzdHJ1Y3QgcmV2ZWN0b3JlZF9zdHJ1Y3QgaW50
X3JldmVjdG9yZWQ7CiAgICAgICAgc3RydWN0IHJldmVjdG9yZWRfc3RydWN0IGludDIxX3JldmVj
dG9yZWQ7CiAgICAgICAgc3RydWN0IHZtODZwbHVzX2luZm9fc3RydWN0IHZtODZwbHVzOwogICAg
ICAgIHN0cnVjdCBwdF9yZWdzICpyZWdzMzI7CiMgMjAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2FzbS92bTg2LmgiCn07Cgp2b2lkIGhhbmRsZV92bTg2X2ZhdWx0KHN0cnVjdCBrZXJuZWxfdm04
Nl9yZWdzICosIGxvbmcpOwppbnQgaGFuZGxlX3ZtODZfdHJhcChzdHJ1Y3Qga2VybmVsX3ZtODZf
cmVncyAqLCBsb25nLCBpbnQpOwojIDExICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wcm9j
ZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL21hdGhfZW11LmgiIDEK
CgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zaWdjb250ZXh0LmgiIDEKIyAxOCAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2lnY29udGV4dC5oIgpzdHJ1Y3QgX2ZwcmVnIHsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBzaWduaWZpY2FuZFs0XTsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCBleHBvbmVudDsKfTsKCnN0cnVjdCBfZnB4cmVnIHsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBzaWduaWZpY2FuZFs0XTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBleHBvbmVudDsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBwYWRkaW5nWzNdOwp9OwoKc3RydWN0IF94bW1yZWcgewogICAgICAg
IHVuc2lnbmVkIGxvbmcgZWxlbWVudFs0XTsKfTsKCnN0cnVjdCBfZnBzdGF0ZSB7CgogICAgICAg
IHVuc2lnbmVkIGxvbmcgY3c7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdzsKICAgICAgICB1bnNp
Z25lZCBsb25nIHRhZzsKICAgICAgICB1bnNpZ25lZCBsb25nIGlwb2ZmOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgY3NzZWw7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkYXRhb2ZmOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgZGF0YXNlbDsKICAgICAgICBzdHJ1Y3QgX2ZwcmVnIF9zdFs4XTsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBzdGF0dXM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbWFnaWM7CgoK
ICAgICAgICB1bnNpZ25lZCBsb25nIF9meHNyX2Vudls2XTsKICAgICAgICB1bnNpZ25lZCBsb25n
IG14Y3NyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVzZXJ2ZWQ7CiAgICAgICAgc3RydWN0IF9m
cHhyZWcgX2Z4c3Jfc3RbOF07CiAgICAgICAgc3RydWN0IF94bW1yZWcgX3htbVs4XTsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHBhZGRpbmdbNTZdOwp9OwoKCgpzdHJ1Y3Qgc2lnY29udGV4dCB7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgZ3MsIF9fZ3NoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGZz
LCBfX2ZzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBlcywgX19lc2g7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgZHMsIF9fZHNoOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWRpOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgZXNpOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWJwOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgZXNwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWJ4OwogICAgICAgIHVuc2lnbmVk
IGxvbmcgZWR4OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWN4OwogICAgICAgIHVuc2lnbmVkIGxv
bmcgZWF4OwogICAgICAgIHVuc2lnbmVkIGxvbmcgdHJhcG5vOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgZXJyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWlwOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IGNzLCBfX2NzaDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVmbGFnczsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGVzcF9hdF9zaWduYWw7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3MsIF9fc3NoOwog
ICAgICAgIHN0cnVjdCBfZnBzdGF0ZSAqIGZwc3RhdGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBv
bGRtYXNrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3IyOwp9OwojIDUgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvYXNtL21hdGhfZW11LmgiIDIKCmludCByZXN0b3JlX2kzODdfc29mdCh2b2lkICpz
Mzg3LCBzdHJ1Y3QgX2Zwc3RhdGUgKmJ1Zik7CmludCBzYXZlX2kzODdfc29mdCh2b2lkICpzMzg3
LCBzdHJ1Y3QgX2Zwc3RhdGUgKiBidWYpOwoKCgoKCnN0cnVjdCBpbmZvIHsKICAgICAgICBsb25n
IF9fX29yaWdfZWlwOwogICAgICAgIGxvbmcgX19fZWJ4OwogICAgICAgIGxvbmcgX19fZWN4Owog
ICAgICAgIGxvbmcgX19fZWR4OwogICAgICAgIGxvbmcgX19fZXNpOwogICAgICAgIGxvbmcgX19f
ZWRpOwogICAgICAgIGxvbmcgX19fZWJwOwogICAgICAgIGxvbmcgX19fZWF4OwogICAgICAgIGxv
bmcgX19fZHM7CiAgICAgICAgbG9uZyBfX19lczsKICAgICAgICBsb25nIF9fX29yaWdfZWF4Owog
ICAgICAgIGxvbmcgX19fZWlwOwogICAgICAgIGxvbmcgX19fY3M7CiAgICAgICAgbG9uZyBfX19l
ZmxhZ3M7CiAgICAgICAgbG9uZyBfX19lc3A7CiAgICAgICAgbG9uZyBfX19zczsKICAgICAgICBs
b25nIF9fX3ZtODZfZXM7CiAgICAgICAgbG9uZyBfX192bTg2X2RzOwogICAgICAgIGxvbmcgX19f
dm04Nl9mczsKICAgICAgICBsb25nIF9fX3ZtODZfZ3M7Cn07CiMgMTIgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9h
c20vc2VnbWVudC5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nv
ci5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGFnZS5oIiAxCiMgMTIgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BhZ2UuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Bh
Z2UuaCIgMgojIDQ1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wYWdlLmgiCnR5cGVkZWYg
c3RydWN0IHsgdW5zaWduZWQgbG9uZyBwdGVfbG93OyB9IHB0ZV90Owp0eXBlZGVmIHN0cnVjdCB7
IHVuc2lnbmVkIGxvbmcgcG1kOyB9IHBtZF90Owp0eXBlZGVmIHN0cnVjdCB7IHVuc2lnbmVkIGxv
bmcgcGdkOyB9IHBnZF90OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgeyB1bnNpZ25lZCBsb25nIHBncHJv
dDsgfSBwZ3Byb3RfdDsKIyAxMDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BhZ2UuaCIK
c3RhdGljIF9faW5saW5lX18gaW50IGdldF9vcmRlcih1bnNpZ25lZCBsb25nIHNpemUpCnsKICAg
ICAgICBpbnQgb3JkZXI7CgogICAgICAgIHNpemUgPSAoc2l6ZS0xKSA+PiAoMTIgLTEpOwogICAg
ICAgIG9yZGVyID0gLTE7CiAgICAgICAgZG8gewogICAgICAgICAgICAgICAgc2l6ZSA+Pj0gMTsK
ICAgICAgICAgICAgICAgIG9yZGVyKys7CiAgICAgICAgfSB3aGlsZSAoc2l6ZSk7CiAgICAgICAg
cmV0dXJuIG9yZGVyOwp9CiMgMTQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nv
ci5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vdHlwZXMuaCIgMQoKCgp0eXBl
ZGVmIHVuc2lnbmVkIHNob3J0IHVtb2RlX3Q7CgoKCgoKCnR5cGVkZWYgX19zaWduZWRfXyBjaGFy
IF9fczg7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3U4OwoKdHlwZWRlZiBfX3NpZ25lZF9fIHNo
b3J0IF9fczE2Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdTE2OwoKdHlwZWRlZiBfX3NpZ25l
ZF9fIGludCBfX3MzMjsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191MzI7CgoKdHlwZWRlZiBfX3Np
Z25lZF9fIGxvbmcgbG9uZyBfX3M2NDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgX191NjQ7
CgoKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAz
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vdHlwZXMuaCIgMgoKdHlwZWRlZiBzaWduZWQg
Y2hhciBzODsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHU4OwoKdHlwZWRlZiBzaWduZWQgc2hvcnQg
czE2Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHUxNjsKCnR5cGVkZWYgc2lnbmVkIGludCBzMzI7
CnR5cGVkZWYgdW5zaWduZWQgaW50IHUzMjsKCnR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBzNjQ7
CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHU2NDsKIyA1MSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9hc20vdHlwZXMuaCIKdHlwZWRlZiB1MzIgZG1hX2FkZHJfdDsKCnR5cGVkZWYgdTY0IGRt
YTY0X2FkZHJfdDsKIyAxNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zaWdjb250ZXh0LmgiIDEKIyAxNiAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlLmgiIDEKIyAxNyAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L2NhY2hlLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5o
IiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jYWNoZS5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9hc20vY2FjaGUuaCIgMQoKCgoKCgojIDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2FzbS9jYWNoZS5oIiAyCiMgNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jYWNoZS5o
IiAyCiMgMTggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDE5ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvdGhyZWFkcy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9jb25maWcuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdGhyZWFkcy5o
IiAyCiMgMjAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCiMgMzMg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdHJ1Y3QgY3B1aW5mb194
ODYgewogICAgICAgIF9fdTggeDg2OwogICAgICAgIF9fdTggeDg2X3ZlbmRvcjsKICAgICAgICBf
X3U4IHg4Nl9tb2RlbDsKICAgICAgICBfX3U4IHg4Nl9tYXNrOwogICAgICAgIGNoYXIgd3Bfd29y
a3Nfb2s7CiAgICAgICAgY2hhciBobHRfd29ya3Nfb2s7CiAgICAgICAgY2hhciBoYXJkX21hdGg7
CiAgICAgICAgY2hhciByZnU7CiAgICAgICAgaW50IGNwdWlkX2xldmVsOwogICAgICAgIF9fdTMy
IHg4Nl9jYXBhYmlsaXR5WzRdOwogICAgICAgIGNoYXIgeDg2X3ZlbmRvcl9pZFsxNl07CiAgICAg
ICAgY2hhciB4ODZfbW9kZWxfaWRbNjRdOwogICAgICAgIGludCB4ODZfY2FjaGVfc2l6ZTsKCiAg
ICAgICAgaW50IGZkaXZfYnVnOwogICAgICAgIGludCBmMDBmX2J1ZzsKICAgICAgICBpbnQgY29t
YV9idWc7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsb29wc19wZXJfamlmZnk7CiAgICAgICAgdW5z
aWduZWQgbG9uZyAqcGdkX3F1aWNrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgKnBtZF9xdWljazsK
ICAgICAgICB1bnNpZ25lZCBsb25nICpwdGVfcXVpY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBw
Z3RhYmxlX2NhY2hlX3N6Owp9IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgxIDw8ICgoNSkp
KSkpKTsKIyA3MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCmV4dGVy
biBzdHJ1Y3QgY3B1aW5mb194ODYgYm9vdF9jcHVfZGF0YTsKZXh0ZXJuIHN0cnVjdCB0c3Nfc3Ry
dWN0IGluaXRfdHNzWzFdOwojIDk0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wcm9jZXNz
b3IuaCIKZXh0ZXJuIGNoYXIgaWdub3JlX2lycTEzOwoKZXh0ZXJuIHZvaWQgaWRlbnRpZnlfY3B1
KHN0cnVjdCBjcHVpbmZvX3g4NiAqKTsKZXh0ZXJuIHZvaWQgcHJpbnRfY3B1X2luZm8oc3RydWN0
IGNwdWluZm9feDg2ICopOwpleHRlcm4gdm9pZCBkb2RneV90c2Modm9pZCk7CiMgMTI0ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKc3RhdGljIGlubGluZSB2b2lkIGNw
dWlkKGludCBvcCwgaW50ICplYXgsIGludCAqZWJ4LCBpbnQgKmVjeCwgaW50ICplZHgpCnsKICAg
ICAgICBfX2FzbV9fKCJjcHVpZCIKICAgICAgICAgICAgICAgIDogIj1hIiAoKmVheCksCiAgICAg
ICAgICAgICAgICAgICI9YiIgKCplYngpLAogICAgICAgICAgICAgICAgICAiPWMiICgqZWN4KSwK
ICAgICAgICAgICAgICAgICAgIj1kIiAoKmVkeCkKICAgICAgICAgICAgICAgIDogIjAiIChvcCkp
Owp9CgoKCgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBjcHVpZF9lYXgodW5zaWduZWQgaW50
IG9wKQp7CiAgICAgICAgdW5zaWduZWQgaW50IGVheDsKCiAgICAgICAgX19hc21fXygiY3B1aWQi
CiAgICAgICAgICAgICAgICA6ICI9YSIgKGVheCkKICAgICAgICAgICAgICAgIDogIjAiIChvcCkK
ICAgICAgICAgICAgICAgIDogImJ4IiwgImN4IiwgImR4Iik7CiAgICAgICAgcmV0dXJuIGVheDsK
fQpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBjcHVpZF9lYngodW5zaWduZWQgaW50IG9wKQp7
CiAgICAgICAgdW5zaWduZWQgaW50IGVheCwgZWJ4OwoKICAgICAgICBfX2FzbV9fKCJjcHVpZCIK
ICAgICAgICAgICAgICAgIDogIj1hIiAoZWF4KSwgIj1iIiAoZWJ4KQogICAgICAgICAgICAgICAg
OiAiMCIgKG9wKQogICAgICAgICAgICAgICAgOiAiY3giLCAiZHgiICk7CiAgICAgICAgcmV0dXJu
IGVieDsKfQpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBjcHVpZF9lY3godW5zaWduZWQgaW50
IG9wKQp7CiAgICAgICAgdW5zaWduZWQgaW50IGVheCwgZWN4OwoKICAgICAgICBfX2FzbV9fKCJj
cHVpZCIKICAgICAgICAgICAgICAgIDogIj1hIiAoZWF4KSwgIj1jIiAoZWN4KQogICAgICAgICAg
ICAgICAgOiAiMCIgKG9wKQogICAgICAgICAgICAgICAgOiAiYngiLCAiZHgiICk7CiAgICAgICAg
cmV0dXJuIGVjeDsKfQpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBjcHVpZF9lZHgodW5zaWdu
ZWQgaW50IG9wKQp7CiAgICAgICAgdW5zaWduZWQgaW50IGVheCwgZWR4OwoKICAgICAgICBfX2Fz
bV9fKCJjcHVpZCIKICAgICAgICAgICAgICAgIDogIj1hIiAoZWF4KSwgIj1kIiAoZWR4KQogICAg
ICAgICAgICAgICAgOiAiMCIgKG9wKQogICAgICAgICAgICAgICAgOiAiYngiLCAiY3giKTsKICAg
ICAgICByZXR1cm4gZWR4Owp9CiMgMTk5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wcm9j
ZXNzb3IuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbW11X2NyNF9mZWF0dXJlczsKCnN0YXRpYyBp
bmxpbmUgdm9pZCBzZXRfaW5fY3I0ICh1bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAgICBtbXVf
Y3I0X2ZlYXR1cmVzIHw9IG1hc2s7CiAgICAgICAgX19hc21fXygibW92bCAlJWNyNCwlJWVheFxu
XHQiCiAgICAgICAgICAgICAgICAib3JsICUwLCUlZWF4XG5cdCIKICAgICAgICAgICAgICAgICJt
b3ZsICUlZWF4LCUlY3I0XG4iCiAgICAgICAgICAgICAgICA6IDogImlyZyIgKG1hc2spCiAgICAg
ICAgICAgICAgICA6ImF4Iik7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBjbGVhcl9pbl9jcjQgKHVu
c2lnbmVkIGxvbmcgbWFzaykKewogICAgICAgIG1tdV9jcjRfZmVhdHVyZXMgJj0gfm1hc2s7CiAg
ICAgICAgX19hc21fXygibW92bCAlJWNyNCwlJWVheFxuXHQiCiAgICAgICAgICAgICAgICAiYW5k
bCAlMCwlJWVheFxuXHQiCiAgICAgICAgICAgICAgICAibW92bCAlJWVheCwlJWNyNFxuIgogICAg
ICAgICAgICAgICAgOiA6ICJpcmciICh+bWFzaykKICAgICAgICAgICAgICAgIDoiYXgiKTsKfQoj
IDI1NiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCmV4dGVybiBpbnQg
TUNBX2J1czsKCgoKZXh0ZXJuIHVuc2lnbmVkIGludCBtYWNoaW5lX2lkOwpleHRlcm4gdW5zaWdu
ZWQgaW50IG1hY2hpbmVfc3VibW9kZWxfaWQ7CmV4dGVybiB1bnNpZ25lZCBpbnQgQklPU19yZXZp
c2lvbjsKZXh0ZXJuIHVuc2lnbmVkIGludCBtY2FfcGVudGl1bV9mbGFnOwojIDI4MiAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCnN0cnVjdCBpMzg3X2ZzYXZlX3N0cnVj
dCB7CiAgICAgICAgbG9uZyBjd2Q7CiAgICAgICAgbG9uZyBzd2Q7CiAgICAgICAgbG9uZyB0d2Q7
CiAgICAgICAgbG9uZyBmaXA7CiAgICAgICAgbG9uZyBmY3M7CiAgICAgICAgbG9uZyBmb287CiAg
ICAgICAgbG9uZyBmb3M7CiAgICAgICAgbG9uZyBzdF9zcGFjZVsyMF07CiAgICAgICAgbG9uZyBz
dGF0dXM7Cn07CgpzdHJ1Y3QgaTM4N19meHNhdmVfc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCBjd2Q7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3dkOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IHR3ZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBmb3A7CiAgICAgICAgbG9uZyBmaXA7CiAg
ICAgICAgbG9uZyBmY3M7CiAgICAgICAgbG9uZyBmb287CiAgICAgICAgbG9uZyBmb3M7CiAgICAg
ICAgbG9uZyBteGNzcjsKICAgICAgICBsb25nIHJlc2VydmVkOwogICAgICAgIGxvbmcgc3Rfc3Bh
Y2VbMzJdOwogICAgICAgIGxvbmcgeG1tX3NwYWNlWzMyXTsKICAgICAgICBsb25nIHBhZGRpbmdb
NTZdOwp9IF9fYXR0cmlidXRlX18gKChhbGlnbmVkICgxNikpKTsKCnN0cnVjdCBpMzg3X3NvZnRf
c3RydWN0IHsKICAgICAgICBsb25nIGN3ZDsKICAgICAgICBsb25nIHN3ZDsKICAgICAgICBsb25n
IHR3ZDsKICAgICAgICBsb25nIGZpcDsKICAgICAgICBsb25nIGZjczsKICAgICAgICBsb25nIGZv
bzsKICAgICAgICBsb25nIGZvczsKICAgICAgICBsb25nIHN0X3NwYWNlWzIwXTsKICAgICAgICB1
bnNpZ25lZCBjaGFyIGZ0b3AsIGNoYW5nZWQsIGxvb2thaGVhZCwgbm9fdXBkYXRlLCBybSwgYWxp
bWl0OwogICAgICAgIHN0cnVjdCBpbmZvICppbmZvOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZW50
cnlfZWlwOwp9OwoKdW5pb24gaTM4N191bmlvbiB7CiAgICAgICAgc3RydWN0IGkzODdfZnNhdmVf
c3RydWN0IGZzYXZlOwogICAgICAgIHN0cnVjdCBpMzg3X2Z4c2F2ZV9zdHJ1Y3QgZnhzYXZlOwog
ICAgICAgIHN0cnVjdCBpMzg3X3NvZnRfc3RydWN0IHNvZnQ7Cn07Cgp0eXBlZGVmIHN0cnVjdCB7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZWc7Cn0gbW1fc2VnbWVudF90OwoKc3RydWN0IHRzc19z
dHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIHNob3J0IGJhY2tfbGluayxfX2JsaDsKICAgICAgICB1
bnNpZ25lZCBsb25nIGVzcDA7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3MwLF9fc3MwaDsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGVzcDE7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3MxLF9fc3Mx
aDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcDI7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3My
LF9fc3MyaDsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fY3IzOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgZWlwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgZWF4LGVjeCxlZHgsZWJ4OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNwOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgZWJwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNpOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgZWRpOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGVzLCBfX2VzaDsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBjcywgX19jc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3MsIF9fc3No
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRzLCBfX2RzaDsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBmcywgX19mc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZ3MsIF9fZ3NoOwogICAgICAgIHVu
c2lnbmVkIHNob3J0IGxkdCwgX19sZHRoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHRyYWNlLCBi
aXRtYXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpb19iaXRtYXBbMzIgKzFdOwoKCgogICAgICAg
IHVuc2lnbmVkIGxvbmcgX19jYWNoZWxpbmVfZmlsbGVyWzVdOwp9OwoKc3RydWN0IHRocmVhZF9z
dHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNwMDsKICAgICAgICB1bnNpZ25lZCBsb25n
IGVpcDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcDsKICAgICAgICB1bnNpZ25lZCBsb25nIGZz
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZ3M7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgZGVidWdy
ZWdbOF07CgogICAgICAgIHVuc2lnbmVkIGxvbmcgY3IyLCB0cmFwX25vLCBlcnJvcl9jb2RlOwoK
ICAgICAgICB1bmlvbiBpMzg3X3VuaW9uIGkzODc7CgogICAgICAgIHN0cnVjdCB2bTg2X3N0cnVj
dCAqIHZtODZfaW5mbzsKICAgICAgICB1bnNpZ25lZCBsb25nIHNjcmVlbl9iaXRtYXA7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyB2ODZmbGFncywgdjg2bWFzaywgdjg2bW9kZSwgc2F2ZWRfZXNwMDsK
CiAgICAgICAgaW50IGlvcGVybTsKICAgICAgICB1bnNpZ25lZCBsb25nIGlvX2JpdG1hcFszMiAr
MV07Cn07CiMgNDI0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKc3Ry
dWN0IHRhc2tfc3RydWN0OwpzdHJ1Y3QgbW1fc3RydWN0OwoKCmV4dGVybiB2b2lkIHJlbGVhc2Vf
dGhyZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKCgoKZXh0ZXJuIGludCBrZXJuZWxfdGhyZWFk
KGludCAoKmZuKSh2b2lkICopLCB2b2lkICogYXJnLCB1bnNpZ25lZCBsb25nIGZsYWdzKTsKCgpl
eHRlcm4gdm9pZCBjb3B5X3NlZ21lbnRzKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IG1t
X3N0cnVjdCAqIG1tKTsKZXh0ZXJuIHZvaWQgcmVsZWFzZV9zZWdtZW50cyhzdHJ1Y3QgbW1fc3Ry
dWN0ICogbW0pOwoKCgoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHRocmVhZF9zYXZlZF9w
YyhzdHJ1Y3QgdGhyZWFkX3N0cnVjdCAqdCkKewogICAgICAgIHJldHVybiAoKHVuc2lnbmVkIGxv
bmcgKil0LT5lc3ApWzNdOwp9Cgp1bnNpZ25lZCBsb25nIGdldF93Y2hhbihzdHJ1Y3QgdGFza19z
dHJ1Y3QgKnApOwojIDQ1OCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgi
CnN0cnVjdCBtaWNyb2NvZGUgewogICAgICAgIHVuc2lnbmVkIGludCBoZHJ2ZXI7CiAgICAgICAg
dW5zaWduZWQgaW50IHJldjsKICAgICAgICB1bnNpZ25lZCBpbnQgZGF0ZTsKICAgICAgICB1bnNp
Z25lZCBpbnQgc2lnOwogICAgICAgIHVuc2lnbmVkIGludCBja3N1bTsKICAgICAgICB1bnNpZ25l
ZCBpbnQgbGRydmVyOwogICAgICAgIHVuc2lnbmVkIGludCBwZjsKICAgICAgICB1bnNpZ25lZCBp
bnQgcmVzZXJ2ZWRbNV07CiAgICAgICAgdW5zaWduZWQgaW50IGJpdHNbNTAwXTsKfTsKCgoKCgpz
dGF0aWMgaW5saW5lIHZvaWQgcmVwX25vcCh2b2lkKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0
aWxlX18oInJlcDtub3AiKTsKfQojIDE0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3By
ZWZldGNoLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9jYWNoZS5oIiAxCiMg
MTUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcHJlZmV0Y2guaCIgMgojIDQzICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3ByZWZldGNoLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBw
cmVmZXRjaChjb25zdCB2b2lkICp4KSB7O30KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBwcmVmZXRj
aHcoY29uc3Qgdm9pZCAqeCkgezt9CiMgNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9s
aXN0LmgiIDIKIyAxOCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9saXN0LmgiCnN0cnVj
dCBsaXN0X2hlYWQgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKm5leHQsICpwcmV2Owp9Owoj
IDM3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKc3RhdGljIF9faW5saW5l
X18gdm9pZCBfX2xpc3RfYWRkKHN0cnVjdCBsaXN0X2hlYWQgKiBuZXcsCiAgICAgICAgc3RydWN0
IGxpc3RfaGVhZCAqIHByZXYsCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqIG5leHQpCnsKICAg
ICAgICBuZXh0LT5wcmV2ID0gbmV3OwogICAgICAgIG5ldy0+bmV4dCA9IG5leHQ7CiAgICAgICAg
bmV3LT5wcmV2ID0gcHJldjsKICAgICAgICBwcmV2LT5uZXh0ID0gbmV3Owp9CiMgNTUgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbGlzdC5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGxp
c3RfYWRkKHN0cnVjdCBsaXN0X2hlYWQgKm5ldywgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKewog
ICAgICAgIF9fbGlzdF9hZGQobmV3LCBoZWFkLCBoZWFkLT5uZXh0KTsKfQojIDY4ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBsaXN0
X2FkZF90YWlsKHN0cnVjdCBsaXN0X2hlYWQgKm5ldywgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkK
ewogICAgICAgIF9fbGlzdF9hZGQobmV3LCBoZWFkLT5wcmV2LCBoZWFkKTsKfQojIDgwICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBf
X2xpc3RfZGVsKHN0cnVjdCBsaXN0X2hlYWQgKiBwcmV2LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqIG5leHQpCnsKICAgICAgICBuZXh0LT5wcmV2
ID0gcHJldjsKICAgICAgICBwcmV2LT5uZXh0ID0gbmV4dDsKfQoKCgoKCgpzdGF0aWMgX19pbmxp
bmVfXyB2b2lkIGxpc3RfZGVsKHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5KQp7CiAgICAgICAgX19s
aXN0X2RlbChlbnRyeS0+cHJldiwgZW50cnktPm5leHQpOwp9CgoKCgoKc3RhdGljIF9faW5saW5l
X18gdm9pZCBsaXN0X2RlbF9pbml0KHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5KQp7CiAgICAgICAg
X19saXN0X2RlbChlbnRyeS0+cHJldiwgZW50cnktPm5leHQpOwogICAgICAgIGRvIHsgKGVudHJ5
KS0+bmV4dCA9IChlbnRyeSk7IChlbnRyeSktPnByZXYgPSAoZW50cnkpOyB9IHdoaWxlICgwKTsK
fQoKCgoKCnN0YXRpYyBfX2lubGluZV9fIGludCBsaXN0X2VtcHR5KHN0cnVjdCBsaXN0X2hlYWQg
KmhlYWQpCnsKICAgICAgICByZXR1cm4gaGVhZC0+bmV4dCA9PSBoZWFkOwp9CgoKCgoKCnN0YXRp
YyBfX2lubGluZV9fIHZvaWQgbGlzdF9zcGxpY2Uoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwgc3Ry
dWN0IGxpc3RfaGVhZCAqaGVhZCkKewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmZpcnN0ID0g
bGlzdC0+bmV4dDsKCiAgICAgICAgaWYgKGZpcnN0ICE9IGxpc3QpIHsKICAgICAgICAgICAgICAg
IHN0cnVjdCBsaXN0X2hlYWQgKmxhc3QgPSBsaXN0LT5wcmV2OwogICAgICAgICAgICAgICAgc3Ry
dWN0IGxpc3RfaGVhZCAqYXQgPSBoZWFkLT5uZXh0OwoKICAgICAgICAgICAgICAgIGZpcnN0LT5w
cmV2ID0gaGVhZDsKICAgICAgICAgICAgICAgIGhlYWQtPm5leHQgPSBmaXJzdDsKCiAgICAgICAg
ICAgICAgICBsYXN0LT5uZXh0ID0gYXQ7CiAgICAgICAgICAgICAgICBhdC0+cHJldiA9IGxhc3Q7
CiAgICAgICAgfQp9CiMgMTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlLmgi
IDIKIyAyNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGUuaCIKIyAxICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2Fz
bS9hdG9taWMuaCIgMgojIDIyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9hdG9taWMuaCIK
dHlwZWRlZiBzdHJ1Y3QgeyB2b2xhdGlsZSBpbnQgY291bnRlcjsgfSBhdG9taWNfdDsKIyA1MyAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBfX2lubGluZV9fIHZv
aWQgYXRvbWljX2FkZChpbnQgaSwgYXRvbWljX3QgKnYpCnsKICAgICAgICBfX2FzbV9fIF9fdm9s
YXRpbGVfXygKICAgICAgICAgICAgICAgICIiICJhZGRsICUxLCUwIgogICAgICAgICAgICAgICAg
OiI9bSIgKHYtPmNvdW50ZXIpCiAgICAgICAgICAgICAgICA6ImlyIiAoaSksICJtIiAodi0+Y291
bnRlcikpOwp9CiMgNjkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0
aWMgX19pbmxpbmVfXyB2b2lkIGF0b21pY19zdWIoaW50IGksIGF0b21pY190ICp2KQp7CiAgICAg
ICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIiAic3VibCAlMSwlMCIK
ICAgICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKQogICAgICAgICAgICAgICAgOiJpciIg
KGkpLCAibSIgKHYtPmNvdW50ZXIpKTsKfQojIDg3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2Fz
bS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IGF0b21pY19zdWJfYW5kX3Rlc3QoaW50
IGksIGF0b21pY190ICp2KQp7CiAgICAgICAgdW5zaWduZWQgY2hhciBjOwoKICAgICAgICBfX2Fz
bV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIiICJzdWJsICUyLCUwOyBzZXRlICUx
IgogICAgICAgICAgICAgICAgOiI9bSIgKHYtPmNvdW50ZXIpLCAiPXFtIiAoYykKICAgICAgICAg
ICAgICAgIDoiaXIiIChpKSwgIm0iICh2LT5jb3VudGVyKSA6ICJtZW1vcnkiKTsKICAgICAgICBy
ZXR1cm4gYzsKfQojIDEwNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYXRvbWljLmgiCnN0
YXRpYyBfX2lubGluZV9fIHZvaWQgYXRvbWljX2luYyhhdG9taWNfdCAqdikKewogICAgICAgIF9f
YXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiIgImluY2wgJTAiCiAgICAgICAg
ICAgICAgICA6Ij1tIiAodi0+Y291bnRlcikKICAgICAgICAgICAgICAgIDoibSIgKHYtPmNvdW50
ZXIpKTsKfQojIDEyMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRp
YyBfX2lubGluZV9fIHZvaWQgYXRvbWljX2RlYyhhdG9taWNfdCAqdikKewogICAgICAgIF9fYXNt
X18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiIgImRlY2wgJTAiCiAgICAgICAgICAg
ICAgICA6Ij1tIiAodi0+Y291bnRlcikKICAgICAgICAgICAgICAgIDoibSIgKHYtPmNvdW50ZXIp
KTsKfQojIDEzNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBf
X2lubGluZV9fIGludCBhdG9taWNfZGVjX2FuZF90ZXN0KGF0b21pY190ICp2KQp7CiAgICAgICAg
dW5zaWduZWQgY2hhciBjOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAg
ICAgICAgICIiICJkZWNsICUwOyBzZXRlICUxIgogICAgICAgICAgICAgICAgOiI9bSIgKHYtPmNv
dW50ZXIpLCAiPXFtIiAoYykKICAgICAgICAgICAgICAgIDoibSIgKHYtPmNvdW50ZXIpIDogIm1l
bW9yeSIpOwogICAgICAgIHJldHVybiBjICE9IDA7Cn0KIyAxNTcgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgYXRvbWljX2luY19hbmRf
dGVzdChhdG9taWNfdCAqdikKewogICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKCiAgICAgICAgX19h
c21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIiAiaW5jbCAlMDsgc2V0ZSAlMSIK
ICAgICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKSwgIj1xbSIgKGMpCiAgICAgICAgICAg
ICAgICA6Im0iICh2LT5jb3VudGVyKSA6ICJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gYyAhPSAw
Owp9CiMgMTc4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9f
aW5saW5lX18gaW50IGF0b21pY19hZGRfbmVnYXRpdmUoaW50IGksIGF0b21pY190ICp2KQp7CiAg
ICAgICAgdW5zaWduZWQgY2hhciBjOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAg
ICAgICAgICAgICAgICIiICJhZGRsICUyLCUwOyBzZXRzICUxIgogICAgICAgICAgICAgICAgOiI9
bSIgKHYtPmNvdW50ZXIpLCAiPXFtIiAoYykKICAgICAgICAgICAgICAgIDoiaXIiIChpKSwgIm0i
ICh2LT5jb3VudGVyKSA6ICJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gYzsKfQojIDI2ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21vZHVsZS5oIiAyCgoKc3RydWN0IGV4Y2VwdGlvbl90
YWJsZV9lbnRyeTsKCgpzdHJ1Y3Qga2VybmVsX3N5bQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyB2
YWx1ZTsKICAgICAgICBjaGFyIG5hbWVbNjBdOwp9OwoKc3RydWN0IG1vZHVsZV9zeW1ib2wKewog
ICAgICAgIHVuc2lnbmVkIGxvbmcgdmFsdWU7CiAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKfTsK
CnN0cnVjdCBtb2R1bGVfcmVmCnsKICAgICAgICBzdHJ1Y3QgbW9kdWxlICpkZXA7CiAgICAgICAg
c3RydWN0IG1vZHVsZSAqcmVmOwogICAgICAgIHN0cnVjdCBtb2R1bGVfcmVmICpuZXh0X3JlZjsK
fTsKCgpzdHJ1Y3QgbW9kdWxlX3BlcnNpc3Q7CgpzdHJ1Y3QgbW9kdWxlCnsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNpemVfb2Zfc3RydWN0OwogICAgICAgIHN0cnVjdCBtb2R1bGUgKm5leHQ7CiAg
ICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNpemU7CgogICAg
ICAgIHVuaW9uCiAgICAgICAgewogICAgICAgICAgICAgICAgYXRvbWljX3QgdXNlY291bnQ7CiAg
ICAgICAgICAgICAgICBsb25nIHBhZDsKICAgICAgICB9IHVjOwoKICAgICAgICB1bnNpZ25lZCBs
b25nIGZsYWdzOwoKICAgICAgICB1bnNpZ25lZCBuc3ltczsKICAgICAgICB1bnNpZ25lZCBuZGVw
czsKCiAgICAgICAgc3RydWN0IG1vZHVsZV9zeW1ib2wgKnN5bXM7CiAgICAgICAgc3RydWN0IG1v
ZHVsZV9yZWYgKmRlcHM7CiAgICAgICAgc3RydWN0IG1vZHVsZV9yZWYgKnJlZnM7CiAgICAgICAg
aW50ICgqaW5pdCkodm9pZCk7CiAgICAgICAgdm9pZCAoKmNsZWFudXApKHZvaWQpOwogICAgICAg
IGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4X3RhYmxlX3N0YXJ0OwogICAg
ICAgIGNvbnN0IHN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnkgKmV4X3RhYmxlX2VuZDsKCgoK
CgoKICAgICAgICBjb25zdCBzdHJ1Y3QgbW9kdWxlX3BlcnNpc3QgKnBlcnNpc3Rfc3RhcnQ7CiAg
ICAgICAgY29uc3Qgc3RydWN0IG1vZHVsZV9wZXJzaXN0ICpwZXJzaXN0X2VuZDsKICAgICAgICBp
bnQgKCpjYW5fdW5sb2FkKSh2b2lkKTsKICAgICAgICBpbnQgcnVuc2l6ZTsKICAgICAgICBjb25z
dCBjaGFyICprYWxsc3ltc19zdGFydDsKICAgICAgICBjb25zdCBjaGFyICprYWxsc3ltc19lbmQ7
CiAgICAgICAgY29uc3QgY2hhciAqYXJjaGRhdGFfc3RhcnQ7CiAgICAgICAgY29uc3QgY2hhciAq
YXJjaGRhdGFfZW5kOwogICAgICAgIGNvbnN0IGNoYXIgKmtlcm5lbF9kYXRhOwp9OwoKc3RydWN0
IG1vZHVsZV9pbmZvCnsKICAgICAgICB1bnNpZ25lZCBsb25nIGFkZHI7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgbG9uZyB1
c2Vjb3VudDsKfTsKIyAxODMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW9kdWxlLmgi
CmV4dGVybiB2b2lkIGludGVyX21vZHVsZV9yZWdpc3Rlcihjb25zdCBjaGFyICosIHN0cnVjdCBt
b2R1bGUgKiwgY29uc3Qgdm9pZCAqKTsKZXh0ZXJuIHZvaWQgaW50ZXJfbW9kdWxlX3VucmVnaXN0
ZXIoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNvbnN0IHZvaWQgKmludGVyX21vZHVsZV9nZXQoY29u
c3QgY2hhciAqKTsKZXh0ZXJuIGNvbnN0IHZvaWQgKmludGVyX21vZHVsZV9nZXRfcmVxdWVzdChj
b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lkIGludGVyX21vZHVsZV9wdXQo
Y29uc3QgY2hhciAqKTsKCnN0cnVjdCBpbnRlcl9tb2R1bGVfZW50cnkgewogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgbGlzdDsKICAgICAgICBjb25zdCBjaGFyICppbV9uYW1lOwogICAgICAgIHN0
cnVjdCBtb2R1bGUgKm93bmVyOwogICAgICAgIGNvbnN0IHZvaWQgKnVzZXJkYXRhOwp9OwoKZXh0
ZXJuIGludCB0cnlfaW5jX21vZF9jb3VudChzdHJ1Y3QgbW9kdWxlICptb2QpOwojIDMyNSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tb2R1bGUuaCIKZXh0ZXJuIHN0cnVjdCBtb2R1bGUg
Km1vZHVsZV9saXN0OwojIDE0NyAiODEzOXRvby5jIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9rZXJuZWwuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L2tlcm5lbC5oIgojIDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1wbGQtbGludXgvMy4wLjEvaW5j
bHVkZS9zdGRhcmcuaCIgMSAzCiMgNDMgIi91c3IvbGliL2djYy1saWIvaTM4Ni1wbGQtbGludXgv
My4wLjEvaW5jbHVkZS9zdGRhcmcuaCIgMwp0eXBlZGVmIF9fYnVpbHRpbl92YV9saXN0IF9fZ251
Y192YV9saXN0OwojIDExMCAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXBsZC1saW51eC8zLjAuMS9p
bmNsdWRlL3N0ZGFyZy5oIiAzCnR5cGVkZWYgX19nbnVjX3ZhX2xpc3QgdmFfbGlzdDsKIyAxMSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvbGlua2FnZS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9jb25maWcuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
bGlua2FnZS5oIiAyCiMgMTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgva2VybmVsLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIiAxCiMgMTMgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgva2VybmVsLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9jb25maWcuaCIgMQojIDYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHlw
ZXMuaCIgMgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5o
IiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zdGRkZWYuaCIgMQojIDUg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCIgMgojIDM2ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmgiCnR5cGVkZWYgc3RydWN0IHsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGZkc19iaXRzIFsoMTAyNC8oOCAqIHNpemVvZih1bnNpZ25l
ZCBsb25nKSkpXTsKfSBfX2tlcm5lbF9mZF9zZXQ7CgoKdHlwZWRlZiB2b2lkICgqX19rZXJuZWxf
c2lnaGFuZGxlcl90KShpbnQpOwoKCnR5cGVkZWYgaW50IF9fa2VybmVsX2tleV90OwoKIyAxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIiAxCiMgMTAgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmgiCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQg
X19rZXJuZWxfZGV2X3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX2tlcm5lbF9pbm9fdDsKdHlw
ZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9tb2RlX3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hv
cnQgX19rZXJuZWxfbmxpbmtfdDsKdHlwZWRlZiBsb25nIF9fa2VybmVsX29mZl90Owp0eXBlZGVm
IGludCBfX2tlcm5lbF9waWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9pcGNf
cGlkX3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfdWlkX3Q7CnR5cGVkZWYgdW5z
aWduZWQgc2hvcnQgX19rZXJuZWxfZ2lkX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fa2VybmVs
X3NpemVfdDsKdHlwZWRlZiBpbnQgX19rZXJuZWxfc3NpemVfdDsKdHlwZWRlZiBpbnQgX19rZXJu
ZWxfcHRyZGlmZl90Owp0eXBlZGVmIGxvbmcgX19rZXJuZWxfdGltZV90Owp0eXBlZGVmIGxvbmcg
X19rZXJuZWxfc3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9uZyBfX2tlcm5lbF9jbG9ja190Owp0eXBl
ZGVmIGludCBfX2tlcm5lbF9kYWRkcl90Owp0eXBlZGVmIGNoYXIgKiBfX2tlcm5lbF9jYWRkcl90
Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX3VpZDE2X3Q7CnR5cGVkZWYgdW5zaWdu
ZWQgc2hvcnQgX19rZXJuZWxfZ2lkMTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19rZXJuZWxf
dWlkMzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19rZXJuZWxfZ2lkMzJfdDsKCnR5cGVkZWYg
dW5zaWduZWQgc2hvcnQgX19rZXJuZWxfb2xkX3VpZF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0
IF9fa2VybmVsX29sZF9naWRfdDsKCgp0eXBlZGVmIGxvbmcgbG9uZyBfX2tlcm5lbF9sb2ZmX3Q7
CgoKdHlwZWRlZiBzdHJ1Y3QgewoKICAgICAgICBpbnQgdmFsWzJdOwoKCgp9IF9fa2VybmVsX2Zz
aWRfdDsKIyA0NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIiAy
CiMgOSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9hc20vdHlwZXMuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L3R5cGVzLmgiIDIKCgoKdHlwZWRlZiBfX2tlcm5lbF9mZF9zZXQgZmRfc2V0Owp0
eXBlZGVmIF9fa2VybmVsX2Rldl90IGRldl90Owp0eXBlZGVmIF9fa2VybmVsX2lub190IGlub190
Owp0eXBlZGVmIF9fa2VybmVsX21vZGVfdCBtb2RlX3Q7CnR5cGVkZWYgX19rZXJuZWxfbmxpbmtf
dCBubGlua190Owp0eXBlZGVmIF9fa2VybmVsX29mZl90IG9mZl90Owp0eXBlZGVmIF9fa2VybmVs
X3BpZF90IHBpZF90Owp0eXBlZGVmIF9fa2VybmVsX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBf
X2tlcm5lbF9rZXlfdCBrZXlfdDsKdHlwZWRlZiBfX2tlcm5lbF9zdXNlY29uZHNfdCBzdXNlY29u
ZHNfdDsKCgp0eXBlZGVmIF9fa2VybmVsX3VpZDMyX3QgdWlkX3Q7CnR5cGVkZWYgX19rZXJuZWxf
Z2lkMzJfdCBnaWRfdDsKdHlwZWRlZiBfX2tlcm5lbF91aWQxNl90IHVpZDE2X3Q7CnR5cGVkZWYg
X19rZXJuZWxfZ2lkMTZfdCBnaWQxNl90OwoKCgp0eXBlZGVmIF9fa2VybmVsX29sZF91aWRfdCBv
bGRfdWlkX3Q7CnR5cGVkZWYgX19rZXJuZWxfb2xkX2dpZF90IG9sZF9naWRfdDsKIyA0NSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIgp0eXBlZGVmIF9fa2VybmVsX2xvZmZf
dCBsb2ZmX3Q7CiMgNTQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMuaCIKdHlw
ZWRlZiBfX2tlcm5lbF9zaXplX3Qgc2l6ZV90OwoKCgoKdHlwZWRlZiBfX2tlcm5lbF9zc2l6ZV90
IHNzaXplX3Q7CgoKCgp0eXBlZGVmIF9fa2VybmVsX3B0cmRpZmZfdCBwdHJkaWZmX3Q7CgoKCgp0
eXBlZGVmIF9fa2VybmVsX3RpbWVfdCB0aW1lX3Q7CgoKCgp0eXBlZGVmIF9fa2VybmVsX2Nsb2Nr
X3QgY2xvY2tfdDsKCgoKCnR5cGVkZWYgX19rZXJuZWxfY2FkZHJfdCBjYWRkcl90OwoKCgp0eXBl
ZGVmIHVuc2lnbmVkIGNoYXIgdV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVfc2hvcnQ7
CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdV9sb25n
OwoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1bmNoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQg
dXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
dWxvbmc7CgoKCgp0eXBlZGVmIF9fdTggdV9pbnQ4X3Q7CnR5cGVkZWYgX19zOCBpbnQ4X3Q7CnR5
cGVkZWYgX191MTYgdV9pbnQxNl90Owp0eXBlZGVmIF9fczE2IGludDE2X3Q7CnR5cGVkZWYgX191
MzIgdV9pbnQzMl90Owp0eXBlZGVmIF9fczMyIGludDMyX3Q7CgoKCnR5cGVkZWYgX191OCB1aW50
OF90Owp0eXBlZGVmIF9fdTE2IHVpbnQxNl90Owp0eXBlZGVmIF9fdTMyIHVpbnQzMl90OwoKCnR5
cGVkZWYgX191NjQgdWludDY0X3Q7CnR5cGVkZWYgX191NjQgdV9pbnQ2NF90Owp0eXBlZGVmIF9f
czY0IGludDY0X3Q7CiMgMTIzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgi
CnN0cnVjdCB1c3RhdCB7CiAgICAgICAgX19rZXJuZWxfZGFkZHJfdCBmX3RmcmVlOwogICAgICAg
IF9fa2VybmVsX2lub190IGZfdGlub2RlOwogICAgICAgIGNoYXIgZl9mbmFtZVs2XTsKICAgICAg
ICBjaGFyIGZfZnBhY2tbNl07Cn07CiMgMTQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
a2VybmVsLmgiIDIKIyA0OSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIK
c3RydWN0IGNvbXBsZXRpb247CgpleHRlcm4gc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpwYW5pY19u
b3RpZmllcl9saXN0OwogICAgICAgICAgIHZvaWQgcGFuaWMoY29uc3QgY2hhciAqIGZtdCwgLi4u
KQogICAgICAgIF9fYXR0cmlidXRlX18gKChub3JldHVybiwgZm9ybWF0IChwcmludGYsIDEsIDIp
KSk7CiAgICAgICAgICAgdm9pZCBkb19leGl0KGxvbmcgZXJyb3JfY29kZSkKICAgICAgICBfX2F0
dHJpYnV0ZV9fKChub3JldHVybikpOwogICAgICAgICAgIHZvaWQgY29tcGxldGVfYW5kX2V4aXQo
c3RydWN0IGNvbXBsZXRpb24gKiwgbG9uZykKICAgICAgICBfX2F0dHJpYnV0ZV9fKChub3JldHVy
bikpOwpleHRlcm4gaW50IGFicyhpbnQpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBzaW1wbGVfc3Ry
dG91bChjb25zdCBjaGFyICosY2hhciAqKix1bnNpZ25lZCBpbnQpOwpleHRlcm4gbG9uZyBzaW1w
bGVfc3RydG9sKGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGludCk7CmV4dGVybiB1bnNp
Z25lZCBsb25nIGxvbmcgc2ltcGxlX3N0cnRvdWxsKGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2ln
bmVkIGludCk7CmV4dGVybiBsb25nIGxvbmcgc2ltcGxlX3N0cnRvbGwoY29uc3QgY2hhciAqLGNo
YXIgKiosdW5zaWduZWQgaW50KTsKZXh0ZXJuIGludCBzcHJpbnRmKGNoYXIgKiBidWYsIGNvbnN0
IGNoYXIgKiBmbXQsIC4uLik7CmV4dGVybiBpbnQgdnNwcmludGYoY2hhciAqYnVmLCBjb25zdCBj
aGFyICosIHZhX2xpc3QpOwpleHRlcm4gaW50IHNucHJpbnRmKGNoYXIgKiBidWYsIHNpemVfdCBz
aXplLCBjb25zdCBjaGFyICpmbXQsIC4uLik7CmV4dGVybiBpbnQgdnNucHJpbnRmKGNoYXIgKmJ1
Ziwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcmdzKTsKCmV4dGVybiBp
bnQgc3NjYW5mKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pCiAgICAgICAgX19hdHRy
aWJ1dGVfXyAoKGZvcm1hdCAoc2NhbmYsMiwzKSkpOwpleHRlcm4gaW50IHZzc2NhbmYoY29uc3Qg
Y2hhciAqLCBjb25zdCBjaGFyICosIHZhX2xpc3QpOwoKZXh0ZXJuIGludCBnZXRfb3B0aW9uKGNo
YXIgKipzdHIsIGludCAqcGludCk7CmV4dGVybiBjaGFyICpnZXRfb3B0aW9ucyhjaGFyICpzdHIs
IGludCBuaW50cywgaW50ICppbnRzKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBtZW1wYXJz
ZShjaGFyICpwdHIsIGNoYXIgKipyZXRwdHIpOwpleHRlcm4gdm9pZCBkZXZfcHJvYmVfbG9jayh2
b2lkKTsKZXh0ZXJuIHZvaWQgZGV2X3Byb2JlX3VubG9jayh2b2lkKTsKCmV4dGVybiBpbnQgc2Vz
c2lvbl9vZl9wZ3JwKGludCBwZ3JwKTsKCiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgaW50
IHByaW50ayhjb25zdCBjaGFyICogZm10LCAuLi4pCiAgICAgICAgX19hdHRyaWJ1dGVfXyAoKGZv
cm1hdCAocHJpbnRmLCAxLCAyKSkpOwoKZXh0ZXJuIGludCBjb25zb2xlX2xvZ2xldmVsOwoKc3Rh
dGljIGlubGluZSB2b2lkIGNvbnNvbGVfc2lsZW50KHZvaWQpCnsKICAgICAgICBjb25zb2xlX2xv
Z2xldmVsID0gMDsKfQoKc3RhdGljIGlubGluZSB2b2lkIGNvbnNvbGVfdmVyYm9zZSh2b2lkKQp7
CiAgICAgICAgaWYgKGNvbnNvbGVfbG9nbGV2ZWwpCiAgICAgICAgICAgICAgICBjb25zb2xlX2xv
Z2xldmVsID0gMTU7Cn0KCmV4dGVybiB2b2lkIGJ1c3Rfc3BpbmxvY2tzKGludCB5ZXMpOwpleHRl
cm4gaW50IG9vcHNfaW5fcHJvZ3Jlc3M7CgpleHRlcm4gaW50IHRhaW50ZWQ7CmV4dGVybiBjb25z
dCBjaGFyICpwcmludF90YWludGVkKHZvaWQpOwojIDE2MCAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9rZXJuZWwuaCIKc3RydWN0IHN5c2luZm8gewogICAgICAgIGxvbmcgdXB0aW1lOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgbG9hZHNbM107CiAgICAgICAgdW5zaWduZWQgbG9uZyB0b3Rh
bHJhbTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZyZWVyYW07CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzaGFyZWRyYW07CiAgICAgICAgdW5zaWduZWQgbG9uZyBidWZmZXJyYW07CiAgICAgICAgdW5z
aWduZWQgbG9uZyB0b3RhbHN3YXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmcmVlc3dhcDsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBwcm9jczsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBwYWQ7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyB0b3RhbGhpZ2g7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmcmVl
aGlnaDsKICAgICAgICB1bnNpZ25lZCBpbnQgbWVtX3VuaXQ7CiAgICAgICAgY2hhciBfZlsyMC0y
KnNpemVvZihsb25nKS1zaXplb2YoaW50KV07Cn07CiMgMTQ4ICI4MTM5dG9vLmMiIDIKIyAxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3BjaS5oIiAxCiMgMjc2ICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L3BjaS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
cGNpX2lkcy5oIiAxCiMgMjc3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3BjaS5oIiAy
CiMgMjk5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3BjaS5oIgojIDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDMwMCAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9wY2kuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29u
ZmlnLmgiIDEKIyAzMDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcGNpLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2lvcG9ydC5oIiAxCiMgMTUgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvaW9wb3J0LmgiCnN0cnVjdCByZXNvdXJjZSB7CiAgICAgICAg
Y29uc3QgY2hhciAqbmFtZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LCBlbmQ7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICBzdHJ1Y3QgcmVzb3VyY2UgKnBhcmVudCwg
KnNpYmxpbmcsICpjaGlsZDsKfTsKCnN0cnVjdCByZXNvdXJjZV9saXN0IHsKICAgICAgICBzdHJ1
Y3QgcmVzb3VyY2VfbGlzdCAqbmV4dDsKICAgICAgICBzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKICAg
ICAgICBzdHJ1Y3QgcGNpX2RldiAqZGV2Owp9OwojIDgzICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L2lvcG9ydC5oIgpleHRlcm4gc3RydWN0IHJlc291cmNlIGlvcG9ydF9yZXNvdXJjZTsK
ZXh0ZXJuIHN0cnVjdCByZXNvdXJjZSBpb21lbV9yZXNvdXJjZTsKCmV4dGVybiBpbnQgZ2V0X3Jl
c291cmNlX2xpc3Qoc3RydWN0IHJlc291cmNlICosIGNoYXIgKmJ1ZiwgaW50IHNpemUpOwoKZXh0
ZXJuIGludCBjaGVja19yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKnJvb3QsIHVuc2lnbmVkIGxv
bmcsIHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gaW50IHJlcXVlc3RfcmVzb3VyY2Uoc3RydWN0IHJl
c291cmNlICpyb290LCBzdHJ1Y3QgcmVzb3VyY2UgKm5ldyk7CmV4dGVybiBpbnQgcmVsZWFzZV9y
ZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKm5ldyk7CmV4dGVybiBpbnQgYWxsb2NhdGVfcmVzb3Vy
Y2Uoc3RydWN0IHJlc291cmNlICpyb290LCBzdHJ1Y3QgcmVzb3VyY2UgKm5ldywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtaW4sIHVuc2lnbmVkIGxvbmcgbWF4LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYWxpZ24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdm9pZCAoKmFsaWduZikodm9pZCAqLCBzdHJ1Y3QgcmVzb3VyY2UgKiwg
dW5zaWduZWQgbG9uZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYWxpZ25m
X2RhdGEpOwoKCgoKCmV4dGVybiBzdHJ1Y3QgcmVzb3VyY2UgKiBfX3JlcXVlc3RfcmVnaW9uKHN0
cnVjdCByZXNvdXJjZSAqLCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIG4sIGNv
bnN0IGNoYXIgKm5hbWUpOwoKCgoKCgoKZXh0ZXJuIGludCBfX2NoZWNrX3JlZ2lvbihzdHJ1Y3Qg
cmVzb3VyY2UgKiwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CmV4dGVybiB2b2lkIF9f
cmVsZWFzZV9yZWdpb24oc3RydWN0IHJlc291cmNlICosIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVk
IGxvbmcpOwoKCgoKCmV4dGVybiB2b2lkIGF1dG9pcnFfc2V0dXAoaW50IHdhaXR0aW1lKTsKZXh0
ZXJuIGludCBhdXRvaXJxX3JlcG9ydChpbnQgd2FpdHRpbWUpOwojIDMwMiAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9wY2kuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvbGlzdC5oIiAxCiMgMzAzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3BjaS5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9lcnJuby5oIiAxCgoKCiMgMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9hc20vZXJybm8uaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvZXJybm8uaCIgMgojIDMwNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9wY2kuaCIgMgoKCmVudW0gcGNpX21tYXBfc3RhdGUgewogICAgICAgIHBjaV9tbWFwX2lvLAog
ICAgICAgIHBjaV9tbWFwX21lbQp9OwojIDMzNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9wY2kuaCIKc3RydWN0IHBjaV9kZXYgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZ2xvYmFs
X2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBidXNfbGlzdDsKICAgICAgICBzdHJ1Y3Qg
cGNpX2J1cyAqYnVzOwogICAgICAgIHN0cnVjdCBwY2lfYnVzICpzdWJvcmRpbmF0ZTsKCiAgICAg
ICAgdm9pZCAqc3lzZGF0YTsKICAgICAgICBzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKnByb2NlbnQ7
CgogICAgICAgIHVuc2lnbmVkIGludCBkZXZmbjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB2ZW5k
b3I7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZGV2aWNlOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IHN1YnN5c3RlbV92ZW5kb3I7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3Vic3lzdGVtX2Rldmlj
ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgY2xhc3M7CiAgICAgICAgdTggaGRyX3R5cGU7CiAgICAg
ICAgdTggcm9tX2Jhc2VfcmVnOwoKICAgICAgICBzdHJ1Y3QgcGNpX2RyaXZlciAqZHJpdmVyOwog
ICAgICAgIHZvaWQgKmRyaXZlcl9kYXRhOwogICAgICAgIHU2NCBkbWFfbWFzazsKCgoKCgogICAg
ICAgIHUzMiBjdXJyZW50X3N0YXRlOwoKCgoKICAgICAgICB1bnNpZ25lZCBzaG9ydCB2ZW5kb3Jf
Y29tcGF0aWJsZVs0XTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkZXZpY2VfY29tcGF0aWJsZVs0
XTsKCgoKCgogICAgICAgIHVuc2lnbmVkIGludCBpcnE7CiAgICAgICAgc3RydWN0IHJlc291cmNl
IHJlc291cmNlWzEyXTsKICAgICAgICBzdHJ1Y3QgcmVzb3VyY2UgZG1hX3Jlc291cmNlWzJdOwog
ICAgICAgIHN0cnVjdCByZXNvdXJjZSBpcnFfcmVzb3VyY2VbMl07CgogICAgICAgIGNoYXIgbmFt
ZVs4MF07CiAgICAgICAgY2hhciBzbG90X25hbWVbOF07CiAgICAgICAgaW50IGFjdGl2ZTsKICAg
ICAgICBpbnQgcm87CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcmVnczsKCiAgICAgICAgaW50ICgq
cHJlcGFyZSkoc3RydWN0IHBjaV9kZXYgKmRldik7CiAgICAgICAgaW50ICgqYWN0aXZhdGUpKHN0
cnVjdCBwY2lfZGV2ICpkZXYpOwogICAgICAgIGludCAoKmRlYWN0aXZhdGUpKHN0cnVjdCBwY2lf
ZGV2ICpkZXYpOwp9OwojIDQwNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9wY2kuaCIK
c3RydWN0IHBjaV9idXMgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbm9kZTsKICAgICAgICBz
dHJ1Y3QgcGNpX2J1cyAqcGFyZW50OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgY2hpbGRyZW47
CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkZXZpY2VzOwogICAgICAgIHN0cnVjdCBwY2lfZGV2
ICpzZWxmOwogICAgICAgIHN0cnVjdCByZXNvdXJjZSAqcmVzb3VyY2VbNF07CgogICAgICAgIHN0
cnVjdCBwY2lfb3BzICpvcHM7CiAgICAgICAgdm9pZCAqc3lzZGF0YTsKICAgICAgICBzdHJ1Y3Qg
cHJvY19kaXJfZW50cnkgKnByb2NkaXI7CgogICAgICAgIHVuc2lnbmVkIGNoYXIgbnVtYmVyOwog
ICAgICAgIHVuc2lnbmVkIGNoYXIgcHJpbWFyeTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNlY29u
ZGFyeTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHN1Ym9yZGluYXRlOwoKICAgICAgICBjaGFyIG5h
bWVbNDhdOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHZlbmRvcjsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCBkZXZpY2U7CiAgICAgICAgdW5zaWduZWQgaW50IHNlcmlhbDsKICAgICAgICB1bnNpZ25l
ZCBjaGFyIHBucHZlcjsKICAgICAgICB1bnNpZ25lZCBjaGFyIHByb2R1Y3R2ZXI7CiAgICAgICAg
dW5zaWduZWQgY2hhciBjaGVja3N1bTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHBhZDE7Cn07CgoK
CmV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIHBjaV9yb290X2J1c2VzOwpleHRlcm4gc3RydWN0IGxp
c3RfaGVhZCBwY2lfZGV2aWNlczsKIyA0NTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
cGNpLmgiCnN0cnVjdCBwY2lfb3BzIHsKICAgICAgICBpbnQgKCpyZWFkX2J5dGUpKHN0cnVjdCBw
Y2lfZGV2ICosIGludCB3aGVyZSwgdTggKnZhbCk7CiAgICAgICAgaW50ICgqcmVhZF93b3JkKShz
dHJ1Y3QgcGNpX2RldiAqLCBpbnQgd2hlcmUsIHUxNiAqdmFsKTsKICAgICAgICBpbnQgKCpyZWFk
X2R3b3JkKShzdHJ1Y3QgcGNpX2RldiAqLCBpbnQgd2hlcmUsIHUzMiAqdmFsKTsKICAgICAgICBp
bnQgKCp3cml0ZV9ieXRlKShzdHJ1Y3QgcGNpX2RldiAqLCBpbnQgd2hlcmUsIHU4IHZhbCk7CiAg
ICAgICAgaW50ICgqd3JpdGVfd29yZCkoc3RydWN0IHBjaV9kZXYgKiwgaW50IHdoZXJlLCB1MTYg
dmFsKTsKICAgICAgICBpbnQgKCp3cml0ZV9kd29yZCkoc3RydWN0IHBjaV9kZXYgKiwgaW50IHdo
ZXJlLCB1MzIgdmFsKTsKfTsKCnN0cnVjdCBwYnVzX3NldF9yYW5nZXNfZGF0YQp7CiAgICAgICAg
aW50IGZvdW5kX3ZnYTsKICAgICAgICB1bnNpZ25lZCBsb25nIGlvX3N0YXJ0LCBpb19lbmQ7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBtZW1fc3RhcnQsIG1lbV9lbmQ7Cn07CgpzdHJ1Y3QgcGNpX2Rl
dmljZV9pZCB7CiAgICAgICAgdW5zaWduZWQgaW50IHZlbmRvciwgZGV2aWNlOwogICAgICAgIHVu
c2lnbmVkIGludCBzdWJ2ZW5kb3IsIHN1YmRldmljZTsKICAgICAgICB1bnNpZ25lZCBpbnQgY2xh
c3MsIGNsYXNzX21hc2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkcml2ZXJfZGF0YTsKfTsKCnN0
cnVjdCBwY2lfZHJpdmVyIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIG5vZGU7CiAgICAgICAg
Y2hhciAqbmFtZTsKICAgICAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWRfdGFibGU7
CiAgICAgICAgaW50ICgqcHJvYmUpIChzdHJ1Y3QgcGNpX2RldiAqZGV2LCBjb25zdCBzdHJ1Y3Qg
cGNpX2RldmljZV9pZCAqaWQpOwogICAgICAgIHZvaWQgKCpyZW1vdmUpIChzdHJ1Y3QgcGNpX2Rl
diAqZGV2KTsKICAgICAgICBpbnQgKCpzYXZlX3N0YXRlKSAoc3RydWN0IHBjaV9kZXYgKmRldiwg
dTMyIHN0YXRlKTsKICAgICAgICBpbnQgKCpzdXNwZW5kKShzdHJ1Y3QgcGNpX2RldiAqZGV2LCB1
MzIgc3RhdGUpOwogICAgICAgIGludCAoKnJlc3VtZSkgKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwog
ICAgICAgIGludCAoKmVuYWJsZV93YWtlKSAoc3RydWN0IHBjaV9kZXYgKmRldiwgdTMyIHN0YXRl
LCBpbnQgZW5hYmxlKTsKfTsKIyA0OTQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcGNp
LmgiCnZvaWQgcGNpYmlvc19pbml0KHZvaWQpOwp2b2lkIHBjaWJpb3NfZml4dXBfYnVzKHN0cnVj
dCBwY2lfYnVzICopOwppbnQgcGNpYmlvc19lbmFibGVfZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICop
OwpjaGFyICpwY2liaW9zX3NldHVwIChjaGFyICpzdHIpOwoKCnZvaWQgcGNpYmlvc19hbGlnbl9y
ZXNvdXJjZSh2b2lkICosIHN0cnVjdCByZXNvdXJjZSAqLCB1bnNpZ25lZCBsb25nKTsKdm9pZCBw
Y2liaW9zX3VwZGF0ZV9yZXNvdXJjZShzdHJ1Y3QgcGNpX2RldiAqLCBzdHJ1Y3QgcmVzb3VyY2Ug
KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcmVzb3VyY2UgKiwgaW50KTsK
dm9pZCBwY2liaW9zX3VwZGF0ZV9pcnEoc3RydWN0IHBjaV9kZXYgKiwgaW50IGlycSk7CnZvaWQg
cGNpYmlvc19maXh1cF9wYnVzX3JhbmdlcyhzdHJ1Y3QgcGNpX2J1cyAqLCBzdHJ1Y3QgcGJ1c19z
ZXRfcmFuZ2VzX2RhdGEgKik7CgoKCmludCBwY2liaW9zX3ByZXNlbnQodm9pZCk7CmludCBwY2li
aW9zX3JlYWRfY29uZmlnX2J5dGUgKHVuc2lnbmVkIGNoYXIgYnVzLCB1bnNpZ25lZCBjaGFyIGRl
dl9mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciB3aGVyZSwg
dW5zaWduZWQgY2hhciAqdmFsKTsKaW50IHBjaWJpb3NfcmVhZF9jb25maWdfd29yZCAodW5zaWdu
ZWQgY2hhciBidXMsIHVuc2lnbmVkIGNoYXIgZGV2X2ZuLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyIHdoZXJlLCB1bnNpZ25lZCBzaG9ydCAqdmFsKTsKaW50IHBj
aWJpb3NfcmVhZF9jb25maWdfZHdvcmQgKHVuc2lnbmVkIGNoYXIgYnVzLCB1bnNpZ25lZCBjaGFy
IGRldl9mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgd2hl
cmUsIHVuc2lnbmVkIGludCAqdmFsKTsKaW50IHBjaWJpb3Nfd3JpdGVfY29uZmlnX2J5dGUgKHVu
c2lnbmVkIGNoYXIgYnVzLCB1bnNpZ25lZCBjaGFyIGRldl9mbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgd2hlcmUsIHVuc2lnbmVkIGNoYXIgdmFsKTsKaW50
IHBjaWJpb3Nfd3JpdGVfY29uZmlnX3dvcmQgKHVuc2lnbmVkIGNoYXIgYnVzLCB1bnNpZ25lZCBj
aGFyIGRldl9mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIg
d2hlcmUsIHVuc2lnbmVkIHNob3J0IHZhbCk7CmludCBwY2liaW9zX3dyaXRlX2NvbmZpZ19kd29y
ZCAodW5zaWduZWQgY2hhciBidXMsIHVuc2lnbmVkIGNoYXIgZGV2X2ZuLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgd2hlcmUsIHVuc2lnbmVkIGludCB2YWwp
OwppbnQgcGNpYmlvc19maW5kX2NsYXNzICh1bnNpZ25lZCBpbnQgY2xhc3NfY29kZSwgdW5zaWdu
ZWQgc2hvcnQgaW5kZXgsIHVuc2lnbmVkIGNoYXIgKmJ1cywgdW5zaWduZWQgY2hhciAqZGV2X2Zu
KTsKaW50IHBjaWJpb3NfZmluZF9kZXZpY2UgKHVuc2lnbmVkIHNob3J0IHZlbmRvciwgdW5zaWdu
ZWQgc2hvcnQgZGV2X2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQg
aW5kZXgsIHVuc2lnbmVkIGNoYXIgKmJ1cywKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIgKmRldl9mbik7CgoKCnZvaWQgcGNpX2luaXQodm9pZCk7CmludCBwY2lfYnVzX2V4
aXN0cyhjb25zdCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LCBpbnQgbnIpOwpzdHJ1Y3QgcGNpX2J1
cyAqcGNpX3NjYW5fYnVzKGludCBidXMsIHN0cnVjdCBwY2lfb3BzICpvcHMsIHZvaWQgKnN5c2Rh
dGEpOwpzdHJ1Y3QgcGNpX2J1cyAqcGNpX2FsbG9jX3ByaW1hcnlfYnVzKGludCBidXMpOwpzdHJ1
Y3QgcGNpX2RldiAqcGNpX3NjYW5fc2xvdChzdHJ1Y3QgcGNpX2RldiAqdGVtcCk7CmludCBwY2lf
cHJvY19hdHRhY2hfZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwppbnQgcGNpX3Byb2NfZGV0
YWNoX2RldmljZShzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKdm9pZCBwY2lfbmFtZV9kZXZpY2Uoc3Ry
dWN0IHBjaV9kZXYgKmRldik7CmNoYXIgKnBjaV9jbGFzc19uYW1lKHUzMiBjbGFzcyk7CnZvaWQg
cGNpX3JlYWRfYnJpZGdlX2Jhc2VzKHN0cnVjdCBwY2lfYnVzICpjaGlsZCk7CnN0cnVjdCByZXNv
dXJjZSAqcGNpX2ZpbmRfcGFyZW50X3Jlc291cmNlKGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpkZXYs
IHN0cnVjdCByZXNvdXJjZSAqcmVzKTsKaW50IHBjaV9zZXR1cF9kZXZpY2Uoc3RydWN0IHBjaV9k
ZXYgKmRldik7CmludCBwY2lfZ2V0X2ludGVycnVwdF9waW4oc3RydWN0IHBjaV9kZXYgKmRldiwg
c3RydWN0IHBjaV9kZXYgKipicmlkZ2UpOwoKCgpzdHJ1Y3QgcGNpX2RldiAqcGNpX2ZpbmRfZGV2
aWNlICh1bnNpZ25lZCBpbnQgdmVuZG9yLCB1bnNpZ25lZCBpbnQgZGV2aWNlLCBjb25zdCBzdHJ1
Y3QgcGNpX2RldiAqZnJvbSk7CnN0cnVjdCBwY2lfZGV2ICpwY2lfZmluZF9zdWJzeXMgKHVuc2ln
bmVkIGludCB2ZW5kb3IsIHVuc2lnbmVkIGludCBkZXZpY2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzc192ZW5kb3IsIHVuc2lnbmVkIGludCBzc19kZXZp
Y2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2
ICpmcm9tKTsKc3RydWN0IHBjaV9kZXYgKnBjaV9maW5kX2NsYXNzICh1bnNpZ25lZCBpbnQgY2xh
c3MsIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpmcm9tKTsKc3RydWN0IHBjaV9kZXYgKnBjaV9maW5k
X3Nsb3QgKHVuc2lnbmVkIGludCBidXMsIHVuc2lnbmVkIGludCBkZXZmbik7CmludCBwY2lfZmlu
ZF9jYXBhYmlsaXR5IChzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgY2FwKTsKCmludCBwY2lfcmVh
ZF9jb25maWdfYnl0ZShzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgd2hlcmUsIHU4ICp2YWwpOwpp
bnQgcGNpX3JlYWRfY29uZmlnX3dvcmQoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHdoZXJlLCB1
MTYgKnZhbCk7CmludCBwY2lfcmVhZF9jb25maWdfZHdvcmQoc3RydWN0IHBjaV9kZXYgKmRldiwg
aW50IHdoZXJlLCB1MzIgKnZhbCk7CmludCBwY2lfd3JpdGVfY29uZmlnX2J5dGUoc3RydWN0IHBj
aV9kZXYgKmRldiwgaW50IHdoZXJlLCB1OCB2YWwpOwppbnQgcGNpX3dyaXRlX2NvbmZpZ193b3Jk
KHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCB3aGVyZSwgdTE2IHZhbCk7CmludCBwY2lfd3JpdGVf
Y29uZmlnX2R3b3JkKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCB3aGVyZSwgdTMyIHZhbCk7Cgpp
bnQgcGNpX2VuYWJsZV9kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKmRldik7CnZvaWQgcGNpX2Rpc2Fi
bGVfZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwp2b2lkIHBjaV9zZXRfbWFzdGVyKHN0cnVj
dCBwY2lfZGV2ICpkZXYpOwppbnQgcGNpX3NldF9kbWFfbWFzayhzdHJ1Y3QgcGNpX2RldiAqZGV2
LCB1NjQgbWFzayk7CmludCBwY2lfZGFjX3NldF9kbWFfbWFzayhzdHJ1Y3QgcGNpX2RldiAqZGV2
LCB1NjQgbWFzayk7CmludCBwY2lfYXNzaWduX3Jlc291cmNlKHN0cnVjdCBwY2lfZGV2ICpkZXYs
IGludCBpKTsKCgppbnQgcGNpX3NhdmVfc3RhdGUoc3RydWN0IHBjaV9kZXYgKmRldiwgdTMyICpi
dWZmZXIpOwppbnQgcGNpX3Jlc3RvcmVfc3RhdGUoc3RydWN0IHBjaV9kZXYgKmRldiwgdTMyICpi
dWZmZXIpOwppbnQgcGNpX3NldF9wb3dlcl9zdGF0ZShzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQg
c3RhdGUpOwppbnQgcGNpX2VuYWJsZV93YWtlKHN0cnVjdCBwY2lfZGV2ICpkZXYsIHUzMiBzdGF0
ZSwgaW50IGVuYWJsZSk7CgoKCmludCBwY2lfY2xhaW1fcmVzb3VyY2Uoc3RydWN0IHBjaV9kZXYg
KiwgaW50KTsKdm9pZCBwY2lfYXNzaWduX3VuYXNzaWduZWRfcmVzb3VyY2VzKHZvaWQpOwp2b2lk
IHBkZXZfZW5hYmxlX2RldmljZShzdHJ1Y3QgcGNpX2RldiAqKTsKdm9pZCBwZGV2X3NvcnRfcmVz
b3VyY2VzKHN0cnVjdCBwY2lfZGV2ICosIHN0cnVjdCByZXNvdXJjZV9saXN0ICosIHUzMik7CnVu
c2lnbmVkIGxvbmcgcGNpX2JyaWRnZV9jaGVja19pbyhzdHJ1Y3QgcGNpX2RldiAqKTsKdm9pZCBw
Y2lfZml4dXBfaXJxcyh1OCAoKikoc3RydWN0IHBjaV9kZXYgKiwgdTggKiksCiAgICAgICAgICAg
ICAgICAgICAgaW50ICgqKShzdHJ1Y3QgcGNpX2RldiAqLCB1OCwgdTgpKTsKCmludCBwY2lfcmVx
dWVzdF9yZWdpb25zKHN0cnVjdCBwY2lfZGV2ICosIGNoYXIgKik7CnZvaWQgcGNpX3JlbGVhc2Vf
cmVnaW9ucyhzdHJ1Y3QgcGNpX2RldiAqKTsKCgppbnQgcGNpX3JlZ2lzdGVyX2RyaXZlcihzdHJ1
Y3QgcGNpX2RyaXZlciAqKTsKdm9pZCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHBjaV9k
cml2ZXIgKik7CnZvaWQgcGNpX2luc2VydF9kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKiwgc3RydWN0
IHBjaV9idXMgKik7CnZvaWQgcGNpX3JlbW92ZV9kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKik7CnN0
cnVjdCBwY2lfZHJpdmVyICpwY2lfZGV2X2RyaXZlcihjb25zdCBzdHJ1Y3QgcGNpX2RldiAqKTsK
Y29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9tYXRjaF9kZXZpY2UoY29uc3Qgc3RydWN0
IHBjaV9kZXZpY2VfaWQgKmlkcywgY29uc3Qgc3RydWN0IHBjaV9kZXYgKmRldik7CgoKc3RydWN0
IHBjaV9wb29sICpwY2lfcG9vbF9jcmVhdGUgKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBwY2lf
ZGV2ICpkZXYsCiAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwgc2l6ZV90IGFsaWduLCBzaXpl
X3QgYWxsb2NhdGlvbiwgaW50IGZsYWdzKTsKdm9pZCBwY2lfcG9vbF9kZXN0cm95IChzdHJ1Y3Qg
cGNpX3Bvb2wgKnBvb2wpOwoKdm9pZCAqcGNpX3Bvb2xfYWxsb2MgKHN0cnVjdCBwY2lfcG9vbCAq
cG9vbCwgaW50IGZsYWdzLCBkbWFfYWRkcl90ICpoYW5kbGUpOwp2b2lkIHBjaV9wb29sX2ZyZWUg
KHN0cnVjdCBwY2lfcG9vbCAqcG9vbCwgdm9pZCAqdmFkZHIsIGRtYV9hZGRyX3QgYWRkcik7CgoK
CgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wY2kuaCIgMQoKCgojIDEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2FzbS9wY2kuaCIgMgojIDEzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wY2ku
aCIKZXh0ZXJuIHVuc2lnbmVkIGludCBwY2liaW9zX2Fzc2lnbl9hbGxfYnVzc2VzKHZvaWQpOwoK
CgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcGNpX21lbV9zdGFydDsKCgoKdm9pZCBwY2liaW9zX3Nl
dF9tYXN0ZXIoc3RydWN0IHBjaV9kZXYgKmRldik7CnZvaWQgcGNpYmlvc19wZW5hbGl6ZV9pc2Ff
aXJxKGludCBpcnEpOwoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90eXBl
cy5oIiAxCiMgMzAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BjaS5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zbGFiLmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9zbGFiLmgiCnR5cGVkZWYgc3RydWN0IGttZW1fY2FjaGVfcyBrbWVtX2Nh
Y2hlX3Q7CgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW0uaCIgMQoKCgojIDEg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMQoKCgojIDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvYXNtL3BhcmFtLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3NjaGVkLmgiIDIKCmV4dGVybiB1bnNpZ25lZCBsb25nIGV2ZW50OwoKIyAxICIvdXNy
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
bnV4L3NvY2tldC5oIgpleHRlcm4gaW50IG1lbWNweV9mcm9taW92ZWModW5zaWduZWQgY2hhciAq
a2RhdGEsIHN0cnVjdCBpb3ZlYyAqaW92LCBpbnQgbGVuKTsKZXh0ZXJuIGludCBtZW1jcHlfZnJv
bWlvdmVjZW5kKHVuc2lnbmVkIGNoYXIgKmtkYXRhLCBzdHJ1Y3QgaW92ZWMgKmlvdiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0LCBpbnQgbGVuKTsKZXh0ZXJuIGlu
dCBjc3VtX3BhcnRpYWxfY29weV9mcm9taW92ZWNlbmQodW5zaWduZWQgY2hhciAqa2RhdGEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpb3ZlYyAqaW92
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGVu
LCBpbnQgKmNzdW1wKTsKCmV4dGVybiBpbnQgdmVyaWZ5X2lvdmVjKHN0cnVjdCBtc2doZHIgKm0s
IHN0cnVjdCBpb3ZlYyAqaW92LCBjaGFyICphZGRyZXNzLCBpbnQgbW9kZSk7CmV4dGVybiBpbnQg
bWVtY3B5X3RvaW92ZWMoc3RydWN0IGlvdmVjICp2LCB1bnNpZ25lZCBjaGFyICprZGF0YSwgaW50
IGxlbik7CmV4dGVybiB2b2lkIG1lbWNweV90b2tlcm5lbGlvdmVjKHN0cnVjdCBpb3ZlYyAqaW92
LCB1bnNpZ25lZCBjaGFyICprZGF0YSwgaW50IGxlbik7CmV4dGVybiBpbnQgbW92ZV9hZGRyX3Rv
X3VzZXIodm9pZCAqa2FkZHIsIGludCBrbGVuLCB2b2lkICp1YWRkciwgaW50ICp1bGVuKTsKZXh0
ZXJuIGludCBtb3ZlX2FkZHJfdG9fa2VybmVsKHZvaWQgKnVhZGRyLCBpbnQgdWxlbiwgdm9pZCAq
a2FkZHIpOwpleHRlcm4gaW50IHB1dF9jbXNnKHN0cnVjdCBtc2doZHIqLCBpbnQgbGV2ZWwsIGlu
dCB0eXBlLCBpbnQgbGVuLCB2b2lkICpkYXRhKTsKIyAyMyAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9uZXQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvd2FpdC5o
IiAxCiMgMjQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmV0LmgiIDIKCnN0cnVjdCBw
b2xsX3RhYmxlX3N0cnVjdDsKIyA0OSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uZXQu
aCIKdHlwZWRlZiBlbnVtIHsKICBTU19GUkVFID0gMCwKICBTU19VTkNPTk5FQ1RFRCwKICBTU19D
T05ORUNUSU5HLAogIFNTX0NPTk5FQ1RFRCwKICBTU19ESVNDT05ORUNUSU5HCn0gc29ja2V0X3N0
YXRlOwojIDY1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25ldC5oIgpzdHJ1Y3Qgc29j
a2V0CnsKICAgICAgICBzb2NrZXRfc3RhdGUgc3RhdGU7CgogICAgICAgIHVuc2lnbmVkIGxvbmcg
ZmxhZ3M7CiAgICAgICAgc3RydWN0IHByb3RvX29wcyAqb3BzOwogICAgICAgIHN0cnVjdCBpbm9k
ZSAqaW5vZGU7CiAgICAgICAgc3RydWN0IGZhc3luY19zdHJ1Y3QgKmZhc3luY19saXN0OwogICAg
ICAgIHN0cnVjdCBmaWxlICpmaWxlOwogICAgICAgIHN0cnVjdCBzb2NrICpzazsKICAgICAgICB3
YWl0X3F1ZXVlX2hlYWRfdCB3YWl0OwoKICAgICAgICBzaG9ydCB0eXBlOwogICAgICAgIHVuc2ln
bmVkIGNoYXIgcGFzc2NyZWQ7Cn07CgoKCnN0cnVjdCBzY21fY29va2llOwpzdHJ1Y3Qgdm1fYXJl
YV9zdHJ1Y3Q7CnN0cnVjdCBwYWdlOwoKc3RydWN0IHByb3RvX29wcyB7CiAgaW50IGZhbWlseTsK
CiAgaW50ICgqcmVsZWFzZSkgKHN0cnVjdCBzb2NrZXQgKnNvY2spOwogIGludCAoKmJpbmQpIChz
dHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVteWFkZHIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgc29ja2FkZHJfbGVuKTsKICBpbnQgKCpjb25uZWN0KSAoc3RydWN0
IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICp1c2VydmFkZHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgc29ja2FkZHJfbGVuLCBpbnQgZmxhZ3MpOwogIGludCAoKnNvY2tldHBh
aXIpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrMSwgc3RydWN0IHNvY2tldCAqc29jazIpOwogIGludCAo
KmFjY2VwdCkgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssCiAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MpOwogIGludCAoKmdldG5hbWUpIChzdHJ1
Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgaW50ICp1c29ja2FkZHJfbGVuLCBpbnQgcGVlcik7CiAgdW5zaWduZWQgaW50ICgq
cG9sbCkgKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgcG9s
bF90YWJsZV9zdHJ1Y3QgKndhaXQpOwogIGludCAoKmlvY3RsKSAoc3RydWN0IHNvY2tldCAqc29j
aywgdW5zaWduZWQgaW50IGNtZCwKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv
bmcgYXJnKTsKICBpbnQgKCpsaXN0ZW4pIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGVuKTsK
ICBpbnQgKCpzaHV0ZG93bikgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBmbGFncyk7CiAgaW50
ICgqc2V0c29ja29wdCkgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpvcHR2YWwsIGludCBvcHRsZW4pOwog
IGludCAoKmdldHNvY2tvcHQpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBv
cHRuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqb3B0dmFsLCBpbnQgKm9wdGxl
bik7CiAgaW50ICgqc2VuZG1zZykgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIg
Km0sIGludCB0b3RhbF9sZW4sIHN0cnVjdCBzY21fY29va2llICpzY20pOwogIGludCAoKnJlY3Zt
c2cpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBpbnQgdG90YWxfbGVu
LCBpbnQgZmxhZ3MsIHN0cnVjdCBzY21fY29va2llICpzY20pOwogIGludCAoKm1tYXApIChzdHJ1
Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHZtX2FyZWFfc3RydWN0
ICogdm1hKTsKICBzc2l6ZV90ICgqc2VuZHBhZ2UpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1
Y3QgcGFnZSAqcGFnZSwgaW50IG9mZnNldCwgc2l6ZV90IHNpemUsIGludCBmbGFncyk7Cn07Cgpz
dHJ1Y3QgbmV0X3Byb3RvX2ZhbWlseQp7CiAgICAgICAgaW50IGZhbWlseTsKICAgICAgICBpbnQg
KCpjcmVhdGUpKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBwcm90b2NvbCk7CgoKICAgICAgICBz
aG9ydCBhdXRoZW50aWNhdGlvbjsKICAgICAgICBzaG9ydCBlbmNyeXB0aW9uOwogICAgICAgIHNo
b3J0IGVuY3J5cHRfbmV0Owp9OwoKc3RydWN0IG5ldF9wcm90bwp7CiAgICAgICAgY29uc3QgY2hh
ciAqbmFtZTsKICAgICAgICB2b2lkICgqaW5pdF9mdW5jKShzdHJ1Y3QgbmV0X3Byb3RvICopOwp9
OwoKZXh0ZXJuIGludCBzb2NrX3dha2VfYXN5bmMoc3RydWN0IHNvY2tldCAqc2ssIGludCBob3cs
IGludCBiYW5kKTsKZXh0ZXJuIGludCBzb2NrX3JlZ2lzdGVyKHN0cnVjdCBuZXRfcHJvdG9fZmFt
aWx5ICpmYW0pOwpleHRlcm4gaW50IHNvY2tfdW5yZWdpc3RlcihpbnQgZmFtaWx5KTsKZXh0ZXJu
IHN0cnVjdCBzb2NrZXQgKnNvY2tfYWxsb2Modm9pZCk7CmV4dGVybiBpbnQgc29ja19jcmVhdGUo
aW50IGZhbWlseSwgaW50IHR5cGUsIGludCBwcm90bywgc3RydWN0IHNvY2tldCAqKik7CmV4dGVy
biB2b2lkIHNvY2tfcmVsZWFzZShzdHJ1Y3Qgc29ja2V0ICopOwpleHRlcm4gaW50IHNvY2tfc2Vu
ZG1zZyhzdHJ1Y3Qgc29ja2V0ICosIHN0cnVjdCBtc2doZHIgKm0sIGludCBsZW4pOwpleHRlcm4g
aW50IHNvY2tfcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICosIHN0cnVjdCBtc2doZHIgKm0sIGludCBs
ZW4sIGludCBmbGFncyk7CmV4dGVybiBpbnQgc29ja19yZWFkdl93cml0ZXYoaW50IHR5cGUsIHN0
cnVjdCBpbm9kZSAqIGlub2RlLCBzdHJ1Y3QgZmlsZSAqIGZpbGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgaW92ZWMgKiBpb3YsIGxvbmcgY291bnQsIGxv
bmcgc2l6ZSk7CgpleHRlcm4gaW50IG5ldF9yYXRlbGltaXQodm9pZCk7CmV4dGVybiB1bnNpZ25l
ZCBsb25nIG5ldF9yYW5kb20odm9pZCk7CmV4dGVybiB2b2lkIG5ldF9zcmFuZG9tKHVuc2lnbmVk
IGxvbmcpOwojIDE2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2tkZXZfdC5oIiAxCiMgNjcgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgva2Rldl90LmgiCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQga2Rldl90
OwojIDc2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2tkZXZfdC5oIgpleHRlcm4gY29u
c3QgY2hhciAqIGtkZXZuYW1lKGtkZXZfdCk7CgoKCgoKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQg
aW50IGtkZXZfdF90b19ucihrZGV2X3QgZGV2KSB7CiAgICAgICAgcmV0dXJuICgoKHVuc2lnbmVk
IGludCkgKChkZXYpID4+IDgpKTw8OCkgfCAoKHVuc2lnbmVkIGludCkgKChkZXYpICYgKCgxVSA8
PCA4KSAtIDEpKSk7Cn0KCnN0YXRpYyBpbmxpbmUga2Rldl90IHRvX2tkZXZfdChpbnQgZGV2KQp7
CiAgICAgICAgaW50IG1ham9yLCBtaW5vcjsKIyA5OCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9rZGV2X3QuaCIKICAgICAgICBtYWpvciA9IChkZXYgPj4gOCk7CiAgICAgICAgbWlub3Ig
PSAoZGV2ICYgMHhmZik7CgogICAgICAgIHJldHVybiAoKChtYWpvcikgPDwgOCkgfCAobWlub3Ip
KTsKfQojIDE3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2lvY3RsLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2FzbS9pb2N0bC5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9pb2N0bC5oIiAyCiMgMTggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbGlzdC5oIiAxCiMgMTkgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvZGNhY2hlLmgiIDEKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2F0
b21pYy5oIiAxCiMgNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW91bnQuaCIgMQojIDE5ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L21vdW50LmgiCnN0cnVjdCB2ZnNtb3VudAp7CiAgICAgICAg
c3RydWN0IGxpc3RfaGVhZCBtbnRfaGFzaDsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKm1udF9w
YXJlbnQ7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqbW50X21vdW50cG9pbnQ7CiAgICAgICAgc3Ry
dWN0IGRlbnRyeSAqbW50X3Jvb3Q7CiAgICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICptbnRfc2I7
CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBtbnRfbW91bnRzOwogICAgICAgIHN0cnVjdCBsaXN0
X2hlYWQgbW50X2NoaWxkOwogICAgICAgIGF0b21pY190IG1udF9jb3VudDsKICAgICAgICBpbnQg
bW50X2ZsYWdzOwogICAgICAgIGNoYXIgKm1udF9kZXZuYW1lOwogICAgICAgIHN0cnVjdCBsaXN0
X2hlYWQgbW50X2xpc3Q7Cn07CgpzdGF0aWMgaW5saW5lIHN0cnVjdCB2ZnNtb3VudCAqbW50Z2V0
KHN0cnVjdCB2ZnNtb3VudCAqbW50KQp7CiAgICAgICAgaWYgKG1udCkKICAgICAgICAgICAgICAg
IGF0b21pY19pbmMoJm1udC0+bW50X2NvdW50KTsKICAgICAgICByZXR1cm4gbW50Owp9CgpleHRl
cm4gdm9pZCBfX21udHB1dChzdHJ1Y3QgdmZzbW91bnQgKm1udCk7CgpzdGF0aWMgaW5saW5lIHZv
aWQgbW50cHV0KHN0cnVjdCB2ZnNtb3VudCAqbW50KQp7CiAgICAgICAgaWYgKG1udCkgewogICAg
ICAgICAgICAgICAgaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJm1udC0+bW50X2NvdW50KSkKICAg
ICAgICAgICAgICAgICAgICAgICAgX19tbnRwdXQobW50KTsKICAgICAgICB9Cn0KIyA4ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIiAyCiMgMjQgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0cnVjdCBxc3RyIHsKICAgICAgICBjb25zdCB1bnNp
Z25lZCBjaGFyICogbmFtZTsKICAgICAgICB1bnNpZ25lZCBpbnQgbGVuOwogICAgICAgIHVuc2ln
bmVkIGludCBoYXNoOwp9OwoKc3RydWN0IGRlbnRyeV9zdGF0X3QgewogICAgICAgIGludCBucl9k
ZW50cnk7CiAgICAgICAgaW50IG5yX3VudXNlZDsKICAgICAgICBpbnQgYWdlX2xpbWl0OwogICAg
ICAgIGludCB3YW50X3BhZ2VzOwogICAgICAgIGludCBkdW1teVsyXTsKfTsKZXh0ZXJuIHN0cnVj
dCBkZW50cnlfc3RhdF90IGRlbnRyeV9zdGF0OwoKCgoKCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNp
Z25lZCBsb25nIHBhcnRpYWxfbmFtZV9oYXNoKHVuc2lnbmVkIGxvbmcgYywgdW5zaWduZWQgbG9u
ZyBwcmV2aGFzaCkKewogICAgICAgIHJldHVybiAocHJldmhhc2ggKyAoYyA8PCA0KSArIChjID4+
IDQpKSAqIDExOwp9CgoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBlbmRfbmFtZV9o
YXNoKHVuc2lnbmVkIGxvbmcgaGFzaCkKewogICAgICAgIHJldHVybiAodW5zaWduZWQgaW50KSBo
YXNoOwp9CgoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgaW50IGZ1bGxfbmFtZV9oYXNoKGNv
bnN0IHVuc2lnbmVkIGNoYXIgKiBuYW1lLCB1bnNpZ25lZCBpbnQgbGVuKQp7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBoYXNoID0gMDsKICAgICAgICB3aGlsZSAobGVuLS0pCiAgICAgICAgICAgICAg
ICBoYXNoID0gcGFydGlhbF9uYW1lX2hhc2goKm5hbWUrKywgaGFzaCk7CiAgICAgICAgcmV0dXJu
IGVuZF9uYW1lX2hhc2goaGFzaCk7Cn0KCgoKc3RydWN0IGRlbnRyeSB7CiAgICAgICAgYXRvbWlj
X3QgZF9jb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgZF9mbGFnczsKICAgICAgICBzdHJ1Y3Qg
aW5vZGUgKiBkX2lub2RlOwogICAgICAgIHN0cnVjdCBkZW50cnkgKiBkX3BhcmVudDsKICAgICAg
ICBzdHJ1Y3QgbGlzdF9oZWFkIGRfaGFzaDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRfbHJ1
OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZF9jaGlsZDsKICAgICAgICBzdHJ1Y3QgbGlzdF9o
ZWFkIGRfc3ViZGlyczsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRfYWxpYXM7CiAgICAgICAg
aW50IGRfbW91bnRlZDsKICAgICAgICBzdHJ1Y3QgcXN0ciBkX25hbWU7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBkX3RpbWU7CiAgICAgICAgc3RydWN0IGRlbnRyeV9vcGVyYXRpb25zICpkX29wOwog
ICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqIGRfc2I7CiAgICAgICAgdW5zaWduZWQgbG9uZyBk
X3Zmc19mbGFnczsKICAgICAgICB2b2lkICogZF9mc2RhdGE7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBkX2luYW1lWzE2XTsKfTsKCnN0cnVjdCBkZW50cnlfb3BlcmF0aW9ucyB7CiAgICAgICAgaW50
ICgqZF9yZXZhbGlkYXRlKShzdHJ1Y3QgZGVudHJ5ICosIGludCk7CiAgICAgICAgaW50ICgqZF9o
YXNoKSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgcXN0ciAqKTsKICAgICAgICBpbnQgKCpkX2Nv
bXBhcmUpIChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBxc3RyICosIHN0cnVjdCBxc3RyICopOwog
ICAgICAgIGludCAoKmRfZGVsZXRlKShzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIHZvaWQgKCpk
X3JlbGVhc2UpKHN0cnVjdCBkZW50cnkgKik7CiAgICAgICAgdm9pZCAoKmRfaXB1dCkoc3RydWN0
IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKik7Cn07CiMgMTI3ICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2RjYWNoZS5oIgpleHRlcm4gc3BpbmxvY2tfdCBkY2FjaGVfbG9jazsKIyAxNDYg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0YXRpYyBfX2lubGluZV9f
IHZvaWQgZF9kcm9wKHN0cnVjdCBkZW50cnkgKiBkZW50cnkpCnsKICAgICAgICAodm9pZCkoJmRj
YWNoZV9sb2NrKTsKICAgICAgICBsaXN0X2RlbCgmZGVudHJ5LT5kX2hhc2gpOwogICAgICAgIGRv
IHsgKCZkZW50cnktPmRfaGFzaCktPm5leHQgPSAoJmRlbnRyeS0+ZF9oYXNoKTsgKCZkZW50cnkt
PmRfaGFzaCktPnByZXYgPSAoJmRlbnRyeS0+ZF9oYXNoKTsgfSB3aGlsZSAoMCk7CiAgICAgICAg
ZG8geyB9IHdoaWxlKDApOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZG5hbWVfZXh0ZXJuYWwo
c3RydWN0IGRlbnRyeSAqZCkKewogICAgICAgIHJldHVybiBkLT5kX25hbWUubmFtZSAhPSBkLT5k
X2luYW1lOwp9CgoKCgpleHRlcm4gdm9pZCBkX2luc3RhbnRpYXRlKHN0cnVjdCBkZW50cnkgKiwg
c3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCBkX2RlbGV0ZShzdHJ1Y3QgZGVudHJ5ICopOwoK
CmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogZF9hbGxvYyhzdHJ1Y3QgZGVudHJ5ICosIGNvbnN0IHN0
cnVjdCBxc3RyICopOwpleHRlcm4gdm9pZCBzaHJpbmtfZGNhY2hlX3NiKHN0cnVjdCBzdXBlcl9i
bG9jayAqKTsKZXh0ZXJuIHZvaWQgc2hyaW5rX2RjYWNoZV9wYXJlbnQoc3RydWN0IGRlbnRyeSAq
KTsKZXh0ZXJuIGludCBkX2ludmFsaWRhdGUoc3RydWN0IGRlbnRyeSAqKTsKCgpzdHJ1Y3Qgem9u
ZV9zdHJ1Y3Q7CgpleHRlcm4gaW50IHNocmlua19kY2FjaGVfbWVtb3J5KGludCwgdW5zaWduZWQg
aW50KTsKZXh0ZXJuIHZvaWQgcHJ1bmVfZGNhY2hlKGludCk7CgoKZXh0ZXJuIGludCBzaHJpbmtf
aWNhY2hlX21lbW9yeShpbnQsIGludCk7CmV4dGVybiB2b2lkIHBydW5lX2ljYWNoZShpbnQpOwoK
CmV4dGVybiBpbnQgc2hyaW5rX2RxY2FjaGVfbWVtb3J5KGludCwgdW5zaWduZWQgaW50KTsKCgpl
eHRlcm4gc3RydWN0IGRlbnRyeSAqIGRfYWxsb2Nfcm9vdChzdHJ1Y3QgaW5vZGUgKik7CgoKZXh0
ZXJuIHZvaWQgZF9nZW5vY2lkZShzdHJ1Y3QgZGVudHJ5ICopOwoKZXh0ZXJuIHN0cnVjdCBkZW50
cnkgKmRfZmluZF9hbGlhcyhzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIGRfcHJ1bmVfYWxp
YXNlcyhzdHJ1Y3QgaW5vZGUgKik7CgoKZXh0ZXJuIGludCBoYXZlX3N1Ym1vdW50cyhzdHJ1Y3Qg
ZGVudHJ5ICopOwoKCgoKZXh0ZXJuIHZvaWQgZF9yZWhhc2goc3RydWN0IGRlbnRyeSAqKTsKIyAy
MTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0YXRpYyBfX2lubGlu
ZV9fIHZvaWQgZF9hZGQoc3RydWN0IGRlbnRyeSAqIGVudHJ5LCBzdHJ1Y3QgaW5vZGUgKiBpbm9k
ZSkKewogICAgICAgIGRfaW5zdGFudGlhdGUoZW50cnksIGlub2RlKTsKICAgICAgICBkX3JlaGFz
aChlbnRyeSk7Cn0KCgpleHRlcm4gdm9pZCBkX21vdmUoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qg
ZGVudHJ5ICopOwoKCmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogZF9sb29rdXAoc3RydWN0IGRlbnRy
eSAqLCBzdHJ1Y3QgcXN0ciAqKTsKCgpleHRlcm4gaW50IGRfdmFsaWRhdGUoc3RydWN0IGRlbnRy
eSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwoKZXh0ZXJuIGNoYXIgKiBfX2RfcGF0aChzdHJ1Y3QgZGVu
dHJ5ICosIHN0cnVjdCB2ZnNtb3VudCAqLCBzdHJ1Y3QgZGVudHJ5ICosCiAgICAgICAgc3RydWN0
IHZmc21vdW50ICosIGNoYXIgKiwgaW50KTsKIyAyNDMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvZGNhY2hlLmgiCnN0YXRpYyBfX2lubGluZV9fIHN0cnVjdCBkZW50cnkgKiBkZ2V0KHN0
cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIGlmIChkZW50cnkpIHsKICAgICAgICAgICAg
ICAgIGlmICghKCgmZGVudHJ5LT5kX2NvdW50KS0+Y291bnRlcikpCiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIuYnl0ZSAweDBmLDB4MGIiKTsKICAgICAgICAg
ICAgICAgIGF0b21pY19pbmMoJmRlbnRyeS0+ZF9jb3VudCk7CiAgICAgICAgfQogICAgICAgIHJl
dHVybiBkZW50cnk7Cn0KCmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogZGdldF9sb2NrZWQoc3RydWN0
IGRlbnRyeSAqKTsKIyAyNjIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZGNhY2hlLmgi
CnN0YXRpYyBfX2lubGluZV9fIGludCBkX3VuaGFzaGVkKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkK
ewogICAgICAgIHJldHVybiBsaXN0X2VtcHR5KCZkZW50cnktPmRfaGFzaCk7Cn0KCmV4dGVybiB2
b2lkIGRwdXQoc3RydWN0IGRlbnRyeSAqKTsKCnN0YXRpYyBfX2lubGluZV9fIGludCBkX21vdW50
cG9pbnQoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAgcmV0dXJuIGRlbnRyeS0+ZF9t
b3VudGVkOwp9CgpleHRlcm4gc3RydWN0IHZmc21vdW50ICpsb29rdXBfbW50KHN0cnVjdCB2ZnNt
b3VudCAqLCBzdHJ1Y3QgZGVudHJ5ICopOwojIDIwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N0YXQuaCIgMQoK
CgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc3RhdC5oIiAxCgoKCnN0cnVjdCBf
X29sZF9rZXJuZWxfc3RhdCB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfZGV2OwogICAgICAg
IHVuc2lnbmVkIHNob3J0IHN0X2lubzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9tb2RlOwog
ICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X25saW5rOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0
X3VpZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9naWQ7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgc3RfcmRldjsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X3NpemU7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzdF9hdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X210aW1lOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgc3RfY3RpbWU7Cn07CgpzdHJ1Y3Qgc3RhdCB7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgc3RfZGV2OwogICAgICAgIHVuc2lnbmVkIHNob3J0IF9fcGFkMTsKICAgICAgICB1
bnNpZ25lZCBsb25nIHN0X2lubzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9tb2RlOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IHN0X25saW5rOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X3Vp
ZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9naWQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
c3RfcmRldjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBfX3BhZDI7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBzdF9zaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfYmxrc2l6ZTsKICAgICAgICB1
bnNpZ25lZCBsb25nIHN0X2Jsb2NrczsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2F0aW1lOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3Rf
bXRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDI7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBzdF9jdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMzsKICAgICAgICB1
bnNpZ25lZCBsb25nIF9fdW51c2VkNDsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkNTsK
fTsKCgoKCnN0cnVjdCBzdGF0NjQgewogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X2RldjsKICAg
ICAgICB1bnNpZ25lZCBjaGFyIF9fcGFkMFsxMF07CgoKICAgICAgICB1bnNpZ25lZCBsb25nIF9f
c3RfaW5vOwoKICAgICAgICB1bnNpZ25lZCBpbnQgc3RfbW9kZTsKICAgICAgICB1bnNpZ25lZCBp
bnQgc3Rfbmxpbms7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfdWlkOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgc3RfZ2lkOwoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9yZGV2OwogICAgICAg
IHVuc2lnbmVkIGNoYXIgX19wYWQzWzEwXTsKCiAgICAgICAgbG9uZyBsb25nIHN0X3NpemU7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBzdF9ibGtzaXplOwoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0
X2Jsb2NrczsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fcGFkNDsKCiAgICAgICAgdW5zaWduZWQg
bG9uZyBzdF9hdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fcGFkNTsKCiAgICAgICAgdW5z
aWduZWQgbG9uZyBzdF9tdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fcGFkNjsKCiAgICAg
ICAgdW5zaWduZWQgbG9uZyBzdF9jdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fcGFkNzsK
CiAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHN0X2lubzsKfTsKIyA3ICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L3N0YXQuaCIgMgojIDIxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NhY2hlLmgiIDEK
IyAyMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9zdGRkZWYuaCIgMQojIDIzICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N0cmlu
Zy5oIiAxCgoKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMuaCIg
MQojIDkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3RyaW5nLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvc3RyaW5nLmgiIDIKCgoKCgpleHRlcm4gY2hhciAqIF9fX3N0cnRvazsK
ZXh0ZXJuIGNoYXIgKiBzdHJwYnJrKGNvbnN0IGNoYXIgKixjb25zdCBjaGFyICopOwpleHRlcm4g
Y2hhciAqIHN0cnRvayhjaGFyICosY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKiBzdHJzZXAo
Y2hhciAqKixjb25zdCBjaGFyICopOwpleHRlcm4gX19rZXJuZWxfc2l6ZV90IHN0cnNwbihjb25z
dCBjaGFyICosY29uc3QgY2hhciAqKTsKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
YXNtL3N0cmluZy5oIiAxCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29u
ZmlnLmgiIDEKIyA2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zdHJpbmcuaCIgMgojIDMz
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zdHJpbmcuaCIKc3RhdGljIGlubGluZSBjaGFy
ICogc3RyY3B5KGNoYXIgKiBkZXN0LGNvbnN0IGNoYXIgKnNyYykKewppbnQgZDAsIGQxLCBkMjsK
X19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgIjE6XHRsb2RzYlxuXHQiCiAgICAgICAgInN0
b3NiXG5cdCIKICAgICAgICAidGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiIgog
ICAgICAgIDogIj0mUyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mYSIgKGQyKQogICAgICAgIDoiMCIg
KHNyYyksIjEiIChkZXN0KSA6ICJtZW1vcnkiKTsKcmV0dXJuIGRlc3Q7Cn0KCgpzdGF0aWMgaW5s
aW5lIGNoYXIgKiBzdHJuY3B5KGNoYXIgKiBkZXN0LGNvbnN0IGNoYXIgKnNyYyxzaXplX3QgY291
bnQpCnsKaW50IGQwLCBkMSwgZDIsIGQzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAi
MTpcdGRlY2wgJTJcblx0IgogICAgICAgICJqcyAyZlxuXHQiCiAgICAgICAgImxvZHNiXG5cdCIK
ICAgICAgICAic3Rvc2Jcblx0IgogICAgICAgICJ0ZXN0YiAlJWFsLCUlYWxcblx0IgogICAgICAg
ICJqbmUgMWJcblx0IgogICAgICAgICJyZXBcblx0IgogICAgICAgICJzdG9zYlxuIgogICAgICAg
ICIyOiIKICAgICAgICA6ICI9JlMiIChkMCksICI9JkQiIChkMSksICI9JmMiIChkMiksICI9JmEi
IChkMykKICAgICAgICA6IjAiIChzcmMpLCIxIiAoZGVzdCksIjIiIChjb3VudCkgOiAibWVtb3J5
Iik7CnJldHVybiBkZXN0Owp9CgoKc3RhdGljIGlubGluZSBjaGFyICogc3RyY2F0KGNoYXIgKiBk
ZXN0LGNvbnN0IGNoYXIgKiBzcmMpCnsKaW50IGQwLCBkMSwgZDIsIGQzOwpfX2FzbV9fIF9fdm9s
YXRpbGVfXygKICAgICAgICAicmVwbmVcblx0IgogICAgICAgICJzY2FzYlxuXHQiCiAgICAgICAg
ImRlY2wgJTFcbiIKICAgICAgICAiMTpcdGxvZHNiXG5cdCIKICAgICAgICAic3Rvc2Jcblx0Igog
ICAgICAgICJ0ZXN0YiAlJWFsLCUlYWxcblx0IgogICAgICAgICJqbmUgMWIiCiAgICAgICAgOiAi
PSZTIiAoZDApLCAiPSZEIiAoZDEpLCAiPSZhIiAoZDIpLCAiPSZjIiAoZDMpCiAgICAgICAgOiAi
MCIgKHNyYyksICIxIiAoZGVzdCksICIyIiAoMCksICIzIiAoMHhmZmZmZmZmZik6Im1lbW9yeSIp
OwpyZXR1cm4gZGVzdDsKfQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIHN0cm5jYXQoY2hhciAqIGRl
c3QsY29uc3QgY2hhciAqIHNyYyxzaXplX3QgY291bnQpCnsKaW50IGQwLCBkMSwgZDIsIGQzOwpf
X2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwbmVcblx0IgogICAgICAgICJzY2FzYlxu
XHQiCiAgICAgICAgImRlY2wgJTFcblx0IgogICAgICAgICJtb3ZsICU4LCUzXG4iCiAgICAgICAg
IjE6XHRkZWNsICUzXG5cdCIKICAgICAgICAianMgMmZcblx0IgogICAgICAgICJsb2RzYlxuXHQi
CiAgICAgICAgInN0b3NiXG5cdCIKICAgICAgICAidGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAg
ICAiam5lIDFiXG4iCiAgICAgICAgIjI6XHR4b3JsICUyLCUyXG5cdCIKICAgICAgICAic3Rvc2Ii
CiAgICAgICAgOiAiPSZTIiAoZDApLCAiPSZEIiAoZDEpLCAiPSZhIiAoZDIpLCAiPSZjIiAoZDMp
CiAgICAgICAgOiAiMCIgKHNyYyksIjEiIChkZXN0KSwiMiIgKDApLCIzIiAoMHhmZmZmZmZmZiks
ICJnIiAoY291bnQpCiAgICAgICAgOiAibWVtb3J5Iik7CnJldHVybiBkZXN0Owp9CgoKc3RhdGlj
IGlubGluZSBpbnQgc3RyY21wKGNvbnN0IGNoYXIgKiBjcyxjb25zdCBjaGFyICogY3QpCnsKaW50
IGQwLCBkMTsKcmVnaXN0ZXIgaW50IF9fcmVzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAg
ICAiMTpcdGxvZHNiXG5cdCIKICAgICAgICAic2Nhc2Jcblx0IgogICAgICAgICJqbmUgMmZcblx0
IgogICAgICAgICJ0ZXN0YiAlJWFsLCUlYWxcblx0IgogICAgICAgICJqbmUgMWJcblx0IgogICAg
ICAgICJ4b3JsICUlZWF4LCUlZWF4XG5cdCIKICAgICAgICAiam1wIDNmXG4iCiAgICAgICAgIjI6
XHRzYmJsICUlZWF4LCUlZWF4XG5cdCIKICAgICAgICAib3JiICQxLCUlYWxcbiIKICAgICAgICAi
MzoiCiAgICAgICAgOiI9YSIgKF9fcmVzKSwgIj0mUyIgKGQwKSwgIj0mRCIgKGQxKQogICAgICAg
ICAgICAgICAgICAgICA6IjEiIChjcyksIjIiIChjdCkpOwpyZXR1cm4gX19yZXM7Cn0KCgpzdGF0
aWMgaW5saW5lIGludCBzdHJuY21wKGNvbnN0IGNoYXIgKiBjcyxjb25zdCBjaGFyICogY3Qsc2l6
ZV90IGNvdW50KQp7CnJlZ2lzdGVyIGludCBfX3JlczsKaW50IGQwLCBkMSwgZDI7Cl9fYXNtX18g
X192b2xhdGlsZV9fKAogICAgICAgICIxOlx0ZGVjbCAlM1xuXHQiCiAgICAgICAgImpzIDJmXG5c
dCIKICAgICAgICAibG9kc2Jcblx0IgogICAgICAgICJzY2FzYlxuXHQiCiAgICAgICAgImpuZSAz
ZlxuXHQiCiAgICAgICAgInRlc3RiICUlYWwsJSVhbFxuXHQiCiAgICAgICAgImpuZSAxYlxuIgog
ICAgICAgICIyOlx0eG9ybCAlJWVheCwlJWVheFxuXHQiCiAgICAgICAgImptcCA0ZlxuIgogICAg
ICAgICIzOlx0c2JibCAlJWVheCwlJWVheFxuXHQiCiAgICAgICAgIm9yYiAkMSwlJWFsXG4iCiAg
ICAgICAgIjQ6IgogICAgICAgICAgICAgICAgICAgICA6Ij1hIiAoX19yZXMpLCAiPSZTIiAoZDAp
LCAiPSZEIiAoZDEpLCAiPSZjIiAoZDIpCiAgICAgICAgICAgICAgICAgICAgIDoiMSIgKGNzKSwi
MiIgKGN0KSwiMyIgKGNvdW50KSk7CnJldHVybiBfX3JlczsKfQoKCnN0YXRpYyBpbmxpbmUgY2hh
ciAqIHN0cmNocihjb25zdCBjaGFyICogcywgaW50IGMpCnsKaW50IGQwOwpyZWdpc3RlciBjaGFy
ICogX19yZXM7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJtb3ZiICUlYWwsJSVhaFxu
IgogICAgICAgICIxOlx0bG9kc2Jcblx0IgogICAgICAgICJjbXBiICUlYWgsJSVhbFxuXHQiCiAg
ICAgICAgImplIDJmXG5cdCIKICAgICAgICAidGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAi
am5lIDFiXG5cdCIKICAgICAgICAibW92bCAkMSwlMVxuIgogICAgICAgICIyOlx0bW92bCAlMSwl
MFxuXHQiCiAgICAgICAgImRlY2wgJTAiCiAgICAgICAgOiI9YSIgKF9fcmVzKSwgIj0mUyIgKGQw
KSA6ICIxIiAocyksIjAiIChjKSk7CnJldHVybiBfX3JlczsKfQoKCnN0YXRpYyBpbmxpbmUgY2hh
ciAqIHN0cnJjaHIoY29uc3QgY2hhciAqIHMsIGludCBjKQp7CmludCBkMCwgZDE7CnJlZ2lzdGVy
IGNoYXIgKiBfX3JlczsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgIm1vdmIgJSVhbCwl
JWFoXG4iCiAgICAgICAgIjE6XHRsb2RzYlxuXHQiCiAgICAgICAgImNtcGIgJSVhaCwlJWFsXG5c
dCIKICAgICAgICAiam5lIDJmXG5cdCIKICAgICAgICAibGVhbCAtMSglJWVzaSksJTBcbiIKICAg
ICAgICAiMjpcdHRlc3RiICUlYWwsJSVhbFxuXHQiCiAgICAgICAgImpuZSAxYiIKICAgICAgICA6
Ij1nIiAoX19yZXMpLCAiPSZTIiAoZDApLCAiPSZhIiAoZDEpIDoiMCIgKDApLCIxIiAocyksIjIi
IChjKSk7CnJldHVybiBfX3JlczsKfQoKCnN0YXRpYyBpbmxpbmUgc2l6ZV90IHN0cmxlbihjb25z
dCBjaGFyICogcykKewppbnQgZDA7CnJlZ2lzdGVyIGludCBfX3JlczsKX19hc21fXyBfX3ZvbGF0
aWxlX18oCiAgICAgICAgInJlcG5lXG5cdCIKICAgICAgICAic2Nhc2Jcblx0IgogICAgICAgICJu
b3RsICUwXG5cdCIKICAgICAgICAiZGVjbCAlMCIKICAgICAgICA6Ij1jIiAoX19yZXMpLCAiPSZE
IiAoZDApIDoiMSIgKHMpLCJhIiAoMCksICIwIiAoMHhmZmZmZmZmZikpOwpyZXR1cm4gX19yZXM7
Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCAqIF9fbWVtY3B5KHZvaWQgKiB0bywgY29uc3Qgdm9pZCAq
IGZyb20sIHNpemVfdCBuKQp7CmludCBkMCwgZDEsIGQyOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygK
ICAgICAgICAicmVwIDsgbW92c2xcblx0IgogICAgICAgICJ0ZXN0YiAkMiwlYjRcblx0IgogICAg
ICAgICJqZSAxZlxuXHQiCiAgICAgICAgIm1vdnN3XG4iCiAgICAgICAgIjE6XHR0ZXN0YiAkMSwl
YjRcblx0IgogICAgICAgICJqZSAyZlxuXHQiCiAgICAgICAgIm1vdnNiXG4iCiAgICAgICAgIjI6
IgogICAgICAgIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mUyIgKGQyKQogICAgICAgIDoi
MCIgKG4vNCksICJxIiAobiksIjEiICgobG9uZykgdG8pLCIyIiAoKGxvbmcpIGZyb20pCiAgICAg
ICAgOiAibWVtb3J5Iik7CnJldHVybiAodG8pOwp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkICog
X19jb25zdGFudF9tZW1jcHkodm9pZCAqIHRvLCBjb25zdCB2b2lkICogZnJvbSwgc2l6ZV90IG4p
CnsKICAgICAgICBzd2l0Y2ggKG4pIHsKICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAg
ICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIGNoYXIgKil0byA9ICooY29uc3QgdW5zaWduZWQg
Y2hhciAqKWZyb207CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAg
ICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBzaG9ydCAq
KXRvID0gKihjb25zdCB1bnNpZ25lZCBzaG9ydCAqKWZyb207CiAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAg
ICAgICAgKih1bnNpZ25lZCBzaG9ydCAqKXRvID0gKihjb25zdCB1bnNpZ25lZCBzaG9ydCAqKWZy
b207CiAgICAgICAgICAgICAgICAgICAgICAgICooMisodW5zaWduZWQgY2hhciAqKXRvKSA9ICoo
MisoY29uc3QgdW5zaWduZWQgY2hhciAqKWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAg
ICoodW5zaWduZWQgbG9uZyAqKXRvID0gKihjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbTsKICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgICAgICAgICAgY2FzZSA2Ogog
ICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIGxvbmcgKil0byA9ICooY29uc3QgdW5z
aWduZWQgbG9uZyAqKWZyb207CiAgICAgICAgICAgICAgICAgICAgICAgICooMisodW5zaWduZWQg
c2hvcnQgKil0bykgPSAqKDIrKGNvbnN0IHVuc2lnbmVkIHNob3J0ICopZnJvbSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgODoKICAgICAg
ICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBsb25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVk
IGxvbmcgKilmcm9tOwogICAgICAgICAgICAgICAgICAgICAgICAqKDErKHVuc2lnbmVkIGxvbmcg
Kil0bykgPSAqKDErKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgICAgICAgICAgY2FzZSAxMjoKICAgICAgICAgICAg
ICAgICAgICAgICAgKih1bnNpZ25lZCBsb25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcg
Kilmcm9tOwogICAgICAgICAgICAgICAgICAgICAgICAqKDErKHVuc2lnbmVkIGxvbmcgKil0bykg
PSAqKDErKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgKigyKyh1bnNpZ25lZCBsb25nICopdG8pID0gKigyKyhjb25zdCB1bnNpZ25lZCBsb25nICop
ZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAg
IGNhc2UgMTY6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgbG9uZyAqKXRvID0g
Kihjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbTsKICAgICAgICAgICAgICAgICAgICAgICAgKigx
Kyh1bnNpZ25lZCBsb25nICopdG8pID0gKigxKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICooMisodW5zaWduZWQgbG9uZyAqKXRvKSA9ICooMiso
Y29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICAqKDMr
KHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDMrKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgICAgICAgICAgY2FzZSAy
MDoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBsb25nICopdG8gPSAqKGNvbnN0
IHVuc2lnbmVkIGxvbmcgKilmcm9tOwogICAgICAgICAgICAgICAgICAgICAgICAqKDErKHVuc2ln
bmVkIGxvbmcgKil0bykgPSAqKDErKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgKigyKyh1bnNpZ25lZCBsb25nICopdG8pID0gKigyKyhjb25zdCB1
bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICooMysodW5zaWdu
ZWQgbG9uZyAqKXRvKSA9ICooMysoY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwogICAgICAg
ICAgICAgICAgICAgICAgICAqKDQrKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDQrKGNvbnN0IHVu
c2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwog
ICAgICAgIH0KCgoKCgoKCnsKICAgICAgICBpbnQgZDAsIGQxLCBkMjsKICAgICAgICBzd2l0Y2gg
KG4gJSA0KSB7CiAgICAgICAgICAgICAgICBjYXNlIDA6IF9fYXNtX18gX192b2xhdGlsZV9fKCAi
cmVwIDsgbW92c2wiICIiIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mUyIgKGQyKSA6ICIw
IiAobi80KSwiMSIgKChsb25nKSB0byksIjIiICgobG9uZykgZnJvbSkgOiAibWVtb3J5Iik7OyBy
ZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNlIDE6IF9fYXNtX18gX192b2xhdGlsZV9fKCAi
cmVwIDsgbW92c2wiICJcblx0bW92c2IiIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mUyIg
KGQyKSA6ICIwIiAobi80KSwiMSIgKChsb25nKSB0byksIjIiICgobG9uZykgZnJvbSkgOiAibWVt
b3J5Iik7OyByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNlIDI6IF9fYXNtX18gX192b2xh
dGlsZV9fKCAicmVwIDsgbW92c2wiICJcblx0bW92c3ciIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQx
KSwgIj0mUyIgKGQyKSA6ICIwIiAobi80KSwiMSIgKChsb25nKSB0byksIjIiICgobG9uZykgZnJv
bSkgOiAibWVtb3J5Iik7OyByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBkZWZhdWx0OiBfX2Fz
bV9fIF9fdm9sYXRpbGVfXyggInJlcCA7IG1vdnNsIiAiXG5cdG1vdnN3XG5cdG1vdnNiIiA6ICI9
JmMiIChkMCksICI9JkQiIChkMSksICI9JlMiIChkMikgOiAiMCIgKG4vNCksIjEiICgobG9uZykg
dG8pLCIyIiAoKGxvbmcpIGZyb20pIDogIm1lbW9yeSIpOzsgcmV0dXJuIHRvOwogICAgICAgIH0K
fQoKCn0KIyAzMzUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3N0cmluZy5oIgpleHRlcm4g
dm9pZCBfX3N0cnVjdF9jcHlfYnVnICh2b2lkKTsKIyAzNDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvYXNtL3N0cmluZy5oIgpzdGF0aWMgaW5saW5lIHZvaWQgKiBtZW1tb3ZlKHZvaWQgKiBkZXN0
LGNvbnN0IHZvaWQgKiBzcmMsIHNpemVfdCBuKQp7CmludCBkMCwgZDEsIGQyOwppZiAoZGVzdDxz
cmMpCl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJyZXBcblx0IgogICAgICAgICJtb3Zz
YiIKICAgICAgICA6ICI9JmMiIChkMCksICI9JlMiIChkMSksICI9JkQiIChkMikKICAgICAgICA6
IjAiIChuKSwiMSIgKHNyYyksIjIiIChkZXN0KQogICAgICAgIDogIm1lbW9yeSIpOwplbHNlCl9f
YXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJzdGRcblx0IgogICAgICAgICJyZXBcblx0Igog
ICAgICAgICJtb3ZzYlxuXHQiCiAgICAgICAgImNsZCIKICAgICAgICA6ICI9JmMiIChkMCksICI9
JlMiIChkMSksICI9JkQiIChkMikKICAgICAgICA6IjAiIChuKSwKICAgICAgICAgIjEiIChuLTEr
KGNvbnN0IGNoYXIgKilzcmMpLAogICAgICAgICAiMiIgKG4tMSsoY2hhciAqKWRlc3QpCiAgICAg
ICAgOiJtZW1vcnkiKTsKcmV0dXJuIGRlc3Q7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCAqIG1l
bWNocihjb25zdCB2b2lkICogY3MsaW50IGMsc2l6ZV90IGNvdW50KQp7CmludCBkMDsKcmVnaXN0
ZXIgdm9pZCAqIF9fcmVzOwppZiAoIWNvdW50KQogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsK
X19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgInJlcG5lXG5cdCIKICAgICAgICAic2Nhc2Jc
blx0IgogICAgICAgICJqZSAxZlxuXHQiCiAgICAgICAgIm1vdmwgJDEsJTBcbiIKICAgICAgICAi
MTpcdGRlY2wgJTAiCiAgICAgICAgOiI9RCIgKF9fcmVzKSwgIj0mYyIgKGQwKSA6ICJhIiAoYyks
IjAiIChjcyksIjEiIChjb3VudCkpOwpyZXR1cm4gX19yZXM7Cn0KCnN0YXRpYyBpbmxpbmUgdm9p
ZCAqIF9fbWVtc2V0X2dlbmVyaWModm9pZCAqIHMsIGNoYXIgYyxzaXplX3QgY291bnQpCnsKaW50
IGQwLCBkMTsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgInJlcFxuXHQiCiAgICAgICAg
InN0b3NiIgogICAgICAgIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKQogICAgICAgIDoiYSIgKGMp
LCIxIiAocyksIjAiIChjb3VudCkKICAgICAgICA6Im1lbW9yeSIpOwpyZXR1cm4gczsKfQojIDQw
OCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc3RyaW5nLmgiCnN0YXRpYyBpbmxpbmUgdm9p
ZCAqIF9fY29uc3RhbnRfY19tZW1zZXQodm9pZCAqIHMsIHVuc2lnbmVkIGxvbmcgYywgc2l6ZV90
IGNvdW50KQp7CmludCBkMCwgZDE7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJyZXAg
OyBzdG9zbFxuXHQiCiAgICAgICAgInRlc3RiICQyLCViM1xuXHQiCiAgICAgICAgImplIDFmXG5c
dCIKICAgICAgICAic3Rvc3dcbiIKICAgICAgICAiMTpcdHRlc3RiICQxLCViM1xuXHQiCiAgICAg
ICAgImplIDJmXG5cdCIKICAgICAgICAic3Rvc2JcbiIKICAgICAgICAiMjoiCiAgICAgICAgOiAi
PSZjIiAoZDApLCAiPSZEIiAoZDEpCiAgICAgICAgOiJhIiAoYyksICJxIiAoY291bnQpLCAiMCIg
KGNvdW50LzQpLCAiMSIgKChsb25nKSBzKQogICAgICAgIDoibWVtb3J5Iik7CnJldHVybiAocyk7
Cn0KCgoKc3RhdGljIGlubGluZSBzaXplX3Qgc3Rybmxlbihjb25zdCBjaGFyICogcywgc2l6ZV90
IGNvdW50KQp7CmludCBkMDsKcmVnaXN0ZXIgaW50IF9fcmVzOwpfX2FzbV9fIF9fdm9sYXRpbGVf
XygKICAgICAgICAibW92bCAlMiwlMFxuXHQiCiAgICAgICAgImptcCAyZlxuIgogICAgICAgICIx
Olx0Y21wYiAkMCwoJTApXG5cdCIKICAgICAgICAiamUgM2Zcblx0IgogICAgICAgICJpbmNsICUw
XG4iCiAgICAgICAgIjI6XHRkZWNsICUxXG5cdCIKICAgICAgICAiY21wbCAkLTEsJTFcblx0Igog
ICAgICAgICJqbmUgMWJcbiIKICAgICAgICAiMzpcdHN1YmwgJTIsJTAiCiAgICAgICAgOiI9YSIg
KF9fcmVzKSwgIj0mZCIgKGQwKQogICAgICAgIDoiYyIgKHMpLCIxIiAoY291bnQpKTsKcmV0dXJu
IF9fcmVzOwp9CgoKCgpleHRlcm4gY2hhciAqc3Ryc3RyKGNvbnN0IGNoYXIgKmNzLCBjb25zdCBj
aGFyICpjdCk7CgoKCgoKc3RhdGljIGlubGluZSB2b2lkICogX19jb25zdGFudF9jX2FuZF9jb3Vu
dF9tZW1zZXQodm9pZCAqIHMsIHVuc2lnbmVkIGxvbmcgcGF0dGVybiwgc2l6ZV90IGNvdW50KQp7
CiAgICAgICAgc3dpdGNoIChjb3VudCkgewogICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gczsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAg
ICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBjaGFyICopcyA9IHBhdHRlcm47CiAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAg
ICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIHNob3J0ICopcyA9IHBhdHRlcm47CiAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAg
ICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIHNob3J0ICopcyA9IHBhdHRlcm47CiAgICAgICAg
ICAgICAgICAgICAgICAgICooMisodW5zaWduZWQgY2hhciAqKXMpID0gcGF0dGVybjsKICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAg
ICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgbG9uZyAqKXMgPSBwYXR0ZXJuOwogICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gczsKICAgICAgICB9CgoKCgoKCgp7CiAgICAgICAgaW50
IGQwLCBkMTsKICAgICAgICBzd2l0Y2ggKGNvdW50ICUgNCkgewogICAgICAgICAgICAgICAgY2Fz
ZSAwOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInJlcCA7IHN0b3NsIiAiIiA6ICI9JmMiIChkMCks
ICI9JkQiIChkMSkgOiAiYSIgKHBhdHRlcm4pLCIwIiAoY291bnQvNCksIjEiICgobG9uZykgcykg
OiAibWVtb3J5Iik7IHJldHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSAxOiBfX2FzbV9fIF9f
dm9sYXRpbGVfXyggInJlcCA7IHN0b3NsIiAiXG5cdHN0b3NiIiA6ICI9JmMiIChkMCksICI9JkQi
IChkMSkgOiAiYSIgKHBhdHRlcm4pLCIwIiAoY291bnQvNCksIjEiICgobG9uZykgcykgOiAibWVt
b3J5Iik7IHJldHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSAyOiBfX2FzbV9fIF9fdm9sYXRp
bGVfXyggInJlcCA7IHN0b3NsIiAiXG5cdHN0b3N3IiA6ICI9JmMiIChkMCksICI9JkQiIChkMSkg
OiAiYSIgKHBhdHRlcm4pLCIwIiAoY291bnQvNCksIjEiICgobG9uZykgcykgOiAibWVtb3J5Iik7
IHJldHVybiBzOwogICAgICAgICAgICAgICAgZGVmYXVsdDogX19hc21fXyBfX3ZvbGF0aWxlX18o
ICJyZXAgOyBzdG9zbCIgIlxuXHRzdG9zd1xuXHRzdG9zYiIgOiAiPSZjIiAoZDApLCAiPSZEIiAo
ZDEpIDogImEiIChwYXR0ZXJuKSwiMCIgKGNvdW50LzQpLCIxIiAoKGxvbmcpIHMpIDogIm1lbW9y
eSIpOyByZXR1cm4gczsKICAgICAgICB9Cn0KCgp9CiMgNTE1ICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2FzbS9zdHJpbmcuaCIKc3RhdGljIGlubGluZSB2b2lkICogbWVtc2Nhbih2b2lkICogYWRk
ciwgaW50IGMsIHNpemVfdCBzaXplKQp7CiAgICAgICAgaWYgKCFzaXplKQogICAgICAgICAgICAg
ICAgcmV0dXJuIGFkZHI7CiAgICAgICAgX19hc21fXygicmVwbno7IHNjYXNiXG5cdCIKICAgICAg
ICAgICAgICAgICJqbnogMWZcblx0IgogICAgICAgICAgICAgICAgImRlYyAlJWVkaVxuIgogICAg
ICAgICAgICAgICAgIjE6IgogICAgICAgICAgICAgICAgOiAiPUQiIChhZGRyKSwgIj1jIiAoc2l6
ZSkKICAgICAgICAgICAgICAgIDogIjAiIChhZGRyKSwgIjEiIChzaXplKSwgImEiIChjKSk7CiAg
ICAgICAgcmV0dXJuIGFkZHI7Cn0KIyAyNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9z
dHJpbmcuaCIgMgojIDQ2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIgpl
eHRlcm4gaW50IHN0cm5pY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBfX2tlcm5lbF9z
aXplX3QpOwojIDc3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIgpleHRl
cm4gaW50IF9fYnVpbHRpbl9tZW1jbXAoY29uc3Qgdm9pZCAqLGNvbnN0IHZvaWQgKixfX2tlcm5l
bF9zaXplX3QpOwojIDI0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCiMg
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEKIyAyNiAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9h
c20vYml0b3BzLmgiIDEKCgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9j
b25maWcuaCIgMQojIDkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2JpdG9wcy5oIiAyCiMg
MzYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVf
XyB2b2lkIHNldF9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIF9f
YXNtX18gX192b2xhdGlsZV9fKCAiIgogICAgICAgICAgICAgICAgImJ0c2wgJTEsJTAiCiAgICAg
ICAgICAgICAgICA6Ij1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAg
ICAgIDoiSXIiIChucikpOwp9CiMgNTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2JpdG9w
cy5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fc2V0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZv
aWQgKiBhZGRyKQp7CiAgICAgICAgX19hc21fXygKICAgICAgICAgICAgICAgICJidHNsICUxLCUw
IgogICAgICAgICAgICAgICAgOiI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAg
ICAgICAgICAgICA6IklyIiAobnIpKTsKfQojIDcxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2Fz
bS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBjbGVhcl9iaXQoaW50IG5yLCB2b2xh
dGlsZSB2b2lkICogYWRkcikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAiIgogICAg
ICAgICAgICAgICAgImJ0cmwgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAoKCoodm9sYXRp
bGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIiIChucikpOwp9CiMgOTAgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lk
IF9fY2hhbmdlX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgX19h
c21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiYnRjbCAlMSwlMCIKICAgICAgICAg
ICAgICAgIDoiPW0iICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAg
OiJJciIgKG5yKSk7Cn0KIyAxMDcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2JpdG9wcy5o
IgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGNoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lk
ICogYWRkcikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAiIgogICAgICAgICAgICAg
ICAgImJ0Y2wgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAoKCoodm9sYXRpbGUgbG9uZyAq
KSBhZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIiIChucikpOwp9CiMgMTIzICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IHRlc3RfYW5k
X3NldF9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIGludCBvbGRi
aXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAiIgogICAgICAgICAgICAgICAgImJ0
c2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChvbGRiaXQpLCI9
bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAobnIp
IDogIm1lbW9yeSIpOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KIyAxNDMgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX190ZXN0X2Fu
ZF9zZXRfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBpbnQgb2xk
Yml0OwoKICAgICAgICBfX2FzbV9fKAogICAgICAgICAgICAgICAgImJ0c2wgJTIsJTFcblx0c2Ji
bCAlMCwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChvbGRiaXQpLCI9bSIgKCgqKHZvbGF0aWxl
IGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAobnIpKTsKICAgICAgICByZXR1
cm4gb2xkYml0Owp9CiMgMTYyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIK
c3RhdGljIF9faW5saW5lX18gaW50IHRlc3RfYW5kX2NsZWFyX2JpdChpbnQgbnIsIHZvbGF0aWxl
IHZvaWQgKiBhZGRyKQp7CiAgICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21fXyBfX3Zv
bGF0aWxlX18oICIiCiAgICAgICAgICAgICAgICAiYnRybCAlMiwlMVxuXHRzYmJsICUwLCUwIgog
ICAgICAgICAgICAgICAgOiI9ciIgKG9sZGJpdCksIj1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBh
ZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIiIChucikgOiAibWVtb3J5Iik7CiAgICAgICAgcmV0
dXJuIG9sZGJpdDsKfQojIDE4MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYml0b3BzLmgi
CnN0YXRpYyBfX2lubGluZV9fIGludCBfX3Rlc3RfYW5kX2NsZWFyX2JpdChpbnQgbnIsIHZvbGF0
aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21fXygK
ICAgICAgICAgICAgICAgICJidHJsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAg
ICA6Ij1yIiAob2xkYml0KSwiPW0iICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAg
ICAgICAgICAgOiJJciIgKG5yKSk7CiAgICAgICAgcmV0dXJuIG9sZGJpdDsKfQoKCnN0YXRpYyBf
X2lubGluZV9fIGludCBfX3Rlc3RfYW5kX2NoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lk
ICogYWRkcikKewogICAgICAgIGludCBvbGRiaXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGls
ZV9fKAogICAgICAgICAgICAgICAgImJ0Y2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAg
ICAgICAgIDoiPXIiIChvbGRiaXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAg
ICAgICAgICAgICAgICA6IklyIiAobnIpIDogIm1lbW9yeSIpOwogICAgICAgIHJldHVybiBvbGRi
aXQ7Cn0KIyAyMTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMg
X19pbmxpbmVfXyBpbnQgdGVzdF9hbmRfY2hhbmdlX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQg
KiBhZGRyKQp7CiAgICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxl
X18oICIiCiAgICAgICAgICAgICAgICAiYnRjbCAlMiwlMVxuXHRzYmJsICUwLCUwIgogICAgICAg
ICAgICAgICAgOiI9ciIgKG9sZGJpdCksIj1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkK
ICAgICAgICAgICAgICAgIDoiSXIiIChucikgOiAibWVtb3J5Iik7CiAgICAgICAgcmV0dXJuIG9s
ZGJpdDsKfQojIDIzMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRp
YyBfX2lubGluZV9fIGludCBjb25zdGFudF90ZXN0X2JpdChpbnQgbnIsIGNvbnN0IHZvbGF0aWxl
IHZvaWQgKiBhZGRyKQp7CiAgICAgICAgcmV0dXJuICgoMVVMIDw8IChuciAmIDMxKSkgJiAoKChj
b25zdCB2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgYWRkcilbbnIgPj4gNV0pKSAhPSAwOwp9Cgpz
dGF0aWMgX19pbmxpbmVfXyBpbnQgdmFyaWFibGVfdGVzdF9iaXQoaW50IG5yLCB2b2xhdGlsZSB2
b2lkICogYWRkcikKewogICAgICAgIGludCBvbGRiaXQ7CgogICAgICAgIF9fYXNtX18gX192b2xh
dGlsZV9fKAogICAgICAgICAgICAgICAgImJ0bCAlMiwlMVxuXHRzYmJsICUwLCUwIgogICAgICAg
ICAgICAgICAgOiI9ciIgKG9sZGJpdCkKICAgICAgICAgICAgICAgIDoibSIgKCgqKHZvbGF0aWxl
IGxvbmcgKikgYWRkcikpLCJJciIgKG5yKSk7CiAgICAgICAgcmV0dXJuIG9sZGJpdDsKfQojIDI2
MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9f
IGludCBmaW5kX2ZpcnN0X3plcm9fYml0KHZvaWQgKiBhZGRyLCB1bnNpZ25lZCBzaXplKQp7CiAg
ICAgICAgaW50IGQwLCBkMSwgZDI7CiAgICAgICAgaW50IHJlczsKCiAgICAgICAgaWYgKCFzaXpl
KQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9f
KAogICAgICAgICAgICAgICAgIm1vdmwgJC0xLCUlZWF4XG5cdCIKICAgICAgICAgICAgICAgICJ4
b3JsICUlZWR4LCUlZWR4XG5cdCIKICAgICAgICAgICAgICAgICJyZXBlOyBzY2FzbFxuXHQiCiAg
ICAgICAgICAgICAgICAiamUgMWZcblx0IgogICAgICAgICAgICAgICAgInhvcmwgLTQoJSVlZGkp
LCUlZWF4XG5cdCIKICAgICAgICAgICAgICAgICJzdWJsICQ0LCUlZWRpXG5cdCIKICAgICAgICAg
ICAgICAgICJic2ZsICUlZWF4LCUlZWR4XG4iCiAgICAgICAgICAgICAgICAiMTpcdHN1YmwgJSVl
YngsJSVlZGlcblx0IgogICAgICAgICAgICAgICAgInNobGwgJDMsJSVlZGlcblx0IgogICAgICAg
ICAgICAgICAgImFkZGwgJSVlZGksJSVlZHgiCiAgICAgICAgICAgICAgICA6Ij1kIiAocmVzKSwg
Ij0mYyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mYSIgKGQyKQogICAgICAgICAgICAgICAgOiIxIiAo
KHNpemUgKyAzMSkgPj4gNSksICIyIiAoYWRkciksICJiIiAoYWRkcikpOwogICAgICAgIHJldHVy
biByZXM7Cn0KCgoKCgoKCnN0YXRpYyBfX2lubGluZV9fIGludCBmaW5kX25leHRfemVyb19iaXQg
KHZvaWQgKiBhZGRyLCBpbnQgc2l6ZSwgaW50IG9mZnNldCkKewogICAgICAgIHVuc2lnbmVkIGxv
bmcgKiBwID0gKCh1bnNpZ25lZCBsb25nICopIGFkZHIpICsgKG9mZnNldCA+PiA1KTsKICAgICAg
ICBpbnQgc2V0ID0gMCwgYml0ID0gb2Zmc2V0ICYgMzEsIHJlczsKCiAgICAgICAgaWYgKGJpdCkg
ewoKCgogICAgICAgICAgICAgICAgX19hc21fXygiYnNmbCAlMSwlMFxuXHQiCiAgICAgICAgICAg
ICAgICAgICAgICAgICJqbmUgMWZcblx0IgogICAgICAgICAgICAgICAgICAgICAgICAibW92bCAk
MzIsICUwXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICIxOiIKICAgICAgICAgICAgICAgICAg
ICAgICAgOiAiPXIiIChzZXQpCiAgICAgICAgICAgICAgICAgICAgICAgIDogInIiICh+KCpwID4+
IGJpdCkpKTsKICAgICAgICAgICAgICAgIGlmIChzZXQgPCAoMzIgLSBiaXQpKQogICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gc2V0ICsgb2Zmc2V0OwogICAgICAgICAgICAgICAgc2V0ID0g
MzIgLSBiaXQ7CiAgICAgICAgICAgICAgICBwKys7CiAgICAgICAgfQoKCgogICAgICAgIHJlcyA9
IGZpbmRfZmlyc3RfemVyb19iaXQgKHAsIHNpemUgLSAzMiAqIChwIC0gKHVuc2lnbmVkIGxvbmcg
KikgYWRkcikpOwogICAgICAgIHJldHVybiAob2Zmc2V0ICsgc2V0ICsgcmVzKTsKfQoKCgoKCgoK
c3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBmZnoodW5zaWduZWQgbG9uZyB3b3JkKQp7
CiAgICAgICAgX19hc21fXygiYnNmbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPXIiICh3b3Jk
KQogICAgICAgICAgICAgICAgOiJyIiAofndvcmQpKTsKICAgICAgICByZXR1cm4gd29yZDsKfQoj
IDM0MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGlu
ZV9fIGludCBmZnMoaW50IHgpCnsKICAgICAgICBpbnQgcjsKCiAgICAgICAgX19hc21fXygiYnNm
bCAlMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAiam56IDFmXG5cdCIKICAgICAgICAgICAgICAg
ICJtb3ZsICQtMSwlMFxuIgogICAgICAgICAgICAgICAgIjE6IiA6ICI9ciIgKHIpIDogImciICh4
KSk7CiAgICAgICAgcmV0dXJuIHIrMTsKfQojIDI3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L2ZzLmgiIDIKCnN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdDsKIyA1MCAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9mcy5oIgpzdHJ1Y3QgZmlsZXNfc3RhdF9zdHJ1Y3QgewogICAgICAg
IGludCBucl9maWxlczsKICAgICAgICBpbnQgbnJfZnJlZV9maWxlczsKICAgICAgICBpbnQgbWF4
X2ZpbGVzOwp9OwpleHRlcm4gc3RydWN0IGZpbGVzX3N0YXRfc3RydWN0IGZpbGVzX3N0YXQ7Cgpz
dHJ1Y3QgaW5vZGVzX3N0YXRfdCB7CiAgICAgICAgaW50IG5yX2lub2RlczsKICAgICAgICBpbnQg
bnJfdW51c2VkOwogICAgICAgIGludCBkdW1teVs1XTsKfTsKZXh0ZXJuIHN0cnVjdCBpbm9kZXNf
c3RhdF90IGlub2Rlc19zdGF0OwoKZXh0ZXJuIGludCBsZWFzZXNfZW5hYmxlLCBkaXJfbm90aWZ5
X2VuYWJsZSwgbGVhc2VfYnJlYWtfdGltZTsKIyAxOTggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvZnMuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zZW1hcGhvcmUuaCIg
MQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbGlua2FnZS5oIiAxCiMgNSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2VtYXBob3JlLmgiIDIKIyAzOSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9hc20vc2VtYXBob3JlLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9hc20vc3lzdGVtLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Nv
bmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc3lzdGVtLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAxCiMgNiAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9hc20vc3lzdGVtLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2FzbS9zZWdtZW50LmgiIDEKIyA3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zeXN0ZW0u
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvYml0b3BzLmgiIDEKIyAxMSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9iaXRvcHMuaCIKc3RhdGljIGlubGluZSBpbnQg
Z2VuZXJpY19mZnMoaW50IHgpCnsKICAgICAgICBpbnQgciA9IDE7CgogICAgICAgIGlmICgheCkK
ICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIGlmICghKHggJiAweGZmZmYpKSB7CiAg
ICAgICAgICAgICAgICB4ID4+PSAxNjsKICAgICAgICAgICAgICAgIHIgKz0gMTY7CiAgICAgICAg
fQogICAgICAgIGlmICghKHggJiAweGZmKSkgewogICAgICAgICAgICAgICAgeCA+Pj0gODsKICAg
ICAgICAgICAgICAgIHIgKz0gODsKICAgICAgICB9CiAgICAgICAgaWYgKCEoeCAmIDB4ZikpIHsK
ICAgICAgICAgICAgICAgIHggPj49IDQ7CiAgICAgICAgICAgICAgICByICs9IDQ7CiAgICAgICAg
fQogICAgICAgIGlmICghKHggJiAzKSkgewogICAgICAgICAgICAgICAgeCA+Pj0gMjsKICAgICAg
ICAgICAgICAgIHIgKz0gMjsKICAgICAgICB9CiAgICAgICAgaWYgKCEoeCAmIDEpKSB7CiAgICAg
ICAgICAgICAgICB4ID4+PSAxOwogICAgICAgICAgICAgICAgciArPSAxOwogICAgICAgIH0KICAg
ICAgICByZXR1cm4gcjsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBnZW5lcmlj
X2h3ZWlnaHQzMih1bnNpZ25lZCBpbnQgdykKewogICAgICAgIHVuc2lnbmVkIGludCByZXMgPSAo
dyAmIDB4NTU1NTU1NTUpICsgKCh3ID4+IDEpICYgMHg1NTU1NTU1NSk7CiAgICAgICAgcmVzID0g
KHJlcyAmIDB4MzMzMzMzMzMpICsgKChyZXMgPj4gMikgJiAweDMzMzMzMzMzKTsKICAgICAgICBy
ZXMgPSAocmVzICYgMHgwRjBGMEYwRikgKyAoKHJlcyA+PiA0KSAmIDB4MEYwRjBGMEYpOwogICAg
ICAgIHJlcyA9IChyZXMgJiAweDAwRkYwMEZGKSArICgocmVzID4+IDgpICYgMHgwMEZGMDBGRik7
CiAgICAgICAgcmV0dXJuIChyZXMgJiAweDAwMDBGRkZGKSArICgocmVzID4+IDE2KSAmIDB4MDAw
MEZGRkYpOwp9CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBnZW5lcmljX2h3ZWlnaHQxNih1
bnNpZ25lZCBpbnQgdykKewogICAgICAgIHVuc2lnbmVkIGludCByZXMgPSAodyAmIDB4NTU1NSkg
KyAoKHcgPj4gMSkgJiAweDU1NTUpOwogICAgICAgIHJlcyA9IChyZXMgJiAweDMzMzMpICsgKChy
ZXMgPj4gMikgJiAweDMzMzMpOwogICAgICAgIHJlcyA9IChyZXMgJiAweDBGMEYpICsgKChyZXMg
Pj4gNCkgJiAweDBGMEYpOwogICAgICAgIHJldHVybiAocmVzICYgMHgwMEZGKSArICgocmVzID4+
IDgpICYgMHgwMEZGKTsKfQoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZ2VuZXJpY19od2Vp
Z2h0OCh1bnNpZ25lZCBpbnQgdykKewogICAgICAgIHVuc2lnbmVkIGludCByZXMgPSAodyAmIDB4
NTUpICsgKCh3ID4+IDEpICYgMHg1NSk7CiAgICAgICAgcmVzID0gKHJlcyAmIDB4MzMpICsgKChy
ZXMgPj4gMikgJiAweDMzKTsKICAgICAgICByZXR1cm4gKHJlcyAmIDB4MEYpICsgKChyZXMgPj4g
NCkgJiAweDBGKTsKfQoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIg
MQojIDcwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2JpdG9wcy5oIiAyCiMgOCAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9hc20vc3lzdGVtLmgiIDIKCgoKc3RydWN0IHRhc2tfc3RydWN0
OwpleHRlcm4gdm9pZCBfX3N3aXRjaF90byhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnByZXYsIHN0cnVj
dCB0YXNrX3N0cnVjdCAqbmV4dCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwojIDYzICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIKc3RhdGljIGlubGluZSB1bnNpZ25l
ZCBsb25nIF9nZXRfYmFzZShjaGFyICogYWRkcikKewogICAgICAgIHVuc2lnbmVkIGxvbmcgX19i
YXNlOwogICAgICAgIF9fYXNtX18oIm1vdmIgJTMsJSVkaFxuXHQiCiAgICAgICAgICAgICAgICAi
bW92YiAlMiwlJWRsXG5cdCIKICAgICAgICAgICAgICAgICJzaGxsICQxNiwlJWVkeFxuXHQiCiAg
ICAgICAgICAgICAgICAibW92dyAlMSwlJWR4IgogICAgICAgICAgICAgICAgOiI9JmQiIChfX2Jh
c2UpCiAgICAgICAgICAgICAgICA6Im0iICgqKChhZGRyKSsyKSksCiAgICAgICAgICAgICAgICAg
Im0iICgqKChhZGRyKSs0KSksCiAgICAgICAgICAgICAgICAgIm0iICgqKChhZGRyKSs3KSkpOwog
ICAgICAgIHJldHVybiBfX2Jhc2U7Cn0KIyAxMzAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNt
L3N5c3RlbS5oIgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgZ2V0X2xpbWl0KHVuc2lnbmVk
IGxvbmcgc2VnbWVudCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgX19saW1pdDsKICAgICAgICBf
X2FzbV9fKCJsc2xsICUxLCUwIgogICAgICAgICAgICAgICAgOiI9ciIgKF9fbGltaXQpOiJyIiAo
c2VnbWVudCkpOwogICAgICAgIHJldHVybiBfX2xpbWl0KzE7Cn0KCgoKCgoKCnN0cnVjdCBfX3hj
aGdfZHVtbXkgeyB1bnNpZ25lZCBsb25nIGFbMTAwXTsgfTsKIyAxNTcgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvYXNtL3N5c3RlbS5oIgpzdGF0aWMgaW5saW5lIHZvaWQgX19zZXRfNjRiaXQgKHVu
c2lnbmVkIGxvbmcgbG9uZyAqIHB0ciwKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsb3cs
IHVuc2lnbmVkIGludCBoaWdoKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAogICAg
ICAgICAgICAgICAgIlxuMTpcdCIKICAgICAgICAgICAgICAgICJtb3ZsICglMCksICUlZWF4XG5c
dCIKICAgICAgICAgICAgICAgICJtb3ZsIDQoJTApLCAlJWVkeFxuXHQiCiAgICAgICAgICAgICAg
ICAiY21weGNoZzhiICglMClcblx0IgogICAgICAgICAgICAgICAgImpueiAxYiIKICAgICAgICAg
ICAgICAgIDoKICAgICAgICAgICAgICAgIDogIkQiKHB0ciksCiAgICAgICAgICAgICAgICAgICAg
ICAgICJiIihsb3cpLAogICAgICAgICAgICAgICAgICAgICAgICAiYyIoaGlnaCkKICAgICAgICAg
ICAgICAgIDogImF4IiwiZHgiLCJtZW1vcnkiKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIF9fc2V0
XzY0Yml0X2NvbnN0YW50ICh1bnNpZ25lZCBsb25nIGxvbmcgKnB0ciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1
ZSkKewogICAgICAgIF9fc2V0XzY0Yml0KHB0ciwodW5zaWduZWQgaW50KSh2YWx1ZSksICh1bnNp
Z25lZCBpbnQpKCh2YWx1ZSk+PjMyVUxMKSk7Cn0KCgoKc3RhdGljIGlubGluZSB2b2lkIF9fc2V0
XzY0Yml0X3ZhciAodW5zaWduZWQgbG9uZyBsb25nICpwdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsdWUpCnsKICAgICAgICBfX3NldF82NGJpdChwdHIs
KigoKHVuc2lnbmVkIGludCopJih2YWx1ZSkpKzApLCAqKCgodW5zaWduZWQgaW50KikmKHZhbHVl
KSkrMSkpOwp9CiMgMjAyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIKc3Rh
dGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9feGNoZyh1bnNpZ25lZCBsb25nIHgsIHZvbGF0aWxl
IHZvaWQgKiBwdHIsIGludCBzaXplKQp7CiAgICAgICAgc3dpdGNoIChzaXplKSB7CiAgICAgICAg
ICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGls
ZV9fKCJ4Y2hnYiAlYjAsJTEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiI9cSIg
KHgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiJtIiAoKigoc3RydWN0IF9feGNo
Z19kdW1teSAqKShwdHIpKSksICIwIiAoeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6Im1lbW9yeSIpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o
InhjaGd3ICV3MCwlMSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Ij1yIiAoeCkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Im0iICgqKChzdHJ1Y3QgX194Y2hnX2R1
bW15ICopKHB0cikpKSwgIjAiICh4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoi
bWVtb3J5Iik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
Y2FzZSA0OgogICAgICAgICAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygieGNo
Z2wgJTAsJTEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiI9ciIgKHgpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiJtIiAoKigoc3RydWN0IF9feGNoZ19kdW1teSAq
KShwdHIpKSksICIwIiAoeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Im1lbW9y
eSIpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgcmV0
dXJuIHg7Cn0KIyAyMzYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3N5c3RlbS5oIgpzdGF0
aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgX19jbXB4Y2hnKHZvbGF0aWxlIHZvaWQgKnB0ciwgdW5z
aWduZWQgbG9uZyBvbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbG9uZyBuZXcsIGludCBzaXplKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBwcmV2Owog
ICAgICAgIHN3aXRjaCAoc2l6ZSkgewogICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgIF9f
YXNtX18gX192b2xhdGlsZV9fKCIiICJjbXB4Y2hnYiAlYjEsJTIiCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA6ICI9YSIocHJldikKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogInEiKG5ldyksICJtIigqKChzdHJ1Y3QgX194Y2hnX2R1bW15ICopKHB0
cikpKSwgIjAiKG9sZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIm1l
bW9yeSIpOwogICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7CiAgICAgICAgY2FzZSAyOgogICAg
ICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiIgImNtcHhjaGd3ICV3MSwlMiIKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIj1hIihwcmV2KQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAicSIobmV3KSwgIm0iKCooKHN0cnVjdCBfX3hj
aGdfZHVtbXkgKikocHRyKSkpLCAiMCIob2xkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAibWVtb3J5Iik7CiAgICAgICAgICAgICAgICByZXR1cm4gcHJldjsKICAgICAg
ICBjYXNlIDQ6CiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIiAiY21weGNo
Z2wgJTEsJTIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9YSIocHJl
dikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogInEiKG5ldyksICJtIigq
KChzdHJ1Y3QgX194Y2hnX2R1bW15ICopKHB0cikpKSwgIjAiKG9sZCkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogIm1lbW9yeSIpOwogICAgICAgICAgICAgICAgcmV0dXJu
IHByZXY7CiAgICAgICAgfQogICAgICAgIHJldHVybiBvbGQ7Cn0KIyAzNDkgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvYXNtL3N5c3RlbS5oIgp2b2lkIGRpc2FibGVfaGx0KHZvaWQpOwp2b2lkIGVu
YWJsZV9obHQodm9pZCk7CgpleHRlcm4gaW50IGlzX3NvbnlfdmFpb19sYXB0b3A7CiMgNDAgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEKIyA0MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9h
c20vc2VtYXBob3JlLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3dhaXQu
aCIgMQojIDQyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zZW1hcGhvcmUuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcndzZW0uaCIgMQojIDEwICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9saW5rYWdlLmgiIDEKIyAxMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9yd3Nl
bS5oIiAyCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAx
CiMgMTcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcndzZW0uaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDE4ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L3J3c2VtLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L2tlcm5lbC5oIiAxCiMgMTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcndzZW0uaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAxCiMgMjAgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcndzZW0uaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvYXNtL2F0b21pYy5oIiAxCiMgMjEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
cndzZW0uaCIgMgoKc3RydWN0IHJ3X3NlbWFwaG9yZTsKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9hc20vcndzZW0uaCIgMQojIDQxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9y
d3NlbS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbGlzdC5oIiAxCiMgNDIg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3J3c2VtLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDEKIyA0MyAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9hc20vcndzZW0uaCIgMgoKc3RydWN0IHJ3c2VtX3dhaXRlcjsKCmV4dGVybiBzdHJ1Y3Qgcndf
c2VtYXBob3JlICpyd3NlbV9kb3duX3JlYWRfZmFpbGVkKHN0cnVjdCByd19zZW1hcGhvcmUgKnNl
bSkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gc3RydWN0IHJ3X3NlbWFwaG9y
ZSAqcndzZW1fZG93bl93cml0ZV9mYWlsZWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKSBfX2F0
dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBzdHJ1Y3Qgcndfc2VtYXBob3JlICpyd3Nl
bV93YWtlKHN0cnVjdCByd19zZW1hcGhvcmUgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp
OwoKCgoKc3RydWN0IHJ3X3NlbWFwaG9yZSB7CiAgICAgICAgc2lnbmVkIGxvbmcgY291bnQ7CgoK
CgoKCiAgICAgICAgc3BpbmxvY2tfdCB3YWl0X2xvY2s7CiAgICAgICAgc3RydWN0IGxpc3RfaGVh
ZCB3YWl0X2xpc3Q7CgoKCn07CiMgODQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3J3c2Vt
LmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3J3c2VtKHN0cnVjdCByd19zZW1hcGhvcmUgKnNl
bSkKewogICAgICAgIHNlbS0+Y291bnQgPSAweDAwMDAwMDAwOwogICAgICAgIGRvIHsgfSB3aGls
ZSgwKTsKICAgICAgICBkbyB7ICgmc2VtLT53YWl0X2xpc3QpLT5uZXh0ID0gKCZzZW0tPndhaXRf
bGlzdCk7ICgmc2VtLT53YWl0X2xpc3QpLT5wcmV2ID0gKCZzZW0tPndhaXRfbGlzdCk7IH0gd2hp
bGUgKDApOwoKCgp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX19kb3duX3JlYWQoc3RydWN0IHJ3
X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAg
ICAgICAgICAiIyBiZWdpbm5pbmcgZG93bl9yZWFkXG5cdCIKIiIgIiAgaW5jbCAgICAgICglJWVh
eClcblx0IgogICAgICAgICAgICAgICAgIiAganMgICAgICAgIDJmXG5cdCIKICAgICAgICAgICAg
ICAgICIxOlxuXHQiCiAgICAgICAgICAgICAgICAiLnNlY3Rpb24gLnRleHQubG9jayxcImF4XCJc
biIKICAgICAgICAgICAgICAgICIyOlxuXHQiCiAgICAgICAgICAgICAgICAiICBwdXNobCAgICAg
JSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgcHVzaGwgICAgICUlZWR4XG5cdCIKICAgICAg
ICAgICAgICAgICIgIGNhbGwgICAgICByd3NlbV9kb3duX3JlYWRfZmFpbGVkXG5cdCIKICAgICAg
ICAgICAgICAgICIgIHBvcGwgICAgICAlJWVkeFxuXHQiCiAgICAgICAgICAgICAgICAiICBwb3Bs
ICAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgam1wICAgICAgIDFiXG4iCiAgICAg
ICAgICAgICAgICAiLnByZXZpb3VzIgogICAgICAgICAgICAgICAgIiMgZW5kaW5nIGRvd25fcmVh
ZFxuXHQiCiAgICAgICAgICAgICAgICA6ICIrbSIoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAg
IDogImEiKHNlbSkKICAgICAgICAgICAgICAgIDogIm1lbW9yeSIsICJjYyIpOwp9CgoKCgpzdGF0
aWMgaW5saW5lIHZvaWQgX19kb3duX3dyaXRlKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewog
ICAgICAgIGludCB0bXA7CgogICAgICAgIHRtcCA9ICgoLTB4MDAwMTAwMDApICsgMHgwMDAwMDAw
MSk7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIyBiZWdp
bm5pbmcgZG93bl93cml0ZVxuXHQiCiIiICIgIHhhZGQgICAgICAlMCwoJSVlYXgpXG5cdCIKICAg
ICAgICAgICAgICAgICIgIHRlc3RsICAgICAlMCwlMFxuXHQiCiAgICAgICAgICAgICAgICAiICBq
bnogICAgICAgMmZcblx0IgogICAgICAgICAgICAgICAgIjE6XG5cdCIKICAgICAgICAgICAgICAg
ICIuc2VjdGlvbiAudGV4dC5sb2NrLFwiYXhcIlxuIgogICAgICAgICAgICAgICAgIjI6XG5cdCIK
ICAgICAgICAgICAgICAgICIgIHB1c2hsICAgICAlJWVjeFxuXHQiCiAgICAgICAgICAgICAgICAi
ICBjYWxsICAgICAgcndzZW1fZG93bl93cml0ZV9mYWlsZWRcblx0IgogICAgICAgICAgICAgICAg
IiAgcG9wbCAgICAgICUlZWN4XG5cdCIKICAgICAgICAgICAgICAgICIgIGptcCAgICAgICAxYlxu
IgogICAgICAgICAgICAgICAgIi5wcmV2aW91c1xuIgogICAgICAgICAgICAgICAgIiMgZW5kaW5n
IGRvd25fd3JpdGUiCiAgICAgICAgICAgICAgICA6ICIrZCIodG1wKSwgIittIihzZW0tPmNvdW50
KQogICAgICAgICAgICAgICAgOiAiYSIoc2VtKQogICAgICAgICAgICAgICAgOiAibWVtb3J5Iiwg
ImNjIik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3VwX3JlYWQoc3RydWN0IHJ3X3NlbWFw
aG9yZSAqc2VtKQp7CiAgICAgICAgX19zMzIgdG1wID0gLTB4MDAwMDAwMDE7CiAgICAgICAgX19h
c21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIyBiZWdpbm5pbmcgX191cF9yZWFk
XG5cdCIKIiIgIiAgeGFkZCAgICAgICUlZWR4LCglJWVheClcblx0IgogICAgICAgICAgICAgICAg
IiAganMgICAgICAgIDJmXG5cdCIKICAgICAgICAgICAgICAgICIxOlxuXHQiCiAgICAgICAgICAg
ICAgICAiLnNlY3Rpb24gLnRleHQubG9jayxcImF4XCJcbiIKICAgICAgICAgICAgICAgICIyOlxu
XHQiCiAgICAgICAgICAgICAgICAiICBkZWN3ICAgICAgJSVkeFxuXHQiCiAgICAgICAgICAgICAg
ICAiICBqbnogICAgICAgMWJcblx0IgogICAgICAgICAgICAgICAgIiAgcHVzaGwgICAgICUlZWN4
XG5cdCIKICAgICAgICAgICAgICAgICIgIGNhbGwgICAgICByd3NlbV93YWtlXG5cdCIKICAgICAg
ICAgICAgICAgICIgIHBvcGwgICAgICAlJWVjeFxuXHQiCiAgICAgICAgICAgICAgICAiICBqbXAg
ICAgICAgMWJcbiIKICAgICAgICAgICAgICAgICIucHJldmlvdXNcbiIKICAgICAgICAgICAgICAg
ICIjIGVuZGluZyBfX3VwX3JlYWRcbiIKICAgICAgICAgICAgICAgIDogIittIihzZW0tPmNvdW50
KSwgIitkIih0bXApCiAgICAgICAgICAgICAgICA6ICJhIihzZW0pCiAgICAgICAgICAgICAgICA6
ICJtZW1vcnkiLCAiY2MiKTsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIF9fdXBfd3JpdGUoc3Ry
dWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAg
ICAgICAgICAgICAgICAiIyBiZWdpbm5pbmcgX191cF93cml0ZVxuXHQiCiAgICAgICAgICAgICAg
ICAiICBtb3ZsICAgICAgJTIsJSVlZHhcblx0IgoiIiAiICB4YWRkbCAgICAgJSVlZHgsKCUlZWF4
KVxuXHQiCiAgICAgICAgICAgICAgICAiICBqbnogICAgICAgMmZcblx0IgogICAgICAgICAgICAg
ICAgIjE6XG5cdCIKICAgICAgICAgICAgICAgICIuc2VjdGlvbiAudGV4dC5sb2NrLFwiYXhcIlxu
IgogICAgICAgICAgICAgICAgIjI6XG5cdCIKICAgICAgICAgICAgICAgICIgIGRlY3cgICAgICAl
JWR4XG5cdCIKICAgICAgICAgICAgICAgICIgIGpueiAgICAgICAxYlxuXHQiCiAgICAgICAgICAg
ICAgICAiICBwdXNobCAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgY2FsbCAgICAg
IHJ3c2VtX3dha2Vcblx0IgogICAgICAgICAgICAgICAgIiAgcG9wbCAgICAgICUlZWN4XG5cdCIK
ICAgICAgICAgICAgICAgICIgIGptcCAgICAgICAxYlxuIgogICAgICAgICAgICAgICAgIi5wcmV2
aW91c1xuIgogICAgICAgICAgICAgICAgIiMgZW5kaW5nIF9fdXBfd3JpdGVcbiIKICAgICAgICAg
ICAgICAgIDogIittIihzZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiAiYSIoc2VtKSwgImki
KC0oKC0weDAwMDEwMDAwKSArIDB4MDAwMDAwMDEpKQogICAgICAgICAgICAgICAgOiAibWVtb3J5
IiwgImNjIiwgImVkeCIpOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgcndzZW1fYXRvbWljX2Fk
ZChpbnQgZGVsdGEsIHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIF9fYXNtX18g
X192b2xhdGlsZV9fKAoiIiAiYWRkbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPW0iKHNlbS0+
Y291bnQpCiAgICAgICAgICAgICAgICA6ImlyIihkZWx0YSksICJtIihzZW0tPmNvdW50KSk7Cn0K
CgoKCnN0YXRpYyBpbmxpbmUgaW50IHJ3c2VtX2F0b21pY191cGRhdGUoaW50IGRlbHRhLCBzdHJ1
Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBpbnQgdG1wID0gZGVsdGE7CgogICAgICAg
IF9fYXNtX18gX192b2xhdGlsZV9fKAoiIiAieGFkZCAlMCwoJTIpIgogICAgICAgICAgICAgICAg
OiAiK3IiKHRtcCksICI9bSIoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDogInIiKHNlbSks
ICJtIihzZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiAibWVtb3J5Iik7CgogICAgICAgIHJl
dHVybiB0bXArZGVsdGE7Cn0KIyAyOCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9yd3Nl
bS5oIiAyCiMgNDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcndzZW0uaCIKc3RhdGlj
IGlubGluZSB2b2lkIGRvd25fcmVhZChzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgX19kb3duX3Jl
YWQoc2VtKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKfQoK
CgoKc3RhdGljIGlubGluZSB2b2lkIGRvd25fd3JpdGUoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2Vt
KQp7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAg
ICBfX2Rvd25fd3JpdGUoc2VtKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCB1cF9yZWFkKHN0cnVjdCByd19zZW1h
cGhvcmUgKnNlbSkKewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7
CiAgICAgICAgX191cF9yZWFkKHNlbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgdXBfd3JpdGUoc3RydWN0IHJ3X3Nl
bWFwaG9yZSAqc2VtKQp7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA7CiAgICAgICAgX191cF93cml0ZShzZW0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA7Cn0KIyA0MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2VtYXBo
b3JlLmgiIDIKCnN0cnVjdCBzZW1hcGhvcmUgewogICAgICAgIGF0b21pY190IGNvdW50OwogICAg
ICAgIGludCBzbGVlcGVyczsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0OwoKCgp9Owoj
IDczICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zZW1hcGhvcmUuaCIKc3RhdGljIGlubGlu
ZSB2b2lkIHNlbWFfaW5pdCAoc3RydWN0IHNlbWFwaG9yZSAqc2VtLCBpbnQgdmFsKQp7CgoKCgoK
CiAgICAgICAgKCgoJnNlbS0+Y291bnQpLT5jb3VudGVyKSA9ICh2YWwpKTsKICAgICAgICBzZW0t
PnNsZWVwZXJzID0gMDsKICAgICAgICBpbml0X3dhaXRxdWV1ZV9oZWFkKCZzZW0tPndhaXQpOwoK
Cgp9CgpzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF9NVVRFWCAoc3RydWN0IHNlbWFwaG9yZSAqc2Vt
KQp7CiAgICAgICAgc2VtYV9pbml0KHNlbSwgMSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0
X01VVEVYX0xPQ0tFRCAoc3RydWN0IHNlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgc2VtYV9pbml0
KHNlbSwgMCk7Cn0KCiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgdm9pZCBfX2Rvd25fZmFp
bGVkKHZvaWQgKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBpbnQgX19kb3duX2ZhaWxl
ZF9pbnRlcnJ1cHRpYmxlKHZvaWQgKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBpbnQg
X19kb3duX2ZhaWxlZF90cnlsb2NrKHZvaWQgKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkp
KSB2b2lkIF9fdXBfd2FrZXVwKHZvaWQgKTsKCiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkg
dm9pZCBfX2Rvd24oc3RydWN0IHNlbWFwaG9yZSAqIHNlbSk7CiBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDApKSkgaW50IF9fZG93bl9pbnRlcnJ1cHRpYmxlKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0p
OwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGludCBfX2Rvd25fdHJ5bG9jayhzdHJ1Y3Qg
c2VtYXBob3JlICogc2VtKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2b2lkIF9fdXAo
c3RydWN0IHNlbWFwaG9yZSAqIHNlbSk7CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBkb3duKHN0
cnVjdCBzZW1hcGhvcmUgKiBzZW0pCnsKCgoKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o
CiAgICAgICAgICAgICAgICAiIyBhdG9taWMgZG93biBvcGVyYXRpb25cblx0IgogICAgICAgICAg
ICAgICAgIiIgImRlY2wgJTBcblx0IgogICAgICAgICAgICAgICAgImpzIDJmXG4iCiAgICAgICAg
ICAgICAgICAiMTpcbiIKICAgICAgICAgICAgICAgICIuc2VjdGlvbiAudGV4dC5sb2NrLFwiYXhc
IlxuIgogICAgICAgICAgICAgICAgIjI6XHRjYWxsIF9fZG93bl9mYWlsZWRcblx0IgogICAgICAg
ICAgICAgICAgImptcCAxYlxuIgogICAgICAgICAgICAgICAgIi5wcmV2aW91cyIKICAgICAgICAg
ICAgICAgIDoiPW0iIChzZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiJjIiAoc2VtKQogICAg
ICAgICAgICAgICAgOiJtZW1vcnkiKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgaW50IGRvd25faW50
ZXJydXB0aWJsZShzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKQp7CiAgICAgICAgaW50IHJlc3VsdDsK
CgoKCgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiMgYXRv
bWljIGludGVycnVwdGlibGUgZG93biBvcGVyYXRpb25cblx0IgogICAgICAgICAgICAgICAgIiIg
ImRlY2wgJTFcblx0IgogICAgICAgICAgICAgICAgImpzIDJmXG5cdCIKICAgICAgICAgICAgICAg
ICJ4b3JsICUwLCUwXG4iCiAgICAgICAgICAgICAgICAiMTpcbiIKICAgICAgICAgICAgICAgICIu
c2VjdGlvbiAudGV4dC5sb2NrLFwiYXhcIlxuIgogICAgICAgICAgICAgICAgIjI6XHRjYWxsIF9f
ZG93bl9mYWlsZWRfaW50ZXJydXB0aWJsZVxuXHQiCiAgICAgICAgICAgICAgICAiam1wIDFiXG4i
CiAgICAgICAgICAgICAgICAiLnByZXZpb3VzIgogICAgICAgICAgICAgICAgOiI9YSIgKHJlc3Vs
dCksICI9bSIgKHNlbS0+Y291bnQpCiAgICAgICAgICAgICAgICA6ImMiIChzZW0pCiAgICAgICAg
ICAgICAgICA6Im1lbW9yeSIpOwogICAgICAgIHJldHVybiByZXN1bHQ7Cn0KCgoKCgpzdGF0aWMg
aW5saW5lIGludCBkb3duX3RyeWxvY2soc3RydWN0IHNlbWFwaG9yZSAqIHNlbSkKewogICAgICAg
IGludCByZXN1bHQ7CgoKCgoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAg
ICAgICAgICIjIGF0b21pYyBpbnRlcnJ1cHRpYmxlIGRvd24gb3BlcmF0aW9uXG5cdCIKICAgICAg
ICAgICAgICAgICIiICJkZWNsICUxXG5cdCIKICAgICAgICAgICAgICAgICJqcyAyZlxuXHQiCiAg
ICAgICAgICAgICAgICAieG9ybCAlMCwlMFxuIgogICAgICAgICAgICAgICAgIjE6XG4iCiAgICAg
ICAgICAgICAgICAiLnNlY3Rpb24gLnRleHQubG9jayxcImF4XCJcbiIKICAgICAgICAgICAgICAg
ICIyOlx0Y2FsbCBfX2Rvd25fZmFpbGVkX3RyeWxvY2tcblx0IgogICAgICAgICAgICAgICAgImpt
cCAxYlxuIgogICAgICAgICAgICAgICAgIi5wcmV2aW91cyIKICAgICAgICAgICAgICAgIDoiPWEi
IChyZXN1bHQpLCAiPW0iIChzZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiJjIiAoc2VtKQog
ICAgICAgICAgICAgICAgOiJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gcmVzdWx0Owp9CgoKCgoK
CgpzdGF0aWMgaW5saW5lIHZvaWQgdXAoc3RydWN0IHNlbWFwaG9yZSAqIHNlbSkKewoKCgogICAg
ICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiMgYXRvbWljIHVwIG9w
ZXJhdGlvblxuXHQiCiAgICAgICAgICAgICAgICAiIiAiaW5jbCAlMFxuXHQiCiAgICAgICAgICAg
ICAgICAiamxlIDJmXG4iCiAgICAgICAgICAgICAgICAiMTpcbiIKICAgICAgICAgICAgICAgICIu
c2VjdGlvbiAudGV4dC5sb2NrLFwiYXhcIlxuIgogICAgICAgICAgICAgICAgIjI6XHRjYWxsIF9f
dXBfd2FrZXVwXG5cdCIKICAgICAgICAgICAgICAgICJqbXAgMWJcbiIKICAgICAgICAgICAgICAg
ICIucHJldmlvdXMiCiAgICAgICAgICAgICAgICA6Ij1tIiAoc2VtLT5jb3VudCkKICAgICAgICAg
ICAgICAgIDoiYyIgKHNlbSkKICAgICAgICAgICAgICAgIDoibWVtb3J5Iik7Cn0KIyAxOTkgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvYXNtL2J5dGVvcmRlci5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9h
c20vdHlwZXMuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2J5dGVvcmRlci5o
IiAyCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMg
MTEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2J5dGVvcmRlci5oIiAyCgoKc3RhdGljIF9f
aW5saW5lX18gX19jb25zdF9fIF9fdTMyIF9fX2FyY2hfX3N3YWIzMihfX3UzMiB4KQp7CgogICAg
ICAgIF9fYXNtX18oImJzd2FwICUwIiA6ICI9ciIgKHgpIDogIjAiICh4KSk7CgoKCgoKCgogICAg
ICAgIHJldHVybiB4Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX2NvbnN0X18gX191MTYgX19fYXJj
aF9fc3dhYjE2KF9fdTE2IHgpCnsKICAgICAgICBfX2FzbV9fKCJ4Y2hnYiAlYjAsJWgwIiA6ICI9
cSIgKHgpIDogIjAiICh4KSk7IHJldHVybiB4OwoKCgp9CiMgNDUgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvYXNtL2J5dGVvcmRlci5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
Ynl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCIgMQojIDExICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L2J5dGVvcmRlci9saXR0bGVfZW5kaWFuLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9ieXRlb3JkZXIvc3dhYi5oIiAxCiMgMTMxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2J5dGVvcmRlci9zd2FiLmgiCnN0YXRpYyBfX2lubGluZV9fIF9fY29uc3RfXyBf
X3UxNiBfX2Zzd2FiMTYoX191MTYgeCkKewogICAgICAgIHJldHVybiBfX19hcmNoX19zd2FiMTYo
eCk7Cn0Kc3RhdGljIF9faW5saW5lX18gX191MTYgX19zd2FiMTZwKF9fdTE2ICp4KQp7CiAgICAg
ICAgcmV0dXJuIF9fX2FyY2hfX3N3YWIxNigqKHgpKTsKfQpzdGF0aWMgX19pbmxpbmVfXyB2b2lk
IF9fc3dhYjE2cyhfX3UxNiAqYWRkcikKewogICAgICAgIGRvIHsgKihhZGRyKSA9IF9fX2FyY2hf
X3N3YWIxNigqKChhZGRyKSkpOyB9IHdoaWxlICgwKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19j
b25zdF9fIF9fdTMyIF9fZnN3YWIzMihfX3UzMiB4KQp7CiAgICAgICAgcmV0dXJuIF9fX2FyY2hf
X3N3YWIzMih4KTsKfQpzdGF0aWMgX19pbmxpbmVfXyBfX3UzMiBfX3N3YWIzMnAoX191MzIgKngp
CnsKICAgICAgICByZXR1cm4gX19fYXJjaF9fc3dhYjMyKCooeCkpOwp9CnN0YXRpYyBfX2lubGlu
ZV9fIHZvaWQgX19zd2FiMzJzKF9fdTMyICphZGRyKQp7CiAgICAgICAgZG8geyAqKGFkZHIpID0g
X19fYXJjaF9fc3dhYjMyKCooKGFkZHIpKSk7IH0gd2hpbGUgKDApOwp9CgoKc3RhdGljIF9faW5s
aW5lX18gX19jb25zdF9fIF9fdTY0IF9fZnN3YWI2NChfX3U2NCB4KQp7CgogICAgICAgIF9fdTMy
IGggPSB4ID4+IDMyOwogICAgICAgIF9fdTMyIGwgPSB4ICYgKCgxVUxMPDwzMiktMSk7CiAgICAg
ICAgcmV0dXJuICgoKF9fdTY0KShfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191MzIpKGwpKSA/ICh7
IF9fdTMyIF9feCA9ICgobCkpOyAoKF9fdTMyKSggKCgoX191MzIpKF9feCkgJiAoX191MzIpMHgw
MDAwMDBmZlVMKSA8PCAyNCkgfCAoKChfX3UzMikoX194KSAmIChfX3UzMikweDAwMDBmZjAwVUwp
IDw8IDgpIHwgKCgoX191MzIpKF9feCkgJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiA4KSB8ICgo
KF9fdTMyKShfX3gpICYgKF9fdTMyKTB4ZmYwMDAwMDBVTCkgPj4gMjQpICkpOyB9KSA6IF9fZnN3
YWIzMigobCkpKSkgPDwgMzIpIHwgKChfX3U2NCkoKF9fYnVpbHRpbl9jb25zdGFudF9wKChfX3Uz
MikoaCkpID8gKHsgX191MzIgX194ID0gKChoKSk7ICgoX191MzIpKCAoKChfX3UzMikoX194KSAm
IChfX3UzMikweDAwMDAwMGZmVUwpIDw8IDI0KSB8ICgoKF9fdTMyKShfX3gpICYgKF9fdTMyKTB4
MDAwMGZmMDBVTCkgPDwgOCkgfCAoKChfX3UzMikoX194KSAmIChfX3UzMikweDAwZmYwMDAwVUwp
ID4+IDgpIHwgKCgoX191MzIpKF9feCkgJiAoX191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkgKSk7
IH0pIDogX19mc3dhYjMyKChoKSkpKSk7CgoKCn0Kc3RhdGljIF9faW5saW5lX18gX191NjQgX19z
d2FiNjRwKF9fdTY0ICp4KQp7CiAgICAgICAgcmV0dXJuICh7IF9fdTY0IF9fdG1wID0gKCooeCkp
IDsgKHsgX191NjQgX194ID0gKF9fdG1wKTsgKChfX3U2NCkoIChfX3U2NCkoKChfX3U2NCkoX194
KSAmIChfX3U2NCkweDAwMDAwMDAwMDAwMDAwZmZVTEwpIDw8IDU2KSB8IChfX3U2NCkoKChfX3U2
NCkoX194KSAmIChfX3U2NCkweDAwMDAwMDAwMDAwMGZmMDBVTEwpIDw8IDQwKSB8IChfX3U2NCko
KChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDAwMDAwMDBmZjAwMDBVTEwpIDw8IDI0KSB8IChf
X3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDAwMDAwZmYwMDAwMDBVTEwpIDw8IDgp
IHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwZmYwMDAwMDAwMFVMTCkg
Pj4gOCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwZmYwMDAwMDAwMDAw
VUxMKSA+PiAyNCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMGZmMDAwMDAw
MDAwMDAwVUxMKSA+PiA0MCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHhmZjAw
MDAwMDAwMDAwMDAwVUxMKSA+PiA1NikgKSk7IH0pOyB9KTsKfQpzdGF0aWMgX19pbmxpbmVfXyB2
b2lkIF9fc3dhYjY0cyhfX3U2NCAqYWRkcikKewogICAgICAgIGRvIHsgKihhZGRyKSA9ICh7IF9f
dTY0IF9fdG1wID0gKCooKGFkZHIpKSkgOyAoeyBfX3U2NCBfX3ggPSAoX190bXApOyAoKF9fdTY0
KSggKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAwMDBmZlVMTCkg
PDwgNTYpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAwZmYw
MFVMTCkgPDwgNDApIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAw
MGZmMDAwMFVMTCkgPDwgMjQpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAw
MDAwMDBmZjAwMDAwMFVMTCkgPDwgOCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQp
MHgwMDAwMDBmZjAwMDAwMDAwVUxMKSA+PiA4KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChf
X3U2NCkweDAwMDBmZjAwMDAwMDAwMDBVTEwpID4+IDI0KSB8IChfX3U2NCkoKChfX3U2NCkoX194
KSAmIChfX3U2NCkweDAwZmYwMDAwMDAwMDAwMDBVTEwpID4+IDQwKSB8IChfX3U2NCkoKChfX3U2
NCkoX194KSAmIChfX3U2NCkweGZmMDAwMDAwMDAwMDAwMDBVTEwpID4+IDU2KSApKTsgfSk7IH0p
OyB9IHdoaWxlICgwKTsKfQojIDEyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2J5dGVv
cmRlci9saXR0bGVfZW5kaWFuLmgiIDIKIyA2NiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvYnl0ZW9yZGVyL2dlbmVyaWMuaCIgMQojIDE1MCAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9ieXRlb3JkZXIvZ2VuZXJpYy5oIgpleHRlcm4gX191MzIgbnRvaGwoX191MzIpOwpl
eHRlcm4gX191MzIgaHRvbmwoX191MzIpOwoKCgoKZXh0ZXJuIHVuc2lnbmVkIHNob3J0IGludCBu
dG9ocyh1bnNpZ25lZCBzaG9ydCBpbnQpOwpleHRlcm4gdW5zaWduZWQgc2hvcnQgaW50IGh0b25z
KHVuc2lnbmVkIHNob3J0IGludCk7CiMgNjcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
Ynl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCIgMgojIDQ2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2FzbS9ieXRlb3JkZXIuaCIgMgojIDIwMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9m
cy5oIiAyCgpleHRlcm4gdm9pZCB1cGRhdGVfYXRpbWUgKHN0cnVjdCBpbm9kZSAqKTsKCgpleHRl
cm4gdm9pZCBidWZmZXJfaW5pdCh1bnNpZ25lZCBsb25nKTsKZXh0ZXJuIHZvaWQgaW5vZGVfaW5p
dCh1bnNpZ25lZCBsb25nKTsKZXh0ZXJuIHZvaWQgbW50X2luaXQodW5zaWduZWQgbG9uZyk7CgoK
ZW51bSBiaF9zdGF0ZV9iaXRzIHsKICAgICAgICBCSF9VcHRvZGF0ZSwKICAgICAgICBCSF9EaXJ0
eSwKICAgICAgICBCSF9Mb2NrLAogICAgICAgIEJIX1JlcSwKICAgICAgICBCSF9NYXBwZWQsCiAg
ICAgICAgQkhfTmV3LAogICAgICAgIEJIX0FzeW5jLAogICAgICAgIEJIX1dhaXRfSU8sCiAgICAg
ICAgQkhfbGF1bmRlciwKCiAgICAgICAgQkhfUHJpdmF0ZVN0YXJ0LAoKCn07CiMgMjM2ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0cnVjdCBidWZmZXJfaGVhZCB7CgogICAg
ICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYl9uZXh0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgYl9i
bG9ja25yOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGJfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCBiX2xpc3Q7CiAgICAgICAga2Rldl90IGJfZGV2OwoKICAgICAgICBhdG9taWNfdCBiX2Nv
dW50OwogICAgICAgIGtkZXZfdCBiX3JkZXY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBiX3N0YXRl
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgYl9mbHVzaHRpbWU7CgogICAgICAgIHN0cnVjdCBidWZm
ZXJfaGVhZCAqYl9uZXh0X2ZyZWU7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiX3ByZXZf
ZnJlZTsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJfdGhpc19wYWdlOwogICAgICAgIHN0
cnVjdCBidWZmZXJfaGVhZCAqYl9yZXFuZXh0OwoKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQg
KipiX3BwcmV2OwogICAgICAgIGNoYXIgKiBiX2RhdGE7CiAgICAgICAgc3RydWN0IHBhZ2UgKmJf
cGFnZTsKICAgICAgICB2b2lkICgqYl9lbmRfaW8pKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGlu
dCB1cHRvZGF0ZSk7CiAgICAgICAgdm9pZCAqYl9wcml2YXRlOwoKICAgICAgICB1bnNpZ25lZCBs
b25nIGJfcnNlY3RvcjsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBiX3dhaXQ7CgogICAgICAg
IHN0cnVjdCBpbm9kZSAqIGJfaW5vZGU7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBiX2lub2Rl
X2J1ZmZlcnM7Cn07Cgp0eXBlZGVmIHZvaWQgKGJoX2VuZF9pb190KShzdHJ1Y3QgYnVmZmVyX2hl
YWQgKmJoLCBpbnQgdXB0b2RhdGUpOwp2b2lkIGluaXRfYnVmZmVyKHN0cnVjdCBidWZmZXJfaGVh
ZCAqLCBiaF9lbmRfaW9fdCAqLCB2b2lkICopOwojIDI4MiAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9mcy5oIgpleHRlcm4gdm9pZCBzZXRfYmhfcGFnZShzdHJ1Y3QgYnVmZmVyX2hlYWQg
KmJoLCBzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpOwoKCgoKIyAxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3BpcGVfZnNfaS5oIiAxCgoKCgpzdHJ1Y3QgcGlw
ZV9pbm9kZV9pbmZvIHsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0OwogICAgICAgIGNo
YXIgKmJhc2U7CiAgICAgICAgdW5zaWduZWQgaW50IGxlbjsKICAgICAgICB1bnNpZ25lZCBpbnQg
c3RhcnQ7CiAgICAgICAgdW5zaWduZWQgaW50IHJlYWRlcnM7CiAgICAgICAgdW5zaWduZWQgaW50
IHdyaXRlcnM7CiAgICAgICAgdW5zaWduZWQgaW50IHdhaXRpbmdfcmVhZGVyczsKICAgICAgICB1
bnNpZ25lZCBpbnQgd2FpdGluZ193cml0ZXJzOwogICAgICAgIHVuc2lnbmVkIGludCByX2NvdW50
ZXI7CiAgICAgICAgdW5zaWduZWQgaW50IHdfY291bnRlcjsKfTsKIyA0MiAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9waXBlX2ZzX2kuaCIKdm9pZCBwaXBlX3dhaXQoc3RydWN0IGlub2Rl
ICogaW5vZGUpOwoKc3RydWN0IGlub2RlKiBwaXBlX25ldyhzdHJ1Y3QgaW5vZGUqIGlub2RlKTsK
IyAyODggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvbWluaXhfZnNfaS5oIiAxCgoKCgoKCnN0cnVjdCBtaW5peF9p
bm9kZV9pbmZvIHsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBfX3UxNiBpMV9kYXRh
WzE2XTsKICAgICAgICAgICAgICAgIF9fdTMyIGkyX2RhdGFbMTZdOwogICAgICAgIH0gdTsKfTsK
IyAyODkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvZXh0Ml9mc19pLmgiIDEKIyAyMiAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9leHQyX2ZzX2kuaCIKc3RydWN0IGV4dDJfaW5vZGVfaW5mbyB7CiAgICAg
ICAgX191MzIgaV9kYXRhWzE1XTsKICAgICAgICBfX3UzMiBpX2ZsYWdzOwogICAgICAgIF9fdTMy
IGlfZmFkZHI7CiAgICAgICAgX191OCBpX2ZyYWdfbm87CiAgICAgICAgX191OCBpX2ZyYWdfc2l6
ZTsKICAgICAgICBfX3UxNiBpX29zeW5jOwogICAgICAgIF9fdTMyIGlfZmlsZV9hY2w7CiAgICAg
ICAgX191MzIgaV9kaXJfYWNsOwogICAgICAgIF9fdTMyIGlfZHRpbWU7CiAgICAgICAgX191MzIg
aV9ibG9ja19ncm91cDsKICAgICAgICBfX3UzMiBpX25leHRfYWxsb2NfYmxvY2s7CiAgICAgICAg
X191MzIgaV9uZXh0X2FsbG9jX2dvYWw7CiAgICAgICAgX191MzIgaV9wcmVhbGxvY19ibG9jazsK
ICAgICAgICBfX3UzMiBpX3ByZWFsbG9jX2NvdW50OwogICAgICAgIF9fdTMyIGlfZGlyX3N0YXJ0
X2xvb2t1cDsKICAgICAgICBpbnQgaV9uZXdfaW5vZGU6MTsKfTsKIyAyOTAgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvaHBmc19mc19pLmgiIDEKCgoKc3RydWN0IGhwZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBtbXVfcHJpdmF0ZTsKICAgICAgICBpbm9fdCBpX3BhcmVudF9kaXI7CiAgICAg
ICAgdW5zaWduZWQgaV9kbm87CiAgICAgICAgdW5zaWduZWQgaV9kcG9zOwogICAgICAgIHVuc2ln
bmVkIGlfZHN1YmRubzsKICAgICAgICB1bnNpZ25lZCBpX2ZpbGVfc2VjOwogICAgICAgIHVuc2ln
bmVkIGlfZGlza19zZWM7CiAgICAgICAgdW5zaWduZWQgaV9uX3NlY3M7CiAgICAgICAgdW5zaWdu
ZWQgaV9lYV9zaXplOwogICAgICAgIHVuc2lnbmVkIGlfY29udiA6IDI7CiAgICAgICAgdW5zaWdu
ZWQgaV9lYV9tb2RlIDogMTsKICAgICAgICB1bnNpZ25lZCBpX2VhX3VpZCA6IDE7CiAgICAgICAg
dW5zaWduZWQgaV9lYV9naWQgOiAxOwogICAgICAgIHVuc2lnbmVkIGlfZGlydHkgOiAxOwogICAg
ICAgIHN0cnVjdCBzZW1hcGhvcmUgaV9zZW07CiAgICAgICAgbG9mZl90ICoqaV9yZGRpcl9vZmY7
Cn07CiMgMjkxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L250ZnNfZnNfaS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9udGZzX2ZzX2kuaCIgMgoKCnN0cnVjdCBudGZzX2F0dHJpYnV0ZTsKc3RydWN0IG50
ZnNfc2JfaW5mbzsKCgoKCnR5cGVkZWYgdTggbnRmc191ODsKdHlwZWRlZiB1MTYgbnRmc191MTY7
CnR5cGVkZWYgdTMyIG50ZnNfdTMyOwp0eXBlZGVmIHU2NCBudGZzX3U2NDsKdHlwZWRlZiBzOCBu
dGZzX3M4Owp0eXBlZGVmIHMxNiBudGZzX3MxNjsKdHlwZWRlZiBzMzIgbnRmc19zMzI7CnR5cGVk
ZWYgczY0IG50ZnNfczY0OwoKCgoKdHlwZWRlZiBfX2tlcm5lbF9tb2RlX3QgbnRtb2RlX3Q7CgoK
CnR5cGVkZWYgdWlkX3QgbnRmc191aWRfdDsKCgoKdHlwZWRlZiBnaWRfdCBudGZzX2dpZF90OwoK
Cgp0eXBlZGVmIF9fa2VybmVsX3NpemVfdCBudGZzX3NpemVfdDsKCgoKdHlwZWRlZiBfX2tlcm5l
bF90aW1lX3QgbnRmc190aW1lX3Q7CgoKCgoKdHlwZWRlZiB1MTYgbnRmc193Y2hhcl90OwoKCgoK
dHlwZWRlZiBzNjQgbnRmc19vZmZzZXRfdDsKCgoKCnR5cGVkZWYgdTY0IG50ZnNfdGltZTY0X3Q7
CiMgNjkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbnRmc19mc19pLmgiCnR5cGVkZWYg
czMyIG50ZnNfY2x1c3Rlcl90OwoKCgpzdHJ1Y3QgbnRmc19pbm9kZV9pbmZvIHsKICAgICAgICBz
dHJ1Y3QgbnRmc19zYl9pbmZvICp2b2w7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX251bWJlcjsK
ICAgICAgICBfX3UxNiBzZXF1ZW5jZV9udW1iZXI7CiAgICAgICAgdW5zaWduZWQgY2hhciAqYXR0
cjsKICAgICAgICBpbnQgYXR0cl9jb3VudDsKICAgICAgICBzdHJ1Y3QgbnRmc19hdHRyaWJ1dGUg
KmF0dHJzOwogICAgICAgIGludCByZWNvcmRfY291bnQ7CiAgICAgICAgaW50ICpyZWNvcmRzOwoK
ICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgcmVjb3Jkc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsdXN0
ZXJzX3Blcl9yZWNvcmQ7CiAgICAgICAgICAgICAgICB9IGluZGV4OwogICAgICAgIH0gdTsKfTsK
IyAyOTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvbXNkb3NfZnNfaS5oIiAxCgoKCgoKCgpzdHJ1Y3QgbXNkb3Nf
aW5vZGVfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtbXVfcHJpdmF0ZTsKICAgICAgICBp
bnQgaV9zdGFydDsKICAgICAgICBpbnQgaV9sb2dzdGFydDsKICAgICAgICBpbnQgaV9hdHRyczsK
ICAgICAgICBpbnQgaV9jdGltZV9tczsKICAgICAgICBpbnQgaV9sb2NhdGlvbjsKICAgICAgICBz
dHJ1Y3QgaW5vZGUgKmlfZmF0X2lub2RlOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaV9mYXRf
aGFzaDsKfTsKIyAyOTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdW1zZG9zX2ZzX2kuaCIgMQoKCgoKCgoKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21zZG9zX2ZzX2kuaCIgMQojIDkgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdW1zZG9zX2ZzX2kuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvcGlwZV9mc19pLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC91bXNkb3NfZnNfaS5oIiAyCiMgMzkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvdW1zZG9zX2ZzX2kuaCIKc3RydWN0IGRpcl9sb2NraW5nX2luZm8gewogICAgICAgIHdh
aXRfcXVldWVfaGVhZF90IHA7CiAgICAgICAgc2hvcnQgaW50IGxvb2tpbmc7CiAgICAgICAgc2hv
cnQgaW50IGNyZWF0aW5nOwoKCgogICAgICAgIGxvbmcgcGlkOwoKfTsKCnN0cnVjdCB1bXNkb3Nf
aW5vZGVfaW5mbyB7CiAgICAgICAgc3RydWN0IG1zZG9zX2lub2RlX2luZm8gbXNkb3NfaW5mbzsK
ICAgICAgICBzdHJ1Y3QgZGlyX2xvY2tpbmdfaW5mbyBkaXJfaW5mbzsKICAgICAgICBpbnQgaV9w
YXRjaGVkOwogICAgICAgIGludCBpX2lzX2hsaW5rOwogICAgICAgIG9mZl90IHBvczsKfTsKIyAy
OTQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvaXNvX2ZzX2kuaCIgMQoKCgoKCgpzdHJ1Y3QgaXNvX2lub2RlX2lu
Zm8gewogICAgICAgIHVuc2lnbmVkIGludCBpX2ZpcnN0X2V4dGVudDsKICAgICAgICB1bnNpZ25l
ZCBjaGFyIGlfZmlsZV9mb3JtYXQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX25leHRfc2VjdGlv
bl9pbm87CiAgICAgICAgb2ZmX3QgaV9zZWN0aW9uX3NpemU7Cn07CiMgMjk1ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L25mc19mc19pLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS90eXBl
cy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uZnNfZnNfaS5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9saXN0LmgiIDEKIyA2ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L25mcy5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmZz
LmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zdW5ycGMvbXNnX3Byb3QuaCIg
MQojIDE0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N1bnJwYy9tc2dfcHJvdC5oIgpl
bnVtIHJwY19hdXRoX2ZsYXZvciB7CiAgICAgICAgUlBDX0FVVEhfTlVMTCA9IDAsCiAgICAgICAg
UlBDX0FVVEhfVU5JWCA9IDEsCiAgICAgICAgUlBDX0FVVEhfU0hPUlQgPSAyLAogICAgICAgIFJQ
Q19BVVRIX0RFUyA9IDMsCiAgICAgICAgUlBDX0FVVEhfS1JCID0gNCwKfTsKCmVudW0gcnBjX21z
Z190eXBlIHsKICAgICAgICBSUENfQ0FMTCA9IDAsCiAgICAgICAgUlBDX1JFUExZID0gMQp9OwoK
ZW51bSBycGNfcmVwbHlfc3RhdCB7CiAgICAgICAgUlBDX01TR19BQ0NFUFRFRCA9IDAsCiAgICAg
ICAgUlBDX01TR19ERU5JRUQgPSAxCn07CgplbnVtIHJwY19hY2NlcHRfc3RhdCB7CiAgICAgICAg
UlBDX1NVQ0NFU1MgPSAwLAogICAgICAgIFJQQ19QUk9HX1VOQVZBSUwgPSAxLAogICAgICAgIFJQ
Q19QUk9HX01JU01BVENIID0gMiwKICAgICAgICBSUENfUFJPQ19VTkFWQUlMID0gMywKICAgICAg
ICBSUENfR0FSQkFHRV9BUkdTID0gNCwKICAgICAgICBSUENfU1lTVEVNX0VSUiA9IDUKfTsKCmVu
dW0gcnBjX3JlamVjdF9zdGF0IHsKICAgICAgICBSUENfTUlTTUFUQ0ggPSAwLAogICAgICAgIFJQ
Q19BVVRIX0VSUk9SID0gMQp9OwoKZW51bSBycGNfYXV0aF9zdGF0IHsKICAgICAgICBSUENfQVVU
SF9PSyA9IDAsCiAgICAgICAgUlBDX0FVVEhfQkFEQ1JFRCA9IDEsCiAgICAgICAgUlBDX0FVVEhf
UkVKRUNURURDUkVEID0gMiwKICAgICAgICBSUENfQVVUSF9CQURWRVJGID0gMywKICAgICAgICBS
UENfQVVUSF9SRUpFQ1RFRFZFUkYgPSA0LAogICAgICAgIFJQQ19BVVRIX1RPT1dFQUsgPSA1Cn07
CiMgMTEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmZzLmgiIDIKIyA0MSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9uZnMuaCIKIGVudW0gbmZzX3N0YXQgewogICAgICAgIE5G
U19PSyA9IDAsCiAgICAgICAgTkZTRVJSX1BFUk0gPSAxLAogICAgICAgIE5GU0VSUl9OT0VOVCA9
IDIsCiAgICAgICAgTkZTRVJSX0lPID0gNSwKICAgICAgICBORlNFUlJfTlhJTyA9IDYsCiAgICAg
ICAgTkZTRVJSX0VBR0FJTiA9IDExLAogICAgICAgIE5GU0VSUl9BQ0NFUyA9IDEzLAogICAgICAg
IE5GU0VSUl9FWElTVCA9IDE3LAogICAgICAgIE5GU0VSUl9YREVWID0gMTgsCiAgICAgICAgTkZT
RVJSX05PREVWID0gMTksCiAgICAgICAgTkZTRVJSX05PVERJUiA9IDIwLAogICAgICAgIE5GU0VS
Ul9JU0RJUiA9IDIxLAogICAgICAgIE5GU0VSUl9JTlZBTCA9IDIyLAogICAgICAgIE5GU0VSUl9G
QklHID0gMjcsCiAgICAgICAgTkZTRVJSX05PU1BDID0gMjgsCiAgICAgICAgTkZTRVJSX1JPRlMg
PSAzMCwKICAgICAgICBORlNFUlJfTUxJTksgPSAzMSwKICAgICAgICBORlNFUlJfT1BOT1RTVVBQ
ID0gNDUsCiAgICAgICAgTkZTRVJSX05BTUVUT09MT05HID0gNjMsCiAgICAgICAgTkZTRVJSX05P
VEVNUFRZID0gNjYsCiAgICAgICAgTkZTRVJSX0RRVU9UID0gNjksCiAgICAgICAgTkZTRVJSX1NU
QUxFID0gNzAsCiAgICAgICAgTkZTRVJSX1JFTU9URSA9IDcxLAogICAgICAgIE5GU0VSUl9XRkxV
U0ggPSA5OSwKICAgICAgICBORlNFUlJfQkFESEFORExFID0gMTAwMDEsCiAgICAgICAgTkZTRVJS
X05PVF9TWU5DID0gMTAwMDIsCiAgICAgICAgTkZTRVJSX0JBRF9DT09LSUUgPSAxMDAwMywKICAg
ICAgICBORlNFUlJfTk9UU1VQUCA9IDEwMDA0LAogICAgICAgIE5GU0VSUl9UT09TTUFMTCA9IDEw
MDA1LAogICAgICAgIE5GU0VSUl9TRVJWRVJGQVVMVCA9IDEwMDA2LAogICAgICAgIE5GU0VSUl9C
QURUWVBFID0gMTAwMDcsCiAgICAgICAgTkZTRVJSX0pVS0VCT1ggPSAxMDAwOAogfTsKCgoKZW51
bSBuZnNfZnR5cGUgewogICAgICAgIE5GTk9OID0gMCwKICAgICAgICBORlJFRyA9IDEsCiAgICAg
ICAgTkZESVIgPSAyLAogICAgICAgIE5GQkxLID0gMywKICAgICAgICBORkNIUiA9IDQsCiAgICAg
ICAgTkZMTksgPSA1LAogICAgICAgIE5GU09DSyA9IDYsCiAgICAgICAgTkZCQUQgPSA3LAogICAg
ICAgIE5GRklGTyA9IDgKfTsKCgoKCgoKc3RydWN0IG5mc19maCB7CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgc2l6ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGRhdGFbNjRdOwp9OwojIDEwNyAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uZnMuaCIKZW51bSBuZnMzX3N0YWJsZV9ob3cgewog
ICAgICAgIE5GU19VTlNUQUJMRSA9IDAsCiAgICAgICAgTkZTX0RBVEFfU1lOQyA9IDEsCiAgICAg
ICAgTkZTX0ZJTEVfU1lOQyA9IDIKfTsKIyA3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L25mc19mc19pLmgiIDIKCgoKCnN0cnVjdCBuZnNfaW5vZGVfaW5mbyB7CgoKCiAgICAgICAgX191
NjQgZnNpZDsKICAgICAgICBfX3U2NCBmaWxlaWQ7CgoKCgogICAgICAgIHN0cnVjdCBuZnNfZmgg
Zmg7CgoKCgogICAgICAgIHVuc2lnbmVkIHNob3J0IGZsYWdzOwojIDQ1ICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiCiAgICAgICAgdW5zaWduZWQgbG9uZyByZWFkX2Nh
Y2hlX2ppZmZpZXM7CiAgICAgICAgX191NjQgcmVhZF9jYWNoZV9jdGltZTsKICAgICAgICBfX3U2
NCByZWFkX2NhY2hlX210aW1lOwogICAgICAgIF9fdTY0IHJlYWRfY2FjaGVfaXNpemU7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBhdHRydGltZW87CiAgICAgICAgdW5zaWduZWQgbG9uZyBhdHRydGlt
ZW9fdGltZXN0YW1wOwoKCgoKCiAgICAgICAgX191MzIgY29va2lldmVyZlsyXTsKCgoKCiAgICAg
ICAgc3RydWN0IGxpc3RfaGVhZCByZWFkOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZGlydHk7
CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBjb21taXQ7CiAgICAgICAgc3RydWN0IGxpc3RfaGVh
ZCB3cml0ZWJhY2s7CgogICAgICAgIHVuc2lnbmVkIGludCBucmVhZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuZGlydHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bmNvbW1pdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBucGFnZXM7CgoKICAgICAg
ICBzdHJ1Y3QgaW5vZGUgKmhhc2hfbmV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqaGFzaF9wcmV2OwogICAgICAgIHVuc2lnbmVkIGxvbmcgbmV4dHNjYW47CgoKICAgICAgICBz
dHJ1Y3QgcnBjX2NyZWQgKm1tX2NyZWQ7Cn07CiMgOTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvbmZzX2ZzX2kuaCIKc3RydWN0IG5mc19sb2NrX2luZm8gewogICAgICAgIHUzMiBzdGF0
ZTsKICAgICAgICB1MzIgZmxhZ3M7CiAgICAgICAgc3RydWN0IG5sbV9ob3N0ICpob3N0Owp9Owoj
IDI5NiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9zeXN2X2ZzX2kuaCIgMQoKCgoKCgpzdHJ1Y3Qgc3lzdl9pbm9k
ZV9pbmZvIHsKICAgICAgICB1MzIgaV9kYXRhWzEwKzErMSsxXTsKCgoKCn07CiMgMjk3ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2FmZnNfZnNfaS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9hLm91dC5oIiAxCgoKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2Eu
b3V0LmgiIDEKCgoKc3RydWN0IGV4ZWMKewogIHVuc2lnbmVkIGxvbmcgYV9pbmZvOwogIHVuc2ln
bmVkIGFfdGV4dDsKICB1bnNpZ25lZCBhX2RhdGE7CiAgdW5zaWduZWQgYV9ic3M7CiAgdW5zaWdu
ZWQgYV9zeW1zOwogIHVuc2lnbmVkIGFfZW50cnk7CiAgdW5zaWduZWQgYV90cnNpemU7CiAgdW5z
aWduZWQgYV9kcnNpemU7Cn07CiMgOSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9hLm91
dC5oIiAyCgoKCgplbnVtIG1hY2hpbmVfdHlwZSB7CgoKCiAgTV9PTERTVU4yID0gMCwKCgoKCiAg
TV82ODAxMCA9IDEsCgoKCgogIE1fNjgwMjAgPSAyLAoKCgoKICBNX1NQQVJDID0gMywKCgogIE1f
Mzg2ID0gMTAwLAogIE1fTUlQUzEgPSAxNTEsCiAgTV9NSVBTMiA9IDE1Mgp9OwojIDEzMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9hLm91dC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvYXNtL3BhZ2UuaCIgMQojIDEzMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9h
Lm91dC5oIiAyCiMgMTU3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Eub3V0LmgiCnN0
cnVjdCBubGlzdCB7CiAgdW5pb24gewogICAgY2hhciAqbl9uYW1lOwogICAgc3RydWN0IG5saXN0
ICpuX25leHQ7CiAgICBsb25nIG5fc3RyeDsKICB9IG5fdW47CiAgdW5zaWduZWQgY2hhciBuX3R5
cGU7CiAgY2hhciBuX290aGVyOwogIHNob3J0IG5fZGVzYzsKICB1bnNpZ25lZCBsb25nIG5fdmFs
dWU7Cn07CiMgMjM1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Eub3V0LmgiCnN0cnVj
dCByZWxvY2F0aW9uX2luZm8KewoKICBpbnQgcl9hZGRyZXNzOwoKICB1bnNpZ25lZCBpbnQgcl9z
eW1ib2xudW06MjQ7CgoKCiAgdW5zaWduZWQgaW50IHJfcGNyZWw6MTsKCgogIHVuc2lnbmVkIGlu
dCByX2xlbmd0aDoyOwoKCgoKCgogIHVuc2lnbmVkIGludCByX2V4dGVybjoxOwoKCgoKCgoKICB1
bnNpZ25lZCBpbnQgcl9wYWQ6NDsKCn07CiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9hZmZzX2ZzX2kuaCIgMgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90aW1l
LmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wYXJhbS5oIiAxCiMgNSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90aW1lLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyA2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L3RpbWUuaCIgMgoKCgpzdHJ1Y3QgdGltZXNwZWMgewogICAgICAgIHRpbWVfdCB0dl9zZWM7
CiAgICAgICAgbG9uZyB0dl9uc2VjOwp9OwojIDMxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L3RpbWUuaCIKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZwp0aW1lc3BlY190b19q
aWZmaWVzKHN0cnVjdCB0aW1lc3BlYyAqdmFsdWUpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIHNl
YyA9IHZhbHVlLT50dl9zZWM7CiAgICAgICAgbG9uZyBuc2VjID0gdmFsdWUtPnR2X25zZWM7Cgog
ICAgICAgIGlmIChzZWMgPj0gKCgofjBVTCA+PiAxKS0xKSAvIDEwMCkpCiAgICAgICAgICAgICAg
ICByZXR1cm4gKCh+MFVMID4+IDEpLTEpOwogICAgICAgIG5zZWMgKz0gMTAwMDAwMDAwMEwgLyAx
MDAgLSAxOwogICAgICAgIG5zZWMgLz0gMTAwMDAwMDAwMEwgLyAxMDA7CiAgICAgICAgcmV0dXJu
IDEwMCAqIHNlYyArIG5zZWM7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQKamlmZmllc190b190
aW1lc3BlYyh1bnNpZ25lZCBsb25nIGppZmZpZXMsIHN0cnVjdCB0aW1lc3BlYyAqdmFsdWUpCnsK
ICAgICAgICB2YWx1ZS0+dHZfbnNlYyA9IChqaWZmaWVzICUgMTAwKSAqICgxMDAwMDAwMDAwTCAv
IDEwMCk7CiAgICAgICAgdmFsdWUtPnR2X3NlYyA9IGppZmZpZXMgLyAxMDA7Cn0KIyA2NyAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90aW1lLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQg
bG9uZwpta3RpbWUgKHVuc2lnbmVkIGludCB5ZWFyLCB1bnNpZ25lZCBpbnQgbW9uLAogICAgICAg
IHVuc2lnbmVkIGludCBkYXksIHVuc2lnbmVkIGludCBob3VyLAogICAgICAgIHVuc2lnbmVkIGlu
dCBtaW4sIHVuc2lnbmVkIGludCBzZWMpCnsKICAgICAgICBpZiAoMCA+PSAoaW50KSAobW9uIC09
IDIpKSB7CiAgICAgICAgICAgICAgICBtb24gKz0gMTI7CiAgICAgICAgICAgICAgICB5ZWFyIC09
IDE7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gKCgoCiAgICAgICAgICAgICAgICAodW5zaWdu
ZWQgbG9uZykgKHllYXIvNCAtIHllYXIvMTAwICsgeWVhci80MDAgKyAzNjcqbW9uLzEyICsgZGF5
KSArCiAgICAgICAgICAgICAgICAgICAgICAgIHllYXIqMzY1IC0gNzE5NDk5CiAgICAgICAgICAg
ICkqMjQgKyBob3VyCiAgICAgICAgICApKjYwICsgbWluCiAgICAgICAgKSo2MCArIHNlYzsKfQoK
CgoKc3RydWN0IHRpbWV2YWwgewogICAgICAgIHRpbWVfdCB0dl9zZWM7CiAgICAgICAgc3VzZWNv
bmRzX3QgdHZfdXNlYzsKfTsKCnN0cnVjdCB0aW1lem9uZSB7CiAgICAgICAgaW50IHR6X21pbnV0
ZXN3ZXN0OwogICAgICAgIGludCB0el9kc3R0aW1lOwp9OwoKCgoKZXh0ZXJuIHZvaWQgZG9fZ2V0
dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0dik7CmV4dGVybiB2b2lkIGRvX3NldHRpbWVvZmRh
eShzdHJ1Y3QgdGltZXZhbCAqdHYpOwpleHRlcm4gdm9pZCBnZXRfZmFzdF90aW1lKHN0cnVjdCB0
aW1ldmFsICp0dik7CmV4dGVybiB2b2lkICgqZG9fZ2V0X2Zhc3RfdGltZSkoc3RydWN0IHRpbWV2
YWwgKik7CiMgMTIxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3RpbWUuaCIKc3RydWN0
IGl0aW1lcnNwZWMgewogICAgICAgIHN0cnVjdCB0aW1lc3BlYyBpdF9pbnRlcnZhbDsKICAgICAg
ICBzdHJ1Y3QgdGltZXNwZWMgaXRfdmFsdWU7Cn07CgpzdHJ1Y3QgaXRpbWVydmFsIHsKICAgICAg
ICBzdHJ1Y3QgdGltZXZhbCBpdF9pbnRlcnZhbDsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBpdF92
YWx1ZTsKfTsKIyA4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2FmZnNfZnNfaS5oIiAy
CiMgMTcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvYWZmc19mc19pLmgiCnN0cnVjdCBh
ZmZzX2V4dF9rZXkgewogICAgICAgIHUzMiBleHQ7CiAgICAgICAgdTMyIGtleTsKfTsKCgoKCnN0
cnVjdCBhZmZzX2lub2RlX2luZm8gewogICAgICAgIHUzMiBpX29wZW5jbnQ7CiAgICAgICAgc3Ry
dWN0IHNlbWFwaG9yZSBpX2xpbmtfbG9jazsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGlfZXh0
X2xvY2s7CgogICAgICAgIHUzMiBpX2Jsa2NudDsKICAgICAgICB1MzIgaV9leHRjbnQ7CiAgICAg
ICAgdTMyICppX2xjOwogICAgICAgIHUzMiBpX2xjX3NpemU7CiAgICAgICAgdTMyIGlfbGNfc2hp
ZnQ7CiAgICAgICAgdTMyIGlfbGNfbWFzazsKICAgICAgICBzdHJ1Y3QgYWZmc19leHRfa2V5ICpp
X2FjOwogICAgICAgIHUzMiBpX2V4dF9sYXN0OwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAq
aV9leHRfYmg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtbXVfcHJpdmF0ZTsKICAgICAgICB1MzIg
aV9wcm90ZWN0OwogICAgICAgIHUzMiBpX2xhc3RhbGxvYzsKICAgICAgICBpbnQgaV9wYV9jbnQ7
CiMgNTEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvYWZmc19mc19pLmgiCn07CiMgMjk4
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L3Vmc19mc19pLmgiIDEKIyAxNiAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC91ZnNfZnNfaS5oIgpzdHJ1Y3QgdWZzX2lub2RlX2luZm8gewogICAgICAgIHVuaW9u
IHsKICAgICAgICAgICAgICAgIF9fdTMyIGlfZGF0YVsxNV07CiAgICAgICAgICAgICAgICBfX3U4
IGlfc3ltbGlua1s0KjE1XTsKICAgICAgICB9IGlfdTE7CiAgICAgICAgX191NjQgaV9zaXplOwog
ICAgICAgIF9fdTMyIGlfZmxhZ3M7CiAgICAgICAgX191MzIgaV9nZW47CiAgICAgICAgX191MzIg
aV9zaGFkb3c7CiAgICAgICAgX191MzIgaV91bnVzZWQxOwogICAgICAgIF9fdTMyIGlfdW51c2Vk
MjsKICAgICAgICBfX3UzMiBpX29lZnRmbGFnOwogICAgICAgIF9fdTE2IGlfb3N5bmM7CiAgICAg
ICAgX191MzIgaV9sYXN0ZnJhZzsKfTsKIyAyOTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZWZzX2ZzX2kuaCIg
MQojIDEyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Vmc19mc19pLmgiCnR5cGVkZWYg
aW50MzJfdCBlZnNfYmxvY2tfdDsKdHlwZWRlZiB1aW50MzJfdCBlZnNfaW5vX3Q7CgoKCgoKCnR5
cGVkZWYgdW5pb24gZXh0ZW50X3UgewogICAgICAgIHVuc2lnbmVkIGNoYXIgcmF3WzhdOwogICAg
ICAgIHN0cnVjdCBleHRlbnRfcyB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXhfbWFn
aWM6ODsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBleF9ibjoyNDsKICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBleF9sZW5ndGg6ODsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCBleF9vZmZzZXQ6MjQ7CiAgICAgICAgfSBjb29rZWQ7Cn0gZWZzX2V4dGVudDsKCnR5cGVkZWYg
c3RydWN0IGVkZXZzIHsKICAgICAgICBzaG9ydCBvZGV2OwogICAgICAgIHVuc2lnbmVkIGludCBu
ZGV2Owp9IGVmc19kZXZzOwoKCgoKCnN0cnVjdCBlZnNfZGlub2RlIHsKICAgICAgICB1X3Nob3J0
IGRpX21vZGU7CiAgICAgICAgc2hvcnQgZGlfbmxpbms7CiAgICAgICAgdV9zaG9ydCBkaV91aWQ7
CiAgICAgICAgdV9zaG9ydCBkaV9naWQ7CiAgICAgICAgaW50MzJfdCBkaV9zaXplOwogICAgICAg
IGludDMyX3QgZGlfYXRpbWU7CiAgICAgICAgaW50MzJfdCBkaV9tdGltZTsKICAgICAgICBpbnQz
Ml90IGRpX2N0aW1lOwogICAgICAgIHVpbnQzMl90IGRpX2dlbjsKICAgICAgICBzaG9ydCBkaV9u
dW1leHRlbnRzOwogICAgICAgIHVfY2hhciBkaV92ZXJzaW9uOwogICAgICAgIHVfY2hhciBkaV9z
cGFyZTsKICAgICAgICB1bmlvbiBkaV9hZGRyIHsKICAgICAgICAgICAgICAgIGVmc19leHRlbnQg
ZGlfZXh0ZW50c1sxMl07CiAgICAgICAgICAgICAgICBlZnNfZGV2cyBkaV9kZXY7CiAgICAgICAg
fSBkaV91Owp9OwoKCnN0cnVjdCBlZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgaW50IG51bWV4dGVu
dHM7CiAgICAgICAgaW50IGxhc3RleHRlbnQ7CgogICAgICAgIGVmc19leHRlbnQgZXh0ZW50c1sx
Ml07Cn07CiMgMzAwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvZGFfZnNfaS5oIiAxCiMgMTIgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvY29kYV9mc19pLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC90eXBlcy5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
Y29kYV9mc19pLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIg
MQojIDE0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvZGFfZnNfaS5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb2RhLmgiIDEKIyAxMDkgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvY29kYS5oIgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1X3F1
YWRfdDsKIyAxNjQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29kYS5oIgpzdHJ1Y3Qg
dmVudXNfZGlyZW50IHsKICAgICAgICB1bnNpZ25lZCBsb25nIGRfZmlsZW5vOwogICAgICAgIHVu
c2lnbmVkIHNob3J0IGRfcmVjbGVuOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZF90eXBlOwogICAg
ICAgIHVuc2lnbmVkIGNoYXIgZF9uYW1sZW47CiAgICAgICAgY2hhciBkX25hbWVbMjU1ICsgMV07
Cn07CiMgMTk4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvZGEuaCIKdHlwZWRlZiB1
X2xvbmcgVm9sdW1lSWQ7CnR5cGVkZWYgdV9sb25nIFZub2RlSWQ7CnR5cGVkZWYgdV9sb25nIFVu
aXF1ZV90Owp0eXBlZGVmIHVfbG9uZyBGaWxlVmVyc2lvbjsKCgoKCnR5cGVkZWYgc3RydWN0IFZp
Y2VGaWQgewogICAgVm9sdW1lSWQgVm9sdW1lOwogICAgVm5vZGVJZCBWbm9kZTsKICAgIFVuaXF1
ZV90IFVuaXF1ZTsKfSBWaWNlRmlkOwoKCgoKc3RhdGljIF9faW5saW5lX18gaW5vX3QgY29kYV9m
Mmkoc3RydWN0IFZpY2VGaWQgKmZpZCkKewogICAgICAgIGlmICggISBmaWQgKQogICAgICAgICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgICAgaWYgKGZpZC0+Vm5vZGUgPT0gMHhmZmZmZmZmZSB8fCBm
aWQtPlZub2RlID09IDB4ZmZmZmZmZmYpCiAgICAgICAgICAgICAgICByZXR1cm4gKChmaWQtPlZv
bHVtZSA8PCAyMCkgfCAoZmlkLT5VbmlxdWUgJiAweGZmZmZmKSk7CiAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgcmV0dXJuIChmaWQtPlVuaXF1ZSArIChmaWQtPlZub2RlPDwxMCkgKyAoZmlk
LT5Wb2x1bWU8PDIwKSk7Cn0KIyAyMzMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29k
YS5oIgp0eXBlZGVmIHVfaW50MzJfdCB2dWlkX3Q7CnR5cGVkZWYgdV9pbnQzMl90IHZnaWRfdDsK
CgoKCnN0cnVjdCBjb2RhX2NyZWQgewogICAgdnVpZF90IGNyX3VpZCwgY3JfZXVpZCwgY3Jfc3Vp
ZCwgY3JfZnN1aWQ7CiAgICB2Z2lkX3QgY3JfZ3JvdXBpZCwgY3JfZWdpZCwgY3Jfc2dpZCwgY3Jf
ZnNnaWQ7Cn07CgoKCgoKCgplbnVtIGNvZGFfdnR5cGUgeyBDX1ZOT04sIENfVlJFRywgQ19WRElS
LCBDX1ZCTEssIENfVkNIUiwgQ19WTE5LLCBDX1ZTT0NLLCBDX1ZGSUZPLCBDX1ZCQUQgfTsKCnN0
cnVjdCBjb2RhX3ZhdHRyIHsKICAgICAgICBsb25nIHZhX3R5cGU7CiAgICAgICAgdV9zaG9ydCB2
YV9tb2RlOwogICAgICAgIHNob3J0IHZhX25saW5rOwogICAgICAgIHZ1aWRfdCB2YV91aWQ7CiAg
ICAgICAgdmdpZF90IHZhX2dpZDsKICAgICAgICBsb25nIHZhX2ZpbGVpZDsKICAgICAgICB1X3F1
YWRfdCB2YV9zaXplOwogICAgICAgIGxvbmcgdmFfYmxvY2tzaXplOwogICAgICAgIHN0cnVjdCB0
aW1lc3BlYyB2YV9hdGltZTsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdmFfbXRpbWU7CiAgICAg
ICAgc3RydWN0IHRpbWVzcGVjIHZhX2N0aW1lOwogICAgICAgIHVfbG9uZyB2YV9nZW47CiAgICAg
ICAgdV9sb25nIHZhX2ZsYWdzOwogICAgICAgIHVfcXVhZF90IHZhX3JkZXY7CiAgICAgICAgdV9x
dWFkX3QgdmFfYnl0ZXM7CiAgICAgICAgdV9xdWFkX3QgdmFfZmlsZXJldjsKfTsKCgoKCnN0cnVj
dCBjb2RhX3N0YXRmcyB7CiAgICBpbnQzMl90IGZfYmxvY2tzOwogICAgaW50MzJfdCBmX2JmcmVl
OwogICAgaW50MzJfdCBmX2JhdmFpbDsKICAgIGludDMyX3QgZl9maWxlczsKICAgIGludDMyX3Qg
Zl9mZnJlZTsKfTsKIyAzMzcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29kYS5oIgpz
dHJ1Y3QgY29kYV9pbl9oZHIgewogICAgdW5zaWduZWQgbG9uZyBvcGNvZGU7CiAgICB1bnNpZ25l
ZCBsb25nIHVuaXF1ZTsKICAgIHVfc2hvcnQgcGlkOwogICAgdV9zaG9ydCBwZ2lkOwogICAgdV9z
aG9ydCBzaWQ7CiAgICBzdHJ1Y3QgY29kYV9jcmVkIGNyZWQ7Cn07CgoKc3RydWN0IGNvZGFfb3V0
X2hkciB7CiAgICB1bnNpZ25lZCBsb25nIG9wY29kZTsKICAgIHVuc2lnbmVkIGxvbmcgdW5pcXVl
OwogICAgdW5zaWduZWQgbG9uZyByZXN1bHQ7Cn07CgoKc3RydWN0IGNvZGFfcm9vdF9vdXQgewog
ICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBj
b2RhX3Jvb3RfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGluOwp9OwoKCnN0cnVjdCBjb2Rh
X29wZW5faW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwog
ICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFfb3Blbl9vdXQgewogICAgc3RydWN0IGNvZGFf
b3V0X2hkciBvaDsKICAgIHVfcXVhZF90IGRldjsKICAgIGlub190IGlub2RlOwp9OwoKCgpzdHJ1
Y3QgY29kYV9zdG9yZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlk
IFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9zdG9yZV9vdXQgewogICAgc3Ry
dWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfcmVsZWFzZV9pbiB7CiAgICBz
dHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07
CgpzdHJ1Y3QgY29kYV9yZWxlYXNlX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsK
fTsKCgpzdHJ1Y3QgY29kYV9jbG9zZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAg
ICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9jbG9zZV9vdXQg
ewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfaW9jdGxfaW4g
ewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGNt
ZDsKICAgIGludCBsZW47CiAgICBpbnQgcndmbGFnOwogICAgY2hhciAqZGF0YTsKfTsKCnN0cnVj
dCBjb2RhX2lvY3RsX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgaW50IGxl
bjsKICAgIGNhZGRyX3QgZGF0YTsKfTsKCgoKc3RydWN0IGNvZGFfZ2V0YXR0cl9pbiB7CiAgICBz
dHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7Cn07CgpzdHJ1Y3QgY29kYV9n
ZXRhdHRyX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgc3RydWN0IGNvZGFf
dmF0dHIgYXR0cjsKfTsKCgoKc3RydWN0IGNvZGFfc2V0YXR0cl9pbiB7CiAgICBzdHJ1Y3QgY29k
YV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRy
Owp9OwoKc3RydWN0IGNvZGFfc2V0YXR0cl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBv
dXQ7Cn07CgoKc3RydWN0IGNvZGFfYWNjZXNzX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBp
aDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBmbGFnczsKfTsKCnN0cnVjdCBjb2RhX2FjY2Vz
c19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKCgoKCgpzdHJ1Y3QgY29k
YV9sb29rdXBfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlk
OwogICAgaW50IG5hbWU7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9sb29rdXBfb3V0
IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQg
dnR5cGU7Cn07CgoKCnN0cnVjdCBjb2RhX2NyZWF0ZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9o
ZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwogICAg
aW50IGV4Y2w7CiAgICBpbnQgbW9kZTsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfY3Jl
YXRlX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBWRmlkOwog
ICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKfTsKCgoKc3RydWN0IGNvZGFfcmVtb3ZlX2luIHsK
ICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBuYW1l
Owp9OwoKc3RydWN0IGNvZGFfcmVtb3ZlX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91
dDsKfTsKCgpzdHJ1Y3QgY29kYV9saW5rX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsK
ICAgIFZpY2VGaWQgc291cmNlRmlkOwogICAgVmljZUZpZCBkZXN0RmlkOwogICAgaW50IHRuYW1l
Owp9OwoKc3RydWN0IGNvZGFfbGlua19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7
Cn07CgoKCnN0cnVjdCBjb2RhX3JlbmFtZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7
CiAgICBWaWNlRmlkIHNvdXJjZUZpZDsKICAgIGludCBzcmNuYW1lOwogICAgVmljZUZpZCBkZXN0
RmlkOwogICAgaW50IGRlc3RuYW1lOwp9OwoKc3RydWN0IGNvZGFfcmVuYW1lX291dCB7CiAgICBz
dHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV9ta2Rpcl9pbiB7CiAgICBz
dHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92
YXR0ciBhdHRyOwogICAgaW50IG5hbWU7Cn07CgpzdHJ1Y3QgY29kYV9ta2Rpcl9vdXQgewogICAg
c3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIHN0cnVjdCBjb2Rh
X3ZhdHRyIGF0dHI7Cn07CgoKCnN0cnVjdCBjb2RhX3JtZGlyX2luIHsKICAgIHN0cnVjdCBjb2Rh
X2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNv
ZGFfcm1kaXJfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoKCnN0cnVjdCBj
b2RhX3N5bWxpbmtfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBW
RmlkOwogICAgaW50IHNyY25hbWU7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50
IHRuYW1lOwp9OwoKc3RydWN0IGNvZGFfc3ltbGlua19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0
X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfcmVhZGxpbmtfaW4gewogICAgc3RydWN0IGNvZGFf
aW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwp9OwoKc3RydWN0IGNvZGFfcmVhZGxpbmtfb3V0
IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBpbnQgY291bnQ7CiAgICBjYWRkcl90
IGRhdGE7Cn07CgoKCnN0cnVjdCBjb2RhX2ZzeW5jX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hk
ciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX2ZzeW5jX291dCB7CiAgICBz
dHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV92Z2V0X2luIHsKICAgIHN0
cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX3Zn
ZXRfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAg
ICBpbnQgdnR5cGU7Cn07CiMgNjE2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvZGEu
aCIKc3RydWN0IGNvZGFfcHVyZ2V1c2VyX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9o
OwogICAgc3RydWN0IGNvZGFfY3JlZCBjcmVkOwp9OwoKCgpzdHJ1Y3QgY29kYV96YXBmaWxlX291
dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBDb2RhRmlkOwp9OwoK
CgpzdHJ1Y3QgY29kYV96YXBkaXJfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAg
ICBWaWNlRmlkIENvZGFGaWQ7Cn07CgoKCnN0cnVjdCBjb2RhX3phcHZub2RlX291dCB7CiAgICBz
dHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgc3RydWN0IGNvZGFfY3JlZCBjcmVkOwogICAgVmlj
ZUZpZCBWRmlkOwp9OwoKCgpzdHJ1Y3QgY29kYV9wdXJnZWZpZF9vdXQgewogICAgc3RydWN0IGNv
ZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgQ29kYUZpZDsKfTsKCgoKc3RydWN0IGNvZGFfcmVw
bGFjZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgTmV3Rmlk
OwogICAgVmljZUZpZCBPbGRGaWQ7Cn07CgoKc3RydWN0IGNvZGFfb3Blbl9ieV9mZF9pbiB7CiAg
ICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7
Cn07CgpzdHJ1Y3QgY29kYV9vcGVuX2J5X2ZkX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRy
IG9oOwogICAgaW50IGZkOwoKCiAgICBzdHJ1Y3QgZmlsZSAqZmg7Cgp9OwoKCnN0cnVjdCBjb2Rh
X29wZW5fYnlfcGF0aF9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlk
IFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9vcGVuX2J5X3BhdGhfb3V0IHsK
ICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICAgICAgaW50IHBhdGg7Cn07CgoKc3RydWN0
IGNvZGFfc3RhdGZzX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpbjsKfTsKCnN0cnVjdCBj
b2RhX3N0YXRmc19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIHN0cnVjdCBj
b2RhX3N0YXRmcyBzdGF0Owp9OwojIDcwMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9j
b2RhLmgiCnVuaW9uIGlucHV0QXJncyB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBz
dHJ1Y3QgY29kYV9vcGVuX2luIGNvZGFfb3BlbjsKICAgIHN0cnVjdCBjb2RhX3N0b3JlX2luIGNv
ZGFfc3RvcmU7CiAgICBzdHJ1Y3QgY29kYV9yZWxlYXNlX2luIGNvZGFfcmVsZWFzZTsKICAgIHN0
cnVjdCBjb2RhX2Nsb3NlX2luIGNvZGFfY2xvc2U7CiAgICBzdHJ1Y3QgY29kYV9pb2N0bF9pbiBj
b2RhX2lvY3RsOwogICAgc3RydWN0IGNvZGFfZ2V0YXR0cl9pbiBjb2RhX2dldGF0dHI7CiAgICBz
dHJ1Y3QgY29kYV9zZXRhdHRyX2luIGNvZGFfc2V0YXR0cjsKICAgIHN0cnVjdCBjb2RhX2FjY2Vz
c19pbiBjb2RhX2FjY2VzczsKICAgIHN0cnVjdCBjb2RhX2xvb2t1cF9pbiBjb2RhX2xvb2t1cDsK
ICAgIHN0cnVjdCBjb2RhX2NyZWF0ZV9pbiBjb2RhX2NyZWF0ZTsKICAgIHN0cnVjdCBjb2RhX3Jl
bW92ZV9pbiBjb2RhX3JlbW92ZTsKICAgIHN0cnVjdCBjb2RhX2xpbmtfaW4gY29kYV9saW5rOwog
ICAgc3RydWN0IGNvZGFfcmVuYW1lX2luIGNvZGFfcmVuYW1lOwogICAgc3RydWN0IGNvZGFfbWtk
aXJfaW4gY29kYV9ta2RpcjsKICAgIHN0cnVjdCBjb2RhX3JtZGlyX2luIGNvZGFfcm1kaXI7CiAg
ICBzdHJ1Y3QgY29kYV9zeW1saW5rX2luIGNvZGFfc3ltbGluazsKICAgIHN0cnVjdCBjb2RhX3Jl
YWRsaW5rX2luIGNvZGFfcmVhZGxpbms7CiAgICBzdHJ1Y3QgY29kYV9mc3luY19pbiBjb2RhX2Zz
eW5jOwogICAgc3RydWN0IGNvZGFfdmdldF9pbiBjb2RhX3ZnZXQ7CiAgICBzdHJ1Y3QgY29kYV9v
cGVuX2J5X2ZkX2luIGNvZGFfb3Blbl9ieV9mZDsKICAgIHN0cnVjdCBjb2RhX29wZW5fYnlfcGF0
aF9pbiBjb2RhX29wZW5fYnlfcGF0aDsKICAgIHN0cnVjdCBjb2RhX3N0YXRmc19pbiBjb2RhX3N0
YXRmczsKfTsKCnVuaW9uIG91dHB1dEFyZ3MgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsK
ICAgIHN0cnVjdCBjb2RhX3Jvb3Rfb3V0IGNvZGFfcm9vdDsKICAgIHN0cnVjdCBjb2RhX29wZW5f
b3V0IGNvZGFfb3BlbjsKICAgIHN0cnVjdCBjb2RhX2lvY3RsX291dCBjb2RhX2lvY3RsOwogICAg
c3RydWN0IGNvZGFfZ2V0YXR0cl9vdXQgY29kYV9nZXRhdHRyOwogICAgc3RydWN0IGNvZGFfbG9v
a3VwX291dCBjb2RhX2xvb2t1cDsKICAgIHN0cnVjdCBjb2RhX2NyZWF0ZV9vdXQgY29kYV9jcmVh
dGU7CiAgICBzdHJ1Y3QgY29kYV9ta2Rpcl9vdXQgY29kYV9ta2RpcjsKICAgIHN0cnVjdCBjb2Rh
X3JlYWRsaW5rX291dCBjb2RhX3JlYWRsaW5rOwogICAgc3RydWN0IGNvZGFfdmdldF9vdXQgY29k
YV92Z2V0OwogICAgc3RydWN0IGNvZGFfcHVyZ2V1c2VyX291dCBjb2RhX3B1cmdldXNlcjsKICAg
IHN0cnVjdCBjb2RhX3phcGZpbGVfb3V0IGNvZGFfemFwZmlsZTsKICAgIHN0cnVjdCBjb2RhX3ph
cGRpcl9vdXQgY29kYV96YXBkaXI7CiAgICBzdHJ1Y3QgY29kYV96YXB2bm9kZV9vdXQgY29kYV96
YXB2bm9kZTsKICAgIHN0cnVjdCBjb2RhX3B1cmdlZmlkX291dCBjb2RhX3B1cmdlZmlkOwogICAg
c3RydWN0IGNvZGFfcmVwbGFjZV9vdXQgY29kYV9yZXBsYWNlOwogICAgc3RydWN0IGNvZGFfb3Bl
bl9ieV9mZF9vdXQgY29kYV9vcGVuX2J5X2ZkOwogICAgc3RydWN0IGNvZGFfb3Blbl9ieV9wYXRo
X291dCBjb2RhX29wZW5fYnlfcGF0aDsKICAgIHN0cnVjdCBjb2RhX3N0YXRmc19vdXQgY29kYV9z
dGF0ZnM7Cn07Cgp1bmlvbiBjb2RhX2Rvd25jYWxscyB7CgoKICAgIHN0cnVjdCBjb2RhX3B1cmdl
dXNlcl9vdXQgcHVyZ2V1c2VyOwogICAgc3RydWN0IGNvZGFfemFwZmlsZV9vdXQgemFwZmlsZTsK
ICAgIHN0cnVjdCBjb2RhX3phcGRpcl9vdXQgemFwZGlyOwogICAgc3RydWN0IGNvZGFfemFwdm5v
ZGVfb3V0IHphcHZub2RlOwogICAgc3RydWN0IGNvZGFfcHVyZ2VmaWRfb3V0IHB1cmdlZmlkOwog
ICAgc3RydWN0IGNvZGFfcmVwbGFjZV9vdXQgcmVwbGFjZTsKfTsKCgoKCgoKCnN0cnVjdCBWaWNl
SW9jdGwgewogICAgICAgIGNhZGRyX3QgaW4sIG91dDsKICAgICAgICBzaG9ydCBpbl9zaXplOwog
ICAgICAgIHNob3J0IG91dF9zaXplOwp9OwoKc3RydWN0IFBpb2N0bERhdGEgewogICAgICAgIGNv
bnN0IGNoYXIgKnBhdGg7CiAgICAgICAgaW50IGZvbGxvdzsKICAgICAgICBzdHJ1Y3QgVmljZUlv
Y3RsIHZpOwp9OwojIDc5NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb2RhLmgiCnN0
cnVjdCBjb2RhX21vdW50X2RhdGEgewogICAgICAgIGludCB2ZXJzaW9uOwogICAgICAgIGludCBm
ZDsKfTsKIyAxNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb2RhX2ZzX2kuaCIgMgoK
CgoKc3RydWN0IGNvZGFfaW5vZGVfaW5mbyB7CiAgICAgICAgc3RydWN0IFZpY2VGaWQgY19maWQ7
CiAgICAgICAgdV9zaG9ydCBjX2ZsYWdzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgY19jaWxp
c3Q7CiAgICAgICAgc3RydWN0IGZpbGUgKmNfY29udGFpbmVyOwogICAgICAgIHVuc2lnbmVkIGlu
dCBjX2NvbnRjb3VudDsKICAgICAgICBzdHJ1Y3QgY29kYV9jcmVkIGNfY2FjaGVkX2NyZWQ7CiAg
ICAgICAgdW5zaWduZWQgaW50IGNfY2FjaGVkX3Blcm07Cn07CgoKCgoKCgppbnQgY29kYV9jbm9k
ZV9tYWtlKHN0cnVjdCBpbm9kZSAqKiwgc3RydWN0IFZpY2VGaWQgKiwgc3RydWN0IHN1cGVyX2Js
b2NrICopOwppbnQgY29kYV9jbm9kZV9tYWtlY3RsKHN0cnVjdCBpbm9kZSAqKmlub2RlLCBzdHJ1
Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKc3RydWN0IGlub2RlICpjb2RhX2ZpZF90b19pbm9kZShWaWNl
RmlkICpmaWQsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwp2b2lkIGNvZGFfcmVwbGFjZV9maWQo
c3RydWN0IGlub2RlICosIFZpY2VGaWQgKiwgVmljZUZpZCAqKTsKIyAzMDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvcm9tZnNfZnNfaS5oIiAxCgoKCgoKc3RydWN0IHJvbWZzX2lub2RlX2luZm8gewogICAgICAg
IHVuc2lnbmVkIGxvbmcgaV9tZXRhc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGlfZGF0YW9m
ZnNldDsKfTsKIyAzMDIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2htZW1fZnMuaCIgMQojIDE2ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3NobWVtX2ZzLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHZhbDsKfSBzd3BfZW50cnlfdDsKCmV4dGVybiBhdG9taWNfdCBzaG1l
bV9ucnBhZ2VzOwoKc3RydWN0IHNobWVtX2lub2RlX2luZm8gewogICAgICAgIHNwaW5sb2NrX3Qg
bG9jazsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKICAgICAgICB1bnNpZ25lZCBsb25n
IG5leHRfaW5kZXg7CiAgICAgICAgc3dwX2VudHJ5X3QgaV9kaXJlY3RbMTZdOwogICAgICAgIHZv
aWQgKippX2luZGlyZWN0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3dhcHBlZDsKICAgICAgICBp
bnQgbG9ja2VkOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKICAgICAgICBzdHJ1Y3Qg
aW5vZGUgKmlub2RlOwp9OwoKc3RydWN0IHNobWVtX3NiX2luZm8gewogICAgICAgIHVuc2lnbmVk
IGxvbmcgbWF4X2Jsb2NrczsKICAgICAgICB1bnNpZ25lZCBsb25nIGZyZWVfYmxvY2tzOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgbWF4X2lub2RlczsKICAgICAgICB1bnNpZ25lZCBsb25nIGZyZWVf
aW5vZGVzOwogICAgICAgIHNwaW5sb2NrX3Qgc3RhdF9sb2NrOwp9OwojIDMwMyAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9zbWJfZnNfaS5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc21i
X2ZzX2kuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAx
NCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zbWJfZnNfaS5oIiAyCgoKCgpzdHJ1Y3Qg
c21iX2lub2RlX2luZm8gewoKCgoKCiAgICAgICAgdW5zaWduZWQgaW50IG9wZW47CiAgICAgICAg
X191MTYgZmlsZWlkOwogICAgICAgIF9fdTE2IGF0dHI7CgogICAgICAgIF9fdTE2IGFjY2VzczsK
ICAgICAgICBfX3UxNiBmbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIG9sZG10aW1lOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgY2xvc2VkOwogICAgICAgIHVuc2lnbmVkIG9wZW5lcnM7Cn07CiMg
MzA0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L2hmc19mc19pLmgiIDEKIyAxOSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9oZnNfZnNfaS5oIgpzdHJ1Y3QgaGZzX2lub2RlX2luZm8gewogICAgICAgIGlu
dCBtYWdpYzsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBtbXVfcHJpdmF0ZTsKICAgICAgICBzdHJ1
Y3QgaGZzX2NhdF9lbnRyeSAqZW50cnk7CgoKICAgICAgICBzdHJ1Y3QgaGZzX2ZvcmsgKmZvcms7
CiAgICAgICAgaW50IGNvbnZlcnQ7CgoKICAgICAgICBpbm9fdCBmaWxlX3R5cGU7CiAgICAgICAg
Y2hhciBkaXJfc2l6ZTsKCgogICAgICAgIGNvbnN0IHN0cnVjdCBoZnNfaGRyX2xheW91dCAqZGVm
YXVsdF9sYXlvdXQ7CiAgICAgICAgc3RydWN0IGhmc19oZHJfbGF5b3V0ICpsYXlvdXQ7CgoKICAg
ICAgICBpbnQgdHpfc2Vjb25kc3dlc3Q7CgoKICAgICAgICB2b2lkICgqZF9kcm9wX29wKShzdHJ1
Y3QgZGVudHJ5ICosIGNvbnN0IGlub190KTsKfTsKIyAzMDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvYWRmc19m
c19pLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9hZGZzX2ZzX2kuaCIK
c3RydWN0IGFkZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtbXVfcHJpdmF0
ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHBhcmVudF9pZDsKICAgICAgICBfX3UzMiBsb2FkYWRk
cjsKICAgICAgICBfX3UzMiBleGVjYWRkcjsKICAgICAgICB1bnNpZ25lZCBpbnQgZmlsZXR5cGU7
CiAgICAgICAgdW5zaWduZWQgaW50IGF0dHI7CiAgICAgICAgaW50IHN0YW1wZWQ6MTsKfTsKIyAz
MDYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvcW54NF9mc19pLmgiIDEKIyAxNCAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9xbng0X2ZzX2kuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3FueHR5cGVzLmgiIDEKIyAxNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9xbnh0eXBl
cy5oIgp0eXBlZGVmIF9fdTE2IHFueDRfbnh0bnRfdDsKdHlwZWRlZiBfX3U4IHFueDRfZnR5cGVf
dDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBfX3UzMiB4dG50X2JsazsKICAgICAgICBfX3Uz
MiB4dG50X3NpemU7Cn0gcW54NF94dG50X3Q7Cgp0eXBlZGVmIF9fdTE2IHFueDRfbW9kZV90Owp0
eXBlZGVmIF9fdTE2IHFueDRfbXVpZF90Owp0eXBlZGVmIF9fdTE2IHFueDRfbWdpZF90Owp0eXBl
ZGVmIF9fdTMyIHFueDRfb2ZmX3Q7CnR5cGVkZWYgX191MTYgcW54NF9ubGlua190OwojIDE1ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3FueDRfZnNfaS5oIiAyCgoKCgpzdHJ1Y3QgcW54
NF9pbm9kZV9pbmZvIHsKICAgICAgICBjaGFyIGlfcmVzZXJ2ZWRbMTZdOwogICAgICAgIHFueDRf
b2ZmX3QgaV9zaXplOwogICAgICAgIHFueDRfeHRudF90IGlfZmlyc3RfeHRudDsKICAgICAgICBf
X3UzMiBpX3hibGs7CiAgICAgICAgX19zMzIgaV9mdGltZTsKICAgICAgICBfX3MzMiBpX210aW1l
OwogICAgICAgIF9fczMyIGlfYXRpbWU7CiAgICAgICAgX19zMzIgaV9jdGltZTsKICAgICAgICBx
bng0X254dG50X3QgaV9udW1feHRudHM7CiAgICAgICAgcW54NF9tb2RlX3QgaV9tb2RlOwogICAg
ICAgIHFueDRfbXVpZF90IGlfdWlkOwogICAgICAgIHFueDRfbWdpZF90IGlfZ2lkOwogICAgICAg
IHFueDRfbmxpbmtfdCBpX25saW5rOwogICAgICAgIF9fdTggaV96ZXJvWzRdOwogICAgICAgIHFu
eDRfZnR5cGVfdCBpX3R5cGU7CiAgICAgICAgX191OCBpX3N0YXR1czsKICAgICAgICB1bnNpZ25l
ZCBsb25nIG1tdV9wcml2YXRlOwp9OwojIDMwNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9yZWlzZXJmc19mc19p
LmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQojIDUg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfaS5oIiAyCgpzdHJ1Y3Qg
cmVpc2VyZnNfaW5vZGVfaW5mbyB7CiAgX191MzIgaV9rZXkgWzRdOwoKCgoKCgogIGludCBpX3Zl
cnNpb247CgogIGludCBpX3BhY2tfb25fY2xvc2UgOwoKICBfX3UzMiBpX2ZpcnN0X2RpcmVjdF9i
eXRlOwojIDM1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzX2kuaCIK
ICBpbnQgaV9wcmVhbGxvY19ibG9jazsKICBpbnQgaV9wcmVhbGxvY19jb3VudDsKICBzdHJ1Y3Qg
bGlzdF9oZWFkIGlfcHJlYWxsb2NfbGlzdDsKCgoKCiAgaW50IG5vcGFjazsKCgoKCiAgdW5zaWdu
ZWQgbG9uZyBpX3RyYW5zX2lkIDsKICB1bnNpZ25lZCBsb25nIGlfdHJhbnNfaW5kZXggOwp9Owoj
IDMwOCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9iZnNfZnNfaS5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvYmZzX2ZzX2kuaCIKc3RydWN0IGJmc19pbm9kZV9pbmZvIHsKICAgICAgICB1
bnNpZ25lZCBsb25nIGlfZHNrX2lubzsKICAgICAgICB1bnNpZ25lZCBsb25nIGlfc2Jsb2NrOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgaV9lYmxvY2s7Cn07CiMgMzA5ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Vk
Zl9mc19pLmgiIDEKIyAyNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC91ZGZfZnNfaS5o
Igp0eXBlZGVmIHN0cnVjdAp7CiAgICAgICAgX191MzIgbG9naWNhbEJsb2NrTnVtOwogICAgICAg
IF9fdTE2IHBhcnRpdGlvblJlZmVyZW5jZU51bTsKfSBsYl9hZGRyOwoKCnN0cnVjdCB1ZGZfaW5v
ZGVfaW5mbwp7CiAgICAgICAgbG9uZyBpX3VtdGltZTsKICAgICAgICBsb25nIGlfdWN0aW1lOwog
ICAgICAgIGxvbmcgaV9jcnRpbWU7CiAgICAgICAgbG9uZyBpX3VjcnRpbWU7CgogICAgICAgIGxi
X2FkZHIgaV9sb2NhdGlvbjsKICAgICAgICBfX3U2NCBpX3VuaXF1ZTsKICAgICAgICBfX3UzMiBp
X2xlbkVBdHRyOwogICAgICAgIF9fdTMyIGlfbGVuQWxsb2M7CiAgICAgICAgX191NjQgaV9sZW5F
eHRlbnRzOwogICAgICAgIF9fdTMyIGlfbmV4dF9hbGxvY19ibG9jazsKICAgICAgICBfX3UzMiBp
X25leHRfYWxsb2NfZ29hbDsKICAgICAgICB1bnNpZ25lZCBpX2FsbG9jX3R5cGUgOiAzOwogICAg
ICAgIHVuc2lnbmVkIGlfZXh0ZW5kZWRfZmUgOiAxOwogICAgICAgIHVuc2lnbmVkIGlfc3RyYXRf
NDA5NiA6IDE7CiAgICAgICAgdW5zaWduZWQgaV9uZXdfaW5vZGUgOiAxOwogICAgICAgIHVuc2ln
bmVkIHJlc2VydmVkIDogMjY7Cn07CiMgMzEwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25jcF9mc19pLmgiIDEK
IyAxNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uY3BfZnNfaS5oIgpzdHJ1Y3QgbmNw
X2lub2RlX2luZm8gewogICAgICAgIF9fdTMyIGRpckVudE51bSBfX2F0dHJpYnV0ZV9fKChwYWNr
ZWQpKTsKICAgICAgICBfX3UzMiBEb3NEaXJOdW0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAg
ICAgICAgX191MzIgdm9sTnVtYmVyIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9f
dTMyIG53YXR0cjsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIG9wZW5fc2VtOwogICAgICAgIGF0
b21pY190IG9wZW5lZDsKICAgICAgICBpbnQgYWNjZXNzOwogICAgICAgIF9fdTMyIHNlcnZlcl9m
aWxlX2hhbmRsZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IG9wZW5fY3Jl
YXRlX2FjdGlvbiBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGZpbGVfaGFu
ZGxlWzZdIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwp9OwojIDMxMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9w
cm9jX2ZzX2kuaCIgMQpzdHJ1Y3QgcHJvY19pbm9kZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgdGFz
a19zdHJ1Y3QgKnRhc2s7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5pb24gewogICAgICAg
ICAgICAgICAgaW50ICgqcHJvY19nZXRfbGluaykoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50
cnkgKiosIHN0cnVjdCB2ZnNtb3VudCAqKik7CiAgICAgICAgICAgICAgICBpbnQgKCpwcm9jX3Jl
YWQpKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgY2hhciAqcGFnZSk7CiAgICAgICAgfSBvcDsK
ICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZTsKfTsKIyAzMTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdXNiZGV2
X2ZzX2kuaCIgMQpzdHJ1Y3QgdXNiX2RldmljZTsKc3RydWN0IHVzYl9idXM7CgpzdHJ1Y3QgdXNi
ZGV2X2lub2RlX2luZm8gewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZGxpc3Q7CiAgICAgICAg
c3RydWN0IGxpc3RfaGVhZCBzbGlzdDsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBz
dHJ1Y3QgdXNiX2RldmljZSAqZGV2OwogICAgICAgICAgICAgICAgc3RydWN0IHVzYl9idXMgKmJ1
czsKICAgICAgICB9IHA7Cn07CiMgMzEzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Zz
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX2kuaCIgMQoj
IDE2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX2kuaCIKc3RydWN0IGpm
ZnMyX2lub2RlX2luZm8gewojIDI2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2pmZnMy
X2ZzX2kuaCIKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKCgogICAgICAgIF9fdTMyIGhp
Z2hlc3RfdmVyc2lvbjsKCgogICAgICAgIHN0cnVjdCBqZmZzMl9ub2RlX2ZyYWcgKmZyYWdsaXN0
OwoKCgoKCgogICAgICAgIHN0cnVjdCBqZmZzMl9mdWxsX2Rub2RlICptZXRhZGF0YTsKCgogICAg
ICAgIHN0cnVjdCBqZmZzMl9mdWxsX2RpcmVudCAqZGVudHM7CgoKICAgICAgICBzdHJ1Y3QgamZm
czJfaW5vZGVfY2FjaGUgKmlub2NhY2hlOwoKCgoKCiAgICAgICAgX191MTYgZmxhZ3M7CiAgICAg
ICAgX191OCB1c2VyY29tcHI7Cn07CiMgMzE0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NyYW1mc19mc19zYi5o
IiAxCgoKCgoKCnN0cnVjdCBjcmFtZnNfc2JfaW5mbyB7CiAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxvbmcgbWFnaWM7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv
bmcgc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBibG9ja3M7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmlsZXM7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cn07CiMgMzE1ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAzNDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
ZnMuaCIKc3RydWN0IGlhdHRyIHsKICAgICAgICB1bnNpZ25lZCBpbnQgaWFfdmFsaWQ7CiAgICAg
ICAgdW1vZGVfdCBpYV9tb2RlOwogICAgICAgIHVpZF90IGlhX3VpZDsKICAgICAgICBnaWRfdCBp
YV9naWQ7CiAgICAgICAgbG9mZl90IGlhX3NpemU7CiAgICAgICAgdGltZV90IGlhX2F0aW1lOwog
ICAgICAgIHRpbWVfdCBpYV9tdGltZTsKICAgICAgICB0aW1lX3QgaWFfY3RpbWU7CiAgICAgICAg
dW5zaWduZWQgaW50IGlhX2F0dHJfZmxhZ3M7Cn07CiMgMzY1ICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2ZzLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9xdW90YS5o
IiAxCiMgNDIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcXVvdGEuaCIKIyAxICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDEKIyA0MyAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9xdW90YS5oIiAyCiMgMTA5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L3F1b3RhLmgiCnN0cnVjdCBkcWJsayB7CiAgICAgICAgX191MzIgZHFiX2JoYXJkbGltaXQ7
CiAgICAgICAgX191MzIgZHFiX2Jzb2Z0bGltaXQ7CiAgICAgICAgX191MzIgZHFiX2N1cmJsb2Nr
czsKICAgICAgICBfX3UzMiBkcWJfaWhhcmRsaW1pdDsKICAgICAgICBfX3UzMiBkcWJfaXNvZnRs
aW1pdDsKICAgICAgICBfX3UzMiBkcWJfY3VyaW5vZGVzOwogICAgICAgIHRpbWVfdCBkcWJfYnRp
bWU7CiAgICAgICAgdGltZV90IGRxYl9pdGltZTsKfTsKIyAxMzQgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvcXVvdGEuaCIKc3RydWN0IGRxc3RhdHMgewogICAgICAgIF9fdTMyIGxvb2t1
cHM7CiAgICAgICAgX191MzIgZHJvcHM7CiAgICAgICAgX191MzIgcmVhZHM7CiAgICAgICAgX191
MzIgd3JpdGVzOwogICAgICAgIF9fdTMyIGNhY2hlX2hpdHM7CiAgICAgICAgX191MzIgYWxsb2Nh
dGVkX2RxdW90czsKICAgICAgICBfX3UzMiBmcmVlX2RxdW90czsKICAgICAgICBfX3UzMiBzeW5j
czsKfTsKCgoKZXh0ZXJuIGludCBucl9kcXVvdHMsIG5yX2ZyZWVfZHF1b3RzOwpleHRlcm4gaW50
IGRxdW90X3Jvb3Rfc3F1YXNoOwojIDE1OCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9x
dW90YS5oIgpzdHJ1Y3QgZHF1b3QgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZHFfaGFzaDsK
ICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRxX2ludXNlOwogICAgICAgIHN0cnVjdCBsaXN0X2hl
YWQgZHFfZnJlZTsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBkcV93YWl0X2xvY2s7CiAgICAg
ICAgd2FpdF9xdWV1ZV9oZWFkX3QgZHFfd2FpdF9mcmVlOwogICAgICAgIGludCBkcV9jb3VudDsK
CgogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqZHFfc2I7CiAgICAgICAgdW5zaWduZWQgaW50
IGRxX2lkOwogICAgICAgIGtkZXZfdCBkcV9kZXY7CiAgICAgICAgc2hvcnQgZHFfdHlwZTsKICAg
ICAgICBzaG9ydCBkcV9mbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIGRxX3JlZmVyZW5jZWQ7
CgogICAgICAgIHN0cnVjdCBkcWJsayBkcV9kcWI7Cn07CiMgMzY2ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21v
dW50LmgiIDEKIyAzNjcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgoKCgoK
c3RydWN0IHBhZ2U7CnN0cnVjdCBhZGRyZXNzX3NwYWNlOwpzdHJ1Y3Qga2lvYnVmOwoKc3RydWN0
IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyB7CiAgICAgICAgaW50ICgqd3JpdGVwYWdlKShzdHJ1
Y3QgcGFnZSAqKTsKICAgICAgICBpbnQgKCpyZWFkcGFnZSkoc3RydWN0IGZpbGUgKiwgc3RydWN0
IHBhZ2UgKik7CiAgICAgICAgaW50ICgqc3luY19wYWdlKShzdHJ1Y3QgcGFnZSAqKTsKICAgICAg
ICBpbnQgKCpwcmVwYXJlX3dyaXRlKShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgcGFnZSAqLCB1bnNp
Z25lZCwgdW5zaWduZWQpOwogICAgICAgIGludCAoKmNvbW1pdF93cml0ZSkoc3RydWN0IGZpbGUg
Kiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKCiAgICAgICAgaW50ICgqYm1h
cCkoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwgbG9uZyk7CgogICAgICAgIGludCAoKmRpcmVjdF9J
TykoaW50LCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGtpb2J1ZiAqLCB1bnNpZ25lZCBsb25nLCBp
bnQpOwp9OwoKc3RydWN0IGFkZHJlc3Nfc3BhY2UgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg
Y2xlYW5fcGFnZXM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkaXJ0eV9wYWdlczsKICAgICAg
ICBzdHJ1Y3QgbGlzdF9oZWFkIGxvY2tlZF9wYWdlczsKICAgICAgICB1bnNpZ25lZCBsb25nIG5y
cGFnZXM7CiAgICAgICAgc3RydWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyAqYV9vcHM7CiAg
ICAgICAgc3RydWN0IGlub2RlICpob3N0OwogICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq
aV9tbWFwOwogICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqaV9tbWFwX3NoYXJlZDsKICAg
ICAgICBzcGlubG9ja190IGlfc2hhcmVkX2xvY2s7CiAgICAgICAgaW50IGdmcF9tYXNrOwp9OwoK
c3RydWN0IGNoYXJfZGV2aWNlIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGhhc2g7CiAgICAg
ICAgYXRvbWljX3QgY291bnQ7CiAgICAgICAgZGV2X3QgZGV2OwogICAgICAgIGF0b21pY190IG9w
ZW5lcnM7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBzZW07Cn07CgpzdHJ1Y3QgYmxvY2tfZGV2
aWNlIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGJkX2hhc2g7CiAgICAgICAgYXRvbWljX3Qg
YmRfY291bnQ7CiAgICAgICAgc3RydWN0IGlub2RlICogYmRfaW5vZGU7CiAgICAgICAgZGV2X3Qg
YmRfZGV2OwogICAgICAgIGludCBiZF9vcGVuZXJzOwogICAgICAgIGNvbnN0IHN0cnVjdCBibG9j
a19kZXZpY2Vfb3BlcmF0aW9ucyAqYmRfb3A7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBiZF9z
ZW07CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBiZF9pbm9kZXM7Cn07CgpzdHJ1Y3QgaW5vZGUg
ewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaV9oYXNoOwogICAgICAgIHN0cnVjdCBsaXN0X2hl
YWQgaV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaV9kZW50cnk7CgogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgaV9kaXJ0eV9idWZmZXJzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg
aV9kaXJ0eV9kYXRhX2J1ZmZlcnM7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9pbm87CiAgICAg
ICAgYXRvbWljX3QgaV9jb3VudDsKICAgICAgICBrZGV2X3QgaV9kZXY7CiAgICAgICAgdW1vZGVf
dCBpX21vZGU7CiAgICAgICAgbmxpbmtfdCBpX25saW5rOwogICAgICAgIHVpZF90IGlfdWlkOwog
ICAgICAgIGdpZF90IGlfZ2lkOwogICAgICAgIGtkZXZfdCBpX3JkZXY7CiAgICAgICAgbG9mZl90
IGlfc2l6ZTsKICAgICAgICB0aW1lX3QgaV9hdGltZTsKICAgICAgICB0aW1lX3QgaV9tdGltZTsK
ICAgICAgICB0aW1lX3QgaV9jdGltZTsKICAgICAgICB1bnNpZ25lZCBpbnQgaV9ibGtiaXRzOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgaV9ibGtzaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9i
bG9ja3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX3ZlcnNpb247CiAgICAgICAgc3RydWN0IHNl
bWFwaG9yZSBpX3NlbTsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGlfem9tYmllOwogICAgICAg
IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zICppX29wOwogICAgICAgIHN0cnVjdCBmaWxlX29wZXJh
dGlvbnMgKmlfZm9wOwogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqaV9zYjsKICAgICAgICB3
YWl0X3F1ZXVlX2hlYWRfdCBpX3dhaXQ7CiAgICAgICAgc3RydWN0IGZpbGVfbG9jayAqaV9mbG9j
azsKICAgICAgICBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqaV9tYXBwaW5nOwogICAgICAgIHN0cnVj
dCBhZGRyZXNzX3NwYWNlIGlfZGF0YTsKICAgICAgICBzdHJ1Y3QgZHF1b3QgKmlfZHF1b3RbMl07
CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaV9kZXZpY2VzOwogICAgICAgIHN0cnVjdCBwaXBl
X2lub2RlX2luZm8gKmlfcGlwZTsKICAgICAgICBzdHJ1Y3QgYmxvY2tfZGV2aWNlICppX2JkZXY7
CiAgICAgICAgc3RydWN0IGNoYXJfZGV2aWNlICppX2NkZXY7CgogICAgICAgIHVuc2lnbmVkIGxv
bmcgaV9kbm90aWZ5X21hc2s7CiAgICAgICAgc3RydWN0IGRub3RpZnlfc3RydWN0ICppX2Rub3Rp
Znk7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9zdGF0ZTsKCiAgICAgICAgdW5zaWduZWQgaW50
IGlfZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgY2hhciBpX3NvY2s7CgogICAgICAgIGF0b21pY190
IGlfd3JpdGVjb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgaV9hdHRyX2ZsYWdzOwogICAgICAg
IF9fdTMyIGlfZ2VuZXJhdGlvbjsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1
Y3QgbWluaXhfaW5vZGVfaW5mbyBtaW5peF9pOwogICAgICAgICAgICAgICAgc3RydWN0IGV4dDJf
aW5vZGVfaW5mbyBleHQyX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaHBmc19pbm9kZV9pbmZv
IGhwZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBudGZzX2lub2RlX2luZm8gbnRmc19pOwog
ICAgICAgICAgICAgICAgc3RydWN0IG1zZG9zX2lub2RlX2luZm8gbXNkb3NfaTsKICAgICAgICAg
ICAgICAgIHN0cnVjdCB1bXNkb3NfaW5vZGVfaW5mbyB1bXNkb3NfaTsKICAgICAgICAgICAgICAg
IHN0cnVjdCBpc29faW5vZGVfaW5mbyBpc29mc19pOwogICAgICAgICAgICAgICAgc3RydWN0IG5m
c19pbm9kZV9pbmZvIG5mc19pOwogICAgICAgICAgICAgICAgc3RydWN0IHN5c3ZfaW5vZGVfaW5m
byBzeXN2X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgYWZmc19pbm9kZV9pbmZvIGFmZnNfaTsK
ICAgICAgICAgICAgICAgIHN0cnVjdCB1ZnNfaW5vZGVfaW5mbyB1ZnNfaTsKICAgICAgICAgICAg
ICAgIHN0cnVjdCBlZnNfaW5vZGVfaW5mbyBlZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBy
b21mc19pbm9kZV9pbmZvIHJvbWZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2htZW1faW5v
ZGVfaW5mbyBzaG1lbV9pOwogICAgICAgICAgICAgICAgc3RydWN0IGNvZGFfaW5vZGVfaW5mbyBj
b2RhX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc21iX2lub2RlX2luZm8gc21iZnNfaTsKICAg
ICAgICAgICAgICAgIHN0cnVjdCBoZnNfaW5vZGVfaW5mbyBoZnNfaTsKICAgICAgICAgICAgICAg
IHN0cnVjdCBhZGZzX2lub2RlX2luZm8gYWRmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IHFu
eDRfaW5vZGVfaW5mbyBxbng0X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgcmVpc2VyZnNfaW5v
ZGVfaW5mbyByZWlzZXJmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IGJmc19pbm9kZV9pbmZv
IGJmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IHVkZl9pbm9kZV9pbmZvIHVkZl9pOwogICAg
ICAgICAgICAgICAgc3RydWN0IG5jcF9pbm9kZV9pbmZvIG5jcGZzX2k7CiAgICAgICAgICAgICAg
ICBzdHJ1Y3QgcHJvY19pbm9kZV9pbmZvIHByb2NfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBz
b2NrZXQgc29ja2V0X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdXNiZGV2X2lub2RlX2luZm8g
dXNiZGV2X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgamZmczJfaW5vZGVfaW5mbyBqZmZzMl9p
OwogICAgICAgICAgICAgICAgdm9pZCAqZ2VuZXJpY19pcDsKICAgICAgICB9IHU7Cn07CgpzdHJ1
Y3QgZm93bl9zdHJ1Y3QgewogICAgICAgIGludCBwaWQ7CiAgICAgICAgdWlkX3QgdWlkLCBldWlk
OwogICAgICAgIGludCBzaWdudW07Cn07CgpzdHJ1Y3QgZmlsZSB7CiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBmX2xpc3Q7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqZl9kZW50cnk7CiAgICAgICAg
c3RydWN0IHZmc21vdW50ICpmX3Zmc21udDsKICAgICAgICBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25z
ICpmX29wOwogICAgICAgIGF0b21pY190IGZfY291bnQ7CiAgICAgICAgdW5zaWduZWQgaW50IGZf
ZmxhZ3M7CiAgICAgICAgbW9kZV90IGZfbW9kZTsKICAgICAgICBsb2ZmX3QgZl9wb3M7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBmX3JlYWRhLCBmX3JhbWF4LCBmX3JhZW5kLCBmX3JhbGVuLCBmX3Jh
d2luOwogICAgICAgIHN0cnVjdCBmb3duX3N0cnVjdCBmX293bmVyOwogICAgICAgIHVuc2lnbmVk
IGludCBmX3VpZCwgZl9naWQ7CiAgICAgICAgaW50IGZfZXJyb3I7CgogICAgICAgIHVuc2lnbmVk
IGxvbmcgZl92ZXJzaW9uOwoKCiAgICAgICAgdm9pZCAqcHJpdmF0ZV9kYXRhOwoKCiAgICAgICAg
c3RydWN0IGtpb2J1ZiAqZl9pb2J1ZjsKICAgICAgICBsb25nIGZfaW9idWZfbG9jazsKfTsKZXh0
ZXJuIHNwaW5sb2NrX3QgZmlsZXNfbG9jazsKCgoKCgoKZXh0ZXJuIGludCBpbml0X3ByaXZhdGVf
ZmlsZShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCk7CiMgNTU2ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiCnR5cGVkZWYgc3RydWN0IGZpbGVzX3N0cnVjdCAq
Zmxfb3duZXJfdDsKCnN0cnVjdCBmaWxlX2xvY2sgewogICAgICAgIHN0cnVjdCBmaWxlX2xvY2sg
KmZsX25leHQ7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBmbF9saW5rOwogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgZmxfYmxvY2s7CiAgICAgICAgZmxfb3duZXJfdCBmbF9vd25lcjsKICAgICAg
ICB1bnNpZ25lZCBpbnQgZmxfcGlkOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IGZsX3dhaXQ7
CiAgICAgICAgc3RydWN0IGZpbGUgKmZsX2ZpbGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBmbF9m
bGFnczsKICAgICAgICB1bnNpZ25lZCBjaGFyIGZsX3R5cGU7CiAgICAgICAgbG9mZl90IGZsX3N0
YXJ0OwogICAgICAgIGxvZmZfdCBmbF9lbmQ7CgogICAgICAgIHZvaWQgKCpmbF9ub3RpZnkpKHN0
cnVjdCBmaWxlX2xvY2sgKik7CiAgICAgICAgdm9pZCAoKmZsX2luc2VydCkoc3RydWN0IGZpbGVf
bG9jayAqKTsKICAgICAgICB2b2lkICgqZmxfcmVtb3ZlKShzdHJ1Y3QgZmlsZV9sb2NrICopOwoK
ICAgICAgICBzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqIGZsX2Zhc3luYzsKCiAgICAgICAgdW5pb24g
ewogICAgICAgICAgICAgICAgc3RydWN0IG5mc19sb2NrX2luZm8gbmZzX2ZsOwogICAgICAgIH0g
ZmxfdTsKfTsKIyA1ODkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKZXh0ZXJu
IHN0cnVjdCBsaXN0X2hlYWQgZmlsZV9sb2NrX2xpc3Q7CgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvZmNudGwuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNt
L2ZjbnRsLmgiIDEKIyA2OSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vZmNudGwuaCIKc3Ry
dWN0IGZsb2NrIHsKICAgICAgICBzaG9ydCBsX3R5cGU7CiAgICAgICAgc2hvcnQgbF93aGVuY2U7
CiAgICAgICAgb2ZmX3QgbF9zdGFydDsKICAgICAgICBvZmZfdCBsX2xlbjsKICAgICAgICBwaWRf
dCBsX3BpZDsKfTsKCnN0cnVjdCBmbG9jazY0IHsKICAgICAgICBzaG9ydCBsX3R5cGU7CiAgICAg
ICAgc2hvcnQgbF93aGVuY2U7CiAgICAgICAgbG9mZl90IGxfc3RhcnQ7CiAgICAgICAgbG9mZl90
IGxfbGVuOwogICAgICAgIHBpZF90IGxfcGlkOwp9OwojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvZmNudGwuaCIgMgojIDU5MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9m
cy5oIiAyCgpleHRlcm4gaW50IGZjbnRsX2dldGxrKHVuc2lnbmVkIGludCwgc3RydWN0IGZsb2Nr
ICopOwpleHRlcm4gaW50IGZjbnRsX3NldGxrKHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50LCBz
dHJ1Y3QgZmxvY2sgKik7CgpleHRlcm4gaW50IGZjbnRsX2dldGxrNjQodW5zaWduZWQgaW50LCBz
dHJ1Y3QgZmxvY2s2NCAqKTsKZXh0ZXJuIGludCBmY250bF9zZXRsazY0KHVuc2lnbmVkIGludCwg
dW5zaWduZWQgaW50LCBzdHJ1Y3QgZmxvY2s2NCAqKTsKCgpleHRlcm4gdm9pZCBsb2Nrc19pbml0
X2xvY2soc3RydWN0IGZpbGVfbG9jayAqKTsKZXh0ZXJuIHZvaWQgbG9ja3NfY29weV9sb2NrKHN0
cnVjdCBmaWxlX2xvY2sgKiwgc3RydWN0IGZpbGVfbG9jayAqKTsKZXh0ZXJuIHZvaWQgbG9ja3Nf
cmVtb3ZlX3Bvc2l4KHN0cnVjdCBmaWxlICosIGZsX293bmVyX3QpOwpleHRlcm4gdm9pZCBsb2Nr
c19yZW1vdmVfZmxvY2soc3RydWN0IGZpbGUgKik7CmV4dGVybiBzdHJ1Y3QgZmlsZV9sb2NrICpw
b3NpeF90ZXN0X2xvY2soc3RydWN0IGZpbGUgKiwgc3RydWN0IGZpbGVfbG9jayAqKTsKZXh0ZXJu
IGludCBwb3NpeF9sb2NrX2ZpbGUoc3RydWN0IGZpbGUgKiwgc3RydWN0IGZpbGVfbG9jayAqLCB1
bnNpZ25lZCBpbnQpOwpleHRlcm4gdm9pZCBwb3NpeF9ibG9ja19sb2NrKHN0cnVjdCBmaWxlX2xv
Y2sgKiwgc3RydWN0IGZpbGVfbG9jayAqKTsKZXh0ZXJuIHZvaWQgcG9zaXhfdW5ibG9ja19sb2Nr
KHN0cnVjdCBmaWxlX2xvY2sgKik7CmV4dGVybiBpbnQgcG9zaXhfbG9ja3NfZGVhZGxvY2soc3Ry
dWN0IGZpbGVfbG9jayAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gaW50IF9fZ2V0X2xl
YXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGludCBmbGFncyk7CmV4dGVybiB0aW1l
X3QgbGVhc2VfZ2V0X210aW1lKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGludCBsb2NrX21heV9y
ZWFkKHN0cnVjdCBpbm9kZSAqLCBsb2ZmX3Qgc3RhcnQsIHVuc2lnbmVkIGxvbmcgY291bnQpOwpl
eHRlcm4gaW50IGxvY2tfbWF5X3dyaXRlKHN0cnVjdCBpbm9kZSAqLCBsb2ZmX3Qgc3RhcnQsIHVu
c2lnbmVkIGxvbmcgY291bnQpOwoKc3RydWN0IGZhc3luY19zdHJ1Y3QgewogICAgICAgIGludCBt
YWdpYzsKICAgICAgICBpbnQgZmFfZmQ7CiAgICAgICAgc3RydWN0IGZhc3luY19zdHJ1Y3QgKmZh
X25leHQ7CiAgICAgICAgc3RydWN0IGZpbGUgKmZhX2ZpbGU7Cn07CgoKCgpleHRlcm4gaW50IGZh
c3luY19oZWxwZXIoaW50LCBzdHJ1Y3QgZmlsZSAqLCBpbnQsIHN0cnVjdCBmYXN5bmNfc3RydWN0
ICoqKTsKCmV4dGVybiB2b2lkIGtpbGxfZmFzeW5jKHN0cnVjdCBmYXN5bmNfc3RydWN0ICoqLCBp
bnQsIGludCk7CgpleHRlcm4gdm9pZCBfX2tpbGxfZmFzeW5jKHN0cnVjdCBmYXN5bmNfc3RydWN0
ICosIGludCwgaW50KTsKCnN0cnVjdCBuYW1laWRhdGEgewogICAgICAgIHN0cnVjdCBkZW50cnkg
KmRlbnRyeTsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKm1udDsKICAgICAgICBzdHJ1Y3QgcXN0
ciBsYXN0OwogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKICAgICAgICBpbnQgbGFzdF90eXBl
Owp9OwoKCgoKc3RydWN0IHF1b3RhX21vdW50X29wdGlvbnMKewogICAgICAgIHVuc2lnbmVkIGlu
dCBmbGFnczsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGRxaW9fc2VtOwogICAgICAgIHN0cnVj
dCBzZW1hcGhvcmUgZHFvZmZfc2VtOwogICAgICAgIHN0cnVjdCBmaWxlICpmaWxlc1syXTsKICAg
ICAgICB0aW1lX3QgaW5vZGVfZXhwaXJlWzJdOwogICAgICAgIHRpbWVfdCBibG9ja19leHBpcmVb
Ml07CiAgICAgICAgY2hhciByc3F1YXNoWzJdOwp9OwojIDY1OSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9mcy5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbWluaXhf
ZnNfc2IuaCIgMQoKCgoKCgpzdHJ1Y3QgbWluaXhfc2JfaW5mbyB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGxvbmcgc19uaW5vZGVzOwogICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBsb25nIHNfbnpvbmVzOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBs
b25nIHNfaW1hcF9ibG9ja3M7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg
c196bWFwX2Jsb2NrczsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX2Zp
cnN0ZGF0YXpvbmU7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc19sb2df
em9uZV9zaXplOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNfbWF4X3Np
emU7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBzX2RpcnNpemU7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBzX25hbWVsZW47CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBzX2xp
bmtfbWF4OwogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiogc19p
bWFwOwogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiogc196bWFw
OwogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzX3NiaDsKICAg
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG1pbml4X3N1cGVyX2Jsb2NrICogc19tczsKICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgc19tb3VudF9zdGF0ZTsKICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgc192ZXJzaW9uOwp9OwojIDY2MCAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9leHQyX2ZzX3NiLmgiIDEKIyAzMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9leHQyX2ZzX3NiLmgiCnN0cnVjdCBleHQyX3NiX2luZm8gewogICAgICAgIHVuc2lnbmVk
IGxvbmcgc19mcmFnX3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ZyYWdzX3Blcl9ibG9j
azsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVzX3Blcl9ibG9jazsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNfZnJhZ3NfcGVyX2dyb3VwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19ibG9j
a3NfcGVyX2dyb3VwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19pbm9kZXNfcGVyX2dyb3VwOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgc19pdGJfcGVyX2dyb3VwOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgc19nZGJfY291bnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2Rlc2NfcGVyX2Jsb2NrOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgc19ncm91cHNfY291bnQ7CiAgICAgICAgc3RydWN0IGJ1ZmZl
cl9oZWFkICogc19zYmg7CiAgICAgICAgc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKiBzX2VzOwog
ICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqKiBzX2dyb3VwX2Rlc2M7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgc19sb2FkZWRfaW5vZGVfYml0bWFwczsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBz
X2xvYWRlZF9ibG9ja19iaXRtYXBzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19pbm9kZV9iaXRt
YXBfbnVtYmVyWzhdOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIHNfaW5vZGVfYml0bWFw
WzhdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19ibG9ja19iaXRtYXBfbnVtYmVyWzhdOwogICAg
ICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIHNfYmxvY2tfYml0bWFwWzhdOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgc19tb3VudF9vcHQ7CiAgICAgICAgdWlkX3Qgc19yZXN1aWQ7CiAgICAgICAgZ2lk
X3Qgc19yZXNnaWQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19tb3VudF9zdGF0ZTsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBzX3BhZDsKICAgICAgICBpbnQgc19hZGRyX3Blcl9ibG9ja19iaXRz
OwogICAgICAgIGludCBzX2Rlc2NfcGVyX2Jsb2NrX2JpdHM7CiAgICAgICAgaW50IHNfaW5vZGVf
c2l6ZTsKICAgICAgICBpbnQgc19maXJzdF9pbm87Cn07CiMgNjYxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2hw
ZnNfZnNfc2IuaCIgMQoKCgpzdHJ1Y3QgaHBmc19zYl9pbmZvIHsKICAgICAgICBpbm9fdCBzYl9y
b290OwogICAgICAgIHVuc2lnbmVkIHNiX2ZzX3NpemU7CiAgICAgICAgdW5zaWduZWQgc2JfYml0
bWFwczsKICAgICAgICB1bnNpZ25lZCBzYl9kaXJiYW5kX3N0YXJ0OwogICAgICAgIHVuc2lnbmVk
IHNiX2RpcmJhbmRfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBzYl9kbWFwOwogICAgICAgIHVuc2ln
bmVkIHNiX25fZnJlZTsKICAgICAgICB1bnNpZ25lZCBzYl9uX2ZyZWVfZG5vZGVzOwogICAgICAg
IHVpZF90IHNiX3VpZDsKICAgICAgICBnaWRfdCBzYl9naWQ7CiAgICAgICAgdW1vZGVfdCBzYl9t
b2RlOwogICAgICAgIHVuc2lnbmVkIHNiX2NvbnYgOiAyOwogICAgICAgIHVuc2lnbmVkIHNiX2Vh
cyA6IDI7CiAgICAgICAgdW5zaWduZWQgc2JfZXJyIDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9j
aGsgOiAyOwogICAgICAgIHVuc2lnbmVkIHNiX2xvd2VyY2FzZSA6IDE7CiAgICAgICAgdW5zaWdu
ZWQgc2Jfd2FzX2Vycm9yIDogMTsKICAgICAgICB1bnNpZ25lZCBzYl9jaGtkc2sgOiAyOwogICAg
ICAgIHVuc2lnbmVkIHNiX3JkX2Zub2RlIDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9yZF9pbm9k
ZSA6IDI7CgoKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBzYl9pZ2V0X3E7CiAgICAgICAgdW5z
aWduZWQgY2hhciAqc2JfY3BfdGFibGU7CgoKICAgICAgICB1bnNpZ25lZCAqc2JfYm1wX2RpcjsK
ICAgICAgICB1bnNpZ25lZCBzYl9jX2JpdG1hcDsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBz
Yl9jcmVhdGlvbl9kZTsKCiAgICAgICAgdW5zaWduZWQgc2JfY3JlYXRpb25fZGVfbG9jayA6IDE7
CgogICAgICAgIGludCBzYl90aW1lc2hpZnQ7Cn07CiMgNjYyICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L250ZnNf
ZnNfc2IuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbnRmc19mc19p
LmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L250ZnNfZnNfc2IuaCIgMgoK
c3RydWN0IG50ZnNfc2JfaW5mb3sKCiAgICAgICAgbnRmc191aWRfdCB1aWQ7CiAgICAgICAgbnRm
c19naWRfdCBnaWQ7CiAgICAgICAgbnRtb2RlX3QgdW1hc2s7CiAgICAgICAgdm9pZCAqbmxzX21h
cDsKICAgICAgICB1bnNpZ25lZCBpbnQgbmd0OwogICAgICAgIGNoYXIgbWZ0X3pvbmVfbXVsdGlw
bGllcjsKICAgICAgICB1bnNpZ25lZCBsb25nIG1mdF9kYXRhX3BvczsKICAgICAgICBudGZzX2Ns
dXN0ZXJfdCBtZnRfem9uZV9wb3M7CiAgICAgICAgbnRmc19jbHVzdGVyX3QgbWZ0X3pvbmVfc3Rh
cnQ7CiAgICAgICAgbnRmc19jbHVzdGVyX3QgbWZ0X3pvbmVfZW5kOwogICAgICAgIG50ZnNfY2x1
c3Rlcl90IGRhdGExX3pvbmVfcG9zOwogICAgICAgIG50ZnNfY2x1c3Rlcl90IGRhdGEyX3pvbmVf
cG9zOwoKCiAgICAgICAgbnRmc19zaXplX3QgcGFydGl0aW9uX2JpYXM7CgogICAgICAgIG50ZnNf
dTMyIGF0X3N0YW5kYXJkX2luZm9ybWF0aW9uOwogICAgICAgIG50ZnNfdTMyIGF0X2F0dHJpYnV0
ZV9saXN0OwogICAgICAgIG50ZnNfdTMyIGF0X2ZpbGVfbmFtZTsKICAgICAgICBudGZzX3UzMiBh
dF92b2x1bWVfdmVyc2lvbjsKICAgICAgICBudGZzX3UzMiBhdF9zZWN1cml0eV9kZXNjcmlwdG9y
OwogICAgICAgIG50ZnNfdTMyIGF0X3ZvbHVtZV9uYW1lOwogICAgICAgIG50ZnNfdTMyIGF0X3Zv
bHVtZV9pbmZvcm1hdGlvbjsKICAgICAgICBudGZzX3UzMiBhdF9kYXRhOwogICAgICAgIG50ZnNf
dTMyIGF0X2luZGV4X3Jvb3Q7CiAgICAgICAgbnRmc191MzIgYXRfaW5kZXhfYWxsb2NhdGlvbjsK
ICAgICAgICBudGZzX3UzMiBhdF9iaXRtYXA7CiAgICAgICAgbnRmc191MzIgYXRfc3ltbGluazsK
CiAgICAgICAgaW50IHNlY3Rvcl9zaXplOwogICAgICAgIGludCBjbHVzdGVyX3NpemU7CiAgICAg
ICAgaW50IGNsdXN0ZXJfc2l6ZV9iaXRzOwogICAgICAgIGludCBtZnRfY2x1c3RlcnNfcGVyX3Jl
Y29yZDsKICAgICAgICBpbnQgbWZ0X3JlY29yZF9zaXplOwogICAgICAgIGludCBtZnRfcmVjb3Jk
X3NpemVfYml0czsKICAgICAgICBpbnQgaW5kZXhfY2x1c3RlcnNfcGVyX3JlY29yZDsKICAgICAg
ICBpbnQgaW5kZXhfcmVjb3JkX3NpemU7CiAgICAgICAgaW50IGluZGV4X3JlY29yZF9zaXplX2Jp
dHM7CiAgICAgICAgbnRmc19jbHVzdGVyX3QgbnJfY2x1c3RlcnM7CiAgICAgICAgbnRmc19jbHVz
dGVyX3QgbWZ0X2xjbjsKICAgICAgICBudGZzX2NsdXN0ZXJfdCBtZnRfbWlycl9sY247CgogICAg
ICAgIHVuc2lnbmVkIGNoYXIgKm1mdDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCAqdXBjYXNlOwog
ICAgICAgIHVuc2lnbmVkIGludCB1cGNhc2VfbGVuZ3RoOwoKICAgICAgICBzdHJ1Y3QgbnRmc19p
bm9kZV9pbmZvICptZnRfaW5vOwogICAgICAgIHN0cnVjdCBudGZzX2lub2RlX2luZm8gKm1mdG1p
cnI7CiAgICAgICAgc3RydWN0IG50ZnNfaW5vZGVfaW5mbyAqYml0bWFwOwogICAgICAgIHN0cnVj
dCBzdXBlcl9ibG9jayAqc2I7CiAgICAgICAgdW5zaWduZWQgY2hhciBpbm9fZmxhZ3M7Cn07CiMg
NjYzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L21zZG9zX2ZzX3NiLmgiIDEKCgojIDEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvZmF0X2N2Zi5oIiAxCgoKCgoKc3RydWN0IGN2Zl9mb3JtYXQKeyBpbnQg
Y3ZmX3ZlcnNpb247CiAgY2hhciogY3ZmX3ZlcnNpb25fdGV4dDsKICB1bnNpZ25lZCBsb25nIGZs
YWdzOwogIGludCAoKmRldGVjdF9jdmYpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sqc2IpOwogIGludCAo
Km1vdW50X2N2ZikgKHN0cnVjdCBzdXBlcl9ibG9jaypzYixjaGFyKm9wdGlvbnMpOwogIGludCAo
KnVubW91bnRfY3ZmKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiKTsKICBzdHJ1Y3QgYnVmZmVyX2hl
YWQqICgqY3ZmX2JyZWFkKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiLGludCBibG9jayk7CiAgc3Ry
dWN0IGJ1ZmZlcl9oZWFkKiAoKmN2Zl9nZXRibGspIChzdHJ1Y3Qgc3VwZXJfYmxvY2sqc2IsaW50
IGJsb2NrKTsKICB2b2lkICgqY3ZmX2JyZWxzZSkgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2Isc3Ry
dWN0IGJ1ZmZlcl9oZWFkICpiaCk7CiAgdm9pZCAoKmN2Zl9tYXJrX2J1ZmZlcl9kaXJ0eSkgKHN0
cnVjdCBzdXBlcl9ibG9jayAqc2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBidWZmZXJfaGVhZCAqYmgpOwogIHZvaWQgKCpjdmZfc2V0X3VwdG9kYXRlKSAoc3RydWN0IHN1
cGVyX2Jsb2NrICpzYiwKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBidWZmZXJfaGVh
ZCAqYmgsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmFsKTsKICBpbnQgKCpjdmZfaXNf
dXB0b2RhdGUpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLHN0cnVjdCBidWZmZXJfaGVhZCAqYmgp
OwogIHZvaWQgKCpjdmZfbGxfcndfYmxvY2spIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAogICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgb3ByLAogICAgICAgICAgICAgICAgICAgICAgICBpbnQg
bmJyZXEsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYmhbMzJd
KTsKICBpbnQgKCpmYXRfYWNjZXNzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixpbnQgbnIsaW50
IG5ld192YWx1ZSk7CiAgaW50ICgqY3ZmX3N0YXRmcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2Is
c3RydWN0IHN0YXRmcyAqYnVmLCBpbnQgYnVmc2l6KTsKICBpbnQgKCpjdmZfYm1hcCkgKHN0cnVj
dCBpbm9kZSAqaW5vZGUsaW50IGJsb2NrKTsKICBzc2l6ZV90ICgqY3ZmX2ZpbGVfcmVhZCkgKCBz
dHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwogIHNzaXplX3QgKCpjdmZf
ZmlsZV93cml0ZSkgKCBzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgbG9mZl90
ICopOwogIGludCAoKmN2Zl9tbWFwKSAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHZtX2FyZWFfc3Ry
dWN0ICopOwogIGludCAoKmN2Zl9yZWFkcGFnZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgcGFn
ZSAqKTsKICBpbnQgKCpjdmZfd3JpdGVwYWdlKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBwYWdl
ICopOwogIGludCAoKmN2Zl9kaXJfaW9jdGwpIChzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwgc3RydWN0
IGZpbGUgKiBmaWxwLAogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1
bnNpZ25lZCBsb25nIGFyZyk7CiAgdm9pZCAoKnplcm9fb3V0X2NsdXN0ZXIpIChzdHJ1Y3QgaW5v
ZGUqLCBpbnQgY2x1c3Rlcm5yKTsKfTsKCmludCByZWdpc3Rlcl9jdmZfZm9ybWF0KHN0cnVjdCBj
dmZfZm9ybWF0KmN2Zl9mb3JtYXQpOwppbnQgdW5yZWdpc3Rlcl9jdmZfZm9ybWF0KHN0cnVjdCBj
dmZfZm9ybWF0KmN2Zl9mb3JtYXQpOwp2b2lkIGRlY19jdmZfZm9ybWF0X3VzZV9jb3VudF9ieV92
ZXJzaW9uKGludCB2ZXJzaW9uKTsKaW50IGRldGVjdF9jdmYoc3RydWN0IHN1cGVyX2Jsb2NrKnNi
LGNoYXIqZm9yY2UpOwoKZXh0ZXJuIHN0cnVjdCBjdmZfZm9ybWF0ICpjdmZfZm9ybWF0c1tdOwpl
eHRlcm4gaW50IGN2Zl9mb3JtYXRfdXNlX2NvdW50W107CiMgNCAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9tc2Rvc19mc19zYi5oIiAyCgoKCgoKc3RydWN0IGZhdF9tb3VudF9vcHRpb25z
IHsKICAgICAgICB1aWRfdCBmc191aWQ7CiAgICAgICAgZ2lkX3QgZnNfZ2lkOwogICAgICAgIHVu
c2lnbmVkIHNob3J0IGZzX3VtYXNrOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNvZGVwYWdlOwog
ICAgICAgIGNoYXIgKmlvY2hhcnNldDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzaG9ydG5hbWU7
CiAgICAgICAgdW5zaWduZWQgY2hhciBuYW1lX2NoZWNrOwogICAgICAgIHVuc2lnbmVkIGNoYXIg
Y29udmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBxdWlldDoxLAogICAgICAgICAgICAgICAgIHNo
b3dleGVjOjEsCiAgICAgICAgICAgICAgICAgc3lzX2ltbXV0YWJsZToxLAogICAgICAgICAgICAg
ICAgIGRvdHNPSzoxLAogICAgICAgICAgICAgICAgIGlzdmZhdDoxLAogICAgICAgICAgICAgICAg
IHV0Zjg6MSwKICAgICAgICAgICAgICAgICB1bmljb2RlX3hsYXRlOjEsCiAgICAgICAgICAgICAg
ICAgcG9zaXhmczoxLAogICAgICAgICAgICAgICAgIG51bXRhaWw6MSwKICAgICAgICAgICAgICAg
ICBhdGFyaToxLAogICAgICAgICAgICAgICAgIGZhdDMyOjEsCiAgICAgICAgICAgICAgICAgbm9j
YXNlOjE7Cn07CgpzdHJ1Y3QgbXNkb3Nfc2JfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
Y2x1c3Rlcl9zaXplOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNsdXN0ZXJfYml0czsKICAgICAg
ICB1bnNpZ25lZCBjaGFyIGZhdHMsZmF0X2JpdHM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZmF0
X3N0YXJ0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmF0X2xlbmd0aDsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGRpcl9zdGFydDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkaXJfZW50cmllczsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGRhdGFfc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjbHVz
dGVyczsKICAgICAgICB1bnNpZ25lZCBsb25nIHJvb3RfY2x1c3RlcjsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGZzaW5mb19zZWN0b3I7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBmYXRfbG9jazsK
ICAgICAgICBpbnQgcHJldl9mcmVlOwogICAgICAgIGludCBmcmVlX2NsdXN0ZXJzOwogICAgICAg
IHN0cnVjdCBmYXRfbW91bnRfb3B0aW9ucyBvcHRpb25zOwogICAgICAgIHN0cnVjdCBubHNfdGFi
bGUgKm5sc19kaXNrOwogICAgICAgIHN0cnVjdCBubHNfdGFibGUgKm5sc19pbzsKICAgICAgICBz
dHJ1Y3QgY3ZmX2Zvcm1hdCogY3ZmX2Zvcm1hdDsKICAgICAgICB2b2lkICpkaXJfb3BzOwogICAg
ICAgIHZvaWQgKnByaXZhdGVfZGF0YTsKICAgICAgICBpbnQgZGlyX3Blcl9ibG9jazsKICAgICAg
ICBpbnQgZGlyX3Blcl9ibG9ja19iaXRzOwp9OwojIDY2NCAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pc29fZnNf
c2IuaCIgMQoKCgoKCgpzdHJ1Y3QgaXNvZnNfc2JfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzX25pbm9kZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX256b25lczsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNfZmlyc3RkYXRhem9uZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfbG9nX3pv
bmVfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfbWF4X3NpemU7CgogICAgICAgIHVuc2ln
bmVkIGNoYXIgc19oaWdoX3NpZXJyYTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfbWFwcGluZzsK
ICAgICAgICBpbnQgc19yb2NrX29mZnNldDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfcm9jazsK
ICAgICAgICB1bnNpZ25lZCBjaGFyIHNfam9saWV0X2xldmVsOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgc191dGY4OwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19jcnVmdDsKCgogICAgICAgIHVuc2ln
bmVkIGNoYXIgc191bmhpZGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX25vc3VpZDsKICAgICAg
ICB1bnNpZ25lZCBjaGFyIHNfbm9kZXY7CiAgICAgICAgbW9kZV90IHNfbW9kZTsKICAgICAgICBn
aWRfdCBzX2dpZDsKICAgICAgICB1aWRfdCBzX3VpZDsKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxl
ICpzX25sc19pb2NoYXJzZXQ7Cn07CiMgNjY1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25mc19mc19zYi5oIiAx
CgoKCgoKCnN0cnVjdCBuZnNfc2VydmVyIHsKICAgICAgICBzdHJ1Y3QgcnBjX2NsbnQgKiBjbGll
bnQ7CiAgICAgICAgc3RydWN0IG5mc19ycGNfb3BzICogcnBjX29wczsKICAgICAgICBpbnQgZmxh
Z3M7CiAgICAgICAgdW5zaWduZWQgaW50IHJzaXplOwogICAgICAgIHVuc2lnbmVkIGludCBycGFn
ZXM7CiAgICAgICAgdW5zaWduZWQgaW50IHdzaXplOwogICAgICAgIHVuc2lnbmVkIGludCB3cGFn
ZXM7CiAgICAgICAgdW5zaWduZWQgaW50IGR0c2l6ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgYnNp
emU7CiAgICAgICAgdW5zaWduZWQgaW50IGFjcmVnbWluOwogICAgICAgIHVuc2lnbmVkIGludCBh
Y3JlZ21heDsKICAgICAgICB1bnNpZ25lZCBpbnQgYWNkaXJtaW47CiAgICAgICAgdW5zaWduZWQg
aW50IGFjZGlybWF4OwogICAgICAgIHVuc2lnbmVkIGludCBuYW1lbGVuOwogICAgICAgIGNoYXIg
KiBob3N0bmFtZTsKICAgICAgICBzdHJ1Y3QgbmZzX3JlcWxpc3QgKiByd19yZXF1ZXN0czsKfTsK
CgoKCnN0cnVjdCBuZnNfc2JfaW5mbyB7CiAgICAgICAgc3RydWN0IG5mc19zZXJ2ZXIgc19zZXJ2
ZXI7Cn07CiMgNjY2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N5c3ZfZnNfc2IuaCIgMQojIDEzICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3N5c3ZfZnNfc2IuaCIKc3RydWN0IHN5c3Zfc2JfaW5mbyB7
CiAgICAgICAgaW50IHNfdHlwZTsKICAgICAgICBjaGFyIHNfYnl0ZXNleDsKICAgICAgICBjaGFy
IHNfa2x1ZGdlX3N5bWxpbmtzOwogICAgICAgIGNoYXIgc190cnVuY2F0ZTsKCiAgICAgICAgbmxp
bmtfdCBzX2xpbmtfbWF4OwogICAgICAgIHVuc2lnbmVkIGludCBzX2lub2Rlc19wZXJfYmxvY2s7
CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5vZGVzX3Blcl9ibG9ja18xOwogICAgICAgIHVuc2ln
bmVkIGludCBzX2lub2Rlc19wZXJfYmxvY2tfYml0czsKICAgICAgICB1bnNpZ25lZCBpbnQgc19p
bmRfcGVyX2Jsb2NrOwogICAgICAgIHVuc2lnbmVkIGludCBzX2luZF9wZXJfYmxvY2tfYml0czsK
ICAgICAgICB1bnNpZ25lZCBpbnQgc19pbmRfcGVyX2Jsb2NrXzI7CiAgICAgICAgdW5zaWduZWQg
aW50IHNfdG9vYmlnX2Jsb2NrOwogICAgICAgIHVuc2lnbmVkIGludCBzX2Jsb2NrX2Jhc2U7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgc19maWNfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBz
X2ZsY19zaXplOwoKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfYmgxOwogICAgICAgIHN0
cnVjdCBidWZmZXJfaGVhZCAqc19iaDI7CgoKICAgICAgICBjaGFyICogc19zYmQxOwogICAgICAg
IGNoYXIgKiBzX3NiZDI7CiAgICAgICAgdTE2ICpzX3NiX2ZpY19jb3VudDsKICAgICAgICB1MTYg
KnNfc2JfZmljX2lub2RlczsKICAgICAgICB1MTYgKnNfc2JfdG90YWxfZnJlZV9pbm9kZXM7CiAg
ICAgICAgdTE2ICpzX2JjYWNoZV9jb3VudDsKICAgICAgICB1MzIgKnNfYmNhY2hlOwogICAgICAg
IHUzMiAqc19mcmVlX2Jsb2NrczsKICAgICAgICB1MzIgKnNfc2JfdGltZTsKICAgICAgICB1MzIg
KnNfc2Jfc3RhdGU7CgoKICAgICAgICB1MzIgc19maXJzdGlub2Rlem9uZTsKICAgICAgICB1MzIg
c19maXJzdGRhdGF6b25lOwogICAgICAgIHUzMiBzX25pbm9kZXM7CiAgICAgICAgdTMyIHNfbmRh
dGF6b25lczsKICAgICAgICB1MzIgc19uem9uZXM7CiAgICAgICAgdTE2IHNfbmFtZWxlbjsKfTsK
IyA2NjcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvYWZmc19mc19zYi5oIiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvYWZmc19mc19zYi5oIgpzdHJ1Y3QgYWZmc19ibV9pbmZvIHsKICAgICAg
ICB1MzIgYm1fa2V5OwogICAgICAgIHUzMiBibV9mcmVlOwp9OwoKc3RydWN0IGFmZnNfc2JfaW5m
byB7CiAgICAgICAgaW50IHNfcGFydGl0aW9uX3NpemU7CiAgICAgICAgaW50IHNfcmVzZXJ2ZWQ7
CgogICAgICAgIHUzMiBzX2RhdGFfYmxrc2l6ZTsKICAgICAgICB1MzIgc19yb290X2Jsb2NrOwog
ICAgICAgIGludCBzX2hhc2hzaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mbGFnczsKICAg
ICAgICB1aWRfdCBzX3VpZDsKICAgICAgICBnaWRfdCBzX2dpZDsKICAgICAgICB1bW9kZV90IHNf
bW9kZTsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfcm9vdF9iaDsKICAgICAgICBzdHJ1
Y3Qgc2VtYXBob3JlIHNfYm1sb2NrOwogICAgICAgIHN0cnVjdCBhZmZzX2JtX2luZm8gKnNfYml0
bWFwOwogICAgICAgIHUzMiBzX2JtYXBfY291bnQ7CiAgICAgICAgdTMyIHNfYm1hcF9iaXRzOwog
ICAgICAgIHUzMiBzX2xhc3RfYm1hcDsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfYm1h
cF9iaDsKICAgICAgICBjaGFyICpzX3ByZWZpeDsKICAgICAgICBpbnQgc19wcmVmaXhfbGVuOwog
ICAgICAgIGNoYXIgc192b2x1bWVbMzJdOwp9OwojIDY2OCAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC91ZnNfZnNf
c2IuaCIgMQojIDE3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Vmc19mc19zYi5oIgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdWZzX2ZzLmgiIDEKIyAzMCAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC91ZnNfZnMuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAzMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC91
ZnNfZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgva2VybmVsLmgiIDEK
IyAzMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC91ZnNfZnMuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdGltZS5oIiAxCiMgMzMgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvdWZzX2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3N0YXQuaCIgMQojIDM0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIiAy
CiMgMjQ4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIgpzdHJ1Y3QgdWZz
X3RpbWV2YWwgewogICAgICAgIF9fczMyIHR2X3NlYzsKICAgICAgICBfX3MzMiB0dl91c2VjOwp9
OwoKc3RydWN0IHVmc19kaXJfZW50cnkgewogICAgICAgIF9fdTMyIGRfaW5vOwogICAgICAgIF9f
dTE2IGRfcmVjbGVuOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIF9fdTE2IGRfbmFt
bGVuOwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191
OCBkX3R5cGU7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTggZF9uYW1sZW47CiAgICAgICAg
ICAgICAgICB9IGRfNDQ7CiAgICAgICAgfSBkX3U7CiAgICAgICAgX191OCBkX25hbWVbMjU1ICsg
MV07Cn07CgpzdHJ1Y3QgdWZzX2NzdW0gewogICAgICAgIF9fdTMyIGNzX25kaXI7CiAgICAgICAg
X191MzIgY3NfbmJmcmVlOwogICAgICAgIF9fdTMyIGNzX25pZnJlZTsKICAgICAgICBfX3UzMiBj
c19uZmZyZWU7Cn07CgoKCgpzdHJ1Y3QgdWZzX3N1cGVyX2Jsb2NrIHsKICAgICAgICBfX3UzMiBm
c19saW5rOwogICAgICAgIF9fdTMyIGZzX3JsaW5rOwogICAgICAgIF9fdTMyIGZzX3NibGtubzsK
ICAgICAgICBfX3UzMiBmc19jYmxrbm87CiAgICAgICAgX191MzIgZnNfaWJsa25vOwogICAgICAg
IF9fdTMyIGZzX2RibGtubzsKICAgICAgICBfX3UzMiBmc19jZ29mZnNldDsKICAgICAgICBfX3Uz
MiBmc19jZ21hc2s7CiAgICAgICAgX191MzIgZnNfdGltZTsKICAgICAgICBfX3UzMiBmc19zaXpl
OwogICAgICAgIF9fdTMyIGZzX2RzaXplOwogICAgICAgIF9fdTMyIGZzX25jZzsKICAgICAgICBf
X3UzMiBmc19ic2l6ZTsKICAgICAgICBfX3UzMiBmc19mc2l6ZTsKICAgICAgICBfX3UzMiBmc19m
cmFnOwoKICAgICAgICBfX3UzMiBmc19taW5mcmVlOwogICAgICAgIF9fdTMyIGZzX3JvdGRlbGF5
OwogICAgICAgIF9fdTMyIGZzX3JwczsKCiAgICAgICAgX191MzIgZnNfYm1hc2s7CiAgICAgICAg
X191MzIgZnNfZm1hc2s7CiAgICAgICAgX191MzIgZnNfYnNoaWZ0OwogICAgICAgIF9fdTMyIGZz
X2ZzaGlmdDsKCiAgICAgICAgX191MzIgZnNfbWF4Y29udGlnOwogICAgICAgIF9fdTMyIGZzX21h
eGJwZzsKCiAgICAgICAgX191MzIgZnNfZnJhZ3NoaWZ0OwogICAgICAgIF9fdTMyIGZzX2ZzYnRv
ZGI7CiAgICAgICAgX191MzIgZnNfc2JzaXplOwogICAgICAgIF9fdTMyIGZzX2NzbWFzazsKICAg
ICAgICBfX3UzMiBmc19jc3NoaWZ0OwogICAgICAgIF9fdTMyIGZzX25pbmRpcjsKICAgICAgICBf
X3UzMiBmc19pbm9wYjsKICAgICAgICBfX3UzMiBmc19uc3BmOwoKICAgICAgICBfX3UzMiBmc19v
cHRpbTsKCiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAg
ICAgICAgICAgICAgICAgX191MzIgZnNfbnBzZWN0OwogICAgICAgICAgICAgICAgfSBmc19zdW47
CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBm
c19zdGF0ZTsKICAgICAgICAgICAgICAgIH0gZnNfc3VueDg2OwogICAgICAgIH0gZnNfdTE7CiAg
ICAgICAgX191MzIgZnNfaW50ZXJsZWF2ZTsKICAgICAgICBfX3UzMiBmc190cmFja3NrZXc7CgoK
CgogICAgICAgIF9fdTMyIGZzX2lkWzJdOwoKICAgICAgICBfX3UzMiBmc19jc2FkZHI7CiAgICAg
ICAgX191MzIgZnNfY3NzaXplOwogICAgICAgIF9fdTMyIGZzX2Nnc2l6ZTsKCiAgICAgICAgX191
MzIgZnNfbnRyYWs7CiAgICAgICAgX191MzIgZnNfbnNlY3Q7CiAgICAgICAgX191MzIgZnNfc3Bj
OwoKICAgICAgICBfX3UzMiBmc19uY3lsOwoKICAgICAgICBfX3UzMiBmc19jcGc7CiAgICAgICAg
X191MzIgZnNfaXBnOwogICAgICAgIF9fdTMyIGZzX2ZwZzsKCiAgICAgICAgc3RydWN0IHVmc19j
c3VtIGZzX2NzdG90YWw7CgogICAgICAgIF9fczggZnNfZm1vZDsKICAgICAgICBfX3M4IGZzX2Ns
ZWFuOwogICAgICAgIF9fczggZnNfcm9ubHk7CiAgICAgICAgX19zOCBmc19mbGFnczsKICAgICAg
ICBfX3M4IGZzX2ZzbW50WzUxMl07CgogICAgICAgIF9fdTMyIGZzX2Nncm90b3I7CiAgICAgICAg
X191MzIgZnNfY3NwWzMxXTsKICAgICAgICBfX3UzMiBmc19tYXhjbHVzdGVyOwogICAgICAgIF9f
dTMyIGZzX2NwYzsKICAgICAgICBfX3UxNiBmc19vcG9zdGJsWzE2XVs4XTsKICAgICAgICB1bmlv
biB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3Mz
MiBmc19zcGFyZWNvbls1M107CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3JlY2xh
aW07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uMlsxXTsKICAgICAg
ICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAg
IF9fdTMyIGZzX3FibWFza1syXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWZt
YXNrWzJdOwogICAgICAgICAgICAgICAgfSBmc19zdW47CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
ewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbls1M107CiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fczMyIGZzX3JlY2xhaW07CiAgICAgICAgICAgICAgICAgICAgICAg
IF9fczMyIGZzX3NwYXJlY29uMlsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNf
bnBzZWN0OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xYm1hc2tbMl07CiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FmbWFza1syXTsKICAgICAgICAgICAgICAgIH0g
ZnNfc3VueDg2OwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAg
ICAgX19zMzIgZnNfc3BhcmVjb25bNTBdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBm
c19jb250aWdzdW1zaXplOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19tYXhzeW1s
aW5rbGVuOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19pbm9kZWZtdDsKICAgICAg
ICAgICAgICAgICAgICAgICAgX191MzIgZnNfbWF4ZmlsZXNpemVbMl07CiAgICAgICAgICAgICAg
ICAgICAgICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191
MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zdGF0ZTsK
ICAgICAgICAgICAgICAgIH0gZnNfNDQ7CiAgICAgICAgfSBmc191MjsKICAgICAgICBfX3MzMiBm
c19wb3N0Ymxmb3JtYXQ7CiAgICAgICAgX19zMzIgZnNfbnJwb3M7CiAgICAgICAgX19zMzIgZnNf
cG9zdGJsb2ZmOwogICAgICAgIF9fczMyIGZzX3JvdGJsb2ZmOwogICAgICAgIF9fczMyIGZzX21h
Z2ljOwogICAgICAgIF9fdTggZnNfc3BhY2VbMV07Cn07CiMgNDI1ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L3Vmc19mcy5oIgpzdHJ1Y3QgdWZzX2N5bGluZGVyX2dyb3VwIHsKICAgICAg
ICBfX3UzMiBjZ19saW5rOwogICAgICAgIF9fdTMyIGNnX21hZ2ljOwogICAgICAgIF9fdTMyIGNn
X3RpbWU7CiAgICAgICAgX191MzIgY2dfY2d4OwogICAgICAgIF9fdTE2IGNnX25jeWw7CiAgICAg
ICAgX191MTYgY2dfbmlibGs7CiAgICAgICAgX191MzIgY2dfbmRibGs7CiAgICAgICAgc3RydWN0
IHVmc19jc3VtIGNnX2NzOwogICAgICAgIF9fdTMyIGNnX3JvdG9yOwogICAgICAgIF9fdTMyIGNn
X2Zyb3RvcjsKICAgICAgICBfX3UzMiBjZ19pcm90b3I7CiAgICAgICAgX191MzIgY2dfZnJzdW1b
KDgxOTIgLyAxMDI0KV07CiAgICAgICAgX191MzIgY2dfYnRvdG9mZjsKICAgICAgICBfX3UzMiBj
Z19ib2ZmOwogICAgICAgIF9fdTMyIGNnX2l1c2Vkb2ZmOwogICAgICAgIF9fdTMyIGNnX2ZyZWVv
ZmY7CiAgICAgICAgX191MzIgY2dfbmV4dGZyZWVvZmY7CiAgICAgICAgdW5pb24gewogICAgICAg
ICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgY2dfY2x1c3Rl
cnN1bW9mZjsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgY2dfY2x1c3Rlcm9mZjsKICAg
ICAgICAgICAgICAgICAgICAgICAgX191MzIgY2dfbmNsdXN0ZXJibGtzOwogICAgICAgICAgICAg
ICAgICAgICAgICBfX3UzMiBjZ19zcGFyZWNvblsxM107CiAgICAgICAgICAgICAgICB9IGNnXzQ0
OwogICAgICAgICAgICAgICAgX191MzIgY2dfc3BhcmVjb25bMTZdOwogICAgICAgIH0gY2dfdTsK
ICAgICAgICBfX3U4IGNnX3NwYWNlWzFdOwoKfTsKCgoKCnN0cnVjdCB1ZnNfaW5vZGUgewogICAg
ICAgIF9fdTE2IHVpX21vZGU7CiAgICAgICAgX191MTYgdWlfbmxpbms7CiAgICAgICAgdW5pb24g
ewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MTYg
dWlfc3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MTYgdWlfc2dpZDsKICAgICAgICAg
ICAgICAgIH0gb2xkaWRzOwogICAgICAgICAgICAgICAgX191MzIgdWlfaW51bWJlcjsKICAgICAg
ICAgICAgICAgIF9fdTMyIHVpX2F1dGhvcjsKICAgICAgICB9IHVpX3UxOwogICAgICAgIF9fdTY0
IHVpX3NpemU7CiAgICAgICAgc3RydWN0IHVmc190aW1ldmFsIHVpX2F0aW1lOwogICAgICAgIHN0
cnVjdCB1ZnNfdGltZXZhbCB1aV9tdGltZTsKICAgICAgICBzdHJ1Y3QgdWZzX3RpbWV2YWwgdWlf
Y3RpbWU7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAg
ICAgICAgICAgICAgICAgX191MzIgdWlfZGJbMTJdOwogICAgICAgICAgICAgICAgICAgICAgICBf
X3UzMiB1aV9pYlszXTsKICAgICAgICAgICAgICAgIH0gdWlfYWRkcjsKICAgICAgICAgICAgICAg
IF9fdTggdWlfc3ltbGlua1s0KigxMiArMyldOwogICAgICAgIH0gdWlfdTI7CiAgICAgICAgX191
MzIgdWlfZmxhZ3M7CiAgICAgICAgX191MzIgdWlfYmxvY2tzOwogICAgICAgIF9fdTMyIHVpX2dl
bjsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAg
ICAgICAgICAgICBfX3UzMiB1aV9zaGFkb3c7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMy
IHVpX3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfZ2lkOwogICAgICAgICAg
ICAgICAgICAgICAgICBfX3UzMiB1aV9vZWZ0ZmxhZzsKICAgICAgICAgICAgICAgIH0gdWlfc3Vu
OwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIg
dWlfdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9naWQ7CiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fczMyIHVpX3NwYXJlWzJdOwogICAgICAgICAgICAgICAgfSB1aV80NDsK
ICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVp
X3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfZ2lkOwogICAgICAgICAgICAg
ICAgICAgICAgICBfX3UxNiB1aV9tb2RlaDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MTYg
dWlfc3BhcmU7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX3RyYW5zOwogICAgICAg
ICAgICAgICAgfSB1aV9odXJkOwogICAgICAgIH0gdWlfdTM7Cn07CiMgNTI0ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIgpleHRlcm4gdm9pZCB1ZnNfZnJlZV9mcmFnbWVu
dHMgKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQpOwpleHRlcm4gdm9pZCB1ZnNf
ZnJlZV9ibG9ja3MgKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQpOwpleHRlcm4g
dW5zaWduZWQgdWZzX25ld19mcmFnbWVudHMgKHN0cnVjdCBpbm9kZSAqLCB1MzIgKiwgdW5zaWdu
ZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgaW50ICopOwoKCmV4dGVybiBzdHJ1Y3QgdWZzX2NnX3By
aXZhdGVfaW5mbyAqIHVmc19sb2FkX2N5bGluZGVyIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdW5z
aWduZWQpOwpleHRlcm4gdm9pZCB1ZnNfcHV0X2N5bGluZGVyIChzdHJ1Y3Qgc3VwZXJfYmxvY2sg
KiwgdW5zaWduZWQpOwoKCmV4dGVybiBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyB1ZnNfZGlyX2lu
b2RlX29wZXJhdGlvbnM7CmV4dGVybiBpbnQgdWZzX2NoZWNrX2Rpcl9lbnRyeSAoY29uc3QgY2hh
ciAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHVmc19kaXJfZW50cnkgKiwgc3RydWN0IGJ1ZmZl
cl9oZWFkICosIHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gaW50IHVmc19hZGRfbGluayAoc3RydWN0
IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbm9fdCB1ZnNfaW5vZGVfYnlfbmFt
ZShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGludCB1ZnNfbWFrZV9l
bXB0eShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGlub2RlICopOwpleHRlcm4gc3RydWN0IHVmc19k
aXJfZW50cnkgKiB1ZnNfZmluZF9lbnRyeSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgYnVmZmVy
X2hlYWQgKiopOwpleHRlcm4gaW50IHVmc19kZWxldGVfZW50cnkgKHN0cnVjdCBpbm9kZSAqLCBz
dHJ1Y3QgdWZzX2Rpcl9lbnRyeSAqLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKik7CmV4dGVybiBpbnQg
dWZzX2VtcHR5X2RpciAoc3RydWN0IGlub2RlICopOwpleHRlcm4gc3RydWN0IHVmc19kaXJfZW50
cnkgKiB1ZnNfZG90ZG90IChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGJ1ZmZlcl9oZWFkICoqKTsK
ZXh0ZXJuIHZvaWQgdWZzX3NldF9saW5rKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgdWZzX2Rpcl9l
bnRyeSAqLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiwgc3RydWN0IGlub2RlICopOwoKCmV4dGVybiBz
dHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyB1ZnNfZmlsZV9pbm9kZV9vcGVyYXRpb25zOwpleHRlcm4g
c3RydWN0IGZpbGVfb3BlcmF0aW9ucyB1ZnNfZmlsZV9vcGVyYXRpb25zOwoKZXh0ZXJuIHN0cnVj
dCBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMgdWZzX2FvcHM7CgoKZXh0ZXJuIHZvaWQgdWZzX2Zy
ZWVfaW5vZGUgKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRlcm4gc3RydWN0IGlub2RlICogdWZz
X25ld19pbm9kZSAoY29uc3Qgc3RydWN0IGlub2RlICosIGludCk7CgoKZXh0ZXJuIGludCB1ZnNf
ZnJhZ19tYXAgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpleHRlcm4gdm9pZCB1ZnNfcmVhZF9pbm9k
ZSAoc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCB1ZnNfcHV0X2lub2RlIChzdHJ1Y3QgaW5v
ZGUgKik7CmV4dGVybiB2b2lkIHVmc193cml0ZV9pbm9kZSAoc3RydWN0IGlub2RlICosIGludCk7
CmV4dGVybiBpbnQgdWZzX3N5bmNfaW5vZGUgKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQg
dWZzX2RlbGV0ZV9pbm9kZSAoc3RydWN0IGlub2RlICopOwpleHRlcm4gc3RydWN0IGJ1ZmZlcl9o
ZWFkICogdWZzX2dldGZyYWcgKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCwgaW50LCBpbnQgKik7
CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiB1ZnNfYnJlYWQgKHN0cnVjdCBpbm9kZSAqLCB1
bnNpZ25lZCwgaW50LCBpbnQgKik7CgoKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdWZz
X2Rpcl9vcGVyYXRpb25zOwoKCmV4dGVybiBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSB1ZnNfZnNf
dHlwZTsKZXh0ZXJuIHZvaWQgdWZzX3dhcm5pbmcgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBjb25z
dCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKSBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChwcmlu
dGYsIDMsIDQpKSk7CmV4dGVybiB2b2lkIHVmc19lcnJvciAoc3RydWN0IHN1cGVyX2Jsb2NrICos
IGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pIF9fYXR0cmlidXRlX18gKChmb3JtYXQg
KHByaW50ZiwgMywgNCkpKTsKZXh0ZXJuIHZvaWQgdWZzX3BhbmljIChzdHJ1Y3Qgc3VwZXJfYmxv
Y2sgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLikgX19hdHRyaWJ1dGVfXyAoKGZv
cm1hdCAocHJpbnRmLCAzLCA0KSkpOwpleHRlcm4gdm9pZCB1ZnNfd3JpdGVfc3VwZXIgKHN0cnVj
dCBzdXBlcl9ibG9jayAqKTsKCgpleHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMgdWZzX2Zh
c3Rfc3ltbGlua19pbm9kZV9vcGVyYXRpb25zOwoKCmV4dGVybiB2b2lkIHVmc190cnVuY2F0ZSAo
c3RydWN0IGlub2RlICopOwojIDE4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Vmc19m
c19zYi5oIiAyCgoKCgoKc3RydWN0IHVmc19idWZmZXJfaGVhZCB7CiAgICAgICAgdW5zaWduZWQg
ZnJhZ21lbnQ7CiAgICAgICAgdW5zaWduZWQgY291bnQ7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9o
ZWFkICogYmhbKDgxOTIgLyAxMDI0KV07Cn07CgpzdHJ1Y3QgdWZzX2NnX3ByaXZhdGVfaW5mbyB7
CiAgICAgICAgc3RydWN0IHVmc19jeWxpbmRlcl9ncm91cCB1Y2c7CiAgICAgICAgX191MzIgY19j
Z3g7CiAgICAgICAgX191MTYgY19uY3lsOwogICAgICAgIF9fdTE2IGNfbmlibGs7CiAgICAgICAg
X191MzIgY19uZGJsazsKICAgICAgICBfX3UzMiBjX3JvdG9yOwogICAgICAgIF9fdTMyIGNfZnJv
dG9yOwogICAgICAgIF9fdTMyIGNfaXJvdG9yOwogICAgICAgIF9fdTMyIGNfYnRvdG9mZjsKICAg
ICAgICBfX3UzMiBjX2JvZmY7CiAgICAgICAgX191MzIgY19pdXNlZG9mZjsKICAgICAgICBfX3Uz
MiBjX2ZyZWVvZmY7CiAgICAgICAgX191MzIgY19uZXh0ZnJlZW9mZjsKICAgICAgICBfX3UzMiBj
X2NsdXN0ZXJzdW1vZmY7CiAgICAgICAgX191MzIgY19jbHVzdGVyb2ZmOwogICAgICAgIF9fdTMy
IGNfbmNsdXN0ZXJibGtzOwp9OwoKc3RydWN0IHVmc19zYl9wcml2YXRlX2luZm8gewogICAgICAg
IHN0cnVjdCB1ZnNfYnVmZmVyX2hlYWQgc191Ymg7CiAgICAgICAgX191MzIgc19zYmxrbm87CiAg
ICAgICAgX191MzIgc19jYmxrbm87CiAgICAgICAgX191MzIgc19pYmxrbm87CiAgICAgICAgX191
MzIgc19kYmxrbm87CiAgICAgICAgX191MzIgc19jZ29mZnNldDsKICAgICAgICBfX3UzMiBzX2Nn
bWFzazsKICAgICAgICBfX3UzMiBzX3NpemU7CiAgICAgICAgX191MzIgc19kc2l6ZTsKICAgICAg
ICBfX3UzMiBzX25jZzsKICAgICAgICBfX3UzMiBzX2JzaXplOwogICAgICAgIF9fdTMyIHNfZnNp
emU7CiAgICAgICAgX191MzIgc19mcGI7CiAgICAgICAgX191MzIgc19taW5mcmVlOwogICAgICAg
IF9fdTMyIHNfYm1hc2s7CiAgICAgICAgX191MzIgc19mbWFzazsKICAgICAgICBfX3UzMiBzX2Jz
aGlmdDsKICAgICAgICBfX3UzMiBzX2ZzaGlmdDsKICAgICAgICBfX3UzMiBzX2ZwYnNoaWZ0Owog
ICAgICAgIF9fdTMyIHNfZnNidG9kYjsKICAgICAgICBfX3UzMiBzX3Nic2l6ZTsKICAgICAgICBf
X3UzMiBzX2NzbWFzazsKICAgICAgICBfX3UzMiBzX2Nzc2hpZnQ7CiAgICAgICAgX191MzIgc19u
aW5kaXI7CiAgICAgICAgX191MzIgc19pbm9wYjsKICAgICAgICBfX3UzMiBzX25zcGY7CiAgICAg
ICAgX191MzIgc19ucHNlY3Q7CiAgICAgICAgX191MzIgc19pbnRlcmxlYXZlOwogICAgICAgIF9f
dTMyIHNfdHJhY2tza2V3OwogICAgICAgIF9fdTMyIHNfY3NhZGRyOwogICAgICAgIF9fdTMyIHNf
Y3NzaXplOwogICAgICAgIF9fdTMyIHNfY2dzaXplOwogICAgICAgIF9fdTMyIHNfbnRyYWs7CiAg
ICAgICAgX191MzIgc19uc2VjdDsKICAgICAgICBfX3UzMiBzX3NwYzsKICAgICAgICBfX3UzMiBz
X2lwZzsKICAgICAgICBfX3UzMiBzX2ZwZzsKICAgICAgICBfX3UzMiBzX2NwYzsKICAgICAgICBf
X3MzMiBzX2NvbnRpZ3N1bXNpemU7CiAgICAgICAgX19zNjQgc19xYm1hc2s7CiAgICAgICAgX19z
NjQgc19xZm1hc2s7CiAgICAgICAgX19zMzIgc19wb3N0Ymxmb3JtYXQ7CiAgICAgICAgX19zMzIg
c19ucnBvczsKICAgICAgICBfX3MzMiBzX3Bvc3RibG9mZjsKICAgICAgICBfX3MzMiBzX3JvdGJs
b2ZmOwoKICAgICAgICBfX3UzMiBzX2ZwYm1hc2s7CiAgICAgICAgX191MzIgc19hcGI7CiAgICAg
ICAgX191MzIgc18yYXBiOwogICAgICAgIF9fdTMyIHNfM2FwYjsKICAgICAgICBfX3UzMiBzX2Fw
Ym1hc2s7CiAgICAgICAgX191MzIgc19hcGJzaGlmdDsKICAgICAgICBfX3UzMiBzXzJhcGJzaGlm
dDsKICAgICAgICBfX3UzMiBzXzNhcGJzaGlmdDsKICAgICAgICBfX3UzMiBzX25zcGZzaGlmdDsK
ICAgICAgICBfX3UzMiBzX25zcGI7CiAgICAgICAgX191MzIgc19pbm9wZjsKICAgICAgICBfX3Uz
MiBzX3NiYmFzZTsKICAgICAgICBfX3UzMiBzX2JwZjsKICAgICAgICBfX3UzMiBzX2JwZnNoaWZ0
OwogICAgICAgIF9fdTMyIHNfYnBmbWFzazsKCiAgICAgICAgX191MzIgc19tYXhzeW1saW5rbGVu
Owp9OwoKCgoKCnN0cnVjdCB1ZnNfc2JfaW5mbyB7CiAgICAgICAgc3RydWN0IHVmc19zYl9wcml2
YXRlX2luZm8gKiBzX3VzcGk7CiAgICAgICAgc3RydWN0IHVmc19jc3VtICogc19jc3BbMzFdOwog
ICAgICAgIHVuc2lnbmVkIHNfc3dhYjsKICAgICAgICB1bnNpZ25lZCBzX2ZsYWdzOwogICAgICAg
IHN0cnVjdCBidWZmZXJfaGVhZCAqKiBzX3VjZzsKICAgICAgICBzdHJ1Y3QgdWZzX2NnX3ByaXZh
dGVfaW5mbyAqIHNfdWNwaVs4XTsKICAgICAgICB1bnNpZ25lZCBzX2Nnbm9bOF07CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgc19jZ19sb2FkZWQ7CiAgICAgICAgdW5zaWduZWQgc19tb3VudF9vcHQ7
Cn07CgoKCgoKCgpzdHJ1Y3QgdWZzX3N1cGVyX2Jsb2NrX2ZpcnN0IHsKICAgICAgICBfX3UzMiBm
c19saW5rOwogICAgICAgIF9fdTMyIGZzX3JsaW5rOwogICAgICAgIF9fdTMyIGZzX3NibGtubzsK
ICAgICAgICBfX3UzMiBmc19jYmxrbm87CiAgICAgICAgX191MzIgZnNfaWJsa25vOwogICAgICAg
IF9fdTMyIGZzX2RibGtubzsKICAgICAgICBfX3UzMiBmc19jZ29mZnNldDsKICAgICAgICBfX3Uz
MiBmc19jZ21hc2s7CiAgICAgICAgX191MzIgZnNfdGltZTsKICAgICAgICBfX3UzMiBmc19zaXpl
OwogICAgICAgIF9fdTMyIGZzX2RzaXplOwogICAgICAgIF9fdTMyIGZzX25jZzsKICAgICAgICBf
X3UzMiBmc19ic2l6ZTsKICAgICAgICBfX3UzMiBmc19mc2l6ZTsKICAgICAgICBfX3UzMiBmc19m
cmFnOwogICAgICAgIF9fdTMyIGZzX21pbmZyZWU7CiAgICAgICAgX191MzIgZnNfcm90ZGVsYXk7
CiAgICAgICAgX191MzIgZnNfcnBzOwogICAgICAgIF9fdTMyIGZzX2JtYXNrOwogICAgICAgIF9f
dTMyIGZzX2ZtYXNrOwogICAgICAgIF9fdTMyIGZzX2JzaGlmdDsKICAgICAgICBfX3UzMiBmc19m
c2hpZnQ7CiAgICAgICAgX191MzIgZnNfbWF4Y29udGlnOwogICAgICAgIF9fdTMyIGZzX21heGJw
ZzsKICAgICAgICBfX3UzMiBmc19mcmFnc2hpZnQ7CiAgICAgICAgX191MzIgZnNfZnNidG9kYjsK
ICAgICAgICBfX3UzMiBmc19zYnNpemU7CiAgICAgICAgX191MzIgZnNfY3NtYXNrOwogICAgICAg
IF9fdTMyIGZzX2Nzc2hpZnQ7CiAgICAgICAgX191MzIgZnNfbmluZGlyOwogICAgICAgIF9fdTMy
IGZzX2lub3BiOwogICAgICAgIF9fdTMyIGZzX25zcGY7CiAgICAgICAgX191MzIgZnNfb3B0aW07
CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAg
ICAgICAgICAgX191MzIgZnNfbnBzZWN0OwogICAgICAgICAgICAgICAgfSBmc19zdW47CiAgICAg
ICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zdGF0
ZTsKICAgICAgICAgICAgICAgIH0gZnNfc3VueDg2OwogICAgICAgIH0gZnNfdTE7CiAgICAgICAg
X191MzIgZnNfaW50ZXJsZWF2ZTsKICAgICAgICBfX3UzMiBmc190cmFja3NrZXc7CiAgICAgICAg
X191MzIgZnNfaWRbMl07CiAgICAgICAgX191MzIgZnNfY3NhZGRyOwogICAgICAgIF9fdTMyIGZz
X2Nzc2l6ZTsKICAgICAgICBfX3UzMiBmc19jZ3NpemU7CiAgICAgICAgX191MzIgZnNfbnRyYWs7
CiAgICAgICAgX191MzIgZnNfbnNlY3Q7CiAgICAgICAgX191MzIgZnNfc3BjOwogICAgICAgIF9f
dTMyIGZzX25jeWw7CiAgICAgICAgX191MzIgZnNfY3BnOwogICAgICAgIF9fdTMyIGZzX2lwZzsK
ICAgICAgICBfX3UzMiBmc19mcGc7CiAgICAgICAgc3RydWN0IHVmc19jc3VtIGZzX2NzdG90YWw7
CiAgICAgICAgX19zOCBmc19mbW9kOwogICAgICAgIF9fczggZnNfY2xlYW47CiAgICAgICAgX19z
OCBmc19yb25seTsKICAgICAgICBfX3M4IGZzX2ZsYWdzOwogICAgICAgIF9fczggZnNfZnNtbnRb
NTEyIC0gMjEyXTsKCn07CgpzdHJ1Y3QgdWZzX3N1cGVyX2Jsb2NrX3NlY29uZCB7CiAgICAgICAg
X19zOCBmc19mc21udFsyMTJdOwogICAgICAgIF9fdTMyIGZzX2Nncm90b3I7CiAgICAgICAgX191
MzIgZnNfY3NwWzMxXTsKICAgICAgICBfX3UzMiBmc19tYXhjbHVzdGVyOwogICAgICAgIF9fdTMy
IGZzX2NwYzsKICAgICAgICBfX3UxNiBmc19vcG9zdGJsWzgyXTsKfTsKCnN0cnVjdCB1ZnNfc3Vw
ZXJfYmxvY2tfdGhpcmQgewogICAgICAgIF9fdTE2IGZzX29wb3N0YmxbNDZdOwogICAgICAgIHVu
aW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9f
czMyIGZzX3NwYXJlY29uWzUzXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfcmVj
bGFpbTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb24yWzFdOwogICAg
ICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAgICAgICAgICAg
ICAgX191MzIgZnNfcWJtYXNrWzJdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19x
Zm1hc2tbMl07CiAgICAgICAgICAgICAgICB9IGZzX3N1bjsKICAgICAgICAgICAgICAgIHN0cnVj
dCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uWzUzXTsKICAgICAg
ICAgICAgICAgICAgICAgICAgX19zMzIgZnNfcmVjbGFpbTsKICAgICAgICAgICAgICAgICAgICAg
ICAgX19zMzIgZnNfc3BhcmVjb24yWzFdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBm
c19ucHNlY3Q7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAg
ICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAgICAgICAg
fSBmc19zdW54ODY7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAg
ICAgICBfX3MzMiBmc19zcGFyZWNvbls1MF07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMy
IGZzX2NvbnRpZ3N1bXNpemU7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX21heHN5
bWxpbmtsZW47CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX2lub2RlZm10OwogICAg
ICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19tYXhmaWxlc2l6ZVsyXTsKICAgICAgICAgICAg
ICAgICAgICAgICAgX191MzIgZnNfcWJtYXNrWzJdOwogICAgICAgICAgICAgICAgICAgICAgICBf
X3UzMiBmc19xZm1hc2tbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3N0YXRl
OwogICAgICAgICAgICAgICAgfSBmc180NDsKICAgICAgICB9IGZzX3UyOwogICAgICAgIF9fczMy
IGZzX3Bvc3RibGZvcm1hdDsKICAgICAgICBfX3MzMiBmc19ucnBvczsKICAgICAgICBfX3MzMiBm
c19wb3N0YmxvZmY7CiAgICAgICAgX19zMzIgZnNfcm90YmxvZmY7CiAgICAgICAgX19zMzIgZnNf
bWFnaWM7CiAgICAgICAgX191OCBmc19zcGFjZVsxXTsKfTsKIyA2NjkgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
ZWZzX2ZzX3NiLmgiIDEKIyAyNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9lZnNfZnNf
c2IuaCIKc3RydWN0IGVmc19zdXBlciB7CiAgICAgICAgaW50MzJfdCBmc19zaXplOwogICAgICAg
IGludDMyX3QgZnNfZmlyc3RjZzsKICAgICAgICBpbnQzMl90IGZzX2NnZnNpemU7CiAgICAgICAg
c2hvcnQgZnNfY2dpc2l6ZTsKICAgICAgICBzaG9ydCBmc19zZWN0b3JzOwogICAgICAgIHNob3J0
IGZzX2hlYWRzOwogICAgICAgIHNob3J0IGZzX25jZzsKICAgICAgICBzaG9ydCBmc19kaXJ0eTsK
ICAgICAgICBpbnQzMl90IGZzX3RpbWU7CiAgICAgICAgaW50MzJfdCBmc19tYWdpYzsKICAgICAg
ICBjaGFyIGZzX2ZuYW1lWzZdOwogICAgICAgIGNoYXIgZnNfZnBhY2tbNl07CiAgICAgICAgaW50
MzJfdCBmc19ibXNpemU7CiAgICAgICAgaW50MzJfdCBmc190ZnJlZTsKICAgICAgICBpbnQzMl90
IGZzX3Rpbm9kZTsKICAgICAgICBpbnQzMl90IGZzX2JtYmxvY2s7CiAgICAgICAgaW50MzJfdCBm
c19yZXBsc2I7CiAgICAgICAgaW50MzJfdCBmc19sYXN0aWFsbG9jOwogICAgICAgIGNoYXIgZnNf
c3BhcmVbMjBdOwogICAgICAgIGludDMyX3QgZnNfY2hlY2tzdW07Cn07CgoKc3RydWN0IGVmc19z
Yl9pbmZvIHsKICAgICAgICBpbnQzMl90IGZzX21hZ2ljOwogICAgICAgIGludDMyX3QgZnNfc3Rh
cnQ7CiAgICAgICAgaW50MzJfdCBmaXJzdF9ibG9jazsKICAgICAgICBpbnQzMl90IHRvdGFsX2Js
b2NrczsKICAgICAgICBpbnQzMl90IGdyb3VwX3NpemU7CiAgICAgICAgaW50MzJfdCBkYXRhX2Zy
ZWU7CiAgICAgICAgaW50MzJfdCBpbm9kZV9mcmVlOwogICAgICAgIHNob3J0IGlub2RlX2Jsb2Nr
czsKICAgICAgICBzaG9ydCB0b3RhbF9ncm91cHM7Cn07CiMgNjcwICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Jv
bWZzX2ZzX3NiLmgiIDEKCgoKCgpzdHJ1Y3Qgcm9tZnNfc2JfaW5mbyB7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzX21heHNpemU7Cn07CiMgNjcxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NtYl9mc19zYi5oIiAx
CiMgMTQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc21iX2ZzX3NiLmgiCiMgMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvc21iX2ZzX3NiLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3NtYi5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc21iLmgi
CiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgMTMgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc21iLmgiIDIKCmVudW0gc21iX3Byb3RvY29sIHsKICAg
ICAgICBTTUJfUFJPVE9DT0xfTk9ORSwKICAgICAgICBTTUJfUFJPVE9DT0xfQ09SRSwKICAgICAg
ICBTTUJfUFJPVE9DT0xfQ09SRVBMVVMsCiAgICAgICAgU01CX1BST1RPQ09MX0xBTk1BTjEsCiAg
ICAgICAgU01CX1BST1RPQ09MX0xBTk1BTjIsCiAgICAgICAgU01CX1BST1RPQ09MX05UMQp9OwoK
ZW51bSBzbWJfY2FzZV9obmRsIHsKICAgICAgICBTTUJfQ0FTRV9ERUZBVUxULAogICAgICAgIFNN
Ql9DQVNFX0xPV0VSLAogICAgICAgIFNNQl9DQVNFX1VQUEVSCn07CgpzdHJ1Y3Qgc21iX2Rza2F0
dHIgewogICAgICAgIF9fdTE2IHRvdGFsOwogICAgICAgIF9fdTE2IGFsbG9jYmxvY2tzOwogICAg
ICAgIF9fdTE2IGJsb2Nrc2l6ZTsKICAgICAgICBfX3UxNiBmcmVlOwp9OwoKc3RydWN0IHNtYl9j
b25uX29wdCB7CgoKICAgICAgICB1bnNpZ25lZCBpbnQgZmQ7CgogICAgICAgIGVudW0gc21iX3By
b3RvY29sIHByb3RvY29sOwogICAgICAgIGVudW0gc21iX2Nhc2VfaG5kbCBjYXNlX2hhbmRsaW5n
OwoKCgogICAgICAgIF9fdTMyIG1heF94bWl0OwogICAgICAgIF9fdTE2IHNlcnZlcl91aWQ7CiAg
ICAgICAgX191MTYgdGlkOwoKCiAgICAgICAgX191MTYgc2VjbW9kZTsKICAgICAgICBfX3UxNiBt
YXhtdXg7CiAgICAgICAgX191MTYgbWF4dmNzOwogICAgICAgIF9fdTE2IHJhd21vZGU7CiAgICAg
ICAgX191MzIgc2Vzc2tleTsKCgogICAgICAgIF9fdTMyIG1heHJhdzsKICAgICAgICBfX3UzMiBj
YXBhYmlsaXRpZXM7CiAgICAgICAgX19zMTYgc2VydmVyem9uZTsKfTsKCgoKCnN0cnVjdCBzbWJf
bmxzX2NvZGVwYWdlIHsKICAgICAgICBjaGFyIGxvY2FsX25hbWVbMjBdOwogICAgICAgIGNoYXIg
cmVtb3RlX25hbWVbMjBdOwp9OwojIDc4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Nt
Yi5oIgpzdHJ1Y3Qgc21iX2ZhdHRyIHsKCiAgICAgICAgX191MTYgYXR0cjsKCiAgICAgICAgdW5z
aWduZWQgbG9uZyBmX2lubzsKICAgICAgICB1bW9kZV90IGZfbW9kZTsKICAgICAgICBubGlua190
IGZfbmxpbms7CiAgICAgICAgdWlkX3QgZl91aWQ7CiAgICAgICAgZ2lkX3QgZl9naWQ7CiAgICAg
ICAga2Rldl90IGZfcmRldjsKICAgICAgICBvZmZfdCBmX3NpemU7CiAgICAgICAgdGltZV90IGZf
YXRpbWU7CiAgICAgICAgdGltZV90IGZfbXRpbWU7CiAgICAgICAgdGltZV90IGZfY3RpbWU7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBmX2Jsa3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmX2Js
b2NrczsKfTsKCmVudW0gc21iX2Nvbm5fc3RhdGUgewogICAgICAgIENPTk5fVkFMSUQsCiAgICAg
ICAgQ09OTl9JTlZBTElELAoKICAgICAgICBDT05OX1JFVFJJRUQsCiAgICAgICAgQ09OTl9SRVRS
WUlORwp9OwojIDE2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NtYl9mc19zYi5oIiAy
CgoKCgoKCgpzdHJ1Y3Qgc21iX3NiX2luZm8gewogICAgICAgIGVudW0gc21iX2Nvbm5fc3RhdGUg
c3RhdGU7CiAgICAgICAgc3RydWN0IGZpbGUgKiBzb2NrX2ZpbGU7CgogICAgICAgIHN0cnVjdCBz
bWJfbW91bnRfZGF0YV9rZXJuZWwgKm1udDsKICAgICAgICB1bnNpZ25lZCBjaGFyICp0ZW1wX2J1
ZjsKCgoKCiAgICAgICAgdW5zaWduZWQgaW50IGdlbmVyYXRpb247CiAgICAgICAgcGlkX3QgY29u
bl9waWQ7CiAgICAgICAgc3RydWN0IHNtYl9jb25uX29wdCBvcHQ7CgogICAgICAgIHN0cnVjdCBz
ZW1hcGhvcmUgc2VtOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHdhaXQ7CgogICAgICAgIF9f
dTMyIHBhY2tldF9zaXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIgKiBwYWNrZXQ7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgcmNsczsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBlcnI7CgoKICAgICAg
ICB2b2lkICpkYXRhX3JlYWR5OwoKCiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqcmVtb3RlX25s
czsKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpsb2NhbF9ubHM7CgoKCgogICAgICAgIGNoYXIg
Km5hbWVfYnVmOwoKICAgICAgICBpbnQgKCpjb252ZXJ0KShjaGFyICosIGludCwgY29uc3QgY2hh
ciAqLCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5sc190YWJsZSAqLCBzdHJ1
Y3QgbmxzX3RhYmxlICopOwp9OwoKCnN0YXRpYyBpbmxpbmUgdm9pZApzbWJfbG9ja19zZXJ2ZXIo
c3RydWN0IHNtYl9zYl9pbmZvICpzZXJ2ZXIpCnsKICAgICAgICBkb3duKCYoc2VydmVyLT5zZW0p
KTsKfQoKc3RhdGljIGlubGluZSB2b2lkCnNtYl91bmxvY2tfc2VydmVyKHN0cnVjdCBzbWJfc2Jf
aW5mbyAqc2VydmVyKQp7CiAgICAgICAgdXAoJihzZXJ2ZXItPnNlbSkpOwp9CiMgNjcyICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2hmc19mc19zYi5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvaGZzX2ZzX3NiLmgiCnN0cnVjdCBoZnNfbmFtZTsKCnR5cGVkZWYgaW50ICgqaGZzX25hbWVp
bl9mbikgKGNoYXIgKiwgY29uc3Qgc3RydWN0IGhmc19uYW1lICopOwp0eXBlZGVmIHZvaWQgKCpo
ZnNfbmFtZW91dF9mbikgKHN0cnVjdCBoZnNfbmFtZSAqLCBjb25zdCBjaGFyICosIGludCk7CnR5
cGVkZWYgdm9pZCAoKmhmc19pZmlsbF9mbikgKHN0cnVjdCBpbm9kZSAqLCBpbm9fdCwgY29uc3Qg
aW50KTsKCgoKCgoKc3RydWN0IGhmc19zYl9pbmZvIHsKICAgICAgICBpbnQgbWFnaWM7CiAgICAg
ICAgc3RydWN0IGhmc19tZGIgKnNfbWRiOwogICAgICAgIGludCBzX3F1aWV0OwoKICAgICAgICBp
bnQgc19sb3dlcmNhc2U7CiAgICAgICAgaW50IHNfYWZwZDsKICAgICAgICBpbnQgc192ZXJzaW9u
OwogICAgICAgIGhmc19uYW1laW5fZm4gc19uYW1laW47CgoKICAgICAgICBoZnNfbmFtZW91dF9m
biBzX25hbWVvdXQ7CgoKICAgICAgICBoZnNfaWZpbGxfZm4gc19pZmlsbDsKCiAgICAgICAgY29u
c3Qgc3RydWN0IGhmc19uYW1lICpzX3Jlc2VydmVkMTsKICAgICAgICBjb25zdCBzdHJ1Y3QgaGZz
X25hbWUgKnNfcmVzZXJ2ZWQyOwogICAgICAgIF9fdTMyIHNfdHlwZTsKICAgICAgICBfX3UzMiBz
X2NyZWF0b3I7CiAgICAgICAgdW1vZGVfdCBzX3VtYXNrOwoKICAgICAgICB1aWRfdCBzX3VpZDsK
ICAgICAgICBnaWRfdCBzX2dpZDsKICAgICAgICBjaGFyIHNfY29udjsKfTsKIyA2NzMgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvYWRmc19mc19zYi5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvYWRmc19mc19zYi5oIgpzdHJ1Y3QgYWRmc19kaXNjbWFwOwpzdHJ1Y3QgYWRmc19kaXJfb3Bz
OwoKCgoKc3RydWN0IGFkZnNfc2JfaW5mbyB7CiAgICAgICAgc3RydWN0IGFkZnNfZGlzY21hcCAq
c19tYXA7CiAgICAgICAgc3RydWN0IGFkZnNfZGlyX29wcyAqc19kaXI7CgogICAgICAgIHVpZF90
IHNfdWlkOwogICAgICAgIGdpZF90IHNfZ2lkOwogICAgICAgIHVtb2RlX3Qgc19vd25lcl9tYXNr
OwogICAgICAgIHVtb2RlX3Qgc19vdGhlcl9tYXNrOwoKICAgICAgICBfX3UzMiBzX2lkc19wZXJf
em9uZTsKICAgICAgICBfX3UzMiBzX2lkbGVuOwogICAgICAgIF9fdTMyIHNfbWFwX3NpemU7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBzX3NpemU7CiAgICAgICAgc2lnbmVkIGludCBzX21hcDJibGs7
CiAgICAgICAgdW5zaWduZWQgaW50IHNfbG9nMnNoYXJlc2l6ZTsKICAgICAgICB1bnNpZ25lZCBp
bnQgc192ZXJzaW9uOwogICAgICAgIHVuc2lnbmVkIGludCBzX25hbWVsZW47Cn07CiMgNjc0ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L3FueDRfZnNfc2IuaCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3FueDRfZnNfc2IuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Fu
eDRfZnMuaCIgMQojIDEzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3FueDRfZnMuaCIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3FueHR5cGVzLmgiIDEKIyAxNCAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9xbng0X2ZzLmgiIDIKIyA0NSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9xbng0X2ZzLmgiCnN0cnVjdCBxbng0X2lub2RlX2VudHJ5IHsKICAg
ICAgICBjaGFyIGRpX2ZuYW1lWzE2XTsKICAgICAgICBxbng0X29mZl90IGRpX3NpemU7CiAgICAg
ICAgcW54NF94dG50X3QgZGlfZmlyc3RfeHRudDsKICAgICAgICBfX3UzMiBkaV94YmxrOwogICAg
ICAgIF9fczMyIGRpX2Z0aW1lOwogICAgICAgIF9fczMyIGRpX210aW1lOwogICAgICAgIF9fczMy
IGRpX2F0aW1lOwogICAgICAgIF9fczMyIGRpX2N0aW1lOwogICAgICAgIHFueDRfbnh0bnRfdCBk
aV9udW1feHRudHM7CiAgICAgICAgcW54NF9tb2RlX3QgZGlfbW9kZTsKICAgICAgICBxbng0X211
aWRfdCBkaV91aWQ7CiAgICAgICAgcW54NF9tZ2lkX3QgZGlfZ2lkOwogICAgICAgIHFueDRfbmxp
bmtfdCBkaV9ubGluazsKICAgICAgICBfX3U4IGRpX3plcm9bNF07CiAgICAgICAgcW54NF9mdHlw
ZV90IGRpX3R5cGU7CiAgICAgICAgX191OCBkaV9zdGF0dXM7Cn07CgpzdHJ1Y3QgcW54NF9saW5r
X2luZm8gewogICAgICAgIGNoYXIgZGxfZm5hbWVbNDhdOwogICAgICAgIF9fdTMyIGRsX2lub2Rl
X2JsazsKICAgICAgICBfX3U4IGRsX2lub2RlX25keDsKICAgICAgICBfX3U4IGRsX3NwYXJlWzEw
XTsKICAgICAgICBfX3U4IGRsX3N0YXR1czsKfTsKCnN0cnVjdCBxbng0X3hibGsgewogICAgICAg
IF9fdTMyIHhibGtfbmV4dF94YmxrOwogICAgICAgIF9fdTMyIHhibGtfcHJldl94YmxrOwogICAg
ICAgIF9fdTggeGJsa19udW1feHRudHM7CiAgICAgICAgX191OCB4YmxrX3NwYXJlWzNdOwogICAg
ICAgIF9fczMyIHhibGtfbnVtX2Jsb2NrczsKICAgICAgICBxbng0X3h0bnRfdCB4YmxrX3h0bnRz
WzYwXTsKICAgICAgICBjaGFyIHhibGtfc2lnbmF0dXJlWzhdOwogICAgICAgIHFueDRfeHRudF90
IHhibGtfZmlyc3RfeHRudDsKfTsKCnN0cnVjdCBxbng0X3N1cGVyX2Jsb2NrIHsKICAgICAgICBz
dHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSBSb290RGlyOwogICAgICAgIHN0cnVjdCBxbng0X2lub2Rl
X2VudHJ5IElub2RlOwogICAgICAgIHN0cnVjdCBxbng0X2lub2RlX2VudHJ5IEJvb3Q7CiAgICAg
ICAgc3RydWN0IHFueDRfaW5vZGVfZW50cnkgQWx0Qm9vdDsKfTsKIyAxMDAgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvcW54NF9mcy5oIgpleHRlcm4gc3RydWN0IGRlbnRyeSAqcW54NF9s
b29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7CmV4dGVybiB1
bnNpZ25lZCBsb25nIHFueDRfY291bnRfZnJlZV9ibG9ja3Moc3RydWN0IHN1cGVyX2Jsb2NrICpz
Yik7CmV4dGVybiB1bnNpZ25lZCBsb25nIHFueDRfYmxvY2tfbWFwKHN0cnVjdCBpbm9kZSAqaW5v
ZGUsIGxvbmcgaWJsb2NrKTsKCmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnFueDRfZ2V0Ymxr
KHN0cnVjdCBpbm9kZSAqLCBpbnQsIGludCk7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnFu
eDRfYnJlYWQoc3RydWN0IGlub2RlICosIGludCwgaW50KTsKCmV4dGVybiBpbnQgcW54NF9jcmVh
dGUoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50IG1vZGUpOwpl
eHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMgcW54NF9maWxlX2lub2RlX29wZXJhdGlvbnM7
CmV4dGVybiBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBxbng0X2Rpcl9pbm9kZV9vcGVyYXRpb25z
OwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBxbng0X2ZpbGVfb3BlcmF0aW9uczsKZXh0
ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcW54NF9kaXJfb3BlcmF0aW9uczsKZXh0ZXJuIGlu
dCBxbng0X2lzX2ZyZWUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgbG9uZyBibG9jayk7CmV4dGVy
biBpbnQgcW54NF9zZXRfYml0bWFwKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGxvbmcgYmxvY2ss
IGludCBidXN5KTsKZXh0ZXJuIGludCBxbng0X2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBz
dHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCBtb2RlKTsKZXh0ZXJuIHZvaWQgcW54NF90cnVuY2F0
ZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJuIHZvaWQgcW54NF9mcmVlX2lub2RlKHN0cnVj
dCBpbm9kZSAqaW5vZGUpOwpleHRlcm4gaW50IHFueDRfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGly
LCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOwpleHRlcm4gaW50IHFueDRfcm1kaXIoc3RydWN0IGlu
b2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7CmV4dGVybiBpbnQgcW54NF9zeW5jX2Zp
bGUoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50KTsKZXh0ZXJu
IGludCBxbng0X3N5bmNfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSk7CmV4dGVybiBpbnQgcW54
NF9nZXRfYmxvY2soc3RydWN0IGlub2RlICppbm9kZSwgbG9uZyBpYmxvY2ssIHN0cnVjdCBidWZm
ZXJfaGVhZCAqYmgsIGludCBjcmVhdGUpOwojIDE1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L3FueDRfZnNfc2IuaCIgMgoKCgoKCnN0cnVjdCBxbng0X3NiX2luZm8gewogICAgICAgIHN0
cnVjdCBidWZmZXJfaGVhZCAqc2JfYnVmOwogICAgICAgIHN0cnVjdCBxbng0X3N1cGVyX2Jsb2Nr
ICpzYjsKICAgICAgICB1bnNpZ25lZCBpbnQgVmVyc2lvbjsKICAgICAgICBzdHJ1Y3QgcW54NF9p
bm9kZV9lbnRyeSAqQml0TWFwOwp9OwojIDY3NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9yZWlzZXJmc19mc19z
Yi5oIiAxCgoKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHF1ZXVlLmgi
IDEKIyAxNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90cXVldWUuaCIKIyAxICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDEKIyAxNyAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC90cXVldWUuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvbGlzdC5oIiAxCiMgMTggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHF1ZXVl
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIgMQojIDE5ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9hc20vc3lzdGVtLmgiIDEKIyAyMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC90cXVldWUuaCIgMgojIDM4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3RxdWV1
ZS5oIgpzdHJ1Y3QgdHFfc3RydWN0IHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBzeW5jOwogICAgICAgIHZvaWQgKCpyb3V0aW5lKSh2b2lkICop
OwogICAgICAgIHZvaWQgKmRhdGE7Cn07CiMgNjQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvdHF1ZXVlLmgiCnR5cGVkZWYgc3RydWN0IGxpc3RfaGVhZCB0YXNrX3F1ZXVlOwoKCgoKZXh0
ZXJuIHRhc2tfcXVldWUgdHFfdGltZXIsIHRxX2ltbWVkaWF0ZSwgdHFfZGlzazsKIyA5NCAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90cXVldWUuaCIKZXh0ZXJuIHNwaW5sb2NrX3QgdHF1
ZXVlX2xvY2s7CgoKCgoKc3RhdGljIGlubGluZSBpbnQgcXVldWVfdGFzayhzdHJ1Y3QgdHFfc3Ry
dWN0ICpiaF9wb2ludGVyLCB0YXNrX3F1ZXVlICpiaF9saXN0KQp7CiAgICAgICAgaW50IHJldCA9
IDA7CiAgICAgICAgaWYgKCF0ZXN0X2FuZF9zZXRfYml0KDAsJmJoX3BvaW50ZXItPnN5bmMpKSB7
CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgICAgICAgICAgZG8g
eyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxh
Z3MpOiA6Im1lbW9yeSIpOyAodm9pZCkoJnRxdWV1ZV9sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAg
ICAgICAgICAgICBsaXN0X2FkZF90YWlsKCZiaF9wb2ludGVyLT5saXN0LCBiaF9saXN0KTsKICAg
ICAgICAgICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygi
cHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7IH0gd2hpbGUg
KDApOwogICAgICAgICAgICAgICAgcmV0ID0gMTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJl
dDsKfQoKCgoKCmV4dGVybiB2b2lkIF9fcnVuX3Rhc2tfcXVldWUodGFza19xdWV1ZSAqbGlzdCk7
CgpzdGF0aWMgaW5saW5lIHZvaWQgcnVuX3Rhc2tfcXVldWUodGFza19xdWV1ZSAqbGlzdCkKewog
ICAgICAgIGlmICgoIWxpc3RfZW1wdHkoJipsaXN0KSkpCiAgICAgICAgICAgICAgICBfX3J1bl90
YXNrX3F1ZXVlKGxpc3QpOwp9CiMgOSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9yZWlz
ZXJmc19mc19zYi5oIiAyCiMgMjYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcmVpc2Vy
ZnNfZnNfc2IuaCIKc3RydWN0IHJlaXNlcmZzX3N1cGVyX2Jsb2NrCnsKICBfX3UzMiBzX2Jsb2Nr
X2NvdW50OwogIF9fdTMyIHNfZnJlZV9ibG9ja3M7CiAgX191MzIgc19yb290X2Jsb2NrOwogIF9f
dTMyIHNfam91cm5hbF9ibG9jazsKICBfX3UzMiBzX2pvdXJuYWxfZGV2OwojIDQzICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgiCiAgX191MzIgc19vcmlnX2pv
dXJuYWxfc2l6ZTsKICBfX3UzMiBzX2pvdXJuYWxfdHJhbnNfbWF4IDsKICBfX3UzMiBzX2pvdXJu
YWxfYmxvY2tfY291bnQgOwogIF9fdTMyIHNfam91cm5hbF9tYXhfYmF0Y2ggOwogIF9fdTMyIHNf
am91cm5hbF9tYXhfY29tbWl0X2FnZSA7CiAgX191MzIgc19qb3VybmFsX21heF90cmFuc19hZ2Ug
OwogIF9fdTE2IHNfYmxvY2tzaXplOwogIF9fdTE2IHNfb2lkX21heHNpemU7CiAgX191MTYgc19v
aWRfY3Vyc2l6ZTsKICBfX3UxNiBzX3N0YXRlOwogIGNoYXIgc19tYWdpY1sxMl07CiAgX191MzIg
c19oYXNoX2Z1bmN0aW9uX2NvZGU7CiAgX191MTYgc190cmVlX2hlaWdodDsKICBfX3UxNiBzX2Jt
YXBfbnI7CiAgX191MTYgc192ZXJzaW9uOwoKCgoKICBfX3UxNiBzX3Jlc2VydmVkOwogIF9fdTMy
IHNfaW5vZGVfZ2VuZXJhdGlvbjsKICBjaGFyIHNfdW51c2VkWzEyNF0gOwp9IF9fYXR0cmlidXRl
X18gKChfX3BhY2tlZF9fKSk7CiMgMTIxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Jl
aXNlcmZzX2ZzX3NiLmgiCnN0cnVjdCByZWlzZXJmc19zdXBlcl9ibG9ja192MQp7CiAgX191MzIg
c19ibG9ja19jb3VudDsKICBfX3UzMiBzX2ZyZWVfYmxvY2tzOwogIF9fdTMyIHNfcm9vdF9ibG9j
azsKICBfX3UzMiBzX2pvdXJuYWxfYmxvY2s7CiAgX191MzIgc19qb3VybmFsX2RldjsKICBfX3Uz
MiBzX29yaWdfam91cm5hbF9zaXplOwogIF9fdTMyIHNfam91cm5hbF90cmFuc19tYXggOwogIF9f
dTMyIHNfam91cm5hbF9ibG9ja19jb3VudCA7CiAgX191MzIgc19qb3VybmFsX21heF9iYXRjaCA7
CiAgX191MzIgc19qb3VybmFsX21heF9jb21taXRfYWdlIDsKICBfX3UzMiBzX2pvdXJuYWxfbWF4
X3RyYW5zX2FnZSA7CiAgX191MTYgc19ibG9ja3NpemU7CiAgX191MTYgc19vaWRfbWF4c2l6ZTsK
ICBfX3UxNiBzX29pZF9jdXJzaXplOwogIF9fdTE2IHNfc3RhdGU7CiAgY2hhciBzX21hZ2ljWzE2
XTsKICBfX3UxNiBzX3RyZWVfaGVpZ2h0OwogIF9fdTE2IHNfYm1hcF9ucjsKICBfX3UzMiBzX3Jl
c2VydmVkOwp9IF9fYXR0cmlidXRlX18gKChfX3BhY2tlZF9fKSk7CiMgMjAwICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgiCnN0cnVjdCByZWlzZXJmc19qb3Vy
bmFsX2Nub2RlIHsKICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoIDsKICBrZGV2X3QgZGV2IDsKICB1
bnNpZ25lZCBsb25nIGJsb2NrbnIgOwogIGludCBzdGF0ZSA7CiAgc3RydWN0IHJlaXNlcmZzX2pv
dXJuYWxfbGlzdCAqamxpc3QgOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlICpuZXh0
IDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqcHJldiA7CiAgc3RydWN0IHJlaXNl
cmZzX2pvdXJuYWxfY25vZGUgKmhwcmV2IDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9k
ZSAqaG5leHQgOwp9OwoKc3RydWN0IHJlaXNlcmZzX2JpdG1hcF9ub2RlIHsKICBpbnQgaWQgOwog
IGNoYXIgKmRhdGEgOwogIHN0cnVjdCBsaXN0X2hlYWQgbGlzdCA7Cn0gOwoKc3RydWN0IHJlaXNl
cmZzX2xpc3RfYml0bWFwIHsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9saXN0ICpqb3VybmFs
X2xpc3QgOwogIHN0cnVjdCByZWlzZXJmc19iaXRtYXBfbm9kZSAqKmJpdG1hcHMgOwp9IDsKCgoK
CnN0cnVjdCByZWlzZXJmc190cmFuc2FjdGlvbl9oYW5kbGUgewoKICBjaGFyICp0X2NhbGxlciA7
CiAgaW50IHRfYmxvY2tzX2xvZ2dlZCA7CiAgaW50IHRfYmxvY2tzX2FsbG9jYXRlZCA7CiAgdW5z
aWduZWQgbG9uZyB0X3RyYW5zX2lkIDsKICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnRfc3VwZXIgOwoK
fSA7CgoKCgoKCgpzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9saXN0IHsKICB1bnNpZ25lZCBsb25n
IGpfc3RhcnQgOwogIHVuc2lnbmVkIGxvbmcgal9sZW4gOwogIGF0b21pY190IGpfbm9uemVyb2xl
biA7CiAgYXRvbWljX3Qgal9jb21taXRfbGVmdCA7CiAgYXRvbWljX3Qgal9mbHVzaGluZyA7CiAg
YXRvbWljX3Qgal9jb21taXRfZmx1c2hpbmcgOwogIGF0b21pY190IGpfb2xkZXJfY29tbWl0c19k
b25lIDsKICB1bnNpZ25lZCBsb25nIGpfdHJhbnNfaWQgOwogIHRpbWVfdCBqX3RpbWVzdGFtcCA7
CiAgc3RydWN0IHJlaXNlcmZzX2xpc3RfYml0bWFwICpqX2xpc3RfYml0bWFwIDsKICBzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKmpfY29tbWl0X2JoIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9k
ZSAqal9yZWFsYmxvY2sgOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlICpqX2ZyZWVk
bGlzdCA7CiAgd2FpdF9xdWV1ZV9oZWFkX3Qgal9jb21taXRfd2FpdCA7CiAgd2FpdF9xdWV1ZV9o
ZWFkX3Qgal9mbHVzaF93YWl0IDsKfSA7CgpzdHJ1Y3QgcmVpc2VyZnNfcGFnZV9saXN0IDsKCnN0
cnVjdCByZWlzZXJmc19qb3VybmFsIHsKICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiogal9hcF9ibG9j
a3MgOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlICpqX2xhc3QgOwogIHN0cnVjdCBy
ZWlzZXJmc19qb3VybmFsX2Nub2RlICpqX2ZpcnN0IDsKCiAgaW50IGpfc3RhdGUgOwogIHVuc2ln
bmVkIGxvbmcgal90cmFuc19pZCA7CiAgdW5zaWduZWQgbG9uZyBqX21vdW50X2lkIDsKICB1bnNp
Z25lZCBsb25nIGpfc3RhcnQgOwogIHVuc2lnbmVkIGxvbmcgal9sZW4gOwogIHVuc2lnbmVkIGxv
bmcgal9sZW5fYWxsb2MgOwogIGF0b21pY190IGpfd2NvdW50IDsKICB1bnNpZ25lZCBsb25nIGpf
YmNvdW50IDsKICB1bnNpZ25lZCBsb25nIGpfZmlyc3RfdW5mbHVzaGVkX29mZnNldCA7CiAgdW5z
aWduZWQgbG9uZyBqX2xhc3RfZmx1c2hfdHJhbnNfaWQgOwogIHN0cnVjdCBidWZmZXJfaGVhZCAq
al9oZWFkZXJfYmggOwoKCgoKICBzdHJ1Y3QgcmVpc2VyZnNfcGFnZV9saXN0ICpqX2ZsdXNoX3Bh
Z2VzIDsKICB0aW1lX3Qgal90cmFuc19zdGFydF90aW1lIDsKICB3YWl0X3F1ZXVlX2hlYWRfdCBq
X3dhaXQgOwogIGF0b21pY190IGpfd2xvY2sgOwogIHdhaXRfcXVldWVfaGVhZF90IGpfam9pbl93
YWl0IDsKICBhdG9taWNfdCBqX2psb2NrIDsKICBpbnQgal9qb3VybmFsX2xpc3RfaW5kZXggOwog
IGludCBqX2xpc3RfYml0bWFwX2luZGV4IDsKICBpbnQgal9tdXN0X3dhaXQgOwogIGludCBqX25l
eHRfZnVsbF9mbHVzaCA7CiAgaW50IGpfbmV4dF9hc3luY19mbHVzaCA7CgogIGludCBqX2Nub2Rl
X3VzZWQgOwogIGludCBqX2Nub2RlX2ZyZWUgOwoKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9j
bm9kZSAqal9jbm9kZV9mcmVlX2xpc3QgOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2Rl
ICpqX2Nub2RlX2ZyZWVfb3JpZyA7CgogIGludCBqX2ZyZWVfYml0bWFwX25vZGVzIDsKICBpbnQg
al91c2VkX2JpdG1hcF9ub2RlcyA7CiAgc3RydWN0IGxpc3RfaGVhZCBqX2JpdG1hcF9ub2RlcyA7
CiAgc3RydWN0IGlub2RlIGpfZHVtbXlfaW5vZGUgOwogIHN0cnVjdCByZWlzZXJmc19saXN0X2Jp
dG1hcCBqX2xpc3RfYml0bWFwWzVdIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9saXN0IGpf
am91cm5hbF9saXN0WzY0XSA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfaGFz
aF90YWJsZVs4MTkyXSA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfbGlzdF9o
YXNoX3RhYmxlWzgxOTJdIDsKCiAgc3RydWN0IGxpc3RfaGVhZCBqX3ByZWFsbG9jX2xpc3Q7Cn07
CgoKCgp0eXBlZGVmIF9fdTMyICgqaGFzaGZfdCkgKGNvbnN0IHNpZ25lZCBjaGFyICosIGludCk7
CgoKc3RydWN0IHJlaXNlcmZzX3NiX2luZm8KewogICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc19z
Ymg7CgoKICAgIHN0cnVjdCByZWlzZXJmc19zdXBlcl9ibG9jayAqIHNfcnM7CiAgICBzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKiogc19hcF9iaXRtYXA7CiAgICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbCAq
c19qb3VybmFsIDsKICAgIHVuc2lnbmVkIHNob3J0IHNfbW91bnRfc3RhdGU7CgoKICAgIHZvaWQg
KCplbmRfaW9faGFuZGxlcikoc3RydWN0IGJ1ZmZlcl9oZWFkICosIGludCk7CiAgICBoYXNoZl90
IHNfaGFzaF9mdW5jdGlvbjsKCgogICAgdW5zaWduZWQgbG9uZyBzX21vdW50X29wdDsKCgoKCiAg
ICB3YWl0X3F1ZXVlX2hlYWRfdCBzX3dhaXQ7CgogICAgYXRvbWljX3Qgc19nZW5lcmF0aW9uX2Nv
dW50ZXI7CgoKCiAgICBpbnQgc19rbWFsbG9jczsKICAgIGludCBzX2Rpc2tfcmVhZHM7CiAgICBp
bnQgc19kaXNrX3dyaXRlczsKICAgIGludCBzX2ZpeF9ub2RlczsKICAgIGludCBzX2RvX2JhbGFu
Y2U7CiAgICBpbnQgc191bm5lZWRlZF9sZWZ0X25laWdoYm9yOwogICAgaW50IHNfZ29vZF9zZWFy
Y2hfYnlfa2V5X3JlYWRhOwogICAgaW50IHNfYm1hcHM7CiAgICBpbnQgc19ibWFwc193aXRob3V0
X3NlYXJjaDsKICAgIGludCBzX2RpcmVjdDJpbmRpcmVjdDsKICAgIGludCBzX2luZGlyZWN0MmRp
cmVjdDsKfTsKIyA0MTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNf
c2IuaCIKdm9pZCByZWlzZXJmc19maWxlX2J1ZmZlciAoc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgs
IGludCBsaXN0KTsKaW50IHJlaXNlcmZzX2lzX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqcykg
OwppbnQgam91cm5hbF9tYXJrX2RpcnR5KHN0cnVjdCByZWlzZXJmc190cmFuc2FjdGlvbl9oYW5k
bGUgKiwgc3RydWN0IHN1cGVyX2Jsb2NrICosIHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpIDsKaW50
IGZsdXNoX29sZF9jb21taXRzKHN0cnVjdCBzdXBlcl9ibG9jayAqcywgaW50KSA7CmludCBzaG93
X3JlaXNlcmZzX2xvY2tzKHZvaWQpIDsKaW50IHJlaXNlcmZzX3Jlc2l6ZShzdHJ1Y3Qgc3VwZXJf
YmxvY2sgKiwgdW5zaWduZWQgbG9uZykgOwojIDY3NiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9iZnNfZnNfc2Iu
aCIgMQojIDEyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Jmc19mc19zYi5oIgpzdHJ1
Y3QgYmZzX3NiX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfYmxvY2tzOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgc2lfZnJlZWI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaV9mcmVlaTsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNpX2xmX2lvZmY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBz
aV9sZl9zYmxrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfbGZfZWJsazsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNpX2xhc3RpOwogICAgICAgIGNoYXIgKiBzaV9pbWFwOwogICAgICAgIHN0cnVj
dCBidWZmZXJfaGVhZCAqIHNpX3NiaDsKICAgICAgICBzdHJ1Y3QgYmZzX3N1cGVyX2Jsb2NrICog
c2lfYmZzX3NiOwp9OwojIDY3NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC91ZGZfZnNfc2IuaCIgMQojIDIxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3VkZl9mc19zYi5oIgojcHJhZ21hIHBhY2soMSkK
IyAzMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC91ZGZfZnNfc2IuaCIKc3RydWN0IHVk
Zl9zcGFyaW5nX2RhdGEKewogICAgICAgIF9fdTE2IHNfcGFja2V0X2xlbjsKICAgICAgICBzdHJ1
Y3QgYnVmZmVyX2hlYWQgKnNfc3Bhcl9tYXBbNF07Cn07CgpzdHJ1Y3QgdWRmX3ZpcnR1YWxfZGF0
YQp7CiAgICAgICAgX191MzIgc19udW1fZW50cmllczsKICAgICAgICBfX3UxNiBzX3N0YXJ0X29m
ZnNldDsKfTsKCnN0cnVjdCB1ZGZfYml0bWFwCnsKICAgICAgICBfX3UzMiBzX2V4dExlbmd0aDsK
ICAgICAgICBfX3UzMiBzX2V4dFBvc2l0aW9uOwogICAgICAgIF9fdTE2IHNfbnJfZ3JvdXBzOwog
ICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqKnNfYmxvY2tfYml0bWFwOwp9OwoKc3RydWN0IHVk
Zl9wYXJ0X21hcAp7CiAgICAgICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHJ1
Y3QgdWRmX2JpdG1hcCAqc19iaXRtYXA7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKnNf
dGFibGU7CiAgICAgICAgfSBzX3VzcGFjZTsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAg
ICAgICAgICAgIHN0cnVjdCB1ZGZfYml0bWFwICpzX2JpdG1hcDsKICAgICAgICAgICAgICAgIHN0
cnVjdCBpbm9kZSAqc190YWJsZTsKICAgICAgICB9IHNfZnNwYWNlOwogICAgICAgIF9fdTMyIHNf
cGFydGl0aW9uX3Jvb3Q7CiAgICAgICAgX191MzIgc19wYXJ0aXRpb25fbGVuOwogICAgICAgIF9f
dTE2IHNfcGFydGl0aW9uX3R5cGU7CiAgICAgICAgX191MTYgc19wYXJ0aXRpb25fbnVtOwogICAg
ICAgIHVuaW9uCiAgICAgICAgewogICAgICAgICAgICAgICAgc3RydWN0IHVkZl9zcGFyaW5nX2Rh
dGEgc19zcGFyaW5nOwogICAgICAgICAgICAgICAgc3RydWN0IHVkZl92aXJ0dWFsX2RhdGEgc192
aXJ0dWFsOwogICAgICAgIH0gc190eXBlX3NwZWNpZmljOwogICAgICAgIF9fdTMyICgqc19wYXJ0
aXRpb25fZnVuYykoc3RydWN0IHN1cGVyX2Jsb2NrICosIF9fdTMyLCBfX3UxNiwgX191MzIpOwog
ICAgICAgIF9fdTE2IHNfdm9sdW1lc2VxbnVtOwogICAgICAgIF9fdTE2IHNfcGFydGl0aW9uX2Zs
YWdzOwp9OwoKI3ByYWdtYSBwYWNrKCkKCnN0cnVjdCB1ZGZfc2JfaW5mbwp7CiAgICAgICAgc3Ry
dWN0IHVkZl9wYXJ0X21hcCAqc19wYXJ0bWFwczsKICAgICAgICBfX3U4IHNfdm9saWRlbnRbMzJd
OwoKCiAgICAgICAgX191MTYgc19wYXJ0aXRpb25zOwogICAgICAgIF9fdTE2IHNfcGFydGl0aW9u
OwoKCiAgICAgICAgX19zMzIgc19zZXNzaW9uOwogICAgICAgIF9fdTMyIHNfYW5jaG9yWzRdOwog
ICAgICAgIF9fdTMyIHNfbGFzdGJsb2NrOwoKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNf
bHZpZGJoOwoKCiAgICAgICAgbW9kZV90IHNfdW1hc2s7CiAgICAgICAgZ2lkX3Qgc19naWQ7CiAg
ICAgICAgdWlkX3Qgc191aWQ7CgoKICAgICAgICB0aW1lX3Qgc19yZWNvcmR0aW1lOwoKCiAgICAg
ICAgX191MTYgc19zZXJpYWxudW07CgoKICAgICAgICBfX3UxNiBzX3VkZnJldjsKCgogICAgICAg
IF9fdTMyIHNfZmxhZ3M7CgoKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpzX25sc19tYXA7CgoK
ICAgICAgICBzdHJ1Y3QgaW5vZGUgKnNfdmF0Owp9OwojIDY3OCAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uY3Bf
ZnNfc2IuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25jcF9mc19zYi5o
IgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDEyICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25jcF9mc19zYi5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9uY3BfbW91bnQuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L25jcF9tb3VudC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
dHlwZXMuaCIgMQojIDEyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25jcF9tb3VudC5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uY3AuaCIgMQojIDEzICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25jcC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvdHlwZXMuaCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25j
cC5oIiAyCiMgMjIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmNwLmgiCnN0cnVjdCBu
Y3BfcmVxdWVzdF9oZWFkZXIgewogICAgICAgIF9fdTE2IHR5cGUgX19hdHRyaWJ1dGVfXygocGFj
a2VkKSk7CiAgICAgICAgX191OCBzZXF1ZW5jZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAg
ICAgICBfX3U4IGNvbm5fbG93IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTgg
dGFzayBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGNvbm5faGlnaCBfX2F0
dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGZ1bmN0aW9uIF9fYXR0cmlidXRlX18o
KHBhY2tlZCkpOwogICAgICAgIF9fdTggZGF0YVswXSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK
fTsKCgoKCnN0cnVjdCBuY3BfcmVwbHlfaGVhZGVyIHsKICAgICAgICBfX3UxNiB0eXBlIF9fYXR0
cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggc2VxdWVuY2UgX19hdHRyaWJ1dGVfXygo
cGFja2VkKSk7CiAgICAgICAgX191OCBjb25uX2xvdyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK
ICAgICAgICBfX3U4IHRhc2sgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBj
b25uX2hpZ2ggX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb21wbGV0aW9u
X2NvZGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb25uZWN0aW9uX3N0
YXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggZGF0YVswXSBfX2F0dHJp
YnV0ZV9fKChwYWNrZWQpKTsKfTsKCgoKc3RydWN0IG5jcF92b2x1bWVfaW5mbyB7CiAgICAgICAg
X191MzIgdG90YWxfYmxvY2tzOwogICAgICAgIF9fdTMyIGZyZWVfYmxvY2tzOwogICAgICAgIF9f
dTMyIHB1cmdlYWJsZV9ibG9ja3M7CiAgICAgICAgX191MzIgbm90X3lldF9wdXJnZWFibGVfYmxv
Y2tzOwogICAgICAgIF9fdTMyIHRvdGFsX2Rpcl9lbnRyaWVzOwogICAgICAgIF9fdTMyIGF2YWls
YWJsZV9kaXJfZW50cmllczsKICAgICAgICBfX3U4IHNlY3RvcnNfcGVyX2Jsb2NrOwogICAgICAg
IGNoYXIgdm9sdW1lX25hbWVbKDE2KSArIDFdOwp9OwojIDExMiAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9uY3AuaCIKc3RydWN0IG53X2luZm9fc3RydWN0IHsKICAgICAgICBfX3UzMiBz
cGFjZUFsbG9jIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIGF0dHJpYnV0
ZXMgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgZmxhZ3MgX19hdHRyaWJ1
dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgZGF0YVN0cmVhbVNpemUgX19hdHRyaWJ1dGVf
XygocGFja2VkKSk7CiAgICAgICAgX191MzIgdG90YWxTdHJlYW1TaXplIF9fYXR0cmlidXRlX18o
KHBhY2tlZCkpOwogICAgICAgIF9fdTE2IG51bWJlck9mU3RyZWFtcyBfX2F0dHJpYnV0ZV9fKChw
YWNrZWQpKTsKICAgICAgICBfX3UxNiBjcmVhdGlvblRpbWUgX19hdHRyaWJ1dGVfXygocGFja2Vk
KSk7CiAgICAgICAgX191MTYgY3JlYXRpb25EYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwog
ICAgICAgIF9fdTMyIGNyZWF0b3JJRCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBf
X3UxNiBtb2RpZnlUaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IG1v
ZGlmeURhdGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgbW9kaWZpZXJJ
RCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBsYXN0QWNjZXNzRGF0ZSBf
X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBhcmNoaXZlVGltZSBfX2F0dHJp
YnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBhcmNoaXZlRGF0ZSBfX2F0dHJpYnV0ZV9f
KChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBhcmNoaXZlcklEIF9fYXR0cmlidXRlX18oKHBhY2tl
ZCkpOwogICAgICAgIF9fdTE2IGluaGVyaXRlZFJpZ2h0c01hc2sgX19hdHRyaWJ1dGVfXygocGFj
a2VkKSk7CiAgICAgICAgX191MzIgZGlyRW50TnVtIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwog
ICAgICAgIF9fdTMyIERvc0Rpck51bSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBf
X3UzMiB2b2xOdW1iZXIgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgRUFE
YXRhU2l6ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBFQUtleUNvdW50
IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIEVBS2V5U2l6ZSBfX2F0dHJp
YnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBOU0NyZWF0b3IgX19hdHRyaWJ1dGVfXygo
cGFja2VkKSk7CiAgICAgICAgX191OCBuYW1lTGVuIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwog
ICAgICAgIF9fdTggZW50cnlOYW1lWzI1Nl0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07CiMg
MTU2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25jcC5oIgpzdHJ1Y3QgbndfbW9kaWZ5
X2Rvc19pbmZvIHsKICAgICAgICBfX3UzMiBhdHRyaWJ1dGVzIF9fYXR0cmlidXRlX18oKHBhY2tl
ZCkpOwogICAgICAgIF9fdTE2IGNyZWF0aW9uRGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK
ICAgICAgICBfX3UxNiBjcmVhdGlvblRpbWUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAg
ICAgX191MzIgY3JlYXRvcklEIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2
IG1vZGlmeURhdGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgbW9kaWZ5
VGltZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBtb2RpZmllcklEIF9f
YXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGFyY2hpdmVEYXRlIF9fYXR0cmli
dXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGFyY2hpdmVUaW1lIF9fYXR0cmlidXRlX18o
KHBhY2tlZCkpOwogICAgICAgIF9fdTMyIGFyY2hpdmVySUQgX19hdHRyaWJ1dGVfXygocGFja2Vk
KSk7CiAgICAgICAgX191MTYgbGFzdEFjY2Vzc0RhdGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7
CiAgICAgICAgX191MTYgaW5oZXJpdGFuY2VHcmFudE1hc2sgX19hdHRyaWJ1dGVfXygocGFja2Vk
KSk7CiAgICAgICAgX191MTYgaW5oZXJpdGFuY2VSZXZva2VNYXNrIF9fYXR0cmlidXRlX18oKHBh
Y2tlZCkpOwogICAgICAgIF9fdTMyIG1heGltdW1TcGFjZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQp
KTsKfTsKCnN0cnVjdCBud19zZWFyY2hfc2VxdWVuY2UgewogICAgICAgIF9fdTggdm9sTnVtYmVy
IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIGRpckJhc2UgX19hdHRyaWJ1
dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgc2VxdWVuY2UgX19hdHRyaWJ1dGVfXygocGFj
a2VkKSk7Cn07CiMgMTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmNwX21vdW50Lmgi
IDIKIyAyNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uY3BfbW91bnQuaCIKc3RydWN0
IG5jcF9tb3VudF9kYXRhIHsKICAgICAgICBpbnQgdmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBp
bnQgbmNwX2ZkOwogICAgICAgIF9fa2VybmVsX3VpZF90IG1vdW50ZWRfdWlkOwogICAgICAgIF9f
a2VybmVsX3BpZF90IHdkb2dfcGlkOwoKICAgICAgICB1bnNpZ25lZCBjaGFyIG1vdW50ZWRfdm9s
WygxNikgKyAxXTsKICAgICAgICB1bnNpZ25lZCBpbnQgdGltZV9vdXQ7CgogICAgICAgIHVuc2ln
bmVkIGludCByZXRyeV9jb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CgogICAgICAg
IF9fa2VybmVsX3VpZF90IHVpZDsKICAgICAgICBfX2tlcm5lbF9naWRfdCBnaWQ7CiAgICAgICAg
X19rZXJuZWxfbW9kZV90IGZpbGVfbW9kZTsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgZGlyX21v
ZGU7Cn07CgoKCnN0cnVjdCBuY3BfbW91bnRfZGF0YV92NCB7CiAgICAgICAgaW50IHZlcnNpb247
CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgbW91
bnRlZF91aWQ7CgogICAgICAgIGxvbmcgd2RvZ19waWQ7CgogICAgICAgIHVuc2lnbmVkIGludCBu
Y3BfZmQ7CiAgICAgICAgdW5zaWduZWQgaW50IHRpbWVfb3V0OwoKICAgICAgICB1bnNpZ25lZCBp
bnQgcmV0cnlfY291bnQ7CgoKCiAgICAgICAgdW5zaWduZWQgbG9uZyB1aWQ7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBnaWQ7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgZmlsZV9tb2RlOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgZGlyX21vZGU7Cn07CgoKCnN0cnVjdCBuY3BfbW91bnRfZGF0YV9rZXJu
ZWwgewogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgaW50IGlu
dF9mbGFnczsKCiAgICAgICAgX19rZXJuZWxfdWlkMzJfdCBtb3VudGVkX3VpZDsKICAgICAgICBf
X2tlcm5lbF9waWRfdCB3ZG9nX3BpZDsKICAgICAgICB1bnNpZ25lZCBpbnQgbmNwX2ZkOwogICAg
ICAgIHVuc2lnbmVkIGludCB0aW1lX291dDsKCiAgICAgICAgdW5zaWduZWQgaW50IHJldHJ5X2Nv
dW50OwogICAgICAgIHVuc2lnbmVkIGNoYXIgbW91bnRlZF92b2xbKDE2KSArIDFdOwogICAgICAg
IF9fa2VybmVsX3VpZDMyX3QgdWlkOwogICAgICAgIF9fa2VybmVsX2dpZDMyX3QgZ2lkOwogICAg
ICAgIF9fa2VybmVsX21vZGVfdCBmaWxlX21vZGU7CiAgICAgICAgX19rZXJuZWxfbW9kZV90IGRp
cl9tb2RlOwp9OwojIDEzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25jcF9mc19zYi5o
IiAyCgoKCgoKc3RydWN0IG5jcF9zZXJ2ZXIgewoKICAgICAgICBzdHJ1Y3QgbmNwX21vdW50X2Rh
dGFfa2VybmVsIG07CgoKCiAgICAgICAgX191OCBuYW1lX3NwYWNlWyg2NCkgKyAyXTsKCiAgICAg
ICAgc3RydWN0IGZpbGUgKm5jcF9maWxwOwoKICAgICAgICB1OCBzZXF1ZW5jZTsKICAgICAgICB1
OCB0YXNrOwogICAgICAgIHUxNiBjb25uZWN0aW9uOwoKICAgICAgICB1OCBjb21wbGV0aW9uOwog
ICAgICAgIHU4IGNvbm5fc3RhdHVzOwoKCgogICAgICAgIGludCBidWZmZXJfc2l6ZTsKCiAgICAg
ICAgaW50IHJlcGx5X3NpemU7CgogICAgICAgIGludCBwYWNrZXRfc2l6ZTsKICAgICAgICB1bnNp
Z25lZCBjaGFyICpwYWNrZXQ7CgoKICAgICAgICBpbnQgbG9jazsKICAgICAgICBzdHJ1Y3Qgc2Vt
YXBob3JlIHNlbTsKCiAgICAgICAgaW50IGN1cnJlbnRfc2l6ZTsKICAgICAgICBpbnQgaGFzX3N1
YmZ1bmN0aW9uOwogICAgICAgIGludCBuY3BfcmVwbHlfc2l6ZTsKCiAgICAgICAgaW50IHJvb3Rf
c2V0dXBlZDsKCgogICAgICAgIGludCBzaWduX3dhbnRlZDsKICAgICAgICBpbnQgc2lnbl9hY3Rp
dmU7CiAgICAgICAgY2hhciBzaWduX3Jvb3RbOF07CiAgICAgICAgY2hhciBzaWduX2xhc3RbMTZd
OwoKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIGludCBhdXRoX3R5cGU7CiAgICAg
ICAgICAgICAgICBzaXplX3Qgb2JqZWN0X25hbWVfbGVuOwogICAgICAgICAgICAgICAgdm9pZCog
b2JqZWN0X25hbWU7CiAgICAgICAgICAgICAgICBpbnQgb2JqZWN0X3R5cGU7CiAgICAgICAgfSBh
dXRoOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgc2l6ZV90IGxlbjsKICAgICAg
ICAgICAgICAgIHZvaWQqIGRhdGE7CiAgICAgICAgfSBwcml2OwoKCiAgICAgICAgc3RydWN0IG5s
c190YWJsZSAqbmxzX3ZvbDsKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpubHNfaW87CgoKICAg
ICAgICBpbnQgZGVudHJ5X3R0bDsKCgogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKfTsKIyA5
MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uY3BfZnNfc2IuaCIKc3RhdGljIGlubGlu
ZSBpbnQgbmNwX2Nvbm5fdmFsaWQoc3RydWN0IG5jcF9zZXJ2ZXIgKnNlcnZlcikKewogICAgICAg
IHJldHVybiAoKHNlcnZlci0+Y29ubl9zdGF0dXMgJiAweDExKSA9PSAwKTsKfQoKc3RhdGljIGlu
bGluZSB2b2lkIG5jcF9pbnZhbGlkYXRlX2Nvbm4oc3RydWN0IG5jcF9zZXJ2ZXIgKnNlcnZlcikK
ewogICAgICAgIHNlcnZlci0+Y29ubl9zdGF0dXMgfD0gMHgwMTsKfQojIDY3OSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC91c2JkZXZfZnNfc2IuaCIgMQpzdHJ1Y3QgdXNiZGV2X3NiX2luZm8gewogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgc2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpbGlzdDsKICAg
ICAgICB1aWRfdCBkZXZ1aWQ7CiAgICAgICAgZ2lkX3QgZGV2Z2lkOwogICAgICAgIHVtb2RlX3Qg
ZGV2bW9kZTsKICAgICAgICB1aWRfdCBidXN1aWQ7CiAgICAgICAgZ2lkX3QgYnVzZ2lkOwogICAg
ICAgIHVtb2RlX3QgYnVzbW9kZTsKICAgICAgICB1aWRfdCBsaXN0dWlkOwogICAgICAgIGdpZF90
IGxpc3RnaWQ7CiAgICAgICAgdW1vZGVfdCBsaXN0bW9kZTsKfTsKIyA2ODAgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvY3JhbWZzX2ZzX3NiLmgiIDEKIyA2ODEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
ZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvamZmczJfZnNfc2IuaCIg
MQoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgNyAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9qZmZzMl9mc19zYi5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAxCiMgOCAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9qZmZzMl9mc19zYi5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9jb21wbGV0aW9uLmgiIDEKIyAxMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9jb21wbGV0aW9uLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC93YWl0Lmgi
IDEKIyAxMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb21wbGV0aW9uLmgiIDIKCnN0
cnVjdCBjb21wbGV0aW9uIHsKICAgICAgICB1bnNpZ25lZCBpbnQgZG9uZTsKICAgICAgICB3YWl0
X3F1ZXVlX2hlYWRfdCB3YWl0Owp9OwoKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGluaXRfY29t
cGxldGlvbihzdHJ1Y3QgY29tcGxldGlvbiAqeCkKewogICAgICAgIHgtPmRvbmUgPSAwOwogICAg
ICAgIGluaXRfd2FpdHF1ZXVlX2hlYWQoJngtPndhaXQpOwp9CgpleHRlcm4gdm9pZCB3YWl0X2Zv
cl9jb21wbGV0aW9uKHN0cnVjdCBjb21wbGV0aW9uICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o
MykpKTsKZXh0ZXJuIHZvaWQgY29tcGxldGUoc3RydWN0IGNvbXBsZXRpb24gKikgX19hdHRyaWJ1
dGVfXygocmVncGFybSgzKSkpOwojIDkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvamZm
czJfZnNfc2IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5o
IiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvamZmczJfZnNfc2IuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbGlzdC5oIiAxCiMgMTEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvamZmczJfZnNfc2IuaCIgMgojIDIwICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX3NiLmgiCnN0cnVjdCBqZmZzMl9zYl9pbmZvIHsKICAg
ICAgICBzdHJ1Y3QgbXRkX2luZm8gKm10ZDsKCiAgICAgICAgX191MzIgaGlnaGVzdF9pbm87CiAg
ICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwogICAgICAgIHNwaW5sb2NrX3Qgbm9kZWxpc3RfbG9j
azsKCgogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqZ2NfdGFzazsKICAgICAgICBzdHJ1Y3Qg
c2VtYXBob3JlIGdjX3RocmVhZF9zdGFydDsKICAgICAgICBzdHJ1Y3QgY29tcGxldGlvbiBnY190
aHJlYWRfZXhpdDsKCgoKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGFsbG9jX3NlbTsKCgoKCiAg
ICAgICAgX191MzIgZmxhc2hfc2l6ZTsKICAgICAgICBfX3UzMiB1c2VkX3NpemU7CiAgICAgICAg
X191MzIgZGlydHlfc2l6ZTsKICAgICAgICBfX3UzMiBmcmVlX3NpemU7CiAgICAgICAgX191MzIg
ZXJhc2luZ19zaXplOwogICAgICAgIF9fdTMyIGJhZF9zaXplOwogICAgICAgIF9fdTMyIHNlY3Rv
cl9zaXplOwoKCgogICAgICAgIF9fdTMyIG5yX2ZyZWVfYmxvY2tzOwogICAgICAgIF9fdTMyIG5y
X2VyYXNpbmdfYmxvY2tzOwoKICAgICAgICBfX3UzMiBucl9ibG9ja3M7CiAgICAgICAgc3RydWN0
IGpmZnMyX2VyYXNlYmxvY2sgKmJsb2NrczsKCiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxv
Y2sgKm5leHRibG9jazsKCiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKmdjYmxvY2s7
CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgY2xlYW5fbGlzdDsKICAgICAgICBzdHJ1Y3QgbGlz
dF9oZWFkIGRpcnR5X2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBlcmFzaW5nX2xpc3Q7
CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBlcmFzZV9wZW5kaW5nX2xpc3Q7CiAgICAgICAgc3Ry
dWN0IGxpc3RfaGVhZCBlcmFzZV9jb21wbGV0ZV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hl
YWQgZnJlZV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYmFkX2xpc3Q7CiAgICAgICAg
c3RydWN0IGxpc3RfaGVhZCBiYWRfdXNlZF9saXN0OwoKICAgICAgICBzcGlubG9ja190IGVyYXNl
X2NvbXBsZXRpb25fbG9jazsKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgZXJhc2Vfd2FpdDsK
ICAgICAgICBzdHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUgKmlub2NhY2hlX2xpc3RbMV07CiAgICAg
ICAgc3BpbmxvY2tfdCBpbm9jYWNoZV9sb2NrOwp9OwojIDY4MiAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9mcy5oIiAyCgpleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBzdXBlcl9ibG9ja3M7
CmV4dGVybiBzcGlubG9ja190IHNiX2xvY2s7CgoKCnN0cnVjdCBzdXBlcl9ibG9jayB7CiAgICAg
ICAgc3RydWN0IGxpc3RfaGVhZCBzX2xpc3Q7CiAgICAgICAga2Rldl90IHNfZGV2OwogICAgICAg
IHVuc2lnbmVkIGxvbmcgc19ibG9ja3NpemU7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX2Jsb2Nr
c2l6ZV9iaXRzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19kaXJ0OwogICAgICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyBzX21heGJ5dGVzOwogICAgICAgIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpz
X3R5cGU7CiAgICAgICAgc3RydWN0IHN1cGVyX29wZXJhdGlvbnMgKnNfb3A7CiAgICAgICAgc3Ry
dWN0IGRxdW90X29wZXJhdGlvbnMgKmRxX29wOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mbGFn
czsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfbWFnaWM7CiAgICAgICAgc3RydWN0IGRlbnRyeSAq
c19yb290OwogICAgICAgIHN0cnVjdCByd19zZW1hcGhvcmUgc191bW91bnQ7CiAgICAgICAgc3Ry
dWN0IHNlbWFwaG9yZSBzX2xvY2s7CiAgICAgICAgaW50IHNfY291bnQ7CiAgICAgICAgYXRvbWlj
X3Qgc19hY3RpdmU7CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgc19kaXJ0eTsKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkIHNfbG9ja2VkX2lub2RlczsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFk
IHNfZmlsZXM7CgogICAgICAgIHN0cnVjdCBibG9ja19kZXZpY2UgKnNfYmRldjsKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkIHNfaW5zdGFuY2VzOwogICAgICAgIHN0cnVjdCBxdW90YV9tb3VudF9v
cHRpb25zIHNfZHF1b3Q7CgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBt
aW5peF9zYl9pbmZvIG1pbml4X3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGV4dDJfc2JfaW5m
byBleHQyX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGhwZnNfc2JfaW5mbyBocGZzX3NiOwog
ICAgICAgICAgICAgICAgc3RydWN0IG50ZnNfc2JfaW5mbyBudGZzX3NiOwogICAgICAgICAgICAg
ICAgc3RydWN0IG1zZG9zX3NiX2luZm8gbXNkb3Nfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
aXNvZnNfc2JfaW5mbyBpc29mc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBuZnNfc2JfaW5m
byBuZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3lzdl9zYl9pbmZvIHN5c3Zfc2I7CiAg
ICAgICAgICAgICAgICBzdHJ1Y3QgYWZmc19zYl9pbmZvIGFmZnNfc2I7CiAgICAgICAgICAgICAg
ICBzdHJ1Y3QgdWZzX3NiX2luZm8gdWZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGVmc19z
Yl9pbmZvIGVmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBzaG1lbV9zYl9pbmZvIHNobWVt
X3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHJvbWZzX3NiX2luZm8gcm9tZnNfc2I7CiAgICAg
ICAgICAgICAgICBzdHJ1Y3Qgc21iX3NiX2luZm8gc21iZnNfc2I7CiAgICAgICAgICAgICAgICBz
dHJ1Y3QgaGZzX3NiX2luZm8gaGZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGFkZnNfc2Jf
aW5mbyBhZGZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHFueDRfc2JfaW5mbyBxbng0X3Ni
OwogICAgICAgICAgICAgICAgc3RydWN0IHJlaXNlcmZzX3NiX2luZm8gcmVpc2VyZnNfc2I7CiAg
ICAgICAgICAgICAgICBzdHJ1Y3QgYmZzX3NiX2luZm8gYmZzX3NiOwogICAgICAgICAgICAgICAg
c3RydWN0IHVkZl9zYl9pbmZvIHVkZl9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBuY3Bfc2Vy
dmVyIG5jcGZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHVzYmRldl9zYl9pbmZvIHVzYmRl
dmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGpmZnMyX3NiX2luZm8gamZmczJfc2I7CiAg
ICAgICAgICAgICAgICBzdHJ1Y3QgY3JhbWZzX3NiX2luZm8gY3JhbWZzX3NiOwogICAgICAgICAg
ICAgICAgdm9pZCAqZ2VuZXJpY19zYnA7CiAgICAgICAgfSB1OwoKCgoKICAgICAgICBzdHJ1Y3Qg
c2VtYXBob3JlIHNfdmZzX3JlbmFtZV9zZW07CiMgNzU0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L2ZzLmgiCiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBzX25mc2RfZnJlZV9wYXRoX3Nl
bTsKfTsKCgoKCmV4dGVybiBpbnQgdmZzX2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRl
bnRyeSAqLCBpbnQpOwpleHRlcm4gaW50IHZmc19ta2RpcihzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0
IGRlbnRyeSAqLCBpbnQpOwpleHRlcm4gaW50IHZmc19ta25vZChzdHJ1Y3QgaW5vZGUgKiwgc3Ry
dWN0IGRlbnRyeSAqLCBpbnQsIGRldl90KTsKZXh0ZXJuIGludCB2ZnNfc3ltbGluayhzdHJ1Y3Qg
aW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gaW50IHZmc19s
aW5rKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CmV4
dGVybiBpbnQgdmZzX3JtZGlyKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwpleHRl
cm4gaW50IHZmc191bmxpbmsoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CmV4dGVy
biBpbnQgdmZzX3JlbmFtZShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qg
aW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKIyA3ODggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvZnMuaCIKdHlwZWRlZiBpbnQgKCpmaWxsZGlyX3QpKHZvaWQgKiwgY29uc3QgY2hhciAq
LCBpbnQsIGxvZmZfdCwgaW5vX3QsIHVuc2lnbmVkKTsKCnN0cnVjdCBibG9ja19kZXZpY2Vfb3Bl
cmF0aW9ucyB7CiAgICAgICAgaW50ICgqb3BlbikgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmls
ZSAqKTsKICAgICAgICBpbnQgKCpyZWxlYXNlKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxl
ICopOwogICAgICAgIGludCAoKmlvY3RsKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICos
IHVuc2lnbmVkLCB1bnNpZ25lZCBsb25nKTsKICAgICAgICBpbnQgKCpjaGVja19tZWRpYV9jaGFu
Z2UpIChrZGV2X3QpOwogICAgICAgIGludCAoKnJldmFsaWRhdGUpIChrZGV2X3QpOwp9OwoKCgoK
CgpzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHsKICAgICAgICBzdHJ1Y3QgbW9kdWxlICpvd25lcjsK
ICAgICAgICBsb2ZmX3QgKCpsbHNlZWspIChzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGludCk7CiAg
ICAgICAgc3NpemVfdCAoKnJlYWQpIChzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVfdCwgbG9m
Zl90ICopOwogICAgICAgIHNzaXplX3QgKCp3cml0ZSkgKHN0cnVjdCBmaWxlICosIGNvbnN0IGNo
YXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CiAgICAgICAgaW50ICgqcmVhZGRpcikgKHN0cnVjdCBm
aWxlICosIHZvaWQgKiwgZmlsbGRpcl90KTsKICAgICAgICB1bnNpZ25lZCBpbnQgKCpwb2xsKSAo
c3RydWN0IGZpbGUgKiwgc3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICopOwogICAgICAgIGludCAo
KmlvY3RsKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGludCwgdW5z
aWduZWQgbG9uZyk7CiAgICAgICAgaW50ICgqbW1hcCkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCB2
bV9hcmVhX3N0cnVjdCAqKTsKICAgICAgICBpbnQgKCpvcGVuKSAoc3RydWN0IGlub2RlICosIHN0
cnVjdCBmaWxlICopOwogICAgICAgIGludCAoKmZsdXNoKSAoc3RydWN0IGZpbGUgKik7CiAgICAg
ICAgaW50ICgqcmVsZWFzZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKICAgICAg
ICBpbnQgKCpmc3luYykgKHN0cnVjdCBmaWxlICosIHN0cnVjdCBkZW50cnkgKiwgaW50IGRhdGFz
eW5jKTsKICAgICAgICBpbnQgKCpmYXN5bmMpIChpbnQsIHN0cnVjdCBmaWxlICosIGludCk7CiAg
ICAgICAgaW50ICgqbG9jaykgKHN0cnVjdCBmaWxlICosIGludCwgc3RydWN0IGZpbGVfbG9jayAq
KTsKICAgICAgICBzc2l6ZV90ICgqcmVhZHYpIChzdHJ1Y3QgZmlsZSAqLCBjb25zdCBzdHJ1Y3Qg
aW92ZWMgKiwgdW5zaWduZWQgbG9uZywgbG9mZl90ICopOwogICAgICAgIHNzaXplX3QgKCp3cml0
ZXYpIChzdHJ1Y3QgZmlsZSAqLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKiwgdW5zaWduZWQgbG9uZywg
bG9mZl90ICopOwogICAgICAgIHNzaXplX3QgKCpzZW5kcGFnZSkgKHN0cnVjdCBmaWxlICosIHN0
cnVjdCBwYWdlICosIGludCwgc2l6ZV90LCBsb2ZmX3QgKiwgaW50KTsKICAgICAgICB1bnNpZ25l
ZCBsb25nICgqZ2V0X3VubWFwcGVkX2FyZWEpKHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGxvbmcs
IHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwp9OwoKc3RydWN0
IGlub2RlX29wZXJhdGlvbnMgewogICAgICAgIGludCAoKmNyZWF0ZSkgKHN0cnVjdCBpbm9kZSAq
LHN0cnVjdCBkZW50cnkgKixpbnQpOwogICAgICAgIHN0cnVjdCBkZW50cnkgKiAoKmxvb2t1cCkg
KHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CiAgICAgICAgaW50ICgqbGluaykgKHN0
cnVjdCBkZW50cnkgKixzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGlu
dCAoKnVubGluaykgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CiAgICAgICAgaW50
ICgqc3ltbGluaykgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKixjb25zdCBjaGFyICop
OwogICAgICAgIGludCAoKm1rZGlyKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqLGlu
dCk7CiAgICAgICAgaW50ICgqcm1kaXIpIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICop
OwogICAgICAgIGludCAoKm1rbm9kKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqLGlu
dCxpbnQpOwogICAgICAgIGludCAoKnJlbmFtZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVu
dHJ5ICosCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVu
dHJ5ICopOwogICAgICAgIGludCAoKnJlYWRsaW5rKSAoc3RydWN0IGRlbnRyeSAqLCBjaGFyICos
aW50KTsKICAgICAgICBpbnQgKCpmb2xsb3dfbGluaykgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0
IG5hbWVpZGF0YSAqKTsKICAgICAgICB2b2lkICgqdHJ1bmNhdGUpIChzdHJ1Y3QgaW5vZGUgKik7
CiAgICAgICAgaW50ICgqcGVybWlzc2lvbikgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwogICAgICAg
IGludCAoKnJldmFsaWRhdGUpIChzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAoKnNldGF0
dHIpIChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpYXR0ciAqKTsKICAgICAgICBpbnQgKCpnZXRh
dHRyKSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaWF0dHIgKik7Cn07CgoKCgoKc3RydWN0IHN1
cGVyX29wZXJhdGlvbnMgewogICAgICAgIHZvaWQgKCpyZWFkX2lub2RlKSAoc3RydWN0IGlub2Rl
ICopOwoKCgoKCgoKICAgICAgICB2b2lkICgqcmVhZF9pbm9kZTIpIChzdHJ1Y3QgaW5vZGUgKiwg
dm9pZCAqKSA7CiAgICAgICAgdm9pZCAoKmRpcnR5X2lub2RlKSAoc3RydWN0IGlub2RlICopOwog
ICAgICAgIHZvaWQgKCp3cml0ZV9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwogICAgICAg
IHZvaWQgKCpwdXRfaW5vZGUpIChzdHJ1Y3QgaW5vZGUgKik7CiAgICAgICAgdm9pZCAoKmRlbGV0
ZV9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICB2b2lkICgqcHV0X3N1cGVyKSAoc3Ry
dWN0IHN1cGVyX2Jsb2NrICopOwogICAgICAgIHZvaWQgKCp3cml0ZV9zdXBlcikgKHN0cnVjdCBz
dXBlcl9ibG9jayAqKTsKICAgICAgICB2b2lkICgqd3JpdGVfc3VwZXJfbG9ja2ZzKSAoc3RydWN0
IHN1cGVyX2Jsb2NrICopOwogICAgICAgIHZvaWQgKCp1bmxvY2tmcykgKHN0cnVjdCBzdXBlcl9i
bG9jayAqKTsKICAgICAgICBpbnQgKCpzdGF0ZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3Ry
dWN0IHN0YXRmcyAqKTsKICAgICAgICBpbnQgKCpyZW1vdW50X2ZzKSAoc3RydWN0IHN1cGVyX2Js
b2NrICosIGludCAqLCBjaGFyICopOwogICAgICAgIHZvaWQgKCpjbGVhcl9pbm9kZSkgKHN0cnVj
dCBpbm9kZSAqKTsKICAgICAgICB2b2lkICgqdW1vdW50X2JlZ2luKSAoc3RydWN0IHN1cGVyX2Js
b2NrICopOwojIDg5MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIgogICAgICAg
IHN0cnVjdCBkZW50cnkgKiAoKmZoX3RvX2RlbnRyeSkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwg
X191MzIgKmZoLCBpbnQgbGVuLCBpbnQgZmh0eXBlLCBpbnQgcGFyZW50KTsKICAgICAgICBpbnQg
KCpkZW50cnlfdG9fZmgpKHN0cnVjdCBkZW50cnkgKiwgX191MzIgKmZoLCBpbnQgKmxlbnAsIGlu
dCBuZWVkX3BhcmVudCk7Cn07CiMgOTA3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Zz
LmgiCmV4dGVybiB2b2lkIF9fbWFya19pbm9kZV9kaXJ0eShzdHJ1Y3QgaW5vZGUgKiwgaW50KTsK
c3RhdGljIGlubGluZSB2b2lkIG1hcmtfaW5vZGVfZGlydHkoc3RydWN0IGlub2RlICppbm9kZSkK
ewogICAgICAgIF9fbWFya19pbm9kZV9kaXJ0eShpbm9kZSwgKDEgfCAyIHwgNCkpOwp9CgpzdGF0
aWMgaW5saW5lIHZvaWQgbWFya19pbm9kZV9kaXJ0eV9zeW5jKHN0cnVjdCBpbm9kZSAqaW5vZGUp
CnsKICAgICAgICBfX21hcmtfaW5vZGVfZGlydHkoaW5vZGUsIDEpOwp9CgpzdGF0aWMgaW5saW5l
IHZvaWQgbWFya19pbm9kZV9kaXJ0eV9wYWdlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAg
ICAgX19tYXJrX2lub2RlX2RpcnR5KGlub2RlLCA0KTsKfQoKc3RydWN0IGRxdW90X29wZXJhdGlv
bnMgewogICAgICAgIHZvaWQgKCppbml0aWFsaXplKSAoc3RydWN0IGlub2RlICosIHNob3J0KTsK
ICAgICAgICB2b2lkICgqZHJvcCkgKHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICBpbnQgKCphbGxv
Y19ibG9jaykgKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25nLCBjaGFyKTsKICAgICAgICBp
bnQgKCphbGxvY19pbm9kZSkgKGNvbnN0IHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25nKTsK
ICAgICAgICB2b2lkICgqZnJlZV9ibG9jaykgKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25n
KTsKICAgICAgICB2b2lkICgqZnJlZV9pbm9kZSkgKGNvbnN0IHN0cnVjdCBpbm9kZSAqLCB1bnNp
Z25lZCBsb25nKTsKICAgICAgICBpbnQgKCp0cmFuc2ZlcikgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1
Y3QgaWF0dHIgKik7Cn07CgpzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSB7CiAgICAgICAgY29uc3Qg
Y2hhciAqbmFtZTsKICAgICAgICBpbnQgZnNfZmxhZ3M7CiAgICAgICAgc3RydWN0IHN1cGVyX2Js
b2NrICooKnJlYWRfc3VwZXIpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdm9pZCAqLCBpbnQpOwog
ICAgICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyOwogICAgICAgIHN0cnVjdCBmaWxlX3N5c3RlbV90
eXBlICogbmV4dDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGZzX3N1cGVyczsKfTsKIyA5NjUg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKZXh0ZXJuIGludCByZWdpc3Rlcl9m
aWxlc3lzdGVtKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICopOwpleHRlcm4gaW50IHVucmVnaXN0
ZXJfZmlsZXN5c3RlbShzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqKTsKZXh0ZXJuIHN0cnVjdCB2
ZnNtb3VudCAqa2Vybl9tb3VudChzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqKTsKZXh0ZXJuIGlu
dCBtYXlfdW1vdW50KHN0cnVjdCB2ZnNtb3VudCAqKTsKZXh0ZXJuIGxvbmcgZG9fbW91bnQoY2hh
ciAqLCBjaGFyICosIGNoYXIgKiwgdW5zaWduZWQgbG9uZywgdm9pZCAqKTsKCgoKZXh0ZXJuIGlu
dCB2ZnNfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBzdHJ1Y3Qgc3RhdGZzICopOwojIDk4
MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIgpleHRlcm4gaW50IGxvY2tzX21h
bmRhdG9yeV9sb2NrZWQoc3RydWN0IGlub2RlICopOwpleHRlcm4gaW50IGxvY2tzX21hbmRhdG9y
eV9hcmVhKGludCwgc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICosIGxvZmZfdCwgc2l6ZV90
KTsKIyA5OTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKc3RhdGljIGlubGlu
ZSBpbnQgbG9ja3NfdmVyaWZ5X2xvY2tlZChzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAgICAg
aWYgKCgoKGlub2RlKS0+aV9zYi0+c19mbGFncyAmICg2NCkpICYmICgoaW5vZGUpLT5pX21vZGUg
JiAoMDAwMjAwMCB8IDAwMDEwKSkgPT0gMDAwMjAwMCkpCiAgICAgICAgICAgICAgICByZXR1cm4g
bG9ja3NfbWFuZGF0b3J5X2xvY2tlZChpbm9kZSk7CiAgICAgICAgcmV0dXJuIDA7Cn0KCnN0YXRp
YyBpbmxpbmUgaW50IGxvY2tzX3ZlcmlmeV9hcmVhKGludCByZWFkX3dyaXRlLCBzdHJ1Y3QgaW5v
ZGUgKmlub2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZmls
ZSAqZmlscCwgbG9mZl90IG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGNvdW50KQp7CiAgICAgICAgaWYgKGlub2RlLT5pX2Zsb2NrICYmICgoKGlub2Rl
KS0+aV9zYi0+c19mbGFncyAmICg2NCkpICYmICgoaW5vZGUpLT5pX21vZGUgJiAoMDAwMjAwMCB8
IDAwMDEwKSkgPT0gMDAwMjAwMCkpCiAgICAgICAgICAgICAgICByZXR1cm4gbG9ja3NfbWFuZGF0
b3J5X2FyZWEocmVhZF93cml0ZSwgaW5vZGUsIGZpbHAsIG9mZnNldCwgY291bnQpOwogICAgICAg
IHJldHVybiAwOwp9CgpzdGF0aWMgaW5saW5lIGludCBsb2Nrc192ZXJpZnlfdHJ1bmNhdGUoc3Ry
dWN0IGlub2RlICppbm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IGZpbGUgKmZpbHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZmZf
dCBzaXplKQp7CiAgICAgICAgaWYgKGlub2RlLT5pX2Zsb2NrICYmICgoKGlub2RlKS0+aV9zYi0+
c19mbGFncyAmICg2NCkpICYmICgoaW5vZGUpLT5pX21vZGUgJiAoMDAwMjAwMCB8IDAwMDEwKSkg
PT0gMDAwMjAwMCkpCiAgICAgICAgICAgICAgICByZXR1cm4gbG9ja3NfbWFuZGF0b3J5X2FyZWEo
CiAgICAgICAgICAgICAgICAgICAgICAgIDIsIGlub2RlLCBmaWxwLAogICAgICAgICAgICAgICAg
ICAgICAgICBzaXplIDwgaW5vZGUtPmlfc2l6ZSA/IHNpemUgOiBpbm9kZS0+aV9zaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICAoc2l6ZSA8IGlub2RlLT5pX3NpemUgPyBpbm9kZS0+aV9zaXpl
IC0gc2l6ZQogICAgICAgICAgICAgICAgICAgICAgICAgOiBzaXplIC0gaW5vZGUtPmlfc2l6ZSkK
ICAgICAgICAgICAgICAgICk7CiAgICAgICAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgaW50
IGdldF9sZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBpbnQgbW9kZSkKewogICAg
ICAgIGlmIChpbm9kZS0+aV9mbG9jayAmJiAoaW5vZGUtPmlfZmxvY2stPmZsX2ZsYWdzICYgMzIp
KQogICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2V0X2xlYXNlKGlub2RlLCBtb2RlKTsKICAgICAg
ICByZXR1cm4gMDsKfQoKCgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX29w
ZW4oY29uc3QgY2hhciAqLCBpbnQsIGludCk7CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkg
bG9uZyBzeXNfY2xvc2UodW5zaWduZWQgaW50KTsKZXh0ZXJuIGludCBkb190cnVuY2F0ZShzdHJ1
Y3QgZGVudHJ5ICosIGxvZmZfdCBzdGFydCk7CgpleHRlcm4gc3RydWN0IGZpbGUgKmZpbHBfb3Bl
bihjb25zdCBjaGFyICosIGludCwgaW50KTsKZXh0ZXJuIHN0cnVjdCBmaWxlICogZGVudHJ5X29w
ZW4oc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgdmZzbW91bnQgKiwgaW50KTsKZXh0ZXJuIGludCBm
aWxwX2Nsb3NlKHN0cnVjdCBmaWxlICosIGZsX293bmVyX3QgaWQpOwpleHRlcm4gY2hhciAqIGdl
dG5hbWUoY29uc3QgY2hhciAqKTsKCgpleHRlcm4gdm9pZCB2ZnNfY2FjaGVzX2luaXQodW5zaWdu
ZWQgbG9uZyk7CgoKCgplbnVtIHtCREVWX0ZJTEUsIEJERVZfU1dBUCwgQkRFVl9GUywgQkRFVl9S
QVd9OwpleHRlcm4gaW50IHJlZ2lzdGVyX2Jsa2Rldih1bnNpZ25lZCBpbnQsIGNvbnN0IGNoYXIg
Kiwgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zICopOwpleHRlcm4gaW50IHVucmVnaXN0
ZXJfYmxrZGV2KHVuc2lnbmVkIGludCwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIHN0cnVjdCBibG9j
a19kZXZpY2UgKmJkZ2V0KGRldl90KTsKZXh0ZXJuIGludCBiZF9hY3F1aXJlKHN0cnVjdCBpbm9k
ZSAqaW5vZGUpOwpleHRlcm4gdm9pZCBiZF9mb3JnZXQoc3RydWN0IGlub2RlICppbm9kZSk7CmV4
dGVybiB2b2lkIGJkcHV0KHN0cnVjdCBibG9ja19kZXZpY2UgKik7CmV4dGVybiBzdHJ1Y3QgY2hh
cl9kZXZpY2UgKmNkZ2V0KGRldl90KTsKZXh0ZXJuIHZvaWQgY2RwdXQoc3RydWN0IGNoYXJfZGV2
aWNlICopOwpleHRlcm4gaW50IGJsa2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmls
ZSAqKTsKZXh0ZXJuIGludCBibGtkZXZfY2xvc2Uoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxl
ICopOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBkZWZfYmxrX2ZvcHM7CmV4dGVybiBz
dHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zIGRlZl9ibGtfYW9wczsKZXh0ZXJuIHN0cnVj
dCBmaWxlX29wZXJhdGlvbnMgZGVmX2ZpZm9fZm9wczsKZXh0ZXJuIGludCBpb2N0bF9ieV9iZGV2
KHN0cnVjdCBibG9ja19kZXZpY2UgKiwgdW5zaWduZWQsIHVuc2lnbmVkIGxvbmcpOwpleHRlcm4g
aW50IGJsa2Rldl9nZXQoc3RydWN0IGJsb2NrX2RldmljZSAqLCBtb2RlX3QsIHVuc2lnbmVkLCBp
bnQpOwpleHRlcm4gaW50IGJsa2Rldl9wdXQoc3RydWN0IGJsb2NrX2RldmljZSAqLCBpbnQpOwoK
CmV4dGVybiBjb25zdCBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgKmdldF9ibGtmb3Bz
KHVuc2lnbmVkIGludCk7CmV4dGVybiBpbnQgcmVnaXN0ZXJfY2hyZGV2KHVuc2lnbmVkIGludCwg
Y29uc3QgY2hhciAqLCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICopOwpleHRlcm4gaW50IHVucmVn
aXN0ZXJfY2hyZGV2KHVuc2lnbmVkIGludCwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBjaHJk
ZXZfb3BlbihzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKik7CmV4dGVybiBjb25zdCBjaGFy
ICogYmRldm5hbWUoa2Rldl90KTsKZXh0ZXJuIGNvbnN0IGNoYXIgKiBjZGV2bmFtZShrZGV2X3Qp
OwpleHRlcm4gY29uc3QgY2hhciAqIGtkZXZuYW1lKGtkZXZfdCk7CmV4dGVybiB2b2lkIGluaXRf
c3BlY2lhbF9pbm9kZShzdHJ1Y3QgaW5vZGUgKiwgdW1vZGVfdCwgaW50KTsKCgpleHRlcm4gdm9p
ZCBtYWtlX2JhZF9pbm9kZShzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgaXNfYmFkX2lub2Rl
KHN0cnVjdCBpbm9kZSAqKTsKCmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJlYWRfZmlm
b19mb3BzOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB3cml0ZV9maWZvX2ZvcHM7CmV4
dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJkd3JfZmlmb19mb3BzOwpleHRlcm4gc3RydWN0
IGZpbGVfb3BlcmF0aW9ucyByZWFkX3BpcGVfZm9wczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJh
dGlvbnMgd3JpdGVfcGlwZV9mb3BzOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyByZHdy
X3BpcGVfZm9wczsKCmV4dGVybiBpbnQgZnNfbWF5X3JlbW91bnRfcm8oc3RydWN0IHN1cGVyX2Js
b2NrICopOwoKZXh0ZXJuIGludCB0cnlfdG9fZnJlZV9idWZmZXJzKHN0cnVjdCBwYWdlICosIHVu
c2lnbmVkIGludCk7CmV4dGVybiB2b2lkIHJlZmlsZV9idWZmZXIoc3RydWN0IGJ1ZmZlcl9oZWFk
ICogYnVmKTsKZXh0ZXJuIHZvaWQgZW5kX2J1ZmZlcl9pb19zeW5jKHN0cnVjdCBidWZmZXJfaGVh
ZCAqYmgsIGludCB1cHRvZGF0ZSk7CgoKZXh0ZXJuIHZvaWQgc2V0X2J1ZmZlcl9hc3luY19pbyhz
dHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKSA7CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBnZXRfYmgo
c3RydWN0IGJ1ZmZlcl9oZWFkICogYmgpCnsKICAgICAgICBhdG9taWNfaW5jKCYoYmgpLT5iX2Nv
dW50KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHB1dF9iaChzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJo
KQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKICAgICAg
ICBhdG9taWNfZGVjKCZiaC0+Yl9jb3VudCk7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBtYXJr
X2J1ZmZlcl91cHRvZGF0ZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCwgaW50IG9uKQp7CiAgICAg
ICAgaWYgKG9uKQogICAgICAgICAgICAgICAgc2V0X2JpdChCSF9VcHRvZGF0ZSwgJmJoLT5iX3N0
YXRlKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBjbGVhcl9iaXQoQkhfVXB0b2RhdGUs
ICZiaC0+Yl9zdGF0ZSk7Cn0KCgoKc3RhdGljIGlubGluZSB2b2lkIF9fbWFya19idWZmZXJfY2xl
YW4oc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkKewogICAgICAgIHJlZmlsZV9idWZmZXIoYmgpOwp9
CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19idWZmZXJfY2xlYW4oc3RydWN0IGJ1ZmZlcl9oZWFk
ICogYmgpCnsKICAgICAgICBpZiAodGVzdF9hbmRfY2xlYXJfYml0KEJIX0RpcnR5LCAmKGJoKS0+
Yl9zdGF0ZSkpCiAgICAgICAgICAgICAgICBfX21hcmtfYnVmZmVyX2NsZWFuKGJoKTsKfQoKZXh0
ZXJuIHZvaWQgX19tYXJrX2RpcnR5KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpIF9fYXR0cmlidXRl
X18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgX19tYXJrX2J1ZmZlcl9kaXJ0eShzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKmJoKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lk
IG1hcmtfYnVmZmVyX2RpcnR5KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpIF9fYXR0cmlidXRlX18o
KHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgYnVmZmVyX2luc2VydF9pbm9kZV9kYXRhX3F1ZXVl
KHN0cnVjdCBidWZmZXJfaGVhZCAqLCBzdHJ1Y3QgaW5vZGUgKikgX19hdHRyaWJ1dGVfXygocmVn
cGFybSgzKSkpOwoKCgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19idWZmZXJfYXN5bmMoc3RydWN0
IGJ1ZmZlcl9oZWFkICogYmgsIGludCBvbikKewogICAgICAgIGlmIChvbikKICAgICAgICAgICAg
ICAgIHNldF9iaXQoQkhfQXN5bmMsICZiaC0+Yl9zdGF0ZSk7CiAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgY2xlYXJfYml0KEJIX0FzeW5jLCAmYmgtPmJfc3RhdGUpOwp9CgoKCgoKCgpzdGF0
aWMgaW5saW5lIHZvaWQgYnVmZmVyX0lPX2Vycm9yKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoKQp7
CiAgICAgICAgbWFya19idWZmZXJfY2xlYW4oYmgpOwoKCgogICAgICAgIGJoLT5iX2VuZF9pbyhi
aCwgMCk7Cn0KCmV4dGVybiB2b2lkIGJ1ZmZlcl9pbnNlcnRfaW5vZGVfcXVldWUoc3RydWN0IGJ1
ZmZlcl9oZWFkICosIHN0cnVjdCBpbm9kZSAqKTsKc3RhdGljIGlubGluZSB2b2lkIG1hcmtfYnVm
ZmVyX2RpcnR5X2lub2RlKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIHN0cnVjdCBpbm9kZSAqaW5v
ZGUpCnsKICAgICAgICBtYXJrX2J1ZmZlcl9kaXJ0eShiaCk7CiAgICAgICAgYnVmZmVyX2luc2Vy
dF9pbm9kZV9xdWV1ZShiaCwgaW5vZGUpOwp9CgpleHRlcm4gdm9pZCBiYWxhbmNlX2RpcnR5KHZv
aWQpOwpleHRlcm4gaW50IGNoZWNrX2Rpc2tfY2hhbmdlKGtkZXZfdCk7CmV4dGVybiBpbnQgaW52
YWxpZGF0ZV9pbm9kZXMoc3RydWN0IHN1cGVyX2Jsb2NrICopOwpleHRlcm4gaW50IGludmFsaWRh
dGVfZGV2aWNlKGtkZXZfdCwgaW50KTsKZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9pbm9kZV9wYWdl
cyhzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIGludmFsaWRhdGVfaW5vZGVfcGFnZXMyKHN0
cnVjdCBhZGRyZXNzX3NwYWNlICopOwpleHRlcm4gdm9pZCBpbnZhbGlkYXRlX2lub2RlX2J1ZmZl
cnMoc3RydWN0IGlub2RlICopOwoKCmV4dGVybiB2b2lkIGludmFsaWRhdGVfYmRldihzdHJ1Y3Qg
YmxvY2tfZGV2aWNlICosIGludCk7CmV4dGVybiB2b2lkIF9faW52YWxpZGF0ZV9idWZmZXJzKGtk
ZXZfdCBkZXYsIGludCk7CmV4dGVybiB2b2lkIHN5bmNfaW5vZGVzKGtkZXZfdCk7CmV4dGVybiB2
b2lkIHN5bmNfdW5sb2NrZWRfaW5vZGVzKHZvaWQpOwpleHRlcm4gdm9pZCB3cml0ZV9pbm9kZV9u
b3coc3RydWN0IGlub2RlICosIGludCk7CmV4dGVybiBpbnQgc3luY19idWZmZXJzKGtkZXZfdCwg
aW50KTsKZXh0ZXJuIHZvaWQgc3luY19kZXYoa2Rldl90KTsKZXh0ZXJuIGludCBmc3luY19kZXYo
a2Rldl90KTsKZXh0ZXJuIGludCBmc3luY19zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CmV4
dGVybiBpbnQgZnN5bmNfbm9fc3VwZXIoa2Rldl90KTsKZXh0ZXJuIHZvaWQgc3luY19pbm9kZXNf
c2Ioc3RydWN0IHN1cGVyX2Jsb2NrICopOwpleHRlcm4gaW50IG9zeW5jX2lub2RlX2J1ZmZlcnMo
c3RydWN0IGlub2RlICopOwpleHRlcm4gaW50IG9zeW5jX2lub2RlX2RhdGFfYnVmZmVycyhzdHJ1
Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgZnN5bmNfaW5vZGVfYnVmZmVycyhzdHJ1Y3QgaW5vZGUg
Kik7CmV4dGVybiBpbnQgZnN5bmNfaW5vZGVfZGF0YV9idWZmZXJzKHN0cnVjdCBpbm9kZSAqKTsK
ZXh0ZXJuIGludCBpbm9kZV9oYXNfYnVmZmVycyhzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lk
IGZpbGVtYXBfZmRhdGFzeW5jKHN0cnVjdCBhZGRyZXNzX3NwYWNlICopOwpleHRlcm4gdm9pZCBm
aWxlbWFwX2ZkYXRhd2FpdChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqKTsKZXh0ZXJuIHZvaWQgc3lu
Y19zdXBlcnMoa2Rldl90KTsKZXh0ZXJuIGludCBibWFwKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpl
eHRlcm4gaW50IG5vdGlmeV9jaGFuZ2Uoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaWF0dHIgKik7
CmV4dGVybiBpbnQgcGVybWlzc2lvbihzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0ZXJuIGludCB2
ZnNfcGVybWlzc2lvbihzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0ZXJuIGludCBnZXRfd3JpdGVf
YWNjZXNzKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGludCBkZW55X3dyaXRlX2FjY2VzcyhzdHJ1
Y3QgZmlsZSAqKTsKc3RhdGljIGlubGluZSB2b2lkIHB1dF93cml0ZV9hY2Nlc3Moc3RydWN0IGlu
b2RlICogaW5vZGUpCnsKICAgICAgICBhdG9taWNfZGVjKCZpbm9kZS0+aV93cml0ZWNvdW50KTsK
fQpzdGF0aWMgaW5saW5lIHZvaWQgYWxsb3dfd3JpdGVfYWNjZXNzKHN0cnVjdCBmaWxlICpmaWxl
KQp7CiAgICAgICAgaWYgKGZpbGUpCiAgICAgICAgICAgICAgICBhdG9taWNfaW5jKCZmaWxlLT5m
X2RlbnRyeS0+ZF9pbm9kZS0+aV93cml0ZWNvdW50KTsKfQpleHRlcm4gaW50IGRvX3BpcGUoaW50
ICopOwoKZXh0ZXJuIGludCBvcGVuX25hbWVpKGNvbnN0IGNoYXIgKiwgaW50LCBpbnQsIHN0cnVj
dCBuYW1laWRhdGEgKik7CgpleHRlcm4gaW50IGtlcm5lbF9yZWFkKHN0cnVjdCBmaWxlICosIHVu
c2lnbmVkIGxvbmcsIGNoYXIgKiwgdW5zaWduZWQgbG9uZyk7CmV4dGVybiBzdHJ1Y3QgZmlsZSAq
IG9wZW5fZXhlYyhjb25zdCBjaGFyICopOwoKCmV4dGVybiBpbnQgaXNfc3ViZGlyKHN0cnVjdCBk
ZW50cnkgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGlub190IGZpbmRfaW5vZGVfbnVtYmVy
KHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IHFzdHIgKik7CiMgMTIzNCAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9mcy5oIgpzdGF0aWMgaW5saW5lIHZvaWQgKkVSUl9QVFIobG9uZyBlcnJv
cikKewogICAgICAgIHJldHVybiAodm9pZCAqKSBlcnJvcjsKfQoKc3RhdGljIGlubGluZSBsb25n
IFBUUl9FUlIoY29uc3Qgdm9pZCAqcHRyKQp7CiAgICAgICAgcmV0dXJuIChsb25nKSBwdHI7Cn0K
CnN0YXRpYyBpbmxpbmUgbG9uZyBJU19FUlIoY29uc3Qgdm9pZCAqcHRyKQp7CiAgICAgICAgcmV0
dXJuICh1bnNpZ25lZCBsb25nKXB0ciA+ICh1bnNpZ25lZCBsb25nKS0xMDAwTDsKfQojIDEyNjUg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKZW51bSB7TEFTVF9OT1JNLCBMQVNU
X1JPT1QsIExBU1RfRE9ULCBMQVNUX0RPVERPVCwgTEFTVF9CSU5EfTsKIyAxMjc2ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBzaXpl
X3Qgd3JpdHRlbjsKICAgICAgICBzaXplX3QgY291bnQ7CiAgICAgICAgY2hhciAqIGJ1ZjsKICAg
ICAgICBpbnQgZXJyb3I7Cn0gcmVhZF9kZXNjcmlwdG9yX3Q7Cgp0eXBlZGVmIGludCAoKnJlYWRf
YWN0b3JfdCkocmVhZF9kZXNjcmlwdG9yX3QgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQgbG9u
ZywgdW5zaWduZWQgbG9uZyk7CgoKZXh0ZXJuIGxvZmZfdCBkZWZhdWx0X2xsc2VlayhzdHJ1Y3Qg
ZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgaW50IG9yaWdpbik7CgpleHRlcm4gaW50IF9fdXNl
cl93YWxrKGNvbnN0IGNoYXIgKiwgdW5zaWduZWQsIHN0cnVjdCBuYW1laWRhdGEgKikgX19hdHRy
aWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gaW50IHBhdGhfaW5pdChjb25zdCBjaGFyICos
IHVuc2lnbmVkLCBzdHJ1Y3QgbmFtZWlkYXRhICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykp
KTsKZXh0ZXJuIGludCBwYXRoX3dhbGsoY29uc3QgY2hhciAqLCBzdHJ1Y3QgbmFtZWlkYXRhICop
IF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIGludCBsaW5rX3BhdGhfd2Fsayhj
b25zdCBjaGFyICosIHN0cnVjdCBuYW1laWRhdGEgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgz
KSkpOwpleHRlcm4gdm9pZCBwYXRoX3JlbGVhc2Uoc3RydWN0IG5hbWVpZGF0YSAqKTsKZXh0ZXJu
IGludCBmb2xsb3dfZG93bihzdHJ1Y3QgdmZzbW91bnQgKiosIHN0cnVjdCBkZW50cnkgKiopOwpl
eHRlcm4gaW50IGZvbGxvd191cChzdHJ1Y3QgdmZzbW91bnQgKiosIHN0cnVjdCBkZW50cnkgKiop
OwpleHRlcm4gc3RydWN0IGRlbnRyeSAqIGxvb2t1cF9vbmVfbGVuKGNvbnN0IGNoYXIgKiwgc3Ry
dWN0IGRlbnRyeSAqLCBpbnQpOwpleHRlcm4gc3RydWN0IGRlbnRyeSAqIGxvb2t1cF9oYXNoKHN0
cnVjdCBxc3RyICosIHN0cnVjdCBkZW50cnkgKik7CgoKCmV4dGVybiB2b2lkIGlwdXQoc3RydWN0
IGlub2RlICopOwpleHRlcm4gdm9pZCBmb3JjZV9kZWxldGUoc3RydWN0IGlub2RlICopOwpleHRl
cm4gc3RydWN0IGlub2RlICogaWdyYWIoc3RydWN0IGlub2RlICopOwpleHRlcm4gaW5vX3QgaXVu
aXF1ZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgaW5vX3QpOwoKdHlwZWRlZiBpbnQgKCpmaW5kX2lu
b2RlX3QpKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25nLCB2b2lkICopOwpleHRlcm4gc3Ry
dWN0IGlub2RlICogaWdldDQoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkIGxvbmcsIGZp
bmRfaW5vZGVfdCwgdm9pZCAqKTsKc3RhdGljIGlubGluZSBzdHJ1Y3QgaW5vZGUgKmlnZXQoc3Ry
dWN0IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBpbm8pCnsKICAgICAgICByZXR1cm4g
aWdldDQoc2IsIGlubywgKCh2b2lkICopMCksICgodm9pZCAqKTApKTsKfQoKZXh0ZXJuIHZvaWQg
Y2xlYXJfaW5vZGUoc3RydWN0IGlub2RlICopOwpleHRlcm4gc3RydWN0IGlub2RlICogZ2V0X2Vt
cHR5X2lub2RlKHZvaWQpOwoKc3RhdGljIGlubGluZSBzdHJ1Y3QgaW5vZGUgKiBuZXdfaW5vZGUo
c3RydWN0IHN1cGVyX2Jsb2NrICpzYikKewogICAgICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBn
ZXRfZW1wdHlfaW5vZGUoKTsKICAgICAgICBpZiAoaW5vZGUpIHsKICAgICAgICAgICAgICAgIGlu
b2RlLT5pX3NiID0gc2I7CiAgICAgICAgICAgICAgICBpbm9kZS0+aV9kZXYgPSBzYi0+c19kZXY7
CiAgICAgICAgICAgICAgICBpbm9kZS0+aV9ibGtiaXRzID0gc2ItPnNfYmxvY2tzaXplX2JpdHM7
CiAgICAgICAgfQogICAgICAgIHJldHVybiBpbm9kZTsKfQpleHRlcm4gdm9pZCByZW1vdmVfc3Vp
ZChzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKCmV4dGVybiB2b2lkIGluc2VydF9pbm9kZV9oYXNoKHN0
cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgcmVtb3ZlX2lub2RlX2hhc2goc3RydWN0IGlub2Rl
ICopOwpleHRlcm4gc3RydWN0IGZpbGUgKiBnZXRfZW1wdHlfZmlscCh2b2lkKTsKZXh0ZXJuIHZv
aWQgZmlsZV9tb3ZlKHN0cnVjdCBmaWxlICpmLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0KTsKZXh0
ZXJuIHN0cnVjdCBidWZmZXJfaGVhZCAqIGdldF9oYXNoX3RhYmxlKGtkZXZfdCwgaW50LCBpbnQp
OwpleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogZ2V0YmxrKGtkZXZfdCwgaW50LCBpbnQpOwpl
eHRlcm4gdm9pZCBsbF9yd19ibG9jayhpbnQsIGludCwgc3RydWN0IGJ1ZmZlcl9oZWFkICogYmhb
XSk7CmV4dGVybiB2b2lkIHN1Ym1pdF9iaChpbnQsIHN0cnVjdCBidWZmZXJfaGVhZCAqKTsKZXh0
ZXJuIGludCBpc19yZWFkX29ubHkoa2Rldl90KTsKZXh0ZXJuIHZvaWQgX19icmVsc2Uoc3RydWN0
IGJ1ZmZlcl9oZWFkICopOwpzdGF0aWMgaW5saW5lIHZvaWQgYnJlbHNlKHN0cnVjdCBidWZmZXJf
aGVhZCAqYnVmKQp7CiAgICAgICAgaWYgKGJ1ZikKICAgICAgICAgICAgICAgIF9fYnJlbHNlKGJ1
Zik7Cn0KZXh0ZXJuIHZvaWQgX19iZm9yZ2V0KHN0cnVjdCBidWZmZXJfaGVhZCAqKTsKc3RhdGlj
IGlubGluZSB2b2lkIGJmb3JnZXQoc3RydWN0IGJ1ZmZlcl9oZWFkICpidWYpCnsKICAgICAgICBp
ZiAoYnVmKQogICAgICAgICAgICAgICAgX19iZm9yZ2V0KGJ1Zik7Cn0KZXh0ZXJuIGludCBzZXRf
YmxvY2tzaXplKGtkZXZfdCwgaW50KTsKZXh0ZXJuIHN0cnVjdCBidWZmZXJfaGVhZCAqIGJyZWFk
KGtkZXZfdCwgaW50LCBpbnQpOwpleHRlcm4gdm9pZCB3YWtldXBfYmRmbHVzaCh2b2lkKTsKCmV4
dGVybiBpbnQgYnJ3X3BhZ2UoaW50LCBzdHJ1Y3QgcGFnZSAqLCBrZGV2X3QsIGludCBbXSwgaW50
KTsKCnR5cGVkZWYgaW50IChnZXRfYmxvY2tfdCkoc3RydWN0IGlub2RlKixsb25nLHN0cnVjdCBi
dWZmZXJfaGVhZCosaW50KTsKCgpleHRlcm4gaW50IGRpc2NhcmRfYmhfcGFnZShzdHJ1Y3QgcGFn
ZSAqLCB1bnNpZ25lZCBsb25nLCBpbnQpOwoKCmV4dGVybiBpbnQgYmxvY2tfc3ltbGluayhzdHJ1
Y3QgaW5vZGUgKiwgY29uc3QgY2hhciAqLCBpbnQpOwpleHRlcm4gaW50IGJsb2NrX3dyaXRlX2Z1
bGxfcGFnZShzdHJ1Y3QgcGFnZSosIGdldF9ibG9ja190Kik7CmV4dGVybiBpbnQgYmxvY2tfcmVh
ZF9mdWxsX3BhZ2Uoc3RydWN0IHBhZ2UqLCBnZXRfYmxvY2tfdCopOwpleHRlcm4gaW50IGJsb2Nr
X3ByZXBhcmVfd3JpdGUoc3RydWN0IHBhZ2UqLCB1bnNpZ25lZCwgdW5zaWduZWQsIGdldF9ibG9j
a190Kik7CmV4dGVybiBpbnQgY29udF9wcmVwYXJlX3dyaXRlKHN0cnVjdCBwYWdlKiwgdW5zaWdu
ZWQsIHVuc2lnbmVkLCBnZXRfYmxvY2tfdCosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbG9uZyAqKTsKZXh0ZXJuIGludCBibG9ja19jb21taXRfd3JpdGUoc3RydWN0
IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKTsKZXh0ZXJuIGludCBibG9j
a19zeW5jX3BhZ2Uoc3RydWN0IHBhZ2UgKik7CgppbnQgZ2VuZXJpY19ibG9ja19ibWFwKHN0cnVj
dCBhZGRyZXNzX3NwYWNlICosIGxvbmcsIGdldF9ibG9ja190ICopOwppbnQgZ2VuZXJpY19jb21t
aXRfd3JpdGUoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQsIHVuc2lnbmVk
KTsKaW50IGJsb2NrX3RydW5jYXRlX3BhZ2Uoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwgbG9mZl90
LCBnZXRfYmxvY2tfdCAqKTsKZXh0ZXJuIHZvaWQgY3JlYXRlX2VtcHR5X2J1ZmZlcnMoc3RydWN0
IHBhZ2UgKiwga2Rldl90LCB1bnNpZ25lZCBsb25nKTsKCmV4dGVybiBpbnQgd2FpdGZvcl9vbmVf
cGFnZShzdHJ1Y3QgcGFnZSopOwpleHRlcm4gaW50IGdlbmVyaWNfZmlsZV9tbWFwKHN0cnVjdCBm
aWxlICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKZXh0ZXJuIGludCBmaWxlX3JlYWRfYWN0
b3IocmVhZF9kZXNjcmlwdG9yX3QgKiBkZXNjLCBzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQg
bG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CmV4dGVybiBzc2l6ZV90IGdlbmVyaWNf
ZmlsZV9yZWFkKHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVy
biBzc2l6ZV90IGdlbmVyaWNfZmlsZV93cml0ZShzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICos
IHNpemVfdCwgbG9mZl90ICopOwpleHRlcm4gdm9pZCBkb19nZW5lcmljX2ZpbGVfcmVhZChzdHJ1
Y3QgZmlsZSAqLCBsb2ZmX3QgKiwgcmVhZF9kZXNjcmlwdG9yX3QgKiwgcmVhZF9hY3Rvcl90KTsK
ZXh0ZXJuIGxvZmZfdCBub19sbHNlZWsoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQs
IGludCBvcmlnaW4pOwpleHRlcm4gbG9mZl90IGdlbmVyaWNfZmlsZV9sbHNlZWsoc3RydWN0IGZp
bGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGludCBvcmlnaW4pOwpleHRlcm4gc3NpemVfdCBnZW5l
cmljX3JlYWRfZGlyKHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4
dGVybiBpbnQgZ2VuZXJpY19maWxlX29wZW4oc3RydWN0IGlub2RlICogaW5vZGUsIHN0cnVjdCBm
aWxlICogZmlscCk7CgpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBnZW5lcmljX3JvX2Zv
cHM7CgpleHRlcm4gaW50IHZmc19yZWFkbGluayhzdHJ1Y3QgZGVudHJ5ICosIGNoYXIgKiwgaW50
LCBjb25zdCBjaGFyICopOwpleHRlcm4gaW50IHZmc19mb2xsb3dfbGluayhzdHJ1Y3QgbmFtZWlk
YXRhICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgcGFnZV9yZWFkbGluayhzdHJ1Y3QgZGVu
dHJ5ICosIGNoYXIgKiwgaW50KTsKZXh0ZXJuIGludCBwYWdlX2ZvbGxvd19saW5rKHN0cnVjdCBk
ZW50cnkgKiwgc3RydWN0IG5hbWVpZGF0YSAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZV9vcGVyYXRp
b25zIHBhZ2Vfc3ltbGlua19pbm9kZV9vcGVyYXRpb25zOwoKZXh0ZXJuIGludCB2ZnNfcmVhZGRp
cihzdHJ1Y3QgZmlsZSAqLCBmaWxsZGlyX3QsIHZvaWQgKik7CmV4dGVybiBpbnQgZGNhY2hlX3Jl
YWRkaXIoc3RydWN0IGZpbGUgKiwgdm9pZCAqLCBmaWxsZGlyX3QpOwoKZXh0ZXJuIHN0cnVjdCBm
aWxlX3N5c3RlbV90eXBlICpnZXRfZnNfdHlwZShjb25zdCBjaGFyICpuYW1lKTsKZXh0ZXJuIHN0
cnVjdCBzdXBlcl9ibG9jayAqZ2V0X3N1cGVyKGtkZXZfdCk7CmV4dGVybiB2b2lkIGRyb3Bfc3Vw
ZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CnN0YXRpYyBpbmxpbmUgaW50IGlzX21vdW50ZWQo
a2Rldl90IGRldikKewogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBnZXRfc3VwZXIo
ZGV2KTsKICAgICAgICBpZiAoc2IpIHsKICAgICAgICAgICAgICAgIGRyb3Bfc3VwZXIoc2IpOwog
ICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgICAgIHJldHVybiAwOwp9CnVu
c2lnbmVkIGxvbmcgZ2VuZXJhdGVfY2x1c3RlcihrZGV2X3QsIGludCBiW10sIGludCk7CnVuc2ln
bmVkIGxvbmcgZ2VuZXJhdGVfY2x1c3Rlcl9zd2FiMzIoa2Rldl90LCBpbnQgYltdLCBpbnQpOwpl
eHRlcm4ga2Rldl90IFJPT1RfREVWOwpleHRlcm4gY2hhciByb290X2RldmljZV9uYW1lW107CgoK
ZXh0ZXJuIHZvaWQgc2hvd19idWZmZXJzKHZvaWQpOwpleHRlcm4gdm9pZCBtb3VudF9yb290KHZv
aWQpOwoKCgoKCgpleHRlcm4gc3NpemVfdCBjaGFyX3JlYWQoc3RydWN0IGZpbGUgKiwgY2hhciAq
LCBzaXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIHNzaXplX3QgYmxvY2tfcmVhZChzdHJ1Y3QgZmls
ZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwpleHRlcm4gaW50IHJlYWRfYWhlYWRbXTsK
CmV4dGVybiBzc2l6ZV90IGNoYXJfd3JpdGUoc3RydWN0IGZpbGUgKiwgY29uc3QgY2hhciAqLCBz
aXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIHNzaXplX3QgYmxvY2tfd3JpdGUoc3RydWN0IGZpbGUg
KiwgY29uc3QgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKCmV4dGVybiBpbnQgZmlsZV9mc3lu
YyhzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCk7CmV4dGVybiBpbnQgZ2VuZXJp
Y19idWZmZXJfZmRhdGFzeW5jKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGxvbmcgc3Rh
cnRfaWR4LCB1bnNpZ25lZCBsb25nIGVuZF9pZHgpOwpleHRlcm4gaW50IGdlbmVyaWNfb3N5bmNf
aW5vZGUoc3RydWN0IGlub2RlICosIGludCk7CgoKCgpleHRlcm4gaW50IGlub2RlX2NoYW5nZV9v
ayhzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGlhdHRyICopOwpleHRlcm4gaW50IGlub2RlX3NldGF0
dHIoc3RydWN0IGlub2RlICosIHN0cnVjdCBpYXR0ciAqKTsKIyAxNDU4ICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0YXRpYyBpbmxpbmUgc3RydWN0IGRlbnRyeSAqbG9ja19w
YXJlbnQoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqZGly
ID0gZGdldChkZW50cnktPmRfcGFyZW50KTsKCiAgICAgICAgZG93bigmZGlyLT5kX2lub2RlLT5p
X3NlbSk7CiAgICAgICAgcmV0dXJuIGRpcjsKfQoKc3RhdGljIGlubGluZSBzdHJ1Y3QgZGVudHJ5
ICpnZXRfcGFyZW50KHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHJldHVybiBkZ2V0
KGRlbnRyeS0+ZF9wYXJlbnQpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdW5sb2NrX2RpcihzdHJ1
Y3QgZGVudHJ5ICpkaXIpCnsKICAgICAgICB1cCgmZGlyLT5kX2lub2RlLT5pX3NlbSk7CiAgICAg
ICAgZHB1dChkaXIpOwp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV9kb3duKHN0cnVj
dCBzZW1hcGhvcmUgKnMxLCBzdHJ1Y3Qgc2VtYXBob3JlICpzMikKewogICAgICAgIGlmIChzMSAh
PSBzMikgewogICAgICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25nKSBzMSA8ICh1bnNpZ25l
ZCBsb25nKSBzMikgewogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0
bXAgPSBzMjsKICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBzMTsgczEgPSB0bXA7CiAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkb3duKHMxKTsKICAgICAgICB9CiAgICAgICAg
ZG93bihzMik7Cn0KIyAxNTAyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0
YXRpYyBpbmxpbmUgdm9pZCB0cmlwbGVfZG93bihzdHJ1Y3Qgc2VtYXBob3JlICpzMSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqczMpCnsKICAgICAgICBpZiAo
czEgIT0gczIpIHsKICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczEgPCAodW5z
aWduZWQgbG9uZykgczIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCBs
b25nKSBzMSA8ICh1bnNpZ25lZCBsb25nKSBzMykgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnRtcCA9IHMzOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHMzID0gczE7IHMxID0gdG1wOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczEgPCAodW5zaWduZWQg
bG9uZykgczIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBo
b3JlICp0bXAgPSBzMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMiA9IHMxOyBz
MSA9IHRtcDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25nKSBzMSA8ICh1bnNp
Z25lZCBsb25nKSBzMykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBz
ZW1hcGhvcmUgKnRtcCA9IHMzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMzID0g
czE7IHMxID0gdG1wOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczIgPCAodW5zaWduZWQgbG9uZykgczMpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBzMzsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMyA9IHMyOyBzMiA9IHRtcDsKICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZG93
bihzMSk7CiAgICAgICAgfSBlbHNlIGlmICgodW5zaWduZWQgbG9uZykgczIgPCAodW5zaWduZWQg
bG9uZykgczMpIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnRtcCA9IHMzOwog
ICAgICAgICAgICAgICAgczMgPSBzMjsgczIgPSB0bXA7CiAgICAgICAgfQogICAgICAgIGRvd24o
czIpOwogICAgICAgIGRvd24oczMpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgZG91YmxlX3VwKHN0
cnVjdCBzZW1hcGhvcmUgKnMxLCBzdHJ1Y3Qgc2VtYXBob3JlICpzMikKewogICAgICAgIHVwKHMx
KTsKICAgICAgICBpZiAoczEgIT0gczIpCiAgICAgICAgICAgICAgICB1cChzMik7Cn0KCnN0YXRp
YyBpbmxpbmUgdm9pZCB0cmlwbGVfdXAoc3RydWN0IHNlbWFwaG9yZSAqczEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqczIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqczMpCnsKICAgICAgICB1cChzMSk7CiAgICAg
ICAgaWYgKHMxICE9IHMyKQogICAgICAgICAgICAgICAgdXAoczIpOwogICAgICAgIHVwKHMzKTsK
fQoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV9sb2NrKHN0cnVjdCBkZW50cnkgKmQxLCBzdHJ1
Y3QgZGVudHJ5ICpkMikKewogICAgICAgIGRvdWJsZV9kb3duKCZkMS0+ZF9pbm9kZS0+aV9zZW0s
ICZkMi0+ZF9pbm9kZS0+aV9zZW0pOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgZG91YmxlX3VubG9j
ayhzdHJ1Y3QgZGVudHJ5ICpkMSwgc3RydWN0IGRlbnRyeSAqZDIpCnsKICAgICAgICBkb3VibGVf
dXAoJmQxLT5kX2lub2RlLT5pX3NlbSwmZDItPmRfaW5vZGUtPmlfc2VtKTsKICAgICAgICBkcHV0
KGQxKTsKICAgICAgICBkcHV0KGQyKTsKfQojIDE4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L2NhcGFiaWxpdHkuaCIgMgojIDMyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Nh
cGFiaWxpdHkuaCIKdHlwZWRlZiBzdHJ1Y3QgX191c2VyX2NhcF9oZWFkZXJfc3RydWN0IHsKICAg
ICAgICBfX3UzMiB2ZXJzaW9uOwogICAgICAgIGludCBwaWQ7Cn0gKmNhcF91c2VyX2hlYWRlcl90
OwoKdHlwZWRlZiBzdHJ1Y3QgX191c2VyX2NhcF9kYXRhX3N0cnVjdCB7CiAgICAgICAgX191MzIg
ZWZmZWN0aXZlOwogICAgICAgIF9fdTMyIHBlcm1pdHRlZDsKICAgICAgICBfX3UzMiBpbmhlcml0
YWJsZTsKfSAqY2FwX3VzZXJfZGF0YV90OwojIDU1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L2NhcGFiaWxpdHkuaCIKdHlwZWRlZiBfX3UzMiBrZXJuZWxfY2FwX3Q7CiMgMjg0ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHkuaCIKZXh0ZXJuIGtlcm5lbF9jYXBf
dCBjYXBfYnNldDsKIyAzMTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY2FwYWJpbGl0
eS5oIgpzdGF0aWMgaW5saW5lIGtlcm5lbF9jYXBfdCBjYXBfY29tYmluZShrZXJuZWxfY2FwX3Qg
YSwga2VybmVsX2NhcF90IGIpCnsKICAgICBrZXJuZWxfY2FwX3QgZGVzdDsKICAgICAoZGVzdCkg
PSAoYSkgfCAoYik7CiAgICAgcmV0dXJuIGRlc3Q7Cn0KCnN0YXRpYyBpbmxpbmUga2VybmVsX2Nh
cF90IGNhcF9pbnRlcnNlY3Qoa2VybmVsX2NhcF90IGEsIGtlcm5lbF9jYXBfdCBiKQp7CiAgICAg
a2VybmVsX2NhcF90IGRlc3Q7CiAgICAgKGRlc3QpID0gKGEpICYgKGIpOwogICAgIHJldHVybiBk
ZXN0Owp9CgpzdGF0aWMgaW5saW5lIGtlcm5lbF9jYXBfdCBjYXBfZHJvcChrZXJuZWxfY2FwX3Qg
YSwga2VybmVsX2NhcF90IGRyb3ApCnsKICAgICBrZXJuZWxfY2FwX3QgZGVzdDsKICAgICAoZGVz
dCkgPSAoYSkgJiB+KGRyb3ApOwogICAgIHJldHVybiBkZXN0Owp9CgpzdGF0aWMgaW5saW5lIGtl
cm5lbF9jYXBfdCBjYXBfaW52ZXJ0KGtlcm5lbF9jYXBfdCBjKQp7CiAgICAga2VybmVsX2NhcF90
IGRlc3Q7CiAgICAgKGRlc3QpID0gfihjKTsKICAgICByZXR1cm4gZGVzdDsKfQojIDYgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvYmluZm10cy5oIiAyCiMgMjIgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvYmluZm10cy5oIgpzdHJ1Y3QgbGludXhfYmlucHJtewogICAgICAgIGNo
YXIgYnVmWzEyOF07CiAgICAgICAgc3RydWN0IHBhZ2UgKnBhZ2VbMzJdOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgcDsKICAgICAgICBpbnQgc2hfYmFuZzsKICAgICAgICBzdHJ1Y3QgZmlsZSAqIGZp
bGU7CiAgICAgICAgaW50IGVfdWlkLCBlX2dpZDsKICAgICAgICBrZXJuZWxfY2FwX3QgY2FwX2lu
aGVyaXRhYmxlLCBjYXBfcGVybWl0dGVkLCBjYXBfZWZmZWN0aXZlOwogICAgICAgIGludCBhcmdj
LCBlbnZjOwogICAgICAgIGNoYXIgKiBmaWxlbmFtZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGxv
YWRlciwgZXhlYzsKfTsKCgoKCgpzdHJ1Y3QgbGludXhfYmluZm10IHsKICAgICAgICBzdHJ1Y3Qg
bGludXhfYmluZm10ICogbmV4dDsKICAgICAgICBzdHJ1Y3QgbW9kdWxlICptb2R1bGU7CiAgICAg
ICAgaW50ICgqbG9hZF9iaW5hcnkpKHN0cnVjdCBsaW51eF9iaW5wcm0gKiwgc3RydWN0IHB0X3Jl
Z3MgKiByZWdzKTsKICAgICAgICBpbnQgKCpsb2FkX3NobGliKShzdHJ1Y3QgZmlsZSAqKTsKICAg
ICAgICBpbnQgKCpjb3JlX2R1bXApKGxvbmcgc2lnbnIsIHN0cnVjdCBwdF9yZWdzICogcmVncywg
c3RydWN0IGZpbGUgKiBmaWxlKTsKICAgICAgICB1bnNpZ25lZCBsb25nIG1pbl9jb3JlZHVtcDsK
fTsKCmV4dGVybiBpbnQgcmVnaXN0ZXJfYmluZm10KHN0cnVjdCBsaW51eF9iaW5mbXQgKik7CmV4
dGVybiBpbnQgdW5yZWdpc3Rlcl9iaW5mbXQoc3RydWN0IGxpbnV4X2JpbmZtdCAqKTsKCmV4dGVy
biBpbnQgcHJlcGFyZV9iaW5wcm0oc3RydWN0IGxpbnV4X2JpbnBybSAqKTsKZXh0ZXJuIHZvaWQg
cmVtb3ZlX2FyZ196ZXJvKHN0cnVjdCBsaW51eF9iaW5wcm0gKik7CmV4dGVybiBpbnQgc2VhcmNo
X2JpbmFyeV9oYW5kbGVyKHN0cnVjdCBsaW51eF9iaW5wcm0gKixzdHJ1Y3QgcHRfcmVncyAqKTsK
ZXh0ZXJuIGludCBmbHVzaF9vbGRfZXhlYyhzdHJ1Y3QgbGludXhfYmlucHJtICogYnBybSk7CmV4
dGVybiBpbnQgc2V0dXBfYXJnX3BhZ2VzKHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKTsKZXh0
ZXJuIGludCBjb3B5X3N0cmluZ3MoaW50IGFyZ2MsY2hhciAqKiBhcmd2LHN0cnVjdCBsaW51eF9i
aW5wcm0gKmJwcm0pOwpleHRlcm4gaW50IGNvcHlfc3RyaW5nc19rZXJuZWwoaW50IGFyZ2MsY2hh
ciAqKiBhcmd2LHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pOwpleHRlcm4gdm9pZCBjb21wdXRl
X2NyZWRzKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJpbnBybSk7CmV4dGVybiBpbnQgZG9fY29yZWR1
bXAobG9uZyBzaWduciwgc3RydWN0IHB0X3JlZ3MgKiByZWdzKTsKZXh0ZXJuIHZvaWQgc2V0X2Jp
bmZtdChzdHJ1Y3QgbGludXhfYmluZm10ICpuZXcpOwojIDEwICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Ro
cmVhZHMuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAxCiMgMTIgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDEzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3RpbWVzLmgiIDEK
CgoKc3RydWN0IHRtcyB7CiAgICAgICAgY2xvY2tfdCB0bXNfdXRpbWU7CiAgICAgICAgY2xvY2tf
dCB0bXNfc3RpbWU7CiAgICAgICAgY2xvY2tfdCB0bXNfY3V0aW1lOwogICAgICAgIGNsb2NrX3Qg
dG1zX2NzdGltZTsKfTsKIyAxNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90aW1leC5oIiAxCiMgNTQgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdGltZXguaCIKIyAxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2FzbS9wYXJhbS5oIiAxCiMgNTUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
dGltZXguaCIgMgojIDE1MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90aW1leC5oIgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3RpbWV4LmgiIDEKIyA5ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2FzbS90aW1leC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvY29uZmlnLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vdGltZXguaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL21zci5oIiAxCiMgMTEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvYXNtL3RpbWV4LmgiIDIKIyAzMiAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9hc20vdGltZXguaCIKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgY3ljbGVzX3Q7CgpleHRl
cm4gY3ljbGVzX3QgY2FjaGVmbHVzaF90aW1lOwoKc3RhdGljIGlubGluZSBjeWNsZXNfdCBnZXRf
Y3ljbGVzICh2b2lkKQp7CgoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHJldDsKCiAgICAg
ICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInJkdHNjIiA6ICI9QSIgKHJldCkpOwogICAgICAgIHJl
dHVybiByZXQ7Cgp9CgpleHRlcm4gdW5zaWduZWQgbG9uZyBjcHVfa2h6OwojIDE1MyAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC90aW1leC5oIiAyCiMgMTYxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L3RpbWV4LmgiCnN0cnVjdCB0aW1leCB7CiAgICAgICAgdW5zaWduZWQgaW50
IG1vZGVzOwogICAgICAgIGxvbmcgb2Zmc2V0OwogICAgICAgIGxvbmcgZnJlcTsKICAgICAgICBs
b25nIG1heGVycm9yOwogICAgICAgIGxvbmcgZXN0ZXJyb3I7CiAgICAgICAgaW50IHN0YXR1czsK
ICAgICAgICBsb25nIGNvbnN0YW50OwogICAgICAgIGxvbmcgcHJlY2lzaW9uOwogICAgICAgIGxv
bmcgdG9sZXJhbmNlOwoKCiAgICAgICAgc3RydWN0IHRpbWV2YWwgdGltZTsKICAgICAgICBsb25n
IHRpY2s7CgogICAgICAgIGxvbmcgcHBzZnJlcTsKICAgICAgICBsb25nIGppdHRlcjsKICAgICAg
ICBpbnQgc2hpZnQ7CiAgICAgICAgbG9uZyBzdGFiaWw7CiAgICAgICAgbG9uZyBqaXRjbnQ7CiAg
ICAgICAgbG9uZyBjYWxjbnQ7CiAgICAgICAgbG9uZyBlcnJjbnQ7CiAgICAgICAgbG9uZyBzdGJj
bnQ7CgogICAgICAgIGludCA6MzI7IGludCA6MzI7IGludCA6MzI7IGludCA6MzI7CiAgICAgICAg
aW50IDozMjsgaW50IDozMjsgaW50IDozMjsgaW50IDozMjsKICAgICAgICBpbnQgOjMyOyBpbnQg
OjMyOyBpbnQgOjMyOyBpbnQgOjMyOwp9OwojIDI1MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC90aW1leC5oIgpleHRlcm4gbG9uZyB0aWNrOwpleHRlcm4gaW50IHRpY2thZGo7CgoKCgpl
eHRlcm4gaW50IHRpbWVfc3RhdGU7CmV4dGVybiBpbnQgdGltZV9zdGF0dXM7CmV4dGVybiBsb25n
IHRpbWVfb2Zmc2V0OwpleHRlcm4gbG9uZyB0aW1lX2NvbnN0YW50OwpleHRlcm4gbG9uZyB0aW1l
X3RvbGVyYW5jZTsKZXh0ZXJuIGxvbmcgdGltZV9wcmVjaXNpb247CmV4dGVybiBsb25nIHRpbWVf
bWF4ZXJyb3I7CmV4dGVybiBsb25nIHRpbWVfZXN0ZXJyb3I7CgpleHRlcm4gbG9uZyB0aW1lX3Bo
YXNlOwpleHRlcm4gbG9uZyB0aW1lX2ZyZXE7CmV4dGVybiBsb25nIHRpbWVfYWRqOwpleHRlcm4g
bG9uZyB0aW1lX3JlZnRpbWU7CgpleHRlcm4gbG9uZyB0aW1lX2FkanVzdDsKCgpleHRlcm4gbG9u
ZyBwcHNfb2Zmc2V0OwpleHRlcm4gbG9uZyBwcHNfaml0dGVyOwpleHRlcm4gbG9uZyBwcHNfZnJl
cTsKZXh0ZXJuIGxvbmcgcHBzX3N0YWJpbDsKZXh0ZXJuIGxvbmcgcHBzX3ZhbGlkOwoKCmV4dGVy
biBpbnQgcHBzX3NoaWZ0OwpleHRlcm4gbG9uZyBwcHNfaml0Y250OwpleHRlcm4gbG9uZyBwcHNf
Y2FsY250OwpleHRlcm4gbG9uZyBwcHNfZXJyY250OwpleHRlcm4gbG9uZyBwcHNfc3RiY250Owoj
IDE1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3JidHJlZS5oIiAxCiMgOTcgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvcmJ0cmVlLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9r
ZXJuZWwuaCIgMQojIDk4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3JidHJlZS5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zdGRkZWYuaCIgMQojIDk5ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3JidHJlZS5oIiAyCgp0eXBlZGVmIHN0cnVjdCByYl9u
b2RlX3MKewogICAgICAgIHN0cnVjdCByYl9ub2RlX3MgKiByYl9wYXJlbnQ7CiAgICAgICAgaW50
IHJiX2NvbG9yOwoKCiAgICAgICAgc3RydWN0IHJiX25vZGVfcyAqIHJiX3JpZ2h0OwogICAgICAg
IHN0cnVjdCByYl9ub2RlX3MgKiByYl9sZWZ0Owp9CnJiX25vZGVfdDsKCnR5cGVkZWYgc3RydWN0
IHJiX3Jvb3Rfcwp7CiAgICAgICAgc3RydWN0IHJiX25vZGVfcyAqIHJiX25vZGU7Cn0KcmJfcm9v
dF90OwoKCgoKCmV4dGVybiB2b2lkIHJiX2luc2VydF9jb2xvcihyYl9ub2RlX3QgKiwgcmJfcm9v
dF90ICopOwpleHRlcm4gdm9pZCByYl9lcmFzZShyYl9ub2RlX3QgKiwgcmJfcm9vdF90ICopOwoK
c3RhdGljIGlubGluZSB2b2lkIHJiX2xpbmtfbm9kZShyYl9ub2RlX3QgKiBub2RlLCByYl9ub2Rl
X3QgKiBwYXJlbnQsIHJiX25vZGVfdCAqKiByYl9saW5rKQp7CiAgICAgICAgbm9kZS0+cmJfcGFy
ZW50ID0gcGFyZW50OwogICAgICAgIG5vZGUtPnJiX2NvbG9yID0gMDsKICAgICAgICBub2RlLT5y
Yl9sZWZ0ID0gbm9kZS0+cmJfcmlnaHQgPSAoKHZvaWQgKikwKTsKCiAgICAgICAgKnJiX2xpbmsg
PSBub2RlOwp9CiMgMTYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgoK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMQojIDE4ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2FzbS9zZW1hcGhvcmUuaCIgMQojIDE5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wYWdlLmgiIDEKIyAy
MCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9hc20vcHRyYWNlLmgiIDEKIyAyMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vbW11Lmgi
IDEKCgoKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB2b2lkICpzZWdtZW50czsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGNwdXZhbGlkOwp9IG1tX2NvbnRleHRfdDsKIyAyMiAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvc21wLmgiIDEKIyA5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NtcC5o
IgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAxMCAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zbXAuaCIgMgojIDI0ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3R0eS5oIiAxCiMgMTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHR5LmgiCiMgMSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDIwICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3R0eS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9mcy5oIiAxCiMgMjEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHR5LmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21ham9yLmgiIDEKIyAxNzcgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbWFqb3IuaCIKc3RhdGljIF9faW5saW5lX18gaW50IHNj
c2lfYmxrX21ham9yKGludCBtKSB7CiAgICAgICAgcmV0dXJuICgoKG0pID09IDggfHwgKChtKSA+
PSA2NSAmJiAobSkgPD0gNzEpKSB8fCAobSkgPT0gMTEpOwp9CiMgMTkwICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L21ham9yLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBpZGVfYmxrX21h
am9yKGludCBtKQp7CiAgICAgICAgcmV0dXJuICgobSkgPT0gMyB8fCAobSkgPT0gMjIgfHwgKG0p
ID09IDMzIHx8IChtKSA9PSAzNCB8fCAobSkgPT0gNTYgfHwgKG0pID09IDU3IHx8IChtKSA9PSA4
OCB8fCAobSkgPT0gODkgfHwgKG0pID09IDkwIHx8IChtKSA9PSA5MSk7Cn0KIyAyMiAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC90dHkuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvdGVybWlvcy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC90eXBlcy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90ZXJtaW9zLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS90ZXJtaW9zLmgiIDEKCgoKIyAxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS90ZXJtYml0cy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9hc20vdGVybWJpdHMuaCIgMgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIGNjX3Q7CnR5
cGVkZWYgdW5zaWduZWQgaW50IHNwZWVkX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IHRjZmxhZ190
OwoKCnN0cnVjdCB0ZXJtaW9zIHsKICAgICAgICB0Y2ZsYWdfdCBjX2lmbGFnOwogICAgICAgIHRj
ZmxhZ190IGNfb2ZsYWc7CiAgICAgICAgdGNmbGFnX3QgY19jZmxhZzsKICAgICAgICB0Y2ZsYWdf
dCBjX2xmbGFnOwogICAgICAgIGNjX3QgY19saW5lOwogICAgICAgIGNjX3QgY19jY1sxOV07Cn07
CiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vdGVybWlvcy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9hc20vaW9jdGxzLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2FzbS9pb2N0bC5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vaW9j
dGxzLmgiIDIKIyA2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS90ZXJtaW9zLmgiIDIKCnN0
cnVjdCB3aW5zaXplIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB3c19yb3c7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgd3NfY29sOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHdzX3hwaXhlbDsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCB3c195cGl4ZWw7Cn07CgoKc3RydWN0IHRlcm1pbyB7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgY19pZmxhZzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjX29mbGFn
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNfY2ZsYWc7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
Y19sZmxhZzsKICAgICAgICB1bnNpZ25lZCBjaGFyIGNfbGluZTsKICAgICAgICB1bnNpZ25lZCBj
aGFyIGNfY2NbOF07Cn07CiMgNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90ZXJtaW9z
LmgiIDIKIyAyMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90dHkuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHF1ZXVlLmgiIDEKIyAyNCAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC90dHkuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvdHR5X2RyaXZlci5oIiAxCiMgMTE4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R0
eV9kcml2ZXIuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDEKIyAx
MTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHR5X2RyaXZlci5oIiAyCgpzdHJ1Y3Qg
dHR5X2RyaXZlciB7CiAgICAgICAgaW50IG1hZ2ljOwogICAgICAgIGNvbnN0IGNoYXIgKmRyaXZl
cl9uYW1lOwogICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAgaW50IG5hbWVfYmFzZTsK
ICAgICAgICBzaG9ydCBtYWpvcjsKICAgICAgICBzaG9ydCBtaW5vcl9zdGFydDsKICAgICAgICBz
aG9ydCBudW07CiAgICAgICAgc2hvcnQgdHlwZTsKICAgICAgICBzaG9ydCBzdWJ0eXBlOwogICAg
ICAgIHN0cnVjdCB0ZXJtaW9zIGluaXRfdGVybWlvczsKICAgICAgICBpbnQgZmxhZ3M7CiAgICAg
ICAgaW50ICpyZWZjb3VudDsKICAgICAgICBzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKnByb2NfZW50
cnk7CiAgICAgICAgc3RydWN0IHR0eV9kcml2ZXIgKm90aGVyOwoKCgoKICAgICAgICBzdHJ1Y3Qg
dHR5X3N0cnVjdCAqKnRhYmxlOwogICAgICAgIHN0cnVjdCB0ZXJtaW9zICoqdGVybWlvczsKICAg
ICAgICBzdHJ1Y3QgdGVybWlvcyAqKnRlcm1pb3NfbG9ja2VkOwogICAgICAgIHZvaWQgKmRyaXZl
cl9zdGF0ZTsKCgoKCgogICAgICAgIGludCAoKm9wZW4pKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5
LCBzdHJ1Y3QgZmlsZSAqIGZpbHApOwogICAgICAgIHZvaWQgKCpjbG9zZSkoc3RydWN0IHR0eV9z
dHJ1Y3QgKiB0dHksIHN0cnVjdCBmaWxlICogZmlscCk7CiAgICAgICAgaW50ICgqd3JpdGUpKHN0
cnVjdCB0dHlfc3RydWN0ICogdHR5LCBpbnQgZnJvbV91c2VyLAogICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgY291bnQpOwogICAgICAgIHZvaWQgKCpw
dXRfY2hhcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgdW5zaWduZWQgY2hhciBjaCk7CiAgICAg
ICAgdm9pZCAoKmZsdXNoX2NoYXJzKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICBp
bnQgKCp3cml0ZV9yb29tKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICBpbnQgKCpj
aGFyc19pbl9idWZmZXIpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIGludCAoKmlv
Y3RsKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgZmlsZSAqIGZpbGUsCiAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpOwogICAgICAg
IHZvaWQgKCpzZXRfdGVybWlvcykoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IHRlcm1p
b3MgKiBvbGQpOwogICAgICAgIHZvaWQgKCp0aHJvdHRsZSkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0
dHkpOwogICAgICAgIHZvaWQgKCp1bnRocm90dGxlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSk7
CiAgICAgICAgdm9pZCAoKnN0b3ApKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIHZv
aWQgKCpzdGFydCkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgdm9pZCAoKmhhbmd1
cCkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgdm9pZCAoKmJyZWFrX2N0bCkoc3Ry
dWN0IHR0eV9zdHJ1Y3QgKnR0eSwgaW50IHN0YXRlKTsKICAgICAgICB2b2lkICgqZmx1c2hfYnVm
ZmVyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICB2b2lkICgqc2V0X2xkaXNjKShz
dHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICB2b2lkICgqd2FpdF91bnRpbF9zZW50KShz
dHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBpbnQgdGltZW91dCk7CiAgICAgICAgdm9pZCAoKnNlbmRf
eGNoYXIpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGNoYXIgY2gpOwogICAgICAgIGludCAoKnJl
YWRfcHJvYykoY2hhciAqcGFnZSwgY2hhciAqKnN0YXJ0LCBvZmZfdCBvZmYsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGNvdW50LCBpbnQgKmVvZiwgdm9pZCAqZGF0YSk7CiAgICAgICAg
aW50ICgqd3JpdGVfcHJvYykoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKmJ1ZmZlciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGNvdW50LCB2b2lkICpkYXRh
KTsKCgoKCiAgICAgICAgc3RydWN0IHR0eV9kcml2ZXIgKm5leHQ7CiAgICAgICAgc3RydWN0IHR0
eV9kcml2ZXIgKnByZXY7Cn07CiMgMjUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHR5
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R0eV9sZGlzYy5oIiAxCiMg
MTAwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R0eV9sZGlzYy5oIgojIDEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMQojIDEwMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC90dHlfbGRpc2MuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvd2FpdC5oIiAxCiMgMTAyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R0eV9sZGlz
Yy5oIiAyCgpzdHJ1Y3QgdHR5X2xkaXNjIHsKICAgICAgICBpbnQgbWFnaWM7CiAgICAgICAgY2hh
ciAqbmFtZTsKICAgICAgICBpbnQgbnVtOwogICAgICAgIGludCBmbGFnczsKCgoKICAgICAgICBp
bnQgKCpvcGVuKShzdHJ1Y3QgdHR5X3N0cnVjdCAqKTsKICAgICAgICB2b2lkICgqY2xvc2UpKHN0
cnVjdCB0dHlfc3RydWN0ICopOwogICAgICAgIHZvaWQgKCpmbHVzaF9idWZmZXIpKHN0cnVjdCB0
dHlfc3RydWN0ICp0dHkpOwogICAgICAgIHNzaXplX3QgKCpjaGFyc19pbl9idWZmZXIpKHN0cnVj
dCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIHNzaXplX3QgKCpyZWFkKShzdHJ1Y3QgdHR5X3N0
cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBjaGFyICogYnVmLCBzaXplX3QgbnIpOwogICAgICAgIHNzaXplX3QgKCp3cml0ZSko
c3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0cnVjdCBmaWxlICogZmlsZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBidWYsIHNpemVfdCBucik7CiAgICAg
ICAgaW50ICgqaW9jdGwpKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5LCBzdHJ1Y3QgZmlsZSAqIGZp
bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBs
b25nIGFyZyk7CiAgICAgICAgdm9pZCAoKnNldF90ZXJtaW9zKShzdHJ1Y3QgdHR5X3N0cnVjdCAq
dHR5LCBzdHJ1Y3QgdGVybWlvcyAqIG9sZCk7CiAgICAgICAgdW5zaWduZWQgaW50ICgqcG9sbCko
c3RydWN0IHR0eV9zdHJ1Y3QgKiwgc3RydWN0IGZpbGUgKiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3QgcG9sbF90YWJsZV9zdHJ1Y3QgKik7CgoKCgogICAgICAgIHZvaWQgKCpy
ZWNlaXZlX2J1Zikoc3RydWN0IHR0eV9zdHJ1Y3QgKiwgY29uc3QgdW5zaWduZWQgY2hhciAqY3As
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpmcCwgaW50IGNvdW50KTsKICAg
ICAgICBpbnQgKCpyZWNlaXZlX3Jvb20pKHN0cnVjdCB0dHlfc3RydWN0ICopOwogICAgICAgIHZv
aWQgKCp3cml0ZV93YWtldXApKHN0cnVjdCB0dHlfc3RydWN0ICopOwp9OwojIDI2ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3R0eS5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvYXNtL3N5c3RlbS5oIiAxCiMgMjggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHR5
LmgiIDIKIyA1OSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90dHkuaCIKc3RydWN0IHNj
cmVlbl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBjaGFyIG9yaWdfeDsKICAgICAgICB1bnNpZ25l
ZCBjaGFyIG9yaWdfeTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkb250dXNlMTsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBvcmlnX3ZpZGVvX3BhZ2U7CiAgICAgICAgdW5zaWduZWQgY2hhciBvcmln
X3ZpZGVvX21vZGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBvcmlnX3ZpZGVvX2NvbHM7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgdW51c2VkMjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBvcmlnX3Zp
ZGVvX2VnYV9ieDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB1bnVzZWQzOwogICAgICAgIHVuc2ln
bmVkIGNoYXIgb3JpZ192aWRlb19saW5lczsKICAgICAgICB1bnNpZ25lZCBjaGFyIG9yaWdfdmlk
ZW9faXNWR0E7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgb3JpZ192aWRlb19wb2ludHM7CgoKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBsZmJfd2lkdGg7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbGZi
X2hlaWdodDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBsZmJfZGVwdGg7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBsZmJfYmFzZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGxmYl9zaXplOwogICAgICAg
IHVuc2lnbmVkIHNob3J0IGRvbnR1c2UyLCBkb250dXNlMzsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBsZmJfbGluZWxlbmd0aDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJlZF9zaXplOwogICAgICAg
IHVuc2lnbmVkIGNoYXIgcmVkX3BvczsKICAgICAgICB1bnNpZ25lZCBjaGFyIGdyZWVuX3NpemU7
CiAgICAgICAgdW5zaWduZWQgY2hhciBncmVlbl9wb3M7CiAgICAgICAgdW5zaWduZWQgY2hhciBi
bHVlX3NpemU7CiAgICAgICAgdW5zaWduZWQgY2hhciBibHVlX3BvczsKICAgICAgICB1bnNpZ25l
ZCBjaGFyIHJzdmRfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJzdmRfcG9zOwogICAgICAg
IHVuc2lnbmVkIHNob3J0IHZlc2FwbV9zZWc7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdmVzYXBt
X29mZjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBwYWdlczsKCn07CgpleHRlcm4gc3RydWN0IHNj
cmVlbl9pbmZvIHNjcmVlbl9pbmZvOwojIDEzOSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC90dHkuaCIKc3RydWN0IHR0eV9mbGlwX2J1ZmZlciB7CiAgICAgICAgc3RydWN0IHRxX3N0cnVj
dCB0cXVldWU7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBwdHlfc2VtOwogICAgICAgIGNoYXIg
KmNoYXJfYnVmX3B0cjsKICAgICAgICB1bnNpZ25lZCBjaGFyICpmbGFnX2J1Zl9wdHI7CiAgICAg
ICAgaW50IGNvdW50OwogICAgICAgIGludCBidWZfbnVtOwogICAgICAgIHVuc2lnbmVkIGNoYXIg
Y2hhcl9idWZbMio1MTJdOwogICAgICAgIGNoYXIgZmxhZ19idWZbMio1MTJdOwogICAgICAgIHVu
c2lnbmVkIGNoYXIgc2xvcFs0XTsKfTsKIyAyNTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvdHR5LmgiCnN0cnVjdCB0dHlfc3RydWN0IHsKICAgICAgICBpbnQgbWFnaWM7CiAgICAgICAg
c3RydWN0IHR0eV9kcml2ZXIgZHJpdmVyOwogICAgICAgIHN0cnVjdCB0dHlfbGRpc2MgbGRpc2M7
CiAgICAgICAgc3RydWN0IHRlcm1pb3MgKnRlcm1pb3MsICp0ZXJtaW9zX2xvY2tlZDsKICAgICAg
ICBpbnQgcGdycDsKICAgICAgICBpbnQgc2Vzc2lvbjsKICAgICAgICBrZGV2X3QgZGV2aWNlOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgaW50IGNvdW50OwogICAgICAgIHN0
cnVjdCB3aW5zaXplIHdpbnNpemU7CiAgICAgICAgdW5zaWduZWQgY2hhciBzdG9wcGVkOjEsIGh3
X3N0b3BwZWQ6MSwgZmxvd19zdG9wcGVkOjEsIHBhY2tldDoxOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgbG93X2xhdGVuY3k6MSwgd2FybmVkOjE7CiAgICAgICAgdW5zaWduZWQgY2hhciBjdHJsX3N0
YXR1czsKCiAgICAgICAgc3RydWN0IHR0eV9zdHJ1Y3QgKmxpbms7CiAgICAgICAgc3RydWN0IGZh
c3luY19zdHJ1Y3QgKmZhc3luYzsKICAgICAgICBzdHJ1Y3QgdHR5X2ZsaXBfYnVmZmVyIGZsaXA7
CiAgICAgICAgaW50IG1heF9mbGlwX2NudDsKICAgICAgICBpbnQgYWx0X3NwZWVkOwogICAgICAg
IHdhaXRfcXVldWVfaGVhZF90IHdyaXRlX3dhaXQ7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qg
cmVhZF93YWl0OwogICAgICAgIHN0cnVjdCB0cV9zdHJ1Y3QgdHFfaGFuZ3VwOwogICAgICAgIHZv
aWQgKmRpc2NfZGF0YTsKICAgICAgICB2b2lkICpkcml2ZXJfZGF0YTsKICAgICAgICBzdHJ1Y3Qg
bGlzdF9oZWFkIHR0eV9maWxlczsKCgoKCgoKCiAgICAgICAgdW5zaWduZWQgaW50IGNvbHVtbjsK
ICAgICAgICB1bnNpZ25lZCBjaGFyIGxuZXh0OjEsIGVyYXNpbmc6MSwgcmF3OjEsIHJlYWxfcmF3
OjEsIGljYW5vbjoxOwogICAgICAgIHVuc2lnbmVkIGNoYXIgY2xvc2luZzoxOwogICAgICAgIHVu
c2lnbmVkIHNob3J0IG1pbmltdW1fdG9fd2FrZTsKICAgICAgICB1bnNpZ25lZCBvdmVycnVuX3Rp
bWU7CiAgICAgICAgaW50IG51bV9vdmVycnVuOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcHJvY2Vz
c19jaGFyX21hcFsyNTYvKDgqc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKV07CiAgICAgICAgY2hhciAq
cmVhZF9idWY7CiAgICAgICAgaW50IHJlYWRfaGVhZDsKICAgICAgICBpbnQgcmVhZF90YWlsOwog
ICAgICAgIGludCByZWFkX2NudDsKICAgICAgICB1bnNpZ25lZCBsb25nIHJlYWRfZmxhZ3NbNDA5
Ni8oOCpzaXplb2YodW5zaWduZWQgbG9uZykpXTsKICAgICAgICBpbnQgY2Fub25fZGF0YTsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGNhbm9uX2hlYWQ7CiAgICAgICAgdW5zaWduZWQgaW50IGNhbm9u
X2NvbHVtbjsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGF0b21pY19yZWFkOwogICAgICAgIHN0
cnVjdCBzZW1hcGhvcmUgYXRvbWljX3dyaXRlOwogICAgICAgIHNwaW5sb2NrX3QgcmVhZF9sb2Nr
OwoKICAgICAgICBzdHJ1Y3QgdHFfc3RydWN0IFNBS190cTsKfTsKIyAzNDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvdHR5LmgiCmV4dGVybiB2b2lkIHR0eV93cml0ZV9mbHVzaChzdHJ1
Y3QgdHR5X3N0cnVjdCAqKTsKCmV4dGVybiBzdHJ1Y3QgdGVybWlvcyB0dHlfc3RkX3Rlcm1pb3M7
CmV4dGVybiBzdHJ1Y3QgdHR5X3N0cnVjdCAqIHJlZGlyZWN0OwpleHRlcm4gc3RydWN0IHR0eV9s
ZGlzYyBsZGlzY3NbXTsKZXh0ZXJuIGludCBmZ19jb25zb2xlLCBsYXN0X2NvbnNvbGUsIHdhbnRf
Y29uc29sZTsKCmV4dGVybiBpbnQga21zZ19yZWRpcmVjdDsKCmV4dGVybiB2b2lkIGNvbl9pbml0
KHZvaWQpOwpleHRlcm4gdm9pZCBjb25zb2xlX2luaXQodm9pZCk7CgpleHRlcm4gaW50IGxwX2lu
aXQodm9pZCk7CmV4dGVybiBpbnQgcHR5X2luaXQodm9pZCk7CmV4dGVybiB2b2lkIHR0eV9pbml0
KHZvaWQpOwpleHRlcm4gaW50IG14c2VyX2luaXQodm9pZCk7CmV4dGVybiBpbnQgbW94YV9pbml0
KHZvaWQpOwpleHRlcm4gaW50IGlwMl9pbml0KHZvaWQpOwpleHRlcm4gaW50IHBjeGVfaW5pdCh2
b2lkKTsKZXh0ZXJuIGludCBwY19pbml0KHZvaWQpOwpleHRlcm4gaW50IHZjc19pbml0KHZvaWQp
OwpleHRlcm4gaW50IHJwX2luaXQodm9pZCk7CmV4dGVybiBpbnQgY3lfaW5pdCh2b2lkKTsKZXh0
ZXJuIGludCBzdGxfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBzdGxpX2luaXQodm9pZCk7CmV4dGVy
biBpbnQgc3BlY2lhbGl4X2luaXQodm9pZCk7CmV4dGVybiBpbnQgZXNwc2VyaWFsX2luaXQodm9p
ZCk7CmV4dGVybiBpbnQgbWFjc2VyaWFsX2luaXQodm9pZCk7CmV4dGVybiBpbnQgYTIyMzJib2Fy
ZF9pbml0KHZvaWQpOwoKZXh0ZXJuIGludCB0dHlfcGFyYW5vaWFfY2hlY2soc3RydWN0IHR0eV9z
dHJ1Y3QgKnR0eSwga2Rldl90IGRldmljZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciAqcm91dGluZSk7CmV4dGVybiBjaGFyICp0dHlfbmFtZShzdHJ1Y3QgdHR5X3N0
cnVjdCAqdHR5LCBjaGFyICpidWYpOwpleHRlcm4gdm9pZCB0dHlfd2FpdF91bnRpbF9zZW50KHN0
cnVjdCB0dHlfc3RydWN0ICogdHR5LCBsb25nIHRpbWVvdXQpOwpleHRlcm4gaW50IHR0eV9jaGVj
a19jaGFuZ2Uoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHkpOwpleHRlcm4gdm9pZCBzdG9wX3R0eShz
dHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSk7CmV4dGVybiB2b2lkIHN0YXJ0X3R0eShzdHJ1Y3QgdHR5
X3N0cnVjdCAqIHR0eSk7CmV4dGVybiBpbnQgdHR5X3JlZ2lzdGVyX2xkaXNjKGludCBkaXNjLCBz
dHJ1Y3QgdHR5X2xkaXNjICpuZXdfbGRpc2MpOwpleHRlcm4gaW50IHR0eV9yZWdpc3Rlcl9kcml2
ZXIoc3RydWN0IHR0eV9kcml2ZXIgKmRyaXZlcik7CmV4dGVybiBpbnQgdHR5X3VucmVnaXN0ZXJf
ZHJpdmVyKHN0cnVjdCB0dHlfZHJpdmVyICpkcml2ZXIpOwpleHRlcm4gdm9pZCB0dHlfcmVnaXN0
ZXJfZGV2ZnMgKHN0cnVjdCB0dHlfZHJpdmVyICpkcml2ZXIsIHVuc2lnbmVkIGludCBmbGFncywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtaW5vcik7CmV4dGVybiB2
b2lkIHR0eV91bnJlZ2lzdGVyX2RldmZzIChzdHJ1Y3QgdHR5X2RyaXZlciAqZHJpdmVyLCB1bnNp
Z25lZCBtaW5vcik7CmV4dGVybiBpbnQgdHR5X3JlYWRfcmF3X2RhdGEoc3RydWN0IHR0eV9zdHJ1
Y3QgKnR0eSwgdW5zaWduZWQgY2hhciAqYnVmcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgYnVmbGVuKTsKZXh0ZXJuIHZvaWQgdHR5X3dyaXRlX21lc3NhZ2Uoc3RydWN0IHR0eV9z
dHJ1Y3QgKnR0eSwgY2hhciAqbXNnKTsKCmV4dGVybiBpbnQgaXNfb3JwaGFuZWRfcGdycChpbnQg
cGdycCk7CmV4dGVybiBpbnQgaXNfaWdub3JlZChpbnQgc2lnKTsKZXh0ZXJuIGludCB0dHlfc2ln
bmFsKGludCBzaWcsIHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwpleHRlcm4gdm9pZCB0dHlfaGFu
Z3VwKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5KTsKZXh0ZXJuIHZvaWQgdHR5X3ZoYW5ndXAoc3Ry
dWN0IHR0eV9zdHJ1Y3QgKiB0dHkpOwpleHRlcm4gdm9pZCB0dHlfdW5oYW5ndXAoc3RydWN0IGZp
bGUgKmZpbHApOwpleHRlcm4gaW50IHR0eV9odW5nX3VwX3Aoc3RydWN0IGZpbGUgKiBmaWxwKTsK
ZXh0ZXJuIHZvaWQgZG9fU0FLKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwpleHRlcm4gdm9pZCBk
aXNhc3NvY2lhdGVfY3R0eShpbnQgcHJpdik7CmV4dGVybiB2b2lkIHR0eV9mbGlwX2J1ZmZlcl9w
dXNoKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwpleHRlcm4gaW50IHR0eV9nZXRfYmF1ZF9yYXRl
KHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwoKCmV4dGVybiBzdHJ1Y3QgdHR5X2xkaXNjIHR0eV9s
ZGlzY19OX1RUWTsKCgpleHRlcm4gaW50IG5fdHR5X2lvY3RsKHN0cnVjdCB0dHlfc3RydWN0ICog
dHR5LCBzdHJ1Y3QgZmlsZSAqIGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpOwoKCgpleHRlcm4gdm9pZCBzZXJpYWxfY29uc29s
ZV9pbml0KHZvaWQpOwoKCgpleHRlcm4gaW50IHBjeGVfb3BlbihzdHJ1Y3QgdHR5X3N0cnVjdCAq
dHR5LCBzdHJ1Y3QgZmlsZSAqZmlscCk7CgoKCmV4dGVybiB2b2lkIGNvbnNvbGVfcHJpbnQoY29u
c3QgY2hhciAqKTsKCgoKZXh0ZXJuIGludCB2dF9pb2N0bChzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5
LCBzdHJ1Y3QgZmlsZSAqIGZpbGUsCiAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNt
ZCwgdW5zaWduZWQgbG9uZyBhcmcpOwojIDI1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NlbS5oIiAxCgoK
CiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pcGMuaCIgMQoKCgojIDEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvaXBjLmgiIDIKCgoKCnN0cnVjdCBpcGNfcGVybQp7CiAgICAgICAgX19rZXJu
ZWxfa2V5X3Qga2V5OwogICAgICAgIF9fa2VybmVsX3VpZF90IHVpZDsKICAgICAgICBfX2tlcm5l
bF9naWRfdCBnaWQ7CiAgICAgICAgX19rZXJuZWxfdWlkX3QgY3VpZDsKICAgICAgICBfX2tlcm5l
bF9naWRfdCBjZ2lkOwogICAgICAgIF9fa2VybmVsX21vZGVfdCBtb2RlOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHNlcTsKfTsKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2lwY2J1
Zi5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2lwY2J1Zi5oIgpzdHJ1Y3Qg
aXBjNjRfcGVybQp7CiAgICAgICAgX19rZXJuZWxfa2V5X3Qga2V5OwogICAgICAgIF9fa2VybmVs
X3VpZDMyX3QgdWlkOwogICAgICAgIF9fa2VybmVsX2dpZDMyX3QgZ2lkOwogICAgICAgIF9fa2Vy
bmVsX3VpZDMyX3QgY3VpZDsKICAgICAgICBfX2tlcm5lbF9naWQzMl90IGNnaWQ7CiAgICAgICAg
X19rZXJuZWxfbW9kZV90IG1vZGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgX19wYWQxOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IHNlcTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBfX3BhZDI7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3Vu
dXNlZDI7Cn07CiMgMjIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaXBjLmgiIDIKIyA1
NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pcGMuaCIKc3RydWN0IGtlcm5faXBjX3Bl
cm0KewogICAgICAgIGtleV90IGtleTsKICAgICAgICB1aWRfdCB1aWQ7CiAgICAgICAgZ2lkX3Qg
Z2lkOwogICAgICAgIHVpZF90IGN1aWQ7CiAgICAgICAgZ2lkX3QgY2dpZDsKICAgICAgICBtb2Rl
X3QgbW9kZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcTsKfTsKIyA1ICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L3NlbS5oIiAyCiMgMjMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvc2VtLmgiCnN0cnVjdCBzZW1pZF9kcyB7CiAgICAgICAgc3RydWN0IGlwY19wZXJtIHNlbV9w
ZXJtOwogICAgICAgIF9fa2VybmVsX3RpbWVfdCBzZW1fb3RpbWU7CiAgICAgICAgX19rZXJuZWxf
dGltZV90IHNlbV9jdGltZTsKICAgICAgICBzdHJ1Y3Qgc2VtICpzZW1fYmFzZTsKICAgICAgICBz
dHJ1Y3Qgc2VtX3F1ZXVlICpzZW1fcGVuZGluZzsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVlICoq
c2VtX3BlbmRpbmdfbGFzdDsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKnVuZG87CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgc2VtX25zZW1zOwp9OwoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9hc20vc2VtYnVmLmgiIDEKIyAxNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2VtYnVm
LmgiCnN0cnVjdCBzZW1pZDY0X2RzIHsKICAgICAgICBzdHJ1Y3QgaXBjNjRfcGVybSBzZW1fcGVy
bTsKICAgICAgICBfX2tlcm5lbF90aW1lX3Qgc2VtX290aW1lOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgX191bnVzZWQxOwogICAgICAgIF9fa2VybmVsX3RpbWVfdCBzZW1fY3RpbWU7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBfX3VudXNlZDI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZW1fbnNlbXM7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBf
X3VudXNlZDQ7Cn07CiMgMzYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2VtLmgiIDIK
CgpzdHJ1Y3Qgc2VtYnVmIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzZW1fbnVtOwogICAgICAg
IHNob3J0IHNlbV9vcDsKICAgICAgICBzaG9ydCBzZW1fZmxnOwp9OwoKCnVuaW9uIHNlbXVuIHsK
ICAgICAgICBpbnQgdmFsOwogICAgICAgIHN0cnVjdCBzZW1pZF9kcyAqYnVmOwogICAgICAgIHVu
c2lnbmVkIHNob3J0ICphcnJheTsKICAgICAgICBzdHJ1Y3Qgc2VtaW5mbyAqX19idWY7CiAgICAg
ICAgdm9pZCAqX19wYWQ7Cn07CgpzdHJ1Y3Qgc2VtaW5mbyB7CiAgICAgICAgaW50IHNlbW1hcDsK
ICAgICAgICBpbnQgc2VtbW5pOwogICAgICAgIGludCBzZW1tbnM7CiAgICAgICAgaW50IHNlbW1u
dTsKICAgICAgICBpbnQgc2VtbXNsOwogICAgICAgIGludCBzZW1vcG07CiAgICAgICAgaW50IHNl
bXVtZTsKICAgICAgICBpbnQgc2VtdXN6OwogICAgICAgIGludCBzZW12bXg7CiAgICAgICAgaW50
IHNlbWFlbTsKfTsKIyA4MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zZW0uaCIKc3Ry
dWN0IHNlbSB7CiAgICAgICAgaW50IHNlbXZhbDsKICAgICAgICBpbnQgc2VtcGlkOwp9OwoKCnN0
cnVjdCBzZW1fYXJyYXkgewogICAgICAgIHN0cnVjdCBrZXJuX2lwY19wZXJtIHNlbV9wZXJtOwog
ICAgICAgIHRpbWVfdCBzZW1fb3RpbWU7CiAgICAgICAgdGltZV90IHNlbV9jdGltZTsKICAgICAg
ICBzdHJ1Y3Qgc2VtICpzZW1fYmFzZTsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVlICpzZW1fcGVu
ZGluZzsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVlICoqc2VtX3BlbmRpbmdfbGFzdDsKICAgICAg
ICBzdHJ1Y3Qgc2VtX3VuZG8gKnVuZG87CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZW1fbnNlbXM7
Cn07CgoKc3RydWN0IHNlbV9xdWV1ZSB7CiAgICAgICAgc3RydWN0IHNlbV9xdWV1ZSAqIG5leHQ7
CiAgICAgICAgc3RydWN0IHNlbV9xdWV1ZSAqKiBwcmV2OwogICAgICAgIHN0cnVjdCB0YXNrX3N0
cnVjdCogc2xlZXBlcjsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKiB1bmRvOwogICAgICAgIGlu
dCBwaWQ7CiAgICAgICAgaW50IHN0YXR1czsKICAgICAgICBzdHJ1Y3Qgc2VtX2FycmF5ICogc21h
OwogICAgICAgIGludCBpZDsKICAgICAgICBzdHJ1Y3Qgc2VtYnVmICogc29wczsKICAgICAgICBp
bnQgbnNvcHM7CiAgICAgICAgaW50IGFsdGVyOwp9OwoKCgoKc3RydWN0IHNlbV91bmRvIHsKICAg
ICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKiBwcm9jX25leHQ7CiAgICAgICAgc3RydWN0IHNlbV91bmRv
ICogaWRfbmV4dDsKICAgICAgICBpbnQgc2VtaWQ7CiAgICAgICAgc2hvcnQgKiBzZW1hZGo7Cn07
CgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3NlbWdldCAoa2V5X3Qga2V5
LCBpbnQgbnNlbXMsIGludCBzZW1mbGcpOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxv
bmcgc3lzX3NlbW9wIChpbnQgc2VtaWQsIHN0cnVjdCBzZW1idWYgKnNvcHMsIHVuc2lnbmVkIG5z
b3BzKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zZW1jdGwgKGludCBz
ZW1pZCwgaW50IHNlbW51bSwgaW50IGNtZCwgdW5pb24gc2VtdW4gYXJnKTsKIyAyNiAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9zaWduYWwuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNt
L3NpZ25hbC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5o
IiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2lnbmFsLmgiIDIKCgpzdHJ1Y3Qg
c2lnaW5mbzsKIyAxNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2lnbmFsLmgiCnR5cGVk
ZWYgdW5zaWduZWQgbG9uZyBvbGRfc2lnc2V0X3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzaWdbKDY0IC8gMzIpXTsKfSBzaWdzZXRfdDsKIyAxMjkgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvYXNtL3NpZ25hbC5oIgp0eXBlZGVmIHZvaWQgKCpfX3NpZ2hhbmRsZXJf
dCkoaW50KTsKCgoKCgoKc3RydWN0IG9sZF9zaWdhY3Rpb24gewogICAgICAgIF9fc2lnaGFuZGxl
cl90IHNhX2hhbmRsZXI7CiAgICAgICAgb2xkX3NpZ3NldF90IHNhX21hc2s7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBzYV9mbGFnczsKICAgICAgICB2b2lkICgqc2FfcmVzdG9yZXIpKHZvaWQpOwp9
OwoKc3RydWN0IHNpZ2FjdGlvbiB7CiAgICAgICAgX19zaWdoYW5kbGVyX3Qgc2FfaGFuZGxlcjsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNhX2ZsYWdzOwogICAgICAgIHZvaWQgKCpzYV9yZXN0b3Jl
cikodm9pZCk7CiAgICAgICAgc2lnc2V0X3Qgc2FfbWFzazsKfTsKCnN0cnVjdCBrX3NpZ2FjdGlv
biB7CiAgICAgICAgc3RydWN0IHNpZ2FjdGlvbiBzYTsKfTsKIyAxNzEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvYXNtL3NpZ25hbC5oIgp0eXBlZGVmIHN0cnVjdCBzaWdhbHRzdGFjayB7CiAgICAg
ICAgdm9pZCAqc3Nfc3A7CiAgICAgICAgaW50IHNzX2ZsYWdzOwogICAgICAgIHNpemVfdCBzc19z
aXplOwp9IHN0YWNrX3Q7CgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zaWdjb250
ZXh0LmgiIDEKIyAxNzkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NpZ25hbC5oIiAyCgoK
CnN0YXRpYyBfX2lubGluZV9fIHZvaWQgc2lnYWRkc2V0KHNpZ3NldF90ICpzZXQsIGludCBfc2ln
KQp7CiAgICAgICAgX19hc21fXygiYnRzbCAlMSwlMCIgOiAiPW0iKCpzZXQpIDogIklyIihfc2ln
IC0gMSkgOiAiY2MiKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBzaWdkZWxzZXQoc2lnc2V0
X3QgKnNldCwgaW50IF9zaWcpCnsKICAgICAgICBfX2FzbV9fKCJidHJsICUxLCUwIiA6ICI9bSIo
KnNldCkgOiAiSXIiKF9zaWcgLSAxKSA6ICJjYyIpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQg
X19jb25zdF9zaWdpc21lbWJlcihzaWdzZXRfdCAqc2V0LCBpbnQgX3NpZykKewogICAgICAgIHVu
c2lnbmVkIGxvbmcgc2lnID0gX3NpZyAtIDE7CiAgICAgICAgcmV0dXJuIDEgJiAoc2V0LT5zaWdb
c2lnIC8gMzJdID4+IChzaWcgJSAzMikpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX19nZW5f
c2lnaXNtZW1iZXIoc2lnc2V0X3QgKnNldCwgaW50IF9zaWcpCnsKICAgICAgICBpbnQgcmV0Owog
ICAgICAgIF9fYXNtX18oImJ0bCAlMiwlMVxuXHRzYmJsICUwLCUwIgogICAgICAgICAgICAgICAg
OiAiPXIiKHJldCkgOiAibSIoKnNldCksICJJciIoX3NpZy0xKSA6ICJjYyIpOwogICAgICAgIHJl
dHVybiByZXQ7Cn0KIyAyMTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NpZ25hbC5oIgpz
dGF0aWMgX19pbmxpbmVfXyBpbnQgc2lnZmluZGlud29yZCh1bnNpZ25lZCBsb25nIHdvcmQpCnsK
ICAgICAgICBfX2FzbV9fKCJic2ZsICUxLCUwIiA6ICI9ciIod29yZCkgOiAicm0iKHdvcmQpIDog
ImNjIik7CiAgICAgICAgcmV0dXJuIHdvcmQ7Cn0KIyA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3NpZ25hbC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2lnaW5m
by5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMg
NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2lnaW5mby5oIiAyCgoKCnR5cGVkZWYgdW5p
b24gc2lndmFsIHsKICAgICAgICBpbnQgc2l2YWxfaW50OwogICAgICAgIHZvaWQgKnNpdmFsX3B0
cjsKfSBzaWd2YWxfdDsKCgoKCnR5cGVkZWYgc3RydWN0IHNpZ2luZm8gewogICAgICAgIGludCBz
aV9zaWdubzsKICAgICAgICBpbnQgc2lfZXJybm87CiAgICAgICAgaW50IHNpX2NvZGU7CgogICAg
ICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIGludCBfcGFkWygoMTI4L3NpemVvZihpbnQpKSAt
IDMpXTsKCgogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAg
cGlkX3QgX3BpZDsKICAgICAgICAgICAgICAgICAgICAgICAgdWlkX3QgX3VpZDsKICAgICAgICAg
ICAgICAgIH0gX2tpbGw7CgoKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBfdGltZXIxOwogICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgX3RpbWVyMjsKICAgICAgICAgICAgICAgIH0gX3RpbWVyOwoKCiAgICAgICAg
ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBwaWRfdCBfcGlkOwogICAg
ICAgICAgICAgICAgICAgICAgICB1aWRfdCBfdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBz
aWd2YWxfdCBfc2lndmFsOwogICAgICAgICAgICAgICAgfSBfcnQ7CgoKICAgICAgICAgICAgICAg
IHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBpZF90IF9waWQ7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHVpZF90IF91aWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBfc3Rh
dHVzOwogICAgICAgICAgICAgICAgICAgICAgICBjbG9ja190IF91dGltZTsKICAgICAgICAgICAg
ICAgICAgICAgICAgY2xvY2tfdCBfc3RpbWU7CiAgICAgICAgICAgICAgICB9IF9zaWdjaGxkOwoK
CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpf
YWRkcjsKICAgICAgICAgICAgICAgIH0gX3NpZ2ZhdWx0OwoKCiAgICAgICAgICAgICAgICBzdHJ1
Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBpbnQgX2JhbmQ7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBfZmQ7CiAgICAgICAgICAgICAgICB9IF9zaWdwb2xsOwogICAgICAgIH0gX3Np
ZmllbGRzOwp9IHNpZ2luZm9fdDsKIyAxOTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Np
Z2luZm8uaCIKdHlwZWRlZiBzdHJ1Y3Qgc2lnZXZlbnQgewogICAgICAgIHNpZ3ZhbF90IHNpZ2V2
X3ZhbHVlOwogICAgICAgIGludCBzaWdldl9zaWdubzsKICAgICAgICBpbnQgc2lnZXZfbm90aWZ5
OwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIGludCBfcGFkWygoNjQvc2l6ZW9mKGlu
dCkpIC0gMyldOwoKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQgKCpfZnVuY3Rpb24pKHNpZ3ZhbF90KTsKICAgICAgICAgICAgICAgICAgICAgICAg
dm9pZCAqX2F0dHJpYnV0ZTsKICAgICAgICAgICAgICAgIH0gX3NpZ2V2X3RocmVhZDsKICAgICAg
ICB9IF9zaWdldl91bjsKfSBzaWdldmVudF90OwoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9zdHJpbmcuaCIgMQojIDIxOCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20v
c2lnaW5mby5oIiAyCgpzdGF0aWMgaW5saW5lIHZvaWQgY29weV9zaWdpbmZvKHNpZ2luZm9fdCAq
dG8sIHNpZ2luZm9fdCAqZnJvbSkKewogICAgICAgIGlmIChmcm9tLT5zaV9jb2RlIDwgMCkKICAg
ICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcChzaXplb2Yoc2lnaW5mb190KSkgPyBf
X2NvbnN0YW50X21lbWNweSgodG8pLChmcm9tKSwoc2l6ZW9mKHNpZ2luZm9fdCkpKSA6IF9fbWVt
Y3B5KCh0byksKGZyb20pLChzaXplb2Yoc2lnaW5mb190KSkpKTsKICAgICAgICBlbHNlCgogICAg
ICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDMqc2l6ZW9mKGludCkgKyBzaXplb2Yo
ZnJvbS0+X3NpZmllbGRzLl9zaWdjaGxkKSkgPyBfX2NvbnN0YW50X21lbWNweSgodG8pLChmcm9t
KSwoMypzaXplb2YoaW50KSArIHNpemVvZihmcm9tLT5fc2lmaWVsZHMuX3NpZ2NobGQpKSkgOiBf
X21lbWNweSgodG8pLChmcm9tKSwoMypzaXplb2YoaW50KSArIHNpemVvZihmcm9tLT5fc2lmaWVs
ZHMuX3NpZ2NobGQpKSkpOwp9CgpleHRlcm4gaW50IGNvcHlfc2lnaW5mb190b191c2VyKHNpZ2lu
Zm9fdCAqdG8sIHNpZ2luZm9fdCAqZnJvbSk7CiMgNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9zaWduYWwuaCIgMgoKCgoKCgpzdHJ1Y3Qgc2lncXVldWUgewogICAgICAgIHN0cnVjdCBz
aWdxdWV1ZSAqbmV4dDsKICAgICAgICBzaWdpbmZvX3QgaW5mbzsKfTsKCnN0cnVjdCBzaWdwZW5k
aW5nIHsKICAgICAgICBzdHJ1Y3Qgc2lncXVldWUgKmhlYWQsICoqdGFpbDsKICAgICAgICBzaWdz
ZXRfdCBzaWduYWw7Cn07CiMgNjggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2lnbmFs
LmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMQojIDY5ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NpZ25hbC5oIiAyCiMgMTA4ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3NpZ25hbC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnb3JzZXRz
KHNpZ3NldF90ICpyLCBjb25zdCBzaWdzZXRfdCAqYSwgY29uc3Qgc2lnc2V0X3QgKmIpIHsgdW5z
aWduZWQgbG9uZyBhMCwgYTEsIGEyLCBhMywgYjAsIGIxLCBiMiwgYjM7IHVuc2lnbmVkIGxvbmcg
aTsgZm9yIChpID0gMDsgaSA8ICg2NCAvIDMyKS80OyArK2kpIHsgYTAgPSBhLT5zaWdbNCppKzBd
OyBhMSA9IGEtPnNpZ1s0KmkrMV07IGEyID0gYS0+c2lnWzQqaSsyXTsgYTMgPSBhLT5zaWdbNCpp
KzNdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBiLT5zaWdb
NCppKzJdOyBiMyA9IGItPnNpZ1s0KmkrM107IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSB8IChiMCkp
OyByLT5zaWdbNCppKzFdID0gKChhMSkgfCAoYjEpKTsgci0+c2lnWzQqaSsyXSA9ICgoYTIpIHwg
KGIyKSk7IHItPnNpZ1s0KmkrM10gPSAoKGEzKSB8IChiMykpOyB9IHN3aXRjaCAoKDY0IC8gMzIp
ICUgNCkgeyBjYXNlIDM6IGEwID0gYS0+c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBh
MiA9IGEtPnNpZ1s0KmkrMl07IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFd
OyBiMiA9IGItPnNpZ1s0KmkrMl07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSB8IChiMCkpOyByLT5z
aWdbNCppKzFdID0gKChhMSkgfCAoYjEpKTsgci0+c2lnWzQqaSsyXSA9ICgoYTIpIHwgKGIyKSk7
IGJyZWFrOyBjYXNlIDI6IGEwID0gYS0+c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBi
MCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgci0+c2lnWzQqaSswXSA9ICgo
YTApIHwgKGIwKSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSB8IChiMSkpOyBicmVhazsgY2FzZSAx
OiBhMCA9IGEtPnNpZ1s0KmkrMF07IGIwID0gYi0+c2lnWzQqaSswXTsgci0+c2lnWzQqaSswXSA9
ICgoYTApIHwgKGIwKSk7IGJyZWFrOyB9IH0KCgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnYW5kc2V0
cyhzaWdzZXRfdCAqciwgY29uc3Qgc2lnc2V0X3QgKmEsIGNvbnN0IHNpZ3NldF90ICpiKSB7IHVu
c2lnbmVkIGxvbmcgYTAsIGExLCBhMiwgYTMsIGIwLCBiMSwgYjIsIGIzOyB1bnNpZ25lZCBsb25n
IGk7IGZvciAoaSA9IDA7IGkgPCAoNjQgLyAzMikvNDsgKytpKSB7IGEwID0gYS0+c2lnWzQqaSsw
XTsgYTEgPSBhLT5zaWdbNCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGEzID0gYS0+c2lnWzQq
aSszXTsgYjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IGIyID0gYi0+c2ln
WzQqaSsyXTsgYjMgPSBiLT5zaWdbNCppKzNdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiAoYjAp
KTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpICYgKGIxKSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSAm
IChiMikpOyByLT5zaWdbNCppKzNdID0gKChhMykgJiAoYjMpKTsgfSBzd2l0Y2ggKCg2NCAvIDMy
KSAlIDQpIHsgY2FzZSAzOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsg
YTIgPSBhLT5zaWdbNCppKzJdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsx
XTsgYjIgPSBiLT5zaWdbNCppKzJdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiAoYjApKTsgci0+
c2lnWzQqaSsxXSA9ICgoYTEpICYgKGIxKSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSAmIChiMikp
OyBicmVhazsgY2FzZSAyOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsg
YjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IHItPnNpZ1s0KmkrMF0gPSAo
KGEwKSAmIChiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgJiAoYjEpKTsgYnJlYWs7IGNhc2Ug
MTogYTAgPSBhLT5zaWdbNCppKzBdOyBiMCA9IGItPnNpZ1s0KmkrMF07IHItPnNpZ1s0KmkrMF0g
PSAoKGEwKSAmIChiMCkpOyBicmVhazsgfSB9CgoKc3RhdGljIGlubGluZSB2b2lkIHNpZ25hbmRz
ZXRzKHNpZ3NldF90ICpyLCBjb25zdCBzaWdzZXRfdCAqYSwgY29uc3Qgc2lnc2V0X3QgKmIpIHsg
dW5zaWduZWQgbG9uZyBhMCwgYTEsIGEyLCBhMywgYjAsIGIxLCBiMiwgYjM7IHVuc2lnbmVkIGxv
bmcgaTsgZm9yIChpID0gMDsgaSA8ICg2NCAvIDMyKS80OyArK2kpIHsgYTAgPSBhLT5zaWdbNCpp
KzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07IGEyID0gYS0+c2lnWzQqaSsyXTsgYTMgPSBhLT5zaWdb
NCppKzNdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBiLT5z
aWdbNCppKzJdOyBiMyA9IGItPnNpZ1s0KmkrM107IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIH4o
YjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpICYgfihiMSkpOyByLT5zaWdbNCppKzJdID0gKChh
MikgJiB+KGIyKSk7IHItPnNpZ1s0KmkrM10gPSAoKGEzKSAmIH4oYjMpKTsgfSBzd2l0Y2ggKCg2
NCAvIDMyKSAlIDQpIHsgY2FzZSAzOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQq
aSsxXTsgYTIgPSBhLT5zaWdbNCppKzJdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2ln
WzQqaSsxXTsgYjIgPSBiLT5zaWdbNCppKzJdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiB+KGIw
KSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSAmIH4oYjEpKTsgci0+c2lnWzQqaSsyXSA9ICgoYTIp
ICYgfihiMikpOyBicmVhazsgY2FzZSAyOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2ln
WzQqaSsxXTsgYjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IHItPnNpZ1s0
KmkrMF0gPSAoKGEwKSAmIH4oYjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpICYgfihiMSkpOyBi
cmVhazsgY2FzZSAxOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGIwID0gYi0+c2lnWzQqaSswXTsgci0+
c2lnWzQqaSswXSA9ICgoYTApICYgfihiMCkpOyBicmVhazsgfSB9CiMgMTQwICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3NpZ25hbC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnbm90c2V0
KHNpZ3NldF90ICpzZXQpIHsgdW5zaWduZWQgbG9uZyBpOyBmb3IgKGkgPSAwOyBpIDwgKDY0IC8g
MzIpLzQ7ICsraSkgeyBzZXQtPnNpZ1s0KmkrMF0gPSAofihzZXQtPnNpZ1s0KmkrMF0pKTsgc2V0
LT5zaWdbNCppKzFdID0gKH4oc2V0LT5zaWdbNCppKzFdKSk7IHNldC0+c2lnWzQqaSsyXSA9ICh+
KHNldC0+c2lnWzQqaSsyXSkpOyBzZXQtPnNpZ1s0KmkrM10gPSAofihzZXQtPnNpZ1s0KmkrM10p
KTsgfSBzd2l0Y2ggKCg2NCAvIDMyKSAlIDQpIHsgY2FzZSAzOiBzZXQtPnNpZ1s0KmkrMl0gPSAo
fihzZXQtPnNpZ1s0KmkrMl0pKTsgY2FzZSAyOiBzZXQtPnNpZ1s0KmkrMV0gPSAofihzZXQtPnNp
Z1s0KmkrMV0pKTsgY2FzZSAxOiBzZXQtPnNpZ1s0KmkrMF0gPSAofihzZXQtPnNpZ1s0KmkrMF0p
KTsgfSB9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnZW1wdHlzZXQoc2lnc2V0X3QgKnNldCkK
ewogICAgICAgIHN3aXRjaCAoKDY0IC8gMzIpKSB7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgo
c2l6ZW9mKHNpZ3NldF90KSkpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKChzZXQp
KSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVvZihzaWdzZXRfdCkp
KSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoc2V0KSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVk
IGNoYXIpKDApKSksKChzaXplb2Yoc2lnc2V0X3QpKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRf
cCgoc2l6ZW9mKHNpZ3NldF90KSkpID8gX19tZW1zZXRfZ2VuZXJpYygoKChzZXQpKSksKCgoMCkp
KSwoKChzaXplb2Yoc2lnc2V0X3QpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKChzZXQpKSwoKDAp
KSwoKHNpemVvZihzaWdzZXRfdCkpKSkpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
IGNhc2UgMjogc2V0LT5zaWdbMV0gPSAwOwogICAgICAgIGNhc2UgMTogc2V0LT5zaWdbMF0gPSAw
OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQp9CgpzdGF0aWMgaW5saW5lIHZvaWQg
c2lnZmlsbHNldChzaWdzZXRfdCAqc2V0KQp7CiAgICAgICAgc3dpdGNoICgoNjQgLyAzMikpIHsK
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKC0x
KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKHNpZ3NldF90KSkpID8gX19jb25zdGFu
dF9jX2FuZF9jb3VudF9tZW1zZXQoKChzZXQpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hh
cikoLTEpKSksKChzaXplb2Yoc2lnc2V0X3QpKSkpIDogX19jb25zdGFudF9jX21lbXNldCgoKHNl
dCkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgtMSkpKSwoKHNpemVvZihzaWdzZXRf
dCkpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2Yoc2lnc2V0X3QpKSkgPyBfX21l
bXNldF9nZW5lcmljKCgoKHNldCkpKSwoKCgtMSkpKSwoKChzaXplb2Yoc2lnc2V0X3QpKSkpKSA6
IF9fbWVtc2V0X2dlbmVyaWMoKChzZXQpKSwoKC0xKSksKChzaXplb2Yoc2lnc2V0X3QpKSkpKSk7
CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6IHNldC0+c2lnWzFdID0gLTE7
CiAgICAgICAgY2FzZSAxOiBzZXQtPnNpZ1swXSA9IC0xOwogICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgfQp9CgpleHRlcm4gY2hhciAqIHJlbmRlcl9zaWdzZXRfdChzaWdzZXRfdCAqc2V0
LCBjaGFyICpidWZmZXIpOwoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnYWRkc2V0bWFzayhzaWdz
ZXRfdCAqc2V0LCB1bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAgICBzZXQtPnNpZ1swXSB8PSBt
YXNrOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnZGVsc2V0bWFzayhzaWdzZXRfdCAqc2V0LCB1
bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAgICBzZXQtPnNpZ1swXSAmPSB+bWFzazsKfQoKc3Rh
dGljIGlubGluZSBpbnQgc2lndGVzdHNldG1hc2soc2lnc2V0X3QgKnNldCwgdW5zaWduZWQgbG9u
ZyBtYXNrKQp7CiAgICAgICAgcmV0dXJuIChzZXQtPnNpZ1swXSAmIG1hc2spICE9IDA7Cn0KCnN0
YXRpYyBpbmxpbmUgdm9pZCBzaWdpbml0c2V0KHNpZ3NldF90ICpzZXQsIHVuc2lnbmVkIGxvbmcg
bWFzaykKewogICAgICAgIHNldC0+c2lnWzBdID0gbWFzazsKICAgICAgICBzd2l0Y2ggKCg2NCAv
IDMyKSkgewogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0
YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihsb25nKSooKDY0IC8gMzIp
LTEpKSkgPyBfX2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKCZzZXQtPnNpZ1sxXSkpLCgo
MHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAz
MiktMSkpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoJnNldC0+c2lnWzFdKSksKCgweDAxMDEw
MTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkp
KSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkg
PyBfX21lbXNldF9nZW5lcmljKCgoKCZzZXQtPnNpZ1sxXSkpKSwoKCgwKSkpLCgoKHNpemVvZihs
b25nKSooKDY0IC8gMzIpLTEpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKCgmc2V0LT5zaWdbMV0p
KSwoKDApKSwoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkpKSk7CiAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICBjYXNlIDI6IHNldC0+c2lnWzFdID0gMDsKICAgICAgICBjYXNlIDE6
IDsKICAgICAgICB9Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdpbml0c2V0aW52KHNpZ3NldF90
ICpzZXQsIHVuc2lnbmVkIGxvbmcgbWFzaykKewogICAgICAgIHNldC0+c2lnWzBdID0gfm1hc2s7
CiAgICAgICAgc3dpdGNoICgoNjQgLyAzMikpIHsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKC0xKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgo
c2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSA/IF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVt
c2V0KCgoJnNldC0+c2lnWzFdKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKC0xKSkp
LCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgo
JnNldC0+c2lnWzFdKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKC0xKSkpLCgoc2l6
ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXpl
b2YobG9uZykqKCg2NCAvIDMyKS0xKSkpID8gX19tZW1zZXRfZ2VuZXJpYygoKCgmc2V0LT5zaWdb
MV0pKSksKCgoLTEpKSksKCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkpIDogX19tZW1z
ZXRfZ2VuZXJpYygoKCZzZXQtPnNpZ1sxXSkpLCgoLTEpKSwoKHNpemVvZihsb25nKSooKDY0IC8g
MzIpLTEpKSkpKSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6IHNldC0+
c2lnWzFdID0gLTE7CiAgICAgICAgY2FzZSAxOiA7CiAgICAgICAgfQp9CgoKCnN0YXRpYyBpbmxp
bmUgdm9pZCBpbml0X3NpZ3BlbmRpbmcoc3RydWN0IHNpZ3BlbmRpbmcgKnNpZykKewogICAgICAg
IHNpZ2VtcHR5c2V0KCZzaWctPnNpZ25hbCk7CiAgICAgICAgc2lnLT5oZWFkID0gKCh2b2lkICop
MCk7CiAgICAgICAgc2lnLT50YWlsID0gJnNpZy0+aGVhZDsKfQoKZXh0ZXJuIGxvbmcgZG9fc2ln
cGVuZGluZyh2b2lkICosIHVuc2lnbmVkIGxvbmcpOwojIDI3ICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Nl
Y3VyZWJpdHMuaCIgMQoKCgoKCmV4dGVybiB1bnNpZ25lZCBzZWN1cmViaXRzOwojIDI4ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L2ZzX3N0cnVjdC5oIiAxCgoKCgpzdHJ1Y3QgZnNfc3RydWN0IHsKICAgICAg
ICBhdG9taWNfdCBjb3VudDsKICAgICAgICByd2xvY2tfdCBsb2NrOwogICAgICAgIGludCB1bWFz
azsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICogcm9vdCwgKiBwd2QsICogYWx0cm9vdDsKICAgICAg
ICBzdHJ1Y3QgdmZzbW91bnQgKiByb290bW50LCAqIHB3ZG1udCwgKiBhbHRyb290bW50Owp9Owoj
IDIwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzX3N0cnVjdC5oIgpleHRlcm4gdm9p
ZCBleGl0X2ZzKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQgc2V0X2ZzX2FsdHJv
b3Qodm9pZCk7CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZnNfcm9vdChzdHJ1Y3QgZnNf
c3RydWN0ICpmcywKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKm1udCwKICAgICAgICBzdHJ1Y3Qg
ZGVudHJ5ICpkZW50cnkpCnsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpvbGRfcm9vdDsKICAgICAg
ICBzdHJ1Y3QgdmZzbW91bnQgKm9sZF9yb290bW50OwogICAgICAgICh2b2lkKSgmZnMtPmxvY2sp
OwogICAgICAgIG9sZF9yb290ID0gZnMtPnJvb3Q7CiAgICAgICAgb2xkX3Jvb3RtbnQgPSBmcy0+
cm9vdG1udDsKICAgICAgICBmcy0+cm9vdG1udCA9IG1udGdldChtbnQpOwogICAgICAgIGZzLT5y
b290ID0gZGdldChkZW50cnkpOwogICAgICAgIGRvIHsgfSB3aGlsZSgwKTsKICAgICAgICBpZiAo
b2xkX3Jvb3QpIHsKICAgICAgICAgICAgICAgIGRwdXQob2xkX3Jvb3QpOwogICAgICAgICAgICAg
ICAgbW50cHV0KG9sZF9yb290bW50KTsKICAgICAgICB9Cn0KCgoKCgoKc3RhdGljIGlubGluZSB2
b2lkIHNldF9mc19wd2Qoc3RydWN0IGZzX3N0cnVjdCAqZnMsCiAgICAgICAgc3RydWN0IHZmc21v
dW50ICptbnQsCiAgICAgICAgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAgc3RydWN0
IGRlbnRyeSAqb2xkX3B3ZDsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKm9sZF9wd2RtbnQ7CiAg
ICAgICAgKHZvaWQpKCZmcy0+bG9jayk7CiAgICAgICAgb2xkX3B3ZCA9IGZzLT5wd2Q7CiAgICAg
ICAgb2xkX3B3ZG1udCA9IGZzLT5wd2RtbnQ7CiAgICAgICAgZnMtPnB3ZG1udCA9IG1udGdldCht
bnQpOwogICAgICAgIGZzLT5wd2QgPSBkZ2V0KGRlbnRyeSk7CiAgICAgICAgZG8geyB9IHdoaWxl
KDApOwogICAgICAgIGlmIChvbGRfcHdkKSB7CiAgICAgICAgICAgICAgICBkcHV0KG9sZF9wd2Qp
OwogICAgICAgICAgICAgICAgbW50cHV0KG9sZF9wd2RtbnQpOwogICAgICAgIH0KfQoKc3RydWN0
IGZzX3N0cnVjdCAqY29weV9mc19zdHJ1Y3Qoc3RydWN0IGZzX3N0cnVjdCAqb2xkKTsKdm9pZCBw
dXRfZnNfc3RydWN0KHN0cnVjdCBmc19zdHJ1Y3QgKmZzKTsKIyAyOSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCgpzdHJ1Y3QgZXhlY19kb21haW47CiMgNTggIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgYXZl
bnJ1bltdOwojIDc1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCmV4dGVy
biBpbnQgbnJfcnVubmluZywgbnJfdGhyZWFkczsKZXh0ZXJuIGludCBsYXN0X3BpZDsKCiMgMSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAxCiMgNzkgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvdGltZS5oIiAxCiMgODAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcGFyYW0uaCIgMQoKCgojIDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BhcmFtLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L3BhcmFtLmgiIDIKIyA4MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9yZXNvdXJjZS5o
IiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90aW1lLmgiIDEKIyA1ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Jlc291cmNlLmgiIDIKIyAyMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9yZXNvdXJjZS5oIgpzdHJ1Y3QgcnVzYWdlIHsKICAgICAgICBz
dHJ1Y3QgdGltZXZhbCBydV91dGltZTsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBydV9zdGltZTsK
ICAgICAgICBsb25nIHJ1X21heHJzczsKICAgICAgICBsb25nIHJ1X2l4cnNzOwogICAgICAgIGxv
bmcgcnVfaWRyc3M7CiAgICAgICAgbG9uZyBydV9pc3JzczsKICAgICAgICBsb25nIHJ1X21pbmZs
dDsKICAgICAgICBsb25nIHJ1X21hamZsdDsKICAgICAgICBsb25nIHJ1X25zd2FwOwogICAgICAg
IGxvbmcgcnVfaW5ibG9jazsKICAgICAgICBsb25nIHJ1X291YmxvY2s7CiAgICAgICAgbG9uZyBy
dV9tc2dzbmQ7CiAgICAgICAgbG9uZyBydV9tc2dyY3Y7CiAgICAgICAgbG9uZyBydV9uc2lnbmFs
czsKICAgICAgICBsb25nIHJ1X252Y3N3OwogICAgICAgIGxvbmcgcnVfbml2Y3N3Owp9OwoKc3Ry
dWN0IHJsaW1pdCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBybGltX2N1cjsKICAgICAgICB1bnNp
Z25lZCBsb25nIHJsaW1fbWF4Owp9OwojIDU2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3Jlc291cmNlLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcmVzb3VyY2UuaCIg
MQojIDU3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Jlc291cmNlLmgiIDIKIyA4MiAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC90aW1lci5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9jb25maWcuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdGlt
ZXIuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbGlzdC5oIiAxCiMgNiAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90aW1lci5oIiAyCiMgMTYgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvdGltZXIuaCIKc3RydWN0IHRpbWVyX2xpc3QgewogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgbGlzdDsKICAgICAgICB1bnNpZ25lZCBsb25nIGV4cGlyZXM7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBkYXRhOwogICAgICAgIHZvaWQgKCpmdW5jdGlvbikodW5zaWduZWQg
bG9uZyk7Cn07CgpleHRlcm4gdm9pZCBhZGRfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKiB0aW1l
cik7CmV4dGVybiBpbnQgZGVsX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICogdGltZXIpOwojIDQx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3RpbWVyLmgiCmludCBtb2RfdGltZXIoc3Ry
dWN0IHRpbWVyX2xpc3QgKnRpbWVyLCB1bnNpZ25lZCBsb25nIGV4cGlyZXMpOwoKZXh0ZXJuIHZv
aWQgaXRfcmVhbF9mbih1bnNpZ25lZCBsb25nKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3Rp
bWVyKHN0cnVjdCB0aW1lcl9saXN0ICogdGltZXIpCnsKICAgICAgICB0aW1lci0+bGlzdC5uZXh0
ID0gdGltZXItPmxpc3QucHJldiA9ICgodm9pZCAqKTApOwp9CgpzdGF0aWMgaW5saW5lIGludCB0
aW1lcl9wZW5kaW5nIChjb25zdCBzdHJ1Y3QgdGltZXJfbGlzdCAqIHRpbWVyKQp7CiAgICAgICAg
cmV0dXJuIHRpbWVyLT5saXN0Lm5leHQgIT0gKCh2b2lkICopMCk7Cn0KIyA4MyAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvYXNtL3Byb2Nlc3Nvci5oIiAxCiMgODUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
c2NoZWQuaCIgMgojIDEyNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpz
dHJ1Y3Qgc2NoZWRfcGFyYW0gewogICAgICAgIGludCBzY2hlZF9wcmlvcml0eTsKfTsKCnN0cnVj
dCBjb21wbGV0aW9uOwoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3Bpbmxv
Y2suaCIgMQojIDEzNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCgoK
CgoKCgpleHRlcm4gcndsb2NrX3QgdGFza2xpc3RfbG9jazsKZXh0ZXJuIHNwaW5sb2NrX3QgcnVu
cXVldWVfbG9jazsKZXh0ZXJuIHNwaW5sb2NrX3QgbW1saXN0X2xvY2s7CgpleHRlcm4gdm9pZCBz
Y2hlZF9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBpbml0X2lkbGUodm9pZCk7CmV4dGVybiB2b2lk
IHNob3dfc3RhdGUodm9pZCk7CmV4dGVybiB2b2lkIGNwdV9pbml0ICh2b2lkKTsKZXh0ZXJuIHZv
aWQgdHJhcF9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCB1cGRhdGVfcHJvY2Vzc190aW1lcyhpbnQg
dXNlcik7CmV4dGVybiB2b2lkIHVwZGF0ZV9vbmVfcHJvY2VzcyhzdHJ1Y3QgdGFza19zdHJ1Y3Qg
KnAsIHVuc2lnbmVkIGxvbmcgdXNlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGxvbmcgc3lzdGVtLCBpbnQgY3B1KTsKCgpleHRlcm4gc2lnbmVkIGxvbmcgc2NoZWR1
bGVfdGltZW91dChzaWduZWQgbG9uZyB0aW1lb3V0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMp
KSk7CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgdm9pZCBzY2hlZHVsZSh2b2lkKTsKCmV4
dGVybiBpbnQgc2NoZWR1bGVfdGFzayhzdHJ1Y3QgdHFfc3RydWN0ICp0YXNrKTsKZXh0ZXJuIHZv
aWQgZmx1c2hfc2NoZWR1bGVkX3Rhc2tzKHZvaWQpOwpleHRlcm4gaW50IHN0YXJ0X2NvbnRleHRf
dGhyZWFkKHZvaWQpOwpleHRlcm4gaW50IGN1cnJlbnRfaXNfa2V2ZW50ZCh2b2lkKTsKIyAxNzIg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIKc3RydWN0IGZpbGVzX3N0cnVj
dCB7CiAgICAgICAgYXRvbWljX3QgY291bnQ7CiAgICAgICAgcndsb2NrX3QgZmlsZV9sb2NrOwog
ICAgICAgIGludCBtYXhfZmRzOwogICAgICAgIGludCBtYXhfZmRzZXQ7CiAgICAgICAgaW50IG5l
eHRfZmQ7CiAgICAgICAgc3RydWN0IGZpbGUgKiogZmQ7CiAgICAgICAgZmRfc2V0ICpjbG9zZV9v
bl9leGVjOwogICAgICAgIGZkX3NldCAqb3Blbl9mZHM7CiAgICAgICAgZmRfc2V0IGNsb3NlX29u
X2V4ZWNfaW5pdDsKICAgICAgICBmZF9zZXQgb3Blbl9mZHNfaW5pdDsKICAgICAgICBzdHJ1Y3Qg
ZmlsZSAqIGZkX2FycmF5WzMyXTsKfTsKIyAyMDQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvc2NoZWQuaCIKc3RydWN0IG1tX3N0cnVjdCB7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3Ry
dWN0ICogbW1hcDsKICAgICAgICByYl9yb290X3QgbW1fcmI7CiAgICAgICAgc3RydWN0IHZtX2Fy
ZWFfc3RydWN0ICogbW1hcF9jYWNoZTsKICAgICAgICBwZ2RfdCAqIHBnZDsKICAgICAgICBhdG9t
aWNfdCBtbV91c2VyczsKICAgICAgICBhdG9taWNfdCBtbV9jb3VudDsKICAgICAgICBpbnQgbWFw
X2NvdW50OwogICAgICAgIHN0cnVjdCByd19zZW1hcGhvcmUgbW1hcF9zZW07CiAgICAgICAgc3Bp
bmxvY2tfdCBwYWdlX3RhYmxlX2xvY2s7CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbW1saXN0
OwoKCgoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0X2NvZGUsIGVuZF9jb2RlLCBzdGFydF9k
YXRhLCBlbmRfZGF0YTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0X2JyaywgYnJrLCBzdGFy
dF9zdGFjazsKICAgICAgICB1bnNpZ25lZCBsb25nIGFyZ19zdGFydCwgYXJnX2VuZCwgZW52X3N0
YXJ0LCBlbnZfZW5kOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcnNzLCB0b3RhbF92bSwgbG9ja2Vk
X3ZtOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGVmX2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgY3B1X3ZtX21hc2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzd2FwX2FkZHJlc3M7CgogICAg
ICAgIHVuc2lnbmVkIGR1bXBhYmxlOjE7CgoKICAgICAgICBtbV9jb250ZXh0X3QgY29udGV4dDsK
fTsKCmV4dGVybiBpbnQgbW1saXN0X25yOwojIDI0NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9zY2hlZC5oIgpzdHJ1Y3Qgc2lnbmFsX3N0cnVjdCB7CiAgICAgICAgYXRvbWljX3QgY291
bnQ7CiAgICAgICAgc3RydWN0IGtfc2lnYWN0aW9uIGFjdGlvbls2NF07CiAgICAgICAgc3Bpbmxv
Y2tfdCBzaWdsb2NrOwp9OwojIDI2MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hl
ZC5oIgpzdHJ1Y3QgdXNlcl9zdHJ1Y3QgewogICAgICAgIGF0b21pY190IF9fY291bnQ7CiAgICAg
ICAgYXRvbWljX3QgcHJvY2Vzc2VzOwogICAgICAgIGF0b21pY190IGZpbGVzOwoKCiAgICAgICAg
c3RydWN0IHVzZXJfc3RydWN0ICpuZXh0LCAqKnBwcmV2OwogICAgICAgIHVpZF90IHVpZDsKfTsK
CgoKCgoKZXh0ZXJuIHN0cnVjdCB1c2VyX3N0cnVjdCByb290X3VzZXI7CgoKc3RydWN0IHRhc2tf
c3RydWN0IHsKCgoKICAgICAgICB2b2xhdGlsZSBsb25nIHN0YXRlOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgZmxhZ3M7CiAgICAgICAgaW50IHNpZ3BlbmRpbmc7CiAgICAgICAgbW1fc2VnbWVudF90
IGFkZHJfbGltaXQ7CgoKCiAgICAgICAgc3RydWN0IGV4ZWNfZG9tYWluICpleGVjX2RvbWFpbjsK
ICAgICAgICB2b2xhdGlsZSBsb25nIG5lZWRfcmVzY2hlZDsKICAgICAgICB1bnNpZ25lZCBsb25n
IHB0cmFjZTsKCiAgICAgICAgaW50IGxvY2tfZGVwdGg7CgoKCgoKCiAgICAgICAgbG9uZyBjb3Vu
dGVyOwogICAgICAgIGxvbmcgbmljZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHBvbGljeTsKICAg
ICAgICBzdHJ1Y3QgbW1fc3RydWN0ICptbTsKICAgICAgICBpbnQgaGFzX2NwdSwgcHJvY2Vzc29y
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1c19hbGxvd2VkOwoKCgoKICAgICAgICBzdHJ1Y3Qg
bGlzdF9oZWFkIHJ1bl9saXN0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2xlZXBfdGltZTsKCiAg
ICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpuZXh0X3Rhc2ssICpwcmV2X3Rhc2s7CiAgICAgICAg
c3RydWN0IG1tX3N0cnVjdCAqYWN0aXZlX21tOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbG9j
YWxfcGFnZXM7CiAgICAgICAgdW5zaWduZWQgaW50IGFsbG9jYXRpb25fb3JkZXIsIG5yX2xvY2Fs
X3BhZ2VzOwoKCiAgICAgICAgc3RydWN0IGxpbnV4X2JpbmZtdCAqYmluZm10OwogICAgICAgIGlu
dCBleGl0X2NvZGUsIGV4aXRfc2lnbmFsOwogICAgICAgIGludCBwZGVhdGhfc2lnbmFsOwoKICAg
ICAgICB1bnNpZ25lZCBsb25nIHBlcnNvbmFsaXR5OwogICAgICAgIGludCBkaWRfZXhlYzoxOwog
ICAgICAgIHBpZF90IHBpZDsKICAgICAgICBwaWRfdCBwZ3JwOwogICAgICAgIHBpZF90IHR0eV9v
bGRfcGdycDsKICAgICAgICBwaWRfdCBzZXNzaW9uOwogICAgICAgIHBpZF90IHRnaWQ7CgogICAg
ICAgIGludCBsZWFkZXI7CgoKCgoKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnBfb3BwdHIs
ICpwX3BwdHIsICpwX2NwdHIsICpwX3lzcHRyLCAqcF9vc3B0cjsKICAgICAgICBzdHJ1Y3QgbGlz
dF9oZWFkIHRocmVhZF9ncm91cDsKCgogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqcGlkaGFz
aF9uZXh0OwogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqKnBpZGhhc2hfcHByZXY7CgogICAg
ICAgIHdhaXRfcXVldWVfaGVhZF90IHdhaXRfY2hsZGV4aXQ7CiAgICAgICAgc3RydWN0IGNvbXBs
ZXRpb24gKnZmb3JrX2RvbmU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBydF9wcmlvcml0eTsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGl0X3JlYWxfdmFsdWUsIGl0X3Byb2ZfdmFsdWUsIGl0X3ZpcnRf
dmFsdWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpdF9yZWFsX2luY3IsIGl0X3Byb2ZfaW5jciwg
aXRfdmlydF9pbmNyOwogICAgICAgIHN0cnVjdCB0aW1lcl9saXN0IHJlYWxfdGltZXI7CiAgICAg
ICAgc3RydWN0IHRtcyB0aW1lczsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0X3RpbWU7CiAg
ICAgICAgbG9uZyBwZXJfY3B1X3V0aW1lWzFdLCBwZXJfY3B1X3N0aW1lWzFdOwoKICAgICAgICB1
bnNpZ25lZCBsb25nIG1pbl9mbHQsIG1hal9mbHQsIG5zd2FwLCBjbWluX2ZsdCwgY21hal9mbHQs
IGNuc3dhcDsKICAgICAgICBpbnQgc3dhcHBhYmxlOjE7CgogICAgICAgIHVpZF90IHVpZCxldWlk
LHN1aWQsZnN1aWQ7CiAgICAgICAgZ2lkX3QgZ2lkLGVnaWQsc2dpZCxmc2dpZDsKICAgICAgICBp
bnQgbmdyb3VwczsKICAgICAgICBnaWRfdCBncm91cHNbMzJdOwogICAgICAgIGtlcm5lbF9jYXBf
dCBjYXBfZWZmZWN0aXZlLCBjYXBfaW5oZXJpdGFibGUsIGNhcF9wZXJtaXR0ZWQ7CiAgICAgICAg
aW50IGtlZXBfY2FwYWJpbGl0aWVzOjE7CiAgICAgICAgc3RydWN0IHVzZXJfc3RydWN0ICp1c2Vy
OwoKICAgICAgICBzdHJ1Y3QgcmxpbWl0IHJsaW1bMTFdOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IHVzZWRfbWF0aDsKICAgICAgICBjaGFyIGNvbW1bMTZdOwoKICAgICAgICBpbnQgbGlua19jb3Vu
dCwgdG90YWxfbGlua19jb3VudDsKICAgICAgICBzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5OwogICAg
ICAgIHVuc2lnbmVkIGludCBsb2NrczsKCiAgICAgICAgc3RydWN0IHNlbV91bmRvICpzZW11bmRv
OwogICAgICAgIHN0cnVjdCBzZW1fcXVldWUgKnNlbXNsZWVwaW5nOwoKICAgICAgICBzdHJ1Y3Qg
dGhyZWFkX3N0cnVjdCB0aHJlYWQ7CgogICAgICAgIHN0cnVjdCBmc19zdHJ1Y3QgKmZzOwoKICAg
ICAgICBzdHJ1Y3QgZmlsZXNfc3RydWN0ICpmaWxlczsKCiAgICAgICAgc3BpbmxvY2tfdCBzaWdt
YXNrX2xvY2s7CiAgICAgICAgc3RydWN0IHNpZ25hbF9zdHJ1Y3QgKnNpZzsKCiAgICAgICAgc2ln
c2V0X3QgYmxvY2tlZDsKICAgICAgICBzdHJ1Y3Qgc2lncGVuZGluZyBwZW5kaW5nOwoKICAgICAg
ICB1bnNpZ25lZCBsb25nIHNhc19zc19zcDsKICAgICAgICBzaXplX3Qgc2FzX3NzX3NpemU7CiAg
ICAgICAgaW50ICgqbm90aWZpZXIpKHZvaWQgKnByaXYpOwogICAgICAgIHZvaWQgKm5vdGlmaWVy
X2RhdGE7CiAgICAgICAgc2lnc2V0X3QgKm5vdGlmaWVyX21hc2s7CgoKICAgICAgICB1MzIgcGFy
ZW50X2V4ZWNfaWQ7CiAgICAgICAgdTMyIHNlbGZfZXhlY19pZDsKCiAgICAgICAgc3BpbmxvY2tf
dCBhbGxvY19sb2NrOwp9OwojIDQ0NCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hl
ZC5oIgpleHRlcm4gc3RydWN0IGV4ZWNfZG9tYWluIGRlZmF1bHRfZXhlY19kb21haW47CiMgNDk2
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCnVuaW9uIHRhc2tfdW5pb24g
ewogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCB0YXNrOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
c3RhY2tbMjA0OCpzaXplb2YobG9uZykvc2l6ZW9mKGxvbmcpXTsKfTsKCmV4dGVybiB1bmlvbiB0
YXNrX3VuaW9uIGluaXRfdGFza191bmlvbjsKCmV4dGVybiBzdHJ1Y3QgbW1fc3RydWN0IGluaXRf
bW07CmV4dGVybiBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmluaXRfdGFza3NbMV07CgoKCmV4dGVybiBz
dHJ1Y3QgdGFza19zdHJ1Y3QgKnBpZGhhc2hbKDQwOTYgPj4gMildOwoKCgpzdGF0aWMgaW5saW5l
IHZvaWQgaGFzaF9waWQoc3RydWN0IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgc3RydWN0IHRh
c2tfc3RydWN0ICoqaHRhYmxlID0gJnBpZGhhc2hbKCgoKHAtPnBpZCkgPj4gOCkgXiAocC0+cGlk
KSkgJiAoKDQwOTYgPj4gMikgLSAxKSldOwoKICAgICAgICBpZigocC0+cGlkaGFzaF9uZXh0ID0g
Kmh0YWJsZSkgIT0gKCh2b2lkICopMCkpCiAgICAgICAgICAgICAgICAoKmh0YWJsZSktPnBpZGhh
c2hfcHByZXYgPSAmcC0+cGlkaGFzaF9uZXh0OwogICAgICAgICpodGFibGUgPSBwOwogICAgICAg
IHAtPnBpZGhhc2hfcHByZXYgPSBodGFibGU7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB1bmhhc2hf
cGlkKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAgICAgIGlmKHAtPnBpZGhhc2hfbmV4dCkK
ICAgICAgICAgICAgICAgIHAtPnBpZGhhc2hfbmV4dC0+cGlkaGFzaF9wcHJldiA9IHAtPnBpZGhh
c2hfcHByZXY7CiAgICAgICAgKnAtPnBpZGhhc2hfcHByZXYgPSBwLT5waWRoYXNoX25leHQ7Cn0K
CnN0YXRpYyBpbmxpbmUgc3RydWN0IHRhc2tfc3RydWN0ICpmaW5kX3Rhc2tfYnlfcGlkKGludCBw
aWQpCnsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsICoqaHRhYmxlID0gJnBpZGhhc2hb
KCgoKHBpZCkgPj4gOCkgXiAocGlkKSkgJiAoKDQwOTYgPj4gMikgLSAxKSldOwoKICAgICAgICBm
b3IocCA9ICpodGFibGU7IHAgJiYgcC0+cGlkICE9IHBpZDsgcCA9IHAtPnBpZGhhc2hfbmV4dCkK
ICAgICAgICAgICAgICAgIDsKCiAgICAgICAgcmV0dXJuIHA7Cn0KCgpleHRlcm4gc3RydWN0IHVz
ZXJfc3RydWN0ICogYWxsb2NfdWlkKHVpZF90KTsKZXh0ZXJuIHZvaWQgZnJlZV91aWQoc3RydWN0
IHVzZXJfc3RydWN0ICopOwoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9jdXJyZW50
LmgiIDEKCgoKc3RydWN0IHRhc2tfc3RydWN0OwoKc3RhdGljIGlubGluZSBzdHJ1Y3QgdGFza19z
dHJ1Y3QgKiBnZXRfY3VycmVudCh2b2lkKQp7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpj
dXJyZW50OwogICAgICAgIF9fYXNtX18oImFuZGwgJSVlc3AsJTA7ICI6Ij1yIiAoY3VycmVudCkg
OiAiMCIgKH44MTkxVUwpKTsKICAgICAgICByZXR1cm4gY3VycmVudDsKIH0KIyA1NDQgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcg
dm9sYXRpbGUgamlmZmllczsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaXRpbWVyX3RpY2tzOwpleHRl
cm4gdW5zaWduZWQgbG9uZyBpdGltZXJfbmV4dDsKZXh0ZXJuIHN0cnVjdCB0aW1ldmFsIHh0aW1l
OwpleHRlcm4gdm9pZCBkb190aW1lcihzdHJ1Y3QgcHRfcmVncyAqKTsKCmV4dGVybiB1bnNpZ25l
ZCBpbnQgKiBwcm9mX2J1ZmZlcjsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcHJvZl9sZW47CmV4dGVy
biB1bnNpZ25lZCBsb25nIHByb2Zfc2hpZnQ7CgoKCmV4dGVybiB2b2lkIF9fd2FrZV91cCh3YWl0
X3F1ZXVlX2hlYWRfdCAqcSwgdW5zaWduZWQgaW50IG1vZGUsIGludCBucikgX19hdHRyaWJ1dGVf
XygocmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCBfX3dha2VfdXBfc3luYyh3YWl0X3F1ZXVlX2hl
YWRfdCAqcSwgdW5zaWduZWQgaW50IG1vZGUsIGludCBucikgX19hdHRyaWJ1dGVfXygocmVncGFy
bSgzKSkpOwpleHRlcm4gdm9pZCBzbGVlcF9vbih3YWl0X3F1ZXVlX2hlYWRfdCAqcSkgX19hdHRy
aWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gbG9uZyBzbGVlcF9vbl90aW1lb3V0KHdhaXRf
cXVldWVfaGVhZF90ICpxLCBzaWduZWQgbG9uZyB0aW1lb3V0KSBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDMpKSk7CgpleHRlcm4gdm9pZCBpbnRlcnJ1cHRpYmxlX3NsZWVwX29uKHdhaXRfcXVldWVf
aGVhZF90ICpxKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBsb25nIGludGVy
cnVwdGlibGVfc2xlZXBfb25fdGltZW91dCh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgc2lnbmVkIGxv
bmcgdGltZW91dCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwoKZXh0ZXJuIGludCB3YWtl
X3VwX3Byb2Nlc3Moc3RydWN0IHRhc2tfc3RydWN0ICogdHNrKSBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDMpKSk7CiMgNTc3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCiBf
X2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfd2FpdDQocGlkX3QgcGlkLHVuc2ln
bmVkIGludCAqIHN0YXRfYWRkciwgaW50IG9wdGlvbnMsIHN0cnVjdCBydXNhZ2UgKiBydSk7Cgpl
eHRlcm4gaW50IGluX2dyb3VwX3AoZ2lkX3QpOwpleHRlcm4gaW50IGluX2Vncm91cF9wKGdpZF90
KTsKCmV4dGVybiB2b2lkIHByb2NfY2FjaGVzX2luaXQodm9pZCk7CmV4dGVybiB2b2lkIGZsdXNo
X3NpZ25hbHMoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBmbHVzaF9zaWduYWxf
aGFuZGxlcnMoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gaW50IGRlcXVldWVfc2lnbmFs
KHNpZ3NldF90ICosIHNpZ2luZm9fdCAqKTsKZXh0ZXJuIHZvaWQgYmxvY2tfYWxsX3NpZ25hbHMo
aW50ICgqbm90aWZpZXIpKHZvaWQgKnByaXYpLCB2b2lkICpwcml2LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaWdzZXRfdCAqbWFzayk7CmV4dGVybiB2b2lkIHVuYmxvY2tfYWxsX3Np
Z25hbHModm9pZCk7CmV4dGVybiBpbnQgc2VuZF9zaWdfaW5mbyhpbnQsIHN0cnVjdCBzaWdpbmZv
ICosIHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIGludCBmb3JjZV9zaWdfaW5mbyhpbnQs
IHN0cnVjdCBzaWdpbmZvICosIHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIGludCBraWxs
X3BnX2luZm8oaW50LCBzdHJ1Y3Qgc2lnaW5mbyAqLCBwaWRfdCk7CmV4dGVybiBpbnQga2lsbF9z
bF9pbmZvKGludCwgc3RydWN0IHNpZ2luZm8gKiwgcGlkX3QpOwpleHRlcm4gaW50IGtpbGxfcHJv
Y19pbmZvKGludCwgc3RydWN0IHNpZ2luZm8gKiwgcGlkX3QpOwpleHRlcm4gdm9pZCBub3RpZnlf
cGFyZW50KHN0cnVjdCB0YXNrX3N0cnVjdCAqLCBpbnQpOwpleHRlcm4gdm9pZCBkb19ub3RpZnlf
cGFyZW50KHN0cnVjdCB0YXNrX3N0cnVjdCAqLCBpbnQpOwpleHRlcm4gdm9pZCBmb3JjZV9zaWco
aW50LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiBpbnQgc2VuZF9zaWcoaW50LCBzdHJ1
Y3QgdGFza19zdHJ1Y3QgKiwgaW50KTsKZXh0ZXJuIGludCBraWxsX3BnKHBpZF90LCBpbnQsIGlu
dCk7CmV4dGVybiBpbnQga2lsbF9zbChwaWRfdCwgaW50LCBpbnQpOwpleHRlcm4gaW50IGtpbGxf
cHJvYyhwaWRfdCwgaW50LCBpbnQpOwpleHRlcm4gaW50IGRvX3NpZ2FjdGlvbihpbnQsIGNvbnN0
IHN0cnVjdCBrX3NpZ2FjdGlvbiAqLCBzdHJ1Y3Qga19zaWdhY3Rpb24gKik7CmV4dGVybiBpbnQg
ZG9fc2lnYWx0c3RhY2soY29uc3Qgc3RhY2tfdCAqLCBzdGFja190ICosIHVuc2lnbmVkIGxvbmcp
OwoKc3RhdGljIGlubGluZSBpbnQgc2lnbmFsX3BlbmRpbmcoc3RydWN0IHRhc2tfc3RydWN0ICpw
KQp7CiAgICAgICAgcmV0dXJuIChwLT5zaWdwZW5kaW5nICE9IDApOwp9CgoKCgoKc3RhdGljIGlu
bGluZSBpbnQgaGFzX3BlbmRpbmdfc2lnbmFscyhzaWdzZXRfdCAqc2lnbmFsLCBzaWdzZXRfdCAq
YmxvY2tlZCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVhZHk7CiAgICAgICAgbG9uZyBpOwoK
ICAgICAgICBzd2l0Y2ggKCg2NCAvIDMyKSkgewogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICAgICBmb3IgKGkgPSAoNjQgLyAzMiksIHJlYWR5ID0gMDsgLS1pID49IDAgOykKICAgICAgICAg
ICAgICAgICAgICAgICAgcmVhZHkgfD0gc2lnbmFsLT5zaWdbaV0gJn4gYmxvY2tlZC0+c2lnW2ld
OwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgNDogcmVhZHkgPSBzaWduYWwt
PnNpZ1szXSAmfiBibG9ja2VkLT5zaWdbM107CiAgICAgICAgICAgICAgICByZWFkeSB8PSBzaWdu
YWwtPnNpZ1syXSAmfiBibG9ja2VkLT5zaWdbMl07CiAgICAgICAgICAgICAgICByZWFkeSB8PSBz
aWduYWwtPnNpZ1sxXSAmfiBibG9ja2VkLT5zaWdbMV07CiAgICAgICAgICAgICAgICByZWFkeSB8
PSBzaWduYWwtPnNpZ1swXSAmfiBibG9ja2VkLT5zaWdbMF07CiAgICAgICAgICAgICAgICBicmVh
azsKCiAgICAgICAgY2FzZSAyOiByZWFkeSA9IHNpZ25hbC0+c2lnWzFdICZ+IGJsb2NrZWQtPnNp
Z1sxXTsKICAgICAgICAgICAgICAgIHJlYWR5IHw9IHNpZ25hbC0+c2lnWzBdICZ+IGJsb2NrZWQt
PnNpZ1swXTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDE6IHJlYWR5ID0g
c2lnbmFsLT5zaWdbMF0gJn4gYmxvY2tlZC0+c2lnWzBdOwogICAgICAgIH0KICAgICAgICByZXR1
cm4gcmVhZHkgIT0gMDsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCByZWNhbGNfc2lncGVuZGlu
ZyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQpCnsKICAgICAgICB0LT5zaWdwZW5kaW5nID0gaGFzX3Bl
bmRpbmdfc2lnbmFscygmdC0+cGVuZGluZy5zaWduYWwsICZ0LT5ibG9ja2VkKTsKfQoKCgpzdGF0
aWMgaW5saW5lIGludCBvbl9zaWdfc3RhY2sodW5zaWduZWQgbG9uZyBzcCkKewogICAgICAgIHJl
dHVybiAoc3AgLSBnZXRfY3VycmVudCgpLT5zYXNfc3Nfc3AgPCBnZXRfY3VycmVudCgpLT5zYXNf
c3Nfc2l6ZSk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IHNhc19zc19mbGFncyh1bnNpZ25lZCBsb25n
IHNwKQp7CiAgICAgICAgcmV0dXJuIChnZXRfY3VycmVudCgpLT5zYXNfc3Nfc2l6ZSA9PSAwID8g
MgogICAgICAgICAgICAgICAgOiBvbl9zaWdfc3RhY2soc3ApID8gMSA6IDApOwp9CgpleHRlcm4g
aW50IHJlcXVlc3RfaXJxKHVuc2lnbmVkIGludCwKICAgICAgICAgICAgICAgICAgICAgICB2b2lk
ICgqaGFuZGxlcikoaW50LCB2b2lkICosIHN0cnVjdCBwdF9yZWdzICopLAogICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGxvbmcsIGNvbnN0IGNoYXIgKiwgdm9pZCAqKTsKZXh0ZXJuIHZv
aWQgZnJlZV9pcnEodW5zaWduZWQgaW50LCB2b2lkICopOwojIDY4MCAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9zY2hlZC5oIgpzdGF0aWMgaW5saW5lIGludCBzdXNlcih2b2lkKQp7CiAg
ICAgICAgaWYgKCEoICgxIDw8ICgwICsxKSkgJiAweDAwMDAwMDAwID8gKDEgPDwgKDApKSAmIDB4
MDAwMDAwMDAgOiAoMSA8PCAoMCkpICYgc2VjdXJlYml0cyApICYmIGdldF9jdXJyZW50KCktPmV1
aWQgPT0gMCkgewogICAgICAgICAgICAgICAgZ2V0X2N1cnJlbnQoKS0+ZmxhZ3MgfD0gMHgwMDAw
MDEwMDsKICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4g
MDsKfQoKc3RhdGljIGlubGluZSBpbnQgZnN1c2VyKHZvaWQpCnsKICAgICAgICBpZiAoISggKDEg
PDwgKDAgKzEpKSAmIDB4MDAwMDAwMDAgPyAoMSA8PCAoMCkpICYgMHgwMDAwMDAwMCA6ICgxIDw8
ICgwKSkgJiBzZWN1cmViaXRzICkgJiYgZ2V0X2N1cnJlbnQoKS0+ZnN1aWQgPT0gMCkgewogICAg
ICAgICAgICAgICAgZ2V0X2N1cnJlbnQoKS0+ZmxhZ3MgfD0gMHgwMDAwMDEwMDsKICAgICAgICAg
ICAgICAgIHJldHVybiAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4gMDsKfQoKCgoKCgoKc3Rh
dGljIGlubGluZSBpbnQgY2FwYWJsZShpbnQgY2FwKQp7CgogICAgICAgIGlmICgoKGdldF9jdXJy
ZW50KCktPmNhcF9lZmZlY3RpdmUpICYgKDEgPDwgKGNhcCkpKSkKCgoKICAgICAgICB7CiAgICAg
ICAgICAgICAgICBnZXRfY3VycmVudCgpLT5mbGFncyB8PSAweDAwMDAwMTAwOwogICAgICAgICAg
ICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgICAgIHJldHVybiAwOwp9CgoKCgpleHRlcm4g
c3RydWN0IG1tX3N0cnVjdCAqIG1tX2FsbG9jKHZvaWQpOwoKZXh0ZXJuIHN0cnVjdCBtbV9zdHJ1
Y3QgKiBzdGFydF9sYXp5X3RsYih2b2lkKTsKZXh0ZXJuIHZvaWQgZW5kX2xhenlfdGxiKHN0cnVj
dCBtbV9zdHJ1Y3QgKm1tKTsKCgpleHRlcm4gaW5saW5lIHZvaWQgX19tbWRyb3Aoc3RydWN0IG1t
X3N0cnVjdCAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CnN0YXRpYyBpbmxpbmUgdm9p
ZCBtbWRyb3Aoc3RydWN0IG1tX3N0cnVjdCAqIG1tKQp7CiAgICAgICAgaWYgKGF0b21pY19kZWNf
YW5kX3Rlc3QoJm1tLT5tbV9jb3VudCkpCiAgICAgICAgICAgICAgICBfX21tZHJvcChtbSk7Cn0K
CgpleHRlcm4gdm9pZCBtbXB1dChzdHJ1Y3QgbW1fc3RydWN0ICopOwoKZXh0ZXJuIHZvaWQgbW1f
cmVsZWFzZSh2b2lkKTsKCgoKCmV4dGVybiBzdHJ1Y3QgZmlsZSAqKiBhbGxvY19mZF9hcnJheShp
bnQpOwpleHRlcm4gaW50IGV4cGFuZF9mZF9hcnJheShzdHJ1Y3QgZmlsZXNfc3RydWN0ICosIGlu
dCBucik7CmV4dGVybiB2b2lkIGZyZWVfZmRfYXJyYXkoc3RydWN0IGZpbGUgKiosIGludCk7Cgpl
eHRlcm4gZmRfc2V0ICphbGxvY19mZHNldChpbnQpOwpleHRlcm4gaW50IGV4cGFuZF9mZHNldChz
dHJ1Y3QgZmlsZXNfc3RydWN0ICosIGludCBucik7CmV4dGVybiB2b2lkIGZyZWVfZmRzZXQoZmRf
c2V0ICosIGludCk7CgpleHRlcm4gaW50IGNvcHlfdGhyZWFkKGludCwgdW5zaWduZWQgbG9uZywg
dW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgc3RydWN0IHRhc2tfc3RydWN0ICosIHN0cnVj
dCBwdF9yZWdzICopOwpleHRlcm4gdm9pZCBmbHVzaF90aHJlYWQodm9pZCk7CmV4dGVybiB2b2lk
IGV4aXRfdGhyZWFkKHZvaWQpOwoKZXh0ZXJuIHZvaWQgZXhpdF9tbShzdHJ1Y3QgdGFza19zdHJ1
Y3QgKik7CmV4dGVybiB2b2lkIGV4aXRfZmlsZXMoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRl
cm4gdm9pZCBleGl0X3NpZ2hhbmQoc3RydWN0IHRhc2tfc3RydWN0ICopOwoKZXh0ZXJuIHZvaWQg
cmVwYXJlbnRfdG9faW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQgZGFlbW9uaXplKHZvaWQpOwoKZXh0
ZXJuIGludCBkb19leGVjdmUoY2hhciAqLCBjaGFyICoqLCBjaGFyICoqLCBzdHJ1Y3QgcHRfcmVn
cyAqKTsKZXh0ZXJuIGludCBkb19mb3JrKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHN0
cnVjdCBwdF9yZWdzICosIHVuc2lnbmVkIGxvbmcpOwoKZXh0ZXJuIHZvaWQgYWRkX3dhaXRfcXVl
dWUod2FpdF9xdWV1ZV9oZWFkX3QgKnEsIHdhaXRfcXVldWVfdCAqIHdhaXQpIF9fYXR0cmlidXRl
X18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgYWRkX3dhaXRfcXVldWVfZXhjbHVzaXZlKHdh
aXRfcXVldWVfaGVhZF90ICpxLCB3YWl0X3F1ZXVlX3QgKiB3YWl0KSBfX2F0dHJpYnV0ZV9fKChy
ZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIHJlbW92ZV93YWl0X3F1ZXVlKHdhaXRfcXVldWVfaGVh
ZF90ICpxLCB3YWl0X3F1ZXVlX3QgKiB3YWl0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7
CiMgODQ4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCnN0YXRpYyBpbmxp
bmUgdm9pZCBkZWxfZnJvbV9ydW5xdWV1ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKiBwKQp7CiAgICAg
ICAgbnJfcnVubmluZy0tOwogICAgICAgIHAtPnNsZWVwX3RpbWUgPSBqaWZmaWVzOwogICAgICAg
IGxpc3RfZGVsKCZwLT5ydW5fbGlzdCk7CiAgICAgICAgcC0+cnVuX2xpc3QubmV4dCA9ICgodm9p
ZCAqKTApOwp9CgpzdGF0aWMgaW5saW5lIGludCB0YXNrX29uX3J1bnF1ZXVlKHN0cnVjdCB0YXNr
X3N0cnVjdCAqcCkKewogICAgICAgIHJldHVybiAocC0+cnVuX2xpc3QubmV4dCAhPSAoKHZvaWQg
KikwKSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB1bmhhc2hfcHJvY2VzcyhzdHJ1Y3QgdGFza19z
dHJ1Y3QgKnApCnsKICAgICAgICBpZiAodGFza19vbl9ydW5xdWV1ZShwKSkgX19hc21fXyBfX3Zv
bGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwogICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0
aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsgKHZvaWQpKCZ0YXNrbGlzdF9sb2NrKTsgfSB3aGls
ZSAoMCk7CiAgICAgICAgbnJfdGhyZWFkcy0tOwogICAgICAgIHVuaGFzaF9waWQocCk7CiAgICAg
ICAgZG8geyAocCktPm5leHRfdGFzay0+cHJldl90YXNrID0gKHApLT5wcmV2X3Rhc2s7IChwKS0+
cHJldl90YXNrLT5uZXh0X3Rhc2sgPSAocCktPm5leHRfdGFzazsgaWYgKChwKS0+cF9vc3B0cikg
KHApLT5wX29zcHRyLT5wX3lzcHRyID0gKHApLT5wX3lzcHRyOyBpZiAoKHApLT5wX3lzcHRyKSAo
cCktPnBfeXNwdHItPnBfb3NwdHIgPSAocCktPnBfb3NwdHI7IGVsc2UgKHApLT5wX3BwdHItPnBf
Y3B0ciA9IChwKS0+cF9vc3B0cjsgfSB3aGlsZSAoMCk7CiAgICAgICAgbGlzdF9kZWwoJnAtPnRo
cmVhZF9ncm91cCk7CiAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xh
dGlsZV9fKCJzdGkiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOwp9CgoKc3RhdGljIGlubGlu
ZSB2b2lkIHRhc2tfbG9jayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKICAgICAgICAodm9pZCko
JnAtPmFsbG9jX2xvY2spOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdGFza191bmxvY2soc3RydWN0
IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwp9CgoKc3RhdGljIGlu
bGluZSBjaGFyICogZF9wYXRoKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IHZmc21vdW50
ICp2ZnNtbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmLCBpbnQg
YnVmbGVuKQp7CiAgICAgICAgY2hhciAqcmVzOwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqcm9v
dG1udDsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpyb290OwogICAgICAgICh2b2lkKSgmZ2V0X2N1
cnJlbnQoKS0+ZnMtPmxvY2spOwogICAgICAgIHJvb3RtbnQgPSBtbnRnZXQoZ2V0X2N1cnJlbnQo
KS0+ZnMtPnJvb3RtbnQpOwogICAgICAgIHJvb3QgPSBkZ2V0KGdldF9jdXJyZW50KCktPmZzLT5y
b290KTsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAgKHZvaWQpKCZkY2FjaGVfbG9j
ayk7CiAgICAgICAgcmVzID0gX19kX3BhdGgoZGVudHJ5LCB2ZnNtbnQsIHJvb3QsIHJvb3RtbnQs
IGJ1ZiwgYnVmbGVuKTsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAgZHB1dChyb290
KTsKICAgICAgICBtbnRwdXQocm9vdG1udCk7CiAgICAgICAgcmV0dXJuIHJlczsKfQojIDUgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW0uaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvZXJybm8uaCIgMQojIDYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
bW0uaCIgMgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEK
IyAxMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tbS5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L21tLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2xpc3Qu
aCIgMQojIDEyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21tLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21tem9uZS5oIiAxCgoKCgoKCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDggIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvbW16b25lLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Nw
aW5sb2NrLmgiIDEKIyA5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21tem9uZS5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9saXN0LmgiIDEKIyAxMCAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMgojIDIxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L21tem9uZS5oIgp0eXBlZGVmIHN0cnVjdCBmcmVlX2FyZWFfc3RydWN0IHsK
ICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGZyZWVfbGlzdDsKICAgICAgICB1bnNpZ25lZCBsb25n
ICptYXA7Cn0gZnJlZV9hcmVhX3Q7CgpzdHJ1Y3QgcGdsaXN0X2RhdGE7CiMgMzYgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvbW16b25lLmgiCnR5cGVkZWYgc3RydWN0IHpvbmVfc3RydWN0
IHsKCgoKICAgICAgICBzcGlubG9ja190IGxvY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmcmVl
X3BhZ2VzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcGFnZXNfbWluLCBwYWdlc19sb3csIHBhZ2Vz
X2hpZ2g7CiAgICAgICAgaW50IG5lZWRfYmFsYW5jZTsKCgoKCiAgICAgICAgZnJlZV9hcmVhX3Qg
ZnJlZV9hcmVhWzEwXTsKCgoKCiAgICAgICAgc3RydWN0IHBnbGlzdF9kYXRhICp6b25lX3BnZGF0
OwogICAgICAgIHN0cnVjdCBwYWdlICp6b25lX21lbV9tYXA7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyB6b25lX3N0YXJ0X3BhZGRyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgem9uZV9zdGFydF9tYXBu
cjsKCgoKCiAgICAgICAgY2hhciAqbmFtZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNpemU7Cn0g
em9uZV90OwojIDgxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgp0eXBl
ZGVmIHN0cnVjdCB6b25lbGlzdF9zdHJ1Y3QgewogICAgICAgIHpvbmVfdCAqIHpvbmVzIFszICsx
XTsKfSB6b25lbGlzdF90OwojIDk4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21tem9u
ZS5oIgpzdHJ1Y3QgYm9vdG1lbV9kYXRhOwp0eXBlZGVmIHN0cnVjdCBwZ2xpc3RfZGF0YSB7CiAg
ICAgICAgem9uZV90IG5vZGVfem9uZXNbM107CiAgICAgICAgem9uZWxpc3RfdCBub2RlX3pvbmVs
aXN0c1sweDBmICsxXTsKICAgICAgICBpbnQgbnJfem9uZXM7CiAgICAgICAgc3RydWN0IHBhZ2Ug
Km5vZGVfbWVtX21hcDsKICAgICAgICB1bnNpZ25lZCBsb25nICp2YWxpZF9hZGRyX2JpdG1hcDsK
ICAgICAgICBzdHJ1Y3QgYm9vdG1lbV9kYXRhICpiZGF0YTsKICAgICAgICB1bnNpZ25lZCBsb25n
IG5vZGVfc3RhcnRfcGFkZHI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBub2RlX3N0YXJ0X21hcG5y
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgbm9kZV9zaXplOwogICAgICAgIGludCBub2RlX2lkOwog
ICAgICAgIHN0cnVjdCBwZ2xpc3RfZGF0YSAqbm9kZV9uZXh0Owp9IHBnX2RhdGFfdDsKCmV4dGVy
biBpbnQgbnVtbm9kZXM7CmV4dGVybiBwZ19kYXRhX3QgKnBnZGF0X2xpc3Q7CiMgMTIzICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgpzdHJ1Y3QgcGFnZTsKZXh0ZXJuIHZv
aWQgc2hvd19mcmVlX2FyZWFzX2NvcmUocGdfZGF0YV90ICpwZ2RhdCk7CmV4dGVybiB2b2lkIGZy
ZWVfYXJlYV9pbml0X2NvcmUoaW50IG5pZCwgcGdfZGF0YV90ICpwZ2RhdCwgc3RydWN0IHBhZ2Ug
KipnbWFwLAogIHVuc2lnbmVkIGxvbmcgKnpvbmVzX3NpemUsIHVuc2lnbmVkIGxvbmcgcGFkZHIs
IHVuc2lnbmVkIGxvbmcgKnpob2xlc19zaXplLAogIHN0cnVjdCBwYWdlICpwbWFwKTsKCmV4dGVy
biBwZ19kYXRhX3QgY29udGlnX3BhZ2VfZGF0YTsKIyAxMyAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9tbS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zd2FwLmgi
IDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDEKIyA1
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N3YXAuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvYXNtL3BhZ2UuaCIgMQojIDYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvc3dhcC5oIiAyCiMgMjUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3dhcC5oIgp1
bmlvbiBzd2FwX2hlYWRlciB7CiAgICAgICAgc3RydWN0CiAgICAgICAgewogICAgICAgICAgICAg
ICAgY2hhciByZXNlcnZlZFsoMVVMIDw8IDEyKSAtIDEwXTsKICAgICAgICAgICAgICAgIGNoYXIg
bWFnaWNbMTBdOwogICAgICAgIH0gbWFnaWM7CiAgICAgICAgc3RydWN0CiAgICAgICAgewogICAg
ICAgICAgICAgICAgY2hhciBib290Yml0c1sxMDI0XTsKICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCB2ZXJzaW9uOwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxhc3RfcGFnZTsKICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9iYWRwYWdlczsKICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBwYWRkaW5nWzEyNV07CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYmFk
cGFnZXNbMV07CiAgICAgICAgfSBpbmZvOwp9OwojIDUxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3N3YXAuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9hdG9taWMuaCIg
MQojIDUyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N3YXAuaCIgMgojIDY0ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N3YXAuaCIKc3RydWN0IHN3YXBfaW5mb19zdHJ1Y3Qg
ewogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKICAgICAgICBrZGV2X3Qgc3dhcF9kZXZpY2U7
CiAgICAgICAgc3BpbmxvY2tfdCBzZGV2X2xvY2s7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqIHN3
YXBfZmlsZTsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKnN3YXBfdmZzbW50OwogICAgICAgIHVu
c2lnbmVkIHNob3J0ICogc3dhcF9tYXA7CiAgICAgICAgdW5zaWduZWQgaW50IGxvd2VzdF9iaXQ7
CiAgICAgICAgdW5zaWduZWQgaW50IGhpZ2hlc3RfYml0OwogICAgICAgIHVuc2lnbmVkIGludCBj
bHVzdGVyX25leHQ7CiAgICAgICAgdW5zaWduZWQgaW50IGNsdXN0ZXJfbnI7CiAgICAgICAgaW50
IHByaW87CiAgICAgICAgaW50IHBhZ2VzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbWF4OwogICAg
ICAgIGludCBuZXh0Owp9OwoKZXh0ZXJuIGludCBucl9zd2FwX3BhZ2VzOwpleHRlcm4gdW5zaWdu
ZWQgaW50IG5yX2ZyZWVfcGFnZXModm9pZCk7CmV4dGVybiB1bnNpZ25lZCBpbnQgbnJfZnJlZV9i
dWZmZXJfcGFnZXModm9pZCk7CmV4dGVybiBpbnQgbnJfYWN0aXZlX3BhZ2VzOwpleHRlcm4gaW50
IG5yX2luYWN0aXZlX3BhZ2VzOwpleHRlcm4gYXRvbWljX3QgbnJfYXN5bmNfcGFnZXM7CmV4dGVy
biBhdG9taWNfdCBwYWdlX2NhY2hlX3NpemU7CmV4dGVybiBhdG9taWNfdCBidWZmZXJtZW1fcGFn
ZXM7CmV4dGVybiBzcGlubG9ja190IHBhZ2VjYWNoZV9sb2NrOwpleHRlcm4gdm9pZCBfX3JlbW92
ZV9pbm9kZV9wYWdlKHN0cnVjdCBwYWdlICopOwoKCnN0cnVjdCB0YXNrX3N0cnVjdDsKc3RydWN0
IHZtX2FyZWFfc3RydWN0OwpzdHJ1Y3Qgc3lzaW5mbzsKCnN0cnVjdCB6b25lX3Q7CgoKZXh0ZXJu
IHZvaWQgbHJ1X2NhY2hlX2FkZChzdHJ1Y3QgcGFnZSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt
KDMpKSk7CmV4dGVybiB2b2lkIF9fbHJ1X2NhY2hlX2RlbChzdHJ1Y3QgcGFnZSAqKSBfX2F0dHJp
YnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIGxydV9jYWNoZV9kZWwoc3RydWN0IHBh
Z2UgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwoKZXh0ZXJuIHZvaWQgZGVhY3RpdmF0
ZV9wYWdlKHN0cnVjdCBwYWdlICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJu
IHZvaWQgYWN0aXZhdGVfcGFnZShzdHJ1Y3QgcGFnZSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt
KDMpKSk7CgpleHRlcm4gdm9pZCBzd2FwX3NldHVwKHZvaWQpOwoKCmV4dGVybiB3YWl0X3F1ZXVl
X2hlYWRfdCBrc3dhcGRfd2FpdDsKZXh0ZXJuIGludCB0cnlfdG9fZnJlZV9wYWdlcyh6b25lX3Qg
KiwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykp
KTsKCgpleHRlcm4gdm9pZCByd19zd2FwX3BhZ2UoaW50LCBzdHJ1Y3QgcGFnZSAqKTsKZXh0ZXJu
IHZvaWQgcndfc3dhcF9wYWdlX25vbG9jayhpbnQsIHN3cF9lbnRyeV90LCBjaGFyICopOwoKCgoK
CgpleHRlcm4gdm9pZCBzaG93X3N3YXBfY2FjaGVfaW5mbyh2b2lkKTsKCmV4dGVybiBpbnQgYWRk
X3RvX3N3YXBfY2FjaGUoc3RydWN0IHBhZ2UgKiwgc3dwX2VudHJ5X3QpOwpleHRlcm4gdm9pZCBf
X2RlbGV0ZV9mcm9tX3N3YXBfY2FjaGUoc3RydWN0IHBhZ2UgKnBhZ2UpOwpleHRlcm4gdm9pZCBk
ZWxldGVfZnJvbV9zd2FwX2NhY2hlKHN0cnVjdCBwYWdlICpwYWdlKTsKZXh0ZXJuIHZvaWQgZnJl
ZV9wYWdlX2FuZF9zd2FwX2NhY2hlKHN0cnVjdCBwYWdlICpwYWdlKTsKZXh0ZXJuIHN0cnVjdCBw
YWdlICogbG9va3VwX3N3YXBfY2FjaGUoc3dwX2VudHJ5X3QpOwpleHRlcm4gc3RydWN0IHBhZ2Ug
KiByZWFkX3N3YXBfY2FjaGVfYXN5bmMoc3dwX2VudHJ5X3QpOwoKCmV4dGVybiBpbnQgb3V0X29m
X21lbW9yeSh2b2lkKTsKZXh0ZXJuIHZvaWQgb29tX2tpbGwodm9pZCk7CgoKZXh0ZXJuIGludCB0
b3RhbF9zd2FwX3BhZ2VzOwpleHRlcm4gdW5zaWduZWQgaW50IG5yX3N3YXBmaWxlczsKZXh0ZXJu
IHN0cnVjdCBzd2FwX2luZm9fc3RydWN0IHN3YXBfaW5mb1tdOwpleHRlcm4gaW50IGlzX3N3YXBf
cGFydGl0aW9uKGtkZXZfdCk7CmV4dGVybiB2b2lkIHNpX3N3YXBpbmZvKHN0cnVjdCBzeXNpbmZv
ICopOwpleHRlcm4gc3dwX2VudHJ5X3QgZ2V0X3N3YXBfcGFnZSh2b2lkKTsKZXh0ZXJuIHZvaWQg
Z2V0X3N3YXBoYW5kbGVfaW5mbyhzd3BfZW50cnlfdCwgdW5zaWduZWQgbG9uZyAqLCBrZGV2X3Qg
KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAq
Kik7CmV4dGVybiBpbnQgc3dhcF9kdXBsaWNhdGUoc3dwX2VudHJ5X3QpOwpleHRlcm4gaW50IHN3
YXBfY291bnQoc3RydWN0IHBhZ2UgKik7CmV4dGVybiBpbnQgdmFsaWRfc3dhcGhhbmRsZXMoc3dw
X2VudHJ5X3QsIHVuc2lnbmVkIGxvbmcgKik7CmV4dGVybiB2b2lkIHN3YXBfZnJlZShzd3BfZW50
cnlfdCk7CnN0cnVjdCBzd2FwX2xpc3RfdCB7CiAgICAgICAgaW50IGhlYWQ7CiAgICAgICAgaW50
IG5leHQ7Cn07CmV4dGVybiBzdHJ1Y3Qgc3dhcF9saXN0X3Qgc3dhcF9saXN0OwogX19hdHRyaWJ1
dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3N3YXBvZmYoY29uc3QgY2hhciAqKTsKIF9fYXR0
cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zd2Fwb24oY29uc3QgY2hhciAqLCBpbnQp
OwoKZXh0ZXJuIHNwaW5sb2NrX3QgcGFnZW1hcF9scnVfbG9jazsKCmV4dGVybiB2b2lkIG1hcmtf
cGFnZV9hY2Nlc3NlZChzdHJ1Y3QgcGFnZSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7
CiMgMjIwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N3YXAuaCIKZXh0ZXJuIHNwaW5s
b2NrX3Qgc3dhcGxvY2s7CgoKCgoKCmV4dGVybiB2b2lkIHNobWVtX3VudXNlKHN3cF9lbnRyeV90
IGVudHJ5LCBzdHJ1Y3QgcGFnZSAqcGFnZSk7CiMgMTQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvbW0uaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcmJ0cmVlLmgi
IDEKIyAxNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tbS5oIiAyCgpleHRlcm4gdW5z
aWduZWQgbG9uZyBtYXhfbWFwbnI7CmV4dGVybiB1bnNpZ25lZCBsb25nIG51bV9waHlzcGFnZXM7
CmV4dGVybiB2b2lkICogaGlnaF9tZW1vcnk7CmV4dGVybiBpbnQgcGFnZV9jbHVzdGVyOwoKZXh0
ZXJuIHN0cnVjdCBsaXN0X2hlYWQgYWN0aXZlX2xpc3Q7CmV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFk
IGluYWN0aXZlX2xpc3Q7CgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BhZ2UuaCIg
MQojIDI1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21tLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20v
cGd0YWJsZS5oIiAyCiMgMTYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BndGFibGUuaCIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMQojIDE3ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2FzbS9maXhtYXAuaCIgMQojIDE2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9m
aXhtYXAuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMg
MTcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2ZpeG1hcC5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMQojIDE4ICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2FzbS9maXhtYXAuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2FwaWNk
ZWYuaCIgMQojIDEyMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYXBpY2RlZi5oIgpzdHJ1
Y3QgbG9jYWxfYXBpYyB7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVk
WzRdOyB9IF9fcmVzZXJ2ZWRfMDE7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jl
c2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDI7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8xIDogMjQsCiAgICAgICAgICAgICAgICAgICAg
ICAgIHBoeXNfYXBpY19pZCA6IDQsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRf
MiA6IDQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFszXTsKICAgICAg
ICB9IGlkOwoKICAgICAgICBjb25zdAogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgdmVyc2lvbiA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2
ZWRfMSA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIG1heF9sdnQgOiA4LAogICAgICAgICAg
ICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiA4OwogICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IF9fcmVzZXJ2ZWRbM107CiAgICAgICAgfSB2ZXJzaW9uOwoKICAgICAgICBzdHJ1Y3QgeyB1
bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzAzOwoKICAgICAgICBzdHJ1
Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzA0OwoKICAgICAg
ICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzA1OwoK
ICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVk
XzA2OwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHByaW9y
aXR5IDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogMjQ7CiAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8yWzNdOwogICAgICAgIH0gdHByOwoK
ICAgICAgICBjb25zdAogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgcHJpb3JpdHkgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAy
NDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107CiAgICAgICAg
fSBhcHI7CgogICAgICAgIGNvbnN0CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBwcmlvcml0eSA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2
ZWRfMSA6IDI0OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsK
ICAgICAgICB9IHBwcjsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCBlb2k7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFszXTsKICAg
ICAgICB9IGVvaTsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07
IH0gX19yZXNlcnZlZF8wNzsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBfX3Jlc2VydmVkXzEgOiAyNCwKICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNh
bF9kZXN0IDogODsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107
CiAgICAgICAgfSBsZHI7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgX19yZXNlcnZlZF8xIDogMjgsCiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsIDog
NDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107CiAgICAgICAg
fSBkZnI7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc3B1
cmlvdXNfdmVjdG9yIDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgYXBpY19lbmFibGVkIDog
MSwKICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNfY3B1IDogMSwKICAgICAgICAgICAgICAg
ICAgICAgICAgX19yZXNlcnZlZF8yIDogMjI7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
X19yZXNlcnZlZF8zWzNdOwogICAgICAgIH0gc3ZyOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IGJpdGZpZWxkOwogICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IF9fcmVzZXJ2ZWRbM107CiAgICAgICAgfSBpc3IgWzhdOwoKICAgICAgICBzdHJ1Y3Qgewog
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGJpdGZpZWxkOwogICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50IF9fcmVzZXJ2ZWRbM107CiAgICAgICAgfSB0bXIgWzhdOwoKICAgICAgICBzdHJ1
Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGJpdGZpZWxkOwogICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbM107CiAgICAgICAgfSBpcnIgWzhdOwoKICAgICAg
ICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgc2VuZF9jc19lcnJvciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVjZWl2ZV9jc19lcnJvciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VuZF9hY2NlcHRfZXJyb3IgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlY2VpdmVfYWNjZXB0X2Vycm9yIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX3Jlc2VydmVkXzEgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bmRfaWxsZWdhbF92ZWN0b3IgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
Y2VpdmVfaWxsZWdhbF92ZWN0b3IgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlsbGVnYWxfcmVnaXN0ZXJfYWRkcmVzcyA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX19yZXNlcnZlZF8yIDogMjQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCBfX3Jlc2VydmVkXzNbM107CiAgICAgICAgICAgICAgICB9IGVycm9yX2JpdHM7CiAgICAg
ICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
ZXJyb3JzOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8z
WzNdOwogICAgICAgICAgICAgICAgfSBhbGxfZXJyb3JzOwogICAgICAgIH0gZXNyOwoKICAgICAg
ICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzA4OwoK
ICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVk
XzA5OwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jl
c2VydmVkXzEwOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsg
fSBfX3Jlc2VydmVkXzExOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZl
ZFs0XTsgfSBfX3Jlc2VydmVkXzEyOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19y
ZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzEzOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBp
bnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE0OwoKICAgICAgICBzdHJ1Y3QgewogICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IHZlY3RvciA6IDgsCiAgICAgICAgICAgICAgICAgICAg
ICAgIGRlbGl2ZXJ5X21vZGUgOiAzLAogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlv
bl9tb2RlIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnlfc3RhdHVzIDogMSwK
ICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogMSwKICAgICAgICAgICAgICAg
ICAgICAgICAgbGV2ZWwgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyIDogMSwK
ICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogMiwKICAgICAgICAgICAgICAg
ICAgICAgICAgc2hvcnRoYW5kIDogMiwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZl
ZF8zIDogMTI7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF80WzNdOwog
ICAgICAgIH0gaWNyMTsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuaW9uIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMSA6IDI0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBoeXNfZGVzdCA6IDQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogNDsKICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMyA6IDI0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZ2ljYWxfZGVzdCA6IDg7CiAgICAgICAgICAgICAgICB9IGRlc3Q7CiAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF80WzNdOwogICAgICAgIH0gaWNy
MjsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZWN0b3Ig
OiA4LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiA0LAogICAgICAgICAg
ICAgICAgICAgICAgICBkZWxpdmVyeV9zdGF0dXMgOiAxLAogICAgICAgICAgICAgICAgICAgICAg
ICBfX3Jlc2VydmVkXzIgOiAzLAogICAgICAgICAgICAgICAgICAgICAgICBtYXNrIDogMSwKICAg
ICAgICAgICAgICAgICAgICAgICAgdGltZXJfbW9kZSA6IDEsCiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fcmVzZXJ2ZWRfMyA6IDE0OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVz
ZXJ2ZWRfNFszXTsKICAgICAgICB9IGx2dF90aW1lcjsKCiAgICAgICAgc3RydWN0IHsgdW5zaWdu
ZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xNTsKCiAgICAgICAgc3RydWN0IHsK
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZWN0b3IgOiA4LAogICAgICAgICAgICAgICAg
ICAgICAgICBkZWxpdmVyeV9tb2RlIDogMywKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNl
cnZlZF8xIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnlfc3RhdHVzIDogMSwK
ICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogMywKICAgICAgICAgICAgICAg
ICAgICAgICAgbWFzayA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMyA6
IDE1OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfNFszXTsKICAgICAg
ICB9IGx2dF9wYzsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCB2ZWN0b3IgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVyeV9tb2RlIDogMywK
ICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogMSwKICAgICAgICAgICAgICAg
ICAgICAgICAgZGVsaXZlcnlfc3RhdHVzIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgcG9s
YXJpdHkgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVfaXJyIDogMSwKICAgICAg
ICAgICAgICAgICAgICAgICAgdHJpZ2dlciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIG1h
c2sgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAxNTsKICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzNbM107CiAgICAgICAgfSBsdnRfbGlu
dDA7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmVjdG9y
IDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnlfbW9kZSA6IDMsCiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAg
IGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHBvbGFyaXR5IDog
MSwKICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlX2lyciA6IDEsCiAgICAgICAgICAgICAg
ICAgICAgICAgIHRyaWdnZXIgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBtYXNrIDogMSwK
ICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogMTU7CiAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8zWzNdOwogICAgICAgIH0gbHZ0X2xpbnQxOwoKICAg
ICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZlY3RvciA6IDgsCiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDQsCiAgICAgICAgICAgICAgICAg
ICAgICAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVz
ZXJ2ZWRfMiA6IDMsCiAgICAgICAgICAgICAgICAgICAgICAgIG1hc2sgOiAxLAogICAgICAgICAg
ICAgICAgICAgICAgICBfX3Jlc2VydmVkXzMgOiAxNTsKICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCBfX3Jlc2VydmVkXzRbM107CiAgICAgICAgfSBsdnRfZXJyb3I7CgogICAgICAgIHN0cnVj
dCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaW5pdGlhbF9jb3VudDsKICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107CiAgICAgICAgfSB0aW1lcl9pY3I7
CgogICAgICAgIGNvbnN0CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCBjdXJyX2NvdW50OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRf
MlszXTsKICAgICAgICB9IHRpbWVyX2NjcjsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50
IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xNjsKCiAgICAgICAgc3RydWN0IHsgdW5zaWdu
ZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xNzsKCiAgICAgICAgc3RydWN0IHsg
dW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xODsKCiAgICAgICAgc3Ry
dWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xOTsKCiAgICAg
ICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkaXZpc29yIDogNCwKICAg
ICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogMjg7CiAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8yWzNdOwogICAgICAgIH0gdGltZXJfZGNyOwoKICAgICAg
ICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzIwOwoK
fSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiMgMTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
YXNtL2ZpeG1hcC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGFnZS5oIiAx
CiMgMjAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2ZpeG1hcC5oIiAyCiMgNTAgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvYXNtL2ZpeG1hcC5oIgplbnVtIGZpeGVkX2FkZHJlc3NlcyB7CiMg
NjggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2ZpeG1hcC5oIgogICAgICAgIF9fZW5kX29m
X2ZpeGVkX2FkZHJlc3Nlcwp9OwoKZXh0ZXJuIHZvaWQgX19zZXRfZml4bWFwIChlbnVtIGZpeGVk
X2FkZHJlc3NlcyBpZHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBsb25nIHBoeXMsIHBncHJvdF90IGZsYWdzKTsKIyA5NCAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9hc20vZml4bWFwLmgiCmV4dGVybiB2b2lkIF9fdGhpc19maXhtYXBfZG9lc19ub3Rf
ZXhpc3Qodm9pZCk7CgoKCgoKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBmaXhfdG9fdmly
dChjb25zdCB1bnNpZ25lZCBpbnQgaWR4KQp7CiMgMTEyICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2FzbS9maXhtYXAuaCIKICAgICAgICBpZiAoaWR4ID49IF9fZW5kX29mX2ZpeGVkX2FkZHJlc3Nl
cykKICAgICAgICAgICAgICAgIF9fdGhpc19maXhtYXBfZG9lc19ub3RfZXhpc3QoKTsKCiAgICAg
ICAgcmV0dXJuICgoMHhmZmZmZTAwMFVMKSAtICgoaWR4KSA8PCAxMikpOwp9CiMgMTggIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BndGFibGUuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvdGhyZWFkcy5oIiAxCiMgMTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNt
L3BndGFibGUuaCIgMgoKCgoKCmV4dGVybiBwZ2RfdCBzd2FwcGVyX3BnX2RpclsxMDI0XTsKZXh0
ZXJuIHZvaWQgcGFnaW5nX2luaXQodm9pZCk7CiMgNjcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
YXNtL3BndGFibGUuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcGdrZXJuX21hc2s7CiMgOTUgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BndGFibGUuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcg
ZW1wdHlfemVyb19wYWdlWzEwMjRdOwojIDEwOSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20v
cGd0YWJsZS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BndGFibGUtMmxldmVs
LmgiIDEKIyAzMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGd0YWJsZS0ybGV2ZWwuaCIK
c3RhdGljIGlubGluZSBpbnQgcGdkX25vbmUocGdkX3QgcGdkKSB7IHJldHVybiAwOyB9CnN0YXRp
YyBpbmxpbmUgaW50IHBnZF9iYWQocGdkX3QgcGdkKSB7IHJldHVybiAwOyB9CnN0YXRpYyBpbmxp
bmUgaW50IHBnZF9wcmVzZW50KHBnZF90IHBnZCkgeyByZXR1cm4gMTsgfQojIDUzICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2FzbS9wZ3RhYmxlLTJsZXZlbC5oIgpzdGF0aWMgaW5saW5lIHBtZF90
ICogcG1kX29mZnNldChwZ2RfdCAqIGRpciwgdW5zaWduZWQgbG9uZyBhZGRyZXNzKQp7CiAgICAg
ICAgcmV0dXJuIChwbWRfdCAqKSBkaXI7Cn0KIyAxMTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
YXNtL3BndGFibGUuaCIgMgojIDI0NCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGd0YWJs
ZS5oIgpleHRlcm4gdW5zaWduZWQgbG9uZyBwZzBbMTAyNF07CiMgMjY1ICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiCnN0YXRpYyBpbmxpbmUgaW50IHB0ZV9yZWFkKHB0ZV90
IHB0ZSkgeyByZXR1cm4gKHB0ZSkucHRlX2xvdyAmIDB4MDA0OyB9CnN0YXRpYyBpbmxpbmUgaW50
IHB0ZV9leGVjKHB0ZV90IHB0ZSkgeyByZXR1cm4gKHB0ZSkucHRlX2xvdyAmIDB4MDA0OyB9CnN0
YXRpYyBpbmxpbmUgaW50IHB0ZV9kaXJ0eShwdGVfdCBwdGUpIHsgcmV0dXJuIChwdGUpLnB0ZV9s
b3cgJiAweDA0MDsgfQpzdGF0aWMgaW5saW5lIGludCBwdGVfeW91bmcocHRlX3QgcHRlKSB7IHJl
dHVybiAocHRlKS5wdGVfbG93ICYgMHgwMjA7IH0Kc3RhdGljIGlubGluZSBpbnQgcHRlX3dyaXRl
KHB0ZV90IHB0ZSkgeyByZXR1cm4gKHB0ZSkucHRlX2xvdyAmIDB4MDAyOyB9CgpzdGF0aWMgaW5s
aW5lIHB0ZV90IHB0ZV9yZHByb3RlY3QocHRlX3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cgJj0gfjB4
MDA0OyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX2V4cHJvdGVjdChwdGVf
dCBwdGUpIHsgKHB0ZSkucHRlX2xvdyAmPSB+MHgwMDQ7IHJldHVybiBwdGU7IH0Kc3RhdGljIGlu
bGluZSBwdGVfdCBwdGVfbWtjbGVhbihwdGVfdCBwdGUpIHsgKHB0ZSkucHRlX2xvdyAmPSB+MHgw
NDA7IHJldHVybiBwdGU7IH0Kc3RhdGljIGlubGluZSBwdGVfdCBwdGVfbWtvbGQocHRlX3QgcHRl
KSB7IChwdGUpLnB0ZV9sb3cgJj0gfjB4MDIwOyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUg
cHRlX3QgcHRlX3dycHJvdGVjdChwdGVfdCBwdGUpIHsgKHB0ZSkucHRlX2xvdyAmPSB+MHgwMDI7
IHJldHVybiBwdGU7IH0Kc3RhdGljIGlubGluZSBwdGVfdCBwdGVfbWtyZWFkKHB0ZV90IHB0ZSkg
eyAocHRlKS5wdGVfbG93IHw9IDB4MDA0OyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRl
X3QgcHRlX21rZXhlYyhwdGVfdCBwdGUpIHsgKHB0ZSkucHRlX2xvdyB8PSAweDAwNDsgcmV0dXJu
IHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9ta2RpcnR5KHB0ZV90IHB0ZSkgeyAocHRl
KS5wdGVfbG93IHw9IDB4MDQwOyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRl
X21reW91bmcocHRlX3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cgfD0gMHgwMjA7IHJldHVybiBwdGU7
IH0Kc3RhdGljIGlubGluZSBwdGVfdCBwdGVfbWt3cml0ZShwdGVfdCBwdGUpIHsgKHB0ZSkucHRl
X2xvdyB8PSAweDAwMjsgcmV0dXJuIHB0ZTsgfQoKc3RhdGljIGlubGluZSBpbnQgcHRlcF90ZXN0
X2FuZF9jbGVhcl9kaXJ0eShwdGVfdCAqcHRlcCkgeyByZXR1cm4gdGVzdF9hbmRfY2xlYXJfYml0
KDYsIHB0ZXApOyB9CnN0YXRpYyBpbmxpbmUgaW50IHB0ZXBfdGVzdF9hbmRfY2xlYXJfeW91bmco
cHRlX3QgKnB0ZXApIHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdCg1LCBwdGVwKTsgfQpzdGF0
aWMgaW5saW5lIHZvaWQgcHRlcF9zZXRfd3Jwcm90ZWN0KHB0ZV90ICpwdGVwKSB7IGNsZWFyX2Jp
dCgxLCBwdGVwKTsgfQpzdGF0aWMgaW5saW5lIHZvaWQgcHRlcF9ta2RpcnR5KHB0ZV90ICpwdGVw
KSB7IHNldF9iaXQoNiwgcHRlcCk7IH0KIyAyOTcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNt
L3BndGFibGUuaCIKc3RhdGljIGlubGluZSBwdGVfdCBwdGVfbW9kaWZ5KHB0ZV90IHB0ZSwgcGdw
cm90X3QgbmV3cHJvdCkKewogICAgICAgIHB0ZS5wdGVfbG93ICY9ICgofigoMVVMIDw8IDEyKS0x
KSkgfCAweDAyMCB8IDB4MDQwKTsKICAgICAgICBwdGUucHRlX2xvdyB8PSAoKG5ld3Byb3QpLnBn
cHJvdCk7CiAgICAgICAgcmV0dXJuIHB0ZTsKfQojIDI2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L21tLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9hdG9taWMuaCIg
MQojIDI3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21tLmgiIDIKIyA0MyAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9tbS5oIgpzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgewogICAg
ICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKiB2bV9tbTsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtX3N0
YXJ0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgdm1fZW5kOwoKCiAgICAgICAgc3RydWN0IHZtX2Fy
ZWFfc3RydWN0ICp2bV9uZXh0OwoKICAgICAgICBwZ3Byb3RfdCB2bV9wYWdlX3Byb3Q7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyB2bV9mbGFnczsKCiAgICAgICAgcmJfbm9kZV90IHZtX3JiOwoKCgoK
CgogICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1fbmV4dF9zaGFyZTsKICAgICAgICBz
dHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKip2bV9wcHJldl9zaGFyZTsKCgogICAgICAgIHN0cnVjdCB2
bV9vcGVyYXRpb25zX3N0cnVjdCAqIHZtX29wczsKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgdm1f
cGdvZmY7CgogICAgICAgIHN0cnVjdCBmaWxlICogdm1fZmlsZTsKICAgICAgICB1bnNpZ25lZCBs
b25nIHZtX3JhZW5kOwogICAgICAgIHZvaWQgKiB2bV9wcml2YXRlX2RhdGE7Cn07CiMgMTE3ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21tLmgiCmV4dGVybiBwZ3Byb3RfdCBwcm90ZWN0
aW9uX21hcFsxNl07CgoKCgoKCgpzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgewogICAgICAg
IHZvaWQgKCpvcGVuKShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBhcmVhKTsKICAgICAgICB2b2lk
ICgqY2xvc2UpKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIGFyZWEpOwogICAgICAgIHN0cnVjdCBw
YWdlICogKCpub3BhZ2UpKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIGFyZWEsIHVuc2lnbmVkIGxv
bmcgYWRkcmVzcywgaW50IHdyaXRlX2FjY2Vzcyk7Cn07CiMgMTQ2ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L21tLmgiCnR5cGVkZWYgc3RydWN0IHBhZ2UgewogICAgICAgIHN0cnVjdCBs
aXN0X2hlYWQgbGlzdDsKICAgICAgICBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZzsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGluZGV4OwogICAgICAgIHN0cnVjdCBwYWdlICpuZXh0X2hhc2g7
CgogICAgICAgIGF0b21pY190IGNvdW50OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cgog
ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbHJ1OwoKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3
YWl0OwogICAgICAgIHN0cnVjdCBwYWdlICoqcHByZXZfaGFzaDsKICAgICAgICBzdHJ1Y3QgYnVm
ZmVyX2hlYWQgKiBidWZmZXJzOwogICAgICAgIHZvaWQgKnZpcnR1YWw7CgogICAgICAgIHN0cnVj
dCB6b25lX3N0cnVjdCAqem9uZTsKfSBtZW1fbWFwX3Q7CiMgMjk5ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L21tLmgiCmV4dGVybiB2b2lkIF9fc2V0X3BhZ2VfZGlydHkoc3RydWN0IHBh
Z2UgKik7CgpzdGF0aWMgaW5saW5lIHZvaWQgc2V0X3BhZ2VfZGlydHkoc3RydWN0IHBhZ2UgKiBw
YWdlKQp7CiAgICAgICAgaWYgKCF0ZXN0X2FuZF9zZXRfYml0KDQsICZwYWdlLT5mbGFncykpCiAg
ICAgICAgICAgICAgICBfX3NldF9wYWdlX2RpcnR5KHBhZ2UpOwp9CiMgMzY0ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L21tLmgiCmV4dGVybiBtZW1fbWFwX3QgKiBtZW1fbWFwOwoKCgoK
CgoKZXh0ZXJuIHN0cnVjdCBwYWdlICogX2FsbG9jX3BhZ2VzKHVuc2lnbmVkIGludCBnZnBfbWFz
aywgdW5zaWduZWQgaW50IG9yZGVyKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVy
biBzdHJ1Y3QgcGFnZSAqIF9fYWxsb2NfcGFnZXModW5zaWduZWQgaW50IGdmcF9tYXNrLCB1bnNp
Z25lZCBpbnQgb3JkZXIsIHpvbmVsaXN0X3QgKnpvbmVsaXN0KSBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDMpKSk7CmV4dGVybiBzdHJ1Y3QgcGFnZSAqIGFsbG9jX3BhZ2VzX25vZGUoaW50IG5pZCwg
dW5zaWduZWQgaW50IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpOwoKc3RhdGljIGlubGlu
ZSBzdHJ1Y3QgcGFnZSAqIGFsbG9jX3BhZ2VzKHVuc2lnbmVkIGludCBnZnBfbWFzaywgdW5zaWdu
ZWQgaW50IG9yZGVyKQp7CgoKCiAgICAgICAgaWYgKG9yZGVyID49IDEwKQogICAgICAgICAgICAg
ICAgcmV0dXJuICgodm9pZCAqKTApOwogICAgICAgIHJldHVybiBfYWxsb2NfcGFnZXMoZ2ZwX21h
c2ssIG9yZGVyKTsKfQoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBfX2dldF9mcmVlX3BhZ2VzKHVu
c2lnbmVkIGludCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyKSBfX2F0dHJpYnV0ZV9fKChy
ZWdwYXJtKDMpKSk7CmV4dGVybiB1bnNpZ25lZCBsb25nIGdldF96ZXJvZWRfcGFnZSh1bnNpZ25l
ZCBpbnQgZ2ZwX21hc2spIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKIyA0MDUgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbW0uaCIKZXh0ZXJuIHZvaWQgX19mcmVlX3BhZ2VzKHN0
cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb3JkZXIpIF9fYXR0cmlidXRlX18oKHJlZ3Bh
cm0oMykpKTsKZXh0ZXJuIHZvaWQgZnJlZV9wYWdlcyh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2ln
bmVkIGludCBvcmRlcikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwoKCgoKZXh0ZXJuIHZv
aWQgc2hvd19mcmVlX2FyZWFzKHZvaWQpOwpleHRlcm4gdm9pZCBzaG93X2ZyZWVfYXJlYXNfbm9k
ZShwZ19kYXRhX3QgKnBnZGF0KTsKCmV4dGVybiB2b2lkIGNsZWFyX3BhZ2VfdGFibGVzKHN0cnVj
dCBtbV9zdHJ1Y3QgKiwgdW5zaWduZWQgbG9uZywgaW50KTsKCnN0cnVjdCBwYWdlICogc2htZW1f
bm9wYWdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIHZtYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNz
LCBpbnQgbm9fc2hhcmUpOwpzdHJ1Y3QgZmlsZSAqc2htZW1fZmlsZV9zZXR1cChjaGFyICogbmFt
ZSwgbG9mZl90IHNpemUpOwpleHRlcm4gdm9pZCBzaG1lbV9sb2NrKHN0cnVjdCBmaWxlICogZmls
ZSwgaW50IGxvY2spOwpleHRlcm4gaW50IHNobWVtX3plcm9fc2V0dXAoc3RydWN0IHZtX2FyZWFf
c3RydWN0ICopOwoKZXh0ZXJuIHZvaWQgemFwX3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAq
bW0sIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgdW5zaWduZWQgbG9uZyBzaXplKTsKZXh0ZXJuIGlu
dCBjb3B5X3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqZHN0LCBzdHJ1Y3QgbW1fc3RydWN0
ICpzcmMsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTsKZXh0ZXJuIGludCByZW1hcF9wYWdl
X3JhbmdlKHVuc2lnbmVkIGxvbmcgZnJvbSwgdW5zaWduZWQgbG9uZyB0bywgdW5zaWduZWQgbG9u
ZyBzaXplLCBwZ3Byb3RfdCBwcm90KTsKZXh0ZXJuIGludCB6ZXJvbWFwX3BhZ2VfcmFuZ2UodW5z
aWduZWQgbG9uZyBmcm9tLCB1bnNpZ25lZCBsb25nIHNpemUsIHBncHJvdF90IHByb3QpOwoKZXh0
ZXJuIGludCB2bXRydW5jYXRlKHN0cnVjdCBpbm9kZSAqIGlub2RlLCBsb2ZmX3Qgb2Zmc2V0KTsK
ZXh0ZXJuIHBtZF90ICpfX3BtZF9hbGxvYyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBn
ZCwgdW5zaWduZWQgbG9uZyBhZGRyZXNzKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4
dGVybiBwdGVfdCAqcHRlX2FsbG9jKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwbWRfdCAqcG1kLCB1
bnNpZ25lZCBsb25nIGFkZHJlc3MpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJu
IGludCBoYW5kbGVfbW1fZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sc3RydWN0IHZtX2FyZWFf
c3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgaW50IHdyaXRlX2FjY2Vzcyk7CmV4
dGVybiBpbnQgbWFrZV9wYWdlc19wcmVzZW50KHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQg
bG9uZyBlbmQpOwpleHRlcm4gaW50IGFjY2Vzc19wcm9jZXNzX3ZtKHN0cnVjdCB0YXNrX3N0cnVj
dCAqdHNrLCB1bnNpZ25lZCBsb25nIGFkZHIsIHZvaWQgKmJ1ZiwgaW50IGxlbiwgaW50IHdyaXRl
KTsKZXh0ZXJuIGludCBwdHJhY2VfcmVhZGRhdGEoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHVu
c2lnbmVkIGxvbmcgc3JjLCBjaGFyICpkc3QsIGludCBsZW4pOwpleHRlcm4gaW50IHB0cmFjZV93
cml0ZWRhdGEoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIGNoYXIgKiBzcmMsIHVuc2lnbmVkIGxv
bmcgZHN0LCBpbnQgbGVuKTsKZXh0ZXJuIGludCBwdHJhY2VfYXR0YWNoKHN0cnVjdCB0YXNrX3N0
cnVjdCAqdHNrKTsKZXh0ZXJuIGludCBwdHJhY2VfZGV0YWNoKHN0cnVjdCB0YXNrX3N0cnVjdCAq
LCB1bnNpZ25lZCBpbnQpOwpleHRlcm4gdm9pZCBwdHJhY2VfZGlzYWJsZShzdHJ1Y3QgdGFza19z
dHJ1Y3QgKik7CgoKCgoKCnN0YXRpYyBpbmxpbmUgcG1kX3QgKnBtZF9hbGxvYyhzdHJ1Y3QgbW1f
c3RydWN0ICptbSwgcGdkX3QgKnBnZCwgdW5zaWduZWQgbG9uZyBhZGRyZXNzKQp7CiAgICAgICAg
aWYgKHBnZF9ub25lKCpwZ2QpKQogICAgICAgICAgICAgICAgcmV0dXJuIF9fcG1kX2FsbG9jKG1t
LCBwZ2QsIGFkZHJlc3MpOwogICAgICAgIHJldHVybiBwbWRfb2Zmc2V0KHBnZCwgYWRkcmVzcyk7
Cn0KCmV4dGVybiBpbnQgcGd0X2NhY2hlX3dhdGVyWzJdOwpleHRlcm4gaW50IGNoZWNrX3BndF9j
YWNoZSh2b2lkKTsKCmV4dGVybiB2b2lkIGZyZWVfYXJlYV9pbml0KHVuc2lnbmVkIGxvbmcgKiB6
b25lc19zaXplKTsKZXh0ZXJuIHZvaWQgZnJlZV9hcmVhX2luaXRfbm9kZShpbnQgbmlkLCBwZ19k
YXRhX3QgKnBnZGF0LCBzdHJ1Y3QgcGFnZSAqcG1hcCwKICAgICAgICB1bnNpZ25lZCBsb25nICog
em9uZXNfc2l6ZSwgdW5zaWduZWQgbG9uZyB6b25lX3N0YXJ0X3BhZGRyLAogICAgICAgIHVuc2ln
bmVkIGxvbmcgKnpob2xlc19zaXplKTsKZXh0ZXJuIHZvaWQgbWVtX2luaXQodm9pZCk7CmV4dGVy
biB2b2lkIHNob3dfbWVtKHZvaWQpOwpleHRlcm4gdm9pZCBzaV9tZW1pbmZvKHN0cnVjdCBzeXNp
bmZvICogdmFsKTsKZXh0ZXJuIHZvaWQgc3dhcGluX3JlYWRhaGVhZChzd3BfZW50cnlfdCk7Cgpl
eHRlcm4gc3RydWN0IGFkZHJlc3Nfc3BhY2Ugc3dhcHBlcl9zcGFjZTsKCgpzdGF0aWMgaW5saW5l
IGludCBpc19wYWdlX2NhY2hlX2ZyZWVhYmxlKHN0cnVjdCBwYWdlICogcGFnZSkKewogICAgICAg
IHJldHVybiAoKCYocGFnZSktPmNvdW50KS0+Y291bnRlcikgLSAhIXBhZ2UtPmJ1ZmZlcnMgPT0g
MTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgaW50IGV4Y2x1c2l2ZV9zd2FwX3BhZ2Uoc3RydWN0IHBh
Z2UgKnBhZ2UpCnsKICAgICAgICBpZiAoIShfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IGNvbnN0
YW50X3Rlc3RfYml0KCgwKSwoJihwYWdlKS0+ZmxhZ3MpKSA6IHZhcmlhYmxlX3Rlc3RfYml0KCgw
KSwoJihwYWdlKS0+ZmxhZ3MpKSkpCiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVf
XygiLmJ5dGUgMHgwZiwweDBiIik7CiAgICAgICAgaWYgKCEoKHBhZ2UpLT5tYXBwaW5nID09ICZz
d2FwcGVyX3NwYWNlKSkKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIGlmICgoKCYo
cGFnZSktPmNvdW50KS0+Y291bnRlcikgLSAhIXBhZ2UtPmJ1ZmZlcnMgIT0gMikKICAgICAgICAg
ICAgICAgIHJldHVybiAwOwogICAgICAgIHJldHVybiBzd2FwX2NvdW50KHBhZ2UpID09IDE7Cn0K
CmV4dGVybiB2b2lkIF9fZnJlZV9wdGUocHRlX3QpOwoKCmV4dGVybiB2b2lkIGxvY2tfdm1hX21h
cHBpbmdzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQgdW5sb2NrX3ZtYV9t
YXBwaW5ncyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIGluc2VydF92bV9z
dHJ1Y3Qoc3RydWN0IG1tX3N0cnVjdCAqLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7CmV4dGVy
biB2b2lkIF9faW5zZXJ0X3ZtX3N0cnVjdChzdHJ1Y3QgbW1fc3RydWN0ICosIHN0cnVjdCB2bV9h
cmVhX3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQgYnVpbGRfbW1hcF9yYihzdHJ1Y3QgbW1fc3RydWN0
ICopOwpleHRlcm4gdm9pZCBleGl0X21tYXAoc3RydWN0IG1tX3N0cnVjdCAqKTsKCmV4dGVybiB1
bnNpZ25lZCBsb25nIGdldF91bm1hcHBlZF9hcmVhKHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGxv
bmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwoKZXh0ZXJu
IHVuc2lnbmVkIGxvbmcgZG9fbW1hcF9wZ29mZihzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQg
bG9uZyBhZGRyLAogICAgICAgIHVuc2lnbmVkIGxvbmcgbGVuLCB1bnNpZ25lZCBsb25nIHByb3Qs
CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnLCB1bnNpZ25lZCBsb25nIHBnb2ZmKTsKCnN0YXRp
YyBpbmxpbmUgdW5zaWduZWQgbG9uZyBkb19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25l
ZCBsb25nIGFkZHIsCiAgICAgICAgdW5zaWduZWQgbG9uZyBsZW4sIHVuc2lnbmVkIGxvbmcgcHJv
dCwKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWcsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KQp7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyByZXQgPSAtMjI7CiAgICAgICAgaWYgKChvZmZzZXQgKyAoKChs
ZW4pKygxVUwgPDwgMTIpLTEpJih+KCgxVUwgPDwgMTIpLTEpKSkpIDwgb2Zmc2V0KQogICAgICAg
ICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgaWYgKCEob2Zmc2V0ICYgfih+KCgxVUwgPDwgMTIp
LTEpKSkpCiAgICAgICAgICAgICAgICByZXQgPSBkb19tbWFwX3Bnb2ZmKGZpbGUsIGFkZHIsIGxl
biwgcHJvdCwgZmxhZywgb2Zmc2V0ID4+IDEyKTsKb3V0OgogICAgICAgIHJldHVybiByZXQ7Cn0K
CmV4dGVybiBpbnQgZG9fbXVubWFwKHN0cnVjdCBtbV9zdHJ1Y3QgKiwgdW5zaWduZWQgbG9uZywg
c2l6ZV90KTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGRvX2Jyayh1bnNpZ25lZCBsb25nLCB1bnNp
Z25lZCBsb25nKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3ZtYV91bmxpbmsoc3RydWN0IG1tX3N0
cnVjdCAqIG1tLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bWEsIHN0cnVjdCB2bV9hcmVhX3N0
cnVjdCAqIHByZXYpCnsKICAgICAgICBwcmV2LT52bV9uZXh0ID0gdm1hLT52bV9uZXh0OwogICAg
ICAgIHJiX2VyYXNlKCZ2bWEtPnZtX3JiLCAmbW0tPm1tX3JiKTsKICAgICAgICBpZiAobW0tPm1t
YXBfY2FjaGUgPT0gdm1hKQogICAgICAgICAgICAgICAgbW0tPm1tYXBfY2FjaGUgPSBwcmV2Owp9
CgpzdGF0aWMgaW5saW5lIGludCBjYW5fdm1hX21lcmdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq
IHZtYSwgdW5zaWduZWQgbG9uZyB2bV9mbGFncykKewogICAgICAgIGlmICghdm1hLT52bV9maWxl
ICYmIHZtYS0+dm1fZmxhZ3MgPT0gdm1fZmxhZ3MpCiAgICAgICAgICAgICAgICByZXR1cm4gMTsK
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKfQoKc3RydWN0IHpvbmVfdDsK
CmV4dGVybiB2b2lkIHJlbW92ZV9pbm9kZV9wYWdlKHN0cnVjdCBwYWdlICopOwpleHRlcm4gdW5z
aWduZWQgbG9uZyBwYWdlX3VudXNlKHN0cnVjdCBwYWdlICopOwpleHRlcm4gdm9pZCB0cnVuY2F0
ZV9pbm9kZV9wYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBsb2ZmX3QpOwoKCmV4dGVybiBp
bnQgZmlsZW1hcF9zeW5jKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqLCB1bnNpZ25lZCBsb25nLCBz
aXplX3QsIHVuc2lnbmVkIGludCk7CmV4dGVybiBzdHJ1Y3QgcGFnZSAqZmlsZW1hcF9ub3BhZ2Uo
c3RydWN0IHZtX2FyZWFfc3RydWN0ICosIHVuc2lnbmVkIGxvbmcsIGludCk7CiMgNTc1ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21tLmgiCnN0YXRpYyBpbmxpbmUgaW50IGV4cGFuZF9z
dGFjayhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykK
ewogICAgICAgIHVuc2lnbmVkIGxvbmcgZ3JvdzsKCgoKCgoKICAgICAgICBhZGRyZXNzICY9ICh+
KCgxVUwgPDwgMTIpLTEpKTsKICAgICAgICBncm93ID0gKHZtYS0+dm1fc3RhcnQgLSBhZGRyZXNz
KSA+PiAxMjsKICAgICAgICBpZiAodm1hLT52bV9lbmQgLSBhZGRyZXNzID4gZ2V0X2N1cnJlbnQo
KS0+cmxpbVszXS5ybGltX2N1ciB8fAogICAgICAgICAgICAoKHZtYS0+dm1fbW0tPnRvdGFsX3Zt
ICsgZ3JvdykgPDwgMTIpID4gZ2V0X2N1cnJlbnQoKS0+cmxpbVs5XS5ybGltX2N1cikKICAgICAg
ICAgICAgICAgIHJldHVybiAtMTI7CiAgICAgICAgKHZvaWQpKCZ2bWEtPnZtX21tLT5wYWdlX3Rh
YmxlX2xvY2spOwogICAgICAgIHZtYS0+dm1fc3RhcnQgPSBhZGRyZXNzOwogICAgICAgIHZtYS0+
dm1fcGdvZmYgLT0gZ3JvdzsKICAgICAgICB2bWEtPnZtX21tLT50b3RhbF92bSArPSBncm93Owog
ICAgICAgIGlmICh2bWEtPnZtX2ZsYWdzICYgMHgwMDAwMjAwMCkKICAgICAgICAgICAgICAgIHZt
YS0+dm1fbW0tPmxvY2tlZF92bSArPSBncm93OwogICAgICAgIGRvIHsgfSB3aGlsZSgwKTsKICAg
ICAgICByZXR1cm4gMDsKfQoKCmV4dGVybiBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBmaW5kX3Zt
YShzdHJ1Y3QgbW1fc3RydWN0ICogbW0sIHVuc2lnbmVkIGxvbmcgYWRkcik7CmV4dGVybiBzdHJ1
Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBmaW5kX3ZtYV9wcmV2KHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbSwg
dW5zaWduZWQgbG9uZyBhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKipwcHJldik7CgoKCnN0YXRpYyBpbmxpbmUg
c3RydWN0IHZtX2FyZWFfc3RydWN0ICogZmluZF92bWFfaW50ZXJzZWN0aW9uKHN0cnVjdCBtbV9z
dHJ1Y3QgKiBtbSwgdW5zaWduZWQgbG9uZyBzdGFydF9hZGRyLCB1bnNpZ25lZCBsb25nIGVuZF9h
ZGRyKQp7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogdm1hID0gZmluZF92bWEobW0s
c3RhcnRfYWRkcik7CgogICAgICAgIGlmICh2bWEgJiYgZW5kX2FkZHIgPD0gdm1hLT52bV9zdGFy
dCkKICAgICAgICAgICAgICAgIHZtYSA9ICgodm9pZCAqKTApOwogICAgICAgIHJldHVybiB2bWE7
Cn0KCmV4dGVybiBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKmZpbmRfZXh0ZW5kX3ZtYShzdHJ1Y3Qg
bW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyKTsKIyAxNSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9zbGFiLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L2NhY2hlLmgiIDEKIyAxNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zbGFiLmgiIDIK
IyA0OCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zbGFiLmgiCmV4dGVybiB2b2lkIGtt
ZW1fY2FjaGVfaW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQga21lbV9jYWNoZV9zaXplc19pbml0KHZv
aWQpOwoKZXh0ZXJuIGttZW1fY2FjaGVfdCAqa21lbV9maW5kX2dlbmVyYWxfY2FjaGVwKHNpemVf
dCwgaW50IGdmcGZsYWdzKTsKZXh0ZXJuIGttZW1fY2FjaGVfdCAqa21lbV9jYWNoZV9jcmVhdGUo
Y29uc3QgY2hhciAqLCBzaXplX3QsIHNpemVfdCwgdW5zaWduZWQgbG9uZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKikodm9pZCAqLCBrbWVtX2NhY2hlX3Qg
KiwgdW5zaWduZWQgbG9uZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZvaWQgKCopKHZvaWQgKiwga21lbV9jYWNoZV90ICosIHVuc2lnbmVkIGxvbmcpKTsKZXh0ZXJu
IGludCBrbWVtX2NhY2hlX2Rlc3Ryb3koa21lbV9jYWNoZV90ICopOwpleHRlcm4gaW50IGttZW1f
Y2FjaGVfc2hyaW5rKGttZW1fY2FjaGVfdCAqKTsKZXh0ZXJuIHZvaWQgKmttZW1fY2FjaGVfYWxs
b2Moa21lbV9jYWNoZV90ICosIGludCk7CmV4dGVybiB2b2lkIGttZW1fY2FjaGVfZnJlZShrbWVt
X2NhY2hlX3QgKiwgdm9pZCAqKTsKCmV4dGVybiB2b2lkICprbWFsbG9jKHNpemVfdCwgaW50KTsK
ZXh0ZXJuIHZvaWQga2ZyZWUoY29uc3Qgdm9pZCAqKTsKCmV4dGVybiBpbnQga21lbV9jYWNoZV9y
ZWFwKGludCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gaW50IHNsYWJpbmZv
X3JlYWRfcHJvYyhjaGFyICpwYWdlLCBjaGFyICoqc3RhcnQsIG9mZl90IG9mZiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvdW50LCBpbnQgKmVvZiwgdm9pZCAqZGF0YSk7
CmV4dGVybiBpbnQgc2xhYmluZm9fd3JpdGVfcHJvYyhzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3Qg
Y2hhciAqYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGNv
dW50LCB2b2lkICpkYXRhKTsKCgpleHRlcm4ga21lbV9jYWNoZV90ICp2bV9hcmVhX2NhY2hlcDsK
ZXh0ZXJuIGttZW1fY2FjaGVfdCAqbW1fY2FjaGVwOwpleHRlcm4ga21lbV9jYWNoZV90ICpuYW1l
c19jYWNoZXA7CmV4dGVybiBrbWVtX2NhY2hlX3QgKmZpbGVzX2NhY2hlcDsKZXh0ZXJuIGttZW1f
Y2FjaGVfdCAqZmlscF9jYWNoZXA7CmV4dGVybiBrbWVtX2NhY2hlX3QgKmRxdW90X2NhY2hlcDsK
ZXh0ZXJuIGttZW1fY2FjaGVfdCAqYmhfY2FjaGVwOwpleHRlcm4ga21lbV9jYWNoZV90ICpmc19j
YWNoZXA7CmV4dGVybiBrbWVtX2NhY2hlX3QgKnNpZ2FjdF9jYWNoZXA7CiMgMzEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvYXNtL3BjaS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9h
c20vc2NhdHRlcmxpc3QuaCIgMQoKCgpzdHJ1Y3Qgc2NhdHRlcmxpc3QgewogICAgY2hhciAqIGFk
ZHJlc3M7CgogICAgc3RydWN0IHBhZ2UgKiBwYWdlOwogICAgdW5zaWduZWQgaW50IG9mZnNldDsK
CiAgICBkbWFfYWRkcl90IGRtYV9hZGRyZXNzOwogICAgdW5zaWduZWQgaW50IGxlbmd0aDsKfTsK
IyAzMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGNpLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIiAxCiMgMzMgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvYXNtL3BjaS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vaW8uaCIgMQoK
CgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA1ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2FzbS9pby5oIiAyCiMgNDYgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvYXNtL2lvLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC92bWFsbG9jLmgi
IDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDEKIyA1ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3ZtYWxsb2MuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvbW0uaCIgMQojIDYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvdm1hbGxvYy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zcGlubG9j
ay5oIiAxCiMgNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC92bWFsbG9jLmgiIDIKCiMg
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGd0YWJsZS5oIiAxCiMgOSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC92bWFsbG9jLmgiIDIKCgoKCgpzdHJ1Y3Qgdm1fc3RydWN0IHsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIHZvaWQgKiBhZGRyOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgc2l6ZTsKICAgICAgICBzdHJ1Y3Qgdm1fc3RydWN0ICogbmV4dDsKfTsK
CmV4dGVybiBzdHJ1Y3Qgdm1fc3RydWN0ICogZ2V0X3ZtX2FyZWEgKHVuc2lnbmVkIGxvbmcgc2l6
ZSwgdW5zaWduZWQgbG9uZyBmbGFncyk7CmV4dGVybiB2b2lkIHZmcmVlKHZvaWQgKiBhZGRyKTsK
ZXh0ZXJuIHZvaWQgKiBfX3ZtYWxsb2MgKHVuc2lnbmVkIGxvbmcgc2l6ZSwgaW50IGdmcF9tYXNr
LCBwZ3Byb3RfdCBwcm90KTsKZXh0ZXJuIGxvbmcgdnJlYWQoY2hhciAqYnVmLCBjaGFyICphZGRy
LCB1bnNpZ25lZCBsb25nIGNvdW50KTsKZXh0ZXJuIHZvaWQgdm1mcmVlX2FyZWFfcGFnZXModW5z
aWduZWQgbG9uZyBhZGRyZXNzLCB1bnNpZ25lZCBsb25nIHNpemUpOwpleHRlcm4gaW50IHZtYWxs
b2NfYXJlYV9wYWdlcyh1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHVuc2lnbmVkIGxvbmcgc2l6ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGdmcF9tYXNrLCBwZ3Byb3RfdCBwcm90
KTsKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgKiB2bWFsbG9jICh1bnNpZ25lZCBsb25nIHNpemUp
CnsKICAgICAgICByZXR1cm4gX192bWFsbG9jKHNpemUsICgweDIwIHwgMHgxMCB8IDB4NDAgfCAw
eDgwIHwgMHgxMDApIHwgMHgwMiwgKHsgcGdwcm90X3QgX19yZXQ7IGlmICgoKF9fYnVpbHRpbl9j
b25zdGFudF9wKCgwKjMyKzEzKSkgPyBjb25zdGFudF90ZXN0X2JpdCgoKDAqMzIrMTMpKSwoYm9v
dF9jcHVfZGF0YS54ODZfY2FwYWJpbGl0eSkpIDogdmFyaWFibGVfdGVzdF9iaXQoKCgwKjMyKzEz
KSksKGJvb3RfY3B1X2RhdGEueDg2X2NhcGFiaWxpdHkpKSkpKSBfX3JldCA9ICgocGdwcm90X3Qp
IHsgKCgoMHgwMDEgfCAweDAwMiB8IDB4MDQwIHwgMHgwMjApKSB8IDB4MTAwKSB9ICk7IGVsc2Ug
X19yZXQgPSAoKHBncHJvdF90KSB7ICgoMHgwMDEgfCAweDAwMiB8IDB4MDQwIHwgMHgwMjApKSB9
ICk7IF9fcmV0OyB9KSk7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgKiB2bWFsbG9jX2RtYSAo
dW5zaWduZWQgbG9uZyBzaXplKQp7CiAgICAgICAgcmV0dXJuIF9fdm1hbGxvYyhzaXplLCAoMHgy
MCB8IDB4MTAgfCAweDQwIHwgMHg4MCB8IDB4MTAwKXwweDAxLCAoeyBwZ3Byb3RfdCBfX3JldDsg
aWYgKCgoX19idWlsdGluX2NvbnN0YW50X3AoKDAqMzIrMTMpKSA/IGNvbnN0YW50X3Rlc3RfYml0
KCgoMCozMisxMykpLChib290X2NwdV9kYXRhLng4Nl9jYXBhYmlsaXR5KSkgOiB2YXJpYWJsZV90
ZXN0X2JpdCgoKDAqMzIrMTMpKSwoYm9vdF9jcHVfZGF0YS54ODZfY2FwYWJpbGl0eSkpKSkpIF9f
cmV0ID0gKChwZ3Byb3RfdCkgeyAoKCgweDAwMSB8IDB4MDAyIHwgMHgwNDAgfCAweDAyMCkpIHwg
MHgxMDApIH0gKTsgZWxzZSBfX3JldCA9ICgocGdwcm90X3QpIHsgKCgweDAwMSB8IDB4MDAyIHwg
MHgwNDAgfCAweDAyMCkpIH0gKTsgX19yZXQ7IH0pKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgdm9p
ZCAqIHZtYWxsb2NfMzIodW5zaWduZWQgbG9uZyBzaXplKQp7CiAgICAgICAgcmV0dXJuIF9fdm1h
bGxvYyhzaXplLCAoMHgyMCB8IDB4MTAgfCAweDQwIHwgMHg4MCB8IDB4MTAwKSwgKHsgcGdwcm90
X3QgX19yZXQ7IGlmICgoKF9fYnVpbHRpbl9jb25zdGFudF9wKCgwKjMyKzEzKSkgPyBjb25zdGFu
dF90ZXN0X2JpdCgoKDAqMzIrMTMpKSwoYm9vdF9jcHVfZGF0YS54ODZfY2FwYWJpbGl0eSkpIDog
dmFyaWFibGVfdGVzdF9iaXQoKCgwKjMyKzEzKSksKGJvb3RfY3B1X2RhdGEueDg2X2NhcGFiaWxp
dHkpKSkpKSBfX3JldCA9ICgocGdwcm90X3QpIHsgKCgoMHgwMDEgfCAweDAwMiB8IDB4MDQwIHwg
MHgwMjApKSB8IDB4MTAwKSB9ICk7IGVsc2UgX19yZXQgPSAoKHBncHJvdF90KSB7ICgoMHgwMDEg
fCAweDAwMiB8IDB4MDQwIHwgMHgwMjApKSB9ICk7IF9fcmV0OyB9KSk7Cn0KCgoKCgpleHRlcm4g
cndsb2NrX3Qgdm1saXN0X2xvY2s7CgpleHRlcm4gc3RydWN0IHZtX3N0cnVjdCAqIHZtbGlzdDsK
IyA0NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vaW8uaCIgMgojIDY2ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2FzbS9pby5oIgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgdmlydF90
b19waHlzKHZvbGF0aWxlIHZvaWQgKiBhZGRyZXNzKQp7CiAgICAgICAgcmV0dXJuICgodW5zaWdu
ZWQgbG9uZykoYWRkcmVzcyktKCh1bnNpZ25lZCBsb25nKSgweEMwMDAwMDAwKSkpOwp9CgpzdGF0
aWMgaW5saW5lIHZvaWQgKiBwaHlzX3RvX3ZpcnQodW5zaWduZWQgbG9uZyBhZGRyZXNzKQp7CiAg
ICAgICAgcmV0dXJuICgodm9pZCAqKSgodW5zaWduZWQgbG9uZykoYWRkcmVzcykrKCh1bnNpZ25l
ZCBsb25nKSgweEMwMDAwMDAwKSkpKTsKfQoKCgoKCgpleHRlcm4gdm9pZCAqIF9faW9yZW1hcCh1
bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBsb25nIGZs
YWdzKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCAqIGlvcmVtYXAgKHVuc2lnbmVkIGxvbmcgb2Zmc2V0
LCB1bnNpZ25lZCBsb25nIHNpemUpCnsKICAgICAgICByZXR1cm4gX19pb3JlbWFwKG9mZnNldCwg
c2l6ZSwgMCk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSB2b2lkICogaW9yZW1hcF9ub2NhY2hlICh1
bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBzaXplKQp7CiAgICAgICAgcmV0dXJu
IF9faW9yZW1hcChvZmZzZXQsIHNpemUsIDB4MDEwKTsKfQoKZXh0ZXJuIHZvaWQgaW91bm1hcCh2
b2lkICphZGRyKTsKIyAxNjAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2lvLmgiCnN0YXRp
YyBpbmxpbmUgaW50IGNoZWNrX3NpZ25hdHVyZSh1bnNpZ25lZCBsb25nIGlvX2FkZHIsCiAgICAg
ICAgY29uc3QgdW5zaWduZWQgY2hhciAqc2lnbmF0dXJlLCBpbnQgbGVuZ3RoKQp7CiAgICAgICAg
aW50IHJldHZhbCA9IDA7CiAgICAgICAgZG8gewogICAgICAgICAgICAgICAgaWYgKCgqKHZvbGF0
aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvX2FkZHIpKSkgIT0gKnNpZ25hdHVyZSkK
ICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICAgICBpb19hZGRy
Kys7CiAgICAgICAgICAgICAgICBzaWduYXR1cmUrKzsKICAgICAgICAgICAgICAgIGxlbmd0aC0t
OwogICAgICAgIH0gd2hpbGUgKGxlbmd0aCk7CiAgICAgICAgcmV0dmFsID0gMTsKb3V0OgogICAg
ICAgIHJldHVybiByZXR2YWw7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IGlzYV9jaGVja19zaWduYXR1
cmUodW5zaWduZWQgbG9uZyBpb19hZGRyLAogICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNp
Z25hdHVyZSwgaW50IGxlbmd0aCkKewogICAgICAgIGludCByZXR2YWwgPSAwOwogICAgICAgIGRv
IHsKICAgICAgICAgICAgICAgIGlmICgoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9p
ZCAqKSgoKGNoYXIgKikoKCh1bnNpZ25lZCBsb25nKSgweEMwMDAwMDAwKSkpKSArIChpb19hZGRy
KSkpKSAhPSAqc2lnbmF0dXJlKQogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKICAg
ICAgICAgICAgICAgIGlvX2FkZHIrKzsKICAgICAgICAgICAgICAgIHNpZ25hdHVyZSsrOwogICAg
ICAgICAgICAgICAgbGVuZ3RoLS07CiAgICAgICAgfSB3aGlsZSAobGVuZ3RoKTsKICAgICAgICBy
ZXR2YWwgPSAxOwpvdXQ6CiAgICAgICAgcmV0dXJuIHJldHZhbDsKfQojIDI4NSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9hc20vaW8uaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyIGluYih1
bnNpZ25lZCBzaG9ydCBwb3J0KSB7IHVuc2lnbmVkIGNoYXIgX3Y7IF9fYXNtX18gX192b2xhdGls
ZV9fICgiaW4iICJiIiAiICUiICJ3IiAiMSwlIiAiIiAiMCIgOiAiPWEiIChfdikgOiAiTmQiIChw
b3J0KSApOyByZXR1cm4gX3Y7IH0gc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyIGluYl9wKHVu
c2lnbmVkIHNob3J0IHBvcnQpIHsgdW5zaWduZWQgY2hhciBfdjsgX19hc21fXyBfX3ZvbGF0aWxl
X18gKCJpbiIgImIiICIgJSIgInciICIxLCUiICIiICIwIiAiXG5vdXRiICUlYWwsJDB4ODAiIDog
Ij1hIiAoX3YpIDogIk5kIiAocG9ydCkgKTsgcmV0dXJuIF92OyB9CgoKc3RhdGljIGlubGluZSB1
bnNpZ25lZCBzaG9ydCBpbncodW5zaWduZWQgc2hvcnQgcG9ydCkgeyB1bnNpZ25lZCBzaG9ydCBf
djsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJpbiIgInciICIgJSIgInciICIxLCUiICIiICIwIiA6
ICI9YSIgKF92KSA6ICJOZCIgKHBvcnQpICk7IHJldHVybiBfdjsgfSBzdGF0aWMgaW5saW5lIHVu
c2lnbmVkIHNob3J0IGlud19wKHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgdW5zaWduZWQgc2hvcnQg
X3Y7IF9fYXNtX18gX192b2xhdGlsZV9fICgiaW4iICJ3IiAiICUiICJ3IiAiMSwlIiAiIiAiMCIg
Ilxub3V0YiAlJWFsLCQweDgwIiA6ICI9YSIgKF92KSA6ICJOZCIgKHBvcnQpICk7IHJldHVybiBf
djsgfQoKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGlubCh1bnNpZ25lZCBzaG9ydCBwb3J0
KSB7IHVuc2lnbmVkIGludCBfdjsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJpbiIgImwiICIgJSIg
InciICIxLCUiICIiICIwIiA6ICI9YSIgKF92KSA6ICJOZCIgKHBvcnQpICk7IHJldHVybiBfdjsg
fSBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBpbmxfcCh1bnNpZ25lZCBzaG9ydCBwb3J0KSB7
IHVuc2lnbmVkIGludCBfdjsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJpbiIgImwiICIgJSIgInci
ICIxLCUiICIiICIwIiAiXG5vdXRiICUlYWwsJDB4ODAiIDogIj1hIiAoX3YpIDogIk5kIiAocG9y
dCkgKTsgcmV0dXJuIF92OyB9CgoKc3RhdGljIGlubGluZSB2b2lkIG91dGIodW5zaWduZWQgY2hh
ciB2YWx1ZSwgdW5zaWduZWQgc2hvcnQgcG9ydCkgeyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIm91
dCIgImIiICIgJSIgImIiICIwLCUiICJ3IiAiMSIgOiA6ICJhIiAodmFsdWUpLCAiTmQiIChwb3J0
KSk7IH0gc3RhdGljIGlubGluZSB2b2lkIG91dGJfcCh1bnNpZ25lZCBjaGFyIHZhbHVlLCB1bnNp
Z25lZCBzaG9ydCBwb3J0KSB7IF9fYXNtX18gX192b2xhdGlsZV9fICgib3V0IiAiYiIgIiAlIiAi
YiIgIjAsJSIgInciICIxIiAiXG5vdXRiICUlYWwsJDB4ODAiIDogOiAiYSIgKHZhbHVlKSwgIk5k
IiAocG9ydCkpO30Kc3RhdGljIGlubGluZSB2b2lkIG91dHcodW5zaWduZWQgc2hvcnQgdmFsdWUs
IHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJvdXQiICJ3IiAi
ICUiICJ3IiAiMCwlIiAidyIgIjEiIDogOiAiYSIgKHZhbHVlKSwgIk5kIiAocG9ydCkpOyB9IHN0
YXRpYyBpbmxpbmUgdm9pZCBvdXR3X3AodW5zaWduZWQgc2hvcnQgdmFsdWUsIHVuc2lnbmVkIHNo
b3J0IHBvcnQpIHsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJvdXQiICJ3IiAiICUiICJ3IiAiMCwl
IiAidyIgIjEiICJcbm91dGIgJSVhbCwkMHg4MCIgOiA6ICJhIiAodmFsdWUpLCAiTmQiIChwb3J0
KSk7fQpzdGF0aWMgaW5saW5lIHZvaWQgb3V0bCh1bnNpZ25lZCBpbnQgdmFsdWUsIHVuc2lnbmVk
IHNob3J0IHBvcnQpIHsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJvdXQiICJsIiAiICUiICIwLCUi
ICJ3IiAiMSIgOiA6ICJhIiAodmFsdWUpLCAiTmQiIChwb3J0KSk7IH0gc3RhdGljIGlubGluZSB2
b2lkIG91dGxfcCh1bnNpZ25lZCBpbnQgdmFsdWUsIHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgX19h
c21fXyBfX3ZvbGF0aWxlX18gKCJvdXQiICJsIiAiICUiICIwLCUiICJ3IiAiMSIgIlxub3V0YiAl
JWFsLCQweDgwIiA6IDogImEiICh2YWx1ZSksICJOZCIgKHBvcnQpKTt9CgpzdGF0aWMgaW5saW5l
IHZvaWQgaW5zYih1bnNpZ25lZCBzaG9ydCBwb3J0LCB2b2lkICogYWRkciwgdW5zaWduZWQgbG9u
ZyBjb3VudCkgeyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoInJlcCA7IGlucyIgImIiIDogIj1EIiAo
YWRkciksICI9YyIgKGNvdW50KSA6ICJkIiAocG9ydCksIjAiIChhZGRyKSwiMSIgKGNvdW50KSk7
IH0Kc3RhdGljIGlubGluZSB2b2lkIGluc3codW5zaWduZWQgc2hvcnQgcG9ydCwgdm9pZCAqIGFk
ZHIsIHVuc2lnbmVkIGxvbmcgY291bnQpIHsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJyZXAgOyBp
bnMiICJ3IiA6ICI9RCIgKGFkZHIpLCAiPWMiIChjb3VudCkgOiAiZCIgKHBvcnQpLCIwIiAoYWRk
ciksIjEiIChjb3VudCkpOyB9CnN0YXRpYyBpbmxpbmUgdm9pZCBpbnNsKHVuc2lnbmVkIHNob3J0
IHBvcnQsIHZvaWQgKiBhZGRyLCB1bnNpZ25lZCBsb25nIGNvdW50KSB7IF9fYXNtX18gX192b2xh
dGlsZV9fICgicmVwIDsgaW5zIiAibCIgOiAiPUQiIChhZGRyKSwgIj1jIiAoY291bnQpIDogImQi
IChwb3J0KSwiMCIgKGFkZHIpLCIxIiAoY291bnQpKTsgfQoKc3RhdGljIGlubGluZSB2b2lkIG91
dHNiKHVuc2lnbmVkIHNob3J0IHBvcnQsIGNvbnN0IHZvaWQgKiBhZGRyLCB1bnNpZ25lZCBsb25n
IGNvdW50KSB7IF9fYXNtX18gX192b2xhdGlsZV9fICgicmVwIDsgb3V0cyIgImIiIDogIj1TIiAo
YWRkciksICI9YyIgKGNvdW50KSA6ICJkIiAocG9ydCksIjAiIChhZGRyKSwiMSIgKGNvdW50KSk7
IH0Kc3RhdGljIGlubGluZSB2b2lkIG91dHN3KHVuc2lnbmVkIHNob3J0IHBvcnQsIGNvbnN0IHZv
aWQgKiBhZGRyLCB1bnNpZ25lZCBsb25nIGNvdW50KSB7IF9fYXNtX18gX192b2xhdGlsZV9fICgi
cmVwIDsgb3V0cyIgInciIDogIj1TIiAoYWRkciksICI9YyIgKGNvdW50KSA6ICJkIiAocG9ydCks
IjAiIChhZGRyKSwiMSIgKGNvdW50KSk7IH0Kc3RhdGljIGlubGluZSB2b2lkIG91dHNsKHVuc2ln
bmVkIHNob3J0IHBvcnQsIGNvbnN0IHZvaWQgKiBhZGRyLCB1bnNpZ25lZCBsb25nIGNvdW50KSB7
IF9fYXNtX18gX192b2xhdGlsZV9fICgicmVwIDsgb3V0cyIgImwiIDogIj1TIiAoYWRkciksICI9
YyIgKGNvdW50KSA6ICJkIiAocG9ydCksIjAiIChhZGRyKSwiMSIgKGNvdW50KSk7IH0KIyAzNCAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGNpLmgiIDIKCnN0cnVjdCBwY2lfZGV2OwojIDUw
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wY2kuaCIKZXh0ZXJuIHZvaWQgKnBjaV9hbGxv
Y19jb25zaXN0ZW50KHN0cnVjdCBwY2lfZGV2ICpod2Rldiwgc2l6ZV90IHNpemUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkbWFfYWRkcl90ICpkbWFfaGFuZGxlKTsKIyA2MSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGNpLmgiCmV4dGVybiB2b2lkIHBjaV9mcmVlX2Nv
bnNpc3RlbnQoc3RydWN0IHBjaV9kZXYgKmh3ZGV2LCBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2b2lkICp2YWRkciwgZG1hX2FkZHJfdCBkbWFfaGFuZGxlKTsK
CgoKCgoKCnN0YXRpYyBpbmxpbmUgZG1hX2FkZHJfdCBwY2lfbWFwX3NpbmdsZShzdHJ1Y3QgcGNp
X2RldiAqaHdkZXYsIHZvaWQgKnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBzaXplLCBpbnQgZGlyZWN0aW9uKQp7CiAgICAgICAgaWYgKGRpcmVjdGlv
biA9PSAzKQogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYs
MHgwYiIpOwogICAgICAgIHJldHVybiB2aXJ0X3RvX3BoeXMocHRyKTsKfQojIDg1ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2FzbS9wY2kuaCIKc3RhdGljIGlubGluZSB2b2lkIHBjaV91bm1hcF9z
aW5nbGUoc3RydWN0IHBjaV9kZXYgKmh3ZGV2LCBkbWFfYWRkcl90IGRtYV9hZGRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwgaW50IGRpcmVjdGlvbikK
ewogICAgICAgIGlmIChkaXJlY3Rpb24gPT0gMykKICAgICAgICAgICAgICAgIF9fYXNtX18gX192
b2xhdGlsZV9fKCIuYnl0ZSAweDBmLDB4MGIiKTsKCn0KCgoKCgpzdGF0aWMgaW5saW5lIGRtYV9h
ZGRyX3QgcGNpX21hcF9wYWdlKHN0cnVjdCBwY2lfZGV2ICpod2Rldiwgc3RydWN0IHBhZ2UgKnBh
Z2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBv
ZmZzZXQsIHNpemVfdCBzaXplLCBpbnQgZGlyZWN0aW9uKQp7CiAgICAgICAgaWYgKGRpcmVjdGlv
biA9PSAzKQogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYs
MHgwYiIpOwoKICAgICAgICByZXR1cm4gKHBhZ2UgLSBtZW1fbWFwKSAqICgxVUwgPDwgMTIpICsg
b2Zmc2V0Owp9CgpzdGF0aWMgaW5saW5lIHZvaWQgcGNpX3VubWFwX3BhZ2Uoc3RydWN0IHBjaV9k
ZXYgKmh3ZGV2LCBkbWFfYWRkcl90IGRtYV9hZGRyZXNzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IHNpemUsIGludCBkaXJlY3Rpb24pCnsKICAgICAgICBpZiAoZGly
ZWN0aW9uID09IDMpCiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiLmJ5dGUg
MHgwZiwweDBiIik7Cgp9CiMgMTI5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wY2kuaCIK
c3RhdGljIGlubGluZSBpbnQgcGNpX21hcF9zZyhzdHJ1Y3QgcGNpX2RldiAqaHdkZXYsIHN0cnVj
dCBzY2F0dGVybGlzdCAqc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5lbnRz
LCBpbnQgZGlyZWN0aW9uKQp7CiAgICAgICAgaW50IGk7CgogICAgICAgIGlmIChkaXJlY3Rpb24g
PT0gMykKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIuYnl0ZSAweDBmLDB4
MGIiKTsKCgoKCiAgICAgICAgZm9yIChpID0gMDsgaSA8IG5lbnRzOyBpKysgKSB7CiAgICAgICAg
ICAgICAgICBpZiAoc2dbaV0uYWRkcmVzcyAmJiBzZ1tpXS5wYWdlKQogICAgICAgICAgICAgICAg
ICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiLmJ5dGUgMHgwZiwweDBiIik7CiAgICAgICAg
ICAgICAgICBlbHNlIGlmICghc2dbaV0uYWRkcmVzcyAmJiAhc2dbaV0ucGFnZSkKICAgICAgICAg
ICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwoK
ICAgICAgICAgICAgICAgIGlmIChzZ1tpXS5hZGRyZXNzKQogICAgICAgICAgICAgICAgICAgICAg
ICBzZ1tpXS5kbWFfYWRkcmVzcyA9IHZpcnRfdG9fcGh5cyhzZ1tpXS5hZGRyZXNzKTsKICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgc2dbaV0uZG1hX2FkZHJlc3Mg
PSAoKHNnW2ldLnBhZ2UgLSBtZW1fbWFwKSA8PCAxMikgKyBzZ1tpXS5vZmZzZXQ7CiAgICAgICAg
fQoKICAgICAgICByZXR1cm4gbmVudHM7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgcGNpX3Vu
bWFwX3NnKHN0cnVjdCBwY2lfZGV2ICpod2Rldiwgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmVudHMsIGludCBkaXJlY3Rpb24pCnsK
ICAgICAgICBpZiAoZGlyZWN0aW9uID09IDMpCiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9s
YXRpbGVfXygiLmJ5dGUgMHgwZiwweDBiIik7Cgp9CiMgMTc2ICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2FzbS9wY2kuaCIKc3RhdGljIGlubGluZSB2b2lkIHBjaV9kbWFfc3luY19zaW5nbGUoc3Ry
dWN0IHBjaV9kZXYgKmh3ZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkbWFfYWRkcl90IGRtYV9oYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBzaXplLCBpbnQgZGlyZWN0aW9uKQp7CiAgICAgICAgaWYgKGRpcmVjdGlv
biA9PSAzKQogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYs
MHgwYiIpOwoKfQoKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIHBjaV9kbWFfc3luY19zZyhzdHJ1
Y3QgcGNpX2RldiAqaHdkZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IHNjYXR0ZXJsaXN0ICpzZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgbmVsZW1zLCBpbnQgZGlyZWN0aW9uKQp7CiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSAzKQog
ICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwoK
fQoKCgoKCgpzdGF0aWMgaW5saW5lIGludCBwY2lfZG1hX3N1cHBvcnRlZChzdHJ1Y3QgcGNpX2Rl
diAqaHdkZXYsIHU2NCBtYXNrKQp7CgoKCgoKICAgICAgICBpZihtYXNrIDwgMHgwMGZmZmZmZikK
ICAgICAgICAgICAgICAgIHJldHVybiAwOwoKICAgICAgICByZXR1cm4gMTsKfQoKCgoKc3RhdGlj
IF9faW5saW5lX18gZG1hNjRfYWRkcl90CnBjaV9kYWNfcGFnZV90b19kbWEoc3RydWN0IHBjaV9k
ZXYgKnBkZXYsIHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG9mZnNldCwgaW50IGRp
cmVjdGlvbikKewogICAgICAgIHJldHVybiAoKGRtYTY0X2FkZHJfdCkgKChwYWdlIC0gbWVtX21h
cCkgPDwgMTIpICsKICAgICAgICAgICAgICAgIChkbWE2NF9hZGRyX3QpIG9mZnNldCk7Cn0KCnN0
YXRpYyBfX2lubGluZV9fIHN0cnVjdCBwYWdlICoKcGNpX2RhY19kbWFfdG9fcGFnZShzdHJ1Y3Qg
cGNpX2RldiAqcGRldiwgZG1hNjRfYWRkcl90IGRtYV9hZGRyKQp7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBwb2ZmID0gKGRtYV9hZGRyID4+IDEyKTsKCiAgICAgICAgcmV0dXJuIG1lbV9tYXAgKyBw
b2ZmOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nCnBjaV9kYWNfZG1hX3RvX29m
ZnNldChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgZG1hNjRfYWRkcl90IGRtYV9hZGRyKQp7CiAgICAg
ICAgcmV0dXJuIChkbWFfYWRkciAmIH4ofigoMVVMIDw8IDEyKS0xKSkpOwp9CgpzdGF0aWMgX19p
bmxpbmVfXyB2b2lkCnBjaV9kYWNfZG1hX3N5bmNfc2luZ2xlKHN0cnVjdCBwY2lfZGV2ICpwZGV2
LCBkbWE2NF9hZGRyX3QgZG1hX2FkZHIsIHNpemVfdCBsZW4sIGludCBkaXJlY3Rpb24pCnsKCn0K
IyAyNTcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BjaS5oIgpzdGF0aWMgaW5saW5lIGlu
dCBwY2lfY29udHJvbGxlcl9udW0oc3RydWN0IHBjaV9kZXYgKmRldikKewogICAgICAgIHJldHVy
biAwOwp9CgoKZXh0ZXJuIGludCBwY2lfbW1hcF9wYWdlX3JhbmdlKHN0cnVjdCBwY2lfZGV2ICpk
ZXYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZW51bSBwY2lfbW1hcF9zdGF0ZSBtbWFwX3N0YXRlLCBpbnQgd3JpdGVfY29tYmluZSk7
CiMgNjA2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3BjaS5oIiAyCiMgNjcxICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3BjaS5oIgpzdGF0aWMgaW5saW5lIGludCBwY2lfbW9k
dWxlX2luaXQoc3RydWN0IHBjaV9kcml2ZXIgKmRydikKewogICAgICAgIGludCByYyA9IHBjaV9y
ZWdpc3Rlcl9kcml2ZXIgKGRydik7CgogICAgICAgIGlmIChyYyA+IDApCiAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKIyA2ODYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcGNpLmgiCiAg
ICAgICAgaWYgKHJjID09IDApCiAgICAgICAgICAgICAgICByYyA9IC0xOTsKCgoKCiAgICAgICAg
cGNpX3VucmVnaXN0ZXJfZHJpdmVyIChkcnYpOwoKICAgICAgICByZXR1cm4gcmM7Cn0KIyA3MTYg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcGNpLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCAq
cGNpX2dldF9kcnZkYXRhIChzdHJ1Y3QgcGNpX2RldiAqcGRldikKewogICAgICAgIHJldHVybiBw
ZGV2LT5kcml2ZXJfZGF0YTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHBjaV9zZXRfZHJ2ZGF0YSAo
c3RydWN0IHBjaV9kZXYgKnBkZXYsIHZvaWQgKmRhdGEpCnsKICAgICAgICBwZGV2LT5kcml2ZXJf
ZGF0YSA9IGRhdGE7Cn0KIyA3MzMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcGNpLmgi
CnN0cnVjdCBwY2lfZml4dXAgewogICAgICAgIGludCBwYXNzOwogICAgICAgIHUxNiB2ZW5kb3Is
IGRldmljZTsKICAgICAgICB2b2lkICgqaG9vaykoc3RydWN0IHBjaV9kZXYgKmRldik7Cn07Cgpl
eHRlcm4gc3RydWN0IHBjaV9maXh1cCBwY2liaW9zX2ZpeHVwc1tdOwoKCgoKdm9pZCBwY2lfZml4
dXBfZGV2aWNlKGludCBwYXNzLCBzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKCmV4dGVybiBpbnQgcGNp
X3BjaV9wcm9ibGVtczsKIyAxNDkgIjgxMzl0b28uYyIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvaW5pdC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9jb25maWcuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaW5pdC5oIiAy
CiMgNDggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaW5pdC5oIgp0eXBlZGVmIGludCAo
KmluaXRjYWxsX3QpKHZvaWQpOwp0eXBlZGVmIHZvaWQgKCpleGl0Y2FsbF90KSh2b2lkKTsKCmV4
dGVybiBpbml0Y2FsbF90IF9faW5pdGNhbGxfc3RhcnQsIF9faW5pdGNhbGxfZW5kOwojIDYxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2luaXQuaCIKc3RydWN0IGtlcm5lbF9wYXJhbSB7
CiAgICAgICAgY29uc3QgY2hhciAqc3RyOwogICAgICAgIGludCAoKnNldHVwX2Z1bmMpKGNoYXIg
Kik7Cn07CgpleHRlcm4gc3RydWN0IGtlcm5lbF9wYXJhbSBfX3NldHVwX3N0YXJ0LCBfX3NldHVw
X2VuZDsKIyAxNTAgIjgxMzl0b28uYyIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvaW9wb3J0LmgiIDEKIyAxNTEgIjgxMzl0b28uYyIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiIDEKIyAyOCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9uZXRkZXZpY2UuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2lmLmgi
IDEKIyAyMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pZi5oIgojIDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDIzICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2lmLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NvY2tl
dC5oIiAxCiMgMjQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaWYuaCIgMgojIDU4ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2lmLmgiCnN0cnVjdCBpZm1hcAp7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBtZW1fc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtZW1fZW5kOwog
ICAgICAgIHVuc2lnbmVkIHNob3J0IGJhc2VfYWRkcjsKICAgICAgICB1bnNpZ25lZCBjaGFyIGly
cTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGRtYTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHBvcnQ7
Cgp9OwojIDc2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2lmLmgiCnN0cnVjdCBpZnJl
cQp7CgoKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIGNoYXIgaWZybl9u
YW1lWzE2XTsKICAgICAgICB9IGlmcl9pZnJuOwoKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAg
ICAgICBzdHJ1Y3Qgc29ja2FkZHIgaWZydV9hZGRyOwogICAgICAgICAgICAgICAgc3RydWN0IHNv
Y2thZGRyIGlmcnVfZHN0YWRkcjsKICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkciBpZnJ1
X2Jyb2FkYWRkcjsKICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkciBpZnJ1X25ldG1hc2s7
CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgaWZydV9od2FkZHI7CiAgICAgICAgICAg
ICAgICBzaG9ydCBpZnJ1X2ZsYWdzOwogICAgICAgICAgICAgICAgaW50IGlmcnVfaXZhbHVlOwog
ICAgICAgICAgICAgICAgaW50IGlmcnVfbXR1OwogICAgICAgICAgICAgICAgc3RydWN0IGlmbWFw
IGlmcnVfbWFwOwogICAgICAgICAgICAgICAgY2hhciBpZnJ1X3NsYXZlWzE2XTsKICAgICAgICAg
ICAgICAgIGNoYXIgaWZydV9uZXduYW1lWzE2XTsKICAgICAgICAgICAgICAgIGNoYXIgKiBpZnJ1
X2RhdGE7CiAgICAgICAgfSBpZnJfaWZydTsKfTsKIyAxMjUgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvaWYuaCIKc3RydWN0IGlmY29uZgp7CiAgICAgICAgaW50IGlmY19sZW47CiAgICAg
ICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAgICBjaGFyICogaWZjdV9idWY7CiAgICAg
ICAgICAgICAgICBzdHJ1Y3QgaWZyZXEgKmlmY3VfcmVxOwogICAgICAgIH0gaWZjX2lmY3U7Cn07
CiMgMjkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2lmX2V0aGVyLmgiIDEKIyA5MiAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9pZl9ldGhlci5oIgpzdHJ1Y3QgZXRoaGRyCnsKICAgICAgICB1
bnNpZ25lZCBjaGFyIGhfZGVzdFs2XTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGhfc291cmNlWzZd
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IGhfcHJvdG87Cn07CiMgMzAgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L2lmX3BhY2tldC5oIiAxCgoKCnN0cnVjdCBzb2NrYWRkcl9wa3QKewogICAgICAgIHVu
c2lnbmVkIHNob3J0IHNwa3RfZmFtaWx5OwogICAgICAgIHVuc2lnbmVkIGNoYXIgc3BrdF9kZXZp
Y2VbMTRdOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNwa3RfcHJvdG9jb2w7Cn07CgpzdHJ1Y3Qg
c29ja2FkZHJfbGwKewogICAgICAgIHVuc2lnbmVkIHNob3J0IHNsbF9mYW1pbHk7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgc2xsX3Byb3RvY29sOwogICAgICAgIGludCBzbGxfaWZpbmRleDsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBzbGxfaGF0eXBlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc2xs
X3BrdHR5cGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBzbGxfaGFsZW47CiAgICAgICAgdW5zaWdu
ZWQgY2hhciBzbGxfYWRkcls4XTsKfTsKIyA0MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9pZl9wYWNrZXQuaCIKc3RydWN0IHRwYWNrZXRfc3RhdHMKewogICAgICAgIHVuc2lnbmVkIGlu
dCB0cF9wYWNrZXRzOwogICAgICAgIHVuc2lnbmVkIGludCB0cF9kcm9wczsKfTsKCnN0cnVjdCB0
cGFja2V0X2hkcgp7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0cF9zdGF0dXM7CgoKCgoKICAgICAg
ICB1bnNpZ25lZCBpbnQgdHBfbGVuOwogICAgICAgIHVuc2lnbmVkIGludCB0cF9zbmFwbGVuOwog
ICAgICAgIHVuc2lnbmVkIHNob3J0IHRwX21hYzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB0cF9u
ZXQ7CiAgICAgICAgdW5zaWduZWQgaW50IHRwX3NlYzsKICAgICAgICB1bnNpZ25lZCBpbnQgdHBf
dXNlYzsKfTsKIyA4MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pZl9wYWNrZXQuaCIK
c3RydWN0IHRwYWNrZXRfcmVxCnsKICAgICAgICB1bnNpZ25lZCBpbnQgdHBfYmxvY2tfc2l6ZTsK
ICAgICAgICB1bnNpZ25lZCBpbnQgdHBfYmxvY2tfbnI7CiAgICAgICAgdW5zaWduZWQgaW50IHRw
X2ZyYW1lX3NpemU7CiAgICAgICAgdW5zaWduZWQgaW50IHRwX2ZyYW1lX25yOwp9OwoKc3RydWN0
IHBhY2tldF9tcmVxCnsKICAgICAgICBpbnQgbXJfaWZpbmRleDsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCBtcl90eXBlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG1yX2FsZW47CiAgICAgICAgdW5z
aWduZWQgY2hhciBtcl9hZGRyZXNzWzhdOwp9OwojIDMxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L25ldGRldmljZS5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2F0
b21pYy5oIiAxCiMgMzMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9jYWNoZS5oIiAxCiMgMzQgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCIgMQojIDM1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L25ldGRldmljZS5oIiAyCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L2NvbmZpZy5oIiAxCiMgMzggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmV0ZGV2aWNl
LmgiIDIKCgoKCnN0cnVjdCBkaXZlcnRfYmxrOwojIDk2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L25ldGRldmljZS5oIgpzdHJ1Y3QgbmV0X2RldmljZV9zdGF0cwp7CiAgICAgICAgdW5z
aWduZWQgbG9uZyByeF9wYWNrZXRzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdHhfcGFja2V0czsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHJ4X2J5dGVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdHhf
Ynl0ZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyByeF9lcnJvcnM7CiAgICAgICAgdW5zaWduZWQg
bG9uZyB0eF9lcnJvcnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyByeF9kcm9wcGVkOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgdHhfZHJvcHBlZDsKICAgICAgICB1bnNpZ25lZCBsb25nIG11bHRpY2Fz
dDsKICAgICAgICB1bnNpZ25lZCBsb25nIGNvbGxpc2lvbnM7CgoKICAgICAgICB1bnNpZ25lZCBs
b25nIHJ4X2xlbmd0aF9lcnJvcnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyByeF9vdmVyX2Vycm9y
czsKICAgICAgICB1bnNpZ25lZCBsb25nIHJ4X2NyY19lcnJvcnM7CiAgICAgICAgdW5zaWduZWQg
bG9uZyByeF9mcmFtZV9lcnJvcnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyByeF9maWZvX2Vycm9y
czsKICAgICAgICB1bnNpZ25lZCBsb25nIHJ4X21pc3NlZF9lcnJvcnM7CgoKICAgICAgICB1bnNp
Z25lZCBsb25nIHR4X2Fib3J0ZWRfZXJyb3JzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdHhfY2Fy
cmllcl9lcnJvcnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0eF9maWZvX2Vycm9yczsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHR4X2hlYXJ0YmVhdF9lcnJvcnM7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyB0eF93aW5kb3dfZXJyb3JzOwoKCiAgICAgICAgdW5zaWduZWQgbG9uZyByeF9jb21wcmVzc2Vk
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgdHhfY29tcHJlc3NlZDsKfTsKCgoKZW51bSB7CiAgICAg
ICAgSUZfUE9SVF9VTktOT1dOID0gMCwKICAgICAgICBJRl9QT1JUXzEwQkFTRTIsCiAgICAgICAg
SUZfUE9SVF8xMEJBU0VULAogICAgICAgIElGX1BPUlRfQVVJLAogICAgICAgIElGX1BPUlRfMTAw
QkFTRVQsCiAgICAgICAgSUZfUE9SVF8xMDBCQVNFVFgsCiAgICAgICAgSUZfUE9SVF8xMDBCQVNF
RlgKfTsKCgoKZXh0ZXJuIGNvbnN0IGNoYXIgKmlmX3BvcnRfdGV4dFtdOwoKIyAxICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L2NhY2hlLmgiIDEKIyAxNDYgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L3NrYnVmZi5oIiAxCiMgMTcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZm
LmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDE4ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMQojIDE5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3NrYnVmZi5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hl
ZC5oIiAxCiMgMjAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3RpbWUuaCIgMQojIDIxICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9jYWNoZS5oIiAxCiMgMjIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2ti
dWZmLmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEKIyAy
NCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvYXNtL3R5cGVzLmgiIDEKIyAyNSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9za2J1ZmYuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3Bp
bmxvY2suaCIgMQojIDI2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tbS5oIiAxCiMgMjcgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2hpZ2htZW0uaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvY29uZmlnLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2hpZ2htZW0u
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BnYWxsb2MuaCIgMQoKCgojIDEg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA1ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2FzbS9wZ2FsbG9jLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2FzbS9wcm9jZXNzb3IuaCIgMQojIDYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BnYWxs
b2MuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2ZpeG1hcC5oIiAxCiMgNyAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGdhbGxvYy5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC90aHJlYWRzLmgiIDEKIyA4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2FzbS9wZ2FsbG9jLmgiIDIKIyA1MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGdhbGxv
Yy5oIgpzdGF0aWMgX19pbmxpbmVfXyBwZ2RfdCAqZ2V0X3BnZF9zbG93KHZvaWQpCnsKICAgICAg
ICBwZ2RfdCAqcGdkID0gKHBnZF90ICopX19nZXRfZnJlZV9wYWdlcygoKDB4MjAgfCAweDEwIHwg
MHg0MCB8IDB4ODAgfCAweDEwMCkpLDApOwoKICAgICAgICBpZiAocGdkKSB7CiAgICAgICAgICAg
ICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKCgo
KCh1bnNpZ25lZCBsb25nKSgweEMwMDAwMDAwKSkpLygxVUwgPDwgMjIpKSAqIHNpemVvZihwZ2Rf
dCkpKSA/IF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0KCgocGdkKSksKCgweDAxMDEwMTAx
VUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKCgoKCgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkp
KS8oMVVMIDw8IDIyKSkgKiBzaXplb2YocGdkX3QpKSkpIDogX19jb25zdGFudF9jX21lbXNldCgo
KHBnZCkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoKCgoKHVuc2lnbmVk
IGxvbmcpKDB4QzAwMDAwMDApKSkvKDFVTCA8PCAyMikpICogc2l6ZW9mKHBnZF90KSkpKSkgOiAo
X19idWlsdGluX2NvbnN0YW50X3AoKCgoKCh1bnNpZ25lZCBsb25nKSgweEMwMDAwMDAwKSkpLygx
VUwgPDwgMjIpKSAqIHNpemVvZihwZ2RfdCkpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgocGdkKSkp
LCgoKDApKSksKCgoKCgoKHVuc2lnbmVkIGxvbmcpKDB4QzAwMDAwMDApKSkvKDFVTCA8PCAyMikp
ICogc2l6ZW9mKHBnZF90KSkpKSkgOiBfX21lbXNldF9nZW5lcmljKCgocGdkKSksKCgwKSksKCgo
KCgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKS8oMVVMIDw8IDIyKSkgKiBzaXplb2YocGdk
X3QpKSkpKSk7CiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoKDEwMjQgLSAo
KCgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKS8oMVVMIDw8IDIyKSkpICogc2l6ZW9mKHBn
ZF90KSkgPyBfX2NvbnN0YW50X21lbWNweSgocGdkICsgKCgoKHVuc2lnbmVkIGxvbmcpKDB4QzAw
MDAwMDApKSkvKDFVTCA8PCAyMikpKSwoc3dhcHBlcl9wZ19kaXIgKyAoKCgodW5zaWduZWQgbG9u
ZykoMHhDMDAwMDAwMCkpKS8oMVVMIDw8IDIyKSkpLCgoMTAyNCAtICgoKCh1bnNpZ25lZCBsb25n
KSgweEMwMDAwMDAwKSkpLygxVUwgPDwgMjIpKSkgKiBzaXplb2YocGdkX3QpKSkgOiBfX21lbWNw
eSgocGdkICsgKCgoKHVuc2lnbmVkIGxvbmcpKDB4QzAwMDAwMDApKSkvKDFVTCA8PCAyMikpKSwo
c3dhcHBlcl9wZ19kaXIgKyAoKCgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKS8oMVVMIDw8
IDIyKSkpLCgoMTAyNCAtICgoKCh1bnNpZ25lZCBsb25nKSgweEMwMDAwMDAwKSkpLygxVUwgPDwg
MjIpKSkgKiBzaXplb2YocGdkX3QpKSkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcGdkOwp9
CgoKCnN0YXRpYyBfX2lubGluZV9fIHBnZF90ICpnZXRfcGdkX2Zhc3Qodm9pZCkKewogICAgICAg
IHVuc2lnbmVkIGxvbmcgKnJldDsKCiAgICAgICAgaWYgKChyZXQgPSAoYm9vdF9jcHVfZGF0YS5w
Z2RfcXVpY2spKSAhPSAoKHZvaWQgKikwKSkgewogICAgICAgICAgICAgICAgKGJvb3RfY3B1X2Rh
dGEucGdkX3F1aWNrKSA9ICh1bnNpZ25lZCBsb25nICopKCpyZXQpOwogICAgICAgICAgICAgICAg
cmV0WzBdID0gMDsKICAgICAgICAgICAgICAgIChib290X2NwdV9kYXRhLnBndGFibGVfY2FjaGVf
c3opLS07CiAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICByZXQgPSAodW5zaWduZWQgbG9u
ZyAqKWdldF9wZ2Rfc2xvdygpOwogICAgICAgIHJldHVybiAocGdkX3QgKilyZXQ7Cn0KCnN0YXRp
YyBfX2lubGluZV9fIHZvaWQgZnJlZV9wZ2RfZmFzdChwZ2RfdCAqcGdkKQp7CiAgICAgICAgKih1
bnNpZ25lZCBsb25nICopcGdkID0gKHVuc2lnbmVkIGxvbmcpIChib290X2NwdV9kYXRhLnBnZF9x
dWljayk7CiAgICAgICAgKGJvb3RfY3B1X2RhdGEucGdkX3F1aWNrKSA9ICh1bnNpZ25lZCBsb25n
ICopIHBnZDsKICAgICAgICAoYm9vdF9jcHVfZGF0YS5wZ3RhYmxlX2NhY2hlX3N6KSsrOwp9Cgpz
dGF0aWMgX19pbmxpbmVfXyB2b2lkIGZyZWVfcGdkX3Nsb3cocGdkX3QgKnBnZCkKewoKCgoKCgoK
ICAgICAgICBmcmVlX3BhZ2VzKCgodW5zaWduZWQgbG9uZylwZ2QpLDApOwoKfQoKc3RhdGljIGlu
bGluZSBwdGVfdCAqcHRlX2FsbG9jX29uZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQg
bG9uZyBhZGRyZXNzKQp7CiAgICAgICAgcHRlX3QgKnB0ZTsKCiAgICAgICAgcHRlID0gKHB0ZV90
ICopIF9fZ2V0X2ZyZWVfcGFnZXMoKCgweDIwIHwgMHgxMCB8IDB4NDAgfCAweDgwIHwgMHgxMDAp
KSwwKTsKICAgICAgICBpZiAocHRlKQogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFu
dF9wKDApID8gKF9fYnVpbHRpbl9jb25zdGFudF9wKCgoMVVMIDw8IDEyKSkpID8gX19jb25zdGFu
dF9jX2FuZF9jb3VudF9tZW1zZXQoKCgodm9pZCAqKShwdGUpKSksKCgweDAxMDEwMTAxVUwqKHVu
c2lnbmVkIGNoYXIpKDApKSksKCgoMVVMIDw8IDEyKSkpKSA6IF9fY29uc3RhbnRfY19tZW1zZXQo
KCgodm9pZCAqKShwdGUpKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKCgo
MVVMIDw8IDEyKSkpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKCgxVUwgPDwgMTIpKSkgPyBf
X21lbXNldF9nZW5lcmljKCgoKCh2b2lkICopKHB0ZSkpKSksKCgoMCkpKSwoKCgoMVVMIDw8IDEy
KSkpKSkgOiBfX21lbXNldF9nZW5lcmljKCgoKHZvaWQgKikocHRlKSkpLCgoMCkpLCgoKDFVTCA8
PCAxMikpKSkpKTsKICAgICAgICByZXR1cm4gcHRlOwp9CgpzdGF0aWMgaW5saW5lIHB0ZV90ICpw
dGVfYWxsb2Nfb25lX2Zhc3Qoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRk
cmVzcykKewogICAgICAgIHVuc2lnbmVkIGxvbmcgKnJldDsKCiAgICAgICAgaWYgKChyZXQgPSAo
dW5zaWduZWQgbG9uZyAqKShib290X2NwdV9kYXRhLnB0ZV9xdWljaykpICE9ICgodm9pZCAqKTAp
KSB7CiAgICAgICAgICAgICAgICAoYm9vdF9jcHVfZGF0YS5wdGVfcXVpY2spID0gKHVuc2lnbmVk
IGxvbmcgKikoKnJldCk7CiAgICAgICAgICAgICAgICByZXRbMF0gPSByZXRbMV07CiAgICAgICAg
ICAgICAgICAoYm9vdF9jcHVfZGF0YS5wZ3RhYmxlX2NhY2hlX3N6KS0tOwogICAgICAgIH0KICAg
ICAgICByZXR1cm4gKHB0ZV90ICopcmV0Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHB0ZV9m
cmVlX2Zhc3QocHRlX3QgKnB0ZSkKewogICAgICAgICoodW5zaWduZWQgbG9uZyAqKXB0ZSA9ICh1
bnNpZ25lZCBsb25nKSAoYm9vdF9jcHVfZGF0YS5wdGVfcXVpY2spOwogICAgICAgIChib290X2Nw
dV9kYXRhLnB0ZV9xdWljaykgPSAodW5zaWduZWQgbG9uZyAqKSBwdGU7CiAgICAgICAgKGJvb3Rf
Y3B1X2RhdGEucGd0YWJsZV9jYWNoZV9zeikrKzsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBw
dGVfZnJlZV9zbG93KHB0ZV90ICpwdGUpCnsKICAgICAgICBmcmVlX3BhZ2VzKCgodW5zaWduZWQg
bG9uZylwdGUpLDApOwp9CiMgMTUzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wZ2FsbG9j
LmgiCmV4dGVybiBpbnQgZG9fY2hlY2tfcGd0X2NhY2hlKGludCwgaW50KTsKIyAxNzUgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BnYWxsb2MuaCIKc3RhdGljIGlubGluZSB2b2lkIGZsdXNo
X3RsYl9tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSkKewogICAgICAgIGlmIChtbSA9PSBnZXRfY3Vy
cmVudCgpLT5hY3RpdmVfbW0pCiAgICAgICAgICAgICAgICBkbyB7IHVuc2lnbmVkIGludCB0bXBy
ZWc7IF9fYXNtX18gX192b2xhdGlsZV9fKCAibW92bCAlJWNyMywgJTA7ICAjIGZsdXNoIFRMQiBc
biIgIm1vdmwgJTAsICUlY3IzOyAgICAgICAgICAgICAgXG4iIDogIj1yIiAodG1wcmVnKSA6OiAi
bWVtb3J5Iik7IH0gd2hpbGUgKDApOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgZmx1c2hfdGxiX3Bh
Z2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAgICAgICAgdW5zaWduZWQgbG9uZyBhZGRy
KQp7CiAgICAgICAgaWYgKHZtYS0+dm1fbW0gPT0gZ2V0X2N1cnJlbnQoKS0+YWN0aXZlX21tKQog
ICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oImludmxwZyAlMCI6IDoibSIgKCoo
Y2hhciAqKSBhZGRyKSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaF90bGJfcmFuZ2Uoc3Ry
dWN0IG1tX3N0cnVjdCAqbW0sCiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQg
bG9uZyBlbmQpCnsKICAgICAgICBpZiAobW0gPT0gZ2V0X2N1cnJlbnQoKS0+YWN0aXZlX21tKQog
ICAgICAgICAgICAgICAgZG8geyB1bnNpZ25lZCBpbnQgdG1wcmVnOyBfX2FzbV9fIF9fdm9sYXRp
bGVfXyggIm1vdmwgJSVjcjMsICUwOyAgIyBmbHVzaCBUTEIgXG4iICJtb3ZsICUwLCAlJWNyMzsg
ICAgICAgICAgICAgIFxuIiA6ICI9ciIgKHRtcHJlZykgOjogIm1lbW9yeSIpOyB9IHdoaWxlICgw
KTsKfQojIDIyNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcGdhbGxvYy5oIgpzdGF0aWMg
aW5saW5lIHZvaWQgZmx1c2hfdGxiX3BndGFibGVzKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVu
c2lnbmVkIGxvbmcgZW5kKQp7Cgp9CiMgNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9o
aWdobWVtLmgiIDIKIyAzMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9oaWdobWVtLmgi
CnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IG5yX2ZyZWVfaGlnaHBhZ2VzKHZvaWQpIHsgcmV0
dXJuIDA7IH0KCnN0YXRpYyBpbmxpbmUgdm9pZCAqa21hcChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBy
ZXR1cm4gKChwYWdlKS0+dmlydHVhbCk7IH0KIyA0NiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9oaWdobWVtLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBjbGVhcl91c2VyX2hpZ2hwYWdlKHN0
cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIHZhZGRyKQp7CiAgICAgICAgdm9pZCAqYWRk
ciA9IGttYXAocGFnZSk7CiAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDApID8gKF9fYnVp
bHRpbl9jb25zdGFudF9wKCgoMVVMIDw8IDEyKSkpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9t
ZW1zZXQoKCgodm9pZCAqKShhZGRyKSkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgw
KSkpLCgoKDFVTCA8PCAxMikpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoKHZvaWQgKikoYWRk
cikpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKCgxVUwgPDwgMTIpKSkp
KSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoKDFVTCA8PCAxMikpKSA/IF9fbWVtc2V0X2dlbmVy
aWMoKCgoKHZvaWQgKikoYWRkcikpKSksKCgoMCkpKSwoKCgoMVVMIDw8IDEyKSkpKSkgOiBfX21l
bXNldF9nZW5lcmljKCgoKHZvaWQgKikoYWRkcikpKSwoKDApKSwoKCgxVUwgPDwgMTIpKSkpKSk7
CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGNsZWFyX2hp
Z2hwYWdlKHN0cnVjdCBwYWdlICpwYWdlKQp7CiAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9w
KDApID8gKF9fYnVpbHRpbl9jb25zdGFudF9wKCgoMVVMIDw8IDEyKSkpID8gX19jb25zdGFudF9j
X2FuZF9jb3VudF9tZW1zZXQoKCgodm9pZCAqKShrbWFwKHBhZ2UpKSkpLCgoMHgwMTAxMDEwMVVM
Kih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoKDFVTCA8PCAxMikpKSkgOiBfX2NvbnN0YW50X2NfbWVt
c2V0KCgoKHZvaWQgKikoa21hcChwYWdlKSkpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hh
cikoMCkpKSwoKCgxVUwgPDwgMTIpKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoKDFVTCA8
PCAxMikpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgoKHZvaWQgKikoa21hcChwYWdlKSkpKSksKCgo
MCkpKSwoKCgoMVVMIDw8IDEyKSkpKSkgOiBfX21lbXNldF9nZW5lcmljKCgoKHZvaWQgKikoa21h
cChwYWdlKSkpKSwoKDApKSwoKCgxVUwgPDwgMTIpKSkpKSk7CiAgICAgICAgZG8geyB9IHdoaWxl
ICgwKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIG1lbWNsZWFyX2hpZ2hwYWdlKHN0cnVjdCBwYWdl
ICpwYWdlLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgc2l6ZSkKewogICAgICAg
IGNoYXIgKmthZGRyOwoKICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZSA+ICgxVUwgPDwgMTIpKQog
ICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwog
ICAgICAgIGthZGRyID0ga21hcChwYWdlKTsKICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3Ao
MCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemUpKSA/IF9fY29uc3RhbnRfY19hbmRfY291
bnRfbWVtc2V0KCgoa2FkZHIgKyBvZmZzZXQpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hh
cikoMCkpKSwoKHNpemUpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoa2FkZHIgKyBvZmZzZXQp
KSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemUpKSkpIDogKF9fYnVp
bHRpbl9jb25zdGFudF9wKChzaXplKSkgPyBfX21lbXNldF9nZW5lcmljKCgoKGthZGRyICsgb2Zm
c2V0KSkpLCgoKDApKSksKCgoc2l6ZSkpKSkgOiBfX21lbXNldF9nZW5lcmljKCgoa2FkZHIgKyBv
ZmZzZXQpKSwoKDApKSwoKHNpemUpKSkpKTsKICAgICAgICBkbyB7IH0gd2hpbGUgKDApOwp9CgoK
CgpzdGF0aWMgaW5saW5lIHZvaWQgbWVtY2xlYXJfaGlnaHBhZ2VfZmx1c2goc3RydWN0IHBhZ2Ug
KnBhZ2UsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBzaXplKQp7CiAgICAgICAg
Y2hhciAqa2FkZHI7CgogICAgICAgIGlmIChvZmZzZXQgKyBzaXplID4gKDFVTCA8PCAxMikpCiAg
ICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiLmJ5dGUgMHgwZiwweDBiIik7CiAg
ICAgICAga2FkZHIgPSBrbWFwKHBhZ2UpOwogICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgw
KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZSkpID8gX19jb25zdGFudF9jX2FuZF9jb3Vu
dF9tZW1zZXQoKChrYWRkciArIG9mZnNldCkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFy
KSgwKSkpLCgoc2l6ZSkpKSA6IF9fY29uc3RhbnRfY19tZW1zZXQoKChrYWRkciArIG9mZnNldCkp
LCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoc2l6ZSkpKSkgOiAoX19idWls
dGluX2NvbnN0YW50X3AoKHNpemUpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgoa2FkZHIgKyBvZmZz
ZXQpKSksKCgoMCkpKSwoKChzaXplKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKChrYWRkciArIG9m
ZnNldCkpLCgoMCkpLCgoc2l6ZSkpKSkpOwogICAgICAgIGRvIHsgfSB3aGlsZSAoMCk7CiAgICAg
ICAgZG8geyB9IHdoaWxlICgwKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGNvcHlfdXNlcl9oaWdo
cGFnZShzdHJ1Y3QgcGFnZSAqdG8sIHN0cnVjdCBwYWdlICpmcm9tLCB1bnNpZ25lZCBsb25nIHZh
ZGRyKQp7CiAgICAgICAgY2hhciAqdmZyb20sICp2dG87CgogICAgICAgIHZmcm9tID0ga21hcChm
cm9tKTsKICAgICAgICB2dG8gPSBrbWFwKHRvKTsKICAgICAgICAoX19idWlsdGluX2NvbnN0YW50
X3AoKDFVTCA8PCAxMikpID8gX19jb25zdGFudF9tZW1jcHkoKCh2b2lkICopKHZ0bykpLCgodm9p
ZCAqKSh2ZnJvbSkpLCgoMVVMIDw8IDEyKSkpIDogX19tZW1jcHkoKCh2b2lkICopKHZ0bykpLCgo
dm9pZCAqKSh2ZnJvbSkpLCgoMVVMIDw8IDEyKSkpKTsKICAgICAgICBkbyB7IH0gd2hpbGUgKDAp
OwogICAgICAgIGRvIHsgfSB3aGlsZSAoMCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBjb3B5X2hp
Z2hwYWdlKHN0cnVjdCBwYWdlICp0bywgc3RydWN0IHBhZ2UgKmZyb20pCnsKICAgICAgICBjaGFy
ICp2ZnJvbSwgKnZ0bzsKCiAgICAgICAgdmZyb20gPSBrbWFwKGZyb20pOwogICAgICAgIHZ0byA9
IGttYXAodG8pOwogICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgoMVVMIDw8IDEyKSkgPyBf
X2NvbnN0YW50X21lbWNweSgoKHZvaWQgKikodnRvKSksKCh2b2lkICopKHZmcm9tKSksKCgxVUwg
PDwgMTIpKSkgOiBfX21lbWNweSgoKHZvaWQgKikodnRvKSksKCh2b2lkICopKHZmcm9tKSksKCgx
VUwgPDwgMTIpKSkpOwogICAgICAgIGRvIHsgfSB3aGlsZSAoMCk7CiAgICAgICAgZG8geyB9IHdo
aWxlICgwKTsKfQojIDI4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIiAy
CiMgODUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0cnVjdCBuZl9j
b25udHJhY2sgewogICAgICAgIGF0b21pY190IHVzZTsKICAgICAgICB2b2lkICgqZGVzdHJveSko
c3RydWN0IG5mX2Nvbm50cmFjayAqKTsKfTsKCnN0cnVjdCBuZl9jdF9pbmZvIHsKICAgICAgICBz
dHJ1Y3QgbmZfY29ubnRyYWNrICptYXN0ZXI7Cn07CgoKc3RydWN0IHNrX2J1ZmZfaGVhZCB7Cgog
ICAgICAgIHN0cnVjdCBza19idWZmICogbmV4dDsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqIHBy
ZXY7CgogICAgICAgIF9fdTMyIHFsZW47CiAgICAgICAgc3BpbmxvY2tfdCBsb2NrOwp9OwoKc3Ry
dWN0IHNrX2J1ZmY7CgoKCnR5cGVkZWYgc3RydWN0IHNrYl9mcmFnX3N0cnVjdCBza2JfZnJhZ190
OwoKc3RydWN0IHNrYl9mcmFnX3N0cnVjdAp7CiAgICAgICAgc3RydWN0IHBhZ2UgKnBhZ2U7CiAg
ICAgICAgX191MTYgcGFnZV9vZmZzZXQ7CiAgICAgICAgX191MTYgc2l6ZTsKfTsKCgoKCnN0cnVj
dCBza2Jfc2hhcmVkX2luZm8gewogICAgICAgIGF0b21pY190IGRhdGFyZWY7CiAgICAgICAgdW5z
aWduZWQgaW50IG5yX2ZyYWdzOwogICAgICAgIHN0cnVjdCBza19idWZmICpmcmFnX2xpc3Q7CiAg
ICAgICAgc2tiX2ZyYWdfdCBmcmFnc1s2XTsKfTsKCnN0cnVjdCBza19idWZmIHsKCiAgICAgICAg
c3RydWN0IHNrX2J1ZmYgKiBuZXh0OwogICAgICAgIHN0cnVjdCBza19idWZmICogcHJldjsKCiAg
ICAgICAgc3RydWN0IHNrX2J1ZmZfaGVhZCAqIGxpc3Q7CiAgICAgICAgc3RydWN0IHNvY2sgKnNr
OwogICAgICAgIHN0cnVjdCB0aW1ldmFsIHN0YW1wOwogICAgICAgIHN0cnVjdCBuZXRfZGV2aWNl
ICpkZXY7CgoKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB0
Y3BoZHIgKnRoOwogICAgICAgICAgICAgICAgc3RydWN0IHVkcGhkciAqdWg7CiAgICAgICAgICAg
ICAgICBzdHJ1Y3QgaWNtcGhkciAqaWNtcGg7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaWdtcGhk
ciAqaWdtcGg7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaXBoZHIgKmlwaXBoOwogICAgICAgICAg
ICAgICAgc3RydWN0IHNweGhkciAqc3B4aDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIg
KnJhdzsKICAgICAgICB9IGg7CgoKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAg
ICAgIHN0cnVjdCBpcGhkciAqaXBoOwogICAgICAgICAgICAgICAgc3RydWN0IGlwdjZoZHIgKmlw
djZoOwogICAgICAgICAgICAgICAgc3RydWN0IGFycGhkciAqYXJwaDsKICAgICAgICAgICAgICAg
IHN0cnVjdCBpcHhoZHIgKmlweGg7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpyYXc7
CiAgICAgICAgfSBuaDsKCgogICAgICAgIHVuaW9uCiAgICAgICAgewogICAgICAgICAgICAgICAg
c3RydWN0IGV0aGhkciAqZXRoZXJuZXQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpy
YXc7CiAgICAgICAgfSBtYWM7CgogICAgICAgIHN0cnVjdCBkc3RfZW50cnkgKmRzdDsKCgoKCgoK
CiAgICAgICAgY2hhciBjYls0OF07CgogICAgICAgIHVuc2lnbmVkIGludCBsZW47CiAgICAgICAg
dW5zaWduZWQgaW50IGRhdGFfbGVuOwogICAgICAgIHVuc2lnbmVkIGludCBjc3VtOwogICAgICAg
IHVuc2lnbmVkIGNoYXIgX191bnVzZWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGNsb25lZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgcGt0X3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAg
IGlwX3N1bW1lZDsKICAgICAgICBfX3UzMiBwcmlvcml0eTsKICAgICAgICBhdG9taWNfdCB1c2Vy
czsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBwcm90b2NvbDsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBzZWN1cml0eTsKICAgICAgICB1bnNpZ25lZCBpbnQgdHJ1ZXNpemU7CgogICAgICAgIHVuc2ln
bmVkIGNoYXIgKmhlYWQ7CiAgICAgICAgdW5zaWduZWQgY2hhciAqZGF0YTsKICAgICAgICB1bnNp
Z25lZCBjaGFyICp0YWlsOwogICAgICAgIHVuc2lnbmVkIGNoYXIgKmVuZDsKCiAgICAgICAgdm9p
ZCAoKmRlc3RydWN0b3IpKHN0cnVjdCBza19idWZmICopOwoKCiAgICAgICAgdW5zaWduZWQgbG9u
ZyBuZm1hcms7CgogICAgICAgIF9fdTMyIG5mY2FjaGU7CgogICAgICAgIHN0cnVjdCBuZl9jdF9p
bmZvICpuZmN0OwoKICAgICAgICB1bnNpZ25lZCBpbnQgbmZfZGVidWc7CiMgMjE2ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgp9OwojIDIyNSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9za2J1ZmYuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3NsYWIuaCIgMQojIDIyNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIg
MgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMQojIDIyOCAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIgMgoKZXh0ZXJuIHZvaWQgX19rZnJl
ZV9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYik7CmV4dGVybiBzdHJ1Y3Qgc2tfYnVmZiAqIGFsbG9j
X3NrYih1bnNpZ25lZCBpbnQgc2l6ZSwgaW50IHByaW9yaXR5KTsKZXh0ZXJuIHZvaWQga2ZyZWVf
c2tibWVtKHN0cnVjdCBza19idWZmICpza2IpOwpleHRlcm4gc3RydWN0IHNrX2J1ZmYgKiBza2Jf
Y2xvbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHByaW9yaXR5KTsKZXh0ZXJuIHN0cnVjdCBz
a19idWZmICogc2tiX2NvcHkoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHByaW9yaXR5
KTsKZXh0ZXJuIHN0cnVjdCBza19idWZmICogcHNrYl9jb3B5KHN0cnVjdCBza19idWZmICpza2Is
IGludCBnZnBfbWFzayk7CmV4dGVybiBpbnQgcHNrYl9leHBhbmRfaGVhZChzdHJ1Y3Qgc2tfYnVm
ZiAqc2tiLCBpbnQgbmhlYWQsIGludCBudGFpbCwgaW50IGdmcF9tYXNrKTsKZXh0ZXJuIHN0cnVj
dCBza19idWZmICogc2tiX3JlYWxsb2NfaGVhZHJvb20oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5z
aWduZWQgaW50IGhlYWRyb29tKTsKZXh0ZXJuIHN0cnVjdCBza19idWZmICogc2tiX2NvcHlfZXhw
YW5kKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBuZXdoZWFkcm9vbSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5ld3RhaWxyb29tLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcHJpb3JpdHkpOwoKZXh0
ZXJuIHZvaWQgc2tiX292ZXJfcGFuaWMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGxlbiwgdm9p
ZCAqaGVyZSk7CmV4dGVybiB2b2lkIHNrYl91bmRlcl9wYW5pYyhzdHJ1Y3Qgc2tfYnVmZiAqc2ti
LCBpbnQgbGVuLCB2b2lkICpoZXJlKTsKIyAyNTUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgaW50IHNrYl9xdWV1ZV9lbXB0eShzdHJ1Y3Qgc2tf
YnVmZl9oZWFkICpsaXN0KQp7CiAgICAgICAgcmV0dXJuIChsaXN0LT5uZXh0ID09IChzdHJ1Y3Qg
c2tfYnVmZiAqKSBsaXN0KTsKfQojIDI2OCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9z
a2J1ZmYuaCIKc3RhdGljIGlubGluZSBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2dldChzdHJ1Y3Qgc2tf
YnVmZiAqc2tiKQp7CiAgICAgICAgYXRvbWljX2luYygmc2tiLT51c2Vycyk7CiAgICAgICAgcmV0
dXJuIHNrYjsKfQojIDI4NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIK
c3RhdGljIGlubGluZSB2b2lkIGtmcmVlX3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQp7CiAgICAg
ICAgaWYgKCgoJnNrYi0+dXNlcnMpLT5jb3VudGVyKSA9PSAxIHx8IGF0b21pY19kZWNfYW5kX3Rl
c3QoJnNrYi0+dXNlcnMpKQogICAgICAgICAgICAgICAgX19rZnJlZV9za2Ioc2tiKTsKfQoKCnN0
YXRpYyBpbmxpbmUgdm9pZCBrZnJlZV9za2JfZmFzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQp7CiAg
ICAgICAgaWYgKCgoJnNrYi0+dXNlcnMpLT5jb3VudGVyKSA9PSAxIHx8IGF0b21pY19kZWNfYW5k
X3Rlc3QoJnNrYi0+dXNlcnMpKQogICAgICAgICAgICAgICAga2ZyZWVfc2tibWVtKHNrYik7Cn0K
IyAzMDkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxp
bmUgaW50IHNrYl9jbG9uZWQoc3RydWN0IHNrX2J1ZmYgKnNrYikKewogICAgICAgIHJldHVybiBz
a2ItPmNsb25lZCAmJiAoKCYoKHN0cnVjdCBza2Jfc2hhcmVkX2luZm8gKikoKHNrYiktPmVuZCkp
LT5kYXRhcmVmKS0+Y291bnRlcikgIT0gMTsKfQojIDMyMiAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSBpbnQgc2tiX3NoYXJlZChzdHJ1Y3Qgc2tf
YnVmZiAqc2tiKQp7CiAgICAgICAgcmV0dXJuICgoKCZza2ItPnVzZXJzKS0+Y291bnRlcikgIT0g
MSk7Cn0KIyAzNDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRp
YyBpbmxpbmUgc3RydWN0IHNrX2J1ZmYgKnNrYl9zaGFyZV9jaGVjayhzdHJ1Y3Qgc2tfYnVmZiAq
c2tiLCBpbnQgcHJpKQp7CiAgICAgICAgaWYgKHNrYl9zaGFyZWQoc2tiKSkgewogICAgICAgICAg
ICAgICAgc3RydWN0IHNrX2J1ZmYgKm5za2I7CiAgICAgICAgICAgICAgICBuc2tiID0gc2tiX2Ns
b25lKHNrYiwgcHJpKTsKICAgICAgICAgICAgICAgIGtmcmVlX3NrYihza2IpOwogICAgICAgICAg
ICAgICAgcmV0dXJuIG5za2I7CiAgICAgICAgfQogICAgICAgIHJldHVybiBza2I7Cn0KIyAzNzQg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgc3Ry
dWN0IHNrX2J1ZmYgKnNrYl91bnNoYXJlKHN0cnVjdCBza19idWZmICpza2IsIGludCBwcmkpCnsK
ICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqbnNrYjsKICAgICAgICBpZighc2tiX2Nsb25lZChza2Ip
KQogICAgICAgICAgICAgICAgcmV0dXJuIHNrYjsKICAgICAgICBuc2tiPXNrYl9jb3B5KHNrYiwg
cHJpKTsKICAgICAgICBrZnJlZV9za2Ioc2tiKTsKICAgICAgICByZXR1cm4gbnNrYjsKfQojIDM5
OCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSBz
dHJ1Y3Qgc2tfYnVmZiAqc2tiX3BlZWsoc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdF8pCnsKICAg
ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqbGlzdCA9ICgoc3RydWN0IHNrX2J1ZmYgKilsaXN0XyktPm5l
eHQ7CiAgICAgICAgaWYgKGxpc3QgPT0gKHN0cnVjdCBza19idWZmICopbGlzdF8pCiAgICAgICAg
ICAgICAgICBsaXN0ID0gKCh2b2lkICopMCk7CiAgICAgICAgcmV0dXJuIGxpc3Q7Cn0KIyA0MjAg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgc3Ry
dWN0IHNrX2J1ZmYgKnNrYl9wZWVrX3RhaWwoc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdF8pCnsK
ICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqbGlzdCA9ICgoc3RydWN0IHNrX2J1ZmYgKilsaXN0Xykt
PnByZXY7CiAgICAgICAgaWYgKGxpc3QgPT0gKHN0cnVjdCBza19idWZmICopbGlzdF8pCiAgICAg
ICAgICAgICAgICBsaXN0ID0gKCh2b2lkICopMCk7CiAgICAgICAgcmV0dXJuIGxpc3Q7Cn0KIyA0
MzUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUg
X191MzIgc2tiX3F1ZXVlX2xlbihzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0XykKewogICAgICAg
IHJldHVybihsaXN0Xy0+cWxlbik7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBza2JfcXVldWVfaGVh
ZF9pbml0KHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QpCnsKICAgICAgICBkbyB7IH0gd2hpbGUo
MCk7CiAgICAgICAgbGlzdC0+cHJldiA9IChzdHJ1Y3Qgc2tfYnVmZiAqKWxpc3Q7CiAgICAgICAg
bGlzdC0+bmV4dCA9IChzdHJ1Y3Qgc2tfYnVmZiAqKWxpc3Q7CiAgICAgICAgbGlzdC0+cWxlbiA9
IDA7Cn0KIyA0NjYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRp
YyBpbmxpbmUgdm9pZCBfX3NrYl9xdWV1ZV9oZWFkKHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3Qs
IHN0cnVjdCBza19idWZmICpuZXdzaykKewogICAgICAgIHN0cnVjdCBza19idWZmICpwcmV2LCAq
bmV4dDsKCiAgICAgICAgbmV3c2stPmxpc3QgPSBsaXN0OwogICAgICAgIGxpc3QtPnFsZW4rKzsK
ICAgICAgICBwcmV2ID0gKHN0cnVjdCBza19idWZmICopbGlzdDsKICAgICAgICBuZXh0ID0gcHJl
di0+bmV4dDsKICAgICAgICBuZXdzay0+bmV4dCA9IG5leHQ7CiAgICAgICAgbmV3c2stPnByZXYg
PSBwcmV2OwogICAgICAgIG5leHQtPnByZXYgPSBuZXdzazsKICAgICAgICBwcmV2LT5uZXh0ID0g
bmV3c2s7Cn0KIyA0OTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0
YXRpYyBpbmxpbmUgdm9pZCBza2JfcXVldWVfaGVhZChzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0
LCBzdHJ1Y3Qgc2tfYnVmZiAqbmV3c2spCnsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwoK
ICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIDsgY2xp
IjoiPWciIChmbGFncyk6IDoibWVtb3J5Iik7ICh2b2lkKSgmbGlzdC0+bG9jayk7IH0gd2hpbGUg
KDApOwogICAgICAgIF9fc2tiX3F1ZXVlX2hlYWQobGlzdCwgbmV3c2spOwogICAgICAgIGRvIHsg
ZG8geyB9IHdoaWxlKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6
IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDApOwp9CiMgNTE0ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHZvaWQgX19z
a2JfcXVldWVfdGFpbChzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0LCBzdHJ1Y3Qgc2tfYnVmZiAq
bmV3c2spCnsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcHJldiwgKm5leHQ7CgogICAgICAgIG5l
d3NrLT5saXN0ID0gbGlzdDsKICAgICAgICBsaXN0LT5xbGVuKys7CiAgICAgICAgbmV4dCA9IChz
dHJ1Y3Qgc2tfYnVmZiAqKWxpc3Q7CiAgICAgICAgcHJldiA9IG5leHQtPnByZXY7CiAgICAgICAg
bmV3c2stPm5leHQgPSBuZXh0OwogICAgICAgIG5ld3NrLT5wcmV2ID0gcHJldjsKICAgICAgICBu
ZXh0LT5wcmV2ID0gbmV3c2s7CiAgICAgICAgcHJldi0+bmV4dCA9IG5ld3NrOwp9CiMgNTQwICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHZvaWQg
c2tiX3F1ZXVlX3RhaWwoc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCwgc3RydWN0IHNrX2J1ZmYg
Km5ld3NrKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCiAgICAgICAgZG8geyBfX2Fz
bV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxhZ3MpOiA6
Im1lbW9yeSIpOyAodm9pZCkoJmxpc3QtPmxvY2spOyB9IHdoaWxlICgwKTsKICAgICAgICBfX3Nr
Yl9xdWV1ZV90YWlsKGxpc3QsIG5ld3NrKTsKICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsg
X19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1l
bW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsKfQojIDU1OCAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSBzdHJ1Y3Qgc2tfYnVmZiAqX19za2JfZGVx
dWV1ZShzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0KQp7CiAgICAgICAgc3RydWN0IHNrX2J1ZmYg
Km5leHQsICpwcmV2LCAqcmVzdWx0OwoKICAgICAgICBwcmV2ID0gKHN0cnVjdCBza19idWZmICop
IGxpc3Q7CiAgICAgICAgbmV4dCA9IHByZXYtPm5leHQ7CiAgICAgICAgcmVzdWx0ID0gKCh2b2lk
ICopMCk7CiAgICAgICAgaWYgKG5leHQgIT0gcHJldikgewogICAgICAgICAgICAgICAgcmVzdWx0
ID0gbmV4dDsKICAgICAgICAgICAgICAgIG5leHQgPSBuZXh0LT5uZXh0OwogICAgICAgICAgICAg
ICAgbGlzdC0+cWxlbi0tOwogICAgICAgICAgICAgICAgbmV4dC0+cHJldiA9IHByZXY7CiAgICAg
ICAgICAgICAgICBwcmV2LT5uZXh0ID0gbmV4dDsKICAgICAgICAgICAgICAgIHJlc3VsdC0+bmV4
dCA9ICgodm9pZCAqKTApOwogICAgICAgICAgICAgICAgcmVzdWx0LT5wcmV2ID0gKCh2b2lkICop
MCk7CiAgICAgICAgICAgICAgICByZXN1bHQtPmxpc3QgPSAoKHZvaWQgKikwKTsKICAgICAgICB9
CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKfQojIDU4NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2RlcXVldWUo
c3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCkKewogICAgICAgIGxvbmcgZmxhZ3M7CiAgICAgICAg
c3RydWN0IHNrX2J1ZmYgKnJlc3VsdDsKCiAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVf
XygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxhZ3MpOiA6Im1lbW9yeSIpOyAodm9p
ZCkoJmxpc3QtPmxvY2spOyB9IHdoaWxlICgwKTsKICAgICAgICByZXN1bHQgPSBfX3NrYl9kZXF1
ZXVlKGxpc3QpOwogICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2FzbV9fIF9fdm9sYXRp
bGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7IH0g
d2hpbGUgKDApOwogICAgICAgIHJldHVybiByZXN1bHQ7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIHZv
aWQgX19za2JfaW5zZXJ0KHN0cnVjdCBza19idWZmICpuZXdzaywKICAgICAgICBzdHJ1Y3Qgc2tf
YnVmZiAqIHByZXYsIHN0cnVjdCBza19idWZmICpuZXh0LAogICAgICAgIHN0cnVjdCBza19idWZm
X2hlYWQgKiBsaXN0KQp7CiAgICAgICAgbmV3c2stPm5leHQgPSBuZXh0OwogICAgICAgIG5ld3Nr
LT5wcmV2ID0gcHJldjsKICAgICAgICBuZXh0LT5wcmV2ID0gbmV3c2s7CiAgICAgICAgcHJldi0+
bmV4dCA9IG5ld3NrOwogICAgICAgIG5ld3NrLT5saXN0ID0gbGlzdDsKICAgICAgICBsaXN0LT5x
bGVuKys7Cn0KIyA2MjQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0
YXRpYyBpbmxpbmUgdm9pZCBza2JfaW5zZXJ0KHN0cnVjdCBza19idWZmICpvbGQsIHN0cnVjdCBz
a19idWZmICpuZXdzaykKewogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CgogICAgICAgIGRv
IHsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBvcGwgJTAgOyBjbGkiOiI9ZyIgKGZs
YWdzKTogOiJtZW1vcnkiKTsgKHZvaWQpKCZvbGQtPmxpc3QtPmxvY2spOyB9IHdoaWxlICgwKTsK
ICAgICAgICBfX3NrYl9pbnNlcnQobmV3c2ssIG9sZC0+cHJldiwgb2xkLCBvbGQtPmxpc3QpOwog
ICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwg
JTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDApOwp9
CgoKCgoKc3RhdGljIGlubGluZSB2b2lkIF9fc2tiX2FwcGVuZChzdHJ1Y3Qgc2tfYnVmZiAqb2xk
LCBzdHJ1Y3Qgc2tfYnVmZiAqbmV3c2spCnsKICAgICAgICBfX3NrYl9pbnNlcnQobmV3c2ssIG9s
ZCwgb2xkLT5uZXh0LCBvbGQtPmxpc3QpOwp9CiMgNjUzICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHZvaWQgc2tiX2FwcGVuZChzdHJ1Y3Qgc2tf
YnVmZiAqb2xkLCBzdHJ1Y3Qgc2tfYnVmZiAqbmV3c2spCnsKICAgICAgICB1bnNpZ25lZCBsb25n
IGZsYWdzOwoKICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3Bs
ICUwIDsgY2xpIjoiPWciIChmbGFncyk6IDoibWVtb3J5Iik7ICh2b2lkKSgmb2xkLT5saXN0LT5s
b2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgX19za2JfYXBwZW5kKG9sZCwgbmV3c2spOwogICAg
ICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAg
OyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDApOwp9CgoK
CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3NrYl91bmxpbmsoc3RydWN0IHNrX2J1ZmYgKnNrYiwg
c3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCkKewogICAgICAgIHN0cnVjdCBza19idWZmICogbmV4
dCwgKiBwcmV2OwoKICAgICAgICBsaXN0LT5xbGVuLS07CiAgICAgICAgbmV4dCA9IHNrYi0+bmV4
dDsKICAgICAgICBwcmV2ID0gc2tiLT5wcmV2OwogICAgICAgIHNrYi0+bmV4dCA9ICgodm9pZCAq
KTApOwogICAgICAgIHNrYi0+cHJldiA9ICgodm9pZCAqKTApOwogICAgICAgIHNrYi0+bGlzdCA9
ICgodm9pZCAqKTApOwogICAgICAgIG5leHQtPnByZXYgPSBwcmV2OwogICAgICAgIHByZXYtPm5l
eHQgPSBuZXh0Owp9CiMgNjk0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5o
IgpzdGF0aWMgaW5saW5lIHZvaWQgc2tiX3VubGluayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQp7CiAg
ICAgICAgc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCA9IHNrYi0+bGlzdDsKCiAgICAgICAgaWYo
bGlzdCkgewogICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCiAgICAgICAgICAg
ICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIDsgY2xpIjoi
PWciIChmbGFncyk6IDoibWVtb3J5Iik7ICh2b2lkKSgmbGlzdC0+bG9jayk7IH0gd2hpbGUgKDAp
OwogICAgICAgICAgICAgICAgaWYoc2tiLT5saXN0ID09IGxpc3QpCiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fc2tiX3VubGluayhza2IsIHNrYi0+bGlzdCk7CiAgICAgICAgICAgICAgICBkbyB7
IGRvIHsgfSB3aGlsZSgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwi
OiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsKICAgICAgICB9Cn0K
IyA3MTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxp
bmUgc3RydWN0IHNrX2J1ZmYgKl9fc2tiX2RlcXVldWVfdGFpbChzdHJ1Y3Qgc2tfYnVmZl9oZWFk
ICpsaXN0KQp7CiAgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiA9IHNrYl9wZWVrX3RhaWwobGlz
dCk7CiAgICAgICAgaWYgKHNrYikKICAgICAgICAgICAgICAgIF9fc2tiX3VubGluayhza2IsIGxp
c3QpOwogICAgICAgIHJldHVybiBza2I7Cn0KIyA3MzYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgc3RydWN0IHNrX2J1ZmYgKnNrYl9kZXF1ZXVl
X3RhaWwoc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCkKewogICAgICAgIGxvbmcgZmxhZ3M7CiAg
ICAgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3VsdDsKCiAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9s
YXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxhZ3MpOiA6Im1lbW9yeSIp
OyAodm9pZCkoJmxpc3QtPmxvY2spOyB9IHdoaWxlICgwKTsKICAgICAgICByZXN1bHQgPSBfX3Nr
Yl9kZXF1ZXVlX3RhaWwobGlzdCk7CiAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IF9fYXNt
X18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnki
LCAiY2MiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKfQoKc3RhdGljIGlu
bGluZSBpbnQgc2tiX2lzX25vbmxpbmVhcihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQp7CiAg
ICAgICAgcmV0dXJuIHNrYi0+ZGF0YV9sZW47Cn0KCnN0YXRpYyBpbmxpbmUgaW50IHNrYl9oZWFk
bGVuKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpCnsKICAgICAgICByZXR1cm4gc2tiLT5sZW4g
LSBza2ItPmRhdGFfbGVuOwp9CiMgNzY1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Nr
YnVmZi5oIgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIgKl9fc2tiX3B1dChzdHJ1Y3Qgc2tf
YnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgbGVuKQp7CiAgICAgICAgdW5zaWduZWQgY2hhciAqdG1w
PXNrYi0+dGFpbDsKICAgICAgICBkbyB7IGlmIChza2JfaXNfbm9ubGluZWFyKHNrYikpIF9fYXNt
X18gX192b2xhdGlsZV9fKCIuYnl0ZSAweDBmLDB4MGIiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAg
c2tiLT50YWlsKz1sZW47CiAgICAgICAgc2tiLT5sZW4rPWxlbjsKICAgICAgICByZXR1cm4gdG1w
Owp9CiMgNzg0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMg
aW5saW5lIHVuc2lnbmVkIGNoYXIgKnNrYl9wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWdu
ZWQgaW50IGxlbikKewogICAgICAgIHVuc2lnbmVkIGNoYXIgKnRtcD1za2ItPnRhaWw7CiAgICAg
ICAgZG8geyBpZiAoc2tiX2lzX25vbmxpbmVhcihza2IpKSBfX2FzbV9fIF9fdm9sYXRpbGVfXygi
LmJ5dGUgMHgwZiwweDBiIik7IH0gd2hpbGUgKDApOwogICAgICAgIHNrYi0+dGFpbCs9bGVuOwog
ICAgICAgIHNrYi0+bGVuKz1sZW47CiAgICAgICAgaWYoc2tiLT50YWlsPnNrYi0+ZW5kKSB7CiAg
ICAgICAgICAgICAgICBza2Jfb3Zlcl9wYW5pYyhza2IsIGxlbiwgKHsgdm9pZCAqcGM7IF9fYXNt
X18oIm1vdmwgJDFmLCUwXG4xOiI6Ij1nIiAocGMpKTsgcGM7IH0pKTsKICAgICAgICB9CiAgICAg
ICAgcmV0dXJuIHRtcDsKfQoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyICpfX3NrYl9wdXNo
KHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4pCnsKICAgICAgICBza2ItPmRh
dGEtPWxlbjsKICAgICAgICBza2ItPmxlbis9bGVuOwogICAgICAgIHJldHVybiBza2ItPmRhdGE7
Cn0KIyA4MTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBp
bmxpbmUgdW5zaWduZWQgY2hhciAqc2tiX3B1c2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWdu
ZWQgaW50IGxlbikKewogICAgICAgIHNrYi0+ZGF0YS09bGVuOwogICAgICAgIHNrYi0+bGVuKz1s
ZW47CiAgICAgICAgaWYoc2tiLT5kYXRhPHNrYi0+aGVhZCkgewogICAgICAgICAgICAgICAgc2ti
X3VuZGVyX3BhbmljKHNrYiwgbGVuLCAoeyB2b2lkICpwYzsgX19hc21fXygibW92bCAkMWYsJTBc
bjE6IjoiPWciIChwYykpOyBwYzsgfSkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gc2tiLT5k
YXRhOwp9CgpzdGF0aWMgaW5saW5lIGNoYXIgKl9fc2tiX3B1bGwoc3RydWN0IHNrX2J1ZmYgKnNr
YiwgdW5zaWduZWQgaW50IGxlbikKewogICAgICAgIHNrYi0+bGVuLT1sZW47CiAgICAgICAgaWYg
KHNrYi0+bGVuIDwgc2tiLT5kYXRhX2xlbikKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xh
dGlsZV9fKCIuYnl0ZSAweDBmLDB4MGIiKTsKICAgICAgICByZXR1cm4gc2tiLT5kYXRhKz1sZW47
Cn0KIyA4NDIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBp
bmxpbmUgdW5zaWduZWQgY2hhciAqIHNrYl9wdWxsKHN0cnVjdCBza19idWZmICpza2IsIHVuc2ln
bmVkIGludCBsZW4pCnsKICAgICAgICBpZiAobGVuID4gc2tiLT5sZW4pCiAgICAgICAgICAgICAg
ICByZXR1cm4gKCh2b2lkICopMCk7CiAgICAgICAgcmV0dXJuIF9fc2tiX3B1bGwoc2tiLGxlbik7
Cn0KCmV4dGVybiB1bnNpZ25lZCBjaGFyICogX19wc2tiX3B1bGxfdGFpbChzdHJ1Y3Qgc2tfYnVm
ZiAqc2tiLCBpbnQgZGVsdGEpOwoKc3RhdGljIGlubGluZSBjaGFyICpfX3Bza2JfcHVsbChzdHJ1
Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgbGVuKQp7CiAgICAgICAgaWYgKGxlbiA+IHNr
Yl9oZWFkbGVuKHNrYikgJiYKICAgICAgICAgICAgX19wc2tiX3B1bGxfdGFpbChza2IsIGxlbi1z
a2JfaGVhZGxlbihza2IpKSA9PSAoKHZvaWQgKikwKSkKICAgICAgICAgICAgICAgIHJldHVybiAo
KHZvaWQgKikwKTsKICAgICAgICBza2ItPmxlbiAtPSBsZW47CiAgICAgICAgcmV0dXJuIHNrYi0+
ZGF0YSArPSBsZW47Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hhciAqIHBza2JfcHVsbChz
dHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgbGVuKQp7CiAgICAgICAgaWYgKGxlbiA+
IHNrYi0+bGVuKQogICAgICAgICAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAgICAgIHJl
dHVybiBfX3Bza2JfcHVsbChza2IsbGVuKTsKfQoKc3RhdGljIGlubGluZSBpbnQgcHNrYl9tYXlf
cHVsbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgbGVuKQp7CiAgICAgICAgaWYg
KGxlbiA8PSBza2JfaGVhZGxlbihza2IpKQogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAg
ICAgaWYgKGxlbiA+IHNrYi0+bGVuKQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
cmV0dXJuIChfX3Bza2JfcHVsbF90YWlsKHNrYiwgbGVuLXNrYl9oZWFkbGVuKHNrYikpICE9ICgo
dm9pZCAqKTApKTsKfQojIDg4MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYu
aCIKc3RhdGljIGlubGluZSBpbnQgc2tiX2hlYWRyb29tKGNvbnN0IHN0cnVjdCBza19idWZmICpz
a2IpCnsKICAgICAgICByZXR1cm4gc2tiLT5kYXRhLXNrYi0+aGVhZDsKfQojIDg5NSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSBpbnQgc2tiX3Rh
aWxyb29tKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpCnsKICAgICAgICByZXR1cm4gc2tiX2lz
X25vbmxpbmVhcihza2IpID8gMCA6IHNrYi0+ZW5kLXNrYi0+dGFpbDsKfQojIDkwOSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSB2b2lkIHNrYl9y
ZXNlcnZlKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4pCnsKICAgICAgICBz
a2ItPmRhdGErPWxlbjsKICAgICAgICBza2ItPnRhaWwrPWxlbjsKfQoKZXh0ZXJuIGludCBfX19w
c2tiX3RyaW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGxlbiwgaW50IHJlYWxs
b2MpOwoKc3RhdGljIGlubGluZSB2b2lkIF9fc2tiX3RyaW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwg
dW5zaWduZWQgaW50IGxlbikKewogICAgICAgIGlmICghc2tiLT5kYXRhX2xlbikgewogICAgICAg
ICAgICAgICAgc2tiLT5sZW4gPSBsZW47CiAgICAgICAgICAgICAgICBza2ItPnRhaWwgPSBza2It
PmRhdGErbGVuOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBfX19wc2tiX3RyaW0o
c2tiLCBsZW4sIDApOwogICAgICAgIH0KfQojIDkzNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSB2b2lkIHNrYl90cmltKHN0cnVjdCBza19idWZm
ICpza2IsIHVuc2lnbmVkIGludCBsZW4pCnsKICAgICAgICBpZiAoc2tiLT5sZW4gPiBsZW4pIHsK
ICAgICAgICAgICAgICAgIF9fc2tiX3RyaW0oc2tiLCBsZW4pOwogICAgICAgIH0KfQoKCnN0YXRp
YyBpbmxpbmUgaW50IF9fcHNrYl90cmltKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGlu
dCBsZW4pCnsKICAgICAgICBpZiAoIXNrYi0+ZGF0YV9sZW4pIHsKICAgICAgICAgICAgICAgIHNr
Yi0+bGVuID0gbGVuOwogICAgICAgICAgICAgICAgc2tiLT50YWlsID0gc2tiLT5kYXRhK2xlbjsK
ICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICByZXR1cm4gX19fcHNrYl90cmltKHNrYiwgbGVuLCAxKTsKICAgICAgICB9Cn0KCnN0YXRpYyBp
bmxpbmUgaW50IHBza2JfdHJpbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgbGVu
KQp7CiAgICAgICAgaWYgKGxlbiA8IHNrYi0+bGVuKQogICAgICAgICAgICAgICAgcmV0dXJuIF9f
cHNrYl90cmltKHNrYiwgbGVuKTsKICAgICAgICByZXR1cm4gMDsKfQojIDk3MiAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSB2b2lkIHNrYl9vcnBo
YW4oc3RydWN0IHNrX2J1ZmYgKnNrYikKewogICAgICAgIGlmIChza2ItPmRlc3RydWN0b3IpCiAg
ICAgICAgICAgICAgICBza2ItPmRlc3RydWN0b3Ioc2tiKTsKICAgICAgICBza2ItPmRlc3RydWN0
b3IgPSAoKHZvaWQgKikwKTsKICAgICAgICBza2ItPnNrID0gKCh2b2lkICopMCk7Cn0KIyA5OTAg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgdm9p
ZCBza2JfcXVldWVfcHVyZ2Uoc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCkKewogICAgICAgIHN0
cnVjdCBza19idWZmICpza2I7CiAgICAgICAgd2hpbGUgKChza2I9c2tiX2RlcXVldWUobGlzdCkp
IT0oKHZvaWQgKikwKSkKICAgICAgICAgICAgICAgIGtmcmVlX3NrYihza2IpOwp9CiMgMTAwNyAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSB2b2lk
IF9fc2tiX3F1ZXVlX3B1cmdlKHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QpCnsKICAgICAgICBz
dHJ1Y3Qgc2tfYnVmZiAqc2tiOwogICAgICAgIHdoaWxlICgoc2tiPV9fc2tiX2RlcXVldWUobGlz
dCkpIT0oKHZvaWQgKikwKSkKICAgICAgICAgICAgICAgIGtmcmVlX3NrYihza2IpOwp9CiMgMTAy
NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSBz
dHJ1Y3Qgc2tfYnVmZiAqX19kZXZfYWxsb2Nfc2tiKHVuc2lnbmVkIGludCBsZW5ndGgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZ2ZwX21hc2spCnsK
ICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwoKICAgICAgICBza2IgPSBhbGxvY19za2IobGVu
Z3RoKzE2LCBnZnBfbWFzayk7CiAgICAgICAgaWYgKHNrYikKICAgICAgICAgICAgICAgIHNrYl9y
ZXNlcnZlKHNrYiwxNik7CiAgICAgICAgcmV0dXJuIHNrYjsKfQojIDEwNTEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgc3RydWN0IHNrX2J1ZmYg
KmRldl9hbGxvY19za2IodW5zaWduZWQgaW50IGxlbmd0aCkKewogICAgICAgIHJldHVybiBfX2Rl
dl9hbGxvY19za2IobGVuZ3RoLCAoMHgyMCkpOwp9CiMgMTA2OSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSBpbnQKc2tiX2NvdyhzdHJ1Y3Qgc2tf
YnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgaGVhZHJvb20pCnsKICAgICAgICBpbnQgZGVsdGEgPSAo
aGVhZHJvb20gPiAxNiA/IGhlYWRyb29tIDogMTYpIC0gc2tiX2hlYWRyb29tKHNrYik7CgogICAg
ICAgIGlmIChkZWx0YSA8IDApCiAgICAgICAgICAgICAgICBkZWx0YSA9IDA7CgogICAgICAgIGlm
IChkZWx0YSB8fCBza2JfY2xvbmVkKHNrYikpCiAgICAgICAgICAgICAgICByZXR1cm4gcHNrYl9l
eHBhbmRfaGVhZChza2IsIChkZWx0YSsxNSkmfjE1LCAwLCAoMHgyMCkpOwogICAgICAgIHJldHVy
biAwOwp9CiMgMTA4OSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKaW50
IHNrYl9saW5lYXJpemUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGdmcCk7CgpzdGF0aWMgaW5s
aW5lIHZvaWQgKmttYXBfc2tiX2ZyYWcoY29uc3Qgc2tiX2ZyYWdfdCAqZnJhZykKewoKCgoKCgog
ICAgICAgIHJldHVybiBrbWFwKGZyYWctPnBhZ2UpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQga3Vu
bWFwX3NrYl9mcmFnKHZvaWQgKnZhZGRyKQp7CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsKCgoK
fQoKCgoKCgoKZXh0ZXJuIHN0cnVjdCBza19idWZmICogc2tiX3JlY3ZfZGF0YWdyYW0oc3RydWN0
IHNvY2sgKnNrLHVuc2lnbmVkIGZsYWdzLGludCBub2Jsb2NrLCBpbnQgKmVycik7CmV4dGVybiB1
bnNpZ25lZCBpbnQgZGF0YWdyYW1fcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHNvY2tl
dCAqc29jaywgc3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICp3YWl0KTsKZXh0ZXJuIGludCBza2Jf
Y29weV9kYXRhZ3JhbShjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqZnJvbSwgaW50IG9mZnNldCwgY2hh
ciAqdG8saW50IHNpemUpOwpleHRlcm4gaW50IHNrYl9jb3B5X2RhdGFncmFtX2lvdmVjKGNvbnN0
IHN0cnVjdCBza19idWZmICpmcm9tLCBpbnQgb2Zmc2V0LCBzdHJ1Y3QgaW92ZWMgKnRvLGludCBz
aXplKTsKZXh0ZXJuIGludCBza2JfY29weV9hbmRfY3N1bV9kYXRhZ3JhbShjb25zdCBzdHJ1Y3Qg
c2tfYnVmZiAqc2tiLCBpbnQgb2Zmc2V0LCB1OCAqdG8sIGludCBsZW4sIHVuc2lnbmVkIGludCAq
Y3N1bXApOwpleHRlcm4gaW50IHNrYl9jb3B5X2FuZF9jc3VtX2RhdGFncmFtX2lvdmVjKGNvbnN0
IHN0cnVjdCBza19idWZmICpza2IsIGludCBobGVuLCBzdHJ1Y3QgaW92ZWMgKmlvdik7CmV4dGVy
biB2b2lkIHNrYl9mcmVlX2RhdGFncmFtKHN0cnVjdCBzb2NrICogc2ssIHN0cnVjdCBza19idWZm
ICpza2IpOwoKZXh0ZXJuIHVuc2lnbmVkIGludCBza2JfY2hlY2tzdW0oY29uc3Qgc3RydWN0IHNr
X2J1ZmYgKnNrYiwgaW50IG9mZnNldCwgaW50IGxlbiwgdW5zaWduZWQgaW50IGNzdW0pOwpleHRl
cm4gaW50IHNrYl9jb3B5X2JpdHMoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG9mZnNl
dCwgdm9pZCAqdG8sIGludCBsZW4pOwpleHRlcm4gdW5zaWduZWQgaW50IHNrYl9jb3B5X2FuZF9j
c3VtX2JpdHMoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG9mZnNldCwgdTggKnRvLCBp
bnQgbGVuLCB1bnNpZ25lZCBpbnQgY3N1bSk7CmV4dGVybiB2b2lkIHNrYl9jb3B5X2FuZF9jc3Vt
X2Rldihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCAqdG8pOwoKZXh0ZXJuIHZvaWQgc2ti
X2luaXQodm9pZCk7CmV4dGVybiB2b2lkIHNrYl9hZGRfbXR1KGludCBtdHUpOwoKCnN0YXRpYyBp
bmxpbmUgdm9pZApuZl9jb25udHJhY2tfcHV0KHN0cnVjdCBuZl9jdF9pbmZvICpuZmN0KQp7CiAg
ICAgICAgaWYgKG5mY3QgJiYgYXRvbWljX2RlY19hbmRfdGVzdCgmbmZjdC0+bWFzdGVyLT51c2Up
KQogICAgICAgICAgICAgICAgbmZjdC0+bWFzdGVyLT5kZXN0cm95KG5mY3QtPm1hc3Rlcik7Cn0K
c3RhdGljIGlubGluZSB2b2lkCm5mX2Nvbm50cmFja19nZXQoc3RydWN0IG5mX2N0X2luZm8gKm5m
Y3QpCnsKICAgICAgICBpZiAobmZjdCkKICAgICAgICAgICAgICAgIGF0b21pY19pbmMoJm5mY3Qt
Pm1hc3Rlci0+dXNlKTsKfQojIDE0NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uZXRk
ZXZpY2UuaCIgMgoKc3RydWN0IG5laWdoYm91cjsKc3RydWN0IG5laWdoX3Bhcm1zOwpzdHJ1Y3Qg
c2tfYnVmZjsKCnN0cnVjdCBuZXRpZl9yeF9zdGF0cwp7CiAgICAgICAgdW5zaWduZWQgdG90YWw7
CiAgICAgICAgdW5zaWduZWQgZHJvcHBlZDsKICAgICAgICB1bnNpZ25lZCB0aW1lX3NxdWVlemU7
CiAgICAgICAgdW5zaWduZWQgdGhyb3R0bGVkOwogICAgICAgIHVuc2lnbmVkIGZhc3Ryb3V0ZV9o
aXQ7CiAgICAgICAgdW5zaWduZWQgZmFzdHJvdXRlX3N1Y2Nlc3M7CiAgICAgICAgdW5zaWduZWQg
ZmFzdHJvdXRlX2RlZmVyOwogICAgICAgIHVuc2lnbmVkIGZhc3Ryb3V0ZV9kZWZlcnJlZF9vdXQ7
CiAgICAgICAgdW5zaWduZWQgZmFzdHJvdXRlX2xhdGVuY3lfcmVkdWN0aW9uOwogICAgICAgIHVu
c2lnbmVkIGNwdV9jb2xsaXNpb247Cn0gX19hdHRyaWJ1dGVfXyAoKF9fYWxpZ25lZF9fKCgxIDw8
ICgoNSkpKSkpKTsKCmV4dGVybiBzdHJ1Y3QgbmV0aWZfcnhfc3RhdHMgbmV0ZGV2X3J4X3N0YXRb
XTsKCgoKCgoKc3RydWN0IGRldl9tY19saXN0CnsKICAgICAgICBzdHJ1Y3QgZGV2X21jX2xpc3Qg
Km5leHQ7CiAgICAgICAgX191OCBkbWlfYWRkcls4XTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGRt
aV9hZGRybGVuOwogICAgICAgIGludCBkbWlfdXNlcnM7CiAgICAgICAgaW50IGRtaV9ndXNlcnM7
Cn07CgpzdHJ1Y3QgaGhfY2FjaGUKewogICAgICAgIHN0cnVjdCBoaF9jYWNoZSAqaGhfbmV4dDsK
ICAgICAgICBhdG9taWNfdCBoaF9yZWZjbnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgaGhfdHlw
ZTsKICAgICAgICBpbnQgaGhfbGVuOwogICAgICAgIGludCAoKmhoX291dHB1dCkoc3RydWN0IHNr
X2J1ZmYgKnNrYik7CiAgICAgICAgcndsb2NrX3QgaGhfbG9jazsKCiAgICAgICAgdW5zaWduZWQg
bG9uZyBoaF9kYXRhWzE2L3NpemVvZih1bnNpZ25lZCBsb25nKV07Cn07CgoKCgoKCmVudW0gbmV0
ZGV2X3N0YXRlX3QKewogICAgICAgIF9fTElOS19TVEFURV9YT0ZGPTAsCiAgICAgICAgX19MSU5L
X1NUQVRFX1NUQVJULAogICAgICAgIF9fTElOS19TVEFURV9QUkVTRU5ULAogICAgICAgIF9fTElO
S19TVEFURV9TQ0hFRCwKICAgICAgICBfX0xJTktfU1RBVEVfTk9DQVJSSUVSCn07CgoKCgoKCnN0
cnVjdCBuZXRkZXZfYm9vdF9zZXR1cCB7CiAgICAgICAgY2hhciBuYW1lWzE2XTsKICAgICAgICBz
dHJ1Y3QgaWZtYXAgbWFwOwp9OwojIDIzMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9u
ZXRkZXZpY2UuaCIKc3RydWN0IG5ldF9kZXZpY2UKewoKCgoKCgogICAgICAgIGNoYXIgbmFtZVsx
Nl07CgoKCgoKICAgICAgICB1bnNpZ25lZCBsb25nIHJtZW1fZW5kOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgcm1lbV9zdGFydDsKICAgICAgICB1bnNpZ25lZCBsb25nIG1lbV9lbmQ7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBtZW1fc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBiYXNlX2FkZHI7
CiAgICAgICAgdW5zaWduZWQgaW50IGlycTsKCgoKCgoKICAgICAgICB1bnNpZ25lZCBjaGFyIGlm
X3BvcnQ7CiAgICAgICAgdW5zaWduZWQgY2hhciBkbWE7CgogICAgICAgIHVuc2lnbmVkIGxvbmcg
c3RhdGU7CgogICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZXh0OwoKCiAgICAgICAgaW50ICgq
aW5pdCkoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CgoKCiAgICAgICAgc3RydWN0IG5ldF9kZXZp
Y2UgKm5leHRfc2NoZWQ7CgoKICAgICAgICBpbnQgaWZpbmRleDsKICAgICAgICBpbnQgaWZsaW5r
OwoKCiAgICAgICAgc3RydWN0IG5ldF9kZXZpY2Vfc3RhdHMqICgqZ2V0X3N0YXRzKShzdHJ1Y3Qg
bmV0X2RldmljZSAqZGV2KTsKICAgICAgICBzdHJ1Y3QgaXdfc3RhdGlzdGljcyogKCpnZXRfd2ly
ZWxlc3Nfc3RhdHMpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwojIDI4NSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCIKICAgICAgICB1bnNpZ25lZCBsb25nIHRyYW5z
X3N0YXJ0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgbGFzdF9yeDsKCiAgICAgICAgdW5zaWduZWQg
c2hvcnQgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZ2ZsYWdzOwogICAgICAgIHVuc2ln
bmVkIG10dTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB0eXBlOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IGhhcmRfaGVhZGVyX2xlbjsKICAgICAgICB2b2lkICpwcml2OwoKICAgICAgICBzdHJ1Y3Qg
bmV0X2RldmljZSAqbWFzdGVyOwoKCgoKICAgICAgICB1bnNpZ25lZCBjaGFyIGJyb2FkY2FzdFs4
XTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGRldl9hZGRyWzhdOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgYWRkcl9sZW47CgogICAgICAgIHN0cnVjdCBkZXZfbWNfbGlzdCAqbWNfbGlzdDsKICAgICAg
ICBpbnQgbWNfY291bnQ7CiAgICAgICAgaW50IHByb21pc2N1aXR5OwogICAgICAgIGludCBhbGxt
dWx0aTsKCiAgICAgICAgaW50IHdhdGNoZG9nX3RpbWVvOwogICAgICAgIHN0cnVjdCB0aW1lcl9s
aXN0IHdhdGNoZG9nX3RpbWVyOwoKCgogICAgICAgIHZvaWQgKmF0YWxrX3B0cjsKICAgICAgICB2
b2lkICppcF9wdHI7CiAgICAgICAgdm9pZCAqZG5fcHRyOwogICAgICAgIHZvaWQgKmlwNl9wdHI7
CiAgICAgICAgdm9pZCAqZWNfcHRyOwoKICAgICAgICBzdHJ1Y3QgUWRpc2MgKnFkaXNjOwogICAg
ICAgIHN0cnVjdCBRZGlzYyAqcWRpc2Nfc2xlZXBpbmc7CiAgICAgICAgc3RydWN0IFFkaXNjICpx
ZGlzY19saXN0OwogICAgICAgIHN0cnVjdCBRZGlzYyAqcWRpc2NfaW5ncmVzczsKICAgICAgICB1
bnNpZ25lZCBsb25nIHR4X3F1ZXVlX2xlbjsKCgogICAgICAgIHNwaW5sb2NrX3QgeG1pdF9sb2Nr
OwoKCgogICAgICAgIGludCB4bWl0X2xvY2tfb3duZXI7CgogICAgICAgIHNwaW5sb2NrX3QgcXVl
dWVfbG9jazsKCiAgICAgICAgYXRvbWljX3QgcmVmY250OwoKICAgICAgICBpbnQgZGVhZGJlYWY7
CgoKICAgICAgICBpbnQgZmVhdHVyZXM7CiMgMzUwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L25ldGRldmljZS5oIgogICAgICAgIHZvaWQgKCp1bmluaXQpKHN0cnVjdCBuZXRfZGV2aWNl
ICpkZXYpOwoKICAgICAgICB2b2lkICgqZGVzdHJ1Y3Rvcikoc3RydWN0IG5ldF9kZXZpY2UgKmRl
dik7CgoKICAgICAgICBpbnQgKCpvcGVuKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKICAgICAg
ICBpbnQgKCpzdG9wKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKICAgICAgICBpbnQgKCpoYXJk
X3N0YXJ0X3htaXQpIChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CiAg
ICAgICAgaW50ICgqaGFyZF9oZWFkZXIpIChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAq
ZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBzaG9ydCB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2b2lkICpkYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCAqc2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbik7CiAgICAgICAgaW50ICgqcmVidWlsZF9oZWFk
ZXIpKHN0cnVjdCBza19idWZmICpza2IpOwoKICAgICAgICB2b2lkICgqc2V0X211bHRpY2FzdF9s
aXN0KShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKCiAgICAgICAgaW50ICgqc2V0X21hY19hZGRy
ZXNzKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphZGRyKTsKCiAgICAgICAgaW50ICgqZG9faW9j
dGwpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpOwoKICAgICAgICBpbnQg
KCpzZXRfY29uZmlnKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGlmbWFwICptYXApOwoKICAgICAgICBp
bnQgKCpoYXJkX2hlYWRlcl9jYWNoZSkoc3RydWN0IG5laWdoYm91ciAqbmVpZ2gsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGhoX2Nh
Y2hlICpoaCk7CiAgICAgICAgdm9pZCAoKmhlYWRlcl9jYWNoZV91cGRhdGUpKHN0cnVjdCBoaF9j
YWNoZSAqaGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqIGhhZGRyKTsKCiAg
ICAgICAgaW50ICgqY2hhbmdlX210dSkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG5ld19t
dHUpOwoKCiAgICAgICAgdm9pZCAoKnR4X3RpbWVvdXQpIChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2
KTsKCiAgICAgICAgaW50ICgqaGFyZF9oZWFkZXJfcGFyc2UpKHN0cnVjdCBza19idWZmICpza2Is
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgY2hhciAqaGFkZHIpOwogICAgICAgIGludCAoKm5laWdoX3NldHVwKShzdHJ1Y3QgbmV0
X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmVpZ2hfcGFybXMgKik7CiAgICAgICAgaW50ICgqYWNjZXB0
X2Zhc3RwYXRoKShzdHJ1Y3QgbmV0X2RldmljZSAqLCBzdHJ1Y3QgZHN0X2VudHJ5Kik7CgoKICAg
ICAgICBzdHJ1Y3QgbW9kdWxlICpvd25lcjsKCgogICAgICAgIHN0cnVjdCBuZXRfYnJpZGdlX3Bv
cnQgKmJyX3BvcnQ7CiMgNDEwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25ldGRldmlj
ZS5oIgp9OwoKCnN0cnVjdCBwYWNrZXRfdHlwZQp7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdHlw
ZTsKICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2OwogICAgICAgIGludCAoKmZ1bmMpIChz
dHJ1Y3Qgc2tfYnVmZiAqLCBzdHJ1Y3QgbmV0X2RldmljZSAqLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwYWNrZXRfdHlwZSAqKTsKICAgICAgICB2b2lk
ICpkYXRhOwogICAgICAgIHN0cnVjdCBwYWNrZXRfdHlwZSAqbmV4dDsKfTsKCgojIDEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiIDEKCgoKCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDYgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvaW50ZXJydXB0LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L2tlcm5lbC5oIiAxCiMgNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc21wLmgiIDEKIyA4ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9jYWNoZS5oIiAxCiMgOSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9pbnRlcnJ1cHQuaCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9iaXRv
cHMuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEKIyAxMiAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvYXNtL3B0cmFjZS5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvaW50ZXJydXB0LmgiIDIKCnN0cnVjdCBpcnFhY3Rpb24gewogICAgICAgIHZvaWQgKCpoYW5k
bGVyKShpbnQsIHZvaWQgKiwgc3RydWN0IHB0X3JlZ3MgKik7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBmbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIG1hc2s7CiAgICAgICAgY29uc3QgY2hhciAq
bmFtZTsKICAgICAgICB2b2lkICpkZXZfaWQ7CiAgICAgICAgc3RydWN0IGlycWFjdGlvbiAqbmV4
dDsKfTsKCgoKCgplbnVtIHsKICAgICAgICBUSU1FUl9CSCA9IDAsCiAgICAgICAgVFFVRVVFX0JI
LAogICAgICAgIERJR0lfQkgsCiAgICAgICAgU0VSSUFMX0JILAogICAgICAgIFJJU0NPTThfQkgs
CiAgICAgICAgU1BFQ0lBTElYX0JILAogICAgICAgIEFVUk9SQV9CSCwKICAgICAgICBFU1BfQkgs
CiAgICAgICAgU0NTSV9CSCwKICAgICAgICBJTU1FRElBVEVfQkgsCiAgICAgICAgQ1lDTEFERVNf
QkgsCiAgICAgICAgQ00yMDZfQkgsCiAgICAgICAgSlNfQkgsCiAgICAgICAgTUFDU0VSSUFMX0JI
LAogICAgICAgIElTSUNPTV9CSAp9OwoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9o
YXJkaXJxLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5o
IiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vaGFyZGlycS5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90aHJlYWRzLmgiIDEKIyA2ICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2FzbS9oYXJkaXJxLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L2lycS5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaXJxLmgiCiMg
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDEzICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L2lycS5oIiAyCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9jYWNoZS5oIiAxCiMgMTcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
aXJxLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDEK
IyAxOCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pcnEuaCIgMgoKIyAxICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2FzbS9pcnEuaCIgMQojIDEzICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2FzbS9pcnEuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAx
CiMgMTQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2lycS5oIiAyCiMgMjggIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvYXNtL2lycS5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgaXJxX2Nhbm5v
bmljYWxpemUoaW50IGlycSkKewogICAgICAgIHJldHVybiAoKGlycSA9PSAyKSA/IDkgOiBpcnEp
Owp9CgpleHRlcm4gdm9pZCBkaXNhYmxlX2lycSh1bnNpZ25lZCBpbnQpOwpleHRlcm4gdm9pZCBk
aXNhYmxlX2lycV9ub3N5bmModW5zaWduZWQgaW50KTsKZXh0ZXJuIHZvaWQgZW5hYmxlX2lycSh1
bnNpZ25lZCBpbnQpOwojIDIwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2lycS5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcHRyYWNlLmgiIDEKIyAyMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9pcnEuaCIgMgojIDM5ICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2lycS5oIgpzdHJ1Y3QgaHdfaW50ZXJydXB0X3R5cGUgewogICAgICAgIGNvbnN0
IGNoYXIgKiB0eXBlbmFtZTsKICAgICAgICB1bnNpZ25lZCBpbnQgKCpzdGFydHVwKSh1bnNpZ25l
ZCBpbnQgaXJxKTsKICAgICAgICB2b2lkICgqc2h1dGRvd24pKHVuc2lnbmVkIGludCBpcnEpOwog
ICAgICAgIHZvaWQgKCplbmFibGUpKHVuc2lnbmVkIGludCBpcnEpOwogICAgICAgIHZvaWQgKCpk
aXNhYmxlKSh1bnNpZ25lZCBpbnQgaXJxKTsKICAgICAgICB2b2lkICgqYWNrKSh1bnNpZ25lZCBp
bnQgaXJxKTsKICAgICAgICB2b2lkICgqZW5kKSh1bnNpZ25lZCBpbnQgaXJxKTsKICAgICAgICB2
b2lkICgqc2V0X2FmZmluaXR5KSh1bnNpZ25lZCBpbnQgaXJxLCB1bnNpZ25lZCBsb25nIG1hc2sp
Owp9OwoKdHlwZWRlZiBzdHJ1Y3QgaHdfaW50ZXJydXB0X3R5cGUgaHdfaXJxX2NvbnRyb2xsZXI7
CiMgNTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaXJxLmgiCnR5cGVkZWYgc3RydWN0
IHsKICAgICAgICB1bnNpZ25lZCBpbnQgc3RhdHVzOwogICAgICAgIGh3X2lycV9jb250cm9sbGVy
ICpoYW5kbGVyOwogICAgICAgIHN0cnVjdCBpcnFhY3Rpb24gKmFjdGlvbjsKICAgICAgICB1bnNp
Z25lZCBpbnQgZGVwdGg7CiAgICAgICAgc3BpbmxvY2tfdCBsb2NrOwp9IF9fYXR0cmlidXRlX18o
KF9fYWxpZ25lZF9fKCgxIDw8ICgoNSkpKSkpKSBpcnFfZGVzY190OwoKZXh0ZXJuIGlycV9kZXNj
X3QgaXJxX2Rlc2MgWzIyNF07CgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2h3X2ly
cS5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2h3X2lycS5oIgojIDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAxNiAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9hc20vaHdfaXJxLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2Fz
bS9hdG9taWMuaCIgMQojIDE3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9od19pcnEuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2lycS5oIiAxCiMgMTggIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvYXNtL2h3X2lycS5oIiAyCiMgNjEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvYXNtL2h3X2lycS5oIgpleHRlcm4gaW50IGlycV92ZWN0b3JbMjI0XTsKIyA3MSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9hc20vaHdfaXJxLmgiCmV4dGVybiB2b2lkIG1hc2tfaXJxKHVuc2ln
bmVkIGludCBpcnEpOwpleHRlcm4gdm9pZCB1bm1hc2tfaXJxKHVuc2lnbmVkIGludCBpcnEpOwpl
eHRlcm4gdm9pZCBkaXNhYmxlXzgyNTlBX2lycSh1bnNpZ25lZCBpbnQgaXJxKTsKZXh0ZXJuIHZv
aWQgZW5hYmxlXzgyNTlBX2lycSh1bnNpZ25lZCBpbnQgaXJxKTsKZXh0ZXJuIGludCBpODI1OUFf
aXJxX3BlbmRpbmcodW5zaWduZWQgaW50IGlycSk7CmV4dGVybiB2b2lkIG1ha2VfODI1OUFfaXJx
KHVuc2lnbmVkIGludCBpcnEpOwpleHRlcm4gdm9pZCBpbml0XzgyNTlBKGludCBhZW9pKTsKZXh0
ZXJuIHZvaWQgc2VuZF9JUElfc2VsZihpbnQgdmVjdG9yKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt
KDMpKSk7CmV4dGVybiB2b2lkIGluaXRfVklTV1NfQVBJQ19pcnFzKHZvaWQpOwpleHRlcm4gdm9p
ZCBzZXR1cF9JT19BUElDKHZvaWQpOwpleHRlcm4gdm9pZCBkaXNhYmxlX0lPX0FQSUModm9pZCk7
CmV4dGVybiB2b2lkIHByaW50X0lPX0FQSUModm9pZCk7CmV4dGVybiBpbnQgSU9fQVBJQ19nZXRf
UENJX2lycV92ZWN0b3IoaW50IGJ1cywgaW50IHNsb3QsIGludCBmbik7CmV4dGVybiB2b2lkIHNl
bmRfSVBJKGludCBkZXN0LCBpbnQgdmVjdG9yKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGlvX2Fw
aWNfaXJxczsKCmV4dGVybiBhdG9taWNfdCBpcnFfZXJyX2NvdW50OwpleHRlcm4gYXRvbWljX3Qg
aXJxX21pc19jb3VudDsKCmV4dGVybiBjaGFyIF9zdGV4dCwgX2V0ZXh0OwojIDE4MyAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9hc20vaHdfaXJxLmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIHByb2Zf
Y3B1X21hc2s7CmV4dGVybiB1bnNpZ25lZCBpbnQgKiBwcm9mX2J1ZmZlcjsKZXh0ZXJuIHVuc2ln
bmVkIGxvbmcgcHJvZl9sZW47CmV4dGVybiB1bnNpZ25lZCBsb25nIHByb2Zfc2hpZnQ7CgoKCgoK
c3RhdGljIGlubGluZSB2b2lkIHg4Nl9kb19wcm9maWxlICh1bnNpZ25lZCBsb25nIGVpcCkKewog
ICAgICAgIGlmICghcHJvZl9idWZmZXIpCiAgICAgICAgICAgICAgICByZXR1cm47CgoKCgoKICAg
ICAgICBpZiAoISgoMTw8MCkgJiBwcm9mX2NwdV9tYXNrKSkKICAgICAgICAgICAgICAgIHJldHVy
bjsKCiAgICAgICAgZWlwIC09ICh1bnNpZ25lZCBsb25nKSAmX3N0ZXh0OwogICAgICAgIGVpcCA+
Pj0gcHJvZl9zaGlmdDsKCgoKCgogICAgICAgIGlmIChlaXAgPiBwcm9mX2xlbi0xKQogICAgICAg
ICAgICAgICAgZWlwID0gcHJvZl9sZW4tMTsKICAgICAgICBhdG9taWNfaW5jKChhdG9taWNfdCAq
KSZwcm9mX2J1ZmZlcltlaXBdKTsKfQoKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGh3X3Jlc2Vu
ZF9pcnEoc3RydWN0IGh3X2ludGVycnVwdF90eXBlICpoLCB1bnNpZ25lZCBpbnQgaSkge30KIyA3
MCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pcnEuaCIgMgoKZXh0ZXJuIGludCBoYW5k
bGVfSVJRX2V2ZW50KHVuc2lnbmVkIGludCwgc3RydWN0IHB0X3JlZ3MgKiwgc3RydWN0IGlycWFj
dGlvbiAqKTsKZXh0ZXJuIGludCBzZXR1cF9pcnEodW5zaWduZWQgaW50ICwgc3RydWN0IGlycWFj
dGlvbiAqICk7CgpleHRlcm4gaHdfaXJxX2NvbnRyb2xsZXIgbm9faXJxX3R5cGU7CmV4dGVybiB2
b2lkIG5vX2FjdGlvbihpbnQgY3BsLCB2b2lkICpkZXZfaWQsIHN0cnVjdCBwdF9yZWdzICpyZWdz
KTsKIyA3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9oYXJkaXJxLmgiIDIKCgp0eXBlZGVm
IHN0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgaW50IF9fc29mdGlycV9wZW5kaW5nOwogICAgICAg
IHVuc2lnbmVkIGludCBfX2xvY2FsX2lycV9jb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgX19s
b2NhbF9iaF9jb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgX19zeXNjYWxsX2NvdW50OwogICAg
ICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqIF9fa3NvZnRpcnFkX3Rhc2s7CiAgICAgICAgdW5zaWdu
ZWQgaW50IF9fbm1pX2NvdW50Owp9IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgxIDw8ICgo
NSkpKSkpKSBpcnFfY3B1c3RhdF90OwoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L2lycV9jcHVzdGF0LmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pcnFf
Y3B1c3RhdC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEK
IyAxMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pcnFfY3B1c3RhdC5oIiAyCgoKCgoK
CgpleHRlcm4gaXJxX2NwdXN0YXRfdCBpcnFfc3RhdFtdOwojIDE5ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2FzbS9oYXJkaXJxLmgiIDIKIyA0NiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9pbnRlcnJ1cHQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NvZnRpcnEu
aCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2F0b21pYy5oIiAxCiMgNSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc29mdGlycS5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9hc20vaGFyZGlycS5oIiAxCiMgNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9h
c20vc29mdGlycS5oIiAyCiMgNDcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaW50ZXJy
dXB0LmgiIDIKIyA1NiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIK
ZW51bQp7CiAgICAgICAgSElfU09GVElSUT0wLAogICAgICAgIE5FVF9UWF9TT0ZUSVJRLAogICAg
ICAgIE5FVF9SWF9TT0ZUSVJRLAogICAgICAgIFRBU0tMRVRfU09GVElSUQp9OwoKCgoKCnN0cnVj
dCBzb2Z0aXJxX2FjdGlvbgp7CiAgICAgICAgdm9pZCAoKmFjdGlvbikoc3RydWN0IHNvZnRpcnFf
YWN0aW9uICopOwogICAgICAgIHZvaWQgKmRhdGE7Cn07CgogX19hdHRyaWJ1dGVfXygocmVncGFy
bSgwKSkpIHZvaWQgZG9fc29mdGlycSh2b2lkKTsKZXh0ZXJuIHZvaWQgb3Blbl9zb2Z0aXJxKGlu
dCBuciwgdm9pZCAoKmFjdGlvbikoc3RydWN0IHNvZnRpcnFfYWN0aW9uKiksIHZvaWQgKmRhdGEp
OwpleHRlcm4gdm9pZCBzb2Z0aXJxX2luaXQodm9pZCk7CgpleHRlcm4gdm9pZCBjcHVfcmFpc2Vf
c29mdGlycSh1bnNpZ25lZCBpbnQgY3B1LCB1bnNpZ25lZCBpbnQgbnIpIF9fYXR0cmlidXRlX18o
KHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgcmFpc2Vfc29mdGlycSh1bnNpZ25lZCBpbnQgbnIp
IF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKIyAxMDMgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvaW50ZXJydXB0LmgiCnN0cnVjdCB0YXNrbGV0X3N0cnVjdAp7CiAgICAgICAgc3Ry
dWN0IHRhc2tsZXRfc3RydWN0ICpuZXh0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhdGU7CiAg
ICAgICAgYXRvbWljX3QgY291bnQ7CiAgICAgICAgdm9pZCAoKmZ1bmMpKHVuc2lnbmVkIGxvbmcp
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YTsKfTsKIyAxMTkgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvaW50ZXJydXB0LmgiCmVudW0KewogICAgICAgIFRBU0tMRVRfU1RBVEVfU0NI
RUQsCiAgICAgICAgVEFTS0xFVF9TVEFURV9SVU4KfTsKCnN0cnVjdCB0YXNrbGV0X2hlYWQKewog
ICAgICAgIHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqbGlzdDsKfSBfX2F0dHJpYnV0ZV9fICgoX19h
bGlnbmVkX18oKDEgPDwgKCg1KSkpKSkpOwoKZXh0ZXJuIHN0cnVjdCB0YXNrbGV0X2hlYWQgdGFz
a2xldF92ZWNbMV07CmV4dGVybiBzdHJ1Y3QgdGFza2xldF9oZWFkIHRhc2tsZXRfaGlfdmVjWzFd
OwojIDE1NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIKZXh0ZXJu
IHZvaWQgX190YXNrbGV0X3NjaGVkdWxlKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCkgX19hdHRy
aWJ1dGVfXygocmVncGFybSgzKSkpOwoKc3RhdGljIGlubGluZSB2b2lkIHRhc2tsZXRfc2NoZWR1
bGUoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KQp7CiAgICAgICAgaWYgKCF0ZXN0X2FuZF9zZXRf
Yml0KFRBU0tMRVRfU1RBVEVfU0NIRUQsICZ0LT5zdGF0ZSkpCiAgICAgICAgICAgICAgICBfX3Rh
c2tsZXRfc2NoZWR1bGUodCk7Cn0KCmV4dGVybiB2b2lkIF9fdGFza2xldF9oaV9zY2hlZHVsZShz
dHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCnN0
YXRpYyBpbmxpbmUgdm9pZCB0YXNrbGV0X2hpX3NjaGVkdWxlKHN0cnVjdCB0YXNrbGV0X3N0cnVj
dCAqdCkKewogICAgICAgIGlmICghdGVzdF9hbmRfc2V0X2JpdChUQVNLTEVUX1NUQVRFX1NDSEVE
LCAmdC0+c3RhdGUpKQogICAgICAgICAgICAgICAgX190YXNrbGV0X2hpX3NjaGVkdWxlKHQpOwp9
CgoKc3RhdGljIGlubGluZSB2b2lkIHRhc2tsZXRfZGlzYWJsZV9ub3N5bmMoc3RydWN0IHRhc2ts
ZXRfc3RydWN0ICp0KQp7CiAgICAgICAgYXRvbWljX2luYygmdC0+Y291bnQpOwogICAgICAgIF9f
YXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgdm9p
ZCB0YXNrbGV0X2Rpc2FibGUoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KQp7CiAgICAgICAgdGFz
a2xldF9kaXNhYmxlX25vc3luYyh0KTsKICAgICAgICBkbyB7IH0gd2hpbGUgKDApOwogICAgICAg
IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7Cn0KCnN0YXRpYyBpbmxpbmUg
dm9pZCB0YXNrbGV0X2VuYWJsZShzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpCnsKICAgICAgICBf
X2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwogICAgICAgIGF0b21pY19kZWMo
JnQtPmNvdW50KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHRhc2tsZXRfaGlfZW5hYmxlKHN0cnVj
dCB0YXNrbGV0X3N0cnVjdCAqdCkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6
IDoibWVtb3J5Iik7CiAgICAgICAgYXRvbWljX2RlYygmdC0+Y291bnQpOwp9CgpleHRlcm4gdm9p
ZCB0YXNrbGV0X2tpbGwoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KTsKZXh0ZXJuIHZvaWQgdGFz
a2xldF9pbml0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQgKCpmdW5jKSh1bnNpZ25lZCBsb25nKSwgdW5zaWduZWQgbG9uZyBkYXRhKTsKIyAy
MjIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiCmV4dGVybiBzdHJ1
Y3QgdGFza2xldF9zdHJ1Y3QgYmhfdGFza192ZWNbXTsKCgpleHRlcm4gc3BpbmxvY2tfdCBnbG9i
YWxfYmhfbG9jazsKCnN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrX2JoKGludCBucikKewogICAgICAg
IHRhc2tsZXRfaGlfc2NoZWR1bGUoYmhfdGFza192ZWMrbnIpOwp9CgpleHRlcm4gdm9pZCBpbml0
X2JoKGludCBuciwgdm9pZCAoKnJvdXRpbmUpKHZvaWQpKTsKZXh0ZXJuIHZvaWQgcmVtb3ZlX2Jo
KGludCBucik7CiMgMjYzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5o
IgpleHRlcm4gdW5zaWduZWQgbG9uZyBwcm9iZV9pcnFfb24odm9pZCk7CmV4dGVybiBpbnQgcHJv
YmVfaXJxX29mZih1bnNpZ25lZCBsb25nKTsKZXh0ZXJuIHVuc2lnbmVkIGludCBwcm9iZV9pcnFf
bWFzayh1bnNpZ25lZCBsb25nKTsKIyA0MjUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
bmV0ZGV2aWNlLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25vdGlmaWVy
LmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9ub3RpZmllci5oIgojIDEg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZXJybm8uaCIgMQojIDEzICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmgiIDIKCnN0cnVjdCBub3RpZmllcl9ibG9jawp7
CiAgICAgICAgaW50ICgqbm90aWZpZXJfY2FsbCkoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpzZWxm
LCB1bnNpZ25lZCBsb25nLCB2b2lkICopOwogICAgICAgIHN0cnVjdCBub3RpZmllcl9ibG9jayAq
bmV4dDsKICAgICAgICBpbnQgcHJpb3JpdHk7Cn07CgoKCgpleHRlcm4gaW50IG5vdGlmaWVyX2No
YWluX3JlZ2lzdGVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqKmxpc3QsIHN0cnVjdCBub3RpZmll
cl9ibG9jayAqbik7CmV4dGVybiBpbnQgbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihzdHJ1Y3Qg
bm90aWZpZXJfYmxvY2sgKipubCwgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuKTsKZXh0ZXJuIGlu
dCBub3RpZmllcl9jYWxsX2NoYWluKHN0cnVjdCBub3RpZmllcl9ibG9jayAqKm4sIHVuc2lnbmVk
IGxvbmcgdmFsLCB2b2lkICp2KTsKIyA0MjYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
bmV0ZGV2aWNlLmgiIDIKCmV4dGVybiBzdHJ1Y3QgbmV0X2RldmljZSBsb29wYmFja19kZXY7CmV4
dGVybiBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2X2Jhc2U7CmV4dGVybiByd2xvY2tfdCBkZXZfYmFz
ZV9sb2NrOwoKZXh0ZXJuIGludCBuZXRkZXZfYm9vdF9zZXR1cF9hZGQoY2hhciAqbmFtZSwgc3Ry
dWN0IGlmbWFwICptYXApOwpleHRlcm4gaW50IG5ldGRldl9ib290X3NldHVwX2NoZWNrKHN0cnVj
dCBuZXRfZGV2aWNlICpkZXYpOwpleHRlcm4gc3RydWN0IG5ldF9kZXZpY2UgKmRldl9nZXRieWh3
YWRkcih1bnNpZ25lZCBzaG9ydCB0eXBlLCBjaGFyICpod2FkZHIpOwpleHRlcm4gdm9pZCBkZXZf
YWRkX3BhY2soc3RydWN0IHBhY2tldF90eXBlICpwdCk7CmV4dGVybiB2b2lkIGRldl9yZW1vdmVf
cGFjayhzdHJ1Y3QgcGFja2V0X3R5cGUgKnB0KTsKZXh0ZXJuIGludCBkZXZfZ2V0KGNvbnN0IGNo
YXIgKm5hbWUpOwpleHRlcm4gc3RydWN0IG5ldF9kZXZpY2UgKmRldl9nZXRfYnlfbmFtZShjb25z
dCBjaGFyICpuYW1lKTsKZXh0ZXJuIHN0cnVjdCBuZXRfZGV2aWNlICpfX2Rldl9nZXRfYnlfbmFt
ZShjb25zdCBjaGFyICpuYW1lKTsKZXh0ZXJuIHN0cnVjdCBuZXRfZGV2aWNlICpkZXZfYWxsb2Mo
Y29uc3QgY2hhciAqbmFtZSwgaW50ICplcnIpOwpleHRlcm4gaW50IGRldl9hbGxvY19uYW1lKHN0
cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKm5hbWUpOwpleHRlcm4gaW50IGRldl9v
cGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpleHRlcm4gaW50IGRldl9jbG9zZShzdHJ1Y3Qg
bmV0X2RldmljZSAqZGV2KTsKZXh0ZXJuIGludCBkZXZfcXVldWVfeG1pdChzdHJ1Y3Qgc2tfYnVm
ZiAqc2tiKTsKZXh0ZXJuIGludCByZWdpc3Rlcl9uZXRkZXZpY2Uoc3RydWN0IG5ldF9kZXZpY2Ug
KmRldik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9uZXRkZXZpY2Uoc3RydWN0IG5ldF9kZXZpY2Ug
KmRldik7CmV4dGVybiBpbnQgcmVnaXN0ZXJfbmV0ZGV2aWNlX25vdGlmaWVyKHN0cnVjdCBub3Rp
Zmllcl9ibG9jayAqbmIpOwpleHRlcm4gaW50IHVucmVnaXN0ZXJfbmV0ZGV2aWNlX25vdGlmaWVy
KHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpOwpleHRlcm4gaW50IGRldl9uZXdfaW5kZXgodm9p
ZCk7CmV4dGVybiBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2X2dldF9ieV9pbmRleChpbnQgaWZpbmRl
eCk7CmV4dGVybiBzdHJ1Y3QgbmV0X2RldmljZSAqX19kZXZfZ2V0X2J5X2luZGV4KGludCBpZmlu
ZGV4KTsKZXh0ZXJuIGludCBkZXZfcmVzdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKCnR5
cGVkZWYgaW50IGdpZmNvbmZfZnVuY190KHN0cnVjdCBuZXRfZGV2aWNlICogZGV2LCBjaGFyICog
YnVmcHRyLCBpbnQgbGVuKTsKZXh0ZXJuIGludCByZWdpc3Rlcl9naWZjb25mKHVuc2lnbmVkIGlu
dCBmYW1pbHksIGdpZmNvbmZfZnVuY190ICogZ2lmY29uZik7CnN0YXRpYyBpbmxpbmUgaW50IHVu
cmVnaXN0ZXJfZ2lmY29uZih1bnNpZ25lZCBpbnQgZmFtaWx5KQp7CiAgICAgICAgcmV0dXJuIHJl
Z2lzdGVyX2dpZmNvbmYoZmFtaWx5LCAwKTsKfQoKCgoKCgpzdHJ1Y3Qgc29mdG5ldF9kYXRhCnsK
ICAgICAgICBpbnQgdGhyb3R0bGU7CiAgICAgICAgaW50IGNuZ19sZXZlbDsKICAgICAgICBpbnQg
YXZnX2Jsb2c7CiAgICAgICAgc3RydWN0IHNrX2J1ZmZfaGVhZCBpbnB1dF9wa3RfcXVldWU7CiAg
ICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm91dHB1dF9xdWV1ZTsKICAgICAgICBzdHJ1Y3Qgc2tf
YnVmZiAqY29tcGxldGlvbl9xdWV1ZTsKfSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygoMSA8
PCAoKDUpKSkpKSk7CgoKZXh0ZXJuIHN0cnVjdCBzb2Z0bmV0X2RhdGEgc29mdG5ldF9kYXRhWzFd
OwoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX19uZXRpZl9zY2hlZHVsZShzdHJ1Y3QgbmV0X2Rldmlj
ZSAqZGV2KQp7CiAgICAgICAgaWYgKCF0ZXN0X2FuZF9zZXRfYml0KF9fTElOS19TVEFURV9TQ0hF
RCwgJmRldi0+c3RhdGUpKSB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwog
ICAgICAgICAgICAgICAgaW50IGNwdSA9IDA7CgogICAgICAgICAgICAgICAgX19hc21fXyBfX3Zv
bGF0aWxlX18oInB1c2hmbCA7IHBvcGwgJTAgOyBjbGkiOiI9ZyIgKGZsYWdzKTogOiJtZW1vcnki
KTsKICAgICAgICAgICAgICAgIGRldi0+bmV4dF9zY2hlZCA9IHNvZnRuZXRfZGF0YVtjcHVdLm91
dHB1dF9xdWV1ZTsKICAgICAgICAgICAgICAgIHNvZnRuZXRfZGF0YVtjcHVdLm91dHB1dF9xdWV1
ZSA9IGRldjsKICAgICAgICAgICAgICAgIGNwdV9yYWlzZV9zb2Z0aXJxKGNwdSwgTkVUX1RYX1NP
RlRJUlEpOwogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsg
cG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIpOwogICAgICAgIH0KfQoKc3RhdGlj
IGlubGluZSB2b2lkIG5ldGlmX3NjaGVkdWxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCnsKICAg
ICAgICBpZiAoIShfX2J1aWx0aW5fY29uc3RhbnRfcChfX0xJTktfU1RBVEVfWE9GRikgPyBjb25z
dGFudF90ZXN0X2JpdCgoX19MSU5LX1NUQVRFX1hPRkYpLCgmZGV2LT5zdGF0ZSkpIDogdmFyaWFi
bGVfdGVzdF9iaXQoKF9fTElOS19TVEFURV9YT0ZGKSwoJmRldi0+c3RhdGUpKSkpCiAgICAgICAg
ICAgICAgICBfX25ldGlmX3NjaGVkdWxlKGRldik7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBuZXRp
Zl9zdGFydF9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgY2xlYXJfYml0
KF9fTElOS19TVEFURV9YT0ZGLCAmZGV2LT5zdGF0ZSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBu
ZXRpZl93YWtlX3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICBpZiAodGVz
dF9hbmRfY2xlYXJfYml0KF9fTElOS19TVEFURV9YT0ZGLCAmZGV2LT5zdGF0ZSkpCiAgICAgICAg
ICAgICAgICBfX25ldGlmX3NjaGVkdWxlKGRldik7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBuZXRp
Zl9zdG9wX3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICBzZXRfYml0KF9f
TElOS19TVEFURV9YT0ZGLCAmZGV2LT5zdGF0ZSk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IG5ldGlm
X3F1ZXVlX3N0b3BwZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIHJldHVybiAo
X19idWlsdGluX2NvbnN0YW50X3AoX19MSU5LX1NUQVRFX1hPRkYpID8gY29uc3RhbnRfdGVzdF9i
aXQoKF9fTElOS19TVEFURV9YT0ZGKSwoJmRldi0+c3RhdGUpKSA6IHZhcmlhYmxlX3Rlc3RfYml0
KChfX0xJTktfU1RBVEVfWE9GRiksKCZkZXYtPnN0YXRlKSkpOwp9CgpzdGF0aWMgaW5saW5lIGlu
dCBuZXRpZl9ydW5uaW5nKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICByZXR1cm4g
KF9fYnVpbHRpbl9jb25zdGFudF9wKF9fTElOS19TVEFURV9TVEFSVCkgPyBjb25zdGFudF90ZXN0
X2JpdCgoX19MSU5LX1NUQVRFX1NUQVJUKSwoJmRldi0+c3RhdGUpKSA6IHZhcmlhYmxlX3Rlc3Rf
Yml0KChfX0xJTktfU1RBVEVfU1RBUlQpLCgmZGV2LT5zdGF0ZSkpKTsKfQoKCgoKc3RhdGljIGlu
bGluZSB2b2lkIGRldl9rZnJlZV9za2JfaXJxKHN0cnVjdCBza19idWZmICpza2IpCnsKICAgICAg
ICBpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmc2tiLT51c2VycykpIHsKICAgICAgICAgICAgICAg
IGludCBjcHUgPTA7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwoKICAgICAg
ICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIDsgY2xpIjoi
PWciIChmbGFncyk6IDoibWVtb3J5Iik7CiAgICAgICAgICAgICAgICBza2ItPm5leHQgPSBzb2Z0
bmV0X2RhdGFbY3B1XS5jb21wbGV0aW9uX3F1ZXVlOwogICAgICAgICAgICAgICAgc29mdG5ldF9k
YXRhW2NwdV0uY29tcGxldGlvbl9xdWV1ZSA9IHNrYjsKICAgICAgICAgICAgICAgIGNwdV9yYWlz
ZV9zb2Z0aXJxKGNwdSwgTkVUX1RYX1NPRlRJUlEpOwogICAgICAgICAgICAgICAgX19hc21fXyBf
X3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJj
YyIpOwogICAgICAgIH0KfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIGRldl9rZnJlZV9za2JfYW55
KHN0cnVjdCBza19idWZmICpza2IpCnsKICAgICAgICBpZiAoKCgodm9pZCkoKDApKSwgaXJxX3N0
YXRbMF0uX19sb2NhbF9pcnFfY291bnQpICE9IDApKQogICAgICAgICAgICAgICAgZGV2X2tmcmVl
X3NrYl9pcnEoc2tiKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBrZnJlZV9za2Ioc2ti
KTsKfQoKZXh0ZXJuIHZvaWQgbmV0X2NhbGxfcnhfYXRvbWljKHZvaWQgKCpmbikodm9pZCkpOwoK
ZXh0ZXJuIGludCBuZXRpZl9yeChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKZXh0ZXJuIGludCBkZXZf
aW9jdGwodW5zaWduZWQgaW50IGNtZCwgdm9pZCAqKTsKZXh0ZXJuIGludCBkZXZfY2hhbmdlX2Zs
YWdzKHN0cnVjdCBuZXRfZGV2aWNlICosIHVuc2lnbmVkKTsKZXh0ZXJuIHZvaWQgZGV2X3F1ZXVl
X3htaXRfbml0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwoK
ZXh0ZXJuIHZvaWQgZGV2X2luaXQodm9pZCk7CgpleHRlcm4gaW50IG5ldGRldl9uaXQ7CgoKCgpz
dGF0aWMgaW5saW5lIGludCBuZXRpZl9yeF9uaShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQp7CiAgICAg
ICBpbnQgZXJyID0gbmV0aWZfcngoc2tiKTsKICAgICAgIGlmICgoKHZvaWQpKCgwKSksIGlycV9z
dGF0WzBdLl9fc29mdGlycV9wZW5kaW5nKSkKICAgICAgICAgICAgICAgZG9fc29mdGlycSgpOwog
ICAgICAgcmV0dXJuIGVycjsKfQoKc3RhdGljIGlubGluZSB2b2lkIGRldl9pbml0X2J1ZmZlcnMo
c3RydWN0IG5ldF9kZXZpY2UgKmRldikKewoKfQoKZXh0ZXJuIGludCBuZXRkZXZfZmluaXNoX3Vu
cmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CgpzdGF0aWMgaW5saW5lIHZvaWQgZGV2
X3B1dChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgaWYgKGF0b21pY19kZWNfYW5k
X3Rlc3QoJmRldi0+cmVmY250KSkKICAgICAgICAgICAgICAgIG5ldGRldl9maW5pc2hfdW5yZWdp
c3RlcihkZXYpOwp9CiMgNTk3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25ldGRldmlj
ZS5oIgpzdGF0aWMgaW5saW5lIGludCBuZXRpZl9jYXJyaWVyX29rKHN0cnVjdCBuZXRfZGV2aWNl
ICpkZXYpCnsKICAgICAgICByZXR1cm4gIShfX2J1aWx0aW5fY29uc3RhbnRfcChfX0xJTktfU1RB
VEVfTk9DQVJSSUVSKSA/IGNvbnN0YW50X3Rlc3RfYml0KChfX0xJTktfU1RBVEVfTk9DQVJSSUVS
KSwoJmRldi0+c3RhdGUpKSA6IHZhcmlhYmxlX3Rlc3RfYml0KChfX0xJTktfU1RBVEVfTk9DQVJS
SUVSKSwoJmRldi0+c3RhdGUpKSk7Cn0KCmV4dGVybiB2b2lkIF9fbmV0ZGV2X3dhdGNoZG9nX3Vw
KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwoKc3RhdGljIGlubGluZSB2b2lkIG5ldGlmX2NhcnJp
ZXJfb24oc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIGNsZWFyX2JpdChfX0xJTktf
U1RBVEVfTk9DQVJSSUVSLCAmZGV2LT5zdGF0ZSk7CiAgICAgICAgaWYgKG5ldGlmX3J1bm5pbmco
ZGV2KSkKICAgICAgICAgICAgICAgIF9fbmV0ZGV2X3dhdGNoZG9nX3VwKGRldik7Cn0KCnN0YXRp
YyBpbmxpbmUgdm9pZCBuZXRpZl9jYXJyaWVyX29mZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7
CiAgICAgICAgc2V0X2JpdChfX0xJTktfU1RBVEVfTk9DQVJSSUVSLCAmZGV2LT5zdGF0ZSk7Cn0K
CgpzdGF0aWMgaW5saW5lIGludCBuZXRpZl9kZXZpY2VfcHJlc2VudChzdHJ1Y3QgbmV0X2Rldmlj
ZSAqZGV2KQp7CiAgICAgICAgcmV0dXJuIChfX2J1aWx0aW5fY29uc3RhbnRfcChfX0xJTktfU1RB
VEVfUFJFU0VOVCkgPyBjb25zdGFudF90ZXN0X2JpdCgoX19MSU5LX1NUQVRFX1BSRVNFTlQpLCgm
ZGV2LT5zdGF0ZSkpIDogdmFyaWFibGVfdGVzdF9iaXQoKF9fTElOS19TVEFURV9QUkVTRU5UKSwo
JmRldi0+c3RhdGUpKSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBuZXRpZl9kZXZpY2VfZGV0YWNo
KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICBpZiAodGVzdF9hbmRfY2xlYXJfYml0
KF9fTElOS19TVEFURV9QUkVTRU5ULCAmZGV2LT5zdGF0ZSkgJiYKICAgICAgICAgICAgbmV0aWZf
cnVubmluZyhkZXYpKSB7CiAgICAgICAgICAgICAgICBuZXRpZl9zdG9wX3F1ZXVlKGRldik7CiAg
ICAgICAgfQp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbmV0aWZfZGV2aWNlX2F0dGFjaChzdHJ1Y3Qg
bmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgaWYgKCF0ZXN0X2FuZF9zZXRfYml0KF9fTElOS19T
VEFURV9QUkVTRU5ULCAmZGV2LT5zdGF0ZSkgJiYKICAgICAgICAgICAgbmV0aWZfcnVubmluZyhk
ZXYpKSB7CiAgICAgICAgICAgICAgICBuZXRpZl93YWtlX3F1ZXVlKGRldik7CiAgICAgICAgICAg
ICAgICBfX25ldGRldl93YXRjaGRvZ191cChkZXYpOwogICAgICAgIH0KfQoKCgoKCgplbnVtIHsK
ICAgICAgICBORVRJRl9NU0dfRFJWID0gMHgwMDAxLAogICAgICAgIE5FVElGX01TR19QUk9CRSA9
IDB4MDAwMiwKICAgICAgICBORVRJRl9NU0dfTElOSyA9IDB4MDAwNCwKICAgICAgICBORVRJRl9N
U0dfVElNRVIgPSAweDAwMDgsCiAgICAgICAgTkVUSUZfTVNHX0lGRE9XTiA9IDB4MDAxMCwKICAg
ICAgICBORVRJRl9NU0dfSUZVUCA9IDB4MDAyMCwKICAgICAgICBORVRJRl9NU0dfUlhfRVJSID0g
MHgwMDQwLAogICAgICAgIE5FVElGX01TR19UWF9FUlIgPSAweDAwODAsCiAgICAgICAgTkVUSUZf
TVNHX1RYX1FVRVVFRCA9IDB4MDEwMCwKICAgICAgICBORVRJRl9NU0dfSU5UUiA9IDB4MDIwMCwK
ICAgICAgICBORVRJRl9NU0dfVFhfRE9ORSA9IDB4MDQwMCwKICAgICAgICBORVRJRl9NU0dfUlhf
U1RBVFVTID0gMHgwODAwLAogICAgICAgIE5FVElGX01TR19QS1REQVRBID0gMHgxMDAwLAp9Owoj
IDY3NiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCIKZXh0ZXJuIHZv
aWQgZXRoZXJfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CmV4dGVybiB2b2lkIGZkZGlf
c2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CmV4dGVybiB2b2lkIHRyX3NldHVwKHN0cnVj
dCBuZXRfZGV2aWNlICpkZXYpOwpleHRlcm4gdm9pZCBmY19zZXR1cChzdHJ1Y3QgbmV0X2Rldmlj
ZSAqZGV2KTsKZXh0ZXJuIHZvaWQgZmNfZnJlZWRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsK
CmV4dGVybiBpbnQgcmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpleHRl
cm4gdm9pZCB1bnJlZ2lzdGVyX25ldGRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKCmV4dGVy
biB2b2lkIGRldl9tY191cGxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CmV4dGVybiBpbnQg
ZGV2X21jX2RlbGV0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICphZGRyLCBpbnQgYWxl
biwgaW50IGFsbCk7CmV4dGVybiBpbnQgZGV2X21jX2FkZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2
LCB2b2lkICphZGRyLCBpbnQgYWxlbiwgaW50IG5ld29ubHkpOwpleHRlcm4gdm9pZCBkZXZfbWNf
ZGlzY2FyZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKZXh0ZXJuIHZvaWQgZGV2X3NldF9wcm9t
aXNjdWl0eShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgaW5jKTsKZXh0ZXJuIHZvaWQgZGV2
X3NldF9hbGxtdWx0aShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgaW5jKTsKZXh0ZXJuIHZv
aWQgbmV0ZGV2X3N0YXRlX2NoYW5nZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKCmV4dGVybiB2
b2lkIGRldl9sb2FkKGNvbnN0IGNoYXIgKm5hbWUpOwpleHRlcm4gdm9pZCBkZXZfbWNhc3RfaW5p
dCh2b2lkKTsKZXh0ZXJuIGludCBuZXRkZXZfcmVnaXN0ZXJfZmMoc3RydWN0IG5ldF9kZXZpY2Ug
KmRldiwgdm9pZCAoKnN0aW11bCkoc3RydWN0IG5ldF9kZXZpY2UgKmRldikpOwpleHRlcm4gdm9p
ZCBuZXRkZXZfdW5yZWdpc3Rlcl9mYyhpbnQgYml0KTsKZXh0ZXJuIGludCBuZXRkZXZfbWF4X2Jh
Y2tsb2c7CmV4dGVybiB1bnNpZ25lZCBsb25nIG5ldGRldl9mY194b2ZmOwpleHRlcm4gYXRvbWlj
X3QgbmV0ZGV2X2Ryb3BwaW5nOwpleHRlcm4gaW50IG5ldGRldl9zZXRfbWFzdGVyKHN0cnVjdCBu
ZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRfZGV2aWNlICptYXN0ZXIpOwpleHRlcm4gc3RydWN0
IHNrX2J1ZmYgKiBza2JfY2hlY2tzdW1faGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKIyAxNTIg
IjgxMzl0b28uYyIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZXRoZXJkZXZp
Y2UuaCIgMQojIDI3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2V0aGVyZGV2aWNlLmgi
CiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pZl9ldGhlci5oIiAxCiMgMjggIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZXRoZXJkZXZpY2UuaCIgMgoKCmV4dGVybiBpbnQg
ZXRoX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHR5cGUsIHZv
aWQgKmRhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnNhZGRy
LCB1bnNpZ25lZCBsZW4pOwpleHRlcm4gaW50IGV0aF9yZWJ1aWxkX2hlYWRlcihzdHJ1Y3Qgc2tf
YnVmZiAqc2tiKTsKZXh0ZXJuIHVuc2lnbmVkIHNob3J0IGV0aF90eXBlX3RyYW5zKHN0cnVjdCBz
a19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpleHRlcm4gdm9pZCBldGhfaGVh
ZGVyX2NhY2hlX3VwZGF0ZShzdHJ1Y3QgaGhfY2FjaGUgKmhoLCBzdHJ1Y3QgbmV0X2RldmljZSAq
ZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBjaGFyICogaGFkZHIpOwpleHRlcm4gaW50IGV0aF9oZWFkZXJfY2FjaGUoc3RydWN0IG5l
aWdoYm91ciAqbmVpZ2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RydWN0IGhoX2NhY2hlICpoaCk7CmV4dGVybiBpbnQgZXRoX2hlYWRlcl9wYXJzZShzdHJ1Y3Qg
c2tfYnVmZiAqc2tiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGNoYXIgKmhhZGRyKTsKZXh0ZXJuIHN0cnVjdCBuZXRfZGV2aWNlICppbml0X2V0aGVy
ZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBzaXplb2ZfcHJpdik7CmV4dGVybiBzdHJ1
Y3QgbmV0X2RldmljZSAqYWxsb2NfZXRoZXJkZXYoaW50IHNpemVvZl9wcml2KTsKCnN0YXRpYyBp
bmxpbmUgdm9pZCBldGhfY29weV9hbmRfc3VtIChzdHJ1Y3Qgc2tfYnVmZiAqZGVzdCwgdW5zaWdu
ZWQgY2hhciAqc3JjLCBpbnQgbGVuLCBpbnQgYmFzZSkKewogICAgICAgIChfX2J1aWx0aW5fY29u
c3RhbnRfcChsZW4pID8gX19jb25zdGFudF9tZW1jcHkoKGRlc3QtPmRhdGEpLChzcmMpLChsZW4p
KSA6IF9fbWVtY3B5KChkZXN0LT5kYXRhKSwoc3JjKSwobGVuKSkpOwp9CiMgNTkgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvZXRoZXJkZXZpY2UuaCIKc3RhdGljIGlubGluZSBpbnQgaXNf
dmFsaWRfZXRoZXJfYWRkciggdTggKmFkZHIgKQp7CiAgICAgICAgY29uc3QgY2hhciB6YWRkcls2
XSA9IHswLH07CgogICAgICAgIHJldHVybiAhKGFkZHJbMF0mMSkgJiYgX19idWlsdGluX21lbWNt
cCggYWRkciwgemFkZHIsIDYpOwp9CiMgMTUzICI4MTM5dG9vLmMiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3J0bmV0bGluay5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9uZXRsaW5rLmgiIDEKIyAxNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9uZXRsaW5rLmgiCnN0cnVjdCBzb2NrYWRkcl9ubAp7CiAgICAgICAgc2FfZmFtaWx5X3Qg
bmxfZmFtaWx5OwogICAgICAgIHVuc2lnbmVkIHNob3J0IG5sX3BhZDsKICAgICAgICBfX3UzMiBu
bF9waWQ7CiAgICAgICAgX191MzIgbmxfZ3JvdXBzOwp9OwoKc3RydWN0IG5sbXNnaGRyCnsKICAg
ICAgICBfX3UzMiBubG1zZ19sZW47CiAgICAgICAgX191MTYgbmxtc2dfdHlwZTsKICAgICAgICBf
X3UxNiBubG1zZ19mbGFnczsKICAgICAgICBfX3UzMiBubG1zZ19zZXE7CiAgICAgICAgX191MzIg
bmxtc2dfcGlkOwp9OwojIDc3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25ldGxpbmsu
aCIKc3RydWN0IG5sbXNnZXJyCnsKICAgICAgICBpbnQgZXJyb3I7CiAgICAgICAgc3RydWN0IG5s
bXNnaGRyIG1zZzsKfTsKCgoKCgpzdHJ1Y3QgbmV0bGlua19za2JfcGFybXMKewogICAgICAgIHN0
cnVjdCB1Y3JlZCBjcmVkczsKICAgICAgICBfX3UzMiBwaWQ7CiAgICAgICAgX191MzIgZ3JvdXBz
OwogICAgICAgIF9fdTMyIGRzdF9waWQ7CiAgICAgICAgX191MzIgZHN0X2dyb3VwczsKICAgICAg
ICBrZXJuZWxfY2FwX3QgZWZmX2NhcDsKfTsKCgoKCgpleHRlcm4gaW50IG5ldGxpbmtfYXR0YWNo
KGludCB1bml0LCBpbnQgKCpmdW5jdGlvbikoaW50LHN0cnVjdCBza19idWZmICpza2IpKTsKZXh0
ZXJuIHZvaWQgbmV0bGlua19kZXRhY2goaW50IHVuaXQpOwpleHRlcm4gaW50IG5ldGxpbmtfcG9z
dChpbnQgdW5pdCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7CmV4dGVybiBpbnQgaW5pdF9uZXRsaW5r
KHZvaWQpOwpleHRlcm4gc3RydWN0IHNvY2sgKm5ldGxpbmtfa2VybmVsX2NyZWF0ZShpbnQgdW5p
dCwgdm9pZCAoKmlucHV0KShzdHJ1Y3Qgc29jayAqc2ssIGludCBsZW4pKTsKZXh0ZXJuIHZvaWQg
bmV0bGlua19hY2soc3RydWN0IHNrX2J1ZmYgKmluX3NrYiwgc3RydWN0IG5sbXNnaGRyICpubGgs
IGludCBlcnIpOwpleHRlcm4gaW50IG5ldGxpbmtfdW5pY2FzdChzdHJ1Y3Qgc29jayAqc3NrLCBz
dHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX3UzMiBwaWQsIGludCBub25ibG9jayk7CmV4dGVybiB2b2lk
IG5ldGxpbmtfYnJvYWRjYXN0KHN0cnVjdCBzb2NrICpzc2ssIHN0cnVjdCBza19idWZmICpza2Is
IF9fdTMyIHBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZ3JvdXAsIGlu
dCBhbGxvY2F0aW9uKTsKZXh0ZXJuIHZvaWQgbmV0bGlua19zZXRfZXJyKHN0cnVjdCBzb2NrICpz
c2ssIF9fdTMyIHBpZCwgX191MzIgZ3JvdXAsIGludCBjb2RlKTsKIyAxMjAgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvbmV0bGluay5oIgpzdHJ1Y3QgbmV0bGlua19jYWxsYmFjawp7CiAg
ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYjsKICAgICAgICBzdHJ1Y3Qgbmxtc2doZHIgKm5saDsK
ICAgICAgICBpbnQgKCpkdW1wKShzdHJ1Y3Qgc2tfYnVmZiAqIHNrYiwgc3RydWN0IG5ldGxpbmtf
Y2FsbGJhY2sgKmNiKTsKICAgICAgICBpbnQgKCpkb25lKShzdHJ1Y3QgbmV0bGlua19jYWxsYmFj
ayAqY2IpOwogICAgICAgIGludCBmYW1pbHk7CiAgICAgICAgbG9uZyBhcmdzWzRdOwp9OwoKc3Rh
dGljIF9faW5saW5lX18gc3RydWN0IG5sbXNnaGRyICoKX19ubG1zZ19wdXQoc3RydWN0IHNrX2J1
ZmYgKnNrYiwgdTMyIHBpZCwgdTMyIHNlcSwgaW50IHR5cGUsIGludCBsZW4pCnsKICAgICAgICBz
dHJ1Y3Qgbmxtc2doZHIgKm5saDsKICAgICAgICBpbnQgc2l6ZSA9ICgobGVuKSsoICgoc2l6ZW9m
KHN0cnVjdCBubG1zZ2hkcikpKzQgLTEpICYgfig0IC0xKSApKTsKCiAgICAgICAgbmxoID0gKHN0
cnVjdCBubG1zZ2hkciopc2tiX3B1dChza2IsICggKChzaXplKSs0IC0xKSAmIH4oNCAtMSkgKSk7
CiAgICAgICAgbmxoLT5ubG1zZ190eXBlID0gdHlwZTsKICAgICAgICBubGgtPm5sbXNnX2xlbiA9
IHNpemU7CiAgICAgICAgbmxoLT5ubG1zZ19mbGFncyA9IDA7CiAgICAgICAgbmxoLT5ubG1zZ19w
aWQgPSBwaWQ7CiAgICAgICAgbmxoLT5ubG1zZ19zZXEgPSBzZXE7CiAgICAgICAgcmV0dXJuIG5s
aDsKfQoKCgoKCmV4dGVybiBpbnQgbmV0bGlua19kdW1wX3N0YXJ0KHN0cnVjdCBzb2NrICpzc2ss
IHN0cnVjdCBza19idWZmICpza2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBubG1zZ2hkciAqbmxoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKCpkdW1w
KShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayopLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgKCpkb25lKShzdHJ1Y3QgbmV0bGlua19jYWxsYmFj
ayopKTsKIyA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3J0bmV0bGluay5oIiAyCiMg
NTcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcnRuZXRsaW5rLmgiCnN0cnVjdCBydGF0
dHIKewogICAgICAgIHVuc2lnbmVkIHNob3J0IHJ0YV9sZW47CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgcnRhX3R5cGU7Cn07CiMgODMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcnRuZXRs
aW5rLmgiCnN0cnVjdCBydG1zZwp7CiAgICAgICAgdW5zaWduZWQgY2hhciBydG1fZmFtaWx5Owog
ICAgICAgIHVuc2lnbmVkIGNoYXIgcnRtX2RzdF9sZW47CiAgICAgICAgdW5zaWduZWQgY2hhciBy
dG1fc3JjX2xlbjsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJ0bV90b3M7CgogICAgICAgIHVuc2ln
bmVkIGNoYXIgcnRtX3RhYmxlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcnRtX3Byb3RvY29sOwog
ICAgICAgIHVuc2lnbmVkIGNoYXIgcnRtX3Njb3BlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcnRt
X3R5cGU7CgogICAgICAgIHVuc2lnbmVkIHJ0bV9mbGFnczsKfTsKCgoKZW51bQp7CiAgICAgICAg
UlROX1VOU1BFQywKICAgICAgICBSVE5fVU5JQ0FTVCwKICAgICAgICBSVE5fTE9DQUwsCiAgICAg
ICAgUlROX0JST0FEQ0FTVCwKCiAgICAgICAgUlROX0FOWUNBU1QsCgogICAgICAgIFJUTl9NVUxU
SUNBU1QsCiAgICAgICAgUlROX0JMQUNLSE9MRSwKICAgICAgICBSVE5fVU5SRUFDSEFCTEUsCiAg
ICAgICAgUlROX1BST0hJQklULAogICAgICAgIFJUTl9USFJPVywKICAgICAgICBSVE5fTkFULAog
ICAgICAgIFJUTl9YUkVTT0xWRSwKfTsKIyAxNTUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvcnRuZXRsaW5rLmgiCmVudW0gcnRfc2NvcGVfdAp7CiAgICAgICAgUlRfU0NPUEVfVU5JVkVS
U0U9MCwKCiAgICAgICAgUlRfU0NPUEVfU0lURT0yMDAsCiAgICAgICAgUlRfU0NPUEVfTElOSz0y
NTMsCiAgICAgICAgUlRfU0NPUEVfSE9TVD0yNTQsCiAgICAgICAgUlRfU0NPUEVfTk9XSEVSRT0y
NTUKfTsKIyAxNzMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcnRuZXRsaW5rLmgiCmVu
dW0gcnRfY2xhc3NfdAp7CiAgICAgICAgUlRfVEFCTEVfVU5TUEVDPTAsCgogICAgICAgIFJUX1RB
QkxFX0RFRkFVTFQ9MjUzLAogICAgICAgIFJUX1RBQkxFX01BSU49MjU0LAogICAgICAgIFJUX1RB
QkxFX0xPQ0FMPTI1NQp9OwoKCgoKCgplbnVtIHJ0YXR0cl90eXBlX3QKewogICAgICAgIFJUQV9V
TlNQRUMsCiAgICAgICAgUlRBX0RTVCwKICAgICAgICBSVEFfU1JDLAogICAgICAgIFJUQV9JSUYs
CiAgICAgICAgUlRBX09JRiwKICAgICAgICBSVEFfR0FURVdBWSwKICAgICAgICBSVEFfUFJJT1JJ
VFksCiAgICAgICAgUlRBX1BSRUZTUkMsCiAgICAgICAgUlRBX01FVFJJQ1MsCiAgICAgICAgUlRB
X01VTFRJUEFUSCwKICAgICAgICBSVEFfUFJPVE9JTkZPLAogICAgICAgIFJUQV9GTE9XLAogICAg
ICAgIFJUQV9DQUNIRUlORk8KfTsKIyAyMTggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
cnRuZXRsaW5rLmgiCnN0cnVjdCBydG5leHRob3AKewogICAgICAgIHVuc2lnbmVkIHNob3J0IHJ0
bmhfbGVuOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcnRuaF9mbGFnczsKICAgICAgICB1bnNpZ25l
ZCBjaGFyIHJ0bmhfaG9wczsKICAgICAgICBpbnQgcnRuaF9pZmluZGV4Owp9OwojIDI0NSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9ydG5ldGxpbmsuaCIKc3RydWN0IHJ0YV9jYWNoZWlu
Zm8KewogICAgICAgIF9fdTMyIHJ0YV9jbG50cmVmOwogICAgICAgIF9fdTMyIHJ0YV9sYXN0dXNl
OwogICAgICAgIF9fczMyIHJ0YV9leHBpcmVzOwogICAgICAgIF9fdTMyIHJ0YV9lcnJvcjsKICAg
ICAgICBfX3UzMiBydGFfdXNlZDsKCgogICAgICAgIF9fdTMyIHJ0YV9pZDsKICAgICAgICBfX3Uz
MiBydGFfdHM7CiAgICAgICAgX191MzIgcnRhX3RzYWdlOwp9OwoKCgplbnVtCnsKICAgICAgICBS
VEFYX1VOU1BFQywKCiAgICAgICAgUlRBWF9MT0NLLAoKICAgICAgICBSVEFYX01UVSwKCiAgICAg
ICAgUlRBWF9XSU5ET1csCgogICAgICAgIFJUQVhfUlRULAoKICAgICAgICBSVEFYX1JUVFZBUiwK
CiAgICAgICAgUlRBWF9TU1RIUkVTSCwKCiAgICAgICAgUlRBWF9DV05ELAoKICAgICAgICBSVEFY
X0FEVk1TUywKCiAgICAgICAgUlRBWF9SRU9SREVSSU5HLAoKfTsKIyAyOTMgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvcnRuZXRsaW5rLmgiCnN0cnVjdCBpZmFkZHJtc2cKewogICAgICAg
IHVuc2lnbmVkIGNoYXIgaWZhX2ZhbWlseTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGlmYV9wcmVm
aXhsZW47CiAgICAgICAgdW5zaWduZWQgY2hhciBpZmFfZmxhZ3M7CiAgICAgICAgdW5zaWduZWQg
Y2hhciBpZmFfc2NvcGU7CiAgICAgICAgaW50IGlmYV9pbmRleDsKfTsKCmVudW0KewogICAgICAg
IElGQV9VTlNQRUMsCiAgICAgICAgSUZBX0FERFJFU1MsCiAgICAgICAgSUZBX0xPQ0FMLAogICAg
ICAgIElGQV9MQUJFTCwKICAgICAgICBJRkFfQlJPQURDQVNULAogICAgICAgIElGQV9BTllDQVNU
LAogICAgICAgIElGQV9DQUNIRUlORk8KfTsKIyAzMjMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvcnRuZXRsaW5rLmgiCnN0cnVjdCBpZmFfY2FjaGVpbmZvCnsKICAgICAgICBfX3MzMiBp
ZmFfcHJlZmVyZWQ7CiAgICAgICAgX19zMzIgaWZhX3ZhbGlkOwp9OwojIDM0NSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9ydG5ldGxpbmsuaCIKc3RydWN0IG5kbXNnCnsKICAgICAgICB1
bnNpZ25lZCBjaGFyIG5kbV9mYW1pbHk7CiAgICAgICAgdW5zaWduZWQgY2hhciBuZG1fcGFkMTsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBuZG1fcGFkMjsKICAgICAgICBpbnQgbmRtX2lmaW5kZXg7
CiAgICAgICAgX191MTYgbmRtX3N0YXRlOwogICAgICAgIF9fdTggbmRtX2ZsYWdzOwogICAgICAg
IF9fdTggbmRtX3R5cGU7Cn07CgplbnVtCnsKICAgICAgICBOREFfVU5TUEVDLAogICAgICAgIE5E
QV9EU1QsCiAgICAgICAgTkRBX0xMQUREUiwKICAgICAgICBOREFfQ0FDSEVJTkZPCn07CiMgMzkz
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3J0bmV0bGluay5oIgpzdHJ1Y3QgbmRhX2Nh
Y2hlaW5mbwp7CiAgICAgICAgX191MzIgbmRtX2NvbmZpcm1lZDsKICAgICAgICBfX3UzMiBuZG1f
dXNlZDsKICAgICAgICBfX3UzMiBuZG1fdXBkYXRlZDsKICAgICAgICBfX3UzMiBuZG1fcmVmY250
Owp9OwoKCgoKCnN0cnVjdCBydGdlbm1zZwp7CiAgICAgICAgdW5zaWduZWQgY2hhciBydGdlbl9m
YW1pbHk7Cn07CiMgNDE5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3J0bmV0bGluay5o
IgpzdHJ1Y3QgaWZpbmZvbXNnCnsKICAgICAgICB1bnNpZ25lZCBjaGFyIGlmaV9mYW1pbHk7CiAg
ICAgICAgdW5zaWduZWQgY2hhciBfX2lmaV9wYWQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgaWZp
X3R5cGU7CiAgICAgICAgaW50IGlmaV9pbmRleDsKICAgICAgICB1bnNpZ25lZCBpZmlfZmxhZ3M7
CiAgICAgICAgdW5zaWduZWQgaWZpX2NoYW5nZTsKfTsKCmVudW0KewogICAgICAgIElGTEFfVU5T
UEVDLAogICAgICAgIElGTEFfQUREUkVTUywKICAgICAgICBJRkxBX0JST0FEQ0FTVCwKICAgICAg
ICBJRkxBX0lGTkFNRSwKICAgICAgICBJRkxBX01UVSwKICAgICAgICBJRkxBX0xJTkssCiAgICAg
ICAgSUZMQV9RRElTQywKICAgICAgICBJRkxBX1NUQVRTLAogICAgICAgIElGTEFfQ09TVCwKCiAg
ICAgICAgSUZMQV9QUklPUklUWSwKCiAgICAgICAgSUZMQV9NQVNURVIKCn07CiMgNDg2ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3J0bmV0bGluay5oIgpzdHJ1Y3QgdGNtc2cKewogICAg
ICAgIHVuc2lnbmVkIGNoYXIgdGNtX2ZhbWlseTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHRjbV9f
cGFkMTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB0Y21fX3BhZDI7CiAgICAgICAgaW50IHRjbV9p
ZmluZGV4OwogICAgICAgIF9fdTMyIHRjbV9oYW5kbGU7CiAgICAgICAgX191MzIgdGNtX3BhcmVu
dDsKICAgICAgICBfX3UzMiB0Y21faW5mbzsKfTsKCmVudW0KewogICAgICAgIFRDQV9VTlNQRUMs
CiAgICAgICAgVENBX0tJTkQsCiAgICAgICAgVENBX09QVElPTlMsCiAgICAgICAgVENBX1NUQVRT
LAogICAgICAgIFRDQV9YU1RBVFMsCiAgICAgICAgVENBX1JBVEUsCn07CiMgNTM5ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3J0bmV0bGluay5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA1NDAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvcnRuZXRsaW5rLmgiIDIKCnN0YXRpYyBfX2lubGluZV9fIGludCBydGF0dHJfc3RyY21wKHN0
cnVjdCBydGF0dHIgKnJ0YSwgY2hhciAqc3RyKQp7CiAgICAgICAgaW50IGxlbiA9IHN0cmxlbihz
dHIpICsgMTsKICAgICAgICByZXR1cm4gbGVuID4gcnRhLT5ydGFfbGVuIHx8IF9fYnVpbHRpbl9t
ZW1jbXAoKCh2b2lkKikoKChjaGFyKikocnRhKSkgKyAoKCAoKHNpemVvZihzdHJ1Y3QgcnRhdHRy
KSkrNCAtMSkgJiB+KDQgLTEpICkgKyAoMCkpKSksIHN0ciwgbGVuKTsKfQoKZXh0ZXJuIGludCBy
dGF0dHJfcGFyc2Uoc3RydWN0IHJ0YXR0ciAqdGJbXSwgaW50IG1heGF0dHIsIHN0cnVjdCBydGF0
dHIgKnJ0YSwgaW50IGxlbik7CgoKZXh0ZXJuIHN0cnVjdCBzb2NrICpydG5sOwoKc3RydWN0IHJ0
bmV0bGlua19saW5rCnsKICAgICAgICBpbnQgKCpkb2l0KShzdHJ1Y3Qgc2tfYnVmZiAqLCBzdHJ1
Y3Qgbmxtc2doZHIqLCB2b2lkICphdHRyKTsKICAgICAgICBpbnQgKCpkdW1waXQpKHN0cnVjdCBz
a19idWZmICosIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYik7Cn07CgpleHRlcm4gc3RydWN0
IHJ0bmV0bGlua19saW5rICogcnRuZXRsaW5rX2xpbmtzWzMyXTsKZXh0ZXJuIGludCBydG5ldGxp
bmtfZHVtcF9pZmluZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJh
Y2sgKmNiKTsKZXh0ZXJuIGludCBydG5ldGxpbmtfc2VuZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1
MzIgcGlkLCB1MzIgZ3JvdXAsIGludCBlY2hvKTsKZXh0ZXJuIGludCBydG5ldGxpbmtfcHV0X21l
dHJpY3Moc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgKm1ldHJpY3MpOwoKZXh0ZXJuIHZv
aWQgX19ydGFfZmlsbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgYXR0cnR5cGUsIGludCBhdHRy
bGVuLCBjb25zdCB2b2lkICpkYXRhKTsKCgoKCgpleHRlcm4gdm9pZCBydG1zZ19pZmluZm8oaW50
IHR5cGUsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGNoYW5nZSk7CgoKCgoKCgpl
eHRlcm4gc3RydWN0IHNlbWFwaG9yZSBydG5sX3NlbTsKIyA1OTUgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvcnRuZXRsaW5rLmgiCmV4dGVybiB2b2lkIHJ0bmxfbG9jayh2b2lkKTsKZXh0
ZXJuIHZvaWQgcnRubF91bmxvY2sodm9pZCk7CmV4dGVybiB2b2lkIHJ0bmV0bGlua19pbml0KHZv
aWQpOwojIDE1NCAiODEzOXRvby5jIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9kZWxheS5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZGVsYXkuaCIK
ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9vcHNfcGVyX2ppZmZ5OwoKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2FzbS9kZWxheS5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNt
L2RlbGF5LmgiCmV4dGVybiB2b2lkIF9fYmFkX3VkZWxheSh2b2lkKTsKCmV4dGVybiB2b2lkIF9f
dWRlbGF5KHVuc2lnbmVkIGxvbmcgdXNlY3MpOwpleHRlcm4gdm9pZCBfX2NvbnN0X3VkZWxheSh1
bnNpZ25lZCBsb25nIHVzZWNzKTsKZXh0ZXJuIHZvaWQgX19kZWxheSh1bnNpZ25lZCBsb25nIGxv
b3BzKTsKIyAxMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9kZWxheS5oIiAyCiMgMTU1
ICI4MTM5dG9vLmMiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2V0aHRvb2wu
aCIgMQojIDEzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaCIKc3RydWN0
IGV0aHRvb2xfY21kIHsKICAgICAgICB1MzIgY21kOwogICAgICAgIHUzMiBzdXBwb3J0ZWQ7CiAg
ICAgICAgdTMyIGFkdmVydGlzaW5nOwogICAgICAgIHUxNiBzcGVlZDsKICAgICAgICB1OCBkdXBs
ZXg7CiAgICAgICAgdTggcG9ydDsKICAgICAgICB1OCBwaHlfYWRkcmVzczsKICAgICAgICB1OCB0
cmFuc2NlaXZlcjsKICAgICAgICB1OCBhdXRvbmVnOwogICAgICAgIHUzMiBtYXh0eHBrdDsKICAg
ICAgICB1MzIgbWF4cnhwa3Q7CiAgICAgICAgdTMyIHJlc2VydmVkWzRdOwp9OwoKCnN0cnVjdCBl
dGh0b29sX2RydmluZm8gewogICAgICAgIHUzMiBjbWQ7CiAgICAgICAgY2hhciBkcml2ZXJbMzJd
OwogICAgICAgIGNoYXIgdmVyc2lvblszMl07CiAgICAgICAgY2hhciBmd192ZXJzaW9uWzMyXTsK
ICAgICAgICBjaGFyIGJ1c19pbmZvWzMyXTsKCiAgICAgICAgY2hhciByZXNlcnZlZDFbMzJdOwog
ICAgICAgIGNoYXIgcmVzZXJ2ZWQyWzI4XTsKICAgICAgICB1MzIgcmVnZHVtcF9sZW47Cn07CgoK
CnN0cnVjdCBldGh0b29sX3dvbGluZm8gewogICAgICAgIHUzMiBjbWQ7CiAgICAgICAgdTMyIHN1
cHBvcnRlZDsKICAgICAgICB1MzIgd29sb3B0czsKICAgICAgICB1OCBzb3Bhc3NbNl07Cn07CiMg
MTU2ICI4MTM5dG9vLmMiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21paS5o
IiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbWlpLmgiCiMgMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvbWlpLmgiIDIKIyAxMDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
bWlpLmgiCnN0cnVjdCBtaWlfaW9jdGxfZGF0YSB7CiAgICAgICAgdTE2IHBoeV9pZDsKICAgICAg
ICB1MTYgcmVnX251bTsKICAgICAgICB1MTYgdmFsX2luOwogICAgICAgIHUxNiB2YWxfb3V0Owp9
OwojIDEyNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9taWkuaCIKc3RhdGljIGlubGlu
ZSB1bnNpZ25lZCBpbnQgbWlpX253YXlfcmVzdWx0ICh1bnNpZ25lZCBpbnQgbmVnb3RpYXRlZCkK
ewogICAgICAgIHVuc2lnbmVkIGludCByZXQ7CgogICAgICAgIGlmIChuZWdvdGlhdGVkICYgMHgw
MTAwKQogICAgICAgICAgICAgICAgcmV0ID0gMHgwMTAwOwogICAgICAgIGVsc2UgaWYgKG5lZ290
aWF0ZWQgJiAweDAyMDApCiAgICAgICAgICAgICAgICByZXQgPSAweDAyMDA7CiAgICAgICAgZWxz
ZSBpZiAobmVnb3RpYXRlZCAmIDB4MDA4MCkKICAgICAgICAgICAgICAgIHJldCA9IDB4MDA4MDsK
ICAgICAgICBlbHNlIGlmIChuZWdvdGlhdGVkICYgMHgwMDQwKQogICAgICAgICAgICAgICAgcmV0
ID0gMHgwMDQwOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHJldCA9IDB4MDAyMDsKCiAg
ICAgICAgcmV0dXJuIHJldDsKfQojIDE1NCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9t
aWkuaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgbWlpX2R1cGxleCAodW5zaWduZWQgaW50
IGR1cGxleF9sb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgbmVnb3RpYXRlZCkKewogICAgICAgIGlmIChkdXBsZXhfbG9jaykKICAgICAgICAg
ICAgICAgIHJldHVybiAxOwogICAgICAgIGlmIChtaWlfbndheV9yZXN1bHQobmVnb3RpYXRlZCkg
JiAoMHgwMDQwIHwgMHgwMTAwKSkKICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIHJl
dHVybiAwOwp9CiMgMTU3ICI4MTM5dG9vLmMiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L2NvbXBsZXRpb24uaCIgMQojIDE1OCAiODEzOXRvby5jIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9hc20vaW8uaCIgMQojIDE1OSAiODEzOXRvby5jIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIiAxCgoKCgoKCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
YXNtL3VhY2Nlc3MuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQu
aCIgMQojIDkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcHJlZmV0Y2guaCIgMQojIDEwICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2FzbS9wYWdlLmgiIDEKIyAxMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vdWFjY2Vzcy5o
IiAyCiMgMzUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIKZXh0ZXJuIGlu
dCBfX3ZlcmlmeV93cml0ZShjb25zdCB2b2lkICosIHVuc2lnbmVkIGxvbmcpOwojIDYyICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCnN0YXRpYyBpbmxpbmUgaW50IHZlcmlm
eV9hcmVhKGludCB0eXBlLCBjb25zdCB2b2lkICogYWRkciwgdW5zaWduZWQgbG9uZyBzaXplKQp7
CiAgICAgICAgcmV0dXJuICgoeyB1bnNpZ25lZCBsb25nIGZsYWcsc3VtOyBhc20oImFkZGwgJTMs
JTEgOyBzYmJsICUwLCUwOyBjbXBsICUxLCU0OyBzYmJsICQwLCUwIiA6Ij0mciIgKGZsYWcpLCAi
PXIiIChzdW0pIDoiMSIgKGFkZHIpLCJnIiAoKGludCkoc2l6ZSkpLCJnIiAoZ2V0X2N1cnJlbnQo
KS0+YWRkcl9saW1pdC5zZWcpKTsgZmxhZzsgfSkgPT0gMCkgPyAwIDogLTE0Owp9CiMgODEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIKc3RydWN0IGV4Y2VwdGlvbl90YWJs
ZV9lbnRyeQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpbnNuLCBmaXh1cDsKfTsKCgpleHRlcm4g
dW5zaWduZWQgbG9uZyBzZWFyY2hfZXhjZXB0aW9uX3RhYmxlKHVuc2lnbmVkIGxvbmcpOwojIDEw
NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpleHRlcm4gdm9pZCBfX2dl
dF91c2VyXzEodm9pZCk7CmV4dGVybiB2b2lkIF9fZ2V0X3VzZXJfMih2b2lkKTsKZXh0ZXJuIHZv
aWQgX19nZXRfdXNlcl80KHZvaWQpOwojIDEyNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20v
dWFjY2Vzcy5oIgpleHRlcm4gdm9pZCBfX3B1dF91c2VyXzEodm9pZCk7CmV4dGVybiB2b2lkIF9f
cHV0X3VzZXJfMih2b2lkKTsKZXh0ZXJuIHZvaWQgX19wdXRfdXNlcl80KHZvaWQpOwpleHRlcm4g
dm9pZCBfX3B1dF91c2VyXzgodm9pZCk7CgpleHRlcm4gdm9pZCBfX3B1dF91c2VyX2JhZCh2b2lk
KTsKIyAxODggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIKc3RydWN0IF9f
bGFyZ2Vfc3RydWN0IHsgdW5zaWduZWQgbG9uZyBidWZbMTAwXTsgfTsKIyAyMjAgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIKZXh0ZXJuIGxvbmcgX19nZXRfdXNlcl9iYWQo
dm9pZCk7CiMgMzA4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCnN0YXRp
YyBpbmxpbmUgdW5zaWduZWQgbG9uZwpfX2dlbmVyaWNfY29weV9mcm9tX3VzZXJfbm9jaGVjayh2
b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKQp7CiAgICAgICAgZG8g
eyBpbnQgX19kMCwgX19kMTsgX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4i
ICIJbW92bCAlMywlMFxuIiAiMToJcmVwOyBtb3ZzYlxuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1
cCxcImF4XCJcbiIgIjM6CWxlYSAwKCUzLCUwLDQpLCUwXG4iICI0OglwdXNobCAlMFxuIiAiCXB1
c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXJlcDsgc3Rvc2JcbiIgIglwb3Bs
ICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlv
biBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAiCS5s
b25nIDFiLDRiXG4iICIucHJldmlvdXMiIDogIj0mYyIobiksICI9JkQiIChfX2QwKSwgIj0mUyIg
KF9fZDEpIDogInIiKG4gJiAzKSwgIjAiKG4gLyA0KSwgIjEiKHRvKSwgIjIiKGZyb20pIDogIm1l
bW9yeSIpOyB9IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4gbjsKfQoKc3RhdGljIGlubGluZSB1
bnNpZ25lZCBsb25nCl9fZ2VuZXJpY19jb3B5X3RvX3VzZXJfbm9jaGVjayh2b2lkICp0bywgY29u
c3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKQp7CiAgICAgICAgZG8geyBpbnQgX19kMCwg
X19kMTsgX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIJbW92bCAlMywl
MFxuIiAiMToJcmVwOyBtb3ZzYlxuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIg
IjM6CWxlYSAwKCUzLCUwLDQpLCUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0
aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJ
LmxvbmcgMWIsMmJcbiIgIi5wcmV2aW91cyIgOiAiPSZjIihuKSwgIj0mRCIgKF9fZDApLCAiPSZT
IiAoX19kMSkgOiAiciIobiAmIDMpLCAiMCIobiAvIDQpLCAiMSIodG8pLCAiMiIoZnJvbSkgOiAi
bWVtb3J5Iik7IH0gd2hpbGUgKDApOwogICAgICAgIHJldHVybiBuOwp9CiMgNTQzICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCnVuc2lnbmVkIGxvbmcgX19nZW5lcmljX2Nv
cHlfdG9fdXNlcih2b2lkICosIGNvbnN0IHZvaWQgKiwgdW5zaWduZWQgbG9uZyk7CnVuc2lnbmVk
IGxvbmcgX19nZW5lcmljX2NvcHlfZnJvbV91c2VyKHZvaWQgKiwgY29uc3Qgdm9pZCAqLCB1bnNp
Z25lZCBsb25nKTsKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwpfX2NvbnN0YW50X2NvcHlf
dG9fdXNlcih2b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKQp7CiAg
ICAgICAgcHJlZmV0Y2goZnJvbSk7CiAgICAgICAgaWYgKCgoeyB1bnNpZ25lZCBsb25nIGZsYWcs
c3VtOyBhc20oImFkZGwgJTMsJTEgOyBzYmJsICUwLCUwOyBjbXBsICUxLCU0OyBzYmJsICQwLCUw
IiA6Ij0mciIgKGZsYWcpLCAiPXIiIChzdW0pIDoiMSIgKHRvKSwiZyIgKChpbnQpKG4pKSwiZyIg
KGdldF9jdXJyZW50KCktPmFkZHJfbGltaXQuc2VnKSk7IGZsYWc7IH0pID09IDApKQogICAgICAg
ICAgICAgICAgZG8geyBpbnQgX19kMCwgX19kMTsgc3dpdGNoIChuICYgMykgeyBkZWZhdWx0OiBf
X2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6XG4iICIuc2VjdGlvbiAu
Zml4dXAsXCJheFwiXG4iICIyOglzaGwgJDIsJTBcbiIgIglqbXAgMWJcbiIgIi5wcmV2aW91c1xu
IiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIs
MmJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6
ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDE6
IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c2JcbiIgIjI6
XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglzaGwgJDIsJTBcbiIgIjQ6CWluY2wg
JTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFc
IlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnBy
ZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20p
LCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMjogX19hc21fXyBf
X3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3Zzd1xuIiAiMjpcbiIgIi5zZWN0
aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CXNobCAkMiwlMFxuIiAiNDoJYWRkbCAkMiwlMFxuIiAi
CWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJ
LmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAiCS5sb25nIDFiLDRiXG4iICIucHJldmlvdXMi
IDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0
byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAzOiBfX2FzbV9fIF9fdm9sYXRp
bGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnN3XG4iICIyOgltb3ZzYlxuIiAiMzpcbiIg
Ii5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjQ6CXNobCAkMiwlMFxuIiAiNToJYWRkbCAkMiwl
MFxuIiAiNjoJaW5jbCAlMFxuIiAiCWptcCAzYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBf
X2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiw0YlxuIiAiCS5sb25n
IDFiLDViXG4iICIJLmxvbmcgMmIsNmJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAo
X19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVt
b3J5Iik7IGJyZWFrOyB9IH0gd2hpbGUgKDApOwogICAgICAgIHJldHVybiBuOwp9CgpzdGF0aWMg
aW5saW5lIHVuc2lnbmVkIGxvbmcKX19jb25zdGFudF9jb3B5X2Zyb21fdXNlcih2b2lkICp0bywg
Y29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKQp7CiAgICAgICAgaWYgKCgoeyB1bnNp
Z25lZCBsb25nIGZsYWcsc3VtOyBhc20oImFkZGwgJTMsJTEgOyBzYmJsICUwLCUwOyBjbXBsICUx
LCU0OyBzYmJsICQwLCUwIiA6Ij0mciIgKGZsYWcpLCAiPXIiIChzdW0pIDoiMSIgKGZyb20pLCJn
IiAoKGludCkobikpLCJnIiAoZ2V0X2N1cnJlbnQoKS0+YWRkcl9saW1pdC5zZWcpKTsgZmxhZzsg
fSkgPT0gMCkpCiAgICAgICAgICAgICAgICBkbyB7IGludCBfX2QwLCBfX2QxOyBzd2l0Y2ggKG4g
JiAzKSB7IGRlZmF1bHQ6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAi
MTpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjI6CXB1c2hsICUwXG4iICIJcHVzaGwg
JSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zbFxuIiAiCXBvcGwgJSVl
YXhcbiIgIglwb3BsICUwXG4iICIJc2hsICQyLCUwXG4iICIJam1wIDFiXG4iICIucHJldmlvdXNc
biIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBi
LDJiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkg
OiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAx
OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnNiXG4iICIy
OlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJcHVzaGwgJTBcbiIgIglwdXNobCAl
JWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglyZXA7IHN0b3NsXG4iICIJc3Rvc2JcbiIg
Iglwb3BsICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwlMFxuIiAiCWluY2wgJTBcbiIg
IglqbXAgMmJcbiIgIjQ6CXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXN0
b3NiXG4iICIJcG9wbCAlJWVheFxuIiAiCWluY2wgJTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2aW91
c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcg
MGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChf
X2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1v
cnkiKTsgYnJlYWs7IGNhc2UgMjogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNs
XG4iICIxOgltb3Zzd1xuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CXB1
c2hsICUwXG4iICIJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBz
dG9zbFxuIiAiCXN0b3N3XG4iICIJcG9wbCAlJWVheFxuIiAiCXBvcGwgJTBcbiIgIglzaGwgJDIs
JTBcbiIgIglhZGRsICQyLCUwXG4iICIJam1wIDJiXG4iICI0OglwdXNobCAlJWVheFxuIiAiCXhv
cmwgJSVlYXgsJSVlYXhcbiIgIglzdG9zd1xuIiAiCXBvcGwgJSVlYXhcbiIgIglhZGRsICQyLCUw
XG4iICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJc
biIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIgIi5wcmV2
aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwg
IjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDM6IF9fYXNtX18gX192
b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c3dcbiIgIjI6CW1vdnNiXG4iICIz
OlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiNDoJcHVzaGwgJTBcbiIgIglwdXNobCAl
JWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglyZXA7IHN0b3NsXG4iICIJc3Rvc3dcbiIg
IglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglwb3BsICUwXG4iICIJc2hsICQyLCUwXG4iICIJ
YWRkbCAkMywlMFxuIiAiCWptcCAyYlxuIiAiNToJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4
LCUlZWF4XG4iICIJc3Rvc3dcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglhZGRsICQz
LCUwXG4iICIJam1wIDJiXG4iICI2OglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhc
biIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglpbmNsICUwXG4iICIJam1wIDNiXG4iICIu
cHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAi
CS5sb25nIDBiLDRiXG4iICIJLmxvbmcgMWIsNWJcbiIgIgkubG9uZyAyYiw2YlxuIiAiLnByZXZp
b3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAi
MiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0gfSB3aGlsZSAoMCk7CiAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDApID8gKF9fYnVp
bHRpbl9jb25zdGFudF9wKChuKSkgPyBfX2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKHRv
KSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChuKSkpIDogX19jb25zdGFu
dF9jX21lbXNldCgoKHRvKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChu
KSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgobikpID8gX19tZW1zZXRfZ2VuZXJpYygoKCh0
bykpKSwoKCgwKSkpLCgoKG4pKSkpIDogX19tZW1zZXRfZ2VuZXJpYygoKHRvKSksKCgwKSksKChu
KSkpKSk7CiAgICAgICAgcmV0dXJuIG47Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwpf
X2NvbnN0YW50X2NvcHlfdG9fdXNlcl9ub2NoZWNrKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9t
LCB1bnNpZ25lZCBsb25nIG4pCnsKICAgICAgICBkbyB7IGludCBfX2QwLCBfX2QxOyBzd2l0Y2gg
KG4gJiAzKSB7IGRlZmF1bHQ6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxu
IiAiMTpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjI6CXNobCAkMiwlMFxuIiAiCWpt
cCAxYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFs
aWduIDRcbiIgIgkubG9uZyAwYiwyYlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChf
X2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1v
cnkiKTsgYnJlYWs7IGNhc2UgMTogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNs
XG4iICIxOgltb3ZzYlxuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CXNo
bCAkMiwlMFxuIiAiNDoJaW5jbCAlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2Vj
dGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAi
CS5sb25nIDFiLDRiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZE
IiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVh
azsgY2FzZSAyOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1v
dnN3XG4iICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJc2hsICQyLCUwXG4i
ICI0OglhZGRsICQyLCUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9f
ZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcg
MWIsNGJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2Qx
KSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNl
IDM6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c3dcbiIg
IjI6CW1vdnNiXG4iICIzOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiNDoJc2hsICQy
LCUwXG4iICI1OglhZGRsICQyLCUwXG4iICI2OglpbmNsICUwXG4iICIJam1wIDNiXG4iICIucHJl
dmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5s
b25nIDBiLDRiXG4iICIJLmxvbmcgMWIsNWJcbiIgIgkubG9uZyAyYiw2YlxuIiAiLnByZXZpb3Vz
IiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIo
dG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0gfSB3aGlsZSAoMCk7CiAgICAgICAg
cmV0dXJuIG47Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwpfX2NvbnN0YW50X2NvcHlf
ZnJvbV91c2VyX25vY2hlY2sodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxv
bmcgbikKewogICAgICAgIGRvIHsgaW50IF9fZDAsIF9fZDE7IHN3aXRjaCAobiAmIDMpIHsgZGVm
YXVsdDogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOlxuIiAiLnNl
Y3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMjoJcHVzaGwgJTBcbiIgIglwdXNobCAlJWVheFxuIiAi
CXhvcmwgJSVlYXgsJSVlYXhcbiIgIglyZXA7IHN0b3NsXG4iICIJcG9wbCAlJWVheFxuIiAiCXBv
cGwgJTBcbiIgIglzaGwgJDIsJTBcbiIgIglqbXAgMWJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rp
b24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsMmJcbiIgIi5w
cmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9t
KSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDE6IF9fYXNtX18g
X192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c2JcbiIgIjI6XG4iICIuc2Vj
dGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglwdXNobCAlMFxuIiAiCXB1c2hsICUlZWF4XG4iICIJ
eG9ybCAlJWVheCwlJWVheFxuIiAiCXJlcDsgc3Rvc2xcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVl
YXhcbiIgIglwb3BsICUwXG4iICIJc2hsICQyLCUwXG4iICIJaW5jbCAlMFxuIiAiCWptcCAyYlxu
IiAiNDoJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJc3Rvc2JcbiIgIglw
b3BsICUlZWF4XG4iICIJaW5jbCAlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2Vj
dGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAi
CS5sb25nIDFiLDRiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZE
IiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVh
azsgY2FzZSAyOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1v
dnN3XG4iICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJcHVzaGwgJTBcbiIg
IglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglyZXA7IHN0b3NsXG4iICIJ
c3Rvc3dcbiIgIglwb3BsICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwlMFxuIiAiCWFk
ZGwgJDIsJTBcbiIgIglqbXAgMmJcbiIgIjQ6CXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwl
JWVheFxuIiAiCXN0b3N3XG4iICIJcG9wbCAlJWVheFxuIiAiCWFkZGwgJDIsJTBcbiIgIglqbXAg
MmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGln
biA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6ICI9
YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAi
MCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMzogX19hc21fXyBfX3ZvbGF0aWxlX18o
ICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3Zzd1xuIiAiMjoJbW92c2JcbiIgIjM6XG4iICIuc2Vj
dGlvbiAuZml4dXAsXCJheFwiXG4iICI0OglwdXNobCAlMFxuIiAiCXB1c2hsICUlZWF4XG4iICIJ
eG9ybCAlJWVheCwlJWVheFxuIiAiCXJlcDsgc3Rvc2xcbiIgIglzdG9zd1xuIiAiCXN0b3NiXG4i
ICIJcG9wbCAlJWVheFxuIiAiCXBvcGwgJTBcbiIgIglzaGwgJDIsJTBcbiIgIglhZGRsICQzLCUw
XG4iICIJam1wIDJiXG4iICI1OglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIg
IglzdG9zd1xuIiAiCXN0b3NiXG4iICIJcG9wbCAlJWVheFxuIiAiCWFkZGwgJDMsJTBcbiIgIglq
bXAgMmJcbiIgIjY6CXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXN0b3Ni
XG4iICIJcG9wbCAlJWVheFxuIiAiCWluY2wgJTBcbiIgIglqbXAgM2JcbiIgIi5wcmV2aW91c1xu
IiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIs
NGJcbiIgIgkubG9uZyAxYiw1YlxuIiAiCS5sb25nIDJiLDZiXG4iICIucHJldmlvdXMiIDogIj1j
IihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIw
IihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgfSB9IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4g
bjsKfQojIDU5OSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpsb25nIHN0
cm5jcHlfZnJvbV91c2VyKGNoYXIgKmRzdCwgY29uc3QgY2hhciAqc3JjLCBsb25nIGNvdW50KTsK
bG9uZyBfX3N0cm5jcHlfZnJvbV91c2VyKGNoYXIgKmRzdCwgY29uc3QgY2hhciAqc3JjLCBsb25n
IGNvdW50KTsKCmxvbmcgc3Rybmxlbl91c2VyKGNvbnN0IGNoYXIgKnN0ciwgbG9uZyBuKTsKdW5z
aWduZWQgbG9uZyBjbGVhcl91c2VyKHZvaWQgKm1lbSwgdW5zaWduZWQgbG9uZyBsZW4pOwp1bnNp
Z25lZCBsb25nIF9fY2xlYXJfdXNlcih2b2lkICptZW0sIHVuc2lnbmVkIGxvbmcgbGVuKTsKIyAx
NjAgIjgxMzl0b28uYyIgMgojIDE5OCAiODEzOXRvby5jIgpzdGF0aWMgaW50IG1lZGlhWzhdID0g
ey0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMX07CnN0YXRpYyBpbnQgZnVsbF9kdXBsZXhb
OF0gPSB7LTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xfTsKCgpzdGF0aWMgaW50IG1heF9p
bnRlcnJ1cHRfd29yayA9IDIwOwoKCgpzdGF0aWMgaW50IG11bHRpY2FzdF9maWx0ZXJfbGltaXQg
PSAzMjsKIyAyNDEgIjgxMzl0b28uYyIKZW51bSB7CiAgICAgICAgSEFTX01JSV9YQ1ZSID0gMHgw
MTAwMDAsCiAgICAgICAgSEFTX0NISVBfWENWUiA9IDB4MDIwMDAwLAogICAgICAgIEhBU19MTktf
Q0hORyA9IDB4MDQwMDAwLAp9OwoKCgoKCgoKdHlwZWRlZiBlbnVtIHsKICAgICAgICBSVEw4MTM5
ID0gMCwKICAgICAgICBSVEw4MTM5X0NCLAogICAgICAgIFNNQzEyMTFUWCwKCiAgICAgICAgREVM
VEE4MTM5LAogICAgICAgIEFERFRST044MTM5LAogICAgICAgIERGRTUzOFRYLAogICAgICAgIERG
RTY5MFRYRCwKICAgICAgICBSVEw4MTI5LAp9IGJvYXJkX3Q7CgoKCnN0YXRpYyBzdHJ1Y3Qgewog
ICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAgdTMyIGh3X2ZsYWdzOwp9IGJvYXJkX2lu
Zm9bXSBfX2F0dHJpYnV0ZV9fICgoX19zZWN0aW9uX18gKCIuZGF0YS5pbml0IikpKSA9IHsKICAg
ICAgICB7ICJSZWFsVGVrIFJUTDgxMzkgRmFzdCBFdGhlcm5ldCIsIEhBU19DSElQX1hDVlJ8SEFT
X0xOS19DSE5HIH0sCiAgICAgICAgeyAiUmVhbFRlayBSVEw4MTM5QiBQQ0kvQ2FyZEJ1cyIsIEhB
U19DSElQX1hDVlJ8SEFTX0xOS19DSE5HIH0sCiAgICAgICAgeyAiU01DMTIxMVRYIEVaQ2FyZCAx
MC8xMDAgKFJlYWxUZWsgUlRMODEzOSkiLCBIQVNfQ0hJUF9YQ1ZSfEhBU19MTktfQ0hORyB9LAoK
ICAgICAgICB7ICJEZWx0YSBFbGVjdHJvbmljcyA4MTM5IDEwLzEwMEJhc2VUWCIsIEhBU19DSElQ
X1hDVlJ8SEFTX0xOS19DSE5HIH0sCiAgICAgICAgeyAiQWRkdHJvbiBUZWNobm9sZ3kgODEzOSAx
MC8xMDBCYXNlVFgiLCBIQVNfQ0hJUF9YQ1ZSfEhBU19MTktfQ0hORyB9LAogICAgICAgIHsgIkQt
TGluayBERkUtNTM4VFggKFJlYWxUZWsgUlRMODEzOSkiLCBIQVNfQ0hJUF9YQ1ZSfEhBU19MTktf
Q0hORyB9LAogICAgICAgIHsgIkQtTGluayBERkUtNjkwVFhEIChSZWFsVGVrIFJUTDgxMzkpIiwg
SEFTX0NISVBfWENWUnxIQVNfTE5LX0NITkcgfSwKICAgICAgICB7ICJSZWFsVGVrIFJUTDgxMjki
LCBIQVNfTUlJX1hDVlIgfSwKfTsKCgpzdGF0aWMgc3RydWN0IHBjaV9kZXZpY2VfaWQgcnRsODEz
OV9wY2lfdGJsW10gX19hdHRyaWJ1dGVfXyAoKF9fc2VjdGlvbl9fICgiLmRhdGEuaW5pdCIpKSkg
PSB7CiAgICAgICAgezB4MTBlYywgMHg4MTM5LCAofjApLCAofjApLCAwLCAwLCBSVEw4MTM5IH0s
CiAgICAgICAgezB4MTBlYywgMHg4MTM4LCAofjApLCAofjApLCAwLCAwLCBSVEw4MTM5X0NCIH0s
CiAgICAgICAgezB4MTExMywgMHgxMjExLCAofjApLCAofjApLCAwLCAwLCBTTUMxMjExVFggfSwK
CiAgICAgICAgezB4MTUwMCwgMHgxMzYwLCAofjApLCAofjApLCAwLCAwLCBERUxUQTgxMzkgfSwK
ICAgICAgICB7MHg0MDMzLCAweDEzNjAsICh+MCksICh+MCksIDAsIDAsIEFERFRST044MTM5IH0s
CiAgICAgICAgezB4MTE4NiwgMHgxMzAwLCAofjApLCAofjApLCAwLCAwLCBERkU1MzhUWCB9LAog
ICAgICAgIHsweDExODYsIDB4MTM0MCwgKH4wKSwgKH4wKSwgMCwgMCwgREZFNjkwVFhEIH0sCiMg
MzAxICI4MTM5dG9vLmMiCiAgICAgICAgeyh+MCksIDB4ODEzOSwgMHgxMGVjLCAweDgxMzksIDAs
IDAsIFJUTDgxMzkgfSwKICAgICAgICB7KH4wKSwgMHg4MTM5LCAweDExODYsIDB4MTMwMCwgMCwg
MCwgREZFNTM4VFggfSwKCiAgICAgICAgezAsfQp9OwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA7CgoKCgoKZW51bSBSVEw4MTM5X3JlZ2lzdGVycyB7CiAgICAgICAg
TUFDMCA9IDAsCiAgICAgICAgTUFSMCA9IDgsCiAgICAgICAgVHhTdGF0dXMwID0gMHgxMCwKICAg
ICAgICBUeEFkZHIwID0gMHgyMCwKICAgICAgICBSeEJ1ZiA9IDB4MzAsCiAgICAgICAgUnhFYXJs
eUNudCA9IDB4MzQsCiAgICAgICAgUnhFYXJseVN0YXR1cyA9IDB4MzYsCiAgICAgICAgQ2hpcENt
ZCA9IDB4MzcsCiAgICAgICAgUnhCdWZQdHIgPSAweDM4LAogICAgICAgIFJ4QnVmQWRkciA9IDB4
M0EsCiAgICAgICAgSW50ck1hc2sgPSAweDNDLAogICAgICAgIEludHJTdGF0dXMgPSAweDNFLAog
ICAgICAgIFR4Q29uZmlnID0gMHg0MCwKICAgICAgICBDaGlwVmVyc2lvbiA9IDB4NDMsCiAgICAg
ICAgUnhDb25maWcgPSAweDQ0LAogICAgICAgIFRpbWVyID0gMHg0OCwKICAgICAgICBSeE1pc3Nl
ZCA9IDB4NEMsCiAgICAgICAgQ2ZnOTM0NiA9IDB4NTAsCiAgICAgICAgQ29uZmlnMCA9IDB4NTEs
CiAgICAgICAgQ29uZmlnMSA9IDB4NTIsCiAgICAgICAgRmxhc2hSZWcgPSAweDU0LAogICAgICAg
IE1lZGlhU3RhdHVzID0gMHg1OCwKICAgICAgICBDb25maWczID0gMHg1OSwKICAgICAgICBDb25m
aWc0ID0gMHg1QSwKICAgICAgICBIbHRDbGsgPSAweDVCLAogICAgICAgIE11bHRpSW50ciA9IDB4
NUMsCiAgICAgICAgVHhTdW1tYXJ5ID0gMHg2MCwKICAgICAgICBCYXNpY01vZGVDdHJsID0gMHg2
MiwKICAgICAgICBCYXNpY01vZGVTdGF0dXMgPSAweDY0LAogICAgICAgIE5XYXlBZHZlcnQgPSAw
eDY2LAogICAgICAgIE5XYXlMUEFSID0gMHg2OCwKICAgICAgICBOV2F5RXhwYW5zaW9uID0gMHg2
QSwKCiAgICAgICAgRklGT1RNUyA9IDB4NzAsCiAgICAgICAgQ1NDUiA9IDB4NzQsCiAgICAgICAg
UEFSQTc4ID0gMHg3OCwKICAgICAgICBQQVJBN2MgPSAweDdjLAogICAgICAgIENvbmZpZzUgPSAw
eEQ4LAp9OwoKZW51bSBDbGVhckJpdE1hc2tzIHsKICAgICAgICBNdWx0aUludHJDbGVhciA9IDB4
RjAwMCwKICAgICAgICBDaGlwQ21kQ2xlYXIgPSAweEUyLAogICAgICAgIENvbmZpZzFDbGVhciA9
ICgxPDw3KXwoMTw8Nil8KDE8PDMpfCgxPDwyKXwoMTw8MSksCn07CgplbnVtIENoaXBDbWRCaXRz
IHsKICAgICAgICBDbWRSZXNldCA9IDB4MTAsCiAgICAgICAgQ21kUnhFbmIgPSAweDA4LAogICAg
ICAgIENtZFR4RW5iID0gMHgwNCwKICAgICAgICBSeEJ1ZkVtcHR5ID0gMHgwMSwKfTsKCgplbnVt
IEludHJTdGF0dXNCaXRzIHsKICAgICAgICBQQ0lFcnIgPSAweDgwMDAsCiAgICAgICAgUENTVGlt
ZW91dCA9IDB4NDAwMCwKICAgICAgICBSeEZJRk9PdmVyID0gMHg0MCwKICAgICAgICBSeFVuZGVy
cnVuID0gMHgyMCwKICAgICAgICBSeE92ZXJmbG93ID0gMHgxMCwKICAgICAgICBUeEVyciA9IDB4
MDgsCiAgICAgICAgVHhPSyA9IDB4MDQsCiAgICAgICAgUnhFcnIgPSAweDAyLAogICAgICAgIFJ4
T0sgPSAweDAxLAoKICAgICAgICBSeEFja0JpdHMgPSBSeEZJRk9PdmVyIHwgUnhPdmVyZmxvdyB8
IFJ4T0ssCn07CgplbnVtIFR4U3RhdHVzQml0cyB7CiAgICAgICAgVHhIb3N0T3ducyA9IDB4MjAw
MCwKICAgICAgICBUeFVuZGVycnVuID0gMHg0MDAwLAogICAgICAgIFR4U3RhdE9LID0gMHg4MDAw
LAogICAgICAgIFR4T3V0T2ZXaW5kb3cgPSAweDIwMDAwMDAwLAogICAgICAgIFR4QWJvcnRlZCA9
IDB4NDAwMDAwMDAsCiAgICAgICAgVHhDYXJyaWVyTG9zdCA9IDB4ODAwMDAwMDAsCn07CmVudW0g
UnhTdGF0dXNCaXRzIHsKICAgICAgICBSeE11bHRpY2FzdCA9IDB4ODAwMCwKICAgICAgICBSeFBo
eXNpY2FsID0gMHg0MDAwLAogICAgICAgIFJ4QnJvYWRjYXN0ID0gMHgyMDAwLAogICAgICAgIFJ4
QmFkU3ltYm9sID0gMHgwMDIwLAogICAgICAgIFJ4UnVudCA9IDB4MDAxMCwKICAgICAgICBSeFRv
b0xvbmcgPSAweDAwMDgsCiAgICAgICAgUnhDUkNFcnIgPSAweDAwMDQsCiAgICAgICAgUnhCYWRB
bGlnbiA9IDB4MDAwMiwKICAgICAgICBSeFN0YXR1c09LID0gMHgwMDAxLAp9OwoKCmVudW0gcnhf
bW9kZV9iaXRzIHsKICAgICAgICBBY2NlcHRFcnIgPSAweDIwLAogICAgICAgIEFjY2VwdFJ1bnQg
PSAweDEwLAogICAgICAgIEFjY2VwdEJyb2FkY2FzdCA9IDB4MDgsCiAgICAgICAgQWNjZXB0TXVs
dGljYXN0ID0gMHgwNCwKICAgICAgICBBY2NlcHRNeVBoeXMgPSAweDAyLAogICAgICAgIEFjY2Vw
dEFsbFBoeXMgPSAweDAxLAp9OwoKCmVudW0gdHhfY29uZmlnX2JpdHMgewogICAgICAgIFR4SUZH
MSA9ICgxIDw8IDI1KSwKICAgICAgICBUeElGRzAgPSAoMSA8PCAyNCksCiAgICAgICAgVHhMb29w
QmFjayA9ICgxIDw8IDE4KSB8ICgxIDw8IDE3KSwKICAgICAgICBUeENSQyA9ICgxIDw8IDE2KSwK
ICAgICAgICBUeENsZWFyQWJ0ID0gKDEgPDwgMCksCiAgICAgICAgVHhETUFTaGlmdCA9IDgsCgog
ICAgICAgIFR4VmVyc2lvbk1hc2sgPSAweDdDODAwMDAwLAp9OwoKCmVudW0gQ29uZmlnMUJpdHMg
ewogICAgICAgIENmZzFfUE1fRW5hYmxlID0gMHgwMSwKICAgICAgICBDZmcxX1ZQRF9FbmFibGUg
PSAweDAyLAogICAgICAgIENmZzFfUElPID0gMHgwNCwKICAgICAgICBDZmcxX01NSU8gPSAweDA4
LAogICAgICAgIExXQUtFID0gMHgxMCwKICAgICAgICBDZmcxX0RyaXZlcl9Mb2FkID0gMHgyMCwK
ICAgICAgICBDZmcxX0xFRDAgPSAweDQwLAogICAgICAgIENmZzFfTEVEMSA9IDB4ODAsCiAgICAg
ICAgU0xFRVAgPSAoMSA8PCAxKSwKICAgICAgICBQV1JETiA9ICgxIDw8IDApLAp9OwoKCmVudW0g
Q29uZmlnM0JpdHMgewogICAgICAgIENmZzNfRkJ0QkVuID0gKDEgPDwgMCksCiAgICAgICAgQ2Zn
M19GdW5jUmVnRW4gPSAoMSA8PCAxKSwKICAgICAgICBDZmczX0NMS1JVTl9FbiA9ICgxIDw8IDIp
LAogICAgICAgIENmZzNfQ2FyZEJfRW4gPSAoMSA8PCAzKSwKICAgICAgICBDZmczX0xpbmtVcCA9
ICgxIDw8IDQpLAogICAgICAgIENmZzNfTWFnaWMgPSAoMSA8PCA1KSwKICAgICAgICBDZmczX1BB
Uk1fRW4gPSAoMSA8PCA2KSwKICAgICAgICBDZmczX0dOVFNlbCA9ICgxIDw8IDcpLAp9OwoKCmVu
dW0gQ29uZmlnNEJpdHMgewogICAgICAgIExXUFROID0gKDEgPDwgMiksCn07CgoKZW51bSBDb25m
aWc1Qml0cyB7CiAgICAgICAgQ2ZnNV9QTUVfU1RTID0gKDEgPDwgMCksCiAgICAgICAgQ2ZnNV9M
QU5XYWtlID0gKDEgPDwgMSksCiAgICAgICAgQ2ZnNV9MRFBTID0gKDEgPDwgMiksCiAgICAgICAg
Q2ZnNV9GSUZPQWRkclB0ciA9ICgxIDw8IDMpLAogICAgICAgIENmZzVfVVdGID0gKDEgPDwgNCks
CiAgICAgICAgQ2ZnNV9NV0YgPSAoMSA8PCA1KSwKICAgICAgICBDZmc1X0JXRiA9ICgxIDw8IDYp
LAp9OwoKZW51bSBSeENvbmZpZ0JpdHMgewoKICAgICAgICBSeENmZ0Vhcmx5UnhOb25lID0gMCwK
ICAgICAgICBSeENmZ0Vhcmx5UnhTaGlmdCA9IDI0LAoKCiAgICAgICAgUnhDZmdGSUZPU2hpZnQg
PSAxMywKICAgICAgICBSeENmZ0ZJRk9Ob25lID0gKDcgPDwgUnhDZmdGSUZPU2hpZnQpLAoKCiAg
ICAgICAgUnhDZmdETUFTaGlmdCA9IDgsCiAgICAgICAgUnhDZmdETUFVbmxpbWl0ZWQgPSAoNyA8
PCBSeENmZ0RNQVNoaWZ0KSwKCgogICAgICAgIFJ4Q2ZnUmN2OEsgPSAwLAogICAgICAgIFJ4Q2Zn
UmN2MTZLID0gKDEgPDwgMTEpLAogICAgICAgIFJ4Q2ZnUmN2MzJLID0gKDEgPDwgMTIpLAogICAg
ICAgIFJ4Q2ZnUmN2NjRLID0gKDEgPDwgMTEpIHwgKDEgPDwgMTIpLAoKCiAgICAgICAgUnhOb1dy
YXAgPSAoMSA8PCA3KSwKfTsKCgoKCmVudW0gQ1NDUkJpdHMgewogICAgICAgIENTQ1JfTGlua09L
Qml0ID0gMHgwNDAwLAogICAgICAgIENTQ1JfTGlua0NoYW5nZUJpdCA9IDB4MDgwMCwKICAgICAg
ICBDU0NSX0xpbmtTdGF0dXNCaXRzID0gMHgwZjAwMCwKICAgICAgICBDU0NSX0xpbmtEb3duT2Zm
Q21kID0gMHgwMDNjMCwKICAgICAgICBDU0NSX0xpbmtEb3duQ21kID0gMHgwZjNjMCwKfTsKCgpl
bnVtIENmZzkzNDZCaXRzIHsKICAgICAgICBDZmc5MzQ2X0xvY2sgPSAweDAwLAogICAgICAgIENm
ZzkzNDZfVW5sb2NrID0gMHhDMCwKfTsKCgoKCgpzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBw
YXJhbVs0XVs0XSA9IHsKICAgICAgICB7MHhjYjM5ZGU0MywgMHhjYjM5Y2U0MywgMHhmYjM4ZGUw
MywgMHhjYjM4ZGU0M30sCiAgICAgICAgezB4Y2IzOWRlNDMsIDB4Y2IzOWNlNDMsIDB4Y2IzOWNl
ODMsIDB4Y2IzOWNlODN9LAogICAgICAgIHsweGNiMzlkZTQzLCAweGNiMzljZTQzLCAweGNiMzlj
ZTgzLCAweGNiMzljZTgzfSwKICAgICAgICB7MHhiYjM5ZGU0MywgMHhiYjM5Y2U0MywgMHhiYjM5
Y2U4MywgMHhiYjM5Y2U4M30KfTsKCnN0cnVjdCByaW5nX2luZm8gewogICAgICAgIHN0cnVjdCBz
a19idWZmICpza2I7CiAgICAgICAgZG1hX2FkZHJfdCBtYXBwaW5nOwp9OwoKCnR5cGVkZWYgZW51
bSB7CiAgICAgICAgQ0hfODEzOSA9IDAsCiAgICAgICAgQ0hfODEzOV9LLAogICAgICAgIENIXzgx
MzlBLAogICAgICAgIENIXzgxMzlCLAogICAgICAgIENIXzgxMzAsCiAgICAgICAgQ0hfODEzOUMs
Cn0gY2hpcF90OwoKZW51bSBjaGlwX2ZsYWdzIHsKICAgICAgICBIYXNIbHRDbGsgPSAoMSA8PCAw
KSwKICAgICAgICBIYXNMV2FrZSA9ICgxIDw8IDEpLAp9OwoKCgpjb25zdCBzdGF0aWMgc3RydWN0
IHsKICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAgIHU4IHZlcnNpb247CiAgICAgICAg
dTMyIFJ4Q29uZmlnTWFzazsKICAgICAgICB1MzIgZmxhZ3M7Cn0gcnRsX2NoaXBfaW5mb1tdID0g
ewogICAgICAgIHsgIlJUTC04MTM5IiwKICAgICAgICAgIDB4NDAsCiAgICAgICAgICAweGYwZmUw
MDQwLAogICAgICAgICAgSGFzSGx0Q2xrLAogICAgICAgIH0sCgogICAgICAgIHsgIlJUTC04MTM5
IHJldiBLIiwKICAgICAgICAgIDB4NjAsCiAgICAgICAgICAweGYwZmUwMDQwLAogICAgICAgICAg
SGFzSGx0Q2xrLAogICAgICAgIH0sCgogICAgICAgIHsgIlJUTC04MTM5QSIsCiAgICAgICAgICAw
eDcwLAogICAgICAgICAgMHhmMGZlMDA0MCwKICAgICAgICAgIEhhc0hsdENsaywKICAgICAgICB9
LAoKICAgICAgICB7ICJSVEwtODEzOUIiLAogICAgICAgICAgMHg3OCwKICAgICAgICAgIDB4ZjBm
YzAwNDAsCiAgICAgICAgICBIYXNMV2FrZSwKICAgICAgICB9LAoKICAgICAgICB7ICJSVEwtODEz
MCIsCiAgICAgICAgICAweDdDLAogICAgICAgICAgMHhmMGZlMDA0MCwKICAgICAgICAgIEhhc0xX
YWtlLAogICAgICAgIH0sCgogICAgICAgIHsgIlJUTC04MTM5QyIsCiAgICAgICAgICAweDc0LAog
ICAgICAgICAgMHhmMGZjMDA0MCwKICAgICAgICAgIEhhc0xXYWtlLAogICAgICAgIH0sCgp9OwoK
c3RydWN0IHJ0bF9leHRyYV9zdGF0cyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlYXJseV9yeDsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHR4X2J1Zl9tYXBwZWQ7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyB0eF90aW1lb3V0czsKfTsKCnN0cnVjdCBydGw4MTM5X3ByaXZhdGUgewogICAgICAgIHZvaWQg
Km1taW9fYWRkcjsKICAgICAgICBpbnQgZHJ2X2ZsYWdzOwogICAgICAgIHN0cnVjdCBwY2lfZGV2
ICpwY2lfZGV2OwogICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzIHN0YXRzOwogICAgICAg
IHVuc2lnbmVkIGNoYXIgKnJ4X3Jpbmc7CiAgICAgICAgdW5zaWduZWQgaW50IGN1cl9yeDsKICAg
ICAgICB1bnNpZ25lZCBpbnQgdHhfZmxhZzsKICAgICAgICB1bnNpZ25lZCBsb25nIGN1cl90eDsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGRpcnR5X3R4OwoKICAgICAgICBzdHJ1Y3QgcmluZ19pbmZv
IHR4X2luZm9bNF07CiAgICAgICAgdW5zaWduZWQgY2hhciAqdHhfYnVmWzRdOwogICAgICAgIHVu
c2lnbmVkIGNoYXIgKnR4X2J1ZnM7CiAgICAgICAgZG1hX2FkZHJfdCByeF9yaW5nX2RtYTsKICAg
ICAgICBkbWFfYWRkcl90IHR4X2J1ZnNfZG1hOwogICAgICAgIHNpZ25lZCBjaGFyIHBoeXNbNF07
CiAgICAgICAgY2hhciB0d2lzdGllLCB0d2lzdF9yb3csIHR3aXN0X2NvbDsKICAgICAgICB1bnNp
Z25lZCBpbnQgZnVsbF9kdXBsZXg6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgZHVwbGV4X2xvY2s6
MTsKICAgICAgICB1bnNpZ25lZCBpbnQgZGVmYXVsdF9wb3J0OjQ7CiAgICAgICAgdW5zaWduZWQg
aW50IG1lZGlhMjo0OwogICAgICAgIHVuc2lnbmVkIGludCBtZWRpYWxvY2s6MTsKICAgICAgICB1
bnNpZ25lZCBpbnQgbWVkaWFzZW5zZToxOwogICAgICAgIHNwaW5sb2NrX3QgbG9jazsKICAgICAg
ICBjaGlwX3QgY2hpcHNldDsKICAgICAgICBwaWRfdCB0aHJfcGlkOwogICAgICAgIHdhaXRfcXVl
dWVfaGVhZF90IHRocl93YWl0OwogICAgICAgIHN0cnVjdCBjb21wbGV0aW9uIHRocl9leGl0ZWQ7
CiAgICAgICAgdTMyIHJ4X2NvbmZpZzsKICAgICAgICBzdHJ1Y3QgcnRsX2V4dHJhX3N0YXRzIHhz
dGF0czsKfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOwoKc3RhdGljIGludCByZWFkX2VlcHJvbSAodm9pZCAqaW9h
ZGRyLCBpbnQgbG9jYXRpb24sIGludCBhZGRyX2xlbik7CnN0YXRpYyBpbnQgcnRsODEzOV9vcGVu
IChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKc3RhdGljIGludCBtZGlvX3JlYWQgKHN0cnVjdCBu
ZXRfZGV2aWNlICpkZXYsIGludCBwaHlfaWQsIGludCBsb2NhdGlvbik7CnN0YXRpYyB2b2lkIG1k
aW9fd3JpdGUgKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBwaHlfaWQsIGludCBsb2NhdGlv
biwKICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZhbCk7CnN0YXRpYyBpbnQgcnRsODEzOV90
aHJlYWQgKHZvaWQgKmRhdGEpOwpzdGF0aWMgdm9pZCBydGw4MTM5X3R4X3RpbWVvdXQgKHN0cnVj
dCBuZXRfZGV2aWNlICpkZXYpOwpzdGF0aWMgdm9pZCBydGw4MTM5X2luaXRfcmluZyAoc3RydWN0
IG5ldF9kZXZpY2UgKmRldik7CnN0YXRpYyBpbnQgcnRsODEzOV9zdGFydF94bWl0IChzdHJ1Y3Qg
c2tfYnVmZiAqc2tiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5ldF9k
ZXZpY2UgKmRldik7CnN0YXRpYyB2b2lkIHJ0bDgxMzlfaW50ZXJydXB0IChpbnQgaXJxLCB2b2lk
ICpkZXZfaW5zdGFuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHRf
cmVncyAqcmVncyk7CnN0YXRpYyBpbnQgcnRsODEzOV9jbG9zZSAoc3RydWN0IG5ldF9kZXZpY2Ug
KmRldik7CnN0YXRpYyBpbnQgbmV0ZGV2X2lvY3RsIChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBz
dHJ1Y3QgaWZyZXEgKnJxLCBpbnQgY21kKTsKc3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlX3N0YXRz
ICpydGw4MTM5X2dldF9zdGF0cyAoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CnN0YXRpYyBpbmxp
bmUgdTMyIGV0aGVyX2NyYyAoaW50IGxlbmd0aCwgdW5zaWduZWQgY2hhciAqZGF0YSk7CnN0YXRp
YyB2b2lkIHJ0bDgxMzlfc2V0X3J4X21vZGUgKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpzdGF0
aWMgdm9pZCBfX3NldF9yeF9tb2RlIChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKc3RhdGljIHZv
aWQgcnRsODEzOV9od19zdGFydCAoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CiMgNzEyICI4MTM5
dG9vLmMiCnN0YXRpYyBjb25zdCB1MTYgcnRsODEzOV9pbnRyX21hc2sgPQogICAgICAgIFBDSUVy
ciB8IFBDU1RpbWVvdXQgfCBSeFVuZGVycnVuIHwgUnhPdmVyZmxvdyB8IFJ4RklGT092ZXIgfAog
ICAgICAgIFR4RXJyIHwgVHhPSyB8IFJ4RXJyIHwgUnhPSzsKCnN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBpbnQgcnRsODEzOV9yeF9jb25maWcgPQogICAgICAgICAgKDE0IDw8IFJ4Q2ZnRWFybHlSeFNo
aWZ0KSB8IFJ4Q2ZnUmN2MzJLIHwgUnhOb1dyYXAgfAogICAgICAgICAgKDcgPDwgUnhDZmdGSUZP
U2hpZnQpIHwKICAgICAgICAgICg3IDw8IFJ4Q2ZnRE1BU2hpZnQpOwoKCnN0YXRpYyB2b2lkIF9f
cnRsODEzOV9jbGVhbnVwX2RldiAoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIHN0
cnVjdCBydGw4MTM5X3ByaXZhdGUgKnRwOwogICAgICAgIHN0cnVjdCBwY2lfZGV2ICpwZGV2OwoK
ICAgICAgICBpZighKGRldiAhPSAoKHZvaWQgKikwKSkpIHsgcHJpbnRrKCAiQXNzZXJ0aW9uIGZh
aWxlZCEgJXMsJXMsJXMsbGluZT0lZFxuIiwgImRldiAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZV
TkNUSU9OX18sNzI3KTsgfTsKICAgICAgICBpZighKGRldi0+cHJpdiAhPSAoKHZvaWQgKikwKSkp
IHsgcHJpbnRrKCAiQXNzZXJ0aW9uIGZhaWxlZCEgJXMsJXMsJXMsbGluZT0lZFxuIiwgImRldi0+
cHJpdiAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18sNzI4KTsgfTsKCiAgICAgICAg
dHAgPSBkZXYtPnByaXY7CiAgICAgICAgaWYoISh0cC0+cGNpX2RldiAhPSAoKHZvaWQgKikwKSkp
IHsgcHJpbnRrKCAiQXNzZXJ0aW9uIGZhaWxlZCEgJXMsJXMsJXMsbGluZT0lZFxuIiwgInRwLT5w
Y2lfZGV2ICE9IE5VTEwiLCI4MTM5dG9vLmMiLF9fRlVOQ1RJT05fXyw3MzEpOyB9OwogICAgICAg
IHBkZXYgPSB0cC0+cGNpX2RldjsKCgogICAgICAgIGlmICh0cC0+bW1pb19hZGRyKQogICAgICAg
ICAgICAgICAgaW91bm1hcCAodHAtPm1taW9fYWRkcik7CgoKCiAgICAgICAgcGNpX3JlbGVhc2Vf
cmVnaW9ucyAocGRldik7CgoKCiAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDB4QkMpID8g
KF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2YgKHN0cnVjdCBuZXRfZGV2aWNlKSArIHNpemVv
ZiAoc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSkpKSA/IF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVt
c2V0KCgoZGV2KSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDB4QkMpKSksKChzaXpl
b2YgKHN0cnVjdCBuZXRfZGV2aWNlKSArIHNpemVvZiAoc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSkp
KSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoZGV2KSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVk
IGNoYXIpKDB4QkMpKSksKChzaXplb2YgKHN0cnVjdCBuZXRfZGV2aWNlKSArIHNpemVvZiAoc3Ry
dWN0IHJ0bDgxMzlfcHJpdmF0ZSkpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2Yg
KHN0cnVjdCBuZXRfZGV2aWNlKSArIHNpemVvZiAoc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSkpKSA/
IF9fbWVtc2V0X2dlbmVyaWMoKCgoZGV2KSkpLCgoKDB4QkMpKSksKCgoc2l6ZW9mIChzdHJ1Y3Qg
bmV0X2RldmljZSkgKyBzaXplb2YgKHN0cnVjdCBydGw4MTM5X3ByaXZhdGUpKSkpKSA6IF9fbWVt
c2V0X2dlbmVyaWMoKChkZXYpKSwoKDB4QkMpKSwoKHNpemVvZiAoc3RydWN0IG5ldF9kZXZpY2Up
ICsgc2l6ZW9mIChzdHJ1Y3QgcnRsODEzOV9wcml2YXRlKSkpKSkpOwoKCgoKICAgICAgICBrZnJl
ZSAoZGV2KTsKCiAgICAgICAgcGNpX3NldF9kcnZkYXRhIChwZGV2LCAoKHZvaWQgKikwKSk7Cn0K
CgpzdGF0aWMgdm9pZCBydGw4MTM5X2NoaXBfcmVzZXQgKHZvaWQgKmlvYWRkcikKewogICAgICAg
IGludCBpOwoKCiAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKiko
aW9hZGRyICsgKENoaXBDbWQpKSkgPSAoKENtZFJlc2V0KSkpOwoKCiAgICAgICAgZm9yIChpID0g
MTAwMDsgaSA+IDA7IGktLSkgewogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o
IiI6IDogOiJtZW1vcnkiKTsKICAgICAgICAgICAgICAgIGlmICgoKCoodm9sYXRpbGUgdW5zaWdu
ZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENoaXBDbWQpKSkpICYgQ21kUmVzZXQpID09
IDApCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgKF9fYnVp
bHRpbl9jb25zdGFudF9wKDEwKSA/ICgoMTApID4gMjAwMDAgPyBfX2JhZF91ZGVsYXkoKSA6IF9f
Y29uc3RfdWRlbGF5KCgxMCkgKiAweDEwYzZ1bCkpIDogX191ZGVsYXkoMTApKTsKICAgICAgICB9
Cn0KCgpzdGF0aWMgaW50IF9fYXR0cmlidXRlX18gKChfX3NlY3Rpb25fXyAoIi50ZXh0LmluaXQi
KSkpIHJ0bDgxMzlfaW5pdF9ib2FyZCAoc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKipkZXZfb3V0
KQp7CiAgICAgICAgdm9pZCAqaW9hZGRyOwogICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7
CiAgICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHA7CiAgICAgICAgdTggdG1wODsKICAg
ICAgICBpbnQgcmM7CiAgICAgICAgdW5zaWduZWQgaW50IGk7CiAgICAgICAgdTMyIHBpb19zdGFy
dCwgcGlvX2VuZCwgcGlvX2ZsYWdzLCBwaW9fbGVuOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbW1p
b19zdGFydCwgbW1pb19lbmQsIG1taW9fZmxhZ3MsIG1taW9fbGVuOwogICAgICAgIHUzMiB0bXA7
CgogICAgICAgICAgICAgICAgICAgICAgICAgICA7CgogICAgICAgIGlmKCEocGRldiAhPSAoKHZv
aWQgKikwKSkpIHsgcHJpbnRrKCAiQXNzZXJ0aW9uIGZhaWxlZCEgJXMsJXMsJXMsbGluZT0lZFxu
IiwgInBkZXYgIT0gTlVMTCIsIjgxMzl0b28uYyIsX19GVU5DVElPTl9fLDc4Nyk7IH07CgogICAg
ICAgICpkZXZfb3V0ID0gKCh2b2lkICopMCk7CgoKICAgICAgICBkZXYgPSBhbGxvY19ldGhlcmRl
diAoc2l6ZW9mICgqdHApKTsKICAgICAgICBpZiAoZGV2ID09ICgodm9pZCAqKTApKSB7CiAgICAg
ICAgICAgICAgICBwcmludGsgKCI8Mz4iICI4MTM5dG9vIiAiOiAiICIlczogVW5hYmxlIHRvIGFs
bG9jIG5ldyBuZXQgZGV2aWNlXG4iLCBwZGV2LT5zbG90X25hbWUpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIHJl
dHVybiAtMTI7CiAgICAgICAgfQogICAgICAgIGRvIHsgKGRldiktPm93bmVyID0gKCh2b2lkICop
MCk7IH0gd2hpbGUgKDApOwogICAgICAgIHRwID0gZGV2LT5wcml2OwogICAgICAgIHRwLT5wY2lf
ZGV2ID0gcGRldjsKCgogICAgICAgIHJjID0gcGNpX2VuYWJsZV9kZXZpY2UgKHBkZXYpOwogICAg
ICAgIGlmIChyYykKICAgICAgICAgICAgICAgIGdvdG8gZXJyX291dDsKCiAgICAgICAgcGlvX3N0
YXJ0ID0gKChwZGV2KS0+cmVzb3VyY2VbKDApXS5zdGFydCk7CiAgICAgICAgcGlvX2VuZCA9ICgo
cGRldiktPnJlc291cmNlWygwKV0uZW5kKTsKICAgICAgICBwaW9fZmxhZ3MgPSAoKHBkZXYpLT5y
ZXNvdXJjZVsoMCldLmZsYWdzKTsKICAgICAgICBwaW9fbGVuID0gKCgoKChwZGV2KSktPnJlc291
cmNlWygoMCkpXS5zdGFydCkgPT0gMCAmJiAoKChwZGV2KSktPnJlc291cmNlWygoMCkpXS5lbmQp
ID09ICgoKHBkZXYpKS0+cmVzb3VyY2VbKCgwKSldLnN0YXJ0KSkgPyAwIDogKCgoKHBkZXYpKS0+
cmVzb3VyY2VbKCgwKSldLmVuZCkgLSAoKChwZGV2KSktPnJlc291cmNlWygoMCkpXS5zdGFydCkg
KyAxKSk7CgogICAgICAgIG1taW9fc3RhcnQgPSAoKHBkZXYpLT5yZXNvdXJjZVsoMSldLnN0YXJ0
KTsKICAgICAgICBtbWlvX2VuZCA9ICgocGRldiktPnJlc291cmNlWygxKV0uZW5kKTsKICAgICAg
ICBtbWlvX2ZsYWdzID0gKChwZGV2KS0+cmVzb3VyY2VbKDEpXS5mbGFncyk7CiAgICAgICAgbW1p
b19sZW4gPSAoKCgoKHBkZXYpKS0+cmVzb3VyY2VbKCgxKSldLnN0YXJ0KSA9PSAwICYmICgoKHBk
ZXYpKS0+cmVzb3VyY2VbKCgxKSldLmVuZCkgPT0gKCgocGRldikpLT5yZXNvdXJjZVsoKDEpKV0u
c3RhcnQpKSA/IDAgOiAoKCgocGRldikpLT5yZXNvdXJjZVsoKDEpKV0uZW5kKSAtICgoKHBkZXYp
KS0+cmVzb3VyY2VbKCgxKSldLnN0YXJ0KSArIDEpKTsKCgoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKIyA4MzcgIjgxMzl0b28uYyIK
ICAgICAgICBpZiAoIShtbWlvX2ZsYWdzICYgMHgwMDAwMDIwMCkpIHsKICAgICAgICAgICAgICAg
IHByaW50ayAoIjwzPiIgIjgxMzl0b28iICI6ICIgIiVzOiByZWdpb24gIzEgbm90IGFuIE1NSU8g
cmVzb3VyY2UsIGFib3J0aW5nXG4iLCBwZGV2LT5zbG90X25hbWUpOwogICAgICAgICAgICAgICAg
cmMgPSAtMTk7CiAgICAgICAgICAgICAgICBnb3RvIGVycl9vdXQ7CiAgICAgICAgfQogICAgICAg
IGlmIChtbWlvX2xlbiA8IDB4ODApIHsKICAgICAgICAgICAgICAgIHByaW50ayAoIjwzPiIgIjgx
Mzl0b28iICI6ICIgIiVzOiBJbnZhbGlkIFBDSSBtZW0gcmVnaW9uIHNpemUocyksIGFib3J0aW5n
XG4iLCBwZGV2LT5zbG90X25hbWUpOwogICAgICAgICAgICAgICAgcmMgPSAtMTk7CiAgICAgICAg
ICAgICAgICBnb3RvIGVycl9vdXQ7CiAgICAgICAgfQoKCiAgICAgICAgcmMgPSBwY2lfcmVxdWVz
dF9yZWdpb25zIChwZGV2LCAiODEzOXRvbyIpOwogICAgICAgIGlmIChyYykKICAgICAgICAgICAg
ICAgIGdvdG8gZXJyX291dDsKCgogICAgICAgIHBjaV9zZXRfbWFzdGVyIChwZGV2KTsKCgoKCgoK
CiAgICAgICAgaW9hZGRyID0gaW9yZW1hcCAobW1pb19zdGFydCwgbW1pb19sZW4pOwogICAgICAg
IGlmIChpb2FkZHIgPT0gKCh2b2lkICopMCkpIHsKICAgICAgICAgICAgICAgIHByaW50ayAoIjwz
PiIgIjgxMzl0b28iICI6ICIgIiVzOiBjYW5ub3QgcmVtYXAgTU1JTywgYWJvcnRpbmdcbiIsIHBk
ZXYtPnNsb3RfbmFtZSk7CiAgICAgICAgICAgICAgICByYyA9IC01OwogICAgICAgICAgICAgICAg
Z290byBlcnJfb3V0OwogICAgICAgIH0KICAgICAgICBkZXYtPmJhc2VfYWRkciA9IChsb25nKSBp
b2FkZHI7CiAgICAgICAgdHAtPm1taW9fYWRkciA9IGlvYWRkcjsKCgoKICAgICAgICAoKih2b2xh
dGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoSGx0Q2xrKSkpID0gKCgn
UicpKSk7CgoKICAgICAgICBpZiAoKCh1bnNpZ25lZCBsb25nKSAoKih2b2xhdGlsZSB1bnNpZ25l
ZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChUeENvbmZpZykpKSkpID09IDB4RkZGRkZGRkYp
IHsKICAgICAgICAgICAgICAgIHByaW50ayAoIjwzPiIgIjgxMzl0b28iICI6ICIgIiVzOiBDaGlw
IG5vdCByZXNwb25kaW5nLCBpZ25vcmluZyBib2FyZFxuIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgcGRldi0+c2xvdF9uYW1lKTsKICAgICAgICAgICAgICAgIHJjID0gLTU7CiAgICAgICAgICAg
ICAgICBnb3RvIGVycl9vdXQ7CiAgICAgICAgfQoKCiAgICAgICAgdG1wID0gKCoodm9sYXRpbGUg
dW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENoaXBWZXJzaW9uKSkpKTsKICAg
ICAgICBmb3IgKGkgPSAwOyBpIDwgKHNpemVvZihydGxfY2hpcF9pbmZvKSAvIHNpemVvZigocnRs
X2NoaXBfaW5mbylbMF0pKTsgaSsrKQogICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBydGxfY2hp
cF9pbmZvW2ldLnZlcnNpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHAtPmNoaXBzZXQg
PSBpOwogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG1hdGNoOwogICAgICAgICAgICAgICAg
fQoKCiAgICAgICAgcHJpbnRrICgiPDc+IiAiODEzOXRvbyIgIjogIiAiJXM6IHVua25vd24gY2hp
cCB2ZXJzaW9uLCBhc3N1bWluZyBSVEwtODEzOVxuIiwKICAgICAgICAgICAgICAgIHBkZXYtPnNs
b3RfbmFtZSk7CiAgICAgICAgcHJpbnRrICgiPDc+IiAiODEzOXRvbyIgIjogIiAiJXM6IFR4Q29u
ZmlnID0gMHglbHhcbiIsIHBkZXYtPnNsb3RfbmFtZSwgKCh1bnNpZ25lZCBsb25nKSAoKih2b2xh
dGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChUeENvbmZpZykpKSkpKTsK
ICAgICAgICB0cC0+Y2hpcHNldCA9IDA7CgptYXRjaDoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgoKICAgICAgICBpZiAodHAtPmNoaXBzZXQgPj0g
Q0hfODEzOUIpIHsKICAgICAgICAgICAgICAgIHU4IG5ld190bXA4ID0gdG1wOCA9ICgqKHZvbGF0
aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDb25maWcxKSkpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAg
aWYgKChydGxfY2hpcF9pbmZvW3RwLT5jaGlwc2V0XS5mbGFncyAmIEhhc0xXYWtlKSAmJgogICAg
ICAgICAgICAgICAgICAgICh0bXA4ICYgTFdBS0UpKQogICAgICAgICAgICAgICAgICAgICAgICBu
ZXdfdG1wOCAmPSB+TFdBS0U7CiAgICAgICAgICAgICAgICBuZXdfdG1wOCB8PSBDZmcxX1BNX0Vu
YWJsZTsKICAgICAgICAgICAgICAgIGlmIChuZXdfdG1wOCAhPSB0bXA4KSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRk
ciArIChDZmc5MzQ2KSkpID0gKChDZmc5MzQ2X1VubG9jaykpKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENv
bmZpZzEpKSkgPSAoKHRtcDgpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICgqKHZvbGF0aWxl
IHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDZmc5MzQ2KSkpID0gKChDZmc5
MzQ2X0xvY2spKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAocnRsX2No
aXBfaW5mb1t0cC0+Y2hpcHNldF0uZmxhZ3MgJiBIYXNMV2FrZSkgewogICAgICAgICAgICAgICAg
ICAgICAgICB0bXA4ID0gKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9h
ZGRyICsgKENvbmZpZzQpKSkpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wOCAmIExX
UFROKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVk
IGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDb25maWc0KSkpID0gKCh0bXA4ICYgfkxXUFRO
KSkpOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgdG1wOCA9ICgqKHZv
bGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDb25maWcxKSkpKTsK
ICAgICAgICAgICAgICAgIHRtcDggJj0gfihTTEVFUCB8IFBXUkROKTsKICAgICAgICAgICAgICAg
ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDb25maWcx
KSkpID0gKCh0bXA4KSkpOwogICAgICAgIH0KCiAgICAgICAgcnRsODEzOV9jaGlwX3Jlc2V0IChp
b2FkZHIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAg
ICpkZXZfb3V0ID0gZGV2OwogICAgICAgIHJldHVybiAwOwoKZXJyX291dDoKICAgICAgICBfX3J0
bDgxMzlfY2xlYW51cF9kZXYgKGRldik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOwogICAgICAgIHJldHVybiByYzsKfQoKCnN0YXRpYyBpbnQgX19hdHRyaWJ1
dGVfXyAoKF9fc2VjdGlvbl9fICgiLnRleHQuaW5pdCIpKSkgcnRsODEzOV9pbml0X29uZSAoc3Ry
dWN0IHBjaV9kZXYgKnBkZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpCnsKICAgICAgICBzdHJ1Y3QgbmV0X2Rl
dmljZSAqZGV2ID0gKCh2b2lkICopMCk7CiAgICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAq
dHA7CiAgICAgICAgaW50IGksIGFkZHJfbGVuLCBvcHRpb247CiAgICAgICAgdm9pZCAqaW9hZGRy
OwogICAgICAgIHN0YXRpYyBpbnQgYm9hcmRfaWR4ID0gLTE7CiAgICAgICAgdTggcGNpX3JldjsK
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAgaWYoIShwZGV2ICE9ICgodm9p
ZCAqKTApKSkgeyBwcmludGsoICJBc3NlcnRpb24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4i
LCAicGRldiAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18sOTUyKTsgfTsKICAgICAg
ICBpZighKGVudCAhPSAoKHZvaWQgKikwKSkpIHsgcHJpbnRrKCAiQXNzZXJ0aW9uIGZhaWxlZCEg
JXMsJXMsJXMsbGluZT0lZFxuIiwgImVudCAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9O
X18sOTUzKTsgfTsKCiAgICAgICAgYm9hcmRfaWR4Kys7CgoKCgoKICAgICAgICB7CiAgICAgICAg
ICAgICAgICBzdGF0aWMgaW50IHByaW50ZWRfdmVyc2lvbjsKICAgICAgICAgICAgICAgIGlmICgh
cHJpbnRlZF92ZXJzaW9uKyspCiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ayAoIjw2PiIg
IjgxMzl0b28iICIgRmFzdCBFdGhlcm5ldCBkcml2ZXIgIiAiMC45LjIwIiAiXG4iKTsKICAgICAg
ICB9CgoKICAgICAgICBwY2lfcmVhZF9jb25maWdfYnl0ZShwZGV2LCAweDA4LCAmcGNpX3Jldik7
CgogICAgICAgIGlmIChwZGV2LT52ZW5kb3IgPT0gMHgxMGVjICYmCiAgICAgICAgICAgIHBkZXYt
PmRldmljZSA9PSAweDgxMzkgJiYgcGNpX3JldiA+PSAweDIwKSB7CiAgICAgICAgICAgICAgICBw
cmludGsoIjw2PiIgIjgxMzl0b28iICI6ICIgInBjaSBkZXYgJXMgKGlkICUwNHg6JTA0eCByZXYg
JTAyeCkgaXMgYW4gZW5oYW5jZWQgODEzOUMrIGNoaXBcbiIsCiAgICAgICAgICAgICAgICAgICAg
ICAgcGRldi0+c2xvdF9uYW1lLCBwZGV2LT52ZW5kb3IsIHBkZXYtPmRldmljZSwgcGNpX3Jldik7
CiAgICAgICAgICAgICAgICBwcmludGsoIjw2PiIgIjgxMzl0b28iICI6ICIgIlVzZSB0aGUgXCI4
MTM5Y3BcIiBkcml2ZXIgZm9yIGltcHJvdmVkIHBlcmZvcm1hbmNlIGFuZCBzdGFiaWxpdHkuXG4i
KTsKICAgICAgICB9CgogICAgICAgIGkgPSBydGw4MTM5X2luaXRfYm9hcmQgKHBkZXYsICZkZXYp
OwogICAgICAgIGlmIChpIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICB9Cgog
ICAgICAgIHRwID0gZGV2LT5wcml2OwogICAgICAgIGlvYWRkciA9IHRwLT5tbWlvX2FkZHI7Cgog
ICAgICAgIGlmKCEoaW9hZGRyICE9ICgodm9pZCAqKTApKSkgeyBwcmludGsoICJBc3NlcnRpb24g
ZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAiaW9hZGRyICE9IE5VTEwiLCI4MTM5dG9vLmMi
LF9fRlVOQ1RJT05fXyw5ODYpOyB9OwogICAgICAgIGlmKCEoZGV2ICE9ICgodm9pZCAqKTApKSkg
eyBwcmludGsoICJBc3NlcnRpb24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAiZGV2ICE9
IE5VTEwiLCI4MTM5dG9vLmMiLF9fRlVOQ1RJT05fXyw5ODcpOyB9OwogICAgICAgIGlmKCEodHAg
IT0gKCh2b2lkICopMCkpKSB7IHByaW50ayggIkFzc2VydGlvbiBmYWlsZWQhICVzLCVzLCVzLGxp
bmU9JWRcbiIsICJ0cCAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18sOTg4KTsgfTsK
CiAgICAgICAgYWRkcl9sZW4gPSByZWFkX2VlcHJvbSAoaW9hZGRyLCAwLCA4KSA9PSAweDgxMjkg
PyA4IDogNjsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKQogICAgICAgICAgICAgICAg
KCh1MTYgKikgKGRldi0+ZGV2X2FkZHIpKVtpXSA9CiAgICAgICAgICAgICAgICAgICAgKChfX3Ux
NikocmVhZF9lZXByb20gKGlvYWRkciwgaSArIDcsIGFkZHJfbGVuKSkpOwoKCiAgICAgICAgZGV2
LT5vcGVuID0gcnRsODEzOV9vcGVuOwogICAgICAgIGRldi0+aGFyZF9zdGFydF94bWl0ID0gcnRs
ODEzOV9zdGFydF94bWl0OwogICAgICAgIGRldi0+c3RvcCA9IHJ0bDgxMzlfY2xvc2U7CiAgICAg
ICAgZGV2LT5nZXRfc3RhdHMgPSBydGw4MTM5X2dldF9zdGF0czsKICAgICAgICBkZXYtPnNldF9t
dWx0aWNhc3RfbGlzdCA9IHJ0bDgxMzlfc2V0X3J4X21vZGU7CiAgICAgICAgZGV2LT5kb19pb2N0
bCA9IG5ldGRldl9pb2N0bDsKICAgICAgICBkZXYtPnR4X3RpbWVvdXQgPSBydGw4MTM5X3R4X3Rp
bWVvdXQ7CiAgICAgICAgZGV2LT53YXRjaGRvZ190aW1lbyA9ICg2KjEwMCk7CiAgICAgICAgZGV2
LT5mZWF0dXJlcyB8PSAxfDg7CgogICAgICAgIGRldi0+aXJxID0gcGRldi0+aXJxOwoKCiAgICAg
ICAgdHAgPSBkZXYtPnByaXY7CgoKICAgICAgICB0cC0+ZHJ2X2ZsYWdzID0gYm9hcmRfaW5mb1tl
bnQtPmRyaXZlcl9kYXRhXS5od19mbGFnczsKICAgICAgICB0cC0+bW1pb19hZGRyID0gaW9hZGRy
OwogICAgICAgIGRvIHsgfSB3aGlsZSgwKTsKICAgICAgICBpbml0X3dhaXRxdWV1ZV9oZWFkICgm
dHAtPnRocl93YWl0KTsKICAgICAgICBpbml0X2NvbXBsZXRpb24gKCZ0cC0+dGhyX2V4aXRlZCk7
CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgIGkgPSByZWdpc3Rlcl9uZXRkZXYgKGRl
dik7CiAgICAgICAgaWYgKGkpIGdvdG8gZXJyX291dDsKCiAgICAgICAgcGNpX3NldF9kcnZkYXRh
IChwZGV2LCBkZXYpOwoKICAgICAgICBwcmludGsgKCI8Nj4iICIlczogJXMgYXQgMHglbHgsICIK
ICAgICAgICAgICAgICAgICIlMi4yeDolMi4yeDolMi4yeDolMi4yeDolMi4yeDolMi4yeCwgIgog
ICAgICAgICAgICAgICAgIklSUSAlZFxuIiwKICAgICAgICAgICAgICAgIGRldi0+bmFtZSwKICAg
ICAgICAgICAgICAgIGJvYXJkX2luZm9bZW50LT5kcml2ZXJfZGF0YV0ubmFtZSwKICAgICAgICAg
ICAgICAgIGRldi0+YmFzZV9hZGRyLAogICAgICAgICAgICAgICAgZGV2LT5kZXZfYWRkclswXSwg
ZGV2LT5kZXZfYWRkclsxXSwKICAgICAgICAgICAgICAgIGRldi0+ZGV2X2FkZHJbMl0sIGRldi0+
ZGV2X2FkZHJbM10sCiAgICAgICAgICAgICAgICBkZXYtPmRldl9hZGRyWzRdLCBkZXYtPmRldl9h
ZGRyWzVdLAogICAgICAgICAgICAgICAgZGV2LT5pcnEpOwoKICAgICAgICBwcmludGsgKCI8Nz4i
ICIlczogIElkZW50aWZpZWQgODEzOSBjaGlwIHR5cGUgJyVzJ1xuIiwKICAgICAgICAgICAgICAg
IGRldi0+bmFtZSwgcnRsX2NoaXBfaW5mb1t0cC0+Y2hpcHNldF0ubmFtZSk7CiMgMTA2MyAiODEz
OXRvby5jIgogICAgICAgICAgICAgICAgdHAtPnBoeXNbMF0gPSAzMjsKCgogICAgICAgIG9wdGlv
biA9IChib2FyZF9pZHggPj0gOCkgPyAwIDogbWVkaWFbYm9hcmRfaWR4XTsKICAgICAgICBpZiAo
b3B0aW9uID4gMCkgewogICAgICAgICAgICAgICAgdHAtPmZ1bGxfZHVwbGV4ID0gKG9wdGlvbiAm
IDB4MjEwKSA/IDEgOiAwOwogICAgICAgICAgICAgICAgdHAtPmRlZmF1bHRfcG9ydCA9IG9wdGlv
biAmIDB4RkY7CiAgICAgICAgICAgICAgICBpZiAodHAtPmRlZmF1bHRfcG9ydCkKICAgICAgICAg
ICAgICAgICAgICAgICAgdHAtPm1lZGlhbG9jayA9IDE7CiAgICAgICAgfQogICAgICAgIGlmIChi
b2FyZF9pZHggPCA4ICYmIGZ1bGxfZHVwbGV4W2JvYXJkX2lkeF0gPiAwKQogICAgICAgICAgICAg
ICAgdHAtPmZ1bGxfZHVwbGV4ID0gZnVsbF9kdXBsZXhbYm9hcmRfaWR4XTsKICAgICAgICBpZiAo
dHAtPmZ1bGxfZHVwbGV4KSB7CiAgICAgICAgICAgICAgICBwcmludGsoIjw2PiIgIiVzOiBNZWRp
YSB0eXBlIGZvcmNlZCB0byBGdWxsIER1cGxleC5cbiIsIGRldi0+bmFtZSk7CgoKICAgICAgICAg
ICAgICAgIHRwLT5kdXBsZXhfbG9jayA9IDE7CiAgICAgICAgfQogICAgICAgIGlmICh0cC0+ZGVm
YXVsdF9wb3J0KSB7CiAgICAgICAgICAgICAgICBwcmludGsoIjw2PiIgIiAgRm9yY2luZyAlZE1i
cHMgJXMtZHVwbGV4IG9wZXJhdGlvbi5cbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChv
cHRpb24gJiAweDIwID8gMTAwIDogMTApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAob3B0
aW9uICYgMHgxMCA/ICJmdWxsIiA6ICJoYWxmIikpOwogICAgICAgICAgICAgICAgbWRpb193cml0
ZShkZXYsIHRwLT5waHlzWzBdLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICgob3B0aW9uICYgMHgyMCkgPyAweDIwMDAgOiAwKSB8CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKChvcHRpb24gJiAweDEwKSA/IDB4MDEwMCA6IDApKTsKICAgICAgICB9CgoK
ICAgICAgICBpZiAocnRsX2NoaXBfaW5mb1t0cC0+Y2hpcHNldF0uZmxhZ3MgJiBIYXNIbHRDbGsp
CiAgICAgICAgICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShp
b2FkZHIgKyAoSGx0Q2xrKSkpID0gKCgnSCcpKSk7CgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOwogICAgICAgIHJldHVybiAwOwoKZXJyX291dDoKICAgICAgICBfX3J0
bDgxMzlfY2xlYW51cF9kZXYgKGRldik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOwogICAgICAgIHJldHVybiBpOwp9CgoKc3RhdGljIHZvaWQgX19hdHRyaWJ1
dGVfXyAoKHVudXNlZCwgX19zZWN0aW9uX18oIi50ZXh0LmV4aXQiKSkpIHJ0bDgxMzlfcmVtb3Zl
X29uZSAoc3RydWN0IHBjaV9kZXYgKnBkZXYpCnsKICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAq
ZGV2ID0gcGNpX2dldF9kcnZkYXRhIChwZGV2KTsKICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2
YXRlICpucDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAgaWYoIShkZXYg
IT0gKCh2b2lkICopMCkpKSB7IHByaW50ayggIkFzc2VydGlvbiBmYWlsZWQhICVzLCVzLCVzLGxp
bmU9JWRcbiIsICJkZXYgIT0gTlVMTCIsIjgxMzl0b28uYyIsX19GVU5DVElPTl9fLDExMTEpOyB9
OwogICAgICAgIG5wID0gZGV2LT5wcml2OwogICAgICAgIGlmKCEobnAgIT0gKCh2b2lkICopMCkp
KSB7IHByaW50ayggIkFzc2VydGlvbiBmYWlsZWQhICVzLCVzLCVzLGxpbmU9JWRcbiIsICJucCAh
PSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18sMTExMyk7IH07CgogICAgICAgIHVucmVn
aXN0ZXJfbmV0ZGV2IChkZXYpOwoKICAgICAgICBfX3J0bDgxMzlfY2xlYW51cF9kZXYgKGRldik7
CgogICAgICAgICAgICAgICAgICAgICAgICAgIDsKfQojIDExNDUgIjgxMzl0b28uYyIKc3RhdGlj
IGludCBfX2F0dHJpYnV0ZV9fICgoX19zZWN0aW9uX18gKCIudGV4dC5pbml0IikpKSByZWFkX2Vl
cHJvbSAodm9pZCAqaW9hZGRyLCBpbnQgbG9jYXRpb24sIGludCBhZGRyX2xlbikKewogICAgICAg
IGludCBpOwogICAgICAgIHVuc2lnbmVkIHJldHZhbCA9IDA7CiAgICAgICAgdm9pZCAqZWVfYWRk
ciA9IGlvYWRkciArIENmZzkzNDY7CiAgICAgICAgaW50IHJlYWRfY21kID0gbG9jYXRpb24gfCAo
KDYpIDw8IGFkZHJfbGVuKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAg
KCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoZWVfYWRkcikpID0gKCgweDgw
IHwgMHgwOCkgJiB+MHgwOCkpOwogICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikg
KCh2b2lkICopKGVlX2FkZHIpKSA9ICgoMHg4MCB8IDB4MDgpKSk7CiAgICAgICAgKCoodm9sYXRp
bGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShlZV9hZGRyKSkpOwoKCiAgICAgICAgZm9yIChp
ID0gNCArIGFkZHJfbGVuOyBpID49IDA7IGktLSkgewogICAgICAgICAgICAgICAgaW50IGRhdGF2
YWwgPSAocmVhZF9jbWQgJiAoMSA8PCBpKSkgPyAweDAyIDogMDsKICAgICAgICAgICAgICAgICgq
KHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGVlX2FkZHIpKSA9ICgoMHg4MCB8
IDB4MDgpIHwgZGF0YXZhbCkpOwogICAgICAgICAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQg
aW50ICopICgodm9pZCAqKShlZV9hZGRyKSkpOwogICAgICAgICAgICAgICAgKCoodm9sYXRpbGUg
dW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoZWVfYWRkcikpID0gKCgweDgwIHwgMHgwOCkgfCBk
YXRhdmFsIHwgMHgwNCkpOwogICAgICAgICAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50
ICopICgodm9pZCAqKShlZV9hZGRyKSkpOwogICAgICAgIH0KICAgICAgICAoKih2b2xhdGlsZSB1
bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShlZV9hZGRyKSkgPSAoKDB4ODAgfCAweDA4KSkpOwog
ICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoZWVfYWRkcikpKTsK
CiAgICAgICAgZm9yIChpID0gMTY7IGkgPiAwOyBpLS0pIHsKICAgICAgICAgICAgICAgICgqKHZv
bGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGVlX2FkZHIpKSA9ICgoMHg4MCB8IDB4
MDgpIHwgMHgwNCkpOwogICAgICAgICAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICop
ICgodm9pZCAqKShlZV9hZGRyKSkpOwogICAgICAgICAgICAgICAgcmV0dmFsID0KICAgICAgICAg
ICAgICAgICAgICAocmV0dmFsIDw8IDEpIHwgKCgoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICop
ICgodm9pZCAqKShlZV9hZGRyKSkpICYgMHgwMSkgPyAxIDoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDApOwogICAgICAgICAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQg
Y2hhciAqKSAoKHZvaWQgKikoZWVfYWRkcikpID0gKCgweDgwIHwgMHgwOCkpKTsKICAgICAgICAg
ICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoZWVfYWRkcikpKTsK
ICAgICAgICB9CgoKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAq
KShlZV9hZGRyKSkgPSAofjB4MDgpKTsKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQg
KikgKCh2b2lkICopKGVlX2FkZHIpKSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOwogICAgICAgIHJldHVybiByZXR2YWw7Cn0KIyAxMjAzICI4MTM5
dG9vLmMiCnN0YXRpYyBjaGFyIG1paV8yXzgxMzlfbWFwWzhdID0gewogICAgICAgIEJhc2ljTW9k
ZUN0cmwsCiAgICAgICAgQmFzaWNNb2RlU3RhdHVzLAogICAgICAgIDAsCiAgICAgICAgMCwKICAg
ICAgICBOV2F5QWR2ZXJ0LAogICAgICAgIE5XYXlMUEFSLAogICAgICAgIE5XYXlFeHBhbnNpb24s
CiAgICAgICAgMAp9OwojIDEyMzQgIjgxMzl0b28uYyIKc3RhdGljIGludCBtZGlvX3JlYWQgKHN0
cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBwaHlfaWQsIGludCBsb2NhdGlvbikKewogICAgICAg
IHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKnRwID0gZGV2LT5wcml2OwogICAgICAgIGludCByZXR2
YWwgPSAwOwoKCgoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICA7CgogICAgICAgIGlmIChw
aHlfaWQgPiAzMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIHJldHVybiBs
b2NhdGlvbiA8IDggJiYgbWlpXzJfODEzOV9tYXBbbG9jYXRpb25dID8KICAgICAgICAgICAgICAg
ICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSAoKHZvaWQgKikodHAtPm1taW9fYWRk
ciArIG1paV8yXzgxMzlfbWFwW2xvY2F0aW9uXSkpKSA6IDA7CiAgICAgICAgfQojIDEyNzQgIjgx
Mzl0b28uYyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDsKICAgICAgICByZXR1cm4gKHJldHZhbCA+PiAxKSAmIDB4ZmZmZjsK
fQoKCnN0YXRpYyB2b2lkIG1kaW9fd3JpdGUgKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBw
aHlfaWQsIGludCBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlKQp7
CiAgICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHAgPSBkZXYtPnByaXY7CgoKCgoKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAgaWYgKHBoeV9pZCA+IDMxKSB7CiAg
ICAgICAgICAgICAgICB2b2lkICppb2FkZHIgPSB0cC0+bW1pb19hZGRyOwogICAgICAgICAgICAg
ICAgaWYgKGxvY2F0aW9uID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgKCoodm9sYXRp
bGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENmZzkzNDYpKSkgPSAoKENm
ZzkzNDZfVW5sb2NrKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAoKih2b2xhdGlsZSB1bnNp
Z25lZCBzaG9ydCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKEJhc2ljTW9kZUN0cmwpKSkgPSAoKHZh
bHVlKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFy
ICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2ZnOTM0NikpKSA9ICgoQ2ZnOTM0Nl9Mb2NrKSkpOwog
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsb2NhdGlvbiA8IDggJiYgbWlpXzJfODEzOV9tYXBb
bG9jYXRpb25dKQogICAgICAgICAgICAgICAgICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBz
aG9ydCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKG1paV8yXzgxMzlfbWFwW2xvY2F0aW9uXSkpKSA9
ICgodmFsdWUpKSk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQojIDEzMjIgIjgx
Mzl0b28uYyIKfQoKCnN0YXRpYyBpbnQgcnRsODEzOV9vcGVuIChzdHJ1Y3QgbmV0X2RldmljZSAq
ZGV2KQp7CiAgICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHAgPSBkZXYtPnByaXY7CiAg
ICAgICAgaW50IHJldHZhbDsKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAg
ICAgcmV0dmFsID0gcmVxdWVzdF9pcnEgKGRldi0+aXJxLCBydGw4MTM5X2ludGVycnVwdCwgMHgw
NDAwMDAwMCwgZGV2LT5uYW1lLCBkZXYpOwogICAgICAgIGlmIChyZXR2YWwpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAg
ICAgICAgICByZXR1cm4gcmV0dmFsOwogICAgICAgIH0KCiAgICAgICAgdHAtPnR4X2J1ZnMgPSBw
Y2lfYWxsb2NfY29uc2lzdGVudCh0cC0+cGNpX2RldiwgKDE1MzYgKiA0KSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cC0+dHhfYnVmc19kbWEpOwogICAgICAg
IHRwLT5yeF9yaW5nID0gcGNpX2FsbG9jX2NvbnNpc3RlbnQodHAtPnBjaV9kZXYsICgoODE5MiA8
PCAyKSArIDE2ICsgMjA0OCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmdHAtPnJ4X3JpbmdfZG1hKTsKICAgICAgICBpZiAodHAtPnR4X2J1ZnMgPT0gKCh2b2lk
ICopMCkgfHwgdHAtPnJ4X3JpbmcgPT0gKCh2b2lkICopMCkpIHsKICAgICAgICAgICAgICAgIGZy
ZWVfaXJxKGRldi0+aXJxLCBkZXYpOwoKICAgICAgICAgICAgICAgIGlmICh0cC0+dHhfYnVmcykK
ICAgICAgICAgICAgICAgICAgICAgICAgcGNpX2ZyZWVfY29uc2lzdGVudCh0cC0+cGNpX2Rldiwg
KDE1MzYgKiA0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
cC0+dHhfYnVmcywgdHAtPnR4X2J1ZnNfZG1hKTsKICAgICAgICAgICAgICAgIGlmICh0cC0+cnhf
cmluZykKICAgICAgICAgICAgICAgICAgICAgICAgcGNpX2ZyZWVfY29uc2lzdGVudCh0cC0+cGNp
X2RldiwgKCg4MTkyIDw8IDIpICsgMTYgKyAyMDQ4KSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0cC0+cnhfcmluZywgdHAtPnJ4X3JpbmdfZG1hKTsKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAg
ICAgICAgICAgcmV0dXJuIC0xMjsKCiAgICAgICAgfQoKICAgICAgICB0cC0+ZnVsbF9kdXBsZXgg
PSB0cC0+ZHVwbGV4X2xvY2s7CiAgICAgICAgdHAtPnR4X2ZsYWcgPSAoMjU2IDw8IDExKSAmIDB4
MDAzZjAwMDA7CiAgICAgICAgdHAtPnR3aXN0aWUgPSAxOwoKICAgICAgICBydGw4MTM5X2luaXRf
cmluZyAoZGV2KTsKICAgICAgICBydGw4MTM5X2h3X3N0YXJ0IChkZXYpOwoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoKCgogICAg
ICAgIHRwLT50aHJfcGlkID0ga2VybmVsX3RocmVhZCAocnRsODEzOV90aHJlYWQsIGRldiwgMHgw
MDAwMDIwMCB8IDB4MDAwMDA0MDApOwogICAgICAgIGlmICh0cC0+dGhyX3BpZCA8IDApCiAgICAg
ICAgICAgICAgICBwcmludGsgKCI8ND4iICIlczogdW5hYmxlIHRvIHN0YXJ0IGtlcm5lbCB0aHJl
YWRcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGRldi0+bmFtZSk7CgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgcmV0dXJuIDA7Cn0KCgpzdGF0aWMg
dm9pZCBydGxfY2hlY2tfbWVkaWEgKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICBz
dHJ1Y3QgcnRsODEzOV9wcml2YXRlICp0cCA9IGRldi0+cHJpdjsKCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgOwoKICAgICAgICBpZiAodHAtPnBoeXNbMF0gPj0gMCkgewogICAgICAgICAgICAg
ICAgdTE2IG1paV9yZWc1ID0gbWRpb19yZWFkKGRldiwgdHAtPnBoeXNbMF0sIDUpOwogICAgICAg
ICAgICAgICAgaWYgKG1paV9yZWc1ID09IDB4ZmZmZikKICAgICAgICAgICAgICAgICAgICAgICAg
OwogICAgICAgICAgICAgICAgZWxzZSBpZiAoKG1paV9yZWc1ICYgMHgwMTAwKSA9PSAweDAxMDAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKG1paV9yZWc1ICYgMHgwMEMwKSA9
PSAweDAwNDApCiAgICAgICAgICAgICAgICAgICAgICAgIHRwLT5mdWxsX2R1cGxleCA9IDE7Cgog
ICAgICAgICAgICAgICAgcHJpbnRrICgiPDY+IiIlczogU2V0dGluZyAlcyVzLWR1cGxleCBiYXNl
ZCBvbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGF1dG8tbmVnb3RpYXRlZCBw
YXJ0bmVyIGFiaWxpdHkgJTQuNHguXG4iLAogICAgICAgICAgICAgICAgICAgICAgICBkZXYtPm5h
bWUsIG1paV9yZWc1ID09IDAgPyAiIiA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KG1paV9yZWc1ICYgMHgwMTgwKSA/ICIxMDBtYnBzICIgOiAiMTBtYnBzICIsCiAgICAgICAgICAg
ICAgICAgICAgICAgIHRwLT5mdWxsX2R1cGxleCA/ICJmdWxsIiA6ICJoYWxmIiwgbWlpX3JlZzUp
OwogICAgICAgIH0KfQoKCnN0YXRpYyB2b2lkIHJ0bDgxMzlfaHdfc3RhcnQgKHN0cnVjdCBuZXRf
ZGV2aWNlICpkZXYpCnsKICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRlICp0cCA9IGRldi0+
cHJpdjsKICAgICAgICB2b2lkICppb2FkZHIgPSB0cC0+bW1pb19hZGRyOwogICAgICAgIHUzMiBp
OwogICAgICAgIHU4IHRtcDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgogICAgICAg
IGlmIChydGxfY2hpcF9pbmZvW3RwLT5jaGlwc2V0XS5mbGFncyAmIEhhc0hsdENsaykKICAgICAg
ICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciAr
IChIbHRDbGspKSkgPSAoKCdSJykpKTsKCiAgICAgICAgcnRsODEzOV9jaGlwX3Jlc2V0IChpb2Fk
ZHIpOwoKCiAgICAgICAgZG8geyAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAq
KShpb2FkZHIgKyAoQ2ZnOTM0NikpKSA9ICgoQ2ZnOTM0Nl9VbmxvY2spKSk7ICgqKHZvbGF0aWxl
IHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDZmc5MzQ2KSkpKTsgfSB3aGls
ZSAoMCk7CgogICAgICAgIGRvIHsgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAq
KShpb2FkZHIgKyAoTUFDMCArIDApKSkgPSAoKCgoX191MzIpKCoodTMyICopIChkZXYtPmRldl9h
ZGRyICsgMCkpKSkpKTsgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2Fk
ZHIgKyAoTUFDMCArIDApKSkpOyB9IHdoaWxlICgwKTsKICAgICAgICBkbyB7ICgqKHZvbGF0aWxl
IHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKE1BQzAgKyA0KSkpID0gKCgoKF9f
dTMyKSgqKHUzMiAqKSAoZGV2LT5kZXZfYWRkciArIDQpKSkpKSk7ICgqKHZvbGF0aWxlIHVuc2ln
bmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKE1BQzAgKyA0KSkpKTsgfSB3aGlsZSAoMCk7
CgoKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIg
KyAoQ2hpcENtZCkpKSA9ICgoQ21kUnhFbmIgfCBDbWRUeEVuYikpKTsKCiAgICAgICAgdHAtPnJ4
X2NvbmZpZyA9IHJ0bDgxMzlfcnhfY29uZmlnIHwgQWNjZXB0QnJvYWRjYXN0IHwgQWNjZXB0TXlQ
aHlzOwogICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRy
ICsgKFJ4Q29uZmlnKSkpID0gKCh0cC0+cnhfY29uZmlnKSkpOwoKCiAgICAgICAgKCoodm9sYXRp
bGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoVHhDb25maWcpKSkgPSAoKCg2
IDw8IFR4RE1BU2hpZnQpKSkpOwoKICAgICAgICB0cC0+Y3VyX3J4ID0gMDsKCiAgICAgICAgcnRs
X2NoZWNrX21lZGlhIChkZXYpOwoKICAgICAgICBpZiAodHAtPmNoaXBzZXQgPj0gQ0hfODEzOUIp
IHsKCgoKICAgICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lk
ICopKGlvYWRkciArIChDb25maWczKSkpID0gKCgoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICop
ICgodm9pZCAqKShpb2FkZHIgKyAoQ29uZmlnMykpKSkgJiB+Q2ZnM19NYWdpYykpKTsKICAgICAg
ICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKICAgICAg
ICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2ZnOTM0
NikpKSA9ICgoQ2ZnOTM0Nl9Mb2NrKSkpOwoKCiAgICAgICAgZG8geyAoKih2b2xhdGlsZSB1bnNp
Z25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChSeEJ1ZikpKSA9ICgodHAtPnJ4X3Jpbmdf
ZG1hKSkpOyAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChS
eEJ1ZikpKSk7IH0gd2hpbGUgKDApOwoKCiAgICAgICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykK
ICAgICAgICAgICAgICAgIGRvIHsgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAq
KShpb2FkZHIgKyAoVHhBZGRyMCArIChpICogNCkpKSkgPSAoKHRwLT50eF9idWZzX2RtYSArICh0
cC0+dHhfYnVmW2ldIC0gdHAtPnR4X2J1ZnMpKSkpOyAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQg
KikgKCh2b2lkICopKGlvYWRkciArIChUeEFkZHIwICsgKGkgKiA0KSkpKSk7IH0gd2hpbGUgKDAp
OwoKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciAr
IChSeE1pc3NlZCkpKSA9ICgoMCkpKTsKCiAgICAgICAgcnRsODEzOV9zZXRfcnhfbW9kZSAoZGV2
KTsKCgogICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopICgodm9pZCAqKShpb2Fk
ZHIgKyAoTXVsdGlJbnRyKSkpID0gKCgoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSAoKHZv
aWQgKikoaW9hZGRyICsgKE11bHRpSW50cikpKSkgJiBNdWx0aUludHJDbGVhcikpKTsKCgogICAg
ICAgIHRtcCA9ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciAr
IChDaGlwQ21kKSkpKTsKICAgICAgICBpZiAoKCEodG1wICYgQ21kUnhFbmIpKSB8fCAoISh0bXAg
JiBDbWRUeEVuYikpKQogICAgICAgICAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAq
KSAoKHZvaWQgKikoaW9hZGRyICsgKENoaXBDbWQpKSkgPSAoKENtZFJ4RW5iIHwgQ21kVHhFbmIp
KSk7CgoKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSAoKHZvaWQgKikoaW9h
ZGRyICsgKEludHJNYXNrKSkpID0gKChydGw4MTM5X2ludHJfbWFzaykpKTsKCiAgICAgICAgbmV0
aWZfc3RhcnRfcXVldWUgKGRldik7CgogICAgICAgICAgICAgICAgICAgICAgICAgIDsKfQoKCgpz
dGF0aWMgdm9pZCBydGw4MTM5X2luaXRfcmluZyAoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewog
ICAgICAgIHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKnRwID0gZGV2LT5wcml2OwogICAgICAgIGlu
dCBpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICAgICAgICB0cC0+Y3VyX3J4ID0g
MDsKICAgICAgICB0cC0+Y3VyX3R4ID0gMDsKICAgICAgICB0cC0+ZGlydHlfdHggPSAwOwoKICAg
ICAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CiAgICAgICAgICAgICAgICB0cC0+dHhfaW5m
b1tpXS5za2IgPSAoKHZvaWQgKikwKTsKICAgICAgICAgICAgICAgIHRwLT50eF9pbmZvW2ldLm1h
cHBpbmcgPSAwOwogICAgICAgICAgICAgICAgdHAtPnR4X2J1ZltpXSA9ICZ0cC0+dHhfYnVmc1tp
ICogMTUzNl07CiAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICA7Cn0KCgoKc3Rh
dGljIGludCBuZXh0X3RpY2sgPSAzICogMTAwOwoKCnN0YXRpYyBpbmxpbmUgdm9pZCBydGw4MTM5
X3R1bmVfdHdpc3RlciAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKnRwKSB7fQojIDE2MDAgIjgx
Mzl0b28uYyIKc3RhdGljIGlubGluZSB2b2lkIHJ0bDgxMzlfdGhyZWFkX2l0ZXIgKHN0cnVjdCBu
ZXRfZGV2aWNlICpkZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBy
dGw4MTM5X3ByaXZhdGUgKnRwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
ICppb2FkZHIpCnsKICAgICAgICBpbnQgbWlpX3JlZzU7CgogICAgICAgIG1paV9yZWc1ID0gbWRp
b19yZWFkIChkZXYsIHRwLT5waHlzWzBdLCA1KTsKCiAgICAgICAgaWYgKCF0cC0+ZHVwbGV4X2xv
Y2sgJiYgbWlpX3JlZzUgIT0gMHhmZmZmKSB7CiAgICAgICAgICAgICAgICBpbnQgZHVwbGV4ID0g
KG1paV9yZWc1ICYgMHgwMTAwKQogICAgICAgICAgICAgICAgICAgIHx8IChtaWlfcmVnNSAmIDB4
MDFDMCkgPT0gMHgwMDQwOwogICAgICAgICAgICAgICAgaWYgKHRwLT5mdWxsX2R1cGxleCAhPSBk
dXBsZXgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHAtPmZ1bGxfZHVwbGV4ID0gZHVwbGV4
OwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1paV9yZWc1KSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJpbnRrICgiPDY+IgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIiVzOiBTZXR0aW5nICVzLWR1cGxleCBiYXNlZCBvbiBNSUkgIyVkIGxp
bmsiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHBhcnRuZXIgYWJp
bGl0eSBvZiAlNC40eC5cbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZXYtPm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cC0+
ZnVsbF9kdXBsZXggPyAiZnVsbCIgOiAiaGFsZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0cC0+cGh5c1swXSwgbWlpX3JlZzUpOwogICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50aygiPDY+
IiIlczogbWVkaWEgaXMgdW5jb25uZWN0ZWQsIGxpbmsgZG93biwgb3IgaW5jb21wYXRpYmxlIGNv
bm5lY3Rpb25cbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldi0+
bmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCgoKCgogICAgICAgICAgICAgICAgfQog
ICAgICAgIH0KCiAgICAgICAgbmV4dF90aWNrID0gMTAwICogNjA7CgogICAgICAgIHJ0bDgxMzlf
dHVuZV90d2lzdGVyIChkZXYsIHRwKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA7CgoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCn0KCgpzdGF0aWMg
aW50IHJ0bDgxMzlfdGhyZWFkICh2b2lkICpkYXRhKQp7CiAgICAgICAgc3RydWN0IG5ldF9kZXZp
Y2UgKmRldiA9IGRhdGE7CiAgICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHAgPSBkZXYt
PnByaXY7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0aW1lb3V0OwoKICAgICAgICBkYWVtb25pemUg
KCk7CiAgICAgICAgcmVwYXJlbnRfdG9faW5pdCgpOwogICAgICAgIGRvIHsgX19hc21fXyBfX3Zv
bGF0aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsgKHZvaWQpKCZnZXRfY3VycmVudCgpLT5zaWdt
YXNrX2xvY2spOyB9IHdoaWxlICgwKTsKICAgICAgICBzaWdlbXB0eXNldCgmZ2V0X2N1cnJlbnQo
KS0+YmxvY2tlZCk7CiAgICAgICAgcmVjYWxjX3NpZ3BlbmRpbmcoZ2V0X2N1cnJlbnQoKSk7CiAg
ICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJzdGkiOiA6
IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOwoKICAgICAgICBzdHJuY3B5IChnZXRfY3VycmVudCgp
LT5jb21tLCBkZXYtPm5hbWUsIHNpemVvZihnZXRfY3VycmVudCgpLT5jb21tKSAtIDEpOwogICAg
ICAgIGdldF9jdXJyZW50KCktPmNvbW1bc2l6ZW9mKGdldF9jdXJyZW50KCktPmNvbW0pIC0gMV0g
PSAnXDAnOwoKICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgdGltZW91dCA9IG5l
eHRfdGljazsKICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGlt
ZW91dCA9IGludGVycnVwdGlibGVfc2xlZXBfb25fdGltZW91dCAoJnRwLT50aHJfd2FpdCwgdGlt
ZW91dCk7CiAgICAgICAgICAgICAgICB9IHdoaWxlICghc2lnbmFsX3BlbmRpbmcgKGdldF9jdXJy
ZW50KCkpICYmICh0aW1lb3V0ID4gMCkpOwoKICAgICAgICAgICAgICAgIGlmIChzaWduYWxfcGVu
ZGluZyAoZ2V0X2N1cnJlbnQoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAg
ICAgICAgICAgICAgIHJ0bmxfbG9jayAoKTsKICAgICAgICAgICAgICAgIHJ0bDgxMzlfdGhyZWFk
X2l0ZXIgKGRldiwgdHAsIHRwLT5tbWlvX2FkZHIpOwogICAgICAgICAgICAgICAgcnRubF91bmxv
Y2sgKCk7CiAgICAgICAgfQoKICAgICAgICBjb21wbGV0ZV9hbmRfZXhpdCAoJnRwLT50aHJfZXhp
dGVkLCAwKTsKfQoKCnN0YXRpYyB2b2lkIHJ0bDgxMzlfdHhfY2xlYXIgKHN0cnVjdCBydGw4MTM5
X3ByaXZhdGUgKnRwKQp7CiAgICAgICAgaW50IGk7CgogICAgICAgIHRwLT5jdXJfdHggPSAwOwog
ICAgICAgIHRwLT5kaXJ0eV90eCA9IDA7CgoKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsr
KSB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgcmluZ19pbmZvICpycCA9ICZ0cC0+dHhfaW5mb1tp
XTsKICAgICAgICAgICAgICAgIGlmIChycC0+bWFwcGluZyAhPSAwKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHBjaV91bm1hcF9zaW5nbGUgKHRwLT5wY2lfZGV2LCBycC0+bWFwcGluZywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnAtPnNrYi0+bGVuLCAxKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgcnAtPm1hcHBpbmcgPSAwOwogICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgaWYgKHJwLT5za2IpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
a2ZyZWVfc2tiKHJwLT5za2IpOwogICAgICAgICAgICAgICAgICAgICAgICBycC0+c2tiID0gKCh2
b2lkICopMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRwLT5zdGF0cy50eF9kcm9wcGVkKys7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQp9CgoKc3RhdGljIHZvaWQgcnRsODEzOV90eF90
aW1lb3V0IChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgc3RydWN0IHJ0bDgxMzlf
cHJpdmF0ZSAqdHAgPSBkZXYtPnByaXY7CiAgICAgICAgdm9pZCAqaW9hZGRyID0gdHAtPm1taW9f
YWRkcjsKICAgICAgICBpbnQgaTsKICAgICAgICB1OCB0bXA4OwogICAgICAgIHVuc2lnbmVkIGxv
bmcgZmxhZ3M7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoKCgog
ICAgICAgIHRwLT54c3RhdHMudHhfdGltZW91dHMrKzsKCgogICAgICAgIHRtcDggPSAoKih2b2xh
dGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2hpcENtZCkpKSk7CiAg
ICAgICAgaWYgKHRtcDggJiBDbWRUeEVuYikKICAgICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVu
c2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDaGlwQ21kKSkpID0gKChDbWRSeEVu
YikpKTsKCgogICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopICgodm9pZCAqKShp
b2FkZHIgKyAoSW50ck1hc2spKSkgPSAoKDB4MDAwMCkpKTsKCgogICAgICAgIHByaW50ayAoIjw3
PiIgIiVzOiBUeCBxdWV1ZSBzdGFydCBlbnRyeSAlbGQgIGRpcnR5IGVudHJ5ICVsZC5cbiIsCiAg
ICAgICAgICAgICAgICBkZXYtPm5hbWUsIHRwLT5jdXJfdHgsIHRwLT5kaXJ0eV90eCk7CiAgICAg
ICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykKICAgICAgICAgICAgICAgIHByaW50ayAoIjw3PiIg
IiVzOiAgVHggZGVzY3JpcHRvciAlZCBpcyAlOC44bHguJXNcbiIsCiAgICAgICAgICAgICAgICAg
ICAgICAgIGRldi0+bmFtZSwgaSwgKCh1bnNpZ25lZCBsb25nKSAoKih2b2xhdGlsZSB1bnNpZ25l
ZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChUeFN0YXR1czAgKyAoaSAqIDQpKSkpKSksCiAg
ICAgICAgICAgICAgICAgICAgICAgIGkgPT0gdHAtPmRpcnR5X3R4ICUgNCA/CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiAocXVldWUgaGVhZCkiIDogIiIpOwoKCiAgICAgICAgZG8g
eyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxh
Z3MpOiA6Im1lbW9yeSIpOyAodm9pZCkoJnRwLT5sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAg
cnRsODEzOV90eF9jbGVhciAodHApOwogICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2Fz
bV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5
IiwgImNjIik7IH0gd2hpbGUgKDApOwoKCiAgICAgICAgcnRsODEzOV9od19zdGFydCAoZGV2KTsK
CiAgICAgICAgbmV0aWZfd2FrZV9xdWV1ZSAoZGV2KTsKfQoKCnN0YXRpYyBpbnQgcnRsODEzOV9z
dGFydF94bWl0IChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7
CiAgICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHAgPSBkZXYtPnByaXY7CiAgICAgICAg
dm9pZCAqaW9hZGRyID0gdHAtPm1taW9fYWRkcjsKICAgICAgICB1bnNpZ25lZCBpbnQgZW50cnk7
CiAgICAgICAgdTMyIGRtYV9hZGRyOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImxv
Y2s7IGFkZGwgJDAsMCglJWVzcCkiOiA6IDoibWVtb3J5Iik7CgoKICAgICAgICBlbnRyeSA9IHRw
LT5jdXJfdHggJSA0OwoKICAgICAgICBpZighKHRwLT50eF9pbmZvW2VudHJ5XS5za2IgPT0gKCh2
b2lkICopMCkpKSB7IHByaW50ayggIkFzc2VydGlvbiBmYWlsZWQhICVzLCVzLCVzLGxpbmU9JWRc
biIsICJ0cC0+dHhfaW5mb1tlbnRyeV0uc2tiID09IE5VTEwiLCI4MTM5dG9vLmMiLF9fRlVOQ1RJ
T05fXywxNzY1KTsgfTsKICAgICAgICBpZighKHRwLT50eF9pbmZvW2VudHJ5XS5tYXBwaW5nID09
IDApKSB7IHByaW50ayggIkFzc2VydGlvbiBmYWlsZWQhICVzLCVzLCVzLGxpbmU9JWRcbiIsICJ0
cC0+dHhfaW5mb1tlbnRyeV0ubWFwcGluZyA9PSAwIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18s
MTc2Nik7IH07CgogICAgICAgIHRwLT50eF9pbmZvW2VudHJ5XS5za2IgPSBza2I7CiAgICAgICAg
aWYgKCAhKCh1bnNpZ25lZCBsb25nKXNrYi0+ZGF0YSAmIDMpICYmICgoc3RydWN0IHNrYl9zaGFy
ZWRfaW5mbyAqKSgoc2tiKS0+ZW5kKSktPm5yX2ZyYWdzID09IDAgJiYKICAgICAgICAgICAgICAg
ICAgICAgICAgc2tiLT5pcF9zdW1tZWQgIT0gMSkgewogICAgICAgICAgICAgICAgdHAtPnhzdGF0
cy50eF9idWZfbWFwcGVkKys7CiAgICAgICAgICAgICAgICB0cC0+dHhfaW5mb1tlbnRyeV0ubWFw
cGluZyA9CiAgICAgICAgICAgICAgICAgICAgcGNpX21hcF9zaW5nbGUgKHRwLT5wY2lfZGV2LCBz
a2ItPmRhdGEsIHNrYi0+bGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
KTsKICAgICAgICAgICAgICAgIGRtYV9hZGRyID0gdHAtPnR4X2luZm9bZW50cnldLm1hcHBpbmc7
CiAgICAgICAgfSBlbHNlIGlmIChza2ItPmxlbiA8IDE1MzYpIHsKICAgICAgICAgICAgICAgIHNr
Yl9jb3B5X2FuZF9jc3VtX2Rldihza2IsIHRwLT50eF9idWZbZW50cnldKTsKICAgICAgICAgICAg
ICAgIGRtYV9hZGRyID0gdHAtPnR4X2J1ZnNfZG1hICsgKHRwLT50eF9idWZbZW50cnldIC0gdHAt
PnR4X2J1ZnMpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBrZnJlZV9za2Ioc2ti
KTsKICAgICAgICAgICAgICAgIHRwLT50eF9pbmZvW2VudHJ5XS5za2IgPSAoKHZvaWQgKikwKTsK
ICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgICAgZG8geyBfX2FzbV9f
IF9fdm9sYXRpbGVfXygiY2xpIjogOiA6Im1lbW9yeSIpOyAodm9pZCkoJnRwLT5sb2NrKTsgfSB3
aGlsZSAoMCk7CiAgICAgICAgZG8geyAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lk
ICopKGlvYWRkciArIChUeEFkZHIwICsgKGVudHJ5ICogNCkpKSkgPSAoKGRtYV9hZGRyKSkpOyAo
Kih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChUeEFkZHIwICsg
KGVudHJ5ICogNCkpKSkpOyB9IHdoaWxlICgwKTsKICAgICAgICBkbyB7ICgqKHZvbGF0aWxlIHVu
c2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKFR4U3RhdHVzMCArIChlbnRyeSAqIHNp
emVvZiAodTMyKSkpKSkgPSAoKHRwLT50eF9mbGFnIHwgKHNrYi0+bGVuID49IDYwID8gc2tiLT5s
ZW4gOiA2MCkpKSk7ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRy
ICsgKFR4U3RhdHVzMCArIChlbnRyeSAqIHNpemVvZiAodTMyKSkpKSkpOyB9IHdoaWxlICgwKTsK
CgogICAgICAgIGRldi0+dHJhbnNfc3RhcnQgPSBqaWZmaWVzOwoKICAgICAgICB0cC0+Y3VyX3R4
Kys7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJsb2NrOyBhZGRsICQwLDAoJSVlc3Ap
IjogOiA6Im1lbW9yeSIpOwogICAgICAgIGlmICgodHAtPmN1cl90eCAtIDQpID09IHRwLT5kaXJ0
eV90eCkKICAgICAgICAgICAgICAgIG5ldGlmX3N0b3BfcXVldWUgKGRldik7CiAgICAgICAgZG8g
eyBkbyB7IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJzdGkiOiA6IDoibWVtb3J5
Iik7IH0gd2hpbGUgKDApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDsKCgogICAgICAgIHJldHVybiAwOwp9CgoKc3RhdGljIHZvaWQgcnRs
ODEzOV90eF9pbnRlcnJ1cHQgKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRlICp0cCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmlvYWRkcikKewogICAgICAgIHVuc2lnbmVk
IGxvbmcgZGlydHlfdHgsIHR4X2xlZnQ7CgogICAgICAgIGlmKCEoZGV2ICE9ICgodm9pZCAqKTAp
KSkgeyBwcmludGsoICJBc3NlcnRpb24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAiZGV2
ICE9IE5VTEwiLCI4MTM5dG9vLmMiLF9fRlVOQ1RJT05fXywxODExKTsgfTsKICAgICAgICBpZigh
KHRwICE9ICgodm9pZCAqKTApKSkgeyBwcmludGsoICJBc3NlcnRpb24gZmFpbGVkISAlcywlcywl
cyxsaW5lPSVkXG4iLCAidHAgIT0gTlVMTCIsIjgxMzl0b28uYyIsX19GVU5DVElPTl9fLDE4MTIp
OyB9OwogICAgICAgIGlmKCEoaW9hZGRyICE9ICgodm9pZCAqKTApKSkgeyBwcmludGsoICJBc3Nl
cnRpb24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAiaW9hZGRyICE9IE5VTEwiLCI4MTM5
dG9vLmMiLF9fRlVOQ1RJT05fXywxODEzKTsgfTsKCiAgICAgICAgZGlydHlfdHggPSB0cC0+ZGly
dHlfdHg7CiAgICAgICAgdHhfbGVmdCA9IHRwLT5jdXJfdHggLSBkaXJ0eV90eDsKICAgICAgICB3
aGlsZSAodHhfbGVmdCA+IDApIHsKICAgICAgICAgICAgICAgIGludCBlbnRyeSA9IGRpcnR5X3R4
ICUgNDsKICAgICAgICAgICAgICAgIGludCB0eHN0YXR1czsKCiAgICAgICAgICAgICAgICB0eHN0
YXR1cyA9ICgodW5zaWduZWQgbG9uZykgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9p
ZCAqKShpb2FkZHIgKyAoVHhTdGF0dXMwICsgKGVudHJ5ICogc2l6ZW9mICh1MzIpKSkpKSkpOwoK
ICAgICAgICAgICAgICAgIGlmICghKHR4c3RhdHVzICYgKFR4U3RhdE9LIHwgVHhVbmRlcnJ1biB8
IFR4QWJvcnRlZCkpKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCgogICAgICAgICAg
ICAgICAgaWYgKHR4c3RhdHVzICYgKFR4T3V0T2ZXaW5kb3cgfCBUeEFib3J0ZWQpKSB7CgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAg
ICAgICAgICAgICAgICAgICAgIHRwLT5zdGF0cy50eF9lcnJvcnMrKzsKICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHR4c3RhdHVzICYgVHhBYm9ydGVkKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHAtPnN0YXRzLnR4X2Fib3J0ZWRfZXJyb3JzKys7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG8geyAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lk
ICopKGlvYWRkciArIChUeENvbmZpZykpKSA9ICgoVHhDbGVhckFidCB8ICg2IDw8IFR4RE1BU2hp
ZnQpKSkpOyAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChU
eENvbmZpZykpKSk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh0eHN0YXR1cyAmIFR4Q2Fycmllckxvc3QpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnN0YXRzLnR4X2NhcnJpZXJfZXJyb3JzKys7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICh0eHN0YXR1cyAmIFR4T3V0T2ZXaW5kb3cpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnN0YXRzLnR4X3dpbmRvd19lcnJvcnMrKzsK
CgoKCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAo
dHhzdGF0dXMgJiBUeFVuZGVycnVuKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh0cC0+dHhfZmxhZyA8IDB4MDAzMDAwMDApCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0cC0+dHhfZmxhZyArPSAweDAwMDIwMDAwOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRwLT5zdGF0cy50eF9maWZvX2Vycm9ycysrOwogICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHRwLT5zdGF0cy5jb2xsaXNpb25z
ICs9ICh0eHN0YXR1cyA+PiAyNCkgJiAxNTsKICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnN0
YXRzLnR4X2J5dGVzICs9IHR4c3RhdHVzICYgMHg3ZmY7CiAgICAgICAgICAgICAgICAgICAgICAg
IHRwLT5zdGF0cy50eF9wYWNrZXRzKys7CiAgICAgICAgICAgICAgICB9CgoKICAgICAgICAgICAg
ICAgIGlmICh0cC0+dHhfaW5mb1tlbnRyeV0ubWFwcGluZyAhPSAwKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHBjaV91bm1hcF9zaW5nbGUodHAtPnBjaV9kZXYsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnR4X2luZm9bZW50cnldLm1hcHBpbmcsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnR4X2luZm9bZW50cnldLnNr
Yi0+bGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpOwogICAg
ICAgICAgICAgICAgICAgICAgICB0cC0+dHhfaW5mb1tlbnRyeV0ubWFwcGluZyA9IDA7CiAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkZXZfa2ZyZWVfc2tiX2lycSAodHAtPnR4X2lu
Zm9bZW50cnldLnNrYik7CiAgICAgICAgICAgICAgICB0cC0+dHhfaW5mb1tlbnRyeV0uc2tiID0g
KCh2b2lkICopMCk7CgogICAgICAgICAgICAgICAgZGlydHlfdHgrKzsKICAgICAgICAgICAgICAg
IHR4X2xlZnQtLTsKICAgICAgICB9CgoKICAgICAgICBpZiAodHAtPmN1cl90eCAtIGRpcnR5X3R4
ID4gNCkgewogICAgICAgICAgICAgICAgcHJpbnRrICgiPDM+IiAiJXM6IE91dC1vZi1zeW5jIGRp
cnR5IHBvaW50ZXIsICVsZCB2cy4gJWxkLlxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgZGV2
LT5uYW1lLCBkaXJ0eV90eCwgdHAtPmN1cl90eCk7CiAgICAgICAgICAgICAgICBkaXJ0eV90eCAr
PSA0OwogICAgICAgIH0KCgoKICAgICAgICBpZiAodHAtPmRpcnR5X3R4ICE9IGRpcnR5X3R4KSB7
CiAgICAgICAgICAgICAgICB0cC0+ZGlydHlfdHggPSBkaXJ0eV90eDsKICAgICAgICAgICAgICAg
IF9fYXNtX18gX192b2xhdGlsZV9fICgibG9jazsgYWRkbCAkMCwwKCUlZXNwKSI6IDogOiJtZW1v
cnkiKTsKICAgICAgICAgICAgICAgIGlmIChuZXRpZl9xdWV1ZV9zdG9wcGVkIChkZXYpKQogICAg
ICAgICAgICAgICAgICAgICAgICBuZXRpZl93YWtlX3F1ZXVlIChkZXYpOwogICAgICAgIH0KfQoK
CgpzdGF0aWMgdm9pZCBydGw4MTM5X3J4X2VyciAodTMyIHJ4X3N0YXR1cywgc3RydWN0IG5ldF9k
ZXZpY2UgKmRldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGw4MTM5X3By
aXZhdGUgKnRwLCB2b2lkICppb2FkZHIpCnsKICAgICAgICB1OCB0bXA4OwogICAgICAgIGludCB0
bXBfd29yazsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICAgICAg
ICBpZiAocnhfc3RhdHVzICYgUnhUb29Mb25nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA7CgoKICAgICAgICB9CiAgICAgICAgdHAtPnN0YXRzLnJ4X2Vy
cm9ycysrOwogICAgICAgIGlmIChyeF9zdGF0dXMgJiAoUnhCYWRTeW1ib2wgfCBSeEJhZEFsaWdu
KSkKICAgICAgICAgICAgICAgIHRwLT5zdGF0cy5yeF9mcmFtZV9lcnJvcnMrKzsKICAgICAgICBp
ZiAocnhfc3RhdHVzICYgKFJ4UnVudCB8IFJ4VG9vTG9uZykpCiAgICAgICAgICAgICAgICB0cC0+
c3RhdHMucnhfbGVuZ3RoX2Vycm9ycysrOwogICAgICAgIGlmIChyeF9zdGF0dXMgJiBSeENSQ0Vy
cikKICAgICAgICAgICAgICAgIHRwLT5zdGF0cy5yeF9jcmNfZXJyb3JzKys7CgoKCgogICAgICAg
IGRvIHsgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENo
aXBDbWQpKSkgPSAoKENtZFR4RW5iKSkpOyAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgo
dm9pZCAqKShpb2FkZHIgKyAoQ2hpcENtZCkpKSk7IH0gd2hpbGUgKDApOwogICAgICAgIHRtcF93
b3JrID0gMjAwOwogICAgICAgIHdoaWxlICgtLXRtcF93b3JrID4gMCkgewogICAgICAgICAgICAg
ICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDEpID8gKCgxKSA+IDIwMDAwID8gX19iYWRfdWRlbGF5
KCkgOiBfX2NvbnN0X3VkZWxheSgoMSkgKiAweDEwYzZ1bCkpIDogX191ZGVsYXkoMSkpOwogICAg
ICAgICAgICAgICAgdG1wOCA9ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICop
KGlvYWRkciArIChDaGlwQ21kKSkpKTsKICAgICAgICAgICAgICAgIGlmICghKHRtcDggJiBDbWRS
eEVuYikpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBp
ZiAodG1wX3dvcmsgPD0gMCkKICAgICAgICAgICAgICAgIHByaW50ayAoIjw0PiIgIjgxMzl0b28i
ICI6ICIgInJ4IHN0b3Agd2FpdCB0b28gbG9uZ1xuIik7CgogICAgICAgIHRtcF93b3JrID0gMjAw
OwogICAgICAgIHdoaWxlICgtLXRtcF93b3JrID4gMCkgewogICAgICAgICAgICAgICAgZG8geyAo
Kih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2hpcENtZCkp
KSA9ICgoQ21kUnhFbmIgfCBDbWRUeEVuYikpKTsgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAq
KSAoKHZvaWQgKikoaW9hZGRyICsgKENoaXBDbWQpKSkpOyB9IHdoaWxlICgwKTsKICAgICAgICAg
ICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgxKSA/ICgoMSkgPiAyMDAwMCA/IF9fYmFkX3Vk
ZWxheSgpIDogX19jb25zdF91ZGVsYXkoKDEpICogMHgxMGM2dWwpKSA6IF9fdWRlbGF5KDEpKTsK
ICAgICAgICAgICAgICAgIHRtcDggPSAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9p
ZCAqKShpb2FkZHIgKyAoQ2hpcENtZCkpKSk7CiAgICAgICAgICAgICAgICBpZiAoKHRtcDggJiBD
bWRSeEVuYikgJiYgKHRtcDggJiBDbWRUeEVuYikpCiAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgIH0KICAgICAgICBpZiAodG1wX3dvcmsgPD0gMCkKICAgICAgICAgICAgICAg
IHByaW50ayAoIjw0PiIgIjgxMzl0b28iICI6ICIgInR4L3J4IGVuYWJsZSB3YWl0IHRvbyBsb25n
XG4iKTsKCgogICAgICAgIGRvIHsgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQg
KikoaW9hZGRyICsgKENmZzkzNDYpKSkgPSAoKENmZzkzNDZfVW5sb2NrKSkpOyAoKih2b2xhdGls
ZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2ZnOTM0NikpKSk7IH0gd2hp
bGUgKDApOwoKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShp
b2FkZHIgKyAoQ2hpcENtZCkpKSA9ICgoQ21kUnhFbmIgfCBDbWRUeEVuYikpKTsKCiAgICAgICAg
dHAtPnJ4X2NvbmZpZyA9IHJ0bDgxMzlfcnhfY29uZmlnIHwgQWNjZXB0QnJvYWRjYXN0IHwgQWNj
ZXB0TXlQaHlzOwogICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKiko
aW9hZGRyICsgKFJ4Q29uZmlnKSkpID0gKCh0cC0+cnhfY29uZmlnKSkpOwogICAgICAgIHRwLT5j
dXJfcnggPSAwOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoK
CiAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsg
KENmZzkzNDYpKSkgPSAoKENmZzkzNDZfTG9jaykpKTsKCgogICAgICAgIGRvIHsgKCoodm9sYXRp
bGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoUnhCdWYpKSkgPSAoKHRwLT5y
eF9yaW5nX2RtYSkpKTsgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2Fk
ZHIgKyAoUnhCdWYpKSkpOyB9IHdoaWxlICgwKTsKCgogICAgICAgIF9fc2V0X3J4X21vZGUgKGRl
dik7Cn0KCnN0YXRpYyB2b2lkIHJ0bDgxMzlfcnhfaW50ZXJydXB0IChzdHJ1Y3QgbmV0X2Rldmlj
ZSAqZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0bDgxMzlf
cHJpdmF0ZSAqdHAsIHZvaWQgKmlvYWRkcikKewogICAgICAgIHVuc2lnbmVkIGNoYXIgKnJ4X3Jp
bmc7CiAgICAgICAgdTE2IGN1cl9yeDsKCiAgICAgICAgaWYoIShkZXYgIT0gKCh2b2lkICopMCkp
KSB7IHByaW50ayggIkFzc2VydGlvbiBmYWlsZWQhICVzLCVzLCVzLGxpbmU9JWRcbiIsICJkZXYg
IT0gTlVMTCIsIjgxMzl0b28uYyIsX19GVU5DVElPTl9fLDE5NjMpOyB9OwogICAgICAgIGlmKCEo
dHAgIT0gKCh2b2lkICopMCkpKSB7IHByaW50ayggIkFzc2VydGlvbiBmYWlsZWQhICVzLCVzLCVz
LGxpbmU9JWRcbiIsICJ0cCAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18sMTk2NCk7
IH07CiAgICAgICAgaWYoIShpb2FkZHIgIT0gKCh2b2lkICopMCkpKSB7IHByaW50ayggIkFzc2Vy
dGlvbiBmYWlsZWQhICVzLCVzLCVzLGxpbmU9JWRcbiIsICJpb2FkZHIgIT0gTlVMTCIsIjgxMzl0
b28uYyIsX19GVU5DVElPTl9fLDE5NjUpOyB9OwoKICAgICAgICByeF9yaW5nID0gdHAtPnJ4X3Jp
bmc7CiAgICAgICAgY3VyX3J4ID0gdHAtPmN1cl9yeDsKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoKCiAgICAgICAgd2hpbGUgKCgoKih2
b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2hpcENtZCkpKSkg
JiBSeEJ1ZkVtcHR5KSA9PSAwKSB7CiAgICAgICAgICAgICAgICBpbnQgcmluZ19vZmZzZXQgPSBj
dXJfcnggJSAoODE5MiA8PCAyKTsKICAgICAgICAgICAgICAgIHUzMiByeF9zdGF0dXM7CiAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgcnhfc2l6ZTsKICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCBwa3Rfc2l6ZTsKICAgICAgICAgICAgICAgIHN0cnVjdCBza19idWZmICpza2I7CgogICAg
ICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJsb2NrOyBhZGRsICQwLDAoJSVlc3Ap
IjogOiA6Im1lbW9yeSIpOwoKCiAgICAgICAgICAgICAgICByeF9zdGF0dXMgPSAoKF9fdTMyKSgq
KHUzMiAqKSAocnhfcmluZyArIHJpbmdfb2Zmc2V0KSkpOwogICAgICAgICAgICAgICAgcnhfc2l6
ZSA9IHJ4X3N0YXR1cyA+PiAxNjsKICAgICAgICAgICAgICAgIHBrdF9zaXplID0gcnhfc2l6ZSAt
IDQ7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKIyAyMDAzICI4
MTM5dG9vLmMiCiAgICAgICAgICAgICAgICBpZiAocnhfc2l6ZSA9PSAweGZmZjApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgdHAtPnhzdGF0cy5lYXJseV9yeCsrOwogICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KCgoKCgoKICAgICAgICAgICAgICAgIGlm
ICgocnhfc2l6ZSA+ICgxNTM2ICs0KSkgfHwKICAgICAgICAgICAgICAgICAgICAocnhfc2l6ZSA8
IDgpIHx8CiAgICAgICAgICAgICAgICAgICAgKCEocnhfc3RhdHVzICYgUnhTdGF0dXNPSykpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgIHJ0bDgxMzlfcnhfZXJyIChyeF9zdGF0dXMsIGRldiwg
dHAsIGlvYWRkcik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
ICAgIH0KIyAyMDI5ICI4MTM5dG9vLmMiCiAgICAgICAgICAgICAgICBza2IgPSBkZXZfYWxsb2Nf
c2tiIChwa3Rfc2l6ZSArIDIpOwogICAgICAgICAgICAgICAgaWYgKHNrYikgewogICAgICAgICAg
ICAgICAgICAgICAgICBza2ItPmRldiA9IGRldjsKICAgICAgICAgICAgICAgICAgICAgICAgc2ti
X3Jlc2VydmUgKHNrYiwgMik7CgogICAgICAgICAgICAgICAgICAgICAgICBldGhfY29weV9hbmRf
c3VtIChza2IsICZyeF9yaW5nW3Jpbmdfb2Zmc2V0ICsgNF0sIHBrdF9zaXplLCAwKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgc2tiX3B1dCAoc2tiLCBwa3Rfc2l6ZSk7CgogICAgICAgICAgICAg
ICAgICAgICAgICBza2ItPnByb3RvY29sID0gZXRoX3R5cGVfdHJhbnMgKHNrYiwgZGV2KTsKICAg
ICAgICAgICAgICAgICAgICAgICAgbmV0aWZfcnggKHNrYik7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGRldi0+bGFzdF9yeCA9IGppZmZpZXM7CiAgICAgICAgICAgICAgICAgICAgICAgIHRwLT5z
dGF0cy5yeF9ieXRlcyArPSBwa3Rfc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnN0
YXRzLnJ4X3BhY2tldHMrKzsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHByaW50ayAoIjw0PiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
JXM6IE1lbW9yeSBzcXVlZXplLCBkcm9wcGluZyBwYWNrZXQuXG4iLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRldi0+bmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRwLT5z
dGF0cy5yeF9kcm9wcGVkKys7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgY3Vy
X3J4ID0gKGN1cl9yeCArIHJ4X3NpemUgKyA0ICsgMykgJiB+MzsKICAgICAgICAgICAgICAgICgq
KHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopICgodm9pZCAqKShpb2FkZHIgKyAoUnhCdWZQdHIp
KSkgPSAoKGN1cl9yeCAtIDE2KSkpOwoKICAgICAgICAgICAgICAgIGlmICgoKih2b2xhdGlsZSB1
bnNpZ25lZCBzaG9ydCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKEludHJTdGF0dXMpKSkpICYgUnhB
Y2tCaXRzKQogICAgICAgICAgICAgICAgICAgICAgICBkbyB7ICgqKHZvbGF0aWxlIHVuc2lnbmVk
IHNob3J0ICopICgodm9pZCAqKShpb2FkZHIgKyAoSW50clN0YXR1cykpKSA9ICgoUnhBY2tCaXRz
KSkpOyAoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKElu
dHJTdGF0dXMpKSkpOyB9IHdoaWxlICgwKTsKICAgICAgICB9CgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKCgogICAgICAgIHRwLT5jdXJf
cnggPSBjdXJfcng7CgogICAgICAgIGlmICgoKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAo
KHZvaWQgKikoaW9hZGRyICsgKENoaXBDbWQpKSkpICYgUnhCdWZFbXB0eSkgJiYKICAgICAgICAg
ICAgKCgqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopICgodm9pZCAqKShpb2FkZHIgKyAoSW50
clN0YXR1cykpKSkgJiBSeEFja0JpdHMpKQogICAgICAgICAgICAgICAgZG8geyAoKih2b2xhdGls
ZSB1bnNpZ25lZCBzaG9ydCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKEludHJTdGF0dXMpKSkgPSAo
KFJ4QWNrQml0cykpKTsgKCoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikgKCh2b2lkICopKGlv
YWRkciArIChJbnRyU3RhdHVzKSkpKTsgfSB3aGlsZSAoMCk7Cn0KCgpzdGF0aWMgdm9pZCBydGw4
MTM5X3dlaXJkX2ludGVycnVwdCAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKnRwLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqaW9hZGRyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXR1cywgaW50IGxpbmtfY2hhbmdlZCkK
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgogICAgICAgIGlmKCEoZGV2
ICE9ICgodm9pZCAqKTApKSkgeyBwcmludGsoICJBc3NlcnRpb24gZmFpbGVkISAlcywlcywlcyxs
aW5lPSVkXG4iLCAiZGV2ICE9IE5VTEwiLCI4MTM5dG9vLmMiLF9fRlVOQ1RJT05fXywyMDc3KTsg
fTsKICAgICAgICBpZighKHRwICE9ICgodm9pZCAqKTApKSkgeyBwcmludGsoICJBc3NlcnRpb24g
ZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAidHAgIT0gTlVMTCIsIjgxMzl0b28uYyIsX19G
VU5DVElPTl9fLDIwNzgpOyB9OwogICAgICAgIGlmKCEoaW9hZGRyICE9ICgodm9pZCAqKTApKSkg
eyBwcmludGsoICJBc3NlcnRpb24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAiaW9hZGRy
ICE9IE5VTEwiLCI4MTM5dG9vLmMiLF9fRlVOQ1RJT05fXywyMDc5KTsgfTsKCgogICAgICAgIHRw
LT5zdGF0cy5yeF9taXNzZWRfZXJyb3JzICs9ICgodW5zaWduZWQgbG9uZykgKCoodm9sYXRpbGUg
dW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoUnhNaXNzZWQpKSkpKTsKICAgICAg
ICAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChSeE1pc3Nl
ZCkpKSA9ICgoMCkpKTsKCiAgICAgICAgaWYgKChzdGF0dXMgJiBSeFVuZGVycnVuKSAmJiBsaW5r
X2NoYW5nZWQgJiYKICAgICAgICAgICAgKHRwLT5kcnZfZmxhZ3MgJiBIQVNfTE5LX0NITkcpKSB7
CgogICAgICAgICAgICAgICAgaW50IGxwYXIgPSAoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAq
KSAoKHZvaWQgKikoaW9hZGRyICsgKE5XYXlMUEFSKSkpKTsKICAgICAgICAgICAgICAgIGludCBk
dXBsZXggPSAobHBhciAmIDB4MDEwMCkgfHwgKGxwYXIgJiAweDAxQzApID09IDB4MDA0MAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHRwLT5kdXBsZXhfbG9jazsKICAgICAgICAg
ICAgICAgIGlmICh0cC0+ZnVsbF9kdXBsZXggIT0gZHVwbGV4KSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHRwLT5mdWxsX2R1cGxleCA9IGR1cGxleDsKCgoKCgogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgc3RhdHVzICY9IH5SeFVuZGVycnVuOwogICAgICAgIH0KCgogICAgICAg
IGlmIChzdGF0dXMgJgogICAgICAgICAgICAoUnhVbmRlcnJ1biB8IFJ4T3ZlcmZsb3cgfCBSeEVy
ciB8IFJ4RklGT092ZXIpKQogICAgICAgICAgICAgICAgdHAtPnN0YXRzLnJ4X2Vycm9ycysrOwoK
ICAgICAgICBpZiAoc3RhdHVzICYgKFBDU1RpbWVvdXQpKQogICAgICAgICAgICAgICAgdHAtPnN0
YXRzLnJ4X2xlbmd0aF9lcnJvcnMrKzsKICAgICAgICBpZiAoc3RhdHVzICYgKFJ4VW5kZXJydW4g
fCBSeEZJRk9PdmVyKSkKICAgICAgICAgICAgICAgIHRwLT5zdGF0cy5yeF9maWZvX2Vycm9ycysr
OwogICAgICAgIGlmIChzdGF0dXMgJiBQQ0lFcnIpIHsKICAgICAgICAgICAgICAgIHUxNiBwY2lf
Y21kX3N0YXR1czsKICAgICAgICAgICAgICAgIHBjaV9yZWFkX2NvbmZpZ193b3JkICh0cC0+cGNp
X2RldiwgMHgwNiwgJnBjaV9jbWRfc3RhdHVzKTsKCiAgICAgICAgICAgICAgICBwcmludGsgKCI8
Mz4iICIlczogUENJIEJ1cyBlcnJvciAlNC40eC5cbiIsCiAgICAgICAgICAgICAgICAgICAgICAg
IGRldi0+bmFtZSwgcGNpX2NtZF9zdGF0dXMpOwogICAgICAgIH0KfQoKCgoKc3RhdGljIHZvaWQg
cnRsODEzOV9pbnRlcnJ1cHQgKGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwdF9yZWdzICpyZWdzKQp7CiAgICAgICAgc3Ry
dWN0IG5ldF9kZXZpY2UgKmRldiA9IChzdHJ1Y3QgbmV0X2RldmljZSAqKSBkZXZfaW5zdGFuY2U7
CiAgICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHAgPSBkZXYtPnByaXY7CiAgICAgICAg
aW50IGJvZ3VzY250ID0gbWF4X2ludGVycnVwdF93b3JrOwogICAgICAgIHZvaWQgKmlvYWRkciA9
IHRwLT5tbWlvX2FkZHI7CiAgICAgICAgaW50IGFja3N0YXQsIHN0YXR1czsKICAgICAgICBpbnQg
bGlua19jaGFuZ2VkID0gMDsKCiAgICAgICAgKHZvaWQpKCZ0cC0+bG9jayk7CgogICAgICAgIGRv
IHsKICAgICAgICAgICAgICAgIHN0YXR1cyA9ICgqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICop
ICgodm9pZCAqKShpb2FkZHIgKyAoSW50clN0YXR1cykpKSk7CgoKICAgICAgICAgICAgICAgIGlm
IChzdGF0dXMgPT0gMHhGRkZGKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCgoKICAg
ICAgICAgICAgICAgIGlmIChzdGF0dXMgJiBSeFVuZGVycnVuKQogICAgICAgICAgICAgICAgICAg
ICAgICBsaW5rX2NoYW5nZWQgPSAoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSAoKHZvaWQg
KikoaW9hZGRyICsgKENTQ1IpKSkpICYgQ1NDUl9MaW5rQ2hhbmdlQml0OwoKCgoKICAgICAgICAg
ICAgICAgIGFja3N0YXQgPSBzdGF0dXMgJiB+UnhBY2tCaXRzOwogICAgICAgICAgICAgICAgKCoo
dm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikgKCh2b2lkICopKGlvYWRkciArIChJbnRyU3RhdHVz
KSkpID0gKChhY2tzdGF0KSkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKICAgICAgICAgICAgICAg
IGlmICgoc3RhdHVzICYKICAgICAgICAgICAgICAgICAgICAgKFBDSUVyciB8IFBDU1RpbWVvdXQg
fCBSeFVuZGVycnVuIHwgUnhPdmVyZmxvdyB8CiAgICAgICAgICAgICAgICAgICAgICBSeEZJRk9P
dmVyIHwgVHhFcnIgfCBUeE9LIHwgUnhFcnIgfCBSeE9LKSkgPT0gMCkKICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgaWYgKG5ldGlmX3J1bm5pbmcgKGRldikg
JiYgKHN0YXR1cyAmIFJ4QWNrQml0cykpCiAgICAgICAgICAgICAgICAgICAgICAgIHJ0bDgxMzlf
cnhfaW50ZXJydXB0IChkZXYsIHRwLCBpb2FkZHIpOwoKCiAgICAgICAgICAgICAgICBpZiAoc3Rh
dHVzICYgKFBDSUVyciB8IFBDU1RpbWVvdXQgfCBSeFVuZGVycnVuIHwgUnhPdmVyZmxvdyB8CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ4RklGT092ZXIgfCBUeEVyciB8IFJ4RXJyKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgcnRsODEzOV93ZWlyZF9pbnRlcnJ1cHQgKGRldiwgdHAs
IGlvYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXR1cywgbGlua19jaGFuZ2VkKTsKCiAgICAgICAgICAgICAgICBpZiAobmV0aWZfcnVubmlu
ZyAoZGV2KSAmJiAoc3RhdHVzICYgKFR4T0sgfCBUeEVycikpKQogICAgICAgICAgICAgICAgICAg
ICAgICBydGw4MTM5X3R4X2ludGVycnVwdCAoZGV2LCB0cCwgaW9hZGRyKTsKCiAgICAgICAgICAg
ICAgICBib2d1c2NudC0tOwogICAgICAgIH0gd2hpbGUgKGJvZ3VzY250ID4gMCk7CgogICAgICAg
IGlmIChib2d1c2NudCA8PSAwKSB7CiAgICAgICAgICAgICAgICBwcmludGsgKCI8ND4iICIlczog
VG9vIG11Y2ggd29yayBhdCBpbnRlcnJ1cHQsICIKICAgICAgICAgICAgICAgICAgICAgICAgIklu
dHJTdGF0dXM9MHglNC40eC5cbiIsIGRldi0+bmFtZSwgc3RhdHVzKTsKCgogICAgICAgICAgICAg
ICAgKCoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikgKCh2b2lkICopKGlvYWRkciArIChJbnRy
U3RhdHVzKSkpID0gKCgweGZmZmYpKSk7CiAgICAgICAgfQoKICAgICAgICBkbyB7IH0gd2hpbGUo
MCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoK
fQoKCnN0YXRpYyBpbnQgcnRsODEzOV9jbG9zZSAoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewog
ICAgICAgIHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKnRwID0gZGV2LT5wcml2OwogICAgICAgIHZv
aWQgKmlvYWRkciA9IHRwLT5tbWlvX2FkZHI7CiAgICAgICAgaW50IHJldCA9IDA7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBmbGFnczsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAg
ICAgbmV0aWZfc3RvcF9xdWV1ZSAoZGV2KTsKCiAgICAgICAgaWYgKHRwLT50aHJfcGlkID49IDAp
IHsKICAgICAgICAgICAgICAgIHJldCA9IGtpbGxfcHJvYyAodHAtPnRocl9waWQsIDE1LCAxKTsK
ICAgICAgICAgICAgICAgIGlmIChyZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRr
ICgiPDM+IiAiJXM6IHVuYWJsZSB0byBzaWduYWwgdGhyZWFkXG4iLCBkZXYtPm5hbWUpOwogICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgd2FpdF9mb3JfY29tcGxldGlvbiAoJnRwLT50aHJfZXhpdGVkKTsKICAgICAgICB9
CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDsKCgogICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBvcGwgJTAg
OyBjbGkiOiI9ZyIgKGZsYWdzKTogOiJtZW1vcnkiKTsgKHZvaWQpKCZ0cC0+bG9jayk7IH0gd2hp
bGUgKDApOwoKCiAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKiko
aW9hZGRyICsgKENoaXBDbWQpKSkgPSAoKDApKSk7CgoKICAgICAgICAoKih2b2xhdGlsZSB1bnNp
Z25lZCBzaG9ydCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKEludHJNYXNrKSkpID0gKCgwKSkpOwoK
CiAgICAgICAgdHAtPnN0YXRzLnJ4X21pc3NlZF9lcnJvcnMgKz0gKCh1bnNpZ25lZCBsb25nKSAo
Kih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChSeE1pc3NlZCkp
KSkpOwogICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRy
ICsgKFJ4TWlzc2VkKSkpID0gKCgwKSkpOwoKICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsg
X19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1l
bW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o
IiI6IDogOiJtZW1vcnkiKTsKICAgICAgICBmcmVlX2lycSAoZGV2LT5pcnEsIGRldik7CgogICAg
ICAgIHJ0bDgxMzlfdHhfY2xlYXIgKHRwKTsKCiAgICAgICAgcGNpX2ZyZWVfY29uc2lzdGVudCh0
cC0+cGNpX2RldiwgKCg4MTkyIDw8IDIpICsgMTYgKyAyMDQ4KSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRwLT5yeF9yaW5nLCB0cC0+cnhfcmluZ19kbWEpOwogICAgICAgIHBjaV9mcmVl
X2NvbnNpc3RlbnQodHAtPnBjaV9kZXYsICgxNTM2ICogNCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0cC0+dHhfYnVmcywgdHAtPnR4X2J1ZnNfZG1hKTsKICAgICAgICB0cC0+cnhfcmlu
ZyA9ICgodm9pZCAqKTApOwogICAgICAgIHRwLT50eF9idWZzID0gKCh2b2lkICopMCk7CgoKICAg
ICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2Zn
OTM0NikpKSA9ICgoQ2ZnOTM0Nl9VbmxvY2spKSk7CgogICAgICAgIGlmIChydGxfY2hpcF9pbmZv
W3RwLT5jaGlwc2V0XS5mbGFncyAmIEhhc0hsdENsaykKICAgICAgICAgICAgICAgICgqKHZvbGF0
aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChIbHRDbGspKSkgPSAoKCdI
JykpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgIHJldHVybiAwOwp9CgoK
CgoKc3RhdGljIHZvaWQgbmV0ZGV2X2dldF9lc2V0IChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBz
dHJ1Y3QgZXRodG9vbF9jbWQgKmVzZXQpCnsKICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRl
ICpucCA9IGRldi0+cHJpdjsKICAgICAgICB2b2lkICppb2FkZHIgPSBucC0+bW1pb19hZGRyOwog
ICAgICAgIHUxNiBhZHZlcnQ7CgogICAgICAgIGVzZXQtPnN1cHBvcnRlZCA9ICgxIDw8IDApCiAg
ICAgICAgICAgICAgICAgICAgICAgIHwgKDEgPDwgMSkKICAgICAgICAgICAgICAgICAgICAgICAg
fCAoMSA8PCAyKQogICAgICAgICAgICAgICAgICAgICAgICB8ICgxIDw8IDMpCiAgICAgICAgICAg
ICAgICAgICAgICAgIHwgKDEgPDwgNikKICAgICAgICAgICAgICAgICAgICAgICAgfCAoMSA8PCA3
KTsKCiAgICAgICAgZXNldC0+YWR2ZXJ0aXNpbmcgPSAoMSA8PCA3KSB8ICgxIDw8IDYpOwogICAg
ICAgIGFkdmVydCA9IG1kaW9fcmVhZCAoZGV2LCBucC0+cGh5c1swXSwgNCk7CiAgICAgICAgaWYg
KGFkdmVydCAmIDB4MDAyMCkKICAgICAgICAgICAgICAgIGVzZXQtPmFkdmVydGlzaW5nIHw9ICgx
IDw8IDApOwogICAgICAgIGlmIChhZHZlcnQgJiAweDAwNDApCiAgICAgICAgICAgICAgICBlc2V0
LT5hZHZlcnRpc2luZyB8PSAoMSA8PCAxKTsKICAgICAgICBpZiAoYWR2ZXJ0ICYgMHgwMDgwKQog
ICAgICAgICAgICAgICAgZXNldC0+YWR2ZXJ0aXNpbmcgfD0gKDEgPDwgMik7CiAgICAgICAgaWYg
KGFkdmVydCAmIDB4MDEwMCkKICAgICAgICAgICAgICAgIGVzZXQtPmFkdmVydGlzaW5nIHw9ICgx
IDw8IDMpOwoKICAgICAgICBlc2V0LT5zcGVlZCA9ICgoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFy
ICopICgodm9pZCAqKShpb2FkZHIgKyAoTWVkaWFTdGF0dXMpKSkpICYgMHgwOCkgPyAxMCA6IDEw
MDsKCgoKICAgICAgICBlc2V0LT5kdXBsZXggPSBucC0+ZnVsbF9kdXBsZXggPyAweDAxIDogMHgw
MDsKICAgICAgICBlc2V0LT5wb3J0ID0gMHgwMDsKCiAgICAgICAgZXNldC0+cGh5X2FkZHJlc3Mg
PSBucC0+cGh5c1swXTsKICAgICAgICBlc2V0LT50cmFuc2NlaXZlciA9IDB4MDA7CiAgICAgICAg
ZXNldC0+YXV0b25lZyA9IChtZGlvX3JlYWQgKGRldiwgbnAtPnBoeXNbMF0sIDApICYgMHgxMDAw
KSAhPSAwOwogICAgICAgIGVzZXQtPm1heHR4cGt0ID0gMTsKICAgICAgICBlc2V0LT5tYXhyeHBr
dCA9IDE7Cn0KCgoKCgpzdGF0aWMgdm9pZCBuZXRkZXZfZ2V0X3dvbCAoc3RydWN0IG5ldF9kZXZp
Y2UgKmRldiwgc3RydWN0IGV0aHRvb2xfd29saW5mbyAqd29sKQp7CiAgICAgICAgc3RydWN0IHJ0
bDgxMzlfcHJpdmF0ZSAqbnAgPSBkZXYtPnByaXY7CiAgICAgICAgdm9pZCAqaW9hZGRyID0gbnAt
Pm1taW9fYWRkcjsKCiAgICAgICAgaWYgKHJ0bF9jaGlwX2luZm9bbnAtPmNoaXBzZXRdLmZsYWdz
ICYgSGFzTFdha2UpIHsKICAgICAgICAgICAgICAgIHU4IGNmZzMgPSAoKih2b2xhdGlsZSB1bnNp
Z25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ29uZmlnMykpKSk7CiAgICAgICAgICAg
ICAgICB1OCBjZmc1ID0gKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9h
ZGRyICsgKENvbmZpZzUpKSkpOwoKICAgICAgICAgICAgICAgIHdvbC0+c3VwcG9ydGVkID0gKDEg
PDwgMCkgfCAoMSA8PCA1KQogICAgICAgICAgICAgICAgICAgICAgICB8ICgxIDw8IDEpIHwgKDEg
PDwgMikgfCAoMSA8PCAzKTsKCiAgICAgICAgICAgICAgICB3b2wtPndvbG9wdHMgPSAwOwogICAg
ICAgICAgICAgICAgaWYgKGNmZzMgJiBDZmczX0xpbmtVcCkKICAgICAgICAgICAgICAgICAgICAg
ICAgd29sLT53b2xvcHRzIHw9ICgxIDw8IDApOwogICAgICAgICAgICAgICAgaWYgKGNmZzMgJiBD
ZmczX01hZ2ljKQogICAgICAgICAgICAgICAgICAgICAgICB3b2wtPndvbG9wdHMgfD0gKDEgPDwg
NSk7CgoKICAgICAgICAgICAgICAgIGlmIChjZmc1ICYgQ2ZnNV9VV0YpCiAgICAgICAgICAgICAg
ICAgICAgICAgIHdvbC0+d29sb3B0cyB8PSAoMSA8PCAxKTsKICAgICAgICAgICAgICAgIGlmIChj
Zmc1ICYgQ2ZnNV9NV0YpCiAgICAgICAgICAgICAgICAgICAgICAgIHdvbC0+d29sb3B0cyB8PSAo
MSA8PCAyKTsKICAgICAgICAgICAgICAgIGlmIChjZmc1ICYgQ2ZnNV9CV0YpCiAgICAgICAgICAg
ICAgICAgICAgICAgIHdvbC0+d29sb3B0cyB8PSAoMSA8PCAzKTsKICAgICAgICB9Cn0KCgoKCgpz
dGF0aWMgaW50IG5ldGRldl9zZXRfd29sIChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZXRodG9vbF93b2xpbmZvICp3b2wpCnsK
ICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRlICpucCA9IGRldi0+cHJpdjsKICAgICAgICB2
b2lkICppb2FkZHIgPSBucC0+bW1pb19hZGRyOwogICAgICAgIHUzMiBzdXBwb3J0OwogICAgICAg
IHU4IGNmZzMsIGNmZzU7CgogICAgICAgIHN1cHBvcnQgPSAoKHJ0bF9jaGlwX2luZm9bbnAtPmNo
aXBzZXRdLmZsYWdzICYgSGFzTFdha2UpCiAgICAgICAgICAgICAgICAgICA/ICgoMSA8PCAwKSB8
ICgxIDw8IDUpCiAgICAgICAgICAgICAgICAgICAgICB8ICgxIDw8IDEpIHwgKDEgPDwgMikgfCAo
MSA8PCAzKSkKICAgICAgICAgICAgICAgICAgIDogMCk7CiAgICAgICAgaWYgKHdvbC0+d29sb3B0
cyAmIH5zdXBwb3J0KQogICAgICAgICAgICAgICAgcmV0dXJuIC0yMjsKCiAgICAgICAgY2ZnMyA9
ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDb25maWcz
KSkpKSAmIH4oQ2ZnM19MaW5rVXAgfCBDZmczX01hZ2ljKTsKICAgICAgICBpZiAod29sLT53b2xv
cHRzICYgKDEgPDwgMCkpCiAgICAgICAgICAgICAgICBjZmczIHw9IENmZzNfTGlua1VwOwogICAg
ICAgIGlmICh3b2wtPndvbG9wdHMgJiAoMSA8PCA1KSkKICAgICAgICAgICAgICAgIGNmZzMgfD0g
Q2ZnM19NYWdpYzsKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAq
KShpb2FkZHIgKyAoQ2ZnOTM0NikpKSA9ICgoQ2ZnOTM0Nl9VbmxvY2spKSk7CiAgICAgICAgKCoo
dm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENvbmZpZzMpKSkg
PSAoKGNmZzMpKSk7CiAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQg
KikoaW9hZGRyICsgKENmZzkzNDYpKSkgPSAoKENmZzkzNDZfTG9jaykpKTsKCiAgICAgICAgY2Zn
NSA9ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDb25m
aWc1KSkpKSAmIH4oQ2ZnNV9VV0YgfCBDZmc1X01XRiB8IENmZzVfQldGKTsKCgoKICAgICAgICBp
ZiAod29sLT53b2xvcHRzICYgKDEgPDwgMSkpCiAgICAgICAgICAgICAgICBjZmc1IHw9IENmZzVf
VVdGOwogICAgICAgIGlmICh3b2wtPndvbG9wdHMgJiAoMSA8PCAyKSkKICAgICAgICAgICAgICAg
IGNmZzUgfD0gQ2ZnNV9NV0Y7CiAgICAgICAgaWYgKHdvbC0+d29sb3B0cyAmICgxIDw8IDMpKQog
ICAgICAgICAgICAgICAgY2ZnNSB8PSBDZmc1X0JXRjsKICAgICAgICAoKih2b2xhdGlsZSB1bnNp
Z25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ29uZmlnNSkpKSA9ICgoY2ZnNSkpKTsK
CiAgICAgICAgcmV0dXJuIDA7Cn0KCgpzdGF0aWMgaW50IG5ldGRldl9ldGh0b29sX2lvY3RsIChz
dHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICp1c2VyYWRkcikKewogICAgICAgIHN0cnVjdCBy
dGw4MTM5X3ByaXZhdGUgKm5wID0gZGV2LT5wcml2OwogICAgICAgIHUzMiBldGhjbWQ7CgoKCgog
ICAgICAgIGlmICgoX19idWlsdGluX2NvbnN0YW50X3Aoc2l6ZW9mIChldGhjbWQpKSA/IF9fY29u
c3RhbnRfY29weV9mcm9tX3VzZXIoKCZldGhjbWQpLCh1c2VyYWRkciksKHNpemVvZiAoZXRoY21k
KSkpIDogX19nZW5lcmljX2NvcHlfZnJvbV91c2VyKCgmZXRoY21kKSwodXNlcmFkZHIpLChzaXpl
b2YgKGV0aGNtZCkpKSkpCiAgICAgICAgICAgICAgICByZXR1cm4gLTE0OwoKICAgICAgICBzd2l0
Y2ggKGV0aGNtZCkgewogICAgICAgIGNhc2UgMHgwMDAwMDAwMToKICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGV0aHRvb2xfY21kIGVzZXQgPSB7IDB4MDAw
MDAwMDEgfTsKICAgICAgICAgICAgICAgICAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVf
XygiY2xpIjogOiA6Im1lbW9yeSIpOyAodm9pZCkoJm5wLT5sb2NrKTsgfSB3aGlsZSAoMCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgIG5ldGRldl9nZXRfZXNldCAoZGV2LCAmZXNldCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2FzbV9fIF9fdm9sYXRp
bGVfXygic3RpIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKChfX2J1aWx0aW5fY29uc3RhbnRfcChzaXplb2YgKGVzZXQpKSA/IF9fY29uc3Rh
bnRfY29weV90b191c2VyKCh1c2VyYWRkciksKCZlc2V0KSwoc2l6ZW9mIChlc2V0KSkpIDogX19n
ZW5lcmljX2NvcHlfdG9fdXNlcigodXNlcmFkZHIpLCgmZXNldCksKHNpemVvZiAoZXNldCkpKSkp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xNDsKICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICB9CgoKCiAgICAgICAgY2FzZSAw
eDAwMDAwMDAzOgogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3QgZXRodG9vbF9kcnZpbmZvIGluZm8gPSB7IDB4MDAwMDAwMDMgfTsKICAgICAgICAgICAgICAg
ICAgICAgICAgc3RyY3B5IChpbmZvLmRyaXZlciwgIjgxMzl0b28iKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgc3RyY3B5IChpbmZvLnZlcnNpb24sICIwLjkuMjAiKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgc3RyY3B5IChpbmZvLmJ1c19pbmZvLCBucC0+cGNpX2Rldi0+c2xvdF9uYW1lKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChfX2J1aWx0aW5fY29uc3RhbnRfcChzaXplb2Yg
KGluZm8pKSA/IF9fY29uc3RhbnRfY29weV90b191c2VyKCh1c2VyYWRkciksKCZpbmZvKSwoc2l6
ZW9mIChpbmZvKSkpIDogX19nZW5lcmljX2NvcHlfdG9fdXNlcigodXNlcmFkZHIpLCgmaW5mbyks
KHNpemVvZiAoaW5mbykpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IC0xNDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICB9
CgogICAgICAgIGNhc2UgMHgwMDAwMDAwNToKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IGV0aHRvb2xfd29saW5mbyB3b2wgPSB7IDB4MDAwMDAwMDUgfTsK
ICAgICAgICAgICAgICAgICAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiY2xpIjog
OiA6Im1lbW9yeSIpOyAodm9pZCkoJm5wLT5sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgIG5ldGRldl9nZXRfd29sIChkZXYsICZ3b2wpOwogICAgICAgICAgICAgICAg
ICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInN0aSI6
IDogOiJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgo
X19idWlsdGluX2NvbnN0YW50X3Aoc2l6ZW9mICh3b2wpKSA/IF9fY29uc3RhbnRfY29weV90b191
c2VyKCh1c2VyYWRkciksKCZ3b2wpLChzaXplb2YgKHdvbCkpKSA6IF9fZ2VuZXJpY19jb3B5X3Rv
X3VzZXIoKHVzZXJhZGRyKSwoJndvbCksKHNpemVvZiAod29sKSkpKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gLTE0OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgY2FzZSAweDAwMDAwMDA2OgogICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZXRodG9vbF93b2xpbmZv
IHdvbDsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJjOwogICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoKF9fYnVpbHRpbl9jb25zdGFudF9wKHNpemVvZiAod29sKSkgPyBfX2NvbnN0YW50
X2NvcHlfZnJvbV91c2VyKCgmd29sKSwodXNlcmFkZHIpLChzaXplb2YgKHdvbCkpKSA6IF9fZ2Vu
ZXJpY19jb3B5X2Zyb21fdXNlcigoJndvbCksKHVzZXJhZGRyKSwoc2l6ZW9mICh3b2wpKSkpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTQ7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsg
KHZvaWQpKCZucC0+bG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgICAgICBy
YyA9IG5ldGRldl9zZXRfd29sIChkZXYsICZ3b2wpOwogICAgICAgICAgICAgICAgICAgICAgICBk
byB7IGRvIHsgfSB3aGlsZSgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInN0aSI6IDogOiJtZW1v
cnkiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByYzsKICAg
ICAgICAgICAgICAgIH0KCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgIH0KCiAgICAgICAgcmV0dXJuIC05NTsKfQoKCnN0YXRpYyBpbnQgbmV0ZGV2X2lvY3Rs
IChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgaWZyZXEgKnJxLCBpbnQgY21kKQp7CiAg
ICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHAgPSBkZXYtPnByaXY7CiAgICAgICAgc3Ry
dWN0IG1paV9pb2N0bF9kYXRhICpkYXRhID0gKHN0cnVjdCBtaWlfaW9jdGxfZGF0YSAqKSZycS0+
aWZyX2lmcnUuaWZydV9kYXRhOwogICAgICAgIGludCByYyA9IDA7CiAgICAgICAgaW50IHBoeSA9
IHRwLT5waHlzWzBdICYgMHgzZjsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAg
ICAgaWYgKGNtZCAhPSAweDg5NDYpIHsKCiAgICAgICAgICAgICAgICBkYXRhLT5waHlfaWQgJj0g
MHgxZjsKICAgICAgICAgICAgICAgIGRhdGEtPnJlZ19udW0gJj0gMHgxZjsKICAgICAgICB9Cgog
ICAgICAgIHN3aXRjaCAoY21kKSB7CiAgICAgICAgY2FzZSAweDg5NDY6CiAgICAgICAgICAgICAg
ICByZXR1cm4gbmV0ZGV2X2V0aHRvb2xfaW9jdGwoZGV2LCAodm9pZCAqKSBycS0+aWZyX2lmcnUu
aWZydV9kYXRhKTsKCiAgICAgICAgY2FzZSAweDg5NDc6CiAgICAgICAgY2FzZSAweDg5RjA6CiAg
ICAgICAgICAgICAgICBkYXRhLT5waHlfaWQgPSBwaHk7CgoKICAgICAgICBjYXNlIDB4ODk0ODoK
ICAgICAgICBjYXNlIDB4ODlGMCArMToKICAgICAgICAgICAgICAgIGRhdGEtPnZhbF9vdXQgPSBt
ZGlvX3JlYWQgKGRldiwgZGF0YS0+cGh5X2lkLCBkYXRhLT5yZWdfbnVtKTsKICAgICAgICAgICAg
ICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDB4ODk0OToKICAgICAgICBjYXNlIDB4ODlGMCArMjoK
ICAgICAgICAgICAgICAgIGlmICghY2FwYWJsZSAoMTIpKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIHJjID0gLTE7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgfQoKICAgICAgICAgICAgICAgIGlmIChkYXRhLT5waHlfaWQgPT0gcGh5KSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHUxNiB2YWx1ZSA9IGRhdGEtPnZhbF9pbjsKICAgICAgICAgICAgICAg
ICAgICAgICAgc3dpdGNoIChkYXRhLT5yZWdfbnVtKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgMDoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAtPm1lZGlhbG9jayA9
ICh2YWx1ZSAmIDB4OTAwMCkgPyAwIDogMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAodHAtPm1lZGlhbG9jaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRwLT5mdWxsX2R1cGxleCA9ICh2YWx1ZSAmIDB4MDEwMCkgPyAxIDogMDsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSA0OiBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgbWRpb193cml0ZShkZXYsIGRhdGEtPnBoeV9pZCwgZGF0YS0+cmVnX251
bSwgZGF0YS0+dmFsX2luKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgICAgcmMgPSAtOTU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAg
ICByZXR1cm4gcmM7Cn0KCgpzdGF0aWMgc3RydWN0IG5ldF9kZXZpY2Vfc3RhdHMgKnJ0bDgxMzlf
Z2V0X3N0YXRzIChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgc3RydWN0IHJ0bDgx
MzlfcHJpdmF0ZSAqdHAgPSBkZXYtPnByaXY7CiAgICAgICAgdm9pZCAqaW9hZGRyID0gdHAtPm1t
aW9fYWRkcjsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOwoKICAgICAgICBpZiAobmV0aWZfcnVubmluZyhkZXYpKSB7CiAgICAgICAgICAg
ICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIDsgY2xpIjoi
PWciIChmbGFncyk6IDoibWVtb3J5Iik7ICh2b2lkKSgmdHAtPmxvY2spOyB9IHdoaWxlICgwKTsK
ICAgICAgICAgICAgICAgIHRwLT5zdGF0cy5yeF9taXNzZWRfZXJyb3JzICs9ICgodW5zaWduZWQg
bG9uZykgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoUnhN
aXNzZWQpKSkpKTsKICAgICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAo
KHZvaWQgKikoaW9hZGRyICsgKFJ4TWlzc2VkKSkpID0gKCgwKSkpOwogICAgICAgICAgICAgICAg
ZG8geyBkbyB7IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBv
cGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAg
fQoKICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgcmV0dXJuICZ0cC0+c3RhdHM7
Cn0KCgoKCnN0YXRpYyB1bnNpZ25lZCBjb25zdCBldGhlcm5ldF9wb2x5bm9taWFsID0gMHgwNGMx
MWRiN1U7CnN0YXRpYyBpbmxpbmUgdTMyIGV0aGVyX2NyYyAoaW50IGxlbmd0aCwgdW5zaWduZWQg
Y2hhciAqZGF0YSkKewogICAgICAgIGludCBjcmMgPSAtMTsKCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDsKCiAgICAgICAgd2hpbGUgKC0tbGVuZ3RoID49IDApIHsKICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGNoYXIgY3VycmVudF9vY3RldCA9ICpkYXRhKys7CiAgICAgICAgICAgICAgICBp
bnQgYml0OwogICAgICAgICAgICAgICAgZm9yIChiaXQgPSAwOyBiaXQgPCA4OyBiaXQrKywgY3Vy
cmVudF9vY3RldCA+Pj0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgY3JjID0gKGNyYyA8PCAx
KSBeICgoY3JjIDwgMCkgXiAoY3VycmVudF9vY3RldCAmIDEpID8KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBldGhlcm5ldF9wb2x5bm9taWFsIDogMCk7CiAgICAgICAgfQoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgIHJldHVybiBjcmM7
Cn0KCgpzdGF0aWMgdm9pZCBfX3NldF9yeF9tb2RlIChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7
CiAgICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHAgPSBkZXYtPnByaXY7CiAgICAgICAg
dm9pZCAqaW9hZGRyID0gdHAtPm1taW9fYWRkcjsKICAgICAgICB1MzIgbWNfZmlsdGVyWzJdOwog
ICAgICAgIGludCBpLCByeF9tb2RlOwogICAgICAgIHUzMiB0bXA7CgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA7CgoKCiAgICAgICAgaWYgKGRldi0+ZmxhZ3MgJiAweDEw
MCkgewoKICAgICAgICAgICAgICAgIHByaW50ayAoIjw1PiIgIiVzOiBQcm9taXNjdW91cyBtb2Rl
IGVuYWJsZWQuXG4iLAogICAgICAgICAgICAgICAgICAgICAgICBkZXYtPm5hbWUpOwogICAgICAg
ICAgICAgICAgcnhfbW9kZSA9CiAgICAgICAgICAgICAgICAgICAgQWNjZXB0QnJvYWRjYXN0IHwg
QWNjZXB0TXVsdGljYXN0IHwgQWNjZXB0TXlQaHlzIHwKICAgICAgICAgICAgICAgICAgICBBY2Nl
cHRBbGxQaHlzOwogICAgICAgICAgICAgICAgbWNfZmlsdGVyWzFdID0gbWNfZmlsdGVyWzBdID0g
MHhmZmZmZmZmZjsKICAgICAgICB9IGVsc2UgaWYgKChkZXYtPm1jX2NvdW50ID4gbXVsdGljYXN0
X2ZpbHRlcl9saW1pdCkKICAgICAgICAgICAgICAgICAgIHx8IChkZXYtPmZsYWdzICYgMHgyMDAp
KSB7CgogICAgICAgICAgICAgICAgcnhfbW9kZSA9IEFjY2VwdEJyb2FkY2FzdCB8IEFjY2VwdE11
bHRpY2FzdCB8IEFjY2VwdE15UGh5czsKICAgICAgICAgICAgICAgIG1jX2ZpbHRlclsxXSA9IG1j
X2ZpbHRlclswXSA9IDB4ZmZmZmZmZmY7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
IHN0cnVjdCBkZXZfbWNfbGlzdCAqbWNsaXN0OwogICAgICAgICAgICAgICAgcnhfbW9kZSA9IEFj
Y2VwdEJyb2FkY2FzdCB8IEFjY2VwdE15UGh5czsKICAgICAgICAgICAgICAgIG1jX2ZpbHRlclsx
XSA9IG1jX2ZpbHRlclswXSA9IDA7CiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBtY2xpc3Qg
PSBkZXYtPm1jX2xpc3Q7IG1jbGlzdCAmJiBpIDwgZGV2LT5tY19jb3VudDsKICAgICAgICAgICAg
ICAgICAgICAgaSsrLCBtY2xpc3QgPSBtY2xpc3QtPm5leHQpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGJpdF9uciA9IGV0aGVyX2NyYyg2LCBtY2xpc3QtPmRtaV9hZGRyKSA+PiAyNjsK
CiAgICAgICAgICAgICAgICAgICAgICAgIG1jX2ZpbHRlcltiaXRfbnIgPj4gNV0gfD0gKChfX3Uz
MikoMSA8PCAoYml0X25yICYgMzEpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJ4X21vZGUg
fD0gQWNjZXB0TXVsdGljYXN0OwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KCgogICAgICAg
IHRtcCA9IHJ0bDgxMzlfcnhfY29uZmlnIHwgcnhfbW9kZTsKICAgICAgICBpZiAodHAtPnJ4X2Nv
bmZpZyAhPSB0bXApIHsKICAgICAgICAgICAgICAgIGRvIHsgKCoodm9sYXRpbGUgdW5zaWduZWQg
aW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoUnhDb25maWcpKSkgPSAoKHRtcCkpKTsgKCoodm9s
YXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoUnhDb25maWcpKSkpOyB9
IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgIHRwLT5yeF9jb25maWcgPSB0bXA7CiAgICAgICAg
fQogICAgICAgIGRvIHsgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2Fk
ZHIgKyAoTUFSMCArIDApKSkgPSAoKG1jX2ZpbHRlclswXSkpKTsgKCoodm9sYXRpbGUgdW5zaWdu
ZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoTUFSMCArIDApKSkpOyB9IHdoaWxlICgwKTsK
ICAgICAgICBkbyB7ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRy
ICsgKE1BUjAgKyA0KSkpID0gKChtY19maWx0ZXJbMV0pKSk7ICgqKHZvbGF0aWxlIHVuc2lnbmVk
IGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKE1BUjAgKyA0KSkpKTsgfSB3aGlsZSAoMCk7CgoK
ICAgICAgICAgICAgICAgICAgICAgICAgICA7Cn0KCnN0YXRpYyB2b2lkIHJ0bDgxMzlfc2V0X3J4
X21vZGUgKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIGZs
YWdzOwogICAgICAgIHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKnRwID0gZGV2LT5wcml2OwoKICAg
ICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIDsgY2xpIjoi
PWciIChmbGFncyk6IDoibWVtb3J5Iik7ICh2b2lkKSgmdHAtPmxvY2spOyB9IHdoaWxlICgwKTsK
ICAgICAgICBfX3NldF9yeF9tb2RlKGRldik7CiAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7
IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJt
ZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7Cn0KIyAyNjQ0ICI4MTM5dG9vLmMiCnN0YXRpYyBz
dHJ1Y3QgcGNpX2RyaXZlciBydGw4MTM5X3BjaV9kcml2ZXIgPSB7CiAgICAgICAgbmFtZTogIjgx
Mzl0b28iLAogICAgICAgIGlkX3RhYmxlOiBydGw4MTM5X3BjaV90YmwsCiAgICAgICAgcHJvYmU6
IHJ0bDgxMzlfaW5pdF9vbmUsCiAgICAgICAgcmVtb3ZlOiBydGw4MTM5X3JlbW92ZV9vbmUsCgoK
Cgp9OwoKCnN0YXRpYyBpbnQgX19hdHRyaWJ1dGVfXyAoKF9fc2VjdGlvbl9fICgiLnRleHQuaW5p
dCIpKSkgcnRsODEzOV9pbml0X21vZHVsZSAodm9pZCkKewoKCgoKCgoKICAgICAgICByZXR1cm4g
cGNpX21vZHVsZV9pbml0ICgmcnRsODEzOV9wY2lfZHJpdmVyKTsKfQoKCnN0YXRpYyB2b2lkIF9f
YXR0cmlidXRlX18gKCh1bnVzZWQsIF9fc2VjdGlvbl9fKCIudGV4dC5leGl0IikpKSBydGw4MTM5
X2NsZWFudXBfbW9kdWxlICh2b2lkKQp7CiAgICAgICAgcGNpX3VucmVnaXN0ZXJfZHJpdmVyICgm
cnRsODEzOV9wY2lfZHJpdmVyKTsKfQoKCnN0YXRpYyBpbml0Y2FsbF90IF9faW5pdGNhbGxfcnRs
ODEzOV9pbml0X21vZHVsZSBfX2F0dHJpYnV0ZV9fICgodW51c2VkLF9fc2VjdGlvbl9fICgiLmlu
aXRjYWxsLmluaXQiKSkpID0gcnRsODEzOV9pbml0X21vZHVsZTs7CnN0YXRpYyBleGl0Y2FsbF90
IF9fZXhpdGNhbGxfcnRsODEzOV9jbGVhbnVwX21vZHVsZSBfX2F0dHJpYnV0ZV9fICgodW51c2Vk
LF9fc2VjdGlvbl9fICgiLmV4aXRjYWxsLmV4aXQiKSkpID0gcnRsODEzOV9jbGVhbnVwX21vZHVs
ZTs7Cg==


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

* Re: c/4726: Cannot compile 8139too.c from Linux kernel 2.4.13
@ 2001-10-29  4:27 neil
  0 siblings, 0 replies; 2+ messages in thread
From: neil @ 2001-10-29  4:27 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, mojza, nobody

Synopsis: Cannot compile 8139too.c from Linux kernel 2.4.13

State-Changed-From-To: open->closed
State-Changed-By: neil
State-Changed-When: Mon Oct 29 04:26:24 2001
State-Changed-Why:
    Yet another duplicate of PR 4529.

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


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

end of thread, other threads:[~2001-10-29  4:27 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-10-29  2:46 c/4726: Cannot compile 8139too.c from Linux kernel 2.4.13 mojza
2001-10-29  4:27 neil

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