public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* target/9698: Bad ultrasparc code for va_list/vsnprintf
@ 2003-02-13 22:56 bfriesen
  0 siblings, 0 replies; only message in thread
From: bfriesen @ 2003-02-13 22:56 UTC (permalink / raw)
  To: gcc-gnats


>Number:         9698
>Category:       target
>Synopsis:       Bad ultrasparc code for va_list/vsnprintf
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Feb 13 22:56:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     Bob Friesenhahn
>Release:        3.2.2
>Organization:
>Environment:
gcc -v -save-temps -DHAVE_CONFIG_H -I../ -I. -I/home/bfriesen/src/graphics/GraphicsMagick/magick -I.
 -I/home/bfriesen/src/graphics/GraphicsMagick -I/home/bfriesen/src/graphics/GraphicsMagick/ltdl -I/u
sr/local/include/freetype2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_REENTRANT -I/usr/openwin/in
clude -I/usr/openwin/include/X11 -I/usr/local/include/libxml2 -O2 -g -Wall -Winline -Wall -MT draw.l
o -MD -MP -MF .deps/draw.Tpo -c /home/bfriesen/src/graphics/GraphicsMagick/magick/draw.c  -fPIC -DPI
C -o .libs/draw.oESC[K
Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.9/3.2.2/specs
Configured with: /home/bfriesen/src/gnu/gcc-3.2.2/configure --enable-shared --enable-threads --with-
cpu=ultrasparc --enable-version-specific-runtime-libs --enable-languages=c,c++ --disable-nls
Thread model: posix
gcc version 3.2.2
 /usr/local/lib/gcc-lib/sparc-sun-solaris2.9/3.2.2/cpp0 -lang-c -v -I../ -I. -I/home/bfriesen/src/gr
aphics/GraphicsMagick/magick -I. -I/home/bfriesen/src/graphics/GraphicsMagick -I/home/bfriesen/src/g
raphics/GraphicsMagick/ltdl -I/usr/local/include/freetype2 -I/usr/openwin/include -I/usr/openwin/inc
lude/X11 -I/usr/local/include/libxml2 -MD .libs/draw.d -MF .deps/draw.Tpo -MP -MT draw.lo -MQ .libs/
draw.o -D__GNUC__=3 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=2 -D__GXX_ABI_VERSION=102 -Dsparc -Dsun
 -Dunix -D__svr4__ -D__SVR4 -D__PRAGMA_REDEFINE_EXTNAME -D__sparc__ -D__sun__ -D__unix__ -D__svr4__ 
-D__SVR4 -D__PRAGMA_REDEFINE_EXTNAME -D__sparc -D__sun -D__unix -Asystem=unix -Asystem=svr4 -D__OPTI
MIZE__ -D__STDC_HOSTED__=1 -D__SIZE_TYPE__=unsigned int -D__PTRDIFF_TYPE__=int -D__WCHAR_TYPE__=long
 int -D__WINT_TYPE__=long int -D__GCC_NEW_VARARGS__ -Acpu=sparc -Amachine=sparc -DHAVE_CONFIG_H -D_L
ARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_REENTRANT -DPIC /home/bfriesen/src/graphics/GraphicsMagick
/magick/draw.c -Wall -Winline -Wall draw.i
GNU CPP version 3.2.2 (cpplib) (sparc ELF)
ignoring nonexistent directory "/usr/local/sparc-sun-solaris2.9/include"
ignoring duplicate directory "."
#include "..." search starts here:
#include <...> search starts here:
 ..
 .
 /home/bfriesen/src/graphics/GraphicsMagick/magick
 /home/bfriesen/src/graphics/GraphicsMagick
 /home/bfriesen/src/graphics/GraphicsMagick/ltdl
 /usr/local/include/freetype2
 /usr/openwin/include
 /usr/openwin/include/X11
 /usr/local/include/libxml2
 /usr/local/include
 /usr/local/lib/gcc-lib/sparc-sun-solaris2.9/3.2.2/include
 /usr/include
End of search list.
 /usr/local/lib/gcc-lib/sparc-sun-solaris2.9/3.2.2/cc1 -fpreprocessed draw.i -quiet -dumpbase draw.c
 -g -O2 -Wall -Winline -Wall -version -fPIC -o draw.s
GNU CPP version 3.2.2 (cpplib) (sparc ELF)
GNU C version 3.2.2 (sparc-sun-solaris2.9)
        compiled by GNU C version 3.2.2.
 /usr/ccs/bin/as -V -Qy -s -K PIC -xarch=v8plusa -o .libs/draw.o draw.s
/usr/ccs/bin/as: Sun WorkShop 6 update 2 Compiler Common 6.2 Solaris_9_CBE 2001/04/02
>Description:
The last argument to vsnprintf (a double) is consistently
corrupted when the target CPU is ultrasparc and -O2
is requested. The corruption does not appear for -mcpu=v7
>How-To-Repeat:

>Fix:

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

IyAxICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2Ry
YXcuYyIKIyAxICI8YnVpbHQtaW4+IgojIDEgIjxjb21tYW5kIGxpbmU+IgojIDEgIi9ob21lL2Jm
cmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgojIDU2ICIv
aG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIK
IyAxICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL3N0
dWRpby5oIiAxCiMgMjggIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2lj
ay9tYWdpY2svc3R1ZGlvLmgiCiMgMSAiLi4vbWFnaWNrL21hZ2lja19jb25maWcuaCIgMQojIDI5
ICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL3N0dWRp
by5oIiAyCiMgOTggIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9t
YWdpY2svc3R1ZGlvLmgiCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29s
YXJpczIuOS8zLjIuMi9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMgNAojIDQzICIvdXNyL2xvY2FsL2xp
Yi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi45LzMuMi4yL2luY2x1ZGUvc3RkYXJnLmgiIDMg
NAp0eXBlZGVmIF9fYnVpbHRpbl92YV9saXN0IF9fZ251Y192YV9saXN0OwojIDkwICIvdXNyL2xv
Y2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi45LzMuMi4yL2luY2x1ZGUvc3RkYXJn
LmgiIDMgNAp0eXBlZGVmIF9fZ251Y192YV9saXN0IHZhX2xpc3Q7CiMgOTkgIi9ob21lL2Jmcmll
c2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svc3R1ZGlvLmgiIDIKIyAxICIv
dXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi45LzMuMi4yL2luY2x1ZGUv
c3RkaW8uaCIgMSAzIDQKIyAzNCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29s
YXJpczIuOS8zLjIuMi9pbmNsdWRlL3N0ZGlvLmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMpc3Rk
aW8uaAkxLjc5CTAxLzA0LzE2IFNNSSIgCgojIDEgIi91c3IvaW5jbHVkZS9pc28vc3RkaW9faXNv
LmgiIDEgMyA0CiMgMzIgIi91c3IvaW5jbHVkZS9pc28vc3RkaW9faXNvLmgiIDMgNAojcHJhZ21h
IGlkZW50ICJAKCMpc3RkaW9faXNvLmgJMS4yCTk5LzEwLzI1IFNNSSIKCgojIDEgIi91c3IvaW5j
bHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMgNAojIDEzICIvdXNyL2luY2x1ZGUvc3lzL2Zl
YXR1cmVfdGVzdHMuaCIgMyA0CiNwcmFnbWEgaWRlbnQgIkAoIylmZWF0dXJlX3Rlc3RzLmgJMS4x
OAk5OS8wNy8yNiBTTUkiCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvaXNhX2RlZnMuaCIgMSAzIDQK
IyA5ICIvdXNyL2luY2x1ZGUvc3lzL2lzYV9kZWZzLmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMp
aXNhX2RlZnMuaAkxLjIwCTk5LzA1LzA0IFNNSSIKIyAxNiAiL3Vzci9pbmNsdWRlL3N5cy9mZWF0
dXJlX3Rlc3RzLmgiIDIgMyA0CiMgMzYgIi91c3IvaW5jbHVkZS9pc28vc3RkaW9faXNvLmgiIDIg
MyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy92YV9saXN0LmgiIDEgMyA0CiMgOSAiL3Vzci9pbmNs
dWRlL3N5cy92YV9saXN0LmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMpdmFfbGlzdC5oCTEuMTMJ
MDEvMDIvMDggU01JIgojIDI2ICIvdXNyL2luY2x1ZGUvc3lzL3ZhX2xpc3QuaCIgMyA0CnR5cGVk
ZWYgdm9pZCAqX192YV9saXN0OwojIDM3ICIvdXNyL2luY2x1ZGUvaXNvL3N0ZGlvX2lzby5oIiAy
IDMgNAojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjkvMy4y
LjIvaW5jbHVkZS9zdGRpb190YWcuaCIgMSAzIDQKIyAxOCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxp
Yi9zcGFyYy1zdW4tc29sYXJpczIuOS8zLjIuMi9pbmNsdWRlL3N0ZGlvX3RhZy5oIiAzIDQKI3By
YWdtYSBpZGVudCAiQCgjKXN0ZGlvX3RhZy5oCTEuMwk5OC8wNC8yMCBTTUkiCiMgMzAgIi91c3Iv
bG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjkvMy4yLjIvaW5jbHVkZS9zdGRp
b190YWcuaCIgMyA0CnR5cGVkZWYgc3RydWN0IF9fRklMRSBfX0ZJTEU7CiMgMzggIi91c3IvaW5j
bHVkZS9pc28vc3RkaW9faXNvLmgiIDIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGlvX2ltcGwu
aCIgMSAzIDQKIyA5ICIvdXNyL2luY2x1ZGUvc3RkaW9faW1wbC5oIiAzIDQKI3ByYWdtYSBpZGVu
dCAiQCgjKXN0ZGlvX2ltcGwuaAkxLjEzCTAxLzExLzE2IFNNSSIKIyAyMiAiL3Vzci9pbmNsdWRl
L3N0ZGlvX2ltcGwuaCIgMyA0CnR5cGVkZWYgaW50IHNzaXplX3Q7CiMgMzggIi91c3IvaW5jbHVk
ZS9zdGRpb19pbXBsLmgiIDMgNApzdHJ1Y3QgX19GSUxFCnsKCgoKCiAgICAgICAgc3NpemVfdCBf
Y250OwogICAgICAgIHVuc2lnbmVkIGNoYXIgKl9wdHI7CgogICAgICAgIHVuc2lnbmVkIGNoYXIg
Kl9iYXNlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgX2ZsYWc7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBfZmlsZTsKICAgICAgICB1bnNpZ25lZCBfX29yaWVudGF0aW9uOjI7CiAgICAgICAgdW5zaWdu
ZWQgX19pb25vbG9jazoxOwogICAgICAgIHVuc2lnbmVkIF9fc2Vla2FibGU6MTsKICAgICAgICB1
bnNpZ25lZCBfX2ZpbGxlcjo0Owp9OwojIDM5ICIvdXNyL2luY2x1ZGUvaXNvL3N0ZGlvX2lzby5o
IiAyIDMgNAojIDU5ICIvdXNyL2luY2x1ZGUvaXNvL3N0ZGlvX2lzby5oIiAzIDQKdHlwZWRlZiBs
b25nIGxvbmcgX19sb25nbG9uZ190OwojIDc1ICIvdXNyL2luY2x1ZGUvaXNvL3N0ZGlvX2lzby5o
IiAzIDQKdHlwZWRlZiBfX0ZJTEUgRklMRTsKCgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHNp
emVfdDsKCgoKCgoKdHlwZWRlZiBfX2xvbmdsb25nX3QgZnBvc190OwojIDE0NyAiL3Vzci9pbmNs
dWRlL2lzby9zdGRpb19pc28uaCIgMyA0CmV4dGVybiBfX0ZJTEUgX19pb2JbMjBdOwojIDE2NCAi
L3Vzci9pbmNsdWRlL2lzby9zdGRpb19pc28uaCIgMyA0CmV4dGVybiBpbnQgcmVtb3ZlKGNvbnN0
IGNoYXIgKik7CmV4dGVybiBpbnQgcmVuYW1lKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsK
ZXh0ZXJuIEZJTEUgKnRtcGZpbGUodm9pZCk7CmV4dGVybiBjaGFyICp0bXBuYW0oY2hhciAqKTsK
ZXh0ZXJuIGludCBmY2xvc2UoRklMRSAqKTsKZXh0ZXJuIGludCBmZmx1c2goRklMRSAqKTsKZXh0
ZXJuIEZJTEUgKmZvcGVuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIEZJTEUg
KmZyZW9wZW4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIEZJTEUgKik7CmV4dGVybiB2b2lk
IHNldGJ1ZihGSUxFICosIGNoYXIgKik7CmV4dGVybiBpbnQgc2V0dmJ1ZihGSUxFICosIGNoYXIg
KiwgaW50LCBzaXplX3QpOwoKZXh0ZXJuIGludCBmcHJpbnRmKEZJTEUgKiwgY29uc3QgY2hhciAq
LCAuLi4pOwoKZXh0ZXJuIGludCBmc2NhbmYoRklMRSAqLCBjb25zdCBjaGFyICosIC4uLik7Cgpl
eHRlcm4gaW50IHByaW50Zihjb25zdCBjaGFyICosIC4uLik7CgpleHRlcm4gaW50IHNjYW5mKGNv
bnN0IGNoYXIgKiwgLi4uKTsKCmV4dGVybiBpbnQgc3ByaW50ZihjaGFyICosIGNvbnN0IGNoYXIg
KiwgLi4uKTsKCmV4dGVybiBpbnQgc3NjYW5mKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAu
Li4pOwpleHRlcm4gaW50IHZmcHJpbnRmKEZJTEUgKiwgY29uc3QgY2hhciAqLCBfX3ZhX2xpc3Qp
OwpleHRlcm4gaW50IHZwcmludGYoY29uc3QgY2hhciAqLCBfX3ZhX2xpc3QpOwpleHRlcm4gaW50
IHZzcHJpbnRmKGNoYXIgKiwgY29uc3QgY2hhciAqLCBfX3ZhX2xpc3QpOwpleHRlcm4gaW50IGZn
ZXRjKEZJTEUgKik7CmV4dGVybiBjaGFyICpmZ2V0cyhjaGFyICosIGludCwgRklMRSAqKTsKZXh0
ZXJuIGludCBmcHV0YyhpbnQsIEZJTEUgKik7CmV4dGVybiBpbnQgZnB1dHMoY29uc3QgY2hhciAq
LCBGSUxFICopOwoKCmV4dGVybiBpbnQgZ2V0YyhGSUxFICopOwpleHRlcm4gaW50IHB1dGMoaW50
LCBGSUxFICopOwoKCgpleHRlcm4gaW50IGdldGNoYXIodm9pZCk7CmV4dGVybiBpbnQgcHV0Y2hh
cihpbnQpOwoKZXh0ZXJuIGNoYXIgKmdldHMoY2hhciAqKTsKZXh0ZXJuIGludCBwdXRzKGNvbnN0
IGNoYXIgKik7CmV4dGVybiBpbnQgdW5nZXRjKGludCwgRklMRSAqKTsKZXh0ZXJuIHNpemVfdCBm
cmVhZCh2b2lkICosIHNpemVfdCwgc2l6ZV90LCBGSUxFICopOwpleHRlcm4gc2l6ZV90IGZ3cml0
ZShjb25zdCB2b2lkICosIHNpemVfdCwgc2l6ZV90LCBGSUxFICopOwpleHRlcm4gaW50IGZnZXRw
b3MoRklMRSAqLCBmcG9zX3QgKik7CmV4dGVybiBpbnQgZnNlZWsoRklMRSAqLCBsb25nLCBpbnQp
OwpleHRlcm4gaW50IGZzZXRwb3MoRklMRSAqLCBjb25zdCBmcG9zX3QgKik7CmV4dGVybiBsb25n
IGZ0ZWxsKEZJTEUgKik7CmV4dGVybiB2b2lkIHJld2luZChGSUxFICopOwoKCmV4dGVybiB2b2lk
IGNsZWFyZXJyKEZJTEUgKik7CmV4dGVybiBpbnQgZmVvZihGSUxFICopOwpleHRlcm4gaW50IGZl
cnJvcihGSUxFICopOwoKZXh0ZXJuIHZvaWQgcGVycm9yKGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJu
IGludCBfX2ZpbGJ1ZihGSUxFICopOwpleHRlcm4gaW50IF9fZmxzYnVmKGludCwgRklMRSAqKTsK
IyAzNyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOS8zLjIuMi9p
bmNsdWRlL3N0ZGlvLmgiIDIgMyA0CiMgMTA3ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJj
LXN1bi1zb2xhcmlzMi45LzMuMi4yL2luY2x1ZGUvc3RkaW8uaCIgMyA0CnR5cGVkZWYgX19sb25n
bG9uZ190IG9mZl90OwoKCgoKCnR5cGVkZWYgX19sb25nbG9uZ190IG9mZjY0X3Q7CiMgMTIzICIv
dXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi45LzMuMi4yL2luY2x1ZGUv
c3RkaW8uaCIgMyA0CnR5cGVkZWYgX19sb25nbG9uZ190IGZwb3M2NF90OwojIDEzNCAiL3Vzci9s
b2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOS8zLjIuMi9pbmNsdWRlL3N0ZGlv
LmgiIDMgNAp0eXBlZGVmIF9fdmFfbGlzdCBfX25vdF92YV9saXN0X187CiMgMTUxICIvdXNyL2xv
Y2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi45LzMuMi4yL2luY2x1ZGUvc3RkaW8u
aCIgMyA0CmV4dGVybiB1bnNpZ25lZCBjaGFyIF9zaWJ1ZltdLCBfc29idWZbXTsKCgoKCgojcHJh
Z21hIHJlZGVmaW5lX2V4dG5hbWUgZm9wZW4gZm9wZW42NAojcHJhZ21hIHJlZGVmaW5lX2V4dG5h
bWUgZnJlb3BlbiBmcmVvcGVuNjQKI3ByYWdtYSByZWRlZmluZV9leHRuYW1lIHRtcGZpbGUgdG1w
ZmlsZTY0CiNwcmFnbWEgcmVkZWZpbmVfZXh0bmFtZSBmZ2V0cG9zIGZnZXRwb3M2NAojcHJhZ21h
IHJlZGVmaW5lX2V4dG5hbWUgZnNldHBvcyBmc2V0cG9zNjQKCiNwcmFnbWEgcmVkZWZpbmVfZXh0
bmFtZSBmc2Vla28gZnNlZWtvNjQKI3ByYWdtYSByZWRlZmluZV9leHRuYW1lIGZ0ZWxsbyBmdGVs
bG82NAojIDE5MyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOS8z
LjIuMi9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gdW5zaWduZWQgY2hhciAqX2J1ZmVuZHRh
YltdOwpleHRlcm4gRklMRSAqX2xhc3RidWY7CiMgMjI1ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGli
L3NwYXJjLXN1bi1zb2xhcmlzMi45LzMuMi4yL2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBj
aGFyICp0bXBuYW1fcihjaGFyICopOwoKCgpleHRlcm4gdm9pZCBzZXRidWZmZXIoRklMRSAqLCBj
aGFyICosIHNpemVfdCk7CmV4dGVybiBpbnQgc2V0bGluZWJ1ZihGSUxFICopOwoKCgoKCmV4dGVy
biBpbnQgdmZzY2FuZihGSUxFICosIGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3QpOwpleHRl
cm4gaW50IHZzY2FuZihjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKZXh0ZXJuIGludCB2
c3NjYW5mKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CgoKCgoK
ZXh0ZXJuIGludCBzbnByaW50ZihjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCAuLi4pOwoK
CgoKZXh0ZXJuIGludCB2c25wcmludGYoY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwgX19n
bnVjX3ZhX2xpc3QpOwojIDI1OCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29s
YXJpczIuOS8zLjIuMi9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gRklMRSAqZmRvcGVuKGlu
dCwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKmN0ZXJtaWQoY2hhciAqKTsKZXh0ZXJuIGlu
dCBmaWxlbm8oRklMRSAqKTsKIyAyNjkgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3Vu
LXNvbGFyaXMyLjkvMy4yLjIvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIHZvaWQgZmxvY2tm
aWxlKEZJTEUgKik7CmV4dGVybiBpbnQgZnRyeWxvY2tmaWxlKEZJTEUgKik7CmV4dGVybiB2b2lk
IGZ1bmxvY2tmaWxlKEZJTEUgKik7CmV4dGVybiBpbnQgZ2V0Y191bmxvY2tlZChGSUxFICopOwpl
eHRlcm4gaW50IGdldGNoYXJfdW5sb2NrZWQodm9pZCk7CmV4dGVybiBpbnQgcHV0Y191bmxvY2tl
ZChpbnQsIEZJTEUgKik7CmV4dGVybiBpbnQgcHV0Y2hhcl91bmxvY2tlZChpbnQpOwojIDI4NCAi
L3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOS8zLjIuMi9pbmNsdWRl
L3N0ZGlvLmgiIDMgNApleHRlcm4gRklMRSAqcG9wZW4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFy
ICopOwpleHRlcm4gY2hhciAqY3VzZXJpZChjaGFyICopOwpleHRlcm4gY2hhciAqdGVtcG5hbShj
b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgZ2V0b3B0KGludCwgY2hhciAq
Y29uc3QgKiwgY29uc3QgY2hhciAqKTsKCgoKZXh0ZXJuIGNoYXIgKm9wdGFyZzsKZXh0ZXJuIGlu
dCBvcHRpbmQsIG9wdGVyciwgb3B0b3B0OwpleHRlcm4gaW50IGdldHcoRklMRSAqKTsKZXh0ZXJu
IGludCBwdXR3KGludCwgRklMRSAqKTsKZXh0ZXJuIGludCBwY2xvc2UoRklMRSAqKTsKCgoKCgoK
CmV4dGVybiBpbnQgZnNlZWtvKEZJTEUgKiwgb2ZmX3QsIGludCk7CmV4dGVybiBvZmZfdCBmdGVs
bG8oRklMRSAqKTsKIyAzMTMgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFy
aXMyLjkvMy4yLjIvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIEZJTEUgKmZvcGVuNjQoY29u
c3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gRklMRSAqZnJlb3BlbjY0KGNvbnN0IGNo
YXIgKiwgY29uc3QgY2hhciAqLCBGSUxFICopOwpleHRlcm4gRklMRSAqdG1wZmlsZTY0KHZvaWQp
OwpleHRlcm4gaW50IGZnZXRwb3M2NChGSUxFICosIGZwb3M2NF90ICopOwpleHRlcm4gaW50IGZz
ZXRwb3M2NChGSUxFICosIGNvbnN0IGZwb3M2NF90ICopOwpleHRlcm4gaW50IGZzZWVrbzY0KEZJ
TEUgKiwgb2ZmNjRfdCwgaW50KTsKZXh0ZXJuIG9mZjY0X3QgZnRlbGxvNjQoRklMRSAqKTsKIyAx
MDAgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svc3R1
ZGlvLmgiIDIKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMyA0CiMgMTYgIi91c3Iv
aW5jbHVkZS9zdGRsaWIuaCIgMyA0CiNwcmFnbWEgaWRlbnQgIkAoIylzdGRsaWIuaAkxLjQ4CTAw
LzA0LzEzIFNNSSIgCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFy
aXMyLjkvMy4yLjIvaW5jbHVkZS9pc28vc3RkbGliX2lzby5oIiAxIDMgNAojIDM3ICIvdXNyL2xv
Y2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi45LzMuMi4yL2luY2x1ZGUvaXNvL3N0
ZGxpYl9pc28uaCIgMyA0CiNwcmFnbWEgaWRlbnQgIkAoIylzdGRsaWJfaXNvLmgJMS4zCTAxLzAz
LzA5IFNNSSIgCiMgNDYgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMy
LjkvMy4yLjIvaW5jbHVkZS9pc28vc3RkbGliX2lzby5oIiAzIDQKZXh0ZXJuIHVuc2lnbmVkIGNo
YXIgX19jdHlwZVtdOwojIDU3ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xh
cmlzMi45LzMuMi4yL2luY2x1ZGUvaXNvL3N0ZGxpYl9pc28uaCIgMyA0CnR5cGVkZWYgc3RydWN0
IHsKICAgICAgICBpbnQgcXVvdDsKICAgICAgICBpbnQgcmVtOwp9IGRpdl90OwoKdHlwZWRlZiBz
dHJ1Y3QgewogICAgICAgIGxvbmcgcXVvdDsKICAgICAgICBsb25nIHJlbTsKfSBsZGl2X3Q7CiMg
OTYgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjkvMy4yLjIvaW5j
bHVkZS9pc28vc3RkbGliX2lzby5oIiAzIDQKdHlwZWRlZiBsb25nIHdjaGFyX3Q7CgoKCgoKCmV4
dGVybiB2b2lkIGFib3J0KHZvaWQpOwpleHRlcm4gaW50IGFicyhpbnQpOwpleHRlcm4gaW50IGF0
ZXhpdCh2b2lkICgqKSh2b2lkKSk7CmV4dGVybiBkb3VibGUgYXRvZihjb25zdCBjaGFyICopOwpl
eHRlcm4gaW50IGF0b2koY29uc3QgY2hhciAqKTsKZXh0ZXJuIGxvbmcgaW50IGF0b2woY29uc3Qg
Y2hhciAqKTsKZXh0ZXJuIHZvaWQgKmJzZWFyY2goY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICos
IHNpemVfdCwgc2l6ZV90LAogICAgICAgIGludCAoKikoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lk
ICopKTsKZXh0ZXJuIHZvaWQgKmNhbGxvYyhzaXplX3QsIHNpemVfdCk7CmV4dGVybiBkaXZfdCBk
aXYoaW50LCBpbnQpOwpleHRlcm4gdm9pZCBleGl0KGludCk7CmV4dGVybiB2b2lkIGZyZWUodm9p
ZCAqKTsKZXh0ZXJuIGNoYXIgKmdldGVudihjb25zdCBjaGFyICopOwpleHRlcm4gbG9uZyBpbnQg
bGFicyhsb25nKTsKZXh0ZXJuIGxkaXZfdCBsZGl2KGxvbmcsIGxvbmcpOwpleHRlcm4gdm9pZCAq
bWFsbG9jKHNpemVfdCk7CmV4dGVybiBpbnQgbWJsZW4oY29uc3QgY2hhciAqLCBzaXplX3QpOwpl
eHRlcm4gc2l6ZV90IG1ic3Rvd2NzKHdjaGFyX3QgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwpl
eHRlcm4gaW50IG1idG93Yyh3Y2hhcl90ICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKZXh0ZXJu
IHZvaWQgcXNvcnQodm9pZCAqLCBzaXplX3QsIHNpemVfdCwKICAgICAgICBpbnQgKCopKGNvbnN0
IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSk7CmV4dGVybiBpbnQgcmFuZCh2b2lkKTsKZXh0ZXJuIHZv
aWQgKnJlYWxsb2Modm9pZCAqLCBzaXplX3QpOwpleHRlcm4gdm9pZCBzcmFuZCh1bnNpZ25lZCBp
bnQpOwpleHRlcm4gZG91YmxlIHN0cnRvZChjb25zdCBjaGFyICosIGNoYXIgKiopOwpleHRlcm4g
bG9uZyBpbnQgc3RydG9sKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKZXh0ZXJuIHVuc2ln
bmVkIGxvbmcgaW50IHN0cnRvdWwoY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwpleHRlcm4g
aW50IHN5c3RlbShjb25zdCBjaGFyICopOwpleHRlcm4gaW50IHdjdG9tYihjaGFyICosIHdjaGFy
X3QpOwpleHRlcm4gc2l6ZV90IHdjc3RvbWJzKGNoYXIgKiwgY29uc3Qgd2NoYXJfdCAqLCBzaXpl
X3QpOwojIDE5ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMyA0CgoKCiMgMSAiL3Vzci9pbmNs
dWRlL3N5cy93YWl0LmgiIDEgMyA0CiMgMTYgIi91c3IvaW5jbHVkZS9zeXMvd2FpdC5oIiAzIDQK
I3ByYWdtYSBpZGVudCAiQCgjKXdhaXQuaAkxLjIxCTk3LzA0LzA4IFNNSSIgCgoKCiMgMSAiL3Vz
ci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOS8zLjIuMi9pbmNsdWRlL3N5
cy90eXBlcy5oIiAxIDMgNAojIDI1ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1z
b2xhcmlzMi45LzMuMi4yL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAojcHJhZ21hIGlkZW50ICJA
KCMpdHlwZXMuaAkxLjcyCTAyLzAzLzIzIFNNSSIKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5
cy9tYWNodHlwZXMuaCIgMSAzIDQKIyAxNiAiL3Vzci9pbmNsdWRlL3N5cy9tYWNodHlwZXMuaCIg
MyA0CiNwcmFnbWEgaWRlbnQgIkAoIyltYWNodHlwZXMuaAkxLjEzCTk5LzA1LzA0IFNNSSIKIyAz
MyAiL3Vzci9pbmNsdWRlL3N5cy9tYWNodHlwZXMuaCIgMyA0CnR5cGVkZWYgc3RydWN0IF9sYWJl
bF90IHsgbG9uZyB2YWxbMl07IH0gbGFiZWxfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIGxv
Y2tfdDsKIyAzNCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOS8z
LjIuMi9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMgNAojIDQ1ICIvdXNyL2xvY2FsL2xpYi9nY2Mt
bGliL3NwYXJjLXN1bi1zb2xhcmlzMi45LzMuMi4yL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAoj
IDEgIi91c3IvaW5jbHVkZS9zeXMvaW50X3R5cGVzLmgiIDEgMyA0CiMgOSAiL3Vzci9pbmNsdWRl
L3N5cy9pbnRfdHlwZXMuaCIgMyA0CiNwcmFnbWEgaWRlbnQgIkAoIylpbnRfdHlwZXMuaAkxLjYJ
OTcvMDgvMjAgU01JIgojIDYyICIvdXNyL2luY2x1ZGUvc3lzL2ludF90eXBlcy5oIiAzIDQKdHlw
ZWRlZiBjaGFyIGludDhfdDsKCgoKCgp0eXBlZGVmIHNob3J0IGludDE2X3Q7CnR5cGVkZWYgaW50
IGludDMyX3Q7CgoKCgp0eXBlZGVmIGxvbmcgbG9uZyBpbnQ2NF90OwoKCgp0eXBlZGVmIHVuc2ln
bmVkIGNoYXIgdWludDhfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1aW50MTZfdDsKdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgdWludDMyX3Q7CgoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1
aW50NjRfdDsKIyA5NCAiL3Vzci9pbmNsdWRlL3N5cy9pbnRfdHlwZXMuaCIgMyA0CnR5cGVkZWYg
aW50NjRfdCBpbnRtYXhfdDsKdHlwZWRlZiB1aW50NjRfdCB1aW50bWF4X3Q7CiMgMTEwICIvdXNy
L2luY2x1ZGUvc3lzL2ludF90eXBlcy5oIiAzIDQKdHlwZWRlZiBpbnQgaW50cHRyX3Q7CnR5cGVk
ZWYgdW5zaWduZWQgaW50IHVpbnRwdHJfdDsKCgoKCgoKCnR5cGVkZWYgY2hhciBpbnRfbGVhc3Q4
X3Q7CgoKCgoKdHlwZWRlZiBzaG9ydCBpbnRfbGVhc3QxNl90Owp0eXBlZGVmIGludCBpbnRfbGVh
c3QzMl90OwoKCgoKdHlwZWRlZiBsb25nIGxvbmcgaW50X2xlYXN0NjRfdDsKCgoKdHlwZWRlZiB1
bnNpZ25lZCBjaGFyIHVpbnRfbGVhc3Q4X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdWludF9s
ZWFzdDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnRfbGVhc3QzMl90OwoKCgoKdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIGxvbmcgdWludF9sZWFzdDY0X3Q7CiMgNDYgIi91c3IvbG9jYWwvbGli
L2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjkvMy4yLjIvaW5jbHVkZS9zeXMvdHlwZXMuaCIg
MiAzIDQKIyA2MiAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOS8z
LjIuMi9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiBsb25nIGxvbmcgbG9uZ2xvbmdf
dDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdV9sb25nbG9uZ190OwojIDg1ICIvdXNyL2xv
Y2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi45LzMuMi4yL2luY2x1ZGUvc3lzL3R5
cGVzLmgiIDMgNAp0eXBlZGVmIGxvbmcgdF9zY2FsYXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25n
IHRfdXNjYWxhcl90OwoKCgoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1Y2hhcl90Owp0eXBlZGVm
IHVuc2lnbmVkIHNob3J0IHVzaG9ydF90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50X3Q7CnR5
cGVkZWYgdW5zaWduZWQgbG9uZyB1bG9uZ190OwoKdHlwZWRlZiBjaGFyICpjYWRkcl90Owp0eXBl
ZGVmIGxvbmcgZGFkZHJfdDsKdHlwZWRlZiBzaG9ydCBjbnRfdDsKIyAxMTIgIi91c3IvbG9jYWwv
bGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjkvMy4yLjIvaW5jbHVkZS9zeXMvdHlwZXMu
aCIgMyA0CnR5cGVkZWYgaW50IHB0cmRpZmZfdDsKIyAxMjEgIi91c3IvbG9jYWwvbGliL2djYy1s
aWIvc3BhcmMtc3VuLXNvbGFyaXMyLjkvMy4yLjIvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5
cGVkZWYgdWxvbmdfdCBwZm5fdDsKdHlwZWRlZiB1bG9uZ190IHBnY250X3Q7CnR5cGVkZWYgbG9u
ZyBzcGdjbnRfdDsKCnR5cGVkZWYgdWNoYXJfdCB1c2VfdDsKdHlwZWRlZiBzaG9ydCBzeXNpZF90
Owp0eXBlZGVmIHNob3J0IGluZGV4X3Q7CnR5cGVkZWYgdm9pZCAqdGltZW91dF9pZF90Owp0eXBl
ZGVmIHZvaWQgKmJ1ZmNhbGxfaWRfdDsKIyAxNjQgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3Bh
cmMtc3VuLXNvbGFyaXMyLjkvMy4yLjIvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYg
dV9sb25nbG9uZ190IGlub190Owp0eXBlZGVmIGxvbmdsb25nX3QgYmxrY250X3Q7CnR5cGVkZWYg
dV9sb25nbG9uZ190IGZzYmxrY250X3Q7CnR5cGVkZWYgdV9sb25nbG9uZ190IGZzZmlsY250X3Q7
CiMgMTc3ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi45LzMuMi4y
L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIHVfbG9uZ2xvbmdfdCBpbm82NF90Owp0
eXBlZGVmIGxvbmdsb25nX3QgYmxrY250NjRfdDsKdHlwZWRlZiB1X2xvbmdsb25nX3QgZnNibGtj
bnQ2NF90Owp0eXBlZGVmIHVfbG9uZ2xvbmdfdCBmc2ZpbGNudDY0X3Q7CgoKCgoKCnR5cGVkZWYg
bG9uZyBibGtzaXplX3Q7CgoKCnR5cGVkZWYgZW51bSB7IF9CX0ZBTFNFLCBfQl9UUlVFIH0gYm9v
bGVhbl90OwojIDIwNCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIu
OS8zLjIuMi9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiBpbnQ2NF90IHBhZDY0X3Q7
CnR5cGVkZWYgdWludDY0X3QgdXBhZDY0X3Q7CiMgMjE3ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGli
L3NwYXJjLXN1bi1zb2xhcmlzMi45LzMuMi4yL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBl
ZGVmIGxvbmdsb25nX3Qgb2Zmc2V0X3Q7CnR5cGVkZWYgdV9sb25nbG9uZ190IHVfb2Zmc2V0X3Q7
CnR5cGVkZWYgdV9sb25nbG9uZ190IGxlbl90Owp0eXBlZGVmIGxvbmdsb25nX3QgZGlza2FkZHJf
dDsKIyAyMzggIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjkvMy4y
LjIvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYgdW5pb24gewogICAgICAgIG9mZnNl
dF90IF9mOwogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICBpbnQzMl90IF91OwogICAg
ICAgICAgICAgICAgaW50MzJfdCBfbDsKICAgICAgICB9IF9wOwp9IGxsb2ZmX3Q7CiMgMjU4ICIv
dXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi45LzMuMi4yL2luY2x1ZGUv
c3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIHVuaW9uIHsKICAgICAgICBkaXNrYWRkcl90IF9mOwog
ICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICBpbnQzMl90IF91OwogICAgICAgICAgICAg
ICAgaW50MzJfdCBfbDsKICAgICAgICB9IF9wOwp9IGxsZGFkZHJfdDsKCgp0eXBlZGVmIHVpbnRf
dCBrX2ZsdHNldF90OwojIDI4MSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29s
YXJpczIuOS8zLjIuMi9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiBsb25nIGlkX3Q7
CgoKCgoKCnR5cGVkZWYgdWludF90IHVzZWNvbmRzX3Q7CgoKCnR5cGVkZWYgbG9uZyBzdXNlY29u
ZHNfdDsKIyAzMDIgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjkv
My4yLjIvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYgdWxvbmdfdCBtYWpvcl90Owp0
eXBlZGVmIHVsb25nX3QgbWlub3JfdDsKCgoKCgp0eXBlZGVmIHNob3J0IHByaV90OwojIDMyMiAi
L3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOS8zLjIuMi9pbmNsdWRl
L3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiB1c2hvcnRfdCBvX21vZGVfdDsKdHlwZWRlZiBzaG9y
dCBvX2Rldl90Owp0eXBlZGVmIHVzaG9ydF90IG9fdWlkX3Q7CnR5cGVkZWYgb191aWRfdCBvX2dp
ZF90Owp0eXBlZGVmIHNob3J0IG9fbmxpbmtfdDsKdHlwZWRlZiBzaG9ydCBvX3BpZF90Owp0eXBl
ZGVmIHVzaG9ydF90IG9faW5vX3Q7CgoKCgoKdHlwZWRlZiBpbnQga2V5X3Q7CgoKCnR5cGVkZWYg
dWxvbmdfdCBtb2RlX3Q7CgoKCgoKCgp0eXBlZGVmIGxvbmcgdWlkX3Q7CgoKCnR5cGVkZWYgdWlk
X3QgZ2lkX3Q7Cgp0eXBlZGVmIGlkX3QgdGFza2lkX3Q7CnR5cGVkZWYgaWRfdCBwcm9qaWRfdDsK
CgoKCgoKdHlwZWRlZiB1aW50X3QgcHRocmVhZF90Owp0eXBlZGVmIHVpbnRfdCBwdGhyZWFkX2tl
eV90OwoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfbXV0ZXggewogICAgICAgIHN0cnVj
dCB7CiAgICAgICAgICAgICAgICB1aW50MTZfdCBfX3B0aHJlYWRfbXV0ZXhfZmxhZzE7CiAgICAg
ICAgICAgICAgICB1aW50OF90IF9fcHRocmVhZF9tdXRleF9mbGFnMjsKICAgICAgICAgICAgICAg
IHVpbnQ4X3QgX19wdGhyZWFkX211dGV4X2NlaWxpbmc7CiAgICAgICAgICAgICAgICB1aW50MTZf
dCBfX3B0aHJlYWRfbXV0ZXhfdHlwZTsKICAgICAgICAgICAgICAgIHVpbnQxNl90IF9fcHRocmVh
ZF9tdXRleF9tYWdpYzsKICAgICAgICB9IF9fcHRocmVhZF9tdXRleF9mbGFnczsKICAgICAgICB1
bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICB1
aW50OF90IF9fcHRocmVhZF9tdXRleF9wYWRbOF07CiAgICAgICAgICAgICAgICB9IF9fcHRocmVh
ZF9tdXRleF9sb2NrNjQ7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAg
ICAgICAgICB1aW50MzJfdCBfX3B0aHJlYWRfb3duZXJwaWQ7CiAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQzMl90IF9fcHRocmVhZF9sb2Nrd29yZDsKICAgICAgICAgICAgICAgIH0gX19wdGhy
ZWFkX211dGV4X2xvY2szMjsKICAgICAgICAgICAgICAgIHVwYWQ2NF90IF9fcHRocmVhZF9tdXRl
eF9vd25lcjY0OwogICAgICAgIH0gX19wdGhyZWFkX211dGV4X2xvY2s7CiAgICAgICAgdXBhZDY0
X3QgX19wdGhyZWFkX211dGV4X2RhdGE7Cn0gcHRocmVhZF9tdXRleF90OwoKdHlwZWRlZiBzdHJ1
Y3QgX3B0aHJlYWRfY29uZCB7CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVpbnQ4
X3QgX19wdGhyZWFkX2NvbmRfZmxhZ1s0XTsKICAgICAgICAgICAgICAgIHVpbnQxNl90IF9fcHRo
cmVhZF9jb25kX3R5cGU7CiAgICAgICAgICAgICAgICB1aW50MTZfdCBfX3B0aHJlYWRfY29uZF9t
YWdpYzsKICAgICAgICB9IF9fcHRocmVhZF9jb25kX2ZsYWdzOwogICAgICAgIHVwYWQ2NF90IF9f
cHRocmVhZF9jb25kX2RhdGE7Cn0gcHRocmVhZF9jb25kX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCBf
cHRocmVhZF9yd2xvY2sgewogICAgICAgIGludDMyX3QgX19wdGhyZWFkX3J3bG9ja19yZWFkZXJz
OwogICAgICAgIHVpbnQxNl90IF9fcHRocmVhZF9yd2xvY2tfdHlwZTsKICAgICAgICB1aW50MTZf
dCBfX3B0aHJlYWRfcndsb2NrX21hZ2ljOwogICAgICAgIHB0aHJlYWRfbXV0ZXhfdCBfX3B0aHJl
YWRfcndsb2NrX211dGV4OwogICAgICAgIHB0aHJlYWRfY29uZF90IF9fcHRocmVhZF9yd2xvY2tf
cmVhZGVyY3Y7CiAgICAgICAgcHRocmVhZF9jb25kX3QgX19wdGhyZWFkX3J3bG9ja193cml0ZXJj
djsKfSBwdGhyZWFkX3J3bG9ja190OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfYXR0ciB7
CiAgICAgICAgdm9pZCAqX19wdGhyZWFkX2F0dHJwOwp9IHB0aHJlYWRfYXR0cl90OwoKCgoKdHlw
ZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfbXV0ZXhhdHRyIHsKICAgICAgICB2b2lkICpfX3B0aHJlYWRf
bXV0ZXhhdHRycDsKfSBwdGhyZWFkX211dGV4YXR0cl90OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0
aHJlYWRfY29uZGF0dHIgewogICAgICAgIHZvaWQgKl9fcHRocmVhZF9jb25kYXR0cnA7Cn0gcHRo
cmVhZF9jb25kYXR0cl90OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgX29uY2UgewogICAgICAgIHVwYWQ2
NF90IF9fcHRocmVhZF9vbmNlX3BhZFs0XTsKfSBwdGhyZWFkX29uY2VfdDsKCgoKCgp0eXBlZGVm
IHN0cnVjdCBfcHRocmVhZF9yd2xvY2thdHRyIHsKICAgICAgICB2b2lkICpfX3B0aHJlYWRfcnds
b2NrYXR0cnA7Cn0gcHRocmVhZF9yd2xvY2thdHRyX3Q7Cgp0eXBlZGVmIHVsb25nX3QgZGV2X3Q7
CgoKCgoKdHlwZWRlZiB1bG9uZ190IG5saW5rX3Q7CnR5cGVkZWYgbG9uZyBwaWRfdDsKIyA0ODUg
Ii91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjkvMy4yLjIvaW5jbHVk
ZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYgbG9uZyB0aW1lX3Q7CgoKCgp0eXBlZGVmIGxvbmcg
Y2xvY2tfdDsKCgoKCnR5cGVkZWYgaW50IGNsb2NraWRfdDsKCgoKCnR5cGVkZWYgaW50IHRpbWVy
X3Q7CgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1bmNoYXI7CnR5cGVkZWYgdW5zaWduZWQg
c2hvcnQgdXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50Owp0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgdWxvbmc7CiMgNTYxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xh
cmlzMi45LzMuMi4yL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVkIGNo
YXIgdV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVfc2hvcnQ7CnR5cGVkZWYgdW5zaWdu
ZWQgaW50IHVfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdV9sb25nOwp0eXBlZGVmIHN0cnVj
dCBfcXVhZCB7IGludCB2YWxbMl07IH0gcXVhZF90Owp0eXBlZGVmIHF1YWRfdCBxdWFkOwoKCgoK
CgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDEgMyA0CiMgMTUgIi91c3IvaW5jbHVk
ZS9zeXMvc2VsZWN0LmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMpc2VsZWN0LmgJMS4xNwkwMS8w
OC8xNSBTTUkiIAoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMSAzIDQKIyAyMiAi
L3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMpdGltZS5oCTIu
NzAJMDIvMDEvMjggU01JIiAKIyA0OSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMgNApzdHJ1
Y3QgdGltZXZhbCB7CiAgICAgICAgdGltZV90IHR2X3NlYzsKICAgICAgICBzdXNlY29uZHNfdCB0
dl91c2VjOwp9OwojIDgyICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMyA0CnN0cnVjdCB0aW1l
em9uZSB7CiAgICAgICAgaW50IHR6X21pbnV0ZXN3ZXN0OwogICAgICAgIGludCB0el9kc3R0aW1l
Owp9OwojIDEwMCAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMgNAojIDEgIi91c3IvbG9jYWwv
bGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjkvMy4yLjIvaW5jbHVkZS9zeXMvdHlwZXMu
aCIgMSAzIDQKIyAxMDEgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAyIDMgNAojIDE1MyAiL3Vz
ci9pbmNsdWRlL3N5cy90aW1lLmgiIDMgNApzdHJ1Y3QgaXRpbWVydmFsIHsKICAgICAgICBzdHJ1
Y3QgdGltZXZhbCBpdF9pbnRlcnZhbDsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBpdF92YWx1ZTsK
fTsKIyAyMDEgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzIDQKdHlwZWRlZiBsb25nbG9uZ190
IGhydGltZV90OwojIDMxOSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMgNAppbnQgYWRqdGlt
ZShzdHJ1Y3QgdGltZXZhbCAqLCBzdHJ1Y3QgdGltZXZhbCAqKTsKIyAzMjkgIi91c3IvaW5jbHVk
ZS9zeXMvdGltZS5oIiAzIDQKaW50IGZ1dGltZXNhdChpbnQsIGNvbnN0IGNoYXIgKiwgY29uc3Qg
c3RydWN0IHRpbWV2YWwgKik7CiMgMzQwICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMyA0Cmlu
dCBnZXRpdGltZXIoaW50LCBzdHJ1Y3QgaXRpbWVydmFsICopOwppbnQgdXRpbWVzKGNvbnN0IGNo
YXIgKiwgY29uc3Qgc3RydWN0IHRpbWV2YWwgKik7CgppbnQgc2V0aXRpbWVyKGludCwgY29uc3Qg
c3RydWN0IGl0aW1lcnZhbCAqLCBzdHJ1Y3QgaXRpbWVydmFsICopOwojIDM3NyAiL3Vzci9pbmNs
dWRlL3N5cy90aW1lLmgiIDMgNAppbnQgc2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICosIHZv
aWQgKik7CgpocnRpbWVfdCBnZXRocnRpbWUodm9pZCk7CmhydGltZV90IGdldGhydnRpbWUodm9p
ZCk7CiMgMzk3ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMyA0CmludCBnZXR0aW1lb2ZkYXko
c3RydWN0IHRpbWV2YWwgKiwgdm9pZCAqKTsKIyA0MTggIi91c3IvaW5jbHVkZS9zeXMvdGltZS5o
IiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMgNAojIDE2ICIvdXNyL2luY2x1ZGUv
dGltZS5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgjKXRpbWUuaAkxLjM5CTk5LzA4LzEwIFNNSSIg
CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2lzby90aW1lX2lzby5oIiAxIDMgNAojIDI4ICIvdXNyL2lu
Y2x1ZGUvaXNvL3RpbWVfaXNvLmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMpdGltZV9pc28uaAkx
LjEJOTkvMDgvMDkgU01JIiAKIyA2OSAiL3Vzci9pbmNsdWRlL2lzby90aW1lX2lzby5oIiAzIDQK
c3RydWN0IHRtIHsKICAgICAgICBpbnQgdG1fc2VjOwogICAgICAgIGludCB0bV9taW47CiAgICAg
ICAgaW50IHRtX2hvdXI7CiAgICAgICAgaW50IHRtX21kYXk7CiAgICAgICAgaW50IHRtX21vbjsK
ICAgICAgICBpbnQgdG1feWVhcjsKICAgICAgICBpbnQgdG1fd2RheTsKICAgICAgICBpbnQgdG1f
eWRheTsKICAgICAgICBpbnQgdG1faXNkc3Q7Cn07CgoKCgpleHRlcm4gY2hhciAqYXNjdGltZShj
b25zdCBzdHJ1Y3QgdG0gKik7CmV4dGVybiBjbG9ja190IGNsb2NrKHZvaWQpOwpleHRlcm4gY2hh
ciAqY3RpbWUoY29uc3QgdGltZV90ICopOwpleHRlcm4gZG91YmxlIGRpZmZ0aW1lKHRpbWVfdCwg
dGltZV90KTsKZXh0ZXJuIHN0cnVjdCB0bSAqZ210aW1lKGNvbnN0IHRpbWVfdCAqKTsKZXh0ZXJu
IHN0cnVjdCB0bSAqbG9jYWx0aW1lKGNvbnN0IHRpbWVfdCAqKTsKZXh0ZXJuIHRpbWVfdCBta3Rp
bWUoc3RydWN0IHRtICopOwpleHRlcm4gdGltZV90IHRpbWUodGltZV90ICopOwpleHRlcm4gc2l6
ZV90IHN0cmZ0aW1lKGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIGNvbnN0IHN0cnVjdCB0
bSAqKTsKIyAyMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzIDQKIyA2MCAiL3Vzci9pbmNsdWRl
L3RpbWUuaCIgMyA0CmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZV9yKGNvbnN0IHRpbWVfdCAqLCBz
dHJ1Y3QgdG0gKik7CmV4dGVybiBzdHJ1Y3QgdG0gKmxvY2FsdGltZV9yKGNvbnN0IHRpbWVfdCAq
LCBzdHJ1Y3QgdG0gKik7CgoKCgoKZXh0ZXJuIGNoYXIgKnN0cnB0aW1lKGNvbnN0IGNoYXIgKiwg
Y29uc3QgY2hhciAqLCBzdHJ1Y3QgdG0gKik7CiMgODMgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMg
NAojIDEgIi91c3IvaW5jbHVkZS9zeXMvdGltZV9pbXBsLmgiIDEgMyA0CiMgMTkgIi91c3IvaW5j
bHVkZS9zeXMvdGltZV9pbXBsLmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMpdGltZV9pbXBsLmgJ
MS43CTAxLzA5LzA2IFNNSSIKIyAzOCAiL3Vzci9pbmNsdWRlL3N5cy90aW1lX2ltcGwuaCIgMyA0
CnR5cGVkZWYgc3RydWN0IHRpbWVzcGVjIHsKICAgICAgICB0aW1lX3QgdHZfc2VjOwogICAgICAg
IGxvbmcgdHZfbnNlYzsKfSB0aW1lc3BlY190OwojIDYyICIvdXNyL2luY2x1ZGUvc3lzL3RpbWVf
aW1wbC5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QgdGltZXNwZWMgdGltZXN0cnVjX3Q7CiMgNzcgIi91
c3IvaW5jbHVkZS9zeXMvdGltZV9pbXBsLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCBpdGltZXJzcGVj
IHsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgaXRfaW50ZXJ2YWw7CiAgICAgICAgc3RydWN0IHRp
bWVzcGVjIGl0X3ZhbHVlOwp9IGl0aW1lcnNwZWNfdDsKIyA4NCAiL3Vzci9pbmNsdWRlL3RpbWUu
aCIgMiAzIDQKIyA5OCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CnVuaW9uIHNpZ3ZhbCB7CiAg
ICAgICAgaW50IHNpdmFsX2ludDsKICAgICAgICB2b2lkICpzaXZhbF9wdHI7Cn07CgoKCgpzdHJ1
Y3Qgc2lnZXZlbnQgewogICAgICAgIGludCBzaWdldl9ub3RpZnk7CiAgICAgICAgaW50IHNpZ2V2
X3NpZ25vOwogICAgICAgIHVuaW9uIHNpZ3ZhbCBzaWdldl92YWx1ZTsKICAgICAgICB2b2lkICgq
c2lnZXZfbm90aWZ5X2Z1bmN0aW9uKSh1bmlvbiBzaWd2YWwpOwogICAgICAgIHB0aHJlYWRfYXR0
cl90ICpzaWdldl9ub3RpZnlfYXR0cmlidXRlczsKICAgICAgICBpbnQgX19zaWdldl9wYWQyOwp9
OwoKCmV4dGVybiBpbnQgY2xvY2tfZ2V0cmVzKGNsb2NraWRfdCwgc3RydWN0IHRpbWVzcGVjICop
OwpleHRlcm4gaW50IGNsb2NrX2dldHRpbWUoY2xvY2tpZF90LCBzdHJ1Y3QgdGltZXNwZWMgKik7
CmV4dGVybiBpbnQgY2xvY2tfc2V0dGltZShjbG9ja2lkX3QsIGNvbnN0IHN0cnVjdCB0aW1lc3Bl
YyAqKTsKZXh0ZXJuIGludCB0aW1lcl9jcmVhdGUoY2xvY2tpZF90LCBzdHJ1Y3Qgc2lnZXZlbnQg
KiwgdGltZXJfdCAqKTsKZXh0ZXJuIGludCB0aW1lcl9kZWxldGUodGltZXJfdCk7CmV4dGVybiBp
bnQgdGltZXJfZ2V0b3ZlcnJ1bih0aW1lcl90KTsKZXh0ZXJuIGludCB0aW1lcl9nZXR0aW1lKHRp
bWVyX3QsIHN0cnVjdCBpdGltZXJzcGVjICopOwpleHRlcm4gaW50IHRpbWVyX3NldHRpbWUodGlt
ZXJfdCwgaW50LCBjb25zdCBzdHJ1Y3QgaXRpbWVyc3BlYyAqLAogICAgICAgICAgICAgICAgc3Ry
dWN0IGl0aW1lcnNwZWMgKik7CmV4dGVybiBpbnQgbmFub3NsZWVwKGNvbnN0IHN0cnVjdCB0aW1l
c3BlYyAqLCBzdHJ1Y3QgdGltZXNwZWMgKik7CgoKCgpleHRlcm4gdm9pZCB0enNldCh2b2lkKTsK
CmV4dGVybiBjaGFyICp0em5hbWVbMl07CgoKZXh0ZXJuIGxvbmcgX3N5c2NvbmYoaW50KTsKCgoK
CgoKZXh0ZXJuIGxvbmcgdGltZXpvbmU7CmV4dGVybiBpbnQgZGF5bGlnaHQ7CiMgMTU2ICIvdXNy
L2luY2x1ZGUvdGltZS5oIiAzIDQKZXh0ZXJuIHN0cnVjdCB0bSAqZ2V0ZGF0ZShjb25zdCBjaGFy
ICopOwoKCgoKZXh0ZXJuIGludCAqX2dldGRhdGVfZXJyX2FkZHIodm9pZCk7CiMgMjUwICIvdXNy
L2luY2x1ZGUvdGltZS5oIiAzIDQKZXh0ZXJuIGNoYXIgKmFzY3RpbWVfcihjb25zdCBzdHJ1Y3Qg
dG0gKiwgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKmN0aW1lX3IoY29uc3QgdGltZV90ICosIGNoYXIg
Kik7CiNwcmFnbWEgcmVkZWZpbmVfZXh0bmFtZSBjdGltZV9yIF9fcG9zaXhfY3RpbWVfcgojcHJh
Z21hIHJlZGVmaW5lX2V4dG5hbWUgYXNjdGltZV9yIF9fcG9zaXhfYXNjdGltZV9yCiMgNDE5ICIv
dXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMiAzIDQKIyA0MzEgIi91c3IvaW5jbHVkZS9zeXMvdGlt
ZS5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAxIDMgNAojIDQzMiAiL3Vz
ci9pbmNsdWRlL3N5cy90aW1lLmgiIDIgMyA0CiMgMjEgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0
LmgiIDIgMyA0CiMgNDggIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMgNAp0eXBlZGVmIGxv
bmcgZmRfbWFzazsKCnR5cGVkZWYgbG9uZyBmZHNfbWFzazsKIyA3NiAiL3Vzci9pbmNsdWRlL3N5
cy9zZWxlY3QuaCIgMyA0CnR5cGVkZWYgc3RydWN0IGZkX3NldCB7CgoKCiAgICAgICAgbG9uZyBm
ZHNfYml0c1soKCgxMDI0KSsoKChzaXplb2YgKGZkc19tYXNrKSAqIDgpKS0xKSkvKChzaXplb2Yg
KGZkc19tYXNrKSAqIDgpKSldOwp9IGZkX3NldDsKIyAxMDAgIi91c3IvaW5jbHVkZS9zeXMvc2Vs
ZWN0LmgiIDMgNApleHRlcm4gaW50IHNlbGVjdChpbnQsIGZkX3NldCAqLCBmZF9zZXQgKiwgZmRf
c2V0ICosIHN0cnVjdCB0aW1ldmFsICopOwojIDU3NCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9z
cGFyYy1zdW4tc29sYXJpczIuOS8zLjIuMi9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMgNAojIDIx
ICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMiAzIDQKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lz
L3Jlc291cmNlLmgiIDEgMyA0CiMgMTYgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMyA0
CiNwcmFnbWEgaWRlbnQgIkAoIylyZXNvdXJjZS5oCTEuMjcJMDEvMDQvMDUgU01JIiAKIyA3NyAi
L3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5oIiAzIDQKdHlwZWRlZiB1X2xvbmdsb25nX3Qgcmxp
bV90OwojIDEwNCAiL3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5oIiAzIDQKc3RydWN0IHJsaW1p
dCB7CiAgICAgICAgcmxpbV90IHJsaW1fY3VyOwogICAgICAgIHJsaW1fdCBybGltX21heDsKfTsK
CgoKCnR5cGVkZWYgdV9sb25nbG9uZ190IHJsaW02NF90OwoKCgoKCnN0cnVjdCBybGltaXQ2NCB7
CiAgICAgICAgcmxpbTY0X3QgcmxpbV9jdXI7CiAgICAgICAgcmxpbTY0X3QgcmxpbV9tYXg7Cn07
CiMgMTQxICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291cmNlLmgiIDMgNApzdHJ1Y3QgcnVzYWdlIHsK
ICAgICAgICBzdHJ1Y3QgdGltZXZhbCBydV91dGltZTsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBy
dV9zdGltZTsKICAgICAgICBsb25nIHJ1X21heHJzczsKICAgICAgICBsb25nIHJ1X2l4cnNzOwog
ICAgICAgIGxvbmcgcnVfaWRyc3M7CiAgICAgICAgbG9uZyBydV9pc3JzczsKICAgICAgICBsb25n
IHJ1X21pbmZsdDsKICAgICAgICBsb25nIHJ1X21hamZsdDsKICAgICAgICBsb25nIHJ1X25zd2Fw
OwogICAgICAgIGxvbmcgcnVfaW5ibG9jazsKICAgICAgICBsb25nIHJ1X291YmxvY2s7CiAgICAg
ICAgbG9uZyBydV9tc2dzbmQ7CiAgICAgICAgbG9uZyBydV9tc2dyY3Y7CiAgICAgICAgbG9uZyBy
dV9uc2lnbmFsczsKICAgICAgICBsb25nIHJ1X252Y3N3OwogICAgICAgIGxvbmcgcnVfbml2Y3N3
Owp9OwoKCgoKCgojcHJhZ21hIHJlZGVmaW5lX2V4dG5hbWUgc2V0cmxpbWl0IHNldHJsaW1pdDY0
CiNwcmFnbWEgcmVkZWZpbmVfZXh0bmFtZSBnZXRybGltaXQgZ2V0cmxpbWl0NjQKIyAxOTEgIi91
c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMyA0CmV4dGVybiBpbnQgc2V0cmxpbWl0KGludCwg
Y29uc3Qgc3RydWN0IHJsaW1pdCAqKTsKZXh0ZXJuIGludCBnZXRybGltaXQoaW50LCBzdHJ1Y3Qg
cmxpbWl0ICopOwoKCgoKZXh0ZXJuIGludCBzZXRybGltaXQ2NChpbnQsIGNvbnN0IHN0cnVjdCBy
bGltaXQ2NCAqKTsKZXh0ZXJuIGludCBnZXRybGltaXQ2NChpbnQsIHN0cnVjdCBybGltaXQ2NCAq
KTsKCgpleHRlcm4gaW50IGdldHByaW9yaXR5KGludCwgaWRfdCk7CmV4dGVybiBpbnQgc2V0cHJp
b3JpdHkoaW50LCBpZF90LCBpbnQpOwpleHRlcm4gaW50IGdldHJ1c2FnZShpbnQsIHN0cnVjdCBy
dXNhZ2UgKik7CiMgMjUgIi91c3IvaW5jbHVkZS9zeXMvd2FpdC5oIiAyIDMgNAojIDEgIi91c3Iv
aW5jbHVkZS9zeXMvc2lnaW5mby5oIiAxIDMgNAojIDE2ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ2lu
Zm8uaCIgMyA0CiNwcmFnbWEgaWRlbnQgIkAoIylzaWdpbmZvLmgJMS41NQkwMS8wNC8wNSBTTUki
IAojIDEyNyAiL3Vzci9pbmNsdWRlL3N5cy9zaWdpbmZvLmgiIDMgNAojIDEgIi91c3IvaW5jbHVk
ZS9zeXMvbWFjaHNpZy5oIiAxIDMgNAojIDE2ICIvdXNyL2luY2x1ZGUvc3lzL21hY2hzaWcuaCIg
MyA0CiNwcmFnbWEgaWRlbnQgIkAoIyltYWNoc2lnLmgJMS4xNQk5OS8wOC8xNSBTTUkiCiMgMTI4
ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ2luZm8uaCIgMiAzIDQKIyAyMjIgIi91c3IvaW5jbHVkZS9z
eXMvc2lnaW5mby5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3Qgc2lnaW5mbyB7CgoKCiAgICAgICAgaW50
IHNpX3NpZ25vOwogICAgICAgIGludCBzaV9jb2RlOwogICAgICAgIGludCBzaV9lcnJubzsKCgoK
ICAgICAgICB1bmlvbiB7CgogICAgICAgICAgICAgICAgaW50IF9fcGFkWygoMTI4IC8gc2l6ZW9m
IChpbnQpKSAtIDMpXTsKCiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAg
ICAgICAgICBwaWRfdCBfX3BpZDsKICAgICAgICAgICAgICAgICAgICAgICAgdW5pb24gewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aWRfdCBfX3VpZDsKCgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5pb24gc2lndmFsIF9fdmFsdWU7CgoKCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSBfX2tpbGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb2Nr
X3QgX191dGltZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBf
X3N0YXR1czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrX3Qg
X19zdGltZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF9fY2xkOwogICAgICAg
ICAgICAgICAgICAgICAgICB9IF9fcGRhdGE7CiAgICAgICAgICAgICAgICB9IF9fcHJvYzsKCiAg
ICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpfX2Fk
ZHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX3RyYXBubzsKICAgICAgICAgICAgICAg
ICAgICAgICAgY2FkZHJfdCBfX3BjOwogICAgICAgICAgICAgICAgfSBfX2ZhdWx0OwoKICAgICAg
ICAgICAgICAgIHN0cnVjdCB7CgogICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19mZDsKICAg
ICAgICAgICAgICAgICAgICAgICAgbG9uZyBfX2JhbmQ7CiAgICAgICAgICAgICAgICB9IF9fZmls
ZTsKCiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBjYWRk
cl90IF9fZmFkZHI7CgoKICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0cnVjX3QgX190c3Rh
bXA7CgoKCiAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0IF9fc3lzY2FsbDsKICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciBfX25zeXNhcmc7CiAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXIgX19mYXVsdDsKICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBfX3N5c2FyZ1s4XTsKICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IF9fbXN0YXRlWzEwXTsKICAgICAgICAgICAgICAgIH0g
X19wcm9mOwoKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAg
IGludDMyX3QgX19lbnRpdHk7CiAgICAgICAgICAgICAgICB9IF9fcmN0bDsKICAgICAgICB9IF9f
ZGF0YTsKCn0gc2lnaW5mb190OwojIDM2MiAiL3Vzci9pbmNsdWRlL3N5cy9zaWdpbmZvLmgiIDMg
NAp0eXBlZGVmIHN0cnVjdCBrX3NpZ2luZm8gewogICAgICAgIGludCBzaV9zaWdubzsKICAgICAg
ICBpbnQgc2lfY29kZTsKICAgICAgICBpbnQgc2lfZXJybm87CgoKCiAgICAgICAgdW5pb24gewog
ICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgcGlkX3QgX19w
aWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWlkX3QgX191aWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bmlvbiBzaWd2YWwgX192YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF9f
a2lsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2tfdCBfX3V0aW1lOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fc3RhdHVzOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2tfdCBfX3N0aW1lOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0gX19jbGQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gX19w
ZGF0YTsKICAgICAgICAgICAgICAgIH0gX19wcm9jOwoKICAgICAgICAgICAgICAgIHN0cnVjdCB7
CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKl9fYWRkcjsKICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IF9fdHJhcG5vOwogICAgICAgICAgICAgICAgICAgICAgICBjYWRkcl90IF9fcGM7
CiAgICAgICAgICAgICAgICB9IF9fZmF1bHQ7CgogICAgICAgICAgICAgICAgc3RydWN0IHsKCiAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBfX2ZkOwogICAgICAgICAgICAgICAgICAgICAgICBs
b25nIF9fYmFuZDsKICAgICAgICAgICAgICAgIH0gX19maWxlOwoKICAgICAgICAgICAgICAgIHN0
cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhZGRyX3QgX19mYWRkcjsKCgoKICAgICAg
ICAgICAgICAgICAgICAgICAgdGltZXN0cnVjX3QgX190c3RhbXA7CgoKCiAgICAgICAgICAgICAg
ICAgICAgICAgIHNob3J0IF9fc3lzY2FsbDsKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBf
X25zeXNhcmc7CiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19mYXVsdDsKCgoKICAgICAg
ICAgICAgICAgIH0gX19wcm9mOwoKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGludDMyX3QgX19lbnRpdHk7CiAgICAgICAgICAgICAgICB9IF9fcmN0bDsK
CiAgICAgICAgfSBfX2RhdGE7Cgp9IGtfc2lnaW5mb190OwoKdHlwZWRlZiBzdHJ1Y3Qgc2lncXVl
dWUgewogICAgICAgIHN0cnVjdCBzaWdxdWV1ZSAqc3FfbmV4dDsKICAgICAgICBrX3NpZ2luZm9f
dCBzcV9pbmZvOwogICAgICAgIHZvaWQgKCpzcV9mdW5jKShzdHJ1Y3Qgc2lncXVldWUgKik7CiAg
ICAgICAgdm9pZCAqc3FfYmFja3B0cjsKCn0gc2lncXVldWVfdDsKIyAyNiAiL3Vzci9pbmNsdWRl
L3N5cy93YWl0LmgiIDIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9wcm9jc2V0LmgiIDEgMyA0
CiMgMTYgIi91c3IvaW5jbHVkZS9zeXMvcHJvY3NldC5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgj
KXByb2NzZXQuaAkxLjIwCTAwLzAxLzExIFNNSSIgCiMgNDEgIi91c3IvaW5jbHVkZS9zeXMvcHJv
Y3NldC5oIiAzIDQKdHlwZWRlZiBlbnVtCgogICAgICAgIGlkdHlwZQoKICAgICAgICAgICAgICAg
IHsKICAgICAgICBQX1BJRCwKICAgICAgICBQX1BQSUQsCiAgICAgICAgUF9QR0lELAoKICAgICAg
ICBQX1NJRCwKICAgICAgICBQX0NJRCwKICAgICAgICBQX1VJRCwKICAgICAgICBQX0dJRCwKICAg
ICAgICBQX0FMTCwKICAgICAgICBQX0xXUElELAogICAgICAgIFBfVEFTS0lELAogICAgICAgIFBf
UFJPSklECn0gaWR0eXBlX3Q7CiMgNjcgIi91c3IvaW5jbHVkZS9zeXMvcHJvY3NldC5oIiAzIDQK
dHlwZWRlZiBlbnVtIGlkb3AgewogICAgICAgIFBPUF9ESUZGLAoKCiAgICAgICAgUE9QX0FORCwK
CgogICAgICAgIFBPUF9PUiwKCgogICAgICAgIFBPUF9YT1IKCgp9IGlkb3BfdDsKCgoKCgoKCnR5
cGVkZWYgc3RydWN0IHByb2NzZXQgewogICAgICAgIGlkb3BfdCBwX29wOwoKCgoKICAgICAgICBp
ZHR5cGVfdCBwX2xpZHR5cGU7CgoKICAgICAgICBpZF90IHBfbGlkOwoKICAgICAgICBpZHR5cGVf
dCBwX3JpZHR5cGU7CgoKICAgICAgICBpZF90IHBfcmlkOwp9IHByb2NzZXRfdDsKIyAyNyAiL3Vz
ci9pbmNsdWRlL3N5cy93YWl0LmgiIDIgMyA0CiMgODYgIi91c3IvaW5jbHVkZS9zeXMvd2FpdC5o
IiAzIDQKZXh0ZXJuIHBpZF90IHdhaXQoaW50ICopOwpleHRlcm4gcGlkX3Qgd2FpdHBpZChwaWRf
dCwgaW50ICosIGludCk7CgoKZXh0ZXJuIGludCB3YWl0aWQoaWR0eXBlX3QsIGlkX3QsIHNpZ2lu
Zm9fdCAqLCBpbnQpOwpleHRlcm4gcGlkX3Qgd2FpdDMoaW50ICosIGludCwgc3RydWN0IHJ1c2Fn
ZSAqKTsKCgoKCmV4dGVybiBwaWRfdCB3YWl0NChwaWRfdCwgaW50ICosIGludCwgc3RydWN0IHJ1
c2FnZSAqKTsKIyAyMyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMgNAojIDY4ICIvdXNyL2lu
Y2x1ZGUvc3RkbGliLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgbG9uZyBsb25nIHF1
b3Q7CiAgICAgICAgbG9uZyBsb25nIHJlbTsKfSBsbGRpdl90OwojIDg5ICIvdXNyL2luY2x1ZGUv
c3RkbGliLmgiIDMgNAojcHJhZ21hIHJlZGVmaW5lX2V4dG5hbWUgbWtzdGVtcCBta3N0ZW1wNjQK
IyAxMDkgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBpbnQgcmFuZF9yKHVuc2ln
bmVkIGludCAqKTsKCgpleHRlcm4gdm9pZCBfZXhpdGhhbmRsZSh2b2lkKTsKCgoKCmV4dGVybiBk
b3VibGUgZHJhbmQ0OCh2b2lkKTsKZXh0ZXJuIGRvdWJsZSBlcmFuZDQ4KHVuc2lnbmVkIHNob3J0
ICopOwpleHRlcm4gbG9uZyBqcmFuZDQ4KHVuc2lnbmVkIHNob3J0ICopOwpleHRlcm4gdm9pZCBs
Y29uZzQ4KHVuc2lnbmVkIHNob3J0ICopOwpleHRlcm4gbG9uZyBscmFuZDQ4KHZvaWQpOwpleHRl
cm4gbG9uZyBtcmFuZDQ4KHZvaWQpOwpleHRlcm4gbG9uZyBucmFuZDQ4KHVuc2lnbmVkIHNob3J0
ICopOwpleHRlcm4gdW5zaWduZWQgc2hvcnQgKnNlZWQ0OCh1bnNpZ25lZCBzaG9ydCAqKTsKZXh0
ZXJuIHZvaWQgc3JhbmQ0OChsb25nKTsKZXh0ZXJuIGludCBwdXRlbnYoY2hhciAqKTsKZXh0ZXJu
IHZvaWQgc2V0a2V5KGNvbnN0IGNoYXIgKik7CiMgMTUwICIvdXNyL2luY2x1ZGUvc3RkbGliLmgi
IDMgNApleHRlcm4gaW50IG1rc3RlbXAoY2hhciAqKTsKCgoKCmV4dGVybiBpbnQgbWtzdGVtcDY0
KGNoYXIgKik7CgoKCgoKZXh0ZXJuIGxvbmcgYTY0bChjb25zdCBjaGFyICopOwpleHRlcm4gY2hh
ciAqZWN2dChkb3VibGUsIGludCwgaW50ICosIGludCAqKTsKZXh0ZXJuIGNoYXIgKmZjdnQoZG91
YmxlLCBpbnQsIGludCAqLCBpbnQgKik7CmV4dGVybiBjaGFyICpnY3Z0KGRvdWJsZSwgaW50LCBj
aGFyICopOwpleHRlcm4gaW50IGdldHN1Ym9wdChjaGFyICoqLCBjaGFyICpjb25zdCAqLCBjaGFy
ICoqKTsKZXh0ZXJuIGludCBncmFudHB0KGludCk7CmV4dGVybiBjaGFyICppbml0c3RhdGUodW5z
aWduZWQsIGNoYXIgKiwgc2l6ZV90KTsKZXh0ZXJuIGNoYXIgKmw2NGEobG9uZyk7CmV4dGVybiBj
aGFyICpta3RlbXAoY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnB0c25hbWUoaW50KTsKZXh0ZXJuIGxv
bmcgcmFuZG9tKHZvaWQpOwpleHRlcm4gY2hhciAqcmVhbHBhdGgoY29uc3QgY2hhciAqLCBjaGFy
ICopOwpleHRlcm4gY2hhciAqc2V0c3RhdGUoY29uc3QgY2hhciAqKTsKZXh0ZXJuIHZvaWQgc3Jh
bmRvbSh1bnNpZ25lZCk7CmV4dGVybiBpbnQgdHR5c2xvdCh2b2lkKTsKZXh0ZXJuIGludCB1bmxv
Y2twdChpbnQpOwpleHRlcm4gdm9pZCAqdmFsbG9jKHNpemVfdCk7CgoKCgpleHRlcm4gdm9pZCBj
bG9zZWZyb20oaW50KTsKZXh0ZXJuIGludCBkdXAyKGludCwgaW50KTsKZXh0ZXJuIGludCBmZHdh
bGsoaW50ICgqKSh2b2lkICosIGludCksIHZvaWQgKik7CmV4dGVybiBjaGFyICpxZWN2dChsb25n
IGRvdWJsZSwgaW50LCBpbnQgKiwgaW50ICopOwpleHRlcm4gY2hhciAqcWZjdnQobG9uZyBkb3Vi
bGUsIGludCwgaW50ICosIGludCAqKTsKZXh0ZXJuIGNoYXIgKnFnY3Z0KGxvbmcgZG91YmxlLCBp
bnQsIGNoYXIgKik7CmV4dGVybiBjaGFyICpnZXRjd2QoY2hhciAqLCBzaXplX3QpOwpleHRlcm4g
Y29uc3QgY2hhciAqZ2V0ZXhlY25hbWUodm9pZCk7CmV4dGVybiBjaGFyICpnZXRsb2dpbih2b2lk
KTsKZXh0ZXJuIGludCBnZXRvcHQoaW50LCBjaGFyICpjb25zdCAqLCBjb25zdCBjaGFyICopOwpl
eHRlcm4gY2hhciAqb3B0YXJnOwpleHRlcm4gaW50IG9wdGluZCwgb3B0ZXJyLCBvcHRvcHQ7CmV4
dGVybiBjaGFyICpnZXRwYXNzKGNvbnN0IGNoYXIgKik7CmV4dGVybiBjaGFyICpnZXRwYXNzcGhy
YXNlKGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgZ2V0cHcodWlkX3QsIGNoYXIgKik7CmV4dGVy
biBpbnQgaXNhdHR5KGludCk7CmV4dGVybiB2b2lkICptZW1hbGlnbihzaXplX3QsIHNpemVfdCk7
CmV4dGVybiBjaGFyICp0dHluYW1lKGludCk7CgoKZXh0ZXJuIGxvbmcgbG9uZyBhdG9sbChjb25z
dCBjaGFyICopOwpleHRlcm4gbG9uZyBsb25nIGxsYWJzKGxvbmcgbG9uZyk7CmV4dGVybiBsbGRp
dl90IGxsZGl2KGxvbmcgbG9uZywgbG9uZyBsb25nKTsKZXh0ZXJuIGNoYXIgKmxsdG9zdHIobG9u
ZyBsb25nLCBjaGFyICopOwpleHRlcm4gbG9uZyBsb25nIHN0cnRvbGwoY29uc3QgY2hhciAqLCBj
aGFyICoqLCBpbnQpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIHN0cnRvdWxsKGNvbnN0IGNo
YXIgKiwgY2hhciAqKiwgaW50KTsKZXh0ZXJuIGNoYXIgKnVsbHRvc3RyKHVuc2lnbmVkIGxvbmcg
bG9uZywgY2hhciAqKTsKIyAxMDQgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGlj
c01hZ2ljay9tYWdpY2svc3R1ZGlvLmgiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAx
IDMgNAojIDE2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMp
dW5pc3RkLmgJMS42MAkwMS8wNy8yOSBTTUkiIAoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3Vu
aXN0ZC5oIiAxIDMgNAojIDI1ICIvdXNyL2luY2x1ZGUvc3lzL3VuaXN0ZC5oIiAzIDQKI3ByYWdt
YSBpZGVudCAiQCgjKXVuaXN0ZC5oCTEuMzkJMDEvMDcvMjkgU01JIiAKIyAyMiAiL3Vzci9pbmNs
dWRlL3VuaXN0ZC5oIiAyIDMgNAojIDEzMCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKI3By
YWdtYSByZWRlZmluZV9leHRuYW1lIGZ0cnVuY2F0ZSBmdHJ1bmNhdGU2NAojcHJhZ21hIHJlZGVm
aW5lX2V4dG5hbWUgbHNlZWsgbHNlZWs2NAojcHJhZ21hIHJlZGVmaW5lX2V4dG5hbWUgcHJlYWQg
cHJlYWQ2NAojcHJhZ21hIHJlZGVmaW5lX2V4dG5hbWUgcHdyaXRlIHB3cml0ZTY0CiNwcmFnbWEg
cmVkZWZpbmVfZXh0bmFtZSB0cnVuY2F0ZSB0cnVuY2F0ZTY0CiNwcmFnbWEgcmVkZWZpbmVfZXh0
bmFtZSBsb2NrZiBsb2NrZjY0CiNwcmFnbWEgcmVkZWZpbmVfZXh0bmFtZSB0ZWxsIHRlbGw2NAoj
IDE3MSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIGludCBhY2Nlc3MoY29uc3Qg
Y2hhciAqLCBpbnQpOwoKCmV4dGVybiBpbnQgYWNjdChjb25zdCBjaGFyICopOwoKZXh0ZXJuIHVu
c2lnbmVkIGFsYXJtKHVuc2lnbmVkKTsKCgpleHRlcm4gaW50IGJyayh2b2lkICopOwoKZXh0ZXJu
IGludCBjaGRpcihjb25zdCBjaGFyICopOwpleHRlcm4gaW50IGNob3duKGNvbnN0IGNoYXIgKiwg
dWlkX3QsIGdpZF90KTsKCgpleHRlcm4gaW50IGNocm9vdChjb25zdCBjaGFyICopOwoKZXh0ZXJu
IGludCBjbG9zZShpbnQpOwoKCmV4dGVybiBzaXplX3QgY29uZnN0cihpbnQsIGNoYXIgKiwgc2l6
ZV90KTsKZXh0ZXJuIGNoYXIgKmNyeXB0KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKCgoK
ZXh0ZXJuIGNoYXIgKmN0ZXJtaWQoY2hhciAqKTsKCgpleHRlcm4gY2hhciAqY3Rlcm1pZF9yKGNo
YXIgKik7CgpleHRlcm4gY2hhciAqY3VzZXJpZChjaGFyICopOwpleHRlcm4gaW50IGR1cChpbnQp
OwpleHRlcm4gaW50IGR1cDIoaW50LCBpbnQpOwoKCmV4dGVybiB2b2lkIGVuY3J5cHQoY2hhciAq
LCBpbnQpOwoKZXh0ZXJuIGludCBleGVjbChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4u
KTsKZXh0ZXJuIGludCBleGVjbGUoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLik7CmV4
dGVybiBpbnQgZXhlY2xwKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwpleHRlcm4g
aW50IGV4ZWN2KGNvbnN0IGNoYXIgKiwgY2hhciAqY29uc3QgKik7CmV4dGVybiBpbnQgZXhlY3Zl
KGNvbnN0IGNoYXIgKiwgY2hhciAqY29uc3QgKiwgY2hhciAqY29uc3QgKik7CmV4dGVybiBpbnQg
ZXhlY3ZwKGNvbnN0IGNoYXIgKiwgY2hhciAqY29uc3QgKik7CmV4dGVybiB2b2lkIF9leGl0KGlu
dCk7CgoKCgoKCgpleHRlcm4gaW50IGZhdHRhY2goaW50LCBjb25zdCBjaGFyICopOwoKCgpleHRl
cm4gaW50IGZjaGRpcihpbnQpOwpleHRlcm4gaW50IGZjaG93bihpbnQsIHVpZF90LCBnaWRfdCk7
CgoKZXh0ZXJuIGludCBmY2hvd25hdChpbnQsIGNvbnN0IGNoYXIgKiwgdWlkX3QsIGdpZF90LCBp
bnQpOwoKCgoKZXh0ZXJuIGludCBmY2hyb290KGludCk7CgoKCmV4dGVybiBpbnQgZmRhdGFzeW5j
KGludCk7CiMgMjQ3ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gaW50IGZkZXRh
Y2goY29uc3QgY2hhciAqKTsKCmV4dGVybiBwaWRfdCBmb3JrKHZvaWQpOwoKCmV4dGVybiBwaWRf
dCBmb3JrMSh2b2lkKTsKCmV4dGVybiBsb25nIGZwYXRoY29uZihpbnQsIGludCk7CgoKZXh0ZXJu
IGludCBmc3luYyhpbnQpOwoKCgoKZXh0ZXJuIGludCBmdHJ1bmNhdGUoaW50LCBvZmZfdCk7Cgpl
eHRlcm4gY2hhciAqZ2V0Y3dkKGNoYXIgKiwgc2l6ZV90KTsKCgpleHRlcm4gaW50IGdldGR0YWJs
ZXNpemUodm9pZCk7CgpleHRlcm4gZ2lkX3QgZ2V0ZWdpZCh2b2lkKTsKZXh0ZXJuIHVpZF90IGdl
dGV1aWQodm9pZCk7CmV4dGVybiBnaWRfdCBnZXRnaWQodm9pZCk7CmV4dGVybiBpbnQgZ2V0Z3Jv
dXBzKGludCwgZ2lkX3QgKik7CgoKZXh0ZXJuIGxvbmcgZ2V0aG9zdGlkKHZvaWQpOwoKCmV4dGVy
biBpbnQgZ2V0aG9zdG5hbWUoY2hhciAqLCBzaXplX3QpOwoKCgoKZXh0ZXJuIGNoYXIgKmdldGxv
Z2luKHZvaWQpOwoKCmV4dGVybiBpbnQgZ2V0b3B0KGludCwgY2hhciAqY29uc3QgKiwgY29uc3Qg
Y2hhciAqKTsKZXh0ZXJuIGNoYXIgKm9wdGFyZzsKZXh0ZXJuIGludCBvcHRlcnIsIG9wdGluZCwg
b3B0b3B0OwpleHRlcm4gY2hhciAqZ2V0cGFzcyhjb25zdCBjaGFyICopOwoKCgpleHRlcm4gaW50
IGdldHBhZ2VzaXplKHZvaWQpOwpleHRlcm4gcGlkX3QgZ2V0cGdpZChwaWRfdCk7CgpleHRlcm4g
cGlkX3QgZ2V0cGlkKHZvaWQpOwpleHRlcm4gcGlkX3QgZ2V0cHBpZCh2b2lkKTsKZXh0ZXJuIHBp
ZF90IGdldHBncnAodm9pZCk7CgoKY2hhciAqZ2V0dHh0KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh
ciAqKTsKCgoKZXh0ZXJuIHBpZF90IGdldHNpZChwaWRfdCk7CgpleHRlcm4gdWlkX3QgZ2V0dWlk
KHZvaWQpOwoKCmV4dGVybiBjaGFyICpnZXR3ZChjaGFyICopOwojIDMxOSAiL3Vzci9pbmNsdWRl
L3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIGludCBpb2N0bChpbnQsIGludCwgLi4uKTsKCgoKZXh0ZXJu
IGludCBpc2FleGVjKGNvbnN0IGNoYXIgKiwgY2hhciAqY29uc3QgKiwgY2hhciAqY29uc3QgKik7
CmV4dGVybiBpbnQgaXNzZXR1Z2lkKHZvaWQpOwoKZXh0ZXJuIGludCBpc2F0dHkoaW50KTsKZXh0
ZXJuIGludCBsaW5rKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKCgpleHRlcm4gaW50IGxj
aG93bihjb25zdCBjaGFyICosIHVpZF90LCBnaWRfdCk7CgoKCgpleHRlcm4gaW50IGxvY2tmKGlu
dCwgaW50LCBvZmZfdCk7CgoKCmV4dGVybiBpbnQgcmVhZGxpbmsoY29uc3QgY2hhciAqLCBjaGFy
ICosIHNpemVfdCk7CgpleHRlcm4gb2ZmX3QgbHNlZWsoaW50LCBvZmZfdCwgaW50KTsKCgpleHRl
cm4gaW50IG5pY2UoaW50KTsKCmV4dGVybiBsb25nIHBhdGhjb25mKGNvbnN0IGNoYXIgKiwgaW50
KTsKZXh0ZXJuIGludCBwYXVzZSh2b2lkKTsKZXh0ZXJuIGludCBwaXBlKGludCAqKTsKCgpleHRl
cm4gb2Zmc2V0X3QgbGxzZWVrKGludCwgb2Zmc2V0X3QsIGludCk7CgoKCgpleHRlcm4gb2ZmX3Qg
dGVsbChpbnQpOwoKCgpleHRlcm4gaW50IG1pbmNvcmUoY2FkZHJfdCwgc2l6ZV90LCBjaGFyICop
OwoKCgoKZXh0ZXJuIHNzaXplX3QgcHJlYWQoaW50LCB2b2lkICosIHNpemVfdCwgb2ZmX3QpOwoK
CgpleHRlcm4gdm9pZCBwcm9maWwodW5zaWduZWQgc2hvcnQgKiwgc2l6ZV90LCB1bnNpZ25lZCBs
b25nLCB1bnNpZ25lZCBpbnQpOwoKCgpleHRlcm4gaW50IHB0aHJlYWRfYXRmb3JrKHZvaWQgKCop
ICh2b2lkKSwgdm9pZCAoKikgKHZvaWQpLCB2b2lkICgqKSAodm9pZCkpOwoKCgpleHRlcm4gbG9u
ZyBwdHJhY2UoaW50LCBwaWRfdCwgbG9uZywgbG9uZyk7CgoKCgpleHRlcm4gc3NpemVfdCBwd3Jp
dGUoaW50LCBjb25zdCB2b2lkICosIHNpemVfdCwgb2ZmX3QpOwoKZXh0ZXJuIHNzaXplX3QgcmVh
ZChpbnQsIHZvaWQgKiwgc2l6ZV90KTsKCgpleHRlcm4gaW50IHJlbmFtZShjb25zdCBjaGFyICos
IGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIGludCByZW5hbWVhdChpbnQsIGNvbnN0IGNoYXIgKiwg
aW50LCBjb25zdCBjaGFyICopOwoKCgoKZXh0ZXJuIGludCByZXNvbHZlcGF0aChjb25zdCBjaGFy
ICosIGNoYXIgKiwgc2l6ZV90KTsKCmV4dGVybiBpbnQgcm1kaXIoY29uc3QgY2hhciAqKTsKCgpl
eHRlcm4gdm9pZCAqc2JyayhpbnRwdHJfdCk7CgpleHRlcm4gaW50IHNldGdpZChnaWRfdCk7CgoK
ZXh0ZXJuIGludCBzZXRlZ2lkKGdpZF90KTsKCgoKZXh0ZXJuIGludCBzZXRncm91cHMoaW50LCBj
b25zdCBnaWRfdCAqKTsKCmV4dGVybiBpbnQgc2V0cGdpZChwaWRfdCwgcGlkX3QpOwoKCmV4dGVy
biBwaWRfdCBzZXRwZ3JwKHZvaWQpOwpleHRlcm4gaW50IHNldHJlZ2lkKGdpZF90LCBnaWRfdCk7
CmV4dGVybiBpbnQgc2V0cmV1aWQodWlkX3QsIHVpZF90KTsKCmV4dGVybiBwaWRfdCBzZXRzaWQo
dm9pZCk7CmV4dGVybiBpbnQgc2V0dWlkKHVpZF90KTsKCgpleHRlcm4gaW50IHNldGV1aWQodWlk
X3QpOwoKZXh0ZXJuIHVuc2lnbmVkIHNsZWVwKHVuc2lnbmVkKTsKCgpleHRlcm4gaW50IHN0aW1l
KGNvbnN0IHRpbWVfdCAqKTsKCgoKZXh0ZXJuIHZvaWQgc3dhYihjb25zdCB2b2lkICosIHZvaWQg
Kiwgc3NpemVfdCk7CgoKCmV4dGVybiBpbnQgc3ltbGluayhjb25zdCBjaGFyICosIGNvbnN0IGNo
YXIgKik7CmV4dGVybiB2b2lkIHN5bmModm9pZCk7CgpleHRlcm4gbG9uZyBzeXNjb25mKGludCk7
CgoKI3ByYWdtYSByZWRlZmluZV9leHRuYW1lIHN5c2NvbmYgX19zeXNjb25mX3hwZzUKCgoKCgpl
eHRlcm4gcGlkX3QgdGNnZXRwZ3JwKGludCk7CmV4dGVybiBpbnQgdGNzZXRwZ3JwKGludCwgcGlk
X3QpOwoKCmV4dGVybiBvZmZfdCB0ZWxsKGludCk7CgoKCgpleHRlcm4gaW50IHRydW5jYXRlKGNv
bnN0IGNoYXIgKiwgb2ZmX3QpOwoKZXh0ZXJuIGNoYXIgKnR0eW5hbWUoaW50KTsKCgpleHRlcm4g
dXNlY29uZHNfdCB1YWxhcm0odXNlY29uZHNfdCwgdXNlY29uZHNfdCk7CgpleHRlcm4gaW50IHVu
bGluayhjb25zdCBjaGFyICopOwoKCmV4dGVybiBpbnQgdW5saW5rYXQoaW50LCBjb25zdCBjaGFy
ICosIGludCk7CgoKCmV4dGVybiBpbnQgdXNsZWVwKHVzZWNvbmRzX3QpOwoKCgpleHRlcm4gcGlk
X3QgdmZvcmsodm9pZCk7CgoKCmV4dGVybiB2b2lkIHZoYW5ndXAodm9pZCk7CgpleHRlcm4gc3Np
emVfdCB3cml0ZShpbnQsIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKCgpleHRlcm4gdm9pZCB5aWVs
ZCh2b2lkKTsKCgoKCgpleHRlcm4gaW50IGZ0cnVuY2F0ZTY0KGludCwgb2ZmNjRfdCk7CmV4dGVy
biBvZmY2NF90IGxzZWVrNjQoaW50LCBvZmY2NF90LCBpbnQpOwpleHRlcm4gc3NpemVfdCBwcmVh
ZDY0KGludCwgdm9pZCAqLCBzaXplX3QsIG9mZjY0X3QpOwpleHRlcm4gc3NpemVfdCBwd3JpdGU2
NChpbnQsIGNvbnN0IHZvaWQgKiwgc2l6ZV90LCBvZmY2NF90KTsKZXh0ZXJuIG9mZjY0X3QgdGVs
bDY0KGludCk7CmV4dGVybiBpbnQgdHJ1bmNhdGU2NChjb25zdCBjaGFyICosIG9mZjY0X3QpOwpl
eHRlcm4gaW50IGxvY2tmNjQoaW50LCBpbnQsIG9mZjY0X3QpOwojIDgwOCAiL3Vzci9pbmNsdWRl
L3VuaXN0ZC5oIiAzIDQKI3ByYWdtYSB1bmtub3duX2NvbnRyb2xfZmxvdyh2Zm9yaykKIyA4NTQg
Ii91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CmV4dGVybiBpbnQgZ2V0bG9naW5fcihjaGFyICos
IGludCk7CmV4dGVybiBpbnQgdHR5bmFtZV9yKGludCwgY2hhciAqLCBzaXplX3QpOwojcHJhZ21h
IHJlZGVmaW5lX2V4dG5hbWUgZ2V0bG9naW5fciBfX3Bvc2l4X2dldGxvZ2luX3IKI3ByYWdtYSBy
ZWRlZmluZV9leHRuYW1lIHR0eW5hbWVfciBfX3Bvc2l4X3R0eW5hbWVfcgojIDEwNiAiL2hvbWUv
YmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9zdHVkaW8uaCIgMgoj
IDExOCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9z
dHVkaW8uaCIKIyAxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMyA0CiMgMTYgIi91c3IvaW5j
bHVkZS9zdHJpbmcuaCIgMyA0CiNwcmFnbWEgaWRlbnQgIkAoIylzdHJpbmcuaAkxLjI0CTk5LzA4
LzEwIFNNSSIgCgojIDEgIi91c3IvaW5jbHVkZS9pc28vc3RyaW5nX2lzby5oIiAxIDMgNAojIDI4
ICIvdXNyL2luY2x1ZGUvaXNvL3N0cmluZ19pc28uaCIgMyA0CiNwcmFnbWEgaWRlbnQgIkAoIylz
dHJpbmdfaXNvLmgJMS4yCTk5LzExLzA5IFNNSSIKIyA2MCAiL3Vzci9pbmNsdWRlL2lzby9zdHJp
bmdfaXNvLmgiIDMgNApleHRlcm4gaW50IG1lbWNtcChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQg
Kiwgc2l6ZV90KTsKZXh0ZXJuIHZvaWQgKm1lbWNweSh2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6
ZV90KTsKZXh0ZXJuIHZvaWQgKm1lbW1vdmUodm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7
CmV4dGVybiB2b2lkICptZW1zZXQodm9pZCAqLCBpbnQsIHNpemVfdCk7CmV4dGVybiBjaGFyICpz
dHJjYXQoY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gaW50IHN0cmNtcChjb25zdCBjaGFy
ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBjaGFyICpzdHJjcHkoY2hhciAqLCBjb25zdCBjaGFy
ICopOwpleHRlcm4gaW50IHN0cmNvbGwoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRl
cm4gc2l6ZV90IHN0cmNzcG4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gY2hh
ciAqc3RyZXJyb3IoaW50KTsKZXh0ZXJuIHNpemVfdCBzdHJsZW4oY29uc3QgY2hhciAqKTsKZXh0
ZXJuIGNoYXIgKnN0cm5jYXQoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CmV4dGVybiBp
bnQgc3RybmNtcChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKZXh0ZXJuIGNo
YXIgKnN0cm5jcHkoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CmV4dGVybiBzaXplX3Qg
c3Ryc3BuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnN0cnRvayhj
aGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBzaXplX3Qgc3RyeGZybShjaGFyICosIGNvbnN0
IGNoYXIgKiwgc2l6ZV90KTsKIyAxMTIgIi91c3IvaW5jbHVkZS9pc28vc3RyaW5nX2lzby5oIiAz
IDQKZXh0ZXJuIHZvaWQgKm1lbWNocihjb25zdCB2b2lkICosIGludCwgc2l6ZV90KTsKZXh0ZXJu
IGNoYXIgKnN0cmNocihjb25zdCBjaGFyICosIGludCk7CmV4dGVybiBjaGFyICpzdHJwYnJrKGNv
bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnN0cnJjaHIoY29uc3QgY2hh
ciAqLCBpbnQpOwpleHRlcm4gY2hhciAqc3Ryc3RyKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq
KTsKIyAxOSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMgNAojIDU4ICIvdXNyL2luY2x1ZGUv
c3RyaW5nLmgiIDMgNApleHRlcm4gY2hhciAqc3RydG9rX3IoY2hhciAqLCBjb25zdCBjaGFyICos
IGNoYXIgKiopOwoKCgoKZXh0ZXJuIHZvaWQgKm1lbWNjcHkodm9pZCAqLCBjb25zdCB2b2lkICos
IGludCwgc2l6ZV90KTsKCgoKCmV4dGVybiBjaGFyICpzdHJzaWduYWwoaW50KTsKZXh0ZXJuIGlu
dCBmZnMoaW50KTsKZXh0ZXJuIGludCBzdHJjYXNlY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh
ciAqKTsKZXh0ZXJuIGludCBzdHJuY2FzZWNtcChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwg
c2l6ZV90KTsKZXh0ZXJuIHNpemVfdCBzdHJsY3B5KGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXpl
X3QpOwpleHRlcm4gc2l6ZV90IHN0cmxjYXQoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7
CgoKCgoKZXh0ZXJuIGNoYXIgKnN0cmR1cChjb25zdCBjaGFyICopOwojIDExOSAiL2hvbWUvYmZy
aWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9zdHVkaW8uaCIgMgojIDEg
Ii91c3IvaW5jbHVkZS9jdHlwZS5oIiAxIDMgNAojIDE2ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIg
MyA0CiNwcmFnbWEgaWRlbnQgIkAoIyljdHlwZS5oCTEuMzMJOTkvMDgvMTAgU01JIiAKCiMgMSAi
L3Vzci9pbmNsdWRlL2lzby9jdHlwZV9pc28uaCIgMSAzIDQKIyAyOCAiL3Vzci9pbmNsdWRlL2lz
by9jdHlwZV9pc28uaCIgMyA0CiNwcmFnbWEgaWRlbnQgIkAoIyljdHlwZV9pc28uaAkxLjEJOTkv
MDgvMDkgU01JIiAKIyA2MyAiL3Vzci9pbmNsdWRlL2lzby9jdHlwZV9pc28uaCIgMyA0CmV4dGVy
biBpbnQgaXNhbG51bShpbnQpOwpleHRlcm4gaW50IGlzYWxwaGEoaW50KTsKZXh0ZXJuIGludCBp
c2NudHJsKGludCk7CmV4dGVybiBpbnQgaXNkaWdpdChpbnQpOwpleHRlcm4gaW50IGlzZ3JhcGgo
aW50KTsKZXh0ZXJuIGludCBpc2xvd2VyKGludCk7CmV4dGVybiBpbnQgaXNwcmludChpbnQpOwpl
eHRlcm4gaW50IGlzcHVuY3QoaW50KTsKZXh0ZXJuIGludCBpc3NwYWNlKGludCk7CmV4dGVybiBp
bnQgaXN1cHBlcihpbnQpOwpleHRlcm4gaW50IGlzeGRpZ2l0KGludCk7CgoKCgoKCgpleHRlcm4g
aW50IHRvbG93ZXIoaW50KTsKZXh0ZXJuIGludCB0b3VwcGVyKGludCk7CgoKCgoKZXh0ZXJuIHVu
c2lnbmVkIGNoYXIgX19jdHlwZVtdOwpleHRlcm4gdW5zaWduZWQgaW50ICpfX2N0eXBlX21hc2s7
CmV4dGVybiBpbnQgKl9fdHJhbnNfdXBwZXI7CmV4dGVybiBpbnQgKl9fdHJhbnNfbG93ZXI7CiMg
MTkgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAyIDMgNAojIDQ5ICIvdXNyL2luY2x1ZGUvY3R5cGUu
aCIgMyA0CmV4dGVybiBpbnQgaXNhc2NpaShpbnQpOwpleHRlcm4gaW50IHRvYXNjaWkoaW50KTsK
ZXh0ZXJuIGludCBfdG9sb3dlcihpbnQpOwpleHRlcm4gaW50IF90b3VwcGVyKGludCk7CiMgMTIw
ICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL3N0dWRp
by5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL2xvY2FsZS5oIiAxIDMgNAojIDkgIi91c3IvaW5jbHVk
ZS9sb2NhbGUuaCIgMyA0CiNwcmFnbWEgaWRlbnQgIkAoIylsb2NhbGUuaAkxLjE5CTk5LzA4LzEw
IFNNSSIKIyA0NiAiL3Vzci9pbmNsdWRlL2xvY2FsZS5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUv
aXNvL2xvY2FsZV9pc28uaCIgMSAzIDQKIyA0NSAiL3Vzci9pbmNsdWRlL2lzby9sb2NhbGVfaXNv
LmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMpbG9jYWxlX2lzby5oCTEuMQk5OS8wOC8wOSBTTUki
CiMgNTcgIi91c3IvaW5jbHVkZS9pc28vbG9jYWxlX2lzby5oIiAzIDQKc3RydWN0IGxjb252IHsK
ICAgICAgICBjaGFyICpkZWNpbWFsX3BvaW50OwogICAgICAgIGNoYXIgKnRob3VzYW5kc19zZXA7
CiAgICAgICAgY2hhciAqZ3JvdXBpbmc7CiAgICAgICAgY2hhciAqaW50X2N1cnJfc3ltYm9sOwog
ICAgICAgIGNoYXIgKmN1cnJlbmN5X3N5bWJvbDsKICAgICAgICBjaGFyICptb25fZGVjaW1hbF9w
b2ludDsKICAgICAgICBjaGFyICptb25fdGhvdXNhbmRzX3NlcDsKICAgICAgICBjaGFyICptb25f
Z3JvdXBpbmc7CiAgICAgICAgY2hhciAqcG9zaXRpdmVfc2lnbjsKICAgICAgICBjaGFyICpuZWdh
dGl2ZV9zaWduOwogICAgICAgIGNoYXIgaW50X2ZyYWNfZGlnaXRzOwogICAgICAgIGNoYXIgZnJh
Y19kaWdpdHM7CiAgICAgICAgY2hhciBwX2NzX3ByZWNlZGVzOwogICAgICAgIGNoYXIgcF9zZXBf
Ynlfc3BhY2U7CiAgICAgICAgY2hhciBuX2NzX3ByZWNlZGVzOwogICAgICAgIGNoYXIgbl9zZXBf
Ynlfc3BhY2U7CiAgICAgICAgY2hhciBwX3NpZ25fcG9zbjsKICAgICAgICBjaGFyIG5fc2lnbl9w
b3NuOwp9OwojIDk1ICIvdXNyL2luY2x1ZGUvaXNvL2xvY2FsZV9pc28uaCIgMyA0CmV4dGVybiBj
aGFyICpzZXRsb2NhbGUoaW50LCBjb25zdCBjaGFyICopOwpleHRlcm4gc3RydWN0IGxjb252ICps
b2NhbGVjb252KHZvaWQpOwojIDQ3ICIvdXNyL2luY2x1ZGUvbG9jYWxlLmgiIDIgMyA0CgoKCgoj
IDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjkvMy4yLjIvaW5j
bHVkZS9saWJpbnRsLmgiIDEgMyA0CiMgMjAgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMt
c3VuLXNvbGFyaXMyLjkvMy4yLjIvaW5jbHVkZS9saWJpbnRsLmgiIDMgNAojcHJhZ21hIGlkZW50
ICJAKCMpbGliaW50bC5oCTEuMTMJMDEvMDgvMDEgU01JIgojIDQ0ICIvdXNyL2xvY2FsL2xpYi9n
Y2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi45LzMuMi4yL2luY2x1ZGUvbGliaW50bC5oIiAzIDQK
ZXh0ZXJuIGNoYXIgKmRjZ2V0dGV4dChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3Qg
aW50KTsKZXh0ZXJuIGNoYXIgKmRnZXR0ZXh0KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsK
ZXh0ZXJuIGNoYXIgKmdldHRleHQoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnRleHRkb21h
aW4oY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKmJpbmR0ZXh0ZG9tYWluKGNvbnN0IGNoYXIg
KiwgY29uc3QgY2hhciAqKTsKCgoKCgpleHRlcm4gY2hhciAqZGNuZ2V0dGV4dChjb25zdCBjaGFy
ICosIGNvbnN0IGNoYXIgKiwKICAgICAgICBjb25zdCBjaGFyICosIHVuc2lnbmVkIGxvbmcgaW50
LCBpbnQpOwpleHRlcm4gY2hhciAqZG5nZXR0ZXh0KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq
LAogICAgICAgIGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgbG9uZyBpbnQpOwpleHRlcm4gY2hhciAq
bmdldHRleHQoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHVuc2lnbmVkIGxvbmcgaW50KTsK
ZXh0ZXJuIGNoYXIgKmJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0KGNvbnN0IGNoYXIgKiwgY29uc3Qg
Y2hhciAqKTsKCgoKZXh0ZXJuIGludCB3ZGluaXQodm9pZCk7CmV4dGVybiBpbnQgd2RjaGtpbmQo
d2NoYXJfdCk7CmV4dGVybiBpbnQgd2RiaW5kZih3Y2hhcl90LCB3Y2hhcl90LCBpbnQpOwpleHRl
cm4gd2NoYXJfdCAqd2RkZWxpbSh3Y2hhcl90LCB3Y2hhcl90LCBpbnQpOwpleHRlcm4gd2NoYXJf
dCBtY2ZpbGxlcih2b2lkKTsKZXh0ZXJuIGludCBtY3dyYXAodm9pZCk7CiMgNTIgIi91c3IvaW5j
bHVkZS9sb2NhbGUuaCIgMiAzIDQKIyAxMjEgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9H
cmFwaGljc01hZ2ljay9tYWdpY2svc3R1ZGlvLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvZXJybm8u
aCIgMSAzIDQKIyAxNyAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDMgNAojcHJhZ21hIGlkZW50ICJA
KCMpZXJybm8uaAkxLjE2CTk5LzA3LzI2IFNNSSIgCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lz
L2Vycm5vLmgiIDEgMyA0CiMgOSAiL3Vzci9pbmNsdWRlL3N5cy9lcnJuby5oIiAzIDQKI3ByYWdt
YSBpZGVudCAiQCgjKWVycm5vLmgJMS4yMAkwMC8wMS8xMiBTTUkiCiMgMjQgIi91c3IvaW5jbHVk
ZS9lcnJuby5oIiAyIDMgNAojIDM4ICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMyA0CmV4dGVybiBp
bnQgKl9fX2Vycm5vKCk7CiMgMTIyICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhp
Y3NNYWdpY2svbWFnaWNrL3N0dWRpby5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDEg
MyA0CiMgMTYgIi91c3IvaW5jbHVkZS9mY250bC5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgjKWZj
bnRsLmgJMS4xNQkwMS8wNy8yOSBTTUkiIAoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQu
aCIgMSAzIDQKIyAxOCAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMgNAojcHJhZ21hIGlkZW50
ICJAKCMpc3RhdC5oCTEuMwkwMS8wNy8yOSBTTUkiCiMgMTYzICIvdXNyL2luY2x1ZGUvc3lzL3N0
YXQuaCIgMyA0CiNwcmFnbWEgcmVkZWZpbmVfZXh0bmFtZSBmc3RhdCBmc3RhdDY0CiNwcmFnbWEg
cmVkZWZpbmVfZXh0bmFtZSBzdGF0IHN0YXQ2NAoKCiNwcmFnbWEgcmVkZWZpbmVfZXh0bmFtZSBm
c3RhdGF0IGZzdGF0YXQ2NAoKCgoKI3ByYWdtYSByZWRlZmluZV9leHRuYW1lIGxzdGF0IGxzdGF0
NjQKIyAyNTAgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAzIDQKc3RydWN0IHN0YXQgewogICAg
ICAgIGRldl90IHN0X2RldjsKICAgICAgICBsb25nIHN0X3BhZDFbM107CiAgICAgICAgaW5vX3Qg
c3RfaW5vOwogICAgICAgIG1vZGVfdCBzdF9tb2RlOwogICAgICAgIG5saW5rX3Qgc3Rfbmxpbms7
CiAgICAgICAgdWlkX3Qgc3RfdWlkOwogICAgICAgIGdpZF90IHN0X2dpZDsKICAgICAgICBkZXZf
dCBzdF9yZGV2OwogICAgICAgIGxvbmcgc3RfcGFkMlsyXTsKICAgICAgICBvZmZfdCBzdF9zaXpl
OwoKCgoKCiAgICAgICAgdGltZXN0cnVjX3Qgc3RfYXRpbTsKICAgICAgICB0aW1lc3RydWNfdCBz
dF9tdGltOwogICAgICAgIHRpbWVzdHJ1Y190IHN0X2N0aW07CgoKCgoKICAgICAgICBibGtzaXpl
X3Qgc3RfYmxrc2l6ZTsKICAgICAgICBibGtjbnRfdCBzdF9ibG9ja3M7CiAgICAgICAgY2hhciBz
dF9mc3R5cGVbMTZdOwogICAgICAgIGxvbmcgc3RfcGFkNFs4XTsKfTsKIyAzMTMgIi91c3IvaW5j
bHVkZS9zeXMvc3RhdC5oIiAzIDQKc3RydWN0IHN0YXQ2NCB7CiAgICAgICAgZGV2X3Qgc3RfZGV2
OwogICAgICAgIGxvbmcgc3RfcGFkMVszXTsKICAgICAgICBpbm82NF90IHN0X2lubzsKICAgICAg
ICBtb2RlX3Qgc3RfbW9kZTsKICAgICAgICBubGlua190IHN0X25saW5rOwogICAgICAgIHVpZF90
IHN0X3VpZDsKICAgICAgICBnaWRfdCBzdF9naWQ7CiAgICAgICAgZGV2X3Qgc3RfcmRldjsKICAg
ICAgICBsb25nIHN0X3BhZDJbMl07CiAgICAgICAgb2ZmNjRfdCBzdF9zaXplOwoKCiAgICAgICAg
dGltZXN0cnVjX3Qgc3RfYXRpbTsKICAgICAgICB0aW1lc3RydWNfdCBzdF9tdGltOwogICAgICAg
IHRpbWVzdHJ1Y190IHN0X2N0aW07CgoKCgoKICAgICAgICBibGtzaXplX3Qgc3RfYmxrc2l6ZTsK
ICAgICAgICBibGtjbnQ2NF90IHN0X2Jsb2NrczsKICAgICAgICBjaGFyIHN0X2ZzdHlwZVsxNl07
CiAgICAgICAgbG9uZyBzdF9wYWQ0WzhdOwp9OwojIDQ4NiAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0
LmgiIDMgNApleHRlcm4gaW50IGZjaG1vZChpbnQsIG1vZGVfdCk7CgoKZXh0ZXJuIGludCBjaG1v
ZChjb25zdCBjaGFyICosIG1vZGVfdCk7CmV4dGVybiBpbnQgbWtkaXIoY29uc3QgY2hhciAqLCBt
b2RlX3QpOwpleHRlcm4gaW50IG1rZmlmbyhjb25zdCBjaGFyICosIG1vZGVfdCk7CmV4dGVybiBt
b2RlX3QgdW1hc2sobW9kZV90KTsKCgoKCmV4dGVybiBpbnQgZnN0YXQ2NChpbnQsIHN0cnVjdCBz
dGF0NjQgKik7CmV4dGVybiBpbnQgc3RhdDY0KGNvbnN0IGNoYXIgKiwgc3RydWN0IHN0YXQ2NCAq
KTsKZXh0ZXJuIGludCBsc3RhdDY0KGNvbnN0IGNoYXIgKiwgc3RydWN0IHN0YXQ2NCAqKTsKCgpl
eHRlcm4gaW50IGZzdGF0YXQ2NChpbnQsIGNvbnN0IGNoYXIgKiwgc3RydWN0IHN0YXQ2NCAqLCBp
bnQpOwojIDUzMyAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMgNAojIDEgIi91c3IvaW5jbHVk
ZS9zeXMvc3RhdF9pbXBsLmgiIDEgMyA0CiMgOSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0X2ltcGwu
aCIgMyA0CiNwcmFnbWEgaWRlbnQgIkAoIylzdGF0X2ltcGwuaAkxLjIJMDEvMDcvMjkgU01JIgoj
IDI2ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXRfaW1wbC5oIiAzIDQKZXh0ZXJuIGludCBmc3RhdChp
bnQsIHN0cnVjdCBzdGF0ICopOwpleHRlcm4gaW50IHN0YXQoY29uc3QgY2hhciAqLCBzdHJ1Y3Qg
c3RhdCAqKTsKCgpleHRlcm4gaW50IGZzdGF0YXQoaW50LCBjb25zdCBjaGFyICosIHN0cnVjdCBz
dGF0ICosIGludCk7CgoKCgpleHRlcm4gaW50IGxzdGF0KGNvbnN0IGNoYXIgKiwgc3RydWN0IHN0
YXQgKik7CmV4dGVybiBpbnQgbWtub2QoY29uc3QgY2hhciAqLCBtb2RlX3QsIGRldl90KTsKIyA1
MzQgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAyIDMgNAojIDIyICIvdXNyL2luY2x1ZGUvZmNu
dGwuaCIgMiAzIDQKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmNudGwuaCIgMSAzIDQKIyAxNiAi
L3Vzci9pbmNsdWRlL3N5cy9mY250bC5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgjKWZjbnRsLmgJ
MS40OAkwMS8xMi8xNyBTTUkiIAojIDE3MiAiL3Vzci9pbmNsdWRlL3N5cy9mY250bC5oIiAzIDQK
dHlwZWRlZiBzdHJ1Y3QgZmxvY2sgewogICAgICAgIHNob3J0IGxfdHlwZTsKICAgICAgICBzaG9y
dCBsX3doZW5jZTsKICAgICAgICBvZmZfdCBsX3N0YXJ0OwogICAgICAgIG9mZl90IGxfbGVuOwog
ICAgICAgIGludCBsX3N5c2lkOwogICAgICAgIHBpZF90IGxfcGlkOwogICAgICAgIGxvbmcgbF9w
YWRbNF07Cn0gZmxvY2tfdDsKIyAyMDIgIi91c3IvaW5jbHVkZS9zeXMvZmNudGwuaCIgMyA0CnR5
cGVkZWYgc3RydWN0IGZsb2NrNjQgewogICAgICAgIHNob3J0IGxfdHlwZTsKICAgICAgICBzaG9y
dCBsX3doZW5jZTsKICAgICAgICBvZmY2NF90IGxfc3RhcnQ7CiAgICAgICAgb2ZmNjRfdCBsX2xl
bjsKICAgICAgICBpbnQgbF9zeXNpZDsKICAgICAgICBwaWRfdCBsX3BpZDsKICAgICAgICBsb25n
IGxfcGFkWzRdOwp9IGZsb2NrNjRfdDsKIyAyODAgIi91c3IvaW5jbHVkZS9zeXMvZmNudGwuaCIg
MyA0CnR5cGVkZWYgc3RydWN0IGZzaGFyZSB7CiAgICAgICAgc2hvcnQgZl9hY2Nlc3M7CiAgICAg
ICAgc2hvcnQgZl9kZW55OwogICAgICAgIGludCBmX2lkOwp9IGZzaGFyZV90OwojIDI1ICIvdXNy
L2luY2x1ZGUvZmNudGwuaCIgMiAzIDQKIyA1MiAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDMgNAoj
cHJhZ21hIHJlZGVmaW5lX2V4dG5hbWUgb3BlbiBvcGVuNjQKI3ByYWdtYSByZWRlZmluZV9leHRu
YW1lIGNyZWF0IGNyZWF0NjQKCgojcHJhZ21hIHJlZGVmaW5lX2V4dG5hbWUgb3BlbmF0IG9wZW5h
dDY0CiNwcmFnbWEgcmVkZWZpbmVfZXh0bmFtZSBhdHRyb3BlbiBhdHRyb3BlbjY0CiMgOTIgIi91
c3IvaW5jbHVkZS9mY250bC5oIiAzIDQKZXh0ZXJuIGludCBmY250bChpbnQsIGludCwgLi4uKTsK
ZXh0ZXJuIGludCBvcGVuKGNvbnN0IGNoYXIgKiwgaW50LCAuLi4pOwpleHRlcm4gaW50IGNyZWF0
KGNvbnN0IGNoYXIgKiwgbW9kZV90KTsKCgpleHRlcm4gaW50IG9wZW5hdChpbnQsIGNvbnN0IGNo
YXIgKiwgaW50LCAuLi4pOwpleHRlcm4gaW50IGF0dHJvcGVuKGNvbnN0IGNoYXIgKiwgY29uc3Qg
Y2hhciAqLCBpbnQsIC4uLik7CgoKCmV4dGVybiBpbnQgZGlyZWN0aW8oaW50LCBpbnQpOwoKCgoK
CmV4dGVybiBpbnQgb3BlbjY0KGNvbnN0IGNoYXIgKiwgaW50LCAuLi4pOwpleHRlcm4gaW50IGNy
ZWF0NjQoY29uc3QgY2hhciAqLCBtb2RlX3QpOwoKCmV4dGVybiBpbnQgb3BlbmF0NjQoaW50LCBj
b25zdCBjaGFyICosIGludCwgLi4uKTsKZXh0ZXJuIGludCBhdHRyb3BlbjY0KGNvbnN0IGNoYXIg
KiwgY29uc3QgY2hhciAqLCBpbnQsIC4uLik7CiMgMTIzICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3Jh
cGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL3N0dWRpby5oIiAyCiMgMSAiL3Vzci9sb2NhbC9s
aWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOS8zLjIuMi9pbmNsdWRlL21hdGguaCIgMSAz
IDQKIyAyMyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOS8zLjIu
Mi9pbmNsdWRlL21hdGguaCIgMyA0CiNwcmFnbWEgaWRlbnQgIkAoIyltYXRoLmgJMi4xMQkwMC8w
OS8wNyBTTUkiCgojIDEgIi91c3IvaW5jbHVkZS9pc28vbWF0aF9pc28uaCIgMSAzIDQKCgoKCgoK
CiNwcmFnbWEgaWRlbnQgIkAoIyltYXRoX2lzby5oCTEuMgkwMC8wOS8wNyBTTUkiCiMgMjAgIi91
c3IvaW5jbHVkZS9pc28vbWF0aF9pc28uaCIgMyA0CnR5cGVkZWYgdW5pb24gX2hfdmFsIHsKICAg
ICAgICB1bnNpZ25lZCBsb25nIF9pW3NpemVvZihkb3VibGUpIC8gc2l6ZW9mKHVuc2lnbmVkIGxv
bmcpXTsKICAgICAgICBkb3VibGUgX2Q7Cn0gX2hfdmFsOwoKCmV4dGVybiBjb25zdCBfaF92YWwg
X19odWdlX3ZhbDsKIyAzNyAiL3Vzci9pbmNsdWRlL2lzby9tYXRoX2lzby5oIiAzIDQKZXh0ZXJu
IGRvdWJsZSBhY29zIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGFzaW4gKGRvdWJsZSk7CmV4dGVy
biBkb3VibGUgYXRhbiAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBhdGFuMiAoZG91YmxlLCBkb3Vi
bGUpOwpleHRlcm4gZG91YmxlIGNvcyAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBzaW4gKGRvdWJs
ZSk7CmV4dGVybiBkb3VibGUgdGFuIChkb3VibGUpOwoKZXh0ZXJuIGRvdWJsZSBjb3NoIChkb3Vi
bGUpOwpleHRlcm4gZG91YmxlIHNpbmggKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgdGFuaCAoZG91
YmxlKTsKCmV4dGVybiBkb3VibGUgZXhwIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGZyZXhwIChk
b3VibGUsIGludCAqKTsKZXh0ZXJuIGRvdWJsZSBsZGV4cCAoZG91YmxlLCBpbnQpOwpleHRlcm4g
ZG91YmxlIGxvZyAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBsb2cxMCAoZG91YmxlKTsKZXh0ZXJu
IGRvdWJsZSBtb2RmIChkb3VibGUsIGRvdWJsZSAqKTsKCmV4dGVybiBkb3VibGUgcG93IChkb3Vi
bGUsIGRvdWJsZSk7CmV4dGVybiBkb3VibGUgc3FydCAoZG91YmxlKTsKCmV4dGVybiBkb3VibGUg
Y2VpbCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBmYWJzIChkb3VibGUpOwpleHRlcm4gZG91Ymxl
IGZsb29yIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGZtb2QgKGRvdWJsZSwgZG91YmxlKTsKIyAy
NiAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOS8zLjIuMi9pbmNs
dWRlL21hdGguaCIgMiAzIDQKIyA4OSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4t
c29sYXJpczIuOS8zLjIuMi9pbmNsdWRlL21hdGguaCIgMyA0CmV4dGVybiBpbnQgc2lnbmdhbTsK
CgoKCgoKCmVudW0gdmVyc2lvbiB7bGlibV9pZWVlID0gLTEsIGNfaXNzdWVfNCwgYW5zaV8xLCBz
dHJpY3RfYW5zaX07CgoKZXh0ZXJuIGNvbnN0IGVudW0gdmVyc2lvbiBfbGliX3ZlcnNpb247CgoK
CgpzdHJ1Y3QgZXhjZXB0aW9uIHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICBjaGFyICpuYW1l
OwogICAgICAgIGRvdWJsZSBhcmcxOwogICAgICAgIGRvdWJsZSBhcmcyOwogICAgICAgIGRvdWJs
ZSByZXR2YWw7Cn07CiMgMTQ1ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xh
cmlzMi45LzMuMi4yL2luY2x1ZGUvbWF0aC5oIiAzIDQKZXh0ZXJuIGRvdWJsZSBlcmYgKGRvdWJs
ZSk7CmV4dGVybiBkb3VibGUgZXJmYyAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBnYW1tYSAoZG91
YmxlKTsKZXh0ZXJuIGRvdWJsZSBoeXBvdCAoZG91YmxlLCBkb3VibGUpOwpleHRlcm4gaW50IGlz
bmFuIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGowIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGox
IChkb3VibGUpOwpleHRlcm4gZG91YmxlIGpuIChpbnQsIGRvdWJsZSk7CmV4dGVybiBkb3VibGUg
bGdhbW1hIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHkwIChkb3VibGUpOwpleHRlcm4gZG91Ymxl
IHkxIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHluIChpbnQsIGRvdWJsZSk7CiMgMTcyICIvdXNy
L2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi45LzMuMi4yL2luY2x1ZGUvbWF0
aC5oIiAzIDQKZXh0ZXJuIGRvdWJsZSBhY29zaCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBhc2lu
aCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBhdGFuaCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBj
YnJ0IChkb3VibGUpOwpleHRlcm4gZG91YmxlIGxvZ2IgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUg
bmV4dGFmdGVyIChkb3VibGUsIGRvdWJsZSk7CmV4dGVybiBkb3VibGUgcmVtYWluZGVyIChkb3Vi
bGUsIGRvdWJsZSk7CmV4dGVybiBkb3VibGUgc2NhbGIgKGRvdWJsZSwgZG91YmxlKTsKIyAxOTIg
Ii91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjkvMy4yLjIvaW5jbHVk
ZS9tYXRoLmgiIDMgNApleHRlcm4gZG91YmxlIGV4cG0xIChkb3VibGUpOwpleHRlcm4gaW50IGls
b2diIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGxvZzFwIChkb3VibGUpOwpleHRlcm4gZG91Ymxl
IHJpbnQgKGRvdWJsZSk7CiMgMjA4ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1z
b2xhcmlzMi45LzMuMi4yL2luY2x1ZGUvbWF0aC5oIiAzIDQKZXh0ZXJuIGludCBtYXRoZXJyIChz
dHJ1Y3QgZXhjZXB0aW9uICopOwoKCgoKZXh0ZXJuIGRvdWJsZSBzaWduaWZpY2FuZCAoZG91Ymxl
KTsKCgoKCmV4dGVybiBkb3VibGUgY29weXNpZ24gKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRv
dWJsZSBzY2FsYm4gKGRvdWJsZSwgaW50KTsKIyAyMzEgIi91c3IvbG9jYWwvbGliL2djYy1saWIv
c3BhcmMtc3VuLXNvbGFyaXMyLjkvMy4yLjIvaW5jbHVkZS9tYXRoLmgiIDMgNApleHRlcm4gZG91
YmxlIGdhbW1hX3IgKGRvdWJsZSwgaW50ICopOwpleHRlcm4gZG91YmxlIGxnYW1tYV9yIChkb3Vi
bGUsIGludCAqKTsKIyAyNDIgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFy
aXMyLjkvMy4yLjIvaW5jbHVkZS9tYXRoLmgiIDMgNApleHRlcm4gZmxvYXQgbW9kZmYgKGZsb2F0
LCBmbG9hdCAqKTsKCgoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNv
bGFyaXMyLjkvMy4yLjIvaW5jbHVkZS9mbG9hdGluZ3BvaW50LmgiIDEgMyA0CiMgMjAgIi91c3Iv
bG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjkvMy4yLjIvaW5jbHVkZS9mbG9h
dGluZ3BvaW50LmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMpZmxvYXRpbmdwb2ludC5oCTIuNQk5
OS8wNi8yMiBTTUkiCgoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNv
bGFyaXMyLjkvMy4yLjIvaW5jbHVkZS9zeXMvaWVlZWZwLmgiIDEgMyA0CiMgMTcgIi91c3IvbG9j
YWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjkvMy4yLjIvaW5jbHVkZS9zeXMvaWVl
ZWZwLmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMpaWVlZWZwLmgJMi44IDk5LzEwLzI5IgojIDI3
ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi45LzMuMi4yL2luY2x1
ZGUvc3lzL2llZWVmcC5oIiAzIDQKZW51bSBmcF9kaXJlY3Rpb25fdHlwZSB7CiAgICAgICAgZnBf
bmVhcmVzdCA9IDAsCiAgICAgICAgZnBfdG96ZXJvID0gMSwKICAgICAgICBmcF9wb3NpdGl2ZSA9
IDIsCiAgICAgICAgZnBfbmVnYXRpdmUgPSAzCn07CgplbnVtIGZwX3ByZWNpc2lvbl90eXBlIHsK
ICAgICAgICBmcF9leHRlbmRlZCA9IDAsCiAgICAgICAgZnBfc2luZ2xlID0gMSwKICAgICAgICBm
cF9kb3VibGUgPSAyLAogICAgICAgIGZwX3ByZWNpc2lvbl8zID0gMwp9OwoKZW51bSBmcF9leGNl
cHRpb25fdHlwZSB7CiAgICAgICAgZnBfaW5leGFjdCA9IDAsCiAgICAgICAgZnBfZGl2aXNpb24g
PSAxLAogICAgICAgIGZwX3VuZGVyZmxvdyA9IDIsCiAgICAgICAgZnBfb3ZlcmZsb3cgPSAzLAog
ICAgICAgIGZwX2ludmFsaWQgPSA0Cn07CgplbnVtIGZwX3RyYXBfZW5hYmxlX3R5cGUgewogICAg
ICAgIGZwX3RyYXBfaW5leGFjdCA9IDAsCiAgICAgICAgZnBfdHJhcF9kaXZpc2lvbiA9IDEsCiAg
ICAgICAgZnBfdHJhcF91bmRlcmZsb3cgPSAyLAogICAgICAgIGZwX3RyYXBfb3ZlcmZsb3cgPSAz
LAogICAgICAgIGZwX3RyYXBfaW52YWxpZCA9IDQKfTsKIyAxMzMgIi91c3IvbG9jYWwvbGliL2dj
Yy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjkvMy4yLjIvaW5jbHVkZS9zeXMvaWVlZWZwLmgiIDMg
NAplbnVtIGZwX2NsYXNzX3R5cGUgewogICAgICAgIGZwX3plcm8gPSAwLAogICAgICAgIGZwX3N1
Ym5vcm1hbCA9IDEsCiAgICAgICAgZnBfbm9ybWFsID0gMiwKICAgICAgICBmcF9pbmZpbml0eSA9
IDMsCiAgICAgICAgZnBfcXVpZXQgPSA0LAogICAgICAgIGZwX3NpZ25hbGluZyA9IDUKfTsKIyAy
NiAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOS8zLjIuMi9pbmNs
dWRlL2Zsb2F0aW5ncG9pbnQuaCIgMiAzIDQKIyA2MiAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9z
cGFyYy1zdW4tc29sYXJpczIuOS8zLjIuMi9pbmNsdWRlL2Zsb2F0aW5ncG9pbnQuaCIgMyA0CnR5
cGVkZWYgaW50IHNpZ2ZwZV9jb2RlX3R5cGU7Cgp0eXBlZGVmIHZvaWQgKCpzaWdmcGVfaGFuZGxl
cl90eXBlKSgpOwoKCgoKCmV4dGVybiBzaWdmcGVfaGFuZGxlcl90eXBlIHNpZ2ZwZSAoc2lnZnBl
X2NvZGVfdHlwZSwgc2lnZnBlX2hhbmRsZXJfdHlwZSk7CgoKCgp0eXBlZGVmIGZsb2F0IHNpbmds
ZTsKCgoKdHlwZWRlZiB1bnNpZ25lZCBleHRlbmRlZFszXTsKCgp0eXBlZGVmIGxvbmcgZG91Ymxl
IHF1YWRydXBsZTsKCnR5cGVkZWYgdW5zaWduZWQgZnBfZXhjZXB0aW9uX2ZpZWxkX3R5cGU7CiMg
OTQgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjkvMy4yLjIvaW5j
bHVkZS9mbG9hdGluZ3BvaW50LmgiIDMgNAp0eXBlZGVmIGNoYXIgZGVjaW1hbF9zdHJpbmdbNTEy
XTsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgZW51bSBmcF9jbGFzc190eXBlIGZwY2xhc3M7
CiAgICAgICAgaW50IHNpZ247CiAgICAgICAgaW50IGV4cG9uZW50OwogICAgICAgIGRlY2ltYWxf
c3RyaW5nIGRzOwoKCiAgICAgICAgaW50IG1vcmU7CgoKICAgICAgICBpbnQgbmRpZ2l0czsKCgp9
IGRlY2ltYWxfcmVjb3JkOwoKZW51bSBkZWNpbWFsX2Zvcm0gewogICAgICAgIGZpeGVkX2Zvcm0s
CgoKICAgICAgICBmbG9hdGluZ19mb3JtCgp9OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGVu
dW0gZnBfZGlyZWN0aW9uX3R5cGUgcmQ7CgogICAgICAgIGVudW0gZGVjaW1hbF9mb3JtIGRmOwoK
ICAgICAgICBpbnQgbmRpZ2l0czsKfSBkZWNpbWFsX21vZGU7CgplbnVtIGRlY2ltYWxfc3RyaW5n
X2Zvcm0gewogICAgICAgIGludmFsaWRfZm9ybSwKICAgICAgICB3aGl0ZXNwYWNlX2Zvcm0sCiAg
ICAgICAgZml4ZWRfaW50X2Zvcm0sCiAgICAgICAgZml4ZWRfaW50ZG90X2Zvcm0sCiAgICAgICAg
Zml4ZWRfZG90ZnJhY19mb3JtLAogICAgICAgIGZpeGVkX2ludGRvdGZyYWNfZm9ybSwKICAgICAg
ICBmbG9hdGluZ19pbnRfZm9ybSwKICAgICAgICBmbG9hdGluZ19pbnRkb3RfZm9ybSwKICAgICAg
ICBmbG9hdGluZ19kb3RmcmFjX2Zvcm0sCiAgICAgICAgZmxvYXRpbmdfaW50ZG90ZnJhY19mb3Jt
LAogICAgICAgIGluZl9mb3JtLAogICAgICAgIGluZmluaXR5X2Zvcm0sCiAgICAgICAgbmFuX2Zv
cm0sCiAgICAgICAgbmFuc3RyaW5nX2Zvcm0KfTsKCmV4dGVybiB2b2lkIHNpbmdsZV90b19kZWNp
bWFsIChzaW5nbGUgKiwgZGVjaW1hbF9tb2RlICosIGRlY2ltYWxfcmVjb3JkICosIGZwX2V4Y2Vw
dGlvbl9maWVsZF90eXBlICopOwoKZXh0ZXJuIHZvaWQgZG91YmxlX3RvX2RlY2ltYWwgKGRvdWJs
ZSAqLCBkZWNpbWFsX21vZGUgKiwgZGVjaW1hbF9yZWNvcmQgKiwgZnBfZXhjZXB0aW9uX2ZpZWxk
X3R5cGUgKik7CgpleHRlcm4gdm9pZCBleHRlbmRlZF90b19kZWNpbWFsIChleHRlbmRlZCAqLCBk
ZWNpbWFsX21vZGUgKiwgZGVjaW1hbF9yZWNvcmQgKiwgZnBfZXhjZXB0aW9uX2ZpZWxkX3R5cGUg
Kik7CgpleHRlcm4gdm9pZCBxdWFkcnVwbGVfdG9fZGVjaW1hbCAocXVhZHJ1cGxlICosIGRlY2lt
YWxfbW9kZSAqLCBkZWNpbWFsX3JlY29yZCAqLCBmcF9leGNlcHRpb25fZmllbGRfdHlwZSAqKTsK
CgpleHRlcm4gdm9pZCBkZWNpbWFsX3RvX3NpbmdsZSAoc2luZ2xlICosIGRlY2ltYWxfbW9kZSAq
LCBkZWNpbWFsX3JlY29yZCAqLCBmcF9leGNlcHRpb25fZmllbGRfdHlwZSAqKTsKCmV4dGVybiB2
b2lkIGRlY2ltYWxfdG9fZG91YmxlIChkb3VibGUgKiwgZGVjaW1hbF9tb2RlICosIGRlY2ltYWxf
cmVjb3JkICosIGZwX2V4Y2VwdGlvbl9maWVsZF90eXBlICopOwoKZXh0ZXJuIHZvaWQgZGVjaW1h
bF90b19leHRlbmRlZCAoZXh0ZW5kZWQgKiwgZGVjaW1hbF9tb2RlICosIGRlY2ltYWxfcmVjb3Jk
ICosIGZwX2V4Y2VwdGlvbl9maWVsZF90eXBlICopOwoKZXh0ZXJuIHZvaWQgZGVjaW1hbF90b19x
dWFkcnVwbGUgKHF1YWRydXBsZSAqLCBkZWNpbWFsX21vZGUgKiwgZGVjaW1hbF9yZWNvcmQgKiwg
ZnBfZXhjZXB0aW9uX2ZpZWxkX3R5cGUgKik7CgoKZXh0ZXJuIHZvaWQgc3RyaW5nX3RvX2RlY2lt
YWwgKGNoYXIgKiosIGludCwgaW50LCBkZWNpbWFsX3JlY29yZCAqLCBlbnVtIGRlY2ltYWxfc3Ry
aW5nX2Zvcm0gKiwgY2hhciAqKik7CgpleHRlcm4gdm9pZCBmdW5jX3RvX2RlY2ltYWwgKGNoYXIg
KiosIGludCwgaW50LCBkZWNpbWFsX3JlY29yZCAqLCBlbnVtIGRlY2ltYWxfc3RyaW5nX2Zvcm0g
KiwgY2hhciAqKiwgaW50ICgqKSh2b2lkKSwgaW50ICosIGludCAoKikoaW50KSk7CgoKZXh0ZXJu
IHZvaWQgZmlsZV90b19kZWNpbWFsIChjaGFyICoqLCBpbnQsIGludCwgZGVjaW1hbF9yZWNvcmQg
KiwgZW51bSBkZWNpbWFsX3N0cmluZ19mb3JtICosIGNoYXIgKiosIEZJTEUgKiwgaW50ICopOwoK
CgpleHRlcm4gY2hhciAqc2Vjb252ZXJ0IChzaW5nbGUgKiwgaW50LCBpbnQgKiwgaW50ICosIGNo
YXIgKik7CmV4dGVybiBjaGFyICpzZmNvbnZlcnQgKHNpbmdsZSAqLCBpbnQsIGludCAqLCBpbnQg
KiwgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnNnY29udmVydCAoc2luZ2xlICosIGludCwgaW50LCBj
aGFyICopOwpleHRlcm4gY2hhciAqZWNvbnZlcnQgKGRvdWJsZSwgaW50LCBpbnQgKiwgaW50ICos
IGNoYXIgKik7CmV4dGVybiBjaGFyICpmY29udmVydCAoZG91YmxlLCBpbnQsIGludCAqLCBpbnQg
KiwgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKmdjb252ZXJ0IChkb3VibGUsIGludCwgaW50LCBjaGFy
ICopOwpleHRlcm4gY2hhciAqcWVjb252ZXJ0IChxdWFkcnVwbGUgKiwgaW50LCBpbnQgKiwgaW50
ICosIGNoYXIgKik7CmV4dGVybiBjaGFyICpxZmNvbnZlcnQgKHF1YWRydXBsZSAqLCBpbnQsIGlu
dCAqLCBpbnQgKiwgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnFnY29udmVydCAocXVhZHJ1cGxlICos
IGludCwgaW50LCBjaGFyICopOwoKZXh0ZXJuIGNoYXIgKmVjdnQgKGRvdWJsZSwgaW50LCBpbnQg
KiwgaW50ICopOwpleHRlcm4gY2hhciAqZmN2dCAoZG91YmxlLCBpbnQsIGludCAqLCBpbnQgKik7
CmV4dGVybiBjaGFyICpnY3Z0IChkb3VibGUsIGludCwgY2hhciAqKTsKCgoKCgpleHRlcm4gZG91
YmxlIGF0b2YgKGNvbnN0IGNoYXIgKik7CmV4dGVybiBkb3VibGUgc3RydG9kIChjb25zdCBjaGFy
ICosIGNoYXIgKiopOwojIDI0OSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29s
YXJpczIuOS8zLjIuMi9pbmNsdWRlL21hdGguaCIgMiAzIDQKIyAxMjQgIi9ob21lL2Jmcmllc2Vu
L3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svc3R1ZGlvLmgiIDIKCiMgMSAiL3Vz
ci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOS8zLjIuMi9pbmNsdWRlL2xp
bWl0cy5oIiAxIDMgNAojIDExICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xh
cmlzMi45LzMuMi4yL2luY2x1ZGUvbGltaXRzLmgiIDMgNAojIDEgIi91c3IvbG9jYWwvbGliL2dj
Yy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjkvMy4yLjIvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMSAz
IDQKIyAyNSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOS8zLjIu
Mi9pbmNsdWRlL3N5c2xpbWl0cy5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgjKWxpbWl0cy5oCTEu
NTIJMDIvMDEvMDggU01JIiAKCgoKIyAxICIvdXNyL2luY2x1ZGUvaXNvL2xpbWl0c19pc28uaCIg
MSAzIDQKIyAyOCAiL3Vzci9pbmNsdWRlL2lzby9saW1pdHNfaXNvLmgiIDMgNAojcHJhZ21hIGlk
ZW50ICJAKCMpbGltaXRzX2lzby5oCTEuMQk5OS8wOC8wOSBTTUkiIAojIDMwICIvdXNyL2xvY2Fs
L2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi45LzMuMi4yL2luY2x1ZGUvc3lzbGltaXRz
LmgiIDIgMyA0CiMgNDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMy
LjkvMy4yLjIvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9p
bnRfbGltaXRzLmgiIDEgMyA0CiMgOSAiL3Vzci9pbmNsdWRlL3N5cy9pbnRfbGltaXRzLmgiIDMg
NAojcHJhZ21hIGlkZW50ICJAKCMpaW50X2xpbWl0cy5oCTEuNgk5OS8wOC8wNiBTTUkiCiMgNDIg
Ii91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjkvMy4yLjIvaW5jbHVk
ZS9zeXNsaW1pdHMuaCIgMiAzIDQKIyAyNzggIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMt
c3VuLXNvbGFyaXMyLjkvMy4yLjIvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMyA0CmV4dGVybiBsb25n
IF9zeXNjb25mKGludCk7CiMgMTIgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNv
bGFyaXMyLjkvMy4yLjIvaW5jbHVkZS9saW1pdHMuaCIgMiAzIDQKIyAxMjYgIi9ob21lL2Jmcmll
c2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svc3R1ZGlvLmgiIDIKIyAxICIv
dXNyL2luY2x1ZGUvc2lnbmFsLmgiIDEgMyA0CiMgMTcgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIg
MyA0CiNwcmFnbWEgaWRlbnQgIkAoIylzaWduYWwuaAkxLjM5CTAxLzExLzA3IFNNSSIgCiMgMjYg
Ii91c3IvaW5jbHVkZS9zaWduYWwuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2lzby9zaWduYWxf
aXNvLmgiIDEgMyA0CiMgMjggIi91c3IvaW5jbHVkZS9pc28vc2lnbmFsX2lzby5oIiAzIDQKI3By
YWdtYSBpZGVudCAiQCgjKXNpZ25hbF9pc28uaAkxLjEJOTkvMDgvMDkgU01JIgoKCiMgMSAiL3Vz
ci9pbmNsdWRlL3N5cy9pc28vc2lnbmFsX2lzby5oIiAxIDMgNAojIDI4ICIvdXNyL2luY2x1ZGUv
c3lzL2lzby9zaWduYWxfaXNvLmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMpc2lnbmFsX2lzby5o
CTEuMgkwMS8wNC8wNSBTTUkiIAojIDgxICIvdXNyL2luY2x1ZGUvc3lzL2lzby9zaWduYWxfaXNv
LmgiIDMgNApleHRlcm4gbG9uZyBfc3lzY29uZihpbnQpOwojIDMyICIvdXNyL2luY2x1ZGUvaXNv
L3NpZ25hbF9pc28uaCIgMiAzIDQKIyA0MSAiL3Vzci9pbmNsdWRlL2lzby9zaWduYWxfaXNvLmgi
IDMgNAp0eXBlZGVmIGludCBzaWdfYXRvbWljX3Q7CgoKCgoKCmV4dGVybiB2b2lkICgqc2lnbmFs
KGludCwgdm9pZCAoKikoaW50KSkpKGludCk7CgpleHRlcm4gaW50IHJhaXNlKGludCk7CiMgMjcg
Ii91c3IvaW5jbHVkZS9zaWduYWwuaCIgMiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25h
bC5oIiAxIDMgNAojIDE2ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAzIDQKI3ByYWdtYSBp
ZGVudCAiQCgjKXNpZ25hbC5oCTEuNTYJMDEvMDUvMjggU01JIiAKIyA0MiAiL3Vzci9pbmNsdWRl
L3N5cy9zaWduYWwuaCIgMyA0CnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBpbnQg
X19zaWdiaXRzWzRdOwp9IHNpZ3NldF90OwojIDU4ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5o
IiAzIDQKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGludCBfX3NpZ2JpdHNbMl07
Cn0ga19zaWdzZXRfdDsKIyA3NiAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMyA0CnN0cnVj
dCBzaWdhY3Rpb24gewogICAgICAgIGludCBzYV9mbGFnczsKICAgICAgICB1bmlvbiB7CgoKCiAg
ICAgICAgICAgICAgICB2b2lkICgqX2hhbmRsZXIpKCk7CgoKCgogICAgICAgICAgICAgICAgdm9p
ZCAoKl9zaWdhY3Rpb24pKGludCwgc2lnaW5mb190ICosIHZvaWQgKik7CgogICAgICAgIH0gX2Z1
bmNwdHI7CiAgICAgICAgc2lnc2V0X3Qgc2FfbWFzazsKCiAgICAgICAgaW50IHNhX3Jlc3ZbMl07
Cgp9OwojIDE3MCAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMyA0CnR5cGVkZWYgc3RydWN0
IHNpZ2FsdHN0YWNrIHsKCgoKICAgICAgICB2b2lkICpzc19zcDsKICAgICAgICBzaXplX3Qgc3Nf
c2l6ZTsKICAgICAgICBpbnQgc3NfZmxhZ3M7Cn0gc3RhY2tfdDsKIyAxOTkgIi91c3IvaW5jbHVk
ZS9zeXMvc2lnbmFsLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCBzaWdub3RpZnlfaWQgewogICAgICAg
IHBpZF90IHNuX3BpZDsKICAgICAgICBpbnQgc25faW5kZXg7CiAgICAgICAgaW50IHNuX3BhZDsK
fSBzaWdub3RpZnlfaWRfdDsKIyAyMjkgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMgNApz
dHJ1Y3Qgc2lnc3RhY2sgewogICAgICAgIHZvaWQgKnNzX3NwOwogICAgICAgIGludCBzc19vbnN0
YWNrOwp9OwoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3Vjb250ZXh0LmgiIDEgMyA0CiMg
MTYgIi91c3IvaW5jbHVkZS9zeXMvdWNvbnRleHQuaCIgMyA0CiNwcmFnbWEgaWRlbnQgIkAoIyl1
Y29udGV4dC5oCTEuMjYJOTkvMDUvMDQgU01JIiAKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9y
ZWdzZXQuaCIgMSAzIDQKIyAxNiAiL3Vzci9pbmNsdWRlL3N5cy9yZWdzZXQuaCIgMyA0CiNwcmFn
bWEgaWRlbnQgIkAoIylyZWdzZXQuaAkxLjI1CTAwLzA5LzE0IFNNSSIgCiMgODAgIi91c3IvaW5j
bHVkZS9zeXMvcmVnc2V0LmgiIDMgNAp0eXBlZGVmIGludCBncmVnX3Q7CiMgMTA3ICIvdXNyL2lu
Y2x1ZGUvc3lzL3JlZ3NldC5oIiAzIDQKdHlwZWRlZiBncmVnX3QgZ3JlZ3NldF90WzE5XTsKIyAx
MjkgIi91c3IvaW5jbHVkZS9zeXMvcmVnc2V0LmgiIDMgNApzdHJ1Y3QgcndpbmRvdyB7CiAgICAg
ICAgZ3JlZ190IHJ3X2xvY2FsWzhdOwogICAgICAgIGdyZWdfdCByd19pbls4XTsKfTsKIyAxNTYg
Ii91c3IvaW5jbHVkZS9zeXMvcmVnc2V0LmgiIDMgNAp0eXBlZGVmIHN0cnVjdCBnd2luZG93cyB7
CiAgICAgICAgaW50IHdiY250OwogICAgICAgIGdyZWdfdCAqc3BidWZbMzFdOwogICAgICAgIHN0
cnVjdCByd2luZG93IHdidWZbMzFdOwp9IGd3aW5kb3dzX3Q7CiMgMTkzICIvdXNyL2luY2x1ZGUv
c3lzL3JlZ3NldC5oIiAzIDQKc3RydWN0IGZwcSB7CiAgICAgICAgdW5zaWduZWQgaW50ICpmcHFf
YWRkcjsKICAgICAgICB1bnNpZ25lZCBpbnQgZnBxX2luc3RyOwp9OwoKc3RydWN0IGZxIHsKICAg
ICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBkb3VibGUgd2hvbGU7CiAgICAgICAgICAgICAg
ICBzdHJ1Y3QgZnBxIGZwcTsKICAgICAgICB9IEZRdTsKfTsKIyAyNjMgIi91c3IvaW5jbHVkZS9z
eXMvcmVnc2V0LmgiIDMgNApzdHJ1Y3QgZnB1IHsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAg
ICAgICB1aW50MzJfdCBmcHVfcmVnc1szMl07CiAgICAgICAgICAgICAgICBkb3VibGUgZnB1X2Ry
ZWdzWzE2XTsKICAgICAgICB9IGZwdV9mcjsKICAgICAgICBzdHJ1Y3QgZnEgKmZwdV9xOwogICAg
ICAgIHVpbnQzMl90IGZwdV9mc3I7CiAgICAgICAgdWludDhfdCBmcHVfcWNudDsKICAgICAgICB1
aW50OF90IGZwdV9xX2VudHJ5c2l6ZTsKICAgICAgICB1aW50OF90IGZwdV9lbjsKfTsKCgoKdHlw
ZWRlZiBzdHJ1Y3QgZnB1IGZwcmVnc2V0X3Q7CiMgMzUwICIvdXNyL2luY2x1ZGUvc3lzL3JlZ3Nl
dC5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGludCB4cnNfaWQ7CiAg
ICAgICAgY2FkZHJfdCB4cnNfcHRyOwp9IHhyc190OwojIDM5NCAiL3Vzci9pbmNsdWRlL3N5cy9y
ZWdzZXQuaCIgMyA0CnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBncmVnc2V0X3QgZ3JlZ3M7CiAg
ICAgICAgZ3dpbmRvd3NfdCAqZ3dpbnM7CiAgICAgICAgZnByZWdzZXRfdCBmcHJlZ3M7CiAgICAg
ICAgeHJzX3QgeHJzOwoKCgoKICAgICAgICBsb25nIGZpbGxlclsxOV07Cgp9IG1jb250ZXh0X3Q7
CiMgNDQzICIvdXNyL2luY2x1ZGUvc3lzL3JlZ3NldC5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUv
djcvc3lzL3ByaXZyZWdzLmgiIDEgMyA0CiMgOSAiL3Vzci9pbmNsdWRlL3Y3L3N5cy9wcml2cmVn
cy5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgjKXByaXZyZWdzLmgJMS41CTk5LzA2LzA1IFNNSSIg
CiMgMjQgIi91c3IvaW5jbHVkZS92Ny9zeXMvcHJpdnJlZ3MuaCIgMyA0CiMgMSAiL3Vzci9pbmNs
dWRlL3Y3L3N5cy9wc3IuaCIgMSAzIDQKCgoKCgoKCiNwcmFnbWEgaWRlbnQgIkAoIylwc3IuaAkx
LjMJOTYvMDkvMTIgU01JIiAKIyA0NSAiL3Vzci9pbmNsdWRlL3Y3L3N5cy9wc3IuaCIgMyA0CnR5
cGVkZWYgaW50IHBzd190OwojIDI1ICIvdXNyL2luY2x1ZGUvdjcvc3lzL3ByaXZyZWdzLmgiIDIg
MyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9mc3IuaCIgMSAzIDQKCgoKCgoKCiNwcmFnbWEgaWRl
bnQgIkAoIylmc3IuaAkxLjMJOTcvMDIvMTEgU01JIiAKIyAyNiAiL3Vzci9pbmNsdWRlL3Y3L3N5
cy9wcml2cmVncy5oIiAyIDMgNAoKCgpzdHJ1Y3QgcmVncyB7CiAgICAgICAgbG9uZyByX3BzcjsK
ICAgICAgICBsb25nIHJfcGM7CiAgICAgICAgbG9uZyByX25wYzsKICAgICAgICBsb25nIHJfeTsK
ICAgICAgICBsb25nIHJfZzE7CiAgICAgICAgbG9uZyByX2cyOwogICAgICAgIGxvbmcgcl9nMzsK
ICAgICAgICBsb25nIHJfZzQ7CiAgICAgICAgbG9uZyByX2c1OwogICAgICAgIGxvbmcgcl9nNjsK
ICAgICAgICBsb25nIHJfZzc7CiAgICAgICAgbG9uZyByX28wOwogICAgICAgIGxvbmcgcl9vMTsK
ICAgICAgICBsb25nIHJfbzI7CiAgICAgICAgbG9uZyByX28zOwogICAgICAgIGxvbmcgcl9vNDsK
ICAgICAgICBsb25nIHJfbzU7CiAgICAgICAgbG9uZyByX282OwogICAgICAgIGxvbmcgcl9vNzsK
fTsKIyA0NDQgIi91c3IvaW5jbHVkZS9zeXMvcmVnc2V0LmgiIDIgMyA0CiMgMjIgIi91c3IvaW5j
bHVkZS9zeXMvdWNvbnRleHQuaCIgMiAzIDQKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwu
aCIgMSAzIDQKIyAyNCAiL3Vzci9pbmNsdWRlL3N5cy91Y29udGV4dC5oIiAyIDMgNAojIDU2ICIv
dXNyL2luY2x1ZGUvc3lzL3Vjb250ZXh0LmgiIDMgNAp0eXBlZGVmIHN0cnVjdCB1Y29udGV4dCB1
Y29udGV4dF90OwoKCgoKCnN0cnVjdCB1Y29udGV4dCB7CgoKCiAgICAgICAgdWludF90IHVjX2Zs
YWdzOwogICAgICAgIHVjb250ZXh0X3QgKnVjX2xpbms7CiAgICAgICAgc2lnc2V0X3QgdWNfc2ln
bWFzazsKICAgICAgICBzdGFja190IHVjX3N0YWNrOwogICAgICAgIG1jb250ZXh0X3QgdWNfbWNv
bnRleHQ7CgoKCiAgICAgICAgbG9uZyB1Y19maWxsZXJbMjNdOwoKfTsKIyAyNDEgIi91c3IvaW5j
bHVkZS9zeXMvc2lnbmFsLmgiIDIgMyA0CiMgMjggIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMiAz
IDQKIyA0NiAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAzIDQKZXh0ZXJuIGNvbnN0IGNoYXIgKipf
c3lzX3NpZ2xpc3RwOwpleHRlcm4gY29uc3QgaW50IF9zeXNfc2lnbGlzdG47CiMgNTcgIi91c3Iv
aW5jbHVkZS9zaWduYWwuaCIgMyA0CmV4dGVybiBpbnQga2lsbChwaWRfdCwgaW50KTsKZXh0ZXJu
IGludCBzaWdhY3Rpb24oaW50LCBjb25zdCBzdHJ1Y3Qgc2lnYWN0aW9uICosIHN0cnVjdCBzaWdh
Y3Rpb24gKik7CgpleHRlcm4gaW50IHNpZ2FkZHNldChzaWdzZXRfdCAqLCBpbnQpOwpleHRlcm4g
aW50IHNpZ2RlbHNldChzaWdzZXRfdCAqLCBpbnQpOwpleHRlcm4gaW50IHNpZ2VtcHR5c2V0KHNp
Z3NldF90ICopOwpleHRlcm4gaW50IHNpZ2ZpbGxzZXQoc2lnc2V0X3QgKik7CmV4dGVybiBpbnQg
c2lnaXNtZW1iZXIoY29uc3Qgc2lnc2V0X3QgKiwgaW50KTsKCmV4dGVybiBpbnQgc2lncGVuZGlu
ZyhzaWdzZXRfdCAqKTsKZXh0ZXJuIGludCBzaWdwcm9jbWFzayhpbnQsIGNvbnN0IHNpZ3NldF90
ICosIHNpZ3NldF90ICopOwpleHRlcm4gaW50IHNpZ3N1c3BlbmQoY29uc3Qgc2lnc2V0X3QgKik7
CgoKCgoKZXh0ZXJuIGludCBnc2lnbmFsKGludCk7CmV4dGVybiBpbnQgKCpzc2lnbmFsKGludCwg
aW50ICgqKShpbnQpKSkoaW50KTsKZXh0ZXJuIGludCBzaWdzZW5kKGlkdHlwZV90LCBpZF90LCBp
bnQpOwpleHRlcm4gaW50IHNpZ3NlbmRzZXQoY29uc3QgcHJvY3NldF90ICosIGludCk7CmV4dGVy
biBpbnQgc2lnMnN0cihpbnQsIGNoYXIgKik7CmV4dGVybiBpbnQgc3RyMnNpZyhjb25zdCBjaGFy
ICosIGludCAqKTsKCgoKCgoKZXh0ZXJuIHZvaWQgKCpic2Rfc2lnbmFsKGludCwgdm9pZCAoKiko
aW50KSkpKGludCk7CmV4dGVybiBpbnQga2lsbHBnKHBpZF90LCBpbnQpOwpleHRlcm4gaW50IHNp
Z2ludGVycnVwdChpbnQsIGludCk7CmV4dGVybiBpbnQgc2lnYWx0c3RhY2soY29uc3Qgc3RhY2tf
dCAqLCBzdGFja190ICopOwpleHRlcm4gaW50IHNpZ2hvbGQoaW50KTsKZXh0ZXJuIGludCBzaWdp
Z25vcmUoaW50KTsKZXh0ZXJuIGludCBzaWdwYXVzZShpbnQpOwpleHRlcm4gaW50IHNpZ3JlbHNl
KGludCk7CmV4dGVybiB2b2lkICgqc2lnc2V0KGludCwgdm9pZCAoKikoaW50KSkpKGludCk7CmV4
dGVybiBpbnQgc2lnc3RhY2soc3RydWN0IHNpZ3N0YWNrICosIHN0cnVjdCBzaWdzdGFjayAqKTsK
CgoKCgoKCmV4dGVybiBpbnQgcHRocmVhZF9raWxsKHB0aHJlYWRfdCwgaW50KTsKZXh0ZXJuIGlu
dCBwdGhyZWFkX3NpZ21hc2soaW50LCBjb25zdCBzaWdzZXRfdCAqLCBzaWdzZXRfdCAqKTsKZXh0
ZXJuIGludCBzaWd3YWl0aW5mbyhjb25zdCBzaWdzZXRfdCAqLCBzaWdpbmZvX3QgKik7CmV4dGVy
biBpbnQgc2lndGltZWR3YWl0KGNvbnN0IHNpZ3NldF90ICosIHNpZ2luZm9fdCAqLCBjb25zdCBz
dHJ1Y3QgdGltZXNwZWMgKik7CmV4dGVybiBpbnQgc2lncXVldWUocGlkX3QsIGludCwgY29uc3Qg
dW5pb24gc2lndmFsKTsKIyAxOTUgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMyA0CmV4dGVybiBp
bnQgc2lnd2FpdChjb25zdCBzaWdzZXRfdCAqLCBpbnQgKik7CiNwcmFnbWEgcmVkZWZpbmVfZXh0
bmFtZSBzaWd3YWl0IF9fcG9zaXhfc2lnd2FpdAojIDEyNyAiL2hvbWUvYmZyaWVzZW4vc3JjL2dy
YXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9zdHVkaW8uaCIgMgojIDEgIi91c3IvbG9jYWwv
aW5jbHVkZS9hc3NlcnQuaCIgMSAzCiMgMjkgIi91c3IvbG9jYWwvaW5jbHVkZS9hc3NlcnQuaCIg
MwpleHRlcm4gdm9pZCBfX2VwcmludGYgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCB1bnNp
Z25lZCwgY29uc3QgY2hhciAqKTsKIyAxMjggIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9H
cmFwaGljc01hZ2ljay9tYWdpY2svc3R1ZGlvLmgiIDIKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9z
eXMvdGltZWIuaCIgMSAzIDQKIyAyMiAiL3Vzci9pbmNsdWRlL3N5cy90aW1lYi5oIiAzIDQKI3By
YWdtYSBpZGVudCAiQCgjKXRpbWViLmgJMS4xMgk5Ni8wNC8yNiBTTUkiIAojIDMzICIvdXNyL2lu
Y2x1ZGUvc3lzL3RpbWViLmgiIDMgNApzdHJ1Y3QgdGltZWIgewogICAgICAgIHRpbWVfdCB0aW1l
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IG1pbGxpdG07CiAgICAgICAgc2hvcnQgdGltZXpvbmU7
CiAgICAgICAgc2hvcnQgZHN0ZmxhZzsKfTsKCgpleHRlcm4gaW50IGZ0aW1lKHN0cnVjdCB0aW1l
YiAqKTsKIyAxMzQgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9t
YWdpY2svc3R1ZGlvLmgiIDIKIyAxNDkgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFw
aGljc01hZ2ljay9tYWdpY2svc3R1ZGlvLmgiCiMgMSAiL3Vzci9pbmNsdWRlL2RpcmVudC5oIiAx
IDMgNAojIDE2ICIvdXNyL2luY2x1ZGUvZGlyZW50LmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMp
ZGlyZW50LmgJMS4zMQkwMS8wNy8yOSBTTUkiIAoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2Rp
cmVudC5oIiAxIDMgNAojIDE2ICIvdXNyL2luY2x1ZGUvc3lzL2RpcmVudC5oIiAzIDQKI3ByYWdt
YSBpZGVudCAiQCgjKWRpcmVudC5oCTEuMzIJOTkvMDUvMDQgU01JIiAKIyAyOCAiL3Vzci9pbmNs
dWRlL3N5cy9kaXJlbnQuaCIgMyA0CnR5cGVkZWYgc3RydWN0IGRpcmVudCB7CiAgICAgICAgaW5v
X3QgZF9pbm87CiAgICAgICAgb2ZmX3QgZF9vZmY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZF9y
ZWNsZW47CiAgICAgICAgY2hhciBkX25hbWVbMV07Cn0gZGlyZW50X3Q7CiMgNTcgIi91c3IvaW5j
bHVkZS9zeXMvZGlyZW50LmgiIDMgNAp0eXBlZGVmIHN0cnVjdCBkaXJlbnQ2NCB7CiAgICAgICAg
aW5vNjRfdCBkX2lubzsKICAgICAgICBvZmY2NF90IGRfb2ZmOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IGRfcmVjbGVuOwogICAgICAgIGNoYXIgZF9uYW1lWzFdOwp9IGRpcmVudDY0X3Q7CiMgOTAg
Ii91c3IvaW5jbHVkZS9zeXMvZGlyZW50LmgiIDMgNAojcHJhZ21hIHJlZGVmaW5lX2V4dG5hbWUg
Z2V0ZGVudHMgZ2V0ZGVudHM2NAojIDEwNiAiL3Vzci9pbmNsdWRlL3N5cy9kaXJlbnQuaCIgMyA0
CmV4dGVybiBpbnQgZ2V0ZGVudHMoaW50LCBzdHJ1Y3QgZGlyZW50ICosIHNpemVfdCk7CiMgMjIg
Ii91c3IvaW5jbHVkZS9kaXJlbnQuaCIgMiAzIDQKIyA0NyAiL3Vzci9pbmNsdWRlL2RpcmVudC5o
IiAzIDQKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBkX2ZkOwogICAgICAgIGludCBkX2xv
YzsKICAgICAgICBpbnQgZF9zaXplOwogICAgICAgIGNoYXIgKmRfYnVmOwp9IERJUjsKIyA2MSAi
L3Vzci9pbmNsdWRlL2RpcmVudC5oIiAzIDQKI3ByYWdtYSByZWRlZmluZV9leHRuYW1lIHJlYWRk
aXIgcmVhZGRpcjY0CiMgNzYgIi91c3IvaW5jbHVkZS9kaXJlbnQuaCIgMyA0CmV4dGVybiBESVIg
Km9wZW5kaXIoY29uc3QgY2hhciAqKTsKCgpleHRlcm4gRElSICpmZG9wZW5kaXIoaW50KTsKCmV4
dGVybiBzdHJ1Y3QgZGlyZW50ICpyZWFkZGlyKERJUiAqKTsKCgpleHRlcm4gbG9uZyB0ZWxsZGly
KERJUiAqKTsKZXh0ZXJuIHZvaWQgc2Vla2RpcihESVIgKiwgbG9uZyk7CgpleHRlcm4gdm9pZCBy
ZXdpbmRkaXIoRElSICopOwpleHRlcm4gaW50IGNsb3NlZGlyKERJUiAqKTsKCgoKCmV4dGVybiBz
dHJ1Y3QgZGlyZW50NjQgKnJlYWRkaXI2NChESVIgKik7CiMgMTc4ICIvdXNyL2luY2x1ZGUvZGly
ZW50LmgiIDMgNAojcHJhZ21hIHJlZGVmaW5lX2V4dG5hbWUgcmVhZGRpcl9yIHJlYWRkaXI2NF9y
CgoKCgpleHRlcm4gaW50IHJlYWRkaXJfcihESVIgKiwgc3RydWN0IGRpcmVudCAqLCBzdHJ1Y3Qg
ZGlyZW50ICoqKTsKCgoKCgoKZXh0ZXJuIGludCByZWFkZGlyNjRfcihESVIgKiwgc3RydWN0IGRp
cmVudDY0ICosIHN0cnVjdCBkaXJlbnQ2NCAqKik7CiMgMTUwICIvaG9tZS9iZnJpZXNlbi9zcmMv
Z3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL3N0dWRpby5oIiAyCgoKIyAxICIvdXNyL2lu
Y2x1ZGUvcHdkLmgiIDEgMyA0CiMgMTYgIi91c3IvaW5jbHVkZS9wd2QuaCIgMyA0CiNwcmFnbWEg
aWRlbnQgIkAoIylwd2QuaAkxLjE5CTk2LzAzLzEyIFNNSSIgCiMgMzEgIi91c3IvaW5jbHVkZS9w
d2QuaCIgMyA0CnN0cnVjdCBwYXNzd2QgewogICAgICAgIGNoYXIgKnB3X25hbWU7CiAgICAgICAg
Y2hhciAqcHdfcGFzc3dkOwogICAgICAgIHVpZF90IHB3X3VpZDsKICAgICAgICBnaWRfdCBwd19n
aWQ7CiAgICAgICAgY2hhciAqcHdfYWdlOwogICAgICAgIGNoYXIgKnB3X2NvbW1lbnQ7CiAgICAg
ICAgY2hhciAqcHdfZ2Vjb3M7CiAgICAgICAgY2hhciAqcHdfZGlyOwogICAgICAgIGNoYXIgKnB3
X3NoZWxsOwp9OwoKCgpzdHJ1Y3QgY29tbWVudCB7CiAgICAgICAgY2hhciAqY19kZXB0OwogICAg
ICAgIGNoYXIgKmNfbmFtZTsKICAgICAgICBjaGFyICpjX2FjY3Q7CiAgICAgICAgY2hhciAqY19i
aW47Cn07CgoKCgpleHRlcm4gc3RydWN0IHBhc3N3ZCAqZ2V0cHd1aWQodWlkX3QpOwpleHRlcm4g
c3RydWN0IHBhc3N3ZCAqZ2V0cHduYW0oY29uc3QgY2hhciAqKTsKCgoKZXh0ZXJuIHN0cnVjdCBw
YXNzd2QgKmdldHB3ZW50X3Ioc3RydWN0IHBhc3N3ZCAqLCBjaGFyICosIGludCk7CmV4dGVybiBz
dHJ1Y3QgcGFzc3dkICpmZ2V0cHdlbnRfcihGSUxFICosIHN0cnVjdCBwYXNzd2QgKiwgY2hhciAq
LCBpbnQpOwpleHRlcm4gc3RydWN0IHBhc3N3ZCAqZmdldHB3ZW50KEZJTEUgKik7CmV4dGVybiBp
bnQgcHV0cHdlbnQoY29uc3Qgc3RydWN0IHBhc3N3ZCAqLCBGSUxFICopOwoKCgoKCmV4dGVybiB2
b2lkIGVuZHB3ZW50KHZvaWQpOwpleHRlcm4gc3RydWN0IHBhc3N3ZCAqZ2V0cHdlbnQodm9pZCk7
CmV4dGVybiB2b2lkIHNldHB3ZW50KHZvaWQpOwojIDE0MSAiL3Vzci9pbmNsdWRlL3B3ZC5oIiAz
IDQKZXh0ZXJuIGludCBnZXRwd3VpZF9yKHVpZF90LCBzdHJ1Y3QgcGFzc3dkICosIGNoYXIgKiwg
aW50LCBzdHJ1Y3QgcGFzc3dkICoqKTsKZXh0ZXJuIGludCBnZXRwd25hbV9yKGNvbnN0IGNoYXIg
Kiwgc3RydWN0IHBhc3N3ZCAqLCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBzdHJ1Y3QgcGFzc3dkICoqKTsKI3ByYWdt
YSByZWRlZmluZV9leHRuYW1lIGdldHB3dWlkX3IgX19wb3NpeF9nZXRwd3VpZF9yCiNwcmFnbWEg
cmVkZWZpbmVfZXh0bmFtZSBnZXRwd25hbV9yIF9fcG9zaXhfZ2V0cHduYW1fcgojIDE1MyAiL2hv
bWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9zdHVkaW8uaCIg
MgoKCgoKCgoKIyAxICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2sv
bWFnaWNrL2ludGVncmFsX3R5cGVzLmgiIDEKIyA1MSAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBo
aWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9pbnRlZ3JhbF90eXBlcy5oIgogIHR5cGVkZWYgc2hv
cnQgZ21faW50MTZfdDsKCgoKCgogIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgZ21fdWludDE2X3Q7
CgoKCgoKICB0eXBlZGVmIGludCBnbV9pbnQzMl90OwoKCgoKCiAgdHlwZWRlZiB1bnNpZ25lZCBp
bnQgZ21fdWludDMyX3Q7CgoKCgoKCgogIHR5cGVkZWYgbG9uZyBsb25nIGdtX2ludDY0X3Q7CiMg
ODcgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svaW50
ZWdyYWxfdHlwZXMuaCIKICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBnbV91aW50NjRfdDsK
IyAxNjEgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2sv
c3R1ZGlvLmgiIDIKIyAxICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdp
Y2svbWFnaWNrL2ltYWdlLmgiIDEKIyAxNCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dy
YXBoaWNzTWFnaWNrL21hZ2ljay9pbWFnZS5oIgojIDEgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFw
aGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svc2VtYXBob3JlLmgiIDEKIyAxMSAiL2hvbWUvYmZy
aWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9zZW1hcGhvcmUuaCIKdHlw
ZWRlZiBzdHJ1Y3QgU2VtYXBob3JlSW5mbyBTZW1hcGhvcmVJbmZvOwoKZXh0ZXJuIFNlbWFwaG9y
ZUluZm8KICAqQWxsb2NhdGVTZW1hcGhvcmVJbmZvKHZvaWQpOwoKZXh0ZXJuIHVuc2lnbmVkIGlu
dAogIExvY2tTZW1hcGhvcmVJbmZvKFNlbWFwaG9yZUluZm8gKiksCiAgVW5sb2NrU2VtYXBob3Jl
SW5mbyhTZW1hcGhvcmVJbmZvICopOwoKZXh0ZXJuIHZvaWQKICBBY3F1aXJlU2VtYXBob3JlSW5m
byhTZW1hcGhvcmVJbmZvICoqKSwKICBEZXN0cm95U2VtYXBob3JlKHZvaWQpLAogIERlc3Ryb3lT
ZW1hcGhvcmVJbmZvKFNlbWFwaG9yZUluZm8gKiopLAogIEluaXRpYWxpemVTZW1hcGhvcmUodm9p
ZCksCiAgTGliZXJhdGVTZW1hcGhvcmVJbmZvKFNlbWFwaG9yZUluZm8gKiopOwojIDE1ICIvaG9t
ZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2ltYWdlLmgiIDIK
IyAxICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2Vy
cm9yLmgiIDEKIyA1NyAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNr
L21hZ2ljay9lcnJvci5oIgp0eXBlZGVmIGVudW0KewogIFVuZGVmaW5lZEV4Y2VwdGlvbiwKICBX
YXJuaW5nRXhjZXB0aW9uID0gMzAwLAogIFJlc291cmNlTGltaXRXYXJuaW5nID0gMzAwLAogIFR5
cGVXYXJuaW5nID0gMzA1LAogIE9wdGlvbldhcm5pbmcgPSAzMTAsCiAgRGVsZWdhdGVXYXJuaW5n
ID0gMzE1LAogIE1pc3NpbmdEZWxlZ2F0ZVdhcm5pbmcgPSAzMjAsCiAgQ29ycnVwdEltYWdlV2Fy
bmluZyA9IDMyNSwKICBGaWxlT3Blbldhcm5pbmcgPSAzMzAsCiAgQmxvYldhcm5pbmcgPSAzMzUs
CiAgU3RyZWFtV2FybmluZyA9IDM0MCwKICBDYWNoZVdhcm5pbmcgPSAzNDUsCiAgQ29kZXJXYXJu
aW5nID0gMzUwLAogIE1vZHVsZVdhcm5pbmcgPSAzNTUsCiAgRHJhd1dhcm5pbmcgPSAzNjAsCiAg
SW1hZ2VXYXJuaW5nID0gMzY1LAogIFhTZXJ2ZXJXYXJuaW5nID0gMzgwLAogIE1vbml0b3JXYXJu
aW5nID0gMzg1LAogIFJlZ2lzdHJ5V2FybmluZyA9IDM5MCwKICBDb25maWd1cmVXYXJuaW5nID0g
Mzk1LAogIEVycm9yRXhjZXB0aW9uID0gNDAwLAogIFJlc291cmNlTGltaXRFcnJvciA9IDQwMCwK
ICBUeXBlRXJyb3IgPSA0MDUsCiAgT3B0aW9uRXJyb3IgPSA0MTAsCiAgRGVsZWdhdGVFcnJvciA9
IDQxNSwKICBNaXNzaW5nRGVsZWdhdGVFcnJvciA9IDQyMCwKICBDb3JydXB0SW1hZ2VFcnJvciA9
IDQyNSwKICBGaWxlT3BlbkVycm9yID0gNDMwLAogIEJsb2JFcnJvciA9IDQzNSwKICBTdHJlYW1F
cnJvciA9IDQ0MCwKICBDYWNoZUVycm9yID0gNDQ1LAogIENvZGVyRXJyb3IgPSA0NTAsCiAgTW9k
dWxlRXJyb3IgPSA0NTUsCiAgRHJhd0Vycm9yID0gNDYwLAogIEltYWdlRXJyb3IgPSA0NjUsCiAg
WFNlcnZlckVycm9yID0gNDgwLAogIE1vbml0b3JFcnJvciA9IDQ4NSwKICBSZWdpc3RyeUVycm9y
ID0gNDkwLAogIENvbmZpZ3VyZUVycm9yID0gNDk1LAogIEZhdGFsRXJyb3JFeGNlcHRpb24gPSA3
MDAsCiAgUmVzb3VyY2VMaW1pdEZhdGFsRXJyb3IgPSA3MDAsCiAgVHlwZUZhdGFsRXJyb3IgPSA3
MDUsCiAgT3B0aW9uRmF0YWxFcnJvciA9IDcxMCwKICBEZWxlZ2F0ZUZhdGFsRXJyb3IgPSA3MTUs
CiAgTWlzc2luZ0RlbGVnYXRlRmF0YWxFcnJvciA9IDcyMCwKICBDb3JydXB0SW1hZ2VGYXRhbEVy
cm9yID0gNzI1LAogIEZpbGVPcGVuRmF0YWxFcnJvciA9IDczMCwKICBCbG9iRmF0YWxFcnJvciA9
IDczNSwKICBTdHJlYW1GYXRhbEVycm9yID0gNzQwLAogIENhY2hlRmF0YWxFcnJvciA9IDc0NSwK
ICBDb2RlckZhdGFsRXJyb3IgPSA3NTAsCiAgTW9kdWxlRmF0YWxFcnJvciA9IDc1NSwKICBEcmF3
RmF0YWxFcnJvciA9IDc2MCwKICBJbWFnZUZhdGFsRXJyb3IgPSA3NjUsCiAgWFNlcnZlckZhdGFs
RXJyb3IgPSA3ODAsCiAgTW9uaXRvckZhdGFsRXJyb3IgPSA3ODUsCiAgUmVnaXN0cnlGYXRhbEVy
cm9yID0gNzkwLAogIENvbmZpZ3VyZUZhdGFsRXJyb3IgPSA3OTUKfSBFeGNlcHRpb25UeXBlOwoK
CgoKdHlwZWRlZiBzdHJ1Y3QgX0V4Y2VwdGlvbkluZm8KewogIGNoYXIKICAgICpyZWFzb24sCiAg
ICAqZGVzY3JpcHRpb247CgogIEV4Y2VwdGlvblR5cGUKICAgIHNldmVyaXR5OwoKICB1bnNpZ25l
ZCBsb25nCiAgICBzaWduYXR1cmU7Cn0gRXhjZXB0aW9uSW5mbzsKCgoKCnR5cGVkZWYgdm9pZAog
ICgqRXJyb3JIYW5kbGVyKShjb25zdCBFeGNlcHRpb25UeXBlLGNvbnN0IGNoYXIgKixjb25zdCBj
aGFyICopOwoKdHlwZWRlZiB2b2lkCiAgKCpGYXRhbEVycm9ySGFuZGxlcikoY29uc3QgRXhjZXB0
aW9uVHlwZSxjb25zdCBjaGFyICosY29uc3QgY2hhciAqKTsKCnR5cGVkZWYgdm9pZAogICgqV2Fy
bmluZ0hhbmRsZXIpKGNvbnN0IEV4Y2VwdGlvblR5cGUsY29uc3QgY2hhciAqLGNvbnN0IGNoYXIg
Kik7CgoKCgpleHRlcm4gY29uc3QgY2hhcgogICpHZXRMb2NhbGVFeGNlcHRpb25NZXNzYWdlKGNv
bnN0IEV4Y2VwdGlvblR5cGUsY29uc3QgY2hhciAqKSwKICAqR2V0TG9jYWxlTWVzc2FnZShjb25z
dCBjaGFyICopOwoKZXh0ZXJuIEVycm9ySGFuZGxlcgogIFNldEVycm9ySGFuZGxlcihFcnJvckhh
bmRsZXIpOwoKZXh0ZXJuIEZhdGFsRXJyb3JIYW5kbGVyCiAgU2V0RmF0YWxFcnJvckhhbmRsZXIo
RmF0YWxFcnJvckhhbmRsZXIpOwoKZXh0ZXJuIHZvaWQKICBDYXRjaEV4Y2VwdGlvbihjb25zdCBF
eGNlcHRpb25JbmZvICopLAogIERlc3Ryb3lFeGNlcHRpb25JbmZvKEV4Y2VwdGlvbkluZm8gKiks
CiAgR2V0RXhjZXB0aW9uSW5mbyhFeGNlcHRpb25JbmZvICopLAogIE1hZ2lja0Vycm9yKGNvbnN0
IEV4Y2VwdGlvblR5cGUsY29uc3QgY2hhciAqLGNvbnN0IGNoYXIgKiksCiAgTWFnaWNrRmF0YWxF
cnJvcihjb25zdCBFeGNlcHRpb25UeXBlLGNvbnN0IGNoYXIgKixjb25zdCBjaGFyICopLAogIE1h
Z2lja1dhcm5pbmcoY29uc3QgRXhjZXB0aW9uVHlwZSxjb25zdCBjaGFyICosY29uc3QgY2hhciAq
KSwKICBTZXRFeGNlcHRpb25JbmZvKEV4Y2VwdGlvbkluZm8gKixFeGNlcHRpb25UeXBlKSwKICBU
aHJvd0V4Y2VwdGlvbihFeGNlcHRpb25JbmZvICosY29uc3QgRXhjZXB0aW9uVHlwZSxjb25zdCBj
aGFyICosY29uc3QgY2hhciAqKTsKCmV4dGVybiBXYXJuaW5nSGFuZGxlcgogIFNldFdhcm5pbmdI
YW5kbGVyKFdhcm5pbmdIYW5kbGVyKTsKIyAxNiAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNz
L0dyYXBoaWNzTWFnaWNrL21hZ2ljay9pbWFnZS5oIiAyCiMgMSAiL2hvbWUvYmZyaWVzZW4vc3Jj
L2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay90aW1lci5oIiAxCiMgMTQgIi9ob21lL2Jm
cmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svdGltZXIuaCIKdHlwZWRl
ZiBlbnVtCnsKICBVbmRlZmluZWRUaW1lclN0YXRlLAogIFN0b3BwZWRUaW1lclN0YXRlLAogIFJ1
bm5pbmdUaW1lclN0YXRlCn0gVGltZXJTdGF0ZTsKCgoKCnR5cGVkZWYgc3RydWN0IF9UaW1lcgp7
CiAgZG91YmxlCiAgICBzdGFydCwKICAgIHN0b3AsCiAgICB0b3RhbDsKfSBUaW1lcjsKCnR5cGVk
ZWYgc3RydWN0IF9UaW1lckluZm8KewogIFRpbWVyCiAgICB1c2VyLAogICAgZWxhcHNlZDsKCiAg
VGltZXJTdGF0ZQogICAgc3RhdGU7CgogIHVuc2lnbmVkIGxvbmcKICAgIHNpZ25hdHVyZTsKfSBU
aW1lckluZm87CgoKCgpleHRlcm4gZG91YmxlCiAgR2V0RWxhcHNlZFRpbWUoVGltZXJJbmZvICop
LAogIEdldFVzZXJUaW1lKFRpbWVySW5mbyAqKTsKCmV4dGVybiB1bnNpZ25lZCBpbnQKICBDb250
aW51ZVRpbWVyKFRpbWVySW5mbyAqKTsKCmV4dGVybiB2b2lkCiAgR2V0VGltZXJJbmZvKFRpbWVy
SW5mbyAqKSwKICBSZXNldFRpbWVyKFRpbWVySW5mbyAqKTsKIyAxNyAiL2hvbWUvYmZyaWVzZW4v
c3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9pbWFnZS5oIiAyCiMgNTIgIi9ob21l
L2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svaW1hZ2UuaCIKdHlw
ZWRlZiB1bnNpZ25lZCBjaGFyIFF1YW50dW07CnR5cGVkZWYgZ21faW50MzJfdCBRdWFudHVtQXJp
dGhUeXBlOwp0eXBlZGVmIGdtX2ludDY0X3QgUXVhbnR1bVN1bVR5cGU7CiMgMTM2ICIvaG9tZS9i
ZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2ltYWdlLmgiCnR5cGVk
ZWYgZW51bQp7CiAgVW5kZWZpbmVkQ2hhbm5lbCwKICBSZWRDaGFubmVsLAogIEN5YW5DaGFubmVs
LAogIEdyZWVuQ2hhbm5lbCwKICBNYWdlbnRhQ2hhbm5lbCwKICBCbHVlQ2hhbm5lbCwKICBZZWxs
b3dDaGFubmVsLAogIE9wYWNpdHlDaGFubmVsLAogIEJsYWNrQ2hhbm5lbCwKICBNYXR0ZUNoYW5u
ZWwKfSBDaGFubmVsVHlwZTsKCnR5cGVkZWYgZW51bQp7CiAgVW5kZWZpbmVkQ2xhc3MsCiAgRGly
ZWN0Q2xhc3MsCiAgUHNldWRvQ2xhc3MKfSBDbGFzc1R5cGU7Cgp0eXBlZGVmIGVudW0KewogIFVu
ZGVmaW5lZENvbG9yc3BhY2UsCiAgUkdCQ29sb3JzcGFjZSwKICBHUkFZQ29sb3JzcGFjZSwKICBU
cmFuc3BhcmVudENvbG9yc3BhY2UsCiAgT0hUQUNvbG9yc3BhY2UsCiAgWFlaQ29sb3JzcGFjZSwK
ICBZQ2JDckNvbG9yc3BhY2UsCiAgWUNDQ29sb3JzcGFjZSwKICBZSVFDb2xvcnNwYWNlLAogIFlQ
YlByQ29sb3JzcGFjZSwKICBZVVZDb2xvcnNwYWNlLAogIENNWUtDb2xvcnNwYWNlLAogIHNSR0JD
b2xvcnNwYWNlLAogIEhTTENvbG9yc3BhY2UsCiAgSFdCQ29sb3JzcGFjZQp9IENvbG9yc3BhY2VU
eXBlOwoKdHlwZWRlZiBlbnVtCnsKICBVbmRlZmluZWRDb21wbGlhbmNlID0gMHgwMDAwLAogIE5v
Q29tcGxpYW5jZSA9IDB4MDAwMCwKICBTVkdDb21wbGlhbmNlID0gMHgwMDAxLAogIFgxMUNvbXBs
aWFuY2UgPSAweDAwMDIsCiAgWFBNQ29tcGxpYW5jZSA9IDB4MDAwNCwKICBBbGxDb21wbGlhbmNl
ID0gMHhmZmZmCn0gQ29tcGxpYW5jZVR5cGU7Cgp0eXBlZGVmIGVudW0KewogIFVuZGVmaW5lZENv
bXBvc2l0ZU9wID0gMCwKICBPdmVyQ29tcG9zaXRlT3AsCiAgSW5Db21wb3NpdGVPcCwKICBPdXRD
b21wb3NpdGVPcCwKICBBdG9wQ29tcG9zaXRlT3AsCiAgWG9yQ29tcG9zaXRlT3AsCiAgUGx1c0Nv
bXBvc2l0ZU9wLAogIE1pbnVzQ29tcG9zaXRlT3AsCiAgQWRkQ29tcG9zaXRlT3AsCiAgU3VidHJh
Y3RDb21wb3NpdGVPcCwKICBEaWZmZXJlbmNlQ29tcG9zaXRlT3AsCiAgTXVsdGlwbHlDb21wb3Np
dGVPcCwKICBCdW1wbWFwQ29tcG9zaXRlT3AsCiAgQ29weUNvbXBvc2l0ZU9wLAogIENvcHlSZWRD
b21wb3NpdGVPcCwKICBDb3B5R3JlZW5Db21wb3NpdGVPcCwKICBDb3B5Qmx1ZUNvbXBvc2l0ZU9w
LAogIENvcHlPcGFjaXR5Q29tcG9zaXRlT3AsCiAgQ2xlYXJDb21wb3NpdGVPcCwKICBEaXNzb2x2
ZUNvbXBvc2l0ZU9wLAogIERpc3BsYWNlQ29tcG9zaXRlT3AsCiAgTW9kdWxhdGVDb21wb3NpdGVP
cCwKICBUaHJlc2hvbGRDb21wb3NpdGVPcCwKICBOb0NvbXBvc2l0ZU9wLAogIERhcmtlbkNvbXBv
c2l0ZU9wLAogIExpZ2h0ZW5Db21wb3NpdGVPcCwKICBIdWVDb21wb3NpdGVPcCwKICBTYXR1cmF0
ZUNvbXBvc2l0ZU9wLAogIENvbG9yaXplQ29tcG9zaXRlT3AsCiAgTHVtaW5pemVDb21wb3NpdGVP
cCwKICBTY3JlZW5Db21wb3NpdGVPcCwKICBPdmVybGF5Q29tcG9zaXRlT3AKfSBDb21wb3NpdGVP
cGVyYXRvcjsKCnR5cGVkZWYgZW51bQp7CiAgVW5kZWZpbmVkQ29tcHJlc3Npb24sCiAgTm9Db21w
cmVzc2lvbiwKICBCWmlwQ29tcHJlc3Npb24sCiAgRmF4Q29tcHJlc3Npb24sCiAgR3JvdXA0Q29t
cHJlc3Npb24sCiAgSlBFR0NvbXByZXNzaW9uLAogIExvc3NsZXNzSlBFR0NvbXByZXNzaW9uLAog
IExaV0NvbXByZXNzaW9uLAogIFJMRUNvbXByZXNzaW9uLAogIFppcENvbXByZXNzaW9uCn0gQ29t
cHJlc3Npb25UeXBlOwoKdHlwZWRlZiBlbnVtCnsKICBVbmRlZmluZWREaXNwb3NlLAogIE5vbmVE
aXNwb3NlLAogIEJhY2tncm91bmREaXNwb3NlLAogIFByZXZpb3VzRGlzcG9zZQp9IERpc3Bvc2VU
eXBlOwoKdHlwZWRlZiBlbnVtCnsKICBVbmRlZmluZWRFbmRpYW4sCiAgTFNCRW5kaWFuLAogIE1T
QkVuZGlhbgp9IEVuZGlhblR5cGU7Cgp0eXBlZGVmIGVudW0KewogIFVuZGVmaW5lZEZpbHRlciwK
ICBQb2ludEZpbHRlciwKICBCb3hGaWx0ZXIsCiAgVHJpYW5nbGVGaWx0ZXIsCiAgSGVybWl0ZUZp
bHRlciwKICBIYW5uaW5nRmlsdGVyLAogIEhhbW1pbmdGaWx0ZXIsCiAgQmxhY2ttYW5GaWx0ZXIs
CiAgR2F1c3NpYW5GaWx0ZXIsCiAgUXVhZHJhdGljRmlsdGVyLAogIEN1YmljRmlsdGVyLAogIENh
dHJvbUZpbHRlciwKICBNaXRjaGVsbEZpbHRlciwKICBMYW5jem9zRmlsdGVyLAogIEJlc3NlbEZp
bHRlciwKICBTaW5jRmlsdGVyCn0gRmlsdGVyVHlwZXM7Cgp0eXBlZGVmIGVudW0KewoKICBOb1Zh
bHVlID0gMHgwMDAwLAoKICBYVmFsdWUgPSAweDAwMDEsCgogIFlWYWx1ZSA9IDB4MDAwMiwKCiAg
V2lkdGhWYWx1ZSA9IDB4MDAwNCwKCiAgSGVpZ2h0VmFsdWUgPSAweDAwMDgsCgogIEFsbFZhbHVl
cyA9IDB4MDAwRiwKCiAgWE5lZ2F0aXZlID0gMHgwMDEwLAoKICBZTmVnYXRpdmUgPSAweDAwMjAs
CiAgUGVyY2VudFZhbHVlID0gMHgxMDAwLAogIEFzcGVjdFZhbHVlID0gMHgyMDAwLAogIExlc3NW
YWx1ZSA9IDB4NDAwMCwKICBHcmVhdGVyVmFsdWUgPSAweDgwMDAsCiAgQXJlYVZhbHVlID0gMHgx
MDAwMAp9IEdlb21ldHJ5RmxhZ3M7Cgp0eXBlZGVmIGVudW0KewoKICBGb3JnZXRHcmF2aXR5LAoK
ICBOb3J0aFdlc3RHcmF2aXR5LAoKICBOb3J0aEdyYXZpdHksCgogIE5vcnRoRWFzdEdyYXZpdHks
CgogIFdlc3RHcmF2aXR5LAoKICBDZW50ZXJHcmF2aXR5LAoKICBFYXN0R3Jhdml0eSwKCiAgU291
dGhXZXN0R3Jhdml0eSwKCiAgU291dGhHcmF2aXR5LAoKICBTb3V0aEVhc3RHcmF2aXR5LAoKICBT
dGF0aWNHcmF2aXR5Cn0gR3Jhdml0eVR5cGU7Cgp0eXBlZGVmIGVudW0KewogIFVuZGVmaW5lZFR5
cGUsCiAgQmlsZXZlbFR5cGUsCiAgR3JheXNjYWxlVHlwZSwKICBHcmF5c2NhbGVNYXR0ZVR5cGUs
CiAgUGFsZXR0ZVR5cGUsCiAgUGFsZXR0ZU1hdHRlVHlwZSwKICBUcnVlQ29sb3JUeXBlLAogIFRy
dWVDb2xvck1hdHRlVHlwZSwKICBDb2xvclNlcGFyYXRpb25UeXBlLAogIENvbG9yU2VwYXJhdGlv
bk1hdHRlVHlwZSwKICBPcHRpbWl6ZVR5cGUKfSBJbWFnZVR5cGU7Cgp0eXBlZGVmIGVudW0Kewog
IFVuZGVmaW5lZEludGVybGFjZSwKICBOb0ludGVybGFjZSwKICBMaW5lSW50ZXJsYWNlLAogIFBs
YW5lSW50ZXJsYWNlLAogIFBhcnRpdGlvbkludGVybGFjZQp9IEludGVybGFjZVR5cGU7Cgp0eXBl
ZGVmIGVudW0KewogIFVuZGVmaW5lZE1vZGUsCiAgRnJhbWVNb2RlLAogIFVuZnJhbWVNb2RlLAog
IENvbmNhdGVuYXRlTW9kZQp9IE1vbnRhZ2VNb2RlOwoKdHlwZWRlZiBlbnVtCnsKICBVbmlmb3Jt
Tm9pc2UsCiAgR2F1c3NpYW5Ob2lzZSwKICBNdWx0aXBsaWNhdGl2ZUdhdXNzaWFuTm9pc2UsCiAg
SW1wdWxzZU5vaXNlLAogIExhcGxhY2lhbk5vaXNlLAogIFBvaXNzb25Ob2lzZQp9IE5vaXNlVHlw
ZTsKCnR5cGVkZWYgZW51bQp7CiAgVW5kZWZpbmVkUHJvZmlsZSwKICBJQ01Qcm9maWxlLAogIElQ
VENQcm9maWxlCn0gUHJvZmlsZVR5cGU7Cgp0eXBlZGVmIGVudW0KewogIFVuZGVmaW5lZFByZXZp
ZXcgPSAwLAogIFJvdGF0ZVByZXZpZXcsCiAgU2hlYXJQcmV2aWV3LAogIFJvbGxQcmV2aWV3LAog
IEh1ZVByZXZpZXcsCiAgU2F0dXJhdGlvblByZXZpZXcsCiAgQnJpZ2h0bmVzc1ByZXZpZXcsCiAg
R2FtbWFQcmV2aWV3LAogIFNwaWZmUHJldmlldywKICBEdWxsUHJldmlldywKICBHcmF5c2NhbGVQ
cmV2aWV3LAogIFF1YW50aXplUHJldmlldywKICBEZXNwZWNrbGVQcmV2aWV3LAogIFJlZHVjZU5v
aXNlUHJldmlldywKICBBZGROb2lzZVByZXZpZXcsCiAgU2hhcnBlblByZXZpZXcsCiAgQmx1clBy
ZXZpZXcsCiAgVGhyZXNob2xkUHJldmlldywKICBFZGdlRGV0ZWN0UHJldmlldywKICBTcHJlYWRQ
cmV2aWV3LAogIFNvbGFyaXplUHJldmlldywKICBTaGFkZVByZXZpZXcsCiAgUmFpc2VQcmV2aWV3
LAogIFNlZ21lbnRQcmV2aWV3LAogIFN3aXJsUHJldmlldywKICBJbXBsb2RlUHJldmlldywKICBX
YXZlUHJldmlldywKICBPaWxQYWludFByZXZpZXcsCiAgQ2hhcmNvYWxEcmF3aW5nUHJldmlldywK
ICBKUEVHUHJldmlldwp9IFByZXZpZXdUeXBlOwoKdHlwZWRlZiBlbnVtCnsKICBJbmRleFF1YW50
dW0sCiAgR3JheVF1YW50dW0sCiAgSW5kZXhBbHBoYVF1YW50dW0sCiAgR3JheUFscGhhUXVhbnR1
bSwKICBSZWRRdWFudHVtLAogIEN5YW5RdWFudHVtLAogIEdyZWVuUXVhbnR1bSwKICBZZWxsb3dR
dWFudHVtLAogIEJsdWVRdWFudHVtLAogIE1hZ2VudGFRdWFudHVtLAogIEFscGhhUXVhbnR1bSwK
ICBCbGFja1F1YW50dW0sCiAgUkdCUXVhbnR1bSwKICBSR0JBUXVhbnR1bSwKICBDTVlLUXVhbnR1
bSwKICBDTVlLQVF1YW50dW0KfSBRdWFudHVtVHlwZTsKCnR5cGVkZWYgZW51bQp7CiAgVW5kZWZp
bmVkSW50ZW50LAogIFNhdHVyYXRpb25JbnRlbnQsCiAgUGVyY2VwdHVhbEludGVudCwKICBBYnNv
bHV0ZUludGVudCwKICBSZWxhdGl2ZUludGVudAp9IFJlbmRlcmluZ0ludGVudDsKCnR5cGVkZWYg
ZW51bQp7CiAgVW5kZWZpbmVkUmVzb2x1dGlvbiwKICBQaXhlbHNQZXJJbmNoUmVzb2x1dGlvbiwK
ICBQaXhlbHNQZXJDZW50aW1ldGVyUmVzb2x1dGlvbgp9IFJlc29sdXRpb25UeXBlOwoKdHlwZWRl
ZiBlbnVtCnsKICBDaGFyUGl4ZWwsCiAgU2hvcnRQaXhlbCwKICBJbnRlZ2VyUGl4ZWwsCiAgTG9u
Z1BpeGVsLAogIEZsb2F0UGl4ZWwsCiAgRG91YmxlUGl4ZWwKfSBTdG9yYWdlVHlwZTsKCnR5cGVk
ZWYgZW51bQp7CiAgVW5kZWZpbmVkVHJhbnNtaXRUeXBlLAogIEZpbGVUcmFuc21pdFR5cGUsCiAg
QmxvYlRyYW5zbWl0VHlwZSwKICBTdHJlYW1UcmFuc21pdFR5cGUsCiAgSW1hZ2VUcmFuc21pdFR5
cGUKfSBUcmFuc21pdFR5cGU7CgoKCgp0eXBlZGVmIHN0cnVjdCBfQWZmaW5lTWF0cml4CnsKICBk
b3VibGUKICAgIHN4LAogICAgcngsCiAgICByeSwKICAgIHN5LAogICAgdHgsCiAgICB0eTsKfSBB
ZmZpbmVNYXRyaXg7Cgp0eXBlZGVmIHN0cnVjdCBfUHJpbWFyeUluZm8KewogIGRvdWJsZQogICAg
eCwKICAgIHksCiAgICB6Owp9IFByaW1hcnlJbmZvOwoKdHlwZWRlZiBzdHJ1Y3QgX0Nocm9tYXRp
Y2l0eUluZm8KewogIFByaW1hcnlJbmZvCiAgICByZWRfcHJpbWFyeSwKICAgIGdyZWVuX3ByaW1h
cnksCiAgICBibHVlX3ByaW1hcnksCiAgICB3aGl0ZV9wb2ludDsKfSBDaHJvbWF0aWNpdHlJbmZv
OwoKdHlwZWRlZiBzdHJ1Y3QgX1BpeGVsUGFja2V0CnsKCiAgUXVhbnR1bQogICAgcmVkLAogICAg
Z3JlZW4sCiAgICBibHVlLAogICAgb3BhY2l0eTsKIyA1MTQgIi9ob21lL2Jmcmllc2VuL3NyYy9n
cmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svaW1hZ2UuaCIKfSBQaXhlbFBhY2tldDsKCnR5
cGVkZWYgc3RydWN0IF9Db2xvckluZm8KewogIGNvbnN0IGNoYXIKICAgICpwYXRoLAogICAgKm5h
bWU7CgogIENvbXBsaWFuY2VUeXBlCiAgICBjb21wbGlhbmNlOwoKICBQaXhlbFBhY2tldAogICAg
Y29sb3I7CgogIHVuc2lnbmVkIGludAogICAgc3RlYWx0aDsKCiAgdW5zaWduZWQgbG9uZwogICAg
c2lnbmF0dXJlOwoKICBzdHJ1Y3QgX0NvbG9ySW5mbwogICAgKnByZXZpb3VzLAogICAgKm5leHQ7
Cn0gQ29sb3JJbmZvOwoKdHlwZWRlZiBzdHJ1Y3QgX0RvdWJsZVBpeGVsUGFja2V0CnsKICBkb3Vi
bGUKICAgIHJlZCwKICAgIGdyZWVuLAogICAgYmx1ZSwKICAgIG9wYWNpdHk7Cn0gRG91YmxlUGl4
ZWxQYWNrZXQ7Cgp0eXBlZGVmIHN0cnVjdCBfRXJyb3JJbmZvCnsKICBkb3VibGUKICAgIG1lYW5f
ZXJyb3JfcGVyX3BpeGVsLAogICAgbm9ybWFsaXplZF9tZWFuX2Vycm9yLAogICAgbm9ybWFsaXpl
ZF9tYXhpbXVtX2Vycm9yOwp9IEVycm9ySW5mbzsKCgp0eXBlZGVmIG9mZl90IEV4dGVuZGVkU2ln
bmVkSW50ZWdyYWxUeXBlOwp0eXBlZGVmIHNpemVfdCBFeHRlbmRlZFVuc2lnbmVkSW50ZWdyYWxU
eXBlOwoKCgoKCnR5cGVkZWYgc3RydWN0IF9GcmFtZUluZm8KewogIHVuc2lnbmVkIGxvbmcKICAg
IHdpZHRoLAogICAgaGVpZ2h0OwoKICBsb25nCiAgICB4LAogICAgeSwKICAgIGlubmVyX2JldmVs
LAogICAgb3V0ZXJfYmV2ZWw7Cn0gRnJhbWVJbmZvOwoKdHlwZWRlZiBRdWFudHVtIEluZGV4UGFj
a2V0OwoKdHlwZWRlZiBzdHJ1Y3QgX0xvbmdQaXhlbFBhY2tldAp7CiAgdW5zaWduZWQgbG9uZwog
ICAgcmVkLAogICAgZ3JlZW4sCiAgICBibHVlLAogICAgb3BhY2l0eTsKfSBMb25nUGl4ZWxQYWNr
ZXQ7Cgp0eXBlZGVmIHN0cnVjdCBfTW9udGFnZUluZm8KewogIGNoYXIKICAgICpnZW9tZXRyeSwK
ICAgICp0aWxlLAogICAgKnRpdGxlLAogICAgKmZyYW1lLAogICAgKnRleHR1cmUsCiAgICAqZm9u
dDsKCiAgZG91YmxlCiAgICBwb2ludHNpemU7CgogIHVuc2lnbmVkIGxvbmcKICAgIGJvcmRlcl93
aWR0aDsKCiAgdW5zaWduZWQgaW50CiAgICBzaGFkb3c7CgogIFBpeGVsUGFja2V0CiAgICBmaWxs
LAogICAgc3Ryb2tlLAogICAgYmFja2dyb3VuZF9jb2xvciwKICAgIGJvcmRlcl9jb2xvciwKICAg
IG1hdHRlX2NvbG9yOwoKICBHcmF2aXR5VHlwZQogICAgZ3Jhdml0eTsKCiAgY2hhcgogICAgZmls
ZW5hbWVbMjA1M107CgogIHVuc2lnbmVkIGxvbmcKICAgIHNpZ25hdHVyZTsKfSBNb250YWdlSW5m
bzsKCnR5cGVkZWYgc3RydWN0IF9Qcm9maWxlSW5mbwp7CiAgc2l6ZV90CiAgICBsZW5ndGg7Cgog
IGNoYXIKICAgICpuYW1lOwoKICB1bnNpZ25lZCBjaGFyCiAgICAqaW5mbzsKfSBQcm9maWxlSW5m
bzsKCnR5cGVkZWYgc3RydWN0IF9SZWN0YW5nbGVJbmZvCnsKICB1bnNpZ25lZCBsb25nCiAgICB3
aWR0aCwKICAgIGhlaWdodDsKCiAgbG9uZwogICAgeCwKICAgIHk7Cn0gUmVjdGFuZ2xlSW5mbzsK
CnR5cGVkZWYgc3RydWN0IF9TZWdtZW50SW5mbwp7CiAgZG91YmxlCiAgICB4MSwKICAgIHkxLAog
ICAgeDIsCiAgICB5MjsKfSBTZWdtZW50SW5mbzsKCnR5cGVkZWYgc3RydWN0IF9Bc2NpaTg1SW5m
byBfQXNjaWk4NUluZm9fOwoKdHlwZWRlZiBzdHJ1Y3QgX0Jsb2JJbmZvIF9CbG9iSW5mb187Cgp0
eXBlZGVmIHN0cnVjdCBfSW1hZ2VBdHRyaWJ1dGUgX0ltYWdlQXR0cmlidXRlXzsKCnR5cGVkZWYg
c3RydWN0IF9JbWFnZQp7CiAgQ2xhc3NUeXBlCiAgICBjbGFzczsKCiAgQ29sb3JzcGFjZVR5cGUK
ICAgIGNvbG9yc3BhY2U7CgogIENvbXByZXNzaW9uVHlwZQogICAgY29tcHJlc3Npb247CgogIHVu
c2lnbmVkIGludAogICAgZGl0aGVyLAogICAgdGFpbnQsCiAgICBtYXR0ZTsKCiAgdW5zaWduZWQg
bG9uZwogICAgY29sdW1ucywKICAgIHJvd3M7CgogIHVuc2lnbmVkIGxvbmcKICAgIGRlcHRoLAog
ICAgY29sb3JzOwoKICBQaXhlbFBhY2tldAogICAgKmNvbG9ybWFwOwoKICBQaXhlbFBhY2tldAog
ICAgYmFja2dyb3VuZF9jb2xvciwKICAgIGJvcmRlcl9jb2xvciwKICAgIG1hdHRlX2NvbG9yOwoK
ICBkb3VibGUKICAgIGdhbW1hOwoKICBDaHJvbWF0aWNpdHlJbmZvCiAgICBjaHJvbWF0aWNpdHk7
CgogIFByb2ZpbGVJbmZvCiAgICBjb2xvcl9wcm9maWxlLAogICAgaXB0Y19wcm9maWxlLAogICAg
KmdlbmVyaWNfcHJvZmlsZTsKCiAgdW5zaWduZWQgbG9uZwogICAgZ2VuZXJpY19wcm9maWxlczsK
CiAgUmVuZGVyaW5nSW50ZW50CiAgICByZW5kZXJpbmdfaW50ZW50OwoKICBSZXNvbHV0aW9uVHlw
ZQogICAgdW5pdHM7CgogIGNoYXIKICAgICptb250YWdlLAogICAgKmRpcmVjdG9yeSwKICAgICpn
ZW9tZXRyeTsKCiAgbG9uZwogICAgb2Zmc2V0OwoKICBkb3VibGUKICAgIHhfcmVzb2x1dGlvbiwK
ICAgIHlfcmVzb2x1dGlvbjsKCiAgUmVjdGFuZ2xlSW5mbwogICAgcGFnZSwKICAgIHRpbGVfaW5m
bzsKCiAgZG91YmxlCiAgICBibHVyLAogICAgZnV6ejsKCiAgRmlsdGVyVHlwZXMKICAgIGZpbHRl
cjsKCiAgSW50ZXJsYWNlVHlwZQogICAgaW50ZXJsYWNlOwoKICBFbmRpYW5UeXBlCiAgICBlbmRp
YW47CgogIEdyYXZpdHlUeXBlCiAgICBncmF2aXR5OwoKICBDb21wb3NpdGVPcGVyYXRvcgogICAg
Y29tcG9zZTsKCiAgRGlzcG9zZVR5cGUKICAgIGRpc3Bvc2U7CgogIHN0cnVjdCBfSW1hZ2UKICAg
ICpjbGlwX21hc2s7CgogIHVuc2lnbmVkIGxvbmcKICAgIHNjZW5lLAogICAgZGVsYXksCiAgICBp
dGVyYXRpb25zLAogICAgdG90YWxfY29sb3JzOwoKICBsb25nCiAgICBzdGFydF9sb29wOwoKICBF
cnJvckluZm8KICAgIGVycm9yOwoKICBUaW1lckluZm8KICAgIHRpbWVyOwoKICB2b2lkCiAgICAq
Y2xpZW50X2RhdGE7CgogIHZvaWQKICAgICpjYWNoZTsKCiAgX0ltYWdlQXR0cmlidXRlXwogICAg
KmF0dHJpYnV0ZXM7CgogIF9Bc2NpaTg1SW5mb18KICAgICphc2NpaTg1OwoKICBfQmxvYkluZm9f
CiAgICAqYmxvYjsKCiAgY2hhcgogICAgZmlsZW5hbWVbMjA1M10sCiAgICBtYWdpY2tfZmlsZW5h
bWVbMjA1M10sCiAgICBtYWdpY2tbMjA1M107CgogIHVuc2lnbmVkIGxvbmcKICAgIG1hZ2lja19j
b2x1bW5zLAogICAgbWFnaWNrX3Jvd3M7CgogIEV4Y2VwdGlvbkluZm8KICAgIGV4Y2VwdGlvbjsK
CiAgbG9uZwogICAgcmVmZXJlbmNlX2NvdW50OwoKICBTZW1hcGhvcmVJbmZvCiAgICAqc2VtYXBo
b3JlOwoKICB1bnNpZ25lZCBsb25nCiAgICBzaWduYXR1cmU7CgogIHN0cnVjdCBfSW1hZ2UKICAg
ICpwcmV2aW91cywKICAgICpsaXN0LAogICAgKm5leHQ7Cn0gSW1hZ2U7Cgp0eXBlZGVmIHVuc2ln
bmVkIGludAogICgqU3RyZWFtSGFuZGxlcikoY29uc3QgSW1hZ2UgKixjb25zdCB2b2lkICosY29u
c3Qgc2l6ZV90KTsKCnR5cGVkZWYgc3RydWN0IF9JbWFnZUluZm8KewogIENvbXByZXNzaW9uVHlw
ZQogICAgY29tcHJlc3Npb247CgogIHVuc2lnbmVkIGludAogICAgdGVtcG9yYXJ5LAogICAgYWRq
b2luLAogICAgYWZmaXJtLAogICAgYW50aWFsaWFzOwoKICB1bnNpZ25lZCBsb25nCiAgICBzdWJp
bWFnZSwKICAgIHN1YnJhbmdlLAogICAgZGVwdGg7CgogIGNoYXIKICAgICpzaXplLAogICAgKnRp
bGUsCiAgICAqcGFnZTsKCiAgSW50ZXJsYWNlVHlwZQogICAgaW50ZXJsYWNlOwoKICBFbmRpYW5U
eXBlCiAgICBlbmRpYW47CgogIFJlc29sdXRpb25UeXBlCiAgICB1bml0czsKCiAgdW5zaWduZWQg
bG9uZwogICAgcXVhbGl0eTsKCiAgY2hhcgogICAgKnNhbXBsaW5nX2ZhY3RvciwKICAgICpzZXJ2
ZXJfbmFtZSwKICAgICpmb250LAogICAgKnRleHR1cmUsCiAgICAqZGVuc2l0eTsKCiAgZG91Ymxl
CiAgICBwb2ludHNpemU7CgogIGRvdWJsZQogICAgZnV6ejsKCiAgUGl4ZWxQYWNrZXQKICAgIHBl
biwKICAgIGJhY2tncm91bmRfY29sb3IsCiAgICBib3JkZXJfY29sb3IsCiAgICBtYXR0ZV9jb2xv
cjsKCiAgdW5zaWduZWQgaW50CiAgICBkaXRoZXIsCiAgICBtb25vY2hyb21lOwoKICBDb2xvcnNw
YWNlVHlwZQogICAgY29sb3JzcGFjZTsKCiAgSW1hZ2VUeXBlCiAgICB0eXBlOwoKICBQcmV2aWV3
VHlwZQogICAgcHJldmlld190eXBlOwoKICBsb25nCiAgICBncm91cDsKCiAgdW5zaWduZWQgaW50
CiAgICBwaW5nLAogICAgdmVyYm9zZTsKCiAgY2hhcgogICAgKnZpZXcsCiAgICAqYXV0aGVudGlj
YXRlOwoKICBJbWFnZQogICAgKmF0dHJpYnV0ZXM7CgogIHZvaWQKICAgICpjbGllbnRfZGF0YTsK
CiAgdm9pZAogICAgKmNhY2hlOwoKICBTdHJlYW1IYW5kbGVyCiAgICBzdHJlYW07CgogIEZJTEUK
ICAgICpmaWxlOwoKICB2b2lkCiAgICAqYmxvYjsKCiAgc2l6ZV90CiAgICBsZW5ndGg7CgogIGNo
YXIKICAgIG1hZ2lja1syMDUzXSwKICAgIHVuaXF1ZVsyMDUzXSwKICAgIHplcm9bMjA1M10sCiAg
ICBmaWxlbmFtZVsyMDUzXTsKCiAgdW5zaWduZWQgbG9uZwogICAgc2lnbmF0dXJlOwp9IEltYWdl
SW5mbzsKCgoKCmV4dGVybiBjb25zdCBjaGFyCiAgKkJhY2tncm91bmRDb2xvciwKICAqQm9yZGVy
Q29sb3IsCiAgKkRlZmF1bHRUaWxlRnJhbWUsCiAgKkRlZmF1bHRUaWxlR2VvbWV0cnksCiAgKkRl
ZmF1bHRUaWxlTGFiZWwsCiAgKkZvcmVncm91bmRDb2xvciwKICAqTWF0dGVDb2xvciwKICAqTG9h
ZEltYWdlVGV4dCwKICAqTG9hZEltYWdlc1RleHQsCiAgKlBTRGVuc2l0eUdlb21ldHJ5LAogICpQ
U1BhZ2VHZW9tZXRyeSwKICAqU2F2ZUltYWdlVGV4dCwKICAqU2F2ZUltYWdlc1RleHQ7CgpleHRl
cm4gY29uc3QgdW5zaWduZWQgbG9uZwogIERlZmF1bHRDb21wcmVzc2lvblF1YWxpdHk7CgoKCgoK
ZXh0ZXJuIEV4Y2VwdGlvblR5cGUKICBDYXRjaEltYWdlRXhjZXB0aW9uKEltYWdlICopOwoKZXh0
ZXJuIEltYWdlCiAgKkFsbG9jYXRlSW1hZ2UoY29uc3QgSW1hZ2VJbmZvICopLAogICpBcHBlbmRJ
bWFnZXMoY29uc3QgSW1hZ2UgKixjb25zdCB1bnNpZ25lZCBpbnQsRXhjZXB0aW9uSW5mbyAqKSwK
ICAqQXZlcmFnZUltYWdlcyhjb25zdCBJbWFnZSAqLEV4Y2VwdGlvbkluZm8gKiksCiAgKkNsb25l
SW1hZ2UoY29uc3QgSW1hZ2UgKixjb25zdCB1bnNpZ25lZCBsb25nLGNvbnN0IHVuc2lnbmVkIGxv
bmcsCiAgIGNvbnN0IHVuc2lnbmVkIGludCxFeGNlcHRpb25JbmZvICopLAogICpSZWZlcmVuY2VJ
bWFnZShJbWFnZSAqKTsKCmV4dGVybiBJbWFnZUluZm8KICAqQ2xvbmVJbWFnZUluZm8oY29uc3Qg
SW1hZ2VJbmZvICopOwoKZXh0ZXJuIEltYWdlVHlwZQogIEdldEltYWdlVHlwZShjb25zdCBJbWFn
ZSAqLEV4Y2VwdGlvbkluZm8gKik7CgpleHRlcm4gaW50CiAgR2V0SW1hZ2VHZW9tZXRyeShjb25z
dCBJbWFnZSAqLGNvbnN0IGNoYXIgKixjb25zdCB1bnNpZ25lZCBpbnQsCiAgUmVjdGFuZ2xlSW5m
byAqKTsKCgpleHRlcm4gUmVjdGFuZ2xlSW5mbwogIEdldEltYWdlQm91bmRpbmdCb3goY29uc3Qg
SW1hZ2UgKixFeGNlcHRpb25JbmZvICpleGNlcHRpb24pOwoKZXh0ZXJuIHVuc2lnbmVkIGludAog
IEFsbG9jYXRlSW1hZ2VDb2xvcm1hcChJbWFnZSAqLGNvbnN0IHVuc2lnbmVkIGxvbmcpLAogIEFu
aW1hdGVJbWFnZXMoY29uc3QgSW1hZ2VJbmZvICppbWFnZV9pbmZvLEltYWdlICppbWFnZSksCiAg
Q2hhbm5lbEltYWdlKEltYWdlICosY29uc3QgQ2hhbm5lbFR5cGUpLAogIENsaXBJbWFnZShJbWFn
ZSAqKSwKICBEaXNwbGF5SW1hZ2VzKGNvbnN0IEltYWdlSW5mbyAqaW1hZ2VfaW5mbyxJbWFnZSAq
aW1hZ2UpLAogIEdyYWRpZW50SW1hZ2UoSW1hZ2UgKixjb25zdCBQaXhlbFBhY2tldCAqLGNvbnN0
IFBpeGVsUGFja2V0ICopLAogIElzSW1hZ2VzRXF1YWwoSW1hZ2UgKixjb25zdCBJbWFnZSAqKSwK
ICBJc1RhaW50SW1hZ2UoY29uc3QgSW1hZ2UgKiksCiAgSXNTdWJpbWFnZShjb25zdCBjaGFyICos
Y29uc3QgdW5zaWduZWQgaW50KSwKICBQbGFzbWFJbWFnZShJbWFnZSAqLGNvbnN0IFNlZ21lbnRJ
bmZvICosdW5zaWduZWQgbG9uZyx1bnNpZ25lZCBsb25nKSwKICBSR0JUcmFuc2Zvcm1JbWFnZShJ
bWFnZSAqLGNvbnN0IENvbG9yc3BhY2VUeXBlKSwKICBTZXRJbWFnZUNsaXBNYXNrKEltYWdlICos
SW1hZ2UgKiksCiAgU2V0SW1hZ2VEZXB0aChJbWFnZSAqLGNvbnN0IHVuc2lnbmVkIGxvbmcpLAog
IFNldEltYWdlSW5mbyhJbWFnZUluZm8gKixjb25zdCB1bnNpZ25lZCBpbnQsRXhjZXB0aW9uSW5m
byAqKSwKICBTb3J0Q29sb3JtYXBCeUludGVuc2l0eShJbWFnZSAqKSwKICBUcmFuc2Zvcm1SR0JJ
bWFnZShJbWFnZSAqLGNvbnN0IENvbG9yc3BhY2VUeXBlKTsKCmV4dGVybiB1bnNpZ25lZCBsb25n
CiAgR2V0SW1hZ2VEZXB0aChjb25zdCBJbWFnZSAqLEV4Y2VwdGlvbkluZm8gKik7CgpleHRlcm4g
dm9pZAogIEFsbG9jYXRlTmV4dEltYWdlKGNvbnN0IEltYWdlSW5mbyAqLEltYWdlICopLAogIEN5
Y2xlQ29sb3JtYXBJbWFnZShJbWFnZSAqLGNvbnN0IGludCksCiAgRGVzY3JpYmVJbWFnZShJbWFn
ZSAqLEZJTEUgKixjb25zdCB1bnNpZ25lZCBpbnQpLAogIERlc3Ryb3lJbWFnZShJbWFnZSAqKSwK
ICBEZXN0cm95SW1hZ2VJbmZvKEltYWdlSW5mbyAqKSwKICBHZXRJbWFnZUV4Y2VwdGlvbihJbWFn
ZSAqLEV4Y2VwdGlvbkluZm8gKiksCiAgR2V0SW1hZ2VJbmZvKEltYWdlSW5mbyAqKSwKICBNb2Rp
ZnlJbWFnZShJbWFnZSAqKixFeGNlcHRpb25JbmZvICopLAogIFNldEltYWdlKEltYWdlICosY29u
c3QgUXVhbnR1bSksCiAgU2V0SW1hZ2VPcGFjaXR5KEltYWdlICosY29uc3QgdW5zaWduZWQgaW50
KSwKICBTZXRJbWFnZVR5cGUoSW1hZ2UgKixjb25zdCBJbWFnZVR5cGUpLAogIFN5bmNJbWFnZShJ
bWFnZSAqKSwKICBUZXh0dXJlSW1hZ2UoSW1hZ2UgKixjb25zdCBJbWFnZSAqKSwKICBUcmFuc2Zv
cm1Db2xvcnNwYWNlKEltYWdlICosY29uc3QgQ29sb3JzcGFjZVR5cGUpOwojIDE2MiAiL2hvbWUv
YmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9zdHVkaW8uaCIgMgoj
IDEgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svbGlz
dC5oIiAxCiMgMTEgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9t
YWdpY2svbGlzdC5oIgpleHRlcm4gSW1hZ2UKICAqQ2xvbmVJbWFnZUxpc3QoY29uc3QgSW1hZ2Ug
KixFeGNlcHRpb25JbmZvICopLAogICpHZXRGaXJzdEltYWdlSW5MaXN0KGNvbnN0IEltYWdlICop
LAogICpHZXRJbWFnZUZyb21MaXN0KGNvbnN0IEltYWdlICosY29uc3QgbG9uZyksCiAgKkdldExh
c3RJbWFnZUluTGlzdChjb25zdCBJbWFnZSAqKSwKICAqR2V0TmV4dEltYWdlSW5MaXN0KGNvbnN0
IEltYWdlICopLAogICpHZXRQcmV2aW91c0ltYWdlSW5MaXN0KGNvbnN0IEltYWdlICopLAogICoq
SW1hZ2VMaXN0VG9BcnJheShjb25zdCBJbWFnZSAqLEV4Y2VwdGlvbkluZm8gKiksCiAgKk5ld0lt
YWdlTGlzdCh2b2lkKSwKICAqUmVtb3ZlTGFzdEltYWdlRnJvbUxpc3QoSW1hZ2UgKiopLAogICpS
ZW1vdmVGaXJzdEltYWdlRnJvbUxpc3QoSW1hZ2UgKiopLAogICpTcGxpdEltYWdlTGlzdChJbWFn
ZSAqKSwKICAqU3luY05leHRJbWFnZUluTGlzdChjb25zdCBJbWFnZSAqKTsKCmV4dGVybiBsb25n
CiAgR2V0SW1hZ2VJbmRleEluTGlzdChjb25zdCBJbWFnZSAqKTsKCmV4dGVybiB1bnNpZ25lZCBs
b25nCiAgR2V0SW1hZ2VMaXN0TGVuZ3RoKGNvbnN0IEltYWdlICopOwoKZXh0ZXJuIHZvaWQKICBB
cHBlbmRJbWFnZVRvTGlzdChJbWFnZSAqKixJbWFnZSAqKSwKICBEZWxldGVJbWFnZUZyb21MaXN0
KEltYWdlICoqKSwKICBEZXN0cm95SW1hZ2VMaXN0KEltYWdlICopLAogIEluc2VydEltYWdlSW5M
aXN0KEltYWdlICoqLEltYWdlICopLAogIFByZXBlbmRJbWFnZVRvTGlzdChJbWFnZSAqKixJbWFn
ZSAqKSwKICBSZXZlcnNlSW1hZ2VMaXN0KEltYWdlICoqKSwKICBTcGxpY2VJbWFnZUludG9MaXN0
KEltYWdlICoqLGNvbnN0IHVuc2lnbmVkIGxvbmcsSW1hZ2UgKik7CiMgMTYzICIvaG9tZS9iZnJp
ZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL3N0dWRpby5oIiAyCgoKCiMg
MSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lcy5oIiAxIDMgNAojIDExICIvdXNyL2luY2x1ZGUvc3lz
L3RpbWVzLmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMpdGltZXMuaAkxLjEwCTk3LzA4LzEyIFNN
SSIgCiMgMjIgIi91c3IvaW5jbHVkZS9zeXMvdGltZXMuaCIgMyA0CnN0cnVjdCB0bXMgewogICAg
ICAgIGNsb2NrX3QgdG1zX3V0aW1lOwogICAgICAgIGNsb2NrX3QgdG1zX3N0aW1lOwogICAgICAg
IGNsb2NrX3QgdG1zX2N1dGltZTsKICAgICAgICBjbG9ja190IHRtc19jc3RpbWU7Cn07CiMgNDQg
Ii91c3IvaW5jbHVkZS9zeXMvdGltZXMuaCIgMyA0CmNsb2NrX3QgdGltZXMoc3RydWN0IHRtcyAq
KTsKIyAxNjcgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdp
Y2svc3R1ZGlvLmgiIDIKIyAxOTIgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGlj
c01hZ2ljay9tYWdpY2svc3R1ZGlvLmgiCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9tbWFuLmgiIDEg
MyA0CiMgMzQgIi91c3IvaW5jbHVkZS9zeXMvbW1hbi5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgj
KW1tYW4uaAkxLjQxCTAxLzEyLzEyIFNNSSIKIyAxMTggIi91c3IvaW5jbHVkZS9zeXMvbW1hbi5o
IiAzIDQKI3ByYWdtYSByZWRlZmluZV9leHRuYW1lIG1tYXAgbW1hcDY0CiMgMTM4ICIvdXNyL2lu
Y2x1ZGUvc3lzL21tYW4uaCIgMyA0CmV4dGVybiB2b2lkICptbWFwKHZvaWQgKiwgc2l6ZV90LCBp
bnQsIGludCwgaW50LCBvZmZfdCk7CmV4dGVybiBpbnQgbXVubWFwKHZvaWQgKiwgc2l6ZV90KTsK
ZXh0ZXJuIGludCBtcHJvdGVjdCh2b2lkICosIHNpemVfdCwgaW50KTsKZXh0ZXJuIGludCBtc3lu
Yyh2b2lkICosIHNpemVfdCwgaW50KTsKCmV4dGVybiBpbnQgbWxvY2soY29uc3Qgdm9pZCAqLCBz
aXplX3QpOwpleHRlcm4gaW50IG11bmxvY2soY29uc3Qgdm9pZCAqLCBzaXplX3QpOwpleHRlcm4g
aW50IHNobV9vcGVuKGNvbnN0IGNoYXIgKiwgaW50LCBtb2RlX3QpOwpleHRlcm4gaW50IHNobV91
bmxpbmsoY29uc3QgY2hhciAqKTsKCgoKCmV4dGVybiB2b2lkICptbWFwNjQodm9pZCAqLCBzaXpl
X3QsIGludCwgaW50LCBpbnQsIG9mZjY0X3QpOwojIDE3OSAiL3Vzci9pbmNsdWRlL3N5cy9tbWFu
LmgiIDMgNApleHRlcm4gaW50IG1sb2NrYWxsKGludCk7CmV4dGVybiBpbnQgbXVubG9ja2FsbCh2
b2lkKTsKIyAyMTYgIi91c3IvaW5jbHVkZS9zeXMvbW1hbi5oIiAzIDQKc3RydWN0IG1lbWNudGxf
bWhhIHsKICAgICAgICB1aW50X3QgbWhhX2NtZDsKICAgICAgICB1aW50X3QgbWhhX2ZsYWdzOwog
ICAgICAgIHNpemVfdCBtaGFfcGFnZXNpemU7Cn07CiMgMjg2ICIvdXNyL2luY2x1ZGUvc3lzL21t
YW4uaCIgMyA0CnR5cGVkZWYgc3RydWN0IG1lbWluZm8gewogICAgICAgIGNvbnN0IHVpbnQ2NF90
ICptaV9pbmFkZHI7CiAgICAgICAgY29uc3QgdWludF90ICptaV9pbmZvX3JlcTsKICAgICAgICB1
aW50NjRfdCAqbWlfb3V0ZGF0YTsKICAgICAgICB1aW50X3QgKm1pX3ZhbGlkaXR5OwogICAgICAg
IGludCBtaV9pbmZvX2NvdW50Owp9IG1lbWluZm9fdDsKIyAxOTMgIi9ob21lL2Jmcmllc2VuL3Ny
Yy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svc3R1ZGlvLmgiIDIKCgojIDEgIi91c3Iv
aW5jbHVkZS9wdGhyZWFkLmgiIDEgMyA0CiMgOSAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMyA0
CiNwcmFnbWEgaWRlbnQgIkAoIylwdGhyZWFkLmgJMS4zMgkwMS8xMS8xMCBTTUkiCgoKCgojIDEg
Ii91c3IvaW5jbHVkZS9zY2hlZC5oIiAxIDMgNAojIDExICIvdXNyL2luY2x1ZGUvc2NoZWQuaCIg
MyA0CiNwcmFnbWEgaWRlbnQgIkAoIylzY2hlZC5oCTEuOQk5OC8wMS8xNiBTTUkiCiMgMjAgIi91
c3IvaW5jbHVkZS9zY2hlZC5oIiAzIDQKc3RydWN0IHNjaGVkX3BhcmFtIHsKICAgICAgICBpbnQg
c2NoZWRfcHJpb3JpdHk7CiAgICAgICAgaW50IHNjaGVkX25pY2VsaW07CiAgICAgICAgaW50IHNj
aGVkX25pY2U7CiAgICAgICAgaW50IHNjaGVkX3BhZFs2XTsKCgoKfTsKIyA0NCAiL3Vzci9pbmNs
dWRlL3NjaGVkLmgiIDMgNAppbnQgc2NoZWRfZ2V0cGFyYW0ocGlkX3QgcGlkLCBzdHJ1Y3Qgc2No
ZWRfcGFyYW0gKnBhcmFtKTsKaW50IHNjaGVkX3NldHBhcmFtKHBpZF90IHBpZCwgY29uc3Qgc3Ry
dWN0IHNjaGVkX3BhcmFtICpwYXJhbSk7CmludCBzY2hlZF9nZXRzY2hlZHVsZXIocGlkX3QgcGlk
KTsKaW50IHNjaGVkX3NldHNjaGVkdWxlcihwaWRfdCBwaWQsIGludCBwb2xpY3ksCiAgICAgICAg
ICAgICAgICBjb25zdCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKnBhcmFtKTsKaW50IHNjaGVkX3lpZWxk
KHZvaWQpOwppbnQgc2NoZWRfZ2V0X3ByaW9yaXR5X21heChpbnQgcG9saWN5KTsKaW50IHNjaGVk
X2dldF9wcmlvcml0eV9taW4oaW50IHBvbGljeSk7CmludCBzY2hlZF9ycl9nZXRfaW50ZXJ2YWwo
cGlkX3QgcGlkLCBzdHJ1Y3QgdGltZXNwZWMgKmludGVydmFsKTsKIyAxNSAiL3Vzci9pbmNsdWRl
L3B0aHJlYWQuaCIgMiAzIDQKIyAxMTEgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDMgNAp0eXBl
ZGVmIHN0cnVjdCBfY2xlYW51cCB7CiAgICAgICAgdWludHB0cl90IHB0aHJlYWRfY2xlYW51cF9w
YWRbNF07Cn0gX2NsZWFudXBfdDsKCgoKdm9pZCBfX3B0aHJlYWRfY2xlYW51cF9wdXNoKHZvaWQg
KCpyb3V0aW5lKSh2b2lkICopLCB2b2lkICphcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2FkZHJfdCBmcCwgX2NsZWFudXBfdCAqaW5mbyk7CnZvaWQgX19wdGhy
ZWFkX2NsZWFudXBfcG9wKGludCBleCwgX2NsZWFudXBfdCAqaW5mbyk7CmNhZGRyX3QgX2dldGZw
KHZvaWQpOwojIDEzNCAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMyA0CnR5cGVkZWYgdm9pZCAo
Kl9Wb2lkZnApKHZvaWQqKTsKIyAxNTUgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDMgNApleHRl
cm4gaW50IHB0aHJlYWRfYXR0cl9pbml0KHB0aHJlYWRfYXR0cl90ICopOwpleHRlcm4gaW50IHB0
aHJlYWRfYXR0cl9kZXN0cm95KHB0aHJlYWRfYXR0cl90ICopOwpleHRlcm4gaW50IHB0aHJlYWRf
YXR0cl9zZXRzdGFja3NpemUocHRocmVhZF9hdHRyX3QgKiwgc2l6ZV90KTsKZXh0ZXJuIGludCBw
dGhyZWFkX2F0dHJfZ2V0c3RhY2tzaXplKGNvbnN0IHB0aHJlYWRfYXR0cl90ICosIHNpemVfdCAq
KTsKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0c3RhY2thZGRyKHB0aHJlYWRfYXR0cl90ICos
IHZvaWQgKik7CmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX2dldHN0YWNrYWRkcihjb25zdCBwdGhy
ZWFkX2F0dHJfdCAqLCB2b2lkICoqKTsKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0ZGV0YWNo
c3RhdGUocHRocmVhZF9hdHRyX3QgKiwgaW50KTsKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0
ZGV0YWNoc3RhdGUoY29uc3QgcHRocmVhZF9hdHRyX3QgKiwgaW50ICopOwpleHRlcm4gaW50IHB0
aHJlYWRfYXR0cl9zZXRzY29wZShwdGhyZWFkX2F0dHJfdCAqLCBpbnQpOwpleHRlcm4gaW50IHB0
aHJlYWRfYXR0cl9nZXRzY29wZShjb25zdCBwdGhyZWFkX2F0dHJfdCAqLCBpbnQgKik7CmV4dGVy
biBpbnQgcHRocmVhZF9hdHRyX3NldGluaGVyaXRzY2hlZChwdGhyZWFkX2F0dHJfdCAqLCBpbnQp
OwpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9nZXRpbmhlcml0c2NoZWQoY29uc3QgcHRocmVhZF9h
dHRyX3QgKiwgaW50ICopOwpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9zZXRzY2hlZHBvbGljeShw
dGhyZWFkX2F0dHJfdCAqLCBpbnQpOwpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9nZXRzY2hlZHBv
bGljeShjb25zdCBwdGhyZWFkX2F0dHJfdCAqLCBpbnQgKik7CmV4dGVybiBpbnQgcHRocmVhZF9h
dHRyX3NldHNjaGVkcGFyYW0ocHRocmVhZF9hdHRyX3QgKiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBzY2hlZF9wYXJhbSAqKTsKZXh0ZXJuIGlu
dCBwdGhyZWFkX2F0dHJfZ2V0c2NoZWRwYXJhbShjb25zdCBwdGhyZWFkX2F0dHJfdCAqLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjaGVkX3BhcmFtICop
OwpleHRlcm4gaW50IHB0aHJlYWRfY3JlYXRlKHB0aHJlYWRfdCAqLCBjb25zdCBwdGhyZWFkX2F0
dHJfdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKiAoKikodm9pZCAq
KSwgdm9pZCAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX29uY2UocHRocmVhZF9vbmNlX3QgKiwgdm9p
ZCAoKikodm9pZCkpOwpleHRlcm4gaW50IHB0aHJlYWRfam9pbihwdGhyZWFkX3QsIHZvaWQgKiop
OwpleHRlcm4gaW50IHB0aHJlYWRfZGV0YWNoKHB0aHJlYWRfdCk7CmV4dGVybiB2b2lkIHB0aHJl
YWRfZXhpdCh2b2lkICopOwpleHRlcm4gaW50IHB0aHJlYWRfY2FuY2VsKHB0aHJlYWRfdCk7CmV4
dGVybiBpbnQgcHRocmVhZF9zZXRzY2hlZHBhcmFtKHB0aHJlYWRfdCwgaW50LCBjb25zdCBzdHJ1
Y3Qgc2NoZWRfcGFyYW0gKik7CmV4dGVybiBpbnQgcHRocmVhZF9nZXRzY2hlZHBhcmFtKHB0aHJl
YWRfdCwgaW50ICosIHN0cnVjdCBzY2hlZF9wYXJhbSAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX3Nl
dGNhbmNlbHN0YXRlKGludCwgaW50ICopOwpleHRlcm4gaW50IHB0aHJlYWRfc2V0Y2FuY2VsdHlw
ZShpbnQsIGludCAqKTsKZXh0ZXJuIHZvaWQgcHRocmVhZF90ZXN0Y2FuY2VsKHZvaWQpOwpleHRl
cm4gaW50IHB0aHJlYWRfZXF1YWwocHRocmVhZF90LCBwdGhyZWFkX3QpOwpleHRlcm4gaW50IHB0
aHJlYWRfa2V5X2NyZWF0ZShwdGhyZWFkX2tleV90ICosIHZvaWQgKCopKHZvaWQgKikpOwpleHRl
cm4gaW50IHB0aHJlYWRfa2V5X2RlbGV0ZShwdGhyZWFkX2tleV90KTsKZXh0ZXJuIGludCBwdGhy
ZWFkX3NldHNwZWNpZmljKHB0aHJlYWRfa2V5X3QsIGNvbnN0IHZvaWQgKik7CmV4dGVybiB2b2lk
ICpwdGhyZWFkX2dldHNwZWNpZmljKHB0aHJlYWRfa2V5X3QpOwpleHRlcm4gcHRocmVhZF90IHB0
aHJlYWRfc2VsZih2b2lkKTsKCgoKCmV4dGVybiBpbnQgcHRocmVhZF9tdXRleGF0dHJfaW5pdChw
dGhyZWFkX211dGV4YXR0cl90ICopOwpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2Rlc3Ry
b3kocHRocmVhZF9tdXRleGF0dHJfdCAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4YXR0cl9z
ZXRwc2hhcmVkKHB0aHJlYWRfbXV0ZXhhdHRyX3QgKiwgaW50KTsKZXh0ZXJuIGludCBwdGhyZWFk
X211dGV4YXR0cl9nZXRwc2hhcmVkKGNvbnN0IHB0aHJlYWRfbXV0ZXhhdHRyX3QgKiwgaW50ICop
OwpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX3NldHByb3RvY29sKHB0aHJlYWRfbXV0ZXhh
dHRyX3QgKiwgaW50KTsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4YXR0cl9nZXRwcm90b2NvbChj
b25zdCBwdGhyZWFkX211dGV4YXR0cl90ICosIGludCAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX211
dGV4YXR0cl9zZXRwcmlvY2VpbGluZyhwdGhyZWFkX211dGV4YXR0cl90ICosIGludCk7CmV4dGVy
biBpbnQgcHRocmVhZF9tdXRleGF0dHJfZ2V0cHJpb2NlaWxpbmcoY29uc3QgcHRocmVhZF9tdXRl
eGF0dHJfdCAqLCBpbnQgKik7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleGF0dHJfc2V0cm9idXN0
X25wKHB0aHJlYWRfbXV0ZXhhdHRyX3QgKiwgaW50KTsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4
YXR0cl9nZXRyb2J1c3RfbnAoY29uc3QgcHRocmVhZF9tdXRleGF0dHJfdCAqLCBpbnQgKik7CmV4
dGVybiBpbnQgcHRocmVhZF9tdXRleF9pbml0KHB0aHJlYWRfbXV0ZXhfdCAqLCBjb25zdCBwdGhy
ZWFkX211dGV4YXR0cl90ICopOwpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhfY29uc2lzdGVudF9u
cChwdGhyZWFkX211dGV4X3QgKik7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleF9kZXN0cm95KHB0
aHJlYWRfbXV0ZXhfdCAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4X2xvY2socHRocmVhZF9t
dXRleF90ICopOwpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKHB0aHJlYWRfbXV0ZXhf
dCAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4X3RyeWxvY2socHRocmVhZF9tdXRleF90ICop
OwpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhfc2V0cHJpb2NlaWxpbmcocHRocmVhZF9tdXRleF90
ICosIGludCwgaW50ICopOwpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhfZ2V0cHJpb2NlaWxpbmco
Y29uc3QgcHRocmVhZF9tdXRleF90ICosIGludCAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRh
dHRyX2luaXQocHRocmVhZF9jb25kYXR0cl90ICopOwpleHRlcm4gaW50IHB0aHJlYWRfY29uZGF0
dHJfZGVzdHJveShwdGhyZWFkX2NvbmRhdHRyX3QgKik7CmV4dGVybiBpbnQgcHRocmVhZF9jb25k
YXR0cl9zZXRwc2hhcmVkKHB0aHJlYWRfY29uZGF0dHJfdCAqLCBpbnQpOwpleHRlcm4gaW50IHB0
aHJlYWRfY29uZGF0dHJfZ2V0cHNoYXJlZChjb25zdCBwdGhyZWFkX2NvbmRhdHRyX3QgKiwgaW50
ICopOwpleHRlcm4gaW50IHB0aHJlYWRfY29uZF9pbml0KHB0aHJlYWRfY29uZF90ICosIGNvbnN0
IHB0aHJlYWRfY29uZGF0dHJfdCAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRfZGVzdHJveShw
dGhyZWFkX2NvbmRfdCAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRfYnJvYWRjYXN0KHB0aHJl
YWRfY29uZF90ICopOwpleHRlcm4gaW50IHB0aHJlYWRfY29uZF9zaWduYWwocHRocmVhZF9jb25k
X3QgKik7CmV4dGVybiBpbnQgcHRocmVhZF9jb25kX3dhaXQocHRocmVhZF9jb25kX3QgKiwgcHRo
cmVhZF9tdXRleF90ICopOwpleHRlcm4gaW50IHB0aHJlYWRfY29uZF90aW1lZHdhaXQocHRocmVh
ZF9jb25kX3QgKiwgcHRocmVhZF9tdXRleF90ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKik7CmV4dGVybiBpbnQgcHRocmVh
ZF9jb25kX3JlbHRpbWVkd2FpdF9ucChwdGhyZWFkX2NvbmRfdCAqLCBwdGhyZWFkX211dGV4X3Qg
KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB0
aW1lc3BlYyAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0Z3VhcmRzaXplKGNvbnN0IHB0
aHJlYWRfYXR0cl90ICosIHNpemVfdCAqKTsKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0Z3Vh
cmRzaXplKHB0aHJlYWRfYXR0cl90ICosIHNpemVfdCk7CmV4dGVybiBpbnQgcHRocmVhZF9nZXRj
b25jdXJyZW5jeSh2b2lkKTsKZXh0ZXJuIGludCBwdGhyZWFkX3NldGNvbmN1cnJlbmN5KGludCBu
ZXd2YWwpOwpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUocHRocmVhZF9tdXRl
eGF0dHJfdCAqLCBpbnQpOwpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2dldHR5cGUoY29u
c3QgcHRocmVhZF9tdXRleGF0dHJfdCAqLCBpbnQgKik7CmV4dGVybiBpbnQgcHRocmVhZF9yd2xv
Y2tfaW5pdChwdGhyZWFkX3J3bG9ja190ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgcHRocmVhZF9yd2xvY2thdHRyX3QgKik7CmV4dGVybiBpbnQgcHRocmVhZF9yd2xv
Y2tfZGVzdHJveShwdGhyZWFkX3J3bG9ja190ICopOwpleHRlcm4gaW50IHB0aHJlYWRfcndsb2Nr
X3JkbG9jayhwdGhyZWFkX3J3bG9ja190ICopOwpleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrX3Ry
eXJkbG9jayhwdGhyZWFkX3J3bG9ja190ICopOwpleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrX3dy
bG9jayhwdGhyZWFkX3J3bG9ja190ICopOwpleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrX3RyeXdy
bG9jayhwdGhyZWFkX3J3bG9ja190ICopOwpleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrX3VubG9j
ayhwdGhyZWFkX3J3bG9ja190ICopOwpleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrYXR0cl9pbml0
KHB0aHJlYWRfcndsb2NrYXR0cl90ICopOwpleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrYXR0cl9k
ZXN0cm95KHB0aHJlYWRfcndsb2NrYXR0cl90ICopOwpleHRlcm4gaW50IHB0aHJlYWRfcndsb2Nr
YXR0cl9nZXRwc2hhcmVkKGNvbnN0IHB0aHJlYWRfcndsb2NrYXR0cl90ICosIGludCAqKTsKZXh0
ZXJuIGludCBwdGhyZWFkX3J3bG9ja2F0dHJfc2V0cHNoYXJlZChwdGhyZWFkX3J3bG9ja2F0dHJf
dCAqLCBpbnQpOwojIDE5NiAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFn
aWNrL21hZ2ljay9zdHVkaW8uaCIgMgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9wb2xsLmgiIDEg
MyA0CiMgMTYgIi91c3IvaW5jbHVkZS9zeXMvcG9sbC5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgj
KXBvbGwuaAkxLjI4CTk4LzExLzIzIFNNSSIgCiMgMjYgIi91c3IvaW5jbHVkZS9zeXMvcG9sbC5o
IiAzIDQKdHlwZWRlZiBzdHJ1Y3QgcG9sbGZkIHsKICAgICAgICBpbnQgZmQ7CiAgICAgICAgc2hv
cnQgZXZlbnRzOwogICAgICAgIHNob3J0IHJldmVudHM7Cn0gcG9sbGZkX3Q7Cgp0eXBlZGVmIHVu
c2lnbmVkIGxvbmcgbmZkc190OwojIDEyNCAiL3Vzci9pbmNsdWRlL3N5cy9wb2xsLmgiIDMgNApp
bnQgcG9sbChzdHJ1Y3QgcG9sbGZkICosIG5mZHNfdCwgaW50KTsKIyAxOTkgIi9ob21lL2Jmcmll
c2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svc3R1ZGlvLmgiIDIKIyA1NyAi
L2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMi
IDIKIyAxICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNr
L2F0dHJpYnV0ZS5oIiAxCiMgMTEgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGlj
c01hZ2ljay9tYWdpY2svYXR0cmlidXRlLmgiCnR5cGVkZWYgc3RydWN0IF9JbWFnZUF0dHJpYnV0
ZQp7CiAgY2hhcgogICAgKmtleSwKICAgICp2YWx1ZTsKCiAgdW5zaWduZWQgaW50CiAgICBjb21w
cmVzc2lvbjsKCiAgc3RydWN0IF9JbWFnZUF0dHJpYnV0ZQogICAgKnByZXZpb3VzLAogICAgKm5l
eHQ7Cn0gSW1hZ2VBdHRyaWJ1dGU7CgoKCgpleHRlcm4gY29uc3QgSW1hZ2VBdHRyaWJ1dGUKICAq
R2V0SW1hZ2VBdHRyaWJ1dGUoY29uc3QgSW1hZ2UgKixjb25zdCBjaGFyICopLAogICpHZXRJbWFn
ZUNsaXBwaW5nUGF0aEF0dHJpYnV0ZShjb25zdCBJbWFnZSAqKSwKICAqR2V0SW1hZ2VJbmZvQXR0
cmlidXRlKGNvbnN0IEltYWdlSW5mbyAqLGNvbnN0IEltYWdlICosY29uc3QgY2hhciAqKTsKCmV4
dGVybiB1bnNpZ25lZCBpbnQKICBTZXRJbWFnZUF0dHJpYnV0ZShJbWFnZSAqLGNvbnN0IGNoYXIg
Kixjb25zdCBjaGFyICopOwoKZXh0ZXJuIHZvaWQKICBEZXN0cm95SW1hZ2VBdHRyaWJ1dGVzKElt
YWdlICopOwojIDU4ICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2sv
bWFnaWNrL2RyYXcuYyIgMgojIDEgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGlj
c01hZ2ljay9tYWdpY2svYmxvYi5oIiAxCiMgMjEgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGlj
cy9HcmFwaGljc01hZ2ljay9tYWdpY2svYmxvYi5oIgp0eXBlZGVmIGVudW0KewogIFVuZGVmaW5l
ZEJsb2JNb2RlLAogIFJlYWRCbG9iTW9kZSwKICBSZWFkQmluYXJ5QmxvYk1vZGUsCiAgV3JpdGVC
bG9iTW9kZSwKICBXcml0ZUJpbmFyeUJsb2JNb2RlLAogIElPQmluYXJ5QmxvYk1vZGUKfSBCbG9i
TW9kZTsKCnR5cGVkZWYgZW51bQp7CiAgUmVhZE1vZGUsCiAgV3JpdGVNb2RlLAogIElPTW9kZQp9
IE1hcE1vZGU7Cgp0eXBlZGVmIGVudW0KewogIFVuZGVmaW5lZFN0cmVhbSwKICBGaWxlU3RyZWFt
LAogIFN0YW5kYXJkU3RyZWFtLAogIFBpcGVTdHJlYW0sCiAgWmlwU3RyZWFtLAogIEJaaXBTdHJl
YW0sCiAgRmlmb1N0cmVhbSwKICBCbG9iU3RyZWFtCn0gU3RyZWFtVHlwZTsKCgoKCnR5cGVkZWYg
aW50CiAgKigqQmxvYkZpZm8pKGNvbnN0IEltYWdlICosY29uc3Qgdm9pZCAqLGNvbnN0IHNpemVf
dCk7Cgp0eXBlZGVmIHN0cnVjdCBfQmxvYkluZm8KewogIHNpemVfdAogICAgbGVuZ3RoLAogICAg
ZXh0ZW50LAogICAgcXVhbnR1bTsKCiAgdW5zaWduZWQgaW50CiAgICBtYXBwZWQsCiAgICBlb2Y7
CgogIEV4dGVuZGVkU2lnbmVkSW50ZWdyYWxUeXBlCiAgICBvZmZzZXQsCiAgICBzaXplOwoKICB1
bnNpZ25lZCBpbnQKICAgIGV4ZW1wdCwKICAgIHN0YXR1cywKICAgIHRlbXBvcmFyeTsKCiAgU3Ry
ZWFtVHlwZQogICAgdHlwZTsKCiAgRklMRQogICAgKmZpbGU7CgogIFN0cmVhbUhhbmRsZXIKICAg
IHN0cmVhbTsKCiAgdW5zaWduZWQgY2hhcgogICAgKmRhdGE7CgogIFNlbWFwaG9yZUluZm8KICAg
ICpzZW1hcGhvcmU7CgogIGxvbmcKICAgIHJlZmVyZW5jZV9jb3VudDsKCiAgdW5zaWduZWQgbG9u
ZwogICAgc2lnbmF0dXJlOwp9IEJsb2JJbmZvOwoKCgoKZXh0ZXJuIEJsb2JJbmZvCiAgKkNsb25l
QmxvYkluZm8oY29uc3QgQmxvYkluZm8gKiksCiAgKlJlZmVyZW5jZUJsb2IoQmxvYkluZm8gKik7
CgpleHRlcm4gY2hhcgogICpSZWFkQmxvYlN0cmluZyhJbWFnZSAqLGNoYXIgKik7CgpleHRlcm4g
RXh0ZW5kZWRTaWduZWRJbnRlZ3JhbFR5cGUKICBHZXRCbG9iU2l6ZShjb25zdCBJbWFnZSAqaW1h
Z2UpLAogIFNlZWtCbG9iKEltYWdlICosY29uc3QgRXh0ZW5kZWRTaWduZWRJbnRlZ3JhbFR5cGUs
Y29uc3QgaW50KSwKICBUZWxsQmxvYihjb25zdCBJbWFnZSAqaW1hZ2UpOwoKZXh0ZXJuIEltYWdl
CiAgKkJsb2JUb0ltYWdlKGNvbnN0IEltYWdlSW5mbyAqLGNvbnN0IHZvaWQgKixjb25zdCBzaXpl
X3QsRXhjZXB0aW9uSW5mbyAqKSwKICAqUGluZ0Jsb2IoY29uc3QgSW1hZ2VJbmZvICosY29uc3Qg
dm9pZCAqLGNvbnN0IHNpemVfdCxFeGNlcHRpb25JbmZvICopOwoKZXh0ZXJuIGludAogIEVPRkJs
b2IoY29uc3QgSW1hZ2UgKiksCiAgUmVhZEJsb2JCeXRlKEltYWdlICopLAogIFN5bmNCbG9iKElt
YWdlICopOwoKZXh0ZXJuIHNpemVfdAogIFJlYWRCbG9iKEltYWdlICosY29uc3Qgc2l6ZV90LHZv
aWQgKiksCiAgUmVhZEJsb2JaQyhJbWFnZSAqLGNvbnN0IHNpemVfdCx2b2lkICoqKSwKICBXcml0
ZUJsb2IoSW1hZ2UgKixjb25zdCBzaXplX3QsY29uc3Qgdm9pZCAqKSwKICBXcml0ZUJsb2JCeXRl
KEltYWdlICosY29uc3QgdW5zaWduZWQgbG9uZyksCiAgV3JpdGVCbG9iTFNCTG9uZyhJbWFnZSAq
LGNvbnN0IHVuc2lnbmVkIGxvbmcpLAogIFdyaXRlQmxvYkxTQlNob3J0KEltYWdlICosY29uc3Qg
dW5zaWduZWQgbG9uZyksCiAgV3JpdGVCbG9iTVNCTG9uZyhJbWFnZSAqLGNvbnN0IHVuc2lnbmVk
IGxvbmcpLAogIFdyaXRlQmxvYk1TQlNob3J0KEltYWdlICosY29uc3QgdW5zaWduZWQgbG9uZyks
CiAgV3JpdGVCbG9iU3RyaW5nKEltYWdlICosY29uc3QgY2hhciAqKTsKCmV4dGVybiBTdHJlYW1U
eXBlCiAgR2V0QmxvYlN0cmVhbVR5cGUoY29uc3QgSW1hZ2UgKik7CgpleHRlcm4gdW5zaWduZWQg
Y2hhcgogICpHZXRCbG9iU3RyZWFtRGF0YShjb25zdCBJbWFnZSAqKTsKCmV4dGVybiB1bnNpZ25l
ZCBpbnQKICBCbG9iVG9GaWxlKGNvbnN0IGNoYXIgKixjb25zdCB2b2lkICosY29uc3Qgc2l6ZV90
LEV4Y2VwdGlvbkluZm8gKiksCiAgSW1hZ2VUb0ZpbGUoSW1hZ2UgKixjb25zdCBjaGFyICosRXhj
ZXB0aW9uSW5mbyAqKSwKICBPcGVuQmxvYihjb25zdCBJbWFnZUluZm8gKixJbWFnZSAqLGNvbnN0
IEJsb2JNb2RlLEV4Y2VwdGlvbkluZm8gKiksCiAgVW5tYXBCbG9iKHZvaWQgKixjb25zdCBzaXpl
X3QpOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcKICBSZWFkQmxvYkxTQkxvbmcoSW1hZ2UgKiksCiAg
UmVhZEJsb2JNU0JMb25nKEltYWdlICopOwoKZXh0ZXJuIHVuc2lnbmVkIHNob3J0CiAgUmVhZEJs
b2JMU0JTaG9ydChJbWFnZSAqKSwKICBSZWFkQmxvYk1TQlNob3J0KEltYWdlICopOwoKZXh0ZXJu
IHZvaWQKICBBdHRhY2hCbG9iKEJsb2JJbmZvICosY29uc3Qgdm9pZCAqLGNvbnN0IHNpemVfdCks
CiAgQ2xvc2VCbG9iKEltYWdlICopLAogIERlc3Ryb3lCbG9iSW5mbyhCbG9iSW5mbyAqKSwKICBE
ZXRhY2hCbG9iKEJsb2JJbmZvICopLAogICpGaWxlVG9CbG9iKGNvbnN0IGNoYXIgKixzaXplX3Qg
KixFeGNlcHRpb25JbmZvICopLAogIEdldEJsb2JJbmZvKEJsb2JJbmZvICopLAogICpHZXRDb25m
aWd1cmVCbG9iKGNvbnN0IGNoYXIgKixjaGFyICosc2l6ZV90ICosRXhjZXB0aW9uSW5mbyAqKSwK
ICAqR2V0VHlwZUJsb2IoY29uc3QgY2hhciAqLGNoYXIgKixzaXplX3QgKixFeGNlcHRpb25JbmZv
ICopLAogICpHZXRNb2R1bGVCbG9iKGNvbnN0IGNoYXIgKixjaGFyICosc2l6ZV90ICosRXhjZXB0
aW9uSW5mbyAqKSwKICAqSW1hZ2VUb0Jsb2IoY29uc3QgSW1hZ2VJbmZvICosSW1hZ2UgKixzaXpl
X3QgKixFeGNlcHRpb25JbmZvICopLAogICpNYXBCbG9iKGludCxjb25zdCBNYXBNb2RlLG9mZl90
LHNpemVfdCksCiAgTVNCT3JkZXJMb25nKHVuc2lnbmVkIGNoYXIgKixjb25zdCBzaXplX3QpLAog
IE1TQk9yZGVyU2hvcnQodW5zaWduZWQgY2hhciAqLGNvbnN0IHNpemVfdCk7CiMgNTkgIi9ob21l
L2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiAyCiMg
MSAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9jb2xv
ci5oIiAxCiMgMjEgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9t
YWdpY2svY29sb3IuaCIKZXh0ZXJuIGNoYXIKICAqKkdldENvbG9yTGlzdChjb25zdCBjaGFyICos
dW5zaWduZWQgbG9uZyAqKTsKCmV4dGVybiBjb25zdCBDb2xvckluZm8KICAqR2V0Q29sb3JJbmZv
KGNvbnN0IGNoYXIgKixFeGNlcHRpb25JbmZvICopOwoKZXh0ZXJuIEluZGV4UGFja2V0CiAgQ29u
c3RyYWluQ29sb3JtYXBJbmRleChJbWFnZSAqLHVuc2lnbmVkIGxvbmcpOwoKZXh0ZXJuIHVuc2ln
bmVkIGludAogIEZ1enp5Q29sb3JNYXRjaChjb25zdCBQaXhlbFBhY2tldCAqLGNvbnN0IFBpeGVs
UGFja2V0ICosY29uc3QgZG91YmxlKSwKICBJc0dyYXlJbWFnZShjb25zdCBJbWFnZSAqLEV4Y2Vw
dGlvbkluZm8gKiksCiAgSXNNb25vY2hyb21lSW1hZ2UoY29uc3QgSW1hZ2UgKixFeGNlcHRpb25J
bmZvICopLAogIElzT3BhcXVlSW1hZ2UoY29uc3QgSW1hZ2UgKixFeGNlcHRpb25JbmZvICopLAog
IElzUGFsZXR0ZUltYWdlKGNvbnN0IEltYWdlICosRXhjZXB0aW9uSW5mbyAqKSwKICBMaXN0Q29s
b3JJbmZvKEZJTEUgKixFeGNlcHRpb25JbmZvICopLAogIFF1ZXJ5Q29sb3JEYXRhYmFzZShjb25z
dCBjaGFyICosUGl4ZWxQYWNrZXQgKixFeGNlcHRpb25JbmZvICopLAogIFF1ZXJ5Q29sb3JuYW1l
KGNvbnN0IEltYWdlICosY29uc3QgUGl4ZWxQYWNrZXQgKixjb25zdCBDb21wbGlhbmNlVHlwZSxj
aGFyICosCiAgICBFeGNlcHRpb25JbmZvICopOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcKICBHZXRO
dW1iZXJDb2xvcnMoY29uc3QgSW1hZ2UgKixGSUxFICosRXhjZXB0aW9uSW5mbyAqKTsKCmV4dGVy
biB2b2lkCiAgRGVzdHJveUNvbG9ySW5mbyh2b2lkKSwKICBHZXRDb2xvclR1cGxlKGNvbnN0IFBp
eGVsUGFja2V0ICosY29uc3QgdW5zaWduZWQgaW50LGNvbnN0IHVuc2lnbmVkIGludCwKICAgIGNv
bnN0IHVuc2lnbmVkIGludCxjaGFyICopOwojIDYwICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhp
Y3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIgMgojIDEgIi9ob21lL2Jmcmllc2VuL3Ny
Yy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5oIiAxCiMgMjYgIi9ob21lL2Jm
cmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5oIgojIDEgIi9o
b21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svcmVuZGVyLmgi
IDEKIyAxNCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2lj
ay9yZW5kZXIuaCIKdHlwZWRlZiBlbnVtCnsKICBVbmRlZmluZWRBbGlnbiwKICBMZWZ0QWxpZ24s
CiAgQ2VudGVyQWxpZ24sCiAgUmlnaHRBbGlnbgp9IEFsaWduVHlwZTsKCnR5cGVkZWYgZW51bQp7
CiAgVXNlclNwYWNlLAogIFVzZXJTcGFjZU9uVXNlLAogIE9iamVjdEJvdW5kaW5nQm94Cn0gQ2xp
cFBhdGhVbml0czsKCnR5cGVkZWYgZW51bQp7CiAgTm9EZWNvcmF0aW9uLAogIFVuZGVybGluZURl
Y29yYXRpb24sCiAgT3ZlcmxpbmVEZWNvcmF0aW9uLAogIExpbmVUaHJvdWdoRGVjb3JhdGlvbgp9
IERlY29yYXRpb25UeXBlOwoKdHlwZWRlZiBlbnVtCnsKICBVbmRlZmluZWRSdWxlLAoKICBFdmVu
T2RkUnVsZSwKICBOb25aZXJvUnVsZQp9IEZpbGxSdWxlOwoKdHlwZWRlZiBlbnVtCnsKICBVbmRl
ZmluZWRHcmFkaWVudCwKICBMaW5lYXJHcmFkaWVudCwKICBSYWRpYWxHcmFkaWVudAp9IEdyYWRp
ZW50VHlwZTsKCnR5cGVkZWYgZW51bQp7CiAgVW5kZWZpbmVkQ2FwLAogIEJ1dHRDYXAsCiAgUm91
bmRDYXAsCiAgU3F1YXJlQ2FwCn0gTGluZUNhcDsKCnR5cGVkZWYgZW51bQp7CiAgVW5kZWZpbmVk
Sm9pbiwKICBNaXRlckpvaW4sCiAgUm91bmRKb2luLAogIEJldmVsSm9pbgp9IExpbmVKb2luOwoK
dHlwZWRlZiBlbnVtCnsKICBQb2ludE1ldGhvZCA9IDAsCiAgUmVwbGFjZU1ldGhvZCwKICBGbG9v
ZGZpbGxNZXRob2QsCiAgRmlsbFRvQm9yZGVyTWV0aG9kLAogIFJlc2V0TWV0aG9kCn0gUGFpbnRN
ZXRob2Q7Cgp0eXBlZGVmIGVudW0KewogIFVuZGVmaW5lZFByaW1pdGl2ZSA9IDAsCiAgUG9pbnRQ
cmltaXRpdmUsCiAgTGluZVByaW1pdGl2ZSwKICBSZWN0YW5nbGVQcmltaXRpdmUsCiAgUm91bmRS
ZWN0YW5nbGVQcmltaXRpdmUsCiAgQXJjUHJpbWl0aXZlLAogIEVsbGlwc2VQcmltaXRpdmUsCiAg
Q2lyY2xlUHJpbWl0aXZlLAogIFBvbHlsaW5lUHJpbWl0aXZlLAogIFBvbHlnb25QcmltaXRpdmUs
CiAgQmV6aWVyUHJpbWl0aXZlLAogIENvbG9yUHJpbWl0aXZlLAogIE1hdHRlUHJpbWl0aXZlLAog
IFRleHRQcmltaXRpdmUsCiAgSW1hZ2VQcmltaXRpdmUsCiAgUGF0aFByaW1pdGl2ZQp9IFByaW1p
dGl2ZVR5cGU7Cgp0eXBlZGVmIGVudW0KewogIFVuZGVmaW5lZFJlZmVyZW5jZSwKICBHcmFkaWVu
dFJlZmVyZW5jZQp9IFJlZmVyZW5jZVR5cGU7Cgp0eXBlZGVmIGVudW0KewogIFVuZGVmaW5lZFNw
cmVhZCwKICBQYWRTcHJlYWQsCiAgUmVmbGVjdFNwZWFkLAogIFJlcGVhdFNwcmVhZAp9IFNwcmVh
ZE1ldGhvZDsKCnR5cGVkZWYgZW51bQp7CiAgTm9ybWFsU3RyZXRjaCwKICBVbHRyYUNvbmRlbnNl
ZFN0cmV0Y2gsCiAgRXh0cmFDb25kZW5zZWRTdHJldGNoLAogIENvbmRlbnNlZFN0cmV0Y2gsCiAg
U2VtaUNvbmRlbnNlZFN0cmV0Y2gsCiAgU2VtaUV4cGFuZGVkU3RyZXRjaCwKICBFeHBhbmRlZFN0
cmV0Y2gsCiAgRXh0cmFFeHBhbmRlZFN0cmV0Y2gsCiAgVWx0cmFFeHBhbmRlZFN0cmV0Y2gsCiAg
QW55U3RyZXRjaAp9IFN0cmV0Y2hUeXBlOwoKdHlwZWRlZiBlbnVtCnsKICBOb3JtYWxTdHlsZSwK
ICBJdGFsaWNTdHlsZSwKICBPYmxpcXVlU3R5bGUsCiAgQW55U3R5bGUKfSBTdHlsZVR5cGU7CgoK
Cgp0eXBlZGVmIHN0cnVjdCBfR3JhZGllbnRJbmZvCnsKICBHcmFkaWVudFR5cGUKICAgIHR5cGU7
CgogIFBpeGVsUGFja2V0CiAgICBjb2xvcjsKCiAgU2VnbWVudEluZm8KICAgIHN0b3A7CgogIHVu
c2lnbmVkIGxvbmcKICAgIGxlbmd0aDsKCiAgU3ByZWFkTWV0aG9kCiAgICBzcHJlYWQ7CgogIHVu
c2lnbmVkIGxvbmcKICAgIHNpZ25hdHVyZTsKCiAgc3RydWN0IF9HcmFkaWVudEluZm8KICAgICpw
cmV2aW91cywKICAgICpuZXh0Owp9IEdyYWRpZW50SW5mbzsKCnR5cGVkZWYgc3RydWN0IF9FbGVt
ZW50UmVmZXJlbmNlCnsKICBjaGFyCiAgICAqaWQ7CgogIFJlZmVyZW5jZVR5cGUKICAgIHR5cGU7
CgogIEdyYWRpZW50SW5mbwogICAgZ3JhZGllbnQ7CgogIHVuc2lnbmVkIGxvbmcKICAgIHNpZ25h
dHVyZTsKCiAgc3RydWN0IF9FbGVtZW50UmVmZXJlbmNlCiAgICAqcHJldmlvdXMsCiAgICAqbmV4
dDsKfSBFbGVtZW50UmVmZXJlbmNlOwoKdHlwZWRlZiBzdHJ1Y3QgX0RyYXdJbmZvCnsKICBjaGFy
CiAgICAqcHJpbWl0aXZlLAogICAgKmdlb21ldHJ5OwoKICBBZmZpbmVNYXRyaXgKICAgIGFmZmlu
ZTsKCiAgR3Jhdml0eVR5cGUKICAgIGdyYXZpdHk7CgogIFBpeGVsUGFja2V0CiAgICBmaWxsLAog
ICAgc3Ryb2tlOwoKICBkb3VibGUKICAgIHN0cm9rZV93aWR0aDsKCiAgR3JhZGllbnRJbmZvCiAg
ICBncmFkaWVudDsKCiAgSW1hZ2UKICAgICpmaWxsX3BhdHRlcm4sCiAgICAqdGlsZSwKICAgICpz
dHJva2VfcGF0dGVybjsKCiAgdW5zaWduZWQgaW50CiAgICBzdHJva2VfYW50aWFsaWFzLAogICAg
dGV4dF9hbnRpYWxpYXM7CgogIEZpbGxSdWxlCiAgICBmaWxsX3J1bGU7CgogIExpbmVDYXAKICAg
IGxpbmVjYXA7CgogIExpbmVKb2luCiAgICBsaW5lam9pbjsKCiAgdW5zaWduZWQgbG9uZwogICAg
bWl0ZXJsaW1pdDsKCiAgZG91YmxlCiAgICBkYXNoX29mZnNldDsKCiAgRGVjb3JhdGlvblR5cGUK
ICAgIGRlY29yYXRlOwoKICBDb21wb3NpdGVPcGVyYXRvcgogICAgY29tcG9zZTsKCiAgY2hhcgog
ICAgKnRleHQsCiAgICAqZm9udCwKICAgICpmYW1pbHk7CgogIFN0eWxlVHlwZQogICAgc3R5bGU7
CgogIFN0cmV0Y2hUeXBlCiAgICBzdHJldGNoOwoKICB1bnNpZ25lZCBsb25nCiAgICB3ZWlnaHQ7
CgogIGNoYXIKICAgICplbmNvZGluZzsKCiAgZG91YmxlCiAgICBwb2ludHNpemU7CgogIGNoYXIK
ICAgICpkZW5zaXR5OwoKICBBbGlnblR5cGUKICAgIGFsaWduOwoKICBQaXhlbFBhY2tldAogICAg
dW5kZXJjb2xvciwKICAgIGJvcmRlcl9jb2xvcjsKCiAgY2hhcgogICAgKnNlcnZlcl9uYW1lOwoK
ICBkb3VibGUKICAgICpkYXNoX3BhdHRlcm47CgogIGNoYXIKICAgICpjbGlwX3BhdGg7CgogIFNl
Z21lbnRJbmZvCiAgICBib3VuZHM7CgogIENsaXBQYXRoVW5pdHMKICAgIGNsaXBfdW5pdHM7Cgog
IFF1YW50dW0KICAgIG9wYWNpdHk7CgogIHVuc2lnbmVkIGludAogICAgcmVuZGVyLAogICAgZGVi
dWc7CgogIEVsZW1lbnRSZWZlcmVuY2UKICAgIGVsZW1lbnRfcmVmZXJlbmNlOwoKICB1bnNpZ25l
ZCBsb25nCiAgICBzaWduYXR1cmU7Cn0gRHJhd0luZm87Cgp0eXBlZGVmIHN0cnVjdCBfRWxlbWVu
dEluZm8KewogIGRvdWJsZQogICAgY3gsCiAgICBjeSwKICAgIG1ham9yLAogICAgbWlub3IsCiAg
ICBhbmdsZTsKfSBFbGVtZW50SW5mbzsKCnR5cGVkZWYgc3RydWN0IF9Qb2ludEluZm8KewogIGRv
dWJsZQogICAgeCwKICAgIHk7Cn0gUG9pbnRJbmZvOwoKdHlwZWRlZiBzdHJ1Y3QgX1ByaW1pdGl2
ZUluZm8KewogIFBvaW50SW5mbwogICAgcG9pbnQ7CgogIHVuc2lnbmVkIGxvbmcKICAgIGNvb3Jk
aW5hdGVzOwoKICBQcmltaXRpdmVUeXBlCiAgICBwcmltaXRpdmU7CgogIFBhaW50TWV0aG9kCiAg
ICBtZXRob2Q7CgogIGNoYXIKICAgICp0ZXh0Owp9IFByaW1pdGl2ZUluZm87Cgp0eXBlZGVmIHN0
cnVjdCBfVHlwZUluZm8KewogIGNvbnN0IGNoYXIKICAgICpwYXRoLAogICAgKm5hbWUsCiAgICAq
ZGVzY3JpcHRpb24sCiAgICAqZmFtaWx5OwoKICBTdHlsZVR5cGUKICAgIHN0eWxlOwoKICBTdHJl
dGNoVHlwZQogICAgc3RyZXRjaDsKCiAgdW5zaWduZWQgbG9uZwogICAgd2VpZ2h0OwoKICBjb25z
dCBjaGFyCiAgICAqZW5jb2RpbmcsCiAgICAqZm91bmRyeSwKICAgICpmb3JtYXQsCiAgICAqbWV0
cmljcywKICAgICpnbHlwaHM7CgogIHVuc2lnbmVkIGludAogICAgc3RlYWx0aDsKCiAgdW5zaWdu
ZWQgbG9uZwogICAgc2lnbmF0dXJlOwoKICBzdHJ1Y3QgX1R5cGVJbmZvCiAgICAqcHJldmlvdXMs
CiAgICAqbmV4dDsKfSBUeXBlSW5mbzsKCnR5cGVkZWYgc3RydWN0IF9UeXBlTWV0cmljCnsKICBQ
b2ludEluZm8KICAgIHBpeGVsc19wZXJfZW07CgogIGRvdWJsZQogICAgYXNjZW50LAogICAgZGVz
Y2VudCwKICAgIHdpZHRoLAogICAgaGVpZ2h0LAogICAgbWF4X2FkdmFuY2U7CgogIFNlZ21lbnRJ
bmZvCiAgICBib3VuZHM7CgogIGRvdWJsZQogICAgdW5kZXJsaW5lX3Bvc2l0aW9uLAogICAgdW5k
ZXJsaW5lX3RoaWNrbmVzczsKfSBUeXBlTWV0cmljOwoKCgoKCmV4dGVybiBjaGFyCiAgKipHZXRU
eXBlTGlzdChjb25zdCBjaGFyICosdW5zaWduZWQgbG9uZyAqKTsKCmV4dGVybiBjb25zdCBUeXBl
SW5mbwogICpHZXRUeXBlSW5mbyhjb25zdCBjaGFyICosRXhjZXB0aW9uSW5mbyAqKSwKICAqR2V0
VHlwZUluZm9CeUZhbWlseShjb25zdCBjaGFyICosY29uc3QgU3R5bGVUeXBlLGNvbnN0IFN0cmV0
Y2hUeXBlLAogICAgY29uc3QgdW5zaWduZWQgbG9uZyxFeGNlcHRpb25JbmZvICopOwoKZXh0ZXJu
IERyYXdJbmZvCiAgKkNsb25lRHJhd0luZm8oY29uc3QgSW1hZ2VJbmZvICosY29uc3QgRHJhd0lu
Zm8gKik7CgpleHRlcm4gdW5zaWduZWQgaW50CiAgQW5ub3RhdGVJbWFnZShJbWFnZSAqLGNvbnN0
IERyYXdJbmZvICopLAogIERyYXdBZmZpbmVJbWFnZShJbWFnZSAqLGNvbnN0IEltYWdlICosY29u
c3QgQWZmaW5lTWF0cml4ICopLAogIERyYXdDbGlwUGF0aChJbWFnZSAqLGNvbnN0IERyYXdJbmZv
ICosY29uc3QgY2hhciAqKSwKICBEcmF3SW1hZ2UoSW1hZ2UgKixjb25zdCBEcmF3SW5mbyAqKSwK
ICBEcmF3UGF0dGVyblBhdGgoSW1hZ2UgKixjb25zdCBEcmF3SW5mbyAqLGNvbnN0IGNoYXIgKixJ
bWFnZSAqKiksCiAgRHJhd1ByaW1pdGl2ZShJbWFnZSAqLGNvbnN0IERyYXdJbmZvICosY29uc3Qg
UHJpbWl0aXZlSW5mbyAqKSwKICBHZXRUeXBlTWV0cmljcyhJbWFnZSAqLGNvbnN0IERyYXdJbmZv
ICosVHlwZU1ldHJpYyAqKSwKICBMaXN0VHlwZUluZm8oRklMRSAqLEV4Y2VwdGlvbkluZm8gKik7
CgpleHRlcm4gdm9pZAogIERlc3Ryb3lEcmF3SW5mbyhEcmF3SW5mbyAqKSwKICBEZXN0cm95VHlw
ZUluZm8odm9pZCksCiAgR2V0RHJhd0luZm8oY29uc3QgSW1hZ2VJbmZvICosRHJhd0luZm8gKik7
CiMgMjcgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2sv
ZHJhdy5oIiAyCgoKdHlwZWRlZiBzdHJ1Y3QgX0RyYXdDb250ZXh0ICpEcmF3Q29udGV4dDsKCmV4
dGVybiBDbGlwUGF0aFVuaXRzCiAgRHJhd0dldENsaXBVbml0cyhEcmF3Q29udGV4dCBjb250ZXh0
KTsKCmV4dGVybiBEZWNvcmF0aW9uVHlwZQogIERyYXdHZXRUZXh0RGVjb3JhdGlvbihEcmF3Q29u
dGV4dCBjb250ZXh0KTsKCmV4dGVybiBEcmF3Q29udGV4dAogIERyYXdBbGxvY2F0ZUNvbnRleHQo
Y29uc3QgRHJhd0luZm8gKmRyYXdfaW5mbywgSW1hZ2UgKmltYWdlKTsKCmV4dGVybiBGaWxsUnVs
ZQogIERyYXdHZXRDbGlwUnVsZShEcmF3Q29udGV4dCBjb250ZXh0KSwKICBEcmF3R2V0RmlsbFJ1
bGUoRHJhd0NvbnRleHQgY29udGV4dCk7CgpleHRlcm4gR3Jhdml0eVR5cGUKICBEcmF3R2V0R3Jh
dml0eShEcmF3Q29udGV4dCBjb250ZXh0KTsKCmV4dGVybiBMaW5lQ2FwCiAgRHJhd0dldFN0cm9r
ZUxpbmVDYXAoRHJhd0NvbnRleHQgY29udGV4dCk7CgpleHRlcm4gTGluZUpvaW4KICBEcmF3R2V0
U3Ryb2tlTGluZUpvaW4oRHJhd0NvbnRleHQgY29udGV4dCk7CgpleHRlcm4gUGl4ZWxQYWNrZXQK
ICBEcmF3R2V0RmlsbENvbG9yKERyYXdDb250ZXh0IGNvbnRleHQpLAogIERyYXdHZXRTdHJva2VD
b2xvcihEcmF3Q29udGV4dCBjb250ZXh0KSwKICBEcmF3R2V0VGV4dFVuZGVyQ29sb3IoRHJhd0Nv
bnRleHQgY29udGV4dCk7CgpleHRlcm4gU3RyZXRjaFR5cGUKICBEcmF3R2V0Rm9udFN0cmV0Y2go
RHJhd0NvbnRleHQgY29udGV4dCk7CgpleHRlcm4gU3R5bGVUeXBlCiAgRHJhd0dldEZvbnRTdHls
ZShEcmF3Q29udGV4dCBjb250ZXh0KTsKCmV4dGVybiBjaGFyCiAgKkRyYXdHZXRDbGlwUGF0aChE
cmF3Q29udGV4dCBjb250ZXh0KSwKICAqRHJhd0dldEZvbnQoRHJhd0NvbnRleHQgY29udGV4dCks
CiAgKkRyYXdHZXRGb250RmFtaWx5KERyYXdDb250ZXh0IGNvbnRleHQpLAogICpEcmF3R2V0VGV4
dEVuY29kaW5nKERyYXdDb250ZXh0IGNvbnRleHQpOwoKZXh0ZXJuIGludAogIERyYXdSZW5kZXIo
Y29uc3QgRHJhd0NvbnRleHQgY29udGV4dCk7CgpleHRlcm4gdW5zaWduZWQgaW50CiAgRHJhd0dl
dFN0cm9rZUFudGlhbGlhcyhEcmF3Q29udGV4dCBjb250ZXh0KSwKICBEcmF3R2V0VGV4dEFudGlh
bGlhcyhEcmF3Q29udGV4dCBjb250ZXh0KTsKCmV4dGVybiB1bnNpZ25lZCBsb25nCiAgRHJhd0dl
dEZvbnRXZWlnaHQoRHJhd0NvbnRleHQgY29udGV4dCksCiAgRHJhd0dldFN0cm9rZU1pdGVyTGlt
aXQoRHJhd0NvbnRleHQgY29udGV4dCk7CgpleHRlcm4gZG91YmxlCiAgRHJhd0dldEZpbGxPcGFj
aXR5KERyYXdDb250ZXh0IGNvbnRleHQpLAogIERyYXdHZXRGb250U2l6ZShEcmF3Q29udGV4dCBj
b250ZXh0KSwKICAqRHJhd0dldFN0cm9rZURhc2hBcnJheShEcmF3Q29udGV4dCBjb250ZXh0LCBz
aXplX3QgKm51bV9lbGVtcyksCiAgRHJhd0dldFN0cm9rZURhc2hPZmZzZXQoRHJhd0NvbnRleHQg
Y29udGV4dCksCiAgRHJhd0dldFN0cm9rZU9wYWNpdHkoRHJhd0NvbnRleHQgY29udGV4dCksCiAg
RHJhd0dldFN0cm9rZVdpZHRoKERyYXdDb250ZXh0IGNvbnRleHQpOwoKZXh0ZXJuIHZvaWQKICBE
cmF3QWZmaW5lKERyYXdDb250ZXh0IGNvbnRleHQsIGNvbnN0IEFmZmluZU1hdHJpeCAqYWZmaW5l
KSwKICBEcmF3QW5ub3RhdGlvbihEcmF3Q29udGV4dCBjb250ZXh0LAogICAgY29uc3QgZG91Ymxl
IHgsIGNvbnN0IGRvdWJsZSB5LAogICAgY29uc3QgdW5zaWduZWQgY2hhciAqdGV4dCksCiAgRHJh
d0FyYyhEcmF3Q29udGV4dCBjb250ZXh0LAogICAgICAgICAgY29uc3QgZG91YmxlIHN4LCBjb25z
dCBkb3VibGUgc3ksCiAgICAgICAgICBjb25zdCBkb3VibGUgZXgsIGNvbnN0IGRvdWJsZSBleSwK
ICAgICAgICAgIGNvbnN0IGRvdWJsZSBzZCwgY29uc3QgZG91YmxlIGVkKSwKICBEcmF3QmV6aWVy
KERyYXdDb250ZXh0IGNvbnRleHQsCiAgICAgICAgICAgICBjb25zdCBzaXplX3QgbnVtX2Nvb3Jk
cywgY29uc3QgUG9pbnRJbmZvICogY29vcmRpbmF0ZXMpLAogIERyYXdDaXJjbGUoRHJhd0NvbnRl
eHQgY29udGV4dCwKICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSBveCwgY29uc3QgZG91YmxlIG95
LAogICAgICAgICAgICAgY29uc3QgZG91YmxlIHB4LCBjb25zdCBkb3VibGUgcHkpLAogIERyYXdD
b2xvcihEcmF3Q29udGV4dCBjb250ZXh0LAogICAgICAgICAgICBjb25zdCBkb3VibGUgeCwgY29u
c3QgZG91YmxlIHksCiAgICAgICAgICAgIGNvbnN0IFBhaW50TWV0aG9kIHBhaW50TWV0aG9kKSwK
ICBEcmF3Q29tbWVudChEcmF3Q29udGV4dCBjb250ZXh0LGNvbnN0IGNoYXIqIGNvbW1lbnQpLAog
IERyYXdEZXN0cm95Q29udGV4dChEcmF3Q29udGV4dCBjb250ZXh0KSwKICBEcmF3RWxsaXBzZShE
cmF3Q29udGV4dCBjb250ZXh0LAogICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSBveCwgY29uc3Qg
ZG91YmxlIG95LAogICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSByeCwgY29uc3QgZG91YmxlIHJ5
LAogICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSBzdGFydCwgY29uc3QgZG91YmxlIGVuZCksCiAg
RHJhd0NvbXBvc2l0ZShEcmF3Q29udGV4dCBjb250ZXh0LAogICAgICAgICAgICAgICAgY29uc3Qg
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlX29wZXJhdG9yLAogICAgICAgICAgICAgICAgY29u
c3QgZG91YmxlIHgsIGNvbnN0IGRvdWJsZSB5LAogICAgICAgICAgICAgICAgY29uc3QgZG91Ymxl
IHdpZHRoLCBjb25zdCBkb3VibGUgaGVpZ2h0LAogICAgICAgICAgICAgICAgY29uc3QgSW1hZ2Ug
KiBpbWFnZSApLAogIERyYXdMaW5lKERyYXdDb250ZXh0IGNvbnRleHQsCiAgICAgICAgICAgY29u
c3QgZG91YmxlIHN4LCBjb25zdCBkb3VibGUgc3ksCiAgICAgICAgICAgY29uc3QgZG91YmxlIGV4
LCBjb25zdCBkb3VibGUgZXkpLAogIERyYXdNYXR0ZShEcmF3Q29udGV4dCBjb250ZXh0LAogICAg
ICAgICAgICBjb25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIHksCiAgICAgICAgICAgIGNvbnN0
IFBhaW50TWV0aG9kIHBhaW50X21ldGhvZCksCiAgRHJhd1BhdGhDbG9zZShEcmF3Q29udGV4dCBj
b250ZXh0KSwKICBEcmF3UGF0aEN1cnZlVG9BYnNvbHV0ZShEcmF3Q29udGV4dCBjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSB4MSwgY29uc3QgZG91YmxlIHkx
LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSB4MiwgY29uc3QgZG91Ymxl
IHkyLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSB4LCBjb25zdCBkb3Vi
bGUgeSksCiAgRHJhd1BhdGhDdXJ2ZVRvUmVsYXRpdmUoRHJhd0NvbnRleHQgY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb3VibGUgeDEsIGNvbnN0IGRvdWJsZSB5MSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb3VibGUgeDIsIGNvbnN0IGRvdWJsZSB5
MiwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb3VibGUgeCwgY29uc3QgZG91Ymxl
IHkpLAogIERyYXdQYXRoQ3VydmVUb1F1YWRyYXRpY0JlemllckFic29sdXRlKERyYXdDb250ZXh0
IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZG91YmxlIHgxLCBjb25zdCBkb3VibGUgeTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZG91YmxlIHgsIGNvbnN0IGRvdWJsZSB5KSwKICBEcmF3UGF0aEN1
cnZlVG9RdWFkcmF0aWNCZXppZXJSZWxhdGl2ZShEcmF3Q29udGV4dCBjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSB4MSwgY29uc3Qg
ZG91YmxlIHkxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGRvdWJsZSB4LCBjb25zdCBkb3VibGUgeSksCiAgRHJhd1BhdGhDdXJ2ZVRvUXVhZHJhdGljQmV6
aWVyU21vb3RoQWJzb2x1dGUoRHJhd0NvbnRleHQgY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb3VibGUgeCwgY29uc3QgZG91Ymxl
IHkpLAogIERyYXdQYXRoQ3VydmVUb1F1YWRyYXRpY0JlemllclNtb290aFJlbGF0aXZlKERyYXdD
b250ZXh0IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZG91YmxlIHgsIGNvbnN0IGRvdWJsZSB5KSwKICBEcmF3UGF0aEN1cnZlVG9T
bW9vdGhBYnNvbHV0ZShEcmF3Q29udGV4dCBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGRvdWJsZSB4MiwgY29uc3QgZG91YmxlIHkyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSB4LCBjb25zdCBkb3VibGUgeSksCiAgRHJh
d1BhdGhDdXJ2ZVRvU21vb3RoUmVsYXRpdmUoRHJhd0NvbnRleHQgY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb3VibGUgeDIsIGNvbnN0IGRvdWJsZSB5MiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb3VibGUgeCwgY29uc3QgZG91
YmxlIHkpLAogIERyYXdQYXRoRWxsaXB0aWNBcmNBYnNvbHV0ZShEcmF3Q29udGV4dCBjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb3VibGUgcngsIGNvbnN0IGRv
dWJsZSByeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG91YmxlIHhfYXhp
c19yb3RhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxh
cmdlX2FyY19mbGFnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
c3dlZXBfZmxhZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG91YmxlIHgs
IGNvbnN0IGRvdWJsZSB5KSwKICBEcmF3UGF0aEVsbGlwdGljQXJjUmVsYXRpdmUoRHJhd0NvbnRl
eHQgY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG91YmxlIHJ4
LCBjb25zdCBkb3VibGUgcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRv
dWJsZSB4X2F4aXNfcm90YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBsYXJnZV9hcmNfZmxhZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50IHN3ZWVwX2ZsYWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGRvdWJsZSB4LCBjb25zdCBkb3VibGUgeSksCiAgRHJhd1BhdGhGaW5pc2goRHJhd0NvbnRleHQg
Y29udGV4dCksCiAgRHJhd1BhdGhMaW5lVG9BYnNvbHV0ZShEcmF3Q29udGV4dCBjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG91YmxlIHgsIGNvbnN0IGRvdWJsZSB5KSwK
ICBEcmF3UGF0aExpbmVUb1JlbGF0aXZlKERyYXdDb250ZXh0IGNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIHkpLAogIERyYXdQYXRo
TGluZVRvSG9yaXpvbnRhbEFic29sdXRlKERyYXdDb250ZXh0IGNvbnRleHQsIGNvbnN0IGRvdWJs
ZSB4KSwKICBEcmF3UGF0aExpbmVUb0hvcml6b250YWxSZWxhdGl2ZShEcmF3Q29udGV4dCBjb250
ZXh0LCBjb25zdCBkb3VibGUgeCksCiAgRHJhd1BhdGhMaW5lVG9WZXJ0aWNhbEFic29sdXRlKERy
YXdDb250ZXh0IGNvbnRleHQsIGNvbnN0IGRvdWJsZSB5KSwKICBEcmF3UGF0aExpbmVUb1ZlcnRp
Y2FsUmVsYXRpdmUoRHJhd0NvbnRleHQgY29udGV4dCwgY29uc3QgZG91YmxlIHkpLAogIERyYXdQ
YXRoTW92ZVRvQWJzb2x1dGUoRHJhd0NvbnRleHQgY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGRvdWJsZSB4LCBjb25zdCBkb3VibGUgeSksCiAgRHJhd1BhdGhNb3ZlVG9S
ZWxhdGl2ZShEcmF3Q29udGV4dCBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZG91YmxlIHgsIGNvbnN0IGRvdWJsZSB5KSwKICBEcmF3UGF0aFN0YXJ0KERyYXdDb250ZXh0
IGNvbnRleHQpLAogIERyYXdQb2ludChEcmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCBkb3VibGUg
eCwgY29uc3QgZG91YmxlIHkpLAogIERyYXdQb2x5Z29uKERyYXdDb250ZXh0IGNvbnRleHQsCiAg
ICAgICAgICAgICAgY29uc3Qgc2l6ZV90IG51bV9jb29yZHMsIGNvbnN0IFBvaW50SW5mbyAqIGNv
b3JkaW5hdGVzKSwKICBEcmF3UG9seWxpbmUoRHJhd0NvbnRleHQgY29udGV4dCwKICAgICAgICAg
ICAgICAgY29uc3Qgc2l6ZV90IG51bV9jb29yZHMsIGNvbnN0IFBvaW50SW5mbyAqIGNvb3JkaW5h
dGVzKSwKICBEcmF3UG9wQ2xpcFBhdGgoRHJhd0NvbnRleHQgY29udGV4dCksCiAgRHJhd1BvcERl
ZnMoRHJhd0NvbnRleHQgY29udGV4dCksCiAgRHJhd1BvcEdyYXBoaWNDb250ZXh0KERyYXdDb250
ZXh0IGNvbnRleHQpLAogIERyYXdQb3BQYXR0ZXJuKERyYXdDb250ZXh0IGNvbnRleHQpLAogIERy
YXdQdXNoQ2xpcFBhdGgoRHJhd0NvbnRleHQgY29udGV4dCwgY29uc3QgY2hhciAqY2xpcF9wYXRo
X2lkKSwKICBEcmF3UHVzaERlZnMoRHJhd0NvbnRleHQgY29udGV4dCksCiAgRHJhd1B1c2hHcmFw
aGljQ29udGV4dChEcmF3Q29udGV4dCBjb250ZXh0KSwKICBEcmF3UHVzaFBhdHRlcm4oRHJhd0Nv
bnRleHQgY29udGV4dCwKICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0dGVybl9pZCwK
ICAgICAgICAgICAgICAgICAgY29uc3QgZG91YmxlIHgsIGNvbnN0IGRvdWJsZSB5LAogICAgICAg
ICAgICAgICAgICBjb25zdCBkb3VibGUgd2lkdGgsIGNvbnN0IGRvdWJsZSBoZWlnaHQpLAogIERy
YXdSZWN0YW5nbGUoRHJhd0NvbnRleHQgY29udGV4dCwKICAgICAgICAgICAgICAgIGNvbnN0IGRv
dWJsZSB4MSwgY29uc3QgZG91YmxlIHkxLAogICAgICAgICAgICAgICAgY29uc3QgZG91YmxlIHgy
LCBjb25zdCBkb3VibGUgeTIpLAogIERyYXdSb3VuZFJlY3RhbmdsZShEcmF3Q29udGV4dCBjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICBkb3VibGUgeDEsIGRvdWJsZSB5MSwKICAgICAgICAg
ICAgICAgICAgICAgZG91YmxlIHgyLCBkb3VibGUgeTIsCiAgICAgICAgICAgICAgICAgICAgIGRv
dWJsZSByeCwgZG91YmxlIHJ5KSwKICBEcmF3U2NhbGUoRHJhd0NvbnRleHQgY29udGV4dCwgY29u
c3QgZG91YmxlIHgsIGNvbnN0IGRvdWJsZSB5KSwKICBEcmF3U2V0Q2xpcFBhdGgoRHJhd0NvbnRl
eHQgY29udGV4dCwgY29uc3QgY2hhciAqY2xpcF9wYXRoKSwKICBEcmF3U2V0Q2xpcFJ1bGUoRHJh
d0NvbnRleHQgY29udGV4dCwgY29uc3QgRmlsbFJ1bGUgZmlsbF9ydWxlKSwKICBEcmF3U2V0Q2xp
cFVuaXRzKERyYXdDb250ZXh0IGNvbnRleHQsIGNvbnN0IENsaXBQYXRoVW5pdHMgY2xpcF91bml0
cyksCiAgRHJhd1NldEZpbGxDb2xvcihEcmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCBQaXhlbFBh
Y2tldCAqZmlsbF9jb2xvciksCiAgRHJhd1NldEZpbGxDb2xvclN0cmluZyhEcmF3Q29udGV4dCBj
b250ZXh0LCBjb25zdCBjaGFyICpmaWxsX2NvbG9yKSwKICBEcmF3U2V0RmlsbE9wYWNpdHkoRHJh
d0NvbnRleHQgY29udGV4dCwgY29uc3QgZG91YmxlIGZpbGxfb3BhY2l0eSksCiAgRHJhd1NldEZp
bGxSdWxlKERyYXdDb250ZXh0IGNvbnRleHQsIGNvbnN0IEZpbGxSdWxlIGZpbGxfcnVsZSksCiAg
RHJhd1NldEZpbGxQYXR0ZXJuVVJMKERyYXdDb250ZXh0IGNvbnRleHQsIGNvbnN0IGNoYXIgKmZp
bGxfdXJsKSwKICBEcmF3U2V0Rm9udChEcmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCBjaGFyICpm
b250X25hbWUpLAogIERyYXdTZXRGb250RmFtaWx5KERyYXdDb250ZXh0IGNvbnRleHQsIGNvbnN0
IGNoYXIgKmZvbnRfZmFtaWx5KSwKICBEcmF3U2V0Rm9udFNpemUoRHJhd0NvbnRleHQgY29udGV4
dCwgY29uc3QgZG91YmxlIGZvbnRfcG9pbnRzaXplKSwKICBEcmF3U2V0Rm9udFN0cmV0Y2goRHJh
d0NvbnRleHQgY29udGV4dCwgY29uc3QgU3RyZXRjaFR5cGUgZm9udF9zdHJldGNoKSwKICBEcmF3
U2V0Rm9udFN0eWxlKERyYXdDb250ZXh0IGNvbnRleHQsIGNvbnN0IFN0eWxlVHlwZSBmb250X3N0
eWxlKSwKICBEcmF3U2V0Rm9udFdlaWdodChEcmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCB1bnNp
Z25lZCBsb25nIGZvbnRfd2VpZ2h0KSwKICBEcmF3U2V0R3Jhdml0eShEcmF3Q29udGV4dCBjb250
ZXh0LCBjb25zdCBHcmF2aXR5VHlwZSBncmF2aXR5KSwKICBEcmF3Um90YXRlKERyYXdDb250ZXh0
IGNvbnRleHQsIGNvbnN0IGRvdWJsZSBkZWdyZWVzKSwKICBEcmF3U2tld1goRHJhd0NvbnRleHQg
Y29udGV4dCwgY29uc3QgZG91YmxlIGRlZ3JlZXMpLAogIERyYXdTa2V3WShEcmF3Q29udGV4dCBj
b250ZXh0LCBjb25zdCBkb3VibGUgZGVncmVlcyksCgoKCgogIERyYXdTZXRTdHJva2VBbnRpYWxp
YXMoRHJhd0NvbnRleHQgY29udGV4dCwgY29uc3QgdW5zaWduZWQgaW50IHRydWVfZmFsc2UpLAog
IERyYXdTZXRTdHJva2VDb2xvcihEcmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCBQaXhlbFBhY2tl
dCAqc3Ryb2tlX2NvbG9yKSwKICBEcmF3U2V0U3Ryb2tlQ29sb3JTdHJpbmcoRHJhd0NvbnRleHQg
Y29udGV4dCwgY29uc3QgY2hhciAqc3Ryb2tlX2NvbG9yKSwKICBEcmF3U2V0U3Ryb2tlRGFzaEFy
cmF5KERyYXdDb250ZXh0IGNvbnRleHQsIGNvbnN0IHNpemVfdCBudW1fZWxlbXMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBkb3VibGUgKmRhc2hhcnJheSksCiAgRHJhd1NldFN0cm9r
ZURhc2hPZmZzZXQoRHJhd0NvbnRleHQgY29udGV4dCxjb25zdCBkb3VibGUgZGFzaG9mZnNldCks
CiAgRHJhd1NldFN0cm9rZUxpbmVDYXAoRHJhd0NvbnRleHQgY29udGV4dCwgY29uc3QgTGluZUNh
cCBsaW5lY2FwKSwKICBEcmF3U2V0U3Ryb2tlTGluZUpvaW4oRHJhd0NvbnRleHQgY29udGV4dCwg
Y29uc3QgTGluZUpvaW4gbGluZWpvaW4pLAogIERyYXdTZXRTdHJva2VNaXRlckxpbWl0KERyYXdD
b250ZXh0IGNvbnRleHQsY29uc3QgdW5zaWduZWQgbG9uZyBtaXRlcmxpbWl0KSwKICBEcmF3U2V0
U3Ryb2tlT3BhY2l0eShEcmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCBkb3VibGUgb3BhY2l0eSks
CiAgRHJhd1NldFN0cm9rZVBhdHRlcm5VUkwoRHJhd0NvbnRleHQgY29udGV4dCwgY29uc3QgY2hh
ciogc3Ryb2tlX3VybCksCiAgRHJhd1NldFN0cm9rZVdpZHRoKERyYXdDb250ZXh0IGNvbnRleHQs
IGNvbnN0IGRvdWJsZSB3aWR0aCksCiAgRHJhd1NldFRleHRBbnRpYWxpYXMoRHJhd0NvbnRleHQg
Y29udGV4dCwgY29uc3QgdW5zaWduZWQgaW50IHRydWVfZmFsc2UpLAogIERyYXdTZXRUZXh0RGVj
b3JhdGlvbihEcmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCBEZWNvcmF0aW9uVHlwZSBkZWNvcmF0
aW9uKSwKICBEcmF3U2V0VGV4dEVuY29kaW5nKERyYXdDb250ZXh0IGNvbnRleHQsIGNvbnN0IGNo
YXIgKmVuY29kaW5nKSwKICBEcmF3U2V0VGV4dFVuZGVyQ29sb3IoRHJhd0NvbnRleHQgY29udGV4
dCwgY29uc3QgUGl4ZWxQYWNrZXQgKmNvbG9yKSwKICBEcmF3U2V0VGV4dFVuZGVyQ29sb3JTdHJp
bmcoRHJhd0NvbnRleHQgY29udGV4dCwgY29uc3QgY2hhciAqdW5kZXJfY29sb3IpLAogIERyYXdT
ZXRWaWV3Ym94KERyYXdDb250ZXh0IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bG9uZyB4MSwgdW5zaWduZWQgbG9uZyB5MSwKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n
IHgyLCB1bnNpZ25lZCBsb25nIHkyKSwKICBEcmF3VHJhbnNsYXRlKERyYXdDb250ZXh0IGNvbnRl
eHQsIGNvbnN0IGRvdWJsZSB4LCBjb25zdCBkb3VibGUgeSk7CiMgNjEgIi9ob21lL2Jmcmllc2Vu
L3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiAyCiMgMSAiL2hvbWUv
YmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9nZW0uaCIgMQojIDE0
ICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2dlbS5o
IgpleHRlcm4gZG91YmxlCiAgRXhwYW5kQWZmaW5lKGNvbnN0IEFmZmluZU1hdHJpeCAqKTsKCmV4
dGVybiBpbnQKICBHZXRPcHRpbWFsS2VybmVsV2lkdGgoY29uc3QgZG91YmxlLGNvbnN0IGRvdWJs
ZSksCiAgR2V0T3B0aW1hbEtlcm5lbFdpZHRoMUQoY29uc3QgZG91YmxlLGNvbnN0IGRvdWJsZSks
CiAgR2V0T3B0aW1hbEtlcm5lbFdpZHRoMkQoY29uc3QgZG91YmxlLGNvbnN0IGRvdWJsZSk7Cgpl
eHRlcm4gUGl4ZWxQYWNrZXQKICBJbnRlcnBvbGF0ZUNvbG9yKGNvbnN0IEltYWdlICosY29uc3Qg
ZG91YmxlLGNvbnN0IGRvdWJsZSxFeGNlcHRpb25JbmZvICopOwoKZXh0ZXJuIFF1YW50dW0KICBH
ZW5lcmF0ZU5vaXNlKGNvbnN0IFF1YW50dW0sY29uc3QgTm9pc2VUeXBlKTsKCmV4dGVybiB2b2lk
CiAgQ29udHJhc3QoY29uc3QgaW50LFF1YW50dW0gKixRdWFudHVtICosUXVhbnR1bSAqKSwKICBI
U0xUcmFuc2Zvcm0oY29uc3QgZG91YmxlLGNvbnN0IGRvdWJsZSxjb25zdCBkb3VibGUsUXVhbnR1
bSAqLFF1YW50dW0gKiwKICAgIFF1YW50dW0gKiksCiAgSFdCVHJhbnNmb3JtKGNvbnN0IGRvdWJs
ZSxjb25zdCBkb3VibGUsY29uc3QgZG91YmxlLFF1YW50dW0gKixRdWFudHVtICosCiAgICBRdWFu
dHVtICopLAogIEh1bGwoY29uc3QgbG9uZyxjb25zdCBsb25nLGNvbnN0IHVuc2lnbmVkIGxvbmcs
Y29uc3QgdW5zaWduZWQgbG9uZyxRdWFudHVtICosCiAgICBRdWFudHVtICosY29uc3QgaW50KSwK
ICBJZGVudGl0eUFmZmluZShBZmZpbmVNYXRyaXggKiksCiAgTW9kdWxhdGUoY29uc3QgZG91Ymxl
LGNvbnN0IGRvdWJsZSxjb25zdCBkb3VibGUsUXVhbnR1bSAqLFF1YW50dW0gKiwKICAgIFF1YW50
dW0gKiksCiAgVHJhbnNmb3JtSFNMKGNvbnN0IFF1YW50dW0sY29uc3QgUXVhbnR1bSxjb25zdCBR
dWFudHVtLGRvdWJsZSAqLGRvdWJsZSAqLAogICAgZG91YmxlICopLAogIFRyYW5zZm9ybUhXQihj
b25zdCBRdWFudHVtLGNvbnN0IFF1YW50dW0sY29uc3QgUXVhbnR1bSxkb3VibGUgKixkb3VibGUg
KiwKICAgIGRvdWJsZSAqKSwKICBVcHNhbXBsZShjb25zdCB1bnNpZ25lZCBsb25nLGNvbnN0IHVu
c2lnbmVkIGxvbmcsY29uc3QgdW5zaWduZWQgbG9uZywKICAgIHVuc2lnbmVkIGNoYXIgKik7CiMg
NjIgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJh
dy5jIiAyCiMgMSAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21h
Z2ljay9sb2cuaCIgMQojIDE3ICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NN
YWdpY2svbWFnaWNrL2xvZy5oIgp0eXBlZGVmIGVudW0KewogIFVuZGVmaW5lZEV2ZW50cyA9IDB4
MDAwMCwKICBOb0V2ZW50cyA9IDB4MDAwMCwKICBDb25maWd1cmVFdmVudCA9IDB4MDAwMSwKICBB
bm5vdGF0ZUV2ZW50ID0gMHgwMDAyLAogIFJlbmRlckV2ZW50ID0gMHgwMDA0LAogIFRyYW5zZm9y
bUV2ZW50ID0gMHgwMDA4LAogIExvY2FsZUV2ZW50ID0gMHgwMDEwLAogIENvZGVyRXZlbnQgPSAw
eDAwMjAsCiAgWDExRXZlbnQgPSAweDAwNDAsCiAgQ2FjaGVFdmVudCA9IDB4MDA4MCwKICBCbG9i
RXZlbnQgPSAweDAxMDAsCiAgRGVwcmVjYXRlRXZlbnQgPSAweDAyMDAsCiAgVXNlckV2ZW50ID0g
MHgwNDAwLAogIEFsbEV2ZW50cyA9IDB4RkZGRgp9IExvZ0V2ZW50VHlwZTsKCgoKCmV4dGVybiB1
bnNpZ25lZCBpbnQKICBJc0V2ZW50TG9nZ2luZyh2b2lkKSwKCiAgTG9nTWFnaWNrRXZlbnQoY29u
c3QgTG9nRXZlbnRUeXBlLGNvbnN0IGNoYXIgKixjb25zdCBjaGFyICosCiAgICBjb25zdCB1bnNp
Z25lZCBsb25nLGNvbnN0IGNoYXIgKiwuLi4pIF9fYXR0cmlidXRlX18oKGZvcm1hdCAocHJpbnRm
LDUsNikpKTsKCgoKCgpleHRlcm4gdW5zaWduZWQgbG9uZwogIFNldExvZ0V2ZW50TWFzayhjb25z
dCBjaGFyICopOwoKZXh0ZXJuIHZvaWQKICBEZXN0cm95TG9nSW5mbyh2b2lkKSwKICBTZXRMb2dG
b3JtYXQoY29uc3QgY2hhciAqKTsKIyA2MyAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dy
YXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiIDIKIyAxICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3Jh
cGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL21hZ2ljay5oIiAxCiMgMTEgIi9ob21lL2Jmcmll
c2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svbWFnaWNrLmgiCnR5cGVkZWYg
SW1hZ2UKICAqKCpEZWNvZGVySGFuZGxlcikoY29uc3QgSW1hZ2VJbmZvICosRXhjZXB0aW9uSW5m
byAqKTsKCnR5cGVkZWYgdW5zaWduZWQgaW50CiAgKCpFbmNvZGVySGFuZGxlcikoY29uc3QgSW1h
Z2VJbmZvICosSW1hZ2UgKiksCiAgKCpNYWdpY2tIYW5kbGVyKShjb25zdCB1bnNpZ25lZCBjaGFy
ICosY29uc3Qgc2l6ZV90KTsKCnR5cGVkZWYgc3RydWN0IF9NYWdpY2tJbmZvCnsKICBjb25zdCBj
aGFyCiAgICAqbmFtZSwKICAgICpkZXNjcmlwdGlvbiwKICAgICpub3RlLAogICAgKnZlcnNpb24s
CiAgICAqbW9kdWxlOwoKICBJbWFnZUluZm8KICAgICppbWFnZV9pbmZvOwoKICBEZWNvZGVySGFu
ZGxlcgogICAgZGVjb2RlcjsKCiAgRW5jb2RlckhhbmRsZXIKICAgIGVuY29kZXI7CgogIE1hZ2lj
a0hhbmRsZXIKICAgIG1hZ2ljazsKCiAgdm9pZAogICAgKmNsaWVudF9kYXRhOwoKICB1bnNpZ25l
ZCBpbnQKICAgIGFkam9pbiwKICAgIHJhdywKICAgIHN0ZWFsdGgsCiAgICBzZWVrYWJsZV9zdHJl
YW0sCiAgICBibG9iX3N1cHBvcnQsCiAgICB0aHJlYWRfc3VwcG9ydDsKCiAgdW5zaWduZWQgbG9u
ZwogICAgc2lnbmF0dXJlOwoKICBzdHJ1Y3QgX01hZ2lja0luZm8KICAgICpwcmV2aW91cywKICAg
ICpuZXh0Owp9IE1hZ2lja0luZm87CgoKCgpleHRlcm4gY2hhcgogICpNYWdpY2tUb01pbWUoY29u
c3QgY2hhciAqKTsKCmV4dGVybiBjb25zdCBjaGFyCiAgKkdldEltYWdlTWFnaWNrKGNvbnN0IHVu
c2lnbmVkIGNoYXIgKixjb25zdCBzaXplX3QpOwoKZXh0ZXJuIHVuc2lnbmVkIGludAogIElzTWFn
aWNrQ29uZmxpY3QoY29uc3QgY2hhciAqKSwKICBMaXN0TWFnaWNrSW5mbyhGSUxFICosRXhjZXB0
aW9uSW5mbyAqKSwKICBVbnJlZ2lzdGVyTWFnaWNrSW5mbyhjb25zdCBjaGFyICopOwoKZXh0ZXJu
IHZvaWQKICBEZXN0cm95TWFnaWNrKHZvaWQpLAogIERlc3Ryb3lNYWdpY2tJbmZvKHZvaWQpLAog
IEluaXRpYWxpemVNYWdpY2soY29uc3QgY2hhciAqKTsKCmV4dGVybiBjb25zdCBNYWdpY2tJbmZv
CiAgKkdldE1hZ2lja0luZm8oY29uc3QgY2hhciAqLEV4Y2VwdGlvbkluZm8gKmV4Y2VwdGlvbik7
CgpleHRlcm4gTWFnaWNrSW5mbwogICpSZWdpc3Rlck1hZ2lja0luZm8oTWFnaWNrSW5mbyAqKSwK
ICAqU2V0TWFnaWNrSW5mbyhjb25zdCBjaGFyICopOwojIDY0ICIvaG9tZS9iZnJpZXNlbi9zcmMv
Z3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIgMgojIDEgIi9ob21lL2Jmcmll
c2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svbW9uaXRvci5oIiAxCiMgMTQg
Ii9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svbW9uaXRv
ci5oIgp0eXBlZGVmIHVuc2lnbmVkIGludAogICgqTW9uaXRvckhhbmRsZXIpKGNvbnN0IGNoYXIg
Kixjb25zdCBFeHRlbmRlZFNpZ25lZEludGVncmFsVHlwZSwKICAgIGNvbnN0IEV4dGVuZGVkVW5z
aWduZWRJbnRlZ3JhbFR5cGUsRXhjZXB0aW9uSW5mbyAqKTsKCgoKCmV4dGVybiBNb25pdG9ySGFu
ZGxlcgogIFNldE1vbml0b3JIYW5kbGVyKE1vbml0b3JIYW5kbGVyKTsKCmV4dGVybiB1bnNpZ25l
ZCBpbnQKICBNYWdpY2tNb25pdG9yKGNvbnN0IGNoYXIgKixjb25zdCBFeHRlbmRlZFNpZ25lZElu
dGVncmFsVHlwZSwKICAgIGNvbnN0IEV4dGVuZGVkVW5zaWduZWRJbnRlZ3JhbFR5cGUsRXhjZXB0
aW9uSW5mbyAqKTsKIyA2NSAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFn
aWNrL21hZ2ljay9kcmF3LmMiIDIKIyAxICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3Jh
cGhpY3NNYWdpY2svbWFnaWNrL3V0aWxpdHkuaCIgMQojIDE0ICIvaG9tZS9iZnJpZXNlbi9zcmMv
Z3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL3V0aWxpdHkuaCIKdHlwZWRlZiBlbnVtCnsK
ICBSb290UGF0aCwKICBIZWFkUGF0aCwKICBUYWlsUGF0aCwKICBCYXNlUGF0aCwKICBFeHRlbnNp
b25QYXRoCn0gUGF0aFR5cGU7CgoKCgp0eXBlZGVmIHN0cnVjdCBfVG9rZW5JbmZvCnsKICBpbnQK
ICAgIHN0YXRlOwoKICB1bnNpZ25lZCBpbnQKICAgIGZsYWc7CgogIGxvbmcKICAgIG9mZnNldDsK
CiAgY2hhcgogICAgcXVvdGU7Cn0gVG9rZW5JbmZvOwoKCgoKZXh0ZXJuIGNoYXIKICAqQWxsb2Nh
dGVTdHJpbmcoY29uc3QgY2hhciAqKSwKICAqQmFzZTY0RW5jb2RlKGNvbnN0IHVuc2lnbmVkIGNo
YXIgKixjb25zdCBzaXplX3Qsc2l6ZV90ICopLAogICpFc2NhcGVTdHJpbmcoY29uc3QgY2hhciAq
LGNvbnN0IGNoYXIpLAogICpHZXRQYWdlR2VvbWV0cnkoY29uc3QgY2hhciAqKSwKICAqKkxpc3RG
aWxlcyhjb25zdCBjaGFyICosY29uc3QgY2hhciAqLGxvbmcgKiksCiAgKlNldENsaWVudE5hbWUo
Y29uc3QgY2hhciAqKSwKICAqKlN0cmluZ1RvQXJndihjb25zdCBjaGFyICosaW50ICopLAogICoq
U3RyaW5nVG9MaXN0KGNvbnN0IGNoYXIgKiksCiAgKlRyYW5zbGF0ZVRleHQoY29uc3QgSW1hZ2VJ
bmZvICosSW1hZ2UgKixjb25zdCBjaGFyICopOwoKZXh0ZXJuIGNvbnN0IGNoYXIKICAqQWNxdWly
ZVN0cmluZyhjb25zdCBjaGFyICopLAogICpTZXRDbGllbnRQYXRoKGNvbnN0IGNoYXIgKik7Cgpl
eHRlcm4gZG91YmxlCiAgU3RyaW5nVG9Eb3VibGUoY29uc3QgY2hhciAqLGNvbnN0IGRvdWJsZSk7
CgpleHRlcm4gaW50CiAgR2V0R2VvbWV0cnkoY29uc3QgY2hhciAqLGxvbmcgKixsb25nICosdW5z
aWduZWQgbG9uZyAqLHVuc2lnbmVkIGxvbmcgKiksCiAgR2xvYkV4cHJlc3Npb24oY29uc3QgY2hh
ciAqLGNvbnN0IGNoYXIgKiksCiAgTG9jYWxlTkNvbXBhcmUoY29uc3QgY2hhciAqLGNvbnN0IGNo
YXIgKixjb25zdCBzaXplX3QpLAogIExvY2FsZUNvbXBhcmUoY29uc3QgY2hhciAqLGNvbnN0IGNo
YXIgKiksCiAgR2V0TWFnaWNrR2VvbWV0cnkoY29uc3QgY2hhciAqLGxvbmcgKixsb25nICosdW5z
aWduZWQgbG9uZyAqLHVuc2lnbmVkIGxvbmcgKiksCiAgU3Vic3RpdHV0ZVN0cmluZyhjaGFyICoq
LGNvbnN0IGNoYXIqLGNvbnN0IGNoYXIgKiksCiAgU3lzdGVtQ29tbWFuZChjb25zdCB1bnNpZ25l
ZCBpbnQsY29uc3QgY2hhciAqKSwKICBUb2tlbml6ZXIoVG9rZW5JbmZvICosdW5zaWduZWQsY2hh
ciAqLHNpemVfdCxjaGFyICosY2hhciAqLGNoYXIgKixjaGFyICosCiAgICBjaGFyLGNoYXIgKixp
bnQgKixjaGFyICopOwoKZXh0ZXJuIHVuc2lnbmVkIGNoYXIKICAqQmFzZTY0RGVjb2RlKGNvbnN0
IGNoYXIgKiwgc2l6ZV90ICopOwoKZXh0ZXJuIHVuc2lnbmVkIGludAogIENsb25lU3RyaW5nKGNo
YXIgKiosY29uc3QgY2hhciAqKSwKICBDb25jYXRlbmF0ZVN0cmluZyhjaGFyICoqLGNvbnN0IGNo
YXIgKiksCiAgRXhwYW5kRmlsZW5hbWVzKGludCAqLGNoYXIgKioqKSwKICBHZXRFeGVjdXRpb25Q
YXRoKGNoYXIgKiksCiAgSXNBY2Nlc3NpYmxlKGNvbnN0IGNoYXIgKiksCiAgSXNHZW9tZXRyeShj
b25zdCBjaGFyICopLAogIElzR2xvYihjb25zdCBjaGFyICopOwoKZXh0ZXJuIHVuc2lnbmVkIGxv
bmcKICBNdWx0aWxpbmVDZW5zdXMoY29uc3QgY2hhciAqKTsKCmV4dGVybiB2b2lkCiAgKkFjcXVp
cmVNZW1vcnkoY29uc3Qgc2l6ZV90KSwKICBBcHBlbmRJbWFnZUZvcm1hdChjb25zdCBjaGFyICos
Y2hhciAqKSwKICAqQ2xvbmVNZW1vcnkodm9pZCAqLGNvbnN0IHZvaWQgKixjb25zdCBzaXplX3Qp
LAogIEV4cGFuZEZpbGVuYW1lKGNoYXIgKiksCiAgRm9ybWF0U2l6ZShjb25zdCBFeHRlbmRlZFNp
Z25lZEludGVncmFsVHlwZSxjaGFyICopLAogIEdldFBhdGhDb21wb25lbnQoY29uc3QgY2hhciAq
LFBhdGhUeXBlLGNoYXIgKiksCiAgR2V0VG9rZW4oY29uc3QgY2hhciAqLGNoYXIgKiosY2hhciAq
KSwKICBMaWJlcmF0ZU1lbW9yeSh2b2lkICoqKSwKICBMb2NhbGVMb3dlcihjaGFyICopLAogIExv
Y2FsZVVwcGVyKGNoYXIgKiksCiAgUmVhY3F1aXJlTWVtb3J5KHZvaWQgKiosY29uc3Qgc2l6ZV90
KSwKICBTdHJpcChjaGFyICopLAogIFNldEdlb21ldHJ5KGNvbnN0IEltYWdlICosUmVjdGFuZ2xl
SW5mbyAqKSwKICBUZW1wb3JhcnlGaWxlbmFtZShjaGFyICopOwoKZXh0ZXJuIHZvaWQKCiAgRm9y
bWF0U3RyaW5nKGNoYXIgKixjb25zdCBjaGFyICosLi4uKSBfX2F0dHJpYnV0ZV9fKChmb3JtYXQg
KHByaW50ZiwyLDMpKSk7CiMgNjYgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGlj
c01hZ2ljay9tYWdpY2svZHJhdy5jIiAyCiMgODcgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGlj
cy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgp0eXBlZGVmIGVudW0KewogIFBhdGhEZWZh
dWx0T3BlcmF0aW9uLAogIFBhdGhDbG9zZU9wZXJhdGlvbiwKICBQYXRoQ3VydmVUb09wZXJhdGlv
biwKICBQYXRoQ3VydmVUb1F1YWRyYXRpY0Jlemllck9wZXJhdGlvbiwKICBQYXRoQ3VydmVUb1F1
YWRyYXRpY0JlemllclNtb290aE9wZXJhdGlvbiwKICBQYXRoQ3VydmVUb1Ntb290aE9wZXJhdGlv
biwKICBQYXRoRWxsaXB0aWNBcmNPcGVyYXRpb24sCiAgUGF0aExpbmVUb0hvcml6b250YWxPcGVy
YXRpb24sCiAgUGF0aExpbmVUb09wZXJhdGlvbiwKICBQYXRoTGluZVRvVmVydGljYWxPcGVyYXRp
b24sCiAgUGF0aE1vdmVUb09wZXJhdGlvbgp9IFBhdGhPcGVyYXRpb247Cgp0eXBlZGVmIGVudW0K
ewogIERlZmF1bHRQYXRoTW9kZSwKICBBYnNvbHV0ZVBhdGhNb2RlLAogIFJlbGF0aXZlUGF0aE1v
ZGUKfSBQYXRoTW9kZTsKCnN0cnVjdCBfRHJhd0NvbnRleHQKewoKICBJbWFnZQogICAgKmltYWdl
OwoKCiAgY2hhcgogICAgKm12ZzsKCiAgc2l6ZV90CiAgICBtdmdfYWxsb2MsCiAgICBtdmdfbGVu
Z3RoOwoKICB1bnNpZ25lZCBpbnQKICAgIG12Z193aWR0aDsKCgogIGNoYXIKICAgICpwYXR0ZXJu
X2lkOwoKICBSZWN0YW5nbGVJbmZvCiAgICBwYXR0ZXJuX2JvdW5kczsKCiAgc2l6ZV90CiAgICBw
YXR0ZXJuX29mZnNldDsKCgogIHVuc2lnbmVkIGludAogICAgaW5kZXg7CgogIERyYXdJbmZvCiAg
ICAqKmdyYXBoaWNfY29udGV4dDsKCiAgaW50CiAgICBmaWx0ZXJfb2ZmOwoKCiAgdW5zaWduZWQg
aW50CiAgICBpbmRlbnRfZGVwdGg7CgoKICBQYXRoT3BlcmF0aW9uCiAgICBwYXRoX29wZXJhdGlv
bjsKCiAgUGF0aE1vZGUKICAgIHBhdGhfbW9kZTsKCgogIHVuc2lnbmVkIGxvbmcKICAgIHNpZ25h
dHVyZTsKfTsKCgpzdHJ1Y3QgX0RyYXdWVGFibGUKewogIHZvaWQgKCpEcmF3QW5ub3RhdGlvbikK
ICAgIChEcmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIHks
CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqdGV4dCk7CiAgdm9pZCAoKkRyYXdBcmMpCiAgICAo
RHJhd0NvbnRleHQgY29udGV4dCwgY29uc3QgZG91YmxlIHN4LCBjb25zdCBkb3VibGUgc3ksCiAg
ICAgY29uc3QgZG91YmxlIGV4LCBjb25zdCBkb3VibGUgZXksIGNvbnN0IGRvdWJsZSBzZCwgY29u
c3QgZG91YmxlIGVkKTsKICB2b2lkICgqRHJhd0JlemllcikKICAgIChEcmF3Q29udGV4dCBjb250
ZXh0LCBjb25zdCBzaXplX3QgbnVtX2Nvb3JkcywgY29uc3QgUG9pbnRJbmZvICpjb29yZGluYXRl
cyk7CiAgdm9pZCAoKkRyYXdDaXJjbGUpCiAgICAoRHJhd0NvbnRleHQgY29udGV4dCwgY29uc3Qg
ZG91YmxlIG94LCBjb25zdCBkb3VibGUgb3ksCiAgICAgY29uc3QgZG91YmxlIHB4LCBjb25zdCBk
b3VibGUgcHkpOwogIHZvaWQgKCpEcmF3Q29sb3IpCiAgICAoRHJhd0NvbnRleHQgY29udGV4dCwg
Y29uc3QgZG91YmxlIHgsIGNvbnN0IGRvdWJsZSB5LAogICAgIGNvbnN0IFBhaW50TWV0aG9kIHBh
aW50TWV0aG9kKTsKICB2b2lkICgqRHJhd0NvbW1lbnQpCiAgICAoRHJhd0NvbnRleHQgY29udGV4
dCxjb25zdCBjaGFyKiBjb21tZW50KTsKICB2b2lkICgqRHJhd0Rlc3Ryb3lDb250ZXh0KQogICAg
KERyYXdDb250ZXh0IGNvbnRleHQpOwogIHZvaWQgKCpEcmF3RWxsaXBzZSkKICAgIChEcmF3Q29u
dGV4dCBjb250ZXh0LCBjb25zdCBkb3VibGUgb3gsIGNvbnN0IGRvdWJsZSBveSwKICAgICBjb25z
dCBkb3VibGUgcngsIGNvbnN0IGRvdWJsZSByeSwgY29uc3QgZG91YmxlIHN0YXJ0LCBjb25zdCBk
b3VibGUgZW5kKTsKICB2b2lkICgqRHJhd0NvbXBvc2l0ZSkKICAgIChEcmF3Q29udGV4dCBjb250
ZXh0LCBjb25zdCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVfb3BlcmF0b3IsCiAgICAgY29u
c3QgZG91YmxlIHgsIGNvbnN0IGRvdWJsZSB5LCBjb25zdCBkb3VibGUgd2lkdGgsIGNvbnN0IGRv
dWJsZSBoZWlnaHQsCiAgICAgY29uc3QgSW1hZ2UgKiBpbWFnZSApOwogIHZvaWQgKCpEcmF3TGlu
ZSkKICAgIChEcmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCBkb3VibGUgc3gsIGNvbnN0IGRvdWJs
ZSBzeSwKICAgICBjb25zdCBkb3VibGUgZXgsIGNvbnN0IGRvdWJsZSBleSk7CiAgdm9pZCAoKkRy
YXdNYXR0ZSkKICAgIChEcmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCBkb3VibGUgeCwgY29uc3Qg
ZG91YmxlIHksCiAgICAgY29uc3QgUGFpbnRNZXRob2QgcGFpbnRfbWV0aG9kKTsKICB2b2lkICgq
RHJhd1BhdGhDbG9zZSkKICAgIChEcmF3Q29udGV4dCBjb250ZXh0KTsKICB2b2lkICgqRHJhd1Bh
dGhDdXJ2ZVRvQWJzb2x1dGUpCiAgICAoRHJhd0NvbnRleHQgY29udGV4dCwgY29uc3QgZG91Ymxl
IHgxLCBjb25zdCBkb3VibGUgeTEsCiAgICAgY29uc3QgZG91YmxlIHgyLCBjb25zdCBkb3VibGUg
eTIsIGNvbnN0IGRvdWJsZSB4LCBjb25zdCBkb3VibGUgeSk7CiAgdm9pZCAoKkRyYXdQYXRoQ3Vy
dmVUb1JlbGF0aXZlKQogICAgKERyYXdDb250ZXh0IGNvbnRleHQsIGNvbnN0IGRvdWJsZSB4MSwg
Y29uc3QgZG91YmxlIHkxLAogICAgIGNvbnN0IGRvdWJsZSB4MiwgY29uc3QgZG91YmxlIHkyLCBj
b25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIHkpOwogIHZvaWQgKCpEcmF3UGF0aEN1cnZlVG9R
dWFkcmF0aWNCZXppZXJBYnNvbHV0ZSkKICAgIChEcmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCBk
b3VibGUgeDEsIGNvbnN0IGRvdWJsZSB5MSwKICAgICBjb25zdCBkb3VibGUgeCwgY29uc3QgZG91
YmxlIHkpOwogIHZvaWQgKCpEcmF3UGF0aEN1cnZlVG9RdWFkcmF0aWNCZXppZXJSZWxhdGl2ZSkK
ICAgIChEcmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCBkb3VibGUgeDEsIGNvbnN0IGRvdWJsZSB5
MSwKICAgICBjb25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIHkpOwogIHZvaWQgKCpEcmF3UGF0
aEN1cnZlVG9RdWFkcmF0aWNCZXppZXJTbW9vdGhBYnNvbHV0ZSkKICAgIChEcmF3Q29udGV4dCBj
b250ZXh0LCBjb25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIHkpOwogIHZvaWQgKCpEcmF3UGF0
aEN1cnZlVG9RdWFkcmF0aWNCZXppZXJTbW9vdGhSZWxhdGl2ZSkKICAgIChEcmF3Q29udGV4dCBj
b250ZXh0LCBjb25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIHkpOwogIHZvaWQgKCpEcmF3UGF0
aEN1cnZlVG9TbW9vdGhBYnNvbHV0ZSkKICAgIChEcmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCBk
b3VibGUgeDIsIGNvbnN0IGRvdWJsZSB5MiwKICAgICBjb25zdCBkb3VibGUgeCwgY29uc3QgZG91
YmxlIHkpOwogIHZvaWQgKCpEcmF3UGF0aEN1cnZlVG9TbW9vdGhSZWxhdGl2ZSkKICAgIChEcmF3
Q29udGV4dCBjb250ZXh0LCBjb25zdCBkb3VibGUgeDIsIGNvbnN0IGRvdWJsZSB5MiwKICAgICBj
b25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIHkpOwogIHZvaWQgKCpEcmF3UGF0aEVsbGlwdGlj
QXJjQWJzb2x1dGUpCiAgICAoRHJhd0NvbnRleHQgY29udGV4dCwgY29uc3QgZG91YmxlIHJ4LCBj
b25zdCBkb3VibGUgcnksCiAgICAgY29uc3QgZG91YmxlIHhfYXhpc19yb3RhdGlvbiwgdW5zaWdu
ZWQgaW50IGxhcmdlX2FyY19mbGFnLAogICAgIHVuc2lnbmVkIGludCBzd2VlcF9mbGFnLCBjb25z
dCBkb3VibGUgeCwgY29uc3QgZG91YmxlIHkpOwogIHZvaWQgKCpEcmF3UGF0aEVsbGlwdGljQXJj
UmVsYXRpdmUpCiAgICAoRHJhd0NvbnRleHQgY29udGV4dCwgY29uc3QgZG91YmxlIHJ4LCBjb25z
dCBkb3VibGUgcnksCiAgICAgY29uc3QgZG91YmxlIHhfYXhpc19yb3RhdGlvbiwgdW5zaWduZWQg
aW50IGxhcmdlX2FyY19mbGFnLAogICAgIHVuc2lnbmVkIGludCBzd2VlcF9mbGFnLCBjb25zdCBk
b3VibGUgeCwgY29uc3QgZG91YmxlIHkpOwogIHZvaWQgKCpEcmF3UGF0aEZpbmlzaCkKICAgIChE
cmF3Q29udGV4dCBjb250ZXh0KTsKICB2b2lkICgqRHJhd1BhdGhMaW5lVG9BYnNvbHV0ZSkKICAg
IChEcmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIHkpOwog
IHZvaWQgKCpEcmF3UGF0aExpbmVUb1JlbGF0aXZlKQogICAgKERyYXdDb250ZXh0IGNvbnRleHQs
IGNvbnN0IGRvdWJsZSB4LCBjb25zdCBkb3VibGUgeSk7CiAgdm9pZCAoKkRyYXdQYXRoTGluZVRv
SG9yaXpvbnRhbEFic29sdXRlKQogICAgKERyYXdDb250ZXh0IGNvbnRleHQsIGNvbnN0IGRvdWJs
ZSB4KTsKICB2b2lkICgqRHJhd1BhdGhMaW5lVG9Ib3Jpem9udGFsUmVsYXRpdmUpCiAgICAoRHJh
d0NvbnRleHQgY29udGV4dCwgY29uc3QgZG91YmxlIHgpOwogIHZvaWQgKCpEcmF3UGF0aExpbmVU
b1ZlcnRpY2FsQWJzb2x1dGUpCiAgICAoRHJhd0NvbnRleHQgY29udGV4dCwgY29uc3QgZG91Ymxl
IHkpOwogIHZvaWQgKCpEcmF3UGF0aExpbmVUb1ZlcnRpY2FsUmVsYXRpdmUpCiAgICAoRHJhd0Nv
bnRleHQgY29udGV4dCwgY29uc3QgZG91YmxlIHkpOwogIHZvaWQgKCpEcmF3UGF0aE1vdmVUb0Fi
c29sdXRlKQogICAgKERyYXdDb250ZXh0IGNvbnRleHQsIGNvbnN0IGRvdWJsZSB4LCBjb25zdCBk
b3VibGUgeSk7CiAgdm9pZCAoKkRyYXdQYXRoTW92ZVRvUmVsYXRpdmUpCiAgICAoRHJhd0NvbnRl
eHQgY29udGV4dCwgY29uc3QgZG91YmxlIHgsIGNvbnN0IGRvdWJsZSB5KTsKICB2b2lkICgqRHJh
d1BhdGhTdGFydCkKICAgIChEcmF3Q29udGV4dCBjb250ZXh0KTsKICB2b2lkICgqRHJhd1BvaW50
KQogICAgKERyYXdDb250ZXh0IGNvbnRleHQsIGNvbnN0IGRvdWJsZSB4LCBjb25zdCBkb3VibGUg
eSk7CiAgdm9pZCAoKkRyYXdQb2x5Z29uKQogICAgKERyYXdDb250ZXh0IGNvbnRleHQsIGNvbnN0
IHNpemVfdCBudW1fY29vcmRzLCBjb25zdCBQb2ludEluZm8gKiBjb29yZGluYXRlcyk7CiAgdm9p
ZCAoKkRyYXdQb2x5bGluZSkKICAgIChEcmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCBzaXplX3Qg
bnVtX2Nvb3JkcywgY29uc3QgUG9pbnRJbmZvICogY29vcmRpbmF0ZXMpOwogIHZvaWQgKCpEcmF3
UG9wQ2xpcFBhdGgpCiAgICAoRHJhd0NvbnRleHQgY29udGV4dCk7CiAgdm9pZCAoKkRyYXdQb3BE
ZWZzKQogICAgKERyYXdDb250ZXh0IGNvbnRleHQpOwogIHZvaWQgKCpEcmF3UG9wR3JhcGhpY0Nv
bnRleHQpCiAgICAoRHJhd0NvbnRleHQgY29udGV4dCk7CiAgdm9pZCAoKkRyYXdQb3BQYXR0ZXJu
KQogICAgKERyYXdDb250ZXh0IGNvbnRleHQpOwogIHZvaWQgKCpEcmF3UHVzaENsaXBQYXRoKQog
ICAgKERyYXdDb250ZXh0IGNvbnRleHQsIGNvbnN0IGNoYXIgKmNsaXBfcGF0aF9pZCk7CiAgdm9p
ZCAoKkRyYXdQdXNoRGVmcykKICAgIChEcmF3Q29udGV4dCBjb250ZXh0KTsKICB2b2lkICgqRHJh
d1B1c2hHcmFwaGljQ29udGV4dCkKICAgIChEcmF3Q29udGV4dCBjb250ZXh0KTsKICB2b2lkICgq
RHJhd1B1c2hQYXR0ZXJuKQogICAgKERyYXdDb250ZXh0IGNvbnRleHQsIGNvbnN0IGNoYXIgKnBh
dHRlcm5faWQsCiAgICAgY29uc3QgZG91YmxlIHgsIGNvbnN0IGRvdWJsZSB5LCBjb25zdCBkb3Vi
bGUgd2lkdGgsIGNvbnN0IGRvdWJsZSBoZWlnaHQpOwogIHZvaWQgKCpEcmF3UmVjdGFuZ2xlKQog
ICAgKERyYXdDb250ZXh0IGNvbnRleHQsIGNvbnN0IGRvdWJsZSB4MSwgY29uc3QgZG91YmxlIHkx
LAogICAgIGNvbnN0IGRvdWJsZSB4MiwgY29uc3QgZG91YmxlIHkyKTsKICB2b2lkICgqRHJhd1Jv
dW5kUmVjdGFuZ2xlKQogICAgKERyYXdDb250ZXh0IGNvbnRleHQsIGRvdWJsZSB4MSwgZG91Ymxl
IHkxLAogICAgIGRvdWJsZSB4MiwgZG91YmxlIHkyLCBkb3VibGUgcngsIGRvdWJsZSByeSk7CiAg
dm9pZCAoKkRyYXdBZmZpbmUpCiAgICAoRHJhd0NvbnRleHQgY29udGV4dCwgY29uc3QgQWZmaW5l
TWF0cml4ICphZmZpbmUpOwogIHZvaWQgKCpEcmF3U2V0Q2xpcFBhdGgpCiAgICAoRHJhd0NvbnRl
eHQgY29udGV4dCwgY29uc3QgY2hhciAqY2xpcF9wYXRoKTsKICB2b2lkICgqRHJhd1NldENsaXBS
dWxlKQogICAgKERyYXdDb250ZXh0IGNvbnRleHQsIGNvbnN0IEZpbGxSdWxlIGZpbGxfcnVsZSk7
CiAgdm9pZCAoKkRyYXdTZXRDbGlwVW5pdHMpCiAgICAoRHJhd0NvbnRleHQgY29udGV4dCwgY29u
c3QgQ2xpcFBhdGhVbml0cyBjbGlwX3VuaXRzKTsKICB2b2lkICgqRHJhd1NldEZpbGxDb2xvcikK
ICAgIChEcmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCBQaXhlbFBhY2tldCAqIGZpbGxfY29sb3Ip
OwogIHZvaWQgKCpEcmF3U2V0RmlsbE9wYWNpdHkpCiAgICAoRHJhd0NvbnRleHQgY29udGV4dCwg
Y29uc3QgZG91YmxlIGZpbGxfb3BhY2l0eSk7CiAgdm9pZCAoKkRyYXdTZXRGaWxsUnVsZSkKICAg
IChEcmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCBGaWxsUnVsZSBmaWxsX3J1bGUpOwogIHZvaWQg
KCpEcmF3U2V0RmlsbFBhdHRlcm5VUkwpCiAgICAoRHJhd0NvbnRleHQgY29udGV4dCwgY29uc3Qg
Y2hhciogZmlsbF91cmwpOwogIHZvaWQgKCpEcmF3U2V0Rm9udCkKICAgIChEcmF3Q29udGV4dCBj
b250ZXh0LCBjb25zdCBjaGFyICpmb250X25hbWUpOwogIHZvaWQgKCpEcmF3U2V0Rm9udEZhbWls
eSkKICAgIChEcmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCBjaGFyICpmb250X2ZhbWlseSk7CiAg
dm9pZCAoKkRyYXdTZXRGb250U2l6ZSkKICAgIChEcmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCBk
b3VibGUgZm9udF9wb2ludHNpemUpOwogIHZvaWQgKCpEcmF3U2V0Rm9udFN0cmV0Y2gpCiAgICAo
RHJhd0NvbnRleHQgY29udGV4dCwgY29uc3QgU3RyZXRjaFR5cGUgZm9udF9zdHJldGNoKTsKICB2
b2lkICgqRHJhd1NldEZvbnRTdHlsZSkKICAgIChEcmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCBT
dHlsZVR5cGUgZm9udF9zdHlsZSk7CiAgdm9pZCAoKkRyYXdTZXRGb250V2VpZ2h0KQogICAgKERy
YXdDb250ZXh0IGNvbnRleHQsIGNvbnN0IHVuc2lnbmVkIGxvbmcgZm9udF93ZWlnaHQpOwogIHZv
aWQgKCpEcmF3U2V0R3Jhdml0eSkKICAgIChEcmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCBHcmF2
aXR5VHlwZSBncmF2aXR5KTsKICB2b2lkICgqRHJhd1JvdGF0ZSkKICAgIChEcmF3Q29udGV4dCBj
b250ZXh0LCBjb25zdCBkb3VibGUgZGVncmVlcyk7CiAgdm9pZCAoKkRyYXdTY2FsZSkKICAgIChE
cmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIHkpOwogIHZv
aWQgKCpEcmF3U2tld1gpCiAgICAoRHJhd0NvbnRleHQgY29udGV4dCwgY29uc3QgZG91YmxlIGRl
Z3JlZXMpOwogIHZvaWQgKCpEcmF3U2tld1kpCiAgICAoRHJhd0NvbnRleHQgY29udGV4dCwgY29u
c3QgZG91YmxlIGRlZ3JlZXMpOwoKCiAgdm9pZCAoKkRyYXdTZXRTdHJva2VBbnRpYWxpYXMpCiAg
ICAoRHJhd0NvbnRleHQgY29udGV4dCwgY29uc3QgdW5zaWduZWQgaW50IHRydWVfZmFsc2UpOwog
IHZvaWQgKCpEcmF3U2V0U3Ryb2tlQ29sb3IpCiAgICAoRHJhd0NvbnRleHQgY29udGV4dCwgY29u
c3QgUGl4ZWxQYWNrZXQgKiBzdHJva2VfY29sb3IpOwogIHZvaWQgKCpEcmF3U2V0U3Ryb2tlRGFz
aEFycmF5KQogICAgKERyYXdDb250ZXh0IGNvbnRleHQsY29uc3QgZG91YmxlICpkYXNoYXJyYXkp
OwogIHZvaWQgKCpEcmF3U2V0U3Ryb2tlRGFzaE9mZnNldCkKICAgIChEcmF3Q29udGV4dCBjb250
ZXh0LGNvbnN0IGRvdWJsZSBkYXNob2Zmc2V0KTsKICB2b2lkICgqRHJhd1NldFN0cm9rZUxpbmVD
YXApCiAgICAoRHJhd0NvbnRleHQgY29udGV4dCwgY29uc3QgTGluZUNhcCBsaW5lY2FwKTsKICB2
b2lkICgqRHJhd1NldFN0cm9rZUxpbmVKb2luKQogICAgKERyYXdDb250ZXh0IGNvbnRleHQsIGNv
bnN0IExpbmVKb2luIGxpbmVqb2luKTsKICB2b2lkICgqRHJhd1NldFN0cm9rZU1pdGVyTGltaXQp
CiAgICAoRHJhd0NvbnRleHQgY29udGV4dCxjb25zdCB1bnNpZ25lZCBsb25nIG1pdGVybGltaXQp
OwogIHZvaWQgKCpEcmF3U2V0U3Ryb2tlT3BhY2l0eSkKICAgIChEcmF3Q29udGV4dCBjb250ZXh0
LCBjb25zdCBkb3VibGUgb3BhY2l0eSk7CiAgdm9pZCAoKkRyYXdTZXRTdHJva2VQYXR0ZXJuVVJM
KQogICAgKERyYXdDb250ZXh0IGNvbnRleHQsIGNvbnN0IGNoYXIqIHN0cm9rZV91cmwpOwogIHZv
aWQgKCpEcmF3U2V0U3Ryb2tlV2lkdGgpCiAgICAoRHJhd0NvbnRleHQgY29udGV4dCwgY29uc3Qg
ZG91YmxlIHdpZHRoKTsKICB2b2lkICgqRHJhd1NldFRleHRBbnRpYWxpYXMpCiAgICAoRHJhd0Nv
bnRleHQgY29udGV4dCwgY29uc3QgdW5zaWduZWQgaW50IHRydWVfZmFsc2UpOwogIHZvaWQgKCpE
cmF3U2V0VGV4dERlY29yYXRpb24pCiAgICAoRHJhd0NvbnRleHQgY29udGV4dCwgY29uc3QgRGVj
b3JhdGlvblR5cGUgZGVjb3JhdGlvbik7CiAgdm9pZCAoKkRyYXdTZXRUZXh0VW5kZXJDb2xvcikK
ICAgIChEcmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCBQaXhlbFBhY2tldCAqIGNvbG9yKTsKICB2
b2lkICgqRHJhd1RyYW5zbGF0ZSkKICAgIChEcmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCBkb3Vi
bGUgeCwgY29uc3QgZG91YmxlIHkpOwogIHZvaWQgKCpEcmF3U2V0Vmlld2JveCkKICAgIChEcmF3
Q29udGV4dCBjb250ZXh0LCB1bnNpZ25lZCBsb25nIHgxLCB1bnNpZ25lZCBsb25nIHkxLAogICAg
IHVuc2lnbmVkIGxvbmcgeDIsIHVuc2lnbmVkIGxvbmcgeTIpOwp9OwoKCgoKc3RhdGljIGludAog
IE12Z1ByaW50ZihEcmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikK
Cl9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMiwgMykpKQoKLAogIE12Z0F1dG9XcmFw
UHJpbnRmKERyYXdDb250ZXh0IGNvbnRleHQsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQoKX19h
dHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAyLCAzKSkpCgo7CnN0YXRpYyB2b2lkCiAgTXZn
QXBwZW5kQ29sb3IoRHJhd0NvbnRleHQgY29udGV4dCwgY29uc3QgUGl4ZWxQYWNrZXQgKmNvbG9y
KTsKCgoKc3RhdGljIGludCBNdmdQcmludGYoRHJhd0NvbnRleHQgY29udGV4dCwgY29uc3QgY2hh
ciAqZm9ybWF0LCAuLi4pCnsKICBjb25zdCBzaXplX3QKICAgIGFsbG9jX3NpemUgPSAyMDUzICog
MjA7CgogICgodm9pZCkgKChjb250ZXh0ICE9IChEcmF3Q29udGV4dCkwKSA/IDAgOiAoX19lcHJp
bnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3Ny
Yy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMzc0LCAiY29udGV4dCAh
PSAoRHJhd0NvbnRleHQpTlVMTCIpLCAwKSkpOwogICgodm9pZCkgKChjb250ZXh0LT5zaWduYXR1
cmUgPT0gMHhhYmFjYWRhYlVMKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3Nl
cnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2lj
ay9tYWdpY2svZHJhdy5jIiwgMzc1LCAiY29udGV4dC0+c2lnbmF0dXJlID09IE1hZ2lja1NpZ25h
dHVyZSIpLCAwKSkpOwoKCiAgaWYgKGNvbnRleHQtPm12ZyA9PSAoY2hhciopIDApCiAgICB7CiAg
ICAgIGNvbnRleHQtPm12ZyA9IChjaGFyICopIEFjcXVpcmVNZW1vcnkoYWxsb2Nfc2l6ZSk7CiAg
ICAgIGlmKCBjb250ZXh0LT5tdmcgPT0gKGNoYXIqKSAwICkKICAgICAgICB7CiAgICAgICAgICBU
aHJvd0V4Y2VwdGlvbigmY29udGV4dC0+aW1hZ2UtPmV4Y2VwdGlvbixSZXNvdXJjZUxpbWl0RXJy
b3IsCiAgICAgICAgICAgICAiTWVtb3J5QWxsb2NhdGlvbkZhaWxlZCIsIlVuYWJsZVRvRHJhd09u
SW1hZ2UiKTsKICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICB9CgogICAgICBjb250ZXh0LT5t
dmdfYWxsb2MgPSBhbGxvY19zaXplOwogICAgICBjb250ZXh0LT5tdmdfbGVuZ3RoID0gMDsKICAg
ICAgaWYgKGNvbnRleHQtPm12ZyA9PSAwKQogICAgICAgIHsKICAgICAgICAgIFRocm93RXhjZXB0
aW9uKCZjb250ZXh0LT5pbWFnZS0+ZXhjZXB0aW9uLFJlc291cmNlTGltaXRFcnJvciwKICAgICAg
ICAgICAgIk1lbW9yeUFsbG9jYXRpb25GYWlsZWQiLCJVbmFibGVUb0RyYXdPbkltYWdlIik7CiAg
ICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgfQogICAgfQoKCiAgaWYgKGNvbnRleHQtPm12Z19h
bGxvYyA8IChjb250ZXh0LT5tdmdfbGVuZ3RoICsgMjA1MyAqIDEwKSkKICAgIHsKICAgICAgc2l6
ZV90IHJlYWxsb2Nfc2l6ZSA9IGNvbnRleHQtPm12Z19hbGxvYyArIGFsbG9jX3NpemU7CgogICAg
ICBSZWFjcXVpcmVNZW1vcnkoKHZvaWQgKiopICZjb250ZXh0LT5tdmcsIHJlYWxsb2Nfc2l6ZSk7
CiAgICAgIGlmIChjb250ZXh0LT5tdmcgPT0gMCkKICAgICAgICB7CiAgICAgICAgICBUaHJvd0V4
Y2VwdGlvbigmY29udGV4dC0+aW1hZ2UtPmV4Y2VwdGlvbixSZXNvdXJjZUxpbWl0RXJyb3IsCiAg
ICAgICAgICAgICJNZW1vcnlBbGxvY2F0aW9uRmFpbGVkIiwiVW5hYmxlVG9EcmF3T25JbWFnZSIp
OwogICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgIH0KICAgICAgY29udGV4dC0+bXZnX2FsbG9j
ID0gcmVhbGxvY19zaXplOwogICAgfQoKCiAgewogICAgaW50CiAgICAgIGZvcm1hdHRlZF9sZW5n
dGg7CgogICAgdm9sYXRpbGUgdmFfbGlzdAogICAgICBhcmdwOwoKCiAgICB3aGlsZShjb250ZXh0
LT5tdmdfd2lkdGggPCBjb250ZXh0LT5pbmRlbnRfZGVwdGgpCiAgICAgIHsKICAgICAgICBjb250
ZXh0LT5tdmdbY29udGV4dC0+bXZnX2xlbmd0aF0gPSAnICc7CiAgICAgICAgKytjb250ZXh0LT5t
dmdfbGVuZ3RoOwogICAgICAgICsrY29udGV4dC0+bXZnX3dpZHRoOwogICAgICB9CiAgICBjb250
ZXh0LT5tdmdbY29udGV4dC0+bXZnX2xlbmd0aF0gPSAwOwoKICAgIF9fYnVpbHRpbl9zdGRhcmdf
c3RhcnQoKGFyZ3ApLGZvcm1hdCk7CgoKCiAgICBmb3JtYXR0ZWRfbGVuZ3RoID0KICAgICAgdnNu
cHJpbnRmKGNvbnRleHQtPm12ZyArIGNvbnRleHQtPm12Z19sZW5ndGgsCiAgICAgICAgICAgICAg
ICBjb250ZXh0LT5tdmdfYWxsb2MgLSBjb250ZXh0LT5tdmdfbGVuZ3RoIC0gMSwgZm9ybWF0LCBh
cmdwKTsKCiAgICBfX2J1aWx0aW5fdmFfZW5kKGFyZ3ApOwoKICAgIGlmIChmb3JtYXR0ZWRfbGVu
Z3RoIDwgMCkKICAgICAgewogICAgICAgIFRocm93RXhjZXB0aW9uKCZjb250ZXh0LT5pbWFnZS0+
ZXhjZXB0aW9uLERyYXdFcnJvciwiVW5hYmxlVG9QcmludCIsCiAgICAgICAgICBmb3JtYXQpOwog
ICAgICB9CiAgICBlbHNlCiAgICAgIHsKICAgICAgICBjb250ZXh0LT5tdmdfbGVuZ3RoICs9IGZv
cm1hdHRlZF9sZW5ndGg7CiAgICAgICAgY29udGV4dC0+bXZnX3dpZHRoICs9IGZvcm1hdHRlZF9s
ZW5ndGg7CiAgICAgIH0KICAgIGNvbnRleHQtPm12Z1tjb250ZXh0LT5tdmdfbGVuZ3RoXSA9IDA7
CgoKICAgIGlmKCAoY29udGV4dC0+bXZnX2xlbmd0aCA+IDEpICYmCiAgICAgICAgKGNvbnRleHQt
Pm12Z1tjb250ZXh0LT5tdmdfbGVuZ3RoLTFdID09ICdcbicpICkKICAgICAgY29udGV4dC0+bXZn
X3dpZHRoID0gMDsKCiAgICAoKHZvaWQpICgoY29udGV4dC0+bXZnX2xlbmd0aCArIDEgPCBjb250
ZXh0LT5tdmdfYWxsb2MpID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlv
biBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21h
Z2ljay9kcmF3LmMiLCA0NTcsICJjb250ZXh0LT5tdmdfbGVuZ3RoICsgMSA8IGNvbnRleHQtPm12
Z19hbGxvYyIpLCAwKSkpOwoKICAgIHJldHVybiBmb3JtYXR0ZWRfbGVuZ3RoOwogIH0KfQoKCnN0
YXRpYyBpbnQgTXZnQXV0b1dyYXBQcmludGYoRHJhd0NvbnRleHQgY29udGV4dCwgY29uc3QgY2hh
ciAqZm9ybWF0LCAuLi4pCnsKICB2YV9saXN0CiAgICBhcmdwOwoKICBpbnQKICAgIGZvcm1hdHRl
ZF9sZW5ndGg7CgogIGNoYXIKICAgIGJ1ZmZlclsyMDUzXTsKCiAgX19idWlsdGluX3N0ZGFyZ19z
dGFydCgoYXJncCksZm9ybWF0KTsKCgoKICBmb3JtYXR0ZWRfbGVuZ3RoID0KICAgIHZzbnByaW50
ZihidWZmZXIsCiAgICAgICAgICAgICAgc2l6ZW9mKGJ1ZmZlcikgLSAxLCBmb3JtYXQsIGFyZ3Ap
OwoKICBfX2J1aWx0aW5fdmFfZW5kKGFyZ3ApOwogICooYnVmZmVyK3NpemVvZihidWZmZXIpLTEp
PTA7CgogIGlmIChmb3JtYXR0ZWRfbGVuZ3RoIDwgMCkKICAgIHsKICAgICAgVGhyb3dFeGNlcHRp
b24oJmNvbnRleHQtPmltYWdlLT5leGNlcHRpb24sU3RyZWFtRXJyb3IsIlVuYWJsZVRvUHJpbnQi
LAogICAgICAgIGZvcm1hdCk7CiAgICB9CiAgZWxzZQogICAgewogICAgICBpZiggKChjb250ZXh0
LT5tdmdfd2lkdGggKyBmb3JtYXR0ZWRfbGVuZ3RoKSA+IDc4KSAmJgogICAgICAgICAgYnVmZmVy
W2Zvcm1hdHRlZF9sZW5ndGgtMV0gIT0gJ1xuJyApCiAgICAgICAgTXZnUHJpbnRmKGNvbnRleHQs
ICJcbiIpOwoKICAgICAgTXZnUHJpbnRmKGNvbnRleHQsICIlcyIsIGJ1ZmZlcik7CiAgICB9Cgog
IHJldHVybiBmb3JtYXR0ZWRfbGVuZ3RoOwp9CgpzdGF0aWMgdm9pZCBNdmdBcHBlbmRDb2xvcihE
cmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCBQaXhlbFBhY2tldCAqY29sb3IpCnsKICBpZihjb2xv
ci0+cmVkID09IDAgJiYgY29sb3ItPmdyZWVuID09IDAgJiYgY29sb3ItPmJsdWUgPT0gMCAmJgog
ICAgIGNvbG9yLT5vcGFjaXR5ID09IDI1NVVMKQogICAgewogICAgICBNdmdQcmludGYoY29udGV4
dCwibm9uZSIpOwogICAgfQogIGVsc2UKICAgIHsKICAgICAgY2hhcgogICAgICAgIHR1cGxlWzIw
NTNdOwoKICAgICAgR2V0Q29sb3JUdXBsZShjb2xvcixjb250ZXh0LT5pbWFnZS0+ZGVwdGgsY29u
dGV4dC0+aW1hZ2UtPm1hdHRlLDEsCiAgICAgICAgdHVwbGUpOwogICAgICBNdmdQcmludGYoY29u
dGV4dCwiJS4xMDI0cyIsdHVwbGUpOwogICAgfQp9CgpzdGF0aWMgdm9pZCBNdmdBcHBlbmRQb2lu
dHNDb21tYW5kKERyYXdDb250ZXh0IGNvbnRleHQsIGNvbnN0IGNoYXIqIGNvbW1hbmQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IG51bV9jb29yZHMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUG9pbnRJbmZvICogY29vcmRp
bmF0ZXMpCnsKICBjb25zdCBQb2ludEluZm8KICAgICpjb29yZGluYXRlOwoKICBzaXplX3QKICAg
IGk7CgogIE12Z1ByaW50Zihjb250ZXh0LCBjb21tYW5kKTsKICBmb3IgKGkgPSBudW1fY29vcmRz
LCBjb29yZGluYXRlID0gY29vcmRpbmF0ZXM7IGk7IGktLSkKICAgIHsKICAgICAgTXZnQXV0b1dy
YXBQcmludGYoY29udGV4dCwiICUuNGcsJS40ZyIsIGNvb3JkaW5hdGUtPngsIGNvb3JkaW5hdGUt
PnkpOwogICAgICArK2Nvb3JkaW5hdGU7CiAgICB9CgogIE12Z1ByaW50Zihjb250ZXh0LCAiXG4i
KTsKfQoKc3RhdGljIHZvaWQgQWRqdXN0QWZmaW5lKERyYXdDb250ZXh0IGNvbnRleHQsIGNvbnN0
IEFmZmluZU1hdHJpeCAqYWZmaW5lKQp7CiAgKCh2b2lkKSAoKGNvbnRleHQgIT0gKERyYXdDb250
ZXh0KTApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4i
LCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3
LmMiLCA1NDMsICJjb250ZXh0ICE9IChEcmF3Q29udGV4dClOVUxMIiksIDApKSk7CiAgKCh2b2lk
KSAoKGNvbnRleHQtPnNpZ25hdHVyZSA9PSAweGFiYWNhZGFiVUwpID8gMCA6IChfX2VwcmludGYg
KCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dy
YXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCA1NDQsICJjb250ZXh0LT5zaWdu
YXR1cmUgPT0gTWFnaWNrU2lnbmF0dXJlIiksIDApKSk7CgogIGlmICgoYWZmaW5lLT5zeCAhPSAx
LjApIHx8IChhZmZpbmUtPnJ4ICE9IDAuMCkgfHwgKGFmZmluZS0+cnkgIT0gMC4wKSB8fAogICAg
ICAoYWZmaW5lLT5zeSAhPSAxLjApIHx8IChhZmZpbmUtPnR4ICE9IDAuMCkgfHwgKGFmZmluZS0+
dHkgIT0gMC4wKSkKICAgIHsKICAgICAgQWZmaW5lTWF0cml4CiAgICAgICAgY3VycmVudDsKCiAg
ICAgIGN1cnJlbnQgPSAoY29udGV4dC0+Z3JhcGhpY19jb250ZXh0W2NvbnRleHQtPmluZGV4XSkt
PmFmZmluZTsKICAgICAgKGNvbnRleHQtPmdyYXBoaWNfY29udGV4dFtjb250ZXh0LT5pbmRleF0p
LT5hZmZpbmUuc3g9Y3VycmVudC5zeCphZmZpbmUtPnN4K2N1cnJlbnQucnkqYWZmaW5lLT5yeDsK
ICAgICAgKGNvbnRleHQtPmdyYXBoaWNfY29udGV4dFtjb250ZXh0LT5pbmRleF0pLT5hZmZpbmUu
cng9Y3VycmVudC5yeCphZmZpbmUtPnN4K2N1cnJlbnQuc3kqYWZmaW5lLT5yeDsKICAgICAgKGNv
bnRleHQtPmdyYXBoaWNfY29udGV4dFtjb250ZXh0LT5pbmRleF0pLT5hZmZpbmUucnk9Y3VycmVu
dC5zeCphZmZpbmUtPnJ5K2N1cnJlbnQucnkqYWZmaW5lLT5zeTsKICAgICAgKGNvbnRleHQtPmdy
YXBoaWNfY29udGV4dFtjb250ZXh0LT5pbmRleF0pLT5hZmZpbmUuc3k9Y3VycmVudC5yeCphZmZp
bmUtPnJ5K2N1cnJlbnQuc3kqYWZmaW5lLT5zeTsKICAgICAgKGNvbnRleHQtPmdyYXBoaWNfY29u
dGV4dFtjb250ZXh0LT5pbmRleF0pLT5hZmZpbmUudHg9Y3VycmVudC5zeCphZmZpbmUtPnR4K2N1
cnJlbnQucnkqYWZmaW5lLT50eStjdXJyZW50LnR4OwogICAgICAoY29udGV4dC0+Z3JhcGhpY19j
b250ZXh0W2NvbnRleHQtPmluZGV4XSktPmFmZmluZS50eT1jdXJyZW50LnJ4KmFmZmluZS0+dHgr
Y3VycmVudC5zeSphZmZpbmUtPnR5K2N1cnJlbnQudHk7CiAgICB9Cn0KIyA1OTIgIi9ob21lL2Jm
cmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgogdm9pZCBE
cmF3QW5ub3RhdGlvbihEcmF3Q29udGV4dCBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIHksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnRleHQpCnsKICBjaGFyCiAg
ICAqZXNjYXBlZF90ZXh0OwoKICAoKHZvaWQpICgoY29udGV4dCAhPSAoRHJhd0NvbnRleHQpMCkg
PyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9t
ZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDU5
OSwgImNvbnRleHQgIT0gKERyYXdDb250ZXh0KU5VTEwiKSwgMCkpKTsKICAoKHZvaWQpICgoY29u
dGV4dC0+c2lnbmF0dXJlID09IDB4YWJhY2FkYWJVTCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1
OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3Mv
R3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDYwMCwgImNvbnRleHQtPnNpZ25hdHVyZSA9
PSBNYWdpY2tTaWduYXR1cmUiKSwgMCkpKTsKICAoKHZvaWQpICgodGV4dCAhPSAoY29uc3QgdW5z
aWduZWQgY2hhciAqKSAwKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRp
b24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9t
YWdpY2svZHJhdy5jIiwgNjAxLCAidGV4dCAhPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBOVUxM
IiksIDApKSk7CgogIGVzY2FwZWRfdGV4dD1Fc2NhcGVTdHJpbmcoKGNvbnN0IGNoYXIqKXRleHQs
J1wnJyk7CiAgTXZnUHJpbnRmKGNvbnRleHQsICJ0ZXh0ICUuNGcsJS40ZyAnJS4xMDI0cydcbiIs
IHgsIHksIGVzY2FwZWRfdGV4dCk7CiAgTGliZXJhdGVNZW1vcnkoKHZvaWQqKikmZXNjYXBlZF90
ZXh0KTsKfQojIDYzNCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNr
L21hZ2ljay9kcmF3LmMiCiB2b2lkIERyYXdBZmZpbmUoRHJhd0NvbnRleHQgY29udGV4dCwgY29u
c3QgQWZmaW5lTWF0cml4ICphZmZpbmUpCnsKICAoKHZvaWQpICgoY29udGV4dCAhPSAoRHJhd0Nv
bnRleHQpMCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydc
biIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2Ry
YXcuYyIsIDYzNiwgImNvbnRleHQgIT0gKERyYXdDb250ZXh0KU5VTEwiKSwgMCkpKTsKICAoKHZv
aWQpICgoY29udGV4dC0+c2lnbmF0dXJlID09IDB4YWJhY2FkYWJVTCkgPyAwIDogKF9fZXByaW50
ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMv
Z3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDYzNywgImNvbnRleHQtPnNp
Z25hdHVyZSA9PSBNYWdpY2tTaWduYXR1cmUiKSwgMCkpKTsKICAoKHZvaWQpICgoYWZmaW5lICE9
IChjb25zdCBBZmZpbmVNYXRyaXggKikwKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxl
ZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGlj
c01hZ2ljay9tYWdpY2svZHJhdy5jIiwgNjM4LCAiYWZmaW5lICE9IChjb25zdCBBZmZpbmVNYXRy
aXggKilOVUxMIiksIDApKSk7CgogIEFkanVzdEFmZmluZSggY29udGV4dCwgYWZmaW5lICk7Cgog
IE12Z1ByaW50Zihjb250ZXh0LCAiYWZmaW5lICUuNmcsJS42ZywlLjZnLCUuNmcsJS42ZywlLjZn
XG4iLAogICAgICAgICAgICBhZmZpbmUtPnN4LCBhZmZpbmUtPnJ4LCBhZmZpbmUtPnJ5LCBhZmZp
bmUtPnN5LAogICAgICAgICAgICBhZmZpbmUtPnR4LCBhZmZpbmUtPnR5KTsKfQojIDY3NCAiL2hv
bWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiCiBE
cmF3Q29udGV4dCBEcmF3QWxsb2NhdGVDb250ZXh0KGNvbnN0IERyYXdJbmZvICpkcmF3X2luZm8s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlICppbWFn
ZSkKewogIERyYXdDb250ZXh0CiAgICBjb250ZXh0OwoKCiAgY29udGV4dCA9IChEcmF3Q29udGV4
dCkgQWNxdWlyZU1lbW9yeShzaXplb2Yoc3RydWN0IF9EcmF3Q29udGV4dCkpOwogIGlmKGNvbnRl
eHQgPT0gKERyYXdDb250ZXh0KSAwKQogICAgTWFnaWNrRmF0YWxFcnJvcihSZXNvdXJjZUxpbWl0
RmF0YWxFcnJvciwiTWVtb3J5QWxsb2NhdGlvbkZhaWxlZCIsCiAgICAgICJVbmFibGVUb0FsbG9j
YXRlRHJhd0NvbnRleHQiKTsKCgogIGNvbnRleHQtPmltYWdlID0gaW1hZ2U7CgoKICBjb250ZXh0
LT5tdmcgPSAwOwogIGNvbnRleHQtPm12Z19hbGxvYyA9IDA7CiAgY29udGV4dC0+bXZnX2xlbmd0
aCA9IDA7CiAgY29udGV4dC0+bXZnX3dpZHRoID0gMDsKCgogIGNvbnRleHQtPnBhdHRlcm5faWQg
PSAwOwogIGNvbnRleHQtPnBhdHRlcm5fb2Zmc2V0ID0gMDsKCiAgY29udGV4dC0+cGF0dGVybl9i
b3VuZHMueCA9IDA7CiAgY29udGV4dC0+cGF0dGVybl9ib3VuZHMueSA9IDA7CiAgY29udGV4dC0+
cGF0dGVybl9ib3VuZHMud2lkdGggPSAwOwogIGNvbnRleHQtPnBhdHRlcm5fYm91bmRzLmhlaWdo
dCA9IDA7CgoKICBjb250ZXh0LT5pbmRleCA9IDA7CiAgY29udGV4dC0+Z3JhcGhpY19jb250ZXh0
PShEcmF3SW5mbyAqKikgQWNxdWlyZU1lbW9yeShzaXplb2YoRHJhd0luZm8gKikpOwogIGlmKGNv
bnRleHQtPmdyYXBoaWNfY29udGV4dCA9PSAoRHJhd0luZm8gKiopIDApCiAgICB7CiAgICAgIFRo
cm93RXhjZXB0aW9uKCZjb250ZXh0LT5pbWFnZS0+ZXhjZXB0aW9uLFJlc291cmNlTGltaXRFcnJv
ciwKICAgICAgICAiTWVtb3J5QWxsb2NhdGlvbkZhaWxlZCIsIlVuYWJsZVRvRHJhd09uSW1hZ2Ui
KTsKICAgICAgcmV0dXJuIChEcmF3Q29udGV4dCkgMDsKICAgIH0KICAoY29udGV4dC0+Z3JhcGhp
Y19jb250ZXh0W2NvbnRleHQtPmluZGV4XSk9Q2xvbmVEcmF3SW5mbygoSW1hZ2VJbmZvKikwLGRy
YXdfaW5mbyk7CiAgaWYoKGNvbnRleHQtPmdyYXBoaWNfY29udGV4dFtjb250ZXh0LT5pbmRleF0p
ID09IChEcmF3SW5mbyopIDApCiAgICB7CiAgICAgIFRocm93RXhjZXB0aW9uKCZjb250ZXh0LT5p
bWFnZS0+ZXhjZXB0aW9uLFJlc291cmNlTGltaXRFcnJvciwKICAgICAgICAiTWVtb3J5QWxsb2Nh
dGlvbkZhaWxlZCIsIlVuYWJsZVRvRHJhd09uSW1hZ2UiKTsKICAgICAgcmV0dXJuIChEcmF3Q29u
dGV4dCkgMDsKICAgIH0KCiAgY29udGV4dC0+ZmlsdGVyX29mZiA9IDA7CgoKICBjb250ZXh0LT5p
bmRlbnRfZGVwdGggPSAwOwoKCiAgY29udGV4dC0+cGF0aF9vcGVyYXRpb24gPSBQYXRoRGVmYXVs
dE9wZXJhdGlvbjsKICBjb250ZXh0LT5wYXRoX21vZGUgPSBEZWZhdWx0UGF0aE1vZGU7CgoKICBj
b250ZXh0LT5zaWduYXR1cmUgPSAweGFiYWNhZGFiVUw7CgogIHJldHVybiBjb250ZXh0Owp9CiMg
Nzc0ICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2Ry
YXcuYyIKIHZvaWQgRHJhd0FyYyhEcmF3Q29udGV4dCBjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGRvdWJsZSBzeCwgY29uc3QgZG91YmxlIHN5LAogICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSBleCwgY29uc3QgZG91YmxlIGV5LAogICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSBzZCwgY29uc3QgZG91YmxlIGVkKQp7CiAgKCh2
b2lkKSAoKGNvbnRleHQgIT0gKERyYXdDb250ZXh0KTApID8gMCA6IChfX2VwcmludGYgKCIlczol
dTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNz
L0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCA3NzksICJjb250ZXh0ICE9IChEcmF3Q29u
dGV4dClOVUxMIiksIDApKSk7CiAgKCh2b2lkKSAoKGNvbnRleHQtPnNpZ25hdHVyZSA9PSAweGFi
YWNhZGFiVUwpID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMn
XG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9k
cmF3LmMiLCA3ODAsICJjb250ZXh0LT5zaWduYXR1cmUgPT0gTWFnaWNrU2lnbmF0dXJlIiksIDAp
KSk7CgogIE12Z1ByaW50Zihjb250ZXh0LCAiYXJjICUuNGcsJS40ZyAlLjRnLCUuNGcgJS40Zywl
LjRnXG4iLAogICAgICAgICAgICBzeCwgc3ksIGV4LCBleSwgc2QsIGVkKTsKfQojIDgxMyAiL2hv
bWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiCiB2
b2lkIERyYXdCZXppZXIoRHJhd0NvbnRleHQgY29udGV4dCwgY29uc3Qgc2l6ZV90IG51bV9jb29y
ZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUG9pbnRJbmZvICpjb29yZGlu
YXRlcykKewogICgodm9pZCkgKChjb250ZXh0ICE9IChEcmF3Q29udGV4dCkwKSA/IDAgOiAoX19l
cHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2Vu
L3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgODE2LCAiY29udGV4
dCAhPSAoRHJhd0NvbnRleHQpTlVMTCIpLCAwKSkpOwogICgodm9pZCkgKChjb250ZXh0LT5zaWdu
YXR1cmUgPT0gMHhhYmFjYWRhYlVMKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBh
c3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01h
Z2ljay9tYWdpY2svZHJhdy5jIiwgODE3LCAiY29udGV4dC0+c2lnbmF0dXJlID09IE1hZ2lja1Np
Z25hdHVyZSIpLCAwKSkpOwogICgodm9pZCkgKChjb29yZGluYXRlcyAhPSAoY29uc3QgUG9pbnRJ
bmZvICopIDApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMn
XG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9k
cmF3LmMiLCA4MTgsICJjb29yZGluYXRlcyAhPSAoY29uc3QgUG9pbnRJbmZvICopIE5VTEwiKSwg
MCkpKTsKCiAgTXZnQXBwZW5kUG9pbnRzQ29tbWFuZChjb250ZXh0LCJiZXppZXIiLG51bV9jb29y
ZHMsY29vcmRpbmF0ZXMpOwp9CiMgODU0ICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3Jh
cGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIKIHZvaWQgRHJhd0NpcmNsZShEcmF3Q29udGV4dCBj
b250ZXh0LCBjb25zdCBkb3VibGUgb3gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZG91YmxlIG95LCBjb25zdCBkb3VibGUgcHgsIGNvbnN0IGRvdWJsZSBweSkKewogICgodm9p
ZCkgKChjb250ZXh0ICE9IChEcmF3Q29udGV4dCkwKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6
IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9H
cmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgODU3LCAiY29udGV4dCAhPSAoRHJhd0NvbnRl
eHQpTlVMTCIpLCAwKSkpOwogICgodm9pZCkgKChjb250ZXh0LT5zaWduYXR1cmUgPT0gMHhhYmFj
YWRhYlVMKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xu
IiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJh
dy5jIiwgODU4LCAiY29udGV4dC0+c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVyZSIpLCAwKSkp
OwoKICBNdmdQcmludGYoY29udGV4dCwgImNpcmNsZSAlLjRnLCUuNGcgJS40ZywlLjRnXG4iLCBv
eCwgb3ksIHB4LCBweSk7Cn0KIyA4ODYgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFw
aGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgogY2hhciAqRHJhd0dldENsaXBQYXRoKERyYXdDb250
ZXh0IGNvbnRleHQpCnsKICAoKHZvaWQpICgoY29udGV4dCAhPSAoRHJhd0NvbnRleHQpMCkgPyAw
IDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9i
ZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDg4OCwg
ImNvbnRleHQgIT0gKERyYXdDb250ZXh0KU5VTEwiKSwgMCkpKTsKICAoKHZvaWQpICgoY29udGV4
dC0+c2lnbmF0dXJlID09IDB4YWJhY2FkYWJVTCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBm
YWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3Jh
cGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDg4OSwgImNvbnRleHQtPnNpZ25hdHVyZSA9PSBN
YWdpY2tTaWduYXR1cmUiKSwgMCkpKTsKCiAgaWYgKChjb250ZXh0LT5ncmFwaGljX2NvbnRleHRb
Y29udGV4dC0+aW5kZXhdKS0+Y2xpcF9wYXRoICE9IChjaGFyICopIDApCiAgICByZXR1cm4gKGNo
YXIgKilBbGxvY2F0ZVN0cmluZygoY29udGV4dC0+Z3JhcGhpY19jb250ZXh0W2NvbnRleHQtPmlu
ZGV4XSktPmNsaXBfcGF0aCk7CiAgZWxzZQogICAgcmV0dXJuIChjaGFyICopIDA7Cn0KIyA5MjMg
Ii9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5j
Igogdm9pZCBEcmF3U2V0Q2xpcFBhdGgoRHJhd0NvbnRleHQgY29udGV4dCwgY29uc3QgY2hhciAq
Y2xpcF9wYXRoKQp7CiAgKCh2b2lkKSAoKGNvbnRleHQgIT0gKERyYXdDb250ZXh0KTApID8gMCA6
IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZy
aWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCA5MjUsICJj
b250ZXh0ICE9IChEcmF3Q29udGV4dClOVUxMIiksIDApKSk7CiAgKCh2b2lkKSAoKGNvbnRleHQt
PnNpZ25hdHVyZSA9PSAweGFiYWNhZGFiVUwpID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFp
bGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBo
aWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCA5MjYsICJjb250ZXh0LT5zaWduYXR1cmUgPT0gTWFn
aWNrU2lnbmF0dXJlIiksIDApKSk7CiAgKCh2b2lkKSAoKGNsaXBfcGF0aCAhPSAoY29uc3QgY2hh
ciAqKSAwKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xu
IiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJh
dy5jIiwgOTI3LCAiY2xpcF9wYXRoICE9IChjb25zdCBjaGFyICopIE5VTEwiKSwgMCkpKTsKCiAg
aWYoIChjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+Y2xpcF9wYXRo
ID09IDAgfHwgY29udGV4dC0+ZmlsdGVyX29mZiB8fAogICAgICBMb2NhbGVDb21wYXJlKChjb250
ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+Y2xpcF9wYXRoLGNsaXBfcGF0
aCkgIT0gMCkKICAgIHsKICAgICAgQ2xvbmVTdHJpbmcoJihjb250ZXh0LT5ncmFwaGljX2NvbnRl
eHRbY29udGV4dC0+aW5kZXhdKS0+Y2xpcF9wYXRoLGNsaXBfcGF0aCk7CiAgICAgIGlmKChjb250
ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+Y2xpcF9wYXRoID09IChjaGFy
KikwKQogICAgICAgIHsgaWYgKGNvbnRleHQtPmltYWdlLT5leGNlcHRpb24uc2V2ZXJpdHkgPiAo
bG9uZylSZXNvdXJjZUxpbWl0RXJyb3IpIFRocm93RXhjZXB0aW9uKCZjb250ZXh0LT5pbWFnZS0+
ZXhjZXB0aW9uLFJlc291cmNlTGltaXRFcnJvciwiTWVtb3J5QWxsb2NhdGlvbkZhaWxlZCIsIlVu
YWJsZVRvRHJhd09uSW1hZ2UiKTsgcmV0dXJuOyB9OwoKCgoKCgogICAgICBNdmdQcmludGYoY29u
dGV4dCwgImNsaXAtcGF0aCB1cmwoIyVzKVxuIiwgY2xpcF9wYXRoKTsKICAgIH0KfQojIDk2OCAi
L2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMi
CiBGaWxsUnVsZSBEcmF3R2V0Q2xpcFJ1bGUoRHJhd0NvbnRleHQgY29udGV4dCkKewogICgodm9p
ZCkgKChjb250ZXh0ICE9IChEcmF3Q29udGV4dCkwKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6
IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9H
cmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgOTcwLCAiY29udGV4dCAhPSAoRHJhd0NvbnRl
eHQpTlVMTCIpLCAwKSkpOwogICgodm9pZCkgKChjb250ZXh0LT5zaWduYXR1cmUgPT0gMHhhYmFj
YWRhYlVMKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xu
IiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJh
dy5jIiwgOTcxLCAiY29udGV4dC0+c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVyZSIpLCAwKSkp
OwoKICByZXR1cm4gKGNvbnRleHQtPmdyYXBoaWNfY29udGV4dFtjb250ZXh0LT5pbmRleF0pLT5m
aWxsX3J1bGU7Cn0KIyAxMDAxICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NN
YWdpY2svbWFnaWNrL2RyYXcuYyIKIHZvaWQgRHJhd1NldENsaXBSdWxlKERyYXdDb250ZXh0IGNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGaWxsUnVsZSBm
aWxsX3J1bGUpCnsKICBjb25zdCBjaGFyCiAgICAqcCA9IDA7CgogICgodm9pZCkgKChjb250ZXh0
ICE9IChEcmF3Q29udGV4dCkwKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3Nl
cnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2lj
ay9tYWdpY2svZHJhdy5jIiwgMTAwNywgImNvbnRleHQgIT0gKERyYXdDb250ZXh0KU5VTEwiKSwg
MCkpKTsKICAoKHZvaWQpICgoY29udGV4dC0+c2lnbmF0dXJlID09IDB4YWJhY2FkYWJVTCkgPyAw
IDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9i
ZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDEwMDgs
ICJjb250ZXh0LT5zaWduYXR1cmUgPT0gTWFnaWNrU2lnbmF0dXJlIiksIDApKSk7CgogIGlmKGNv
bnRleHQtPmZpbHRlcl9vZmYgfHwgKChjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+
aW5kZXhdKS0+ZmlsbF9ydWxlICE9IGZpbGxfcnVsZSkpCiAgICB7CiAgICAgIChjb250ZXh0LT5n
cmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+ZmlsbF9ydWxlID0gZmlsbF9ydWxlOwoK
ICAgICAgc3dpdGNoIChmaWxsX3J1bGUpCiAgICAgICAgewogICAgICAgIGNhc2UgRXZlbk9kZFJ1
bGU6CiAgICAgICAgICBwID0gImV2ZW5vZGQiOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2Fz
ZSBOb25aZXJvUnVsZToKICAgICAgICAgIHAgPSAibm9uemVybyI7CiAgICAgICAgICBicmVhazsK
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgaWYgKHAg
IT0gMCkKICAgICAgICBNdmdQcmludGYoY29udGV4dCwgImNsaXAtcnVsZSAlc1xuIiwgcCk7CiAg
ICB9Cn0KIyAxMDUzICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2sv
bWFnaWNrL2RyYXcuYyIKIENsaXBQYXRoVW5pdHMgRHJhd0dldENsaXBVbml0cyhEcmF3Q29udGV4
dCBjb250ZXh0KQp7CiAgKCh2b2lkKSAoKGNvbnRleHQgIT0gKERyYXdDb250ZXh0KTApID8gMCA6
IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZy
aWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAxMDU1LCAi
Y29udGV4dCAhPSAoRHJhd0NvbnRleHQpTlVMTCIpLCAwKSkpOwogICgodm9pZCkgKChjb250ZXh0
LT5zaWduYXR1cmUgPT0gMHhhYmFjYWRhYlVMKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZh
aWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFw
aGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMTA1NiwgImNvbnRleHQtPnNpZ25hdHVyZSA9PSBN
YWdpY2tTaWduYXR1cmUiKSwgMCkpKTsKCiAgcmV0dXJuIChjb250ZXh0LT5ncmFwaGljX2NvbnRl
eHRbY29udGV4dC0+aW5kZXhdKS0+Y2xpcF91bml0czsKfQojIDEwODYgIi9ob21lL2Jmcmllc2Vu
L3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgogdm9pZCBEcmF3U2V0
Q2xpcFVuaXRzKERyYXdDb250ZXh0IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgQ2xpcFBhdGhVbml0cyBjbGlwX3VuaXRzKQp7CiAgY29uc3QgY2hhcgog
ICAgKnAgPSAwOwoKICAoKHZvaWQpICgoY29udGV4dCAhPSAoRHJhd0NvbnRleHQpMCkgPyAwIDog
KF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJp
ZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDEwOTIsICJj
b250ZXh0ICE9IChEcmF3Q29udGV4dClOVUxMIiksIDApKSk7CiAgKCh2b2lkKSAoKGNvbnRleHQt
PnNpZ25hdHVyZSA9PSAweGFiYWNhZGFiVUwpID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFp
bGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBo
aWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAxMDkzLCAiY29udGV4dC0+c2lnbmF0dXJlID09IE1h
Z2lja1NpZ25hdHVyZSIpLCAwKSkpOwoKICBpZihjb250ZXh0LT5maWx0ZXJfb2ZmIHx8ICgoY29u
dGV4dC0+Z3JhcGhpY19jb250ZXh0W2NvbnRleHQtPmluZGV4XSktPmNsaXBfdW5pdHMgIT0gY2xp
cF91bml0cykpCiAgICB7CiAgICAgIChjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+
aW5kZXhdKS0+Y2xpcF91bml0cyA9IGNsaXBfdW5pdHM7CgogICAgICBpZiAoIGNsaXBfdW5pdHMg
PT0gT2JqZWN0Qm91bmRpbmdCb3ggKQogICAgICAgIHsKICAgICAgICAgIEFmZmluZU1hdHJpeAog
ICAgICAgICAgICBhZmZpbmU7CgogICAgICAgICAgSWRlbnRpdHlBZmZpbmUoJmFmZmluZSk7Cgog
ICAgICAgICAgYWZmaW5lLnN4PShjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5k
ZXhdKS0+Ym91bmRzLngyOwogICAgICAgICAgYWZmaW5lLnN5PShjb250ZXh0LT5ncmFwaGljX2Nv
bnRleHRbY29udGV4dC0+aW5kZXhdKS0+Ym91bmRzLnkyOwogICAgICAgICAgYWZmaW5lLnR4PShj
b250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+Ym91bmRzLngxOwogICAg
ICAgICAgYWZmaW5lLnR5PShjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhd
KS0+Ym91bmRzLnkxOwoKICAgICAgICAgIEFkanVzdEFmZmluZSggY29udGV4dCwgJmFmZmluZSAp
OwogICAgICAgIH0KCiAgICAgIHN3aXRjaCAoY2xpcF91bml0cykKICAgICAgICB7CiAgICAgICAg
Y2FzZSBVc2VyU3BhY2U6CiAgICAgICAgICBwID0gInVzZXJTcGFjZSI7CiAgICAgICAgICBicmVh
azsKICAgICAgICBjYXNlIFVzZXJTcGFjZU9uVXNlOgogICAgICAgICAgcCA9ICJ1c2VyU3BhY2VP
blVzZSI7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIE9iamVjdEJvdW5kaW5nQm94Ogog
ICAgICAgICAgcCA9ICJvYmplY3RCb3VuZGluZ0JveCI7CiAgICAgICAgICBicmVhazsKICAgICAg
ICB9CgogICAgICBpZiAocCAhPSAwKQogICAgICAgIE12Z1ByaW50Zihjb250ZXh0LCAiY2xpcC11
bml0cyAlc1xuIiwgcCk7CiAgICB9Cn0KIyAxMTcwICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhp
Y3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIKIHZvaWQgRHJhd0NvbG9yKERyYXdDb250
ZXh0IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb3VibGUgeCwg
Y29uc3QgZG91YmxlIHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQYWludE1l
dGhvZCBwYWludE1ldGhvZCkKewogIGNvbnN0IGNoYXIKICAgICpwID0gMDsKCiAgKCh2b2lkKSAo
KGNvbnRleHQgIT0gKERyYXdDb250ZXh0KTApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFp
bGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBo
aWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAxMTc3LCAiY29udGV4dCAhPSAoRHJhd0NvbnRleHQp
TlVMTCIpLCAwKSkpOwogICgodm9pZCkgKChjb250ZXh0LT5zaWduYXR1cmUgPT0gMHhhYmFjYWRh
YlVMKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwg
Ii9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5j
IiwgMTE3OCwgImNvbnRleHQtPnNpZ25hdHVyZSA9PSBNYWdpY2tTaWduYXR1cmUiKSwgMCkpKTsK
CiAgc3dpdGNoIChwYWludE1ldGhvZCkKICAgIHsKICAgIGNhc2UgUG9pbnRNZXRob2Q6CiAgICAg
IHAgPSAicG9pbnQiOwogICAgICBicmVhazsKICAgIGNhc2UgUmVwbGFjZU1ldGhvZDoKICAgICAg
cCA9ICJyZXBsYWNlIjsKICAgICAgYnJlYWs7CiAgICBjYXNlIEZsb29kZmlsbE1ldGhvZDoKICAg
ICAgcCA9ICJmbG9vZGZpbGwiOwogICAgICBicmVhazsKICAgIGNhc2UgRmlsbFRvQm9yZGVyTWV0
aG9kOgogICAgICBwID0gImZpbGx0b2JvcmRlciI7CiAgICAgIGJyZWFrOwogICAgY2FzZSBSZXNl
dE1ldGhvZDoKICAgICAgcCA9ICJyZXNldCI7CiAgICAgIGJyZWFrOwogICAgfQoKICBpZiAocCAh
PSAwKQogICAgTXZnUHJpbnRmKGNvbnRleHQsICJjb2xvciAlLjRnLCUuNGcgJXNcbiIsIHgsIHks
IHApOwp9CiMgMTIyNyAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNr
L21hZ2ljay9kcmF3LmMiCiB2b2lkIERyYXdDb21tZW50KERyYXdDb250ZXh0IGNvbnRleHQsY29u
c3QgY2hhciogY29tbWVudCkKewoKCiAgTXZnUHJpbnRmKGNvbnRleHQsICIjJXNcbiIsIGNvbW1l
bnQpOwp9CiMgMTI1OCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNr
L21hZ2ljay9kcmF3LmMiCiB2b2lkIERyYXdEZXN0cm95Q29udGV4dChEcmF3Q29udGV4dCBjb250
ZXh0KQp7CiAgKCh2b2lkKSAoKGNvbnRleHQgIT0gKERyYXdDb250ZXh0KTApID8gMCA6IChfX2Vw
cmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4v
c3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAxMjYwLCAiY29udGV4
dCAhPSAoRHJhd0NvbnRleHQpTlVMTCIpLCAwKSkpOwogICgodm9pZCkgKChjb250ZXh0LT5zaWdu
YXR1cmUgPT0gMHhhYmFjYWRhYlVMKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBh
c3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01h
Z2ljay9tYWdpY2svZHJhdy5jIiwgMTI2MSwgImNvbnRleHQtPnNpZ25hdHVyZSA9PSBNYWdpY2tT
aWduYXR1cmUiKSwgMCkpKTsKCgogIGNvbnRleHQtPnBhdGhfb3BlcmF0aW9uID0gUGF0aERlZmF1
bHRPcGVyYXRpb247CiAgY29udGV4dC0+cGF0aF9tb2RlID0gRGVmYXVsdFBhdGhNb2RlOwoKCiAg
Y29udGV4dC0+aW5kZW50X2RlcHRoID0gMDsKCgogIGZvciAoIDsgY29udGV4dC0+aW5kZXggPiAw
OyBjb250ZXh0LT5pbmRleC0tKQogICAgewogICAgICBEZXN0cm95RHJhd0luZm8oKGNvbnRleHQt
PmdyYXBoaWNfY29udGV4dFtjb250ZXh0LT5pbmRleF0pKTsKICAgICAgKGNvbnRleHQtPmdyYXBo
aWNfY29udGV4dFtjb250ZXh0LT5pbmRleF0pID0gKERyYXdJbmZvKikgMDsKICAgIH0KICBEZXN0
cm95RHJhd0luZm8oKGNvbnRleHQtPmdyYXBoaWNfY29udGV4dFtjb250ZXh0LT5pbmRleF0pKTsK
ICAoY29udGV4dC0+Z3JhcGhpY19jb250ZXh0W2NvbnRleHQtPmluZGV4XSkgPSAoRHJhd0luZm8q
KSAwOwogIExpYmVyYXRlTWVtb3J5KCh2b2lkICoqKSAmY29udGV4dC0+Z3JhcGhpY19jb250ZXh0
KTsKCgogIExpYmVyYXRlTWVtb3J5KCh2b2lkICoqKSAmY29udGV4dC0+cGF0dGVybl9pZCk7CiAg
Y29udGV4dC0+cGF0dGVybl9vZmZzZXQgPSAwOwoKICBjb250ZXh0LT5wYXR0ZXJuX2JvdW5kcy54
ID0gMDsKICBjb250ZXh0LT5wYXR0ZXJuX2JvdW5kcy55ID0gMDsKICBjb250ZXh0LT5wYXR0ZXJu
X2JvdW5kcy53aWR0aCA9IDA7CiAgY29udGV4dC0+cGF0dGVybl9ib3VuZHMuaGVpZ2h0ID0gMDsK
CgogIExpYmVyYXRlTWVtb3J5KCh2b2lkICoqKSAmY29udGV4dC0+bXZnKTsKICBjb250ZXh0LT5t
dmdfYWxsb2MgPSAwOwogIGNvbnRleHQtPm12Z19sZW5ndGggPSAwOwoKCiAgY29udGV4dC0+aW1h
Z2UgPSAoSW1hZ2UqKTA7CgoKICBjb250ZXh0LT5zaWduYXR1cmUgPSAwOwogIExpYmVyYXRlTWVt
b3J5KCh2b2lkICoqKSAmY29udGV4dCk7Cn0KIyAxMzM5ICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3Jh
cGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIKIHZvaWQgRHJhd0VsbGlwc2UoRHJh
d0NvbnRleHQgY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG91
YmxlIG94LCBjb25zdCBkb3VibGUgb3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGRvdWJsZSByeCwgY29uc3QgZG91YmxlIHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBkb3VibGUgc3RhcnQsIGNvbnN0IGRvdWJsZSBlbmQpCnsKICAoKHZvaWQpICgo
Y29udGV4dCAhPSAoRHJhd0NvbnRleHQpMCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWls
ZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhp
Y3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDEzNDQsICJjb250ZXh0ICE9IChEcmF3Q29udGV4dClO
VUxMIiksIDApKSk7CiAgKCh2b2lkKSAoKGNvbnRleHQtPnNpZ25hdHVyZSA9PSAweGFiYWNhZGFi
VUwpID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAi
L2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMi
LCAxMzQ1LCAiY29udGV4dC0+c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVyZSIpLCAwKSkpOwoK
ICBNdmdQcmludGYoY29udGV4dCwgImVsbGlwc2UgJS40ZywlLjRnICUuNGcsJS40ZyAlLjRnLCUu
NGdcbiIsCiAgICAgICAgICAgIG94LCBveSwgcngsIHJ5LCBzdGFydCwgZW5kKTsKfQojIDEzNzIg
Ii9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5j
IgogUGl4ZWxQYWNrZXQgRHJhd0dldEZpbGxDb2xvcihEcmF3Q29udGV4dCBjb250ZXh0KQp7CiAg
KCh2b2lkKSAoKGNvbnRleHQgIT0gKERyYXdDb250ZXh0KTApID8gMCA6IChfX2VwcmludGYgKCIl
czoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBo
aWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAxMzc0LCAiY29udGV4dCAhPSAoRHJh
d0NvbnRleHQpTlVMTCIpLCAwKSkpOwogICgodm9pZCkgKChjb250ZXh0LT5zaWduYXR1cmUgPT0g
MHhhYmFjYWRhYlVMKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24g
YCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdp
Y2svZHJhdy5jIiwgMTM3NSwgImNvbnRleHQtPnNpZ25hdHVyZSA9PSBNYWdpY2tTaWduYXR1cmUi
KSwgMCkpKTsKCiAgcmV0dXJuIChjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5k
ZXhdKS0+ZmlsbDsKfQojIDE0MDUgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGlj
c01hZ2ljay9tYWdpY2svZHJhdy5jIgogdm9pZCBEcmF3U2V0RmlsbENvbG9yKERyYXdDb250ZXh0
IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUGl4ZWxQ
YWNrZXQgKmZpbGxfY29sb3IpCnsKICBQaXhlbFBhY2tldAogICAgKmN1cnJlbnRfZmlsbCwKICAg
IG5ld19maWxsOwoKICAoKHZvaWQpICgoY29udGV4dCAhPSAoRHJhd0NvbnRleHQpMCkgPyAwIDog
KF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJp
ZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDE0MTIsICJj
b250ZXh0ICE9IChEcmF3Q29udGV4dClOVUxMIiksIDApKSk7CiAgKCh2b2lkKSAoKGNvbnRleHQt
PnNpZ25hdHVyZSA9PSAweGFiYWNhZGFiVUwpID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFp
bGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBo
aWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAxNDEzLCAiY29udGV4dC0+c2lnbmF0dXJlID09IE1h
Z2lja1NpZ25hdHVyZSIpLCAwKSkpOwogICgodm9pZCkgKChmaWxsX2NvbG9yICE9IChjb25zdCBQ
aXhlbFBhY2tldCAqKSAwKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRp
b24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9t
YWdpY2svZHJhdy5jIiwgMTQxNCwgImZpbGxfY29sb3IgIT0gKGNvbnN0IFBpeGVsUGFja2V0ICop
IE5VTEwiKSwgMCkpKTsKCiAgbmV3X2ZpbGwgPSAqZmlsbF9jb2xvcjsKICBpZihuZXdfZmlsbC5v
cGFjaXR5ICE9IDI1NVVMKQogICAgbmV3X2ZpbGwub3BhY2l0eSA9IChjb250ZXh0LT5ncmFwaGlj
X2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+b3BhY2l0eTsKCiAgY3VycmVudF9maWxsID0gJihj
b250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+ZmlsbDsKICBpZiggY29u
dGV4dC0+ZmlsdGVyX29mZiB8fCAhKCgoKGN1cnJlbnRfZmlsbCktPnJlZCA9PSAoJm5ld19maWxs
KS0+cmVkKSAmJiAoKGN1cnJlbnRfZmlsbCktPmdyZWVuID09ICgmbmV3X2ZpbGwpLT5ncmVlbikg
JiYgKChjdXJyZW50X2ZpbGwpLT5ibHVlID09ICgmbmV3X2ZpbGwpLT5ibHVlKSAmJiAoKGN1cnJl
bnRfZmlsbCktPm9wYWNpdHkgPT0gKCZuZXdfZmlsbCktPm9wYWNpdHkpKSkgKQogICAgewogICAg
ICAoY29udGV4dC0+Z3JhcGhpY19jb250ZXh0W2NvbnRleHQtPmluZGV4XSktPmZpbGwgPSBuZXdf
ZmlsbDsKCiAgICAgIE12Z1ByaW50Zihjb250ZXh0LCAiZmlsbCAiKTsKICAgICAgTXZnQXBwZW5k
Q29sb3IoY29udGV4dCwgZmlsbF9jb2xvcik7CiAgICAgIE12Z1ByaW50Zihjb250ZXh0LCAiXG4i
KTsKICAgIH0KfQojIDE0NTYgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01h
Z2ljay9tYWdpY2svZHJhdy5jIgogdm9pZCBEcmF3U2V0RmlsbENvbG9yU3RyaW5nKERyYXdDb250
ZXh0IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogZmlsbF9jb2xvcikKewogIFBpeGVsUGFja2V0CiAgICBwaXhlbF9wYWNrZXQ7Cgog
IGlmKFF1ZXJ5Q29sb3JEYXRhYmFzZShmaWxsX2NvbG9yLCZwaXhlbF9wYWNrZXQsJmNvbnRleHQt
PmltYWdlLT5leGNlcHRpb24pKQogICAgRHJhd1NldEZpbGxDb2xvcihjb250ZXh0LCZwaXhlbF9w
YWNrZXQpOwp9CiMgMTQ5MyAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFn
aWNrL21hZ2ljay9kcmF3LmMiCiB2b2lkIERyYXdTZXRGaWxsUGF0dGVyblVSTChEcmF3Q29udGV4
dCBjb250ZXh0LCBjb25zdCBjaGFyKiBmaWxsX3VybCkKewogIGNoYXIKICAgIHBhdHRlcm5bMjA1
M107CgogICgodm9pZCkgKChjb250ZXh0ICE9IChEcmF3Q29udGV4dCkwKSA/IDAgOiAoX19lcHJp
bnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3Ny
Yy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMTQ5OCwgImNvbnRleHQg
IT0gKERyYXdDb250ZXh0KU5VTEwiKSwgMCkpKTsKICAoKHZvaWQpICgoY29udGV4dC0+c2lnbmF0
dXJlID09IDB4YWJhY2FkYWJVTCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNz
ZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdp
Y2svbWFnaWNrL2RyYXcuYyIsIDE0OTksICJjb250ZXh0LT5zaWduYXR1cmUgPT0gTWFnaWNrU2ln
bmF0dXJlIiksIDApKSk7CiAgKCh2b2lkKSAoKGZpbGxfdXJsICE9IDApID8gMCA6IChfX2Vwcmlu
dGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3Jj
L2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAxNTAwLCAiZmlsbF91cmwg
IT0gTlVMTCIpLCAwKSkpOwoKICBpZihmaWxsX3VybFswXSAhPSAnIycpCiAgICB7IGlmIChjb250
ZXh0LT5pbWFnZS0+ZXhjZXB0aW9uLnNldmVyaXR5ID4gKGxvbmcpRHJhd1dhcm5pbmcpIFRocm93
RXhjZXB0aW9uKCZjb250ZXh0LT5pbWFnZS0+ZXhjZXB0aW9uLERyYXdXYXJuaW5nLCJOb3RBUmVs
YXRpdmV1UkwiLGZpbGxfdXJsKTsgcmV0dXJuOyB9OwoKICBGb3JtYXRTdHJpbmcocGF0dGVybiwi
WyUuMTAyNHNdIixmaWxsX3VybCsxKTsKCiAgaWYgKEdldEltYWdlQXR0cmlidXRlKGNvbnRleHQt
PmltYWdlLHBhdHRlcm4pID09IChJbWFnZUF0dHJpYnV0ZSAqKSAwKQogICAgewogICAgICB7IGlm
IChjb250ZXh0LT5pbWFnZS0+ZXhjZXB0aW9uLnNldmVyaXR5ID4gKGxvbmcpRHJhd1dhcm5pbmcp
IFRocm93RXhjZXB0aW9uKCZjb250ZXh0LT5pbWFnZS0+ZXhjZXB0aW9uLERyYXdXYXJuaW5nLCJV
UkxOb3RGb3VuZCIsZmlsbF91cmwpOyByZXR1cm47IH0KICAgIH0KICBlbHNlCiAgICB7CiAgICAg
IGNoYXIKICAgICAgICBwYXR0ZXJuX3NwZWNbMjA1M107CgogICAgICBGb3JtYXRTdHJpbmcocGF0
dGVybl9zcGVjLCJ1cmwoJS4xMDI0cykiLGZpbGxfdXJsKTsKCgoKICAgICAgaWYgKChjb250ZXh0
LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+ZmlsbC5vcGFjaXR5ICE9IDI1NVVM
KQogICAgICAgIChjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+Zmls
bC5vcGFjaXR5PShjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+b3Bh
Y2l0eTsKCiAgICAgIE12Z1ByaW50Zihjb250ZXh0LCAiZmlsbCAlc1xuIixwYXR0ZXJuX3NwZWMp
OwogICAgfQp9CiMgMTU1MCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFn
aWNrL21hZ2ljay9kcmF3LmMiCiBkb3VibGUgRHJhd0dldEZpbGxPcGFjaXR5KERyYXdDb250ZXh0
IGNvbnRleHQpCnsKICAoKHZvaWQpICgoY29udGV4dCAhPSAoRHJhd0NvbnRleHQpMCkgPyAwIDog
KF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJp
ZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDE1NTIsICJj
b250ZXh0ICE9IChEcmF3Q29udGV4dClOVUxMIiksIDApKSk7CiAgKCh2b2lkKSAoKGNvbnRleHQt
PnNpZ25hdHVyZSA9PSAweGFiYWNhZGFiVUwpID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFp
bGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBo
aWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAxNTUzLCAiY29udGV4dC0+c2lnbmF0dXJlID09IE1h
Z2lja1NpZ25hdHVyZSIpLCAwKSkpOwoKICByZXR1cm4gKChkb3VibGUpKGNvbnRleHQtPmdyYXBo
aWNfY29udGV4dFtjb250ZXh0LT5pbmRleF0pLT5vcGFjaXR5LzI1NVVMKTsKfQojIDE1ODMgIi9o
b21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgog
dm9pZCBEcmF3U2V0RmlsbE9wYWNpdHkoRHJhd0NvbnRleHQgY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSBmaWxsX29wYWNpdHkpCnsKICBR
dWFudHVtCiAgICBvcGFjaXR5OwoKICAoKHZvaWQpICgoY29udGV4dCAhPSAoRHJhd0NvbnRleHQp
MCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIv
aG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIs
IDE1ODksICJjb250ZXh0ICE9IChEcmF3Q29udGV4dClOVUxMIiksIDApKSk7CiAgKCh2b2lkKSAo
KGNvbnRleHQtPnNpZ25hdHVyZSA9PSAweGFiYWNhZGFiVUwpID8gMCA6IChfX2VwcmludGYgKCIl
czoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBo
aWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAxNTkwLCAiY29udGV4dC0+c2lnbmF0
dXJlID09IE1hZ2lja1NpZ25hdHVyZSIpLCAwKSkpOwoKICBvcGFjaXR5ID0gKFF1YW50dW0pKChk
b3VibGUpIDI1NVVMKigxLjAtKGZpbGxfb3BhY2l0eSA8PSAxLjAgPyBmaWxsX29wYWNpdHkgOiAx
LjAgKSkrMC41KTsKCiAgaWYgKGNvbnRleHQtPmZpbHRlcl9vZmYgfHwgKChjb250ZXh0LT5ncmFw
aGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+b3BhY2l0eSAhPSBvcGFjaXR5KSkKICAgIHsK
ICAgICAgKGNvbnRleHQtPmdyYXBoaWNfY29udGV4dFtjb250ZXh0LT5pbmRleF0pLT5vcGFjaXR5
ID0gb3BhY2l0eTsKICAgICAgTXZnUHJpbnRmKGNvbnRleHQsICJmaWxsLW9wYWNpdHkgJS40Z1xu
IiwgZmlsbF9vcGFjaXR5KTsKICAgIH0KfQojIDE2MjIgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFw
aGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgogRmlsbFJ1bGUgRHJhd0dldEZpbGxS
dWxlKERyYXdDb250ZXh0IGNvbnRleHQpCnsKICAoKHZvaWQpICgoY29udGV4dCAhPSAoRHJhd0Nv
bnRleHQpMCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydc
biIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2Ry
YXcuYyIsIDE2MjQsICJjb250ZXh0ICE9IChEcmF3Q29udGV4dClOVUxMIiksIDApKSk7CiAgKCh2
b2lkKSAoKGNvbnRleHQtPnNpZ25hdHVyZSA9PSAweGFiYWNhZGFiVUwpID8gMCA6IChfX2Vwcmlu
dGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3Jj
L2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAxNjI1LCAiY29udGV4dC0+
c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVyZSIpLCAwKSkpOwoKICByZXR1cm4gKGNvbnRleHQt
PmdyYXBoaWNfY29udGV4dFtjb250ZXh0LT5pbmRleF0pLT5maWxsX3J1bGU7Cn0KIyAxNjU0ICIv
aG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIK
IHZvaWQgRHJhd1NldEZpbGxSdWxlKERyYXdDb250ZXh0IGNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBGaWxsUnVsZSBmaWxsX3J1bGUpCnsKICBjb25zdCBj
aGFyCiAgICAqcCA9IDA7CgogICgodm9pZCkgKChjb250ZXh0ICE9IChEcmF3Q29udGV4dCkwKSA/
IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21l
L2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMTY2
MCwgImNvbnRleHQgIT0gKERyYXdDb250ZXh0KU5VTEwiKSwgMCkpKTsKICAoKHZvaWQpICgoY29u
dGV4dC0+c2lnbmF0dXJlID09IDB4YWJhY2FkYWJVTCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1
OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3Mv
R3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDE2NjEsICJjb250ZXh0LT5zaWduYXR1cmUg
PT0gTWFnaWNrU2lnbmF0dXJlIiksIDApKSk7CgogIGlmKGNvbnRleHQtPmZpbHRlcl9vZmYgfHwg
KChjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+ZmlsbF9ydWxlICE9
IGZpbGxfcnVsZSkpCiAgICB7CiAgICAgIChjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4
dC0+aW5kZXhdKS0+ZmlsbF9ydWxlID0gZmlsbF9ydWxlOwoKICAgICAgc3dpdGNoIChmaWxsX3J1
bGUpCiAgICAgICAgewogICAgICAgIGNhc2UgRXZlbk9kZFJ1bGU6CiAgICAgICAgICBwID0gImV2
ZW5vZGQiOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBOb25aZXJvUnVsZToKICAgICAg
ICAgIHAgPSAibm9uemVybyI7CiAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgaWYgKHAgIT0gMCkKICAgICAgICBNdmdQcmlu
dGYoY29udGV4dCwgImZpbGwtcnVsZSAlc1xuIiwgcCk7CiAgICB9Cn0KIyAxNzA3ICIvaG9tZS9i
ZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIKIGNoYXIg
KkRyYXdHZXRGb250KERyYXdDb250ZXh0IGNvbnRleHQpCnsKICAoKHZvaWQpICgoY29udGV4dCAh
PSAoRHJhd0NvbnRleHQpMCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0
aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2sv
bWFnaWNrL2RyYXcuYyIsIDE3MDksICJjb250ZXh0ICE9IChEcmF3Q29udGV4dClOVUxMIiksIDAp
KSk7CiAgKCh2b2lkKSAoKGNvbnRleHQtPnNpZ25hdHVyZSA9PSAweGFiYWNhZGFiVUwpID8gMCA6
IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZy
aWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAxNzEwLCAi
Y29udGV4dC0+c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVyZSIpLCAwKSkpOwoKICBpZiAoKGNv
bnRleHQtPmdyYXBoaWNfY29udGV4dFtjb250ZXh0LT5pbmRleF0pLT5mb250ICE9IChjaGFyICop
IDApCiAgICByZXR1cm4gQWxsb2NhdGVTdHJpbmcoKGNvbnRleHQtPmdyYXBoaWNfY29udGV4dFtj
b250ZXh0LT5pbmRleF0pLT5mb250KTsKICBlbHNlCiAgICByZXR1cm4gKGNoYXIgKikgMDsKfQoj
IDE3NDMgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2sv
ZHJhdy5jIgogdm9pZCBEcmF3U2V0Rm9udChEcmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCBjaGFy
ICpmb250X25hbWUpCnsKICAoKHZvaWQpICgoY29udGV4dCAhPSAoRHJhd0NvbnRleHQpMCkgPyAw
IDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9i
ZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDE3NDUs
ICJjb250ZXh0ICE9IChEcmF3Q29udGV4dClOVUxMIiksIDApKSk7CiAgKCh2b2lkKSAoKGNvbnRl
eHQtPnNpZ25hdHVyZSA9PSAweGFiYWNhZGFiVUwpID8gMCA6IChfX2VwcmludGYgKCIlczoldTog
ZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dy
YXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAxNzQ2LCAiY29udGV4dC0+c2lnbmF0dXJlID09
IE1hZ2lja1NpZ25hdHVyZSIpLCAwKSkpOwogICgodm9pZCkgKChmb250X25hbWUgIT0gKGNvbnN0
IGNoYXIgKikgMCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAl
cydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNr
L2RyYXcuYyIsIDE3NDcsICJmb250X25hbWUgIT0gKGNvbnN0IGNoYXIgKikgTlVMTCIpLCAwKSkp
OwoKICBpZihjb250ZXh0LT5maWx0ZXJfb2ZmIHx8ICgoY29udGV4dC0+Z3JhcGhpY19jb250ZXh0
W2NvbnRleHQtPmluZGV4XSktPmZvbnQgPT0gMCkgfHwKICAgICBMb2NhbGVDb21wYXJlKChjb250
ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+Zm9udCxmb250X25hbWUpICE9
IDApCiAgICB7CiAgICAgICh2b2lkKSBDbG9uZVN0cmluZygmKGNvbnRleHQtPmdyYXBoaWNfY29u
dGV4dFtjb250ZXh0LT5pbmRleF0pLT5mb250LGZvbnRfbmFtZSk7CiAgICAgIGlmKChjb250ZXh0
LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+Zm9udCA9PSAoY2hhciopMCkKICAg
ICAgICB7IGlmIChjb250ZXh0LT5pbWFnZS0+ZXhjZXB0aW9uLnNldmVyaXR5ID4gKGxvbmcpUmVz
b3VyY2VMaW1pdEVycm9yKSBUaHJvd0V4Y2VwdGlvbigmY29udGV4dC0+aW1hZ2UtPmV4Y2VwdGlv
bixSZXNvdXJjZUxpbWl0RXJyb3IsIk1lbW9yeUFsbG9jYXRpb25GYWlsZWQiLCJVbmFibGVUb0Ry
YXdPbkltYWdlIik7IHJldHVybjsgfTsKCiAgICAgIE12Z1ByaW50Zihjb250ZXh0LCAiZm9udCAn
JXMnXG4iLCBmb250X25hbWUpOwogICAgfQp9CiMgMTc4MiAiL2hvbWUvYmZyaWVzZW4vc3JjL2dy
YXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiCiBjaGFyICpEcmF3R2V0Rm9udEZh
bWlseShEcmF3Q29udGV4dCBjb250ZXh0KQp7CiAgKCh2b2lkKSAoKGNvbnRleHQgIT0gKERyYXdD
b250ZXh0KTApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMn
XG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9k
cmF3LmMiLCAxNzg0LCAiY29udGV4dCAhPSAoRHJhd0NvbnRleHQpTlVMTCIpLCAwKSkpOwogICgo
dm9pZCkgKChjb250ZXh0LT5zaWduYXR1cmUgPT0gMHhhYmFjYWRhYlVMKSA/IDAgOiAoX19lcHJp
bnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3Ny
Yy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMTc4NSwgImNvbnRleHQt
PnNpZ25hdHVyZSA9PSBNYWdpY2tTaWduYXR1cmUiKSwgMCkpKTsKCiAgaWYgKChjb250ZXh0LT5n
cmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+ZmFtaWx5ICE9IDApCiAgICByZXR1cm4g
QWxsb2NhdGVTdHJpbmcoKGNvbnRleHQtPmdyYXBoaWNfY29udGV4dFtjb250ZXh0LT5pbmRleF0p
LT5mYW1pbHkpOwogIGVsc2UKICAgIHJldHVybiAoY2hhciAqKSAwOwp9CiMgMTgxNyAiL2hvbWUv
YmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiCiB2b2lk
IERyYXdTZXRGb250RmFtaWx5KERyYXdDb250ZXh0IGNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvbnRfZmFtaWx5KQp7CiAgKCh2b2lkKSAo
KGNvbnRleHQgIT0gKERyYXdDb250ZXh0KTApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFp
bGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBo
aWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAxODIwLCAiY29udGV4dCAhPSAoRHJhd0NvbnRleHQp
TlVMTCIpLCAwKSkpOwogICgodm9pZCkgKChjb250ZXh0LT5zaWduYXR1cmUgPT0gMHhhYmFjYWRh
YlVMKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwg
Ii9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5j
IiwgMTgyMSwgImNvbnRleHQtPnNpZ25hdHVyZSA9PSBNYWdpY2tTaWduYXR1cmUiKSwgMCkpKTsK
ICAoKHZvaWQpICgoZm9udF9mYW1pbHkgIT0gKGNvbnN0IGNoYXIgKikgMCkgPyAwIDogKF9fZXBy
aW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9z
cmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDE4MjIsICJmb250X2Zh
bWlseSAhPSAoY29uc3QgY2hhciAqKSBOVUxMIiksIDApKSk7CgogIGlmKGNvbnRleHQtPmZpbHRl
cl9vZmYgfHwgKChjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+ZmFt
aWx5ID09IDApIHx8CiAgICAgTG9jYWxlQ29tcGFyZSgoY29udGV4dC0+Z3JhcGhpY19jb250ZXh0
W2NvbnRleHQtPmluZGV4XSktPmZhbWlseSxmb250X2ZhbWlseSkgIT0gMCkKICAgIHsKICAgICAg
KHZvaWQpIENsb25lU3RyaW5nKCYoY29udGV4dC0+Z3JhcGhpY19jb250ZXh0W2NvbnRleHQtPmlu
ZGV4XSktPmZhbWlseSxmb250X2ZhbWlseSk7CiAgICAgIGlmKChjb250ZXh0LT5ncmFwaGljX2Nv
bnRleHRbY29udGV4dC0+aW5kZXhdKS0+ZmFtaWx5ID09IChjaGFyKikwKQogICAgICAgIHsgaWYg
KGNvbnRleHQtPmltYWdlLT5leGNlcHRpb24uc2V2ZXJpdHkgPiAobG9uZylSZXNvdXJjZUxpbWl0
RXJyb3IpIFRocm93RXhjZXB0aW9uKCZjb250ZXh0LT5pbWFnZS0+ZXhjZXB0aW9uLFJlc291cmNl
TGltaXRFcnJvciwiTWVtb3J5QWxsb2NhdGlvbkZhaWxlZCIsIlVuYWJsZVRvRHJhd09uSW1hZ2Ui
KTsgcmV0dXJuOyB9OwoKICAgICAgTXZnUHJpbnRmKGNvbnRleHQsICJmb250LWZhbWlseSAnJXMn
XG4iLCBmb250X2ZhbWlseSk7CiAgICB9Cn0KIyAxODU2ICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3Jh
cGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIKIGRvdWJsZSBEcmF3R2V0Rm9udFNp
emUoRHJhd0NvbnRleHQgY29udGV4dCkKewogICgodm9pZCkgKChjb250ZXh0ICE9IChEcmF3Q29u
dGV4dCkwKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xu
IiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJh
dy5jIiwgMTg1OCwgImNvbnRleHQgIT0gKERyYXdDb250ZXh0KU5VTEwiKSwgMCkpKTsKICAoKHZv
aWQpICgoY29udGV4dC0+c2lnbmF0dXJlID09IDB4YWJhY2FkYWJVTCkgPyAwIDogKF9fZXByaW50
ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMv
Z3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDE4NTksICJjb250ZXh0LT5z
aWduYXR1cmUgPT0gTWFnaWNrU2lnbmF0dXJlIiksIDApKSk7CgogIHJldHVybiAoY29udGV4dC0+
Z3JhcGhpY19jb250ZXh0W2NvbnRleHQtPmluZGV4XSktPnBvaW50c2l6ZTsKfQojIDE4ODggIi9o
b21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgog
dm9pZCBEcmF3U2V0Rm9udFNpemUoRHJhd0NvbnRleHQgY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSBwb2ludHNpemUpCnsKICAoKHZvaWQpICgo
Y29udGV4dCAhPSAoRHJhd0NvbnRleHQpMCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWls
ZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhp
Y3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDE4OTEsICJjb250ZXh0ICE9IChEcmF3Q29udGV4dClO
VUxMIiksIDApKSk7CiAgKCh2b2lkKSAoKGNvbnRleHQtPnNpZ25hdHVyZSA9PSAweGFiYWNhZGFi
VUwpID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAi
L2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMi
LCAxODkyLCAiY29udGV4dC0+c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVyZSIpLCAwKSkpOwoK
ICBpZihjb250ZXh0LT5maWx0ZXJfb2ZmIHx8CiAgICAgKCgoKGNvbnRleHQtPmdyYXBoaWNfY29u
dGV4dFtjb250ZXh0LT5pbmRleF0pLT5wb2ludHNpemUtcG9pbnRzaXplKSA8IDAgPyAtKChjb250
ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+cG9pbnRzaXplLXBvaW50c2l6
ZSkgOiAoKGNvbnRleHQtPmdyYXBoaWNfY29udGV4dFtjb250ZXh0LT5pbmRleF0pLT5wb2ludHNp
emUtcG9pbnRzaXplKSkgPiAxLjBlLTEyKSkKICAgIHsKICAgICAgKGNvbnRleHQtPmdyYXBoaWNf
Y29udGV4dFtjb250ZXh0LT5pbmRleF0pLT5wb2ludHNpemU9cG9pbnRzaXplOwoKICAgICAgTXZn
UHJpbnRmKGNvbnRleHQsICJmb250LXNpemUgJS40Z1xuIiwgcG9pbnRzaXplKTsKICAgIH0KfQoj
IDE5MjQgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2sv
ZHJhdy5jIgogU3RyZXRjaFR5cGUgRHJhd0dldEZvbnRTdHJldGNoKERyYXdDb250ZXh0IGNvbnRl
eHQpCnsKICAoKHZvaWQpICgoY29udGV4dCAhPSAoRHJhd0NvbnRleHQpMCkgPyAwIDogKF9fZXBy
aW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9z
cmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDE5MjYsICJjb250ZXh0
ICE9IChEcmF3Q29udGV4dClOVUxMIiksIDApKSk7CiAgKCh2b2lkKSAoKGNvbnRleHQtPnNpZ25h
dHVyZSA9PSAweGFiYWNhZGFiVUwpID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFz
c2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFn
aWNrL21hZ2ljay9kcmF3LmMiLCAxOTI3LCAiY29udGV4dC0+c2lnbmF0dXJlID09IE1hZ2lja1Np
Z25hdHVyZSIpLCAwKSkpOwoKICByZXR1cm4gKGNvbnRleHQtPmdyYXBoaWNfY29udGV4dFtjb250
ZXh0LT5pbmRleF0pLT5zdHJldGNoOwp9CiMgMTk2MSAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBo
aWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiCiB2b2lkIERyYXdTZXRGb250U3RyZXRj
aChEcmF3Q29udGV4dCBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgU3RyZXRjaFR5cGUgZm9udF9zdHJldGNoKQp7CiAgY29uc3QgY2hhcgogICAgKnAg
PSAwOwoKICAoKHZvaWQpICgoY29udGV4dCAhPSAoRHJhd0NvbnRleHQpMCkgPyAwIDogKF9fZXBy
aW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9z
cmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDE5NjcsICJjb250ZXh0
ICE9IChEcmF3Q29udGV4dClOVUxMIiksIDApKSk7CiAgKCh2b2lkKSAoKGNvbnRleHQtPnNpZ25h
dHVyZSA9PSAweGFiYWNhZGFiVUwpID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFz
c2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFn
aWNrL21hZ2ljay9kcmF3LmMiLCAxOTY4LCAiY29udGV4dC0+c2lnbmF0dXJlID09IE1hZ2lja1Np
Z25hdHVyZSIpLCAwKSkpOwoKICBpZihjb250ZXh0LT5maWx0ZXJfb2ZmIHx8ICgoY29udGV4dC0+
Z3JhcGhpY19jb250ZXh0W2NvbnRleHQtPmluZGV4XSktPnN0cmV0Y2ggIT0gZm9udF9zdHJldGNo
KSkKICAgIHsKICAgICAgKGNvbnRleHQtPmdyYXBoaWNfY29udGV4dFtjb250ZXh0LT5pbmRleF0p
LT5zdHJldGNoPWZvbnRfc3RyZXRjaDsKCiAgICAgIHN3aXRjaCAoZm9udF9zdHJldGNoKQogICAg
ICAgIHsKICAgICAgICBjYXNlIE5vcm1hbFN0cmV0Y2g6CiAgICAgICAgICBwID0gIm5vcm1hbCI7
CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIFVsdHJhQ29uZGVuc2VkU3RyZXRjaDoKICAg
ICAgICAgIHAgPSAidWx0cmEtY29uZGVuc2VkIjsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNh
c2UgRXh0cmFDb25kZW5zZWRTdHJldGNoOgogICAgICAgICAgcCA9ICJleHRyYS1jb25kZW5zZWQi
OwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBDb25kZW5zZWRTdHJldGNoOgogICAgICAg
ICAgcCA9ICJjb25kZW5zZWQiOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBTZW1pQ29u
ZGVuc2VkU3RyZXRjaDoKICAgICAgICAgIHAgPSAic2VtaS1jb25kZW5zZWQiOwogICAgICAgICAg
YnJlYWs7CiAgICAgICAgY2FzZSBTZW1pRXhwYW5kZWRTdHJldGNoOgogICAgICAgICAgcCA9ICJz
ZW1pLWV4cGFuZGVkIjsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgRXhwYW5kZWRTdHJl
dGNoOgogICAgICAgICAgcCA9ICJleHBhbmRlZCI7CiAgICAgICAgICBicmVhazsKICAgICAgICBj
YXNlIEV4dHJhRXhwYW5kZWRTdHJldGNoOgogICAgICAgICAgcCA9ICJleHRyYS1leHBhbmRlZCI7
CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIFVsdHJhRXhwYW5kZWRTdHJldGNoOgogICAg
ICAgICAgcCA9ICJ1bHRyYS1leHBhbmRlZCI7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNl
IEFueVN0cmV0Y2g6CiAgICAgICAgICBwID0gImFsbCI7CiAgICAgICAgICBicmVhazsKICAgICAg
ICB9CgogICAgICBpZiAocCAhPSAwKQogICAgICAgIE12Z1ByaW50Zihjb250ZXh0LCAiZm9udC1z
dHJldGNoICclcydcbiIsIHApOwogICAgfQp9CiMgMjAzNCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dy
YXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiCiBTdHlsZVR5cGUgRHJhd0dldEZv
bnRTdHlsZShEcmF3Q29udGV4dCBjb250ZXh0KQp7CiAgKCh2b2lkKSAoKGNvbnRleHQgIT0gKERy
YXdDb250ZXh0KTApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBg
JXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2lj
ay9kcmF3LmMiLCAyMDM2LCAiY29udGV4dCAhPSAoRHJhd0NvbnRleHQpTlVMTCIpLCAwKSkpOwog
ICgodm9pZCkgKChjb250ZXh0LT5zaWduYXR1cmUgPT0gMHhhYmFjYWRhYlVMKSA/IDAgOiAoX19l
cHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2Vu
L3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMjAzNywgImNvbnRl
eHQtPnNpZ25hdHVyZSA9PSBNYWdpY2tTaWduYXR1cmUiKSwgMCkpKTsKCiAgcmV0dXJuIChjb250
ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+c3R5bGU7Cn0KIyAyMDY3ICIv
aG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIK
IHZvaWQgRHJhd1NldEZvbnRTdHlsZShEcmF3Q29udGV4dCBjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0eWxlVHlwZSBzdHlsZSkKewogIGNvbnN0IGNo
YXIKICAgICpwID0gMDsKCiAgKCh2b2lkKSAoKGNvbnRleHQgIT0gKERyYXdDb250ZXh0KTApID8g
MCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUv
YmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAyMDcz
LCAiY29udGV4dCAhPSAoRHJhd0NvbnRleHQpTlVMTCIpLCAwKSkpOwogICgodm9pZCkgKChjb250
ZXh0LT5zaWduYXR1cmUgPT0gMHhhYmFjYWRhYlVMKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6
IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9H
cmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMjA3NCwgImNvbnRleHQtPnNpZ25hdHVyZSA9
PSBNYWdpY2tTaWduYXR1cmUiKSwgMCkpKTsKCiAgaWYoY29udGV4dC0+ZmlsdGVyX29mZiB8fCAo
KGNvbnRleHQtPmdyYXBoaWNfY29udGV4dFtjb250ZXh0LT5pbmRleF0pLT5zdHlsZSAhPSBzdHls
ZSkpCiAgICB7CiAgICAgIChjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhd
KS0+c3R5bGU9c3R5bGU7CgogICAgICBzd2l0Y2ggKHN0eWxlKQogICAgICAgIHsKICAgICAgICBj
YXNlIE5vcm1hbFN0eWxlOgogICAgICAgICAgcCA9ICJub3JtYWwiOwogICAgICAgICAgYnJlYWs7
CiAgICAgICAgY2FzZSBJdGFsaWNTdHlsZToKICAgICAgICAgIHAgPSAiaXRhbGljIjsKICAgICAg
ICAgIGJyZWFrOwogICAgICAgIGNhc2UgT2JsaXF1ZVN0eWxlOgogICAgICAgICAgcCA9ICJvYmxp
cXVlIjsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgQW55U3R5bGU6CiAgICAgICAgICBw
ID0gImFsbCI7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICBpZiAocCAhPSAwKQog
ICAgICAgIE12Z1ByaW50Zihjb250ZXh0LCAiZm9udC1zdHlsZSAnJXMnXG4iLCBwKTsKICAgIH0K
fQojIDIxMjIgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdp
Y2svZHJhdy5jIgogdW5zaWduZWQgbG9uZyBEcmF3R2V0Rm9udFdlaWdodChEcmF3Q29udGV4dCBj
b250ZXh0KQp7CiAgKCh2b2lkKSAoKGNvbnRleHQgIT0gKERyYXdDb250ZXh0KTApID8gMCA6IChf
X2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVz
ZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAyMTI0LCAiY29u
dGV4dCAhPSAoRHJhd0NvbnRleHQpTlVMTCIpLCAwKSkpOwogICgodm9pZCkgKChjb250ZXh0LT5z
aWduYXR1cmUgPT0gMHhhYmFjYWRhYlVMKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxl
ZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGlj
c01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMjEyNSwgImNvbnRleHQtPnNpZ25hdHVyZSA9PSBNYWdp
Y2tTaWduYXR1cmUiKSwgMCkpKTsKCiAgcmV0dXJuIChjb250ZXh0LT5ncmFwaGljX2NvbnRleHRb
Y29udGV4dC0+aW5kZXhdKS0+d2VpZ2h0Owp9CiMgMjE1NSAiL2hvbWUvYmZyaWVzZW4vc3JjL2dy
YXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiCiB2b2lkIERyYXdTZXRGb250V2Vp
Z2h0KERyYXdDb250ZXh0IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgZm9udF93ZWlnaHQpCnsKICAoKHZvaWQpICgoY29udGV4
dCAhPSAoRHJhd0NvbnRleHQpMCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNz
ZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdp
Y2svbWFnaWNrL2RyYXcuYyIsIDIxNTgsICJjb250ZXh0ICE9IChEcmF3Q29udGV4dClOVUxMIiks
IDApKSk7CiAgKCh2b2lkKSAoKGNvbnRleHQtPnNpZ25hdHVyZSA9PSAweGFiYWNhZGFiVUwpID8g
MCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUv
YmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAyMTU5
LCAiY29udGV4dC0+c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVyZSIpLCAwKSkpOwoKICBpZihj
b250ZXh0LT5maWx0ZXJfb2ZmIHx8ICgoY29udGV4dC0+Z3JhcGhpY19jb250ZXh0W2NvbnRleHQt
PmluZGV4XSktPndlaWdodCAhPSBmb250X3dlaWdodCkpCiAgICB7CiAgICAgIChjb250ZXh0LT5n
cmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+d2VpZ2h0PWZvbnRfd2VpZ2h0OwogICAg
ICBNdmdQcmludGYoY29udGV4dCwgImZvbnQtd2VpZ2h0ICVsdVxuIiwgZm9udF93ZWlnaHQpOwog
ICAgfQp9CiMgMjE5MCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNr
L21hZ2ljay9kcmF3LmMiCiBHcmF2aXR5VHlwZSBEcmF3R2V0R3Jhdml0eShEcmF3Q29udGV4dCBj
b250ZXh0KQp7CiAgKCh2b2lkKSAoKGNvbnRleHQgIT0gKERyYXdDb250ZXh0KTApID8gMCA6IChf
X2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVz
ZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAyMTkyLCAiY29u
dGV4dCAhPSAoRHJhd0NvbnRleHQpTlVMTCIpLCAwKSkpOwogICgodm9pZCkgKChjb250ZXh0LT5z
aWduYXR1cmUgPT0gMHhhYmFjYWRhYlVMKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxl
ZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGlj
c01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMjE5MywgImNvbnRleHQtPnNpZ25hdHVyZSA9PSBNYWdp
Y2tTaWduYXR1cmUiKSwgMCkpKTsKCiAgcmV0dXJuIChjb250ZXh0LT5ncmFwaGljX2NvbnRleHRb
Y29udGV4dC0+aW5kZXhdKS0+Z3Jhdml0eTsKfQojIDIyMjYgIi9ob21lL2Jmcmllc2VuL3NyYy9n
cmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgogdm9pZCBEcmF3U2V0R3Jhdml0
eShEcmF3Q29udGV4dCBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHcmF2aXR5VHlwZSBncmF2aXR5KQp7CiAgY29uc3QgY2hhcgogICAgKnAgPSAwOwoKICAo
KHZvaWQpICgoY29udGV4dCAhPSAoRHJhd0NvbnRleHQpMCkgPyAwIDogKF9fZXByaW50ZiAoIiVz
OiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhp
Y3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDIyMzIsICJjb250ZXh0ICE9IChEcmF3
Q29udGV4dClOVUxMIiksIDApKSk7CiAgKCh2b2lkKSAoKGNvbnRleHQtPnNpZ25hdHVyZSA9PSAw
eGFiYWNhZGFiVUwpID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBg
JXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2lj
ay9kcmF3LmMiLCAyMjMzLCAiY29udGV4dC0+c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVyZSIp
LCAwKSkpOwoKICBpZihjb250ZXh0LT5maWx0ZXJfb2ZmIHx8ICgoY29udGV4dC0+Z3JhcGhpY19j
b250ZXh0W2NvbnRleHQtPmluZGV4XSktPmdyYXZpdHkgIT0gZ3Jhdml0eSkpCiAgICB7CiAgICAg
IChjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+Z3Jhdml0eT1ncmF2
aXR5OwoKICAgICAgc3dpdGNoIChncmF2aXR5KQogICAgICAgIHsKICAgICAgICBjYXNlIE5vcnRo
V2VzdEdyYXZpdHk6CiAgICAgICAgICBwID0gIk5vcnRoV2VzdCI7CiAgICAgICAgICBicmVhazsK
ICAgICAgICBjYXNlIE5vcnRoR3Jhdml0eToKICAgICAgICAgIHAgPSAiTm9ydGgiOwogICAgICAg
ICAgYnJlYWs7CiAgICAgICAgY2FzZSBOb3J0aEVhc3RHcmF2aXR5OgogICAgICAgICAgcCA9ICJO
b3J0aEVhc3QiOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBXZXN0R3Jhdml0eToKICAg
ICAgICAgIHAgPSAiV2VzdCI7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIENlbnRlckdy
YXZpdHk6CiAgICAgICAgICBwID0gIkNlbnRlciI7CiAgICAgICAgICBicmVhazsKICAgICAgICBj
YXNlIEVhc3RHcmF2aXR5OgogICAgICAgICAgcCA9ICJFYXN0IjsKICAgICAgICAgIGJyZWFrOwog
ICAgICAgIGNhc2UgU291dGhXZXN0R3Jhdml0eToKICAgICAgICAgIHAgPSAiU291dGhXZXN0IjsK
ICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgU291dGhHcmF2aXR5OgogICAgICAgICAgcCA9
ICJTb3V0aCI7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIFNvdXRoRWFzdEdyYXZpdHk6
CiAgICAgICAgICBwID0gIlNvdXRoRWFzdCI7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNl
IFN0YXRpY0dyYXZpdHk6CiAgICAgICAgY2FzZSBGb3JnZXRHcmF2aXR5OgogICAgICAgICAgewog
ICAgICAgICAgfQogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgaWYgKHAgIT0gMCkK
ICAgICAgICBNdmdQcmludGYoY29udGV4dCwgImdyYXZpdHkgJXNcbiIsIHApOwogICAgfQp9CiMg
MjMyMiAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9k
cmF3LmMiCiB2b2lkIERyYXdDb21wb3NpdGUoRHJhd0NvbnRleHQgY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVf
b3BlcmF0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG91YmxlIHgs
IGNvbnN0IGRvdWJsZSB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRv
dWJsZSB3aWR0aCwgY29uc3QgZG91YmxlIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBJbWFnZSAqIGltYWdlICkKCnsKICBJbWFnZUluZm8KICAgICppbWFnZV9p
bmZvOwoKICBJbWFnZQogICAgKmNsb25lX2ltYWdlOwoKICBjaGFyCiAgICAqbWVkaWFfdHlwZSA9
IDAsCiAgICAqYmFzZTY0ID0gMDsKCiAgY29uc3QgY2hhcgogICAgKm1vZGUgPSAwOwoKICB1bnNp
Z25lZCBjaGFyCiAgICAqYmxvYiA9ICh1bnNpZ25lZCBjaGFyKikwOwoKICBzaXplX3QKICAgIGJs
b2JfbGVuZ3RoID0gMjA0OCwKICAgIGVuY29kZWRfbGVuZ3RoID0gMDsKCiAgTW9uaXRvckhhbmRs
ZXIKICAgIGhhbmRsZXI7CgogICgodm9pZCkgKChjb250ZXh0ICE9IChEcmF3Q29udGV4dCkwKSA/
IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21l
L2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMjM1
MiwgImNvbnRleHQgIT0gKERyYXdDb250ZXh0KU5VTEwiKSwgMCkpKTsKICAoKHZvaWQpICgoaW1h
Z2UgIT0gKEltYWdlICopIDApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2Vy
dGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNr
L21hZ2ljay9kcmF3LmMiLCAyMzUzLCAiaW1hZ2UgIT0gKEltYWdlICopIE5VTEwiKSwgMCkpKTsK
ICAoKHZvaWQpICgod2lkdGggIT0gMCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQg
YXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NN
YWdpY2svbWFnaWNrL2RyYXcuYyIsIDIzNTQsICJ3aWR0aCAhPSAwIiksIDApKSk7CiAgKCh2b2lk
KSAoKGhlaWdodCAhPSAwKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRp
b24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9t
YWdpY2svZHJhdy5jIiwgMjM1NSwgImhlaWdodCAhPSAwIiksIDApKSk7CiAgKCh2b2lkKSAoKCpp
bWFnZS0+bWFnaWNrICE9ICdcMCcpID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFz
c2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFn
aWNrL21hZ2ljay9kcmF3LmMiLCAyMzU2LCAiKmltYWdlLT5tYWdpY2sgIT0gJ1xcMCciKSwgMCkp
KTsKCgoKCiAgY2xvbmVfaW1hZ2UgPSBDbG9uZUltYWdlKGltYWdlLDAsMCwxLCZjb250ZXh0LT5p
bWFnZS0+ZXhjZXB0aW9uKTsKICBpZighY2xvbmVfaW1hZ2UpCiAgICByZXR1cm47CgogIGltYWdl
X2luZm8gPSBDbG9uZUltYWdlSW5mbygoSW1hZ2VJbmZvKikwKTsKICBpZighaW1hZ2VfaW5mbykK
ICAgIHsgaWYgKGNvbnRleHQtPmltYWdlLT5leGNlcHRpb24uc2V2ZXJpdHkgPiAobG9uZylSZXNv
dXJjZUxpbWl0RXJyb3IpIFRocm93RXhjZXB0aW9uKCZjb250ZXh0LT5pbWFnZS0+ZXhjZXB0aW9u
LFJlc291cmNlTGltaXRFcnJvciwiTWVtb3J5QWxsb2NhdGlvbkZhaWxlZCIsIlVuYWJsZVRvRHJh
d09uSW1hZ2UiKTsgcmV0dXJuOyB9OwoKICBoYW5kbGVyPVNldE1vbml0b3JIYW5kbGVyKChNb25p
dG9ySGFuZGxlcikgMCk7CiAgYmxvYiA9ICh1bnNpZ25lZCBjaGFyKilJbWFnZVRvQmxvYiggaW1h
Z2VfaW5mbywgY2xvbmVfaW1hZ2UsICZibG9iX2xlbmd0aCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmY29udGV4dC0+aW1hZ2UtPmV4Y2VwdGlvbiApOwogICh2b2lkKSBT
ZXRNb25pdG9ySGFuZGxlcihoYW5kbGVyKTsKICBEZXN0cm95SW1hZ2VJbmZvKGltYWdlX2luZm8p
OwogIERlc3Ryb3lJbWFnZUxpc3QoY2xvbmVfaW1hZ2UpOwogIGlmKCFibG9iKQogICAgcmV0dXJu
OwoKICBiYXNlNjQgPSBCYXNlNjRFbmNvZGUoYmxvYixibG9iX2xlbmd0aCwmZW5jb2RlZF9sZW5n
dGgpOwogIExpYmVyYXRlTWVtb3J5KCh2b2lkKiopJmJsb2IpOwogIGlmKCFiYXNlNjQpCiAgICB7
CiAgICAgIGNoYXIKICAgICAgICBidWZmZXJbMjA1M107CgogICAgICBGb3JtYXRTdHJpbmcoYnVm
ZmVyLCIlbGQgYnl0ZXMiLCAoNEwqYmxvYl9sZW5ndGgvM0wrNEwpKTsKICAgICAgeyBpZiAoY29u
dGV4dC0+aW1hZ2UtPmV4Y2VwdGlvbi5zZXZlcml0eSA+IChsb25nKVJlc291cmNlTGltaXRXYXJu
aW5nKSBUaHJvd0V4Y2VwdGlvbigmY29udGV4dC0+aW1hZ2UtPmV4Y2VwdGlvbixSZXNvdXJjZUxp
bWl0V2FybmluZywiVW5hYmxlVG9BbGxvY2F0ZU1lbW9yeSIsYnVmZmVyKTsgcmV0dXJuOyB9CiAg
ICB9CgogIG1vZGUgPSAiY29weSI7CiAgc3dpdGNoIChjb21wb3NpdGVfb3BlcmF0b3IpCiAgICB7
CiAgICBjYXNlIEFkZENvbXBvc2l0ZU9wOgogICAgICBtb2RlID0gImFkZCI7CiAgICAgIGJyZWFr
OwogICAgY2FzZSBBdG9wQ29tcG9zaXRlT3A6CiAgICAgIG1vZGUgPSAiYXRvcCI7CiAgICAgIGJy
ZWFrOwogICAgY2FzZSBCdW1wbWFwQ29tcG9zaXRlT3A6CiAgICAgIG1vZGUgPSAiYnVtcG1hcCI7
CiAgICAgIGJyZWFrOwogICAgY2FzZSBDbGVhckNvbXBvc2l0ZU9wOgogICAgICBtb2RlID0gImNs
ZWFyIjsKICAgICAgYnJlYWs7CiAgICBjYXNlIENvbG9yaXplQ29tcG9zaXRlT3A6CiAgICAgIG1v
ZGUgPSAiY29sb3JpemVfbm90X3N1cHBvcnRlZCI7CiAgICAgIGJyZWFrOwogICAgY2FzZSBDb3B5
Qmx1ZUNvbXBvc2l0ZU9wOgogICAgICBtb2RlID0gImNvcHlibHVlIjsKICAgICAgYnJlYWs7CiAg
ICBjYXNlIENvcHlDb21wb3NpdGVPcDoKICAgICAgbW9kZSA9ICJjb3B5IjsKICAgICAgYnJlYWs7
CiAgICBjYXNlIENvcHlHcmVlbkNvbXBvc2l0ZU9wOgogICAgICBtb2RlID0gImNvcHlncmVlbiI7
CiAgICAgIGJyZWFrOwogICAgY2FzZSBDb3B5T3BhY2l0eUNvbXBvc2l0ZU9wOgogICAgICBtb2Rl
ID0gImNvcHlvcGFjaXR5IjsKICAgICAgYnJlYWs7CiAgICBjYXNlIENvcHlSZWRDb21wb3NpdGVP
cDoKICAgICAgbW9kZSA9ICJjb3B5cmVkIjsKICAgICAgYnJlYWs7CiAgICBjYXNlIERhcmtlbkNv
bXBvc2l0ZU9wOgogICAgICBtb2RlID0gImRhcmtlbl9ub3Rfc3VwcG9ydGVkIjsKICAgICAgYnJl
YWs7CiAgICBjYXNlIERpZmZlcmVuY2VDb21wb3NpdGVPcDoKICAgICAgbW9kZSA9ICJkaWZmZXJl
bmNlIjsKICAgICAgYnJlYWs7CiAgICBjYXNlIERpc3BsYWNlQ29tcG9zaXRlT3A6CiAgICAgIG1v
ZGUgPSAiZGlzcGxhY2Vfbm90X3N1cHBvcnRlZCI7CiAgICAgIGJyZWFrOwogICAgY2FzZSBEaXNz
b2x2ZUNvbXBvc2l0ZU9wOgogICAgICBtb2RlID0gImRpc3NvbHZlX25vdF9zdXBwb3J0ZWQiOwog
ICAgICBicmVhazsKICAgIGNhc2UgSHVlQ29tcG9zaXRlT3A6CiAgICAgIG1vZGUgPSAiaHVlX25v
dF9zdXBwb3J0ZWQiOwogICAgICBicmVhazsKICAgIGNhc2UgSW5Db21wb3NpdGVPcDoKICAgICAg
bW9kZSA9ICJpbiI7CiAgICAgIGJyZWFrOwogICAgY2FzZSBMaWdodGVuQ29tcG9zaXRlT3A6CiAg
ICAgIG1vZGUgPSAibGlnaHRlbl9ub3Rfc3VwcG9ydGVkIjsKICAgICAgYnJlYWs7CiAgICBjYXNl
IEx1bWluaXplQ29tcG9zaXRlT3A6CiAgICAgIG1vZGUgPSAibHVtaW5pemVfbm90X3N1cHBvcnRl
ZCI7CiAgICAgIGJyZWFrOwogICAgY2FzZSBNaW51c0NvbXBvc2l0ZU9wOgogICAgICBtb2RlID0g
Im1pbnVzIjsKICAgICAgYnJlYWs7CiAgICBjYXNlIE1vZHVsYXRlQ29tcG9zaXRlT3A6CiAgICAg
IG1vZGUgPSAibW9kdWxhdGVfbm90X3N1cHBvcnRlZCI7CiAgICAgIGJyZWFrOwogICAgY2FzZSBN
dWx0aXBseUNvbXBvc2l0ZU9wOgogICAgICBtb2RlID0gIm11bHRpcGx5IjsKICAgICAgYnJlYWs7
CiAgICBjYXNlIE5vQ29tcG9zaXRlT3A6CiAgICAgIG1vZGUgPSAibm9fbm90X3N1cHBvcnRlZCI7
CiAgICAgIGJyZWFrOwogICAgY2FzZSBPdXRDb21wb3NpdGVPcDoKICAgICAgbW9kZSA9ICJvdXQi
OwogICAgICBicmVhazsKICAgIGNhc2UgT3ZlckNvbXBvc2l0ZU9wOgogICAgICBtb2RlID0gIm92
ZXIiOwogICAgICBicmVhazsKICAgIGNhc2UgT3ZlcmxheUNvbXBvc2l0ZU9wOgogICAgICBtb2Rl
ID0gIm92ZXJsYXlfbm90X3N1cHBvcnRlZCI7CiAgICAgIGJyZWFrOwogICAgY2FzZSBQbHVzQ29t
cG9zaXRlT3A6CiAgICAgIG1vZGUgPSAicGx1cyI7CiAgICAgIGJyZWFrOwogICAgY2FzZSBTYXR1
cmF0ZUNvbXBvc2l0ZU9wOgogICAgICBtb2RlID0gInNhdHVyYXRlX25vdF9zdXBwb3J0ZWQiOwog
ICAgICBicmVhazsKICAgIGNhc2UgU2NyZWVuQ29tcG9zaXRlT3A6CiAgICAgIG1vZGUgPSAic2Ny
ZWVuX25vdF9zdXBwb3J0ZWQiOwogICAgICBicmVhazsKICAgIGNhc2UgU3VidHJhY3RDb21wb3Np
dGVPcDoKICAgICAgbW9kZSA9ICJzdWJ0cmFjdCI7CiAgICAgIGJyZWFrOwogICAgY2FzZSBUaHJl
c2hvbGRDb21wb3NpdGVPcDoKICAgICAgbW9kZSA9ICJ0aHJlc2hvbGQiOwogICAgICBicmVhazsK
ICAgIGNhc2UgWG9yQ29tcG9zaXRlT3A6CiAgICAgIG1vZGUgPSAieG9yIjsKICAgICAgYnJlYWs7
CiAgICBkZWZhdWx0OgogICAgICBicmVhazsKICAgIH0KCiAgbWVkaWFfdHlwZSA9IE1hZ2lja1Rv
TWltZSggaW1hZ2UtPm1hZ2ljayApOwoKICBpZiggbWVkaWFfdHlwZSAhPSAwICkKICAgIHsKICAg
ICAgY2hhcgogICAgICAgICpzdHI7CgogICAgICBpbnQKICAgICAgICByZW1haW5pbmc7CgogICAg
ICBNdmdQcmludGYoY29udGV4dCwgImltYWdlICVzICUuNGcsJS40ZyAlLjRnLCUuNGcgJ2RhdGE6
JXM7YmFzZTY0LFxuIiwKICAgICAgICAgICAgICAgIG1vZGUsIHgsIHksIHdpZHRoLCBoZWlnaHQs
IG1lZGlhX3R5cGUpOwoKICAgICAgcmVtYWluaW5nID0gKGludCllbmNvZGVkX2xlbmd0aDsKICAg
ICAgc3RyID0gYmFzZTY0OwogICAgICB3aGlsZSggcmVtYWluaW5nID4gMCApCiAgICAgICAgewog
ICAgICAgICAgTXZnUHJpbnRmKGNvbnRleHQsIiUuNzZzIiwgc3RyKTsKICAgICAgICAgIHJlbWFp
bmluZyAtPSA3NjsKICAgICAgICAgIHN0ciArPSA3NjsKICAgICAgICAgIGlmKHJlbWFpbmluZyA+
IDApCiAgICAgICAgICAgIE12Z1ByaW50Zihjb250ZXh0LCJcbiIpOwogICAgICAgIH0KCiAgICAg
IE12Z1ByaW50Zihjb250ZXh0LCInXG4iKTsKICAgIH0KCiAgTGliZXJhdGVNZW1vcnkoKHZvaWQq
KikmbWVkaWFfdHlwZSk7Cn0KIyAyNTUyICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3Jh
cGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIKIHZvaWQgRHJhd0xpbmUoRHJhd0NvbnRleHQgY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG91YmxlIHN4LCBjb25zdCBk
b3VibGUgc3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSBleCwgY29u
c3QgZG91YmxlIGV5KQp7CiAgKCh2b2lkKSAoKGNvbnRleHQgIT0gKERyYXdDb250ZXh0KTApID8g
MCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUv
YmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAyNTU2
LCAiY29udGV4dCAhPSAoRHJhd0NvbnRleHQpTlVMTCIpLCAwKSkpOwogICgodm9pZCkgKChjb250
ZXh0LT5zaWduYXR1cmUgPT0gMHhhYmFjYWRhYlVMKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6
IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9H
cmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMjU1NywgImNvbnRleHQtPnNpZ25hdHVyZSA9
PSBNYWdpY2tTaWduYXR1cmUiKSwgMCkpKTsKCiAgTXZnUHJpbnRmKGNvbnRleHQsICJsaW5lICUu
NGcsJS40ZyAlLjRnLCUuNGdcbiIsIHN4LCBzeSwgZXgsIGV5KTsKfQojIDI2MDIgIi9ob21lL2Jm
cmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgogdm9pZCBE
cmF3TWF0dGUoRHJhd0NvbnRleHQgY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGRvdWJsZSB4LCBjb25zdCBkb3VibGUgeSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFBhaW50TWV0aG9kIHBhaW50X21ldGhvZCkKewogIGNvbnN0IGNoYXIKICAgICpw
ID0gMDsKCiAgKCh2b2lkKSAoKGNvbnRleHQgIT0gKERyYXdDb250ZXh0KTApID8gMCA6IChfX2Vw
cmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4v
c3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAyNjA5LCAiY29udGV4
dCAhPSAoRHJhd0NvbnRleHQpTlVMTCIpLCAwKSkpOwogICgodm9pZCkgKChjb250ZXh0LT5zaWdu
YXR1cmUgPT0gMHhhYmFjYWRhYlVMKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBh
c3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01h
Z2ljay9tYWdpY2svZHJhdy5jIiwgMjYxMCwgImNvbnRleHQtPnNpZ25hdHVyZSA9PSBNYWdpY2tT
aWduYXR1cmUiKSwgMCkpKTsKCiAgc3dpdGNoIChwYWludF9tZXRob2QpCiAgICB7CiAgICBjYXNl
IFBvaW50TWV0aG9kOgogICAgICBwID0gInBvaW50IjsKICAgICAgYnJlYWs7CiAgICBjYXNlIFJl
cGxhY2VNZXRob2Q6CiAgICAgIHAgPSAicmVwbGFjZSI7CiAgICAgIGJyZWFrOwogICAgY2FzZSBG
bG9vZGZpbGxNZXRob2Q6CiAgICAgIHAgPSAiZmxvb2RmaWxsIjsKICAgICAgYnJlYWs7CiAgICBj
YXNlIEZpbGxUb0JvcmRlck1ldGhvZDoKICAgICAgcCA9ICJmaWxsdG9ib3JkZXIiOwogICAgICBi
cmVhazsKICAgIGNhc2UgUmVzZXRNZXRob2Q6CiAgICAgIHAgPSAicmVzZXQiOwogICAgICBicmVh
azsKICAgIH0KCiAgaWYgKHAgIT0gMCkKICAgIE12Z1ByaW50Zihjb250ZXh0LCAibWF0dGUgJS40
ZywlLjRnICVzXG4iLCB4LCB5LCBwKTsKfQojIDI2NjAgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFw
aGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgogdm9pZCBEcmF3UGF0aENsb3NlKERy
YXdDb250ZXh0IGNvbnRleHQpCnsKICAoKHZvaWQpICgoY29udGV4dCAhPSAoRHJhd0NvbnRleHQp
MCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIv
aG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIs
IDI2NjIsICJjb250ZXh0ICE9IChEcmF3Q29udGV4dClOVUxMIiksIDApKSk7CiAgKCh2b2lkKSAo
KGNvbnRleHQtPnNpZ25hdHVyZSA9PSAweGFiYWNhZGFiVUwpID8gMCA6IChfX2VwcmludGYgKCIl
czoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBo
aWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAyNjYzLCAiY29udGV4dC0+c2lnbmF0
dXJlID09IE1hZ2lja1NpZ25hdHVyZSIpLCAwKSkpOwoKICBNdmdBdXRvV3JhcFByaW50Zihjb250
ZXh0LCAiJXMiLCBjb250ZXh0LT5wYXRoX21vZGUgPT0gQWJzb2x1dGVQYXRoTW9kZSA/ICJaIiA6
ICJ6Iik7Cn0KIyAyNzA5ICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdp
Y2svbWFnaWNrL2RyYXcuYyIKc3RhdGljIHZvaWQgRHJhd1BhdGhDdXJ2ZVRvKERyYXdDb250ZXh0
IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQYXRoTW9kZSBtb2Rl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG91YmxlIHgxLCBjb25zdCBkb3Vi
bGUgeTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb3VibGUgeDIsIGNvbnN0
IGRvdWJsZSB5MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSB4LCBj
b25zdCBkb3VibGUgeSkKewogICgodm9pZCkgKChjb250ZXh0ICE9IChEcmF3Q29udGV4dCkwKSA/
IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21l
L2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMjcx
NSwgImNvbnRleHQgIT0gKERyYXdDb250ZXh0KU5VTEwiKSwgMCkpKTsKICAoKHZvaWQpICgoY29u
dGV4dC0+c2lnbmF0dXJlID09IDB4YWJhY2FkYWJVTCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1
OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3Mv
R3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDI3MTYsICJjb250ZXh0LT5zaWduYXR1cmUg
PT0gTWFnaWNrU2lnbmF0dXJlIiksIDApKSk7CgogIGlmICgoY29udGV4dC0+cGF0aF9vcGVyYXRp
b24gIT0gUGF0aEN1cnZlVG9PcGVyYXRpb24pCiAgICAgIHx8IChjb250ZXh0LT5wYXRoX21vZGUg
IT0gbW9kZSkpCiAgICB7CiAgICAgIGNvbnRleHQtPnBhdGhfb3BlcmF0aW9uID0gUGF0aEN1cnZl
VG9PcGVyYXRpb247CiAgICAgIGNvbnRleHQtPnBhdGhfbW9kZSA9IG1vZGU7CiAgICAgIE12Z0F1
dG9XcmFwUHJpbnRmKGNvbnRleHQsICIlYyUuNGcsJS40ZyAlLjRnLCUuNGcgJS40ZywlLjRnIiwK
ICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSA9PSBBYnNvbHV0ZVBhdGhNb2RlID8gJ0MnIDog
J2MnLAogICAgICAgICAgICAgICAgICAgICAgICB4MSwgeTEsIHgyLCB5MiwgeCwgeSk7CiAgICB9
CiAgZWxzZQogICAgTXZnQXV0b1dyYXBQcmludGYoY29udGV4dCwgIiAlLjRnLCUuNGcgJS40Zywl
LjRnICUuNGcsJS40ZyIsCiAgICAgICAgICAgICAgICAgICAgICB4MSwgeTEsIHgyLCB5MiwgeCwg
eSk7Cn0KIHZvaWQgRHJhd1BhdGhDdXJ2ZVRvQWJzb2x1dGUoRHJhd0NvbnRleHQgY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG91YmxlIHgx
LCBjb25zdCBkb3VibGUgeTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGRvdWJsZSB4MiwgY29uc3QgZG91YmxlIHkyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIHkpCnsK
ICAoKHZvaWQpICgoY29udGV4dCAhPSAoRHJhd0NvbnRleHQpMCkgPyAwIDogKF9fZXByaW50ZiAo
IiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3Jh
cGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDI3MzYsICJjb250ZXh0ICE9IChE
cmF3Q29udGV4dClOVUxMIiksIDApKSk7CiAgKCh2b2lkKSAoKGNvbnRleHQtPnNpZ25hdHVyZSA9
PSAweGFiYWNhZGFiVUwpID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlv
biBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21h
Z2ljay9kcmF3LmMiLCAyNzM3LCAiY29udGV4dC0+c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVy
ZSIpLCAwKSkpOwoKICBEcmF3UGF0aEN1cnZlVG8oY29udGV4dCwgQWJzb2x1dGVQYXRoTW9kZSwg
eDEsIHkxLCB4MiwgeTIsIHgsIHkpOwp9CiMgMjc4MyAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBo
aWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiCiB2b2lkIERyYXdQYXRoQ3VydmVUb1Jl
bGF0aXZlKERyYXdDb250ZXh0IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSB4MSwgY29uc3QgZG91YmxlIHkxLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb3VibGUgeDIsIGNvbnN0IGRv
dWJsZSB5MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZG91YmxlIHgsIGNvbnN0IGRvdWJsZSB5KQp7CiAgKCh2b2lkKSAoKGNvbnRleHQgIT0gKERyYXdD
b250ZXh0KTApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMn
XG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9k
cmF3LmMiLCAyNzg4LCAiY29udGV4dCAhPSAoRHJhd0NvbnRleHQpTlVMTCIpLCAwKSkpOwogICgo
dm9pZCkgKChjb250ZXh0LT5zaWduYXR1cmUgPT0gMHhhYmFjYWRhYlVMKSA/IDAgOiAoX19lcHJp
bnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3Ny
Yy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMjc4OSwgImNvbnRleHQt
PnNpZ25hdHVyZSA9PSBNYWdpY2tTaWduYXR1cmUiKSwgMCkpKTsKCiAgRHJhd1BhdGhDdXJ2ZVRv
KGNvbnRleHQsIFJlbGF0aXZlUGF0aE1vZGUsIHgxLCB5MSwgeDIsIHkyLCB4LCB5KTsKfQojIDI4
MzEgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJh
dy5jIgpzdGF0aWMgdm9pZCBEcmF3UGF0aEN1cnZlVG9RdWFkcmF0aWNCZXppZXIoRHJhd0NvbnRl
eHQgY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFBhdGhNb2RlIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBkb3VibGUgeDEsIGRvdWJsZSB5MSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSB4LCBjb25zdCBkb3VibGUgeSkKewogICgo
dm9pZCkgKChjb250ZXh0ICE9IChEcmF3Q29udGV4dCkwKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6
JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGlj
cy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMjgzNiwgImNvbnRleHQgIT0gKERyYXdD
b250ZXh0KU5VTEwiKSwgMCkpKTsKICAoKHZvaWQpICgoY29udGV4dC0+c2lnbmF0dXJlID09IDB4
YWJhY2FkYWJVTCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAl
cydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNr
L2RyYXcuYyIsIDI4MzcsICJjb250ZXh0LT5zaWduYXR1cmUgPT0gTWFnaWNrU2lnbmF0dXJlIiks
IDApKSk7CgogIGlmICgoY29udGV4dC0+cGF0aF9vcGVyYXRpb24gIT0gUGF0aEN1cnZlVG9RdWFk
cmF0aWNCZXppZXJPcGVyYXRpb24pCiAgICAgIHx8IChjb250ZXh0LT5wYXRoX21vZGUgIT0gbW9k
ZSkpCiAgICB7CiAgICAgIGNvbnRleHQtPnBhdGhfb3BlcmF0aW9uID0gUGF0aEN1cnZlVG9RdWFk
cmF0aWNCZXppZXJPcGVyYXRpb247CiAgICAgIGNvbnRleHQtPnBhdGhfbW9kZSA9IG1vZGU7CiAg
ICAgIE12Z0F1dG9XcmFwUHJpbnRmKGNvbnRleHQsICIlYyUuNGcsJS40ZyAlLjRnLCUuNGciLAog
ICAgICAgICAgICAgICAgICAgICAgICBtb2RlID09IEFic29sdXRlUGF0aE1vZGUgPyAnUScgOiAn
cScsIHgxLCB5MSwgeCwgeSk7CiAgICB9CiAgZWxzZQogICAgTXZnQXV0b1dyYXBQcmludGYoY29u
dGV4dCwgIiAlLjRnLCUuNGcgJS40ZywlLjRnIiwgeDEsIHkxLCB4LCB5KTsKfQogdm9pZCBEcmF3
UGF0aEN1cnZlVG9RdWFkcmF0aWNCZXppZXJBYnNvbHV0ZShEcmF3Q29udGV4dCBjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBkb3VibGUgeDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSB5MSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG91YmxlIHgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRv
dWJsZSB5KQp7CiAgKCh2b2lkKSAoKGNvbnRleHQgIT0gKERyYXdDb250ZXh0KTApID8gMCA6IChf
X2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVz
ZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAyODU2LCAiY29u
dGV4dCAhPSAoRHJhd0NvbnRleHQpTlVMTCIpLCAwKSkpOwogICgodm9pZCkgKChjb250ZXh0LT5z
aWduYXR1cmUgPT0gMHhhYmFjYWRhYlVMKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxl
ZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGlj
c01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMjg1NywgImNvbnRleHQtPnNpZ25hdHVyZSA9PSBNYWdp
Y2tTaWduYXR1cmUiKSwgMCkpKTsKCiAgRHJhd1BhdGhDdXJ2ZVRvUXVhZHJhdGljQmV6aWVyKGNv
bnRleHQsIEFic29sdXRlUGF0aE1vZGUsIHgxLCB5MSwgeCwgeSk7Cn0KIyAyODk5ICIvaG9tZS9i
ZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIKIHZvaWQg
RHJhd1BhdGhDdXJ2ZVRvUXVhZHJhdGljQmV6aWVyUmVsYXRpdmUoRHJhd0NvbnRleHQgY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZG91YmxlIHgxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBkb3VibGUgeTEsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSB4LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBkb3VibGUgeSkKewogICgodm9pZCkgKChjb250ZXh0ICE9IChEcmF3Q29udGV4dCkwKSA/IDAg
OiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jm
cmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMjkwNSwg
ImNvbnRleHQgIT0gKERyYXdDb250ZXh0KU5VTEwiKSwgMCkpKTsKICAoKHZvaWQpICgoY29udGV4
dC0+c2lnbmF0dXJlID09IDB4YWJhY2FkYWJVTCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBm
YWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3Jh
cGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDI5MDYsICJjb250ZXh0LT5zaWduYXR1cmUgPT0g
TWFnaWNrU2lnbmF0dXJlIiksIDApKSk7CgogIERyYXdQYXRoQ3VydmVUb1F1YWRyYXRpY0Jlemll
cihjb250ZXh0LCBSZWxhdGl2ZVBhdGhNb2RlLCB4MSwgeTEsIHgsIHkpOwp9CiMgMjk1MSAiL2hv
bWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiCnN0
YXRpYyB2b2lkIERyYXdQYXRoQ3VydmVUb1F1YWRyYXRpY0JlemllclNtb290aChEcmF3Q29udGV4
dCBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgUGF0aE1vZGUgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSB4LCBjb25zdCBkb3VibGUgeSkKewogICgodm9p
ZCkgKChjb250ZXh0ICE9IChEcmF3Q29udGV4dCkwKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6
IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9H
cmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMjk1NSwgImNvbnRleHQgIT0gKERyYXdDb250
ZXh0KU5VTEwiKSwgMCkpKTsKICAoKHZvaWQpICgoY29udGV4dC0+c2lnbmF0dXJlID09IDB4YWJh
Y2FkYWJVTCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydc
biIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2Ry
YXcuYyIsIDI5NTYsICJjb250ZXh0LT5zaWduYXR1cmUgPT0gTWFnaWNrU2lnbmF0dXJlIiksIDAp
KSk7CgogIGlmICgoY29udGV4dC0+cGF0aF9vcGVyYXRpb24gIT0gUGF0aEN1cnZlVG9RdWFkcmF0
aWNCZXppZXJTbW9vdGhPcGVyYXRpb24pCiAgICAgIHx8IChjb250ZXh0LT5wYXRoX21vZGUgIT0g
bW9kZSkpCiAgICB7CiAgICAgIGNvbnRleHQtPnBhdGhfb3BlcmF0aW9uID0gUGF0aEN1cnZlVG9R
dWFkcmF0aWNCZXppZXJTbW9vdGhPcGVyYXRpb247CiAgICAgIGNvbnRleHQtPnBhdGhfbW9kZSA9
IG1vZGU7CiAgICAgIE12Z0F1dG9XcmFwUHJpbnRmKGNvbnRleHQsICIlYyUuNGcsJS40ZyIsCiAg
ICAgICAgICAgICAgICAgICAgICAgIG1vZGUgPT0gQWJzb2x1dGVQYXRoTW9kZSA/ICdUJyA6ICd0
JywgeCwgeSk7CiAgICB9CiAgZWxzZQogICAgTXZnQXV0b1dyYXBQcmludGYoY29udGV4dCwgIiAl
LjRnLCUuNGciLCB4LCB5KTsKfQogdm9pZCBEcmF3UGF0aEN1cnZlVG9RdWFkcmF0aWNCZXppZXJT
bW9vdGhBYnNvbHV0ZShEcmF3Q29udGV4dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb3Vi
bGUgeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZG91YmxlIHkpCnsKICAoKHZvaWQpICgoY29udGV4dCAhPSAoRHJh
d0NvbnRleHQpMCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAl
cydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNr
L2RyYXcuYyIsIDI5NzQsICJjb250ZXh0ICE9IChEcmF3Q29udGV4dClOVUxMIiksIDApKSk7CiAg
KCh2b2lkKSAoKGNvbnRleHQtPnNpZ25hdHVyZSA9PSAweGFiYWNhZGFiVUwpID8gMCA6IChfX2Vw
cmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4v
c3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAyOTc1LCAiY29udGV4
dC0+c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVyZSIpLCAwKSkpOwoKICBEcmF3UGF0aEN1cnZl
VG9RdWFkcmF0aWNCZXppZXJTbW9vdGgoY29udGV4dCwgQWJzb2x1dGVQYXRoTW9kZSwgeCwgeSk7
Cn0KIyAzMDIxICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFn
aWNrL2RyYXcuYyIKIHZvaWQgRHJhd1BhdGhDdXJ2ZVRvUXVhZHJhdGljQmV6aWVyU21vb3RoUmVs
YXRpdmUoRHJhd0NvbnRleHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG91YmxlIHgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGRvdWJsZSB5KQp7CiAgRHJhd1BhdGhDdXJ2ZVRvUXVhZHJhdGljQmV6aWVyU21v
b3RoKGNvbnRleHQsIFJlbGF0aXZlUGF0aE1vZGUsIHgsIHkpOwp9CiMgMzA3MiAiL2hvbWUvYmZy
aWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiCnN0YXRpYyB2
b2lkIERyYXdQYXRoQ3VydmVUb1Ntb290aChEcmF3Q29udGV4dCBjb250ZXh0LCBjb25zdCBQYXRo
TW9kZSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG91Ymxl
IHgyLCBjb25zdCBkb3VibGUgeTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIHkpCnsKICAoKHZvaWQpICgoY29udGV4dCAhPSAo
RHJhd0NvbnRleHQpMCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9u
IGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFn
aWNrL2RyYXcuYyIsIDMwNzYsICJjb250ZXh0ICE9IChEcmF3Q29udGV4dClOVUxMIiksIDApKSk7
CiAgKCh2b2lkKSAoKGNvbnRleHQtPnNpZ25hdHVyZSA9PSAweGFiYWNhZGFiVUwpID8gMCA6IChf
X2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVz
ZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAzMDc3LCAiY29u
dGV4dC0+c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVyZSIpLCAwKSkpOwoKICBpZiAoKGNvbnRl
eHQtPnBhdGhfb3BlcmF0aW9uICE9IFBhdGhDdXJ2ZVRvU21vb3RoT3BlcmF0aW9uKQogICAgICB8
fCAoY29udGV4dC0+cGF0aF9tb2RlICE9IG1vZGUpKQogICAgewogICAgICBjb250ZXh0LT5wYXRo
X29wZXJhdGlvbiA9IFBhdGhDdXJ2ZVRvU21vb3RoT3BlcmF0aW9uOwogICAgICBjb250ZXh0LT5w
YXRoX21vZGUgPSBtb2RlOwogICAgICBNdmdBdXRvV3JhcFByaW50Zihjb250ZXh0LCAiJWMlLjRn
LCUuNGcgJS40ZywlLjRnIiwKICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSA9PSBBYnNvbHV0
ZVBhdGhNb2RlID8gJ1MnIDogJ3MnLCB4MiwgeTIsIHgsIHkpOwogICAgfQogIGVsc2UKICAgIE12
Z0F1dG9XcmFwUHJpbnRmKGNvbnRleHQsICIgJS40ZywlLjRnICUuNGcsJS40ZyIsIHgyLCB5Miwg
eCwgeSk7Cn0KIHZvaWQgRHJhd1BhdGhDdXJ2ZVRvU21vb3RoQWJzb2x1dGUoRHJhd0NvbnRleHQg
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZG91YmxlIHgyLCBjb25zdCBkb3VibGUgeTIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSB4LCBjb25zdCBkb3VibGUgeSkK
ewogICgodm9pZCkgKChjb250ZXh0ICE9IChEcmF3Q29udGV4dCkwKSA/IDAgOiAoX19lcHJpbnRm
ICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9n
cmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMzA5NCwgImNvbnRleHQgIT0g
KERyYXdDb250ZXh0KU5VTEwiKSwgMCkpKTsKICAoKHZvaWQpICgoY29udGV4dC0+c2lnbmF0dXJl
ID09IDB4YWJhY2FkYWJVTCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0
aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2sv
bWFnaWNrL2RyYXcuYyIsIDMwOTUsICJjb250ZXh0LT5zaWduYXR1cmUgPT0gTWFnaWNrU2lnbmF0
dXJlIiksIDApKSk7CgogIERyYXdQYXRoQ3VydmVUb1Ntb290aChjb250ZXh0LCBBYnNvbHV0ZVBh
dGhNb2RlLCB4MiwgeTIsIHgsIHkpOwp9CiMgMzE0MyAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBo
aWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiCiB2b2lkIERyYXdQYXRoQ3VydmVUb1Nt
b290aFJlbGF0aXZlKERyYXdDb250ZXh0IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSB4MiwgY29uc3QgZG91YmxlIHky
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBk
b3VibGUgeCwgY29uc3QgZG91YmxlIHkpCnsKICAoKHZvaWQpICgoY29udGV4dCAhPSAoRHJhd0Nv
bnRleHQpMCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydc
biIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2Ry
YXcuYyIsIDMxNDcsICJjb250ZXh0ICE9IChEcmF3Q29udGV4dClOVUxMIiksIDApKSk7CiAgKCh2
b2lkKSAoKGNvbnRleHQtPnNpZ25hdHVyZSA9PSAweGFiYWNhZGFiVUwpID8gMCA6IChfX2Vwcmlu
dGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3Jj
L2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAzMTQ4LCAiY29udGV4dC0+
c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVyZSIpLCAwKSkpOwoKICBEcmF3UGF0aEN1cnZlVG9T
bW9vdGgoY29udGV4dCwgUmVsYXRpdmVQYXRoTW9kZSwgeDIsIHkyLCB4LCB5KTsKfQojIDMyMDMg
Ii9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5j
IgpzdGF0aWMgdm9pZCBEcmF3UGF0aEVsbGlwdGljQXJjKERyYXdDb250ZXh0IGNvbnRleHQsIGNv
bnN0IFBhdGhNb2RlIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZG91YmxlIHJ4LCBjb25zdCBkb3VibGUgcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZG91YmxlIHhfYXhpc19yb3RhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgbGFyZ2VfYXJjX2ZsYWcsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IHN3ZWVwX2ZsYWcsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZG91YmxlIHgsIGNvbnN0IGRvdWJsZSB5KQp7CiAgKCh2b2lkKSAo
KGNvbnRleHQgIT0gKERyYXdDb250ZXh0KTApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFp
bGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBo
aWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAzMjEwLCAiY29udGV4dCAhPSAoRHJhd0NvbnRleHQp
TlVMTCIpLCAwKSkpOwogICgodm9pZCkgKChjb250ZXh0LT5zaWduYXR1cmUgPT0gMHhhYmFjYWRh
YlVMKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwg
Ii9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5j
IiwgMzIxMSwgImNvbnRleHQtPnNpZ25hdHVyZSA9PSBNYWdpY2tTaWduYXR1cmUiKSwgMCkpKTsK
CiAgaWYgKChjb250ZXh0LT5wYXRoX29wZXJhdGlvbiAhPSBQYXRoRWxsaXB0aWNBcmNPcGVyYXRp
b24pCiAgICAgIHx8IChjb250ZXh0LT5wYXRoX21vZGUgIT0gbW9kZSkpCiAgICB7CiAgICAgIGNv
bnRleHQtPnBhdGhfb3BlcmF0aW9uID0gUGF0aEVsbGlwdGljQXJjT3BlcmF0aW9uOwogICAgICBj
b250ZXh0LT5wYXRoX21vZGUgPSBtb2RlOwogICAgICBNdmdBdXRvV3JhcFByaW50Zihjb250ZXh0
LCAiJWMlLjRnLCUuNGcgJS40ZyAldSAldSAlLjRnLCUuNGciLAogICAgICAgICAgICAgICAgICAg
ICAgICBtb2RlID09IEFic29sdXRlUGF0aE1vZGUgPyAnQScgOiAnYScsIHJ4LCByeSwgeF9heGlz
X3JvdGF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICBsYXJnZV9hcmNfZmxhZywgc3dlZXBf
ZmxhZywgeCwgeSk7CiAgICB9CiAgZWxzZQogICAgTXZnQXV0b1dyYXBQcmludGYoY29udGV4dCwg
IiAlLjRnLCUuNGcgJS40ZyAldSAldSAlLjRnLCUuNGciLCByeCwgcnksCiAgICAgICAgICAgICAg
ICAgICAgICB4X2F4aXNfcm90YXRpb24sIGxhcmdlX2FyY19mbGFnLCBzd2VlcF9mbGFnLCB4LCB5
KTsKfQogdm9pZCBEcmF3UGF0aEVsbGlwdGljQXJjQWJzb2x1dGUoRHJhd0NvbnRleHQgY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRv
dWJsZSByeCwgY29uc3QgZG91YmxlIHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZG91YmxlIHhfYXhpc19yb3RhdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsYXJnZV9hcmNf
ZmxhZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBzd2VlcF9mbGFnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZG91YmxlIHgsIGNvbnN0IGRvdWJsZSB5KQp7CiAgKCh2b2lkKSAoKGNv
bnRleHQgIT0gKERyYXdDb250ZXh0KTApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVk
IGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNz
TWFnaWNrL21hZ2ljay9kcmF3LmMiLCAzMjMzLCAiY29udGV4dCAhPSAoRHJhd0NvbnRleHQpTlVM
TCIpLCAwKSkpOwogICgodm9pZCkgKChjb250ZXh0LT5zaWduYXR1cmUgPT0gMHhhYmFjYWRhYlVM
KSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9o
b21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwg
MzIzNCwgImNvbnRleHQtPnNpZ25hdHVyZSA9PSBNYWdpY2tTaWduYXR1cmUiKSwgMCkpKTsKCiAg
RHJhd1BhdGhFbGxpcHRpY0FyYyhjb250ZXh0LCBBYnNvbHV0ZVBhdGhNb2RlLCByeCwgcnksIHhf
YXhpc19yb3RhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgIGxhcmdlX2FyY19mbGFnLCBzd2Vl
cF9mbGFnLCB4LCB5KTsKfQojIDMyODkgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFw
aGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgogdm9pZCBEcmF3UGF0aEVsbGlwdGljQXJjUmVsYXRp
dmUoRHJhd0NvbnRleHQgY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSByeCwgY29uc3QgZG91YmxlIHJ5LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG91YmxlIHhfYXhpc19y
b3RhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBsYXJnZV9hcmNfZmxhZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzd2VlcF9mbGFnLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG91YmxlIHgsIGNvbnN0IGRvdWJs
ZSB5KQp7CiAgRHJhd1BhdGhFbGxpcHRpY0FyYyhjb250ZXh0LCBSZWxhdGl2ZVBhdGhNb2RlLCBy
eCwgcnksIHhfYXhpc19yb3RhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgIGxhcmdlX2FyY19m
bGFnLCBzd2VlcF9mbGFnLCB4LCB5KTsKfQojIDMzMjIgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFw
aGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgogdm9pZCBEcmF3UGF0aEZpbmlzaChE
cmF3Q29udGV4dCBjb250ZXh0KQp7CiAgKCh2b2lkKSAoKGNvbnRleHQgIT0gKERyYXdDb250ZXh0
KTApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAi
L2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMi
LCAzMzI0LCAiY29udGV4dCAhPSAoRHJhd0NvbnRleHQpTlVMTCIpLCAwKSkpOwogICgodm9pZCkg
KChjb250ZXh0LT5zaWduYXR1cmUgPT0gMHhhYmFjYWRhYlVMKSA/IDAgOiAoX19lcHJpbnRmICgi
JXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFw
aGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMzMyNSwgImNvbnRleHQtPnNpZ25h
dHVyZSA9PSBNYWdpY2tTaWduYXR1cmUiKSwgMCkpKTsKCiAgTXZnUHJpbnRmKGNvbnRleHQsICIn
XG4iKTsKICBjb250ZXh0LT5wYXRoX29wZXJhdGlvbiA9IFBhdGhEZWZhdWx0T3BlcmF0aW9uOwog
IGNvbnRleHQtPnBhdGhfbW9kZSA9IERlZmF1bHRQYXRoTW9kZTsKfQojIDMzNjEgIi9ob21lL2Jm
cmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgpzdGF0aWMg
dm9pZCBEcmF3UGF0aExpbmVUbyhEcmF3Q29udGV4dCBjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBQYXRoTW9kZSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBkb3VibGUgeCwgY29uc3QgZG91YmxlIHkpCnsKICAoKHZvaWQpICgoY29udGV4dCAh
PSAoRHJhd0NvbnRleHQpMCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0
aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2sv
bWFnaWNrL2RyYXcuYyIsIDMzNjUsICJjb250ZXh0ICE9IChEcmF3Q29udGV4dClOVUxMIiksIDAp
KSk7CiAgKCh2b2lkKSAoKGNvbnRleHQtPnNpZ25hdHVyZSA9PSAweGFiYWNhZGFiVUwpID8gMCA6
IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZy
aWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAzMzY2LCAi
Y29udGV4dC0+c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVyZSIpLCAwKSkpOwoKICBpZiAoKGNv
bnRleHQtPnBhdGhfb3BlcmF0aW9uICE9IFBhdGhMaW5lVG9PcGVyYXRpb24pCiAgICAgIHx8IChj
b250ZXh0LT5wYXRoX21vZGUgIT0gbW9kZSkpCiAgICB7CiAgICAgIGNvbnRleHQtPnBhdGhfb3Bl
cmF0aW9uID0gUGF0aExpbmVUb09wZXJhdGlvbjsKICAgICAgY29udGV4dC0+cGF0aF9tb2RlID0g
bW9kZTsKICAgICAgTXZnQXV0b1dyYXBQcmludGYoY29udGV4dCwgIiVjJS40ZywlLjRnIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgbW9kZSA9PSBBYnNvbHV0ZVBhdGhNb2RlID8gJ0wnIDogJ2wn
LCB4LCB5KTsKICAgIH0KICBlbHNlCiAgICBNdmdBdXRvV3JhcFByaW50Zihjb250ZXh0LCAiICUu
NGcsJS40ZyIsIHgsIHkpOwp9CiB2b2lkIERyYXdQYXRoTGluZVRvQWJzb2x1dGUoRHJhd0NvbnRl
eHQgY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBkb3VibGUgeCwgY29uc3QgZG91YmxlIHkpCnsKICAoKHZvaWQpICgoY29udGV4dCAhPSAoRHJh
d0NvbnRleHQpMCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAl
cydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNr
L2RyYXcuYyIsIDMzODIsICJjb250ZXh0ICE9IChEcmF3Q29udGV4dClOVUxMIiksIDApKSk7CiAg
KCh2b2lkKSAoKGNvbnRleHQtPnNpZ25hdHVyZSA9PSAweGFiYWNhZGFiVUwpID8gMCA6IChfX2Vw
cmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4v
c3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAzMzgzLCAiY29udGV4
dC0+c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVyZSIpLCAwKSkpOwoKICBEcmF3UGF0aExpbmVU
byhjb250ZXh0LCBBYnNvbHV0ZVBhdGhNb2RlLCB4LCB5KTsKfQojIDM0MTcgIi9ob21lL2Jmcmll
c2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgogdm9pZCBEcmF3
UGF0aExpbmVUb1JlbGF0aXZlKERyYXdDb250ZXh0IGNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG91YmxlIHgsIGNvbnN0IGRvdWJsZSB5KQp7
CiAgKCh2b2lkKSAoKGNvbnRleHQgIT0gKERyYXdDb250ZXh0KTApID8gMCA6IChfX2VwcmludGYg
KCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dy
YXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAzNDIwLCAiY29udGV4dCAhPSAo
RHJhd0NvbnRleHQpTlVMTCIpLCAwKSkpOwogICgodm9pZCkgKChjb250ZXh0LT5zaWduYXR1cmUg
PT0gMHhhYmFjYWRhYlVMKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRp
b24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9t
YWdpY2svZHJhdy5jIiwgMzQyMSwgImNvbnRleHQtPnNpZ25hdHVyZSA9PSBNYWdpY2tTaWduYXR1
cmUiKSwgMCkpKTsKCiAgRHJhd1BhdGhMaW5lVG8oY29udGV4dCwgUmVsYXRpdmVQYXRoTW9kZSwg
eCwgeSk7Cn0KIyAzNDU0ICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdp
Y2svbWFnaWNrL2RyYXcuYyIKc3RhdGljIHZvaWQgRHJhd1BhdGhMaW5lVG9Ib3Jpem9udGFsKERy
YXdDb250ZXh0IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBQYXRoTW9kZSBtb2RlLCBjb25zdCBkb3VibGUgeCkKewogICgodm9pZCkgKChjb250ZXh0
ICE9IChEcmF3Q29udGV4dCkwKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3Nl
cnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2lj
ay9tYWdpY2svZHJhdy5jIiwgMzQ1NywgImNvbnRleHQgIT0gKERyYXdDb250ZXh0KU5VTEwiKSwg
MCkpKTsKICAoKHZvaWQpICgoY29udGV4dC0+c2lnbmF0dXJlID09IDB4YWJhY2FkYWJVTCkgPyAw
IDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9i
ZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDM0NTgs
ICJjb250ZXh0LT5zaWduYXR1cmUgPT0gTWFnaWNrU2lnbmF0dXJlIiksIDApKSk7CgogIGlmICgo
Y29udGV4dC0+cGF0aF9vcGVyYXRpb24gIT0gUGF0aExpbmVUb0hvcml6b250YWxPcGVyYXRpb24p
CiAgICAgIHx8IChjb250ZXh0LT5wYXRoX21vZGUgIT0gbW9kZSkpCiAgICB7CiAgICAgIGNvbnRl
eHQtPnBhdGhfb3BlcmF0aW9uID0gUGF0aExpbmVUb0hvcml6b250YWxPcGVyYXRpb247CiAgICAg
IGNvbnRleHQtPnBhdGhfbW9kZSA9IG1vZGU7CiAgICAgIE12Z0F1dG9XcmFwUHJpbnRmKGNvbnRl
eHQsICIlYyUuNGciLAogICAgICAgICAgICAgICAgICAgICAgICBtb2RlID09IEFic29sdXRlUGF0
aE1vZGUgPyAnSCcgOiAnaCcsIHgpOwogICAgfQogIGVsc2UKICAgIE12Z0F1dG9XcmFwUHJpbnRm
KGNvbnRleHQsICIgJS40ZyIsIHgpOwp9CiB2b2lkIERyYXdQYXRoTGluZVRvSG9yaXpvbnRhbEFi
c29sdXRlKERyYXdDb250ZXh0IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSB4KQp7CiAgKCh2b2lkKSAoKGNvbnRl
eHQgIT0gKERyYXdDb250ZXh0KTApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFz
c2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFn
aWNrL21hZ2ljay9kcmF3LmMiLCAzNDc0LCAiY29udGV4dCAhPSAoRHJhd0NvbnRleHQpTlVMTCIp
LCAwKSkpOwogICgodm9pZCkgKChjb250ZXh0LT5zaWduYXR1cmUgPT0gMHhhYmFjYWRhYlVMKSA/
IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21l
L2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMzQ3
NSwgImNvbnRleHQtPnNpZ25hdHVyZSA9PSBNYWdpY2tTaWduYXR1cmUiKSwgMCkpKTsKCiAgRHJh
d1BhdGhMaW5lVG9Ib3Jpem9udGFsKGNvbnRleHQsIEFic29sdXRlUGF0aE1vZGUsIHgpOwp9CiMg
MzUwNiAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9k
cmF3LmMiCiB2b2lkIERyYXdQYXRoTGluZVRvSG9yaXpvbnRhbFJlbGF0aXZlKERyYXdDb250ZXh0
IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGRvdWJsZSB4KQp7CiAgRHJhd1BhdGhMaW5lVG9Ib3Jpem9udGFsKGNvbnRleHQs
IFJlbGF0aXZlUGF0aE1vZGUsIHgpOwp9CiMgMzUzOSAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBo
aWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiCnN0YXRpYyB2b2lkIERyYXdQYXRoTGlu
ZVRvVmVydGljYWwoRHJhd0NvbnRleHQgY29udGV4dCwgY29uc3QgUGF0aE1vZGUgbW9kZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb3VibGUgeSkKewogICgodm9p
ZCkgKChjb250ZXh0ICE9IChEcmF3Q29udGV4dCkwKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6
IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9H
cmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMzU0MiwgImNvbnRleHQgIT0gKERyYXdDb250
ZXh0KU5VTEwiKSwgMCkpKTsKICAoKHZvaWQpICgoY29udGV4dC0+c2lnbmF0dXJlID09IDB4YWJh
Y2FkYWJVTCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydc
biIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2Ry
YXcuYyIsIDM1NDMsICJjb250ZXh0LT5zaWduYXR1cmUgPT0gTWFnaWNrU2lnbmF0dXJlIiksIDAp
KSk7CgogIGlmICgoY29udGV4dC0+cGF0aF9vcGVyYXRpb24gIT0gUGF0aExpbmVUb1ZlcnRpY2Fs
T3BlcmF0aW9uKQogICAgICB8fCAoY29udGV4dC0+cGF0aF9tb2RlICE9IG1vZGUpKQogICAgewog
ICAgICBjb250ZXh0LT5wYXRoX29wZXJhdGlvbiA9IFBhdGhMaW5lVG9WZXJ0aWNhbE9wZXJhdGlv
bjsKICAgICAgY29udGV4dC0+cGF0aF9tb2RlID0gbW9kZTsKICAgICAgTXZnQXV0b1dyYXBQcmlu
dGYoY29udGV4dCwgIiVjJS40ZyIsCiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGUgPT0gQWJz
b2x1dGVQYXRoTW9kZSA/ICdWJyA6ICd2JywgeSk7CiAgICB9CiAgZWxzZQogICAgTXZnQXV0b1dy
YXBQcmludGYoY29udGV4dCwgIiAlLjRnIiwgeSk7Cn0KIHZvaWQgRHJhd1BhdGhMaW5lVG9WZXJ0
aWNhbEFic29sdXRlKERyYXdDb250ZXh0IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb3VibGUgeSkKewogICgodm9pZCkgKChj
b250ZXh0ICE9IChEcmF3Q29udGV4dCkwKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxl
ZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGlj
c01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMzU1OSwgImNvbnRleHQgIT0gKERyYXdDb250ZXh0KU5V
TEwiKSwgMCkpKTsKICAoKHZvaWQpICgoY29udGV4dC0+c2lnbmF0dXJlID09IDB4YWJhY2FkYWJV
TCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIv
aG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIs
IDM1NjAsICJjb250ZXh0LT5zaWduYXR1cmUgPT0gTWFnaWNrU2lnbmF0dXJlIiksIDApKSk7Cgog
IERyYXdQYXRoTGluZVRvVmVydGljYWwoY29udGV4dCwgQWJzb2x1dGVQYXRoTW9kZSwgeSk7Cn0K
IyAzNTkyICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNr
L2RyYXcuYyIKIHZvaWQgRHJhd1BhdGhMaW5lVG9WZXJ0aWNhbFJlbGF0aXZlKERyYXdDb250ZXh0
IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBkb3VibGUgeSkKewogICgodm9pZCkgKChjb250ZXh0ICE9IChEcmF3Q29udGV4dCkw
KSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9o
b21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwg
MzU5NSwgImNvbnRleHQgIT0gKERyYXdDb250ZXh0KU5VTEwiKSwgMCkpKTsKICAoKHZvaWQpICgo
Y29udGV4dC0+c2lnbmF0dXJlID09IDB4YWJhY2FkYWJVTCkgPyAwIDogKF9fZXByaW50ZiAoIiVz
OiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhp
Y3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDM1OTYsICJjb250ZXh0LT5zaWduYXR1
cmUgPT0gTWFnaWNrU2lnbmF0dXJlIiksIDApKSk7CgogIERyYXdQYXRoTGluZVRvVmVydGljYWwo
Y29udGV4dCwgUmVsYXRpdmVQYXRoTW9kZSwgeSk7Cn0KIyAzNjI5ICIvaG9tZS9iZnJpZXNlbi9z
cmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIKIHN0YXRpYyB2b2lkIERy
YXdQYXRoTW92ZVRvKERyYXdDb250ZXh0IGNvbnRleHQsIGNvbnN0IFBhdGhNb2RlIG1vZGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSB4LCBjb25zdCBkb3VibGUgeSkK
ewogICgodm9pZCkgKChjb250ZXh0ICE9IChEcmF3Q29udGV4dCkwKSA/IDAgOiAoX19lcHJpbnRm
ICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9n
cmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMzYzMiwgImNvbnRleHQgIT0g
KERyYXdDb250ZXh0KU5VTEwiKSwgMCkpKTsKICAoKHZvaWQpICgoY29udGV4dC0+c2lnbmF0dXJl
ID09IDB4YWJhY2FkYWJVTCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0
aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2sv
bWFnaWNrL2RyYXcuYyIsIDM2MzMsICJjb250ZXh0LT5zaWduYXR1cmUgPT0gTWFnaWNrU2lnbmF0
dXJlIiksIDApKSk7CgogIGlmICgoY29udGV4dC0+cGF0aF9vcGVyYXRpb24gIT0gUGF0aE1vdmVU
b09wZXJhdGlvbikKICAgICAgfHwgKGNvbnRleHQtPnBhdGhfbW9kZSAhPSBtb2RlKSkKICAgIHsK
ICAgICAgY29udGV4dC0+cGF0aF9vcGVyYXRpb24gPSBQYXRoTW92ZVRvT3BlcmF0aW9uOwogICAg
ICBjb250ZXh0LT5wYXRoX21vZGUgPSBtb2RlOwogICAgICBNdmdBdXRvV3JhcFByaW50Zihjb250
ZXh0LCAiJWMlLjRnLCUuNGciLAogICAgICAgICAgICAgICAgICAgICAgICBtb2RlID09IEFic29s
dXRlUGF0aE1vZGUgPyAnTScgOiAnbScsIHgsIHkpOwogICAgfQogIGVsc2UKICAgIE12Z0F1dG9X
cmFwUHJpbnRmKGNvbnRleHQsICIgJS40ZywlLjRnIiwgeCwgeSk7Cn0KCiB2b2lkIERyYXdQYXRo
TW92ZVRvQWJzb2x1dGUoRHJhd0NvbnRleHQgY29udGV4dCwgY29uc3QgZG91YmxlIHgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG91YmxlIHkpCnsKICAo
KHZvaWQpICgoY29udGV4dCAhPSAoRHJhd0NvbnRleHQpMCkgPyAwIDogKF9fZXByaW50ZiAoIiVz
OiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhp
Y3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDM2NTAsICJjb250ZXh0ICE9IChEcmF3
Q29udGV4dClOVUxMIiksIDApKSk7CiAgKCh2b2lkKSAoKGNvbnRleHQtPnNpZ25hdHVyZSA9PSAw
eGFiYWNhZGFiVUwpID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBg
JXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2lj
ay9kcmF3LmMiLCAzNjUxLCAiY29udGV4dC0+c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVyZSIp
LCAwKSkpOwoKICBEcmF3UGF0aE1vdmVUbyhjb250ZXh0LCBBYnNvbHV0ZVBhdGhNb2RlLCB4LCB5
KTsKfQojIDM2ODUgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9t
YWdpY2svZHJhdy5jIgogdm9pZCBEcmF3UGF0aE1vdmVUb1JlbGF0aXZlKERyYXdDb250ZXh0IGNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG91
YmxlIHgsIGNvbnN0IGRvdWJsZSB5KQp7CiAgKCh2b2lkKSAoKGNvbnRleHQgIT0gKERyYXdDb250
ZXh0KTApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4i
LCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3
LmMiLCAzNjg4LCAiY29udGV4dCAhPSAoRHJhd0NvbnRleHQpTlVMTCIpLCAwKSkpOwogICgodm9p
ZCkgKChjb250ZXh0LT5zaWduYXR1cmUgPT0gMHhhYmFjYWRhYlVMKSA/IDAgOiAoX19lcHJpbnRm
ICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9n
cmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMzY4OSwgImNvbnRleHQtPnNp
Z25hdHVyZSA9PSBNYWdpY2tTaWduYXR1cmUiKSwgMCkpKTsKCiAgRHJhd1BhdGhNb3ZlVG8oY29u
dGV4dCwgUmVsYXRpdmVQYXRoTW9kZSwgeCwgeSk7Cn0KIyAzNzIwICIvaG9tZS9iZnJpZXNlbi9z
cmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIKIHZvaWQgRHJhd1BhdGhT
dGFydChEcmF3Q29udGV4dCBjb250ZXh0KQp7CiAgKCh2b2lkKSAoKGNvbnRleHQgIT0gKERyYXdD
b250ZXh0KTApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMn
XG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9k
cmF3LmMiLCAzNzIyLCAiY29udGV4dCAhPSAoRHJhd0NvbnRleHQpTlVMTCIpLCAwKSkpOwogICgo
dm9pZCkgKChjb250ZXh0LT5zaWduYXR1cmUgPT0gMHhhYmFjYWRhYlVMKSA/IDAgOiAoX19lcHJp
bnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3Ny
Yy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMzcyMywgImNvbnRleHQt
PnNpZ25hdHVyZSA9PSBNYWdpY2tTaWduYXR1cmUiKSwgMCkpKTsKCiAgTXZnUHJpbnRmKGNvbnRl
eHQsICJwYXRoICciKTsKICBjb250ZXh0LT5wYXRoX29wZXJhdGlvbiA9IFBhdGhEZWZhdWx0T3Bl
cmF0aW9uOwogIGNvbnRleHQtPnBhdGhfbW9kZSA9IERlZmF1bHRQYXRoTW9kZTsKfQojIDM3NTcg
Ii9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5j
Igogdm9pZCBEcmF3UG9pbnQoRHJhd0NvbnRleHQgY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGRvdWJsZSB4LCBjb25zdCBkb3VibGUgeSkKewogICgodm9pZCkgKChj
b250ZXh0ICE9IChEcmF3Q29udGV4dCkwKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxl
ZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGlj
c01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMzc2MCwgImNvbnRleHQgIT0gKERyYXdDb250ZXh0KU5V
TEwiKSwgMCkpKTsKICAoKHZvaWQpICgoY29udGV4dC0+c2lnbmF0dXJlID09IDB4YWJhY2FkYWJV
TCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIv
aG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIs
IDM3NjEsICJjb250ZXh0LT5zaWduYXR1cmUgPT0gTWFnaWNrU2lnbmF0dXJlIiksIDApKSk7Cgog
IE12Z1ByaW50Zihjb250ZXh0LCAicG9pbnQgJS40ZywlLjRnXG4iLCB4LCB5KTsKfQojIDM3OTUg
Ii9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5j
Igogdm9pZCBEcmF3UG9seWdvbihEcmF3Q29udGV4dCBjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzaXplX3QgbnVtX2Nvb3JkcywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgUG9pbnRJbmZvICogY29vcmRpbmF0ZXMpCnsKICAoKHZvaWQpICgo
Y29udGV4dCAhPSAoRHJhd0NvbnRleHQpMCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWls
ZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhp
Y3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDM3OTksICJjb250ZXh0ICE9IChEcmF3Q29udGV4dClO
VUxMIiksIDApKSk7CiAgKCh2b2lkKSAoKGNvbnRleHQtPnNpZ25hdHVyZSA9PSAweGFiYWNhZGFi
VUwpID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAi
L2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMi
LCAzODAwLCAiY29udGV4dC0+c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVyZSIpLCAwKSkpOwoK
ICBNdmdBcHBlbmRQb2ludHNDb21tYW5kKGNvbnRleHQsInBvbHlnb24iLG51bV9jb29yZHMsY29v
cmRpbmF0ZXMpOwp9CiMgMzgzNCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNz
TWFnaWNrL21hZ2ljay9kcmF3LmMiCiB2b2lkIERyYXdQb2x5bGluZShEcmF3Q29udGV4dCBjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IG51bV9jb29y
ZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQb2ludEluZm8gKiBjb29y
ZGluYXRlcykKewogICgodm9pZCkgKChjb250ZXh0ICE9IChEcmF3Q29udGV4dCkwKSA/IDAgOiAo
X19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmll
c2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMzgzOCwgImNv
bnRleHQgIT0gKERyYXdDb250ZXh0KU5VTEwiKSwgMCkpKTsKICAoKHZvaWQpICgoY29udGV4dC0+
c2lnbmF0dXJlID09IDB4YWJhY2FkYWJVTCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWls
ZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhp
Y3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDM4MzksICJjb250ZXh0LT5zaWduYXR1cmUgPT0gTWFn
aWNrU2lnbmF0dXJlIiksIDApKSk7CgogIE12Z0FwcGVuZFBvaW50c0NvbW1hbmQoY29udGV4dCwi
cG9seWxpbmUiLG51bV9jb29yZHMsY29vcmRpbmF0ZXMpOwp9CiMgMzg2NiAiL2hvbWUvYmZyaWVz
ZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiCiB2b2lkIERyYXdQ
b3BDbGlwUGF0aChEcmF3Q29udGV4dCBjb250ZXh0KQp7CiAgKCh2b2lkKSAoKGNvbnRleHQgIT0g
KERyYXdDb250ZXh0KTApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlv
biBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21h
Z2ljay9kcmF3LmMiLCAzODY4LCAiY29udGV4dCAhPSAoRHJhd0NvbnRleHQpTlVMTCIpLCAwKSkp
OwogICgodm9pZCkgKChjb250ZXh0LT5zaWduYXR1cmUgPT0gMHhhYmFjYWRhYlVMKSA/IDAgOiAo
X19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmll
c2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgMzg2OSwgImNv
bnRleHQtPnNpZ25hdHVyZSA9PSBNYWdpY2tTaWduYXR1cmUiKSwgMCkpKTsKCiAgaWYoY29udGV4
dC0+aW5kZW50X2RlcHRoID4gMCkKICAgIGNvbnRleHQtPmluZGVudF9kZXB0aC0tOwogIE12Z1By
aW50Zihjb250ZXh0LCAicG9wIGNsaXAtcGF0aFxuIik7Cn0KIyAzODk4ICIvaG9tZS9iZnJpZXNl
bi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIKIHZvaWQgRHJhd1Bv
cERlZnMoRHJhd0NvbnRleHQgY29udGV4dCkKewogICgodm9pZCkgKChjb250ZXh0ICE9IChEcmF3
Q29udGV4dCkwKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVz
J1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2sv
ZHJhdy5jIiwgMzkwMCwgImNvbnRleHQgIT0gKERyYXdDb250ZXh0KU5VTEwiKSwgMCkpKTsKICAo
KHZvaWQpICgoY29udGV4dC0+c2lnbmF0dXJlID09IDB4YWJhY2FkYWJVTCkgPyAwIDogKF9fZXBy
aW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9z
cmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDM5MDEsICJjb250ZXh0
LT5zaWduYXR1cmUgPT0gTWFnaWNrU2lnbmF0dXJlIiksIDApKSk7CgogIGlmKGNvbnRleHQtPmlu
ZGVudF9kZXB0aCA+IDApCiAgICBjb250ZXh0LT5pbmRlbnRfZGVwdGgtLTsKICBNdmdQcmludGYo
Y29udGV4dCwgInBvcCBkZWZzXG4iKTsKfQojIDM5MzMgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFw
aGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgogdm9pZCBEcmF3UG9wR3JhcGhpY0Nv
bnRleHQoRHJhd0NvbnRleHQgY29udGV4dCkKewogICgodm9pZCkgKChjb250ZXh0ICE9IChEcmF3
Q29udGV4dCkwKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVz
J1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2sv
ZHJhdy5jIiwgMzkzNSwgImNvbnRleHQgIT0gKERyYXdDb250ZXh0KU5VTEwiKSwgMCkpKTsKICAo
KHZvaWQpICgoY29udGV4dC0+c2lnbmF0dXJlID09IDB4YWJhY2FkYWJVTCkgPyAwIDogKF9fZXBy
aW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9z
cmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDM5MzYsICJjb250ZXh0
LT5zaWduYXR1cmUgPT0gTWFnaWNrU2lnbmF0dXJlIiksIDApKSk7CgogIGlmKGNvbnRleHQtPmlu
ZGV4ID4gMCkKICAgIHsKIyAzOTQ4ICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhp
Y3NNYWdpY2svbWFnaWNrL2RyYXcuYyIKICAgICAgRGVzdHJveURyYXdJbmZvKChjb250ZXh0LT5n
cmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKSk7CiAgICAgIChjb250ZXh0LT5ncmFwaGlj
X2NvbnRleHRbY29udGV4dC0+aW5kZXhdKT0oRHJhd0luZm8qKTA7CiAgICAgIGNvbnRleHQtPmlu
ZGV4LS07CgogICAgICBpZihjb250ZXh0LT5pbmRlbnRfZGVwdGggPiAwKQogICAgICAgIGNvbnRl
eHQtPmluZGVudF9kZXB0aC0tOwogICAgICBNdmdQcmludGYoY29udGV4dCwgInBvcCBncmFwaGlj
LWNvbnRleHRcbiIpOwogICAgfQogIGVsc2UKICAgIHsKICAgICAgeyBpZiAoY29udGV4dC0+aW1h
Z2UtPmV4Y2VwdGlvbi5zZXZlcml0eSA+IChsb25nKURyYXdFcnJvcikgVGhyb3dFeGNlcHRpb24o
JmNvbnRleHQtPmltYWdlLT5leGNlcHRpb24sRHJhd0Vycm9yLCJVbmJhbGFuY2VkR3JhcGhpY0Nv
bnRleHRQdXNoUG9wIiwwKTsgcmV0dXJuOyB9CiAgICB9Cn0KIyAzOTg0ICIvaG9tZS9iZnJpZXNl
bi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIKIHZvaWQgRHJhd1Bv
cFBhdHRlcm4oRHJhd0NvbnRleHQgY29udGV4dCkKewogIGNoYXIKICAgIGdlb21ldHJ5WzIwNTNd
LAogICAga2V5WzIwNTNdOwoKICAoKHZvaWQpICgoY29udGV4dCAhPSAoRHJhd0NvbnRleHQpMCkg
PyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9t
ZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDM5
OTAsICJjb250ZXh0ICE9IChEcmF3Q29udGV4dClOVUxMIiksIDApKSk7CiAgKCh2b2lkKSAoKGNv
bnRleHQtPnNpZ25hdHVyZSA9PSAweGFiYWNhZGFiVUwpID8gMCA6IChfX2VwcmludGYgKCIlczol
dTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNz
L0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCAzOTkxLCAiY29udGV4dC0+c2lnbmF0dXJl
ID09IE1hZ2lja1NpZ25hdHVyZSIpLCAwKSkpOwoKICBpZiggY29udGV4dC0+cGF0dGVybl9pZCA9
PSAwICkKICAgIHsgaWYgKGNvbnRleHQtPmltYWdlLT5leGNlcHRpb24uc2V2ZXJpdHkgPiAobG9u
ZylEcmF3V2FybmluZykgVGhyb3dFeGNlcHRpb24oJmNvbnRleHQtPmltYWdlLT5leGNlcHRpb24s
RHJhd1dhcm5pbmcsIk5vdEN1cnJlbnRseVB1c2hpbmdQYXR0ZXJuRGVmaW5pdGlvbiIsMCk7IHJl
dHVybjsgfTsKCiAgRm9ybWF0U3RyaW5nKGtleSwiWyUuMTAyNHNdIixjb250ZXh0LT5wYXR0ZXJu
X2lkKTsKCiAgKHZvaWQpIFNldEltYWdlQXR0cmlidXRlKGNvbnRleHQtPmltYWdlLGtleSxjb250
ZXh0LT5tdmcrY29udGV4dC0+cGF0dGVybl9vZmZzZXQpOwogIEZvcm1hdFN0cmluZyhnZW9tZXRy
eSwiJWx1eCVsdSUrbGQlK2xkIiwKICAgICAgICAgICAgICAgY29udGV4dC0+cGF0dGVybl9ib3Vu
ZHMud2lkdGgsY29udGV4dC0+cGF0dGVybl9ib3VuZHMuaGVpZ2h0LAogICAgICAgICAgICAgICBj
b250ZXh0LT5wYXR0ZXJuX2JvdW5kcy54LGNvbnRleHQtPnBhdHRlcm5fYm91bmRzLnkpOwogICh2
b2lkKSBTZXRJbWFnZUF0dHJpYnV0ZShjb250ZXh0LT5pbWFnZSxrZXksZ2VvbWV0cnkpOwoKICBM
aWJlcmF0ZU1lbW9yeSggKHZvaWQqKikmY29udGV4dC0+cGF0dGVybl9pZCApOwogIGNvbnRleHQt
PnBhdHRlcm5fb2Zmc2V0ID0gMDsKCiAgY29udGV4dC0+cGF0dGVybl9ib3VuZHMueCA9IDA7CiAg
Y29udGV4dC0+cGF0dGVybl9ib3VuZHMueSA9IDA7CiAgY29udGV4dC0+cGF0dGVybl9ib3VuZHMu
d2lkdGggPSAwOwogIGNvbnRleHQtPnBhdHRlcm5fYm91bmRzLmhlaWdodCA9IDA7CgogIGNvbnRl
eHQtPmZpbHRlcl9vZmYgPSAwOwoKICBpZihjb250ZXh0LT5pbmRlbnRfZGVwdGggPiAwKQogICAg
Y29udGV4dC0+aW5kZW50X2RlcHRoLS07CiAgTXZnUHJpbnRmKGNvbnRleHQsICJwb3AgcGF0dGVy
blxuIik7Cn0KIyA0MDQ2ICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdp
Y2svbWFnaWNrL2RyYXcuYyIKIHZvaWQgRHJhd1B1c2hDbGlwUGF0aChEcmF3Q29udGV4dCBjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNsaXBf
cGF0aF9pZCkKewogICgodm9pZCkgKChjb250ZXh0ICE9IChEcmF3Q29udGV4dCkwKSA/IDAgOiAo
X19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmll
c2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgNDA0OSwgImNv
bnRleHQgIT0gKERyYXdDb250ZXh0KU5VTEwiKSwgMCkpKTsKICAoKHZvaWQpICgoY29udGV4dC0+
c2lnbmF0dXJlID09IDB4YWJhY2FkYWJVTCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWls
ZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhp
Y3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDQwNTAsICJjb250ZXh0LT5zaWduYXR1cmUgPT0gTWFn
aWNrU2lnbmF0dXJlIiksIDApKSk7CiAgKCh2b2lkKSAoKGNsaXBfcGF0aF9pZCAhPSAoY29uc3Qg
Y2hhciAqKSAwKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVz
J1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2sv
ZHJhdy5jIiwgNDA1MSwgImNsaXBfcGF0aF9pZCAhPSAoY29uc3QgY2hhciAqKSBOVUxMIiksIDAp
KSk7CgogIE12Z1ByaW50Zihjb250ZXh0LCAicHVzaCBjbGlwLXBhdGggJXNcbiIsIGNsaXBfcGF0
aF9pZCk7CiAgY29udGV4dC0+aW5kZW50X2RlcHRoKys7Cn0KIyA0MDgxICIvaG9tZS9iZnJpZXNl
bi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIKIHZvaWQgRHJhd1B1
c2hEZWZzKERyYXdDb250ZXh0IGNvbnRleHQpCnsKICAoKHZvaWQpICgoY29udGV4dCAhPSAoRHJh
d0NvbnRleHQpMCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAl
cydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNr
L2RyYXcuYyIsIDQwODMsICJjb250ZXh0ICE9IChEcmF3Q29udGV4dClOVUxMIiksIDApKSk7CiAg
KCh2b2lkKSAoKGNvbnRleHQtPnNpZ25hdHVyZSA9PSAweGFiYWNhZGFiVUwpID8gMCA6IChfX2Vw
cmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4v
c3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCA0MDg0LCAiY29udGV4
dC0+c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVyZSIpLCAwKSkpOwoKICBNdmdQcmludGYoY29u
dGV4dCwgInB1c2ggZGVmc1xuIik7CiAgY29udGV4dC0+aW5kZW50X2RlcHRoKys7Cn0KIyA0MTE1
ICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcu
YyIKIHZvaWQgRHJhd1B1c2hHcmFwaGljQ29udGV4dChEcmF3Q29udGV4dCBjb250ZXh0KQp7CiAg
KCh2b2lkKSAoKGNvbnRleHQgIT0gKERyYXdDb250ZXh0KTApID8gMCA6IChfX2VwcmludGYgKCIl
czoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBo
aWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCA0MTE3LCAiY29udGV4dCAhPSAoRHJh
d0NvbnRleHQpTlVMTCIpLCAwKSkpOwogICgodm9pZCkgKChjb250ZXh0LT5zaWduYXR1cmUgPT0g
MHhhYmFjYWRhYlVMKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24g
YCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdp
Y2svZHJhdy5jIiwgNDExOCwgImNvbnRleHQtPnNpZ25hdHVyZSA9PSBNYWdpY2tTaWduYXR1cmUi
KSwgMCkpKTsKCiAgY29udGV4dC0+aW5kZXgrKzsKICBSZWFjcXVpcmVNZW1vcnkoKHZvaWQgKiop
ICZjb250ZXh0LT5ncmFwaGljX2NvbnRleHQsCiAgICAgICAgICAgICAgICAgIChjb250ZXh0LT5p
bmRleCsxKSpzaXplb2YoRHJhd0luZm8gKikpOwogIGlmIChjb250ZXh0LT5ncmFwaGljX2NvbnRl
eHQgPT0gKERyYXdJbmZvICoqKSAwKQogICAgewogICAgICB7IGlmIChjb250ZXh0LT5pbWFnZS0+
ZXhjZXB0aW9uLnNldmVyaXR5ID4gKGxvbmcpUmVzb3VyY2VMaW1pdEVycm9yKSBUaHJvd0V4Y2Vw
dGlvbigmY29udGV4dC0+aW1hZ2UtPmV4Y2VwdGlvbixSZXNvdXJjZUxpbWl0RXJyb3IsIk1lbW9y
eUFsbG9jYXRpb25GYWlsZWQiLCJVbmFibGVUb0RyYXdPbkltYWdlIik7IHJldHVybjsgfQoKICAg
IH0KICAoY29udGV4dC0+Z3JhcGhpY19jb250ZXh0W2NvbnRleHQtPmluZGV4XSk9CiAgICBDbG9u
ZURyYXdJbmZvKChJbWFnZUluZm8gKikgMCxjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4
dC0+aW5kZXgtMV0pOwogIE12Z1ByaW50Zihjb250ZXh0LCAicHVzaCBncmFwaGljLWNvbnRleHRc
biIpOwogIGNvbnRleHQtPmluZGVudF9kZXB0aCsrOwp9CiMgNDE3NCAiL2hvbWUvYmZyaWVzZW4v
c3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiCiB2b2lkIERyYXdQdXNo
UGF0dGVybihEcmF3Q29udGV4dCBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciAqcGF0dGVybl9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGRvdWJsZSB4LCBjb25zdCBkb3VibGUgeSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGRvdWJsZSB3aWR0aCwgY29uc3QgZG91YmxlIGhlaWdodCkK
ewogICgodm9pZCkgKChjb250ZXh0ICE9IChEcmF3Q29udGV4dCkwKSA/IDAgOiAoX19lcHJpbnRm
ICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9n
cmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgNDE3OSwgImNvbnRleHQgIT0g
KERyYXdDb250ZXh0KU5VTEwiKSwgMCkpKTsKICAoKHZvaWQpICgoY29udGV4dC0+c2lnbmF0dXJl
ID09IDB4YWJhY2FkYWJVTCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0
aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2sv
bWFnaWNrL2RyYXcuYyIsIDQxODAsICJjb250ZXh0LT5zaWduYXR1cmUgPT0gTWFnaWNrU2lnbmF0
dXJlIiksIDApKSk7CiAgKCh2b2lkKSAoKHBhdHRlcm5faWQgIT0gKGNvbnN0IGNoYXIgKikgMCkg
PyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9t
ZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDQx
ODEsICJwYXR0ZXJuX2lkICE9IChjb25zdCBjaGFyICopIE5VTEwiKSwgMCkpKTsKCiAgaWYoIGNv
bnRleHQtPnBhdHRlcm5faWQgIT0gMCApCiAgICB7IGlmIChjb250ZXh0LT5pbWFnZS0+ZXhjZXB0
aW9uLnNldmVyaXR5ID4gKGxvbmcpRHJhd0Vycm9yKSBUaHJvd0V4Y2VwdGlvbigmY29udGV4dC0+
aW1hZ2UtPmV4Y2VwdGlvbixEcmF3RXJyb3IsIkFscmVhZHlQdXNoaW5nUGF0dGVybkRlZmluaXRp
b24iLGNvbnRleHQtPnBhdHRlcm5faWQpOyByZXR1cm47IH07CgoKICBjb250ZXh0LT5maWx0ZXJf
b2ZmID0gMTsKCiAgTXZnUHJpbnRmKGNvbnRleHQsICJwdXNoIHBhdHRlcm4gJXMgJS40ZywlLjRn
ICUuNGcsJS40Z1xuIiwKICAgICAgICAgICAgcGF0dGVybl9pZCwgeCwgeSwgd2lkdGgsIGhlaWdo
dCk7CiAgY29udGV4dC0+aW5kZW50X2RlcHRoKys7CgoKICBjb250ZXh0LT5wYXR0ZXJuX2lkID0g
QWxsb2NhdGVTdHJpbmcocGF0dGVybl9pZCk7CiAgY29udGV4dC0+cGF0dGVybl9ib3VuZHMueCA9
IChsb25nKSBjZWlsKHgtMC41KTsKICBjb250ZXh0LT5wYXR0ZXJuX2JvdW5kcy55ID0gKGxvbmcp
IGNlaWwoeS0wLjUpOwogIGNvbnRleHQtPnBhdHRlcm5fYm91bmRzLndpZHRoID0gKHVuc2lnbmVk
IGxvbmcpIGZsb29yKHdpZHRoKzAuNSk7CiAgY29udGV4dC0+cGF0dGVybl9ib3VuZHMuaGVpZ2h0
ID0gKHVuc2lnbmVkIGxvbmcpIGZsb29yKGhlaWdodCswLjUpOwogIGNvbnRleHQtPnBhdHRlcm5f
b2Zmc2V0ID0gY29udGV4dC0+bXZnX2xlbmd0aDsKfQojIDQyMzMgIi9ob21lL2Jmcmllc2VuL3Ny
Yy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgogdm9pZCBEcmF3UmVjdGFu
Z2xlKERyYXdDb250ZXh0IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZG91YmxlIHgxLCBjb25zdCBkb3VibGUgeTEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZG91YmxlIHgyLCBjb25zdCBkb3VibGUgeTIpCnsKICAoKHZvaWQpICgo
Y29udGV4dCAhPSAoRHJhd0NvbnRleHQpMCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWls
ZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhp
Y3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDQyMzcsICJjb250ZXh0ICE9IChEcmF3Q29udGV4dClO
VUxMIiksIDApKSk7CiAgKCh2b2lkKSAoKGNvbnRleHQtPnNpZ25hdHVyZSA9PSAweGFiYWNhZGFi
VUwpID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAi
L2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMi
LCA0MjM4LCAiY29udGV4dC0+c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVyZSIpLCAwKSkpOwog
IE12Z1ByaW50Zihjb250ZXh0LCAicmVjdGFuZ2xlICUuNGcsJS40ZyAlLjRnLCUuNGdcbiIsIHgx
LCB5MSwgeDIsIHkyKTsKfQojIDQyNjQgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFw
aGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgogaW50IERyYXdSZW5kZXIoY29uc3QgRHJhd0NvbnRl
eHQgY29udGV4dCkKewogICgodm9pZCkgKChjb250ZXh0ICE9IChEcmF3Q29udGV4dCkwKSA/IDAg
OiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jm
cmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgNDI2Niwg
ImNvbnRleHQgIT0gKERyYXdDb250ZXh0KU5VTEwiKSwgMCkpKTsKICAoKHZvaWQpICgoY29udGV4
dC0+c2lnbmF0dXJlID09IDB4YWJhY2FkYWJVTCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBm
YWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3Jh
cGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDQyNjcsICJjb250ZXh0LT5zaWduYXR1cmUgPT0g
TWFnaWNrU2lnbmF0dXJlIiksIDApKSk7CgogIChjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29u
dGV4dC0+aW5kZXhdKS0+cHJpbWl0aXZlID0gY29udGV4dC0+bXZnOwogICh2b2lkKSBMb2dNYWdp
Y2tFdmVudChSZW5kZXJFdmVudCwiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNz
TWFnaWNrL21hZ2ljay9kcmF3LmMiLF9fZnVuY19fLDQyNzAsIk1WRzpcbiclcydcbiIsY29udGV4
dC0+bXZnKTsKICBEcmF3SW1hZ2UoY29udGV4dC0+aW1hZ2UsIChjb250ZXh0LT5ncmFwaGljX2Nv
bnRleHRbY29udGV4dC0+aW5kZXhdKSk7CiAgKGNvbnRleHQtPmdyYXBoaWNfY29udGV4dFtjb250
ZXh0LT5pbmRleF0pLT5wcmltaXRpdmUgPSAoY2hhciAqKSAwOwoKICByZXR1cm4gMTsKfQojIDQz
MDIgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJh
dy5jIgogdm9pZCBEcmF3Um90YXRlKERyYXdDb250ZXh0IGNvbnRleHQsIGNvbnN0IGRvdWJsZSBk
ZWdyZWVzKQp7CiAgQWZmaW5lTWF0cml4CiAgICBhZmZpbmU7CgogICgodm9pZCkgKChjb250ZXh0
ICE9IChEcmF3Q29udGV4dCkwKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3Nl
cnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2lj
ay9tYWdpY2svZHJhdy5jIiwgNDMwNywgImNvbnRleHQgIT0gKERyYXdDb250ZXh0KU5VTEwiKSwg
MCkpKTsKICAoKHZvaWQpICgoY29udGV4dC0+c2lnbmF0dXJlID09IDB4YWJhY2FkYWJVTCkgPyAw
IDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9i
ZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDQzMDgs
ICJjb250ZXh0LT5zaWduYXR1cmUgPT0gTWFnaWNrU2lnbmF0dXJlIiksIDApKSk7CgogIElkZW50
aXR5QWZmaW5lKCZhZmZpbmUpOwogIGFmZmluZS5zeD1jb3MoKDMuMTQxNTkyNjUzNTg5NzkzMjM4
NDYyNjQzMzgzMjc5NTAyODg0MTk3MTY5Mzk5Mzc1MTAqKGZtb2QoZGVncmVlcywzNjAuMCkpLzE4
MC4wKSk7CiAgYWZmaW5lLnJ4PXNpbigoMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjI2NDMzODMyNzk1
MDI4ODQxOTcxNjkzOTkzNzUxMCooZm1vZChkZWdyZWVzLDM2MC4wKSkvMTgwLjApKTsKICBhZmZp
bmUucnk9KC1zaW4oKDMuMTQxNTkyNjUzNTg5NzkzMjM4NDYyNjQzMzgzMjc5NTAyODg0MTk3MTY5
Mzk5Mzc1MTAqKGZtb2QoZGVncmVlcywzNjAuMCkpLzE4MC4wKSkpOwogIGFmZmluZS5zeT1jb3Mo
KDMuMTQxNTkyNjUzNTg5NzkzMjM4NDYyNjQzMzgzMjc5NTAyODg0MTk3MTY5Mzk5Mzc1MTAqKGZt
b2QoZGVncmVlcywzNjAuMCkpLzE4MC4wKSk7CiAgQWRqdXN0QWZmaW5lKCBjb250ZXh0LCAmYWZm
aW5lICk7CgogIE12Z1ByaW50Zihjb250ZXh0LCAicm90YXRlICUuNGdcbiIsIGRlZ3JlZXMpOwp9
CiMgNDM1OSAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2lj
ay9kcmF3LmMiCiB2b2lkIERyYXdSb3VuZFJlY3RhbmdsZShEcmF3Q29udGV4dCBjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHgxLCBkb3VibGUgeTEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgeDIsIGRvdWJsZSB5
MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSByeCwgZG91Ymxl
IHJ5KQp7CiAgKCh2b2lkKSAoKGNvbnRleHQgIT0gKERyYXdDb250ZXh0KTApID8gMCA6IChfX2Vw
cmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4v
c3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCA0MzY0LCAiY29udGV4
dCAhPSAoRHJhd0NvbnRleHQpTlVMTCIpLCAwKSkpOwogICgodm9pZCkgKChjb250ZXh0LT5zaWdu
YXR1cmUgPT0gMHhhYmFjYWRhYlVMKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBh
c3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01h
Z2ljay9tYWdpY2svZHJhdy5jIiwgNDM2NSwgImNvbnRleHQtPnNpZ25hdHVyZSA9PSBNYWdpY2tT
aWduYXR1cmUiKSwgMCkpKTsKCiAgTXZnUHJpbnRmKGNvbnRleHQsICJyb3VuZHJlY3RhbmdsZSAl
LjRnLCUuNGcgJS40ZywlLjRnICUuNGcsJS40Z1xuIiwKICAgICAgICAgICAgeDEsIHkxLCB4Miwg
eTIsIHJ4LCByeSk7Cn0KIyA0Mzk4ICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhp
Y3NNYWdpY2svbWFnaWNrL2RyYXcuYyIKIHZvaWQgRHJhd1NjYWxlKERyYXdDb250ZXh0IGNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb3VibGUgeCwgY29uc3Qg
ZG91YmxlIHkpCnsKICBBZmZpbmVNYXRyaXgKICAgIGFmZmluZTsKCiAgKCh2b2lkKSAoKGNvbnRl
eHQgIT0gKERyYXdDb250ZXh0KTApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFz
c2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFn
aWNrL21hZ2ljay9kcmF3LmMiLCA0NDA0LCAiY29udGV4dCAhPSAoRHJhd0NvbnRleHQpTlVMTCIp
LCAwKSkpOwogICgodm9pZCkgKChjb250ZXh0LT5zaWduYXR1cmUgPT0gMHhhYmFjYWRhYlVMKSA/
IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21l
L2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgNDQw
NSwgImNvbnRleHQtPnNpZ25hdHVyZSA9PSBNYWdpY2tTaWduYXR1cmUiKSwgMCkpKTsKCiAgSWRl
bnRpdHlBZmZpbmUoJmFmZmluZSk7CiAgYWZmaW5lLnN4PXg7CiAgYWZmaW5lLnN5PXk7CiAgQWRq
dXN0QWZmaW5lKCBjb250ZXh0LCAmYWZmaW5lICk7CgogIE12Z1ByaW50Zihjb250ZXh0LCAic2Nh
bGUgJS40ZywlLjRnXG4iLCB4LCB5KTsKfQojIDQ0NDAgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFw
aGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgogdm9pZCBEcmF3U2tld1goRHJhd0Nv
bnRleHQgY29udGV4dCwgY29uc3QgZG91YmxlIGRlZ3JlZXMpCnsKICBBZmZpbmVNYXRyaXgKICAg
IGFmZmluZTsKCiAgKCh2b2lkKSAoKGNvbnRleHQgIT0gKERyYXdDb250ZXh0KTApID8gMCA6IChf
X2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVz
ZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCA0NDQ1LCAiY29u
dGV4dCAhPSAoRHJhd0NvbnRleHQpTlVMTCIpLCAwKSkpOwogICgodm9pZCkgKChjb250ZXh0LT5z
aWduYXR1cmUgPT0gMHhhYmFjYWRhYlVMKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxl
ZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGlj
c01hZ2ljay9tYWdpY2svZHJhdy5jIiwgNDQ0NiwgImNvbnRleHQtPnNpZ25hdHVyZSA9PSBNYWdp
Y2tTaWduYXR1cmUiKSwgMCkpKTsKCiAgSWRlbnRpdHlBZmZpbmUoJmFmZmluZSk7CiAgYWZmaW5l
LnJ5PXRhbigoMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjI2NDMzODMyNzk1MDI4ODQxOTcxNjkzOTkz
NzUxMCooZm1vZChkZWdyZWVzLDM2MC4wKSkvMTgwLjApKTsKICBBZGp1c3RBZmZpbmUoY29udGV4
dCwmYWZmaW5lKTsKCiAgTXZnUHJpbnRmKGNvbnRleHQsICJza2V3WCAlLjRnXG4iLCBkZWdyZWVz
KTsKfQojIDQ0ODAgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9t
YWdpY2svZHJhdy5jIgogdm9pZCBEcmF3U2tld1koRHJhd0NvbnRleHQgY29udGV4dCwgY29uc3Qg
ZG91YmxlIGRlZ3JlZXMpCnsKICBBZmZpbmVNYXRyaXgKICAgIGFmZmluZTsKCiAgKCh2b2lkKSAo
KGNvbnRleHQgIT0gKERyYXdDb250ZXh0KTApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFp
bGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBo
aWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCA0NDg1LCAiY29udGV4dCAhPSAoRHJhd0NvbnRleHQp
TlVMTCIpLCAwKSkpOwogICgodm9pZCkgKChjb250ZXh0LT5zaWduYXR1cmUgPT0gMHhhYmFjYWRh
YlVMKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwg
Ii9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5j
IiwgNDQ4NiwgImNvbnRleHQtPnNpZ25hdHVyZSA9PSBNYWdpY2tTaWduYXR1cmUiKSwgMCkpKTsK
CiAgSWRlbnRpdHlBZmZpbmUoJmFmZmluZSk7CiAgYWZmaW5lLnJ4PXRhbigoMy4xNDE1OTI2NTM1
ODk3OTMyMzg0NjI2NDMzODMyNzk1MDI4ODQxOTcxNjkzOTkzNzUxMCooZm1vZChkZWdyZWVzLDM2
MC4wKSkvMTgwLjApKTsKICBEcmF3QWZmaW5lKGNvbnRleHQsJmFmZmluZSk7CgogIE12Z1ByaW50
Zihjb250ZXh0LCAic2tld1kgJS40Z1xuIiwgZGVncmVlcyk7Cn0KIyA0NTYzICIvaG9tZS9iZnJp
ZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIKIFBpeGVsUGFj
a2V0IERyYXdHZXRTdHJva2VDb2xvcihEcmF3Q29udGV4dCBjb250ZXh0KQp7CiAgKCh2b2lkKSAo
KGNvbnRleHQgIT0gKERyYXdDb250ZXh0KTApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFp
bGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBo
aWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCA0NTY1LCAiY29udGV4dCAhPSAoRHJhd0NvbnRleHQp
TlVMTCIpLCAwKSkpOwogICgodm9pZCkgKChjb250ZXh0LT5zaWduYXR1cmUgPT0gMHhhYmFjYWRh
YlVMKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwg
Ii9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5j
IiwgNDU2NiwgImNvbnRleHQtPnNpZ25hdHVyZSA9PSBNYWdpY2tTaWduYXR1cmUiKSwgMCkpKTsK
CiAgcmV0dXJuIChjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+c3Ry
b2tlOwp9CiMgNDU5NiAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNr
L21hZ2ljay9kcmF3LmMiCiB2b2lkIERyYXdTZXRTdHJva2VDb2xvcihEcmF3Q29udGV4dCBjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUGl4ZWxQYWNr
ZXQgKiBzdHJva2VfY29sb3IpCnsKICBQaXhlbFBhY2tldAogICAgKmN1cnJlbnRfc3Ryb2tlLAog
ICAgbmV3X3N0cm9rZTsKCiAgKCh2b2lkKSAoKGNvbnRleHQgIT0gKERyYXdDb250ZXh0KTApID8g
MCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUv
YmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCA0NjAz
LCAiY29udGV4dCAhPSAoRHJhd0NvbnRleHQpTlVMTCIpLCAwKSkpOwogICgodm9pZCkgKChjb250
ZXh0LT5zaWduYXR1cmUgPT0gMHhhYmFjYWRhYlVMKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6
IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9H
cmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgNDYwNCwgImNvbnRleHQtPnNpZ25hdHVyZSA9
PSBNYWdpY2tTaWduYXR1cmUiKSwgMCkpKTsKICAoKHZvaWQpICgoc3Ryb2tlX2NvbG9yICE9IChj
b25zdCBQaXhlbFBhY2tldCAqKSAwKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBh
c3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01h
Z2ljay9tYWdpY2svZHJhdy5jIiwgNDYwNSwgInN0cm9rZV9jb2xvciAhPSAoY29uc3QgUGl4ZWxQ
YWNrZXQgKikgTlVMTCIpLCAwKSkpOwoKICBuZXdfc3Ryb2tlID0gKnN0cm9rZV9jb2xvcjsKICBp
ZihuZXdfc3Ryb2tlLm9wYWNpdHkgIT0gMjU1VUwpCiAgICBuZXdfc3Ryb2tlLm9wYWNpdHkgPSAo
Y29udGV4dC0+Z3JhcGhpY19jb250ZXh0W2NvbnRleHQtPmluZGV4XSktPm9wYWNpdHk7CgogIGN1
cnJlbnRfc3Ryb2tlID0gJihjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhd
KS0+c3Ryb2tlOwogIGlmKCBjb250ZXh0LT5maWx0ZXJfb2ZmIHx8ICEoKCgoY3VycmVudF9zdHJv
a2UpLT5yZWQgPT0gKCZuZXdfc3Ryb2tlKS0+cmVkKSAmJiAoKGN1cnJlbnRfc3Ryb2tlKS0+Z3Jl
ZW4gPT0gKCZuZXdfc3Ryb2tlKS0+Z3JlZW4pICYmICgoY3VycmVudF9zdHJva2UpLT5ibHVlID09
ICgmbmV3X3N0cm9rZSktPmJsdWUpICYmICgoY3VycmVudF9zdHJva2UpLT5vcGFjaXR5ID09ICgm
bmV3X3N0cm9rZSktPm9wYWNpdHkpKSkgKQogICAgewogICAgICAoY29udGV4dC0+Z3JhcGhpY19j
b250ZXh0W2NvbnRleHQtPmluZGV4XSktPnN0cm9rZSA9IG5ld19zdHJva2U7CgogICAgICBNdmdQ
cmludGYoY29udGV4dCwgInN0cm9rZSAiKTsKICAgICAgTXZnQXBwZW5kQ29sb3IoY29udGV4dCwg
c3Ryb2tlX2NvbG9yKTsKICAgICAgTXZnUHJpbnRmKGNvbnRleHQsICJcbiIpOwogICAgfQp9CiMg
NDY0NyAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9k
cmF3LmMiCiB2b2lkIERyYXdTZXRTdHJva2VDb2xvclN0cmluZyhEcmF3Q29udGV4dCBjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
c3Ryb2tlX2NvbG9yKQp7CiAgUGl4ZWxQYWNrZXQKICAgIHBpeGVsX3BhY2tldDsKCiAgaWYoUXVl
cnlDb2xvckRhdGFiYXNlKHN0cm9rZV9jb2xvciwmcGl4ZWxfcGFja2V0LCZjb250ZXh0LT5pbWFn
ZS0+ZXhjZXB0aW9uKSkKICAgIERyYXdTZXRTdHJva2VDb2xvcihjb250ZXh0LCZwaXhlbF9wYWNr
ZXQpOwp9CiMgNDY4MSAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNr
L21hZ2ljay9kcmF3LmMiCiB2b2lkIERyYXdTZXRTdHJva2VQYXR0ZXJuVVJMKERyYXdDb250ZXh0
IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIHN0cm9rZV91cmwpCnsKICBjaGFyCiAgICBwYXR0ZXJuWzIwNTNdOwoKICAoKHZvaWQp
ICgoY29udGV4dCAhPSAoRHJhd0NvbnRleHQpMCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBm
YWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3Jh
cGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDQ2ODcsICJjb250ZXh0ICE9IChEcmF3Q29udGV4
dClOVUxMIiksIDApKSk7CiAgKCh2b2lkKSAoKGNvbnRleHQtPnNpZ25hdHVyZSA9PSAweGFiYWNh
ZGFiVUwpID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4i
LCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3
LmMiLCA0Njg4LCAiY29udGV4dC0+c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVyZSIpLCAwKSkp
OwogICgodm9pZCkgKChzdHJva2VfdXJsICE9IDApID8gMCA6IChfX2VwcmludGYgKCIlczoldTog
ZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dy
YXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCA0Njg5LCAic3Ryb2tlX3VybCAhPSBOVUxMIiks
IDApKSk7CgogIGlmKHN0cm9rZV91cmxbMF0gIT0gJyMnKQogICAgeyBpZiAoY29udGV4dC0+aW1h
Z2UtPmV4Y2VwdGlvbi5zZXZlcml0eSA+IChsb25nKU9wdGlvbldhcm5pbmcpIFRocm93RXhjZXB0
aW9uKCZjb250ZXh0LT5pbWFnZS0+ZXhjZXB0aW9uLE9wdGlvbldhcm5pbmcsIk5vdEFSZWxhdGl2
ZVVSTCIsc3Ryb2tlX3VybCk7IHJldHVybjsgfTsKCiAgRm9ybWF0U3RyaW5nKHBhdHRlcm4sIlsl
LjEwMjRzXSIsc3Ryb2tlX3VybCsxKTsKCiAgaWYgKEdldEltYWdlQXR0cmlidXRlKGNvbnRleHQt
PmltYWdlLHBhdHRlcm4pID09IChJbWFnZUF0dHJpYnV0ZSAqKSAwKQogICAgewogICAgICB7IGlm
IChjb250ZXh0LT5pbWFnZS0+ZXhjZXB0aW9uLnNldmVyaXR5ID4gKGxvbmcpT3B0aW9uV2Fybmlu
ZykgVGhyb3dFeGNlcHRpb24oJmNvbnRleHQtPmltYWdlLT5leGNlcHRpb24sT3B0aW9uV2Fybmlu
ZywiVVJMTm90Rm91bmQiLHN0cm9rZV91cmwpOyByZXR1cm47IH0KICAgIH0KICBlbHNlCiAgICB7
CiAgICAgIGNoYXIKICAgICAgICBwYXR0ZXJuX3NwZWNbMjA1M107CgogICAgICBGb3JtYXRTdHJp
bmcocGF0dGVybl9zcGVjLCJ1cmwoJS4xMDI0cykiLHN0cm9rZV91cmwpOwoKCgogICAgICBpZiAo
KGNvbnRleHQtPmdyYXBoaWNfY29udGV4dFtjb250ZXh0LT5pbmRleF0pLT5zdHJva2Uub3BhY2l0
eSAhPSAyNTVVTCkKICAgICAgICAoY29udGV4dC0+Z3JhcGhpY19jb250ZXh0W2NvbnRleHQtPmlu
ZGV4XSktPnN0cm9rZS5vcGFjaXR5PShjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+
aW5kZXhdKS0+b3BhY2l0eTsKCiAgICAgIE12Z1ByaW50Zihjb250ZXh0LCAic3Ryb2tlICVzXG4i
LHBhdHRlcm5fc3BlYyk7CiAgICB9Cn0KIyA0NzQwICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhp
Y3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIKIHVuc2lnbmVkIGludCBEcmF3R2V0U3Ry
b2tlQW50aWFsaWFzKERyYXdDb250ZXh0IGNvbnRleHQpCnsKICAoKHZvaWQpICgoY29udGV4dCAh
PSAoRHJhd0NvbnRleHQpMCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0
aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2sv
bWFnaWNrL2RyYXcuYyIsIDQ3NDIsICJjb250ZXh0ICE9IChEcmF3Q29udGV4dClOVUxMIiksIDAp
KSk7CiAgKCh2b2lkKSAoKGNvbnRleHQtPnNpZ25hdHVyZSA9PSAweGFiYWNhZGFiVUwpID8gMCA6
IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZy
aWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCA0NzQzLCAi
Y29udGV4dC0+c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVyZSIpLCAwKSkpOwoKICByZXR1cm4g
KGNvbnRleHQtPmdyYXBoaWNfY29udGV4dFtjb250ZXh0LT5pbmRleF0pLT5zdHJva2VfYW50aWFs
aWFzOwp9CiMgNDc3NiAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNr
L21hZ2ljay9kcmF3LmMiCiB2b2lkIERyYXdTZXRTdHJva2VBbnRpYWxpYXMoRHJhd0NvbnRleHQg
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
bnNpZ25lZCBpbnQgc3Ryb2tlX2FudGlhbGlhcykKewogICgodm9pZCkgKChjb250ZXh0ICE9IChE
cmF3Q29udGV4dCkwKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24g
YCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdp
Y2svZHJhdy5jIiwgNDc3OSwgImNvbnRleHQgIT0gKERyYXdDb250ZXh0KU5VTEwiKSwgMCkpKTsK
ICAoKHZvaWQpICgoY29udGV4dC0+c2lnbmF0dXJlID09IDB4YWJhY2FkYWJVTCkgPyAwIDogKF9f
ZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNl
bi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDQ3ODAsICJjb250
ZXh0LT5zaWduYXR1cmUgPT0gTWFnaWNrU2lnbmF0dXJlIiksIDApKSk7CgogIGlmKGNvbnRleHQt
PmZpbHRlcl9vZmYgfHwgKChjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhd
KS0+c3Ryb2tlX2FudGlhbGlhcyAhPSBzdHJva2VfYW50aWFsaWFzKSkKICAgIHsKICAgICAgKGNv
bnRleHQtPmdyYXBoaWNfY29udGV4dFtjb250ZXh0LT5pbmRleF0pLT5zdHJva2VfYW50aWFsaWFz
ID0gc3Ryb2tlX2FudGlhbGlhczsKCiAgICAgIE12Z1ByaW50Zihjb250ZXh0LCAic3Ryb2tlLWFu
dGlhbGlhcyAlaVxuIiwgc3Ryb2tlX2FudGlhbGlhcyA/IDEgOiAwKTsKICAgIH0KfQojIDQ4MTYg
Ii9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5j
IgogZG91YmxlICpEcmF3R2V0U3Ryb2tlRGFzaEFycmF5KERyYXdDb250ZXh0IGNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpudW1fZWxl
bXMpCnsKICByZWdpc3RlciBjb25zdCBkb3VibGUKICAgICpwOwoKICByZWdpc3RlciBkb3VibGUK
ICAgICpxOwoKICBkb3VibGUKICAgICpkYXNoYXJyYXk7CgogIHVuc2lnbmVkIGludAogICAgaSwK
ICAgIG4gPSAwOwoKICAoKHZvaWQpICgoY29udGV4dCAhPSAoRHJhd0NvbnRleHQpMCkgPyAwIDog
KF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJp
ZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDQ4MzIsICJj
b250ZXh0ICE9IChEcmF3Q29udGV4dClOVUxMIiksIDApKSk7CiAgKCh2b2lkKSAoKGNvbnRleHQt
PnNpZ25hdHVyZSA9PSAweGFiYWNhZGFiVUwpID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFp
bGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBo
aWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCA0ODMzLCAiY29udGV4dC0+c2lnbmF0dXJlID09IE1h
Z2lja1NpZ25hdHVyZSIpLCAwKSkpOwogICgodm9pZCkgKChudW1fZWxlbXMgIT0gKHNpemVfdCAq
KTApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAi
L2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMi
LCA0ODM0LCAibnVtX2VsZW1zICE9IChzaXplX3QgKilOVUxMIiksIDApKSk7CgogIHAgPSAoY29u
dGV4dC0+Z3JhcGhpY19jb250ZXh0W2NvbnRleHQtPmluZGV4XSktPmRhc2hfcGF0dGVybjsKICBp
ZiggcCAhPSAoY29uc3QgZG91YmxlICopIDAgKQogICAgd2hpbGUoICpwKysgIT0gMCkKICAgICAg
bisrOwoKICAqbnVtX2VsZW1zID0gbjsKICBkYXNoYXJyYXkgPSAoZG91YmxlICopMDsKICBpZiAo
biAhPSAwKQogICAgewogICAgICBkYXNoYXJyYXkgPSAoZG91YmxlICopQWNxdWlyZU1lbW9yeShu
KnNpemVvZihkb3VibGUpKTsKICAgICAgcCA9IChjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29u
dGV4dC0+aW5kZXhdKS0+ZGFzaF9wYXR0ZXJuOwogICAgICBxID0gZGFzaGFycmF5OwogICAgICBp
ID0gbjsKICAgICAgd2hpbGUoIGktLSApCiAgICAgICAgKnErKyA9ICpwKys7CiAgICB9CiAgcmV0
dXJuIGRhc2hhcnJheTsKfQojIDQ4ODkgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFw
aGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgogdm9pZCBEcmF3U2V0U3Ryb2tlRGFzaEFycmF5KERy
YXdDb250ZXh0IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc2l6ZV90IG51bV9lbGVtcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBkb3VibGUgKmRhc2hhcnJheSkKewogIHJlZ2lzdGVyIGNvbnN0IGRv
dWJsZQogICAgKnA7CgogIHJlZ2lzdGVyIGRvdWJsZQogICAgKnE7CgogIHVuc2lnbmVkIGludAog
ICAgaSwKICAgIHVwZGF0ZWQgPSAwLAogICAgbl9uZXcgPSBudW1fZWxlbXMsCiAgICBuX29sZCA9
IDA7CgogICgodm9pZCkgKChjb250ZXh0ICE9IChEcmF3Q29udGV4dCkwKSA/IDAgOiAoX19lcHJp
bnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3Ny
Yy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgNDkwNSwgImNvbnRleHQg
IT0gKERyYXdDb250ZXh0KU5VTEwiKSwgMCkpKTsKICAoKHZvaWQpICgoY29udGV4dC0+c2lnbmF0
dXJlID09IDB4YWJhY2FkYWJVTCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNz
ZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdp
Y2svbWFnaWNrL2RyYXcuYyIsIDQ5MDYsICJjb250ZXh0LT5zaWduYXR1cmUgPT0gTWFnaWNrU2ln
bmF0dXJlIiksIDApKSk7CgogIHEgPSAoY29udGV4dC0+Z3JhcGhpY19jb250ZXh0W2NvbnRleHQt
PmluZGV4XSktPmRhc2hfcGF0dGVybjsKICBpZiggcSAhPSAoY29uc3QgZG91YmxlICopIDAgKQog
ICAgd2hpbGUoICpxKysgIT0gMCkKICAgICAgbl9vbGQrKzsKCiAgaWYoIChuX29sZCA9PSAwKSAm
JiAobl9uZXcgPT0gMCkgKQogICAgewogICAgICB1cGRhdGVkID0gMDsKICAgIH0KICBlbHNlIGlm
KCBuX29sZCAhPSBuX25ldyApCiAgICB7CiAgICAgIHVwZGF0ZWQgPSAxOwogICAgfQogIGVsc2Ug
aWYoKChjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+ZGFzaF9wYXR0
ZXJuICE9IChkb3VibGUqKTApCiAgICAgICAgICAmJiAoZGFzaGFycmF5ICE9IChkb3VibGUqKTAp
KQogICAgewogICAgICBwID0gZGFzaGFycmF5OwogICAgICBxID0gKGNvbnRleHQtPmdyYXBoaWNf
Y29udGV4dFtjb250ZXh0LT5pbmRleF0pLT5kYXNoX3BhdHRlcm47CiAgICAgIGkgPSBuX25ldzsK
ICAgICAgd2hpbGUoIGktLSApCiAgICAgICAgewogICAgICAgICAgaWYoKCgqcCAtICpxKSA8IDAg
PyAtKCpwIC0gKnEpIDogKCpwIC0gKnEpKSA+IDEuMGUtMTIpCiAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICB1cGRhdGVkID0gMTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQog
ICAgICAgICAgKytwOwogICAgICAgICAgKytxOwogICAgICAgIH0KICAgIH0KCiAgaWYoIGNvbnRl
eHQtPmZpbHRlcl9vZmYgfHwgdXBkYXRlZCApCiAgICB7CiAgICAgIGlmKChjb250ZXh0LT5ncmFw
aGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+ZGFzaF9wYXR0ZXJuICE9IChkb3VibGUqKTAp
CiAgICAgICAgTGliZXJhdGVNZW1vcnkoKHZvaWQgKiopICYoY29udGV4dC0+Z3JhcGhpY19jb250
ZXh0W2NvbnRleHQtPmluZGV4XSktPmRhc2hfcGF0dGVybik7CgogICAgICBpZiggbl9uZXcgIT0g
MCkKICAgICAgICB7CiAgICAgICAgICAoY29udGV4dC0+Z3JhcGhpY19jb250ZXh0W2NvbnRleHQt
PmluZGV4XSktPmRhc2hfcGF0dGVybiA9IChkb3VibGUgKikKICAgICAgICAgICAgQWNxdWlyZU1l
bW9yeSgobl9uZXcrMSkqc2l6ZW9mKGRvdWJsZSkpOwogICAgICAgICAgaWYoKGNvbnRleHQtPmdy
YXBoaWNfY29udGV4dFtjb250ZXh0LT5pbmRleF0pLT5kYXNoX3BhdHRlcm4pCiAgICAgICAgICAg
IHsKICAgICAgICAgICAgICBxPShjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5k
ZXhdKS0+ZGFzaF9wYXR0ZXJuOwogICAgICAgICAgICAgIHA9ZGFzaGFycmF5OwogICAgICAgICAg
ICAgIHdoaWxlKCAqcCApCiAgICAgICAgICAgICAgICAqcSsrPSpwKys7CiAgICAgICAgICAgICAg
KnE9MDsKICAgICAgICAgICAgfQogICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgeyBpZiAoY29udGV4dC0+aW1hZ2UtPmV4Y2VwdGlvbi5zZXZlcml0eSA+IChsb25nKVJl
c291cmNlTGltaXRFcnJvcikgVGhyb3dFeGNlcHRpb24oJmNvbnRleHQtPmltYWdlLT5leGNlcHRp
b24sUmVzb3VyY2VMaW1pdEVycm9yLCJNZW1vcnlBbGxvY2F0aW9uRmFpbGVkIiwiVW5hYmxlVG9E
cmF3T25JbWFnZSIpOyByZXR1cm47IH0KCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICBN
dmdQcmludGYoY29udGV4dCwgInN0cm9rZS1kYXNoYXJyYXkgIik7CiAgICAgIGlmICggbl9uZXcg
PT0gMCApCiAgICAgICAgTXZnUHJpbnRmKGNvbnRleHQsICJub25lIik7CiAgICAgIGVsc2UKICAg
ICAgICB7CiAgICAgICAgICBwID0gZGFzaGFycmF5OwogICAgICAgICAgaSA9IG5fbmV3OwogICAg
ICAgICAgTXZnUHJpbnRmKGNvbnRleHQsICIlLjRnIiwgKnArKyk7CiAgICAgICAgICB3aGlsZSAo
aS0tKQogICAgICAgICAgICBNdmdQcmludGYoY29udGV4dCwgIiwlLjRnIiwgKnArKyk7CiAgICAg
ICAgfQogICAgICBNdmdQcmludGYoY29udGV4dCwgIjAgXG4iKTsKICAgIH0KfQojIDUwMDEgIi9o
b21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgog
ZG91YmxlIERyYXdHZXRTdHJva2VEYXNoT2Zmc2V0KERyYXdDb250ZXh0IGNvbnRleHQpCnsKICAo
KHZvaWQpICgoY29udGV4dCAhPSAoRHJhd0NvbnRleHQpMCkgPyAwIDogKF9fZXByaW50ZiAoIiVz
OiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhp
Y3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDUwMDMsICJjb250ZXh0ICE9IChEcmF3
Q29udGV4dClOVUxMIiksIDApKSk7CiAgKCh2b2lkKSAoKGNvbnRleHQtPnNpZ25hdHVyZSA9PSAw
eGFiYWNhZGFiVUwpID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBg
JXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2lj
ay9kcmF3LmMiLCA1MDA0LCAiY29udGV4dC0+c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVyZSIp
LCAwKSkpOwoKICByZXR1cm4gKGNvbnRleHQtPmdyYXBoaWNfY29udGV4dFtjb250ZXh0LT5pbmRl
eF0pLT5kYXNoX29mZnNldDsKfQojIDUwMzUgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9H
cmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgogdm9pZCBEcmF3U2V0U3Ryb2tlRGFzaE9mZnNl
dChEcmF3Q29udGV4dCBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBkb3VibGUgZGFzaF9vZmZzZXQpCnsKICAoKHZvaWQpICgoY29udGV4dCAh
PSAoRHJhd0NvbnRleHQpMCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0
aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2sv
bWFnaWNrL2RyYXcuYyIsIDUwMzgsICJjb250ZXh0ICE9IChEcmF3Q29udGV4dClOVUxMIiksIDAp
KSk7CiAgKCh2b2lkKSAoKGNvbnRleHQtPnNpZ25hdHVyZSA9PSAweGFiYWNhZGFiVUwpID8gMCA6
IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZy
aWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCA1MDM5LCAi
Y29udGV4dC0+c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVyZSIpLCAwKSkpOwoKICBpZihjb250
ZXh0LT5maWx0ZXJfb2ZmIHx8CiAgICAgKCgoKGNvbnRleHQtPmdyYXBoaWNfY29udGV4dFtjb250
ZXh0LT5pbmRleF0pLT5kYXNoX29mZnNldC1kYXNoX29mZnNldCkgPCAwID8gLSgoY29udGV4dC0+
Z3JhcGhpY19jb250ZXh0W2NvbnRleHQtPmluZGV4XSktPmRhc2hfb2Zmc2V0LWRhc2hfb2Zmc2V0
KSA6ICgoY29udGV4dC0+Z3JhcGhpY19jb250ZXh0W2NvbnRleHQtPmluZGV4XSktPmRhc2hfb2Zm
c2V0LWRhc2hfb2Zmc2V0KSkgPiAxLjBlLTEyKSkKICAgIHsKICAgICAgKGNvbnRleHQtPmdyYXBo
aWNfY29udGV4dFtjb250ZXh0LT5pbmRleF0pLT5kYXNoX29mZnNldCA9IGRhc2hfb2Zmc2V0OwoK
ICAgICAgTXZnUHJpbnRmKGNvbnRleHQsICJzdHJva2UtZGFzaG9mZnNldCAlLjRnXG4iLCBkYXNo
X29mZnNldCk7CiAgICB9Cn0KIyA1MDc0ICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3Jh
cGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIKIExpbmVDYXAgRHJhd0dldFN0cm9rZUxpbmVDYXAo
RHJhd0NvbnRleHQgY29udGV4dCkKewogICgodm9pZCkgKChjb250ZXh0ICE9IChEcmF3Q29udGV4
dCkwKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwg
Ii9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5j
IiwgNTA3NiwgImNvbnRleHQgIT0gKERyYXdDb250ZXh0KU5VTEwiKSwgMCkpKTsKICAoKHZvaWQp
ICgoY29udGV4dC0+c2lnbmF0dXJlID09IDB4YWJhY2FkYWJVTCkgPyAwIDogKF9fZXByaW50ZiAo
IiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3Jh
cGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDUwNzcsICJjb250ZXh0LT5zaWdu
YXR1cmUgPT0gTWFnaWNrU2lnbmF0dXJlIiksIDApKSk7CgogIHJldHVybiAoY29udGV4dC0+Z3Jh
cGhpY19jb250ZXh0W2NvbnRleHQtPmluZGV4XSktPmxpbmVjYXA7Cn0KIyA1MTA5ICIvaG9tZS9i
ZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIKIHZvaWQg
RHJhd1NldFN0cm9rZUxpbmVDYXAoRHJhd0NvbnRleHQgY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGluZUNhcCBsaW5lY2FwKQp7CiAgKCh2b2lk
KSAoKGNvbnRleHQgIT0gKERyYXdDb250ZXh0KTApID8gMCA6IChfX2VwcmludGYgKCIlczoldTog
ZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dy
YXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCA1MTEyLCAiY29udGV4dCAhPSAoRHJhd0NvbnRl
eHQpTlVMTCIpLCAwKSkpOwogICgodm9pZCkgKChjb250ZXh0LT5zaWduYXR1cmUgPT0gMHhhYmFj
YWRhYlVMKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xu
IiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJh
dy5jIiwgNTExMywgImNvbnRleHQtPnNpZ25hdHVyZSA9PSBNYWdpY2tTaWduYXR1cmUiKSwgMCkp
KTsKCiAgaWYoY29udGV4dC0+ZmlsdGVyX29mZiB8fCAoKGNvbnRleHQtPmdyYXBoaWNfY29udGV4
dFtjb250ZXh0LT5pbmRleF0pLT5saW5lY2FwICE9IGxpbmVjYXApKQogICAgewogICAgICBjb25z
dCBjaGFyCiAgICAgICAgKnAgPSAwOwoKICAgICAgKGNvbnRleHQtPmdyYXBoaWNfY29udGV4dFtj
b250ZXh0LT5pbmRleF0pLT5saW5lY2FwID0gbGluZWNhcDsKCiAgICAgIHN3aXRjaCAobGluZWNh
cCkKICAgICAgICB7CiAgICAgICAgY2FzZSBCdXR0Q2FwOgogICAgICAgICAgcCA9ICJidXR0IjsK
ICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgUm91bmRDYXA6CiAgICAgICAgICBwID0gInJv
dW5kIjsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgU3F1YXJlQ2FwOgogICAgICAgICAg
cCA9ICJzcXVhcmUiOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
IGJyZWFrOwogICAgICAgIH0KCiAgICAgIGlmIChwICE9IDApCiAgICAgICAgTXZnUHJpbnRmKGNv
bnRleHQsICJzdHJva2UtbGluZWNhcCAlc1xuIiwgcCk7CiAgICB9Cn0KIyA1MTY3ICIvaG9tZS9i
ZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIKIExpbmVK
b2luIERyYXdHZXRTdHJva2VMaW5lSm9pbihEcmF3Q29udGV4dCBjb250ZXh0KQp7CiAgKCh2b2lk
KSAoKGNvbnRleHQgIT0gKERyYXdDb250ZXh0KTApID8gMCA6IChfX2VwcmludGYgKCIlczoldTog
ZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dy
YXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCA1MTY5LCAiY29udGV4dCAhPSAoRHJhd0NvbnRl
eHQpTlVMTCIpLCAwKSkpOwogICgodm9pZCkgKChjb250ZXh0LT5zaWduYXR1cmUgPT0gMHhhYmFj
YWRhYlVMKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xu
IiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJh
dy5jIiwgNTE3MCwgImNvbnRleHQtPnNpZ25hdHVyZSA9PSBNYWdpY2tTaWduYXR1cmUiKSwgMCkp
KTsKCiAgcmV0dXJuIChjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+
bGluZWpvaW47Cn0KIyA1MjAyICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NN
YWdpY2svbWFnaWNrL2RyYXcuYyIKIHZvaWQgRHJhd1NldFN0cm9rZUxpbmVKb2luKERyYXdDb250
ZXh0IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBMaW5lSm9pbiBsaW5lam9pbikKewogICgodm9pZCkgKChjb250ZXh0ICE9IChEcmF3Q29udGV4
dCkwKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwg
Ii9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5j
IiwgNTIwNSwgImNvbnRleHQgIT0gKERyYXdDb250ZXh0KU5VTEwiKSwgMCkpKTsKICAoKHZvaWQp
ICgoY29udGV4dC0+c2lnbmF0dXJlID09IDB4YWJhY2FkYWJVTCkgPyAwIDogKF9fZXByaW50ZiAo
IiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3Jh
cGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDUyMDYsICJjb250ZXh0LT5zaWdu
YXR1cmUgPT0gTWFnaWNrU2lnbmF0dXJlIiksIDApKSk7CgogIGlmKGNvbnRleHQtPmZpbHRlcl9v
ZmYgfHwgKChjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+bGluZWpv
aW4gIT0gbGluZWpvaW4pKQogICAgewogICAgICBjb25zdCBjaGFyCiAgICAgICAgKnAgPSAwOwoK
ICAgICAgKGNvbnRleHQtPmdyYXBoaWNfY29udGV4dFtjb250ZXh0LT5pbmRleF0pLT5saW5lam9p
biA9IGxpbmVqb2luOwoKICAgICAgc3dpdGNoIChsaW5lam9pbikKICAgICAgICB7CiAgICAgICAg
Y2FzZSBNaXRlckpvaW46CiAgICAgICAgICBwID0gIm1pdGVyIjsKICAgICAgICAgIGJyZWFrOwog
ICAgICAgIGNhc2UgUm91bmRKb2luOgogICAgICAgICAgcCA9ICJyb3VuZCI7CiAgICAgICAgICBi
cmVhazsKICAgICAgICBjYXNlIEJldmVsSm9pbjoKICAgICAgICAgIHAgPSAic3F1YXJlIjsKICAg
ICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICBicmVhazsKICAgICAgICB9
CgogICAgICBpZiAocCAhPSAwKQogICAgICAgIE12Z1ByaW50Zihjb250ZXh0LCAic3Ryb2tlLWxp
bmVqb2luICVzXG4iLCBwKTsKICAgIH0KfQojIDUyNjEgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFw
aGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgogdW5zaWduZWQgbG9uZyBEcmF3R2V0
U3Ryb2tlTWl0ZXJMaW1pdChEcmF3Q29udGV4dCBjb250ZXh0KQp7CiAgKCh2b2lkKSAoKGNvbnRl
eHQgIT0gKERyYXdDb250ZXh0KTApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFz
c2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFn
aWNrL21hZ2ljay9kcmF3LmMiLCA1MjYzLCAiY29udGV4dCAhPSAoRHJhd0NvbnRleHQpTlVMTCIp
LCAwKSkpOwogICgodm9pZCkgKChjb250ZXh0LT5zaWduYXR1cmUgPT0gMHhhYmFjYWRhYlVMKSA/
IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21l
L2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgNTI2
NCwgImNvbnRleHQtPnNpZ25hdHVyZSA9PSBNYWdpY2tTaWduYXR1cmUiKSwgMCkpKTsKCiAgcmV0
dXJuIChjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+bWl0ZXJsaW1p
dDsKfQojIDUyOTggIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9t
YWdpY2svZHJhdy5jIgogdm9pZCBEcmF3U2V0U3Ryb2tlTWl0ZXJMaW1pdChEcmF3Q29udGV4dCBj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
bnNpZ25lZCBsb25nIG1pdGVybGltaXQpCnsKICAoKHZvaWQpICgoY29udGV4dCAhPSAoRHJhd0Nv
bnRleHQpMCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydc
biIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2Ry
YXcuYyIsIDUzMDEsICJjb250ZXh0ICE9IChEcmF3Q29udGV4dClOVUxMIiksIDApKSk7CiAgKCh2
b2lkKSAoKGNvbnRleHQtPnNpZ25hdHVyZSA9PSAweGFiYWNhZGFiVUwpID8gMCA6IChfX2Vwcmlu
dGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3Jj
L2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCA1MzAyLCAiY29udGV4dC0+
c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVyZSIpLCAwKSkpOwoKICBpZigoY29udGV4dC0+Z3Jh
cGhpY19jb250ZXh0W2NvbnRleHQtPmluZGV4XSktPm1pdGVybGltaXQgIT0gbWl0ZXJsaW1pdCkK
ICAgIHsKICAgICAgKGNvbnRleHQtPmdyYXBoaWNfY29udGV4dFtjb250ZXh0LT5pbmRleF0pLT5t
aXRlcmxpbWl0ID0gbWl0ZXJsaW1pdDsKCiAgICAgIE12Z1ByaW50Zihjb250ZXh0LCAic3Ryb2tl
LW1pdGVybGltaXQgJWx1XG4iLCBtaXRlcmxpbWl0KTsKICAgIH0KfQojIDUzMzMgIi9ob21lL2Jm
cmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgogZG91Ymxl
IERyYXdHZXRTdHJva2VPcGFjaXR5KERyYXdDb250ZXh0IGNvbnRleHQpCnsKICAoKHZvaWQpICgo
Y29udGV4dCAhPSAoRHJhd0NvbnRleHQpMCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWls
ZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhp
Y3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDUzMzUsICJjb250ZXh0ICE9IChEcmF3Q29udGV4dClO
VUxMIiksIDApKSk7CiAgKCh2b2lkKSAoKGNvbnRleHQtPnNpZ25hdHVyZSA9PSAweGFiYWNhZGFi
VUwpID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAi
L2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMi
LCA1MzM2LCAiY29udGV4dC0+c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVyZSIpLCAwKSkpOwoK
ICByZXR1cm4gKDEuMC0oKChkb3VibGUpKGNvbnRleHQtPmdyYXBoaWNfY29udGV4dFtjb250ZXh0
LT5pbmRleF0pLT5zdHJva2Uub3BhY2l0eSkvMjU1VUwpKTsKfQojIDUzNjYgIi9ob21lL2Jmcmll
c2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgogdm9pZCBEcmF3
U2V0U3Ryb2tlT3BhY2l0eShEcmF3Q29udGV4dCBjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBkb3VibGUgc3Ryb2tlX29wYWNpdHkpCnsKICBkb3Vi
bGUKICAgIG9wYWNpdHk7CgogICgodm9pZCkgKChjb250ZXh0ICE9IChEcmF3Q29udGV4dCkwKSA/
IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21l
L2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgNTM3
MiwgImNvbnRleHQgIT0gKERyYXdDb250ZXh0KU5VTEwiKSwgMCkpKTsKICAoKHZvaWQpICgoY29u
dGV4dC0+c2lnbmF0dXJlID09IDB4YWJhY2FkYWJVTCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1
OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3Mv
R3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDUzNzMsICJjb250ZXh0LT5zaWduYXR1cmUg
PT0gTWFnaWNrU2lnbmF0dXJlIiksIDApKSk7CgogIG9wYWNpdHkgPSAoUXVhbnR1bSkoKGRvdWJs
ZSkgMjU1VUwqKDEuMC0oc3Ryb2tlX29wYWNpdHkgPD0gMS4wID8gc3Ryb2tlX29wYWNpdHkgOiAx
LjAgKSkrMC41KTsKCiAgaWYgKGNvbnRleHQtPmZpbHRlcl9vZmYgfHwgKChjb250ZXh0LT5ncmFw
aGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+c3Ryb2tlLm9wYWNpdHkgIT0gb3BhY2l0eSkp
CiAgICB7CiAgICAgIChjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+
c3Ryb2tlLm9wYWNpdHkgPSAoUXVhbnR1bSkgY2VpbChvcGFjaXR5KTsKICAgICAgTXZnUHJpbnRm
KGNvbnRleHQsICJzdHJva2Utb3BhY2l0eSAlLjRnXG4iLCBzdHJva2Vfb3BhY2l0eSk7CiAgICB9
Cn0KIyA1NDA3ICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFn
aWNrL2RyYXcuYyIKIGRvdWJsZSBEcmF3R2V0U3Ryb2tlV2lkdGgoRHJhd0NvbnRleHQgY29udGV4
dCkKewogICgodm9pZCkgKChjb250ZXh0ICE9IChEcmF3Q29udGV4dCkwKSA/IDAgOiAoX19lcHJp
bnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3Ny
Yy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgNTQwOSwgImNvbnRleHQg
IT0gKERyYXdDb250ZXh0KU5VTEwiKSwgMCkpKTsKICAoKHZvaWQpICgoY29udGV4dC0+c2lnbmF0
dXJlID09IDB4YWJhY2FkYWJVTCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNz
ZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdp
Y2svbWFnaWNrL2RyYXcuYyIsIDU0MTAsICJjb250ZXh0LT5zaWduYXR1cmUgPT0gTWFnaWNrU2ln
bmF0dXJlIiksIDApKSk7CgogIHJldHVybiAoY29udGV4dC0+Z3JhcGhpY19jb250ZXh0W2NvbnRl
eHQtPmluZGV4XSktPnN0cm9rZV93aWR0aDsKfQojIDU0NDAgIi9ob21lL2Jmcmllc2VuL3NyYy9n
cmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgogdm9pZCBEcmF3U2V0U3Ryb2tl
V2lkdGgoRHJhd0NvbnRleHQgY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGRvdWJsZSBzdHJva2Vfd2lkdGgpCnsKICAoKHZvaWQpICgoY29udGV4dCAh
PSAoRHJhd0NvbnRleHQpMCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0
aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2sv
bWFnaWNrL2RyYXcuYyIsIDU0NDMsICJjb250ZXh0ICE9IChEcmF3Q29udGV4dClOVUxMIiksIDAp
KSk7CiAgKCh2b2lkKSAoKGNvbnRleHQtPnNpZ25hdHVyZSA9PSAweGFiYWNhZGFiVUwpID8gMCA6
IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZy
aWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCA1NDQ0LCAi
Y29udGV4dC0+c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVyZSIpLCAwKSkpOwoKICBpZiAoY29u
dGV4dC0+ZmlsdGVyX29mZiB8fAogICAgICAoKCgoY29udGV4dC0+Z3JhcGhpY19jb250ZXh0W2Nv
bnRleHQtPmluZGV4XSktPnN0cm9rZV93aWR0aC1zdHJva2Vfd2lkdGgpIDwgMCA/IC0oKGNvbnRl
eHQtPmdyYXBoaWNfY29udGV4dFtjb250ZXh0LT5pbmRleF0pLT5zdHJva2Vfd2lkdGgtc3Ryb2tl
X3dpZHRoKSA6ICgoY29udGV4dC0+Z3JhcGhpY19jb250ZXh0W2NvbnRleHQtPmluZGV4XSktPnN0
cm9rZV93aWR0aC1zdHJva2Vfd2lkdGgpKSA+IDEuMGUtMTIpKQogICAgewogICAgICAoY29udGV4
dC0+Z3JhcGhpY19jb250ZXh0W2NvbnRleHQtPmluZGV4XSktPnN0cm9rZV93aWR0aCA9IHN0cm9r
ZV93aWR0aDsKCiAgICAgIE12Z1ByaW50Zihjb250ZXh0LCAic3Ryb2tlLXdpZHRoICUuNGdcbiIs
IHN0cm9rZV93aWR0aCk7CiAgICB9Cn0KIyA1NDc4ICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhp
Y3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIKIHVuc2lnbmVkIGludCBEcmF3R2V0VGV4
dEFudGlhbGlhcyhEcmF3Q29udGV4dCBjb250ZXh0KQp7CiAgKCh2b2lkKSAoKGNvbnRleHQgIT0g
KERyYXdDb250ZXh0KTApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlv
biBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21h
Z2ljay9kcmF3LmMiLCA1NDgwLCAiY29udGV4dCAhPSAoRHJhd0NvbnRleHQpTlVMTCIpLCAwKSkp
OwogICgodm9pZCkgKChjb250ZXh0LT5zaWduYXR1cmUgPT0gMHhhYmFjYWRhYlVMKSA/IDAgOiAo
X19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmll
c2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgNTQ4MSwgImNv
bnRleHQtPnNpZ25hdHVyZSA9PSBNYWdpY2tTaWduYXR1cmUiKSwgMCkpKTsKCiAgcmV0dXJuIChj
b250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+dGV4dF9hbnRpYWxpYXM7
Cn0KIyA1NTEzICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFn
aWNrL2RyYXcuYyIKIHZvaWQgRHJhd1NldFRleHRBbnRpYWxpYXMoRHJhd0NvbnRleHQgY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQg
aW50IHRleHRfYW50aWFsaWFzKQp7CiAgKCh2b2lkKSAoKGNvbnRleHQgIT0gKERyYXdDb250ZXh0
KTApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAi
L2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMi
LCA1NTE2LCAiY29udGV4dCAhPSAoRHJhd0NvbnRleHQpTlVMTCIpLCAwKSkpOwogICgodm9pZCkg
KChjb250ZXh0LT5zaWduYXR1cmUgPT0gMHhhYmFjYWRhYlVMKSA/IDAgOiAoX19lcHJpbnRmICgi
JXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFw
aGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgNTUxNywgImNvbnRleHQtPnNpZ25h
dHVyZSA9PSBNYWdpY2tTaWduYXR1cmUiKSwgMCkpKTsKCiAgaWYgKGNvbnRleHQtPmZpbHRlcl9v
ZmYgfHwgKChjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+dGV4dF9h
bnRpYWxpYXMgIT0gdGV4dF9hbnRpYWxpYXMpKQogICAgewogICAgICAoY29udGV4dC0+Z3JhcGhp
Y19jb250ZXh0W2NvbnRleHQtPmluZGV4XSktPnRleHRfYW50aWFsaWFzID0gdGV4dF9hbnRpYWxp
YXM7CgogICAgICBNdmdQcmludGYoY29udGV4dCwgInRleHQtYW50aWFsaWFzICVpXG4iLCB0ZXh0
X2FudGlhbGlhcyA/IDEgOiAwKTsKICAgIH0KfQojIDU1NTAgIi9ob21lL2Jmcmllc2VuL3NyYy9n
cmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgogRGVjb3JhdGlvblR5cGUgRHJh
d0dldFRleHREZWNvcmF0aW9uKERyYXdDb250ZXh0IGNvbnRleHQpCnsKICAoKHZvaWQpICgoY29u
dGV4dCAhPSAoRHJhd0NvbnRleHQpMCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQg
YXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NN
YWdpY2svbWFnaWNrL2RyYXcuYyIsIDU1NTIsICJjb250ZXh0ICE9IChEcmF3Q29udGV4dClOVUxM
IiksIDApKSk7CiAgKCh2b2lkKSAoKGNvbnRleHQtPnNpZ25hdHVyZSA9PSAweGFiYWNhZGFiVUwp
ID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hv
bWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCA1
NTUzLCAiY29udGV4dC0+c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVyZSIpLCAwKSkpOwoKICBy
ZXR1cm4gKGNvbnRleHQtPmdyYXBoaWNfY29udGV4dFtjb250ZXh0LT5pbmRleF0pLT5kZWNvcmF0
ZTsKfQojIDU1ODUgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9t
YWdpY2svZHJhdy5jIgogdm9pZCBEcmF3U2V0VGV4dERlY29yYXRpb24oRHJhd0NvbnRleHQgY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IERlY29y
YXRpb25UeXBlIGRlY29yYXRpb24pCnsKICBjb25zdCBjaGFyCiAgICAqcCA9IDA7CgogICgodm9p
ZCkgKChjb250ZXh0ICE9IChEcmF3Q29udGV4dCkwKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6
IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9H
cmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgNTU5MSwgImNvbnRleHQgIT0gKERyYXdDb250
ZXh0KU5VTEwiKSwgMCkpKTsKICAoKHZvaWQpICgoY29udGV4dC0+c2lnbmF0dXJlID09IDB4YWJh
Y2FkYWJVTCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydc
biIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2Ry
YXcuYyIsIDU1OTIsICJjb250ZXh0LT5zaWduYXR1cmUgPT0gTWFnaWNrU2lnbmF0dXJlIiksIDAp
KSk7CgogIGlmIChjb250ZXh0LT5maWx0ZXJfb2ZmIHx8ICgoY29udGV4dC0+Z3JhcGhpY19jb250
ZXh0W2NvbnRleHQtPmluZGV4XSktPmRlY29yYXRlICE9IGRlY29yYXRpb24pKQogICAgewogICAg
ICAoY29udGV4dC0+Z3JhcGhpY19jb250ZXh0W2NvbnRleHQtPmluZGV4XSktPmRlY29yYXRlID0g
ZGVjb3JhdGlvbjsKCiAgICAgIHN3aXRjaCAoZGVjb3JhdGlvbikKICAgICAgICB7CiAgICAgICAg
Y2FzZSBOb0RlY29yYXRpb246CiAgICAgICAgICBwID0gIm5vbmUiOwogICAgICAgICAgYnJlYWs7
CiAgICAgICAgY2FzZSBVbmRlcmxpbmVEZWNvcmF0aW9uOgogICAgICAgICAgcCA9ICJ1bmRlcmxp
bmUiOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBPdmVybGluZURlY29yYXRpb246CiAg
ICAgICAgICBwID0gIm92ZXJsaW5lIjsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgTGlu
ZVRocm91Z2hEZWNvcmF0aW9uOgogICAgICAgICAgcCA9ICJsaW5lLXRocm91Z2giOwogICAgICAg
ICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgaWYgKHAgIT0gMCkKICAgICAgICBNdmdQcmludGYo
Y29udGV4dCwgImRlY29yYXRlICVzXG4iLCBwKTsKICAgIH0KfQojIDU2NDMgIi9ob21lL2Jmcmll
c2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgogY2hhciAqRHJh
d0dldFRleHRFbmNvZGluZyhEcmF3Q29udGV4dCBjb250ZXh0KQp7CiAgKCh2b2lkKSAoKGNvbnRl
eHQgIT0gKERyYXdDb250ZXh0KTApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFz
c2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFn
aWNrL21hZ2ljay9kcmF3LmMiLCA1NjQ1LCAiY29udGV4dCAhPSAoRHJhd0NvbnRleHQpTlVMTCIp
LCAwKSkpOwogICgodm9pZCkgKChjb250ZXh0LT5zaWduYXR1cmUgPT0gMHhhYmFjYWRhYlVMKSA/
IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21l
L2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgNTY0
NiwgImNvbnRleHQtPnNpZ25hdHVyZSA9PSBNYWdpY2tTaWduYXR1cmUiKSwgMCkpKTsKCiAgaWYg
KChjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+ZW5jb2RpbmcgIT0g
KGNoYXIgKikwKQogICAgcmV0dXJuIChjaGFyICopIEFsbG9jYXRlU3RyaW5nKChjb250ZXh0LT5n
cmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+ZW5jb2RpbmcpOwogIGVsc2UKICAgIHJl
dHVybiAoY2hhciAqKSAwOwp9CiMgNTY4MyAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dy
YXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiCiB2b2lkIERyYXdTZXRUZXh0RW5jb2RpbmcoRHJh
d0NvbnRleHQgY29udGV4dCwgY29uc3QgY2hhciogZW5jb2RpbmcpCnsKICAoKHZvaWQpICgoY29u
dGV4dCAhPSAoRHJhd0NvbnRleHQpMCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQg
YXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NN
YWdpY2svbWFnaWNrL2RyYXcuYyIsIDU2ODUsICJjb250ZXh0ICE9IChEcmF3Q29udGV4dClOVUxM
IiksIDApKSk7CiAgKCh2b2lkKSAoKGNvbnRleHQtPnNpZ25hdHVyZSA9PSAweGFiYWNhZGFiVUwp
ID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hv
bWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCA1
Njg2LCAiY29udGV4dC0+c2lnbmF0dXJlID09IE1hZ2lja1NpZ25hdHVyZSIpLCAwKSkpOwogICgo
dm9pZCkgKChlbmNvZGluZyAhPSAoY2hhciAqKSAwKSA/IDAgOiAoX19lcHJpbnRmICgiJXM6JXU6
IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9H
cmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgNTY4NywgImVuY29kaW5nICE9IChjaGFyICop
IE5VTEwiKSwgMCkpKTsKCiAgaWYgKGNvbnRleHQtPmZpbHRlcl9vZmYgfHwgKChjb250ZXh0LT5n
cmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+ZW5jb2RpbmcgPT0gKGNoYXIgKikgMCkg
fHwKICAgICAgKExvY2FsZUNvbXBhcmUoKGNvbnRleHQtPmdyYXBoaWNfY29udGV4dFtjb250ZXh0
LT5pbmRleF0pLT5lbmNvZGluZyxlbmNvZGluZykgIT0gMCkpCiAgICB7CiAgICAgICAgQ2xvbmVT
dHJpbmcoJihjb250ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+ZW5jb2Rp
bmcsZW5jb2RpbmcpOwoKICAgICAgTXZnUHJpbnRmKGNvbnRleHQsICJlbmNvZGluZyAnJXMnXG4i
LCBlbmNvZGluZyk7CiAgICB9Cn0KIyA1NzIxICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3Mv
R3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIKIFBpeGVsUGFja2V0IERyYXdHZXRUZXh0VW5k
ZXJDb2xvcihEcmF3Q29udGV4dCBjb250ZXh0KQp7CiAgKCh2b2lkKSAoKGNvbnRleHQgIT0gKERy
YXdDb250ZXh0KTApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2VydGlvbiBg
JXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2lj
ay9kcmF3LmMiLCA1NzIzLCAiY29udGV4dCAhPSAoRHJhd0NvbnRleHQpTlVMTCIpLCAwKSkpOwog
ICgodm9pZCkgKChjb250ZXh0LT5zaWduYXR1cmUgPT0gMHhhYmFjYWRhYlVMKSA/IDAgOiAoX19l
cHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2Vu
L3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgNTcyNCwgImNvbnRl
eHQtPnNpZ25hdHVyZSA9PSBNYWdpY2tTaWduYXR1cmUiKSwgMCkpKTsKCiAgcmV0dXJuIChjb250
ZXh0LT5ncmFwaGljX2NvbnRleHRbY29udGV4dC0+aW5kZXhdKS0+dW5kZXJjb2xvcjsKfQojIDU3
NTUgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJh
dy5jIgogdm9pZCBEcmF3U2V0VGV4dFVuZGVyQ29sb3IoRHJhd0NvbnRleHQgY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBpeGVsUGFja2V0ICp1
bmRlcl9jb2xvcikKewogICgodm9pZCkgKChjb250ZXh0ICE9IChEcmF3Q29udGV4dCkwKSA/IDAg
OiAoX19lcHJpbnRmICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jm
cmllc2VuL3NyYy9ncmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgNTc1OCwg
ImNvbnRleHQgIT0gKERyYXdDb250ZXh0KU5VTEwiKSwgMCkpKTsKICAoKHZvaWQpICgoY29udGV4
dC0+c2lnbmF0dXJlID09IDB4YWJhY2FkYWJVTCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBm
YWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3Jh
cGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDU3NTksICJjb250ZXh0LT5zaWduYXR1cmUgPT0g
TWFnaWNrU2lnbmF0dXJlIiksIDApKSk7CiAgKCh2b2lkKSAoKHVuZGVyX2NvbG9yICE9IChjb25z
dCBQaXhlbFBhY2tldCAqKTApID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFpbGVkIGFzc2Vy
dGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNr
L21hZ2ljay9kcmF3LmMiLCA1NzYwLCAidW5kZXJfY29sb3IgIT0gKGNvbnN0IFBpeGVsUGFja2V0
ICopTlVMTCIpLCAwKSkpOwoKICBpZiAoY29udGV4dC0+ZmlsdGVyX29mZiB8fCAhKCgoKCYoY29u
dGV4dC0+Z3JhcGhpY19jb250ZXh0W2NvbnRleHQtPmluZGV4XSktPnVuZGVyY29sb3IpLT5yZWQg
PT0gKHVuZGVyX2NvbG9yKS0+cmVkKSAmJiAoKCYoY29udGV4dC0+Z3JhcGhpY19jb250ZXh0W2Nv
bnRleHQtPmluZGV4XSktPnVuZGVyY29sb3IpLT5ncmVlbiA9PSAodW5kZXJfY29sb3IpLT5ncmVl
bikgJiYgKCgmKGNvbnRleHQtPmdyYXBoaWNfY29udGV4dFtjb250ZXh0LT5pbmRleF0pLT51bmRl
cmNvbG9yKS0+Ymx1ZSA9PSAodW5kZXJfY29sb3IpLT5ibHVlKSAmJiAoKCYoY29udGV4dC0+Z3Jh
cGhpY19jb250ZXh0W2NvbnRleHQtPmluZGV4XSktPnVuZGVyY29sb3IpLT5vcGFjaXR5ID09ICh1
bmRlcl9jb2xvciktPm9wYWNpdHkpKSkpCiAgICB7CiAgICAgIChjb250ZXh0LT5ncmFwaGljX2Nv
bnRleHRbY29udGV4dC0+aW5kZXhdKS0+dW5kZXJjb2xvciA9ICp1bmRlcl9jb2xvcjsKICAgICAg
TXZnUHJpbnRmKGNvbnRleHQsICJ0ZXh0LXVuZGVyY29sb3IgIik7CiAgICAgIE12Z0FwcGVuZENv
bG9yKGNvbnRleHQsIHVuZGVyX2NvbG9yKTsKICAgICAgTXZnUHJpbnRmKGNvbnRleHQsICJcbiIp
OwogICAgfQp9CiMgNTc5NyAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFn
aWNrL21hZ2ljay9kcmF3LmMiCiB2b2lkIERyYXdTZXRUZXh0VW5kZXJDb2xvclN0cmluZyhEcmF3
Q29udGV4dCBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogdW5kZXJfY29sb3IpCnsKICBQaXhlbFBhY2tldAogICAgcGl4ZWxf
cGFja2V0OwoKICBpZihRdWVyeUNvbG9yRGF0YWJhc2UodW5kZXJfY29sb3IsJnBpeGVsX3BhY2tl
dCwmY29udGV4dC0+aW1hZ2UtPmV4Y2VwdGlvbikpCiAgICBEcmF3U2V0VGV4dFVuZGVyQ29sb3Io
Y29udGV4dCwmcGl4ZWxfcGFja2V0KTsKfQojIDU4MzYgIi9ob21lL2Jmcmllc2VuL3NyYy9ncmFw
aGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIgogdm9pZCBEcmF3VHJhbnNsYXRlKERy
YXdDb250ZXh0IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZG91YmxlIHgsIGNvbnN0IGRvdWJsZSB5KQp7CiAgQWZmaW5lTWF0cml4CiAgICBhZmZpbmU7
CgogICgodm9pZCkgKChjb250ZXh0ICE9IChEcmF3Q29udGV4dCkwKSA/IDAgOiAoX19lcHJpbnRm
ICgiJXM6JXU6IGZhaWxlZCBhc3NlcnRpb24gYCVzJ1xuIiwgIi9ob21lL2Jmcmllc2VuL3NyYy9n
cmFwaGljcy9HcmFwaGljc01hZ2ljay9tYWdpY2svZHJhdy5jIiwgNTg0MiwgImNvbnRleHQgIT0g
KERyYXdDb250ZXh0KU5VTEwiKSwgMCkpKTsKICAoKHZvaWQpICgoY29udGV4dC0+c2lnbmF0dXJl
ID09IDB4YWJhY2FkYWJVTCkgPyAwIDogKF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0
aW9uIGAlcydcbiIsICIvaG9tZS9iZnJpZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2sv
bWFnaWNrL2RyYXcuYyIsIDU4NDMsICJjb250ZXh0LT5zaWduYXR1cmUgPT0gTWFnaWNrU2lnbmF0
dXJlIiksIDApKSk7CgogIElkZW50aXR5QWZmaW5lKCZhZmZpbmUpOwogIGFmZmluZS50eD14Owog
IGFmZmluZS50eT15OwogIEFkanVzdEFmZmluZSggY29udGV4dCwgJmFmZmluZSApOwoKICBNdmdQ
cmludGYoY29udGV4dCwgInRyYW5zbGF0ZSAlLjRnLCUuNGdcbiIsIHgsIHkpOwp9CiMgNTg4OSAi
L2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBoaWNzTWFnaWNrL21hZ2ljay9kcmF3LmMi
CiB2b2lkIERyYXdTZXRWaWV3Ym94KERyYXdDb250ZXh0IGNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgeDEsIHVuc2lnbmVkIGxvbmcgeTEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgeDIsIHVuc2lnbmVk
IGxvbmcgeTIpCnsKICAoKHZvaWQpICgoY29udGV4dCAhPSAoRHJhd0NvbnRleHQpMCkgPyAwIDog
KF9fZXByaW50ZiAoIiVzOiV1OiBmYWlsZWQgYXNzZXJ0aW9uIGAlcydcbiIsICIvaG9tZS9iZnJp
ZXNlbi9zcmMvZ3JhcGhpY3MvR3JhcGhpY3NNYWdpY2svbWFnaWNrL2RyYXcuYyIsIDU4OTMsICJj
b250ZXh0ICE9IChEcmF3Q29udGV4dClOVUxMIiksIDApKSk7CiAgKCh2b2lkKSAoKGNvbnRleHQt
PnNpZ25hdHVyZSA9PSAweGFiYWNhZGFiVUwpID8gMCA6IChfX2VwcmludGYgKCIlczoldTogZmFp
bGVkIGFzc2VydGlvbiBgJXMnXG4iLCAiL2hvbWUvYmZyaWVzZW4vc3JjL2dyYXBoaWNzL0dyYXBo
aWNzTWFnaWNrL21hZ2ljay9kcmF3LmMiLCA1ODk0LCAiY29udGV4dC0+c2lnbmF0dXJlID09IE1h
Z2lja1NpZ25hdHVyZSIpLCAwKSkpOwoKICBNdmdQcmludGYoY29udGV4dCwgInZpZXdib3ggJWx1
ICVsdSAlbHUgJWx1XG4iLCB4MSwgeTEsIHgyLCB5Mik7Cn0K


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2003-02-13 22:56 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-02-13 22:56 target/9698: Bad ultrasparc code for va_list/vsnprintf bfriesen

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