public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c++/10874: ICE: unrecognized symbol type ""
@ 2003-05-20 19:08 bangerth
  0 siblings, 0 replies; 5+ messages in thread
From: bangerth @ 2003-05-20 19:08 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, nobody, pajones57

Synopsis: ICE: unrecognized symbol type ""

State-Changed-From-To: feedback->closed
State-Changed-By: bangerth
State-Changed-When: Tue May 20 19:08:56 2003
State-Changed-Why:
    Not a gcc problem

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


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

* Re: c++/10874: ICE: unrecognized symbol type ""
@ 2003-05-20 19:36 Wolfgang Bangerth
  0 siblings, 0 replies; 5+ messages in thread
From: Wolfgang Bangerth @ 2003-05-20 19:36 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

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

From: Wolfgang Bangerth <bangerth@ices.utexas.edu>
To: Paul Jones <pajones57@hotmail.com>
Cc: gcc-bugs@gcc.gnu.org, <gcc-gnats@gcc.gnu.org>
Subject: Re: c++/10874: ICE: unrecognized symbol type ""
Date: Tue, 20 May 2003 14:08:58 -0500 (CDT)

 > Thanks for your help.  For some reason my swap partition was not enabled, so 
 > it ran out of physical memory (96M).  I mounted swap partition and it works 
 > like a charm.  Is it possible to have an out of memory error message?
 
 That's pretty hard, since if the operating system overcommits memory 
 (which most do these days), then an application will not get an 
 out-of-memory status from malloc, but just a page fault or something when 
 it actually uses this memory. It's hard to detect what exactly caused 
 this, then.
 
 Thanks for the feedback
 W.
 
 -------------------------------------------------------------------------
 Wolfgang Bangerth              email:            bangerth@ices.utexas.edu
                                www: http://www.ices.utexas.edu/~bangerth/
 
 


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

* Re: c++/10874: ICE: unrecognized symbol type ""
@ 2003-05-20 17:16 Paul Jones
  0 siblings, 0 replies; 5+ messages in thread
From: Paul Jones @ 2003-05-20 17:16 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

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

From: "Paul Jones" <pajones57@hotmail.com>
To: bangerth@dealii.org, gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, nobody@gcc.gnu.org, pajones57@hotmail.com, gcc-gnats@gcc.gnu.org
Cc:  
Subject: Re: c++/10874: ICE: unrecognized symbol type ""
Date: Tue, 20 May 2003 17:07:03 +0000

 >     This compiles just fine for me. What do you mean by your
 >     statement that it "Does not crash when only the one file is
 >     compiled"? If you don't provide us with something with which
 >     we can reproduce the problem, we can't fix it.
 >
 >     If this is something that you _can_ reproduce, can you
 >     try to check what happens if you omit -pipe from the
 >     command line? I wouldn't be surprised if this is just a
 >     kind of out-of-memory problem, and that might be curable
 >     by not using -pipe.
 
 Thanks for your help.  For some reason my swap partition was not enabled, so 
 it ran out of physical memory (96M).  I mounted swap partition and it works 
 like a charm.  Is it possible to have an out of memory error message?
 
 Thanks Again
 Paul
 
 _________________________________________________________________
 Help STOP SPAM with the new MSN 8 and get 2 months FREE*  
 http://join.msn.com/?page=features/junkmail
 


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

* Re: c++/10874: ICE: unrecognized symbol type ""
@ 2003-05-20  0:37 bangerth
  0 siblings, 0 replies; 5+ messages in thread
From: bangerth @ 2003-05-20  0:37 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, nobody, pajones57

Synopsis: ICE: unrecognized symbol type ""

State-Changed-From-To: open->feedback
State-Changed-By: bangerth
State-Changed-When: Tue May 20 00:37:41 2003
State-Changed-Why:
    This compiles just fine for me. What do you mean by your
    statement that it "Does not crash when only the one file is 
    compiled"? If you don't provide us with something with which
    we can reproduce the problem, we can't fix it.
    
    If this is something that you _can_ reproduce, can you
    try to check what happens if you omit -pipe from the
    command line? I wouldn't be surprised if this is just a
    kind of out-of-memory problem, and that might be curable
    by not using -pipe.
    
    Thanks
      Wolfgang

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


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

* c++/10874: ICE: unrecognized symbol type ""
@ 2003-05-19 21:40 pajones57
  0 siblings, 0 replies; 5+ messages in thread
From: pajones57 @ 2003-05-19 21:40 UTC (permalink / raw)
  To: gcc-gnats


>Number:         10874
>Category:       c++
>Synopsis:       ICE: unrecognized symbol type ""
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Mon May 19 21:36:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     Paul Jones
>Release:        gcc version 3.2.2
>Organization:
>Environment:
gentoo rc1.4
>Description:
Configured with: /var/tmp/portage/gcc-3.2.2/work/gcc-3.2.2/configure --prefix=/usr --bindir=/usr/i586-pc-linux-gnu/gcc-bin/3.2 --includedir=/usr/lib/gcc-lib/i586-pc-linux-gnu/3.2.2/include --datadir=/usr/share/gcc-data/i586-pc-linux-gnu/3.2 --mandir=/usr/share/gcc-data/i586-pc-linux-gnu/3.2/man --infodir=/usr/share/gcc-data/i586-pc-linux-gnu/3.2/info --enable-shared --host=i586-pc-linux-gnu --target=i586-pc-linux-gnu --with-system-zlib --enable-languages=c,c++,ada,f77,objc,java --enable-threads=posix --enable-long-long --disable-checking --enable-cstdio=stdio --enable-clocale=generic --enable-__cxa_atexit --enable-version-specific-runtime-libs --with-gxx-include-dir=/usr/lib/gcc-lib/i586-pc-linux-gnu/3.2.2/include/g++-v3 --with-local-prefix=/usr/local --enable-shared --enable-nls --without-included-gettext
Thread model: posix
gcc version 3.2.2

This command line triggers the bug:
g++ -o nsDOMClassInfo.o -c -DOSTYPE=\"Linux2.4\" -DOSARCH=\"Linux\" -DOJI  -I../../../dist/include/xpcom -I../../../dist/include/string -I../../../dist/include/webbrwsr -I../../../dist/include/js -I../../../dist/include/widget -I../../../dist/include/gfx -I../../../dist/include/layout -I../../../dist/include/content -I../../../dist/include/caps -I../../../dist/include/docshell -I../../../dist/include/xpconnect -I../../../dist/include/pref -I../../../dist/include/oji -I../../../dist/include/necko -I../../../dist/include/java -I../../../dist/include/locale -I../../../dist/include/uriloader -I../../../dist/include/sidebar -I../../../dist/include/xuldoc -I../../../dist/include/webshell -I../../../dist/include/view
-I../../../dist/include/uconv -I../../../dist/include/shistory -I../../../dist/include/plugin -I../../../dist/include/windowwatcher -I../../../dist/include/htmlparser -I../../../dist/include/chardet -I../../../dist/include/find -I../../../dist/include/appshell -I../../../dist/include/intl -I../../../dist/include/dom -I../../../dist/include -I/var/tmp/portage/mozilla-1.3-r1/work/mozilla/dist/include/nspr      -I/usr/X11R6/include   -fPIC  -I/usr/X11R6/include -fno-rtti -fno-exceptions -Wall -Wconversion -Wpointer-arith -Wcast-align -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-long-long -march=pentium2 -pipe -Wno-deprecated -fshort-wchar -pthread -pipe  -DNDEBUG -DTRIMMED -ffunction-sections -O2 -I. -I./../build  -I/usr/X11R6/include -DMOZILLA_CLIENT -include ../../../mozilla-config.h -Wp,-MD,.deps/nsDOMClassInfo.pp nsDOMClassInfo.cpp

Error Output:
{standard input}: Assembler messages:
{standard input}:6542: Warning: end of file not at end of a line; newline inserted
{standard input}:7087: Error: unrecognized symbol type ""
g++: Internal error: Terminated (program cc1plus)
Please submit a full bug report.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
make[4]: *** [nsDOMClassInfo.o] Error 1
make[4]: *** Deleting file `nsDOMClassInfo.o'




>How-To-Repeat:
emerge mozilla-1.3 under gentoo
Does not crash when only the one file is compiled
>Fix:

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

IyAxICJuc0RPTUNsYXNzSW5mby5jcHAiCiMgMSAiPGJ1aWx0LWluPiIKIyAxICI8Y29tbWFuZCBs
aW5lPiIKIyAxICIuLi8uLi8uLi9tb3ppbGxhLWNvbmZpZy5oIiAxCiMgMiAiPGNvbW1hbmQgbGlu
ZT4iIDIKIyAxICJuc0RPTUNsYXNzSW5mby5jcHAiCiMgNDAgIm5zRE9NQ2xhc3NJbmZvLmNwcCIK
IyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNjb3JlLmgiIDEKIyA0MyAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL3hwY29tL25zY29yZS5oIgojIDEgIi92YXIvdG1wL3BvcnRhZ2UvbW96
aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3BydHlwZXMuaCIgMQoj
IDU1ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2lu
Y2x1ZGUvbnNwci9wcnR5cGVzLmgiCiMgMSAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1y
MS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJjcHVjZmcuaCIgMQojIDU2ICIvdmFy
L3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNw
ci9wcnR5cGVzLmgiIDIKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUv
My4yLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMTUxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYt
cGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiBpbnQgcHRyZGlm
Zl90OwojIDIxMyAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNs
dWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVfdDsKIyA1OSAiL3Zhci90
bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIv
cHJ0eXBlcy5oIiAyCiMgMjUyICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsv
bW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcnR5cGVzLmgiCmV4dGVybiAiQyIgewojIDI2MiAi
L3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRl
L25zcHIvcHJ0eXBlcy5oIgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgUFJVaW50ODsKIyAyNzYgIi92
YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9u
c3ByL3BydHlwZXMuaCIKdHlwZWRlZiBzaWduZWQgY2hhciBQUkludDg7CiMgMzAxICIvdmFyL3Rt
cC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9w
cnR5cGVzLmgiCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgUFJVaW50MTY7CnR5cGVkZWYgc2hvcnQg
UFJJbnQxNjsKIyAzMjYgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3pp
bGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3BydHlwZXMuaCIKdHlwZWRlZiB1bnNpZ25lZCBpbnQgUFJV
aW50MzI7CnR5cGVkZWYgaW50IFBSSW50MzI7CiMgMzcyICIvdmFyL3RtcC9wb3J0YWdlL21vemls
bGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcnR5cGVzLmgiCnR5cGVk
ZWYgbG9uZyBsb25nIFBSSW50NjQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIFBSVWludDY0
OwojIDM5NiAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlz
dC9pbmNsdWRlL25zcHIvcHJ0eXBlcy5oIgp0eXBlZGVmIGludCBQUkludG47CnR5cGVkZWYgdW5z
aWduZWQgaW50IFBSVWludG47CiMgNDA3ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIx
L3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcnR5cGVzLmgiCnR5cGVkZWYgZG91Ymxl
IFBSRmxvYXQ2NDsKCgoKCgoKdHlwZWRlZiBzaXplX3QgUFJTaXplOwoKCgoKCgoKdHlwZWRlZiBQ
UkludDMyIFBST2Zmc2V0MzI7CnR5cGVkZWYgUFJJbnQ2NCBQUk9mZnNldDY0OwoKCgoKCgoKdHlw
ZWRlZiBwdHJkaWZmX3QgUFJQdHJkaWZmOwoKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIFBS
VXB0cmRpZmY7CiMgNDQ5ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96
aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcnR5cGVzLmgiCnR5cGVkZWYgUFJJbnRuIFBSQm9vbDsK
IyA0NTkgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3Qv
aW5jbHVkZS9uc3ByL3BydHlwZXMuaCIKdHlwZWRlZiBQUlVpbnQ4IFBSUGFja2VkQm9vbDsKCgoK
Cgp0eXBlZGVmIGVudW0geyBQUl9GQUlMVVJFID0gLTEsIFBSX1NVQ0NFU1MgPSAwIH0gUFJTdGF0
dXM7CiMgNDkyICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9k
aXN0L2luY2x1ZGUvbnNwci9wcnR5cGVzLmgiCnR5cGVkZWYgbG9uZyBQUldvcmQ7CnR5cGVkZWYg
dW5zaWduZWQgbG9uZyBQUlV3b3JkOwojIDUzNCAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEu
My1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJ0eXBlcy5oIgojIDEgIi92YXIv
dG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3By
L29ic29sZXRlL3Byb3R5cGVzLmgiIDEKIyA0NSAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEu
My1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvb2Jzb2xldGUvcHJvdHlwZXMuaCIK
dHlwZWRlZiBQUlVpbnRuIHVpbnRuOwoKdHlwZWRlZiBQUkludG4gaW50bjsKIyA4MyAiL3Zhci90
bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIv
b2Jzb2xldGUvcHJvdHlwZXMuaCIKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwoj
IDI2ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVy
ZXMuaCIgMSAzCiMgMjkxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91c3IvaW5j
bHVkZS9zeXMvY2RlZnMuaCIgMSAzCiMgMjkyICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAz
CiMgMzIwICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9nbnUv
c3R1YnMuaCIgMSAzCiMgMzIxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMjcgIi91
c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgpleHRlcm4gIkMiIHsKCiMgMSAiL3Vzci9pbmNs
dWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMK
IyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3Rk
ZGVmLmgiIDEgMwojIDMwICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgp0eXBlZGVm
IHVuc2lnbmVkIGNoYXIgX191X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191X3Nob3J0
Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX191
X2xvbmc7CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3Vf
cXVhZF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nIGludCBfX3F1YWRfdDsKIyA0
OSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMwp0eXBlZGVmIHNpZ25lZCBjaGFyIF9faW50
OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191aW50OF90Owp0eXBlZGVmIHNpZ25lZCBzaG9y
dCBpbnQgX19pbnQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX3VpbnQxNl90Owp0
eXBlZGVmIHNpZ25lZCBpbnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpbnQz
Ml90OwoKX19leHRlbnNpb25fXyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50IF9faW50NjRf
dDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191aW50NjRf
dDsKCnR5cGVkZWYgX19xdWFkX3QgKl9fcWFkZHJfdDsKCnR5cGVkZWYgX191X3F1YWRfdCBfX2Rl
dl90Owp0eXBlZGVmIF9fdV9pbnQgX191aWRfdDsKdHlwZWRlZiBfX3VfaW50IF9fZ2lkX3Q7CnR5
cGVkZWYgX191X2xvbmcgX19pbm9fdDsKdHlwZWRlZiBfX3VfaW50IF9fbW9kZV90Owp0eXBlZGVm
IF9fdV9pbnQgX19ubGlua190Owp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7CnR5cGVkZWYgX19x
dWFkX3QgX19sb2ZmX3Q7CnR5cGVkZWYgaW50IF9fcGlkX3Q7CnR5cGVkZWYgaW50IF9fc3NpemVf
dDsKdHlwZWRlZiBfX3VfbG9uZyBfX3JsaW1fdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fcmxpbTY0
X3Q7CnR5cGVkZWYgX191X2ludCBfX2lkX3Q7Cgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBf
X3ZhbFsyXTsKICB9IF9fZnNpZF90OwoKCnR5cGVkZWYgaW50IF9fZGFkZHJfdDsKdHlwZWRlZiBj
aGFyICpfX2NhZGRyX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX190aW1lX3Q7CnR5cGVkZWYgdW5zaWdu
ZWQgaW50IF9fdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIGludCBfX3N1c2Vjb25kc190Owp0eXBl
ZGVmIGxvbmcgaW50IF9fc3dibGtfdDsKCnR5cGVkZWYgbG9uZyBpbnQgX19jbG9ja190OwoKCnR5
cGVkZWYgaW50IF9fY2xvY2tpZF90OwoKCnR5cGVkZWYgaW50IF9fdGltZXJfdDsKCgoKCgoKdHlw
ZWRlZiBpbnQgX19rZXlfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX2lwY19waWRf
dDsKCgoKdHlwZWRlZiBsb25nIGludCBfX2Jsa3NpemVfdDsKCgoKCnR5cGVkZWYgbG9uZyBpbnQg
X19ibGtjbnRfdDsKdHlwZWRlZiBfX3F1YWRfdCBfX2Jsa2NudDY0X3Q7CgoKdHlwZWRlZiBfX3Vf
bG9uZyBfX2ZzYmxrY250X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzYmxrY250NjRfdDsKCgp0
eXBlZGVmIF9fdV9sb25nIF9fZnNmaWxjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNmaWxj
bnQ2NF90OwoKCnR5cGVkZWYgX191X3F1YWRfdCBfX2lubzY0X3Q7CgoKdHlwZWRlZiBfX2xvZmZf
dCBfX29mZjY0X3Q7CgoKdHlwZWRlZiBsb25nIGludCBfX3Rfc2NhbGFyX3Q7CnR5cGVkZWYgdW5z
aWduZWQgbG9uZyBpbnQgX190X3VzY2FsYXJfdDsKCgp0eXBlZGVmIGludCBfX2ludHB0cl90OwoK
CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fc29ja2xlbl90OwoKCgoKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy9wdGhyZWFkdHlwZXMuaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0
eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2NoZWQuaCIgMSAzCiMgNjggIi91c3Iv
aW5jbHVkZS9iaXRzL3NjaGVkLmgiIDMKc3RydWN0IF9fc2NoZWRfcGFyYW0KICB7CiAgICBpbnQg
X19zY2hlZF9wcmlvcml0eTsKICB9OwojIDI0ICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlw
ZXMuaCIgMiAzCgoKc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrCnsKICBsb25nIGludCBfX3N0YXR1
czsKICBpbnQgX19zcGlubG9jazsKCn07CgoKCnR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX2Rlc2Ny
X3N0cnVjdCAqX3B0aHJlYWRfZGVzY3I7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX19wdGhyZWFkX2F0
dHJfcwp7CiAgaW50IF9fZGV0YWNoc3RhdGU7CiAgaW50IF9fc2NoZWRwb2xpY3k7CiAgc3RydWN0
IF9fc2NoZWRfcGFyYW0gX19zY2hlZHBhcmFtOwogIGludCBfX2luaGVyaXRzY2hlZDsKICBpbnQg
X19zY29wZTsKICBzaXplX3QgX19ndWFyZHNpemU7CiAgaW50IF9fc3RhY2thZGRyX3NldDsKICB2
b2lkICpfX3N0YWNrYWRkcjsKICBzaXplX3QgX19zdGFja3NpemU7Cn0gcHRocmVhZF9hdHRyX3Q7
CgoKCnR5cGVkZWYgc3RydWN0CnsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19jX2xvY2s7
CiAgX3B0aHJlYWRfZGVzY3IgX19jX3dhaXRpbmc7Cn0gcHRocmVhZF9jb25kX3Q7CgoKCnR5cGVk
ZWYgc3RydWN0CnsKICBpbnQgX19kdW1teTsKfSBwdGhyZWFkX2NvbmRhdHRyX3Q7CgoKdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgcHRocmVhZF9rZXlfdDsKCgoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50
IF9fbV9yZXNlcnZlZDsKICBpbnQgX19tX2NvdW50OwogIF9wdGhyZWFkX2Rlc2NyIF9fbV9vd25l
cjsKICBpbnQgX19tX2tpbmQ7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fbV9sb2NrOwp9
IHB0aHJlYWRfbXV0ZXhfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX211dGV4a2luZDsK
fSBwdGhyZWFkX211dGV4YXR0cl90OwoKCgp0eXBlZGVmIGludCBwdGhyZWFkX29uY2VfdDsKCgoK
CnR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX3J3bG9ja190CnsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFz
dGxvY2sgX19yd19sb2NrOwogIGludCBfX3J3X3JlYWRlcnM7CiAgX3B0aHJlYWRfZGVzY3IgX19y
d193cml0ZXI7CiAgX3B0aHJlYWRfZGVzY3IgX19yd19yZWFkX3dhaXRpbmc7CiAgX3B0aHJlYWRf
ZGVzY3IgX19yd193cml0ZV93YWl0aW5nOwogIGludCBfX3J3X2tpbmQ7CiAgaW50IF9fcndfcHNo
YXJlZDsKfSBwdGhyZWFkX3J3bG9ja190OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbG9j
a2tpbmQ7CiAgaW50IF9fcHNoYXJlZDsKfSBwdGhyZWFkX3J3bG9ja2F0dHJfdDsKCgoKCnR5cGVk
ZWYgdm9sYXRpbGUgaW50IHB0aHJlYWRfc3BpbmxvY2tfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CiAg
c3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fYmFfbG9jazsKICBpbnQgX19iYV9yZXF1aXJlZDsK
ICBpbnQgX19iYV9wcmVzZW50OwogIF9wdGhyZWFkX2Rlc2NyIF9fYmFfd2FpdGluZzsKfSBwdGhy
ZWFkX2JhcnJpZXJfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgaW50IF9fcHNoYXJlZDsKfSBwdGhy
ZWFkX2JhcnJpZXJhdHRyX3Q7CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBwdGhyZWFk
X3Q7CiMgMTQ0ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKIyAzMSAiL3Vzci9pbmNs
dWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKdHlwZWRlZiBfX3VfY2hhciB1X2NoYXI7CnR5cGVkZWYg
X191X3Nob3J0IHVfc2hvcnQ7CnR5cGVkZWYgX191X2ludCB1X2ludDsKdHlwZWRlZiBfX3VfbG9u
ZyB1X2xvbmc7CnR5cGVkZWYgX19xdWFkX3QgcXVhZF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgdV9x
dWFkX3Q7CnR5cGVkZWYgX19mc2lkX3QgZnNpZF90OwoKCgoKdHlwZWRlZiBfX2xvZmZfdCBsb2Zm
X3Q7CgoKCnR5cGVkZWYgX19pbm9fdCBpbm9fdDsKCgoKCgoKdHlwZWRlZiBfX2lubzY0X3QgaW5v
NjRfdDsKCgoKCnR5cGVkZWYgX19kZXZfdCBkZXZfdDsKCgoKCnR5cGVkZWYgX19naWRfdCBnaWRf
dDsKCgoKCnR5cGVkZWYgX19tb2RlX3QgbW9kZV90OwoKCgoKdHlwZWRlZiBfX25saW5rX3Qgbmxp
bmtfdDsKCgoKCnR5cGVkZWYgX191aWRfdCB1aWRfdDsKCgoKCgp0eXBlZGVmIF9fb2ZmX3Qgb2Zm
X3Q7CgoKCgoKCnR5cGVkZWYgX19vZmY2NF90IG9mZjY0X3Q7CgoKCgp0eXBlZGVmIF9fcGlkX3Qg
cGlkX3Q7CgoKCgp0eXBlZGVmIF9faWRfdCBpZF90OwoKCgoKdHlwZWRlZiBfX3NzaXplX3Qgc3Np
emVfdDsKCgoKCgp0eXBlZGVmIF9fZGFkZHJfdCBkYWRkcl90Owp0eXBlZGVmIF9fY2FkZHJfdCBj
YWRkcl90OwoKCgoKCnR5cGVkZWYgX19rZXlfdCBrZXlfdDsKIyAxMzIgIi91c3IvaW5jbHVkZS9z
eXMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwojIDU4ICIvdXNyL2lu
Y2x1ZGUvdGltZS5oIiAzCgoKdHlwZWRlZiBfX2Nsb2NrX3QgY2xvY2tfdDsKCgoKIyA3NCAiL3Vz
ci9pbmNsdWRlL3RpbWUuaCIgMwoKCnR5cGVkZWYgX190aW1lX3QgdGltZV90OwoKCgojIDkyICIv
dXNyL2luY2x1ZGUvdGltZS5oIiAzCnR5cGVkZWYgX19jbG9ja2lkX3QgY2xvY2tpZF90OwojIDEw
NCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwp0eXBlZGVmIF9fdGltZXJfdCB0aW1lcl90OwojIDEz
MyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKdHlwZWRlZiBfX3VzZWNvbmRzX3Qg
dXNlY29uZHNfdDsKCgoKdHlwZWRlZiBfX3N1c2Vjb25kc190IHN1c2Vjb25kc190OwoKCgoKCiMg
MSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGRl
Zi5oIiAxIDMKIyAxNDcgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCnR5cGVkZWYg
dW5zaWduZWQgbG9uZyBpbnQgdWxvbmc7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVzaG9y
dDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKIyAxOTAgIi91c3IvaW5jbHVkZS9zeXMvdHlw
ZXMuaCIgMwp0eXBlZGVmIGludCBpbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1FJ
X18pKSk7CnR5cGVkZWYgaW50IGludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJ
X18pKSk7CnR5cGVkZWYgaW50IGludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJ
X18pKSk7CnR5cGVkZWYgaW50IGludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJ
X18pKSk7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9f
bW9kZV9fIChfX1FJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MTZfdCBfX2F0dHJp
YnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQz
Ml90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVk
IGludCB1X2ludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJX18pKSk7Cgp0eXBl
ZGVmIGludCByZWdpc3Rlcl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX193b3JkX18pKSk7
CiMgMjEyICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZW5k
aWFuLmgiIDEgMwojIDM3ICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy9lbmRpYW4uaCIgMSAzCiMgMzggIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMiAzCiMg
MjEzICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5
cy9zZWxlY3QuaCIgMSAzCiMgMzEgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9zZWxlY3QuaCIgMSAzCiMgMzIgIi91c3IvaW5jbHVkZS9zeXMvc2Vs
ZWN0LmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDEgMwojIDIzICIv
dXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMwp0eXBlZGVmIGludCBfX3NpZ19hdG9taWNfdDsK
CgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgdW5zaWduZWQgbG9uZyBpbnQgX192YWxbKDEwMjQg
LyAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSldOwogIH0gX19zaWdzZXRfdDsKIyAz
NSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKCnR5cGVkZWYgX19zaWdzZXRfdCBz
aWdzZXRfdDsKCgoKCgojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwojIDExNiAiL3Vzci9p
bmNsdWRlL3RpbWUuaCIgMwpzdHJ1Y3QgdGltZXNwZWMKICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7
CiAgICBsb25nIGludCB0dl9uc2VjOwogIH07CiMgNDUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0
LmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDEgMwojIDY3ICIvdXNyL2lu
Y2x1ZGUvYml0cy90aW1lLmgiIDMKc3RydWN0IHRpbWV2YWwKICB7CiAgICBfX3RpbWVfdCB0dl9z
ZWM7CiAgICBfX3N1c2Vjb25kc190IHR2X3VzZWM7CiAgfTsKIyA0NyAiL3Vzci9pbmNsdWRlL3N5
cy9zZWxlY3QuaCIgMiAzCiMgNTUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKdHlwZWRl
ZiBsb25nIGludCBfX2ZkX21hc2s7CiMgNjcgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMK
dHlwZWRlZiBzdHJ1Y3QKICB7CgoKCiAgICBfX2ZkX21hc2sgZmRzX2JpdHNbMTAyNCAvICg4ICog
c2l6ZW9mIChfX2ZkX21hc2spKV07CgoKCgoKICB9IGZkX3NldDsKCgoKCgoKdHlwZWRlZiBfX2Zk
X21hc2sgZmRfbWFzazsKIyA5OSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwpleHRlcm4g
IkMiIHsKCgoKCgoKZXh0ZXJuIGludCBzZWxlY3QgKGludCBfX25mZHMsIGZkX3NldCAqX19yZXN0
cmljdCBfX3JlYWRmZHMsCiAgICAgICAgICAgICAgICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX193
cml0ZWZkcywKICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZk
cywKICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0IF9fdGltZW91
dCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBwc2VsZWN0IChpbnQgX19uZmRzLCBmZF9zZXQg
Kl9fcmVzdHJpY3QgX19yZWFkZmRzLAogICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0
cmljdCBfX3dyaXRlZmRzLAogICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBf
X2V4Y2VwdGZkcywKICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9f
cmVzdHJpY3QgX190aW1lb3V0LAogICAgICAgICAgICAgICAgICAgIGNvbnN0IF9fc2lnc2V0X3Qg
Kl9fcmVzdHJpY3QgX19zaWdtYXNrKSB0aHJvdyAoKTsKCgp9CiMgMjE2ICIvdXNyL2luY2x1ZGUv
c3lzL3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCIgMSAz
CiMgMjE5ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgoKdHlwZWRlZiBfX2Jsa3Np
emVfdCBibGtzaXplX3Q7CgoKCgoKCnR5cGVkZWYgX19ibGtjbnRfdCBibGtjbnRfdDsKCgoKdHlw
ZWRlZiBfX2ZzYmxrY250X3QgZnNibGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzZmlsY250X3QgZnNm
aWxjbnRfdDsKIyAyNTcgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIF9fYmxr
Y250NjRfdCBibGtjbnQ2NF90Owp0eXBlZGVmIF9fZnNibGtjbnQ2NF90IGZzYmxrY250NjRfdDsK
dHlwZWRlZiBfX2ZzZmlsY250NjRfdCBmc2ZpbGNudDY0X3Q7CgoKfQojIDg0ICIvdmFyL3RtcC9w
b3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9vYnNv
bGV0ZS9wcm90eXBlcy5oIiAyCiMgMTA1ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIx
L3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9vYnNvbGV0ZS9wcm90eXBlcy5oIgp0eXBl
ZGVmIFBSVWludDY0IHVpbnQ2NDsKIyAxMTQgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMt
cjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL29ic29sZXRlL3Byb3R5cGVzLmgiCnR5
cGVkZWYgUFJVaW50MzIgdWludDMyOwojIDEyNSAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEu
My1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvb2Jzb2xldGUvcHJvdHlwZXMuaCIK
dHlwZWRlZiBQUlVpbnQxNiB1aW50MTY7CgoKCgoKCgp0eXBlZGVmIFBSVWludDggdWludDg7CiMg
MTQyICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2lu
Y2x1ZGUvbnNwci9vYnNvbGV0ZS9wcm90eXBlcy5oIgp0eXBlZGVmIFBSSW50NjQgaW50NjQ7CiMg
MTU0ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2lu
Y2x1ZGUvbnNwci9vYnNvbGV0ZS9wcm90eXBlcy5oIgp0eXBlZGVmIFBSSW50MzIgaW50MzI7CiMg
MTY4ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2lu
Y2x1ZGUvbnNwci9vYnNvbGV0ZS9wcm90eXBlcy5oIgp0eXBlZGVmIFBSSW50MTYgaW50MTY7CiMg
MTc4ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2lu
Y2x1ZGUvbnNwci9vYnNvbGV0ZS9wcm90eXBlcy5oIgp0eXBlZGVmIFBSSW50OCBpbnQ4OwoKCnR5
cGVkZWYgUFJGbG9hdDY0IGZsb2F0NjQ7CnR5cGVkZWYgUFJVcHRyZGlmZiB1cHRyZGlmZl90Owp0
eXBlZGVmIFBSVXdvcmQgdXByd29yZF90Owp0eXBlZGVmIFBSV29yZCBwcndvcmRfdDsKIyA1MzUg
Ii92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVk
ZS9uc3ByL3BydHlwZXMuaCIgMgoKCgoKCn0KIyA0NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29tL25zY29yZS5oIiAyCiMgMTQ5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNjb3Jl
LmgiCnR5cGVkZWYgUFJVaW50MzIgbnNyZXN1bHQ7CgoKCgoKCiMgMSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL3hwY29tL25zRXJyb3IuaCIgMQojIDI5NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29tL25zRXJyb3IuaCIKZXh0ZXJuIG5zcmVzdWx0Ck5TX0Vycm9yQWNjb3JkaW5nVG9OU1BSKCk7
CiMgMTU3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNjb3JlLmgiIDIKIyAyMjQgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc2NvcmUuaCIKICAgIHR5cGVkZWYgUFJVaW50MTYg
UFJVbmljaGFyOwojIDQxICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICJuc0RPTUNsYXNzSW5m
by5oIiAxCiMgNDMgIm5zRE9NQ2xhc3NJbmZvLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L2RvbS9uc0lET01DbGFzc0luZm8uaCIgMQojIDQzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9t
L25zSURPTUNsYXNzSW5mby5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lD
bGFzc0luZm8uaCIgMQojIDEwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJQ2xhc3NJ
bmZvLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN1cHBvcnRzLmgiIDEK
IyAxMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN1cHBvcnRzLmgiCiMgMSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zcm9vdGlkbC5oIiAxCiMgMTIgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS94cGNvbS9uc3Jvb3RpZGwuaCIKIyAxICIvdmFyL3RtcC9wb3J0YWdlL21vemls
bGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcnRpbWUuaCIgMQojIDQ4
ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1
ZGUvbnNwci9wcnRpbWUuaCIKIyAxICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dv
cmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmxvbmcuaCIgMQojIDQ4ICIvdmFyL3RtcC9w
b3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmxv
bmcuaCIKZXh0ZXJuICJDIiB7CiMgNjYgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEv
d29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3BybG9uZy5oIgpleHRlcm4gUFJJbnQ2NCBM
TF9NYXhJbnQodm9pZCk7CmV4dGVybiBQUkludDY0IExMX01pbkludCh2b2lkKTsKZXh0ZXJuIFBS
SW50NjQgTExfWmVybyh2b2lkKTsKIyA0MjMgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMt
cjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3BybG9uZy5oIgp9CiMgNDkgIi92YXIv
dG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3By
L3BydGltZS5oIiAyCgpleHRlcm4gIkMiIHsKIyA3NyAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxh
LTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJ0aW1lLmgiCnR5cGVkZWYg
UFJJbnQ2NCBQUlRpbWU7CgoKCgoKCnR5cGVkZWYgc3RydWN0IFBSVGltZVBhcmFtZXRlcnMgewog
ICAgUFJJbnQzMiB0cF9nbXRfb2Zmc2V0OwogICAgUFJJbnQzMiB0cF9kc3Rfb2Zmc2V0Owp9IFBS
VGltZVBhcmFtZXRlcnM7CiMgMTEyICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dv
cmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcnRpbWUuaCIKdHlwZWRlZiBzdHJ1Y3QgUFJF
eHBsb2RlZFRpbWUgewogICAgUFJJbnQzMiB0bV91c2VjOwogICAgUFJJbnQzMiB0bV9zZWM7Cgog
ICAgUFJJbnQzMiB0bV9taW47CiAgICBQUkludDMyIHRtX2hvdXI7CiAgICBQUkludDMyIHRtX21k
YXk7CgogICAgUFJJbnQzMiB0bV9tb250aDsKICAgIFBSSW50MTYgdG1feWVhcjsKCgogICAgUFJJ
bnQ4IHRtX3dkYXk7CgogICAgUFJJbnQxNiB0bV95ZGF5OwoKCiAgICBQUlRpbWVQYXJhbWV0ZXJz
IHRtX3BhcmFtczsKfSBQUkV4cGxvZGVkVGltZTsKIyAxNTUgIi92YXIvdG1wL3BvcnRhZ2UvbW96
aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3BydGltZS5oIgp0eXBl
ZGVmIFBSVGltZVBhcmFtZXRlcnMgKCAqUFJUaW1lUGFyYW1GbikoY29uc3QgUFJFeHBsb2RlZFRp
bWUgKmdtdCk7CiMgMTc3ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96
aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcnRpbWUuaCIKZXh0ZXJuIFBSVGltZQoKUFJfTm93KHZv
aWQpOwojIDE5MSAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEv
ZGlzdC9pbmNsdWRlL25zcHIvcHJ0aW1lLmgiCmV4dGVybiB2b2lkIFBSX0V4cGxvZGVUaW1lKAog
ICAgUFJUaW1lIHVzZWNzLCBQUlRpbWVQYXJhbUZuIHBhcmFtcywgUFJFeHBsb2RlZFRpbWUgKmV4
cGxvZGVkKTsKCgoKCgpleHRlcm4gUFJUaW1lCgpQUl9JbXBsb2RlVGltZShjb25zdCBQUkV4cGxv
ZGVkVGltZSAqZXhwbG9kZWQpOwojIDIxNCAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1y
MS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJ0aW1lLmgiCmV4dGVybiB2b2lkIFBS
X05vcm1hbGl6ZVRpbWUoCiAgICBQUkV4cGxvZGVkVGltZSAqZXhwbG9kZWQsIFBSVGltZVBhcmFt
Rm4gcGFyYW1zKTsKCgoKCgoKZXh0ZXJuIFBSVGltZVBhcmFtZXRlcnMgUFJfTG9jYWxUaW1lUGFy
YW1ldGVycyhjb25zdCBQUkV4cGxvZGVkVGltZSAqZ210KTsKCgpleHRlcm4gUFJUaW1lUGFyYW1l
dGVycyBQUl9HTVRQYXJhbWV0ZXJzKGNvbnN0IFBSRXhwbG9kZWRUaW1lICpnbXQpOwoKCgoKCmV4
dGVybiBQUlRpbWVQYXJhbWV0ZXJzIFBSX1VTUGFjaWZpY1RpbWVQYXJhbWV0ZXJzKGNvbnN0IFBS
RXhwbG9kZWRUaW1lICpnbXQpOwojIDI2NCAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1y
MS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJ0aW1lLmgiCmV4dGVybiBQUlN0YXR1
cyBQUl9QYXJzZVRpbWVTdHJpbmcgKAogICAgICAgIGNvbnN0IGNoYXIgKnN0cmluZywKICAgICAg
ICBQUkJvb2wgZGVmYXVsdF90b19nbXQsCiAgICAgICAgUFJUaW1lICpyZXN1bHQpOwojIDI4MSAi
L3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRl
L25zcHIvcHJ0aW1lLmgiCmV4dGVybiBQUlVpbnQzMiBQUl9Gb3JtYXRUaW1lKGNoYXIgKmJ1Ziwg
aW50IGJ1ZmxlbiwgY29uc3QgY2hhciAqZm10LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgUFJFeHBsb2RlZFRpbWUgKnRtKTsKCgoKCmV4dGVybiBQUlVp
bnQzMgpQUl9Gb3JtYXRUaW1lVVNFbmdsaXNoKCBjaGFyKiBidWYsIFBSVWludDMyIGJ1ZlNpemUs
CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZvcm1hdCwgY29uc3QgUFJFeHBs
b2RlZFRpbWUqIHRtICk7CgoKCn0KIyAxMyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25z
cm9vdGlkbC5oIiAyCgoKCmNsYXNzIG5zQVN0cmluZzsKY2xhc3MgbnNBQ1N0cmluZzsKIyAxMSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN1cHBvcnRzLmgiIDIKIyAxMTYgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0cy5oIgojIDEgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0c0Jhc2UuaCIgMQojIDQ0ICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUveHBjb20vbnNJU3VwcG9ydHNCYXNlLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3hwY29tL25zSUQuaCIgMQojIDQxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJRC5o
IgojIDEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMSAzCiMgMjggIi91c3IvaW5jbHVkZS9zdHJp
bmcuaCIgMwpleHRlcm4gIkMiIHsKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxp
bnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzNCAiL3Vzci9pbmNsdWRlL3N0
cmluZy5oIiAyIDMKCgoKCmV4dGVybiB2b2lkICptZW1jcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19k
ZXN0LAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMs
IHNpemVfdCBfX24pIHRocm93ICgpOwoKCmV4dGVybiB2b2lkICptZW1tb3ZlICh2b2lkICpfX2Rl
c3QsIF9fY29uc3Qgdm9pZCAqX19zcmMsIHNpemVfdCBfX24pCiAgICAgdGhyb3cgKCk7CgoKCgoK
CmV4dGVybiB2b2lkICptZW1jY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCB2
b2lkICpfX3Jlc3RyaWN0IF9fc3JjLAogICAgICAgICAgICAgICAgICAgICAgaW50IF9fYywgc2l6
ZV90IF9fbikKICAgICB0aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9pZCAqbWVtc2V0ICh2b2lkICpf
X3MsIGludCBfX2MsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgbWVtY21wIChf
X2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9fbikKICAgICB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gdm9pZCAqbWVtY2hy
IChfX2NvbnN0IHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICAgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoKZXh0ZXJuIHZvaWQgKnJhd21lbWNociAo
X19jb25zdCB2b2lkICpfX3MsIGludCBfX2MpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwoKCmV4dGVybiB2b2lkICptZW1yY2hyIChfX2NvbnN0IHZvaWQgKl9fcywgaW50IF9f
Yywgc2l6ZV90IF9fbikKICAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CgoKCgoKZXh0ZXJuIGNoYXIgKnN0cmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBjaGFyICpz
dHJuY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0
ZXJuIGNoYXIgKnN0cmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX3NyYykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBjaGFyICpzdHJuY2F0IChj
aGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLAog
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBz
dHJjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCBzdHJuY21wIChfX2Nv
bnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90IF9fbikKICAgICB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gaW50IHN0cmNvbGwgKF9f
Y29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtIChjaGFyICpfX3Jl
c3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19zcmMsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgoKCgojIDEgIi91c3IvaW5jbHVk
ZS94bG9jYWxlLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUveGxvY2FsZS5oIiAzCnR5cGVkZWYg
c3RydWN0IF9fbG9jYWxlX3N0cnVjdAp7CgogIHN0cnVjdCBsb2NhbGVfZGF0YSAqX19sb2NhbGVz
WzEzXTsKCgogIGNvbnN0IHVuc2lnbmVkIHNob3J0IGludCAqX19jdHlwZV9iOwogIGNvbnN0IGlu
dCAqX19jdHlwZV90b2xvd2VyOwogIGNvbnN0IGludCAqX19jdHlwZV90b3VwcGVyOwoKCiAgY29u
c3QgY2hhciAqX19uYW1lc1sxM107Cn0gKl9fbG9jYWxlX3Q7CiMgMTE1ICIvdXNyL2luY2x1ZGUv
c3RyaW5nLmgiIDIgMwoKCmV4dGVybiBpbnQgc3RyY29sbF9sIChfX2NvbnN0IGNoYXIgKl9fczEs
IF9fY29uc3QgY2hhciAqX19zMiwgX19sb2NhbGVfdCBfX2wpCiAgICAgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gc2l6ZV90IHN0cnhmcm1fbCAoY2hhciAqX19k
ZXN0LCBfX2NvbnN0IGNoYXIgKl9fc3JjLCBzaXplX3QgX19uLAogICAgICAgICAgICAgICAgICAg
ICAgICAgX19sb2NhbGVfdCBfX2wpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmR1cCAo
X19jb25zdCBjaGFyICpfX3MpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7
CgoKCgoKCmV4dGVybiBjaGFyICpzdHJuZHVwIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXpl
X3QgX19uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMTYw
ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKCgpleHRlcm4gY2hhciAqc3RyY2hyIChfX2NvbnN0
IGNoYXIgKl9fcywgaW50IF9fYykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CgpleHRlcm4gY2hhciAqc3RycmNociAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBjaGFyICpzdHJjaHJu
dWwgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCgoKCgpleHRlcm4gc2l6ZV90IHN0cmNzcG4gKF9fY29uc3QgY2hhciAqX19z
LCBfX2NvbnN0IGNoYXIgKl9fcmVqZWN0KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOwoKCmV4dGVybiBzaXplX3Qgc3Ryc3BuIChfX2NvbnN0IGNoYXIgKl9fcywgX19j
b25zdCBjaGFyICpfX2FjY2VwdCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJl
X18pKTsKCmV4dGVybiBjaGFyICpzdHJwYnJrIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBj
aGFyICpfX2FjY2VwdCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
CmV4dGVybiBjaGFyICpzdHJzdHIgKF9fY29uc3QgY2hhciAqX19oYXlzdGFjaywgX19jb25zdCBj
aGFyICpfX25lZWRsZSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
CgoKZXh0ZXJuIGNoYXIgKnN0cnRvayAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2RlbGltKQogICAgIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKl9f
c3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgICAg
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sCiAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVfcHRyKSB0aHJvdyAoKTsKCmV4dGVybiBjaGFyICpz
dHJ0b2tfciAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X2RlbGltLAogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9w
dHIpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmNhc2VzdHIgKF9fY29uc3QgY2hhciAq
X19oYXlzdGFjaywgX19jb25zdCBjaGFyICpfX25lZWRsZSkKICAgICB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgoKZXh0ZXJuIHZvaWQgKm1lbW1lbSAoX19jb25zdCB2
b2lkICpfX2hheXN0YWNrLCBzaXplX3QgX19oYXlzdGFja2xlbiwKICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCB2b2lkICpfX25lZWRsZSwgc2l6ZV90IF9fbmVlZGxlbGVuKQogICAgIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gdm9pZCAqX19tZW1wY3B5
ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKZXh0ZXJuIHZv
aWQgKm1lbXBjcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAoKTsK
CgoKCgpleHRlcm4gc2l6ZV90IHN0cmxlbiAoX19jb25zdCBjaGFyICpfX3MpIHRocm93ICgpIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBzaXplX3Qgc3RybmxlbiAoX19j
b25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9fbWF4bGVuKQogICAgIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBjaGFyICpzdHJlcnJvciAoaW50IF9f
ZXJybnVtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFyICpzdHJlcnJvcl9yIChpbnQgX19lcnJu
dW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pIHRocm93ICgpOwoKCgoKZXh0ZXJuIHZv
aWQgX19iemVybyAodm9pZCAqX19zLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHZv
aWQgYmNvcHkgKF9fY29uc3Qgdm9pZCAqX19zcmMsIHZvaWQgKl9fZGVzdCwgc2l6ZV90IF9fbikg
dGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90IF9fbikgdGhy
b3cgKCk7CgoKZXh0ZXJuIGludCBiY21wIChfX2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9p
ZCAqX19zMiwgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJl
X18pKTsKCgpleHRlcm4gY2hhciAqaW5kZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAqcmluZGV4
IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CgoKCmV4dGVybiBpbnQgZmZzIChpbnQgX19pKSB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IGZmc2wgKGxvbmcgaW50IF9fbCkgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4g
aW50IGZmc2xsIChsb25nIGxvbmcgaW50IF9fbGwpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBzdHJjYXNlY21wIChfX2NvbnN0IGNoYXIg
Kl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCgpleHRlcm4gaW50IHN0cm5jYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEs
IF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19wdXJlX18pKTsKCgoKCgpleHRlcm4gaW50IHN0cmNhc2VjbXBfbCAoX19jb25zdCBj
aGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsCiAgICAgICAgICAgICAgICAgICAgICAgICBf
X2xvY2FsZV90IF9fbG9jKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4
dGVybiBpbnQgc3RybmNhc2VjbXBfbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIg
Kl9fczIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgX19sb2NhbGVfdCBf
X2xvYykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgpleHRl
cm4gY2hhciAqc3Ryc2VwIChjaGFyICoqX19yZXN0cmljdCBfX3N0cmluZ3AsCiAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltKSB0aHJvdyAoKTsKCgoK
CmV4dGVybiBpbnQgc3RydmVyc2NtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIg
Kl9fczIpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJu
IGNoYXIgKnN0cnNpZ25hbCAoaW50IF9fc2lnKSB0aHJvdyAoKTsKCgpleHRlcm4gY2hhciAqX19z
dHBjcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19zcmMpCiAgICAgdGhyb3cgKCk7CmV4dGVybiBjaGFyICpzdHBjcHkgKGNoYXIgKl9fcmVzdHJp
Y3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAgdGhyb3cgKCk7
CgoKCmV4dGVybiBjaGFyICpfX3N0cG5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAg
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVf
dCBfX24pIHRocm93ICgpOwpleHRlcm4gY2hhciAqc3RwbmNweSAoY2hhciAqX19yZXN0cmljdCBf
X2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19z
cmMsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCmV4dGVybiBjaGFyICpzdHJmcnkgKGNoYXIgKl9f
c3RyaW5nKSB0aHJvdyAoKTsKCgpleHRlcm4gdm9pZCAqbWVtZnJvYiAodm9pZCAqX19zLCBzaXpl
X3QgX19uKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKmJhc2VuYW1lIChfX2NvbnN0IGNo
YXIgKl9fZmlsZW5hbWUpIHRocm93ICgpOwojIDM3OSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAz
Cn0KIyA0MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUQuaCIgMgojIDUyICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJRC5oIgpzdHJ1Y3QgbnNJRCB7CgoKCgoKICBQUlVp
bnQzMiBtMDsKICBQUlVpbnQxNiBtMTsKICBQUlVpbnQxNiBtMjsKICBQUlVpbnQ4IG0zWzhdOwoj
IDc0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJRC5oIgogIGlubGluZSBQUkJvb2wg
RXF1YWxzKGNvbnN0IG5zSUQmIG90aGVyKSBjb25zdCB7CgoKCgoKCgogICAgcmV0dXJuIChQUkJv
b2wpCiAgICAgICgoKChQUlVpbnQzMiopICZtMClbMF0gPT0gKChQUlVpbnQzMiopICZvdGhlci5t
MClbMF0pICYmCiAgICAgICAoKChQUlVpbnQzMiopICZtMClbMV0gPT0gKChQUlVpbnQzMiopICZv
dGhlci5tMClbMV0pICYmCiAgICAgICAoKChQUlVpbnQzMiopICZtMClbMl0gPT0gKChQUlVpbnQz
MiopICZvdGhlci5tMClbMl0pICYmCiAgICAgICAoKChQUlVpbnQzMiopICZtMClbM10gPT0gKChQ
UlVpbnQzMiopICZvdGhlci5tMClbM10pKTsKICB9CgoKCgoKICBQUkJvb2wgUGFyc2UoY29uc3Qg
Y2hhciAqYUlEU3RyKTsKCgoKCgogIGNoYXIqIFRvU3RyaW5nKCkgY29uc3Q7Cgp9OwoKCgoKCnR5
cGVkZWYgbnNJRCBuc0NJRDsKIyAxMjAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lE
LmgiCnR5cGVkZWYgbnNJRCBuc0lJRDsKIyA0NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29t
L25zSVN1cHBvcnRzQmFzZS5oIiAyCiMgNzEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9u
c0lTdXBwb3J0c0Jhc2UuaCIKdHlwZWRlZiBQUlVpbnQzMiBuc3JlZmNudDsKIyA4MCAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN1cHBvcnRzQmFzZS5oIgpjbGFzcyBuc0lTdXBwb3J0
cyB7CnB1YmxpYzoKIyA5NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN1cHBvcnRz
QmFzZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgUXVlcnlJbnRlcmZhY2UoY29uc3QgbnNJSUQmIGFJ
SUQsIHZvaWQqKiBhSW5zdGFuY2VQdHIpID0gMDsKCgoKCgoKCiAgdmlydHVhbCBuc3JlZmNudCBB
ZGRSZWYodm9pZCkgPSAwOwojIDExNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN1
cHBvcnRzQmFzZS5oIgogIHZpcnR1YWwgbnNyZWZjbnQgUmVsZWFzZSh2b2lkKSA9IDA7CgoKfTsK
IyAxMTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0cy5oIiAyCgojIDEg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0c1V0aWxzLmgiIDEKIyA1NyAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN1cHBvcnRzVXRpbHMuaCIKIyAxICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNEZWJ1Zy5oIiAxCiMgNjIgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS94cGNvbS9uc0RlYnVnLmgiCmNsYXNzIG5zRGVidWcgewpwdWJsaWM6CgoKCgoKCiAg
c3RhdGljIHZvaWQgQWJvcnRJZkZhbHNlKGNvbnN0IGNoYXIqIGFTdHIsIGNvbnN0IGNoYXIqIGFF
eHByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYUZpbGUs
IFBSSW50biBhTGluZSk7CiMgODAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0RlYnVn
LmgiCiAgc3RhdGljIHZvaWQgV2FybklmRmFsc2UoY29uc3QgY2hhciogYVN0ciwgY29uc3QgY2hh
ciogYUV4cHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFG
aWxlLCBQUkludG4gYUxpbmUpOwojIDk4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNE
ZWJ1Zy5oIgogIHN0YXRpYyB2b2lkIFNldFdhcm5pbmdNZXNzYWdlQm94RW5hYmxlKFBSQm9vbCBh
T25PZmYpOwoKCgoKICBzdGF0aWMgUFJCb29sIEdldFdhcm5pbmdNZXNzYWdlQm94RW5hYmxlKHZv
aWQpOwojIDExNiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zRGVidWcuaCIKICBzdGF0
aWMgdm9pZCBBYm9ydChjb25zdCBjaGFyKiBhRmlsZSwgUFJJbnRuIGFMaW5lKTsKCgoKCiAgc3Rh
dGljIHZvaWQgQnJlYWsoY29uc3QgY2hhciogYUZpbGUsIFBSSW50biBhTGluZSk7CgoKCgogIHN0
YXRpYyB2b2lkIFByZUNvbmRpdGlvbihjb25zdCBjaGFyKiBhU3RyLCBjb25zdCBjaGFyKiBhRXhw
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFGaWxlLCBQ
UkludG4gYUxpbmUpOwoKCgoKICBzdGF0aWMgdm9pZCBQb3N0Q29uZGl0aW9uKGNvbnN0IGNoYXIq
IGFTdHIsIGNvbnN0IGNoYXIqIGFFeHByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGFGaWxlLCBQUkludG4gYUxpbmUpOwoKCgoKICBzdGF0aWMgdm9pZCBB
c3NlcnRpb24oY29uc3QgY2hhciogYVN0ciwgY29uc3QgY2hhciogYUV4cHIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhRmlsZSwgUFJJbnRuIGFMaW5lKTsKCgoK
CiAgc3RhdGljIHZvaWQgTm90WWV0SW1wbGVtZW50ZWQoY29uc3QgY2hhciogYU1lc3NhZ2UsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFGaWxlLCBQ
UkludG4gYUxpbmUpOwoKCgoKICBzdGF0aWMgdm9pZCBOb3RSZWFjaGVkKGNvbnN0IGNoYXIqIGFN
ZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFGaWxl
LCBQUkludG4gYUxpbmUpOwoKCgoKICBzdGF0aWMgdm9pZCBFcnJvcihjb25zdCBjaGFyKiBhTWVz
c2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYUZpbGUsIFBSSW50
biBhTGluZSk7CgoKCgogIHN0YXRpYyB2b2lkIFdhcm5pbmcoY29uc3QgY2hhciogYU1lc3NhZ2Us
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYUZpbGUsIFBSSW50biBh
TGluZSk7Cn07CiMgNTggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0c1V0
aWxzLmgiIDIKCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJU3VwcG9ydHNJ
bXBsLmgiIDEKIyA0OCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN1cHBvcnRzSW1w
bC5oIgojIDEgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rp
c3QvaW5jbHVkZS9uc3ByL3ByYXRvbS5oIiAxCiMgNDQgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxs
YS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3ByYXRvbS5oIgojIDEgIi92
YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9u
c3ByL3BybG9jay5oIiAxCiMgNTAgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29y
ay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3BybG9jay5oIgpleHRlcm4gIkMiIHsKIyA2MyAi
L3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRl
L25zcHIvcHJsb2NrLmgiCnR5cGVkZWYgc3RydWN0IFBSTG9jayBQUkxvY2s7CiMgODAgIi92YXIv
dG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3By
L3BybG9jay5oIgpleHRlcm4gUFJMb2NrKiBQUl9OZXdMb2NrKHZvaWQpOwojIDkxICIvdmFyL3Rt
cC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9w
cmxvY2suaCIKZXh0ZXJuIHZvaWQgUFJfRGVzdHJveUxvY2soUFJMb2NrICpsb2NrKTsKIyAxMDIg
Ii92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVk
ZS9uc3ByL3BybG9jay5oIgpleHRlcm4gdm9pZCBQUl9Mb2NrKFBSTG9jayAqbG9jayk7CiMgMTE0
ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1
ZGUvbnNwci9wcmxvY2suaCIKZXh0ZXJuIFBSU3RhdHVzIFBSX1VubG9jayhQUkxvY2sgKmxvY2sp
OwoKfQojIDQ1ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9k
aXN0L2luY2x1ZGUvbnNwci9wcmF0b20uaCIgMgoKZXh0ZXJuICJDIiB7CiMgNTcgIi92YXIvdG1w
L3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3By
YXRvbS5oIgpleHRlcm4gUFJJbnQzMiBQUl9BdG9taWNJbmNyZW1lbnQoUFJJbnQzMiAqdmFsKTsK
IyA2OCAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9p
bmNsdWRlL25zcHIvcHJhdG9tLmgiCmV4dGVybiBQUkludDMyIFBSX0F0b21pY0RlY3JlbWVudChQ
UkludDMyICp2YWwpOwojIDgwICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsv
bW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmF0b20uaCIKZXh0ZXJuIFBSSW50MzIgUFJfQXRv
bWljU2V0KFBSSW50MzIgKnZhbCwgUFJJbnQzMiBuZXd2YWwpOwojIDkyICIvdmFyL3RtcC9wb3J0
YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmF0b20u
aCIKZXh0ZXJuIFBSSW50MzIgUFJfQXRvbWljQWRkKFBSSW50MzIgKnB0ciwgUFJJbnQzMiB2YWwp
OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgUFJTdGFja0VsZW1TdHIgUFJTdGFja0VsZW07CgpzdHJ1Y3Qg
UFJTdGFja0VsZW1TdHIgewogICAgUFJTdGFja0VsZW0gKnByc3RrX2VsZW1fbmV4dDsKCn07Cgp0
eXBlZGVmIHN0cnVjdCBQUlN0YWNrU3RyIFBSU3RhY2s7CiMgMTE1ICIvdmFyL3RtcC9wb3J0YWdl
L21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmF0b20uaCIK
ZXh0ZXJuIFBSU3RhY2sgKiBQUl9DcmVhdGVTdGFjayhjb25zdCBjaGFyICpzdGFja19uYW1lKTsK
IyAxMjcgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3Qv
aW5jbHVkZS9uc3ByL3ByYXRvbS5oIgpleHRlcm4gdm9pZCBQUl9TdGFja1B1c2goUFJTdGFjayAq
c3RhY2ssIFBSU3RhY2tFbGVtICpzdGFja19lbGVtKTsKIyAxNDAgIi92YXIvdG1wL3BvcnRhZ2Uv
bW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3ByYXRvbS5oIgpl
eHRlcm4gUFJTdGFja0VsZW0gKiBQUl9TdGFja1BvcChQUlN0YWNrICpzdGFjayk7CiMgMTU0ICIv
dmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUv
bnNwci9wcmF0b20uaCIKZXh0ZXJuIFBSU3RhdHVzIFBSX0Rlc3Ryb3lTdGFjayhQUlN0YWNrICpz
dGFjayk7Cgp9CiMgNDkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0c0lt
cGwuaCIgMgojIDYyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJU3VwcG9ydHNJbXBs
LmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zVHJhY2VSZWZjbnQuaCIgMQoj
IDQxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNUcmFjZVJlZmNudC5oIgojIDEgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0NvbS5oIiAxCiMgNDIgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS94cGNvbS9uc1RyYWNlUmVmY250LmgiIDIKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9p
NTg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGlvLmgiIDEgMwojIDM5ICIvdXNyL2xp
Yi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRl
cm4gIkMiIHsKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4y
L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDQ0ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGlu
dXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkaW8uaCIgMiAzCiMgNTMgIi91c3IvbGliL2djYy1saWIv
aTU4Ni1wYy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRpby5oIiAzCgoKdHlwZWRlZiBzdHJ1
Y3QgX0lPX0ZJTEUgRklMRTsKCgoKCgojIDcxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGlu
dXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkaW8uaCIgMwp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBf
X0ZJTEU7CiMgODEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4yLjIvaW5j
bHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDEgMwojIDMyICIvdXNy
L2luY2x1ZGUvbGliaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMSAzCiMg
MTQgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMwojIDEgIi91c3IvbGliL2djYy1saWIvaTU4
Ni1wYy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzU0ICIvdXNyL2xp
Yi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgd2ludF90OwojIDE1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgi
IDIgMwojIDI0ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUv
d2NoYXIuaCIgMSAzCiMgNDggIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzCiMgMSAiL3Vzci9saWIv
Z2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyA0
OSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93Y2hh
ci5oIiAxIDMKIyA1MSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwojIDYzICIvdXNyL2luY2x1
ZGUvd2NoYXIuaCIgMwoKCgoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19jb3VudDsKICB1
bmlvbgogIHsKICAgIHdpbnRfdCBfX3djaDsKICAgIGNoYXIgX193Y2hiWzRdOwogIH0gX192YWx1
ZTsKfSBfX21ic3RhdGVfdDsKIyAyNSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKCnR5
cGVkZWYgc3RydWN0CnsKICBfX29mZl90IF9fcG9zOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7Cn0g
X0dfZnBvc190Owp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmY2NF90IF9fcG9zOwogIF9fbWJzdGF0
ZV90IF9fc3RhdGU7Cn0gX0dfZnBvczY0X3Q7CiMgNDQgIi91c3IvaW5jbHVkZS9fR19jb25maWcu
aCIgMwojIDEgIi91c3IvaW5jbHVkZS9nY29udi5oIiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRlL2dj
b252LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAzCiMgNDggIi91c3IvaW5jbHVk
ZS93Y2hhci5oIiAzCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIu
Mi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyA0OSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwoj
IDYzICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwoKIyAyOSAiL3Vzci9pbmNsdWRlL2djb252Lmgi
IDIgMwoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNs
dWRlL3N0ZGRlZi5oIiAxIDMKIyAzMiAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMwoKCgoKCmVu
dW0KewogIF9fR0NPTlZfT0sgPSAwLAogIF9fR0NPTlZfTk9DT05WLAogIF9fR0NPTlZfTk9EQiwK
ICBfX0dDT05WX05PTUVNLAoKICBfX0dDT05WX0VNUFRZX0lOUFVULAogIF9fR0NPTlZfRlVMTF9P
VVRQVVQsCiAgX19HQ09OVl9JTExFR0FMX0lOUFVULAogIF9fR0NPTlZfSU5DT01QTEVURV9JTlBV
VCwKCiAgX19HQ09OVl9JTExFR0FMX0RFU0NSSVBUT1IsCiAgX19HQ09OVl9JTlRFUk5BTF9FUlJP
Ugp9OwoKCgplbnVtCnsKICBfX0dDT05WX0lTX0xBU1QgPSAweDAwMDEsCiAgX19HQ09OVl9JR05P
UkVfRVJST1JTID0gMHgwMDAyCn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXA7CnN0cnVjdCBfX2dj
b252X3N0ZXBfZGF0YTsKc3RydWN0IF9fZ2NvbnZfbG9hZGVkX29iamVjdDsKc3RydWN0IF9fZ2Nv
bnZfdHJhbnNfZGF0YTsKCgoKdHlwZWRlZiBpbnQgKCpfX2djb252X2ZjdCkgKHN0cnVjdCBfX2dj
b252X3N0ZXAgKiwgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhICosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiosIF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqKiwgc2l6ZV90
ICosIGludCwgaW50KTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfaW5pdF9mY3QpIChzdHJ1Y3Qg
X19nY29udl9zdGVwICopOwp0eXBlZGVmIHZvaWQgKCpfX2djb252X2VuZF9mY3QpIChzdHJ1Y3Qg
X19nY29udl9zdGVwICopOwoKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfZmN0KSAoc3Ry
dWN0IF9fZ2NvbnZfc3RlcCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IF9fZ2NvbnZfc3RlcF9kYXRhICosIHZvaWQgKiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICoqLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNoYXIgKios
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKik7CgoKdHlwZWRlZiBp
bnQgKCpfX2djb252X3RyYW5zX2NvbnRleHRfZmN0KSAodm9pZCAqLCBfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciAqKTsKCgp0eXBlZGVmIGludCAoKl9f
Z2NvbnZfdHJhbnNfcXVlcnlfZmN0KSAoX19jb25zdCBjaGFyICosIF9fY29uc3QgY2hhciAqKios
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKik7CgoKdHlw
ZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX2luaXRfZmN0KSAodm9pZCAqKiwgY29uc3QgY2hhciAq
KTsKdHlwZWRlZiB2b2lkICgqX19nY29udl90cmFuc19lbmRfZmN0KSAodm9pZCAqKTsKCnN0cnVj
dCBfX2djb252X3RyYW5zX2RhdGEKewoKICBfX2djb252X3RyYW5zX2ZjdCBfX3RyYW5zX2ZjdDsK
ICBfX2djb252X3RyYW5zX2NvbnRleHRfZmN0IF9fdHJhbnNfY29udGV4dF9mY3Q7CiAgX19nY29u
dl90cmFuc19lbmRfZmN0IF9fdHJhbnNfZW5kX2ZjdDsKICB2b2lkICpfX2RhdGE7CiAgc3RydWN0
IF9fZ2NvbnZfdHJhbnNfZGF0YSAqX19uZXh0Owp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwCnsK
ICBzdHJ1Y3QgX19nY29udl9sb2FkZWRfb2JqZWN0ICpfX3NobGliX2hhbmRsZTsKICBfX2NvbnN0
IGNoYXIgKl9fbW9kbmFtZTsKCiAgaW50IF9fY291bnRlcjsKCiAgY2hhciAqX19mcm9tX25hbWU7
CiAgY2hhciAqX190b19uYW1lOwoKICBfX2djb252X2ZjdCBfX2ZjdDsKICBfX2djb252X2luaXRf
ZmN0IF9faW5pdF9mY3Q7CiAgX19nY29udl9lbmRfZmN0IF9fZW5kX2ZjdDsKCgoKICBpbnQgX19t
aW5fbmVlZGVkX2Zyb207CiAgaW50IF9fbWF4X25lZWRlZF9mcm9tOwogIGludCBfX21pbl9uZWVk
ZWRfdG87CiAgaW50IF9fbWF4X25lZWRlZF90bzsKCgogIGludCBfX3N0YXRlZnVsOwoKICB2b2lk
ICpfX2RhdGE7Cn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXBfZGF0YQp7CiAgdW5zaWduZWQgY2hh
ciAqX19vdXRidWY7CiAgdW5zaWduZWQgY2hhciAqX19vdXRidWZlbmQ7CgoKCiAgaW50IF9fZmxh
Z3M7CgoKCiAgaW50IF9faW52b2NhdGlvbl9jb3VudGVyOwoKCgogIGludCBfX2ludGVybmFsX3Vz
ZTsKCiAgX19tYnN0YXRlX3QgKl9fc3RhdGVwOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7CgoKCiAg
c3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YSAqX190cmFuczsKfTsKCgoKdHlwZWRlZiBzdHJ1Y3Qg
X19nY29udl9pbmZvCnsKICBzaXplX3QgX19uc3RlcHM7CiAgc3RydWN0IF9fZ2NvbnZfc3RlcCAq
X19zdGVwczsKICBfX2V4dGVuc2lvbl9fIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSBfX2RhdGEg
W107Cn0gKl9fZ2NvbnZfdDsKIyA0NSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKdHlw
ZWRlZiB1bmlvbgp7CiAgc3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogIHN0cnVjdAogIHsKICAg
IHN0cnVjdCBfX2djb252X2luZm8gX19jZDsKICAgIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSBf
X2RhdGE7CiAgfSBfX2NvbWJpbmVkOwp9IF9HX2ljb252X3Q7Cgp0eXBlZGVmIGludCBfR19pbnQx
Nl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBfR19p
bnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2ln
bmVkIGludCBfR191aW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsK
dHlwZWRlZiB1bnNpZ25lZCBpbnQgX0dfdWludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChfX1NJX18pKSk7CiMgMzMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKIyA1MyAiL3Vzci9p
bmNsdWRlL2xpYmlvLmgiIDMKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251
LzMuMi4yL2luY2x1ZGUvc3RkYXJnLmgiIDEgMwojIDQzICIvdXNyL2xpYi9nY2MtbGliL2k1ODYt
cGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkYXJnLmgiIDMKdHlwZWRlZiBfX2J1aWx0aW5f
dmFfbGlzdCBfX2dudWNfdmFfbGlzdDsKIyA1NCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDIgMwoj
IDE2MiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKc3RydWN0IF9JT19qdW1wX3Q7IHN0cnVjdCBf
SU9fRklMRTsKIyAxNzIgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVkZWYgdm9pZCBfSU9f
bG9ja190OwoKCgoKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1Y3QgX0lPX21hcmtlciAqX25l
eHQ7CiAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsKCgoKICBpbnQgX3BvczsKIyAxOTUgIi91c3Iv
aW5jbHVkZS9saWJpby5oIiAzCn07CgoKZW51bSBfX2NvZGVjdnRfcmVzdWx0CnsKICBfX2NvZGVj
dnRfb2ssCiAgX19jb2RlY3Z0X3BhcnRpYWwsCiAgX19jb2RlY3Z0X2Vycm9yLAogIF9fY29kZWN2
dF9ub2NvbnYKfTsKIyAyNjMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnN0cnVjdCBfSU9fRklM
RSB7CiAgaW50IF9mbGFnczsKCgoKCiAgY2hhciogX0lPX3JlYWRfcHRyOwogIGNoYXIqIF9JT19y
ZWFkX2VuZDsKICBjaGFyKiBfSU9fcmVhZF9iYXNlOwogIGNoYXIqIF9JT193cml0ZV9iYXNlOwog
IGNoYXIqIF9JT193cml0ZV9wdHI7CiAgY2hhciogX0lPX3dyaXRlX2VuZDsKICBjaGFyKiBfSU9f
YnVmX2Jhc2U7CiAgY2hhciogX0lPX2J1Zl9lbmQ7CgogIGNoYXIgKl9JT19zYXZlX2Jhc2U7CiAg
Y2hhciAqX0lPX2JhY2t1cF9iYXNlOwogIGNoYXIgKl9JT19zYXZlX2VuZDsKCiAgc3RydWN0IF9J
T19tYXJrZXIgKl9tYXJrZXJzOwoKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9jaGFpbjsKCiAgaW50IF9m
aWxlbm87CgoKCiAgaW50IF9mbGFnczI7CgogIF9fb2ZmX3QgX29sZF9vZmZzZXQ7CgoKCiAgdW5z
aWduZWQgc2hvcnQgX2N1cl9jb2x1bW47CiAgc2lnbmVkIGNoYXIgX3Z0YWJsZV9vZmZzZXQ7CiAg
Y2hhciBfc2hvcnRidWZbMV07CgoKCiAgX0lPX2xvY2tfdCAqX2xvY2s7CiMgMzExICIvdXNyL2lu
Y2x1ZGUvbGliaW8uaCIgMwogIF9fb2ZmNjRfdCBfb2Zmc2V0OwoKCgoKCiAgdm9pZCAqX19wYWQx
OwogIHZvaWQgKl9fcGFkMjsKCiAgaW50IF9tb2RlOwoKICBjaGFyIF91bnVzZWQyWzE1ICogc2l6
ZW9mIChpbnQpIC0gMiAqIHNpemVvZiAodm9pZCAqKV07Cgp9OwoKCgoKCnN0cnVjdCBfSU9fRklM
RV9wbHVzOwoKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkaW5fOwpleHRl
cm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRvdXRfOwpleHRlcm4gc3RydWN0IF9J
T19GSUxFX3BsdXMgX0lPXzJfMV9zdGRlcnJfOwojIDM1MCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgi
IDMKdHlwZWRlZiBfX3NzaXplX3QgX19pb19yZWFkX2ZuICh2b2lkICpfX2Nvb2tpZSwgY2hhciAq
X19idWYsIHNpemVfdCBfX25ieXRlcyk7CgoKCgoKCgp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3dy
aXRlX2ZuICh2b2lkICpfX2Nvb2tpZSwgX19jb25zdCBjaGFyICpfX2J1ZiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbik7CgoKCgoKCgp0eXBlZGVmIGludCBfX2lv
X3NlZWtfZm4gKHZvaWQgKl9fY29va2llLCBfX29mZjY0X3QgKl9fcG9zLCBpbnQgX193KTsKCgp0
eXBlZGVmIGludCBfX2lvX2Nsb3NlX2ZuICh2b2lkICpfX2Nvb2tpZSk7CgoKCgp0eXBlZGVmIF9f
aW9fcmVhZF9mbiBjb29raWVfcmVhZF9mdW5jdGlvbl90Owp0eXBlZGVmIF9faW9fd3JpdGVfZm4g
Y29va2llX3dyaXRlX2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb19zZWVrX2ZuIGNvb2tpZV9zZWVr
X2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb19jbG9zZV9mbiBjb29raWVfY2xvc2VfZnVuY3Rpb25f
dDsKCgp0eXBlZGVmIHN0cnVjdAp7CiAgX19pb19yZWFkX2ZuICpyZWFkOwogIF9faW9fd3JpdGVf
Zm4gKndyaXRlOwogIF9faW9fc2Vla19mbiAqc2VlazsKICBfX2lvX2Nsb3NlX2ZuICpjbG9zZTsK
fSBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190Owp0eXBlZGVmIF9JT19jb29raWVfaW9fZnVuY3Rp
b25zX3QgY29va2llX2lvX2Z1bmN0aW9uc190OwoKc3RydWN0IF9JT19jb29raWVfZmlsZTsKCgpl
eHRlcm4gdm9pZCBfSU9fY29va2llX2luaXQgKHN0cnVjdCBfSU9fY29va2llX2ZpbGUgKl9fY2Zp
bGUsIGludCBfX3JlYWRfd3JpdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAq
X19jb29raWUsIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgX19mbnMpOwoKCgoKZXh0ZXJuICJD
IiB7CgoKZXh0ZXJuIGludCBfX3VuZGVyZmxvdyAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7CmV4dGVy
biBpbnQgX191ZmxvdyAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7CmV4dGVybiBpbnQgX19vdmVyZmxv
dyAoX0lPX0ZJTEUgKiwgaW50KSB0aHJvdyAoKTsKZXh0ZXJuIHdpbnRfdCBfX3d1bmRlcmZsb3cg
KF9JT19GSUxFICopIHRocm93ICgpOwpleHRlcm4gd2ludF90IF9fd3VmbG93IChfSU9fRklMRSAq
KSB0aHJvdyAoKTsKZXh0ZXJuIHdpbnRfdCBfX3dvdmVyZmxvdyAoX0lPX0ZJTEUgKiwgd2ludF90
KSB0aHJvdyAoKTsKIyA0MzIgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4dGVybiBpbnQgX0lP
X2dldGMgKF9JT19GSUxFICpfX2ZwKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfSU9fcHV0YyAoaW50
IF9fYywgX0lPX0ZJTEUgKl9fZnApIHRocm93ICgpOwpleHRlcm4gaW50IF9JT19mZW9mIChfSU9f
RklMRSAqX19mcCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX0lPX2ZlcnJvciAoX0lPX0ZJTEUgKl9f
ZnApIHRocm93ICgpOwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkIChfSU9fRklMRSAqX19m
cCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHZvaWQgX0lPX2Zsb2NrZmlsZSAoX0lPX0ZJTEUgKikg
dGhyb3cgKCk7CmV4dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAoX0lPX0ZJTEUgKikgdGhyb3cg
KCk7CmV4dGVybiBpbnQgX0lPX2Z0cnlsb2NrZmlsZSAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7CiMg
NDYyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50IF9JT192ZnNjYW5mIChfSU9f
RklMRSAqIF9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LAogICAgICAgICAgICAg
ICAgICAgICAgICBfX2dudWNfdmFfbGlzdCwgaW50ICpfX3Jlc3RyaWN0KSB0aHJvdyAoKTsKZXh0
ZXJuIGludCBfSU9fdmZwcmludGYgKF9JT19GSUxFICpfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICpf
X3Jlc3RyaWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QpIHRocm93
ICgpOwpleHRlcm4gX19zc2l6ZV90IF9JT19wYWRuIChfSU9fRklMRSAqLCBpbnQsIF9fc3NpemVf
dCkgdGhyb3cgKCk7CmV4dGVybiBzaXplX3QgX0lPX3NnZXRuIChfSU9fRklMRSAqLCB2b2lkICos
IHNpemVfdCkgdGhyb3cgKCk7CgpleHRlcm4gX19vZmY2NF90IF9JT19zZWVrb2ZmIChfSU9fRklM
RSAqLCBfX29mZjY0X3QsIGludCwgaW50KSB0aHJvdyAoKTsKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9f
c2Vla3BvcyAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQpIHRocm93ICgpOwoKZXh0ZXJuIHZv
aWQgX0lPX2ZyZWVfYmFja3VwX2FyZWEgKF9JT19GSUxFICopIHRocm93ICgpOwojIDUyMCAiL3Vz
ci9pbmNsdWRlL2xpYmlvLmgiIDMKfQojIDgyICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGlu
dXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCgp0eXBlZGVmIF9fZ251Y192YV9s
aXN0IF9fbm90X3ZhX2xpc3RfXzsKIyA5NSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4
LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGlvLmgiIDMKCgp0eXBlZGVmIF9HX2Zwb3NfdCBmcG9zX3Q7
CgoKCgoKdHlwZWRlZiBfR19mcG9zNjRfdCBmcG9zNjRfdDsKIyAxNDcgIi91c3IvbGliL2djYy1s
aWIvaTU4Ni1wYy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvc3RkaW9fbGltLmgiIDEgMwojIDE0OCAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2
LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgpleHRlcm4gc3RydWN0
IF9JT19GSUxFICpzdGRpbjsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRSAqc3Rkb3V0OwpleHRlcm4g
c3RydWN0IF9JT19GSUxFICpzdGRlcnI7CgoKCgoKCgpleHRlcm4gaW50IHJlbW92ZSAoX19jb25z
dCBjaGFyICpfX2ZpbGVuYW1lKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgcmVuYW1lIChfX2NvbnN0
IGNoYXIgKl9fb2xkLCBfX2NvbnN0IGNoYXIgKl9fbmV3KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJu
IEZJTEUgKnRtcGZpbGUgKHZvaWQpIHRocm93ICgpOwojIDE4MCAiL3Vzci9saWIvZ2NjLWxpYi9p
NTg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGNoYXIgKnRt
cG5hbSAoY2hhciAqX19zKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIEZJTEUgKnRtcGZpbGU2NCAodm9p
ZCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGNoYXIgKnRtcG5hbV9yIChjaGFyICpfX3MpIHRocm93
ICgpOwojIDIwMiAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNs
dWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGNoYXIgKnRlbXBuYW0gKF9fY29uc3QgY2hhciAqX19kaXIs
IF9fY29uc3QgY2hhciAqX19wZngpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFs
bG9jX18pKTsKCgoKCgpleHRlcm4gaW50IGZjbG9zZSAoRklMRSAqX19zdHJlYW0pIHRocm93ICgp
OwoKZXh0ZXJuIGludCBmZmx1c2ggKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVy
biBpbnQgZmZsdXNoX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgpleHRl
cm4gaW50IGZjbG9zZWFsbCAodm9pZCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBGSUxFICpmb3Bl
biAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMpIHRocm93ICgpOwoKZXh0ZXJuIEZJ
TEUgKmZyZW9wZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAg
ICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKIyAyNDgg
Ii91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRpby5o
IiAzCgoKZXh0ZXJuIEZJTEUgKmZvcGVuNjQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zp
bGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bW9kZXMpIHRocm93ICgpOwpleHRlcm4gRklMRSAqZnJlb3BlbjY0IChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVz
dHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIEZJTEUgKmZkb3BlbiAoaW50IF9f
ZmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIEZJTEUgKmZv
cGVuY29va2llICh2b2lkICpfX3Jlc3RyaWN0IF9fbWFnaWNfY29va2llLAogICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgX19pb19mdW5jcykgdGhy
b3cgKCk7CgoKZXh0ZXJuIEZJTEUgKmZtZW1vcGVuICh2b2lkICpfX3MsIHNpemVfdCBfX2xlbiwg
X19jb25zdCBjaGFyICpfX21vZGVzKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBGSUxFICpvcGVuX21l
bXN0cmVhbSAoY2hhciAqKl9fcmVzdHJpY3QgX19idWZsb2MsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fc2l6ZWxvYykgdGhyb3cgKCk7CgoKCgoKCmV4
dGVybiB2b2lkIHNldGJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0
cmljdCBfX2J1ZikgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgc2V0dmJ1ZiAoRklMRSAqX19yZXN0
cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAg
ICBpbnQgX19tb2Rlcywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHZvaWQgc2V0
YnVmZmVyIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVm
LAogICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3NpemUpIHRocm93ICgpOwoKCmV4dGVy
biB2b2lkIHNldGxpbmVidWYgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4g
aW50IGZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIHRocm93ICgpOwoKZXh0
ZXJuIGludCBwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0
aHJvdyAoKTsKCmV4dGVybiBpbnQgc3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIHRo
cm93ICgpOwoKCmV4dGVybiBpbnQgdmZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zLCBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgIF9fZ251
Y192YV9saXN0IF9fYXJnKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgdnByaW50ZiAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICB0aHJv
dyAoKTsKCmV4dGVybiBpbnQgdnNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192
YV9saXN0IF9fYXJnKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IHNucHJpbnRmIChjaGFyICpf
X3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAgICB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgNCkpKTsKCmV4dGVybiBpbnQgdnNu
cHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFf
bGlzdCBfX2FyZykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19w
cmludGZfXywgMywgMCkpKTsKCgoKCgoKZXh0ZXJuIGludCB2YXNwcmludGYgKGNoYXIgKipfX3Jl
c3RyaWN0IF9fcHRyLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mLAogICAgICAgICAgICAg
ICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSk7CmV4dGVybiBpbnQgX19hc3ByaW50
ZiAoY2hhciAqKl9fcmVzdHJpY3QgX19wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CmV4dGVybiBpbnQgYXNwcmludGYg
KGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKCgpleHRlcm4gaW50IHZkcHJpbnRmIChp
bnQgX19mZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LAogICAgICAgICAgICAgICAg
ICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMCkpKTsKZXh0ZXJuIGludCBkcHJpbnRmIChpbnQg
X19mZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CgoKCgoKZXh0
ZXJuIGludCBmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgdGhyb3cgKCk7Cgpl
eHRlcm4gaW50IHNjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikg
dGhyb3cgKCk7CgpleHRlcm4gaW50IHNzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
cywKICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwg
Li4uKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IHZmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3Qg
X19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAg
ICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
Zm9ybWF0X18gKF9fc2NhbmZfXywgMiwgMCkpKTsKCgpleHRlcm4gaW50IHZzY2FuZiAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAxLCAwKSkpOwoK
CmV4dGVybiBpbnQgdnNzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192
YV9saXN0IF9fYXJnKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChf
X3NjYW5mX18sIDIsIDApKSk7CgoKCgoKCmV4dGVybiBpbnQgZmdldGMgKEZJTEUgKl9fc3RyZWFt
KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBnZXRjIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoK
ZXh0ZXJuIGludCBnZXRjaGFyICh2b2lkKSB0aHJvdyAoKTsKCgoKCgoKCgpleHRlcm4gaW50IGdl
dGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBnZXRjaGFy
X3VubG9ja2VkICh2b2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZmdldGNfdW5sb2NrZWQg
KEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IGZwdXRjIChpbnQgX19j
LCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgcHV0YyAoaW50IF9fYywgRklM
RSAqX19zdHJlYW0pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgcHV0Y2hhciAoaW50IF9fYykgdGhy
b3cgKCk7CgoKCgoKCgoKZXh0ZXJuIGludCBmcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAq
X19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBwdXRjX3VubG9ja2VkIChpbnQgX19j
LCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgcHV0Y2hhcl91bmxvY2tlZCAo
aW50IF9fYykgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBnZXR3IChGSUxFICpfX3N0cmVhbSkg
dGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwdXR3IChpbnQgX193LCBGSUxFICpfX3N0cmVhbSkgdGhy
b3cgKCk7CgoKCgoKZXh0ZXJuIGNoYXIgKmZnZXRzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50
IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICB0aHJvdyAoKTsKCgoKZXh0ZXJu
IGNoYXIgKmdldHMgKGNoYXIgKl9fcykgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqZmdldHNf
dW5sb2NrZWQgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBpbnQgX19uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwojIDQ3MCAi
L3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGlvLmgi
IDMKZXh0ZXJuIF9fc3NpemVfdCBfX2dldGRlbGltIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVw
dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9fcmVzdHJpY3QgX19u
LCBpbnQgX19kZWxpbWl0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIF9fc3NpemVfdCBnZXRkZWxpbSAo
Y2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCAqX19yZXN0cmljdCBfX24sIGludCBfX2RlbGltaXRlciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKCgpleHRl
cm4gX19zc2l6ZV90IGdldGxpbmUgKGNoYXIgKipfX3Jlc3RyaWN0IF9fbGluZXB0ciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKCgoK
CgpleHRlcm4gaW50IGZwdXRzIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtKQogICAgIHRocm93ICgpOwoKCmV4dGVybiBpbnQgcHV0cyAoX19j
b25zdCBjaGFyICpfX3MpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHVuZ2V0YyAoaW50IF9fYywg
RklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkICh2b2lkICpf
X3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKCmV4dGVybiBzaXpl
X3QgZndyaXRlIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUs
CiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fcykg
dGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGZwdXRzX3VubG9ja2VkIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0
IF9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBzaXplX3QgZnJlYWRfdW5sb2NrZWQgKHZv
aWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgp
OwpleHRlcm4gc2l6ZV90IGZ3cml0ZV91bmxvY2tlZCAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0
IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJu
IGludCBmc2VlayAoRklMRSAqX19zdHJlYW0sIGxvbmcgaW50IF9fb2ZmLCBpbnQgX193aGVuY2Up
IHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsIChGSUxFICpfX3N0cmVhbSkgdGhyb3cg
KCk7CgpleHRlcm4gdm9pZCByZXdpbmQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCiMgNTM3
ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkaW8u
aCIgMwpleHRlcm4gaW50IGZzZWVrbyAoRklMRSAqX19zdHJlYW0sIF9fb2ZmX3QgX19vZmYsIGlu
dCBfX3doZW5jZSkgdGhyb3cgKCk7CgpleHRlcm4gX19vZmZfdCBmdGVsbG8gKEZJTEUgKl9fc3Ry
ZWFtKSB0aHJvdyAoKTsKIyA1NTMgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUv
My4yLjIvaW5jbHVkZS9zdGRpby5oIiAzCgoKCmV4dGVybiBpbnQgZmdldHBvcyAoRklMRSAqX19y
ZXN0cmljdCBfX3N0cmVhbSwgZnBvc190ICpfX3Jlc3RyaWN0IF9fcG9zKQogICAgIHRocm93ICgp
OwoKZXh0ZXJuIGludCBmc2V0cG9zIChGSUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9zX3QgKl9f
cG9zKSB0aHJvdyAoKTsKIyA1NzIgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUv
My4yLjIvaW5jbHVkZS9zdGRpby5oIiAzCgoKCmV4dGVybiBpbnQgZnNlZWtvNjQgKEZJTEUgKl9f
c3RyZWFtLCBfX29mZjY0X3QgX19vZmYsIGludCBfX3doZW5jZSkgdGhyb3cgKCk7CmV4dGVybiBf
X29mZjY0X3QgZnRlbGxvNjQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBm
Z2V0cG9zNjQgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGZwb3M2NF90ICpfX3Jlc3RyaWN0
IF9fcG9zKQogICAgIHRocm93ICgpOwpleHRlcm4gaW50IGZzZXRwb3M2NCAoRklMRSAqX19zdHJl
YW0sIF9fY29uc3QgZnBvczY0X3QgKl9fcG9zKSB0aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkIGNs
ZWFyZXJyIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgpleHRlcm4gaW50IGZlb2YgKEZJTEUg
Kl9fc3RyZWFtKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgZmVycm9yIChGSUxFICpfX3N0cmVhbSkg
dGhyb3cgKCk7CgoKCgpleHRlcm4gdm9pZCBjbGVhcmVycl91bmxvY2tlZCAoRklMRSAqX19zdHJl
YW0pIHRocm93ICgpOwpleHRlcm4gaW50IGZlb2ZfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0
aHJvdyAoKTsKZXh0ZXJuIGludCBmZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJv
dyAoKTsKCgoKCgpleHRlcm4gdm9pZCBwZXJyb3IgKF9fY29uc3QgY2hhciAqX19zKSB0aHJvdyAo
KTsKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zeXNfZXJybGlzdC5oIiAxIDMKIyAyNyAi
L3Vzci9pbmNsdWRlL2JpdHMvc3lzX2Vycmxpc3QuaCIgMwpleHRlcm4gaW50IHN5c19uZXJyOwpl
eHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IHN5c19lcnJsaXN0W107CgoKZXh0ZXJuIGludCBf
c3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3QgX3N5c19lcnJsaXN0W107CiMg
NjA5ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3Rk
aW8uaCIgMiAzCgoKCgpleHRlcm4gaW50IGZpbGVubyAoRklMRSAqX19zdHJlYW0pIHRocm93ICgp
OwoKCgoKZXh0ZXJuIGludCBmaWxlbm9fdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAo
KTsKCgoKCgoKZXh0ZXJuIEZJTEUgKnBvcGVuIChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCwgX19j
b25zdCBjaGFyICpfX21vZGVzKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHBjbG9zZSAoRklMRSAq
X19zdHJlYW0pIHRocm93ICgpOwoKCgoKCmV4dGVybiBjaGFyICpjdGVybWlkIChjaGFyICpfX3Mp
IHRocm93ICgpOwoKCgoKCmV4dGVybiBjaGFyICpjdXNlcmlkIChjaGFyICpfX3MpIHRocm93ICgp
OwoKCgoKc3RydWN0IG9ic3RhY2s7CgoKZXh0ZXJuIGludCBvYnN0YWNrX3ByaW50ZiAoc3RydWN0
IG9ic3RhY2sgKl9fcmVzdHJpY3QgX19vYnN0YWNrLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAgICB0aHJvdyAoKSBf
X2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKZXh0ZXJuIGlu
dCBvYnN0YWNrX3ZwcmludGYgKHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zv
cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJncykK
ICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwg
MCkpKTsKCgoKCgoKCmV4dGVybiB2b2lkIGZsb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIHRocm93
ICgpOwoKCgpleHRlcm4gaW50IGZ0cnlsb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIHRocm93ICgp
OwoKCmV4dGVybiB2b2lkIGZ1bmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CiMg
NjgzICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3Rk
aW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvLmgiIDEgMwojIDMzICIvdXNyL2lu
Y2x1ZGUvYml0cy9zdGRpby5oIiAzCmlubGluZSBpbnQKdnByaW50ZiAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZm10LCBfX2dudWNfdmFfbGlzdCBfX2FyZykgdGhyb3cgKCkKewogIHJldHVy
biB2ZnByaW50ZiAoc3Rkb3V0LCBfX2ZtdCwgX19hcmcpOwp9CgoKaW5saW5lIGludApnZXRjaGFy
ICh2b2lkKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9JT19nZXRjIChzdGRpbik7Cn0KCgoKCmlubGlu
ZSBpbnQKZ2V0Y191bmxvY2tlZCAoRklMRSAqX19mcCkgdGhyb3cgKCkKewogIHJldHVybiAoKF9f
ZnApLT5fSU9fcmVhZF9wdHIgPj0gKF9fZnApLT5fSU9fcmVhZF9lbmQgPyBfX3VmbG93IChfX2Zw
KSA6ICoodW5zaWduZWQgY2hhciAqKSAoX19mcCktPl9JT19yZWFkX3B0cisrKTsKfQoKCmlubGlu
ZSBpbnQKZ2V0Y2hhcl91bmxvY2tlZCAodm9pZCkgdGhyb3cgKCkKewogIHJldHVybiAoKHN0ZGlu
KS0+X0lPX3JlYWRfcHRyID49IChzdGRpbiktPl9JT19yZWFkX2VuZCA/IF9fdWZsb3cgKHN0ZGlu
KSA6ICoodW5zaWduZWQgY2hhciAqKSAoc3RkaW4pLT5fSU9fcmVhZF9wdHIrKyk7Cn0KCgoKCmlu
bGluZSBpbnQKcHV0Y2hhciAoaW50IF9fYykgdGhyb3cgKCkKewogIHJldHVybiBfSU9fcHV0YyAo
X19jLCBzdGRvdXQpOwp9CgoKCgppbmxpbmUgaW50CmZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBG
SUxFICpfX3N0cmVhbSkgdGhyb3cgKCkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9JT193cml0
ZV9wdHIgPj0gKF9fc3RyZWFtKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChfX3N0cmVh
bSwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihfX3N0cmVhbSkt
Pl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0KCgoKCgppbmxpbmUgaW50CnB1dGNfdW5sb2Nr
ZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKQp7CiAgcmV0dXJuICgoKF9fc3Ry
ZWFtKS0+X0lPX3dyaXRlX3B0ciA+PSAoX19zdHJlYW0pLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3Zl
cmZsb3cgKF9fc3RyZWFtLCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIp
ICgqKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQoKCmlubGluZSBpbnQK
cHV0Y2hhcl91bmxvY2tlZCAoaW50IF9fYykgdGhyb3cgKCkKewogIHJldHVybiAoKChzdGRvdXQp
LT5fSU9fd3JpdGVfcHRyID49IChzdGRvdXQpLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cg
KHN0ZG91dCwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihzdGRv
dXQpLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoKCgoKaW5saW5lIF9fc3NpemVfdApn
ZXRsaW5lIChjaGFyICoqX19saW5lcHRyLCBzaXplX3QgKl9fbiwgRklMRSAqX19zdHJlYW0pIHRo
cm93ICgpCnsKICByZXR1cm4gX19nZXRkZWxpbSAoX19saW5lcHRyLCBfX24sICdcbicsIF9fc3Ry
ZWFtKTsKfQoKCgoKCmlubGluZSBpbnQKZmVvZl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRo
cm93ICgpCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fZmxhZ3MgJiAweDEwKSAhPSAwKTsKfQoK
CmlubGluZSBpbnQKZmVycm9yX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCkKewog
IHJldHVybiAoKChfX3N0cmVhbSktPl9mbGFncyAmIDB4MjApICE9IDApOwp9CiMgNjg0ICIvdXNy
L2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkaW8uaCIgMiAz
CgoKfQojIDQ0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNUcmFjZVJlZmNudC5oIiAy
CgpjbGFzcyBuc0lTdXBwb3J0czsKIyAxNTQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9u
c1RyYWNlUmVmY250LmgiCnN0cnVjdCBuc1RyYWNlUmVmY250U3RhdHMgewogIG5zcmVmY250IG1B
ZGRSZWZzOwogIG5zcmVmY250IG1SZWxlYXNlczsKICBuc3JlZmNudCBtQ3JlYXRlczsKICBuc3Jl
ZmNudCBtRGVzdHJveXM7CiAgZG91YmxlIG1SZWZzT3V0c3RhbmRpbmdUb3RhbDsKICBkb3VibGUg
bVJlZnNPdXRzdGFuZGluZ1NxdWFyZWQ7CiAgZG91YmxlIG1PYmpzT3V0c3RhbmRpbmdUb3RhbDsK
ICBkb3VibGUgbU9ianNPdXRzdGFuZGluZ1NxdWFyZWQ7Cn07CiMgMTczICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUveHBjb20vbnNUcmFjZVJlZmNudC5oIgp0eXBlZGVmIFBSQm9vbCAoICpuc1RyYWNl
UmVmY250U3RhdEZ1bmMpCiAgKGNvbnN0IGNoYXIqIGFUeXBlTmFtZSwKICAgUFJVaW50MzIgYUlu
c3RhbmNlU2l6ZSwKICAgbnNUcmFjZVJlZmNudFN0YXRzKiBhQ3VycmVudFN0YXRzLAogICBuc1Ry
YWNlUmVmY250U3RhdHMqIGFQcmV2U3RhdHMsCiAgIHZvaWQgKmFDbG9zdXJlKTsKCgoKCgpjbGFz
cyBuc1RyYWNlUmVmY250IHsKcHVibGljOgogIHN0YXRpYyB2b2lkIFN0YXJ0dXAoKTsKCiAgc3Rh
dGljIHZvaWQgU2h1dGRvd24oKTsKCiAgc3RhdGljIHZvaWQgTG9nQWRkUmVmKHZvaWQqIGFQdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc3JlZmNudCBhTmV3UmVmQ250LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYVR5cGVOYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUFJVaW50MzIgYUluc3RhbmNlU2l6ZSk7CgogIHN0YXRp
YyB2b2lkIExvZ1JlbGVhc2Uodm9pZCogYVB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuc3JlZmNudCBhTmV3UmVmQ250LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGFUeXBlTmFtZSk7CgogIHN0YXRpYyB2b2lkIExvZ05ld1hQQ09NKHZvaWQq
IGFQdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFUeXBl
TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJVaW50MzIgYUluc3RhbmNl
U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYUZpbGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhTGluZSk7CgogIHN0YXRpYyB2
b2lkIExvZ0RlbGV0ZVhQQ09NKHZvaWQqIGFQdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGFGaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgYUxpbmUpOwoKICBzdGF0aWMgbnNyZWZjbnQgTG9nQWRkUmVmQ2FsbCh2b2lk
KiBhUHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc3JlZmNudCBh
TmV3UmVmY250LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBhRmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFM
aW5lKTsKCiAgc3RhdGljIG5zcmVmY250IExvZ1JlbGVhc2VDYWxsKHZvaWQqIGFQdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc3JlZmNudCBhTmV3UmVmY250LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYUZpbGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYUxpbmUpOwoKICBz
dGF0aWMgdm9pZCBMb2dDdG9yKHZvaWQqIGFQdHIsIGNvbnN0IGNoYXIqIGFUeXBlTmFtZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQUlVpbnQzMiBhSW5zdGFuY2VTaXplKTsKCiAgc3Rh
dGljIHZvaWQgTG9nRHRvcih2b2lkKiBhUHRyLCBjb25zdCBjaGFyKiBhVHlwZU5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUFJVaW50MzIgYUluc3RhbmNlU2l6ZSk7CgogIHN0YXRp
YyB2b2lkIExvZ0FkZENPTVB0cih2b2lkICphQ09NUHRyLCBuc0lTdXBwb3J0cyAqYU9iamVjdCk7
CgogIHN0YXRpYyB2b2lkIExvZ1JlbGVhc2VDT01QdHIodm9pZCAqYUNPTVB0ciwgbnNJU3VwcG9y
dHMgKmFPYmplY3QpOwoKICBlbnVtIFN0YXRpc3RpY3NUeXBlIHsKICAgIEFMTF9TVEFUUywKICAg
IE5FV19TVEFUUwogIH07CgogIHN0YXRpYyBuc3Jlc3VsdCBEdW1wU3RhdGlzdGljcyhTdGF0aXN0
aWNzVHlwZSB0eXBlID0gQUxMX1NUQVRTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRklMRSogb3V0ID0gMCk7CgogIHN0YXRpYyB2b2lkIFJlc2V0U3RhdGlzdGljcyh2
b2lkKTsKCiAgc3RhdGljIHZvaWQgR2F0aGVyU3RhdGlzdGljcyhuc1RyYWNlUmVmY250U3RhdEZ1
bmMgYUZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogYUNs
b3N1cmUpOwoKICBzdGF0aWMgdm9pZCBMb2FkTGlicmFyeVN5bWJvbHMoY29uc3QgY2hhciogYUxp
YnJhcnlOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCog
YUxpYnJheUhhbmRsZSk7CgogIHN0YXRpYyB2b2lkIERlbWFuZ2xlU3ltYm9sKGNvbnN0IGNoYXIg
KiBhU3ltYm9sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICogYUJ1
ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFCdWZMZW4pOwoK
ICBzdGF0aWMgdm9pZCBXYWxrVGhlU3RhY2soRklMRSogYVN0cmVhbSk7CgogIHN0YXRpYyB2b2lk
IFNldFByZWZTZXJ2aWNlQXZhaWxhYmlsaXR5KFBSQm9vbCBhdmFpbCk7CgoKCgoKCiAgc3RhdGlj
IHZvaWQgU2V0QWN0aXZpdHlJc0xlZ2FsKFBSQm9vbCBhTGVnYWwpOwp9OwoKCgoKZXh0ZXJuICJD
IiB2b2lkCk5TX01lYW5BbmRTdGREZXYoZG91YmxlIG4sIGRvdWJsZSBzdW1PZlZhbHVlcywgZG91
YmxlIHN1bU9mU3F1YXJlZFZhbHVlcywKICAgICAgICAgICAgICAgICBkb3VibGUgKm1lYW5SZXN1
bHQsIGRvdWJsZSAqc3RkRGV2UmVzdWx0KTsKIyA2MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29tL25zSVN1cHBvcnRzSW1wbC5oIiAyCiMgOTQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNv
bS9uc0lTdXBwb3J0c0ltcGwuaCIKY2xhc3MgbnNBdXRvUmVmQ250IHsKCiBwdWJsaWM6CiAgICBu
c0F1dG9SZWZDbnQoKSA6IG1WYWx1ZSgwKSB7fQogICAgbnNBdXRvUmVmQ250KG5zcmVmY250IGFW
YWx1ZSkgOiBtVmFsdWUoYVZhbHVlKSB7fQoKCiAgICBuc3JlZmNudCBvcGVyYXRvcisrKCkgeyBy
ZXR1cm4gKyttVmFsdWU7IH0KICAgIG5zcmVmY250IG9wZXJhdG9yLS0oKSB7IHJldHVybiAtLW1W
YWx1ZTsgfQoKICAgIG5zcmVmY250IG9wZXJhdG9yPShuc3JlZmNudCBhVmFsdWUpIHsgcmV0dXJu
IChtVmFsdWUgPSBhVmFsdWUpOyB9CiAgICBvcGVyYXRvciBuc3JlZmNudCgpIGNvbnN0IHsgcmV0
dXJuIG1WYWx1ZTsgfQogICAgbnNyZWZjbnQgZ2V0KCkgY29uc3QgeyByZXR1cm4gbVZhbHVlOyB9
CiBwcml2YXRlOgoKICAgIG5zcmVmY250IG9wZXJhdG9yKysoaW50KTsKICAgIG5zcmVmY250IG9w
ZXJhdG9yLS0oaW50KTsKICAgIG5zcmVmY250IG1WYWx1ZTsKfTsKIyA4MjkgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0c0ltcGwuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUveHBjb20vbnNJQ2xhc3NJbmZvLmgiIDEKIyA4MzAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS94cGNvbS9uc0lTdXBwb3J0c0ltcGwuaCIgMgojIDYyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
eHBjb20vbnNJU3VwcG9ydHNVdGlscy5oIiAyCiMgMTA2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
eHBjb20vbnNJU3VwcG9ydHNVdGlscy5oIgpleHRlcm4gIkMrKyIgewoKCgp0ZW1wbGF0ZSA8Y2xh
c3MgVD4KaW5saW5lCm5zcmVmY250Cm5zX2lmX2FkZHJlZiggVCBleHByICkKCgoKICB7CiAgICBy
ZXR1cm4gZXhwciA/IGV4cHItPkFkZFJlZigpIDogMDsKICB9Cgp9CiMgMjM0ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUveHBjb20vbnNJU3VwcG9ydHNVdGlscy5oIgpleHRlcm4gIkMrKyIgewoKCgpj
bGFzcyBuc0lTdXBwb3J0czsKCnRlbXBsYXRlIDxjbGFzcyBUPgpzdHJ1Y3QgbnNDT01UeXBlSW5m
bwogIHsKICAgIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkgeyByZXR1cm4gVDo6R2V0SUlE
KCk7IH0KICB9OwoKdGVtcGxhdGUgPD4Kc3RydWN0IG5zQ09NVHlwZUluZm88bnNJU3VwcG9ydHM+
CiAgewogICAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7CiAgICAgICAgc3RhdGljIGNv
bnN0IG5zSUlEIGlpZF9OU19JU1VQUE9SVFNfSUlEID0geyAweDAwMDAwMDAwLCAweDAwMDAsIDB4
MDAwMCwgezB4YzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDZ9IH07
IHJldHVybiBpaWRfTlNfSVNVUFBPUlRTX0lJRDsKICAgIH0KICB9OwoKCgoKdGVtcGxhdGUgPGNs
YXNzIFQsIGNsYXNzIERlc3RpbmF0aW9uVHlwZT4KaW5saW5lCm5zcmVzdWx0CkNhbGxRdWVyeUlu
dGVyZmFjZSggVCogYVNvdXJjZSwgRGVzdGluYXRpb25UeXBlKiogYURlc3RpbmF0aW9uICkKICB7
CiAgICA7CiAgICA7CgogICAgcmV0dXJuIGFTb3VyY2UtPlF1ZXJ5SW50ZXJmYWNlKG5zQ09NVHlw
ZUluZm88RGVzdGluYXRpb25UeXBlPjo6R2V0SUlEKCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDwgdm9pZCoqID4oYURlc3RpbmF0aW9uKSk7CiAg
fQoKfQojIDExOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN1cHBvcnRzLmgiIDIK
IyAxMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUNsYXNzSW5mby5oIiAyCgoKCiMg
MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVByb2dyYW1taW5nTGFuZ3VhZ2UuaCIg
MQojIDMyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJUHJvZ3JhbW1pbmdMYW5ndWFn
ZS5oIgpjbGFzcyBuc0lQcm9ncmFtbWluZ0xhbmd1YWdlIDogcHVibGljIG5zSVN1cHBvcnRzIHsK
IHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5z
SUlEIGlpZCA9IHsweGVhNjA0ZTkwLCAweDQwYmEsIDB4MTFkNSwgeyAweDkwLCAweGJiLCAweDAw
LCAweDEwLCAweGE0LCAweGU3LCAweDNkLCAweDlhIH19OyByZXR1cm4gaWlkO30KCgoKCiAgZW51
bSB7IFVOS05PV04gPSAwVSB9OwoKICBlbnVtIHsgQ1BMVVNQTFVTID0gMVUgfTsKCiAgZW51bSB7
IEpBVkFTQ1JJUFQgPSAyVSB9OwoKICBlbnVtIHsgUFlUSE9OID0gM1UgfTsKCiAgZW51bSB7IFBF
UkwgPSA0VSB9OwoKICBlbnVtIHsgSkFWQSA9IDVVIH07CgogIGVudW0geyBaWDgxX0JBU0lDID0g
NlUgfTsKCiAgZW51bSB7IEpBVkFTQ1JJUFQyID0gN1UgfTsKCn07CiMgMTUgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS94cGNvbS9uc0lDbGFzc0luZm8uaCIgMgojIDMzICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUveHBjb20vbnNJQ2xhc3NJbmZvLmgiCmNsYXNzIG5zSUNsYXNzSW5mbyA6IHB1YmxpYyBu
c0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0
YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHg5ODZjMTFkMCwgMHhmMzQwLCAweDExZDQsIHsgMHg5
MCwgMHg3NSwgMHgwMCwgMHgxMCwgMHhhNCwgMHhlNywgMHgzZCwgMHg5YSB9fTsgcmV0dXJuIGlp
ZDt9CiMgNDcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDbGFzc0luZm8uaCIKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldEludGVyZmFjZXMoUFJVaW50MzIgKmNvdW50LCBuc0lJRCAqICoq
YXJyYXkpID0gMDsKIyA2MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUNsYXNzSW5m
by5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SGVscGVyRm9yTGFuZ3VhZ2UoUFJVaW50MzIgbGFu
Z3VhZ2UsIG5zSVN1cHBvcnRzICoqX3JldHZhbCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0Q29udHJhY3RJRChjaGFyICogKmFDb250cmFjdElEKSA9IDA7CgoKCgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldENsYXNzRGVzY3JpcHRpb24oY2hhciAqICphQ2xhc3NEZXNjcmlwdGlvbikg
PSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q2xhc3NJRChuc0NJRCAqICphQ2xhc3NJ
RCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRJbXBsZW1lbnRhdGlvbkxhbmd1YWdl
KFBSVWludDMyICphSW1wbGVtZW50YXRpb25MYW5ndWFnZSkgPSAwOwoKCgoKICBlbnVtIHsgU0lO
R0xFVE9OID0gMVUgfTsKCiAgZW51bSB7IFRIUkVBRFNBRkUgPSAyVSB9OwoKICBlbnVtIHsgTUFJ
Tl9USFJFQURfT05MWSA9IDRVIH07CgogIGVudW0geyBET01fT0JKRUNUID0gOFUgfTsKCiAgZW51
bSB7IFBMVUdJTl9PQkpFQ1QgPSAxNlUgfTsKCiAgZW51bSB7IEVBR0VSX0NMQVNTSU5GTyA9IDMy
VSB9OwoKCgoKCiAgZW51bSB7IENPTlRFTlRfTk9ERSA9IDY0VSB9OwoKICBlbnVtIHsgUkVTRVJW
RUQgPSAyMTQ3NDgzNjQ4VSB9OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGbGFncyhQUlVpbnQz
MiAqYUZsYWdzKSA9IDA7CiMgMTI0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJQ2xh
c3NJbmZvLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDbGFzc0lETm9BbGxvYyhuc0NJRCAqYUNs
YXNzSUROb0FsbG9jKSA9IDA7Cgp9OwojIDQ0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25z
SURPTUNsYXNzSW5mby5oIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zVm9p
ZEFycmF5LmgiIDEKIyA0MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zVm9pZEFycmF5
LmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc0FTdHJpbmcuaCIgMQojIDI4
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zQVN0cmluZy5oIgojIDEgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHJpbmdGd2QuaCIgMQojIDMwICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvc3RyaW5nL25zU3RyaW5nRndkLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3N0cmluZy9uc1N0cmluZ0RlZmluZXMuaCIgMQojIDMxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
c3RyaW5nL25zU3RyaW5nRndkLmgiIDIKCgoKCgoKCmNsYXNzIG5zQVN0cmluZzsKY2xhc3MgbnNB
Q1N0cmluZzsKCgoKCgoKY2xhc3MgbnNBRmxhdFN0cmluZzsKY2xhc3MgbnNBRmxhdENTdHJpbmc7
CgoKCgoKCmNsYXNzIG5zRGVwZW5kZW50U3RyaW5nOwpjbGFzcyBuc0RlcGVuZGVudENTdHJpbmc7
CiMgMjkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNBU3RyaW5nLmgiIDIKCgoKIyAx
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zQnVmZmVySGFuZGxlLmgiIDEKIyA4OSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc0J1ZmZlckhhbmRsZS5oIgp0ZW1wbGF0ZSA8
Y2xhc3MgQ2hhclQ+CmNsYXNzIG5zQnVmZmVySGFuZGxlCiAgewogICAgcHVibGljOgogICAgICB0
eXBlZGVmIFBSVWludDMyIHNpemVfdHlwZTsKCiAgICAgIG5zQnVmZmVySGFuZGxlKCkgeyB9CiAg
ICAgIG5zQnVmZmVySGFuZGxlKCBDaGFyVCogYURhdGFTdGFydCwgQ2hhclQqIGFEYXRhRW5kICkg
OiBtRGF0YVN0YXJ0KGFEYXRhU3RhcnQpLCBtRGF0YUVuZChhRGF0YUVuZCkgeyB9CgogICAgICB2
b2lkIERhdGFTdGFydCggQ2hhclQqIGFOZXdEYXRhU3RhcnQgKSB7IG1EYXRhU3RhcnQgPSBhTmV3
RGF0YVN0YXJ0OyB9CiAgICAgIENoYXJUKiBEYXRhU3RhcnQoKSB7IHJldHVybiBtRGF0YVN0YXJ0
OyB9CiAgICAgIGNvbnN0IENoYXJUKiBEYXRhU3RhcnQoKSBjb25zdCB7IHJldHVybiBtRGF0YVN0
YXJ0OyB9CgogICAgICB2b2lkIERhdGFFbmQoIENoYXJUKiBhTmV3RGF0YUVuZCApIHsgbURhdGFF
bmQgPSBhTmV3RGF0YUVuZDsgfQogICAgICBDaGFyVCogRGF0YUVuZCgpIHsgcmV0dXJuIG1EYXRh
RW5kOyB9CiAgICAgIGNvbnN0IENoYXJUKiBEYXRhRW5kKCkgY29uc3QgeyByZXR1cm4gbURhdGFF
bmQ7IH0KCiAgICAgIHNpemVfdHlwZSBEYXRhTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbURhdGFF
bmQgLSBtRGF0YVN0YXJ0OyB9CgogICAgcHJvdGVjdGVkOgogICAgICBDaGFyVCogbURhdGFTdGFy
dDsKICAgICAgQ2hhclQqIG1EYXRhRW5kOwogIH07CgoKCgoKdGVtcGxhdGUgPGNsYXNzIENoYXJU
PgpjbGFzcyBuc0NvbnN0QnVmZmVySGFuZGxlCiAgewogICAgcHVibGljOgogICAgICB0eXBlZGVm
IFBSVWludDMyIHNpemVfdHlwZTsKCiAgICAgIG5zQ29uc3RCdWZmZXJIYW5kbGUoKSB7IH0KICAg
ICAgbnNDb25zdEJ1ZmZlckhhbmRsZSggY29uc3QgQ2hhclQqIGFEYXRhU3RhcnQsIGNvbnN0IENo
YXJUKiBhRGF0YUVuZCApIDogbURhdGFTdGFydChhRGF0YVN0YXJ0KSwgbURhdGFFbmQoYURhdGFF
bmQpIHsgfQoKICAgICAgdm9pZCBEYXRhU3RhcnQoIGNvbnN0IENoYXJUKiBhTmV3RGF0YVN0YXJ0
ICkgeyBtRGF0YVN0YXJ0ID0gYU5ld0RhdGFTdGFydDsgfQogICAgICBjb25zdCBDaGFyVCogRGF0
YVN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbURhdGFTdGFydDsgfQoKICAgICAgdm9pZCBEYXRhRW5k
KCBjb25zdCBDaGFyVCogYU5ld0RhdGFFbmQgKSB7IG1EYXRhRW5kID0gYU5ld0RhdGFFbmQ7IH0K
ICAgICAgY29uc3QgQ2hhclQqIERhdGFFbmQoKSBjb25zdCB7IHJldHVybiBtRGF0YUVuZDsgfQoK
ICAgICAgc2l6ZV90eXBlIERhdGFMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtRGF0YUVuZCAtIG1E
YXRhU3RhcnQ7IH0KCiAgICBwcm90ZWN0ZWQ6CiAgICAgIGNvbnN0IENoYXJUKiBtRGF0YVN0YXJ0
OwogICAgICBjb25zdCBDaGFyVCogbURhdGFFbmQ7CiAgfTsKCgoKCgoKCnRlbXBsYXRlIDxjbGFz
cyBDaGFyVD4KY2xhc3MgbnNTdHJpbmdBbGxvY2F0b3IKICB7CiAgICBwdWJsaWM6CgogICAgICB2
aXJ0dWFsIHZvaWQgRGVhbGxvY2F0ZSggQ2hhclQqICkgY29uc3QgPSAwOwogIH07CgoKCgogbnNT
dHJpbmdBbGxvY2F0b3I8Y2hhcj4mIFN0cmluZ0FsbG9jYXRvcl9jaGFyKCk7CiBuc1N0cmluZ0Fs
bG9jYXRvcjxQUlVuaWNoYXI+JiBTdHJpbmdBbGxvY2F0b3Jfd2NoYXJfdCgpOwoKCgoKCnRlbXBs
YXRlIDxjbGFzcyBUPgpzdHJ1Y3QgbnNTdHJpbmdBbGxvY2F0b3JUcmFpdHMKICB7CiAgfTsKCnRl
bXBsYXRlIDw+CnN0cnVjdCBuc1N0cmluZ0FsbG9jYXRvclRyYWl0czxjaGFyPgogIHsKICAgIHN0
YXRpYyBuc1N0cmluZ0FsbG9jYXRvcjxjaGFyPiYgZ2xvYmFsX3N0cmluZ19hbGxvY2F0b3IoKSB7
IHJldHVybiBTdHJpbmdBbGxvY2F0b3JfY2hhcigpOyB9CiAgfTsKCnRlbXBsYXRlIDw+CnN0cnVj
dCBuc1N0cmluZ0FsbG9jYXRvclRyYWl0czxQUlVuaWNoYXI+CiAgewogICAgc3RhdGljIG5zU3Ry
aW5nQWxsb2NhdG9yPFBSVW5pY2hhcj4mIGdsb2JhbF9zdHJpbmdfYWxsb2NhdG9yKCkgeyByZXR1
cm4gU3RyaW5nQWxsb2NhdG9yX3djaGFyX3QoKTsgfQogIH07CgoKCgp0ZW1wbGF0ZSA8Y2xhc3Mg
Q2hhclQ+CmNsYXNzIG5zU2hhcmVkQnVmZmVySGFuZGxlCiAgICA6IHB1YmxpYyBuc0J1ZmZlckhh
bmRsZTxDaGFyVD4KICB7CiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgUFJVaW50MzIgc2l6ZV90
eXBlOwoKICAgICAgZW51bQogICAgICAgIHsKICAgICAgICAgIGtJc0ltbXV0YWJsZSA9IDB4MDEw
MDAwMDAsCiAgICAgICAgICBrSXNTaW5nbGVBbGxvY2F0aW9uV2l0aEJ1ZmZlciA9IDB4MDIwMDAw
MDAsCiAgICAgICAgICBrSXNVc2VyQWxsb2NhdG9yID0gMHgwNDAwMDAwMCwKCgogICAgICAgICAg
a0lzTlVMTCA9IDB4ODAwMDAwMDAsCiAgICAgICAgICBrSW1wbGVtZW50YXRpb25GbGFnc01hc2sg
PSAweEYwMDAwMDAwLAoKICAgICAgICAgIGtGbGFnc01hc2sgPSAweEZGMDAwMDAwLAogICAgICAg
ICAga1JlZkNvdW50TWFzayA9IDB4MDBGRkZGRkYKICAgICAgICB9OwoKICAgIHB1YmxpYzoKICAg
ICAgbnNTaGFyZWRCdWZmZXJIYW5kbGUoIENoYXJUKiBhRGF0YVN0YXJ0LCBDaGFyVCogYURhdGFF
bmQsIHNpemVfdHlwZSBhU3RvcmFnZUxlbmd0aCwgUFJCb29sIGlzU2luZ2xlQWxsb2NhdGlvbiAp
CiAgICAgICAgICA6IG5zQnVmZmVySGFuZGxlPENoYXJUPihhRGF0YVN0YXJ0LCBhRGF0YUVuZCks
CiAgICAgICAgICAgIG1GbGFncygwKSwKICAgICAgICAgICAgbVN0b3JhZ2VMZW5ndGgoYVN0b3Jh
Z2VMZW5ndGgpCiAgICAgICAgewogICAgICAgICAgaWYgKCBpc1NpbmdsZUFsbG9jYXRpb24gKQog
ICAgICAgICAgICBtRmxhZ3MgfD0ga0lzU2luZ2xlQWxsb2NhdGlvbldpdGhCdWZmZXI7CiAgICAg
ICAgfQoKICAgICAgfm5zU2hhcmVkQnVmZmVySGFuZGxlKCk7CgogICAgICB2b2lkCiAgICAgIEFj
cXVpcmVSZWZlcmVuY2UoKSBjb25zdAogICAgICAgIHsKICAgICAgICAgIG5zU2hhcmVkQnVmZmVy
SGFuZGxlPENoYXJUPiogbXV0YWJsZV90aGlzID0gY29uc3RfY2FzdDwgbnNTaGFyZWRCdWZmZXJI
YW5kbGU8Q2hhclQ+KiA+KHRoaXMpOwogICAgICAgICAgbXV0YWJsZV90aGlzLT5zZXRfcmVmY291
bnQoIGdldF9yZWZjb3VudCgpKzEgKTsKICAgICAgICB9CgogICAgICB2b2lkIFJlbGVhc2VSZWZl
cmVuY2UoKSBjb25zdDsKCiAgICAgIFBSQm9vbAogICAgICBJc1JlZmVyZW5jZWQoKSBjb25zdAog
ICAgICAgIHsKICAgICAgICAgIHJldHVybiBnZXRfcmVmY291bnQoKSAhPSAwOwogICAgICAgIH0K
CiAgICAgIFBSQm9vbAogICAgICBJc011dGFibGUoKSBjb25zdAogICAgICAgIHsKCiAgICAgICAg
ICByZXR1cm4gKG1GbGFncyAmIChrUmVmQ291bnRNYXNrIHwga0lzSW1tdXRhYmxlKSA9PSAxKTsK
ICAgICAgICB9CgogICAgICB2b2lkIFN0b3JhZ2VMZW5ndGgoIHNpemVfdHlwZSBhTmV3U3RvcmFn
ZUxlbmd0aCApCiAgICAgICAgewogICAgICAgICAgbVN0b3JhZ2VMZW5ndGggPSBhTmV3U3RvcmFn
ZUxlbmd0aDsKICAgICAgICB9CgogICAgICBzaXplX3R5cGUKICAgICAgU3RvcmFnZUxlbmd0aCgp
IGNvbnN0CiAgICAgICAgewogICAgICAgICAgcmV0dXJuIG1TdG9yYWdlTGVuZ3RoOwogICAgICAg
IH0KCiAgICAgIFBSVWludDMyCiAgICAgIEdldEltcGxlbWVudGF0aW9uRmxhZ3MoKSBjb25zdAog
ICAgICAgIHsKICAgICAgICAgIHJldHVybiBtRmxhZ3MgJiBrSW1wbGVtZW50YXRpb25GbGFnc01h
c2s7CiAgICAgICAgfQoKICAgICAgdm9pZAogICAgICBTZXRJbXBsZW1lbnRhdGlvbkZsYWdzKCBQ
UlVpbnQzMiBhTmV3RmxhZ3MgKQogICAgICAgIHsKICAgICAgICAgIG1GbGFncyA9IChtRmxhZ3Mg
JiB+a0ltcGxlbWVudGF0aW9uRmxhZ3NNYXNrKSB8IChhTmV3RmxhZ3MgJiBrSW1wbGVtZW50YXRp
b25GbGFnc01hc2spOwogICAgICAgIH0KCiAgICBwcm90ZWN0ZWQ6CiAgICAgIFBSVWludDMyIG1G
bGFnczsKICAgICAgc2l6ZV90eXBlIG1TdG9yYWdlTGVuZ3RoOwoKICAgICAgUFJVaW50MzIKICAg
ICAgZ2V0X3JlZmNvdW50KCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICByZXR1cm4gbUZsYWdz
ICYga1JlZkNvdW50TWFzazsKICAgICAgICB9CgogICAgICBQUlVpbnQzMgogICAgICBzZXRfcmVm
Y291bnQoIFBSVWludDMyIGFOZXdSZWZDb3VudCApCiAgICAgICAgewogICAgICAgICAgOwoKICAg
ICAgICAgIG1GbGFncyA9IChtRmxhZ3MgJiBrRmxhZ3NNYXNrKSB8IGFOZXdSZWZDb3VudDsKICAg
ICAgICAgIHJldHVybiBhTmV3UmVmQ291bnQ7CiAgICAgICAgfQoKICAgICAgbnNTdHJpbmdBbGxv
Y2F0b3I8Q2hhclQ+JiBnZXRfYWxsb2NhdG9yKCkgY29uc3Q7CiAgfTsKCgp0ZW1wbGF0ZSA8Y2xh
c3MgQ2hhclQ+CmNsYXNzIG5zU2hhcmVkQnVmZmVySGFuZGxlV2l0aEFsbG9jYXRvcgogICAgOiBw
dWJsaWMgbnNTaGFyZWRCdWZmZXJIYW5kbGU8Q2hhclQ+CiAgewogICAgcHVibGljOgoKICAgICAg
dHlwZWRlZiBQUlVpbnQzMiBzaXplX3R5cGU7CgogICAgICBuc1NoYXJlZEJ1ZmZlckhhbmRsZVdp
dGhBbGxvY2F0b3IoIENoYXJUKiBhRGF0YVN0YXJ0LCBDaGFyVCogYURhdGFFbmQsIHNpemVfdHlw
ZSBhU3RvcmFnZUxlbmd0aCwgbnNTdHJpbmdBbGxvY2F0b3I8Q2hhclQ+JiBhQWxsb2NhdG9yICkK
ICAgICAgICAgIDogbnNTaGFyZWRCdWZmZXJIYW5kbGU8Q2hhclQ+KGFEYXRhU3RhcnQsIGFEYXRh
RW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYVN0b3JhZ2VMZW5n
dGgsIDApLAogICAgICAgICAgICBtQWxsb2NhdG9yKGFBbGxvY2F0b3IpCiAgICAgICAgewogICAg
ICAgICAgdGhpcy0+bUZsYWdzIHw9IHRoaXMtPmtJc1VzZXJBbGxvY2F0b3I7CiAgICAgICAgfQoK
ICAgICAgbnNTdHJpbmdBbGxvY2F0b3I8Q2hhclQ+JiBnZXRfYWxsb2NhdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbUFsbG9jYXRvcjsgfQoKICAgIHByb3RlY3RlZDoKICAgICAgbnNTdHJpbmdBbGxvY2F0
b3I8Q2hhclQ+JiBtQWxsb2NhdG9yOwogIH07CgoKCnRlbXBsYXRlIDxjbGFzcyBDaGFyVD4KY2xh
c3MgbnNTaGFyZWRCdWZmZXJIYW5kbGVXaXRoRGVzdHJveQogICAgOiBwdWJsaWMgbnNTaGFyZWRC
dWZmZXJIYW5kbGU8Q2hhclQ+CiAgewogICAgcHVibGljOgoKICAgICAgdHlwZWRlZiBQUlVpbnQz
MiBzaXplX3R5cGU7CgogICAgICBuc1NoYXJlZEJ1ZmZlckhhbmRsZVdpdGhEZXN0cm95KCBDaGFy
VCogYURhdGFTdGFydCwgQ2hhclQqIGFEYXRhRW5kLCBzaXplX3R5cGUgYVN0b3JhZ2VMZW5ndGgp
CiAgICAgICAgICA6IG5zU2hhcmVkQnVmZmVySGFuZGxlPENoYXJUPihhRGF0YVN0YXJ0LCBhRGF0
YUVuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFTdG9yYWdlTGVu
Z3RoLCAwKQogICAgICAgIHsKICAgICAgICAgIHRoaXMtPm1GbGFncyB8PQogICAgICAgICAgICAg
IHRoaXMtPmtJc1VzZXJBbGxvY2F0b3IgfCB0aGlzLT5rSXNTaW5nbGVBbGxvY2F0aW9uV2l0aEJ1
ZmZlcjsKICAgICAgICB9CgogICAgICB2aXJ0dWFsIHZvaWQgRGVzdHJveSgpID0gMDsKCgoKCiAg
ICAgIHZpcnR1YWwgfm5zU2hhcmVkQnVmZmVySGFuZGxlV2l0aERlc3Ryb3koKSB7IH0KCgogIH07
Cgp0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQ+CmNsYXNzIG5zTm9uRGVzdHJ1Y3RpbmdTaGFyZWRCdWZm
ZXJIYW5kbGUKICAgIDogcHVibGljIG5zU2hhcmVkQnVmZmVySGFuZGxlV2l0aERlc3Ryb3k8Q2hh
clQ+CiAgewogICAgcHVibGljOgoKICAgICAgdHlwZWRlZiBQUlVpbnQzMiBzaXplX3R5cGU7Cgog
ICAgICBuc05vbkRlc3RydWN0aW5nU2hhcmVkQnVmZmVySGFuZGxlKCBDaGFyVCogYURhdGFTdGFy
dCwgQ2hhclQqIGFEYXRhRW5kLCBzaXplX3R5cGUgYVN0b3JhZ2VMZW5ndGgpCiAgICAgICAgICA6
IG5zU2hhcmVkQnVmZmVySGFuZGxlV2l0aERlc3Ryb3k8Q2hhclQ+KGFEYXRhU3RhcnQsIGFEYXRh
RW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
U3RvcmFnZUxlbmd0aCkKICAgICAgICB7CiAgICAgICAgfQoKICAgICAgdmlydHVhbCB2b2lkIERl
c3Ryb3koKQogICAgICAgIHsKCgogICAgICAgICAgdGhpcy0+c2V0X3JlZmNvdW50KDEpOwogICAg
ICAgIH0KCiAgfTsKCgp0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQ+Cm5zU3RyaW5nQWxsb2NhdG9yPENo
YXJUPiYKbnNTaGFyZWRCdWZmZXJIYW5kbGU8Q2hhclQ+OjpnZXRfYWxsb2NhdG9yKCkgY29uc3QK
CiAgewogICAgaWYgKCBtRmxhZ3MgJiBrSXNVc2VyQWxsb2NhdG9yICkKICAgICAgewogICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PCBjb25zdCBuc1NoYXJlZEJ1ZmZlckhhbmRsZVdpdGhB
bGxvY2F0b3I8Q2hhclQ+KiA+KHRoaXMpLT5nZXRfYWxsb2NhdG9yKCk7CiAgICAgIH0KCiAgICBy
ZXR1cm4gbnNTdHJpbmdBbGxvY2F0b3JUcmFpdHM8Q2hhclQ+OjpnbG9iYWxfc3RyaW5nX2FsbG9j
YXRvcigpOwogIH0KCgp0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQ+Cm5zU2hhcmVkQnVmZmVySGFuZGxl
PENoYXJUPjo6fm5zU2hhcmVkQnVmZmVySGFuZGxlKCkKCiAgewogICAgOwoKICAgIGlmICggISht
RmxhZ3MgJiBrSXNTaW5nbGVBbGxvY2F0aW9uV2l0aEJ1ZmZlcikgKQogICAgICB7CiAgICAgICAg
Q2hhclQqIHN0cmluZ19zdG9yYWdlID0gdGhpcy0+bURhdGFTdGFydDsKICAgICAgICBnZXRfYWxs
b2NhdG9yKCkuRGVhbGxvY2F0ZShzdHJpbmdfc3RvcmFnZSk7CiAgICAgIH0KICB9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgQ2hhclQ+CnZvaWQKbnNTaGFyZWRCdWZmZXJIYW5kbGU8Q2hhclQ+OjpSZWxlYXNl
UmVmZXJlbmNlKCkgY29uc3QKICB7CiAgICBuc1NoYXJlZEJ1ZmZlckhhbmRsZTxDaGFyVD4qIG11
dGFibGVfdGhpcyA9IGNvbnN0X2Nhc3Q8IG5zU2hhcmVkQnVmZmVySGFuZGxlPENoYXJUPiogPih0
aGlzKTsKICAgIGlmICggIW11dGFibGVfdGhpcy0+c2V0X3JlZmNvdW50KCBnZXRfcmVmY291bnQo
KS0xICkgKQogICAgICB7CiAgICAgICAgaWYgKCB+bUZsYWdzICYgKGtJc1VzZXJBbGxvY2F0b3J8
a0lzU2luZ2xlQWxsb2NhdGlvbldpdGhCdWZmZXIpICkKICAgICAgICAgIGRlbGV0ZSBtdXRhYmxl
X3RoaXM7CiAgICAgICAgZWxzZQoKCgogICAgICAgICAgc3RhdGljX2Nhc3Q8IG5zU2hhcmVkQnVm
ZmVySGFuZGxlV2l0aERlc3Ryb3k8Q2hhclQ+KiA+KG11dGFibGVfdGhpcyktPkRlc3Ryb3koKTsK
CiAgICAgIH0KICB9CiMgMzMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNBU3RyaW5n
LmgiIDIKCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zQ2hhclRyYWl0cy5o
IiAxCiMgNDYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNDaGFyVHJhaXRzLmgiCiMg
MSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDEgMwojIDMwICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIg
MwpleHRlcm4gIkMiIHsKIyA0OCAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMKZW51bQp7CiAgX0lT
dXBwZXIgPSAoKDApIDwgOCA/ICgoMSA8PCAoMCkpIDw8IDgpIDogKCgxIDw8ICgwKSkgPj4gOCkp
LAogIF9JU2xvd2VyID0gKCgxKSA8IDggPyAoKDEgPDwgKDEpKSA8PCA4KSA6ICgoMSA8PCAoMSkp
ID4+IDgpKSwKICBfSVNhbHBoYSA9ICgoMikgPCA4ID8gKCgxIDw8ICgyKSkgPDwgOCkgOiAoKDEg
PDwgKDIpKSA+PiA4KSksCiAgX0lTZGlnaXQgPSAoKDMpIDwgOCA/ICgoMSA8PCAoMykpIDw8IDgp
IDogKCgxIDw8ICgzKSkgPj4gOCkpLAogIF9JU3hkaWdpdCA9ICgoNCkgPCA4ID8gKCgxIDw8ICg0
KSkgPDwgOCkgOiAoKDEgPDwgKDQpKSA+PiA4KSksCiAgX0lTc3BhY2UgPSAoKDUpIDwgOCA/ICgo
MSA8PCAoNSkpIDw8IDgpIDogKCgxIDw8ICg1KSkgPj4gOCkpLAogIF9JU3ByaW50ID0gKCg2KSA8
IDggPyAoKDEgPDwgKDYpKSA8PCA4KSA6ICgoMSA8PCAoNikpID4+IDgpKSwKICBfSVNncmFwaCA9
ICgoNykgPCA4ID8gKCgxIDw8ICg3KSkgPDwgOCkgOiAoKDEgPDwgKDcpKSA+PiA4KSksCiAgX0lT
YmxhbmsgPSAoKDgpIDwgOCA/ICgoMSA8PCAoOCkpIDw8IDgpIDogKCgxIDw8ICg4KSkgPj4gOCkp
LAogIF9JU2NudHJsID0gKCg5KSA8IDggPyAoKDEgPDwgKDkpKSA8PCA4KSA6ICgoMSA8PCAoOSkp
ID4+IDgpKSwKICBfSVNwdW5jdCA9ICgoMTApIDwgOCA/ICgoMSA8PCAoMTApKSA8PCA4KSA6ICgo
MSA8PCAoMTApKSA+PiA4KSksCiAgX0lTYWxudW0gPSAoKDExKSA8IDggPyAoKDEgPDwgKDExKSkg
PDwgOCkgOiAoKDEgPDwgKDExKSkgPj4gOCkpCn07CiMgODEgIi91c3IvaW5jbHVkZS9jdHlwZS5o
IiAzCmV4dGVybiBfX2NvbnN0IHVuc2lnbmVkIHNob3J0IGludCAqKl9fY3R5cGVfYl9sb2MgKHZv
aWQpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3QpKTsKZXh0ZXJuIF9fY29uc3QgX19pbnQz
Ml90ICoqX19jdHlwZV90b2xvd2VyX2xvYyAodm9pZCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdCkpOwpleHRlcm4gX19jb25zdCBfX2ludDMyX3QgKipfX2N0eXBlX3RvdXBwZXJfbG9jICh2
b2lkKQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0KSk7CiMgOTYgIi91c3IvaW5jbHVkZS9j
dHlwZS5oIiAzCgoKCgoKCmV4dGVybiBpbnQgaXNhbG51bSAoaW50KSB0aHJvdyAoKTsKZXh0ZXJu
IGludCBpc2FscGhhIChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzY250cmwgKGludCkgdGhy
b3cgKCk7CmV4dGVybiBpbnQgaXNkaWdpdCAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc2xv
d2VyIChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzZ3JhcGggKGludCkgdGhyb3cgKCk7CmV4
dGVybiBpbnQgaXNwcmludCAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc3B1bmN0IChpbnQp
IHRocm93ICgpOwpleHRlcm4gaW50IGlzc3BhY2UgKGludCkgdGhyb3cgKCk7CmV4dGVybiBpbnQg
aXN1cHBlciAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc3hkaWdpdCAoaW50KSB0aHJvdyAo
KTsKCgoKZXh0ZXJuIGludCB0b2xvd2VyIChpbnQgX19jKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50
IHRvdXBwZXIgKGludCBfX2MpIHRocm93ICgpOwoKCgoKCgoKCmV4dGVybiBpbnQgaXNibGFuayAo
aW50KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBpc2N0eXBlIChpbnQgX19jLCBpbnQgX19t
YXNrKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBpc2FzY2lpIChpbnQgX19jKSB0aHJvdyAo
KTsKCgoKZXh0ZXJuIGludCB0b2FzY2lpIChpbnQgX19jKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGlu
dCBfdG91cHBlciAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfdG9sb3dlciAoaW50KSB0aHJv
dyAoKTsKIyAyNDcgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzCmV4dGVybiBpbnQgaXNhbG51bV9s
IChpbnQsIF9fbG9jYWxlX3QpIHRocm93ICgpOwpleHRlcm4gaW50IGlzYWxwaGFfbCAoaW50LCBf
X2xvY2FsZV90KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc2NudHJsX2wgKGludCwgX19sb2NhbGVf
dCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgaXNkaWdpdF9sIChpbnQsIF9fbG9jYWxlX3QpIHRocm93
ICgpOwpleHRlcm4gaW50IGlzbG93ZXJfbCAoaW50LCBfX2xvY2FsZV90KSB0aHJvdyAoKTsKZXh0
ZXJuIGludCBpc2dyYXBoX2wgKGludCwgX19sb2NhbGVfdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQg
aXNwcmludF9sIChpbnQsIF9fbG9jYWxlX3QpIHRocm93ICgpOwpleHRlcm4gaW50IGlzcHVuY3Rf
bCAoaW50LCBfX2xvY2FsZV90KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc3NwYWNlX2wgKGludCwg
X19sb2NhbGVfdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgaXN1cHBlcl9sIChpbnQsIF9fbG9jYWxl
X3QpIHRocm93ICgpOwpleHRlcm4gaW50IGlzeGRpZ2l0X2wgKGludCwgX19sb2NhbGVfdCkgdGhy
b3cgKCk7CgpleHRlcm4gaW50IGlzYmxhbmtfbCAoaW50LCBfX2xvY2FsZV90KSB0aHJvdyAoKTsK
CgoKZXh0ZXJuIGludCBfX3RvbG93ZXJfbCAoaW50IF9fYywgX19sb2NhbGVfdCBfX2wpIHRocm93
ICgpOwpleHRlcm4gaW50IHRvbG93ZXJfbCAoaW50IF9fYywgX19sb2NhbGVfdCBfX2wpIHRocm93
ICgpOwoKCmV4dGVybiBpbnQgX190b3VwcGVyX2wgKGludCBfX2MsIF9fbG9jYWxlX3QgX19sKSB0
aHJvdyAoKTsKZXh0ZXJuIGludCB0b3VwcGVyX2wgKGludCBfX2MsIF9fbG9jYWxlX3QgX19sKSB0
aHJvdyAoKTsKIyAzMjMgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzCn0KIyA0NyAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL3N0cmluZy9uc0NoYXJUcmFpdHMuaCIgMgojIDcwICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvc3RyaW5nL25zQ2hhclRyYWl0cy5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9zdHJpbmcvbnNTdHJpbmdJdGVyYXRvclV0aWxzLmgiIDEKIyAzMSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL3N0cmluZy9uc1N0cmluZ0l0ZXJhdG9yVXRpbHMuaCIKdGVtcGxhdGUgPGNsYXNzIEl0
ZXJhdG9yPgppbmxpbmUKUFJCb29sClNhbWVGcmFnbWVudCggY29uc3QgSXRlcmF0b3ImIGxocywg
Y29uc3QgSXRlcmF0b3ImIHJocyApCiAgewogICAgcmV0dXJuIGxocy5mcmFnbWVudCgpLm1TdGFy
dCA9PSByaHMuZnJhZ21lbnQoKS5tU3RhcnQ7CiAgfQoKdGVtcGxhdGUgPGNsYXNzIENoYXJUPiBj
bGFzcyBuc1JlYWRpbmdJdGVyYXRvcjsKCgoKCiBzaXplX3QgRGlzdGFuY2UoIGNvbnN0IG5zUmVh
ZGluZ0l0ZXJhdG9yPFBSVW5pY2hhcj4mLCBjb25zdCBuc1JlYWRpbmdJdGVyYXRvcjxQUlVuaWNo
YXI+JiApOwogc2l6ZV90IERpc3RhbmNlKCBjb25zdCBuc1JlYWRpbmdJdGVyYXRvcjxjaGFyPiYs
IGNvbnN0IG5zUmVhZGluZ0l0ZXJhdG9yPGNoYXI+JiApOwojIDcxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvc3RyaW5nL25zQ2hhclRyYWl0cy5oIiAyCgoKCgoKICB0eXBlZGVmIFBSQm9vbCBuc0No
YXJUcmFpdHNfYm9vbDsKCgp0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQ+IHN0cnVjdCBuc0NoYXJUcmFp
dHMge307Cgp0ZW1wbGF0ZSA8PgpzdHJ1Y3QgbnNDaGFyVHJhaXRzPFBSVW5pY2hhcj4KICB7CiAg
ICB0eXBlZGVmIFBSVW5pY2hhciBjaGFyX3R5cGU7CiAgICB0eXBlZGVmIFBSVWludDE2IHVuc2ln
bmVkX2NoYXJfdHlwZTsKICAgIHR5cGVkZWYgY2hhciBpbmNvbXBhdGlibGVfY2hhcl90eXBlOwoK
ICAgIHN0YXRpYwogICAgdm9pZAogICAgYXNzaWduKCBjaGFyX3R5cGUmIGxocywgY2hhcl90eXBl
IHJocyApCiAgICAgIHsKICAgICAgICBsaHMgPSByaHM7CiAgICAgIH0KCgoKCgoKCiAgICB0eXBl
ZGVmIGludCBpbnRfdHlwZTsKCgogICAgc3RhdGljCiAgICBjaGFyX3R5cGUKICAgIHRvX2NoYXJf
dHlwZSggaW50X3R5cGUgYyApCiAgICAgIHsKICAgICAgICByZXR1cm4gY2hhcl90eXBlKGMpOwog
ICAgICB9CgogICAgc3RhdGljCiAgICBpbnRfdHlwZQogICAgdG9faW50X3R5cGUoIGNoYXJfdHlw
ZSBjICkKICAgICAgewogICAgICAgIHJldHVybiBpbnRfdHlwZSggc3RhdGljX2Nhc3Q8IHVuc2ln
bmVkX2NoYXJfdHlwZSA+KGMpICk7CiAgICAgIH0KCiAgICBzdGF0aWMKICAgIG5zQ2hhclRyYWl0
c19ib29sCiAgICBlcV9pbnRfdHlwZSggaW50X3R5cGUgbGhzLCBpbnRfdHlwZSByaHMgKQogICAg
ICB7CiAgICAgICAgcmV0dXJuIGxocyA9PSByaHM7CiAgICAgIH0KCgoKCiAgICBzdGF0aWMKICAg
IG5zQ2hhclRyYWl0c19ib29sCiAgICBlcSggY2hhcl90eXBlIGxocywgY2hhcl90eXBlIHJocyAp
CiAgICAgIHsKICAgICAgICByZXR1cm4gbGhzID09IHJoczsKICAgICAgfQoKICAgIHN0YXRpYwog
ICAgbnNDaGFyVHJhaXRzX2Jvb2wKICAgIGx0KCBjaGFyX3R5cGUgbGhzLCBjaGFyX3R5cGUgcmhz
ICkKICAgICAgewogICAgICAgIHJldHVybiBsaHMgPCByaHM7CiAgICAgIH0KCgoKCiAgICBzdGF0
aWMKICAgIGNoYXJfdHlwZSoKICAgIG1vdmUoIGNoYXJfdHlwZSogczEsIGNvbnN0IGNoYXJfdHlw
ZSogczIsIHNpemVfdCBuICkKICAgICAgewogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDwgY2hh
cl90eXBlKiA+KG1lbW1vdmUoczEsIHMyLCBuICogc2l6ZW9mKGNoYXJfdHlwZSkpKTsKICAgICAg
fQoKICAgIHN0YXRpYwogICAgY2hhcl90eXBlKgogICAgY29weSggY2hhcl90eXBlKiBzMSwgY29u
c3QgY2hhcl90eXBlKiBzMiwgc2l6ZV90IG4gKQogICAgICB7CiAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PCBjaGFyX3R5cGUqID4obWVtY3B5KHMxLCBzMiwgbiAqIHNpemVvZihjaGFyX3R5cGUp
KSk7CiAgICAgIH0KCiAgICBzdGF0aWMKICAgIGNoYXJfdHlwZSoKICAgIGFzc2lnbiggY2hhcl90
eXBlKiBzLCBzaXplX3QgbiwgY2hhcl90eXBlIGMgKQogICAgICB7CgoKCiAgICAgICAgY2hhcl90
eXBlKiByZXN1bHQgPSBzOwogICAgICAgIHdoaWxlICggbi0tICkKICAgICAgICAgIGFzc2lnbigq
cysrLCBjKTsKICAgICAgICByZXR1cm4gcmVzdWx0OwoKICAgICAgfQoKICAgIHN0YXRpYwogICAg
aW50CiAgICBjb21wYXJlKCBjb25zdCBjaGFyX3R5cGUqIHMxLCBjb25zdCBjaGFyX3R5cGUqIHMy
LCBzaXplX3QgbiApCiAgICAgIHsKCgoKICAgICAgICBmb3IgKCA7IG4tLTsgKytzMSwgKytzMiAp
CiAgICAgICAgICB7CiAgICAgICAgICAgIGlmICggbHQoKnMxLCAqczIpICkKICAgICAgICAgICAg
ICByZXR1cm4gLTE7CiAgICAgICAgICAgIGlmICggbHQoKnMyLCAqczEpICkKICAgICAgICAgICAg
ICByZXR1cm4gMTsKICAgICAgICAgIH0KCiAgICAgICAgcmV0dXJuIDA7CgogICAgICB9CgogICAg
c3RhdGljCiAgICBzaXplX3QKICAgIGxlbmd0aCggY29uc3QgY2hhcl90eXBlKiBzICkKICAgICAg
ewoKCgogICAgICAgIHNpemVfdCByZXN1bHQgPSAwOwogICAgICAgIHdoaWxlICggIWVxKCpzKyss
IGNoYXJfdHlwZSgwKSkgKQogICAgICAgICAgKytyZXN1bHQ7CiAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKCiAgICAgIH0KCiAgICBzdGF0aWMKICAgIGNvbnN0IGNoYXJfdHlwZSoKICAgIGZpbmQoIGNv
bnN0IGNoYXJfdHlwZSogcywgc2l6ZV90IG4sIGNoYXJfdHlwZSBjICkKICAgICAgewoKCgogICAg
ICAgIHdoaWxlICggbi0tICkKICAgICAgICAgIHsKICAgICAgICAgICAgaWYgKCBlcSgqcywgYykg
KQogICAgICAgICAgICAgIHJldHVybiBzOwogICAgICAgICAgICArK3M7CiAgICAgICAgICB9Cgog
ICAgICAgIHJldHVybiAwOwoKICAgICAgfQojIDI1MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0
cmluZy9uc0NoYXJUcmFpdHMuaCIKICB9OwoKdGVtcGxhdGUgPD4Kc3RydWN0IG5zQ2hhclRyYWl0
czxjaGFyPgogIHsKICAgIHR5cGVkZWYgY2hhciBjaGFyX3R5cGU7CiAgICB0eXBlZGVmIHVuc2ln
bmVkIGNoYXIgdW5zaWduZWRfY2hhcl90eXBlOwogICAgdHlwZWRlZiBQUlVuaWNoYXIgaW5jb21w
YXRpYmxlX2NoYXJfdHlwZTsKCiAgICBzdGF0aWMKICAgIHZvaWQKICAgIGFzc2lnbiggY2hhcl90
eXBlJiBsaHMsIGNoYXJfdHlwZSByaHMgKQogICAgICB7CiAgICAgICAgbGhzID0gcmhzOwogICAg
ICB9CgoKCgogICAgdHlwZWRlZiBpbnQgaW50X3R5cGU7CgogICAgc3RhdGljCiAgICBjaGFyX3R5
cGUKICAgIHRvX2NoYXJfdHlwZSggaW50X3R5cGUgYyApCiAgICAgIHsKICAgICAgICByZXR1cm4g
Y2hhcl90eXBlKGMpOwogICAgICB9CgogICAgc3RhdGljCiAgICBpbnRfdHlwZQogICAgdG9faW50
X3R5cGUoIGNoYXJfdHlwZSBjICkKICAgICAgewogICAgICAgIHJldHVybiBpbnRfdHlwZSggc3Rh
dGljX2Nhc3Q8IHVuc2lnbmVkX2NoYXJfdHlwZSA+KGMpICk7CiAgICAgIH0KCiAgICBzdGF0aWMK
ICAgIG5zQ2hhclRyYWl0c19ib29sCiAgICBlcV9pbnRfdHlwZSggaW50X3R5cGUgbGhzLCBpbnRf
dHlwZSByaHMgKQogICAgICB7CiAgICAgICAgcmV0dXJuIGxocyA9PSByaHM7CiAgICAgIH0KCgoK
CiAgICBzdGF0aWMKICAgIG5zQ2hhclRyYWl0c19ib29sCiAgICBlcSggY2hhcl90eXBlIGxocywg
Y2hhcl90eXBlIHJocyApCiAgICAgIHsKICAgICAgICByZXR1cm4gbGhzID09IHJoczsKICAgICAg
fQoKICAgIHN0YXRpYwogICAgbnNDaGFyVHJhaXRzX2Jvb2wKICAgIGx0KCBjaGFyX3R5cGUgbGhz
LCBjaGFyX3R5cGUgcmhzICkKICAgICAgewogICAgICAgIHJldHVybiBsaHMgPCByaHM7CiAgICAg
IH0KCgoKCiAgICBzdGF0aWMKICAgIGNoYXJfdHlwZSoKICAgIG1vdmUoIGNoYXJfdHlwZSogczEs
IGNvbnN0IGNoYXJfdHlwZSogczIsIHNpemVfdCBuICkKICAgICAgewogICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDwgY2hhcl90eXBlKiA+KG1lbW1vdmUoczEsIHMyLCBuICogc2l6ZW9mKGNoYXJf
dHlwZSkpKTsKICAgICAgfQoKICAgIHN0YXRpYwogICAgY2hhcl90eXBlKgogICAgY29weSggY2hh
cl90eXBlKiBzMSwgY29uc3QgY2hhcl90eXBlKiBzMiwgc2l6ZV90IG4gKQogICAgICB7CiAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PCBjaGFyX3R5cGUqID4obWVtY3B5KHMxLCBzMiwgbiAqIHNp
emVvZihjaGFyX3R5cGUpKSk7CiAgICAgIH0KCiAgICBzdGF0aWMKICAgIGNoYXJfdHlwZSoKICAg
IGFzc2lnbiggY2hhcl90eXBlKiBzLCBzaXplX3QgbiwgY2hhcl90eXBlIGMgKQogICAgICB7CiAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PCBjaGFyX3R5cGUqID4obWVtc2V0KHMsIHRvX2ludF90
eXBlKGMpLCBuKSk7CiAgICAgIH0KCiAgICBzdGF0aWMKICAgIGludAogICAgY29tcGFyZSggY29u
c3QgY2hhcl90eXBlKiBzMSwgY29uc3QgY2hhcl90eXBlKiBzMiwgc2l6ZV90IG4gKQogICAgICB7
CiAgICAgICAgcmV0dXJuIG1lbWNtcChzMSwgczIsIG4pOwogICAgICB9CgogICAgc3RhdGljCiAg
ICBzaXplX3QKICAgIGxlbmd0aCggY29uc3QgY2hhcl90eXBlKiBzICkKICAgICAgewogICAgICAg
IHJldHVybiBzdHJsZW4ocyk7CiAgICAgIH0KCiAgICBzdGF0aWMKICAgIGNvbnN0IGNoYXJfdHlw
ZSoKICAgIGZpbmQoIGNvbnN0IGNoYXJfdHlwZSogcywgc2l6ZV90IG4sIGNoYXJfdHlwZSBjICkK
ICAgICAgewogICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PCBjb25zdCBjaGFyX3R5cGUq
ID4obWVtY2hyKHMsIHRvX2ludF90eXBlKGMpLCBuKSk7CiAgICAgIH0KIyAzNzggIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNDaGFyVHJhaXRzLmgiCiAgfTsKCnRlbXBsYXRlIDxjbGFz
cyBJbnB1dEl0ZXJhdG9yPgpzdHJ1Y3QgbnNDaGFyU291cmNlVHJhaXRzCiAgewogICAgdHlwZWRl
ZiB0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yOjpkaWZmZXJlbmNlX3R5cGUgZGlmZmVyZW5jZV90eXBl
OwojIDM5NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc0NoYXJUcmFpdHMuaCIKICAg
IHN0YXRpYwogICAgUFJVaW50MzIKICAgIHJlYWRhYmxlX2Rpc3RhbmNlKCBjb25zdCBJbnB1dEl0
ZXJhdG9yJiBpdGVyICkKICAgICAgewogICAgICAgIHJldHVybiBpdGVyLnNpemVfZm9yd2FyZCgp
OwogICAgICB9CgogICAgc3RhdGljCiAgICBQUlVpbnQzMgogICAgcmVhZGFibGVfZGlzdGFuY2Uo
IGNvbnN0IElucHV0SXRlcmF0b3ImIGZpcnN0LCBjb25zdCBJbnB1dEl0ZXJhdG9yJiBsYXN0ICkK
ICAgICAgewogICAgICAgIHJldHVybiBQUlVpbnQzMihTYW1lRnJhZ21lbnQoZmlyc3QsIGxhc3Qp
ID8gbGFzdC5nZXQoKS1maXJzdC5nZXQoKSA6IGZpcnN0LnNpemVfZm9yd2FyZCgpKTsKICAgICAg
fQoKICAgIHN0YXRpYwogICAgY29uc3QgdHlwZW5hbWUgSW5wdXRJdGVyYXRvcjo6dmFsdWVfdHlw
ZSoKICAgIHJlYWQoIGNvbnN0IElucHV0SXRlcmF0b3ImIGl0ZXIgKQogICAgICB7CiAgICAgICAg
cmV0dXJuIGl0ZXIuZ2V0KCk7CiAgICAgIH0KCiAgICBzdGF0aWMKICAgIHZvaWQKICAgIGFkdmFu
Y2UoIElucHV0SXRlcmF0b3ImIHMsIGRpZmZlcmVuY2VfdHlwZSBuICkKICAgICAgewogICAgICAg
IHMuYWR2YW5jZShuKTsKICAgICAgfQogIH07CgoKCnRlbXBsYXRlIDxjbGFzcyBDaGFyVD4Kc3Ry
dWN0IG5zQ2hhclNvdXJjZVRyYWl0czxDaGFyVCo+CiAgewogICAgdHlwZWRlZiBwdHJkaWZmX3Qg
ZGlmZmVyZW5jZV90eXBlOwojIDQzOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc0No
YXJUcmFpdHMuaCIKICAgIHN0YXRpYwogICAgUFJVaW50MzIKICAgIHJlYWRhYmxlX2Rpc3RhbmNl
KCBDaGFyVCogcyApCiAgICAgIHsKICAgICAgICByZXR1cm4gUFJVaW50MzIobnNDaGFyVHJhaXRz
PENoYXJUPjo6bGVuZ3RoKHMpKTsKCiAgICAgIH0KCiAgICBzdGF0aWMKICAgIFBSVWludDMyCiAg
ICByZWFkYWJsZV9kaXN0YW5jZSggQ2hhclQqIGZpcnN0LCBDaGFyVCogbGFzdCApCiAgICAgIHsK
ICAgICAgICByZXR1cm4gUFJVaW50MzIobGFzdC1maXJzdCk7CiAgICAgIH0KCiAgICBzdGF0aWMK
ICAgIGNvbnN0IENoYXJUKgogICAgcmVhZCggQ2hhclQqIHMgKQogICAgICB7CiAgICAgICAgcmV0
dXJuIHM7CiAgICAgIH0KCiAgICBzdGF0aWMKICAgIHZvaWQKICAgIGFkdmFuY2UoIENoYXJUKiYg
cywgZGlmZmVyZW5jZV90eXBlIG4gKQogICAgICB7CiAgICAgICAgcyArPSBuOwogICAgICB9CiAg
fTsKIyA1NjMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNDaGFyVHJhaXRzLmgiCnRl
bXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvcj4Kc3RydWN0IG5zQ2hhclNpbmtUcmFpdHMKICB7
CiAgICBzdGF0aWMKICAgIFBSVWludDMyCiAgICB3cml0ZSggT3V0cHV0SXRlcmF0b3ImIGl0ZXIs
IGNvbnN0IHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yOjp2YWx1ZV90eXBlKiBzLCBQUlVpbnQzMiBu
ICkKICAgICAgewogICAgICAgIHJldHVybiBpdGVyLndyaXRlKHMsIG4pOwogICAgICB9CiAgfTsK
CgoKdGVtcGxhdGUgPGNsYXNzIENoYXJUPgpzdHJ1Y3QgbnNDaGFyU2lua1RyYWl0czxDaGFyVCo+
CiAgewogICAgc3RhdGljCiAgICBQUlVpbnQzMgogICAgd3JpdGUoIENoYXJUKiYgaXRlciwgY29u
c3QgQ2hhclQqIHMsIFBSVWludDMyIG4gKQogICAgICB7CiAgICAgICAgbnNDaGFyVHJhaXRzPENo
YXJUPjo6bW92ZShpdGVyLCBzLCBuKTsKICAgICAgICBpdGVyICs9IG47CiAgICAgICAgcmV0dXJu
IG47CiAgICAgIH0KICB9OwojIDM3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zQVN0
cmluZy5oIiAyCgoKCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZ0l0
ZXJhdG9yLmgiIDEKIyAyOCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZ0l0
ZXJhdG9yLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZ0ZyYWdt
ZW50LmgiIDEKIyA0MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZ0ZyYWdt
ZW50LmgiCmVudW0gbnNGcmFnbWVudFJlcXVlc3QgeyBrUHJldkZyYWdtZW50LCBrRmlyc3RGcmFn
bWVudCwga0xhc3RGcmFnbWVudCwga05leHRGcmFnbWVudCwga0ZyYWdtZW50QXQgfTsKIyA1NyAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZ0ZyYWdtZW50LmgiCnRlbXBsYXRl
IDxjbGFzcyBDaGFyVD4Kc3RydWN0IG5zUmVhZGFibGVGcmFnbWVudAogIHsKICAgIGNvbnN0IENo
YXJUKiBtU3RhcnQ7CiAgICBjb25zdCBDaGFyVCogbUVuZDsKICAgIGNvbnN0IHZvaWQqIG1GcmFn
bWVudElkZW50aWZpZXI7CgogICAgbnNSZWFkYWJsZUZyYWdtZW50KCkKICAgICAgICA6IG1TdGFy
dCgwKSwgbUVuZCgwKSwgbUZyYWdtZW50SWRlbnRpZmllcigwKQogICAgICB7CgogICAgICB9Cgog
ICAgY29uc3Qgdm9pZCoKICAgIEdldElEKCkgY29uc3QKICAgICAgewogICAgICAgIHJldHVybiBt
RnJhZ21lbnRJZGVudGlmaWVyOwogICAgICB9CgogICAgdW5zaWduZWQgbG9uZwogICAgR2V0SURB
c0ludCgpIGNvbnN0CiAgICAgIHsKICAgICAgICB0eXBlZGVmIGNoYXIqIGNoYXJfcHRyOwogICAg
ICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyB1bG9uZzsKICAgICAgICByZXR1cm4gdWxvbmcoY2hh
cl9wdHIobUZyYWdtZW50SWRlbnRpZmllciktY2hhcl9wdHIoMCkpOwogICAgICB9CgogICAgdm9p
ZAogICAgU2V0SUQoIGNvbnN0IHZvaWQqIGFJRCApCiAgICAgIHsKICAgICAgICBtRnJhZ21lbnRJ
ZGVudGlmaWVyID0gYUlEOwogICAgICB9CgogICAgdm9pZAogICAgU2V0SUQoIHVuc2lnbmVkIGxv
bmcgYUlEICkKICAgICAgewogICAgICAgIHR5cGVkZWYgY2hhciogY2hhcl9wdHI7CiAgICAgICAg
dHlwZWRlZiB2b2lkKiB2b2lkX3B0cjsKICAgICAgICBtRnJhZ21lbnRJZGVudGlmaWVyID0gdm9p
ZF9wdHIoY2hhcl9wdHIoMCkrYUlEKTsKICAgICAgfQogIH07CiMgMTEzICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvc3RyaW5nL25zU3RyaW5nRnJhZ21lbnQuaCIKdGVtcGxhdGUgPGNsYXNzIENoYXJU
PgpzdHJ1Y3QgbnNXcml0YWJsZUZyYWdtZW50CiAgewogICAgQ2hhclQqIG1TdGFydDsKICAgIENo
YXJUKiBtRW5kOwogICAgdm9pZCogbUZyYWdtZW50SWRlbnRpZmllcjsKCiAgICBuc1dyaXRhYmxl
RnJhZ21lbnQoKQogICAgICAgIDogbVN0YXJ0KDApLCBtRW5kKDApLCBtRnJhZ21lbnRJZGVudGlm
aWVyKDApCiAgICAgIHsKCiAgICAgIH0KICB9OwojIDI5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
c3RyaW5nL25zU3RyaW5nSXRlcmF0b3IuaCIgMgoKCgoKCgoKIyAxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvc3RyaW5nL25zU3RyaW5nVHJhaXRzLmgiIDEKIyA0NCAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL3N0cmluZy9uc1N0cmluZ1RyYWl0cy5oIgp0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQ+CnN0cnVj
dCBuc1N0cmluZ1RyYWl0cwogIHsKICAgIHR5cGVkZWYgbnNBU3RyaW5nIGFic3RyYWN0X3N0cmlu
Z190eXBlOwogICAgdHlwZWRlZiBuc0FGbGF0U3RyaW5nIGFic3RyYWN0X2ZsYXRfdHlwZTsKICAg
IHR5cGVkZWYgY29uc3QgbnNEZXBlbmRlbnRTdHJpbmcgbGl0ZXJhbF9zdHJpbmdfdHlwZTsKICB9
OwojIDY0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zU3RyaW5nVHJhaXRzLmgiCnRl
bXBsYXRlIDw+CnN0cnVjdCBuc1N0cmluZ1RyYWl0czxjaGFyPgogIHsKICAgIHR5cGVkZWYgbnNB
Q1N0cmluZyBhYnN0cmFjdF9zdHJpbmdfdHlwZTsKICAgIHR5cGVkZWYgbnNBRmxhdENTdHJpbmcg
YWJzdHJhY3RfZmxhdF90eXBlOwogICAgdHlwZWRlZiBjb25zdCBuc0RlcGVuZGVudENTdHJpbmcg
bGl0ZXJhbF9zdHJpbmdfdHlwZTsKICB9OwojIDM3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3Ry
aW5nL25zU3RyaW5nSXRlcmF0b3IuaCIgMgoKCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9z
dHJpbmcvbnNBbGdvcml0aG0uaCIgMQojIDUyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5n
L25zQWxnb3JpdGhtLmgiCnRlbXBsYXRlIDxjbGFzcyBUPgppbmxpbmUKY29uc3QgVCYKTlNfTUlO
KCBjb25zdCBUJiBhLCBjb25zdCBUJiBiICkKICB7CiAgICByZXR1cm4gYiA8IGEgPyBiIDogYTsK
ICB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgVD4KaW5saW5lCmNvbnN0IFQmCk5TX01BWCggY29uc3QgVCYg
YSwgY29uc3QgVCYgYiApCiAgewogICAgcmV0dXJuIGEgPiBiID8gYSA6IGI7CiAgfQoKdGVtcGxh
dGUgPGNsYXNzIElucHV0SXRlcmF0b3IsIGNsYXNzIFQ+CmlubGluZQpQUlVpbnQzMgpOU19DT1VO
VCggSW5wdXRJdGVyYXRvciYgZmlyc3QsIGNvbnN0IElucHV0SXRlcmF0b3ImIGxhc3QsIGNvbnN0
IFQmIHZhbHVlICkKICB7CiAgICBQUlVpbnQzMiByZXN1bHQgPSAwOwogICAgZm9yICggOyBmaXJz
dCAhPSBsYXN0OyArK2ZpcnN0ICkKICAgICAgaWYgKCAqZmlyc3QgPT0gdmFsdWUgKQogICAgICAg
ICsrcmVzdWx0OwogICAgcmV0dXJuIHJlc3VsdDsKICB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJ
dGVyYXRvciwgY2xhc3MgT3V0cHV0SXRlcmF0b3I+CmlubGluZQpPdXRwdXRJdGVyYXRvciYKY29w
eV9zdHJpbmcoIElucHV0SXRlcmF0b3ImIGZpcnN0LCBjb25zdCBJbnB1dEl0ZXJhdG9yJiBsYXN0
LCBPdXRwdXRJdGVyYXRvciYgcmVzdWx0ICkKICB7CiAgICB0eXBlZGVmIG5zQ2hhclNvdXJjZVRy
YWl0czxJbnB1dEl0ZXJhdG9yPiBzb3VyY2VfdHJhaXRzOwogICAgdHlwZWRlZiBuc0NoYXJTaW5r
VHJhaXRzPE91dHB1dEl0ZXJhdG9yPiBzaW5rX3RyYWl0czsKCiAgICB3aGlsZSAoIGZpcnN0ICE9
IGxhc3QgKQogICAgICB7CiAgICAgICAgUFJJbnQzMiBjb3VudF9jb3BpZWQgPSBQUkludDMyKHNp
bmtfdHJhaXRzOjp3cml0ZShyZXN1bHQsIHNvdXJjZV90cmFpdHM6OnJlYWQoZmlyc3QpLCBzb3Vy
Y2VfdHJhaXRzOjpyZWFkYWJsZV9kaXN0YW5jZShmaXJzdCwgbGFzdCkpKTsKICAgICAgICA7CiAg
ICAgICAgc291cmNlX3RyYWl0czo6YWR2YW5jZShmaXJzdCwgY291bnRfY29waWVkKTsKICAgICAg
fQoKICAgIHJldHVybiByZXN1bHQ7CiAgfQoKdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3Is
IGNsYXNzIE91dHB1dEl0ZXJhdG9yPgpPdXRwdXRJdGVyYXRvciYKY29weV9zdHJpbmdfYmFja3dh
cmQoIGNvbnN0IElucHV0SXRlcmF0b3ImIGZpcnN0LCBJbnB1dEl0ZXJhdG9yJiBsYXN0LCBPdXRw
dXRJdGVyYXRvciYgcmVzdWx0ICkKICB7CiAgICB3aGlsZSAoIGZpcnN0ICE9IGxhc3QgKQogICAg
ICB7CiAgICAgICAgbGFzdC5ub3JtYWxpemVfYmFja3dhcmQoKTsKICAgICAgICByZXN1bHQubm9y
bWFsaXplX2JhY2t3YXJkKCk7CiAgICAgICAgUFJVaW50MzIgbGVuZ3RoVG9Db3B5ID0gUFJVaW50
MzIoIE5TX01JTihsYXN0LnNpemVfYmFja3dhcmQoKSwgcmVzdWx0LnNpemVfYmFja3dhcmQoKSkg
KTsKICAgICAgICBpZiAoIGZpcnN0LmZyYWdtZW50KCkubVN0YXJ0ID09IGxhc3QuZnJhZ21lbnQo
KS5tU3RhcnQgKQogICAgICAgICAgbGVuZ3RoVG9Db3B5ID0gTlNfTUlOKGxlbmd0aFRvQ29weSwg
UFJVaW50MzIobGFzdC5nZXQoKSAtIGZpcnN0LmdldCgpKSk7CgogICAgICAgIDsKCgoKCgogICAg
ICAgIG5zQ2hhclRyYWl0czx0eXBlbmFtZSBPdXRwdXRJdGVyYXRvcjo6dmFsdWVfdHlwZT46Om1v
dmUocmVzdWx0LmdldCgpLWxlbmd0aFRvQ29weSwgbGFzdC5nZXQoKS1sZW5ndGhUb0NvcHksIGxl
bmd0aFRvQ29weSk7CgoKICAgICAgICBsYXN0LmFkdmFuY2UoIC1QUkludDMyKGxlbmd0aFRvQ29w
eSkgKTsKICAgICAgICByZXN1bHQuYWR2YW5jZSggLVBSSW50MzIobGVuZ3RoVG9Db3B5KSApOwog
ICAgICB9CgogICAgcmV0dXJuIHJlc3VsdDsKICB9CiMgNDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9zdHJpbmcvbnNTdHJpbmdJdGVyYXRvci5oIiAyCiMgNTYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9zdHJpbmcvbnNTdHJpbmdJdGVyYXRvci5oIgp0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQ+CmNsYXNz
IG5zUmVhZGluZ0l0ZXJhdG9yCgogIHsKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBwdHJkaWZm
X3QgZGlmZmVyZW5jZV90eXBlOwogICAgICB0eXBlZGVmIENoYXJUIHZhbHVlX3R5cGU7CiAgICAg
IHR5cGVkZWYgY29uc3QgQ2hhclQqIHBvaW50ZXI7CiAgICAgIHR5cGVkZWYgY29uc3QgQ2hhclQm
IHJlZmVyZW5jZTsKCgogICAgICB0eXBlZGVmIG5zUmVhZGFibGVGcmFnbWVudDxDaGFyVD4gY29u
c3RfZnJhZ21lbnRfdHlwZTsKICAgICAgdHlwZWRlZiBuc1dyaXRhYmxlRnJhZ21lbnQ8Q2hhclQ+
IGZyYWdtZW50X3R5cGU7CgogICAgcHJpdmF0ZToKICAgICAgZnJpZW5kIGNsYXNzIG5zQVN0cmlu
ZzsKICAgICAgZnJpZW5kIGNsYXNzIG5zQUNTdHJpbmc7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUg
bnNTdHJpbmdUcmFpdHM8Q2hhclQ+OjphYnN0cmFjdF9zdHJpbmdfdHlwZSBhYnN0cmFjdF9zdHJp
bmdfdHlwZTsKCiAgICAgIGNvbnN0X2ZyYWdtZW50X3R5cGUgbUZyYWdtZW50OwogICAgICBjb25z
dCBDaGFyVCogbVBvc2l0aW9uOwogICAgICBjb25zdCBhYnN0cmFjdF9zdHJpbmdfdHlwZSogbU93
bmluZ1N0cmluZzsKCiAgICBwdWJsaWM6CiAgICAgIG5zUmVhZGluZ0l0ZXJhdG9yKCkgeyB9CgoK
CiAgICAgIGlubGluZSB2b2lkIG5vcm1hbGl6ZV9mb3J3YXJkKCk7CiAgICAgIGlubGluZSB2b2lk
IG5vcm1hbGl6ZV9iYWNrd2FyZCgpOwoKICAgICAgcG9pbnRlcgogICAgICBnZXQoKSBjb25zdAog
ICAgICAgIHsKICAgICAgICAgIHJldHVybiBtUG9zaXRpb247CiAgICAgICAgfQoKICAgICAgQ2hh
clQKICAgICAgb3BlcmF0b3IqKCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICByZXR1cm4gKmdl
dCgpOwogICAgICAgIH0KIyAxMDkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHJp
bmdJdGVyYXRvci5oIgogICAgICBuc1JlYWRpbmdJdGVyYXRvcjxDaGFyVD4mCiAgICAgIG9wZXJh
dG9yKysoKQogICAgICAgIHsKICAgICAgICAgICsrbVBvc2l0aW9uOwogICAgICAgICAgbm9ybWFs
aXplX2ZvcndhcmQoKTsKICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAgICB9CgogICAgICBu
c1JlYWRpbmdJdGVyYXRvcjxDaGFyVD4KICAgICAgb3BlcmF0b3IrKyggaW50ICkKICAgICAgICB7
CiAgICAgICAgICBuc1JlYWRpbmdJdGVyYXRvcjxDaGFyVD4gcmVzdWx0KCp0aGlzKTsKICAgICAg
ICAgICsrbVBvc2l0aW9uOwogICAgICAgICAgbm9ybWFsaXplX2ZvcndhcmQoKTsKICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgfQoKICAgICAgbnNSZWFkaW5nSXRlcmF0b3I8Q2hhclQ+
JgogICAgICBvcGVyYXRvci0tKCkKICAgICAgICB7CiAgICAgICAgICBub3JtYWxpemVfYmFja3dh
cmQoKTsKICAgICAgICAgIC0tbVBvc2l0aW9uOwogICAgICAgICAgcmV0dXJuICp0aGlzOwogICAg
ICAgIH0KCiAgICAgIG5zUmVhZGluZ0l0ZXJhdG9yPENoYXJUPgogICAgICBvcGVyYXRvci0tKCBp
bnQgKQogICAgICAgIHsKICAgICAgICAgIG5zUmVhZGluZ0l0ZXJhdG9yPENoYXJUPiByZXN1bHQo
KnRoaXMpOwogICAgICAgICAgbm9ybWFsaXplX2JhY2t3YXJkKCk7CiAgICAgICAgICAtLW1Qb3Np
dGlvbjsKICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgfQoKICAgICAgY29uc3QgY29u
c3RfZnJhZ21lbnRfdHlwZSYKICAgICAgZnJhZ21lbnQoKSBjb25zdAogICAgICAgIHsKICAgICAg
ICAgIHJldHVybiBtRnJhZ21lbnQ7CiAgICAgICAgfQoKICAgICAgY29uc3QgYWJzdHJhY3Rfc3Ry
aW5nX3R5cGUmCiAgICAgIHN0cmluZygpIGNvbnN0CiAgICAgICAgewogICAgICAgICAgOwogICAg
ICAgICAgcmV0dXJuICptT3duaW5nU3RyaW5nOwogICAgICAgIH0KCiAgICAgIGRpZmZlcmVuY2Vf
dHlwZQogICAgICBzaXplX2ZvcndhcmQoKSBjb25zdAogICAgICAgIHsKICAgICAgICAgIHJldHVy
biBtRnJhZ21lbnQubUVuZCAtIG1Qb3NpdGlvbjsKICAgICAgICB9CgogICAgICBkaWZmZXJlbmNl
X3R5cGUKICAgICAgc2l6ZV9iYWNrd2FyZCgpIGNvbnN0CiAgICAgICAgewogICAgICAgICAgcmV0
dXJuIG1Qb3NpdGlvbiAtIG1GcmFnbWVudC5tU3RhcnQ7CiAgICAgICAgfQoKICAgICAgbnNSZWFk
aW5nSXRlcmF0b3I8Q2hhclQ+JgogICAgICBhZHZhbmNlKCBkaWZmZXJlbmNlX3R5cGUgbiApCiAg
ICAgICAgewogICAgICAgICAgd2hpbGUgKCBuID4gMCApCiAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICBkaWZmZXJlbmNlX3R5cGUgb25lX2hvcCA9IE5TX01JTihuLCBzaXplX2ZvcndhcmQoKSk7
CgogICAgICAgICAgICAgIDsKCgogICAgICAgICAgICAgIG1Qb3NpdGlvbiArPSBvbmVfaG9wOwog
ICAgICAgICAgICAgIG5vcm1hbGl6ZV9mb3J3YXJkKCk7CiAgICAgICAgICAgICAgbiAtPSBvbmVf
aG9wOwogICAgICAgICAgICB9CgogICAgICAgICAgd2hpbGUgKCBuIDwgMCApCiAgICAgICAgICAg
IHsKICAgICAgICAgICAgICBub3JtYWxpemVfYmFja3dhcmQoKTsKICAgICAgICAgICAgICBkaWZm
ZXJlbmNlX3R5cGUgb25lX2hvcCA9IE5TX01BWChuLCAtc2l6ZV9iYWNrd2FyZCgpKTsKCiAgICAg
ICAgICAgICAgOwoKCiAgICAgICAgICAgICAgbVBvc2l0aW9uICs9IG9uZV9ob3A7CiAgICAgICAg
ICAgICAgbiAtPSBvbmVfaG9wOwogICAgICAgICAgICB9CgogICAgICAgICAgcmV0dXJuICp0aGlz
OwogICAgICAgIH0KICB9OwojIDIwNiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0
cmluZ0l0ZXJhdG9yLmgiCnRlbXBsYXRlIDxjbGFzcyBDaGFyVD4KY2xhc3MgbnNXcml0aW5nSXRl
cmF0b3IKCiAgewogICAgcHVibGljOgogICAgICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNl
X3R5cGU7CiAgICAgIHR5cGVkZWYgQ2hhclQgdmFsdWVfdHlwZTsKICAgICAgdHlwZWRlZiBDaGFy
VCogcG9pbnRlcjsKICAgICAgdHlwZWRlZiBDaGFyVCYgcmVmZXJlbmNlOwoKCiAgICAgIHR5cGVk
ZWYgbnNSZWFkYWJsZUZyYWdtZW50PENoYXJUPiBjb25zdF9mcmFnbWVudF90eXBlOwogICAgICB0
eXBlZGVmIG5zV3JpdGFibGVGcmFnbWVudDxDaGFyVD4gZnJhZ21lbnRfdHlwZTsKCiAgICBwcml2
YXRlOgogICAgICBmcmllbmQgY2xhc3MgbnNBU3RyaW5nOwogICAgICBmcmllbmQgY2xhc3MgbnNB
Q1N0cmluZzsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuc1N0cmluZ1RyYWl0czxDaGFyVD46OmFi
c3RyYWN0X3N0cmluZ190eXBlIGFic3RyYWN0X3N0cmluZ190eXBlOwoKICAgICAgZnJhZ21lbnRf
dHlwZSBtRnJhZ21lbnQ7CiAgICAgIENoYXJUKiBtUG9zaXRpb247CiAgICAgIGFic3RyYWN0X3N0
cmluZ190eXBlKiBtT3duaW5nU3RyaW5nOwoKICAgIHB1YmxpYzoKICAgICAgbnNXcml0aW5nSXRl
cmF0b3IoKSB7IH0KCgoKICAgICAgaW5saW5lIHZvaWQgbm9ybWFsaXplX2ZvcndhcmQoKTsKICAg
ICAgaW5saW5lIHZvaWQgbm9ybWFsaXplX2JhY2t3YXJkKCk7CgogICAgICBwb2ludGVyCiAgICAg
IGdldCgpIGNvbnN0CiAgICAgICAgewogICAgICAgICAgcmV0dXJuIG1Qb3NpdGlvbjsKICAgICAg
ICB9CgogICAgICByZWZlcmVuY2UKICAgICAgb3BlcmF0b3IqKCkgY29uc3QKICAgICAgICB7CiAg
ICAgICAgICByZXR1cm4gKmdldCgpOwogICAgICAgIH0KIyAyNTkgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9zdHJpbmcvbnNTdHJpbmdJdGVyYXRvci5oIgogICAgICBuc1dyaXRpbmdJdGVyYXRvcjxD
aGFyVD4mCiAgICAgIG9wZXJhdG9yKysoKQogICAgICAgIHsKICAgICAgICAgICsrbVBvc2l0aW9u
OwogICAgICAgICAgbm9ybWFsaXplX2ZvcndhcmQoKTsKICAgICAgICAgIHJldHVybiAqdGhpczsK
ICAgICAgICB9CgogICAgICBuc1dyaXRpbmdJdGVyYXRvcjxDaGFyVD4KICAgICAgb3BlcmF0b3Ir
KyggaW50ICkKICAgICAgICB7CiAgICAgICAgICBuc1dyaXRpbmdJdGVyYXRvcjxDaGFyVD4gcmVz
dWx0KCp0aGlzKTsKICAgICAgICAgICsrbVBvc2l0aW9uOwogICAgICAgICAgbm9ybWFsaXplX2Zv
cndhcmQoKTsKICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgfQoKICAgICAgbnNXcml0
aW5nSXRlcmF0b3I8Q2hhclQ+JgogICAgICBvcGVyYXRvci0tKCkKICAgICAgICB7CiAgICAgICAg
ICBub3JtYWxpemVfYmFja3dhcmQoKTsKICAgICAgICAgIC0tbVBvc2l0aW9uOwogICAgICAgICAg
cmV0dXJuICp0aGlzOwogICAgICAgIH0KCiAgICAgIG5zV3JpdGluZ0l0ZXJhdG9yPENoYXJUPgog
ICAgICBvcGVyYXRvci0tKCBpbnQgKQogICAgICAgIHsKICAgICAgICAgIG5zV3JpdGluZ0l0ZXJh
dG9yPENoYXJUPiByZXN1bHQoKnRoaXMpOwogICAgICAgICAgbm9ybWFsaXplX2JhY2t3YXJkKCk7
CiAgICAgICAgICAtLW1Qb3NpdGlvbjsKICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAg
fQoKICAgICAgY29uc3QgZnJhZ21lbnRfdHlwZSYKICAgICAgZnJhZ21lbnQoKSBjb25zdAogICAg
ICAgIHsKICAgICAgICAgIHJldHVybiBtRnJhZ21lbnQ7CiAgICAgICAgfQoKICAgICAgZnJhZ21l
bnRfdHlwZSYKICAgICAgZnJhZ21lbnQoKQogICAgICAgIHsKICAgICAgICAgIHJldHVybiBtRnJh
Z21lbnQ7CiAgICAgICAgfQoKICAgICAgY29uc3QgYWJzdHJhY3Rfc3RyaW5nX3R5cGUmCiAgICAg
IHN0cmluZygpIGNvbnN0CiAgICAgICAgewogICAgICAgICAgOwogICAgICAgICAgcmV0dXJuICpt
T3duaW5nU3RyaW5nOwogICAgICAgIH0KCiAgICAgIGFic3RyYWN0X3N0cmluZ190eXBlJgogICAg
ICBzdHJpbmcoKQogICAgICAgIHsKICAgICAgICAgIDsKICAgICAgICAgIHJldHVybiAqbU93bmlu
Z1N0cmluZzsKICAgICAgICB9CgogICAgICBkaWZmZXJlbmNlX3R5cGUKICAgICAgc2l6ZV9mb3J3
YXJkKCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICByZXR1cm4gbUZyYWdtZW50Lm1FbmQgLSBt
UG9zaXRpb247CiAgICAgICAgfQoKICAgICAgZGlmZmVyZW5jZV90eXBlCiAgICAgIHNpemVfYmFj
a3dhcmQoKSBjb25zdAogICAgICAgIHsKICAgICAgICAgIHJldHVybiBtUG9zaXRpb24gLSBtRnJh
Z21lbnQubVN0YXJ0OwogICAgICAgIH0KCiAgICAgIG5zV3JpdGluZ0l0ZXJhdG9yPENoYXJUPiYK
ICAgICAgYWR2YW5jZSggZGlmZmVyZW5jZV90eXBlIG4gKQogICAgICAgIHsKICAgICAgICAgIHdo
aWxlICggbiA+IDAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBl
IG9uZV9ob3AgPSBOU19NSU4obiwgc2l6ZV9mb3J3YXJkKCkpOwoKICAgICAgICAgICAgICA7CgoK
ICAgICAgICAgICAgICBtUG9zaXRpb24gKz0gb25lX2hvcDsKICAgICAgICAgICAgICBub3JtYWxp
emVfZm9yd2FyZCgpOwogICAgICAgICAgICAgIG4gLT0gb25lX2hvcDsKICAgICAgICAgICAgfQoK
ICAgICAgICAgIHdoaWxlICggbiA8IDAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgbm9y
bWFsaXplX2JhY2t3YXJkKCk7CiAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlIG9uZV9ob3Ag
PSBOU19NQVgobiwgLXNpemVfYmFja3dhcmQoKSk7CgogICAgICAgICAgICAgIDsKCgogICAgICAg
ICAgICAgIG1Qb3NpdGlvbiArPSBvbmVfaG9wOwogICAgICAgICAgICAgIG4gLT0gb25lX2hvcDsK
ICAgICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAgICB9CgogICAgICBQ
UlVpbnQzMgogICAgICB3cml0ZSggY29uc3QgdmFsdWVfdHlwZSogcywgUFJVaW50MzIgbiApCiAg
ICAgICAgewogICAgICAgICAgOwoKICAgICAgICAgIG4gPSBOU19NSU4obiwgUFJVaW50MzIoc2l6
ZV9mb3J3YXJkKCkpKTsKICAgICAgICAgIG5zQ2hhclRyYWl0czx2YWx1ZV90eXBlPjo6bW92ZSht
UG9zaXRpb24sIHMsIG4pOwogICAgICAgICAgYWR2YW5jZSggZGlmZmVyZW5jZV90eXBlKG4pICk7
CiAgICAgICAgICByZXR1cm4gbjsKICAgICAgICB9CiAgfTsKCnRlbXBsYXRlIDxjbGFzcyBDaGFy
VD4KaW5saW5lCnZvaWQKbnNSZWFkaW5nSXRlcmF0b3I8Q2hhclQ+Ojpub3JtYWxpemVfZm9yd2Fy
ZCgpCiAgewogICAgd2hpbGUgKCBtUG9zaXRpb24gPT0gbUZyYWdtZW50Lm1FbmQKICAgICAgICAg
JiYgbU93bmluZ1N0cmluZy0+R2V0UmVhZGFibGVGcmFnbWVudChtRnJhZ21lbnQsIGtOZXh0RnJh
Z21lbnQpICkKICAgICAgICBtUG9zaXRpb24gPSBtRnJhZ21lbnQubVN0YXJ0OwogIH0KCnRlbXBs
YXRlIDxjbGFzcyBDaGFyVD4KaW5saW5lCnZvaWQKbnNSZWFkaW5nSXRlcmF0b3I8Q2hhclQ+Ojpu
b3JtYWxpemVfYmFja3dhcmQoKQogIHsKICAgIHdoaWxlICggbVBvc2l0aW9uID09IG1GcmFnbWVu
dC5tU3RhcnQKICAgICAgICAgJiYgbU93bmluZ1N0cmluZy0+R2V0UmVhZGFibGVGcmFnbWVudCht
RnJhZ21lbnQsIGtQcmV2RnJhZ21lbnQpICkKICAgICAgICBtUG9zaXRpb24gPSBtRnJhZ21lbnQu
bUVuZDsKICB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQ+CmlubGluZQpQUkJvb2wKb3BlcmF0b3I9
PSggY29uc3QgbnNSZWFkaW5nSXRlcmF0b3I8Q2hhclQ+JiBsaHMsIGNvbnN0IG5zUmVhZGluZ0l0
ZXJhdG9yPENoYXJUPiYgcmhzICkKICB7CiAgICByZXR1cm4gbGhzLmdldCgpID09IHJocy5nZXQo
KTsKICB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQ+CmlubGluZQpQUkJvb2wKb3BlcmF0b3IhPSgg
Y29uc3QgbnNSZWFkaW5nSXRlcmF0b3I8Q2hhclQ+JiBsaHMsIGNvbnN0IG5zUmVhZGluZ0l0ZXJh
dG9yPENoYXJUPiYgcmhzICkKICB7CiAgICByZXR1cm4gbGhzLmdldCgpICE9IHJocy5nZXQoKTsK
ICB9CgoKCgoKCnRlbXBsYXRlIDxjbGFzcyBDaGFyVD4KaW5saW5lCnZvaWQKbnNXcml0aW5nSXRl
cmF0b3I8Q2hhclQ+Ojpub3JtYWxpemVfZm9yd2FyZCgpCiAgewogICAgd2hpbGUgKCBtUG9zaXRp
b24gPT0gbUZyYWdtZW50Lm1FbmQKICAgICAgICAgJiYgbU93bmluZ1N0cmluZy0+R2V0V3JpdGFi
bGVGcmFnbWVudChtRnJhZ21lbnQsIGtOZXh0RnJhZ21lbnQpICkKICAgICAgbVBvc2l0aW9uID0g
bUZyYWdtZW50Lm1TdGFydDsKICB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgQ2hhclQ+CmlubGluZQp2b2lk
Cm5zV3JpdGluZ0l0ZXJhdG9yPENoYXJUPjo6bm9ybWFsaXplX2JhY2t3YXJkKCkKICB7CiAgICB3
aGlsZSAoIG1Qb3NpdGlvbiA9PSBtRnJhZ21lbnQubVN0YXJ0CiAgICAgICAgICYmIG1Pd25pbmdT
dHJpbmctPkdldFdyaXRhYmxlRnJhZ21lbnQobUZyYWdtZW50LCBrUHJldkZyYWdtZW50KSApCiAg
ICAgIG1Qb3NpdGlvbiA9IG1GcmFnbWVudC5tRW5kOwogIH0KCnRlbXBsYXRlIDxjbGFzcyBDaGFy
VD4KaW5saW5lClBSQm9vbApvcGVyYXRvcj09KCBjb25zdCBuc1dyaXRpbmdJdGVyYXRvcjxDaGFy
VD4mIGxocywgY29uc3QgbnNXcml0aW5nSXRlcmF0b3I8Q2hhclQ+JiByaHMgKQogIHsKICAgIHJl
dHVybiBsaHMuZ2V0KCkgPT0gcmhzLmdldCgpOwogIH0KCnRlbXBsYXRlIDxjbGFzcyBDaGFyVD4K
aW5saW5lClBSQm9vbApvcGVyYXRvciE9KCBjb25zdCBuc1dyaXRpbmdJdGVyYXRvcjxDaGFyVD4m
IGxocywgY29uc3QgbnNXcml0aW5nSXRlcmF0b3I8Q2hhclQ+JiByaHMgKQogIHsKICAgIHJldHVy
biBsaHMuZ2V0KCkgIT0gcmhzLmdldCgpOwogIH0KIyA0MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3N0cmluZy9uc0FTdHJpbmcuaCIgMgoKCgoKCgpjbGFzcyBuc1N0cmluZ0NvbXBhcmF0b3IKICB7
CiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgUFJVbmljaGFyIGNoYXJfdHlwZTsKCiAgICAgIHZp
cnR1YWwgaW50IG9wZXJhdG9yKCkoIGNvbnN0IGNoYXJfdHlwZSosIGNvbnN0IGNoYXJfdHlwZSos
IFBSVWludDMyIGFMZW5ndGggKSBjb25zdCA9IDA7CiAgICAgIHZpcnR1YWwgaW50IG9wZXJhdG9y
KCkoIGNoYXJfdHlwZSwgY2hhcl90eXBlICkgY29uc3QgPSAwOwogIH07CgpjbGFzcyBuc0RlZmF1
bHRTdHJpbmdDb21wYXJhdG9yCiAgICA6IHB1YmxpYyBuc1N0cmluZ0NvbXBhcmF0b3IKICB7CiAg
ICBwdWJsaWM6CiAgICAgIHZpcnR1YWwgaW50IG9wZXJhdG9yKCkoIGNvbnN0IGNoYXJfdHlwZSos
IGNvbnN0IGNoYXJfdHlwZSosIFBSVWludDMyIGFMZW5ndGggKSBjb25zdDsKICAgICAgdmlydHVh
bCBpbnQgb3BlcmF0b3IoKSAoIGNoYXJfdHlwZSwgY2hhcl90eXBlICkgY29uc3Q7CiAgfTsKCgoK
CgoKY2xhc3MgbnNDU3RyaW5nQ29tcGFyYXRvcgogIHsKICAgIHB1YmxpYzoKICAgICAgdHlwZWRl
ZiBjaGFyIGNoYXJfdHlwZTsKCiAgICAgIHZpcnR1YWwgaW50IG9wZXJhdG9yKCkoIGNvbnN0IGNo
YXJfdHlwZSosIGNvbnN0IGNoYXJfdHlwZSosIFBSVWludDMyIGFMZW5ndGggKSBjb25zdCA9IDA7
CiAgICAgIHZpcnR1YWwgaW50IG9wZXJhdG9yKCkgKCBjaGFyX3R5cGUsIGNoYXJfdHlwZSApIGNv
bnN0ID0gMDsKICB9OwoKY2xhc3MgbnNEZWZhdWx0Q1N0cmluZ0NvbXBhcmF0b3IKICAgIDogcHVi
bGljIG5zQ1N0cmluZ0NvbXBhcmF0b3IKICB7CiAgICBwdWJsaWM6CiAgICAgIHZpcnR1YWwgaW50
IG9wZXJhdG9yKCkoIGNvbnN0IGNoYXJfdHlwZSosIGNvbnN0IGNoYXJfdHlwZSosIFBSVWludDMy
IGFMZW5ndGggKSBjb25zdDsKICAgICAgdmlydHVhbCBpbnQgb3BlcmF0b3IoKSggY2hhcl90eXBl
LCBjaGFyX3R5cGUgKSBjb25zdDsKICB9OwojIDk5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3Ry
aW5nL25zQVN0cmluZy5oIgpjbGFzcyBuc0FTdHJpbmcKICB7CiAgICBwdWJsaWM6CiAgICAgIHR5
cGVkZWYgUFJVbmljaGFyIGNoYXJfdHlwZTsKICAgICAgdHlwZWRlZiBjaGFyIGluY29tcGF0aWJs
ZV9jaGFyX3R5cGU7CgogICAgICB0eXBlZGVmIG5zQnVmZmVySGFuZGxlPGNoYXJfdHlwZT4gYnVm
ZmVyX2hhbmRsZV90eXBlOwogICAgICB0eXBlZGVmIG5zQ29uc3RCdWZmZXJIYW5kbGU8Y2hhcl90
eXBlPiBjb25zdF9idWZmZXJfaGFuZGxlX3R5cGU7CiAgICAgIHR5cGVkZWYgbnNTaGFyZWRCdWZm
ZXJIYW5kbGU8Y2hhcl90eXBlPiBzaGFyZWRfYnVmZmVyX2hhbmRsZV90eXBlOwoKICAgICAgdHlw
ZWRlZiBuc1JlYWRhYmxlRnJhZ21lbnQ8Y2hhcl90eXBlPiBjb25zdF9mcmFnbWVudF90eXBlOwog
ICAgICB0eXBlZGVmIG5zV3JpdGFibGVGcmFnbWVudDxjaGFyX3R5cGU+IGZyYWdtZW50X3R5cGU7
CgogICAgICB0eXBlZGVmIG5zQVN0cmluZyBzZWxmX3R5cGU7CiAgICAgIHR5cGVkZWYgbnNBU3Ry
aW5nIGFic3RyYWN0X3N0cmluZ190eXBlOwoKICAgICAgdHlwZWRlZiBuc1JlYWRpbmdJdGVyYXRv
cjxjaGFyX3R5cGU+IGNvbnN0X2l0ZXJhdG9yOwogICAgICB0eXBlZGVmIG5zV3JpdGluZ0l0ZXJh
dG9yPGNoYXJfdHlwZT4gaXRlcmF0b3I7CgogICAgICB0eXBlZGVmIFBSVWludDMyIHNpemVfdHlw
ZTsKICAgICAgdHlwZWRlZiBQUlVpbnQzMiBpbmRleF90eXBlOwoKCiAgICBwdWJsaWM6CgoKICAg
ICAgdmlydHVhbCB+bnNBU3RyaW5nKCkgeyB9CgogICAgICBlbnVtIHsKICAgICAgICBrSGFzU3Rh
Y2tCdWZmZXIgPSAweDAwMDAwMDAxCgoKCgogICAgICB9OwogICAgICB2aXJ0dWFsIFBSVWludDMy
IEdldEltcGxlbWVudGF0aW9uRmxhZ3MoKSBjb25zdDsKCiAgICAgIHZpcnR1YWwgY29uc3QgYnVm
ZmVyX2hhbmRsZV90eXBlKiBHZXRGbGF0QnVmZmVySGFuZGxlKCkgY29uc3Q7CiAgICAgIHZpcnR1
YWwgY29uc3QgYnVmZmVyX2hhbmRsZV90eXBlKiBHZXRCdWZmZXJIYW5kbGUoKSBjb25zdDsKICAg
ICAgdmlydHVhbCBjb25zdCBzaGFyZWRfYnVmZmVyX2hhbmRsZV90eXBlKiBHZXRTaGFyZWRCdWZm
ZXJIYW5kbGUoKSBjb25zdDsKIyAxNDggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNB
U3RyaW5nLmgiCiAgICAgIGlubGluZSBjb25zdF9pdGVyYXRvciYgQmVnaW5SZWFkaW5nKCBjb25z
dF9pdGVyYXRvciYgKSBjb25zdDsKICAgICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yJiBFbmRSZWFk
aW5nKCBjb25zdF9pdGVyYXRvciYgKSBjb25zdDsKCiAgICAgIGlubGluZSBpdGVyYXRvciYgQmVn
aW5Xcml0aW5nKCBpdGVyYXRvciYgKTsKICAgICAgaW5saW5lIGl0ZXJhdG9yJiBFbmRXcml0aW5n
KCBpdGVyYXRvciYgKTsKCiAgICAgIHZpcnR1YWwgc2l6ZV90eXBlIExlbmd0aCgpIGNvbnN0ID0g
MDsKICAgICAgUFJCb29sIElzRW1wdHkoKSBjb25zdCB7IHJldHVybiBMZW5ndGgoKSA9PSAwOyB9
CgogICAgICBpbmxpbmUgUFJCb29sIEVxdWFscyggY29uc3QgYWJzdHJhY3Rfc3RyaW5nX3R5cGUm
LCBjb25zdCBuc1N0cmluZ0NvbXBhcmF0b3ImID0gbnNEZWZhdWx0U3RyaW5nQ29tcGFyYXRvcigp
ICkgY29uc3Q7CiAgICAgIFBSQm9vbCBFcXVhbHMoIGNvbnN0IGNoYXJfdHlwZSosIGNvbnN0IG5z
U3RyaW5nQ29tcGFyYXRvciYgPSBuc0RlZmF1bHRTdHJpbmdDb21wYXJhdG9yKCkgKSBjb25zdDsK
CiAgICAgIHZpcnR1YWwgUFJCb29sIElzVm9pZCgpIGNvbnN0OwogICAgICB2aXJ0dWFsIHZvaWQg
U2V0SXNWb2lkKCBQUkJvb2wgKTsKIyAxNzggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcv
bnNBU3RyaW5nLmgiCiAgICAgIGNoYXJfdHlwZSBGaXJzdCgpIGNvbnN0OwogICAgICBjaGFyX3R5
cGUgTGFzdCgpIGNvbnN0OwoKICAgICAgc2l6ZV90eXBlIENvdW50Q2hhciggY2hhcl90eXBlICkg
Y29uc3Q7CgoKCgogICAgICBQUkludDMyIEZpbmRDaGFyKCBjaGFyX3R5cGUsIGluZGV4X3R5cGUg
YU9mZnNldCA9IDAgKSBjb25zdDsKIyAxOTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcv
bnNBU3RyaW5nLmgiCiAgICAgIHZpcnR1YWwgdm9pZCBTZXRDYXBhY2l0eSggc2l6ZV90eXBlICkg
eyB9CiMgMjE5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zQVN0cmluZy5oIgogICAg
ICB2aXJ0dWFsIHZvaWQgU2V0TGVuZ3RoKCBzaXplX3R5cGUgKSB7IH0KCgogICAgICB2b2lkCiAg
ICAgIFRydW5jYXRlKCBzaXplX3R5cGUgYU5ld0xlbmd0aD0wICkKICAgICAgICB7CiAgICAgICAg
ICA7CgoKICAgICAgICAgIFNldExlbmd0aChhTmV3TGVuZ3RoKTsKICAgICAgICB9CiMgMjU4ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zQVN0cmluZy5oIgogICAgICB2b2lkIEFzc2ln
biggY29uc3Qgc2VsZl90eXBlJiBhUmVhZGFibGUgKSB7IGRvX0Fzc2lnbkZyb21SZWFkYWJsZShh
UmVhZGFibGUpOyB9CiAgICAgIHZvaWQgQXNzaWduKCBjb25zdCBjaGFyX3R5cGUqIGFQdHIgKSB7
IGFQdHIgPyBkb19Bc3NpZ25Gcm9tRWxlbWVudFB0cihhUHRyKSA6IFNldExlbmd0aCgwKTsgfQog
ICAgICB2b2lkIEFzc2lnbiggY29uc3QgY2hhcl90eXBlKiBhUHRyLCBzaXplX3R5cGUgYUxlbmd0
aCApIHsgZG9fQXNzaWduRnJvbUVsZW1lbnRQdHJMZW5ndGgoYVB0ciwgYUxlbmd0aCk7IH0KICAg
ICAgdm9pZCBBc3NpZ24oIGNoYXJfdHlwZSBhQ2hhciApIHsgZG9fQXNzaWduRnJvbUVsZW1lbnQo
YUNoYXIpOyB9CgoKICAgICAgc2VsZl90eXBlJiBvcGVyYXRvcj0oIGNvbnN0IHNlbGZfdHlwZSYg
YVJlYWRhYmxlICkgeyBBc3NpZ24oYVJlYWRhYmxlKTsgcmV0dXJuICp0aGlzOyB9CgogICAgICBz
ZWxmX3R5cGUmIG9wZXJhdG9yPSggY29uc3QgY2hhcl90eXBlKiBhUHRyICkgeyBBc3NpZ24oYVB0
cik7IHJldHVybiAqdGhpczsgfQogICAgICBzZWxmX3R5cGUmIG9wZXJhdG9yPSggY2hhcl90eXBl
IGFDaGFyICkgeyBBc3NpZ24oYUNoYXIpOyByZXR1cm4gKnRoaXM7IH0KCgoKCgoKCiAgICAgIHZv
aWQgQXBwZW5kKCBjb25zdCBzZWxmX3R5cGUmIGFSZWFkYWJsZSApIHsgZG9fQXBwZW5kRnJvbVJl
YWRhYmxlKGFSZWFkYWJsZSk7IH0KICAgICAgdm9pZCBBcHBlbmQoIGNvbnN0IGNoYXJfdHlwZSog
YVB0ciApIHsgaWYgKGFQdHIpIGRvX0FwcGVuZEZyb21FbGVtZW50UHRyKGFQdHIpOyB9CiAgICAg
IHZvaWQgQXBwZW5kKCBjb25zdCBjaGFyX3R5cGUqIGFQdHIsIHNpemVfdHlwZSBhTGVuZ3RoICkg
eyBkb19BcHBlbmRGcm9tRWxlbWVudFB0ckxlbmd0aChhUHRyLCBhTGVuZ3RoKTsgfQogICAgICB2
b2lkIEFwcGVuZCggY2hhcl90eXBlIGFDaGFyICkgeyBkb19BcHBlbmRGcm9tRWxlbWVudChhQ2hh
cik7IH0KCiAgICAgIHNlbGZfdHlwZSYgb3BlcmF0b3IrPSggY29uc3Qgc2VsZl90eXBlJiBhUmVh
ZGFibGUgKSB7IEFwcGVuZChhUmVhZGFibGUpOyByZXR1cm4gKnRoaXM7IH0KICAgICAgc2VsZl90
eXBlJiBvcGVyYXRvcis9KCBjb25zdCBjaGFyX3R5cGUqIGFQdHIgKSB7IEFwcGVuZChhUHRyKTsg
cmV0dXJuICp0aGlzOyB9CiAgICAgIHNlbGZfdHlwZSYgb3BlcmF0b3IrPSggY2hhcl90eXBlIGFD
aGFyICkgeyBBcHBlbmQoYUNoYXIpOyByZXR1cm4gKnRoaXM7IH0KIyAyOTUgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9zdHJpbmcvbnNBU3RyaW5nLmgiCiAgICAgIHZvaWQgSW5zZXJ0KCBjb25zdCBz
ZWxmX3R5cGUmIGFSZWFkYWJsZSwgaW5kZXhfdHlwZSBhdFBvc2l0aW9uICkgeyBkb19JbnNlcnRG
cm9tUmVhZGFibGUoYVJlYWRhYmxlLCBhdFBvc2l0aW9uKTsgfQogICAgICB2b2lkIEluc2VydCgg
Y29uc3QgY2hhcl90eXBlKiBhUHRyLCBpbmRleF90eXBlIGF0UG9zaXRpb24gKSB7IGlmIChhUHRy
KSBkb19JbnNlcnRGcm9tRWxlbWVudFB0cihhUHRyLCBhdFBvc2l0aW9uKTsgfQogICAgICB2b2lk
IEluc2VydCggY29uc3QgY2hhcl90eXBlKiBhUHRyLCBpbmRleF90eXBlIGF0UG9zaXRpb24sIHNp
emVfdHlwZSBhTGVuZ3RoICkgeyBkb19JbnNlcnRGcm9tRWxlbWVudFB0ckxlbmd0aChhUHRyLCBh
dFBvc2l0aW9uLCBhTGVuZ3RoKTsgfQogICAgICB2b2lkIEluc2VydCggY2hhcl90eXBlIGFDaGFy
LCBpbmRleF90eXBlIGF0UG9zaXRpb24gKSB7IGRvX0luc2VydEZyb21FbGVtZW50KGFDaGFyLCBh
dFBvc2l0aW9uKTsgfQoKCgogICAgICB2aXJ0dWFsIHZvaWQgQ3V0KCBpbmRleF90eXBlIGN1dFN0
YXJ0LCBzaXplX3R5cGUgY3V0TGVuZ3RoICk7CgoKCiAgICAgIHZvaWQgUmVwbGFjZSggaW5kZXhf
dHlwZSBjdXRTdGFydCwgc2l6ZV90eXBlIGN1dExlbmd0aCwgY29uc3Qgc2VsZl90eXBlJiBhUmVh
ZGFibGUgKSB7IGRvX1JlcGxhY2VGcm9tUmVhZGFibGUoY3V0U3RhcnQsIGN1dExlbmd0aCwgYVJl
YWRhYmxlKTsgfQoKICAgIHByaXZhdGU6CgogICAgICBpbmRleF90eXBlIENvdW50Q2hhciggaW5j
b21wYXRpYmxlX2NoYXJfdHlwZSApIGNvbnN0OwogICAgICB2b2lkIG9wZXJhdG9yPSAoIGluY29t
cGF0aWJsZV9jaGFyX3R5cGUgKTsKICAgICAgdm9pZCBBc3NpZ24gKCBpbmNvbXBhdGlibGVfY2hh
cl90eXBlICk7CiAgICAgIHZvaWQgb3BlcmF0b3IrPSAoIGluY29tcGF0aWJsZV9jaGFyX3R5cGUg
KTsKICAgICAgdm9pZCBBcHBlbmQgKCBpbmNvbXBhdGlibGVfY2hhcl90eXBlICk7CiAgICAgIHZv
aWQgSW5zZXJ0ICggaW5jb21wYXRpYmxlX2NoYXJfdHlwZSwgaW5kZXhfdHlwZSApOwoKCiAgICBw
cm90ZWN0ZWQ6CiAgICAgICAgICAgICAgdm9pZCBVbmNoZWNrZWRBc3NpZ25Gcm9tUmVhZGFibGUo
IGNvbnN0IHNlbGZfdHlwZSYgKTsKICAgICAgdmlydHVhbCB2b2lkIGRvX0Fzc2lnbkZyb21SZWFk
YWJsZSggY29uc3Qgc2VsZl90eXBlJiApOwogICAgICB2aXJ0dWFsIHZvaWQgZG9fQXNzaWduRnJv
bUVsZW1lbnRQdHIoIGNvbnN0IGNoYXJfdHlwZSogKTsKICAgICAgdmlydHVhbCB2b2lkIGRvX0Fz
c2lnbkZyb21FbGVtZW50UHRyTGVuZ3RoKCBjb25zdCBjaGFyX3R5cGUqLCBzaXplX3R5cGUgKTsK
ICAgICAgdmlydHVhbCB2b2lkIGRvX0Fzc2lnbkZyb21FbGVtZW50KCBjaGFyX3R5cGUgKTsKCiAg
ICAgICAgICAgICAgdm9pZCBVbmNoZWNrZWRBcHBlbmRGcm9tUmVhZGFibGUoIGNvbnN0IHNlbGZf
dHlwZSYgKTsKICAgICAgdmlydHVhbCB2b2lkIGRvX0FwcGVuZEZyb21SZWFkYWJsZSggY29uc3Qg
c2VsZl90eXBlJiApOwogICAgICB2aXJ0dWFsIHZvaWQgZG9fQXBwZW5kRnJvbUVsZW1lbnRQdHIo
IGNvbnN0IGNoYXJfdHlwZSogKTsKICAgICAgdmlydHVhbCB2b2lkIGRvX0FwcGVuZEZyb21FbGVt
ZW50UHRyTGVuZ3RoKCBjb25zdCBjaGFyX3R5cGUqLCBzaXplX3R5cGUgKTsKICAgICAgdmlydHVh
bCB2b2lkIGRvX0FwcGVuZEZyb21FbGVtZW50KCBjaGFyX3R5cGUgKTsKCiAgICAgICAgICAgICAg
dm9pZCBVbmNoZWNrZWRJbnNlcnRGcm9tUmVhZGFibGUoIGNvbnN0IHNlbGZfdHlwZSYsIGluZGV4
X3R5cGUgKTsKICAgICAgdmlydHVhbCB2b2lkIGRvX0luc2VydEZyb21SZWFkYWJsZSggY29uc3Qg
c2VsZl90eXBlJiwgaW5kZXhfdHlwZSApOwogICAgICB2aXJ0dWFsIHZvaWQgZG9fSW5zZXJ0RnJv
bUVsZW1lbnRQdHIoIGNvbnN0IGNoYXJfdHlwZSosIGluZGV4X3R5cGUgKTsKICAgICAgdmlydHVh
bCB2b2lkIGRvX0luc2VydEZyb21FbGVtZW50UHRyTGVuZ3RoKCBjb25zdCBjaGFyX3R5cGUqLCBp
bmRleF90eXBlLCBzaXplX3R5cGUgKTsKICAgICAgdmlydHVhbCB2b2lkIGRvX0luc2VydEZyb21F
bGVtZW50KCBjaGFyX3R5cGUsIGluZGV4X3R5cGUgKTsKCiAgICAgICAgICAgICAgdm9pZCBVbmNo
ZWNrZWRSZXBsYWNlRnJvbVJlYWRhYmxlKCBpbmRleF90eXBlLCBzaXplX3R5cGUsIGNvbnN0IHNl
bGZfdHlwZSYgKTsKICAgICAgdmlydHVhbCB2b2lkIGRvX1JlcGxhY2VGcm9tUmVhZGFibGUoIGlu
ZGV4X3R5cGUsIHNpemVfdHlwZSwgY29uc3Qgc2VsZl90eXBlJiApOwoKCgogICAgcHVibGljOgog
ICAgICB2aXJ0dWFsIGNvbnN0IGNoYXJfdHlwZSogR2V0UmVhZGFibGVGcmFnbWVudCggY29uc3Rf
ZnJhZ21lbnRfdHlwZSYsIG5zRnJhZ21lbnRSZXF1ZXN0LCBQUlVpbnQzMiA9IDAgKSBjb25zdCA9
IDA7CiAgICAgIHZpcnR1YWwgY2hhcl90eXBlKiBHZXRXcml0YWJsZUZyYWdtZW50KCBmcmFnbWVu
dF90eXBlJiwgbnNGcmFnbWVudFJlcXVlc3QsIFBSVWludDMyID0gMCApID0gMDsKCiAgICAgIFBS
Qm9vbCBJc0RlcGVuZGVudE9uKCBjb25zdCBzZWxmX3R5cGUmIGFTdHJpbmcgKSBjb25zdDsKICB9
OwoKCgoKCmNsYXNzIG5zQUNTdHJpbmcKICB7CiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgY2hh
ciBjaGFyX3R5cGU7CiAgICAgIHR5cGVkZWYgUFJVbmljaGFyIGluY29tcGF0aWJsZV9jaGFyX3R5
cGU7CgogICAgICB0eXBlZGVmIG5zQnVmZmVySGFuZGxlPGNoYXJfdHlwZT4gYnVmZmVyX2hhbmRs
ZV90eXBlOwogICAgICB0eXBlZGVmIG5zQ29uc3RCdWZmZXJIYW5kbGU8Y2hhcl90eXBlPiBjb25z
dF9idWZmZXJfaGFuZGxlX3R5cGU7CiAgICAgIHR5cGVkZWYgbnNTaGFyZWRCdWZmZXJIYW5kbGU8
Y2hhcl90eXBlPiBzaGFyZWRfYnVmZmVyX2hhbmRsZV90eXBlOwoKICAgICAgdHlwZWRlZiBuc1Jl
YWRhYmxlRnJhZ21lbnQ8Y2hhcl90eXBlPiBjb25zdF9mcmFnbWVudF90eXBlOwogICAgICB0eXBl
ZGVmIG5zV3JpdGFibGVGcmFnbWVudDxjaGFyX3R5cGU+IGZyYWdtZW50X3R5cGU7CgogICAgICB0
eXBlZGVmIG5zQUNTdHJpbmcgc2VsZl90eXBlOwogICAgICB0eXBlZGVmIG5zQUNTdHJpbmcgYWJz
dHJhY3Rfc3RyaW5nX3R5cGU7CgogICAgICB0eXBlZGVmIG5zUmVhZGluZ0l0ZXJhdG9yPGNoYXJf
dHlwZT4gY29uc3RfaXRlcmF0b3I7CiAgICAgIHR5cGVkZWYgbnNXcml0aW5nSXRlcmF0b3I8Y2hh
cl90eXBlPiBpdGVyYXRvcjsKCiAgICAgIHR5cGVkZWYgUFJVaW50MzIgc2l6ZV90eXBlOwogICAg
ICB0eXBlZGVmIFBSVWludDMyIGluZGV4X3R5cGU7CgoKCgoKCiAgICAgIHZpcnR1YWwgfm5zQUNT
dHJpbmcoKSB7IH0KCiAgICAgIGVudW0gewogICAgICAgIGtIYXNTdGFja0J1ZmZlciA9IDB4MDAw
MDAwMDEKCgoKCiAgICAgIH07CiAgICAgIHZpcnR1YWwgUFJVaW50MzIgR2V0SW1wbGVtZW50YXRp
b25GbGFncygpIGNvbnN0OwoKICAgICAgdmlydHVhbCBjb25zdCBidWZmZXJfaGFuZGxlX3R5cGUq
IEdldEZsYXRCdWZmZXJIYW5kbGUoKSBjb25zdDsKICAgICAgdmlydHVhbCBjb25zdCBidWZmZXJf
aGFuZGxlX3R5cGUqIEdldEJ1ZmZlckhhbmRsZSgpIGNvbnN0OwogICAgICB2aXJ0dWFsIGNvbnN0
IHNoYXJlZF9idWZmZXJfaGFuZGxlX3R5cGUqIEdldFNoYXJlZEJ1ZmZlckhhbmRsZSgpIGNvbnN0
OwojIDQwMyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc0FTdHJpbmcuaCIKICAgICAg
aW5saW5lIGNvbnN0X2l0ZXJhdG9yJiBCZWdpblJlYWRpbmcoIGNvbnN0X2l0ZXJhdG9yJiApIGNv
bnN0OwogICAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3ImIEVuZFJlYWRpbmcoIGNvbnN0X2l0ZXJh
dG9yJiApIGNvbnN0OwoKICAgICAgaW5saW5lIGl0ZXJhdG9yJiBCZWdpbldyaXRpbmcoIGl0ZXJh
dG9yJiApOwogICAgICBpbmxpbmUgaXRlcmF0b3ImIEVuZFdyaXRpbmcoIGl0ZXJhdG9yJiApOwoK
ICAgICAgdmlydHVhbCBzaXplX3R5cGUgTGVuZ3RoKCkgY29uc3QgPSAwOwogICAgICBQUkJvb2wg
SXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIExlbmd0aCgpID09IDA7IH0KCiAgICAgIGlubGluZSBQ
UkJvb2wgRXF1YWxzKCBjb25zdCBhYnN0cmFjdF9zdHJpbmdfdHlwZSYsIGNvbnN0IG5zQ1N0cmlu
Z0NvbXBhcmF0b3ImID0gbnNEZWZhdWx0Q1N0cmluZ0NvbXBhcmF0b3IoKSApIGNvbnN0OwogICAg
ICBQUkJvb2wgRXF1YWxzKCBjb25zdCBjaGFyX3R5cGUqLCBjb25zdCBuc0NTdHJpbmdDb21wYXJh
dG9yJiA9IG5zRGVmYXVsdENTdHJpbmdDb21wYXJhdG9yKCkgKSBjb25zdDsKCiAgICAgIHZpcnR1
YWwgUFJCb29sIElzVm9pZCgpIGNvbnN0OwogICAgICB2aXJ0dWFsIHZvaWQgU2V0SXNWb2lkKCBQ
UkJvb2wgKTsKIyA0MzMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNBU3RyaW5nLmgi
CiAgICAgIGNoYXJfdHlwZSBGaXJzdCgpIGNvbnN0OwogICAgICBjaGFyX3R5cGUgTGFzdCgpIGNv
bnN0OwoKICAgICAgc2l6ZV90eXBlIENvdW50Q2hhciggY2hhcl90eXBlICkgY29uc3Q7CgoKCiAg
ICAgIFBSSW50MzIgRmluZENoYXIoIGNoYXJfdHlwZSwgaW5kZXhfdHlwZSBhT2Zmc2V0ID0gMCAp
IGNvbnN0OwojIDQ1MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc0FTdHJpbmcuaCIK
ICAgICAgdmlydHVhbCB2b2lkIFNldENhcGFjaXR5KCBzaXplX3R5cGUgKSB7IH0KIyA0NzMgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNBU3RyaW5nLmgiCiAgICAgIHZpcnR1YWwgdm9p
ZCBTZXRMZW5ndGgoIHNpemVfdHlwZSApIHsgfQoKCiAgICAgIHZvaWQKICAgICAgVHJ1bmNhdGUo
IHNpemVfdHlwZSBhTmV3TGVuZ3RoPTAgKQogICAgICAgIHsKICAgICAgICAgIDsKCgogICAgICAg
ICAgU2V0TGVuZ3RoKGFOZXdMZW5ndGgpOwogICAgICAgIH0KIyA1MTIgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9zdHJpbmcvbnNBU3RyaW5nLmgiCiAgICAgIHZvaWQgQXNzaWduKCBjb25zdCBzZWxm
X3R5cGUmIGFSZWFkYWJsZSApIHsgZG9fQXNzaWduRnJvbVJlYWRhYmxlKGFSZWFkYWJsZSk7IH0K
ICAgICAgdm9pZCBBc3NpZ24oIGNvbnN0IGNoYXJfdHlwZSogYVB0ciApIHsgYVB0ciA/IGRvX0Fz
c2lnbkZyb21FbGVtZW50UHRyKGFQdHIpIDogU2V0TGVuZ3RoKDApOyB9CiAgICAgIHZvaWQgQXNz
aWduKCBjb25zdCBjaGFyX3R5cGUqIGFQdHIsIHNpemVfdHlwZSBhTGVuZ3RoICkgeyBkb19Bc3Np
Z25Gcm9tRWxlbWVudFB0ckxlbmd0aChhUHRyLCBhTGVuZ3RoKTsgfQogICAgICB2b2lkIEFzc2ln
biggY2hhcl90eXBlIGFDaGFyICkgeyBkb19Bc3NpZ25Gcm9tRWxlbWVudChhQ2hhcik7IH0KCgog
ICAgICBzZWxmX3R5cGUmIG9wZXJhdG9yPSggY29uc3Qgc2VsZl90eXBlJiBhUmVhZGFibGUgKSB7
IEFzc2lnbihhUmVhZGFibGUpOyByZXR1cm4gKnRoaXM7IH0KCiAgICAgIHNlbGZfdHlwZSYgb3Bl
cmF0b3I9KCBjb25zdCBjaGFyX3R5cGUqIGFQdHIgKSB7IEFzc2lnbihhUHRyKTsgcmV0dXJuICp0
aGlzOyB9CiAgICAgIHNlbGZfdHlwZSYgb3BlcmF0b3I9KCBjaGFyX3R5cGUgYUNoYXIgKSB7IEFz
c2lnbihhQ2hhcik7IHJldHVybiAqdGhpczsgfQoKCgoKCgoKICAgICAgdm9pZCBBcHBlbmQoIGNv
bnN0IHNlbGZfdHlwZSYgYVJlYWRhYmxlICkgeyBkb19BcHBlbmRGcm9tUmVhZGFibGUoYVJlYWRh
YmxlKTsgfQogICAgICB2b2lkIEFwcGVuZCggY29uc3QgY2hhcl90eXBlKiBhUHRyICkgeyBpZiAo
YVB0cikgZG9fQXBwZW5kRnJvbUVsZW1lbnRQdHIoYVB0cik7IH0KICAgICAgdm9pZCBBcHBlbmQo
IGNvbnN0IGNoYXJfdHlwZSogYVB0ciwgc2l6ZV90eXBlIGFMZW5ndGggKSB7IGRvX0FwcGVuZEZy
b21FbGVtZW50UHRyTGVuZ3RoKGFQdHIsIGFMZW5ndGgpOyB9CiAgICAgIHZvaWQgQXBwZW5kKCBj
aGFyX3R5cGUgYUNoYXIgKSB7IGRvX0FwcGVuZEZyb21FbGVtZW50KGFDaGFyKTsgfQoKICAgICAg
c2VsZl90eXBlJiBvcGVyYXRvcis9KCBjb25zdCBzZWxmX3R5cGUmIGFSZWFkYWJsZSApIHsgQXBw
ZW5kKGFSZWFkYWJsZSk7IHJldHVybiAqdGhpczsgfQogICAgICBzZWxmX3R5cGUmIG9wZXJhdG9y
Kz0oIGNvbnN0IGNoYXJfdHlwZSogYVB0ciApIHsgQXBwZW5kKGFQdHIpOyByZXR1cm4gKnRoaXM7
IH0KICAgICAgc2VsZl90eXBlJiBvcGVyYXRvcis9KCBjaGFyX3R5cGUgYUNoYXIgKSB7IEFwcGVu
ZChhQ2hhcik7IHJldHVybiAqdGhpczsgfQojIDU0OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0
cmluZy9uc0FTdHJpbmcuaCIKICAgICAgdm9pZCBJbnNlcnQoIGNvbnN0IHNlbGZfdHlwZSYgYVJl
YWRhYmxlLCBpbmRleF90eXBlIGF0UG9zaXRpb24gKSB7IGRvX0luc2VydEZyb21SZWFkYWJsZShh
UmVhZGFibGUsIGF0UG9zaXRpb24pOyB9CiAgICAgIHZvaWQgSW5zZXJ0KCBjb25zdCBjaGFyX3R5
cGUqIGFQdHIsIGluZGV4X3R5cGUgYXRQb3NpdGlvbiApIHsgaWYgKGFQdHIpIGRvX0luc2VydEZy
b21FbGVtZW50UHRyKGFQdHIsIGF0UG9zaXRpb24pOyB9CiAgICAgIHZvaWQgSW5zZXJ0KCBjb25z
dCBjaGFyX3R5cGUqIGFQdHIsIGluZGV4X3R5cGUgYXRQb3NpdGlvbiwgc2l6ZV90eXBlIGFMZW5n
dGggKSB7IGRvX0luc2VydEZyb21FbGVtZW50UHRyTGVuZ3RoKGFQdHIsIGF0UG9zaXRpb24sIGFM
ZW5ndGgpOyB9CiAgICAgIHZvaWQgSW5zZXJ0KCBjaGFyX3R5cGUgYUNoYXIsIGluZGV4X3R5cGUg
YXRQb3NpdGlvbiApIHsgZG9fSW5zZXJ0RnJvbUVsZW1lbnQoYUNoYXIsIGF0UG9zaXRpb24pOyB9
CgoKCiAgICAgIHZpcnR1YWwgdm9pZCBDdXQoIGluZGV4X3R5cGUgY3V0U3RhcnQsIHNpemVfdHlw
ZSBjdXRMZW5ndGggKTsKCgoKICAgICAgdm9pZCBSZXBsYWNlKCBpbmRleF90eXBlIGN1dFN0YXJ0
LCBzaXplX3R5cGUgY3V0TGVuZ3RoLCBjb25zdCBzZWxmX3R5cGUmIGFSZWFkYWJsZSApIHsgZG9f
UmVwbGFjZUZyb21SZWFkYWJsZShjdXRTdGFydCwgY3V0TGVuZ3RoLCBhUmVhZGFibGUpOyB9Cgog
ICAgcHJpdmF0ZToKCiAgICAgIGluZGV4X3R5cGUgQ291bnRDaGFyKCBpbmNvbXBhdGlibGVfY2hh
cl90eXBlICkgY29uc3Q7CiAgICAgIHZvaWQgb3BlcmF0b3I9ICggaW5jb21wYXRpYmxlX2NoYXJf
dHlwZSApOwogICAgICB2b2lkIEFzc2lnbiAoIGluY29tcGF0aWJsZV9jaGFyX3R5cGUgKTsKICAg
ICAgdm9pZCBvcGVyYXRvcis9ICggaW5jb21wYXRpYmxlX2NoYXJfdHlwZSApOwogICAgICB2b2lk
IEFwcGVuZCAoIGluY29tcGF0aWJsZV9jaGFyX3R5cGUgKTsKICAgICAgdm9pZCBJbnNlcnQgKCBp
bmNvbXBhdGlibGVfY2hhcl90eXBlLCBpbmRleF90eXBlICk7CgoKICAgIHByb3RlY3RlZDoKICAg
ICAgICAgICAgICB2b2lkIFVuY2hlY2tlZEFzc2lnbkZyb21SZWFkYWJsZSggY29uc3Qgc2VsZl90
eXBlJiApOwogICAgICB2aXJ0dWFsIHZvaWQgZG9fQXNzaWduRnJvbVJlYWRhYmxlKCBjb25zdCBz
ZWxmX3R5cGUmICk7CiAgICAgIHZpcnR1YWwgdm9pZCBkb19Bc3NpZ25Gcm9tRWxlbWVudFB0cigg
Y29uc3QgY2hhcl90eXBlKiApOwogICAgICB2aXJ0dWFsIHZvaWQgZG9fQXNzaWduRnJvbUVsZW1l
bnRQdHJMZW5ndGgoIGNvbnN0IGNoYXJfdHlwZSosIHNpemVfdHlwZSApOwogICAgICB2aXJ0dWFs
IHZvaWQgZG9fQXNzaWduRnJvbUVsZW1lbnQoIGNoYXJfdHlwZSApOwoKICAgICAgICAgICAgICB2
b2lkIFVuY2hlY2tlZEFwcGVuZEZyb21SZWFkYWJsZSggY29uc3Qgc2VsZl90eXBlJiApOwogICAg
ICB2aXJ0dWFsIHZvaWQgZG9fQXBwZW5kRnJvbVJlYWRhYmxlKCBjb25zdCBzZWxmX3R5cGUmICk7
CiAgICAgIHZpcnR1YWwgdm9pZCBkb19BcHBlbmRGcm9tRWxlbWVudFB0ciggY29uc3QgY2hhcl90
eXBlKiApOwogICAgICB2aXJ0dWFsIHZvaWQgZG9fQXBwZW5kRnJvbUVsZW1lbnRQdHJMZW5ndGgo
IGNvbnN0IGNoYXJfdHlwZSosIHNpemVfdHlwZSApOwogICAgICB2aXJ0dWFsIHZvaWQgZG9fQXBw
ZW5kRnJvbUVsZW1lbnQoIGNoYXJfdHlwZSApOwoKICAgICAgICAgICAgICB2b2lkIFVuY2hlY2tl
ZEluc2VydEZyb21SZWFkYWJsZSggY29uc3Qgc2VsZl90eXBlJiwgaW5kZXhfdHlwZSApOwogICAg
ICB2aXJ0dWFsIHZvaWQgZG9fSW5zZXJ0RnJvbVJlYWRhYmxlKCBjb25zdCBzZWxmX3R5cGUmLCBp
bmRleF90eXBlICk7CiAgICAgIHZpcnR1YWwgdm9pZCBkb19JbnNlcnRGcm9tRWxlbWVudFB0cigg
Y29uc3QgY2hhcl90eXBlKiwgaW5kZXhfdHlwZSApOwogICAgICB2aXJ0dWFsIHZvaWQgZG9fSW5z
ZXJ0RnJvbUVsZW1lbnRQdHJMZW5ndGgoIGNvbnN0IGNoYXJfdHlwZSosIGluZGV4X3R5cGUsIHNp
emVfdHlwZSApOwogICAgICB2aXJ0dWFsIHZvaWQgZG9fSW5zZXJ0RnJvbUVsZW1lbnQoIGNoYXJf
dHlwZSwgaW5kZXhfdHlwZSApOwoKICAgICAgICAgICAgICB2b2lkIFVuY2hlY2tlZFJlcGxhY2VG
cm9tUmVhZGFibGUoIGluZGV4X3R5cGUsIHNpemVfdHlwZSwgY29uc3Qgc2VsZl90eXBlJiApOwog
ICAgICB2aXJ0dWFsIHZvaWQgZG9fUmVwbGFjZUZyb21SZWFkYWJsZSggaW5kZXhfdHlwZSwgc2l6
ZV90eXBlLCBjb25zdCBzZWxmX3R5cGUmICk7CgoKCiAgICBwdWJsaWM6CiAgICAgIHZpcnR1YWwg
Y29uc3QgY2hhcl90eXBlKiBHZXRSZWFkYWJsZUZyYWdtZW50KCBjb25zdF9mcmFnbWVudF90eXBl
JiwgbnNGcmFnbWVudFJlcXVlc3QsIFBSVWludDMyID0gMCApIGNvbnN0ID0gMDsKICAgICAgdmly
dHVhbCBjaGFyX3R5cGUqIEdldFdyaXRhYmxlRnJhZ21lbnQoIGZyYWdtZW50X3R5cGUmLCBuc0Zy
YWdtZW50UmVxdWVzdCwgUFJVaW50MzIgPSAwICkgPSAwOwoKICAgICAgUFJCb29sIElzRGVwZW5k
ZW50T24oIGNvbnN0IGFic3RyYWN0X3N0cmluZ190eXBlJiBhU3RyaW5nICkgY29uc3Q7CiAgfTsK
CgoKCmlubGluZQpuc0FTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yJgpuc0FTdHJpbmc6OkJlZ2luUmVh
ZGluZyggY29uc3RfaXRlcmF0b3ImIGFSZXN1bHQgKSBjb25zdAogIHsKICAgIGFSZXN1bHQubU93
bmluZ1N0cmluZyA9IHRoaXM7CiAgICBHZXRSZWFkYWJsZUZyYWdtZW50KGFSZXN1bHQubUZyYWdt
ZW50LCBrRmlyc3RGcmFnbWVudCk7CiAgICBhUmVzdWx0Lm1Qb3NpdGlvbiA9IGFSZXN1bHQubUZy
YWdtZW50Lm1TdGFydDsKICAgIGFSZXN1bHQubm9ybWFsaXplX2ZvcndhcmQoKTsKICAgIHJldHVy
biBhUmVzdWx0OwogIH0KCmlubGluZQpuc0FTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yJgpuc0FTdHJp
bmc6OkVuZFJlYWRpbmcoIGNvbnN0X2l0ZXJhdG9yJiBhUmVzdWx0ICkgY29uc3QKICB7CiAgICBh
UmVzdWx0Lm1Pd25pbmdTdHJpbmcgPSB0aGlzOwogICAgR2V0UmVhZGFibGVGcmFnbWVudChhUmVz
dWx0Lm1GcmFnbWVudCwga0xhc3RGcmFnbWVudCk7CiAgICBhUmVzdWx0Lm1Qb3NpdGlvbiA9IGFS
ZXN1bHQubUZyYWdtZW50Lm1FbmQ7CgogICAgcmV0dXJuIGFSZXN1bHQ7CiAgfQoKaW5saW5lCm5z
QVN0cmluZzo6aXRlcmF0b3ImCm5zQVN0cmluZzo6QmVnaW5Xcml0aW5nKCBpdGVyYXRvciYgYVJl
c3VsdCApCiAgewogICAgYVJlc3VsdC5tT3duaW5nU3RyaW5nID0gdGhpczsKICAgIEdldFdyaXRh
YmxlRnJhZ21lbnQoYVJlc3VsdC5tRnJhZ21lbnQsIGtGaXJzdEZyYWdtZW50KTsKICAgIGFSZXN1
bHQubVBvc2l0aW9uID0gYVJlc3VsdC5tRnJhZ21lbnQubVN0YXJ0OwogICAgYVJlc3VsdC5ub3Jt
YWxpemVfZm9yd2FyZCgpOwogICAgcmV0dXJuIGFSZXN1bHQ7CiAgfQoKCmlubGluZQpuc0FTdHJp
bmc6Oml0ZXJhdG9yJgpuc0FTdHJpbmc6OkVuZFdyaXRpbmcoIGl0ZXJhdG9yJiBhUmVzdWx0ICkK
ICB7CiAgICBhUmVzdWx0Lm1Pd25pbmdTdHJpbmcgPSB0aGlzOwogICAgR2V0V3JpdGFibGVGcmFn
bWVudChhUmVzdWx0Lm1GcmFnbWVudCwga0xhc3RGcmFnbWVudCk7CiAgICBhUmVzdWx0Lm1Qb3Np
dGlvbiA9IGFSZXN1bHQubUZyYWdtZW50Lm1FbmQ7CgogICAgcmV0dXJuIGFSZXN1bHQ7CiAgfQoK
IGludCBDb21wYXJlKCBjb25zdCBuc0FTdHJpbmcmIGxocywgY29uc3QgbnNBU3RyaW5nJiByaHMs
IGNvbnN0IG5zU3RyaW5nQ29tcGFyYXRvciYgPSBuc0RlZmF1bHRTdHJpbmdDb21wYXJhdG9yKCkg
KTsKCmlubGluZQpQUkJvb2wKbnNBU3RyaW5nOjpFcXVhbHMoIGNvbnN0IGFic3RyYWN0X3N0cmlu
Z190eXBlJiByaHMsIGNvbnN0IG5zU3RyaW5nQ29tcGFyYXRvciYgYUNvbXBhcmF0b3IgKSBjb25z
dAogIHsKICAgIHJldHVybiBMZW5ndGgoKT09cmhzLkxlbmd0aCgpICYmIENvbXBhcmUoKnRoaXMs
IHJocywgYUNvbXBhcmF0b3IpPT0wOwogIH0KCmlubGluZQpQUkJvb2wKb3BlcmF0b3IhPSggY29u
c3QgbnNBU3RyaW5nJiBsaHMsIGNvbnN0IG5zQVN0cmluZyYgcmhzICkKICB7CiAgICByZXR1cm4g
IWxocy5FcXVhbHMocmhzKTsKICB9CgppbmxpbmUKUFJCb29sCm9wZXJhdG9yPCAoIGNvbnN0IG5z
QVN0cmluZyYgbGhzLCBjb25zdCBuc0FTdHJpbmcmIHJocyApCiAgewogICAgcmV0dXJuIENvbXBh
cmUobGhzLCByaHMpPCAwOwogIH0KCmlubGluZQpQUkJvb2wKb3BlcmF0b3I8PSggY29uc3QgbnNB
U3RyaW5nJiBsaHMsIGNvbnN0IG5zQVN0cmluZyYgcmhzICkKICB7CiAgICByZXR1cm4gQ29tcGFy
ZShsaHMsIHJocyk8PTA7CiAgfQoKaW5saW5lClBSQm9vbApvcGVyYXRvcj09KCBjb25zdCBuc0FT
dHJpbmcmIGxocywgY29uc3QgbnNBU3RyaW5nJiByaHMgKQogIHsKICAgIHJldHVybiBsaHMuRXF1
YWxzKHJocyk7CiAgfQoKaW5saW5lClBSQm9vbApvcGVyYXRvcj49KCBjb25zdCBuc0FTdHJpbmcm
IGxocywgY29uc3QgbnNBU3RyaW5nJiByaHMgKQogIHsKICAgIHJldHVybiBDb21wYXJlKGxocywg
cmhzKT49MDsKICB9CgppbmxpbmUKUFJCb29sCm9wZXJhdG9yPiAoIGNvbnN0IG5zQVN0cmluZyYg
bGhzLCBjb25zdCBuc0FTdHJpbmcmIHJocyApCiAgewogICAgcmV0dXJuIENvbXBhcmUobGhzLCBy
aHMpPiAwOwogIH0KCgoKCgoKaW5saW5lCm5zQUNTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yJgpuc0FD
U3RyaW5nOjpCZWdpblJlYWRpbmcoIGNvbnN0X2l0ZXJhdG9yJiBhUmVzdWx0ICkgY29uc3QKICB7
CiAgICBhUmVzdWx0Lm1Pd25pbmdTdHJpbmcgPSB0aGlzOwogICAgR2V0UmVhZGFibGVGcmFnbWVu
dChhUmVzdWx0Lm1GcmFnbWVudCwga0ZpcnN0RnJhZ21lbnQpOwogICAgYVJlc3VsdC5tUG9zaXRp
b24gPSBhUmVzdWx0Lm1GcmFnbWVudC5tU3RhcnQ7CiAgICBhUmVzdWx0Lm5vcm1hbGl6ZV9mb3J3
YXJkKCk7CiAgICByZXR1cm4gYVJlc3VsdDsKICB9CgppbmxpbmUKbnNBQ1N0cmluZzo6Y29uc3Rf
aXRlcmF0b3ImCm5zQUNTdHJpbmc6OkVuZFJlYWRpbmcoIGNvbnN0X2l0ZXJhdG9yJiBhUmVzdWx0
ICkgY29uc3QKICB7CiAgICBhUmVzdWx0Lm1Pd25pbmdTdHJpbmcgPSB0aGlzOwogICAgR2V0UmVh
ZGFibGVGcmFnbWVudChhUmVzdWx0Lm1GcmFnbWVudCwga0xhc3RGcmFnbWVudCk7CiAgICBhUmVz
dWx0Lm1Qb3NpdGlvbiA9IGFSZXN1bHQubUZyYWdtZW50Lm1FbmQ7CgogICAgcmV0dXJuIGFSZXN1
bHQ7CiAgfQoKaW5saW5lCm5zQUNTdHJpbmc6Oml0ZXJhdG9yJgpuc0FDU3RyaW5nOjpCZWdpbldy
aXRpbmcoIGl0ZXJhdG9yJiBhUmVzdWx0ICkKICB7CiAgICBhUmVzdWx0Lm1Pd25pbmdTdHJpbmcg
PSB0aGlzOwogICAgR2V0V3JpdGFibGVGcmFnbWVudChhUmVzdWx0Lm1GcmFnbWVudCwga0ZpcnN0
RnJhZ21lbnQpOwogICAgYVJlc3VsdC5tUG9zaXRpb24gPSBhUmVzdWx0Lm1GcmFnbWVudC5tU3Rh
cnQ7CiAgICBhUmVzdWx0Lm5vcm1hbGl6ZV9mb3J3YXJkKCk7CiAgICByZXR1cm4gYVJlc3VsdDsK
ICB9CgoKaW5saW5lCm5zQUNTdHJpbmc6Oml0ZXJhdG9yJgpuc0FDU3RyaW5nOjpFbmRXcml0aW5n
KCBpdGVyYXRvciYgYVJlc3VsdCApCiAgewogICAgYVJlc3VsdC5tT3duaW5nU3RyaW5nID0gdGhp
czsKICAgIEdldFdyaXRhYmxlRnJhZ21lbnQoYVJlc3VsdC5tRnJhZ21lbnQsIGtMYXN0RnJhZ21l
bnQpOwogICAgYVJlc3VsdC5tUG9zaXRpb24gPSBhUmVzdWx0Lm1GcmFnbWVudC5tRW5kOwoKICAg
IHJldHVybiBhUmVzdWx0OwogIH0KCgpjbGFzcyBuc0Nhc2VJbnNlbnNpdGl2ZUNTdHJpbmdDb21w
YXJhdG9yCiAgICA6IHB1YmxpYyBuc0NTdHJpbmdDb21wYXJhdG9yCiAgewogICAgcHVibGljOgog
ICAgICB2aXJ0dWFsIGludCBvcGVyYXRvcigpKCBjb25zdCBjaGFyX3R5cGUqLCBjb25zdCBjaGFy
X3R5cGUqLCBQUlVpbnQzMiBhTGVuZ3RoICkgY29uc3Q7CiAgICAgIHZpcnR1YWwgaW50IG9wZXJh
dG9yKCkoIGNoYXJfdHlwZSwgY2hhcl90eXBlICkgY29uc3Q7CiAgfTsKCiBpbnQgQ29tcGFyZSgg
Y29uc3QgbnNBQ1N0cmluZyYgbGhzLCBjb25zdCBuc0FDU3RyaW5nJiByaHMsIGNvbnN0IG5zQ1N0
cmluZ0NvbXBhcmF0b3ImID0gbnNEZWZhdWx0Q1N0cmluZ0NvbXBhcmF0b3IoKSApOwoKaW5saW5l
ClBSQm9vbApuc0FDU3RyaW5nOjpFcXVhbHMoIGNvbnN0IGFic3RyYWN0X3N0cmluZ190eXBlJiBy
aHMsIGNvbnN0IG5zQ1N0cmluZ0NvbXBhcmF0b3ImIGFDb21wYXJhdG9yICkgY29uc3QKICB7CiAg
ICByZXR1cm4gTGVuZ3RoKCk9PXJocy5MZW5ndGgoKSAmJiBDb21wYXJlKCp0aGlzLCByaHMsIGFD
b21wYXJhdG9yKT09MDsKICB9CgppbmxpbmUKUFJCb29sCm9wZXJhdG9yIT0oIGNvbnN0IG5zQUNT
dHJpbmcmIGxocywgY29uc3QgbnNBQ1N0cmluZyYgcmhzICkKICB7CiAgICByZXR1cm4gIWxocy5F
cXVhbHMocmhzKTsKICB9CgppbmxpbmUKUFJCb29sCm9wZXJhdG9yPCAoIGNvbnN0IG5zQUNTdHJp
bmcmIGxocywgY29uc3QgbnNBQ1N0cmluZyYgcmhzICkKICB7CiAgICByZXR1cm4gQ29tcGFyZShs
aHMsIHJocyk8IDA7CiAgfQoKaW5saW5lClBSQm9vbApvcGVyYXRvcjw9KCBjb25zdCBuc0FDU3Ry
aW5nJiBsaHMsIGNvbnN0IG5zQUNTdHJpbmcmIHJocyApCiAgewogICAgcmV0dXJuIENvbXBhcmUo
bGhzLCByaHMpPD0wOwogIH0KCmlubGluZQpQUkJvb2wKb3BlcmF0b3I9PSggY29uc3QgbnNBQ1N0
cmluZyYgbGhzLCBjb25zdCBuc0FDU3RyaW5nJiByaHMgKQogIHsKICAgIHJldHVybiBsaHMuRXF1
YWxzKHJocyk7CiAgfQoKaW5saW5lClBSQm9vbApvcGVyYXRvcj49KCBjb25zdCBuc0FDU3RyaW5n
JiBsaHMsIGNvbnN0IG5zQUNTdHJpbmcmIHJocyApCiAgewogICAgcmV0dXJuIENvbXBhcmUobGhz
LCByaHMpPj0wOwogIH0KCmlubGluZQpQUkJvb2wKb3BlcmF0b3I+ICggY29uc3QgbnNBQ1N0cmlu
ZyYgbGhzLCBjb25zdCBuc0FDU3RyaW5nJiByaHMgKQogIHsKICAgIHJldHVybiBDb21wYXJlKGxo
cywgcmhzKT4gMDsKICB9CgoKCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNE
ZXBlbmRlbnRDb25jYXRlbmF0aW9uLmgiIDEKIyA1MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0
cmluZy9uc0RlcGVuZGVudENvbmNhdGVuYXRpb24uaCIKY2xhc3MgbnNEZXBlbmRlbnRDb25jYXRl
bmF0aW9uCiAgICA6IHB1YmxpYyBuc0FTdHJpbmcKICB7CiAgICBwdWJsaWM6CiAgICAgIHR5cGVk
ZWYgbnNEZXBlbmRlbnRDb25jYXRlbmF0aW9uIHNlbGZfdHlwZTsKCiAgICBwcm90ZWN0ZWQ6CiAg
ICAgIHZpcnR1YWwgY29uc3QgY2hhcl90eXBlKiBHZXRSZWFkYWJsZUZyYWdtZW50KCBjb25zdF9m
cmFnbWVudF90eXBlJiwgbnNGcmFnbWVudFJlcXVlc3QsIFBSVWludDMyICkgY29uc3Q7CiAgICAg
IHZpcnR1YWwgY2hhcl90eXBlKiBHZXRXcml0YWJsZUZyYWdtZW50KCBmcmFnbWVudF90eXBlJiwg
bnNGcmFnbWVudFJlcXVlc3QsIFBSVWludDMyICkgeyByZXR1cm4gMDsgfQoKICAgICAgZW51bSB7
IGtGaXJzdFN0cmluZywga0xhc3RTdHJpbmcgfTsKCiAgICAgIGludAogICAgICBHZXRDdXJyZW50
U3RyaW5nRnJvbUZyYWdtZW50KCBjb25zdCBjb25zdF9mcmFnbWVudF90eXBlJiBhRnJhZ21lbnQg
KSBjb25zdAogICAgICAgIHsKICAgICAgICAgIHJldHVybiAoYUZyYWdtZW50LkdldElEQXNJbnQo
KSAmIG1GcmFnbWVudElkZW50aWZpZXJNYXNrKSA/IGtMYXN0U3RyaW5nIDoga0ZpcnN0U3RyaW5n
OwogICAgICAgIH0KCiAgICAgIGludAogICAgICBTZXRGaXJzdFN0cmluZ0luRnJhZ21lbnQoIGNv
bnN0X2ZyYWdtZW50X3R5cGUmIGFGcmFnbWVudCApIGNvbnN0CiAgICAgICAgewogICAgICAgICAg
YUZyYWdtZW50LlNldElEKGFGcmFnbWVudC5HZXRJREFzSW50KCkgJiB+bUZyYWdtZW50SWRlbnRp
Zmllck1hc2spOwogICAgICAgICAgcmV0dXJuIGtGaXJzdFN0cmluZzsKICAgICAgICB9CgogICAg
ICBpbnQKICAgICAgU2V0TGFzdFN0cmluZ0luRnJhZ21lbnQoIGNvbnN0X2ZyYWdtZW50X3R5cGUm
IGFGcmFnbWVudCApIGNvbnN0CiAgICAgICAgewogICAgICAgICAgYUZyYWdtZW50LlNldElEKGFG
cmFnbWVudC5HZXRJREFzSW50KCkgfCBtRnJhZ21lbnRJZGVudGlmaWVyTWFzayk7CiAgICAgICAg
ICByZXR1cm4ga0xhc3RTdHJpbmc7CiAgICAgICAgfQoKICAgIHB1YmxpYzoKICAgICAgbnNEZXBl
bmRlbnRDb25jYXRlbmF0aW9uKCBjb25zdCBhYnN0cmFjdF9zdHJpbmdfdHlwZSYgYUZpcnN0U3Ry
aW5nLCBjb25zdCBhYnN0cmFjdF9zdHJpbmdfdHlwZSYgYUxhc3RTdHJpbmcsIFBSVWludDMyIGFN
YXNrID0gMSApCiAgICAgICAgICA6IG1GcmFnbWVudElkZW50aWZpZXJNYXNrKGFNYXNrKQogICAg
ICAgIHsKICAgICAgICAgIG1TdHJpbmdzW2tGaXJzdFN0cmluZ10gPSAmYUZpcnN0U3RyaW5nOwog
ICAgICAgICAgbVN0cmluZ3Nba0xhc3RTdHJpbmddID0gJmFMYXN0U3RyaW5nOwogICAgICAgIH0K
CiAgICAgIG5zRGVwZW5kZW50Q29uY2F0ZW5hdGlvbiggY29uc3Qgc2VsZl90eXBlJiBhRmlyc3RT
dHJpbmcsIGNvbnN0IGFic3RyYWN0X3N0cmluZ190eXBlJiBhTGFzdFN0cmluZyApCiAgICAgICAg
ICA6IG1GcmFnbWVudElkZW50aWZpZXJNYXNrKGFGaXJzdFN0cmluZy5tRnJhZ21lbnRJZGVudGlm
aWVyTWFzazw8MSkKICAgICAgICB7CiAgICAgICAgICBtU3RyaW5nc1trRmlyc3RTdHJpbmddID0g
JmFGaXJzdFN0cmluZzsKICAgICAgICAgIG1TdHJpbmdzW2tMYXN0U3RyaW5nXSA9ICZhTGFzdFN0
cmluZzsKICAgICAgICB9CgoKCgogICAgcHJpdmF0ZToKCiAgICAgIHZvaWQgb3BlcmF0b3I9KCBj
b25zdCBzZWxmX3R5cGUmICk7CgogICAgcHVibGljOgoKICAgICAgdmlydHVhbCBQUlVpbnQzMiBM
ZW5ndGgoKSBjb25zdDsKCgoKCiAgICAgIFBSVWludDMyIEdldEZyYWdtZW50SWRlbnRpZmllck1h
c2soKSBjb25zdCB7IHJldHVybiBtRnJhZ21lbnRJZGVudGlmaWVyTWFzazsgfQoKICAgIHByaXZh
dGU6CiAgICAgIHZvaWQgb3BlcmF0b3IrKCBjb25zdCBzZWxmX3R5cGUmICk7CgoKCiAgICBwcml2
YXRlOgogICAgICBjb25zdCBhYnN0cmFjdF9zdHJpbmdfdHlwZSogbVN0cmluZ3NbMl07CiAgICAg
IFBSVWludDMyIG1GcmFnbWVudElkZW50aWZpZXJNYXNrOwogIH07CgpjbGFzcyBuc0RlcGVuZGVu
dENDb25jYXRlbmF0aW9uCiAgICA6IHB1YmxpYyBuc0FDU3RyaW5nCiAgewogICAgcHVibGljOgog
ICAgICB0eXBlZGVmIG5zRGVwZW5kZW50Q0NvbmNhdGVuYXRpb24gc2VsZl90eXBlOwoKICAgIHBy
b3RlY3RlZDoKICAgICAgdmlydHVhbCBjb25zdCBjaGFyX3R5cGUqIEdldFJlYWRhYmxlRnJhZ21l
bnQoIGNvbnN0X2ZyYWdtZW50X3R5cGUmLCBuc0ZyYWdtZW50UmVxdWVzdCwgUFJVaW50MzIgKSBj
b25zdDsKICAgICAgdmlydHVhbCBjaGFyX3R5cGUqIEdldFdyaXRhYmxlRnJhZ21lbnQoIGZyYWdt
ZW50X3R5cGUmLCBuc0ZyYWdtZW50UmVxdWVzdCwgUFJVaW50MzIgKSB7IHJldHVybiAwOyB9Cgog
ICAgICBlbnVtIHsga0ZpcnN0U3RyaW5nLCBrTGFzdFN0cmluZyB9OwoKICAgICAgaW50CiAgICAg
IEdldEN1cnJlbnRTdHJpbmdGcm9tRnJhZ21lbnQoIGNvbnN0IGNvbnN0X2ZyYWdtZW50X3R5cGUm
IGFGcmFnbWVudCApIGNvbnN0CiAgICAgICAgewogICAgICAgICAgcmV0dXJuIChhRnJhZ21lbnQu
R2V0SURBc0ludCgpICYgbUZyYWdtZW50SWRlbnRpZmllck1hc2spID8ga0xhc3RTdHJpbmcgOiBr
Rmlyc3RTdHJpbmc7CiAgICAgICAgfQoKICAgICAgaW50CiAgICAgIFNldEZpcnN0U3RyaW5nSW5G
cmFnbWVudCggY29uc3RfZnJhZ21lbnRfdHlwZSYgYUZyYWdtZW50ICkgY29uc3QKICAgICAgICB7
CiAgICAgICAgICBhRnJhZ21lbnQuU2V0SUQoYUZyYWdtZW50LkdldElEQXNJbnQoKSAmIH5tRnJh
Z21lbnRJZGVudGlmaWVyTWFzayk7CiAgICAgICAgICByZXR1cm4ga0ZpcnN0U3RyaW5nOwogICAg
ICAgIH0KCiAgICAgIGludAogICAgICBTZXRMYXN0U3RyaW5nSW5GcmFnbWVudCggY29uc3RfZnJh
Z21lbnRfdHlwZSYgYUZyYWdtZW50ICkgY29uc3QKICAgICAgICB7CiAgICAgICAgICBhRnJhZ21l
bnQuU2V0SUQoYUZyYWdtZW50LkdldElEQXNJbnQoKSB8IG1GcmFnbWVudElkZW50aWZpZXJNYXNr
KTsKICAgICAgICAgIHJldHVybiBrTGFzdFN0cmluZzsKICAgICAgICB9CgogICAgcHVibGljOgog
ICAgICBuc0RlcGVuZGVudENDb25jYXRlbmF0aW9uKCBjb25zdCBhYnN0cmFjdF9zdHJpbmdfdHlw
ZSYgYUZpcnN0U3RyaW5nLCBjb25zdCBhYnN0cmFjdF9zdHJpbmdfdHlwZSYgYUxhc3RTdHJpbmcs
IFBSVWludDMyIGFNYXNrID0gMSApCiAgICAgICAgICA6IG1GcmFnbWVudElkZW50aWZpZXJNYXNr
KGFNYXNrKQogICAgICAgIHsKICAgICAgICAgIG1TdHJpbmdzW2tGaXJzdFN0cmluZ10gPSAmYUZp
cnN0U3RyaW5nOwogICAgICAgICAgbVN0cmluZ3Nba0xhc3RTdHJpbmddID0gJmFMYXN0U3RyaW5n
OwogICAgICAgIH0KCiAgICAgIG5zRGVwZW5kZW50Q0NvbmNhdGVuYXRpb24oIGNvbnN0IHNlbGZf
dHlwZSYgYUZpcnN0U3RyaW5nLCBjb25zdCBhYnN0cmFjdF9zdHJpbmdfdHlwZSYgYUxhc3RTdHJp
bmcgKQogICAgICAgICAgOiBtRnJhZ21lbnRJZGVudGlmaWVyTWFzayhhRmlyc3RTdHJpbmcubUZy
YWdtZW50SWRlbnRpZmllck1hc2s8PDEpCiAgICAgICAgewogICAgICAgICAgbVN0cmluZ3Nba0Zp
cnN0U3RyaW5nXSA9ICZhRmlyc3RTdHJpbmc7CiAgICAgICAgICBtU3RyaW5nc1trTGFzdFN0cmlu
Z10gPSAmYUxhc3RTdHJpbmc7CiAgICAgICAgfQoKCgoKICAgIHByaXZhdGU6CgogICAgICB2b2lk
IG9wZXJhdG9yPSggY29uc3Qgc2VsZl90eXBlJiApOwoKICAgIHB1YmxpYzoKCiAgICAgIHZpcnR1
YWwgUFJVaW50MzIgTGVuZ3RoKCkgY29uc3Q7CgoKCgogICAgICBQUlVpbnQzMiBHZXRGcmFnbWVu
dElkZW50aWZpZXJNYXNrKCkgY29uc3QgeyByZXR1cm4gbUZyYWdtZW50SWRlbnRpZmllck1hc2s7
IH0KCiAgICBwcml2YXRlOgogICAgICB2b2lkIG9wZXJhdG9yKyggY29uc3Qgc2VsZl90eXBlJiAp
OwoKCgogICAgcHJpdmF0ZToKICAgICAgY29uc3QgYWJzdHJhY3Rfc3RyaW5nX3R5cGUqIG1TdHJp
bmdzWzJdOwogICAgICBQUlVpbnQzMiBtRnJhZ21lbnRJZGVudGlmaWVyTWFzazsKICB9OwojIDIx
NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc0RlcGVuZGVudENvbmNhdGVuYXRpb24u
aCIKaW5saW5lCmNvbnN0IG5zRGVwZW5kZW50Q29uY2F0ZW5hdGlvbgpvcGVyYXRvcisoIGNvbnN0
IG5zRGVwZW5kZW50Q29uY2F0ZW5hdGlvbiYgbGhzLCBjb25zdCBuc0FTdHJpbmcmIHJocyApCiAg
ewogICAgcmV0dXJuIG5zRGVwZW5kZW50Q29uY2F0ZW5hdGlvbihsaHMsIHJocywgbGhzLkdldEZy
YWdtZW50SWRlbnRpZmllck1hc2soKTw8MSk7CiAgfQoKaW5saW5lCmNvbnN0IG5zRGVwZW5kZW50
Q0NvbmNhdGVuYXRpb24Kb3BlcmF0b3IrKCBjb25zdCBuc0RlcGVuZGVudENDb25jYXRlbmF0aW9u
JiBsaHMsIGNvbnN0IG5zQUNTdHJpbmcmIHJocyApCiAgewogICAgcmV0dXJuIG5zRGVwZW5kZW50
Q0NvbmNhdGVuYXRpb24obGhzLCByaHMsIGxocy5HZXRGcmFnbWVudElkZW50aWZpZXJNYXNrKCk8
PDEpOwogIH0KCmlubGluZQpjb25zdCBuc0RlcGVuZGVudENvbmNhdGVuYXRpb24Kb3BlcmF0b3Ir
KCBjb25zdCBuc0FTdHJpbmcmIGxocywgY29uc3QgbnNBU3RyaW5nJiByaHMgKQogIHsKICAgIHJl
dHVybiBuc0RlcGVuZGVudENvbmNhdGVuYXRpb24obGhzLCByaHMpOwogIH0KCmlubGluZQpjb25z
dCBuc0RlcGVuZGVudENDb25jYXRlbmF0aW9uCm9wZXJhdG9yKyggY29uc3QgbnNBQ1N0cmluZyYg
bGhzLCBjb25zdCBuc0FDU3RyaW5nJiByaHMgKQogIHsKICAgIHJldHVybiBuc0RlcGVuZGVudEND
b25jYXRlbmF0aW9uKGxocywgcmhzKTsKICB9CiMgODE2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
c3RyaW5nL25zQVN0cmluZy5oIiAyCiMgNDQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9u
c1ZvaWRBcnJheS5oIiAyCgpjbGFzcyBuc0lTaXplT2ZIYW5kbGVyOwoKCnR5cGVkZWYgaW50ICgq
IG5zVm9pZEFycmF5Q29tcGFyYXRvckZ1bmMpCiAgICAgICAgICAgIChjb25zdCB2b2lkKiBhRWxl
bWVudDEsIGNvbnN0IHZvaWQqIGFFbGVtZW50Miwgdm9pZCogYURhdGEpOwoKCnR5cGVkZWYgUFJC
b29sICgqIG5zVm9pZEFycmF5RW51bUZ1bmMpKHZvaWQqIGFFbGVtZW50LCB2b2lkICphRGF0YSk7
CgoKY2xhc3MgbnNWb2lkQXJyYXkgewpwdWJsaWM6CiAgbnNWb2lkQXJyYXkoKTsKICBuc1ZvaWRB
cnJheShQUkludDMyIGFDb3VudCk7CiAgdmlydHVhbCB+bnNWb2lkQXJyYXkoKTsKCiAgbnNWb2lk
QXJyYXkmIG9wZXJhdG9yPShjb25zdCBuc1ZvaWRBcnJheSYgb3RoZXIpOwoKCgoKCiAgaW5saW5l
IFBSSW50MzIgQ291bnQoKSBjb25zdCB7CiAgICByZXR1cm4gbUltcGwgPyBtSW1wbC0+bUNvdW50
IDogMDsKICB9CgogIGlubGluZSBQUkludDMyIEdldEFycmF5U2l6ZSgpIGNvbnN0IHsKICAgIHJl
dHVybiBtSW1wbCA/IChQUkludDMyKG1JbXBsLT5tQml0cykgJiBrQXJyYXlTaXplTWFzaykgOiAw
OwogIH0KCiAgdm9pZCogRWxlbWVudEF0KFBSSW50MzIgYUluZGV4KSBjb25zdAogIHsKICAgIDsK
ICAgIDsKCgoKICAgIGlmIChhSW5kZXggPj0gQ291bnQoKSkKICAgIHsKICAgICAgcmV0dXJuIDA7
CiAgICB9CiAgICByZXR1cm4gbUltcGwgPyBtSW1wbC0+bUFycmF5W2FJbmRleF0gOiAwOwogIH0K
CgogIHZvaWQqIFNhZmVFbGVtZW50QXQoUFJJbnQzMiBhSW5kZXgpIGNvbnN0CiAgewogICAgaWYg
KGFJbmRleCA8IDAgfHwgYUluZGV4ID49IENvdW50KCkpCiAgICB7CiAgICAgIHJldHVybiAwOwog
ICAgfQogICAgcmV0dXJuIG1JbXBsID8gbUltcGwtPm1BcnJheVthSW5kZXhdIDogMDsKICB9Cgog
IHZvaWQqIG9wZXJhdG9yW10oUFJJbnQzMiBhSW5kZXgpIGNvbnN0IHsgcmV0dXJuIEVsZW1lbnRB
dChhSW5kZXgpOyB9CgogIFBSSW50MzIgSW5kZXhPZih2b2lkKiBhUG9zc2libGVFbGVtZW50KSBj
b25zdDsKCiAgUFJCb29sIEluc2VydEVsZW1lbnRBdCh2b2lkKiBhRWxlbWVudCwgUFJJbnQzMiBh
SW5kZXgpOwogIFBSQm9vbCBJbnNlcnRFbGVtZW50c0F0KGNvbnN0IG5zVm9pZEFycmF5ICZvdGhl
ciwgUFJJbnQzMiBhSW5kZXgpOwoKICBQUkJvb2wgUmVwbGFjZUVsZW1lbnRBdCh2b2lkKiBhRWxl
bWVudCwgUFJJbnQzMiBhSW5kZXgpOwoKCiAgUFJCb29sIE1vdmVFbGVtZW50KFBSSW50MzIgYUZy
b20sIFBSSW50MzIgYVRvKTsKCiAgUFJCb29sIEFwcGVuZEVsZW1lbnQodm9pZCogYUVsZW1lbnQp
IHsKICAgIHJldHVybiBJbnNlcnRFbGVtZW50QXQoYUVsZW1lbnQsIENvdW50KCkpOwogIH0KCiAg
UFJCb29sIEFwcGVuZEVsZW1lbnRzKG5zVm9pZEFycmF5JiBhRWxlbWVudHMpIHsKICAgIHJldHVy
biBJbnNlcnRFbGVtZW50c0F0KGFFbGVtZW50cywgQ291bnQoKSk7CiAgfQoKICBQUkJvb2wgUmVt
b3ZlRWxlbWVudCh2b2lkKiBhRWxlbWVudCk7CiAgUFJCb29sIFJlbW92ZUVsZW1lbnRzQXQoUFJJ
bnQzMiBhSW5kZXgsIFBSSW50MzIgYUNvdW50KTsKICBQUkJvb2wgUmVtb3ZlRWxlbWVudEF0KFBS
SW50MzIgYUluZGV4KSB7IHJldHVybiBSZW1vdmVFbGVtZW50c0F0KGFJbmRleCwxKTsgfQoKICB2
aXJ0dWFsIHZvaWQgQ2xlYXIoKTsKCiAgdmlydHVhbCBQUkJvb2wgU2l6ZVRvKFBSSW50MzIgYU1p
bik7CgoKICB2aXJ0dWFsIHZvaWQgQ29tcGFjdCgpOwoKICB2b2lkIFNvcnQobnNWb2lkQXJyYXlD
b21wYXJhdG9yRnVuYyBhRnVuYywgdm9pZCogYURhdGEpOwoKICBQUkJvb2wgRW51bWVyYXRlRm9y
d2FyZHMobnNWb2lkQXJyYXlFbnVtRnVuYyBhRnVuYywgdm9pZCogYURhdGEpOwogIFBSQm9vbCBF
bnVtZXJhdGVCYWNrd2FyZHMobnNWb2lkQXJyYXlFbnVtRnVuYyBhRnVuYywgdm9pZCogYURhdGEp
OwoKcHJvdGVjdGVkOgogIHZpcnR1YWwgUFJCb29sIEdyb3dBcnJheUJ5KFBSSW50MzIgYUdyb3dC
eSk7CgogIHN0cnVjdCBJbXBsIHsKCgoKCgoKICAgIFBSVWludDMyIG1CaXRzOwoKCgoKICAgIFBS
SW50MzIgbUNvdW50OwoKCgoKICAgIHZvaWQqIG1BcnJheVsxXTsKICB9OwoKICBJbXBsKiBtSW1w
bDsKCgoKCgoKICBlbnVtIHsKICAgIGtBcnJheU93bmVyTWFzayA9IDEgPDwgMzEsCiAgICBrQXJy
YXlTaXplTWFzayA9IH5rQXJyYXlPd25lck1hc2sKICB9OwoKCgogIHZvaWQgU2V0QXJyYXkoSW1w
bCAqbmV3SW1wbCwgUFJJbnQzMiBhU2l6ZSwgUFJJbnQzMiBhQ291bnQsIFBSQm9vbCBvd25lcik7
CiAgaW5saW5lIFBSQm9vbCBJc0FycmF5T3duZXIoKSBjb25zdCB7CiAgICByZXR1cm4gbUltcGwg
PyAoUFJCb29sKG1JbXBsLT5tQml0cykgJiBrQXJyYXlPd25lck1hc2spIDogMDsKICB9Cgpwcml2
YXRlOgoKICBuc1ZvaWRBcnJheShjb25zdCBuc1ZvaWRBcnJheSYgb3RoZXIpOwp9OwoKCgpjbGFz
cyBuc0F1dG9Wb2lkQXJyYXkgOiBwdWJsaWMgbnNWb2lkQXJyYXkgewpwdWJsaWM6CiAgbnNBdXRv
Vm9pZEFycmF5KCk7CiAgdm9pZCBDbGVhcigpOwoKICB2aXJ0dWFsIFBSQm9vbCBTaXplVG8oUFJJ
bnQzMiBhTWluKTsKICB2aXJ0dWFsIHZvaWQgQ29tcGFjdCgpOwoKcHJvdGVjdGVkOgoKICBlbnVt
IHsga0F1dG9CdWZTaXplID0gOCB9OwogIGNoYXIgbUF1dG9CdWZbc2l6ZW9mKEltcGwpICsgKGtB
dXRvQnVmU2l6ZSAtIDEpICogc2l6ZW9mKHZvaWQqKV07Cn07CgoKY2xhc3MgbnNTdHJpbmc7Cgp0
eXBlZGVmIGludCAoKiBuc1N0cmluZ0FycmF5Q29tcGFyYXRvckZ1bmMpCiAgICAgICAgICAgIChj
b25zdCBuc1N0cmluZyogYUVsZW1lbnQxLCBjb25zdCBuc1N0cmluZyogYUVsZW1lbnQyLCB2b2lk
KiBhRGF0YSk7Cgp0eXBlZGVmIFBSQm9vbCAoKm5zU3RyaW5nQXJyYXlFbnVtRnVuYykobnNTdHJp
bmcmIGFFbGVtZW50LCB2b2lkICphRGF0YSk7CgpjbGFzcyBuc1N0cmluZ0FycmF5OiBwcm90ZWN0
ZWQgbnNWb2lkQXJyYXkKewpwdWJsaWM6CiAgbnNTdHJpbmdBcnJheSh2b2lkKTsKICBuc1N0cmlu
Z0FycmF5KFBSSW50MzIgYUNvdW50KTsKICB2aXJ0dWFsIH5uc1N0cmluZ0FycmF5KHZvaWQpOwoK
ICBuc1N0cmluZ0FycmF5JiBvcGVyYXRvcj0oY29uc3QgbnNTdHJpbmdBcnJheSYgb3RoZXIpOwoK
CgoKCiAgUFJJbnQzMiBDb3VudCh2b2lkKSBjb25zdCB7CiAgICByZXR1cm4gbnNWb2lkQXJyYXk6
OkNvdW50KCk7CiAgfQoKICB2b2lkIFN0cmluZ0F0KFBSSW50MzIgYUluZGV4LCBuc0FTdHJpbmcm
IGFTdHJpbmcpIGNvbnN0OwogIG5zU3RyaW5nKiBTdHJpbmdBdChQUkludDMyIGFJbmRleCkgY29u
c3Q7CiAgbnNTdHJpbmcqIG9wZXJhdG9yW10oUFJJbnQzMiBhSW5kZXgpIGNvbnN0IHsgcmV0dXJu
IFN0cmluZ0F0KGFJbmRleCk7IH0KCiAgUFJJbnQzMiBJbmRleE9mKGNvbnN0IG5zQVN0cmluZyYg
YVBvc3NpYmxlU3RyaW5nKSBjb25zdDsKCiAgUFJCb29sIEluc2VydFN0cmluZ0F0KGNvbnN0IG5z
QVN0cmluZyYgYVN0cmluZywgUFJJbnQzMiBhSW5kZXgpOwoKICBQUkJvb2wgUmVwbGFjZVN0cmlu
Z0F0KGNvbnN0IG5zQVN0cmluZyYgYVN0cmluZywgUFJJbnQzMiBhSW5kZXgpOwoKICBQUkJvb2wg
QXBwZW5kU3RyaW5nKGNvbnN0IG5zQVN0cmluZyYgYVN0cmluZykgewogICAgcmV0dXJuIEluc2Vy
dFN0cmluZ0F0KGFTdHJpbmcsIENvdW50KCkpOwogIH0KCiAgUFJCb29sIFJlbW92ZVN0cmluZyhj
b25zdCBuc0FTdHJpbmcmIGFTdHJpbmcpOwogIFBSQm9vbCBSZW1vdmVTdHJpbmdBdChQUkludDMy
IGFJbmRleCk7CiAgdm9pZCBDbGVhcih2b2lkKTsKCiAgdm9pZCBDb21wYWN0KHZvaWQpIHsKICAg
IG5zVm9pZEFycmF5OjpDb21wYWN0KCk7CiAgfQoKICB2b2lkIFNvcnQodm9pZCk7CiAgdm9pZCBT
b3J0KG5zU3RyaW5nQXJyYXlDb21wYXJhdG9yRnVuYyBhRnVuYywgdm9pZCogYURhdGEpOwoKICBQ
UkJvb2wgRW51bWVyYXRlRm9yd2FyZHMobnNTdHJpbmdBcnJheUVudW1GdW5jIGFGdW5jLCB2b2lk
KiBhRGF0YSk7CiAgUFJCb29sIEVudW1lcmF0ZUJhY2t3YXJkcyhuc1N0cmluZ0FycmF5RW51bUZ1
bmMgYUZ1bmMsIHZvaWQqIGFEYXRhKTsKCnByaXZhdGU6CgogIG5zU3RyaW5nQXJyYXkoY29uc3Qg
bnNTdHJpbmdBcnJheSYgb3RoZXIpOwp9OwoKCmNsYXNzIG5zQ1N0cmluZzsKCnR5cGVkZWYgaW50
ICgqIG5zQ1N0cmluZ0FycmF5Q29tcGFyYXRvckZ1bmMpCiAgICAgICAgICAgIChjb25zdCBuc0NT
dHJpbmcqIGFFbGVtZW50MSwgY29uc3QgbnNDU3RyaW5nKiBhRWxlbWVudDIsIHZvaWQqIGFEYXRh
KTsKCnR5cGVkZWYgUFJCb29sICgqbnNDU3RyaW5nQXJyYXlFbnVtRnVuYykobnNDU3RyaW5nJiBh
RWxlbWVudCwgdm9pZCAqYURhdGEpOwoKY2xhc3MgbnNDU3RyaW5nQXJyYXk6IHByb3RlY3RlZCBu
c1ZvaWRBcnJheQp7CnB1YmxpYzoKICBuc0NTdHJpbmdBcnJheSh2b2lkKTsKICBuc0NTdHJpbmdB
cnJheShQUkludDMyIGFDb3VudCk7CiAgdmlydHVhbCB+bnNDU3RyaW5nQXJyYXkodm9pZCk7Cgog
IG5zQ1N0cmluZ0FycmF5JiBvcGVyYXRvcj0oY29uc3QgbnNDU3RyaW5nQXJyYXkmIG90aGVyKTsK
CgoKCgoKICB2b2lkIFBhcnNlU3RyaW5nKGNvbnN0IGNoYXIqIHN0cmluZywgY29uc3QgY2hhciog
ZGVsaW1pdGVyKTsKCgoKCgogIFBSSW50MzIgQ291bnQodm9pZCkgY29uc3QgewogICAgcmV0dXJu
IG5zVm9pZEFycmF5OjpDb3VudCgpOwogIH0KCiAgdm9pZCBDU3RyaW5nQXQoUFJJbnQzMiBhSW5k
ZXgsIG5zQ1N0cmluZyYgYUNTdHJpbmcpIGNvbnN0OwogIG5zQ1N0cmluZyogQ1N0cmluZ0F0KFBS
SW50MzIgYUluZGV4KSBjb25zdDsKICBuc0NTdHJpbmcqIG9wZXJhdG9yW10oUFJJbnQzMiBhSW5k
ZXgpIGNvbnN0IHsgcmV0dXJuIENTdHJpbmdBdChhSW5kZXgpOyB9CgogIFBSSW50MzIgSW5kZXhP
Zihjb25zdCBuc0NTdHJpbmcmIGFQb3NzaWJsZVN0cmluZykgY29uc3Q7CiAgUFJJbnQzMiBJbmRl
eE9mSWdub3JlQ2FzZShjb25zdCBuc0NTdHJpbmcmIGFQb3NzaWJsZVN0cmluZykgY29uc3Q7Cgog
IFBSQm9vbCBJbnNlcnRDU3RyaW5nQXQoY29uc3QgbnNDU3RyaW5nJiBhQ1N0cmluZywgUFJJbnQz
MiBhSW5kZXgpOwoKICBQUkJvb2wgUmVwbGFjZUNTdHJpbmdBdChjb25zdCBuc0NTdHJpbmcmIGFD
U3RyaW5nLCBQUkludDMyIGFJbmRleCk7CgogIFBSQm9vbCBBcHBlbmRDU3RyaW5nKGNvbnN0IG5z
Q1N0cmluZyYgYUNTdHJpbmcpIHsKICAgIHJldHVybiBJbnNlcnRDU3RyaW5nQXQoYUNTdHJpbmcs
IENvdW50KCkpOwogIH0KCiAgUFJCb29sIFJlbW92ZUNTdHJpbmcoY29uc3QgbnNDU3RyaW5nJiBh
Q1N0cmluZyk7CiAgUFJCb29sIFJlbW92ZUNTdHJpbmdJZ25vcmVDYXNlKGNvbnN0IG5zQ1N0cmlu
ZyYgYUNTdHJpbmcpOwogIFBSQm9vbCBSZW1vdmVDU3RyaW5nQXQoUFJJbnQzMiBhSW5kZXgpOwog
IHZvaWQgQ2xlYXIodm9pZCk7CgogIHZvaWQgQ29tcGFjdCh2b2lkKSB7CiAgICBuc1ZvaWRBcnJh
eTo6Q29tcGFjdCgpOwogIH0KCiAgdm9pZCBTb3J0KHZvaWQpOwogIHZvaWQgU29ydElnbm9yZUNh
c2Uodm9pZCk7CiAgdm9pZCBTb3J0KG5zQ1N0cmluZ0FycmF5Q29tcGFyYXRvckZ1bmMgYUZ1bmMs
IHZvaWQqIGFEYXRhKTsKCiAgUFJCb29sIEVudW1lcmF0ZUZvcndhcmRzKG5zQ1N0cmluZ0FycmF5
RW51bUZ1bmMgYUZ1bmMsIHZvaWQqIGFEYXRhKTsKICBQUkJvb2wgRW51bWVyYXRlQmFja3dhcmRz
KG5zQ1N0cmluZ0FycmF5RW51bUZ1bmMgYUZ1bmMsIHZvaWQqIGFEYXRhKTsKCnByaXZhdGU6Cgog
IG5zQ1N0cmluZ0FycmF5KGNvbnN0IG5zQ1N0cmluZ0FycmF5JiBvdGhlcik7Cn07CiMgMzQ5ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNWb2lkQXJyYXkuaCIKY2xhc3MgbnNTbWFsbFZv
aWRBcnJheQp7CnB1YmxpYzoKICBuc1NtYWxsVm9pZEFycmF5KCk7CiAgfm5zU21hbGxWb2lkQXJy
YXkoKTsKCiAgbnNTbWFsbFZvaWRBcnJheSYgb3BlcmF0b3I9KG5zU21hbGxWb2lkQXJyYXkmIG90
aGVyKTsKICB2b2lkKiBvcGVyYXRvcltdKFBSSW50MzIgYUluZGV4KSBjb25zdCB7IHJldHVybiBF
bGVtZW50QXQoYUluZGV4KTsgfQoKCgoKICBQUkludDMyIEdldEFycmF5U2l6ZSgpIGNvbnN0OwoK
ICBQUkludDMyIENvdW50KCkgY29uc3Q7CiAgdm9pZCogRWxlbWVudEF0KFBSSW50MzIgYUluZGV4
KSBjb25zdDsKICB2b2lkKiBTYWZlRWxlbWVudEF0KFBSSW50MzIgYUluZGV4KSBjb25zdCB7Cgog
ICAgaWYgKGFJbmRleCA8IDAgfHwgYUluZGV4ID49IENvdW50KCkpCiAgICAgIHJldHVybiAwOwog
ICAgcmV0dXJuIEVsZW1lbnRBdChhSW5kZXgpOwogIH0KICBQUkludDMyIEluZGV4T2Yodm9pZCog
YVBvc3NpYmxlRWxlbWVudCkgY29uc3Q7CiAgUFJCb29sIEluc2VydEVsZW1lbnRBdCh2b2lkKiBh
RWxlbWVudCwgUFJJbnQzMiBhSW5kZXgpOwogIFBSQm9vbCBJbnNlcnRFbGVtZW50c0F0KGNvbnN0
IG5zVm9pZEFycmF5ICZvdGhlciwgUFJJbnQzMiBhSW5kZXgpOwogIFBSQm9vbCBSZXBsYWNlRWxl
bWVudEF0KHZvaWQqIGFFbGVtZW50LCBQUkludDMyIGFJbmRleCk7CiAgUFJCb29sIE1vdmVFbGVt
ZW50KFBSSW50MzIgYUZyb20sIFBSSW50MzIgYVRvKTsKICBQUkJvb2wgQXBwZW5kRWxlbWVudCh2
b2lkKiBhRWxlbWVudCk7CiAgUFJCb29sIEFwcGVuZEVsZW1lbnRzKG5zVm9pZEFycmF5JiBhRWxl
bWVudHMpIHsKICAgIHJldHVybiBJbnNlcnRFbGVtZW50c0F0KGFFbGVtZW50cywgQ291bnQoKSk7
CiAgfQogIFBSQm9vbCBSZW1vdmVFbGVtZW50KHZvaWQqIGFFbGVtZW50KTsKICBQUkJvb2wgUmVt
b3ZlRWxlbWVudHNBdChQUkludDMyIGFJbmRleCwgUFJJbnQzMiBhQ291bnQpOwogIFBSQm9vbCBS
ZW1vdmVFbGVtZW50QXQoUFJJbnQzMiBhSW5kZXgpOwoKICB2b2lkIENsZWFyKCk7CiAgUFJCb29s
IFNpemVUbyhQUkludDMyIGFNaW4pOwogIHZvaWQgQ29tcGFjdCgpOwogIHZvaWQgU29ydChuc1Zv
aWRBcnJheUNvbXBhcmF0b3JGdW5jIGFGdW5jLCB2b2lkKiBhRGF0YSk7CgogIFBSQm9vbCBFbnVt
ZXJhdGVGb3J3YXJkcyhuc1ZvaWRBcnJheUVudW1GdW5jIGFGdW5jLCB2b2lkKiBhRGF0YSk7CiAg
UFJCb29sIEVudW1lcmF0ZUJhY2t3YXJkcyhuc1ZvaWRBcnJheUVudW1GdW5jIGFGdW5jLCB2b2lk
KiBhRGF0YSk7Cgpwcml2YXRlOgogIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBQdHJCaXRzOwoKICBQ
UkJvb2wgSGFzU2luZ2xlQ2hpbGQoKSBjb25zdAogIHsKICAgIHJldHVybiAobUNoaWxkcmVuICYm
IChQdHJCaXRzKG1DaGlsZHJlbikgJiAweDEpKTsKICB9CiAgUFJCb29sIEhhc1ZlY3RvcigpIGNv
bnN0CiAgewogICAgcmV0dXJuIChtQ2hpbGRyZW4gJiYgIShQdHJCaXRzKG1DaGlsZHJlbikgJiAw
eDEpKTsKICB9CiAgdm9pZCogR2V0U2luZ2xlQ2hpbGQoKSBjb25zdAogIHsKICAgIHJldHVybiAo
bUNoaWxkcmVuID8gKCh2b2lkKikoUHRyQml0cyhtQ2hpbGRyZW4pICYgfjB4MSkpIDogMCk7CiAg
fQogIHZvaWQgU2V0U2luZ2xlQ2hpbGQodm9pZCAqYUNoaWxkKTsKICBuc1ZvaWRBcnJheSogR2V0
Q2hpbGRWZWN0b3IoKSBjb25zdAogIHsKICAgIHJldHVybiAobnNWb2lkQXJyYXkqKW1DaGlsZHJl
bjsKICB9CiAgbnNWb2lkQXJyYXkqIFN3aXRjaFRvVmVjdG9yKCk7CgoKCgoKICB2b2lkICptQ2hp
bGRyZW47Cn07CiMgNDUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NQ2xhc3NJbmZv
LmgiIDIKCmVudW0gbnNET01DbGFzc0luZm9JRCB7CgogIGVET01DbGFzc0luZm9fV2luZG93X2lk
LAogIGVET01DbGFzc0luZm9fTG9jYXRpb25faWQsCiAgZURPTUNsYXNzSW5mb19OYXZpZ2F0b3Jf
aWQsCiAgZURPTUNsYXNzSW5mb19QbHVnaW5faWQsCiAgZURPTUNsYXNzSW5mb19QbHVnaW5BcnJh
eV9pZCwKICBlRE9NQ2xhc3NJbmZvX01pbWVUeXBlX2lkLAogIGVET01DbGFzc0luZm9fTWltZVR5
cGVBcnJheV9pZCwKICBlRE9NQ2xhc3NJbmZvX0JhclByb3BfaWQsCiAgZURPTUNsYXNzSW5mb19I
aXN0b3J5X2lkLAogIGVET01DbGFzc0luZm9fU2NyZWVuX2lkLAoKCiAgZURPTUNsYXNzSW5mb19Y
TUxEb2N1bWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0RvY3VtZW50VHlwZV9pZCwKICBlRE9NQ2xh
c3NJbmZvX0RPTUltcGxlbWVudGF0aW9uX2lkLAogIGVET01DbGFzc0luZm9fRE9NRXhjZXB0aW9u
X2lkLAogIGVET01DbGFzc0luZm9fRG9jdW1lbnRGcmFnbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZv
X0VsZW1lbnRfaWQsCiAgZURPTUNsYXNzSW5mb19BdHRyX2lkLAogIGVET01DbGFzc0luZm9fVGV4
dF9pZCwKICBlRE9NQ2xhc3NJbmZvX0NvbW1lbnRfaWQsCiAgZURPTUNsYXNzSW5mb19DREFUQVNl
Y3Rpb25faWQsCiAgZURPTUNsYXNzSW5mb19Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25faWQsCiAgZURP
TUNsYXNzSW5mb19FbnRpdHlfaWQsCiAgZURPTUNsYXNzSW5mb19FbnRpdHlSZWZlcmVuY2VfaWQs
CiAgZURPTUNsYXNzSW5mb19Ob3RhdGlvbl9pZCwKICBlRE9NQ2xhc3NJbmZvX05vZGVMaXN0X2lk
LAogIGVET01DbGFzc0luZm9fTmFtZWROb2RlTWFwX2lkLAoKCiAgZURPTUNsYXNzSW5mb19Eb2N1
bWVudFN0eWxlU2hlZXRMaXN0X2lkLAoKCiAgZURPTUNsYXNzSW5mb19FdmVudF9pZCwKICBlRE9N
Q2xhc3NJbmZvX011dGF0aW9uRXZlbnRfaWQsCgoKICBlRE9NQ2xhc3NJbmZvX0hUTUxEb2N1bWVu
dF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxDb2xsZWN0aW9uX2lkLAogIGVET01DbGFzc0luZm9f
SFRNTE9wdGlvbkNvbGxlY3Rpb25faWQsCiAgZURPTUNsYXNzSW5mb19IVE1MRm9ybUNvbnRyb2xD
b2xsZWN0aW9uX2lkLAogIGVET01DbGFzc0luZm9fSFRNTEdlbmVyaWNDb2xsZWN0aW9uX2lkLAoK
CiAgZURPTUNsYXNzSW5mb19IVE1MQW5jaG9yRWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hU
TUxBcHBsZXRFbGVtZW50X2lkLAogIGVET01DbGFzc0luZm9fSFRNTEFyZWFFbGVtZW50X2lkLAog
IGVET01DbGFzc0luZm9fSFRNTEJSRWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxCYXNl
RWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxCYXNlRm9udEVsZW1lbnRfaWQsCiAgZURP
TUNsYXNzSW5mb19IVE1MQm9keUVsZW1lbnRfaWQsCiAgZURPTUNsYXNzSW5mb19IVE1MQnV0dG9u
RWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxETGlzdEVsZW1lbnRfaWQsCiAgZURPTUNs
YXNzSW5mb19IVE1MRGVsRWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxEaXJlY3RvcnlF
bGVtZW50X2lkLAogIGVET01DbGFzc0luZm9fSFRNTERpdkVsZW1lbnRfaWQsCiAgZURPTUNsYXNz
SW5mb19IVE1MRW1iZWRFbGVtZW50X2lkLAogIGVET01DbGFzc0luZm9fSFRNTEZpZWxkU2V0RWxl
bWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxGb250RWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJ
bmZvX0hUTUxGb3JtRWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxGcmFtZUVsZW1lbnRf
aWQsCiAgZURPTUNsYXNzSW5mb19IVE1MRnJhbWVTZXRFbGVtZW50X2lkLAogIGVET01DbGFzc0lu
Zm9fSFRNTEhSRWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxIZWFkRWxlbWVudF9pZCwK
ICBlRE9NQ2xhc3NJbmZvX0hUTUxIZWFkaW5nRWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hU
TUxIdG1sRWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxJRnJhbWVFbGVtZW50X2lkLAog
IGVET01DbGFzc0luZm9fSFRNTEltYWdlRWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxJ
bnB1dEVsZW1lbnRfaWQsCiAgZURPTUNsYXNzSW5mb19IVE1MSW5zRWxlbWVudF9pZCwKICBlRE9N
Q2xhc3NJbmZvX0hUTUxJc0luZGV4RWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxMSUVs
ZW1lbnRfaWQsCiAgZURPTUNsYXNzSW5mb19IVE1MTGFiZWxFbGVtZW50X2lkLAogIGVET01DbGFz
c0luZm9fSFRNTExlZ2VuZEVsZW1lbnRfaWQsCiAgZURPTUNsYXNzSW5mb19IVE1MTGlua0VsZW1l
bnRfaWQsCiAgZURPTUNsYXNzSW5mb19IVE1MTWFwRWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZv
X0hUTUxNZW51RWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxNZXRhRWxlbWVudF9pZCwK
ICBlRE9NQ2xhc3NJbmZvX0hUTUxNb2RFbGVtZW50X2lkLAogIGVET01DbGFzc0luZm9fSFRNTE9M
aXN0RWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxPYmplY3RFbGVtZW50X2lkLAogIGVE
T01DbGFzc0luZm9fSFRNTE9wdEdyb3VwRWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxP
cHRpb25FbGVtZW50X2lkLAogIGVET01DbGFzc0luZm9fSFRNTFBhcmFncmFwaEVsZW1lbnRfaWQs
CiAgZURPTUNsYXNzSW5mb19IVE1MUGFyYW1FbGVtZW50X2lkLAogIGVET01DbGFzc0luZm9fSFRN
TFByZUVsZW1lbnRfaWQsCiAgZURPTUNsYXNzSW5mb19IVE1MUXVvdGVFbGVtZW50X2lkLAogIGVE
T01DbGFzc0luZm9fSFRNTFNjcmlwdEVsZW1lbnRfaWQsCiAgZURPTUNsYXNzSW5mb19IVE1MU2Vs
ZWN0RWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxTcGFjZXJFbGVtZW50X2lkLAogIGVE
T01DbGFzc0luZm9fSFRNTFNwYW5FbGVtZW50X2lkLAogIGVET01DbGFzc0luZm9fSFRNTFN0eWxl
RWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxUYWJsZUNhcHRpb25FbGVtZW50X2lkLAog
IGVET01DbGFzc0luZm9fSFRNTFRhYmxlQ2VsbEVsZW1lbnRfaWQsCiAgZURPTUNsYXNzSW5mb19I
VE1MVGFibGVDb2xFbGVtZW50X2lkLAogIGVET01DbGFzc0luZm9fSFRNTFRhYmxlQ29sR3JvdXBF
bGVtZW50X2lkLAogIGVET01DbGFzc0luZm9fSFRNTFRhYmxlRWxlbWVudF9pZCwKICBlRE9NQ2xh
c3NJbmZvX0hUTUxUYWJsZVJvd0VsZW1lbnRfaWQsCiAgZURPTUNsYXNzSW5mb19IVE1MVGFibGVT
ZWN0aW9uRWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxUZXh0QXJlYUVsZW1lbnRfaWQs
CiAgZURPTUNsYXNzSW5mb19IVE1MVGl0bGVFbGVtZW50X2lkLAogIGVET01DbGFzc0luZm9fSFRN
TFVMaXN0RWxlbWVudF9pZCwKICBlRE9NQ2xhc3NJbmZvX0hUTUxVbmtub3duRWxlbWVudF9pZCwK
ICBlRE9NQ2xhc3NJbmZvX0hUTUxXQlJFbGVtZW50X2lkLAoKCiAgZURPTUNsYXNzSW5mb19DU1NT
dHlsZVJ1bGVfaWQsCiAgZURPTUNsYXNzSW5mb19DU1NDaGFyc2V0UnVsZV9pZCwKICBlRE9NQ2xh
c3NJbmZvX0NTU0ltcG9ydFJ1bGVfaWQsCiAgZURPTUNsYXNzSW5mb19DU1NNZWRpYVJ1bGVfaWQs
CiAgZURPTUNsYXNzSW5mb19DU1NOYW1lU3BhY2VSdWxlX2lkLAogIGVET01DbGFzc0luZm9fQ1NT
UnVsZUxpc3RfaWQsCiAgZURPTUNsYXNzSW5mb19DU1NHcm91cFJ1bGVSdWxlTGlzdF9pZCwKICBl
RE9NQ2xhc3NJbmZvX01lZGlhTGlzdF9pZCwKICBlRE9NQ2xhc3NJbmZvX1N0eWxlU2hlZXRMaXN0
X2lkLAogIGVET01DbGFzc0luZm9fQ1NTU3R5bGVTaGVldF9pZCwKICBlRE9NQ2xhc3NJbmZvX0NT
U1N0eWxlRGVjbGFyYXRpb25faWQsCiAgZURPTUNsYXNzSW5mb19Db21wdXRlZENTU1N0eWxlRGVj
bGFyYXRpb25faWQsCiAgZURPTUNsYXNzSW5mb19ST0NTU1ByaW1pdGl2ZVZhbHVlX2lkLAoKCiAg
ZURPTUNsYXNzSW5mb19SYW5nZV9pZCwKICBlRE9NQ2xhc3NJbmZvX1NlbGVjdGlvbl9pZCwKCgog
IGVET01DbGFzc0luZm9fWFVMRG9jdW1lbnRfaWQsCiAgZURPTUNsYXNzSW5mb19YVUxFbGVtZW50
X2lkLAogIGVET01DbGFzc0luZm9fWFVMQ29tbWFuZERpc3BhdGNoZXJfaWQsCiAgZURPTUNsYXNz
SW5mb19YVUxOb2RlTGlzdF9pZCwKICBlRE9NQ2xhc3NJbmZvX1hVTE5hbWVkTm9kZU1hcF9pZCwK
ICBlRE9NQ2xhc3NJbmZvX1hVTEF0dHJfaWQsCiAgZURPTUNsYXNzSW5mb19YVUxDb250cm9sbGVy
c19pZCwKICBlRE9NQ2xhc3NJbmZvX0JveE9iamVjdF9pZCwKICBlRE9NQ2xhc3NJbmZvX1RyZWVT
ZWxlY3Rpb25faWQsCiAgZURPTUNsYXNzSW5mb19UcmVlQ29udGVudFZpZXdfaWQsCgoKICBlRE9N
Q2xhc3NJbmZvX0NyeXB0b19pZCwKICBlRE9NQ2xhc3NJbmZvX0NSTUZPYmplY3RfaWQsCiAgZURP
TUNsYXNzSW5mb19Qa2NzMTFfaWQsCiMgMjQwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25z
SURPTUNsYXNzSW5mby5oIgogIGVET01DbGFzc0luZm9fVHJlZVdhbGtlcl9pZCwKCgoKCgoKICBl
RE9NQ2xhc3NJbmZvX0NTU1JlY3RfaWQsCgoKICBlRE9NQ2xhc3NJbmZvX0Nocm9tZVdpbmRvd19p
ZCwKCgogIGVET01DbGFzc0luZm9fQ1NTUkdCQ29sb3JfaWQsCgogIGVET01DbGFzc0luZm9fUmFu
Z2VFeGNlcHRpb25faWQsCgoKCiAgZURPTUNsYXNzSW5mb19DU1NWYWx1ZUxpc3RfaWQsCgoKICBl
RE9NQ2xhc3NJbmZvX0NvbnRlbnRMaXN0X2lkLAoKCiAgZURPTUNsYXNzSW5mb19YTUxTdHlsZXNo
ZWV0UHJvY2Vzc2luZ0luc3RydWN0aW9uX2lkLAoKICBlRE9NQ2xhc3NJbmZvX0ltYWdlRG9jdW1l
bnRfaWQsCgoKICBlRE9NQ2xhc3NJbmZvSURDb3VudAp9OwoKIyAxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUveHBjb25uZWN0L25zSVhQQ1NjcmlwdGFibGUuaCIgMQojIDE0ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUveHBjb25uZWN0L25zSVhQQ1NjcmlwdGFibGUuaCIKIyAxICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUveHBjb25uZWN0L25zSVhQQ29ubmVjdC5oIiAxCiMgMTggIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS94cGNvbm5lY3QvbnNJWFBDb25uZWN0LmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL3hwY29ubmVjdC94cGNjb21wb25lbnRzLmgiIDEKIyAxNCAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL3hwY29ubmVjdC94cGNjb21wb25lbnRzLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3hwY29ubmVjdC94cGNleGNlcHRpb24uaCIgMQojIDE0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
eHBjb25uZWN0L3hwY2V4Y2VwdGlvbi5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNv
bS9uc0lFeGNlcHRpb24uaCIgMQojIDI5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJ
RXhjZXB0aW9uLmgiCmNsYXNzIG5zSVN0YWNrRnJhbWUgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewog
cHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJ
SUQgaWlkID0gezB4OTFkODIxMDUsIDB4N2M2MiwgMHg0ZjhiLCB7IDB4OTcsIDB4NzksIDB4MTUs
IDB4NDIsIDB4NzcsIDB4YzAsIDB4ZWUsIDB4OTAgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRMYW5ndWFnZShQUlVpbnQzMiAqYUxhbmd1YWdlKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldExhbmd1YWdlTmFtZShjaGFyICogKmFMYW5ndWFnZU5hbWUpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RmlsZW5hbWUoY2hhciAqICphRmlsZW5hbWUpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TmFtZShjaGFyICogKmFOYW1lKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldExpbmVOdW1iZXIoUFJJbnQzMiAqYUxpbmVOdW1iZXIpID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0U291cmNlTGluZShjaGFyICogKmFTb3VyY2VMaW5lKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENhbGxlcihuc0lTdGFja0ZyYW1lICogKmFDYWxsZXIp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgVG9TdHJpbmcoY2hhciAqKl9yZXR2YWwpID0gMDsK
Cn07CiMgMTgwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJRXhjZXB0aW9uLmgiCmNs
YXNzIG5zSUV4Y2VwdGlvbiA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRp
YyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhmM2E4
ZDNiNCwgMHhjNDI0LCAweDRlZGMsIHsgMHg4YiwgMHhmNiwgMHg4OSwgMHg3NCwgMHhjOSwgMHg4
MywgMHhiYSwgMHg3OCB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1l
c3NhZ2UoY2hhciAqICphTWVzc2FnZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRSZXN1
bHQobnNyZXN1bHQgKmFSZXN1bHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TmFtZShj
aGFyICogKmFOYW1lKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEZpbGVuYW1lKGNoYXIg
KiAqYUZpbGVuYW1lKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldExpbmVOdW1iZXIoUFJV
aW50MzIgKmFMaW5lTnVtYmVyKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbHVtbk51
bWJlcihQUlVpbnQzMiAqYUNvbHVtbk51bWJlcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRMb2NhdGlvbihuc0lTdGFja0ZyYW1lICogKmFMb2NhdGlvbikgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRJbm5lcihuc0lFeGNlcHRpb24gKiAqYUlubmVyKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldERhdGEobnNJU3VwcG9ydHMgKiAqYURhdGEpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgVG9TdHJpbmcoY2hhciAqKl9yZXR2YWwpID0gMDsKCn07CiMgMTUgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS94cGNvbm5lY3QveHBjZXhjZXB0aW9uLmgiIDIKIyAyOSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL3hwY29ubmVjdC94cGNleGNlcHRpb24uaCIKY2xhc3MgbnNJWFBDRXhjZXB0
aW9uIDogcHVibGljIG5zSUV4Y2VwdGlvbiB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJ
RCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhiMmEzNDAxMCwgMHgzOTgz
LCAweDExZDMsIHsgMHg5OCwgMHg4OCwgMHgwMCwgMHg2MCwgMHgwOCwgMHg5NiwgMHgyNCwgMHgy
MiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEluaXRpYWxpemUoY29uc3Qg
Y2hhciAqYU1lc3NhZ2UsIG5zcmVzdWx0IGFSZXN1bHQsIGNvbnN0IGNoYXIgKmFOYW1lLCBuc0lT
dGFja0ZyYW1lICphTG9jYXRpb24sIG5zSVN1cHBvcnRzICphRGF0YSwgbnNJRXhjZXB0aW9uICph
SW5uZXIpID0gMDsKCn07CiMgMTUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbm5lY3QveHBj
Y29tcG9uZW50cy5oIiAyCgoKCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29ubmVjdC94
cGNqc2lkLmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29ubmVjdC94cGNqc2lk
LmgiCmNsYXNzIG5zSUpTSUQgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0
aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4Yzg2
YWUxMzEsIDB4ZDEwMSwgMHgxMWQyLCB7IDB4OTgsIDB4NDEsIDB4MDAsIDB4NjAsIDB4MDgsIDB4
OTYsIDB4MjQsIDB4MjIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRO
YW1lKGNoYXIgKiAqYU5hbWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TnVtYmVyKGNo
YXIgKiAqYU51bWJlcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRJZChuc0lEICogKmFJ
ZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRWYWxpZChQUkJvb2wgKmFWYWxpZCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBFcXVhbHMobnNJSlNJRCAqb3RoZXIsIFBSQm9vbCAqX3Jl
dHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJbml0aWFsaXplKGNvbnN0IGNoYXIgKmlk
U3RyaW5nKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFRvU3RyaW5nKGNoYXIgKipfcmV0dmFs
KSA9IDA7Cgp9OwojIDE2NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29ubmVjdC94cGNqc2lk
LmgiCmNsYXNzIG5zSUpTSUlEIDogcHVibGljIG5zSUpTSUQgewogcHVibGljOgoKICBzdGF0aWMg
Y29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4ZTA4ZGNk
YTAsIDB4ZDY1MSwgMHgxMWQyLCB7IDB4OTgsIDB4NDMsIDB4MDAsIDB4NjAsIDB4MDgsIDB4OTYs
IDB4MjQsIDB4MjIgfX07IHJldHVybiBpaWQ7fQoKfTsKIyAyMjIgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS94cGNvbm5lY3QveHBjanNpZC5oIgpjbGFzcyBuc0lKU0NJRCA6IHB1YmxpYyBuc0lKU0lE
IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0
IG5zSUlEIGlpZCA9IHsweGUzYTI0YTYwLCAweGQ2NTEsIDB4MTFkMiwgeyAweDk4LCAweDQzLCAw
eDAwLCAweDYwLCAweDA4LCAweDk2LCAweDI0LCAweDIyIH19OyByZXR1cm4gaWlkO30KCgogIHZp
cnR1YWwgbnNyZXN1bHQgQ3JlYXRlSW5zdGFuY2UobnNJU3VwcG9ydHMgKipfcmV0dmFsKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNlcnZpY2UobnNJU3VwcG9ydHMgKipfcmV0dmFsKSA9
IDA7Cgp9OwojIDE5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb25uZWN0L3hwY2NvbXBvbmVu
dHMuaCIgMgoKCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb21wb25lbnRN
YW5hZ2VyLmgiIDEKIyAxNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUNvbXBvbmVu
dE1hbmFnZXIuaCIKY2xhc3MgbnNJRmFjdG9yeTsKIyAyNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3hwY29tL25zSUNvbXBvbmVudE1hbmFnZXIuaCIKY2xhc3MgbnNJQ29tcG9uZW50TWFuYWdlciA6
IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0
SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhODhlNWE2MCwgMHgyMDVhLCAweDRi
YjEsIHsgMHg5NCwgMHhlMSwgMHgyNiwgMHgyOCwgMHhkYSwgMHhmNSwgMHgxZSwgMHhhZSB9fTsg
cmV0dXJuIGlpZDt9CiMgNDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb21wb25l
bnRNYW5hZ2VyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDbGFzc09iamVjdChjb25zdCBuc0NJ
RCAmIGFDbGFzcywgY29uc3QgbnNJSUQgJiBhSUlELCB2b2lkICogKnJlc3VsdCkgPSAwOwojIDUy
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJQ29tcG9uZW50TWFuYWdlci5oIgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0Q2xhc3NPYmplY3RCeUNvbnRyYWN0SUQoY29uc3QgY2hhciAqYUNv
bnRyYWN0SUQsIGNvbnN0IG5zSUlEICYgYUlJRCwgdm9pZCAqICpyZXN1bHQpID0gMDsKIyA2NCAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUNvbXBvbmVudE1hbmFnZXIuaCIKICB2aXJ0
dWFsIG5zcmVzdWx0IENyZWF0ZUluc3RhbmNlKGNvbnN0IG5zQ0lEICYgYUNsYXNzLCBuc0lTdXBw
b3J0cyAqYURlbGVnYXRlLCBjb25zdCBuc0lJRCAmIGFJSUQsIHZvaWQgKiAqcmVzdWx0KSA9IDA7
CiMgNzcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb21wb25lbnRNYW5hZ2VyLmgi
CiAgdmlydHVhbCBuc3Jlc3VsdCBDcmVhdGVJbnN0YW5jZUJ5Q29udHJhY3RJRChjb25zdCBjaGFy
ICphQ29udHJhY3RJRCwgbnNJU3VwcG9ydHMgKmFEZWxlZ2F0ZSwgY29uc3QgbnNJSUQgJiBhSUlE
LCB2b2lkICogKnJlc3VsdCkgPSAwOwoKfTsKIyAxNTggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94
cGNvbS9uc0lDb21wb25lbnRNYW5hZ2VyLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29tL25zQ29tcG9uZW50TWFuYWdlclV0aWxzLmgiIDEKIyAyOCAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL3hwY29tL25zQ29tcG9uZW50TWFuYWdlclV0aWxzLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL3hwY29tL25zQ09NUHRyLmgiIDEKIyAxMjIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94
cGNvbS9uc0NPTVB0ci5oIgogIHR5cGVkZWYgUFJCb29sIE5TQ0FQX0JPT0w7CiMgMTc0ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNDT01QdHIuaCIKdGVtcGxhdGUgPGNsYXNzIFQ+CmNs
YXNzIG5zRGVyaXZlZFNhZmUgOiBwdWJsaWMgVAojIDE4NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3hwY29tL25zQ09NUHRyLmgiCiAgewogICAgcHJpdmF0ZToKCiAgICAgIHVzaW5nIFQ6OkFkZFJl
ZjsKICAgICAgdXNpbmcgVDo6UmVsZWFzZTsKCgoKCgoKICAgICAgdm9pZCBvcGVyYXRvciBkZWxl
dGUoIHZvaWQqLCBzaXplX3QgKTsKCgoKICAgICAgbnNEZXJpdmVkU2FmZTxUPiYgb3BlcmF0b3I9
KCBjb25zdCBUJiApOwojIDIwOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zQ09NUHRy
LmgiCiAgfTsKIyAyMzAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0NPTVB0ci5oIgp0
ZW1wbGF0ZSA8Y2xhc3MgVD4Kc3RydWN0IGFscmVhZHlfQWRkUmVmZWQKIyAyNDcgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS94cGNvbS9uc0NPTVB0ci5oIgogIHsKICAgIGFscmVhZHlfQWRkUmVmZWQo
IFQqIGFSYXdQdHIgKQogICAgICAgIDogbVJhd1B0cihhUmF3UHRyKQogICAgICB7CgogICAgICB9
CgogICAgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4gbVJhd1B0cjsgfQoKICAgIFQqIG1SYXdQdHI7
CiAgfTsKCnRlbXBsYXRlIDxjbGFzcyBUPgppbmxpbmUKY29uc3QgYWxyZWFkeV9BZGRSZWZlZDxU
PgpnZXR0ZXJfQWRkUmVmcyggVCogYVJhd1B0ciApCgoKCgogIHsKICAgIHJldHVybiBhbHJlYWR5
X0FkZFJlZmVkPFQ+KGFSYXdQdHIpOwogIH0KCnRlbXBsYXRlIDxjbGFzcyBUPgppbmxpbmUKY29u
c3QgYWxyZWFkeV9BZGRSZWZlZDxUPgpnZXR0ZXJfQWRkUmVmcyggY29uc3QgYWxyZWFkeV9BZGRS
ZWZlZDxUPiYgYUFscmVhZHlBZGRSZWZlZFB0ciApCiAgewogICAgcmV0dXJuIGFBbHJlYWR5QWRk
UmVmZWRQdHI7CiAgfQoKdGVtcGxhdGUgPGNsYXNzIFQ+CmlubGluZQpjb25zdCBhbHJlYWR5X0Fk
ZFJlZmVkPFQ+CmRvbnRfQWRkUmVmKCBUKiBhUmF3UHRyICkKICB7CiAgICByZXR1cm4gYWxyZWFk
eV9BZGRSZWZlZDxUPihhUmF3UHRyKTsKICB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgVD4KaW5saW5lCmNv
bnN0IGFscmVhZHlfQWRkUmVmZWQ8VD4KZG9udF9BZGRSZWYoIGNvbnN0IGFscmVhZHlfQWRkUmVm
ZWQ8VD4gYUFscmVhZHlBZGRSZWZlZFB0ciApCiAgewogICAgcmV0dXJuIGFBbHJlYWR5QWRkUmVm
ZWRQdHI7CiAgfQojIDMwNiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zQ09NUHRyLmgi
CnRlbXBsYXRlIDxjbGFzcyBUPgppbmxpbmUKVCoKZG9udF9RdWVyeUludGVyZmFjZSggVCogZXhw
ciApCiAgewogICAgcmV0dXJuIGV4cHI7CiAgfQoKCgpjbGFzcyBuc0NPTVB0cl9oZWxwZXIKIyAz
MzIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0NPTVB0ci5oIgogIHsKICAgIHB1Ymxp
YzoKICAgICAgdmlydHVhbCBuc3Jlc3VsdCBvcGVyYXRvcigpKCBjb25zdCBuc0lJRCYsIHZvaWQq
KiApIGNvbnN0ID0gMDsKICB9OwoKY2xhc3MgbnNRdWVyeUludGVyZmFjZSA6IHB1YmxpYyBuc0NP
TVB0cl9oZWxwZXIKICB7CiAgICBwdWJsaWM6CiAgICAgIG5zUXVlcnlJbnRlcmZhY2UoIG5zSVN1
cHBvcnRzKiBhUmF3UHRyLCBuc3Jlc3VsdCogZXJyb3IgKQogICAgICAgICAgOiBtUmF3UHRyKGFS
YXdQdHIpLAogICAgICAgICAgICBtRXJyb3JQdHIoZXJyb3IpCiAgICAgICAgewoKICAgICAgICB9
CgogICAgICB2aXJ0dWFsIG5zcmVzdWx0IG9wZXJhdG9yKCkoIGNvbnN0IG5zSUlEJiBhSUlELCB2
b2lkKiogKSBjb25zdDsKCiAgICBwcml2YXRlOgogICAgICBuc0lTdXBwb3J0cyogbVJhd1B0cjsK
ICAgICAgbnNyZXN1bHQqIG1FcnJvclB0cjsKICB9OwoKaW5saW5lCmNvbnN0IG5zUXVlcnlJbnRl
cmZhY2UKZG9fUXVlcnlJbnRlcmZhY2UoIG5zSVN1cHBvcnRzKiBhUmF3UHRyLCBuc3Jlc3VsdCog
ZXJyb3IgPSAwICkKICB7CiAgICByZXR1cm4gbnNRdWVyeUludGVyZmFjZShhUmF3UHRyLCBlcnJv
cik7CiAgfQoKdGVtcGxhdGUgPGNsYXNzIFQ+CmlubGluZQp2b2lkCmRvX1F1ZXJ5SW50ZXJmYWNl
KCBhbHJlYWR5X0FkZFJlZmVkPFQ+JiApCiAgewoKCgogIH0KCnRlbXBsYXRlIDxjbGFzcyBUPgpp
bmxpbmUKdm9pZApkb19RdWVyeUludGVyZmFjZSggYWxyZWFkeV9BZGRSZWZlZDxUPiYsIG5zcmVz
dWx0KiApCiAgewoKCgogIH0KCgoKY2xhc3MgbnNDT01QdHJfYmFzZQojIDM5NiAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL3hwY29tL25zQ09NUHRyLmgiCiAgewogICAgcHVibGljOgoKICAgICAgbnND
T01QdHJfYmFzZSggbnNJU3VwcG9ydHMqIHJhd1B0ciA9IDAgKQogICAgICAgICAgOiBtUmF3UHRy
KHJhd1B0cikKICAgICAgICB7CgogICAgICAgIH0KCgogICAgICB+bnNDT01QdHJfYmFzZSgpOwoK
CgoKCgogICAgICB2b2lkIGFzc2lnbl93aXRoX0FkZFJlZiggbnNJU3VwcG9ydHMqICk7CiAgICAg
IHZvaWQgYXNzaWduX2Zyb21faGVscGVyKCBjb25zdCBuc0NPTVB0cl9oZWxwZXImLCBjb25zdCBu
c0lJRCYgKTsKICAgICAgdm9pZCoqIGJlZ2luX2Fzc2lnbm1lbnQoKTsKCiAgICBwcm90ZWN0ZWQ6
CiAgICAgIG5zSVN1cHBvcnRzKiBtUmF3UHRyOwoKICAgICAgdm9pZAogICAgICBhc3NpZ25fYXNz
dW1pbmdfQWRkUmVmKCBuc0lTdXBwb3J0cyogbmV3UHRyICkKICAgICAgICB7CiMgNDMxICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNDT01QdHIuaCIKICAgICAgICAgIG5zSVN1cHBvcnRz
KiBvbGRQdHIgPSBtUmF3UHRyOwogICAgICAgICAgbVJhd1B0ciA9IG5ld1B0cjsKICAgICAgICAg
IDs7CiAgICAgICAgICBpZiAoIG9sZFB0ciApCiAgICAgICAgICAgIChvbGRQdHIpLT5SZWxlYXNl
KCk7CiAgICAgICAgfQogIH07CgoKCnRlbXBsYXRlIDxjbGFzcyBUPgpjbGFzcyBuc0NPTVB0cgoK
ICAgIDogcHJpdmF0ZSBuc0NPTVB0cl9iYXNlCgogIHsKICAgIGVudW0geyBfZm9yY2VfZXZlbl9j
b21wbGlhbnRfY29tcGlsZXJzX3RvX2ZhaWxfID0gc2l6ZW9mKFQpIH07CiMgNDgzICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUveHBjb20vbnNDT01QdHIuaCIKICAgIHB1YmxpYzoKICAgICAgdHlwZWRl
ZiBUIGVsZW1lbnRfdHlwZTsKIyA1MTMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0NP
TVB0ci5oIgogICAgICBuc0NPTVB0cigpCiAgICAgICAgICAgIDogbnNDT01QdHJfYmFzZSgwKQoK
ICAgICAgICB7CiAgICAgICAgICA7OwogICAgICAgIH0KCiAgICAgIG5zQ09NUHRyKCBjb25zdCBu
c0NPTVB0cjxUPiYgYVNtYXJ0UHRyICkKICAgICAgICAgICAgOiBuc0NPTVB0cl9iYXNlKGFTbWFy
dFB0ci5tUmF3UHRyKQoKICAgICAgICB7CiAgICAgICAgICBpZiAoIG1SYXdQdHIgKQogICAgICAg
ICAgICAobVJhd1B0ciktPkFkZFJlZigpOwogICAgICAgICAgOzsKICAgICAgICB9CgogICAgICBu
c0NPTVB0ciggVCogYVJhd1B0ciApCiAgICAgICAgICAgIDogbnNDT01QdHJfYmFzZShhUmF3UHRy
KQoKICAgICAgICB7CiAgICAgICAgICBpZiAoIG1SYXdQdHIgKQogICAgICAgICAgICAobVJhd1B0
ciktPkFkZFJlZigpOwogICAgICAgICAgOzsKICAgICAgICAgIDsKICAgICAgICB9CgogICAgICBu
c0NPTVB0ciggY29uc3QgYWxyZWFkeV9BZGRSZWZlZDxUPiYgYVNtYXJ0UHRyICkKICAgICAgICAg
ICAgOiBuc0NPTVB0cl9iYXNlKGFTbWFydFB0ci5tUmF3UHRyKQoKICAgICAgICB7CiAgICAgICAg
ICA7OwogICAgICAgICAgOwogICAgICAgIH0KCiAgICAgIG5zQ09NUHRyKCBjb25zdCBuc0NPTVB0
cl9oZWxwZXImIGhlbHBlciApCiAgICAgICAgICAgIDogbnNDT01QdHJfYmFzZSgwKQoKCiAgICAg
ICAgewogICAgICAgICAgOzsKICAgICAgICAgIGFzc2lnbl9mcm9tX2hlbHBlcihoZWxwZXIsIG5z
Q09NVHlwZUluZm88VD46OkdldElJRCgpKTsKICAgICAgICAgIDsKICAgICAgICB9CiMgNTcyICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNDT01QdHIuaCIKICAgICAgbnNDT01QdHI8VD4m
CiAgICAgIG9wZXJhdG9yPSggY29uc3QgbnNDT01QdHI8VD4mIHJocyApCgogICAgICAgIHsKICAg
ICAgICAgIGFzc2lnbl93aXRoX0FkZFJlZihyaHMubVJhd1B0cik7CiAgICAgICAgICByZXR1cm4g
KnRoaXM7CiAgICAgICAgfQoKICAgICAgbnNDT01QdHI8VD4mCiAgICAgIG9wZXJhdG9yPSggVCog
cmhzICkKCiAgICAgICAgewogICAgICAgICAgYXNzaWduX3dpdGhfQWRkUmVmKHJocyk7CiAgICAg
ICAgICA7CiAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgfQoKICAgICAgbnNDT01QdHI8
VD4mCiAgICAgIG9wZXJhdG9yPSggY29uc3QgYWxyZWFkeV9BZGRSZWZlZDxUPiYgcmhzICkKCiAg
ICAgICAgewogICAgICAgICAgYXNzaWduX2Fzc3VtaW5nX0FkZFJlZihyaHMubVJhd1B0cik7CiAg
ICAgICAgICA7CiAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgfQoKICAgICAgbnNDT01Q
dHI8VD4mCiAgICAgIG9wZXJhdG9yPSggY29uc3QgbnNDT01QdHJfaGVscGVyJiByaHMgKQoKCiAg
ICAgICAgewogICAgICAgICAgYXNzaWduX2Zyb21faGVscGVyKHJocywgbnNDT01UeXBlSW5mbzxU
Pjo6R2V0SUlEKCkpOwogICAgICAgICAgOwogICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgICAg
IH0KIyA2MjMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0NPTVB0ci5oIgogICAgICBu
c0Rlcml2ZWRTYWZlPFQ+KgogICAgICBnZXQoKSBjb25zdAoKCgoKCgogICAgICAgIHsKICAgICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PCBuc0Rlcml2ZWRTYWZlPFQ+KiA+KG1SYXdQdHIp
OwogICAgICAgIH0KCiAgICAgIG9wZXJhdG9yIG5zRGVyaXZlZFNhZmU8VD4qKCkgY29uc3QKCgoK
CgoKCiAgICAgICAgewogICAgICAgICAgcmV0dXJuIGdldCgpOwogICAgICAgIH0KCiAgICAgIG5z
RGVyaXZlZFNhZmU8VD4qCiAgICAgIG9wZXJhdG9yLT4oKSBjb25zdAogICAgICAgIHsKICAgICAg
ICAgIDsKICAgICAgICAgIHJldHVybiBnZXQoKTsKICAgICAgICB9CiMgNjY3ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUveHBjb20vbnNDT01QdHIuaCIKICAgICAgbnNDT01QdHI8VD4qCiAgICAgIGdl
dF9hZGRyZXNzKCkKCgogICAgICAgIHsKICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgIH0K
CiAgICAgIGNvbnN0IG5zQ09NUHRyPFQ+KgogICAgICBnZXRfYWRkcmVzcygpIGNvbnN0CgoKICAg
ICAgICB7CiAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICB9CgoKCiAgICBwdWJsaWM6CiAg
ICAgIG5zRGVyaXZlZFNhZmU8VD4mCiAgICAgIG9wZXJhdG9yKigpIGNvbnN0CiAgICAgICAgewog
ICAgICAgICAgOwogICAgICAgICAgcmV0dXJuICpnZXQoKTsKICAgICAgICB9CgoKCgoKCiAgICAg
IFQqKgogICAgICBTdGFydEFzc2lnbm1lbnQoKQogICAgICAgIHsKCiAgICAgICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDwgVCoqID4oYmVnaW5fYXNzaWdubWVudCgpKTsKCgoKCiAgICAgICAg
fQogIH07CiMgNzIxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNDT01QdHIuaCIKdGVt
cGxhdGUgPD4KY2xhc3MgbnNDT01QdHI8bnNJU3VwcG9ydHM+CiAgICA6IHByaXZhdGUgbnNDT01Q
dHJfYmFzZQogIHsKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBuc0lTdXBwb3J0cyBlbGVtZW50
X3R5cGU7CiMgNzM5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNDT01QdHIuaCIKICAg
ICAgbnNDT01QdHIoKQogICAgICAgICAgICA6IG5zQ09NUHRyX2Jhc2UoMCkKCiAgICAgICAgewog
ICAgICAgICAgOzsKICAgICAgICB9CgogICAgICBuc0NPTVB0ciggY29uc3QgbnNDT01QdHI8bnNJ
U3VwcG9ydHM+JiBhU21hcnRQdHIgKQogICAgICAgICAgICA6IG5zQ09NUHRyX2Jhc2UoYVNtYXJ0
UHRyLm1SYXdQdHIpCgogICAgICAgIHsKICAgICAgICAgIGlmICggbVJhd1B0ciApCiAgICAgICAg
ICAgIChtUmF3UHRyKS0+QWRkUmVmKCk7CiAgICAgICAgICA7OwogICAgICAgIH0KCiAgICAgIG5z
Q09NUHRyKCBuc0lTdXBwb3J0cyogYVJhd1B0ciApCiAgICAgICAgICAgIDogbnNDT01QdHJfYmFz
ZShhUmF3UHRyKQoKICAgICAgICB7CiAgICAgICAgICBpZiAoIG1SYXdQdHIgKQogICAgICAgICAg
ICAobVJhd1B0ciktPkFkZFJlZigpOwogICAgICAgICAgOzsKICAgICAgICB9CgogICAgICBuc0NP
TVB0ciggY29uc3QgYWxyZWFkeV9BZGRSZWZlZDxuc0lTdXBwb3J0cz4mIGFTbWFydFB0ciApCiAg
ICAgICAgICAgIDogbnNDT01QdHJfYmFzZShhU21hcnRQdHIubVJhd1B0cikKCiAgICAgICAgewog
ICAgICAgICAgOzsKICAgICAgICB9CgogICAgICBuc0NPTVB0ciggY29uc3QgbnNDT01QdHJfaGVs
cGVyJiBoZWxwZXIgKQogICAgICAgICAgICA6IG5zQ09NUHRyX2Jhc2UoMCkKCgogICAgICAgIHsK
ICAgICAgICAgIDs7CiAgICAgICAgICBhc3NpZ25fZnJvbV9oZWxwZXIoaGVscGVyLCBuc0NPTVR5
cGVJbmZvPG5zSVN1cHBvcnRzPjo6R2V0SUlEKCkpOwogICAgICAgIH0KCgoKCiAgICAgIG5zQ09N
UHRyPG5zSVN1cHBvcnRzPiYKICAgICAgb3BlcmF0b3I9KCBjb25zdCBuc0NPTVB0cjxuc0lTdXBw
b3J0cz4mIHJocyApCgogICAgICAgIHsKICAgICAgICAgIGFzc2lnbl93aXRoX0FkZFJlZihyaHMu
bVJhd1B0cik7CiAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgfQoKICAgICAgbnNDT01Q
dHI8bnNJU3VwcG9ydHM+JgogICAgICBvcGVyYXRvcj0oIG5zSVN1cHBvcnRzKiByaHMgKQoKICAg
ICAgICB7CiAgICAgICAgICBhc3NpZ25fd2l0aF9BZGRSZWYocmhzKTsKICAgICAgICAgIHJldHVy
biAqdGhpczsKICAgICAgICB9CgogICAgICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4mCiAgICAgIG9w
ZXJhdG9yPSggY29uc3QgYWxyZWFkeV9BZGRSZWZlZDxuc0lTdXBwb3J0cz4mIHJocyApCgogICAg
ICAgIHsKICAgICAgICAgIGFzc2lnbl9hc3N1bWluZ19BZGRSZWYocmhzLm1SYXdQdHIpOwogICAg
ICAgICAgcmV0dXJuICp0aGlzOwogICAgICAgIH0KCiAgICAgIG5zQ09NUHRyPG5zSVN1cHBvcnRz
PiYKICAgICAgb3BlcmF0b3I9KCBjb25zdCBuc0NPTVB0cl9oZWxwZXImIHJocyApCgoKICAgICAg
ICB7CiAgICAgICAgICBhc3NpZ25fZnJvbV9oZWxwZXIocmhzLCBuc0NPTVR5cGVJbmZvPG5zSVN1
cHBvcnRzPjo6R2V0SUlEKCkpOwogICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgICAgIH0KCgoK
CiAgICAgIG5zRGVyaXZlZFNhZmU8bnNJU3VwcG9ydHM+KgogICAgICBnZXQoKSBjb25zdAoKCgoK
CgogICAgICAgIHsKICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PCBuc0Rlcml2ZWRT
YWZlPG5zSVN1cHBvcnRzPiogPihtUmF3UHRyKTsKICAgICAgICB9CgogICAgICBvcGVyYXRvciBu
c0Rlcml2ZWRTYWZlPG5zSVN1cHBvcnRzPiooKSBjb25zdAoKCgoKCgoKICAgICAgICB7CiAgICAg
ICAgICByZXR1cm4gZ2V0KCk7CiAgICAgICAgfQoKICAgICAgbnNEZXJpdmVkU2FmZTxuc0lTdXBw
b3J0cz4qCiAgICAgIG9wZXJhdG9yLT4oKSBjb25zdAogICAgICAgIHsKICAgICAgICAgIDsKICAg
ICAgICAgIHJldHVybiBnZXQoKTsKICAgICAgICB9CiMgODYzICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUveHBjb20vbnNDT01QdHIuaCIKICAgICAgbnNDT01QdHI8bnNJU3VwcG9ydHM+KgogICAgICBn
ZXRfYWRkcmVzcygpCgoKICAgICAgICB7CiAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICB9
CgogICAgICBjb25zdCBuc0NPTVB0cjxuc0lTdXBwb3J0cz4qCiAgICAgIGdldF9hZGRyZXNzKCkg
Y29uc3QKCgogICAgICAgIHsKICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgIH0KCgoKICAg
IHB1YmxpYzoKCiAgICAgIG5zRGVyaXZlZFNhZmU8bnNJU3VwcG9ydHM+JgogICAgICBvcGVyYXRv
ciooKSBjb25zdAogICAgICAgIHsKICAgICAgICAgIDsKICAgICAgICAgIHJldHVybiAqZ2V0KCk7
CiAgICAgICAgfQoKCgoKCgogICAgICBuc0lTdXBwb3J0cyoqCiAgICAgIFN0YXJ0QXNzaWdubWVu
dCgpCiAgICAgICAgewoKICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PCBuc0lTdXBw
b3J0cyoqID4oYmVnaW5fYXNzaWdubWVudCgpKTsKCgoKCiAgICAgICAgfQogIH07CiMgOTUwICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNDT01QdHIuaCIKdGVtcGxhdGUgPGNsYXNzIFQ+
CmlubGluZQpuc0NPTVB0cjxUPioKYWRkcmVzc19vZiggbnNDT01QdHI8VD4mIGFQdHIgKQogIHsK
ICAgIHJldHVybiBhUHRyLmdldF9hZGRyZXNzKCk7CiAgfQoKdGVtcGxhdGUgPGNsYXNzIFQ+Cmlu
bGluZQpjb25zdCBuc0NPTVB0cjxUPioKYWRkcmVzc19vZiggY29uc3QgbnNDT01QdHI8VD4mIGFQ
dHIgKQogIHsKICAgIHJldHVybiBhUHRyLmdldF9hZGRyZXNzKCk7CiAgfQoKCgp0ZW1wbGF0ZSA8
Y2xhc3MgVD4KY2xhc3MgbnNHZXR0ZXJBZGRSZWZzCiMgOTg3ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUveHBjb20vbnNDT01QdHIuaCIKICB7CiAgICBwdWJsaWM6CiAgICAgIGV4cGxpY2l0CiAgICAg
IG5zR2V0dGVyQWRkUmVmcyggbnNDT01QdHI8VD4mIGFTbWFydFB0ciApCiAgICAgICAgICA6IG1U
YXJnZXRTbWFydFB0cihhU21hcnRQdHIpCiAgICAgICAgewoKICAgICAgICB9CiMgMTAwOSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zQ09NUHRyLmgiCiAgICAgIG9wZXJhdG9yIHZvaWQq
KigpCiAgICAgICAgewogICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8IHZvaWQqKiA+
KG1UYXJnZXRTbWFydFB0ci5TdGFydEFzc2lnbm1lbnQoKSk7CiAgICAgICAgfQoKICAgICAgb3Bl
cmF0b3IgbnNJU3VwcG9ydHMqKigpCiAgICAgICAgewogICAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8IG5zSVN1cHBvcnRzKiogPihtVGFyZ2V0U21hcnRQdHIuU3RhcnRBc3NpZ25tZW50
KCkpOwogICAgICAgIH0KCiAgICAgIG9wZXJhdG9yIFQqKigpCiAgICAgICAgewogICAgICAgICAg
cmV0dXJuIG1UYXJnZXRTbWFydFB0ci5TdGFydEFzc2lnbm1lbnQoKTsKICAgICAgICB9CgogICAg
ICBUKiYKICAgICAgb3BlcmF0b3IqKCkKICAgICAgICB7CiAgICAgICAgICByZXR1cm4gKihtVGFy
Z2V0U21hcnRQdHIuU3RhcnRBc3NpZ25tZW50KCkpOwogICAgICAgIH0KCiAgICBwcml2YXRlOgog
ICAgICBuc0NPTVB0cjxUPiYgbVRhcmdldFNtYXJ0UHRyOwogIH07CgoKdGVtcGxhdGUgPD4KY2xh
c3MgbnNHZXR0ZXJBZGRSZWZzPG5zSVN1cHBvcnRzPgogIHsKICAgIHB1YmxpYzoKICAgICAgZXhw
bGljaXQKICAgICAgbnNHZXR0ZXJBZGRSZWZzKCBuc0NPTVB0cjxuc0lTdXBwb3J0cz4mIGFTbWFy
dFB0ciApCiAgICAgICAgICA6IG1UYXJnZXRTbWFydFB0cihhU21hcnRQdHIpCiAgICAgICAgewoK
ICAgICAgICB9CiMgMTA1MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zQ09NUHRyLmgi
CiAgICAgIG9wZXJhdG9yIHZvaWQqKigpCiAgICAgICAgewogICAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8IHZvaWQqKiA+KG1UYXJnZXRTbWFydFB0ci5TdGFydEFzc2lnbm1lbnQoKSk7
CiAgICAgICAgfQoKICAgICAgb3BlcmF0b3IgbnNJU3VwcG9ydHMqKigpCiAgICAgICAgewogICAg
ICAgICAgcmV0dXJuIG1UYXJnZXRTbWFydFB0ci5TdGFydEFzc2lnbm1lbnQoKTsKICAgICAgICB9
CgogICAgICBuc0lTdXBwb3J0cyomCiAgICAgIG9wZXJhdG9yKigpCiAgICAgICAgewogICAgICAg
ICAgcmV0dXJuICoobVRhcmdldFNtYXJ0UHRyLlN0YXJ0QXNzaWdubWVudCgpKTsKICAgICAgICB9
CgogICAgcHJpdmF0ZToKICAgICAgbnNDT01QdHI8bnNJU3VwcG9ydHM+JiBtVGFyZ2V0U21hcnRQ
dHI7CiAgfTsKCgp0ZW1wbGF0ZSA8Y2xhc3MgVD4KaW5saW5lCm5zR2V0dGVyQWRkUmVmczxUPgpn
ZXR0ZXJfQWRkUmVmcyggbnNDT01QdHI8VD4mIGFTbWFydFB0ciApCgoKCgogIHsKICAgIHJldHVy
biBuc0dldHRlckFkZFJlZnM8VD4oYVNtYXJ0UHRyKTsKICB9CgoKCgoKdGVtcGxhdGUgPGNsYXNz
IFQsIGNsYXNzIFU+CmlubGluZQpOU0NBUF9CT09MCm9wZXJhdG9yPT0oIGNvbnN0IG5zQ09NUHRy
PFQ+JiBsaHMsIGNvbnN0IG5zQ09NUHRyPFU+JiByaHMgKQogIHsKICAgIHJldHVybiBzdGF0aWNf
Y2FzdDwgY29uc3Qgdm9pZCogPihsaHMuZ2V0KCkpID09IHN0YXRpY19jYXN0PCBjb25zdCB2b2lk
KiA+KHJocy5nZXQoKSk7CiAgfQoKCnRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgppbmxpbmUK
TlNDQVBfQk9PTApvcGVyYXRvciE9KCBjb25zdCBuc0NPTVB0cjxUPiYgbGhzLCBjb25zdCBuc0NP
TVB0cjxVPiYgcmhzICkKICB7CiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8IGNvbnN0IHZvaWQqID4o
bGhzLmdldCgpKSAhPSBzdGF0aWNfY2FzdDwgY29uc3Qgdm9pZCogPihyaHMuZ2V0KCkpOwogIH0K
CgoKCnRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgppbmxpbmUKTlNDQVBfQk9PTApvcGVyYXRv
cj09KCBjb25zdCBuc0NPTVB0cjxUPiYgbGhzLCBjb25zdCBVKiByaHMgKQogIHsKICAgIHJldHVy
biBzdGF0aWNfY2FzdDwgY29uc3Qgdm9pZCogPihsaHMuZ2V0KCkpID09IHN0YXRpY19jYXN0PCBj
b25zdCB2b2lkKiA+KHJocyk7CiAgfQoKdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+CmlubGlu
ZQpOU0NBUF9CT09MCm9wZXJhdG9yPT0oIGNvbnN0IFUqIGxocywgY29uc3QgbnNDT01QdHI8VD4m
IHJocyApCiAgewogICAgcmV0dXJuIHN0YXRpY19jYXN0PCBjb25zdCB2b2lkKiA+KGxocykgPT0g
c3RhdGljX2Nhc3Q8IGNvbnN0IHZvaWQqID4ocmhzLmdldCgpKTsKICB9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgVCwgY2xhc3MgVT4KaW5saW5lCk5TQ0FQX0JPT0wKb3BlcmF0b3IhPSggY29uc3QgbnNDT01Q
dHI8VD4mIGxocywgY29uc3QgVSogcmhzICkKICB7CiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8IGNv
bnN0IHZvaWQqID4obGhzLmdldCgpKSAhPSBzdGF0aWNfY2FzdDwgY29uc3Qgdm9pZCogPihyaHMp
OwogIH0KCnRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgppbmxpbmUKTlNDQVBfQk9PTApvcGVy
YXRvciE9KCBjb25zdCBVKiBsaHMsIGNvbnN0IG5zQ09NUHRyPFQ+JiByaHMgKQogIHsKICAgIHJl
dHVybiBzdGF0aWNfY2FzdDwgY29uc3Qgdm9pZCogPihsaHMpICE9IHN0YXRpY19jYXN0PCBjb25z
dCB2b2lkKiA+KHJocy5nZXQoKSk7CiAgfQojIDExNTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94
cGNvbS9uc0NPTVB0ci5oIgp0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KaW5saW5lCk5TQ0FQ
X0JPT0wKb3BlcmF0b3I9PSggY29uc3QgbnNDT01QdHI8VD4mIGxocywgVSogcmhzICkKICB7CiAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8IGNvbnN0IHZvaWQqID4obGhzLmdldCgpKSA9PSBzdGF0aWNf
Y2FzdDwgdm9pZCogPihyaHMpOwogIH0KCnRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgppbmxp
bmUKTlNDQVBfQk9PTApvcGVyYXRvcj09KCBVKiBsaHMsIGNvbnN0IG5zQ09NUHRyPFQ+JiByaHMg
KQogIHsKICAgIHJldHVybiBzdGF0aWNfY2FzdDwgdm9pZCogPihsaHMpID09IHN0YXRpY19jYXN0
PCBjb25zdCB2b2lkKiA+KHJocy5nZXQoKSk7CiAgfQoKdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNz
IFU+CmlubGluZQpOU0NBUF9CT09MCm9wZXJhdG9yIT0oIGNvbnN0IG5zQ09NUHRyPFQ+JiBsaHMs
IFUqIHJocyApCiAgewogICAgcmV0dXJuIHN0YXRpY19jYXN0PCBjb25zdCB2b2lkKiA+KGxocy5n
ZXQoKSkgIT0gc3RhdGljX2Nhc3Q8IHZvaWQqID4ocmhzKTsKICB9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
VCwgY2xhc3MgVT4KaW5saW5lCk5TQ0FQX0JPT0wKb3BlcmF0b3IhPSggVSogbGhzLCBjb25zdCBu
c0NPTVB0cjxUPiYgcmhzICkKICB7CiAgICByZXR1cm4gc3RhdGljX2Nhc3Q8IHZvaWQqID4obGhz
KSAhPSBzdGF0aWNfY2FzdDwgY29uc3Qgdm9pZCogPihyaHMuZ2V0KCkpOwogIH0KCgoKCgoKY2xh
c3MgTlNDQVBfWmVybzsKCnRlbXBsYXRlIDxjbGFzcyBUPgppbmxpbmUKTlNDQVBfQk9PTApvcGVy
YXRvcj09KCBjb25zdCBuc0NPTVB0cjxUPiYgbGhzLCBOU0NBUF9aZXJvKiByaHMgKQoKICB7CiAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8IGNvbnN0IHZvaWQqID4obGhzLmdldCgpKSA9PSByZWludGVy
cHJldF9jYXN0PCBjb25zdCB2b2lkKiA+KHJocyk7CiAgfQoKdGVtcGxhdGUgPGNsYXNzIFQ+Cmlu
bGluZQpOU0NBUF9CT09MCm9wZXJhdG9yPT0oIE5TQ0FQX1plcm8qIGxocywgY29uc3QgbnNDT01Q
dHI8VD4mIHJocyApCgogIHsKICAgIHJldHVybiByZWludGVycHJldF9jYXN0PCBjb25zdCB2b2lk
KiA+KGxocykgPT0gc3RhdGljX2Nhc3Q8IGNvbnN0IHZvaWQqID4ocmhzLmdldCgpKTsKICB9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgVD4KaW5saW5lCk5TQ0FQX0JPT0wKb3BlcmF0b3IhPSggY29uc3QgbnND
T01QdHI8VD4mIGxocywgTlNDQVBfWmVybyogcmhzICkKCiAgewogICAgcmV0dXJuIHN0YXRpY19j
YXN0PCBjb25zdCB2b2lkKiA+KGxocy5nZXQoKSkgIT0gcmVpbnRlcnByZXRfY2FzdDwgY29uc3Qg
dm9pZCogPihyaHMpOwogIH0KCnRlbXBsYXRlIDxjbGFzcyBUPgppbmxpbmUKTlNDQVBfQk9PTApv
cGVyYXRvciE9KCBOU0NBUF9aZXJvKiBsaHMsIGNvbnN0IG5zQ09NUHRyPFQ+JiByaHMgKQoKICB7
CiAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDwgY29uc3Qgdm9pZCogPihsaHMpICE9IHN0YXRp
Y19jYXN0PCBjb25zdCB2b2lkKiA+KHJocy5nZXQoKSk7CiAgfQojIDEyNjAgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS94cGNvbS9uc0NPTVB0ci5oIgppbmxpbmUKTlNDQVBfQk9PTApTYW1lQ09NSWRl
bnRpdHkoIG5zSVN1cHBvcnRzKiBsaHMsIG5zSVN1cHBvcnRzKiByaHMgKQogIHsKICAgIHJldHVy
biBuc0NPTVB0cjxuc0lTdXBwb3J0cz4oIGRvX1F1ZXJ5SW50ZXJmYWNlKGxocykgKSA9PSBuc0NP
TVB0cjxuc0lTdXBwb3J0cz4oIGRvX1F1ZXJ5SW50ZXJmYWNlKHJocykgKTsKICB9CgoKCnRlbXBs
YXRlIDxjbGFzcyBTb3VyY2VUeXBlLCBjbGFzcyBEZXN0aW5hdGlvblR5cGU+CmlubGluZQpuc3Jl
c3VsdApDYWxsUXVlcnlJbnRlcmZhY2UoIG5zQ09NUHRyPFNvdXJjZVR5cGU+JiBhU291cmNlUHRy
LCBEZXN0aW5hdGlvblR5cGUqKiBhRGVzdFB0ciApCiAgewogICAgcmV0dXJuIENhbGxRdWVyeUlu
dGVyZmFjZShhU291cmNlUHRyLmdldCgpLCBhRGVzdFB0cik7CiAgfQojIDI5ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUveHBjb20vbnNDb21wb25lbnRNYW5hZ2VyVXRpbHMuaCIgMgoKCgojIDEgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0NvbXBvbmVudE1hbmFnZXJPYnNvbGV0ZS5oIiAx
CiMgNDAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0NvbXBvbmVudE1hbmFnZXJPYnNv
bGV0ZS5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb21wb25lbnRNYW5h
Z2VyLmgiIDEKIyA0MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zQ29tcG9uZW50TWFu
YWdlck9ic29sZXRlLmgiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJQ29t
cG9uZW50TWFuYWdlck9ic29sZXRlLmgiIDEKIyAxNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29tL25zSUNvbXBvbmVudE1hbmFnZXJPYnNvbGV0ZS5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS94cGNvbS9uc0lGYWN0b3J5LmgiIDEKIyAzMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29tL25zSUZhY3RvcnkuaCIKY2xhc3MgbnNJRmFjdG9yeSA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7
CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBu
c0lJRCBpaWQgPSB7MHgwMDAwMDAwMSwgMHgwMDAwLCAweDAwMDAsIHsgMHhjMCwgMHgwMCwgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NiB9fTsgcmV0dXJuIGlpZDt9CiMgNTMgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lGYWN0b3J5LmgiCiAgdmlydHVhbCBuc3Jlc3Vs
dCBDcmVhdGVJbnN0YW5jZShuc0lTdXBwb3J0cyAqYU91dGVyLCBjb25zdCBuc0lJRCAmIGlpZCwg
dm9pZCAqICpyZXN1bHQpID0gMDsKIyA2NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25z
SUZhY3RvcnkuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IExvY2tGYWN0b3J5KFBSQm9vbCBsb2NrKSA9
IDA7Cgp9OwojIDE1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJQ29tcG9uZW50TWFu
YWdlck9ic29sZXRlLmgiIDIKCgoKCgoKY2xhc3MgbnNJRmlsZTsKCmNsYXNzIG5zSUVudW1lcmF0
b3I7CiMgMzMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb21wb25lbnRNYW5hZ2Vy
T2Jzb2xldGUuaCIKY2xhc3MgbnNJQ29tcG9uZW50TWFuYWdlck9ic29sZXRlIDogcHVibGljIG5z
SVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3Rh
dGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDg0NThhNzQwLCAweGQ1ZGMsIDB4MTFkMiwgeyAweDky
LCAweGZiLCAweDAwLCAweGUwLCAweDk4LCAweDA1LCAweDU3LCAweDBmIH19OyByZXR1cm4gaWlk
O30KIyA0NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUNvbXBvbmVudE1hbmFnZXJP
YnNvbGV0ZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgRmluZEZhY3RvcnkoY29uc3QgbnNDSUQgJiBh
Q2xhc3MsIG5zSUZhY3RvcnkgKipfcmV0dmFsKSA9IDA7CiMgNTggIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS94cGNvbS9uc0lDb21wb25lbnRNYW5hZ2VyT2Jzb2xldGUuaCIKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldENsYXNzT2JqZWN0KGNvbnN0IG5zQ0lEICYgYUNsYXNzLCBjb25zdCBuc0lJRCAmIGFJ
SUQsIHZvaWQgKiAqX3JldHZhbCkgPSAwOwojIDcxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBj
b20vbnNJQ29tcG9uZW50TWFuYWdlck9ic29sZXRlLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBDb250
cmFjdElEVG9DbGFzc0lEKGNvbnN0IGNoYXIgKmFDb250cmFjdElELCBuc0NJRCAqYUNsYXNzKSA9
IDA7CiMgODQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb21wb25lbnRNYW5hZ2Vy
T2Jzb2xldGUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IENMU0lEVG9Db250cmFjdElEKGNvbnN0IG5z
Q0lEICYgYUNsYXNzLCBjaGFyICoqYUNsYXNzTmFtZSwgY2hhciAqKl9yZXR2YWwpID0gMDsKIyA5
NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUNvbXBvbmVudE1hbmFnZXJPYnNvbGV0
ZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgQ3JlYXRlSW5zdGFuY2UoY29uc3QgbnNDSUQgJiBhQ2xh
c3MsIG5zSVN1cHBvcnRzICphRGVsZWdhdGUsIGNvbnN0IG5zSUlEICYgYUlJRCwgdm9pZCAqICpf
cmV0dmFsKSA9IDA7CiMgMTEwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJQ29tcG9u
ZW50TWFuYWdlck9ic29sZXRlLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBDcmVhdGVJbnN0YW5jZUJ5
Q29udHJhY3RJRChjb25zdCBjaGFyICphQ29udHJhY3RJRCwgbnNJU3VwcG9ydHMgKmFEZWxlZ2F0
ZSwgY29uc3QgbnNJSUQgJiBJSUQsIHZvaWQgKiAqX3JldHZhbCkgPSAwOwojIDEyMiAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUNvbXBvbmVudE1hbmFnZXJPYnNvbGV0ZS5oIgogIHZp
cnR1YWwgbnNyZXN1bHQgUmVnaXN0cnlMb2NhdGlvbkZvclNwZWMobnNJRmlsZSAqYVNwZWMsIGNo
YXIgKipfcmV0dmFsKSA9IDA7CiMgMTMxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJ
Q29tcG9uZW50TWFuYWdlck9ic29sZXRlLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBTcGVjRm9yUmVn
aXN0cnlMb2NhdGlvbihjb25zdCBjaGFyICphTG9jYXRpb24sIG5zSUZpbGUgKipfcmV0dmFsKSA9
IDA7CiMgMTQ2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJQ29tcG9uZW50TWFuYWdl
ck9ic29sZXRlLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBSZWdpc3RlckZhY3RvcnkoY29uc3QgbnND
SUQgJiBhQ2xhc3MsIGNvbnN0IGNoYXIgKmFDbGFzc05hbWUsIGNvbnN0IGNoYXIgKmFDb250cmFj
dElELCBuc0lGYWN0b3J5ICphRmFjdG9yeSwgUFJCb29sIGFSZXBsYWNlKSA9IDA7CiMgMTY3ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJQ29tcG9uZW50TWFuYWdlck9ic29sZXRlLmgi
CiAgdmlydHVhbCBuc3Jlc3VsdCBSZWdpc3RlckNvbXBvbmVudChjb25zdCBuc0NJRCAmIGFDbGFz
cywgY29uc3QgY2hhciAqYUNsYXNzTmFtZSwgY29uc3QgY2hhciAqYUNvbnRyYWN0SUQsIGNvbnN0
IGNoYXIgKmFMb2NhdGlvbiwgUFJCb29sIGFSZXBsYWNlLCBQUkJvb2wgYVBlcnNpc3QpID0gMDsK
IyAxODkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb21wb25lbnRNYW5hZ2VyT2Jz
b2xldGUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFJlZ2lzdGVyQ29tcG9uZW50V2l0aFR5cGUoY29u
c3QgbnNDSUQgJiBhQ2xhc3MsIGNvbnN0IGNoYXIgKmFDbGFzc05hbWUsIGNvbnN0IGNoYXIgKmFD
b250cmFjdElELCBuc0lGaWxlICphU3BlYywgY29uc3QgY2hhciAqYUxvY2F0aW9uLCBQUkJvb2wg
YVJlcGxhY2UsIFBSQm9vbCBhUGVyc2lzdCwgY29uc3QgY2hhciAqYVR5cGUpID0gMDsKIyAyMDcg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb21wb25lbnRNYW5hZ2VyT2Jzb2xldGUu
aCIKICB2aXJ0dWFsIG5zcmVzdWx0IFJlZ2lzdGVyQ29tcG9uZW50U3BlYyhjb25zdCBuc0NJRCAm
IGFDbGFzcywgY29uc3QgY2hhciAqYUNsYXNzTmFtZSwgY29uc3QgY2hhciAqYUNvbnRyYWN0SUQs
IG5zSUZpbGUgKmFMaWJyYXJ5LCBQUkJvb2wgYVJlcGxhY2UsIFBSQm9vbCBhUGVyc2lzdCkgPSAw
OwojIDIyNiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUNvbXBvbmVudE1hbmFnZXJP
YnNvbGV0ZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgUmVnaXN0ZXJDb21wb25lbnRMaWIoY29uc3Qg
bnNDSUQgJiBhQ2xhc3MsIGNvbnN0IGNoYXIgKmFDbGFzc05hbWUsIGNvbnN0IGNoYXIgKmFDb250
cmFjdElELCBjb25zdCBjaGFyICphRGxsTmFtZSwgUFJCb29sIGFSZXBsYWNlLCBQUkJvb2wgYVBl
cnNpc3QpID0gMDsKIyAyMzggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb21wb25l
bnRNYW5hZ2VyT2Jzb2xldGUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFVucmVnaXN0ZXJGYWN0b3J5
KGNvbnN0IG5zQ0lEICYgYUNsYXNzLCBuc0lGYWN0b3J5ICphRmFjdG9yeSkgPSAwOwojIDI1MiAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUNvbXBvbmVudE1hbmFnZXJPYnNvbGV0ZS5o
IgogIHZpcnR1YWwgbnNyZXN1bHQgVW5yZWdpc3RlckNvbXBvbmVudChjb25zdCBuc0NJRCAmIGFD
bGFzcywgY29uc3QgY2hhciAqYUxvY2F0aW9uKSA9IDA7CiMgMjYxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUveHBjb20vbnNJQ29tcG9uZW50TWFuYWdlck9ic29sZXRlLmgiCiAgdmlydHVhbCBuc3Jl
c3VsdCBVbnJlZ2lzdGVyQ29tcG9uZW50U3BlYyhjb25zdCBuc0NJRCAmIGFDbGFzcywgbnNJRmls
ZSAqYUxpYnJhcnlTcGVjKSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgRnJlZUxpYnJh
cmllcyh2b2lkKSA9IDA7CgoKCgogIGVudW0geyBOU19TdGFydHVwID0gMCB9OwoKICBlbnVtIHsg
TlNfU2NyaXB0ID0gMSB9OwoKICBlbnVtIHsgTlNfVGltZXIgPSAyIH07CgogIGVudW0geyBOU19T
aHV0ZG93biA9IDMgfTsKIyAyOTMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb21w
b25lbnRNYW5hZ2VyT2Jzb2xldGUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEF1dG9SZWdpc3RlcihQ
UkludDMyIHdoZW4sIG5zSUZpbGUgKmRpcmVjdG9yeSkgPSAwOwojIDMwNiAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL3hwY29tL25zSUNvbXBvbmVudE1hbmFnZXJPYnNvbGV0ZS5oIgogIHZpcnR1YWwg
bnNyZXN1bHQgQXV0b1JlZ2lzdGVyQ29tcG9uZW50KFBSSW50MzIgd2hlbiwgbnNJRmlsZSAqYUZp
bGVMb2NhdGlvbikgPSAwOwojIDMxNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUNv
bXBvbmVudE1hbmFnZXJPYnNvbGV0ZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgQXV0b1VucmVnaXN0
ZXJDb21wb25lbnQoUFJJbnQzMiB3aGVuLCBuc0lGaWxlICphRmlsZUxvY2F0aW9uKSA9IDA7CiMg
MzI3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJQ29tcG9uZW50TWFuYWdlck9ic29s
ZXRlLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBJc1JlZ2lzdGVyZWQoY29uc3QgbnNDSUQgJiBhQ2xh
c3MsIFBSQm9vbCAqX3JldHZhbCkgPSAwOwojIDMzNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29tL25zSUNvbXBvbmVudE1hbmFnZXJPYnNvbGV0ZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgRW51
bWVyYXRlQ0xTSURzKG5zSUVudW1lcmF0b3IgKipfcmV0dmFsKSA9IDA7CiMgMzQ3ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUveHBjb20vbnNJQ29tcG9uZW50TWFuYWdlck9ic29sZXRlLmgiCiAgdmly
dHVhbCBuc3Jlc3VsdCBFbnVtZXJhdGVDb250cmFjdElEcyhuc0lFbnVtZXJhdG9yICoqX3JldHZh
bCkgPSAwOwoKfTsKIyA1OTkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb21wb25l
bnRNYW5hZ2VyT2Jzb2xldGUuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnND
b21wb25lbnRNYW5hZ2VyVXRpbHMuaCIgMQojIDYwMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29tL25zSUNvbXBvbmVudE1hbmFnZXJPYnNvbGV0ZS5oIiAyCiMgNDIgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS94cGNvbS9uc0NvbXBvbmVudE1hbmFnZXJPYnNvbGV0ZS5oIiAyCgpjbGFzcyBuc0lF
bnVtZXJhdG9yOwpjbGFzcyBuc0lGYWN0b3J5OwpjbGFzcyBuc0lGaWxlOwojIDY4ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUveHBjb20vbnNDb21wb25lbnRNYW5hZ2VyT2Jzb2xldGUuaCIKZXh0ZXJu
IG5zcmVzdWx0Ck5TX0dldEdsb2JhbENvbXBvbmVudE1hbmFnZXIobnNJQ29tcG9uZW50TWFuYWdl
ciogKnJlc3VsdCk7CgoKCgpjbGFzcyBuc0NvbXBvbmVudE1hbmFnZXIgewpwdWJsaWM6CiAgc3Rh
dGljIG5zcmVzdWx0IEluaXRpYWxpemUodm9pZCk7CgoKICBzdGF0aWMgbnNyZXN1bHQgRmluZEZh
Y3RvcnkoY29uc3QgbnNDSUQgJmFDbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnNJRmFjdG9yeSAqKmFGYWN0b3J5KTsKCgogIHN0YXRpYyBuc3Jlc3VsdCBHZXRDbGFzc09iamVj
dChjb25zdCBuc0NJRCAmYUNsYXNzLCBjb25zdCBuc0lJRCAmYUlJRCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm9pZCAqKmFSZXN1bHQpOwoKCiAgc3RhdGljIG5zcmVzdWx0IENv
bnRyYWN0SURUb0NsYXNzSUQoY29uc3QgY2hhciAqYUNvbnRyYWN0SUQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnNDSUQgKmFDbGFzcyk7CgoKCiAgc3RhdGljIG5zcmVzdWx0IENM
U0lEVG9Db250cmFjdElEKG5zQ0lEICphQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciogKmFDbGFzc05hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciogKmFDb250cmFjdElEKTsKCgogIHN0YXRpYyBuc3Jlc3VsdCBDcmVhdGVJbnN0YW5jZShj
b25zdCBuc0NJRCAmYUNsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lT
dXBwb3J0cyAqYURlbGVnYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBuc0lJRCAmYUlJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKmFS
ZXN1bHQpOwoKCiAgc3RhdGljIG5zcmVzdWx0IENyZWF0ZUluc3RhbmNlKGNvbnN0IGNoYXIgKmFD
b250cmFjdElELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdXBwb3J0cyAq
YURlbGVnYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuc0lJRCAm
YUlJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKmFSZXN1bHQpOwoK
CiAgc3RhdGljIG5zcmVzdWx0IFJlZ2lzdGVyRmFjdG9yeShjb25zdCBuc0NJRCAmYUNsYXNzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYUNsYXNzTmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmFDb250cmFjdElE
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJRmFjdG9yeSAqYUZhY3Rvcnks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkJvb2wgYVJlcGxhY2UpOwojIDEy
MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zQ29tcG9uZW50TWFuYWdlck9ic29sZXRl
LmgiCiAgc3RhdGljIG5zcmVzdWx0IFJlZ2lzdGVyQ29tcG9uZW50KGNvbnN0IG5zQ0lEICZhQ2xh
c3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICphQ2xhc3NOYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYUNvbnRyYWN0SUQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICphTGlicmFyeVBlcnNp
c3RlbnREZXNjcmlwdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJCb29sIGFS
ZXBsYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJCb29sIGFQZXJzaXN0KTsK
CgoKICBzdGF0aWMgbnNyZXN1bHQgUmVnaXN0ZXJDb21wb25lbnRTcGVjKGNvbnN0IG5zQ0lEICZh
Q2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYUNs
YXNzTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICph
Q29udHJhY3RJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lGaWxlICph
TGlicmFyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkJvb2wgYVJlcGxh
Y2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJCb29sIGFQZXJzaXN0KTsK
CgoKCiAgc3RhdGljIG5zcmVzdWx0IFJlZ2lzdGVyQ29tcG9uZW50TGliKGNvbnN0IG5zQ0lEICZh
Q2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
KmFDbGFzc05hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKmFDb250cmFjdElELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyICphZGxsTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUFJCb29sIGFSZXBsYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQUkJvb2wgYVBlcnNpc3QpOwoKCgogIHN0YXRpYyBuc3Jlc3VsdCBVbnJlZ2lzdGVyRmFj
dG9yeShjb25zdCBuc0NJRCAmYUNsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuc0lGYWN0b3J5ICphRmFjdG9yeSk7CgoKICBzdGF0aWMgbnNyZXN1bHQgVW5yZWdpc3Rl
ckNvbXBvbmVudChjb25zdCBuc0NJRCAmYUNsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmFMaWJyYXJ5KTsKCgogIHN0YXRpYyBuc3Jlc3VsdCBV
bnJlZ2lzdGVyQ29tcG9uZW50U3BlYyhjb25zdCBuc0NJRCAmYUNsYXNzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lGaWxlICphTGlicmFyeVNwZWMpOwoKCiAg
c3RhdGljIG5zcmVzdWx0IEZyZWVMaWJyYXJpZXModm9pZCk7CgoKCgoKICBzdGF0aWMgbnNyZXN1
bHQgQXV0b1JlZ2lzdGVyKFBSSW50MzIgd2hlbiwgbnNJRmlsZSogZGlyZWN0b3J5KTsKICBzdGF0
aWMgbnNyZXN1bHQgQXV0b1JlZ2lzdGVyQ29tcG9uZW50KFBSSW50MzIgd2hlbiwgbnNJRmlsZSAq
Y29tcG9uZW50KTsKICBzdGF0aWMgbnNyZXN1bHQgQXV0b1VucmVnaXN0ZXJDb21wb25lbnQoUFJJ
bnQzMiB3aGVuLCBuc0lGaWxlICpjb21wb25lbnQpOwoKCiAgc3RhdGljIG5zcmVzdWx0IElzUmVn
aXN0ZXJlZChjb25zdCBuc0NJRCAmYUNsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUFJCb29sICphUmVnaXN0ZXJlZCk7CgoKICBzdGF0aWMgbnNyZXN1bHQgRW51bWVyYXRlQ0xT
SURzKG5zSUVudW1lcmF0b3IqKiBhRW11bWVyYXRvcik7CgoKICBzdGF0aWMgbnNyZXN1bHQgRW51
bWVyYXRlQ29udHJhY3RJRHMobnNJRW51bWVyYXRvcioqIGFFbXVtZXJhdG9yKTsKCn07CiMgMzMg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0NvbXBvbmVudE1hbmFnZXJVdGlscy5oIiAy
CiMgNDMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0NvbXBvbmVudE1hbmFnZXJVdGls
cy5oIgpjbGFzcyBuc0NyZWF0ZUluc3RhbmNlQnlDSUQgOiBwdWJsaWMgbnNDT01QdHJfaGVscGVy
CnsKcHVibGljOgogICAgbnNDcmVhdGVJbnN0YW5jZUJ5Q0lEKCBjb25zdCBuc0NJRCYgYUNJRCwg
bnNJU3VwcG9ydHMqIGFPdXRlciwgbnNyZXN1bHQqIGFFcnJvclB0ciApCiAgICAgICAgOiBtQ0lE
KGFDSUQpLAogICAgICAgICAgbU91dGVyKGFPdXRlciksCiAgICAgICAgICBtRXJyb3JQdHIoYUVy
cm9yUHRyKQogICAgewoKICAgIH0KCiAgICB2aXJ0dWFsIG5zcmVzdWx0IG9wZXJhdG9yKCkoIGNv
bnN0IG5zSUlEJiwgdm9pZCoqICkgY29uc3Q7Cgpwcml2YXRlOgogICAgY29uc3QgbnNDSUQmIG1D
SUQ7CiAgICBuc0lTdXBwb3J0cyogbU91dGVyOwogICAgbnNyZXN1bHQqIG1FcnJvclB0cjsKfTsK
CmNsYXNzIG5zQ3JlYXRlSW5zdGFuY2VCeUNvbnRyYWN0SUQgOiBwdWJsaWMgbnNDT01QdHJfaGVs
cGVyCnsKcHVibGljOgogICAgbnNDcmVhdGVJbnN0YW5jZUJ5Q29udHJhY3RJRCggY29uc3QgY2hh
ciogYUNvbnRyYWN0SUQsIG5zSVN1cHBvcnRzKiBhT3V0ZXIsIG5zcmVzdWx0KiBhRXJyb3JQdHIg
KQogICAgICAgIDogbUNvbnRyYWN0SUQoYUNvbnRyYWN0SUQpLAogICAgICAgICAgbU91dGVyKGFP
dXRlciksCiAgICAgICAgICBtRXJyb3JQdHIoYUVycm9yUHRyKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgIHZp
cnR1YWwgbnNyZXN1bHQgb3BlcmF0b3IoKSggY29uc3QgbnNJSUQmLCB2b2lkKiogKSBjb25zdDsK
CnByaXZhdGU6CiAgICBjb25zdCBjaGFyKiBtQ29udHJhY3RJRDsKICAgIG5zSVN1cHBvcnRzKiBt
T3V0ZXI7CiAgICBuc3Jlc3VsdCogbUVycm9yUHRyOwp9OwoKaW5saW5lCmNvbnN0IG5zQ3JlYXRl
SW5zdGFuY2VCeUNJRApkb19DcmVhdGVJbnN0YW5jZSggY29uc3QgbnNDSUQmIGFDSUQsIG5zcmVz
dWx0KiBlcnJvciA9IDAgKQp7CiAgICByZXR1cm4gbnNDcmVhdGVJbnN0YW5jZUJ5Q0lEKGFDSUQs
IDAsIGVycm9yKTsKfQoKaW5saW5lCmNvbnN0IG5zQ3JlYXRlSW5zdGFuY2VCeUNJRApkb19DcmVh
dGVJbnN0YW5jZSggY29uc3QgbnNDSUQmIGFDSUQsIG5zSVN1cHBvcnRzKiBhT3V0ZXIsIG5zcmVz
dWx0KiBlcnJvciA9IDAgKQp7CiAgICByZXR1cm4gbnNDcmVhdGVJbnN0YW5jZUJ5Q0lEKGFDSUQs
IGFPdXRlciwgZXJyb3IpOwp9CgppbmxpbmUKY29uc3QgbnNDcmVhdGVJbnN0YW5jZUJ5Q29udHJh
Y3RJRApkb19DcmVhdGVJbnN0YW5jZSggY29uc3QgY2hhciogYUNvbnRyYWN0SUQsIG5zcmVzdWx0
KiBlcnJvciA9IDAgKQp7CiAgICByZXR1cm4gbnNDcmVhdGVJbnN0YW5jZUJ5Q29udHJhY3RJRChh
Q29udHJhY3RJRCwgMCwgZXJyb3IpOwp9CgppbmxpbmUKY29uc3QgbnNDcmVhdGVJbnN0YW5jZUJ5
Q29udHJhY3RJRApkb19DcmVhdGVJbnN0YW5jZSggY29uc3QgY2hhciogYUNvbnRyYWN0SUQsIG5z
SVN1cHBvcnRzKiBhT3V0ZXIsIG5zcmVzdWx0KiBlcnJvciA9IDAgKQp7CiAgICByZXR1cm4gbnND
cmVhdGVJbnN0YW5jZUJ5Q29udHJhY3RJRChhQ29udHJhY3RJRCwgYU91dGVyLCBlcnJvcik7Cn0K
Cgp0ZW1wbGF0ZSA8Y2xhc3MgRGVzdGluYXRpb25UeXBlPgppbmxpbmUKbnNyZXN1bHQKQ2FsbENy
ZWF0ZUluc3RhbmNlKCBjb25zdCBuc0NJRCAmYUNsYXNzLAogICAgICAgICAgICAgICAgICAgIG5z
SVN1cHBvcnRzICphRGVsZWdhdGUsCiAgICAgICAgICAgICAgICAgICAgRGVzdGluYXRpb25UeXBl
KiogYURlc3RpbmF0aW9uICkKewogICAgOwoKICAgIHJldHVybiBuc0NvbXBvbmVudE1hbmFnZXI6
OkNyZWF0ZUluc3RhbmNlKGFDbGFzcywgYURlbGVnYXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnNDT01UeXBlSW5mbzxEZXN0aW5hdGlvblR5cGU+OjpH
ZXRJSUQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8IHZvaWQqKiA+KGFEZXN0aW5hdGlvbikpOwp9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgRGVzdGluYXRpb25UeXBlPgppbmxpbmUKbnNyZXN1bHQKQ2FsbENyZWF0ZUluc3RhbmNlKCBj
b25zdCBuc0NJRCAmYUNsYXNzLAogICAgICAgICAgICAgICAgICAgIERlc3RpbmF0aW9uVHlwZSoq
IGFEZXN0aW5hdGlvbiApCnsKICAgIDsKCiAgICByZXR1cm4gbnNDb21wb25lbnRNYW5hZ2VyOjpD
cmVhdGVJbnN0YW5jZShhQ2xhc3MsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuc0NPTVR5cGVJbmZvPERlc3RpbmF0aW9uVHlwZT46OkdldElJRCgpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDwgdm9pZCoqID4oYURlc3RpbmF0aW9uKSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBEZXN0aW5h
dGlvblR5cGU+CmlubGluZQpuc3Jlc3VsdApDYWxsQ3JlYXRlSW5zdGFuY2UoIGNvbnN0IGNoYXIg
KmFDb250cmFjdElELAogICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzICphRGVsZWdhdGUs
CiAgICAgICAgICAgICAgICAgICAgRGVzdGluYXRpb25UeXBlKiogYURlc3RpbmF0aW9uICkKewog
ICAgOwogICAgOwoKICAgIHJldHVybiBuc0NvbXBvbmVudE1hbmFnZXI6OkNyZWF0ZUluc3RhbmNl
KGFDb250cmFjdElELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYURlbGVnYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnNDT01UeXBlSW5mbzxEZXN0aW5hdGlvblR5cGU+OjpHZXRJSUQoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8IHZvaWQq
KiA+KGFEZXN0aW5hdGlvbikpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgRGVzdGluYXRpb25UeXBlPgpp
bmxpbmUKbnNyZXN1bHQKQ2FsbENyZWF0ZUluc3RhbmNlKCBjb25zdCBjaGFyICphQ29udHJhY3RJ
RCwKICAgICAgICAgICAgICAgICAgICBEZXN0aW5hdGlvblR5cGUqKiBhRGVzdGluYXRpb24gKQp7
CiAgICA7CiAgICA7CgogICAgcmV0dXJuIG5zQ29tcG9uZW50TWFuYWdlcjo6Q3JlYXRlSW5zdGFu
Y2UoYUNvbnRyYWN0SUQsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuc0NPTVR5cGVJbmZvPERlc3RpbmF0aW9uVHlwZT46OkdldElJRCgpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDwg
dm9pZCoqID4oYURlc3RpbmF0aW9uKSk7Cn0KCgpleHRlcm4gY29uc3QgY2hhciB4cGNvbUtleU5h
bWVbXTsKZXh0ZXJuIGNvbnN0IGNoYXIgeHBjb21Db21wb25lbnRzS2V5TmFtZVtdOwpleHRlcm4g
Y29uc3QgY2hhciBsYXN0TW9kVmFsdWVOYW1lW107CmV4dGVybiBjb25zdCBjaGFyIGZpbGVTaXpl
VmFsdWVOYW1lW107CmV4dGVybiBjb25zdCBjaGFyIG5hdGl2ZUNvbXBvbmVudFR5cGVbXTsKZXh0
ZXJuIGNvbnN0IGNoYXIgc3RhdGljQ29tcG9uZW50VHlwZVtdOwojIDE1OSAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL3hwY29tL25zSUNvbXBvbmVudE1hbmFnZXIuaCIgMgojIDIzICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUveHBjb25uZWN0L3hwY2NvbXBvbmVudHMuaCIgMgoKCgojIDEgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS94cGNvbm5lY3QvbnNJU2NyaXB0YWJsZUludGVyZmFjZXMuaCIgMQojIDE0
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb25uZWN0L25zSVNjcmlwdGFibGVJbnRlcmZhY2Vz
LmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUludGVyZmFjZUluZm9NYW5h
Z2VyLmgiIDEKIyAxNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUludGVyZmFjZUlu
Zm9NYW5hZ2VyLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUludGVyZmFj
ZUluZm8uaCIgMQojIDE3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJSW50ZXJmYWNl
SW5mby5oIgpjbGFzcyBuc1hQVE1ldGhvZEluZm87CmNsYXNzIG5zWFBUQ29uc3RhbnQ7CmNsYXNz
IG5zWFBUUGFyYW1JbmZvOwpjbGFzcyBuc1hQVFR5cGU7CiMgMjkgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS94cGNvbS9uc0lJbnRlcmZhY2VJbmZvLmgiCmNsYXNzIG5zSUludGVyZmFjZUluZm8gOiBw
dWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJ
RCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4MjE1ZGJlMDQsIDB4OTRhNywgMHgxMWQy
LCB7IDB4YmEsIDB4NTgsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4NWQsIDB4ZDcgfX07IHJl
dHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROYW1lKGNoYXIgKiAqYU5hbWUpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SW50ZXJmYWNlSUlEKG5zSUlEICogKmFJbnRlcmZh
Y2VJSUQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSXNTY3JpcHRhYmxlKFBSQm9vbCAqX3Jl
dHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQYXJlbnQobnNJSW50ZXJmYWNlSW5m
byAqICphUGFyZW50KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1ldGhvZENvdW50
KFBSVWludDE2ICphTWV0aG9kQ291bnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29u
c3RhbnRDb3VudChQUlVpbnQxNiAqYUNvbnN0YW50Q291bnQpID0gMDsKCgoKCgoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRNZXRob2RJbmZvKFBSVWludDE2IGluZGV4LCBjb25zdCBuc1hQVE1ldGhv
ZEluZm8gKiAqaW5mbykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNZXRob2RJbmZvRm9y
TmFtZShjb25zdCBjaGFyICptZXRob2ROYW1lLCBQUlVpbnQxNiAqaW5kZXgsIGNvbnN0IG5zWFBU
TWV0aG9kSW5mbyAqICppbmZvKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbnN0YW50
KFBSVWludDE2IGluZGV4LCBjb25zdCBuc1hQVENvbnN0YW50ICogKmNvbnN0YW50KSA9IDA7CgoK
CgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRJbmZvRm9yUGFyYW0oUFJVaW50MTYgbWV0aG9kSW5k
ZXgsIGNvbnN0IG5zWFBUUGFyYW1JbmZvICogcGFyYW0sIG5zSUludGVyZmFjZUluZm8gKipfcmV0
dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldElJREZvclBhcmFtKFBSVWludDE2IG1l
dGhvZEluZGV4LCBjb25zdCBuc1hQVFBhcmFtSW5mbyAqIHBhcmFtLCBuc0lJRCAqICpfcmV0dmFs
KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFR5cGVGb3JQYXJhbShQUlVpbnQxNiBt
ZXRob2RJbmRleCwgY29uc3QgbnNYUFRQYXJhbUluZm8gKiBwYXJhbSwgUFJVaW50MTYgZGltZW5z
aW9uLCBuc1hQVFR5cGUgKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2l6
ZUlzQXJnTnVtYmVyRm9yUGFyYW0oUFJVaW50MTYgbWV0aG9kSW5kZXgsIGNvbnN0IG5zWFBUUGFy
YW1JbmZvICogcGFyYW0sIFBSVWludDE2IGRpbWVuc2lvbiwgUFJVaW50OCAqX3JldHZhbCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMZW5ndGhJc0FyZ051bWJlckZvclBhcmFtKFBSVWlu
dDE2IG1ldGhvZEluZGV4LCBjb25zdCBuc1hQVFBhcmFtSW5mbyAqIHBhcmFtLCBQUlVpbnQxNiBk
aW1lbnNpb24sIFBSVWludDggKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
SW50ZXJmYWNlSXNBcmdOdW1iZXJGb3JQYXJhbShQUlVpbnQxNiBtZXRob2RJbmRleCwgY29uc3Qg
bnNYUFRQYXJhbUluZm8gKiBwYXJhbSwgUFJVaW50OCAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBJc0lJRChjb25zdCBuc0lJRCAqIElJRCwgUFJCb29sICpfcmV0dmFsKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5hbWVTaGFyZWQoY29uc3QgY2hhciAqKm5hbWUpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SUlEU2hhcmVkKGNvbnN0IG5zSUlEICogKmlpZCkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJc0Z1bmN0aW9uKFBSQm9vbCAqX3JldHZhbCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBIYXNBbmNlc3Rvcihjb25zdCBuc0lJRCAqIGlpZCwgUFJC
b29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldElJREZvclBhcmFtTm9B
bGxvYyhQUlVpbnQxNiBtZXRob2RJbmRleCwgY29uc3QgbnNYUFRQYXJhbUluZm8gKiBwYXJhbSwg
bnNJSUQgKmlpZCkgPSAwOwoKfTsKIyAxNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25z
SUludGVyZmFjZUluZm9NYW5hZ2VyLmgiIDIKCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
eHBjb20vbnNJRW51bWVyYXRvci5oIiAxCiMgMTAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNv
bS9uc0lFbnVtZXJhdG9yLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVNp
bXBsZUVudW1lcmF0b3IuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJ
U2ltcGxlRW51bWVyYXRvci5oIgpjbGFzcyBuc0lTaW1wbGVFbnVtZXJhdG9yIDogcHVibGljIG5z
SVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3Rh
dGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGQxODk5MjQwLCAweGY5ZDIsIDB4MTFkMiwgeyAweGJk
LCAweGQ2LCAweDAwLCAweDAwLCAweDY0LCAweDY1LCAweDczLCAweDc0IH19OyByZXR1cm4gaWlk
O30KIyA1MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVNpbXBsZUVudW1lcmF0b3Iu
aCIKICB2aXJ0dWFsIG5zcmVzdWx0IEhhc01vcmVFbGVtZW50cyhQUkJvb2wgKl9yZXR2YWwpID0g
MDsKIyA2OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVNpbXBsZUVudW1lcmF0b3Iu
aCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5leHQobnNJU3VwcG9ydHMgKipfcmV0dmFsKSA9IDA7
Cgp9OwojIDExICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJRW51bWVyYXRvci5oIiAy
CgoKCgoKCgpleHRlcm4gIkMiIG5zcmVzdWx0Ck5TX05ld0VtcHR5RW51bWVyYXRvcihuc0lTaW1w
bGVFbnVtZXJhdG9yKiogYVJlc3VsdCk7CiMgMjggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNv
bS9uc0lFbnVtZXJhdG9yLmgiCmNsYXNzIG5zSUVudW1lcmF0b3IgOiBwdWJsaWMgbnNJU3VwcG9y
dHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29u
c3QgbnNJSUQgaWlkID0gezB4YWQzODUyODYsIDB4Y2JjNCwgMHgxMWQyLCB7IDB4OGMsIDB4Y2Es
IDB4MDAsIDB4NjAsIDB4YjAsIDB4ZmMsIDB4MTQsIDB4YTMgfX07IHJldHVybiBpaWQ7fQoKCgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEZpcnN0KHZvaWQpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBOZXh0KHZvaWQpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ3VycmVudEl0ZW0obnNJ
U3VwcG9ydHMgKipfcmV0dmFsKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IElzRG9uZSh2
b2lkKSA9IDA7Cgp9OwojIDE0MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUVudW1l
cmF0b3IuaCIKY2xhc3MgbnNJQmlkaXJlY3Rpb25hbEVudW1lcmF0b3IgOiBwdWJsaWMgbnNJRW51
bWVyYXRvciB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRp
YyBjb25zdCBuc0lJRCBpaWQgPSB7MHg3NWYxNThhMCwgMHhjYWRkLCAweDExZDIsIHsgMHg4Yywg
MHhjYSwgMHgwMCwgMHg2MCwgMHhiMCwgMHhmYywgMHgxNCwgMHhhMyB9fTsgcmV0dXJuIGlpZDt9
CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgTGFzdCh2b2lkKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgUHJldih2b2lkKSA9IDA7Cgp9OwojIDE5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBj
b20vbnNJSW50ZXJmYWNlSW5mb01hbmFnZXIuaCIgMgojIDM3ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUveHBjb20vbnNJSW50ZXJmYWNlSW5mb01hbmFnZXIuaCIKY2xhc3MgbnNJSW50ZXJmYWNlSW5m
b01hbmFnZXIgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3Qg
bnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4OGIxNjE5MDAsIDB4
YmUyYiwgMHgxMWQyLCB7IDB4OTgsIDB4MzEsIDB4MDAsIDB4NjAsIDB4MDgsIDB4OTYsIDB4MjQs
IDB4MjIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRJbmZvRm9ySUlE
KGNvbnN0IG5zSUlEICogaWlkLCBuc0lJbnRlcmZhY2VJbmZvICoqX3JldHZhbCkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRJbmZvRm9yTmFtZShjb25zdCBjaGFyICpuYW1lLCBuc0lJbnRl
cmZhY2VJbmZvICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRJSURGb3JO
YW1lKGNvbnN0IGNoYXIgKm5hbWUsIG5zSUlEICogKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0TmFtZUZvcklJRChjb25zdCBuc0lJRCAqIGlpZCwgY2hhciAqKl9yZXR2YWwp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgRW51bWVyYXRlSW50ZXJmYWNlcyhuc0lFbnVtZXJh
dG9yICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBBdXRvUmVnaXN0ZXJJbnRl
cmZhY2VzKHZvaWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgRW51bWVyYXRlSW50ZXJmYWNl
c1dob3NlTmFtZXNTdGFydFdpdGgoY29uc3QgY2hhciAqcHJlZml4LCBuc0lFbnVtZXJhdG9yICoq
X3JldHZhbCkgPSAwOwoKfTsKIyAxNzYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lJ
bnRlcmZhY2VJbmZvTWFuYWdlci5oIgpjbGFzcyBuc0lJbnRlcmZhY2VJbmZvU3VwZXJNYW5hZ2Vy
IDogcHVibGljIG5zSUludGVyZmFjZUluZm9NYW5hZ2VyIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNv
bnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDBlZTIyODUw
LCAweGJjNmEsIDB4MTFkNSwgeyAweDkxLCAweDM0LCAweDAwLCAweDEwLCAweGE0LCAweGU3LCAw
eDNkLCAweDlhIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgQWRkQWRkaXRp
b25hbE1hbmFnZXIobnNJSW50ZXJmYWNlSW5mb01hbmFnZXIgKm1hbmFnZXIpID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgUmVtb3ZlQWRkaXRpb25hbE1hbmFnZXIobnNJSW50ZXJmYWNlSW5mb01h
bmFnZXIgKm1hbmFnZXIpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSGFzQWRkaXRpb25hbE1h
bmFnZXJzKFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBFbnVtZXJh
dGVBZGRpdGlvbmFsTWFuYWdlcnMobnNJU2ltcGxlRW51bWVyYXRvciAqKl9yZXR2YWwpID0gMDsK
Cn07CiMgMTUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbm5lY3QvbnNJU2NyaXB0YWJsZUlu
dGVyZmFjZXMuaCIgMgojIDMzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb25uZWN0L25zSVNj
cmlwdGFibGVJbnRlcmZhY2VzLmgiCmNsYXNzIG5zSVNjcmlwdGFibGVJbnRlcmZhY2VzIDogcHVi
bGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQo
KSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDAxYzc4YzY1LCAweDMxZGEsIDB4NDU2Yiwg
eyAweDkwLCAweGJmLCAweGRhLCAweDM5LCAweGQwLCAweDlmLCAweGRjLCAweGJmIH19OyByZXR1
cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TWFuYWdlcihuc0lJbnRlcmZhY2VJbmZv
TWFuYWdlciAqICphTWFuYWdlcikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TWFuYWdlcihu
c0lJbnRlcmZhY2VJbmZvTWFuYWdlciAqIGFNYW5hZ2VyKSA9IDA7Cgp9OwojIDI3ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUveHBjb25uZWN0L3hwY2NvbXBvbmVudHMuaCIgMgojIDQ1ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUveHBjb25uZWN0L3hwY2NvbXBvbmVudHMuaCIKY2xhc3MgbnNJWFBDQ29t
cG9uZW50c19DbGFzc2VzIDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGlj
IGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDk3OGZm
NTIwLCAweGQyNmMsIDB4MTFkMiwgeyAweDk4LCAweDQyLCAweDAwLCAweDYwLCAweDA4LCAweDk2
LCAweDI0LCAweDIyIH19OyByZXR1cm4gaWlkO30KCn07CiMgMTA3ICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUveHBjb25uZWN0L3hwY2NvbXBvbmVudHMuaCIKY2xhc3MgbnNJWFBDQ29tcG9uZW50c19D
bGFzc2VzQnlJRCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25z
dCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgzMzZhOTU5MCwg
MHg0ZDE5LCAweDExZDMsIHsgMHg5OCwgMHg5MywgMHgwMCwgMHg2MCwgMHgwOCwgMHg5NiwgMHgy
NCwgMHgyMiB9fTsgcmV0dXJuIGlpZDt9Cgp9OwojIDE2OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3hwY29ubmVjdC94cGNjb21wb25lbnRzLmgiCmNsYXNzIG5zSVhQQ0NvbXBvbmVudHNfUmVzdWx0
cyA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYg
R2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgyZmMyMjlhMCwgMHg1ODYwLCAw
eDExZDMsIHsgMHg5OCwgMHg5OSwgMHgwMCwgMHg2MCwgMHgwOCwgMHg5NiwgMHgyNCwgMHgyMiB9
fTsgcmV0dXJuIGlpZDt9Cgp9OwojIDIzMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29ubmVj
dC94cGNjb21wb25lbnRzLmgiCmNsYXNzIG5zSVhQQ0NvbXBvbmVudHNfSUQgOiBwdWJsaWMgbnNJ
U3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0
aWMgY29uc3QgbnNJSUQgaWlkID0gezB4Nzk5NGE2ZTAsIDB4ZTAyOCwgMHgxMWQzLCB7IDB4OGYs
IDB4NWQsIDB4MDAsIDB4MTAsIDB4YTQsIDB4ZTcsIDB4M2QsIDB4OWEgfX07IHJldHVybiBpaWQ7
fQoKfTsKIyAyOTMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbm5lY3QveHBjY29tcG9uZW50
cy5oIgpjbGFzcyBuc0lYUENDb21wb25lbnRzX0V4Y2VwdGlvbiA6IHB1YmxpYyBuc0lTdXBwb3J0
cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25z
dCBuc0lJRCBpaWQgPSB7MHg1YmYwMzljMCwgMHhlMDI4LCAweDExZDMsIHsgMHg4ZiwgMHg1ZCwg
MHgwMCwgMHgxMCwgMHhhNCwgMHhlNywgMHgzZCwgMHg5YSB9fTsgcmV0dXJuIGlpZDt9Cgp9Owoj
IDM1NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29ubmVjdC94cGNjb21wb25lbnRzLmgiCmNs
YXNzIG5zSVhQQ0NvbXBvbmVudHNfQ29uc3RydWN0b3IgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewog
cHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJ
SUQgaWlkID0gezB4ODg2NTU2NDAsIDB4ZTAyOCwgMHgxMWQzLCB7IDB4OGYsIDB4NWQsIDB4MDAs
IDB4MTAsIDB4YTQsIDB4ZTcsIDB4M2QsIDB4OWEgfX07IHJldHVybiBpaWQ7fQoKfTsKIyA0MTcg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbm5lY3QveHBjY29tcG9uZW50cy5oIgpjbGFzcyBu
c0lYUENDb25zdHJ1Y3RvciA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRp
YyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhjODE0
Y2EyMCwgMHhlMGRjLCAweDExZDMsIHsgMHg4ZiwgMHg1ZiwgMHgwMCwgMHgxMCwgMHhhNCwgMHhl
NywgMHgzZCwgMHg5YSB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENs
YXNzSUQobnNJSlNDSUQgKiAqYUNsYXNzSUQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
SW50ZXJmYWNlSUQobnNJSlNJSUQgKiAqYUludGVyZmFjZUlEKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldEluaXRpYWxpemVyKGNoYXIgKiAqYUluaXRpYWxpemVyKSA9IDA7Cgp9OwojIDUx
MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29ubmVjdC94cGNjb21wb25lbnRzLmgiCmNsYXNz
IG5zSVhQQ0NvbXBvbmVudHMgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0
aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4NDI2
MjRmODAsIDB4ZDI2YywgMHgxMWQyLCB7IDB4OTgsIDB4NDIsIDB4MDAsIDB4NjAsIDB4MDgsIDB4
OTYsIDB4MjQsIDB4MjIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRJ
bnRlcmZhY2VzKG5zSVNjcmlwdGFibGVJbnRlcmZhY2VzICogKmFJbnRlcmZhY2VzKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldENsYXNzZXMobnNJWFBDQ29tcG9uZW50c19DbGFzc2VzICog
KmFDbGFzc2VzKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENsYXNzZXNCeUlEKG5zSVhQ
Q0NvbXBvbmVudHNfQ2xhc3Nlc0J5SUQgKiAqYUNsYXNzZXNCeUlEKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldFN0YWNrKG5zSVN0YWNrRnJhbWUgKiAqYVN0YWNrKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldFJlc3VsdHMobnNJWFBDQ29tcG9uZW50c19SZXN1bHRzICogKmFSZXN1
bHRzKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1hbmFnZXIobnNJQ29tcG9uZW50TWFu
YWdlciAqICphTWFuYWdlcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRJRChuc0lYUEND
b21wb25lbnRzX0lEICogKmFJRCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRFeGNlcHRp
b24obnNJWFBDQ29tcG9uZW50c19FeGNlcHRpb24gKiAqYUV4Y2VwdGlvbikgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRDb25zdHJ1Y3Rvcihuc0lYUENDb21wb25lbnRzX0NvbnN0cnVjdG9y
ICogKmFDb25zdHJ1Y3RvcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJc1N1Y2Nlc3NDb2Rl
KG5zcmVzdWx0IHJlc3VsdCwgUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IExvb2t1cE1ldGhvZCh2b2lkKSA9IDA7Cgp9OwojIDE5ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUveHBjb25uZWN0L25zSVhQQ29ubmVjdC5oIiAyCiMgMzggIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS94cGNvbm5lY3QvbnNJWFBDb25uZWN0LmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29tL25zSUV4Y2VwdGlvblNlcnZpY2UuaCIgMQojIDI5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
eHBjb20vbnNJRXhjZXB0aW9uU2VydmljZS5oIgpjbGFzcyBuc0lFeGNlcHRpb25Qcm92aWRlciA6
IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0
SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgwNTc3NzQ0YywgMHhjMWQyLCAweDQ3
ZjIsIHsgMHg4YiwgMHhjYywgMHhjZSwgMHg3YSwgMHg5ZSwgMHg1YSwgMHg4OCwgMHhmYyB9fTsg
cmV0dXJuIGlpZDt9CgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRFeGNlcHRpb24obnNyZXN1bHQg
cmVzdWx0LCBuc0lFeGNlcHRpb24gKmRlZmF1bHRFeGNlcHRpb24sIG5zSUV4Y2VwdGlvbiAqKl9y
ZXR2YWwpID0gMDsKCn07CiMgOTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lFeGNl
cHRpb25TZXJ2aWNlLmgiCmNsYXNzIG5zSUV4Y2VwdGlvbk1hbmFnZXIgOiBwdWJsaWMgbnNJU3Vw
cG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMg
Y29uc3QgbnNJSUQgaWlkID0gezB4ZWZjOWQwMGIsIDB4MjMxYywgMHg0ZmViLCB7IDB4ODUsIDB4
MmMsIDB4YWMsIDB4MDEsIDB4NzIsIDB4NjYsIDB4YTQsIDB4MTUgfX07IHJldHVybiBpaWQ7fQoK
CgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q3VycmVudEV4Y2VwdGlvbihuc0lFeGNlcHRpb24gKmVy
cm9yKSA9IDA7CgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDdXJyZW50RXhjZXB0aW9uKG5zSUV4
Y2VwdGlvbiAqKl9yZXR2YWwpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRFeGNlcHRp
b25Gcm9tUHJvdmlkZXIobnNyZXN1bHQgcmMsIG5zSUV4Y2VwdGlvbiAqZGVmYXVsdEV4Y2VwdGlv
biwgbnNJRXhjZXB0aW9uICoqX3JldHZhbCkgPSAwOwoKfTsKIyAxOTIgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS94cGNvbS9uc0lFeGNlcHRpb25TZXJ2aWNlLmgiCmNsYXNzIG5zSUV4Y2VwdGlvblNl
cnZpY2UgOiBwdWJsaWMgbnNJRXhjZXB0aW9uTWFuYWdlciB7CiBwdWJsaWM6CgogIHN0YXRpYyBj
b25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgzNWE4OGY1
NCwgMHhmMjY3LCAweDQ0MTQsIHsgMHg5MiwgMHhhNywgMHgxOSwgMHgxZiwgMHg2NCwgMHg1NCwg
MHhhYiwgMHg1MiB9fTsgcmV0dXJuIGlpZDt9CgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDdXJy
ZW50RXhjZXB0aW9uTWFuYWdlcihuc0lFeGNlcHRpb25NYW5hZ2VyICogKmFDdXJyZW50RXhjZXB0
aW9uTWFuYWdlcikgPSAwOwojIDIxMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUV4
Y2VwdGlvblNlcnZpY2UuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFJlZ2lzdGVyRXhjZXB0aW9uUHJv
dmlkZXIobnNJRXhjZXB0aW9uUHJvdmlkZXIgKnByb3ZpZGVyLCBQUlVpbnQzMiBtb2R1bGVDb2Rl
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFVucmVnaXN0ZXJFeGNlcHRpb25Qcm92aWRlcihu
c0lFeGNlcHRpb25Qcm92aWRlciAqcHJvdmlkZXIsIFBSVWludDMyIG1vZHVsZUNvZGUpID0gMDsK
Cn07CiMgMzkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbm5lY3QvbnNJWFBDb25uZWN0Lmgi
IDIKCgoKCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNwdWJ0ZC5oIiAxCiMgNDAg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc3B1YnRkLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2pzL2pzdHlwZXMuaCIgMQojIDYzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanN0
eXBlcy5oIgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4yLjIvaW5j
bHVkZS9zdGRkZWYuaCIgMSAzCiMgNjQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc3R5cGVz
LmgiIDIKIyAyMzUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc3R5cGVzLmgiCiMgMSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzYXV0b2NmZy5oIiAxCiMgMjM2ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvanMvanN0eXBlcy5oIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pz
b3NkZXAuaCIgMQojIDIzNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzdHlwZXMuaCIgMgoK
CgoKZXh0ZXJuICJDIiB7CiMgMjUxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanN0eXBlcy5o
Igp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgSlNVaW50ODsKdHlwZWRlZiBzaWduZWQgY2hhciBKU0lu
dDg7CiMgMjY0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanN0eXBlcy5oIgp0eXBlZGVmIHVu
c2lnbmVkIHNob3J0IEpTVWludDE2Owp0eXBlZGVmIHNob3J0IEpTSW50MTY7CiMgMjc3ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvanMvanN0eXBlcy5oIgp0eXBlZGVmIHVuc2lnbmVkIGludCBKU1Vp
bnQzMjsKdHlwZWRlZiBpbnQgSlNJbnQzMjsKIyAzMTEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9q
cy9qc3R5cGVzLmgiCnR5cGVkZWYgbG9uZyBsb25nIEpTSW50NjQ7CnR5cGVkZWYgdW5zaWduZWQg
bG9uZyBsb25nIEpTVWludDY0OwojIDMzNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzdHlw
ZXMuaCIKdHlwZWRlZiBpbnQgSlNJbnRuOwp0eXBlZGVmIHVuc2lnbmVkIGludCBKU1VpbnRuOwoj
IDM0NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzdHlwZXMuaCIKdHlwZWRlZiBkb3VibGUg
SlNGbG9hdDY0OwoKCgoKCgp0eXBlZGVmIHNpemVfdCBKU1NpemU7CgoKCgoKCgp0eXBlZGVmIHB0
cmRpZmZfdCBKU1B0cmRpZmY7CgoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgSlNVcHRyZGlm
ZjsKIyAzNzkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc3R5cGVzLmgiCnR5cGVkZWYgSlNJ
bnRuIEpTQm9vbDsKIyAzODkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc3R5cGVzLmgiCnR5
cGVkZWYgSlNVaW50OCBKU1BhY2tlZEJvb2w7CgoKCgp0eXBlZGVmIGxvbmcgSlNXb3JkOwp0eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgSlNVd29yZDsKCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pz
L2pzb3R5cGVzLmgiIDEKIyAzOTggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc3R5cGVzLmgi
IDIKCn0KIyA0MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzcHVidGQuaCIgMgojIDEgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2NvbXBhdC5oIiAxCiMgNDUgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9qcy9qc2NvbXBhdC5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2xv
bmcuaCIgMQojIDQ4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNsb25nLmgiCmV4dGVybiAi
QyIgewojIDY2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNsb25nLmgiCmV4dGVybiBKU0lu
dDY0IEpTTExfTWF4SW50KHZvaWQpOwpleHRlcm4gSlNJbnQ2NCBKU0xMX01pbkludCh2b2lkKTsK
ZXh0ZXJuIEpTSW50NjQgSlNMTF9aZXJvKHZvaWQpOwojIDQzMSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2pzL2pzbG9uZy5oIgp9CiMgNDYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2NvbXBh
dC5oIiAyCgp0eXBlZGVmIEpTSW50biBpbnROOwp0eXBlZGVmIEpTVWludG4gdWludE47CnR5cGVk
ZWYgSlNVd29yZCBqc3V3b3JkOwp0eXBlZGVmIEpTV29yZCBqc3dvcmQ7CnR5cGVkZWYgZmxvYXQg
ZmxvYXQzMjsKIyA0MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzcHVidGQuaCIgMgoKZXh0
ZXJuICJDIiB7CgoKdHlwZWRlZiB1aW50MTYganNjaGFyOwp0eXBlZGVmIGludDMyIGpzaW50Owp0
eXBlZGVmIHVpbnQzMiBqc3VpbnQ7CnR5cGVkZWYgZmxvYXQ2NCBqc2RvdWJsZTsKdHlwZWRlZiBq
c3dvcmQganN2YWw7CnR5cGVkZWYganN3b3JkIGpzaWQ7CnR5cGVkZWYgaW50MzIganNyZWZjb3Vu
dDsKCnR5cGVkZWYgZW51bSBKU1ZlcnNpb24gewogICAgSlNWRVJTSU9OXzFfMCA9IDEwMCwKICAg
IEpTVkVSU0lPTl8xXzEgPSAxMTAsCiAgICBKU1ZFUlNJT05fMV8yID0gMTIwLAogICAgSlNWRVJT
SU9OXzFfMyA9IDEzMCwKICAgIEpTVkVSU0lPTl8xXzQgPSAxNDAsCiAgICBKU1ZFUlNJT05fMV81
ID0gMTUwLAogICAgSlNWRVJTSU9OX0RFRkFVTFQgPSAwLAogICAgSlNWRVJTSU9OX1VOS05PV04g
PSAtMQp9IEpTVmVyc2lvbjsKCgoKCgp0eXBlZGVmIGVudW0gSlNUeXBlIHsKICAgIEpTVFlQRV9W
T0lELAogICAgSlNUWVBFX09CSkVDVCwKICAgIEpTVFlQRV9GVU5DVElPTiwKICAgIEpTVFlQRV9T
VFJJTkcsCiAgICBKU1RZUEVfTlVNQkVSLAogICAgSlNUWVBFX0JPT0xFQU4sCiAgICBKU1RZUEVf
TElNSVQKfSBKU1R5cGU7CgoKdHlwZWRlZiBlbnVtIEpTQWNjZXNzTW9kZSB7CiAgICBKU0FDQ19Q
Uk9UTyA9IDAsCiAgICBKU0FDQ19QQVJFTlQgPSAxLAogICAgSlNBQ0NfSU1QT1JUID0gMiwKICAg
IEpTQUNDX1dBVENIID0gMywKICAgIEpTQUNDX1JFQUQgPSA0LAogICAgSlNBQ0NfV1JJVEUgPSA4
LAogICAgSlNBQ0NfTElNSVQKfSBKU0FjY2Vzc01vZGU7CgoKCgoKCgp0eXBlZGVmIGVudW0gSlNJ
dGVyYXRlT3AgewogICAgSlNFTlVNRVJBVEVfSU5JVCwKICAgIEpTRU5VTUVSQVRFX05FWFQsCiAg
ICBKU0VOVU1FUkFURV9ERVNUUk9ZCn0gSlNJdGVyYXRlT3A7CgoKdHlwZWRlZiBzdHJ1Y3QgSlND
bGFzcyBKU0NsYXNzOwp0eXBlZGVmIHN0cnVjdCBKU0NvbnN0RG91YmxlU3BlYyBKU0NvbnN0RG91
YmxlU3BlYzsKdHlwZWRlZiBzdHJ1Y3QgSlNDb250ZXh0IEpTQ29udGV4dDsKdHlwZWRlZiBzdHJ1
Y3QgSlNFcnJvclJlcG9ydCBKU0Vycm9yUmVwb3J0Owp0eXBlZGVmIHN0cnVjdCBKU0Z1bmN0aW9u
IEpTRnVuY3Rpb247CnR5cGVkZWYgc3RydWN0IEpTRnVuY3Rpb25TcGVjIEpTRnVuY3Rpb25TcGVj
Owp0eXBlZGVmIHN0cnVjdCBKU0lkQXJyYXkgSlNJZEFycmF5Owp0eXBlZGVmIHN0cnVjdCBKU1By
b3BlcnR5IEpTUHJvcGVydHk7CnR5cGVkZWYgc3RydWN0IEpTUHJvcGVydHlTcGVjIEpTUHJvcGVy
dHlTcGVjOwp0eXBlZGVmIHN0cnVjdCBKU09iamVjdCBKU09iamVjdDsKdHlwZWRlZiBzdHJ1Y3Qg
SlNPYmplY3RNYXAgSlNPYmplY3RNYXA7CnR5cGVkZWYgc3RydWN0IEpTT2JqZWN0T3BzIEpTT2Jq
ZWN0T3BzOwp0eXBlZGVmIHN0cnVjdCBKU1J1bnRpbWUgSlNSdW50aW1lOwp0eXBlZGVmIHN0cnVj
dCBKU1J1bnRpbWUgSlNUYXNrU3RhdGU7CnR5cGVkZWYgc3RydWN0IEpTU2NyaXB0IEpTU2NyaXB0
Owp0eXBlZGVmIHN0cnVjdCBKU1N0cmluZyBKU1N0cmluZzsKdHlwZWRlZiBzdHJ1Y3QgSlNYRFJT
dGF0ZSBKU1hEUlN0YXRlOwp0eXBlZGVmIHN0cnVjdCBKU0V4Y2VwdGlvblN0YXRlIEpTRXhjZXB0
aW9uU3RhdGU7CnR5cGVkZWYgc3RydWN0IEpTTG9jYWxlQ2FsbGJhY2tzIEpTTG9jYWxlQ2FsbGJh
Y2tzOwojIDEzMiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzcHVidGQuaCIKdHlwZWRlZiBK
U0Jvb2wKKCogSlNQcm9wZXJ0eU9wKShKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBqc3Zh
bCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganN2YWwgKnZwKTsKIyAxNjMg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc3B1YnRkLmgiCnR5cGVkZWYgSlNCb29sCigqIEpT
TmV3RW51bWVyYXRlT3ApKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBKU0l0ZXJhdGVPcCBlbnVtX29wLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAganN2YWwgKnN0YXRlcCwganNpZCAqaWRwKTsKCgoK
Cgp0eXBlZGVmIEpTQm9vbAooKiBKU0VudW1lcmF0ZU9wKShKU0NvbnRleHQgKmN4LCBKU09iamVj
dCAqb2JqKTsKIyAxODcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc3B1YnRkLmgiCnR5cGVk
ZWYgSlNCb29sCigqIEpTUmVzb2x2ZU9wKShKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBq
c3ZhbCBpZCk7CiMgMjAwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNwdWJ0ZC5oIgp0eXBl
ZGVmIEpTQm9vbAooKiBKU05ld1Jlc29sdmVPcCkoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9i
aiwganN2YWwgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludE4gZmxh
Z3MsIEpTT2JqZWN0ICoqb2JqcCk7CgoKCgoKdHlwZWRlZiBKU0Jvb2wKKCogSlNDb252ZXJ0T3Ap
KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIEpTVHlwZSB0eXBlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGpzdmFsICp2cCk7CgoKCgoKCnR5cGVkZWYgdm9pZAooKiBKU0Zp
bmFsaXplT3ApKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmopOwoKCgoKCnR5cGVkZWYgdm9p
ZAooKiBKU1N0cmluZ0ZpbmFsaXplT3ApKEpTQ29udGV4dCAqY3gsIEpTU3RyaW5nICpzdHIpOwoj
IDI0NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzcHVidGQuaCIKdHlwZWRlZiBKU09iamVj
dE9wcyAqCigqIEpTR2V0T2JqZWN0T3BzKShKU0NvbnRleHQgKmN4LCBKU0NsYXNzICpjbGFzcCk7
CiMgMjYxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNwdWJ0ZC5oIgp0eXBlZGVmIEpTQm9v
bAooKiBKU0NoZWNrQWNjZXNzT3ApKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzdmFs
IGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU0FjY2Vzc01vZGUgbW9k
ZSwganN2YWwgKnZwKTsKCgoKCgp0eXBlZGVmIEpTQm9vbAooKiBKU1hEUk9iamVjdE9wKShKU1hE
UlN0YXRlICp4ZHIsIEpTT2JqZWN0ICoqb2JqcCk7CgoKCgoKCnR5cGVkZWYgSlNCb29sCigqIEpT
SGFzSW5zdGFuY2VPcCkoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwganN2YWwgdiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNCb29sICpicCk7CiMgMjk5ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvanMvanNwdWJ0ZC5oIgp0eXBlZGVmIHVpbnQzMgooKiBKU01hcmtP
cCkoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgdm9pZCAqYXJnKTsKIyAzMTcgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9qcy9qc3B1YnRkLmgiCnR5cGVkZWYgSlNPYmplY3RNYXAgKgooKiBK
U05ld09iamVjdE1hcE9wKShKU0NvbnRleHQgKmN4LCBqc3JlZmNvdW50IG5yZWZzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3RPcHMgKm9wcywgSlNDbGFzcyAq
Y2xhc3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqb2Jq
KTsKCgoKCgp0eXBlZGVmIHZvaWQKKCogSlNPYmplY3RNYXBPcCkoSlNDb250ZXh0ICpjeCwgSlNP
YmplY3RNYXAgKm1hcCk7CiMgMzQ2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNwdWJ0ZC5o
Igp0eXBlZGVmIEpTQm9vbAooKiBKU0xvb2t1cFByb3BPcCkoSlNDb250ZXh0ICpjeCwgSlNPYmpl
Y3QgKm9iaiwganNpZCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09i
amVjdCAqKm9ianAsIEpTUHJvcGVydHkgKipwcm9wcAoKCgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKTsKIyAzNjYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc3B1YnRkLmgi
CnR5cGVkZWYgSlNCb29sCigqIEpTRGVmaW5lUHJvcE9wKShKU0NvbnRleHQgKmN4LCBKU09iamVj
dCAqb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzaWQgaWQsIGpzdmFs
IHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTUHJvcGVydHlPcCBn
ZXR0ZXIsIEpTUHJvcGVydHlPcCBzZXR0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludE4gYXR0cnMsIEpTUHJvcGVydHkgKipwcm9wcCk7CiMgMzgwICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvanMvanNwdWJ0ZC5oIgp0eXBlZGVmIEpTQm9vbAooKiBKU1Byb3BlcnR5SWRP
cCkoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwganNpZCBpZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqc3ZhbCAqdnApOwoKCgoKCgoKdHlwZWRlZiBKU0Jvb2wKKCog
SlNBdHRyaWJ1dGVzT3ApKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzaWQgaWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNQcm9wZXJ0eSAqcHJvcCwgdWludE4g
KmF0dHJzcCk7CgoKCgoKCnR5cGVkZWYgSlNCb29sCigqIEpTQ2hlY2tBY2Nlc3NJZE9wKShKU0Nv
bnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBqc2lkIGlkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEpTQWNjZXNzTW9kZSBtb2RlLCBqc3ZhbCAqdnAsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludE4gKmF0dHJzcCk7CgoKCgoKCnR5cGVkZWYg
SlNPYmplY3QgKgooKiBKU09iamVjdE9wKShKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqKTsK
CgoKCgoKCnR5cGVkZWYgdm9pZAooKiBKU1Byb3BlcnR5UmVmT3ApKEpTQ29udGV4dCAqY3gsIEpT
T2JqZWN0ICpvYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTUHJvcGVy
dHkgKnByb3ApOwoKCgoKCgp0eXBlZGVmIEpTQm9vbAooKiBKU1NldE9iamVjdFNsb3RPcCkoSlND
b250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50MzIgc2xvdCwgSlNPYmplY3QgKnBvYmopOwojIDQ0NCAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2pzL2pzcHVidGQuaCIKdHlwZWRlZiBqc3ZhbAooKiBKU0dldFJlcXVpcmVkU2xv
dE9wKShKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDMyIHNsb3QpOwoKdHlwZWRlZiB2b2lkCigqIEpTU2V0UmVx
dWlyZWRTbG90T3ApKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzIgc2xvdCwganN2YWwgdik7CgoKCnR5cGVk
ZWYgSlNCb29sCigqIEpTTmF0aXZlKShKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCB1aW50
TiBhcmdjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzdmFsICphcmd2LCBqc3ZhbCAq
cnZhbCk7CgoKCnR5cGVkZWYgZW51bSBKU0dDU3RhdHVzIHsKICAgIEpTR0NfQkVHSU4sCiAgICBK
U0dDX0VORCwKICAgIEpTR0NfTUFSS19FTkQsCiAgICBKU0dDX0ZJTkFMSVpFX0VORAp9IEpTR0NT
dGF0dXM7Cgp0eXBlZGVmIEpTQm9vbAooKiBKU0dDQ2FsbGJhY2spKEpTQ29udGV4dCAqY3gsIEpT
R0NTdGF0dXMgc3RhdHVzKTsKCnR5cGVkZWYgSlNCb29sCigqIEpTQnJhbmNoQ2FsbGJhY2spKEpT
Q29udGV4dCAqY3gsIEpTU2NyaXB0ICpzY3JpcHQpOwoKdHlwZWRlZiB2b2lkCigqIEpTRXJyb3JS
ZXBvcnRlcikoSlNDb250ZXh0ICpjeCwgY29uc3QgY2hhciAqbWVzc2FnZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSlNFcnJvclJlcG9ydCAqcmVwb3J0KTsKCnR5cGVkZWYg
c3RydWN0IEpTRXJyb3JGb3JtYXRTdHJpbmcgewogICAgY29uc3QgY2hhciAqZm9ybWF0OwogICAg
dWludE4gYXJnQ291bnQ7Cn0gSlNFcnJvckZvcm1hdFN0cmluZzsKCnR5cGVkZWYgY29uc3QgSlNF
cnJvckZvcm1hdFN0cmluZyAqCigqIEpTRXJyb3JDYWxsYmFjaykodm9pZCAqdXNlclJlZiwgY29u
c3QgY2hhciAqbG9jYWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB1aW50TiBlcnJvck51bWJlcik7CiMgNDk1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNw
dWJ0ZC5oIgp0eXBlZGVmIEpTQm9vbAooKiBKU0xvY2FsZVRvVXBwZXJDYXNlKShKU0NvbnRleHQg
KmN4LCBKU1N0cmluZyAqc3JjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAganN2YWwgKnJ2YWwpOwoKdHlwZWRlZiBKU0Jvb2wKKCogSlNMb2NhbGVUb0xvd2VyQ2FzZSko
SlNDb250ZXh0ICpjeCwgSlNTdHJpbmcgKnNyYywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGpzdmFsICpydmFsKTsKCnR5cGVkZWYgSlNCb29sCigqIEpTTG9jYWxlQ29t
cGFyZSkoSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SlNTdHJpbmcgKnNyYzEsIEpTU3RyaW5nICpzcmMyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqc3ZhbCAqcnZhbCk7CgoKCgp0eXBlZGVmIHN0cnVjdCBKU1ByaW5jaXBhbHMg
SlNQcmluY2lwYWxzOwojIDUyMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzcHVidGQuaCIK
dHlwZWRlZiBKU0Jvb2wKKCogSlNQcmluY2lwYWxzVHJhbnNjb2RlcikoSlNYRFJTdGF0ZSAqeGRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNQcmluY2lwYWxz
ICoqcHJpbmNpcGFsc3ApOwoKfQojIDQ2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb25uZWN0
L25zSVhQQ29ubmVjdC5oIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL3hwdGlu
Zm8uaCIgMQojIDQ0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20veHB0aW5mby5oIgojIDEg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS94cHRfc3RydWN0LmgiIDEKIyA0NiAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL3hwY29tL3hwdF9zdHJ1Y3QuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUveHBjb20veHB0X2FyZW5hLmgiIDEKIyA0NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29tL3hwdF9hcmVuYS5oIgojIDEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMSAzCiMgMzMgIi91
c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51
eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzQgIi91c3IvaW5jbHVkZS9zdGRs
aWIuaCIgMiAzCgpleHRlcm4gIkMiIHsKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93YWl0
ZmxhZ3MuaCIgMSAzCiMgNDMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvd2FpdHN0YXR1cy5oIiAxIDMKIyA2NSAiL3Vzci9pbmNsdWRlL2JpdHMvd2Fp
dHN0YXR1cy5oIiAzCnVuaW9uIHdhaXQKICB7CiAgICBpbnQgd19zdGF0dXM7CiAgICBzdHJ1Y3QK
ICAgICAgewoKICAgICAgICB1bnNpZ25lZCBpbnQgX193X3Rlcm1zaWc6NzsKICAgICAgICB1bnNp
Z25lZCBpbnQgX193X2NvcmVkdW1wOjE7CiAgICAgICAgdW5zaWduZWQgaW50IF9fd19yZXRjb2Rl
Ojg7CiAgICAgICAgdW5zaWduZWQgaW50OjE2OwoKCgoKCgoKICAgICAgfSBfX3dhaXRfdGVybWlu
YXRlZDsKICAgIHN0cnVjdAogICAgICB7CgogICAgICAgIHVuc2lnbmVkIGludCBfX3dfc3RvcHZh
bDo4OwogICAgICAgIHVuc2lnbmVkIGludCBfX3dfc3RvcHNpZzo4OwogICAgICAgIHVuc2lnbmVk
IGludDoxNjsKCgoKCgoKICAgICAgfSBfX3dhaXRfc3RvcHBlZDsKICB9OwojIDQ0ICIvdXNyL2lu
Y2x1ZGUvc3RkbGliLmgiIDIgMwojIDkzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKCgp0eXBl
ZGVmIHN0cnVjdAogIHsKICAgIGludCBxdW90OwogICAgaW50IHJlbTsKICB9IGRpdl90OwoKCgp0
eXBlZGVmIHN0cnVjdAogIHsKICAgIGxvbmcgaW50IHF1b3Q7CiAgICBsb25nIGludCByZW07CiAg
fSBsZGl2X3Q7CgoKCgoKCgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgc3RydWN0CiAgewogICAgbG9u
ZyBsb25nIGludCBxdW90OwogICAgbG9uZyBsb25nIGludCByZW07CiAgfSBsbGRpdl90OwoKCiMg
MTM3ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIHNpemVfdCBfX2N0eXBlX2dldF9t
Yl9jdXJfbWF4ICh2b2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBkb3VibGUgYXRvZiAoX19jb25z
dCBjaGFyICpfX25wdHIpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0
ZXJuIGludCBhdG9pIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gbG9uZyBpbnQgYXRvbCAoX19jb25zdCBjaGFyICpfX25w
dHIpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCl9fZXh0ZW5zaW9u
X18gZXh0ZXJuIGxvbmcgbG9uZyBpbnQgYXRvbGwgKF9fY29uc3QgY2hhciAqX19ucHRyKQogICAg
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBkb3VibGUg
c3RydG9kIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgpOwoKCgoKCmV4dGVybiBm
bG9hdCBzdHJ0b2YgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSB0aHJvdyAoKTsKCmV4dGVybiBs
b25nIGRvdWJsZSBzdHJ0b2xkIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93
ICgpOwoKCgoKCmV4dGVybiBsb25nIGludCBzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLCBpbnQgX19iYXNlKSB0aHJvdyAoKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBzdHJ0
b3VsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAg
ICAgdGhyb3cgKCk7CgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRv
cSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgdGhyb3cgKCk7
CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdXEgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAg
IHRocm93ICgpOwoKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgc3RydG9s
bCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIHRocm93ICgp
OwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VsbCAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQog
ICAgIHRocm93ICgpOwoKIyAyMjkgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gbG9u
ZyBpbnQgc3RydG9sX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2Us
CiAgICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7Cgpl
eHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgc3RydG91bF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7CgpfX2V4dGVuc2lvbl9fCmV4dGVy
biBsb25nIGxvbmcgaW50IHN0cnRvbGxfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwgaW50IF9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2Fs
ZV90IF9fbG9jKSB0aHJvdyAoKTsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcg
bG9uZyBpbnQgc3RydG91bGxfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3Qg
X19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBf
X2Jhc2UsIF9fbG9jYWxlX3QgX19sb2MpCiAgICAgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIHN0
cnRvZF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVfdCBfX2xvYykKICAg
ICB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBzdHJ0b2ZfbCAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwgX19sb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgc3Ry
dG9sZF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBk
b3VibGUgX19zdHJ0b2RfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLCBpbnQgX19ncm91cCkKICAgICB0aHJvdyAoKTsKZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2lu
dGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19ncm91cCkK
ICAgICB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3RydG9sZF9pbnRlcm5hbCAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBfX2dyb3VwKSB0aHJvdyAoKTsKCmV4dGVybiBsb25n
IGludCBfX3N0cnRvbF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQg
X19ncm91cCkgdGhyb3cgKCk7CgoKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxf
aW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNl
LCBpbnQgX19ncm91cCkgdGhyb3cgKCk7CgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxv
bmcgaW50IF9fc3RydG9sbF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgX19iYXNlLCBpbnQgX19ncm91cCkgdGhyb3cgKCk7CgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJu
IHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19zdHJ0b3VsbF9pbnRlcm5hbCAoX19jb25zdCBjaGFy
ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19y
ZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkK
ICAgICB0aHJvdyAoKTsKCgoKCgoKCgpleHRlcm4gX19pbmxpbmUgZG91YmxlCnN0cnRvZCAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIp
IHRocm93ICgpCnsKICByZXR1cm4gX19zdHJ0b2RfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIs
IDApOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGludApzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgIGludCBf
X2Jhc2UpIHRocm93ICgpCnsKICByZXR1cm4gX19zdHJ0b2xfaW50ZXJuYWwgKF9fbnB0ciwgX19l
bmRwdHIsIF9fYmFzZSwgMCk7Cn0KZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcgaW50CnN0
cnRvdWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLAogICAgICAgICBpbnQgX19iYXNlKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9fc3Ry
dG91bF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQoKCgoKZXh0ZXJu
IF9faW5saW5lIGZsb2F0CnN0cnRvZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgpCnsKICByZXR1cm4gX19zdHJ0b2Zf
aW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIDApOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGRv
dWJsZQpzdHJ0b2xkIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0cikgdGhyb3cgKCkKewogIHJldHVybiBfX3N0cnRvbGRfaW50ZXJuYWwg
KF9fbnB0ciwgX19lbmRwdHIsIDApOwp9CgoKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGlu
ZSBsb25nIGxvbmcgaW50CnN0cnRvcSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgaW50IF9fYmFzZSkgdGhyb3cgKCkK
ewogIHJldHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwg
MCk7Cn0KX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBsb25nIGlu
dApzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFzZSkgdGhyb3cgKCkKewogIHJldHVybiBf
X3N0cnRvdWxsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKCgpf
X2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CnN0cnRvbGwgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAog
ICAgICAgICBpbnQgX19iYXNlKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9fc3RydG9sbF9pbnRlcm5h
bCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQpfX2V4dGVuc2lvbl9fIGV4dGVybiBf
X2lubGluZSB1bnNpZ25lZCBsb25nIGxvbmcgaW50CnN0cnRvdWxsIChfX2NvbnN0IGNoYXIgKiBf
X3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICBp
bnQgX19iYXNlKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9fc3RydG91bGxfaW50ZXJuYWwgKF9fbnB0
ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KCgoKCmV4dGVybiBfX2lubGluZSBkb3VibGUKYXRv
ZiAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpCnsKICByZXR1cm4gc3RydG9kIChfX25w
dHIsIChjaGFyICoqKSBfX251bGwpOwp9CmV4dGVybiBfX2lubGluZSBpbnQKYXRvaSAoX19jb25z
dCBjaGFyICpfX25wdHIpIHRocm93ICgpCnsKICByZXR1cm4gKGludCkgc3RydG9sIChfX25wdHIs
IChjaGFyICoqKSBfX251bGwsIDEwKTsKfQpleHRlcm4gX19pbmxpbmUgbG9uZyBpbnQKYXRvbCAo
X19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpCnsKICByZXR1cm4gc3RydG9sIChfX25wdHIs
IChjaGFyICoqKSBfX251bGwsIDEwKTsKfQoKCgoKX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxp
bmUgbG9uZyBsb25nIGludAphdG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpCnsK
ICByZXR1cm4gc3RydG9sbCAoX19ucHRyLCAoY2hhciAqKikgX19udWxsLCAxMCk7Cn0KCiMgNDA4
ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKmw2NGEgKGxvbmcgaW50IF9f
bikgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgaW50IGE2NGwgKF9fY29uc3QgY2hhciAqX19zKSB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKIyA0MjEgIi91c3IvaW5jbHVkZS9z
dGRsaWIuaCIgMwpleHRlcm4gbG9uZyBpbnQgcmFuZG9tICh2b2lkKSB0aHJvdyAoKTsKCgpleHRl
cm4gdm9pZCBzcmFuZG9tICh1bnNpZ25lZCBpbnQgX19zZWVkKSB0aHJvdyAoKTsKCgoKCgpleHRl
cm4gY2hhciAqaW5pdHN0YXRlICh1bnNpZ25lZCBpbnQgX19zZWVkLCBjaGFyICpfX3N0YXRlYnVm
LAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zdGF0ZWxlbikgdGhyb3cgKCk7CgoK
CmV4dGVybiBjaGFyICpzZXRzdGF0ZSAoY2hhciAqX19zdGF0ZWJ1ZikgdGhyb3cgKCk7CgoKCgoK
CgpzdHJ1Y3QgcmFuZG9tX2RhdGEKICB7CiAgICBpbnQzMl90ICpmcHRyOwogICAgaW50MzJfdCAq
cnB0cjsKICAgIGludDMyX3QgKnN0YXRlOwogICAgaW50IHJhbmRfdHlwZTsKICAgIGludCByYW5k
X2RlZzsKICAgIGludCByYW5kX3NlcDsKICAgIGludDMyX3QgKmVuZF9wdHI7CiAgfTsKCmV4dGVy
biBpbnQgcmFuZG9tX3IgKHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZiwKICAg
ICAgICAgICAgICAgICAgICAgaW50MzJfdCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7
CgpleHRlcm4gaW50IHNyYW5kb21fciAodW5zaWduZWQgaW50IF9fc2VlZCwgc3RydWN0IHJhbmRv
bV9kYXRhICpfX2J1ZikgdGhyb3cgKCk7CgpleHRlcm4gaW50IGluaXRzdGF0ZV9yICh1bnNpZ25l
ZCBpbnQgX19zZWVkLCBjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCiAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBfX3N0YXRlbGVuLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYpIHRocm93ICgpOwoKZXh0ZXJuIGludCBz
ZXRzdGF0ZV9yIChjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCiAgICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKSB0aHJvdyAoKTsKCgoK
CgoKZXh0ZXJuIGludCByYW5kICh2b2lkKSB0aHJvdyAoKTsKCmV4dGVybiB2b2lkIHNyYW5kICh1
bnNpZ25lZCBpbnQgX19zZWVkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgcmFuZF9yICh1bnNp
Z25lZCBpbnQgKl9fc2VlZCkgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gZG91YmxlIGRyYW5kNDgg
KHZvaWQpIHRocm93ICgpOwpleHRlcm4gZG91YmxlIGVyYW5kNDggKHVuc2lnbmVkIHNob3J0IGlu
dCBfX3hzdWJpWzNdKSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBpbnQgbHJhbmQ0OCAodm9pZCkg
dGhyb3cgKCk7CmV4dGVybiBsb25nIGludCBucmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194
c3ViaVszXSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgaW50IG1yYW5kNDggKHZvaWQpIHRocm93
ICgpOwpleHRlcm4gbG9uZyBpbnQganJhbmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1Ymlb
M10pIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIHNyYW5kNDggKGxvbmcgaW50IF9fc2VlZHZhbCkg
dGhyb3cgKCk7CmV4dGVybiB1bnNpZ25lZCBzaG9ydCBpbnQgKnNlZWQ0OCAodW5zaWduZWQgc2hv
cnQgaW50IF9fc2VlZDE2dlszXSkgdGhyb3cgKCk7CmV4dGVybiB2b2lkIGxjb25nNDggKHVuc2ln
bmVkIHNob3J0IGludCBfX3BhcmFtWzddKSB0aHJvdyAoKTsKCgoKCgpzdHJ1Y3QgZHJhbmQ0OF9k
YXRhCiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IF9feFszXTsKICAgIHVuc2lnbmVkIHNob3J0
IGludCBfX29sZF94WzNdOwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9fYzsKICAgIHVuc2lnbmVk
IHNob3J0IGludCBfX2luaXQ7CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fYTsKICB9OwoK
CmV4dGVybiBpbnQgZHJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9f
YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0
KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBlcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hz
dWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0
cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBf
X3Jlc3VsdCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBscmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4
X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGlu
dCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICh1
bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAg
ICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBt
cmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAg
ICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7
CmV4dGVybiBpbnQganJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZm
ZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkg
dGhyb3cgKCk7CgoKZXh0ZXJuIGludCBzcmFuZDQ4X3IgKGxvbmcgaW50IF9fc2VlZHZhbCwgc3Ry
dWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpCiAgICAgdGhyb3cgKCk7CgpleHRlcm4gaW50IHNl
ZWQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdLAogICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgdGhyb3cgKCk7CgpleHRlcm4gaW50
IGxjb25nNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10sCiAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgdGhyb3cgKCk7CgoKCgoKCgoK
CmV4dGVybiB2b2lkICptYWxsb2MgKHNpemVfdCBfX3NpemUpIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX21hbGxvY19fKSk7CgpleHRlcm4gdm9pZCAqY2FsbG9jIChzaXplX3QgX19ubWVtYiwg
c2l6ZV90IF9fc2l6ZSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykp
OwoKCgoKCgoKZXh0ZXJuIHZvaWQgKnJlYWxsb2MgKHZvaWQgKl9fcHRyLCBzaXplX3QgX19zaXpl
KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKZXh0ZXJuIHZvaWQgZnJl
ZSAodm9pZCAqX19wdHIpIHRocm93ICgpOwoKCgoKZXh0ZXJuIHZvaWQgY2ZyZWUgKHZvaWQgKl9f
cHRyKSB0aHJvdyAoKTsKCgoKIyAxICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDEgMwojIDI1ICIv
dXNyL2luY2x1ZGUvYWxsb2NhLmgiIDMKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGlu
dXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvYWxs
b2NhLmgiIDIgMwoKZXh0ZXJuICJDIiB7CgoKCgoKZXh0ZXJuIHZvaWQgKmFsbG9jYSAoc2l6ZV90
IF9fc2l6ZSkgdGhyb3cgKCk7CgoKCgoKfQojIDU3NyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAy
IDMKCgoKCmV4dGVybiB2b2lkICp2YWxsb2MgKHNpemVfdCBfX3NpemUpIHRocm93ICgpIF9fYXR0
cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgpleHRlcm4gaW50IHBvc2l4X21lbWFsaWduICh2
b2lkICoqX19tZW1wdHIsIHNpemVfdCBfX2FsaWdubWVudCwgc2l6ZV90IF9fc2l6ZSkKICAgICB0
aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgoKZXh0ZXJuIHZvaWQgYWJv
cnQgKHZvaWQpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKZXh0
ZXJuIGludCBhdGV4aXQgKHZvaWQgKCpfX2Z1bmMpICh2b2lkKSkgdGhyb3cgKCk7CgoKCgoKZXh0
ZXJuIGludCBvbl9leGl0ICh2b2lkICgqX19mdW5jKSAoaW50IF9fc3RhdHVzLCB2b2lkICpfX2Fy
ZyksIHZvaWQgKl9fYXJnKQogICAgIHRocm93ICgpOwoKCgoKCgpleHRlcm4gdm9pZCBleGl0IChp
bnQgX19zdGF0dXMpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoK
CgoKZXh0ZXJuIHZvaWQgX0V4aXQgKGludCBfX3N0YXR1cykgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKCgpleHRlcm4gY2hhciAqZ2V0ZW52IChfX2NvbnN0IGNo
YXIgKl9fbmFtZSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqX19zZWN1cmVfZ2V0ZW52IChf
X2NvbnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBwdXRlbnYgKGNo
YXIgKl9fc3RyaW5nKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IHNldGVudiAoX19jb25zdCBj
aGFyICpfX25hbWUsIF9fY29uc3QgY2hhciAqX192YWx1ZSwgaW50IF9fcmVwbGFjZSkKICAgICB0
aHJvdyAoKTsKCgpleHRlcm4gaW50IHVuc2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgdGhy
b3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgY2xlYXJlbnYgKHZvaWQpIHRocm93ICgpOwojIDY2MSAi
L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICpta3RlbXAgKGNoYXIgKl9fdGVt
cGxhdGUpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBta3N0ZW1wIChjaGFyICpfX3RlbXBs
YXRlKSB0aHJvdyAoKTsKIyA2NzggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gaW50
IG1rc3RlbXA2NCAoY2hhciAqX190ZW1wbGF0ZSkgdGhyb3cgKCk7CiMgNjg4ICIvdXNyL2luY2x1
ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKm1rZHRlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIHRo
cm93ICgpOwoKCgoKCmV4dGVybiBpbnQgc3lzdGVtIChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCkg
dGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gY2hhciAqY2Fub25pY2FsaXplX2ZpbGVfbmFtZSAoX19j
b25zdCBjaGFyICpfX25hbWUpIHRocm93ICgpOwojIDcxMiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5o
IiAzCmV4dGVybiBjaGFyICpyZWFscGF0aCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fcmVzb2x2ZWQpIHRo
cm93ICgpOwoKCgoKCgp0eXBlZGVmIGludCAoKl9fY29tcGFyX2ZuX3QpIChfX2NvbnN0IHZvaWQg
KiwgX19jb25zdCB2b2lkICopOwoKCnR5cGVkZWYgX19jb21wYXJfZm5fdCBjb21wYXJpc29uX2Zu
X3Q7CgoKCgoKCmV4dGVybiB2b2lkICpic2VhcmNoIChfX2NvbnN0IHZvaWQgKl9fa2V5LCBfX2Nv
bnN0IHZvaWQgKl9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX25tZW1iLCBz
aXplX3QgX19zaXplLCBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIHZvaWQgcXNv
cnQgKHZvaWQgKl9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCiAgICAgICAg
ICAgICAgICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIGludCBhYnMgKGlu
dCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxvbmcg
aW50IGxhYnMgKGxvbmcgaW50IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsb25nIGxvbmcgaW50IGxsYWJzIChsb25nIGxv
bmcgaW50IF9feCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoK
CgoKCgpleHRlcm4gZGl2X3QgZGl2IChpbnQgX19udW1lciwgaW50IF9fZGVub20pCiAgICAgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbGRpdl90IGxkaXYgKGxv
bmcgaW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVub20pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKX19leHRlbnNpb25fXyBleHRlcm4gbGxkaXZfdCBsbGRp
diAobG9uZyBsb25nIGludCBfX251bWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsb25nIGxvbmcgaW50IF9fZGVub20pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKIyA3NzYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hh
ciAqZWN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9f
ZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSB0aHJvdyAo
KTsKCgoKCmV4dGVybiBjaGFyICpmY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBp
bnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmlj
dCBfX3NpZ24pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKmdjdnQgKGRvdWJsZSBfX3ZhbHVl
LCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFyICpx
ZWN2dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAg
ICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSB0aHJv
dyAoKTsKZXh0ZXJuIGNoYXIgKnFmY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGln
aXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19y
ZXN0cmljdCBfX3NpZ24pIHRocm93ICgpOwpleHRlcm4gY2hhciAqcWdjdnQgKGxvbmcgZG91Ymxl
IF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYpIHRocm93ICgpOwoKCgoKZXh0ZXJu
IGludCBlY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmlj
dCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hh
ciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2xlbikgdGhy
b3cgKCk7CmV4dGVybiBpbnQgZmN2dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBp
bnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmlj
dCBfX3NpZ24sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICBzaXpl
X3QgX19sZW4pIHRocm93ICgpOwoKZXh0ZXJuIGludCBxZWN2dF9yIChsb25nIGRvdWJsZSBfX3Zh
bHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9f
ZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAgICAgICAgICAgICAgICAgY2hhciAq
X19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBxZmN2
dF9yIChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAg
ICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAg
ICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSB0aHJv
dyAoKTsKCgoKCgoKCmV4dGVybiBpbnQgbWJsZW4gKF9fY29uc3QgY2hhciAqX19zLCBzaXplX3Qg
X19uKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IG1idG93YyAod2NoYXJfdCAqX19yZXN0cmljdCBf
X3B3YywKICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNp
emVfdCBfX24pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgd2N0b21iIChjaGFyICpfX3MsIHdjaGFy
X3QgX193Y2hhcikgdGhyb3cgKCk7CgoKCmV4dGVybiBzaXplX3QgbWJzdG93Y3MgKHdjaGFyX3Qg
Kl9fcmVzdHJpY3QgX19wd2NzLAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCmV4dGVybiBzaXplX3Qgd2Nz
dG9tYnMgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19wd2NzLCBzaXplX3QgX19uKQogICAgIHRocm93ICgp
OwoKCgoKCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAoX19jb25zdCBjaGFyICpfX3Jlc3BvbnNlKSB0
aHJvdyAoKTsKIyA4NTggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gaW50IGdldHN1
Ym9wdCAoY2hhciAqKl9fcmVzdHJpY3QgX19vcHRpb25wLAogICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqX19jb25zdCAqX19yZXN0cmljdCBfX3Rva2VucywKICAgICAgICAgICAgICAgICAgICAg
IGNoYXIgKipfX3Jlc3RyaWN0IF9fdmFsdWVwKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9pZCBz
ZXRrZXkgKF9fY29uc3QgY2hhciAqX19rZXkpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBw
b3NpeF9vcGVucHQgKGludCBfX29mbGFnKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQgZ3Jh
bnRwdCAoaW50IF9fZmQpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHVubG9ja3B0IChpbnQgX19m
ZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqcHRzbmFtZSAoaW50IF9fZmQpIHRocm93ICgp
OwoKCgoKCgpleHRlcm4gaW50IHB0c25hbWVfciAoaW50IF9fZmQsIGNoYXIgKl9fYnVmLCBzaXpl
X3QgX19idWZsZW4pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgZ2V0cHQgKHZvaWQpIHRocm93ICgp
OwoKCgoKCgpleHRlcm4gaW50IGdldGxvYWRhdmcgKGRvdWJsZSBfX2xvYWRhdmdbXSwgaW50IF9f
bmVsZW0pIHRocm93ICgpOwoKCgoKCn0KIyA0NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29t
L3hwdF9hcmVuYS5oIiAyCiMgNzAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS94cHRfYXJl
bmEuaCIKZXh0ZXJuICJDIiB7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgWFBUQXJlbmEgWFBUQXJlbmE7
CgpYUFRBcmVuYSAqClhQVF9OZXdBcmVuYShQUlVpbnQzMiBibG9ja19zaXplLCBzaXplX3QgYWxp
Z25tZW50LCBjb25zdCBjaGFyKiBuYW1lKTsKCnZvaWQKWFBUX0Rlc3Ryb3lBcmVuYShYUFRBcmVu
YSAqYXJlbmEpOwoKdm9pZApYUFRfRHVtcFN0YXRzKFhQVEFyZW5hICphcmVuYSk7Cgp2b2lkICoK
WFBUX0FyZW5hTWFsbG9jKFhQVEFyZW5hICphcmVuYSwgc2l6ZV90IHNpemUpOwoKY2hhciAqClhQ
VF9BcmVuYVN0ckR1cChYUFRBcmVuYSAqYXJlbmEsIGNvbnN0IGNoYXIgKiBzKTsKCnZvaWQKWFBU
X05vdGlmeURvbmVMb2FkaW5nKFhQVEFyZW5hICphcmVuYSk7Cgp2b2lkClhQVF9BcmVuYUZyZWUo
WFBUQXJlbmEgKmFyZW5hLCB2b2lkKiBibG9jayk7CiMgMTMyICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUveHBjb20veHB0X2FyZW5hLmgiCn0KIyA0NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29t
L3hwdF9zdHJ1Y3QuaCIgMgoKZXh0ZXJuICJDIiB7CiMgNjEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS94cGNvbS94cHRfc3RydWN0LmgiCnR5cGVkZWYgc3RydWN0IFhQVEhlYWRlciBYUFRIZWFkZXI7
CnR5cGVkZWYgc3RydWN0IFhQVEludGVyZmFjZURpcmVjdG9yeUVudHJ5IFhQVEludGVyZmFjZURp
cmVjdG9yeUVudHJ5Owp0eXBlZGVmIHN0cnVjdCBYUFRJbnRlcmZhY2VEZXNjcmlwdG9yIFhQVElu
dGVyZmFjZURlc2NyaXB0b3I7CnR5cGVkZWYgc3RydWN0IFhQVENvbnN0RGVzY3JpcHRvciBYUFRD
b25zdERlc2NyaXB0b3I7CnR5cGVkZWYgc3RydWN0IFhQVE1ldGhvZERlc2NyaXB0b3IgWFBUTWV0
aG9kRGVzY3JpcHRvcjsKdHlwZWRlZiBzdHJ1Y3QgWFBUUGFyYW1EZXNjcmlwdG9yIFhQVFBhcmFt
RGVzY3JpcHRvcjsKdHlwZWRlZiBzdHJ1Y3QgWFBUVHlwZURlc2NyaXB0b3IgWFBUVHlwZURlc2Ny
aXB0b3I7CnR5cGVkZWYgc3RydWN0IFhQVFR5cGVEZXNjcmlwdG9yUHJlZml4IFhQVFR5cGVEZXNj
cmlwdG9yUHJlZml4Owp0eXBlZGVmIHN0cnVjdCBYUFRTdHJpbmcgWFBUU3RyaW5nOwp0eXBlZGVm
IHN0cnVjdCBYUFRBbm5vdGF0aW9uIFhQVEFubm90YXRpb247CiMgMTA0ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUveHBjb20veHB0X3N0cnVjdC5oIgpzdHJ1Y3QgWFBUSGVhZGVyIHsKICAgIFBSVWlu
dDggbWFnaWNbMTZdOwogICAgUFJVaW50OCBtYWpvcl92ZXJzaW9uOwogICAgUFJVaW50OCBtaW5v
cl92ZXJzaW9uOwogICAgUFJVaW50MTYgbnVtX2ludGVyZmFjZXM7CiAgICBQUlVpbnQzMiBmaWxl
X2xlbmd0aDsKICAgIFhQVEludGVyZmFjZURpcmVjdG9yeUVudHJ5ICppbnRlcmZhY2VfZGlyZWN0
b3J5OwogICAgUFJVaW50MzIgZGF0YV9wb29sOwogICAgWFBUQW5ub3RhdGlvbiAqYW5ub3RhdGlv
bnM7Cn07CiMgMTczICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20veHB0X3N0cnVjdC5oIgp0
eXBlZGVmIHN0cnVjdCB7CiAgICBjb25zdCBjaGFyKiBzdHI7CiAgICBQUlVpbnQ4IG1ham9yOwog
ICAgUFJVaW50OCBtaW5vcjsKICAgIFBSVWludDE2IGNvZGU7Cn0gWFBUX1RZUEVMSUJfVkVSU0lP
TlNfU1RSVUNUOwojIDE4NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL3hwdF9zdHJ1Y3Qu
aCIKZXh0ZXJuIFBSVWludDE2ClhQVF9QYXJzZVZlcnNpb25TdHJpbmcoY29uc3QgY2hhciogc3Ry
LCBQUlVpbnQ4KiBtYWpvciwgUFJVaW50OCogbWlub3IpOwoKZXh0ZXJuIFhQVEhlYWRlciAqClhQ
VF9OZXdIZWFkZXIoWFBUQXJlbmEgKmFyZW5hLCBQUlVpbnQxNiBudW1faW50ZXJmYWNlcywKICAg
ICAgICAgICAgICBQUlVpbnQ4IG1ham9yX3ZlcnNpb24sIFBSVWludDggbWlub3JfdmVyc2lvbik7
CgpleHRlcm4gdm9pZApYUFRfRnJlZUhlYWRlcihYUFRBcmVuYSAqYXJlbmEsIFhQVEhlYWRlciog
YUhlYWRlcik7CgoKZXh0ZXJuIFBSVWludDMyClhQVF9TaXplT2ZIZWFkZXIoWFBUSGVhZGVyICpo
ZWFkZXIpOwoKCmV4dGVybiBQUlVpbnQzMgpYUFRfU2l6ZU9mSGVhZGVyQmxvY2soWFBUSGVhZGVy
ICpoZWFkZXIpOwoKCgoKCgoKc3RydWN0IFhQVEludGVyZmFjZURpcmVjdG9yeUVudHJ5IHsKICAg
IG5zSUQgaWlkOwogICAgY2hhciAqbmFtZTsKICAgIGNoYXIgKm5hbWVfc3BhY2U7CiAgICBYUFRJ
bnRlcmZhY2VEZXNjcmlwdG9yICppbnRlcmZhY2VfZGVzY3JpcHRvcjsKCgoKCgp9OwoKZXh0ZXJu
IFBSQm9vbApYUFRfRmlsbEludGVyZmFjZURpcmVjdG9yeUVudHJ5KFhQVEFyZW5hICphcmVuYSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYUFRJbnRlcmZhY2VEaXJlY3RvcnlFbnRy
eSAqaWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUQgKmlpZCwgY2hhciAq
bmFtZSwgY2hhciAqbmFtZV9zcGFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBY
UFRJbnRlcmZhY2VEZXNjcmlwdG9yICpkZXNjcmlwdG9yKTsKCmV4dGVybiB2b2lkClhQVF9EZXN0
cm95SW50ZXJmYWNlRGlyZWN0b3J5RW50cnkoWFBUQXJlbmEgKmFyZW5hLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFhQVEludGVyZmFjZURpcmVjdG9yeUVudHJ5KiBpZGUpOwoK
CgoKCnN0cnVjdCBYUFRJbnRlcmZhY2VEZXNjcmlwdG9yIHsKICAgIFBSVWludDE2IHBhcmVudF9p
bnRlcmZhY2U7CiAgICBQUlVpbnQxNiBudW1fbWV0aG9kczsKICAgIFhQVE1ldGhvZERlc2NyaXB0
b3IgKm1ldGhvZF9kZXNjcmlwdG9yczsKICAgIFBSVWludDE2IG51bV9jb25zdGFudHM7CiAgICBY
UFRDb25zdERlc2NyaXB0b3IgKmNvbnN0X2Rlc2NyaXB0b3JzOwogICAgUFJVaW50OCBmbGFnczsK
IyAyNjEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS94cHRfc3RydWN0LmgiCiAgICBYUFRU
eXBlRGVzY3JpcHRvciAqYWRkaXRpb25hbF90eXBlczsKICAgIFBSVWludDE2IG51bV9hZGRpdGlv
bmFsX3R5cGVzOwp9OwojIDI3NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL3hwdF9zdHJ1
Y3QuaCIKZXh0ZXJuIFBSQm9vbApYUFRfR2V0SW50ZXJmYWNlSW5kZXhCeU5hbWUoWFBUSW50ZXJm
YWNlRGlyZWN0b3J5RW50cnkgKmlkZV9ibG9jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBSVWludDE2IG51bV9pbnRlcmZhY2VzLCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUFJVaW50MTYgKmluZGV4cCk7CgpleHRlcm4gWFBUSW50ZXJmYWNlRGVzY3JpcHRv
ciAqClhQVF9OZXdJbnRlcmZhY2VEZXNjcmlwdG9yKFhQVEFyZW5hICphcmVuYSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUFJVaW50MTYgcGFyZW50X2ludGVyZmFjZSwgUFJVaW50MTYgbnVt
X21ldGhvZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSVWludDE2IG51bV9jb25zdGFu
dHMsIFBSVWludDggZmxhZ3MpOwoKZXh0ZXJuIHZvaWQKWFBUX0ZyZWVJbnRlcmZhY2VEZXNjcmlw
dG9yKFhQVEFyZW5hICphcmVuYSwgWFBUSW50ZXJmYWNlRGVzY3JpcHRvciogaWQpOwoKZXh0ZXJu
IFBSQm9vbApYUFRfSW50ZXJmYWNlRGVzY3JpcHRvckFkZFR5cGVzKFhQVEFyZW5hICphcmVuYSwg
WFBUSW50ZXJmYWNlRGVzY3JpcHRvciAqaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUFJVaW50MTYgbnVtKTsKCmV4dGVybiBQUkJvb2wKWFBUX0ludGVyZmFjZURlc2NyaXB0b3JB
ZGRNZXRob2RzKFhQVEFyZW5hICphcmVuYSwgWFBUSW50ZXJmYWNlRGVzY3JpcHRvciAqaWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUlVpbnQxNiBudW0pOwoKZXh0ZXJuIFBS
Qm9vbApYUFRfSW50ZXJmYWNlRGVzY3JpcHRvckFkZENvbnN0cyhYUFRBcmVuYSAqYXJlbmEsIFhQ
VEludGVyZmFjZURlc2NyaXB0b3IgKmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUlVpbnQxNiBudW0pOwoKCgoKCnN0cnVjdCBYUFRTdHJpbmcgewogICAgUFJVaW50MTYgbGVu
Z3RoOwogICAgY2hhciAqYnl0ZXM7Cn07CgpleHRlcm4gWFBUU3RyaW5nICoKWFBUX05ld1N0cmlu
ZyhYUFRBcmVuYSAqYXJlbmEsIFBSVWludDE2IGxlbmd0aCwgY2hhciAqYnl0ZXMpOwoKZXh0ZXJu
IFhQVFN0cmluZyAqClhQVF9OZXdTdHJpbmdaKFhQVEFyZW5hICphcmVuYSwgY2hhciAqYnl0ZXMp
OwojIDMzMiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL3hwdF9zdHJ1Y3QuaCIKc3RydWN0
IFhQVFR5cGVEZXNjcmlwdG9yUHJlZml4IHsKICAgIFBSVWludDggZmxhZ3M7Cn07CiMgMzUyICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20veHB0X3N0cnVjdC5oIgplbnVtIFhQVFR5cGVEZXNj
cmlwdG9yVGFncyB7CiAgICBURF9JTlQ4ID0gMCwKICAgIFREX0lOVDE2ID0gMSwKICAgIFREX0lO
VDMyID0gMiwKICAgIFREX0lOVDY0ID0gMywKICAgIFREX1VJTlQ4ID0gNCwKICAgIFREX1VJTlQx
NiA9IDUsCiAgICBURF9VSU5UMzIgPSA2LAogICAgVERfVUlOVDY0ID0gNywKICAgIFREX0ZMT0FU
ID0gOCwKICAgIFREX0RPVUJMRSA9IDksCiAgICBURF9CT09MID0gMTAsCiAgICBURF9DSEFSID0g
MTEsCiAgICBURF9XQ0hBUiA9IDEyLAogICAgVERfVk9JRCA9IDEzLAogICAgVERfUE5TSUlEID0g
MTQsCiAgICBURF9ET01TVFJJTkcgPSAxNSwKICAgIFREX1BTVFJJTkcgPSAxNiwKICAgIFREX1BX
U1RSSU5HID0gMTcsCiAgICBURF9JTlRFUkZBQ0VfVFlQRSA9IDE4LAogICAgVERfSU5URVJGQUNF
X0lTX1RZUEUgPSAxOSwKICAgIFREX0FSUkFZID0gMjAsCiAgICBURF9QU1RSSU5HX1NJWkVfSVMg
PSAyMSwKICAgIFREX1BXU1RSSU5HX1NJWkVfSVMgPSAyMiwKICAgIFREX1VURjhTVFJJTkcgPSAy
MywKICAgIFREX0NTVFJJTkcgPSAyNCwKICAgIFREX0FTVFJJTkcgPSAyNQp9OwoKc3RydWN0IFhQ
VFR5cGVEZXNjcmlwdG9yIHsKICAgIFhQVFR5cGVEZXNjcmlwdG9yUHJlZml4IHByZWZpeDsKICAg
IFBSVWludDggYXJnbnVtOwogICAgUFJVaW50OCBhcmdudW0yOwogICAgdW5pb24gewogICAgICAg
IFBSVWludDE2IGlmYWNlOwogICAgICAgIFBSVWludDE2IGFkZGl0aW9uYWxfdHlwZTsKICAgIH0g
dHlwZTsKfTsKIyA0MTQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS94cHRfc3RydWN0Lmgi
CnVuaW9uIFhQVENvbnN0VmFsdWUgewogICAgUFJJbnQ4IGk4OwogICAgUFJVaW50OCB1aTg7CiAg
ICBQUkludDE2IGkxNjsKICAgIFBSVWludDE2IHVpMTY7CiAgICBQUkludDMyIGkzMjsKICAgIFBS
VWludDMyIHVpMzI7CiAgICBQUkludDY0IGk2NDsKICAgIFBSVWludDY0IHVpNjQ7CiAgICBmbG9h
dCBmbHQ7CiAgICBkb3VibGUgZGJsOwogICAgUFJCb29sIGJ1bDsKICAgIGNoYXIgY2g7CiAgICBQ
UlVpbnQxNiB3Y2g7CiAgICBuc0lEICppaWQ7CiAgICBYUFRTdHJpbmcgKnN0cmluZzsKICAgIGNo
YXIgKnN0cjsKICAgIFBSVWludDE2ICp3c3RyOwp9OwoKc3RydWN0IFhQVENvbnN0RGVzY3JpcHRv
ciB7CiAgICBjaGFyICpuYW1lOwogICAgWFBUVHlwZURlc2NyaXB0b3IgdHlwZTsKICAgIHVuaW9u
IFhQVENvbnN0VmFsdWUgdmFsdWU7Cn07CgoKCgoKc3RydWN0IFhQVFBhcmFtRGVzY3JpcHRvciB7
CiAgICBQUlVpbnQ4IGZsYWdzOwogICAgWFBUVHlwZURlc2NyaXB0b3IgdHlwZTsKfTsKIyA0Njcg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS94cHRfc3RydWN0LmgiCmV4dGVybiBQUkJvb2wK
WFBUX0ZpbGxQYXJhbURlc2NyaXB0b3IoWFBUQXJlbmEgKmFyZW5hLAogICAgICAgICAgICAgICAg
ICAgICAgICBYUFRQYXJhbURlc2NyaXB0b3IgKnBkLCBQUlVpbnQ4IGZsYWdzLAogICAgICAgICAg
ICAgICAgICAgICAgICBYUFRUeXBlRGVzY3JpcHRvciAqdHlwZSk7CgoKCgoKc3RydWN0IFhQVE1l
dGhvZERlc2NyaXB0b3IgewogICAgY2hhciAqbmFtZTsKICAgIFhQVFBhcmFtRGVzY3JpcHRvciAq
cGFyYW1zOwogICAgWFBUUGFyYW1EZXNjcmlwdG9yICpyZXN1bHQ7CiAgICBQUlVpbnQ4IGZsYWdz
OwogICAgUFJVaW50OCBudW1fYXJnczsKfTsKIyA0OTggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94
cGNvbS94cHRfc3RydWN0LmgiCmV4dGVybiBQUkJvb2wKWFBUX0ZpbGxNZXRob2REZXNjcmlwdG9y
KFhQVEFyZW5hICphcmVuYSwKICAgICAgICAgICAgICAgICAgICAgICAgIFhQVE1ldGhvZERlc2Ny
aXB0b3IgKm1ldGgsIFBSVWludDggZmxhZ3MsIGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBQUlVpbnQ4IG51bV9hcmdzKTsKIyA1MjIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94
cGNvbS94cHRfc3RydWN0LmgiCnN0cnVjdCBYUFRBbm5vdGF0aW9uIHsKICAgIFhQVEFubm90YXRp
b24gKm5leHQ7CiAgICBQUlVpbnQ4IGZsYWdzOwoKICAgIFhQVFN0cmluZyAqY3JlYXRvcjsKICAg
IFhQVFN0cmluZyAqcHJpdmF0ZV9kYXRhOwp9OwoKCgoKCgpleHRlcm4gWFBUQW5ub3RhdGlvbiAq
ClhQVF9OZXdBbm5vdGF0aW9uKFhQVEFyZW5hICphcmVuYSwgUFJVaW50OCBmbGFncywgWFBUU3Ry
aW5nICpjcmVhdG9yLAogICAgICAgICAgICAgICAgICBYUFRTdHJpbmcgKnByaXZhdGVfZGF0YSk7
Cgp9CiMgNDUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS94cHRpbmZvLmgiIDIKIyA3NCAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL3hwdGluZm8uaCIKY2xhc3MgbnNJSW50ZXJmYWNl
SW5mb01hbmFnZXI7CmV4dGVybiAiQyIgewoKbnNJSW50ZXJmYWNlSW5mb01hbmFnZXIqClhQVElf
R2V0SW50ZXJmYWNlSW5mb01hbmFnZXIoKTsKCgp2b2lkClhQVElfRnJlZUludGVyZmFjZUluZm9N
YW5hZ2VyKCk7Cn0KCgoKCgoKCmNsYXNzIG5zWFBUVHlwZSA6IHB1YmxpYyBYUFRUeXBlRGVzY3Jp
cHRvclByZWZpeAp7CgpwdWJsaWM6CiAgICBuc1hQVFR5cGUoKQogICAgICAgIHt9CiAgICBuc1hQ
VFR5cGUoY29uc3QgWFBUVHlwZURlc2NyaXB0b3JQcmVmaXgmIHByZWZpeCkKICAgICAgICB7KihY
UFRUeXBlRGVzY3JpcHRvclByZWZpeCopdGhpcyA9IHByZWZpeDt9CgogICAgbnNYUFRUeXBlKGNv
bnN0IHVpbnQ4JiBwcmVmaXgpCiAgICAgICAgeyoodWludDgqKXRoaXMgPSBwcmVmaXg7fQoKICAg
IG5zWFBUVHlwZSYgb3BlcmF0b3I9KHVpbnQ4IHZhbCkKICAgICAgICB7ZmxhZ3MgPSB2YWw7IHJl
dHVybiAqdGhpczt9CgogICAgbnNYUFRUeXBlJiBvcGVyYXRvcj0oY29uc3QgbnNYUFRUeXBlJiBv
dGhlcikKICAgICAgICB7ZmxhZ3MgPSBvdGhlci5mbGFnczsgcmV0dXJuICp0aGlzO30KCiAgICBv
cGVyYXRvciB1aW50OCgpIGNvbnN0CiAgICAgICAge3JldHVybiBmbGFnczt9CgogICAgUFJCb29s
IElzUG9pbnRlcigpIGNvbnN0CiAgICAgICAge3JldHVybiAwICE9ICgoZmxhZ3MgJiAweDgwKSk7
fQoKICAgIFBSQm9vbCBJc1VuaXF1ZVBvaW50ZXIoKSBjb25zdAogICAgICAgIHtyZXR1cm4gMCAh
PSAoKGZsYWdzICYgMHg0MCkpO30KCiAgICBQUkJvb2wgSXNSZWZlcmVuY2UoKSBjb25zdAogICAg
ICAgIHtyZXR1cm4gMCAhPSAoKGZsYWdzICYgMHgyMCkpO30KCiAgICBQUkJvb2wgSXNBcml0aG1l
dGljKCkgY29uc3QKICAgICAgICB7cmV0dXJuIGZsYWdzIDw9IFRfV0NIQVI7fQoKICAgIFBSQm9v
bCBJc0ludGVyZmFjZVBvaW50ZXIoKSBjb25zdAogICAgICAgIHsgc3dpdGNoIChUYWdQYXJ0KCkp
IHsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICAgICAgY2FzZSBUX0lOVEVSRkFDRToKICAgICAgICAgICAgIGNhc2UgVF9JTlRFUkZBQ0VfSVM6
CiAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgIH0KICAgICAgICB9CgogICAgUFJC
b29sIElzQXJyYXkoKSBjb25zdAogICAgICAgIHtyZXR1cm4gKFBSQm9vbCkgVGFnUGFydCgpID09
IFRfQVJSQVk7fQoKCgoKICAgIFBSQm9vbCBJc0RlcGVuZGVudCgpIGNvbnN0CiAgICAgICAgeyBz
d2l0Y2ggKFRhZ1BhcnQoKSkgewogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgICAgICBjYXNlIFRfSU5URVJGQUNFX0lTOgogICAgICAgICAgICAg
Y2FzZSBURF9BUlJBWToKICAgICAgICAgICAgIGNhc2UgVF9QU1RSSU5HX1NJWkVfSVM6CiAgICAg
ICAgICAgICBjYXNlIFRfUFdTVFJJTkdfU0laRV9JUzoKICAgICAgICAgICAgICAgcmV0dXJuIDE7
CiAgICAgICAgICAgfQogICAgICAgIH0KCiAgICB1aW50OCBUYWdQYXJ0KCkgY29uc3QKICAgICAg
ICB7cmV0dXJuICh1aW50OCkgKGZsYWdzICYgKH4weGUwKSk7fQoKICAgIGVudW0KICAgIHsKICAg
ICAgICBUX0k4ID0gVERfSU5UOCAsCiAgICAgICAgVF9JMTYgPSBURF9JTlQxNiAsCiAgICAgICAg
VF9JMzIgPSBURF9JTlQzMiAsCiAgICAgICAgVF9JNjQgPSBURF9JTlQ2NCAsCiAgICAgICAgVF9V
OCA9IFREX1VJTlQ4ICwKICAgICAgICBUX1UxNiA9IFREX1VJTlQxNiAsCiAgICAgICAgVF9VMzIg
PSBURF9VSU5UMzIgLAogICAgICAgIFRfVTY0ID0gVERfVUlOVDY0ICwKICAgICAgICBUX0ZMT0FU
ID0gVERfRkxPQVQgLAogICAgICAgIFRfRE9VQkxFID0gVERfRE9VQkxFICwKICAgICAgICBUX0JP
T0wgPSBURF9CT09MICwKICAgICAgICBUX0NIQVIgPSBURF9DSEFSICwKICAgICAgICBUX1dDSEFS
ID0gVERfV0NIQVIgLAogICAgICAgIFRfVk9JRCA9IFREX1ZPSUQgLAogICAgICAgIFRfSUlEID0g
VERfUE5TSUlEICwKICAgICAgICBUX0RPTVNUUklORyA9IFREX0RPTVNUUklORyAsCiAgICAgICAg
VF9DSEFSX1NUUiA9IFREX1BTVFJJTkcgLAogICAgICAgIFRfV0NIQVJfU1RSID0gVERfUFdTVFJJ
TkcgLAogICAgICAgIFRfSU5URVJGQUNFID0gVERfSU5URVJGQUNFX1RZUEUgLAogICAgICAgIFRf
SU5URVJGQUNFX0lTID0gVERfSU5URVJGQUNFX0lTX1RZUEUsCiAgICAgICAgVF9BUlJBWSA9IFRE
X0FSUkFZICwKICAgICAgICBUX1BTVFJJTkdfU0laRV9JUyA9IFREX1BTVFJJTkdfU0laRV9JUyAs
CiAgICAgICAgVF9QV1NUUklOR19TSVpFX0lTID0gVERfUFdTVFJJTkdfU0laRV9JUyAsCiAgICAg
ICAgVF9VVEY4U1RSSU5HID0gVERfVVRGOFNUUklORyAsCiAgICAgICAgVF9DU1RSSU5HID0gVERf
Q1NUUklORyAsCiAgICAgICAgVF9BU1RSSU5HID0gVERfQVNUUklORwogICAgfTsKCn07CgpjbGFz
cyBuc1hQVFBhcmFtSW5mbyA6IHB1YmxpYyBYUFRQYXJhbURlc2NyaXB0b3IKewoKcHVibGljOgog
ICAgbnNYUFRQYXJhbUluZm8oY29uc3QgWFBUUGFyYW1EZXNjcmlwdG9yJiBkZXNjKQogICAgICAg
IHsqKFhQVFBhcmFtRGVzY3JpcHRvciopdGhpcyA9IGRlc2M7fQoKCiAgICBQUkJvb2wgSXNJbigp
IGNvbnN0IHtyZXR1cm4gMCAhPSAoKGZsYWdzICYgMHg4MCkpO30KICAgIFBSQm9vbCBJc091dCgp
IGNvbnN0IHtyZXR1cm4gMCAhPSAoKGZsYWdzICYgMHg0MCkpO30KICAgIFBSQm9vbCBJc1JldHZh
bCgpIGNvbnN0IHtyZXR1cm4gMCAhPSAoKGZsYWdzICYgMHgyMCkpO30KICAgIFBSQm9vbCBJc1No
YXJlZCgpIGNvbnN0IHtyZXR1cm4gMCAhPSAoKGZsYWdzICYgMHgxMCkpO30KICAgIFBSQm9vbCBJ
c0RpcHBlcigpIGNvbnN0IHtyZXR1cm4gMCAhPSAoKGZsYWdzICYgMHgwOCkpO30KICAgIGNvbnN0
IG5zWFBUVHlwZSBHZXRUeXBlKCkgY29uc3Qge3JldHVybiB0eXBlLnByZWZpeDt9CgoKCnByaXZh
dGU6CiAgICBuc1hQVFBhcmFtSW5mbygpOwoKfTsKCmNsYXNzIG5zWFBUTWV0aG9kSW5mbyA6IHB1
YmxpYyBYUFRNZXRob2REZXNjcmlwdG9yCnsKCnB1YmxpYzoKICAgIG5zWFBUTWV0aG9kSW5mbyhj
b25zdCBYUFRNZXRob2REZXNjcmlwdG9yJiBkZXNjKQogICAgICAgIHsqKFhQVE1ldGhvZERlc2Ny
aXB0b3IqKXRoaXMgPSBkZXNjO30KCiAgICBQUkJvb2wgSXNHZXR0ZXIoKSBjb25zdCB7cmV0dXJu
IDAgIT0gKChmbGFncyAmIDB4ODApICk7fQogICAgUFJCb29sIElzU2V0dGVyKCkgY29uc3Qge3Jl
dHVybiAwICE9ICgoZmxhZ3MgJiAweDQwKSApO30KICAgIFBSQm9vbCBJc05vdFhQQ09NKCkgY29u
c3Qge3JldHVybiAwICE9ICgoZmxhZ3MgJiAweDIwKSk7fQogICAgUFJCb29sIElzQ29uc3RydWN0
b3IoKSBjb25zdCB7cmV0dXJuIDAgIT0gKChmbGFncyAmIDB4MTApICk7fQogICAgUFJCb29sIElz
SGlkZGVuKCkgY29uc3Qge3JldHVybiAwICE9ICgoZmxhZ3MgJiAweDA4KSApO30KICAgIGNvbnN0
IGNoYXIqIEdldE5hbWUoKSBjb25zdCB7cmV0dXJuIG5hbWU7fQogICAgdWludDggR2V0UGFyYW1D
b3VudCgpIGNvbnN0IHtyZXR1cm4gbnVtX2FyZ3M7fQoKICAgIGNvbnN0IG5zWFBUUGFyYW1JbmZv
IEdldFBhcmFtKHVpbnQ4IGlkeCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICAgIDsKICAgICAg
ICAgICAgcmV0dXJuIHBhcmFtc1tpZHhdOwogICAgICAgIH0KICAgIGNvbnN0IG5zWFBUUGFyYW1J
bmZvIEdldFJlc3VsdCgpIGNvbnN0CiAgICAgICAge3JldHVybiAqcmVzdWx0O30KcHJpdmF0ZToK
ICAgIG5zWFBUTWV0aG9kSW5mbygpOwoKfTsKCgoKc3RydWN0IG5zWFBUQ01pbmlWYXJpYW50OwoK
Y2xhc3MgbnNYUFRDb25zdGFudCA6IHB1YmxpYyBYUFRDb25zdERlc2NyaXB0b3IKewoKcHVibGlj
OgogICAgbnNYUFRDb25zdGFudChjb25zdCBYUFRDb25zdERlc2NyaXB0b3ImIGRlc2MpCiAgICAg
ICAgeyooWFBUQ29uc3REZXNjcmlwdG9yKil0aGlzID0gZGVzYzt9CgogICAgY29uc3QgY2hhciog
R2V0TmFtZSgpIGNvbnN0CiAgICAgICAge3JldHVybiBuYW1lO30KCiAgICBjb25zdCBuc1hQVFR5
cGUgR2V0VHlwZSgpIGNvbnN0CiAgICAgICAge3JldHVybiB0eXBlLnByZWZpeDt9CgoKCgoKICAg
IGNvbnN0IG5zWFBUQ01pbmlWYXJpYW50KiBHZXRWYWx1ZSgpIGNvbnN0CiAgICAgICAge3JldHVy
biAobnNYUFRDTWluaVZhcmlhbnQqKSAmdmFsdWU7fQpwcml2YXRlOgogICAgbnNYUFRDb25zdGFu
dCgpOwoKfTsKIyA0NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29ubmVjdC9uc0lYUENvbm5l
Y3QuaCIgMgojIDExNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29ubmVjdC9uc0lYUENvbm5l
Y3QuaCIKY2xhc3MgbnNJWFBDU2NyaXB0YWJsZTsKCmNsYXNzIG5zSVhQQ29ubmVjdDsKCmNsYXNz
IG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmU7CgpjbGFzcyBuc0lJbnRlcmZhY2VJbmZvOwoKY2xh
c3MgbnNJWFBDU2VjdXJpdHlNYW5hZ2VyOwojIDEzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29ubmVjdC9uc0lYUENvbm5lY3QuaCIKY2xhc3MgbnNJWFBDb25uZWN0SlNPYmplY3RIb2xkZXIg
OiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdl
dElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4ODkxNmEzMjAsIDB4ZDExOCwgMHgx
MWQzLCB7IDB4OGYsIDB4M2EsIDB4MDAsIDB4MTAsIDB4YTQsIDB4ZTcsIDB4M2QsIDB4OWEgfX07
IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRKU09iamVjdChKU09iamVjdCAq
ICphSlNPYmplY3QpID0gMDsKCn07CiMgMjAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb25u
ZWN0L25zSVhQQ29ubmVjdC5oIgpjbGFzcyBuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlIDogcHVi
bGljIG5zSVhQQ29ubmVjdEpTT2JqZWN0SG9sZGVyIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0
IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDIxNWRiZTAyLCAw
eDk0YTcsIDB4MTFkMiwgeyAweGJhLCAweDU4LCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweDVk
LCAweGQ3IH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TmF0aXZlKG5z
SVN1cHBvcnRzICogKmFOYXRpdmUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SlNPYmpl
Y3RQcm90b3R5cGUoSlNPYmplY3QgKiAqYUpTT2JqZWN0UHJvdG90eXBlKSA9IDA7CgoKCgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldFhQQ29ubmVjdChuc0lYUENvbm5lY3QgKiAqYVhQQ29ubmVjdCkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBGaW5kSW50ZXJmYWNlV2l0aE1lbWJlcihqc3ZhbCBu
YW1lSUQsIG5zSUludGVyZmFjZUluZm8gKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEZpbmRJbnRlcmZhY2VXaXRoTmFtZShqc3ZhbCBuYW1lSUQsIG5zSUludGVyZmFjZUluZm8g
KipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IERlYnVnRHVtcChQUkludDE2IGRl
cHRoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFJlZnJlc2hQcm90b3R5cGUodm9pZCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTZWN1cml0eUluZm9BZGRyZXNzKHZvaWQqICogKl9y
ZXR2YWwpID0gMDsKCn07CiMgMzU1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb25uZWN0L25z
SVhQQ29ubmVjdC5oIgpjbGFzcyBuc0lYUENvbm5lY3RXcmFwcGVkSlMgOiBwdWJsaWMgbnNJWFBD
b25uZWN0SlNPYmplY3RIb2xkZXIgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdl
dElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YmVkNTIwMzAsIDB4YmNhNiwgMHgx
MWQyLCB7IDB4YmEsIDB4NzksIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4NWQsIDB4ZDcgfX07
IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRJbnRlcmZhY2VJbmZvKG5zSUlu
dGVyZmFjZUluZm8gKiAqYUludGVyZmFjZUluZm8pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0SW50ZXJmYWNlSUlEKG5zSUlEICogKmFJbnRlcmZhY2VJSUQpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgRGVidWdEdW1wKFBSSW50MTYgZGVwdGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgQWdncmVnYXRlZFF1ZXJ5SW50ZXJmYWNlKGNvbnN0IG5zSUlEICYgdXVpZCwgdm9pZCAqICpy
ZXN1bHQpID0gMDsKCn07CiMgNDY2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb25uZWN0L25z
SVhQQ29ubmVjdC5oIgpjbGFzcyBuc0lYUENOYXRpdmVDYWxsQ29udGV4dCA6IHB1YmxpYyBuc0lT
dXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRp
YyBjb25zdCBuc0lJRCBpaWQgPSB7MHgwZmE2OGE2MCwgMHg4Mjg5LCAweDExZDMsIHsgMHhiYiwg
MHgxYSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHg1ZCwgMHhkNyB9fTsgcmV0dXJuIGlpZDt9
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENhbGxlZShuc0lTdXBwb3J0cyAqICphQ2FsbGVlKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENhbGxlZU1ldGhvZEluZGV4KFBSVWludDE2ICph
Q2FsbGVlTWV0aG9kSW5kZXgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q2FsbGVlV3Jh
cHBlcihuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICogKmFDYWxsZWVXcmFwcGVyKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldEpTQ29udGV4dChKU0NvbnRleHQgKiAqYUpTQ29udGV4dCkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBcmdjKFBSVWludDMyICphQXJnYykgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBcmd2UHRyKGpzdmFsICogKmFBcmd2UHRyKSA9IDA7CgoK
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJldFZhbFB0cihqc3ZhbCAqICphUmV0VmFsUHRyKSA9
IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RXhjZXB0aW9uV2FzVGhyb3duKFBSQm9v
bCAqYUV4Y2VwdGlvbldhc1Rocm93bikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RXhjZXB0
aW9uV2FzVGhyb3duKFBSQm9vbCBhRXhjZXB0aW9uV2FzVGhyb3duKSA9IDA7CgoKCgoKCgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0UmV0dXJuVmFsdWVXYXNTZXQoUFJCb29sICphUmV0dXJuVmFsdWVX
YXNTZXQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFJldHVyblZhbHVlV2FzU2V0KFBSQm9v
bCBhUmV0dXJuVmFsdWVXYXNTZXQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q2FsbGVl
SW50ZXJmYWNlKG5zSUludGVyZmFjZUluZm8gKiAqYUNhbGxlZUludGVyZmFjZSkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRDYWxsZWVDbGFzc0luZm8obnNJQ2xhc3NJbmZvICogKmFDYWxs
ZWVDbGFzc0luZm8pID0gMDsKCn07CiMgNzUzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb25u
ZWN0L25zSVhQQ29ubmVjdC5oIgpjbGFzcyBuc0lYUENXcmFwcGVkSlNPYmplY3RHZXR0ZXIgOiBw
dWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJ
RCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4MjU0YmIyZTAsIDB4NjQzOSwgMHgxMWQ0
LCB7IDB4OGYsIDB4ZTAsIDB4MDAsIDB4MTAsIDB4YTQsIDB4ZTcsIDB4M2QsIDB4OWEgfX07IHJl
dHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROZXZlckNhbGxlZChuc0lTdXBwb3J0
cyAqICphTmV2ZXJDYWxsZWQpID0gMDsKCn07CiMgODIxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
eHBjb25uZWN0L25zSVhQQ29ubmVjdC5oIgpjbGFzcyBuc0lYUENGdW5jdGlvblRoaXNUcmFuc2xh
dG9yIDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlE
JiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDAzOWVmMjYwLCAweDJhMGQs
IDB4MTFkNSwgeyAweDkwLCAweGE3LCAweDAwLCAweDEwLCAweGE0LCAweGU3LCAweDNkLCAweDlh
IH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgVHJhbnNsYXRlVGhpcyhuc0lT
dXBwb3J0cyAqYUluaXRpYWxUaGlzLCBuc0lJbnRlcmZhY2VJbmZvICphSW50ZXJmYWNlSW5mbywg
UFJVaW50MTYgYU1ldGhvZEluZGV4LCBQUkJvb2wgKmFIaWRlRmlyc3RQYXJhbUZyb21KUywgbnNJ
SUQgKiAqYUlJRE9mUmVzdWx0LCBuc0lTdXBwb3J0cyAqKl9yZXR2YWwpID0gMDsKCn07CiMgODkz
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb25uZWN0L25zSVhQQ29ubmVjdC5oIgpjbGFzcyBu
c0lYUENvbm5lY3QgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29u
c3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4ZWZhZTM3YjAs
IDB4OTQ2ZCwgMHgxMWQyLCB7IDB4YmEsIDB4NTgsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4
NWQsIDB4ZDcgfX07IHJldHVybiBpaWQ7fQoKICBzdGF0aWMgY29uc3QgbnNJRCYgR2V0Q0lEKCkg
e3N0YXRpYyBjb25zdCBuc0lEIGNpZCA9IHsgMHhjYjY1OTNlMCwgMHhmOWIyLCAweDExZDIsIHsg
MHhiZCwgMHhkNiwgMHgwLCAweDAsIDB4NjQsIDB4NjUsIDB4NzMsIDB4NzQgfSB9OyByZXR1cm4g
Y2lkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgSW5pdENsYXNzZXMoSlNDb250ZXh0ICogYUpTQ29u
dGV4dCwgSlNPYmplY3QgKiBhR2xvYmFsSlNPYmopID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
SW5pdENsYXNzZXNXaXRoTmV3V3JhcHBlZEdsb2JhbChKU0NvbnRleHQgKiBhSlNDb250ZXh0LCBu
c0lTdXBwb3J0cyAqYUNPTU9iaiwgY29uc3QgbnNJSUQgJiBhSUlELCBQUkJvb2wgYUNhbGxKU19J
bml0U3RhbmRhcmRDbGFzc2VzLCBuc0lYUENvbm5lY3RKU09iamVjdEhvbGRlciAqKl9yZXR2YWwp
ID0gMDsKIyA5MzkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbm5lY3QvbnNJWFBDb25uZWN0
LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBXcmFwTmF0aXZlKEpTQ29udGV4dCAqIGFKU0NvbnRleHQs
IEpTT2JqZWN0ICogYVNjb3BlLCBuc0lTdXBwb3J0cyAqYUNPTU9iaiwgY29uc3QgbnNJSUQgJiBh
SUlELCBuc0lYUENvbm5lY3RKU09iamVjdEhvbGRlciAqKl9yZXR2YWwpID0gMDsKIyA5NjUgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbm5lY3QvbnNJWFBDb25uZWN0LmgiCiAgdmlydHVhbCBu
c3Jlc3VsdCBXcmFwSlMoSlNDb250ZXh0ICogYUpTQ29udGV4dCwgSlNPYmplY3QgKiBhSlNPYmos
IGNvbnN0IG5zSUlEICYgYUlJRCwgdm9pZCAqICpyZXN1bHQpID0gMDsKCgoKCgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldFdyYXBwZWROYXRpdmVPZkpTT2JqZWN0KEpTQ29udGV4dCAqIGFKU0NvbnRl
eHQsIEpTT2JqZWN0ICogYUpTT2JqLCBuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICoqX3JldHZh
bCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRTZWN1cml0eU1hbmFnZXJGb3JKU0NvbnRl
eHQoSlNDb250ZXh0ICogYUpTQ29udGV4dCwgbnNJWFBDU2VjdXJpdHlNYW5hZ2VyICphTWFuYWdl
ciwgUFJVaW50MTYgZmxhZ3MpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2VjdXJpdHlN
YW5hZ2VyRm9ySlNDb250ZXh0KEpTQ29udGV4dCAqIGFKU0NvbnRleHQsIG5zSVhQQ1NlY3VyaXR5
TWFuYWdlciAqKmFNYW5hZ2VyLCBQUlVpbnQxNiAqZmxhZ3MpID0gMDsKCgoKCgoKICB2aXJ0dWFs
IG5zcmVzdWx0IFNldERlZmF1bHRTZWN1cml0eU1hbmFnZXIobnNJWFBDU2VjdXJpdHlNYW5hZ2Vy
ICphTWFuYWdlciwgUFJVaW50MTYgZmxhZ3MpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
RGVmYXVsdFNlY3VyaXR5TWFuYWdlcihuc0lYUENTZWN1cml0eU1hbmFnZXIgKiphTWFuYWdlciwg
UFJVaW50MTYgKmZsYWdzKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENyZWF0ZVN0YWNrRnJh
bWVMb2NhdGlvbihQUlVpbnQzMiBhTGFuZ3VhZ2UsIGNvbnN0IGNoYXIgKmFGaWxlbmFtZSwgY29u
c3QgY2hhciAqYUZ1bmN0aW9uTmFtZSwgUFJJbnQzMiBhTGluZU51bWJlciwgbnNJU3RhY2tGcmFt
ZSAqYUNhbGxlciwgbnNJU3RhY2tGcmFtZSAqKl9yZXR2YWwpID0gMDsKIyAxMDAxICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUveHBjb25uZWN0L25zSVhQQ29ubmVjdC5oIgogIHZpcnR1YWwgbnNyZXN1
bHQgU3luY0pTQ29udGV4dHModm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDdXJy
ZW50SlNTdGFjayhuc0lTdGFja0ZyYW1lICogKmFDdXJyZW50SlNTdGFjaykgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRDdXJyZW50TmF0aXZlQ2FsbENvbnRleHQobnNJWFBDTmF0aXZlQ2Fs
bENvbnRleHQgKiAqYUN1cnJlbnROYXRpdmVDYWxsQ29udGV4dCkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRQZW5kaW5nRXhjZXB0aW9uKG5zSUV4Y2VwdGlvbiAqICphUGVuZGluZ0V4Y2Vw
dGlvbikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UGVuZGluZ0V4Y2VwdGlvbihuc0lFeGNl
cHRpb24gKiBhUGVuZGluZ0V4Y2VwdGlvbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBEZWJ1
Z0R1bXAoUFJJbnQxNiBkZXB0aCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBEZWJ1Z0R1bXBP
YmplY3QobnNJU3VwcG9ydHMgKmFDT01PYmosIFBSSW50MTYgZGVwdGgpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgRGVidWdEdW1wSlNTdGFjayhQUkJvb2wgc2hvd0FyZ3MsIFBSQm9vbCBzaG93
TG9jYWxzLCBQUkJvb2wgc2hvd1RoaXNQcm9wcykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBE
ZWJ1Z0R1bXBFdmFsSW5KU1N0YWNrRnJhbWUoUFJVaW50MzIgYUZyYW1lTnVtYmVyLCBjb25zdCBj
aGFyICphU291cmNlVGV4dCkgPSAwOwojIDEwMzMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNv
bm5lY3QvbnNJWFBDb25uZWN0LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRTYWZlSlNDb250ZXh0
Rm9yQ3VycmVudFRocmVhZChKU0NvbnRleHQgKiBjeCkgPSAwOwojIDEwNTAgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS94cGNvbm5lY3QvbnNJWFBDb25uZWN0LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBX
cmFwSlNBZ2dyZWdhdGVkVG9OYXRpdmUobnNJU3VwcG9ydHMgKmFPdXRlciwgSlNDb250ZXh0ICog
YUpTQ29udGV4dCwgSlNPYmplY3QgKiBhSlNPYmosIGNvbnN0IG5zSUlEICYgYUlJRCwgdm9pZCAq
ICpyZXN1bHQpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFdyYXBwZWROYXRpdmVP
Zk5hdGl2ZU9iamVjdChKU0NvbnRleHQgKiBhSlNDb250ZXh0LCBKU09iamVjdCAqIGFTY29wZSwg
bnNJU3VwcG9ydHMgKmFDT01PYmosIGNvbnN0IG5zSUlEICYgYUlJRCwgbnNJWFBDb25uZWN0V3Jh
cHBlZE5hdGl2ZSAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RnVuY3Rp
b25UaGlzVHJhbnNsYXRvcihjb25zdCBuc0lJRCAmIGFJSUQsIG5zSVhQQ0Z1bmN0aW9uVGhpc1Ry
YW5zbGF0b3IgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEZ1bmN0aW9u
VGhpc1RyYW5zbGF0b3IoY29uc3QgbnNJSUQgJiBhSUlELCBuc0lYUENGdW5jdGlvblRoaXNUcmFu
c2xhdG9yICphVHJhbnNsYXRvciwgbnNJWFBDRnVuY3Rpb25UaGlzVHJhbnNsYXRvciAqKl9yZXR2
YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVwYXJlbnRXcmFwcGVkTmF0aXZlSWZGb3Vu
ZChKU0NvbnRleHQgKiBhSlNDb250ZXh0LCBKU09iamVjdCAqIGFTY29wZSwgSlNPYmplY3QgKiBh
TmV3UGFyZW50LCBuc0lTdXBwb3J0cyAqYUNPTU9iaiwgbnNJWFBDb25uZWN0SlNPYmplY3RIb2xk
ZXIgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENsZWFyQWxsV3JhcHBlZE5h
dGl2ZVNlY3VyaXR5UG9saWNpZXModm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRX
cmFwcGVkTmF0aXZlUHJvdG90eXBlKEpTQ29udGV4dCAqIGFKU0NvbnRleHQsIEpTT2JqZWN0ICog
YVNjb3BlLCBuc0lDbGFzc0luZm8gKmFDbGFzc0luZm8sIG5zSVhQQ29ubmVjdEpTT2JqZWN0SG9s
ZGVyICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb2xsZWN0R2FyYmFn
ZU9uTWFpblRocmVhZE9ubHkoUFJCb29sICphQ29sbGVjdEdhcmJhZ2VPbk1haW5UaHJlYWRPbmx5
KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDb2xsZWN0R2FyYmFnZU9uTWFpblRocmVhZE9u
bHkoUFJCb29sIGFDb2xsZWN0R2FyYmFnZU9uTWFpblRocmVhZE9ubHkpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0RGVmZXJSZWxlYXNlc1VudGlsQWZ0ZXJHYXJiYWdlQ29sbGVjdGlvbihQ
UkJvb2wgKmFEZWZlclJlbGVhc2VzVW50aWxBZnRlckdhcmJhZ2VDb2xsZWN0aW9uKSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXREZWZlclJlbGVhc2VzVW50aWxBZnRlckdhcmJhZ2VDb2xsZWN0
aW9uKFBSQm9vbCBhRGVmZXJSZWxlYXNlc1VudGlsQWZ0ZXJHYXJiYWdlQ29sbGVjdGlvbikgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZWxlYXNlSlNDb250ZXh0KEpTQ29udGV4dCAqIGFKU0Nv
bnRleHQsIFBSQm9vbCBub0dDKSA9IDA7Cgp9OwojIDE1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
eHBjb25uZWN0L25zSVhQQ1NjcmlwdGFibGUuaCIgMgojIDMxICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUveHBjb25uZWN0L25zSVhQQ1NjcmlwdGFibGUuaCIKY2xhc3MgbnNJWFBDU2NyaXB0YWJsZSA6
IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0
SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhmYTJjM2I4MCwgMHgwZTlkLCAweDEx
ZDUsIHsgMHg5MCwgMHg5MiwgMHgwMCwgMHgxMCwgMHhhNCwgMHhlNywgMHgzZCwgMHg5YSB9fTsg
cmV0dXJuIGlpZDt9CgogIGVudW0geyBXQU5UX1BSRUNSRUFURSA9IDFVIH07CgogIGVudW0geyBX
QU5UX0NSRUFURSA9IDJVIH07CgogIGVudW0geyBXQU5UX1BPU1RDUkVBVEUgPSA0VSB9OwoKICBl
bnVtIHsgV0FOVF9BRERQUk9QRVJUWSA9IDhVIH07CgogIGVudW0geyBXQU5UX0RFTFBST1BFUlRZ
ID0gMTZVIH07CgogIGVudW0geyBXQU5UX0dFVFBST1BFUlRZID0gMzJVIH07CgogIGVudW0geyBX
QU5UX1NFVFBST1BFUlRZID0gNjRVIH07CgogIGVudW0geyBXQU5UX0VOVU1FUkFURSA9IDEyOFUg
fTsKCiAgZW51bSB7IFdBTlRfTkVXRU5VTUVSQVRFID0gMjU2VSB9OwoKICBlbnVtIHsgV0FOVF9O
RVdSRVNPTFZFID0gNTEyVSB9OwoKICBlbnVtIHsgV0FOVF9DT05WRVJUID0gMTAyNFUgfTsKCiAg
ZW51bSB7IFdBTlRfRklOQUxJWkUgPSAyMDQ4VSB9OwoKICBlbnVtIHsgV0FOVF9DSEVDS0FDQ0VT
UyA9IDQwOTZVIH07CgogIGVudW0geyBXQU5UX0NBTEwgPSA4MTkyVSB9OwoKICBlbnVtIHsgV0FO
VF9DT05TVFJVQ1QgPSAxNjM4NFUgfTsKCiAgZW51bSB7IFdBTlRfSEFTSU5TVEFOQ0UgPSAzMjc2
OFUgfTsKCiAgZW51bSB7IFdBTlRfTUFSSyA9IDY1NTM2VSB9OwoKICBlbnVtIHsgVVNFX0pTU1RV
Ql9GT1JfQUREUFJPUEVSVFkgPSAxMzEwNzJVIH07CgogIGVudW0geyBVU0VfSlNTVFVCX0ZPUl9E
RUxQUk9QRVJUWSA9IDI2MjE0NFUgfTsKCiAgZW51bSB7IFVTRV9KU1NUVUJfRk9SX1NFVFBST1BF
UlRZID0gNTI0Mjg4VSB9OwoKICBlbnVtIHsgRE9OVF9FTlVNX1NUQVRJQ19QUk9QUyA9IDEwNDg1
NzZVIH07CgogIGVudW0geyBET05UX0VOVU1fUVVFUllfSU5URVJGQUNFID0gMjA5NzE1MlUgfTsK
CiAgZW51bSB7IERPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFID0gNDE5NDMwNFUgfTsK
CiAgZW51bSB7IENMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkgPSA4Mzg4NjA4VSB9OwoKICBlbnVt
IHsgQUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFID0gMTY3NzcyMTZVIH07CgogIGVudW0g
eyBBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFID0gMzM1NTQ0MzJVIH07CgogIGVudW0geyBE
T05UX1NIQVJFX1BST1RPVFlQRSA9IDY3MTA4ODY0VSB9OwoKICBlbnVtIHsgRE9OVF9SRUZMRUNU
X0lOVEVSRkFDRV9OQU1FUyA9IDEzNDIxNzcyOFUgfTsKCiAgZW51bSB7IFJFU0VSVkVEID0gMjE0
NzQ4MzY0OFUgfTsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q2xhc3NOYW1lKGNoYXIgKiAqYUNs
YXNzTmFtZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTY3JpcHRhYmxlRmxhZ3MoUFJV
aW50MzIgKmFTY3JpcHRhYmxlRmxhZ3MpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUHJlQ3Jl
YXRlKG5zSVN1cHBvcnRzICpuYXRpdmVPYmosIEpTQ29udGV4dCAqIGN4LCBKU09iamVjdCAqIGds
b2JhbE9iaiwgSlNPYmplY3QgKiAqcGFyZW50T2JqKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IENyZWF0ZShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKiBj
eCwgSlNPYmplY3QgKiBvYmopID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUG9zdENyZWF0ZShu
c0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKiBjeCwgSlNPYmpl
Y3QgKiBvYmopID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQWRkUHJvcGVydHkobnNJWFBDb25u
ZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICogY3gsIEpTT2JqZWN0ICogb2Jq
LCBqc3ZhbCBpZCwganN2YWwgKiB2cCwgUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IERlbFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIs
IEpTQ29udGV4dCAqIGN4LCBKU09iamVjdCAqIG9iaiwganN2YWwgaWQsIGpzdmFsICogdnAsIFBS
Qm9vbCAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQcm9wZXJ0eShuc0lY
UENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKiBjeCwgSlNPYmplY3Qg
KiBvYmosIGpzdmFsIGlkLCBqc3ZhbCAqIHZwLCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgU2V0UHJvcGVydHkobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3Jh
cHBlciwgSlNDb250ZXh0ICogY3gsIEpTT2JqZWN0ICogb2JqLCBqc3ZhbCBpZCwganN2YWwgKiB2
cCwgUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEVudW1lcmF0ZShu
c0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKiBjeCwgSlNPYmpl
Y3QgKiBvYmosIFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBOZXdF
bnVtZXJhdGUobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICog
Y3gsIEpTT2JqZWN0ICogb2JqLCBQUlVpbnQzMiBlbnVtX29wLCBqc3ZhbCAqIHN0YXRlcCwganNp
ZCAqaWRwLCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgTmV3UmVz
b2x2ZShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKiBjeCwg
SlNPYmplY3QgKiBvYmosIGpzdmFsIGlkLCBQUlVpbnQzMiBmbGFncywgSlNPYmplY3QgKiAqb2Jq
cCwgUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENvbnZlcnQobnNJ
WFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICogY3gsIEpTT2JqZWN0
ICogb2JqLCBQUlVpbnQzMiB0eXBlLCBqc3ZhbCAqIHZwLCBQUkJvb2wgKl9yZXR2YWwpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgRmluYWxpemUobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAq
d3JhcHBlciwgSlNDb250ZXh0ICogY3gsIEpTT2JqZWN0ICogb2JqKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IENoZWNrQWNjZXNzKG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIs
IEpTQ29udGV4dCAqIGN4LCBKU09iamVjdCAqIG9iaiwganN2YWwgaWQsIFBSVWludDMyIG1vZGUs
IGpzdmFsICogdnAsIFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBD
YWxsKG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqIGN4LCBK
U09iamVjdCAqIG9iaiwgUFJVaW50MzIgYXJnYywganN2YWwgKiBhcmd2LCBqc3ZhbCAqIHZwLCBQ
UkJvb2wgKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ29uc3RydWN0KG5zSVhQ
Q29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqIGN4LCBKU09iamVjdCAq
IG9iaiwgUFJVaW50MzIgYXJnYywganN2YWwgKiBhcmd2LCBqc3ZhbCAqIHZwLCBQUkJvb2wgKl9y
ZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSGFzSW5zdGFuY2UobnNJWFBDb25uZWN0
V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICogY3gsIEpTT2JqZWN0ICogb2JqLCBq
c3ZhbCB2YWwsIFBSQm9vbCAqYnAsIFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBNYXJrKG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4
dCAqIGN4LCBKU09iamVjdCAqIG9iaiwgdm9pZCAqIGFyZywgUFJVaW50MzIgKl9yZXR2YWwpID0g
MDsKCn07CiMgMjc0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNsYXNzSW5mby5o
IiAyCiMgMjkzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNsYXNzSW5mby5oIgp0
eXBlZGVmIG5zSUNsYXNzSW5mbyogKCpuc0RPTUNsYXNzSW5mb0V4dGVybmFsQ29uc3RydWN0b3JG
bmMpCiAgKGNvbnN0IGNoYXIqIGFOYW1lKTsKIyAzMTIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9k
b20vbnNJRE9NQ2xhc3NJbmZvLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25z
SVNlcnZpY2VNYW5hZ2VyLmgiIDEKIyA0MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25z
SVNlcnZpY2VNYW5hZ2VyLmgiCmNsYXNzIG5zSVNlcnZpY2VNYW5hZ2VyIDogcHVibGljIG5zSVN1
cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGlj
IGNvbnN0IG5zSUlEIGlpZCA9IHsweDhiYjM1ZWQ5LCAweGUzMzIsIDB4NDYyZCwgeyAweDkxLCAw
eDU1LCAweDRhLCAweDAwLCAweDJhLCAweGI1LCAweGM5LCAweDU4IH19OyByZXR1cm4gaWlkO30K
IyA1NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVNlcnZpY2VNYW5hZ2VyLmgiCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRTZXJ2aWNlKGNvbnN0IG5zQ0lEICYgYUNsYXNzLCBjb25zdCBu
c0lJRCAmIGFJSUQsIHZvaWQgKiAqcmVzdWx0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dFNlcnZpY2VCeUNvbnRyYWN0SUQoY29uc3QgY2hhciAqYUNvbnRyYWN0SUQsIGNvbnN0IG5zSUlE
ICYgYUlJRCwgdm9pZCAqICpyZXN1bHQpID0gMDsKIyA3NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3hwY29tL25zSVNlcnZpY2VNYW5hZ2VyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBJc1NlcnZpY2VJ
bnN0YW50aWF0ZWQoY29uc3QgbnNDSUQgJiBhQ2xhc3MsIGNvbnN0IG5zSUlEICYgYUlJRCwgUFJC
b29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IElzU2VydmljZUluc3RhbnRp
YXRlZEJ5Q29udHJhY3RJRChjb25zdCBjaGFyICphQ29udHJhY3RJRCwgY29uc3QgbnNJSUQgJiBh
SUlELCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKCn07CiMgMTY2ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUveHBjb20vbnNJU2VydmljZU1hbmFnZXIuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
eHBjb20vbnNYUENPTS5oIiAxCiMgNDIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc1hQ
Q09NLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zWFBDT01DSUQuaCIgMQoj
IDQzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNYUENPTS5oIiAyCgpjbGFzcyBuc0FT
dHJpbmc7CmNsYXNzIG5zQUNTdHJpbmc7CgpjbGFzcyBuc0lDb21wb25lbnRNYW5hZ2VyOwpjbGFz
cyBuc0lDb21wb25lbnRSZWdpc3RyYXI7CmNsYXNzIG5zSVNlcnZpY2VNYW5hZ2VyOwpjbGFzcyBu
c0lGaWxlOwpjbGFzcyBuc0lMb2NhbEZpbGU7CmNsYXNzIG5zSURpcmVjdG9yeVNlcnZpY2VQcm92
aWRlcjsKY2xhc3MgbnNJTWVtb3J5OwojIDkwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20v
bnNYUENPTS5oIgpleHRlcm4gIkMiIG5zcmVzdWx0Ck5TX0luaXRYUENPTTIobnNJU2VydmljZU1h
bmFnZXIqICpyZXN1bHQsCiAgICAgICAgICAgICAgbnNJRmlsZSogYmluRGlyZWN0b3J5LAogICAg
ICAgICAgICAgIG5zSURpcmVjdG9yeVNlcnZpY2VQcm92aWRlciogYXBwRmlsZUxvY2F0aW9uUHJv
dmlkZXIpOwojIDEwNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zWFBDT00uaCIKZXh0
ZXJuICJDIiBuc3Jlc3VsdApOU19TaHV0ZG93blhQQ09NKG5zSVNlcnZpY2VNYW5hZ2VyKiBzZXJ2
TWdyKTsKIyAxMjEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc1hQQ09NLmgiCmV4dGVy
biAiQyIgbnNyZXN1bHQKTlNfR2V0U2VydmljZU1hbmFnZXIobnNJU2VydmljZU1hbmFnZXIqICpy
ZXN1bHQpOwojIDEzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zWFBDT00uaCIKZXh0
ZXJuICJDIiBuc3Jlc3VsdApOU19HZXRDb21wb25lbnRNYW5hZ2VyKG5zSUNvbXBvbmVudE1hbmFn
ZXIqICpyZXN1bHQpOwojIDE0NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zWFBDT00u
aCIKZXh0ZXJuICJDIiBuc3Jlc3VsdApOU19HZXRDb21wb25lbnRSZWdpc3RyYXIobnNJQ29tcG9u
ZW50UmVnaXN0cmFyKiAqcmVzdWx0KTsKIyAxNjAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNv
bS9uc1hQQ09NLmgiCmV4dGVybiAiQyIgbnNyZXN1bHQKTlNfR2V0TWVtb3J5TWFuYWdlcihuc0lN
ZW1vcnkqICpyZXN1bHQpOwojIDE4NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zWFBD
T00uaCIKZXh0ZXJuICJDIiBuc3Jlc3VsdApOU19OZXdMb2NhbEZpbGUoY29uc3QgbnNBU3RyaW5n
ICZwYXRoLAogICAgICAgICAgICAgICAgUFJCb29sIGZvbGxvd0xpbmtzLAogICAgICAgICAgICAg
ICAgbnNJTG9jYWxGaWxlKiAqcmVzdWx0KTsKCmV4dGVybiAiQyIgbnNyZXN1bHQKTlNfTmV3TmF0
aXZlTG9jYWxGaWxlKGNvbnN0IG5zQUNTdHJpbmcgJnBhdGgsCiAgICAgICAgICAgICAgICAgICAg
ICBQUkJvb2wgZm9sbG93TGlua3MsCiAgICAgICAgICAgICAgICAgICAgICBuc0lMb2NhbEZpbGUq
ICpyZXN1bHQpOwojIDE2NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVNlcnZpY2VN
YW5hZ2VyLmgiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJU2VydmljZU1h
bmFnZXJVdGlscy5oIiAxCiMgNDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTZXJ2
aWNlTWFuYWdlclV0aWxzLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVNl
cnZpY2VNYW5hZ2VyLmgiIDEKIyA0MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVNl
cnZpY2VNYW5hZ2VyVXRpbHMuaCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9u
c0lTZXJ2aWNlTWFuYWdlck9ic29sZXRlLmgiIDEKIyA1OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3hwY29tL25zSVNlcnZpY2VNYW5hZ2VyT2Jzb2xldGUuaCIKY2xhc3MgbnNJU2VydmljZU1hbmFn
ZXI7CmNsYXNzIG5zSVNodXRkb3duTGlzdGVuZXI7CmNsYXNzIG5zSURpcmVjdG9yeVNlcnZpY2VQ
cm92aWRlcjsKCmNsYXNzIG5zU2VydmljZU1hbmFnZXJPYnNvbGV0ZTsKIyA3NyAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL3hwY29tL25zSVNlcnZpY2VNYW5hZ2VyT2Jzb2xldGUuaCIKY2xhc3MgbnNJ
U2VydmljZU1hbmFnZXJPYnNvbGV0ZSA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CnB1YmxpYzoKCiAg
ICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0g
eyAweGNmMGRmM2IwLCAweDM0MDEsIDB4MTFkMiwgezB4ODEsIDB4NjMsIDB4MDAsIDB4NjAsIDB4
MDgsIDB4MTEsIDB4OWQsIDB4N2F9IH07IHJldHVybiBpaWQ7fTsKCgoKCgoKCiAgICB2aXJ0dWFs
IG5zcmVzdWx0CiAgICBSZWdpc3RlclNlcnZpY2UoY29uc3QgbnNDSUQmIGFDbGFzcywgbnNJU3Vw
cG9ydHMqIGFTZXJ2aWNlKSA9IDA7CiMgMTAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20v
bnNJU2VydmljZU1hbmFnZXJPYnNvbGV0ZS5oIgogICAgdmlydHVhbCBuc3Jlc3VsdAogICAgVW5y
ZWdpc3RlclNlcnZpY2UoY29uc3QgbnNDSUQmIGFDbGFzcykgPSAwOwoKICAgIHZpcnR1YWwgbnNy
ZXN1bHQKICAgIEdldFNlcnZpY2UoY29uc3QgbnNDSUQmIGFDbGFzcywgY29uc3QgbnNJSUQmIGFJ
SUQsCiAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzKiAqcmVzdWx0LAogICAgICAgICAgICAgICBu
c0lTaHV0ZG93bkxpc3RlbmVyKiBzaHV0ZG93bkxpc3RlbmVyID0gMCkgPSAwOwoKCiAgICB2aXJ0
dWFsIG5zcmVzdWx0CiAgICBSZWxlYXNlU2VydmljZShjb25zdCBuc0NJRCYgYUNsYXNzLCBuc0lT
dXBwb3J0cyogc2VydmljZSwKICAgICAgICAgICAgICAgICAgIG5zSVNodXRkb3duTGlzdGVuZXIq
IHNodXRkb3duTGlzdGVuZXIgPSAwKSA9IDA7CgoKCgogICAgdmlydHVhbCBuc3Jlc3VsdAogICAg
UmVnaXN0ZXJTZXJ2aWNlKGNvbnN0IGNoYXIqIGFDb250cmFjdElELCBuc0lTdXBwb3J0cyogYVNl
cnZpY2UpID0gMDsKCiAgICB2aXJ0dWFsIG5zcmVzdWx0CiAgICBVbnJlZ2lzdGVyU2VydmljZShj
b25zdCBjaGFyKiBhQ29udHJhY3RJRCkgPSAwOwoKICAgIHZpcnR1YWwgbnNyZXN1bHQKICAgIEdl
dFNlcnZpY2UoY29uc3QgY2hhciogYUNvbnRyYWN0SUQsIGNvbnN0IG5zSUlEJiBhSUlELAogICAg
ICAgICAgICAgICBuc0lTdXBwb3J0cyogKnJlc3VsdCwKICAgICAgICAgICAgICAgbnNJU2h1dGRv
d25MaXN0ZW5lciogc2h1dGRvd25MaXN0ZW5lciA9IDApID0gMDsKCgogICAgdmlydHVhbCBuc3Jl
c3VsdAogICAgUmVsZWFzZVNlcnZpY2UoY29uc3QgY2hhciogYUNvbnRyYWN0SUQsIG5zSVN1cHBv
cnRzKiBzZXJ2aWNlLAogICAgICAgICAgICAgICAgICAgbnNJU2h1dGRvd25MaXN0ZW5lciogc2h1
dGRvd25MaXN0ZW5lciA9IDApID0gMDsKCn07CgoKY2xhc3MgbnNTZXJ2aWNlTWFuYWdlciB7CnB1
YmxpYzoKCiAgICBzdGF0aWMgbnNyZXN1bHQKICAgIFJlZ2lzdGVyU2VydmljZShjb25zdCBuc0NJ
RCYgYUNsYXNzLCBuc0lTdXBwb3J0cyogYVNlcnZpY2UpOwoKICAgIHN0YXRpYyBuc3Jlc3VsdAog
ICAgVW5yZWdpc3RlclNlcnZpY2UoY29uc3QgbnNDSUQmIGFDbGFzcyk7CgogICAgc3RhdGljIG5z
cmVzdWx0CiAgICBHZXRTZXJ2aWNlKGNvbnN0IG5zQ0lEJiBhQ2xhc3MsIGNvbnN0IG5zSUlEJiBh
SUlELAogICAgICAgICAgICAgICBuc0lTdXBwb3J0cyogKnJlc3VsdCwKICAgICAgICAgICAgICAg
bnNJU2h1dGRvd25MaXN0ZW5lciogc2h1dGRvd25MaXN0ZW5lciA9IDApOwoKCiAgICBzdGF0aWMg
bnNyZXN1bHQKICAgIFJlbGVhc2VTZXJ2aWNlKGNvbnN0IG5zQ0lEJiBhQ2xhc3MsIG5zSVN1cHBv
cnRzKiBzZXJ2aWNlLAogICAgICAgICAgICAgICAgICAgbnNJU2h1dGRvd25MaXN0ZW5lciogc2h1
dGRvd25MaXN0ZW5lciA9IDApOwoKCgoKICAgIHN0YXRpYyBuc3Jlc3VsdAogICAgUmVnaXN0ZXJT
ZXJ2aWNlKGNvbnN0IGNoYXIqIGFDb250cmFjdElELCBuc0lTdXBwb3J0cyogYVNlcnZpY2UpOwoK
ICAgIHN0YXRpYyBuc3Jlc3VsdAogICAgVW5yZWdpc3RlclNlcnZpY2UoY29uc3QgY2hhciogYUNv
bnRyYWN0SUQpOwoKICAgIHN0YXRpYyBuc3Jlc3VsdAogICAgR2V0U2VydmljZShjb25zdCBjaGFy
KiBhQ29udHJhY3RJRCwgY29uc3QgbnNJSUQmIGFJSUQsCiAgICAgICAgICAgICAgIG5zSVN1cHBv
cnRzKiAqcmVzdWx0LAogICAgICAgICAgICAgICBuc0lTaHV0ZG93bkxpc3RlbmVyKiBzaHV0ZG93
bkxpc3RlbmVyID0gMCk7CgoKICAgIHN0YXRpYyBuc3Jlc3VsdAogICAgUmVsZWFzZVNlcnZpY2Uo
Y29uc3QgY2hhciogYUNvbnRyYWN0SUQsIG5zSVN1cHBvcnRzKiBzZXJ2aWNlLAogICAgICAgICAg
ICAgICAgICAgbnNJU2h1dGRvd25MaXN0ZW5lciogc2h1dGRvd25MaXN0ZW5lciA9IDApOwoKCgoK
CiAgICBzdGF0aWMgbnNyZXN1bHQgR2V0R2xvYmFsU2VydmljZU1hbmFnZXIobnNJU2VydmljZU1h
bmFnZXIqICpyZXN1bHQpOwogICAgc3RhdGljIG5zcmVzdWx0IFNodXRkb3duR2xvYmFsU2Vydmlj
ZU1hbmFnZXIobnNJU2VydmljZU1hbmFnZXIqICpyZXN1bHQpOwp9OwojIDIwMyAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL3hwY29tL25zSVNlcnZpY2VNYW5hZ2VyT2Jzb2xldGUuaCIKY2xhc3MgbnNJ
U2h1dGRvd25MaXN0ZW5lcjsKCgp0ZW1wbGF0ZSA8Y2xhc3MgRGVzdGluYXRpb25UeXBlPgppbmxp
bmUKbnNyZXN1bHQKQ2FsbEdldFNlcnZpY2UoIGNvbnN0IG5zQ0lEICZhQ2xhc3MsCiAgICAgICAg
ICAgICAgICBuc0lTaHV0ZG93bkxpc3RlbmVyKiBzaHV0ZG93bkxpc3RlbmVyLAogICAgICAgICAg
ICAgICAgRGVzdGluYXRpb25UeXBlKiogYURlc3RpbmF0aW9uKQp7CiAgICA7CgogICAgcmV0dXJu
IG5zU2VydmljZU1hbmFnZXI6OkdldFNlcnZpY2UoYUNsYXNzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnNDT01UeXBlSW5mbzxEZXN0aW5hdGlvblR5cGU+OjpHZXRJ
SUQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8IG5zSVN1cHBvcnRzKiogPihhRGVzdGluYXRpb24pLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2h1dGRvd25MaXN0ZW5lcik7Cn0KCnRlbXBsYXRlIDxjbGFz
cyBEZXN0aW5hdGlvblR5cGU+CmlubGluZQpuc3Jlc3VsdApDYWxsR2V0U2VydmljZSggY29uc3Qg
Y2hhciAqYUNvbnRyYWN0SUQsCiAgICAgICAgICAgICAgICBuc0lTaHV0ZG93bkxpc3RlbmVyKiBz
aHV0ZG93bkxpc3RlbmVyLAogICAgICAgICAgICAgICAgRGVzdGluYXRpb25UeXBlKiogYURlc3Rp
bmF0aW9uKQp7CiAgICA7CiAgICA7CgogICAgcmV0dXJuIG5zU2VydmljZU1hbmFnZXI6OkdldFNl
cnZpY2UoYUNvbnRyYWN0SUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuc0NPTVR5cGVJbmZvPERlc3RpbmF0aW9uVHlwZT46OkdldElJRCgpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDwgbnNJU3VwcG9ydHMq
KiA+KGFEZXN0aW5hdGlvbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaHV0ZG93bkxpc3RlbmVyKTsKfQojIDQzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20v
bnNJU2VydmljZU1hbmFnZXJVdGlscy5oIiAyCgoKCgpjbGFzcyBuc0dldFNlcnZpY2VCeUNJRCA6
IHB1YmxpYyBuc0NPTVB0cl9oZWxwZXIKewogcHVibGljOgogICAgbnNHZXRTZXJ2aWNlQnlDSUQo
IGNvbnN0IG5zQ0lEJiBhQ0lELCBuc0lTdXBwb3J0cyogYVNlcnZpY2VNYW5hZ2VyLCBuc3Jlc3Vs
dCogYUVycm9yUHRyICkKICAgICAgICA6IG1DSUQoYUNJRCksCiAgICAgICAgbVNlcnZpY2VNYW5h
Z2VyKCBkb19RdWVyeUludGVyZmFjZShhU2VydmljZU1hbmFnZXIpICksCiAgICAgICAgbUVycm9y
UHRyKGFFcnJvclB0cikKICAgICAgICB7CgogICAgICAgIH0KCiAgICB2aXJ0dWFsIG5zcmVzdWx0
IG9wZXJhdG9yKCkoIGNvbnN0IG5zSUlEJiwgdm9pZCoqICkgY29uc3Q7CiAgICB2aXJ0dWFsIH5u
c0dldFNlcnZpY2VCeUNJRCgpIHt9OwoKIHByaXZhdGU6CiAgICBjb25zdCBuc0NJRCYgbUNJRDsK
ICAgIG5zQ09NUHRyPG5zSVNlcnZpY2VNYW5hZ2VyPiBtU2VydmljZU1hbmFnZXI7CiAgICBuc3Jl
c3VsdCogbUVycm9yUHRyOwp9OwoKaW5saW5lCmNvbnN0IG5zR2V0U2VydmljZUJ5Q0lECmRvX0dl
dFNlcnZpY2UoIGNvbnN0IG5zQ0lEJiBhQ0lELCBuc3Jlc3VsdCogZXJyb3IgPSAwICkKewogICAg
cmV0dXJuIG5zR2V0U2VydmljZUJ5Q0lEKGFDSUQsIDAsIGVycm9yKTsKfQoKaW5saW5lCmNvbnN0
IG5zR2V0U2VydmljZUJ5Q0lECmRvX0dldFNlcnZpY2UoIGNvbnN0IG5zQ0lEJiBhQ0lELCBuc0lT
dXBwb3J0cyogYVNlcnZpY2VNYW5hZ2VyLCBuc3Jlc3VsdCogZXJyb3IgPSAwICkKewogICAgcmV0
dXJuIG5zR2V0U2VydmljZUJ5Q0lEKGFDSUQsIGFTZXJ2aWNlTWFuYWdlciwgZXJyb3IpOwp9Cgpj
bGFzcyBuc0dldFNlcnZpY2VCeUNvbnRyYWN0SUQgOiBwdWJsaWMgbnNDT01QdHJfaGVscGVyCnsK
IHB1YmxpYzoKICAgIG5zR2V0U2VydmljZUJ5Q29udHJhY3RJRCggY29uc3QgY2hhciogYUNvbnRy
YWN0SUQsIG5zSVN1cHBvcnRzKiBhU2VydmljZU1hbmFnZXIsIG5zcmVzdWx0KiBhRXJyb3JQdHIg
KQogICAgICAgIDogbUNvbnRyYWN0SUQoYUNvbnRyYWN0SUQpLAogICAgICAgIG1TZXJ2aWNlTWFu
YWdlciggZG9fUXVlcnlJbnRlcmZhY2UoYVNlcnZpY2VNYW5hZ2VyKSApLAogICAgICAgIG1FcnJv
clB0cihhRXJyb3JQdHIpCiAgICAgICAgewoKICAgICAgICB9CgogICAgdmlydHVhbCBuc3Jlc3Vs
dCBvcGVyYXRvcigpKCBjb25zdCBuc0lJRCYsIHZvaWQqKiApIGNvbnN0OwoKICAgIHZpcnR1YWwg
fm5zR2V0U2VydmljZUJ5Q29udHJhY3RJRCgpIHt9OwoKIHByaXZhdGU6CiAgICBjb25zdCBjaGFy
KiBtQ29udHJhY3RJRDsKICAgIG5zQ09NUHRyPG5zSVNlcnZpY2VNYW5hZ2VyPiBtU2VydmljZU1h
bmFnZXI7CiAgICBuc3Jlc3VsdCogbUVycm9yUHRyOwp9OwoKaW5saW5lCmNvbnN0IG5zR2V0U2Vy
dmljZUJ5Q29udHJhY3RJRApkb19HZXRTZXJ2aWNlKCBjb25zdCBjaGFyKiBhQ29udHJhY3RJRCwg
bnNyZXN1bHQqIGVycm9yID0gMCApCnsKICAgIHJldHVybiBuc0dldFNlcnZpY2VCeUNvbnRyYWN0
SUQoYUNvbnRyYWN0SUQsIDAsIGVycm9yKTsKfQoKaW5saW5lCmNvbnN0IG5zR2V0U2VydmljZUJ5
Q29udHJhY3RJRApkb19HZXRTZXJ2aWNlKCBjb25zdCBjaGFyKiBhQ29udHJhY3RJRCwgbnNJU3Vw
cG9ydHMqIGFTZXJ2aWNlTWFuYWdlciwgbnNyZXN1bHQqIGVycm9yID0gMCApCnsKICAgIHJldHVy
biBuc0dldFNlcnZpY2VCeUNvbnRyYWN0SUQoYUNvbnRyYWN0SUQsIGFTZXJ2aWNlTWFuYWdlciwg
ZXJyb3IpOwp9CgpjbGFzcyBuc0dldFNlcnZpY2VGcm9tQ2F0ZWdvcnkgOiBwdWJsaWMgbnNDT01Q
dHJfaGVscGVyCnsKIHB1YmxpYzoKICAgIG5zR2V0U2VydmljZUZyb21DYXRlZ29yeShjb25zdCBj
aGFyKiBhQ2F0ZWdvcnksIGNvbnN0IGNoYXIqIGFFbnRyeSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuc0lTdXBwb3J0cyogYVNlcnZpY2VNYW5hZ2VyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5zcmVzdWx0KiBhRXJyb3JQdHIpCiAgICAgICAgOiBtQ2F0ZWdvcnkoYUNhdGVn
b3J5KSwKICAgICAgICBtRW50cnkoYUVudHJ5KSwKICAgICAgICBtU2VydmljZU1hbmFnZXIoIGRv
X1F1ZXJ5SW50ZXJmYWNlKGFTZXJ2aWNlTWFuYWdlcikgKSwKICAgICAgICBtRXJyb3JQdHIoYUVy
cm9yUHRyKQogICAgICAgIHsKCiAgICAgICAgfQoKICAgIHZpcnR1YWwgbnNyZXN1bHQgb3BlcmF0
b3IoKSggY29uc3QgbnNJSUQmLCB2b2lkKiogKSBjb25zdDsKICAgIHZpcnR1YWwgfm5zR2V0U2Vy
dmljZUZyb21DYXRlZ29yeSgpIHt9OwogcHJvdGVjdGVkOgogICAgY29uc3QgY2hhciogbUNhdGVn
b3J5OwogICAgY29uc3QgY2hhciogbUVudHJ5OwogICAgbnNDT01QdHI8bnNJU2VydmljZU1hbmFn
ZXI+IG1TZXJ2aWNlTWFuYWdlcjsKICAgIG5zcmVzdWx0KiBtRXJyb3JQdHI7Cn07CgppbmxpbmUK
Y29uc3QgbnNHZXRTZXJ2aWNlRnJvbUNhdGVnb3J5CmRvX0dldFNlcnZpY2VGcm9tQ2F0ZWdvcnko
IGNvbnN0IGNoYXIqIGNhdGVnb3J5LCBjb25zdCBjaGFyKiBlbnRyeSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnNyZXN1bHQqIGVycm9yID0gMCkKewogICAgcmV0dXJuIG5zR2V0U2Vydmlj
ZUZyb21DYXRlZ29yeShjYXRlZ29yeSwgZW50cnksIDAsIGVycm9yKTsKfQoKCnRlbXBsYXRlIDxj
bGFzcyBEZXN0aW5hdGlvblR5cGU+CmlubGluZQpuc3Jlc3VsdApDYWxsR2V0U2VydmljZSggY29u
c3QgbnNDSUQgJmFDbGFzcywKICAgICAgICAgICAgICAgIERlc3RpbmF0aW9uVHlwZSoqIGFEZXN0
aW5hdGlvbikKewogICAgOwoKICAgIG5zQ09NUHRyPG5zSVNlcnZpY2VNYW5hZ2VyPiBtZ3I7CiAg
ICBuc3Jlc3VsdCBydiA9IE5TX0dldFNlcnZpY2VNYW5hZ2VyKGdldHRlcl9BZGRSZWZzKG1ncikp
OwoKICAgIGlmICgoKHJ2KSAmIDB4ODAwMDAwMDApKQogICAgICAgIHJldHVybiBydjsKCiAgICBy
ZXR1cm4gbWdyLT5HZXRTZXJ2aWNlKGFDbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnNDT01UeXBlSW5mbzxEZXN0aW5hdGlvblR5cGU+OjpHZXRJSUQoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDwgdm9pZCoqID4oYURlc3RpbmF0aW9uKSk7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBEZXN0aW5hdGlvblR5cGU+CmlubGluZQpuc3Jlc3VsdApDYWxsR2V0
U2VydmljZSggY29uc3QgY2hhciAqYUNvbnRyYWN0SUQsCiAgICAgICAgICAgICAgICBEZXN0aW5h
dGlvblR5cGUqKiBhRGVzdGluYXRpb24pCnsKICAgIDsKICAgIDsKCiAgICBuc0NPTVB0cjxuc0lT
ZXJ2aWNlTWFuYWdlcj4gbWdyOwogICAgbnNyZXN1bHQgcnYgPSBOU19HZXRTZXJ2aWNlTWFuYWdl
cihnZXR0ZXJfQWRkUmVmcyhtZ3IpKTsKCiAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkKICAg
ICAgICByZXR1cm4gcnY7CgogICAgcmV0dXJuIG1nci0+R2V0U2VydmljZUJ5Q29udHJhY3RJRChh
Q29udHJhY3RJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNDT01U
eXBlSW5mbzxEZXN0aW5hdGlvblR5cGU+OjpHZXRJSUQoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDwgdm9pZCoqID4oYURlc3RpbmF0aW9u
KSk7Cn0KIyAxNjggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTZXJ2aWNlTWFuYWdl
ci5oIiAyCiMgMzEzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNsYXNzSW5mby5o
IiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01TY3JpcHRPYmplY3RGYWN0
b3J5LmgiIDEKIyA0MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01TY3JpcHRPYmpl
Y3RGYWN0b3J5LmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01DbGFzc0lu
Zm8uaCIgMQojIDQ0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVNjcmlwdE9iamVj
dEZhY3RvcnkuaCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHJpbmcu
aCIgMQojIDU0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zU3RyaW5nLmgiCiMgMSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZzIuaCIgMQojIDU4ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvc3RyaW5nL25zU3RyaW5nMi5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9zdHJpbmcvbnNBRmxhdFN0cmluZy5oIiAxCiMgMzAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9zdHJpbmcvbnNBRmxhdFN0cmluZy5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJp
bmcvbnNBU2luZ2xlRnJhZ21lbnRTdHJpbmcuaCIgMQojIDQzICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvc3RyaW5nL25zQVNpbmdsZUZyYWdtZW50U3RyaW5nLmgiCmNsYXNzIG5zQVNpbmdsZUZyYWdt
ZW50U3RyaW5nCiAgICA6IHB1YmxpYyBuc0FTdHJpbmcKICB7CgoKCgoKICAgIHB1YmxpYzoKICAg
ICAgdHlwZWRlZiBjb25zdCBjaGFyX3R5cGUqIGNvbnN0X2NoYXJfaXRlcmF0b3I7CiAgICAgIHR5
cGVkZWYgY2hhcl90eXBlKiBjaGFyX2l0ZXJhdG9yOwoKCiAgICAgIHVzaW5nIGFic3RyYWN0X3N0
cmluZ190eXBlOjpCZWdpblJlYWRpbmc7CiAgICAgIHVzaW5nIGFic3RyYWN0X3N0cmluZ190eXBl
OjpFbmRSZWFkaW5nOwogICAgICB1c2luZyBhYnN0cmFjdF9zdHJpbmdfdHlwZTo6QmVnaW5Xcml0
aW5nOwogICAgICB1c2luZyBhYnN0cmFjdF9zdHJpbmdfdHlwZTo6RW5kV3JpdGluZzsKCgoKCgoK
CiAgICAgIGlubGluZQogICAgICBjb25zdF9jaGFyX2l0ZXJhdG9yJgogICAgICBCZWdpblJlYWRp
bmcoIGNvbnN0X2NoYXJfaXRlcmF0b3ImIGFSZXN1bHQgKSBjb25zdAogICAgICAgIHsKICAgICAg
ICAgIGNvbnN0X2ZyYWdtZW50X3R5cGUgZjsKICAgICAgICAgIEdldFJlYWRhYmxlRnJhZ21lbnQo
Ziwga0ZpcnN0RnJhZ21lbnQsIDApOwogICAgICAgICAgcmV0dXJuIGFSZXN1bHQgPSBmLm1TdGFy
dDsKICAgICAgICB9CgogICAgICBpbmxpbmUKICAgICAgY29uc3RfY2hhcl9pdGVyYXRvciYKICAg
ICAgRW5kUmVhZGluZyggY29uc3RfY2hhcl9pdGVyYXRvciYgYVJlc3VsdCApIGNvbnN0CiAgICAg
ICAgewogICAgICAgICAgY29uc3RfZnJhZ21lbnRfdHlwZSBmOwogICAgICAgICAgR2V0UmVhZGFi
bGVGcmFnbWVudChmLCBrTGFzdEZyYWdtZW50LCAwKTsKICAgICAgICAgIHJldHVybiBhUmVzdWx0
ID0gZi5tRW5kOwogICAgICAgIH0KCiAgICAgIGlubGluZQogICAgICBjaGFyX2l0ZXJhdG9yJgog
ICAgICBCZWdpbldyaXRpbmcoIGNoYXJfaXRlcmF0b3ImIGFSZXN1bHQgKQogICAgICAgIHsKICAg
ICAgICAgIGZyYWdtZW50X3R5cGUgZjsKICAgICAgICAgIEdldFdyaXRhYmxlRnJhZ21lbnQoZiwg
a0ZpcnN0RnJhZ21lbnQsIDApOwogICAgICAgICAgcmV0dXJuIGFSZXN1bHQgPSBjb25zdF9jYXN0
PCBjaGFyX2l0ZXJhdG9yID4oZi5tU3RhcnQpOwogICAgICAgIH0KCiAgICAgIGlubGluZQogICAg
ICBjaGFyX2l0ZXJhdG9yJgogICAgICBFbmRXcml0aW5nKCBjaGFyX2l0ZXJhdG9yJiBhUmVzdWx0
ICkKICAgICAgICB7CiAgICAgICAgICBmcmFnbWVudF90eXBlIGY7CiAgICAgICAgICBHZXRXcml0
YWJsZUZyYWdtZW50KGYsIGtMYXN0RnJhZ21lbnQsIDApOwogICAgICAgICAgcmV0dXJuIGFSZXN1
bHQgPSBjb25zdF9jYXN0PCBjaGFyX2l0ZXJhdG9yID4oZi5tRW5kKTsKICAgICAgICB9CgogICAg
ICBjaGFyX3R5cGUgb3BlcmF0b3JbXSggUFJVaW50MzIgaSApIGNvbnN0IHsgY29uc3RfY2hhcl9p
dGVyYXRvciB0ZW1wOyByZXR1cm4gQmVnaW5SZWFkaW5nKHRlbXApWyBpIF07IH0KICAgICAgY2hh
cl90eXBlIENoYXJBdCggUFJVaW50MzIgKSBjb25zdDsKCiAgICAgIHZpcnR1YWwgUFJVaW50MzIg
TGVuZ3RoKCkgY29uc3Q7CgoKICAgIHB1YmxpYzoKICAgICAgdmlydHVhbCBjb25zdCBjaGFyX3R5
cGUqIEdldFJlYWRhYmxlRnJhZ21lbnQoIGNvbnN0X2ZyYWdtZW50X3R5cGUmLCBuc0ZyYWdtZW50
UmVxdWVzdCwgUFJVaW50MzIgKSBjb25zdDsKICAgICAgdmlydHVhbCBjaGFyX3R5cGUqIEdldFdy
aXRhYmxlRnJhZ21lbnQoIGZyYWdtZW50X3R5cGUmLCBuc0ZyYWdtZW50UmVxdWVzdCwgUFJVaW50
MzIgKTsKICB9OwoKY2xhc3MgbnNBU2luZ2xlRnJhZ21lbnRDU3RyaW5nCiAgICA6IHB1YmxpYyBu
c0FDU3RyaW5nCiAgewoKCgoKCiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgY29uc3QgY2hhcl90
eXBlKiBjb25zdF9jaGFyX2l0ZXJhdG9yOwogICAgICB0eXBlZGVmIGNoYXJfdHlwZSogY2hhcl9p
dGVyYXRvcjsKCgogICAgICB1c2luZyBhYnN0cmFjdF9zdHJpbmdfdHlwZTo6QmVnaW5SZWFkaW5n
OwogICAgICB1c2luZyBhYnN0cmFjdF9zdHJpbmdfdHlwZTo6RW5kUmVhZGluZzsKICAgICAgdXNp
bmcgYWJzdHJhY3Rfc3RyaW5nX3R5cGU6OkJlZ2luV3JpdGluZzsKICAgICAgdXNpbmcgYWJzdHJh
Y3Rfc3RyaW5nX3R5cGU6OkVuZFdyaXRpbmc7CgoKCgoKCgogICAgICBpbmxpbmUKICAgICAgY29u
c3RfY2hhcl9pdGVyYXRvciYKICAgICAgQmVnaW5SZWFkaW5nKCBjb25zdF9jaGFyX2l0ZXJhdG9y
JiBhUmVzdWx0ICkgY29uc3QKICAgICAgICB7CiAgICAgICAgICBjb25zdF9mcmFnbWVudF90eXBl
IGY7CiAgICAgICAgICBHZXRSZWFkYWJsZUZyYWdtZW50KGYsIGtGaXJzdEZyYWdtZW50LCAwKTsK
ICAgICAgICAgIHJldHVybiBhUmVzdWx0ID0gZi5tU3RhcnQ7CiAgICAgICAgfQoKICAgICAgaW5s
aW5lCiAgICAgIGNvbnN0X2NoYXJfaXRlcmF0b3ImCiAgICAgIEVuZFJlYWRpbmcoIGNvbnN0X2No
YXJfaXRlcmF0b3ImIGFSZXN1bHQgKSBjb25zdAogICAgICAgIHsKICAgICAgICAgIGNvbnN0X2Zy
YWdtZW50X3R5cGUgZjsKICAgICAgICAgIEdldFJlYWRhYmxlRnJhZ21lbnQoZiwga0xhc3RGcmFn
bWVudCwgMCk7CiAgICAgICAgICByZXR1cm4gYVJlc3VsdCA9IGYubUVuZDsKICAgICAgICB9Cgog
ICAgICBpbmxpbmUKICAgICAgY2hhcl9pdGVyYXRvciYKICAgICAgQmVnaW5Xcml0aW5nKCBjaGFy
X2l0ZXJhdG9yJiBhUmVzdWx0ICkKICAgICAgICB7CiAgICAgICAgICBmcmFnbWVudF90eXBlIGY7
CiAgICAgICAgICBHZXRXcml0YWJsZUZyYWdtZW50KGYsIGtGaXJzdEZyYWdtZW50LCAwKTsKICAg
ICAgICAgIHJldHVybiBhUmVzdWx0ID0gY29uc3RfY2FzdDwgY2hhcl9pdGVyYXRvciA+KGYubVN0
YXJ0KTsKICAgICAgICB9CgogICAgICBpbmxpbmUKICAgICAgY2hhcl9pdGVyYXRvciYKICAgICAg
RW5kV3JpdGluZyggY2hhcl9pdGVyYXRvciYgYVJlc3VsdCApCiAgICAgICAgewogICAgICAgICAg
ZnJhZ21lbnRfdHlwZSBmOwogICAgICAgICAgR2V0V3JpdGFibGVGcmFnbWVudChmLCBrTGFzdEZy
YWdtZW50LCAwKTsKICAgICAgICAgIHJldHVybiBhUmVzdWx0ID0gY29uc3RfY2FzdDwgY2hhcl9p
dGVyYXRvciA+KGYubUVuZCk7CiAgICAgICAgfQoKICAgICAgY2hhcl90eXBlIG9wZXJhdG9yW10o
IFBSVWludDMyIGkgKSBjb25zdCB7IGNvbnN0X2NoYXJfaXRlcmF0b3IgdGVtcDsgcmV0dXJuIEJl
Z2luUmVhZGluZyh0ZW1wKVsgaSBdOyB9CiAgICAgIGNoYXJfdHlwZSBDaGFyQXQoIFBSVWludDMy
ICkgY29uc3Q7CgogICAgICB2aXJ0dWFsIFBSVWludDMyIExlbmd0aCgpIGNvbnN0OwoKCiAgICBw
dWJsaWM6CiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcl90eXBlKiBHZXRSZWFkYWJsZUZyYWdtZW50
KCBjb25zdF9mcmFnbWVudF90eXBlJiwgbnNGcmFnbWVudFJlcXVlc3QsIFBSVWludDMyICkgY29u
c3Q7CiAgICAgIHZpcnR1YWwgY2hhcl90eXBlKiBHZXRXcml0YWJsZUZyYWdtZW50KCBmcmFnbWVu
dF90eXBlJiwgbnNGcmFnbWVudFJlcXVlc3QsIFBSVWludDMyICk7CiAgfTsKCmlubGluZQpuc0FT
aW5nbGVGcmFnbWVudFN0cmluZzo6Y2hhcl90eXBlCm5zQVNpbmdsZUZyYWdtZW50U3RyaW5nOjpD
aGFyQXQoIFBSVWludDMyIGkgKSBjb25zdAogIHsKICAgIDsKICAgIHJldHVybiBvcGVyYXRvcltd
KGkpOwogIH0KCmlubGluZQpuc0FTaW5nbGVGcmFnbWVudENTdHJpbmc6OmNoYXJfdHlwZQpuc0FT
aW5nbGVGcmFnbWVudENTdHJpbmc6OkNoYXJBdCggUFJVaW50MzIgaSApIGNvbnN0CiAgewogICAg
OwogICAgcmV0dXJuIG9wZXJhdG9yW10oaSk7CiAgfQojIDMxICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvc3RyaW5nL25zQUZsYXRTdHJpbmcuaCIgMgojIDQzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
c3RyaW5nL25zQUZsYXRTdHJpbmcuaCIKY2xhc3MgbnNBRmxhdFN0cmluZwogICAgOiBwdWJsaWMg
bnNBU2luZ2xlRnJhZ21lbnRTdHJpbmcKICB7CiAgICBwdWJsaWM6CgoKCiAgICAgIHZpcnR1YWwg
Y29uc3QgY2hhcl90eXBlKiBnZXQoKSBjb25zdAogICAgICAgIHsKICAgICAgICAgIGNvbnN0IGNo
YXJfdHlwZSogdGVtcDsKICAgICAgICAgIHJldHVybiBCZWdpblJlYWRpbmcodGVtcCk7CiAgICAg
ICAgfQogIH07CgpjbGFzcyBuc0FGbGF0Q1N0cmluZwogICAgOiBwdWJsaWMgbnNBU2luZ2xlRnJh
Z21lbnRDU3RyaW5nCiAgewogICAgcHVibGljOgoKCgogICAgICB2aXJ0dWFsIGNvbnN0IGNoYXJf
dHlwZSogZ2V0KCkgY29uc3QKICAgICAgICB7CiAgICAgICAgICBjb25zdCBjaGFyX3R5cGUqIHRl
bXA7CiAgICAgICAgICByZXR1cm4gQmVnaW5SZWFkaW5nKHRlbXApOwogICAgICAgIH0KCiAgfTsK
IyA1OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZzIuaCIgMgoKCgojIDEg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNMaXRlcmFsU3RyaW5nLmgiIDEKIyAzMiAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc0xpdGVyYWxTdHJpbmcuaCIKIyAxICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zRGVwZW5kZW50U3RyaW5nLmgiIDEKIyA0NSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc0RlcGVuZGVudFN0cmluZy5oIgpjbGFzcyBuc0Rl
cGVuZGVudFN0cmluZwogICAgICA6IHB1YmxpYyBuc0FGbGF0U3RyaW5nCiAgewogICAgcHVibGlj
OgogICAgICB0eXBlZGVmIG5zRGVwZW5kZW50U3RyaW5nIHNlbGZfdHlwZTsKCiAgICAgIHZvaWQK
ICAgICAgUmViaW5kKCBjb25zdCBjaGFyX3R5cGUqIGFQdHIgKQogICAgICAgIHsKICAgICAgICAg
IDsKICAgICAgICAgIG1IYW5kbGUuRGF0YVN0YXJ0KGFQdHIpOwoKCgogICAgICAgICAgbUhhbmRs
ZS5EYXRhRW5kKGFQdHIgPyAoYVB0cituc0NoYXJUcmFpdHM8Y2hhcl90eXBlPjo6bGVuZ3RoKGFQ
dHIpKSA6IDApOwogICAgICAgIH0KCiAgICAgIHZvaWQKICAgICAgUmViaW5kKCBjb25zdCBjaGFy
X3R5cGUqIGFTdGFydFB0ciwgY29uc3QgY2hhcl90eXBlKiBhRW5kUHRyICkKICAgICAgICB7CiAg
ICAgICAgICA7CiMgODYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNEZXBlbmRlbnRT
dHJpbmcuaCIKICAgICAgICAgIDsKICAgICAgICAgIG1IYW5kbGUuRGF0YVN0YXJ0KGFTdGFydFB0
cik7CiAgICAgICAgICBtSGFuZGxlLkRhdGFFbmQoYUVuZFB0cik7CiAgICAgICAgfQoKICAgICAg
dm9pZAogICAgICBSZWJpbmQoIGNvbnN0IGNoYXJfdHlwZSogYVB0ciwgUFJVaW50MzIgYUxlbmd0
aCApCiAgICAgICAgewogICAgICAgICAgOwogICAgICAgICAgUmViaW5kKGFQdHIsIGFQdHIrYUxl
bmd0aCk7CiAgICAgICAgfQoKICAgICAgbnNEZXBlbmRlbnRTdHJpbmcoIGNvbnN0IGNoYXJfdHlw
ZSogYVN0YXJ0UHRyLCBjb25zdCBjaGFyX3R5cGUqIGFFbmRQdHIgKSB7IFJlYmluZChhU3RhcnRQ
dHIsIGFFbmRQdHIpOyB9CiAgICAgIG5zRGVwZW5kZW50U3RyaW5nKCBjb25zdCBjaGFyX3R5cGUq
IGFQdHIsIFBSVWludDMyIGFMZW5ndGggKSB7IFJlYmluZChhUHRyLCBhTGVuZ3RoKTsgfQogICAg
ICBleHBsaWNpdCBuc0RlcGVuZGVudFN0cmluZyggY29uc3QgY2hhcl90eXBlKiBhUHRyICkgeyBS
ZWJpbmQoYVB0cik7IH0KCgoKCiAgICBwcml2YXRlOgoKICAgICAgdm9pZCBvcGVyYXRvcj0oIGNv
bnN0IHNlbGZfdHlwZSYgKTsKCiAgICBwdWJsaWM6CiAgICAgIHZpcnR1YWwgY29uc3QgYnVmZmVy
X2hhbmRsZV90eXBlKiBHZXRGbGF0QnVmZmVySGFuZGxlKCkgY29uc3QgeyByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDwgY29uc3QgYnVmZmVyX2hhbmRsZV90eXBlKiA+KCZtSGFuZGxlKTsgfQogICAg
ICB2aXJ0dWFsIGNvbnN0IGJ1ZmZlcl9oYW5kbGVfdHlwZSogR2V0QnVmZmVySGFuZGxlKCkgY29u
c3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDwgY29uc3QgYnVmZmVyX2hhbmRsZV90eXBlKiA+
KCZtSGFuZGxlKTsgfQoKICAgIHByaXZhdGU6CiAgICAgIGNvbnN0X2J1ZmZlcl9oYW5kbGVfdHlw
ZSBtSGFuZGxlOwogIH07CgoKCmNsYXNzIG5zRGVwZW5kZW50Q1N0cmluZwogICAgICA6IHB1Ymxp
YyBuc0FGbGF0Q1N0cmluZwogIHsKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBuc0RlcGVuZGVu
dENTdHJpbmcgc2VsZl90eXBlOwoKICAgICAgdm9pZAogICAgICBSZWJpbmQoIGNvbnN0IGNoYXJf
dHlwZSogYVB0ciApCiAgICAgICAgewogICAgICAgICAgOwogICAgICAgICAgbUhhbmRsZS5EYXRh
U3RhcnQoYVB0cik7CgoKCiAgICAgICAgICBtSGFuZGxlLkRhdGFFbmQoYVB0ciA/IChhUHRyK25z
Q2hhclRyYWl0czxjaGFyX3R5cGU+OjpsZW5ndGgoYVB0cikpIDogMCk7CiAgICAgICAgfQoKICAg
ICAgdm9pZAogICAgICBSZWJpbmQoIGNvbnN0IGNoYXJfdHlwZSogYVN0YXJ0UHRyLCBjb25zdCBj
aGFyX3R5cGUqIGFFbmRQdHIgKQogICAgICAgIHsKICAgICAgICAgIDsKIyAxNjAgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNEZXBlbmRlbnRTdHJpbmcuaCIKICAgICAgICAgIDsKICAg
ICAgICAgIG1IYW5kbGUuRGF0YVN0YXJ0KGFTdGFydFB0cik7CiAgICAgICAgICBtSGFuZGxlLkRh
dGFFbmQoYUVuZFB0cik7CiAgICAgICAgfQoKICAgICAgdm9pZAogICAgICBSZWJpbmQoIGNvbnN0
IGNoYXJfdHlwZSogYVB0ciwgUFJVaW50MzIgYUxlbmd0aCApCiAgICAgICAgewogICAgICAgICAg
OwogICAgICAgICAgUmViaW5kKGFQdHIsIGFQdHIrYUxlbmd0aCk7CiAgICAgICAgfQoKICAgICAg
bnNEZXBlbmRlbnRDU3RyaW5nKCBjb25zdCBjaGFyX3R5cGUqIGFTdGFydFB0ciwgY29uc3QgY2hh
cl90eXBlKiBhRW5kUHRyICkgeyBSZWJpbmQoYVN0YXJ0UHRyLCBhRW5kUHRyKTsgfQogICAgICBu
c0RlcGVuZGVudENTdHJpbmcoIGNvbnN0IGNoYXJfdHlwZSogYVB0ciwgUFJVaW50MzIgYUxlbmd0
aCApIHsgUmViaW5kKGFQdHIsIGFMZW5ndGgpOyB9CiAgICAgIGV4cGxpY2l0IG5zRGVwZW5kZW50
Q1N0cmluZyggY29uc3QgY2hhcl90eXBlKiBhUHRyICkgeyBSZWJpbmQoYVB0cik7IH0KCgoKCiAg
ICBwcml2YXRlOgoKICAgICAgdm9pZCBvcGVyYXRvcj0oIGNvbnN0IHNlbGZfdHlwZSYgKTsKCiAg
ICBwdWJsaWM6CiAgICAgIHZpcnR1YWwgY29uc3QgYnVmZmVyX2hhbmRsZV90eXBlKiBHZXRGbGF0
QnVmZmVySGFuZGxlKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDwgY29uc3QgYnVm
ZmVyX2hhbmRsZV90eXBlKiA+KCZtSGFuZGxlKTsgfQogICAgICB2aXJ0dWFsIGNvbnN0IGJ1ZmZl
cl9oYW5kbGVfdHlwZSogR2V0QnVmZmVySGFuZGxlKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDwgY29uc3QgYnVmZmVyX2hhbmRsZV90eXBlKiA+KCZtSGFuZGxlKTsgfQoKICAgIHBy
aXZhdGU6CiAgICAgIGNvbnN0X2J1ZmZlcl9oYW5kbGVfdHlwZSBtSGFuZGxlOwogIH07CiMgMzMg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNMaXRlcmFsU3RyaW5nLmgiIDIKIyA2MyAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZzIuaCIgMgoKCgojIDEgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNEZXBlbmRlbnRTdWJzdHJpbmcuaCIgMQojIDQ1ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zRGVwZW5kZW50U3Vic3RyaW5nLmgiCmNsYXNz
IG5zRGVwZW5kZW50U3Vic3RyaW5nCiAgICA6IHB1YmxpYyBuc0FTdHJpbmcKIyA1NSAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc0RlcGVuZGVudFN1YnN0cmluZy5oIgogIHsKICAgIHB1
YmxpYzoKICAgICAgdHlwZWRlZiBuc0RlcGVuZGVudFN1YnN0cmluZyBzZWxmX3R5cGU7CgogICAg
cHJvdGVjdGVkOgogICAgICB2aXJ0dWFsIGNvbnN0IGNoYXJfdHlwZSogR2V0UmVhZGFibGVGcmFn
bWVudCggY29uc3RfZnJhZ21lbnRfdHlwZSYsIG5zRnJhZ21lbnRSZXF1ZXN0LCBQUlVpbnQzMiAp
IGNvbnN0OwogICAgICB2aXJ0dWFsIGNoYXJfdHlwZSogR2V0V3JpdGFibGVGcmFnbWVudCggZnJh
Z21lbnRfdHlwZSYsIG5zRnJhZ21lbnRSZXF1ZXN0LCBQUlVpbnQzMiApIHsgcmV0dXJuIDA7IH0K
CiAgICBwdWJsaWM6CiAgICAgIG5zRGVwZW5kZW50U3Vic3RyaW5nKCBjb25zdCBhYnN0cmFjdF9z
dHJpbmdfdHlwZSYgYVN0cmluZywgUFJVaW50MzIgYVN0YXJ0UG9zLCBQUlVpbnQzMiBhTGVuZ3Ro
ICkKICAgICAgICAgIDogbVN0cmluZyhhU3RyaW5nKSwKICAgICAgICAgICAgbVN0YXJ0UG9zKCBO
U19NSU4oYVN0YXJ0UG9zLCBhU3RyaW5nLkxlbmd0aCgpKSApLAogICAgICAgICAgICBtTGVuZ3Ro
KCBOU19NSU4oYUxlbmd0aCwgYVN0cmluZy5MZW5ndGgoKS1tU3RhcnRQb3MpICkKICAgICAgICB7
CgogICAgICAgIH0KCiAgICAgIG5zRGVwZW5kZW50U3Vic3RyaW5nKCBjb25zdCBjb25zdF9pdGVy
YXRvciYgYVN0YXJ0LCBjb25zdCBjb25zdF9pdGVyYXRvciYgYUVuZCApCiAgICAgICAgICA6IG1T
dHJpbmcoYVN0YXJ0LnN0cmluZygpKQogICAgICAgIHsKICAgICAgICAgIGNvbnN0X2l0ZXJhdG9y
IHplcm9Qb2ludDsKICAgICAgICAgIG1TdHJpbmcuQmVnaW5SZWFkaW5nKHplcm9Qb2ludCk7CiAg
ICAgICAgICBtU3RhcnRQb3MgPSBEaXN0YW5jZSh6ZXJvUG9pbnQsIGFTdGFydCk7CiAgICAgICAg
ICBtTGVuZ3RoID0gRGlzdGFuY2UoYVN0YXJ0LCBhRW5kKTsKICAgICAgICB9CgoKCgogICAgcHJp
dmF0ZToKCiAgICAgIHZvaWQgb3BlcmF0b3I9KCBjb25zdCBzZWxmX3R5cGUmICk7CgogICAgcHVi
bGljOgogICAgICB2aXJ0dWFsIFBSVWludDMyIExlbmd0aCgpIGNvbnN0OwoKICAgIHByaXZhdGU6
CiAgICAgIGNvbnN0IGFic3RyYWN0X3N0cmluZ190eXBlJiBtU3RyaW5nOwogICAgICBQUlVpbnQz
MiBtU3RhcnRQb3M7CiAgICAgIFBSVWludDMyIG1MZW5ndGg7CiAgfTsKCmNsYXNzIG5zRGVwZW5k
ZW50Q1N1YnN0cmluZwogICAgOiBwdWJsaWMgbnNBQ1N0cmluZwojIDEwNyAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL3N0cmluZy9uc0RlcGVuZGVudFN1YnN0cmluZy5oIgogIHsKICAgIHB1YmxpYzoK
ICAgICAgdHlwZWRlZiBuc0RlcGVuZGVudENTdWJzdHJpbmcgc2VsZl90eXBlOwoKICAgIHByb3Rl
Y3RlZDoKICAgICAgdmlydHVhbCBjb25zdCBjaGFyX3R5cGUqIEdldFJlYWRhYmxlRnJhZ21lbnQo
IGNvbnN0X2ZyYWdtZW50X3R5cGUmLCBuc0ZyYWdtZW50UmVxdWVzdCwgUFJVaW50MzIgKSBjb25z
dDsKICAgICAgdmlydHVhbCBjaGFyX3R5cGUqIEdldFdyaXRhYmxlRnJhZ21lbnQoIGZyYWdtZW50
X3R5cGUmLCBuc0ZyYWdtZW50UmVxdWVzdCwgUFJVaW50MzIgKSB7IHJldHVybiAwOyB9CgogICAg
cHVibGljOgogICAgICBuc0RlcGVuZGVudENTdWJzdHJpbmcoIGNvbnN0IGFic3RyYWN0X3N0cmlu
Z190eXBlJiBhU3RyaW5nLCBQUlVpbnQzMiBhU3RhcnRQb3MsIFBSVWludDMyIGFMZW5ndGggKQog
ICAgICAgICAgOiBtU3RyaW5nKGFTdHJpbmcpLAogICAgICAgICAgICBtU3RhcnRQb3MoIE5TX01J
TihhU3RhcnRQb3MsIGFTdHJpbmcuTGVuZ3RoKCkpICksCiAgICAgICAgICAgIG1MZW5ndGgoIE5T
X01JTihhTGVuZ3RoLCBhU3RyaW5nLkxlbmd0aCgpLW1TdGFydFBvcykgKQogICAgICAgIHsKCiAg
ICAgICAgfQoKICAgICAgbnNEZXBlbmRlbnRDU3Vic3RyaW5nKCBjb25zdCBjb25zdF9pdGVyYXRv
ciYgYVN0YXJ0LCBjb25zdCBjb25zdF9pdGVyYXRvciYgYUVuZCApCiAgICAgICAgICA6IG1TdHJp
bmcoYVN0YXJ0LnN0cmluZygpKQogICAgICAgIHsKICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIHpl
cm9Qb2ludDsKICAgICAgICAgIG1TdHJpbmcuQmVnaW5SZWFkaW5nKHplcm9Qb2ludCk7CiAgICAg
ICAgICBtU3RhcnRQb3MgPSBEaXN0YW5jZSh6ZXJvUG9pbnQsIGFTdGFydCk7CiAgICAgICAgICBt
TGVuZ3RoID0gRGlzdGFuY2UoYVN0YXJ0LCBhRW5kKTsKICAgICAgICB9CgoKCgogICAgcHJpdmF0
ZToKCiAgICAgIHZvaWQgb3BlcmF0b3I9KCBjb25zdCBzZWxmX3R5cGUmICk7CgogICAgcHVibGlj
OgogICAgICB2aXJ0dWFsIFBSVWludDMyIExlbmd0aCgpIGNvbnN0OwoKICAgIHByaXZhdGU6CiAg
ICAgIGNvbnN0IGFic3RyYWN0X3N0cmluZ190eXBlJiBtU3RyaW5nOwogICAgICBQUlVpbnQzMiBt
U3RhcnRQb3M7CiAgICAgIFBSVWludDMyIG1MZW5ndGg7CiAgfTsKCgpjbGFzcyBuc0RlcGVuZGVu
dFNpbmdsZUZyYWdtZW50U3Vic3RyaW5nCiAgICAgIDogcHVibGljIG5zQVNpbmdsZUZyYWdtZW50
U3RyaW5nCiAgewogICAgcHVibGljOgogICAgICB0eXBlZGVmIG5zRGVwZW5kZW50U2luZ2xlRnJh
Z21lbnRTdWJzdHJpbmcgc2VsZl90eXBlOwogICAgICB0eXBlZGVmIG5zQVNpbmdsZUZyYWdtZW50
U3RyaW5nIGFic3RyYWN0X3NpbmdsZV9mcmFnbWVudF90eXBlOwoKICAgICAgdm9pZAogICAgICBS
ZWJpbmQoIGNvbnN0IGNoYXJfdHlwZSogYVN0YXJ0UHRyLCBjb25zdCBjaGFyX3R5cGUqIGFFbmRQ
dHIgKQogICAgICAgIHsKICAgICAgICAgIDsKICAgICAgICAgIG1IYW5kbGUuRGF0YVN0YXJ0KGFT
dGFydFB0cik7CiAgICAgICAgICBtSGFuZGxlLkRhdGFFbmQoYUVuZFB0cik7CiAgICAgICAgfQoK
ICAgICAgdm9pZAogICAgICBSZWJpbmQoIGNvbnN0IGFic3RyYWN0X3NpbmdsZV9mcmFnbWVudF90
eXBlJiBhU3RyaW5nLCBjb25zdCBQUlVpbnQzMiBhU3RhcnRQb3MsIGNvbnN0IFBSVWludDMyIGFM
ZW5ndGggKQogICAgICAgIHsKICAgICAgICAgIGNvbnN0X2NoYXJfaXRlcmF0b3IgaXRlcjsKICAg
ICAgICAgIG1IYW5kbGUuRGF0YVN0YXJ0KGFTdHJpbmcuQmVnaW5SZWFkaW5nKGl0ZXIpICsgTlNf
TUlOKGFTdGFydFBvcywgYVN0cmluZy5MZW5ndGgoKSkpOwogICAgICAgICAgbUhhbmRsZS5EYXRh
RW5kKCBOU19NSU4obUhhbmRsZS5EYXRhU3RhcnQoKSArIGFMZW5ndGgsIGFTdHJpbmcuRW5kUmVh
ZGluZyhpdGVyKSkgKTsKICAgICAgICB9CgogICAgICBuc0RlcGVuZGVudFNpbmdsZUZyYWdtZW50
U3Vic3RyaW5nKCBjb25zdCBjaGFyX3R5cGUqIGFTdGFydFB0ciwgY29uc3QgY2hhcl90eXBlKiBh
RW5kUHRyICkgeyBSZWJpbmQoYVN0YXJ0UHRyLCBhRW5kUHRyKTsgfQogICAgICBuc0RlcGVuZGVu
dFNpbmdsZUZyYWdtZW50U3Vic3RyaW5nKCBjb25zdCBhYnN0cmFjdF9zaW5nbGVfZnJhZ21lbnRf
dHlwZSYgYVN0cmluZywgY29uc3QgUFJVaW50MzIgYVN0YXJ0UG9zLCBjb25zdCBQUlVpbnQzMiBh
TGVuZ3RoICkgeyBSZWJpbmQoYVN0cmluZywgYVN0YXJ0UG9zLCBhTGVuZ3RoKTsgfQoKCgoKICAg
IHByaXZhdGU6CgogICAgICB2b2lkIG9wZXJhdG9yPSggY29uc3Qgc2VsZl90eXBlJiApOwoKICAg
IHB1YmxpYzoKICAgICAgdmlydHVhbCBjb25zdCBidWZmZXJfaGFuZGxlX3R5cGUqIEdldEJ1ZmZl
ckhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8IGNvbnN0IGJ1ZmZlcl9o
YW5kbGVfdHlwZSogPigmbUhhbmRsZSk7IH0KCiAgICBwcml2YXRlOgogICAgICBjb25zdF9idWZm
ZXJfaGFuZGxlX3R5cGUgbUhhbmRsZTsKICB9OwoKCmNsYXNzIG5zRGVwZW5kZW50U2luZ2xlRnJh
Z21lbnRDU3Vic3RyaW5nCiAgICAgIDogcHVibGljIG5zQVNpbmdsZUZyYWdtZW50Q1N0cmluZwog
IHsKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBuc0RlcGVuZGVudFNpbmdsZUZyYWdtZW50Q1N1
YnN0cmluZyBzZWxmX3R5cGU7CiAgICAgIHR5cGVkZWYgbnNBU2luZ2xlRnJhZ21lbnRDU3RyaW5n
IGFic3RyYWN0X3NpbmdsZV9mcmFnbWVudF90eXBlOwoKICAgICAgdm9pZAogICAgICBSZWJpbmQo
IGNvbnN0IGNoYXJfdHlwZSogYVN0YXJ0UHRyLCBjb25zdCBjaGFyX3R5cGUqIGFFbmRQdHIgKQog
ICAgICAgIHsKICAgICAgICAgIDsKICAgICAgICAgIG1IYW5kbGUuRGF0YVN0YXJ0KGFTdGFydFB0
cik7CiAgICAgICAgICBtSGFuZGxlLkRhdGFFbmQoYUVuZFB0cik7CiAgICAgICAgfQoKICAgICAg
dm9pZAogICAgICBSZWJpbmQoIGNvbnN0IGFic3RyYWN0X3NpbmdsZV9mcmFnbWVudF90eXBlJiBh
U3RyaW5nLCBjb25zdCBQUlVpbnQzMiBhU3RhcnRQb3MsIGNvbnN0IFBSVWludDMyIGFMZW5ndGgg
KQogICAgICAgIHsKICAgICAgICAgIGNvbnN0X2NoYXJfaXRlcmF0b3IgaXRlcjsKICAgICAgICAg
IG1IYW5kbGUuRGF0YVN0YXJ0KGFTdHJpbmcuQmVnaW5SZWFkaW5nKGl0ZXIpICsgTlNfTUlOKGFT
dGFydFBvcywgYVN0cmluZy5MZW5ndGgoKSkpOwogICAgICAgICAgbUhhbmRsZS5EYXRhRW5kKCBO
U19NSU4obUhhbmRsZS5EYXRhU3RhcnQoKSArIGFMZW5ndGgsIGFTdHJpbmcuRW5kUmVhZGluZyhp
dGVyKSkgKTsKICAgICAgICB9CgogICAgICBuc0RlcGVuZGVudFNpbmdsZUZyYWdtZW50Q1N1YnN0
cmluZyggY29uc3QgY2hhcl90eXBlKiBhU3RhcnRQdHIsIGNvbnN0IGNoYXJfdHlwZSogYUVuZFB0
ciApIHsgUmViaW5kKGFTdGFydFB0ciwgYUVuZFB0cik7IH0KICAgICAgbnNEZXBlbmRlbnRTaW5n
bGVGcmFnbWVudENTdWJzdHJpbmcoIGNvbnN0IGFic3RyYWN0X3NpbmdsZV9mcmFnbWVudF90eXBl
JiBhU3RyaW5nLCBjb25zdCBQUlVpbnQzMiBhU3RhcnRQb3MsIGNvbnN0IFBSVWludDMyIGFMZW5n
dGggKSB7IFJlYmluZChhU3RyaW5nLCBhU3RhcnRQb3MsIGFMZW5ndGgpOyB9CgoKCgogICAgcHJp
dmF0ZToKCiAgICAgIHZvaWQgb3BlcmF0b3I9KCBjb25zdCBzZWxmX3R5cGUmICk7CgogICAgcHVi
bGljOgogICAgICB2aXJ0dWFsIGNvbnN0IGJ1ZmZlcl9oYW5kbGVfdHlwZSogR2V0QnVmZmVySGFu
ZGxlKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDwgY29uc3QgYnVmZmVyX2hhbmRs
ZV90eXBlKiA+KCZtSGFuZGxlKTsgfQoKICAgIHByaXZhdGU6CiAgICAgIGNvbnN0X2J1ZmZlcl9o
YW5kbGVfdHlwZSBtSGFuZGxlOwogIH07CgoKCmlubGluZQpjb25zdCBuc0RlcGVuZGVudENTdWJz
dHJpbmcKU3Vic3RyaW5nKCBjb25zdCBuc0FDU3RyaW5nJiBhU3RyaW5nLCBQUlVpbnQzMiBhU3Rh
cnRQb3MsIFBSVWludDMyIGFTdWJzdHJpbmdMZW5ndGggKQogIHsKICAgIHJldHVybiBuc0RlcGVu
ZGVudENTdWJzdHJpbmcoYVN0cmluZywgYVN0YXJ0UG9zLCBhU3Vic3RyaW5nTGVuZ3RoKTsKICB9
CgppbmxpbmUKY29uc3QgbnNEZXBlbmRlbnRTdWJzdHJpbmcKU3Vic3RyaW5nKCBjb25zdCBuc0FT
dHJpbmcmIGFTdHJpbmcsIFBSVWludDMyIGFTdGFydFBvcywgUFJVaW50MzIgYVN1YnN0cmluZ0xl
bmd0aCApCiAgewogICAgcmV0dXJuIG5zRGVwZW5kZW50U3Vic3RyaW5nKGFTdHJpbmcsIGFTdGFy
dFBvcywgYVN1YnN0cmluZ0xlbmd0aCk7CiAgfQoKaW5saW5lCmNvbnN0IG5zRGVwZW5kZW50Q1N1
YnN0cmluZwpTdWJzdHJpbmcoIGNvbnN0IG5zQUNTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yJiBhU3Rh
cnQsIGNvbnN0IG5zQUNTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yJiBhRW5kICkKICB7CiAgICByZXR1
cm4gbnNEZXBlbmRlbnRDU3Vic3RyaW5nKGFTdGFydCwgYUVuZCk7CiAgfQoKaW5saW5lCmNvbnN0
IG5zRGVwZW5kZW50U3Vic3RyaW5nClN1YnN0cmluZyggY29uc3QgbnNBU3RyaW5nOjpjb25zdF9p
dGVyYXRvciYgYVN0YXJ0LCBjb25zdCBuc0FTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yJiBhRW5kICkK
ICB7CiAgICByZXR1cm4gbnNEZXBlbmRlbnRTdWJzdHJpbmcoYVN0YXJ0LCBhRW5kKTsKICB9CgoK
aW5saW5lCmNvbnN0IG5zRGVwZW5kZW50U2luZ2xlRnJhZ21lbnRDU3Vic3RyaW5nClN1YnN0cmlu
ZyggY29uc3QgbnNBU2luZ2xlRnJhZ21lbnRDU3RyaW5nJiBhU3RyaW5nLCBQUlVpbnQzMiBhU3Rh
cnRQb3MsIFBSVWludDMyIGFTdWJzdHJpbmdMZW5ndGggKQogIHsKICAgIHJldHVybiBuc0RlcGVu
ZGVudFNpbmdsZUZyYWdtZW50Q1N1YnN0cmluZyhhU3RyaW5nLCBhU3RhcnRQb3MsIGFTdWJzdHJp
bmdMZW5ndGgpOwogIH0KCmlubGluZQpjb25zdCBuc0RlcGVuZGVudFNpbmdsZUZyYWdtZW50U3Vi
c3RyaW5nClN1YnN0cmluZyggY29uc3QgbnNBU2luZ2xlRnJhZ21lbnRTdHJpbmcmIGFTdHJpbmcs
IFBSVWludDMyIGFTdGFydFBvcywgUFJVaW50MzIgYVN1YnN0cmluZ0xlbmd0aCApCiAgewogICAg
cmV0dXJuIG5zRGVwZW5kZW50U2luZ2xlRnJhZ21lbnRTdWJzdHJpbmcoYVN0cmluZywgYVN0YXJ0
UG9zLCBhU3Vic3RyaW5nTGVuZ3RoKTsKICB9CgppbmxpbmUKY29uc3QgbnNEZXBlbmRlbnRTaW5n
bGVGcmFnbWVudENTdWJzdHJpbmcKU3Vic3RyaW5nKCBjb25zdCBuc0FTaW5nbGVGcmFnbWVudENT
dHJpbmc6OmNvbnN0X2NoYXJfaXRlcmF0b3ImIGFTdGFydCwgY29uc3QgbnNBU2luZ2xlRnJhZ21l
bnRDU3RyaW5nOjpjb25zdF9jaGFyX2l0ZXJhdG9yJiBhRW5kICkKICB7CiAgICByZXR1cm4gbnNE
ZXBlbmRlbnRTaW5nbGVGcmFnbWVudENTdWJzdHJpbmcoYVN0YXJ0LCBhRW5kKTsKICB9Cgppbmxp
bmUKY29uc3QgbnNEZXBlbmRlbnRTaW5nbGVGcmFnbWVudFN1YnN0cmluZwpTdWJzdHJpbmcoIGNv
bnN0IG5zQVNpbmdsZUZyYWdtZW50U3RyaW5nOjpjb25zdF9jaGFyX2l0ZXJhdG9yJiBhU3RhcnQs
IGNvbnN0IG5zQVNpbmdsZUZyYWdtZW50U3RyaW5nOjpjb25zdF9jaGFyX2l0ZXJhdG9yJiBhRW5k
ICkKICB7CiAgICByZXR1cm4gbnNEZXBlbmRlbnRTaW5nbGVGcmFnbWVudFN1YnN0cmluZyhhU3Rh
cnQsIGFFbmQpOwogIH0KIyA2NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmlu
ZzIuaCIgMgoKCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNQcm9taXNlRmxh
dFN0cmluZy5oIiAxCiMgMjggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNQcm9taXNl
RmxhdFN0cmluZy5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTaGFyYWJs
ZVN0cmluZy5oIiAxCiMgMzUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTaGFyYWJs
ZVN0cmluZy5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNCdWZmZXJIYW5k
bGVVdGlscy5oIiAxCiMgMzYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNCdWZmZXJI
YW5kbGVVdGlscy5oIgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4y
LjIvaW5jbHVkZS9nKystdjMvbmV3IiAxIDMKIyA0MSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBj
LWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL2crKy12My9uZXciIDMKIyAxICIvdXNyL2xpYi9nY2Mt
bGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvZysrLXYzL2NzdGRkZWYiIDEgMwoj
IDQ3ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvZysr
LXYzL2NzdGRkZWYiIDMKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8z
LjIuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyA0OSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBj
LWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL2crKy12My9jc3RkZGVmIiAyIDMKCm5hbWVzcGFjZSBz
dGQKewogIHVzaW5nIDo6cHRyZGlmZl90OwogIHVzaW5nIDo6c2l6ZV90Owp9CiMgNDIgIi91c3Iv
bGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9nKystdjMvbmV3IiAy
IDMKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUv
ZysrLXYzL2V4Y2VwdGlvbiIgMSAzCiMgNDAgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51
eC1nbnUvMy4yLjIvaW5jbHVkZS9nKystdjMvZXhjZXB0aW9uIiAzCmV4dGVybiAiQysrIiB7Cgpu
YW1lc3BhY2Ugc3RkCnsKCgoKCgoKICBjbGFzcyBleGNlcHRpb24KICB7CiAgcHVibGljOgogICAg
ZXhjZXB0aW9uKCkgdGhyb3coKSB7IH0KICAgIHZpcnR1YWwgfmV4Y2VwdGlvbigpIHRocm93KCk7
CgoKICAgIHZpcnR1YWwgY29uc3QgY2hhciogd2hhdCgpIGNvbnN0IHRocm93KCk7CiAgfTsKCgoK
ICBjbGFzcyBiYWRfZXhjZXB0aW9uIDogcHVibGljIGV4Y2VwdGlvbgogIHsKICBwdWJsaWM6CiAg
ICBiYWRfZXhjZXB0aW9uKCkgdGhyb3coKSB7IH0KCgogICAgdmlydHVhbCB+YmFkX2V4Y2VwdGlv
bigpIHRocm93KCk7CiAgfTsKCgogIHR5cGVkZWYgdm9pZCAoKnRlcm1pbmF0ZV9oYW5kbGVyKSAo
KTsKCiAgdHlwZWRlZiB2b2lkICgqdW5leHBlY3RlZF9oYW5kbGVyKSAoKTsKCgogIHRlcm1pbmF0
ZV9oYW5kbGVyIHNldF90ZXJtaW5hdGUodGVybWluYXRlX2hhbmRsZXIpIHRocm93KCk7CgoKICB2
b2lkIHRlcm1pbmF0ZSgpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgogIHVuZXhw
ZWN0ZWRfaGFuZGxlciBzZXRfdW5leHBlY3RlZCh1bmV4cGVjdGVkX2hhbmRsZXIpIHRocm93KCk7
CgoKICB2b2lkIHVuZXhwZWN0ZWQoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CiMg
OTggIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9nKyst
djMvZXhjZXB0aW9uIiAzCiAgYm9vbCB1bmNhdWdodF9leGNlcHRpb24oKSB0aHJvdygpOwp9Cgpu
YW1lc3BhY2UgX19nbnVfY3h4CnsKIyAxMTEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51
eC1nbnUvMy4yLjIvaW5jbHVkZS9nKystdjMvZXhjZXB0aW9uIiAzCiAgdm9pZCBfX3ZlcmJvc2Vf
dGVybWluYXRlX2hhbmRsZXIgKCk7Cn0KCn0KIyA0MyAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBj
LWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL2crKy12My9uZXciIDIgMwoKZXh0ZXJuICJDKysiIHsK
Cm5hbWVzcGFjZSBzdGQKewoKCiAgY2xhc3MgYmFkX2FsbG9jIDogcHVibGljIGV4Y2VwdGlvbgog
IHsKICBwdWJsaWM6CiAgICBiYWRfYWxsb2MoKSB0aHJvdygpIHsgfQoKCiAgICB2aXJ0dWFsIH5i
YWRfYWxsb2MoKSB0aHJvdygpOwogIH07CgogIHN0cnVjdCBub3Rocm93X3QgeyB9OwogIGV4dGVy
biBjb25zdCBub3Rocm93X3Qgbm90aHJvdzsKCgogIHR5cGVkZWYgdm9pZCAoKm5ld19oYW5kbGVy
KSgpOwoKICBuZXdfaGFuZGxlciBzZXRfbmV3X2hhbmRsZXIobmV3X2hhbmRsZXIpIHRocm93KCk7
Cn0KIyA3OSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRl
L2crKy12My9uZXciIDMKdm9pZCogb3BlcmF0b3IgbmV3KHN0ZDo6c2l6ZV90KSB0aHJvdyAoc3Rk
OjpiYWRfYWxsb2MpOwp2b2lkKiBvcGVyYXRvciBuZXdbXShzdGQ6OnNpemVfdCkgdGhyb3cgKHN0
ZDo6YmFkX2FsbG9jKTsKdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCopIHRocm93KCk7CnZvaWQg
b3BlcmF0b3IgZGVsZXRlW10odm9pZCopIHRocm93KCk7CnZvaWQqIG9wZXJhdG9yIG5ldyhzdGQ6
OnNpemVfdCwgY29uc3Qgc3RkOjpub3Rocm93X3QmKSB0aHJvdygpOwp2b2lkKiBvcGVyYXRvciBu
ZXdbXShzdGQ6OnNpemVfdCwgY29uc3Qgc3RkOjpub3Rocm93X3QmKSB0aHJvdygpOwp2b2lkIG9w
ZXJhdG9yIGRlbGV0ZSh2b2lkKiwgY29uc3Qgc3RkOjpub3Rocm93X3QmKSB0aHJvdygpOwp2b2lk
IG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqLCBjb25zdCBzdGQ6Om5vdGhyb3dfdCYpIHRocm93KCk7
CgoKaW5saW5lIHZvaWQqIG9wZXJhdG9yIG5ldyhzdGQ6OnNpemVfdCwgdm9pZCogX19wKSB0aHJv
dygpIHsgcmV0dXJuIF9fcDsgfQppbmxpbmUgdm9pZCogb3BlcmF0b3IgbmV3W10oc3RkOjpzaXpl
X3QsIHZvaWQqIF9fcCkgdGhyb3coKSB7IHJldHVybiBfX3A7IH0KCgppbmxpbmUgdm9pZCBvcGVy
YXRvciBkZWxldGUgKHZvaWQqLCB2b2lkKikgdGhyb3coKSB7IH07CmlubGluZSB2b2lkIG9wZXJh
dG9yIGRlbGV0ZVtdKHZvaWQqLCB2b2lkKikgdGhyb3coKSB7IH07Cgp9CiMgMzcgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNCdWZmZXJIYW5kbGVVdGlscy5oIiAyCgoKCnRlbXBsYXRl
IDxjbGFzcyBDaGFyVD4KY2xhc3MgbnNBdXRvQnVmZmVySGFuZGxlCiAgewogICAgcHVibGljOgog
ICAgICBuc0F1dG9CdWZmZXJIYW5kbGUoKSA6IG1IYW5kbGUoMCkgeyB9CgogICAgICBuc0F1dG9C
dWZmZXJIYW5kbGUoIGNvbnN0IG5zQXV0b0J1ZmZlckhhbmRsZTxDaGFyVD4mIGFPdGhlciApCiAg
ICAgICAgICA6IG1IYW5kbGUoYU90aGVyLmdldCgpKQogICAgICAgIHsKICAgICAgICAgIGlmICgg
bUhhbmRsZSApCiAgICAgICAgICAgIG1IYW5kbGUtPkFjcXVpcmVSZWZlcmVuY2UoKTsKICAgICAg
ICB9CgogICAgICBleHBsaWNpdAogICAgICBuc0F1dG9CdWZmZXJIYW5kbGUoIGNvbnN0IG5zU2hh
cmVkQnVmZmVySGFuZGxlPENoYXJUPiogYUhhbmRsZSApCiAgICAgICAgICA6IG1IYW5kbGUoIGNv
bnN0X2Nhc3Q8IG5zU2hhcmVkQnVmZmVySGFuZGxlPENoYXJUPiogPihhSGFuZGxlKSApCiAgICAg
ICAgewogICAgICAgICAgaWYgKCBtSGFuZGxlICkKICAgICAgICAgICAgbUhhbmRsZS0+QWNxdWly
ZVJlZmVyZW5jZSgpOwogICAgICAgIH0KCiAgICAgfm5zQXV0b0J1ZmZlckhhbmRsZSgpCiAgICAg
ICAgewogICAgICAgICAgaWYgKCBtSGFuZGxlICkKICAgICAgICAgICAgbUhhbmRsZS0+UmVsZWFz
ZVJlZmVyZW5jZSgpOwogICAgICAgIH0KCiAgICAgIG5zQXV0b0J1ZmZlckhhbmRsZTxDaGFyVD4m
CiAgICAgIG9wZXJhdG9yPSggY29uc3QgbnNTaGFyZWRCdWZmZXJIYW5kbGU8Q2hhclQ+KiByaHMg
KQogICAgICAgIHsKICAgICAgICAgIG5zU2hhcmVkQnVmZmVySGFuZGxlPENoYXJUPiogb2xkX2hh
bmRsZSA9IG1IYW5kbGU7CiAgICAgICAgICBpZiAoIChtSGFuZGxlID0gY29uc3RfY2FzdDwgbnNT
aGFyZWRCdWZmZXJIYW5kbGU8Q2hhclQ+KiA+KHJocykpICkKICAgICAgICAgICAgbUhhbmRsZS0+
QWNxdWlyZVJlZmVyZW5jZSgpOwogICAgICAgICAgaWYgKCBvbGRfaGFuZGxlICkKICAgICAgICAg
ICAgb2xkX2hhbmRsZS0+UmVsZWFzZVJlZmVyZW5jZSgpOwogICAgICAgICAgcmV0dXJuICp0aGlz
OwogICAgICAgIH0KCiAgICAgIG5zQXV0b0J1ZmZlckhhbmRsZTxDaGFyVD4mCiAgICAgIG9wZXJh
dG9yPSggY29uc3QgbnNBdXRvQnVmZmVySGFuZGxlPENoYXJUPiYgcmhzICkKICAgICAgICB7CiAg
ICAgICAgICByZXR1cm4gb3BlcmF0b3I9KHJocy5nZXQoKSk7CiAgICAgICAgfQoKICAgICAgbnNT
aGFyZWRCdWZmZXJIYW5kbGU8Q2hhclQ+KgogICAgICBnZXQoKSBjb25zdAogICAgICAgIHsKICAg
ICAgICAgIHJldHVybiBtSGFuZGxlOwogICAgICAgIH0KCiAgICAgIG9wZXJhdG9yIG5zU2hhcmVk
QnVmZmVySGFuZGxlPENoYXJUPiooKSBjb25zdAogICAgICAgIHsKICAgICAgICAgIHJldHVybiBn
ZXQoKTsKICAgICAgICB9CgogICAgICBuc1NoYXJlZEJ1ZmZlckhhbmRsZTxDaGFyVD4qCiAgICAg
IG9wZXJhdG9yLT4oKSBjb25zdAogICAgICAgIHsKICAgICAgICAgIHJldHVybiBnZXQoKTsKICAg
ICAgICB9CgogICAgcHJpdmF0ZToKICAgICAgbnNTaGFyZWRCdWZmZXJIYW5kbGU8Q2hhclQ+KiBt
SGFuZGxlOwogIH07CgoKdGVtcGxhdGUgPGNsYXNzIEhhbmRsZVQsIGNsYXNzIENoYXJUPgppbmxp
bmUKc2l6ZV90Ck5TX0FsaWduZWRIYW5kbGVTaXplKCBjb25zdCBIYW5kbGVUKiwgY29uc3QgQ2hh
clQqICkKICB7CgogICAgcmV0dXJuICgoc2l6ZW9mKEhhbmRsZVQpICsgc2l6ZW9mKENoYXJUKSAt
IDEpIC8gc2l6ZW9mKENoYXJUKSkgKiBzaXplb2YoQ2hhclQpOwogIH0KCnRlbXBsYXRlIDxjbGFz
cyBIYW5kbGVULCBjbGFzcyBDaGFyVD4KaW5saW5lCmNvbnN0IENoYXJUKgpOU19EYXRhQWZ0ZXJI
YW5kbGUoIGNvbnN0IEhhbmRsZVQqIGFIYW5kbGVQdHIsIGNvbnN0IENoYXJUKiBhRHVtbXlDaGFy
VFB0ciApCiAgewogICAgdHlwZWRlZiBjb25zdCBDaGFyVCogQ2hhclRfcHRyOwogICAgcmV0dXJu
IENoYXJUX3B0cihzdGF0aWNfY2FzdDwgY29uc3QgdW5zaWduZWQgY2hhciogPihhSGFuZGxlUHRy
KSArIE5TX0FsaWduZWRIYW5kbGVTaXplKGFIYW5kbGVQdHIsIGFEdW1teUNoYXJUUHRyKSk7CiAg
fQoKdGVtcGxhdGUgPGNsYXNzIEhhbmRsZVQsIGNsYXNzIENoYXJUPgppbmxpbmUKQ2hhclQqCk5T
X0RhdGFBZnRlckhhbmRsZSggSGFuZGxlVCogYUhhbmRsZVB0ciwgY29uc3QgQ2hhclQqIGFEdW1t
eUNoYXJUUHRyICkKICB7CiAgICB0eXBlZGVmIENoYXJUKiBDaGFyVF9wdHI7CiAgICByZXR1cm4g
Q2hhclRfcHRyKHN0YXRpY19jYXN0PCB1bnNpZ25lZCBjaGFyKiA+KGFIYW5kbGVQdHIpICsgTlNf
QWxpZ25lZEhhbmRsZVNpemUoYUhhbmRsZVB0ciwgYUR1bW15Q2hhclRQdHIpKTsKICB9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgSGFuZGxlVCwgY2xhc3MgU3RyaW5nVD4KSGFuZGxlVCoKTlNfQWxsb2NhdGVD
b250aWd1b3VzSGFuZGxlV2l0aERhdGEoIGNvbnN0IEhhbmRsZVQqIGFEdW1teUhhbmRsZVB0ciwg
UFJVaW50MzIgYUFkZGl0aW9uYWxDYXBhY2l0eSwgY29uc3QgU3RyaW5nVCogYURhdGFTb3VyY2Ug
KQogIHsKICAgIHR5cGVkZWYgdHlwZW5hbWUgU3RyaW5nVDo6Y2hhcl90eXBlIGNoYXJfdHlwZTsK
ICAgIHR5cGVkZWYgY2hhcl90eXBlKiBjaGFyX3B0cjsKCgogICAgc2l6ZV90IGhhbmRsZV9zaXpl
ID0gTlNfQWxpZ25lZEhhbmRsZVNpemUoYUR1bW15SGFuZGxlUHRyLCBjaGFyX3B0cigwKSk7CgoK
ICAgIHNpemVfdCBkYXRhX2xlbmd0aCA9IGFEYXRhU291cmNlPyBhRGF0YVNvdXJjZS0+TGVuZ3Ro
KCkgOiAwOwogICAgc2l6ZV90IGJ1ZmZlcl9sZW5ndGggPSBkYXRhX2xlbmd0aCArIGFBZGRpdGlv
bmFsQ2FwYWNpdHk7CgoKICAgIHNpemVfdCBidWZmZXJfc2l6ZSA9IGJ1ZmZlcl9sZW5ndGggKiBz
aXplb2YoY2hhcl90eXBlKTsKCgogICAgSGFuZGxlVCogcmVzdWx0ID0gMDsKICAgIHZvaWQqIGhh
bmRsZV9wdHIgPSA6Om9wZXJhdG9yIG5ldyhoYW5kbGVfc2l6ZSArIGJ1ZmZlcl9zaXplKTsKCiAg
ICBpZiAoIGhhbmRsZV9wdHIgKQogICAgICB7CiAgICAgICAgY2hhcl9wdHIgZGF0YV9zdGFydF9w
dHIgPSBjaGFyX3B0cihzdGF0aWNfY2FzdDwgdW5zaWduZWQgY2hhciogPihoYW5kbGVfcHRyKSAr
IGhhbmRsZV9zaXplKTsKICAgICAgICBjaGFyX3B0ciBkYXRhX2VuZF9wdHIgPSBkYXRhX3N0YXJ0
X3B0ciArIGRhdGFfbGVuZ3RoOwogICAgICAgIGNoYXJfcHRyIGJ1ZmZlcl9lbmRfcHRyID0gZGF0
YV9zdGFydF9wdHIgKyBidWZmZXJfbGVuZ3RoOwoKICAgICAgICBjaGFyX3B0ciB0b0JlZ2luID0g
ZGF0YV9zdGFydF9wdHI7CgogICAgICAgIGlmICggZGF0YV9sZW5ndGggKQogICAgICAgICAgewog
ICAgICAgICAgICB0eXBlbmFtZSBTdHJpbmdUOjpjb25zdF9pdGVyYXRvciBmcm9tQmVnaW4sIGZy
b21FbmQ7CiAgICAgICAgICAgIGNvcHlfc3RyaW5nKGFEYXRhU291cmNlLT5CZWdpblJlYWRpbmco
ZnJvbUJlZ2luKSwgYURhdGFTb3VyY2UtPkVuZFJlYWRpbmcoZnJvbUVuZCksIHRvQmVnaW4pOwog
ICAgICAgICAgfQoKCiAgICAgICAgaWYgKCBhQWRkaXRpb25hbENhcGFjaXR5ID4gMCApCiAgICAg
ICAgICAqdG9CZWdpbiA9IGNoYXJfdHlwZSgwKTsKCiAgICAgICAgcmVzdWx0ID0gbmV3IChoYW5k
bGVfcHRyKSBIYW5kbGVUKGRhdGFfc3RhcnRfcHRyLCBkYXRhX2VuZF9wdHIsIGJ1ZmZlcl9lbmRf
cHRyIC0gZGF0YV9zdGFydF9wdHIsIDEpOwogICAgICB9CgogICAgcmV0dXJuIHJlc3VsdDsKICB9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgSGFuZGxlVCwgY2xhc3MgU3RyaW5nVD4KaW5saW5lCkhhbmRsZVQq
Ck5TX0FsbG9jYXRlQ29udGlndW91c0hhbmRsZVdpdGhEYXRhKCBjb25zdCBIYW5kbGVUKiBhRHVt
bXlIYW5kbGVQdHIsIGNvbnN0IFN0cmluZ1QmIGFEYXRhU291cmNlLCBQUlVpbnQzMiBhQWRkaXRp
b25hbENhcGFjaXR5ICkKICB7CiAgICByZXR1cm4gTlNfQWxsb2NhdGVDb250aWd1b3VzSGFuZGxl
V2l0aERhdGEoYUR1bW15SGFuZGxlUHRyLCBhQWRkaXRpb25hbENhcGFjaXR5LCAmYURhdGFTb3Vy
Y2UpOwogIH0KIyAzNiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1NoYXJhYmxlU3Ry
aW5nLmgiIDIKIyA0NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1NoYXJhYmxlU3Ry
aW5nLmgiCmNsYXNzIG5zU2hhcmFibGVTdHJpbmcKICAgIDogcHVibGljIG5zQUZsYXRTdHJpbmcK
ICB7CiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgbnNTaGFyYWJsZVN0cmluZyBzZWxmX3R5cGU7
CgogICAgcHVibGljOgogICAgICBuc1NoYXJhYmxlU3RyaW5nKCkgOiBtQnVmZmVyKEdldFNoYXJl
ZEVtcHR5QnVmZmVySGFuZGxlKCkpIHsgfQogICAgICBuc1NoYXJhYmxlU3RyaW5nKCBjb25zdCBz
ZWxmX3R5cGUmIGFPdGhlciApIDogbUJ1ZmZlcihhT3RoZXIubUJ1ZmZlcikgeyB9CiAgICAgIGV4
cGxpY2l0IG5zU2hhcmFibGVTdHJpbmcoIGNvbnN0IGFic3RyYWN0X3N0cmluZ190eXBlJiBhUmVh
ZGFibGUgKQogICAgICAgIHsKCgogICAgICAgICAgZG9fQXNzaWduRnJvbVJlYWRhYmxlKGFSZWFk
YWJsZSk7CiAgICAgICAgfQogICAgICBleHBsaWNpdCBuc1NoYXJhYmxlU3RyaW5nKCBjb25zdCBz
aGFyZWRfYnVmZmVyX2hhbmRsZV90eXBlKiBhSGFuZGxlICkKICAgICAgICAgIDogbUJ1ZmZlcihh
SGFuZGxlKQogICAgICAgIHsKICAgICAgICAgIDsKICAgICAgICB9CgoKICAgICAgc2VsZl90eXBl
JiBvcGVyYXRvcj0oIGNvbnN0IGFic3RyYWN0X3N0cmluZ190eXBlJiBhUmVhZGFibGUgKQogICAg
ICAgIHsKICAgICAgICAgIEFzc2lnbihhUmVhZGFibGUpOwogICAgICAgICAgcmV0dXJuICp0aGlz
OwogICAgICAgIH0KIyA4MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1NoYXJhYmxl
U3RyaW5nLmgiCiAgICAgIHZvaWQgQWRvcHQoIGNoYXJfdHlwZSogYU5ld1ZhbHVlICk7CgoKCgoK
CgogICAgcHVibGljOgogICAgICB2aXJ0dWFsIHZvaWQgU2V0Q2FwYWNpdHkoIHNpemVfdHlwZSBh
TmV3Q2FwYWNpdHkgKTsKICAgICAgdmlydHVhbCB2b2lkIFNldExlbmd0aCggc2l6ZV90eXBlIGFO
ZXdMZW5ndGggKTsKICAgIHByb3RlY3RlZDoKICAgICAgdmlydHVhbCB2b2lkIGRvX0Fzc2lnbkZy
b21SZWFkYWJsZSggY29uc3QgYWJzdHJhY3Rfc3RyaW5nX3R5cGUmIGFSZWFkYWJsZSApOwogICAg
ICB2aXJ0dWFsIGNvbnN0IHNoYXJlZF9idWZmZXJfaGFuZGxlX3R5cGUqIEdldFNoYXJlZEJ1ZmZl
ckhhbmRsZSgpIGNvbnN0OwoKICAgIHB1YmxpYzoKICAgICAgdmlydHVhbCBjaGFyX3R5cGUqIEdl
dFdyaXRhYmxlRnJhZ21lbnQoIGZyYWdtZW50X3R5cGUmLCBuc0ZyYWdtZW50UmVxdWVzdCwgUFJV
aW50MzIgKTsKCiAgICBwcm90ZWN0ZWQ6CiAgICAgIHN0YXRpYyBzaGFyZWRfYnVmZmVyX2hhbmRs
ZV90eXBlKiBHZXRTaGFyZWRFbXB0eUJ1ZmZlckhhbmRsZSgpOwoKICAgIHByb3RlY3RlZDoKICAg
ICAgbnNBdXRvQnVmZmVySGFuZGxlPGNoYXJfdHlwZT4gbUJ1ZmZlcjsKICB9OwoKCmNsYXNzIG5z
U2hhcmFibGVDU3RyaW5nCiAgICA6IHB1YmxpYyBuc0FGbGF0Q1N0cmluZwogIHsKICAgIHB1Ymxp
YzoKICAgICAgdHlwZWRlZiBuc1NoYXJhYmxlQ1N0cmluZyBzZWxmX3R5cGU7CgogICAgcHVibGlj
OgogICAgICBuc1NoYXJhYmxlQ1N0cmluZygpIDogbUJ1ZmZlcihHZXRTaGFyZWRFbXB0eUJ1ZmZl
ckhhbmRsZSgpKSB7IH0KICAgICAgbnNTaGFyYWJsZUNTdHJpbmcoIGNvbnN0IHNlbGZfdHlwZSYg
YU90aGVyICkgOiBtQnVmZmVyKGFPdGhlci5tQnVmZmVyKSB7IH0KICAgICAgZXhwbGljaXQgbnNT
aGFyYWJsZUNTdHJpbmcoIGNvbnN0IGFic3RyYWN0X3N0cmluZ190eXBlJiBhUmVhZGFibGUgKQog
ICAgICAgIHsKCgogICAgICAgICAgZG9fQXNzaWduRnJvbVJlYWRhYmxlKGFSZWFkYWJsZSk7CiAg
ICAgICAgfQogICAgICBleHBsaWNpdCBuc1NoYXJhYmxlQ1N0cmluZyggY29uc3Qgc2hhcmVkX2J1
ZmZlcl9oYW5kbGVfdHlwZSogYUhhbmRsZSApCiAgICAgICAgICA6IG1CdWZmZXIoYUhhbmRsZSkK
ICAgICAgICB7CiAgICAgICAgICA7CiAgICAgICAgfQoKCiAgICAgIHNlbGZfdHlwZSYgb3BlcmF0
b3I9KCBjb25zdCBhYnN0cmFjdF9zdHJpbmdfdHlwZSYgYVJlYWRhYmxlICkKICAgICAgICB7CiAg
ICAgICAgICBBc3NpZ24oYVJlYWRhYmxlKTsKICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAg
ICB9CiMgMTQ1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zU2hhcmFibGVTdHJpbmcu
aCIKICAgICAgdm9pZCBBZG9wdCggY2hhcl90eXBlKiBhTmV3VmFsdWUgKTsKCgoKCgoKCiAgICBw
dWJsaWM6CiAgICAgIHZpcnR1YWwgdm9pZCBTZXRDYXBhY2l0eSggc2l6ZV90eXBlIGFOZXdDYXBh
Y2l0eSApOwogICAgICB2aXJ0dWFsIHZvaWQgU2V0TGVuZ3RoKCBzaXplX3R5cGUgYU5ld0xlbmd0
aCApOwogICAgcHJvdGVjdGVkOgogICAgICB2aXJ0dWFsIHZvaWQgZG9fQXNzaWduRnJvbVJlYWRh
YmxlKCBjb25zdCBhYnN0cmFjdF9zdHJpbmdfdHlwZSYgYVJlYWRhYmxlICk7CiAgICAgIHZpcnR1
YWwgY29uc3Qgc2hhcmVkX2J1ZmZlcl9oYW5kbGVfdHlwZSogR2V0U2hhcmVkQnVmZmVySGFuZGxl
KCkgY29uc3Q7CgogICAgcHVibGljOgogICAgICB2aXJ0dWFsIGNoYXJfdHlwZSogR2V0V3JpdGFi
bGVGcmFnbWVudCggZnJhZ21lbnRfdHlwZSYsIG5zRnJhZ21lbnRSZXF1ZXN0LCBQUlVpbnQzMiAp
OwoKICAgIHByb3RlY3RlZDoKICAgICAgc3RhdGljIHNoYXJlZF9idWZmZXJfaGFuZGxlX3R5cGUq
IEdldFNoYXJlZEVtcHR5QnVmZmVySGFuZGxlKCk7CgogICAgcHJvdGVjdGVkOgogICAgICBuc0F1
dG9CdWZmZXJIYW5kbGU8Y2hhcl90eXBlPiBtQnVmZmVyOwogIH07CiMgMjkgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9zdHJpbmcvbnNQcm9taXNlRmxhdFN0cmluZy5oIiAyCiMgODMgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNQcm9taXNlRmxhdFN0cmluZy5oIgpjbGFzcyBuc1Byb21p
c2VGbGF0U3RyaW5nCiAgICA6IHB1YmxpYyBuc0FGbGF0U3RyaW5nCiAgewogICAgZnJpZW5kIGNv
bnN0IG5zUHJvbWlzZUZsYXRTdHJpbmcgUHJvbWlzZUZsYXRTdHJpbmcoIGNvbnN0IGFic3RyYWN0
X3N0cmluZ190eXBlJiApOwoKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBuc1Byb21pc2VGbGF0
U3RyaW5nIHNlbGZfdHlwZTsKCiAgICBwdWJsaWM6CiAgICAgIG5zUHJvbWlzZUZsYXRTdHJpbmco
IGNvbnN0IHNlbGZfdHlwZSYgKTsKCiAgICBwcm90ZWN0ZWQ6CiAgICAgIG5zUHJvbWlzZUZsYXRT
dHJpbmcoKSA6IG1Qcm9taXNlZFN0cmluZygmbUZsYXR0ZW5lZFN0cmluZykgeyB9CiAgICAgIGV4
cGxpY2l0IG5zUHJvbWlzZUZsYXRTdHJpbmcoIGNvbnN0IGFic3RyYWN0X3N0cmluZ190eXBlJiBh
U3RyaW5nICk7CgoKICAgICAgdmlydHVhbCBjb25zdCBidWZmZXJfaGFuZGxlX3R5cGUqIEdldEZs
YXRCdWZmZXJIYW5kbGUoKSBjb25zdDsKICAgICAgdmlydHVhbCBjb25zdCBidWZmZXJfaGFuZGxl
X3R5cGUqIEdldEJ1ZmZlckhhbmRsZSgpIGNvbnN0OwogICAgICB2aXJ0dWFsIGNvbnN0IHNoYXJl
ZF9idWZmZXJfaGFuZGxlX3R5cGUqIEdldFNoYXJlZEJ1ZmZlckhhbmRsZSgpIGNvbnN0OwoKCgog
ICAgcHVibGljOgogICAgICB2aXJ0dWFsIGNvbnN0IGNoYXJfdHlwZSogZ2V0KCkgY29uc3Q7CiAg
ICAgIHZpcnR1YWwgUFJVaW50MzIgTGVuZ3RoKCkgY29uc3Q7CiAgICBwcm90ZWN0ZWQ6CiAgICAg
IHZpcnR1YWwgY29uc3QgY2hhcl90eXBlKiBHZXRSZWFkYWJsZUZyYWdtZW50KCBjb25zdF9mcmFn
bWVudF90eXBlJiwgbnNGcmFnbWVudFJlcXVlc3QsIFBSVWludDMyICkgY29uc3Q7CgoKICAgIHBy
aXZhdGU6CgogICAgICB2b2lkIG9wZXJhdG9yPSggY29uc3QgbnNQcm9taXNlRmxhdFN0cmluZyYg
KTsKCiAgICBwcml2YXRlOgogICAgICBuc1NoYXJhYmxlU3RyaW5nIG1GbGF0dGVuZWRTdHJpbmc7
CiAgICAgIGNvbnN0IG5zQUZsYXRTdHJpbmcqIG1Qcm9taXNlZFN0cmluZzsKICB9OwoKY2xhc3Mg
bnNQcm9taXNlRmxhdENTdHJpbmcKICAgIDogcHVibGljIG5zQUZsYXRDU3RyaW5nCiAgewogICAg
ZnJpZW5kIGNvbnN0IG5zUHJvbWlzZUZsYXRDU3RyaW5nIFByb21pc2VGbGF0Q1N0cmluZyggY29u
c3QgYWJzdHJhY3Rfc3RyaW5nX3R5cGUmICk7CgogICAgcHVibGljOgogICAgICB0eXBlZGVmIG5z
UHJvbWlzZUZsYXRDU3RyaW5nIHNlbGZfdHlwZTsKCiAgICBwdWJsaWM6CiAgICAgIG5zUHJvbWlz
ZUZsYXRDU3RyaW5nKCBjb25zdCBzZWxmX3R5cGUmICk7CgogICAgcHJvdGVjdGVkOgogICAgICBu
c1Byb21pc2VGbGF0Q1N0cmluZygpIDogbVByb21pc2VkU3RyaW5nKCZtRmxhdHRlbmVkU3RyaW5n
KSB7IH0KICAgICAgZXhwbGljaXQgbnNQcm9taXNlRmxhdENTdHJpbmcoIGNvbnN0IGFic3RyYWN0
X3N0cmluZ190eXBlJiBhU3RyaW5nICk7CgoKICAgICAgdmlydHVhbCBjb25zdCBidWZmZXJfaGFu
ZGxlX3R5cGUqIEdldEZsYXRCdWZmZXJIYW5kbGUoKSBjb25zdDsKICAgICAgdmlydHVhbCBjb25z
dCBidWZmZXJfaGFuZGxlX3R5cGUqIEdldEJ1ZmZlckhhbmRsZSgpIGNvbnN0OwogICAgICB2aXJ0
dWFsIGNvbnN0IHNoYXJlZF9idWZmZXJfaGFuZGxlX3R5cGUqIEdldFNoYXJlZEJ1ZmZlckhhbmRs
ZSgpIGNvbnN0OwoKCgogICAgcHVibGljOgogICAgICB2aXJ0dWFsIGNvbnN0IGNoYXJfdHlwZSog
Z2V0KCkgY29uc3Q7CiAgICAgIHZpcnR1YWwgUFJVaW50MzIgTGVuZ3RoKCkgY29uc3Q7CiAgICBw
cm90ZWN0ZWQ6CiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcl90eXBlKiBHZXRSZWFkYWJsZUZyYWdt
ZW50KCBjb25zdF9mcmFnbWVudF90eXBlJiwgbnNGcmFnbWVudFJlcXVlc3QsIFBSVWludDMyICkg
Y29uc3Q7CgoKICAgIHByaXZhdGU6CgogICAgICB2b2lkIG9wZXJhdG9yPSggY29uc3Qgc2VsZl90
eXBlJiApOwoKICAgIHByaXZhdGU6CiAgICAgIG5zU2hhcmFibGVDU3RyaW5nIG1GbGF0dGVuZWRT
dHJpbmc7CiAgICAgIGNvbnN0IG5zQUZsYXRDU3RyaW5nKiBtUHJvbWlzZWRTdHJpbmc7CiAgfTsK
CgppbmxpbmUKY29uc3QgbnNQcm9taXNlRmxhdFN0cmluZwpQcm9taXNlRmxhdFN0cmluZyggY29u
c3QgbnNBU3RyaW5nJiBhU3RyaW5nICkKICB7CiAgICByZXR1cm4gbnNQcm9taXNlRmxhdFN0cmlu
ZyhhU3RyaW5nKTsKICB9CgppbmxpbmUKY29uc3QgbnNQcm9taXNlRmxhdENTdHJpbmcKUHJvbWlz
ZUZsYXRDU3RyaW5nKCBjb25zdCBuc0FDU3RyaW5nJiBhU3RyaW5nICkKICB7CiAgICByZXR1cm4g
bnNQcm9taXNlRmxhdENTdHJpbmcoYVN0cmluZyk7CiAgfQojIDcxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvc3RyaW5nL25zU3RyaW5nMi5oIiAyCgoKCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3N0cmluZy9uc1hQSURMU3RyaW5nLmgiIDEKIyAxMjggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9z
dHJpbmcvbnNYUElETFN0cmluZy5oIgpjbGFzcyBuc1hQSURMU3RyaW5nCiAgICA6IHB1YmxpYyBu
c1NoYXJhYmxlU3RyaW5nCiAgewogICAgcHVibGljOgogICAgICB0eXBlZGVmIG5zWFBJRExTdHJp
bmcgc2VsZl90eXBlOwoKICAgIHB1YmxpYzoKICAgICAgbnNYUElETFN0cmluZygpCiAgICAgICAg
ICA6IG5zU2hhcmFibGVTdHJpbmcoR2V0U2hhcmVkRW1wdHlCdWZmZXJIYW5kbGUoKSkKICAgICAg
ICB7CgoKCgoKICAgICAgICB9CgogICAgICBuc1hQSURMU3RyaW5nKCBjb25zdCBzZWxmX3R5cGUm
IGFTdHJpbmcgKQogICAgICAgICAgOiBuc1NoYXJhYmxlU3RyaW5nKGFTdHJpbmcubUJ1ZmZlci5n
ZXQoKSkKCiAgICAgICAgewoKCgoKCiAgICAgICAgfQoKICAgICAgZXhwbGljaXQgbnNYUElETFN0
cmluZyggY29uc3QgYWJzdHJhY3Rfc3RyaW5nX3R5cGUmIGFSZWFkYWJsZSApCiAgICAgICAgICA6
IG5zU2hhcmFibGVTdHJpbmcoYVJlYWRhYmxlKQogICAgICAgIHsKCgoKCgogICAgICAgIH0KIyAx
NzMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNYUElETFN0cmluZy5oIgogICAgICBz
ZWxmX3R5cGUmCiAgICAgIG9wZXJhdG9yPSggY29uc3QgYWJzdHJhY3Rfc3RyaW5nX3R5cGUmIGFS
ZWFkYWJsZSApCiAgICAgICAgewogICAgICAgICAgQXNzaWduKGFSZWFkYWJsZSk7CiAgICAgICAg
ICByZXR1cm4gKnRoaXM7CiAgICAgICAgfQoKCgoKCgoKICAgICAgdm9pZCBBZG9wdCggY2hhcl90
eXBlKiBhTmV3VmFsdWUgKSB7ICpQcmVwYXJlRm9yVXNlQXNPdXRQYXJhbSgpID0gYU5ld1ZhbHVl
OyB9CgoKICAgICAgdmlydHVhbCBjb25zdCBjaGFyX3R5cGUqIGdldCgpIGNvbnN0CiAgICAgICAg
ewogICAgICAgICAgcmV0dXJuIChtQnVmZmVyLT5HZXRJbXBsZW1lbnRhdGlvbkZsYWdzKCkgJiBz
aGFyZWRfYnVmZmVyX2hhbmRsZV90eXBlOjprSXNOVUxMKQogICAgICAgICAgICAgICAgICAgPyAw
CiAgICAgICAgICAgICAgICAgICA6IG1CdWZmZXItPkRhdGFTdGFydCgpOwogICAgICAgIH0KCgog
ICAgICBvcGVyYXRvciBjb25zdCBjaGFyX3R5cGUqKCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0K
ICAgICAgY2hhcl90eXBlIG9wZXJhdG9yW10oIGludCBpICkgY29uc3QgeyByZXR1cm4gZ2V0KClb
IGkgXTsgfQoKCiAgICAgIGNsYXNzIGdldHRlcl9Db3BpZXNfdAogICAgICAgIHsKICAgICAgICAg
IHB1YmxpYzoKICAgICAgICAgICAgZ2V0dGVyX0NvcGllc190KCBuc1hQSURMU3RyaW5nJiBhU3Ry
aW5nICkgOiBtU3RyaW5nKCZhU3RyaW5nKSB7IH0KCgoKICAgICAgICAgICAgb3BlcmF0b3IgY2hh
cl90eXBlKiooKSBjb25zdCB7IHJldHVybiBtU3RyaW5nLT5QcmVwYXJlRm9yVXNlQXNPdXRQYXJh
bSgpOyB9CgogICAgICAgICAgcHJpdmF0ZToKICAgICAgICAgICAgbnNYUElETFN0cmluZyogbVN0
cmluZzsKICAgICAgICB9OwoKICAgICAgZnJpZW5kIGNsYXNzIGdldHRlcl9Db3BpZXNfdDsKCiAg
ICBwcm90ZWN0ZWQ6CgoKCgogICAgICB2aXJ0dWFsIGNvbnN0IHNoYXJlZF9idWZmZXJfaGFuZGxl
X3R5cGUqIEdldFNoYXJlZEJ1ZmZlckhhbmRsZSgpIGNvbnN0OwoKCiAgICAgIGNoYXJfdHlwZSoq
IFByZXBhcmVGb3JVc2VBc091dFBhcmFtKCk7CgogICAgICBzdGF0aWMgc2hhcmVkX2J1ZmZlcl9o
YW5kbGVfdHlwZSogR2V0U2hhcmVkRW1wdHlCdWZmZXJIYW5kbGUoKTsKIyAyMzkgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNYUElETFN0cmluZy5oIgogIH07CgppbmxpbmUKbnNYUElE
TFN0cmluZzo6Z2V0dGVyX0NvcGllc190CmdldHRlcl9Db3BpZXMoIG5zWFBJRExTdHJpbmcmIGFT
dHJpbmcgKQogIHsKICAgIHJldHVybiBuc1hQSURMU3RyaW5nOjpnZXR0ZXJfQ29waWVzX3QoYVN0
cmluZyk7CiAgfQoKCgpjbGFzcyBuc1hQSURMQ1N0cmluZwogICAgOiBwdWJsaWMgbnNTaGFyYWJs
ZUNTdHJpbmcKICB7CiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgbnNYUElETENTdHJpbmcgc2Vs
Zl90eXBlOwoKICAgIHB1YmxpYzoKICAgICAgbnNYUElETENTdHJpbmcoKQogICAgICAgICAgOiBu
c1NoYXJhYmxlQ1N0cmluZyhHZXRTaGFyZWRFbXB0eUJ1ZmZlckhhbmRsZSgpKQogICAgICAgIHsK
CgoKCgogICAgICAgIH0KCiAgICAgIG5zWFBJRExDU3RyaW5nKCBjb25zdCBzZWxmX3R5cGUmIGFT
dHJpbmcgKQogICAgICAgICAgOiBuc1NoYXJhYmxlQ1N0cmluZyhhU3RyaW5nLm1CdWZmZXIuZ2V0
KCkpCgogICAgICAgIHsKCgoKCgogICAgICAgIH0KIyAyODUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9zdHJpbmcvbnNYUElETFN0cmluZy5oIgogICAgICBzZWxmX3R5cGUmCiAgICAgIG9wZXJhdG9y
PSggY29uc3QgYWJzdHJhY3Rfc3RyaW5nX3R5cGUmIGFSZWFkYWJsZSApCiAgICAgICAgewogICAg
ICAgICAgQXNzaWduKGFSZWFkYWJsZSk7CiAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAg
fQoKCgoKCgoKICAgICAgdm9pZCBBZG9wdCggY2hhcl90eXBlKiBhTmV3VmFsdWUgKSB7ICpQcmVw
YXJlRm9yVXNlQXNPdXRQYXJhbSgpID0gYU5ld1ZhbHVlOyB9CgoKICAgICAgdmlydHVhbCBjb25z
dCBjaGFyX3R5cGUqIGdldCgpIGNvbnN0CiAgICAgICAgewogICAgICAgICAgcmV0dXJuIChtQnVm
ZmVyLT5HZXRJbXBsZW1lbnRhdGlvbkZsYWdzKCkgJiBzaGFyZWRfYnVmZmVyX2hhbmRsZV90eXBl
OjprSXNOVUxMKQogICAgICAgICAgICAgICAgICAgPyAwCiAgICAgICAgICAgICAgICAgICA6IG1C
dWZmZXItPkRhdGFTdGFydCgpOwogICAgICAgIH0KCgogICAgICBvcGVyYXRvciBjb25zdCBjaGFy
X3R5cGUqKCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KICAgICAgY2hhcl90eXBlIG9wZXJhdG9y
W10oIGludCBpICkgY29uc3QgeyByZXR1cm4gZ2V0KClbIGkgXTsgfQoKCiAgICAgIGNsYXNzIGdl
dHRlcl9Db3BpZXNfdAogICAgICAgIHsKICAgICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgZ2V0
dGVyX0NvcGllc190KCBuc1hQSURMQ1N0cmluZyYgYVN0cmluZyApIDogbVN0cmluZygmYVN0cmlu
ZykgeyB9CgoKCiAgICAgICAgICAgIG9wZXJhdG9yIGNoYXJfdHlwZSoqKCkgY29uc3QgeyByZXR1
cm4gbVN0cmluZy0+UHJlcGFyZUZvclVzZUFzT3V0UGFyYW0oKTsgfQoKICAgICAgICAgIHByaXZh
dGU6CiAgICAgICAgICAgIG5zWFBJRExDU3RyaW5nKiBtU3RyaW5nOwogICAgICAgIH07CgogICAg
ICBmcmllbmQgY2xhc3MgZ2V0dGVyX0NvcGllc190OwoKICAgIHByb3RlY3RlZDoKCgoKCiAgICAg
IHZpcnR1YWwgY29uc3Qgc2hhcmVkX2J1ZmZlcl9oYW5kbGVfdHlwZSogR2V0U2hhcmVkQnVmZmVy
SGFuZGxlKCkgY29uc3Q7CgoKICAgICAgY2hhcl90eXBlKiogUHJlcGFyZUZvclVzZUFzT3V0UGFy
YW0oKTsKCiAgICAgIHN0YXRpYyBzaGFyZWRfYnVmZmVyX2hhbmRsZV90eXBlKiBHZXRTaGFyZWRF
bXB0eUJ1ZmZlckhhbmRsZSgpOwojIDM1MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9u
c1hQSURMU3RyaW5nLmgiCiAgfTsKCmlubGluZQpuc1hQSURMQ1N0cmluZzo6Z2V0dGVyX0NvcGll
c190CmdldHRlcl9Db3BpZXMoIG5zWFBJRExDU3RyaW5nJiBhU3RyaW5nICkKICB7CiAgICByZXR1
cm4gbnNYUElETENTdHJpbmc6OmdldHRlcl9Db3BpZXNfdChhU3RyaW5nKTsKICB9CiMgNzUgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHJpbmcyLmgiIDIKCgojIDEgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHIuaCIgMQojIDIxMiAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL3N0cmluZy9uc1N0ci5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc01l
bW9yeS5oIiAxCiMgNDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc01lbW9yeS5oIgoj
IDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lNZW1vcnkuaCIgMQojIDU0ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJTWVtb3J5LmgiCmNsYXNzIG5zSU1lbW9yeSA6IHB1
YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlE
KCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHg1OWU3ZTc3YSwgMHgzOGU0LCAweDExZDQs
IHsgMHg4YywgMHhmNSwgMHgwMCwgMHg2MCwgMHhiMCwgMHhmYywgMHgxNCwgMHhhMyB9fTsgcmV0
dXJuIGlpZDt9CiMgNjggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lNZW1vcnkuaCIK
ICB2aXJ0dWFsIHZvaWQgKiBBbGxvYyhzaXplX3Qgc2l6ZSkgPSAwOwojIDg1ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUveHBjb20vbnNJTWVtb3J5LmgiCiAgdmlydHVhbCB2b2lkICogUmVhbGxvYyh2
b2lkICogcHRyLCBzaXplX3QgbmV3U2l6ZSkgPSAwOwojIDk0ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUveHBjb20vbnNJTWVtb3J5LmgiCiAgdmlydHVhbCB2b2lkIEZyZWUodm9pZCAqIHB0cikgPSAw
OwojIDEwNiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSU1lbW9yeS5oIgogIHZpcnR1
YWwgbnNyZXN1bHQgSGVhcE1pbmltaXplKFBSQm9vbCBpbW1lZGlhdGUpID0gMDsKCgoKCgoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBJc0xvd01lbW9yeShQUkJvb2wgKl9yZXR2YWwpID0gMDsKCn07CiMg
NDIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc01lbW9yeS5oIiAyCiMgNjMgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc01lbW9yeS5oIgpjbGFzcyBuc01lbW9yeQp7CnB1Ymxp
YzoKICAgIHN0YXRpYyB2b2lkKiBBbGxvYyhzaXplX3Qgc2l6ZSk7CiAgICBzdGF0aWMgdm9pZCog
UmVhbGxvYyh2b2lkKiBwdHIsIHNpemVfdCBzaXplKTsKICAgIHN0YXRpYyB2b2lkIEZyZWUodm9p
ZCogcHRyKTsKICAgIHN0YXRpYyBuc3Jlc3VsdCBIZWFwTWluaW1pemUoUFJCb29sIGFJbW1lZGlh
dGUpOwogICAgc3RhdGljIHZvaWQqIENsb25lKGNvbnN0IHZvaWQqIHB0ciwgc2l6ZV90IHNpemUp
OwogICAgc3RhdGljIG5zSU1lbW9yeSogR2V0R2xvYmFsTWVtb3J5U2VydmljZSgpOwp9OwojIDIx
MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0ci5oIiAyCgoKIyAxICIvdmFyL3Rt
cC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9w
bGhhc2guaCIgMQojIDQzICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96
aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wbGhhc2guaCIKZXh0ZXJuICJDIiB7Cgp0eXBlZGVmIHN0
cnVjdCBQTEhhc2hFbnRyeSBQTEhhc2hFbnRyeTsKdHlwZWRlZiBzdHJ1Y3QgUExIYXNoVGFibGUg
UExIYXNoVGFibGU7CnR5cGVkZWYgUFJVaW50MzIgUExIYXNoTnVtYmVyOwoKdHlwZWRlZiBQTEhh
c2hOdW1iZXIgKCAqUExIYXNoRnVuY3Rpb24pKGNvbnN0IHZvaWQgKmtleSk7CnR5cGVkZWYgUFJJ
bnRuICggKlBMSGFzaENvbXBhcmF0b3IpKGNvbnN0IHZvaWQgKnYxLCBjb25zdCB2b2lkICp2Mik7
CgoKCgp0eXBlZGVmIFBSSW50biAoICpQTEhhc2hFbnVtZXJhdG9yKShQTEhhc2hFbnRyeSAqaGUs
IFBSSW50biBpLCB2b2lkICphcmcpOwojIDY3ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4z
LXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wbGhhc2guaCIKdHlwZWRlZiBzdHJ1
Y3QgUExIYXNoQWxsb2NPcHMgewogICAgdm9pZCAqICggKmFsbG9jVGFibGUpKHZvaWQgKnBvb2ws
IFBSU2l6ZSBzaXplKTsKICAgIHZvaWQgKCAqZnJlZVRhYmxlKSh2b2lkICpwb29sLCB2b2lkICpp
dGVtKTsKICAgIFBMSGFzaEVudHJ5ICogKCAqYWxsb2NFbnRyeSkodm9pZCAqcG9vbCwgY29uc3Qg
dm9pZCAqa2V5KTsKICAgIHZvaWQgKCAqZnJlZUVudHJ5KSh2b2lkICpwb29sLCBQTEhhc2hFbnRy
eSAqaGUsIFBSVWludG4gZmxhZyk7Cn0gUExIYXNoQWxsb2NPcHM7CgoKCgpzdHJ1Y3QgUExIYXNo
RW50cnkgewogICAgUExIYXNoRW50cnkgKm5leHQ7CiAgICBQTEhhc2hOdW1iZXIga2V5SGFzaDsK
ICAgIGNvbnN0IHZvaWQgKmtleTsKICAgIHZvaWQgKnZhbHVlOwp9OwoKc3RydWN0IFBMSGFzaFRh
YmxlIHsKICAgIFBMSGFzaEVudHJ5ICoqYnVja2V0czsKICAgIFBSVWludDMyIG5lbnRyaWVzOwog
ICAgUFJVaW50MzIgc2hpZnQ7CiAgICBQTEhhc2hGdW5jdGlvbiBrZXlIYXNoOwogICAgUExIYXNo
Q29tcGFyYXRvciBrZXlDb21wYXJlOwogICAgUExIYXNoQ29tcGFyYXRvciB2YWx1ZUNvbXBhcmU7
CiAgICBjb25zdCBQTEhhc2hBbGxvY09wcyAqYWxsb2NPcHM7CiAgICB2b2lkICphbGxvY1Bvb2w7
CgoKCgoKCn07CgoKCgoKZXh0ZXJuIFBMSGFzaFRhYmxlICoKUExfTmV3SGFzaFRhYmxlKFBSVWlu
dDMyIG51bUJ1Y2tldHMsIFBMSGFzaEZ1bmN0aW9uIGtleUhhc2gsCiAgICAgICAgICAgICAgICBQ
TEhhc2hDb21wYXJhdG9yIGtleUNvbXBhcmUsIFBMSGFzaENvbXBhcmF0b3IgdmFsdWVDb21wYXJl
LAogICAgICAgICAgICAgICAgY29uc3QgUExIYXNoQWxsb2NPcHMgKmFsbG9jT3BzLCB2b2lkICph
bGxvY1Bvb2wpOwoKZXh0ZXJuIHZvaWQKUExfSGFzaFRhYmxlRGVzdHJveShQTEhhc2hUYWJsZSAq
aHQpOwoKCmV4dGVybiBQTEhhc2hFbnRyeSAqClBMX0hhc2hUYWJsZUFkZChQTEhhc2hUYWJsZSAq
aHQsIGNvbnN0IHZvaWQgKmtleSwgdm9pZCAqdmFsdWUpOwoKZXh0ZXJuIFBSQm9vbApQTF9IYXNo
VGFibGVSZW1vdmUoUExIYXNoVGFibGUgKmh0LCBjb25zdCB2b2lkICprZXkpOwoKZXh0ZXJuIHZv
aWQgKgpQTF9IYXNoVGFibGVMb29rdXAoUExIYXNoVGFibGUgKmh0LCBjb25zdCB2b2lkICprZXkp
OwoKZXh0ZXJuIHZvaWQgKgpQTF9IYXNoVGFibGVMb29rdXBDb25zdChQTEhhc2hUYWJsZSAqaHQs
IGNvbnN0IHZvaWQgKmtleSk7CgpleHRlcm4gUFJJbnRuClBMX0hhc2hUYWJsZUVudW1lcmF0ZUVu
dHJpZXMoUExIYXNoVGFibGUgKmh0LCBQTEhhc2hFbnVtZXJhdG9yIGYsIHZvaWQgKmFyZyk7CgoK
ZXh0ZXJuIFBMSGFzaE51bWJlcgpQTF9IYXNoU3RyaW5nKGNvbnN0IHZvaWQgKmtleSk7CgoKZXh0
ZXJuIFBSSW50bgpQTF9Db21wYXJlU3RyaW5ncyhjb25zdCB2b2lkICp2MSwgY29uc3Qgdm9pZCAq
djIpOwoKCmV4dGVybiBQUkludG4KUExfQ29tcGFyZVZhbHVlcyhjb25zdCB2b2lkICp2MSwgY29u
c3Qgdm9pZCAqdjIpOwoKCmV4dGVybiBQTEhhc2hFbnRyeSAqKgpQTF9IYXNoVGFibGVSYXdMb29r
dXAoUExIYXNoVGFibGUgKmh0LCBQTEhhc2hOdW1iZXIga2V5SGFzaCwgY29uc3Qgdm9pZCAqa2V5
KTsKCmV4dGVybiBQTEhhc2hFbnRyeSAqKgpQTF9IYXNoVGFibGVSYXdMb29rdXBDb25zdChQTEhh
c2hUYWJsZSAqaHQsIFBMSGFzaE51bWJlciBrZXlIYXNoLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB2b2lkICprZXkpOwoKZXh0ZXJuIFBMSGFzaEVudHJ5ICoKUExfSGFzaFRhYmxl
UmF3QWRkKFBMSGFzaFRhYmxlICpodCwgUExIYXNoRW50cnkgKipoZXAsIFBMSGFzaE51bWJlciBr
ZXlIYXNoLAogICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqa2V5LCB2b2lkICp2YWx1ZSk7
CgpleHRlcm4gdm9pZApQTF9IYXNoVGFibGVSYXdSZW1vdmUoUExIYXNoVGFibGUgKmh0LCBQTEhh
c2hFbnRyeSAqKmhlcCwgUExIYXNoRW50cnkgKmhlKTsKCgpleHRlcm4gUFJJbnRuClBMX0hhc2hU
YWJsZUR1bXAoUExIYXNoVGFibGUgKmh0LCBQTEhhc2hFbnVtZXJhdG9yIGR1bXAsIEZJTEUgKmZw
KTsKCn0KIyAyMTYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHIuaCIgMgojIDEg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHJTaGFyZWQuaCIgMQoKCgoKCmVudW0g
ZUNoYXJTaXplIHtlT25lQnl0ZT0wLGVUd29CeXRlPTF9OwojIDIxNyAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL3N0cmluZy9uc1N0ci5oIiAyCiMgMjM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3Ry
aW5nL25zU3RyLmgiCmNvbnN0IFBSSW50MzIga0RlZmF1bHRTdHJpbmdTaXplID0gNjQ7CmNvbnN0
IFBSSW50MzIga05vdEZvdW5kID0gLTE7CgoKCmNsYXNzIG5zQVN0cmluZzsKY2xhc3MgQ0J1ZkRl
c2NyaXB0b3IgewpwdWJsaWM6CiAgQ0J1ZkRlc2NyaXB0b3IoY2hhciogYVN0cmluZywgUFJCb29s
IGFTdGFja0Jhc2VkLFBSVWludDMyIGFDYXBhY2l0eSxQUkludDMyIGFMZW5ndGg9LTEpOwogIENC
dWZEZXNjcmlwdG9yKGNvbnN0IGNoYXIqIGFTdHJpbmcsIFBSQm9vbCBhU3RhY2tCYXNlZCxQUlVp
bnQzMiBhQ2FwYWNpdHksUFJJbnQzMiBhTGVuZ3RoPS0xKTsKICBDQnVmRGVzY3JpcHRvcihQUlVu
aWNoYXIqIGFTdHJpbmcsIFBSQm9vbCBhU3RhY2tCYXNlZCxQUlVpbnQzMiBhQ2FwYWNpdHksUFJJ
bnQzMiBhTGVuZ3RoPS0xKTsKICBDQnVmRGVzY3JpcHRvcihjb25zdCBQUlVuaWNoYXIqIGFTdHJp
bmcsUFJCb29sIGFTdGFja0Jhc2VkLFBSVWludDMyIGFDYXBhY2l0eSxQUkludDMyIGFMZW5ndGg9
LTEpOwoKICBjaGFyKiBtQnVmZmVyOwogIGVDaGFyU2l6ZSBtQ2hhclNpemU7CiAgUFJVaW50MzIg
bUNhcGFjaXR5OwogIFBSSW50MzIgbUxlbmd0aDsKICBQUkJvb2wgbVN0YWNrQmFzZWQ7CiAgUFJC
b29sIG1Jc0NvbnN0Owp9OwoKCgoKc3RydWN0IG5zU3RyIHsKCnByb3RlY3RlZDoKICBuc1N0cigp
IHsKCgoKICB9CgogIH5uc1N0cigpIHsKCgoKICB9Cgpwcm90ZWN0ZWQ6CiAgdW5pb24gewogICAg
Y2hhciogbVN0cjsKICAgIFBSVW5pY2hhciogbVVTdHI7CiAgfTsKCiAgUFJVaW50MzIgbUxlbmd0
aDsKICBQUlVpbnQzMiBtQ2FwYWNpdHlBbmRGbGFnczsKCiAgaW5saW5lIFBSVWludDMyIEdldENh
cGFjaXR5KCkgY29uc3QgewoKICAgIHJldHVybiAobUNhcGFjaXR5QW5kRmxhZ3MgJiAofigoMTw8
KDMxKSkgfCAoMTw8KDMwKSkpKSk7CiAgfQoKICBpbmxpbmUgUFJCb29sIEdldE93bnNCdWZmZXIo
KSBjb25zdCB7CiAgICByZXR1cm4gKChtQ2FwYWNpdHlBbmRGbGFncyAmICgxPDwoMzApKSkgIT0g
MCk7CiAgfQoKICBpbmxpbmUgZUNoYXJTaXplIEdldENoYXJTaXplKCkgY29uc3QgewogICAgcmV0
dXJuIGVDaGFyU2l6ZShtQ2FwYWNpdHlBbmRGbGFncyA+PiAoMzEpKTsKICB9Cgpwcml2YXRlOgoK
ICBpbmxpbmUgdm9pZCBTZXRJbnRlcm5hbENhcGFjaXR5KFBSVWludDMyIGFDYXBhY2l0eSkgewog
ICAgbUNhcGFjaXR5QW5kRmxhZ3MgPQogICAgICAoKG1DYXBhY2l0eUFuZEZsYWdzICYgfih+KCgx
PDwoMzEpKSB8ICgxPDwoMzApKSkpKSB8CiAgICAgICAoYUNhcGFjaXR5ICYgKH4oKDE8PCgzMSkp
IHwgKDE8PCgzMCkpKSkpKTsKICB9CgogIGlubGluZSB2b2lkIFNldENoYXJTaXplKGVDaGFyU2l6
ZSBhQ2hhclNpemUpIHsKICAgIG1DYXBhY2l0eUFuZEZsYWdzID0KICAgICAgKChtQ2FwYWNpdHlB
bmRGbGFncyAmIH4oMTw8KDMxKSkpIHwKICAgICAgIChQUlVpbnQzMihhQ2hhclNpemUpIDw8ICgz
MSkpKTsKICB9CgogIGlubGluZSB2b2lkIFNldE93bnNCdWZmZXIoUFJCb29sIGFPd25zQnVmZmVy
KSB7CiAgICBtQ2FwYWNpdHlBbmRGbGFncyA9CiAgICAgIChtQ2FwYWNpdHlBbmRGbGFncyAmIH4o
MTw8KDMwKSkgfAogICAgICAgKGFPd25zQnVmZmVyID8gMSA6IDApIDw8ICgzMCkpOwogIH0KCiAg
aW5saW5lIFBSVW5pY2hhciBHZXRDaGFyQXQoUFJVaW50MzIgYW5JbmRleCkgY29uc3QgewogICAg
aWYoYW5JbmRleDxtTGVuZ3RoKSB7CiAgICAgIHJldHVybiAoZVR3b0J5dGU9PUdldENoYXJTaXpl
KCkpID8gbVVTdHJbYW5JbmRleF0gOiAoUFJVbmljaGFyKW1TdHJbYW5JbmRleF07CiAgICB9CiAg
ICByZXR1cm4gMDsKICB9CgpwdWJsaWM6CiAgZnJpZW5kCiAgY2hhcioKICBUb05ld1VURjhTdHJp
bmcoIGNvbnN0IG5zQVN0cmluZyYgYVNvdXJjZSApOwogIGZyaWVuZCBpbmxpbmUgdm9pZCBBZGRO
dWxsVGVybWluYXRvcihuc1N0ciYgYURlc3QpOwogIGZyaWVuZCBjbGFzcyBuc1N0clByaXZhdGU7
CiAgZnJpZW5kIGNsYXNzIG5zU3RyaW5nOwogIGZyaWVuZCBjbGFzcyBuc0NTdHJpbmc7Cn07CiMg
MzM5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zU3RyLmgiCmlubGluZSBQUkludDMy
IE1pbkludChQUkludDMyIGFuSW50MSxQUkludDMyIGFuSW50Mil7CiAgcmV0dXJuIChhbkludDE8
YW5JbnQyKSA/IGFuSW50MSA6IGFuSW50MjsKfQoKaW5saW5lIFBSSW50MzIgTWF4SW50KFBSSW50
MzIgYW5JbnQxLFBSSW50MzIgYW5JbnQyKXsKICByZXR1cm4gKGFuSW50MTxhbkludDIpID8gYW5J
bnQyIDogYW5JbnQxOwp9CgppbmxpbmUgdm9pZCBBZGROdWxsVGVybWluYXRvcihuc1N0ciYgYURl
c3QpIHsKICBpZihlVHdvQnl0ZT09YURlc3QuR2V0Q2hhclNpemUoKSkKICAgIGFEZXN0Lm1VU3Ry
W2FEZXN0Lm1MZW5ndGhdPTA7CiAgZWxzZSBhRGVzdC5tU3RyW2FEZXN0Lm1MZW5ndGhdPTA7Cn0K
CgoKCgoKCmlubGluZSB2b2lkIFJlY3ljbGUoIGNoYXIqIGFCdWZmZXIpIHsgbnNNZW1vcnk6OkZy
ZWUoYUJ1ZmZlcik7IH0KaW5saW5lIHZvaWQgUmVjeWNsZSggUFJVbmljaGFyKiBhQnVmZmVyKSB7
IG5zTWVtb3J5OjpGcmVlKGFCdWZmZXIpOyB9CiMgNzggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9z
dHJpbmcvbnNTdHJpbmcyLmgiIDIKCmNsYXNzIFVURjh0cmFpdHMKICB7CiAgICBwdWJsaWM6CiAg
ICAgIHN0YXRpYyBQUkJvb2wgaXNBU0NJSShjaGFyIGMpIHsgcmV0dXJuIChjICYgMHg4MCkgPT0g
MHgwMDsgfQogICAgICBzdGF0aWMgUFJCb29sIGlzSW5TZXEoY2hhciBjKSB7IHJldHVybiAoYyAm
IDB4QzApID09IDB4ODA7IH0KICAgICAgc3RhdGljIFBSQm9vbCBpczJieXRlKGNoYXIgYykgeyBy
ZXR1cm4gKGMgJiAweEUwKSA9PSAweEMwOyB9CiAgICAgIHN0YXRpYyBQUkJvb2wgaXMzYnl0ZShj
aGFyIGMpIHsgcmV0dXJuIChjICYgMHhGMCkgPT0gMHhFMDsgfQogICAgICBzdGF0aWMgUFJCb29s
IGlzNGJ5dGUoY2hhciBjKSB7IHJldHVybiAoYyAmIDB4RjgpID09IDB4RjA7IH0KICAgICAgc3Rh
dGljIFBSQm9vbCBpczVieXRlKGNoYXIgYykgeyByZXR1cm4gKGMgJiAweEZDKSA9PSAweEY4OyB9
CiAgICAgIHN0YXRpYyBQUkJvb2wgaXM2Ynl0ZShjaGFyIGMpIHsgcmV0dXJuIChjICYgMHhGRSkg
PT0gMHhGQzsgfQogIH07CgoKCgoKY2xhc3MgbnNJU2l6ZU9mSGFuZGxlcjsKY2xhc3MgbnNDU3Ry
aW5nOwoKCmNsYXNzIG5zU3RyaW5nIDoKICBwdWJsaWMgbnNBRmxhdFN0cmluZywKICBwdWJsaWMg
bnNTdHIgewoKcHVibGljOgogIGZyaWVuZCBjbGFzcyBuc0NTdHJpbmc7CiAgZnJpZW5kIGNsYXNz
IG5zTGluZWJyZWFrQ29udmVydGVyOwogIGZyaWVuZCB2b2lkIFRvTG93ZXJDYXNlKCBuc1N0cmlu
ZyYgKTsKICBmcmllbmQgdm9pZCBUb1VwcGVyQ2FzZSggbnNTdHJpbmcmICk7Cgpwcm90ZWN0ZWQ6
CiAgdmlydHVhbCBjb25zdCBuc0J1ZmZlckhhbmRsZTxQUlVuaWNoYXI+KiBHZXRGbGF0QnVmZmVy
SGFuZGxlKCkgY29uc3Q7CiAgdmlydHVhbCBjb25zdCBQUlVuaWNoYXIqIEdldFJlYWRhYmxlRnJh
Z21lbnQoIG5zUmVhZGFibGVGcmFnbWVudDxQUlVuaWNoYXI+JiwgbnNGcmFnbWVudFJlcXVlc3Qs
IFBSVWludDMyICkgY29uc3Q7CiAgdmlydHVhbCBQUlVuaWNoYXIqIEdldFdyaXRhYmxlRnJhZ21l
bnQoIG5zV3JpdGFibGVGcmFnbWVudDxQUlVuaWNoYXI+JiwgbnNGcmFnbWVudFJlcXVlc3QsIFBS
VWludDMyICk7CgpwdWJsaWM6CiAgdmlydHVhbCBjb25zdCBQUlVuaWNoYXIqIGdldCgpIGNvbnN0
OwoKcHVibGljOgoKCgogIG5zU3RyaW5nKCk7CgoKCgoKICBuc1N0cmluZyhjb25zdCBuc1N0cmlu
ZyYgYVN0cmluZyk7CgogIGV4cGxpY2l0IG5zU3RyaW5nKGNvbnN0IG5zQVN0cmluZyYpOwoKICBl
eHBsaWNpdCBuc1N0cmluZyhjb25zdCBQUlVuaWNoYXIqKTsKICBuc1N0cmluZyhjb25zdCBQUlVu
aWNoYXIqLCBQUkludDMyKTsKCgoKCgoKICB2aXJ0dWFsIH5uc1N0cmluZygpOwoKCgoKCiAgdmly
dHVhbCBQUlVpbnQzMiBMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtTGVuZ3RoOyB9CgoKCgoKCgog
IHZvaWQgU2V0TGVuZ3RoKFBSVWludDMyIGFMZW5ndGgpOwoKCgoKCgogIHZvaWQgU2V0Q2FwYWNp
dHkoUFJVaW50MzIgYUxlbmd0aCk7CiMgMTcwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5n
L25zU3RyaW5nMi5oIgogIFBSQm9vbCBTZXRDaGFyQXQoUFJVbmljaGFyIGFDaGFyLFBSVWludDMy
IGFuSW5kZXgpOwojIDE4NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZzIu
aCIKICB2b2lkIFN0cmlwQ2hhcnMoIGNvbnN0IGNoYXIqIGFTZXQgKTsKICB2b2lkIFN0cmlwQ2hh
ciggUFJVbmljaGFyIGFDaGFyLCBQUkludDMyIGFuT2Zmc2V0PTAgKTsKCgoKCgogIHZvaWQgU3Ry
aXBXaGl0ZXNwYWNlKCk7CgoKCgoKCiAgdm9pZCBSZXBsYWNlQ2hhciggUFJVbmljaGFyIGFuT2xk
Q2hhciwgUFJVbmljaGFyIGFOZXdDaGFyICk7CiAgdm9pZCBSZXBsYWNlQ2hhciggY29uc3QgY2hh
ciogYVNldCwgUFJVbmljaGFyIGFOZXdDaGFyICk7CgogIHZvaWQgUmVwbGFjZVN1YnN0cmluZygg
Y29uc3QgbnNTdHJpbmcmIGFUYXJnZXQsIGNvbnN0IG5zU3RyaW5nJiBhTmV3VmFsdWUgKTsKICB2
b2lkIFJlcGxhY2VTdWJzdHJpbmcoIGNvbnN0IFBSVW5pY2hhciogYVRhcmdldCwgY29uc3QgUFJV
bmljaGFyKiBhTmV3VmFsdWUgKTsKIyAyMTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcv
bnNTdHJpbmcyLmgiCiAgdm9pZCBUcmltKGNvbnN0IGNoYXIqIGFTZXQsUFJCb29sIGFFbGltaW5h
dGVMZWFkaW5nPTEsUFJCb29sIGFFbGltaW5hdGVUcmFpbGluZz0xLFBSQm9vbCBhSWdub3JlUXVv
dGVzPTApOwojIDIyOCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZzIuaCIK
ICB2b2lkIENvbXByZXNzV2hpdGVzcGFjZSggUFJCb29sIGFFbGltaW5hdGVMZWFkaW5nPTEsUFJC
b29sIGFFbGltaW5hdGVUcmFpbGluZz0xKTsKIyAyNDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9z
dHJpbmcvbnNTdHJpbmcyLmgiCiAgY2hhciogVG9DU3RyaW5nKGNoYXIqIGFCdWYsUFJVaW50MzIg
YUJ1Zkxlbmd0aCxQUlVpbnQzMiBhbk9mZnNldD0wKSBjb25zdDsKCgoKCgoKICBmbG9hdCBUb0Zs
b2F0KFBSSW50MzIqIGFFcnJvckNvZGUpIGNvbnN0OwoKCgoKCgoKICBQUkludDMyIFRvSW50ZWdl
cihQUkludDMyKiBhRXJyb3JDb2RlLFBSVWludDMyIGFSYWRpeD0oMTApKSBjb25zdDsKIyAyNzIg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHJpbmcyLmgiCiAgbnNTdHJpbmcmIG9w
ZXJhdG9yPSggY29uc3QgbnNTdHJpbmcmIGFTdHJpbmcgKSB7IEFzc2lnbihhU3RyaW5nKTsgcmV0
dXJuICp0aGlzOyB9CiAgbnNTdHJpbmcmIG9wZXJhdG9yPSggY29uc3QgbnNBU3RyaW5nJiBhUmVh
ZGFibGUgKSB7IEFzc2lnbihhUmVhZGFibGUpOyByZXR1cm4gKnRoaXM7IH0KCiAgbnNTdHJpbmcm
IG9wZXJhdG9yPSggY29uc3QgUFJVbmljaGFyKiBhUHRyICkgeyBBc3NpZ24oYVB0cik7IHJldHVy
biAqdGhpczsgfQogIG5zU3RyaW5nJiBvcGVyYXRvcj0oIFBSVW5pY2hhciBhQ2hhciApIHsgQXNz
aWduKGFDaGFyKTsgcmV0dXJuICp0aGlzOyB9CgogIHZvaWQgQXNzaWduV2l0aENvbnZlcnNpb24o
Y29uc3QgY2hhciopOwogIHZvaWQgQXNzaWduV2l0aENvbnZlcnNpb24oY29uc3QgY2hhciosIFBS
SW50MzIpOwojIDI5MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZzIuaCIK
ICB2b2lkIEFwcGVuZEludChQUkludDMyLCBQUkludDMyPTEwKTsKICB2b2lkIEFwcGVuZEZsb2F0
KGRvdWJsZSk7CiAgdm9pZCBBcHBlbmRXaXRoQ29udmVyc2lvbihjb25zdCBjaGFyKiwgUFJJbnQz
Mj0tMSk7CgogIHZpcnR1YWwgdm9pZCBkb19BcHBlbmRGcm9tRWxlbWVudCggUFJVbmljaGFyICk7
CgoKCiAgdm9pZCBJbnNlcnRXaXRoQ29udmVyc2lvbihjb25zdCBjaGFyKiwgUFJVaW50MzIsIFBS
SW50MzI9LTEpOwoKCiAgdm9pZCBBZG9wdCggUFJVbmljaGFyKiBhUHRyLCBQUkludDMyIGFMZW5n
dGggPSAtMSApOwojIDMyMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZzIu
aCIKICBzaXplX3R5cGUgTGVmdCggc2VsZl90eXBlJiwgc2l6ZV90eXBlICkgY29uc3Q7CiAgc2l6
ZV90eXBlIE1pZCggc2VsZl90eXBlJiwgUFJVaW50MzIsIFBSVWludDMyICkgY29uc3Q7CiAgc2l6
ZV90eXBlIFJpZ2h0KCBzZWxmX3R5cGUmLCBzaXplX3R5cGUgKSBjb25zdDsKIyAzMzcgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHJpbmcyLmgiCiAgUFJJbnQzMiBGaW5kQ2hhcihQ
UlVuaWNoYXIgYUNoYXIsIFBSSW50MzIgYW5PZmZzZXQ9MCwgUFJJbnQzMiBhQ291bnQ9LTEpIGNv
bnN0OwojIDM0OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZzIuaCIKICBQ
UkludDMyIEZpbmQoY29uc3QgbnNDU3RyaW5nJiBhU3RyaW5nLFBSQm9vbCBhSWdub3JlQ2FzZT0w
LFBSSW50MzIgYW5PZmZzZXQ9MCxQUkludDMyIGFDb3VudD0tMSkgY29uc3Q7CiAgUFJJbnQzMiBG
aW5kKGNvbnN0IGNoYXIqIGFTdHJpbmcsUFJCb29sIGFJZ25vcmVDYXNlPTAsUFJJbnQzMiBhbk9m
ZnNldD0wLFBSSW50MzIgYUNvdW50PS0xKSBjb25zdDsKCiAgUFJJbnQzMiBGaW5kKGNvbnN0IG5z
QUZsYXRTdHJpbmcmIGFTdHJpbmcsIFBSSW50MzIgYW5PZmZzZXQ9MCwgUFJJbnQzMiBhQ291bnQ9
LTEpIGNvbnN0OwoKICBQUkludDMyIEZpbmQoY29uc3QgUFJVbmljaGFyKiBhU3RyaW5nLCBQUklu
dDMyIGFuT2Zmc2V0PTAsIFBSSW50MzIgYUNvdW50PS0xKSBjb25zdDsKIyAzNjMgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHJpbmcyLmgiCiAgUFJJbnQzMiBGaW5kQ2hhckluU2V0
KGNvbnN0IGNoYXIqIGFTdHJpbmcsUFJJbnQzMiBhbk9mZnNldD0wKSBjb25zdDsKICBQUkludDMy
IEZpbmRDaGFySW5TZXQoY29uc3QgUFJVbmljaGFyKiBhU3RyaW5nLFBSSW50MzIgYW5PZmZzZXQ9
MCkgY29uc3Q7CiMgMzc0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zU3RyaW5nMi5o
IgogIFBSSW50MzIgUkZpbmQoY29uc3QgY2hhciogYUNTdHJpbmcsUFJCb29sIGFJZ25vcmVDYXNl
PTAsUFJJbnQzMiBhbk9mZnNldD0tMSxQUkludDMyIGFDb3VudD0tMSkgY29uc3Q7CgogIFBSSW50
MzIgUkZpbmQoY29uc3QgbnNBRmxhdFN0cmluZyYgYVN0cmluZywgUFJJbnQzMiBhbk9mZnNldD0t
MSxQUkludDMyIGFDb3VudD0tMSkgY29uc3Q7CiAgUFJJbnQzMiBSRmluZChjb25zdCBQUlVuaWNo
YXIqIGFTdHJpbmcsUFJJbnQzMiBhbk9mZnNldD0tMSxQUkludDMyIGFDb3VudD0tMSkgY29uc3Q7
CiMgMzg5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zU3RyaW5nMi5oIgogIFBSSW50
MzIgUkZpbmRDaGFyKFBSVW5pY2hhciBhQ2hhcixQUkludDMyIGFuT2Zmc2V0PS0xLFBSSW50MzIg
YUNvdW50PS0xKSBjb25zdDsKIyAzOTggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNT
dHJpbmcyLmgiCiAgUFJJbnQzMiBSRmluZENoYXJJblNldChjb25zdCBQUlVuaWNoYXIqIGFTdHJp
bmcsUFJJbnQzMiBhbk9mZnNldD0tMSkgY29uc3Q7CiMgNDE0ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvc3RyaW5nL25zU3RyaW5nMi5oIgogIFBSSW50MzIgQ29tcGFyZVdpdGhDb252ZXJzaW9uKGNv
bnN0IGNoYXIqIGFTdHJpbmcsIFBSQm9vbCBhSWdub3JlQ2FzZT0wLCBQUkludDMyIGFDb3VudD0t
MSkgY29uc3Q7CgogIFBSQm9vbCBFcXVhbHNXaXRoQ29udmVyc2lvbihjb25zdCBjaGFyKiBhU3Ry
aW5nLFBSQm9vbCBhSWdub3JlQ2FzZT0wLFBSSW50MzIgYUNvdW50PS0xKSBjb25zdDsKCiAgUFJC
b29sIEVxdWFsc0lnbm9yZUNhc2UoY29uc3QgY2hhciogYVN0cmluZyxQUkludDMyIGFDb3VudD0t
MSkgY29uc3Q7CgoKCgoKCgogIFBSQm9vbCBJc0FTQ0lJKGNvbnN0IFBSVW5pY2hhciogYUJ1ZmZl
cj0wKTsKCgoKCgoKCiAgc3RhdGljIFBSQm9vbCBJc1NwYWNlKFBSVW5pY2hhciBjaCk7CiMgNDQ0
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zU3RyaW5nMi5oIgpwcml2YXRlOgoKCiAg
dm9pZCBvcGVyYXRvcj0oIGNoYXIgKTsKICB2b2lkIEFzc2lnbldpdGhDb252ZXJzaW9uKCBjb25z
dCBQUlVuaWNoYXIqLCBQUkludDMyPS0xICk7CiAgdm9pZCBBcHBlbmRXaXRoQ29udmVyc2lvbigg
Y29uc3QgUFJVbmljaGFyKiwgUFJJbnQzMj0tMSApOwogIHZvaWQgSW5zZXJ0V2l0aENvbnZlcnNp
b24oIGNvbnN0IFBSVW5pY2hhciosIFBSVWludDMyLCBQUkludDMyPS0xICk7Cn07CgppbmxpbmUK
bnNTdHJpbmc6OnNpemVfdHlwZQpuc1N0cmluZzo6TGVmdCggbnNBU3RyaW5nJiBhUmVzdWx0LCBz
aXplX3R5cGUgYUxlbmd0aFRvQ29weSApIGNvbnN0CiAgewogICAgcmV0dXJuIE1pZChhUmVzdWx0
LCAwLCBhTGVuZ3RoVG9Db3B5KTsKICB9CgppbmxpbmUKbnNTdHJpbmc6OnNpemVfdHlwZQpuc1N0
cmluZzo6UmlnaHQoIHNlbGZfdHlwZSYgYVJlc3VsdCwgc2l6ZV90eXBlIGFMZW5ndGhUb0NvcHkg
KSBjb25zdAogIHsKICAgIHNpemVfdHlwZSBteUxlbmd0aCA9IExlbmd0aCgpOwogICAgYUxlbmd0
aFRvQ29weSA9IE5TX01JTihteUxlbmd0aCwgYUxlbmd0aFRvQ29weSk7CiAgICByZXR1cm4gTWlk
KGFSZXN1bHQsIG15TGVuZ3RoLWFMZW5ndGhUb0NvcHksIGFMZW5ndGhUb0NvcHkpOwogIH0KIyA0
NzggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHJpbmcyLmgiCmNsYXNzIG5zQXV0
b1N0cmluZyA6IHB1YmxpYyBuc1N0cmluZyB7CnB1YmxpYzoKCiAgICB2aXJ0dWFsIH5uc0F1dG9T
dHJpbmcoKSB7fQoKICAgIG5zQXV0b1N0cmluZygpOwogICAgbnNBdXRvU3RyaW5nKGNvbnN0IG5z
QXV0b1N0cmluZyYgYVN0cmluZyk7CiAgICBleHBsaWNpdCBuc0F1dG9TdHJpbmcoY29uc3QgbnNB
U3RyaW5nJiBhU3RyaW5nKTsKICAgIGV4cGxpY2l0IG5zQXV0b1N0cmluZyhjb25zdCBuc1N0cmlu
ZyYgYVN0cmluZyk7CiAgICBleHBsaWNpdCBuc0F1dG9TdHJpbmcoY29uc3QgUFJVbmljaGFyKiBh
U3RyaW5nKTsKICAgIG5zQXV0b1N0cmluZyhjb25zdCBQUlVuaWNoYXIqIGFTdHJpbmcsUFJJbnQz
MiBhTGVuZ3RoKTsKICAgIGV4cGxpY2l0IG5zQXV0b1N0cmluZyhQUlVuaWNoYXIgYUNoYXIpOwog
ICAgZXhwbGljaXQgbnNBdXRvU3RyaW5nKGNvbnN0IENCdWZEZXNjcmlwdG9yJiBhQnVmZmVyKTsK
CiAgICBuc0F1dG9TdHJpbmcmIG9wZXJhdG9yPSggY29uc3QgbnNBdXRvU3RyaW5nJiBhU3RyaW5n
ICkgeyBBc3NpZ24oYVN0cmluZyk7IHJldHVybiAqdGhpczsgfQogIHByaXZhdGU6CiAgICB2b2lk
IG9wZXJhdG9yPSggY2hhciApOwogIHB1YmxpYzoKICAgIG5zQXV0b1N0cmluZyYgb3BlcmF0b3I9
KCBjb25zdCBuc0FTdHJpbmcmIGFSZWFkYWJsZSApIHsgQXNzaWduKGFSZWFkYWJsZSk7IHJldHVy
biAqdGhpczsgfQoKICAgIG5zQXV0b1N0cmluZyYgb3BlcmF0b3I9KCBjb25zdCBQUlVuaWNoYXIq
IGFQdHIgKSB7IEFzc2lnbihhUHRyKTsgcmV0dXJuICp0aGlzOyB9CiAgICBuc0F1dG9TdHJpbmcm
IG9wZXJhdG9yPSggUFJVbmljaGFyIGFDaGFyICkgeyBBc3NpZ24oYUNoYXIpOyByZXR1cm4gKnRo
aXM7IH0KIyA1MDkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHJpbmcyLmgiCiAg
ICBQUlVuaWNoYXIgbUJ1ZmZlcltrRGVmYXVsdFN0cmluZ1NpemVdOwp9OwoKCgpjbGFzcyBOU19D
b252ZXJ0QVNDSUl0b1VDUzIKICAgICAgOiBwdWJsaWMgbnNBdXRvU3RyaW5nCgoKCiAgewogICAg
cHVibGljOgogICAgICBleHBsaWNpdAogICAgICBOU19Db252ZXJ0QVNDSUl0b1VDUzIoIGNvbnN0
IG5zQUNTdHJpbmcmIGFDU3RyaW5nICk7CgogICAgICBleHBsaWNpdAogICAgICBOU19Db252ZXJ0
QVNDSUl0b1VDUzIoIGNvbnN0IG5zQUZsYXRDU3RyaW5nJiBhQ1N0cmluZyApCiAgICAgICAgewog
ICAgICAgICAgSW5pdCggYUNTdHJpbmcuZ2V0KCksIGFDU3RyaW5nLkxlbmd0aCgpICk7CiAgICAg
ICAgfQoKICAgICAgZXhwbGljaXQKICAgICAgTlNfQ29udmVydEFTQ0lJdG9VQ1MyKCBjb25zdCBj
aGFyKiBhQ1N0cmluZyApCiAgICAgICAgewogICAgICAgICAgSW5pdCggYUNTdHJpbmcsIH5QUlVp
bnQzMigwKSApOwogICAgICAgIH0KCiAgICAgIE5TX0NvbnZlcnRBU0NJSXRvVUNTMiggY29uc3Qg
Y2hhciogYUNTdHJpbmcsIFBSVWludDMyIGFMZW5ndGggKQogICAgICAgIHsKICAgICAgICAgIElu
aXQoIGFDU3RyaW5nLCBhTGVuZ3RoICk7CiAgICAgICAgfQojIDU0OCAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL3N0cmluZy9uc1N0cmluZzIuaCIKICAgIHByb3RlY3RlZDoKICAgICAgdm9pZCBJbml0
KCBjb25zdCBjaGFyKiBhQ1N0cmluZywgUFJVaW50MzIgYUxlbmd0aCApOwoKICAgIHByaXZhdGU6
CgogICAgICBOU19Db252ZXJ0QVNDSUl0b1VDUzIoIFBSVW5pY2hhciApOwogIH07CgpjbGFzcyBO
U19Db252ZXJ0VVRGOHRvVUNTMgogICAgICA6IHB1YmxpYyBuc0F1dG9TdHJpbmcKICB7CiAgICBw
dWJsaWM6CiAgICAgIGV4cGxpY2l0CiAgICAgIE5TX0NvbnZlcnRVVEY4dG9VQ1MyKCBjb25zdCBu
c0FDU3RyaW5nJiBhQ1N0cmluZyApCiAgICAgICAgewogICAgICAgICAgSW5pdCggYUNTdHJpbmcg
KTsKICAgICAgICB9CgogICAgICBleHBsaWNpdAogICAgICBOU19Db252ZXJ0VVRGOHRvVUNTMigg
Y29uc3QgY2hhciogYUNTdHJpbmcgKQogICAgICAgIHsKICAgICAgICAgIEluaXQoIG5zRGVwZW5k
ZW50Q1N0cmluZyggYUNTdHJpbmcgKSApOwogICAgICAgIH0KCiAgICAgIE5TX0NvbnZlcnRVVEY4
dG9VQ1MyKCBjb25zdCBjaGFyKiBhQ1N0cmluZywgUFJVaW50MzIgYUxlbmd0aCApCiAgICAgICAg
ewogICAgICAgICAgSW5pdCggU3Vic3RyaW5nKCBhQ1N0cmluZywgYUNTdHJpbmcgKyBhTGVuZ3Ro
ICkgKTsKICAgICAgICB9CgogICAgcHJvdGVjdGVkOgogICAgICB2b2lkIEluaXQoIGNvbnN0IG5z
QUNTdHJpbmcmIGFDU3RyaW5nICk7CgogICAgcHJpdmF0ZToKICAgICAgTlNfQ29udmVydFVURjh0
b1VDUzIoIFBSVW5pY2hhciApOwogIH07CgoKCgpjbGFzcyBDb252ZXJ0VVRGOHRvVUNTMgogIHsK
ICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBuc0FDU3RyaW5nOjpjaGFyX3R5cGUgdmFsdWVfdHlw
ZTsKICAgICAgdHlwZWRlZiBuc0FTdHJpbmc6OmNoYXJfdHlwZSBidWZmZXJfdHlwZTsKCiAgICBD
b252ZXJ0VVRGOHRvVUNTMiggYnVmZmVyX3R5cGUqIGFCdWZmZXIgKQogICAgICAgIDogbVN0YXJ0
KGFCdWZmZXIpLCBtQnVmZmVyKGFCdWZmZXIpLCBtRXJyb3JFbmNvdW50ZXJlZCgwKSB7fQoKICAg
IHNpemVfdCBMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtQnVmZmVyIC0gbVN0YXJ0OyB9CgogICAg
UFJVaW50MzIgd3JpdGUoIGNvbnN0IHZhbHVlX3R5cGUqIHN0YXJ0LCBQUlVpbnQzMiBOICkKICAg
ICAgewogICAgICAgIGlmICggbUVycm9yRW5jb3VudGVyZWQgKQogICAgICAgICAgcmV0dXJuIE47
CgoKCiAgICAgICAgY29uc3QgdmFsdWVfdHlwZSogcCA9IHN0YXJ0OwogICAgICAgIGNvbnN0IHZh
bHVlX3R5cGUqIGVuZCA9IHN0YXJ0ICsgTjsKICAgICAgICBmb3IgKCA7IHAgIT0gZW5kIDsgKQog
ICAgICAgICAgewogICAgICAgICAgICBjaGFyIGMgPSAqcCsrOwoKICAgICAgICAgICAgaWYgKCBV
VEY4dHJhaXRzOjppc0FTQ0lJKGMpICkKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAq
bUJ1ZmZlcisrID0gYnVmZmVyX3R5cGUoYyk7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgICB9CgogICAgICAgICAgICBQUlVpbnQzMiB1Y3M0OwogICAgICAgICAgICBQUlVp
bnQzMiBtaW5VY3M0OwogICAgICAgICAgICBQUkludDMyIHN0YXRlID0gMDsKCiAgICAgICAgICAg
IGlmICggVVRGOHRyYWl0czo6aXMyYnl0ZShjKSApCiAgICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgdWNzNCA9IChQUlVpbnQzMihjKSA8PCA2KSAmIDB4MDAwMDA3QzBMOwogICAgICAgICAg
ICAgICAgc3RhdGUgPSAxOwogICAgICAgICAgICAgICAgbWluVWNzNCA9IDB4MDAwMDAwODA7CiAg
ICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmICggVVRGOHRyYWl0czo6aXMzYnl0ZShj
KSApCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdWNzNCA9IChQUlVpbnQzMihjKSA8
PCAxMikgJiAweDAwMDBGMDAwTDsKICAgICAgICAgICAgICAgIHN0YXRlID0gMjsKICAgICAgICAg
ICAgICAgIG1pblVjczQgPSAweDAwMDAwODAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ZWxzZSBpZiAoIFVURjh0cmFpdHM6OmlzNGJ5dGUoYykgKQogICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgIHVjczQgPSAoUFJVaW50MzIoYykgPDwgMTgpICYgMHgwMDFGMDAwMEw7CiAgICAg
ICAgICAgICAgICBzdGF0ZSA9IDM7CiAgICAgICAgICAgICAgICBtaW5VY3M0ID0gMHgwMDAxMDAw
MDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKCBVVEY4dHJhaXRzOjppczVi
eXRlKGMpICkKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB1Y3M0ID0gKFBSVWludDMy
KGMpIDw8IDI0KSAmIDB4MDMwMDAwMDBMOwogICAgICAgICAgICAgICAgc3RhdGUgPSA0OwogICAg
ICAgICAgICAgICAgbWluVWNzNCA9IDB4MDAyMDAwMDA7CiAgICAgICAgICAgICAgfQogICAgICAg
ICAgICBlbHNlIGlmICggVVRGOHRyYWl0czo6aXM2Ynl0ZShjKSApCiAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgdWNzNCA9IChQUlVpbnQzMihjKSA8PCAzMCkgJiAweDQwMDAwMDAwTDsK
ICAgICAgICAgICAgICAgIHN0YXRlID0gNTsKICAgICAgICAgICAgICAgIG1pblVjczQgPSAweDA0
MDAwMDAwOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIG1FcnJvckVuY291bnRlcmVkID0gMTsK
ICAgICAgICAgICAgICAgIHJldHVybiBOOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHdo
aWxlICggc3RhdGUtLSApCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgYyA9ICpwKys7
CgogICAgICAgICAgICAgICAgaWYgKCBVVEY4dHJhaXRzOjppc0luU2VxKGMpICkKICAgICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFBSSW50MzIgc2hpZnQgPSBzdGF0ZSAqIDY7
CiAgICAgICAgICAgICAgICAgICAgdWNzNCB8PSAoUFJVaW50MzIoYykgJiAweDNGKSA8PCBzaGlm
dDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgIG1FcnJvckVu
Y291bnRlcmVkID0gMTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTjsKICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggdWNzNCA8IG1pblVjczQg
KQogICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAqbUJ1ZmZlcisrID0gMHhmZmZkOwog
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoIHVjczQgPD0gMHhEN0ZGICkKICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAqbUJ1ZmZlcisrID0gdWNzNDsKICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKCB1Y3M0IDw9IDB4REZGRiApCiAgICAgICAgICAg
ICAgewoKICAgICAgICAgICAgICAgICptQnVmZmVyKysgPSAweGZmZmQ7CiAgICAgICAgICAgICAg
fQogICAgICAgICAgICBlbHNlIGlmICggdWNzNCA9PSAweEZGRkUgfHwgdWNzNCA9PSAweEZGRkYg
KQogICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAqbUJ1ZmZlcisrID0gMHhmZmZkOwog
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoIHVjczQgPj0gMHgwMDAxMDAwMCAp
CiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYgKCB1Y3M0ID49IDB4MDAxMTAwMDAg
KQogICAgICAgICAgICAgICAgICAqbUJ1ZmZlcisrID0gMHhmZmZkOwogICAgICAgICAgICAgICAg
ZWxzZSB7CgogICAgICAgICAgICAgICAgICB1Y3M0IC09IDB4MDAwMTAwMDA7CiAgICAgICAgICAg
ICAgICAgICptQnVmZmVyKysgPSAoUFJVbmljaGFyKSh1Y3M0ID4+IDEwKSB8IDB4ZDgwMHU7CiAg
ICAgICAgICAgICAgICAgICptQnVmZmVyKysgPSAoUFJVbmljaGFyKSh1Y3M0ICYgMHgzZmYpIHwg
MHhkYzAwdTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZiAoIHVjczQgIT0gMHhGRUZGICkK
ICAgICAgICAgICAgICAgICAgICAqbUJ1ZmZlcisrID0gdWNzNDsKICAgICAgICAgICAgICB9CiAg
ICAgICAgICB9CiAgICAgICAgcmV0dXJuIHAgLSBzdGFydDsKICAgICAgfQoKICAgIHByaXZhdGU6
CiAgICAgIGJ1ZmZlcl90eXBlKiBtU3RhcnQ7CiAgICAgIGJ1ZmZlcl90eXBlKiBtQnVmZmVyOwog
ICAgICBQUkJvb2wgbUVycm9yRW5jb3VudGVyZWQ7CiAgfTsKIyA1NSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL3N0cmluZy9uc1N0cmluZy5oIiAyCgoKY2xhc3MgbnNDU3RyaW5nIDoKICBwdWJsaWMg
bnNBRmxhdENTdHJpbmcsCiAgcHVibGljIG5zU3RyIHsKCnB1YmxpYzoKICBmcmllbmQgY2xhc3Mg
bnNTdHJpbmc7CiAgZnJpZW5kIHZvaWQgVG9VcHBlckNhc2UoIG5zQ1N0cmluZyYgKTsKICBmcmll
bmQgdm9pZCBUb0xvd2VyQ2FzZSggbnNDU3RyaW5nJiApOwoKcHJvdGVjdGVkOgogIHZpcnR1YWwg
Y29uc3QgbnNCdWZmZXJIYW5kbGU8Y2hhcj4qIEdldEZsYXRCdWZmZXJIYW5kbGUoKSBjb25zdDsK
ICB2aXJ0dWFsIGNvbnN0IGNoYXIqIEdldFJlYWRhYmxlRnJhZ21lbnQoIG5zUmVhZGFibGVGcmFn
bWVudDxjaGFyPiYsIG5zRnJhZ21lbnRSZXF1ZXN0LCBQUlVpbnQzMiApIGNvbnN0OwogIHZpcnR1
YWwgY2hhciogR2V0V3JpdGFibGVGcmFnbWVudCggbnNXcml0YWJsZUZyYWdtZW50PGNoYXI+Jiwg
bnNGcmFnbWVudFJlcXVlc3QsIFBSVWludDMyICk7CgpwdWJsaWM6CiAgdmlydHVhbCBjb25zdCBj
aGFyKiBnZXQoKSBjb25zdCB7IHJldHVybiBtU3RyOyB9CgpwdWJsaWM6CgoKCiAgbnNDU3RyaW5n
KCk7CgoKCgoKICBuc0NTdHJpbmcoY29uc3QgbnNDU3RyaW5nJiBhU3RyaW5nKTsKCiAgZXhwbGlj
aXQgbnNDU3RyaW5nKCBjb25zdCBuc0FDU3RyaW5nJiApOwoKICBleHBsaWNpdCBuc0NTdHJpbmco
Y29uc3QgY2hhciopOwogIG5zQ1N0cmluZyhjb25zdCBjaGFyKiwgUFJJbnQzMik7CgoKCgoKICB2
aXJ0dWFsIH5uc0NTdHJpbmcoKTsKCgoKCgogIHZpcnR1YWwgUFJVaW50MzIgTGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbUxlbmd0aDsgfQoKCgoKCgoKICB2b2lkIFNldExlbmd0aChQUlVpbnQzMiBh
TGVuZ3RoKTsKCgoKCgoKICB2b2lkIFNldENhcGFjaXR5KFBSVWludDMyIGFMZW5ndGgpOwoKCgoK
CiAgUFJCb29sIFNldENoYXJBdChQUlVuaWNoYXIgYUNoYXIsUFJVaW50MzIgYW5JbmRleCk7CiMg
MTM2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zU3RyaW5nLmgiCiAgdm9pZCBTdHJp
cENoYXJzKGNvbnN0IGNoYXIqIGFTZXQpOwogIHZvaWQgU3RyaXBDaGFyKGNoYXIgYUNoYXIsUFJJ
bnQzMiBhbk9mZnNldD0wKTsKCgoKCgoKICB2b2lkIFN0cmlwV2hpdGVzcGFjZSgpOwoKCgoKCgog
IHZvaWQgUmVwbGFjZUNoYXIoY2hhciBhT2xkQ2hhcixjaGFyIGFOZXdDaGFyKTsKICB2b2lkIFJl
cGxhY2VDaGFyKGNvbnN0IGNoYXIqIGFTZXQsY2hhciBhTmV3Q2hhcik7CgogIHZvaWQgUmVwbGFj
ZVN1YnN0cmluZyhjb25zdCBuc0NTdHJpbmcmIGFUYXJnZXQsY29uc3QgbnNDU3RyaW5nJiBhTmV3
VmFsdWUpOwogIHZvaWQgUmVwbGFjZVN1YnN0cmluZyhjb25zdCBjaGFyKiBhVGFyZ2V0LGNvbnN0
IGNoYXIqIGFOZXdWYWx1ZSk7CiMgMTY4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25z
U3RyaW5nLmgiCiAgdm9pZCBUcmltKGNvbnN0IGNoYXIqIGFTZXQsUFJCb29sIGFFbGltaW5hdGVM
ZWFkaW5nPTEsUFJCb29sIGFFbGltaW5hdGVUcmFpbGluZz0xLFBSQm9vbCBhSWdub3JlUXVvdGVz
PTApOwojIDE3OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZy5oIgogIHZv
aWQgQ29tcHJlc3NXaGl0ZXNwYWNlKCBQUkJvb2wgYUVsaW1pbmF0ZUxlYWRpbmc9MSxQUkJvb2wg
YUVsaW1pbmF0ZVRyYWlsaW5nPTEpOwojIDE5MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmlu
Zy9uc1N0cmluZy5oIgogIGZsb2F0IFRvRmxvYXQoUFJJbnQzMiogYUVycm9yQ29kZSkgY29uc3Q7
CiMgMTk5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zU3RyaW5nLmgiCiAgUFJJbnQz
MiBUb0ludGVnZXIoUFJJbnQzMiogYUVycm9yQ29kZSxQUlVpbnQzMiBhUmFkaXg9KDEwKSkgY29u
c3Q7CiMgMjE1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zU3RyaW5nLmgiCiAgbnND
U3RyaW5nJiBvcGVyYXRvcj0oIGNvbnN0IG5zQ1N0cmluZyYgYVN0cmluZyApIHsgQXNzaWduKGFT
dHJpbmcpOyByZXR1cm4gKnRoaXM7IH0KICBuc0NTdHJpbmcmIG9wZXJhdG9yPSggY29uc3QgbnNB
Q1N0cmluZyYgYVJlYWRhYmxlICkgeyBBc3NpZ24oYVJlYWRhYmxlKTsgcmV0dXJuICp0aGlzOyB9
CgogIG5zQ1N0cmluZyYgb3BlcmF0b3I9KCBjb25zdCBjaGFyKiBhUHRyICkgeyBBc3NpZ24oYVB0
cik7IHJldHVybiAqdGhpczsgfQogIG5zQ1N0cmluZyYgb3BlcmF0b3I9KCBjaGFyIGFDaGFyICkg
eyBBc3NpZ24oYUNoYXIpOyByZXR1cm4gKnRoaXM7IH0KCiAgdm9pZCBBc3NpZ25XaXRoQ29udmVy
c2lvbihjb25zdCBQUlVuaWNoYXIqLFBSSW50MzI9LTEpOwogIHZvaWQgQXNzaWduV2l0aENvbnZl
cnNpb24oIGNvbnN0IG5zU3RyaW5nJiBhU3RyaW5nICk7CiAgdm9pZCBBc3NpZ25XaXRoQ29udmVy
c2lvbiggY29uc3QgbnNBU3RyaW5nJiBhU3RyaW5nICk7CiMgMjM1ICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvc3RyaW5nL25zU3RyaW5nLmgiCiAgdm9pZCBBcHBlbmRXaXRoQ29udmVyc2lvbihjb25z
dCBuc1N0cmluZyYsIFBSSW50MzI9LTEpOwogIHZvaWQgQXBwZW5kV2l0aENvbnZlcnNpb24oIGNv
bnN0IG5zQVN0cmluZyYgYVN0cmluZyApOwogIHZvaWQgQXBwZW5kV2l0aENvbnZlcnNpb24oY29u
c3QgUFJVbmljaGFyKiwgUFJJbnQzMj0tMSk7CgogIHZvaWQgQXBwZW5kSW50KFBSSW50MzIgYUlu
dGVnZXIsUFJJbnQzMiBhUmFkaXg9MTApOwogIHZvaWQgQXBwZW5kRmxvYXQoIGRvdWJsZSBhRmxv
YXQgKTsKIyAyNTAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHJpbmcuaCIKICB2
b2lkIEFkb3B0KCBjaGFyKiBhUHRyLCBQUkludDMyIGFMZW5ndGggPSAtMSApOwojIDI2OSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZy5oIgogIHNpemVfdHlwZSBMZWZ0KCBz
ZWxmX3R5cGUmLCBzaXplX3R5cGUgKSBjb25zdDsKICBzaXplX3R5cGUgTWlkKCBzZWxmX3R5cGUm
LCBQUlVpbnQzMiwgUFJVaW50MzIgKSBjb25zdDsKICBzaXplX3R5cGUgUmlnaHQoIHNlbGZfdHlw
ZSYsIHNpemVfdHlwZSApIGNvbnN0OwojIDI4OCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmlu
Zy9uc1N0cmluZy5oIgogIFBSSW50MzIgRmluZChjb25zdCBuc0NTdHJpbmcmIGFTdHJpbmcsUFJC
b29sIGFJZ25vcmVDYXNlPTAsUFJJbnQzMiBhbk9mZnNldD0wLFBSSW50MzIgYUNvdW50PS0xKSBj
b25zdDsKICBQUkludDMyIEZpbmQoY29uc3QgY2hhciogYVN0cmluZyxQUkJvb2wgYUlnbm9yZUNh
c2U9MCxQUkludDMyIGFuT2Zmc2V0PTAsUFJJbnQzMiBhQ291bnQ9LTEpIGNvbnN0OwojIDI5OSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZy5oIgogIFBSSW50MzIgRmluZENo
YXIoUFJVbmljaGFyIGFDaGFyLFBSSW50MzIgYW5PZmZzZXQ9MCxQUkludDMyIGFDb3VudD0tMSkg
Y29uc3Q7CiMgMzA4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zU3RyaW5nLmgiCiAg
UFJJbnQzMiBGaW5kQ2hhckluU2V0KGNvbnN0IGNoYXIqIGFTdHJpbmcsUFJJbnQzMiBhbk9mZnNl
dD0wKSBjb25zdDsKICBQUkludDMyIEZpbmRDaGFySW5TZXQoY29uc3QgbnNDU3RyaW5nJiBhU3Ry
aW5nLFBSSW50MzIgYW5PZmZzZXQ9MCkgY29uc3Q7CiMgMzE5ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvc3RyaW5nL25zU3RyaW5nLmgiCiAgUFJJbnQzMiBSRmluZChjb25zdCBjaGFyKiBhQ1N0cmlu
ZyxQUkJvb2wgYUlnbm9yZUNhc2U9MCxQUkludDMyIGFuT2Zmc2V0PS0xLFBSSW50MzIgYUNvdW50
PS0xKSBjb25zdDsKICBQUkludDMyIFJGaW5kKGNvbnN0IG5zQ1N0cmluZyYgYVN0cmluZyxQUkJv
b2wgYUlnbm9yZUNhc2U9MCxQUkludDMyIGFuT2Zmc2V0PS0xLFBSSW50MzIgYUNvdW50PS0xKSBj
b25zdDsKIyAzMzAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHJpbmcuaCIKICBQ
UkludDMyIFJGaW5kQ2hhcihQUlVuaWNoYXIgYUNoYXIsUFJJbnQzMiBhbk9mZnNldD0tMSxQUklu
dDMyIGFDb3VudD0tMSkgY29uc3Q7CiMgMzM5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5n
L25zU3RyaW5nLmgiCiAgUFJJbnQzMiBSRmluZENoYXJJblNldChjb25zdCBjaGFyKiBhU3RyaW5n
LFBSSW50MzIgYW5PZmZzZXQ9LTEpIGNvbnN0OwogIFBSSW50MzIgUkZpbmRDaGFySW5TZXQoY29u
c3QgbnNDU3RyaW5nJiBhU3RyaW5nLFBSSW50MzIgYW5PZmZzZXQ9LTEpIGNvbnN0OwojIDM1NiAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZy5oIgogIFBSSW50MzIgQ29tcGFy
ZShjb25zdCBjaGFyKiBhU3RyaW5nLFBSQm9vbCBhSWdub3JlQ2FzZT0wLFBSSW50MzIgYUNvdW50
PS0xKSBjb25zdDsKCiAgUFJCb29sIEVxdWFsc1dpdGhDb252ZXJzaW9uKGNvbnN0IGNoYXIqIGFT
dHJpbmcsUFJCb29sIGFJZ25vcmVDYXNlPTAsUFJJbnQzMiBhQ291bnQ9LTEpIGNvbnN0OwoKICBQ
UkJvb2wgRXF1YWxzSWdub3JlQ2FzZShjb25zdCBjaGFyKiBhU3RyaW5nLFBSSW50MzIgYUNvdW50
PS0xKSBjb25zdDsKIyAzNzIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNTdHJpbmcu
aCIKcHJpdmF0ZToKCgogIHZvaWQgb3BlcmF0b3I9KCBQUlVuaWNoYXIgKTsKICB2b2lkIEFzc2ln
bldpdGhDb252ZXJzaW9uKCBjb25zdCBjaGFyKiwgUFJJbnQzMj0tMSApOwogIHZvaWQgSW5zZXJ0
V2l0aENvbnZlcnNpb24oIGNoYXIsIFBSVWludDMyICk7Cn07CgppbmxpbmUKbnNDU3RyaW5nOjpz
aXplX3R5cGUKbnNDU3RyaW5nOjpMZWZ0KCBuc0FDU3RyaW5nJiBhUmVzdWx0LCBzaXplX3R5cGUg
YUxlbmd0aFRvQ29weSApIGNvbnN0CiAgewogICAgcmV0dXJuIE1pZChhUmVzdWx0LCAwLCBhTGVu
Z3RoVG9Db3B5KTsKICB9CgppbmxpbmUKbnNDU3RyaW5nOjpzaXplX3R5cGUKbnNDU3RyaW5nOjpS
aWdodCggc2VsZl90eXBlJiBhUmVzdWx0LCBzaXplX3R5cGUgYUxlbmd0aFRvQ29weSApIGNvbnN0
CiAgewogICAgc2l6ZV90eXBlIG15TGVuZ3RoID0gTGVuZ3RoKCk7CiAgICBhTGVuZ3RoVG9Db3B5
ID0gTlNfTUlOKG15TGVuZ3RoLCBhTGVuZ3RoVG9Db3B5KTsKICAgIHJldHVybiBNaWQoYVJlc3Vs
dCwgbXlMZW5ndGgtYUxlbmd0aFRvQ29weSwgYUxlbmd0aFRvQ29weSk7CiAgfQojIDQwNiAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1N0cmluZy5oIgpjbGFzcyBuc0NBdXRvU3RyaW5n
IDogcHVibGljIG5zQ1N0cmluZyB7CnB1YmxpYzoKCiAgICB2aXJ0dWFsIH5uc0NBdXRvU3RyaW5n
KCkge30KCiAgICBuc0NBdXRvU3RyaW5nKCk7CiAgICBleHBsaWNpdCBuc0NBdXRvU3RyaW5nKGNv
bnN0IG5zQ1N0cmluZyYgKTsKICAgIGV4cGxpY2l0IG5zQ0F1dG9TdHJpbmcoY29uc3QgbnNBQ1N0
cmluZyYgYVN0cmluZyk7CiAgICBleHBsaWNpdCBuc0NBdXRvU3RyaW5nKGNvbnN0IGNoYXIqIGFT
dHJpbmcpOwogICAgbnNDQXV0b1N0cmluZyhjb25zdCBjaGFyKiBhU3RyaW5nLFBSSW50MzIgYUxl
bmd0aCk7CiAgICBleHBsaWNpdCBuc0NBdXRvU3RyaW5nKGNvbnN0IENCdWZEZXNjcmlwdG9yJiBh
QnVmZmVyKTsKCiAgICBuc0NBdXRvU3RyaW5nJiBvcGVyYXRvcj0oIGNvbnN0IG5zQ0F1dG9TdHJp
bmcmIGFTdHJpbmcgKSB7IEFzc2lnbihhU3RyaW5nKTsgcmV0dXJuICp0aGlzOyB9CiAgcHJpdmF0
ZToKICAgIHZvaWQgb3BlcmF0b3I9KCBQUlVuaWNoYXIgKTsKICBwdWJsaWM6CiAgICBuc0NBdXRv
U3RyaW5nJiBvcGVyYXRvcj0oIGNvbnN0IG5zQUNTdHJpbmcmIGFSZWFkYWJsZSApIHsgQXNzaWdu
KGFSZWFkYWJsZSk7IHJldHVybiAqdGhpczsgfQoKICAgIG5zQ0F1dG9TdHJpbmcmIG9wZXJhdG9y
PSggY29uc3QgY2hhciogYVB0ciApIHsgQXNzaWduKGFQdHIpOyByZXR1cm4gKnRoaXM7IH0KICAg
IG5zQ0F1dG9TdHJpbmcmIG9wZXJhdG9yPSggY2hhciBhQ2hhciApIHsgQXNzaWduKGFDaGFyKTsg
cmV0dXJuICp0aGlzOyB9CiMgNDM1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zU3Ry
aW5nLmgiCiAgICBjaGFyIG1CdWZmZXJba0RlZmF1bHRTdHJpbmdTaXplXTsKfTsKCgoKCgoKY2xh
c3MgTlNfQ29udmVydFVDUzJ0b1VURjgKICAgICAgOiBwdWJsaWMgbnNDQXV0b1N0cmluZwoKCgog
IHsKICAgIHB1YmxpYzoKICAgICAgZnJpZW5kIGNoYXIqIFRvTmV3VVRGOFN0cmluZyggY29uc3Qg
bnNBU3RyaW5nJiBhU291cmNlICk7CgogICAgcHVibGljOgogICAgICBleHBsaWNpdAogICAgICBO
U19Db252ZXJ0VUNTMnRvVVRGOCggY29uc3QgUFJVbmljaGFyKiBhU3RyaW5nICkKICAgICAgICB7
CiAgICAgICAgICBBcHBlbmQoIGFTdHJpbmcsIH5QUlVpbnQzMigwKSApOwogICAgICAgIH0KCiAg
ICAgIE5TX0NvbnZlcnRVQ1MydG9VVEY4KCBjb25zdCBQUlVuaWNoYXIqIGFTdHJpbmcsIFBSVWlu
dDMyIGFMZW5ndGggKQogICAgICAgIHsKICAgICAgICAgIEFwcGVuZCggYVN0cmluZywgYUxlbmd0
aCApOwogICAgICAgIH0KCiAgICAgIGV4cGxpY2l0IE5TX0NvbnZlcnRVQ1MydG9VVEY4KCBjb25z
dCBuc0FTdHJpbmcmIGFTdHJpbmcgKTsKCiAgICBwcm90ZWN0ZWQ6CiAgICAgIHZvaWQgQXBwZW5k
KCBjb25zdCBQUlVuaWNoYXIqIGFTdHJpbmcsIFBSVWludDMyIGFMZW5ndGggKTsKCiAgICBwcml2
YXRlOgoKICAgICAgTlNfQ29udmVydFVDUzJ0b1VURjgoIGNoYXIgKTsKICB9OwoKCgoKY2xhc3Mg
TlNfTG9zc3lDb252ZXJ0VUNTMnRvQVNDSUkKICAgICAgOiBwdWJsaWMgbnNDQXV0b1N0cmluZwoK
CgogIHsKICAgIHB1YmxpYzoKICAgICAgZXhwbGljaXQKICAgICAgTlNfTG9zc3lDb252ZXJ0VUNT
MnRvQVNDSUkoIGNvbnN0IFBSVW5pY2hhciogYVN0cmluZyApCiAgICAgICAgewogICAgICAgICAg
QXBwZW5kV2l0aENvbnZlcnNpb24oIGFTdHJpbmcsIH5QUlVpbnQzMigwKSApOwogICAgICAgIH0K
CiAgICAgIE5TX0xvc3N5Q29udmVydFVDUzJ0b0FTQ0lJKCBjb25zdCBQUlVuaWNoYXIqIGFTdHJp
bmcsIFBSVWludDMyIGFMZW5ndGggKQogICAgICAgIHsKICAgICAgICAgIEFwcGVuZFdpdGhDb252
ZXJzaW9uKCBhU3RyaW5nLCBhTGVuZ3RoICk7CiAgICAgICAgfQoKICAgICAgZXhwbGljaXQgTlNf
TG9zc3lDb252ZXJ0VUNTMnRvQVNDSUkoIGNvbnN0IG5zQVN0cmluZyYgYVN0cmluZyApOwoKICAg
IHByaXZhdGU6CgogICAgICBOU19Mb3NzeUNvbnZlcnRVQ1MydG9BU0NJSSggY2hhciApOwogIH07
CiMgNDUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NU2NyaXB0T2JqZWN0RmFjdG9y
eS5oIiAyCgoKCgoKY2xhc3MgbnNJU2NyaXB0Q29udGV4dDsKY2xhc3MgbnNJU2NyaXB0R2xvYmFs
T2JqZWN0OwpjbGFzcyBuc0lET01FdmVudExpc3RlbmVyOwoKY2xhc3MgbnNJRE9NU2NyaXB0T2Jq
ZWN0RmFjdG9yeSA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CnB1YmxpYzoKICBzdGF0aWMgY29uc3Qg
bnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0geyAweGE2Y2Y5MDY0LCAw
eDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRk
LCAweDMyIH0gfTsgcmV0dXJuIGlpZDt9CgogIHZpcnR1YWwgbnNyZXN1bHQgTmV3U2NyaXB0Q29u
dGV4dChuc0lTY3JpcHRHbG9iYWxPYmplY3QgKmFHbG9iYWwsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5zSVNjcmlwdENvbnRleHQgKiphQ29udGV4dCkgPSAwOwoKICB2aXJ0dWFsIG5z
cmVzdWx0IE5ld0pTRXZlbnRMaXN0ZW5lcihuc0lTY3JpcHRDb250ZXh0ICphQ29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdXBwb3J0cyogYU9iamVjdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lET01FdmVudExpc3RlbmVyICoqIGFJbnN0YW5j
ZVB0clJlc3VsdCkgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IE5ld1NjcmlwdEdsb2JhbE9iamVj
dChQUkJvb2wgYUlzQ2hyb21lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5z
SVNjcmlwdEdsb2JhbE9iamVjdCAqKmFHbG9iYWwpID0gMDsKCiAgdmlydHVhbCBuc0lTdXBwb3J0
cyAqR2V0Q2xhc3NJbmZvSW5zdGFuY2UobnNET01DbGFzc0luZm9JRCBhSUQpID0gMDsKICB2aXJ0
dWFsIG5zSVN1cHBvcnRzICpHZXRFeHRlcm5hbENsYXNzSW5mb0luc3RhbmNlKGNvbnN0IG5zQVN0
cmluZyYgYU5hbWUpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFJlZ2lzdGVyRE9NQ2xh
c3NJbmZvKGNvbnN0IGNoYXIgKmFOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnNET01DbGFzc0luZm9FeHRlcm5hbENvbnN0cnVjdG9yRm5jIGFDb25zdHJ1Y3RvckZwdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuc0lJRCAqYVByb3RvQ2hh
aW5JbnRlcmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuc0lJ
RCAqKmFJbnRlcmZhY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJVaW50
MzIgYVNjcmlwdGFibGVGbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBS
Qm9vbCBhSGFzQ2xhc3NJbnRlcmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBuc0NJRCAqYUNvbnN0cnVjdG9yQ0lEKSA9IDA7Cn07CiMgMzE0ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvZG9tL25zSURPTUNsYXNzSW5mby5oIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2RvbS9uc0RPTUNJRC5oIiAxCiMgMzE1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9t
L25zSURPTUNsYXNzSW5mby5oIiAyCiMgMzc0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25z
SURPTUNsYXNzSW5mby5oIgpjbGFzcyBuc0lET01TY3JpcHRPYmplY3RGYWN0b3J5OwoKY2xhc3Mg
bnNJRE9NQ0lFeHRlbnNpb24gOiBwdWJsaWMgbnNJU3VwcG9ydHMgewpwdWJsaWM6CiAgc3RhdGlj
IGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsgMHg4OTFh
N2IwMSwgMHgxYjYxLCAweDExZDYsIHsgMHhhNywgMHhmMiwgMHhmNiwgMHg5MCwgMHhiNiwgMHgz
OCwgMHg4OSwgMHg5YyB9IH07IHJldHVybiBpaWQ7fQoKICB2aXJ0dWFsIG5zcmVzdWx0IFJlZ2lz
dGVyRE9NQ0koY29uc3QgY2hhciogYU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5z
SURPTVNjcmlwdE9iamVjdEZhY3RvcnkqIGFET01TT0ZhY3RvcnkpID0gMDsKfTsKIyA0NCAibnNE
T01DbGFzc0luZm8uaCIgMgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNhcGkuaCIg
MQojIDQwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNhcGkuaCIKIyAxICIvdXNyL2xpYi9n
Y2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDQx
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNhcGkuaCIgMgoKCgpleHRlcm4gIkMiIHsKIyAx
NDcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2FwaS5oIgpleHRlcm4gaW50NjQKSlNfTm93
KCk7CgoKZXh0ZXJuIGpzdmFsCkpTX0dldE5hTlZhbHVlKEpTQ29udGV4dCAqY3gpOwoKZXh0ZXJu
IGpzdmFsCkpTX0dldE5lZ2F0aXZlSW5maW5pdHlWYWx1ZShKU0NvbnRleHQgKmN4KTsKCmV4dGVy
biBqc3ZhbApKU19HZXRQb3NpdGl2ZUluZmluaXR5VmFsdWUoSlNDb250ZXh0ICpjeCk7CgpleHRl
cm4ganN2YWwKSlNfR2V0RW1wdHlTdHJpbmdWYWx1ZShKU0NvbnRleHQgKmN4KTsKIyAxOTYgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2FwaS5oIgpleHRlcm4gSlNCb29sCkpTX0NvbnZlcnRB
cmd1bWVudHMoSlNDb250ZXh0ICpjeCwgdWludE4gYXJnYywganN2YWwgKmFyZ3YsIGNvbnN0IGNo
YXIgKmZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAuLi4pOwojIDIxNiAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2pzL2pzYXBpLmgiCmV4dGVybiBqc3ZhbCAqCkpTX1B1c2hBcmd1bWVudHMoSlND
b250ZXh0ICpjeCwgdm9pZCAqKm1hcmtwLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLik7CgoKCgoK
CmV4dGVybiB2b2lkCkpTX1BvcEFyZ3VtZW50cyhKU0NvbnRleHQgKmN4LCB2b2lkICptYXJrKTsK
IyAyNzcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2FwaS5oIgpleHRlcm4gSlNCb29sCkpT
X0NvbnZlcnRWYWx1ZShKU0NvbnRleHQgKmN4LCBqc3ZhbCB2LCBKU1R5cGUgdHlwZSwganN2YWwg
KnZwKTsKCmV4dGVybiBKU0Jvb2wKSlNfVmFsdWVUb09iamVjdChKU0NvbnRleHQgKmN4LCBqc3Zh
bCB2LCBKU09iamVjdCAqKm9ianApOwoKZXh0ZXJuIEpTRnVuY3Rpb24gKgpKU19WYWx1ZVRvRnVu
Y3Rpb24oSlNDb250ZXh0ICpjeCwganN2YWwgdik7CgpleHRlcm4gSlNGdW5jdGlvbiAqCkpTX1Zh
bHVlVG9Db25zdHJ1Y3RvcihKU0NvbnRleHQgKmN4LCBqc3ZhbCB2KTsKCmV4dGVybiBKU1N0cmlu
ZyAqCkpTX1ZhbHVlVG9TdHJpbmcoSlNDb250ZXh0ICpjeCwganN2YWwgdik7CgpleHRlcm4gSlNC
b29sCkpTX1ZhbHVlVG9OdW1iZXIoSlNDb250ZXh0ICpjeCwganN2YWwgdiwganNkb3VibGUgKmRw
KTsKCgoKCgpleHRlcm4gSlNCb29sCkpTX1ZhbHVlVG9FQ01BSW50MzIoSlNDb250ZXh0ICpjeCwg
anN2YWwgdiwgaW50MzIgKmlwKTsKCgoKCgpleHRlcm4gSlNCb29sCkpTX1ZhbHVlVG9FQ01BVWlu
dDMyKEpTQ29udGV4dCAqY3gsIGpzdmFsIHYsIHVpbnQzMiAqaXApOwoKCgoKCgpleHRlcm4gSlNC
b29sCkpTX1ZhbHVlVG9JbnQzMihKU0NvbnRleHQgKmN4LCBqc3ZhbCB2LCBpbnQzMiAqaXApOwoK
CgoKZXh0ZXJuIEpTQm9vbApKU19WYWx1ZVRvVWludDE2KEpTQ29udGV4dCAqY3gsIGpzdmFsIHYs
IHVpbnQxNiAqaXApOwoKZXh0ZXJuIEpTQm9vbApKU19WYWx1ZVRvQm9vbGVhbihKU0NvbnRleHQg
KmN4LCBqc3ZhbCB2LCBKU0Jvb2wgKmJwKTsKCmV4dGVybiBKU1R5cGUKSlNfVHlwZU9mVmFsdWUo
SlNDb250ZXh0ICpjeCwganN2YWwgdik7CgpleHRlcm4gY29uc3QgY2hhciAqCkpTX0dldFR5cGVO
YW1lKEpTQ29udGV4dCAqY3gsIEpTVHlwZSB0eXBlKTsKIyAzNDIgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9qcy9qc2FwaS5oIgpleHRlcm4gSlNSdW50aW1lICoKSlNfSW5pdCh1aW50MzIgbWF4Ynl0
ZXMpOwoKZXh0ZXJuIHZvaWQKSlNfRmluaXNoKEpTUnVudGltZSAqcnQpOwoKZXh0ZXJuIHZvaWQK
SlNfU2h1dERvd24odm9pZCk7Cgp2b2lkICoKSlNfR2V0UnVudGltZVByaXZhdGUoSlNSdW50aW1l
ICpydCk7Cgp2b2lkCkpTX1NldFJ1bnRpbWVQcml2YXRlKEpTUnVudGltZSAqcnQsIHZvaWQgKmRh
dGEpOwoKCgpleHRlcm4gdm9pZApKU19CZWdpblJlcXVlc3QoSlNDb250ZXh0ICpjeCk7CgpleHRl
cm4gdm9pZApKU19FbmRSZXF1ZXN0KEpTQ29udGV4dCAqY3gpOwoKCmV4dGVybiB2b2lkCkpTX1lp
ZWxkUmVxdWVzdChKU0NvbnRleHQgKmN4KTsKCmV4dGVybiBqc3JlZmNvdW50CkpTX1N1c3BlbmRS
ZXF1ZXN0KEpTQ29udGV4dCAqY3gpOwoKZXh0ZXJuIHZvaWQKSlNfUmVzdW1lUmVxdWVzdChKU0Nv
bnRleHQgKmN4LCBqc3JlZmNvdW50IHNhdmVEZXB0aCk7CgoKCmV4dGVybiB2b2lkCkpTX0xvY2so
SlNSdW50aW1lICpydCk7CgpleHRlcm4gdm9pZApKU19VbmxvY2soSlNSdW50aW1lICpydCk7Cgpl
eHRlcm4gSlNDb250ZXh0ICoKSlNfTmV3Q29udGV4dChKU1J1bnRpbWUgKnJ0LCBzaXplX3Qgc3Rh
Y2tDaHVua1NpemUpOwoKZXh0ZXJuIHZvaWQKSlNfRGVzdHJveUNvbnRleHQoSlNDb250ZXh0ICpj
eCk7CgpleHRlcm4gdm9pZApKU19EZXN0cm95Q29udGV4dE5vR0MoSlNDb250ZXh0ICpjeCk7Cgpl
eHRlcm4gdm9pZApKU19EZXN0cm95Q29udGV4dE1heWJlR0MoSlNDb250ZXh0ICpjeCk7CgpleHRl
cm4gdm9pZCAqCkpTX0dldENvbnRleHRQcml2YXRlKEpTQ29udGV4dCAqY3gpOwoKZXh0ZXJuIHZv
aWQKSlNfU2V0Q29udGV4dFByaXZhdGUoSlNDb250ZXh0ICpjeCwgdm9pZCAqZGF0YSk7CgpleHRl
cm4gSlNSdW50aW1lICoKSlNfR2V0UnVudGltZShKU0NvbnRleHQgKmN4KTsKCmV4dGVybiBKU0Nv
bnRleHQgKgpKU19Db250ZXh0SXRlcmF0b3IoSlNSdW50aW1lICpydCwgSlNDb250ZXh0ICoqaXRl
cnApOwoKZXh0ZXJuIEpTVmVyc2lvbgpKU19HZXRWZXJzaW9uKEpTQ29udGV4dCAqY3gpOwoKZXh0
ZXJuIEpTVmVyc2lvbgpKU19TZXRWZXJzaW9uKEpTQ29udGV4dCAqY3gsIEpTVmVyc2lvbiB2ZXJz
aW9uKTsKCmV4dGVybiBjb25zdCBjaGFyICoKSlNfVmVyc2lvblRvU3RyaW5nKEpTVmVyc2lvbiB2
ZXJzaW9uKTsKCmV4dGVybiBKU1ZlcnNpb24KSlNfU3RyaW5nVG9WZXJzaW9uKGNvbnN0IGNoYXIg
KnN0cmluZyk7CiMgNDM2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNhcGkuaCIKZXh0ZXJu
IHVpbnQzMgpKU19HZXRPcHRpb25zKEpTQ29udGV4dCAqY3gpOwoKZXh0ZXJuIHVpbnQzMgpKU19T
ZXRPcHRpb25zKEpTQ29udGV4dCAqY3gsIHVpbnQzMiBvcHRpb25zKTsKCmV4dGVybiB1aW50MzIK
SlNfVG9nZ2xlT3B0aW9ucyhKU0NvbnRleHQgKmN4LCB1aW50MzIgb3B0aW9ucyk7CgpleHRlcm4g
Y29uc3QgY2hhciAqCkpTX0dldEltcGxlbWVudGF0aW9uVmVyc2lvbih2b2lkKTsKCmV4dGVybiBK
U09iamVjdCAqCkpTX0dldEdsb2JhbE9iamVjdChKU0NvbnRleHQgKmN4KTsKCmV4dGVybiB2b2lk
CkpTX1NldEdsb2JhbE9iamVjdChKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqKTsKIyA0NjEg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2FwaS5oIgpleHRlcm4gSlNCb29sCkpTX0luaXRT
dGFuZGFyZENsYXNzZXMoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaik7CiMgNDc3ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvanMvanNhcGkuaCIKZXh0ZXJuIEpTQm9vbApKU19SZXNvbHZlU3Rh
bmRhcmRDbGFzcyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBqc3ZhbCBpZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgSlNCb29sICpyZXNvbHZlZCk7CgpleHRlcm4gSlNCb29sCkpTX0Vu
dW1lcmF0ZVN0YW5kYXJkQ2xhc3NlcyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqKTsKCmV4
dGVybiBKU09iamVjdCAqCkpTX0dldFNjb3BlQ2hhaW4oSlNDb250ZXh0ICpjeCk7CgpleHRlcm4g
dm9pZCAqCkpTX21hbGxvYyhKU0NvbnRleHQgKmN4LCBzaXplX3QgbmJ5dGVzKTsKCmV4dGVybiB2
b2lkICoKSlNfcmVhbGxvYyhKU0NvbnRleHQgKmN4LCB2b2lkICpwLCBzaXplX3QgbmJ5dGVzKTsK
CmV4dGVybiB2b2lkCkpTX2ZyZWUoSlNDb250ZXh0ICpjeCwgdm9pZCAqcCk7CgpleHRlcm4gY2hh
ciAqCkpTX3N0cmR1cChKU0NvbnRleHQgKmN4LCBjb25zdCBjaGFyICpzKTsKCmV4dGVybiBqc2Rv
dWJsZSAqCkpTX05ld0RvdWJsZShKU0NvbnRleHQgKmN4LCBqc2RvdWJsZSBkKTsKCmV4dGVybiBK
U0Jvb2wKSlNfTmV3RG91YmxlVmFsdWUoSlNDb250ZXh0ICpjeCwganNkb3VibGUgZCwganN2YWwg
KnJ2YWwpOwoKZXh0ZXJuIEpTQm9vbApKU19OZXdOdW1iZXJWYWx1ZShKU0NvbnRleHQgKmN4LCBq
c2RvdWJsZSBkLCBqc3ZhbCAqcnZhbCk7CiMgNTI0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMv
anNhcGkuaCIKZXh0ZXJuIEpTQm9vbApKU19BZGRSb290KEpTQ29udGV4dCAqY3gsIHZvaWQgKnJw
KTsKCmV4dGVybiBKU0Jvb2wKSlNfQWRkTmFtZWRSb290KEpTQ29udGV4dCAqY3gsIHZvaWQgKnJw
LCBjb25zdCBjaGFyICpuYW1lKTsKCmV4dGVybiBKU0Jvb2wKSlNfQWRkTmFtZWRSb290UlQoSlNS
dW50aW1lICpydCwgdm9pZCAqcnAsIGNvbnN0IGNoYXIgKm5hbWUpOwoKZXh0ZXJuIEpTQm9vbApK
U19SZW1vdmVSb290KEpTQ29udGV4dCAqY3gsIHZvaWQgKnJwKTsKCmV4dGVybiBKU0Jvb2wKSlNf
UmVtb3ZlUm9vdFJUKEpTUnVudGltZSAqcnQsIHZvaWQgKnJwKTsKIyA1NTQgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9qcy9qc2FwaS5oIgpleHRlcm4gdm9pZApKU19DbGVhck5ld2Jvcm5Sb290cyhK
U0NvbnRleHQgKmN4KTsKIyA1ODYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2FwaS5oIgp0
eXBlZGVmIGludE4KKCogSlNHQ1Jvb3RNYXBGdW4pKHZvaWQgKnJwLCBjb25zdCBjaGFyICpuYW1l
LCB2b2lkICpkYXRhKTsKCmV4dGVybiB1aW50MzIKSlNfTWFwR0NSb290cyhKU1J1bnRpbWUgKnJ0
LCBKU0dDUm9vdE1hcEZ1biBtYXAsIHZvaWQgKmRhdGEpOwoKZXh0ZXJuIEpTQm9vbApKU19Mb2Nr
R0NUaGluZyhKU0NvbnRleHQgKmN4LCB2b2lkICp0aGluZyk7CgpleHRlcm4gSlNCb29sCkpTX0xv
Y2tHQ1RoaW5nUlQoSlNSdW50aW1lICpydCwgdm9pZCAqdGhpbmcpOwoKZXh0ZXJuIEpTQm9vbApK
U19VbmxvY2tHQ1RoaW5nKEpTQ29udGV4dCAqY3gsIHZvaWQgKnRoaW5nKTsKCmV4dGVybiBKU0Jv
b2wKSlNfVW5sb2NrR0NUaGluZ1JUKEpTUnVudGltZSAqcnQsIHZvaWQgKnRoaW5nKTsKIyA2MTcg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2FwaS5oIgpleHRlcm4gdm9pZApKU19NYXJrR0NU
aGluZyhKU0NvbnRleHQgKmN4LCB2b2lkICp0aGluZywgY29uc3QgY2hhciAqbmFtZSwgdm9pZCAq
YXJnKTsKCmV4dGVybiB2b2lkCkpTX0dDKEpTQ29udGV4dCAqY3gpOwoKZXh0ZXJuIHZvaWQKSlNf
TWF5YmVHQyhKU0NvbnRleHQgKmN4KTsKCmV4dGVybiBKU0dDQ2FsbGJhY2sKSlNfU2V0R0NDYWxs
YmFjayhKU0NvbnRleHQgKmN4LCBKU0dDQ2FsbGJhY2sgY2IpOwoKZXh0ZXJuIEpTR0NDYWxsYmFj
awpKU19TZXRHQ0NhbGxiYWNrUlQoSlNSdW50aW1lICpydCwgSlNHQ0NhbGxiYWNrIGNiKTsKCmV4
dGVybiBKU0Jvb2wKSlNfSXNBYm91dFRvQmVGaW5hbGl6ZWQoSlNDb250ZXh0ICpjeCwgdm9pZCAq
dGhpbmcpOwojIDY0NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzYXBpLmgiCmV4dGVybiBp
bnROCkpTX0FkZEV4dGVybmFsU3RyaW5nRmluYWxpemVyKEpTU3RyaW5nRmluYWxpemVPcCBmaW5h
bGl6ZXIpOwojIDY2MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzYXBpLmgiCmV4dGVybiBp
bnROCkpTX1JlbW92ZUV4dGVybmFsU3RyaW5nRmluYWxpemVyKEpTU3RyaW5nRmluYWxpemVPcCBm
aW5hbGl6ZXIpOwoKCgoKCgpleHRlcm4gSlNTdHJpbmcgKgpKU19OZXdFeHRlcm5hbFN0cmluZyhK
U0NvbnRleHQgKmN4LCBqc2NoYXIgKmNoYXJzLCBzaXplX3QgbGVuZ3RoLCBpbnROIHR5cGUpOwoK
CgoKCmV4dGVybiBpbnROCkpTX0dldEV4dGVybmFsU3RyaW5nR0NUeXBlKEpTUnVudGltZSAqcnQs
IEpTU3RyaW5nICpzdHIpOwojIDY4OCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzYXBpLmgi
CnN0cnVjdCBKU0NsYXNzIHsKICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICB1aW50MzIgZmxhZ3M7
CgoKICAgIEpTUHJvcGVydHlPcCBhZGRQcm9wZXJ0eTsKICAgIEpTUHJvcGVydHlPcCBkZWxQcm9w
ZXJ0eTsKICAgIEpTUHJvcGVydHlPcCBnZXRQcm9wZXJ0eTsKICAgIEpTUHJvcGVydHlPcCBzZXRQ
cm9wZXJ0eTsKICAgIEpTRW51bWVyYXRlT3AgZW51bWVyYXRlOwogICAgSlNSZXNvbHZlT3AgcmVz
b2x2ZTsKICAgIEpTQ29udmVydE9wIGNvbnZlcnQ7CiAgICBKU0ZpbmFsaXplT3AgZmluYWxpemU7
CgoKICAgIEpTR2V0T2JqZWN0T3BzIGdldE9iamVjdE9wczsKICAgIEpTQ2hlY2tBY2Nlc3NPcCBj
aGVja0FjY2VzczsKICAgIEpTTmF0aXZlIGNhbGw7CiAgICBKU05hdGl2ZSBjb25zdHJ1Y3Q7CiAg
ICBKU1hEUk9iamVjdE9wIHhkck9iamVjdDsKICAgIEpTSGFzSW5zdGFuY2VPcCBoYXNJbnN0YW5j
ZTsKICAgIEpTTWFya09wIG1hcms7CiAgICBqc3dvcmQgc3BhcmU7Cn07CiMgNzM3ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvanMvanNhcGkuaCIKc3RydWN0IEpTT2JqZWN0T3BzIHsKCiAgICBKU05l
d09iamVjdE1hcE9wIG5ld09iamVjdE1hcDsKICAgIEpTT2JqZWN0TWFwT3AgZGVzdHJveU9iamVj
dE1hcDsKICAgIEpTTG9va3VwUHJvcE9wIGxvb2t1cFByb3BlcnR5OwogICAgSlNEZWZpbmVQcm9w
T3AgZGVmaW5lUHJvcGVydHk7CiAgICBKU1Byb3BlcnR5SWRPcCBnZXRQcm9wZXJ0eTsKICAgIEpT
UHJvcGVydHlJZE9wIHNldFByb3BlcnR5OwogICAgSlNBdHRyaWJ1dGVzT3AgZ2V0QXR0cmlidXRl
czsKICAgIEpTQXR0cmlidXRlc09wIHNldEF0dHJpYnV0ZXM7CiAgICBKU1Byb3BlcnR5SWRPcCBk
ZWxldGVQcm9wZXJ0eTsKICAgIEpTQ29udmVydE9wIGRlZmF1bHRWYWx1ZTsKICAgIEpTTmV3RW51
bWVyYXRlT3AgZW51bWVyYXRlOwogICAgSlNDaGVja0FjY2Vzc0lkT3AgY2hlY2tBY2Nlc3M7CgoK
ICAgIEpTT2JqZWN0T3AgdGhpc09iamVjdDsKICAgIEpTUHJvcGVydHlSZWZPcCBkcm9wUHJvcGVy
dHk7CiAgICBKU05hdGl2ZSBjYWxsOwogICAgSlNOYXRpdmUgY29uc3RydWN0OwogICAgSlNYRFJP
YmplY3RPcCB4ZHJPYmplY3Q7CiAgICBKU0hhc0luc3RhbmNlT3AgaGFzSW5zdGFuY2U7CiAgICBK
U1NldE9iamVjdFNsb3RPcCBzZXRQcm90bzsKICAgIEpTU2V0T2JqZWN0U2xvdE9wIHNldFBhcmVu
dDsKICAgIEpTTWFya09wIG1hcms7CiAgICBKU0ZpbmFsaXplT3AgY2xlYXI7CiAgICBKU0dldFJl
cXVpcmVkU2xvdE9wIGdldFJlcXVpcmVkU2xvdDsKICAgIEpTU2V0UmVxdWlyZWRTbG90T3Agc2V0
UmVxdWlyZWRTbG90Owp9OwojIDc3NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzYXBpLmgi
CnN0cnVjdCBKU1Byb3BlcnR5IHsKICAgIGpzaWQgaWQ7Cn07CgpzdHJ1Y3QgSlNJZEFycmF5IHsK
ICAgIGpzaW50IGxlbmd0aDsKICAgIGpzaWQgdmVjdG9yWzFdOwp9OwoKZXh0ZXJuIHZvaWQKSlNf
RGVzdHJveUlkQXJyYXkoSlNDb250ZXh0ICpjeCwgSlNJZEFycmF5ICppZGEpOwoKZXh0ZXJuIEpT
Qm9vbApKU19WYWx1ZVRvSWQoSlNDb250ZXh0ICpjeCwganN2YWwgdiwganNpZCAqaWRwKTsKCmV4
dGVybiBKU0Jvb2wKSlNfSWRUb1ZhbHVlKEpTQ29udGV4dCAqY3gsIGpzaWQgaWQsIGpzdmFsICp2
cCk7CgoKCgpleHRlcm4gSlNCb29sCkpTX1Byb3BlcnR5U3R1YihKU0NvbnRleHQgKmN4LCBKU09i
amVjdCAqb2JqLCBqc3ZhbCBpZCwganN2YWwgKnZwKTsKCmV4dGVybiBKU0Jvb2wKSlNfRW51bWVy
YXRlU3R1YihKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqKTsKCmV4dGVybiBKU0Jvb2wKSlNf
UmVzb2x2ZVN0dWIoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwganN2YWwgaWQpOwoKZXh0
ZXJuIEpTQm9vbApKU19Db252ZXJ0U3R1YihKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBK
U1R5cGUgdHlwZSwganN2YWwgKnZwKTsKCmV4dGVybiB2b2lkCkpTX0ZpbmFsaXplU3R1YihKU0Nv
bnRleHQgKmN4LCBKU09iamVjdCAqb2JqKTsKCnN0cnVjdCBKU0NvbnN0RG91YmxlU3BlYyB7CiAg
ICBqc2RvdWJsZSBkdmFsOwogICAgY29uc3QgY2hhciAqbmFtZTsKICAgIHVpbnQ4IGZsYWdzOwog
ICAgdWludDggc3BhcmVbM107Cn07CgoKCgoKCnN0cnVjdCBKU1Byb3BlcnR5U3BlYyB7CiAgICBj
b25zdCBjaGFyICpuYW1lOwogICAgaW50OCB0aW55aWQ7CiAgICB1aW50OCBmbGFnczsKICAgIEpT
UHJvcGVydHlPcCBnZXR0ZXI7CiAgICBKU1Byb3BlcnR5T3Agc2V0dGVyOwp9OwoKc3RydWN0IEpT
RnVuY3Rpb25TcGVjIHsKICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICBKU05hdGl2ZSBjYWxsOwog
ICAgdWludDggbmFyZ3M7CiAgICB1aW50OCBmbGFnczsKICAgIHVpbnQxNiBleHRyYTsKfTsKCmV4
dGVybiBKU09iamVjdCAqCkpTX0luaXRDbGFzcyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2Jq
LCBKU09iamVjdCAqcGFyZW50X3Byb3RvLAogICAgICAgICAgICAgSlNDbGFzcyAqY2xhc3AsIEpT
TmF0aXZlIGNvbnN0cnVjdG9yLCB1aW50TiBuYXJncywKICAgICAgICAgICAgIEpTUHJvcGVydHlT
cGVjICpwcywgSlNGdW5jdGlvblNwZWMgKmZzLAogICAgICAgICAgICAgSlNQcm9wZXJ0eVNwZWMg
KnN0YXRpY19wcywgSlNGdW5jdGlvblNwZWMgKnN0YXRpY19mcyk7CgoKZXh0ZXJuIEpTQ2xhc3Mg
KgpKU19HZXRDbGFzcyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqKTsKIyA4NTkgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9qcy9qc2FwaS5oIgpleHRlcm4gSlNCb29sCkpTX0luc3RhbmNlT2Yo
SlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgSlNDbGFzcyAqY2xhc3AsIGpzdmFsICphcmd2
KTsKCmV4dGVybiB2b2lkICoKSlNfR2V0UHJpdmF0ZShKU0NvbnRleHQgKmN4LCBKU09iamVjdCAq
b2JqKTsKCmV4dGVybiBKU0Jvb2wKSlNfU2V0UHJpdmF0ZShKU0NvbnRleHQgKmN4LCBKU09iamVj
dCAqb2JqLCB2b2lkICpkYXRhKTsKCmV4dGVybiB2b2lkICoKSlNfR2V0SW5zdGFuY2VQcml2YXRl
KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIEpTQ2xhc3MgKmNsYXNwLAogICAgICAgICAg
ICAgICAgICAgICAganN2YWwgKmFyZ3YpOwoKZXh0ZXJuIEpTT2JqZWN0ICoKSlNfR2V0UHJvdG90
eXBlKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmopOwoKZXh0ZXJuIEpTQm9vbApKU19TZXRQ
cm90b3R5cGUoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgSlNPYmplY3QgKnByb3RvKTsK
CmV4dGVybiBKU09iamVjdCAqCkpTX0dldFBhcmVudChKU0NvbnRleHQgKmN4LCBKU09iamVjdCAq
b2JqKTsKCmV4dGVybiBKU0Jvb2wKSlNfU2V0UGFyZW50KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0
ICpvYmosIEpTT2JqZWN0ICpwYXJlbnQpOwoKZXh0ZXJuIEpTT2JqZWN0ICoKSlNfR2V0Q29uc3Ry
dWN0b3IoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKnByb3RvKTsKCmV4dGVybiBKU09iamVjdCAq
CkpTX05ld09iamVjdChKU0NvbnRleHQgKmN4LCBKU0NsYXNzICpjbGFzcCwgSlNPYmplY3QgKnBy
b3RvLCBKU09iamVjdCAqcGFyZW50KTsKCmV4dGVybiBKU09iamVjdCAqCkpTX0NvbnN0cnVjdE9i
amVjdChKU0NvbnRleHQgKmN4LCBKU0NsYXNzICpjbGFzcCwgSlNPYmplY3QgKnByb3RvLAogICAg
ICAgICAgICAgICAgICAgSlNPYmplY3QgKnBhcmVudCk7CgpleHRlcm4gSlNPYmplY3QgKgpKU19D
b25zdHJ1Y3RPYmplY3RXaXRoQXJndW1lbnRzKEpTQ29udGV4dCAqY3gsIEpTQ2xhc3MgKmNsYXNw
LCBKU09iamVjdCAqcHJvdG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmpl
Y3QgKnBhcmVudCwgdWludE4gYXJnYywganN2YWwgKmFyZ3YpOwoKZXh0ZXJuIEpTT2JqZWN0ICoK
SlNfRGVmaW5lT2JqZWN0KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGNvbnN0IGNoYXIg
Km5hbWUsIEpTQ2xhc3MgKmNsYXNwLAogICAgICAgICAgICAgICAgSlNPYmplY3QgKnByb3RvLCB1
aW50TiBhdHRycyk7CgpleHRlcm4gSlNCb29sCkpTX0RlZmluZUNvbnN0RG91YmxlcyhKU0NvbnRl
eHQgKmN4LCBKU09iamVjdCAqb2JqLCBKU0NvbnN0RG91YmxlU3BlYyAqY2RzKTsKCmV4dGVybiBK
U0Jvb2wKSlNfRGVmaW5lUHJvcGVydGllcyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBK
U1Byb3BlcnR5U3BlYyAqcHMpOwoKZXh0ZXJuIEpTQm9vbApKU19EZWZpbmVQcm9wZXJ0eShKU0Nv
bnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBjb25zdCBjaGFyICpuYW1lLCBqc3ZhbCB2YWx1ZSwK
ICAgICAgICAgICAgICAgICAgSlNQcm9wZXJ0eU9wIGdldHRlciwgSlNQcm9wZXJ0eU9wIHNldHRl
ciwgdWludE4gYXR0cnMpOwoKCgoKCgoKZXh0ZXJuIEpTQm9vbApKU19HZXRQcm9wZXJ0eUF0dHJp
YnV0ZXMoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqbmFtZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnROICphdHRyc3AsIEpTQm9vbCAqZm91bmRwKTsKCgoK
CgoKCmV4dGVybiBKU0Jvb2wKSlNfU2V0UHJvcGVydHlBdHRyaWJ1dGVzKEpTQ29udGV4dCAqY3gs
IEpTT2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50TiBhdHRycywgSlNCb29sICpmb3VuZHApOwoKZXh0ZXJuIEpTQm9vbApKU19EZWZpbmVQ
cm9wZXJ0eVdpdGhUaW55SWQoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgY29uc3QgY2hh
ciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDggdGlueWlkLCBqc3ZhbCB2
YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTUHJvcGVydHlPcCBnZXR0ZXIsIEpT
UHJvcGVydHlPcCBzZXR0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50TiBhdHRy
cyk7CgpleHRlcm4gSlNCb29sCkpTX0FsaWFzUHJvcGVydHkoSlNDb250ZXh0ICpjeCwgSlNPYmpl
Y3QgKm9iaiwgY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICph
bGlhcyk7CgpleHRlcm4gSlNCb29sCkpTX0xvb2t1cFByb3BlcnR5KEpTQ29udGV4dCAqY3gsIEpT
T2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKm5hbWUsIGpzdmFsICp2cCk7CgpleHRlcm4gSlNCb29s
CkpTX0dldFByb3BlcnR5KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGNvbnN0IGNoYXIg
Km5hbWUsIGpzdmFsICp2cCk7CgpleHRlcm4gSlNCb29sCkpTX1NldFByb3BlcnR5KEpTQ29udGV4
dCAqY3gsIEpTT2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKm5hbWUsIGpzdmFsICp2cCk7CgpleHRl
cm4gSlNCb29sCkpTX0RlbGV0ZVByb3BlcnR5KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmos
IGNvbnN0IGNoYXIgKm5hbWUpOwoKZXh0ZXJuIEpTQm9vbApKU19EZWxldGVQcm9wZXJ0eTIoSlND
b250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAg
ICAgICAgIGpzdmFsICpydmFsKTsKCmV4dGVybiBKU0Jvb2wKSlNfRGVmaW5lVUNQcm9wZXJ0eShK
U0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IGpz
Y2hhciAqbmFtZSwgc2l6ZV90IG5hbWVsZW4sIGpzdmFsIHZhbHVlLAogICAgICAgICAgICAgICAg
ICAgIEpTUHJvcGVydHlPcCBnZXR0ZXIsIEpTUHJvcGVydHlPcCBzZXR0ZXIsCiAgICAgICAgICAg
ICAgICAgICAgdWludE4gYXR0cnMpOwoKCgoKCgoKZXh0ZXJuIEpTQm9vbApKU19HZXRVQ1Byb3Bl
cnR5QXR0cmlidXRlcyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBqc2NoYXIgKm5hbWUsIHNpemVfdCBuYW1lbGVuLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50TiAqYXR0cnNwLCBKU0Jvb2wgKmZvdW5kcCk7CgoKCgoK
CgpleHRlcm4gSlNCb29sCkpTX1NldFVDUHJvcGVydHlBdHRyaWJ1dGVzKEpTQ29udGV4dCAqY3gs
IEpTT2JqZWN0ICpvYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGpzY2hhciAq
bmFtZSwgc2l6ZV90IG5hbWVsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnROIGF0
dHJzLCBKU0Jvb2wgKmZvdW5kcCk7CgoKZXh0ZXJuIEpTQm9vbApKU19EZWZpbmVVQ1Byb3BlcnR5
V2l0aFRpbnlJZChKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBqc2NoYXIgKm5hbWUsIHNpemVfdCBuYW1lbGVuLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQ4IHRpbnlpZCwganN2YWwgdmFsdWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEpTUHJvcGVydHlPcCBnZXR0ZXIsIEpTUHJvcGVydHlPcCBz
ZXR0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnROIGF0dHJzKTsKCmV4dGVy
biBKU0Jvb2wKSlNfTG9va3VwVUNQcm9wZXJ0eShKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2Jq
LAogICAgICAgICAgICAgICAgICAgIGNvbnN0IGpzY2hhciAqbmFtZSwgc2l6ZV90IG5hbWVsZW4s
CiAgICAgICAgICAgICAgICAgICAganN2YWwgKnZwKTsKCmV4dGVybiBKU0Jvb2wKSlNfR2V0VUNQ
cm9wZXJ0eShKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAgIGNv
bnN0IGpzY2hhciAqbmFtZSwgc2l6ZV90IG5hbWVsZW4sCiAgICAgICAgICAgICAgICAganN2YWwg
KnZwKTsKCmV4dGVybiBKU0Jvb2wKSlNfU2V0VUNQcm9wZXJ0eShKU0NvbnRleHQgKmN4LCBKU09i
amVjdCAqb2JqLAogICAgICAgICAgICAgICAgIGNvbnN0IGpzY2hhciAqbmFtZSwgc2l6ZV90IG5h
bWVsZW4sCiAgICAgICAgICAgICAgICAganN2YWwgKnZwKTsKCmV4dGVybiBKU0Jvb2wKSlNfRGVs
ZXRlVUNQcm9wZXJ0eTIoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwKICAgICAgICAgICAg
ICAgICAgICAgY29uc3QganNjaGFyICpuYW1lLCBzaXplX3QgbmFtZWxlbiwKICAgICAgICAgICAg
ICAgICAgICAganN2YWwgKnJ2YWwpOwoKZXh0ZXJuIEpTT2JqZWN0ICoKSlNfTmV3QXJyYXlPYmpl
Y3QoSlNDb250ZXh0ICpjeCwganNpbnQgbGVuZ3RoLCBqc3ZhbCAqdmVjdG9yKTsKCmV4dGVybiBK
U0Jvb2wKSlNfSXNBcnJheU9iamVjdChKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqKTsKCmV4
dGVybiBKU0Jvb2wKSlNfR2V0QXJyYXlMZW5ndGgoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9i
aiwganN1aW50ICpsZW5ndGhwKTsKCmV4dGVybiBKU0Jvb2wKSlNfU2V0QXJyYXlMZW5ndGgoSlND
b250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwganN1aW50IGxlbmd0aCk7CgpleHRlcm4gSlNCb29s
CkpTX0hhc0FycmF5TGVuZ3RoKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzdWludCAq
bGVuZ3RocCk7CgpleHRlcm4gSlNCb29sCkpTX0RlZmluZUVsZW1lbnQoSlNDb250ZXh0ICpjeCwg
SlNPYmplY3QgKm9iaiwganNpbnQgaW5kZXgsIGpzdmFsIHZhbHVlLAogICAgICAgICAgICAgICAg
IEpTUHJvcGVydHlPcCBnZXR0ZXIsIEpTUHJvcGVydHlPcCBzZXR0ZXIsIHVpbnROIGF0dHJzKTsK
CmV4dGVybiBKU0Jvb2wKSlNfQWxpYXNFbGVtZW50KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpv
YmosIGNvbnN0IGNoYXIgKm5hbWUsIGpzaW50IGFsaWFzKTsKCmV4dGVybiBKU0Jvb2wKSlNfTG9v
a3VwRWxlbWVudChKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBqc2ludCBpbmRleCwganN2
YWwgKnZwKTsKCmV4dGVybiBKU0Jvb2wKSlNfR2V0RWxlbWVudChKU0NvbnRleHQgKmN4LCBKU09i
amVjdCAqb2JqLCBqc2ludCBpbmRleCwganN2YWwgKnZwKTsKCmV4dGVybiBKU0Jvb2wKSlNfU2V0
RWxlbWVudChKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBqc2ludCBpbmRleCwganN2YWwg
KnZwKTsKCmV4dGVybiBKU0Jvb2wKSlNfRGVsZXRlRWxlbWVudChKU0NvbnRleHQgKmN4LCBKU09i
amVjdCAqb2JqLCBqc2ludCBpbmRleCk7CgpleHRlcm4gSlNCb29sCkpTX0RlbGV0ZUVsZW1lbnQy
KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzaW50IGluZGV4LCBqc3ZhbCAqcnZhbCk7
CgpleHRlcm4gdm9pZApKU19DbGVhclNjb3BlKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmop
OwoKZXh0ZXJuIEpTSWRBcnJheSAqCkpTX0VudW1lcmF0ZShKU0NvbnRleHQgKmN4LCBKU09iamVj
dCAqb2JqKTsKCmV4dGVybiBKU0Jvb2wKSlNfQ2hlY2tBY2Nlc3MoSlNDb250ZXh0ICpjeCwgSlNP
YmplY3QgKm9iaiwganNpZCBpZCwgSlNBY2Nlc3NNb2RlIG1vZGUsCiAgICAgICAgICAgICAgIGpz
dmFsICp2cCwgdWludE4gKmF0dHJzcCk7CgpleHRlcm4gSlNDaGVja0FjY2Vzc09wCkpTX1NldENo
ZWNrT2JqZWN0QWNjZXNzQ2FsbGJhY2soSlNSdW50aW1lICpydCwgSlNDaGVja0FjY2Vzc09wIGFj
Yik7CgpleHRlcm4gSlNCb29sCkpTX0dldFJlc2VydmVkU2xvdChKU0NvbnRleHQgKmN4LCBKU09i
amVjdCAqb2JqLCB1aW50MzIgaW5kZXgsIGpzdmFsICp2cCk7CgpleHRlcm4gSlNCb29sCkpTX1Nl
dFJlc2VydmVkU2xvdChKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCB1aW50MzIgaW5kZXgs
IGpzdmFsIHYpOwoKCgoKCgpzdHJ1Y3QgSlNQcmluY2lwYWxzIHsKICAgIGNoYXIgKmNvZGViYXNl
OwogICAgdm9pZCAqICgqIGdldFByaW5jaXBhbEFycmF5KShKU0NvbnRleHQgKmN4LCBKU1ByaW5j
aXBhbHMgKik7CiAgICBKU0Jvb2wgKCogZ2xvYmFsUHJpdmlsZWdlc0VuYWJsZWQpKEpTQ29udGV4
dCAqY3gsIEpTUHJpbmNpcGFscyAqKTsKCgogICAgdWludE4gcmVmY291bnQ7CiAgICB2b2lkICgq
IGRlc3Ryb3kpKEpTQ29udGV4dCAqY3gsIHN0cnVjdCBKU1ByaW5jaXBhbHMgKik7Cn07CiMgMTA5
MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzYXBpLmgiCmV4dGVybiBKU1ByaW5jaXBhbHNU
cmFuc2NvZGVyCkpTX1NldFByaW5jaXBhbHNUcmFuc2NvZGVyKEpTUnVudGltZSAqcnQsIEpTUHJp
bmNpcGFsc1RyYW5zY29kZXIgcHgpOwoKCgoKCgpleHRlcm4gSlNGdW5jdGlvbiAqCkpTX05ld0Z1
bmN0aW9uKEpTQ29udGV4dCAqY3gsIEpTTmF0aXZlIGNhbGwsIHVpbnROIG5hcmdzLCB1aW50TiBm
bGFncywKICAgICAgICAgICAgICAgSlNPYmplY3QgKnBhcmVudCwgY29uc3QgY2hhciAqbmFtZSk7
CgpleHRlcm4gSlNPYmplY3QgKgpKU19HZXRGdW5jdGlvbk9iamVjdChKU0Z1bmN0aW9uICpmdW4p
OwoKCgoKCmV4dGVybiBjb25zdCBjaGFyICoKSlNfR2V0RnVuY3Rpb25OYW1lKEpTRnVuY3Rpb24g
KmZ1bik7CiMgMTEyNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzYXBpLmgiCmV4dGVybiBK
U1N0cmluZyAqCkpTX0dldEZ1bmN0aW9uSWQoSlNGdW5jdGlvbiAqZnVuKTsKCgoKCmV4dGVybiB1
aW50TgpKU19HZXRGdW5jdGlvbkZsYWdzKEpTRnVuY3Rpb24gKmZ1bik7CgoKCgoKCgpleHRlcm4g
SlNCb29sCkpTX09iamVjdElzRnVuY3Rpb24oSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaik7
CgpleHRlcm4gSlNCb29sCkpTX0RlZmluZUZ1bmN0aW9ucyhKU0NvbnRleHQgKmN4LCBKU09iamVj
dCAqb2JqLCBKU0Z1bmN0aW9uU3BlYyAqZnMpOwoKZXh0ZXJuIEpTRnVuY3Rpb24gKgpKU19EZWZp
bmVGdW5jdGlvbihKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBjb25zdCBjaGFyICpuYW1l
LCBKU05hdGl2ZSBjYWxsLAogICAgICAgICAgICAgICAgICB1aW50TiBuYXJncywgdWludE4gYXR0
cnMpOwoKZXh0ZXJuIEpTT2JqZWN0ICoKSlNfQ2xvbmVGdW5jdGlvbk9iamVjdChKU0NvbnRleHQg
KmN4LCBKU09iamVjdCAqZnVub2JqLCBKU09iamVjdCAqcGFyZW50KTsKIyAxMTU5ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvanMvanNhcGkuaCIKZXh0ZXJuIEpTQm9vbApKU19CdWZmZXJJc0NvbXBp
bGFibGVVbml0KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciAqYnl0ZXMsIHNpemVfdCBsZW5ndGgpOwojIDExNzAgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9qcy9qc2FwaS5oIgpleHRlcm4gSlNTY3JpcHQgKgpKU19Db21waWxl
U2NyaXB0KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosCiAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciAqYnl0ZXMsIHNpemVfdCBsZW5ndGgsCiAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqZmlsZW5hbWUsIHVpbnROIGxpbmVubyk7CgpleHRlcm4gSlNTY3JpcHQgKgpKU19Db21waWxl
U2NyaXB0Rm9yUHJpbmNpcGFscyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBKU1ByaW5jaXBhbHMgKnByaW5jaXBhbHMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJ5dGVzLCBzaXplX3QgbGVuZ3RoLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSwgdWludE4g
bGluZW5vKTsKCmV4dGVybiBKU1NjcmlwdCAqCkpTX0NvbXBpbGVVQ1NjcmlwdChKU0NvbnRleHQg
KmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAgICAgY29uc3QganNjaGFyICpjaGFy
cywgc2l6ZV90IGxlbmd0aCwKICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1l
LCB1aW50TiBsaW5lbm8pOwoKZXh0ZXJuIEpTU2NyaXB0ICoKSlNfQ29tcGlsZVVDU2NyaXB0Rm9y
UHJpbmNpcGFscyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEpTUHJpbmNpcGFscyAqcHJpbmNpcGFscywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBqc2NoYXIgKmNoYXJzLCBzaXplX3QgbGVuZ3RoLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCB1aW50TiBs
aW5lbm8pOwoKZXh0ZXJuIEpTU2NyaXB0ICoKSlNfQ29tcGlsZUZpbGUoSlNDb250ZXh0ICpjeCwg
SlNPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqZmlsZW5hbWUpOwoKZXh0ZXJuIEpTU2NyaXB0ICoK
SlNfQ29tcGlsZUZpbGVIYW5kbGUoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgY29uc3Qg
Y2hhciAqZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgIEZJTEUgKmZoKTsKCmV4dGVybiBK
U1NjcmlwdCAqCkpTX0NvbXBpbGVGaWxlSGFuZGxlRm9yUHJpbmNpcGFscyhKU0NvbnRleHQgKmN4
LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAqZmlsZW5hbWUsIEZJTEUgKmZoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSlNQcmluY2lwYWxzICpwcmluY2lwYWxzKTsKIyAxMjIwICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvanMvanNhcGkuaCIKZXh0ZXJuIEpTT2JqZWN0ICoKSlNfTmV3U2NyaXB0T2JqZWN0KEpTQ29u
dGV4dCAqY3gsIEpTU2NyaXB0ICpzY3JpcHQpOwoKCgoKCmV4dGVybiBKU09iamVjdCAqCkpTX0dl
dFNjcmlwdE9iamVjdChKU1NjcmlwdCAqc2NyaXB0KTsKCmV4dGVybiB2b2lkCkpTX0Rlc3Ryb3lT
Y3JpcHQoSlNDb250ZXh0ICpjeCwgSlNTY3JpcHQgKnNjcmlwdCk7CgpleHRlcm4gSlNGdW5jdGlv
biAqCkpTX0NvbXBpbGVGdW5jdGlvbihKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBjb25z
dCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgdWludE4gbmFyZ3MsIGNvbnN0IGNoYXIg
KiphcmduYW1lcywKICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJ5dGVzLCBzaXplX3Qg
bGVuZ3RoLAogICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsIHVpbnROIGxp
bmVubyk7CgpleHRlcm4gSlNGdW5jdGlvbiAqCkpTX0NvbXBpbGVGdW5jdGlvbkZvclByaW5jaXBh
bHMoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBKU1ByaW5jaXBhbHMgKnByaW5jaXBhbHMsIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludE4gbmFyZ3MsIGNvbnN0IGNoYXIgKiphcmdu
YW1lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpieXRlcywg
c2l6ZV90IGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
ICpmaWxlbmFtZSwgdWludE4gbGluZW5vKTsKCmV4dGVybiBKU0Z1bmN0aW9uICoKSlNfQ29tcGls
ZVVDRnVuY3Rpb24oSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqbmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgdWludE4gbmFyZ3MsIGNvbnN0IGNoYXIgKiphcmduYW1l
cywKICAgICAgICAgICAgICAgICAgICAgY29uc3QganNjaGFyICpjaGFycywgc2l6ZV90IGxlbmd0
aCwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsIHVpbnROIGxpbmVu
byk7CgpleHRlcm4gSlNGdW5jdGlvbiAqCkpTX0NvbXBpbGVVQ0Z1bmN0aW9uRm9yUHJpbmNpcGFs
cyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSlNQcmluY2lwYWxzICpwcmluY2lwYWxzLCBjb25zdCBjaGFyICpuYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludE4gbmFyZ3MsIGNvbnN0IGNoYXIgKiph
cmduYW1lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGpzY2hhciAq
Y2hhcnMsIHNpemVfdCBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICpmaWxlbmFtZSwgdWludE4gbGluZW5vKTsKCmV4dGVybiBKU1N0cmluZyAqCkpT
X0RlY29tcGlsZVNjcmlwdChKU0NvbnRleHQgKmN4LCBKU1NjcmlwdCAqc2NyaXB0LCBjb25zdCBj
aGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgdWludE4gaW5kZW50KTsKCgoKCgoKCmV4dGVy
biBKU1N0cmluZyAqCkpTX0RlY29tcGlsZUZ1bmN0aW9uKEpTQ29udGV4dCAqY3gsIEpTRnVuY3Rp
b24gKmZ1biwgdWludE4gaW5kZW50KTsKCmV4dGVybiBKU1N0cmluZyAqCkpTX0RlY29tcGlsZUZ1
bmN0aW9uQm9keShKU0NvbnRleHQgKmN4LCBKU0Z1bmN0aW9uICpmdW4sIHVpbnROIGluZGVudCk7
CiMgMTMxMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzYXBpLmgiCmV4dGVybiBKU0Jvb2wK
SlNfRXhlY3V0ZVNjcmlwdChKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBKU1NjcmlwdCAq
c2NyaXB0LCBqc3ZhbCAqcnZhbCk7CgoKCgoKdHlwZWRlZiBlbnVtIEpTRXhlY1BhcnQgeyBKU0VY
RUNfUFJPTE9HLCBKU0VYRUNfTUFJTiB9IEpTRXhlY1BhcnQ7CgpleHRlcm4gSlNCb29sCkpTX0V4
ZWN1dGVTY3JpcHRQYXJ0KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIEpTU2NyaXB0ICpz
Y3JpcHQsCiAgICAgICAgICAgICAgICAgICAgIEpTRXhlY1BhcnQgcGFydCwganN2YWwgKnJ2YWwp
OwoKZXh0ZXJuIEpTQm9vbApKU19FdmFsdWF0ZVNjcmlwdChKU0NvbnRleHQgKmN4LCBKU09iamVj
dCAqb2JqLAogICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpieXRlcywgdWludE4gbGVuZ3Ro
LAogICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSwgdWludE4gbGluZW5vLAog
ICAgICAgICAgICAgICAgICBqc3ZhbCAqcnZhbCk7CgpleHRlcm4gSlNCb29sCkpTX0V2YWx1YXRl
U2NyaXB0Rm9yUHJpbmNpcGFscyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSlNQcmluY2lwYWxzICpwcmluY2lwYWxzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYnl0ZXMsIHVpbnROIGxlbmd0aCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCB1aW50
TiBsaW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc3ZhbCAqcnZhbCk7Cgpl
eHRlcm4gSlNCb29sCkpTX0V2YWx1YXRlVUNTY3JpcHQoSlNDb250ZXh0ICpjeCwgSlNPYmplY3Qg
Km9iaiwKICAgICAgICAgICAgICAgICAgICBjb25zdCBqc2NoYXIgKmNoYXJzLCB1aW50TiBsZW5n
dGgsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsIHVpbnROIGxpbmVu
bywKICAgICAgICAgICAgICAgICAgICBqc3ZhbCAqcnZhbCk7CgpleHRlcm4gSlNCb29sCkpTX0V2
YWx1YXRlVUNTY3JpcHRGb3JQcmluY2lwYWxzKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmos
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTUHJpbmNpcGFscyAqcHJpbmNpcGFs
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QganNjaGFyICpjaGFycywg
dWludE4gbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
ICpmaWxlbmFtZSwgdWludE4gbGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqc3ZhbCAqcnZhbCk7CgpleHRlcm4gSlNCb29sCkpTX0NhbGxGdW5jdGlvbihKU0NvbnRleHQg
KmN4LCBKU09iamVjdCAqb2JqLCBKU0Z1bmN0aW9uICpmdW4sIHVpbnROIGFyZ2MsCiAgICAgICAg
ICAgICAgICBqc3ZhbCAqYXJndiwganN2YWwgKnJ2YWwpOwoKZXh0ZXJuIEpTQm9vbApKU19DYWxs
RnVuY3Rpb25OYW1lKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKm5h
bWUsIHVpbnROIGFyZ2MsCiAgICAgICAgICAgICAgICAgICAganN2YWwgKmFyZ3YsIGpzdmFsICpy
dmFsKTsKCmV4dGVybiBKU0Jvb2wKSlNfQ2FsbEZ1bmN0aW9uVmFsdWUoSlNDb250ZXh0ICpjeCwg
SlNPYmplY3QgKm9iaiwganN2YWwgZnZhbCwgdWludE4gYXJnYywKICAgICAgICAgICAgICAgICAg
ICAganN2YWwgKmFyZ3YsIGpzdmFsICpydmFsKTsKCmV4dGVybiBKU0JyYW5jaENhbGxiYWNrCkpT
X1NldEJyYW5jaENhbGxiYWNrKEpTQ29udGV4dCAqY3gsIEpTQnJhbmNoQ2FsbGJhY2sgY2IpOwoK
ZXh0ZXJuIEpTQm9vbApKU19Jc1J1bm5pbmcoSlNDb250ZXh0ICpjeCk7CgpleHRlcm4gSlNCb29s
CkpTX0lzQ29uc3RydWN0aW5nKEpTQ29udGV4dCAqY3gpOwoKCgoKCgpleHRlcm4gSlNCb29sCkpT
X0lzQXNzaWduaW5nKEpTQ29udGV4dCAqY3gpOwojIDEzODYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9qcy9qc2FwaS5oIgpleHRlcm4gdm9pZApKU19TZXRDYWxsUmV0dXJuVmFsdWUyKEpTQ29udGV4
dCAqY3gsIGpzdmFsIHYpOwojIDE0MDAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2FwaS5o
IgpleHRlcm4gSlNTdHJpbmcgKgpKU19OZXdTdHJpbmcoSlNDb250ZXh0ICpjeCwgY2hhciAqYnl0
ZXMsIHNpemVfdCBsZW5ndGgpOwoKZXh0ZXJuIEpTU3RyaW5nICoKSlNfTmV3U3RyaW5nQ29weU4o
SlNDb250ZXh0ICpjeCwgY29uc3QgY2hhciAqcywgc2l6ZV90IG4pOwoKZXh0ZXJuIEpTU3RyaW5n
ICoKSlNfTmV3U3RyaW5nQ29weVooSlNDb250ZXh0ICpjeCwgY29uc3QgY2hhciAqcyk7CgpleHRl
cm4gSlNTdHJpbmcgKgpKU19JbnRlcm5TdHJpbmcoSlNDb250ZXh0ICpjeCwgY29uc3QgY2hhciAq
cyk7CgpleHRlcm4gSlNTdHJpbmcgKgpKU19OZXdVQ1N0cmluZyhKU0NvbnRleHQgKmN4LCBqc2No
YXIgKmNoYXJzLCBzaXplX3QgbGVuZ3RoKTsKCmV4dGVybiBKU1N0cmluZyAqCkpTX05ld1VDU3Ry
aW5nQ29weU4oSlNDb250ZXh0ICpjeCwgY29uc3QganNjaGFyICpzLCBzaXplX3Qgbik7CgpleHRl
cm4gSlNTdHJpbmcgKgpKU19OZXdVQ1N0cmluZ0NvcHlaKEpTQ29udGV4dCAqY3gsIGNvbnN0IGpz
Y2hhciAqcyk7CgpleHRlcm4gSlNTdHJpbmcgKgpKU19JbnRlcm5VQ1N0cmluZ04oSlNDb250ZXh0
ICpjeCwgY29uc3QganNjaGFyICpzLCBzaXplX3QgbGVuZ3RoKTsKCmV4dGVybiBKU1N0cmluZyAq
CkpTX0ludGVyblVDU3RyaW5nKEpTQ29udGV4dCAqY3gsIGNvbnN0IGpzY2hhciAqcyk7CgpleHRl
cm4gY2hhciAqCkpTX0dldFN0cmluZ0J5dGVzKEpTU3RyaW5nICpzdHIpOwoKZXh0ZXJuIGpzY2hh
ciAqCkpTX0dldFN0cmluZ0NoYXJzKEpTU3RyaW5nICpzdHIpOwoKZXh0ZXJuIHNpemVfdApKU19H
ZXRTdHJpbmdMZW5ndGgoSlNTdHJpbmcgKnN0cik7CgpleHRlcm4gaW50TgpKU19Db21wYXJlU3Ry
aW5ncyhKU1N0cmluZyAqc3RyMSwgSlNTdHJpbmcgKnN0cjIpOwojIDE0NTggIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9qcy9qc2FwaS5oIgpleHRlcm4gSlNTdHJpbmcgKgpKU19OZXdHcm93YWJsZVN0
cmluZyhKU0NvbnRleHQgKmN4LCBqc2NoYXIgKmNoYXJzLCBzaXplX3QgbGVuZ3RoKTsKCgoKCgoK
ZXh0ZXJuIEpTU3RyaW5nICoKSlNfTmV3RGVwZW5kZW50U3RyaW5nKEpTQ29udGV4dCAqY3gsIEpT
U3RyaW5nICpzdHIsIHNpemVfdCBzdGFydCwKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBs
ZW5ndGgpOwojIDE0NzcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2FwaS5oIgpleHRlcm4g
SlNTdHJpbmcgKgpKU19Db25jYXRTdHJpbmdzKEpTQ29udGV4dCAqY3gsIEpTU3RyaW5nICpsZWZ0
LCBKU1N0cmluZyAqcmlnaHQpOwoKCgoKCmV4dGVybiBjb25zdCBqc2NoYXIgKgpKU19VbmRlcGVu
ZFN0cmluZyhKU0NvbnRleHQgKmN4LCBKU1N0cmluZyAqc3RyKTsKCgoKCgpleHRlcm4gSlNCb29s
CkpTX01ha2VTdHJpbmdJbW11dGFibGUoSlNDb250ZXh0ICpjeCwgSlNTdHJpbmcgKnN0cik7CgoK
CgoKCnN0cnVjdCBKU0xvY2FsZUNhbGxiYWNrcyB7CiAgICBKU0xvY2FsZVRvVXBwZXJDYXNlIGxv
Y2FsZVRvVXBwZXJDYXNlOwogICAgSlNMb2NhbGVUb0xvd2VyQ2FzZSBsb2NhbGVUb0xvd2VyQ2Fz
ZTsKICAgIEpTTG9jYWxlQ29tcGFyZSBsb2NhbGVDb21wYXJlOwp9OwoKCgoKCmV4dGVybiB2b2lk
CkpTX1NldExvY2FsZUNhbGxiYWNrcyhKU0NvbnRleHQgKmN4LCBKU0xvY2FsZUNhbGxiYWNrcyAq
Y2FsbGJhY2tzKTsKCgoKCgpleHRlcm4gSlNMb2NhbGVDYWxsYmFja3MgKgpKU19HZXRMb2NhbGVD
YWxsYmFja3MoSlNDb250ZXh0ICpjeCk7CiMgMTUzMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pz
L2pzYXBpLmgiCmV4dGVybiB2b2lkCkpTX1JlcG9ydEVycm9yKEpTQ29udGV4dCAqY3gsIGNvbnN0
IGNoYXIgKmZvcm1hdCwgLi4uKTsKCgoKCmV4dGVybiB2b2lkCkpTX1JlcG9ydEVycm9yTnVtYmVy
KEpTQ29udGV4dCAqY3gsIEpTRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrLAogICAgICAgICAg
ICAgICAgICAgICB2b2lkICp1c2VyUmVmLCBjb25zdCB1aW50TiBlcnJvck51bWJlciwgLi4uKTsK
CgoKCmV4dGVybiB2b2lkCkpTX1JlcG9ydEVycm9yTnVtYmVyVUMoSlNDb250ZXh0ICpjeCwgSlNF
cnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVz
ZXJSZWYsIGNvbnN0IHVpbnROIGVycm9yTnVtYmVyLCAuLi4pOwoKCgoKCgoKZXh0ZXJuIEpTQm9v
bApKU19SZXBvcnRXYXJuaW5nKEpTQ29udGV4dCAqY3gsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4u
KTsKCmV4dGVybiBKU0Jvb2wKSlNfUmVwb3J0RXJyb3JGbGFnc0FuZE51bWJlcihKU0NvbnRleHQg
KmN4LCB1aW50TiBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU0Vycm9yQ2Fs
bGJhY2sgZXJyb3JDYWxsYmFjaywgdm9pZCAqdXNlclJlZiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1aW50TiBlcnJvck51bWJlciwgLi4uKTsKCmV4dGVybiBKU0Jvb2wKSlNf
UmVwb3J0RXJyb3JGbGFnc0FuZE51bWJlclVDKEpTQ29udGV4dCAqY3gsIHVpbnROIGZsYWdzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJh
Y2ssIHZvaWQgKnVzZXJSZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50TiBlcnJvck51bWJlciwgLi4uKTsKCgoKCmV4dGVybiB2b2lkCkpTX1JlcG9ydE91dE9mTWVt
b3J5KEpTQ29udGV4dCAqY3gpOwoKc3RydWN0IEpTRXJyb3JSZXBvcnQgewogICAgY29uc3QgY2hh
ciAqZmlsZW5hbWU7CiAgICB1aW50TiBsaW5lbm87CiAgICBjb25zdCBjaGFyICpsaW5lYnVmOwog
ICAgY29uc3QgY2hhciAqdG9rZW5wdHI7CiAgICBjb25zdCBqc2NoYXIgKnVjbGluZWJ1ZjsKICAg
IGNvbnN0IGpzY2hhciAqdWN0b2tlbnB0cjsKICAgIHVpbnROIGZsYWdzOwogICAgdWludE4gZXJy
b3JOdW1iZXI7CiAgICBjb25zdCBqc2NoYXIgKnVjbWVzc2FnZTsKICAgIGNvbnN0IGpzY2hhciAq
Km1lc3NhZ2VBcmdzOwp9OwojIDE2MDUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2FwaS5o
IgpleHRlcm4gSlNFcnJvclJlcG9ydGVyCkpTX1NldEVycm9yUmVwb3J0ZXIoSlNDb250ZXh0ICpj
eCwgSlNFcnJvclJlcG9ydGVyIGVyKTsKIyAxNjE3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMv
anNhcGkuaCIKZXh0ZXJuIEpTT2JqZWN0ICoKSlNfTmV3UmVnRXhwT2JqZWN0KEpTQ29udGV4dCAq
Y3gsIGNoYXIgKmJ5dGVzLCBzaXplX3QgbGVuZ3RoLCB1aW50TiBmbGFncyk7CgpleHRlcm4gSlNP
YmplY3QgKgpKU19OZXdVQ1JlZ0V4cE9iamVjdChKU0NvbnRleHQgKmN4LCBqc2NoYXIgKmNoYXJz
LCBzaXplX3QgbGVuZ3RoLCB1aW50TiBmbGFncyk7CgpleHRlcm4gdm9pZApKU19TZXRSZWdFeHBJ
bnB1dChKU0NvbnRleHQgKmN4LCBKU1N0cmluZyAqaW5wdXQsIEpTQm9vbCBtdWx0aWxpbmUpOwoK
ZXh0ZXJuIHZvaWQKSlNfQ2xlYXJSZWdFeHBTdGF0aWNzKEpTQ29udGV4dCAqY3gpOwoKZXh0ZXJu
IHZvaWQKSlNfQ2xlYXJSZWdFeHBSb290cyhKU0NvbnRleHQgKmN4KTsKCgoKCgpleHRlcm4gSlNC
b29sCkpTX0lzRXhjZXB0aW9uUGVuZGluZyhKU0NvbnRleHQgKmN4KTsKCmV4dGVybiBKU0Jvb2wK
SlNfR2V0UGVuZGluZ0V4Y2VwdGlvbihKU0NvbnRleHQgKmN4LCBqc3ZhbCAqdnApOwoKZXh0ZXJu
IHZvaWQKSlNfU2V0UGVuZGluZ0V4Y2VwdGlvbihKU0NvbnRleHQgKmN4LCBqc3ZhbCB2KTsKCmV4
dGVybiB2b2lkCkpTX0NsZWFyUGVuZGluZ0V4Y2VwdGlvbihKU0NvbnRleHQgKmN4KTsKIyAxNjU5
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNhcGkuaCIKZXh0ZXJuIEpTRXhjZXB0aW9uU3Rh
dGUgKgpKU19TYXZlRXhjZXB0aW9uU3RhdGUoSlNDb250ZXh0ICpjeCk7CgpleHRlcm4gdm9pZApK
U19SZXN0b3JlRXhjZXB0aW9uU3RhdGUoSlNDb250ZXh0ICpjeCwgSlNFeGNlcHRpb25TdGF0ZSAq
c3RhdGUpOwoKZXh0ZXJuIHZvaWQKSlNfRHJvcEV4Y2VwdGlvblN0YXRlKEpTQ29udGV4dCAqY3gs
IEpTRXhjZXB0aW9uU3RhdGUgKnN0YXRlKTsKIyAxNjc1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
anMvanNhcGkuaCIKZXh0ZXJuIEpTRXJyb3JSZXBvcnQgKgpKU19FcnJvckZyb21FeGNlcHRpb24o
SlNDb250ZXh0ICpjeCwganN2YWwgdik7CiMgMTY5MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pz
L2pzYXBpLmgiCmV4dGVybiBpbnROCkpTX0dldENvbnRleHRUaHJlYWQoSlNDb250ZXh0ICpjeCk7
CgpleHRlcm4gaW50TgpKU19TZXRDb250ZXh0VGhyZWFkKEpTQ29udGV4dCAqY3gpOwoKZXh0ZXJu
IGludE4KSlNfQ2xlYXJDb250ZXh0VGhyZWFkKEpTQ29udGV4dCAqY3gpOwoKCgoKCn0KIyA0NiAi
bnNET01DbGFzc0luZm8uaCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jYXBzL25zSVNj
cmlwdFNlY3VyaXR5TWFuYWdlci5oIiAxCiMgMTQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jYXBz
L25zSVNjcmlwdFNlY3VyaXR5TWFuYWdlci5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9j
YXBzL25zSVByaW5jaXBhbC5oIiAxCiMgMTAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jYXBzL25z
SVByaW5jaXBhbC5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTZXJpYWxp
emFibGUuaCIgMQojIDE3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJU2VyaWFsaXph
YmxlLmgiCmNsYXNzIG5zSU9iamVjdElucHV0U3RyZWFtOwoKY2xhc3MgbnNJT2JqZWN0T3V0cHV0
U3RyZWFtOwojIDI5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJU2VyaWFsaXphYmxl
LmgiCmNsYXNzIG5zSVNlcmlhbGl6YWJsZSA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6
CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQg
PSB7MHg5MWNjYTk4MSwgMHhjMjZkLCAweDQ0YTgsIHsgMHhiZSwgMHhiZSwgMHhkOSwgMHhlZCwg
MHg0OCwgMHg5MSwgMHg1MCwgMHgzYSB9fTsgcmV0dXJuIGlpZDt9CiMgNDEgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS94cGNvbS9uc0lTZXJpYWxpemFibGUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFJl
YWQobnNJT2JqZWN0SW5wdXRTdHJlYW0gKmFJbnB1dFN0cmVhbSkgPSAwOwojIDUzICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUveHBjb20vbnNJU2VyaWFsaXphYmxlLmgiCiAgdmlydHVhbCBuc3Jlc3Vs
dCBXcml0ZShuc0lPYmplY3RPdXRwdXRTdHJlYW0gKmFPdXRwdXRTdHJlYW0pID0gMDsKCn07CiMg
MTEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jYXBzL25zSVByaW5jaXBhbC5oIiAyCgoKCgoKCnN0
cnVjdCBKU1ByaW5jaXBhbHM7CiMgMjYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jYXBzL25zSVBy
aW5jaXBhbC5oIgpjbGFzcyBuc0lQcmluY2lwYWwgOiBwdWJsaWMgbnNJU2VyaWFsaXphYmxlIHsK
IHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5z
SUlEIGlpZCA9IHsweGZmOTMxM2QwLCAweDI1ZTEsIDB4MTFkMiwgeyAweDgxLCAweDYwLCAweDAw
LCAweDYwLCAweDA4LCAweDExLCAweDlkLCAweDdhIH19OyByZXR1cm4gaWlkO30KCiAgZW51bSB7
IEVOQUJMRV9ERU5JRUQgPSAxIH07CgogIGVudW0geyBFTkFCTEVfVU5LTk9XTiA9IDIgfTsKCiAg
ZW51bSB7IEVOQUJMRV9XSVRIX1VTRVJfUEVSTUlTU0lPTiA9IDMgfTsKCiAgZW51bSB7IEVOQUJM
RV9HUkFOVEVEID0gNCB9OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBUb1N0cmluZyhjaGFyICoqX3Jl
dHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBUb1VzZXJWaXNpYmxlU3RyaW5nKGNoYXIg
KipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByZWZlcmVuY2VzKGNoYXIg
KipwcmVmTmFtZSwgY2hhciAqKmlkLCBjaGFyICoqZ3JhbnRlZExpc3QsIGNoYXIgKipkZW5pZWRM
aXN0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEVxdWFscyhuc0lQcmluY2lwYWwgKm90aGVy
LCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSGFzaFZhbHVlKFBS
VWludDMyICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEpTUHJpbmNpcGFs
cyhKU1ByaW5jaXBhbHMgKiAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDYW5F
bmFibGVDYXBhYmlsaXR5KGNvbnN0IGNoYXIgKmNhcGFiaWxpdHksIFBSSW50MTYgKl9yZXR2YWwp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q2FuRW5hYmxlQ2FwYWJpbGl0eShjb25zdCBj
aGFyICpjYXBhYmlsaXR5LCBQUkludDE2IGNhbkVuYWJsZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBJc0NhcGFiaWxpdHlFbmFibGVkKGNvbnN0IGNoYXIgKmNhcGFiaWxpdHksIHZvaWQgKiBh
bm5vdGF0aW9uLCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgRW5h
YmxlQ2FwYWJpbGl0eShjb25zdCBjaGFyICpjYXBhYmlsaXR5LCB2b2lkICogKmFubm90YXRpb24p
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmV2ZXJ0Q2FwYWJpbGl0eShjb25zdCBjaGFyICpj
YXBhYmlsaXR5LCB2b2lkICogKmFubm90YXRpb24pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
RGlzYWJsZUNhcGFiaWxpdHkoY29uc3QgY2hhciAqY2FwYWJpbGl0eSwgdm9pZCAqICphbm5vdGF0
aW9uKSA9IDA7Cgp9OwojIDE1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY2Fwcy9uc0lTY3JpcHRT
ZWN1cml0eU1hbmFnZXIuaCIgMgoKCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbm5l
Y3QvbnNJWFBDU2VjdXJpdHlNYW5hZ2VyLmgiIDEKIyAxOCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3hwY29ubmVjdC9uc0lYUENTZWN1cml0eU1hbmFnZXIuaCIKY2xhc3MgbnNJQ2xhc3NJbmZvOwoK
Y2xhc3MgbnNJWFBDTmF0aXZlQ2FsbENvbnRleHQ7CiMgMzAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS94cGNvbm5lY3QvbnNJWFBDU2VjdXJpdHlNYW5hZ2VyLmgiCmNsYXNzIG5zSVhQQ1NlY3VyaXR5
TWFuYWdlciA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBu
c0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgzMTQzMTQ0MCwgMHhm
MWNlLCAweDExZDIsIHsgMHg5OCwgMHg1YSwgMHgwMCwgMHg2MCwgMHgwOCwgMHg5NiwgMHgyNCwg
MHgyMiB9fTsgcmV0dXJuIGlpZDt9CgoKCgogIGVudW0geyBIT09LX0NSRUFURV9XUkFQUEVSID0g
MVUgfTsKCiAgZW51bSB7IEhPT0tfQ1JFQVRFX0lOU1RBTkNFID0gMlUgfTsKCiAgZW51bSB7IEhP
T0tfR0VUX1NFUlZJQ0UgPSA0VSB9OwoKICBlbnVtIHsgSE9PS19DQUxMX01FVEhPRCA9IDhVIH07
CgogIGVudW0geyBIT09LX0dFVF9QUk9QRVJUWSA9IDE2VSB9OwoKICBlbnVtIHsgSE9PS19TRVRf
UFJPUEVSVFkgPSAzMlUgfTsKCiAgZW51bSB7IEhPT0tfQUxMID0gNjNVIH07CiMgNjAgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS94cGNvbm5lY3QvbnNJWFBDU2VjdXJpdHlNYW5hZ2VyLmgiCiAgdmly
dHVhbCBuc3Jlc3VsdCBDYW5DcmVhdGVXcmFwcGVyKEpTQ29udGV4dCAqIGFKU0NvbnRleHQsIGNv
bnN0IG5zSUlEICYgYUlJRCwgbnNJU3VwcG9ydHMgKmFPYmosIG5zSUNsYXNzSW5mbyAqYUNsYXNz
SW5mbywgdm9pZCAqICphUG9saWN5KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENhbkNyZWF0
ZUluc3RhbmNlKEpTQ29udGV4dCAqIGFKU0NvbnRleHQsIGNvbnN0IG5zQ0lEICYgYUNJRCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDYW5HZXRTZXJ2aWNlKEpTQ29udGV4dCAqIGFKU0NvbnRl
eHQsIGNvbnN0IG5zQ0lEICYgYUNJRCkgPSAwOwoKICBlbnVtIHsgQUNDRVNTX0NBTExfTUVUSE9E
ID0gMFUgfTsKCiAgZW51bSB7IEFDQ0VTU19HRVRfUFJPUEVSVFkgPSAxVSB9OwoKICBlbnVtIHsg
QUNDRVNTX1NFVF9QUk9QRVJUWSA9IDJVIH07CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENhbkFjY2Vz
cyhQUlVpbnQzMiBhQWN0aW9uLCBuc0lYUENOYXRpdmVDYWxsQ29udGV4dCAqYUNhbGxDb250ZXh0
LCBKU0NvbnRleHQgKiBhSlNDb250ZXh0LCBKU09iamVjdCAqIGFKU09iamVjdCwgbnNJU3VwcG9y
dHMgKmFPYmosIG5zSUNsYXNzSW5mbyAqYUNsYXNzSW5mbywganN2YWwgYU5hbWUsIHZvaWQgKiAq
YVBvbGljeSkgPSAwOwoKfTsKIyAxOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NhcHMvbnNJU2Ny
aXB0U2VjdXJpdHlNYW5hZ2VyLmgiIDIKCgoKCgoKY2xhc3MgbnNJVVJJOwojIDM1ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvY2Fwcy9uc0lTY3JpcHRTZWN1cml0eU1hbmFnZXIuaCIKY2xhc3MgbnNJ
U2NyaXB0U2VjdXJpdHlNYW5hZ2VyIDogcHVibGljIG5zSVhQQ1NlY3VyaXR5TWFuYWdlciB7CiBw
dWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJ
RCBpaWQgPSB7MHg1OGRmNTc4MCwgMHg4MDA2LCAweDExZDIsIHsgMHhiZCwgMHg5MSwgMHgwMCwg
MHg4MCwgMHg1ZiwgMHg4YSwgMHhlMywgMHhmNCB9fTsgcmV0dXJuIGlpZDt9CgoKCgoKICB2aXJ0
dWFsIG5zcmVzdWx0IENoZWNrUHJvcGVydHlBY2Nlc3MoSlNDb250ZXh0ICogYUpTQ29udGV4dCwg
SlNPYmplY3QgKiBhSlNPYmplY3QsIGNvbnN0IGNoYXIgKmFDbGFzc05hbWUsIGpzdmFsIGFQcm9w
ZXJ0eSwgUFJVaW50MzIgYUFjdGlvbikgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDaGVj
a0Nvbm5lY3QoSlNDb250ZXh0ICogYUpTQ29udGV4dCwgbnNJVVJJICphVGFyZ2V0VVJJLCBjb25z
dCBjaGFyICphQ2xhc3NOYW1lLCBjb25zdCBjaGFyICphUHJvcGVydHkpID0gMDsKIyA2MiAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2NhcHMvbnNJU2NyaXB0U2VjdXJpdHlNYW5hZ2VyLmgiCiAgdmly
dHVhbCBuc3Jlc3VsdCBDaGVja0xvYWRVUklGcm9tU2NyaXB0KEpTQ29udGV4dCAqIGN4LCBuc0lV
UkkgKnVyaSkgPSAwOwoKCgoKICBlbnVtIHsgU1RBTkRBUkQgPSAwVSB9OwoKICBlbnVtIHsgRElT
QUxMT1dfRlJPTV9NQUlMID0gMVUgfTsKCiAgZW51bSB7IEFMTE9XX0NIUk9NRSA9IDJVIH07CiMg
ODQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jYXBzL25zSVNjcmlwdFNlY3VyaXR5TWFuYWdlci5o
IgogIHZpcnR1YWwgbnNyZXN1bHQgQ2hlY2tMb2FkVVJJKG5zSVVSSSAqZnJvbSwgbnNJVVJJICp1
cmksIFBSVWludDMyIGZsYWdzKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDaGVja0xv
YWRVUklTdHIoY29uc3QgY2hhciAqZnJvbSwgY29uc3QgY2hhciAqdXJpLCBQUlVpbnQzMiBmbGFn
cykgPSAwOwojIDEwNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NhcHMvbnNJU2NyaXB0U2VjdXJp
dHlNYW5hZ2VyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBDaGVja0Z1bmN0aW9uQWNjZXNzKEpTQ29u
dGV4dCAqIGN4LCB2b2lkICogZnVuT2JqLCB2b2lkICogdGFyZ2V0T2JqKSA9IDA7CgoKCgoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBDYW5FeGVjdXRlU2NyaXB0cyhKU0NvbnRleHQgKiBjeCwgbnNJUHJp
bmNpcGFsICpwcmluY2lwYWwsIFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCgoKCgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldFN1YmplY3RQcmluY2lwYWwobnNJUHJpbmNpcGFsICoqX3JldHZhbCkgPSAw
OwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTeXN0ZW1QcmluY2lwYWwobnNJUHJpbmNpcGFs
ICoqX3JldHZhbCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDZXJ0aWZpY2F0ZVBy
aW5jaXBhbChjb25zdCBjaGFyICpDZXJ0SUQsIG5zSVByaW5jaXBhbCAqKl9yZXR2YWwpID0gMDsK
CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvZGViYXNlUHJpbmNpcGFsKG5zSVVSSSAqYVVS
SSwgbnNJUHJpbmNpcGFsICoqX3JldHZhbCkgPSAwOwojIDE0NyAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2NhcHMvbnNJU2NyaXB0U2VjdXJpdHlNYW5hZ2VyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBS
ZXF1ZXN0Q2FwYWJpbGl0eShuc0lQcmluY2lwYWwgKnByaW5jaXBhbCwgY29uc3QgY2hhciAqY2Fw
YWJpbGl0eSwgUFJJbnQxNiAqcmVzdWx0KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IElz
Q2FwYWJpbGl0eUVuYWJsZWQoY29uc3QgY2hhciAqY2FwYWJpbGl0eSwgUFJCb29sICpfcmV0dmFs
KSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBFbmFibGVDYXBhYmlsaXR5KGNvbnN0IGNo
YXIgKmNhcGFiaWxpdHkpID0gMDsKCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZXZlcnRDYXBh
YmlsaXR5KGNvbnN0IGNoYXIgKmNhcGFiaWxpdHkpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVz
dWx0IERpc2FibGVDYXBhYmlsaXR5KGNvbnN0IGNoYXIgKmNhcGFiaWxpdHkpID0gMDsKCgoKCgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldENhbkVuYWJsZUNhcGFiaWxpdHkoY29uc3QgY2hhciAqY2Vy
dGlmaWNhdGVJRCwgY29uc3QgY2hhciAqY2FwYWJpbGl0eSwgUFJJbnQxNiBjYW5FbmFibGUpID0g
MDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0T2JqZWN0UHJpbmNpcGFsKEpTQ29udGV4dCAq
IGN4LCBKU09iamVjdCAqIG9iaiwgbnNJUHJpbmNpcGFsICoqX3JldHZhbCkgPSAwOwoKCgoKCgog
IHZpcnR1YWwgbnNyZXN1bHQgU3ViamVjdFByaW5jaXBhbElzU3lzdGVtKFBSQm9vbCAqX3JldHZh
bCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ2hlY2tTYW1lT3JpZ2luKEpTQ29udGV4
dCAqIGFKU0NvbnRleHQsIG5zSVVSSSAqYVRhcmdldFVSSSkgPSAwOwoKCgoKCgogIHZpcnR1YWwg
bnNyZXN1bHQgQ2hlY2tTYW1lT3JpZ2luVVJJKG5zSVVSSSAqYVNvdXJjZVVSSSwgbnNJVVJJICph
VGFyZ2V0VVJJKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDaGVja1NhbWVPcmlnaW5Q
cmluY2lwYWwobnNJUHJpbmNpcGFsICphU291cmNlUHJpbmNpcGFsLCBuc0lQcmluY2lwYWwgKmFU
YXJnZXRQcmluY2lwYWwpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByaW5jaXBh
bEZyb21Db250ZXh0KEpTQ29udGV4dCAqIGN4LCBuc0lQcmluY2lwYWwgKipfcmV0dmFsKSA9IDA7
Cgp9OwojIDQ3ICJuc0RPTUNsYXNzSW5mby5oIiAyCgpjbGFzcyBuc0lET01XaW5kb3c7CmNsYXNz
IG5zSURPTU5TSFRNTE9wdGlvbkNvbGxlY3Rpb247CmNsYXNzIG5zSVBsdWdpbkluc3RhbmNlOwpj
bGFzcyBuc0lGb3JtOwoKc3RydWN0IG5zRE9NQ2xhc3NJbmZvRGF0YTsKCnR5cGVkZWYgbnNJQ2xh
c3NJbmZvKiAoKm5zRE9NQ2xhc3NJbmZvQ29uc3RydWN0b3JGbmMpCiAgKG5zRE9NQ2xhc3NJbmZv
RGF0YSogYURhdGEpOwoKCnN0cnVjdCBuc0RPTUNsYXNzSW5mb0RhdGEKewogIGNvbnN0IGNoYXIg
Km1OYW1lOwogIHVuaW9uIHsKICAgIG5zRE9NQ2xhc3NJbmZvQ29uc3RydWN0b3JGbmMgbUNvbnN0
cnVjdG9yRnB0cjsKICAgIG5zRE9NQ2xhc3NJbmZvRXh0ZXJuYWxDb25zdHJ1Y3RvckZuYyBtRXh0
ZXJuYWxDb25zdHJ1Y3RvckZwdHI7CiAgfSB1OwogIG5zSUNsYXNzSW5mbyAqbUNhY2hlZENsYXNz
SW5mbzsKCiAgY29uc3QgbnNJSUQgKm1Qcm90b0NoYWluSW50ZXJmYWNlOwogIGNvbnN0IG5zSUlE
ICoqbUludGVyZmFjZXM7CiAgUFJVaW50MzIgbVNjcmlwdGFibGVGbGFncyA6IDMxOwogIFBSQm9v
bCBtSGFzQ2xhc3NJbnRlcmZhY2UgOiAxOwoKCgp9OwoKc3RydWN0IG5zRXh0ZXJuYWxET01DbGFz
c0luZm9EYXRhIDogcHVibGljIG5zRE9NQ2xhc3NJbmZvRGF0YQp7CiAgY29uc3QgbnNDSUQgKm1D
b25zdHJ1Y3RvckNJRDsKfTsKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgUHRyQml0czsKIyA5MyAi
bnNET01DbGFzc0luZm8uaCIKY2xhc3MgbnNET01DbGFzc0luZm8gOiBwdWJsaWMgbnNJWFBDU2Ny
aXB0YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgbnNJQ2xhc3NJbmZvCnsKcHVi
bGljOgogIG5zRE9NQ2xhc3NJbmZvKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpOwogIHZpcnR1
YWwgfm5zRE9NQ2xhc3NJbmZvKCk7CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q2xhc3NOYW1lKGNo
YXIgKiAqYUNsYXNzTmFtZSk7IHZpcnR1YWwgbnNyZXN1bHQgR2V0U2NyaXB0YWJsZUZsYWdzKFBS
VWludDMyICphU2NyaXB0YWJsZUZsYWdzKTsgdmlydHVhbCBuc3Jlc3VsdCBQcmVDcmVhdGUobnNJ
U3VwcG9ydHMgKm5hdGl2ZU9iaiwgSlNDb250ZXh0ICogY3gsIEpTT2JqZWN0ICogZ2xvYmFsT2Jq
LCBKU09iamVjdCAqICpwYXJlbnRPYmopOyB2aXJ0dWFsIG5zcmVzdWx0IENyZWF0ZShuc0lYUENv
bm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKiBjeCwgSlNPYmplY3QgKiBv
YmopOyB2aXJ0dWFsIG5zcmVzdWx0IFBvc3RDcmVhdGUobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2
ZSAqd3JhcHBlciwgSlNDb250ZXh0ICogY3gsIEpTT2JqZWN0ICogb2JqKTsgdmlydHVhbCBuc3Jl
c3VsdCBBZGRQcm9wZXJ0eShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0Nv
bnRleHQgKiBjeCwgSlNPYmplY3QgKiBvYmosIGpzdmFsIGlkLCBqc3ZhbCAqIHZwLCBQUkJvb2wg
Kl9yZXR2YWwpOyB2aXJ0dWFsIG5zcmVzdWx0IERlbFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBw
ZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqIGN4LCBKU09iamVjdCAqIG9iaiwganN2YWwg
aWQsIGpzdmFsICogdnAsIFBSQm9vbCAqX3JldHZhbCk7IHZpcnR1YWwgbnNyZXN1bHQgR2V0UHJv
cGVydHkobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICogY3gs
IEpTT2JqZWN0ICogb2JqLCBqc3ZhbCBpZCwganN2YWwgKiB2cCwgUFJCb29sICpfcmV0dmFsKTsg
dmlydHVhbCBuc3Jlc3VsdCBTZXRQcm9wZXJ0eShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3
cmFwcGVyLCBKU0NvbnRleHQgKiBjeCwgSlNPYmplY3QgKiBvYmosIGpzdmFsIGlkLCBqc3ZhbCAq
IHZwLCBQUkJvb2wgKl9yZXR2YWwpOyB2aXJ0dWFsIG5zcmVzdWx0IEVudW1lcmF0ZShuc0lYUENv
bm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKiBjeCwgSlNPYmplY3QgKiBv
YmosIFBSQm9vbCAqX3JldHZhbCk7IHZpcnR1YWwgbnNyZXN1bHQgTmV3RW51bWVyYXRlKG5zSVhQ
Q29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqIGN4LCBKU09iamVjdCAq
IG9iaiwgUFJVaW50MzIgZW51bV9vcCwganN2YWwgKiBzdGF0ZXAsIGpzaWQgKmlkcCwgUFJCb29s
ICpfcmV0dmFsKTsgdmlydHVhbCBuc3Jlc3VsdCBOZXdSZXNvbHZlKG5zSVhQQ29ubmVjdFdyYXBw
ZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqIGN4LCBKU09iamVjdCAqIG9iaiwganN2YWwg
aWQsIFBSVWludDMyIGZsYWdzLCBKU09iamVjdCAqICpvYmpwLCBQUkJvb2wgKl9yZXR2YWwpOyB2
aXJ0dWFsIG5zcmVzdWx0IENvbnZlcnQobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBl
ciwgSlNDb250ZXh0ICogY3gsIEpTT2JqZWN0ICogb2JqLCBQUlVpbnQzMiB0eXBlLCBqc3ZhbCAq
IHZwLCBQUkJvb2wgKl9yZXR2YWwpOyB2aXJ0dWFsIG5zcmVzdWx0IEZpbmFsaXplKG5zSVhQQ29u
bmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqIGN4LCBKU09iamVjdCAqIG9i
aik7IHZpcnR1YWwgbnNyZXN1bHQgQ2hlY2tBY2Nlc3MobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2
ZSAqd3JhcHBlciwgSlNDb250ZXh0ICogY3gsIEpTT2JqZWN0ICogb2JqLCBqc3ZhbCBpZCwgUFJV
aW50MzIgbW9kZSwganN2YWwgKiB2cCwgUFJCb29sICpfcmV0dmFsKTsgdmlydHVhbCBuc3Jlc3Vs
dCBDYWxsKG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqIGN4
LCBKU09iamVjdCAqIG9iaiwgUFJVaW50MzIgYXJnYywganN2YWwgKiBhcmd2LCBqc3ZhbCAqIHZw
LCBQUkJvb2wgKl9yZXR2YWwpOyB2aXJ0dWFsIG5zcmVzdWx0IENvbnN0cnVjdChuc0lYUENvbm5l
Y3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKiBjeCwgSlNPYmplY3QgKiBvYmos
IFBSVWludDMyIGFyZ2MsIGpzdmFsICogYXJndiwganN2YWwgKiB2cCwgUFJCb29sICpfcmV0dmFs
KTsgdmlydHVhbCBuc3Jlc3VsdCBIYXNJbnN0YW5jZShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZl
ICp3cmFwcGVyLCBKU0NvbnRleHQgKiBjeCwgSlNPYmplY3QgKiBvYmosIGpzdmFsIHZhbCwgUFJC
b29sICpicCwgUFJCb29sICpfcmV0dmFsKTsgdmlydHVhbCBuc3Jlc3VsdCBNYXJrKG5zSVhQQ29u
bmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqIGN4LCBKU09iamVjdCAqIG9i
aiwgdm9pZCAqIGFyZywgUFJVaW50MzIgKl9yZXR2YWwpOwoKICBwdWJsaWM6IHZpcnR1YWwgbnNy
ZXN1bHQgUXVlcnlJbnRlcmZhY2UoY29uc3QgbnNJSUQmIGFJSUQsIHZvaWQqKiBhSW5zdGFuY2VQ
dHIpOyB2aXJ0dWFsIG5zcmVmY250IEFkZFJlZih2b2lkKTsgdmlydHVhbCBuc3JlZmNudCBSZWxl
YXNlKHZvaWQpOyBwcm90ZWN0ZWQ6IG5zQXV0b1JlZkNudCBtUmVmQ250OyBwdWJsaWM6CgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0SW50ZXJmYWNlcyhQUlVpbnQzMiAqY291bnQsIG5zSUlEICogKiph
cnJheSk7IHZpcnR1YWwgbnNyZXN1bHQgR2V0SGVscGVyRm9yTGFuZ3VhZ2UoUFJVaW50MzIgbGFu
Z3VhZ2UsIG5zSVN1cHBvcnRzICoqX3JldHZhbCk7IHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29udHJh
Y3RJRChjaGFyICogKmFDb250cmFjdElEKTsgdmlydHVhbCBuc3Jlc3VsdCBHZXRDbGFzc0Rlc2Ny
aXB0aW9uKGNoYXIgKiAqYUNsYXNzRGVzY3JpcHRpb24pOyB2aXJ0dWFsIG5zcmVzdWx0IEdldENs
YXNzSUQobnNDSUQgKiAqYUNsYXNzSUQpOyB2aXJ0dWFsIG5zcmVzdWx0IEdldEltcGxlbWVudGF0
aW9uTGFuZ3VhZ2UoUFJVaW50MzIgKmFJbXBsZW1lbnRhdGlvbkxhbmd1YWdlKTsgdmlydHVhbCBu
c3Jlc3VsdCBHZXRGbGFncyhQUlVpbnQzMiAqYUZsYWdzKTsgdmlydHVhbCBuc3Jlc3VsdCBHZXRD
bGFzc0lETm9BbGxvYyhuc0NJRCAqYUNsYXNzSUROb0FsbG9jKTsKIyAxMTUgIm5zRE9NQ2xhc3NJ
bmZvLmgiCiAgc3RhdGljIG5zSUNsYXNzSW5mbyogR2V0Q2xhc3NJbmZvSW5zdGFuY2UobnNET01D
bGFzc0luZm9JRCBhSUQpOwogIHN0YXRpYyBuc0lDbGFzc0luZm8qIEdldENsYXNzSW5mb0luc3Rh
bmNlKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpOwoKICBzdGF0aWMgdm9pZCBTaHV0RG93bigp
OwoKICBzdGF0aWMgbnNJQ2xhc3NJbmZvICpkb0NyZWF0ZShuc0RPTUNsYXNzSW5mb0RhdGEqIGFE
YXRhKQogIHsKICAgIHJldHVybiBuZXcgbnNET01DbGFzc0luZm8oYURhdGEpOwogIH0KCiAgc3Rh
dGljIG5zcmVzdWx0IFdyYXBOYXRpdmUoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKnNjb3BlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzICpuYXRpdmUsIGNvbnN0IG5z
SUlEJiBhSUlELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzdmFsICp2cCk7CiAgc3Rh
dGljIG5zcmVzdWx0IFRocm93SlNFeGNlcHRpb24oSlNDb250ZXh0ICpjeCwgbnNyZXN1bHQgYVJl
c3VsdCk7CgogIHN0YXRpYyBuc3Jlc3VsdCBJbml0RE9NSlNDbGFzcyhKU0NvbnRleHQgKmN4LCBK
U09iamVjdCAqb2JqKTsKCiAgc3RhdGljIEpTQ2xhc3Mgc0RPTUpTQ2xhc3M7Cgpwcm90ZWN0ZWQ6
CiAgY29uc3QgbnNET01DbGFzc0luZm9EYXRhKiBtRGF0YTsKCiAgc3RhdGljIG5zcmVzdWx0IElu
aXQoKTsKICBzdGF0aWMgbnNyZXN1bHQgUmVnaXN0ZXJDbGFzc05hbWUoUFJJbnQzMiBhRE9NQ2xh
c3NJbmZvSUQpOwogIHN0YXRpYyBuc3Jlc3VsdCBSZWdpc3RlckNsYXNzUHJvdG9zKFBSSW50MzIg
YURPTUNsYXNzSW5mb0lEKTsKICBzdGF0aWMgbnNyZXN1bHQgUmVnaXN0ZXJFeHRlcm5hbENsYXNz
ZXMoKTsKICBuc3Jlc3VsdCBSZXNvbHZlQ29uc3RydWN0b3IoSlNDb250ZXh0ICpjeCwgSlNPYmpl
Y3QgKm9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKipvYmpwKTsK
CgoKCiAgc3RhdGljIFBSSW50MzIgR2V0QXJyYXlJbmRleEZyb21JZChKU0NvbnRleHQgKmN4LCBq
c3ZhbCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCAqYUlz
TnVtYmVyID0gMCk7CgogIHN0YXRpYyBpbmxpbmUgUFJCb29sIElzUmVhZG9ubHlSZXBsYWNlYWJs
ZShqc3ZhbCBpZCkKICB7CiAgICByZXR1cm4gKGlkID09IHNUb3BfaWQgfHwKICAgICAgICAgICAg
aWQgPT0gc1Njcm9sbGJhcnNfaWQgfHwKICAgICAgICAgICAgaWQgPT0gc0NvbnRlbnRfaWQgfHwK
ICAgICAgICAgICAgaWQgPT0gc1NpZGViYXJfaWQgfHwKICAgICAgICAgICAgaWQgPT0gc01lbnVi
YXJfaWQgfHwKICAgICAgICAgICAgaWQgPT0gc1Rvb2xiYXJfaWQgfHwKICAgICAgICAgICAgaWQg
PT0gc0xvY2F0aW9uYmFyX2lkIHx8CiAgICAgICAgICAgIGlkID09IHNQZXJzb25hbGJhcl9pZCB8
fAogICAgICAgICAgICBpZCA9PSBzU3RhdHVzYmFyX2lkIHx8CiAgICAgICAgICAgIGlkID09IHNE
aXJlY3Rvcmllc19pZCB8fAogICAgICAgICAgICBpZCA9PSBzQ29udHJvbGxlcnNfaWQgfHwKICAg
ICAgICAgICAgaWQgPT0gc1Njcm9sbFhfaWQgfHwKICAgICAgICAgICAgaWQgPT0gc1Njcm9sbFlf
aWQgfHwKICAgICAgICAgICAgaWQgPT0gc0xlbmd0aF9pZCB8fAogICAgICAgICAgICBpZCA9PSBz
RnJhbWVzX2lkKTsKICB9CgogIHN0YXRpYyBpbmxpbmUgUFJCb29sIElzV3JpdGFibGVSZXBsYWNl
YWJsZShqc3ZhbCBpZCkKICB7CiAgICByZXR1cm4gKGlkID09IHNJbm5lckhlaWdodF9pZCB8fAog
ICAgICAgICAgICBpZCA9PSBzSW5uZXJXaWR0aF9pZCB8fAogICAgICAgICAgICBpZCA9PSBzT3V0
ZXJIZWlnaHRfaWQgfHwKICAgICAgICAgICAgaWQgPT0gc091dGVyV2lkdGhfaWQgfHwKICAgICAg
ICAgICAgaWQgPT0gc1NjcmVlblhfaWQgfHwKICAgICAgICAgICAgaWQgPT0gc1NjcmVlbllfaWQg
fHwKICAgICAgICAgICAgaWQgPT0gc1N0YXR1c19pZCB8fAogICAgICAgICAgICBpZCA9PSBzTmFt
ZV9pZCk7CiAgfQoKICBuc3Jlc3VsdCBkb0NoZWNrUHJvcGVydHlBY2Nlc3MoSlNDb250ZXh0ICpj
eCwgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBSVWludDMyIGFjY2Vzc01vZGUsIFBSQm9vbCBpc1dpbmRvdyk7Cgog
IHN0YXRpYyBKU0NsYXNzIHNET01Db25zdHJ1Y3RvclByb3RvQ2xhc3M7CiAgc3RhdGljIEpTRnVu
Y3Rpb25TcGVjIHNET01KU0NsYXNzX21ldGhvZHNbXTsKCiAgc3RhdGljIG5zSVhQQ29ubmVjdCAq
c1hQQ29ubmVjdDsKICBzdGF0aWMgbnNJU2NyaXB0U2VjdXJpdHlNYW5hZ2VyICpzU2VjTWFuOwoK
CiAgc3RhdGljIG5zcmVzdWx0IERlZmluZVN0YXRpY0pTVmFscyhKU0NvbnRleHQgKmN4KTsKCiAg
c3RhdGljIFBSQm9vbCBzSXNJbml0aWFsaXplZDsKCiAgc3RhdGljIGpzdmFsIHNUb3BfaWQ7CiAg
c3RhdGljIGpzdmFsIHNTY3JvbGxiYXJzX2lkOwogIHN0YXRpYyBqc3ZhbCBzTG9jYXRpb25faWQ7
CiAgc3RhdGljIGpzdmFsIHNDb21wb25lbnRzX2lkOwogIHN0YXRpYyBqc3ZhbCBzQ29uc3RydWN0
b3JfaWQ7CiAgc3RhdGljIGpzdmFsIHNfY29udGVudF9pZDsKICBzdGF0aWMganN2YWwgc0NvbnRl
bnRfaWQ7CiAgc3RhdGljIGpzdmFsIHNTaWRlYmFyX2lkOwogIHN0YXRpYyBqc3ZhbCBzTWVudWJh
cl9pZDsKICBzdGF0aWMganN2YWwgc1Rvb2xiYXJfaWQ7CiAgc3RhdGljIGpzdmFsIHNMb2NhdGlv
bmJhcl9pZDsKICBzdGF0aWMganN2YWwgc1BlcnNvbmFsYmFyX2lkOwogIHN0YXRpYyBqc3ZhbCBz
U3RhdHVzYmFyX2lkOwogIHN0YXRpYyBqc3ZhbCBzRGlyZWN0b3JpZXNfaWQ7CiAgc3RhdGljIGpz
dmFsIHNDb250cm9sbGVyc19pZDsKICBzdGF0aWMganN2YWwgc0xlbmd0aF9pZDsKICBzdGF0aWMg
anN2YWwgc0lubmVySGVpZ2h0X2lkOwogIHN0YXRpYyBqc3ZhbCBzSW5uZXJXaWR0aF9pZDsKICBz
dGF0aWMganN2YWwgc091dGVySGVpZ2h0X2lkOwogIHN0YXRpYyBqc3ZhbCBzT3V0ZXJXaWR0aF9p
ZDsKICBzdGF0aWMganN2YWwgc1NjcmVlblhfaWQ7CiAgc3RhdGljIGpzdmFsIHNTY3JlZW5ZX2lk
OwogIHN0YXRpYyBqc3ZhbCBzU3RhdHVzX2lkOwogIHN0YXRpYyBqc3ZhbCBzTmFtZV9pZDsKICBz
dGF0aWMganN2YWwgc09ubW91c2Vkb3duX2lkOwogIHN0YXRpYyBqc3ZhbCBzT25tb3VzZXVwX2lk
OwogIHN0YXRpYyBqc3ZhbCBzT25jbGlja19pZDsKICBzdGF0aWMganN2YWwgc09uY29udGV4dG1l
bnVfaWQ7CiAgc3RhdGljIGpzdmFsIHNPbm1vdXNlb3Zlcl9pZDsKICBzdGF0aWMganN2YWwgc09u
bW91c2VvdXRfaWQ7CiAgc3RhdGljIGpzdmFsIHNPbmtleWRvd25faWQ7CiAgc3RhdGljIGpzdmFs
IHNPbmtleXVwX2lkOwogIHN0YXRpYyBqc3ZhbCBzT25rZXlwcmVzc19pZDsKICBzdGF0aWMganN2
YWwgc09ubW91c2Vtb3ZlX2lkOwogIHN0YXRpYyBqc3ZhbCBzT25mb2N1c19pZDsKICBzdGF0aWMg
anN2YWwgc09uYmx1cl9pZDsKICBzdGF0aWMganN2YWwgc09uc3VibWl0X2lkOwogIHN0YXRpYyBq
c3ZhbCBzT25yZXNldF9pZDsKICBzdGF0aWMganN2YWwgc09uY2hhbmdlX2lkOwogIHN0YXRpYyBq
c3ZhbCBzT25zZWxlY3RfaWQ7CiAgc3RhdGljIGpzdmFsIHNPbmxvYWRfaWQ7CiAgc3RhdGljIGpz
dmFsIHNPbnVubG9hZF9pZDsKICBzdGF0aWMganN2YWwgc09uYWJvcnRfaWQ7CiAgc3RhdGljIGpz
dmFsIHNPbmVycm9yX2lkOwogIHN0YXRpYyBqc3ZhbCBzT25wYWludF9pZDsKICBzdGF0aWMganN2
YWwgc09ucmVzaXplX2lkOwogIHN0YXRpYyBqc3ZhbCBzT25zY3JvbGxfaWQ7CiAgc3RhdGljIGpz
dmFsIHNTY3JvbGxJbnRvVmlld19pZDsKICBzdGF0aWMganN2YWwgc1Njcm9sbFhfaWQ7CiAgc3Rh
dGljIGpzdmFsIHNTY3JvbGxZX2lkOwogIHN0YXRpYyBqc3ZhbCBzT3Blbl9pZDsKICBzdGF0aWMg
anN2YWwgc0l0ZW1faWQ7CiAgc3RhdGljIGpzdmFsIHNFbnVtZXJhdGVfaWQ7CiAgc3RhdGljIGpz
dmFsIHNOYXZpZ2F0b3JfaWQ7CiAgc3RhdGljIGpzdmFsIHNEb2N1bWVudF9pZDsKICBzdGF0aWMg
anN2YWwgc1dpbmRvd19pZDsKICBzdGF0aWMganN2YWwgc0ZyYW1lc19pZDsKCiAgc3RhdGljIGNv
bnN0IEpTQ2xhc3MgKnNPYmplY3RDbGFzczsKCiAgc3RhdGljIFBSQm9vbCBzRG9TZWN1cml0eUNo
ZWNrSW5BZGRQcm9wZXJ0eTsKfTsKCnR5cGVkZWYgbnNET01DbGFzc0luZm8gbnNET01HZW5lcmlj
U0g7CgoKCgoKCmNsYXNzIG5zRXZlbnRSZWNpZXZlclNIIDogcHVibGljIG5zRE9NR2VuZXJpY1NI
CnsKcHJvdGVjdGVkOgogIG5zRXZlbnRSZWNpZXZlclNIKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURh
dGEpIDogbnNET01HZW5lcmljU0goYURhdGEpCiAgewogIH0KCiAgdmlydHVhbCB+bnNFdmVudFJl
Y2lldmVyU0goKQogIHsKICB9CgogIHN0YXRpYyBQUkJvb2wgUmVhbGx5SXNFdmVudE5hbWUoanN2
YWwgaWQsIGpzY2hhciBhRmlyc3RDaGFyKTsKCiAgc3RhdGljIGlubGluZSBQUkJvb2wgSXNFdmVu
dE5hbWUoanN2YWwgaWQpCiAgewogICAgOwoKICAgIGpzY2hhciAqc3RyID0gOjpKU19HZXRTdHJp
bmdDaGFycygoKEpTU3RyaW5nICopKCh2b2lkICopKChpZCkgJiB+KGpzdmFsKSgoKEpTVWludDMy
KTEgPDwgKDMpKSAtIDEpKSkpKTsKCiAgICBpZiAoc3RyWzBdID09ICdvJyAmJiBzdHJbMV0gPT0g
J24nKSB7CiAgICAgIHJldHVybiBSZWFsbHlJc0V2ZW50TmFtZShpZCwgc3RyWzJdKTsKICAgIH0K
CiAgICByZXR1cm4gMDsKICB9CgogIG5zcmVzdWx0IFJlZ2lzdGVyQ29tcGlsZUhhbmRsZXIobnNJ
WFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJCb29sIGNvbXBpbGUsIFBSQm9vbCAqZGlkX2Nv
bXBpbGUpOwoKcHVibGljOgogIHZpcnR1YWwgbnNyZXN1bHQgTmV3UmVzb2x2ZShuc0lYUENvbm5l
Y3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAg
ICAgICAgICBKU09iamVjdCAqb2JqLCBqc3ZhbCBpZCwgUFJVaW50MzIgZmxhZ3MsCiAgICAgICAg
ICAgICAgICAgICAgICAgIEpTT2JqZWN0ICoqb2JqcCwgUFJCb29sICpfcmV0dmFsKTsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBw
ZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqb2Jq
LCBqc3ZhbCBpZCwganN2YWwgKnZwLAogICAgICAgICAgICAgICAgICAgICAgICAgUFJCb29sICpf
cmV0dmFsKTsKfTsKCgoKCmNsYXNzIG5zV2luZG93U0ggOiBwdWJsaWMgbnNFdmVudFJlY2lldmVy
U0gKewpwcm90ZWN0ZWQ6CiAgbnNXaW5kb3dTSChuc0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKSA6
IG5zRXZlbnRSZWNpZXZlclNIKGFEYXRhKQogIHsKICB9CgogIHZpcnR1YWwgfm5zV2luZG93U0go
KQogIHsKICB9CgogIHN0YXRpYyBuc3Jlc3VsdCBHbG9iYWxSZXNvbHZlKG5zSVN1cHBvcnRzICph
TmF0aXZlLCBKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpT
T2JqZWN0ICpvYmosIEpTU3RyaW5nICpzdHIsIFBSVWludDMyIGZsYWdzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBSQm9vbCAqZGlkX3Jlc29sdmUpOwoKcHVibGljOgogIHZpcnR1
YWwgbnNyZXN1bHQgUHJlQ3JlYXRlKG5zSVN1cHBvcnRzICpuYXRpdmVPYmosIEpTQ29udGV4dCAq
Y3gsCiAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKmdsb2JhbE9iaiwgSlNPYmplY3Qg
KipwYXJlbnRPYmopOwogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UHJvcGVydHkobnNJWFBDb25uZWN0
V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAg
ICAgICAgIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLCBqc3ZhbCAqdnAsIFBSQm9vbCAqX3JldHZh
bCk7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRQcm9wZXJ0eShuc0lYUENvbm5lY3RXcmFwcGVkTmF0
aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAgICAgICAgICAgSlNP
YmplY3QgKm9iaiwganN2YWwgaWQsIGpzdmFsICp2cCwgUFJCb29sICpfcmV0dmFsKTsKICB2aXJ0
dWFsIG5zcmVzdWx0IEFkZFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBw
ZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqb2Jq
LCBqc3ZhbCBpZCwganN2YWwgKnZwLCBQUkJvb2wgKl9yZXR2YWwpOwogIHZpcnR1YWwgbnNyZXN1
bHQgRGVsUHJvcGVydHkobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250
ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlk
LCBqc3ZhbCAqdnAsIFBSQm9vbCAqX3JldHZhbCk7CiAgdmlydHVhbCBuc3Jlc3VsdCBOZXdSZXNv
bHZlKG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqY3gsCiAg
ICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLCBQUlVpbnQzMiBm
bGFncywKICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKipvYmpwLCBQUkJvb2wgKl9y
ZXR2YWwpOwogIHZpcnR1YWwgbnNyZXN1bHQgRmluYWxpemUobnNJWFBDb25uZWN0V3JhcHBlZE5h
dGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgIEpTT2Jq
ZWN0ICpvYmopOwoKICBzdGF0aWMgbnNyZXN1bHQgQ2FjaGVEb2N1bWVudFByb3BlcnR5KEpTQ29u
dGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuc0lET01XaW5kb3cgKndpbmRvdyk7CgogIHN0YXRpYyBuc0lDbGFzc0luZm8gKmRv
Q3JlYXRlKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpCiAgewogICAgcmV0dXJuIG5ldyBuc1dp
bmRvd1NIKGFEYXRhKTsKICB9Cn07CgoKCgpjbGFzcyBuc0xvY2F0aW9uU0ggOiBwdWJsaWMgbnNE
T01HZW5lcmljU0gKewpwcm90ZWN0ZWQ6CiAgbnNMb2NhdGlvblNIKG5zRE9NQ2xhc3NJbmZvRGF0
YSogYURhdGEpIDogbnNET01HZW5lcmljU0goYURhdGEpCiAgewogIH0KCiAgdmlydHVhbCB+bnNM
b2NhdGlvblNIKCkKICB7CiAgfQoKcHVibGljOgogIHZpcnR1YWwgbnNyZXN1bHQgQ2hlY2tBY2Nl
c3MobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICpjeCwKICAg
ICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLCBQUlVpbnQzMiBt
b2RlLAogICAgICAgICAgICAgICAgICAgICAgICAganN2YWwgKnZwLCBQUkJvb2wgKl9yZXR2YWwp
OwoKICBzdGF0aWMgbnNJQ2xhc3NJbmZvICpkb0NyZWF0ZShuc0RPTUNsYXNzSW5mb0RhdGEqIGFE
YXRhKQogIHsKICAgIHJldHVybiBuZXcgbnNMb2NhdGlvblNIKGFEYXRhKTsKICB9Cn07CgoKCgoK
Y2xhc3MgbnNOb2RlU0ggOiBwdWJsaWMgbnNFdmVudFJlY2lldmVyU0gKewpwcm90ZWN0ZWQ6CiAg
bnNOb2RlU0gobnNET01DbGFzc0luZm9EYXRhKiBhRGF0YSkgOiBuc0V2ZW50UmVjaWV2ZXJTSChh
RGF0YSkKICB7CiAgfQoKICB2aXJ0dWFsIH5uc05vZGVTSCgpCiAgewogIH0KCnB1YmxpYzoKICB2
aXJ0dWFsIG5zcmVzdWx0IFByZUNyZWF0ZShuc0lTdXBwb3J0cyAqbmF0aXZlT2JqLCBKU0NvbnRl
eHQgKmN4LAogICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpnbG9iYWxPYmosIEpTT2Jq
ZWN0ICoqcGFyZW50T2JqKTsKICB2aXJ0dWFsIG5zcmVzdWx0IEFkZFByb3BlcnR5KG5zSVhQQ29u
bmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBKU09iamVjdCAqb2JqLCBqc3ZhbCBpZCwganN2YWwgKnZwLCBQUkJvb2wgKl9y
ZXR2YWwpOwogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RmxhZ3MoUFJVaW50MzIgKmFGbGFncyk7Cgog
IHN0YXRpYyBuc0lDbGFzc0luZm8gKmRvQ3JlYXRlKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEp
CiAgewogICAgcmV0dXJuIG5ldyBuc05vZGVTSChhRGF0YSk7CiAgfQp9OwoKCgoKY2xhc3MgbnNF
bGVtZW50U0ggOiBwdWJsaWMgbnNOb2RlU0gKewpwcm90ZWN0ZWQ6CiAgbnNFbGVtZW50U0gobnNE
T01DbGFzc0luZm9EYXRhKiBhRGF0YSkgOiBuc05vZGVTSChhRGF0YSkKICB7CiAgfQoKICB2aXJ0
dWFsIH5uc0VsZW1lbnRTSCgpCiAgewogIH0KCnB1YmxpYzoKICB2aXJ0dWFsIG5zcmVzdWx0IFBv
c3RDcmVhdGUobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICpj
eCwKICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqb2JqKTsKCiAgc3RhdGljIG5zSUNsYXNz
SW5mbyAqZG9DcmVhdGUobnNET01DbGFzc0luZm9EYXRhKiBhRGF0YSkKICB7CiAgICByZXR1cm4g
bmV3IG5zRWxlbWVudFNIKGFEYXRhKTsKICB9Cn07CgoKCgpjbGFzcyBuc0FycmF5U0ggOiBwdWJs
aWMgbnNET01DbGFzc0luZm8Kewpwcm90ZWN0ZWQ6CiAgbnNBcnJheVNIKG5zRE9NQ2xhc3NJbmZv
RGF0YSogYURhdGEpIDogbnNET01DbGFzc0luZm8oYURhdGEpCiAgewogIH0KCiAgdmlydHVhbCB+
bnNBcnJheVNIKCkKICB7CiAgfQoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEl0ZW1BdChuc0lTdXBw
b3J0cyAqYU5hdGl2ZSwgUFJVaW50MzIgYUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5zSVN1cHBvcnRzICoqYVJlc3VsdCk7CgpwdWJsaWM6CiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRQcm9wZXJ0eShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQg
KmN4LAogICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsIGpz
dmFsICp2cCwgUFJCb29sICpfcmV0dmFsKTsKCiAgc3RhdGljIG5zSUNsYXNzSW5mbyAqZG9DcmVh
dGUobnNET01DbGFzc0luZm9EYXRhKiBhRGF0YSkKICB7CiAgICByZXR1cm4gbmV3IG5zQXJyYXlT
SChhRGF0YSk7CiAgfQp9OwoKCgoKY2xhc3MgbnNOYW1lZEFycmF5U0ggOiBwdWJsaWMgbnNBcnJh
eVNICnsKcHJvdGVjdGVkOgogIG5zTmFtZWRBcnJheVNIKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURh
dGEpIDogbnNBcnJheVNIKGFEYXRhKQogIHsKICB9CgogIHZpcnR1YWwgfm5zTmFtZWRBcnJheVNI
KCkKICB7CiAgfQoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5hbWVkSXRlbShuc0lTdXBwb3J0cyAq
YU5hdGl2ZSwgY29uc3QgbnNBU3RyaW5nJiBhTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuc0lTdXBwb3J0cyAqKmFSZXN1bHQpID0gMDsKCnB1YmxpYzoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpT
Q29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqb2JqLCBqc3Zh
bCBpZCwganN2YWwgKnZwLCBQUkJvb2wgKl9yZXR2YWwpOwp9OwoKCgoKY2xhc3MgbnNOYW1lZE5v
ZGVNYXBTSCA6IHB1YmxpYyBuc05hbWVkQXJyYXlTSAp7CnByb3RlY3RlZDoKICBuc05hbWVkTm9k
ZU1hcFNIKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpIDogbnNOYW1lZEFycmF5U0goYURhdGEp
CiAgewogIH0KCiAgdmlydHVhbCB+bnNOYW1lZE5vZGVNYXBTSCgpCiAgewogIH0KCgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldEl0ZW1BdChuc0lTdXBwb3J0cyAqYU5hdGl2ZSwgUFJVaW50MzIgYUlu
ZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzICoqYVJlc3VsdCk7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5hbWVkSXRlbShuc0lTdXBwb3J0cyAqYU5hdGl2ZSwg
Y29uc3QgbnNBU3RyaW5nJiBhTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
c0lTdXBwb3J0cyAqKmFSZXN1bHQpOwoKcHVibGljOgogIHN0YXRpYyBuc0lDbGFzc0luZm8gKmRv
Q3JlYXRlKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpCiAgewogICAgcmV0dXJuIG5ldyBuc05h
bWVkTm9kZU1hcFNIKGFEYXRhKTsKICB9Cn07CgoKCgpjbGFzcyBuc0hUTUxDb2xsZWN0aW9uU0gg
OiBwdWJsaWMgbnNOYW1lZEFycmF5U0gKewpwcm90ZWN0ZWQ6CiAgbnNIVE1MQ29sbGVjdGlvblNI
KG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpIDogbnNOYW1lZEFycmF5U0goYURhdGEpCiAgewog
IH0KCiAgdmlydHVhbCB+bnNIVE1MQ29sbGVjdGlvblNIKCkKICB7CiAgfQoKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0SXRlbUF0KG5zSVN1cHBvcnRzICphTmF0aXZlLCBQUlVpbnQzMiBhSW5kZXgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3VwcG9ydHMgKiphUmVzdWx0KTsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0TmFtZWRJdGVtKG5zSVN1cHBvcnRzICphTmF0aXZlLCBjb25z
dCBuc0FTdHJpbmcmIGFOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN1
cHBvcnRzICoqYVJlc3VsdCk7CgpwdWJsaWM6CiAgc3RhdGljIG5zSUNsYXNzSW5mbyAqZG9DcmVh
dGUobnNET01DbGFzc0luZm9EYXRhKiBhRGF0YSkKICB7CiAgICByZXR1cm4gbmV3IG5zSFRNTENv
bGxlY3Rpb25TSChhRGF0YSk7CiAgfQp9OwoKCgoKY2xhc3MgbnNDb250ZW50TGlzdFNIIDogcHVi
bGljIG5zSFRNTENvbGxlY3Rpb25TSAp7CnByb3RlY3RlZDoKICBuc0NvbnRlbnRMaXN0U0gobnNE
T01DbGFzc0luZm9EYXRhKiBhRGF0YSkgOiBuc0hUTUxDb2xsZWN0aW9uU0goYURhdGEpCiAgewog
IH0KCiAgdmlydHVhbCB+bnNDb250ZW50TGlzdFNIKCkKICB7CiAgfQoKcHVibGljOgogIHZpcnR1
YWwgbnNyZXN1bHQgUHJlQ3JlYXRlKG5zSVN1cHBvcnRzICpuYXRpdmVPYmosIEpTQ29udGV4dCAq
Y3gsCiAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKmdsb2JhbE9iaiwgSlNPYmplY3Qg
KipwYXJlbnRPYmopOwoKICBzdGF0aWMgbnNJQ2xhc3NJbmZvICpkb0NyZWF0ZShuc0RPTUNsYXNz
SW5mb0RhdGEqIGFEYXRhKQogIHsKICAgIHJldHVybiBuZXcgbnNDb250ZW50TGlzdFNIKGFEYXRh
KTsKICB9Cn07CgoKCgoKY2xhc3MgbnNGb3JtQ29udHJvbExpc3RTSCA6IHB1YmxpYyBuc0hUTUxD
b2xsZWN0aW9uU0gKewpwcm90ZWN0ZWQ6CiAgbnNGb3JtQ29udHJvbExpc3RTSChuc0RPTUNsYXNz
SW5mb0RhdGEqIGFEYXRhKSA6IG5zSFRNTENvbGxlY3Rpb25TSChhRGF0YSkKICB7CiAgfQoKICB2
aXJ0dWFsIH5uc0Zvcm1Db250cm9sTGlzdFNIKCkKICB7CiAgfQoKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0TmFtZWRJdGVtKG5zSVN1cHBvcnRzICphTmF0aXZlLCBjb25zdCBuc0FTdHJpbmcmIGFO
YW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzICoqYVJlc3Vs
dCk7CgpwdWJsaWM6CiAgc3RhdGljIG5zSUNsYXNzSW5mbyAqZG9DcmVhdGUobnNET01DbGFzc0lu
Zm9EYXRhKiBhRGF0YSkKICB7CiAgICByZXR1cm4gbmV3IG5zRm9ybUNvbnRyb2xMaXN0U0goYURh
dGEpOwogIH0KfTsKCgoKCmNsYXNzIG5zRG9jdW1lbnRTSCA6IHB1YmxpYyBuc05vZGVTSAp7CnB1
YmxpYzoKICBuc0RvY3VtZW50U0gobnNET01DbGFzc0luZm9EYXRhKiBhRGF0YSkgOiBuc05vZGVT
SChhRGF0YSkKICB7CiAgfQoKICB2aXJ0dWFsIH5uc0RvY3VtZW50U0goKQogIHsKICB9CgpwdWJs
aWM6CiAgdmlydHVhbCBuc3Jlc3VsdCBBZGRQcm9wZXJ0eShuc0lYUENvbm5lY3RXcmFwcGVkTmF0
aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAgICAgICAgICAgSlNP
YmplY3QgKm9iaiwganN2YWwgaWQsIGpzdmFsICp2cCwgUFJCb29sICpfcmV0dmFsKTsKICB2aXJ0
dWFsIG5zcmVzdWx0IERlbFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBw
ZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqb2Jq
LCBqc3ZhbCBpZCwganN2YWwgKnZwLCBQUkJvb2wgKl9yZXR2YWwpOwogIHZpcnR1YWwgbnNyZXN1
bHQgTmV3UmVzb2x2ZShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRl
eHQgKmN4LAogICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqb2JqLCBqc3ZhbCBpZCwg
UFJVaW50MzIgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICoqb2JqcCwg
UFJCb29sICpfcmV0dmFsKTsKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByb3BlcnR5KG5zSVhQQ29u
bmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBKU09iamVjdCAqb2JqLCBqc3ZhbCBpZCwganN2YWwgKnZwLCBQUkJvb2wgKl9y
ZXR2YWwpOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UHJvcGVydHkobnNJWFBDb25uZWN0V3JhcHBl
ZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgICAg
IEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLCBqc3ZhbCAqdnAsIFBSQm9vbCAqX3JldHZhbCk7CiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRGbGFncyhQUlVpbnQzMiogYUZsYWdzKTsKCiAgc3RhdGljIG5z
SUNsYXNzSW5mbyAqZG9DcmVhdGUobnNET01DbGFzc0luZm9EYXRhKiBhRGF0YSkKICB7CiAgICBy
ZXR1cm4gbmV3IG5zRG9jdW1lbnRTSChhRGF0YSk7CiAgfQp9OwoKCgoKY2xhc3MgbnNIVE1MRG9j
dW1lbnRTSCA6IHB1YmxpYyBuc0RvY3VtZW50U0gKewpwcm90ZWN0ZWQ6CiAgbnNIVE1MRG9jdW1l
bnRTSChuc0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKSA6IG5zRG9jdW1lbnRTSChhRGF0YSkKICB7
CiAgfQoKICB2aXJ0dWFsIH5uc0hUTUxEb2N1bWVudFNIKCkKICB7CiAgfQoKICBzdGF0aWMgbnNy
ZXN1bHQgUmVzb2x2ZUltcGwoSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwganN2YWwgaWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzICoqcmVzdWx0KTsKICBzdGF0aWMg
SlNCb29sIERvY3VtZW50T3BlbihKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50TiBhcmdjLCBqc3ZhbCAq
YXJndiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganN2YWwg
KnJ2YWwpOwoKcHVibGljOgogIHZpcnR1YWwgbnNyZXN1bHQgTmV3UmVzb2x2ZShuc0lYUENvbm5l
Y3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAg
ICAgICAgICBKU09iamVjdCAqb2JqLCBqc3ZhbCBpZCwgUFJVaW50MzIgZmxhZ3MsCiAgICAgICAg
ICAgICAgICAgICAgICAgIEpTT2JqZWN0ICoqb2JqcCwgUFJCb29sICpfcmV0dmFsKTsKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBw
ZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqb2Jq
LCBqc3ZhbCBpZCwganN2YWwgKnZwLCBQUkJvb2wgKl9yZXR2YWwpOwoKICBzdGF0aWMgbnNJQ2xh
c3NJbmZvICpkb0NyZWF0ZShuc0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKQogIHsKICAgIHJldHVy
biBuZXcgbnNIVE1MRG9jdW1lbnRTSChhRGF0YSk7CiAgfQp9OwoKCgoKY2xhc3MgbnNIVE1MRWxl
bWVudFNIIDogcHVibGljIG5zRWxlbWVudFNICnsKcHJvdGVjdGVkOgogIG5zSFRNTEVsZW1lbnRT
SChuc0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKSA6IG5zRWxlbWVudFNIKGFEYXRhKQogIHsKICB9
CgogIHZpcnR1YWwgfm5zSFRNTEVsZW1lbnRTSCgpCiAgewogIH0KCiAgc3RhdGljIEpTQm9vbCBT
Y3JvbGxJbnRvVmlldyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnROIGFyZ2MsIGpzdmFsICphcmd2
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzdmFsICpy
dmFsKTsKCnB1YmxpYzoKICB2aXJ0dWFsIG5zcmVzdWx0IE5ld1Jlc29sdmUobnNJWFBDb25uZWN0
V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAg
ICAgICAgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsIFBSVWludDMyIGZsYWdzLAogICAgICAgICAg
ICAgICAgICAgICAgICBKU09iamVjdCAqKm9ianAsIFBSQm9vbCAqX3JldHZhbCk7CgogIHN0YXRp
YyBuc0lDbGFzc0luZm8gKmRvQ3JlYXRlKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpCiAgewog
ICAgcmV0dXJuIG5ldyBuc0hUTUxFbGVtZW50U0goYURhdGEpOwogIH0KfTsKCgoKCmNsYXNzIG5z
SFRNTEZvcm1FbGVtZW50U0ggOiBwdWJsaWMgbnNIVE1MRWxlbWVudFNICnsKcHJvdGVjdGVkOgog
IG5zSFRNTEZvcm1FbGVtZW50U0gobnNET01DbGFzc0luZm9EYXRhKiBhRGF0YSkgOiBuc0hUTUxF
bGVtZW50U0goYURhdGEpCiAgewogIH0KCiAgdmlydHVhbCB+bnNIVE1MRm9ybUVsZW1lbnRTSCgp
CiAgewogIH0KCiAgc3RhdGljIG5zcmVzdWx0IEZpbmROYW1lZEl0ZW0obnNJRm9ybSAqYUZvcm0s
IEpTU3RyaW5nICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3VwcG9y
dHMgKiphUmVzdWx0KTsKCnB1YmxpYzoKICB2aXJ0dWFsIG5zcmVzdWx0IE5ld1Jlc29sdmUobnNJ
WFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICpjeCwKICAgICAgICAg
ICAgICAgICAgICAgICAgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsIFBSVWludDMyIGZsYWdzLAog
ICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqKm9ianAsIFBSQm9vbCAqX3JldHZhbCk7
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQcm9wZXJ0eShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZl
ICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmpl
Y3QgKm9iaiwganN2YWwgaWQsIGpzdmFsICp2cCwKICAgICAgICAgICAgICAgICAgICAgICAgIFBS
Qm9vbCAqX3JldHZhbCk7CgogIHZpcnR1YWwgbnNyZXN1bHQgTmV3RW51bWVyYXRlKG5zSVhQQ29u
bmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgSlND
b250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICBQUlVp
bnQzMiBlbnVtX29wLCBqc3ZhbCAqc3RhdGVwLAogICAgICAgICAgICAgICAgICAgICAgICAgIGpz
aWQgKmlkcCwgUFJCb29sICpfcmV0dmFsKTsKCiAgc3RhdGljIG5zSUNsYXNzSW5mbyAqZG9DcmVh
dGUobnNET01DbGFzc0luZm9EYXRhKiBhRGF0YSkKICB7CiAgICByZXR1cm4gbmV3IG5zSFRNTEZv
cm1FbGVtZW50U0goYURhdGEpOwogIH0KfTsKCgoKCmNsYXNzIG5zSFRNTFNlbGVjdEVsZW1lbnRT
SCA6IHB1YmxpYyBuc0hUTUxFbGVtZW50U0gKewpwcm90ZWN0ZWQ6CiAgbnNIVE1MU2VsZWN0RWxl
bWVudFNIKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpIDogbnNIVE1MRWxlbWVudFNIKGFEYXRh
KQogIHsKICB9CgogIHZpcnR1YWwgfm5zSFRNTFNlbGVjdEVsZW1lbnRTSCgpCiAgewogIH0KCnB1
YmxpYzoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBwZWRO
YXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAgICBK
U09iamVjdCAqb2JqLCBqc3ZhbCBpZCwganN2YWwgKnZwLAogICAgICAgICAgICAgICAgICAgICAg
ICAgUFJCb29sICpfcmV0dmFsKTsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFByb3BlcnR5KG5zSVhQ
Q29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBKU09iamVjdCAqb2JqLCBqc3ZhbCBpZCwganN2YWwgKnZwLCBQUkJvb2wg
Kl9yZXR2YWwpOwoKICBzdGF0aWMgbnNyZXN1bHQgU2V0T3B0aW9uKEpTQ29udGV4dCAqY3gsIGpz
dmFsICp2cCwgUFJVaW50MzIgYUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJ
RE9NTlNIVE1MT3B0aW9uQ29sbGVjdGlvbiAqYU9wdENvbGxlY3Rpb24pOwoKICBzdGF0aWMgbnNJ
Q2xhc3NJbmZvICpkb0NyZWF0ZShuc0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKQogIHsKICAgIHJl
dHVybiBuZXcgbnNIVE1MU2VsZWN0RWxlbWVudFNIKGFEYXRhKTsKICB9Cn07CgoKCgoKY2xhc3Mg
bnNIVE1MRXh0ZXJuYWxPYmpTSCA6IHB1YmxpYyBuc0hUTUxFbGVtZW50U0gKewpwcm90ZWN0ZWQ6
CiAgbnNIVE1MRXh0ZXJuYWxPYmpTSChuc0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKSA6IG5zSFRN
TEVsZW1lbnRTSChhRGF0YSkKICB7CiAgfQoKICB2aXJ0dWFsIH5uc0hUTUxFeHRlcm5hbE9ialNI
KCkKICB7CiAgfQoKICBuc3Jlc3VsdCBHZXRQbHVnaW5JbnN0YW5jZShuc0lYUENvbm5lY3RXcmFw
cGVkTmF0aXZlICphV3JhcHBlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lQbHVn
aW5JbnN0YW5jZSAqKmFSZXN1bHQpOwoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBsdWdpbkpTT2Jq
ZWN0KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuc0lQbHVnaW5JbnN0YW5jZSAqcGx1Z2luX2luc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqKnBsdWdpbl9vYmosCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqKnBsdWdpbl9wcm90bykgPSAw
OwoKcHVibGljOgogIHZpcnR1YWwgbnNyZXN1bHQgUG9zdENyZWF0ZShuc0lYUENvbm5lY3RXcmFw
cGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAgICAgICAg
ICBKU09iamVjdCAqb2JqKTsKfTsKCgoKCmNsYXNzIG5zSFRNTEFwcGxldEVsZW1lbnRTSCA6IHB1
YmxpYyBuc0hUTUxFeHRlcm5hbE9ialNICnsKcHJvdGVjdGVkOgogIG5zSFRNTEFwcGxldEVsZW1l
bnRTSChuc0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKSA6IG5zSFRNTEV4dGVybmFsT2JqU0goYURh
dGEpCiAgewogIH0KCiAgdmlydHVhbCB+bnNIVE1MQXBwbGV0RWxlbWVudFNIKCkKICB7CiAgfQoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBsdWdpbkpTT2JqZWN0KEpTQ29udGV4dCAqY3gsIEpTT2Jq
ZWN0ICpvYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lQbHVnaW5J
bnN0YW5jZSAqcGx1Z2luX2luc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBKU09iamVjdCAqKnBsdWdpbl9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBKU09iamVjdCAqKnBsdWdpbl9wcm90byk7CgpwdWJsaWM6CiAgc3RhdGljIG5zSUNsYXNz
SW5mbyAqZG9DcmVhdGUobnNET01DbGFzc0luZm9EYXRhKiBhRGF0YSkKICB7CiAgICByZXR1cm4g
bmV3IG5zSFRNTEFwcGxldEVsZW1lbnRTSChhRGF0YSk7CiAgfQp9OwoKCgoKY2xhc3MgbnNIVE1M
UGx1Z2luT2JqRWxlbWVudFNIIDogcHVibGljIG5zSFRNTEFwcGxldEVsZW1lbnRTSAp7CnByb3Rl
Y3RlZDoKICBuc0hUTUxQbHVnaW5PYmpFbGVtZW50U0gobnNET01DbGFzc0luZm9EYXRhKiBhRGF0
YSkgOiBuc0hUTUxBcHBsZXRFbGVtZW50U0goYURhdGEpCiAgewogIH0KCiAgdmlydHVhbCB+bnNI
VE1MUGx1Z2luT2JqRWxlbWVudFNIKCkKICB7CiAgfQoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBs
dWdpbkpTT2JqZWN0KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuc0lQbHVnaW5JbnN0YW5jZSAqcGx1Z2luX2luc3QsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqKnBsdWdpbl9vYmos
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqKnBsdWdpbl9w
cm90byk7CgpwdWJsaWM6CiAgdmlydHVhbCBuc3Jlc3VsdCBOZXdSZXNvbHZlKG5zSVhQQ29ubmVj
dFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAg
ICAgICAgIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLCBQUlVpbnQzMiBmbGFncywKICAgICAgICAg
ICAgICAgICAgICAgICAgSlNPYmplY3QgKipvYmpwLCBQUkJvb2wgKl9yZXR2YWwpOwoKICBzdGF0
aWMgbnNJQ2xhc3NJbmZvICpkb0NyZWF0ZShuc0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKQogIHsK
ICAgIHJldHVybiBuZXcgbnNIVE1MUGx1Z2luT2JqRWxlbWVudFNIKGFEYXRhKTsKICB9Cn07CgoK
CgpjbGFzcyBuc0hUTUxPcHRpb25Db2xsZWN0aW9uU0ggOiBwdWJsaWMgbnNIVE1MQ29sbGVjdGlv
blNICnsKcHJvdGVjdGVkOgogIG5zSFRNTE9wdGlvbkNvbGxlY3Rpb25TSChuc0RPTUNsYXNzSW5m
b0RhdGEqIGFEYXRhKSA6IG5zSFRNTENvbGxlY3Rpb25TSChhRGF0YSkKICB7CiAgfQoKICB2aXJ0
dWFsIH5uc0hUTUxPcHRpb25Db2xsZWN0aW9uU0goKQogIHsKICB9CgpwdWJsaWM6CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRQcm9wZXJ0eShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVy
LCBKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKm9iaiwg
anN2YWwgaWQsIGpzdmFsICp2cCwgUFJCb29sICpfcmV0dmFsKTsKCiAgc3RhdGljIG5zSUNsYXNz
SW5mbyAqZG9DcmVhdGUobnNET01DbGFzc0luZm9EYXRhKiBhRGF0YSkKICB7CiAgICByZXR1cm4g
bmV3IG5zSFRNTE9wdGlvbkNvbGxlY3Rpb25TSChhRGF0YSk7CiAgfQp9OwoKCgoKY2xhc3MgbnNQ
bHVnaW5TSCA6IHB1YmxpYyBuc05hbWVkQXJyYXlTSAp7CnByb3RlY3RlZDoKICBuc1BsdWdpblNI
KG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpIDogbnNOYW1lZEFycmF5U0goYURhdGEpCiAgewog
IH0KCiAgdmlydHVhbCB+bnNQbHVnaW5TSCgpCiAgewogIH0KCgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldEl0ZW1BdChuc0lTdXBwb3J0cyAqYU5hdGl2ZSwgUFJVaW50MzIgYUluZGV4LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzICoqYVJlc3VsdCk7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldE5hbWVkSXRlbShuc0lTdXBwb3J0cyAqYU5hdGl2ZSwgY29uc3QgbnNBU3Ry
aW5nJiBhTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdXBwb3J0cyAq
KmFSZXN1bHQpOwoKcHVibGljOgogIHN0YXRpYyBuc0lDbGFzc0luZm8gKmRvQ3JlYXRlKG5zRE9N
Q2xhc3NJbmZvRGF0YSogYURhdGEpCiAgewogICAgcmV0dXJuIG5ldyBuc1BsdWdpblNIKGFEYXRh
KTsKICB9Cn07CgoKCgpjbGFzcyBuc1BsdWdpbkFycmF5U0ggOiBwdWJsaWMgbnNOYW1lZEFycmF5
U0gKewpwcm90ZWN0ZWQ6CiAgbnNQbHVnaW5BcnJheVNIKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURh
dGEpIDogbnNOYW1lZEFycmF5U0goYURhdGEpCiAgewogIH0KCiAgdmlydHVhbCB+bnNQbHVnaW5B
cnJheVNIKCkKICB7CiAgfQoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SXRlbUF0KG5zSVN1cHBv
cnRzICphTmF0aXZlLCBQUlVpbnQzMiBhSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnNJU3VwcG9ydHMgKiphUmVzdWx0KTsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TmFtZWRJ
dGVtKG5zSVN1cHBvcnRzICphTmF0aXZlLCBjb25zdCBuc0FTdHJpbmcmIGFOYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzICoqYVJlc3VsdCk7CgpwdWJsaWM6
CiAgc3RhdGljIG5zSUNsYXNzSW5mbyAqZG9DcmVhdGUobnNET01DbGFzc0luZm9EYXRhKiBhRGF0
YSkKICB7CiAgICByZXR1cm4gbmV3IG5zUGx1Z2luQXJyYXlTSChhRGF0YSk7CiAgfQp9OwoKCgoK
Y2xhc3MgbnNNaW1lVHlwZUFycmF5U0ggOiBwdWJsaWMgbnNOYW1lZEFycmF5U0gKewpwcm90ZWN0
ZWQ6CiAgbnNNaW1lVHlwZUFycmF5U0gobnNET01DbGFzc0luZm9EYXRhKiBhRGF0YSkgOiBuc05h
bWVkQXJyYXlTSChhRGF0YSkKICB7CiAgfQoKICB2aXJ0dWFsIH5uc01pbWVUeXBlQXJyYXlTSCgp
CiAgewogIH0KCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEl0ZW1BdChuc0lTdXBwb3J0cyAqYU5h
dGl2ZSwgUFJVaW50MzIgYUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN1
cHBvcnRzICoqYVJlc3VsdCk7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5hbWVkSXRlbShuc0lT
dXBwb3J0cyAqYU5hdGl2ZSwgY29uc3QgbnNBU3RyaW5nJiBhTmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuc0lTdXBwb3J0cyAqKmFSZXN1bHQpOwoKcHVibGljOgogIHN0YXRp
YyBuc0lDbGFzc0luZm8gKmRvQ3JlYXRlKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpCiAgewog
ICAgcmV0dXJuIG5ldyBuc01pbWVUeXBlQXJyYXlTSChhRGF0YSk7CiAgfQp9OwoKCgoKY2xhc3Mg
bnNTdHJpbmdBcnJheVNIIDogcHVibGljIG5zRE9NQ2xhc3NJbmZvCnsKcHJvdGVjdGVkOgogIG5z
U3RyaW5nQXJyYXlTSChuc0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKSA6IG5zRE9NQ2xhc3NJbmZv
KGFEYXRhKQogIHsKICB9CgogIHZpcnR1YWwgfm5zU3RyaW5nQXJyYXlTSCgpCiAgewogIH0KCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRTdHJpbmdBdChuc0lTdXBwb3J0cyAqYU5hdGl2ZSwgUFJJbnQz
MiBhSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0FTdHJpbmcmIGFSZXN1
bHQpID0gMDsKCnB1YmxpYzoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByb3BlcnR5KG5zSVhQQ29u
bmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBKU09iamVjdCAqb2JqLCBqc3ZhbCBpZCwganN2YWwgKnZwLCBQUkJvb2wgKl9y
ZXR2YWwpOwp9OwoKCgoKY2xhc3MgbnNIaXN0b3J5U0ggOiBwdWJsaWMgbnNTdHJpbmdBcnJheVNI
CnsKcHJvdGVjdGVkOgogIG5zSGlzdG9yeVNIKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpIDog
bnNTdHJpbmdBcnJheVNIKGFEYXRhKQogIHsKICB9CgogIHZpcnR1YWwgfm5zSGlzdG9yeVNIKCkK
ICB7CiAgfQoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFN0cmluZ0F0KG5zSVN1cHBvcnRzICphTmF0
aXZlLCBQUkludDMyIGFJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zQVN0
cmluZyYgYVJlc3VsdCk7CgpwdWJsaWM6CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQcm9wZXJ0eShu
c0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAgICAg
ICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsIGpzdmFsICp2cCwgUFJC
b29sICpfcmV0dmFsKTsKCiAgc3RhdGljIG5zSUNsYXNzSW5mbyAqZG9DcmVhdGUobnNET01DbGFz
c0luZm9EYXRhKiBhRGF0YSkKICB7CiAgICByZXR1cm4gbmV3IG5zSGlzdG9yeVNIKGFEYXRhKTsK
ICB9Cn07CgoKCgpjbGFzcyBuc01lZGlhTGlzdFNIIDogcHVibGljIG5zU3RyaW5nQXJyYXlTSAp7
CnByb3RlY3RlZDoKICBuc01lZGlhTGlzdFNIKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpIDog
bnNTdHJpbmdBcnJheVNIKGFEYXRhKQogIHsKICB9CgogIHZpcnR1YWwgfm5zTWVkaWFMaXN0U0go
KQogIHsKICB9CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U3RyaW5nQXQobnNJU3VwcG9ydHMgKmFO
YXRpdmUsIFBSSW50MzIgYUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNB
U3RyaW5nJiBhUmVzdWx0KTsKCnB1YmxpYzoKICBzdGF0aWMgbnNJQ2xhc3NJbmZvICpkb0NyZWF0
ZShuc0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKQogIHsKICAgIHJldHVybiBuZXcgbnNNZWRpYUxp
c3RTSChhRGF0YSk7CiAgfQp9OwoKCgoKY2xhc3MgbnNTdHlsZVNoZWV0TGlzdFNIIDogcHVibGlj
IG5zQXJyYXlTSAp7CnByb3RlY3RlZDoKICBuc1N0eWxlU2hlZXRMaXN0U0gobnNET01DbGFzc0lu
Zm9EYXRhKiBhRGF0YSkgOiBuc0FycmF5U0goYURhdGEpCiAgewogIH0KCiAgdmlydHVhbCB+bnNT
dHlsZVNoZWV0TGlzdFNIKCkKICB7CiAgfQoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SXRlbUF0
KG5zSVN1cHBvcnRzICphTmF0aXZlLCBQUlVpbnQzMiBhSW5kZXgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnNJU3VwcG9ydHMgKiphUmVzdWx0KTsKCnB1YmxpYzoKICBzdGF0aWMgbnNJ
Q2xhc3NJbmZvICpkb0NyZWF0ZShuc0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKQogIHsKICAgIHJl
dHVybiBuZXcgbnNTdHlsZVNoZWV0TGlzdFNIKGFEYXRhKTsKICB9Cn07CgoKCgpjbGFzcyBuc0NT
U1ZhbHVlTGlzdFNIIDogcHVibGljIG5zQXJyYXlTSAp7CnByb3RlY3RlZDoKICBuc0NTU1ZhbHVl
TGlzdFNIKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpIDogbnNBcnJheVNIKGFEYXRhKQogIHsK
ICB9CgogIHZpcnR1YWwgfm5zQ1NTVmFsdWVMaXN0U0goKQogIHsKICB9CgoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRJdGVtQXQobnNJU3VwcG9ydHMgKmFOYXRpdmUsIFBSVWludDMyIGFJbmRleCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdXBwb3J0cyAqKmFSZXN1bHQpOwoKcHVi
bGljOgogIHN0YXRpYyBuc0lDbGFzc0luZm8gKmRvQ3JlYXRlKG5zRE9NQ2xhc3NJbmZvRGF0YSog
YURhdGEpCiAgewogICAgcmV0dXJuIG5ldyBuc0NTU1ZhbHVlTGlzdFNIKGFEYXRhKTsKICB9Cn07
CgoKCgpjbGFzcyBuc0NTU1N0eWxlRGVjbFNIIDogcHVibGljIG5zU3RyaW5nQXJyYXlTSAp7CnBy
b3RlY3RlZDoKICBuc0NTU1N0eWxlRGVjbFNIKG5zRE9NQ2xhc3NJbmZvRGF0YSogYURhdGEpIDog
bnNTdHJpbmdBcnJheVNIKGFEYXRhKQogIHsKICB9CgogIHZpcnR1YWwgfm5zQ1NTU3R5bGVEZWNs
U0goKQogIHsKICB9CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U3RyaW5nQXQobnNJU3VwcG9ydHMg
KmFOYXRpdmUsIFBSSW50MzIgYUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnNBU3RyaW5nJiBhUmVzdWx0KTsKCnB1YmxpYzoKICBzdGF0aWMgbnNJQ2xhc3NJbmZvICpkb0Ny
ZWF0ZShuc0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKQogIHsKICAgIHJldHVybiBuZXcgbnNDU1NT
dHlsZURlY2xTSChhRGF0YSk7CiAgfQp9OwoKCgoKY2xhc3MgbnNDU1NSdWxlTGlzdFNIIDogcHVi
bGljIG5zQXJyYXlTSAp7CnByb3RlY3RlZDoKICBuc0NTU1J1bGVMaXN0U0gobnNET01DbGFzc0lu
Zm9EYXRhKiBhRGF0YSkgOiBuc0FycmF5U0goYURhdGEpCiAgewogIH0KCiAgdmlydHVhbCB+bnND
U1NSdWxlTGlzdFNIKCkKICB7CiAgfQoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SXRlbUF0KG5z
SVN1cHBvcnRzICphTmF0aXZlLCBQUlVpbnQzMiBhSW5kZXgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnNJU3VwcG9ydHMgKiphUmVzdWx0KTsKCnB1YmxpYzoKICBzdGF0aWMgbnNJQ2xh
c3NJbmZvICpkb0NyZWF0ZShuc0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKQogIHsKICAgIHJldHVy
biBuZXcgbnNDU1NSdWxlTGlzdFNIKGFEYXRhKTsKICB9Cn07CiMgMTEzMCAibnNET01DbGFzc0lu
Zm8uaCIKY2xhc3MgbnNFdmVudExpc3RlbmVyVGhpc1RyYW5zbGF0b3IgOiBwdWJsaWMgbnNJWFBD
RnVuY3Rpb25UaGlzVHJhbnNsYXRvcgp7CnB1YmxpYzoKICBuc0V2ZW50TGlzdGVuZXJUaGlzVHJh
bnNsYXRvcigpCiAgewogIH0KCiAgdmlydHVhbCB+bnNFdmVudExpc3RlbmVyVGhpc1RyYW5zbGF0
b3IoKQogIHsKICB9CgoKICBwdWJsaWM6IHZpcnR1YWwgbnNyZXN1bHQgUXVlcnlJbnRlcmZhY2Uo
Y29uc3QgbnNJSUQmIGFJSUQsIHZvaWQqKiBhSW5zdGFuY2VQdHIpOyB2aXJ0dWFsIG5zcmVmY250
IEFkZFJlZih2b2lkKTsgdmlydHVhbCBuc3JlZmNudCBSZWxlYXNlKHZvaWQpOyBwcm90ZWN0ZWQ6
IG5zQXV0b1JlZkNudCBtUmVmQ250OyBwdWJsaWM6CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFRyYW5z
bGF0ZVRoaXMobnNJU3VwcG9ydHMgKmFJbml0aWFsVGhpcywgbnNJSW50ZXJmYWNlSW5mbyAqYUlu
dGVyZmFjZUluZm8sIFBSVWludDE2IGFNZXRob2RJbmRleCwgUFJCb29sICphSGlkZUZpcnN0UGFy
YW1Gcm9tSlMsIG5zSUlEICogKmFJSURPZlJlc3VsdCwgbnNJU3VwcG9ydHMgKipfcmV0dmFsKTsK
fTsKCgp2b2lkIEludmFsaWRhdGVDb250ZXh0QW5kV3JhcHBlckNhY2hlKCk7CiMgNDIgIm5zRE9N
Q2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0NSVC5o
IiAxCiMgNDIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0NSVC5oIgojIDEgIi92YXIv
dG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3By
L3Bsc3RyLmgiIDEKIyA2MSAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21v
emlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcGxzdHIuaCIKZXh0ZXJuICJDIiB7CgoKCgoKCmV4dGVy
biBQUlVpbnQzMgpQTF9zdHJsZW4oY29uc3QgY2hhciAqc3RyKTsKIyA3OSAiL3Zhci90bXAvcG9y
dGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcGxzdHIu
aCIKZXh0ZXJuIFBSVWludDMyClBMX3N0cm5sZW4oY29uc3QgY2hhciAqc3RyLCBQUlVpbnQzMiBt
YXgpOwojIDkwICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9k
aXN0L2luY2x1ZGUvbnNwci9wbHN0ci5oIgpleHRlcm4gY2hhciAqClBMX3N0cmNweShjaGFyICpk
ZXN0LCBjb25zdCBjaGFyICpzcmMpOwojIDEwMyAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEu
My1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcGxzdHIuaCIKZXh0ZXJuIGNoYXIg
KgpQTF9zdHJuY3B5KGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgUFJVaW50MzIgbWF4KTsK
IyAxMjYgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3Qv
aW5jbHVkZS9uc3ByL3Bsc3RyLmgiCmV4dGVybiBjaGFyICoKUExfc3RybmNweXooY2hhciAqZGVz
dCwgY29uc3QgY2hhciAqc3JjLCBQUlVpbnQzMiBtYXgpOwojIDE0MCAiL3Zhci90bXAvcG9ydGFn
ZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcGxzdHIuaCIK
ZXh0ZXJuIGNoYXIgKgpQTF9zdHJkdXAoY29uc3QgY2hhciAqcyk7CgoKCgoKCgpleHRlcm4gdm9p
ZApQTF9zdHJmcmVlKGNoYXIgKnMpOwojIDE2NCAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEu
My1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcGxzdHIuaCIKZXh0ZXJuIGNoYXIg
KgpQTF9zdHJuZHVwKGNvbnN0IGNoYXIgKnMsIFBSVWludDMyIG1heCk7CiMgMTc2ICIvdmFyL3Rt
cC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9w
bHN0ci5oIgpleHRlcm4gY2hhciAqClBMX3N0cmNhdChjaGFyICpkc3QsIGNvbnN0IGNoYXIgKnNy
Yyk7CiMgMTkxICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9k
aXN0L2luY2x1ZGUvbnNwci9wbHN0ci5oIgpleHRlcm4gY2hhciAqClBMX3N0cm5jYXQoY2hhciAq
ZHN0LCBjb25zdCBjaGFyICpzcmMsIFBSVWludDMyIG1heCk7CiMgMjA1ICIvdmFyL3RtcC9wb3J0
YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wbHN0ci5o
IgpleHRlcm4gY2hhciAqClBMX3N0cmNhdG4oY2hhciAqZHN0LCBQUlVpbnQzMiBtYXgsIGNvbnN0
IGNoYXIgKnNyYyk7CiMgMjE3ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsv
bW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wbHN0ci5oIgpleHRlcm4gUFJJbnRuClBMX3N0cmNt
cChjb25zdCBjaGFyICphLCBjb25zdCBjaGFyICpiKTsKIyAyMzEgIi92YXIvdG1wL3BvcnRhZ2Uv
bW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3Bsc3RyLmgiCmV4
dGVybiBQUkludG4KUExfc3RybmNtcChjb25zdCBjaGFyICphLCBjb25zdCBjaGFyICpiLCBQUlVp
bnQzMiBtYXgpOwojIDI0MyAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21v
emlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcGxzdHIuaCIKZXh0ZXJuIFBSSW50bgpQTF9zdHJjYXNl
Y21wKGNvbnN0IGNoYXIgKmEsIGNvbnN0IGNoYXIgKmIpOwojIDI1NSAiL3Zhci90bXAvcG9ydGFn
ZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcGxzdHIuaCIK
ZXh0ZXJuIFBSSW50bgpQTF9zdHJuY2FzZWNtcChjb25zdCBjaGFyICphLCBjb25zdCBjaGFyICpi
LCBQUlVpbnQzMiBtYXgpOwojIDI2NiAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93
b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcGxzdHIuaCIKZXh0ZXJuIGNoYXIgKgpQTF9z
dHJjaHIoY29uc3QgY2hhciAqcywgY2hhciBjKTsKIyAyNzcgIi92YXIvdG1wL3BvcnRhZ2UvbW96
aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3Bsc3RyLmgiCmV4dGVy
biBjaGFyICoKUExfc3RycmNocihjb25zdCBjaGFyICpzLCBjaGFyIGMpOwojIDI4OSAiL3Zhci90
bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIv
cGxzdHIuaCIKZXh0ZXJuIGNoYXIgKgpQTF9zdHJuY2hyKGNvbnN0IGNoYXIgKnMsIGNoYXIgYywg
UFJVaW50MzIgbik7CiMgMzAxICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsv
bW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wbHN0ci5oIgpleHRlcm4gY2hhciAqClBMX3N0cm5y
Y2hyKGNvbnN0IGNoYXIgKnMsIGNoYXIgYywgUFJVaW50MzIgbik7CiMgMzE3ICIvdmFyL3RtcC9w
b3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wbHN0
ci5oIgpleHRlcm4gY2hhciAqClBMX3N0cnBicmsoY29uc3QgY2hhciAqcywgY29uc3QgY2hhciAq
bGlzdCk7CiMgMzI4ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxs
YS9kaXN0L2luY2x1ZGUvbnNwci9wbHN0ci5oIgpleHRlcm4gY2hhciAqClBMX3N0cnByYnJrKGNv
bnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmxpc3QpOwojIDMzOSAiL3Zhci90bXAvcG9ydGFnZS9t
b3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcGxzdHIuaCIKZXh0
ZXJuIGNoYXIgKgpQTF9zdHJucGJyayhjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICpsaXN0LCBQ
UlVpbnQzMiBuKTsKIyAzNTAgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9t
b3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3Bsc3RyLmgiCmV4dGVybiBjaGFyICoKUExfc3RybnBy
YnJrKGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmxpc3QsIFBSVWludDMyIG4pOwojIDM2MCAi
L3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRl
L25zcHIvcGxzdHIuaCIKZXh0ZXJuIGNoYXIgKgpQTF9zdHJzdHIoY29uc3QgY2hhciAqYmlnLCBj
b25zdCBjaGFyICpsaXR0bGUpOwojIDM3MCAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1y
MS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcGxzdHIuaCIKZXh0ZXJuIGNoYXIgKgpQ
TF9zdHJyc3RyKGNvbnN0IGNoYXIgKmJpZywgY29uc3QgY2hhciAqbGl0dGxlKTsKIyAzODEgIi92
YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9u
c3ByL3Bsc3RyLmgiCmV4dGVybiBjaGFyICoKUExfc3RybnN0cihjb25zdCBjaGFyICpiaWcsIGNv
bnN0IGNoYXIgKmxpdHRsZSwgUFJVaW50MzIgbik7CiMgMzkyICIvdmFyL3RtcC9wb3J0YWdlL21v
emlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wbHN0ci5oIgpleHRl
cm4gY2hhciAqClBMX3N0cm5yc3RyKGNvbnN0IGNoYXIgKmJpZywgY29uc3QgY2hhciAqbGl0dGxl
LCBQUlVpbnQzMiBtYXgpOwojIDQwMiAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93
b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcGxzdHIuaCIKZXh0ZXJuIGNoYXIgKgpQTF9z
dHJjYXNlc3RyKGNvbnN0IGNoYXIgKmJpZywgY29uc3QgY2hhciAqbGl0dGxlKTsKIyA0MTIgIi92
YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9u
c3ByL3Bsc3RyLmgiCmV4dGVybiBjaGFyICoKUExfc3RyY2FzZXJzdHIoY29uc3QgY2hhciAqYmln
LCBjb25zdCBjaGFyICpsaXR0bGUpOwojIDQyMyAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEu
My1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcGxzdHIuaCIKZXh0ZXJuIGNoYXIg
KgpQTF9zdHJuY2FzZXN0cihjb25zdCBjaGFyICpiaWcsIGNvbnN0IGNoYXIgKmxpdHRsZSwgUFJV
aW50MzIgbWF4KTsKIyA0MzQgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9t
b3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3Bsc3RyLmgiCmV4dGVybiBjaGFyICoKUExfc3RybmNh
c2Vyc3RyKGNvbnN0IGNoYXIgKmJpZywgY29uc3QgY2hhciAqbGl0dGxlLCBQUlVpbnQzMiBtYXgp
OwojIDQ1NiAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlz
dC9pbmNsdWRlL25zcHIvcGxzdHIuaCIKZXh0ZXJuIGNoYXIgKgpQTF9zdHJ0b2tfcihjaGFyICpz
MSwgY29uc3QgY2hhciAqczIsIGNoYXIgKipsYXN0cyk7CgoKCgoKCgp9CiMgNDMgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS94cGNvbS9uc0NSVC5oIiAyCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUveHBjb20vbnNDcHBTaGFyZWRBbGxvY2F0b3IuaCIgMQojIDIzICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUveHBjb20vbnNDcHBTaGFyZWRBbGxvY2F0b3IuaCIKIyAxICIvdXNyL2xpYi9nY2MtbGli
L2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvbGltaXRzLmgiIDEgMwojIDExICIvdXNy
L2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvbGltaXRzLmgiIDMK
IyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvc3lz
bGltaXRzLmgiIDEgMwoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1n
bnUvMy4yLjIvaW5jbHVkZS9saW1pdHMuaCIgMSAzCiMgMTMyICIvdXNyL2xpYi9nY2MtbGliL2k1
ODYtcGMtbGludXgtZ251LzMuMi4yL2luY2x1ZGUvbGltaXRzLmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvbGltaXRzLmgiIDEgMwojIDE0NCAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvcG9zaXgxX2xpbS5oIiAxIDMKIyAxMjYgIi91c3IvaW5jbHVkZS9iaXRz
L3Bvc2l4MV9saW0uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2xvY2FsX2xpbS5oIiAxIDMK
IyAzNiAiL3Vzci9pbmNsdWRlL2JpdHMvbG9jYWxfbGltLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUv
bGludXgvbGltaXRzLmgiIDEgMwojIDM3ICIvdXNyL2luY2x1ZGUvYml0cy9sb2NhbF9saW0uaCIg
MiAzCiMgMTI3ICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDIgMwojIDE0NSAiL3Vz
ci9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDJf
bGltLmgiIDEgMwojIDE0OSAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKCgoKIyAxICIvdXNy
L2luY2x1ZGUvYml0cy94b3Blbl9saW0uaCIgMSAzCiMgMzQgIi91c3IvaW5jbHVkZS9iaXRzL3hv
cGVuX2xpbS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW9fbGltLmgiIDEgMwojIDM1
ICIvdXNyL2luY2x1ZGUvYml0cy94b3Blbl9saW0uaCIgMiAzCiMgMTM2ICIvdXNyL2luY2x1ZGUv
Yml0cy94b3Blbl9saW0uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dvcmRzaXplLmgiIDEg
MwojIDEzNyAiL3Vzci9pbmNsdWRlL2JpdHMveG9wZW5fbGltLmgiIDIgMwojIDE1MyAiL3Vzci9p
bmNsdWRlL2xpbWl0cy5oIiAyIDMKIyAxMzMgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51
eC1nbnUvMy4yLjIvaW5jbHVkZS9saW1pdHMuaCIgMiAzCiMgOCAiL3Vzci9saWIvZ2NjLWxpYi9p
NTg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N5c2xpbWl0cy5oIiAyIDMKIyAxMiAiL3Vz
ci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL2xpbWl0cy5oIiAy
IDMKIyAyNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zQ3BwU2hhcmVkQWxsb2NhdG9y
LmgiIDIKCgoKdGVtcGxhdGUgPGNsYXNzIFQ+CmNsYXNzIG5zQ3BwU2hhcmVkQWxsb2NhdG9yCgoK
CgogIHsKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7CiAgICAgIHR5cGVk
ZWYgc2l6ZV90IHNpemVfdHlwZTsKICAgICAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90
eXBlOwoKICAgICAgdHlwZWRlZiBUKiBwb2ludGVyOwogICAgICB0eXBlZGVmIGNvbnN0IFQqIGNv
bnN0X3BvaW50ZXI7CgogICAgICB0eXBlZGVmIFQmIHJlZmVyZW5jZTsKICAgICAgdHlwZWRlZiBj
b25zdCBUJiBjb25zdF9yZWZlcmVuY2U7CgoKCiAgICAgIG5zQ3BwU2hhcmVkQWxsb2NhdG9yKCkg
eyB9CgoKCgoKCiAgICAgfm5zQ3BwU2hhcmVkQWxsb2NhdG9yKCkgeyB9CgoKICAgICAgcG9pbnRl
cgogICAgICBhZGRyZXNzKCByZWZlcmVuY2UgciApIGNvbnN0CiAgICAgICAgewogICAgICAgICAg
cmV0dXJuICZyOwogICAgICAgIH0KCiAgICAgIGNvbnN0X3BvaW50ZXIKICAgICAgYWRkcmVzcygg
Y29uc3RfcmVmZXJlbmNlIHIgKSBjb25zdAogICAgICAgIHsKICAgICAgICAgIHJldHVybiAmcjsK
ICAgICAgICB9CgogICAgICBwb2ludGVyCiAgICAgIGFsbG9jYXRlKCBzaXplX3R5cGUgbiwgY29u
c3Qgdm9pZCogPTAgKQogICAgICAgIHsKICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PCBwb2ludGVyID4obnNNZW1vcnk6OkFsbG9jKHN0YXRpY19jYXN0PCBQUlVpbnQzMiA+KG4qc2l6
ZW9mKFQpKSkpOwogICAgICAgIH0KCiAgICAgIHZvaWQKICAgICAgZGVhbGxvY2F0ZSggcG9pbnRl
ciBwLCBzaXplX3R5cGUgKQogICAgICAgIHsKICAgICAgICAgIG5zTWVtb3J5OjpGcmVlKHApOwog
ICAgICAgIH0KCiAgICAgIHZvaWQKICAgICAgY29uc3RydWN0KCBwb2ludGVyIHAsIGNvbnN0IFQm
IHZhbCApCiAgICAgICAgewogICAgICAgICAgbmV3IChwKSBUKHZhbCk7CiAgICAgICAgfQoKICAg
ICAgdm9pZAogICAgICBkZXN0cm95KCBwb2ludGVyIHAgKQogICAgICAgIHsKICAgICAgICAgIHAt
Pn5UKCk7CiAgICAgICAgfQoKICAgICAgc2l6ZV90eXBlCiAgICAgIG1heF9zaXplKCkgY29uc3QK
ICAgICAgICB7CgoKCiAgICAgICAgICByZXR1cm4gKDIxNDc0ODM2NDdMICogMlVMICsgMSkgLyBz
aXplb2YoVCk7CgogICAgICAgIH0KIyAxMTAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9u
c0NwcFNoYXJlZEFsbG9jYXRvci5oIgogIH07CgoKdGVtcGxhdGUgPGNsYXNzIFQ+ClBSQm9vbApv
cGVyYXRvcj09KCBjb25zdCBuc0NwcFNoYXJlZEFsbG9jYXRvcjxUPiYsIGNvbnN0IG5zQ3BwU2hh
cmVkQWxsb2NhdG9yPFQ+JiApCiAgewogICAgcmV0dXJuIDE7CiAgfQoKdGVtcGxhdGUgPGNsYXNz
IFQ+ClBSQm9vbApvcGVyYXRvciE9KCBjb25zdCBuc0NwcFNoYXJlZEFsbG9jYXRvcjxUPiYsIGNv
bnN0IG5zQ3BwU2hhcmVkQWxsb2NhdG9yPFQ+JiApCiAgewogICAgcmV0dXJuIDA7CiAgfQojIDQ2
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNDUlQuaCIgMgojIDYyICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUveHBjb20vbnNDUlQuaCIKZXh0ZXJuIGNvbnN0IFBSVW5pY2hhciBrSXNvTGF0
aW4xVG9VQ1MyWzI1Nl07CiMgMTAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNDUlQu
aCIKY2xhc3MgbnNDUlQgewpwdWJsaWM6CiAgZW51bSB7CiAgICBUQUI9J1x0JyAsCiAgICBMRj0n
XG4nICwKICAgIFZUQUI9J1x2JyAsCiAgICBGRj0nXGYnICwKICAgIENSPSdccicKICB9OwojIDEz
NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zQ1JULmgiCiAgc3RhdGljIFBSVWludDMy
IHN0cmxlbihjb25zdCBjaGFyKiBzKSB7CiAgICByZXR1cm4gUFJVaW50MzIoOjpzdHJsZW4ocykp
OwogIH0KCgogIHN0YXRpYyBQUkludDMyIHN0cmNtcChjb25zdCBjaGFyKiBzMSwgY29uc3QgY2hh
ciogczIpIHsKICAgIHJldHVybiBQUkludDMyKFBMX3N0cmNtcChzMSwgczIpKTsKICB9CgogIHN0
YXRpYyBQUkludDMyIHN0cm5jbXAoY29uc3QgY2hhciogczEsIGNvbnN0IGNoYXIqIHMyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgUFJVaW50MzIgYU1heExlbikgewogICAgcmV0dXJuIFBSSW50
MzIoUExfc3RybmNtcChzMSwgczIsIGFNYXhMZW4pKTsKICB9CgoKICBzdGF0aWMgUFJJbnQzMiBz
dHJjYXNlY21wKGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBzMikgewogICAgcmV0dXJuIFBS
SW50MzIoUExfc3RyY2FzZWNtcChzMSwgczIpKTsKICB9CgoKICBzdGF0aWMgUFJJbnQzMiBzdHJu
Y2FzZWNtcChjb25zdCBjaGFyKiBzMSwgY29uc3QgY2hhciogczIsIFBSVWludDMyIGFNYXhMZW4p
IHsKICAgIFBSSW50MzIgcmVzdWx0PVBSSW50MzIoUExfc3RybmNhc2VjbXAoczEsIHMyLCBhTWF4
TGVuKSk7CgoKICAgIGlmIChyZXN1bHQ8MCkKICAgICAgcmVzdWx0PS0xOwogICAgcmV0dXJuIHJl
c3VsdDsKICB9CgogIHN0YXRpYyBQUkludDMyIHN0cm5jbXAoY29uc3QgY2hhciogczEsIGNvbnN0
IGNoYXIqIHMyLCBQUkludDMyIGFNYXhMZW4pIHsKCiAgICBQUkludDMyIGRpZmYgPSAoKGNvbnN0
IHVuc2lnbmVkIGNoYXIqKXMxKVswXSAtICgoY29uc3QgdW5zaWduZWQgY2hhciopczIpWzBdOwog
ICAgaWYgKGRpZmYgIT0gMCkgcmV0dXJuIGRpZmY7CiAgICByZXR1cm4gUFJJbnQzMihQTF9zdHJu
Y21wKHMxLHMyLHVuc2lnbmVkKGFNYXhMZW4pKSk7CiAgfQoKICBzdGF0aWMgY2hhciogc3RyZHVw
KGNvbnN0IGNoYXIqIHN0cikgewogICAgcmV0dXJuIFBMX3N0cmR1cChzdHIpOwogIH0KCiAgc3Rh
dGljIGNoYXIqIHN0cm5kdXAoY29uc3QgY2hhciogc3RyLCBQUlVpbnQzMiBsZW4pIHsKICAgIHJl
dHVybiBQTF9zdHJuZHVwKHN0ciwgbGVuKTsKICB9CgogIHN0YXRpYyB2b2lkIGZyZWUoY2hhciog
c3RyKSB7CiAgICBQTF9zdHJmcmVlKHN0cik7CiAgfQojIDIwMSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL3hwY29tL25zQ1JULmgiCiAgc3RhdGljIGNoYXIqIHN0cnRvayhjaGFyKiBzdHIsIGNvbnN0
IGNoYXIqIGRlbGltcywgY2hhciogKm5ld1N0cik7CgoKICBzdGF0aWMgUFJVaW50MzIgc3RybGVu
KGNvbnN0IFBSVW5pY2hhciogcyk7CgoKICBzdGF0aWMgUFJJbnQzMiBzdHJjbXAoY29uc3QgUFJV
bmljaGFyKiBzMSwgY29uc3QgUFJVbmljaGFyKiBzMik7CgogIHN0YXRpYyBQUkludDMyIHN0cm5j
bXAoY29uc3QgUFJVbmljaGFyKiBzMSwgY29uc3QgUFJVbmljaGFyKiBzMiwKICAgICAgICAgICAg
ICAgICAgICAgICAgIFBSVWludDMyIGFNYXhMZW4pOwoKCgogIHN0YXRpYyBQUlVuaWNoYXIqIHN0
cmR1cChjb25zdCBQUlVuaWNoYXIqIHN0cik7CgoKCiAgc3RhdGljIFBSVW5pY2hhciogc3RybmR1
cChjb25zdCBQUlVuaWNoYXIqIHN0ciwgUFJVaW50MzIgbGVuKTsKCiAgc3RhdGljIHZvaWQgZnJl
ZShQUlVuaWNoYXIqIHN0cikgewogICAgICAgIG5zQ3BwU2hhcmVkQWxsb2NhdG9yPFBSVW5pY2hh
cj4gc2hhcmVkX2FsbG9jYXRvcjsKICAgICAgICBzaGFyZWRfYWxsb2NhdG9yLmRlYWxsb2NhdGUo
c3RyLCAwICk7CiAgfQoKCgogIHN0YXRpYyBQUlVpbnQzMiBIYXNoQ29kZShjb25zdCBjaGFyKiBz
dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSVWludDMyKiByZXN1bHRpbmdTdHJMZW4g
PSAwKTsKCgoKICBzdGF0aWMgUFJVaW50MzIgSGFzaENvZGUoY29uc3QgUFJVbmljaGFyKiBzdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSVWludDMyKiByZXN1bHRpbmdTdHJMZW4gPSAw
KTsKCgoKCiAgc3RhdGljIFBSVWludDMyIEhhc2hDb2RlQXNVVEY4KGNvbnN0IFBSVW5pY2hhciog
c3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUlVpbnQzMiogcmVzdWx0aW5n
U3RyTGVuID0gMCk7CgoKICBzdGF0aWMgUFJVaW50MzIgQnVmZmVySGFzaENvZGUoY29uc3QgY2hh
ciogc3RyLCBQUlVpbnQzMiBzdHJMZW4pOwoKCiAgc3RhdGljIFBSVWludDMyIEJ1ZmZlckhhc2hD
b2RlKGNvbnN0IFBSVW5pY2hhciogc3RyLCBQUlVpbnQzMiBzdHJMZW4pOwoKCiAgc3RhdGljIFBS
SW50NjQgYXRvbGwoY29uc3QgY2hhciAqc3RyKTsKCiAgc3RhdGljIGNoYXIgVG9VcHBlcihjaGFy
IGFDaGFyKTsKCiAgc3RhdGljIGNoYXIgVG9Mb3dlcihjaGFyIGFDaGFyKTsKCiAgc3RhdGljIFBS
Qm9vbCBJc1VwcGVyKGNoYXIgYUNoYXIpOwoKICBzdGF0aWMgUFJCb29sIElzTG93ZXIoY2hhciBh
Q2hhcik7CgogIHN0YXRpYyBQUkJvb2wgSXNBc2NpaShQUlVuaWNoYXIgYUNoYXIpOwogIHN0YXRp
YyBQUkJvb2wgSXNBc2NpaShjb25zdCBQUlVuaWNoYXIqIGFTdHJpbmcpOwogIHN0YXRpYyBQUkJv
b2wgSXNBc2NpaUFscGhhKFBSVW5pY2hhciBhQ2hhcik7CiAgc3RhdGljIFBSQm9vbCBJc0FzY2lp
RGlnaXQoUFJVbmljaGFyIGFDaGFyKTsKICBzdGF0aWMgUFJCb29sIElzQXNjaWlTcGFjZShQUlVu
aWNoYXIgYUNoYXIpOwogIHN0YXRpYyBQUkJvb2wgSXNBc2NpaShjb25zdCBjaGFyKiBhU3RyaW5n
KTsKfTsKIyA0MyAibnNET01DbGFzc0luZm8uY3BwIiAyCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS94cGNvbS9uc0lDYXRlZ29yeU1hbmFnZXIuaCIgMQojIDI5ICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUveHBjb20vbnNJQ2F0ZWdvcnlNYW5hZ2VyLmgiCmNsYXNzIG5zSUNhdGVnb3J5TWFuYWdl
ciA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYg
R2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgzMjc1YjJjZCwgMHhhZjZkLCAw
eDQyOWEsIHsgMHg4MCwgMHhkNywgMHhmMCwgMHhjNSwgMHgxMiwgMHgwMywgMHg0MiwgMHhhYyB9
fTsgcmV0dXJuIGlpZDt9CiMgNDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDYXRl
Z29yeU1hbmFnZXIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENhdGVnb3J5RW50cnkoY29uc3Qg
Y2hhciAqYUNhdGVnb3J5LCBjb25zdCBjaGFyICphRW50cnksIGNoYXIgKipfcmV0dmFsKSA9IDA7
CiMgNTMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDYXRlZ29yeU1hbmFnZXIuaCIK
ICB2aXJ0dWFsIG5zcmVzdWx0IEFkZENhdGVnb3J5RW50cnkoY29uc3QgY2hhciAqYUNhdGVnb3J5
LCBjb25zdCBjaGFyICphRW50cnksIGNvbnN0IGNoYXIgKmFWYWx1ZSwgUFJCb29sIGFQZXJzaXN0
LCBQUkJvb2wgYVJlcGxhY2UsIGNoYXIgKipfcmV0dmFsKSA9IDA7CiMgNjIgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS94cGNvbS9uc0lDYXRlZ29yeU1hbmFnZXIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0
IERlbGV0ZUNhdGVnb3J5RW50cnkoY29uc3QgY2hhciAqYUNhdGVnb3J5LCBjb25zdCBjaGFyICph
RW50cnksIFBSQm9vbCBhUGVyc2lzdCkgPSAwOwoKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IERl
bGV0ZUNhdGVnb3J5KGNvbnN0IGNoYXIgKmFDYXRlZ29yeSkgPSAwOwoKCgoKCgogIHZpcnR1YWwg
bnNyZXN1bHQgRW51bWVyYXRlQ2F0ZWdvcnkoY29uc3QgY2hhciAqYUNhdGVnb3J5LCBuc0lTaW1w
bGVFbnVtZXJhdG9yICoqX3JldHZhbCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgRW51
bWVyYXRlQ2F0ZWdvcmllcyhuc0lTaW1wbGVFbnVtZXJhdG9yICoqX3JldHZhbCkgPSAwOwoKfTsK
IyA0NSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29tL25zSUNvbXBvbmVudFJlZ2lzdHJhci5oIiAxCiMgMTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS94cGNvbS9uc0lDb21wb25lbnRSZWdpc3RyYXIuaCIKY2xhc3MgbnNJRmlsZTsKCmNsYXNzIG5z
SUZhY3Rvcnk7CgpjbGFzcyBuc0lTaW1wbGVFbnVtZXJhdG9yOwojIDMxICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUveHBjb20vbnNJQ29tcG9uZW50UmVnaXN0cmFyLmgiCmNsYXNzIG5zSUNvbXBvbmVu
dFJlZ2lzdHJhciA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25z
dCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgyNDE3Y2JmZSwg
MHg2NWFkLCAweDQ4YTYsIHsgMHhiNCwgMHhiNiwgMHhlYiwgMHg4NCwgMHhkYiwgMHgxNywgMHg0
MywgMHg5MiB9fTsgcmV0dXJuIGlpZDt9CiMgNTkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNv
bS9uc0lDb21wb25lbnRSZWdpc3RyYXIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEF1dG9SZWdpc3Rl
cihuc0lGaWxlICphU3BlYykgPSAwOwojIDc4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20v
bnNJQ29tcG9uZW50UmVnaXN0cmFyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBBdXRvVW5yZWdpc3Rl
cihuc0lGaWxlICphU3BlYykgPSAwOwojIDk0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20v
bnNJQ29tcG9uZW50UmVnaXN0cmFyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBSZWdpc3RlckZhY3Rv
cnkoY29uc3QgbnNDSUQgJiBhQ2xhc3MsIGNvbnN0IGNoYXIgKmFDbGFzc05hbWUsIGNvbnN0IGNo
YXIgKmFDb250cmFjdElELCBuc0lGYWN0b3J5ICphRmFjdG9yeSkgPSAwOwojIDEwOSAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUNvbXBvbmVudFJlZ2lzdHJhci5oIgogIHZpcnR1YWwg
bnNyZXN1bHQgVW5yZWdpc3RlckZhY3RvcnkoY29uc3QgbnNDSUQgJiBhQ2xhc3MsIG5zSUZhY3Rv
cnkgKmFGYWN0b3J5KSA9IDA7CiMgMTM1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJ
Q29tcG9uZW50UmVnaXN0cmFyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBSZWdpc3RlckZhY3RvcnlM
b2NhdGlvbihjb25zdCBuc0NJRCAmIGFDbGFzcywgY29uc3QgY2hhciAqYUNsYXNzTmFtZSwgY29u
c3QgY2hhciAqYUNvbnRyYWN0SUQsIG5zSUZpbGUgKmFGaWxlLCBjb25zdCBjaGFyICphTG9hZGVy
U3RyLCBjb25zdCBjaGFyICphVHlwZSkgPSAwOwojIDE0OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3hwY29tL25zSUNvbXBvbmVudFJlZ2lzdHJhci5oIgogIHZpcnR1YWwgbnNyZXN1bHQgVW5yZWdp
c3RlckZhY3RvcnlMb2NhdGlvbihjb25zdCBuc0NJRCAmIGFDbGFzcywgbnNJRmlsZSAqYUZpbGUp
ID0gMDsKIyAxNjEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb21wb25lbnRSZWdp
c3RyYXIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IElzQ0lEUmVnaXN0ZXJlZChjb25zdCBuc0NJRCAm
IGFDbGFzcywgUFJCb29sICpfcmV0dmFsKSA9IDA7CiMgMTczICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUveHBjb20vbnNJQ29tcG9uZW50UmVnaXN0cmFyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBJc0Nv
bnRyYWN0SURSZWdpc3RlcmVkKGNvbnN0IGNoYXIgKmFDb250cmFjdElELCBQUkJvb2wgKl9yZXR2
YWwpID0gMDsKIyAxODUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb21wb25lbnRS
ZWdpc3RyYXIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEVudW1lcmF0ZUNJRHMobnNJU2ltcGxlRW51
bWVyYXRvciAqKl9yZXR2YWwpID0gMDsKIyAxOTggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNv
bS9uc0lDb21wb25lbnRSZWdpc3RyYXIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEVudW1lcmF0ZUNv
bnRyYWN0SURzKG5zSVNpbXBsZUVudW1lcmF0b3IgKipfcmV0dmFsKSA9IDA7CiMgMjA4ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJQ29tcG9uZW50UmVnaXN0cmFyLmgiCiAgdmlydHVh
bCBuc3Jlc3VsdCBDSURUb0NvbnRyYWN0SUQoY29uc3QgbnNDSUQgJiBhQ2xhc3MsIGNoYXIgKipf
cmV0dmFsKSA9IDA7CiMgMjE4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJQ29tcG9u
ZW50UmVnaXN0cmFyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBDb250cmFjdElEVG9DSUQoY29uc3Qg
Y2hhciAqYUNvbnRyYWN0SUQsIG5zQ0lEICogKl9yZXR2YWwpID0gMDsKCn07CiMgNDYgIm5zRE9N
Q2xhc3NJbmZvLmNwcCIgMgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJU3Vw
cG9ydHNQcmltaXRpdmVzLmgiIDEKIyAzMyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25z
SVN1cHBvcnRzUHJpbWl0aXZlcy5oIgpjbGFzcyBuc0lTdXBwb3J0c1ByaW1pdGl2ZSA6IHB1Ymxp
YyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkg
e3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhkMGQ0YjEzNiwgMHgxZGQxLCAweDExYjIsIHsg
MHg5MywgMHg3MSwgMHhmMCwgMHg3MiwgMHg3ZSwgMHhmOCwgMHgyNywgMHhjMCB9fTsgcmV0dXJu
IGlpZDt9CgogIGVudW0geyBUWVBFX0lEID0gMVUgfTsKCiAgZW51bSB7IFRZUEVfQ1NUUklORyA9
IDJVIH07CgogIGVudW0geyBUWVBFX1NUUklORyA9IDNVIH07CgogIGVudW0geyBUWVBFX1BSQk9P
TCA9IDRVIH07CgogIGVudW0geyBUWVBFX1BSVUlOVDggPSA1VSB9OwoKICBlbnVtIHsgVFlQRV9Q
UlVJTlQxNiA9IDZVIH07CgogIGVudW0geyBUWVBFX1BSVUlOVDMyID0gN1UgfTsKCiAgZW51bSB7
IFRZUEVfUFJVSU5UNjQgPSA4VSB9OwoKICBlbnVtIHsgVFlQRV9QUlRJTUUgPSA5VSB9OwoKICBl
bnVtIHsgVFlQRV9DSEFSID0gMTBVIH07CgogIGVudW0geyBUWVBFX1BSSU5UMTYgPSAxMVUgfTsK
CiAgZW51bSB7IFRZUEVfUFJJTlQzMiA9IDEyVSB9OwoKICBlbnVtIHsgVFlQRV9QUklOVDY0ID0g
MTNVIH07CgogIGVudW0geyBUWVBFX0ZMT0FUID0gMTRVIH07CgogIGVudW0geyBUWVBFX0RPVUJM
RSA9IDE1VSB9OwoKICBlbnVtIHsgVFlQRV9WT0lEID0gMTZVIH07CgogIGVudW0geyBUWVBFX0lO
VEVSRkFDRV9QT0lOVEVSID0gMTdVIH07CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFR5cGUoUFJV
aW50MTYgKmFUeXBlKSA9IDA7Cgp9OwojIDEzOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29t
L25zSVN1cHBvcnRzUHJpbWl0aXZlcy5oIgpjbGFzcyBuc0lTdXBwb3J0c0lEIDogcHVibGljIG5z
SVN1cHBvcnRzUHJpbWl0aXZlIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJ
SUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGQxODI5MGEwLCAweDRhMWMsIDB4MTFk
MywgeyAweDk4LCAweDkwLCAweDAwLCAweDYwLCAweDA4LCAweDk2LCAweDI0LCAweDIyIH19OyBy
ZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RGF0YShuc0lEICogKmFEYXRhKSA9
IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXREYXRhKGNvbnN0IG5zSUQgKiBhRGF0YSkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBUb1N0cmluZyhjaGFyICoqX3JldHZhbCkgPSAwOwoKfTsKIyAy
MzEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0c1ByaW1pdGl2ZXMuaCIK
Y2xhc3MgbnNJU3VwcG9ydHNDU3RyaW5nIDogcHVibGljIG5zSVN1cHBvcnRzUHJpbWl0aXZlIHsK
IHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5z
SUlEIGlpZCA9IHsweGQ2NWZmMjcwLCAweDRhMWMsIDB4MTFkMywgeyAweDk4LCAweDkwLCAweDAw
LCAweDYwLCAweDA4LCAweDk2LCAweDI0LCAweDIyIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0RGF0YShuc0FDU3RyaW5nICYgYURhdGEpID0gMDsKICB2aXJ0dWFsIG5z
cmVzdWx0IFNldERhdGEoY29uc3QgbnNBQ1N0cmluZyAmIGFEYXRhKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IFRvU3RyaW5nKGNoYXIgKipfcmV0dmFsKSA9IDA7Cgp9OwojIDMyMyAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN1cHBvcnRzUHJpbWl0aXZlcy5oIgpjbGFzcyBuc0lT
dXBwb3J0c1N0cmluZyA6IHB1YmxpYyBuc0lTdXBwb3J0c1ByaW1pdGl2ZSB7CiBwdWJsaWM6Cgog
IHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7
MHhkNzlkYzk3MCwgMHg0YTFjLCAweDExZDMsIHsgMHg5OCwgMHg5MCwgMHgwMCwgMHg2MCwgMHgw
OCwgMHg5NiwgMHgyNCwgMHgyMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldERhdGEobnNBU3RyaW5nICYgYURhdGEpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldERh
dGEoY29uc3QgbnNBU3RyaW5nICYgYURhdGEpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgVG9T
dHJpbmcoUFJVbmljaGFyICoqX3JldHZhbCkgPSAwOwoKfTsKIyA0MTggIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0c1ByaW1pdGl2ZXMuaCIKY2xhc3MgbnNJU3VwcG9ydHNQ
UkJvb2wgOiBwdWJsaWMgbnNJU3VwcG9ydHNQcmltaXRpdmUgewogcHVibGljOgoKICBzdGF0aWMg
Y29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4ZGRjM2I0
OTAsIDB4NGExYywgMHgxMWQzLCB7IDB4OTgsIDB4OTAsIDB4MDAsIDB4NjAsIDB4MDgsIDB4OTYs
IDB4MjQsIDB4MjIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREYXRh
KFBSQm9vbCAqYURhdGEpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldERhdGEoUFJCb29sIGFE
YXRhKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFRvU3RyaW5nKGNoYXIgKipfcmV0dmFsKSA9
IDA7Cgp9OwojIDUxMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN1cHBvcnRzUHJp
bWl0aXZlcy5oIgpjbGFzcyBuc0lTdXBwb3J0c1BSVWludDggOiBwdWJsaWMgbnNJU3VwcG9ydHNQ
cmltaXRpdmUgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0
aWMgY29uc3QgbnNJSUQgaWlkID0gezB4ZGVjMmU0ZTAsIDB4NGExYywgMHgxMWQzLCB7IDB4OTgs
IDB4OTAsIDB4MDAsIDB4NjAsIDB4MDgsIDB4OTYsIDB4MjQsIDB4MjIgfX07IHJldHVybiBpaWQ7
fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREYXRhKFBSVWludDggKmFEYXRhKSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXREYXRhKFBSVWludDggYURhdGEpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgVG9TdHJpbmcoY2hhciAqKl9yZXR2YWwpID0gMDsKCn07CiMgNjAyICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUveHBjb20vbnNJU3VwcG9ydHNQcmltaXRpdmVzLmgiCmNsYXNzIG5zSVN1cHBv
cnRzUFJVaW50MTYgOiBwdWJsaWMgbnNJU3VwcG9ydHNQcmltaXRpdmUgewogcHVibGljOgoKICBz
dGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4
ZGZhY2IwOTAsIDB4NGExYywgMHgxMWQzLCB7IDB4OTgsIDB4OTAsIDB4MDAsIDB4NjAsIDB4MDgs
IDB4OTYsIDB4MjQsIDB4MjIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXREYXRhKFBSVWludDE2ICphRGF0YSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RGF0YShQ
UlVpbnQxNiBhRGF0YSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBUb1N0cmluZyhjaGFyICoq
X3JldHZhbCkgPSAwOwoKfTsKIyA2OTQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lT
dXBwb3J0c1ByaW1pdGl2ZXMuaCIKY2xhc3MgbnNJU3VwcG9ydHNQUlVpbnQzMiA6IHB1YmxpYyBu
c0lTdXBwb3J0c1ByaW1pdGl2ZSB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0
SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhlMDFkYzQ3MCwgMHg0YTFjLCAweDEx
ZDMsIHsgMHg5OCwgMHg5MCwgMHgwMCwgMHg2MCwgMHgwOCwgMHg5NiwgMHgyNCwgMHgyMiB9fTsg
cmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERhdGEoUFJVaW50MzIgKmFEYXRh
KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXREYXRhKFBSVWludDMyIGFEYXRhKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IFRvU3RyaW5nKGNoYXIgKipfcmV0dmFsKSA9IDA7Cgp9OwojIDc4
NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN1cHBvcnRzUHJpbWl0aXZlcy5oIgpj
bGFzcyBuc0lTdXBwb3J0c1BSVWludDY0IDogcHVibGljIG5zSVN1cHBvcnRzUHJpbWl0aXZlIHsK
IHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5z
SUlEIGlpZCA9IHsweGUxMzU2N2MwLCAweDRhMWMsIDB4MTFkMywgeyAweDk4LCAweDkwLCAweDAw
LCAweDYwLCAweDA4LCAweDk2LCAweDI0LCAweDIyIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0RGF0YShQUlVpbnQ2NCAqYURhdGEpID0gMDsKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldERhdGEoUFJVaW50NjQgYURhdGEpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgVG9T
dHJpbmcoY2hhciAqKl9yZXR2YWwpID0gMDsKCn07CiMgODc4ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUveHBjb20vbnNJU3VwcG9ydHNQcmltaXRpdmVzLmgiCmNsYXNzIG5zSVN1cHBvcnRzUFJUaW1l
IDogcHVibGljIG5zSVN1cHBvcnRzUHJpbWl0aXZlIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0
IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGUyNTYzNjMwLCAw
eDRhMWMsIDB4MTFkMywgeyAweDk4LCAweDkwLCAweDAwLCAweDYwLCAweDA4LCAweDk2LCAweDI0
LCAweDIyIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RGF0YShQUlRp
bWUgKmFEYXRhKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXREYXRhKFBSVGltZSBhRGF0YSkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBUb1N0cmluZyhjaGFyICoqX3JldHZhbCkgPSAwOwoK
fTsKIyA5NzEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0c1ByaW1pdGl2
ZXMuaCIKY2xhc3MgbnNJU3VwcG9ydHNDaGFyIDogcHVibGljIG5zSVN1cHBvcnRzUHJpbWl0aXZl
IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0
IG5zSUlEIGlpZCA9IHsweGUyYjA1ZTQwLCAweDRhMWMsIDB4MTFkMywgeyAweDk4LCAweDkwLCAw
eDAwLCAweDYwLCAweDA4LCAweDk2LCAweDI0LCAweDIyIH19OyByZXR1cm4gaWlkO30KCgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0RGF0YShjaGFyICphRGF0YSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0RGF0YShjaGFyIGFEYXRhKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFRvU3RyaW5n
KGNoYXIgKipfcmV0dmFsKSA9IDA7Cgp9OwojIDEwNjMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94
cGNvbS9uc0lTdXBwb3J0c1ByaW1pdGl2ZXMuaCIKY2xhc3MgbnNJU3VwcG9ydHNQUkludDE2IDog
cHVibGljIG5zSVN1cHBvcnRzUHJpbWl0aXZlIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5z
SUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGUzMGQ5NGIwLCAweDRh
MWMsIDB4MTFkMywgeyAweDk4LCAweDkwLCAweDAwLCAweDYwLCAweDA4LCAweDk2LCAweDI0LCAw
eDIyIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RGF0YShQUkludDE2
ICphRGF0YSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RGF0YShQUkludDE2IGFEYXRhKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFRvU3RyaW5nKGNoYXIgKipfcmV0dmFsKSA9IDA7Cgp9
OwojIDExNTUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0c1ByaW1pdGl2
ZXMuaCIKY2xhc3MgbnNJU3VwcG9ydHNQUkludDMyIDogcHVibGljIG5zSVN1cHBvcnRzUHJpbWl0
aXZlIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNv
bnN0IG5zSUlEIGlpZCA9IHsweGUzNmM1MjUwLCAweDRhMWMsIDB4MTFkMywgeyAweDk4LCAweDkw
LCAweDAwLCAweDYwLCAweDA4LCAweDk2LCAweDI0LCAweDIyIH19OyByZXR1cm4gaWlkO30KCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0RGF0YShQUkludDMyICphRGF0YSkgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0RGF0YShQUkludDMyIGFEYXRhKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IFRvU3RyaW5nKGNoYXIgKipfcmV0dmFsKSA9IDA7Cgp9OwojIDEyNDcgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0c1ByaW1pdGl2ZXMuaCIKY2xhc3MgbnNJU3VwcG9ydHNQ
UkludDY0IDogcHVibGljIG5zSVN1cHBvcnRzUHJpbWl0aXZlIHsKIHB1YmxpYzoKCiAgc3RhdGlj
IGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGUzY2Iw
ZmYwLCAweDRhMWMsIDB4MTFkMywgeyAweDk4LCAweDkwLCAweDAwLCAweDYwLCAweDA4LCAweDk2
LCAweDI0LCAweDIyIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RGF0
YShQUkludDY0ICphRGF0YSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RGF0YShQUkludDY0
IGFEYXRhKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFRvU3RyaW5nKGNoYXIgKipfcmV0dmFs
KSA9IDA7Cgp9OwojIDEzMzkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0
c1ByaW1pdGl2ZXMuaCIKY2xhc3MgbnNJU3VwcG9ydHNGbG9hdCA6IHB1YmxpYyBuc0lTdXBwb3J0
c1ByaW1pdGl2ZSB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0
YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhYmVhYTM5MCwgMHg0YWMwLCAweDExZDMsIHsgMHhi
YSwgMHhlYSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHg1ZCwgMHhkNyB9fTsgcmV0dXJuIGlp
ZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERhdGEoZmxvYXQgKmFEYXRhKSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXREYXRhKGZsb2F0IGFEYXRhKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IFRvU3RyaW5nKGNoYXIgKipfcmV0dmFsKSA9IDA7Cgp9OwojIDE0MzEgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0c1ByaW1pdGl2ZXMuaCIKY2xhc3MgbnNJU3VwcG9y
dHNEb3VibGUgOiBwdWJsaWMgbnNJU3VwcG9ydHNQcmltaXRpdmUgewogcHVibGljOgoKICBzdGF0
aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YjMy
NTIzYTAsIDB4NGFjMCwgMHgxMWQzLCB7IDB4YmEsIDB4ZWEsIDB4MDAsIDB4ODAsIDB4NWYsIDB4
OGEsIDB4NWQsIDB4ZDcgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRE
YXRhKGRvdWJsZSAqYURhdGEpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldERhdGEoZG91Ymxl
IGFEYXRhKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFRvU3RyaW5nKGNoYXIgKipfcmV0dmFs
KSA9IDA7Cgp9OwojIDE1MjMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0
c1ByaW1pdGl2ZXMuaCIKY2xhc3MgbnNJU3VwcG9ydHNWb2lkIDogcHVibGljIG5zSVN1cHBvcnRz
UHJpbWl0aXZlIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3Rh
dGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDQ2NDQ4NGYwLCAweDU2OGQsIDB4MTFkMywgeyAweGJh
LCAweGY4LCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweDVkLCAweGQ3IH19OyByZXR1cm4gaWlk
O30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RGF0YSh2b2lkICogKmFEYXRhKSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXREYXRhKHZvaWQgKiBhRGF0YSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBUb1N0cmluZyhjaGFyICoqX3JldHZhbCkgPSAwOwoKfTsKIyAxNjE1ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUveHBjb20vbnNJU3VwcG9ydHNQcmltaXRpdmVzLmgiCmNsYXNzIG5zSVN1cHBv
cnRzSW50ZXJmYWNlUG9pbnRlciA6IHB1YmxpYyBuc0lTdXBwb3J0c1ByaW1pdGl2ZSB7CiBwdWJs
aWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBp
aWQgPSB7MHg5OTVlYTcyNCwgMHgxZGQxLCAweDExYjIsIHsgMHg5MiwgMHgxMSwgMHhjMiwgMHgx
YiwgMHhkZCwgMHgzZSwgMHg3ZSwgMHhkMCB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldERhdGEobnNJU3VwcG9ydHMgKiAqYURhdGEpID0gMDsKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldERhdGEobnNJU3VwcG9ydHMgKiBhRGF0YSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXREYXRhSUlEKG5zSUQgKiAqYURhdGFJSUQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dERhdGFJSUQoY29uc3QgbnNJRCAqIGFEYXRhSUlEKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IFRvU3RyaW5nKGNoYXIgKipfcmV0dmFsKSA9IDA7Cgp9OwojIDQ4ICJuc0RPTUNsYXNzSW5mby5j
cHAiIDIKCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29ubmVjdC9uc0lKU0NvbnRleHRT
dGFjay5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbm5lY3QvbnNJSlNDb250
ZXh0U3RhY2suaCIKY2xhc3MgbnNJSlNDb250ZXh0U3RhY2sgOiBwdWJsaWMgbnNJU3VwcG9ydHMg
ewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3Qg
bnNJSUQgaWlkID0gezB4YzY3ZDgyNzAsIDB4MzE4OSwgMHgxMWQzLCB7IDB4OTgsIDB4ODUsIDB4
MDAsIDB4NjAsIDB4MDgsIDB4OTYsIDB4MjQsIDB4MjIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRDb3VudChQUkludDMyICphQ291bnQpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgUGVlayhKU0NvbnRleHQgKiAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBQb3AoSlNDb250ZXh0ICogKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
UHVzaChKU0NvbnRleHQgKiBjeCkgPSAwOwoKfTsKIyAxMjggIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS94cGNvbm5lY3QvbnNJSlNDb250ZXh0U3RhY2suaCIKY2xhc3MgbnNJVGhyZWFkSlNDb250ZXh0
U3RhY2sgOiBwdWJsaWMgbnNJSlNDb250ZXh0U3RhY2sgewogcHVibGljOgoKICBzdGF0aWMgY29u
c3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTEzMzlhZTAs
IDB4MDVjMSwgMHgxMWQ0LCB7IDB4OGYsIDB4OTIsIDB4MDAsIDB4MTAsIDB4YTQsIDB4ZTcsIDB4
M2QsIDB4OWEgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTYWZlSlND
b250ZXh0KEpTQ29udGV4dCAqICphU2FmZUpTQ29udGV4dCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0U2FmZUpTQ29udGV4dChKU0NvbnRleHQgKiBhU2FmZUpTQ29udGV4dCkgPSAwOwoKfTsK
IyA1MCAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2Rv
bS9uc0lTY3JpcHRDb250ZXh0LmgiIDEKIyA0NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9u
c0lTY3JpcHRDb250ZXh0LmgiCmNsYXNzIG5zSVNjcmlwdEdsb2JhbE9iamVjdDsKY2xhc3MgbnNJ
U2NyaXB0U2VjdXJpdHlNYW5hZ2VyOwpjbGFzcyBuc0lTY3JpcHRDb250ZXh0T3duZXI7CmNsYXNz
IG5zSVByaW5jaXBhbDsKY2xhc3MgbnNJQXRvbTsKCnR5cGVkZWYgdm9pZCAoKm5zU2NyaXB0VGVy
bWluYXRpb25GdW5jKShuc0lTdXBwb3J0cyogYVJlZik7CiMgNjYgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9kb20vbnNJU2NyaXB0Q29udGV4dC5oIgpjbGFzcyBuc0lTY3JpcHRDb250ZXh0IDogcHVi
bGljIG5zSVN1cHBvcnRzIHsKcHVibGljOgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkg
e3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7IDB4OGY2YmNhN2QsIDB4Y2U0MiwgMHgxMWQxLCB7
MHhiNywgMHgyNCwgMHgwMCwgMHg2MCwgMHgwOCwgMHg5MSwgMHhkOCwgMHhjOX0gfTsgcmV0dXJu
IGlpZDt9CiMgODcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJU2NyaXB0Q29udGV4dC5o
IgogIHZpcnR1YWwgbnNyZXN1bHQgRXZhbHVhdGVTdHJpbmcoY29uc3QgbnNBU3RyaW5nJiBhU2Ny
aXB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYVNjb3BlT2JqZWN0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnNJUHJpbmNpcGFsICphUHJpbmNpcGFsLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYVVSTCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBSVWludDMyIGFMaW5lTm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBhVmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zQVN0cmlu
ZyYgYVJldFZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJCb29sKiBhSXNVbmRl
ZmluZWQpID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBFdmFsdWF0ZVN0cmluZ1dpdGhWYWx1ZShj
b25zdCBuc0FTdHJpbmcmIGFTY3JpcHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkICphU2NvcGVPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuc0lQcmluY2lwYWwgKmFQcmluY2lwYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICphVVJMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUFJVaW50MzIgYUxpbmVObywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGFWZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdm9pZCogYVJldFZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUFJCb29sKiBhSXNVbmRlZmluZWQpID0gMDsKIyAxMjMgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9kb20vbnNJU2NyaXB0Q29udGV4dC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgQ29tcGlsZVNj
cmlwdChjb25zdCBQUlVuaWNoYXIqIGFUZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBQ
UkludDMyIGFUZXh0TGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBhU2Nv
cGVPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVByaW5jaXBhbCogYVByaW5j
aXBhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYVVSTCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUFJVaW50MzIgYUxpbmVObywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogYVZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZvaWQqKiBhU2NyaXB0T2JqZWN0KSA9IDA7CiMgMTQ2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
ZG9tL25zSVNjcmlwdENvbnRleHQuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEV4ZWN1dGVTY3JpcHQo
dm9pZCogYVNjcmlwdE9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogYVNj
b3BlT2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBuc0FTdHJpbmcqIGFSZXRWYWx1
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJCb29sKiBhSXNVbmRlZmluZWQpID0gMDsK
IyAxNzMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJU2NyaXB0Q29udGV4dC5oIgogIHZp
cnR1YWwgbnNyZXN1bHQgQ29tcGlsZUV2ZW50SGFuZGxlcih2b2lkKiBhVGFyZ2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lBdG9tKiBhTmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgbnNBU3RyaW5nJiBhQm9keSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUFJCb29sIGFTaGFyZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQqKiBhSGFuZGxlcikgPSAwOwojIDE5MSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2RvbS9uc0lTY3JpcHRDb250ZXh0LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBDYWxsRXZlbnRI
YW5kbGVyKHZvaWQqIGFUYXJnZXQsIHZvaWQqIGFIYW5kbGVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQUlVpbnQzMiBhcmdjLCB2b2lkKiBhcmd2LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQUkJvb2wqIGFCb29sUmVzdWx0LCBQUkJvb2wgYVJldmVyc2VSZXR1cm5SZXN1
bHQpID0gMDsKIyAyMTEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJU2NyaXB0Q29udGV4
dC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgQmluZENvbXBpbGVkRXZlbnRIYW5kbGVyKHZvaWQqIGFU
YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQXRvbSogYU5h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogYUhhbmRsZXIp
ID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBDb21waWxlRnVuY3Rpb24odm9pZCogYVRhcmdldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuc0NTdHJpbmcmIGFOYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBSVWludDMyIGFBcmdDb3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiogYUFyZ0FycmF5LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IG5zQVN0cmluZyYgYUJvZHksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogYVVSTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
UlVpbnQzMiBhTGluZU5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCBhU2hh
cmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqKiBhRnVuY3Rpb25PYmplY3Qp
ID0gMDsKCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXREZWZhdWx0TGFuZ3VhZ2VWZXJzaW9u
KGNvbnN0IGNoYXIqIGFWZXJzaW9uKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEds
b2JhbE9iamVjdChuc0lTY3JpcHRHbG9iYWxPYmplY3QqKiBhR2xvYmFsT2JqZWN0KSA9IDA7CgoK
CgoKICB2aXJ0dWFsIHZvaWQqIEdldE5hdGl2ZUNvbnRleHQoKSA9IDA7CiMgMjUzICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvZG9tL25zSVNjcmlwdENvbnRleHQuaCIKICB2aXJ0dWFsIG5zcmVzdWx0
IEluaXRDb250ZXh0KG5zSVNjcmlwdEdsb2JhbE9iamVjdCAqYUdsb2JhbE9iamVjdCkgPSAwOwoj
IDI2MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lTY3JpcHRDb250ZXh0LmgiCiAgdmly
dHVhbCBuc3Jlc3VsdCBJc0NvbnRleHRJbml0aWFsaXplZCgpID0gMDsKCgoKCgoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHQygpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2VjdXJpdHlN
YW5hZ2VyKG5zSVNjcmlwdFNlY3VyaXR5TWFuYWdlcioqIGFJbnN0YW5jZVB0cikgPSAwOwojIDI5
MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lTY3JpcHRDb250ZXh0LmgiCiAgdmlydHVh
bCBuc3Jlc3VsdCBTY3JpcHRFdmFsdWF0ZWQoUFJCb29sIGFUZXJtaW5hdGVkKSA9IDA7CgoKCgoK
CgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0T3duZXIobnNJU2NyaXB0Q29udGV4dE93bmVyKiBvd25l
cikgPSAwOwoKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE93bmVyKG5zSVNjcmlwdENvbnRl
eHRPd25lcioqIG93bmVyKSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VGVybWlu
YXRpb25GdW5jdGlvbihuc1NjcmlwdFRlcm1pbmF0aW9uRnVuYyBhRnVuYywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3VwcG9ydHMqIGFSZWYpID0gMDsKCgoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRTY3JpcHRzRW5hYmxlZChQUkJvb2wgKmFFbmFibGVkKSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXRTY3JpcHRzRW5hYmxlZChQUkJvb2wgYUVuYWJsZWQsIFBSQm9v
bCBhRmlyZVRpbWVvdXRzKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByb2Nlc3Np
bmdTY3JpcHRUYWcoUFJCb29sICogYVJlc3VsdCkgPTA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRQ
cm9jZXNzaW5nU2NyaXB0VGFnKFBSQm9vbCBhUmVzdWx0KSA9MDsKCgoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXRHQ09uRGVzdHJ1Y3Rpb24oUFJCb29sIGFHQ09uRGVzdHJ1Y3Rpb24pID0gMDsKfTsK
IyA1MSAibnNET01DbGFzc0luZm8uY3BwIiAyCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
c3RyaW5nL25zUmVhZGFibGVVdGlscy5oIiAxCiMgMzkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9z
dHJpbmcvbnNSZWFkYWJsZVV0aWxzLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmlu
Zy9uc0FTdHJpbmdHZW5lcmF0b3IuaCIgMQojIDM5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3Ry
aW5nL25zQVN0cmluZ0dlbmVyYXRvci5oIgpjbGFzcyBuc0FTdHJpbmc7CmNsYXNzIG5zQUNTdHJp
bmc7CgpjbGFzcyBuc0FTdHJpbmdHZW5lcmF0b3IKICB7CiAgICBwdWJsaWM6CiAgICAgIHZpcnR1
YWwgfm5zQVN0cmluZ0dlbmVyYXRvcigpIHsgfQoKICAgICAgdmlydHVhbCBQUlVuaWNoYXIqIG9w
ZXJhdG9yKCkoIFBSVW5pY2hhciogYURlc3RCdWZmZXIgKSBjb25zdCA9IDA7CiAgICAgIHZpcnR1
YWwgUFJVaW50MzIgTGVuZ3RoKCkgY29uc3QgPSAwOwogICAgICB2aXJ0dWFsIFBSVWludDMyIE1h
eExlbmd0aCgpIGNvbnN0ID0gMDsKICAgICAgdmlydHVhbCBQUkJvb2wgSXNEZXBlbmRlbnRPbigg
Y29uc3QgbnNBU3RyaW5nJiApIGNvbnN0ID0gMDsKICB9OwoKY2xhc3MgbnNBQ1N0cmluZ0dlbmVy
YXRvcgogIHsKICAgIHB1YmxpYzoKICAgICAgdmlydHVhbCB+bnNBQ1N0cmluZ0dlbmVyYXRvcigp
IHsgfQoKICAgICAgdmlydHVhbCBjaGFyKiBvcGVyYXRvcigpKCBjaGFyKiBhRGVzdEJ1ZmZlciAp
IGNvbnN0ID0gMDsKICAgICAgdmlydHVhbCBQUlVpbnQzMiBMZW5ndGgoKSBjb25zdCA9IDA7CiAg
ICAgIHZpcnR1YWwgUFJVaW50MzIgTWF4TGVuZ3RoKCkgY29uc3QgPSAwOwogICAgICB2aXJ0dWFs
IFBSQm9vbCBJc0RlcGVuZGVudE9uKCBjb25zdCBuc0FDU3RyaW5nJiApIGNvbnN0ID0gMDsKICB9
OwojIDQwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25zUmVhZGFibGVVdGlscy5oIiAy
CgoKY2xhc3MgbnNBU2luZ2xlRnJhZ21lbnRDU3RyaW5nOwpjbGFzcyBuc0NTdHJpbmc7Cgogc2l6
ZV90IERpc3RhbmNlKCBjb25zdCBuc0FTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgbnNB
U3RyaW5nOjpjb25zdF9pdGVyYXRvciYgKTsKIHNpemVfdCBEaXN0YW5jZSggY29uc3QgbnNBQ1N0
cmluZzo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBuc0FDU3RyaW5nOjpjb25zdF9pdGVyYXRvciYg
KTsKCgogdm9pZCBDb3B5VUNTMnRvQVNDSUkoIGNvbnN0IG5zQVN0cmluZyYgYVNvdXJjZSwgbnNB
Q1N0cmluZyYgYURlc3QgKTsKIHZvaWQgQ29weUFTQ0lJdG9VQ1MyKCBjb25zdCBuc0FDU3RyaW5n
JiBhU291cmNlLCBuc0FTdHJpbmcmIGFEZXN0ICk7CiMgNjMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9zdHJpbmcvbnNSZWFkYWJsZVV0aWxzLmgiCiBjaGFyKiBUb05ld0NTdHJpbmcoIGNvbnN0IG5z
QVN0cmluZyYgYVNvdXJjZSApOwojIDc1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5nL25z
UmVhZGFibGVVdGlscy5oIgogY2hhciogVG9OZXdDU3RyaW5nKCBjb25zdCBuc0FDU3RyaW5nJiBh
U291cmNlICk7CiMgODggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNSZWFkYWJsZVV0
aWxzLmgiCiBjaGFyKiBUb05ld1VURjhTdHJpbmcoIGNvbnN0IG5zQVN0cmluZyYgYVNvdXJjZSAp
OwojIDEwMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1JlYWRhYmxlVXRpbHMuaCIK
IFBSVW5pY2hhciogVG9OZXdVbmljb2RlKCBjb25zdCBuc0FTdHJpbmcmIGFTb3VyY2UgKTsKIyAx
MTQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9zdHJpbmcvbnNSZWFkYWJsZVV0aWxzLmgiCiBQUlVu
aWNoYXIqIFRvTmV3VW5pY29kZSggY29uc3QgbnNBQ1N0cmluZyYgYVNvdXJjZSApOwojIDEyOCAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmluZy9uc1JlYWRhYmxlVXRpbHMuaCIKIFBSVW5pY2hh
ciogQ29weVVuaWNvZGVUbyggY29uc3QgbnNBU3RyaW5nJiBhU291cmNlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQUlVpbnQzMiBhU3JjT2Zmc2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQUlVuaWNoYXIqIGFEZXN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQUlVpbnQzMiBhTGVuZ3RoICk7CiMgMTQ1ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvc3RyaW5nL25zUmVhZGFibGVVdGlscy5oIgogdm9pZCBDb3B5VW5pY29kZVRvKCBjb25zdCBu
c0FTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yJiBhU3JjU3RhcnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IG5zQVN0cmluZzo6Y29uc3RfaXRlcmF0b3ImIGFTcmNFbmQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5zQVN0cmluZyYgYURlc3QgKTsKIyAxNTkgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9zdHJpbmcvbnNSZWFkYWJsZVV0aWxzLmgiCiB2b2lkIEFwcGVuZFVuaWNvZGVU
byggY29uc3QgbnNBU3RyaW5nOjpjb25zdF9pdGVyYXRvciYgYVNyY1N0YXJ0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IG5zQVN0cmluZzo6Y29uc3RfaXRlcmF0b3ImIGFTcmNF
bmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNBU3RyaW5nJiBhRGVzdCApOwoKCgoK
CgogUFJCb29sIElzQVNDSUkoIGNvbnN0IG5zQVN0cmluZyYgYVN0cmluZyApOwoKCgoKCgogUFJC
b29sIElzQVNDSUkoIGNvbnN0IG5zQUNTdHJpbmcmIGFTdHJpbmcgKTsKCgoKCgoKIHZvaWQgVG9V
cHBlckNhc2UoIG5zQUNTdHJpbmcmICk7Cgogdm9pZCBUb0xvd2VyQ2FzZSggbnNBQ1N0cmluZyYg
KTsKCiB2b2lkIFRvVXBwZXJDYXNlKCBuc0FTaW5nbGVGcmFnbWVudENTdHJpbmcmICk7Cgogdm9p
ZCBUb0xvd2VyQ2FzZSggbnNBU2luZ2xlRnJhZ21lbnRDU3RyaW5nJiApOwoKIHZvaWQgVG9VcHBl
ckNhc2UoIG5zQ1N0cmluZyYgKTsKCiB2b2lkIFRvTG93ZXJDYXNlKCBuc0NTdHJpbmcmICk7CgoK
Cgogdm9pZCBUb1VwcGVyQ2FzZSggY29uc3QgbnNBQ1N0cmluZyYgYVNvdXJjZSwgbnNBQ1N0cmlu
ZyYgYURlc3QgKTsKCiB2b2lkIFRvTG93ZXJDYXNlKCBjb25zdCBuc0FDU3RyaW5nJiBhU291cmNl
LCBuc0FDU3RyaW5nJiBhRGVzdCApOwojIDIxMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3N0cmlu
Zy9uc1JlYWRhYmxlVXRpbHMuaCIKIFBSQm9vbCBGaW5kSW5SZWFkYWJsZSggY29uc3QgbnNBU3Ry
aW5nJiBhUGF0dGVybiwgbnNBU3RyaW5nOjpjb25zdF9pdGVyYXRvciYsIG5zQVN0cmluZzo6Y29u
c3RfaXRlcmF0b3ImLCBjb25zdCBuc1N0cmluZ0NvbXBhcmF0b3ImID0gbnNEZWZhdWx0U3RyaW5n
Q29tcGFyYXRvcigpICk7CiBQUkJvb2wgRmluZEluUmVhZGFibGUoIGNvbnN0IG5zQUNTdHJpbmcm
IGFQYXR0ZXJuLCBuc0FDU3RyaW5nOjpjb25zdF9pdGVyYXRvciYsIG5zQUNTdHJpbmc6OmNvbnN0
X2l0ZXJhdG9yJiwgY29uc3QgbnNDU3RyaW5nQ29tcGFyYXRvciYgPSBuc0RlZmF1bHRDU3RyaW5n
Q29tcGFyYXRvcigpICk7CgoKCmlubGluZSBQUkJvb2wgRmluZEluUmVhZGFibGUoIGNvbnN0IG5z
QVN0cmluZyYgYVBhdHRlcm4sIGNvbnN0IG5zQVN0cmluZyYgYVNvdXJjZSwgY29uc3QgbnNTdHJp
bmdDb21wYXJhdG9yJiBjb21wYXJlID0gbnNEZWZhdWx0U3RyaW5nQ29tcGFyYXRvcigpICkKewog
IG5zQVN0cmluZzo6Y29uc3RfaXRlcmF0b3Igc3RhcnQsIGVuZDsKICBhU291cmNlLkJlZ2luUmVh
ZGluZyhzdGFydCk7CiAgYVNvdXJjZS5FbmRSZWFkaW5nKGVuZCk7CiAgcmV0dXJuIEZpbmRJblJl
YWRhYmxlKGFQYXR0ZXJuLCBzdGFydCwgZW5kLCBjb21wYXJlKTsKfQoKaW5saW5lIFBSQm9vbCBG
aW5kSW5SZWFkYWJsZSggY29uc3QgbnNBQ1N0cmluZyYgYVBhdHRlcm4sIGNvbnN0IG5zQUNTdHJp
bmcmIGFTb3VyY2UsIGNvbnN0IG5zQ1N0cmluZ0NvbXBhcmF0b3ImIGNvbXBhcmUgPSBuc0RlZmF1
bHRDU3RyaW5nQ29tcGFyYXRvcigpICkKewogIG5zQUNTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yIHN0
YXJ0LCBlbmQ7CiAgYVNvdXJjZS5CZWdpblJlYWRpbmcoc3RhcnQpOwogIGFTb3VyY2UuRW5kUmVh
ZGluZyhlbmQpOwogIHJldHVybiBGaW5kSW5SZWFkYWJsZShhUGF0dGVybiwgc3RhcnQsIGVuZCwg
Y29tcGFyZSk7Cn0KCgogUFJCb29sIENhc2VJbnNlbnNpdGl2ZUZpbmRJblJlYWRhYmxlKCBjb25z
dCBuc0FDU3RyaW5nJiBhUGF0dGVybiwgbnNBQ1N0cmluZzo6Y29uc3RfaXRlcmF0b3ImLCBuc0FD
U3RyaW5nOjpjb25zdF9pdGVyYXRvciYgKTsKIyAyNDMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9z
dHJpbmcvbnNSZWFkYWJsZVV0aWxzLmgiCiBQUkJvb2wgUkZpbmRJblJlYWRhYmxlKCBjb25zdCBu
c0FTdHJpbmcmIGFQYXR0ZXJuLCBuc0FTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yJiwgbnNBU3RyaW5n
Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IG5zU3RyaW5nQ29tcGFyYXRvciYgPSBuc0RlZmF1bHRT
dHJpbmdDb21wYXJhdG9yKCkgKTsKIFBSQm9vbCBSRmluZEluUmVhZGFibGUoIGNvbnN0IG5zQUNT
dHJpbmcmIGFQYXR0ZXJuLCBuc0FDU3RyaW5nOjpjb25zdF9pdGVyYXRvciYsIG5zQUNTdHJpbmc6
OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgbnNDU3RyaW5nQ29tcGFyYXRvciYgPSBuc0RlZmF1bHRD
U3RyaW5nQ29tcGFyYXRvcigpICk7CiMgMjU0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvc3RyaW5n
L25zUmVhZGFibGVVdGlscy5oIgogUFJCb29sIEZpbmRDaGFySW5SZWFkYWJsZSggUFJVbmljaGFy
IGFDaGFyLCBuc0FTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yJiBhU2VhcmNoU3RhcnQsIGNvbnN0IG5z
QVN0cmluZzo6Y29uc3RfaXRlcmF0b3ImIGFTZWFyY2hFbmQgKTsKIFBSQm9vbCBGaW5kQ2hhcklu
UmVhZGFibGUoIGNoYXIgYUNoYXIsIG5zQUNTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yJiBhU2VhcmNo
U3RhcnQsIGNvbnN0IG5zQUNTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yJiBhU2VhcmNoRW5kICk7CgoK
CgogUFJVaW50MzIgQ291bnRDaGFySW5SZWFkYWJsZSggY29uc3QgbnNBU3RyaW5nJiBhU3RyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJVbmljaGFyIGFDaGFyICk7CiBQ
UlVpbnQzMiBDb3VudENoYXJJblJlYWRhYmxlKCBjb25zdCBuc0FDU3RyaW5nJiBhU3RyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBhQ2hhciApOwoKIFBSVWludDMy
IEhhc2hTdHJpbmcoIGNvbnN0IG5zQVN0cmluZyYgYVN0ciApOwogUFJVaW50MzIgSGFzaFN0cmlu
ZyggY29uc3QgbnNBQ1N0cmluZyYgYVN0ciApOwojIDI3NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3N0cmluZy9uc1JlYWRhYmxlVXRpbHMuaCIKY2xhc3MgbnNTdWJzdGl0dXRlU3RyaW5nCiAgICA6
IHB1YmxpYyBuc0FTdHJpbmdHZW5lcmF0b3IKICB7CiAgICBwdWJsaWM6CiAgICAgIG5zU3Vic3Rp
dHV0ZVN0cmluZyggY29uc3QgbnNBU3RyaW5nJiBhVGV4dCwgY29uc3QgbnNBU3RyaW5nJiBhUGF0
dGVybiwgY29uc3QgbnNBU3RyaW5nJiBhUmVwbGFjZW1lbnQgKQogICAgICAgICAgOiBtVGV4dChh
VGV4dCksCiAgICAgICAgICAgIG1QYXR0ZXJuKGFQYXR0ZXJuKSwKICAgICAgICAgICAgbVJlcGxh
Y2VtZW50KGFSZXBsYWNlbWVudCksCiAgICAgICAgICAgIG1OdW1iZXJPZk1hdGNoZXMoLTEpCiAg
ICAgICAgewoKICAgICAgICB9CgogICAgICB2aXJ0dWFsIFBSVW5pY2hhciogb3BlcmF0b3IoKSgg
UFJVbmljaGFyKiBhRGVzdEJ1ZmZlciApIGNvbnN0OwogICAgICB2aXJ0dWFsIFBSVWludDMyIExl
bmd0aCgpIGNvbnN0OwogICAgICB2aXJ0dWFsIFBSVWludDMyIE1heExlbmd0aCgpIGNvbnN0Owog
ICAgICB2aXJ0dWFsIFBSQm9vbCBJc0RlcGVuZGVudE9uKCBjb25zdCBuc0FTdHJpbmcmICkgY29u
c3Q7CgogICAgcHJpdmF0ZToKICAgICAgdm9pZCBDb3VudE1hdGNoZXMoKSBjb25zdDsKCiAgICBw
cml2YXRlOgogICAgICBjb25zdCBuc0FTdHJpbmcmIG1UZXh0OwogICAgICBjb25zdCBuc0FTdHJp
bmcmIG1QYXR0ZXJuOwogICAgICBjb25zdCBuc0FTdHJpbmcmIG1SZXBsYWNlbWVudDsKICAgICAg
ICAgICAgICAgICAgICBQUkludDMyIG1OdW1iZXJPZk1hdGNoZXM7CiAgfTsKCmNsYXNzIG5zU3Vi
c3RpdHV0ZUNTdHJpbmcKICAgIDogcHVibGljIG5zQUNTdHJpbmdHZW5lcmF0b3IKICB7CiAgICBw
dWJsaWM6CiAgICAgIG5zU3Vic3RpdHV0ZUNTdHJpbmcoIGNvbnN0IG5zQUNTdHJpbmcmIGFUZXh0
LCBjb25zdCBuc0FDU3RyaW5nJiBhUGF0dGVybiwgY29uc3QgbnNBQ1N0cmluZyYgYVJlcGxhY2Vt
ZW50ICkKICAgICAgICAgIDogbVRleHQoYVRleHQpLAogICAgICAgICAgICBtUGF0dGVybihhUGF0
dGVybiksCiAgICAgICAgICAgIG1SZXBsYWNlbWVudChhUmVwbGFjZW1lbnQpLAogICAgICAgICAg
ICBtTnVtYmVyT2ZNYXRjaGVzKC0xKQogICAgICAgIHsKCiAgICAgICAgfQoKICAgICAgdmlydHVh
bCBjaGFyKiBvcGVyYXRvcigpKCBjaGFyKiBhRGVzdEJ1ZmZlciApIGNvbnN0OwogICAgICB2aXJ0
dWFsIFBSVWludDMyIExlbmd0aCgpIGNvbnN0OwogICAgICB2aXJ0dWFsIFBSVWludDMyIE1heExl
bmd0aCgpIGNvbnN0OwogICAgICB2aXJ0dWFsIFBSQm9vbCBJc0RlcGVuZGVudE9uKCBjb25zdCBu
c0FDU3RyaW5nJiApIGNvbnN0OwoKICAgIHByaXZhdGU6CiAgICAgIHZvaWQgQ291bnRNYXRjaGVz
KCkgY29uc3Q7CgogICAgcHJpdmF0ZToKICAgICAgY29uc3QgbnNBQ1N0cmluZyYgbVRleHQ7CiAg
ICAgIGNvbnN0IG5zQUNTdHJpbmcmIG1QYXR0ZXJuOwogICAgICBjb25zdCBuc0FDU3RyaW5nJiBt
UmVwbGFjZW1lbnQ7CiAgICAgICAgICAgICAgICAgICAgUFJJbnQzMiBtTnVtYmVyT2ZNYXRjaGVz
OwogIH07CiMgNTQgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS94cGNvbS94cHRjYWxsLmgiIDEKIyA4MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29t
L3hwdGNhbGwuaCIKc3RydWN0IG5zWFBUQ01pbmlWYXJpYW50CnsKCgogICAgdW5pb24KICAgIHsK
ICAgICAgICBQUkludDggaTg7CiAgICAgICAgUFJJbnQxNiBpMTY7CiAgICAgICAgUFJJbnQzMiBp
MzI7CiAgICAgICAgUFJJbnQ2NCBpNjQ7CiAgICAgICAgUFJVaW50OCB1ODsKICAgICAgICBQUlVp
bnQxNiB1MTY7CiAgICAgICAgUFJVaW50MzIgdTMyOwogICAgICAgIFBSVWludDY0IHU2NDsKICAg
ICAgICBmbG9hdCBmOwogICAgICAgIGRvdWJsZSBkOwogICAgICAgIFBSQm9vbCBiOwogICAgICAg
IGNoYXIgYzsKICAgICAgICBQUlVuaWNoYXIgd2M7CiAgICAgICAgdm9pZCogcDsKICAgIH0gdmFs
Owp9OwoKc3RydWN0IG5zWFBUQ1ZhcmlhbnQgOiBwdWJsaWMgbnNYUFRDTWluaVZhcmlhbnQKewoK
CgoKICAgIHZvaWQqIHB0cjsKICAgIG5zWFBUVHlwZSB0eXBlOwogICAgUFJVaW50OCBmbGFnczsK
CiAgICBlbnVtCiAgICB7CgogICAgICAgIFBUUl9JU19EQVRBID0gMHgxLAogICAgICAgIFZBTF9J
U19BTExPQ0QgPSAweDIsCiAgICAgICAgVkFMX0lTX0lGQUNFID0gMHg0LAogICAgICAgIFZBTF9J
U19BUlJBWSA9IDB4OCwKICAgICAgICBWQUxfSVNfRE9NU1RSID0gMHgxMCwKICAgICAgICBWQUxf
SVNfVVRGOFNUUiA9IDB4MjAsCiAgICAgICAgVkFMX0lTX0NTVFIgPSAweDQwCiAgICB9OwoKICAg
IHZvaWQgQ2xlYXJGbGFncygpIHtmbGFncyA9IDA7fQogICAgdm9pZCBTZXRQdHJJc0RhdGEoKSB7
ZmxhZ3MgfD0gUFRSX0lTX0RBVEE7fQogICAgdm9pZCBTZXRWYWxJc0FsbG9jYXRlZCgpIHtmbGFn
cyB8PSBWQUxfSVNfQUxMT0NEO30KICAgIHZvaWQgU2V0VmFsSXNJbnRlcmZhY2UoKSB7ZmxhZ3Mg
fD0gVkFMX0lTX0lGQUNFO30KICAgIHZvaWQgU2V0VmFsSXNBcnJheSgpIHtmbGFncyB8PSBWQUxf
SVNfQVJSQVk7fQogICAgdm9pZCBTZXRWYWxJc0RPTVN0cmluZygpIHtmbGFncyB8PSBWQUxfSVNf
RE9NU1RSO30KICAgIHZvaWQgU2V0VmFsSXNVVEY4U3RyaW5nKCkge2ZsYWdzIHw9IFZBTF9JU19V
VEY4U1RSO30KICAgIHZvaWQgU2V0VmFsSXNDU3RyaW5nKCkge2ZsYWdzIHw9IFZBTF9JU19DU1RS
O30KCiAgICBQUkJvb2wgSXNQdHJEYXRhKCkgY29uc3Qge3JldHVybiAwICE9IChmbGFncyAmIFBU
Ul9JU19EQVRBKTt9CiAgICBQUkJvb2wgSXNWYWxBbGxvY2F0ZWQoKSBjb25zdCB7cmV0dXJuIDAg
IT0gKGZsYWdzICYgVkFMX0lTX0FMTE9DRCk7fQogICAgUFJCb29sIElzVmFsSW50ZXJmYWNlKCkg
Y29uc3Qge3JldHVybiAwICE9IChmbGFncyAmIFZBTF9JU19JRkFDRSk7fQogICAgUFJCb29sIElz
VmFsQXJyYXkoKSBjb25zdCB7cmV0dXJuIDAgIT0gKGZsYWdzICYgVkFMX0lTX0FSUkFZKTt9CiAg
ICBQUkJvb2wgSXNWYWxET01TdHJpbmcoKSBjb25zdCB7cmV0dXJuIDAgIT0gKGZsYWdzICYgVkFM
X0lTX0RPTVNUUik7fQogICAgUFJCb29sIElzVmFsVVRGOFN0cmluZygpIGNvbnN0IHtyZXR1cm4g
MCAhPSAoZmxhZ3MgJiBWQUxfSVNfVVRGOFNUUik7fQogICAgUFJCb29sIElzVmFsQ1N0cmluZygp
IGNvbnN0IHtyZXR1cm4gMCAhPSAoZmxhZ3MgJiBWQUxfSVNfQ1NUUik7fQoKICAgIHZvaWQgSW5p
dChjb25zdCBuc1hQVENNaW5pVmFyaWFudCYgbXYsIGNvbnN0IG5zWFBUVHlwZSYgdCwgUFJVaW50
OCBmKQogICAgewogICAgICAgIHR5cGUgPSB0OwogICAgICAgIGZsYWdzID0gZjsKCiAgICAgICAg
aWYoZiAmIFBUUl9JU19EQVRBKQogICAgICAgIHsKICAgICAgICAgICAgcHRyID0gbXYudmFsLnA7
CiAgICAgICAgICAgIHZhbC5wID0gMDsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsK
ICAgICAgICAgICAgcHRyID0gMDsKICAgICAgICAgICAgc3dpdGNoKHQuVGFnUGFydCgpKSB7CiAg
ICAgICAgICAgICAgY2FzZSBuc1hQVFR5cGU6OlRfSTg6IHZhbC5pOCA9IG12LnZhbC5pODsgYnJl
YWs7CiAgICAgICAgICAgICAgY2FzZSBuc1hQVFR5cGU6OlRfSTE2OiB2YWwuaTE2ID0gbXYudmFs
LmkxNjsgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSBuc1hQVFR5cGU6OlRfSTMyOiB2YWwuaTMy
ID0gbXYudmFsLmkzMjsgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSBuc1hQVFR5cGU6OlRfSTY0
OiB2YWwuaTY0ID0gbXYudmFsLmk2NDsgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSBuc1hQVFR5
cGU6OlRfVTg6IHZhbC51OCA9IG12LnZhbC51ODsgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSBu
c1hQVFR5cGU6OlRfVTE2OiB2YWwudTE2ID0gbXYudmFsLnUxNjsgYnJlYWs7CiAgICAgICAgICAg
ICAgY2FzZSBuc1hQVFR5cGU6OlRfVTMyOiB2YWwudTMyID0gbXYudmFsLnUzMjsgYnJlYWs7CiAg
ICAgICAgICAgICAgY2FzZSBuc1hQVFR5cGU6OlRfVTY0OiB2YWwudTY0ID0gbXYudmFsLnU2NDsg
YnJlYWs7CiAgICAgICAgICAgICAgY2FzZSBuc1hQVFR5cGU6OlRfRkxPQVQ6IHZhbC5mID0gbXYu
dmFsLmY7IGJyZWFrOwogICAgICAgICAgICAgIGNhc2UgbnNYUFRUeXBlOjpUX0RPVUJMRTogdmFs
LmQgPSBtdi52YWwuZDsgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSBuc1hQVFR5cGU6OlRfQk9P
TDogdmFsLmIgPSBtdi52YWwuYjsgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSBuc1hQVFR5cGU6
OlRfQ0hBUjogdmFsLmMgPSBtdi52YWwuYzsgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSBuc1hQ
VFR5cGU6OlRfV0NIQVI6IHZhbC53YyA9IG12LnZhbC53YzsgYnJlYWs7CiAgICAgICAgICAgICAg
Y2FzZSBuc1hQVFR5cGU6OlRfVk9JRDoKICAgICAgICAgICAgICBjYXNlIG5zWFBUVHlwZTo6VF9J
SUQ6CiAgICAgICAgICAgICAgY2FzZSBuc1hQVFR5cGU6OlRfRE9NU1RSSU5HOgogICAgICAgICAg
ICAgIGNhc2UgbnNYUFRUeXBlOjpUX0NIQVJfU1RSOgogICAgICAgICAgICAgIGNhc2UgbnNYUFRU
eXBlOjpUX1dDSEFSX1NUUjoKICAgICAgICAgICAgICBjYXNlIG5zWFBUVHlwZTo6VF9JTlRFUkZB
Q0U6CiAgICAgICAgICAgICAgY2FzZSBuc1hQVFR5cGU6OlRfSU5URVJGQUNFX0lTOgogICAgICAg
ICAgICAgIGNhc2UgbnNYUFRUeXBlOjpUX0FSUkFZOgogICAgICAgICAgICAgIGNhc2UgbnNYUFRU
eXBlOjpUX1BTVFJJTkdfU0laRV9JUzoKICAgICAgICAgICAgICBjYXNlIG5zWFBUVHlwZTo6VF9Q
V1NUUklOR19TSVpFX0lTOgogICAgICAgICAgICAgIGNhc2UgbnNYUFRUeXBlOjpUX1VURjhTVFJJ
Tkc6CiAgICAgICAgICAgICAgY2FzZSBuc1hQVFR5cGU6OlRfQ1NUUklORzoKICAgICAgICAgICAg
ICBkZWZhdWx0OiB2YWwucCA9IG12LnZhbC5wOyBicmVhazsKICAgICAgICAgICAgfQogICAgICAg
IH0KICAgIH0KfTsKCgoKY2xhc3MgbnNYUFRDU3R1YkJhc2UgOiBwdWJsaWMgbnNJU3VwcG9ydHMK
ewpwdWJsaWM6CgoKCgogICAgdmlydHVhbCBuc3Jlc3VsdCBRdWVyeUludGVyZmFjZShjb25zdCBu
c0lJRCYgYUlJRCwgdm9pZCoqIGFJbnN0YW5jZVB0cik7CgoKCiMgMSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL3hwY29tL3hwdGNzdHVic2RlY2wuaW5jIiAxCiMgMTEgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS94cGNvbS94cHRjc3R1YnNkZWNsLmluYyIKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjMoKTsK
IHZpcnR1YWwgbnNyZXN1bHQgU3R1YjQoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjUoKTsKIHZp
cnR1YWwgbnNyZXN1bHQgU3R1YjYoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjcoKTsKIHZpcnR1
YWwgbnNyZXN1bHQgU3R1YjgoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjkoKTsKIHZpcnR1YWwg
bnNyZXN1bHQgU3R1YjEwKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxMSgpOwogdmlydHVhbCBu
c3Jlc3VsdCBTdHViMTIoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjEzKCk7CiB2aXJ0dWFsIG5z
cmVzdWx0IFN0dWIxNCgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTUoKTsKIHZpcnR1YWwgbnNy
ZXN1bHQgU3R1YjE2KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxNygpOwogdmlydHVhbCBuc3Jl
c3VsdCBTdHViMTgoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE5KCk7CiB2aXJ0dWFsIG5zcmVz
dWx0IFN0dWIyMCgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMjEoKTsKIHZpcnR1YWwgbnNyZXN1
bHQgU3R1YjIyKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIyMygpOwogdmlydHVhbCBuc3Jlc3Vs
dCBTdHViMjQoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjI1KCk7CiB2aXJ0dWFsIG5zcmVzdWx0
IFN0dWIyNigpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMjcoKTsKIHZpcnR1YWwgbnNyZXN1bHQg
U3R1YjI4KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIyOSgpOwogdmlydHVhbCBuc3Jlc3VsdCBT
dHViMzAoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjMxKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0
dWIzMigpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMzMoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1
YjM0KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIzNSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHVi
MzYoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjM3KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIz
OCgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMzkoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjQw
KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWI0MSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViNDIo
KTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjQzKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWI0NCgp
OwogdmlydHVhbCBuc3Jlc3VsdCBTdHViNDUoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjQ2KCk7
CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWI0NygpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViNDgoKTsK
IHZpcnR1YWwgbnNyZXN1bHQgU3R1YjQ5KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWI1MCgpOwog
dmlydHVhbCBuc3Jlc3VsdCBTdHViNTEoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjUyKCk7CiB2
aXJ0dWFsIG5zcmVzdWx0IFN0dWI1MygpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViNTQoKTsKIHZp
cnR1YWwgbnNyZXN1bHQgU3R1YjU1KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWI1NigpOwogdmly
dHVhbCBuc3Jlc3VsdCBTdHViNTcoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjU4KCk7CiB2aXJ0
dWFsIG5zcmVzdWx0IFN0dWI1OSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViNjAoKTsKIHZpcnR1
YWwgbnNyZXN1bHQgU3R1YjYxKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWI2MigpOwogdmlydHVh
bCBuc3Jlc3VsdCBTdHViNjMoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjY0KCk7CiB2aXJ0dWFs
IG5zcmVzdWx0IFN0dWI2NSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViNjYoKTsKIHZpcnR1YWwg
bnNyZXN1bHQgU3R1YjY3KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWI2OCgpOwogdmlydHVhbCBu
c3Jlc3VsdCBTdHViNjkoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjcwKCk7CiB2aXJ0dWFsIG5z
cmVzdWx0IFN0dWI3MSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViNzIoKTsKIHZpcnR1YWwgbnNy
ZXN1bHQgU3R1YjczKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWI3NCgpOwogdmlydHVhbCBuc3Jl
c3VsdCBTdHViNzUoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1Yjc2KCk7CiB2aXJ0dWFsIG5zcmVz
dWx0IFN0dWI3NygpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViNzgoKTsKIHZpcnR1YWwgbnNyZXN1
bHQgU3R1Yjc5KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWI4MCgpOwogdmlydHVhbCBuc3Jlc3Vs
dCBTdHViODEoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjgyKCk7CiB2aXJ0dWFsIG5zcmVzdWx0
IFN0dWI4MygpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViODQoKTsKIHZpcnR1YWwgbnNyZXN1bHQg
U3R1Yjg1KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWI4NigpOwogdmlydHVhbCBuc3Jlc3VsdCBT
dHViODcoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1Yjg4KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0
dWI4OSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViOTAoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1
YjkxKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWI5MigpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHVi
OTMoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1Yjk0KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWI5
NSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViOTYoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1Yjk3
KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWI5OCgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViOTko
KTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjEwMCgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTAx
KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxMDIoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjEw
MygpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTA0KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIx
MDUoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjEwNigpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHVi
MTA3KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxMDgoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1
YjEwOSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTEwKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0
dWIxMTEoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjExMigpOwogdmlydHVhbCBuc3Jlc3VsdCBT
dHViMTEzKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxMTQoKTsKIHZpcnR1YWwgbnNyZXN1bHQg
U3R1YjExNSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTE2KCk7CiB2aXJ0dWFsIG5zcmVzdWx0
IFN0dWIxMTcoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjExOCgpOwogdmlydHVhbCBuc3Jlc3Vs
dCBTdHViMTE5KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxMjAoKTsKIHZpcnR1YWwgbnNyZXN1
bHQgU3R1YjEyMSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTIyKCk7CiB2aXJ0dWFsIG5zcmVz
dWx0IFN0dWIxMjMoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjEyNCgpOwogdmlydHVhbCBuc3Jl
c3VsdCBTdHViMTI1KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxMjYoKTsKIHZpcnR1YWwgbnNy
ZXN1bHQgU3R1YjEyNygpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTI4KCk7CiB2aXJ0dWFsIG5z
cmVzdWx0IFN0dWIxMjkoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjEzMCgpOwogdmlydHVhbCBu
c3Jlc3VsdCBTdHViMTMxKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxMzIoKTsKIHZpcnR1YWwg
bnNyZXN1bHQgU3R1YjEzMygpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTM0KCk7CiB2aXJ0dWFs
IG5zcmVzdWx0IFN0dWIxMzUoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjEzNigpOwogdmlydHVh
bCBuc3Jlc3VsdCBTdHViMTM3KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxMzgoKTsKIHZpcnR1
YWwgbnNyZXN1bHQgU3R1YjEzOSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTQwKCk7CiB2aXJ0
dWFsIG5zcmVzdWx0IFN0dWIxNDEoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE0MigpOwogdmly
dHVhbCBuc3Jlc3VsdCBTdHViMTQzKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxNDQoKTsKIHZp
cnR1YWwgbnNyZXN1bHQgU3R1YjE0NSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTQ2KCk7CiB2
aXJ0dWFsIG5zcmVzdWx0IFN0dWIxNDcoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE0OCgpOwog
dmlydHVhbCBuc3Jlc3VsdCBTdHViMTQ5KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxNTAoKTsK
IHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE1MSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTUyKCk7
CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxNTMoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE1NCgp
OwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTU1KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxNTYo
KTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE1NygpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTU4
KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxNTkoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE2
MCgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTYxKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIx
NjIoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE2MygpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHVi
MTY0KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxNjUoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1
YjE2NigpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTY3KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0
dWIxNjgoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE2OSgpOwogdmlydHVhbCBuc3Jlc3VsdCBT
dHViMTcwKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxNzEoKTsKIHZpcnR1YWwgbnNyZXN1bHQg
U3R1YjE3MigpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTczKCk7CiB2aXJ0dWFsIG5zcmVzdWx0
IFN0dWIxNzQoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE3NSgpOwogdmlydHVhbCBuc3Jlc3Vs
dCBTdHViMTc2KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxNzcoKTsKIHZpcnR1YWwgbnNyZXN1
bHQgU3R1YjE3OCgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTc5KCk7CiB2aXJ0dWFsIG5zcmVz
dWx0IFN0dWIxODAoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE4MSgpOwogdmlydHVhbCBuc3Jl
c3VsdCBTdHViMTgyKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxODMoKTsKIHZpcnR1YWwgbnNy
ZXN1bHQgU3R1YjE4NCgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTg1KCk7CiB2aXJ0dWFsIG5z
cmVzdWx0IFN0dWIxODYoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE4NygpOwogdmlydHVhbCBu
c3Jlc3VsdCBTdHViMTg4KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxODkoKTsKIHZpcnR1YWwg
bnNyZXN1bHQgU3R1YjE5MCgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTkxKCk7CiB2aXJ0dWFs
IG5zcmVzdWx0IFN0dWIxOTIoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE5MygpOwogdmlydHVh
bCBuc3Jlc3VsdCBTdHViMTk0KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIxOTUoKTsKIHZpcnR1
YWwgbnNyZXN1bHQgU3R1YjE5NigpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMTk3KCk7CiB2aXJ0
dWFsIG5zcmVzdWx0IFN0dWIxOTgoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjE5OSgpOwogdmly
dHVhbCBuc3Jlc3VsdCBTdHViMjAwKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIyMDEoKTsKIHZp
cnR1YWwgbnNyZXN1bHQgU3R1YjIwMigpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMjAzKCk7CiB2
aXJ0dWFsIG5zcmVzdWx0IFN0dWIyMDQoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjIwNSgpOwog
dmlydHVhbCBuc3Jlc3VsdCBTdHViMjA2KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIyMDcoKTsK
IHZpcnR1YWwgbnNyZXN1bHQgU3R1YjIwOCgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMjA5KCk7
CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIyMTAoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjIxMSgp
OwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMjEyKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIyMTMo
KTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjIxNCgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMjE1
KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIyMTYoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjIx
NygpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMjE4KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIy
MTkoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjIyMCgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHVi
MjIxKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIyMjIoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1
YjIyMygpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMjI0KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0
dWIyMjUoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjIyNigpOwogdmlydHVhbCBuc3Jlc3VsdCBT
dHViMjI3KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIyMjgoKTsKIHZpcnR1YWwgbnNyZXN1bHQg
U3R1YjIyOSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMjMwKCk7CiB2aXJ0dWFsIG5zcmVzdWx0
IFN0dWIyMzEoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjIzMigpOwogdmlydHVhbCBuc3Jlc3Vs
dCBTdHViMjMzKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIyMzQoKTsKIHZpcnR1YWwgbnNyZXN1
bHQgU3R1YjIzNSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMjM2KCk7CiB2aXJ0dWFsIG5zcmVz
dWx0IFN0dWIyMzcoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjIzOCgpOwogdmlydHVhbCBuc3Jl
c3VsdCBTdHViMjM5KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIyNDAoKTsKIHZpcnR1YWwgbnNy
ZXN1bHQgU3R1YjI0MSgpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMjQyKCk7CiB2aXJ0dWFsIG5z
cmVzdWx0IFN0dWIyNDMoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU3R1YjI0NCgpOwogdmlydHVhbCBu
c3Jlc3VsdCBTdHViMjQ1KCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFN0dWIyNDYoKTsKIHZpcnR1YWwg
bnNyZXN1bHQgU3R1YjI0NygpOwogdmlydHVhbCBuc3Jlc3VsdCBTdHViMjQ4KCk7CiB2aXJ0dWFs
IG5zcmVzdWx0IFN0dWIyNDkoKTsKCgogdmlydHVhbCBuc3Jlc3VsdCBTZW50aW5lbDAoKTsKIHZp
cnR1YWwgbnNyZXN1bHQgU2VudGluZWwxKCk7CiB2aXJ0dWFsIG5zcmVzdWx0IFNlbnRpbmVsMigp
OwogdmlydHVhbCBuc3Jlc3VsdCBTZW50aW5lbDMoKTsKIHZpcnR1YWwgbnNyZXN1bHQgU2VudGlu
ZWw0KCk7CiMgMjAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20veHB0Y2FsbC5oIiAyCgoK
CgoKICAgIHZpcnR1YWwgbnNyZXN1bHQgR2V0SW50ZXJmYWNlSW5mbyhuc0lJbnRlcmZhY2VJbmZv
KiogaW5mbykgPSAwOwoKCiAgICB2aXJ0dWFsIG5zcmVzdWx0IENhbGxNZXRob2QoUFJVaW50MTYg
bWV0aG9kSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbnNYUFRNZXRob2RJ
bmZvKiBpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgIG5zWFBUQ01pbmlWYXJpYW50KiBw
YXJhbXMpID0gMDsKfTsKCgpleHRlcm4gIkMiIHsKCm5zcmVzdWx0ClhQVENfSW52b2tlQnlJbmRl
eChuc0lTdXBwb3J0cyogdGhhdCwgUFJVaW50MzIgbWV0aG9kSW5kZXgsCiAgICAgICAgICAgICAg
ICAgICBQUlVpbnQzMiBwYXJhbUNvdW50LCBuc1hQVENWYXJpYW50KiBwYXJhbXMpOwoKCmV4dGVy
biB2b2lkIHhwdGNfZHVtbXkoKTsKZXh0ZXJuIHZvaWQgeHB0Y19kdW1teTIoKTsKCn0KIyA1NSAi
bnNET01DbGFzc0luZm8uY3BwIiAyCgoKCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pz
bnVtLmgiIDEKIyA0OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzbnVtLmgiCmV4dGVybiAi
QyIgewojIDY3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNudW0uaCIKdHlwZWRlZiB1bmlv
biB7CiAgICBqc2RvdWJsZSB2YWx1ZTsKICAgIHN0cnVjdCB7CgogICAgICAgIHVpbnQzMiBsc3c7
CiAgICAgICAgdWludDMyIG1zdzsKCgoKCiAgICB9IHBhcnRzOwp9IGpzX2llZWVfZG91YmxlX3No
YXBlX3R5cGU7CiMgMTQ2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNudW0uaCIKZXh0ZXJu
IEpTQm9vbApqc19Jbml0UnVudGltZU51bWJlclN0YXRlKEpTQ29udGV4dCAqY3gpOwoKZXh0ZXJu
IHZvaWQKanNfRmluaXNoUnVudGltZU51bWJlclN0YXRlKEpTQ29udGV4dCAqY3gpOwoKCmV4dGVy
biBKU09iamVjdCAqCmpzX0luaXROdW1iZXJDbGFzcyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAq
b2JqKTsKCgoKCmV4dGVybiBjb25zdCBjaGFyIGpzX0luZmluaXR5X3N0cltdOwpleHRlcm4gY29u
c3QgY2hhciBqc19OYU5fc3RyW107CmV4dGVybiBjb25zdCBjaGFyIGpzX2lzTmFOX3N0cltdOwpl
eHRlcm4gY29uc3QgY2hhciBqc19pc0Zpbml0ZV9zdHJbXTsKZXh0ZXJuIGNvbnN0IGNoYXIganNf
cGFyc2VGbG9hdF9zdHJbXTsKZXh0ZXJuIGNvbnN0IGNoYXIganNfcGFyc2VJbnRfc3RyW107CgoK
ZXh0ZXJuIGpzZG91YmxlICoKanNfTmV3RG91YmxlKEpTQ29udGV4dCAqY3gsIGpzZG91YmxlIGQp
OwoKZXh0ZXJuIHZvaWQKanNfRmluYWxpemVEb3VibGUoSlNDb250ZXh0ICpjeCwganNkb3VibGUg
KmRwKTsKCmV4dGVybiBKU0Jvb2wKanNfTmV3RG91YmxlVmFsdWUoSlNDb250ZXh0ICpjeCwganNk
b3VibGUgZCwganN2YWwgKnJ2YWwpOwoKZXh0ZXJuIEpTQm9vbApqc19OZXdOdW1iZXJWYWx1ZShK
U0NvbnRleHQgKmN4LCBqc2RvdWJsZSBkLCBqc3ZhbCAqcnZhbCk7CgoKZXh0ZXJuIEpTT2JqZWN0
ICoKanNfTnVtYmVyVG9PYmplY3QoSlNDb250ZXh0ICpjeCwganNkb3VibGUgZCk7CgoKZXh0ZXJu
IEpTU3RyaW5nICoKanNfTnVtYmVyVG9TdHJpbmcoSlNDb250ZXh0ICpjeCwganNkb3VibGUgZCk7
CgoKCgoKZXh0ZXJuIEpTQm9vbApqc19WYWx1ZVRvTnVtYmVyKEpTQ29udGV4dCAqY3gsIGpzdmFs
IHYsIGpzZG91YmxlICpkcCk7CgoKCgoKZXh0ZXJuIEpTQm9vbApqc19WYWx1ZVRvRUNNQUludDMy
KEpTQ29udGV4dCAqY3gsIGpzdmFsIHYsIGludDMyICppcCk7CgpleHRlcm4gSlNCb29sCmpzX0Rv
dWJsZVRvRUNNQUludDMyKEpTQ29udGV4dCAqY3gsIGpzZG91YmxlIGQsIGludDMyICppcCk7CgoK
CgoKZXh0ZXJuIEpTQm9vbApqc19WYWx1ZVRvRUNNQVVpbnQzMihKU0NvbnRleHQgKmN4LCBqc3Zh
bCB2LCB1aW50MzIgKmlwKTsKCmV4dGVybiBKU0Jvb2wKanNfRG91YmxlVG9FQ01BVWludDMyKEpT
Q29udGV4dCAqY3gsIGpzZG91YmxlIGQsIHVpbnQzMiAqaXApOwoKCgoKCgpleHRlcm4gSlNCb29s
CmpzX1ZhbHVlVG9JbnQzMihKU0NvbnRleHQgKmN4LCBqc3ZhbCB2LCBpbnQzMiAqaXApOwoKCgoK
CmV4dGVybiBKU0Jvb2wKanNfVmFsdWVUb1VpbnQxNihKU0NvbnRleHQgKmN4LCBqc3ZhbCB2LCB1
aW50MTYgKmlwKTsKCgoKCgpleHRlcm4ganNkb3VibGUKanNfRG91YmxlVG9JbnRlZ2VyKGpzZG91
YmxlIGQpOwojIDI0NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzbnVtLmgiCmV4dGVybiBK
U0Jvb2wKanNfc3RydG9kKEpTQ29udGV4dCAqY3gsIGNvbnN0IGpzY2hhciAqcywgY29uc3QganNj
aGFyICoqZXAsIGpzZG91YmxlICpkcCk7CiMgMjU1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMv
anNudW0uaCIKZXh0ZXJuIEpTQm9vbApqc19zdHJ0b2ludGVnZXIoSlNDb250ZXh0ICpjeCwgY29u
c3QganNjaGFyICpzLCBjb25zdCBqc2NoYXIgKiplcCwganNpbnQgcmFkaXgsIGpzZG91YmxlICpk
cCk7Cgp9CiMgNTkgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9qcy9qc2RiZ2FwaS5oIiAxCiMgNDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2Ri
Z2FwaS5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc29wY29kZS5oIiAxCiMgNDAg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc29wY29kZS5oIgojIDEgIi91c3IvbGliL2djYy1s
aWIvaTU4Ni1wYy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgNDEgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc29wY29kZS5oIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2pzL2pzcHJ2dGQuaCIgMQojIDU1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvanMvanNw
cnZ0ZC5oIgp0eXBlZGVmIHVpbnQ4IGpzYnl0ZWNvZGU7CnR5cGVkZWYgdWludDgganNzcmNub3Rl
Owp0eXBlZGVmIHVpbnQzMiBqc2F0b21pZDsKCgp0eXBlZGVmIHN0cnVjdCBKU0FyZ3VtZW50Rm9y
bWF0TWFwIEpTQXJndW1lbnRGb3JtYXRNYXA7CnR5cGVkZWYgc3RydWN0IEpTQ29kZUdlbmVyYXRv
ciBKU0NvZGVHZW5lcmF0b3I7CnR5cGVkZWYgc3RydWN0IEpTRGVwZW5kZW50U3RyaW5nIEpTRGVw
ZW5kZW50U3RyaW5nOwp0eXBlZGVmIHN0cnVjdCBKU0dDTG9ja0hhc2hFbnRyeSBKU0dDTG9ja0hh
c2hFbnRyeTsKdHlwZWRlZiBzdHJ1Y3QgSlNHQ1Jvb3RIYXNoRW50cnkgSlNHQ1Jvb3RIYXNoRW50
cnk7CnR5cGVkZWYgc3RydWN0IEpTR0NUaGluZyBKU0dDVGhpbmc7CnR5cGVkZWYgc3RydWN0IEpT
UGFyc2VOb2RlIEpTUGFyc2VOb2RlOwp0eXBlZGVmIHN0cnVjdCBKU1NoYXJwT2JqZWN0TWFwIEpT
U2hhcnBPYmplY3RNYXA7CnR5cGVkZWYgc3RydWN0IEpTVG9rZW4gSlNUb2tlbjsKdHlwZWRlZiBz
dHJ1Y3QgSlNUb2tlblBvcyBKU1Rva2VuUG9zOwp0eXBlZGVmIHN0cnVjdCBKU1Rva2VuUHRyIEpT
VG9rZW5QdHI7CnR5cGVkZWYgc3RydWN0IEpTVG9rZW5TdHJlYW0gSlNUb2tlblN0cmVhbTsKdHlw
ZWRlZiBzdHJ1Y3QgSlNUcmVlQ29udGV4dCBKU1RyZWVDb250ZXh0Owp0eXBlZGVmIHN0cnVjdCBK
U1RyeU5vdGUgSlNUcnlOb3RlOwoKCnR5cGVkZWYgc3RydWN0IEpTQXRvbSBKU0F0b207CnR5cGVk
ZWYgc3RydWN0IEpTQXRvbUxpc3QgSlNBdG9tTGlzdDsKdHlwZWRlZiBzdHJ1Y3QgSlNBdG9tTGlz
dEVsZW1lbnQgSlNBdG9tTGlzdEVsZW1lbnQ7CnR5cGVkZWYgc3RydWN0IEpTQXRvbU1hcCBKU0F0
b21NYXA7CnR5cGVkZWYgc3RydWN0IEpTQXRvbVN0YXRlIEpTQXRvbVN0YXRlOwp0eXBlZGVmIHN0
cnVjdCBKU0NvZGVTcGVjIEpTQ29kZVNwZWM7CnR5cGVkZWYgc3RydWN0IEpTUHJpbnRlciBKU1By
aW50ZXI7CnR5cGVkZWYgc3RydWN0IEpTUmVnRXhwIEpTUmVnRXhwOwp0eXBlZGVmIHN0cnVjdCBK
U1JlZ0V4cFN0YXRpY3MgSlNSZWdFeHBTdGF0aWNzOwp0eXBlZGVmIHN0cnVjdCBKU1Njb3BlIEpT
U2NvcGU7CnR5cGVkZWYgc3RydWN0IEpTU2NvcGVPcHMgSlNTY29wZU9wczsKdHlwZWRlZiBzdHJ1
Y3QgSlNTY29wZVByb3BlcnR5IEpTU2NvcGVQcm9wZXJ0eTsKdHlwZWRlZiBzdHJ1Y3QgSlNTdGFj
a0ZyYW1lIEpTU3RhY2tGcmFtZTsKdHlwZWRlZiBzdHJ1Y3QgSlNTdGFja0hlYWRlciBKU1N0YWNr
SGVhZGVyOwp0eXBlZGVmIHN0cnVjdCBKU1N1YlN0cmluZyBKU1N1YlN0cmluZzsKCgp0eXBlZGVm
IGVudW0gSlNUcmFwU3RhdHVzIHsKICAgIEpTVFJBUF9FUlJPUiwKICAgIEpTVFJBUF9DT05USU5V
RSwKICAgIEpTVFJBUF9SRVRVUk4sCiAgICBKU1RSQVBfVEhST1csCiAgICBKU1RSQVBfTElNSVQK
fSBKU1RyYXBTdGF0dXM7Cgp0eXBlZGVmIEpTVHJhcFN0YXR1cwooKiBKU1RyYXBIYW5kbGVyKShK
U0NvbnRleHQgKmN4LCBKU1NjcmlwdCAqc2NyaXB0LCBqc2J5dGVjb2RlICpwYywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGpzdmFsICpydmFsLCB2b2lkICpjbG9zdXJlKTsKCnR5
cGVkZWYgSlNCb29sCigqIEpTV2F0Y2hQb2ludEhhbmRsZXIpKEpTQ29udGV4dCAqY3gsIEpTT2Jq
ZWN0ICpvYmosIGpzdmFsIGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAganN2YWwgb2xkLCBqc3ZhbCAqbmV3cCwgdm9pZCAqY2xvc3VyZSk7CgoKdHlwZWRlZiB2b2lk
CigqIEpTTmV3U2NyaXB0SG9vaykoSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnROIGxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSlNTY3JpcHQgKnNjcmlwdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSlNGdW5jdGlvbiAqZnVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICpjYWxsZXJkYXRhKTsKCgp0eXBlZGVmIHZvaWQKKCogSlNEZXN0cm95U2NyaXB0SG9v
aykoSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEpTU2NyaXB0ICpzY3JpcHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICpjYWxsZXJkYXRhKTsKCnR5cGVkZWYgdm9pZAooKiBKU1NvdXJjZUhhbmRsZXIpKGNv
bnN0IGNoYXIgKmZpbGVuYW1lLCB1aW50TiBsaW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGpzY2hhciAqc3RyLCBzaXplX3QgbGVuZ3RoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2b2lkICoqbGlzdGVuZXJUU0RhdGEsIHZvaWQgKmNsb3N1cmUp
OwojIDE1NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzcHJ2dGQuaCIKdHlwZWRlZiB2b2lk
ICoKKCogSlNJbnRlcnByZXRlckhvb2spKEpTQ29udGV4dCAqY3gsIEpTU3RhY2tGcmFtZSAqZnAs
IEpTQm9vbCBiZWZvcmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNC
b29sICpvaywgdm9pZCAqY2xvc3VyZSk7Cgp0eXBlZGVmIHZvaWQKKCogSlNPYmplY3RIb29rKShK
U0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBKU0Jvb2wgaXNOZXcsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZvaWQgKmNsb3N1cmUpOwoKdHlwZWRlZiBKU0Jvb2wKKCogSlNE
ZWJ1Z0Vycm9ySG9vaykoSlNDb250ZXh0ICpjeCwgY29uc3QgY2hhciAqbWVzc2FnZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTRXJyb3JSZXBvcnQgKnJlcG9ydCwgdm9p
ZCAqY2xvc3VyZSk7CiMgNDIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc29wY29kZS5oIiAy
CgoKZXh0ZXJuICJDIiB7CgoKCgp0eXBlZGVmIGVudW0gSlNPcCB7CgoKIyAxICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvanMvanNvcGNvZGUudGJsIiAxCiMgNjcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9qcy9qc29wY29kZS50YmwiCkpTT1BfTk9QID0gMCwKSlNPUF9QVVNIID0gMSwKSlNPUF9QT1BW
ID0gMiwKSlNPUF9FTlRFUldJVEggPSAzLApKU09QX0xFQVZFV0lUSCA9IDQsCkpTT1BfUkVUVVJO
ID0gNSwKSlNPUF9HT1RPID0gNiwKSlNPUF9JRkVRID0gNywKSlNPUF9JRk5FID0gOCwKCgpKU09Q
X0FSR1VNRU5UUyA9IDksCgoKSlNPUF9GT1JBUkcgPSAxMCwKSlNPUF9GT1JWQVIgPSAxMSwKCgpK
U09QX0RVUCA9IDEyLApKU09QX0RVUDIgPSAxMywKSlNPUF9TRVRDT05TVCA9IDE0LApKU09QX0JJ
VE9SID0gMTUsCkpTT1BfQklUWE9SID0gMTYsCkpTT1BfQklUQU5EID0gMTcsCkpTT1BfRVEgPSAx
OCwKSlNPUF9ORSA9IDE5LApKU09QX0xUID0gMjAsCkpTT1BfTEUgPSAyMSwKSlNPUF9HVCA9IDIy
LApKU09QX0dFID0gMjMsCkpTT1BfTFNIID0gMjQsCkpTT1BfUlNIID0gMjUsCkpTT1BfVVJTSCA9
IDI2LApKU09QX0FERCA9IDI3LApKU09QX1NVQiA9IDI4LApKU09QX01VTCA9IDI5LApKU09QX0RJ
ViA9IDMwLApKU09QX01PRCA9IDMxLApKU09QX05PVCA9IDMyLApKU09QX0JJVE5PVCA9IDMzLApK
U09QX05FRyA9IDM0LApKU09QX05FVyA9IDM1LApKU09QX0RFTE5BTUUgPSAzNiwKSlNPUF9ERUxQ
Uk9QID0gMzcsCkpTT1BfREVMRUxFTSA9IDM4LApKU09QX1RZUEVPRiA9IDM5LApKU09QX1ZPSUQg
PSA0MCwKSlNPUF9JTkNOQU1FID0gNDEsCkpTT1BfSU5DUFJPUCA9IDQyLApKU09QX0lOQ0VMRU0g
PSA0MywKSlNPUF9ERUNOQU1FID0gNDQsCkpTT1BfREVDUFJPUCA9IDQ1LApKU09QX0RFQ0VMRU0g
PSA0NiwKSlNPUF9OQU1FSU5DID0gNDcsCkpTT1BfUFJPUElOQyA9IDQ4LApKU09QX0VMRU1JTkMg
PSA0OSwKSlNPUF9OQU1FREVDID0gNTAsCkpTT1BfUFJPUERFQyA9IDUxLApKU09QX0VMRU1ERUMg
PSA1MiwKSlNPUF9HRVRQUk9QID0gNTMsCkpTT1BfU0VUUFJPUCA9IDU0LApKU09QX0dFVEVMRU0g
PSA1NSwKSlNPUF9TRVRFTEVNID0gNTYsCkpTT1BfUFVTSE9CSiA9IDU3LApKU09QX0NBTEwgPSA1
OCwKSlNPUF9OQU1FID0gNTksCkpTT1BfTlVNQkVSID0gNjAsCkpTT1BfU1RSSU5HID0gNjEsCkpT
T1BfWkVSTyA9IDYyLApKU09QX09ORSA9IDYzLApKU09QX05VTEwgPSA2NCwKSlNPUF9USElTID0g
NjUsCkpTT1BfRkFMU0UgPSA2NiwKSlNPUF9UUlVFID0gNjcsCkpTT1BfT1IgPSA2OCwKSlNPUF9B
TkQgPSA2OSwKCgpKU09QX1RBQkxFU1dJVENIID0gNzAsCkpTT1BfTE9PS1VQU1dJVENIID0gNzEs
CgoKSlNPUF9ORVdfRVEgPSA3MiwKSlNPUF9ORVdfTkUgPSA3MywKCgpKU09QX0NMT1NVUkUgPSA3
NCwKCgpKU09QX0VYUE9SVEFMTCA9IDc1LApKU09QX0VYUE9SVE5BTUUgPSA3NiwKSlNPUF9JTVBP
UlRBTEwgPSA3NywKSlNPUF9JTVBPUlRQUk9QID0gNzgsCkpTT1BfSU1QT1JURUxFTSA9IDc5LAoK
CkpTT1BfT0JKRUNUID0gODAsCgoKSlNPUF9QT1AgPSA4MSwKCgpKU09QX1BPUyA9IDgyLAoKCkpT
T1BfVFJBUCA9IDgzLAoKCkpTT1BfR0VUQVJHID0gODQsCkpTT1BfU0VUQVJHID0gODUsCkpTT1Bf
R0VUVkFSID0gODYsCkpTT1BfU0VUVkFSID0gODcsCgoKSlNPUF9VSU5UMTYgPSA4OCwKCgpKU09Q
X05FV0lOSVQgPSA4OSwKSlNPUF9FTkRJTklUID0gOTAsCkpTT1BfSU5JVFBST1AgPSA5MSwKSlNP
UF9JTklURUxFTSA9IDkyLApKU09QX0RFRlNIQVJQID0gOTMsCkpTT1BfVVNFU0hBUlAgPSA5NCwK
CgpKU09QX0lOQ0FSRyA9IDk1LApKU09QX0lOQ1ZBUiA9IDk2LApKU09QX0RFQ0FSRyA9IDk3LApK
U09QX0RFQ1ZBUiA9IDk4LApKU09QX0FSR0lOQyA9IDk5LApKU09QX1ZBUklOQyA9IDEwMCwKSlNP
UF9BUkdERUMgPSAxMDEsCkpTT1BfVkFSREVDID0gMTAyLAoKCkpTT1BfVE9PQkpFQ1QgPSAxMDMs
CkpTT1BfRk9STkFNRSA9IDEwNCwKSlNPUF9GT1JQUk9QID0gMTA1LApKU09QX0ZPUkVMRU0gPSAx
MDYsCkpTT1BfUE9QMiA9IDEwNywKCgpKU09QX0JJTkROQU1FID0gMTA4LApKU09QX1NFVE5BTUUg
PSAxMDksCgoKSlNPUF9USFJPVyA9IDExMCwKCgpKU09QX0lOID0gMTExLApKU09QX0lOU1RBTkNF
T0YgPSAxMTIsCgoKSlNPUF9ERUJVR0dFUiA9IDExMywKCgpKU09QX0dPU1VCID0gMTE0LApKU09Q
X1JFVFNVQiA9IDExNSwKCgpKU09QX0VYQ0VQVElPTiA9IDExNiwKSlNPUF9TRVRTUCA9IDExNywK
CgoKCgoKSlNPUF9DT05EU1dJVENIID0gMTE4LApKU09QX0NBU0UgPSAxMTksCkpTT1BfREVGQVVM
VCA9IDEyMCwKCgoKCkpTT1BfRVZBTCA9IDEyMSwKCgoKCkpTT1BfRU5VTUVMRU0gPSAxMjIsCgoK
CgoKCkpTT1BfR0VUVEVSID0gMTIzLApKU09QX1NFVFRFUiA9IDEyNCwKCgoKCkpTT1BfREVGRlVO
ID0gMTI1LApKU09QX0RFRkNPTlNUID0gMTI2LApKU09QX0RFRlZBUiA9IDEyNywKCgpKU09QX0FO
T05GVU5PQkogPSAxMjgsCgoKSlNPUF9OQU1FREZVTk9CSiA9IDEyOSwKCgpKU09QX0lOSVRDQVRD
SFZBUiA9IDEzMCwKCgpKU09QX0dST1VQID0gMTMxLAoKCkpTT1BfU0VUQ0FMTCA9IDEzMiwKCgoK
CgpKU09QX1RSWSA9IDEzMywKSlNPUF9GSU5BTExZID0gMTM0LAoKCgoKCgoKSlNPUF9TV0FQID0g
MTM1LAoKCgoKCgpKU09QX0FSR1NVQiA9IDEzNiwKSlNPUF9BUkdDTlQgPSAxMzcsCgoKCgoKCkpT
T1BfREVGTE9DQUxGVU4gPSAxMzgsCgoKSlNPUF9HT1RPWCA9IDEzOSwKSlNPUF9JRkVRWCA9IDE0
MCwKSlNPUF9JRk5FWCA9IDE0MSwKSlNPUF9PUlggPSAxNDIsCkpTT1BfQU5EWCA9IDE0MywKSlNP
UF9HT1NVQlggPSAxNDQsCkpTT1BfQ0FTRVggPSAxNDUsCkpTT1BfREVGQVVMVFggPSAxNDYsCkpT
T1BfVEFCTEVTV0lUQ0hYID0gMTQ3LApKU09QX0xPT0tVUFNXSVRDSFggPSAxNDgsCgoKSlNPUF9C
QUNLUEFUQ0ggPSAxNDksCkpTT1BfQkFDS1BBVENIX1BPUCA9IDE1MCwKSlNPUF9CQUNLUEFUQ0hf
UFVTSCA9IDE1MSwKCgpKU09QX1NFVFJWQUwgPSAxNTIsCkpTT1BfUkVUUlZBTCA9IDE1MywKIyA1
MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzb3Bjb2RlLmgiIDIKCiAgICBKU09QX0xJTUlU
Cn0gSlNPcDsKIyAxNjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc29wY29kZS5oIgpzdHJ1
Y3QgSlNDb2RlU3BlYyB7CiAgICBjb25zdCBjaGFyICpuYW1lOwogICAgY29uc3QgY2hhciAqdG9r
ZW47CiAgICBpbnQ4IGxlbmd0aDsKICAgIGludDggbnVzZXM7CiAgICBpbnQ4IG5kZWZzOwogICAg
dWludDggcHJlYzsKICAgIHVpbnQzMiBmb3JtYXQ7Cn07CgpleHRlcm4gY2hhciBqc19jb25zdF9z
dHJbXTsKZXh0ZXJuIGNoYXIganNfdmFyX3N0cltdOwpleHRlcm4gY2hhciBqc19mdW5jdGlvbl9z
dHJbXTsKZXh0ZXJuIGNoYXIganNfaW5fc3RyW107CmV4dGVybiBjaGFyIGpzX2luc3RhbmNlb2Zf
c3RyW107CmV4dGVybiBjaGFyIGpzX25ld19zdHJbXTsKZXh0ZXJuIGNoYXIganNfZGVsZXRlX3N0
cltdOwpleHRlcm4gY2hhciBqc190eXBlb2Zfc3RyW107CmV4dGVybiBjaGFyIGpzX3ZvaWRfc3Ry
W107CmV4dGVybiBjaGFyIGpzX251bGxfc3RyW107CmV4dGVybiBjaGFyIGpzX3RoaXNfc3RyW107
CmV4dGVybiBjaGFyIGpzX2ZhbHNlX3N0cltdOwpleHRlcm4gY2hhciBqc190cnVlX3N0cltdOwpl
eHRlcm4gSlNDb2RlU3BlYyBqc19Db2RlU3BlY1tdOwpleHRlcm4gdWludE4ganNfTnVtQ29kZVNw
ZWNzOwpleHRlcm4ganNjaGFyIGpzX0VzY2FwZU1hcFtdOwoKCgoKCgpleHRlcm4gSlNTdHJpbmcg
Kgpqc19RdW90ZVN0cmluZyhKU0NvbnRleHQgKmN4LCBKU1N0cmluZyAqc3RyLCBqc2NoYXIgcXVv
dGUpOwoKCgoKCgpleHRlcm4gSlNQcmludGVyICoKanNfTmV3UHJpbnRlcihKU0NvbnRleHQgKmN4
LCBjb25zdCBjaGFyICpuYW1lLCB1aW50TiBpbmRlbnQsIEpTQm9vbCBwcmV0dHkpOwoKZXh0ZXJu
IHZvaWQKanNfRGVzdHJveVByaW50ZXIoSlNQcmludGVyICpqcCk7CgpleHRlcm4gSlNTdHJpbmcg
Kgpqc19HZXRQcmludGVyT3V0cHV0KEpTUHJpbnRlciAqanApOwoKZXh0ZXJuIGludApqc19wcmlu
dGYoSlNQcmludGVyICpqcCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOwoKZXh0ZXJuIEpTQm9v
bApqc19wdXRzKEpTUHJpbnRlciAqanAsIGNvbnN0IGNoYXIgKnMpOwojIDIzNyAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2pzL2pzb3Bjb2RlLmgiCmV4dGVybiBKU0Jvb2wKanNfRGVjb21waWxlQ29k
ZShKU1ByaW50ZXIgKmpwLCBKU1NjcmlwdCAqc2NyaXB0LCBqc2J5dGVjb2RlICpwYywgdWludE4g
bGVuKTsKCmV4dGVybiBKU0Jvb2wKanNfRGVjb21waWxlU2NyaXB0KEpTUHJpbnRlciAqanAsIEpT
U2NyaXB0ICpzY3JpcHQpOwoKZXh0ZXJuIEpTQm9vbApqc19EZWNvbXBpbGVGdW5jdGlvbkJvZHko
SlNQcmludGVyICpqcCwgSlNGdW5jdGlvbiAqZnVuKTsKCmV4dGVybiBKU0Jvb2wKanNfRGVjb21w
aWxlRnVuY3Rpb24oSlNQcmludGVyICpqcCwgSlNGdW5jdGlvbiAqZnVuKTsKIyAyNTkgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9qcy9qc29wY29kZS5oIgpleHRlcm4gSlNTdHJpbmcgKgpqc19EZWNv
bXBpbGVWYWx1ZUdlbmVyYXRvcihKU0NvbnRleHQgKmN4LCBpbnROIHNwaW5kZXgsIGpzdmFsIHYs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTU3RyaW5nICpmYWxsYmFjayk7CgoKCgp9CiMg
NDIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2RiZ2FwaS5oIiAyCgoKZXh0ZXJuICJDIiB7
CgpleHRlcm4gdm9pZApqc19QYXRjaE9wY29kZShKU0NvbnRleHQgKmN4LCBKU1NjcmlwdCAqc2Ny
aXB0LCBqc2J5dGVjb2RlICpwYywgSlNPcCBvcCk7CgpleHRlcm4gSlNCb29sCkpTX1NldFRyYXAo
SlNDb250ZXh0ICpjeCwgSlNTY3JpcHQgKnNjcmlwdCwganNieXRlY29kZSAqcGMsCiAgICAgICAg
ICAgSlNUcmFwSGFuZGxlciBoYW5kbGVyLCB2b2lkICpjbG9zdXJlKTsKCmV4dGVybiBKU09wCkpT
X0dldFRyYXBPcGNvZGUoSlNDb250ZXh0ICpjeCwgSlNTY3JpcHQgKnNjcmlwdCwganNieXRlY29k
ZSAqcGMpOwoKZXh0ZXJuIHZvaWQKSlNfQ2xlYXJUcmFwKEpTQ29udGV4dCAqY3gsIEpTU2NyaXB0
ICpzY3JpcHQsIGpzYnl0ZWNvZGUgKnBjLAogICAgICAgICAgICAgSlNUcmFwSGFuZGxlciAqaGFu
ZGxlcnAsIHZvaWQgKipjbG9zdXJlcCk7CgpleHRlcm4gdm9pZApKU19DbGVhclNjcmlwdFRyYXBz
KEpTQ29udGV4dCAqY3gsIEpTU2NyaXB0ICpzY3JpcHQpOwoKZXh0ZXJuIHZvaWQKSlNfQ2xlYXJB
bGxUcmFwcyhKU0NvbnRleHQgKmN4KTsKCmV4dGVybiBKU1RyYXBTdGF0dXMKSlNfSGFuZGxlVHJh
cChKU0NvbnRleHQgKmN4LCBKU1NjcmlwdCAqc2NyaXB0LCBqc2J5dGVjb2RlICpwYywganN2YWwg
KnJ2YWwpOwoKZXh0ZXJuIEpTQm9vbApKU19TZXRJbnRlcnJ1cHQoSlNSdW50aW1lICpydCwgSlNU
cmFwSGFuZGxlciBoYW5kbGVyLCB2b2lkICpjbG9zdXJlKTsKCmV4dGVybiBKU0Jvb2wKSlNfQ2xl
YXJJbnRlcnJ1cHQoSlNSdW50aW1lICpydCwgSlNUcmFwSGFuZGxlciAqaGFuZGxlcnAsIHZvaWQg
KipjbG9zdXJlcCk7CgoKCmV4dGVybiBKU0Jvb2wKSlNfU2V0V2F0Y2hQb2ludChKU0NvbnRleHQg
KmN4LCBKU09iamVjdCAqb2JqLCBqc3ZhbCBpZCwKICAgICAgICAgICAgICAgICBKU1dhdGNoUG9p
bnRIYW5kbGVyIGhhbmRsZXIsIHZvaWQgKmNsb3N1cmUpOwoKZXh0ZXJuIEpTQm9vbApKU19DbGVh
cldhdGNoUG9pbnQoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsCiAgICAg
ICAgICAgICAgICAgICBKU1dhdGNoUG9pbnRIYW5kbGVyICpoYW5kbGVycCwgdm9pZCAqKmNsb3N1
cmVwKTsKCmV4dGVybiBKU0Jvb2wKSlNfQ2xlYXJXYXRjaFBvaW50c0Zvck9iamVjdChKU0NvbnRl
eHQgKmN4LCBKU09iamVjdCAqb2JqKTsKCmV4dGVybiBKU0Jvb2wKSlNfQ2xlYXJBbGxXYXRjaFBv
aW50cyhKU0NvbnRleHQgKmN4KTsKIyAxMjAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qcy9qc2Ri
Z2FwaS5oIgpleHRlcm4gdWludE4KSlNfUENUb0xpbmVOdW1iZXIoSlNDb250ZXh0ICpjeCwgSlNT
Y3JpcHQgKnNjcmlwdCwganNieXRlY29kZSAqcGMpOwoKZXh0ZXJuIGpzYnl0ZWNvZGUgKgpKU19M
aW5lTnVtYmVyVG9QQyhKU0NvbnRleHQgKmN4LCBKU1NjcmlwdCAqc2NyaXB0LCB1aW50TiBsaW5l
bm8pOwoKZXh0ZXJuIEpTU2NyaXB0ICoKSlNfR2V0RnVuY3Rpb25TY3JpcHQoSlNDb250ZXh0ICpj
eCwgSlNGdW5jdGlvbiAqZnVuKTsKCmV4dGVybiBKU1ByaW5jaXBhbHMgKgpKU19HZXRTY3JpcHRQ
cmluY2lwYWxzKEpTQ29udGV4dCAqY3gsIEpTU2NyaXB0ICpzY3JpcHQpOwojIDEzOSAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL2pzL2pzZGJnYXBpLmgiCmV4dGVybiBKU1N0YWNrRnJhbWUgKgpKU19G
cmFtZUl0ZXJhdG9yKEpTQ29udGV4dCAqY3gsIEpTU3RhY2tGcmFtZSAqKml0ZXJhdG9ycCk7Cgpl
eHRlcm4gSlNTY3JpcHQgKgpKU19HZXRGcmFtZVNjcmlwdChKU0NvbnRleHQgKmN4LCBKU1N0YWNr
RnJhbWUgKmZwKTsKCmV4dGVybiBqc2J5dGVjb2RlICoKSlNfR2V0RnJhbWVQQyhKU0NvbnRleHQg
KmN4LCBKU1N0YWNrRnJhbWUgKmZwKTsKCmV4dGVybiBKU0Jvb2wKSlNfSXNOYXRpdmVGcmFtZShK
U0NvbnRleHQgKmN4LCBKU1N0YWNrRnJhbWUgKmZwKTsKCmV4dGVybiB2b2lkICoKSlNfR2V0RnJh
bWVBbm5vdGF0aW9uKEpTQ29udGV4dCAqY3gsIEpTU3RhY2tGcmFtZSAqZnApOwoKZXh0ZXJuIHZv
aWQKSlNfU2V0RnJhbWVBbm5vdGF0aW9uKEpTQ29udGV4dCAqY3gsIEpTU3RhY2tGcmFtZSAqZnAs
IHZvaWQgKmFubm90YXRpb24pOwoKZXh0ZXJuIHZvaWQgKgpKU19HZXRGcmFtZVByaW5jaXBhbEFy
cmF5KEpTQ29udGV4dCAqY3gsIEpTU3RhY2tGcmFtZSAqZnApOwoKCmV4dGVybiBKU09iamVjdCAq
CkpTX0dldEZyYW1lT2JqZWN0KEpTQ29udGV4dCAqY3gsIEpTU3RhY2tGcmFtZSAqZnApOwoKZXh0
ZXJuIEpTT2JqZWN0ICoKSlNfR2V0RnJhbWVTY29wZUNoYWluKEpTQ29udGV4dCAqY3gsIEpTU3Rh
Y2tGcmFtZSAqZnApOwoKZXh0ZXJuIEpTT2JqZWN0ICoKSlNfR2V0RnJhbWVDYWxsT2JqZWN0KEpT
Q29udGV4dCAqY3gsIEpTU3RhY2tGcmFtZSAqZnApOwoKZXh0ZXJuIEpTT2JqZWN0ICoKSlNfR2V0
RnJhbWVUaGlzKEpTQ29udGV4dCAqY3gsIEpTU3RhY2tGcmFtZSAqZnApOwoKZXh0ZXJuIEpTRnVu
Y3Rpb24gKgpKU19HZXRGcmFtZUZ1bmN0aW9uKEpTQ29udGV4dCAqY3gsIEpTU3RhY2tGcmFtZSAq
ZnApOwoKZXh0ZXJuIEpTT2JqZWN0ICoKSlNfR2V0RnJhbWVGdW5jdGlvbk9iamVjdChKU0NvbnRl
eHQgKmN4LCBKU1N0YWNrRnJhbWUgKmZwKTsKCgoKZXh0ZXJuIEpTQm9vbApKU19Jc0NvbnN0cnVj
dG9yRnJhbWUoSlNDb250ZXh0ICpjeCwgSlNTdGFja0ZyYW1lICpmcCk7CgpleHRlcm4gSlNCb29s
CkpTX0lzRGVidWdnZXJGcmFtZShKU0NvbnRleHQgKmN4LCBKU1N0YWNrRnJhbWUgKmZwKTsKCmV4
dGVybiBqc3ZhbApKU19HZXRGcmFtZVJldHVyblZhbHVlKEpTQ29udGV4dCAqY3gsIEpTU3RhY2tG
cmFtZSAqZnApOwoKZXh0ZXJuIHZvaWQKSlNfU2V0RnJhbWVSZXR1cm5WYWx1ZShKU0NvbnRleHQg
KmN4LCBKU1N0YWNrRnJhbWUgKmZwLCBqc3ZhbCBydmFsKTsKCgoKZXh0ZXJuIGNvbnN0IGNoYXIg
KgpKU19HZXRTY3JpcHRGaWxlbmFtZShKU0NvbnRleHQgKmN4LCBKU1NjcmlwdCAqc2NyaXB0KTsK
CmV4dGVybiB1aW50TgpKU19HZXRTY3JpcHRCYXNlTGluZU51bWJlcihKU0NvbnRleHQgKmN4LCBK
U1NjcmlwdCAqc2NyaXB0KTsKCmV4dGVybiB1aW50TgpKU19HZXRTY3JpcHRMaW5lRXh0ZW50KEpT
Q29udGV4dCAqY3gsIEpTU2NyaXB0ICpzY3JpcHQpOwoKZXh0ZXJuIEpTVmVyc2lvbgpKU19HZXRT
Y3JpcHRWZXJzaW9uKEpTQ29udGV4dCAqY3gsIEpTU2NyaXB0ICpzY3JpcHQpOwojIDIxNyAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzZGJnYXBpLmgiCmV4dGVybiB2b2lkCkpTX1NldE5ld1Nj
cmlwdEhvb2tQcm9jKEpTUnVudGltZSAqcnQsIEpTTmV3U2NyaXB0SG9vayBob29rLCB2b2lkICpj
YWxsZXJkYXRhKTsKCmV4dGVybiB2b2lkCkpTX1NldERlc3Ryb3lTY3JpcHRIb29rUHJvYyhKU1J1
bnRpbWUgKnJ0LCBKU0Rlc3Ryb3lTY3JpcHRIb29rIGhvb2ssCiAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQgKmNhbGxlcmRhdGEpOwoKCgpleHRlcm4gSlNCb29sCkpTX0V2YWx1YXRlVUNJblN0
YWNrRnJhbWUoSlNDb250ZXh0ICpjeCwgSlNTdGFja0ZyYW1lICpmcCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBqc2NoYXIgKmJ5dGVzLCB1aW50TiBsZW5ndGgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsIHVpbnROIGxpbmVubywKICAgICAg
ICAgICAgICAgICAgICAgICAgICBqc3ZhbCAqcnZhbCk7CgpleHRlcm4gSlNCb29sCkpTX0V2YWx1
YXRlSW5TdGFja0ZyYW1lKEpTQ29udGV4dCAqY3gsIEpTU3RhY2tGcmFtZSAqZnAsCiAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJ5dGVzLCB1aW50TiBsZW5ndGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCB1aW50TiBsaW5lbm8sCiAgICAg
ICAgICAgICAgICAgICAgICAgIGpzdmFsICpydmFsKTsKCgoKdHlwZWRlZiBzdHJ1Y3QgSlNQcm9w
ZXJ0eURlc2MgewogICAganN2YWwgaWQ7CiAgICBqc3ZhbCB2YWx1ZTsKICAgIHVpbnQ4IGZsYWdz
OwogICAgdWludDggc3BhcmU7CiAgICB1aW50MTYgc2xvdDsKICAgIGpzdmFsIGFsaWFzOwp9IEpT
UHJvcGVydHlEZXNjOwojIDI2MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2pzL2pzZGJnYXBpLmgi
CnR5cGVkZWYgc3RydWN0IEpTUHJvcGVydHlEZXNjQXJyYXkgewogICAgdWludDMyIGxlbmd0aDsK
ICAgIEpTUHJvcGVydHlEZXNjICphcnJheTsKfSBKU1Byb3BlcnR5RGVzY0FycmF5OwoKZXh0ZXJu
IEpTU2NvcGVQcm9wZXJ0eSAqCkpTX1Byb3BlcnR5SXRlcmF0b3IoSlNPYmplY3QgKm9iaiwgSlNT
Y29wZVByb3BlcnR5ICoqaXRlcmF0b3JwKTsKCmV4dGVybiBKU0Jvb2wKSlNfR2V0UHJvcGVydHlE
ZXNjKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIEpTU2NvcGVQcm9wZXJ0eSAqc3Byb3As
CiAgICAgICAgICAgICAgICAgICBKU1Byb3BlcnR5RGVzYyAqcGQpOwoKZXh0ZXJuIEpTQm9vbApK
U19HZXRQcm9wZXJ0eURlc2NBcnJheShKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBKU1By
b3BlcnR5RGVzY0FycmF5ICpwZGEpOwoKZXh0ZXJuIHZvaWQKSlNfUHV0UHJvcGVydHlEZXNjQXJy
YXkoSlNDb250ZXh0ICpjeCwgSlNQcm9wZXJ0eURlc2NBcnJheSAqcGRhKTsKCgoKZXh0ZXJuIEpT
Qm9vbApKU19TZXREZWJ1Z2dlckhhbmRsZXIoSlNSdW50aW1lICpydCwgSlNUcmFwSGFuZGxlciBo
YW5kbGVyLCB2b2lkICpjbG9zdXJlKTsKCmV4dGVybiBKU0Jvb2wKSlNfU2V0U291cmNlSGFuZGxl
cihKU1J1bnRpbWUgKnJ0LCBKU1NvdXJjZUhhbmRsZXIgaGFuZGxlciwgdm9pZCAqY2xvc3VyZSk7
CgpleHRlcm4gSlNCb29sCkpTX1NldEV4ZWN1dGVIb29rKEpTUnVudGltZSAqcnQsIEpTSW50ZXJw
cmV0ZXJIb29rIGhvb2ssIHZvaWQgKmNsb3N1cmUpOwoKZXh0ZXJuIEpTQm9vbApKU19TZXRDYWxs
SG9vayhKU1J1bnRpbWUgKnJ0LCBKU0ludGVycHJldGVySG9vayBob29rLCB2b2lkICpjbG9zdXJl
KTsKCmV4dGVybiBKU0Jvb2wKSlNfU2V0T2JqZWN0SG9vayhKU1J1bnRpbWUgKnJ0LCBKU09iamVj
dEhvb2sgaG9vaywgdm9pZCAqY2xvc3VyZSk7CgpleHRlcm4gSlNCb29sCkpTX1NldFRocm93SG9v
ayhKU1J1bnRpbWUgKnJ0LCBKU1RyYXBIYW5kbGVyIGhvb2ssIHZvaWQgKmNsb3N1cmUpOwoKZXh0
ZXJuIEpTQm9vbApKU19TZXREZWJ1Z0Vycm9ySG9vayhKU1J1bnRpbWUgKnJ0LCBKU0RlYnVnRXJy
b3JIb29rIGhvb2ssIHZvaWQgKmNsb3N1cmUpOwoKCgpleHRlcm4gc2l6ZV90CkpTX0dldE9iamVj
dFRvdGFsU2l6ZShKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqKTsKCmV4dGVybiBzaXplX3QK
SlNfR2V0RnVuY3Rpb25Ub3RhbFNpemUoSlNDb250ZXh0ICpjeCwgSlNGdW5jdGlvbiAqZnVuKTsK
CmV4dGVybiBzaXplX3QKSlNfR2V0U2NyaXB0VG90YWxTaXplKEpTQ29udGV4dCAqY3gsIEpTU2Ny
aXB0ICpzY3JpcHQpOwoKfQojIDYwICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKCgojIDEgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSUNvbnRlbnQuaCIgMQojIDQzICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvY29udGVudC9uc0lDb250ZW50LmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL3dpZGdldC9uc0V2ZW50LmgiIDEKIyA1MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3dpZGdl
dC9uc0V2ZW50LmgiCmVudW0gbnNFdmVudFN0YXR1cyB7CgogIG5zRXZlbnRTdGF0dXNfZUlnbm9y
ZSwKCiAgbnNFdmVudFN0YXR1c19lQ29uc3VtZU5vRGVmYXVsdCwKCiAgbnNFdmVudFN0YXR1c19l
Q29uc3VtZURvRGVmYXVsdAp9OwoKc3RydWN0IG5zRXZlbnQ7CgpzdHJ1Y3QgbnNHVUlFdmVudDsK
c3RydWN0IG5zU2l6ZUV2ZW50OwpzdHJ1Y3QgbnNTaXplTW9kZUV2ZW50OwpzdHJ1Y3QgbnNaTGV2
ZWxFdmVudDsKc3RydWN0IG5zUGFpbnRFdmVudDsKc3RydWN0IG5zU2Nyb2xsYmFyRXZlbnQ7CnN0
cnVjdCBuc1Njcm9sbFBvcnRFdmVudDsKc3RydWN0IG5zSW5wdXRFdmVudDsKc3RydWN0IG5zTW91
c2VFdmVudDsKc3RydWN0IG5zQWNjZXNzaWJsZUV2ZW50OwpzdHJ1Y3QgbnNLZXlFdmVudDsKc3Ry
dWN0IG5zVGV4dEV2ZW50OwpzdHJ1Y3QgbnNDb21wb3NpdGlvbkV2ZW50OwpzdHJ1Y3QgbnNNb3Vz
ZVNjcm9sbEV2ZW50OwpzdHJ1Y3QgbnNSZWNvbnZlcnNpb25FdmVudDsKc3RydWN0IG5zVG9vbHRp
cEV2ZW50OwpzdHJ1Y3QgbnNNZW51RXZlbnQ7CgpzdHJ1Y3QgbnNUZXh0RXZlbnRSZXBseTsKc3Ry
dWN0IG5zUmVjb252ZXJzaW9uRXZlbnRSZXBseTsKIyA0NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L2NvbnRlbnQvbnNJQ29udGVudC5oIiAyCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250
ZW50L25zQ29udGVudEVycm9ycy5oIiAxCiMgNDYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250
ZW50L25zSUNvbnRlbnQuaCIgMgoKCmNsYXNzIG5zSUF0b207CmNsYXNzIG5zSURvY3VtZW50Owpj
bGFzcyBuc0lQcmVzQ29udGV4dDsKY2xhc3MgbnNWb2lkQXJyYXk7CmNsYXNzIG5zSURPTUV2ZW50
OwpjbGFzcyBuc0lDb250ZW50OwpjbGFzcyBuc0lTdXBwb3J0c0FycmF5OwpjbGFzcyBuc0lET01S
YW5nZTsKY2xhc3MgbnNJU2l6ZU9mSGFuZGxlcjsKY2xhc3MgbnNJTm9kZUluZm87CmNsYXNzIG5z
SUV2ZW50TGlzdGVuZXJNYW5hZ2VyOwojIDY5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVu
dC9uc0lDb250ZW50LmgiCmNsYXNzIG5zSUNvbnRlbnQgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewpw
dWJsaWM6CiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlE
IGlpZCA9IHsgMHg3ODAzMDIyMCwgMHg5NDQ3LCAweDExZDEsIHsweDkzLCAweDIzLCAweDAwLCAw
eDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyfSB9OyByZXR1cm4gaWlkO30KCgoKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0RG9jdW1lbnQobnNJRG9jdW1lbnQqJiBhUmVzdWx0KSBjb25zdCA9IDA7
CiMgODcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSUNvbnRlbnQuaCIKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldERvY3VtZW50KG5zSURvY3VtZW50KiBhRG9jdW1lbnQsIFBSQm9vbCBh
RGVlcCwgUFJCb29sIGFDb21waWxlRXZlbnRIYW5kbGVycykgPSAwOwoKCgoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRQYXJlbnQobnNJQ29udGVudComIGFSZXN1bHQpIGNvbnN0ID0gMDsKCgoKCgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldFBhcmVudChuc0lDb250ZW50KiBhUGFyZW50KSA9IDA7CgoK
CgoKCiAgdmlydHVhbCBQUkJvb2wgSXNOYXRpdmVBbm9ueW1vdXMoKSBjb25zdCA9IDA7CgoKCgoK
CiAgdmlydHVhbCB2b2lkIFNldE5hdGl2ZUFub255bW91cyhQUkJvb2wgYUFub255bW91cykgPSAw
OwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROYW1lU3BhY2VJRChQUkludDMyJiBhUmVzdWx0
KSBjb25zdCA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFRhZyhuc0lBdG9tKiYgYVJl
c3VsdCkgY29uc3QgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROb2RlSW5mbyhuc0lO
b2RlSW5mbyomIGFSZXN1bHQpIGNvbnN0ID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ2Fu
Q29udGFpbkNoaWxkcmVuKFBSQm9vbCYgYVJlc3VsdCkgY29uc3QgPSAwOwoKCgoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBDaGlsZENvdW50KFBSSW50MzImIGFSZXN1bHQpIGNvbnN0ID0gMDsKCgoKCgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IENoaWxkQXQoUFJJbnQzMiBhSW5kZXgsIG5zSUNvbnRlbnQqJiBh
UmVzdWx0KSBjb25zdCA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJbmRleE9mKG5zSUNv
bnRlbnQqIGFQb3NzaWJsZUNoaWxkLCBQUkludDMyJiBhSW5kZXgpIGNvbnN0ID0gMDsKIyAxNzAg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSUNvbnRlbnQuaCIKICB2aXJ0dWFsIG5z
cmVzdWx0IEluc2VydENoaWxkQXQobnNJQ29udGVudCogYUtpZCwgUFJJbnQzMiBhSW5kZXgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCBhTm90aWZ5LCBQUkJvb2wgYURlZXBTZXRE
b2N1bWVudCkgPSAwOwojIDE4MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJQ29u
dGVudC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgUmVwbGFjZUNoaWxkQXQobnNJQ29udGVudCogYUtp
ZCwgUFJJbnQzMiBhSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkJvb2wgYU5v
dGlmeSwgUFJCb29sIGFEZWVwU2V0RG9jdW1lbnQpID0gMDsKIyAxOTMgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9jb250ZW50L25zSUNvbnRlbnQuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEFwcGVuZENo
aWxkVG8obnNJQ29udGVudCogYUtpZCwgUFJCb29sIGFOb3RpZnksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBSQm9vbCBhRGVlcFNldERvY3VtZW50KSA9IDA7CiMgMjAzICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvY29udGVudC9uc0lDb250ZW50LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBSZW1v
dmVDaGlsZEF0KFBSSW50MzIgYUluZGV4LCBQUkJvb2wgYU5vdGlmeSkgPSAwOwojIDIxNSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJQ29udGVudC5oIgogIHZpcnR1YWwgbnNyZXN1
bHQgTm9ybWFsaXplQXR0clN0cmluZyhjb25zdCBuc0FTdHJpbmcmIGFTdHIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5zSU5vZGVJbmZvKiYgYU5vZGVJbmZvKSA9IDA7CiMgMjMx
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lDb250ZW50LmgiCiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXRBdHRyKFBSSW50MzIgYU5hbWVTcGFjZUlELCBuc0lBdG9tKiBhTmFtZSwKICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgbnNBU3RyaW5nJiBhVmFsdWUsCiAgICAgICAgICAgICAg
ICAgICAgIFBSQm9vbCBhTm90aWZ5KSA9IDA7CiMgMjQ4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
Y29udGVudC9uc0lDb250ZW50LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRBdHRyKG5zSU5vZGVJ
bmZvKiBhTm9kZUluZm8sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5zQVN0cmluZyYgYVZh
bHVlLAogICAgICAgICAgICAgICAgICAgICBQUkJvb2wgYU5vdGlmeSkgPSAwOwojIDI2NSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJQ29udGVudC5oIgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0QXR0cihQUkludDMyIGFOYW1lU3BhY2VJRCwgbnNJQXRvbSogYU5hbWUsCiAgICAgICAg
ICAgICAgICAgICAgIG5zQVN0cmluZyYgYVJlc3VsdCkgY29uc3QgPSAwOwojIDI4MyAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJQ29udGVudC5oIgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0QXR0cihQUkludDMyIGFOYW1lU3BhY2VJRCwgbnNJQXRvbSogYU5hbWUsCiAgICAgICAgICAg
ICAgICAgICAgIG5zSUF0b20qJiBhUHJlZml4LCBuc0FTdHJpbmcmIGFSZXN1bHQpIGNvbnN0ID0g
MDsKIyAyOTQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSUNvbnRlbnQuaCIKICB2
aXJ0dWFsIFBSQm9vbCBIYXNBdHRyKFBSSW50MzIgYU5hbWVTcGFjZUlELCBuc0lBdG9tKiBhTmFt
ZSkgY29uc3QgPSAwOwojIDMwNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJQ29u
dGVudC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgVW5zZXRBdHRyKFBSSW50MzIgYU5hbWVTcGFjZUlE
LCBuc0lBdG9tKiBhQXR0ciwKICAgICAgICAgICAgICAgICAgICAgICBQUkJvb2wgYU5vdGlmeSkg
PSAwOwojIDMxNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJQ29udGVudC5oIgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0QXR0ck5hbWVBdChQUkludDMyIGFJbmRleCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUFJJbnQzMiYgYU5hbWVTcGFjZUlELAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBuc0lBdG9tKiYgYU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5z
SUF0b20qJiBhUHJlZml4KSBjb25zdCA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRB
dHRyQ291bnQoUFJJbnQzMiYgYUNvdW50UmVzdWx0KSBjb25zdCA9IDA7CiMgMzQxICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lDb250ZW50LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBS
YW5nZUFkZChuc0lET01SYW5nZSogYVJhbmdlKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQg
UmFuZ2VSZW1vdmUobnNJRE9NUmFuZ2UqIGFSYW5nZSkgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldFJhbmdlTGlzdChuc1ZvaWRBcnJheSomIGFSZXN1bHQpIGNvbnN0ID0gMDsKIyAzODUg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSUNvbnRlbnQuaCIKICB2aXJ0dWFsIG5z
cmVzdWx0IEhhbmRsZURPTUV2ZW50KG5zSVByZXNDb250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuc0V2ZW50KiBhRXZlbnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuc0lET01FdmVudCoqIGFET01FdmVudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBSVWludDMyIGFGbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zRXZl
bnRTdGF0dXMqIGFFdmVudFN0YXR1cykgPSAwOwojIDQwNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L2NvbnRlbnQvbnNJQ29udGVudC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29udGVudElEKFBS
VWludDMyKiBhSUQpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDb250ZW50SUQoUFJV
aW50MzIgYUlEKSA9IDA7CiMgNDIzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lD
b250ZW50LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRGb2N1cyhuc0lQcmVzQ29udGV4dCogYVBy
ZXNDb250ZXh0KSA9IDA7CiMgNDM1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lD
b250ZW50LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBSZW1vdmVGb2N1cyhuc0lQcmVzQ29udGV4dCog
YVByZXNDb250ZXh0KSA9IDA7CiMgNDQ0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9u
c0lDb250ZW50LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRCaW5kaW5nUGFyZW50KG5zSUNvbnRl
bnQqIGFDb250ZW50KSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QmluZGluZ1Bh
cmVudChuc0lDb250ZW50KiogYUNvbnRlbnQpID0gMDsKCgoKCiAgZW51bSB7CgogICAgZVRFWFQg
PSAweDAwMDAwMDAxLAoKICAgIGVFTEVNRU5UID0gMHgwMDAwMDAwMiwKCiAgICBlSFRNTCA9IDB4
MDAwMDAwMDQsCgogICAgZUhUTUxfRk9STV9DT05UUk9MID0gMHgwMDAwMDAwOCwKCiAgICBlWFVM
ID0gMHgwMDAwMDAxMAogIH07CiMgNDc5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9u
c0lDb250ZW50LmgiCiAgdmlydHVhbCBQUkJvb2wgSXNDb250ZW50T2ZUeXBlKFBSVWludDMyIGFG
bGFncykgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGlzdGVuZXJNYW5hZ2VyKG5z
SUV2ZW50TGlzdGVuZXJNYW5hZ2VyKiogYVJlc3VsdCkgPSAwOwojIDUxNCAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2NvbnRlbnQvbnNJQ29udGVudC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgRG9uZUNy
ZWF0aW5nRWxlbWVudCgpID0gMDsKIyA1NDggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50
L25zSUNvbnRlbnQuaCIKfTsKIyA2MyAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJRG9jdW1lbnQuaCIgMQojIDQ1ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvY29udGVudC9uc0lEb2N1bWVudC5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9jb250ZW50L25zQ2hhbmdlSGludC5oIiAxCiMgNDQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9jb250ZW50L25zQ2hhbmdlSGludC5oIgplbnVtIG5zQ2hhbmdlSGludCB7CiAgbnNDaGFuZ2VI
aW50X05vbmUgPSAwLAogIG5zQ2hhbmdlSGludF9Vbmtub3duID0gMHgwMSwKICBuc0NoYW5nZUhp
bnRfQXR0ckNoYW5nZSA9IDB4MDIsCiAgbnNDaGFuZ2VIaW50X0F1cmFsID0gMHgwNCwKICBuc0No
YW5nZUhpbnRfQ29udGVudCA9IDB4MDgsCiAgbnNDaGFuZ2VIaW50X1JlcGFpbnRGcmFtZSA9IDB4
MTAsCiAgbnNDaGFuZ2VIaW50X1JlZmxvd0ZyYW1lID0gMHgyMCwKICBuc0NoYW5nZUhpbnRfU3lu
Y0ZyYW1lVmlldyA9IDB4NDAsCiAgbnNDaGFuZ2VIaW50X1JlY29uc3RydWN0RnJhbWUgPSAweDgw
LAoKICBuc0NoYW5nZUhpbnRfUmVjb25zdHJ1Y3REb2MgPSAweDEwMAoKCgoKCn07CiMgNzggIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zQ2hhbmdlSGludC5oIgppbmxpbmUgbnNDaGFu
Z2VIaW50IE5TX0NvbWJpbmVIaW50KG5zQ2hhbmdlSGludCBhSDEsIG5zQ2hhbmdlSGludCBhSDIp
IHsKICByZXR1cm4gKG5zQ2hhbmdlSGludCkoYUgxIHwgYUgyKTsKfQoKCmlubGluZSBuc0NoYW5n
ZUhpbnQgTlNfU3VidHJhY3RIaW50KG5zQ2hhbmdlSGludCBhSDEsIG5zQ2hhbmdlSGludCBhSDIp
IHsKICByZXR1cm4gKG5zQ2hhbmdlSGludCkoYUgxICYgfmFIMik7Cn0KCgoKaW5saW5lIFBSQm9v
bCBOU19VcGRhdGVIaW50KG5zQ2hhbmdlSGludCYgYURlc3QsIG5zQ2hhbmdlSGludCBhU3JjKSB7
CiAgbnNDaGFuZ2VIaW50IHIgPSAobnNDaGFuZ2VIaW50KShhRGVzdCB8IGFTcmMpOwogIFBSQm9v
bCBjaGFuZ2VkID0gKGludClyICE9IChpbnQpYURlc3Q7CiAgYURlc3QgPSByOwogIHJldHVybiBj
aGFuZ2VkOwp9CgoKaW5saW5lIFBSQm9vbCBOU19Jc0hpbnRTdWJzZXQobnNDaGFuZ2VIaW50IGFT
dWJzZXQsIG5zQ2hhbmdlSGludCBhU3VwZXJTZXQpIHsKICByZXR1cm4gKGFTdWJzZXQgJiBhU3Vw
ZXJTZXQpID09IGFTdWJzZXQ7Cn0KCgpjb25zdCBuc0NoYW5nZUhpbnQgTlNfU1RZTEVfSElOVF9V
TktOT1dOID0gbnNDaGFuZ2VIaW50X1Vua25vd247CmNvbnN0IG5zQ2hhbmdlSGludCBOU19TVFlM
RV9ISU5UX05PTkUgPSBuc0NoYW5nZUhpbnRfTm9uZTsKY29uc3QgbnNDaGFuZ2VIaW50IE5TX1NU
WUxFX0hJTlRfQVRUUkNIQU5HRSA9IG5zQ2hhbmdlSGludF9BdHRyQ2hhbmdlOwpjb25zdCBuc0No
YW5nZUhpbnQgTlNfU1RZTEVfSElOVF9BVVJBTCA9IChuc0NoYW5nZUhpbnQpCiAgKG5zQ2hhbmdl
SGludF9BdHRyQ2hhbmdlIHwgbnNDaGFuZ2VIaW50X0F1cmFsKTsKY29uc3QgbnNDaGFuZ2VIaW50
IE5TX1NUWUxFX0hJTlRfQ09OVEVOVCA9IChuc0NoYW5nZUhpbnQpCiAgKG5zQ2hhbmdlSGludF9B
dHRyQ2hhbmdlIHwgbnNDaGFuZ2VIaW50X0F1cmFsIHwgbnNDaGFuZ2VIaW50X0NvbnRlbnQpOwpj
b25zdCBuc0NoYW5nZUhpbnQgTlNfU1RZTEVfSElOVF9WSVNVQUwgPSAobnNDaGFuZ2VIaW50KQog
IChuc0NoYW5nZUhpbnRfQXR0ckNoYW5nZSB8IG5zQ2hhbmdlSGludF9BdXJhbCB8IG5zQ2hhbmdl
SGludF9Db250ZW50IHwgbnNDaGFuZ2VIaW50X1JlcGFpbnRGcmFtZQogICB8IG5zQ2hhbmdlSGlu
dF9TeW5jRnJhbWVWaWV3KTsKY29uc3QgbnNDaGFuZ2VIaW50IE5TX1NUWUxFX0hJTlRfUkVGTE9X
ID0gKG5zQ2hhbmdlSGludCkKICAobnNDaGFuZ2VIaW50X0F0dHJDaGFuZ2UgfCBuc0NoYW5nZUhp
bnRfQXVyYWwgfCBuc0NoYW5nZUhpbnRfQ29udGVudCB8IG5zQ2hhbmdlSGludF9SZXBhaW50RnJh
bWUKICAgfCBuc0NoYW5nZUhpbnRfU3luY0ZyYW1lVmlldyB8IG5zQ2hhbmdlSGludF9SZWZsb3dG
cmFtZSk7CmNvbnN0IG5zQ2hhbmdlSGludCBOU19TVFlMRV9ISU5UX0ZSQU1FQ0hBTkdFID0gKG5z
Q2hhbmdlSGludCkKICAobnNDaGFuZ2VIaW50X0F0dHJDaGFuZ2UgfCBuc0NoYW5nZUhpbnRfQXVy
YWwgfCBuc0NoYW5nZUhpbnRfQ29udGVudCB8IG5zQ2hhbmdlSGludF9SZXBhaW50RnJhbWUKICAg
fCBuc0NoYW5nZUhpbnRfU3luY0ZyYW1lVmlldyB8IG5zQ2hhbmdlSGludF9SZWZsb3dGcmFtZSB8
IG5zQ2hhbmdlSGludF9SZWNvbnN0cnVjdEZyYW1lKTsKY29uc3QgbnNDaGFuZ2VIaW50IE5TX1NU
WUxFX0hJTlRfUkVDT05TVFJVQ1RfQUxMID0gKG5zQ2hhbmdlSGludCkKICAobnNDaGFuZ2VIaW50
X0F0dHJDaGFuZ2UgfCBuc0NoYW5nZUhpbnRfQXVyYWwgfCBuc0NoYW5nZUhpbnRfQ29udGVudCB8
IG5zQ2hhbmdlSGludF9SZXBhaW50RnJhbWUKICAgfCBuc0NoYW5nZUhpbnRfU3luY0ZyYW1lVmll
dyB8IG5zQ2hhbmdlSGludF9SZWZsb3dGcmFtZSB8IG5zQ2hhbmdlSGludF9SZWNvbnN0cnVjdEZy
YW1lCiAgIHwgbnNDaGFuZ2VIaW50X1JlY29uc3RydWN0RG9jKTsKIyA0NiAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2NvbnRlbnQvbnNJRG9jdW1lbnQuaCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS94cGNvbS9uc0NPTUFycmF5LmgiIDEKIyA1MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29tL25zQ09NQXJyYXkuaCIKY2xhc3MgbnNDT01BcnJheV9iYXNlCnsKICAgIGZyaWVuZCBjbGFz
cyBuc0FycmF5Owpwcm90ZWN0ZWQ6CiAgICBuc0NPTUFycmF5X2Jhc2UoKSB7fQogICAgbnNDT01B
cnJheV9iYXNlKFBSSW50MzIgYUNvdW50KSA6IG1BcnJheShhQ291bnQpIHt9CiAgICBuc0NPTUFy
cmF5X2Jhc2UoY29uc3QgbnNDT01BcnJheV9iYXNlJiBvdGhlcik7CiAgICB+bnNDT01BcnJheV9i
YXNlKCk7CgogICAgUFJJbnQzMiBJbmRleE9mKG5zSVN1cHBvcnRzKiBhT2JqZWN0KSBjb25zdCB7
CiAgICAgICAgcmV0dXJuIG1BcnJheS5JbmRleE9mKGFPYmplY3QpOwogICAgfQoKICAgIFBSQm9v
bCBFbnVtZXJhdGVGb3J3YXJkcyhuc1ZvaWRBcnJheUVudW1GdW5jIGFGdW5jLCB2b2lkKiBhRGF0
YSkgewogICAgICAgIHJldHVybiBtQXJyYXkuRW51bWVyYXRlRm9yd2FyZHMoYUZ1bmMsIGFEYXRh
KTsKICAgIH0KCiAgICBQUkJvb2wgRW51bWVyYXRlQmFja3dhcmRzKG5zVm9pZEFycmF5RW51bUZ1
bmMgYUZ1bmMsIHZvaWQqIGFEYXRhKSB7CiAgICAgICAgcmV0dXJuIG1BcnJheS5FbnVtZXJhdGVC
YWNrd2FyZHMoYUZ1bmMsIGFEYXRhKTsKICAgIH0KCgoKCiAgICB2b2lkIENsZWFyKCk7CiAgICBQ
UkJvb2wgSW5zZXJ0T2JqZWN0QXQobnNJU3VwcG9ydHMqIGFPYmplY3QsIFBSSW50MzIgYUluZGV4
KTsKICAgIFBSQm9vbCBJbnNlcnRPYmplY3RzQXQoY29uc3QgbnNDT01BcnJheV9iYXNlJiBhT2Jq
ZWN0cywgUFJJbnQzMiBhSW5kZXgpOwogICAgUFJCb29sIFJlcGxhY2VPYmplY3RBdChuc0lTdXBw
b3J0cyogYU9iamVjdCwgUFJJbnQzMiBhSW5kZXgpOwogICAgUFJCb29sIEFwcGVuZE9iamVjdChu
c0lTdXBwb3J0cyAqYU9iamVjdCkgewogICAgICAgIHJldHVybiBJbnNlcnRPYmplY3RBdChhT2Jq
ZWN0LCBDb3VudCgpKTsKICAgIH0KICAgIFBSQm9vbCBBcHBlbmRPYmplY3RzKGNvbnN0IG5zQ09N
QXJyYXlfYmFzZSYgYU9iamVjdHMpIHsKICAgICAgICByZXR1cm4gSW5zZXJ0T2JqZWN0c0F0KGFP
YmplY3RzLCBDb3VudCgpKTsKICAgIH0KICAgIFBSQm9vbCBSZW1vdmVPYmplY3QobnNJU3VwcG9y
dHMgKmFPYmplY3QpOwogICAgUFJCb29sIFJlbW92ZU9iamVjdEF0KFBSSW50MzIgYUluZGV4KTsK
CnB1YmxpYzoKCgogICAgUFJJbnQzMiBDb3VudCgpIGNvbnN0IHsKICAgICAgICByZXR1cm4gbUFy
cmF5LkNvdW50KCk7CiAgICB9CgogICAgbnNEZXJpdmVkU2FmZTxuc0lTdXBwb3J0cz4qIE9iamVj
dEF0KFBSSW50MzIgYUluZGV4KSBjb25zdCB7CiAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8IG5zRGVyaXZlZFNhZmU8bnNJU3VwcG9ydHM+KiA+KG1BcnJheS5FbGVtZW50QXQoYUluZGV4
KSk7CiAgICB9CgogICAgbnNEZXJpdmVkU2FmZTxuc0lTdXBwb3J0cz4qIG9wZXJhdG9yW10oUFJJ
bnQzMiBhSW5kZXgpIGNvbnN0IHsKICAgICAgICByZXR1cm4gT2JqZWN0QXQoYUluZGV4KTsKICAg
IH0KCnByaXZhdGU6CgoKICAgIG5zVm9pZEFycmF5IG1BcnJheTsKCgogICAgbnNDT01BcnJheV9i
YXNlJiBvcGVyYXRvcj0oY29uc3QgbnNDT01BcnJheV9iYXNlJiBvdGhlcik7Cn07CiMgMTI5ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNDT01BcnJheS5oIgp0ZW1wbGF0ZSA8Y2xhc3Mg
VD4KY2xhc3MgbnNDT01BcnJheSA6IHB1YmxpYyBuc0NPTUFycmF5X2Jhc2UKewogcHVibGljOgog
ICAgbnNDT01BcnJheSgpIHt9CiAgICBuc0NPTUFycmF5KFBSSW50MzIgYUNvdW50KSA6IG5zQ09N
QXJyYXlfYmFzZShhQ291bnQpIHt9CgoKCiAgICBuc0NPTUFycmF5KGNvbnN0IG5zQ09NQXJyYXk8
VD4mIGFPdGhlcikgOiBuc0NPTUFycmF5X2Jhc2UoYU90aGVyKSB7IH0KCiAgICB+bnNDT01BcnJh
eSgpIHt9CgoKICAgIG5zRGVyaXZlZFNhZmU8VD4qIE9iamVjdEF0KFBSSW50MzIgYUluZGV4KSBj
b25zdCB7CiAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8IG5zRGVyaXZlZFNhZmU8VD4q
ID4obnNDT01BcnJheV9iYXNlOjpPYmplY3RBdChhSW5kZXgpKTsKICAgIH0KCgogICAgbnNEZXJp
dmVkU2FmZTxUPiogb3BlcmF0b3JbXShQUkludDMyIGFJbmRleCkgY29uc3QgewogICAgICAgIHJl
dHVybiBPYmplY3RBdChhSW5kZXgpOwogICAgfQoKCiAgICBQUkludDMyIEluZGV4T2YoVCogYU9i
amVjdCkgY29uc3QgewogICAgICAgIHJldHVybiBuc0NPTUFycmF5X2Jhc2U6OkluZGV4T2Yoc3Rh
dGljX2Nhc3Q8IG5zSVN1cHBvcnRzKiA+KGFPYmplY3QpKTsKICAgIH0KCgoKICAgIFBSQm9vbCBJ
bnNlcnRPYmplY3RBdChUKiBhT2JqZWN0LCBQUkludDMyIGFJbmRleCkgewogICAgICAgIHJldHVy
biBuc0NPTUFycmF5X2Jhc2U6Okluc2VydE9iamVjdEF0KHN0YXRpY19jYXN0PCBuc0lTdXBwb3J0
cyogPihhT2JqZWN0KSwgYUluZGV4KTsKICAgIH0KCgoKICAgIFBSQm9vbCBJbnNlcnRPYmplY3Rz
QXQoY29uc3QgbnNDT01BcnJheTxUPiYgYU9iamVjdHMsIFBSSW50MzIgYUluZGV4KSB7CiAgICAg
ICAgcmV0dXJuIG5zQ09NQXJyYXlfYmFzZTo6SW5zZXJ0T2JqZWN0c0F0KGFPYmplY3RzLCBhSW5k
ZXgpOwogICAgfQoKCgogICAgUFJCb29sIFJlcGxhY2VPYmplY3RBdChUKiBhT2JqZWN0LCBQUklu
dDMyIGFJbmRleCkgewogICAgICAgIHJldHVybiBuc0NPTUFycmF5X2Jhc2U6OlJlcGxhY2VPYmpl
Y3RBdChzdGF0aWNfY2FzdDwgbnNJU3VwcG9ydHMqID4oYU9iamVjdCksIGFJbmRleCk7CiAgICB9
CgoKCgoKICAgIFBSSW50MzIgQ291bnQoKSBjb25zdCB7CiAgICAgICAgcmV0dXJuIG5zQ09NQXJy
YXlfYmFzZTo6Q291bnQoKTsKICAgIH0KCgogICAgdm9pZCBDbGVhcigpIHsKICAgICAgICBuc0NP
TUFycmF5X2Jhc2U6OkNsZWFyKCk7CiAgICB9CgoKCgogICAgdHlwZWRlZiBQUkJvb2wgKCogbnND
T01BcnJheUVudW1GdW5jKQogICAgICAgIChUKiBhRWxlbWVudCwgdm9pZCAqYURhdGEpOwoKCiAg
ICBQUkJvb2wgRW51bWVyYXRlRm9yd2FyZHMobnNDT01BcnJheUVudW1GdW5jIGFGdW5jLCB2b2lk
KiBhRGF0YSkgewogICAgICAgIHJldHVybiBuc0NPTUFycmF5X2Jhc2U6OkVudW1lcmF0ZUZvcndh
cmRzKG5zVm9pZEFycmF5RW51bUZ1bmMoYUZ1bmMpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFEYXRhKTsKICAgIH0KCiAgICBQUkJvb2wgRW51bWVy
YXRlQmFja3dhcmRzKG5zQ09NQXJyYXlFbnVtRnVuYyBhRnVuYywgdm9pZCogYURhdGEpIHsKICAg
ICAgICByZXR1cm4gbnNDT01BcnJheV9iYXNlOjpFbnVtZXJhdGVCYWNrd2FyZHMobnNWb2lkQXJy
YXlFbnVtRnVuYyhhRnVuYyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYURhdGEpOwogICAgfQoKCiAgICBQUkJvb2wgQXBwZW5kT2JqZWN0KFQgKmFP
YmplY3QpIHsKICAgICAgICByZXR1cm4gbnNDT01BcnJheV9iYXNlOjpBcHBlbmRPYmplY3Qoc3Rh
dGljX2Nhc3Q8IG5zSVN1cHBvcnRzKiA+KGFPYmplY3QpKTsKICAgIH0KCgogICAgUFJCb29sIEFw
cGVuZE9iamVjdHMoY29uc3QgbnNDT01BcnJheTxUPiYgYU9iamVjdHMpIHsKICAgICAgICByZXR1
cm4gbnNDT01BcnJheV9iYXNlOjpBcHBlbmRPYmplY3RzKGFPYmplY3RzKTsKICAgIH0KCgoKCiAg
ICBQUkJvb2wgUmVtb3ZlT2JqZWN0KFQgKmFPYmplY3QpIHsKICAgICAgICByZXR1cm4gbnNDT01B
cnJheV9iYXNlOjpSZW1vdmVPYmplY3Qoc3RhdGljX2Nhc3Q8IG5zSVN1cHBvcnRzKiA+KGFPYmpl
Y3QpKTsKICAgIH0KCgoKICAgIFBSQm9vbCBSZW1vdmVPYmplY3RBdChQUkludDMyIGFJbmRleCkg
ewogICAgICAgIHJldHVybiBuc0NPTUFycmF5X2Jhc2U6OlJlbW92ZU9iamVjdEF0KGFJbmRleCk7
CiAgICB9Cgpwcml2YXRlOgoKCiAgICBuc0NPTUFycmF5PFQ+JiBvcGVyYXRvcj0oY29uc3QgbnND
T01BcnJheTxUPiYgb3RoZXIpOwp9OwojIDQ3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVu
dC9uc0lEb2N1bWVudC5oIiAyCgpjbGFzcyBuc0lBdG9tOwpjbGFzcyBuc0lBcmVuYTsKY2xhc3Mg
bnNJQ29udGVudDsKY2xhc3MgbnNJRG9jdW1lbnRDb250YWluZXI7CmNsYXNzIG5zSURvY3VtZW50
T2JzZXJ2ZXI7CmNsYXNzIG5zSVByZXNDb250ZXh0OwpjbGFzcyBuc0lQcmVzU2hlbGw7CgpjbGFz
cyBuc0lTdHJlYW1MaXN0ZW5lcjsKY2xhc3MgbnNJU3RyZWFtT2JzZXJ2ZXI7CmNsYXNzIG5zSVN0
eWxlU2V0OwpjbGFzcyBuc0lTdHlsZVNoZWV0OwpjbGFzcyBuc0lTdHlsZVJ1bGU7CmNsYXNzIG5z
SVVSSTsKY2xhc3MgbnNJTG9hZEdyb3VwOwpjbGFzcyBuc0lWaWV3TWFuYWdlcjsKY2xhc3MgbnNJ
U2NyaXB0R2xvYmFsT2JqZWN0OwpjbGFzcyBuc0lET01FdmVudDsKY2xhc3MgbnNJRGV2aWNlQ29u
dGV4dDsKY2xhc3MgbnNJUGFyc2VyOwpjbGFzcyBuc0lET01Ob2RlOwpjbGFzcyBuc0lET01Eb2N1
bWVudEZyYWdtZW50OwpjbGFzcyBuc0lMaW5lQnJlYWtlcjsKY2xhc3MgbnNJV29yZEJyZWFrZXI7
CmNsYXNzIG5zSVNlbGVjdGlvbjsKY2xhc3MgbnNJQ2hhbm5lbDsKY2xhc3MgbnNJUHJpbmNpcGFs
OwpjbGFzcyBuc0lOb2RlSW5mb01hbmFnZXI7CmNsYXNzIG5zSURPTURvY3VtZW50OwpjbGFzcyBu
c0lET01Eb2N1bWVudFR5cGU7CmNsYXNzIG5zSUJpbmRpbmdNYW5hZ2VyOwpjbGFzcyBuc0lPYnNl
cnZlcjsKY2xhc3MgbnNJU3VwcG9ydHNBcnJheTsKY2xhc3MgbnNJU2NyaXB0TG9hZGVyOwpjbGFz
cyBuc1N0cmluZzsKY2xhc3MgbnNJQ29udGVudFNpbms7CmNsYXNzIG5zSVNjcmlwdEV2ZW50TWFu
YWdlcjsKIyAxMDAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSURvY3VtZW50Lmgi
CmNsYXNzIG5zSURvY3VtZW50IDogcHVibGljIG5zSVN1cHBvcnRzIHsKcHVibGljOgogIHN0YXRp
YyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7IDB4OTRj
NmNlYjAsIDB4OTQ0NywgMHgxMWQxLCB7MHg5MywgMHgyMywgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4
YSwgMHhkZCwgMHgzMn0gfTsgcmV0dXJuIGlpZDt9CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
QXJlbmEobnNJQXJlbmEqKiBhQXJlbmEpID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBTdGFydERv
Y3VtZW50TG9hZChjb25zdCBjaGFyKiBhQ29tbWFuZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5zSUNoYW5uZWwqIGFDaGFubmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnNJTG9hZEdyb3VwKiBhTG9hZEdyb3VwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnNJU3VwcG9ydHMqIGFDb250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuc0lTdHJlYW1MaXN0ZW5lciAqKmFEb2NMaXN0ZW5lciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBSQm9vbCBhUmVzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
c0lDb250ZW50U2luayogYVNpbmsgPSAwKSA9IDA7CgogIHZpcnR1YWwgbnNyZXN1bHQgU3RvcERv
Y3VtZW50TG9hZCgpID0gMDsKCgoKCiAgdmlydHVhbCBjb25zdCBuc1N0cmluZyogR2V0RG9jdW1l
bnRUaXRsZSgpIGNvbnN0ID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREb2N1bWVudFVS
TChuc0lVUkkqKiBhVVJMKSBjb25zdCA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXREb2N1bWVu
dFVSTChuc0lVUkkqIGFVUkwpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQcmluY2lw
YWwobnNJUHJpbmNpcGFsICoqYVByaW5jaXBhbCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBBZGRQcmluY2lwYWwobnNJUHJpbmNpcGFsICphUHJpbmNpcGFsKSA9IDA7CgoKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0RG9jdW1lbnRMb2FkR3JvdXAobnNJTG9hZEdyb3VwKiogYUdyb3VwKSBj
b25zdCA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QmFzZVVSTChuc0lVUkkqJiBhVVJM
KSBjb25zdCA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRCYXNlVVJMKG5zSVVSSSogYVVSTCkg
PSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEJhc2VUYXJnZXQobnNBU3RyaW5nICZhQmFz
ZVRhcmdldCk9MDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEJhc2VUYXJnZXQoY29uc3QgbnNBU3Ry
aW5nICZhQmFzZVRhcmdldCk9MDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RG9jdW1lbnRD
aGFyYWN0ZXJTZXQobnNBU3RyaW5nJiBvQ2hhclNldElEKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXREb2N1bWVudENoYXJhY3RlclNldChjb25zdCBuc0FTdHJpbmcmIGFDaGFyU2V0SUQpID0g
MDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREb2N1bWVudENoYXJhY3RlclNldFNvdXJjZShQUklu
dDMyKiBhQ2hhcnNldFNvdXJjZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RG9jdW1lbnRD
aGFyYWN0ZXJTZXRTb3VyY2UoUFJJbnQzMiBhQ2hhcnNldFNvdXJjZSkgPSAwOwoKCgogIHZpcnR1
YWwgbnNyZXN1bHQgQWRkQ2hhclNldE9ic2VydmVyKG5zSU9ic2VydmVyKiBhT2JzZXJ2ZXIpID0g
MDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZW1vdmVDaGFyU2V0T2JzZXJ2ZXIobnNJT2JzZXJ2
ZXIqIGFPYnNlcnZlcikgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbnRlbnRUeXBl
KG5zQVN0cmluZyYgYUNvbnRlbnRUeXBlKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0
Q29udGVudFR5cGUoY29uc3QgbnNBU3RyaW5nJiBhQ29udGVudFR5cGUpID0gMDsKCgoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRDb250ZW50TGFuZ3VhZ2UobnNBU3RyaW5nJiBhQ29udGVudExhbmd1
YWdlKSBjb25zdCA9IDA7CiMgMTk5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lE
b2N1bWVudC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QmlkaUVuYWJsZWQoUFJCb29sKiBhQmlk
aUVuYWJsZWQpIGNvbnN0ID0gMDsKCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRCaWRpRW5h
YmxlZChQUkJvb2wgYUJpZGlFbmFibGVkKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
TGluZUJyZWFrZXIobnNJTGluZUJyZWFrZXIqKiBhUmVzdWx0KSA9IDA7CiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXRMaW5lQnJlYWtlcihuc0lMaW5lQnJlYWtlciogYUxpbmVCcmVha2VyKSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRXb3JkQnJlYWtlcihuc0lXb3JkQnJlYWtlcioqIGFSZXN1bHQp
ID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFdvcmRCcmVha2VyKG5zSVdvcmRCcmVha2VyKiBh
V29yZEJyZWFrZXIpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SGVhZGVyRGF0YShu
c0lBdG9tKiBhSGVhZGVyRmllbGQsIG5zQVN0cmluZyYgYURhdGEpIGNvbnN0ID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldEhlYWRlckRhdGEobnNJQXRvbSogYWhlYWRlckZpZWxkLCBjb25zdCBu
c0FTdHJpbmcmIGFEYXRhKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDcmVhdGVTaGVs
bChuc0lQcmVzQ29udGV4dCogYUNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBuc0lW
aWV3TWFuYWdlciogYVZpZXdNYW5hZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3R5
bGVTZXQqIGFTdHlsZVNldCwKICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVByZXNTaGVsbCoq
IGFJbnN0YW5jZVB0clJlc3VsdCkgPSAwOwogIHZpcnR1YWwgUFJCb29sIERlbGV0ZVNoZWxsKG5z
SVByZXNTaGVsbCogYVNoZWxsKSA9IDA7CiAgdmlydHVhbCBQUkludDMyIEdldE51bWJlck9mU2hl
bGxzKCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2hlbGxBdChQUkludDMyIGFJbmRleCwg
bnNJUHJlc1NoZWxsKiogYVNoZWxsKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQ
YXJlbnREb2N1bWVudChuc0lEb2N1bWVudCoqIGFQYXJlbnQpID0gMDsKCgoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXRQYXJlbnREb2N1bWVudChuc0lEb2N1bWVudCogYVBhcmVudCkgPSAwOwoKCgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldFN1YkRvY3VtZW50Rm9yKG5zSUNvbnRlbnQgKmFDb250ZW50
LCBuc0lEb2N1bWVudCogYVN1YkRvYykgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFN1
YkRvY3VtZW50Rm9yKG5zSUNvbnRlbnQgKmFDb250ZW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnNJRG9jdW1lbnQqKiBhU3ViRG9jKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1
bHQgRmluZENvbnRlbnRGb3JTdWJEb2N1bWVudChuc0lEb2N1bWVudCAqYURvY3VtZW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lDb250ZW50ICoqYUNvbnRlbnQp
ID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRSb290Q29udGVudChuc0lDb250ZW50Kiog
YVJvb3QpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFJvb3RDb250ZW50KG5zSUNvbnRlbnQq
IGFSb290KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IENoaWxkQXQoUFJJbnQzMiBhSW5k
ZXgsIG5zSUNvbnRlbnQqJiBhUmVzdWx0KSBjb25zdCA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBJ
bmRleE9mKG5zSUNvbnRlbnQqIGFQb3NzaWJsZUNoaWxkLCBQUkludDMyJiBhSW5kZXgpIGNvbnN0
ID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENoaWxkQ291bnQoUFJJbnQzMiYgYUNvdW50KSA9
IDA7CiMgMjk1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lEb2N1bWVudC5oIgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0TnVtYmVyT2ZTdHlsZVNoZWV0cyhQUkJvb2wgYUluY2x1ZGVT
cGVjaWFsU2hlZXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkludDMy
KiBhQ291bnQpID0gMDsKIyAzMDYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSURv
Y3VtZW50LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTdHlsZVNoZWV0QXQoUFJJbnQzMiBhSW5k
ZXgsIFBSQm9vbCBhSW5jbHVkZVNwZWNpYWxTaGVldHMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnNJU3R5bGVTaGVldCoqIGFTaGVldCkgPSAwOwojIDMxNiAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2NvbnRlbnQvbnNJRG9jdW1lbnQuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEluc2VydFN0
eWxlU2hlZXRBdChuc0lTdHlsZVNoZWV0KiBhU2hlZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUFJJbnQzMiBhSW5kZXgpID0gMDsKCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRJbmRleE9mU3R5bGVTaGVldChuc0lTdHlsZVNoZWV0KiBhU2hlZXQsIFBSSW50MzIqIGFJbmRl
eCkgPSAwOwojIDMzNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJRG9jdW1lbnQu
aCIKICB2aXJ0dWFsIG5zcmVzdWx0IFVwZGF0ZVN0eWxlU2hlZXRzKG5zQ09NQXJyYXk8bnNJU3R5
bGVTaGVldD4mIGFPbGRTaGVldHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0NP
TUFycmF5PG5zSVN0eWxlU2hlZXQ+JiBhTmV3U2hlZXRzKSA9IDA7CgoKCgogIHZpcnR1YWwgdm9p
ZCBBZGRTdHlsZVNoZWV0KG5zSVN0eWxlU2hlZXQqIGFTaGVldCwgUFJVaW50MzIgYUZsYWdzKSA9
IDA7CgoKCgogIHZpcnR1YWwgdm9pZCBSZW1vdmVTdHlsZVNoZWV0KG5zSVN0eWxlU2hlZXQqIGFT
aGVldCkgPSAwOwoKCgoKCiAgdmlydHVhbCB2b2lkIFNldFN0eWxlU2hlZXRBcHBsaWNhYmxlU3Rh
dGUobnNJU3R5bGVTaGVldCogYVNoZWV0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBSQm9vbCBhQXBwbGljYWJsZSkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0U2NyaXB0R2xvYmFsT2JqZWN0KG5zSVNjcmlwdEdsb2JhbE9iamVjdCoqIGFHbG9i
YWxPYmplY3QpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNjcmlwdEdsb2JhbE9iamVjdChu
c0lTY3JpcHRHbG9iYWxPYmplY3QqIGFHbG9iYWxPYmplY3QpID0gMDsKCgoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRTY3JpcHRMb2FkZXIobnNJU2NyaXB0TG9hZGVyKiogYVNjcmlwdExvYWRlcikg
PSAwOwojIDM3NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJRG9jdW1lbnQuaCIK
ICB2aXJ0dWFsIHZvaWQgQWRkT2JzZXJ2ZXIobnNJRG9jdW1lbnRPYnNlcnZlciogYU9ic2VydmVy
KSA9IDA7CgoKCgoKICB2aXJ0dWFsIFBSQm9vbCBSZW1vdmVPYnNlcnZlcihuc0lEb2N1bWVudE9i
c2VydmVyKiBhT2JzZXJ2ZXIpID0gMDsKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEJlZ2luVXBkYXRl
KCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgRW5kVXBkYXRlKCkgPSAwOwogIHZpcnR1YWwgbnNy
ZXN1bHQgQmVnaW5Mb2FkKCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgRW5kTG9hZCgpID0gMDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IENvbnRlbnRDaGFuZ2VkKG5zSUNvbnRlbnQqIGFDb250ZW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3VwcG9ydHMqIGFTdWJDb250ZW50KSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENvbnRlbnRTdGF0ZXNDaGFuZ2VkKG5zSUNvbnRlbnQqIGFD
b250ZW50MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUNvbnRlbnQqIGFD
b250ZW50MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSSW50MzIgYVN0YXRl
TWFzaykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgQXR0cmlidXRlV2lsbENoYW5nZShuc0lDb250
ZW50KiBhQ2hpbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSSW50MzIgYU5h
bWVTcGFjZUlELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lBdG9tKiBhQXR0
cmlidXRlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBBdHRyaWJ1dGVDaGFuZ2VkKG5zSUNvbnRl
bnQqIGFDaGlsZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJJbnQzMiBhTmFtZVNw
YWNlSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUF0b20qIGFBdHRyaWJ1dGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSSW50MzIgYU1vZFR5cGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5zQ2hhbmdlSGludCBhSGludCkgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgQ29udGVudEFwcGVuZGVkKG5zSUNvbnRlbnQqIGFDb250YWluZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUFJJbnQzMiBhTmV3SW5kZXhJbkNvbnRhaW5lcikgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgQ29udGVudEluc2VydGVkKG5zSUNvbnRlbnQqIGFDb250YWluZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQ29udGVudCogYUNoaWxkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBSSW50MzIgYUluZGV4SW5Db250YWluZXIpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IENvbnRlbnRSZXBsYWNlZChuc0lDb250ZW50KiBhQ29udGFpbmVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUNvbnRlbnQqIGFPbGRDaGlsZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuc0lDb250ZW50KiBhTmV3Q2hpbGQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUFJJbnQzMiBhSW5kZXhJbkNvbnRhaW5lcikgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgQ29udGVudFJlbW92ZWQobnNJQ29udGVudCogYUNvbnRhaW5lciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5zSUNvbnRlbnQqIGFDaGlsZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBSSW50MzIgYUluZGV4SW5Db250YWluZXIpID0gMDsKCgoKICB2aXJ0dWFs
IG5zcmVzdWx0IFN0eWxlUnVsZUNoYW5nZWQobnNJU3R5bGVTaGVldCogYVN0eWxlU2hlZXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN0eWxlUnVsZSogYVN0eWxlUnVsZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNDaGFuZ2VIaW50IGFIaW50KSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTdHlsZVJ1bGVBZGRlZChuc0lTdHlsZVNoZWV0KiBhU3R5bGVTaGVldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN0eWxlUnVsZSogYVN0eWxlUnVsZSkgPSAw
OwogIHZpcnR1YWwgbnNyZXN1bHQgU3R5bGVSdWxlUmVtb3ZlZChuc0lTdHlsZVNoZWV0KiBhU3R5
bGVTaGVldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3R5bGVSdWxlKiBhU3R5
bGVSdWxlKSA9IDA7CgogIHZpcnR1YWwgbnNyZXN1bHQgSGFuZGxlRE9NRXZlbnQobnNJUHJlc0Nv
bnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zRXZlbnQq
IGFFdmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSURPTUV2ZW50KiogYURPTUV2
ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJVaW50MzIgYUZsYWdzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnNFdmVudFN0YXR1cyogYUV2ZW50U3RhdHVzKSA9IDA7Cgog
IHZpcnR1YWwgUFJCb29sIEV2ZW50Q2FwdHVyZVJlZ2lzdHJhdGlvbihQUkludDMyIGFDYXB0dXJl
ckluY3JlbWVudCkgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IEZsdXNoUGVuZGluZ05vdGlmaWNh
dGlvbnMoUFJCb29sIGFGbHVzaFJlZmxvd3M9MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUFJCb29sIGFVcGRhdGVWaWV3cz0wKSA9IDA7CgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0QW5kSW5jcmVtZW50Q29udGVudElEKFBSSW50MzIqIGFJRCkgPSAwOwoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldEJpbmRpbmdNYW5hZ2VyKG5zSUJpbmRpbmdNYW5hZ2VyKiogYVJlc3VsdCkg
PSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5vZGVJbmZvTWFuYWdlcihuc0lOb2RlSW5mb01h
bmFnZXIqJiBhTm9kZUluZm9NYW5hZ2VyKSA9IDA7CgogIHZpcnR1YWwgbnNyZXN1bHQgUmVzZXQo
bnNJQ2hhbm5lbCogYUNoYW5uZWwsIG5zSUxvYWRHcm91cCogYUxvYWRHcm91cCkgPSAwOwogIHZp
cnR1YWwgbnNyZXN1bHQgUmVzZXRUb1VSSShuc0lVUkkgKmFVUkksIG5zSUxvYWRHcm91cCogYUxv
YWRHcm91cCkgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IEFkZFJlZmVyZW5jZSh2b2lkICphS2V5
LCBuc0lTdXBwb3J0cyAqYVJlZmVyZW5jZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgUmVtb3Zl
UmVmZXJlbmNlKHZvaWQgKmFLZXksIG5zSVN1cHBvcnRzICoqYU9sZFJlZmVyZW5jZSkgPSAwOwoK
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENvbnRhaW5lcihuc0lTdXBwb3J0cyAqYUNvbnRhaW5l
cikgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbnRhaW5lcihuc0lTdXBwb3J0cyAq
KmFDb250YWluZXIpID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTY3JpcHRFdmVudE1hbmFn
ZXIobnNJU2NyaXB0RXZlbnRNYW5hZ2VyICoqYVJlc3VsdCkgPSAwOwp9OwoKCgpleHRlcm4gbnNy
ZXN1bHQKICAgTlNfTmV3SFRNTERvY3VtZW50KG5zSURvY3VtZW50KiogYUluc3RhbmNlUHRyUmVz
dWx0KTsKCmV4dGVybiBuc3Jlc3VsdAogICBOU19OZXdYTUxEb2N1bWVudChuc0lEb2N1bWVudCoq
IGFJbnN0YW5jZVB0clJlc3VsdCk7CgoKCgoKCmV4dGVybiBuc3Jlc3VsdAogICBOU19OZXdJbWFn
ZURvY3VtZW50KG5zSURvY3VtZW50KiogYUluc3RhbmNlUHRyUmVzdWx0KTsKCmV4dGVybiBuc3Jl
c3VsdAogICBOU19OZXdEb2N1bWVudEZyYWdtZW50KG5zSURPTURvY3VtZW50RnJhZ21lbnQqKiBh
SW5zdGFuY2VQdHJSZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJRG9jdW1lbnQq
IGFPd25lckRvY3VtZW50KTsKZXh0ZXJuIG5zcmVzdWx0CiAgIE5TX05ld0RPTURvY3VtZW50KG5z
SURPTURvY3VtZW50KiogYUluc3RhbmNlUHRyUmVzdWx0LAogICAgICAgICAgICAgICAgICAgICBj
b25zdCBuc0FTdHJpbmcmIGFOYW1lc3BhY2VVUkksCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IG5zQVN0cmluZyYgYVF1YWxpZmllZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgIG5zSURPTURv
Y3VtZW50VHlwZSogYURvY3R5cGUsCiAgICAgICAgICAgICAgICAgICAgIG5zSVVSSSogYUJhc2VV
UkkpOwojIDY0ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvZG9tL25zSURPTURvY3VtZW50LmgiIDEKIyAxMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2Rv
bS9uc0lET01Eb2N1bWVudC5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9N
Tm9kZS5oIiAxCiMgMTAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NTm9kZS5oIgoj
IDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vZG9tc3R1YnMuaCIgMQojIDE4ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvZG9tL2RvbXN0dWJzLmgiCmlubGluZSBQUkJvb2wgRE9NU3RyaW5nSXNO
dWxsKGNvbnN0IG5zQVN0cmluZyYgYVN0cmluZykKewogIHJldHVybiBhU3RyaW5nLklzVm9pZCgp
Owp9CmlubGluZSB2b2lkIFNldERPTVN0cmluZ1RvTnVsbChuc0FTdHJpbmcmIGFTdHJpbmcpCnsK
ICBhU3RyaW5nLlRydW5jYXRlKCk7CiAgYVN0cmluZy5TZXRJc1ZvaWQoMSk7Cn0KdHlwZWRlZiBQ
UlVpbnQ2NCBET01UaW1lU3RhbXA7CgpjbGFzcyBuc0lET01BdHRyOwoKY2xhc3MgbnNJRE9NQ0RB
VEFTZWN0aW9uOwoKY2xhc3MgbnNJRE9NQ2hhcmFjdGVyRGF0YTsKCmNsYXNzIG5zSURPTUNvbW1l
bnQ7CgpjbGFzcyBuc0lET01ET01JbXBsZW1lbnRhdGlvbjsKCmNsYXNzIG5zSURPTURvY3VtZW50
OwoKY2xhc3MgbnNJRE9NRG9jdW1lbnRGcmFnbWVudDsKCmNsYXNzIG5zSURPTURvY3VtZW50VHlw
ZTsKCmNsYXNzIG5zSURPTUVsZW1lbnQ7CgpjbGFzcyBuc0lET01FbnRpdHk7CgpjbGFzcyBuc0lE
T01FbnRpdHlSZWZlcmVuY2U7CgpjbGFzcyBuc0lET01OU0RvY3VtZW50OwoKY2xhc3MgbnNJRE9N
TmFtZWROb2RlTWFwOwoKY2xhc3MgbnNJRE9NTm9kZTsKCmNsYXNzIG5zSURPTU5vZGVMaXN0OwoK
Y2xhc3MgbnNJRE9NTm90YXRpb247CgpjbGFzcyBuc0lET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb247
CgpjbGFzcyBuc0lET01UZXh0OwoKY2xhc3MgRE9NRXhjZXB0aW9uOwoKY2xhc3MgUmFuZ2VFeGNl
cHRpb247CgpjbGFzcyBuc0lET01TdHlsZVNoZWV0TGlzdDsKCmNsYXNzIG5zSURPTUxpbmtTdHls
ZTsKCmNsYXNzIG5zSURPTVN0eWxlU2hlZXQ7CgpjbGFzcyBuc0lET01NZWRpYUxpc3Q7CgpjbGFz
cyBuc0lET01BYnN0cmFjdFZpZXc7CgpjbGFzcyBuc0lET01Eb2N1bWVudFZpZXc7CgpjbGFzcyBu
c0lET01XaW5kb3c7CgpjbGFzcyBuc0lET01XaW5kb3dJbnRlcm5hbDsKCmNsYXNzIG5zSURPTVdp
bmRvd0NvbGxlY3Rpb247CgpjbGFzcyBuc0lET01QbHVnaW47CgpjbGFzcyBuc0lET01QbHVnaW5B
cnJheTsKCmNsYXNzIG5zSURPTU1pbWVUeXBlOwoKY2xhc3MgbnNJRE9NTWltZVR5cGVBcnJheTsK
CmNsYXNzIG5zSURPTUJhclByb3A7CgpjbGFzcyBuc0lET01OYXZpZ2F0b3I7CgpjbGFzcyBuc0lE
T01TY3JlZW47CgpjbGFzcyBuc0lET01IaXN0b3J5OwoKY2xhc3MgbnNJRE9NRXZlbnQ7CgpjbGFz
cyBuc0lET01FdmVudFRhcmdldDsKCmNsYXNzIG5zSURPTUV2ZW50TGlzdGVuZXI7CgpjbGFzcyBu
c0lET01FdmVudEdyb3VwOwoKY2xhc3MgbnNJRE9NSFRNTEVsZW1lbnQ7CgpjbGFzcyBuc0lET01I
VE1MRm9ybUVsZW1lbnQ7CgpjbGFzcyBuc0lET01IVE1MQ29sbGVjdGlvbjsKCmNsYXNzIG5zSURP
TUNTU1ZhbHVlOwoKY2xhc3MgbnNJRE9NQ1NTVmFsdWVMaXN0OwoKY2xhc3MgbnNJRE9NQ1NTUHJp
bWl0aXZlVmFsdWU7CgpjbGFzcyBuc0lET01DU1NSdWxlOwoKY2xhc3MgbnNJRE9NQ1NTUnVsZUxp
c3Q7CgpjbGFzcyBuc0lET01DU1NTdHlsZVNoZWV0OwoKY2xhc3MgbnNJRE9NQ1NTU3R5bGVEZWNs
YXJhdGlvbjsKCmNsYXNzIG5zSURPTUNvdW50ZXI7CgpjbGFzcyBuc0lET01SZWN0OwoKY2xhc3Mg
bnNJRE9NUkdCQ29sb3I7CgpjbGFzcyBuc0lET01DU1NTdHlsZVJ1bGU7CgpjbGFzcyBuc0lET01D
U1NTdHlsZVJ1bGVDb2xsZWN0aW9uOwoKY2xhc3MgbnNJRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1l
bnQ7CgpjbGFzcyBuc0lET01IVE1MVGFibGVTZWN0aW9uRWxlbWVudDsKCmNsYXNzIG5zSURPTVJh
bmdlOwoKY2xhc3MgbnNJRE9NQ1JNRk9iamVjdDsKCmNsYXNzIG5zSURPTUNyeXB0bzsKCmNsYXNz
IG5zSURPTVBrY3MxMTsKIyAxMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01Ob2Rl
LmgiIDIKCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTTNOb2RlLmgiIDEK
IyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET00zTm9kZS5oIgpjbGFzcyBuc0lE
T00zTm9kZSA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBu
c0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgyOWZiMmExOCwgMHgx
ZGQyLCAweDExYjIsIHsgMHg4ZCwgMHhkOSwgMHhhNiwgMHhmZCwgMHg1ZCwgMHg1YSwgMHhkMSwg
MHgyZiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEJhc2VVUkkobnNB
U3RyaW5nICYgYUJhc2VVUkkpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ29tcGFyZURvY3Vt
ZW50UG9zaXRpb24obnNJRE9NTm9kZSAqb3RoZXIsIFBSVWludDE2ICpfcmV0dmFsKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IElzU2FtZU5vZGUobnNJRE9NTm9kZSAqb3RoZXIsIFBSQm9vbCAq
X3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBMb29rdXBOYW1lc3BhY2VQcmVmaXgo
Y29uc3QgbnNBU3RyaW5nICYgbmFtZXNwYWNlVVJJLCBuc0FTdHJpbmcgJiBfcmV0dmFsKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IExvb2t1cE5hbWVzcGFjZVVSSShjb25zdCBuc0FTdHJpbmcg
JiBwcmVmaXgsIG5zQVN0cmluZyAmIF9yZXR2YWwpID0gMDsKCn07CiMgMTUgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9kb20vbnNJRE9NTm9kZS5oIiAyCiMgMjkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9kb20vbnNJRE9NTm9kZS5oIgpjbGFzcyBuc0lET01Ob2RlIDogcHVibGljIG5zSVN1cHBvcnRz
IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0
IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MDdjLCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAw
eDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KIyA0NCAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01Ob2RlLmgiCiAgZW51bSB7IEVMRU1FTlRf
Tk9ERSA9IDFVIH07CgogIGVudW0geyBBVFRSSUJVVEVfTk9ERSA9IDJVIH07CgogIGVudW0geyBU
RVhUX05PREUgPSAzVSB9OwoKICBlbnVtIHsgQ0RBVEFfU0VDVElPTl9OT0RFID0gNFUgfTsKCiAg
ZW51bSB7IEVOVElUWV9SRUZFUkVOQ0VfTk9ERSA9IDVVIH07CgogIGVudW0geyBFTlRJVFlfTk9E
RSA9IDZVIH07CgogIGVudW0geyBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUgPSA3VSB9OwoK
ICBlbnVtIHsgQ09NTUVOVF9OT0RFID0gOFUgfTsKCiAgZW51bSB7IERPQ1VNRU5UX05PREUgPSA5
VSB9OwoKICBlbnVtIHsgRE9DVU1FTlRfVFlQRV9OT0RFID0gMTBVIH07CgogIGVudW0geyBET0NV
TUVOVF9GUkFHTUVOVF9OT0RFID0gMTFVIH07CgogIGVudW0geyBOT1RBVElPTl9OT0RFID0gMTJV
IH07CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5vZGVOYW1lKG5zQVN0cmluZyAmIGFOb2RlTmFt
ZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROb2RlVmFsdWUobnNBU3RyaW5nICYgYU5v
ZGVWYWx1ZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Tm9kZVZhbHVlKGNvbnN0IG5zQVN0
cmluZyAmIGFOb2RlVmFsdWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Tm9kZVR5cGUo
UFJVaW50MTYgKmFOb2RlVHlwZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQYXJlbnRO
b2RlKG5zSURPTU5vZGUgKiAqYVBhcmVudE5vZGUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0Q2hpbGROb2Rlcyhuc0lET01Ob2RlTGlzdCAqICphQ2hpbGROb2RlcykgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRGaXJzdENoaWxkKG5zSURPTU5vZGUgKiAqYUZpcnN0Q2hpbGQpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGFzdENoaWxkKG5zSURPTU5vZGUgKiAqYUxhc3RD
aGlsZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQcmV2aW91c1NpYmxpbmcobnNJRE9N
Tm9kZSAqICphUHJldmlvdXNTaWJsaW5nKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5l
eHRTaWJsaW5nKG5zSURPTU5vZGUgKiAqYU5leHRTaWJsaW5nKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldEF0dHJpYnV0ZXMobnNJRE9NTmFtZWROb2RlTWFwICogKmFBdHRyaWJ1dGVzKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE93bmVyRG9jdW1lbnQobnNJRE9NRG9jdW1lbnQg
KiAqYU93bmVyRG9jdW1lbnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSW5zZXJ0QmVmb3Jl
KG5zSURPTU5vZGUgKm5ld0NoaWxkLCBuc0lET01Ob2RlICpyZWZDaGlsZCwgbnNJRE9NTm9kZSAq
Kl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVwbGFjZUNoaWxkKG5zSURPTU5v
ZGUgKm5ld0NoaWxkLCBuc0lET01Ob2RlICpvbGRDaGlsZCwgbnNJRE9NTm9kZSAqKl9yZXR2YWwp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVtb3ZlQ2hpbGQobnNJRE9NTm9kZSAqb2xkQ2hp
bGQsIG5zSURPTU5vZGUgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEFwcGVu
ZENoaWxkKG5zSURPTU5vZGUgKm5ld0NoaWxkLCBuc0lET01Ob2RlICoqX3JldHZhbCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBIYXNDaGlsZE5vZGVzKFBSQm9vbCAqX3JldHZhbCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBDbG9uZU5vZGUoUFJCb29sIGRlZXAsIG5zSURPTU5vZGUgKipf
cmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IE5vcm1hbGl6ZSh2b2lkKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IElzU3VwcG9ydGVkKGNvbnN0IG5zQVN0cmluZyAmIGZlYXR1cmUs
IGNvbnN0IG5zQVN0cmluZyAmIHZlcnNpb24sIFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXROYW1lc3BhY2VVUkkobnNBU3RyaW5nICYgYU5hbWVzcGFjZVVSSSkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQcmVmaXgobnNBU3RyaW5nICYgYVByZWZpeCkg
PSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UHJlZml4KGNvbnN0IG5zQVN0cmluZyAmIGFQcmVm
aXgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TG9jYWxOYW1lKG5zQVN0cmluZyAmIGFM
b2NhbE5hbWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSGFzQXR0cmlidXRlcyhQUkJvb2wg
Kl9yZXR2YWwpID0gMDsKCiAgZW51bSB7IERPQ1VNRU5UX1BPU0lUSU9OX0RJU0NPTk5FQ1RFRCA9
IDMyVSB9OwoKICBlbnVtIHsgRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HID0gMVUgfTsKCiAg
ZW51bSB7IERPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORyA9IDJVIH07CgogIGVudW0geyBET0NV
TUVOVF9QT1NJVElPTl9DT05UQUlOUyA9IDRVIH07CgogIGVudW0geyBET0NVTUVOVF9QT1NJVElP
Tl9JU19DT05UQUlORUQgPSA4VSB9OwoKICBlbnVtIHsgRE9DVU1FTlRfUE9TSVRJT05fSU1QTEVN
RU5UQVRJT05fU1BFQ0lGSUMgPSAxNlUgfTsKCn07CiMgMTEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9kb20vbnNJRE9NRG9jdW1lbnQuaCIgMgojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9t
L25zSURPTURvY3VtZW50LmgiCmNsYXNzIG5zSURPTURvY3VtZW50IDogcHVibGljIG5zSURPTU5v
ZGUgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29u
c3QgbnNJSUQgaWlkID0gezB4YTZjZjkwNzUsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUs
IDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQojIDQ1
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTURvY3VtZW50LmgiCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXREb2N0eXBlKG5zSURPTURvY3VtZW50VHlwZSAqICphRG9jdHlwZSkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRJbXBsZW1lbnRhdGlvbihuc0lET01ET01JbXBsZW1lbnRh
dGlvbiAqICphSW1wbGVtZW50YXRpb24pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RG9j
dW1lbnRFbGVtZW50KG5zSURPTUVsZW1lbnQgKiAqYURvY3VtZW50RWxlbWVudCkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBDcmVhdGVFbGVtZW50KGNvbnN0IG5zQVN0cmluZyAmIHRhZ05hbWUs
IG5zSURPTUVsZW1lbnQgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENyZWF0
ZURvY3VtZW50RnJhZ21lbnQobnNJRE9NRG9jdW1lbnRGcmFnbWVudCAqKl9yZXR2YWwpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgQ3JlYXRlVGV4dE5vZGUoY29uc3QgbnNBU3RyaW5nICYgZGF0
YSwgbnNJRE9NVGV4dCAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ3JlYXRl
Q29tbWVudChjb25zdCBuc0FTdHJpbmcgJiBkYXRhLCBuc0lET01Db21tZW50ICoqX3JldHZhbCkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDcmVhdGVDREFUQVNlY3Rpb24oY29uc3QgbnNBU3Ry
aW5nICYgZGF0YSwgbnNJRE9NQ0RBVEFTZWN0aW9uICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBDcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oY29uc3QgbnNBU3RyaW5nICYg
dGFyZ2V0LCBjb25zdCBuc0FTdHJpbmcgJiBkYXRhLCBuc0lET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24gKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENyZWF0ZUF0dHJpYnV0ZShj
b25zdCBuc0FTdHJpbmcgJiBuYW1lLCBuc0lET01BdHRyICoqX3JldHZhbCkgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBDcmVhdGVFbnRpdHlSZWZlcmVuY2UoY29uc3QgbnNBU3RyaW5nICYgbmFt
ZSwgbnNJRE9NRW50aXR5UmVmZXJlbmNlICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRFbGVtZW50c0J5VGFnTmFtZShjb25zdCBuc0FTdHJpbmcgJiB0YWduYW1lLCBuc0lE
T01Ob2RlTGlzdCAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSW1wb3J0Tm9k
ZShuc0lET01Ob2RlICppbXBvcnRlZE5vZGUsIFBSQm9vbCBkZWVwLCBuc0lET01Ob2RlICoqX3Jl
dHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDcmVhdGVFbGVtZW50TlMoY29uc3QgbnNB
U3RyaW5nICYgbmFtZXNwYWNlVVJJLCBjb25zdCBuc0FTdHJpbmcgJiBxdWFsaWZpZWROYW1lLCBu
c0lET01FbGVtZW50ICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDcmVhdGVB
dHRyaWJ1dGVOUyhjb25zdCBuc0FTdHJpbmcgJiBuYW1lc3BhY2VVUkksIGNvbnN0IG5zQVN0cmlu
ZyAmIHF1YWxpZmllZE5hbWUsIG5zSURPTUF0dHIgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldEVsZW1lbnRzQnlUYWdOYW1lTlMoY29uc3QgbnNBU3RyaW5nICYgbmFtZXNw
YWNlVVJJLCBjb25zdCBuc0FTdHJpbmcgJiBsb2NhbE5hbWUsIG5zSURPTU5vZGVMaXN0ICoqX3Jl
dHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRFbGVtZW50QnlJZChjb25zdCBuc0FT
dHJpbmcgJiBlbGVtZW50SWQsIG5zSURPTUVsZW1lbnQgKipfcmV0dmFsKSA9IDA7Cgp9OwojIDY1
ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25z
SURPTVhNTERvY3VtZW50LmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lE
T01YTUxEb2N1bWVudC5oIgpjbGFzcyBuc0lET01YTUxEb2N1bWVudCA6IHB1YmxpYyBuc0lET01E
b2N1bWVudCB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRp
YyBjb25zdCBuc0lJRCBpaWQgPSB7MHg4ODE2ZDAwMywgMHhlN2M4LCAweDQwNjUsIHsgMHg4OCwg
MHgyNywgMHg4MiwgMHg5YiwgMHg4ZCwgMHgwNywgMHhiNiwgMHhlMCB9fTsgcmV0dXJuIGlpZDt9
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IExvYWQoY29uc3QgbnNBU3RyaW5nICYgdXJsKSA9IDA7CiMg
NDIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NWE1MRG9jdW1lbnQuaCIKICB2aXJ0
dWFsIG5zcmVzdWx0IEV2YWx1YXRlRklYcHRyKGNvbnN0IG5zQVN0cmluZyAmIGV4cHJlc3Npb24s
IG5zSURPTVJhbmdlICoqX3JldHZhbCkgPSAwOwoKfTsKIyA2NiAibnNET01DbGFzc0luZm8uY3Bw
IiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU0RvY3VtZW50LmgiIDEK
IyAxNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU0RvY3VtZW50LmgiCmNsYXNz
IG5zSUJveE9iamVjdDsKCmNsYXNzIG5zSURPTUxvY2F0aW9uOwojIDI5ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvZG9tL25zSURPTU5TRG9jdW1lbnQuaCIKY2xhc3MgbnNJRE9NTlNEb2N1bWVudCA6
IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0
SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTBjZCwgMHgxNWIzLCAweDEx
ZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsg
cmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENoYXJhY3RlclNldChuc0FTdHJp
bmcgJiBhQ2hhcmFjdGVyU2V0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERpcihuc0FT
dHJpbmcgJiBhRGlyKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXREaXIoY29uc3QgbnNBU3Ry
aW5nICYgYURpcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMb2NhdGlvbihuc0lET01M
b2NhdGlvbiAqICphTG9jYXRpb24pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VGl0bGUo
bnNBU3RyaW5nICYgYVRpdGxlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRUaXRsZShjb25z
dCBuc0FTdHJpbmcgJiBhVGl0bGUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29udGVu
dFR5cGUobnNBU3RyaW5nICYgYUNvbnRlbnRUeXBlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldEJveE9iamVjdEZvcihuc0lET01FbGVtZW50ICplbHQsIG5zSUJveE9iamVjdCAqKl9yZXR2
YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Qm94T2JqZWN0Rm9yKG5zSURPTUVsZW1l
bnQgKmVsdCwgbnNJQm94T2JqZWN0ICpib3hPYmplY3QpID0gMDsKCn07CiMgNjcgIm5zRE9NQ2xh
c3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NRXZlbnQu
aCIgMQojIDE3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUV2ZW50LmgiCmNsYXNz
IG5zSURPTUV2ZW50VGFyZ2V0OwojIDI3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURP
TUV2ZW50LmgiCmNsYXNzIG5zSURPTUV2ZW50IDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1Ymxp
YzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlp
ZCA9IHsweGE2NmI3YjgwLCAweGZmNDYsIDB4YmQ5NywgeyAweDAwLCAweDgwLCAweDVmLCAweDhh
LCAweGUzLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KIyA0NCAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2RvbS9uc0lET01FdmVudC5oIgogIGVudW0geyBDQVBUVVJJTkdfUEhBU0Ug
PSAxVSB9OwoKCgoKICBlbnVtIHsgQVRfVEFSR0VUID0gMlUgfTsKCgoKCiAgZW51bSB7IEJVQkJM
SU5HX1BIQVNFID0gM1UgfTsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFR5cGUobnNBU3Ry
aW5nICYgYVR5cGUpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFRhcmdldChuc0lE
T01FdmVudFRhcmdldCAqICphVGFyZ2V0KSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0Q3VycmVudFRhcmdldChuc0lET01FdmVudFRhcmdldCAqICphQ3VycmVudFRhcmdldCkgPSAw
OwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RXZlbnRQaGFzZShQUlVpbnQxNiAqYUV2ZW50
UGhhc2UpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEJ1YmJsZXMoUFJCb29sICph
QnViYmxlcykgPSAwOwoKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENhbmNlbGFibGUoUFJC
b29sICphQ2FuY2VsYWJsZSkgPSAwOwojIDEwOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9u
c0lET01FdmVudC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VGltZVN0YW1wKERPTVRpbWVTdGFt
cCAqYVRpbWVTdGFtcCkgPSAwOwojIDEyMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lE
T01FdmVudC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgU3RvcFByb3BhZ2F0aW9uKHZvaWQpID0gMDsK
IyAxMzUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NRXZlbnQuaCIKICB2aXJ0dWFs
IG5zcmVzdWx0IFByZXZlbnREZWZhdWx0KHZvaWQpID0gMDsKIyAxNjQgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9kb20vbnNJRE9NRXZlbnQuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEluaXRFdmVudChj
b25zdCBuc0FTdHJpbmcgJiBldmVudFR5cGVBcmcsIFBSQm9vbCBjYW5CdWJibGVBcmcsIFBSQm9v
bCBjYW5jZWxhYmxlQXJnKSA9IDA7Cgp9OwojIDY4ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAx
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTU5TRXZlbnQuaCIgMQojIDI1ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTU5TRXZlbnQuaCIKY2xhc3MgbnNJRE9NTlNFdmVu
dCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYg
R2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhOTA5NzdkZCwgMHhhODBiLCAw
eDQ5YmIsIHsgMHg4MSwgMHg2OSwgMHhjYywgMHg5MCwgMHhlMywgMHhkMSwgMHhkYSwgMHg5OCB9
fTsgcmV0dXJuIGlpZDt9CgogIGVudW0geyBNT1VTRURPV04gPSAxIH07CgogIGVudW0geyBNT1VT
RVVQID0gMiB9OwoKICBlbnVtIHsgTU9VU0VPVkVSID0gNCB9OwoKICBlbnVtIHsgTU9VU0VPVVQg
PSA4IH07CgogIGVudW0geyBNT1VTRU1PVkUgPSAxNiB9OwoKICBlbnVtIHsgTU9VU0VEUkFHID0g
MzIgfTsKCiAgZW51bSB7IENMSUNLID0gNjQgfTsKCiAgZW51bSB7IERCTENMSUNLID0gMTI4IH07
CgogIGVudW0geyBLRVlET1dOID0gMjU2IH07CgogIGVudW0geyBLRVlVUCA9IDUxMiB9OwoKICBl
bnVtIHsgS0VZUFJFU1MgPSAxMDI0IH07CgogIGVudW0geyBEUkFHRFJPUCA9IDIwNDggfTsKCiAg
ZW51bSB7IEZPQ1VTID0gNDA5NiB9OwoKICBlbnVtIHsgQkxVUiA9IDgxOTIgfTsKCiAgZW51bSB7
IFNFTEVDVCA9IDE2Mzg0IH07CgogIGVudW0geyBDSEFOR0UgPSAzMjc2OCB9OwoKICBlbnVtIHsg
UkVTRVQgPSA2NTUzNiB9OwoKICBlbnVtIHsgU1VCTUlUID0gMTMxMDcyIH07CgogIGVudW0geyBT
Q1JPTEwgPSAyNjIxNDQgfTsKCiAgZW51bSB7IExPQUQgPSA1MjQyODggfTsKCiAgZW51bSB7IFVO
TE9BRCA9IDEwNDg1NzYgfTsKCiAgZW51bSB7IFhGRVJfRE9ORSA9IDIwOTcxNTIgfTsKCiAgZW51
bSB7IEFCT1JUID0gNDE5NDMwNCB9OwoKICBlbnVtIHsgRVJST1IgPSA4Mzg4NjA4IH07CgogIGVu
dW0geyBMT0NBVEUgPSAxNjc3NzIxNiB9OwoKICBlbnVtIHsgTU9WRSA9IDMzNTU0NDMyIH07Cgog
IGVudW0geyBSRVNJWkUgPSA2NzEwODg2NCB9OwoKICBlbnVtIHsgRk9SV0FSRCA9IDEzNDIxNzcy
OCB9OwoKICBlbnVtIHsgSEVMUCA9IDI2ODQzNTQ1NiB9OwoKICBlbnVtIHsgQkFDSyA9IDUzNjg3
MDkxMiB9OwoKICBlbnVtIHsgVEVYVCA9IDEwNzM3NDE4MjQgfTsKCiAgZW51bSB7IEFMVF9NQVNL
ID0gMSB9OwoKICBlbnVtIHsgQ09OVFJPTF9NQVNLID0gMiB9OwoKICBlbnVtIHsgU0hJRlRfTUFT
SyA9IDQgfTsKCiAgZW51bSB7IE1FVEFfTUFTSyA9IDggfTsKCgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldE9yaWdpbmFsVGFyZ2V0KG5zSURPTUV2ZW50VGFyZ2V0ICogKmFPcmlnaW5hbFRhcmdldCkg
PSAwOwojIDExNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU0V2ZW50LmgiCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRFeHBsaWNpdE9yaWdpbmFsVGFyZ2V0KG5zSURPTUV2ZW50VGFy
Z2V0ICogKmFFeHBsaWNpdE9yaWdpbmFsVGFyZ2V0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldFRtcDEzUmVhbE9yaWdpbmFsVGFyZ2V0KG5zSURPTUV2ZW50VGFyZ2V0ICogKmFUbXAxM1Jl
YWxPcmlnaW5hbFRhcmdldCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBQcmV2ZW50QnViYmxl
KHZvaWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUHJldmVudENhcHR1cmUodm9pZCkgPSAw
OwoKfTsKIyA2OSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2RvbS9uc0lET01LZXlFdmVudC5oIiAxCiMgMTAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9k
b20vbnNJRE9NS2V5RXZlbnQuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURP
TVVJRXZlbnQuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVVJRXZl
bnQuaCIKY2xhc3MgbnNJRE9NVUlFdmVudCA6IHB1YmxpYyBuc0lET01FdmVudCB7CiBwdWJsaWM6
CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQg
PSB7MHhhNmNmOTBjMywgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwg
MHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldFZpZXcobnNJRE9NQWJzdHJhY3RWaWV3ICogKmFWaWV3KSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldERldGFpbChQUkludDMyICphRGV0YWlsKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEluaXRVSUV2ZW50KGNvbnN0IG5zQVN0cmluZyAmIHR5cGVBcmcsIFBSQm9vbCBjYW5C
dWJibGVBcmcsIFBSQm9vbCBjYW5jZWxhYmxlQXJnLCBuc0lET01BYnN0cmFjdFZpZXcgKnZpZXdB
cmcsIFBSSW50MzIgZGV0YWlsQXJnKSA9IDA7Cgp9OwojIDExICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvZG9tL25zSURPTUtleUV2ZW50LmgiIDIKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2Rv
bS9uc0lET01LZXlFdmVudC5oIgpjbGFzcyBuc0lET01LZXlFdmVudCA6IHB1YmxpYyBuc0lET01V
SUV2ZW50IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGlj
IGNvbnN0IG5zSUlEIGlpZCA9IHsweDAyOGUwZTZlLCAweDhiMDEsIDB4MTFkMywgeyAweGFhLCAw
eGU3LCAweDAwLCAweDEwLCAweDgzLCAweDhhLCAweDMxLCAweDIzIH19OyByZXR1cm4gaWlkO30K
CiAgZW51bSB7IERPTV9WS19DQU5DRUwgPSAzVSB9OwoKICBlbnVtIHsgRE9NX1ZLX0hFTFAgPSA2
VSB9OwoKICBlbnVtIHsgRE9NX1ZLX0JBQ0tfU1BBQ0UgPSA4VSB9OwoKICBlbnVtIHsgRE9NX1ZL
X1RBQiA9IDlVIH07CgogIGVudW0geyBET01fVktfQ0xFQVIgPSAxMlUgfTsKCiAgZW51bSB7IERP
TV9WS19SRVRVUk4gPSAxM1UgfTsKCiAgZW51bSB7IERPTV9WS19FTlRFUiA9IDE0VSB9OwoKICBl
bnVtIHsgRE9NX1ZLX1NISUZUID0gMTZVIH07CgogIGVudW0geyBET01fVktfQ09OVFJPTCA9IDE3
VSB9OwoKICBlbnVtIHsgRE9NX1ZLX0FMVCA9IDE4VSB9OwoKICBlbnVtIHsgRE9NX1ZLX1BBVVNF
ID0gMTlVIH07CgogIGVudW0geyBET01fVktfQ0FQU19MT0NLID0gMjBVIH07CgogIGVudW0geyBE
T01fVktfRVNDQVBFID0gMjdVIH07CgogIGVudW0geyBET01fVktfU1BBQ0UgPSAzMlUgfTsKCiAg
ZW51bSB7IERPTV9WS19QQUdFX1VQID0gMzNVIH07CgogIGVudW0geyBET01fVktfUEFHRV9ET1dO
ID0gMzRVIH07CgogIGVudW0geyBET01fVktfRU5EID0gMzVVIH07CgogIGVudW0geyBET01fVktf
SE9NRSA9IDM2VSB9OwoKICBlbnVtIHsgRE9NX1ZLX0xFRlQgPSAzN1UgfTsKCiAgZW51bSB7IERP
TV9WS19VUCA9IDM4VSB9OwoKICBlbnVtIHsgRE9NX1ZLX1JJR0hUID0gMzlVIH07CgogIGVudW0g
eyBET01fVktfRE9XTiA9IDQwVSB9OwoKICBlbnVtIHsgRE9NX1ZLX1BSSU5UU0NSRUVOID0gNDRV
IH07CgogIGVudW0geyBET01fVktfSU5TRVJUID0gNDVVIH07CgogIGVudW0geyBET01fVktfREVM
RVRFID0gNDZVIH07CgogIGVudW0geyBET01fVktfMCA9IDQ4VSB9OwoKICBlbnVtIHsgRE9NX1ZL
XzEgPSA0OVUgfTsKCiAgZW51bSB7IERPTV9WS18yID0gNTBVIH07CgogIGVudW0geyBET01fVktf
MyA9IDUxVSB9OwoKICBlbnVtIHsgRE9NX1ZLXzQgPSA1MlUgfTsKCiAgZW51bSB7IERPTV9WS181
ID0gNTNVIH07CgogIGVudW0geyBET01fVktfNiA9IDU0VSB9OwoKICBlbnVtIHsgRE9NX1ZLXzcg
PSA1NVUgfTsKCiAgZW51bSB7IERPTV9WS184ID0gNTZVIH07CgogIGVudW0geyBET01fVktfOSA9
IDU3VSB9OwoKICBlbnVtIHsgRE9NX1ZLX1NFTUlDT0xPTiA9IDU5VSB9OwoKICBlbnVtIHsgRE9N
X1ZLX0VRVUFMUyA9IDYxVSB9OwoKICBlbnVtIHsgRE9NX1ZLX0EgPSA2NVUgfTsKCiAgZW51bSB7
IERPTV9WS19CID0gNjZVIH07CgogIGVudW0geyBET01fVktfQyA9IDY3VSB9OwoKICBlbnVtIHsg
RE9NX1ZLX0QgPSA2OFUgfTsKCiAgZW51bSB7IERPTV9WS19FID0gNjlVIH07CgogIGVudW0geyBE
T01fVktfRiA9IDcwVSB9OwoKICBlbnVtIHsgRE9NX1ZLX0cgPSA3MVUgfTsKCiAgZW51bSB7IERP
TV9WS19IID0gNzJVIH07CgogIGVudW0geyBET01fVktfSSA9IDczVSB9OwoKICBlbnVtIHsgRE9N
X1ZLX0ogPSA3NFUgfTsKCiAgZW51bSB7IERPTV9WS19LID0gNzVVIH07CgogIGVudW0geyBET01f
VktfTCA9IDc2VSB9OwoKICBlbnVtIHsgRE9NX1ZLX00gPSA3N1UgfTsKCiAgZW51bSB7IERPTV9W
S19OID0gNzhVIH07CgogIGVudW0geyBET01fVktfTyA9IDc5VSB9OwoKICBlbnVtIHsgRE9NX1ZL
X1AgPSA4MFUgfTsKCiAgZW51bSB7IERPTV9WS19RID0gODFVIH07CgogIGVudW0geyBET01fVktf
UiA9IDgyVSB9OwoKICBlbnVtIHsgRE9NX1ZLX1MgPSA4M1UgfTsKCiAgZW51bSB7IERPTV9WS19U
ID0gODRVIH07CgogIGVudW0geyBET01fVktfVSA9IDg1VSB9OwoKICBlbnVtIHsgRE9NX1ZLX1Yg
PSA4NlUgfTsKCiAgZW51bSB7IERPTV9WS19XID0gODdVIH07CgogIGVudW0geyBET01fVktfWCA9
IDg4VSB9OwoKICBlbnVtIHsgRE9NX1ZLX1kgPSA4OVUgfTsKCiAgZW51bSB7IERPTV9WS19aID0g
OTBVIH07CgogIGVudW0geyBET01fVktfTlVNUEFEMCA9IDk2VSB9OwoKICBlbnVtIHsgRE9NX1ZL
X05VTVBBRDEgPSA5N1UgfTsKCiAgZW51bSB7IERPTV9WS19OVU1QQUQyID0gOThVIH07CgogIGVu
dW0geyBET01fVktfTlVNUEFEMyA9IDk5VSB9OwoKICBlbnVtIHsgRE9NX1ZLX05VTVBBRDQgPSAx
MDBVIH07CgogIGVudW0geyBET01fVktfTlVNUEFENSA9IDEwMVUgfTsKCiAgZW51bSB7IERPTV9W
S19OVU1QQUQ2ID0gMTAyVSB9OwoKICBlbnVtIHsgRE9NX1ZLX05VTVBBRDcgPSAxMDNVIH07Cgog
IGVudW0geyBET01fVktfTlVNUEFEOCA9IDEwNFUgfTsKCiAgZW51bSB7IERPTV9WS19OVU1QQUQ5
ID0gMTA1VSB9OwoKICBlbnVtIHsgRE9NX1ZLX01VTFRJUExZID0gMTA2VSB9OwoKICBlbnVtIHsg
RE9NX1ZLX0FERCA9IDEwN1UgfTsKCiAgZW51bSB7IERPTV9WS19TRVBBUkFUT1IgPSAxMDhVIH07
CgogIGVudW0geyBET01fVktfU1VCVFJBQ1QgPSAxMDlVIH07CgogIGVudW0geyBET01fVktfREVD
SU1BTCA9IDExMFUgfTsKCiAgZW51bSB7IERPTV9WS19ESVZJREUgPSAxMTFVIH07CgogIGVudW0g
eyBET01fVktfRjEgPSAxMTJVIH07CgogIGVudW0geyBET01fVktfRjIgPSAxMTNVIH07CgogIGVu
dW0geyBET01fVktfRjMgPSAxMTRVIH07CgogIGVudW0geyBET01fVktfRjQgPSAxMTVVIH07Cgog
IGVudW0geyBET01fVktfRjUgPSAxMTZVIH07CgogIGVudW0geyBET01fVktfRjYgPSAxMTdVIH07
CgogIGVudW0geyBET01fVktfRjcgPSAxMThVIH07CgogIGVudW0geyBET01fVktfRjggPSAxMTlV
IH07CgogIGVudW0geyBET01fVktfRjkgPSAxMjBVIH07CgogIGVudW0geyBET01fVktfRjEwID0g
MTIxVSB9OwoKICBlbnVtIHsgRE9NX1ZLX0YxMSA9IDEyMlUgfTsKCiAgZW51bSB7IERPTV9WS19G
MTIgPSAxMjNVIH07CgogIGVudW0geyBET01fVktfRjEzID0gMTI0VSB9OwoKICBlbnVtIHsgRE9N
X1ZLX0YxNCA9IDEyNVUgfTsKCiAgZW51bSB7IERPTV9WS19GMTUgPSAxMjZVIH07CgogIGVudW0g
eyBET01fVktfRjE2ID0gMTI3VSB9OwoKICBlbnVtIHsgRE9NX1ZLX0YxNyA9IDEyOFUgfTsKCiAg
ZW51bSB7IERPTV9WS19GMTggPSAxMjlVIH07CgogIGVudW0geyBET01fVktfRjE5ID0gMTMwVSB9
OwoKICBlbnVtIHsgRE9NX1ZLX0YyMCA9IDEzMVUgfTsKCiAgZW51bSB7IERPTV9WS19GMjEgPSAx
MzJVIH07CgogIGVudW0geyBET01fVktfRjIyID0gMTMzVSB9OwoKICBlbnVtIHsgRE9NX1ZLX0Yy
MyA9IDEzNFUgfTsKCiAgZW51bSB7IERPTV9WS19GMjQgPSAxMzVVIH07CgogIGVudW0geyBET01f
VktfTlVNX0xPQ0sgPSAxNDRVIH07CgogIGVudW0geyBET01fVktfU0NST0xMX0xPQ0sgPSAxNDVV
IH07CgogIGVudW0geyBET01fVktfQ09NTUEgPSAxODhVIH07CgogIGVudW0geyBET01fVktfUEVS
SU9EID0gMTkwVSB9OwoKICBlbnVtIHsgRE9NX1ZLX1NMQVNIID0gMTkxVSB9OwoKICBlbnVtIHsg
RE9NX1ZLX0JBQ0tfUVVPVEUgPSAxOTJVIH07CgogIGVudW0geyBET01fVktfT1BFTl9CUkFDS0VU
ID0gMjE5VSB9OwoKICBlbnVtIHsgRE9NX1ZLX0JBQ0tfU0xBU0ggPSAyMjBVIH07CgogIGVudW0g
eyBET01fVktfQ0xPU0VfQlJBQ0tFVCA9IDIyMVUgfTsKCiAgZW51bSB7IERPTV9WS19RVU9URSA9
IDIyMlUgfTsKCiAgZW51bSB7IERPTV9WS19NRVRBID0gMjI0VSB9OwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRDaGFyQ29kZShQUlVpbnQzMiAqYUNoYXJDb2RlKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldEtleUNvZGUoUFJVaW50MzIgKmFLZXlDb2RlKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldEFsdEtleShQUkJvb2wgKmFBbHRLZXkpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0Q3RybEtleShQUkJvb2wgKmFDdHJsS2V5KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldFNoaWZ0S2V5KFBSQm9vbCAqYVNoaWZ0S2V5KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldE1ldGFLZXkoUFJCb29sICphTWV0YUtleSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJ
bml0S2V5RXZlbnQoY29uc3QgbnNBU3RyaW5nICYgdHlwZUFyZywgUFJCb29sIGNhbkJ1YmJsZUFy
ZywgUFJCb29sIGNhbmNlbGFibGVBcmcsIG5zSURPTUFic3RyYWN0VmlldyAqdmlld0FyZywgUFJC
b29sIGN0cmxLZXlBcmcsIFBSQm9vbCBhbHRLZXlBcmcsIFBSQm9vbCBzaGlmdEtleUFyZywgUFJC
b29sIG1ldGFLZXlBcmcsIFBSVWludDMyIGtleUNvZGVBcmcsIFBSVWludDMyIGNoYXJDb2RlQXJn
KSA9IDA7Cgp9OwojIDcwICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvZG9tL25zSURPTUV2ZW50TGlzdGVuZXIuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvZG9tL25zSURPTUV2ZW50TGlzdGVuZXIuaCIKY2xhc3MgbnNJRE9NRXZlbnRMaXN0
ZW5lciA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJ
RCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhkZjMxYzEyMCwgMHhkZWQ2
LCAweDExZDEsIHsgMHhiZCwgMHg4NSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhlMywgMHhm
NCB9fTsgcmV0dXJuIGlpZDt9CiMgNDkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9N
RXZlbnRMaXN0ZW5lci5oIgogIHZpcnR1YWwgbnNyZXN1bHQgSGFuZGxlRXZlbnQobnNJRE9NRXZl
bnQgKmV2ZW50KSA9IDA7Cgp9OwojIDcxICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKCgojIDEgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9kb2NzaGVsbC9uc0lEb2NTaGVsbC5oIiAxCiMgMTcgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9kb2NzaGVsbC9uc0lEb2NTaGVsbC5oIgpjbGFzcyBuc0lQcmVzQ29u
dGV4dDsKY2xhc3MgbnNJUHJlc1NoZWxsOwpjbGFzcyBuc0lVUkk7CgpjbGFzcyBuc0lDb250ZW50
Vmlld2VyOwoKY2xhc3MgbnNJVVJJQ29udGVudExpc3RlbmVyOwoKY2xhc3MgbnNJQ2hyb21lRXZl
bnRIYW5kbGVyOwoKY2xhc3MgbnNJRG9jU2hlbGxMb2FkSW5mbzsKCmNsYXNzIG5zSURvY3VtZW50
Q2hhcnNldEluZm87CgpjbGFzcyBuc0lXZWJOYXZpZ2F0aW9uOwoKY2xhc3MgbnNJU2ltcGxlRW51
bWVyYXRvcjsKCmNsYXNzIG5zSUlucHV0U3RyZWFtOwoKY2xhc3MgbnNJUmVxdWVzdDsKCmNsYXNz
IG5zSVNIRW50cnk7CiMgNDkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb2NzaGVsbC9uc0lEb2NT
aGVsbC5oIgpjbGFzcyBuc0lEb2NTaGVsbCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6
CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQg
PSB7MHg2OWU1ZGUwMCwgMHg3YjhiLCAweDExZDMsIHsgMHhhZiwgMHg2MSwgMHgwMCwgMHhhMCwg
MHgyNCwgMHhmZiwgMHhjMCwgMHg4YyB9fTsgcmV0dXJuIGlpZDt9CiMgNzEgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9kb2NzaGVsbC9uc0lEb2NTaGVsbC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgTG9h
ZFVSSShuc0lVUkkgKnVyaSwgbnNJRG9jU2hlbGxMb2FkSW5mbyAqbG9hZEluZm8sIFBSVWludDMy
IGFMb2FkRmxhZ3MsIFBSQm9vbCBmaXJzdFBhcnR5KSA9IDA7CiMgOTMgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9kb2NzaGVsbC9uc0lEb2NTaGVsbC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgTG9hZFN0
cmVhbShuc0lJbnB1dFN0cmVhbSAqYVN0cmVhbSwgbnNJVVJJICphVVJJLCBjb25zdCBuc0FDU3Ry
aW5nICYgYUNvbnRlbnRUeXBlLCBjb25zdCBuc0FDU3RyaW5nICYgYUNvbnRlbnRDaGFyc2V0LCBu
c0lEb2NTaGVsbExvYWRJbmZvICphTG9hZEluZm8pID0gMDsKIyAxMTUgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9kb2NzaGVsbC9uc0lEb2NTaGVsbC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgSW50ZXJu
YWxMb2FkKG5zSVVSSSAqYVVSSSwgbnNJVVJJICphUmVmZXJyZXIsIG5zSVN1cHBvcnRzICphT3du
ZXIsIFBSQm9vbCBhSW5oZXJpdE93bmVyLCBjb25zdCBQUlVuaWNoYXIgKmFXaW5kb3dUYXJnZXQs
IG5zSUlucHV0U3RyZWFtICphUG9zdERhdGFTdHJlYW0sIG5zSUlucHV0U3RyZWFtICphSGVhZGVy
c1N0cmVhbSwgUFJVaW50MzIgYUxvYWRGbGFncywgbnNJU0hFbnRyeSAqYVNIRW50cnksIFBSQm9v
bCBmaXJzdFBhcnR5LCBuc0lEb2NTaGVsbCAqKmFEb2NTaGVsbCwgbnNJUmVxdWVzdCAqKmFSZXF1
ZXN0KSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDcmVhdGVMb2FkSW5mbyhuc0lEb2NT
aGVsbExvYWRJbmZvICoqbG9hZEluZm8pID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFBy
ZXBhcmVGb3JOZXdDb250ZW50TW9kZWwodm9pZCkgPSAwOwoKCgoKCgoKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldEN1cnJlbnRVUkkobnNJVVJJICphVVJJKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBGaXJlVW5sb2FkTm90aWZpY2F0aW9uKHZvaWQpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0UHJlc0NvbnRleHQobnNJUHJlc0NvbnRleHQgKiAqYVByZXNDb250ZXh0KSA9IDA7
CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByZXNTaGVsbChuc0lQcmVzU2hlbGwgKiAqYVBy
ZXNTaGVsbCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RWxkZXN0UHJlc1NoZWxs
KG5zSVByZXNTaGVsbCAqICphRWxkZXN0UHJlc1NoZWxsKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRDb250ZW50Vmlld2VyKG5zSUNvbnRlbnRWaWV3ZXIgKiAqYUNvbnRlbnRWaWV3
ZXIpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENocm9tZUV2ZW50SGFuZGxlcihu
c0lDaHJvbWVFdmVudEhhbmRsZXIgKiAqYUNocm9tZUV2ZW50SGFuZGxlcikgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0Q2hyb21lRXZlbnRIYW5kbGVyKG5zSUNocm9tZUV2ZW50SGFuZGxlciAq
IGFDaHJvbWVFdmVudEhhbmRsZXIpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBh
cmVudFVSSUNvbnRlbnRMaXN0ZW5lcihuc0lVUklDb250ZW50TGlzdGVuZXIgKiAqYVBhcmVudFVS
SUNvbnRlbnRMaXN0ZW5lcikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UGFyZW50VVJJQ29u
dGVudExpc3RlbmVyKG5zSVVSSUNvbnRlbnRMaXN0ZW5lciAqIGFQYXJlbnRVUklDb250ZW50TGlz
dGVuZXIpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERvY3VtZW50Q2hhcnNldElu
Zm8obnNJRG9jdW1lbnRDaGFyc2V0SW5mbyAqICphRG9jdW1lbnRDaGFyc2V0SW5mbykgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0RG9jdW1lbnRDaGFyc2V0SW5mbyhuc0lEb2N1bWVudENoYXJz
ZXRJbmZvICogYURvY3VtZW50Q2hhcnNldEluZm8pID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0QWxsb3dQbHVnaW5zKFBSQm9vbCAqYUFsbG93UGx1Z2lucykgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0QWxsb3dQbHVnaW5zKFBSQm9vbCBhQWxsb3dQbHVnaW5zKSA9IDA7CgoKCgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFsbG93SmF2YXNjcmlwdChQUkJvb2wgKmFBbGxvd0phdmFz
Y3JpcHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFsbG93SmF2YXNjcmlwdChQUkJvb2wg
YUFsbG93SmF2YXNjcmlwdCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBbGxvd01l
dGFSZWRpcmVjdHMoUFJCb29sICphQWxsb3dNZXRhUmVkaXJlY3RzKSA9IDA7CiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXRBbGxvd01ldGFSZWRpcmVjdHMoUFJCb29sIGFBbGxvd01ldGFSZWRpcmVjdHMp
ID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QWxsb3dTdWJmcmFtZXMoUFJCb29sICph
QWxsb3dTdWJmcmFtZXMpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFsbG93U3ViZnJhbWVz
KFBSQm9vbCBhQWxsb3dTdWJmcmFtZXMpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
QWxsb3dJbWFnZXMoUFJCb29sICphQWxsb3dJbWFnZXMpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0
IFNldEFsbG93SW1hZ2VzKFBSQm9vbCBhQWxsb3dJbWFnZXMpID0gMDsKIyAyMzkgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9kb2NzaGVsbC9uc0lEb2NTaGVsbC5oIgogIGVudW0geyBFTlVNRVJBVEVf
Rk9SV0FSRFMgPSAwIH07CgogIGVudW0geyBFTlVNRVJBVEVfQkFDS1dBUkRTID0gMSB9OwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXREb2NTaGVsbEVudW1lcmF0b3IoUFJJbnQzMiBhSXRlbVR5cGUs
IFBSSW50MzIgYURpcmVjdGlvbiwgbnNJU2ltcGxlRW51bWVyYXRvciAqKl9yZXR2YWwpID0gMDsK
CgoKCiAgZW51bSB7IEFQUF9UWVBFX1VOS05PV04gPSAwVSB9OwoKICBlbnVtIHsgQVBQX1RZUEVf
TUFJTCA9IDFVIH07CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFwcFR5cGUoUFJVaW50MzIgKmFB
cHBUeXBlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRBcHBUeXBlKFBSVWludDMyIGFBcHBU
eXBlKSA9IDA7CiMgMjY2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9jc2hlbGwvbnNJRG9jU2hl
bGwuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFpvb20oZmxvYXQgKmFab29tKSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXRab29tKGZsb2F0IGFab29tKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldE1hcmdpbldpZHRoKFBSSW50MzIgKmFNYXJnaW5XaWR0aCkgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0TWFyZ2luV2lkdGgoUFJJbnQzMiBhTWFyZ2luV2lkdGgpID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0TWFyZ2luSGVpZ2h0KFBSSW50MzIgKmFNYXJnaW5IZWlnaHQpID0g
MDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1hcmdpbkhlaWdodChQUkludDMyIGFNYXJnaW5IZWln
aHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SGFzRm9jdXMoUFJCb29sICphSGFzRm9j
dXMpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEhhc0ZvY3VzKFBSQm9vbCBhSGFzRm9jdXMp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q2FudmFzSGFzRm9jdXMoUFJCb29sICphQ2Fu
dmFzSGFzRm9jdXMpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENhbnZhc0hhc0ZvY3VzKFBS
Qm9vbCBhQ2FudmFzSGFzRm9jdXMpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgVGFiVG9UcmVl
T3duZXIoUFJCb29sIGZvcndhcmQsIFBSQm9vbCAqdG9va0ZvY3VzKSA9IDA7CgoKCgogIGVudW0g
eyBCVVNZX0ZMQUdTX05PTkUgPSAwVSB9OwoKICBlbnVtIHsgQlVTWV9GTEFHU19CVVNZID0gMVUg
fTsKCiAgZW51bSB7IEJVU1lfRkxBR1NfQkVGT1JFX1BBR0VfTE9BRCA9IDJVIH07CgogIGVudW0g
eyBCVVNZX0ZMQUdTX1BBR0VfTE9BRElORyA9IDRVIH07CgoKCgogIGVudW0geyBMT0FEX0NNRF9O
T1JNQUwgPSAxVSB9OwoKICBlbnVtIHsgTE9BRF9DTURfUkVMT0FEID0gMlUgfTsKCiAgZW51bSB7
IExPQURfQ01EX0hJU1RPUlkgPSA0VSB9OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRCdXN5Rmxh
Z3MoUFJVaW50MzIgKmFCdXN5RmxhZ3MpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TG9h
ZFR5cGUoUFJVaW50MzIgKmFMb2FkVHlwZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TG9h
ZFR5cGUoUFJVaW50MzIgYUxvYWRUeXBlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IElzQmVp
bmdEZXN0cm95ZWQoUFJCb29sICpfcmV0dmFsKSA9IDA7Cgp9OwojIDc0ICJuc0RPTUNsYXNzSW5m
by5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9jc2hlbGwvbnNJRG9jU2hlbGxU
cmVlSXRlbS5oIiAxCiMgMTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb2NzaGVsbC9uc0lEb2NT
aGVsbFRyZWVJdGVtLmgiCmNsYXNzIG5zSURvY1NoZWxsVHJlZU93bmVyOwojIDMyICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvZG9jc2hlbGwvbnNJRG9jU2hlbGxUcmVlSXRlbS5oIgpjbGFzcyBuc0lE
b2NTaGVsbFRyZWVJdGVtIDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGlj
IGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGI1MmFl
NzgwLCAweGE5NjYsIDB4MTFkMywgeyAweGFmLCAweGM3LCAweDAwLCAweGEwLCAweDI0LCAweGZm
LCAweGMwLCAweDhjIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TmFt
ZShQUlVuaWNoYXIgKiAqYU5hbWUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE5hbWUoY29u
c3QgUFJVbmljaGFyICogYU5hbWUpID0gMDsKIyA0OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2Rv
Y3NoZWxsL25zSURvY1NoZWxsVHJlZUl0ZW0uaCIKICB2aXJ0dWFsIG5zcmVzdWx0IE5hbWVFcXVh
bHMoY29uc3QgUFJVbmljaGFyICpuYW1lLCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKCiAgZW51bSB7
IHR5cGVDaHJvbWUgPSAwIH07CgogIGVudW0geyB0eXBlQ29udGVudCA9IDEgfTsKCiAgZW51bSB7
IHR5cGVDb250ZW50V3JhcHBlciA9IDIgfTsKCiAgZW51bSB7IHR5cGVDaHJvbWVXcmFwcGVyID0g
MyB9OwoKICBlbnVtIHsgdHlwZUFsbCA9IDIxNDc0ODM2NDcgfTsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0SXRlbVR5cGUoUFJJbnQzMiAqYUl0ZW1UeXBlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRJdGVtVHlwZShQUkludDMyIGFJdGVtVHlwZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRQYXJlbnQobnNJRG9jU2hlbGxUcmVlSXRlbSAqICphUGFyZW50KSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRQYXJlbnQobnNJRG9jU2hlbGxUcmVlSXRlbSAqIGFQYXJlbnQpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2FtZVR5cGVQYXJlbnQobnNJRG9jU2hlbGxUcmVlSXRl
bSAqICphU2FtZVR5cGVQYXJlbnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Um9vdFRy
ZWVJdGVtKG5zSURvY1NoZWxsVHJlZUl0ZW0gKiAqYVJvb3RUcmVlSXRlbSkgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRTYW1lVHlwZVJvb3RUcmVlSXRlbShuc0lEb2NTaGVsbFRyZWVJdGVt
ICogKmFTYW1lVHlwZVJvb3RUcmVlSXRlbSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBGaW5k
SXRlbVdpdGhOYW1lKGNvbnN0IFBSVW5pY2hhciAqbmFtZSwgbnNJU3VwcG9ydHMgKmFSZXF1ZXN0
b3IsIG5zSURvY1NoZWxsVHJlZUl0ZW0gKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldFRyZWVPd25lcihuc0lEb2NTaGVsbFRyZWVPd25lciAqICphVHJlZU93bmVyKSA9IDA7
CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRUcmVlT3duZXIobnNJRG9jU2hlbGxUcmVlT3duZXIgKiBh
VHJlZU93bmVyKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENoaWxkT2Zmc2V0KFBSSW50
MzIgKmFDaGlsZE9mZnNldCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q2hpbGRPZmZzZXQo
UFJJbnQzMiBhQ2hpbGRPZmZzZXQpID0gMDsKCn07CiMgNzUgIm5zRE9NQ2xhc3NJbmZvLmNwcCIg
MgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb2NzaGVsbC9uc0lEb2NTaGVsbFRyZWVOb2Rl
LmgiIDEKIyAzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvY3NoZWxsL25zSURvY1NoZWxsVHJl
ZU5vZGUuaCIKY2xhc3MgbnNJRG9jU2hlbGxUcmVlTm9kZSA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7
CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBu
c0lJRCBpaWQgPSB7MHhjMDk0ZjgxMCwgMHhhOGFiLCAweDExZDMsIHsgMHhhZiwgMHhjNiwgMHgw
MCwgMHhhMCwgMHgyNCwgMHhmZiwgMHhjMCwgMHg4YyB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldENoaWxkQ291bnQoUFJJbnQzMiAqYUNoaWxkQ291bnQpID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgQWRkQ2hpbGQobnNJRG9jU2hlbGxUcmVlSXRlbSAqY2hpbGQpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVtb3ZlQ2hpbGQobnNJRG9jU2hlbGxUcmVlSXRlbSAq
Y2hpbGQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q2hpbGRBdChQUkludDMyIGluZGV4
LCBuc0lEb2NTaGVsbFRyZWVJdGVtICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBGaW5kQ2hpbGRXaXRoTmFtZShjb25zdCBQUlVuaWNoYXIgKmFOYW1lLCBQUkJvb2wgYVJlY3Vy
c2UsIFBSQm9vbCBhU2FtZVR5cGUsIG5zSURvY1NoZWxsVHJlZUl0ZW0gKmFSZXF1ZXN0b3IsIG5z
SURvY1NoZWxsVHJlZUl0ZW0gKipfcmV0dmFsKSA9IDA7Cgp9OwojIDc2ICJuc0RPTUNsYXNzSW5m
by5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSVNjcmlwdEV4dGVybmFs
TmFtZVNldC5oIiAxCiMgNDggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJU2NyaXB0RXh0
ZXJuYWxOYW1lU2V0LmgiCmNsYXNzIG5zSVNjcmlwdENvbnRleHQ7CiMgNTggIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9kb20vbnNJU2NyaXB0RXh0ZXJuYWxOYW1lU2V0LmgiCmNsYXNzIG5zSVNjcmlw
dEV4dGVybmFsTmFtZVNldCA6IHB1YmxpYyBuc0lTdXBwb3J0cwp7CnB1YmxpYzoKICBzdGF0aWMg
Y29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkw
ZGEsIDB4MTViMywgMHgxMWQyLCB7MHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwg
MHhkZCwgMHgzMn19OyByZXR1cm4gaWlkO307CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgSW5pdGlh
bGl6ZU5hbWVTZXQobnNJU2NyaXB0Q29udGV4dCogYVNjcmlwdENvbnRleHQpID0gMDsKfTsKIyA3
NyAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAibnNKU1V0aWxzLmgiIDEKIyA1MyAibnNKU1V0
aWxzLmgiCmNsYXNzIG5zSURPTUV2ZW50TGlzdGVuZXI7CmNsYXNzIG5zSVNjcmlwdENvbnRleHQ7
CmNsYXNzIG5zSVNjcmlwdEdsb2JhbE9iamVjdDsKY2xhc3MgbnNJU2NyaXB0U2VjdXJpdHlNYW5h
Z2VyOwoKY2xhc3MgbnNKU1V0aWxzIHsKcHVibGljOgogIHN0YXRpYyBKU0Jvb2wgR2V0Q2FsbGlu
Z0xvY2F0aW9uKEpTQ29udGV4dCogYUNvbnRleHQsIGNvbnN0IGNoYXIqICphRmlsZW5hbWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJVaW50MzIgKmFMaW5lbm8pOwoKICBz
dGF0aWMgdm9pZCBDb252ZXJ0U3RyaW5nVG9KU1ZhbChjb25zdCBuc1N0cmluZyYgYVByb3AsIEpT
Q29udGV4dCogYUNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganN2
YWwqIGFSZXR1cm4pOwoKICBzdGF0aWMgUFJCb29sIENvbnZlcnRKU1ZhbFRvWFBDT2JqZWN0KG5z
SVN1cHBvcnRzKiogYVN1cHBvcnRzLCBjb25zdCBuc0lJRCYgYUlJRCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEpTQ29udGV4dCogYUNvbnRleHQsIGpzdmFsIGFWYWx1
ZSk7CgogIHN0YXRpYyB2b2lkIENvbnZlcnRKU1ZhbFRvU3RyaW5nKG5zQVN0cmluZyYgYVN0cmlu
ZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU0NvbnRleHQqIGFDb250ZXh0
LCBqc3ZhbCBhVmFsdWUpOwoKICBzdGF0aWMgUFJCb29sIENvbnZlcnRKU1ZhbFRvVWludDMyKFBS
VWludDMyKiBhUHJvcCwgSlNDb250ZXh0KiBhQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGpzdmFsIGFWYWx1ZSk7CgogIHN0YXRpYyBuc3Jlc3VsdCBHZXRTdGF0
aWNTY3JpcHRHbG9iYWwoSlNDb250ZXh0KiBhQ29udGV4dCwgSlNPYmplY3QqIGFPYmosCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTY3JpcHRHbG9iYWxPYmplY3Qq
KiBhR2xvYmFsKTsKCiAgc3RhdGljIG5zcmVzdWx0IEdldFN0YXRpY1NjcmlwdENvbnRleHQoSlND
b250ZXh0KiBhQ29udGV4dCwgSlNPYmplY3QqIGFPYmosCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnNJU2NyaXB0Q29udGV4dCoqIGFTY3JpcHRDb250ZXh0KTsKCiAg
c3RhdGljIG5zcmVzdWx0IEdldER5bmFtaWNTY3JpcHRHbG9iYWwoSlNDb250ZXh0ICphQ29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTY3JpcHRHbG9i
YWxPYmplY3QqKiBhR2xvYmFsKTsKCiAgc3RhdGljIG5zcmVzdWx0IEdldER5bmFtaWNTY3JpcHRD
b250ZXh0KEpTQ29udGV4dCAqYUNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5zSVNjcmlwdENvbnRleHQqKiBhU2NyaXB0Q29udGV4dCk7Cn07CiMgNzgg
Im5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9u
c0lJbnRlcmZhY2VSZXF1ZXN0b3IuaCIgMQojIDM4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBj
b20vbnNJSW50ZXJmYWNlUmVxdWVzdG9yLmgiCmNsYXNzIG5zSUludGVyZmFjZVJlcXVlc3RvciA6
IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0
SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgwMzNhMTQ3MCwgMHg4YjJhLCAweDEx
ZDMsIHsgMHhhZiwgMHg4OCwgMHgwMCwgMHhhMCwgMHgyNCwgMHhmZiwgMHhjMCwgMHg4YyB9fTsg
cmV0dXJuIGlpZDt9CiMgNTQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lJbnRlcmZh
Y2VSZXF1ZXN0b3IuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEludGVyZmFjZShjb25zdCBuc0lJ
RCAmIHV1aWQsIHZvaWQgKiAqcmVzdWx0KSA9IDA7Cgp9OwojIDc5ICJuc0RPTUNsYXNzSW5mby5j
cHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJSW50ZXJmYWNlUmVxdWVz
dG9yVXRpbHMuaCIgMQojIDI5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJSW50ZXJm
YWNlUmVxdWVzdG9yVXRpbHMuaCIKdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIERlc3RpbmF0aW9u
VHlwZT4KaW5saW5lCm5zcmVzdWx0CkNhbGxHZXRJbnRlcmZhY2UoIFQqIGFTb3VyY2UsIERlc3Rp
bmF0aW9uVHlwZSoqIGFEZXN0aW5hdGlvbiApCiAgewogICAgOwogICAgOwoKICAgIHJldHVybiBh
U291cmNlLT5HZXRJbnRlcmZhY2UobnNDT01UeXBlSW5mbzxEZXN0aW5hdGlvblR5cGU+OjpHZXRJ
SUQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDwg
dm9pZCoqID4oYURlc3RpbmF0aW9uKSk7CiAgfQoKY2xhc3MgbnNHZXRJbnRlcmZhY2UgOiBwdWJs
aWMgbnNDT01QdHJfaGVscGVyCiAgewogICAgcHVibGljOgogICAgICBuc0dldEludGVyZmFjZSgg
bnNJU3VwcG9ydHMqIGFTb3VyY2UsIG5zcmVzdWx0KiBlcnJvciApCiAgICAgICAgICA6IG1Tb3Vy
Y2UoYVNvdXJjZSksCiAgICAgICAgICAgIG1FcnJvclB0cihlcnJvcikKICAgICAgICB7CgogICAg
ICAgIH0KCiAgICAgIHZpcnR1YWwgbnNyZXN1bHQgb3BlcmF0b3IoKSggY29uc3QgbnNJSUQmLCB2
b2lkKiogKSBjb25zdDsKICAgICAgdmlydHVhbCB+bnNHZXRJbnRlcmZhY2UoKSB7fTsKCiAgICBw
cml2YXRlOgogICAgICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4gbVNvdXJjZTsKICAgICAgbnNyZXN1
bHQqIG1FcnJvclB0cjsKICB9OwoKaW5saW5lCmNvbnN0IG5zR2V0SW50ZXJmYWNlCmRvX0dldElu
dGVyZmFjZSggbnNJU3VwcG9ydHMqIGFTb3VyY2UsIG5zcmVzdWx0KiBlcnJvciA9IDAgKQogIHsK
ICAgIHJldHVybiBuc0dldEludGVyZmFjZShhU291cmNlLCBlcnJvcik7CiAgfQojIDgwICJuc0RP
TUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi9idWlsZC9uc1NjcmlwdE5hbWVTcGFjZU1hbmFnZXIu
aCIgMQojIDM5ICIuLi9idWlsZC9uc1NjcmlwdE5hbWVTcGFjZU1hbmFnZXIuaCIKIyAxICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSVNjcmlwdE5hbWVTcGFjZU1hbmFnZXIuaCIgMQojIDQw
ICIuLi9idWlsZC9uc1NjcmlwdE5hbWVTcGFjZU1hbmFnZXIuaCIgMgoKCiMgMSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL3hwY29tL3BsZGhhc2guaCIgMQojIDQ3ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUveHBjb20vcGxkaGFzaC5oIgpleHRlcm4gIkMiIHsKIyA3MiAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL3hwY29tL3BsZGhhc2guaCIKdHlwZWRlZiBQUlVpbnQzMiBQTERIYXNoTnVtYmVyOwp0eXBl
ZGVmIHN0cnVjdCBQTERIYXNoRW50cnlIZHIgUExESGFzaEVudHJ5SGRyOwp0eXBlZGVmIHN0cnVj
dCBQTERIYXNoRW50cnlTdHViIFBMREhhc2hFbnRyeVN0dWI7CnR5cGVkZWYgc3RydWN0IFBMREhh
c2hUYWJsZSBQTERIYXNoVGFibGU7CnR5cGVkZWYgc3RydWN0IFBMREhhc2hUYWJsZU9wcyBQTERI
YXNoVGFibGVPcHM7CiMgMTA2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vcGxkaGFzaC5o
IgpzdHJ1Y3QgUExESGFzaEVudHJ5SGRyIHsKICAgIFBMREhhc2hOdW1iZXIga2V5SGFzaDsKfTsK
IyAxODYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9wbGRoYXNoLmgiCnN0cnVjdCBQTERI
YXNoVGFibGUgewogICAgUExESGFzaFRhYmxlT3BzICpvcHM7CiAgICB2b2lkICpkYXRhOwogICAg
UFJJbnQxNiBoYXNoU2hpZnQ7CiAgICB1aW50OCBtYXhBbHBoYUZyYWM7CiAgICB1aW50OCBtaW5B
bHBoYUZyYWM7CiAgICBQUlVpbnQzMiBlbnRyeVNpemU7CiAgICBQUlVpbnQzMiBlbnRyeUNvdW50
OwogICAgUFJVaW50MzIgcmVtb3ZlZENvdW50OwogICAgUFJVaW50MzIgZ2VuZXJhdGlvbjsKICAg
IGNoYXIgKmVudHJ5U3RvcmU7CiMgMjE4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vcGxk
aGFzaC5oIgp9OwojIDIzMiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL3BsZGhhc2guaCIK
dHlwZWRlZiB2b2lkICoKKCogUExESGFzaEFsbG9jVGFibGUpKFBMREhhc2hUYWJsZSAqdGFibGUs
IFBSVWludDMyIG5ieXRlcyk7Cgp0eXBlZGVmIHZvaWQKKCogUExESGFzaEZyZWVUYWJsZSkgKFBM
REhhc2hUYWJsZSAqdGFibGUsIHZvaWQgKnB0cik7CgoKCgoKCgp0eXBlZGVmIGNvbnN0IHZvaWQg
KgooKiBQTERIYXNoR2V0S2V5KSAoUExESGFzaFRhYmxlICp0YWJsZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQTERIYXNoRW50cnlIZHIgKmVudHJ5KTsKCgoKCgp0eXBl
ZGVmIFBMREhhc2hOdW1iZXIKKCogUExESGFzaEhhc2hLZXkpIChQTERIYXNoVGFibGUgKnRhYmxl
LCBjb25zdCB2b2lkICprZXkpOwoKCgoKCnR5cGVkZWYgUFJCb29sCigqIFBMREhhc2hNYXRjaEVu
dHJ5KShQTERIYXNoVGFibGUgKnRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFBMREhhc2hFbnRyeUhkciAqZW50cnksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqa2V5KTsKCgoKCgoKCnR5cGVkZWYgdm9pZAoo
KiBQTERIYXNoTW92ZUVudHJ5KShQTERIYXNoVGFibGUgKnRhYmxlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgUExESGFzaEVudHJ5SGRyICpmcm9tLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUExESGFzaEVudHJ5SGRyICp0byk7CgoKCgoK
CnR5cGVkZWYgdm9pZAooKiBQTERIYXNoQ2xlYXJFbnRyeSkoUExESGFzaFRhYmxlICp0YWJsZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTERIYXNoRW50cnlIZHIgKmVu
dHJ5KTsKCgoKCgoKdHlwZWRlZiB2b2lkCigqIFBMREhhc2hGaW5hbGl6ZSkgKFBMREhhc2hUYWJs
ZSAqdGFibGUpOwojIDI5OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL3BsZGhhc2guaCIK
dHlwZWRlZiB2b2lkCigqIFBMREhhc2hJbml0RW50cnkpKFBMREhhc2hUYWJsZSAqdGFibGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTERIYXNoRW50cnlIZHIgKmVudHJ5
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqa2V5KTsK
IyAzMzAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9wbGRoYXNoLmgiCnN0cnVjdCBQTERI
YXNoVGFibGVPcHMgewoKICAgIFBMREhhc2hBbGxvY1RhYmxlIGFsbG9jVGFibGU7CiAgICBQTERI
YXNoRnJlZVRhYmxlIGZyZWVUYWJsZTsKICAgIFBMREhhc2hHZXRLZXkgZ2V0S2V5OwogICAgUExE
SGFzaEhhc2hLZXkgaGFzaEtleTsKICAgIFBMREhhc2hNYXRjaEVudHJ5IG1hdGNoRW50cnk7CiAg
ICBQTERIYXNoTW92ZUVudHJ5IG1vdmVFbnRyeTsKICAgIFBMREhhc2hDbGVhckVudHJ5IGNsZWFy
RW50cnk7CiAgICBQTERIYXNoRmluYWxpemUgZmluYWxpemU7CgoKICAgIFBMREhhc2hJbml0RW50
cnkgaW5pdEVudHJ5Owp9OwoKCgoKZXh0ZXJuIHZvaWQgKgpQTF9ESGFzaEFsbG9jVGFibGUoUExE
SGFzaFRhYmxlICp0YWJsZSwgUFJVaW50MzIgbmJ5dGVzKTsKCmV4dGVybiB2b2lkClBMX0RIYXNo
RnJlZVRhYmxlKFBMREhhc2hUYWJsZSAqdGFibGUsIHZvaWQgKnB0cik7CgpleHRlcm4gUExESGFz
aE51bWJlcgpQTF9ESGFzaFN0cmluZ0tleShQTERIYXNoVGFibGUgKnRhYmxlLCBjb25zdCB2b2lk
ICprZXkpOwoKCnN0cnVjdCBQTERIYXNoRW50cnlTdHViIHsKICAgIFBMREhhc2hFbnRyeUhkciBo
ZHI7CiAgICBjb25zdCB2b2lkICprZXk7Cn07CgpleHRlcm4gY29uc3Qgdm9pZCAqClBMX0RIYXNo
R2V0S2V5U3R1YihQTERIYXNoVGFibGUgKnRhYmxlLCBQTERIYXNoRW50cnlIZHIgKmVudHJ5KTsK
CmV4dGVybiBQTERIYXNoTnVtYmVyClBMX0RIYXNoVm9pZFB0cktleVN0dWIoUExESGFzaFRhYmxl
ICp0YWJsZSwgY29uc3Qgdm9pZCAqa2V5KTsKCmV4dGVybiBQUkJvb2wKUExfREhhc2hNYXRjaEVu
dHJ5U3R1YihQTERIYXNoVGFibGUgKnRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFBMREhhc2hFbnRyeUhkciAqZW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9p
ZCAqa2V5KTsKCmV4dGVybiB2b2lkClBMX0RIYXNoTW92ZUVudHJ5U3R1YihQTERIYXNoVGFibGUg
KnRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgUExESGFzaEVudHJ5SGRyICpmcm9t
LAogICAgICAgICAgICAgICAgICAgICAgUExESGFzaEVudHJ5SGRyICp0byk7CgpleHRlcm4gdm9p
ZApQTF9ESGFzaENsZWFyRW50cnlTdHViKFBMREhhc2hUYWJsZSAqdGFibGUsIFBMREhhc2hFbnRy
eUhkciAqZW50cnkpOwoKZXh0ZXJuIHZvaWQKUExfREhhc2hGaW5hbGl6ZVN0dWIoUExESGFzaFRh
YmxlICp0YWJsZSk7CgoKCgoKCmV4dGVybiBQTERIYXNoVGFibGVPcHMgKgpQTF9ESGFzaEdldFN0
dWJPcHModm9pZCk7CgoKCgoKCgpleHRlcm4gUExESGFzaFRhYmxlICoKUExfTmV3REhhc2hUYWJs
ZShQTERIYXNoVGFibGVPcHMgKm9wcywgdm9pZCAqZGF0YSwgUFJVaW50MzIgZW50cnlTaXplLAog
ICAgICAgICAgICAgICAgIFBSVWludDMyIGNhcGFjaXR5KTsKCgoKCgpleHRlcm4gdm9pZApQTF9E
SGFzaFRhYmxlRGVzdHJveShQTERIYXNoVGFibGUgKnRhYmxlKTsKCgoKCgoKCmV4dGVybiBQUkJv
b2wKUExfREhhc2hUYWJsZUluaXQoUExESGFzaFRhYmxlICp0YWJsZSwgUExESGFzaFRhYmxlT3Bz
ICpvcHMsIHZvaWQgKmRhdGEsCiAgICAgICAgICAgICAgICAgIFBSVWludDMyIGVudHJ5U2l6ZSwg
UFJVaW50MzIgY2FwYWNpdHkpOwojIDQyOCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL3Bs
ZGhhc2guaCIKdm9pZApQTF9ESGFzaFRhYmxlU2V0QWxwaGFCb3VuZHMoUExESGFzaFRhYmxlICp0
YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IG1heEFscGhhLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxvYXQgbWluQWxwaGEpOwojIDQ0OCAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL3hwY29tL3BsZGhhc2guaCIKZXh0ZXJuIHZvaWQKUExfREhhc2hUYWJsZUZpbmlz
aChQTERIYXNoVGFibGUgKnRhYmxlKTsKCgoKCgoKCnR5cGVkZWYgZW51bSBQTERIYXNoT3BlcmF0
b3IgewogICAgUExfREhBU0hfTE9PS1VQID0gMCwKICAgIFBMX0RIQVNIX0FERCA9IDEsCiAgICBQ
TF9ESEFTSF9SRU1PVkUgPSAyLAogICAgUExfREhBU0hfTkVYVCA9IDAsCiAgICBQTF9ESEFTSF9T
VE9QID0gMQp9IFBMREhhc2hPcGVyYXRvcjsKIyA0OTIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94
cGNvbS9wbGRoYXNoLmgiCmV4dGVybiBQTERIYXNoRW50cnlIZHIgKgpQTF9ESGFzaFRhYmxlT3Bl
cmF0ZShQTERIYXNoVGFibGUgKnRhYmxlLCBjb25zdCB2b2lkICprZXksIFBMREhhc2hPcGVyYXRv
ciBvcCk7CiMgNTA0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vcGxkaGFzaC5oIgpleHRl
cm4gdm9pZApQTF9ESGFzaFRhYmxlUmF3UmVtb3ZlKFBMREhhc2hUYWJsZSAqdGFibGUsIFBMREhh
c2hFbnRyeUhkciAqZW50cnkpOwojIDU0NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL3Bs
ZGhhc2guaCIKdHlwZWRlZiBQTERIYXNoT3BlcmF0b3IKKCogUExESGFzaEVudW1lcmF0b3IpKFBM
REhhc2hUYWJsZSAqdGFibGUsIFBMREhhc2hFbnRyeUhkciAqaGRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBSVWludDMyIG51bWJlciwgdm9pZCAqYXJnKTsKCmV4dGVy
biBQUlVpbnQzMgpQTF9ESGFzaFRhYmxlRW51bWVyYXRlKFBMREhhc2hUYWJsZSAqdGFibGUsIFBM
REhhc2hFbnVtZXJhdG9yIGV0b3IsIHZvaWQgKmFyZyk7CiMgNTYwICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUveHBjb20vcGxkaGFzaC5oIgp9CiMgNDMgIi4uL2J1aWxkL25zU2NyaXB0TmFtZVNwYWNl
TWFuYWdlci5oIiAyCgoKCnN0cnVjdCBuc0dsb2JhbE5hbWVTdHJ1Y3QKewogIHN0cnVjdCBDb25z
dHJ1Y3RvckFsaWFzCiAgewogICAgbnNDSUQgbUNJRDsKICAgIG5zU3RyaW5nIG1Qcm90b05hbWU7
CiAgICBuc0dsb2JhbE5hbWVTdHJ1Y3QqIG1Qcm90bzsKICB9OwoKICBlbnVtIG5hbWV0eXBlIHsK
ICAgIGVUeXBlTm90SW5pdGlhbGl6ZWQsCiAgICBlVHlwZUludGVyZmFjZSwKICAgIGVUeXBlUHJv
cGVydHksCiAgICBlVHlwZUV4dGVybmFsQ29uc3RydWN0b3IsCiAgICBlVHlwZVN0YXRpY05hbWVT
ZXQsCiAgICBlVHlwZUR5bmFtaWNOYW1lU2V0LAogICAgZVR5cGVDbGFzc0NvbnN0cnVjdG9yLAog
ICAgZVR5cGVDbGFzc1Byb3RvLAogICAgZVR5cGVFeHRlcm5hbENsYXNzSW5mb0NyZWF0b3IsCiAg
ICBlVHlwZUV4dGVybmFsQ2xhc3NJbmZvLAogICAgZVR5cGVFeHRlcm5hbENvbnN0cnVjdG9yQWxp
YXMKICB9IG1UeXBlOwoKICB1bmlvbiB7CiAgICBQUkludDMyIG1ET01DbGFzc0luZm9JRDsKICAg
IG5zSUlEIG1JSUQ7CiAgICBuc0V4dGVybmFsRE9NQ2xhc3NJbmZvRGF0YSogbURhdGE7CiAgICBD
b25zdHJ1Y3RvckFsaWFzKiBtQWxpYXM7CiAgICBuc0NJRCBtQ0lEOwogIH07Cgpwcml2YXRlOgoK
Cn07CgoKY2xhc3MgbnNJU2NyaXB0Q29udGV4dDsKY2xhc3MgbnNJQ2F0ZWdvcnlNYW5hZ2VyOwoK
CmNsYXNzIG5zU2NyaXB0TmFtZVNwYWNlTWFuYWdlcgp7CnB1YmxpYzoKICBuc1NjcmlwdE5hbWVT
cGFjZU1hbmFnZXIoKTsKICB2aXJ0dWFsIH5uc1NjcmlwdE5hbWVTcGFjZU1hbmFnZXIoKTsKCiAg
bnNyZXN1bHQgSW5pdCgpOwogIG5zcmVzdWx0IEluaXRGb3JDb250ZXh0KG5zSVNjcmlwdENvbnRl
eHQgKmFDb250ZXh0KTsKCgoKCgoKICBuc3Jlc3VsdCBMb29rdXBOYW1lKGNvbnN0IG5zQVN0cmlu
ZyYgYU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuc0dsb2JhbE5hbWVTdHJ1Y3Qg
KiphTmFtZVN0cnVjdCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBSVW5pY2hhciAqKmFD
bGFzc05hbWUgPSAwKTsKCiAgbnNyZXN1bHQgUmVnaXN0ZXJDbGFzc05hbWUoY29uc3QgY2hhciAq
YUNsYXNzTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkludDMyIGFET01DbGFz
c0luZm9JRCk7CgogIG5zcmVzdWx0IFJlZ2lzdGVyQ2xhc3NQcm90byhjb25zdCBjaGFyICphQ2xh
c3NOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuc0lJRCAqYUNvbnN0
cnVjdG9yUHJvdG9JSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCAqYUZv
dW5kT2xkKTsKCiAgbnNyZXN1bHQgUmVnaXN0ZXJFeHRlcm5hbEludGVyZmFjZXMoUFJCb29sIGFB
c1Byb3RvKTsKCiAgbnNyZXN1bHQgUmVnaXN0ZXJFeHRlcm5hbENsYXNzTmFtZShjb25zdCBjaGFy
ICphQ2xhc3NOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNDSUQm
IGFDSUQpOwoKCgogIG5zcmVzdWx0IFJlZ2lzdGVyRE9NQ0lEYXRhKGNvbnN0IGNoYXIgKmFOYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zRE9NQ2xhc3NJbmZvRXh0ZXJuYWxDb25z
dHJ1Y3RvckZuYyBhQ29uc3RydWN0b3JGcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IG5zSUlEICphUHJvdG9DaGFpbkludGVyZmFjZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBuc0lJRCAqKmFJbnRlcmZhY2VzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBSVWludDMyIGFTY3JpcHRhYmxlRmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUFJCb29sIGFIYXNDbGFzc0ludGVyZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBuc0NJRCAqYUNvbnN0cnVjdG9yQ0lEKTsKCiAgbnNHbG9iYWxOYW1lU3RydWN0
KiBHZXRDb25zdHJ1Y3RvclByb3RvKGNvbnN0IG5zR2xvYmFsTmFtZVN0cnVjdCogYVN0cnVjdCk7
Cgpwcm90ZWN0ZWQ6CgoKCgogIG5zR2xvYmFsTmFtZVN0cnVjdCAqQWRkVG9IYXNoKGNvbnN0IG5z
QVN0cmluZyYgYUtleSk7CgogIG5zcmVzdWx0IEZpbGxIYXNoKG5zSUNhdGVnb3J5TWFuYWdlciAq
YUNhdGVnb3J5TWFuYWdlciwKICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICphQ2F0ZWdv
cnksCiAgICAgICAgICAgICAgICAgICAgbnNHbG9iYWxOYW1lU3RydWN0OjpuYW1ldHlwZSBhVHlw
ZSk7CiAgbnNyZXN1bHQgRmlsbEhhc2hXaXRoRE9NSW50ZXJmYWNlcygpOwogIG5zcmVzdWx0IFJl
Z2lzdGVySW50ZXJmYWNlKGNvbnN0IGNoYXIqIGFJZk5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgbnNJSUQgKmFJZklJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUkJvb2wqIGFGb3VuZE9sZCk7CgoKCiAgUExESGFzaFRhYmxlIG1HbG9iYWxOYW1lczsKCiAg
UFJQYWNrZWRCb29sIG1Jc0luaXRpYWxpemVkOwp9OwojIDgxICJuc0RPTUNsYXNzSW5mby5jcHAi
IDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSVNjcmlwdE9iamVjdE93bmVyLmgi
IDEKIyA2MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lTY3JpcHRPYmplY3RPd25lci5o
IgpjbGFzcyBuc0lTY3JpcHRPYmplY3RPd25lciA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CnB1Ymxp
YzoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlk
ID0geyAweDhmNmJjYTdlLCAweGNlNDIsIDB4MTFkMSwgezB4YjcsIDB4MjQsIDB4MDAsIDB4NjAs
IDB4MDgsIDB4OTEsIDB4ZDgsIDB4Yzl9IH07IHJldHVybiBpaWQ7fQojIDc0ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvZG9tL25zSVNjcmlwdE9iamVjdE93bmVyLmgiCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRTY3JpcHRPYmplY3QobnNJU2NyaXB0Q29udGV4dCAqYUNvbnRleHQsIHZvaWQqKiBhU2Ny
aXB0T2JqZWN0KSA9IDA7CiMgODYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJU2NyaXB0
T2JqZWN0T3duZXIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNjcmlwdE9iamVjdCh2b2lkKiBh
U2NyaXB0T2JqZWN0KSA9IDA7Cn07CgpjbGFzcyBuc0lBdG9tOwojIDEwMiAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2RvbS9uc0lTY3JpcHRPYmplY3RPd25lci5oIgpjbGFzcyBuc0lTY3JpcHRFdmVu
dEhhbmRsZXJPd25lciA6IHB1YmxpYyBuc0lTdXBwb3J0cwp7CnB1YmxpYzoKICBzdGF0aWMgY29u
c3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0geyAweDJhZDU0YWUw
LCAweGE4MzksIDB4MTFkMywgezB4YmEsIDB4OTcsIDB4MDAsIDB4MTAsIDB4NGIsIDB4YTAsIDB4
MmQsIDB4M2R9IH07IHJldHVybiBpaWQ7fQojIDExNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2Rv
bS9uc0lTY3JpcHRPYmplY3RPd25lci5oIgogIHZpcnR1YWwgbnNyZXN1bHQgQ29tcGlsZUV2ZW50
SGFuZGxlcihuc0lTY3JpcHRDb250ZXh0KiBhQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCogYVRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnNJQXRvbSAqYU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IG5zQVN0cmluZyYgYUJvZHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQq
KiBhSGFuZGxlcikgPSAwOwojIDEzMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lTY3Jp
cHRPYmplY3RPd25lci5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29tcGlsZWRFdmVudEhhbmRs
ZXIobnNJQXRvbSAqYU5hbWUsIHZvaWQqKiBhSGFuZGxlcikgPSAwOwp9OwojIDgyICJuc0RPTUNs
YXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSUpTTmF0aXZl
SW5pdGlhbGl6ZXIuaCIgMQojIDU2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSUpTTmF0
aXZlSW5pdGlhbGl6ZXIuaCIKY2xhc3MgbnNJSlNOYXRpdmVJbml0aWFsaXplciA6IHB1YmxpYyBu
c0lTdXBwb3J0cyB7CnB1YmxpYzoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0
aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwZjQsIDB4MTViMywgMHgxMWQyLCB7MHg5Mywg
MHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMn19OyByZXR1cm4gaWlkO30K
CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgSW5pdGlhbGl6ZShKU0NvbnRleHQgKmN4LCBKU09iamVj
dCAqb2JqLAogICAgICAgICAgICAgICAgICAgICAgICBQUlVpbnQzMiBhcmdjLCBqc3ZhbCAqYXJn
dikgPSAwOwp9OwojIDgzICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKCgojIDEgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9kb20vbnNJRE9NUGx1Z2luQXJyYXkuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvZG9tL25zSURPTVBsdWdpbkFycmF5LmgiCmNsYXNzIG5zSURPTVBsdWdpbkFycmF5
IDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBH
ZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGY2MTM0NjgwLCAweGYyOGIsIDB4
MTFkMiwgeyAweDgzLCAweDYwLCAweGM5LCAweDA4LCAweDk5LCAweDA0LCAweDljLCAweDNjIH19
OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGVuZ3RoKFBSVWludDMyICph
TGVuZ3RoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEl0ZW0oUFJVaW50MzIgaW5kZXgsIG5z
SURPTVBsdWdpbiAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgTmFtZWRJdGVt
KGNvbnN0IG5zQVN0cmluZyAmIG5hbWUsIG5zSURPTVBsdWdpbiAqKl9yZXR2YWwpID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgUmVmcmVzaChQUkJvb2wgcmVsb2FkRG9jdW1lbnRzKSA9IDA7Cgp9
OwojIDEyOCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01QbHVnaW5BcnJheS5oIgpj
bGFzcyBuc0lET01KU1BsdWdpbkFycmF5IDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoK
CiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9
IHsweGVlNzUzMzUyLCAweDFkZDEsIDB4MTFiMiwgeyAweGIxLCAweDhkLCAweGIwLCAweGI3LCAw
eDMyLCAweDBhLCAweDI4LCAweGMzIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1
bHQgUmVmcmVzaCh2b2lkKSA9IDA7Cgp9OwojIDg2ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAx
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVBsdWdpbi5oIiAxCiMgMjUgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NUGx1Z2luLmgiCmNsYXNzIG5zSURPTVBsdWdpbiA6
IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0
SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhmNjEzNDY4MSwgMHhmMjhiLCAweDEx
ZDIsIHsgMHg4MywgMHg2MCwgMHhjOSwgMHgwOCwgMHg5OSwgMHgwNCwgMHg5YywgMHgzYyB9fTsg
cmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERlc2NyaXB0aW9uKG5zQVN0cmlu
ZyAmIGFEZXNjcmlwdGlvbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGaWxlbmFtZShu
c0FTdHJpbmcgJiBhRmlsZW5hbWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TmFtZShu
c0FTdHJpbmcgJiBhTmFtZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMZW5ndGgoUFJV
aW50MzIgKmFMZW5ndGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSXRlbShQUlVpbnQzMiBp
bmRleCwgbnNJRE9NTWltZVR5cGUgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IE5hbWVkSXRlbShjb25zdCBuc0FTdHJpbmcgJiBuYW1lLCBuc0lET01NaW1lVHlwZSAqKl9yZXR2
YWwpID0gMDsKCn07CiMgODcgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9kb20vbnNJRE9NTWltZVR5cGVBcnJheS5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9kb20vbnNJRE9NTWltZVR5cGVBcnJheS5oIgpjbGFzcyBuc0lET01NaW1lVHlw
ZUFycmF5IDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5z
SUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGY2MTM0NjgzLCAweGYy
OGIsIDB4MTFkMiwgeyAweDgzLCAweDYwLCAweGM5LCAweDA4LCAweDk5LCAweDA0LCAweDljLCAw
eDNjIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGVuZ3RoKFBSVWlu
dDMyICphTGVuZ3RoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEl0ZW0oUFJVaW50MzIgaW5k
ZXgsIG5zSURPTU1pbWVUeXBlICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBO
YW1lZEl0ZW0oY29uc3QgbnNBU3RyaW5nICYgbmFtZSwgbnNJRE9NTWltZVR5cGUgKipfcmV0dmFs
KSA9IDA7Cgp9OwojIDg4ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvZG9tL25zSURPTU1pbWVUeXBlLmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2RvbS9uc0lET01NaW1lVHlwZS5oIgpjbGFzcyBuc0lET01NaW1lVHlwZSA6IHB1YmxpYyBu
c0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0
YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhmNjEzNDY4MiwgMHhmMjhiLCAweDExZDIsIHsgMHg4
MywgMHg2MCwgMHhjOSwgMHgwOCwgMHg5OSwgMHgwNCwgMHg5YywgMHgzYyB9fTsgcmV0dXJuIGlp
ZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERlc2NyaXB0aW9uKG5zQVN0cmluZyAmIGFEZXNj
cmlwdGlvbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRFbmFibGVkUGx1Z2luKG5zSURP
TVBsdWdpbiAqICphRW5hYmxlZFBsdWdpbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRT
dWZmaXhlcyhuc0FTdHJpbmcgJiBhU3VmZml4ZXMpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0VHlwZShuc0FTdHJpbmcgJiBhVHlwZSkgPSAwOwoKfTsKIyA4OSAibnNET01DbGFzc0luZm8u
Y3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU0xvY2F0aW9uLmgi
IDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU0xvY2F0aW9uLmgiCmNs
YXNzIG5zSURPTU5TTG9jYXRpb24gOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBz
dGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4
YTZjZjkxMDgsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYs
IDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBS
ZWxvYWQodm9pZCkgPSAwOwoKfTsKIyA5MCAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01Mb2NhdGlvbi5oIiAxCiMgMjUgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NTG9jYXRpb24uaCIKY2xhc3MgbnNJRE9NTG9jYXRpb24g
OiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdl
dElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwNmQsIDB4MTViMywgMHgx
MWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07
IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRIYXNoKG5zQVN0cmluZyAmIGFI
YXNoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRIYXNoKGNvbnN0IG5zQVN0cmluZyAmIGFI
YXNoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEhvc3QobnNBU3RyaW5nICYgYUhvc3Qp
ID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEhvc3QoY29uc3QgbnNBU3RyaW5nICYgYUhvc3Qp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SG9zdG5hbWUobnNBU3RyaW5nICYgYUhvc3Ru
YW1lKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRIb3N0bmFtZShjb25zdCBuc0FTdHJpbmcg
JiBhSG9zdG5hbWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SHJlZihuc0FTdHJpbmcg
JiBhSHJlZikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0SHJlZihjb25zdCBuc0FTdHJpbmcg
JiBhSHJlZikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQYXRobmFtZShuc0FTdHJpbmcg
JiBhUGF0aG5hbWUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFBhdGhuYW1lKGNvbnN0IG5z
QVN0cmluZyAmIGFQYXRobmFtZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQb3J0KG5z
QVN0cmluZyAmIGFQb3J0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRQb3J0KGNvbnN0IG5z
QVN0cmluZyAmIGFQb3J0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByb3RvY29sKG5z
QVN0cmluZyAmIGFQcm90b2NvbCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UHJvdG9jb2wo
Y29uc3QgbnNBU3RyaW5nICYgYVByb3RvY29sKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dFNlYXJjaChuc0FTdHJpbmcgJiBhU2VhcmNoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRT
ZWFyY2goY29uc3QgbnNBU3RyaW5nICYgYVNlYXJjaCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBSZWxvYWQoUFJCb29sIGZvcmNlZ2V0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFJlcGxh
Y2UoY29uc3QgbnNBU3RyaW5nICYgdXJsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEFzc2ln
bihjb25zdCBuc0FTdHJpbmcgJiB1cmwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgVG9TdHJp
bmcobnNBU3RyaW5nICYgX3JldHZhbCkgPSAwOwoKfTsKIyA5MSAibnNET01DbGFzc0luZm8uY3Bw
IiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01XaW5kb3dJbnRlcm5hbC5o
IiAxCiMgMTAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NV2luZG93SW50ZXJuYWwu
aCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVdpbmRvdy5oIiAxCiMgMTcg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NV2luZG93LmgiCmNsYXNzIG5zSVNlbGVj
dGlvbjsKIyAyNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01XaW5kb3cuaCIKY2xh
c3MgbnNJRE9NV2luZG93IDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGlj
IGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5
MDZiLCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhh
LCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KIyA0NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L2RvbS9uc0lET01XaW5kb3cuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERvY3VtZW50KG5zSURP
TURvY3VtZW50ICogKmFEb2N1bWVudCkgPSAwOwoKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dFBhcmVudChuc0lET01XaW5kb3cgKiAqYVBhcmVudCkgPSAwOwojIDY1ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvZG9tL25zSURPTVdpbmRvdy5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VG9wKG5z
SURPTVdpbmRvdyAqICphVG9wKSA9IDA7CiMgNzQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20v
bnNJRE9NV2luZG93LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTY3JvbGxiYXJzKG5zSURPTUJh
clByb3AgKiAqYVNjcm9sbGJhcnMpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RnJh
bWVzKG5zSURPTVdpbmRvd0NvbGxlY3Rpb24gKiAqYUZyYW1lcykgPSAwOwoKCgoKCgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldE5hbWUobnNBU3RyaW5nICYgYU5hbWUpID0gMDsKICB2aXJ0dWFsIG5z
cmVzdWx0IFNldE5hbWUoY29uc3QgbnNBU3RyaW5nICYgYU5hbWUpID0gMDsKIyAxMDAgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NV2luZG93LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRUZXh0Wm9vbShmbG9hdCAqYVRleHRab29tKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRU
ZXh0Wm9vbShmbG9hdCBhVGV4dFpvb20pID0gMDsKIyAxMTAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9kb20vbnNJRE9NV2luZG93LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTY3JvbGxYKFBSSW50
MzIgKmFTY3JvbGxYKSA9IDA7CiMgMTE5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURP
TVdpbmRvdy5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2Nyb2xsWShQUkludDMyICphU2Nyb2xs
WSkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTY3JvbGxUbyhQUkludDMyIHhTY3JvbGws
IFBSSW50MzIgeVNjcm9sbCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2Nyb2xsQnko
UFJJbnQzMiB4U2Nyb2xsRGlmLCBQUkludDMyIHlTY3JvbGxEaWYpID0gMDsKCgoKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0U2VsZWN0aW9uKG5zSVNlbGVjdGlvbiAqKl9yZXR2YWwpID0gMDsKCgoK
CgogIHZpcnR1YWwgbnNyZXN1bHQgU2Nyb2xsQnlMaW5lcyhQUkludDMyIG51bUxpbmVzKSA9IDA7
CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNjcm9sbEJ5UGFnZXMoUFJJbnQzMiBudW1QYWdlcykg
PSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTaXplVG9Db250ZW50KHZvaWQpID0gMDsKCn07
CiMgMTEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NV2luZG93SW50ZXJuYWwuaCIg
MgoKCgoKCgpjbGFzcyBuc0lTaWRlYmFyOwoKY2xhc3MgbnNJUHJvbXB0OwoKY2xhc3MgbnNJQ29u
dHJvbGxlcnM7CgpjbGFzcyBuc0lET01Mb2NhdGlvbjsKIyAzMyAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2RvbS9uc0lET01XaW5kb3dJbnRlcm5hbC5oIgpjbGFzcyBuc0lET01XaW5kb3dJbnRlcm5h
bCA6IHB1YmxpYyBuc0lET01XaW5kb3cgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQm
IEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4OWM5MTE4NjAsIDB4N2RkOSwg
MHgxMWQ0LCB7IDB4OWEsIDB4ODMsIDB4MDAsIDB4MDAsIDB4NjQsIDB4NjUsIDB4NzMsIDB4NzQg
fX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRXaW5kb3cobnNJRE9NV2lu
ZG93SW50ZXJuYWwgKiAqYVdpbmRvdykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTZWxm
KG5zSURPTVdpbmRvd0ludGVybmFsICogKmFTZWxmKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldE5hdmlnYXRvcihuc0lET01OYXZpZ2F0b3IgKiAqYU5hdmlnYXRvcikgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRTY3JlZW4obnNJRE9NU2NyZWVuICogKmFTY3JlZW4pID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0SGlzdG9yeShuc0lET01IaXN0b3J5ICogKmFIaXN0b3J5KSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbnRlbnQobnNJRE9NV2luZG93ICogKmFDb250
ZW50KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNpZGViYXIobnNJU2lkZWJhciAqICph
U2lkZWJhcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQcm9tcHRlcihuc0lQcm9tcHQg
KiAqYVByb21wdGVyKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1lbnViYXIobnNJRE9N
QmFyUHJvcCAqICphTWVudWJhcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRUb29sYmFy
KG5zSURPTUJhclByb3AgKiAqYVRvb2xiYXIpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
TG9jYXRpb25iYXIobnNJRE9NQmFyUHJvcCAqICphTG9jYXRpb25iYXIpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0UGVyc29uYWxiYXIobnNJRE9NQmFyUHJvcCAqICphUGVyc29uYWxiYXIp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U3RhdHVzYmFyKG5zSURPTUJhclByb3AgKiAq
YVN0YXR1c2JhcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREaXJlY3Rvcmllcyhuc0lE
T01CYXJQcm9wICogKmFEaXJlY3RvcmllcykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRD
bG9zZWQoUFJCb29sICphQ2xvc2VkKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENyeXB0
byhuc0lET01DcnlwdG8gKiAqYUNyeXB0bykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQ
a2NzMTEobnNJRE9NUGtjczExICogKmFQa2NzMTEpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0Q29udHJvbGxlcnMobnNJQ29udHJvbGxlcnMgKiAqYUNvbnRyb2xsZXJzKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldE9wZW5lcihuc0lET01XaW5kb3dJbnRlcm5hbCAqICphT3BlbmVy
KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRPcGVuZXIobnNJRE9NV2luZG93SW50ZXJuYWwg
KiBhT3BlbmVyKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFN0YXR1cyhuc0FTdHJpbmcg
JiBhU3RhdHVzKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRTdGF0dXMoY29uc3QgbnNBU3Ry
aW5nICYgYVN0YXR1cykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREZWZhdWx0U3RhdHVz
KG5zQVN0cmluZyAmIGFEZWZhdWx0U3RhdHVzKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRE
ZWZhdWx0U3RhdHVzKGNvbnN0IG5zQVN0cmluZyAmIGFEZWZhdWx0U3RhdHVzKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldExvY2F0aW9uKG5zSURPTUxvY2F0aW9uICogKmFMb2NhdGlvbikg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRJbm5lcldpZHRoKFBSSW50MzIgKmFJbm5lcldp
ZHRoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRJbm5lcldpZHRoKFBSSW50MzIgYUlubmVy
V2lkdGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SW5uZXJIZWlnaHQoUFJJbnQzMiAq
YUlubmVySGVpZ2h0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRJbm5lckhlaWdodChQUklu
dDMyIGFJbm5lckhlaWdodCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRPdXRlcldpZHRo
KFBSSW50MzIgKmFPdXRlcldpZHRoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRPdXRlcldp
ZHRoKFBSSW50MzIgYU91dGVyV2lkdGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0T3V0
ZXJIZWlnaHQoUFJJbnQzMiAqYU91dGVySGVpZ2h0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBT
ZXRPdXRlckhlaWdodChQUkludDMyIGFPdXRlckhlaWdodCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRTY3JlZW5YKFBSSW50MzIgKmFTY3JlZW5YKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRTY3JlZW5YKFBSSW50MzIgYVNjcmVlblgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0U2NyZWVuWShQUkludDMyICphU2NyZWVuWSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0
U2NyZWVuWShQUkludDMyIGFTY3JlZW5ZKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBh
Z2VYT2Zmc2V0KFBSSW50MzIgKmFQYWdlWE9mZnNldCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRQYWdlWU9mZnNldChQUkludDMyICphUGFnZVlPZmZzZXQpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0TGVuZ3RoKFBSVWludDMyICphTGVuZ3RoKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldEZ1bGxTY3JlZW4oUFJCb29sICphRnVsbFNjcmVlbikgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0RnVsbFNjcmVlbihQUkJvb2wgYUZ1bGxTY3JlZW4pID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgQWxlcnQoY29uc3QgbnNBU3RyaW5nICYgdGV4dCkgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBDb25maXJtKGNvbnN0IG5zQVN0cmluZyAmIHRleHQsIFBSQm9vbCAqX3JldHZh
bCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBQcm9tcHQoY29uc3QgbnNBU3RyaW5nICYgYU1l
c3NhZ2UsIGNvbnN0IG5zQVN0cmluZyAmIGFJbml0aWFsLCBjb25zdCBuc0FTdHJpbmcgJiBhVGl0
bGUsIFBSVWludDMyIGFTYXZlUGFzc3dvcmQsIG5zQVN0cmluZyAmIF9yZXR2YWwpID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgRm9jdXModm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBC
bHVyKHZvaWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQmFjayh2b2lkKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEZvcndhcmQodm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBI
b21lKHZvaWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgU3RvcCh2b2lkKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IFByaW50KHZvaWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgTW92
ZVRvKFBSSW50MzIgeFBvcywgUFJJbnQzMiB5UG9zKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IE1vdmVCeShQUkludDMyIHhEaWYsIFBSSW50MzIgeURpZikgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBSZXNpemVUbyhQUkludDMyIHdpZHRoLCBQUkludDMyIGhlaWdodCkgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBSZXNpemVCeShQUkludDMyIHdpZHRoRGlmLCBQUkludDMyIGhlaWdodERp
ZikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTY3JvbGwoUFJJbnQzMiB4U2Nyb2xsLCBQUklu
dDMyIHlTY3JvbGwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgT3Blbihjb25zdCBuc0FTdHJp
bmcgJiB1cmwsIGNvbnN0IG5zQVN0cmluZyAmIG5hbWUsIGNvbnN0IG5zQVN0cmluZyAmIG9wdGlv
bnMsIG5zSURPTVdpbmRvdyAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgT3Bl
bkRpYWxvZyhjb25zdCBuc0FTdHJpbmcgJiB1cmwsIGNvbnN0IG5zQVN0cmluZyAmIG5hbWUsIGNv
bnN0IG5zQVN0cmluZyAmIG9wdGlvbnMsIG5zSVN1cHBvcnRzICphRXh0cmFBcmd1bWVudCwgbnNJ
RE9NV2luZG93ICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDbG9zZSh2b2lk
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFVwZGF0ZUNvbW1hbmRzKGNvbnN0IG5zQVN0cmlu
ZyAmIGFjdGlvbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBFc2NhcGUoY29uc3QgbnNBU3Ry
aW5nICYgc3RyLCBuc0FTdHJpbmcgJiBfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IFVuZXNjYXBlKGNvbnN0IG5zQVN0cmluZyAmIHN0ciwgbnNBU3RyaW5nICYgX3JldHZhbCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBGaW5kKGNvbnN0IG5zQVN0cmluZyAmIHN0ciwgUFJCb29s
IGNhc2VTZW5zaXRpdmUsIFBSQm9vbCBiYWNrd2FyZHMsIFBSQm9vbCB3cmFwQXJvdW5kLCBQUkJv
b2wgd2hvbGVXb3JkLCBQUkJvb2wgc2VhcmNoSW5GcmFtZXMsIFBSQm9vbCBzaG93RGlhbG9nLCBQ
UkJvb2wgKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQXRvYihjb25zdCBuc0FT
dHJpbmcgJiBhQXNjaWlTdHJpbmcsIG5zQVN0cmluZyAmIF9yZXR2YWwpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgQnRvYShjb25zdCBuc0FTdHJpbmcgJiBhQmFzZTY0RGF0YSwgbnNBU3RyaW5n
ICYgX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGcmFtZUVsZW1lbnQobnNJ
RE9NRWxlbWVudCAqICphRnJhbWVFbGVtZW50KSA9IDA7Cgp9OwojIDkyICJuc0RPTUNsYXNzSW5m
by5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUpTV2luZG93Lmgi
IDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01KU1dpbmRvdy5oIgpjbGFz
cyBuc0lET01KU1dpbmRvdyA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRp
YyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhjODE4
ODYyMCwgMHgxZGQxLCAweDExYjIsIHsgMHhiYywgMHg4OCwgMHhkZiwgMHg4NCwgMHg0MCwgMHg0
OSwgMHg4YSwgMHhkZCB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IER1bXAo
Y29uc3QgbnNBU3RyaW5nICYgc3RyKSA9IDA7CiMgNDAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9k
b20vbnNJRE9NSlNXaW5kb3cuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFRpbWVvdXQoUFJJbnQz
MiAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRJbnRlcnZhbChQUkludDMy
ICpfcmV0dmFsKSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ2xlYXJUaW1lb3V0KHZv
aWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ2xlYXJJbnRlcnZhbCh2b2lkKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldFJlc2l6YWJsZShQUkJvb2wgcmVzaXphYmxlKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IENhcHR1cmVFdmVudHMoUFJJbnQzMiBldmVudEZsYWdzKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFJlbGVhc2VFdmVudHMoUFJJbnQzMiBldmVudEZsYWdzKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFJvdXRlRXZlbnQobnNJRE9NRXZlbnQgKmV2dCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBFbmFibGVFeHRlcm5hbENhcHR1cmUodm9pZCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBEaXNhYmxlRXh0ZXJuYWxDYXB0dXJlKHZvaWQpID0gMDsKCgoK
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFByb21wdChuc0FTdHJpbmcgJiBfcmV0dmFsKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IE9wZW4obnNJRE9NV2luZG93ICoqX3JldHZhbCkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBPcGVuRGlhbG9nKG5zSURPTVdpbmRvdyAqKl9yZXR2YWwpID0gMDsK
IyA5NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01KU1dpbmRvdy5oIgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0RnJhbWVzKG5zSURPTVdpbmRvdyAqICphRnJhbWVzKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEZpbmQoUFJCb29sICpfcmV0dmFsKSA9IDA7Cgp9OwojIDkzICJuc0RP
TUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVdp
bmRvd0NvbGxlY3Rpb24uaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURP
TVdpbmRvd0NvbGxlY3Rpb24uaCIKY2xhc3MgbnNJRE9NV2luZG93Q29sbGVjdGlvbiA6IHB1Ymxp
YyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkg
e3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTA2ZiwgMHgxNWIzLCAweDExZDIsIHsg
MHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJu
IGlpZDt9CiMgNDAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NV2luZG93Q29sbGVj
dGlvbi5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGVuZ3RoKFBSVWludDMyICphTGVuZ3RoKSA9
IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEl0ZW0oUFJVaW50MzIgaW5kZXgsIG5zSURPTVdp
bmRvdyAqKl9yZXR2YWwpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgTmFtZWRJdGVtKGNv
bnN0IG5zQVN0cmluZyAmIG5hbWUsIG5zSURPTVdpbmRvdyAqKl9yZXR2YWwpID0gMDsKCn07CiMg
OTQgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20v
bnNJRE9NSGlzdG9yeS5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9N
SGlzdG9yeS5oIgpjbGFzcyBuc0lET01IaXN0b3J5IDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1
YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlE
IGlpZCA9IHsweDg5NmQxZDIwLCAweGI0YzQsIDB4MTFkMiwgeyAweGJkLCAweDkzLCAweDAwLCAw
eDgwLCAweDVmLCAweDhhLCAweGUzLCAweGY0IH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0TGVuZ3RoKFBSSW50MzIgKmFMZW5ndGgpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0Q3VycmVudChuc0FTdHJpbmcgJiBhQ3VycmVudCkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRQcmV2aW91cyhuc0FTdHJpbmcgJiBhUHJldmlvdXMpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0TmV4dChuc0FTdHJpbmcgJiBhTmV4dCkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBCYWNrKHZvaWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgRm9yd2FyZCh2b2lk
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdvSW5kZXgoUFJJbnQzMiBhRGVsdGEpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR29VcmkoY29uc3QgbnNBU3RyaW5nICYgYVVyaVN1YnN0cmlu
ZykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJdGVtKFBSVWludDMyIGluZGV4LCBuc0FTdHJp
bmcgJiBfcmV0dmFsKSA9IDA7Cgp9OwojIDk1ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTU5TSGlzdG9yeS5oIiAxCiMgMjUgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NTlNIaXN0b3J5LmgiCmNsYXNzIG5zSURPTU5TSGlz
dG9yeSA6IHB1YmxpYyBuc0lET01IaXN0b3J5IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5z
SUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDVmYjk2ZjQ2LCAweDFk
ZDIsIDB4MTFiMiwgeyAweGE1LCAweGRjLCAweDk5LCAweDhjLCAweGE4LCAweDYzLCAweDZlLCAw
eGE5IH19OyByZXR1cm4gaWlkO30KCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR28odm9pZCkgPSAw
OwoKfTsKIyA5NiAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2RvbS9uc0lET01NZWRpYUxpc3QuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
ZG9tL25zSURPTU1lZGlhTGlzdC5oIgpjbGFzcyBuc0lET01NZWRpYUxpc3QgOiBwdWJsaWMgbnNJ
U3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0
aWMgY29uc3QgbnNJSUQgaWlkID0gezB4OWIwYzJlZDcsIDB4MTExYywgMHg0ODI0LCB7IDB4YWQs
IDB4ZjksIDB4ZWYsIDB4MGQsIDB4YTYsIDB4ZGEsIDB4ZDMsIDB4NzEgfX07IHJldHVybiBpaWQ7
fQojIDQwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTU1lZGlhTGlzdC5oIgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0TWVkaWFUZXh0KG5zQVN0cmluZyAmIGFNZWRpYVRleHQpID0gMDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1lZGlhVGV4dChjb25zdCBuc0FTdHJpbmcgJiBhTWVkaWFU
ZXh0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldExlbmd0aChQUlVpbnQzMiAqYUxlbmd0
aCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJdGVtKFBSVWludDMyIGluZGV4LCBuc0FTdHJp
bmcgJiBfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IERlbGV0ZU1lZGl1bShjb25z
dCBuc0FTdHJpbmcgJiBvbGRNZWRpdW0pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQXBwZW5k
TWVkaXVtKGNvbnN0IG5zQVN0cmluZyAmIG5ld01lZGl1bSkgPSAwOwoKfTsKIyA5NyAibnNET01D
bGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01DaHJv
bWVXaW5kb3cuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNocm9t
ZVdpbmRvdy5oIgpjbGFzcyBuc0lET01DaHJvbWVXaW5kb3cgOiBwdWJsaWMgbnNJU3VwcG9ydHMg
ewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3Qg
bnNJSUQgaWlkID0gezB4ODc2ZDZmOTYsIDB4MjQyMCwgMHg0Zjc4LCB7IDB4YmMsIDB4MTcsIDB4
MDAsIDB4YjEsIDB4YTIsIDB4ZWMsIDB4MTIsIDB4YmEgfX07IHJldHVybiBpaWQ7fQoKICBlbnVt
IHsgU1RBVEVfTUFYSU1JWkVEID0gMVUgfTsKCiAgZW51bSB7IFNUQVRFX01JTklNSVpFRCA9IDJV
IH07CgogIGVudW0geyBTVEFURV9OT1JNQUwgPSAzVSB9OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRUaXRsZShuc0FTdHJpbmcgJiBhVGl0bGUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFRp
dGxlKGNvbnN0IG5zQVN0cmluZyAmIGFUaXRsZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRXaW5kb3dTdGF0ZShQUlVpbnQxNiAqYVdpbmRvd1N0YXRlKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldEF0dGVudGlvbih2b2lkKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEN1
cnNvcihjb25zdCBuc0FTdHJpbmcgJiBjdXJzb3IpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
TWF4aW1pemUodm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBNaW5pbWl6ZSh2b2lkKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFJlc3RvcmUodm9pZCkgPSAwOwoKfTsKIyA5OCAibnNE
T01DbGFzc0luZm8uY3BwIiAyCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zRE9N
RXJyb3IuaCIgMQojIDEwMSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2RvbS9uc0lET01ET01FeGNlcHRpb24uaCIgMQojIDM4ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvZG9tL25zSURPTURPTUV4Y2VwdGlvbi5oIgpjbGFzcyBuc0lET01ET01FeGNlcHRp
b24gOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQm
IEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkxMGEsIDB4MTViMywg
MHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIg
fX07IHJldHVybiBpaWQ7fQoKICBlbnVtIHsgSU5ERVhfU0laRV9FUlIgPSAxVSB9OwoKICBlbnVt
IHsgRE9NU1RSSU5HX1NJWkVfRVJSID0gMlUgfTsKCiAgZW51bSB7IEhJRVJBUkNIWV9SRVFVRVNU
X0VSUiA9IDNVIH07CgogIGVudW0geyBXUk9OR19ET0NVTUVOVF9FUlIgPSA0VSB9OwoKICBlbnVt
IHsgSU5WQUxJRF9DSEFSQUNURVJfRVJSID0gNVUgfTsKCiAgZW51bSB7IE5PX0RBVEFfQUxMT1dF
RF9FUlIgPSA2VSB9OwoKICBlbnVtIHsgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSID0gN1Ug
fTsKCiAgZW51bSB7IE5PVF9GT1VORF9FUlIgPSA4VSB9OwoKICBlbnVtIHsgTk9UX1NVUFBPUlRF
RF9FUlIgPSA5VSB9OwoKICBlbnVtIHsgSU5VU0VfQVRUUklCVVRFX0VSUiA9IDEwVSB9OwoKICBl
bnVtIHsgSU5WQUxJRF9TVEFURV9FUlIgPSAxMVUgfTsKCiAgZW51bSB7IFNZTlRBWF9FUlIgPSAx
MlUgfTsKCiAgZW51bSB7IElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUiA9IDEzVSB9OwoKICBlbnVt
IHsgTkFNRVNQQUNFX0VSUiA9IDE0VSB9OwoKICBlbnVtIHsgSU5WQUxJRF9BQ0NFU1NfRVJSID0g
MTVVIH07CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvZGUoUFJVaW50MzIgKmFDb2RlKSA9IDA7
Cgp9OwojIDEwMiAibnNET01DbGFzc0luZm8uY3BwIiAyCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9kb20vbnNJRE9NTm9kZUxpc3QuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
ZG9tL25zSURPTU5vZGVMaXN0LmgiCmNsYXNzIG5zSURPTU5vZGVMaXN0IDogcHVibGljIG5zSVN1
cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGlj
IGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MDdkLCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAw
eDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30K
IyA0MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01Ob2RlTGlzdC5oIgogIHZpcnR1
YWwgbnNyZXN1bHQgSXRlbShQUlVpbnQzMiBpbmRleCwgbnNJRE9NTm9kZSAqKl9yZXR2YWwpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGVuZ3RoKFBSVWludDMyICphTGVuZ3RoKSA9IDA7
Cgp9OwojIDEwNCAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2RvbS9uc0lET01OYW1lZE5vZGVNYXAuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvZG9tL25zSURPTU5hbWVkTm9kZU1hcC5oIgpjbGFzcyBuc0lET01OYW1lZE5vZGVNYXAgOiBw
dWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJ
RCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwN2IsIDB4MTViMywgMHgxMWQy
LCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJl
dHVybiBpaWQ7fQojIDQwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTU5hbWVkTm9k
ZU1hcC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TmFtZWRJdGVtKGNvbnN0IG5zQVN0cmluZyAm
IG5hbWUsIG5zSURPTU5vZGUgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dE5hbWVkSXRlbShuc0lET01Ob2RlICphcmcsIG5zSURPTU5vZGUgKipfcmV0dmFsKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IFJlbW92ZU5hbWVkSXRlbShjb25zdCBuc0FTdHJpbmcgJiBuYW1l
LCBuc0lET01Ob2RlICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJdGVtKFBS
VWludDMyIGluZGV4LCBuc0lET01Ob2RlICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRMZW5ndGgoUFJVaW50MzIgKmFMZW5ndGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0TmFtZWRJdGVtTlMoY29uc3QgbnNBU3RyaW5nICYgbmFtZXNwYWNlVVJJLCBjb25zdCBu
c0FTdHJpbmcgJiBsb2NhbE5hbWUsIG5zSURPTU5vZGUgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldE5hbWVkSXRlbU5TKG5zSURPTU5vZGUgKmFyZywgbnNJRE9NTm9kZSAq
Kl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVtb3ZlTmFtZWRJdGVtTlMoY29u
c3QgbnNBU3RyaW5nICYgbmFtZXNwYWNlVVJJLCBjb25zdCBuc0FTdHJpbmcgJiBsb2NhbE5hbWUs
IG5zSURPTU5vZGUgKipfcmV0dmFsKSA9IDA7Cgp9OwojIDEwNSAibnNET01DbGFzc0luZm8uY3Bw
IiAyCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lGb3JtLmgiIDEKIyA0
NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJRm9ybS5oIgpjbGFzcyBuc0lGb3Jt
Q29udHJvbDsKY2xhc3MgbnNJU2l6ZU9mSGFuZGxlcjsKY2xhc3MgbnNJRE9NSFRNTElucHV0RWxl
bWVudDsKY2xhc3MgbnNJUmFkaW9WaXNpdG9yOwpjbGFzcyBuc0lTaW1wbGVFbnVtZXJhdG9yOwoj
IDcwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lGb3JtLmgiCmNsYXNzIG5zSUZv
cm0gOiBwdWJsaWMgbnNJU3VwcG9ydHMKewpwdWJsaWM6CiAgc3RhdGljIGNvbnN0IG5zSUlEJiBH
ZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsgMHhiN2U5NDUxMCwgMHg0YzE5LCAw
eDExZDIsIHsgMHg4MCwgMHgzZiwgMHgwLCAweDYwLCAweDgsIDB4MTUsIDB4YTcsIDB4OTEgfSB9
OyByZXR1cm4gaWlkO30KCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBBZGRFbGVtZW50KG5zSUZv
cm1Db250cm9sKiBhRWxlbWVudCkgPSAwOwojIDkxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29u
dGVudC9uc0lGb3JtLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBBZGRFbGVtZW50VG9UYWJsZShuc0lG
b3JtQ29udHJvbCogYUVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBuc0FTdHJpbmcmIGFOYW1lKSA9IDA7CiMgMTAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29u
dGVudC9uc0lGb3JtLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRFbGVtZW50QXQoUFJJbnQzMiBh
SW5kZXgsIG5zSUZvcm1Db250cm9sKiogYUVsZW1lbnQpIGNvbnN0ID0gMDsKCgoKCgoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRFbGVtZW50Q291bnQoUFJVaW50MzIqIGFDb3VudCkgY29uc3QgPSAw
OwoKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFJlbW92ZUVsZW1lbnQobnNJRm9ybUNvbnRyb2wq
IGFFbGVtZW50KSA9IDA7CiMgMTMwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lG
b3JtLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBSZW1vdmVFbGVtZW50RnJvbVRhYmxlKG5zSUZvcm1D
b250cm9sKiBhRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgbnNBU3RyaW5nJiBhTmFtZSkgPSAwOwojIDE0MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2Nv
bnRlbnQvbnNJRm9ybS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgUmVzb2x2ZU5hbWUoY29uc3QgbnNB
U3RyaW5nJiBhTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzICoqYVJl
c3VsdCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgSW5kZXhPZkNvbnRyb2wobnNJRm9y
bUNvbnRyb2wqIGFDb250cm9sLCBQUkludDMyKiBhSW5kZXgpID0gMDsKCgoKCgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldENvbnRyb2xFbnVtZXJhdG9yKG5zSVNpbXBsZUVudW1lcmF0b3IqKiBhRW51
bSkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgT25TdWJtaXRDbGlja0JlZ2luKCkgPSAw
OwogIHZpcnR1YWwgbnNyZXN1bHQgT25TdWJtaXRDbGlja0VuZCgpID0gMDsKCgoKCgoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBGbHVzaFBlbmRpbmdTdWJtaXNzaW9uKCkgPSAwOwoKCgoKCgogIHZpcnR1
YWwgbnNyZXN1bHQgRm9yZ2V0UGVuZGluZ1N1Ym1pc3Npb24oKSA9IDA7Cn07CiMgMTA4ICJuc0RP
TUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lG
b3JtQ29udHJvbC5oIiAxCiMgNDIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSUZv
cm1Db250cm9sLmgiCmNsYXNzIG5zSURPTUhUTUxGb3JtRWxlbWVudDsKY2xhc3MgbnNJUHJlc0Nv
bnRleHQ7CmNsYXNzIG5zSVByZXNTdGF0ZTsKY2xhc3MgbnNJQ29udGVudDsKY2xhc3MgbnNTdHJp
bmc7CmNsYXNzIG5zSUZvcm1Qcm9jZXNzb3I7CmNsYXNzIG5zSUZvcm1TdWJtaXNzaW9uOwojIDgz
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lGb3JtQ29udHJvbC5oIgpjbGFzcyBu
c0lGb3JtQ29udHJvbCA6IHB1YmxpYyBuc0lTdXBwb3J0cwp7CnB1YmxpYzoKCiAgc3RhdGljIGNv
bnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsgMHgyODJmZjQ0
MCwgMHhjZDdlLCAweDExZDEsIHsweDg5LCAweGFkLCAweDAwLCAweDYwLCAweDA4LCAweDkxLCAw
eDFiLCAweDgxfSB9OyByZXR1cm4gaWlkO30KCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Rm9y
bShuc0lET01IVE1MRm9ybUVsZW1lbnQqKiBhRm9ybSkgPSAwOwoKCgoKCgoKICB2aXJ0dWFsIG5z
cmVzdWx0IFNldEZvcm0obnNJRE9NSFRNTEZvcm1FbGVtZW50KiBhRm9ybSwKICAgICAgICAgICAg
ICAgICAgICAgUFJCb29sIGFSZW1vdmVGcm9tRm9ybSA9IDEpID0gMDsKCgoKCgogIHZpcnR1YWwg
UFJJbnQzMiBHZXRUeXBlKCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZXNldCgpID0g
MDsKIyAxMjQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSUZvcm1Db250cm9sLmgi
CiAgdmlydHVhbCBuc3Jlc3VsdCBTdWJtaXROYW1lc1ZhbHVlcyhuc0lGb3JtU3VibWlzc2lvbiog
YUZvcm1TdWJtaXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQ29udGVu
dCogYVN1Ym1pdEVsZW1lbnQpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNhdmVTdGF0
ZSgpID0gMDsKIyAxNDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSUZvcm1Db250
cm9sLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBSZXN0b3JlU3RhdGUobnNJUHJlc1N0YXRlKiBhU3Rh
dGUpID0gMDsKfTsKIyAxMDkgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTEZvcm1FbGVtZW50LmgiIDEKIyAxMCAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MRm9ybUVsZW1lbnQuaCIKIyAxICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxFbGVtZW50LmgiIDEKIyAxMCAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2RvbS9uc0lET01IVE1MRWxlbWVudC5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9kb20vbnNJRE9NRWxlbWVudC5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9k
b20vbnNJRE9NRWxlbWVudC5oIgpjbGFzcyBuc0lET01FbGVtZW50IDogcHVibGljIG5zSURPTU5v
ZGUgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29u
c3QgbnNJSUQgaWlkID0gezB4YTZjZjkwNzgsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUs
IDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQojIDQw
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUVsZW1lbnQuaCIKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldFRhZ05hbWUobnNBU3RyaW5nICYgYVRhZ05hbWUpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0QXR0cmlidXRlKGNvbnN0IG5zQVN0cmluZyAmIG5hbWUsIG5zQVN0cmluZyAm
IF9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QXR0cmlidXRlKGNvbnN0IG5z
QVN0cmluZyAmIG5hbWUsIGNvbnN0IG5zQVN0cmluZyAmIHZhbHVlKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IFJlbW92ZUF0dHJpYnV0ZShjb25zdCBuc0FTdHJpbmcgJiBuYW1lKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldEF0dHJpYnV0ZU5vZGUoY29uc3QgbnNBU3RyaW5nICYgbmFt
ZSwgbnNJRE9NQXR0ciAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QXR0
cmlidXRlTm9kZShuc0lET01BdHRyICpuZXdBdHRyLCBuc0lET01BdHRyICoqX3JldHZhbCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZW1vdmVBdHRyaWJ1dGVOb2RlKG5zSURPTUF0dHIgKm9s
ZEF0dHIsIG5zSURPTUF0dHIgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dEVsZW1lbnRzQnlUYWdOYW1lKGNvbnN0IG5zQVN0cmluZyAmIG5hbWUsIG5zSURPTU5vZGVMaXN0
ICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBdHRyaWJ1dGVOUyhjb25z
dCBuc0FTdHJpbmcgJiBuYW1lc3BhY2VVUkksIGNvbnN0IG5zQVN0cmluZyAmIGxvY2FsTmFtZSwg
bnNBU3RyaW5nICYgX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRBdHRyaWJ1
dGVOUyhjb25zdCBuc0FTdHJpbmcgJiBuYW1lc3BhY2VVUkksIGNvbnN0IG5zQVN0cmluZyAmIHF1
YWxpZmllZE5hbWUsIGNvbnN0IG5zQVN0cmluZyAmIHZhbHVlKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IFJlbW92ZUF0dHJpYnV0ZU5TKGNvbnN0IG5zQVN0cmluZyAmIG5hbWVzcGFjZVVSSSwg
Y29uc3QgbnNBU3RyaW5nICYgbG9jYWxOYW1lKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dEF0dHJpYnV0ZU5vZGVOUyhjb25zdCBuc0FTdHJpbmcgJiBuYW1lc3BhY2VVUkksIGNvbnN0IG5z
QVN0cmluZyAmIGxvY2FsTmFtZSwgbnNJRE9NQXR0ciAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0QXR0cmlidXRlTm9kZU5TKG5zSURPTUF0dHIgKm5ld0F0dHIsIG5zSURP
TUF0dHIgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEVsZW1lbnRzQnlU
YWdOYW1lTlMoY29uc3QgbnNBU3RyaW5nICYgbmFtZXNwYWNlVVJJLCBjb25zdCBuc0FTdHJpbmcg
JiBsb2NhbE5hbWUsIG5zSURPTU5vZGVMaXN0ICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBIYXNBdHRyaWJ1dGUoY29uc3QgbnNBU3RyaW5nICYgbmFtZSwgUFJCb29sICpfcmV0
dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEhhc0F0dHJpYnV0ZU5TKGNvbnN0IG5zQVN0
cmluZyAmIG5hbWVzcGFjZVVSSSwgY29uc3QgbnNBU3RyaW5nICYgbG9jYWxOYW1lLCBQUkJvb2wg
Kl9yZXR2YWwpID0gMDsKCn07CiMgMTEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9N
SFRNTEVsZW1lbnQuaCIgMgojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhU
TUxFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxFbGVtZW50IDogcHVibGljIG5zSURPTUVsZW1l
bnQgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29u
c3QgbnNJSUQgaWlkID0gezB4YTZjZjkwODUsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUs
IDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQojIDQx
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxFbGVtZW50LmgiCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRJZChuc0FTdHJpbmcgJiBhSWQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0
IFNldElkKGNvbnN0IG5zQVN0cmluZyAmIGFJZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRUaXRsZShuc0FTdHJpbmcgJiBhVGl0bGUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFRp
dGxlKGNvbnN0IG5zQVN0cmluZyAmIGFUaXRsZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRMYW5nKG5zQVN0cmluZyAmIGFMYW5nKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRMYW5n
KGNvbnN0IG5zQVN0cmluZyAmIGFMYW5nKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERp
cihuc0FTdHJpbmcgJiBhRGlyKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXREaXIoY29uc3Qg
bnNBU3RyaW5nICYgYURpcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDbGFzc05hbWUo
bnNBU3RyaW5nICYgYUNsYXNzTmFtZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q2xhc3NO
YW1lKGNvbnN0IG5zQVN0cmluZyAmIGFDbGFzc05hbWUpID0gMDsKCn07CiMgMTEgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTEZvcm1FbGVtZW50LmgiIDIKIyAyNSAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MRm9ybUVsZW1lbnQuaCIKY2xhc3MgbnNJRE9N
SFRNTEZvcm1FbGVtZW50IDogcHVibGljIG5zSURPTUhUTUxFbGVtZW50IHsKIHB1YmxpYzoKCiAg
c3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsw
eGE2Y2Y5MDhmLCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVm
LCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KIyA0MCAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2RvbS9uc0lET01IVE1MRm9ybUVsZW1lbnQuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dEVsZW1lbnRzKG5zSURPTUhUTUxDb2xsZWN0aW9uICogKmFFbGVtZW50cykgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRMZW5ndGgoUFJJbnQzMiAqYUxlbmd0aCkgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXROYW1lKG5zQVN0cmluZyAmIGFOYW1lKSA9IDA7CiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXROYW1lKGNvbnN0IG5zQVN0cmluZyAmIGFOYW1lKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldEFjY2VwdENoYXJzZXQobnNBU3RyaW5nICYgYUFjY2VwdENoYXJzZXQpID0gMDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFjY2VwdENoYXJzZXQoY29uc3QgbnNBU3RyaW5nICYgYUFj
Y2VwdENoYXJzZXQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QWN0aW9uKG5zQVN0cmlu
ZyAmIGFBY3Rpb24pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFjdGlvbihjb25zdCBuc0FT
dHJpbmcgJiBhQWN0aW9uKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEVuY3R5cGUobnNB
U3RyaW5nICYgYUVuY3R5cGUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEVuY3R5cGUoY29u
c3QgbnNBU3RyaW5nICYgYUVuY3R5cGUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TWV0
aG9kKG5zQVN0cmluZyAmIGFNZXRob2QpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1ldGhv
ZChjb25zdCBuc0FTdHJpbmcgJiBhTWV0aG9kKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dFRhcmdldChuc0FTdHJpbmcgJiBhVGFyZ2V0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRU
YXJnZXQoY29uc3QgbnNBU3RyaW5nICYgYVRhcmdldCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBTdWJtaXQodm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZXNldCh2b2lkKSA9IDA7
Cgp9OwojIDExMCAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2RvbS9uc0lET01OU0hUTUxGb3JtQ29udHJvbExpc3QuaCIgMQojIDI1ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvZG9tL25zSURPTU5TSFRNTEZvcm1Db250cm9sTGlzdC5oIgpjbGFzcyBuc0lE
T01OU0hUTUxGb3JtQ29udHJvbExpc3QgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoK
ICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0g
ezB4YTZjZjkxMWEsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4
NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBOYW1lZEl0ZW0oY29uc3QgbnNBU3RyaW5nICYgbmFtZSwgbnNJU3VwcG9ydHMgKipfcmV0dmFs
KSA9IDA7Cgp9OwojIDExMSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2RvbS9uc0lET01IVE1MQ29sbGVjdGlvbi5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTENvbGxlY3Rpb24uaCIKY2xhc3MgbnNJRE9NSFRNTENv
bGxlY3Rpb24gOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3Qg
bnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwODMsIDB4
MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQs
IDB4MzIgfX07IHJldHVybiBpaWQ7fQojIDQwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25z
SURPTUhUTUxDb2xsZWN0aW9uLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMZW5ndGgoUFJVaW50
MzIgKmFMZW5ndGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSXRlbShQUlVpbnQzMiBpbmRl
eCwgbnNJRE9NTm9kZSAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgTmFtZWRJ
dGVtKGNvbnN0IG5zQVN0cmluZyAmIG5hbWUsIG5zSURPTU5vZGUgKipfcmV0dmFsKSA9IDA7Cgp9
OwojIDExMiAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L2NvbnRlbnQvbnNJSFRNTERvY3VtZW50LmgiIDEKIyA0MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L2NvbnRlbnQvbnNJSFRNTERvY3VtZW50LmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xh
eW91dC9uc0NvbXBhdGliaWxpdHkuaCIgMQojIDQwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5
b3V0L25zQ29tcGF0aWJpbGl0eS5oIgplbnVtIG5zQ29tcGF0aWJpbGl0eSB7CiAgZUNvbXBhdGli
aWxpdHlfRnVsbFN0YW5kYXJkcyA9IDEsCiAgZUNvbXBhdGliaWxpdHlfQWxtb3N0U3RhbmRhcmRz
ID0gMiwKICBlQ29tcGF0aWJpbGl0eV9OYXZRdWlya3MgPSAzCn07CiMgNDMgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9jb250ZW50L25zSUhUTUxEb2N1bWVudC5oIiAyCgpjbGFzcyBuc0lJbWFnZU1h
cDsKY2xhc3MgbnNTdHJpbmc7CmNsYXNzIG5zSURPTU5vZGVMaXN0OwpjbGFzcyBuc0lET01IVE1M
Q29sbGVjdGlvbjsKY2xhc3MgbnNJRE9NSFRNTEZvcm1FbGVtZW50OwpjbGFzcyBuc0lET01IVE1M
TWFwRWxlbWVudDsKY2xhc3MgbnNJSFRNTFN0eWxlU2hlZXQ7CmNsYXNzIG5zSVN0eWxlU2hlZXQ7
CmNsYXNzIG5zSUNTU0xvYWRlcjsKY2xhc3MgbnNJQ29udGVudDsKY2xhc3MgbnNJRE9NSFRNTEJv
ZHlFbGVtZW50OwojIDY0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lIVE1MRG9j
dW1lbnQuaCIKY2xhc3MgbnNJSFRNTERvY3VtZW50IDogcHVibGljIG5zSVN1cHBvcnRzIHsKcHVi
bGljOgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBp
aWQgPSB7MHhiMmE4NDhiMCwgMHhkMGE5LCAweDExZDEsIHsweDg5LCAweGIxLCAweDAwLCAweDYw
LCAweDA4LCAweDkxLCAweDFiLCAweDgxfX07IHJldHVybiBpaWQ7fQoKICB2aXJ0dWFsIG5zcmVz
dWx0IEFkZEltYWdlTWFwKG5zSURPTUhUTUxNYXBFbGVtZW50KiBhTWFwKSA9IDA7CgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0SW1hZ2VNYXAoY29uc3QgbnNBU3RyaW5nJiBhTWFwTmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgIG5zSURPTUhUTUxNYXBFbGVtZW50KiogYVJlc3VsdCkgPSAwOwoK
ICB2aXJ0dWFsIG5zcmVzdWx0IFJlbW92ZUltYWdlTWFwKG5zSURPTUhUTUxNYXBFbGVtZW50KiBh
TWFwKSA9IDA7CgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TGFzdE1vZGlmaWVkKGNvbnN0IG5zQVN0
cmluZyYgYUxhc3RNb2RpZmllZCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UmVmZXJyZXIo
Y29uc3QgbnNBU3RyaW5nJiBhUmVmZXJyZXIpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRDb21wYXRpYmlsaXR5TW9kZShuc0NvbXBhdGliaWxpdHkmIGFNb2RlKSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRDb21wYXRpYmlsaXR5TW9kZShuc0NvbXBhdGliaWxpdHkgYU1vZGUpID0g
MDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBXYXNEb21haW5TZXQoUFJCb29sKiBhRG9tYWluV2Fz
U2V0KSA9IDA7CgogIHZpcnR1YWwgbnNyZXN1bHQgUmVzb2x2ZU5hbWUoY29uc3QgbnNBU3RyaW5n
JiBhTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIG5zSURPTUhUTUxGb3JtRWxlbWVudCAq
YUZvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdXBwb3J0cyAqKmFSZXN1bHQpID0g
MDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGb3JtQ29udHJvbEVsZW1lbnRzKG5zSURPTU5vZGVM
aXN0KiogYVJldHVybikgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEFkZGVkRm9ybSgpID0g
MDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZW1vdmVkRm9ybSgpID0gMDsKCgoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXROdW1Gb3Jtc1N5bmNocm9ub3VzKFBSSW50MzIqIGFOdW1Gb3JtcykgPSAw
OwoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEJvZHlFbGVtZW50KG5zSURPTUhUTUxCb2R5RWxlbWVu
dCoqIGFCb2R5KSA9IDA7CgogIHZpcnR1YWwgUFJCb29sIElzV3JpdGluZygpID0gMDsKCn07CiMg
MTEzICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9k
b20vbnNJRE9NSFRNTFNlbGVjdEVsZW1lbnQuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvZG9tL25zSURPTUhUTUxTZWxlY3RFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxTZWxlY3RF
bGVtZW50IDogcHVibGljIG5zSURPTUhUTUxFbGVtZW50IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNv
bnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MDkw
LCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAw
eGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VHlwZShu
c0FTdHJpbmcgJiBhVHlwZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTZWxlY3RlZElu
ZGV4KFBSSW50MzIgKmFTZWxlY3RlZEluZGV4KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRT
ZWxlY3RlZEluZGV4KFBSSW50MzIgYVNlbGVjdGVkSW5kZXgpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0VmFsdWUobnNBU3RyaW5nICYgYVZhbHVlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRWYWx1ZShjb25zdCBuc0FTdHJpbmcgJiBhVmFsdWUpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0TGVuZ3RoKFBSVWludDMyICphTGVuZ3RoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRMZW5ndGgoUFJVaW50MzIgYUxlbmd0aCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRGb3JtKG5zSURPTUhUTUxGb3JtRWxlbWVudCAqICphRm9ybSkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRPcHRpb25zKG5zSURPTUhUTUxDb2xsZWN0aW9uICogKmFPcHRpb25zKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERpc2FibGVkKFBSQm9vbCAqYURpc2FibGVkKSA9IDA7
CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXREaXNhYmxlZChQUkJvb2wgYURpc2FibGVkKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldE11bHRpcGxlKFBSQm9vbCAqYU11bHRpcGxlKSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXRNdWx0aXBsZShQUkJvb2wgYU11bHRpcGxlKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldE5hbWUobnNBU3RyaW5nICYgYU5hbWUpID0gMDsKICB2aXJ0dWFs
IG5zcmVzdWx0IFNldE5hbWUoY29uc3QgbnNBU3RyaW5nICYgYU5hbWUpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0U2l6ZShQUkludDMyICphU2l6ZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0U2l6ZShQUkludDMyIGFTaXplKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFRh
YkluZGV4KFBSSW50MzIgKmFUYWJJbmRleCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VGFi
SW5kZXgoUFJJbnQzMiBhVGFiSW5kZXgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQWRkKG5z
SURPTUhUTUxFbGVtZW50ICplbGVtZW50LCBuc0lET01IVE1MRWxlbWVudCAqYmVmb3JlKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFJlbW92ZShQUkludDMyIGluZGV4KSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEJsdXIodm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBGb2N1cyh2
b2lkKSA9IDA7Cgp9OwojIDExNiAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU1hCTEZvcm1Db250cm9sLmgiIDEKIyAxNyAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU1hCTEZvcm1Db250cm9sLmgiCmNsYXNzIG5zSUJv
eE9iamVjdDsKIyAyNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU1hCTEZvcm1D
b250cm9sLmgiCmNsYXNzIG5zSURPTU5TWEJMRm9ybUNvbnRyb2wgOiBwdWJsaWMgbnNJU3VwcG9y
dHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29u
c3QgbnNJSUQgaWlkID0gezB4MWMyOGVkNjYsIDB4MWRkMiwgMHgxMWIyLCB7IDB4OTUsIDB4YWYs
IDB4ZTIsIDB4Y2YsIDB4MTAsIDB4OTMsIDB4MWEsIDB4ZGIgfX07IHJldHVybiBpaWQ7fQoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRCb3hPYmplY3QobnNJQm94T2JqZWN0ICogKmFCb3hPYmplY3Qp
ID0gMDsKCn07CiMgMTE3ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKCgojIDEgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luSW5zdGFuY2UuaCIgMQojIDE0ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpbkluc3RhbmNlLmgiCiMgMSAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5TdHJlYW1MaXN0ZW5lci5oIiAxCiMgMTQgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luU3RyZWFtTGlzdGVuZXIuaCIKIyAxICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zcGx1Z2lucm9vdC5oIiAxCiMgMTUgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luU3RyZWFtTGlzdGVuZXIuaCIgMgoKCgoj
IDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luU3RyZWFtSW5mby5oIiAx
CiMgMjEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luU3RyZWFtSW5mby5o
IgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNwbHVnaW5kZWZzLmgiIDEKIyA1
OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc3BsdWdpbmRlZnMuaCIKIyAxICIvdXNy
L1gxMVI2L2luY2x1ZGUvWDExL1hsaWIuaCIgMQojIDU1ICIvdXNyL1gxMVI2L2luY2x1ZGUvWDEx
L1hsaWIuaCIKIyAxICIvdXNyL1gxMVI2L2luY2x1ZGUvWDExL1guaCIgMQojIDcxICIvdXNyL1gx
MVI2L2luY2x1ZGUvWDExL1guaCIKdHlwZWRlZiB1bnNpZ25lZCBsb25nIFhJRDsKCgoKdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIE1hc2s7CgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBBdG9tOwoKdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIFZpc3VhbElEOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgVGltZTsK
IyAxMDEgIi91c3IvWDExUjYvaW5jbHVkZS9YMTEvWC5oIgp0eXBlZGVmIFhJRCBXaW5kb3c7CnR5
cGVkZWYgWElEIERyYXdhYmxlOwoKCnR5cGVkZWYgWElEIEZvbnQ7Cgp0eXBlZGVmIFhJRCBQaXht
YXA7CnR5cGVkZWYgWElEIEN1cnNvcjsKdHlwZWRlZiBYSUQgQ29sb3JtYXA7CnR5cGVkZWYgWElE
IEdDb250ZXh0Owp0eXBlZGVmIFhJRCBLZXlTeW07Cgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgS2V5
Q29kZTsKIyA1NiAiL3Vzci9YMTFSNi9pbmNsdWRlL1gxMS9YbGliLmgiIDIKCgojIDEgIi91c3Iv
WDExUjYvaW5jbHVkZS9YMTEvWGZ1bmNwcm90by5oIiAxCiMgNTkgIi91c3IvWDExUjYvaW5jbHVk
ZS9YMTEvWGxpYi5oIiAyCiMgMSAiL3Vzci9YMTFSNi9pbmNsdWRlL1gxMS9Yb3NkZWZzLmgiIDEK
IyA2MCAiL3Vzci9YMTFSNi9pbmNsdWRlL1gxMS9YbGliLmgiIDIKIyA3MiAiL3Vzci9YMTFSNi9p
bmNsdWRlL1gxMS9YbGliLmgiCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdu
dS8zLjIuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyA3MyAiL3Vzci9YMTFSNi9pbmNsdWRlL1gx
MS9YbGliLmgiIDIKIyA5NCAiL3Vzci9YMTFSNi9pbmNsdWRlL1gxMS9YbGliLmgiCnR5cGVkZWYg
Y2hhciAqWFBvaW50ZXI7CiMgMTY2ICIvdXNyL1gxMVI2L2luY2x1ZGUvWDExL1hsaWIuaCIKdHlw
ZWRlZiBzdHJ1Y3QgX1hFeHREYXRhIHsKICAgICAgICBpbnQgbnVtYmVyOwogICAgICAgIHN0cnVj
dCBfWEV4dERhdGEgKm5leHQ7CiAgICAgICAgaW50ICgqZnJlZV9wcml2YXRlKSgKCiAgICAgICAg
c3RydWN0IF9YRXh0RGF0YSAqZXh0ZW5zaW9uCgogICAgICAgICk7CiAgICAgICAgWFBvaW50ZXIg
cHJpdmF0ZV9kYXRhOwp9IFhFeHREYXRhOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGlu
dCBleHRlbnNpb247CiAgICAgICAgaW50IG1ham9yX29wY29kZTsKICAgICAgICBpbnQgZmlyc3Rf
ZXZlbnQ7CiAgICAgICAgaW50IGZpcnN0X2Vycm9yOwp9IFhFeHRDb2RlczsKCgoKCgp0eXBlZGVm
IHN0cnVjdCB7CiAgICBpbnQgZGVwdGg7CiAgICBpbnQgYml0c19wZXJfcGl4ZWw7CiAgICBpbnQg
c2NhbmxpbmVfcGFkOwp9IFhQaXhtYXBGb3JtYXRWYWx1ZXM7CgoKCgoKdHlwZWRlZiBzdHJ1Y3Qg
ewogICAgICAgIGludCBmdW5jdGlvbjsKICAgICAgICB1bnNpZ25lZCBsb25nIHBsYW5lX21hc2s7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBmb3JlZ3JvdW5kOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
YmFja2dyb3VuZDsKICAgICAgICBpbnQgbGluZV93aWR0aDsKICAgICAgICBpbnQgbGluZV9zdHls
ZTsKICAgICAgICBpbnQgY2FwX3N0eWxlOwoKICAgICAgICBpbnQgam9pbl9zdHlsZTsKICAgICAg
ICBpbnQgZmlsbF9zdHlsZTsKCiAgICAgICAgaW50IGZpbGxfcnVsZTsKICAgICAgICBpbnQgYXJj
X21vZGU7CiAgICAgICAgUGl4bWFwIHRpbGU7CiAgICAgICAgUGl4bWFwIHN0aXBwbGU7CiAgICAg
ICAgaW50IHRzX3hfb3JpZ2luOwogICAgICAgIGludCB0c195X29yaWdpbjsKICAgICAgICBGb250
IGZvbnQ7CiAgICAgICAgaW50IHN1YndpbmRvd19tb2RlOwogICAgICAgIGludCBncmFwaGljc19l
eHBvc3VyZXM7CiAgICAgICAgaW50IGNsaXBfeF9vcmlnaW47CiAgICAgICAgaW50IGNsaXBfeV9v
cmlnaW47CiAgICAgICAgUGl4bWFwIGNsaXBfbWFzazsKICAgICAgICBpbnQgZGFzaF9vZmZzZXQ7
CiAgICAgICAgY2hhciBkYXNoZXM7Cn0gWEdDVmFsdWVzOwoKCgoKCgp0eXBlZGVmIHN0cnVjdCBf
WEdDCgoKCgoKCgoqR0M7CgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgWEV4dERhdGEgKmV4
dF9kYXRhOwogICAgICAgIFZpc3VhbElEIHZpc3VhbGlkOwoKICAgICAgICBpbnQgY19jbGFzczsK
CgoKICAgICAgICB1bnNpZ25lZCBsb25nIHJlZF9tYXNrLCBncmVlbl9tYXNrLCBibHVlX21hc2s7
CiAgICAgICAgaW50IGJpdHNfcGVyX3JnYjsKICAgICAgICBpbnQgbWFwX2VudHJpZXM7Cn0gVmlz
dWFsOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBkZXB0aDsKICAgICAgICBpbnQg
bnZpc3VhbHM7CiAgICAgICAgVmlzdWFsICp2aXN1YWxzOwp9IERlcHRoOwoKCgoKCgoKc3RydWN0
IF9YRGlzcGxheTsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBYRXh0RGF0YSAqZXh0X2RhdGE7
CiAgICAgICAgc3RydWN0IF9YRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cgcm9vdDsK
ICAgICAgICBpbnQgd2lkdGgsIGhlaWdodDsKICAgICAgICBpbnQgbXdpZHRoLCBtaGVpZ2h0Owog
ICAgICAgIGludCBuZGVwdGhzOwogICAgICAgIERlcHRoICpkZXB0aHM7CiAgICAgICAgaW50IHJv
b3RfZGVwdGg7CiAgICAgICAgVmlzdWFsICpyb290X3Zpc3VhbDsKICAgICAgICBHQyBkZWZhdWx0
X2djOwogICAgICAgIENvbG9ybWFwIGNtYXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyB3aGl0ZV9w
aXhlbDsKICAgICAgICB1bnNpZ25lZCBsb25nIGJsYWNrX3BpeGVsOwogICAgICAgIGludCBtYXhf
bWFwcywgbWluX21hcHM7CiAgICAgICAgaW50IGJhY2tpbmdfc3RvcmU7CiAgICAgICAgaW50IHNh
dmVfdW5kZXJzOwogICAgICAgIGxvbmcgcm9vdF9pbnB1dF9tYXNrOwp9IFNjcmVlbjsKCgoKCnR5
cGVkZWYgc3RydWN0IHsKICAgICAgICBYRXh0RGF0YSAqZXh0X2RhdGE7CiAgICAgICAgaW50IGRl
cHRoOwogICAgICAgIGludCBiaXRzX3Blcl9waXhlbDsKICAgICAgICBpbnQgc2NhbmxpbmVfcGFk
Owp9IFNjcmVlbkZvcm1hdDsKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgIFBpeG1hcCBiYWNrZ3Jv
dW5kX3BpeG1hcDsKICAgIHVuc2lnbmVkIGxvbmcgYmFja2dyb3VuZF9waXhlbDsKICAgIFBpeG1h
cCBib3JkZXJfcGl4bWFwOwogICAgdW5zaWduZWQgbG9uZyBib3JkZXJfcGl4ZWw7CiAgICBpbnQg
Yml0X2dyYXZpdHk7CiAgICBpbnQgd2luX2dyYXZpdHk7CiAgICBpbnQgYmFja2luZ19zdG9yZTsK
ICAgIHVuc2lnbmVkIGxvbmcgYmFja2luZ19wbGFuZXM7CiAgICB1bnNpZ25lZCBsb25nIGJhY2tp
bmdfcGl4ZWw7CiAgICBpbnQgc2F2ZV91bmRlcjsKICAgIGxvbmcgZXZlbnRfbWFzazsKICAgIGxv
bmcgZG9fbm90X3Byb3BhZ2F0ZV9tYXNrOwogICAgaW50IG92ZXJyaWRlX3JlZGlyZWN0OwogICAg
Q29sb3JtYXAgY29sb3JtYXA7CiAgICBDdXJzb3IgY3Vyc29yOwp9IFhTZXRXaW5kb3dBdHRyaWJ1
dGVzOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgaW50IHgsIHk7CiAgICBpbnQgd2lkdGgsIGhlaWdo
dDsKICAgIGludCBib3JkZXJfd2lkdGg7CiAgICBpbnQgZGVwdGg7CiAgICBWaXN1YWwgKnZpc3Vh
bDsKICAgIFdpbmRvdyByb290OwoKICAgIGludCBjX2NsYXNzOwoKCgogICAgaW50IGJpdF9ncmF2
aXR5OwogICAgaW50IHdpbl9ncmF2aXR5OwogICAgaW50IGJhY2tpbmdfc3RvcmU7CiAgICB1bnNp
Z25lZCBsb25nIGJhY2tpbmdfcGxhbmVzOwogICAgdW5zaWduZWQgbG9uZyBiYWNraW5nX3BpeGVs
OwogICAgaW50IHNhdmVfdW5kZXI7CiAgICBDb2xvcm1hcCBjb2xvcm1hcDsKICAgIGludCBtYXBf
aW5zdGFsbGVkOwogICAgaW50IG1hcF9zdGF0ZTsKICAgIGxvbmcgYWxsX2V2ZW50X21hc2tzOwog
ICAgbG9uZyB5b3VyX2V2ZW50X21hc2s7CiAgICBsb25nIGRvX25vdF9wcm9wYWdhdGVfbWFzazsK
ICAgIGludCBvdmVycmlkZV9yZWRpcmVjdDsKICAgIFNjcmVlbiAqc2NyZWVuOwp9IFhXaW5kb3dB
dHRyaWJ1dGVzOwoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IGZhbWlseTsKICAg
ICAgICBpbnQgbGVuZ3RoOwogICAgICAgIGNoYXIgKmFkZHJlc3M7Cn0gWEhvc3RBZGRyZXNzOwoK
CgoKdHlwZWRlZiBzdHJ1Y3QgX1hJbWFnZSB7CiAgICBpbnQgd2lkdGgsIGhlaWdodDsKICAgIGlu
dCB4b2Zmc2V0OwogICAgaW50IGZvcm1hdDsKICAgIGNoYXIgKmRhdGE7CiAgICBpbnQgYnl0ZV9v
cmRlcjsKICAgIGludCBiaXRtYXBfdW5pdDsKICAgIGludCBiaXRtYXBfYml0X29yZGVyOwogICAg
aW50IGJpdG1hcF9wYWQ7CiAgICBpbnQgZGVwdGg7CiAgICBpbnQgYnl0ZXNfcGVyX2xpbmU7CiAg
ICBpbnQgYml0c19wZXJfcGl4ZWw7CiAgICB1bnNpZ25lZCBsb25nIHJlZF9tYXNrOwogICAgdW5z
aWduZWQgbG9uZyBncmVlbl9tYXNrOwogICAgdW5zaWduZWQgbG9uZyBibHVlX21hc2s7CiAgICBY
UG9pbnRlciBvYmRhdGE7CiAgICBzdHJ1Y3QgZnVuY3MgewoKICAgICAgICBzdHJ1Y3QgX1hJbWFn
ZSAqKCpjcmVhdGVfaW1hZ2UpKAogICAgICAgICAgICAgICAgc3RydWN0IF9YRGlzcGxheSogLAog
ICAgICAgICAgICAgICAgVmlzdWFsKiAsCiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgLAog
ICAgICAgICAgICAgICAgaW50ICwKICAgICAgICAgICAgICAgIGludCAsCiAgICAgICAgICAgICAg
ICBjaGFyKiAsCiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgLAogICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50ICwKICAgICAgICAgICAgICAgIGludCAsCiAgICAgICAgICAgICAgICBpbnQg
KTsKICAgICAgICBpbnQgKCpkZXN0cm95X2ltYWdlKSAoc3RydWN0IF9YSW1hZ2UgKik7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyAoKmdldF9waXhlbCkgKHN0cnVjdCBfWEltYWdlICosIGludCwgaW50
KTsKICAgICAgICBpbnQgKCpwdXRfcGl4ZWwpIChzdHJ1Y3QgX1hJbWFnZSAqLCBpbnQsIGludCwg
dW5zaWduZWQgbG9uZyk7CiAgICAgICAgc3RydWN0IF9YSW1hZ2UgKigqc3ViX2ltYWdlKShzdHJ1
Y3QgX1hJbWFnZSAqLCBpbnQsIGludCwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQpOwogICAg
ICAgIGludCAoKmFkZF9waXhlbCkgKHN0cnVjdCBfWEltYWdlICosIGxvbmcpOwojIDQxMiAiL3Vz
ci9YMTFSNi9pbmNsdWRlL1gxMS9YbGliLmgiCiAgICAgICAgfSBmOwp9IFhJbWFnZTsKCgoKCnR5
cGVkZWYgc3RydWN0IHsKICAgIGludCB4LCB5OwogICAgaW50IHdpZHRoLCBoZWlnaHQ7CiAgICBp
bnQgYm9yZGVyX3dpZHRoOwogICAgV2luZG93IHNpYmxpbmc7CiAgICBpbnQgc3RhY2tfbW9kZTsK
fSBYV2luZG93Q2hhbmdlczsKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBs
b25nIHBpeGVsOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHJlZCwgZ3JlZW4sIGJsdWU7CiAgICAg
ICAgY2hhciBmbGFnczsKICAgICAgICBjaGFyIHBhZDsKfSBYQ29sb3I7CgoKCgoKCnR5cGVkZWYg
c3RydWN0IHsKICAgIHNob3J0IHgxLCB5MSwgeDIsIHkyOwp9IFhTZWdtZW50OwoKdHlwZWRlZiBz
dHJ1Y3QgewogICAgc2hvcnQgeCwgeTsKfSBYUG9pbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBz
aG9ydCB4LCB5OwogICAgdW5zaWduZWQgc2hvcnQgd2lkdGgsIGhlaWdodDsKfSBYUmVjdGFuZ2xl
OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgc2hvcnQgeCwgeTsKICAgIHVuc2lnbmVkIHNob3J0IHdp
ZHRoLCBoZWlnaHQ7CiAgICBzaG9ydCBhbmdsZTEsIGFuZ2xlMjsKfSBYQXJjOwoKCgoKdHlwZWRl
ZiBzdHJ1Y3QgewogICAgICAgIGludCBrZXlfY2xpY2tfcGVyY2VudDsKICAgICAgICBpbnQgYmVs
bF9wZXJjZW50OwogICAgICAgIGludCBiZWxsX3BpdGNoOwogICAgICAgIGludCBiZWxsX2R1cmF0
aW9uOwogICAgICAgIGludCBsZWQ7CiAgICAgICAgaW50IGxlZF9tb2RlOwogICAgICAgIGludCBr
ZXk7CiAgICAgICAgaW50IGF1dG9fcmVwZWF0X21vZGU7Cn0gWEtleWJvYXJkQ29udHJvbDsKCgoK
dHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBrZXlfY2xpY2tfcGVyY2VudDsKICAgICAgICBp
bnQgYmVsbF9wZXJjZW50OwogICAgICAgIHVuc2lnbmVkIGludCBiZWxsX3BpdGNoLCBiZWxsX2R1
cmF0aW9uOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbGVkX21hc2s7CiAgICAgICAgaW50IGdsb2Jh
bF9hdXRvX3JlcGVhdDsKICAgICAgICBjaGFyIGF1dG9fcmVwZWF0c1szMl07Cn0gWEtleWJvYXJk
U3RhdGU7CgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBUaW1lIHRpbWU7CiAgICAgICAgc2hv
cnQgeCwgeTsKfSBYVGltZUNvb3JkOwoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IG1h
eF9rZXlwZXJtb2Q7CiAgICAgICAgS2V5Q29kZSAqbW9kaWZpZXJtYXA7Cn0gWE1vZGlmaWVyS2V5
bWFwOwojIDUwNiAiL3Vzci9YMTFSNi9pbmNsdWRlL1gxMS9YbGliLmgiCnR5cGVkZWYgc3RydWN0
IF9YRGlzcGxheSBEaXNwbGF5OwoKCnN0cnVjdCBfWFByaXZhdGU7CnN0cnVjdCBfWHJtSGFzaEJ1
Y2tldFJlYzsKCnR5cGVkZWYgc3RydWN0CgoKCnsKICAgICAgICBYRXh0RGF0YSAqZXh0X2RhdGE7
CiAgICAgICAgc3RydWN0IF9YUHJpdmF0ZSAqcHJpdmF0ZTE7CiAgICAgICAgaW50IGZkOwogICAg
ICAgIGludCBwcml2YXRlMjsKICAgICAgICBpbnQgcHJvdG9fbWFqb3JfdmVyc2lvbjsKICAgICAg
ICBpbnQgcHJvdG9fbWlub3JfdmVyc2lvbjsKICAgICAgICBjaGFyICp2ZW5kb3I7CiAgICAgICAg
WElEIHByaXZhdGUzOwogICAgICAgIFhJRCBwcml2YXRlNDsKICAgICAgICBYSUQgcHJpdmF0ZTU7
CiAgICAgICAgaW50IHByaXZhdGU2OwogICAgICAgIFhJRCAoKnJlc291cmNlX2FsbG9jKSgKCiAg
ICAgICAgICAgICAgICBzdHJ1Y3QgX1hEaXNwbGF5KgoKICAgICAgICApOwogICAgICAgIGludCBi
eXRlX29yZGVyOwogICAgICAgIGludCBiaXRtYXBfdW5pdDsKICAgICAgICBpbnQgYml0bWFwX3Bh
ZDsKICAgICAgICBpbnQgYml0bWFwX2JpdF9vcmRlcjsKICAgICAgICBpbnQgbmZvcm1hdHM7CiAg
ICAgICAgU2NyZWVuRm9ybWF0ICpwaXhtYXBfZm9ybWF0OwogICAgICAgIGludCBwcml2YXRlODsK
ICAgICAgICBpbnQgcmVsZWFzZTsKICAgICAgICBzdHJ1Y3QgX1hQcml2YXRlICpwcml2YXRlOSwg
KnByaXZhdGUxMDsKICAgICAgICBpbnQgcWxlbjsKICAgICAgICB1bnNpZ25lZCBsb25nIGxhc3Rf
cmVxdWVzdF9yZWFkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVxdWVzdDsKICAgICAgICBYUG9p
bnRlciBwcml2YXRlMTE7CiAgICAgICAgWFBvaW50ZXIgcHJpdmF0ZTEyOwogICAgICAgIFhQb2lu
dGVyIHByaXZhdGUxMzsKICAgICAgICBYUG9pbnRlciBwcml2YXRlMTQ7CiAgICAgICAgdW5zaWdu
ZWQgbWF4X3JlcXVlc3Rfc2l6ZTsKICAgICAgICBzdHJ1Y3QgX1hybUhhc2hCdWNrZXRSZWMgKmRi
OwogICAgICAgIGludCAoKnByaXZhdGUxNSkoCgogICAgICAgICAgICAgICAgc3RydWN0IF9YRGlz
cGxheSoKCiAgICAgICAgICAgICAgICApOwogICAgICAgIGNoYXIgKmRpc3BsYXlfbmFtZTsKICAg
ICAgICBpbnQgZGVmYXVsdF9zY3JlZW47CiAgICAgICAgaW50IG5zY3JlZW5zOwogICAgICAgIFNj
cmVlbiAqc2NyZWVuczsKICAgICAgICB1bnNpZ25lZCBsb25nIG1vdGlvbl9idWZmZXI7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBwcml2YXRlMTY7CiAgICAgICAgaW50IG1pbl9rZXljb2RlOwogICAg
ICAgIGludCBtYXhfa2V5Y29kZTsKICAgICAgICBYUG9pbnRlciBwcml2YXRlMTc7CiAgICAgICAg
WFBvaW50ZXIgcHJpdmF0ZTE4OwogICAgICAgIGludCBwcml2YXRlMTk7CiAgICAgICAgY2hhciAq
eGRlZmF1bHRzOwoKfQoKCgoqX1hQcml2RGlzcGxheTsKIyA1ODIgIi91c3IvWDExUjYvaW5jbHVk
ZS9YMTEvWGxpYi5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlz
cGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cgd2luZG93OwogICAgICAgIFdpbmRvdyByb290
OwogICAgICAgIFdpbmRvdyBzdWJ3aW5kb3c7CiAgICAgICAgVGltZSB0aW1lOwogICAgICAgIGlu
dCB4LCB5OwogICAgICAgIGludCB4X3Jvb3QsIHlfcm9vdDsKICAgICAgICB1bnNpZ25lZCBpbnQg
c3RhdGU7CiAgICAgICAgdW5zaWduZWQgaW50IGtleWNvZGU7CiAgICAgICAgaW50IHNhbWVfc2Ny
ZWVuOwp9IFhLZXlFdmVudDsKdHlwZWRlZiBYS2V5RXZlbnQgWEtleVByZXNzZWRFdmVudDsKdHlw
ZWRlZiBYS2V5RXZlbnQgWEtleVJlbGVhc2VkRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAg
ICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNl
bmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cgd2luZG93
OwogICAgICAgIFdpbmRvdyByb290OwogICAgICAgIFdpbmRvdyBzdWJ3aW5kb3c7CiAgICAgICAg
VGltZSB0aW1lOwogICAgICAgIGludCB4LCB5OwogICAgICAgIGludCB4X3Jvb3QsIHlfcm9vdDsK
ICAgICAgICB1bnNpZ25lZCBpbnQgc3RhdGU7CiAgICAgICAgdW5zaWduZWQgaW50IGJ1dHRvbjsK
ICAgICAgICBpbnQgc2FtZV9zY3JlZW47Cn0gWEJ1dHRvbkV2ZW50Owp0eXBlZGVmIFhCdXR0b25F
dmVudCBYQnV0dG9uUHJlc3NlZEV2ZW50Owp0eXBlZGVmIFhCdXR0b25FdmVudCBYQnV0dG9uUmVs
ZWFzZWRFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1
bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNw
bGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgV2luZG93IHJvb3Q7
CiAgICAgICAgV2luZG93IHN1YndpbmRvdzsKICAgICAgICBUaW1lIHRpbWU7CiAgICAgICAgaW50
IHgsIHk7CiAgICAgICAgaW50IHhfcm9vdCwgeV9yb290OwogICAgICAgIHVuc2lnbmVkIGludCBz
dGF0ZTsKICAgICAgICBjaGFyIGlzX2hpbnQ7CiAgICAgICAgaW50IHNhbWVfc2NyZWVuOwp9IFhN
b3Rpb25FdmVudDsKdHlwZWRlZiBYTW90aW9uRXZlbnQgWFBvaW50ZXJNb3ZlZEV2ZW50OwoKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2Vy
aWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAg
ICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBXaW5kb3cgcm9vdDsKICAgICAgICBXaW5kb3cg
c3Vid2luZG93OwogICAgICAgIFRpbWUgdGltZTsKICAgICAgICBpbnQgeCwgeTsKICAgICAgICBp
bnQgeF9yb290LCB5X3Jvb3Q7CiAgICAgICAgaW50IG1vZGU7CiAgICAgICAgaW50IGRldGFpbDsK
CgoKCiAgICAgICAgaW50IHNhbWVfc2NyZWVuOwogICAgICAgIGludCBmb2N1czsKICAgICAgICB1
bnNpZ25lZCBpbnQgc3RhdGU7Cn0gWENyb3NzaW5nRXZlbnQ7CnR5cGVkZWYgWENyb3NzaW5nRXZl
bnQgWEVudGVyV2luZG93RXZlbnQ7CnR5cGVkZWYgWENyb3NzaW5nRXZlbnQgWExlYXZlV2luZG93
RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAq
ZGlzcGxheTsKICAgICAgICBXaW5kb3cgd2luZG93OwogICAgICAgIGludCBtb2RlOwogICAgICAg
IGludCBkZXRhaWw7CgoKCgoKfSBYRm9jdXNDaGFuZ2VFdmVudDsKdHlwZWRlZiBYRm9jdXNDaGFu
Z2VFdmVudCBYRm9jdXNJbkV2ZW50Owp0eXBlZGVmIFhGb2N1c0NoYW5nZUV2ZW50IFhGb2N1c091
dEV2ZW50OwoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5
ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgY2hhciBrZXlfdmVjdG9y
WzMyXTsKfSBYS2V5bWFwRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAg
ICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cgd2luZG93OwogICAgICAgIGlu
dCB4LCB5OwogICAgICAgIGludCB3aWR0aCwgaGVpZ2h0OwogICAgICAgIGludCBjb3VudDsKfSBY
RXhwb3NlRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlz
cGxheSAqZGlzcGxheTsKICAgICAgICBEcmF3YWJsZSBkcmF3YWJsZTsKICAgICAgICBpbnQgeCwg
eTsKICAgICAgICBpbnQgd2lkdGgsIGhlaWdodDsKICAgICAgICBpbnQgY291bnQ7CiAgICAgICAg
aW50IG1ham9yX2NvZGU7CiAgICAgICAgaW50IG1pbm9yX2NvZGU7Cn0gWEdyYXBoaWNzRXhwb3Nl
RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAq
ZGlzcGxheTsKICAgICAgICBEcmF3YWJsZSBkcmF3YWJsZTsKICAgICAgICBpbnQgbWFqb3JfY29k
ZTsKICAgICAgICBpbnQgbWlub3JfY29kZTsKfSBYTm9FeHBvc2VFdmVudDsKCnR5cGVkZWYgc3Ry
dWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAg
ICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdp
bmRvdyB3aW5kb3c7CiAgICAgICAgaW50IHN0YXRlOwp9IFhWaXNpYmlsaXR5RXZlbnQ7Cgp0eXBl
ZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJp
YWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAg
ICAgICBXaW5kb3cgcGFyZW50OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgaW50IHgs
IHk7CiAgICAgICAgaW50IHdpZHRoLCBoZWlnaHQ7CiAgICAgICAgaW50IGJvcmRlcl93aWR0aDsK
ICAgICAgICBpbnQgb3ZlcnJpZGVfcmVkaXJlY3Q7Cn0gWENyZWF0ZVdpbmRvd0V2ZW50OwoKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2Vy
aWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAg
ICAgICAgV2luZG93IGV2ZW50OwogICAgICAgIFdpbmRvdyB3aW5kb3c7Cn0gWERlc3Ryb3lXaW5k
b3dFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5
ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyBldmVudDsKICAgICAgICBXaW5kb3cgd2luZG93Owog
ICAgICAgIGludCBmcm9tX2NvbmZpZ3VyZTsKfSBYVW5tYXBFdmVudDsKCnR5cGVkZWYgc3RydWN0
IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAg
ICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRv
dyBldmVudDsKICAgICAgICBXaW5kb3cgd2luZG93OwogICAgICAgIGludCBvdmVycmlkZV9yZWRp
cmVjdDsKfSBYTWFwRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAgICAg
ICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cgcGFyZW50OwogICAgICAgIFdpbmRv
dyB3aW5kb3c7Cn0gWE1hcFJlcXVlc3RFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBp
bnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9l
dmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyBldmVudDsKICAg
ICAgICBXaW5kb3cgd2luZG93OwogICAgICAgIFdpbmRvdyBwYXJlbnQ7CiAgICAgICAgaW50IHgs
IHk7CiAgICAgICAgaW50IG92ZXJyaWRlX3JlZGlyZWN0Owp9IFhSZXBhcmVudEV2ZW50OwoKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2Vy
aWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAg
ICAgICAgV2luZG93IGV2ZW50OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgaW50IHgs
IHk7CiAgICAgICAgaW50IHdpZHRoLCBoZWlnaHQ7CiAgICAgICAgaW50IGJvcmRlcl93aWR0aDsK
ICAgICAgICBXaW5kb3cgYWJvdmU7CiAgICAgICAgaW50IG92ZXJyaWRlX3JlZGlyZWN0Owp9IFhD
b25maWd1cmVFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBE
aXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyBldmVudDsKICAgICAgICBXaW5kb3cgd2lu
ZG93OwogICAgICAgIGludCB4LCB5Owp9IFhHcmF2aXR5RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7
CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAg
aW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cg
d2luZG93OwogICAgICAgIGludCB3aWR0aCwgaGVpZ2h0Owp9IFhSZXNpemVSZXF1ZXN0RXZlbnQ7
Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxh
eTsKICAgICAgICBXaW5kb3cgcGFyZW50OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAg
aW50IHgsIHk7CiAgICAgICAgaW50IHdpZHRoLCBoZWlnaHQ7CiAgICAgICAgaW50IGJvcmRlcl93
aWR0aDsKICAgICAgICBXaW5kb3cgYWJvdmU7CiAgICAgICAgaW50IGRldGFpbDsKICAgICAgICB1
bnNpZ25lZCBsb25nIHZhbHVlX21hc2s7Cn0gWENvbmZpZ3VyZVJlcXVlc3RFdmVudDsKCnR5cGVk
ZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlh
bDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAg
ICAgIFdpbmRvdyBldmVudDsKICAgICAgICBXaW5kb3cgd2luZG93OwogICAgICAgIGludCBwbGFj
ZTsKfSBYQ2lyY3VsYXRlRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAg
ICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cgcGFyZW50OwogICAgICAgIFdp
bmRvdyB3aW5kb3c7CiAgICAgICAgaW50IHBsYWNlOwp9IFhDaXJjdWxhdGVSZXF1ZXN0RXZlbnQ7
Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxh
eTsKICAgICAgICBXaW5kb3cgd2luZG93OwogICAgICAgIEF0b20gYXRvbTsKICAgICAgICBUaW1l
IHRpbWU7CiAgICAgICAgaW50IHN0YXRlOwp9IFhQcm9wZXJ0eUV2ZW50OwoKdHlwZWRlZiBzdHJ1
Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAg
ICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2lu
ZG93IHdpbmRvdzsKICAgICAgICBBdG9tIHNlbGVjdGlvbjsKICAgICAgICBUaW1lIHRpbWU7Cn0g
WFNlbGVjdGlvbkNsZWFyRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAg
ICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cgb3duZXI7CiAgICAgICAgV2lu
ZG93IHJlcXVlc3RvcjsKICAgICAgICBBdG9tIHNlbGVjdGlvbjsKICAgICAgICBBdG9tIHRhcmdl
dDsKICAgICAgICBBdG9tIHByb3BlcnR5OwogICAgICAgIFRpbWUgdGltZTsKfSBYU2VsZWN0aW9u
UmVxdWVzdEV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERp
c3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IHJlcXVlc3RvcjsKICAgICAgICBBdG9tIHNl
bGVjdGlvbjsKICAgICAgICBBdG9tIHRhcmdldDsKICAgICAgICBBdG9tIHByb3BlcnR5OwogICAg
ICAgIFRpbWUgdGltZTsKfSBYU2VsZWN0aW9uRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAg
ICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNl
bmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cgd2luZG93
OwogICAgICAgIENvbG9ybWFwIGNvbG9ybWFwOwoKICAgICAgICBpbnQgY19uZXc7CgoKCiAgICAg
ICAgaW50IHN0YXRlOwp9IFhDb2xvcm1hcEV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAg
IGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5k
X2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IHdpbmRvdzsK
ICAgICAgICBBdG9tIG1lc3NhZ2VfdHlwZTsKICAgICAgICBpbnQgZm9ybWF0OwogICAgICAgIHVu
aW9uIHsKICAgICAgICAgICAgICAgIGNoYXIgYlsyMF07CiAgICAgICAgICAgICAgICBzaG9ydCBz
WzEwXTsKICAgICAgICAgICAgICAgIGxvbmcgbFs1XTsKICAgICAgICAgICAgICAgIH0gZGF0YTsK
fSBYQ2xpZW50TWVzc2FnZUV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBl
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50Owog
ICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBp
bnQgcmVxdWVzdDsKCiAgICAgICAgaW50IGZpcnN0X2tleWNvZGU7CiAgICAgICAgaW50IGNvdW50
Owp9IFhNYXBwaW5nRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAg
ICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBYSUQgcmVzb3VyY2VpZDsKICAgICAgICB1
bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICB1bnNpZ25lZCBjaGFyIGVycm9yX2NvZGU7CiAg
ICAgICAgdW5zaWduZWQgY2hhciByZXF1ZXN0X2NvZGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBt
aW5vcl9jb2RlOwp9IFhFcnJvckV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0
eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50
OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IHdpbmRvdzsKfSBYQW55
RXZlbnQ7CgoKCgoKdHlwZWRlZiB1bmlvbiBfWEV2ZW50IHsKICAgICAgICBpbnQgdHlwZTsKICAg
ICAgICBYQW55RXZlbnQgeGFueTsKICAgICAgICBYS2V5RXZlbnQgeGtleTsKICAgICAgICBYQnV0
dG9uRXZlbnQgeGJ1dHRvbjsKICAgICAgICBYTW90aW9uRXZlbnQgeG1vdGlvbjsKICAgICAgICBY
Q3Jvc3NpbmdFdmVudCB4Y3Jvc3Npbmc7CiAgICAgICAgWEZvY3VzQ2hhbmdlRXZlbnQgeGZvY3Vz
OwogICAgICAgIFhFeHBvc2VFdmVudCB4ZXhwb3NlOwogICAgICAgIFhHcmFwaGljc0V4cG9zZUV2
ZW50IHhncmFwaGljc2V4cG9zZTsKICAgICAgICBYTm9FeHBvc2VFdmVudCB4bm9leHBvc2U7CiAg
ICAgICAgWFZpc2liaWxpdHlFdmVudCB4dmlzaWJpbGl0eTsKICAgICAgICBYQ3JlYXRlV2luZG93
RXZlbnQgeGNyZWF0ZXdpbmRvdzsKICAgICAgICBYRGVzdHJveVdpbmRvd0V2ZW50IHhkZXN0cm95
d2luZG93OwogICAgICAgIFhVbm1hcEV2ZW50IHh1bm1hcDsKICAgICAgICBYTWFwRXZlbnQgeG1h
cDsKICAgICAgICBYTWFwUmVxdWVzdEV2ZW50IHhtYXByZXF1ZXN0OwogICAgICAgIFhSZXBhcmVu
dEV2ZW50IHhyZXBhcmVudDsKICAgICAgICBYQ29uZmlndXJlRXZlbnQgeGNvbmZpZ3VyZTsKICAg
ICAgICBYR3Jhdml0eUV2ZW50IHhncmF2aXR5OwogICAgICAgIFhSZXNpemVSZXF1ZXN0RXZlbnQg
eHJlc2l6ZXJlcXVlc3Q7CiAgICAgICAgWENvbmZpZ3VyZVJlcXVlc3RFdmVudCB4Y29uZmlndXJl
cmVxdWVzdDsKICAgICAgICBYQ2lyY3VsYXRlRXZlbnQgeGNpcmN1bGF0ZTsKICAgICAgICBYQ2ly
Y3VsYXRlUmVxdWVzdEV2ZW50IHhjaXJjdWxhdGVyZXF1ZXN0OwogICAgICAgIFhQcm9wZXJ0eUV2
ZW50IHhwcm9wZXJ0eTsKICAgICAgICBYU2VsZWN0aW9uQ2xlYXJFdmVudCB4c2VsZWN0aW9uY2xl
YXI7CiAgICAgICAgWFNlbGVjdGlvblJlcXVlc3RFdmVudCB4c2VsZWN0aW9ucmVxdWVzdDsKICAg
ICAgICBYU2VsZWN0aW9uRXZlbnQgeHNlbGVjdGlvbjsKICAgICAgICBYQ29sb3JtYXBFdmVudCB4
Y29sb3JtYXA7CiAgICAgICAgWENsaWVudE1lc3NhZ2VFdmVudCB4Y2xpZW50OwogICAgICAgIFhN
YXBwaW5nRXZlbnQgeG1hcHBpbmc7CiAgICAgICAgWEVycm9yRXZlbnQgeGVycm9yOwogICAgICAg
IFhLZXltYXBFdmVudCB4a2V5bWFwOwogICAgICAgIGxvbmcgcGFkWzI0XTsKfSBYRXZlbnQ7CgoK
CgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBzaG9ydCBsYmVhcmluZzsKICAgIHNob3J0IHJiZWFy
aW5nOwogICAgc2hvcnQgd2lkdGg7CiAgICBzaG9ydCBhc2NlbnQ7CiAgICBzaG9ydCBkZXNjZW50
OwogICAgdW5zaWduZWQgc2hvcnQgYXR0cmlidXRlczsKfSBYQ2hhclN0cnVjdDsKCgoKCgp0eXBl
ZGVmIHN0cnVjdCB7CiAgICBBdG9tIG5hbWU7CiAgICB1bnNpZ25lZCBsb25nIGNhcmQzMjsKfSBY
Rm9udFByb3A7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBYRXh0RGF0YSAqZXh0X2RhdGE7CiAgICBG
b250IGZpZDsKICAgIHVuc2lnbmVkIGRpcmVjdGlvbjsKICAgIHVuc2lnbmVkIG1pbl9jaGFyX29y
X2J5dGUyOwogICAgdW5zaWduZWQgbWF4X2NoYXJfb3JfYnl0ZTI7CiAgICB1bnNpZ25lZCBtaW5f
Ynl0ZTE7CiAgICB1bnNpZ25lZCBtYXhfYnl0ZTE7CiAgICBpbnQgYWxsX2NoYXJzX2V4aXN0Owog
ICAgdW5zaWduZWQgZGVmYXVsdF9jaGFyOwogICAgaW50IG5fcHJvcGVydGllczsKICAgIFhGb250
UHJvcCAqcHJvcGVydGllczsKICAgIFhDaGFyU3RydWN0IG1pbl9ib3VuZHM7CiAgICBYQ2hhclN0
cnVjdCBtYXhfYm91bmRzOwogICAgWENoYXJTdHJ1Y3QgKnBlcl9jaGFyOwogICAgaW50IGFzY2Vu
dDsKICAgIGludCBkZXNjZW50Owp9IFhGb250U3RydWN0OwoKCgoKdHlwZWRlZiBzdHJ1Y3Qgewog
ICAgY2hhciAqY2hhcnM7CiAgICBpbnQgbmNoYXJzOwogICAgaW50IGRlbHRhOwogICAgRm9udCBm
b250Owp9IFhUZXh0SXRlbTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIHVuc2lnbmVkIGNoYXIgYnl0
ZTE7CiAgICB1bnNpZ25lZCBjaGFyIGJ5dGUyOwp9IFhDaGFyMmI7Cgp0eXBlZGVmIHN0cnVjdCB7
CiAgICBYQ2hhcjJiICpjaGFyczsKICAgIGludCBuY2hhcnM7CiAgICBpbnQgZGVsdGE7CiAgICBG
b250IGZvbnQ7Cn0gWFRleHRJdGVtMTY7CgoKdHlwZWRlZiB1bmlvbiB7IERpc3BsYXkgKmRpc3Bs
YXk7CiAgICAgICAgICAgICAgICBHQyBnYzsKICAgICAgICAgICAgICAgIFZpc3VhbCAqdmlzdWFs
OwogICAgICAgICAgICAgICAgU2NyZWVuICpzY3JlZW47CiAgICAgICAgICAgICAgICBTY3JlZW5G
b3JtYXQgKnBpeG1hcF9mb3JtYXQ7CiAgICAgICAgICAgICAgICBYRm9udFN0cnVjdCAqZm9udDsg
fSBYRURhdGFPYmplY3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBYUmVjdGFuZ2xlIG1heF9pbmtf
ZXh0ZW50OwogICAgWFJlY3RhbmdsZSBtYXhfbG9naWNhbF9leHRlbnQ7Cn0gWEZvbnRTZXRFeHRl
bnRzOwoKCgoKCnR5cGVkZWYgc3RydWN0IF9YT00gKlhPTTsKdHlwZWRlZiBzdHJ1Y3QgX1hPQyAq
WE9DLCAqWEZvbnRTZXQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBjaGFyICpjaGFyczsKICAgIGlu
dCBuY2hhcnM7CiAgICBpbnQgZGVsdGE7CiAgICBYRm9udFNldCBmb250X3NldDsKfSBYbWJUZXh0
SXRlbTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIHdjaGFyX3QgKmNoYXJzOwogICAgaW50IG5jaGFy
czsKICAgIGludCBkZWx0YTsKICAgIFhGb250U2V0IGZvbnRfc2V0Owp9IFh3Y1RleHRJdGVtOwoj
IDExMTYgIi91c3IvWDExUjYvaW5jbHVkZS9YMTEvWGxpYi5oIgp0eXBlZGVmIHN0cnVjdCB7CiAg
ICBpbnQgY2hhcnNldF9jb3VudDsKICAgIGNoYXIgKipjaGFyc2V0X2xpc3Q7Cn0gWE9NQ2hhclNl
dExpc3Q7Cgp0eXBlZGVmIGVudW0gewogICAgWE9NT3JpZW50YXRpb25fTFRSX1RUQiwKICAgIFhP
TU9yaWVudGF0aW9uX1JUTF9UVEIsCiAgICBYT01PcmllbnRhdGlvbl9UVEJfTFRSLAogICAgWE9N
T3JpZW50YXRpb25fVFRCX1JUTCwKICAgIFhPTU9yaWVudGF0aW9uX0NvbnRleHQKfSBYT3JpZW50
YXRpb247Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBpbnQgbnVtX29yaWVudGF0aW9uOwogICAgWE9y
aWVudGF0aW9uICpvcmllbnRhdGlvbjsKfSBYT01PcmllbnRhdGlvbjsKCnR5cGVkZWYgc3RydWN0
IHsKICAgIGludCBudW1fZm9udDsKICAgIFhGb250U3RydWN0ICoqZm9udF9zdHJ1Y3RfbGlzdDsK
ICAgIGNoYXIgKipmb250X25hbWVfbGlzdDsKfSBYT01Gb250SW5mbzsKCnR5cGVkZWYgc3RydWN0
IF9YSU0gKlhJTTsKdHlwZWRlZiBzdHJ1Y3QgX1hJQyAqWElDOwoKdHlwZWRlZiB2b2lkICgqWElN
UHJvYykoCgogICAgWElNLAogICAgWFBvaW50ZXIsCiAgICBYUG9pbnRlcgoKKTsKCnR5cGVkZWYg
aW50ICgqWElDUHJvYykoCgogICAgWElDLAogICAgWFBvaW50ZXIsCiAgICBYUG9pbnRlcgoKKTsK
CnR5cGVkZWYgdm9pZCAoKlhJRFByb2MpKAoKICAgIERpc3BsYXkqLAogICAgWFBvaW50ZXIsCiAg
ICBYUG9pbnRlcgoKKTsKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBYSU1TdHlsZTsKCnR5cGVkZWYg
c3RydWN0IHsKICAgIHVuc2lnbmVkIHNob3J0IGNvdW50X3N0eWxlczsKICAgIFhJTVN0eWxlICpz
dXBwb3J0ZWRfc3R5bGVzOwp9IFhJTVN0eWxlczsKIyAxMjM1ICIvdXNyL1gxMVI2L2luY2x1ZGUv
WDExL1hsaWIuaCIKdHlwZWRlZiB2b2lkICpYVmFOZXN0ZWRMaXN0OwoKCgoKdHlwZWRlZiBzdHJ1
Y3QgewogICAgWFBvaW50ZXIgY2xpZW50X2RhdGE7CiAgICBYSU1Qcm9jIGNhbGxiYWNrOwp9IFhJ
TUNhbGxiYWNrOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgWFBvaW50ZXIgY2xpZW50X2RhdGE7CiAg
ICBYSUNQcm9jIGNhbGxiYWNrOwp9IFhJQ0NhbGxiYWNrOwoKdHlwZWRlZiB1bnNpZ25lZCBsb25n
IFhJTUZlZWRiYWNrOwojIDEyNjIgIi91c3IvWDExUjYvaW5jbHVkZS9YMTEvWGxpYi5oIgp0eXBl
ZGVmIHN0cnVjdCBfWElNVGV4dCB7CiAgICB1bnNpZ25lZCBzaG9ydCBsZW5ndGg7CiAgICBYSU1G
ZWVkYmFjayAqZmVlZGJhY2s7CiAgICBpbnQgZW5jb2RpbmdfaXNfd2NoYXI7CiAgICB1bmlvbiB7
CiAgICAgICAgY2hhciAqbXVsdGlfYnl0ZTsKICAgICAgICB3Y2hhcl90ICp3aWRlX2NoYXI7CiAg
ICB9IHN0cmluZzsKfSBYSU1UZXh0OwoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIFhJTVByZWVkaXRT
dGF0ZTsKCgoKCgp0eXBlZGVmIHN0cnVjdCBfWElNUHJlZWRpdFN0YXRlTm90aWZ5Q2FsbGJhY2tT
dHJ1Y3QgewogICAgWElNUHJlZWRpdFN0YXRlIHN0YXRlOwp9IFhJTVByZWVkaXRTdGF0ZU5vdGlm
eUNhbGxiYWNrU3RydWN0OwoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIFhJTVJlc2V0U3RhdGU7CgoK
Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgWElNU3RyaW5nQ29udmVyc2lvbkZlZWRiYWNrOwojIDEy
OTYgIi91c3IvWDExUjYvaW5jbHVkZS9YMTEvWGxpYi5oIgp0eXBlZGVmIHN0cnVjdCBfWElNU3Ry
aW5nQ29udmVyc2lvblRleHQgewogICAgdW5zaWduZWQgc2hvcnQgbGVuZ3RoOwogICAgWElNU3Ry
aW5nQ29udmVyc2lvbkZlZWRiYWNrICpmZWVkYmFjazsKICAgIGludCBlbmNvZGluZ19pc193Y2hh
cjsKICAgIHVuaW9uIHsKICAgICAgICBjaGFyICptYnM7CiAgICAgICAgd2NoYXJfdCAqd2NzOwog
ICAgfSBzdHJpbmc7Cn0gWElNU3RyaW5nQ29udmVyc2lvblRleHQ7Cgp0eXBlZGVmIHVuc2lnbmVk
IHNob3J0IFhJTVN0cmluZ0NvbnZlcnNpb25Qb3NpdGlvbjsKCnR5cGVkZWYgdW5zaWduZWQgc2hv
cnQgWElNU3RyaW5nQ29udmVyc2lvblR5cGU7CgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQg
WElNU3RyaW5nQ29udmVyc2lvbk9wZXJhdGlvbjsKCgoKCnR5cGVkZWYgZW51bSB7CiAgICBYSU1G
b3J3YXJkQ2hhciwgWElNQmFja3dhcmRDaGFyLAogICAgWElNRm9yd2FyZFdvcmQsIFhJTUJhY2t3
YXJkV29yZCwKICAgIFhJTUNhcmV0VXAsIFhJTUNhcmV0RG93biwKICAgIFhJTU5leHRMaW5lLCBY
SU1QcmV2aW91c0xpbmUsCiAgICBYSU1MaW5lU3RhcnQsIFhJTUxpbmVFbmQsCiAgICBYSU1BYnNv
bHV0ZVBvc2l0aW9uLAogICAgWElNRG9udENoYW5nZQp9IFhJTUNhcmV0RGlyZWN0aW9uOwoKdHlw
ZWRlZiBzdHJ1Y3QgX1hJTVN0cmluZ0NvbnZlcnNpb25DYWxsYmFja1N0cnVjdCB7CiAgICBYSU1T
dHJpbmdDb252ZXJzaW9uUG9zaXRpb24gcG9zaXRpb247CiAgICBYSU1DYXJldERpcmVjdGlvbiBk
aXJlY3Rpb247CiAgICBYSU1TdHJpbmdDb252ZXJzaW9uT3BlcmF0aW9uIG9wZXJhdGlvbjsKICAg
IHVuc2lnbmVkIHNob3J0IGZhY3RvcjsKICAgIFhJTVN0cmluZ0NvbnZlcnNpb25UZXh0ICp0ZXh0
Owp9IFhJTVN0cmluZ0NvbnZlcnNpb25DYWxsYmFja1N0cnVjdDsKCnR5cGVkZWYgc3RydWN0IF9Y
SU1QcmVlZGl0RHJhd0NhbGxiYWNrU3RydWN0IHsKICAgIGludCBjYXJldDsKICAgIGludCBjaGdf
Zmlyc3Q7CiAgICBpbnQgY2hnX2xlbmd0aDsKICAgIFhJTVRleHQgKnRleHQ7Cn0gWElNUHJlZWRp
dERyYXdDYWxsYmFja1N0cnVjdDsKCnR5cGVkZWYgZW51bSB7CiAgICBYSU1Jc0ludmlzaWJsZSwK
ICAgIFhJTUlzUHJpbWFyeSwKICAgIFhJTUlzU2Vjb25kYXJ5Cn0gWElNQ2FyZXRTdHlsZTsKCnR5
cGVkZWYgc3RydWN0IF9YSU1QcmVlZGl0Q2FyZXRDYWxsYmFja1N0cnVjdCB7CiAgICBpbnQgcG9z
aXRpb247CiAgICBYSU1DYXJldERpcmVjdGlvbiBkaXJlY3Rpb247CiAgICBYSU1DYXJldFN0eWxl
IHN0eWxlOwp9IFhJTVByZWVkaXRDYXJldENhbGxiYWNrU3RydWN0OwoKdHlwZWRlZiBlbnVtIHsK
ICAgIFhJTVRleHRUeXBlLAogICAgWElNQml0bWFwVHlwZQp9IFhJTVN0YXR1c0RhdGFUeXBlOwoK
dHlwZWRlZiBzdHJ1Y3QgX1hJTVN0YXR1c0RyYXdDYWxsYmFja1N0cnVjdCB7CiAgICBYSU1TdGF0
dXNEYXRhVHlwZSB0eXBlOwogICAgdW5pb24gewogICAgICAgIFhJTVRleHQgKnRleHQ7CiAgICAg
ICAgUGl4bWFwIGJpdG1hcDsKICAgIH0gZGF0YTsKfSBYSU1TdGF0dXNEcmF3Q2FsbGJhY2tTdHJ1
Y3Q7Cgp0eXBlZGVmIHN0cnVjdCBfWElNSG90S2V5VHJpZ2dlciB7CiAgICBLZXlTeW0ga2V5c3lt
OwogICAgaW50IG1vZGlmaWVyOwogICAgaW50IG1vZGlmaWVyX21hc2s7Cn0gWElNSG90S2V5VHJp
Z2dlcjsKCnR5cGVkZWYgc3RydWN0IF9YSU1Ib3RLZXlUcmlnZ2VycyB7CiAgICBpbnQgbnVtX2hv
dF9rZXk7CiAgICBYSU1Ib3RLZXlUcmlnZ2VyICprZXk7Cn0gWElNSG90S2V5VHJpZ2dlcnM7Cgp0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgWElNSG90S2V5U3RhdGU7CgoKCgp0eXBlZGVmIHN0cnVjdCB7
CiAgICB1bnNpZ25lZCBzaG9ydCBjb3VudF92YWx1ZXM7CiAgICBjaGFyICoqc3VwcG9ydGVkX3Zh
bHVlczsKfSBYSU1WYWx1ZXNMaXN0OwoKZXh0ZXJuICJDIiB7CgoKCgoKZXh0ZXJuIGludCBfWGRl
YnVnOwoKZXh0ZXJuIFhGb250U3RydWN0ICpYTG9hZFF1ZXJ5Rm9udCgKCiAgICBEaXNwbGF5KiAs
CiAgICBjb25zdCBjaGFyKgoKKTsKCmV4dGVybiBYRm9udFN0cnVjdCAqWFF1ZXJ5Rm9udCgKCiAg
ICBEaXNwbGF5KiAsCiAgICBYSUQKCik7CgoKZXh0ZXJuIFhUaW1lQ29vcmQgKlhHZXRNb3Rpb25F
dmVudHMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFRpbWUgLAogICAgVGltZSAs
CiAgICBpbnQqCgopOwoKZXh0ZXJuIFhNb2RpZmllcktleW1hcCAqWERlbGV0ZU1vZGlmaWVybWFw
RW50cnkoCgogICAgWE1vZGlmaWVyS2V5bWFwKiAsCgogICAgdW5zaWduZWQgaW50ICwKCgoKICAg
IGludAoKKTsKCmV4dGVybiBYTW9kaWZpZXJLZXltYXAgKlhHZXRNb2RpZmllck1hcHBpbmcoCgog
ICAgRGlzcGxheSoKCik7CgpleHRlcm4gWE1vZGlmaWVyS2V5bWFwICpYSW5zZXJ0TW9kaWZpZXJt
YXBFbnRyeSgKCiAgICBYTW9kaWZpZXJLZXltYXAqICwKCiAgICB1bnNpZ25lZCBpbnQgLAoKCgog
ICAgaW50CgopOwoKZXh0ZXJuIFhNb2RpZmllcktleW1hcCAqWE5ld01vZGlmaWVybWFwKAoKICAg
IGludAoKKTsKCmV4dGVybiBYSW1hZ2UgKlhDcmVhdGVJbWFnZSgKCiAgICBEaXNwbGF5KiAsCiAg
ICBWaXN1YWwqICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGNo
YXIqICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgaW50ICwKICAg
IGludAoKKTsKZXh0ZXJuIGludCBYSW5pdEltYWdlKAoKICAgIFhJbWFnZSoKCik7CmV4dGVybiBY
SW1hZ2UgKlhHZXRJbWFnZSgKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBpbnQg
LAogICAgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5z
aWduZWQgbG9uZyAsCiAgICBpbnQKCik7CmV4dGVybiBYSW1hZ2UgKlhHZXRTdWJJbWFnZSgKCiAg
ICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2ln
bmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgbG9uZyAsCiAgICBpbnQg
LAogICAgWEltYWdlKiAsCiAgICBpbnQgLAogICAgaW50CgopOwoKCgoKZXh0ZXJuIERpc3BsYXkg
KlhPcGVuRGlzcGxheSgKCiAgICBjb25zdCBjaGFyKgoKKTsKCmV4dGVybiB2b2lkIFhybUluaXRp
YWxpemUoCgogICAgdm9pZAoKKTsKCmV4dGVybiBjaGFyICpYRmV0Y2hCeXRlcygKCiAgICBEaXNw
bGF5KiAsCiAgICBpbnQqCgopOwpleHRlcm4gY2hhciAqWEZldGNoQnVmZmVyKAoKICAgIERpc3Bs
YXkqICwKICAgIGludCogLAogICAgaW50CgopOwpleHRlcm4gY2hhciAqWEdldEF0b21OYW1lKAoK
ICAgIERpc3BsYXkqICwKICAgIEF0b20KCik7CmV4dGVybiBpbnQgWEdldEF0b21OYW1lcygKCiAg
ICBEaXNwbGF5KiAsCiAgICBBdG9tKiAsCiAgICBpbnQgLAogICAgY2hhcioqCgopOwpleHRlcm4g
Y2hhciAqWEdldERlZmF1bHQoCgogICAgRGlzcGxheSogLAogICAgY29uc3QgY2hhciogLAogICAg
Y29uc3QgY2hhcioKCik7CmV4dGVybiBjaGFyICpYRGlzcGxheU5hbWUoCgogICAgY29uc3QgY2hh
cioKCik7CmV4dGVybiBjaGFyICpYS2V5c3ltVG9TdHJpbmcoCgogICAgS2V5U3ltCgopOwoKZXh0
ZXJuIGludCAoKlhTeW5jaHJvbml6ZSgKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQKCikpKAoKICAg
IERpc3BsYXkqCgopOwpleHRlcm4gaW50ICgqWFNldEFmdGVyRnVuY3Rpb24oCgogICAgRGlzcGxh
eSogLAogICAgaW50ICgqKSAoCgogICAgICAgICAgICAgRGlzcGxheSoKCiAgICAgICAgICAgICkK
CikpKAoKICAgIERpc3BsYXkqCgopOwpleHRlcm4gQXRvbSBYSW50ZXJuQXRvbSgKCiAgICBEaXNw
bGF5KiAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBpbnQKCik7CmV4dGVybiBpbnQgWEludGVybkF0
b21zKAoKICAgIERpc3BsYXkqICwKICAgIGNoYXIqKiAsCiAgICBpbnQgLAogICAgaW50ICwKICAg
IEF0b20qCgopOwpleHRlcm4gQ29sb3JtYXAgWENvcHlDb2xvcm1hcEFuZEZyZWUoCgogICAgRGlz
cGxheSogLAogICAgQ29sb3JtYXAKCik7CmV4dGVybiBDb2xvcm1hcCBYQ3JlYXRlQ29sb3JtYXAo
CgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFZpc3VhbCogLAogICAgaW50CgopOwpl
eHRlcm4gQ3Vyc29yIFhDcmVhdGVQaXhtYXBDdXJzb3IoCgogICAgRGlzcGxheSogLAogICAgUGl4
bWFwICwKICAgIFBpeG1hcCAsCiAgICBYQ29sb3IqICwKICAgIFhDb2xvciogLAogICAgdW5zaWdu
ZWQgaW50ICwKICAgIHVuc2lnbmVkIGludAoKKTsKZXh0ZXJuIEN1cnNvciBYQ3JlYXRlR2x5cGhD
dXJzb3IoCgogICAgRGlzcGxheSogLAogICAgRm9udCAsCiAgICBGb250ICwKICAgIHVuc2lnbmVk
IGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgWENvbG9yIGNvbnN0ICogLAogICAgWENvbG9y
IGNvbnN0ICoKCik7CmV4dGVybiBDdXJzb3IgWENyZWF0ZUZvbnRDdXJzb3IoCgogICAgRGlzcGxh
eSogLAogICAgdW5zaWduZWQgaW50CgopOwpleHRlcm4gRm9udCBYTG9hZEZvbnQoCgogICAgRGlz
cGxheSogLAogICAgY29uc3QgY2hhcioKCik7CmV4dGVybiBHQyBYQ3JlYXRlR0MoCgogICAgRGlz
cGxheSogLAogICAgRHJhd2FibGUgLAogICAgdW5zaWduZWQgbG9uZyAsCiAgICBYR0NWYWx1ZXMq
CgopOwpleHRlcm4gR0NvbnRleHQgWEdDb250ZXh0RnJvbUdDKAoKICAgIEdDCgopOwpleHRlcm4g
dm9pZCBYRmx1c2hHQygKCiAgICBEaXNwbGF5KiAsCiAgICBHQwoKKTsKZXh0ZXJuIFBpeG1hcCBY
Q3JlYXRlUGl4bWFwKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIHVuc2lnbmVk
IGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50CgopOwpleHRlcm4gUGl4
bWFwIFhDcmVhdGVCaXRtYXBGcm9tRGF0YSgKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAs
CiAgICBjb25zdCBjaGFyKiAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50Cgop
OwpleHRlcm4gUGl4bWFwIFhDcmVhdGVQaXhtYXBGcm9tQml0bWFwRGF0YSgKCiAgICBEaXNwbGF5
KiAsCiAgICBEcmF3YWJsZSAsCiAgICBjaGFyKiAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5z
aWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGxvbmcgLAogICAgdW5zaWduZWQgbG9uZyAsCiAgICB1
bnNpZ25lZCBpbnQKCik7CmV4dGVybiBXaW5kb3cgWENyZWF0ZVNpbXBsZVdpbmRvdygKCiAgICBE
aXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBp
bnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBs
b25nICwKICAgIHVuc2lnbmVkIGxvbmcKCik7CmV4dGVybiBXaW5kb3cgWEdldFNlbGVjdGlvbk93
bmVyKAoKICAgIERpc3BsYXkqICwKICAgIEF0b20KCik7CmV4dGVybiBXaW5kb3cgWENyZWF0ZVdp
bmRvdygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIGludCAsCiAg
ICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAg
ICBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIFZpc3VhbCogLAogICAgdW5zaWduZWQgbG9u
ZyAsCiAgICBYU2V0V2luZG93QXR0cmlidXRlcyoKCik7CmV4dGVybiBDb2xvcm1hcCAqWExpc3RJ
bnN0YWxsZWRDb2xvcm1hcHMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGludCoK
Cik7CmV4dGVybiBjaGFyICoqWExpc3RGb250cygKCiAgICBEaXNwbGF5KiAsCiAgICBjb25zdCBj
aGFyKiAsCiAgICBpbnQgLAogICAgaW50KgoKKTsKZXh0ZXJuIGNoYXIgKipYTGlzdEZvbnRzV2l0
aEluZm8oCgogICAgRGlzcGxheSogLAogICAgY29uc3QgY2hhciogLAogICAgaW50ICwKICAgIGlu
dCogLAogICAgWEZvbnRTdHJ1Y3QqKgoKKTsKZXh0ZXJuIGNoYXIgKipYR2V0Rm9udFBhdGgoCgog
ICAgRGlzcGxheSogLAogICAgaW50KgoKKTsKZXh0ZXJuIGNoYXIgKipYTGlzdEV4dGVuc2lvbnMo
CgogICAgRGlzcGxheSogLAogICAgaW50KgoKKTsKZXh0ZXJuIEF0b20gKlhMaXN0UHJvcGVydGll
cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50KgoKKTsKZXh0ZXJuIFhIb3N0
QWRkcmVzcyAqWExpc3RIb3N0cygKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQqICwKICAgIGludCoK
Cik7CmV4dGVybiBLZXlTeW0gWEtleWNvZGVUb0tleXN5bSgKCiAgICBEaXNwbGF5KiAsCgogICAg
dW5zaWduZWQgaW50ICwKCgoKICAgIGludAoKKTsKZXh0ZXJuIEtleVN5bSBYTG9va3VwS2V5c3lt
KAoKICAgIFhLZXlFdmVudCogLAogICAgaW50CgopOwpleHRlcm4gS2V5U3ltICpYR2V0S2V5Ym9h
cmRNYXBwaW5nKAoKICAgIERpc3BsYXkqICwKCiAgICB1bnNpZ25lZCBpbnQgLAoKCgogICAgaW50
ICwKICAgIGludCoKCik7CmV4dGVybiBLZXlTeW0gWFN0cmluZ1RvS2V5c3ltKAoKICAgIGNvbnN0
IGNoYXIqCgopOwpleHRlcm4gbG9uZyBYTWF4UmVxdWVzdFNpemUoCgogICAgRGlzcGxheSoKCik7
CmV4dGVybiBsb25nIFhFeHRlbmRlZE1heFJlcXVlc3RTaXplKAoKICAgIERpc3BsYXkqCgopOwpl
eHRlcm4gY2hhciAqWFJlc291cmNlTWFuYWdlclN0cmluZygKCiAgICBEaXNwbGF5KgoKKTsKZXh0
ZXJuIGNoYXIgKlhTY3JlZW5SZXNvdXJjZVN0cmluZygKCiAgICAgICAgU2NyZWVuKgoKKTsKZXh0
ZXJuIHVuc2lnbmVkIGxvbmcgWERpc3BsYXlNb3Rpb25CdWZmZXJTaXplKAoKICAgIERpc3BsYXkq
CgopOwpleHRlcm4gVmlzdWFsSUQgWFZpc3VhbElERnJvbVZpc3VhbCgKCiAgICBWaXN1YWwqCgop
OwoKCgpleHRlcm4gaW50IFhJbml0VGhyZWFkcygKCiAgICB2b2lkCgopOwoKZXh0ZXJuIHZvaWQg
WExvY2tEaXNwbGF5KAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJuIHZvaWQgWFVubG9ja0Rpc3Bs
YXkoCgogICAgRGlzcGxheSoKCik7CgoKCmV4dGVybiBYRXh0Q29kZXMgKlhJbml0RXh0ZW5zaW9u
KAoKICAgIERpc3BsYXkqICwKICAgIGNvbnN0IGNoYXIqCgopOwoKZXh0ZXJuIFhFeHRDb2RlcyAq
WEFkZEV4dGVuc2lvbigKCiAgICBEaXNwbGF5KgoKKTsKZXh0ZXJuIFhFeHREYXRhICpYRmluZE9u
RXh0ZW5zaW9uTGlzdCgKCiAgICBYRXh0RGF0YSoqICwKICAgIGludAoKKTsKZXh0ZXJuIFhFeHRE
YXRhICoqWEVIZWFkT2ZFeHRlbnNpb25MaXN0KAoKICAgIFhFRGF0YU9iamVjdAoKKTsKCgpleHRl
cm4gV2luZG93IFhSb290V2luZG93KAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKTsKZXh0ZXJu
IFdpbmRvdyBYRGVmYXVsdFJvb3RXaW5kb3coCgogICAgRGlzcGxheSoKCik7CmV4dGVybiBXaW5k
b3cgWFJvb3RXaW5kb3dPZlNjcmVlbigKCiAgICBTY3JlZW4qCgopOwpleHRlcm4gVmlzdWFsICpY
RGVmYXVsdFZpc3VhbCgKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQKCik7CmV4dGVybiBWaXN1YWwg
KlhEZWZhdWx0VmlzdWFsT2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKKTsKZXh0ZXJuIEdDIFhEZWZh
dWx0R0MoCgogICAgRGlzcGxheSogLAogICAgaW50CgopOwpleHRlcm4gR0MgWERlZmF1bHRHQ09m
U2NyZWVuKAoKICAgIFNjcmVlbioKCik7CmV4dGVybiB1bnNpZ25lZCBsb25nIFhCbGFja1BpeGVs
KAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgWFdoaXRl
UGl4ZWwoCgogICAgRGlzcGxheSogLAogICAgaW50CgopOwpleHRlcm4gdW5zaWduZWQgbG9uZyBY
QWxsUGxhbmVzKAoKICAgIHZvaWQKCik7CmV4dGVybiB1bnNpZ25lZCBsb25nIFhCbGFja1BpeGVs
T2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgWFdoaXRlUGl4
ZWxPZlNjcmVlbigKCiAgICBTY3JlZW4qCgopOwpleHRlcm4gdW5zaWduZWQgbG9uZyBYTmV4dFJl
cXVlc3QoCgogICAgRGlzcGxheSoKCik7CmV4dGVybiB1bnNpZ25lZCBsb25nIFhMYXN0S25vd25S
ZXF1ZXN0UHJvY2Vzc2VkKAoKICAgIERpc3BsYXkqCgopOwpleHRlcm4gY2hhciAqWFNlcnZlclZl
bmRvcigKCiAgICBEaXNwbGF5KgoKKTsKZXh0ZXJuIGNoYXIgKlhEaXNwbGF5U3RyaW5nKAoKICAg
IERpc3BsYXkqCgopOwpleHRlcm4gQ29sb3JtYXAgWERlZmF1bHRDb2xvcm1hcCgKCiAgICBEaXNw
bGF5KiAsCiAgICBpbnQKCik7CmV4dGVybiBDb2xvcm1hcCBYRGVmYXVsdENvbG9ybWFwT2ZTY3Jl
ZW4oCgogICAgU2NyZWVuKgoKKTsKZXh0ZXJuIERpc3BsYXkgKlhEaXNwbGF5T2ZTY3JlZW4oCgog
ICAgU2NyZWVuKgoKKTsKZXh0ZXJuIFNjcmVlbiAqWFNjcmVlbk9mRGlzcGxheSgKCiAgICBEaXNw
bGF5KiAsCiAgICBpbnQKCik7CmV4dGVybiBTY3JlZW4gKlhEZWZhdWx0U2NyZWVuT2ZEaXNwbGF5
KAoKICAgIERpc3BsYXkqCgopOwpleHRlcm4gbG9uZyBYRXZlbnRNYXNrT2ZTY3JlZW4oCgogICAg
U2NyZWVuKgoKKTsKCmV4dGVybiBpbnQgWFNjcmVlbk51bWJlck9mU2NyZWVuKAoKICAgIFNjcmVl
bioKCik7Cgp0eXBlZGVmIGludCAoKlhFcnJvckhhbmRsZXIpICgKCiAgICBEaXNwbGF5KiAsCiAg
ICBYRXJyb3JFdmVudCoKCik7CgpleHRlcm4gWEVycm9ySGFuZGxlciBYU2V0RXJyb3JIYW5kbGVy
ICgKCiAgICBYRXJyb3JIYW5kbGVyCgopOwoKCnR5cGVkZWYgaW50ICgqWElPRXJyb3JIYW5kbGVy
KSAoCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gWElPRXJyb3JIYW5kbGVyIFhTZXRJT0Vycm9y
SGFuZGxlciAoCgogICAgWElPRXJyb3JIYW5kbGVyCgopOwoKCmV4dGVybiBYUGl4bWFwRm9ybWF0
VmFsdWVzICpYTGlzdFBpeG1hcEZvcm1hdHMoCgogICAgRGlzcGxheSogLAogICAgaW50KgoKKTsK
ZXh0ZXJuIGludCAqWExpc3REZXB0aHMoCgogICAgRGlzcGxheSogLAogICAgaW50ICwKICAgIGlu
dCoKCik7CgoKCmV4dGVybiBpbnQgWFJlY29uZmlndXJlV01XaW5kb3coCgogICAgRGlzcGxheSog
LAogICAgV2luZG93ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgWFdpbmRvd0No
YW5nZXMqCgopOwoKZXh0ZXJuIGludCBYR2V0V01Qcm90b2NvbHMoCgogICAgRGlzcGxheSogLAog
ICAgV2luZG93ICwKICAgIEF0b20qKiAsCiAgICBpbnQqCgopOwpleHRlcm4gaW50IFhTZXRXTVBy
b3RvY29scygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgQXRvbSogLAogICAgaW50
CgopOwpleHRlcm4gaW50IFhJY29uaWZ5V2luZG93KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRv
dyAsCiAgICBpbnQKCik7CmV4dGVybiBpbnQgWFdpdGhkcmF3V2luZG93KAoKICAgIERpc3BsYXkq
ICwKICAgIFdpbmRvdyAsCiAgICBpbnQKCik7CmV4dGVybiBpbnQgWEdldENvbW1hbmQoCgogICAg
RGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGNoYXIqKiogLAogICAgaW50KgoKKTsKZXh0ZXJu
IGludCBYR2V0V01Db2xvcm1hcFdpbmRvd3MoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwK
ICAgIFdpbmRvdyoqICwKICAgIGludCoKCik7CmV4dGVybiBpbnQgWFNldFdNQ29sb3JtYXBXaW5k
b3dzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBXaW5kb3cqICwKICAgIGludAoK
KTsKZXh0ZXJuIHZvaWQgWEZyZWVTdHJpbmdMaXN0KAoKICAgIGNoYXIqKgoKKTsKZXh0ZXJuIGlu
dCBYU2V0VHJhbnNpZW50Rm9ySGludCgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAg
V2luZG93CgopOwoKCgpleHRlcm4gaW50IFhBY3RpdmF0ZVNjcmVlblNhdmVyKAoKICAgIERpc3Bs
YXkqCgopOwoKZXh0ZXJuIGludCBYQWRkSG9zdCgKCiAgICBEaXNwbGF5KiAsCiAgICBYSG9zdEFk
ZHJlc3MqCgopOwoKZXh0ZXJuIGludCBYQWRkSG9zdHMoCgogICAgRGlzcGxheSogLAogICAgWEhv
c3RBZGRyZXNzKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhBZGRUb0V4dGVuc2lvbkxpc3Qo
CgogICAgc3RydWN0IF9YRXh0RGF0YSoqICwKICAgIFhFeHREYXRhKgoKKTsKCmV4dGVybiBpbnQg
WEFkZFRvU2F2ZVNldCgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50
IFhBbGxvY0NvbG9yKAoKICAgIERpc3BsYXkqICwKICAgIENvbG9ybWFwICwKICAgIFhDb2xvcioK
Cik7CgpleHRlcm4gaW50IFhBbGxvY0NvbG9yQ2VsbHMoCgogICAgRGlzcGxheSogLAogICAgQ29s
b3JtYXAgLAogICAgaW50ICwKICAgIHVuc2lnbmVkIGxvbmcqICwKICAgIHVuc2lnbmVkIGludCAs
CiAgICB1bnNpZ25lZCBsb25nKiAsCiAgICB1bnNpZ25lZCBpbnQKCik7CgpleHRlcm4gaW50IFhB
bGxvY0NvbG9yUGxhbmVzKAoKICAgIERpc3BsYXkqICwKICAgIENvbG9ybWFwICwKICAgIGludCAs
CiAgICB1bnNpZ25lZCBsb25nKiAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICBp
bnQgLAogICAgdW5zaWduZWQgbG9uZyogLAogICAgdW5zaWduZWQgbG9uZyogLAogICAgdW5zaWdu
ZWQgbG9uZyoKCik7CgpleHRlcm4gaW50IFhBbGxvY05hbWVkQ29sb3IoCgogICAgRGlzcGxheSog
LAogICAgQ29sb3JtYXAgLAogICAgY29uc3QgY2hhciogLAogICAgWENvbG9yKiAsCiAgICBYQ29s
b3IqCgopOwoKZXh0ZXJuIGludCBYQWxsb3dFdmVudHMoCgogICAgRGlzcGxheSogLAogICAgaW50
ICwKICAgIFRpbWUKCik7CgpleHRlcm4gaW50IFhBdXRvUmVwZWF0T2ZmKAoKICAgIERpc3BsYXkq
CgopOwoKZXh0ZXJuIGludCBYQXV0b1JlcGVhdE9uKAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJu
IGludCBYQmVsbCgKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhCaXRt
YXBCaXRPcmRlcigKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiBpbnQgWEJpdG1hcFBhZCgKCiAg
ICBEaXNwbGF5KgoKKTsKCmV4dGVybiBpbnQgWEJpdG1hcFVuaXQoCgogICAgRGlzcGxheSoKCik7
CgpleHRlcm4gaW50IFhDZWxsc09mU2NyZWVuKAoKICAgIFNjcmVlbioKCik7CgpleHRlcm4gaW50
IFhDaGFuZ2VBY3RpdmVQb2ludGVyR3JhYigKCiAgICBEaXNwbGF5KiAsCiAgICB1bnNpZ25lZCBp
bnQgLAogICAgQ3Vyc29yICwKICAgIFRpbWUKCik7CgpleHRlcm4gaW50IFhDaGFuZ2VHQygKCiAg
ICBEaXNwbGF5KiAsCiAgICBHQyAsCiAgICB1bnNpZ25lZCBsb25nICwKICAgIFhHQ1ZhbHVlcyoK
Cik7CgpleHRlcm4gaW50IFhDaGFuZ2VLZXlib2FyZENvbnRyb2woCgogICAgRGlzcGxheSogLAog
ICAgdW5zaWduZWQgbG9uZyAsCiAgICBYS2V5Ym9hcmRDb250cm9sKgoKKTsKCmV4dGVybiBpbnQg
WENoYW5nZUtleWJvYXJkTWFwcGluZygKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQgLAogICAgaW50
ICwKICAgIEtleVN5bSogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYQ2hhbmdlUG9pbnRlckNv
bnRyb2woCgogICAgRGlzcGxheSogLAogICAgaW50ICwKICAgIGludCAsCiAgICBpbnQgLAogICAg
aW50ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWENoYW5nZVByb3BlcnR5KAoKICAgIERpc3Bs
YXkqICwKICAgIFdpbmRvdyAsCiAgICBBdG9tICwKICAgIEF0b20gLAogICAgaW50ICwKICAgIGlu
dCAsCiAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhD
aGFuZ2VTYXZlU2V0KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQKCik7Cgpl
eHRlcm4gaW50IFhDaGFuZ2VXaW5kb3dBdHRyaWJ1dGVzKAoKICAgIERpc3BsYXkqICwKICAgIFdp
bmRvdyAsCiAgICB1bnNpZ25lZCBsb25nICwKICAgIFhTZXRXaW5kb3dBdHRyaWJ1dGVzKgoKKTsK
CmV4dGVybiBpbnQgWENoZWNrSWZFdmVudCgKCiAgICBEaXNwbGF5KiAsCiAgICBYRXZlbnQqICwK
ICAgIGludCAoKikgKAoKICAgICAgICAgICAgICAgRGlzcGxheSogLAogICAgICAgICAgICAgICBY
RXZlbnQqICwKICAgICAgICAgICAgICAgWFBvaW50ZXIKCiAgICAgICAgICAgICApICwKICAgIFhQ
b2ludGVyCgopOwoKZXh0ZXJuIGludCBYQ2hlY2tNYXNrRXZlbnQoCgogICAgRGlzcGxheSogLAog
ICAgbG9uZyAsCiAgICBYRXZlbnQqCgopOwoKZXh0ZXJuIGludCBYQ2hlY2tUeXBlZEV2ZW50KAoK
ICAgIERpc3BsYXkqICwKICAgIGludCAsCiAgICBYRXZlbnQqCgopOwoKZXh0ZXJuIGludCBYQ2hl
Y2tUeXBlZFdpbmRvd0V2ZW50KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQg
LAogICAgWEV2ZW50KgoKKTsKCmV4dGVybiBpbnQgWENoZWNrV2luZG93RXZlbnQoCgogICAgRGlz
cGxheSogLAogICAgV2luZG93ICwKICAgIGxvbmcgLAogICAgWEV2ZW50KgoKKTsKCmV4dGVybiBp
bnQgWENpcmN1bGF0ZVN1YndpbmRvd3MoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAg
IGludAoKKTsKCmV4dGVybiBpbnQgWENpcmN1bGF0ZVN1YndpbmRvd3NEb3duKAoKICAgIERpc3Bs
YXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWENpcmN1bGF0ZVN1YndpbmRvd3NVcCgK
CiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhDbGVhckFyZWEoCgog
ICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5zaWdu
ZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhDbGVh
cldpbmRvdygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhDbG9z
ZURpc3BsYXkoCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gaW50IFhDb25maWd1cmVXaW5kb3co
CgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBYV2lu
ZG93Q2hhbmdlcyoKCik7CgpleHRlcm4gaW50IFhDb25uZWN0aW9uTnVtYmVyKAoKICAgIERpc3Bs
YXkqCgopOwoKZXh0ZXJuIGludCBYQ29udmVydFNlbGVjdGlvbigKCiAgICBEaXNwbGF5KiAsCiAg
ICBBdG9tICwKICAgIEF0b20gLAogICAgQXRvbSAsCiAgICBXaW5kb3cgLAogICAgVGltZQoKKTsK
CmV4dGVybiBpbnQgWENvcHlBcmVhKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAg
IERyYXdhYmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5zaWduZWQgaW50
ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBY
Q29weUdDKAoKICAgIERpc3BsYXkqICwKICAgIEdDICwKICAgIHVuc2lnbmVkIGxvbmcgLAogICAg
R0MKCik7CgpleHRlcm4gaW50IFhDb3B5UGxhbmUoCgogICAgRGlzcGxheSogLAogICAgRHJhd2Fi
bGUgLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICB1bnNp
Z25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5z
aWduZWQgbG9uZwoKKTsKCmV4dGVybiBpbnQgWERlZmF1bHREZXB0aCgKCiAgICBEaXNwbGF5KiAs
CiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhEZWZhdWx0RGVwdGhPZlNjcmVlbigKCiAgICBTY3Jl
ZW4qCgopOwoKZXh0ZXJuIGludCBYRGVmYXVsdFNjcmVlbigKCiAgICBEaXNwbGF5KgoKKTsKCmV4
dGVybiBpbnQgWERlZmluZUN1cnNvcigKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAg
Q3Vyc29yCgopOwoKZXh0ZXJuIGludCBYRGVsZXRlUHJvcGVydHkoCgogICAgRGlzcGxheSogLAog
ICAgV2luZG93ICwKICAgIEF0b20KCik7CgpleHRlcm4gaW50IFhEZXN0cm95V2luZG93KAoKICAg
IERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWERlc3Ryb3lTdWJ3aW5kb3dz
KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWERvZXNCYWNraW5n
U3RvcmUoCgogICAgU2NyZWVuKgoKKTsKCmV4dGVybiBpbnQgWERvZXNTYXZlVW5kZXJzKAoKICAg
IFNjcmVlbioKCik7CgpleHRlcm4gaW50IFhEaXNhYmxlQWNjZXNzQ29udHJvbCgKCiAgICBEaXNw
bGF5KgoKKTsKCgpleHRlcm4gaW50IFhEaXNwbGF5Q2VsbHMoCgogICAgRGlzcGxheSogLAogICAg
aW50CgopOwoKZXh0ZXJuIGludCBYRGlzcGxheUhlaWdodCgKCiAgICBEaXNwbGF5KiAsCiAgICBp
bnQKCik7CgpleHRlcm4gaW50IFhEaXNwbGF5SGVpZ2h0TU0oCgogICAgRGlzcGxheSogLAogICAg
aW50CgopOwoKZXh0ZXJuIGludCBYRGlzcGxheUtleWNvZGVzKAoKICAgIERpc3BsYXkqICwKICAg
IGludCogLAogICAgaW50KgoKKTsKCmV4dGVybiBpbnQgWERpc3BsYXlQbGFuZXMoCgogICAgRGlz
cGxheSogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRGlzcGxheVdpZHRoKAoKICAgIERpc3Bs
YXkqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWERpc3BsYXlXaWR0aE1NKAoKICAgIERpc3Bs
YXkqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWERyYXdBcmMoCgogICAgRGlzcGxheSogLAog
ICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBp
bnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50
IFhEcmF3QXJjcygKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBY
QXJjKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhEcmF3SW1hZ2VTdHJpbmcoCgogICAgRGlz
cGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICBj
b25zdCBjaGFyKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhEcmF3SW1hZ2VTdHJpbmcxNigK
CiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50
ICwKICAgIGNvbnN0IFhDaGFyMmIqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWERyYXdMaW5l
KAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBp
bnQgLAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWERyYXdMaW5lcygKCiAgICBE
aXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBYUG9pbnQqICwKICAgIGludCAs
CiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhEcmF3UG9pbnQoCgogICAgRGlzcGxheSogLAogICAg
RHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWERy
YXdQb2ludHMoCgogICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgWFBv
aW50KiAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRHJhd1JlY3RhbmdsZSgK
CiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50
ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQKCik7CgpleHRlcm4gaW50IFhE
cmF3UmVjdGFuZ2xlcygKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAg
ICBYUmVjdGFuZ2xlKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhEcmF3U2VnbWVudHMoCgog
ICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgWFNlZ21lbnQqICwKICAg
IGludAoKKTsKCmV4dGVybiBpbnQgWERyYXdTdHJpbmcoCgogICAgRGlzcGxheSogLAogICAgRHJh
d2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICBjb25zdCBjaGFyKiAsCiAg
ICBpbnQKCik7CgpleHRlcm4gaW50IFhEcmF3U3RyaW5nMTYoCgogICAgRGlzcGxheSogLAogICAg
RHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICBjb25zdCBYQ2hhcjJi
KiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhEcmF3VGV4dCgKCiAgICBEaXNwbGF5KiAsCiAg
ICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIFhUZXh0SXRlbSog
LAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRHJhd1RleHQxNigKCiAgICBEaXNwbGF5KiAsCiAg
ICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIFhUZXh0SXRlbTE2
KiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhFbmFibGVBY2Nlc3NDb250cm9sKAoKICAgIERp
c3BsYXkqCgopOwoKZXh0ZXJuIGludCBYRXZlbnRzUXVldWVkKAoKICAgIERpc3BsYXkqICwKICAg
IGludAoKKTsKCmV4dGVybiBpbnQgWEZldGNoTmFtZSgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5k
b3cgLAogICAgY2hhcioqCgopOwoKZXh0ZXJuIGludCBYRmlsbEFyYygKCiAgICBEaXNwbGF5KiAs
CiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVk
IGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBp
bnQgWEZpbGxBcmNzKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAg
IFhBcmMqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWEZpbGxQb2x5Z29uKAoKICAgIERpc3Bs
YXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIFhQb2ludCogLAogICAgaW50ICwKICAg
IGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhGaWxsUmVjdGFuZ2xlKAoKICAgIERpc3Bs
YXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5z
aWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludAoKKTsKCmV4dGVybiBpbnQgWEZpbGxSZWN0YW5n
bGVzKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIFhSZWN0YW5n
bGUqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWEZsdXNoKAoKICAgIERpc3BsYXkqCgopOwoK
ZXh0ZXJuIGludCBYRm9yY2VTY3JlZW5TYXZlcigKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQKCik7
CgpleHRlcm4gaW50IFhGcmVlKAoKICAgIHZvaWQqCgopOwoKZXh0ZXJuIGludCBYRnJlZUNvbG9y
bWFwKAoKICAgIERpc3BsYXkqICwKICAgIENvbG9ybWFwCgopOwoKZXh0ZXJuIGludCBYRnJlZUNv
bG9ycygKCiAgICBEaXNwbGF5KiAsCiAgICBDb2xvcm1hcCAsCiAgICB1bnNpZ25lZCBsb25nKiAs
CiAgICBpbnQgLAogICAgdW5zaWduZWQgbG9uZwoKKTsKCmV4dGVybiBpbnQgWEZyZWVDdXJzb3Io
CgogICAgRGlzcGxheSogLAogICAgQ3Vyc29yCgopOwoKZXh0ZXJuIGludCBYRnJlZUV4dGVuc2lv
bkxpc3QoCgogICAgY2hhcioqCgopOwoKZXh0ZXJuIGludCBYRnJlZUZvbnQoCgogICAgRGlzcGxh
eSogLAogICAgWEZvbnRTdHJ1Y3QqCgopOwoKZXh0ZXJuIGludCBYRnJlZUZvbnRJbmZvKAoKICAg
IGNoYXIqKiAsCiAgICBYRm9udFN0cnVjdCogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRnJl
ZUZvbnROYW1lcygKCiAgICBjaGFyKioKCik7CgpleHRlcm4gaW50IFhGcmVlRm9udFBhdGgoCgog
ICAgY2hhcioqCgopOwoKZXh0ZXJuIGludCBYRnJlZUdDKAoKICAgIERpc3BsYXkqICwKICAgIEdD
CgopOwoKZXh0ZXJuIGludCBYRnJlZU1vZGlmaWVybWFwKAoKICAgIFhNb2RpZmllcktleW1hcCoK
Cik7CgpleHRlcm4gaW50IFhGcmVlUGl4bWFwKAoKICAgIERpc3BsYXkqICwKICAgIFBpeG1hcAoK
KTsKCmV4dGVybiBpbnQgWEdlb21ldHJ5KAoKICAgIERpc3BsYXkqICwKICAgIGludCAsCiAgICBj
b25zdCBjaGFyKiAsCiAgICBjb25zdCBjaGFyKiAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5z
aWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGlu
dCogLAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIGludCoKCik7CgpleHRlcm4gaW50IFhHZXRF
cnJvckRhdGFiYXNlVGV4dCgKCiAgICBEaXNwbGF5KiAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBj
b25zdCBjaGFyKiAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBjaGFyKiAsCiAgICBpbnQKCik7Cgpl
eHRlcm4gaW50IFhHZXRFcnJvclRleHQoCgogICAgRGlzcGxheSogLAogICAgaW50ICwKICAgIGNo
YXIqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWEdldEZvbnRQcm9wZXJ0eSgKCiAgICBYRm9u
dFN0cnVjdCogLAogICAgQXRvbSAsCiAgICB1bnNpZ25lZCBsb25nKgoKKTsKCmV4dGVybiBpbnQg
WEdldEdDVmFsdWVzKAoKICAgIERpc3BsYXkqICwKICAgIEdDICwKICAgIHVuc2lnbmVkIGxvbmcg
LAogICAgWEdDVmFsdWVzKgoKKTsKCmV4dGVybiBpbnQgWEdldEdlb21ldHJ5KAoKICAgIERpc3Bs
YXkqICwKICAgIERyYXdhYmxlICwKICAgIFdpbmRvdyogLAogICAgaW50KiAsCiAgICBpbnQqICwK
ICAgIHVuc2lnbmVkIGludCogLAogICAgdW5zaWduZWQgaW50KiAsCiAgICB1bnNpZ25lZCBpbnQq
ICwKICAgIHVuc2lnbmVkIGludCoKCik7CgpleHRlcm4gaW50IFhHZXRJY29uTmFtZSgKCiAgICBE
aXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgY2hhcioqCgopOwoKZXh0ZXJuIGludCBYR2V0SW5w
dXRGb2N1cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cqICwKICAgIGludCoKCik7CgpleHRl
cm4gaW50IFhHZXRLZXlib2FyZENvbnRyb2woCgogICAgRGlzcGxheSogLAogICAgWEtleWJvYXJk
U3RhdGUqCgopOwoKZXh0ZXJuIGludCBYR2V0UG9pbnRlckNvbnRyb2woCgogICAgRGlzcGxheSog
LAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIGludCoKCik7CgpleHRlcm4gaW50IFhHZXRQb2lu
dGVyTWFwcGluZygKCiAgICBEaXNwbGF5KiAsCiAgICB1bnNpZ25lZCBjaGFyKiAsCiAgICBpbnQK
Cik7CgpleHRlcm4gaW50IFhHZXRTY3JlZW5TYXZlcigKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQq
ICwKICAgIGludCogLAogICAgaW50KiAsCiAgICBpbnQqCgopOwoKZXh0ZXJuIGludCBYR2V0VHJh
bnNpZW50Rm9ySGludCgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgV2luZG93KgoK
KTsKCmV4dGVybiBpbnQgWEdldFdpbmRvd1Byb3BlcnR5KAoKICAgIERpc3BsYXkqICwKICAgIFdp
bmRvdyAsCiAgICBBdG9tICwKICAgIGxvbmcgLAogICAgbG9uZyAsCiAgICBpbnQgLAogICAgQXRv
bSAsCiAgICBBdG9tKiAsCiAgICBpbnQqICwKICAgIHVuc2lnbmVkIGxvbmcqICwKICAgIHVuc2ln
bmVkIGxvbmcqICwKICAgIHVuc2lnbmVkIGNoYXIqKgoKKTsKCmV4dGVybiBpbnQgWEdldFdpbmRv
d0F0dHJpYnV0ZXMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFhXaW5kb3dBdHRy
aWJ1dGVzKgoKKTsKCmV4dGVybiBpbnQgWEdyYWJCdXR0b24oCgogICAgRGlzcGxheSogLAogICAg
dW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBXaW5kb3cgLAogICAgaW50ICwK
ICAgIHVuc2lnbmVkIGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIFdpbmRvdyAsCiAgICBD
dXJzb3IKCik7CgpleHRlcm4gaW50IFhHcmFiS2V5KAoKICAgIERpc3BsYXkqICwKICAgIGludCAs
CiAgICB1bnNpZ25lZCBpbnQgLAogICAgV2luZG93ICwKICAgIGludCAsCiAgICBpbnQgLAogICAg
aW50CgopOwoKZXh0ZXJuIGludCBYR3JhYktleWJvYXJkKAoKICAgIERpc3BsYXkqICwKICAgIFdp
bmRvdyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICBUaW1lCgopOwoKZXh0ZXJu
IGludCBYR3JhYlBvaW50ZXIoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGludCAs
CiAgICB1bnNpZ25lZCBpbnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICBXaW5kb3cgLAogICAg
Q3Vyc29yICwKICAgIFRpbWUKCik7CgpleHRlcm4gaW50IFhHcmFiU2VydmVyKAoKICAgIERpc3Bs
YXkqCgopOwoKZXh0ZXJuIGludCBYSGVpZ2h0TU1PZlNjcmVlbigKCiAgICBTY3JlZW4qCgopOwoK
ZXh0ZXJuIGludCBYSGVpZ2h0T2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKKTsKCmV4dGVybiBpbnQg
WElmRXZlbnQoCgogICAgRGlzcGxheSogLAogICAgWEV2ZW50KiAsCiAgICBpbnQgKCopICgKCiAg
ICAgICAgICAgICAgIERpc3BsYXkqICwKICAgICAgICAgICAgICAgWEV2ZW50KiAsCiAgICAgICAg
ICAgICAgIFhQb2ludGVyCgogICAgICAgICAgICAgKSAsCiAgICBYUG9pbnRlcgoKKTsKCmV4dGVy
biBpbnQgWEltYWdlQnl0ZU9yZGVyKAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJuIGludCBYSW5z
dGFsbENvbG9ybWFwKAoKICAgIERpc3BsYXkqICwKICAgIENvbG9ybWFwCgopOwoKZXh0ZXJuIEtl
eUNvZGUgWEtleXN5bVRvS2V5Y29kZSgKCiAgICBEaXNwbGF5KiAsCiAgICBLZXlTeW0KCik7Cgpl
eHRlcm4gaW50IFhLaWxsQ2xpZW50KAoKICAgIERpc3BsYXkqICwKICAgIFhJRAoKKTsKCmV4dGVy
biBpbnQgWExvb2t1cENvbG9yKAoKICAgIERpc3BsYXkqICwKICAgIENvbG9ybWFwICwKICAgIGNv
bnN0IGNoYXIqICwKICAgIFhDb2xvciogLAogICAgWENvbG9yKgoKKTsKCmV4dGVybiBpbnQgWExv
d2VyV2luZG93KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWE1h
cFJhaXNlZCgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhNYXBT
dWJ3aW5kb3dzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWE1h
cFdpbmRvdygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhNYXNr
RXZlbnQoCgogICAgRGlzcGxheSogLAogICAgbG9uZyAsCiAgICBYRXZlbnQqCgopOwoKZXh0ZXJu
IGludCBYTWF4Q21hcHNPZlNjcmVlbigKCiAgICBTY3JlZW4qCgopOwoKZXh0ZXJuIGludCBYTWlu
Q21hcHNPZlNjcmVlbigKCiAgICBTY3JlZW4qCgopOwoKZXh0ZXJuIGludCBYTW92ZVJlc2l6ZVdp
bmRvdygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIGludCAsCiAg
ICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50CgopOwoKZXh0ZXJuIGludCBYTW92ZVdp
bmRvdygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIGludAoKKTsK
CmV4dGVybiBpbnQgWE5leHRFdmVudCgKCiAgICBEaXNwbGF5KiAsCiAgICBYRXZlbnQqCgopOwoK
ZXh0ZXJuIGludCBYTm9PcCgKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiBpbnQgWFBhcnNlQ29s
b3IoCgogICAgRGlzcGxheSogLAogICAgQ29sb3JtYXAgLAogICAgY29uc3QgY2hhciogLAogICAg
WENvbG9yKgoKKTsKCmV4dGVybiBpbnQgWFBhcnNlR2VvbWV0cnkoCgogICAgY29uc3QgY2hhciog
LAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIHVuc2lnbmVkIGludCogLAogICAgdW5zaWduZWQg
aW50KgoKKTsKCmV4dGVybiBpbnQgWFBlZWtFdmVudCgKCiAgICBEaXNwbGF5KiAsCiAgICBYRXZl
bnQqCgopOwoKZXh0ZXJuIGludCBYUGVla0lmRXZlbnQoCgogICAgRGlzcGxheSogLAogICAgWEV2
ZW50KiAsCiAgICBpbnQgKCopICgKCiAgICAgICAgICAgICAgIERpc3BsYXkqICwKICAgICAgICAg
ICAgICAgWEV2ZW50KiAsCiAgICAgICAgICAgICAgIFhQb2ludGVyCgogICAgICAgICAgICAgKSAs
CiAgICBYUG9pbnRlcgoKKTsKCmV4dGVybiBpbnQgWFBlbmRpbmcoCgogICAgRGlzcGxheSoKCik7
CgpleHRlcm4gaW50IFhQbGFuZXNPZlNjcmVlbigKCiAgICBTY3JlZW4qCgoKKTsKCmV4dGVybiBp
bnQgWFByb3RvY29sUmV2aXNpb24oCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gaW50IFhQcm90
b2NvbFZlcnNpb24oCgogICAgRGlzcGxheSoKCik7CgoKZXh0ZXJuIGludCBYUHV0QmFja0V2ZW50
KAoKICAgIERpc3BsYXkqICwKICAgIFhFdmVudCoKCik7CgpleHRlcm4gaW50IFhQdXRJbWFnZSgK
CiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBYSW1hZ2UqICwKICAg
IGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAog
ICAgdW5zaWduZWQgaW50CgopOwoKZXh0ZXJuIGludCBYUUxlbmd0aCgKCiAgICBEaXNwbGF5KgoK
KTsKCmV4dGVybiBpbnQgWFF1ZXJ5QmVzdEN1cnNvcigKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3
YWJsZSAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVk
IGludCogLAogICAgdW5zaWduZWQgaW50KgoKKTsKCmV4dGVybiBpbnQgWFF1ZXJ5QmVzdFNpemUo
CgogICAgRGlzcGxheSogLAogICAgaW50ICwKICAgIERyYXdhYmxlICwKICAgIHVuc2lnbmVkIGlu
dCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50KiAsCiAgICB1bnNpZ25lZCBp
bnQqCgopOwoKZXh0ZXJuIGludCBYUXVlcnlCZXN0U3RpcHBsZSgKCiAgICBEaXNwbGF5KiAsCiAg
ICBEcmF3YWJsZSAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVu
c2lnbmVkIGludCogLAogICAgdW5zaWduZWQgaW50KgoKKTsKCmV4dGVybiBpbnQgWFF1ZXJ5QmVz
dFRpbGUoCgogICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgdW5zaWduZWQgaW50ICwK
ICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQqICwKICAgIHVuc2lnbmVkIGludCoK
Cik7CgpleHRlcm4gaW50IFhRdWVyeUNvbG9yKAoKICAgIERpc3BsYXkqICwKICAgIENvbG9ybWFw
ICwKICAgIFhDb2xvcioKCik7CgpleHRlcm4gaW50IFhRdWVyeUNvbG9ycygKCiAgICBEaXNwbGF5
KiAsCiAgICBDb2xvcm1hcCAsCiAgICBYQ29sb3IqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQg
WFF1ZXJ5RXh0ZW5zaW9uKAoKICAgIERpc3BsYXkqICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGlu
dCogLAogICAgaW50KiAsCiAgICBpbnQqCgopOwoKZXh0ZXJuIGludCBYUXVlcnlLZXltYXAoCgog
ICAgRGlzcGxheSogLAogICAgY2hhciBbMzJdCgopOwoKZXh0ZXJuIGludCBYUXVlcnlQb2ludGVy
KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBXaW5kb3cqICwKICAgIFdpbmRvdyog
LAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIGludCogLAogICAgaW50KiAsCiAgICB1bnNpZ25l
ZCBpbnQqCgopOwoKZXh0ZXJuIGludCBYUXVlcnlUZXh0RXh0ZW50cygKCiAgICBEaXNwbGF5KiAs
CiAgICBYSUQgLAogICAgY29uc3QgY2hhciogLAogICAgaW50ICwKICAgIGludCogLAogICAgaW50
KiAsCiAgICBpbnQqICwKICAgIFhDaGFyU3RydWN0KgoKKTsKCmV4dGVybiBpbnQgWFF1ZXJ5VGV4
dEV4dGVudHMxNigKCiAgICBEaXNwbGF5KiAsCiAgICBYSUQgLAogICAgY29uc3QgWENoYXIyYiog
LAogICAgaW50ICwKICAgIGludCogLAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIFhDaGFyU3Ry
dWN0KgoKKTsKCmV4dGVybiBpbnQgWFF1ZXJ5VHJlZSgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5k
b3cgLAogICAgV2luZG93KiAsCiAgICBXaW5kb3cqICwKICAgIFdpbmRvdyoqICwKICAgIHVuc2ln
bmVkIGludCoKCik7CgpleHRlcm4gaW50IFhSYWlzZVdpbmRvdygKCiAgICBEaXNwbGF5KiAsCiAg
ICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhSZWFkQml0bWFwRmlsZSgKCiAgICBEaXNwbGF5KiAs
CiAgICBEcmF3YWJsZSAsCiAgICBjb25zdCBjaGFyKiAsCiAgICB1bnNpZ25lZCBpbnQqICwKICAg
IHVuc2lnbmVkIGludCogLAogICAgUGl4bWFwKiAsCiAgICBpbnQqICwKICAgIGludCoKCik7Cgpl
eHRlcm4gaW50IFhSZWFkQml0bWFwRmlsZURhdGEoCgogICAgY29uc3QgY2hhciogLAogICAgdW5z
aWduZWQgaW50KiAsCiAgICB1bnNpZ25lZCBpbnQqICwKICAgIHVuc2lnbmVkIGNoYXIqKiAsCiAg
ICBpbnQqICwKICAgIGludCoKCik7CgpleHRlcm4gaW50IFhSZWJpbmRLZXlzeW0oCgogICAgRGlz
cGxheSogLAogICAgS2V5U3ltICwKICAgIEtleVN5bSogLAogICAgaW50ICwKICAgIGNvbnN0IHVu
c2lnbmVkIGNoYXIqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFJlY29sb3JDdXJzb3IoCgog
ICAgRGlzcGxheSogLAogICAgQ3Vyc29yICwKICAgIFhDb2xvciogLAogICAgWENvbG9yKgoKKTsK
CmV4dGVybiBpbnQgWFJlZnJlc2hLZXlib2FyZE1hcHBpbmcoCgogICAgWE1hcHBpbmdFdmVudCoK
Cik7CgpleHRlcm4gaW50IFhSZW1vdmVGcm9tU2F2ZVNldCgKCiAgICBEaXNwbGF5KiAsCiAgICBX
aW5kb3cKCik7CgpleHRlcm4gaW50IFhSZW1vdmVIb3N0KAoKICAgIERpc3BsYXkqICwKICAgIFhI
b3N0QWRkcmVzcyoKCik7CgpleHRlcm4gaW50IFhSZW1vdmVIb3N0cygKCiAgICBEaXNwbGF5KiAs
CiAgICBYSG9zdEFkZHJlc3MqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFJlcGFyZW50V2lu
ZG93KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBXaW5kb3cgLAogICAgaW50ICwK
ICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFJlc2V0U2NyZWVuU2F2ZXIoCgogICAgRGlzcGxheSoK
Cik7CgpleHRlcm4gaW50IFhSZXNpemVXaW5kb3coCgogICAgRGlzcGxheSogLAogICAgV2luZG93
ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQKCik7CgpleHRlcm4gaW50IFhS
ZXN0YWNrV2luZG93cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cqICwKICAgIGludAoKKTsK
CmV4dGVybiBpbnQgWFJvdGF0ZUJ1ZmZlcnMoCgogICAgRGlzcGxheSogLAogICAgaW50CgopOwoK
ZXh0ZXJuIGludCBYUm90YXRlV2luZG93UHJvcGVydGllcygKCiAgICBEaXNwbGF5KiAsCiAgICBX
aW5kb3cgLAogICAgQXRvbSogLAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFNj
cmVlbkNvdW50KAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJuIGludCBYU2VsZWN0SW5wdXQoCgog
ICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGxvbmcKCik7CgpleHRlcm4gaW50IFhTZW5k
RXZlbnQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGludCAsCiAgICBsb25nICwK
ICAgIFhFdmVudCoKCik7CgpleHRlcm4gaW50IFhTZXRBY2Nlc3NDb250cm9sKAoKICAgIERpc3Bs
YXkqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFNldEFyY01vZGUoCgogICAgRGlzcGxheSog
LAogICAgR0MgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0QmFja2dyb3VuZCgKCiAgICBE
aXNwbGF5KiAsCiAgICBHQyAsCiAgICB1bnNpZ25lZCBsb25nCgopOwoKZXh0ZXJuIGludCBYU2V0
Q2xpcE1hc2soCgogICAgRGlzcGxheSogLAogICAgR0MgLAogICAgUGl4bWFwCgopOwoKZXh0ZXJu
IGludCBYU2V0Q2xpcE9yaWdpbigKCiAgICBEaXNwbGF5KiAsCiAgICBHQyAsCiAgICBpbnQgLAog
ICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0Q2xpcFJlY3RhbmdsZXMoCgogICAgRGlzcGxheSog
LAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBpbnQg
LAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0Q2xvc2VEb3duTW9kZSgKCiAgICBEaXNwbGF5
KiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXRDb21tYW5kKAoKICAgIERpc3BsYXkqICwK
ICAgIFdpbmRvdyAsCiAgICBjaGFyKiogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0RGFz
aGVzKAoKICAgIERpc3BsYXkqICwKICAgIEdDICwKICAgIGludCAsCiAgICBjb25zdCBjaGFyKiAs
CiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXRGaWxsUnVsZSgKCiAgICBEaXNwbGF5KiAsCiAg
ICBHQyAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXRGaWxsU3R5bGUoCgogICAgRGlzcGxh
eSogLAogICAgR0MgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0Rm9udCgKCiAgICBEaXNw
bGF5KiAsCiAgICBHQyAsCiAgICBGb250CgopOwoKZXh0ZXJuIGludCBYU2V0Rm9udFBhdGgoCgog
ICAgRGlzcGxheSogLAogICAgY2hhcioqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFNldEZv
cmVncm91bmQoCgogICAgRGlzcGxheSogLAogICAgR0MgLAogICAgdW5zaWduZWQgbG9uZwoKKTsK
CmV4dGVybiBpbnQgWFNldEZ1bmN0aW9uKAoKICAgIERpc3BsYXkqICwKICAgIEdDICwKICAgIGlu
dAoKKTsKCmV4dGVybiBpbnQgWFNldEdyYXBoaWNzRXhwb3N1cmVzKAoKICAgIERpc3BsYXkqICwK
ICAgIEdDICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFNldEljb25OYW1lKAoKICAgIERpc3Bs
YXkqICwKICAgIFdpbmRvdyAsCiAgICBjb25zdCBjaGFyKgoKKTsKCmV4dGVybiBpbnQgWFNldElu
cHV0Rm9jdXMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGludCAsCiAgICBUaW1l
CgopOwoKZXh0ZXJuIGludCBYU2V0TGluZUF0dHJpYnV0ZXMoCgogICAgRGlzcGxheSogLAogICAg
R0MgLAogICAgdW5zaWduZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgaW50CgopOwoK
ZXh0ZXJuIGludCBYU2V0TW9kaWZpZXJNYXBwaW5nKAoKICAgIERpc3BsYXkqICwKICAgIFhNb2Rp
ZmllcktleW1hcCoKCik7CgpleHRlcm4gaW50IFhTZXRQbGFuZU1hc2soCgogICAgRGlzcGxheSog
LAogICAgR0MgLAogICAgdW5zaWduZWQgbG9uZwoKKTsKCmV4dGVybiBpbnQgWFNldFBvaW50ZXJN
YXBwaW5nKAoKICAgIERpc3BsYXkqICwKICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqICwKICAgIGlu
dAoKKTsKCmV4dGVybiBpbnQgWFNldFNjcmVlblNhdmVyKAoKICAgIERpc3BsYXkqICwKICAgIGlu
dCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFNldFNlbGVj
dGlvbk93bmVyKAoKICAgIERpc3BsYXkqICwKICAgIEF0b20gLAogICAgV2luZG93ICwKICAgIFRp
bWUKCik7CgpleHRlcm4gaW50IFhTZXRTdGF0ZSgKCiAgICBEaXNwbGF5KiAsCiAgICBHQyAsCiAg
ICB1bnNpZ25lZCBsb25nICwKICAgIHVuc2lnbmVkIGxvbmcgLAogICAgaW50ICwKICAgIHVuc2ln
bmVkIGxvbmcKCik7CgpleHRlcm4gaW50IFhTZXRTdGlwcGxlKAoKICAgIERpc3BsYXkqICwKICAg
IEdDICwKICAgIFBpeG1hcAoKKTsKCmV4dGVybiBpbnQgWFNldFN1YndpbmRvd01vZGUoCgogICAg
RGlzcGxheSogLAogICAgR0MgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0VFNPcmlnaW4o
CgogICAgRGlzcGxheSogLAogICAgR0MgLAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBp
bnQgWFNldFRpbGUoCgogICAgRGlzcGxheSogLAogICAgR0MgLAogICAgUGl4bWFwCgopOwoKZXh0
ZXJuIGludCBYU2V0V2luZG93QmFja2dyb3VuZCgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cg
LAogICAgdW5zaWduZWQgbG9uZwoKKTsKCmV4dGVybiBpbnQgWFNldFdpbmRvd0JhY2tncm91bmRQ
aXhtYXAoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFBpeG1hcAoKKTsKCmV4dGVy
biBpbnQgWFNldFdpbmRvd0JvcmRlcigKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAg
dW5zaWduZWQgbG9uZwoKKTsKCmV4dGVybiBpbnQgWFNldFdpbmRvd0JvcmRlclBpeG1hcCgKCiAg
ICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgUGl4bWFwCgopOwoKZXh0ZXJuIGludCBYU2V0
V2luZG93Qm9yZGVyV2lkdGgoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIHVuc2ln
bmVkIGludAoKKTsKCmV4dGVybiBpbnQgWFNldFdpbmRvd0NvbG9ybWFwKAoKICAgIERpc3BsYXkq
ICwKICAgIFdpbmRvdyAsCiAgICBDb2xvcm1hcAoKKTsKCmV4dGVybiBpbnQgWFN0b3JlQnVmZmVy
KAoKICAgIERpc3BsYXkqICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludCAsCiAgICBpbnQKCik7
CgpleHRlcm4gaW50IFhTdG9yZUJ5dGVzKAoKICAgIERpc3BsYXkqICwKICAgIGNvbnN0IGNoYXIq
ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFN0b3JlQ29sb3IoCgogICAgRGlzcGxheSogLAog
ICAgQ29sb3JtYXAgLAogICAgWENvbG9yKgoKKTsKCmV4dGVybiBpbnQgWFN0b3JlQ29sb3JzKAoK
ICAgIERpc3BsYXkqICwKICAgIENvbG9ybWFwICwKICAgIFhDb2xvciogLAogICAgaW50CgopOwoK
ZXh0ZXJuIGludCBYU3RvcmVOYW1lKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBj
b25zdCBjaGFyKgoKKTsKCmV4dGVybiBpbnQgWFN0b3JlTmFtZWRDb2xvcigKCiAgICBEaXNwbGF5
KiAsCiAgICBDb2xvcm1hcCAsCiAgICBjb25zdCBjaGFyKiAsCiAgICB1bnNpZ25lZCBsb25nICwK
ICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFN5bmMoCgogICAgRGlzcGxheSogLAogICAgaW50Cgop
OwoKZXh0ZXJuIGludCBYVGV4dEV4dGVudHMoCgogICAgWEZvbnRTdHJ1Y3QqICwKICAgIGNvbnN0
IGNoYXIqICwKICAgIGludCAsCiAgICBpbnQqICwKICAgIGludCogLAogICAgaW50KiAsCiAgICBY
Q2hhclN0cnVjdCoKCik7CgpleHRlcm4gaW50IFhUZXh0RXh0ZW50czE2KAoKICAgIFhGb250U3Ry
dWN0KiAsCiAgICBjb25zdCBYQ2hhcjJiKiAsCiAgICBpbnQgLAogICAgaW50KiAsCiAgICBpbnQq
ICwKICAgIGludCogLAogICAgWENoYXJTdHJ1Y3QqCgopOwoKZXh0ZXJuIGludCBYVGV4dFdpZHRo
KAoKICAgIFhGb250U3RydWN0KiAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBpbnQKCik7CgpleHRl
cm4gaW50IFhUZXh0V2lkdGgxNigKCiAgICBYRm9udFN0cnVjdCogLAogICAgY29uc3QgWENoYXIy
YiogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYVHJhbnNsYXRlQ29vcmRpbmF0ZXMoCgogICAg
RGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgaW50ICwK
ICAgIGludCogLAogICAgaW50KiAsCiAgICBXaW5kb3cqCgopOwoKZXh0ZXJuIGludCBYVW5kZWZp
bmVDdXJzb3IoCgogICAgRGlzcGxheSogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYVW5n
cmFiQnV0dG9uKAoKICAgIERpc3BsYXkqICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25l
ZCBpbnQgLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYVW5ncmFiS2V5KAoKICAgIERpc3Bs
YXkqICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgV2luZG93CgopOwoKZXh0ZXJu
IGludCBYVW5ncmFiS2V5Ym9hcmQoCgogICAgRGlzcGxheSogLAogICAgVGltZQoKKTsKCmV4dGVy
biBpbnQgWFVuZ3JhYlBvaW50ZXIoCgogICAgRGlzcGxheSogLAogICAgVGltZQoKKTsKCmV4dGVy
biBpbnQgWFVuZ3JhYlNlcnZlcigKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiBpbnQgWFVuaW5z
dGFsbENvbG9ybWFwKAoKICAgIERpc3BsYXkqICwKICAgIENvbG9ybWFwCgopOwoKZXh0ZXJuIGlu
dCBYVW5sb2FkRm9udCgKCiAgICBEaXNwbGF5KiAsCiAgICBGb250CgopOwoKZXh0ZXJuIGludCBY
VW5tYXBTdWJ3aW5kb3dzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBp
bnQgWFVubWFwV2luZG93KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBp
bnQgWFZlbmRvclJlbGVhc2UoCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gaW50IFhXYXJwUG9p
bnRlcigKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgV2luZG93ICwKICAgIGludCAs
CiAgICBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBpbnQg
LAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYV2lkdGhNTU9mU2NyZWVuKAoKICAgIFNjcmVlbioK
Cik7CgpleHRlcm4gaW50IFhXaWR0aE9mU2NyZWVuKAoKICAgIFNjcmVlbioKCik7CgpleHRlcm4g
aW50IFhXaW5kb3dFdmVudCgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgbG9uZyAs
CiAgICBYRXZlbnQqCgopOwoKZXh0ZXJuIGludCBYV3JpdGVCaXRtYXBGaWxlKAoKICAgIERpc3Bs
YXkqICwKICAgIGNvbnN0IGNoYXIqICwKICAgIFBpeG1hcCAsCiAgICB1bnNpZ25lZCBpbnQgLAog
ICAgdW5zaWduZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTdXBw
b3J0c0xvY2FsZSAodm9pZCk7CgpleHRlcm4gY2hhciAqWFNldExvY2FsZU1vZGlmaWVycygKICAg
IGNvbnN0IGNoYXIqCik7CgpleHRlcm4gWE9NIFhPcGVuT00oCgogICAgRGlzcGxheSogLAogICAg
c3RydWN0IF9Ycm1IYXNoQnVja2V0UmVjKiAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBjb25zdCBj
aGFyKgoKKTsKCmV4dGVybiBpbnQgWENsb3NlT00oCgogICAgWE9NCgopOwoKZXh0ZXJuIGNoYXIg
KlhTZXRPTVZhbHVlcygKCiAgICBYT00gLAogICAgLi4uCgopOwoKZXh0ZXJuIGNoYXIgKlhHZXRP
TVZhbHVlcygKCiAgICBYT00gLAogICAgLi4uCgopOwoKZXh0ZXJuIERpc3BsYXkgKlhEaXNwbGF5
T2ZPTSgKCiAgICBYT00KCik7CgpleHRlcm4gY2hhciAqWExvY2FsZU9mT00oCgogICAgWE9NCgop
OwoKZXh0ZXJuIFhPQyBYQ3JlYXRlT0MoCgogICAgWE9NICwKICAgIC4uLgoKKTsKCmV4dGVybiB2
b2lkIFhEZXN0cm95T0MoCgogICAgWE9DCgopOwoKZXh0ZXJuIFhPTSBYT01PZk9DKAoKICAgIFhP
QwoKKTsKCmV4dGVybiBjaGFyICpYU2V0T0NWYWx1ZXMoCgogICAgWE9DICwKICAgIC4uLgoKKTsK
CmV4dGVybiBjaGFyICpYR2V0T0NWYWx1ZXMoCgogICAgWE9DICwKICAgIC4uLgoKKTsKCmV4dGVy
biBYRm9udFNldCBYQ3JlYXRlRm9udFNldCgKCiAgICBEaXNwbGF5KiAsCiAgICBjb25zdCBjaGFy
KiAsCiAgICBjaGFyKioqICwKICAgIGludCogLAogICAgY2hhcioqCgopOwoKZXh0ZXJuIHZvaWQg
WEZyZWVGb250U2V0KAoKICAgIERpc3BsYXkqICwKICAgIFhGb250U2V0CgopOwoKZXh0ZXJuIGlu
dCBYRm9udHNPZkZvbnRTZXQoCgogICAgWEZvbnRTZXQgLAogICAgWEZvbnRTdHJ1Y3QqKiogLAog
ICAgY2hhcioqKgoKKTsKCmV4dGVybiBjaGFyICpYQmFzZUZvbnROYW1lTGlzdE9mRm9udFNldCgK
CiAgICBYRm9udFNldAoKKTsKCmV4dGVybiBjaGFyICpYTG9jYWxlT2ZGb250U2V0KAoKICAgIFhG
b250U2V0CgopOwoKZXh0ZXJuIGludCBYQ29udGV4dERlcGVuZGVudERyYXdpbmcoCgogICAgWEZv
bnRTZXQKCik7CgpleHRlcm4gaW50IFhEaXJlY3Rpb25hbERlcGVuZGVudERyYXdpbmcoCgogICAg
WEZvbnRTZXQKCik7CgpleHRlcm4gaW50IFhDb250ZXh0dWFsRHJhd2luZygKCiAgICBYRm9udFNl
dAoKKTsKCmV4dGVybiBYRm9udFNldEV4dGVudHMgKlhFeHRlbnRzT2ZGb250U2V0KAoKICAgIFhG
b250U2V0CgopOwoKZXh0ZXJuIGludCBYbWJUZXh0RXNjYXBlbWVudCgKCiAgICBYRm9udFNldCAs
CiAgICBjb25zdCBjaGFyKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFh3Y1RleHRFc2NhcGVt
ZW50KAoKICAgIFhGb250U2V0ICwKICAgIGNvbnN0IHdjaGFyX3QqICwKICAgIGludAoKKTsKCmV4
dGVybiBpbnQgWHV0ZjhUZXh0RXNjYXBlbWVudCgKCiAgICBYRm9udFNldCAsCiAgICBjb25zdCBj
aGFyKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhtYlRleHRFeHRlbnRzKAoKICAgIFhGb250
U2V0ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludCAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBY
UmVjdGFuZ2xlKgoKKTsKCmV4dGVybiBpbnQgWHdjVGV4dEV4dGVudHMoCgogICAgWEZvbnRTZXQg
LAogICAgY29uc3Qgd2NoYXJfdCogLAogICAgaW50ICwKICAgIFhSZWN0YW5nbGUqICwKICAgIFhS
ZWN0YW5nbGUqCgopOwoKZXh0ZXJuIGludCBYdXRmOFRleHRFeHRlbnRzKAoKICAgIFhGb250U2V0
ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludCAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBYUmVj
dGFuZ2xlKgoKKTsKCmV4dGVybiBpbnQgWG1iVGV4dFBlckNoYXJFeHRlbnRzKAoKICAgIFhGb250
U2V0ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludCAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBY
UmVjdGFuZ2xlKiAsCiAgICBpbnQgLAogICAgaW50KiAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBY
UmVjdGFuZ2xlKgoKKTsKCmV4dGVybiBpbnQgWHdjVGV4dFBlckNoYXJFeHRlbnRzKAoKICAgIFhG
b250U2V0ICwKICAgIGNvbnN0IHdjaGFyX3QqICwKICAgIGludCAsCiAgICBYUmVjdGFuZ2xlKiAs
CiAgICBYUmVjdGFuZ2xlKiAsCiAgICBpbnQgLAogICAgaW50KiAsCiAgICBYUmVjdGFuZ2xlKiAs
CiAgICBYUmVjdGFuZ2xlKgoKKTsKCmV4dGVybiBpbnQgWHV0ZjhUZXh0UGVyQ2hhckV4dGVudHMo
CgogICAgWEZvbnRTZXQgLAogICAgY29uc3QgY2hhciogLAogICAgaW50ICwKICAgIFhSZWN0YW5n
bGUqICwKICAgIFhSZWN0YW5nbGUqICwKICAgIGludCAsCiAgICBpbnQqICwKICAgIFhSZWN0YW5n
bGUqICwKICAgIFhSZWN0YW5nbGUqCgopOwoKZXh0ZXJuIHZvaWQgWG1iRHJhd1RleHQoCgogICAg
RGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAg
ICBYbWJUZXh0SXRlbSogLAogICAgaW50CgopOwoKZXh0ZXJuIHZvaWQgWHdjRHJhd1RleHQoCgog
ICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAs
CiAgICBYd2NUZXh0SXRlbSogLAogICAgaW50CgopOwoKZXh0ZXJuIHZvaWQgWHV0ZjhEcmF3VGV4
dCgKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBpbnQgLAogICAg
aW50ICwKICAgIFhtYlRleHRJdGVtKiAsCiAgICBpbnQKCik7CgpleHRlcm4gdm9pZCBYbWJEcmF3
U3RyaW5nKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIFhGb250U2V0ICwKICAg
IEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgY29uc3QgY2hhciogLAogICAgaW50CgopOwoK
ZXh0ZXJuIHZvaWQgWHdjRHJhd1N0cmluZygKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAs
CiAgICBYRm9udFNldCAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGNvbnN0IHdj
aGFyX3QqICwKICAgIGludAoKKTsKCmV4dGVybiB2b2lkIFh1dGY4RHJhd1N0cmluZygKCiAgICBE
aXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBYRm9udFNldCAsCiAgICBHQyAsCiAgICBpbnQg
LAogICAgaW50ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludAoKKTsKCmV4dGVybiB2b2lkIFht
YkRyYXdJbWFnZVN0cmluZygKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBYRm9u
dFNldCAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGNvbnN0IGNoYXIqICwKICAg
IGludAoKKTsKCmV4dGVybiB2b2lkIFh3Y0RyYXdJbWFnZVN0cmluZygKCiAgICBEaXNwbGF5KiAs
CiAgICBEcmF3YWJsZSAsCiAgICBYRm9udFNldCAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50
ICwKICAgIGNvbnN0IHdjaGFyX3QqICwKICAgIGludAoKKTsKCmV4dGVybiB2b2lkIFh1dGY4RHJh
d0ltYWdlU3RyaW5nKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIFhGb250U2V0
ICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgY29uc3QgY2hhciogLAogICAgaW50
CgopOwoKZXh0ZXJuIFhJTSBYT3BlbklNKAoKICAgIERpc3BsYXkqICwKICAgIHN0cnVjdCBfWHJt
SGFzaEJ1Y2tldFJlYyogLAogICAgY2hhciogLAogICAgY2hhcioKCik7CgpleHRlcm4gaW50IFhD
bG9zZUlNKAoKICAgIFhJTQoKKTsKCmV4dGVybiBjaGFyICpYR2V0SU1WYWx1ZXMoCgogICAgWElN
ICwgLi4uCgopOwoKZXh0ZXJuIGNoYXIgKlhTZXRJTVZhbHVlcygKCiAgICBYSU0gLCAuLi4KCik7
CgpleHRlcm4gRGlzcGxheSAqWERpc3BsYXlPZklNKAoKICAgIFhJTQoKKTsKCmV4dGVybiBjaGFy
ICpYTG9jYWxlT2ZJTSgKCiAgICBYSU0KCik7CgpleHRlcm4gWElDIFhDcmVhdGVJQygKCiAgICBY
SU0gLCAuLi4KCik7CgpleHRlcm4gdm9pZCBYRGVzdHJveUlDKAoKICAgIFhJQwoKKTsKCmV4dGVy
biB2b2lkIFhTZXRJQ0ZvY3VzKAoKICAgIFhJQwoKKTsKCmV4dGVybiB2b2lkIFhVbnNldElDRm9j
dXMoCgogICAgWElDCgopOwoKZXh0ZXJuIHdjaGFyX3QgKlh3Y1Jlc2V0SUMoCgogICAgWElDCgop
OwoKZXh0ZXJuIGNoYXIgKlhtYlJlc2V0SUMoCgogICAgWElDCgopOwoKZXh0ZXJuIGNoYXIgKlh1
dGY4UmVzZXRJQygKCiAgICBYSUMKCik7CgpleHRlcm4gY2hhciAqWFNldElDVmFsdWVzKAoKICAg
IFhJQyAsIC4uLgoKKTsKCmV4dGVybiBjaGFyICpYR2V0SUNWYWx1ZXMoCgogICAgWElDICwgLi4u
CgopOwoKZXh0ZXJuIFhJTSBYSU1PZklDKAoKICAgIFhJQwoKKTsKCmV4dGVybiBpbnQgWEZpbHRl
ckV2ZW50KAoKICAgIFhFdmVudCogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYbWJMb29r
dXBTdHJpbmcoCgogICAgWElDICwKICAgIFhLZXlQcmVzc2VkRXZlbnQqICwKICAgIGNoYXIqICwK
ICAgIGludCAsCiAgICBLZXlTeW0qICwKICAgIGludCoKCik7CgpleHRlcm4gaW50IFh3Y0xvb2t1
cFN0cmluZygKCiAgICBYSUMgLAogICAgWEtleVByZXNzZWRFdmVudCogLAogICAgd2NoYXJfdCog
LAogICAgaW50ICwKICAgIEtleVN5bSogLAogICAgaW50KgoKKTsKCmV4dGVybiBpbnQgWHV0ZjhM
b29rdXBTdHJpbmcoCgogICAgWElDICwKICAgIFhLZXlQcmVzc2VkRXZlbnQqICwKICAgIGNoYXIq
ICwKICAgIGludCAsCiAgICBLZXlTeW0qICwKICAgIGludCoKCik7CgpleHRlcm4gWFZhTmVzdGVk
TGlzdCBYVmFDcmVhdGVOZXN0ZWRMaXN0KAoKICAgIGludCAsIC4uLgoKKTsKCgoKZXh0ZXJuIGlu
dCBYUmVnaXN0ZXJJTUluc3RhbnRpYXRlQ2FsbGJhY2soCgogICAgRGlzcGxheSogLAogICAgc3Ry
dWN0IF9Ycm1IYXNoQnVja2V0UmVjKiAsCiAgICBjaGFyKiAsCiAgICBjaGFyKiAsCiAgICBYSURQ
cm9jICwKICAgIFhQb2ludGVyCgopOwoKZXh0ZXJuIGludCBYVW5yZWdpc3RlcklNSW5zdGFudGlh
dGVDYWxsYmFjaygKCiAgICBEaXNwbGF5KiAsCiAgICBzdHJ1Y3QgX1hybUhhc2hCdWNrZXRSZWMq
ICwKICAgIGNoYXIqICwKICAgIGNoYXIqICwKICAgIFhJRFByb2MgLAogICAgWFBvaW50ZXIKCik7
Cgp0eXBlZGVmIHZvaWQgKCpYQ29ubmVjdGlvbldhdGNoUHJvYykoCgogICAgRGlzcGxheSogLAog
ICAgWFBvaW50ZXIgLAogICAgaW50ICwKICAgIGludCAsCiAgICBYUG9pbnRlcioKCik7CgoKZXh0
ZXJuIGludCBYSW50ZXJuYWxDb25uZWN0aW9uTnVtYmVycygKCiAgICBEaXNwbGF5KiAsCiAgICBp
bnQqKiAsCiAgICBpbnQqCgopOwoKZXh0ZXJuIHZvaWQgWFByb2Nlc3NJbnRlcm5hbENvbm5lY3Rp
b24oCgogICAgRGlzcGxheSogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYQWRkQ29ubmVjdGlv
bldhdGNoKAoKICAgIERpc3BsYXkqICwKICAgIFhDb25uZWN0aW9uV2F0Y2hQcm9jICwKICAgIFhQ
b2ludGVyCgopOwoKZXh0ZXJuIHZvaWQgWFJlbW92ZUNvbm5lY3Rpb25XYXRjaCgKCiAgICBEaXNw
bGF5KiAsCiAgICBYQ29ubmVjdGlvbldhdGNoUHJvYyAsCiAgICBYUG9pbnRlcgoKKTsKCmV4dGVy
biB2b2lkIFhTZXRBdXRob3JpemF0aW9uKAoKICAgIGNoYXIgKiAsCiAgICBpbnQgLAogICAgY2hh
ciAqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgX1htYnRvd2MoCgogICAgd2NoYXJfdCAqICwK
CgoKCiAgICBjaGFyICogLAogICAgaW50CgoKKTsKCmV4dGVybiBpbnQgX1h3Y3RvbWIoCgogICAg
Y2hhciAqICwKICAgIHdjaGFyX3QKCik7Cgp9CiMgNjAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9w
bHVnaW4vbnNwbHVnaW5kZWZzLmgiIDIKIyAxICIvdXNyL1gxMVI2L2luY2x1ZGUvWDExL1h1dGls
LmgiIDEKIyA3NCAiL3Vzci9YMTFSNi9pbmNsdWRlL1gxMS9YdXRpbC5oIgp0eXBlZGVmIHN0cnVj
dCB7CiAgICAgICAgbG9uZyBmbGFnczsKICAgICAgICBpbnQgeCwgeTsKICAgICAgICBpbnQgd2lk
dGgsIGhlaWdodDsKICAgICAgICBpbnQgbWluX3dpZHRoLCBtaW5faGVpZ2h0OwogICAgICAgIGlu
dCBtYXhfd2lkdGgsIG1heF9oZWlnaHQ7CiAgICAgICAgaW50IHdpZHRoX2luYywgaGVpZ2h0X2lu
YzsKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgaW50IHg7CiAgICAgICAgICAgICAg
ICBpbnQgeTsKICAgICAgICB9IG1pbl9hc3BlY3QsIG1heF9hc3BlY3Q7CiAgICAgICAgaW50IGJh
c2Vfd2lkdGgsIGJhc2VfaGVpZ2h0OwogICAgICAgIGludCB3aW5fZ3Jhdml0eTsKfSBYU2l6ZUhp
bnRzOwojIDExMiAiL3Vzci9YMTFSNi9pbmNsdWRlL1gxMS9YdXRpbC5oIgp0eXBlZGVmIHN0cnVj
dCB7CiAgICAgICAgbG9uZyBmbGFnczsKICAgICAgICBpbnQgaW5wdXQ7CgogICAgICAgIGludCBp
bml0aWFsX3N0YXRlOwogICAgICAgIFBpeG1hcCBpY29uX3BpeG1hcDsKICAgICAgICBXaW5kb3cg
aWNvbl93aW5kb3c7CiAgICAgICAgaW50IGljb25feCwgaWNvbl95OwogICAgICAgIFBpeG1hcCBp
Y29uX21hc2s7CiAgICAgICAgWElEIHdpbmRvd19ncm91cDsKCn0gWFdNSGludHM7CiMgMTU2ICIv
dXNyL1gxMVI2L2luY2x1ZGUvWDExL1h1dGlsLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgIHVuc2ln
bmVkIGNoYXIgKnZhbHVlOwogICAgQXRvbSBlbmNvZGluZzsKICAgIGludCBmb3JtYXQ7CiAgICB1
bnNpZ25lZCBsb25nIG5pdGVtczsKfSBYVGV4dFByb3BlcnR5OwoKCgoKCnR5cGVkZWYgZW51bSB7
CiAgICBYU3RyaW5nU3R5bGUsCiAgICBYQ29tcG91bmRUZXh0U3R5bGUsCiAgICBYVGV4dFN0eWxl
LAogICAgWFN0ZElDQ1RleHRTdHlsZSwKCiAgICBYVVRGOFN0cmluZ1N0eWxlCn0gWElDQ0VuY29k
aW5nU3R5bGU7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IG1pbl93aWR0aCwgbWluX2hl
aWdodDsKICAgICAgICBpbnQgbWF4X3dpZHRoLCBtYXhfaGVpZ2h0OwogICAgICAgIGludCB3aWR0
aF9pbmMsIGhlaWdodF9pbmM7Cn0gWEljb25TaXplOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAg
IGNoYXIgKnJlc19uYW1lOwogICAgICAgIGNoYXIgKnJlc19jbGFzczsKfSBYQ2xhc3NIaW50Owoj
IDIwNSAiL3Vzci9YMTFSNi9pbmNsdWRlL1gxMS9YdXRpbC5oIgp0eXBlZGVmIHN0cnVjdCBfWENv
bXBvc2VTdGF0dXMgewogICAgWFBvaW50ZXIgY29tcG9zZV9wdHI7CiAgICBpbnQgY2hhcnNfbWF0
Y2hlZDsKfSBYQ29tcG9zZVN0YXR1czsKIyAyNDAgIi91c3IvWDExUjYvaW5jbHVkZS9YMTEvWHV0
aWwuaCIKdHlwZWRlZiBzdHJ1Y3QgX1hSZWdpb24gKlJlZ2lvbjsKIyAyNTQgIi91c3IvWDExUjYv
aW5jbHVkZS9YMTEvWHV0aWwuaCIKdHlwZWRlZiBzdHJ1Y3QgewogIFZpc3VhbCAqdmlzdWFsOwog
IFZpc3VhbElEIHZpc3VhbGlkOwogIGludCBzY3JlZW47CiAgaW50IGRlcHRoOwoKICBpbnQgY19j
bGFzczsKCgoKICB1bnNpZ25lZCBsb25nIHJlZF9tYXNrOwogIHVuc2lnbmVkIGxvbmcgZ3JlZW5f
bWFzazsKICB1bnNpZ25lZCBsb25nIGJsdWVfbWFzazsKICBpbnQgY29sb3JtYXBfc2l6ZTsKICBp
bnQgYml0c19wZXJfcmdiOwp9IFhWaXN1YWxJbmZvOwojIDI4NyAiL3Vzci9YMTFSNi9pbmNsdWRl
L1gxMS9YdXRpbC5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgQ29sb3JtYXAgY29sb3JtYXA7
CiAgICAgICAgdW5zaWduZWQgbG9uZyByZWRfbWF4OwogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVk
X211bHQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBncmVlbl9tYXg7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBncmVlbl9tdWx0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgYmx1ZV9tYXg7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBibHVlX211bHQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBiYXNlX3BpeGVs
OwogICAgICAgIFZpc3VhbElEIHZpc3VhbGlkOwogICAgICAgIFhJRCBraWxsaWQ7Cn0gWFN0YW5k
YXJkQ29sb3JtYXA7CiMgMzI0ICIvdXNyL1gxMVI2L2luY2x1ZGUvWDExL1h1dGlsLmgiCnR5cGVk
ZWYgaW50IFhDb250ZXh0OwoKCgoKZXh0ZXJuICJDIiB7CgoKCmV4dGVybiBYQ2xhc3NIaW50ICpY
QWxsb2NDbGFzc0hpbnQgKAoKICAgIHZvaWQKCik7CgpleHRlcm4gWEljb25TaXplICpYQWxsb2NJ
Y29uU2l6ZSAoCgogICAgdm9pZAoKKTsKCmV4dGVybiBYU2l6ZUhpbnRzICpYQWxsb2NTaXplSGlu
dHMgKAoKICAgIHZvaWQKCik7CgpleHRlcm4gWFN0YW5kYXJkQ29sb3JtYXAgKlhBbGxvY1N0YW5k
YXJkQ29sb3JtYXAgKAoKICAgIHZvaWQKCik7CgpleHRlcm4gWFdNSGludHMgKlhBbGxvY1dNSGlu
dHMgKAoKICAgIHZvaWQKCik7CgpleHRlcm4gaW50IFhDbGlwQm94KAoKICAgIFJlZ2lvbiAsCiAg
ICBYUmVjdGFuZ2xlKgoKKTsKCmV4dGVybiBSZWdpb24gWENyZWF0ZVJlZ2lvbigKCiAgICB2b2lk
CgopOwoKZXh0ZXJuIGNvbnN0IGNoYXIgKlhEZWZhdWx0U3RyaW5nICh2b2lkKTsKCmV4dGVybiBp
bnQgWERlbGV0ZUNvbnRleHQoCgogICAgRGlzcGxheSogLAogICAgWElEICwKICAgIFhDb250ZXh0
CgopOwoKZXh0ZXJuIGludCBYRGVzdHJveVJlZ2lvbigKCiAgICBSZWdpb24KCik7CgpleHRlcm4g
aW50IFhFbXB0eVJlZ2lvbigKCiAgICBSZWdpb24KCik7CgpleHRlcm4gaW50IFhFcXVhbFJlZ2lv
bigKCiAgICBSZWdpb24gLAogICAgUmVnaW9uCgopOwoKZXh0ZXJuIGludCBYRmluZENvbnRleHQo
CgogICAgRGlzcGxheSogLAogICAgWElEICwKICAgIFhDb250ZXh0ICwKICAgIFhQb2ludGVyKgoK
KTsKCmV4dGVybiBpbnQgWEdldENsYXNzSGludCgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cg
LAogICAgWENsYXNzSGludCoKCik7CgpleHRlcm4gaW50IFhHZXRJY29uU2l6ZXMoCgogICAgRGlz
cGxheSogLAogICAgV2luZG93ICwKICAgIFhJY29uU2l6ZSoqICwKICAgIGludCoKCik7CgpleHRl
cm4gaW50IFhHZXROb3JtYWxIaW50cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAg
WFNpemVIaW50cyoKCik7CgpleHRlcm4gaW50IFhHZXRSR0JDb2xvcm1hcHMoCgogICAgRGlzcGxh
eSogLAogICAgV2luZG93ICwKICAgIFhTdGFuZGFyZENvbG9ybWFwKiogLAogICAgaW50KiAsCiAg
ICBBdG9tCgopOwoKZXh0ZXJuIGludCBYR2V0U2l6ZUhpbnRzKAoKICAgIERpc3BsYXkqICwKICAg
IFdpbmRvdyAsCiAgICBYU2l6ZUhpbnRzKiAsCiAgICBBdG9tCgopOwoKZXh0ZXJuIGludCBYR2V0
U3RhbmRhcmRDb2xvcm1hcCgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgWFN0YW5k
YXJkQ29sb3JtYXAqICwKICAgIEF0b20KCik7CgpleHRlcm4gaW50IFhHZXRUZXh0UHJvcGVydHko
CgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFhUZXh0UHJvcGVydHkqICwKICAgIEF0
b20KCik7CgpleHRlcm4gWFZpc3VhbEluZm8gKlhHZXRWaXN1YWxJbmZvKAoKICAgIERpc3BsYXkq
ICwKICAgIGxvbmcgLAogICAgWFZpc3VhbEluZm8qICwKICAgIGludCoKCik7CgpleHRlcm4gaW50
IFhHZXRXTUNsaWVudE1hY2hpbmUoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFhU
ZXh0UHJvcGVydHkqCgopOwoKZXh0ZXJuIFhXTUhpbnRzICpYR2V0V01IaW50cygKCiAgICBEaXNw
bGF5KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhHZXRXTUljb25OYW1lKAoKICAgIERp
c3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYVGV4dFByb3BlcnR5KgoKKTsKCmV4dGVybiBpbnQg
WEdldFdNTmFtZSgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgWFRleHRQcm9wZXJ0
eSoKCik7CgpleHRlcm4gaW50IFhHZXRXTU5vcm1hbEhpbnRzKAoKICAgIERpc3BsYXkqICwKICAg
IFdpbmRvdyAsCiAgICBYU2l6ZUhpbnRzKiAsCiAgICBsb25nKgoKKTsKCmV4dGVybiBpbnQgWEdl
dFdNU2l6ZUhpbnRzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYU2l6ZUhpbnRz
KiAsCiAgICBsb25nKiAsCiAgICBBdG9tCgopOwoKZXh0ZXJuIGludCBYR2V0Wm9vbUhpbnRzKAoK
ICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYU2l6ZUhpbnRzKgoKKTsKCmV4dGVybiBp
bnQgWEludGVyc2VjdFJlZ2lvbigKCiAgICBSZWdpb24gLAogICAgUmVnaW9uICwKICAgIFJlZ2lv
bgoKKTsKCmV4dGVybiB2b2lkIFhDb252ZXJ0Q2FzZSgKCiAgICBLZXlTeW0gLAogICAgS2V5U3lt
KiAsCiAgICBLZXlTeW0qCgopOwoKZXh0ZXJuIGludCBYTG9va3VwU3RyaW5nKAoKICAgIFhLZXlF
dmVudCogLAogICAgY2hhciogLAogICAgaW50ICwKICAgIEtleVN5bSogLAogICAgWENvbXBvc2VT
dGF0dXMqCgopOwoKZXh0ZXJuIGludCBYTWF0Y2hWaXN1YWxJbmZvKAoKICAgIERpc3BsYXkqICwK
ICAgIGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIFhWaXN1YWxJbmZvKgoKKTsKCmV4dGVy
biBpbnQgWE9mZnNldFJlZ2lvbigKCiAgICBSZWdpb24gLAogICAgaW50ICwKICAgIGludAoKKTsK
CmV4dGVybiBpbnQgWFBvaW50SW5SZWdpb24oCgogICAgUmVnaW9uICwKICAgIGludCAsCiAgICBp
bnQKCik7CgpleHRlcm4gUmVnaW9uIFhQb2x5Z29uUmVnaW9uKAoKICAgIFhQb2ludCogLAogICAg
aW50ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFJlY3RJblJlZ2lvbigKCiAgICBSZWdpb24g
LAogICAgaW50ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50
CgopOwoKZXh0ZXJuIGludCBYU2F2ZUNvbnRleHQoCgogICAgRGlzcGxheSogLAogICAgWElEICwK
ICAgIFhDb250ZXh0ICwKICAgIGNvbnN0IGNoYXIqCgopOwoKZXh0ZXJuIGludCBYU2V0Q2xhc3NI
aW50KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYQ2xhc3NIaW50KgoKKTsKCmV4
dGVybiBpbnQgWFNldEljb25TaXplcygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAg
WEljb25TaXplKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXROb3JtYWxIaW50cygKCiAg
ICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgWFNpemVIaW50cyoKCik7CgpleHRlcm4gdm9p
ZCBYU2V0UkdCQ29sb3JtYXBzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYU3Rh
bmRhcmRDb2xvcm1hcCogLAogICAgaW50ICwKICAgIEF0b20KCik7CgpleHRlcm4gaW50IFhTZXRT
aXplSGludHMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFhTaXplSGludHMqICwK
ICAgIEF0b20KCik7CgpleHRlcm4gaW50IFhTZXRTdGFuZGFyZFByb3BlcnRpZXMoCgogICAgRGlz
cGxheSogLAogICAgV2luZG93ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGNvbnN0IGNoYXIqICwK
ICAgIFBpeG1hcCAsCiAgICBjaGFyKiogLAogICAgaW50ICwKICAgIFhTaXplSGludHMqCgopOwoK
ZXh0ZXJuIHZvaWQgWFNldFRleHRQcm9wZXJ0eSgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cg
LAogICAgWFRleHRQcm9wZXJ0eSogLAogICAgQXRvbQoKKTsKCmV4dGVybiB2b2lkIFhTZXRXTUNs
aWVudE1hY2hpbmUoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFhUZXh0UHJvcGVy
dHkqCgopOwoKZXh0ZXJuIGludCBYU2V0V01IaW50cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5k
b3cgLAogICAgWFdNSGludHMqCgopOwoKZXh0ZXJuIHZvaWQgWFNldFdNSWNvbk5hbWUoCgogICAg
RGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFhUZXh0UHJvcGVydHkqCgopOwoKZXh0ZXJuIHZv
aWQgWFNldFdNTmFtZSgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgWFRleHRQcm9w
ZXJ0eSoKCik7CgpleHRlcm4gdm9pZCBYU2V0V01Ob3JtYWxIaW50cygKCiAgICBEaXNwbGF5KiAs
CiAgICBXaW5kb3cgLAogICAgWFNpemVIaW50cyoKCik7CgpleHRlcm4gdm9pZCBYU2V0V01Qcm9w
ZXJ0aWVzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYVGV4dFByb3BlcnR5KiAs
CiAgICBYVGV4dFByb3BlcnR5KiAsCiAgICBjaGFyKiogLAogICAgaW50ICwKICAgIFhTaXplSGlu
dHMqICwKICAgIFhXTUhpbnRzKiAsCiAgICBYQ2xhc3NIaW50KgoKKTsKCmV4dGVybiB2b2lkIFht
YlNldFdNUHJvcGVydGllcygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgY29uc3Qg
Y2hhciogLAogICAgY29uc3QgY2hhciogLAogICAgY2hhcioqICwKICAgIGludCAsCiAgICBYU2l6
ZUhpbnRzKiAsCiAgICBYV01IaW50cyogLAogICAgWENsYXNzSGludCoKCik7CgpleHRlcm4gdm9p
ZCBYdXRmOFNldFdNUHJvcGVydGllcygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAg
Y29uc3QgY2hhciogLAogICAgY29uc3QgY2hhciogLAogICAgY2hhcioqICwKICAgIGludCAsCiAg
ICBYU2l6ZUhpbnRzKiAsCiAgICBYV01IaW50cyogLAogICAgWENsYXNzSGludCoKCik7CgpleHRl
cm4gdm9pZCBYU2V0V01TaXplSGludHMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAg
IFhTaXplSGludHMqICwKICAgIEF0b20KCik7CgpleHRlcm4gaW50IFhTZXRSZWdpb24oCgogICAg
RGlzcGxheSogLAogICAgR0MgLAogICAgUmVnaW9uCgopOwoKZXh0ZXJuIHZvaWQgWFNldFN0YW5k
YXJkQ29sb3JtYXAoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFhTdGFuZGFyZENv
bG9ybWFwKiAsCiAgICBBdG9tCgopOwoKZXh0ZXJuIGludCBYU2V0Wm9vbUhpbnRzKAoKICAgIERp
c3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBYU2l6ZUhpbnRzKgoKKTsKCmV4dGVybiBpbnQgWFNo
cmlua1JlZ2lvbigKCiAgICBSZWdpb24gLAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBp
bnQgWFN0cmluZ0xpc3RUb1RleHRQcm9wZXJ0eSgKCiAgICBjaGFyKiogLAogICAgaW50ICwKICAg
IFhUZXh0UHJvcGVydHkqCgopOwoKZXh0ZXJuIGludCBYU3VidHJhY3RSZWdpb24oCgogICAgUmVn
aW9uICwKICAgIFJlZ2lvbiAsCiAgICBSZWdpb24KCik7CgpleHRlcm4gaW50IFhtYlRleHRMaXN0
VG9UZXh0UHJvcGVydHkoCiAgICBEaXNwbGF5KiBkaXNwbGF5LAogICAgY2hhcioqIGxpc3QsCiAg
ICBpbnQgY291bnQsCiAgICBYSUNDRW5jb2RpbmdTdHlsZSBzdHlsZSwKICAgIFhUZXh0UHJvcGVy
dHkqIHRleHRfcHJvcF9yZXR1cm4KKTsKCmV4dGVybiBpbnQgWHdjVGV4dExpc3RUb1RleHRQcm9w
ZXJ0eSgKICAgIERpc3BsYXkqIGRpc3BsYXksCiAgICB3Y2hhcl90KiogbGlzdCwKICAgIGludCBj
b3VudCwKICAgIFhJQ0NFbmNvZGluZ1N0eWxlIHN0eWxlLAogICAgWFRleHRQcm9wZXJ0eSogdGV4
dF9wcm9wX3JldHVybgopOwoKZXh0ZXJuIGludCBYdXRmOFRleHRMaXN0VG9UZXh0UHJvcGVydHko
CiAgICBEaXNwbGF5KiBkaXNwbGF5LAogICAgY2hhcioqIGxpc3QsCiAgICBpbnQgY291bnQsCiAg
ICBYSUNDRW5jb2RpbmdTdHlsZSBzdHlsZSwKICAgIFhUZXh0UHJvcGVydHkqIHRleHRfcHJvcF9y
ZXR1cm4KKTsKCmV4dGVybiB2b2lkIFh3Y0ZyZWVTdHJpbmdMaXN0KAogICAgd2NoYXJfdCoqIGxp
c3QKKTsKCmV4dGVybiBpbnQgWFRleHRQcm9wZXJ0eVRvU3RyaW5nTGlzdCgKCiAgICBYVGV4dFBy
b3BlcnR5KiAsCiAgICBjaGFyKioqICwKICAgIGludCoKCik7CgpleHRlcm4gaW50IFhtYlRleHRQ
cm9wZXJ0eVRvVGV4dExpc3QoCiAgICBEaXNwbGF5KiBkaXNwbGF5LAogICAgY29uc3QgWFRleHRQ
cm9wZXJ0eSogdGV4dF9wcm9wLAogICAgY2hhcioqKiBsaXN0X3JldHVybiwKICAgIGludCogY291
bnRfcmV0dXJuCik7CgpleHRlcm4gaW50IFh3Y1RleHRQcm9wZXJ0eVRvVGV4dExpc3QoCiAgICBE
aXNwbGF5KiBkaXNwbGF5LAogICAgY29uc3QgWFRleHRQcm9wZXJ0eSogdGV4dF9wcm9wLAogICAg
d2NoYXJfdCoqKiBsaXN0X3JldHVybiwKICAgIGludCogY291bnRfcmV0dXJuCik7CgpleHRlcm4g
aW50IFh1dGY4VGV4dFByb3BlcnR5VG9UZXh0TGlzdCgKICAgIERpc3BsYXkqIGRpc3BsYXksCiAg
ICBjb25zdCBYVGV4dFByb3BlcnR5KiB0ZXh0X3Byb3AsCiAgICBjaGFyKioqIGxpc3RfcmV0dXJu
LAogICAgaW50KiBjb3VudF9yZXR1cm4KKTsKCmV4dGVybiBpbnQgWFVuaW9uUmVjdFdpdGhSZWdp
b24oCgogICAgWFJlY3RhbmdsZSogLAogICAgUmVnaW9uICwKICAgIFJlZ2lvbgoKKTsKCmV4dGVy
biBpbnQgWFVuaW9uUmVnaW9uKAoKICAgIFJlZ2lvbiAsCiAgICBSZWdpb24gLAogICAgUmVnaW9u
CgopOwoKZXh0ZXJuIGludCBYV01HZW9tZXRyeSgKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQgLAog
ICAgY29uc3QgY2hhciogLAogICAgY29uc3QgY2hhciogLAogICAgdW5zaWduZWQgaW50ICwKICAg
IFhTaXplSGludHMqICwKICAgIGludCogLAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIGludCog
LAogICAgaW50KgoKKTsKCmV4dGVybiBpbnQgWFhvclJlZ2lvbigKCiAgICBSZWdpb24gLAogICAg
UmVnaW9uICwKICAgIFJlZ2lvbgoKKTsKCn0KIyA2MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3Bs
dWdpbi9uc3BsdWdpbmRlZnMuaCIgMgojIDEyMyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdp
bi9uc3BsdWdpbmRlZnMuaCIKdHlwZWRlZiBjb25zdCBjaGFyKiBuc01JTUVUeXBlOwoKc3RydWN0
IG5zQnl0ZVJhbmdlIHsKICAgIFBSSW50MzIgb2Zmc2V0OwogICAgUFJVaW50MzIgbGVuZ3RoOwog
ICAgc3RydWN0IG5zQnl0ZVJhbmdlKiBuZXh0Owp9OwoKc3RydWN0IG5zUGx1Z2luUmVjdCB7CiAg
ICBQUlVpbnQxNiB0b3A7CiAgICBQUlVpbnQxNiBsZWZ0OwogICAgUFJVaW50MTYgYm90dG9tOwog
ICAgUFJVaW50MTYgcmlnaHQ7Cn07CiMgMTUwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2lu
L25zcGx1Z2luZGVmcy5oIgplbnVtIG5zUGx1Z2luQ2FsbGJhY2tUeXBlIHsKICAgIG5zUGx1Z2lu
Q2FsbGJhY2tUeXBlX1NldFdpbmRvdyA9IDEsCiAgICBuc1BsdWdpbkNhbGxiYWNrVHlwZV9Qcmlu
dAp9OwoKc3RydWN0IG5zUGx1Z2luQW55Q2FsbGJhY2tTdHJ1Y3QgewogICAgUFJJbnQzMiB0eXBl
Owp9OwoKCnN0cnVjdCBuc1BsdWdpblNldFdpbmRvd0NhbGxiYWNrU3RydWN0IHsKICAgIFBSSW50
MzIgdHlwZTsKICAgIERpc3BsYXkqIGRpc3BsYXk7CiAgICBWaXN1YWwqIHZpc3VhbDsKICAgIENv
bG9ybWFwIGNvbG9ybWFwOwogICAgUFJVaW50MzIgZGVwdGg7Cn07CgoKCgoKCgpzdHJ1Y3QgbnNQ
bHVnaW5QcmludENhbGxiYWNrU3RydWN0IHsKICAgIFBSSW50MzIgdHlwZTsKICAgIEZJTEUqIGZw
Owp9OwoKCgoKCgplbnVtIG5zUGx1Z2luVmFyaWFibGUgewogICAgbnNQbHVnaW5WYXJpYWJsZV9O
YW1lU3RyaW5nID0gMSwKICAgIG5zUGx1Z2luVmFyaWFibGVfRGVzY3JpcHRpb25TdHJpbmcgPSAy
Cn07CgplbnVtIG5zUGx1Z2luTWFuYWdlclZhcmlhYmxlIHsKICAgIG5zUGx1Z2luTWFuYWdlclZh
cmlhYmxlX1hEaXNwbGF5ID0gMSwKICAgIG5zUGx1Z2luTWFuYWdlclZhcmlhYmxlX1h0QXBwQ29u
dGV4dCA9IDIKfTsKCmVudW0gbnNQbHVnaW5JbnN0YW5jZVBlZXJWYXJpYWJsZSB7CiAgICBuc1Bs
dWdpbkluc3RhbmNlUGVlclZhcmlhYmxlX05ldHNjYXBlV2luZG93ID0gMwoKCn07CgplbnVtIG5z
UGx1Z2luSW5zdGFuY2VWYXJpYWJsZSB7CiAgICBuc1BsdWdpbkluc3RhbmNlVmFyaWFibGVfV2lu
ZG93bGVzc0Jvb2wgPSAzLAogICAgbnNQbHVnaW5JbnN0YW5jZVZhcmlhYmxlX1RyYW5zcGFyZW50
Qm9vbCA9IDQsCiAgICBuc1BsdWdpbkluc3RhbmNlVmFyaWFibGVfRG9DYWNoZUJvb2wgPSA1LAog
ICAgbnNQbHVnaW5JbnN0YW5jZVZhcmlhYmxlX0NhbGxTZXRXaW5kb3dBZnRlckRlc3Ryb3lCb29s
ID0gNiwKICAgIG5zUGx1Z2luSW5zdGFuY2VWYXJpYWJsZV9TY3JpcHRhYmxlSW5zdGFuY2UgPSAx
MCwKICAgIG5zUGx1Z2luSW5zdGFuY2VWYXJpYWJsZV9TY3JpcHRhYmxlSUlEID0gMTEKfTsKCgoK
ZW51bSBuc1BsdWdpbk1vZGUgewogICAgbnNQbHVnaW5Nb2RlX0VtYmVkZGVkID0gMSwKICAgIG5z
UGx1Z2luTW9kZV9GdWxsCn07CgoKZW51bSBuc1BsdWdpblN0cmVhbVR5cGUgewogICAgbnNQbHVn
aW5TdHJlYW1UeXBlX05vcm1hbCA9IDEsCiAgICBuc1BsdWdpblN0cmVhbVR5cGVfU2VlaywKICAg
IG5zUGx1Z2luU3RyZWFtVHlwZV9Bc0ZpbGUsCiAgICBuc1BsdWdpblN0cmVhbVR5cGVfQXNGaWxl
T25seQp9OwoKCgoKCmVudW0gbnNQbHVnaW5XaW5kb3dUeXBlIHsKICAgIG5zUGx1Z2luV2luZG93
VHlwZV9XaW5kb3cgPSAxLAogICAgbnNQbHVnaW5XaW5kb3dUeXBlX0RyYXdhYmxlCn07CiMgMjUx
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zcGx1Z2luZGVmcy5oIgpzdHJ1Y3QgbnNQ
bHVnaW5Qb3J0Owp0eXBlZGVmIFJlZ2lvbiBuc1BsdWdpblJlZ2lvbjsKdHlwZWRlZiBEcmF3YWJs
ZSBuc1BsdWdpblBsYXRmb3JtV2luZG93UmVmOwojIDI2MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3BsdWdpbi9uc3BsdWdpbmRlZnMuaCIKc3RydWN0IG5zUGx1Z2luV2luZG93IHsKICAgIG5zUGx1
Z2luUG9ydCogd2luZG93OwoKCiAgICBQUkludDMyIHg7CiAgICBQUkludDMyIHk7CiAgICBQUlVp
bnQzMiB3aWR0aDsKICAgIFBSVWludDMyIGhlaWdodDsKICAgIG5zUGx1Z2luUmVjdCBjbGlwUmVj
dDsKCgogICAgdm9pZCogd3NfaW5mbzsKCiAgICBuc1BsdWdpbldpbmRvd1R5cGUgdHlwZTsKfTsK
CnN0cnVjdCBuc1BsdWdpbkZ1bGxQcmludCB7CiAgICBQUkJvb2wgcGx1Z2luUHJpbnRlZDsKCiAg
ICBQUkJvb2wgcHJpbnRPbmU7CgogICAgdm9pZCogcGxhdGZvcm1QcmludDsKfTsKCnN0cnVjdCBu
c1BsdWdpbkVtYmVkUHJpbnQgewogICAgbnNQbHVnaW5XaW5kb3cgd2luZG93OwogICAgdm9pZCog
cGxhdGZvcm1QcmludDsKfTsKCnN0cnVjdCBuc1BsdWdpblByaW50IHsKICAgIFBSVWludDE2IG1v
ZGU7CiAgICB1bmlvbgogICAgewogICAgICAgIG5zUGx1Z2luRnVsbFByaW50IGZ1bGxQcmludDsK
ICAgICAgICBuc1BsdWdpbkVtYmVkUHJpbnQgZW1iZWRQcmludDsKICAgIH0gcHJpbnQ7Cn07Cgpz
dHJ1Y3QgbnNQbHVnaW5FdmVudCB7CiMgMzE4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2lu
L25zcGx1Z2luZGVmcy5oIgogICAgWEV2ZW50IGV2ZW50OwoKCgp9OwoKCgoKCmVudW0gbnNQbHVn
aW5FdmVudFR5cGUgewojIDMzOCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc3BsdWdp
bmRlZnMuaCIKICAgIG5zUGx1Z2luRXZlbnRUeXBlX0lkbGUgPSAwCn07CgoKCmVudW0gbnNQbHVn
aW5SZWFzb24gewogICAgbnNQbHVnaW5SZWFzb25fQmFzZSA9IDAsCiAgICBuc1BsdWdpblJlYXNv
bl9Eb25lID0gMCwKICAgIG5zUGx1Z2luUmVhc29uX05ldHdvcmtFcnIsCiAgICBuc1BsdWdpblJl
YXNvbl9Vc2VyQnJlYWssCiAgICBuc1BsdWdpblJlYXNvbl9Ob1JlYXNvbgp9OwojIDM3MSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc3BsdWdpbmRlZnMuaCIKY2xhc3MgbnNJUGx1Z2lu
OwpjbGFzcyBuc0lFdmVudEhhbmRsZXI7CmNsYXNzIG5zSVBsdWdpbkluc3RhbmNlOwoKCmNsYXNz
IG5zSVBsdWdpbk1hbmFnZXI7CmNsYXNzIG5zSUZpbGVVdGlsaXRpZXM7CmNsYXNzIG5zSVBsdWdp
bkluc3RhbmNlUGVlcjsKY2xhc3MgbnNJV2luZG93bGVzc1BsdWdpbkluc3RhbmNlUGVlcjsKY2xh
c3MgbnNJUGx1Z2luVGFnSW5mbzsKIyAyMiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9u
c0lQbHVnaW5TdHJlYW1JbmZvLmgiIDIKIyAzMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdp
bi9uc0lQbHVnaW5TdHJlYW1JbmZvLmgiCmNsYXNzIG5zSVBsdWdpblN0cmVhbUluZm8gOiBwdWJs
aWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgp
IHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4ZWQ3ZDRjYTAsIDB4YjAwNSwgMHgxMWQyLCB7
IDB4YWQsIDB4YWEsIDB4MDAsIDB4ODAsIDB4NWYsIDB4NmQsIDB4ZWMsIDB4NDkgfX07IHJldHVy
biBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb250ZW50VHlwZShuc01JTUVUeXBlICph
Q29udGVudFR5cGUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSXNTZWVrYWJsZShQUkJvb2wg
KmFTZWVrYWJsZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMZW5ndGgoUFJVaW50MzIg
KmFMZW5ndGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGFzdE1vZGlmaWVkKFBSVWlu
dDMyICphTGFzdE1vZGlmaWVkKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFVSTChjb25z
dCBjaGFyICogKmFVUkwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVxdWVzdFJlYWQobnNC
eXRlUmFuZ2UgKiBhUmFuZ2VMaXN0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFN0cmVh
bU9mZnNldChQUkludDMyICphU3RyZWFtT2Zmc2V0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBT
ZXRTdHJlYW1PZmZzZXQoUFJJbnQzMiBhU3RyZWFtT2Zmc2V0KSA9IDA7Cgp9OwojIDE5ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpblN0cmVhbUxpc3RlbmVyLmgiIDIKCgoK
IyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJSW5wdXRTdHJlYW0uaCIgMQojIDE3
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJSW5wdXRTdHJlYW0uaCIKY2xhc3MgbnNJ
SW5wdXRTdHJlYW07CiMgNDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lJbnB1dFN0
cmVhbS5oIgp0eXBlZGVmIG5zcmVzdWx0ICgqIG5zV3JpdGVTZWdtZW50RnVuKShuc0lJbnB1dFN0
cmVhbSAqYUluU3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
b2lkICphQ2xvc3VyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciAqYUZyb21TZWdtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQUlVpbnQzMiBhVG9PZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBSVWludDMyIGFDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUFJVaW50MzIgKmFXcml0ZUNvdW50KTsKIyA1NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3hwY29tL25zSUlucHV0U3RyZWFtLmgiCmNsYXNzIG5zSUlucHV0U3RyZWFtIDogcHVibGljIG5z
SVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3Rh
dGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGZhOWM3ZjZjLCAweDYxYjMsIDB4MTFkNCwgeyAweDk4
LCAweDc3LCAweDAwLCAweGMwLCAweDRmLCAweGEwLCAweGNmLCAweDRhIH19OyByZXR1cm4gaWlk
O30KIyA2OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUlucHV0U3RyZWFtLmgiCiAg
dmlydHVhbCBuc3Jlc3VsdCBDbG9zZSh2b2lkKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEF2YWlsYWJsZShQUlVpbnQzMiAqX3JldHZhbCkgPSAwOwojIDkxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUveHBjb20vbnNJSW5wdXRTdHJlYW0uaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFJlYWQoY2hh
ciAqIGFCdWYsIFBSVWludDMyIGFDb3VudCwgUFJVaW50MzIgKl9yZXR2YWwpID0gMDsKIyAxMTUg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lJbnB1dFN0cmVhbS5oIgogIHZpcnR1YWwg
bnNyZXN1bHQgUmVhZFNlZ21lbnRzKG5zV3JpdGVTZWdtZW50RnVuIGFXcml0ZXIsIHZvaWQgKiBh
Q2xvc3VyZSwgUFJVaW50MzIgYUNvdW50LCBQUlVpbnQzMiAqX3JldHZhbCkgPSAwOwoKCgoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBJc05vbkJsb2NraW5nKFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKfTsK
IyAyMyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5TdHJlYW1MaXN0ZW5l
ci5oIiAyCiMgNDQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luU3RyZWFt
TGlzdGVuZXIuaCIKY2xhc3MgbnNJUGx1Z2luU3RyZWFtTGlzdGVuZXIgOiBwdWJsaWMgbnNJU3Vw
cG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMg
Y29uc3QgbnNJSUQgaWlkID0gezB4ZGYwNTU3NzAsIDB4NTQ0OCwgMHgxMWQyLCB7IDB4ODEsIDB4
NjQsIDB4MDAsIDB4NjAsIDB4MDgsIDB4MTEsIDB4OWQsIDB4N2EgfX07IHJldHVybiBpaWQ7fQoj
IDU4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpblN0cmVhbUxpc3RlbmVy
LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBPblN0YXJ0QmluZGluZyhuc0lQbHVnaW5TdHJlYW1JbmZv
ICphUGx1Z2luSW5mbykgPSAwOwojIDcyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25z
SVBsdWdpblN0cmVhbUxpc3RlbmVyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBPbkRhdGFBdmFpbGFi
bGUobnNJUGx1Z2luU3RyZWFtSW5mbyAqYVBsdWdpbkluZm8sIG5zSUlucHV0U3RyZWFtICphSW5w
dXRTdHJlYW0sIFBSVWludDMyIGFMZW5ndGgpID0gMDsKIyA4MiAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL3BsdWdpbi9uc0lQbHVnaW5TdHJlYW1MaXN0ZW5lci5oIgogIHZpcnR1YWwgbnNyZXN1bHQg
T25GaWxlQXZhaWxhYmxlKG5zSVBsdWdpblN0cmVhbUluZm8gKmFQbHVnaW5JbmZvLCBjb25zdCBj
aGFyICphRmlsZU5hbWUpID0gMDsKIyA5NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9u
c0lQbHVnaW5TdHJlYW1MaXN0ZW5lci5oIgogIHZpcnR1YWwgbnNyZXN1bHQgT25TdG9wQmluZGlu
Zyhuc0lQbHVnaW5TdHJlYW1JbmZvICphUGx1Z2luSW5mbywgbnNyZXN1bHQgYVN0YXR1cykgPSAw
OwoKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFN0cmVhbVR5cGUobnNQbHVnaW5TdHJlYW1U
eXBlICphU3RyZWFtVHlwZSkgPSAwOwoKfTsKIyAxNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3Bs
dWdpbi9uc0lQbHVnaW5JbnN0YW5jZS5oIiAyCgoKCgoKCgpjbGFzcyBuc0lQbHVnaW5JbnN0YW5j
ZVBlZXI7CiMgNDkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luSW5zdGFu
Y2UuaCIKY2xhc3MgbnNJUGx1Z2luSW5zdGFuY2UgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVi
bGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQg
aWlkID0gezB4ZWJlMDBmNDAsIDB4MDE5OSwgMHgxMWQyLCB7IDB4ODEsIDB4NWIsIDB4MDAsIDB4
NjAsIDB4MDgsIDB4MTEsIDB4OWQsIDB4N2EgfX07IHJldHVybiBpaWQ7fQojIDYyICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpbkluc3RhbmNlLmgiCiAgdmlydHVhbCBuc3Jl
c3VsdCBJbml0aWFsaXplKG5zSVBsdWdpbkluc3RhbmNlUGVlciAqYVBlZXIpID0gMDsKIyA3NCAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5JbnN0YW5jZS5oIgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0UGVlcihuc0lQbHVnaW5JbnN0YW5jZVBlZXIgKiAqYVBlZXIpID0gMDsK
IyA4NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5JbnN0YW5jZS5oIgog
IHZpcnR1YWwgbnNyZXN1bHQgU3RhcnQodm9pZCkgPSAwOwojIDk2ICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvcGx1Z2luL25zSVBsdWdpbkluc3RhbmNlLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBTdG9w
KHZvaWQpID0gMDsKIyAxMDcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2lu
SW5zdGFuY2UuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IERlc3Ryb3kodm9pZCkgPSAwOwojIDExOCAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5JbnN0YW5jZS5oIgogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0V2luZG93KG5zUGx1Z2luV2luZG93ICogYVdpbmRvdykgPSAwOwojIDEz
MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5JbnN0YW5jZS5oIgogIHZp
cnR1YWwgbnNyZXN1bHQgTmV3U3RyZWFtKG5zSVBsdWdpblN0cmVhbUxpc3RlbmVyICoqYUxpc3Rl
bmVyKSA9IDA7CiMgMTQxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpbklu
c3RhbmNlLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBQcmludChuc1BsdWdpblByaW50ICogYVBsYXRm
b3JtUHJpbnQpID0gMDsKIyAxNTEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1
Z2luSW5zdGFuY2UuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFZhbHVlKG5zUGx1Z2luSW5zdGFu
Y2VWYXJpYWJsZSBhVmFyaWFibGUsIHZvaWQgKiBhVmFsdWUpID0gMDsKIyAxNzEgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luSW5zdGFuY2UuaCIKICB2aXJ0dWFsIG5zcmVz
dWx0IEhhbmRsZUV2ZW50KG5zUGx1Z2luRXZlbnQgKiBhRXZlbnQsIFBSQm9vbCAqYUhhbmRsZWQp
ID0gMDsKCn07CiMgMTIwICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvbGF5b3V0L25zSU9iamVjdEZyYW1lLmgiIDEKIyA0MCAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2xheW91dC9uc0lPYmplY3RGcmFtZS5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9sYXlvdXQvbnNJRnJhbWUuaCIgMQojIDQ5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0
L25zSUZyYW1lLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNTdHlsZVN0
cnVjdC5oIiAxCiMgNDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zU3R5bGVTdHJ1
Y3QuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZ2Z4L25zQ29sb3IuaCIgMQojIDQzICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvZ2Z4L25zQ29sb3IuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUveHBjb20vbnNDb21PYnNvbGV0ZS5oIiAxCiMgNDQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9nZngvbnNDb2xvci5oIiAyCgpjbGFzcyBuc1N0cmluZzsKY2xhc3MgbnNBU3RyaW5nOwoKCgp0
eXBlZGVmIFBSVWludDMyIG5zY29sb3I7CiMgODkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9nZngv
bnNDb2xvci5oIgpleHRlcm4gIkMiIFBSQm9vbCBOU19IZXhUb1JHQihjb25zdCBuc1N0cmluZyYg
YUJ1ZiwgbnNjb2xvciogYVJlc3VsdCk7CgoKCgpleHRlcm4gIkMiIFBSQm9vbCBOU19Mb29zZUhl
eFRvUkdCKGNvbnN0IG5zU3RyaW5nJiBhQnVmLCBuc2NvbG9yKiBhUmVzdWx0KTsKCgoKZXh0ZXJu
ICJDIiBQUkJvb2wgTlNfQ29sb3JOYW1lVG9SR0IoY29uc3QgbnNBU3RyaW5nJiBhQnVmLCBuc2Nv
bG9yKiBhUmVzdWx0KTsKCgoKZXh0ZXJuICJDIiBuc2NvbG9yIE5TX0JyaWdodGVuQ29sb3IobnNj
b2xvciBpbkNvbG9yKTsKCgoKZXh0ZXJuICJDIiBuc2NvbG9yIE5TX0RhcmtlbkNvbG9yKG5zY29s
b3IgaW5Db2xvcik7CiMgNDIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zU3R5bGVT
dHJ1Y3QuaCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9nZngvbnNDb29yZC5oIiAxCiMg
NTYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9nZngvbnNDb29yZC5oIgp0eXBlZGVmIFBSSW50MzIg
bnNjb29yZDsKIyA0MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNTdHlsZVN0cnVj
dC5oIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2dmeC9uc01hcmdpbi5oIiAxCiMgNDQg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9nZngvbnNNYXJnaW4uaCIKc3RydWN0IG5zTWFyZ2luIHsK
ICBuc2Nvb3JkIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbTsKCgogIG5zTWFyZ2luKCkge30KICBu
c01hcmdpbihjb25zdCBuc01hcmdpbiYgYU1hcmdpbikgeyp0aGlzID0gYU1hcmdpbjt9CiAgbnNN
YXJnaW4obnNjb29yZCBhTGVmdCwgbnNjb29yZCBhVG9wLAogICAgICAgICAgIG5zY29vcmQgYVJp
Z2h0LCBuc2Nvb3JkIGFCb3R0b20pIHtsZWZ0ID0gYUxlZnQ7IHRvcCA9IGFUb3A7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0gYVJpZ2h0OyBib3R0
b20gPSBhQm90dG9tO30KCiAgdm9pZCBTaXplVG8obnNjb29yZCBhTGVmdCwgbnNjb29yZCBhVG9w
LAogICAgICAgICAgICAgIG5zY29vcmQgYVJpZ2h0LCBuc2Nvb3JkIGFCb3R0b20pIHtsZWZ0ID0g
YUxlZnQ7IHRvcCA9IGFUb3A7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJpZ2h0ID0gYVJpZ2h0OyBib3R0b20gPSBhQm90dG9tO30KICB2b2lkIFNpemVC
eShuc2Nvb3JkIGFMZWZ0LCBuc2Nvb3JkIGFUb3AsCiAgICAgICAgICAgICAgbnNjb29yZCBhUmln
aHQsIG5zY29vcmQgYUJvdHRvbSkge2xlZnQgKz0gYUxlZnQ7IHRvcCArPSBhVG9wOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodCArPSBhUmlnaHQ7
IGJvdHRvbSArPSBhQm90dG9tO30KCgoKICBQUkJvb2wgb3BlcmF0b3I9PShjb25zdCBuc01hcmdp
biYgYU1hcmdpbikgY29uc3QgewogICAgcmV0dXJuIChQUkJvb2wpICgobGVmdCA9PSBhTWFyZ2lu
LmxlZnQpICYmICh0b3AgPT0gYU1hcmdpbi50b3ApICYmCiAgICAgICAgICAgICAgICAgICAgIChy
aWdodCA9PSBhTWFyZ2luLnJpZ2h0KSAmJiAoYm90dG9tID09IGFNYXJnaW4uYm90dG9tKSk7CiAg
fQogIFBSQm9vbCBvcGVyYXRvciE9KGNvbnN0IG5zTWFyZ2luJiBhTWFyZ2luKSBjb25zdCB7CiAg
ICByZXR1cm4gKFBSQm9vbCkgKChsZWZ0ICE9IGFNYXJnaW4ubGVmdCkgfHwgKHRvcCAhPSBhTWFy
Z2luLnRvcCkgfHwKICAgICAgICAgICAgICAgICAgICAgKHJpZ2h0ICE9IGFNYXJnaW4ucmlnaHQp
IHx8IChib3R0b20gIT0gYU1hcmdpbi5ib3R0b20pKTsKICB9CiAgbnNNYXJnaW4gb3BlcmF0b3Ir
KGNvbnN0IG5zTWFyZ2luJiBhTWFyZ2luKSBjb25zdCB7CiAgICByZXR1cm4gbnNNYXJnaW4obGVm
dCArIGFNYXJnaW4ubGVmdCwgdG9wICsgYU1hcmdpbi50b3AsCiAgICAgICAgICAgICAgICAgICAg
cmlnaHQgKyBhTWFyZ2luLnJpZ2h0LCBib3R0b20gKyBhTWFyZ2luLmJvdHRvbSk7CiAgfQogIG5z
TWFyZ2luIG9wZXJhdG9yLShjb25zdCBuc01hcmdpbiYgYU1hcmdpbikgY29uc3QgewogICAgcmV0
dXJuIG5zTWFyZ2luKGxlZnQgLSBhTWFyZ2luLmxlZnQsIHRvcCAtIGFNYXJnaW4udG9wLAogICAg
ICAgICAgICAgICAgICAgIHJpZ2h0IC0gYU1hcmdpbi5yaWdodCwgYm90dG9tIC0gYU1hcmdpbi5i
b3R0b20pOwogIH0KICBuc01hcmdpbiYgb3BlcmF0b3IrPShjb25zdCBuc01hcmdpbiYgYU1hcmdp
bikge2xlZnQgKz0gYU1hcmdpbi5sZWZ0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdG9wICs9IGFNYXJnaW4udG9wOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQgKz0gYU1hcmdpbi5yaWdodDsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbSArPSBh
TWFyZ2luLmJvdHRvbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAqdGhpczt9CiAgbnNNYXJnaW4mIG9wZXJhdG9yLT0oY29uc3QgbnNNYXJn
aW4mIGFNYXJnaW4pIHtsZWZ0IC09IGFNYXJnaW4ubGVmdDsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcCAtPSBhTWFyZ2luLnRvcDsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0IC09IGFNYXJnaW4u
cmlnaHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b3R0b20gLT0gYU1hcmdpbi5ib3R0b207CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7fQp9OwojIDQ0ICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvY29udGVudC9uc1N0eWxlU3RydWN0LmgiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvZ2Z4L25zUmVjdC5oIiAxCiMgNDUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9nZngvbnNSZWN0
LmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2dmeC9uc1BvaW50LmgiIDEKIyA0NCAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2dmeC9uc1BvaW50LmgiCnN0cnVjdCBuc1BvaW50IHsKICBuc2Nv
b3JkIHgsIHk7CgoKICBuc1BvaW50KCkge30KICBuc1BvaW50KGNvbnN0IG5zUG9pbnQmIGFQb2lu
dCkge3ggPSBhUG9pbnQueDsgeSA9IGFQb2ludC55O30KICBuc1BvaW50KG5zY29vcmQgYVgsIG5z
Y29vcmQgYVkpIHt4ID0gYVg7IHkgPSBhWTt9CgogIHZvaWQgTW92ZVRvKG5zY29vcmQgYVgsIG5z
Y29vcmQgYVkpIHt4ID0gYVg7IHkgPSBhWTt9CiAgdm9pZCBNb3ZlQnkobnNjb29yZCBhRHgsIG5z
Y29vcmQgYUR5KSB7eCArPSBhRHg7IHkgKz0gYUR5O30KCgoKICBQUkJvb2wgb3BlcmF0b3I9PShj
b25zdCBuc1BvaW50JiBhUG9pbnQpIGNvbnN0IHsKICAgIHJldHVybiAoUFJCb29sKSAoKHggPT0g
YVBvaW50LngpICYmICh5ID09IGFQb2ludC55KSk7CiAgfQogIFBSQm9vbCBvcGVyYXRvciE9KGNv
bnN0IG5zUG9pbnQmIGFQb2ludCkgY29uc3QgewogICAgcmV0dXJuIChQUkJvb2wpICgoeCAhPSBh
UG9pbnQueCkgfHwgKHkgIT0gYVBvaW50LnkpKTsKICB9CiAgbnNQb2ludCBvcGVyYXRvcisoY29u
c3QgbnNQb2ludCYgYVBvaW50KSBjb25zdCB7CiAgICByZXR1cm4gbnNQb2ludCh4ICsgYVBvaW50
LngsIHkgKyBhUG9pbnQueSk7CiAgfQogIG5zUG9pbnQgb3BlcmF0b3ItKGNvbnN0IG5zUG9pbnQm
IGFQb2ludCkgY29uc3QgewogICAgcmV0dXJuIG5zUG9pbnQoeCAtIGFQb2ludC54LCB5IC0gYVBv
aW50LnkpOwogIH0KICBuc1BvaW50JiBvcGVyYXRvcis9KGNvbnN0IG5zUG9pbnQmIGFQb2ludCkg
ewogICAgeCArPSBhUG9pbnQueDsKICAgIHkgKz0gYVBvaW50Lnk7CiAgICByZXR1cm4gKnRoaXM7
CiAgfQogIG5zUG9pbnQmIG9wZXJhdG9yLT0oY29uc3QgbnNQb2ludCYgYVBvaW50KSB7CiAgICB4
IC09IGFQb2ludC54OwogICAgeSAtPSBhUG9pbnQueTsKICAgIHJldHVybiAqdGhpczsKICB9Cn07
CgoKCgoKc3RydWN0IG5zRmxvYXRQb2ludCB7CiAgZmxvYXQgeCwgeTsKCgogIG5zRmxvYXRQb2lu
dCgpIHt9CiAgbnNGbG9hdFBvaW50KGNvbnN0IG5zRmxvYXRQb2ludCYgYVBvaW50KSB7eCA9IGFQ
b2ludC54OyB5ID0gYVBvaW50Lnk7fQogIG5zRmxvYXRQb2ludChmbG9hdCBhWCwgZmxvYXQgYVkp
IHt4ID0gYVg7IHkgPSBhWTt9CgogIHZvaWQgTW92ZVRvKGZsb2F0IGFYLCBmbG9hdCBhWSkge3gg
PSBhWDsgeSA9IGFZO30KICB2b2lkIE1vdmVUbyhuc2Nvb3JkIGFYLCBuc2Nvb3JkIGFZKSB7eCA9
IChmbG9hdClhWDsgeSA9IChmbG9hdClhWTt9CiAgdm9pZCBNb3ZlQnkoZmxvYXQgYUR4LCBmbG9h
dCBhRHkpIHt4ICs9IGFEeDsgeSArPSBhRHk7fQoKCgogIFBSQm9vbCBvcGVyYXRvcj09KGNvbnN0
IG5zRmxvYXRQb2ludCYgYVBvaW50KSBjb25zdCB7CiAgICByZXR1cm4gKFBSQm9vbCkgKCh4ID09
IGFQb2ludC54KSAmJiAoeSA9PSBhUG9pbnQueSkpOwogIH0KICBQUkJvb2wgb3BlcmF0b3IhPShj
b25zdCBuc0Zsb2F0UG9pbnQmIGFQb2ludCkgY29uc3QgewogICAgcmV0dXJuIChQUkJvb2wpICgo
eCAhPSBhUG9pbnQueCkgfHwgKHkgIT0gYVBvaW50LnkpKTsKICB9CiAgbnNGbG9hdFBvaW50IG9w
ZXJhdG9yKyhjb25zdCBuc0Zsb2F0UG9pbnQmIGFQb2ludCkgY29uc3QgewogICAgcmV0dXJuIG5z
RmxvYXRQb2ludCh4ICsgYVBvaW50LngsIHkgKyBhUG9pbnQueSk7CiAgfQogIG5zRmxvYXRQb2lu
dCBvcGVyYXRvci0oY29uc3QgbnNGbG9hdFBvaW50JiBhUG9pbnQpIGNvbnN0IHsKICAgIHJldHVy
biBuc0Zsb2F0UG9pbnQoeCAtIGFQb2ludC54LCB5IC0gYVBvaW50LnkpOwogIH0KICBuc0Zsb2F0
UG9pbnQmIG9wZXJhdG9yKz0oY29uc3QgbnNGbG9hdFBvaW50JiBhUG9pbnQpIHsKICAgIHggKz0g
YVBvaW50Lng7CiAgICB5ICs9IGFQb2ludC55OwogICAgcmV0dXJuICp0aGlzOwogIH0KICBuc0Zs
b2F0UG9pbnQmIG9wZXJhdG9yLT0oY29uc3QgbnNGbG9hdFBvaW50JiBhUG9pbnQpIHsKICAgIHgg
LT0gYVBvaW50Lng7CiAgICB5IC09IGFQb2ludC55OwogICAgcmV0dXJuICp0aGlzOwogIH0KfTsK
CgoKCgoKc3RydWN0IG5zUGF0aFBvaW50OiBwdWJsaWMgbnNGbG9hdFBvaW50ewoKICBQUkJvb2wg
bUlzT25DdXJ2ZTsKCgogIG5zUGF0aFBvaW50KCkge30KICBuc1BhdGhQb2ludChjb25zdCBuc1Bh
dGhQb2ludCYgYVBvaW50KSB7eCA9IGFQb2ludC54OyB5ID0gYVBvaW50Lnk7bUlzT25DdXJ2ZT1h
UG9pbnQubUlzT25DdXJ2ZTt9CiAgbnNQYXRoUG9pbnQoZmxvYXQgYVgsIGZsb2F0IGFZKSB7eCA9
IGFYOyB5ID0gYVk7bUlzT25DdXJ2ZT0xO30KICBuc1BhdGhQb2ludChmbG9hdCBhWCwgZmxvYXQg
YVksUFJCb29sIGFJc09uQ3VydmUpIHt4ID0gYVg7IHkgPSBhWTttSXNPbkN1cnZlPWFJc09uQ3Vy
dmU7fQoKfTsKIyA0NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2dmeC9uc1JlY3QuaCIgMgojIDEg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9nZngvbnNTaXplLmgiIDEKIyA0NyAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2dmeC9uc1NpemUuaCIKc3RydWN0IG5zU2l6ZSB7CiAgbnNjb29yZCB3aWR0aCwg
aGVpZ2h0OwoKCiAgbnNTaXplKCkge30KICBuc1NpemUoY29uc3QgbnNTaXplJiBhU2l6ZSkge3dp
ZHRoID0gYVNpemUud2lkdGg7IGhlaWdodCA9IGFTaXplLmhlaWdodDt9CiAgbnNTaXplKG5zY29v
cmQgYVdpZHRoLCBuc2Nvb3JkIGFIZWlnaHQpIHt3aWR0aCA9IGFXaWR0aDsgaGVpZ2h0ID0gYUhl
aWdodDt9CgogIHZvaWQgU2l6ZVRvKG5zY29vcmQgYVdpZHRoLCBuc2Nvb3JkIGFIZWlnaHQpIHt3
aWR0aCA9IGFXaWR0aDsgaGVpZ2h0ID0gYUhlaWdodDt9CiAgdm9pZCBTaXplQnkobnNjb29yZCBh
RGVsdGFXaWR0aCwgbnNjb29yZCBhRGVsdGFIZWlnaHQpIHt3aWR0aCArPSBhRGVsdGFXaWR0aDsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhlaWdodCArPSBhRGVsdGFIZWlnaHQ7fQoKCgogIFBSQm9vbCBvcGVyYXRvcj09KGNvbnN0IG5z
U2l6ZSYgYVNpemUpIGNvbnN0IHsKICAgIHJldHVybiAoUFJCb29sKSAoKHdpZHRoID09IGFTaXpl
LndpZHRoKSAmJiAoaGVpZ2h0ID09IGFTaXplLmhlaWdodCkpOwogIH0KICBQUkJvb2wgb3BlcmF0
b3IhPShjb25zdCBuc1NpemUmIGFTaXplKSBjb25zdCB7CiAgICByZXR1cm4gKFBSQm9vbCkgKCh3
aWR0aCAhPSBhU2l6ZS53aWR0aCkgfHwgKGhlaWdodCAhPSBhU2l6ZS5oZWlnaHQpKTsKICB9CiAg
bnNTaXplIG9wZXJhdG9yKyhjb25zdCBuc1NpemUmIGFTaXplKSBjb25zdCB7CiAgICByZXR1cm4g
bnNTaXplKHdpZHRoICsgYVNpemUud2lkdGgsIGhlaWdodCArIGFTaXplLmhlaWdodCk7CiAgfQog
IG5zU2l6ZSBvcGVyYXRvci0oY29uc3QgbnNTaXplJiBhU2l6ZSkgY29uc3QgewogICAgcmV0dXJu
IG5zU2l6ZSh3aWR0aCAtIGFTaXplLndpZHRoLCBoZWlnaHQgLSBhU2l6ZS5oZWlnaHQpOwogIH0K
ICBuc1NpemUmIG9wZXJhdG9yKz0oY29uc3QgbnNTaXplJiBhU2l6ZSkge3dpZHRoICs9IGFTaXpl
LndpZHRoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0
ICs9IGFTaXplLmhlaWdodDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAqdGhpczt9CiAgbnNTaXplJiBvcGVyYXRvci09KGNvbnN0IG5zU2l6ZSYgYVNp
emUpIHt3aWR0aCAtPSBhU2l6ZS53aWR0aDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhlaWdodCAtPSBhU2l6ZS5oZWlnaHQ7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7fQp9OwojIDQ3ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvZ2Z4L25zUmVjdC5oIiAyCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94
cGNvbS9uc1VuaXRDb252ZXJzaW9uLmgiIDEKIyA0MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hw
Y29tL25zVW5pdENvbnZlcnNpb24uaCIKIyAxICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAxIDMKIyAy
OSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwpleHRlcm4gIkMiIHsKCgoKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy9odWdlX3ZhbC5oIiAxIDMKIyAzNCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCgoK
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbmFuLmgiIDEgMwojIDM4ICIvdXNyL2luY2x1ZGUvbWF0
aC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhkZWYuaCIgMSAzCiMgMjkgIi91
c3IvaW5jbHVkZS9iaXRzL21hdGhkZWYuaCIgMwp0eXBlZGVmIGxvbmcgZG91YmxlIGZsb2F0X3Q7
Cgp0eXBlZGVmIGxvbmcgZG91YmxlIGRvdWJsZV90OwojIDQxICIvdXNyL2luY2x1ZGUvbWF0aC5o
IiAyIDMKIyA2NSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L21hdGhjYWxscy5oIiAxIDMKIyA1MyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMK
CgpleHRlcm4gZG91YmxlIGFjb3MgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91Ymxl
IF9fYWNvcyAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIGFzaW4gKGRvdWJs
ZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fYXNpbiAoZG91YmxlIF9feCkgdGhyb3cg
KCk7CgpleHRlcm4gZG91YmxlIGF0YW4gKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91
YmxlIF9fYXRhbiAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIGF0YW4yIChk
b3VibGUgX195LCBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2F0YW4yIChk
b3VibGUgX195LCBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGNvcyAoZG91
YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19jb3MgKGRvdWJsZSBfX3gpIHRocm93
ICgpOwoKZXh0ZXJuIGRvdWJsZSBzaW4gKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91
YmxlIF9fc2luIChkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBkb3VibGUgdGFuIChkb3Vi
bGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3RhbiAoZG91YmxlIF9feCkgdGhyb3cg
KCk7CgoKCgpleHRlcm4gZG91YmxlIGNvc2ggKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4g
ZG91YmxlIF9fY29zaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIHNpbmgg
KGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fc2luaCAoZG91YmxlIF9feCkg
dGhyb3cgKCk7CgpleHRlcm4gZG91YmxlIHRhbmggKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRl
cm4gZG91YmxlIF9fdGFuaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gdm9pZCBz
aW5jb3MgKGRvdWJsZSBfX3gsIGRvdWJsZSAqX19zaW54LCBkb3VibGUgKl9fY29zeCkgdGhyb3cg
KCk7IGV4dGVybiB2b2lkIF9fc2luY29zIChkb3VibGUgX194LCBkb3VibGUgKl9fc2lueCwgZG91
YmxlICpfX2Nvc3gpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZG91YmxlIGFjb3NoIChkb3VibGUg
X194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2Fjb3NoIChkb3VibGUgX194KSB0aHJvdyAo
KTsKCmV4dGVybiBkb3VibGUgYXNpbmggKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91
YmxlIF9fYXNpbmggKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGRvdWJsZSBhdGFuaCAo
ZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19hdGFuaCAoZG91YmxlIF9feCkg
dGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gZG91YmxlIGV4cCAoZG91YmxlIF9feCkgdGhyb3cgKCk7
IGV4dGVybiBkb3VibGUgX19leHAgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBkb3Vi
bGUgZnJleHAgKGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCkgdGhyb3cgKCk7IGV4dGVybiBk
b3VibGUgX19mcmV4cCAoZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KSB0aHJvdyAoKTsKCgpl
eHRlcm4gZG91YmxlIGxkZXhwIChkb3VibGUgX194LCBpbnQgX19leHBvbmVudCkgdGhyb3cgKCk7
IGV4dGVybiBkb3VibGUgX19sZGV4cCAoZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpIHRocm93
ICgpOwoKCmV4dGVybiBkb3VibGUgbG9nIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRv
dWJsZSBfX2xvZyAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBsb2cxMCAo
ZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19sb2cxMCAoZG91YmxlIF9feCkg
dGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBtb2RmIChkb3VibGUgX194LCBkb3VibGUgKl9faXB0
cikgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19tb2RmIChkb3VibGUgX194LCBkb3VibGUgKl9f
aXB0cikgdGhyb3cgKCk7CgoKCgpleHRlcm4gZG91YmxlIGV4cDEwIChkb3VibGUgX194KSB0aHJv
dyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2V4cDEwIChkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVy
biBkb3VibGUgcG93MTAgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fcG93
MTAgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCmV4dGVybiBkb3VibGUgZXhwbTEgKGRvdWJs
ZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZXhwbTEgKGRvdWJsZSBfX3gpIHRocm93
ICgpOwoKCmV4dGVybiBkb3VibGUgbG9nMXAgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4g
ZG91YmxlIF9fbG9nMXAgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgbG9n
YiAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19sb2diIChkb3VibGUgX194
KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGRvdWJsZSBleHAyIChkb3VibGUgX194KSB0aHJvdyAo
KTsgZXh0ZXJuIGRvdWJsZSBfX2V4cDIgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBk
b3VibGUgbG9nMiAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19sb2cyIChk
b3VibGUgX194KSB0aHJvdyAoKTsKCgoKCgoKCgpleHRlcm4gZG91YmxlIHBvdyAoZG91YmxlIF9f
eCwgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19wb3cgKGRvdWJsZSBfX3gs
IGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgc3FydCAoZG91YmxlIF9feCkg
dGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19zcXJ0IChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoK
CgpleHRlcm4gZG91YmxlIGh5cG90IChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKTsg
ZXh0ZXJuIGRvdWJsZSBfX2h5cG90IChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKTsK
CgoKCgoKZXh0ZXJuIGRvdWJsZSBjYnJ0IChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRv
dWJsZSBfX2NicnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCgoKCmV4dGVybiBkb3VibGUg
Y2VpbCAoZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBl
eHRlcm4gZG91YmxlIF9fY2VpbCAoZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCmV4dGVybiBkb3VibGUgZmFicyAoZG91YmxlIF9feCkgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fZmFicyAoZG91Ymxl
IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBkb3Vi
bGUgZmxvb3IgKGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsgZXh0ZXJuIGRvdWJsZSBfX2Zsb29yIChkb3VibGUgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGRvdWJsZSBmbW9kIChkb3VibGUgX194LCBkb3Vi
bGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2Ztb2QgKGRvdWJsZSBfX3gsIGRvdWJs
ZSBfX3kpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBfX2lzaW5mIChkb3VibGUgX192YWx1ZSkg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19maW5p
dGUgKGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgoKCgoKZXh0ZXJuIGludCBpc2luZiAoZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZSAoZG91YmxlIF9fdmFsdWUp
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZG91YmxlIGRy
ZW0gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZHJl
bSAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKCmV4dGVybiBkb3VibGUgc2ln
bmlmaWNhbmQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fc2lnbmlmaWNh
bmQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCmV4dGVybiBkb3VibGUgY29weXNpZ24gKGRv
dWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsgZXh0ZXJuIGRvdWJsZSBfX2NvcHlzaWduIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCmV4dGVybiBkb3VibGUgbmFu
IChfX2NvbnN0IGNoYXIgKl9fdGFnYikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOyBleHRlcm4gZG91YmxlIF9fbmFuIChfX2NvbnN0IGNoYXIgKl9fdGFnYikgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCmV4dGVybiBpbnQgX19pc25hbiAoZG91
YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0
ZXJuIGludCBpc25hbiAoZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKCgpleHRlcm4gZG91YmxlIGowIChkb3VibGUpIHRocm93ICgpOyBleHRlcm4g
ZG91YmxlIF9fajAgKGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBkb3VibGUgajEgKGRvdWJsZSkg
dGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19qMSAoZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGRv
dWJsZSBqbiAoaW50LCBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fam4gKGludCwg
ZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGRvdWJsZSB5MCAoZG91YmxlKSB0aHJvdyAoKTsgZXh0
ZXJuIGRvdWJsZSBfX3kwIChkb3VibGUpIHRocm93ICgpOwpleHRlcm4gZG91YmxlIHkxIChkb3Vi
bGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9feTEgKGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVy
biBkb3VibGUgeW4gKGludCwgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3luIChp
bnQsIGRvdWJsZSkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBkb3VibGUgZXJmIChkb3VibGUpIHRo
cm93ICgpOyBleHRlcm4gZG91YmxlIF9fZXJmIChkb3VibGUpIHRocm93ICgpOwpleHRlcm4gZG91
YmxlIGVyZmMgKGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19lcmZjIChkb3VibGUp
IHRocm93ICgpOwpleHRlcm4gZG91YmxlIGxnYW1tYSAoZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJu
IGRvdWJsZSBfX2xnYW1tYSAoZG91YmxlKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGRvdWJsZSB0
Z2FtbWEgKGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX190Z2FtbWEgKGRvdWJsZSkg
dGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGRvdWJsZSBnYW1tYSAoZG91YmxlKSB0aHJvdyAoKTsgZXh0
ZXJuIGRvdWJsZSBfX2dhbW1hIChkb3VibGUpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZG91Ymxl
IGxnYW1tYV9yIChkb3VibGUsIGludCAqX19zaWduZ2FtcCkgdGhyb3cgKCk7IGV4dGVybiBkb3Vi
bGUgX19sZ2FtbWFfciAoZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApIHRocm93ICgpOwoKCgoKCgoK
ZXh0ZXJuIGRvdWJsZSByaW50IChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBf
X3JpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgbmV4dGFmdGVyIChk
b3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7IGV4dGVybiBkb3VibGUgX19uZXh0YWZ0ZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCmV4dGVybiBkb3VibGUgbmV4dHRv
d2FyZCAoZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19uZXh0dG93YXJkIChkb3VibGUgX194LCBs
b25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoK
ZXh0ZXJuIGRvdWJsZSByZW1haW5kZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgp
OyBleHRlcm4gZG91YmxlIF9fcmVtYWluZGVyIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJv
dyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSBzY2FsYm4gKGRvdWJsZSBfX3gsIGludCBfX24pIHRocm93
ICgpOyBleHRlcm4gZG91YmxlIF9fc2NhbGJuIChkb3VibGUgX194LCBpbnQgX19uKSB0aHJvdyAo
KTsKCgoKZXh0ZXJuIGludCBpbG9nYiAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBpbnQg
X19pbG9nYiAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gZG91YmxlIHNjYWxibG4g
KGRvdWJsZSBfX3gsIGxvbmcgaW50IF9fbikgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19zY2Fs
YmxuIChkb3VibGUgX194LCBsb25nIGludCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gZG91Ymxl
IG5lYXJieWludCAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19uZWFyYnlp
bnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIHJvdW5kIChkb3VibGUg
X194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3JvdW5kIChkb3VibGUgX194KSB0aHJvdyAo
KTsKCgoKZXh0ZXJuIGRvdWJsZSB0cnVuYyAoZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fdHJ1bmMgKGRvdWJsZSBfX3gpIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBkb3VibGUgcmVt
cXVvIChkb3VibGUgX194LCBkb3VibGUgX195LCBpbnQgKl9fcXVvKSB0aHJvdyAoKTsgZXh0ZXJu
IGRvdWJsZSBfX3JlbXF1byAoZG91YmxlIF9feCwgZG91YmxlIF9feSwgaW50ICpfX3F1bykgdGhy
b3cgKCk7CgoKCgoKCmV4dGVybiBsb25nIGludCBscmludCAoZG91YmxlIF9feCkgdGhyb3cgKCk7
IGV4dGVybiBsb25nIGludCBfX2xyaW50IChkb3VibGUgX194KSB0aHJvdyAoKTsKZXh0ZXJuIGxv
bmcgbG9uZyBpbnQgbGxyaW50IChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgbG9u
ZyBpbnQgX19sbHJpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gbG9uZyBpbnQg
bHJvdW5kIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgaW50IF9fbHJvdW5kIChk
b3VibGUgX194KSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyb3VuZCAoZG91Ymxl
IF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxyb3VuZCAoZG91YmxlIF9f
eCkgdGhyb3cgKCk7CgoKCmV4dGVybiBkb3VibGUgZmRpbSAoZG91YmxlIF9feCwgZG91YmxlIF9f
eSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19mZGltIChkb3VibGUgX194LCBkb3VibGUgX195
KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGZtYXggKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kp
IHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fZm1heCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkg
dGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBmbWluIChkb3VibGUgX194LCBkb3VibGUgX195KSB0
aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2ZtaW4gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRo
cm93ICgpOwoKCgpleHRlcm4gaW50IF9fZnBjbGFzc2lmeSAoZG91YmxlIF9fdmFsdWUpIHRocm93
ICgpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19zaWdu
Yml0IChkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgoKCmV4dGVybiBkb3VibGUgZm1hIChkb3VibGUgX194LCBkb3VibGUgX195LCBkb3Vi
bGUgX196KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2ZtYSAoZG91YmxlIF9feCwgZG91Ymxl
IF9feSwgZG91YmxlIF9feikgdGhyb3cgKCk7CgoKCgpleHRlcm4gZG91YmxlIHNjYWxiIChkb3Vi
bGUgX194LCBkb3VibGUgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX3NjYWxiIChkb3Vi
bGUgX194LCBkb3VibGUgX19uKSB0aHJvdyAoKTsKIyA2NiAiL3Vzci9pbmNsdWRlL21hdGguaCIg
MiAzCiMgODggIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9t
YXRoY2FsbHMuaCIgMSAzCiMgNTMgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCgoK
ZXh0ZXJuIGZsb2F0IGFjb3NmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19h
Y29zZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBhc2luZiAoZmxvYXQgX194
KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fYXNpbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7Cgpl
eHRlcm4gZmxvYXQgYXRhbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2F0
YW5mIChmbG9hdCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IGF0YW4yZiAoZmxvYXQgX195
LCBmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19hdGFuMmYgKGZsb2F0IF9feSwg
ZmxvYXQgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgY29zZiAoZmxvYXQgX194KSB0aHJv
dyAoKTsgZXh0ZXJuIGZsb2F0IF9fY29zZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBm
bG9hdCBzaW5mIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19zaW5mIChmbG9h
dCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IHRhbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7
IGV4dGVybiBmbG9hdCBfX3RhbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gZmxv
YXQgY29zaGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2Nvc2hmIChmbG9h
dCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IHNpbmhmIChmbG9hdCBfX3gpIHRocm93ICgp
OyBleHRlcm4gZmxvYXQgX19zaW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBmbG9h
dCB0YW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fdGFuaGYgKGZsb2F0
IF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gdm9pZCBzaW5jb3NmIChmbG9hdCBfX3gsIGZsb2F0
ICpfX3NpbngsIGZsb2F0ICpfX2Nvc3gpIHRocm93ICgpOyBleHRlcm4gdm9pZCBfX3NpbmNvc2Yg
KGZsb2F0IF9feCwgZmxvYXQgKl9fc2lueCwgZmxvYXQgKl9fY29zeCkgdGhyb3cgKCk7CgoKCgoK
CmV4dGVybiBmbG9hdCBhY29zaGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBf
X2Fjb3NoZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCBhc2luaGYgKGZsb2F0
IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2FzaW5oZiAoZmxvYXQgX194KSB0aHJvdyAo
KTsKCmV4dGVybiBmbG9hdCBhdGFuaGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9h
dCBfX2F0YW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBmbG9hdCBleHBm
IChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19leHBmIChmbG9hdCBfX3gpIHRo
cm93ICgpOwoKCmV4dGVybiBmbG9hdCBmcmV4cGYgKGZsb2F0IF9feCwgaW50ICpfX2V4cG9uZW50
KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZnJleHBmIChmbG9hdCBfX3gsIGludCAqX19leHBv
bmVudCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGxkZXhwZiAoZmxvYXQgX194LCBpbnQgX19l
eHBvbmVudCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2xkZXhwZiAoZmxvYXQgX194LCBpbnQg
X19leHBvbmVudCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGxvZ2YgKGZsb2F0IF9feCkgdGhy
b3cgKCk7IGV4dGVybiBmbG9hdCBfX2xvZ2YgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJu
IGZsb2F0IGxvZzEwZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fbG9nMTBm
IChmbG9hdCBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBmbG9hdCBtb2RmZiAoZmxvYXQgX194LCBm
bG9hdCAqX19pcHRyKSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fbW9kZmYgKGZsb2F0IF9feCwg
ZmxvYXQgKl9faXB0cikgdGhyb3cgKCk7CgoKCgpleHRlcm4gZmxvYXQgZXhwMTBmIChmbG9hdCBf
X3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19leHAxMGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7
CgpleHRlcm4gZmxvYXQgcG93MTBmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQg
X19wb3cxMGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGZsb2F0IGV4cG0xZiAo
ZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZXhwbTFmIChmbG9hdCBfX3gpIHRo
cm93ICgpOwoKCmV4dGVybiBmbG9hdCBsb2cxcGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVy
biBmbG9hdCBfX2xvZzFwZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgbG9n
YmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2xvZ2JmIChmbG9hdCBfX3gp
IHRocm93ICgpOwoKCgoKCgpleHRlcm4gZmxvYXQgZXhwMmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7
IGV4dGVybiBmbG9hdCBfX2V4cDJmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBmbG9h
dCBsb2cyZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fbG9nMmYgKGZsb2F0
IF9feCkgdGhyb3cgKCk7CgoKCgoKCgoKZXh0ZXJuIGZsb2F0IHBvd2YgKGZsb2F0IF9feCwgZmxv
YXQgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fcG93ZiAoZmxvYXQgX194LCBmbG9hdCBf
X3kpIHRocm93ICgpOwoKCmV4dGVybiBmbG9hdCBzcXJ0ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsg
ZXh0ZXJuIGZsb2F0IF9fc3FydGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGZs
b2F0IGh5cG90ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOyBleHRlcm4gZmxvYXQg
X19oeXBvdGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGZs
b2F0IGNicnRmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19jYnJ0ZiAoZmxv
YXQgX194KSB0aHJvdyAoKTsKCgoKCgoKCgpleHRlcm4gZmxvYXQgY2VpbGYgKGZsb2F0IF9feCkg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19jZWls
ZiAoZmxvYXQgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0
ZXJuIGZsb2F0IGZhYnNmIChmbG9hdCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fZmFic2YgKGZsb2F0IF9feCkgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBmbG9vcmYgKGZsb2F0IF9feCkg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19mbG9v
cmYgKGZsb2F0IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4
dGVybiBmbG9hdCBmbW9kZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOyBleHRlcm4g
ZmxvYXQgX19mbW9kZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOwoKCgoKZXh0ZXJu
IGludCBfX2lzaW5mZiAoZmxvYXQgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19maW5pdGVmIChmbG9hdCBfX3ZhbHVlKSB0aHJvdyAo
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKZXh0ZXJuIGludCBpc2luZmYgKGZs
b2F0IF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRl
cm4gaW50IGZpbml0ZWYgKGZsb2F0IF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKCgpleHRlcm4gZmxvYXQgZHJlbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0
aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZHJlbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJv
dyAoKTsKCgoKZXh0ZXJuIGZsb2F0IHNpZ25pZmljYW5kZiAoZmxvYXQgX194KSB0aHJvdyAoKTsg
ZXh0ZXJuIGZsb2F0IF9fc2lnbmlmaWNhbmRmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgoKCmV4
dGVybiBmbG9hdCBjb3B5c2lnbmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2NvcHlzaWduZiAoZmxvYXQg
X194LCBmbG9hdCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoK
CgoKZXh0ZXJuIGZsb2F0IG5hbmYgKF9fY29uc3QgY2hhciAqX190YWdiKSB0aHJvdyAoKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX25hbmYgKF9fY29uc3QgY2hh
ciAqX190YWdiKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKZXh0
ZXJuIGludCBfX2lzbmFuZiAoZmxvYXQgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCgpleHRlcm4gaW50IGlzbmFuZiAoZmxvYXQgX192YWx1ZSkgdGhyb3cg
KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBqMGYgKGZsb2F0
KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fajBmIChmbG9hdCkgdGhyb3cgKCk7CmV4dGVybiBm
bG9hdCBqMWYgKGZsb2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fajFmIChmbG9hdCkgdGhy
b3cgKCk7CmV4dGVybiBmbG9hdCBqbmYgKGludCwgZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxv
YXQgX19qbmYgKGludCwgZmxvYXQpIHRocm93ICgpOwpleHRlcm4gZmxvYXQgeTBmIChmbG9hdCkg
dGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3kwZiAoZmxvYXQpIHRocm93ICgpOwpleHRlcm4gZmxv
YXQgeTFmIChmbG9hdCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3kxZiAoZmxvYXQpIHRocm93
ICgpOwpleHRlcm4gZmxvYXQgeW5mIChpbnQsIGZsb2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0
IF9feW5mIChpbnQsIGZsb2F0KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGZsb2F0IGVyZmYgKGZs
b2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZXJmZiAoZmxvYXQpIHRocm93ICgpOwpleHRl
cm4gZmxvYXQgZXJmY2YgKGZsb2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZXJmY2YgKGZs
b2F0KSB0aHJvdyAoKTsKZXh0ZXJuIGZsb2F0IGxnYW1tYWYgKGZsb2F0KSB0aHJvdyAoKTsgZXh0
ZXJuIGZsb2F0IF9fbGdhbW1hZiAoZmxvYXQpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZmxvYXQg
dGdhbW1hZiAoZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX190Z2FtbWFmIChmbG9hdCkg
dGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGZsb2F0IGdhbW1hZiAoZmxvYXQpIHRocm93ICgpOyBleHRl
cm4gZmxvYXQgX19nYW1tYWYgKGZsb2F0KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGZsb2F0IGxn
YW1tYWZfciAoZmxvYXQsIGludCAqX19zaWduZ2FtcCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBf
X2xnYW1tYWZfciAoZmxvYXQsIGludCAqX19zaWduZ2FtcCkgdGhyb3cgKCk7CgoKCgoKCgpleHRl
cm4gZmxvYXQgcmludGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3JpbnRm
IChmbG9hdCBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBmbG9hdCBuZXh0YWZ0ZXJmIChmbG9hdCBf
X3gsIGZsb2F0IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRl
cm4gZmxvYXQgX19uZXh0YWZ0ZXJmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKZXh0ZXJuIGZsb2F0IG5leHR0b3dhcmRmIChmbG9h
dCBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOyBleHRlcm4gZmxvYXQgX19uZXh0dG93YXJkZiAoZmxvYXQgX194LCBsb25nIGRvdWJsZSBf
X3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGZsb2F0
IHJlbWFpbmRlcmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0
IF9fcmVtYWluZGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOwoKCgpleHRlcm4g
ZmxvYXQgc2NhbGJuZiAoZmxvYXQgX194LCBpbnQgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0
IF9fc2NhbGJuZiAoZmxvYXQgX194LCBpbnQgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBp
bG9nYmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBpbnQgX19pbG9nYmYgKGZsb2F0IF9f
eCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gZmxvYXQgc2NhbGJsbmYgKGZsb2F0IF9feCwgbG9uZyBp
bnQgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fc2NhbGJsbmYgKGZsb2F0IF9feCwgbG9u
ZyBpbnQgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZsb2F0IG5lYXJieWludGYgKGZsb2F0IF9f
eCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX25lYXJieWludGYgKGZsb2F0IF9feCkgdGhyb3cg
KCk7CgoKCmV4dGVybiBmbG9hdCByb3VuZGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBm
bG9hdCBfX3JvdW5kZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZsb2F0IHRydW5j
ZiAoZmxvYXQgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVy
biBmbG9hdCBfX3RydW5jZiAoZmxvYXQgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CgoKCgpleHRlcm4gZmxvYXQgcmVtcXVvZiAoZmxvYXQgX194LCBmbG9hdCBfX3ks
IGludCAqX19xdW8pIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19yZW1xdW9mIChmbG9hdCBfX3gs
IGZsb2F0IF9feSwgaW50ICpfX3F1bykgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBsb25nIGludCBs
cmludGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGludCBfX2xyaW50ZiAoZmxv
YXQgX194KSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyaW50ZiAoZmxvYXQgX194
KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJpbnRmIChmbG9hdCBfX3gpIHRo
cm93ICgpOwoKCgpleHRlcm4gbG9uZyBpbnQgbHJvdW5kZiAoZmxvYXQgX194KSB0aHJvdyAoKTsg
ZXh0ZXJuIGxvbmcgaW50IF9fbHJvdW5kZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKZXh0ZXJuIGxv
bmcgbG9uZyBpbnQgbGxyb3VuZGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGxv
bmcgaW50IF9fbGxyb3VuZGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCBm
ZGltZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19mZGlt
ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBmbG9hdCBmbWF4ZiAo
ZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19mbWF4ZiAoZmxv
YXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBmbG9hdCBmbWluZiAoZmxvYXQg
X194LCBmbG9hdCBfX3kpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19mbWluZiAoZmxvYXQgX194
LCBmbG9hdCBfX3kpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IF9fZnBjbGFzc2lmeWYgKGZsb2F0
IF9fdmFsdWUpIHRocm93ICgpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4
dGVybiBpbnQgX19zaWduYml0ZiAoZmxvYXQgX192YWx1ZSkgdGhyb3cgKCkKICAgICBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBmbG9hdCBmbWFmIChmbG9hdCBfX3gsIGZs
b2F0IF9feSwgZmxvYXQgX196KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZm1hZiAoZmxvYXQg
X194LCBmbG9hdCBfX3ksIGZsb2F0IF9feikgdGhyb3cgKCk7CgoKCgpleHRlcm4gZmxvYXQgc2Nh
bGJmIChmbG9hdCBfX3gsIGZsb2F0IF9fbikgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3NjYWxi
ZiAoZmxvYXQgX194LCBmbG9hdCBfX24pIHRocm93ICgpOwojIDg5ICIvdXNyL2luY2x1ZGUvbWF0
aC5oIiAyIDMKIyAxMDkgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy9tYXRoY2FsbHMuaCIgMSAzCiMgNTMgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5o
IiAzCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGFjb3NsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp
OyBleHRlcm4gbG9uZyBkb3VibGUgX19hY29zbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsK
CmV4dGVybiBsb25nIGRvdWJsZSBhc2lubCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fYXNpbmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRl
cm4gbG9uZyBkb3VibGUgYXRhbmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBs
b25nIGRvdWJsZSBfX2F0YW5sIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGxv
bmcgZG91YmxlIGF0YW4ybCAobG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3gpIHRocm93
ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19hdGFuMmwgKGxvbmcgZG91YmxlIF9feSwgbG9uZyBk
b3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgY29zbCAobG9uZyBkb3Vi
bGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY29zbCAobG9uZyBkb3VibGUg
X194KSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSBzaW5sIChsb25nIGRvdWJsZSBfX3gp
IHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19zaW5sIChsb25nIGRvdWJsZSBfX3gpIHRo
cm93ICgpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIHRhbmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cg
KCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3RhbmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7
CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgY29zaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7
IGV4dGVybiBsb25nIGRvdWJsZSBfX2Nvc2hsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoK
ZXh0ZXJuIGxvbmcgZG91YmxlIHNpbmhsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRl
cm4gbG9uZyBkb3VibGUgX19zaW5obCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVy
biBsb25nIGRvdWJsZSB0YW5obCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fdGFuaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4g
dm9pZCBzaW5jb3NsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX3NpbngsIGxvbmcg
ZG91YmxlICpfX2Nvc3gpIHRocm93ICgpOyBleHRlcm4gdm9pZCBfX3NpbmNvc2wgKGxvbmcgZG91
YmxlIF9feCwgbG9uZyBkb3VibGUgKl9fc2lueCwgbG9uZyBkb3VibGUgKl9fY29zeCkgdGhyb3cg
KCk7CgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBhY29zaGwgKGxvbmcgZG91YmxlIF9feCkgdGhy
b3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Fjb3NobCAobG9uZyBkb3VibGUgX194KSB0aHJv
dyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSBhc2luaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cg
KCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2FzaW5obCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAo
KTsKCmV4dGVybiBsb25nIGRvdWJsZSBhdGFuaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7
IGV4dGVybiBsb25nIGRvdWJsZSBfX2F0YW5obCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsK
CgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBleHBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp
OyBleHRlcm4gbG9uZyBkb3VibGUgX19leHBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoK
CmV4dGVybiBsb25nIGRvdWJsZSBmcmV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50ICpfX2V4cG9u
ZW50KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZnJleHBsIChsb25nIGRvdWJsZSBf
X3gsIGludCAqX19leHBvbmVudCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxkZXhw
bCAobG9uZyBkb3VibGUgX194LCBpbnQgX19leHBvbmVudCkgdGhyb3cgKCk7IGV4dGVybiBsb25n
IGRvdWJsZSBfX2xkZXhwbCAobG9uZyBkb3VibGUgX194LCBpbnQgX19leHBvbmVudCkgdGhyb3cg
KCk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxvZ2wgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7
IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZ2wgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIGxvZzEwbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fbG9nMTBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4
dGVybiBsb25nIGRvdWJsZSBtb2RmbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSAqX19p
cHRyKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbW9kZmwgKGxvbmcgZG91YmxlIF9f
eCwgbG9uZyBkb3VibGUgKl9faXB0cikgdGhyb3cgKCk7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUg
ZXhwMTBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19l
eHAxMGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgcG93
MTBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19wb3cx
MGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGV4
cG0xbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXhw
bTFsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBsb2cx
cGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZzFw
bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nYmwg
KGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZ2JsIChs
b25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgZXhwMmwg
KGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2V4cDJsIChs
b25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBsb2cybCAobG9u
ZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9nMmwgKGxvbmcg
ZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHBvd2wgKGxv
bmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9fcG93bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOwoK
CmV4dGVybiBsb25nIGRvdWJsZSBzcXJ0bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fc3FydGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIGh5cG90bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBf
X3kpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19oeXBvdGwgKGxvbmcgZG91YmxlIF9f
eCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNi
cnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19jYnJ0
bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUg
Y2VpbGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19jZWlsbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAo
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZhYnNs
IChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fZmFic2wgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmbG9vcmwgKGxv
bmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRl
cm4gbG9uZyBkb3VibGUgX19mbG9vcmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmbW9kbCAobG9uZyBk
b3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUg
X19mbW9kbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCgoK
ZXh0ZXJuIGludCBfX2lzaW5mbCAobG9uZyBkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19maW5pdGVsIChsb25nIGRvdWJs
ZSBfX3ZhbHVlKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKZXh0
ZXJuIGludCBpc2luZmwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIHRocm93ICgpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZWwgKGxvbmcgZG91YmxlIF9fdmFs
dWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gbG9uZyBk
b3VibGUgZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUg
X195KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNpZ25pZmljYW5kbCAobG9uZyBk
b3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2lnbmlmaWNhbmRsIChs
b25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBjb3B5c2ln
bmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2NvcHlzaWdubCAobG9uZyBk
b3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIG5hbmwgKF9fY29uc3QgY2hhciAqX190
YWdiKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRv
dWJsZSBfX25hbmwgKF9fY29uc3QgY2hhciAqX190YWdiKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CgoKCgoKZXh0ZXJuIGludCBfX2lzbmFubCAobG9uZyBkb3VibGUgX192
YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gaW50
IGlzbmFubCAobG9uZyBkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBqMGwgKGxvbmcgZG91YmxlKSB0aHJvdyAo
KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fajBsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVy
biBsb25nIGRvdWJsZSBqMWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9fajFsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGRvdWJsZSBqbmwg
KGludCwgbG9uZyBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19qbmwgKGlu
dCwgbG9uZyBkb3VibGUpIHRocm93ICgpOwpleHRlcm4gbG9uZyBkb3VibGUgeTBsIChsb25nIGRv
dWJsZSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3kwbCAobG9uZyBkb3VibGUpIHRo
cm93ICgpOwpleHRlcm4gbG9uZyBkb3VibGUgeTFsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7IGV4
dGVybiBsb25nIGRvdWJsZSBfX3kxbCAobG9uZyBkb3VibGUpIHRocm93ICgpOwpleHRlcm4gbG9u
ZyBkb3VibGUgeW5sIChpbnQsIGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9feW5sIChpbnQsIGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcg
ZG91YmxlIGVyZmwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
ZXJmbCAobG9uZyBkb3VibGUpIHRocm93ICgpOwpleHRlcm4gbG9uZyBkb3VibGUgZXJmY2wgKGxv
bmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXJmY2wgKGxvbmcgZG91
YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGxnYW1tYWwgKGxvbmcgZG91YmxlKSB0
aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbGdhbW1hbCAobG9uZyBkb3VibGUpIHRocm93
ICgpOwoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgdGdhbW1hbCAobG9uZyBkb3VibGUpIHRocm93
ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX190Z2FtbWFsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7
CgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGdhbW1hbCAobG9uZyBkb3VibGUpIHRocm93ICgpOyBl
eHRlcm4gbG9uZyBkb3VibGUgX19nYW1tYWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKCgoKCgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIGxnYW1tYWxfciAobG9uZyBkb3VibGUsIGludCAqX19zaWduZ2Ft
cCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xnYW1tYWxfciAobG9uZyBkb3VibGUs
IGludCAqX19zaWduZ2FtcCkgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgcmlu
dGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3JpbnRs
IChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBuZXh0YWZ0
ZXJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19uZXh0YWZ0ZXJsIChsb25n
IGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIG5leHR0b3dhcmRsIChsb25nIGRvdWJsZSBf
X3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OyBleHRlcm4gbG9uZyBkb3VibGUgX19uZXh0dG93YXJkbCAobG9uZyBkb3VibGUgX194LCBsb25n
IGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0
ZXJuIGxvbmcgZG91YmxlIHJlbWFpbmRlcmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUg
X195KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fcmVtYWluZGVybCAobG9uZyBkb3Vi
bGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCgpleHRlcm4gbG9uZyBkb3VibGUg
c2NhbGJubCAobG9uZyBkb3VibGUgX194LCBpbnQgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcg
ZG91YmxlIF9fc2NhbGJubCAobG9uZyBkb3VibGUgX194LCBpbnQgX19uKSB0aHJvdyAoKTsKCgoK
ZXh0ZXJuIGludCBpbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBpbnQg
X19pbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gbG9uZyBkb3Vi
bGUgc2NhbGJsbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBpbnQgX19uKSB0aHJvdyAoKTsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fc2NhbGJsbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBpbnQgX19u
KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIG5lYXJieWludGwgKGxvbmcgZG91Ymxl
IF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX25lYXJieWludGwgKGxvbmcgZG91
YmxlIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSByb3VuZGwgKGxvbmcgZG91
YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3JvdW5kbCAobG9uZyBkb3Vi
bGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHRydW5jbCAobG9uZyBkb3Vi
bGUgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25n
IGRvdWJsZSBfX3RydW5jbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgcmVtcXVvbCAobG9uZyBkb3Vi
bGUgX194LCBsb25nIGRvdWJsZSBfX3ksIGludCAqX19xdW8pIHRocm93ICgpOyBleHRlcm4gbG9u
ZyBkb3VibGUgX19yZW1xdW9sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSwgaW50
ICpfX3F1bykgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBsb25nIGludCBscmludGwgKGxvbmcgZG91
YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGludCBfX2xyaW50bCAobG9uZyBkb3VibGUg
X194KSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyaW50bCAobG9uZyBkb3VibGUg
X194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJpbnRsIChsb25nIGRvdWJs
ZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gbG9uZyBpbnQgbHJvdW5kbCAobG9uZyBkb3VibGUg
X194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgaW50IF9fbHJvdW5kbCAobG9uZyBkb3VibGUgX194
KSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyb3VuZGwgKGxvbmcgZG91YmxlIF9f
eCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxyb3VuZGwgKGxvbmcgZG91Ymxl
IF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBmZGltbCAobG9uZyBkb3VibGUg
X194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mZGlt
bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBs
b25nIGRvdWJsZSBmbWF4bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93
ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mbWF4bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRv
dWJsZSBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmbWlubCAobG9uZyBkb3Vi
bGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19m
bWlubCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCgpleHRl
cm4gaW50IF9fZnBjbGFzc2lmeWwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIHRocm93ICgpCiAgICAg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19zaWduYml0bCAobG9u
ZyBkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBmbWFsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91
YmxlIF9feSwgbG9uZyBkb3VibGUgX196KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
Zm1hbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feikg
dGhyb3cgKCk7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgc2NhbGJsIChsb25nIGRvdWJsZSBfX3gs
IGxvbmcgZG91YmxlIF9fbikgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3NjYWxibCAo
bG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX24pIHRocm93ICgpOwojIDExMCAiL3Vzci9p
bmNsdWRlL21hdGguaCIgMiAzCiMgMTI1ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCmV4dGVybiBp
bnQgc2lnbmdhbTsKIyAxNjYgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKZW51bQogIHsKICAgIEZQ
X05BTiwKCiAgICBGUF9JTkZJTklURSwKCiAgICBGUF9aRVJPLAoKICAgIEZQX1NVQk5PUk1BTCwK
CiAgICBGUF9OT1JNQUwKCiAgfTsKIyAyNTIgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKdHlwZWRl
ZiBlbnVtCnsKICBfSUVFRV8gPSAtMSwKICBfU1ZJRF8sCiAgX1hPUEVOXywKICBfUE9TSVhfLAog
IF9JU09DXwp9IF9MSUJfVkVSU0lPTl9UWVBFOwoKCgoKZXh0ZXJuIF9MSUJfVkVSU0lPTl9UWVBF
IF9MSUJfVkVSU0lPTjsKIyAyNzUgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKc3RydWN0IF9fZXhj
ZXB0aW9uCgoKCiAgewogICAgaW50IHR5cGU7CiAgICBjaGFyICpuYW1lOwogICAgZG91YmxlIGFy
ZzE7CiAgICBkb3VibGUgYXJnMjsKICAgIGRvdWJsZSByZXR2YWw7CiAgfTsKCgpleHRlcm4gaW50
IG1hdGhlcnIgKHN0cnVjdCBfX2V4Y2VwdGlvbiAqX19leGMpIHRocm93ICgpOwojIDM2MiAiL3Vz
ci9pbmNsdWRlL21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIg
MSAzCiMgMTI3ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKX19pbmxpbmUgaW50
Cl9fc2lnbmJpdGYgKGZsb2F0IF9feCkgdGhyb3cgKCkKewogIF9fZXh0ZW5zaW9uX18gdW5pb24g
eyBmbG9hdCBfX2Y7IGludCBfX2k7IH0gX191ID0geyBfX2Y6IF9feCB9OwogIHJldHVybiBfX3Uu
X19pIDwgMDsKfQpfX2lubGluZSBpbnQKX19zaWduYml0IChkb3VibGUgX194KSB0aHJvdyAoKQp7
CiAgX19leHRlbnNpb25fXyB1bmlvbiB7IGRvdWJsZSBfX2Q7IGludCBfX2lbMl07IH0gX191ID0g
eyBfX2Q6IF9feCB9OwogIHJldHVybiBfX3UuX19pWzFdIDwgMDsKfQpfX2lubGluZSBpbnQKX19z
aWduYml0bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKQp7CiAgX19leHRlbnNpb25fXyB1bmlv
biB7IGxvbmcgZG91YmxlIF9fbDsgaW50IF9faVszXTsgfSBfX3UgPSB7IF9fbDogX194IH07CiAg
cmV0dXJuIChfX3UuX19pWzJdICYgMHg4MDAwKSAhPSAwOwp9CiMgMjkxICIvdXNyL2luY2x1ZGUv
Yml0cy9tYXRoaW5saW5lLmgiIDMKX19pbmxpbmUgZG91YmxlIF9fc2duIChkb3VibGUpIHRocm93
ICgpOyBfX2lubGluZSBkb3VibGUgX19zZ24gKGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmV0dXJu
IF9feCA9PSAwLjAgPyAwLjAgOiAoX194ID4gMC4wID8gMS4wIDogLTEuMCk7IH0gX19pbmxpbmUg
ZmxvYXQgX19zZ25mIChmbG9hdCkgdGhyb3cgKCk7IF9faW5saW5lIGZsb2F0IF9fc2duZiAoZmxv
YXQgX194KSB0aHJvdyAoKSB7IHJldHVybiBfX3ggPT0gMC4wID8gMC4wIDogKF9feCA+IDAuMCA/
IDEuMCA6IC0xLjApOyB9IF9faW5saW5lIGxvbmcgZG91YmxlIF9fc2dubCAobG9uZyBkb3VibGUp
IHRocm93ICgpOyBfX2lubGluZSBsb25nIGRvdWJsZSBfX3NnbmwgKGxvbmcgZG91YmxlIF9feCkg
dGhyb3cgKCkgeyByZXR1cm4gX194ID09IDAuMCA/IDAuMCA6IChfX3ggPiAwLjAgPyAxLjAgOiAt
MS4wKTsgfQojIDQyNSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5l
IGRvdWJsZSBhdGFuMiAoZG91YmxlIF9feSwgZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3Rl
ciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcGF0YW4iIDogIj10
IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJzdCgxKSIpOyByZXR1cm4gX192
YWx1ZTsgfSBfX2lubGluZSBmbG9hdCBhdGFuMmYgKGZsb2F0IF9feSwgZmxvYXQgX194KSB0aHJv
dyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAo
ImZwYXRhbiIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogInN0KDEp
Iik7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5lIGxvbmcgZG91YmxlIGF0YW4ybCAobG9uZyBk
b3VibGUgX195LCBsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3Vi
bGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgiZnBhdGFuIiA6ICI9dCIgKF9fdmFsdWUp
IDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAic3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0KX19p
bmxpbmUgbG9uZyBkb3VibGUgX19hdGFuMmwgKGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUg
X194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9s
YXRpbGVfXyAoImZwYXRhbiIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChfX3kp
IDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9CgoKX19pbmxpbmUgZG91YmxlIGZtb2QgKGRv
dWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192
YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgiMToJZnByZW1cblx0IiAiZm5zdHN3CSUlYXhcblx0
IiAic2FoZlxuXHQiICJqcAkxYiIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChf
X3kpIDogImF4IiwgImNjIik7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5lIGZsb2F0IGZtb2Rm
IChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBf
X3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCIxOglmcHJlbVxuXHQiICJmbnN0c3cJJSVheFxu
XHQiICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIg
KF9feSkgOiAiYXgiLCAiY2MiKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUgbG9uZyBkb3Vi
bGUgZm1vZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVt
XG5cdCIgImZuc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1
ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1ZTsg
fQojIDQ0MCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5lIGRvdWJs
ZSBzcXJ0IChkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3Jlc3VsdDsg
X19hc20gX192b2xhdGlsZV9fICgiZnNxcnQiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gp
KTsgcmV0dXJuIF9fcmVzdWx0OyB9IF9faW5saW5lIGZsb2F0IHNxcnRmIChmbG9hdCBfX3gpIHRo
cm93ICgpIHsgcmVnaXN0ZXIgZmxvYXQgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZz
cXJ0IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfSBf
X2lubGluZSBsb25nIGRvdWJsZSBzcXJ0bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc3FydCIg
OiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0KX19pbmxp
bmUgbG9uZyBkb3VibGUgX19zcXJ0bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc3FydCIgOiAi
PXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0KCgpfX2lubGlu
ZSBkb3VibGUgZmFicyAoZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZXR1cm4gX19idWlsdGluX2Zh
YnMgKF9feCk7IH0KX19pbmxpbmUgZmxvYXQgZmFic2YgKGZsb2F0IF9feCkgdGhyb3cgKCkgeyBy
ZXR1cm4gX19idWlsdGluX2ZhYnNmIChfX3gpOyB9Cl9faW5saW5lIGxvbmcgZG91YmxlIGZhYnNs
IChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzbCAoX194
KTsgfQpfX2lubGluZSBsb25nIGRvdWJsZSBfX2ZhYnNsIChsb25nIGRvdWJsZSBfX3gpIHRocm93
ICgpIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzbCAoX194KTsgfQojIDQ2NiAiL3Vzci9pbmNsdWRl
L2JpdHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5lIGRvdWJsZSBhdGFuIChkb3VibGUgX194KSB0
aHJvdyAoKSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgi
ZmxkMTsgZnBhdGFuIiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyBy
ZXR1cm4gX19yZXN1bHQ7IH0gX19pbmxpbmUgZmxvYXQgYXRhbmYgKGZsb2F0IF9feCkgdGhyb3cg
KCkgeyByZWdpc3RlciBmbG9hdCBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkMTsg
ZnBhdGFuIiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4g
X19yZXN1bHQ7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgYXRhbmwgKGxvbmcgZG91YmxlIF9feCkg
dGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGls
ZV9fICgiZmxkMTsgZnBhdGFuIiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgx
KSIpOyByZXR1cm4gX19yZXN1bHQ7IH0KCl9faW5saW5lIGxvbmcgZG91YmxlIF9fc2duMWwgKGxv
bmcgZG91YmxlKSB0aHJvdyAoKTsgX19pbmxpbmUgbG9uZyBkb3VibGUgX19zZ24xbCAobG9uZyBk
b3VibGUgX194KSB0aHJvdyAoKSB7IF9fZXh0ZW5zaW9uX18gdW5pb24geyBsb25nIGRvdWJsZSBf
X3hsZDsgdW5zaWduZWQgaW50IF9feGlbM107IH0gX19uID0geyBfX3hsZDogX194IH07IF9fbi5f
X3hpWzJdID0gKF9fbi5fX3hpWzJdICYgMHg4MDAwKSB8IDB4M2ZmZjsgX19uLl9feGlbMV0gPSAw
eDgwMDAwMDAwOyBfX24uX194aVswXSA9IDA7IHJldHVybiBfX24uX194bGQ7IH0KIyA0OTIgIi91
c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lubGluZSBkb3VibGUgZmxvb3IgKGRv
dWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX192b2xh
dGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBp
bnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0iIChfX2N3KSk7
IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA0MDA7IF9fYXNtIF9fdm9sYXRpbGUgKCJm
bGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZnJuZGludCIg
OiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAl
MCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfSBfX2lubGluZSBmbG9hdCBmbG9v
cmYgKGZsb2F0IF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBf
X3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNo
b3J0IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9f
Y3cpKTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDQwMDsgX19hc20gX192b2xhdGls
ZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5k
aW50IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZSAoImZs
ZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5lIGxvbmcg
ZG91YmxlIGZsb29ybCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9s
YXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0
Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwNDAw
OyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20g
X192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2Fz
bSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7
IH0KIyA1MDMgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lubGluZSBkb3Vi
bGUgY2VpbCAoZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Zh
bHVlOyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxlIHVuc2ln
bmVkIHNob3J0IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9
bSIgKF9fY3cpKTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDgwMDsgX19hc20gX192
b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9sYXRpbGUg
KCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGls
ZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5l
IGZsb2F0IGNlaWxmIChmbG9hdCBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
X192YWx1ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1
bnNpZ25lZCBzaG9ydCBpbnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIg
OiAiPW0iIChfX2N3KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA4MDA7IF9fYXNt
IF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0
aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9s
YXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfSBfX2lu
bGluZSBsb25nIGRvdWJsZSBjZWlsbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9f
Y3c7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRp
bGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYp
IHwgMHgwODAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXAp
KTsgX19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9f
eCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJu
IF9fdmFsdWU7IH0KIyA1MjEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lu
bGluZSBkb3VibGUKbGRleHAgKGRvdWJsZSBfX3gsIGludCBfX3kpIHRocm93ICgpCnsKICByZWdp
c3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDog
Ij10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoKGxvbmcgZG91YmxlKSBfX3kpKTsgcmV0
dXJuIF9fdmFsdWU7Cn0KIyA1MzkgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpf
X2lubGluZSBkb3VibGUgbG9nMXAgKGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9u
ZyBkb3VibGUgX192YWx1ZTsgaWYgKF9fZmFic2wgKF9feCkgPj0gMS4wIC0gMC41ICogMS40MTQy
MTM1NjIzNzMwOTUwNDg4MEwpIF9fdmFsdWUgPSBsb2dsICgxLjAgKyBfX3gpOyBlbHNlIF9fYXNt
IF9fdm9sYXRpbGVfXyAoImZsZGxuMlxuXHQiICJmeGNoXG5cdCIgImZ5bDJ4cDEiIDogIj10IiAo
X192YWx1ZSkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19pbmxp
bmUgZmxvYXQgbG9nMXBmIChmbG9hdCBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3Vi
bGUgX192YWx1ZTsgaWYgKF9fZmFic2wgKF9feCkgPj0gMS4wIC0gMC41ICogMS40MTQyMTM1NjIz
NzMwOTUwNDg4MEwpIF9fdmFsdWUgPSBsb2dsICgxLjAgKyBfX3gpOyBlbHNlIF9fYXNtIF9fdm9s
YXRpbGVfXyAoImZsZGxuMlxuXHQiICJmeGNoXG5cdCIgImZ5bDJ4cDEiIDogIj10IiAoX192YWx1
ZSkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUgbG9u
ZyBkb3VibGUgbG9nMXBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9u
ZyBkb3VibGUgX192YWx1ZTsgaWYgKF9fZmFic2wgKF9feCkgPj0gMS4wIC0gMC41ICogMS40MTQy
MTM1NjIzNzMwOTUwNDg4MEwpIF9fdmFsdWUgPSBsb2dsICgxLjAgKyBfX3gpOyBlbHNlIF9fYXNt
IF9fdm9sYXRpbGVfXyAoImZsZGxuMlxuXHQiICJmeGNoXG5cdCIgImZ5bDJ4cDEiIDogIj10IiAo
X192YWx1ZSkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyA1NTMg
Ii91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lubGluZSBkb3VibGUgYXNpbmgg
KGRvdWJsZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195ID0gX19mYWJz
bCAoX194KTsgcmV0dXJuIChsb2cxcGwgKF9feSAqIF9feSAvIChfX3NxcnRsIChfX3kgKiBfX3kg
KyAxLjApICsgMS4wKSArIF9feSkgKiBfX3NnbjFsIChfX3gpKTsgfSBfX2lubGluZSBmbG9hdCBh
c2luaGYgKGZsb2F0IF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3kgPSBf
X2ZhYnNsIChfX3gpOyByZXR1cm4gKGxvZzFwbCAoX195ICogX195IC8gKF9fc3FydGwgKF9feSAq
IF9feSArIDEuMCkgKyAxLjApICsgX195KSAqIF9fc2duMWwgKF9feCkpOyB9IF9faW5saW5lIGxv
bmcgZG91YmxlIGFzaW5obCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGxv
bmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7IHJldHVybiAobG9nMXBsIChfX3kgKiBfX3kg
LyAoX19zcXJ0bCAoX195ICogX195ICsgMS4wKSArIDEuMCkgKyBfX3kpICogX19zZ24xbCAoX194
KSk7IH0KCgoKCl9faW5saW5lIGRvdWJsZSBhY29zaCAoZG91YmxlIF9feCkgdGhyb3cgKCkgeyBy
ZXR1cm4gbG9nbCAoX194ICsgX19zcXJ0bCAoX194IC0gMS4wKSAqIF9fc3FydGwgKF9feCArIDEu
MCkpOyB9IF9faW5saW5lIGZsb2F0IGFjb3NoZiAoZmxvYXQgX194KSB0aHJvdyAoKSB7IHJldHVy
biBsb2dsIChfX3ggKyBfX3NxcnRsIChfX3ggLSAxLjApICogX19zcXJ0bCAoX194ICsgMS4wKSk7
IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgYWNvc2hsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp
IHsgcmV0dXJuIGxvZ2wgKF9feCArIF9fc3FydGwgKF9feCAtIDEuMCkgKiBfX3NxcnRsIChfX3gg
KyAxLjApKTsgfQoKCl9faW5saW5lIGRvdWJsZSBhdGFuaCAoZG91YmxlIF9feCkgdGhyb3cgKCkg
eyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gLTAuNSAq
IGxvZzFwbCAoLShfX3kgKyBfX3kpIC8gKDEuMCArIF9feSkpICogX19zZ24xbCAoX194KTsgfSBf
X2lubGluZSBmbG9hdCBhdGFuaGYgKGZsb2F0IF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25n
IGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gLTAuNSAqIGxvZzFwbCAoLShfX3kg
KyBfX3kpIC8gKDEuMCArIF9feSkpICogX19zZ24xbCAoX194KTsgfSBfX2lubGluZSBsb25nIGRv
dWJsZSBhdGFuaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgeyByZWdpc3RlciBsb25nIGRv
dWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gLTAuNSAqIGxvZzFwbCAoLShfX3kgKyBf
X3kpIC8gKDEuMCArIF9feSkpICogX19zZ24xbCAoX194KTsgfQoKCgoKX19pbmxpbmUgZG91Ymxl
IGh5cG90IChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKSB7IHJldHVybiBfX3NxcnRs
IChfX3ggKiBfX3ggKyBfX3kgKiBfX3kpOyB9IF9faW5saW5lIGZsb2F0IGh5cG90ZiAoZmxvYXQg
X194LCBmbG9hdCBfX3kpIHRocm93ICgpIHsgcmV0dXJuIF9fc3FydGwgKF9feCAqIF9feCArIF9f
eSAqIF9feSk7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgaHlwb3RsIChsb25nIGRvdWJsZSBfX3gs
IGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgeyByZXR1cm4gX19zcXJ0bCAoX194ICogX194ICsg
X195ICogX195KTsgfQoKX19pbmxpbmUgZG91YmxlIGxvZ2IgKGRvdWJsZSBfX3gpIHRocm93ICgp
IHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19q
dW5rOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmeHRyYWN0XG5cdCIgOiAiPXQiIChfX2p1bmspLCAi
PXUiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5lIGZs
b2F0IGxvZ2JmIChmbG9hdCBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192
YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19qdW5rOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJm
eHRyYWN0XG5cdCIgOiAiPXQiIChfX2p1bmspLCAiPXUiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7
IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5lIGxvbmcgZG91YmxlIGxvZ2JsIChsb25nIGRvdWJs
ZSBfX3gpIHRocm93ICgpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIg
bG9uZyBkb3VibGUgX19qdW5rOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmeHRyYWN0XG5cdCIgOiAi
PXQiIChfX2p1bmspLCAiPXUiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IHJldHVybiBfX3ZhbHVl
OyB9CiMgNTgzICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKX19pbmxpbmUgZmxv
YXQKbGRleHBmIChmbG9hdCBfX3gsIGludCBfX3kpIHRocm93ICgpCnsKICByZWdpc3RlciBsb25n
IGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192
YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoKGxvbmcgZG91YmxlKSBfX3kpKTsgcmV0dXJuIF9fdmFs
dWU7Cn0KCl9faW5saW5lIGxvbmcgZG91YmxlCmxkZXhwbCAobG9uZyBkb3VibGUgX194LCBpbnQg
X195KSB0aHJvdyAoKQp7CiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192
b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKChs
b25nIGRvdWJsZSkgX195KSk7IHJldHVybiBfX3ZhbHVlOwp9CiMgNjA3ICIvdXNyL2luY2x1ZGUv
Yml0cy9tYXRoaW5saW5lLmgiIDMKX19pbmxpbmUgbG9uZyBpbnQKbHJpbnRmIChmbG9hdCBfX3gp
IHRocm93ICgpCnsKICBsb25nIGludCBfX2xyaW50cmVzOyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAo
ImZpc3RwbCAlMCIgOiAiPW0iIChfX2xyaW50cmVzKSA6ICJ0IiAoX194KSA6ICJzdCIpOyByZXR1
cm4gX19scmludHJlczsKfQpfX2lubGluZSBsb25nIGludApscmludCAoZG91YmxlIF9feCkgdGhy
b3cgKCkKewogIGxvbmcgaW50IF9fbHJpbnRyZXM7IF9fYXNtX18gX192b2xhdGlsZV9fICgiZmlz
dHBsICUwIiA6ICI9bSIgKF9fbHJpbnRyZXMpIDogInQiIChfX3gpIDogInN0Iik7IHJldHVybiBf
X2xyaW50cmVzOwp9Cl9faW5saW5lIGxvbmcgaW50CmxyaW50bCAobG9uZyBkb3VibGUgX194KSB0
aHJvdyAoKQp7CiAgbG9uZyBpbnQgX19scmludHJlczsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJm
aXN0cGwgJTAiIDogIj1tIiAoX19scmludHJlcykgOiAidCIgKF9feCkgOiAic3QiKTsgcmV0dXJu
IF9fbHJpbnRyZXM7Cn0KIyA2MzAgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpf
X2lubGluZSBsb25nIGxvbmcgaW50CmxscmludGYgKGZsb2F0IF9feCkgdGhyb3cgKCkKewogIGxv
bmcgbG9uZyBpbnQgX19sbHJpbnRyZXM7IF9fYXNtX18gX192b2xhdGlsZV9fICgiZmlzdHBsbCAl
MCIgOiAiPW0iIChfX2xscmludHJlcykgOiAidCIgKF9feCkgOiAic3QiKTsgcmV0dXJuIF9fbGxy
aW50cmVzOwp9Cl9faW5saW5lIGxvbmcgbG9uZyBpbnQKbGxyaW50IChkb3VibGUgX194KSB0aHJv
dyAoKQp7CiAgbG9uZyBsb25nIGludCBfX2xscmludHJlczsgX19hc21fXyBfX3ZvbGF0aWxlX18g
KCJmaXN0cGxsICUwIiA6ICI9bSIgKF9fbGxyaW50cmVzKSA6ICJ0IiAoX194KSA6ICJzdCIpOyBy
ZXR1cm4gX19sbHJpbnRyZXM7Cn0KX19pbmxpbmUgbG9uZyBsb25nIGludApsbHJpbnRsIChsb25n
IGRvdWJsZSBfX3gpIHRocm93ICgpCnsKICBsb25nIGxvbmcgaW50IF9fbGxyaW50cmVzOyBfX2Fz
bV9fIF9fdm9sYXRpbGVfXyAoImZpc3RwbGwgJTAiIDogIj1tIiAoX19sbHJpbnRyZXMpIDogInQi
IChfX3gpIDogInN0Iik7IHJldHVybiBfX2xscmludHJlczsKfQoKCgoKCgoKX19pbmxpbmUgZG91
YmxlIGRyZW0gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpIHsgcmVnaXN0ZXIgZG91
YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGludCBfX2Nsb2JiZXJlZDsgX19hc20gX192b2xhdGlsZV9f
ICgiMToJZnByZW0xXG5cdCIgImZzdHN3CSUlYXhcblx0IiAic2FoZlxuXHQiICJqcAkxYiIgOiAi
PXQiIChfX3ZhbHVlKSwgIj0mYSIgKF9fY2xvYmJlcmVkKSA6ICIwIiAoX194KSwgInUiIChfX3kp
IDogImNjIik7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5lIGZsb2F0IGRyZW1mIChmbG9hdCBf
X3gsIGZsb2F0IF9feSkgdGhyb3cgKCkgeyByZWdpc3RlciBkb3VibGUgX192YWx1ZTsgcmVnaXN0
ZXIgaW50IF9fY2xvYmJlcmVkOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCIxOglmcHJlbTFcblx0IiAi
ZnN0c3cJJSVheFxuXHQiICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9dCIgKF9fdmFsdWUpLCAiPSZh
IiAoX19jbG9iYmVyZWQpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiY2MiKTsgcmV0dXJuIF9f
dmFsdWU7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9u
ZyBkb3VibGUgX195KSB0aHJvdyAoKSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3Rl
ciBpbnQgX19jbG9iYmVyZWQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtMVxuXHQiICJm
c3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSksICI9JmEi
IChfX2Nsb2JiZXJlZCkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJjYyIpOyByZXR1cm4gX192
YWx1ZTsgfQojIDY2NSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5l
IGludApfX2Zpbml0ZSAoZG91YmxlIF9feCkgdGhyb3cgKCkKewogIHJldHVybiAoX19leHRlbnNp
b25fXwogICAgICAgICAgKCgoKCh1bmlvbiB7IGRvdWJsZSBfX2Q7IGludCBfX2lbMl07IH0pIHtf
X2Q6IF9feH0pLl9faVsxXQogICAgICAgICAgICAgfCAweDgwMGZmZmZmdSkgKyAxKSA+PiAzMSkp
Owp9CiMgMzYzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA0MjMgIi91c3IvaW5jbHVkZS9t
YXRoLmgiIDMKfQojIDQzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNVbml0Q29udmVy
c2lvbi5oIiAyCiMgNTUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc1VuaXRDb252ZXJz
aW9uLmgiCmlubGluZSBuc2Nvb3JkIE5TVG9Db29yZEZsb29yKGZsb2F0IGFWYWx1ZSkKewogIHJl
dHVybiAoKDAuMGYgPD0gYVZhbHVlKSA/IG5zY29vcmQoYVZhbHVlKSA6IG5zY29vcmQoYVZhbHVl
IC0gMC45OTk5OTk5OTk5OTk5OTk5ZikpOwp9CgppbmxpbmUgbnNjb29yZCBOU1RvQ29vcmRDZWls
KGZsb2F0IGFWYWx1ZSkKewogIHJldHVybiAoKDAuMGYgPD0gYVZhbHVlKSA/IG5zY29vcmQoYVZh
bHVlICsgMC45OTk5OTk5OTk5OTk5OTk5ZikgOiBuc2Nvb3JkKGFWYWx1ZSkpOwp9CgppbmxpbmUg
bnNjb29yZCBOU1RvQ29vcmRSb3VuZChmbG9hdCBhVmFsdWUpCnsKICByZXR1cm4gKCgwLjBmIDw9
IGFWYWx1ZSkgPyBuc2Nvb3JkKGFWYWx1ZSArIDAuNWYpIDogbnNjb29yZChhVmFsdWUgLSAwLjVm
KSk7Cn0KCmlubGluZSBuc2Nvb3JkIE5TVG9Db29yZFJvdW5kRXhjbHVzaXZlKGZsb2F0IGFWYWx1
ZSkKewogIHJldHVybiAoKDAuMGYgPD0gYVZhbHVlKSA/IG5zY29vcmQoYVZhbHVlICsgMC40OTk5
OTk5OTk5OTk5OTk5ZikgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zY29vcmQoYVZh
bHVlIC0gMC40OTk5OTk5OTk5OTk5OTk5ZikpOwp9CgoKCgoKaW5saW5lIFBSSW50MzIgTlNUb0lu
dEZsb29yKGZsb2F0IGFWYWx1ZSkKewogIHJldHVybiAoKDAuMGYgPD0gYVZhbHVlKSA/IFBSSW50
MzIoYVZhbHVlKSA6IFBSSW50MzIoYVZhbHVlIC0gMC45OTk5OTk5OTk5OTk5OTk5ZikpOwp9Cgpp
bmxpbmUgUFJJbnQzMiBOU1RvSW50Q2VpbChmbG9hdCBhVmFsdWUpCnsKICByZXR1cm4gKCgwLjBm
IDw9IGFWYWx1ZSkgPyBQUkludDMyKGFWYWx1ZSArIDAuOTk5OTk5OTk5OTk5OTk5OWYpIDogUFJJ
bnQzMihhVmFsdWUpKTsKfQoKaW5saW5lIFBSSW50MzIgTlNUb0ludFJvdW5kKGZsb2F0IGFWYWx1
ZSkKewogIHJldHVybiAoKDAuMGYgPD0gYVZhbHVlKSA/IFBSSW50MzIoYVZhbHVlICsgMC41Zikg
OiBQUkludDMyKGFWYWx1ZSAtIDAuNWYpKTsKfQoKaW5saW5lIFBSSW50MzIgTlNUb0ludFJvdW5k
RXhjbHVzaXZlKGZsb2F0IGFWYWx1ZSkKewogIHJldHVybiAoKDAuMGYgPD0gYVZhbHVlKSA/IFBS
SW50MzIoYVZhbHVlICsgMC40OTk5OTk5OTk5OTk5OTk5ZikgOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBSSW50MzIoYVZhbHVlIC0gMC40OTk5OTk5OTk5OTk5OTk5ZikpOwp9CgoKCgoK
aW5saW5lIG5zY29vcmQgTlNGbG9hdFBvaW50c1RvVHdpcHMoZmxvYXQgYVBvaW50cykKewogIHJl
dHVybiBOU1RvQ29vcmRSb3VuZChhUG9pbnRzICogMjAuMGYpOwp9CgppbmxpbmUgbnNjb29yZCBO
U0ludFBvaW50c1RvVHdpcHMoUFJJbnQzMiBhUG9pbnRzKQp7CiAgcmV0dXJuIG5zY29vcmQoYVBv
aW50cyAqIDIwKTsKfQoKaW5saW5lIFBSSW50MzIgTlNUd2lwc1RvSW50UG9pbnRzKG5zY29vcmQg
YVR3aXBzKQp7CiAgcmV0dXJuIE5TVG9JbnRSb3VuZChhVHdpcHMgLyAyMC4wZik7Cn0KCmlubGlu
ZSBQUkludDMyIE5TVHdpcHNUb0Zsb29ySW50UG9pbnRzKG5zY29vcmQgYVR3aXBzKQp7CiAgcmV0
dXJuIE5TVG9JbnRGbG9vcihhVHdpcHMgLyAyMC4wZik7Cn0KCmlubGluZSBQUkludDMyIE5TVHdp
cHNUb0NlaWxJbnRQb2ludHMobnNjb29yZCBhVHdpcHMpCnsKICByZXR1cm4gTlNUb0ludENlaWwo
YVR3aXBzIC8gMjAuMGYpOwp9CgppbmxpbmUgZmxvYXQgTlNUd2lwc1RvRmxvYXRQb2ludHMobnNj
b29yZCBhVHdpcHMpCnsKICByZXR1cm4gKGZsb2F0KGFUd2lwcykgLyAyMC4wZik7Cn0KCgoKCmlu
bGluZSBuc2Nvb3JkIE5TRmxvYXRQaXhlbHNUb1R3aXBzKGZsb2F0IGFQaXhlbHMsIGZsb2F0IGFU
d2lwc1BlclBpeGVsKQp7CiAgcmV0dXJuIE5TVG9Db29yZFJvdW5kKGFQaXhlbHMgKiBhVHdpcHNQ
ZXJQaXhlbCk7Cn0KCmlubGluZSBuc2Nvb3JkIE5TSW50UGl4ZWxzVG9Ud2lwcyhQUkludDMyIGFQ
aXhlbHMsIGZsb2F0IGFUd2lwc1BlclBpeGVsKQp7CiAgcmV0dXJuIE5TVG9Db29yZFJvdW5kKGZs
b2F0KGFQaXhlbHMpICogYVR3aXBzUGVyUGl4ZWwpOwp9CgppbmxpbmUgZmxvYXQgTlNUd2lwc1Rv
RmxvYXRQaXhlbHMobnNjb29yZCBhVHdpcHMsIGZsb2F0IGFQaXhlbHNQZXJUd2lwKQp7CiAgcmV0
dXJuIChmbG9hdChhVHdpcHMpICogYVBpeGVsc1BlclR3aXApOwp9CgppbmxpbmUgUFJJbnQzMiBO
U1R3aXBzVG9JbnRQaXhlbHMobnNjb29yZCBhVHdpcHMsIGZsb2F0IGFQaXhlbHNQZXJUd2lwKQp7
CiAgcmV0dXJuIE5TVG9JbnRSb3VuZChmbG9hdChhVHdpcHMpICogYVBpeGVsc1BlclR3aXApOwp9
CgoKCgppbmxpbmUgbnNjb29yZCBOU1VuaXRzVG9Ud2lwcyhmbG9hdCBhVmFsdWUsIGZsb2F0IGFQ
b2ludHNQZXJVbml0KQp7CiAgcmV0dXJuIE5TVG9Db29yZFJvdW5kKGFWYWx1ZSAqIGFQb2ludHNQ
ZXJVbml0ICogMjAuMGYpOwp9CgppbmxpbmUgZmxvYXQgTlNUd2lwc1RvVW5pdHMobnNjb29yZCBh
VHdpcHMsIGZsb2F0IGFVbml0c1BlclBvaW50KQp7CiAgcmV0dXJuIChhVHdpcHMgKiAoYVVuaXRz
UGVyUG9pbnQgLyAyMC4wZikpOwp9CiMgNDkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9nZngvbnNS
ZWN0LmgiIDIKCgpzdHJ1Y3QgbnNSZWN0IHsKICBuc2Nvb3JkIHgsIHk7CiAgbnNjb29yZCB3aWR0
aCwgaGVpZ2h0OwoKCiAgbnNSZWN0KCkgOiB4KDApLCB5KDApLCB3aWR0aCgwKSwgaGVpZ2h0KDAp
IHt9CiAgbnNSZWN0KGNvbnN0IG5zUmVjdCYgYVJlY3QpIHsqdGhpcyA9IGFSZWN0O30KICBuc1Jl
Y3QoY29uc3QgbnNQb2ludCYgYU9yaWdpbiwgY29uc3QgbnNTaXplICZhU2l6ZSkge3ggPSBhT3Jp
Z2luLng7IHkgPSBhT3JpZ2luLnk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IGFTaXplLndpZHRoOyBoZWlnaHQgPSBhU2l6ZS5o
ZWlnaHQ7fQogIG5zUmVjdChuc2Nvb3JkIGFYLCBuc2Nvb3JkIGFZLCBuc2Nvb3JkIGFXaWR0aCwg
bnNjb29yZCBhSGVpZ2h0KSB7eCA9IGFYOyB5ID0gYVk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IGFXaWR0
aDsgaGVpZ2h0ID0gYUhlaWdodDt9CgoKCiAgUFJCb29sIElzRW1wdHkoKSBjb25zdCB7CiAgICBy
ZXR1cm4gKFBSQm9vbCkgKChoZWlnaHQgPD0gMCkgfHwgKHdpZHRoIDw9IDApKTsKICB9CiAgdm9p
ZCBFbXB0eSgpIHt3aWR0aCA9IGhlaWdodCA9IDA7fQoKCiAgUFJCb29sIENvbnRhaW5zKGNvbnN0
IG5zUmVjdCYgYVJlY3QpIGNvbnN0OwogIFBSQm9vbCBDb250YWlucyhuc2Nvb3JkIGFYLCBuc2Nv
b3JkIGFZKSBjb25zdDsKICBQUkJvb2wgQ29udGFpbnMoY29uc3QgbnNQb2ludCYgYVBvaW50KSBj
b25zdCB7cmV0dXJuIENvbnRhaW5zKGFQb2ludC54LCBhUG9pbnQueSk7fQoKCgogIFBSQm9vbCBJ
bnRlcnNlY3RzKGNvbnN0IG5zUmVjdCYgYVJlY3QpIGNvbnN0OwoKCgoKCgogIFBSQm9vbCBJbnRl
cnNlY3RSZWN0KGNvbnN0IG5zUmVjdCYgYVJlY3QxLCBjb25zdCBuc1JlY3QmIGFSZWN0Mik7CgoK
CgoKCiAgUFJCb29sIFVuaW9uUmVjdChjb25zdCBuc1JlY3QmIGFSZWN0MSwgY29uc3QgbnNSZWN0
JiBhUmVjdDIpOwoKCiAgdm9pZCBTZXRSZWN0KG5zY29vcmQgYVgsIG5zY29vcmQgYVksIG5zY29v
cmQgYVdpZHRoLCBuc2Nvb3JkIGFIZWlnaHQpIHsKICAgIHggPSBhWDsgeSA9IGFZOyB3aWR0aCA9
IGFXaWR0aDsgaGVpZ2h0ID0gYUhlaWdodDsKICB9CiAgdm9pZCBNb3ZlVG8obnNjb29yZCBhWCwg
bnNjb29yZCBhWSkge3ggPSBhWDsgeSA9IGFZO30KICB2b2lkIE1vdmVUbyhjb25zdCBuc1BvaW50
JiBhUG9pbnQpIHt4ID0gYVBvaW50Lng7IHkgPSBhUG9pbnQueTt9CiAgdm9pZCBNb3ZlQnkobnNj
b29yZCBhRHgsIG5zY29vcmQgYUR5KSB7eCArPSBhRHg7IHkgKz0gYUR5O30KICB2b2lkIFNpemVU
byhuc2Nvb3JkIGFXaWR0aCwgbnNjb29yZCBhSGVpZ2h0KSB7d2lkdGggPSBhV2lkdGg7IGhlaWdo
dCA9IGFIZWlnaHQ7fQogIHZvaWQgU2l6ZVRvKGNvbnN0IG5zU2l6ZSYgYVNpemUpIHtTaXplVG8o
YVNpemUud2lkdGgsIGFTaXplLmhlaWdodCk7fQogIHZvaWQgU2l6ZUJ5KG5zY29vcmQgYURlbHRh
V2lkdGgsIG5zY29vcmQgYURlbHRhSGVpZ2h0KSB7d2lkdGggKz0gYURlbHRhV2lkdGg7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWln
aHQgKz0gYURlbHRhSGVpZ2h0O30KCgogIHZvaWQgSW5mbGF0ZShuc2Nvb3JkIGFEeCwgbnNjb29y
ZCBhRHkpOwogIHZvaWQgSW5mbGF0ZShjb25zdCBuc1NpemUmIGFTaXplKSB7SW5mbGF0ZShhU2l6
ZS53aWR0aCwgYVNpemUuaGVpZ2h0KTt9CiAgdm9pZCBJbmZsYXRlKGNvbnN0IG5zTWFyZ2luJiBh
TWFyZ2luKTsKCgogIHZvaWQgRGVmbGF0ZShuc2Nvb3JkIGFEeCwgbnNjb29yZCBhRHkpOwogIHZv
aWQgRGVmbGF0ZShjb25zdCBuc1NpemUmIGFTaXplKSB7RGVmbGF0ZShhU2l6ZS53aWR0aCwgYVNp
emUuaGVpZ2h0KTt9CiAgdm9pZCBEZWZsYXRlKGNvbnN0IG5zTWFyZ2luJiBhTWFyZ2luKTsKCgoK
ICBQUkJvb2wgb3BlcmF0b3I9PShjb25zdCBuc1JlY3QmIGFSZWN0KSBjb25zdCB7CiAgICByZXR1
cm4gKFBSQm9vbCkgKChJc0VtcHR5KCkgJiYgYVJlY3QuSXNFbXB0eSgpKSB8fAogICAgICAgICAg
ICAgICAgICAgICAoKHggPT0gYVJlY3QueCkgJiYgKHkgPT0gYVJlY3QueSkgJiYKICAgICAgICAg
ICAgICAgICAgICAgICh3aWR0aCA9PSBhUmVjdC53aWR0aCkgJiYgKGhlaWdodCA9PSBhUmVjdC5o
ZWlnaHQpKSk7CiAgfQogIFBSQm9vbCBvcGVyYXRvciE9KGNvbnN0IG5zUmVjdCYgYVJlY3QpIGNv
bnN0IHsKICAgIHJldHVybiAoUFJCb29sKSAhb3BlcmF0b3I9PShhUmVjdCk7CiAgfQogIG5zUmVj
dCBvcGVyYXRvcisoY29uc3QgbnNSZWN0JiBhUmVjdCkgY29uc3QgewogICAgcmV0dXJuIG5zUmVj
dCh4ICsgYVJlY3QueCwgeSArIGFSZWN0LnksCiAgICAgICAgICAgICAgICAgIHdpZHRoICsgYVJl
Y3Qud2lkdGgsIGhlaWdodCArIGFSZWN0LmhlaWdodCk7CiAgfQogIG5zUmVjdCBvcGVyYXRvci0o
Y29uc3QgbnNSZWN0JiBhUmVjdCkgY29uc3QgewogICAgcmV0dXJuIG5zUmVjdCh4IC0gYVJlY3Qu
eCwgeSAtIGFSZWN0LnksCiAgICAgICAgICAgICAgICAgIHdpZHRoIC0gYVJlY3Qud2lkdGgsIGhl
aWdodCAtIGFSZWN0LmhlaWdodCk7CiAgfQogIG5zUmVjdCYgb3BlcmF0b3IrPShjb25zdCBuc1Bv
aW50JiBhUG9pbnQpIHt4ICs9IGFQb2ludC54OyB5ICs9IGFQb2ludC55OyByZXR1cm4gKnRoaXM7
fQogIG5zUmVjdCYgb3BlcmF0b3ItPShjb25zdCBuc1BvaW50JiBhUG9pbnQpIHt4IC09IGFQb2lu
dC54OyB5IC09IGFQb2ludC55OyByZXR1cm4gKnRoaXM7fQoKICBuc1JlY3QmIG9wZXJhdG9yKj0o
Y29uc3QgZmxvYXQgYVNjYWxlKSB7eCA9IE5TVG9Db29yZFJvdW5kKHggKiBhU2NhbGUpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gTlNUb0Nvb3JkUm91bmQo
eSAqIGFTY2FsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdp
ZHRoID0gTlNUb0Nvb3JkUm91bmQod2lkdGggKiBhU2NhbGUpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSBOU1RvQ29vcmRSb3VuZChoZWlnaHQgKiBh
U2NhbGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
KnRoaXM7fQoKICBuc1JlY3QmIFNjYWxlUm91bmRPdXQoY29uc3QgZmxvYXQgYVNjYWxlKTsKICBu
c1JlY3QmIFNjYWxlUm91bmRJbihjb25zdCBmbG9hdCBhU2NhbGUpOwoKCiAgbnNjb29yZCBYTW9z
dCgpIGNvbnN0IHtyZXR1cm4geCArIHdpZHRoO30KICBuc2Nvb3JkIFlNb3N0KCkgY29uc3Qge3Jl
dHVybiB5ICsgaGVpZ2h0O30KfTsKCgpleHRlcm4gRklMRSogb3BlcmF0b3I8PChGSUxFKiBvdXQs
IGNvbnN0IG5zUmVjdCYgcmVjdCk7CiMgNDUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50
L25zU3R5bGVTdHJ1Y3QuaCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9nZngvbnNGb250
LmgiIDEKIyA1MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2dmeC9uc0ZvbnQuaCIKdHlwZWRlZiBQ
UkJvb2wgKCpuc0ZvbnRGYW1pbHlFbnVtRnVuYykoY29uc3QgbnNTdHJpbmcmIGFGYW1pbHksIFBS
Qm9vbCBhR2VuZXJpYywgdm9pZCAqYURhdGEpOwoKCgoKY29uc3QgUFJVaW50OCBrR2VuZXJpY0Zv
bnRfTk9ORSA9IDB4MDA7Cgpjb25zdCBQUlVpbnQ4IGtHZW5lcmljRm9udF9tb3pfdmFyaWFibGUg
PSAweDAwOwpjb25zdCBQUlVpbnQ4IGtHZW5lcmljRm9udF9tb3pfZml4ZWQgPSAweDAxOwoKY29u
c3QgUFJVaW50OCBrR2VuZXJpY0ZvbnRfc2VyaWYgPSAweDAyOwpjb25zdCBQUlVpbnQ4IGtHZW5l
cmljRm9udF9zYW5zX3NlcmlmID0gMHgwNDsKY29uc3QgUFJVaW50OCBrR2VuZXJpY0ZvbnRfbW9u
b3NwYWNlID0gMHgwODsKY29uc3QgUFJVaW50OCBrR2VuZXJpY0ZvbnRfY3Vyc2l2ZSA9IDB4MTA7
CmNvbnN0IFBSVWludDgga0dlbmVyaWNGb250X2ZhbnRhc3kgPSAweDIwOwoKCnN0cnVjdCBuc0Zv
bnQgewoKICBuc1N0cmluZyBuYW1lOwoKCiAgUFJVaW50OCBzdHlsZTsKCgogIFBSVWludDggdmFy
aWFudCA6IDc7CgoKCiAgUFJQYWNrZWRCb29sIGZhbWlseU5hbWVRdWlya3MgOiAxOwoKCiAgUFJV
aW50MTYgd2VpZ2h0OwoKCgogIFBSVWludDggZGVjb3JhdGlvbnM7CgoKICBuc2Nvb3JkIHNpemU7
CgoKCgoKICBmbG9hdCBzaXplQWRqdXN0OwoKCiAgbnNGb250KGNvbnN0IGNoYXIqIGFOYW1lLCBQ
UlVpbnQ4IGFTdHlsZSwgUFJVaW50OCBhVmFyaWFudCwKICAgICAgICAgUFJVaW50MTYgYVdlaWdo
dCwgUFJVaW50OCBhRGVjb3JhdGlvbiwgbnNjb29yZCBhU2l6ZSwKICAgICAgICAgZmxvYXQgYVNp
emVBZGp1c3Q9MC4wZik7CgoKICBuc0ZvbnQoY29uc3QgbnNTdHJpbmcmIGFOYW1lLCBQUlVpbnQ4
IGFTdHlsZSwgUFJVaW50OCBhVmFyaWFudCwKICAgICAgICAgUFJVaW50MTYgYVdlaWdodCwgUFJV
aW50OCBhRGVjb3JhdGlvbiwgbnNjb29yZCBhU2l6ZSwKICAgICAgICAgZmxvYXQgYVNpemVBZGp1
c3Q9MC4wZik7CgoKICBuc0ZvbnQoY29uc3QgbnNGb250JiBhRm9udCk7CgogIG5zRm9udCgpOwog
IH5uc0ZvbnQoKTsKCiAgUFJCb29sIG9wZXJhdG9yPT0oY29uc3QgbnNGb250JiBhT3RoZXIpIGNv
bnN0IHsKICAgIHJldHVybiBFcXVhbHMoYU90aGVyKTsKICB9CgogIFBSQm9vbCBFcXVhbHMoY29u
c3QgbnNGb250JiBhT3RoZXIpIGNvbnN0IDsKCiAgbnNGb250JiBvcGVyYXRvcj0oY29uc3QgbnNG
b250JiBhT3RoZXIpOwoKCgoKCiAgUFJCb29sIEVudW1lcmF0ZUZhbWlsaWVzKG5zRm9udEZhbWls
eUVudW1GdW5jIGFGdW5jLCB2b2lkKiBhRGF0YSkgY29uc3Q7CiAgdm9pZCBHZXRGaXJzdEZhbWls
eShuc1N0cmluZyYgYUZhbWlseSkgY29uc3Q7CgoKICBzdGF0aWMgdm9pZCBHZXRHZW5lcmljSUQo
Y29uc3QgbnNTdHJpbmcmIGFHZW5lcmljLCBQUlVpbnQ4KiBhSUQpOwp9OwojIDQ2ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvY29udGVudC9uc1N0eWxlU3RydWN0LmgiIDIKCiMgMSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNTdHlsZUNvb3JkLmgiIDEKIyA0NCAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2NvbnRlbnQvbnNTdHlsZUNvb3JkLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2xheW91dC9uc1N0eWxlQ29uc3RzLmgiIDEKIyA0NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L2NvbnRlbnQvbnNTdHlsZUNvb3JkLmgiIDIKY2xhc3MgbnNTdHJpbmc7CgplbnVtIG5zU3R5bGVV
bml0IHsKICBlU3R5bGVVbml0X051bGwgPSAwLAogIGVTdHlsZVVuaXRfTm9ybWFsID0gMSwKICBl
U3R5bGVVbml0X0F1dG8gPSAyLAogIGVTdHlsZVVuaXRfSW5oZXJpdCA9IDMsCiAgZVN0eWxlVW5p
dF9QZXJjZW50ID0gMTAsCiAgZVN0eWxlVW5pdF9GYWN0b3IgPSAxMSwKICBlU3R5bGVVbml0X0Nv
b3JkID0gMjAsCiAgZVN0eWxlVW5pdF9JbnRlZ2VyID0gMzAsCiAgZVN0eWxlVW5pdF9Qcm9wb3J0
aW9uYWwgPSAzMSwKICBlU3R5bGVVbml0X0VudW1lcmF0ZWQgPSAzMiwKICBlU3R5bGVVbml0X0No
YXJzID0gMzMKfTsKCnR5cGVkZWYgdW5pb24gewogIFBSSW50MzIgbUludDsKICBmbG9hdCBtRmxv
YXQ7Cn0gbnNTdHlsZVVuaW9uOwojIDc0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9u
c1N0eWxlQ29vcmQuaCIKY2xhc3MgbnNTdHlsZUNvb3JkIHsKcHVibGljOgogIG5zU3R5bGVDb29y
ZChuc1N0eWxlVW5pdCBhVW5pdCA9IGVTdHlsZVVuaXRfTnVsbCk7CiAgbnNTdHlsZUNvb3JkKG5z
Y29vcmQgYVZhbHVlKTsKICBuc1N0eWxlQ29vcmQoUFJJbnQzMiBhVmFsdWUsIG5zU3R5bGVVbml0
IGFVbml0KTsKICBuc1N0eWxlQ29vcmQoZmxvYXQgYVZhbHVlLCBuc1N0eWxlVW5pdCBhVW5pdCk7
CiAgbnNTdHlsZUNvb3JkKGNvbnN0IG5zU3R5bGVDb29yZCYgYUNvcHkpOwoKICBuc1N0eWxlQ29v
cmQmIG9wZXJhdG9yPShjb25zdCBuc1N0eWxlQ29vcmQmIGFDb3B5KTsKICBQUkJvb2wgb3BlcmF0
b3I9PShjb25zdCBuc1N0eWxlQ29vcmQmIGFPdGhlcikgY29uc3Q7CiAgUFJCb29sIG9wZXJhdG9y
IT0oY29uc3QgbnNTdHlsZUNvb3JkJiBhT3RoZXIpIGNvbnN0OwoKICBuc1N0eWxlVW5pdCBHZXRV
bml0KHZvaWQpIGNvbnN0IHsgcmV0dXJuIG1Vbml0OyB9CiAgbnNjb29yZCBHZXRDb29yZFZhbHVl
KHZvaWQpIGNvbnN0OwogIFBSSW50MzIgR2V0SW50VmFsdWUodm9pZCkgY29uc3Q7CiAgZmxvYXQg
R2V0UGVyY2VudFZhbHVlKHZvaWQpIGNvbnN0OwogIGZsb2F0IEdldEZhY3RvclZhbHVlKHZvaWQp
IGNvbnN0OwogIHZvaWQgR2V0VW5pb25WYWx1ZShuc1N0eWxlVW5pb24mIGFWYWx1ZSkgY29uc3Q7
CgogIHZvaWQgUmVzZXQodm9pZCk7CiAgdm9pZCBTZXRDb29yZFZhbHVlKG5zY29vcmQgYVZhbHVl
KTsKICB2b2lkIFNldEludFZhbHVlKFBSSW50MzIgYVZhbHVlLCBuc1N0eWxlVW5pdCBhVW5pdCk7
CiAgdm9pZCBTZXRQZXJjZW50VmFsdWUoZmxvYXQgYVZhbHVlKTsKICB2b2lkIFNldEZhY3RvclZh
bHVlKGZsb2F0IGFWYWx1ZSk7CiAgdm9pZCBTZXROb3JtYWxWYWx1ZSh2b2lkKTsKICB2b2lkIFNl
dEF1dG9WYWx1ZSh2b2lkKTsKICB2b2lkIFNldEluaGVyaXRWYWx1ZSh2b2lkKTsKICB2b2lkIFNl
dFVuaW9uVmFsdWUoY29uc3QgbnNTdHlsZVVuaW9uJiBhVmFsdWUsIG5zU3R5bGVVbml0IGFVbml0
KTsKCiAgdm9pZCBBcHBlbmRUb1N0cmluZyhuc1N0cmluZyYgYUJ1ZmZlcikgY29uc3Q7CiAgdm9p
ZCBUb1N0cmluZyhuc1N0cmluZyYgYUJ1ZmZlcikgY29uc3Q7CgpwdWJsaWM6CiAgbnNTdHlsZVVu
aXQgbVVuaXQ7CiAgbnNTdHlsZVVuaW9uIG1WYWx1ZTsKfTsKCgoKCgoKCmNsYXNzIG5zU3R5bGVT
aWRlcyB7CnB1YmxpYzoKICBuc1N0eWxlU2lkZXModm9pZCk7CgoKICBQUkJvb2wgb3BlcmF0b3I9
PShjb25zdCBuc1N0eWxlU2lkZXMmIGFPdGhlcikgY29uc3Q7CiAgUFJCb29sIG9wZXJhdG9yIT0o
Y29uc3QgbnNTdHlsZVNpZGVzJiBhT3RoZXIpIGNvbnN0OwoKCgogIGlubGluZSBuc1N0eWxlVW5p
dCBHZXRVbml0KFBSVWludDggYVNpZGUpIGNvbnN0OwogIGlubGluZSBuc1N0eWxlVW5pdCBHZXRM
ZWZ0VW5pdCh2b2lkKSBjb25zdDsKICBpbmxpbmUgbnNTdHlsZVVuaXQgR2V0VG9wVW5pdCh2b2lk
KSBjb25zdDsKICBpbmxpbmUgbnNTdHlsZVVuaXQgR2V0UmlnaHRVbml0KHZvaWQpIGNvbnN0Owog
IGlubGluZSBuc1N0eWxlVW5pdCBHZXRCb3R0b21Vbml0KHZvaWQpIGNvbnN0OwoKICBpbmxpbmUg
bnNTdHlsZUNvb3JkJiBHZXQoUFJVaW50OCBhU2lkZSwgbnNTdHlsZUNvb3JkJiBhQ29vcmQpIGNv
bnN0OwogIGlubGluZSBuc1N0eWxlQ29vcmQmIEdldExlZnQobnNTdHlsZUNvb3JkJiBhQ29vcmQp
IGNvbnN0OwogIGlubGluZSBuc1N0eWxlQ29vcmQmIEdldFRvcChuc1N0eWxlQ29vcmQmIGFDb29y
ZCkgY29uc3Q7CiAgaW5saW5lIG5zU3R5bGVDb29yZCYgR2V0UmlnaHQobnNTdHlsZUNvb3JkJiBh
Q29vcmQpIGNvbnN0OwogIGlubGluZSBuc1N0eWxlQ29vcmQmIEdldEJvdHRvbShuc1N0eWxlQ29v
cmQmIGFDb29yZCkgY29uc3Q7CgogIHZvaWQgUmVzZXQodm9pZCk7CgogIGlubGluZSB2b2lkIFNl
dChQUlVpbnQ4IGFTaWRlLCBjb25zdCBuc1N0eWxlQ29vcmQmIGFDb29yZCk7CiAgaW5saW5lIHZv
aWQgU2V0TGVmdChjb25zdCBuc1N0eWxlQ29vcmQmIGFDb29yZCk7CiAgaW5saW5lIHZvaWQgU2V0
VG9wKGNvbnN0IG5zU3R5bGVDb29yZCYgYUNvb3JkKTsKICBpbmxpbmUgdm9pZCBTZXRSaWdodChj
b25zdCBuc1N0eWxlQ29vcmQmIGFDb29yZCk7CiAgaW5saW5lIHZvaWQgU2V0Qm90dG9tKGNvbnN0
IG5zU3R5bGVDb29yZCYgYUNvb3JkKTsKCiAgdm9pZCBBcHBlbmRUb1N0cmluZyhuc1N0cmluZyYg
YUJ1ZmZlcikgY29uc3Q7CiAgdm9pZCBUb1N0cmluZyhuc1N0cmluZyYgYUJ1ZmZlcikgY29uc3Q7
Cgpwcm90ZWN0ZWQ6CiAgUFJVaW50OCBtVW5pdHNbNF07CiAgbnNTdHlsZVVuaW9uIG1WYWx1ZXNb
NF07Cn07CgoKCgppbmxpbmUgUFJCb29sIG5zU3R5bGVDb29yZDo6b3BlcmF0b3IhPShjb25zdCBu
c1N0eWxlQ29vcmQmIGFPdGhlcikgY29uc3QKewogIHJldHVybiBQUkJvb2woISAoKCp0aGlzKSA9
PSBhT3RoZXIpKTsKfQoKaW5saW5lIFBSSW50MzIgbnNTdHlsZUNvb3JkOjpHZXRDb29yZFZhbHVl
KHZvaWQpIGNvbnN0CnsKICA7CiAgaWYgKG1Vbml0ID09IGVTdHlsZVVuaXRfQ29vcmQpIHsKICAg
IHJldHVybiBtVmFsdWUubUludDsKICB9CiAgcmV0dXJuIDA7Cn0KCmlubGluZSBQUkludDMyIG5z
U3R5bGVDb29yZDo6R2V0SW50VmFsdWUodm9pZCkgY29uc3QKewogIDsKCgoKICBpZiAoKG1Vbml0
ID09IGVTdHlsZVVuaXRfUHJvcG9ydGlvbmFsKSB8fAogICAgICAobVVuaXQgPT0gZVN0eWxlVW5p
dF9FbnVtZXJhdGVkKSB8fAogICAgICAobVVuaXQgPT0gZVN0eWxlVW5pdF9DaGFycykgfHwKICAg
ICAgKG1Vbml0ID09IGVTdHlsZVVuaXRfSW50ZWdlcikpIHsKICAgIHJldHVybiBtVmFsdWUubUlu
dDsKICB9CiAgcmV0dXJuIDA7Cn0KCmlubGluZSBmbG9hdCBuc1N0eWxlQ29vcmQ6OkdldFBlcmNl
bnRWYWx1ZSh2b2lkKSBjb25zdAp7CiAgOwogIGlmIChtVW5pdCA9PSBlU3R5bGVVbml0X1BlcmNl
bnQpIHsKICAgIHJldHVybiBtVmFsdWUubUZsb2F0OwogIH0KICByZXR1cm4gMC4wZjsKfQoKaW5s
aW5lIGZsb2F0IG5zU3R5bGVDb29yZDo6R2V0RmFjdG9yVmFsdWUodm9pZCkgY29uc3QKewogIDsK
ICBpZiAobVVuaXQgPT0gZVN0eWxlVW5pdF9GYWN0b3IpIHsKICAgIHJldHVybiBtVmFsdWUubUZs
b2F0OwogIH0KICByZXR1cm4gMC4wZjsKfQoKaW5saW5lIHZvaWQgbnNTdHlsZUNvb3JkOjpHZXRV
bmlvblZhbHVlKG5zU3R5bGVVbmlvbiYgYVZhbHVlKSBjb25zdAp7CiAgbWVtY3B5KCZhVmFsdWUs
ICZtVmFsdWUsIHNpemVvZihuc1N0eWxlVW5pb24pKTsKfQoKCgoKaW5saW5lIFBSQm9vbCBuc1N0
eWxlU2lkZXM6Om9wZXJhdG9yIT0oY29uc3QgbnNTdHlsZVNpZGVzJiBhT3RoZXIpIGNvbnN0CnsK
ICByZXR1cm4gUFJCb29sKCEgKCgqdGhpcykgPT0gYU90aGVyKSk7Cn0KCmlubGluZSBuc1N0eWxl
VW5pdCBuc1N0eWxlU2lkZXM6OkdldFVuaXQoUFJVaW50OCBhU2lkZSkgY29uc3QKewogIHJldHVy
biAobnNTdHlsZVVuaXQpbVVuaXRzW2FTaWRlXTsKfQoKaW5saW5lIG5zU3R5bGVVbml0IG5zU3R5
bGVTaWRlczo6R2V0TGVmdFVuaXQodm9pZCkgY29uc3QKewogIHJldHVybiBHZXRVbml0KDMpOwp9
CgppbmxpbmUgbnNTdHlsZVVuaXQgbnNTdHlsZVNpZGVzOjpHZXRUb3BVbml0KHZvaWQpIGNvbnN0
CnsKICByZXR1cm4gR2V0VW5pdCgwKTsKfQoKaW5saW5lIG5zU3R5bGVVbml0IG5zU3R5bGVTaWRl
czo6R2V0UmlnaHRVbml0KHZvaWQpIGNvbnN0CnsKICByZXR1cm4gR2V0VW5pdCgxKTsKfQoKaW5s
aW5lIG5zU3R5bGVVbml0IG5zU3R5bGVTaWRlczo6R2V0Qm90dG9tVW5pdCh2b2lkKSBjb25zdAp7
CiAgcmV0dXJuIEdldFVuaXQoMik7Cn0KCmlubGluZSBuc1N0eWxlQ29vcmQmIG5zU3R5bGVTaWRl
czo6R2V0KFBSVWludDggYVNpZGUsIG5zU3R5bGVDb29yZCYgYUNvb3JkKSBjb25zdAp7CiAgYUNv
b3JkLlNldFVuaW9uVmFsdWUobVZhbHVlc1thU2lkZV0sIChuc1N0eWxlVW5pdCltVW5pdHNbYVNp
ZGVdKTsKICByZXR1cm4gYUNvb3JkOwp9CgppbmxpbmUgbnNTdHlsZUNvb3JkJiBuc1N0eWxlU2lk
ZXM6OkdldExlZnQobnNTdHlsZUNvb3JkJiBhQ29vcmQpIGNvbnN0CnsKICByZXR1cm4gR2V0KDMs
IGFDb29yZCk7Cn0KCmlubGluZSBuc1N0eWxlQ29vcmQmIG5zU3R5bGVTaWRlczo6R2V0VG9wKG5z
U3R5bGVDb29yZCYgYUNvb3JkKSBjb25zdAp7CiAgcmV0dXJuIEdldCgwLCBhQ29vcmQpOwp9Cgpp
bmxpbmUgbnNTdHlsZUNvb3JkJiBuc1N0eWxlU2lkZXM6OkdldFJpZ2h0KG5zU3R5bGVDb29yZCYg
YUNvb3JkKSBjb25zdAp7CiAgcmV0dXJuIEdldCgxLCBhQ29vcmQpOwp9CgppbmxpbmUgbnNTdHls
ZUNvb3JkJiBuc1N0eWxlU2lkZXM6OkdldEJvdHRvbShuc1N0eWxlQ29vcmQmIGFDb29yZCkgY29u
c3QKewogIHJldHVybiBHZXQoMiwgYUNvb3JkKTsKfQoKaW5saW5lIHZvaWQgbnNTdHlsZVNpZGVz
OjpTZXQoUFJVaW50OCBhU2lkZSwgY29uc3QgbnNTdHlsZUNvb3JkJiBhQ29vcmQpCnsKICBtVW5p
dHNbYVNpZGVdID0gYUNvb3JkLkdldFVuaXQoKTsKICBhQ29vcmQuR2V0VW5pb25WYWx1ZShtVmFs
dWVzW2FTaWRlXSk7Cn0KCmlubGluZSB2b2lkIG5zU3R5bGVTaWRlczo6U2V0TGVmdChjb25zdCBu
c1N0eWxlQ29vcmQmIGFDb29yZCkKewogIFNldCgzLCBhQ29vcmQpOwp9CgppbmxpbmUgdm9pZCBu
c1N0eWxlU2lkZXM6OlNldFRvcChjb25zdCBuc1N0eWxlQ29vcmQmIGFDb29yZCkKewogIFNldCgw
LCBhQ29vcmQpOwp9CgppbmxpbmUgdm9pZCBuc1N0eWxlU2lkZXM6OlNldFJpZ2h0KGNvbnN0IG5z
U3R5bGVDb29yZCYgYUNvb3JkKQp7CiAgU2V0KDEsIGFDb29yZCk7Cn0KCmlubGluZSB2b2lkIG5z
U3R5bGVTaWRlczo6U2V0Qm90dG9tKGNvbnN0IG5zU3R5bGVDb29yZCYgYUNvb3JkKQp7CiAgU2V0
KDIsIGFDb29yZCk7Cn0KIyA0OCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNTdHls
ZVN0cnVjdC5oIiAyCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVN0eWxl
U2V0LmgiIDEKIyA0NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lTdHlsZVNldC5o
IgpjbGFzcyBuc0lBdG9tOwpjbGFzcyBuc0lTdHlsZVJ1bGU7CmNsYXNzIG5zSVN0eWxlU2hlZXQ7
CmNsYXNzIG5zSVN0eWxlQ29udGV4dDsKY2xhc3MgbnNJU3R5bGVSdWxlU3VwcGxpZXI7CmNsYXNz
IG5zSVN0eWxlRnJhbWVDb25zdHJ1Y3Rpb247CmNsYXNzIG5zSVByZXNDb250ZXh0OwpjbGFzcyBu
c0lQcmVzU2hlbGw7CmNsYXNzIG5zSUNvbnRlbnQ7CmNsYXNzIG5zSUZyYW1lOwpjbGFzcyBuc0lE
b2N1bWVudDsKY2xhc3MgbnNJRnJhbWVNYW5hZ2VyOwpjbGFzcyBuc0lTdXBwb3J0c0FycmF5Owpj
bGFzcyBuc1J1bGVOb2RlOwpzdHJ1Y3QgbnNGaW5kRnJhbWVIaW50OwoKCmNsYXNzIG5zSVNpemVP
ZkhhbmRsZXI7CgpjbGFzcyBuc0lDU1NQc2V1ZG9Db21wYXJhdG9yOwoKCgoKCmNsYXNzIG5zSVN0
eWxlU2V0IDogcHVibGljIG5zSVN1cHBvcnRzIHsKcHVibGljOgogIHN0YXRpYyBjb25zdCBuc0lJ
RCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhlNTkzOTZiMCwgMHhiMjQ0
LCAweDExZDEsIHsweDgwLCAweDMxLCAweDAwLCAweDYwLCAweDA4LCAweDE1LCAweDliLCAweDVh
fX07IHJldHVybiBpaWQ7fQoKCgogIHZpcnR1YWwgdm9pZCBBcHBlbmRPdmVycmlkZVN0eWxlU2hl
ZXQobnNJU3R5bGVTaGVldCogYVNoZWV0KSA9IDA7CiAgdmlydHVhbCB2b2lkIEluc2VydE92ZXJy
aWRlU3R5bGVTaGVldEFmdGVyKG5zSVN0eWxlU2hlZXQqIGFTaGVldCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3R5bGVTaGVldCogYUFmdGVyU2hlZXQp
ID0gMDsKICB2aXJ0dWFsIHZvaWQgSW5zZXJ0T3ZlcnJpZGVTdHlsZVNoZWV0QmVmb3JlKG5zSVN0
eWxlU2hlZXQqIGFTaGVldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5zSVN0eWxlU2hlZXQqIGFCZWZvcmVTaGVldCkgPSAwOwogIHZpcnR1YWwgdm9pZCBS
ZW1vdmVPdmVycmlkZVN0eWxlU2hlZXQobnNJU3R5bGVTaGVldCogYVNoZWV0KSA9IDA7CiAgdmly
dHVhbCBQUkludDMyIEdldE51bWJlck9mT3ZlcnJpZGVTdHlsZVNoZWV0cygpID0gMDsKICB2aXJ0
dWFsIG5zSVN0eWxlU2hlZXQqIEdldE92ZXJyaWRlU3R5bGVTaGVldEF0KFBSSW50MzIgYUluZGV4
KSA9IDA7CgoKICB2aXJ0dWFsIHZvaWQgQWRkRG9jU3R5bGVTaGVldChuc0lTdHlsZVNoZWV0KiBh
U2hlZXQsIG5zSURvY3VtZW50KiBhRG9jdW1lbnQpID0gMDsKICB2aXJ0dWFsIHZvaWQgUmVtb3Zl
RG9jU3R5bGVTaGVldChuc0lTdHlsZVNoZWV0KiBhU2hlZXQpID0gMDsKICB2aXJ0dWFsIFBSSW50
MzIgR2V0TnVtYmVyT2ZEb2NTdHlsZVNoZWV0cygpID0gMDsKICB2aXJ0dWFsIG5zSVN0eWxlU2hl
ZXQqIEdldERvY1N0eWxlU2hlZXRBdChQUkludDMyIGFJbmRleCkgPSAwOwoKICB2aXJ0dWFsIHZv
aWQgQXBwZW5kVXNlclN0eWxlU2hlZXQobnNJU3R5bGVTaGVldCogYVNoZWV0KSA9IDA7CiAgdmly
dHVhbCB2b2lkIEluc2VydFVzZXJTdHlsZVNoZWV0QWZ0ZXIobnNJU3R5bGVTaGVldCogYVNoZWV0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdHlsZVNo
ZWV0KiBhQWZ0ZXJTaGVldCkgPSAwOwogIHZpcnR1YWwgdm9pZCBJbnNlcnRVc2VyU3R5bGVTaGVl
dEJlZm9yZShuc0lTdHlsZVNoZWV0KiBhU2hlZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBuc0lTdHlsZVNoZWV0KiBhQmVmb3JlU2hlZXQpID0gMDsKICB2
aXJ0dWFsIHZvaWQgUmVtb3ZlVXNlclN0eWxlU2hlZXQobnNJU3R5bGVTaGVldCogYVNoZWV0KSA9
IDA7CiAgdmlydHVhbCBQUkludDMyIEdldE51bWJlck9mVXNlclN0eWxlU2hlZXRzKCkgPSAwOwog
IHZpcnR1YWwgbnNJU3R5bGVTaGVldCogR2V0VXNlclN0eWxlU2hlZXRBdChQUkludDMyIGFJbmRl
eCkgPSAwOwogIHZpcnR1YWwgdm9pZCBSZXBsYWNlVXNlclN0eWxlU2hlZXRzKG5zSVN1cHBvcnRz
QXJyYXkqIGFOZXdTaGVldHMpID0gMDsKCiAgdmlydHVhbCB2b2lkIEFwcGVuZEFnZW50U3R5bGVT
aGVldChuc0lTdHlsZVNoZWV0KiBhU2hlZXQpID0gMDsKICB2aXJ0dWFsIHZvaWQgSW5zZXJ0QWdl
bnRTdHlsZVNoZWV0QWZ0ZXIobnNJU3R5bGVTaGVldCogYVNoZWV0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdHlsZVNoZWV0KiBhQWZ0ZXJTaGVldCkg
PSAwOwogIHZpcnR1YWwgdm9pZCBJbnNlcnRBZ2VudFN0eWxlU2hlZXRCZWZvcmUobnNJU3R5bGVT
aGVldCogYVNoZWV0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnNJU3R5bGVTaGVldCogYUJlZm9yZVNoZWV0KSA9IDA7CiAgdmlydHVhbCB2b2lkIFJlbW92
ZUFnZW50U3R5bGVTaGVldChuc0lTdHlsZVNoZWV0KiBhU2hlZXQpID0gMDsKICB2aXJ0dWFsIFBS
SW50MzIgR2V0TnVtYmVyT2ZBZ2VudFN0eWxlU2hlZXRzKCkgPSAwOwogIHZpcnR1YWwgbnNJU3R5
bGVTaGVldCogR2V0QWdlbnRTdHlsZVNoZWV0QXQoUFJJbnQzMiBhSW5kZXgpID0gMDsKICB2aXJ0
dWFsIHZvaWQgUmVwbGFjZUFnZW50U3R5bGVTaGVldHMobnNJU3VwcG9ydHNBcnJheSogYU5ld1No
ZWV0cykgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJ1bGVUcmVlKG5zUnVsZU5vZGUqKiBh
UmVzdWx0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBDbGVhckNhY2hlZERhdGFJblJ1bGVUcmVl
KG5zSVN0eWxlUnVsZSogYVJ1bGUpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBBZGRSdWxl
Tm9kZU1hcHBpbmcobnNSdWxlTm9kZSogYVJ1bGVOb2RlKSA9IDA7CiMgMTMwICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbGF5b3V0L25zSVN0eWxlU2V0LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBCZWdp
blJ1bGVUcmVlUmVjb25zdHJ1Y3QoKT0wOwogIHZpcnR1YWwgbnNyZXN1bHQgRW5kUnVsZVRyZWVS
ZWNvbnN0cnVjdCgpPTA7CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U3R5bGVGcmFtZUNvbnN0cnVj
dGlvbihuc0lTdHlsZUZyYW1lQ29uc3RydWN0aW9uKiogYVJlc3VsdCkgPSAwOwojIDE0NCAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lTdHlsZVNldC5oIgogIHZpcnR1YWwgbnNyZXN1
bHQgQ2xlYXJTdHlsZURhdGEobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwgbnNJU3R5bGVS
dWxlKiBhUnVsZSwgbnNJU3R5bGVDb250ZXh0KiBhQ29udGV4dCkgPSAwOwoKCgogIHZpcnR1YWwg
bnNyZXN1bHQgRW5hYmxlUXVpcmtTdHlsZVNoZWV0KFBSQm9vbCBhRW5hYmxlKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IE5vdGlmeVN0eWxlU2hlZXRTdGF0ZUNoYW5nZWQoUFJCb29sIGFBcHBs
aWNhYmxlKSA9IDA7CgoKICB2aXJ0dWFsIG5zSVN0eWxlQ29udGV4dCogUmVzb2x2ZVN0eWxlRm9y
KG5zSVByZXNDb250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuc0lDb250ZW50KiBhQ29udGVudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN0eWxlQ29udGV4dCogYVBhcmVudENvbnRleHQp
ID0gMDsKIyAxNjggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJU3R5bGVTZXQuaCIK
ICB2aXJ0dWFsIG5zSVN0eWxlQ29udGV4dCogUmVzb2x2ZVN0eWxlRm9yTm9uRWxlbWVudCgKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVByZXNDb250ZXh0KiBh
UHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
c0lTdHlsZUNvbnRleHQqIGFQYXJlbnRDb250ZXh0KSA9IDA7CgoKCiAgdmlydHVhbCBuc0lTdHls
ZUNvbnRleHQqIFJlc29sdmVQc2V1ZG9TdHlsZUZvcihuc0lQcmVzQ29udGV4dCogYVByZXNDb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJ
Q29udGVudCogYVBhcmVudENvbnRlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuc0lBdG9tKiBhUHNldWRvVGFnLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3R5bGVDb250ZXh0KiBhUGFyZW50Q29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5z
SUNTU1BzZXVkb0NvbXBhcmF0b3IqIGFDb21wYXJhdG9yID0gMCkgPSAwOwoKCgoKICB2aXJ0dWFs
IG5zSVN0eWxlQ29udGV4dCogUHJvYmVQc2V1ZG9TdHlsZUZvcihuc0lQcmVzQ29udGV4dCogYVBy
ZXNDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5zSUNvbnRlbnQqIGFQYXJlbnRDb250ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5zSUF0b20qIGFQc2V1ZG9UYWcsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3R5bGVDb250ZXh0KiBhUGFyZW50Q29u
dGV4dCkgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IFNodXRkb3duKCk9MDsKCgoKICB2aXJ0dWFs
IG5zcmVzdWx0IFJlUGFyZW50U3R5bGVDb250ZXh0KG5zSVByZXNDb250ZXh0KiBhUHJlc0NvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3R5bGVDb250ZXh0KiBh
U3R5bGVDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN0eWxl
Q29udGV4dCogYU5ld1BhcmVudENvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnNJU3R5bGVDb250ZXh0KiogYU5ld1N0eWxlQ29udGV4dCkgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBIYXNTdGF0ZURlcGVuZGVudFN0eWxlKG5zSVByZXNDb250ZXh0KiBhUHJlc0Nv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lDb250ZW50KiBh
Q29udGVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSSW50MzIgYVN0
YXRlTWFzaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCogYVJl
c3VsdCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDb25zdHJ1Y3RSb290RnJhbWUobnNJUHJl
c0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnNJQ29udGVudCogYURvY0VsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5zSUZyYW1lKiYgYUZyYW1lU3ViVHJlZSkgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFJl
Y29uc3RydWN0RG9jRWxlbWVudEhpZXJhcmNoeShuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENvbnRlbnRBcHBlbmRlZChuc0lQcmVzQ29udGV4
dCogYVByZXNDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUNvbnRlbnQq
IGFDb250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJJbnQzMiBhTmV3SW5k
ZXhJbkNvbnRhaW5lcikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgQ29udGVudEluc2VydGVkKG5z
SVByZXNDb250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnNJQ29udGVudCogYUNvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lD
b250ZW50KiBhQ2hpbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJJbnQzMiBhSW5k
ZXhJbkNvbnRhaW5lcikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgQ29udGVudFJlcGxhY2VkKG5z
SVByZXNDb250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnNJQ29udGVudCogYUNvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lD
b250ZW50KiBhT2xkQ2hpbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQ29udGVu
dCogYU5ld0NoaWxkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSSW50MzIgYUluZGV4
SW5Db250YWluZXIpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IENvbnRlbnRSZW1vdmVkKG5zSVBy
ZXNDb250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lD
b250ZW50KiBhQ29udGFpbmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQ29udGVu
dCogYUNoaWxkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJJbnQzMiBhSW5kZXhJbkNv
bnRhaW5lcikgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IENvbnRlbnRDaGFuZ2VkKG5zSVByZXND
b250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lDb250
ZW50KiBhQ29udGVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzKiBh
U3ViQ29udGVudCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgQ29udGVudFN0YXRlc0NoYW5nZWQo
bnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5zSUNvbnRlbnQqIGFDb250ZW50MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5zSUNvbnRlbnQqIGFDb250ZW50MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBSSW50MzIgYVN0YXRlTWFzaykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgQXR0cmli
dXRlQ2hhbmdlZChuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuc0lDb250ZW50KiBhQ2hpbGQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBSSW50MzIgYU5hbWVTcGFjZUlELAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuc0lBdG9tKiBhQXR0cmlidXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUklu
dDMyIGFNb2RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0NoYW5nZUhpbnQg
YUhpbnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgU3R5bGVSdWxlQ2hhbmdlZChuc0lQcmVz
Q29udGV4dCogYVByZXNDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lT
dHlsZVNoZWV0KiBhU3R5bGVTaGVldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJ
U3R5bGVSdWxlKiBhU3R5bGVSdWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0No
YW5nZUhpbnQgYUhpbnQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFN0eWxlUnVsZUFkZGVkKG5z
SVByZXNDb250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
c0lTdHlsZVNoZWV0KiBhU3R5bGVTaGVldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5z
SVN0eWxlUnVsZSogYVN0eWxlUnVsZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU3R5bGVSdWxl
UmVtb3ZlZChuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuc0lTdHlsZVNoZWV0KiBhU3R5bGVTaGVldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnNJU3R5bGVSdWxlKiBhU3R5bGVSdWxlKSA9IDA7CgoKCgoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBDYW50UmVuZGVyUmVwbGFjZWRFbGVtZW50KG5zSVByZXNDb250ZXh0KiBhUHJl
c0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUZyYW1l
KiBhRnJhbWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ3JlYXRlQ29udGludWluZ0ZyYW1l
KG5zSVByZXNDb250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnNJRnJhbWUqIGFGcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuc0lGcmFtZSogYVBhcmVudEZyYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5zSUZyYW1lKiogYUNvbnRpbnVpbmdGcmFtZSkgPSAwOwojIDI4MiAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2xheW91dC9uc0lTdHlsZVNldC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgRmlu
ZFByaW1hcnlGcmFtZUZvcihuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuc0lGcmFtZU1hbmFnZXIqIGFGcmFtZU1hbmFnZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUNvbnRlbnQqIGFDb250ZW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lGcmFtZSoqIGFGcmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnNGaW5kRnJhbWVIaW50KiBhSGludD0wKSA9IDA7CiMg
MzAwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVN0eWxlU2V0LmgiCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRJbnNlcnRpb25Qb2ludChuc0lQcmVzU2hlbGwqIGFQcmVzU2hlbGwsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lGcmFtZSogYVBhcmVudEZyYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQ29udGVudCogYUNoaWxkQ29udGVudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUZyYW1lKiogYUluc2VydGlvblBvaW50KSA9
IDA7CgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRTdHlsZVJ1bGVTdXBwbGllcihuc0lTdHlsZVJ1
bGVTdXBwbGllciogYVN1cHBsaWVyKT0wOwogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U3R5bGVSdWxl
U3VwcGxpZXIobnNJU3R5bGVSdWxlU3VwcGxpZXIqKiBhU3VwcGxpZXIpPTA7CgoKCgoKCgogIHZp
cnR1YWwgdm9pZCBSZXNldFVuaXF1ZVN0eWxlSXRlbXModm9pZCkgPSAwOwoKCgogIHZpcnR1YWwg
bnNyZXN1bHQgQXR0cmlidXRlQWZmZWN0c1N0eWxlKG5zSUF0b20gKmFBdHRyaWJ1dGUsIG5zSUNv
bnRlbnQgKmFDb250ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9v
bCAmYUFmZmVjdHMpID0gMDsKfTsKCmV4dGVybiBuc3Jlc3VsdAogIE5TX05ld1N0eWxlU2V0KG5z
SVN0eWxlU2V0KiogYUluc3RhbmNlUHRyUmVzdWx0KTsKCgpjbGFzcyBuc1VuaXF1ZVN0eWxlSXRl
bXMgOiBwcml2YXRlIG5zVm9pZEFycmF5CnsKcHVibGljIDoKCiAgc3RhdGljIG5zVW5pcXVlU3R5
bGVJdGVtcyAqR2V0VW5pcXVlU3R5bGVJdGVtcyggdm9pZCApewogICAgaWYobUluc3RhbmNlID09
IDApewoKCgogICAgICBuZXcgbnNVbmlxdWVTdHlsZUl0ZW1zOwoKICAgICAgOwoKCgogICAgfQog
ICAgcmV0dXJuIG1JbnN0YW5jZTsKICB9CgogIHZvaWQgKkdldEl0ZW0odm9pZCAqYVB0cil7CiAg
ICBQUkludDMyIGluZGV4ID0gbnNWb2lkQXJyYXk6OkluZGV4T2YoYVB0cik7CiAgICBpZiggaW5k
ZXggIT0gLTEpewogICAgICByZXR1cm4gbnNWb2lkQXJyYXk6OkVsZW1lbnRBdChpbmRleCk7CiAg
ICB9IGVsc2UgewogICAgICByZXR1cm4gMDsKICAgIH0KICB9CgogIFBSQm9vbCBBZGRJdGVtKHZv
aWQgKmFQdHIpewogICAgaWYobnNWb2lkQXJyYXk6OkluZGV4T2YoYVB0cikgPT0gLTEpewogICAg
ICByZXR1cm4gbnNWb2lkQXJyYXk6OkFwcGVuZEVsZW1lbnQoYVB0cik7CiAgICB9IGVsc2Ugewog
ICAgICByZXR1cm4gMDsKICAgIH0KICB9CgogIFBSQm9vbCBSZW1vdmVJdGVtKHZvaWQgKmFQdHIp
ewogICAgcmV0dXJuIG5zVm9pZEFycmF5OjpSZW1vdmVFbGVtZW50KGFQdHIpOwogIH0KCiAgUFJJ
bnQzMiBDb3VudCh2b2lkKXsKICAgIHJldHVybiBuc1ZvaWRBcnJheTo6Q291bnQoKTsKICB9Cgog
IHZvaWQgQ2xlYXIodm9pZCl7CiAgICBuc1ZvaWRBcnJheTo6Q2xlYXIoKTsKICB9CnByb3RlY3Rl
ZDoKCiAgbnNVbmlxdWVTdHlsZUl0ZW1zKCBjb25zdCBuc1VuaXF1ZVN0eWxlSXRlbXMmIHNyYyk7
CiAgbnNVbmlxdWVTdHlsZUl0ZW1zJiBvcGVyYXRvciA9KGNvbnN0IG5zVW5pcXVlU3R5bGVJdGVt
cyYgc3JjKTsKCgogIG5zVW5pcXVlU3R5bGVJdGVtcyh2b2lkKSA6IG5zVm9pZEFycmF5KCl7CiAg
ICA7CiAgICBtSW5zdGFuY2U9dGhpczsKICB9CgogIHN0YXRpYyBuc1VuaXF1ZVN0eWxlSXRlbXMg
Km1JbnN0YW5jZTsKfTsKIyAzOTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJU3R5
bGVTZXQuaCIKc3RydWN0IG5zRmluZEZyYW1lSGludAp7CiAgbnNJRnJhbWUgKm1QcmltYXJ5RnJh
bWVGb3JQcmV2U2libGluZzsKICBuc0ZpbmRGcmFtZUhpbnQoKSB7CiAgICBtUHJpbWFyeUZyYW1l
Rm9yUHJldlNpYmxpbmcgPSAwOwogIH07Cn07CiMgNTEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9j
b250ZW50L25zU3R5bGVTdHJ1Y3QuaCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlv
dXQvbnNJUHJlc0NvbnRleHQuaCIgMQojIDQ0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0
L25zSVByZXNDb250ZXh0LmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVJl
cXVlc3QuaCIgMQojIDE3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJUmVxdWVzdC5o
IgpjbGFzcyBuc0lMb2FkR3JvdXA7Cgp0eXBlZGVmIFBSVWludDMyIG5zTG9hZEZsYWdzOwojIDM0
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJUmVxdWVzdC5oIgpjbGFzcyBuc0lSZXF1
ZXN0IDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlE
JiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGVmNmJmYmQyLCAweGZkNDYs
IDB4NDhkOCwgeyAweDk2LCAweGI3LCAweDlmLCAweDhmLCAweDBmLCAweGQzLCAweDg3LCAweGZl
IH19OyByZXR1cm4gaWlkO30KCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TmFtZShuc0FDU3Ry
aW5nICYgYU5hbWUpID0gMDsKIyA1MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVJl
cXVlc3QuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IElzUGVuZGluZyhQUkJvb2wgKl9yZXR2YWwpID0g
MDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U3RhdHVzKG5zcmVzdWx0ICphU3RhdHVzKSA9
IDA7CiMgNzUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lSZXF1ZXN0LmgiCiAgdmly
dHVhbCBuc3Jlc3VsdCBDYW5jZWwobnNyZXN1bHQgYVN0YXR1cykgPSAwOwojIDg5ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvbmVja28vbnNJUmVxdWVzdC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgU3Vz
cGVuZCh2b2lkKSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVzdW1lKHZvaWQpID0g
MDsKCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMb2FkR3JvdXAobnNJTG9hZEdyb3VwICog
KmFMb2FkR3JvdXApID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldExvYWRHcm91cChuc0lMb2Fk
R3JvdXAgKiBhTG9hZEdyb3VwKSA9IDA7CiMgMTE1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVj
a28vbnNJUmVxdWVzdC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TG9hZEZsYWdzKG5zTG9hZEZs
YWdzICphTG9hZEZsYWdzKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRMb2FkRmxhZ3MobnNM
b2FkRmxhZ3MgYUxvYWRGbGFncykgPSAwOwoKCgoKCgoKICBlbnVtIHsgTE9BRF9OT1JNQUwgPSAw
VSB9OwoKCgoKCiAgZW51bSB7IExPQURfQkFDS0dST1VORCA9IDFVIH07CiMgMTM5ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvbmVja28vbnNJUmVxdWVzdC5oIgogIGVudW0geyBJTkhJQklUX0NBQ0hJ
TkcgPSAxMjhVIH07CgoKCgoKCiAgZW51bSB7IElOSElCSVRfUEVSU0lTVEVOVF9DQUNISU5HID0g
MjU2VSB9OwojIDE1NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVJlcXVlc3QuaCIK
ICBlbnVtIHsgTE9BRF9CWVBBU1NfQ0FDSEUgPSA1MTJVIH07CgoKCgoKCgogIGVudW0geyBMT0FE
X0ZST01fQ0FDSEUgPSAxMDI0VSB9OwojIDE4OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tv
L25zSVJlcXVlc3QuaCIKICBlbnVtIHsgVkFMSURBVEVfQUxXQVlTID0gMjA0OFUgfTsKCiAgZW51
bSB7IFZBTElEQVRFX05FVkVSID0gNDA5NlUgfTsKCiAgZW51bSB7IFZBTElEQVRFX09OQ0VfUEVS
X1NFU1NJT04gPSA4MTkyVSB9OwoKfTsKIyA0NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91
dC9uc0lQcmVzQ29udGV4dC5oIiAyCgoKY2xhc3MgbnNCaWRpUHJlc1V0aWxzOwoKCnN0cnVjdCBu
c0ZvbnQ7CnN0cnVjdCBuc1JlY3Q7CgpjbGFzcyBpbWdJUmVxdWVzdDsKCmNsYXNzIG5zSUNvbnRl
bnQ7CmNsYXNzIG5zSURvY3VtZW50OwpjbGFzcyBuc0lEZXZpY2VDb250ZXh0OwpjbGFzcyBuc0lG
b250TWV0cmljczsKY2xhc3MgbnNJRnJhbWU7CmNsYXNzIG5zSUltYWdlOwpjbGFzcyBuc0lMaW5r
SGFuZGxlcjsKY2xhc3MgbnNJUHJlc1NoZWxsOwpjbGFzcyBuc0lQcmVmOwpjbGFzcyBuc0lTdHls
ZUNvbnRleHQ7CmNsYXNzIG5zSUF0b207CmNsYXNzIG5zU3RyaW5nOwpjbGFzcyBuc0lFdmVudFN0
YXRlTWFuYWdlcjsKY2xhc3MgbnNJVVJJOwpjbGFzcyBuc0lMb29rQW5kRmVlbDsKY2xhc3MgbnNJ
SU9TZXJ2aWNlOwpjbGFzcyBuc0lDU1NQc2V1ZG9Db21wYXJhdG9yOwpjbGFzcyBuc0lMYW5ndWFn
ZUF0b207CmNsYXNzIG5zSVRoZW1lOwpzdHJ1Y3QgbnNTdHlsZVN0cnVjdDsKc3RydWN0IG5zU3R5
bGVCYWNrZ3JvdW5kOwojIDg1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVByZXND
b250ZXh0LmgiCmVudW0gbnNXaWRnZXRSZW5kZXJpbmcgewogIGVXaWRnZXRSZW5kZXJpbmdfTmF0
aXZlID0gMSwKICBlV2lkZ2V0UmVuZGVyaW5nX0dmeCA9IDIsCiAgZVdpZGdldFJlbmRlcmluZ19Q
YXJ0aWFsR2Z4ID0gMwp9OwoKZW51bSBuc1dpZGdldFR5cGUgewogIGVXaWRnZXRUeXBlX0J1dHRv
biA9IDEsCiAgZVdpZGdldFR5cGVfQ2hlY2tib3ggPSAyLAogIGVXaWRnZXRUeXBlX1JhZGlvID0g
MywKICBlV2lkZ2V0VHlwZV9UZXh0ID0gNAp9OwoKZW51bSBuc0xhbmd1YWdlU3BlY2lmaWNUcmFu
c2Zvcm1UeXBlIHsKICBlTGFuZ3VhZ2VTcGVjaWZpY1RyYW5zZm9ybVR5cGVfVW5rbm93biA9IC0x
LAogIGVMYW5ndWFnZVNwZWNpZmljVHJhbnNmb3JtVHlwZV9Ob25lID0gMCwKICBlTGFuZ3VhZ2VT
cGVjaWZpY1RyYW5zZm9ybVR5cGVfSmFwYW5lc2UsCiAgZUxhbmd1YWdlU3BlY2lmaWNUcmFuc2Zv
cm1UeXBlX0tvcmVhbgp9OwoKCmNvbnN0IFBSVWludDMyIGtQcmVzQ29udGV4dF9Vc2VEb2N1bWVu
dENvbG9ycyA9IDB4MDE7CmNvbnN0IFBSVWludDMyIGtQcmVzQ29udGV4dF9Vc2VEb2N1bWVudEZv
bnRzID0gMHgwMjsKY29uc3QgUFJVaW50MzIga1ByZXNDb250ZXh0X1VuZGVybGluZUxpbmtzID0g
MHgwMzsKCgpjb25zdCBQUlVpbnQzMiBrUHJlc0NvbnRleHRfTWluaW11bUZvbnRTaXplID0gMHgw
MTsKCgoKY29uc3QgUFJVaW50OCBrUHJlc0NvbnRleHRfRGVmYXVsdFZhcmlhYmxlRm9udF9JRCA9
IDB4MDA7CmNvbnN0IFBSVWludDgga1ByZXNDb250ZXh0X0RlZmF1bHRGaXhlZEZvbnRfSUQgPSAw
eDAxOwoKCgpjbGFzcyBuc0lQcmVzQ29udGV4dCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CnB1Ymxp
YzoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlk
ID0geyAweDBhNWQxMmUwLCAweDk0NGUsIDB4MTFkMSwgezB4OTMsIDB4MjMsIDB4MDAsIDB4ODAs
IDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzJ9IH07IHJldHVybiBpaWQ7fQoKCgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEluaXQobnNJRGV2aWNlQ29udGV4dCogYURldmljZUNvbnRleHQpID0gMDsKCgoKCgog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0U2hlbGwobnNJUHJlc1NoZWxsKiBhU2hlbGwpID0gMDsKCgoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTaGVsbChuc0lQcmVzU2hlbGwqKiBhUmVzdWx0KSA9IDA7
CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29tcGF0aWJpbGl0eU1vZGUobnNDb21wYXRp
YmlsaXR5KiBhTW9kZVJlc3VsdCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q29tcGF0aWJp
bGl0eU1vZGUobnNDb21wYXRpYmlsaXR5IGFNb2RlKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0V2lkZ2V0UmVuZGVyaW5nTW9kZShuc1dpZGdldFJlbmRlcmluZyogYU1vZGVSZXN1bHQp
ID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFdpZGdldFJlbmRlcmluZ01vZGUobnNXaWRnZXRS
ZW5kZXJpbmcgYU1vZGUpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRJbWFnZUFuaW1h
dGlvbk1vZGUoUFJVaW50MTYqIGFNb2RlUmVzdWx0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBT
ZXRJbWFnZUFuaW1hdGlvbk1vZGUoUFJVaW50MTYgYU1vZGUpID0gMDsKCgoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRJbWFnZUxvYWRGbGFncyhuc0xvYWRGbGFncyYgYUxvYWRGbGFncykgPSAwOwoK
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldExvb2tBbmRGZWVsKG5zSUxvb2tBbmRGZWVsKiogYUxv
b2tBbmRGZWVsKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SU9TZXJ2aWNlKG5zSUlP
U2VydmljZSoqIGFJT1NlcnZpY2UpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRCYXNl
VVJMKG5zSVVSSSoqIGFVUkxSZXN1bHQpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRN
ZWRpdW0obnNJQXRvbSoqIGFNZWRpdW1SZXN1bHQpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBDbGVhclN0eWxlRGF0YUFuZFJlZmxvdyh2b2lkKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVz
dWx0IFJlc29sdmVTdHlsZUNvbnRleHRGb3IobnNJQ29udGVudCogYUNvbnRlbnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN0eWxlQ29udGV4dCogYVBhcmVudENvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN0eWxlQ29udGV4dCoq
IGFSZXN1bHQpID0gMDsKIyAyMTEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJUHJl
c0NvbnRleHQuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFJlc29sdmVTdHlsZUNvbnRleHRGb3JOb25F
bGVtZW50KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdHlsZUNvbnRl
eHQqIGFQYXJlbnRDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
c0lTdHlsZUNvbnRleHQqKiBhUmVzdWx0KSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBS
ZXNvbHZlUHNldWRvU3R5bGVDb250ZXh0Rm9yKG5zSUNvbnRlbnQqIGFQYXJlbnRDb250ZW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lBdG9tKiBhUHNldWRv
VGFnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdHlsZUNv
bnRleHQqIGFQYXJlbnRDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuc0lTdHlsZUNvbnRleHQqKiBhUmVzdWx0KSA9IDA7CiMgMjMzICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbGF5b3V0L25zSVByZXNDb250ZXh0LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBS
ZXNvbHZlUHNldWRvU3R5bGVXaXRoQ29tcGFyYXRvcihuc0lDb250ZW50KiBhUGFyZW50Q29udGVu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUF0b20q
IGFQc2V1ZG9UYWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuc0lTdHlsZUNvbnRleHQqIGFQYXJlbnRDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnNJQ1NTUHNldWRvQ29tcGFyYXRvciogYUNvbXBhcmF0
b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdHls
ZUNvbnRleHQqKiBhUmVzdWx0KSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgUHJvYmVQ
c2V1ZG9TdHlsZUNvbnRleHRGb3IobnNJQ29udGVudCogYVBhcmVudENvbnRlbnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lBdG9tKiBhUHNldWRvVGFnLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3R5bGVDb250ZXh0KiBhUGFy
ZW50Q29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN0
eWxlQ29udGV4dCoqIGFSZXN1bHQpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFhC
TEJpbmRpbmdVUkwobnNJQ29udGVudCogYUNvbnRlbnQsIG5zQVN0cmluZyYgYVJlc3VsdCkgPSAw
OwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZVBhcmVudFN0eWxlQ29udGV4dChuc0lGcmFtZSog
YUZyYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3R5bGVDb250ZXh0
KiBhTmV3UGFyZW50Q29udGV4dCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBBbGxvY2F0ZUZy
b21TaGVsbChzaXplX3QgYVNpemUsIHZvaWQqKiBhUmVzdWx0KSA9IDA7CiAgdmlydHVhbCBuc3Jl
c3VsdCBGcmVlVG9TaGVsbChzaXplX3QgYVNpemUsIHZvaWQqIGFGcmVlQ2h1bmspID0gMDsKCgoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNZXRyaWNzRm9yKGNvbnN0IG5zRm9udCYgYUZvbnQsIG5z
SUZvbnRNZXRyaWNzKiogYVJlc3VsdCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREZWZh
dWx0Rm9udChQUlVpbnQ4IGFGb250SUQsIGNvbnN0IG5zRm9udCoqIGFSZXN1bHQpID0gMDsKCiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXREZWZhdWx0Rm9udChQUlVpbnQ4IGFGb250SUQsIGNvbnN0IG5z
Rm9udCYgYUZvbnQpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENhY2hlZEJvb2xQ
cmVmKFBSVWludDMyIGFQcmVmVHlwZSwgUFJCb29sJiBhVmFsdWUpID0gMDsKCgoKCgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldENhY2hlZEludFByZWYoUFJVaW50MzIgYVByZWZUeXBlLCBQUkludDMy
JiBhVmFsdWUpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGb250U2NhbGVyKFBSSW50
MzIqIGFSZXN1bHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEZvbnRTY2FsZXIoUFJJbnQz
MiBhU2NhbGVyKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RGVmYXVsdENvbG9yKG5z
Y29sb3IqIGFDb2xvcikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RGVmYXVsdEJhY2tncm91
bmRDb2xvcihuc2NvbG9yKiBhQ29sb3IpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERlZmF1
bHRMaW5rQ29sb3IobnNjb2xvciogYUNvbG9yKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRE
ZWZhdWx0VmlzaXRlZExpbmtDb2xvcihuc2NvbG9yKiBhQ29sb3IpID0gMDsKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldEZvY3VzQmFja2dyb3VuZENvbG9yKG5zY29sb3IqIGFDb2xvcikgPSAwOwogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0Rm9jdXNUZXh0Q29sb3IobnNjb2xvciogYUNvbG9yKSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRVc2VGb2N1c0NvbG9ycyhQUkJvb2wmIHVzZUZvY3VzQ29sb3Jz
KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGb2N1c1JpbmdXaWR0aChQUlVpbnQ4ICpmb2N1
c1JpbmdXaWR0aCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Rm9jdXNSaW5nT25Bbnl0aGlu
ZyhQUkJvb2wmIGZvY3VzUmluZ09uQW55dGhpbmcpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
U2V0RGVmYXVsdENvbG9yKG5zY29sb3IgYUNvbG9yKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBT
ZXREZWZhdWx0QmFja2dyb3VuZENvbG9yKG5zY29sb3IgYUNvbG9yKSA9IDA7CiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXREZWZhdWx0TGlua0NvbG9yKG5zY29sb3IgYUNvbG9yKSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXREZWZhdWx0VmlzaXRlZExpbmtDb2xvcihuc2NvbG9yIGFDb2xvcikgPSAw
OwojIDMyNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lQcmVzQ29udGV4dC5oIgog
IHZpcnR1YWwgbnNyZXN1bHQgTG9hZEltYWdlKGNvbnN0IG5zU3RyaW5nJiBhVVJMLAogICAgICAg
ICAgICAgICAgICAgICAgIG5zSUZyYW1lKiBhVGFyZ2V0RnJhbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgaW1nSVJlcXVlc3QgKiphUmVxdWVzdCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBTdG9wSW1hZ2VzRm9yKG5zSUZyYW1lKiBhVGFyZ2V0RnJhbWUpID0gMDsKCiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXRDb250YWluZXIobnNJU3VwcG9ydHMqIGFDb250YWluZXIpID0gMDsKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRDb250YWluZXIobnNJU3VwcG9ydHMqKiBhUmVzdWx0KSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldExpbmtIYW5kbGVyKG5zSUxpbmtIYW5kbGVyKiBhSGFuZGxl
cikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGlua0hhbmRsZXIobnNJTGlua0hhbmRsZXIq
KiBhUmVzdWx0KSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VmlzaWJsZUFyZWEo
bnNSZWN0JiBhUmVzdWx0KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFZpc2libGVB
cmVhKGNvbnN0IG5zUmVjdCYgcikgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJc1BhZ2lu
YXRlZChQUkJvb2wqIGFSZXN1bHQpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UGFn
aW5hdGVkU2Nyb2xsaW5nKFBSQm9vbCBhUmVzdWx0KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldFBhZ2luYXRlZFNjcm9sbGluZyhQUkJvb2wqIGFSZXN1bHQpID0gMDsKIyAzODMgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJUHJlc0NvbnRleHQuaCIKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldFBhZ2VEaW0obnNSZWN0KiBhQWN0dWFsUmVjdCwgbnNSZWN0KiBhQWRqUmVjdCkg
PSAwOwojIDM5MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lQcmVzQ29udGV4dC5o
IgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UGFnZURpbShuc1JlY3QqIGFSZWN0KSA9IDA7CgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0UGl4ZWxzVG9Ud2lwcyhmbG9hdCogYVJlc3VsdCkgY29uc3QgPSAw
OwoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFR3aXBzVG9QaXhlbHMoZmxvYXQqIGFSZXN1bHQpIGNv
bnN0ID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRUd2lwc1RvUGl4ZWxzRm9yRm9udHMoZmxv
YXQqIGFSZXN1bHQpIGNvbnN0ID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNjYWxl
ZFBpeGVsc1RvVHdpcHMoZmxvYXQqIGFTY2FsZSkgY29uc3QgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXREZXZpY2VDb250ZXh0KG5zSURldmljZUNvbnRleHQqKiBhUmVzdWx0KSBjb25zdCA9
IDA7CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RXZlbnRTdGF0ZU1hbmFnZXIobnNJRXZlbnRTdGF0
ZU1hbmFnZXIqKiBhTWFuYWdlcikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGFuZ3VhZ2Uo
bnNJTGFuZ3VhZ2VBdG9tKiogYUxhbmd1YWdlKSA9IDA7CiMgNDIxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvbGF5b3V0L25zSVByZXNDb250ZXh0LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMYW5n
dWFnZVNwZWNpZmljVHJhbnNmb3JtVHlwZSgKICAgICAgICAgICAgICBuc0xhbmd1YWdlU3BlY2lm
aWNUcmFuc2Zvcm1UeXBlKiBhVHlwZSkgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEJh
Y2tncm91bmRJbWFnZURyYXcoUFJCb29sICZhQ2FuRHJhdyk9MDsKICB2aXJ0dWFsIG5zcmVzdWx0
IFNldEJhY2tncm91bmRJbWFnZURyYXcoUFJCb29sIGFDYW5EcmF3KT0wOwogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0QmFja2dyb3VuZENvbG9yRHJhdyhQUkJvb2wgJmFDYW5EcmF3KT0wOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0QmFja2dyb3VuZENvbG9yRHJhdyhQUkJvb2wgYUNhbkRyYXcpPTA7CiMg
NDQwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVByZXNDb250ZXh0LmgiCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRCaWRpRW5hYmxlZChQUkJvb2wqIGFCaWRpRW5hYmxlZCkgY29uc3Qg
PSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QmlkaUVuYWJsZWQoUFJCb29sIGFCaWRp
RW5hYmxlZCkgY29uc3QgPSAwOwojIDQ2MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9u
c0lQcmVzQ29udGV4dC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VmlzdWFsTW9kZShQUkJvb2wg
YUlzVmlzdWFsKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJc1Zpc3VhbE1vZGUoUFJC
b29sJiBhSXNWaXN1YWwpIGNvbnN0ID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEJp
ZGlVdGlscyhuc0JpZGlQcmVzVXRpbHMqKiBhQmlkaVV0aWxzKSA9IDA7CgoKCgogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0QmlkaShQUlVpbnQzMiBhQmlkaU9wdGlvbnMsIFBSQm9vbCBhRm9yY2VSZWZs
b3cgPSAwKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QmlkaShQUlVpbnQzMiogYUJp
ZGlPcHRpb25zKSBjb25zdCA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJc1Zpc1JUTChQ
UkJvb2wgJmFSZXN1bHQpIGNvbnN0ID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgSXNBcmFi
aWNFbmNvZGluZyhQUkJvb2wgJmFSZXN1bHQpIGNvbnN0ID0gMDsKCgoKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgU2V0SXNCaWRpU3lzdGVtKFBSQm9vbCBhSXNCaWRpKSA9IDA7CgoKCgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldElzQmlkaVN5c3RlbShQUkJvb2wgJmFSZXN1bHQpIGNvbnN0ID0gMDsKCgoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRCaWRpQ2hhcnNldChuc0FTdHJpbmcgJmFDaGFyU2V0KSBj
b25zdCA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0SXNSZW5kZXJpbmdPbmx5U2Vs
ZWN0aW9uKFBSQm9vbCBhUmVzdWx0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBJc1JlbmRlcmlu
Z09ubHlTZWxlY3Rpb24oUFJCb29sKiBhUmVzdWx0KSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0VGhlbWUobnNJVGhlbWUqKiBhUmVzdWx0KSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgVGhlbWVDaGFuZ2VkKCkgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFN5c0NvbG9y
Q2hhbmdlZCgpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEZpbmRGcmFtZUJhY2tncm91
bmQobnNJRnJhbWUqIGFGcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgbnNTdHlsZUJhY2tncm91bmQqKiBhQmFja2dyb3VuZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUFJCb29sKiBhSXNDYW5hdnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBSQm9vbCogYUZvdW5kQmFja2dyb3VuZCkgPSAwOwoKCgoKCn07CiMgNTY5ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVByZXNDb250ZXh0LmgiCmV4dGVybiBuc3Jlc3Vs
dAogIE5TX05ld0dhbGxleUNvbnRleHQobnNJUHJlc0NvbnRleHQqKiBhSW5zdGFuY2VQdHJSZXN1
bHQpOwojIDUyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc1N0eWxlU3RydWN0Lmgi
IDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVByZXNTaGVsbC5oIiAxCiMg
NDMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJUHJlc1NoZWxsLmgiCiMgMSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc1JlZmxvd1R5cGUuaCIgMQojIDQxICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvbGF5b3V0L25zUmVmbG93VHlwZS5oIgplbnVtIG5zUmVmbG93VHlwZSB7
CgoKCgoKCgogIGVSZWZsb3dUeXBlX0NvbnRlbnRDaGFuZ2VkLAoKCgoKCgoKICBlUmVmbG93VHlw
ZV9TdHlsZUNoYW5nZWQsCgoKCgogIGVSZWZsb3dUeXBlX1JlZmxvd0RpcnR5LAoKCgoKICBlUmVm
bG93VHlwZV9Vc2VyRGVmaW5lZAp9OwojIDQ0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0
L25zSVByZXNTaGVsbC5oIiAyCgoKY2xhc3MgbnNJQXRvbTsKY2xhc3MgbnNJQ29udGVudDsKY2xh
c3MgbnNJQ29udGVudEl0ZXJhdG9yOwpjbGFzcyBuc0lEb2N1bWVudDsKY2xhc3MgbnNJRG9jdW1l
bnRPYnNlcnZlcjsKY2xhc3MgbnNJRnJhbWU7CmNsYXNzIG5zSVByZXNDb250ZXh0OwpjbGFzcyBu
c0lTdHlsZVNldDsKY2xhc3MgbnNJVmlld01hbmFnZXI7CmNsYXNzIG5zSURldmljZUNvbnRleHQ7
CmNsYXNzIG5zSVJlbmRlcmluZ0NvbnRleHQ7CmNsYXNzIG5zSVBhZ2VTZXF1ZW5jZUZyYW1lOwpj
bGFzcyBuc1N0cmluZzsKY2xhc3MgbnNBU3RyaW5nOwpjbGFzcyBuc1N0cmluZ0FycmF5OwpjbGFz
cyBuc0lDYXJldDsKY2xhc3MgbnNJU3R5bGVDb250ZXh0OwpjbGFzcyBuc0lGcmFtZVNlbGVjdGlv
bjsKY2xhc3MgbnNJRnJhbWVNYW5hZ2VyOwpjbGFzcyBuc0lMYXlvdXRIaXN0b3J5U3RhdGU7CmNs
YXNzIG5zSUFyZW5hOwpjbGFzcyBuc0lSZWZsb3dDYWxsYmFjazsKY2xhc3MgbnNJU3VwcG9ydHNB
cnJheTsKY2xhc3MgbnNJRE9NTm9kZTsKY2xhc3MgbnNIVE1MUmVmbG93Q29tbWFuZDsKIyAxMDYg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJUHJlc1NoZWxsLmgiCmVudW0gbnNBdHRy
aWJ1dGVDaGFuZ2VUeXBlIHsKICBlQ2hhbmdlVHlwZV9TZXQgPSAwLAogIGVDaGFuZ2VUeXBlX1Jl
bW92ZSA9IDEKfTsKIyAxMjIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJUHJlc1No
ZWxsLmgiCmNsYXNzIG5zSVByZXNTaGVsbCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CnB1YmxpYzoK
ICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0g
eyAweDc2ZTc5YzYwLCAweDk0NGUsIDB4MTFkMSwgezB4OTMsIDB4MjMsIDB4MDAsIDB4ODAsIDB4
NWYsIDB4OGEsIDB4ZGQsIDB4MzJ9IH07IHJldHVybiBpaWQ7fQoKICB2aXJ0dWFsIG5zcmVzdWx0
IEluaXQobnNJRG9jdW1lbnQqIGFEb2N1bWVudCwKICAgICAgICAgICAgICAgICAgbnNJUHJlc0Nv
bnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgbnNJVmlld01hbmFnZXIqIGFW
aWV3TWFuYWdlciwKICAgICAgICAgICAgICAgICAgbnNJU3R5bGVTZXQqIGFTdHlsZVNldCwKICAg
ICAgICAgICAgICAgICAgbnNDb21wYXRpYmlsaXR5IGFDb21wYXRNb2RlKSA9IDA7CiMgMTM5ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVByZXNTaGVsbC5oIgogIHZpcnR1YWwgbnNy
ZXN1bHQgRGVzdHJveSgpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBBbGxvY2F0ZUZyYW1l
KHNpemVfdCBhU2l6ZSwgdm9pZCoqIGFSZXN1bHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IEZy
ZWVGcmFtZShzaXplX3QgYVNpemUsIHZvaWQqIGFGcmVlQ2h1bmspID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgUHVzaFN0YWNrTWVtb3J5KCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgUG9wU3Rh
Y2tNZW1vcnkoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBBbGxvY2F0ZVN0YWNrTWVtb3J5KHNp
emVfdCBhU2l6ZSwgdm9pZCoqIGFSZXN1bHQpID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRE
b2N1bWVudChuc0lEb2N1bWVudCoqIGFSZXN1bHQpID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRQcmVzQ29udGV4dChuc0lQcmVzQ29udGV4dCoqIGFSZXN1bHQpID0gMDsKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRWaWV3TWFuYWdlcihuc0lWaWV3TWFuYWdlcioqIGFSZXN1bHQpID0gMDsKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRTdHlsZVNldChuc0lTdHlsZVNldCoqIGFSZXN1bHQpID0gMDsK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBY3RpdmVBbHRlcm5hdGVTdHlsZVNoZWV0KG5zU3RyaW5n
JiBhU2hlZXRUaXRsZSkgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IFNlbGVjdEFsdGVybmF0ZVN0
eWxlU2hlZXQoY29uc3QgbnNTdHJpbmcmIGFTaGVldFRpdGxlKSA9IDA7CgoKCgoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBSZWNvbnN0cnVjdFN0eWxlRGF0YShQUkJvb2wgYVJlYnVpbGRSdWxlVHJlZSkg
PSAwOwojIDE3OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lQcmVzU2hlbGwuaCIK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldFByZWZlcmVuY2VTdHlsZVJ1bGVzKFBSQm9vbCBhRm9yY2VS
ZWZsb3cpID0gMDsKIyAxODggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJUHJlc1No
ZWxsLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBFbmFibGVQcmVmU3R5bGVSdWxlcyhQUkJvb2wgYUVu
YWJsZSwgUFJVaW50OCBhUHJlZlR5cGU9MHhGRikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgQXJl
UHJlZlN0eWxlUnVsZXNFbmFibGVkKFBSQm9vbCYgYUVuYWJsZWQpID0gMDsKCgoKCgogIHZpcnR1
YWwgbnNyZXN1bHQgTGlzdEFsdGVybmF0ZVN0eWxlU2hlZXRzKG5zU3RyaW5nQXJyYXkmIGFUaXRs
ZUxpc3QpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RnJhbWVTZWxlY3Rpb24obnNJ
RnJhbWVTZWxlY3Rpb24qKiBhU2VsZWN0aW9uKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEJl
Z2luT2JzZXJ2aW5nRG9jdW1lbnQoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEVuZE9ic2Vy
dmluZ0RvY3VtZW50KCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RGlkSW5pdGlh
bFJlZmxvdyhQUkJvb2wgKmFEaWRJbml0aWFsUmVmbG93KSA9IDA7CiMgMjIzICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbGF5b3V0L25zSVByZXNTaGVsbC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgSW5p
dGlhbFJlZmxvdyhuc2Nvb3JkIGFXaWR0aCwgbnNjb29yZCBhSGVpZ2h0KSA9IDA7CgoKCgoKICB2
aXJ0dWFsIG5zcmVzdWx0IFJlc2l6ZVJlZmxvdyhuc2Nvb3JkIGFXaWR0aCwgbnNjb29yZCBhSGVp
Z2h0KSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgU3R5bGVDaGFuZ2VSZWZsb3coKSA9IDA7
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Um9vdEZyYW1lKG5zSUZyYW1lKiogYUZyYW1lKSBjb25z
dCA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBhZ2VTZXF1ZW5jZUZyYW1lKG5zSVBh
Z2VTZXF1ZW5jZUZyYW1lKiogYVJlc3VsdCkgY29uc3QgPSAwOwojIDI1OCAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2xheW91dC9uc0lQcmVzU2hlbGwuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBy
aW1hcnlGcmFtZUZvcihuc0lDb250ZW50KiBhQ29udGVudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuc0lGcmFtZSoqIGFQcmltYXJ5RnJhbWUpIGNvbnN0ID0gMDsKCgoKCgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0U3R5bGVDb250ZXh0Rm9yKG5zSUZyYW1lKiBhRnJhbWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3R5bGVDb250ZXh0KiogYVN0eWxlQ29udGV4
dCkgY29uc3QgPSAwOwoKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldExheW91dE9iamVjdEZv
cihuc0lDb250ZW50KiBhQ29udGVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
c0lTdXBwb3J0cyoqIGFSZXN1bHQpIGNvbnN0ID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0UGxhY2Vob2xkZXJGcmFtZUZvcihuc0lGcmFtZSogYUZyYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBuc0lGcmFtZSoqIGFQbGFjZWhvbGRlckZyYW1lKSBjb25zdCA9
IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgQXBwZW5kUmVmbG93Q29tbWFuZChuc0hUTUxSZWZs
b3dDb21tYW5kKiBhUmVmbG93Q29tbWFuZCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgQ2FuY2Vs
UmVmbG93Q29tbWFuZChuc0lGcmFtZSogYVRhcmdldEZyYW1lLCBuc1JlZmxvd1R5cGUqIGFDbWRU
eXBlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBDYW5jZWxBbGxSZWZsb3dDb21tYW5kcygpID0g
MDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZWNyZWF0ZUZyYW1lc0Zvcihuc0lDb250ZW50KiBh
Q29udGVudCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgSXNTYWZlVG9GbHVzaChQUkJv
b2wmIGFJc1NhZmVUb0ZsdXNoKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBGbHVzaFBl
bmRpbmdOb3RpZmljYXRpb25zKFBSQm9vbCBhVXBkYXRlVmlld3MpID0gMDsKCgoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBQb3N0RE9NRXZlbnQobnNJQ29udGVudCogYUNvbnRlbnQsIG5zRXZlbnQqIGFF
dmVudCk9MDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBQb3N0QXR0cmlidXRlQ2hhbmdlKG5zSUNv
bnRlbnQqIGFDb250ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkludDMy
IGFOYW1lU3BhY2VJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQXRvbSog
YU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5zU3RyaW5nJiBh
VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCBhTm90aWZ5LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0F0dHJpYnV0ZUNoYW5nZVR5cGUgYVR5
cGUpID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBQb3N0UmVmbG93Q2FsbGJhY2sobnNJUmVmbG93
Q2FsbGJhY2sqIGFDYWxsYmFjaykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgQ2FuY2VsUmVmbG93
Q2FsbGJhY2sobnNJUmVmbG93Q2FsbGJhY2sqIGFDYWxsYmFjaykgPSAwOwoKCgogIHZpcnR1YWwg
bnNyZXN1bHQgQmVnaW5SZWZsb3dCYXRjaGluZygpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IEVu
ZFJlZmxvd0JhdGNoaW5nKFBSQm9vbCBhRmx1c2hQZW5kaW5nUmVmbG93cykgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0UmVmbG93QmF0Y2hpbmdTdGF0dXMoUFJCb29sKiBhSXNCYXRjaGluZykg
PSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IENsZWFyRnJhbWVSZWZzKG5zSUZyYW1lKiBhRnJhbWUp
ID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ3JlYXRlUmVuZGVyaW5nQ29udGV4dChuc0lG
cmFtZSAqYUZyYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lSZW5k
ZXJpbmdDb250ZXh0KiogYUNvbnRleHQpID0gMDsKIyAzNTAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9sYXlvdXQvbnNJUHJlc1NoZWxsLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBDYW50UmVuZGVyUmVw
bGFjZWRFbGVtZW50KG5zSVByZXNDb250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUZyYW1lKiBhRnJhbWUpID0gMDsKIyAzNjIgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJUHJlc1NoZWxsLmgiCiAgdmlydHVhbCBuc3Jl
c3VsdCBHb1RvQW5jaG9yKGNvbnN0IG5zQVN0cmluZyYgYUFuY2hvck5hbWUsIFBSQm9vbCBhU2Ny
b2xsKSA9IDA7CiMgMzkyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVByZXNTaGVs
bC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgU2Nyb2xsRnJhbWVJbnRvVmlldyhuc0lGcmFtZSAqYUZy
YW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkludG4gYVZQZXJjZW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkludG4gYUhQZXJjZW50KSBjb25zdCA9
IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNldElnbm9yZUZyYW1lRGVzdHJ1Y3Rpb24oUFJC
b29sIGFJZ25vcmUpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IE5vdGlmeURlc3Ryb3lp
bmdGcmFtZShuc0lGcmFtZSogYUZyYW1lKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
RnJhbWVNYW5hZ2VyKG5zSUZyYW1lTWFuYWdlcioqIGFGcmFtZU1hbmFnZXIpIGNvbnN0ID0gMDsK
CgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBEb0NvcHkoKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0TGlua0xvY2F0aW9uKG5zSURPTU5vZGUqIGFOb2RlLCBuc0FTdHJpbmcmIGFMb2NhdGlv
bikgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEltYWdlTG9jYXRpb24obnNJRE9NTm9k
ZSogYU5vZGUsIG5zQVN0cmluZyYgYUxvY2F0aW9uKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1
bHQgRG9Db3B5SW1hZ2VDb250ZW50cyhuc0lET01Ob2RlKiBhTm9kZSkgPSAwOwoKCgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldENhcmV0KG5zSUNhcmV0ICoqYU91dENhcmV0KSA9IDA7CiMgNDQ4ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVByZXNTaGVsbC5oIgogIHZpcnR1YWwgbnNy
ZXN1bHQgU2V0U2VsZWN0aW9uRmxhZ3MoUFJJbnQxNiBhSW5FbmFibGUpID0gMDsKIyA0NTcgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJUHJlc1NoZWxsLmgiCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRTZWxlY3Rpb25GbGFncyhQUkludDE2ICphT3V0RW5hYmxlZCkgPSAwOwoKCgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEhhbmRsZUV2ZW50V2l0aFRhcmdldChuc0V2ZW50KiBhRXZlbnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJRnJhbWUqIGFGcmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lDb250ZW50KiBhQ29udGVudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUlVpbnQzMiBhRmxhZ3MsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnNFdmVudFN0YXR1cyogYVN0YXR1cykgPSAwOwoKCgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEhhbmRsZURPTUV2ZW50V2l0aFRhcmdldChuc0lDb250ZW50KiBh
VGFyZ2V0Q29udGVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zRXZlbnQqIGFFdmVu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zRXZlbnRTdGF0dXMqIGFTdGF0dXMpID0g
MDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRFdmVudFRhcmdldEZyYW1lKG5zSUZyYW1lKiog
YUZyYW1lKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RXZlbnRUYXJnZXRDb250ZW50
KG5zRXZlbnQqIGFFdmVudCwgbnNJQ29udGVudCoqIGFDb250ZW50KSA9IDA7CgoKCgoKICB2aXJ0
dWFsIG5zcmVzdWx0IENhcHR1cmVIaXN0b3J5U3RhdGUobnNJTGF5b3V0SGlzdG9yeVN0YXRlKiog
YUxheW91dEhpc3RvcnlTdGF0ZSwgUFJCb29sIGFMZWF2aW5nUGFnZSA9IDApID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldEhpc3RvcnlTdGF0ZShuc0lMYXlvdXRIaXN0b3J5U3RhdGUqKiBhTGF5
b3V0SGlzdG9yeVN0YXRlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRIaXN0b3J5U3RhdGUo
bnNJTGF5b3V0SGlzdG9yeVN0YXRlKiBhTGF5b3V0SGlzdG9yeVN0YXRlKSA9IDA7CgoKCgoKICB2
aXJ0dWFsIG5zcmVzdWx0IElzUmVmbG93TG9ja2VkKFBSQm9vbCogYUlzTG9ja2VkKSA9IDA7CiMg
NTA2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVByZXNTaGVsbC5oIgogIGVudW0g
R2VuZXJhdGVkQ29udGVudFR5cGUge0JlZm9yZSwgQWZ0ZXJ9OwogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0R2VuZXJhdGVkQ29udGVudEl0ZXJhdG9yKG5zSUNvbnRlbnQqIGFDb250ZW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlZENvbnRlbnRUeXBlIGFU
eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUNvbnRlbnRJ
dGVyYXRvcioqIGFJdGVyYXRvcikgY29uc3QgPSAwOwojIDUyMSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2xheW91dC9uc0lQcmVzU2hlbGwuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFub255bW91
c0NvbnRlbnRGb3IobnNJQ29udGVudCogYUNvbnRlbnQsIG5zSVN1cHBvcnRzQXJyYXkqIGFBbm9u
eW1vdXNFbGVtZW50cykgPSAwOwojIDUzMiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9u
c0lQcmVzU2hlbGwuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFub255bW91c0NvbnRlbnRGb3Io
bnNJQ29udGVudCogYUNvbnRlbnQsIG5zSVN1cHBvcnRzQXJyYXkqKiBhQW5vbnltb3VzRWxlbWVu
dHMpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVsZWFzZUFub255bW91c0NvbnRlbnQo
KSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJc1BhaW50aW5nU3VwcHJlc3NlZChQUkJv
b2wqIGFSZXN1bHQpPTA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgVW5zdXBwcmVzc1BhaW50aW5n
KCkgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IERpc2FibGVUaGVtZVN1cHBvcnQoKSA9IDA7
CgoKCgogIHZpcnR1YWwgUFJCb29sIElzVGhlbWVTdXBwb3J0RW5hYmxlZCgpID0gMDsKCgoKCgoK
CiAgc3RhdGljIFBSQm9vbCBHZXRWZXJpZnlSZWZsb3dFbmFibGUoKTsKCgoKCiAgc3RhdGljIHZv
aWQgU2V0VmVyaWZ5UmVmbG93RW5hYmxlKFBSQm9vbCBhRW5hYmxlZCk7CgoKCgogIHN0YXRpYyBQ
UkludDMyIEdldFZlcmlmeVJlZmxvd0ZsYWdzKCk7CiMgNTk2ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvbGF5b3V0L25zSVByZXNTaGVsbC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q2FyZXRCaWRp
TGV2ZWwoUFJVaW50OCBhTGV2ZWwpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDYXJl
dEJpZGlMZXZlbChQUlVpbnQ4ICphT3V0TGV2ZWwpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBVbmRlZmluZUNhcmV0QmlkaUxldmVsKHZvaWQpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBCaWRpU3R5bGVDaGFuZ2VSZWZsb3codm9pZCkgPSAwOwoKCn07CgoKCgoKZXh0ZXJuIG5zcmVz
dWx0CiAgTlNfTmV3UHJlc1NoZWxsKG5zSVByZXNTaGVsbCoqIGFJbnN0YW5jZVB0clJlc3VsdCk7
CiMgNTMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zU3R5bGVTdHJ1Y3QuaCIgMgoK
IyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbG9jYWxlL25zSUxhbmd1YWdlQXRvbS5oIiAxCiMg
MTQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sb2NhbGUvbnNJTGFuZ3VhZ2VBdG9tLmgiCiMgMSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUF0b20uaCIgMQojIDE3ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUveHBjb20vbnNJQXRvbS5oIgpjbGFzcyBuc0lTaXplT2ZIYW5kbGVyOwojIDI5
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJQXRvbS5oIgpjbGFzcyBuc0lBdG9tIDog
cHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJ
SUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDNkMWIxNWIwLCAweDkzYjQsIDB4MTFk
MSwgeyAweDg5LCAweDViLCAweDAwLCAweDYwLCAweDA4LCAweDkxLCAweDFiLCAweDgxIH19OyBy
ZXR1cm4gaWlkO30KCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgVG9TdHJpbmcobnNBU3RyaW5nICYg
X3JldHZhbCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRVbmljb2RlKGNvbnN0IFBS
VW5pY2hhciAqKmFSZXN1bHQpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2l6ZU9mKG5z
SVNpemVPZkhhbmRsZXIgKmFIYW5kbGVyLCBQUlVpbnQzMiAqX3JldHZhbCkgPSAwOwoKfTsKIyAx
NDAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lBdG9tLmgiCmV4dGVybiBuc0lBdG9t
KiBOU19OZXdBdG9tKGNvbnN0IGNoYXIqIGlzb2xhdGluMSk7CmV4dGVybiBuc0lBdG9tKiBOU19O
ZXdQZXJtYW5lbnRBdG9tKGNvbnN0IGNoYXIqIGlzb2xhdGluMSk7CmlubGluZSBhbHJlYWR5X0Fk
ZFJlZmVkPG5zSUF0b20+IGRvX0dldEF0b20oY29uc3QgY2hhciogaXNvbGF0aW4xKQogICAgeyBy
ZXR1cm4gTlNfTmV3QXRvbShpc29sYXRpbjEpOyB9CmlubGluZSBhbHJlYWR5X0FkZFJlZmVkPG5z
SUF0b20+IGRvX0dldFBlcm1hbmVudEF0b20oY29uc3QgY2hhciogaXNvbGF0aW4xKQogICAgeyBy
ZXR1cm4gTlNfTmV3UGVybWFuZW50QXRvbShpc29sYXRpbjEpOyB9CgoKCgpleHRlcm4gbnNJQXRv
bSogTlNfTmV3QXRvbShjb25zdCBQUlVuaWNoYXIqIHVuaWNvZGUpOwpleHRlcm4gbnNJQXRvbSog
TlNfTmV3UGVybWFuZW50QXRvbShjb25zdCBQUlVuaWNoYXIqIHVuaWNvZGUpOwppbmxpbmUgYWxy
ZWFkeV9BZGRSZWZlZDxuc0lBdG9tPiBkb19HZXRBdG9tKGNvbnN0IFBSVW5pY2hhciogdW5pY29k
ZSkKICAgIHsgcmV0dXJuIE5TX05ld0F0b20odW5pY29kZSk7IH0KaW5saW5lIGFscmVhZHlfQWRk
UmVmZWQ8bnNJQXRvbT4gZG9fR2V0UGVybWFuZW50QXRvbShjb25zdCBQUlVuaWNoYXIqIHVuaWNv
ZGUpCiAgICB7IHJldHVybiBOU19OZXdQZXJtYW5lbnRBdG9tKHVuaWNvZGUpOyB9CgoKCmV4dGVy
biBuc0lBdG9tKiBOU19OZXdBdG9tKGNvbnN0IG5zQVN0cmluZyYgYVN0cmluZyk7CmV4dGVybiBu
c0lBdG9tKiBOU19OZXdQZXJtYW5lbnRBdG9tKGNvbnN0IG5zQVN0cmluZyYgYVN0cmluZyk7Cmlu
bGluZSBhbHJlYWR5X0FkZFJlZmVkPG5zSUF0b20+IGRvX0dldEF0b20oY29uc3QgbnNBU3RyaW5n
JiBhU3RyaW5nKQogICAgeyByZXR1cm4gTlNfTmV3QXRvbShhU3RyaW5nKTsgfQppbmxpbmUgYWxy
ZWFkeV9BZGRSZWZlZDxuc0lBdG9tPiBkb19HZXRQZXJtYW5lbnRBdG9tKGNvbnN0IG5zQVN0cmlu
ZyYgYVN0cmluZykKICAgIHsgcmV0dXJuIE5TX05ld1Blcm1hbmVudEF0b20oYVN0cmluZyk7IH0K
CgoKCmV4dGVybiBuc3JlZmNudCBOU19HZXROdW1iZXJPZkF0b21zKHZvaWQpOwojIDE1ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvbG9jYWxlL25zSUxhbmd1YWdlQXRvbS5oIiAyCiMgMjkgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9sb2NhbGUvbnNJTGFuZ3VhZ2VBdG9tLmgiCmNsYXNzIG5zSUxhbmd1
YWdlQXRvbSA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBu
c0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTExZSwgMHgx
NWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwg
MHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldExhbmd1YWdlKFBS
VW5pY2hhciAqICphTGFuZ3VhZ2UpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGFuZ3Vh
Z2VHcm91cChuc0lBdG9tICogKmFMYW5ndWFnZUdyb3VwKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IExhbmd1YWdlSXMoY29uc3QgUFJVbmljaGFyICphTGFuZ3VhZ2UsIFBSQm9vbCAqX3JldHZh
bCkgPSAwOwoKfTsKIyA1NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNTdHlsZVN0
cnVjdC5oIiAyCgpjbGFzcyBuc0lGcmFtZTsKCmVudW0gbnNTdHlsZVN0cnVjdElEIHsKIyA2OCAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNTdHlsZVN0cnVjdC5oIgojIDEgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zU3R5bGVTdHJ1Y3RMaXN0LmgiIDEKIyA1NyAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNTdHlsZVN0cnVjdExpc3QuaCIKZVN0eWxlU3Ry
dWN0X0ZvbnQsCmVTdHlsZVN0cnVjdF9Db2xvciwKZVN0eWxlU3RydWN0X0JhY2tncm91bmQsCmVT
dHlsZVN0cnVjdF9MaXN0LAplU3R5bGVTdHJ1Y3RfUG9zaXRpb24sCmVTdHlsZVN0cnVjdF9UZXh0
LAplU3R5bGVTdHJ1Y3RfVGV4dFJlc2V0LAplU3R5bGVTdHJ1Y3RfRGlzcGxheSwKZVN0eWxlU3Ry
dWN0X1Zpc2liaWxpdHksCmVTdHlsZVN0cnVjdF9Db250ZW50LAplU3R5bGVTdHJ1Y3RfUXVvdGVz
LAplU3R5bGVTdHJ1Y3RfVXNlckludGVyZmFjZSwKZVN0eWxlU3RydWN0X1VJUmVzZXQsCmVTdHls
ZVN0cnVjdF9UYWJsZSwKZVN0eWxlU3RydWN0X1RhYmxlQm9yZGVyLAplU3R5bGVTdHJ1Y3RfTWFy
Z2luLAplU3R5bGVTdHJ1Y3RfUGFkZGluZywKZVN0eWxlU3RydWN0X0JvcmRlciwKZVN0eWxlU3Ry
dWN0X091dGxpbmUsCgplU3R5bGVTdHJ1Y3RfWFVMLAojIDY5ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvY29udGVudC9uc1N0eWxlU3RydWN0LmgiIDIKCgpuc1N0eWxlU3RydWN0SURfTGVuZ3RoCgp9
OwojIDg4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc1N0eWxlU3RydWN0LmgiCnN0
cnVjdCBuc1N0eWxlU3RydWN0IHsKfTsKCgoKc3RydWN0IG5zU3R5bGVGb250IDogcHVibGljIG5z
U3R5bGVTdHJ1Y3QgewogIG5zU3R5bGVGb250KHZvaWQpOwogIH5uc1N0eWxlRm9udCh2b2lkKSB7
fTsKCiAgc3RhdGljIGNvbnN0IG5zU3R5bGVTdHJ1Y3RJRCBHZXRTdHlsZVN0cnVjdElEKCkge3Jl
dHVybiBlU3R5bGVTdHJ1Y3RfRm9udDt9CgogIG5zQ2hhbmdlSGludCBDYWxjRGlmZmVyZW5jZShj
b25zdCBuc1N0eWxlRm9udCYgYU90aGVyKSBjb25zdDsKICBzdGF0aWMgbnNDaGFuZ2VIaW50IENh
bGNGb250RGlmZmVyZW5jZShjb25zdCBuc0ZvbnQmIGFGb250MSwgY29uc3QgbnNGb250JiBhRm9u
dDIpOwoKICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHN6LCBuc0lQcmVzQ29udGV4dCogYUNv
bnRleHQpIHRocm93KCk7CiAgdm9pZCBEZXN0cm95KG5zSVByZXNDb250ZXh0KiBhQ29udGV4dCk7
CgogIFBSVWludDggbUZsYWdzOwogIG5zRm9udCBtRm9udDsKICBuc2Nvb3JkIG1TaXplOwoKCgoK
ICBuc1N0eWxlRm9udChjb25zdCBuc0ZvbnQmIGFGb250KTsKICBuc1N0eWxlRm9udChjb25zdCBu
c1N0eWxlRm9udCYgYVN0eWxlRm9udCk7CiAgbnNTdHlsZUZvbnQobnNJUHJlc0NvbnRleHQqIGFQ
cmVzQ29udGV4dCk7Cn07CgpzdHJ1Y3QgbnNTdHlsZUNvbG9yIDogcHVibGljIG5zU3R5bGVTdHJ1
Y3QgewogIG5zU3R5bGVDb2xvcihuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0KTsKICBuc1N0
eWxlQ29sb3IoY29uc3QgbnNTdHlsZUNvbG9yJiBhT3RoZXIpOwogIH5uc1N0eWxlQ29sb3Iodm9p
ZCkge307CgogIHN0YXRpYyBjb25zdCBuc1N0eWxlU3RydWN0SUQgR2V0U3R5bGVTdHJ1Y3RJRCgp
IHtyZXR1cm4gZVN0eWxlU3RydWN0X0NvbG9yO30KCiAgbnNDaGFuZ2VIaW50IENhbGNEaWZmZXJl
bmNlKGNvbnN0IG5zU3R5bGVDb2xvciYgYU90aGVyKSBjb25zdDsKCiAgdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCBzeiwgbnNJUHJlc0NvbnRleHQqIGFDb250ZXh0KSB0aHJvdygpIHsKICAgIHZv
aWQqIHJlc3VsdCA9IDA7CiAgICBhQ29udGV4dC0+QWxsb2NhdGVGcm9tU2hlbGwoc3osICZyZXN1
bHQpOwogICAgcmV0dXJuIHJlc3VsdDsKICB9CiAgdm9pZCBEZXN0cm95KG5zSVByZXNDb250ZXh0
KiBhQ29udGV4dCkgewogICAgdGhpcy0+fm5zU3R5bGVDb2xvcigpOwogICAgYUNvbnRleHQtPkZy
ZWVUb1NoZWxsKHNpemVvZihuc1N0eWxlQ29sb3IpLCB0aGlzKTsKICB9OwoKCgogIG5zY29sb3Ig
bUNvbG9yOwp9OwoKc3RydWN0IG5zU3R5bGVCYWNrZ3JvdW5kIDogcHVibGljIG5zU3R5bGVTdHJ1
Y3QgewogIG5zU3R5bGVCYWNrZ3JvdW5kKG5zSVByZXNDb250ZXh0KiBhUHJlc0NvbnRleHQpOwog
IG5zU3R5bGVCYWNrZ3JvdW5kKGNvbnN0IG5zU3R5bGVCYWNrZ3JvdW5kJiBhT3RoZXIpOwogIH5u
c1N0eWxlQmFja2dyb3VuZCgpIHt9OwoKICBzdGF0aWMgY29uc3QgbnNTdHlsZVN0cnVjdElEIEdl
dFN0eWxlU3RydWN0SUQoKSB7cmV0dXJuIGVTdHlsZVN0cnVjdF9CYWNrZ3JvdW5kO30KCiAgdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzeiwgbnNJUHJlc0NvbnRleHQqIGFDb250ZXh0KSB0aHJv
dygpIHsKICAgIHZvaWQqIHJlc3VsdCA9IDA7CiAgICBhQ29udGV4dC0+QWxsb2NhdGVGcm9tU2hl
bGwoc3osICZyZXN1bHQpOwogICAgcmV0dXJuIHJlc3VsdDsKICB9CiAgdm9pZCBEZXN0cm95KG5z
SVByZXNDb250ZXh0KiBhQ29udGV4dCkgewogICAgdGhpcy0+fm5zU3R5bGVCYWNrZ3JvdW5kKCk7
CiAgICBhQ29udGV4dC0+RnJlZVRvU2hlbGwoc2l6ZW9mKG5zU3R5bGVCYWNrZ3JvdW5kKSwgdGhp
cyk7CiAgfTsKCiAgbnNDaGFuZ2VIaW50IENhbGNEaWZmZXJlbmNlKGNvbnN0IG5zU3R5bGVCYWNr
Z3JvdW5kJiBhT3RoZXIpIGNvbnN0OwoKCgoKCiAgUFJVaW50OCBtQmFja2dyb3VuZEZsYWdzOwog
IFBSVWludDggbUJhY2tncm91bmRBdHRhY2htZW50IDogNDsKICBQUlVpbnQ4IG1CYWNrZ3JvdW5k
Q2xpcCA6IDM7CiAgUFJVaW50OCBtQmFja2dyb3VuZElubGluZVBvbGljeSA6IDI7CiAgUFJVaW50
OCBtQmFja2dyb3VuZE9yaWdpbiA6IDM7CiAgUFJVaW50OCBtQmFja2dyb3VuZFJlcGVhdCA6IDQ7
CgoKCiAgdW5pb24gewogICAgbnNjb29yZCBtQ29vcmQ7CiAgICBmbG9hdCBtRmxvYXQ7CiAgfSBt
QmFja2dyb3VuZFhQb3NpdGlvbiwKICAgIG1CYWNrZ3JvdW5kWVBvc2l0aW9uOwoKICBuc2NvbG9y
IG1CYWNrZ3JvdW5kQ29sb3I7CiAgbnNTdHJpbmcgbUJhY2tncm91bmRJbWFnZTsKCiAgUFJCb29s
IElzVHJhbnNwYXJlbnQoKSBjb25zdAogIHsKICAgIHJldHVybiAobUJhY2tncm91bmRGbGFncyAm
CiAgICAgICAgICAgICgweDAxIHwgMHgwMikpID09CiAgICAgICAgICAgICgweDAxIHwgMHgwMik7
CiAgfQp9OwojIDIwMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNTdHlsZVN0cnVj
dC5oIgpzdHJ1Y3QgbnNTdHlsZU1hcmdpbjogcHVibGljIG5zU3R5bGVTdHJ1Y3QgewogIG5zU3R5
bGVNYXJnaW4odm9pZCk7CiAgbnNTdHlsZU1hcmdpbihjb25zdCBuc1N0eWxlTWFyZ2luJiBhTWFy
Z2luKTsKICB+bnNTdHlsZU1hcmdpbih2b2lkKSB7fTsKCiAgc3RhdGljIGNvbnN0IG5zU3R5bGVT
dHJ1Y3RJRCBHZXRTdHlsZVN0cnVjdElEKCkge3JldHVybiBlU3R5bGVTdHJ1Y3RfTWFyZ2luO30K
CiAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzeiwgbnNJUHJlc0NvbnRleHQqIGFDb250ZXh0
KSB0aHJvdygpOwogIHZvaWQgRGVzdHJveShuc0lQcmVzQ29udGV4dCogYUNvbnRleHQpOwoKICB2
b2lkIFJlY2FsY0RhdGEoKTsKICBuc0NoYW5nZUhpbnQgQ2FsY0RpZmZlcmVuY2UoY29uc3QgbnNT
dHlsZU1hcmdpbiYgYU90aGVyKSBjb25zdDsKCiAgbnNTdHlsZVNpZGVzIG1NYXJnaW47CgogIFBS
Qm9vbCBHZXRNYXJnaW4obnNNYXJnaW4mIGFNYXJnaW4pIGNvbnN0CiAgewogICAgaWYgKG1IYXND
YWNoZWRNYXJnaW4pIHsKICAgICAgYU1hcmdpbiA9IG1DYWNoZWRNYXJnaW47CiAgICAgIHJldHVy
biAxOwogICAgfQogICAgcmV0dXJuIDA7CiAgfQoKCiAgdm9pZCBDYWxjTWFyZ2luRm9yKGNvbnN0
IG5zSUZyYW1lKiBhRnJhbWUsIG5zTWFyZ2luJiBhTWFyZ2luKSBjb25zdDsKCnByb3RlY3RlZDoK
ICBQUlBhY2tlZEJvb2wgbUhhc0NhY2hlZE1hcmdpbjsKICBuc01hcmdpbiBtQ2FjaGVkTWFyZ2lu
Owp9OwoKCnN0cnVjdCBuc1N0eWxlUGFkZGluZzogcHVibGljIG5zU3R5bGVTdHJ1Y3QgewogIG5z
U3R5bGVQYWRkaW5nKHZvaWQpOwogIG5zU3R5bGVQYWRkaW5nKGNvbnN0IG5zU3R5bGVQYWRkaW5n
JiBhUGFkZGluZyk7CiAgfm5zU3R5bGVQYWRkaW5nKHZvaWQpIHt9OwoKICBzdGF0aWMgY29uc3Qg
bnNTdHlsZVN0cnVjdElEIEdldFN0eWxlU3RydWN0SUQoKSB7cmV0dXJuIGVTdHlsZVN0cnVjdF9Q
YWRkaW5nO30KCiAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzeiwgbnNJUHJlc0NvbnRleHQq
IGFDb250ZXh0KSB0aHJvdygpOwogIHZvaWQgRGVzdHJveShuc0lQcmVzQ29udGV4dCogYUNvbnRl
eHQpOwoKICB2b2lkIFJlY2FsY0RhdGEoKTsKICBuc0NoYW5nZUhpbnQgQ2FsY0RpZmZlcmVuY2Uo
Y29uc3QgbnNTdHlsZVBhZGRpbmcmIGFPdGhlcikgY29uc3Q7CgogIG5zU3R5bGVTaWRlcyBtUGFk
ZGluZzsKCiAgUFJCb29sIEdldFBhZGRpbmcobnNNYXJnaW4mIGFQYWRkaW5nKSBjb25zdAogIHsK
ICAgIGlmIChtSGFzQ2FjaGVkUGFkZGluZykgewogICAgICBhUGFkZGluZyA9IG1DYWNoZWRQYWRk
aW5nOwogICAgICByZXR1cm4gMTsKICAgIH0KICAgIHJldHVybiAwOwogIH0KCgogIHZvaWQgQ2Fs
Y1BhZGRpbmdGb3IoY29uc3QgbnNJRnJhbWUqIGFGcmFtZSwgbnNNYXJnaW4mIGFQYWRkaW5nKSBj
b25zdDsKCnByb3RlY3RlZDoKICBQUlBhY2tlZEJvb2wgbUhhc0NhY2hlZFBhZGRpbmc7CiAgbnNN
YXJnaW4gbUNhY2hlZFBhZGRpbmc7Cn07CgpzdHJ1Y3QgbnNCb3JkZXJDb2xvcnMgewogIG5zQm9y
ZGVyQ29sb3JzKiBtTmV4dDsKICBuc2NvbG9yIG1Db2xvcjsKICBQUkJvb2wgbVRyYW5zcGFyZW50
OwoKICBuc0JvcmRlckNvbG9ycyogQ29weUNvbG9ycygpIHsKICAgIG5zQm9yZGVyQ29sb3JzKiBu
ZXh0ID0gMDsKICAgIGlmIChtTmV4dCkKICAgICAgbmV4dCA9IG1OZXh0LT5Db3B5Q29sb3JzKCk7
CiAgICByZXR1cm4gbmV3IG5zQm9yZGVyQ29sb3JzKG1Db2xvciwgbVRyYW5zcGFyZW50LCBuZXh0
KTsKICB9CgogIG5zQm9yZGVyQ29sb3JzKCkgOm1OZXh0KDApIHsgbUNvbG9yID0gKChuc2NvbG9y
KSAoKDI1NSA8PCAyNCkgfCAoKDApPDwxNikgfCAoKDApPDw4KSB8ICgwKSkpOyB9OwoKICBuc0Jv
cmRlckNvbG9ycyhjb25zdCBuc2NvbG9yJiBhQ29sb3IsIFBSQm9vbCBhVHJhbnNwYXJlbnQsIG5z
Qm9yZGVyQ29sb3JzKiBhTmV4dD0wKSB7CiAgICBtQ29sb3IgPSBhQ29sb3I7CiAgICBtVHJhbnNw
YXJlbnQgPSBhVHJhbnNwYXJlbnQ7CiAgICBtTmV4dCA9IGFOZXh0OwogIH0KCiAgfm5zQm9yZGVy
Q29sb3JzKCkgewogICAgZGVsZXRlIG1OZXh0OwogIH0KCiAgUFJCb29sIEVxdWFscyhuc0JvcmRl
ckNvbG9ycyogYU90aGVyKSB7CiAgICBuc0JvcmRlckNvbG9ycyogYzEgPSB0aGlzOwogICAgbnNC
b3JkZXJDb2xvcnMqIGMyID0gYU90aGVyOwogICAgd2hpbGUgKGMxICYmIGMyKSB7CiAgICAgIGlm
IChjMS0+bUNvbG9yICE9IGMyLT5tQ29sb3IgfHwKICAgICAgICAgIGMxLT5tVHJhbnNwYXJlbnQg
IT0gYzItPm1UcmFuc3BhcmVudCkKICAgICAgICByZXR1cm4gMDsKICAgICAgYzEgPSBjMS0+bU5l
eHQ7CiAgICAgIGMyID0gYzItPm1OZXh0OwogICAgfQogICAgcmV0dXJuICFjMSAmJiAhYzI7CiAg
fQp9OwoKc3RydWN0IG5zU3R5bGVCb3JkZXI6IHB1YmxpYyBuc1N0eWxlU3RydWN0IHsKICBuc1N0
eWxlQm9yZGVyKCkgOm1Cb3JkZXJDb2xvcnMoMCkge307CiAgbnNTdHlsZUJvcmRlcihuc0lQcmVz
Q29udGV4dCogYUNvbnRleHQpOwogIG5zU3R5bGVCb3JkZXIoY29uc3QgbnNTdHlsZUJvcmRlciYg
YUJvcmRlcik7CiAgfm5zU3R5bGVCb3JkZXIodm9pZCkgewogICAgaWYgKG1Cb3JkZXJDb2xvcnMp
IHsKICAgICAgZm9yIChQUkludDMyIGkgPSAwOyBpIDwgNDsgaSsrKQogICAgICAgIGRlbGV0ZSBt
Qm9yZGVyQ29sb3JzW2ldOwogICAgICBkZWxldGUgW11tQm9yZGVyQ29sb3JzOwogICAgfQogIH07
CgogIHN0YXRpYyBjb25zdCBuc1N0eWxlU3RydWN0SUQgR2V0U3R5bGVTdHJ1Y3RJRCgpIHtyZXR1
cm4gZVN0eWxlU3RydWN0X0JvcmRlcjt9CgogIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc3os
IG5zSVByZXNDb250ZXh0KiBhQ29udGV4dCkgdGhyb3coKTsKICB2b2lkIERlc3Ryb3kobnNJUHJl
c0NvbnRleHQqIGFDb250ZXh0KTsKCiAgUFJCb29sIElzQm9yZGVyU2lkZVZpc2libGUoUFJVaW50
OCBhU2lkZSkgY29uc3Q7CiAgdm9pZCBSZWNhbGNEYXRhKCk7CiAgbnNDaGFuZ2VIaW50IENhbGNE
aWZmZXJlbmNlKGNvbnN0IG5zU3R5bGVCb3JkZXImIGFPdGhlcikgY29uc3Q7CgogIG5zU3R5bGVT
aWRlcyBtQm9yZGVyOwogIG5zU3R5bGVTaWRlcyBtQm9yZGVyUmFkaXVzOwogIFBSVWludDggbUZs
b2F0RWRnZTsKICBuc0JvcmRlckNvbG9ycyoqIG1Cb3JkZXJDb2xvcnM7CgogIHZvaWQgRW5zdXJl
Qm9yZGVyQ29sb3JzKCkgewogICAgaWYgKCFtQm9yZGVyQ29sb3JzKSB7CiAgICAgIG1Cb3JkZXJD
b2xvcnMgPSBuZXcgbnNCb3JkZXJDb2xvcnMqWzRdOwogICAgICBpZiAobUJvcmRlckNvbG9ycykK
ICAgICAgICBmb3IgKFBSSW50MzIgaSA9IDA7IGkgPCA0OyBpKyspCiAgICAgICAgICBtQm9yZGVy
Q29sb3JzW2ldID0gMDsKICAgIH0KICB9CgogIHZvaWQgQ2xlYXJCb3JkZXJDb2xvcnMoUFJVaW50
OCBhU2lkZSkgewogICAgaWYgKG1Cb3JkZXJDb2xvcnNbYVNpZGVdKSB7CiAgICAgIGRlbGV0ZSBt
Qm9yZGVyQ29sb3JzW2FTaWRlXTsKICAgICAgbUJvcmRlckNvbG9yc1thU2lkZV0gPSAwOwogICAg
fQogIH0KCiAgUFJCb29sIEdldEJvcmRlcihuc01hcmdpbiYgYUJvcmRlcikgY29uc3QKICB7CiAg
ICBpZiAobUhhc0NhY2hlZEJvcmRlcikgewogICAgICBhQm9yZGVyID0gbUNhY2hlZEJvcmRlcjsK
ICAgICAgcmV0dXJuIDE7CiAgICB9CiAgICByZXR1cm4gMDsKICB9CgogIFBSVWludDggR2V0Qm9y
ZGVyU3R5bGUoUFJVaW50OCBhU2lkZSkgY29uc3QKICB7CiAgICA7CiAgICByZXR1cm4gKG1Cb3Jk
ZXJTdHlsZVthU2lkZV0gJiAweDFGKTsKICB9CgogIHZvaWQgU2V0Qm9yZGVyU3R5bGUoUFJVaW50
OCBhU2lkZSwgUFJVaW50OCBhU3R5bGUpCiAgewogICAgOwogICAgbUJvcmRlclN0eWxlW2FTaWRl
XSAmPSB+MHgxRjsKICAgIG1Cb3JkZXJTdHlsZVthU2lkZV0gfD0gKGFTdHlsZSAmIDB4MUYpOwoK
ICB9CgogIHZvaWQgR2V0Qm9yZGVyQ29sb3IoUFJVaW50OCBhU2lkZSwgbnNjb2xvciYgYUNvbG9y
LAogICAgICAgICAgICAgICAgICAgICAgUFJCb29sJiBhVHJhbnNwYXJlbnQsIFBSQm9vbCYgYUZv
cmVncm91bmQpIGNvbnN0CiAgewogICAgYVRyYW5zcGFyZW50ID0gYUZvcmVncm91bmQgPSAwOwog
ICAgOwogICAgaWYgKChtQm9yZGVyU3R5bGVbYVNpZGVdICYgMHg2MCkgPT0gMCkKICAgICAgYUNv
bG9yID0gbUJvcmRlckNvbG9yW2FTaWRlXTsKICAgIGVsc2UgaWYgKG1Cb3JkZXJTdHlsZVthU2lk
ZV0gJiAweDIwKQogICAgICBhRm9yZWdyb3VuZCA9IDE7CiAgICBlbHNlCiAgICAgIGFUcmFuc3Bh
cmVudCA9IDE7CiAgfQoKICB2b2lkIFNldEJvcmRlckNvbG9yKFBSVWludDggYVNpZGUsIG5zY29s
b3IgYUNvbG9yKQogIHsKICAgIDsKICAgIG1Cb3JkZXJDb2xvclthU2lkZV0gPSBhQ29sb3I7CiAg
ICBtQm9yZGVyU3R5bGVbYVNpZGVdICY9IH4weDYwOwogICAgbUJvcmRlclN0eWxlW2FTaWRlXSB8
PSAweDgwOwogIH0KCiAgdm9pZCBHZXRDb21wb3NpdGVDb2xvcnMoUFJJbnQzMiBhSW5kZXgsIG5z
Qm9yZGVyQ29sb3JzKiogYUNvbG9ycykgY29uc3QKICB7CiAgICBpZiAoIW1Cb3JkZXJDb2xvcnMp
CiAgICAgICphQ29sb3JzID0gMDsKICAgIGVsc2UKICAgICAgKmFDb2xvcnMgPSBtQm9yZGVyQ29s
b3JzW2FJbmRleF07CiAgfQoKICB2b2lkIEFwcGVuZEJvcmRlckNvbG9yKFBSSW50MzIgYUluZGV4
LCBuc2NvbG9yIGFDb2xvciwgUFJCb29sIGFUcmFuc3BhcmVudCkKICB7CiAgICA7CiAgICBuc0Jv
cmRlckNvbG9ycyogY29sb3JFbnRyeSA9IG5ldyBuc0JvcmRlckNvbG9ycyhhQ29sb3IsIGFUcmFu
c3BhcmVudCk7CiAgICBpZiAoIW1Cb3JkZXJDb2xvcnNbYUluZGV4XSkKICAgICAgbUJvcmRlckNv
bG9yc1thSW5kZXhdID0gY29sb3JFbnRyeTsKICAgIGVsc2UgewogICAgICBuc0JvcmRlckNvbG9y
cyogbGFzdCA9IG1Cb3JkZXJDb2xvcnNbYUluZGV4XTsKICAgICAgd2hpbGUgKGxhc3QtPm1OZXh0
KQogICAgICAgIGxhc3QgPSBsYXN0LT5tTmV4dDsKICAgICAgbGFzdC0+bU5leHQgPSBjb2xvckVu
dHJ5OwogICAgfQogICAgbUJvcmRlclN0eWxlW2FJbmRleF0gJj0gfjB4NjA7CiAgICBtQm9yZGVy
U3R5bGVbYUluZGV4XSB8PSAweDgwOwogIH0KCiAgdm9pZCBTZXRCb3JkZXJUcmFuc3BhcmVudChQ
UlVpbnQ4IGFTaWRlKQogIHsKICAgIDsKICAgIG1Cb3JkZXJTdHlsZVthU2lkZV0gJj0gfjB4NjA7
CiAgICBtQm9yZGVyU3R5bGVbYVNpZGVdIHw9ICgweDgwIHwgMHg0MCk7CiAgfQoKICB2b2lkIFNl
dEJvcmRlclRvRm9yZWdyb3VuZChQUlVpbnQ4IGFTaWRlKQogIHsKICAgIDsKICAgIG1Cb3JkZXJT
dHlsZVthU2lkZV0gJj0gfjB4NjA7CiAgICBtQm9yZGVyU3R5bGVbYVNpZGVdIHw9ICgweDgwIHwg
MHgyMCk7CiAgfQoKICB2b2lkIFVuc2V0Qm9yZGVyQ29sb3IoUFJVaW50OCBhU2lkZSkKICB7CiAg
ICA7CiAgICBtQm9yZGVyU3R5bGVbYVNpZGVdICY9IDB4MUY7CiAgfQoKCiAgdm9pZCBDYWxjQm9y
ZGVyRm9yKGNvbnN0IG5zSUZyYW1lKiBhRnJhbWUsIG5zTWFyZ2luJiBhQm9yZGVyKSBjb25zdDsK
ICB2b2lkIENhbGNCb3JkZXJGb3IoY29uc3QgbnNJRnJhbWUqIGFGcmFtZSwgUFJVaW50OCBhU2lk
ZSwgbnNjb29yZCYgYVdpZHRoKSBjb25zdDsKCnByb3RlY3RlZDoKICBQUlBhY2tlZEJvb2wgbUhh
c0NhY2hlZEJvcmRlcjsKICBuc01hcmdpbiBtQ2FjaGVkQm9yZGVyOwoKICBQUlVpbnQ4IG1Cb3Jk
ZXJTdHlsZVs0XTsKICBuc2NvbG9yIG1Cb3JkZXJDb2xvcls0XTsKCgoKICBuc2Nvb3JkIG1Cb3Jk
ZXJXaWR0aHNbM107Cn07CgoKc3RydWN0IG5zU3R5bGVCb3JkZXJQYWRkaW5nOiBwdWJsaWMgbnNT
dHlsZVN0cnVjdCB7CiAgbnNTdHlsZUJvcmRlclBhZGRpbmcodm9pZCkgeyBtSGFzQ2FjaGVkQm9y
ZGVyUGFkZGluZyA9IDA7IH07CiAgfm5zU3R5bGVCb3JkZXJQYWRkaW5nKHZvaWQpIHt9OwoKCgoK
ICBQUkJvb2wgR2V0Qm9yZGVyUGFkZGluZyhuc01hcmdpbiYgYUJvcmRlclBhZGRpbmcpIGNvbnN0
IHsKICAgIGlmIChtSGFzQ2FjaGVkQm9yZGVyUGFkZGluZykgewogICAgICBhQm9yZGVyUGFkZGlu
ZyA9IG1DYWNoZWRCb3JkZXJQYWRkaW5nOwogICAgICByZXR1cm4gMTsKICAgIH0KICAgIHJldHVy
biAwOwogIH0KCiAgdm9pZCBTZXRCb3JkZXJQYWRkaW5nKG5zTWFyZ2luIGFCb3JkZXJQYWRkaW5n
KSB7CiAgICBtQ2FjaGVkQm9yZGVyUGFkZGluZyA9IGFCb3JkZXJQYWRkaW5nOwogICAgbUhhc0Nh
Y2hlZEJvcmRlclBhZGRpbmcgPSAxOwogIH0KCnByb3RlY3RlZDoKICBuc01hcmdpbiBtQ2FjaGVk
Qm9yZGVyUGFkZGluZzsKICBQUlBhY2tlZEJvb2wgbUhhc0NhY2hlZEJvcmRlclBhZGRpbmc7Cn07
CgoKc3RydWN0IG5zU3R5bGVPdXRsaW5lOiBwdWJsaWMgbnNTdHlsZVN0cnVjdCB7CiAgbnNTdHls
ZU91dGxpbmUobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCk7CiAgbnNTdHlsZU91dGxpbmUo
Y29uc3QgbnNTdHlsZU91dGxpbmUmIGFPdXRsaW5lKTsKICB+bnNTdHlsZU91dGxpbmUodm9pZCkg
e307CgogIHN0YXRpYyBjb25zdCBuc1N0eWxlU3RydWN0SUQgR2V0U3R5bGVTdHJ1Y3RJRCgpIHty
ZXR1cm4gZVN0eWxlU3RydWN0X091dGxpbmU7fQoKICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
IHN6LCBuc0lQcmVzQ29udGV4dCogYUNvbnRleHQpIHRocm93KCkgewogICAgdm9pZCogcmVzdWx0
ID0gMDsKICAgIGFDb250ZXh0LT5BbGxvY2F0ZUZyb21TaGVsbChzeiwgJnJlc3VsdCk7CiAgICBy
ZXR1cm4gcmVzdWx0OwogIH0KICB2b2lkIERlc3Ryb3kobnNJUHJlc0NvbnRleHQqIGFDb250ZXh0
KSB7CiAgICB0aGlzLT5+bnNTdHlsZU91dGxpbmUoKTsKICAgIGFDb250ZXh0LT5GcmVlVG9TaGVs
bChzaXplb2YobnNTdHlsZU91dGxpbmUpLCB0aGlzKTsKICB9OwoKICB2b2lkIFJlY2FsY0RhdGEo
KTsKICBuc0NoYW5nZUhpbnQgQ2FsY0RpZmZlcmVuY2UoY29uc3QgbnNTdHlsZU91dGxpbmUmIGFP
dGhlcikgY29uc3Q7CgogIG5zU3R5bGVTaWRlcyBtT3V0bGluZVJhZGl1czsKCgogIG5zU3R5bGVD
b29yZCBtT3V0bGluZVdpZHRoOwoKICBQUkJvb2wgR2V0T3V0bGluZVdpZHRoKG5zY29vcmQmIGFX
aWR0aCkgY29uc3QKICB7CiAgICBpZiAobUhhc0NhY2hlZE91dGxpbmUpIHsKICAgICAgYVdpZHRo
ID0gbUNhY2hlZE91dGxpbmVXaWR0aDsKICAgICAgcmV0dXJuIDE7CiAgICB9CiAgICByZXR1cm4g
MDsKICB9CgogIFBSVWludDggR2V0T3V0bGluZVN0eWxlKHZvaWQpIGNvbnN0CiAgewogICAgcmV0
dXJuIChtT3V0bGluZVN0eWxlICYgMHgxRik7CiAgfQoKICB2b2lkIFNldE91dGxpbmVTdHlsZShQ
UlVpbnQ4IGFTdHlsZSkKICB7CiAgICBtT3V0bGluZVN0eWxlICY9IH4weDFGOwogICAgbU91dGxp
bmVTdHlsZSB8PSAoYVN0eWxlICYgMHgxRik7CiAgfQoKCiAgUFJCb29sIEdldE91dGxpbmVDb2xv
cihuc2NvbG9yJiBhQ29sb3IpIGNvbnN0CiAgewogICAgaWYgKChtT3V0bGluZVN0eWxlICYgMHg2
MCkgPT0gMCkgewogICAgICBhQ29sb3IgPSBtT3V0bGluZUNvbG9yOwogICAgICByZXR1cm4gMTsK
ICAgIH0KICAgIHJldHVybiAwOwogIH0KCiAgdm9pZCBTZXRPdXRsaW5lQ29sb3IobnNjb2xvciBh
Q29sb3IpCiAgewogICAgbU91dGxpbmVDb2xvciA9IGFDb2xvcjsKICAgIG1PdXRsaW5lU3R5bGUg
Jj0gfjB4NjA7CiAgICBtT3V0bGluZVN0eWxlIHw9IDB4ODA7CiAgfQoKICB2b2lkIFNldE91dGxp
bmVJbnZlcnQodm9pZCkKICB7CiAgICBtT3V0bGluZVN0eWxlIHw9ICgweDgwIHwgMHg2MCk7CiAg
fQoKICBQUkJvb2wgR2V0T3V0bGluZUludmVydCh2b2lkKSBjb25zdAogIHsKICAgIHJldHVybiht
T3V0bGluZVN0eWxlICYgMHg2MCk7CiAgfQoKcHJvdGVjdGVkOgogIG5zY29vcmQgbUNhY2hlZE91
dGxpbmVXaWR0aDsKCiAgbnNjb2xvciBtT3V0bGluZUNvbG9yOwoKCiAgbnNjb29yZCBtQm9yZGVy
V2lkdGhzWzNdOwoKICBQUlBhY2tlZEJvb2wgbUhhc0NhY2hlZE91dGxpbmU7CiAgUFJVaW50OCBt
T3V0bGluZVN0eWxlOwp9OwoKCnN0cnVjdCBuc1N0eWxlTGlzdCA6IHB1YmxpYyBuc1N0eWxlU3Ry
dWN0IHsKICBuc1N0eWxlTGlzdCh2b2lkKTsKICBuc1N0eWxlTGlzdChjb25zdCBuc1N0eWxlTGlz
dCYgYVN0eWxlTGlzdCk7CiAgfm5zU3R5bGVMaXN0KHZvaWQpOwoKICBzdGF0aWMgY29uc3QgbnNT
dHlsZVN0cnVjdElEIEdldFN0eWxlU3RydWN0SUQoKSB7cmV0dXJuIGVTdHlsZVN0cnVjdF9MaXN0
O30KCiAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzeiwgbnNJUHJlc0NvbnRleHQqIGFDb250
ZXh0KSB0aHJvdygpIHsKICAgIHZvaWQqIHJlc3VsdCA9IDA7CiAgICBhQ29udGV4dC0+QWxsb2Nh
dGVGcm9tU2hlbGwoc3osICZyZXN1bHQpOwogICAgcmV0dXJuIHJlc3VsdDsKICB9CiAgdm9pZCBE
ZXN0cm95KG5zSVByZXNDb250ZXh0KiBhQ29udGV4dCkgewogICAgdGhpcy0+fm5zU3R5bGVMaXN0
KCk7CiAgICBhQ29udGV4dC0+RnJlZVRvU2hlbGwoc2l6ZW9mKG5zU3R5bGVMaXN0KSwgdGhpcyk7
CiAgfTsKCiAgbnNDaGFuZ2VIaW50IENhbGNEaWZmZXJlbmNlKGNvbnN0IG5zU3R5bGVMaXN0JiBh
T3RoZXIpIGNvbnN0OwoKICBQUlVpbnQ4IG1MaXN0U3R5bGVUeXBlOwogIFBSVWludDggbUxpc3RT
dHlsZVBvc2l0aW9uOwogIG5zU3RyaW5nIG1MaXN0U3R5bGVJbWFnZTsKICBuc1JlY3QgbUltYWdl
UmVnaW9uOwp9OwoKc3RydWN0IG5zU3R5bGVQb3NpdGlvbiA6IHB1YmxpYyBuc1N0eWxlU3RydWN0
IHsKICBuc1N0eWxlUG9zaXRpb24odm9pZCk7CiAgbnNTdHlsZVBvc2l0aW9uKGNvbnN0IG5zU3R5
bGVQb3NpdGlvbiYgYU90aGVyKTsKICB+bnNTdHlsZVBvc2l0aW9uKHZvaWQpOwoKICBzdGF0aWMg
Y29uc3QgbnNTdHlsZVN0cnVjdElEIEdldFN0eWxlU3RydWN0SUQoKSB7cmV0dXJuIGVTdHlsZVN0
cnVjdF9Qb3NpdGlvbjt9CgogIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc3osIG5zSVByZXND
b250ZXh0KiBhQ29udGV4dCkgdGhyb3coKSB7CiAgICB2b2lkKiByZXN1bHQgPSAwOwogICAgYUNv
bnRleHQtPkFsbG9jYXRlRnJvbVNoZWxsKHN6LCAmcmVzdWx0KTsKICAgIHJldHVybiByZXN1bHQ7
CiAgfQogIHZvaWQgRGVzdHJveShuc0lQcmVzQ29udGV4dCogYUNvbnRleHQpIHsKICAgIHRoaXMt
Pn5uc1N0eWxlUG9zaXRpb24oKTsKICAgIGFDb250ZXh0LT5GcmVlVG9TaGVsbChzaXplb2YobnNT
dHlsZVBvc2l0aW9uKSwgdGhpcyk7CiAgfTsKCiAgbnNDaGFuZ2VIaW50IENhbGNEaWZmZXJlbmNl
KGNvbnN0IG5zU3R5bGVQb3NpdGlvbiYgYU90aGVyKSBjb25zdDsKCiAgbnNTdHlsZVNpZGVzIG1P
ZmZzZXQ7CiAgbnNTdHlsZUNvb3JkIG1XaWR0aDsKICBuc1N0eWxlQ29vcmQgbU1pbldpZHRoOwog
IG5zU3R5bGVDb29yZCBtTWF4V2lkdGg7CiAgbnNTdHlsZUNvb3JkIG1IZWlnaHQ7CiAgbnNTdHls
ZUNvb3JkIG1NaW5IZWlnaHQ7CiAgbnNTdHlsZUNvb3JkIG1NYXhIZWlnaHQ7CiAgUFJVaW50OCBt
Qm94U2l6aW5nOwogIG5zU3R5bGVDb29yZCBtWkluZGV4Owp9OwoKc3RydWN0IG5zU3R5bGVUZXh0
UmVzZXQgOiBwdWJsaWMgbnNTdHlsZVN0cnVjdCB7CiAgbnNTdHlsZVRleHRSZXNldCh2b2lkKTsK
ICBuc1N0eWxlVGV4dFJlc2V0KGNvbnN0IG5zU3R5bGVUZXh0UmVzZXQmIGFPdGhlcik7CiAgfm5z
U3R5bGVUZXh0UmVzZXQodm9pZCk7CgogIHN0YXRpYyBjb25zdCBuc1N0eWxlU3RydWN0SUQgR2V0
U3R5bGVTdHJ1Y3RJRCgpIHtyZXR1cm4gZVN0eWxlU3RydWN0X1RleHRSZXNldDt9CgogIHZvaWQq
IG9wZXJhdG9yIG5ldyhzaXplX3Qgc3osIG5zSVByZXNDb250ZXh0KiBhQ29udGV4dCkgdGhyb3co
KSB7CiAgICB2b2lkKiByZXN1bHQgPSAwOwogICAgYUNvbnRleHQtPkFsbG9jYXRlRnJvbVNoZWxs
KHN6LCAmcmVzdWx0KTsKICAgIHJldHVybiByZXN1bHQ7CiAgfQogIHZvaWQgRGVzdHJveShuc0lQ
cmVzQ29udGV4dCogYUNvbnRleHQpIHsKICAgIHRoaXMtPn5uc1N0eWxlVGV4dFJlc2V0KCk7CiAg
ICBhQ29udGV4dC0+RnJlZVRvU2hlbGwoc2l6ZW9mKG5zU3R5bGVUZXh0UmVzZXQpLCB0aGlzKTsK
ICB9OwoKICBuc0NoYW5nZUhpbnQgQ2FsY0RpZmZlcmVuY2UoY29uc3QgbnNTdHlsZVRleHRSZXNl
dCYgYU90aGVyKSBjb25zdDsKCiAgUFJVaW50OCBtVGV4dERlY29yYXRpb247CiAgUFJVaW50OCBt
VW5pY29kZUJpZGk7CgogIG5zU3R5bGVDb29yZCBtVmVydGljYWxBbGlnbjsKfTsKCnN0cnVjdCBu
c1N0eWxlVGV4dCA6IHB1YmxpYyBuc1N0eWxlU3RydWN0IHsKICBuc1N0eWxlVGV4dCh2b2lkKTsK
ICBuc1N0eWxlVGV4dChjb25zdCBuc1N0eWxlVGV4dCYgYU90aGVyKTsKICB+bnNTdHlsZVRleHQo
dm9pZCk7CgogIHN0YXRpYyBjb25zdCBuc1N0eWxlU3RydWN0SUQgR2V0U3R5bGVTdHJ1Y3RJRCgp
IHtyZXR1cm4gZVN0eWxlU3RydWN0X1RleHQ7fQoKICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
IHN6LCBuc0lQcmVzQ29udGV4dCogYUNvbnRleHQpIHRocm93KCkgewogICAgdm9pZCogcmVzdWx0
ID0gMDsKICAgIGFDb250ZXh0LT5BbGxvY2F0ZUZyb21TaGVsbChzeiwgJnJlc3VsdCk7CiAgICBy
ZXR1cm4gcmVzdWx0OwogIH0KICB2b2lkIERlc3Ryb3kobnNJUHJlc0NvbnRleHQqIGFDb250ZXh0
KSB7CiAgICB0aGlzLT5+bnNTdHlsZVRleHQoKTsKICAgIGFDb250ZXh0LT5GcmVlVG9TaGVsbChz
aXplb2YobnNTdHlsZVRleHQpLCB0aGlzKTsKICB9OwoKICBuc0NoYW5nZUhpbnQgQ2FsY0RpZmZl
cmVuY2UoY29uc3QgbnNTdHlsZVRleHQmIGFPdGhlcikgY29uc3Q7CgogIFBSVWludDggbVRleHRB
bGlnbjsKICBQUlVpbnQ4IG1UZXh0VHJhbnNmb3JtOwogIFBSVWludDggbVdoaXRlU3BhY2U7Cgog
IG5zU3R5bGVDb29yZCBtTGV0dGVyU3BhY2luZzsKICBuc1N0eWxlQ29vcmQgbUxpbmVIZWlnaHQ7
CiAgbnNTdHlsZUNvb3JkIG1UZXh0SW5kZW50OwogIG5zU3R5bGVDb29yZCBtV29yZFNwYWNpbmc7
CgogIFBSQm9vbCBXaGl0ZVNwYWNlSXNTaWduaWZpY2FudCgpIGNvbnN0IHsKICAgIHJldHVybiBt
V2hpdGVTcGFjZSA9PSAxIHx8CiAgICAgICAgICAgbVdoaXRlU3BhY2UgPT0gMzsKICB9Cn07Cgpz
dHJ1Y3QgbnNTdHlsZVZpc2liaWxpdHkgOiBwdWJsaWMgbnNTdHlsZVN0cnVjdCB7CiAgbnNTdHls
ZVZpc2liaWxpdHkobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCk7CiAgbnNTdHlsZVZpc2li
aWxpdHkoY29uc3QgbnNTdHlsZVZpc2liaWxpdHkmIGFWaXNpYmlsaXR5KTsKICB+bnNTdHlsZVZp
c2liaWxpdHkoKSB7fTsKCiAgc3RhdGljIGNvbnN0IG5zU3R5bGVTdHJ1Y3RJRCBHZXRTdHlsZVN0
cnVjdElEKCkge3JldHVybiBlU3R5bGVTdHJ1Y3RfVmlzaWJpbGl0eTt9CgogIHZvaWQqIG9wZXJh
dG9yIG5ldyhzaXplX3Qgc3osIG5zSVByZXNDb250ZXh0KiBhQ29udGV4dCkgdGhyb3coKSB7CiAg
ICB2b2lkKiByZXN1bHQgPSAwOwogICAgYUNvbnRleHQtPkFsbG9jYXRlRnJvbVNoZWxsKHN6LCAm
cmVzdWx0KTsKICAgIHJldHVybiByZXN1bHQ7CiAgfQogIHZvaWQgRGVzdHJveShuc0lQcmVzQ29u
dGV4dCogYUNvbnRleHQpIHsKICAgIHRoaXMtPn5uc1N0eWxlVmlzaWJpbGl0eSgpOwogICAgYUNv
bnRleHQtPkZyZWVUb1NoZWxsKHNpemVvZihuc1N0eWxlVmlzaWJpbGl0eSksIHRoaXMpOwogIH07
CgogIG5zQ2hhbmdlSGludCBDYWxjRGlmZmVyZW5jZShjb25zdCBuc1N0eWxlVmlzaWJpbGl0eSYg
YU90aGVyKSBjb25zdDsKCiAgUFJVaW50OCBtRGlyZWN0aW9uOwogIFBSVWludDggbVZpc2libGU7
CiAgbnNDT01QdHI8bnNJTGFuZ3VhZ2VBdG9tPiBtTGFuZ3VhZ2U7CiAgZmxvYXQgbU9wYWNpdHk7
CgogIFBSQm9vbCBJc1Zpc2libGUoKSBjb25zdCB7CiAgICAgICAgICAgICAgICByZXR1cm4gKG1W
aXNpYmxlID09IDEpOwogICAgICAgIH0KCiAgICAgICAgUFJCb29sIElzVmlzaWJsZU9yQ29sbGFw
c2VkKCkgY29uc3QgewogICAgICAgICAgICAgICAgcmV0dXJuICgobVZpc2libGUgPT0gMSkgfHwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1WaXNpYmxl
ID09IDIpKTsKICAgICAgICB9Cn07CgpzdHJ1Y3QgbnNTdHlsZURpc3BsYXkgOiBwdWJsaWMgbnNT
dHlsZVN0cnVjdCB7CiAgbnNTdHlsZURpc3BsYXkoKTsKICBuc1N0eWxlRGlzcGxheShjb25zdCBu
c1N0eWxlRGlzcGxheSYgYU90aGVyKTsKICB+bnNTdHlsZURpc3BsYXkoKSB7fTsKCiAgc3RhdGlj
IGNvbnN0IG5zU3R5bGVTdHJ1Y3RJRCBHZXRTdHlsZVN0cnVjdElEKCkge3JldHVybiBlU3R5bGVT
dHJ1Y3RfRGlzcGxheTt9CgogIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc3osIG5zSVByZXND
b250ZXh0KiBhQ29udGV4dCkgdGhyb3coKSB7CiAgICB2b2lkKiByZXN1bHQgPSAwOwogICAgYUNv
bnRleHQtPkFsbG9jYXRlRnJvbVNoZWxsKHN6LCAmcmVzdWx0KTsKICAgIHJldHVybiByZXN1bHQ7
CiAgfQogIHZvaWQgRGVzdHJveShuc0lQcmVzQ29udGV4dCogYUNvbnRleHQpIHsKICAgIHRoaXMt
Pn5uc1N0eWxlRGlzcGxheSgpOwogICAgYUNvbnRleHQtPkZyZWVUb1NoZWxsKHNpemVvZihuc1N0
eWxlRGlzcGxheSksIHRoaXMpOwogIH07CgogIG5zQ2hhbmdlSGludCBDYWxjRGlmZmVyZW5jZShj
b25zdCBuc1N0eWxlRGlzcGxheSYgYU90aGVyKSBjb25zdDsKCiAgbnNTdHJpbmcgbUJpbmRpbmc7
CgoKCgoKCiAgbnNSZWN0IG1DbGlwOwoKICBQUlVpbnQ4IG1EaXNwbGF5OwogIFBSVWludDggbU9y
aWdpbmFsRGlzcGxheTsKICBQUlVpbnQ4IG1BcHBlYXJhbmNlOwogIFBSVWludDggbVBvc2l0aW9u
OwogIFBSVWludDggbUZsb2F0czsKICBQUlVpbnQ4IG1CcmVha1R5cGU7CiAgUFJQYWNrZWRCb29s
IG1CcmVha0JlZm9yZTsKICBQUlBhY2tlZEJvb2wgbUJyZWFrQWZ0ZXI7CiAgUFJVaW50OCBtT3Zl
cmZsb3c7CgogIFBSVWludDggbUNsaXBGbGFnczsKCiAgUFJCb29sIElzQmxvY2tMZXZlbCgpIGNv
bnN0IHtyZXR1cm4gKDEgPT0gbURpc3BsYXkpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKDQgPT0gbURpc3BsYXkpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKDggPT0gbURpc3BsYXkpO30KCiAgUFJCb29sIElzRmxvYXRpbmcoKSBjb25z
dCB7CiAgICByZXR1cm4gMCAhPSBtRmxvYXRzOwogIH0KCiAgUFJCb29sIElzQWJzb2x1dGVseVBv
c2l0aW9uZWQoKSBjb25zdCB7cmV0dXJuICgyID09IG1Qb3NpdGlvbikgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDMgPT0gbVBvc2l0aW9uKTt9Cgog
IFBSQm9vbCBJc1Bvc2l0aW9uZWQoKSBjb25zdCB7cmV0dXJuIElzQWJzb2x1dGVseVBvc2l0aW9u
ZWQoKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxID09IG1Qb3Np
dGlvbik7fQp9OwoKc3RydWN0IG5zU3R5bGVUYWJsZTogcHVibGljIG5zU3R5bGVTdHJ1Y3Qgewog
IG5zU3R5bGVUYWJsZSh2b2lkKTsKICBuc1N0eWxlVGFibGUoY29uc3QgbnNTdHlsZVRhYmxlJiBh
T3RoZXIpOwogIH5uc1N0eWxlVGFibGUodm9pZCk7CgogIHN0YXRpYyBjb25zdCBuc1N0eWxlU3Ry
dWN0SUQgR2V0U3R5bGVTdHJ1Y3RJRCgpIHtyZXR1cm4gZVN0eWxlU3RydWN0X1RhYmxlO30KCiAg
dm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzeiwgbnNJUHJlc0NvbnRleHQqIGFDb250ZXh0KSB0
aHJvdygpIHsKICAgIHZvaWQqIHJlc3VsdCA9IDA7CiAgICBhQ29udGV4dC0+QWxsb2NhdGVGcm9t
U2hlbGwoc3osICZyZXN1bHQpOwogICAgcmV0dXJuIHJlc3VsdDsKICB9CiAgdm9pZCBEZXN0cm95
KG5zSVByZXNDb250ZXh0KiBhQ29udGV4dCkgewogICAgdGhpcy0+fm5zU3R5bGVUYWJsZSgpOwog
ICAgYUNvbnRleHQtPkZyZWVUb1NoZWxsKHNpemVvZihuc1N0eWxlVGFibGUpLCB0aGlzKTsKICB9
OwoKICBuc0NoYW5nZUhpbnQgQ2FsY0RpZmZlcmVuY2UoY29uc3QgbnNTdHlsZVRhYmxlJiBhT3Ro
ZXIpIGNvbnN0OwoKICBQUlVpbnQ4IG1MYXlvdXRTdHJhdGVneTsKICBQUlVpbnQ4IG1GcmFtZTsK
ICBQUlVpbnQ4IG1SdWxlczsKICBQUkludDMyIG1Db2xzOwogIFBSSW50MzIgbVNwYW47Cn07Cgpz
dHJ1Y3QgbnNTdHlsZVRhYmxlQm9yZGVyOiBwdWJsaWMgbnNTdHlsZVN0cnVjdCB7CiAgbnNTdHls
ZVRhYmxlQm9yZGVyKG5zSVByZXNDb250ZXh0KiBhQ29udGV4dCk7CiAgbnNTdHlsZVRhYmxlQm9y
ZGVyKGNvbnN0IG5zU3R5bGVUYWJsZUJvcmRlciYgYU90aGVyKTsKICB+bnNTdHlsZVRhYmxlQm9y
ZGVyKHZvaWQpOwoKICBzdGF0aWMgY29uc3QgbnNTdHlsZVN0cnVjdElEIEdldFN0eWxlU3RydWN0
SUQoKSB7cmV0dXJuIGVTdHlsZVN0cnVjdF9UYWJsZUJvcmRlcjt9CgogIHZvaWQqIG9wZXJhdG9y
IG5ldyhzaXplX3Qgc3osIG5zSVByZXNDb250ZXh0KiBhQ29udGV4dCkgdGhyb3coKSB7CiAgICB2
b2lkKiByZXN1bHQgPSAwOwogICAgYUNvbnRleHQtPkFsbG9jYXRlRnJvbVNoZWxsKHN6LCAmcmVz
dWx0KTsKICAgIHJldHVybiByZXN1bHQ7CiAgfQogIHZvaWQgRGVzdHJveShuc0lQcmVzQ29udGV4
dCogYUNvbnRleHQpIHsKICAgIHRoaXMtPn5uc1N0eWxlVGFibGVCb3JkZXIoKTsKICAgIGFDb250
ZXh0LT5GcmVlVG9TaGVsbChzaXplb2YobnNTdHlsZVRhYmxlQm9yZGVyKSwgdGhpcyk7CiAgfTsK
CiAgbnNDaGFuZ2VIaW50IENhbGNEaWZmZXJlbmNlKGNvbnN0IG5zU3R5bGVUYWJsZUJvcmRlciYg
YU90aGVyKSBjb25zdDsKCiAgbnNTdHlsZUNvb3JkIG1Cb3JkZXJTcGFjaW5nWDsKICBuc1N0eWxl
Q29vcmQgbUJvcmRlclNwYWNpbmdZOwogIFBSVWludDggbUJvcmRlckNvbGxhcHNlOwogIFBSVWlu
dDggbUNhcHRpb25TaWRlOwogIFBSVWludDggbUVtcHR5Q2VsbHM7Cn07CgplbnVtIG5zU3R5bGVD
b250ZW50VHlwZSB7CiAgZVN0eWxlQ29udGVudFR5cGVfU3RyaW5nID0gMSwKICBlU3R5bGVDb250
ZW50VHlwZV9VUkwgPSAxMCwKICBlU3R5bGVDb250ZW50VHlwZV9BdHRyID0gMjAsCiAgZVN0eWxl
Q29udGVudFR5cGVfQ291bnRlciA9IDMwLAogIGVTdHlsZUNvbnRlbnRUeXBlX0NvdW50ZXJzID0g
MzEsCiAgZVN0eWxlQ29udGVudFR5cGVfT3BlblF1b3RlID0gNDAsCiAgZVN0eWxlQ29udGVudFR5
cGVfQ2xvc2VRdW90ZSA9IDQxLAogIGVTdHlsZUNvbnRlbnRUeXBlX05vT3BlblF1b3RlID0gNDIs
CiAgZVN0eWxlQ29udGVudFR5cGVfTm9DbG9zZVF1b3RlID0gNDMKfTsKCnN0cnVjdCBuc1N0eWxl
Q29udGVudERhdGEgewogIG5zU3R5bGVDb250ZW50VHlwZSBtVHlwZTsKICBuc1N0cmluZyBtQ29u
dGVudDsKfTsKCnN0cnVjdCBuc1N0eWxlQ291bnRlckRhdGEgewogIG5zU3RyaW5nIG1Db3VudGVy
OwogIFBSSW50MzIgbVZhbHVlOwp9OwoKCgoKc3RydWN0IG5zU3R5bGVRdW90ZXMgOiBwdWJsaWMg
bnNTdHlsZVN0cnVjdCB7CiAgbnNTdHlsZVF1b3RlcygpOwogIG5zU3R5bGVRdW90ZXMoY29uc3Qg
bnNTdHlsZVF1b3RlcyYgYVF1b3Rlcyk7CiAgfm5zU3R5bGVRdW90ZXMoKTsKCiAgc3RhdGljIGNv
bnN0IG5zU3R5bGVTdHJ1Y3RJRCBHZXRTdHlsZVN0cnVjdElEKCkge3JldHVybiBlU3R5bGVTdHJ1
Y3RfUXVvdGVzO30KCiAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzeiwgbnNJUHJlc0NvbnRl
eHQqIGFDb250ZXh0KSB0aHJvdygpIHsKICAgIHZvaWQqIHJlc3VsdCA9IDA7CiAgICBhQ29udGV4
dC0+QWxsb2NhdGVGcm9tU2hlbGwoc3osICZyZXN1bHQpOwogICAgcmV0dXJuIHJlc3VsdDsKICB9
CiAgdm9pZCBEZXN0cm95KG5zSVByZXNDb250ZXh0KiBhQ29udGV4dCkgewogICAgdGhpcy0+fm5z
U3R5bGVRdW90ZXMoKTsKICAgIGFDb250ZXh0LT5GcmVlVG9TaGVsbChzaXplb2YobnNTdHlsZVF1
b3RlcyksIHRoaXMpOwogIH07CgogIG5zQ2hhbmdlSGludCBDYWxjRGlmZmVyZW5jZShjb25zdCBu
c1N0eWxlUXVvdGVzJiBhT3RoZXIpIGNvbnN0OwoKCiAgUFJVaW50MzIgUXVvdGVzQ291bnQodm9p
ZCkgY29uc3QgeyByZXR1cm4gbVF1b3Rlc0NvdW50OyB9CiAgbnNyZXN1bHQgR2V0UXVvdGVzQXQo
UFJVaW50MzIgYUluZGV4LCBuc1N0cmluZyYgYU9wZW4sIG5zU3RyaW5nJiBhQ2xvc2UpIGNvbnN0
IHsKICAgIGlmIChhSW5kZXggPCBtUXVvdGVzQ291bnQpIHsKICAgICAgYUluZGV4ICo9IDI7CiAg
ICAgIGFPcGVuID0gbVF1b3Rlc1thSW5kZXhdOwogICAgICBhQ2xvc2UgPSBtUXVvdGVzWysrYUlu
ZGV4XTsKICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDA3
MDA1N0wpOwogIH0KCiAgbnNyZXN1bHQgQWxsb2NhdGVRdW90ZXMoUFJVaW50MzIgYUNvdW50KSB7
CiAgICBpZiAoYUNvdW50ICE9IG1RdW90ZXNDb3VudCkgewogICAgICBpZiAobVF1b3RlcykgeyBk
ZWxldGVbXSBtUXVvdGVzOyBtUXVvdGVzID0gMDsgfTsKICAgICAgaWYgKGFDb3VudCkgewogICAg
ICAgIG1RdW90ZXMgPSBuZXcgbnNTdHJpbmdbYUNvdW50ICogMl07CiAgICAgICAgaWYgKCEgbVF1
b3RlcykgewogICAgICAgICAgbVF1b3Rlc0NvdW50ID0gMDsKICAgICAgICAgIHJldHVybiAoKG5z
cmVzdWx0KSAweDgwMDcwMDBlTCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIG1RdW90ZXNDb3Vu
dCA9IGFDb3VudDsKICAgIH0KICAgIHJldHVybiAwOwogIH0KCiAgbnNyZXN1bHQgU2V0UXVvdGVz
QXQoUFJVaW50MzIgYUluZGV4LCBjb25zdCBuc1N0cmluZyYgYU9wZW4sIGNvbnN0IG5zU3RyaW5n
JiBhQ2xvc2UpIHsKICAgIGlmIChhSW5kZXggPCBtUXVvdGVzQ291bnQpIHsKICAgICAgYUluZGV4
ICo9IDI7CiAgICAgIG1RdW90ZXNbYUluZGV4XSA9IGFPcGVuOwogICAgICBtUXVvdGVzWysrYUlu
ZGV4XSA9IGFDbG9zZTsKICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICByZXR1cm4gKChuc3Jlc3Vs
dCkgMHg4MDA3MDA1N0wpOwogIH0KCnByb3RlY3RlZDoKICBQUlVpbnQzMiBtUXVvdGVzQ291bnQ7
CiAgbnNTdHJpbmcqIG1RdW90ZXM7Cn07CgpzdHJ1Y3QgbnNTdHlsZUNvbnRlbnQ6IHB1YmxpYyBu
c1N0eWxlU3RydWN0IHsKICBuc1N0eWxlQ29udGVudCh2b2lkKTsKICBuc1N0eWxlQ29udGVudChj
b25zdCBuc1N0eWxlQ29udGVudCYgYUNvbnRlbnQpOwogIH5uc1N0eWxlQ29udGVudCh2b2lkKTsK
CiAgc3RhdGljIGNvbnN0IG5zU3R5bGVTdHJ1Y3RJRCBHZXRTdHlsZVN0cnVjdElEKCkge3JldHVy
biBlU3R5bGVTdHJ1Y3RfQ29udGVudDt9CgogIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qgc3os
IG5zSVByZXNDb250ZXh0KiBhQ29udGV4dCkgdGhyb3coKSB7CiAgICB2b2lkKiByZXN1bHQgPSAw
OwogICAgYUNvbnRleHQtPkFsbG9jYXRlRnJvbVNoZWxsKHN6LCAmcmVzdWx0KTsKICAgIHJldHVy
biByZXN1bHQ7CiAgfQogIHZvaWQgRGVzdHJveShuc0lQcmVzQ29udGV4dCogYUNvbnRleHQpIHsK
ICAgIHRoaXMtPn5uc1N0eWxlQ29udGVudCgpOwogICAgYUNvbnRleHQtPkZyZWVUb1NoZWxsKHNp
emVvZihuc1N0eWxlQ29udGVudCksIHRoaXMpOwogIH07CgogIG5zQ2hhbmdlSGludCBDYWxjRGlm
ZmVyZW5jZShjb25zdCBuc1N0eWxlQ29udGVudCYgYU90aGVyKSBjb25zdDsKCiAgUFJVaW50MzIg
Q29udGVudENvdW50KHZvaWQpIGNvbnN0IHsgcmV0dXJuIG1Db250ZW50Q291bnQ7IH0KICBuc3Jl
c3VsdCBHZXRDb250ZW50QXQoUFJVaW50MzIgYUluZGV4LCBuc1N0eWxlQ29udGVudFR5cGUmIGFU
eXBlLCBuc1N0cmluZyYgYUNvbnRlbnQpIGNvbnN0IHsKICAgIGlmIChhSW5kZXggPCBtQ29udGVu
dENvdW50KSB7CiAgICAgIGFUeXBlID0gbUNvbnRlbnRzW2FJbmRleF0ubVR5cGU7CiAgICAgIGFD
b250ZW50ID0gbUNvbnRlbnRzW2FJbmRleF0ubUNvbnRlbnQ7CiAgICAgIHJldHVybiAwOwogICAg
fQogICAgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwNTdMKTsKICB9CgogIG5zcmVzdWx0IEFs
bG9jYXRlQ29udGVudHMoUFJVaW50MzIgYUNvdW50KSB7CiAgICBpZiAoYUNvdW50ICE9IG1Db250
ZW50Q291bnQpIHsKICAgICAgaWYgKG1Db250ZW50cykgeyBkZWxldGVbXSBtQ29udGVudHM7IG1D
b250ZW50cyA9IDA7IH07CiAgICAgIGlmIChhQ291bnQpIHsKICAgICAgICBtQ29udGVudHMgPSBu
ZXcgbnNTdHlsZUNvbnRlbnREYXRhW2FDb3VudF07CiAgICAgICAgaWYgKCEgbUNvbnRlbnRzKSB7
CiAgICAgICAgICBtQ29udGVudENvdW50ID0gMDsKICAgICAgICAgIHJldHVybiAoKG5zcmVzdWx0
KSAweDgwMDcwMDBlTCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIG1Db250ZW50Q291bnQgPSBh
Q291bnQ7CiAgICB9CiAgICByZXR1cm4gMDsKICB9CgogIG5zcmVzdWx0IFNldENvbnRlbnRBdChQ
UlVpbnQzMiBhSW5kZXgsIG5zU3R5bGVDb250ZW50VHlwZSBhVHlwZSwgY29uc3QgbnNTdHJpbmcm
IGFDb250ZW50KSB7CiAgICBpZiAoYUluZGV4IDwgbUNvbnRlbnRDb3VudCkgewogICAgICBtQ29u
dGVudHNbYUluZGV4XS5tVHlwZSA9IGFUeXBlOwogICAgICBpZiAoYVR5cGUgPCBlU3R5bGVDb250
ZW50VHlwZV9PcGVuUXVvdGUpIHsKICAgICAgICBtQ29udGVudHNbYUluZGV4XS5tQ29udGVudCA9
IGFDb250ZW50OwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgIG1Db250ZW50c1thSW5kZXhd
Lm1Db250ZW50LlRydW5jYXRlKCk7CiAgICAgIH0KICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICBy
ZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDA3MDA1N0wpOwogIH0KCiAgUFJVaW50MzIgQ291bnRlcklu
Y3JlbWVudENvdW50KHZvaWQpIGNvbnN0IHsgcmV0dXJuIG1JbmNyZW1lbnRDb3VudDsgfQogIG5z
cmVzdWx0IEdldENvdW50ZXJJbmNyZW1lbnRBdChQUlVpbnQzMiBhSW5kZXgsIG5zU3RyaW5nJiBh
Q291bnRlciwgUFJJbnQzMiYgYUluY3JlbWVudCkgY29uc3QgewogICAgaWYgKGFJbmRleCA8IG1J
bmNyZW1lbnRDb3VudCkgewogICAgICBhQ291bnRlciA9IG1JbmNyZW1lbnRzW2FJbmRleF0ubUNv
dW50ZXI7CiAgICAgIGFJbmNyZW1lbnQgPSBtSW5jcmVtZW50c1thSW5kZXhdLm1WYWx1ZTsKICAg
ICAgcmV0dXJuIDA7CiAgICB9CiAgICByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDA3MDA1N0wpOwog
IH0KCiAgbnNyZXN1bHQgQWxsb2NhdGVDb3VudGVySW5jcmVtZW50cyhQUlVpbnQzMiBhQ291bnQp
IHsKICAgIGlmIChhQ291bnQgIT0gbUluY3JlbWVudENvdW50KSB7CiAgICAgIGlmIChtSW5jcmVt
ZW50cykgeyBkZWxldGVbXSBtSW5jcmVtZW50czsgbUluY3JlbWVudHMgPSAwOyB9OwogICAgICBp
ZiAoYUNvdW50KSB7CiAgICAgICAgbUluY3JlbWVudHMgPSBuZXcgbnNTdHlsZUNvdW50ZXJEYXRh
W2FDb3VudF07CiAgICAgICAgaWYgKCEgbUluY3JlbWVudHMpIHsKICAgICAgICAgIG1JbmNyZW1l
bnRDb3VudCA9IDA7CiAgICAgICAgICByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDA3MDAwZUwpOwog
ICAgICAgIH0KICAgICAgfQogICAgICBtSW5jcmVtZW50Q291bnQgPSBhQ291bnQ7CiAgICB9CiAg
ICByZXR1cm4gMDsKICB9CgogIG5zcmVzdWx0IFNldENvdW50ZXJJbmNyZW1lbnRBdChQUlVpbnQz
MiBhSW5kZXgsIGNvbnN0IG5zU3RyaW5nJiBhQ291bnRlciwgUFJJbnQzMiBhSW5jcmVtZW50KSB7
CiAgICBpZiAoYUluZGV4IDwgbUluY3JlbWVudENvdW50KSB7CiAgICAgIG1JbmNyZW1lbnRzW2FJ
bmRleF0ubUNvdW50ZXIgPSBhQ291bnRlcjsKICAgICAgbUluY3JlbWVudHNbYUluZGV4XS5tVmFs
dWUgPSBhSW5jcmVtZW50OwogICAgICByZXR1cm4gMDsKICAgIH0KICAgIHJldHVybiAoKG5zcmVz
dWx0KSAweDgwMDcwMDU3TCk7CiAgfQoKICBQUlVpbnQzMiBDb3VudGVyUmVzZXRDb3VudCh2b2lk
KSBjb25zdCB7IHJldHVybiBtUmVzZXRDb3VudDsgfQogIG5zcmVzdWx0IEdldENvdW50ZXJSZXNl
dEF0KFBSVWludDMyIGFJbmRleCwgbnNTdHJpbmcmIGFDb3VudGVyLCBQUkludDMyJiBhVmFsdWUp
IGNvbnN0IHsKICAgIGlmIChhSW5kZXggPCBtUmVzZXRDb3VudCkgewogICAgICBhQ291bnRlciA9
IG1SZXNldHNbYUluZGV4XS5tQ291bnRlcjsKICAgICAgYVZhbHVlID0gbVJlc2V0c1thSW5kZXhd
Lm1WYWx1ZTsKICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICByZXR1cm4gKChuc3Jlc3VsdCkgMHg4
MDA3MDA1N0wpOwogIH0KCiAgbnNyZXN1bHQgQWxsb2NhdGVDb3VudGVyUmVzZXRzKFBSVWludDMy
IGFDb3VudCkgewogICAgaWYgKGFDb3VudCAhPSBtUmVzZXRDb3VudCkgewogICAgICBpZiAobVJl
c2V0cykgeyBkZWxldGVbXSBtUmVzZXRzOyBtUmVzZXRzID0gMDsgfTsKICAgICAgaWYgKGFDb3Vu
dCkgewogICAgICAgIG1SZXNldHMgPSBuZXcgbnNTdHlsZUNvdW50ZXJEYXRhW2FDb3VudF07CiAg
ICAgICAgaWYgKCEgbVJlc2V0cykgewogICAgICAgICAgbVJlc2V0Q291bnQgPSAwOwogICAgICAg
ICAgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsKICAgICAgICB9CiAgICAgIH0KICAg
ICAgbVJlc2V0Q291bnQgPSBhQ291bnQ7CiAgICB9CiAgICByZXR1cm4gMDsKICB9CgogIG5zcmVz
dWx0IFNldENvdW50ZXJSZXNldEF0KFBSVWludDMyIGFJbmRleCwgY29uc3QgbnNTdHJpbmcmIGFD
b3VudGVyLCBQUkludDMyIGFWYWx1ZSkgewogICAgaWYgKGFJbmRleCA8IG1SZXNldENvdW50KSB7
CiAgICAgIG1SZXNldHNbYUluZGV4XS5tQ291bnRlciA9IGFDb3VudGVyOwogICAgICBtUmVzZXRz
W2FJbmRleF0ubVZhbHVlID0gYVZhbHVlOwogICAgICByZXR1cm4gMDsKICAgIH0KICAgIHJldHVy
biAoKG5zcmVzdWx0KSAweDgwMDcwMDU3TCk7CiAgfQoKICBuc1N0eWxlQ29vcmQgbU1hcmtlck9m
ZnNldDsKCnByb3RlY3RlZDoKICBQUlVpbnQzMiBtQ29udGVudENvdW50OwogIG5zU3R5bGVDb250
ZW50RGF0YSogbUNvbnRlbnRzOwoKICBQUlVpbnQzMiBtSW5jcmVtZW50Q291bnQ7CiAgbnNTdHls
ZUNvdW50ZXJEYXRhKiBtSW5jcmVtZW50czsKCiAgUFJVaW50MzIgbVJlc2V0Q291bnQ7CiAgbnNT
dHlsZUNvdW50ZXJEYXRhKiBtUmVzZXRzOwp9OwoKc3RydWN0IG5zU3R5bGVVSVJlc2V0OiBwdWJs
aWMgbnNTdHlsZVN0cnVjdCB7CiAgbnNTdHlsZVVJUmVzZXQodm9pZCk7CiAgbnNTdHlsZVVJUmVz
ZXQoY29uc3QgbnNTdHlsZVVJUmVzZXQmIGFPdGhlcik7CiAgfm5zU3R5bGVVSVJlc2V0KHZvaWQp
OwoKICBzdGF0aWMgY29uc3QgbnNTdHlsZVN0cnVjdElEIEdldFN0eWxlU3RydWN0SUQoKSB7cmV0
dXJuIGVTdHlsZVN0cnVjdF9VSVJlc2V0O30KCiAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBz
eiwgbnNJUHJlc0NvbnRleHQqIGFDb250ZXh0KSB0aHJvdygpIHsKICAgIHZvaWQqIHJlc3VsdCA9
IDA7CiAgICBhQ29udGV4dC0+QWxsb2NhdGVGcm9tU2hlbGwoc3osICZyZXN1bHQpOwogICAgcmV0
dXJuIHJlc3VsdDsKICB9CiAgdm9pZCBEZXN0cm95KG5zSVByZXNDb250ZXh0KiBhQ29udGV4dCkg
ewogICAgdGhpcy0+fm5zU3R5bGVVSVJlc2V0KCk7CiAgICBhQ29udGV4dC0+RnJlZVRvU2hlbGwo
c2l6ZW9mKG5zU3R5bGVVSVJlc2V0KSwgdGhpcyk7CiAgfTsKCiAgbnNDaGFuZ2VIaW50IENhbGNE
aWZmZXJlbmNlKGNvbnN0IG5zU3R5bGVVSVJlc2V0JiBhT3RoZXIpIGNvbnN0OwoKICBQUlVuaWNo
YXIgbUtleUVxdWl2YWxlbnQ7CiAgUFJVaW50OCBtVXNlclNlbGVjdDsKICBQUlVpbnQ4IG1SZXNp
emVyOwogIFBSVWludDggbUZvcmNlQnJva2VuSW1hZ2VJY29uOwp9OwoKc3RydWN0IG5zU3R5bGVV
c2VySW50ZXJmYWNlOiBwdWJsaWMgbnNTdHlsZVN0cnVjdCB7CiAgbnNTdHlsZVVzZXJJbnRlcmZh
Y2Uodm9pZCk7CiAgbnNTdHlsZVVzZXJJbnRlcmZhY2UoY29uc3QgbnNTdHlsZVVzZXJJbnRlcmZh
Y2UmIGFPdGhlcik7CiAgfm5zU3R5bGVVc2VySW50ZXJmYWNlKHZvaWQpOwoKICBzdGF0aWMgY29u
c3QgbnNTdHlsZVN0cnVjdElEIEdldFN0eWxlU3RydWN0SUQoKSB7cmV0dXJuIGVTdHlsZVN0cnVj
dF9Vc2VySW50ZXJmYWNlO30KCiAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzeiwgbnNJUHJl
c0NvbnRleHQqIGFDb250ZXh0KSB0aHJvdygpIHsKICAgIHZvaWQqIHJlc3VsdCA9IDA7CiAgICBh
Q29udGV4dC0+QWxsb2NhdGVGcm9tU2hlbGwoc3osICZyZXN1bHQpOwogICAgcmV0dXJuIHJlc3Vs
dDsKICB9CiAgdm9pZCBEZXN0cm95KG5zSVByZXNDb250ZXh0KiBhQ29udGV4dCkgewogICAgdGhp
cy0+fm5zU3R5bGVVc2VySW50ZXJmYWNlKCk7CiAgICBhQ29udGV4dC0+RnJlZVRvU2hlbGwoc2l6
ZW9mKG5zU3R5bGVVc2VySW50ZXJmYWNlKSwgdGhpcyk7CiAgfTsKCiAgbnNDaGFuZ2VIaW50IENh
bGNEaWZmZXJlbmNlKGNvbnN0IG5zU3R5bGVVc2VySW50ZXJmYWNlJiBhT3RoZXIpIGNvbnN0OwoK
ICBQUlVpbnQ4IG1Vc2VySW5wdXQ7CiAgUFJVaW50OCBtVXNlck1vZGlmeTsKICBQUlVpbnQ4IG1V
c2VyRm9jdXM7CgogIFBSVWludDggbUN1cnNvcjsKICBuc1N0cmluZyBtQ3Vyc29ySW1hZ2U7Cn07
CgoKc3RydWN0IG5zU3R5bGVYVUwgOiBwdWJsaWMgbnNTdHlsZVN0cnVjdCB7CiAgbnNTdHlsZVhV
TCgpOwogIG5zU3R5bGVYVUwoY29uc3QgbnNTdHlsZVhVTCYgYVNvdXJjZSk7CiAgfm5zU3R5bGVY
VUwoKTsKCiAgc3RhdGljIGNvbnN0IG5zU3R5bGVTdHJ1Y3RJRCBHZXRTdHlsZVN0cnVjdElEKCkg
e3JldHVybiBlU3R5bGVTdHJ1Y3RfWFVMO30KCiAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBz
eiwgbnNJUHJlc0NvbnRleHQqIGFDb250ZXh0KSB0aHJvdygpIHsKICAgIHZvaWQqIHJlc3VsdCA9
IDA7CiAgICBhQ29udGV4dC0+QWxsb2NhdGVGcm9tU2hlbGwoc3osICZyZXN1bHQpOwogICAgcmV0
dXJuIHJlc3VsdDsKICB9CiAgdm9pZCBEZXN0cm95KG5zSVByZXNDb250ZXh0KiBhQ29udGV4dCkg
ewogICAgdGhpcy0+fm5zU3R5bGVYVUwoKTsKICAgIGFDb250ZXh0LT5GcmVlVG9TaGVsbChzaXpl
b2YobnNTdHlsZVhVTCksIHRoaXMpOwogIH07CgogIG5zQ2hhbmdlSGludCBDYWxjRGlmZmVyZW5j
ZShjb25zdCBuc1N0eWxlWFVMJiBhT3RoZXIpIGNvbnN0OwoKICBmbG9hdCBtQm94RmxleDsKICBQ
UlVpbnQzMiBtQm94T3JkaW5hbDsKICBQUlVpbnQ4IG1Cb3hBbGlnbjsKICBQUlVpbnQ4IG1Cb3hE
aXJlY3Rpb247CiAgUFJVaW50OCBtQm94T3JpZW50OwogIFBSVWludDggbUJveFBhY2s7Cn07CiMg
MTE3MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNTdHlsZVN0cnVjdC5oIgpzdHJ1
Y3QgbnNCb3JkZXJFZGdlczsKCgpzdHJ1Y3QgbnNCb3JkZXJFZGdlCnsKCiAgbnNjb29yZCBtV2lk
dGg7CgogIG5zY29vcmQgbUxlbmd0aDsKICBuc2NvbG9yIG1Db2xvcjsKCiAgbnNCb3JkZXJFZGdl
cyAqIG1JbnNpZGVOZWlnaGJvcjsKICBQUlVpbnQ4IG1TdHlsZTsKCiAgUFJVaW50OCBtU2lkZTsK
CiAgbnNCb3JkZXJFZGdlKCk7Cn07CgppbmxpbmUgbnNCb3JkZXJFZGdlOjpuc0JvcmRlckVkZ2Uo
KQp7CiAgbVdpZHRoPTA7CiAgbUxlbmd0aD0wOwogIG1TdHlsZT0wOwogIG1Db2xvcj0wOwogIG1T
aWRlPTM7CiAgbUluc2lkZU5laWdoYm9yID0gMDsKfTsKCgoKCnN0cnVjdCBuc0JvcmRlckVkZ2Vz
CnsKICBuc1ZvaWRBcnJheSBtRWRnZXNbNF07CiAgbnNNYXJnaW4gbU1heEJvcmRlcldpZHRoOwog
IFBSUGFja2VkQm9vbCBtT3V0c2lkZUVkZ2U7CgogIG5zQm9yZGVyRWRnZXMoKTsKfTsKCmlubGlu
ZSBuc0JvcmRlckVkZ2VzOjpuc0JvcmRlckVkZ2VzKCkKewogIG1NYXhCb3JkZXJXaWR0aC5TaXpl
VG8oMCwwLDAsMCk7CiAgbU91dHNpZGVFZGdlID0gMTsKfTsKIyA1MCAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2xheW91dC9uc0lGcmFtZS5oIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xh
eW91dC9uc0lTdHlsZUNvbnRleHQuaCIgMQojIDU0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5
b3V0L25zSVN0eWxlQ29udGV4dC5oIgpjbGFzcyBuc0lTaXplT2ZIYW5kbGVyOwoKY2xhc3MgbnNJ
RnJhbWU7CmNsYXNzIG5zSVN0eWxlU2V0OwpjbGFzcyBuc0lQcmVzQ29udGV4dDsKY2xhc3MgbnNJ
U3VwcG9ydHNBcnJheTsKY2xhc3MgbnNJU3R5bGVDb250ZXh0OwpjbGFzcyBuc1J1bGVOb2RlOwoK
CgoKCgoKY2xhc3MgbnNJU3R5bGVDb250ZXh0IDogcHVibGljIG5zSVN1cHBvcnRzIHsKcHVibGlj
OgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQg
PSB7IDB4MjZhNGQ5NzAsIDB4YTM0MiwgMHgxMWQxLCB7MHg4OSwgMHg3NCwgMHgwMCwgMHg2MCwg
MHgwOCwgMHg5MSwgMHgxYiwgMHg4MX0gfTsgcmV0dXJuIGlpZDt9CgogIHZpcnR1YWwgUFJCb29s
IEVxdWFscyhjb25zdCBuc0lTdHlsZUNvbnRleHQqIGFPdGhlcikgY29uc3QgPSAwOwoKICB2aXJ0
dWFsIGFscmVhZHlfQWRkUmVmZWQ8bnNJU3R5bGVDb250ZXh0PiBHZXRQYXJlbnQodm9pZCkgY29u
c3QgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Rmlyc3RDaGlsZChuc0lTdHlsZUNvbnRleHQq
KiBhQ29udGV4dCk9MDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQc2V1ZG9UeXBlKG5zSUF0b20q
JiBhUHNldWRvVGFnKSBjb25zdCA9IDA7CgogIHZpcnR1YWwgbnNyZXN1bHQgRmluZENoaWxkV2l0
aFJ1bGVzKGNvbnN0IG5zSUF0b20qIGFQc2V1ZG9UYWcsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnNSdWxlTm9kZSogYVJ1bGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5zSVN0eWxlQ29udGV4dComIGFSZXN1bHQpID0gMDsKCiAgdmlydHVhbCBQUkJvb2wgSGFz
VGV4dERlY29yYXRpb25zKCk9MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Qm9yZGVyUGFkZGlu
Z0Zvcihuc1N0eWxlQm9yZGVyUGFkZGluZyYgYUJvcmRlclBhZGRpbmcpPTA7CgoKCgoKCgogIHZp
cnR1YWwgbnNyZXN1bHQgQ2FsY1N0eWxlRGlmZmVyZW5jZShuc0lTdHlsZUNvbnRleHQqIGFPdGhl
ciwgbnNDaGFuZ2VIaW50JiBhSGludCkgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJ1bGVO
b2RlKG5zUnVsZU5vZGUqKiBhUmVzdWx0KT0wOwogIHZpcnR1YWwgbnNyZXN1bHQgQWRkU3R5bGVC
aXQoY29uc3QgUFJVaW50MzImIGFCaXQpPTA7CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTdHlsZUJp
dHMoUFJVaW50MzIqIGFCaXRzKT0wOwojIDExMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91
dC9uc0lTdHlsZUNvbnRleHQuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFN0eWxlKG5zU3R5bGVT
dHJ1Y3RJRCBhU0lELCBuc1N0eWxlU3RydWN0KiBhU3RydWN0KSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldFN0eWxlKG5zU3R5bGVTdHJ1Y3RJRCBhU0lELCBjb25zdCBuc1N0eWxlU3RydWN0
KiogYVN0cnVjdCkgPSAwOwoKICB2aXJ0dWFsIGNvbnN0IG5zU3R5bGVTdHJ1Y3QqIEdldFN0eWxl
RGF0YShuc1N0eWxlU3RydWN0SUQgYVNJRCkgPSAwOwoKCgoKICB2aXJ0dWFsIG5zU3R5bGVTdHJ1
Y3QqIEdldFVuaXF1ZVN0eWxlRGF0YShuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0LCBjb25z
dCBuc1N0eWxlU3RydWN0SUQmIGFTSUQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ2xlYXJD
YWNoZWREYXRhRm9yUnVsZShuc0lTdHlsZVJ1bGUqIGFSdWxlKSA9IDA7CgoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBDbGVhclN0eWxlRGF0YShuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0LCBuc0lT
dHlsZVJ1bGUqIGFSdWxlKSA9IDA7Cn07CgoKCmV4dGVybiBuc3Jlc3VsdAogIE5TX05ld1N0eWxl
Q29udGV4dChuc0lTdHlsZUNvbnRleHQqKiBhSW5zdGFuY2VQdHJSZXN1bHQsCiAgICAgICAgICAg
ICAgICAgICAgIG5zSVN0eWxlQ29udGV4dCogYVBhcmVudENvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgIG5zSUF0b20qIGFQc2V1ZG9UeXBlLAogICAgICAgICAgICAgICAgICAgICBuc1J1bGVO
b2RlKiBhUnVsZU5vZGUsCiAgICAgICAgICAgICAgICAgICAgIG5zSVByZXNDb250ZXh0KiBhUHJl
c0NvbnRleHQpOwoKCgp0ZW1wbGF0ZSA8Y2xhc3MgVD4KaW5saW5lIHZvaWQKR2V0U3R5bGVEYXRh
KG5zSVN0eWxlQ29udGV4dCogYVN0eWxlQ29udGV4dCwgY29uc3QgVCoqIGFTdHlsZVN0cnVjdCkK
ewogICAgKmFTdHlsZVN0cnVjdCA9IHN0YXRpY19jYXN0PCBjb25zdCBUKiA+KGFTdHlsZUNvbnRl
eHQtPkdldFN0eWxlRGF0YSgoVDo6R2V0U3R5bGVTdHJ1Y3RJRCgpKSkpOwoKfQojIDUxICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSUZyYW1lLmgiIDIKIyA3MCAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2xheW91dC9uc0lGcmFtZS5oIgpzdHJ1Y3QgbnNIVE1MUmVmbG93U3RhdGU7CmNs
YXNzIG5zSFRNTFJlZmxvd0NvbW1hbmQ7CnN0cnVjdCBuc0hUTUxSZWZsb3dNZXRyaWNzOwoKY2xh
c3MgbnNJQXRvbTsKY2xhc3MgbnNJUHJlc0NvbnRleHQ7CmNsYXNzIG5zSVByZXNTaGVsbDsKY2xh
c3MgbnNJUmVuZGVyaW5nQ29udGV4dDsKY2xhc3MgbnNJU2l6ZU9mSGFuZGxlcjsKY2xhc3MgbnNJ
VmlldzsKY2xhc3MgbnNJV2lkZ2V0OwpjbGFzcyBuc0lET01SYW5nZTsKY2xhc3MgbnNJU2VsZWN0
aW9uQ29udHJvbGxlcjsKCmNsYXNzIG5zSUFjY2Vzc2libGU7CgoKc3RydWN0IG5zUGVla09mZnNl
dFN0cnVjdDsKc3RydWN0IG5zUG9pbnQ7CnN0cnVjdCBuc1JlY3Q7CnN0cnVjdCBuc1NpemU7CnN0
cnVjdCBuc01hcmdpbjsKCgp0eXBlZGVmIHZvaWQKKCpOU0ZyYW1lUHJvcGVydHlEdG9yRnVuYyko
bnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnNJRnJhbWUqIGFGcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQXRvbSogYVBy
b3BlcnR5TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogYVByb3BlcnR5VmFs
dWUpOwojIDExOCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lGcmFtZS5oIgp0eXBl
ZGVmIFBSVWludDMyIG5zU3BsaXR0YWJsZVR5cGU7CiMgMTM2ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvbGF5b3V0L25zSUZyYW1lLmgiCnR5cGVkZWYgUFJVaW50MzIgbnNGcmFtZVN0YXRlOwojIDIz
MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lGcmFtZS5oIgplbnVtIG5zRnJhbWVQ
YWludExheWVyIHsKICBlRnJhbWVQYWludExheWVyX1VuZGVybGF5ID0gMCwKICBlRnJhbWVQYWlu
dExheWVyX0NvbnRlbnQgPSAxLAogIGVGcmFtZVBhaW50TGF5ZXJfT3ZlcmxheSA9IDIKfTsKCmVu
dW0gbnNTZWxlY3Rpb25BbW91bnQgewogIGVTZWxlY3RDaGFyYWN0ZXIgPSAwLAogIGVTZWxlY3RX
b3JkID0gMSwKICBlU2VsZWN0TGluZSA9IDIsCiAgZVNlbGVjdEJlZ2luTGluZSA9IDMsCiAgZVNl
bGVjdEVuZExpbmUgPSA0LAogIGVTZWxlY3ROb0Ftb3VudCA9IDUsCiAgZVNlbGVjdERpciA9IDYs
CiAgZVNlbGVjdFBhcmFncmFwaCA9IDcKfTsKCmVudW0gbnNEaXJlY3Rpb24gewogIGVEaXJOZXh0
ID0gMCwKICBlRGlyUHJldmlvdXM9IDEKfTsKCmVudW0gbnNTcHJlYWQgewogIGVTcHJlYWROb25l
ID0gMCwKICBlU3ByZWFkQWNyb3NzID0gMSwKICBlU3ByZWFkRG93biA9IDIKfTsKIyAyOTIgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJRnJhbWUuaCIKdHlwZWRlZiBQUlVpbnQzMiBu
c1JlZmxvd1N0YXR1czsKIyAzNzUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJRnJh
bWUuaCIKdHlwZWRlZiBQUkJvb2wgbnNEaWRSZWZsb3dTdGF0dXM7CiMgMzk2ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbGF5b3V0L25zSUZyYW1lLmgiCmNsYXNzIG5zSUZyYW1lIDogcHVibGljIG5z
SVN1cHBvcnRzCnsKcHVibGljOgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRp
YyBjb25zdCBuc0lJRCBpaWQgPSB7IDB4YTZjZjkwNTAsIDB4MTViMywgMHgxMWQyLHsweDkzLCAw
eDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyfX07IHJldHVybiBpaWQ7fQoj
IDQxOCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lGcmFtZS5oIgogIHZpcnR1YWwg
bnNyZXN1bHQgSW5pdChuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgbnNJQ29udGVudCogYUNvbnRlbnQsCiAgICAgICAgICAgICAgICAgICBuc0lGcmFtZSog
YVBhcmVudCwKICAgICAgICAgICAgICAgICAgIG5zSVN0eWxlQ29udGV4dCogYUNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICBuc0lGcmFtZSogYVByZXZJbkZsb3cpID0gMDsKCgoKCgogIHZpcnR1
YWwgbnNyZXN1bHQgRGVzdHJveShuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0KSA9IDA7CgoK
CgogIHZpcnR1YWwgdm9pZCBSZW1vdmVkQXNQcmltYXJ5RnJhbWUobnNJUHJlc0NvbnRleHQqIGFQ
cmVzQ29udGV4dCkge30KIyA0NTMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJRnJh
bWUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEluaXRpYWxDaGlsZExpc3QobnNJUHJlc0NvbnRl
eHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUF0
b20qIGFMaXN0TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUZyYW1l
KiBhQ2hpbGRMaXN0KSA9IDA7CiMgNDcxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25z
SUZyYW1lLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBBcHBlbmRGcmFtZXMobnNJUHJlc0NvbnRleHQq
IGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lQcmVzU2hlbGwmIGFQ
cmVzU2hlbGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQXRvbSogYUxpc3ROYW1lLAog
ICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUZyYW1lKiBhRnJhbWVMaXN0KSA9IDA7CiMgNDkx
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSUZyYW1lLmgiCiAgdmlydHVhbCBuc3Jl
c3VsdCBJbnNlcnRGcmFtZXMobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICBuc0lQcmVzU2hlbGwmIGFQcmVzU2hlbGwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnNJQXRvbSogYUxpc3ROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
IG5zSUZyYW1lKiBhUHJldkZyYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUZyYW1l
KiBhRnJhbWVMaXN0KSA9IDA7CiMgNTEzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25z
SUZyYW1lLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBSZW1vdmVGcmFtZShuc0lQcmVzQ29udGV4dCog
YVByZXNDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgbnNJUHJlc1NoZWxsJiBhUHJl
c1NoZWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgbnNJQXRvbSogYUxpc3ROYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgbnNJRnJhbWUqIGFPbGRGcmFtZSkgPSAwOwojIDUzNSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lGcmFtZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQg
UmVwbGFjZUZyYW1lKG5zSVByZXNDb250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnNJUHJlc1NoZWxsJiBhUHJlc1NoZWxsLAogICAgICAgICAgICAgICAgICAg
ICAgICAgIG5zSUF0b20qIGFMaXN0TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lG
cmFtZSogYU9sZEZyYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUZyYW1lKiBhTmV3
RnJhbWUpID0gMDsKCgoKCgoKCiAgbnNyZXN1bHQgR2V0Q29udGVudChuc0lDb250ZW50KiogYUNv
bnRlbnQpIGNvbnN0IHsgKmFDb250ZW50ID0gbUNvbnRlbnQ7IG5zX2lmX2FkZHJlZigqYUNvbnRl
bnQpOyByZXR1cm4gMDsgfQoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRPZmZzZXRzKFBSSW50
MzIgJnN0YXJ0LCBQUkludDMyICZlbmQpIGNvbnN0ID0gMDsKCgoKCgoKCiAgbnNyZXN1bHQgR2V0
U3R5bGVDb250ZXh0KG5zSVN0eWxlQ29udGV4dCoqIGFTdHlsZUNvbnRleHQpIGNvbnN0IHsKICAg
ICphU3R5bGVDb250ZXh0ID0gbVN0eWxlQ29udGV4dDsgbnNfaWZfYWRkcmVmKCphU3R5bGVDb250
ZXh0KTsgcmV0dXJuIDA7CiAgfQogIG5zcmVzdWx0IFNldFN0eWxlQ29udGV4dChuc0lQcmVzQ29u
dGV4dCogYVByZXNDb250ZXh0LCBuc0lTdHlsZUNvbnRleHQqIGFDb250ZXh0KSB7CiAgICBpZiAo
YUNvbnRleHQgIT0gbVN0eWxlQ29udGV4dCkgewogICAgICBkbyB7IGlmIChtU3R5bGVDb250ZXh0
KSB7IChtU3R5bGVDb250ZXh0KS0+UmVsZWFzZSgpOyAobVN0eWxlQ29udGV4dCkgPSAwOyB9IH0g
d2hpbGUgKDApOwogICAgICBpZiAoMCAhPSBhQ29udGV4dCkgewogICAgICAgIG1TdHlsZUNvbnRl
eHQgPSBhQ29udGV4dDsKICAgICAgICAoYUNvbnRleHQpLT5BZGRSZWYoKTsKICAgICAgICBEaWRT
ZXRTdHlsZUNvbnRleHQoYVByZXNDb250ZXh0KTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIDA7
CiAgfQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBEaWRTZXRTdHlsZUNvbnRleHQobnNJUHJlc0NvbnRl
eHQqIGFQcmVzQ29udGV4dCkgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFN0eWxlRGF0
YUV4dGVybmFsKG5zU3R5bGVTdHJ1Y3RJRCBhU0lELAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgbnNTdHlsZVN0cnVjdComIGFTdHlsZVN0cnVjdCkgY29uc3QgPSAwOwoj
IDU5MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lGcmFtZS5oIgogIG5zcmVzdWx0
IEdldFN0eWxlRGF0YShuc1N0eWxlU3RydWN0SUQgYVNJRCwKICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgbnNTdHlsZVN0cnVjdComIGFTdHlsZVN0cnVjdCkgY29uc3QgewogICAgcmV0dXJu
IEdldFN0eWxlRGF0YUV4dGVybmFsKGFTSUQsIGFTdHlsZVN0cnVjdCk7CiAgfQoKCgogIG5zcmVz
dWx0IEdldFN0eWxlKG5zU3R5bGVTdHJ1Y3RJRCBhU0lELCBjb25zdCBuc1N0eWxlU3RydWN0Kiog
YVN0cnVjdCkgY29uc3QgewogICAgOwogICAgbVN0eWxlQ29udGV4dC0+R2V0U3R5bGUoYVNJRCwg
YVN0cnVjdCk7CiAgICByZXR1cm4gMDsKICB9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENhbGNCb3Jk
ZXJQYWRkaW5nKG5zTWFyZ2luJiBhQm9yZGVyUGFkZGluZykgY29uc3QgPSAwOwojIDYxOSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lGcmFtZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0QWRkaXRpb25hbFN0eWxlQ29udGV4dChQUkludDMyIGFJbmRleCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN0eWxlQ29udGV4dCoqIGFTdHlsZUNvbnRleHQp
IGNvbnN0ID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFkZGl0aW9uYWxTdHlsZUNvbnRleHQo
UFJJbnQzMiBhSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
c0lTdHlsZUNvbnRleHQqIGFTdHlsZUNvbnRleHQpID0gMDsKCgoKCiAgbnNyZXN1bHQgR2V0UGFy
ZW50KG5zSUZyYW1lKiogYVBhcmVudCkgY29uc3QgeyAqYVBhcmVudCA9IG1QYXJlbnQ7IHJldHVy
biAwOyB9CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRQYXJlbnQoY29uc3QgbnNJRnJhbWUqIGFQYXJl
bnQpIHsgbVBhcmVudCA9IChuc0lGcmFtZSopYVBhcmVudDsgcmV0dXJuIDA7IH0KIyA2MzggIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJRnJhbWUuaCIKICBuc3Jlc3VsdCBHZXRSZWN0
KG5zUmVjdCYgYVJlY3QpIGNvbnN0IHsKICAgIGFSZWN0ID0gbVJlY3Q7CiAgICByZXR1cm4gMDsK
ICB9CgogIG5zcmVzdWx0IEdldE9yaWdpbihuc1BvaW50JiBhUG9pbnQpIGNvbnN0IHsKICAgIGFQ
b2ludC54ID0gbVJlY3QueDsKICAgIGFQb2ludC55ID0gbVJlY3QueTsKICAgIHJldHVybiAwOwog
IH0KCiAgbnNyZXN1bHQgR2V0U2l6ZShuc1NpemUmIGFTaXplKSBjb25zdCB7CiAgICBhU2l6ZS53
aWR0aCA9IG1SZWN0LndpZHRoOwogICAgYVNpemUuaGVpZ2h0ID0gbVJlY3QuaGVpZ2h0OwogICAg
cmV0dXJuIDA7CiAgfQoKICBuc3Jlc3VsdCBTZXRSZWN0KG5zSVByZXNDb250ZXh0KiBhUHJlc0Nv
bnRleHQsCiAgICAgICAgICAgICAgIGNvbnN0IG5zUmVjdCYgYVJlY3QpIHsKICAgIE1vdmVUbyhh
UHJlc0NvbnRleHQsIGFSZWN0LngsIGFSZWN0LnkpOwogICAgU2l6ZVRvKGFQcmVzQ29udGV4dCwg
YVJlY3Qud2lkdGgsIGFSZWN0LmhlaWdodCk7CiAgICByZXR1cm4gMDsKICB9CgogIG5zcmVzdWx0
IE1vdmVUbyhuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0LAogICAgICAgICAgICAgICAgICBu
c2Nvb3JkIGFYLAogICAgICAgICAgICAgICAgICBuc2Nvb3JkIGFZKSB7CiAgICBtUmVjdC54ID0g
YVg7CiAgICBtUmVjdC55ID0gYVk7CiAgICByZXR1cm4gMDsKICB9CgogIG5zcmVzdWx0IFNpemVU
byhuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0LAogICAgICAgICAgICAgICAgICBuc2Nvb3Jk
IGFXaWR0aCwKICAgICAgICAgICAgICAgICAgbnNjb29yZCBhSGVpZ2h0KSB7CiAgICBtUmVjdC53
aWR0aCA9IGFXaWR0aDsKICAgIG1SZWN0LmhlaWdodCA9IGFIZWlnaHQ7CiAgICByZXR1cm4gMDsK
ICB9CiMgNjg4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSUZyYW1lLmgiCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRBZGRpdGlvbmFsQ2hpbGRMaXN0TmFtZShQUkludDMyIGFJbmRleCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lBdG9tKiogYUxpc3RO
YW1lKSBjb25zdCA9IDA7CiMgNjk5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSUZy
YW1lLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBGaXJzdENoaWxkKG5zSVByZXNDb250ZXh0KiBhUHJl
c0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBuc0lBdG9tKiBhTGlzdE5hbWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBuc0lGcmFtZSoqIGFGaXJzdENoaWxkKSBjb25zdCA9IDA7
CgoKCgogIG5zcmVzdWx0IEdldE5leHRTaWJsaW5nKG5zSUZyYW1lKiogYU5leHRTaWJsaW5nKSBj
b25zdCB7CiAgICAqYU5leHRTaWJsaW5nID0gbU5leHRTaWJsaW5nOwogICAgcmV0dXJuIDA7CiAg
fQoKICBuc3Jlc3VsdCBTZXROZXh0U2libGluZyhuc0lGcmFtZSogYU5leHRTaWJsaW5nKSB7CiAg
ICBtTmV4dFNpYmxpbmcgPSBhTmV4dFNpYmxpbmc7CiAgICByZXR1cm4gMDsKICB9CgoKCgoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBQYWludChuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgIG5zSVJlbmRlcmluZ0NvbnRleHQmIGFSZW5kZXJpbmdDb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgIGNvbnN0IG5zUmVjdCYgYURpcnR5UmVjdCwKICAgICAgICAgICAg
ICAgICAgICBuc0ZyYW1lUGFpbnRMYXllciBhV2hpY2hMYXllciwKICAgICAgICAgICAgICAgICAg
ICBQUlVpbnQzMiBhRmxhZ3MgPSAwKSA9IDA7CgoKCgoKICB2aXJ0dWFsIFBSQm9vbCBDYW5QYWlu
dEJhY2tncm91bmQoKSB7IHJldHVybiAxOyB9CiMgNzQ4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
bGF5b3V0L25zSUZyYW1lLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBIYW5kbGVFdmVudChuc0lQcmVz
Q29udGV4dCogYVByZXNDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgIG5zR1VJRXZl
bnQqIGFFdmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICBuc0V2ZW50U3RhdHVzKiBhRXZl
bnRTdGF0dXMpID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb250ZW50Rm9yRXZlbnQobnNJ
UHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnNFdmVudCogYUV2ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lD
b250ZW50KiogYUNvbnRlbnQpID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb250ZW50QW5k
T2Zmc2V0c0Zyb21Qb2ludChuc0lQcmVzQ29udGV4dCogYUNYLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbnNQb2ludCYgYVBvaW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQ29udGVudCAqKiBhTmV3Q29udGVu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSSW50MzImIGFD
b250ZW50T2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UFJJbnQzMiYgYUNvbnRlbnRPZmZzZXRFbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQUkJvb2wmIGFCZWdpbkZyYW1lQ29udGVudCkgPSAwOwoKCgoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRDdXJzb3IobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgbnNQb2ludCYgYVBvaW50LAogICAgICAgICAgICAgICAgICAg
ICAgICBQUkludDMyJiBhQ3Vyc29yKSA9IDA7CiMgNzc4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
bGF5b3V0L25zSUZyYW1lLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGcmFtZUZvclBvaW50KG5z
SVByZXNDb250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBuc1BvaW50JiBhUG9pbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
c0ZyYW1lUGFpbnRMYXllciBhV2hpY2hMYXllciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5zSUZyYW1lKiogYUZyYW1lKSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
UG9pbnRGcm9tT2Zmc2V0KG5zSVByZXNDb250ZXh0KiBpblByZXNDb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuc0lSZW5kZXJpbmdDb250ZXh0KiBpblJlbmRDb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkludDMyIGluT2Zmc2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc1BvaW50KiBvdXRQb2ludCkgPSAwOwojIDgw
MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lGcmFtZS5oIgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0Q2hpbGRGcmFtZUNvbnRhaW5pbmdPZmZzZXQoUFJJbnQzMiBpbkNvbnRlbnRPZmZz
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCBpbkhpbnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSSW50MzIqIG91dEZyYW1lQ29udGVudE9mZnNl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJRnJhbWUqICpvdXRDaGlsZEZy
YW1lKSA9IDA7CgoKCgoKICBuc3Jlc3VsdCBHZXRGcmFtZVN0YXRlKG5zRnJhbWVTdGF0ZSogYVJl
c3VsdCkgewogICAgKmFSZXN1bHQgPSBtU3RhdGU7CiAgICByZXR1cm4gMDsKICB9CgoKCgogIG5z
cmVzdWx0IFNldEZyYW1lU3RhdGUobnNGcmFtZVN0YXRlIGFOZXdTdGF0ZSkgewogICAgbVN0YXRl
ID0gYU5ld1N0YXRlOwogICAgcmV0dXJuIDA7CiAgfQojIDgzMyAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2xheW91dC9uc0lGcmFtZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgQ29udGVudENoYW5nZWQo
bnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuc0lDb250ZW50KiBhQ2hpbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3Vw
cG9ydHMqIGFTdWJDb250ZW50KSA9IDA7CiMgODQ3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5
b3V0L25zSUZyYW1lLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBBdHRyaWJ1dGVDaGFuZ2VkKG5zSVBy
ZXNDb250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
c0lDb250ZW50KiBhQ2hpbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkludDMy
IGFOYW1lU3BhY2VJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUF0b20qIGFB
dHRyaWJ1dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkludDMyIGFNb2RUeXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJJbnQzMiBhSGludCkgPSAwOwojIDg2
MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lGcmFtZS5oIgogIHZpcnR1YWwgbnNy
ZXN1bHQgQ29udGVudFN0YXRlQ2hhbmdlZChuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQ29udGVudCogYUNoaWxkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJJbnQzMiBhSGludCkgPSAwOwoKCgoKICB2
aXJ0dWFsIG5zcmVzdWx0IElzU3BsaXR0YWJsZShuc1NwbGl0dGFibGVUeXBlJiBhSXNTcGxpdHRh
YmxlKSBjb25zdCA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UHJldkluRmxvdyhuc0lG
cmFtZSoqIGFQcmV2SW5GbG93KSBjb25zdCA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRQcmV2
SW5GbG93KG5zSUZyYW1lKikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TmV4dEluRmxvdyhu
c0lGcmFtZSoqIGFOZXh0SW5GbG93KSBjb25zdCA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRO
ZXh0SW5GbG93KG5zSUZyYW1lKikgPSAwOwoKCgoKICB2aXJ0dWFsIG5zSUZyYW1lKiBHZXRGaXJz
dEluRmxvdygpIGNvbnN0IHsKICAgIHJldHVybiBjb25zdF9jYXN0PCBuc0lGcmFtZSogPih0aGlz
KTsKICB9CgoKCgogIHZpcnR1YWwgbnNJRnJhbWUqIEdldExhc3RJbkZsb3coKSBjb25zdCB7CiAg
ICByZXR1cm4gY29uc3RfY2FzdDwgbnNJRnJhbWUqID4odGhpcyk7CiAgfQojIDkwMyAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lGcmFtZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgV2ls
bFJlZmxvdyhuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0KSA9IDA7CiMgOTQ1ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSUZyYW1lLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBSZWZs
b3cobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICBuc0hU
TUxSZWZsb3dNZXRyaWNzJiBhUmVmbG93TWV0cmljcywKICAgICAgICAgICAgICAgICAgICBjb25z
dCBuc0hUTUxSZWZsb3dTdGF0ZSYgYVJlZmxvd1N0YXRlLAogICAgICAgICAgICAgICAgICAgIG5z
UmVmbG93U3RhdHVzJiBhU3RhdHVzKSA9IDA7CiMgOTY1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
bGF5b3V0L25zSUZyYW1lLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBEaWRSZWZsb3cobnNJUHJlc0Nv
bnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbnNIVE1M
UmVmbG93U3RhdGUqIGFSZWZsb3dTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgbnNEaWRS
ZWZsb3dTdGF0dXMgYVN0YXR1cykgPSAwOwojIDk4MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xh
eW91dC9uc0lGcmFtZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgQ2FuQ29udGludWVUZXh0UnVuKFBS
Qm9vbCYgYUNvbnRpbnVlVGV4dFJ1bikgY29uc3QgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEFkanVzdEZyYW1lU2l6ZShuc2Nvb3JkIGFFeHRyYVNwYWNlLCBuc2Nvb3JkJiBhVXNlZFNwYWNl
KSA9IDA7CgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBUcmltVHJhaWxpbmdXaGl0ZVNwYWNlKG5zSVBy
ZXNDb250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5zSVJlbmRlcmluZ0NvbnRleHQmIGFSQywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnNjb29yZCYgYURlbHRhV2lkdGgpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRWaWV3KG5zSVByZXNDb250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICBuc0lWaWV3KiogYVZpZXcpIGNvbnN0ID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFZp
ZXcobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgIG5z
SVZpZXcqIGFWaWV3KSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UGFyZW50V2l0aFZp
ZXcobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuc0lGcmFtZSoqIGFQYXJlbnQpIGNvbnN0ID0gMDsKCgoKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0T2Zmc2V0RnJvbVZpZXcobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc1BvaW50JiBhT2Zmc2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5zSVZpZXcqKiBhVmlldykgY29uc3QgPSAwOwojIDEwMjUg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJRnJhbWUuaCIKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldE9yaWdpblRvVmlld09mZnNldChuc0lQcmVzQ29udGV4dCogYVByZXNDb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc1BvaW50JiBhT2Zmc2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lWaWV3KiogYVZpZXcpIGNvbnN0ID0g
MDsKCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRXaW5kb3cobnNJUHJlc0NvbnRleHQqIGFQ
cmVzQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgbnNJV2lkZ2V0KiogYVdpZGdldCkg
Y29uc3QgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RnJhbWVUeXBlKG5zSUF0b20q
KiBhVHlwZSkgY29uc3QgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IElzUGVyY2VudGFnZUJh
c2UoUFJCb29sJiBhQmFzZSkgY29uc3QgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTY3Jv
bGxlZChuc0lWaWV3ICphVmlldykgPSAwOwojIDEwNjYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9s
YXlvdXQvbnNJRnJhbWUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNlbGVjdGVkKG5zSVByZXND
b250ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJRE9NUmFu
Z2UqIGFSYW5nZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBQUkJvb2wgYVNlbGVjdGVkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgIG5zU3ByZWFkIGFTcHJlYWQpID0gMDsKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRTZWxlY3RlZChQUkJvb2wgKmFTZWxlY3RlZCkgY29uc3QgPSAwOwojIDEw
ODIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJRnJhbWUuaCIKICB2aXJ0dWFsIG5z
cmVzdWx0IElzU2VsZWN0YWJsZShQUkJvb2wqIGFJc1NlbGVjdGFibGUsIFBSVWludDgqIGFTZWxl
Y3RTdHlsZSkgY29uc3QgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2VsZWN0aW9u
Q29udHJvbGxlcihuc0lQcmVzQ29udGV4dCAqYVByZXNDb250ZXh0LCBuc0lTZWxlY3Rpb25Db250
cm9sbGVyICoqYVNlbENvbikgPSAwOwojIDExMDAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlv
dXQvbnNJRnJhbWUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IENhcHR1cmVNb3VzZShuc0lQcmVzQ29u
dGV4dCogYVByZXNDb250ZXh0LCBQUkJvb2wgYUdyYWJNb3VzZUV2ZW50cykgPSAwOwojIDExMDkg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJRnJhbWUuaCIKICB2aXJ0dWFsIG5zcmVz
dWx0IFBlZWtPZmZzZXQobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwgbnNQZWVrT2Zmc2V0
U3RydWN0ICphUG9zKSA9IDA7CiMgMTEyMiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9u
c0lGcmFtZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgQ2hlY2tWaXNpYmlsaXR5KG5zSVByZXNDb250
ZXh0KiBhQ29udGV4dCwgUFJJbnQzMiBhU3RhcnRJbmRleCwgUFJJbnQzMiBhRW5kSW5kZXgsIFBS
Qm9vbCBhUmVjdXJzZSwgUFJCb29sICphRmluaXNoZWQsIFBSQm9vbCAqX3JldHZhbCk9MDsKCgoK
CgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZWZsb3dEaXJ0eUNoaWxkKG5zSVByZXNTaGVsbCogYVBy
ZXNTaGVsbCwgbnNJRnJhbWUqIGFDaGlsZCkgPSAwOwojIDExNDAgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9sYXlvdXQvbnNJRnJhbWUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFjY2Vzc2libGUo
bnNJQWNjZXNzaWJsZSoqIGFBY2Nlc3NpYmxlKSA9IDA7CiMgMTE2MCAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2xheW91dC9uc0lGcmFtZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UGFyZW50U3R5
bGVDb250ZXh0RnJhbWUobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUZyYW1lKiogYVByb3ZpZGVyRnJhbWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkJvb2wqIGFJc0NoaWxkKSA9
IDA7CiMgMTE3MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lGcmFtZS5oIgogIHZp
cnR1YWwgbnNyZXN1bHQgSXNWaXNpYmxlRm9yUGFpbnRpbmcobnNJUHJlc0NvbnRleHQgKiBhUHJl
c0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lSZW5kZXJpbmdD
b250ZXh0JiBhUmVuZGVyaW5nQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBSQm9vbCBhQ2hlY2tWaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
UkJvb2wqIGFJc1Zpc2libGUpID0gMDsKIyAxMTg4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5
b3V0L25zSUZyYW1lLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBJc0VtcHR5KG5zQ29tcGF0aWJpbGl0
eSBhQ29tcGF0TW9kZSwKICAgICAgICAgICAgICAgICAgICAgUFJCb29sIGFJc1ByZSwKICAgICAg
ICAgICAgICAgICAgICAgUFJCb29sKiBhUmVzdWx0KSA9IDA7CgoKCgoKCgogIFBSQm9vbCBJc0dl
bmVyYXRlZENvbnRlbnRGcmFtZSgpIHsKICAgIHJldHVybiAobVN0YXRlICYgMHgwMDAwMDA0MCkg
IT0gMDsKICB9CiMgMTIxMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lGcmFtZS5o
IgogIFBSQm9vbCBJc1BzZXVkb0ZyYW1lKG5zSUNvbnRlbnQqIGFQYXJlbnRDb250ZW50KSB7CiAg
ICByZXR1cm4gbUNvbnRlbnQgPT0gYVBhcmVudENvbnRlbnQ7CiAgfQoKCgogIHZpcnR1YWwgdm9p
ZCogR2V0UHJvcGVydHkobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5zSUF0b20qIGFQcm9wZXJ0eU5hbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQUkJvb2wgYVJlbW92ZVByb3BlcnR5KSBjb25zdCA9IDA7CgogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0UHJvcGVydHkobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUF0b20qIGFQcm9wZXJ0eU5hbWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBhUHJvcGVydHlWYWx1ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5TRnJhbWVQcm9wZXJ0eUR0b3JGdW5jIGFQcm9wRHRvckZ1bmMp
ID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QmlkaVByb3BlcnR5KG5zSVByZXNDb250
ZXh0KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQXRvbSog
YVByb3BlcnR5TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiogYVByb3Bl
cnR5VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGFTaXplICkgY29u
c3QgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QmlkaVByb3BlcnR5KG5zSVByZXNDb250ZXh0
KiBhUHJlc0NvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQXRvbSogYVBy
b3BlcnR5TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBhUHJvcGVydHlW
YWx1ZSkgPSAwOwoKCnByb3RlY3RlZDoKCiAgbnNSZWN0IG1SZWN0OwogIG5zSUNvbnRlbnQqIG1D
b250ZW50OwogIG5zSVN0eWxlQ29udGV4dCogbVN0eWxlQ29udGV4dDsKICBuc0lGcmFtZSogbVBh
cmVudDsKICBuc0lGcmFtZSogbU5leHRTaWJsaW5nOwogIG5zRnJhbWVTdGF0ZSBtU3RhdGU7Cgpw
cml2YXRlOgogIHZpcnR1YWwgbnNyZWZjbnQgQWRkUmVmKHZvaWQpID0gMDsKICB2aXJ0dWFsIG5z
cmVmY250IFJlbGVhc2Uodm9pZCkgPSAwOwp9OwoKCgp0ZW1wbGF0ZSA8Y2xhc3MgVD4KaW5saW5l
IHZvaWQKR2V0U3R5bGVEYXRhKG5zSUZyYW1lKiBhRnJhbWUsIGNvbnN0IFQqKiBhU3R5bGVTdHJ1
Y3QpCnsKICAgIGFGcmFtZS0+R2V0U3R5bGVEYXRhKChUOjpHZXRTdHlsZVN0cnVjdElEKCkpLAog
ICAgICAgICAgICAgICAgICAgICpyZWludGVycHJldF9jYXN0PCBjb25zdCBuc1N0eWxlU3RydWN0
KiogPihhU3R5bGVTdHJ1Y3QpKTsKfQojIDQxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0
L25zSU9iamVjdEZyYW1lLmgiIDIKCmNsYXNzIG5zSVBsdWdpbkluc3RhbmNlOwoKCgoKCmNsYXNz
IG5zSU9iamVjdEZyYW1lIDogcHVibGljIG5zSVN1cHBvcnRzIHsKcHVibGljOgogIHN0YXRpYyBj
b25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7IDB4NmQxMGIw
N2QsIDB4ZTc1YiwgMHgxMWQ0LCB7IDB4OTgsIDB4ODUsIDB4MCwgMHhjMCwgMHg0ZiwgMHhhMCwg
MHhjZiwgMHg0YiB9IH07IHJldHVybiBpaWQ7fQoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBsdWdp
bkluc3RhbmNlKG5zSVBsdWdpbkluc3RhbmNlKiYgYVBsdWdpbkluc3RhbmNlKSA9IDA7Cn07CiMg
MTIxICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1
Z2luL25zSVNjcmlwdGFibGVQbHVnaW4uaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
cGx1Z2luL25zSVNjcmlwdGFibGVQbHVnaW4uaCIKY2xhc3MgbnNJU2NyaXB0YWJsZVBsdWdpbiA6
IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0
SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhmMWExMmJiYSwgMHgxZGQxLCAweDEx
YjIsIHsgMHhhOSwgMHg1ZiwgMHhjZCwgMHhjMSwgMHgxOCwgMHg2MCwgMHg1ZSwgMHg5MiB9fTsg
cmV0dXJuIGlpZDt9CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTY3JpcHRhYmxlUGVlcih2
b2lkICogKmFTY3JpcHRhYmxlUGVlcikgPSAwOwoKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dFNjcmlwdGFibGVJbnRlcmZhY2UobnNJSUQgKiAqYVNjcmlwdGFibGVJbnRlcmZhY2UpID0gMDsK
Cn07CiMgMTIyICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvcGx1Z2luL25zSVBsdWdpbkhvc3QuaCIgMQojIDE4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
cGx1Z2luL25zSVBsdWdpbkhvc3QuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2lu
L25zSVBsdWdpbkluc3RhbmNlT3duZXIuaCIgMQojIDIxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
cGx1Z2luL25zSVBsdWdpbkluc3RhbmNlT3duZXIuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvcGx1Z2luL25zcGx1Z2luLmgiIDEKIyAxMDggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVn
aW4vbnNwbHVnaW4uaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdp
bi5oIiAxCiMgNTIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luLmgiCmNs
YXNzIG5zSVBsdWdpbiA6IHB1YmxpYyBuc0lGYWN0b3J5IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNv
bnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGRmNzczMDcw
LCAweDAxOTksIDB4MTFkMiwgeyAweDgxLCAweDViLCAweDAwLCAweDYwLCAweDA4LCAweDExLCAw
eDlkLCAweDdhIH19OyByZXR1cm4gaWlkO30KCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDcmVh
dGVQbHVnaW5JbnN0YW5jZShuc0lTdXBwb3J0cyAqYU91dGVyLCBjb25zdCBuc0lJRCAmIGFJSUQs
IGNvbnN0IGNoYXIgKmFQbHVnaW5NSU1FVHlwZSwgdm9pZCAqICphUmVzdWx0KSA9IDA7CiMgNzUg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luLmgiCiAgdmlydHVhbCBuc3Jl
c3VsdCBJbml0aWFsaXplKHZvaWQpID0gMDsKIyA4NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3Bs
dWdpbi9uc0lQbHVnaW4uaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFNodXRkb3duKHZvaWQpID0gMDsK
IyAxMDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luLmgiCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRNSU1FRGVzY3JpcHRpb24oY29uc3QgY2hhciAqICphTUlNRURlc2NyaXB0
aW9uKSA9IDA7CiMgMTEzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpbi5o
IgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VmFsdWUobnNQbHVnaW5WYXJpYWJsZSBhVmFyaWFibGUs
IHZvaWQgKiBhVmFsdWUpID0gMDsKCn07CiMgMTA5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1
Z2luL25zcGx1Z2luLmgiIDIKIyAxMjYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNw
bHVnaW4uaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpbk1hbmFn
ZXIuaCIgMQojIDI5ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpbk1hbmFn
ZXIuaCIKY2xhc3MgbnNJUGx1Z2luU3RyZWFtTGlzdGVuZXI7CiMgMzkgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luTWFuYWdlci5oIgpjbGFzcyBuc0lQbHVnaW5NYW5hZ2Vy
IDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBH
ZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGRhNThhZDgwLCAweDRlYjYsIDB4
MTFkMiwgeyAweDgxLCAweDY0LCAweDAwLCAweDYwLCAweDA4LCAweDExLCAweDlkLCAweDdhIH19
OyByZXR1cm4gaWlkO30KIyA1NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVn
aW5NYW5hZ2VyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRWYWx1ZShuc1BsdWdpbk1hbmFnZXJW
YXJpYWJsZSB2YXJpYWJsZSwgdm9pZCAqIHZhbHVlKSA9IDA7CiMgNjYgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luTWFuYWdlci5oIgogIHZpcnR1YWwgbnNyZXN1bHQgUmVs
b2FkUGx1Z2lucyhQUkJvb2wgcmVsb2FkUGFnZXMpID0gMDsKIyA3NiAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5NYW5hZ2VyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBVc2Vy
QWdlbnQoY29uc3QgY2hhciAqICogcmVzdWx0aW5nQWdlbnRTdHJpbmcpID0gMDsKCiAgICB2aXJ0
dWFsIG5zcmVzdWx0CiAgICBHZXRVUkwobnNJU3VwcG9ydHMqIHBsdWdpbkluc3QsCiAgICAgICAg
ICAgY29uc3QgY2hhciogdXJsLAogICAgICAgICAgIGNvbnN0IGNoYXIqIHRhcmdldCA9IF9fbnVs
bCwKICAgICAgICAgICBuc0lQbHVnaW5TdHJlYW1MaXN0ZW5lciogc3RyZWFtTGlzdGVuZXIgPSBf
X251bGwsCiAgICAgICAgICAgY29uc3QgY2hhciogYWx0SG9zdCA9IF9fbnVsbCwKICAgICAgICAg
ICBjb25zdCBjaGFyKiByZWZlcnJlciA9IF9fbnVsbCwKICAgICAgICAgICBQUkJvb2wgZm9yY2VK
U0VuYWJsZWQgPSAwKSA9IDA7CiAgICB2aXJ0dWFsIG5zcmVzdWx0CiAgICBQb3N0VVJMKG5zSVN1
cHBvcnRzKiBwbHVnaW5JbnN0LAogICAgICAgICAgICBjb25zdCBjaGFyKiB1cmwsCiAgICAgICAg
ICAgIFBSVWludDMyIHBvc3REYXRhTGVuLAogICAgICAgICAgICBjb25zdCBjaGFyKiBwb3N0RGF0
YSwKICAgICAgICAgICAgUFJCb29sIGlzRmlsZSA9IDAsCiAgICAgICAgICAgIGNvbnN0IGNoYXIq
IHRhcmdldCA9IF9fbnVsbCwKICAgICAgICAgICAgbnNJUGx1Z2luU3RyZWFtTGlzdGVuZXIqIHN0
cmVhbUxpc3RlbmVyID0gX19udWxsLAogICAgICAgICAgICBjb25zdCBjaGFyKiBhbHRIb3N0ID0g
X19udWxsLAogICAgICAgICAgICBjb25zdCBjaGFyKiByZWZlcnJlciA9IF9fbnVsbCwKICAgICAg
ICAgICAgUFJCb29sIGZvcmNlSlNFbmFibGVkID0gMCwKICAgICAgICAgICAgUFJVaW50MzIgcG9z
dEhlYWRlcnNMZW5ndGggPSAwLAogICAgICAgICAgICBjb25zdCBjaGFyKiBwb3N0SGVhZGVycyA9
IF9fbnVsbCkgPSAwOwojIDE3MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVn
aW5NYW5hZ2VyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBSZWdpc3RlclBsdWdpbihjb25zdCBuc0lJ
RCYgYUNJRCwgY29uc3QgY2hhciAqYVBsdWdpbk5hbWUsIGNvbnN0IGNoYXIgKmFEZXNjcmlwdGlv
biwgY29uc3QgY2hhciAqICogYU1pbWVUeXBlcywgY29uc3QgY2hhciAqICogYU1pbWVEZXNjcmlw
dGlvbnMsIGNvbnN0IGNoYXIgKiAqIGFGaWxlRXh0ZW5zaW9ucywgUFJJbnQzMiBhQ291bnQpID0g
MDsKIyAxODAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luTWFuYWdlci5o
IgogIHZpcnR1YWwgbnNyZXN1bHQgVW5yZWdpc3RlclBsdWdpbihjb25zdCBuc0lJRCYgYUNJRCkg
PSAwOwojIDE5MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5NYW5hZ2Vy
LmgiCiAgICB2aXJ0dWFsIG5zcmVzdWx0CiAgICBHZXRVUkxXaXRoSGVhZGVycyhuc0lTdXBwb3J0
cyogcGx1Z2luSW5zdCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHVybCwKICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRhcmdldCA9IF9fbnVsbCwKICAgICAgICAg
ICAgICAgICAgICAgIG5zSVBsdWdpblN0cmVhbUxpc3RlbmVyKiBzdHJlYW1MaXN0ZW5lciA9IF9f
bnVsbCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFsdEhvc3QgPSBfX251bGws
CiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByZWZlcnJlciA9IF9fbnVsbCwKICAg
ICAgICAgICAgICAgICAgICAgIFBSQm9vbCBmb3JjZUpTRW5hYmxlZCA9IDAsCiAgICAgICAgICAg
ICAgICAgICAgICBQUlVpbnQzMiBnZXRIZWFkZXJzTGVuZ3RoID0gMCwKICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGdldEhlYWRlcnMgPSBfX251bGwpID0gMDsKfTsKIyAxMjcgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNwbHVnaW4uaCIgMgoKCgoKCgojIDEgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luSW5zdGFuY2VQZWVyLmgiIDEKIyAyMiAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5JbnN0YW5jZVBlZXIuaCIKc3Ry
dWN0IEpTT2JqZWN0OwpjbGFzcyBuc0lPdXRwdXRTdHJlYW07CiMgNDIgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luSW5zdGFuY2VQZWVyLmgiCmNsYXNzIG5zSVBsdWdpbklu
c3RhbmNlUGVlciA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25z
dCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHg0YjdjZWEyMCwg
MHgwMTliLCAweDExZDIsIHsgMHg4MSwgMHg1YiwgMHgwMCwgMHg2MCwgMHgwOCwgMHgxMSwgMHg5
ZCwgMHg3YSB9fTsgcmV0dXJuIGlpZDt9CiMgNTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVn
aW4vbnNJUGx1Z2luSW5zdGFuY2VQZWVyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRWYWx1ZShu
c1BsdWdpbkluc3RhbmNlUGVlclZhcmlhYmxlIGFWYXJpYWJsZSwgdm9pZCAqIGFWYWx1ZSkgPSAw
OwojIDY4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpbkluc3RhbmNlUGVl
ci5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TUlNRVR5cGUobnNNSU1FVHlwZSAqYU1JTUVUeXBl
KSA9IDA7CiMgODAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luSW5zdGFu
Y2VQZWVyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNb2RlKG5zUGx1Z2luTW9kZSAqYU1vZGUp
ID0gMDsKIyA5NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5JbnN0YW5j
ZVBlZXIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IE5ld1N0cmVhbShuc01JTUVUeXBlIGFUeXBlLCBj
b25zdCBjaGFyICphVGFyZ2V0LCBuc0lPdXRwdXRTdHJlYW0gKiphUmVzdWx0KSA9IDA7CiMgMTA4
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpbkluc3RhbmNlUGVlci5oIgog
IHZpcnR1YWwgbnNyZXN1bHQgU2hvd1N0YXR1cyhjb25zdCBjaGFyICphTWVzc2FnZSkgPSAwOwoj
IDExOCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5JbnN0YW5jZVBlZXIu
aCIKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFdpbmRvd1NpemUoUFJVaW50MzIgYVdpZHRoLCBQUlVp
bnQzMiBhSGVpZ2h0KSA9IDA7Cgp9OwojIDEzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdp
bi9uc3BsdWdpbi5oIiAyCgoKCgoKCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4v
bnNJUGx1Z2luVGFnSW5mby5oIiAxCiMgMjIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4v
bnNJUGx1Z2luVGFnSW5mby5oIgpjbGFzcyBuc0lET01FbGVtZW50OwojIDM3ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpblRhZ0luZm8uaCIKY2xhc3MgbnNJUGx1Z2luVGFn
SW5mbyA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJ
RCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHg1ZjFlYzFkMCwgMHgwMTli
LCAweDExZDIsIHsgMHg4MSwgMHg1YiwgMHgwMCwgMHg2MCwgMHgwOCwgMHgxMSwgMHg5ZCwgMHg3
YSB9fTsgcmV0dXJuIGlpZDt9CiMgNTIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJ
UGx1Z2luVGFnSW5mby5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QXR0cmlidXRlcyhQUlVpbnQx
NiAmIGFDb3VudCwgY29uc3QgY2hhciogY29uc3QqICYgYU5hbWVzLCBjb25zdCBjaGFyKiBjb25z
dCogJiBhVmFsdWVzKSA9IDA7CiMgNjQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJ
UGx1Z2luVGFnSW5mby5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QXR0cmlidXRlKGNvbnN0IGNo
YXIgKmFOYW1lLCBjb25zdCBjaGFyICogKmFSZXN1bHQpID0gMDsKCn07CiMgMTQyICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvcGx1Z2luL25zcGx1Z2luLmgiIDIKCgoKCgoKCiMgMSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lXaW5kb3dsZXNzUGx1Z0luc3RQZWVyLmgiIDEKIyAzMCAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lXaW5kb3dsZXNzUGx1Z0luc3RQZWVyLmgi
CmNsYXNzIG5zSVdpbmRvd2xlc3NQbHVnaW5JbnN0YW5jZVBlZXIgOiBwdWJsaWMgbnNJU3VwcG9y
dHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29u
c3QgbnNJSUQgaWlkID0gezB4NTdiNGUyZjAsIDB4MDE5YiwgMHgxMWQyLCB7IDB4ODEsIDB4NWIs
IDB4MDAsIDB4NjAsIDB4MDgsIDB4MTEsIDB4OWQsIDB4N2EgfX07IHJldHVybiBpaWQ7fQoKCgoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBJbnZhbGlkYXRlUmVjdChuc1BsdWdpblJlY3QgKiBhUmVjdCkg
PSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJbnZhbGlkYXRlUmVnaW9uKG5zUGx1Z2luUmVn
aW9uIGFSZWdpb24pID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgRm9yY2VSZWRyYXcodm9p
ZCkgPSAwOwoKfTsKIyAxNTAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNwbHVnaW4u
aCIgMgojIDE2MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc3BsdWdpbi5oIgojIDEg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luTWFuYWdlcjIuaCIgMQojIDE3
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpbk1hbmFnZXIyLmgiCmNsYXNz
IG5zSVBsdWdpbjsKCmNsYXNzIG5zSUV2ZW50SGFuZGxlcjsKIyAzMyAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5NYW5hZ2VyMi5oIgpjbGFzcyBuc0lQbHVnaW5NYW5hZ2Vy
MiA6IHB1YmxpYyBuc0lQbHVnaW5NYW5hZ2VyIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5z
SUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGQyOTYyZGMwLCAweDRl
YjYsIDB4MTFkMiwgeyAweDgxLCAweDY0LCAweDAwLCAweDYwLCAweDA4LCAweDExLCAweDlkLCAw
eDdhIH19OyByZXR1cm4gaWlkO30KCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBCZWdpbldhaXRD
dXJzb3Iodm9pZCkgPSAwOwoKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEVuZFdhaXRDdXJzb3Io
dm9pZCkgPSAwOwojIDYyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpbk1h
bmFnZXIyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBTdXBwb3J0c1VSTFByb3RvY29sKGNvbnN0IGNo
YXIgKmFQcm90b2NvbCwgUFJCb29sICphUmVzdWx0KSA9IDA7CiMgNzUgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luTWFuYWdlcjIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IE5v
dGlmeVN0YXR1c0NoYW5nZShuc0lQbHVnaW4gKmFQbHVnaW4sIG5zcmVzdWx0IGFTdGF0dXMpID0g
MDsKIyA5MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5NYW5hZ2VyMi5o
IgogIHZpcnR1YWwgbnNyZXN1bHQgRmluZFByb3h5Rm9yVVJMKGNvbnN0IGNoYXIgKmFVUkwsIGNo
YXIgKiphUmVzdWx0KSA9IDA7CiMgMTAyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25z
SVBsdWdpbk1hbmFnZXIyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBSZWdpc3RlcldpbmRvdyhuc0lF
dmVudEhhbmRsZXIgKmFIYW5kbGVyLCBuc1BsdWdpblBsYXRmb3JtV2luZG93UmVmIGFXaW5kb3cp
ID0gMDsKIyAxMTMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luTWFuYWdl
cjIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFVucmVnaXN0ZXJXaW5kb3cobnNJRXZlbnRIYW5kbGVy
ICphSGFuZGxlciwgbnNQbHVnaW5QbGF0Zm9ybVdpbmRvd1JlZiBhV2luZG93KSA9IDA7CiMgMTI0
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpbk1hbmFnZXIyLmgiCiAgdmly
dHVhbCBuc3Jlc3VsdCBBbGxvY2F0ZU1lbnVJRChuc0lFdmVudEhhbmRsZXIgKmFIYW5kbGVyLCBQ
UkJvb2wgYUlzU3VibWVudSwgUFJJbnQxNiAqYVJlc3VsdCkgPSAwOwojIDEzNCAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5NYW5hZ2VyMi5oIgogIHZpcnR1YWwgbnNyZXN1
bHQgRGVhbGxvY2F0ZU1lbnVJRChuc0lFdmVudEhhbmRsZXIgKmFIYW5kbGVyLCBQUkludDE2IGFN
ZW51SUQpID0gMDsKIyAxNDUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2lu
TWFuYWdlcjIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEhhc0FsbG9jYXRlZE1lbnVJRChuc0lFdmVu
dEhhbmRsZXIgKmFIYW5kbGVyLCBQUkludDE2IGFNZW51SUQsIFBSQm9vbCAqYVJlc3VsdCkgPSAw
OwoKfTsKIyAxNjQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNwbHVnaW4uaCIgMgoK
CgoKCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSUZpbGVVdGlsaXRpZXMu
aCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSUZpbGVVdGlsaXRpZXMu
aCIKY2xhc3MgbnNJRmlsZVV0aWxpdGllcyA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6
CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQg
PSB7MHg4OWEzMWNlMCwgMHgwMTlhLCAweDExZDIsIHsgMHg4MSwgMHg1YiwgMHgwMCwgMHg2MCwg
MHgwOCwgMHgxMSwgMHg5ZCwgMHg3YSB9fTsgcmV0dXJuIGlpZDt9CiMgNDYgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9wbHVnaW4vbnNJRmlsZVV0aWxpdGllcy5oIgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0UHJvZ3JhbVBhdGgoY29uc3QgY2hhciAqICphUHJvZ3JhbVBhdGgpID0gMDsKIyA1NSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lGaWxlVXRpbGl0aWVzLmgiCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRUZW1wRGlyUGF0aChjb25zdCBjaGFyICogKmFUZW1wRGlyUGF0aCkgPSAwOwoj
IDY2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSUZpbGVVdGlsaXRpZXMuaCIKICB2
aXJ0dWFsIG5zcmVzdWx0IE5ld1RlbXBGaWxlTmFtZShjb25zdCBjaGFyICphUHJlZml4LCBQUlVp
bnQzMiBhTGVuZ3RoLCBjaGFyICogYUJ1ZmZlcikgPSAwOwoKfTsKIyAxNzIgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9wbHVnaW4vbnNwbHVnaW4uaCIgMgoKCgoKCgoKIyAxICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpblRhZ0luZm8yLmgiIDEKIyAxNyAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5UYWdJbmZvMi5oIgplbnVtIG5zUGx1Z2luVGFnVHlw
ZSB7CiAgbnNQbHVnaW5UYWdUeXBlX1Vua25vd24sCiAgbnNQbHVnaW5UYWdUeXBlX0VtYmVkLAog
IG5zUGx1Z2luVGFnVHlwZV9PYmplY3QsCiAgbnNQbHVnaW5UYWdUeXBlX0FwcGxldAp9OwojIDMx
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpblRhZ0luZm8yLmgiCmNsYXNz
IG5zSVBsdWdpblRhZ0luZm8yIDogcHVibGljIG5zSVBsdWdpblRhZ0luZm8gewogcHVibGljOgoK
ICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0g
ezB4NmE0OWM5YTAsIDB4MDE5YiwgMHgxMWQyLCB7IDB4ODEsIDB4NWIsIDB4MDAsIDB4NjAsIDB4
MDgsIDB4MTEsIDB4OWQsIDB4N2EgfX07IHJldHVybiBpaWQ7fQoKCgoKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0VGFnVHlwZShuc1BsdWdpblRhZ1R5cGUgKmFUYWdUeXBlKSA9IDA7CgoKCgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldFRhZ1RleHQoY29uc3QgY2hhciAqICphVGFnVGV4dCkgPSAwOwoj
IDU2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zSVBsdWdpblRhZ0luZm8yLmgiCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRQYXJhbWV0ZXJzKFBSVWludDE2ICYgYUNvdW50LCBjb25zdCBj
aGFyKiBjb25zdCogJiBhTmFtZXMsIGNvbnN0IGNoYXIqIGNvbnN0KiAmIGFWYWx1ZXMpID0gMDsK
IyA2NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5UYWdJbmZvMi5oIgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0UGFyYW1ldGVyKGNvbnN0IGNoYXIgKmFOYW1lLCBjb25zdCBj
aGFyICogKmFSZXN1bHQpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RG9jdW1lbnRC
YXNlKGNvbnN0IGNoYXIgKiAqYURvY3VtZW50QmFzZSkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0RG9jdW1lbnRFbmNvZGluZyhjb25zdCBjaGFyICogKmFEb2N1bWVudEVuY29kaW5n
KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFsaWdubWVudChjb25zdCBjaGFyICog
KmFFbGlnbm1lbnQpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0V2lkdGgoUFJVaW50
MzIgKmFXaWR0aCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRIZWlnaHQoUFJVaW50
MzIgKmFIZWlnaHQpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Qm9yZGVyVmVydFNw
YWNlKFBSVWludDMyICphQm9yZGVyVmVydFNwYWNlKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldEJvcmRlckhvcml6U3BhY2UoUFJVaW50MzIgKmFCb3JkZXJIb3JpelNwYWNlKSA9IDA7
CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFVuaXF1ZUlEKFBSVWludDMyICphVW5pcXVlSUQp
ID0gMDsKIyAxMjYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luVGFnSW5m
bzIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERPTUVsZW1lbnQobnNJRE9NRWxlbWVudCAqICph
RE9NRWxlbWVudCkgPSAwOwoKfTsKIyAxODAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4v
bnNwbHVnaW4uaCIgMgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJT3V0cHV0
U3RyZWFtLmgiIDEKIyAxNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSU91dHB1dFN0
cmVhbS5oIgpjbGFzcyBuc0lPdXRwdXRTdHJlYW07CgpjbGFzcyBuc0lJbnB1dFN0cmVhbTsKIyA0
MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSU91dHB1dFN0cmVhbS5oIgp0eXBlZGVm
IG5zcmVzdWx0ICgqIG5zUmVhZFNlZ21lbnRGdW4pKG5zSU91dHB1dFN0cmVhbSAqYU91dFN0cmVh
bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphQ2xvc3VyZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICphVG9TZWdtZW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSVWludDMyIGFGcm9tT2Zmc2V0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSVWludDMyIGFDb3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUlVpbnQzMiAqYVJlYWRDb3Vu
dCk7CiMgNTYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lPdXRwdXRTdHJlYW0uaCIK
Y2xhc3MgbnNJT3V0cHV0U3RyZWFtIDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAg
c3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsw
eDBkMGFjZDJhLCAweDYxYjQsIDB4MTFkNCwgeyAweDk4LCAweDc3LCAweDAwLCAweGMwLCAweDRm
LCAweGEwLCAweGNmLCAweDRhIH19OyByZXR1cm4gaWlkO30KIyA3MyAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL3hwY29tL25zSU91dHB1dFN0cmVhbS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgQ2xvc2Uo
dm9pZCkgPSAwOwojIDgyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJT3V0cHV0U3Ry
ZWFtLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBGbHVzaCh2b2lkKSA9IDA7CiMgOTcgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lPdXRwdXRTdHJlYW0uaCIKICB2aXJ0dWFsIG5zcmVzdWx0
IFdyaXRlKGNvbnN0IGNoYXIgKmFCdWYsIFBSVWludDMyIGFDb3VudCwgUFJVaW50MzIgKl9yZXR2
YWwpID0gMDsKIyAxMTggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lPdXRwdXRTdHJl
YW0uaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFdyaXRlRnJvbShuc0lJbnB1dFN0cmVhbSAqYUZyb21T
dHJlYW0sIFBSVWludDMyIGFDb3VudCwgUFJVaW50MzIgKl9yZXR2YWwpID0gMDsKIyAxNDEgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lPdXRwdXRTdHJlYW0uaCIKICB2aXJ0dWFsIG5z
cmVzdWx0IFdyaXRlU2VnbWVudHMobnNSZWFkU2VnbWVudEZ1biBhUmVhZGVyLCB2b2lkICogYUNs
b3N1cmUsIFBSVWludDMyIGFDb3VudCwgUFJVaW50MzIgKl9yZXR2YWwpID0gMDsKIyAxNTAgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lPdXRwdXRTdHJlYW0uaCIKICB2aXJ0dWFsIG5z
cmVzdWx0IElzTm9uQmxvY2tpbmcoUFJCb29sICpfcmV0dmFsKSA9IDA7Cgp9OwojIDE4MiAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc3BsdWdpbi5oIiAyCiMgMjIgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1Z2luSW5zdGFuY2VPd25lci5oIiAyCmNsYXNzIG5zSVBs
dWdpbkluc3RhbmNlOwoKY2xhc3MgbnNJRG9jdW1lbnQ7CiMgMzQgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9wbHVnaW4vbnNJUGx1Z2luSW5zdGFuY2VPd25lci5oIgpjbGFzcyBuc0lQbHVnaW5JbnN0
YW5jZU93bmVyIDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0
IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDE4MjcwODcwLCAw
eDMyZjEsIDB4MTFkMiwgeyAweGE4LCAweDMwLCAweDAwLCAweDQwLCAweDk1LCAweDlhLCAweDI4
LCAweGM5IH19OyByZXR1cm4gaWlkO30KCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0SW5zdGFu
Y2UobnNJUGx1Z2luSW5zdGFuY2UgKmFJbnN0YW5jZSkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRJbnN0YW5jZShuc0lQbHVnaW5JbnN0YW5jZSAqICYgYUluc3RhbmNlKSA9IDA7CgoK
CgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRXaW5kb3cobnNQbHVnaW5XaW5kb3cgKiAmIGFXaW5k
b3cpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TW9kZShuc1BsdWdpbk1vZGUgKmFN
b2RlKSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ3JlYXRlV2lkZ2V0KHZvaWQpID0g
MDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0CiAgR2V0VVJMKGNvbnN0IGNoYXIgKmFVUkwsIGNv
bnN0IGNoYXIgKmFUYXJnZXQsCiAgICAgICAgIHZvaWQgKmFQb3N0RGF0YSwgUFJVaW50MzIgYVBv
c3REYXRhTGVuLAogICAgICAgICB2b2lkICphSGVhZGVyc0RhdGEsIFBSVWludDMyIGFIZWFkZXJz
RGF0YUxlbiwKICAgICAgICAgUFJCb29sIGFJc0ZpbGUgPSAwKSA9IDA7CgoKCgogIHZpcnR1YWwg
bnNyZXN1bHQgU2hvd1N0YXR1cyhjb25zdCBjaGFyICphU3RhdHVzTXNnKSA9IDA7CgogIHZpcnR1
YWwgbnNyZXN1bHQKICBTaG93U3RhdHVzKGNvbnN0IFBSVW5pY2hhciAqYVN0YXR1c01zZykgPSAw
OwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERvY3VtZW50KG5zSURvY3VtZW50ICogKmFEb2N1
bWVudCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJbnZhbGlkYXRlUmVjdChuc1BsdWdp
blJlY3QgKiBhUmVjdCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJbnZhbGlkYXRlUmVn
aW9uKG5zUGx1Z2luUmVnaW9uIGFSZWdpb24pID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQg
Rm9yY2VSZWRyYXcodm9pZCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRWYWx1ZShu
c1BsdWdpbkluc3RhbmNlUGVlclZhcmlhYmxlIGFWYXJpYWJsZSwgdm9pZCAqIGFWYWx1ZSkgPSAw
OwoKfTsKIyAxOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQbHVnaW5Ib3N0Lmgi
IDIKCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJU3RyZWFtTGlzdGVuZXIu
aCIgMQojIDEwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJU3RyZWFtTGlzdGVuZXIu
aCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJUmVxdWVzdE9ic2VydmVyLmgi
IDEKIyAxNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVJlcXVlc3RPYnNlcnZlci5o
IgpjbGFzcyBuc0lSZXF1ZXN0OwojIDMyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJ
UmVxdWVzdE9ic2VydmVyLmgiCmNsYXNzIG5zSVJlcXVlc3RPYnNlcnZlciA6IHB1YmxpYyBuc0lT
dXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRp
YyBjb25zdCBuc0lJRCBpaWQgPSB7MHhmZDkxZTJlMCwgMHgxNDgxLCAweDExZDMsIHsgMHg5Mywg
MHgzMywgMHgwMCwgMHgxMCwgMHg0YiwgMHhhMCwgMHhmZCwgMHg0MCB9fTsgcmV0dXJuIGlpZDt9
CiMgNDcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lSZXF1ZXN0T2JzZXJ2ZXIuaCIK
ICB2aXJ0dWFsIG5zcmVzdWx0IE9uU3RhcnRSZXF1ZXN0KG5zSVJlcXVlc3QgKmFSZXF1ZXN0LCBu
c0lTdXBwb3J0cyAqYUNvbnRleHQpID0gMDsKIyA2MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25l
Y2tvL25zSVJlcXVlc3RPYnNlcnZlci5oIgogIHZpcnR1YWwgbnNyZXN1bHQgT25TdG9wUmVxdWVz
dChuc0lSZXF1ZXN0ICphUmVxdWVzdCwgbnNJU3VwcG9ydHMgKmFDb250ZXh0LCBuc3Jlc3VsdCBh
U3RhdHVzQ29kZSkgPSAwOwoKfTsKIyAxMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25z
SVN0cmVhbUxpc3RlbmVyLmgiIDIKCgoKCgoKY2xhc3MgbnNJSW5wdXRTdHJlYW07CiMgMzIgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lTdHJlYW1MaXN0ZW5lci5oIgpjbGFzcyBuc0lT
dHJlYW1MaXN0ZW5lciA6IHB1YmxpYyBuc0lSZXF1ZXN0T2JzZXJ2ZXIgewogcHVibGljOgoKICBz
dGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4
MWE2MzcwMjAsIDB4MTQ4MiwgMHgxMWQzLCB7IDB4OTMsIDB4MzMsIDB4MDAsIDB4MTAsIDB4NGIs
IDB4YTAsIDB4ZmQsIDB4NDAgfX07IHJldHVybiBpaWQ7fQojIDUyICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvbmVja28vbnNJU3RyZWFtTGlzdGVuZXIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IE9uRGF0
YUF2YWlsYWJsZShuc0lSZXF1ZXN0ICphUmVxdWVzdCwgbnNJU3VwcG9ydHMgKmFDb250ZXh0LCBu
c0lJbnB1dFN0cmVhbSAqYUlucHV0U3RyZWFtLCBQUlVpbnQzMiBhT2Zmc2V0LCBQUlVpbnQzMiBh
Q291bnQpID0gMDsKCn07CiMgMjMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNJUGx1
Z2luSG9zdC5oIiAyCgoKCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN0cmlu
Z1N0cmVhbS5oIiAxCiMgMzEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTdHJpbmdT
dHJlYW0uaCIKY2xhc3MgbnNJU3RyaW5nSW5wdXRTdHJlYW0gOiBwdWJsaWMgbnNJU3VwcG9ydHMg
ewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3Qg
bnNJSUQgaWlkID0gezB4NDUwY2QyZDQsIDB4ZjBmZCwgMHg0MjRkLCB7IDB4YjMsIDB4NjUsIDB4
YjEsIDB4MjUsIDB4MWYsIDB4ODAsIDB4ZmQsIDB4NTMgfX07IHJldHVybiBpaWQ7fQojIDQ2ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJU3RyaW5nU3RyZWFtLmgiCiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXREYXRhKGNvbnN0IGNoYXIgKmRhdGEsIFBSSW50MzIgZGF0YUxlbikgPSAwOwoj
IDYxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJU3RyaW5nU3RyZWFtLmgiCiAgdmly
dHVhbCBuc3Jlc3VsdCBBZG9wdERhdGEoY2hhciAqIGRhdGEsIFBSSW50MzIgZGF0YUxlbikgPSAw
OwojIDcyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJU3RyaW5nU3RyZWFtLmgiCiAg
dmlydHVhbCBuc3Jlc3VsdCBTaGFyZURhdGEoY29uc3QgY2hhciAqZGF0YSwgUFJJbnQzMiBkYXRh
TGVuKSA9IDA7Cgp9OwojIDE1MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN0cmlu
Z1N0cmVhbS5oIgpleHRlcm4gIkMiIG5zcmVzdWx0IE5TX05ld1N0cmluZ0lucHV0U3RyZWFtKAog
ICAgbnNJSW5wdXRTdHJlYW0qKiBhU3RyZWFtUmVzdWx0LAogICAgY29uc3QgbnNBU3RyaW5nJiBh
U3RyaW5nVG9SZWFkKTsKCgoKZXh0ZXJuICJDIiBuc3Jlc3VsdCBOU19OZXdDU3RyaW5nSW5wdXRT
dHJlYW0oCiAgICBuc0lJbnB1dFN0cmVhbSoqIGFTdHJlYW1SZXN1bHQsCiAgICBjb25zdCBuc0FD
U3RyaW5nJiBhU3RyaW5nVG9SZWFkKTsKCgoKZXh0ZXJuICJDIiBuc3Jlc3VsdCBOU19OZXdDaGFy
SW5wdXRTdHJlYW0oCiAgICBuc0lTdXBwb3J0cyoqIGFTdHJlYW1SZXN1bHQsCiAgICBjb25zdCBj
aGFyKiBhU3RyaW5nVG9SZWFkKTsKCgoKZXh0ZXJuICJDIiBuc3Jlc3VsdCBOU19OZXdDaGFyT3V0
cHV0U3RyZWFtKAogICAgbnNJU3VwcG9ydHMqKiBhU3RyZWFtUmVzdWx0LAogICAgY2hhcioqIGFT
dHJpbmdUb0NoYW5nZSk7CgoKCmV4dGVybiAiQyIgbnNyZXN1bHQgTlNfTmV3Qnl0ZUlucHV0U3Ry
ZWFtKAogICAgbnNJU3VwcG9ydHMqKiBhU3RyZWFtUmVzdWx0LAogICAgY29uc3QgY2hhciogYVN0
cmluZ1RvUmVhZCwKICAgIFBSSW50MzIgYUxlbmd0aCk7CiMgMjcgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9wbHVnaW4vbnNJUGx1Z2luSG9zdC5oIiAyCiMgMzUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9wbHVnaW4vbnNJUGx1Z2luSG9zdC5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNr
by9uc05ldFV0aWwuaCIgMQojIDQxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNOZXRV
dGlsLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zTmV0RXJyb3IuaCIgMQoj
IDQyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNOZXRVdGlsLmgiIDIKIyAxICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNOZXRDSUQuaCIgMQojIDQzICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvbmVja28vbnNOZXRVdGlsLmgiIDIKCgoKCiMgMSAiL3Zhci90bXAvcG9ydGFnZS9t
b3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpby5oIiAxCiMg
NDcgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5j
bHVkZS9uc3ByL3ByaW8uaCIKIyAxICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dv
cmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlucnZhbC5oIiAxCiMgNTIgIi92YXIvdG1w
L3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3By
aW5ydmFsLmgiCmV4dGVybiAiQyIgewoKCgoKCnR5cGVkZWYgUFJVaW50MzIgUFJJbnRlcnZhbFRp
bWU7CiMgMTA1ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9k
aXN0L2luY2x1ZGUvbnNwci9wcmlucnZhbC5oIgpleHRlcm4gUFJJbnRlcnZhbFRpbWUgUFJfSW50
ZXJ2YWxOb3codm9pZCk7CiMgMTIzICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dv
cmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlucnZhbC5oIgpleHRlcm4gUFJVaW50MzIg
UFJfVGlja3NQZXJTZWNvbmQodm9pZCk7CiMgMTQyICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEt
MS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlucnZhbC5oIgpleHRlcm4g
UFJJbnRlcnZhbFRpbWUgUFJfU2Vjb25kc1RvSW50ZXJ2YWwoUFJVaW50MzIgc2Vjb25kcyk7CmV4
dGVybiBQUkludGVydmFsVGltZSBQUl9NaWxsaXNlY29uZHNUb0ludGVydmFsKFBSVWludDMyIG1p
bGxpKTsKZXh0ZXJuIFBSSW50ZXJ2YWxUaW1lIFBSX01pY3Jvc2Vjb25kc1RvSW50ZXJ2YWwoUFJV
aW50MzIgbWljcm8pOwojIDE2MyAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3Jr
L21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpbnJ2YWwuaCIKZXh0ZXJuIFBSVWludDMyIFBS
X0ludGVydmFsVG9TZWNvbmRzKFBSSW50ZXJ2YWxUaW1lIHRpY2tzKTsKZXh0ZXJuIFBSVWludDMy
IFBSX0ludGVydmFsVG9NaWxsaXNlY29uZHMoUFJJbnRlcnZhbFRpbWUgdGlja3MpOwpleHRlcm4g
UFJVaW50MzIgUFJfSW50ZXJ2YWxUb01pY3Jvc2Vjb25kcyhQUkludGVydmFsVGltZSB0aWNrcyk7
Cgp9CiMgNDggIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rp
c3QvaW5jbHVkZS9uc3ByL3ByaW8uaCIgMgojIDEgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0x
LjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3ByaW5ldC5oIiAxCiMgNjUgIi92
YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9u
c3ByL3ByaW5ldC5oIgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc29ja2V0LmgiIDEgMwojIDI1ICIv
dXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAzCmV4dGVybiAiQyIgewoKIyAxICIvdXNyL2luY2x1
ZGUvc3lzL3Vpby5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3N5cy91aW8uaCIgMwpleHRlcm4g
IkMiIHsKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3Vpby5oIiAxIDMKIyA0MiAiL3Vzci9pbmNs
dWRlL2JpdHMvdWlvLmgiIDMKc3RydWN0IGlvdmVjCiAgewogICAgdm9pZCAqaW92X2Jhc2U7CiAg
ICBzaXplX3QgaW92X2xlbjsKICB9OwojIDMwICIvdXNyL2luY2x1ZGUvc3lzL3Vpby5oIiAyIDMK
CgoKCgoKCmV4dGVybiBzc2l6ZV90IHJlYWR2IChpbnQgX19mZCwgX19jb25zdCBzdHJ1Y3QgaW92
ZWMgKl9fdmVjdG9yLCBpbnQgX19jb3VudCkKICAgICB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIHNz
aXplX3Qgd3JpdGV2IChpbnQgX19mZCwgX19jb25zdCBzdHJ1Y3QgaW92ZWMgKl9fdmVjdG9yLCBp
bnQgX19jb3VudCkKICAgICB0aHJvdyAoKTsKCn0KIyAyOCAiL3Vzci9pbmNsdWRlL3N5cy9zb2Nr
ZXQuaCIgMiAzCgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4yLjIv
aW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzAgIi91c3IvaW5jbHVkZS9zeXMvc29ja2V0LmgiIDIg
MwoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDEgMwojIDI5ICIvdXNyL2lu
Y2x1ZGUvYml0cy9zb2NrZXQuaCIgMwojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51
eC1nbnUvMy4yLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzAgIi91c3IvaW5jbHVkZS9iaXRz
L3NvY2tldC5oIiAyIDMKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8z
LjIuMi9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIyAzMiAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2V0
LmgiIDIgMwoKCgoKdHlwZWRlZiBfX3NvY2tsZW5fdCBzb2NrbGVuX3Q7CgoKCgplbnVtIF9fc29j
a2V0X3R5cGUKewogIFNPQ0tfU1RSRUFNID0gMSwKCgogIFNPQ0tfREdSQU0gPSAyLAoKCiAgU09D
S19SQVcgPSAzLAoKICBTT0NLX1JETSA9IDQsCgogIFNPQ0tfU0VRUEFDS0VUID0gNSwKCgogIFNP
Q0tfUEFDS0VUID0gMTAKCgoKfTsKIyAxNDIgIi91c3IvaW5jbHVkZS9iaXRzL3NvY2tldC5oIiAz
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2FkZHIuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVk
ZS9iaXRzL3NvY2thZGRyLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgc2FfZmFtaWx5
X3Q7CiMgMTQzICIvdXNyL2luY2x1ZGUvYml0cy9zb2NrZXQuaCIgMiAzCgoKc3RydWN0IHNvY2th
ZGRyCiAgewogICAgc2FfZmFtaWx5X3Qgc2FfZmFtaWx5OwogICAgY2hhciBzYV9kYXRhWzE0XTsK
ICB9OwojIDE2MiAiL3Vzci9pbmNsdWRlL2JpdHMvc29ja2V0LmgiIDMKc3RydWN0IHNvY2thZGRy
X3N0b3JhZ2UKICB7CiAgICBzYV9mYW1pbHlfdCBzc19mYW1pbHk7CiAgICBfX3VpbnQzMl90IF9f
c3NfYWxpZ247CiAgICBjaGFyIF9fc3NfcGFkZGluZ1soMTI4IC0gKDIgKiBzaXplb2YgKF9fdWlu
dDMyX3QpKSldOwogIH07CgoKCmVudW0KICB7CiAgICBNU0dfT09CID0gMHgwMSwKCiAgICBNU0df
UEVFSyA9IDB4MDIsCgogICAgTVNHX0RPTlRST1VURSA9IDB4MDQsCgoKCiAgICBNU0dfVFJZSEFS
RCA9IE1TR19ET05UUk9VVEUsCgoKICAgIE1TR19DVFJVTkMgPSAweDA4LAoKICAgIE1TR19QUk9Y
WSA9IDB4MTAsCgogICAgTVNHX1RSVU5DID0gMHgyMCwKCiAgICBNU0dfRE9OVFdBSVQgPSAweDQw
LAoKICAgIE1TR19FT1IgPSAweDgwLAoKICAgIE1TR19XQUlUQUxMID0gMHgxMDAsCgogICAgTVNH
X0ZJTiA9IDB4MjAwLAoKICAgIE1TR19TWU4gPSAweDQwMCwKCiAgICBNU0dfQ09ORklSTSA9IDB4
ODAwLAoKICAgIE1TR19SU1QgPSAweDEwMDAsCgogICAgTVNHX0VSUlFVRVVFID0gMHgyMDAwLAoK
ICAgIE1TR19OT1NJR05BTCA9IDB4NDAwMCwKCiAgICBNU0dfTU9SRSA9IDB4ODAwMAoKICB9OwoK
CgoKc3RydWN0IG1zZ2hkcgogIHsKICAgIHZvaWQgKm1zZ19uYW1lOwogICAgc29ja2xlbl90IG1z
Z19uYW1lbGVuOwoKICAgIHN0cnVjdCBpb3ZlYyAqbXNnX2lvdjsKICAgIGludCBtc2dfaW92bGVu
OwoKICAgIHZvaWQgKm1zZ19jb250cm9sOwogICAgc29ja2xlbl90IG1zZ19jb250cm9sbGVuOwoK
ICAgIGludCBtc2dfZmxhZ3M7CiAgfTsKCgpzdHJ1Y3QgY21zZ2hkcgogIHsKICAgIHNpemVfdCBj
bXNnX2xlbjsKCiAgICBpbnQgY21zZ19sZXZlbDsKICAgIGludCBjbXNnX3R5cGU7CgoKCiAgfTsK
IyAyNTcgIi91c3IvaW5jbHVkZS9iaXRzL3NvY2tldC5oIiAzCmV4dGVybiBzdHJ1Y3QgY21zZ2hk
ciAqX19jbXNnX254dGhkciAoc3RydWN0IG1zZ2hkciAqX19taGRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjbXNnaGRyICpfX2Ntc2cpIHRocm93ICgpOwoK
CgoKZXh0ZXJuIF9faW5saW5lIHN0cnVjdCBjbXNnaGRyICoKX19jbXNnX254dGhkciAoc3RydWN0
IG1zZ2hkciAqX19taGRyLCBzdHJ1Y3QgY21zZ2hkciAqX19jbXNnKSB0aHJvdyAoKQp7CiAgaWYg
KChzaXplX3QpIF9fY21zZy0+Y21zZ19sZW4gPCBzaXplb2YgKHN0cnVjdCBjbXNnaGRyKSkKCiAg
ICByZXR1cm4gMDsKCiAgX19jbXNnID0gKHN0cnVjdCBjbXNnaGRyICopICgodW5zaWduZWQgY2hh
ciAqKSBfX2Ntc2cKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKCgoX19jbXNnLT5j
bXNnX2xlbikgKyBzaXplb2YgKHNpemVfdCkgLSAxKSAmIChzaXplX3QpIH4oc2l6ZW9mIChzaXpl
X3QpIC0gMSkpKTsKICBpZiAoKHVuc2lnbmVkIGNoYXIgKikgKF9fY21zZyArIDEpID4gKCh1bnNp
Z25lZCBjaGFyICopIF9fbWhkci0+bXNnX2NvbnRyb2wKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICsgX19taGRyLT5tc2dfY29udHJvbGxlbikKICAgICAgfHwgKCh1bnNp
Z25lZCBjaGFyICopIF9fY21zZyArICgoKF9fY21zZy0+Y21zZ19sZW4pICsgc2l6ZW9mIChzaXpl
X3QpIC0gMSkgJiAoc2l6ZV90KSB+KHNpemVvZiAoc2l6ZV90KSAtIDEpKQogICAgICAgICAgPiAo
KHVuc2lnbmVkIGNoYXIgKikgX19taGRyLT5tc2dfY29udHJvbCArIF9fbWhkci0+bXNnX2NvbnRy
b2xsZW4pKSkKCiAgICByZXR1cm4gMDsKICByZXR1cm4gX19jbXNnOwp9CgoKCgplbnVtCiAgewog
ICAgU0NNX1JJR0hUUyA9IDB4MDEsCgoKICAgIFNDTV9DUkVERU5USUFMUyA9IDB4MDIsCgoKICAg
IF9fU0NNX0NPTk5FQ1QgPSAweDAzCiAgfTsKCgoKc3RydWN0IHVjcmVkCnsKICBwaWRfdCBwaWQ7
CiAgdWlkX3QgdWlkOwogIGdpZF90IGdpZDsKfTsKCgojIDEgIi91c3IvaW5jbHVkZS9hc20vc29j
a2V0LmgiIDEgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9hc20vc29ja2lvcy5oIiAxIDMKIyA1ICIv
dXNyL2luY2x1ZGUvYXNtL3NvY2tldC5oIiAyIDMKIyAzMDYgIi91c3IvaW5jbHVkZS9iaXRzL3Nv
Y2tldC5oIiAyIDMKCgoKc3RydWN0IGxpbmdlcgogIHsKICAgIGludCBsX29ub2ZmOwogICAgaW50
IGxfbGluZ2VyOwogIH07CiMgMzYgIi91c3IvaW5jbHVkZS9zeXMvc29ja2V0LmgiIDIgMwoKCgoK
c3RydWN0IG9zb2NrYWRkcgogIHsKICAgIHVuc2lnbmVkIHNob3J0IGludCBzYV9mYW1pbHk7CiAg
ICB1bnNpZ25lZCBjaGFyIHNhX2RhdGFbMTRdOwogIH07CgoKCgplbnVtCnsKICBTSFVUX1JEID0g
MCwKCiAgU0hVVF9XUiwKCiAgU0hVVF9SRFdSCgp9OwojIDEwMCAiL3Vzci9pbmNsdWRlL3N5cy9z
b2NrZXQuaCIgMwpleHRlcm4gaW50IHNvY2tldCAoaW50IF9fZG9tYWluLCBpbnQgX190eXBlLCBp
bnQgX19wcm90b2NvbCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBzb2NrZXRwYWlyIChpbnQg
X19kb21haW4sIGludCBfX3R5cGUsIGludCBfX3Byb3RvY29sLAogICAgICAgICAgICAgICAgICAg
ICAgIGludCBfX2Zkc1syXSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBiaW5kIChpbnQgX19mZCwg
X19jb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKiBfX2FkZHIsIHNvY2tsZW5fdCBfX2xlbikKICAgICB0
aHJvdyAoKTsKCgpleHRlcm4gaW50IGdldHNvY2tuYW1lIChpbnQgX19mZCwgc3RydWN0IHNvY2th
ZGRyICpfX3Jlc3RyaWN0IF9fYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgc29ja2xlbl90
ICpfX3Jlc3RyaWN0IF9fbGVuKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IGNvbm5lY3QgKGlu
dCBfX2ZkLCBfX2NvbnN0IHN0cnVjdCBzb2NrYWRkciAqIF9fYWRkciwgc29ja2xlbl90IF9fbGVu
KQogICAgIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGdldHBlZXJuYW1lIChpbnQgX19mZCwgc3Ry
dWN0IHNvY2thZGRyICpfX3Jlc3RyaWN0IF9fYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAg
c29ja2xlbl90ICpfX3Jlc3RyaWN0IF9fbGVuKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHNzaXplX3Qg
c2VuZCAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqX19idWYsIHNpemVfdCBfX24sIGludCBfX2Zs
YWdzKQogICAgIHRocm93ICgpOwoKCgpleHRlcm4gc3NpemVfdCByZWN2IChpbnQgX19mZCwgdm9p
ZCAqX19idWYsIHNpemVfdCBfX24sIGludCBfX2ZsYWdzKQogICAgIHRocm93ICgpOwoKCgpleHRl
cm4gc3NpemVfdCBzZW5kdG8gKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKl9fYnVmLCBzaXplX3Qg
X19uLAogICAgICAgICAgICAgICAgICAgICAgIGludCBfX2ZsYWdzLCBfX2NvbnN0IHN0cnVjdCBz
b2NrYWRkciAqIF9fYWRkciwKICAgICAgICAgICAgICAgICAgICAgICBzb2NrbGVuX3QgX19hZGRy
X2xlbikgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHNzaXplX3QgcmVjdmZyb20gKGludCBfX2ZkLCB2
b2lkICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19uLCBpbnQgX19mbGFncywKICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkciAqX19yZXN0cmljdCBfX2FkZHIsIHNvY2ts
ZW5fdCAqX19yZXN0cmljdCBfX2FkZHJfbGVuKQogICAgIHRocm93ICgpOwoKCgoKZXh0ZXJuIHNz
aXplX3Qgc2VuZG1zZyAoaW50IF9fZmQsIF9fY29uc3Qgc3RydWN0IG1zZ2hkciAqX19tZXNzYWdl
LCBpbnQgX19mbGFncykKICAgICB0aHJvdyAoKTsKCgoKZXh0ZXJuIHNzaXplX3QgcmVjdm1zZyAo
aW50IF9fZmQsIHN0cnVjdCBtc2doZHIgKl9fbWVzc2FnZSwgaW50IF9fZmxhZ3MpCiAgICAgdGhy
b3cgKCk7CgoKCgoKZXh0ZXJuIGludCBnZXRzb2Nrb3B0IChpbnQgX19mZCwgaW50IF9fbGV2ZWws
IGludCBfX29wdG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqX19yZXN0cmljdCBf
X29wdHZhbCwKICAgICAgICAgICAgICAgICAgICAgICBzb2NrbGVuX3QgKl9fcmVzdHJpY3QgX19v
cHRsZW4pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBzZXRzb2Nrb3B0IChpbnQgX19mZCwgaW50
IF9fbGV2ZWwsIGludCBfX29wdG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2
b2lkICpfX29wdHZhbCwgc29ja2xlbl90IF9fb3B0bGVuKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4g
aW50IGxpc3RlbiAoaW50IF9fZmQsIGludCBfX24pIHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50
IGFjY2VwdCAoaW50IF9fZmQsIHN0cnVjdCBzb2NrYWRkciAqX19yZXN0cmljdCBfX2FkZHIsCiAg
ICAgICAgICAgICAgICAgICBzb2NrbGVuX3QgKl9fcmVzdHJpY3QgX19hZGRyX2xlbikKICAgICB0
aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQgc2h1dGRvd24gKGludCBfX2ZkLCBpbnQgX19ob3cp
IHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBzb2NrYXRtYXJrIChpbnQgX19mZCkgdGhyb3cgKCk7
CgoKCgoKCgpleHRlcm4gaW50IGlzZmR0eXBlIChpbnQgX19mZCwgaW50IF9fZmR0eXBlKSB0aHJv
dyAoKTsKCgp9CiMgNjYgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3pp
bGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3ByaW5ldC5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL25ldGlu
ZXQvaW4uaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDMKIyAxICIvdXNy
L2luY2x1ZGUvc3RkaW50LmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUvc3RkaW50LmgiIDMKIyAx
ICIvdXNyL2luY2x1ZGUvYml0cy93b3Jkc2l6ZS5oIiAxIDMKIyAyOSAiL3Vzci9pbmNsdWRlL3N0
ZGludC5oIiAyIDMKIyA0OSAiL3Vzci9pbmNsdWRlL3N0ZGludC5oIiAzCnR5cGVkZWYgdW5zaWdu
ZWQgY2hhciB1aW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1aW50MTZfdDsKCnR5
cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMl90OwoKCgoKCl9fZXh0ZW5zaW9uX18KdHlwZWRlZiB1
bnNpZ25lZCBsb25nIGxvbmcgaW50IHVpbnQ2NF90OwoKCgoKCgp0eXBlZGVmIHNpZ25lZCBjaGFy
IGludF9sZWFzdDhfdDsKdHlwZWRlZiBzaG9ydCBpbnQgaW50X2xlYXN0MTZfdDsKdHlwZWRlZiBp
bnQgaW50X2xlYXN0MzJfdDsKCgoKX19leHRlbnNpb25fXwp0eXBlZGVmIGxvbmcgbG9uZyBpbnQg
aW50X2xlYXN0NjRfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnRfbGVhc3Q4X3Q7CnR5
cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVpbnRfbGVhc3QxNl90Owp0eXBlZGVmIHVuc2lnbmVk
IGludCB1aW50X2xlYXN0MzJfdDsKCgoKX19leHRlbnNpb25fXwp0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgbG9uZyBpbnQgdWludF9sZWFzdDY0X3Q7CgoKCgoKCnR5cGVkZWYgc2lnbmVkIGNoYXIgaW50
X2Zhc3Q4X3Q7CgoKCgoKdHlwZWRlZiBpbnQgaW50X2Zhc3QxNl90Owp0eXBlZGVmIGludCBpbnRf
ZmFzdDMyX3Q7Cl9fZXh0ZW5zaW9uX18KdHlwZWRlZiBsb25nIGxvbmcgaW50IGludF9mYXN0NjRf
dDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnRfZmFzdDhfdDsKCgoKCgp0eXBlZGVmIHVu
c2lnbmVkIGludCB1aW50X2Zhc3QxNl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50X2Zhc3Qz
Ml90OwpfX2V4dGVuc2lvbl9fCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCB1aW50X2Zh
c3Q2NF90OwojIDEyNiAiL3Vzci9pbmNsdWRlL3N0ZGludC5oIiAzCnR5cGVkZWYgaW50IGludHB0
cl90OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnRwdHJfdDsKIyAxMzggIi91c3IvaW5jbHVk
ZS9zdGRpbnQuaCIgMwpfX2V4dGVuc2lvbl9fCnR5cGVkZWYgbG9uZyBsb25nIGludCBpbnRtYXhf
dDsKX19leHRlbnNpb25fXwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgdWludG1heF90
OwojIDI0ICIvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAyIDMKCgoKZXh0ZXJuICJDIiB7CgoK
ZW51bQogIHsKICAgIElQUFJPVE9fSVAgPSAwLAoKICAgIElQUFJPVE9fSE9QT1BUUyA9IDAsCgog
ICAgSVBQUk9UT19JQ01QID0gMSwKCiAgICBJUFBST1RPX0lHTVAgPSAyLAoKICAgIElQUFJPVE9f
SVBJUCA9IDQsCgogICAgSVBQUk9UT19UQ1AgPSA2LAoKICAgIElQUFJPVE9fRUdQID0gOCwKCiAg
ICBJUFBST1RPX1BVUCA9IDEyLAoKICAgIElQUFJPVE9fVURQID0gMTcsCgogICAgSVBQUk9UT19J
RFAgPSAyMiwKCiAgICBJUFBST1RPX1RQID0gMjksCgogICAgSVBQUk9UT19JUFY2ID0gNDEsCgog
ICAgSVBQUk9UT19ST1VUSU5HID0gNDMsCgogICAgSVBQUk9UT19GUkFHTUVOVCA9IDQ0LAoKICAg
IElQUFJPVE9fUlNWUCA9IDQ2LAoKICAgIElQUFJPVE9fR1JFID0gNDcsCgogICAgSVBQUk9UT19F
U1AgPSA1MCwKCiAgICBJUFBST1RPX0FIID0gNTEsCgogICAgSVBQUk9UT19JQ01QVjYgPSA1OCwK
CiAgICBJUFBST1RPX05PTkUgPSA1OSwKCiAgICBJUFBST1RPX0RTVE9QVFMgPSA2MCwKCiAgICBJ
UFBST1RPX01UUCA9IDkyLAoKICAgIElQUFJPVE9fRU5DQVAgPSA5OCwKCiAgICBJUFBST1RPX1BJ
TSA9IDEwMywKCiAgICBJUFBST1RPX0NPTVAgPSAxMDgsCgogICAgSVBQUk9UT19SQVcgPSAyNTUs
CgogICAgSVBQUk9UT19NQVgKICB9OwoKCgp0eXBlZGVmIHVpbnQxNl90IGluX3BvcnRfdDsKCgpl
bnVtCiAgewogICAgSVBQT1JUX0VDSE8gPSA3LAogICAgSVBQT1JUX0RJU0NBUkQgPSA5LAogICAg
SVBQT1JUX1NZU1RBVCA9IDExLAogICAgSVBQT1JUX0RBWVRJTUUgPSAxMywKICAgIElQUE9SVF9O
RVRTVEFUID0gMTUsCiAgICBJUFBPUlRfRlRQID0gMjEsCiAgICBJUFBPUlRfVEVMTkVUID0gMjMs
CiAgICBJUFBPUlRfU01UUCA9IDI1LAogICAgSVBQT1JUX1RJTUVTRVJWRVIgPSAzNywKICAgIElQ
UE9SVF9OQU1FU0VSVkVSID0gNDIsCiAgICBJUFBPUlRfV0hPSVMgPSA0MywKICAgIElQUE9SVF9N
VFAgPSA1NywKCiAgICBJUFBPUlRfVEZUUCA9IDY5LAogICAgSVBQT1JUX1JKRSA9IDc3LAogICAg
SVBQT1JUX0ZJTkdFUiA9IDc5LAogICAgSVBQT1JUX1RUWUxJTksgPSA4NywKICAgIElQUE9SVF9T
VVBEVVAgPSA5NSwKCgogICAgSVBQT1JUX0VYRUNTRVJWRVIgPSA1MTIsCiAgICBJUFBPUlRfTE9H
SU5TRVJWRVIgPSA1MTMsCiAgICBJUFBPUlRfQ01EU0VSVkVSID0gNTE0LAogICAgSVBQT1JUX0VG
U1NFUlZFUiA9IDUyMCwKCgogICAgSVBQT1JUX0JJRkZVRFAgPSA1MTIsCiAgICBJUFBPUlRfV0hP
U0VSVkVSID0gNTEzLAogICAgSVBQT1JUX1JPVVRFU0VSVkVSID0gNTIwLAoKCiAgICBJUFBPUlRf
UkVTRVJWRUQgPSAxMDI0LAoKCiAgICBJUFBPUlRfVVNFUlJFU0VSVkVEID0gNTAwMAogIH07CgoK
CnR5cGVkZWYgdWludDMyX3QgaW5fYWRkcl90OwpzdHJ1Y3QgaW5fYWRkcgogIHsKICAgIGluX2Fk
ZHJfdCBzX2FkZHI7CiAgfTsKIyAxOTAgIi91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDMKc3Ry
dWN0IGluNl9hZGRyCiAgewogICAgdW5pb24KICAgICAgewogICAgICAgIHVpbnQ4X3QgdTZfYWRk
cjhbMTZdOwogICAgICAgIHVpbnQxNl90IHU2X2FkZHIxNls4XTsKICAgICAgICB1aW50MzJfdCB1
Nl9hZGRyMzJbNF07CiAgICAgIH0gaW42X3U7CgoKCiAgfTsKCmV4dGVybiBjb25zdCBzdHJ1Y3Qg
aW42X2FkZHIgaW42YWRkcl9hbnk7CmV4dGVybiBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgaW42YWRk
cl9sb29wYmFjazsKIyAyMTYgIi91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDMKc3RydWN0IHNv
Y2thZGRyX2luCiAgewogICAgc2FfZmFtaWx5X3Qgc2luX2ZhbWlseTsKICAgIGluX3BvcnRfdCBz
aW5fcG9ydDsKICAgIHN0cnVjdCBpbl9hZGRyIHNpbl9hZGRyOwoKCiAgICB1bnNpZ25lZCBjaGFy
IHNpbl96ZXJvW3NpemVvZiAoc3RydWN0IHNvY2thZGRyKSAtCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChzaXplb2YgKHVuc2lnbmVkIHNob3J0IGludCkpIC0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZW9mIChpbl9wb3J0X3QpIC0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZW9mIChzdHJ1Y3QgaW5fYWRkcildOwogIH07CgoKc3RydWN0IHNvY2thZGRyX2luNgogIHsK
ICAgIHNhX2ZhbWlseV90IHNpbjZfZmFtaWx5OwogICAgaW5fcG9ydF90IHNpbjZfcG9ydDsKICAg
IHVpbnQzMl90IHNpbjZfZmxvd2luZm87CiAgICBzdHJ1Y3QgaW42X2FkZHIgc2luNl9hZGRyOwog
ICAgdWludDMyX3Qgc2luNl9zY29wZV9pZDsKICB9OwoKCnN0cnVjdCBpcHY2X21yZXEKICB7Cgog
ICAgc3RydWN0IGluNl9hZGRyIGlwdjZtcl9tdWx0aWFkZHI7CgoKICAgIHVuc2lnbmVkIGludCBp
cHY2bXJfaW50ZXJmYWNlOwogIH07CgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9pbi5oIiAxIDMK
IyA2NiAiL3Vzci9pbmNsdWRlL2JpdHMvaW4uaCIgMwpzdHJ1Y3QgaXBfb3B0cwogIHsKICAgIHN0
cnVjdCBpbl9hZGRyIGlwX2RzdDsKICAgIGNoYXIgaXBfb3B0c1s0MF07CiAgfTsKCgpzdHJ1Y3Qg
aXBfbXJlcQogIHsKICAgIHN0cnVjdCBpbl9hZGRyIGltcl9tdWx0aWFkZHI7CiAgICBzdHJ1Y3Qg
aW5fYWRkciBpbXJfaW50ZXJmYWNlOwogIH07CgoKc3RydWN0IGlwX21yZXFuCiAgewogICAgc3Ry
dWN0IGluX2FkZHIgaW1yX211bHRpYWRkcjsKICAgIHN0cnVjdCBpbl9hZGRyIGltcl9hZGRyZXNz
OwogICAgaW50IGltcl9pZmluZGV4OwogIH07CgoKc3RydWN0IGluX3BrdGluZm8KICB7CiAgICBp
bnQgaXBpX2lmaW5kZXg7CiAgICBzdHJ1Y3QgaW5fYWRkciBpcGlfc3BlY19kc3Q7CiAgICBzdHJ1
Y3QgaW5fYWRkciBpcGlfYWRkcjsKICB9OwojIDI1MSAiL3Vzci9pbmNsdWRlL25ldGluZXQvaW4u
aCIgMiAzCiMgMjU5ICIvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAzCmV4dGVybiB1aW50MzJf
dCBudG9obCAodWludDMyX3QgX19uZXRsb25nKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CmV4dGVybiB1aW50MTZfdCBudG9ocyAodWludDE2X3QgX19uZXRzaG9ydCkKICAg
ICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiB1aW50MzJfdCBo
dG9ubCAodWludDMyX3QgX19ob3N0bG9uZykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CmV4dGVybiB1aW50MTZfdCBodG9ucyAodWludDE2X3QgX19ob3N0c2hvcnQp
CiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKIyAxICIvdXNy
L2luY2x1ZGUvYml0cy9ieXRlc3dhcC5oIiAxIDMKIyAyNzEgIi91c3IvaW5jbHVkZS9uZXRpbmV0
L2luLmgiIDIgMwojIDMzMyAiL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaCIgMwpleHRlcm4gaW50
IGJpbmRyZXN2cG9ydCAoaW50IF9fc29ja2ZkLCBzdHJ1Y3Qgc29ja2FkZHJfaW4gKl9fc29ja19p
bikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBiaW5kcmVzdnBvcnQ2IChpbnQgX19zb2NrZmQsIHN0
cnVjdCBzb2NrYWRkcl9pbjYgKl9fc29ja19pbikKICAgICB0aHJvdyAoKTsKIyAzNjEgIi91c3Iv
aW5jbHVkZS9uZXRpbmV0L2luLmgiIDMKc3RydWN0IGluNl9wa3RpbmZvCiAgewogICAgc3RydWN0
IGluNl9hZGRyIGlwaTZfYWRkcjsKICAgIHVuc2lnbmVkIGludCBpcGk2X2lmaW5kZXg7CiAgfTsK
Cn0KIyA2NyAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlz
dC9pbmNsdWRlL25zcHIvcHJpbmV0LmgiIDIKIyA4MSAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxh
LTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpbmV0LmgiCiMgMSAiL3Vz
ci9pbmNsdWRlL2FycGEvaW5ldC5oIiAxIDMKIyAzMSAiL3Vzci9pbmNsdWRlL2FycGEvaW5ldC5o
IiAzCmV4dGVybiAiQyIgewoKCgpleHRlcm4gaW5fYWRkcl90IGluZXRfYWRkciAoX19jb25zdCBj
aGFyICpfX2NwKSB0aHJvdyAoKTsKCgpleHRlcm4gaW5fYWRkcl90IGluZXRfbG5hb2YgKHN0cnVj
dCBpbl9hZGRyIF9faW4pIHRocm93ICgpOwoKCgpleHRlcm4gc3RydWN0IGluX2FkZHIgaW5ldF9t
YWtlYWRkciAoaW5fYWRkcl90IF9fbmV0LCBpbl9hZGRyX3QgX19ob3N0KQogICAgIHRocm93ICgp
OwoKCmV4dGVybiBpbl9hZGRyX3QgaW5ldF9uZXRvZiAoc3RydWN0IGluX2FkZHIgX19pbikgdGhy
b3cgKCk7CgoKCmV4dGVybiBpbl9hZGRyX3QgaW5ldF9uZXR3b3JrIChfX2NvbnN0IGNoYXIgKl9f
Y3ApIHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqaW5ldF9udG9hIChzdHJ1Y3QgaW5fYWRkciBf
X2luKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgaW5ldF9wdG9uIChpbnQgX19hZiwgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fY3AsCiAgICAgICAgICAgICAgICAgICAgICB2b2lkICpfX3Jl
c3RyaWN0IF9fYnVmKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBfX2NvbnN0IGNoYXIgKmluZXRfbnRv
cCAoaW50IF9fYWYsIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX2NwLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNvY2tsZW5fdCBfX2xl
bikKICAgICB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGluX2FkZHJfdCBpbmV0X2F0b24gKF9fY29u
c3QgY2hhciAqX19jcCwgc3RydWN0IGluX2FkZHIgKl9faW5wKSB0aHJvdyAoKTsKCgoKZXh0ZXJu
IGNoYXIgKmluZXRfbmV0YSAoaW5fYWRkcl90IF9fbmV0LCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9f
bGVuKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFyICppbmV0X25ldF9udG9wIChpbnQgX19hZiwg
X19jb25zdCB2b2lkICpfX2NwLCBpbnQgX19iaXRzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqX19idWYsIHNpemVfdCBfX2xlbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IGlu
ZXRfbmV0X3B0b24gKGludCBfX2FmLCBfX2NvbnN0IGNoYXIgKl9fY3AsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCAqX19idWYsIHNpemVfdCBfX2xlbikgdGhyb3cgKCk7CgoKCgpleHRl
cm4gdW5zaWduZWQgaW50IGluZXRfbnNhcF9hZGRyIChfX2NvbnN0IGNoYXIgKl9fY3AsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKl9fYnVmLCBpbnQg
X19sZW4pIHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqaW5ldF9uc2FwX250b2EgKGludCBfX2xl
biwgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX2NwLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYXIgKl9fYnVmKSB0aHJvdyAoKTsKCgp9CiMgODIgIi92YXIvdG1wL3BvcnRhZ2UvbW96
aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3ByaW5ldC5oIiAyCgoj
IDEgIi91c3IvaW5jbHVkZS9uZXRkYi5oIiAxIDMKIyAzMyAiL3Vzci9pbmNsdWRlL25ldGRiLmgi
IDMKIyAxICIvdXNyL2luY2x1ZGUvcnBjL25ldGRiLmgiIDEgMwojIDQyICIvdXNyL2luY2x1ZGUv
cnBjL25ldGRiLmgiIDMKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMu
Mi4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDQzICIvdXNyL2luY2x1ZGUvcnBjL25ldGRiLmgi
IDIgMwoKZXh0ZXJuICJDIiB7CgpzdHJ1Y3QgcnBjZW50CnsKICBjaGFyICpyX25hbWU7CiAgY2hh
ciAqKnJfYWxpYXNlczsKICBpbnQgcl9udW1iZXI7Cn07CgpleHRlcm4gdm9pZCBzZXRycGNlbnQg
KGludCBfX3N0YXlvcGVuKSB0aHJvdyAoKTsKZXh0ZXJuIHZvaWQgZW5kcnBjZW50ICh2b2lkKSB0
aHJvdyAoKTsKZXh0ZXJuIHN0cnVjdCBycGNlbnQgKmdldHJwY2J5bmFtZSAoX19jb25zdCBjaGFy
ICpfX25hbWUpIHRocm93ICgpOwpleHRlcm4gc3RydWN0IHJwY2VudCAqZ2V0cnBjYnludW1iZXIg
KGludCBfX251bWJlcikgdGhyb3cgKCk7CmV4dGVybiBzdHJ1Y3QgcnBjZW50ICpnZXRycGNlbnQg
KHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgZ2V0cnBjYnluYW1lX3IgKF9fY29uc3QgY2hh
ciAqX19uYW1lLCBzdHJ1Y3QgcnBjZW50ICpfX3Jlc3VsdF9idWYsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKl9fYnVmZmVyLCBzaXplX3QgX19idWZsZW4sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBycGNlbnQgKipfX3Jlc3VsdCkgdGhyb3cgKCk7CgpleHRlcm4g
aW50IGdldHJwY2J5bnVtYmVyX3IgKGludCBfX251bWJlciwgc3RydWN0IHJwY2VudCAqX19yZXN1
bHRfYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fYnVmZmVyLCBzaXpl
X3QgX19idWZsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJwY2VudCAq
Kl9fcmVzdWx0KSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgZ2V0cnBjZW50X3IgKHN0cnVjdCBycGNl
bnQgKl9fcmVzdWx0X2J1ZiwgY2hhciAqX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBfX2J1Zmxlbiwgc3RydWN0IHJwY2VudCAqKl9fcmVzdWx0KSB0aHJvdyAoKTsKCgp9
CiMgMzQgIi91c3IvaW5jbHVkZS9uZXRkYi5oIiAyIDMKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2Jp
dHMvc2lnaW5mby5oIiAxIDMKIyAyNSAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnaW5mby5oIiAzCiMg
MSAiL3Vzci9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9i
aXRzL3NpZ2luZm8uaCIgMiAzCgoKCgoKCgp0eXBlZGVmIHVuaW9uIHNpZ3ZhbAogIHsKICAgIGlu
dCBzaXZhbF9pbnQ7CiAgICB2b2lkICpzaXZhbF9wdHI7CiAgfSBzaWd2YWxfdDsKIyAyNzEgIi91
c3IvaW5jbHVkZS9iaXRzL3NpZ2luZm8uaCIgMwpzdHJ1Y3QgX19wdGhyZWFkX2F0dHJfczsKCnR5
cGVkZWYgc3RydWN0IHNpZ2V2ZW50CiAgewogICAgc2lndmFsX3Qgc2lnZXZfdmFsdWU7CiAgICBp
bnQgc2lnZXZfc2lnbm87CiAgICBpbnQgc2lnZXZfbm90aWZ5OwoKICAgIHVuaW9uCiAgICAgIHsK
ICAgICAgICBpbnQgX3BhZFsoKDY0IC8gc2l6ZW9mIChpbnQpKSAtIDMpXTsKCiAgICAgICAgc3Ry
dWN0CiAgICAgICAgICB7CiAgICAgICAgICAgIHZvaWQgKCpfZnVuY3Rpb24pIChzaWd2YWxfdCk7
CiAgICAgICAgICAgIHN0cnVjdCBfX3B0aHJlYWRfYXR0cl9zICpfYXR0cmlidXRlOwogICAgICAg
ICAgfSBfc2lnZXZfdGhyZWFkOwogICAgICB9IF9zaWdldl91bjsKICB9IHNpZ2V2ZW50X3Q7CgoK
CgoKCmVudW0KewogIFNJR0VWX1NJR05BTCA9IDAsCgogIFNJR0VWX05PTkUsCgogIFNJR0VWX1RI
UkVBRAoKfTsKIyAzOSAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1
ZGUvdGltZS5oIiAxIDMKIyA0MSAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDIgMwoKCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvbmV0ZGIuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9iaXRzL25ldGRi
LmgiIDMKc3RydWN0IG5ldGVudAp7CiAgY2hhciAqbl9uYW1lOwogIGNoYXIgKipuX2FsaWFzZXM7
CiAgaW50IG5fYWRkcnR5cGU7CiAgdWludDMyX3Qgbl9uZXQ7Cn07CiMgNDQgIi91c3IvaW5jbHVk
ZS9uZXRkYi5oIiAyIDMKIyA1NCAiL3Vzci9pbmNsdWRlL25ldGRiLmgiIDMKZXh0ZXJuICJDIiB7
CgoKCgoKCmV4dGVybiBpbnQgKl9faF9lcnJub19sb2NhdGlvbiAodm9pZCkgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwojIDg4ICIvdXNyL2luY2x1ZGUvbmV0ZGIuaCIgMwpl
eHRlcm4gdm9pZCBoZXJyb3IgKF9fY29uc3QgY2hhciAqX19zdHIpIHRocm93ICgpOwoKCmV4dGVy
biBfX2NvbnN0IGNoYXIgKmhzdHJlcnJvciAoaW50IF9fZXJyX251bSkgdGhyb3cgKCk7CgoKCgpz
dHJ1Y3QgaG9zdGVudAp7CiAgY2hhciAqaF9uYW1lOwogIGNoYXIgKipoX2FsaWFzZXM7CiAgaW50
IGhfYWRkcnR5cGU7CiAgaW50IGhfbGVuZ3RoOwogIGNoYXIgKipoX2FkZHJfbGlzdDsKCn07CgoK
CmV4dGVybiB2b2lkIHNldGhvc3RlbnQgKGludCBfX3N0YXlfb3BlbikgdGhyb3cgKCk7CgoKZXh0
ZXJuIHZvaWQgZW5kaG9zdGVudCAodm9pZCkgdGhyb3cgKCk7CgoKCmV4dGVybiBzdHJ1Y3QgaG9z
dGVudCAqZ2V0aG9zdGVudCAodm9pZCkgdGhyb3cgKCk7CgoKCmV4dGVybiBzdHJ1Y3QgaG9zdGVu
dCAqZ2V0aG9zdGJ5YWRkciAoX19jb25zdCB2b2lkICpfX2FkZHIsIF9fc29ja2xlbl90IF9fbGVu
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX3R5cGUpIHRocm93
ICgpOwoKCmV4dGVybiBzdHJ1Y3QgaG9zdGVudCAqZ2V0aG9zdGJ5bmFtZSAoX19jb25zdCBjaGFy
ICpfX25hbWUpIHRocm93ICgpOwoKCgoKCmV4dGVybiBzdHJ1Y3QgaG9zdGVudCAqZ2V0aG9zdGJ5
bmFtZTIgKF9fY29uc3QgY2hhciAqX19uYW1lLCBpbnQgX19hZikgdGhyb3cgKCk7CgoKCgoKCmV4
dGVybiBpbnQgZ2V0aG9zdGVudF9yIChzdHJ1Y3QgaG9zdGVudCAqX19yZXN0cmljdCBfX3Jlc3Vs
dF9idWYsCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBz
aXplX3QgX19idWZsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaG9zdGVudCAq
Kl9fcmVzdHJpY3QgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVz
dHJpY3QgX19oX2Vycm5vcCkgdGhyb3cgKCk7CgpleHRlcm4gaW50IGdldGhvc3RieWFkZHJfciAo
X19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fYWRkciwgX19zb2NrbGVuX3QgX19sZW4sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgX190eXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IGhvc3RlbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fYnVmbGVu
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGhvc3RlbnQgKipfX3Jlc3RyaWN0
IF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9f
aF9lcnJub3ApIHRocm93ICgpOwoKZXh0ZXJuIGludCBnZXRob3N0YnluYW1lX3IgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3QgaG9zdGVudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaG9zdGVudCAqKl9fcmVzdHJpY3QgX19yZXN1bHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19oX2Vycm5vcCkg
dGhyb3cgKCk7CgpleHRlcm4gaW50IGdldGhvc3RieW5hbWUyX3IgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25hbWUsIGludCBfX2FmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBob3N0ZW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0X2J1ZiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGhvc3RlbnQgKipfX3Jlc3RyaWN0IF9fcmVz
dWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX2hfZXJy
bm9wKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9pZCBzZXRuZXRlbnQgKGludCBfX3N0YXlfb3Bl
bikgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgZW5kbmV0ZW50ICh2b2lkKSB0aHJvdyAoKTsKCgoK
ZXh0ZXJuIHN0cnVjdCBuZXRlbnQgKmdldG5ldGVudCAodm9pZCkgdGhyb3cgKCk7CgoKCmV4dGVy
biBzdHJ1Y3QgbmV0ZW50ICpnZXRuZXRieWFkZHIgKHVpbnQzMl90IF9fbmV0LCBpbnQgX190eXBl
KQogICAgIHRocm93ICgpOwoKCmV4dGVybiBzdHJ1Y3QgbmV0ZW50ICpnZXRuZXRieW5hbWUgKF9f
Y29uc3QgY2hhciAqX19uYW1lKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQgZ2V0bmV0ZW50
X3IgKHN0cnVjdCBuZXRlbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAogICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCiAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuZXRlbnQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0LAog
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19oX2Vycm5vcCkgdGhyb3cg
KCk7CgpleHRlcm4gaW50IGdldG5ldGJ5YWRkcl9yICh1aW50MzJfdCBfX25ldCwgaW50IF9fdHlw
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5ldGVudCAqX19yZXN0cmljdCBf
X3Jlc3VsdF9idWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3Qg
X19idWYsIHNpemVfdCBfX2J1ZmxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IG5ldGVudCAqKl9fcmVzdHJpY3QgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCAqX19yZXN0cmljdCBfX2hfZXJybm9wKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgZ2V0bmV0
YnluYW1lX3IgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBuZXRlbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19i
dWZsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuZXRlbnQgKipfX3Jlc3Ry
aWN0IF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3Qg
X19oX2Vycm5vcCkgdGhyb3cgKCk7CgoKCgpzdHJ1Y3Qgc2VydmVudAp7CiAgY2hhciAqc19uYW1l
OwogIGNoYXIgKipzX2FsaWFzZXM7CiAgaW50IHNfcG9ydDsKICBjaGFyICpzX3Byb3RvOwp9OwoK
CgpleHRlcm4gdm9pZCBzZXRzZXJ2ZW50IChpbnQgX19zdGF5X29wZW4pIHRocm93ICgpOwoKCmV4
dGVybiB2b2lkIGVuZHNlcnZlbnQgKHZvaWQpIHRocm93ICgpOwoKCgpleHRlcm4gc3RydWN0IHNl
cnZlbnQgKmdldHNlcnZlbnQgKHZvaWQpIHRocm93ICgpOwoKCgpleHRlcm4gc3RydWN0IHNlcnZl
bnQgKmdldHNlcnZieW5hbWUgKF9fY29uc3QgY2hhciAqX19uYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19wcm90bykgdGhyb3cgKCk7CgoK
CmV4dGVybiBzdHJ1Y3Qgc2VydmVudCAqZ2V0c2VydmJ5cG9ydCAoaW50IF9fcG9ydCwgX19jb25z
dCBjaGFyICpfX3Byb3RvKQogICAgIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgZ2V0c2VydmVu
dF9yIChzdHJ1Y3Qgc2VydmVudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCiAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VydmVudCAqKl9fcmVzdHJpY3QgX19yZXN1
bHQpIHRocm93ICgpOwoKZXh0ZXJuIGludCBnZXRzZXJ2YnluYW1lX3IgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19wcm90bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBzZXJ2ZW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0X2J1ZiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2J1ZmxlbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZXJ2ZW50ICoqX19yZXN0cmljdCBfX3Jlc3VsdCkg
dGhyb3cgKCk7CgpleHRlcm4gaW50IGdldHNlcnZieXBvcnRfciAoaW50IF9fcG9ydCwgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fcHJvdG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3Qgc2VydmVudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VydmVudCAqKl9fcmVzdHJpY3QgX19yZXN1
bHQpIHRocm93ICgpOwoKCgoKc3RydWN0IHByb3RvZW50CnsKICBjaGFyICpwX25hbWU7CiAgY2hh
ciAqKnBfYWxpYXNlczsKICBpbnQgcF9wcm90bzsKfTsKCgoKZXh0ZXJuIHZvaWQgc2V0cHJvdG9l
bnQgKGludCBfX3N0YXlfb3BlbikgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgZW5kcHJvdG9lbnQg
KHZvaWQpIHRocm93ICgpOwoKCgpleHRlcm4gc3RydWN0IHByb3RvZW50ICpnZXRwcm90b2VudCAo
dm9pZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIHN0cnVjdCBwcm90b2VudCAqZ2V0cHJvdG9ieW5hbWUg
KF9fY29uc3QgY2hhciAqX19uYW1lKSB0aHJvdyAoKTsKCgpleHRlcm4gc3RydWN0IHByb3RvZW50
ICpnZXRwcm90b2J5bnVtYmVyIChpbnQgX19wcm90bykgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGlu
dCBnZXRwcm90b2VudF9yIChzdHJ1Y3QgcHJvdG9lbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVm
LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVf
dCBfX2J1ZmxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHJvdG9lbnQgKipf
X3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgZ2V0cHJvdG9ieW5hbWVf
ciAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3QgcHJvdG9lbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2J1
ZmxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHJvdG9lbnQgKipfX3Jl
c3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgZ2V0cHJvdG9ieW51bWJlcl9y
IChpbnQgX19wcm90bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwcm90
b2VudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHJvdG9lbnQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0
KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgc2V0bmV0Z3JlbnQgKF9fY29uc3QgY2hhciAqX19u
ZXRncm91cCkgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgZW5kbmV0Z3JlbnQgKHZvaWQpIHRocm93
ICgpOwoKCgpleHRlcm4gaW50IGdldG5ldGdyZW50IChjaGFyICoqX19yZXN0cmljdCBfX2hvc3Rw
LAogICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX3VzZXJwLAogICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2RvbWFpbnApIHRocm93ICgp
OwoKCgpleHRlcm4gaW50IGlubmV0Z3IgKF9fY29uc3QgY2hhciAqX19uZXRncm91cCwgX19jb25z
dCBjaGFyICpfX2hvc3QsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3VzZXIs
IF9fY29uc3QgY2hhciAqZG9tYWluKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGdldG5ldGdyZW50
X3IgKGNoYXIgKipfX3Jlc3RyaWN0IF9faG9zdHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX191c2VycCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICoqX19yZXN0cmljdCBfX2RvbWFpbnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq
X19yZXN0cmljdCBfX2J1ZmZlciwgc2l6ZV90IF9fYnVmbGVuKSB0aHJvdyAoKTsKIyAzMzQgIi91
c3IvaW5jbHVkZS9uZXRkYi5oIiAzCmV4dGVybiBpbnQgcmNtZCAoY2hhciAqKl9fcmVzdHJpY3Qg
X19haG9zdCwgdW5zaWduZWQgc2hvcnQgaW50IF9fcnBvcnQsCiAgICAgICAgICAgICAgICAgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbG9jdXNlciwKICAgICAgICAgICAgICAgICBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19yZW11c2VyLAogICAgICAgICAgICAgICAgIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2NtZCwgaW50ICpfX3Jlc3RyaWN0IF9fZmQycCkKICAgICB0aHJvdyAo
KTsKCgoKZXh0ZXJuIGludCByY21kX2FmIChjaGFyICoqX19yZXN0cmljdCBfX2Fob3N0LCB1bnNp
Z25lZCBzaG9ydCBpbnQgX19ycG9ydCwKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19sb2N1c2VyLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX3JlbXVzZXIsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fY21kLCBpbnQgKl9fcmVzdHJpY3QgX19mZDJwLAogICAgICAgICAgICAgICAg
ICAgIHNhX2ZhbWlseV90IF9fYWYpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50IHJleGVjIChj
aGFyICoqX19yZXN0cmljdCBfX2Fob3N0LCBpbnQgX19ycG9ydCwKICAgICAgICAgICAgICAgICAg
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKICAgICAgICAgICAgICAgICAgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fcGFzcywKICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fY21kLCBpbnQgKl9fcmVzdHJpY3QgX19mZDJwKQogICAgIHRocm93ICgp
OwoKCgpleHRlcm4gaW50IHJleGVjX2FmIChjaGFyICoqX19yZXN0cmljdCBfX2Fob3N0LCBpbnQg
X19ycG9ydCwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bmFtZSwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcGFz
cywKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fY21kLCBp
bnQgKl9fcmVzdHJpY3QgX19mZDJwLAogICAgICAgICAgICAgICAgICAgICBzYV9mYW1pbHlfdCBf
X2FmKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgcnVzZXJvayAoX19jb25zdCBjaGFyICpfX3Jo
b3N0LCBpbnQgX19zdXNlciwKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVt
dXNlciwgX19jb25zdCBjaGFyICpfX2xvY3VzZXIpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHJ1
c2Vyb2tfYWYgKF9fY29uc3QgY2hhciAqX19yaG9zdCwgaW50IF9fc3VzZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3JlbXVzZXIsIF9fY29uc3QgY2hhciAqX19sb2N1
c2VyLAogICAgICAgICAgICAgICAgICAgICAgIHNhX2ZhbWlseV90IF9fYWYpIHRocm93ICgpOwoK
CgoKZXh0ZXJuIGludCBycmVzdnBvcnQgKGludCAqX19hbHBvcnQpIHRocm93ICgpOwoKCgpleHRl
cm4gaW50IHJyZXN2cG9ydF9hZiAoaW50ICpfX2FscG9ydCwgc2FfZmFtaWx5X3QgX19hZikgdGhy
b3cgKCk7CgoKCgoKCnN0cnVjdCBhZGRyaW5mbwp7CiAgaW50IGFpX2ZsYWdzOwogIGludCBhaV9m
YW1pbHk7CiAgaW50IGFpX3NvY2t0eXBlOwogIGludCBhaV9wcm90b2NvbDsKICBzb2NrbGVuX3Qg
YWlfYWRkcmxlbjsKICBzdHJ1Y3Qgc29ja2FkZHIgKmFpX2FkZHI7CiAgY2hhciAqYWlfY2Fub25u
YW1lOwogIHN0cnVjdCBhZGRyaW5mbyAqYWlfbmV4dDsKfTsKCgoKc3RydWN0IGdhaWNiCnsKICBj
b25zdCBjaGFyICphcl9uYW1lOwogIGNvbnN0IGNoYXIgKmFyX3NlcnZpY2U7CiAgY29uc3Qgc3Ry
dWN0IGFkZHJpbmZvICphcl9yZXF1ZXN0OwogIHN0cnVjdCBhZGRyaW5mbyAqYXJfcmVzdWx0OwoK
ICBpbnQgX19yZXR1cm47CiAgaW50IF9fdW51c2VkWzVdOwp9OwojIDQ1OSAiL3Vzci9pbmNsdWRl
L25ldGRiLmgiIDMKZXh0ZXJuIGludCBnZXRhZGRyaW5mbyAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fc2VydmljZSwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3QgYWRk
cmluZm8gKl9fcmVzdHJpY3QgX19yZXEsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBh
ZGRyaW5mbyAqKl9fcmVzdHJpY3QgX19wYWkpIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIGZyZWVh
ZGRyaW5mbyAoc3RydWN0IGFkZHJpbmZvICpfX2FpKSB0aHJvdyAoKTsKCgpleHRlcm4gX19jb25z
dCBjaGFyICpnYWlfc3RyZXJyb3IgKGludCBfX2Vjb2RlKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50
IGdldG5hbWVpbmZvIChfX2NvbnN0IHN0cnVjdCBzb2NrYWRkciAqX19yZXN0cmljdCBfX3NhLAog
ICAgICAgICAgICAgICAgICAgICAgICBzb2NrbGVuX3QgX19zYWxlbiwgY2hhciAqX19yZXN0cmlj
dCBfX2hvc3QsCiAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tsZW5fdCBfX2hvc3RsZW4sIGNo
YXIgKl9fcmVzdHJpY3QgX19zZXJ2LAogICAgICAgICAgICAgICAgICAgICAgICBzb2NrbGVuX3Qg
X19zZXJ2bGVuLCB1bnNpZ25lZCBpbnQgX19mbGFncykgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGlu
dCBnZXRhZGRyaW5mb19hIChpbnQgX19tb2RlLCBzdHJ1Y3QgZ2FpY2IgKl9fbGlzdFtdLAogICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBfX2VudCwgc3RydWN0IHNpZ2V2ZW50ICpfX3Jlc3Ry
aWN0IF9fc2lnKQogICAgIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBnYWlfc3VzcGVuZCAoX19j
b25zdCBzdHJ1Y3QgZ2FpY2IgKl9fY29uc3QgX19saXN0W10sIGludCBfX2VudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fdGltZW91dCkgdGhyb3cg
KCk7CgoKZXh0ZXJuIGludCBnYWlfZXJyb3IgKHN0cnVjdCBnYWljYiAqX19yZXEpIHRocm93ICgp
OwoKCmV4dGVybiBpbnQgZ2FpX2NhbmNlbCAoc3RydWN0IGdhaWNiICpfX2dhaWNicCkgdGhyb3cg
KCk7CgoKCn0KIyA4NCAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemls
bGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpbmV0LmgiIDIKIyA0OSAiL3Zhci90bXAvcG9ydGFnZS9t
b3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpby5oIiAyCgpl
eHRlcm4gIkMiIHsKCgp0eXBlZGVmIHN0cnVjdCBQUkRpciBQUkRpcjsKdHlwZWRlZiBzdHJ1Y3Qg
UFJEaXJFbnRyeSBQUkRpckVudHJ5OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgUFJGaWxlRGVzYyBQUkZp
bGVEZXNjOwp0eXBlZGVmIHN0cnVjdCBQUkZpbGVJbmZvIFBSRmlsZUluZm87CnR5cGVkZWYgc3Ry
dWN0IFBSRmlsZUluZm82NCBQUkZpbGVJbmZvNjQ7CnR5cGVkZWYgdW5pb24gUFJOZXRBZGRyIFBS
TmV0QWRkcjsKdHlwZWRlZiBzdHJ1Y3QgUFJJT01ldGhvZHMgUFJJT01ldGhvZHM7CnR5cGVkZWYg
c3RydWN0IFBSUG9sbERlc2MgUFJQb2xsRGVzYzsKdHlwZWRlZiBzdHJ1Y3QgUFJGaWxlUHJpdmF0
ZSBQUkZpbGVQcml2YXRlOwp0eXBlZGVmIHN0cnVjdCBQUlNlbmRGaWxlRGF0YSBQUlNlbmRGaWxl
RGF0YTsKIyA3OSAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEv
ZGlzdC9pbmNsdWRlL25zcHIvcHJpby5oIgp0eXBlZGVmIFBSSW50biBQUkRlc2NJZGVudGl0eTsK
CnN0cnVjdCBQUkZpbGVEZXNjIHsKICAgIGNvbnN0IFBSSU9NZXRob2RzICptZXRob2RzOwogICAg
UFJGaWxlUHJpdmF0ZSAqc2VjcmV0OwogICAgUFJGaWxlRGVzYyAqbG93ZXIsICpoaWdoZXI7CiAg
ICB2b2lkICggKmR0b3IpKFBSRmlsZURlc2MgKmZkKTsKCiAgICBQUkRlc2NJZGVudGl0eSBpZGVu
dGl0eTsKfTsKIyA5OSAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemls
bGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpby5oIgp0eXBlZGVmIGVudW0gUFJUcmFuc21pdEZpbGVG
bGFncyB7CiAgICBQUl9UUkFOU01JVEZJTEVfS0VFUF9PUEVOID0gMCwKCiAgICBQUl9UUkFOU01J
VEZJTEVfQ0xPU0VfU09DS0VUID0gMQoKfSBQUlRyYW5zbWl0RmlsZUZsYWdzOwojIDE1MiAiL3Zh
ci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25z
cHIvcHJpby5oIgpzdHJ1Y3QgUFJJUHY2QWRkciB7CiAgICAgICAgdW5pb24gewogICAgICAgICAg
ICAgICAgUFJVaW50OCBfUzZfdThbMTZdOwogICAgICAgICAgICAgICAgUFJVaW50MTYgX1M2X3Ux
Nls4XTsKICAgICAgICAgICAgICAgIFBSVWludDMyIF9TNl91MzJbNF07CiAgICAgICAgICAgICAg
ICBQUlVpbnQ2NCBfUzZfdTY0WzJdOwogICAgICAgIH0gX1M2X3VuOwp9OwoKCgoKCnR5cGVkZWYg
c3RydWN0IFBSSVB2NkFkZHIgUFJJUHY2QWRkcjsKCnVuaW9uIFBSTmV0QWRkciB7CiAgICBzdHJ1
Y3QgewogICAgICAgIFBSVWludDE2IGZhbWlseTsKCgoKICAgICAgICBjaGFyIGRhdGFbMTRdOwoK
ICAgIH0gcmF3OwogICAgc3RydWN0IHsKICAgICAgICBQUlVpbnQxNiBmYW1pbHk7CiAgICAgICAg
UFJVaW50MTYgcG9ydDsKICAgICAgICBQUlVpbnQzMiBpcDsKCgoKICAgICAgICBjaGFyIHBhZFs4
XTsKCiAgICB9IGluZXQ7CiAgICBzdHJ1Y3QgewogICAgICAgIFBSVWludDE2IGZhbWlseTsKICAg
ICAgICBQUlVpbnQxNiBwb3J0OwogICAgICAgIFBSVWludDMyIGZsb3dpbmZvOwogICAgICAgIFBS
SVB2NkFkZHIgaXA7CiAgICAgICAgUFJVaW50MzIgc2NvcGVfaWQ7CiAgICB9IGlwdjY7CgogICAg
c3RydWN0IHsKICAgICAgICBQUlVpbnQxNiBmYW1pbHk7CiAgICAgICAgY2hhciBwYXRoWzEwNF07
CiAgICB9IGxvY2FsOwoKfTsKIyAyMTAgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEv
d29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3ByaW8uaCIKdHlwZWRlZiBlbnVtIFBSU29j
a09wdGlvbgp7CiAgICBQUl9Tb2NrT3B0X05vbmJsb2NraW5nLAogICAgUFJfU29ja09wdF9MaW5n
ZXIsCiAgICBQUl9Tb2NrT3B0X1JldXNlYWRkciwKICAgIFBSX1NvY2tPcHRfS2VlcGFsaXZlLAog
ICAgUFJfU29ja09wdF9SZWN2QnVmZmVyU2l6ZSwKICAgIFBSX1NvY2tPcHRfU2VuZEJ1ZmZlclNp
emUsCgogICAgUFJfU29ja09wdF9JcFRpbWVUb0xpdmUsCiAgICBQUl9Tb2NrT3B0X0lwVHlwZU9m
U2VydmljZSwKCiAgICBQUl9Tb2NrT3B0X0FkZE1lbWJlciwKICAgIFBSX1NvY2tPcHRfRHJvcE1l
bWJlciwKICAgIFBSX1NvY2tPcHRfTWNhc3RJbnRlcmZhY2UsCiAgICBQUl9Tb2NrT3B0X01jYXN0
VGltZVRvTGl2ZSwKICAgIFBSX1NvY2tPcHRfTWNhc3RMb29wYmFjaywKCiAgICBQUl9Tb2NrT3B0
X05vRGVsYXksCiAgICBQUl9Tb2NrT3B0X01heFNlZ21lbnQsCiAgICBQUl9Tb2NrT3B0X0Jyb2Fk
Y2FzdCwKICAgIFBSX1NvY2tPcHRfTGFzdAp9IFBSU29ja09wdGlvbjsKCnR5cGVkZWYgc3RydWN0
IFBSTGluZ2VyIHsKICAgICAgICBQUkJvb2wgcG9sYXJpdHk7CiAgICAgICAgUFJJbnRlcnZhbFRp
bWUgbGluZ2VyOwp9IFBSTGluZ2VyOwoKdHlwZWRlZiBzdHJ1Y3QgUFJNY2FzdFJlcXVlc3Qgewog
ICAgICAgIFBSTmV0QWRkciBtY2FkZHI7CiAgICAgICAgUFJOZXRBZGRyIGlmYWRkcjsKfSBQUk1j
YXN0UmVxdWVzdDsKCnR5cGVkZWYgc3RydWN0IFBSU29ja2V0T3B0aW9uRGF0YQp7CiAgICBQUlNv
Y2tPcHRpb24gb3B0aW9uOwogICAgdW5pb24KICAgIHsKICAgICAgICBQUlVpbnRuIGlwX3R0bDsK
ICAgICAgICBQUlVpbnRuIG1jYXN0X3R0bDsKICAgICAgICBQUlVpbnRuIHRvczsKICAgICAgICBQ
UkJvb2wgbm9uX2Jsb2NraW5nOwogICAgICAgIFBSQm9vbCByZXVzZV9hZGRyOwogICAgICAgIFBS
Qm9vbCBrZWVwX2FsaXZlOwogICAgICAgIFBSQm9vbCBtY2FzdF9sb29wYmFjazsKICAgICAgICBQ
UkJvb2wgbm9fZGVsYXk7CiAgICAgICAgUFJCb29sIGJyb2FkY2FzdDsKICAgICAgICBQUlNpemUg
bWF4X3NlZ21lbnQ7CiAgICAgICAgUFJTaXplIHJlY3ZfYnVmZmVyX3NpemU7CiAgICAgICAgUFJT
aXplIHNlbmRfYnVmZmVyX3NpemU7CiAgICAgICAgUFJMaW5nZXIgbGluZ2VyOwogICAgICAgIFBS
TWNhc3RSZXF1ZXN0IGFkZF9tZW1iZXI7CiAgICAgICAgUFJNY2FzdFJlcXVlc3QgZHJvcF9tZW1i
ZXI7CiAgICAgICAgUFJOZXRBZGRyIG1jYXN0X2lmOwogICAgfSB2YWx1ZTsKfSBQUlNvY2tldE9w
dGlvbkRhdGE7CiMgMjc2ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96
aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCnR5cGVkZWYgc3RydWN0IFBSSU9WZWMgewog
ICAgY2hhciAqaW92X2Jhc2U7CiAgICBpbnQgaW92X2xlbjsKfSBQUklPVmVjOwoKCgoKCgp0eXBl
ZGVmIGVudW0gUFJEZXNjVHlwZQp7CiAgICBQUl9ERVNDX0ZJTEUgPSAxLAogICAgUFJfREVTQ19T
T0NLRVRfVENQID0gMiwKICAgIFBSX0RFU0NfU09DS0VUX1VEUCA9IDMsCiAgICBQUl9ERVNDX0xB
WUVSRUQgPSA0LAogICAgUFJfREVTQ19QSVBFID0gNQp9IFBSRGVzY1R5cGU7Cgp0eXBlZGVmIGVu
dW0gUFJTZWVrV2hlbmNlIHsKICAgIFBSX1NFRUtfU0VUID0gMCwKICAgIFBSX1NFRUtfQ1VSID0g
MSwKICAgIFBSX1NFRUtfRU5EID0gMgp9IFBSU2Vla1doZW5jZTsKCmV4dGVybiBQUkRlc2NUeXBl
IFBSX0dldERlc2NUeXBlKFBSRmlsZURlc2MgKmZpbGUpOwojIDMxOSAiL3Zhci90bXAvcG9ydGFn
ZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpby5oIgp0
eXBlZGVmIFBSU3RhdHVzICggKlBSQ2xvc2VGTikoUFJGaWxlRGVzYyAqZmQpOwp0eXBlZGVmIFBS
SW50MzIgKCAqUFJSZWFkRk4pKFBSRmlsZURlc2MgKmZkLCB2b2lkICpidWYsIFBSSW50MzIgYW1v
dW50KTsKdHlwZWRlZiBQUkludDMyICggKlBSV3JpdGVGTikoUFJGaWxlRGVzYyAqZmQsIGNvbnN0
IHZvaWQgKmJ1ZiwgUFJJbnQzMiBhbW91bnQpOwp0eXBlZGVmIFBSSW50MzIgKCAqUFJBdmFpbGFi
bGVGTikoUFJGaWxlRGVzYyAqZmQpOwp0eXBlZGVmIFBSSW50NjQgKCAqUFJBdmFpbGFibGU2NEZO
KShQUkZpbGVEZXNjICpmZCk7CnR5cGVkZWYgUFJTdGF0dXMgKCAqUFJGc3luY0ZOKShQUkZpbGVE
ZXNjICpmZCk7CnR5cGVkZWYgUFJPZmZzZXQzMiAoICpQUlNlZWtGTikoUFJGaWxlRGVzYyAqZmQs
IFBST2Zmc2V0MzIgb2Zmc2V0LCBQUlNlZWtXaGVuY2UgaG93KTsKdHlwZWRlZiBQUk9mZnNldDY0
ICggKlBSU2VlazY0Rk4pKFBSRmlsZURlc2MgKmZkLCBQUk9mZnNldDY0IG9mZnNldCwgUFJTZWVr
V2hlbmNlIGhvdyk7CnR5cGVkZWYgUFJTdGF0dXMgKCAqUFJGaWxlSW5mb0ZOKShQUkZpbGVEZXNj
ICpmZCwgUFJGaWxlSW5mbyAqaW5mbyk7CnR5cGVkZWYgUFJTdGF0dXMgKCAqUFJGaWxlSW5mbzY0
Rk4pKFBSRmlsZURlc2MgKmZkLCBQUkZpbGVJbmZvNjQgKmluZm8pOwp0eXBlZGVmIFBSSW50MzIg
KCAqUFJXcml0ZXZGTikoCiAgICBQUkZpbGVEZXNjICpmZCwgY29uc3QgUFJJT1ZlYyAqaW92LCBQ
UkludDMyIGlvdl9zaXplLAogICAgUFJJbnRlcnZhbFRpbWUgdGltZW91dCk7CnR5cGVkZWYgUFJT
dGF0dXMgKCAqUFJDb25uZWN0Rk4pKAogICAgUFJGaWxlRGVzYyAqZmQsIGNvbnN0IFBSTmV0QWRk
ciAqYWRkciwgUFJJbnRlcnZhbFRpbWUgdGltZW91dCk7CnR5cGVkZWYgUFJGaWxlRGVzYyogKCAq
UFJBY2NlcHRGTikgKAogICAgUFJGaWxlRGVzYyAqZmQsIFBSTmV0QWRkciAqYWRkciwgUFJJbnRl
cnZhbFRpbWUgdGltZW91dCk7CnR5cGVkZWYgUFJTdGF0dXMgKCAqUFJCaW5kRk4pKFBSRmlsZURl
c2MgKmZkLCBjb25zdCBQUk5ldEFkZHIgKmFkZHIpOwp0eXBlZGVmIFBSU3RhdHVzICggKlBSTGlz
dGVuRk4pKFBSRmlsZURlc2MgKmZkLCBQUkludG4gYmFja2xvZyk7CnR5cGVkZWYgUFJTdGF0dXMg
KCAqUFJTaHV0ZG93bkZOKShQUkZpbGVEZXNjICpmZCwgUFJJbnRuIGhvdyk7CnR5cGVkZWYgUFJJ
bnQzMiAoICpQUlJlY3ZGTikoCiAgICBQUkZpbGVEZXNjICpmZCwgdm9pZCAqYnVmLCBQUkludDMy
IGFtb3VudCwKICAgIFBSSW50biBmbGFncywgUFJJbnRlcnZhbFRpbWUgdGltZW91dCk7CnR5cGVk
ZWYgUFJJbnQzMiAoICpQUlNlbmRGTikgKAogICAgUFJGaWxlRGVzYyAqZmQsIGNvbnN0IHZvaWQg
KmJ1ZiwgUFJJbnQzMiBhbW91bnQsCiAgICBQUkludG4gZmxhZ3MsIFBSSW50ZXJ2YWxUaW1lIHRp
bWVvdXQpOwp0eXBlZGVmIFBSSW50MzIgKCAqUFJSZWN2ZnJvbUZOKSgKICAgIFBSRmlsZURlc2Mg
KmZkLCB2b2lkICpidWYsIFBSSW50MzIgYW1vdW50LAogICAgUFJJbnRuIGZsYWdzLCBQUk5ldEFk
ZHIgKmFkZHIsIFBSSW50ZXJ2YWxUaW1lIHRpbWVvdXQpOwp0eXBlZGVmIFBSSW50MzIgKCAqUFJT
ZW5kdG9GTikoCiAgICBQUkZpbGVEZXNjICpmZCwgY29uc3Qgdm9pZCAqYnVmLCBQUkludDMyIGFt
b3VudCwKICAgIFBSSW50biBmbGFncywgY29uc3QgUFJOZXRBZGRyICphZGRyLCBQUkludGVydmFs
VGltZSB0aW1lb3V0KTsKdHlwZWRlZiBQUkludDE2ICggKlBSUG9sbEZOKSgKICAgIFBSRmlsZURl
c2MgKmZkLCBQUkludDE2IGluX2ZsYWdzLCBQUkludDE2ICpvdXRfZmxhZ3MpOwp0eXBlZGVmIFBS
SW50MzIgKCAqUFJBY2NlcHRyZWFkRk4pKAogICAgUFJGaWxlRGVzYyAqc2QsIFBSRmlsZURlc2Mg
KipuZCwgUFJOZXRBZGRyICoqcmFkZHIsCiAgICB2b2lkICpidWYsIFBSSW50MzIgYW1vdW50LCBQ
UkludGVydmFsVGltZSB0KTsKdHlwZWRlZiBQUkludDMyICggKlBSVHJhbnNtaXRmaWxlRk4pKAog
ICAgIFBSRmlsZURlc2MgKnNkLCBQUkZpbGVEZXNjICpmZCwgY29uc3Qgdm9pZCAqaGVhZGVycywK
ICAgICBQUkludDMyIGhsZW4sIFBSVHJhbnNtaXRGaWxlRmxhZ3MgZmxhZ3MsIFBSSW50ZXJ2YWxU
aW1lIHQpOwp0eXBlZGVmIFBSU3RhdHVzICggKlBSR2V0c29ja25hbWVGTikoUFJGaWxlRGVzYyAq
ZmQsIFBSTmV0QWRkciAqYWRkcik7CnR5cGVkZWYgUFJTdGF0dXMgKCAqUFJHZXRwZWVybmFtZUZO
KShQUkZpbGVEZXNjICpmZCwgUFJOZXRBZGRyICphZGRyKTsKdHlwZWRlZiBQUlN0YXR1cyAoICpQ
UkdldHNvY2tldG9wdGlvbkZOKSgKICAgIFBSRmlsZURlc2MgKmZkLCBQUlNvY2tldE9wdGlvbkRh
dGEgKmRhdGEpOwp0eXBlZGVmIFBSU3RhdHVzICggKlBSU2V0c29ja2V0b3B0aW9uRk4pKAogICAg
UFJGaWxlRGVzYyAqZmQsIGNvbnN0IFBSU29ja2V0T3B0aW9uRGF0YSAqZGF0YSk7CnR5cGVkZWYg
UFJJbnQzMiAoICpQUlNlbmRmaWxlRk4pKAogICAgICAgIFBSRmlsZURlc2MgKm5ldHdvcmtTb2Nr
ZXQsIFBSU2VuZEZpbGVEYXRhICpzZW5kRGF0YSwKICAgICAgICBQUlRyYW5zbWl0RmlsZUZsYWdz
IGZsYWdzLCBQUkludGVydmFsVGltZSB0aW1lb3V0KTsKdHlwZWRlZiBQUlN0YXR1cyAoICpQUkNv
bm5lY3Rjb250aW51ZUZOKSgKICAgIFBSRmlsZURlc2MgKmZkLCBQUkludDE2IG91dF9mbGFncyk7
CnR5cGVkZWYgUFJJbnRuICggKlBSUmVzZXJ2ZWRGTikoUFJGaWxlRGVzYyAqZmQpOwoKc3RydWN0
IFBSSU9NZXRob2RzIHsKICAgIFBSRGVzY1R5cGUgZmlsZV90eXBlOwogICAgUFJDbG9zZUZOIGNs
b3NlOwogICAgUFJSZWFkRk4gcmVhZDsKICAgIFBSV3JpdGVGTiB3cml0ZTsKICAgIFBSQXZhaWxh
YmxlRk4gYXZhaWxhYmxlOwogICAgUFJBdmFpbGFibGU2NEZOIGF2YWlsYWJsZTY0OwogICAgUFJG
c3luY0ZOIGZzeW5jOwogICAgUFJTZWVrRk4gc2VlazsKICAgIFBSU2VlazY0Rk4gc2VlazY0Owog
ICAgUFJGaWxlSW5mb0ZOIGZpbGVJbmZvOwogICAgUFJGaWxlSW5mbzY0Rk4gZmlsZUluZm82NDsK
ICAgIFBSV3JpdGV2Rk4gd3JpdGV2OwogICAgUFJDb25uZWN0Rk4gY29ubmVjdDsKICAgIFBSQWNj
ZXB0Rk4gYWNjZXB0OwogICAgUFJCaW5kRk4gYmluZDsKICAgIFBSTGlzdGVuRk4gbGlzdGVuOwog
ICAgUFJTaHV0ZG93bkZOIHNodXRkb3duOwogICAgUFJSZWN2Rk4gcmVjdjsKICAgIFBSU2VuZEZO
IHNlbmQ7CiAgICBQUlJlY3Zmcm9tRk4gcmVjdmZyb207CiAgICBQUlNlbmR0b0ZOIHNlbmR0bzsK
ICAgIFBSUG9sbEZOIHBvbGw7CiAgICBQUkFjY2VwdHJlYWRGTiBhY2NlcHRyZWFkOwogICAgUFJU
cmFuc21pdGZpbGVGTiB0cmFuc21pdGZpbGU7CiAgICBQUkdldHNvY2tuYW1lRk4gZ2V0c29ja25h
bWU7CiAgICBQUkdldHBlZXJuYW1lRk4gZ2V0cGVlcm5hbWU7CiAgICBQUlJlc2VydmVkRk4gcmVz
ZXJ2ZWRfZm5fNjsKICAgIFBSUmVzZXJ2ZWRGTiByZXNlcnZlZF9mbl81OwogICAgUFJHZXRzb2Nr
ZXRvcHRpb25GTiBnZXRzb2NrZXRvcHRpb247CgogICAgUFJTZXRzb2NrZXRvcHRpb25GTiBzZXRz
b2NrZXRvcHRpb247CgogICAgUFJTZW5kZmlsZUZOIHNlbmRmaWxlOwogICAgUFJDb25uZWN0Y29u
dGludWVGTiBjb25uZWN0Y29udGludWU7CgogICAgUFJSZXNlcnZlZEZOIHJlc2VydmVkX2ZuXzM7
CiAgICBQUlJlc2VydmVkRk4gcmVzZXJ2ZWRfZm5fMjsKICAgIFBSUmVzZXJ2ZWRGTiByZXNlcnZl
ZF9mbl8xOwogICAgUFJSZXNlcnZlZEZOIHJlc2VydmVkX2ZuXzA7Cn07CiMgNDMzICIvdmFyL3Rt
cC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9w
cmlvLmgiCnR5cGVkZWYgZW51bSBQUlNwZWNpYWxGRAp7CiAgICBQUl9TdGFuZGFyZElucHV0LAog
ICAgUFJfU3RhbmRhcmRPdXRwdXQsCiAgICBQUl9TdGFuZGFyZEVycm9yCn0gUFJTcGVjaWFsRkQ7
CgpleHRlcm4gUFJGaWxlRGVzYyogUFJfR2V0U3BlY2lhbEZEKFBSU3BlY2lhbEZEIGlkKTsKIyA0
ODAgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5j
bHVkZS9uc3ByL3ByaW8uaCIKZXh0ZXJuIFBSRGVzY0lkZW50aXR5IFBSX0dldFVuaXF1ZUlkZW50
aXR5KGNvbnN0IGNoYXIgKmxheWVyX25hbWUpOwpleHRlcm4gY29uc3QgY2hhciogUFJfR2V0TmFt
ZUZvcklkZW50aXR5KFBSRGVzY0lkZW50aXR5IGlkZW50KTsKZXh0ZXJuIFBSRGVzY0lkZW50aXR5
IFBSX0dldExheWVyc0lkZW50aXR5KFBSRmlsZURlc2MqIGZkKTsKZXh0ZXJuIFBSRmlsZURlc2Mq
IFBSX0dldElkZW50aXRpZXNMYXllcihQUkZpbGVEZXNjKiBmZF9zdGFjaywgUFJEZXNjSWRlbnRp
dHkgaWQpOwojIDQ5MyAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemls
bGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpby5oIgpleHRlcm4gY29uc3QgUFJJT01ldGhvZHMgKiBQ
Ul9HZXREZWZhdWx0SU9NZXRob2RzKHZvaWQpOwojIDUwNCAiL3Zhci90bXAvcG9ydGFnZS9tb3pp
bGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpby5oIgpleHRlcm4g
UFJGaWxlRGVzYyogUFJfQ3JlYXRlSU9MYXllclN0dWIoCiAgICBQUkRlc2NJZGVudGl0eSBpZGVu
dCwgY29uc3QgUFJJT01ldGhvZHMgKm1ldGhvZHMpOwojIDUyMSAiL3Zhci90bXAvcG9ydGFnZS9t
b3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpby5oIgpleHRl
cm4gUFJGaWxlRGVzYyogUFJfQ3JlYXRlSU9MYXllcihQUkZpbGVEZXNjKiBmZCk7CiMgNTM3ICIv
dmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUv
bnNwci9wcmlvLmgiCmV4dGVybiBQUlN0YXR1cyBQUl9QdXNoSU9MYXllcigKICAgIFBSRmlsZURl
c2MgKmZkX3N0YWNrLCBQUkRlc2NJZGVudGl0eSBpZCwgUFJGaWxlRGVzYyAqbGF5ZXIpOwojIDU1
NCAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNs
dWRlL25zcHIvcHJpby5oIgpleHRlcm4gUFJGaWxlRGVzYyogUFJfUG9wSU9MYXllcihQUkZpbGVE
ZXNjICpmZF9zdGFjaywgUFJEZXNjSWRlbnRpdHkgaWQpOwojIDYyOCAiL3Zhci90bXAvcG9ydGFn
ZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpby5oIgpl
eHRlcm4gUFJGaWxlRGVzYyogUFJfT3Blbihjb25zdCBjaGFyICpuYW1lLCBQUkludG4gZmxhZ3Ms
IFBSSW50biBtb2RlKTsKIyA2NTQgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29y
ay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3ByaW8uaCIKZXh0ZXJuIFBSRmlsZURlc2MqIFBS
X09wZW5GaWxlKAogICAgY29uc3QgY2hhciAqbmFtZSwgUFJJbnRuIGZsYWdzLCBQUkludG4gbW9k
ZSk7CiMgNjg1ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9k
aXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUlN0YXR1cyBQUl9DbG9zZShQUkZpbGVE
ZXNjICpmZCk7CiMgNzIwICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96
aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUkludDMyIFBSX1JlYWQoUFJG
aWxlRGVzYyAqZmQsIHZvaWQgKmJ1ZiwgUFJJbnQzMiBhbW91bnQpOwojIDc0NCAiL3Zhci90bXAv
cG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJp
by5oIgpleHRlcm4gUFJJbnQzMiBQUl9Xcml0ZShQUkZpbGVEZXNjICpmZCxjb25zdCB2b2lkICpi
dWYsUFJJbnQzMiBhbW91bnQpOwojIDc3OCAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1y
MS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpby5oIgpleHRlcm4gUFJJbnQzMiBQ
Ul9Xcml0ZXYoCiAgICBQUkZpbGVEZXNjICpmZCwgY29uc3QgUFJJT1ZlYyAqaW92LCBQUkludDMy
IGlvdl9zaXplLAogICAgUFJJbnRlcnZhbFRpbWUgdGltZW91dCk7CiMgNzk5ICIvdmFyL3RtcC9w
b3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlv
LmgiCmV4dGVybiBQUlN0YXR1cyBQUl9EZWxldGUoY29uc3QgY2hhciAqbmFtZSk7CgoKCnR5cGVk
ZWYgZW51bSBQUkZpbGVUeXBlCnsKICAgIFBSX0ZJTEVfRklMRSA9IDEsCiAgICBQUl9GSUxFX0RJ
UkVDVE9SWSA9IDIsCiAgICBQUl9GSUxFX09USEVSID0gMwp9IFBSRmlsZVR5cGU7CgpzdHJ1Y3Qg
UFJGaWxlSW5mbyB7CiAgICBQUkZpbGVUeXBlIHR5cGU7CiAgICBQUk9mZnNldDMyIHNpemU7CiAg
ICBQUlRpbWUgY3JlYXRpb25UaW1lOwogICAgUFJUaW1lIG1vZGlmeVRpbWU7Cn07CgpzdHJ1Y3Qg
UFJGaWxlSW5mbzY0IHsKICAgIFBSRmlsZVR5cGUgdHlwZTsKICAgIFBST2Zmc2V0NjQgc2l6ZTsK
ICAgIFBSVGltZSBjcmVhdGlvblRpbWU7CiAgICBQUlRpbWUgbW9kaWZ5VGltZTsKfTsKIyA4NDIg
Ii92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVk
ZS9uc3ByL3ByaW8uaCIKZXh0ZXJuIFBSU3RhdHVzIFBSX0dldEZpbGVJbmZvKGNvbnN0IGNoYXIg
KmZuLCBQUkZpbGVJbmZvICppbmZvKTsKZXh0ZXJuIFBSU3RhdHVzIFBSX0dldEZpbGVJbmZvNjQo
Y29uc3QgY2hhciAqZm4sIFBSRmlsZUluZm82NCAqaW5mbyk7CiMgODY5ICIvdmFyL3RtcC9wb3J0
YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgi
CmV4dGVybiBQUlN0YXR1cyBQUl9HZXRPcGVuRmlsZUluZm8oUFJGaWxlRGVzYyAqZmQsIFBSRmls
ZUluZm8gKmluZm8pOwpleHRlcm4gUFJTdGF0dXMgUFJfR2V0T3BlbkZpbGVJbmZvNjQoUFJGaWxl
RGVzYyAqZmQsIFBSRmlsZUluZm82NCAqaW5mbyk7CiMgODg4ICIvdmFyL3RtcC9wb3J0YWdlL21v
emlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCmV4dGVy
biBQUlN0YXR1cyBQUl9SZW5hbWUoY29uc3QgY2hhciAqZnJvbSwgY29uc3QgY2hhciAqdG8pOwoj
IDkxNCAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9p
bmNsdWRlL25zcHIvcHJpby5oIgp0eXBlZGVmIGVudW0gUFJBY2Nlc3NIb3cgewogICAgUFJfQUND
RVNTX0VYSVNUUyA9IDEsCiAgICBQUl9BQ0NFU1NfV1JJVEVfT0sgPSAyLAogICAgUFJfQUNDRVNT
X1JFQURfT0sgPSAzCn0gUFJBY2Nlc3NIb3c7CgpleHRlcm4gUFJTdGF0dXMgUFJfQWNjZXNzKGNv
bnN0IGNoYXIgKm5hbWUsIFBSQWNjZXNzSG93IGhvdyk7CiMgOTU1ICIvdmFyL3RtcC9wb3J0YWdl
L21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCmV4
dGVybiBQUk9mZnNldDMyIFBSX1NlZWsoUFJGaWxlRGVzYyAqZmQsIFBST2Zmc2V0MzIgb2Zmc2V0
LCBQUlNlZWtXaGVuY2Ugd2hlbmNlKTsKZXh0ZXJuIFBST2Zmc2V0NjQgUFJfU2VlazY0KFBSRmls
ZURlc2MgKmZkLCBQUk9mZnNldDY0IG9mZnNldCwgUFJTZWVrV2hlbmNlIHdoZW5jZSk7CiMgOTc4
ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1
ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUkludDMyIFBSX0F2YWlsYWJsZShQUkZpbGVEZXNjICpm
ZCk7CmV4dGVybiBQUkludDY0IFBSX0F2YWlsYWJsZTY0KFBSRmlsZURlc2MgKmZkKTsKIyA5OTgg
Ii92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVk
ZS9uc3ByL3ByaW8uaCIKZXh0ZXJuIFBSU3RhdHVzIFBSX1N5bmMoUFJGaWxlRGVzYyAqZmQpOwoK
CgpzdHJ1Y3QgUFJEaXJFbnRyeSB7CiAgICBjb25zdCBjaGFyICpuYW1lOwp9OwojIDEwMzcgIi92
YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9u
c3ByL3ByaW8uaCIKZXh0ZXJuIFBSRGlyKiBQUl9PcGVuRGlyKGNvbnN0IGNoYXIgKm5hbWUpOwoj
IDEwNjkgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3Qv
aW5jbHVkZS9uc3ByL3ByaW8uaCIKdHlwZWRlZiBlbnVtIFBSRGlyRmxhZ3MgewogICAgUFJfU0tJ
UF9OT05FID0gMHgwLAogICAgUFJfU0tJUF9ET1QgPSAweDEsCiAgICBQUl9TS0lQX0RPVF9ET1Qg
PSAweDIsCiAgICBQUl9TS0lQX0JPVEggPSAweDMsCiAgICBQUl9TS0lQX0hJRERFTiA9IDB4NAp9
IFBSRGlyRmxhZ3M7CgpleHRlcm4gUFJEaXJFbnRyeSogUFJfUmVhZERpcihQUkRpciAqZGlyLCBQ
UkRpckZsYWdzIGZsYWdzKTsKIyAxMTAzICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIx
L3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUlN0YXR1cyBQ
Ul9DbG9zZURpcihQUkRpciAqZGlyKTsKIyAxMTMyICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEt
MS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUlN0
YXR1cyBQUl9Na0Rpcihjb25zdCBjaGFyICpuYW1lLCBQUkludG4gbW9kZSk7CiMgMTE0NCAiL3Zh
ci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25z
cHIvcHJpby5oIgpleHRlcm4gUFJTdGF0dXMgUFJfTWFrZURpcihjb25zdCBjaGFyICpuYW1lLCBQ
UkludG4gbW9kZSk7CiMgMTE2NCAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3Jr
L21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpby5oIgpleHRlcm4gUFJTdGF0dXMgUFJfUm1E
aXIoY29uc3QgY2hhciAqbmFtZSk7CiMgMTE4MyAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEu
My1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJpby5oIgpleHRlcm4gUFJGaWxl
RGVzYyogUFJfTmV3VURQU29ja2V0KHZvaWQpOwojIDEyMDIgIi92YXIvdG1wL3BvcnRhZ2UvbW96
aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3ByaW8uaCIKZXh0ZXJu
IFBSRmlsZURlc2MqIFBSX05ld1RDUFNvY2tldCh2b2lkKTsKIyAxMjIyICIvdmFyL3RtcC9wb3J0
YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgi
CmV4dGVybiBQUkZpbGVEZXNjKiBQUl9PcGVuVURQU29ja2V0KFBSSW50biBhZik7CiMgMTI0MiAi
L3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRl
L25zcHIvcHJpby5oIgpleHRlcm4gUFJGaWxlRGVzYyogUFJfT3BlblRDUFNvY2tldChQUkludG4g
YWYpOwojIDEyNjYgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxh
L2Rpc3QvaW5jbHVkZS9uc3ByL3ByaW8uaCIKZXh0ZXJuIFBSU3RhdHVzIFBSX0Nvbm5lY3QoCiAg
ICBQUkZpbGVEZXNjICpmZCwgY29uc3QgUFJOZXRBZGRyICphZGRyLCBQUkludGVydmFsVGltZSB0
aW1lb3V0KTsKIyAxMzAxICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96
aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUlN0YXR1cyBQUl9Db25uZWN0
Q29udGludWUoUFJGaWxlRGVzYyAqZmQsIFBSSW50MTYgb3V0X2ZsYWdzKTsKIyAxMzMxICIvdmFy
L3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNw
ci9wcmlvLmgiCmV4dGVybiBQUlN0YXR1cyBQUl9HZXRDb25uZWN0U3RhdHVzKGNvbnN0IFBSUG9s
bERlc2MgKnBkKTsKIyAxMzU1ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsv
bW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUkZpbGVEZXNjKiBQUl9B
Y2NlcHQoCiAgICBQUkZpbGVEZXNjICpmZCwgUFJOZXRBZGRyICphZGRyLCBQUkludGVydmFsVGlt
ZSB0aW1lb3V0KTsKIyAxMzc3ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsv
bW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUlN0YXR1cyBQUl9CaW5k
KFBSRmlsZURlc2MgKmZkLCBjb25zdCBQUk5ldEFkZHIgKmFkZHIpOwojIDEzOTkgIi92YXIvdG1w
L3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3By
aW8uaCIKZXh0ZXJuIFBSU3RhdHVzIFBSX0xpc3RlbihQUkZpbGVEZXNjICpmZCwgUFJJbnRuIGJh
Y2tsb2cpOwojIDE0MjMgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3pp
bGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3ByaW8uaCIKdHlwZWRlZiBlbnVtIFBSU2h1dGRvd25Ib3cK
ewogICAgUFJfU0hVVERPV05fUkNWID0gMCwKICAgIFBSX1NIVVRET1dOX1NFTkQgPSAxLAogICAg
UFJfU0hVVERPV05fQk9USCA9IDIKfSBQUlNodXRkb3duSG93OwoKZXh0ZXJuIFBSU3RhdHVzIFBS
X1NodXRkb3duKFBSRmlsZURlc2MgKmZkLCBQUlNodXRkb3duSG93IGhvdyk7CiMgMTQ2MyAiL3Zh
ci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25z
cHIvcHJpby5oIgpleHRlcm4gUFJJbnQzMiBQUl9SZWN2KFBSRmlsZURlc2MgKmZkLCB2b2lkICpi
dWYsIFBSSW50MzIgYW1vdW50LAogICAgICAgICAgICAgICAgUFJJbnRuIGZsYWdzLCBQUkludGVy
dmFsVGltZSB0aW1lb3V0KTsKIyAxNDk0ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIx
L3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUkludDMyIFBS
X1NlbmQoUFJGaWxlRGVzYyAqZmQsIGNvbnN0IHZvaWQgKmJ1ZiwgUFJJbnQzMiBhbW91bnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJJbnRuIGZsYWdzLCBQUkludGVydmFsVGlt
ZSB0aW1lb3V0KTsKIyAxNTI5ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsv
bW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUkludDMyIFBSX1JlY3ZG
cm9tKAogICAgUFJGaWxlRGVzYyAqZmQsIHZvaWQgKmJ1ZiwgUFJJbnQzMiBhbW91bnQsIFBSSW50
biBmbGFncywKICAgIFBSTmV0QWRkciAqYWRkciwgUFJJbnRlcnZhbFRpbWUgdGltZW91dCk7CiMg
MTU2MiAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9p
bmNsdWRlL25zcHIvcHJpby5oIgpleHRlcm4gUFJJbnQzMiBQUl9TZW5kVG8oCiAgICBQUkZpbGVE
ZXNjICpmZCwgY29uc3Qgdm9pZCAqYnVmLCBQUkludDMyIGFtb3VudCwgUFJJbnRuIGZsYWdzLAog
ICAgY29uc3QgUFJOZXRBZGRyICphZGRyLCBQUkludGVydmFsVGltZSB0aW1lb3V0KTsKIyAxNjAy
ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1
ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUkludDMyIFBSX1RyYW5zbWl0RmlsZSgKICAgIFBSRmls
ZURlc2MgKm5ldHdvcmtTb2NrZXQsIFBSRmlsZURlc2MgKnNvdXJjZUZpbGUsCiAgICBjb25zdCB2
b2lkICpoZWFkZXJzLCBQUkludDMyIGhsZW4sIFBSVHJhbnNtaXRGaWxlRmxhZ3MgZmxhZ3MsCiAg
ICBQUkludGVydmFsVGltZSB0aW1lb3V0KTsKIyAxNjQxICIvdmFyL3RtcC9wb3J0YWdlL21vemls
bGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCnN0cnVjdCBQ
UlNlbmRGaWxlRGF0YSB7CiAgICAgICAgUFJGaWxlRGVzYyAqZmQ7CiAgICAgICAgUFJVaW50MzIg
ZmlsZV9vZmZzZXQ7CiAgICAgICAgUFJTaXplIGZpbGVfbmJ5dGVzOwoKCiAgICAgICAgY29uc3Qg
dm9pZCAqaGVhZGVyOwogICAgICAgIFBSSW50MzIgaGxlbjsKICAgICAgICBjb25zdCB2b2lkICp0
cmFpbGVyOwogICAgICAgIFBSSW50MzIgdGxlbjsKfTsKCgpleHRlcm4gUFJJbnQzMiBQUl9TZW5k
RmlsZSgKICAgIFBSRmlsZURlc2MgKm5ldHdvcmtTb2NrZXQsIFBSU2VuZEZpbGVEYXRhICpzZW5k
RGF0YSwKICAgICAgICBQUlRyYW5zbWl0RmlsZUZsYWdzIGZsYWdzLCBQUkludGVydmFsVGltZSB0
aW1lb3V0KTsKIyAxNzA4ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96
aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUkludDMyIFBSX0FjY2VwdFJl
YWQoCiAgICBQUkZpbGVEZXNjICpsaXN0ZW5Tb2NrLCBQUkZpbGVEZXNjICoqYWNjZXB0ZWRTb2Nr
LAogICAgUFJOZXRBZGRyICoqcGVlckFkZHIsIHZvaWQgKmJ1ZiwgUFJJbnQzMiBhbW91bnQsIFBS
SW50ZXJ2YWxUaW1lIHRpbWVvdXQpOwojIDE3MzIgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0x
LjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3ByaW8uaCIKZXh0ZXJuIFBSU3Rh
dHVzIFBSX05ld1RDUFNvY2tldFBhaXIoUFJGaWxlRGVzYyAqZmRzWzJdKTsKIyAxNzUyICIvdmFy
L3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNw
ci9wcmlvLmgiCmV4dGVybiBQUlN0YXR1cyBQUl9HZXRTb2NrTmFtZShQUkZpbGVEZXNjICpmZCwg
UFJOZXRBZGRyICphZGRyKTsKIyAxNzc0ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIx
L3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUlN0YXR1cyBQ
Ul9HZXRQZWVyTmFtZShQUkZpbGVEZXNjICpmZCwgUFJOZXRBZGRyICphZGRyKTsKCmV4dGVybiBQ
UlN0YXR1cyBQUl9HZXRTb2NrZXRPcHRpb24oCiAgICBQUkZpbGVEZXNjICpmZCwgUFJTb2NrZXRP
cHRpb25EYXRhICpkYXRhKTsKCmV4dGVybiBQUlN0YXR1cyBQUl9TZXRTb2NrZXRPcHRpb24oCiAg
ICBQUkZpbGVEZXNjICpmZCwgY29uc3QgUFJTb2NrZXRPcHRpb25EYXRhICpkYXRhKTsKIyAxODA5
ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1
ZGUvbnNwci9wcmlvLmgiCmV4dGVybiBQUlN0YXR1cyBQUl9TZXRGREluaGVyaXRhYmxlKAogICAg
UFJGaWxlRGVzYyAqZmQsCiAgICBQUkJvb2wgaW5oZXJpdGFibGUpOwojIDE4MjkgIi92YXIvdG1w
L3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3By
aW8uaCIKZXh0ZXJuIFBSRmlsZURlc2MgKiBQUl9HZXRJbmhlcml0ZWRGRChjb25zdCBjaGFyICpu
YW1lKTsKIyAxODM5ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxs
YS9kaXN0L2luY2x1ZGUvbnNwci9wcmlvLmgiCnR5cGVkZWYgc3RydWN0IFBSRmlsZU1hcCBQUkZp
bGVNYXA7CgoKCgp0eXBlZGVmIGVudW0gUFJGaWxlTWFwUHJvdGVjdCB7CiAgICBQUl9QUk9UX1JF
QURPTkxZLAogICAgUFJfUFJPVF9SRUFEV1JJVEUsCiAgICBQUl9QUk9UX1dSSVRFQ09QWQp9IFBS
RmlsZU1hcFByb3RlY3Q7CgpleHRlcm4gUFJGaWxlTWFwICogUFJfQ3JlYXRlRmlsZU1hcCgKICAg
IFBSRmlsZURlc2MgKmZkLAogICAgUFJJbnQ2NCBzaXplLAogICAgUFJGaWxlTWFwUHJvdGVjdCBw
cm90KTsKCgoKCmV4dGVybiBQUkludDMyIFBSX0dldE1lbU1hcEFsaWdubWVudCh2b2lkKTsKCmV4
dGVybiB2b2lkICogUFJfTWVtTWFwKAogICAgUFJGaWxlTWFwICpmbWFwLAogICAgUFJPZmZzZXQ2
NCBvZmZzZXQsCgogICAgUFJVaW50MzIgbGVuKTsKCmV4dGVybiBQUlN0YXR1cyBQUl9NZW1Vbm1h
cCh2b2lkICphZGRyLCBQUlVpbnQzMiBsZW4pOwoKZXh0ZXJuIFBSU3RhdHVzIFBSX0Nsb3NlRmls
ZU1hcChQUkZpbGVNYXAgKmZtYXApOwojIDE4ODMgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0x
LjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3ByaW8uaCIKZXh0ZXJuIFBSU3Rh
dHVzIFBSX0NyZWF0ZVBpcGUoCiAgICBQUkZpbGVEZXNjICoqcmVhZFBpcGUsCiAgICBQUkZpbGVE
ZXNjICoqd3JpdGVQaXBlCik7CgoKCgoKc3RydWN0IFBSUG9sbERlc2MgewogICAgUFJGaWxlRGVz
YyogZmQ7CiAgICBQUkludDE2IGluX2ZsYWdzOwogICAgUFJJbnQxNiBvdXRfZmxhZ3M7Cn07CiMg
MTk2NCAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9p
bmNsdWRlL25zcHIvcHJpby5oIgpleHRlcm4gUFJJbnQzMiBQUl9Qb2xsKAogICAgUFJQb2xsRGVz
YyAqcGRzLCBQUkludG4gbnBkcywgUFJJbnRlcnZhbFRpbWUgdGltZW91dCk7CiMgMjAwOCAiL3Zh
ci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25z
cHIvcHJpby5oIgpleHRlcm4gUFJGaWxlRGVzYyAqIFBSX05ld1BvbGxhYmxlRXZlbnQodm9pZCk7
CgpleHRlcm4gUFJTdGF0dXMgUFJfRGVzdHJveVBvbGxhYmxlRXZlbnQoUFJGaWxlRGVzYyAqZXZl
bnQpOwoKZXh0ZXJuIFBSU3RhdHVzIFBSX1NldFBvbGxhYmxlRXZlbnQoUFJGaWxlRGVzYyAqZXZl
bnQpOwoKZXh0ZXJuIFBSU3RhdHVzIFBSX1dhaXRGb3JQb2xsYWJsZUV2ZW50KFBSRmlsZURlc2Mg
KmV2ZW50KTsKCn0KIyA0OCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zTmV0VXRpbC5o
IiAyCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lVUkkuaCIgMQojIDcyICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJVVJJLmgiCmNsYXNzIG5zSVVSSSA6IHB1Ymxp
YyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkg
e3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgwN2EyMmNjMCwgMHgwY2U1LCAweDExZDMsIHsg
MHg5MywgMHgzMSwgMHgwMCwgMHgxMCwgMHg0YiwgMHhhMCwgMHhmZCwgMHg0MCB9fTsgcmV0dXJu
IGlpZDt9CiMgODcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lVUkkuaCIKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldFNwZWMobnNBQ1N0cmluZyAmIGFTcGVjKSA9IDA7CiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXRTcGVjKGNvbnN0IG5zQUNTdHJpbmcgJiBhU3BlYykgPSAwOwojIDk3ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJVVJJLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQ
cmVQYXRoKG5zQUNTdHJpbmcgJiBhUHJlUGF0aCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0U2NoZW1lKG5zQUNTdHJpbmcgJiBhU2NoZW1lKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRTY2hlbWUoY29uc3QgbnNBQ1N0cmluZyAmIGFTY2hlbWUpID0gMDsKCgoKCgoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRVc2VyUGFzcyhuc0FDU3RyaW5nICYgYVVzZXJQYXNzKSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXRVc2VyUGFzcyhjb25zdCBuc0FDU3RyaW5nICYgYVVzZXJQYXNz
KSA9IDA7CiMgMTIzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJVVJJLmgiCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRVc2VybmFtZShuc0FDU3RyaW5nICYgYVVzZXJuYW1lKSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXRVc2VybmFtZShjb25zdCBuc0FDU3RyaW5nICYgYVVzZXJuYW1l
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBhc3N3b3JkKG5zQUNTdHJpbmcgJiBhUGFz
c3dvcmQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFBhc3N3b3JkKGNvbnN0IG5zQUNTdHJp
bmcgJiBhUGFzc3dvcmQpID0gMDsKCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRIb3N0UG9y
dChuc0FDU3RyaW5nICYgYUhvc3RQb3J0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRIb3N0
UG9ydChjb25zdCBuc0FDU3RyaW5nICYgYUhvc3RQb3J0KSA9IDA7CiMgMTQ3ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbmVja28vbnNJVVJJLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRIb3N0KG5z
QUNTdHJpbmcgJiBhSG9zdCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0SG9zdChjb25zdCBu
c0FDU3RyaW5nICYgYUhvc3QpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBvcnQo
UFJJbnQzMiAqYVBvcnQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFBvcnQoUFJJbnQzMiBh
UG9ydCkgPSAwOwojIDE2NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVVSSS5oIgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0UGF0aChuc0FDU3RyaW5nICYgYVBhdGgpID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldFBhdGgoY29uc3QgbnNBQ1N0cmluZyAmIGFQYXRoKSA9IDA7CiMgMTc3
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJVVJJLmgiCiAgdmlydHVhbCBuc3Jlc3Vs
dCBFcXVhbHMobnNJVVJJICpvdGhlciwgUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKCgoKCgogIHZp
cnR1YWwgbnNyZXN1bHQgU2NoZW1lSXMoY29uc3QgY2hhciAqc2NoZW1lLCBQUkJvb2wgKl9yZXR2
YWwpID0gMDsKIyAxOTQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lVUkkuaCIKICB2
aXJ0dWFsIG5zcmVzdWx0IENsb25lKG5zSVVSSSAqKl9yZXR2YWwpID0gMDsKIyAyMDMgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lVUkkuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFJlc29s
dmUoY29uc3QgbnNBQ1N0cmluZyAmIHJlbGF0aXZlUGF0aCwgbnNBQ1N0cmluZyAmIF9yZXR2YWwp
ID0gMDsKIyAyMTQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lVUkkuaCIKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldEFzY2lpU3BlYyhuc0FDU3RyaW5nICYgYUFzY2lpU3BlYykgPSAwOwoK
CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFzY2lpSG9zdChuc0FDU3RyaW5nICYgYUFzY2lp
SG9zdCkgPSAwOwojIDIzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVVSSS5oIgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0T3JpZ2luQ2hhcnNldChuc0FDU3RyaW5nICYgYU9yaWdpbkNo
YXJzZXQpID0gMDsKCn07CiMgNTAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc05ldFV0
aWwuaCIgMgoKCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lSZXF1ZXN0T2Jz
ZXJ2ZXJQcm94eS5oIiAxCiMgMTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lSZXF1
ZXN0T2JzZXJ2ZXJQcm94eS5oIgpjbGFzcyBuc0lFdmVudFF1ZXVlOwojIDM1ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbmVja28vbnNJUmVxdWVzdE9ic2VydmVyUHJveHkuaCIKY2xhc3MgbnNJUmVx
dWVzdE9ic2VydmVyUHJveHkgOiBwdWJsaWMgbnNJUmVxdWVzdE9ic2VydmVyIHsKIHB1YmxpYzoK
CiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9
IHsweDNjOWI1MzJlLCAweGRiODQsIDB4NGVjZiwgeyAweGFhLCAweDZhLCAweDRkLCAweDM4LCAw
eGE5LCAweGM0LCAweGM1LCAweGYwIH19OyByZXR1cm4gaWlkO30KIyA0NyAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL25lY2tvL25zSVJlcXVlc3RPYnNlcnZlclByb3h5LmgiCiAgdmlydHVhbCBuc3Jl
c3VsdCBJbml0KG5zSVJlcXVlc3RPYnNlcnZlciAqb2JzZXJ2ZXIsIG5zSUV2ZW50UXVldWUgKmV2
ZW50USkgPSAwOwoKfTsKIyA1NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zTmV0VXRp
bC5oIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVN0cmVhbUxpc3RlbmVy
UHJveHkuaCIgMQojIDE3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJU3RyZWFtTGlz
dGVuZXJQcm94eS5oIgpjbGFzcyBuc0lFdmVudFF1ZXVlOwojIDM1ICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvbmVja28vbnNJU3RyZWFtTGlzdGVuZXJQcm94eS5oIgpjbGFzcyBuc0lTdHJlYW1MaXN0
ZW5lclByb3h5IDogcHVibGljIG5zSVN0cmVhbUxpc3RlbmVyIHsKIHB1YmxpYzoKCiAgc3RhdGlj
IGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGU0MDBl
Njg4LCAweDZiNTQsIDB4NGE4NCwgeyAweDhjLCAweDRlLCAweDU2LCAweGI0LCAweDAyLCAweDgx
LCAweDk4LCAweDFhIH19OyByZXR1cm4gaWlkO30KIyA0OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L25lY2tvL25zSVN0cmVhbUxpc3RlbmVyUHJveHkuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEluaXQo
bnNJU3RyZWFtTGlzdGVuZXIgKmFMaXN0ZW5lciwgbnNJRXZlbnRRdWV1ZSAqYUV2ZW50USwgUFJV
aW50MzIgYUJ1ZmZlclNlZ21lbnRTaXplLCBQUlVpbnQzMiBhQnVmZmVyTWF4U2l6ZSkgPSAwOwoK
fTsKIyAxMjAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lTdHJlYW1MaXN0ZW5lclBy
b3h5LmgiCmNsYXNzIG5zSUFzeW5jU3RyZWFtTGlzdGVuZXIgOiBwdWJsaWMgbnNJU3RyZWFtTGlz
dGVuZXIgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMg
Y29uc3QgbnNJSUQgaWlkID0gezB4MWIwMTJhZGUsIDB4OTFiZiwgMHgxMWQzLCB7IDB4OGMsIDB4
ZDksIDB4MDAsIDB4NjAsIDB4YjAsIDB4ZmMsIDB4MTQsIDB4YTMgfX07IHJldHVybiBpaWQ7fQoj
IDEzMiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVN0cmVhbUxpc3RlbmVyUHJveHku
aCIKICB2aXJ0dWFsIG5zcmVzdWx0IEluaXQobnNJU3RyZWFtTGlzdGVuZXIgKmFSZWNlaXZlciwg
bnNJRXZlbnRRdWV1ZSAqYUV2ZW50USkgPSAwOwoKfTsKIyA1NSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL25lY2tvL25zTmV0VXRpbC5oIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tv
L25zSVNpbXBsZVN0cmVhbUxpc3RlbmVyLmgiIDEKIyAxNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L25lY2tvL25zSVNpbXBsZVN0cmVhbUxpc3RlbmVyLmgiCmNsYXNzIG5zSU91dHB1dFN0cmVhbTsK
IyAzMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVNpbXBsZVN0cmVhbUxpc3RlbmVy
LmgiCmNsYXNzIG5zSVNpbXBsZVN0cmVhbUxpc3RlbmVyIDogcHVibGljIG5zSVN0cmVhbUxpc3Rl
bmVyIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNv
bnN0IG5zSUlEIGlpZCA9IHsweGE5Yjg0ZjZhLCAweDA4MjQsIDB4NDI3OCwgeyAweGJhLCAweGU2
LCAweGJmLCAweGNhLCAweDA1LCAweDcwLCAweGEyLCAweDZlIH19OyByZXR1cm4gaWlkO30KIyA0
MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVNpbXBsZVN0cmVhbUxpc3RlbmVyLmgi
CiAgdmlydHVhbCBuc3Jlc3VsdCBJbml0KG5zSU91dHB1dFN0cmVhbSAqYVNpbmssIG5zSVJlcXVl
c3RPYnNlcnZlciAqYU9ic2VydmVyKSA9IDA7Cgp9OwojIDU2ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvbmVja28vbnNOZXRVdGlsLmgiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28v
bnNJTG9hZEdyb3VwLmgiIDEKIyAxNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSUxv
YWRHcm91cC5oIgpjbGFzcyBuc0lTaW1wbGVFbnVtZXJhdG9yOwoKY2xhc3MgbnNJUmVxdWVzdE9i
c2VydmVyOwoKY2xhc3MgbnNJSW50ZXJmYWNlUmVxdWVzdG9yOwojIDMxICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvbmVja28vbnNJTG9hZEdyb3VwLmgiCmNsYXNzIG5zSUxvYWRHcm91cCA6IHB1Ymxp
YyBuc0lSZXF1ZXN0IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7
c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDNkZTBhMzFjLCAweGZlYWYsIDB4NDAwZiwgeyAw
eDlmLCAweDFlLCAweDRlLCAweGY3LCAweDFmLCAweDhiLCAweDIwLCAweGNjIH19OyByZXR1cm4g
aWlkO30KIyA0NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSUxvYWRHcm91cC5oIgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0R3JvdXBPYnNlcnZlcihuc0lSZXF1ZXN0T2JzZXJ2ZXIgKiAq
YUdyb3VwT2JzZXJ2ZXIpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEdyb3VwT2JzZXJ2ZXIo
bnNJUmVxdWVzdE9ic2VydmVyICogYUdyb3VwT2JzZXJ2ZXIpID0gMDsKIyA1OSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL25lY2tvL25zSUxvYWRHcm91cC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
RGVmYXVsdExvYWRSZXF1ZXN0KG5zSVJlcXVlc3QgKiAqYURlZmF1bHRMb2FkUmVxdWVzdCkgPSAw
OwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RGVmYXVsdExvYWRSZXF1ZXN0KG5zSVJlcXVlc3QgKiBh
RGVmYXVsdExvYWRSZXF1ZXN0KSA9IDA7CiMgNzIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNr
by9uc0lMb2FkR3JvdXAuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEFkZFJlcXVlc3QobnNJUmVxdWVz
dCAqYVJlcXVlc3QsIG5zSVN1cHBvcnRzICphQ29udGV4dCkgPSAwOwoKCgoKCgogIHZpcnR1YWwg
bnNyZXN1bHQgUmVtb3ZlUmVxdWVzdChuc0lSZXF1ZXN0ICphUmVxdWVzdCwgbnNJU3VwcG9ydHMg
KmFDb250ZXh0LCBuc3Jlc3VsdCBhU3RhdHVzKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRSZXF1ZXN0cyhuc0lTaW1wbGVFbnVtZXJhdG9yICogKmFSZXF1ZXN0cykgPSAwOwoKCgoK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QWN0aXZlQ291bnQoUFJVaW50MzIgKmFBY3RpdmVDb3Vu
dCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROb3RpZmljYXRpb25DYWxsYmFja3Mo
bnNJSW50ZXJmYWNlUmVxdWVzdG9yICogKmFOb3RpZmljYXRpb25DYWxsYmFja3MpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldE5vdGlmaWNhdGlvbkNhbGxiYWNrcyhuc0lJbnRlcmZhY2VSZXF1
ZXN0b3IgKiBhTm90aWZpY2F0aW9uQ2FsbGJhY2tzKSA9IDA7Cgp9OwojIDU3ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbmVja28vbnNOZXRVdGlsLmgiIDIKCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9uZWNrby9uc0lJT1NlcnZpY2UuaCIgMQojIDE3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
bmVja28vbnNJSU9TZXJ2aWNlLmgiCmNsYXNzIG5zSVByb3RvY29sSGFuZGxlcjsKCmNsYXNzIG5z
SUNoYW5uZWw7CgpjbGFzcyBuc0lVUkk7CgpjbGFzcyBuc0lGaWxlOwojIDQ0ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbmVja28vbnNJSU9TZXJ2aWNlLmgiCmNsYXNzIG5zSUlPU2VydmljZSA6IHB1
YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlE
KCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhiZGRlZGEzZiwgMHg5MDIwLCAweDRkMTIs
IHsgMHg4YywgMHg3MCwgMHg5OCwgMHg0ZSwgMHhlOSwgMHhmNywgMHg5MywgMHg1ZSB9fTsgcmV0
dXJuIGlpZDt9CiMgNTYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lJT1NlcnZpY2Uu
aCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByb3RvY29sSGFuZGxlcihjb25zdCBjaGFyICphU2No
ZW1lLCBuc0lQcm90b2NvbEhhbmRsZXIgKipfcmV0dmFsKSA9IDA7CiMgNjUgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9uZWNrby9uc0lJT1NlcnZpY2UuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBy
b3RvY29sRmxhZ3MoY29uc3QgY2hhciAqYVNjaGVtZSwgUFJVaW50MzIgKl9yZXR2YWwpID0gMDsK
IyA3NiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSUlPU2VydmljZS5oIgogIHZpcnR1
YWwgbnNyZXN1bHQgTmV3VVJJKGNvbnN0IG5zQUNTdHJpbmcgJiBhU3BlYywgY29uc3QgY2hhciAq
YU9yaWdpbkNoYXJzZXQsIG5zSVVSSSAqYUJhc2VVUkksIG5zSVVSSSAqKl9yZXR2YWwpID0gMDsK
IyA4NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSUlPU2VydmljZS5oIgogIHZpcnR1
YWwgbnNyZXN1bHQgTmV3RmlsZVVSSShuc0lGaWxlICphRmlsZSwgbnNJVVJJICoqX3JldHZhbCkg
PSAwOwojIDk0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJSU9TZXJ2aWNlLmgiCiAg
dmlydHVhbCBuc3Jlc3VsdCBOZXdDaGFubmVsRnJvbVVSSShuc0lVUkkgKmFVUkksIG5zSUNoYW5u
ZWwgKipfcmV0dmFsKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IE5ld0NoYW5uZWwoY29u
c3QgbnNBQ1N0cmluZyAmIGFTcGVjLCBjb25zdCBjaGFyICphT3JpZ2luQ2hhcnNldCwgbnNJVVJJ
ICphQmFzZVVSSSwgbnNJQ2hhbm5lbCAqKl9yZXR2YWwpID0gMDsKIyAxMTAgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9uZWNrby9uc0lJT1NlcnZpY2UuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE9m
ZmxpbmUoUFJCb29sICphT2ZmbGluZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0T2ZmbGlu
ZShQUkJvb2wgYU9mZmxpbmUpID0gMDsKIyAxMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNr
by9uc0lJT1NlcnZpY2UuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEFsbG93UG9ydChQUkludDMyIGFQ
b3J0LCBjb25zdCBjaGFyICphU2NoZW1lLCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKIyAxNDEgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lJT1NlcnZpY2UuaCIKICB2aXJ0dWFsIG5zcmVz
dWx0IEV4dHJhY3RTY2hlbWUoY29uc3QgbnNBQ1N0cmluZyAmIHVybFN0cmluZywgbnNBQ1N0cmlu
ZyAmIF9yZXR2YWwpID0gMDsKCn07CiMgNjAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9u
c05ldFV0aWwuaCIgMgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJQ2hhbm5l
bC5oIiAxCiMgMTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lDaGFubmVsLmgiCmNs
YXNzIG5zSVVSSTsKCmNsYXNzIG5zSUludGVyZmFjZVJlcXVlc3RvcjsKCmNsYXNzIG5zSUlucHV0
U3RyZWFtOwoKY2xhc3MgbnNJU3RyZWFtTGlzdGVuZXI7CiMgNDcgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9uZWNrby9uc0lDaGFubmVsLmgiCmNsYXNzIG5zSUNoYW5uZWwgOiBwdWJsaWMgbnNJUmVx
dWVzdCB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBj
b25zdCBuc0lJRCBpaWQgPSB7MHhjNjNhMDU1YSwgMHhhNjc2LCAweDRlNzEsIHsgMHhiZiwgMHgz
YywgMHg2YywgMHhmYSwgMHgxMSwgMHgwOCwgMHgyMCwgMHgxOCB9fTsgcmV0dXJuIGlpZDt9CiMg
NjIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lDaGFubmVsLmgiCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRPcmlnaW5hbFVSSShuc0lVUkkgKiAqYU9yaWdpbmFsVVJJKSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXRPcmlnaW5hbFVSSShuc0lVUkkgKiBhT3JpZ2luYWxVUkkpID0gMDsK
CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VVJJKG5zSVVSSSAqICphVVJJKSA9IDA7CiMgODEg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lDaGFubmVsLmgiCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRPd25lcihuc0lTdXBwb3J0cyAqICphT3duZXIpID0gMDsKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldE93bmVyKG5zSVN1cHBvcnRzICogYU93bmVyKSA9IDA7CiMgOTQgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9uZWNrby9uc0lDaGFubmVsLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROb3Rp
ZmljYXRpb25DYWxsYmFja3MobnNJSW50ZXJmYWNlUmVxdWVzdG9yICogKmFOb3RpZmljYXRpb25D
YWxsYmFja3MpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE5vdGlmaWNhdGlvbkNhbGxiYWNr
cyhuc0lJbnRlcmZhY2VSZXF1ZXN0b3IgKiBhTm90aWZpY2F0aW9uQ2FsbGJhY2tzKSA9IDA7CgoK
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNlY3VyaXR5SW5mbyhuc0lTdXBwb3J0cyAqICphU2Vj
dXJpdHlJbmZvKSA9IDA7CiMgMTExICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJQ2hh
bm5lbC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29udGVudFR5cGUobnNBQ1N0cmluZyAmIGFD
b250ZW50VHlwZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q29udGVudFR5cGUoY29uc3Qg
bnNBQ1N0cmluZyAmIGFDb250ZW50VHlwZSkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0Q29udGVudENoYXJzZXQobnNBQ1N0cmluZyAmIGFDb250ZW50Q2hhcnNldCkgPSAwOwogIHZp
cnR1YWwgbnNyZXN1bHQgU2V0Q29udGVudENoYXJzZXQoY29uc3QgbnNBQ1N0cmluZyAmIGFDb250
ZW50Q2hhcnNldCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29udGVudExlbmd0
aChQUkludDMyICphQ29udGVudExlbmd0aCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q29u
dGVudExlbmd0aChQUkludDMyIGFDb250ZW50TGVuZ3RoKSA9IDA7CiMgMTQwICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbmVja28vbnNJQ2hhbm5lbC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgT3Blbihu
c0lJbnB1dFN0cmVhbSAqKl9yZXR2YWwpID0gMDsKIyAxNTAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9uZWNrby9uc0lDaGFubmVsLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBBc3luY09wZW4obnNJU3Ry
ZWFtTGlzdGVuZXIgKmFMaXN0ZW5lciwgbnNJU3VwcG9ydHMgKmFDb250ZXh0KSA9IDA7CiMgMTYy
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJQ2hhbm5lbC5oIgogIGVudW0geyBMT0FE
X0RPQ1VNRU5UX1VSSSA9IDY1NTM2VSB9OwoKCgoKCiAgZW51bSB7IExPQURfUkVUQVJHRVRFRF9E
T0NVTUVOVF9VUkkgPSAxMzEwNzJVIH07CgoKCgoKCiAgZW51bSB7IExPQURfUkVQTEFDRSA9IDI2
MjE0NFUgfTsKCgoKCgogIGVudW0geyBMT0FEX0lOSVRJQUxfRE9DVU1FTlRfVVJJID0gNTI0Mjg4
VSB9OwoKfTsKIyA2MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zTmV0VXRpbC5oIiAy
CiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSUlucHV0U3RyZWFtQ2hhbm5lbC5o
IiAxCiMgMTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lJbnB1dFN0cmVhbUNoYW5u
ZWwuaCIKY2xhc3MgbnNJSW5wdXRTdHJlYW07CiMgMzMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9u
ZWNrby9uc0lJbnB1dFN0cmVhbUNoYW5uZWwuaCIKY2xhc3MgbnNJSW5wdXRTdHJlYW1DaGFubmVs
IDogcHVibGljIG5zSUNoYW5uZWwgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdl
dElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4NTYwYTY0Y2UsIDB4NmQ2NiwgMHg0
NGRiLCB7IDB4YjMsIDB4OGUsIDB4ODYsIDB4NDQsIDB4NjksIDB4YzUsIDB4MmQsIDB4MDMgfX07
IHJldHVybiBpaWQ7fQoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRVUkkobnNJVVJJICphVVJJ
KSA9IDA7CiMgNTUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lJbnB1dFN0cmVhbUNo
YW5uZWwuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbnRlbnRTdHJlYW0obnNJSW5wdXRTdHJl
YW0gKiAqYUNvbnRlbnRTdHJlYW0pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENvbnRlbnRT
dHJlYW0obnNJSW5wdXRTdHJlYW0gKiBhQ29udGVudFN0cmVhbSkgPSAwOwoKfTsKIyA2MyAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zTmV0VXRpbC5oIiAyCiMgMSAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL25lY2tvL25zSVRyYW5zcG9ydC5oIiAxCiMgMTcgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9uZWNrby9uc0lUcmFuc3BvcnQuaCIKY2xhc3MgbnNJSW5wdXRTdHJlYW07CgpjbGFzcyBu
c0lPdXRwdXRTdHJlYW07CgpjbGFzcyBuc0lUcmFuc3BvcnRFdmVudFNpbms7CgpjbGFzcyBuc0lF
dmVudFF1ZXVlOwojIDMzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJVHJhbnNwb3J0
LmgiCmNsYXNzIG5zSVRyYW5zcG9ydCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6Cgog
IHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7
MHhjYmIwYmFlYiwgMHg1ZmNiLCAweDQwOGIsIHsgMHhhMiwgMHhiZSwgMHg5ZiwgMHg4ZiwgMHhj
OSwgMHg4ZCwgMHgwYSwgMHhmMSB9fTsgcmV0dXJuIGlpZDt9CgoKCgogIGVudW0geyBPUEVOX0JM
T0NLSU5HID0gMVUgfTsKCiAgZW51bSB7IE9QRU5fVU5CVUZGRVJFRCA9IDJVIH07CiMgNTggIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lUcmFuc3BvcnQuaCIKICB2aXJ0dWFsIG5zcmVz
dWx0IE9wZW5JbnB1dFN0cmVhbShQUlVpbnQzMiBhRmxhZ3MsIFBSVWludDMyIGFTZWdtZW50U2l6
ZSwgUFJVaW50MzIgYVNlZ21lbnRDb3VudCwgbnNJSW5wdXRTdHJlYW0gKipfcmV0dmFsKSA9IDA7
CiMgNzMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lUcmFuc3BvcnQuaCIKICB2aXJ0
dWFsIG5zcmVzdWx0IE9wZW5PdXRwdXRTdHJlYW0oUFJVaW50MzIgYUZsYWdzLCBQUlVpbnQzMiBh
U2VnbWVudFNpemUsIFBSVWludDMyIGFTZWdtZW50Q291bnQsIG5zSU91dHB1dFN0cmVhbSAqKl9y
ZXR2YWwpID0gMDsKIyA4MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVRyYW5zcG9y
dC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgQ2xvc2UobnNyZXN1bHQgYVJlYXNvbikgPSAwOwojIDk1
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJVHJhbnNwb3J0LmgiCiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXRFdmVudFNpbmsobnNJVHJhbnNwb3J0RXZlbnRTaW5rICphU2luaywgbnNJRXZl
bnRRdWV1ZSAqYUV2ZW50USkgPSAwOwoKCgoKCgogIGVudW0geyBTVEFUVVNfUkVBRElORyA9IDIx
NTIzOTg4NTZVIH07CgogIGVudW0geyBTVEFUVVNfV1JJVElORyA9IDIxNTIzOTg4NTdVIH07Cgp9
OwojIDE5MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVRyYW5zcG9ydC5oIgpjbGFz
cyBuc0lUcmFuc3BvcnRFdmVudFNpbmsgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoK
ICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0g
ezB4NTYxZGU4YWYsIDB4MWI3NCwgMHg0Y2Q0LCB7IDB4ODQsIDB4NzksIDB4ODksIDB4NDQsIDB4
N2QsIDB4NDgsIDB4MTgsIDB4NWMgfX07IHJldHVybiBpaWQ7fQojIDIxMyAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL25lY2tvL25zSVRyYW5zcG9ydC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgT25UcmFu
c3BvcnRTdGF0dXMobnNJVHJhbnNwb3J0ICphVHJhbnNwb3J0LCBuc3Jlc3VsdCBhU3RhdHVzLCBQ
UlVpbnQzMiBhUHJvZ3Jlc3MsIFBSVWludDMyIGFQcm9ncmVzc01heCkgPSAwOwoKfTsKIyA2NCAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zTmV0VXRpbC5oIiAyCiMgMSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL25lY2tvL25zSUh0dHBDaGFubmVsLmgiIDEKIyAxNyAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL25lY2tvL25zSUh0dHBDaGFubmVsLmgiCmNsYXNzIG5zSUh0dHBIZWFkZXJWaXNp
dG9yOwojIDM2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJSHR0cENoYW5uZWwuaCIK
Y2xhc3MgbnNJSHR0cENoYW5uZWwgOiBwdWJsaWMgbnNJQ2hhbm5lbCB7CiBwdWJsaWM6CgogIHN0
YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHg5
Mjc3ZmUwOSwgMHhmMGNjLCAweDRjZDksIHsgMHhiYiwgMHhjZSwgMHg1OCwgMHgxZCwgMHhkOSwg
MHg0YiwgMHgwMiwgMHg2MCB9fTsgcmV0dXJuIGlpZDt9CiMgNTYgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9uZWNrby9uc0lIdHRwQ2hhbm5lbC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UmVxdWVz
dE1ldGhvZChuc0FDU3RyaW5nICYgYVJlcXVlc3RNZXRob2QpID0gMDsKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldFJlcXVlc3RNZXRob2QoY29uc3QgbnNBQ1N0cmluZyAmIGFSZXF1ZXN0TWV0aG9kKSA9
IDA7CiMgNzEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lIdHRwQ2hhbm5lbC5oIgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0UmVmZXJyZXIobnNJVVJJICogKmFSZWZlcnJlcikgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0UmVmZXJyZXIobnNJVVJJICogYVJlZmVycmVyKSA9IDA7CiMg
ODQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lIdHRwQ2hhbm5lbC5oIgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0UmVxdWVzdEhlYWRlcihjb25zdCBuc0FDU3RyaW5nICYgYUhlYWRlciwg
bnNBQ1N0cmluZyAmIF9yZXR2YWwpID0gMDsKIyAxMDkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9u
ZWNrby9uc0lIdHRwQ2hhbm5lbC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UmVxdWVzdEhlYWRl
cihjb25zdCBuc0FDU3RyaW5nICYgYUhlYWRlciwgY29uc3QgbnNBQ1N0cmluZyAmIGFWYWx1ZSwg
UFJCb29sIGFNZXJnZSkgPSAwOwojIDExOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25z
SUh0dHBDaGFubmVsLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBWaXNpdFJlcXVlc3RIZWFkZXJzKG5z
SUh0dHBIZWFkZXJWaXNpdG9yICphVmlzaXRvcikgPSAwOwojIDEzMiAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL25lY2tvL25zSUh0dHBDaGFubmVsLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBbGxv
d1BpcGVsaW5pbmcoUFJCb29sICphQWxsb3dQaXBlbGluaW5nKSA9IDA7CiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXRBbGxvd1BpcGVsaW5pbmcoUFJCb29sIGFBbGxvd1BpcGVsaW5pbmcpID0gMDsKIyAx
NDggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lIdHRwQ2hhbm5lbC5oIgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0UmVkaXJlY3Rpb25MaW1pdChQUlVpbnQzMiAqYVJlZGlyZWN0aW9uTGlt
aXQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFJlZGlyZWN0aW9uTGltaXQoUFJVaW50MzIg
YVJlZGlyZWN0aW9uTGltaXQpID0gMDsKIyAxNjAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNr
by9uc0lIdHRwQ2hhbm5lbC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UmVzcG9uc2VTdGF0dXMo
UFJVaW50MzIgKmFSZXNwb25zZVN0YXR1cykgPSAwOwojIDE3MCAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL25lY2tvL25zSUh0dHBDaGFubmVsLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRSZXNwb25z
ZVN0YXR1c1RleHQobnNBQ1N0cmluZyAmIGFSZXNwb25zZVN0YXR1c1RleHQpID0gMDsKIyAxODMg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lIdHRwQ2hhbm5lbC5oIgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0UmVxdWVzdFN1Y2NlZWRlZChQUkJvb2wgKmFSZXF1ZXN0U3VjY2VlZGVkKSA9
IDA7CiMgMTk1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJSHR0cENoYW5uZWwuaCIK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJlc3BvbnNlSGVhZGVyKGNvbnN0IG5zQUNTdHJpbmcgJiBo
ZWFkZXIsIG5zQUNTdHJpbmcgJiBfcmV0dmFsKSA9IDA7CiMgMjIwICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvbmVja28vbnNJSHR0cENoYW5uZWwuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFJlc3Bv
bnNlSGVhZGVyKGNvbnN0IG5zQUNTdHJpbmcgJiBoZWFkZXIsIGNvbnN0IG5zQUNTdHJpbmcgJiB2
YWx1ZSwgUFJCb29sIG1lcmdlKSA9IDA7CiMgMjMxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVj
a28vbnNJSHR0cENoYW5uZWwuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFZpc2l0UmVzcG9uc2VIZWFk
ZXJzKG5zSUh0dHBIZWFkZXJWaXNpdG9yICphVmlzaXRvcikgPSAwOwoKCgoKCgogIHZpcnR1YWwg
bnNyZXN1bHQgSXNOb1N0b3JlUmVzcG9uc2UoUFJCb29sICpfcmV0dmFsKSA9IDA7CiMgMjQ3ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJSHR0cENoYW5uZWwuaCIKICB2aXJ0dWFsIG5z
cmVzdWx0IElzTm9DYWNoZVJlc3BvbnNlKFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKfTsKIyA2NSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zTmV0VXRpbC5oIiAyCiMgMSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL25lY2tvL25zSURvd25sb2FkZXIuaCIgMQojIDE3ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvbmVja28vbnNJRG93bmxvYWRlci5oIgpjbGFzcyBuc0lVUkk7CgpjbGFzcyBuc0lM
b2FkR3JvdXA7CgpjbGFzcyBuc0lJbnRlcmZhY2VSZXF1ZXN0b3I7CgpjbGFzcyBuc0lGaWxlOwoK
Y2xhc3MgbnNJRG93bmxvYWRlcjsKIyAzNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25z
SURvd25sb2FkZXIuaCIKY2xhc3MgbnNJRG93bmxvYWRPYnNlcnZlciA6IHB1YmxpYyBuc0lTdXBw
b3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBj
b25zdCBuc0lJRCBpaWQgPSB7MHg2ZTBmYzk2MiwgMHg0YTZmLCAweDRmYTYsIHsgMHg4MywgMHgx
ZiwgMHg4YywgMHgyNiwgMHhjNSwgMHg1NCwgMHg0MCwgMHg3ZiB9fTsgcmV0dXJuIGlpZDt9CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IE9uRG93bmxvYWRDb21wbGV0ZShuc0lEb3dubG9hZGVyICpkb3du
bG9hZGVyLCBuc0lTdXBwb3J0cyAqY3R4dCwgbnNyZXN1bHQgc3RhdHVzLCBuc0lGaWxlICpyZXN1
bHQpID0gMDsKCn07CiMgMTAyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJRG93bmxv
YWRlci5oIgpjbGFzcyBuc0lEb3dubG9hZGVyIDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1Ymxp
YzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlp
ZCA9IHsweDk2MzJjYzBkLCAweDg2NGQsIDB4NGY5MiwgeyAweGI3LCAweGU1LCAweGJkLCAweDgw
LCAweDk3LCAweGM0LCAweGU5LCAweGE1IH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNy
ZXN1bHQgSW5pdChuc0lVUkkgKnVyaSwgbnNJRG93bmxvYWRPYnNlcnZlciAqY29tcGxldGlvbk9i
c2VydmVyLCBuc0lTdXBwb3J0cyAqY3R4dCwgUFJCb29sIHN5bmNocm9ub3VzLCBuc0lMb2FkR3Jv
dXAgKmxvYWRHcm91cCwgbnNJSW50ZXJmYWNlUmVxdWVzdG9yICpub3RpZmljYXRpb25DYWxsYmFj
a3MsIG5zTG9hZEZsYWdzIGxvYWRBdHRyaWJ1dGVzKSA9IDA7Cgp9OwojIDY2ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbmVja28vbnNOZXRVdGlsLmgiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvbmVja28vbnNJUmVzdW1hYmxlRW50aXR5SUQuaCIgMQojIDI4ICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvbmVja28vbnNJUmVzdW1hYmxlRW50aXR5SUQuaCIKY2xhc3MgbnNJUmVzdW1hYmxlRW50
aXR5SUQgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJ
SUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YzlkZjM4ZDQsIDB4MWRk
MSwgMHgxMWIyLCB7IDB4ODEsIDB4YWUsIDB4YzksIDB4ZTcsIDB4NjcsIDB4MjUsIDB4NmQsIDB4
MWIgfX07IHJldHVybiBpaWQ7fQoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2l6ZShQUlVpbnQz
MiAqYVNpemUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNpemUoUFJVaW50MzIgYVNpemUp
ID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGFzdE1vZGlmaWVkKFBSVGltZSAqYUxh
c3RNb2RpZmllZCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TGFzdE1vZGlmaWVkKFBSVGlt
ZSBhTGFzdE1vZGlmaWVkKSA9IDA7CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgRXF1YWxzKG5zSVJl
c3VtYWJsZUVudGl0eUlEICpvdGhlciwgUFJCb29sICpfcmV0dmFsKSA9IDA7Cgp9OwojIDY3ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNOZXRVdGlsLmgiIDIKIyAxICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbmVja28vbnNJU3RyZWFtTG9hZGVyLmgiIDEKIyAyNiAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL25lY2tvL25zSVN0cmVhbUxvYWRlci5oIgpjbGFzcyBuc0lSZXF1ZXN0OwoKY2xh
c3MgbnNJVVJJOwoKY2xhc3MgbnNJTG9hZEdyb3VwOwoKY2xhc3MgbnNJU3RyZWFtTG9hZGVyOwoK
Y2xhc3MgbnNJSW50ZXJmYWNlUmVxdWVzdG9yOwojIDQ0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
bmVja28vbnNJU3RyZWFtTG9hZGVyLmgiCmNsYXNzIG5zSVN0cmVhbUxvYWRlck9ic2VydmVyIDog
cHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJ
SUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDM1OWY3OTkwLCAweGQ0ZTksIDB4MTFk
MywgeyAweGExLCAweGE1LCAweDAwLCAweDUwLCAweDA0LCAweDFjLCAweGFmLCAweDQ0IH19OyBy
ZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgT25TdHJlYW1Db21wbGV0ZShuc0lTdHJl
YW1Mb2FkZXIgKmxvYWRlciwgbnNJU3VwcG9ydHMgKmN0eHQsIG5zcmVzdWx0IHN0YXR1cywgUFJV
aW50MzIgcmVzdWx0TGVuZ3RoLCBjb25zdCBjaGFyICpyZXN1bHQpID0gMDsKCn07CiMgMTExICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJU3RyZWFtTG9hZGVyLmgiCmNsYXNzIG5zSVN0
cmVhbUxvYWRlciA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25z
dCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgzMWQzNzM2MCwg
MHg4ZTVhLCAweDExZDMsIHsgMHg5MywgMHhhZCwgMHgwMCwgMHgxMCwgMHg0YiwgMHhhMCwgMHhm
ZCwgMHg0MCB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEluaXQobnNJQ2hh
bm5lbCAqYUNoYW5uZWwsIG5zSVN0cmVhbUxvYWRlck9ic2VydmVyICphT2JzZXJ2ZXIsIG5zSVN1
cHBvcnRzICphQ29udGV4dCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROdW1CeXRl
c1JlYWQoUFJVaW50MzIgKmFOdW1CeXRlc1JlYWQpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0UmVxdWVzdChuc0lSZXF1ZXN0ICogKmFSZXF1ZXN0KSA9IDA7Cgp9OwojIDY4ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNOZXRVdGlsLmgiIDIKIyAxICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvbmVja28vbnNJVW5pY2hhclN0cmVhbUxvYWRlci5oIiAxCiMgMTcgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lVbmljaGFyU3RyZWFtTG9hZGVyLmgiCmNsYXNzIG5zSVVu
aWNoYXJJbnB1dFN0cmVhbTsKCmNsYXNzIG5zSVVuaWNoYXJTdHJlYW1Mb2FkZXI7CgpjbGFzcyBu
c0lDaGFubmVsOwojIDMxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJVW5pY2hhclN0
cmVhbUxvYWRlci5oIgpjbGFzcyBuc0lVbmljaGFyU3RyZWFtTG9hZGVyT2JzZXJ2ZXIgOiBwdWJs
aWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgp
IHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4ZTA2ZThiMDgsIDB4OGNkZCwgMHg0NTAzLCB7
IDB4YTAsIDB4YTAsIDB4NmYsIDB4M2IsIDB4OTQsIDB4MzYsIDB4MDIsIDB4YWYgfX07IHJldHVy
biBpaWQ7fQojIDQ3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJVW5pY2hhclN0cmVh
bUxvYWRlci5oIgogIHZpcnR1YWwgbnNyZXN1bHQgT25EZXRlcm1pbmVDaGFyc2V0KG5zSVVuaWNo
YXJTdHJlYW1Mb2FkZXIgKmFMb2FkZXIsIG5zSVN1cHBvcnRzICphQ29udGV4dCwgY29uc3QgY2hh
ciAqYUZpcnN0U2VnbWVudCwgUFJVaW50MzIgYUxlbmd0aCwgbnNBQ1N0cmluZyAmIF9yZXR2YWwp
ID0gMDsKIyA1OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVVuaWNoYXJTdHJlYW1M
b2FkZXIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IE9uU3RyZWFtQ29tcGxldGUobnNJVW5pY2hhclN0
cmVhbUxvYWRlciAqYUxvYWRlciwgbnNJU3VwcG9ydHMgKmFDb250ZXh0LCBuc3Jlc3VsdCBhU3Rh
dHVzLCBuc0lVbmljaGFySW5wdXRTdHJlYW0gKmFVbmljaGFyRGF0YSkgPSAwOwoKfTsKIyAxMjkg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lVbmljaGFyU3RyZWFtTG9hZGVyLmgiCmNs
YXNzIG5zSVVuaWNoYXJTdHJlYW1Mb2FkZXIgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGlj
OgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlk
ID0gezB4OGEzZWNhMTYsIDB4MTY3ZSwgMHg0NDNkLCB7IDB4OTQsIDB4ODUsIDB4N2UsIDB4ODQs
IDB4ZWQsIDB4ODIsIDB4MmUsIDB4OTUgfX07IHJldHVybiBpaWQ7fQoKICBlbnVtIHsgREVGQVVM
VF9TRUdNRU5UX1NJWkUgPSA0MDk2VSB9OwojIDE0NyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25l
Y2tvL25zSVVuaWNoYXJTdHJlYW1Mb2FkZXIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEluaXQobnNJ
Q2hhbm5lbCAqYUNoYW5uZWwsIG5zSVVuaWNoYXJTdHJlYW1Mb2FkZXJPYnNlcnZlciAqYU9ic2Vy
dmVyLCBuc0lTdXBwb3J0cyAqYUNvbnRleHQsIFBSVWludDMyIGFTZWdtZW50U2l6ZSkgPSAwOwoK
CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q2hhbm5lbChuc0lDaGFubmVsICogKmFDaGFubmVs
KSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDaGFyc2V0KG5zQUNTdHJpbmcgJiBh
Q2hhcnNldCkgPSAwOwoKfTsKIyA2OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zTmV0
VXRpbC5oIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVBpcGUuaCIgMQoj
IDEwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJUGlwZS5oIgojIDEgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lBc3luY0lucHV0U3RyZWFtLmgiIDEKIyAxNyAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUFzeW5jSW5wdXRTdHJlYW0uaCIKY2xhc3MgbnNJSW5w
dXRTdHJlYW1Ob3RpZnk7CgpjbGFzcyBuc0lFdmVudFF1ZXVlOwojIDI5ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUveHBjb20vbnNJQXN5bmNJbnB1dFN0cmVhbS5oIgpjbGFzcyBuc0lBc3luY0lucHV0
U3RyZWFtIDogcHVibGljIG5zSUlucHV0U3RyZWFtIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0
IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGNjOTExZTA5LCAw
eDJhMDIsIDB4NGQyZCwgeyAweGJhLCAweDRiLCAweGIyLCAweGFmLCAweGIxLCAweDczLCAweGU5
LCAweDZkIH19OyByZXR1cm4gaWlkO30KIyA0NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29t
L25zSUFzeW5jSW5wdXRTdHJlYW0uaCIKICB2aXJ0dWFsIG5zcmVzdWx0IENsb3NlRXgobnNyZXN1
bHQgcmVhc29uKSA9IDA7CiMgNjEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lBc3lu
Y0lucHV0U3RyZWFtLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBBc3luY1dhaXQobnNJSW5wdXRTdHJl
YW1Ob3RpZnkgKmFOb3RpZnksIFBSVWludDMyIGFSZXF1ZXN0ZWRDb3VudCwgbnNJRXZlbnRRdWV1
ZSAqYUV2ZW50USkgPSAwOwoKfTsKIyAxMzEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9u
c0lBc3luY0lucHV0U3RyZWFtLmgiCmNsYXNzIG5zSUlucHV0U3RyZWFtTm90aWZ5IDogcHVibGlj
IG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7
c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDIwYzY2NWEzLCAweDBlYmYsIDB4NGViYiwgeyAw
eDk3LCAweGJhLCAweDc5LCAweDQyLCAweDQ4LCAweGJmLCAweGE4LCAweGZlIH19OyByZXR1cm4g
aWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgT25JbnB1dFN0cmVhbVJlYWR5KG5zSUFzeW5jSW5w
dXRTdHJlYW0gKmFTdHJlYW0pID0gMDsKCn07CiMgMTEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94
cGNvbS9uc0lQaXBlLmgiIDIKCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJ
QXN5bmNPdXRwdXRTdHJlYW0uaCIgMQojIDE3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20v
bnNJQXN5bmNPdXRwdXRTdHJlYW0uaCIKY2xhc3MgbnNJT3V0cHV0U3RyZWFtTm90aWZ5OwoKY2xh
c3MgbnNJRXZlbnRRdWV1ZTsKIyAyOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUFz
eW5jT3V0cHV0U3RyZWFtLmgiCmNsYXNzIG5zSUFzeW5jT3V0cHV0U3RyZWFtIDogcHVibGljIG5z
SU91dHB1dFN0cmVhbSB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkg
e3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgwNGJhMWI1MywgMHhmYWQwLCAweDQwMzMsIHsg
MHg5MSwgMHhjOSwgMHgzZSwgMHgyNCwgMHhkYiwgMHgyMiwgMHgwNywgMHg5YyB9fTsgcmV0dXJu
IGlpZDt9CiMgNDUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lBc3luY091dHB1dFN0
cmVhbS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgQ2xvc2VFeChuc3Jlc3VsdCByZWFzb24pID0gMDsK
IyA2MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUFzeW5jT3V0cHV0U3RyZWFtLmgi
CiAgdmlydHVhbCBuc3Jlc3VsdCBBc3luY1dhaXQobnNJT3V0cHV0U3RyZWFtTm90aWZ5ICphTm90
aWZ5LCBQUlVpbnQzMiBhUmVxdWVzdGVkQ291bnQsIG5zSUV2ZW50UXVldWUgKmFFdmVudFEpID0g
MDsKCn07CiMgMTMxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJQXN5bmNPdXRwdXRT
dHJlYW0uaCIKY2xhc3MgbnNJT3V0cHV0U3RyZWFtTm90aWZ5IDogcHVibGljIG5zSVN1cHBvcnRz
IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0
IG5zSUlEIGlpZCA9IHsweDYxNGRlZjExLCAweDFkNzcsIDB4NDA5YiwgeyAweDgxLCAweDUzLCAw
eGVhLCAweDNhLCAweGU1LCAweGJhLCAweGJjLCAweDNjIH19OyByZXR1cm4gaWlkO30KCgogIHZp
cnR1YWwgbnNyZXN1bHQgT25PdXRwdXRTdHJlYW1SZWFkeShuc0lBc3luY091dHB1dFN0cmVhbSAq
YVN0cmVhbSkgPSAwOwoKfTsKIyAxNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVBp
cGUuaCIgMgoKCgoKCgpjbGFzcyBuc0lNZW1vcnk7CiMgMzEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS94cGNvbS9uc0lQaXBlLmgiCmNsYXNzIG5zSVBpcGUgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewog
cHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJ
SUQgaWlkID0gezB4ZjQyMTFhYmMsIDB4NjFiMywgMHgxMWQ0LCB7IDB4OTgsIDB4NzcsIDB4MDAs
IDB4YzAsIDB4NGYsIDB4YTAsIDB4Y2YsIDB4NGEgfX07IHJldHVybiBpaWQ7fQoKCgoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBJbml0KFBSQm9vbCBub25CbG9ja2luZ0lucHV0LCBQUkJvb2wgbm9uQmxv
Y2tpbmdPdXRwdXQsIFBSVWludDMyIHNlZ21lbnRTaXplLCBQUlVpbnQzMiBzZWdtZW50Q291bnQs
IG5zSU1lbW9yeSAqc2VnbWVudEFsbG9jYXRvcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRJbnB1dFN0cmVhbShuc0lBc3luY0lucHV0U3RyZWFtICogKmFJbnB1dFN0cmVhbSkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRPdXRwdXRTdHJlYW0obnNJQXN5bmNPdXRwdXRTdHJlYW0g
KiAqYU91dHB1dFN0cmVhbSkgPSAwOwoKfTsKIyAxMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94
cGNvbS9uc0lQaXBlLmgiCmNsYXNzIG5zSVNlYXJjaGFibGVJbnB1dFN0cmVhbSA6IHB1YmxpYyBu
c0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0
YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHg4YzM5ZWY2MiwgMHhmN2M5LCAweDExZDQsIHsgMHg5
OCwgMHhmNSwgMHgwMCwgMHgxMCwgMHg4MywgMHgwMSwgMHgwZSwgMHg5YiB9fTsgcmV0dXJuIGlp
ZDt9CiMgMTQxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJUGlwZS5oIgogIHZpcnR1
YWwgbnNyZXN1bHQgU2VhcmNoKGNvbnN0IGNoYXIgKmZvclN0cmluZywgUFJCb29sIGlnbm9yZUNh
c2UsIFBSQm9vbCAqZm91bmQsIFBSVWludDMyICpvZmZzZXRTZWFyY2hlZFRvKSA9IDA7Cgp9Owoj
IDE5NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVBpcGUuaCIKZXh0ZXJuIG5zcmVz
dWx0Ck5TX05ld1BpcGUyKG5zSUFzeW5jSW5wdXRTdHJlYW0gKipwaXBlSW4sCiAgICAgICAgICAg
IG5zSUFzeW5jT3V0cHV0U3RyZWFtICoqcGlwZU91dCwKICAgICAgICAgICAgUFJCb29sIG5vbkJs
b2NraW5nSW5wdXQgPSAwLAogICAgICAgICAgICBQUkJvb2wgbm9uQmxvY2tpbmdPdXRwdXQgPSAw
LAogICAgICAgICAgICBQUlVpbnQzMiBzZWdtZW50U2l6ZSA9IDAsCiAgICAgICAgICAgIFBSVWlu
dDMyIHNlZ21lbnRDb3VudCA9IDAsCiAgICAgICAgICAgIG5zSU1lbW9yeSAqc2VnbWVudEFsbG9j
ID0gMCk7CmlubGluZSBuc3Jlc3VsdApOU19OZXdQaXBlKG5zSUlucHV0U3RyZWFtICoqcGlwZUlu
LAogICAgICAgICAgIG5zSU91dHB1dFN0cmVhbSAqKnBpcGVPdXQsCiAgICAgICAgICAgUFJVaW50
MzIgc2VnbWVudFNpemUgPSAwLAogICAgICAgICAgIFBSVWludDMyIG1heFNpemUgPSAwLAogICAg
ICAgICAgIFBSQm9vbCBub25CbG9ja2luZ0lucHV0ID0gMCwKICAgICAgICAgICBQUkJvb2wgbm9u
QmxvY2tpbmdPdXRwdXQgPSAwLAogICAgICAgICAgIG5zSU1lbW9yeSAqc2VnbWVudEFsbG9jID0g
MCkKewogICAgUFJVaW50MzIgc2VnbWVudENvdW50OwogICAgaWYgKHNlZ21lbnRTaXplID09IDAp
CiAgICAgICAgc2VnbWVudENvdW50ID0gMDsKICAgIGVsc2UKICAgICAgICBzZWdtZW50Q291bnQg
PSBtYXhTaXplIC8gc2VnbWVudFNpemU7CiAgICBuc0lBc3luY0lucHV0U3RyZWFtICppbjsKICAg
IG5zSUFzeW5jT3V0cHV0U3RyZWFtICpvdXQ7CiAgICBuc3Jlc3VsdCBydiA9IE5TX05ld1BpcGUy
KCZpbiwgJm91dCwgbm9uQmxvY2tpbmdJbnB1dCwgbm9uQmxvY2tpbmdPdXRwdXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlZ21lbnRTaXplLCBzZWdtZW50Q291bnQsIHNlZ21lbnRB
bGxvYyk7CiAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2OwogICAgKnBpcGVJ
biA9IGluOwogICAgKnBpcGVPdXQgPSBvdXQ7CiAgICByZXR1cm4gMDsKfQojIDcwICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvbmVja28vbnNOZXRVdGlsLmgiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvbmVja28vbnNJUHJvdG9jb2xIYW5kbGVyLmgiIDEKIyAxNyAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL25lY2tvL25zSVByb3RvY29sSGFuZGxlci5oIgpjbGFzcyBuc0lVUkk7CgpjbGFzcyBu
c0lDaGFubmVsOwojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJUHJvdG9jb2xI
YW5kbGVyLmgiCmNsYXNzIG5zSVByb3RvY29sSGFuZGxlciA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7
CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBu
c0lJRCBpaWQgPSB7MHgxNWZkNjk0MCwgMHg4ZWE3LCAweDExZDMsIHsgMHg5MywgMHhhZCwgMHgw
MCwgMHgxMCwgMHg0YiwgMHhhMCwgMHhmZCwgMHg0MCB9fTsgcmV0dXJuIGlpZDt9CgoKCgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldFNjaGVtZShuc0FDU3RyaW5nICYgYVNjaGVtZSkgPSAwOwoKCgoK
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERlZmF1bHRQb3J0KFBSSW50MzIgKmFEZWZhdWx0UG9y
dCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQcm90b2NvbEZsYWdzKFBSVWludDMy
ICphUHJvdG9jb2xGbGFncykgPSAwOwojIDg1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28v
bnNJUHJvdG9jb2xIYW5kbGVyLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBOZXdVUkkoY29uc3QgbnNB
Q1N0cmluZyAmIGFTcGVjLCBjb25zdCBjaGFyICphT3JpZ2luQ2hhcnNldCwgbnNJVVJJICphQmFz
ZVVSSSwgbnNJVVJJICoqX3JldHZhbCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBOZXdD
aGFubmVsKG5zSVVSSSAqYVVSSSwgbnNJQ2hhbm5lbCAqKl9yZXR2YWwpID0gMDsKIyAxMDMgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lQcm90b2NvbEhhbmRsZXIuaCIKICB2aXJ0dWFs
IG5zcmVzdWx0IEFsbG93UG9ydChQUkludDMyIHBvcnQsIGNvbnN0IGNoYXIgKnNjaGVtZSwgUFJC
b29sICpfcmV0dmFsKSA9IDA7CiMgMTE1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJ
UHJvdG9jb2xIYW5kbGVyLmgiCiAgZW51bSB7IFVSSV9TVEQgPSAwVSB9OwoKCgoKICBlbnVtIHsg
VVJJX05PUkVMQVRJVkUgPSAxVSB9OwoKCgoKICBlbnVtIHsgVVJJX05PQVVUSCA9IDJVIH07CiMg
MTM4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJUHJvdG9jb2xIYW5kbGVyLmgiCiAg
ZW51bSB7IEFMTE9XU19QUk9YWSA9IDRVIH07CgoKCgoKCgogIGVudW0geyBBTExPV1NfUFJPWFlf
SFRUUCA9IDhVIH07Cgp9OwojIDcxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNOZXRV
dGlsLmgiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJRmlsZVByb3RvY29s
SGFuZGxlci5oIiAxCiMgMTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lGaWxlUHJv
dG9jb2xIYW5kbGVyLmgiCmNsYXNzIG5zSUZpbGU7CiMgMjcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9uZWNrby9uc0lGaWxlUHJvdG9jb2xIYW5kbGVyLmgiCmNsYXNzIG5zSUZpbGVQcm90b2NvbEhh
bmRsZXIgOiBwdWJsaWMgbnNJUHJvdG9jb2xIYW5kbGVyIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNv
bnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDk4N2ZiMDgz
LCAweGQ3ZmYsIDB4NDZkYywgeyAweDllLCAweGUzLCAweGFiLCAweDZlLCAweDUyLCAweDUwLCAw
eDFkLCAweDUzIH19OyByZXR1cm4gaWlkO30KIyAzOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25l
Y2tvL25zSUZpbGVQcm90b2NvbEhhbmRsZXIuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IE5ld0ZpbGVV
UkkobnNJRmlsZSAqYUZpbGUsIG5zSVVSSSAqKl9yZXR2YWwpID0gMDsKIyA1MCAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL25lY2tvL25zSUZpbGVQcm90b2NvbEhhbmRsZXIuaCIKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldFVSTFNwZWNGcm9tRmlsZShuc0lGaWxlICpmaWxlLCBuc0FDU3RyaW5nICYgX3Jl
dHZhbCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RmlsZUZyb21VUkxTcGVjKGNv
bnN0IG5zQUNTdHJpbmcgJiB1cmwsIG5zSUZpbGUgKipfcmV0dmFsKSA9IDA7Cgp9OwojIDcyICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNOZXRVdGlsLmgiIDIKCiMgMSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL3hwY29tL25zSUxvY2FsRmlsZS5oIiAxCiMgMTAgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS94cGNvbS9uc0lMb2NhbEZpbGUuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
eHBjb20vbnNJRmlsZS5oIiAxCiMgMTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lG
aWxlLmgiCmNsYXNzIG5zSVNpbXBsZUVudW1lcmF0b3I7CiMgNDIgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS94cGNvbS9uc0lGaWxlLmgiCmNsYXNzIG5zSUZpbGUgOiBwdWJsaWMgbnNJU3VwcG9ydHMg
ewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3Qg
bnNJSUQgaWlkID0gezB4YzhjMGEwODAsIDB4MDg2OCwgMHgxMWQzLCB7IDB4OTEsIDB4NWYsIDB4
ZDksIDB4ZDgsIDB4ODksIDB4ZDQsIDB4OGUsIDB4M2MgfX07IHJldHVybiBpaWQ7fQoKCgoKCgoK
ICBlbnVtIHsgTk9STUFMX0ZJTEVfVFlQRSA9IDBVIH07CgogIGVudW0geyBESVJFQ1RPUllfVFlQ
RSA9IDFVIH07CiMgNjkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lGaWxlLmgiCiAg
dmlydHVhbCBuc3Jlc3VsdCBBcHBlbmQoY29uc3QgbnNBU3RyaW5nICYgbm9kZSkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBBcHBlbmROYXRpdmUoY29uc3QgbnNBQ1N0cmluZyAmIG5vZGUpID0g
MDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgTm9ybWFsaXplKHZvaWQpID0gMDsKIyAxMDEgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lGaWxlLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBD
cmVhdGUoUFJVaW50MzIgdHlwZSwgUFJVaW50MzIgcGVybWlzc2lvbnMpID0gMDsKCgoKCgoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRMZWFmTmFtZShuc0FTdHJpbmcgJiBhTGVhZk5hbWUpID0gMDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldExlYWZOYW1lKGNvbnN0IG5zQVN0cmluZyAmIGFMZWFmTmFt
ZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROYXRpdmVMZWFmTmFtZShuc0FDU3RyaW5n
ICYgYU5hdGl2ZUxlYWZOYW1lKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXROYXRpdmVMZWFm
TmFtZShjb25zdCBuc0FDU3RyaW5nICYgYU5hdGl2ZUxlYWZOYW1lKSA9IDA7CiMgMTQ0ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJRmlsZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgQ29w
eVRvKG5zSUZpbGUgKm5ld1BhcmVudERpciwgY29uc3QgbnNBU3RyaW5nICYgbmV3TmFtZSkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDb3B5VG9OYXRpdmUobnNJRmlsZSAqbmV3UGFyZW50RGly
LCBjb25zdCBuc0FDU3RyaW5nICYgbmV3TmFtZSkgPSAwOwojIDE1OSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL3hwY29tL25zSUZpbGUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IENvcHlUb0ZvbGxvd2lu
Z0xpbmtzKG5zSUZpbGUgKm5ld1BhcmVudERpciwgY29uc3QgbnNBU3RyaW5nICYgbmV3TmFtZSkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDb3B5VG9Gb2xsb3dpbmdMaW5rc05hdGl2ZShuc0lG
aWxlICpuZXdQYXJlbnREaXIsIGNvbnN0IG5zQUNTdHJpbmcgJiBuZXdOYW1lKSA9IDA7CiMgMTk2
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJRmlsZS5oIgogIHZpcnR1YWwgbnNyZXN1
bHQgTW92ZVRvKG5zSUZpbGUgKm5ld1BhcmVudERpciwgY29uc3QgbnNBU3RyaW5nICYgbmV3TmFt
ZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBNb3ZlVG9OYXRpdmUobnNJRmlsZSAqbmV3UGFy
ZW50RGlyLCBjb25zdCBuc0FDU3RyaW5nICYgbmV3TmFtZSkgPSAwOwojIDIwOCAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL3hwY29tL25zSUZpbGUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFJlbW92ZShQ
UkJvb2wgcmVjdXJzaXZlKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBlcm1pc3Np
b25zKFBSVWludDMyICphUGVybWlzc2lvbnMpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFBl
cm1pc3Npb25zKFBSVWludDMyIGFQZXJtaXNzaW9ucykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRQZXJtaXNzaW9uc09mTGluayhQUlVpbnQzMiAqYVBlcm1pc3Npb25zT2ZMaW5rKSA9IDA7
CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRQZXJtaXNzaW9uc09mTGluayhQUlVpbnQzMiBhUGVybWlz
c2lvbnNPZkxpbmspID0gMDsKCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMYXN0TW9kaWZp
ZWRUaW1lKFBSSW50NjQgKmFMYXN0TW9kaWZpZWRUaW1lKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRMYXN0TW9kaWZpZWRUaW1lKFBSSW50NjQgYUxhc3RNb2RpZmllZFRpbWUpID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0TGFzdE1vZGlmaWVkVGltZU9mTGluayhQUkludDY0ICphTGFz
dE1vZGlmaWVkVGltZU9mTGluaykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TGFzdE1vZGlm
aWVkVGltZU9mTGluayhQUkludDY0IGFMYXN0TW9kaWZpZWRUaW1lT2ZMaW5rKSA9IDA7CiMgMjQx
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJRmlsZS5oIgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0RmlsZVNpemUoUFJJbnQ2NCAqYUZpbGVTaXplKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRGaWxlU2l6ZShQUkludDY0IGFGaWxlU2l6ZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRGaWxlU2l6ZU9mTGluayhQUkludDY0ICphRmlsZVNpemVPZkxpbmspID0gMDsKIyAyNzMg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lGaWxlLmgiCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRUYXJnZXQobnNBU3RyaW5nICYgYVRhcmdldCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXROYXRpdmVUYXJnZXQobnNBQ1N0cmluZyAmIGFOYXRpdmVUYXJnZXQpID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0UGF0aChuc0FTdHJpbmcgJiBhUGF0aCkgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXROYXRpdmVQYXRoKG5zQUNTdHJpbmcgJiBhTmF0aXZlUGF0aCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBFeGlzdHMoUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IElzV3JpdGFibGUoUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IElzUmVhZGFibGUoUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IElzRXhlY3V0YWJsZShQUkJvb2wgKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgSXNIaWRkZW4oUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IElzRGlyZWN0b3J5KFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJ
c0ZpbGUoUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IElzU3ltbGlu
ayhQUkJvb2wgKl9yZXR2YWwpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgSXNTcGVjaWFs
KFBSQm9vbCAqX3JldHZhbCkgPSAwOwojIDM0MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29t
L25zSUZpbGUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IENyZWF0ZVVuaXF1ZShQUlVpbnQzMiB0eXBl
LCBQUlVpbnQzMiBwZXJtaXNzaW9ucykgPSAwOwojIDM1NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3hwY29tL25zSUZpbGUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IENsb25lKG5zSUZpbGUgKipfcmV0
dmFsKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEVxdWFscyhuc0lGaWxlICppbkZpbGUs
IFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ29udGFpbnMo
bnNJRmlsZSAqaW5GaWxlLCBQUkJvb2wgcmVjdXIsIFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCgoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQYXJlbnQobnNJRmlsZSAqICphUGFyZW50KSA9IDA7CiMg
MzgzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJRmlsZS5oIgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0RGlyZWN0b3J5RW50cmllcyhuc0lTaW1wbGVFbnVtZXJhdG9yICogKmFEaXJlY3Rv
cnlFbnRyaWVzKSA9IDA7Cgp9OwojIDgxOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25z
SUZpbGUuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNEaXJlY3RvcnlTZXJ2
aWNlVXRpbHMuaCIgMQojIDI4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNEaXJlY3Rv
cnlTZXJ2aWNlVXRpbHMuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJUHJv
cGVydGllcy5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lQcm9wZXJ0
aWVzLmgiCmNsYXNzIG5zSVByb3BlcnRpZXMgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGlj
OgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlk
ID0gezB4Nzg2NTA1ODIsIDB4NGU5MywgMHg0YjYwLCB7IDB4OGUsIDB4ODUsIDB4MjYsIDB4ZWIs
IDB4ZDMsIDB4ZWIsIDB4MTQsIDB4Y2EgfX07IHJldHVybiBpaWQ7fQojIDM4ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUveHBjb20vbnNJUHJvcGVydGllcy5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
KGNvbnN0IGNoYXIgKnByb3AsIGNvbnN0IG5zSUlEICYgaWlkLCB2b2lkICogKnJlc3VsdCkgPSAw
OwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXQoY29uc3QgY2hhciAqcHJvcCwgbnNJU3VwcG9y
dHMgKnZhbHVlKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEhhcyhjb25zdCBjaGFyICpw
cm9wLCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBVbmRl
ZmluZShjb25zdCBjaGFyICpwcm9wKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEtl
eXMoUFJVaW50MzIgKmNvdW50LCBjaGFyICoqKmtleXMpID0gMDsKCn07CiMgMjkgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS94cGNvbS9uc0RpcmVjdG9yeVNlcnZpY2VVdGlscy5oIiAyCgoKCgppbmxp
bmUgbnNyZXN1bHQKTlNfR2V0U3BlY2lhbERpcmVjdG9yeShjb25zdCBjaGFyKiBzcGVjaWFsRGly
TmFtZSwgbnNJRmlsZSogKnJlc3VsdCkKewogICAgbnNyZXN1bHQgcnY7CiAgICBzdGF0aWMgY29u
c3QgbnNDSUQga0RpcmVjdG9yeVNlcnZpY2VDSUQgPSB7MHhmMDAxNTJkMCwweGI0MGIsMHgxMWQz
LHsweDhjLCAweDljLCAweDAwLCAweDAwLCAweDY0LCAweDY1LCAweDczLCAweDc0fX07CiAgICBu
c0NPTVB0cjxuc0lQcm9wZXJ0aWVzPiBzZXJ2KGRvX0dldFNlcnZpY2Uoa0RpcmVjdG9yeVNlcnZp
Y2VDSUQsICZydikpOwogICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKCiAg
ICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4gZGlyOwogICAgcnYgPSBzZXJ2LT5HZXQoc3BlY2lhbERp
ck5hbWUsIG5zQ09NVHlwZUluZm88bnNJRmlsZT46OkdldElJRCgpLCBnZXR0ZXJfQWRkUmVmcyhk
aXIpKTsKICAgIGlmICgoKHJ2KSAmIDB4ODAwMDAwMDApKSByZXR1cm4gcnY7CgogICAgKnJlc3Vs
dCA9IHN0YXRpY19jYXN0PCBuc0lGaWxlKiA+KHN0YXRpY19jYXN0PCBuc0lTdXBwb3J0cyogPihk
aXIpKTsKICAgIGlmICgqcmVzdWx0KQogICAgICAgICgqcmVzdWx0KS0+QWRkUmVmKCk7CiAgICBy
ZXR1cm4gMDsKfQojIDgyMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUZpbGUuaCIg
MgojIDExICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJTG9jYWxGaWxlLmgiIDIKCgoK
CgoKCiMgMSAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlz
dC9pbmNsdWRlL25zcHIvcHJsaW5rLmgiIDEKIyA0MyAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxh
LTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJsaW5rLmgiCmV4dGVybiAi
QyIgewoKdHlwZWRlZiBzdHJ1Y3QgUFJMaWJyYXJ5IFBSTGlicmFyeTsKCnR5cGVkZWYgc3RydWN0
IFBSU3RhdGljTGlua1RhYmxlIHsKICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICB2b2lkICgqZnAp
KCk7Cn0gUFJTdGF0aWNMaW5rVGFibGU7CiMgNTkgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0x
LjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3BybGluay5oIgpleHRlcm4gUFJT
dGF0dXMgUFJfU2V0TGlicmFyeVBhdGgoY29uc3QgY2hhciAqcGF0aCk7CiMgNjkgIi92YXIvdG1w
L3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3By
bGluay5oIgpleHRlcm4gY2hhciogUFJfR2V0TGlicmFyeVBhdGgodm9pZCk7CiMgODIgIi92YXIv
dG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5jbHVkZS9uc3By
L3BybGluay5oIgpleHRlcm4gY2hhciogUFJfR2V0TGlicmFyeU5hbWUoY29uc3QgY2hhciAqZGly
LCBjb25zdCBjaGFyICpsaWIpOwoKCgoKCmV4dGVybiB2b2lkIFBSX0ZyZWVMaWJyYXJ5TmFtZShj
aGFyICptZW0pOwojIDEwMiAiL3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21v
emlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJsaW5rLmgiCmV4dGVybiBQUkxpYnJhcnkqIFBSX0xv
YWRMaWJyYXJ5KGNvbnN0IGNoYXIgKm5hbWUpOwojIDEyMyAiL3Zhci90bXAvcG9ydGFnZS9tb3pp
bGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRlL25zcHIvcHJsaW5rLmgiCnR5cGVk
ZWYgZW51bSBQUkxpYlNwZWNUeXBlIHsKICAgIFBSX0xpYlNwZWNfUGF0aG5hbWUsCiAgICBQUl9M
aWJTcGVjX01hY05hbWVkRnJhZ21lbnQsCiAgICBQUl9MaWJTcGVjX01hY0luZGV4ZWRGcmFnbWVu
dAp9IFBSTGliU3BlY1R5cGU7CgpzdHJ1Y3QgRlNTcGVjOwoKdHlwZWRlZiBzdHJ1Y3QgUFJMaWJT
cGVjIHsKICAgIFBSTGliU3BlY1R5cGUgdHlwZTsKICAgIHVuaW9uIHsKCiAgICAgICAgY29uc3Qg
Y2hhciAqcGF0aG5hbWU7CgoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICBjb25zdCBzdHJ1
Y3QgRlNTcGVjICpmc3NwZWM7CiAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAg
fSBtYWNfbmFtZWRfZnJhZ21lbnQ7CgoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICBjb25z
dCBzdHJ1Y3QgRlNTcGVjICpmc3NwZWM7CiAgICAgICAgICAgIFBSVWludDMyIGluZGV4OwogICAg
ICAgIH0gbWFjX2luZGV4ZWRfZnJhZ21lbnQ7CiAgICB9IHZhbHVlOwp9IFBSTGliU3BlYzsKIyAx
NjYgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3ppbGxhL2Rpc3QvaW5j
bHVkZS9uc3ByL3BybGluay5oIgpleHRlcm4gUFJMaWJyYXJ5ICoKUFJfTG9hZExpYnJhcnlXaXRo
RmxhZ3MoCiAgICBQUkxpYlNwZWMgbGliU3BlYywKICAgIFBSSW50biBmbGFncwopOwojIDE4MSAi
L3Zhci90bXAvcG9ydGFnZS9tb3ppbGxhLTEuMy1yMS93b3JrL21vemlsbGEvZGlzdC9pbmNsdWRl
L25zcHIvcHJsaW5rLmgiCmV4dGVybiBQUlN0YXR1cyBQUl9VbmxvYWRMaWJyYXJ5KFBSTGlicmFy
eSAqbGliKTsKIyAxOTEgIi92YXIvdG1wL3BvcnRhZ2UvbW96aWxsYS0xLjMtcjEvd29yay9tb3pp
bGxhL2Rpc3QvaW5jbHVkZS9uc3ByL3BybGluay5oIgpleHRlcm4gdm9pZCogUFJfRmluZFN5bWJv
bChQUkxpYnJhcnkgKmxpYiwgY29uc3QgY2hhciAqbmFtZSk7CiMgMjAxICIvdmFyL3RtcC9wb3J0
YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmxpbmsu
aCIKdHlwZWRlZiB2b2lkICgqUFJGdW5jUHRyKSgpOwpleHRlcm4gUFJGdW5jUHRyIFBSX0ZpbmRG
dW5jdGlvblN5bWJvbChQUkxpYnJhcnkgKmxpYiwgY29uc3QgY2hhciAqbmFtZSk7CiMgMjE0ICIv
dmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUv
bnNwci9wcmxpbmsuaCIKZXh0ZXJuIHZvaWQqIFBSX0ZpbmRTeW1ib2xBbmRMaWJyYXJ5KGNvbnN0
IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBSTGlicmFyeSogKmxpYik7CiMgMjI1ICIvdmFyL3RtcC9wb3J0YWdlL21vemls
bGEtMS4zLXIxL3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmxpbmsuaCIKZXh0ZXJu
IFBSRnVuY1B0ciBQUl9GaW5kRnVuY3Rpb25TeW1ib2xBbmRMaWJyYXJ5KGNvbnN0IGNoYXIgKm5h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBSTGlicmFyeSogKmxpYik7CiMgMjM5ICIvdmFyL3RtcC9wb3J0YWdlL21vemlsbGEtMS4zLXIx
L3dvcmsvbW96aWxsYS9kaXN0L2luY2x1ZGUvbnNwci9wcmxpbmsuaCIKZXh0ZXJuIFBSTGlicmFy
eSogUFJfTG9hZFN0YXRpY0xpYnJhcnkoCiAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBQUlN0
YXRpY0xpbmtUYWJsZSAqdGFibGUpOwoKCgoKCgoKZXh0ZXJuIGNoYXIgKiBQUl9HZXRMaWJyYXJ5
RmlsZVBhdGhuYW1lKGNvbnN0IGNoYXIgKm5hbWUsIFBSRnVuY1B0ciBhZGRyKTsKCn0KIyAxOSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUxvY2FsRmlsZS5oIiAyCiMgMzcgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lMb2NhbEZpbGUuaCIKY2xhc3MgbnNJTG9jYWxGaWxl
IDogcHVibGljIG5zSUZpbGUgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJ
RCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YWE2MTBmMjAsIDB4YTg4OSwgMHgxMWQz
LCB7IDB4OGMsIDB4ODEsIDB4MDAsIDB4MDAsIDB4NjQsIDB4NjUsIDB4NzMsIDB4NzQgfX07IHJl
dHVybiBpaWQ7fQojIDYwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJTG9jYWxGaWxl
LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBJbml0V2l0aFBhdGgoY29uc3QgbnNBU3RyaW5nICYgZmls
ZVBhdGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSW5pdFdpdGhOYXRpdmVQYXRoKGNvbnN0
IG5zQUNTdHJpbmcgJiBmaWxlUGF0aCkgPSAwOwojIDc0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
eHBjb20vbnNJTG9jYWxGaWxlLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBJbml0V2l0aEZpbGUobnNJ
TG9jYWxGaWxlICphRmlsZSkgPSAwOwojIDkyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20v
bnNJTG9jYWxGaWxlLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGb2xsb3dMaW5rcyhQUkJvb2wg
KmFGb2xsb3dMaW5rcykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Rm9sbG93TGlua3MoUFJC
b29sIGFGb2xsb3dMaW5rcykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBPcGVuTlNQUkZpbGVE
ZXNjKFBSSW50MzIgZmxhZ3MsIFBSSW50MzIgbW9kZSwgUFJGaWxlRGVzYyAqICpfcmV0dmFsKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IE9wZW5BTlNJRmlsZURlc2MoY29uc3QgY2hhciAqbW9k
ZSwgRklMRSAqICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IExvYWQoUFJMaWJy
YXJ5ICogKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RGlza1NwYWNlQXZh
aWxhYmxlKFBSSW50NjQgKmFEaXNrU3BhY2VBdmFpbGFibGUpID0gMDsKIyAxMTkgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lMb2NhbEZpbGUuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEFw
cGVuZFJlbGF0aXZlUGF0aChjb25zdCBuc0FTdHJpbmcgJiByZWxhdGl2ZUZpbGVQYXRoKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEFwcGVuZFJlbGF0aXZlTmF0aXZlUGF0aChjb25zdCBuc0FD
U3RyaW5nICYgcmVsYXRpdmVGaWxlUGF0aCkgPSAwOwojIDEzMiAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL3hwY29tL25zSUxvY2FsRmlsZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UGVyc2lzdGVu
dERlc2NyaXB0b3IobnNBQ1N0cmluZyAmIGFQZXJzaXN0ZW50RGVzY3JpcHRvcikgPSAwOwogIHZp
cnR1YWwgbnNyZXN1bHQgU2V0UGVyc2lzdGVudERlc2NyaXB0b3IoY29uc3QgbnNBQ1N0cmluZyAm
IGFQZXJzaXN0ZW50RGVzY3JpcHRvcikgPSAwOwojIDE0MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L3hwY29tL25zSUxvY2FsRmlsZS5oIgogIHZpcnR1YWwgbnNyZXN1bHQgUmV2ZWFsKHZvaWQpID0g
MDsKIyAxNTMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lMb2NhbEZpbGUuaCIKICB2
aXJ0dWFsIG5zcmVzdWx0IExhdW5jaCh2b2lkKSA9IDA7CiMgMTY4ICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUveHBjb20vbnNJTG9jYWxGaWxlLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRSZWxhdGl2
ZURlc2NyaXB0b3IobnNJTG9jYWxGaWxlICpmcm9tRmlsZSwgbnNBQ1N0cmluZyAmIF9yZXR2YWwp
ID0gMDsKIyAxODIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lMb2NhbEZpbGUuaCIK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldFJlbGF0aXZlRGVzY3JpcHRvcihuc0lMb2NhbEZpbGUgKmZy
b21GaWxlLCBjb25zdCBuc0FDU3RyaW5nICYgcmVsYXRpdmVEZXNjKSA9IDA7Cgp9OwojIDc0ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNOZXRVdGlsLmgiIDIKIyAxICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbmVja28vbnNJRmlsZVN0cmVhbXMuaCIgMQojIDIxICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvbmVja28vbnNJRmlsZVN0cmVhbXMuaCIKY2xhc3MgbnNJRmlsZTsKIyAzNCAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSUZpbGVTdHJlYW1zLmgiCmNsYXNzIG5zSUZpbGVJ
bnB1dFN0cmVhbSA6IHB1YmxpYyBuc0lJbnB1dFN0cmVhbSB7CiBwdWJsaWM6CgogIHN0YXRpYyBj
b25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhlM2Q1NmEy
MCwgMHhjN2VjLCAweDExZDMsIHsgMHg4YywgMHhkYSwgMHgwMCwgMHg2MCwgMHhiMCwgMHhmYywg
MHgxNCwgMHhhMyB9fTsgcmV0dXJuIGlpZDt9CiMgNDcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9u
ZWNrby9uc0lGaWxlU3RyZWFtcy5oIgogIHZpcnR1YWwgbnNyZXN1bHQgSW5pdChuc0lGaWxlICpm
aWxlLCBQUkludDMyIGlvRmxhZ3MsIFBSSW50MzIgcGVybSwgUFJJbnQzMiBiZWhhdmlvckZsYWdz
KSA9IDA7CiMgNTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lGaWxlU3RyZWFtcy5o
IgogIGVudW0geyBERUxFVEVfT05fQ0xPU0UgPSAyIH07CgoKCgoKICBlbnVtIHsgQ0xPU0VfT05f
RU9GID0gNCB9OwoKCgoKCgogIGVudW0geyBSRU9QRU5fT05fUkVXSU5EID0gOCB9OwoKfTsKIyAx
MzQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lGaWxlU3RyZWFtcy5oIgpjbGFzcyBu
c0lGaWxlT3V0cHV0U3RyZWFtIDogcHVibGljIG5zSU91dHB1dFN0cmVhbSB7CiBwdWJsaWM6Cgog
IHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7
MHhlNmY2ODA0MCwgMHhjN2VjLCAweDExZDMsIHsgMHg4YywgMHhkYSwgMHgwMCwgMHg2MCwgMHhi
MCwgMHhmYywgMHgxNCwgMHhhMyB9fTsgcmV0dXJuIGlpZDt9CiMgMTQ3ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvbmVja28vbnNJRmlsZVN0cmVhbXMuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEluaXQo
bnNJRmlsZSAqZmlsZSwgUFJJbnQzMiBpb0ZsYWdzLCBQUkludDMyIHBlcm0sIFBSSW50MzIgYmVo
YXZpb3JGbGFncykgPSAwOwoKfTsKIyA3NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25z
TmV0VXRpbC5oIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVByb3RvY29s
UHJveHlTZXJ2aWNlLmgiIDEKIyAyMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSVBy
b3RvY29sUHJveHlTZXJ2aWNlLmgiCmNsYXNzIG5zSVByb3h5SW5mbzsKIyAzNCAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL25lY2tvL25zSVByb3RvY29sUHJveHlTZXJ2aWNlLmgiCmNsYXNzIG5zSVBy
b3RvY29sUHJveHlTZXJ2aWNlIDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3Rh
dGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDQ5
NWNjOTgwLCAweGUwZDQsIDB4MTFkMywgeyAweGExLCAweGE4LCAweDAwLCAweDUwLCAweDA0LCAw
eDFjLCAweGFmLCAweDQ0IH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
UHJveHlFbmFibGVkKFBSQm9vbCAqYVByb3h5RW5hYmxlZCkgPSAwOwoKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgRXhhbWluZUZvclByb3h5KG5zSVVSSSAqYVVSSSwgbnNJUHJveHlJbmZvICoqX3JldHZh
bCkgPSAwOwoKCgogIHZpcnR1YWwgbnNyZXN1bHQgTmV3UHJveHlJbmZvKGNvbnN0IGNoYXIgKnR5
cGUsIGNvbnN0IGNoYXIgKmhvc3QsIFBSSW50MzIgcG9ydCwgbnNJUHJveHlJbmZvICoqX3JldHZh
bCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgQWRkTm9Qcm94eUZvcihjb25zdCBjaGFy
ICpob3N0LCBQUkludDMyIHBvcnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVtb3ZlTm9Q
cm94eUZvcihjb25zdCBjaGFyICpob3N0LCBQUkludDMyIHBvcnQpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgQ29uZmlndXJlRnJvbVBBQyhjb25zdCBjaGFyICp1cmwpID0gMDsKCn07CiMgNzYg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc05ldFV0aWwuaCIgMgojIDEgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lQcm94eUluZm8uaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvbmVja28vbnNJUHJveHlJbmZvLmgiCmNsYXNzIG5zSVByb3h5SW5mbyA6IHB1Ymxp
YyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkg
e3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhiNjVkMjJiMCwgMHgxZGQxLCAweDExYjIsIHsg
MHg4ZiwgMHg5NSwgMHg5MiwgMHgwZSwgMHg1YiwgMHg3YiwgMHg1NiwgMHhmMCB9fTsgcmV0dXJu
IGlpZDt9CgoKICB2aXJ0dWFsIGNvbnN0IGNoYXIqIEhvc3Qodm9pZCkgPSAwOwoKCiAgdmlydHVh
bCBQUkludDMyIFBvcnQodm9pZCkgPSAwOwoKCiAgdmlydHVhbCBjb25zdCBjaGFyKiBUeXBlKHZv
aWQpID0gMDsKCn07CiMgNzcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc05ldFV0aWwu
aCIgMgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJQnVmZmVyZWRTdHJlYW1z
LmgiIDEKIyAzMyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSUJ1ZmZlcmVkU3RyZWFt
cy5oIgpjbGFzcyBuc0lCdWZmZXJlZElucHV0U3RyZWFtIDogcHVibGljIG5zSUlucHV0U3RyZWFt
IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0
IG5zSUlEIGlpZCA9IHsweDYxNmY1YjQ4LCAweGRhMDksIDB4MTFkMywgeyAweDhjLCAweGRhLCAw
eDAwLCAweDYwLCAweGIwLCAweGZjLCAweDE0LCAweGEzIH19OyByZXR1cm4gaWlkO30KCgoKCgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEluaXQobnNJSW5wdXRTdHJlYW0gKmZpbGxGcm9tU3RyZWFtLCBQ
UlVpbnQzMiBidWZmZXJTaXplKSA9IDA7Cgp9OwojIDEwOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L25lY2tvL25zSUJ1ZmZlcmVkU3RyZWFtcy5oIgpjbGFzcyBuc0lCdWZmZXJlZE91dHB1dFN0cmVh
bSA6IHB1YmxpYyBuc0lPdXRwdXRTdHJlYW0gewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJ
SUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4NjQ3NjM3OGEsIDB4ZGEw
OSwgMHgxMWQzLCB7IDB4OGMsIDB4ZGEsIDB4MDAsIDB4NjAsIDB4YjAsIDB4ZmMsIDB4MTQsIDB4
YTMgfX07IHJldHVybiBpaWQ7fQoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgSW5pdChuc0lPdXRw
dXRTdHJlYW0gKnNpbmtUb1N0cmVhbSwgUFJVaW50MzIgYnVmZmVyU2l6ZSkgPSAwOwoKfTsKIyA3
OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zTmV0VXRpbC5oIiAyCiMgMSAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL25lY2tvL25zSUlucHV0U3RyZWFtUHVtcC5oIiAxCiMgMTcgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lJbnB1dFN0cmVhbVB1bXAuaCIKY2xhc3MgbnNJSW5w
dXRTdHJlYW07CgpjbGFzcyBuc0lTdHJlYW1MaXN0ZW5lcjsKIyAyOSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL25lY2tvL25zSUlucHV0U3RyZWFtUHVtcC5oIgpjbGFzcyBuc0lJbnB1dFN0cmVhbVB1
bXAgOiBwdWJsaWMgbnNJUmVxdWVzdCB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYg
R2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhmN2RkOGQ4NywgMHhlZmE3LCAw
eDQ4Y2MsIHsgMHg5ZCwgMHg5NCwgMHhkZiwgMHg0OCwgMHg4ZCwgMHhmMCwgMHhiMywgMHhmOSB9
fTsgcmV0dXJuIGlpZDt9CiMgNjIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lJbnB1
dFN0cmVhbVB1bXAuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEluaXQobnNJSW5wdXRTdHJlYW0gKmFT
dHJlYW0sIFBSSW50MzIgYVN0cmVhbVBvcywgUFJJbnQzMiBhU3RyZWFtTGVuLCBQUlVpbnQzMiBh
U2VnbWVudFNpemUsIFBSVWludDMyIGFTZWdtZW50Q291bnQsIFBSQm9vbCBhQ2xvc2VXaGVuRG9u
ZSkgPSAwOwojIDc0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbmVja28vbnNJSW5wdXRTdHJlYW1Q
dW1wLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBBc3luY1JlYWQobnNJU3RyZWFtTGlzdGVuZXIgKmFM
aXN0ZW5lciwgbnNJU3VwcG9ydHMgKmFMaXN0ZW5lckNvbnRleHQpID0gMDsKCn07CiMgODAgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc05ldFV0aWwuaCIgMgojIDEgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9uZWNrby9uc0lBc3luY1N0cmVhbUNvcGllci5oIiAxCiMgMTcgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lBc3luY1N0cmVhbUNvcGllci5oIgpjbGFzcyBuc0lJbnB1
dFN0cmVhbTsKCmNsYXNzIG5zSU91dHB1dFN0cmVhbTsKCmNsYXNzIG5zSVJlcXVlc3RPYnNlcnZl
cjsKIyAzMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zSUFzeW5jU3RyZWFtQ29waWVy
LmgiCmNsYXNzIG5zSUFzeW5jU3RyZWFtQ29waWVyIDogcHVibGljIG5zSVJlcXVlc3QgewogcHVi
bGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQg
aWlkID0gezB4ZWFhNDkxNDEsIDB4YzIxYywgMHg0ZmU4LCB7IDB4YTcsIDB4OWIsIDB4NzcsIDB4
ODYsIDB4MGEsIDB4MzksIDB4MTAsIDB4YWEgfX07IHJldHVybiBpaWQ7fQojIDUzICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvbmVja28vbnNJQXN5bmNTdHJlYW1Db3BpZXIuaCIKICB2aXJ0dWFsIG5z
cmVzdWx0IEluaXQobnNJSW5wdXRTdHJlYW0gKmFTb3VyY2UsIG5zSU91dHB1dFN0cmVhbSAqYVNp
bmssIFBSQm9vbCBhU291cmNlQnVmZmVyZWQsIFBSQm9vbCBhU2lua0J1ZmZlcmVkLCBQUlVpbnQz
MiBhQ2h1bmtTaXplKSA9IDA7CiMgNjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9uZWNrby9uc0lB
c3luY1N0cmVhbUNvcGllci5oIgogIHZpcnR1YWwgbnNyZXN1bHQgQXN5bmNDb3B5KG5zSVJlcXVl
c3RPYnNlcnZlciAqYU9ic2VydmVyLCBuc0lTdXBwb3J0cyAqYU9ic2VydmVyQ29udGV4dCkgPSAw
OwoKfTsKIyA4MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL25lY2tvL25zTmV0VXRpbC5oIiAyCgoK
aW5saW5lIGNvbnN0IG5zR2V0U2VydmljZUJ5Q0lECmRvX0dldElPU2VydmljZShuc3Jlc3VsdCog
ZXJyb3IgPSAwKQp7CiAgICBzdGF0aWMgY29uc3QgbnNDSUQga0lPU2VydmljZUNJRCA9IHsgMHg5
YWM5ZTc3MCwgMHgxOGJjLCAweDExZDMsIHsweDkzLCAweDM3LCAweDAwLCAweDEwLCAweDRiLCAw
eGEwLCAweGZkLCAweDQwfSB9OwogICAgcmV0dXJuIG5zR2V0U2VydmljZUJ5Q0lEKGtJT1NlcnZp
Y2VDSUQsIDAsIGVycm9yKTsKfQoKaW5saW5lIG5zcmVzdWx0Ck5TX05ld1VSSShuc0lVUkkgKipy
ZXN1bHQsCiAgICAgICAgICBjb25zdCBuc0FDU3RyaW5nICZzcGVjLAogICAgICAgICAgY29uc3Qg
Y2hhciAqY2hhcnNldCA9IDAsCiAgICAgICAgICBuc0lVUkkgKmJhc2VVUkkgPSAwLAogICAgICAg
ICAgbnNJSU9TZXJ2aWNlICppb1NlcnZpY2UgPSAwKQp7CiAgICBuc3Jlc3VsdCBydjsKCiAgICBu
c0NPTVB0cjxuc0lJT1NlcnZpY2U+IHNlcnY7CiAgICBpZiAoaW9TZXJ2aWNlID09IDApIHsKICAg
ICAgICBzZXJ2ID0gZG9fR2V0SU9TZXJ2aWNlKCZydik7CiAgICAgICAgaWYgKCgocnYpICYgMHg4
MDAwMDAwMCkpIHJldHVybiBydjsKICAgICAgICBpb1NlcnZpY2UgPSBzZXJ2LmdldCgpOwogICAg
fQoKICAgIHJldHVybiBpb1NlcnZpY2UtPk5ld1VSSShzcGVjLCBjaGFyc2V0LCBiYXNlVVJJLCBy
ZXN1bHQpOwp9CgppbmxpbmUgbnNyZXN1bHQKTlNfTmV3VVJJKG5zSVVSSSogKnJlc3VsdCwKICAg
ICAgICAgIGNvbnN0IG5zQVN0cmluZyYgc3BlYywKICAgICAgICAgIGNvbnN0IGNoYXIgKmNoYXJz
ZXQgPSAwLAogICAgICAgICAgbnNJVVJJKiBiYXNlVVJJID0gMCwKICAgICAgICAgIG5zSUlPU2Vy
dmljZSogaW9TZXJ2aWNlID0gMCkKewogICAgcmV0dXJuIE5TX05ld1VSSShyZXN1bHQsIE5TX0Nv
bnZlcnRVQ1MydG9VVEY4KHNwZWMpLCBjaGFyc2V0LCBiYXNlVVJJLCBpb1NlcnZpY2UpOwp9Cgpp
bmxpbmUgbnNyZXN1bHQKTlNfTmV3VVJJKG5zSVVSSSogKnJlc3VsdCwKICAgICAgICAgIGNvbnN0
IGNoYXIgKnNwZWMsCiAgICAgICAgICBuc0lVUkkqIGJhc2VVUkkgPSAwLAogICAgICAgICAgbnNJ
SU9TZXJ2aWNlKiBpb1NlcnZpY2UgPSAwKQp7CiAgICByZXR1cm4gTlNfTmV3VVJJKHJlc3VsdCwg
bnNEZXBlbmRlbnRDU3RyaW5nKHNwZWMpLCAwLCBiYXNlVVJJLCBpb1NlcnZpY2UpOwp9Cgppbmxp
bmUgbnNyZXN1bHQKTlNfTmV3RmlsZVVSSShuc0lVUkkqICpyZXN1bHQsCiAgICAgICAgICAgICAg
bnNJRmlsZSogc3BlYywKICAgICAgICAgICAgICBuc0lJT1NlcnZpY2UqIGlvU2VydmljZSA9IDAp
CnsKICAgIG5zcmVzdWx0IHJ2OwoKICAgIG5zQ09NUHRyPG5zSUlPU2VydmljZT4gc2VydjsKICAg
IGlmIChpb1NlcnZpY2UgPT0gMCkgewogICAgICAgIHNlcnYgPSBkb19HZXRJT1NlcnZpY2UoJnJ2
KTsKICAgICAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2OwogICAgICAgIGlv
U2VydmljZSA9IHNlcnYuZ2V0KCk7CiAgICB9CgogICAgcmV0dXJuIGlvU2VydmljZS0+TmV3Rmls
ZVVSSShzcGVjLCByZXN1bHQpOwp9CgppbmxpbmUgbnNyZXN1bHQKTlNfTmV3Q2hhbm5lbChuc0lD
aGFubmVsKiAqcmVzdWx0LAogICAgICAgICAgICAgIG5zSVVSSSogdXJpLAogICAgICAgICAgICAg
IG5zSUlPU2VydmljZSogaW9TZXJ2aWNlID0gMCwKICAgICAgICAgICAgICBuc0lMb2FkR3JvdXAq
IGxvYWRHcm91cCA9IDAsCiAgICAgICAgICAgICAgbnNJSW50ZXJmYWNlUmVxdWVzdG9yKiBub3Rp
ZmljYXRpb25DYWxsYmFja3MgPSAwLAogICAgICAgICAgICAgIG5zTG9hZEZsYWdzIGxvYWRBdHRy
aWJ1dGVzID0gc3RhdGljX2Nhc3Q8IG5zTG9hZEZsYWdzID4obnNJUmVxdWVzdDo6TE9BRF9OT1JN
QUwpKQp7CiAgICBuc3Jlc3VsdCBydjsKCiAgICBuc0NPTVB0cjxuc0lJT1NlcnZpY2U+IHNlcnY7
CiAgICBpZiAoaW9TZXJ2aWNlID09IDApIHsKICAgICAgICBzZXJ2ID0gZG9fR2V0SU9TZXJ2aWNl
KCZydik7CiAgICAgICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKICAgICAg
ICBpb1NlcnZpY2UgPSBzZXJ2LmdldCgpOwogICAgfQoKICAgIG5zSUNoYW5uZWwqIGNoYW5uZWwg
PSAwOwogICAgcnYgPSBpb1NlcnZpY2UtPk5ld0NoYW5uZWxGcm9tVVJJKHVyaSwgJmNoYW5uZWwp
OwogICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKCiAgICBpZiAobG9hZEdy
b3VwKSB7CiAgICAgICAgcnYgPSBjaGFubmVsLT5TZXRMb2FkR3JvdXAobG9hZEdyb3VwKTsKICAg
ICAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2OwogICAgfQogICAgaWYgKG5v
dGlmaWNhdGlvbkNhbGxiYWNrcykgewogICAgICAgIHJ2ID0gY2hhbm5lbC0+U2V0Tm90aWZpY2F0
aW9uQ2FsbGJhY2tzKG5vdGlmaWNhdGlvbkNhbGxiYWNrcyk7CiAgICAgICAgaWYgKCgocnYpICYg
MHg4MDAwMDAwMCkpIHJldHVybiBydjsKICAgIH0KICAgIGlmIChsb2FkQXR0cmlidXRlcyAhPSBu
c0lSZXF1ZXN0OjpMT0FEX05PUk1BTCkgewogICAgICAgIHJ2ID0gY2hhbm5lbC0+U2V0TG9hZEZs
YWdzKGxvYWRBdHRyaWJ1dGVzKTsKICAgICAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0
dXJuIHJ2OwogICAgfQoKICAgICpyZXN1bHQgPSBjaGFubmVsOwogICAgcmV0dXJuIHJ2Owp9CgoK
CgoKCgppbmxpbmUgbnNyZXN1bHQKTlNfT3BlblVSSShuc0lJbnB1dFN0cmVhbSogKnJlc3VsdCwK
ICAgICAgICAgICBuc0lVUkkqIHVyaSwKICAgICAgICAgICBuc0lJT1NlcnZpY2UqIGlvU2Vydmlj
ZSA9IDAsCiAgICAgICAgICAgbnNJTG9hZEdyb3VwKiBsb2FkR3JvdXAgPSAwLAogICAgICAgICAg
IG5zSUludGVyZmFjZVJlcXVlc3Rvciogbm90aWZpY2F0aW9uQ2FsbGJhY2tzID0gMCwKICAgICAg
ICAgICBuc0xvYWRGbGFncyBsb2FkQXR0cmlidXRlcyA9IHN0YXRpY19jYXN0PCBuc0xvYWRGbGFn
cyA+KG5zSVJlcXVlc3Q6OkxPQURfTk9STUFMKSkKewogICAgbnNyZXN1bHQgcnY7CiAgICBuc0NP
TVB0cjxuc0lDaGFubmVsPiBjaGFubmVsOwoKICAgIHJ2ID0gTlNfTmV3Q2hhbm5lbChnZXR0ZXJf
QWRkUmVmcyhjaGFubmVsKSwgdXJpLCBpb1NlcnZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAg
bG9hZEdyb3VwLCBub3RpZmljYXRpb25DYWxsYmFja3MsIGxvYWRBdHRyaWJ1dGVzKTsKICAgIGlm
ICgoKHJ2KSAmIDB4ODAwMDAwMDApKSByZXR1cm4gcnY7CgogICAgbnNJSW5wdXRTdHJlYW0qIGlu
U3RyOwogICAgcnYgPSBjaGFubmVsLT5PcGVuKCZpblN0cik7CiAgICBpZiAoKChydikgJiAweDgw
MDAwMDAwKSkgcmV0dXJuIHJ2OwoKICAgICpyZXN1bHQgPSBpblN0cjsKICAgIHJldHVybiBydjsK
fQoKaW5saW5lIG5zcmVzdWx0Ck5TX09wZW5VUkkobnNJU3RyZWFtTGlzdGVuZXIqIGFDb25zdW1l
ciwKICAgICAgICAgICBuc0lTdXBwb3J0cyogY29udGV4dCwKICAgICAgICAgICBuc0lVUkkqIHVy
aSwKICAgICAgICAgICBuc0lJT1NlcnZpY2UqIGlvU2VydmljZSA9IDAsCiAgICAgICAgICAgbnNJ
TG9hZEdyb3VwKiBsb2FkR3JvdXAgPSAwLAogICAgICAgICAgIG5zSUludGVyZmFjZVJlcXVlc3Rv
ciogbm90aWZpY2F0aW9uQ2FsbGJhY2tzID0gMCwKICAgICAgICAgICBuc0xvYWRGbGFncyBsb2Fk
QXR0cmlidXRlcyA9IHN0YXRpY19jYXN0PCBuc0xvYWRGbGFncyA+KG5zSVJlcXVlc3Q6OkxPQURf
Tk9STUFMKSkKewogICAgbnNyZXN1bHQgcnY7CiAgICBuc0NPTVB0cjxuc0lDaGFubmVsPiBjaGFu
bmVsOwoKICAgIHJ2ID0gTlNfTmV3Q2hhbm5lbChnZXR0ZXJfQWRkUmVmcyhjaGFubmVsKSwgdXJp
LCBpb1NlcnZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgbG9hZEdyb3VwLCBub3RpZmljYXRp
b25DYWxsYmFja3MsIGxvYWRBdHRyaWJ1dGVzKTsKICAgIGlmICgoKHJ2KSAmIDB4ODAwMDAwMDAp
KSByZXR1cm4gcnY7CgogICAgcnYgPSBjaGFubmVsLT5Bc3luY09wZW4oYUNvbnN1bWVyLCBjb250
ZXh0KTsKICAgIHJldHVybiBydjsKfQoKaW5saW5lIG5zcmVzdWx0Ck5TX01ha2VBYnNvbHV0ZVVS
SShuc0FDU3RyaW5nICZyZXN1bHQsCiAgICAgICAgICAgICAgICAgICBjb25zdCBuc0FDU3RyaW5n
ICZzcGVjLAogICAgICAgICAgICAgICAgICAgbnNJVVJJICpiYXNlVVJJLAogICAgICAgICAgICAg
ICAgICAgbnNJSU9TZXJ2aWNlICppb1NlcnZpY2UgPSAwKQp7CiAgICBpZiAoIWJhc2VVUkkpIHsK
ICAgICAgICA7CiAgICAgICAgcmVzdWx0ID0gc3BlYzsKICAgICAgICByZXR1cm4gMDsKICAgIH0K
CiAgICBpZiAoc3BlYy5Jc0VtcHR5KCkpCiAgICAgICAgcmV0dXJuIGJhc2VVUkktPkdldFNwZWMo
cmVzdWx0KTsKCiAgICByZXR1cm4gYmFzZVVSSS0+UmVzb2x2ZShzcGVjLCByZXN1bHQpOwp9Cgpp
bmxpbmUgbnNyZXN1bHQKTlNfTWFrZUFic29sdXRlVVJJKGNoYXIgKipyZXN1bHQsCiAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICpzcGVjLAogICAgICAgICAgICAgICAgICAgbnNJVVJJICpi
YXNlVVJJLAogICAgICAgICAgICAgICAgICAgbnNJSU9TZXJ2aWNlICppb1NlcnZpY2UgPSAwKQp7
CiAgICBuc0NBdXRvU3RyaW5nIHJlc3VsdEJ1ZjsKCiAgICBuc3Jlc3VsdCBydiA9IE5TX01ha2VB
YnNvbHV0ZVVSSShyZXN1bHRCdWYsIG5zRGVwZW5kZW50Q1N0cmluZyhzcGVjKSwgYmFzZVVSSSwg
aW9TZXJ2aWNlKTsKICAgIGlmICgoKHJ2KSAmIDB4ODAwMDAwMDApKSByZXR1cm4gcnY7CgogICAg
KnJlc3VsdCA9IFRvTmV3Q1N0cmluZyhyZXN1bHRCdWYpOwogICAgcmV0dXJuICpyZXN1bHQgPyAw
IDogKChuc3Jlc3VsdCkgMHg4MDA3MDAwZUwpOwp9CgppbmxpbmUgbnNyZXN1bHQKTlNfTWFrZUFi
c29sdXRlVVJJKG5zQVN0cmluZyAmcmVzdWx0LAogICAgICAgICAgICAgICAgICAgY29uc3QgbnNB
U3RyaW5nICZzcGVjLAogICAgICAgICAgICAgICAgICAgbnNJVVJJICpiYXNlVVJJLAogICAgICAg
ICAgICAgICAgICAgbnNJSU9TZXJ2aWNlICppb1NlcnZpY2UgPSAwKQp7CiAgICBpZiAoIWJhc2VV
UkkpIHsKICAgICAgICA7CiAgICAgICAgcmVzdWx0ID0gc3BlYzsKICAgICAgICByZXR1cm4gMDsK
ICAgIH0KCiAgICBuc0NBdXRvU3RyaW5nIHJlc3VsdEJ1ZjsKICAgIG5zcmVzdWx0IHJ2OwoKICAg
IGlmIChzcGVjLklzRW1wdHkoKSkKICAgICAgICBydiA9IGJhc2VVUkktPkdldFNwZWMocmVzdWx0
QnVmKTsKICAgIGVsc2UKICAgICAgICBydiA9IGJhc2VVUkktPlJlc29sdmUoTlNfQ29udmVydFVD
UzJ0b1VURjgoc3BlYyksIHJlc3VsdEJ1Zik7CiAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkg
cmV0dXJuIHJ2OwoKICAgIHJlc3VsdCA9IE5TX0NvbnZlcnRVVEY4dG9VQ1MyKHJlc3VsdEJ1Zik7
CiAgICByZXR1cm4gMDsKfQoKaW5saW5lIG5zcmVzdWx0Ck5TX05ld0lucHV0U3RyZWFtQ2hhbm5l
bChuc0lDaGFubmVsICoqcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgbnNJVVJJICp1
cmksCiAgICAgICAgICAgICAgICAgICAgICAgICBuc0lJbnB1dFN0cmVhbSAqc3RyZWFtLAogICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgbnNBQ1N0cmluZyAmY29udGVudFR5cGUgPSBuc0Rl
cGVuZGVudENTdHJpbmcoIiIsIFBSVWludDMyKHNpemVvZigiIiktMSkpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgbnNBQ1N0cmluZyAmY29udGVudENoYXJzZXQgPSBuc0RlcGVuZGVu
dENTdHJpbmcoIiIsIFBSVWludDMyKHNpemVvZigiIiktMSkpKQp7CiAgICBuc3Jlc3VsdCBydjsK
CiAgICBzdGF0aWMgY29uc3QgbnNDSUQga0lucHV0U3RyZWFtQ2hhbm5lbENJRCA9IHsgMHg2ZGRi
MDUwYywgMHgwZDA0LCAweDExZDQsIHsweDk4LCAweDZlLCAweDAwLCAweGMwLCAweDRmLCAweGEw
LCAweGNmLCAweDRhfSB9OwogICAgbnNDT01QdHI8bnNJSW5wdXRTdHJlYW1DaGFubmVsPiBjaGFu
bmVsID0KICAgICAgICBkb19DcmVhdGVJbnN0YW5jZShrSW5wdXRTdHJlYW1DaGFubmVsQ0lELCAm
cnYpOwogICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKCiAgICBydiA9IGNo
YW5uZWwtPlNldFVSSSh1cmkpOwogICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBy
djsKICAgIHJ2ID0gY2hhbm5lbC0+U2V0Q29udGVudFN0cmVhbShzdHJlYW0pOwogICAgaWYgKCgo
cnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKICAgIHJ2ID0gY2hhbm5lbC0+U2V0Q29udGVu
dFR5cGUoY29udGVudFR5cGUpOwogICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBy
djsKICAgIHJ2ID0gY2hhbm5lbC0+U2V0Q29udGVudENoYXJzZXQoY29udGVudENoYXJzZXQpOwog
ICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKCiAgICAoKnJlc3VsdCA9IGNo
YW5uZWwpLT5BZGRSZWYoKTsKICAgIHJldHVybiAwOwp9CgppbmxpbmUgbnNyZXN1bHQKTlNfTmV3
SW5wdXRTdHJlYW1QdW1wKG5zSUlucHV0U3RyZWFtUHVtcCAqKnJlc3VsdCwKICAgICAgICAgICAg
ICAgICAgICAgIG5zSUlucHV0U3RyZWFtICpzdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICBQ
UkludDMyIHN0cmVhbVBvcyA9IC0xLAogICAgICAgICAgICAgICAgICAgICAgUFJJbnQzMiBzdHJl
YW1MZW4gPSAtMSwKICAgICAgICAgICAgICAgICAgICAgIFBSVWludDMyIHNlZ3NpemUgPSAwLAog
ICAgICAgICAgICAgICAgICAgICAgUFJVaW50MzIgc2VnY291bnQgPSAwLAogICAgICAgICAgICAg
ICAgICAgICAgUFJCb29sIGNsb3NlV2hlbkRvbmUgPSAwKQp7CiAgICBuc3Jlc3VsdCBydjsKCiAg
ICBzdGF0aWMgY29uc3QgbnNDSUQga0lucHV0U3RyZWFtUHVtcENJRCA9IHsgMHhjY2QwZTk2MCwg
MHg3OTQ3LCAweDQ2MzUsIHsweGI3LCAweDBlLCAweDRjLCAweDY2LCAweDFiLCAweDYzLCAweGQ2
LCAweDc1fSB9OwogICAgbnNDT01QdHI8bnNJSW5wdXRTdHJlYW1QdW1wPiBwdW1wID0KICAgICAg
ICBkb19DcmVhdGVJbnN0YW5jZShrSW5wdXRTdHJlYW1QdW1wQ0lELCAmcnYpOwogICAgaWYgKCgo
cnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKCiAgICBydiA9IHB1bXAtPkluaXQoc3RyZWFt
LCBzdHJlYW1Qb3MsIHN0cmVhbUxlbiwKICAgICAgICAgICAgICAgICAgICBzZWdzaXplLCBzZWdj
b3VudCwgY2xvc2VXaGVuRG9uZSk7CiAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJu
IHJ2OwoKICAgICgqcmVzdWx0ID0gcHVtcCktPkFkZFJlZigpOwogICAgcmV0dXJuIDA7Cn0KCgoK
CgppbmxpbmUgbnNyZXN1bHQKTlNfTmV3QXN5bmNTdHJlYW1Db3BpZXIobnNJQXN5bmNTdHJlYW1D
b3BpZXIgKipyZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgIG5zSUlucHV0U3RyZWFtICpz
b3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgIG5zSU91dHB1dFN0cmVhbSAqc2luaywKICAg
ICAgICAgICAgICAgICAgICAgICAgUFJCb29sIHNvdXJjZUJ1ZmZlcmVkID0gMCwKICAgICAgICAg
ICAgICAgICAgICAgICAgUFJCb29sIHNpbmtCdWZmZXJlZCA9IDAsCiAgICAgICAgICAgICAgICAg
ICAgICAgIFBSVWludDMyIGNodW5rU2l6ZSA9IDApCnsKICAgIG5zcmVzdWx0IHJ2OwoKICAgIHN0
YXRpYyBjb25zdCBuc0NJRCBrQXN5bmNTdHJlYW1Db3BpZXJDSUQgPSB7IDB4ZTc0NmE4YjEsIDB4
Yzk3YSwgMHg0ZmM1LCB7MHhiYSwgMHhhNCwgMHg2NiwgMHg2MCwgMHg3NSwgMHgyMSwgMHhiZCwg
MHgwOH0gfTsKICAgIG5zQ09NUHRyPG5zSUFzeW5jU3RyZWFtQ29waWVyPiBjb3BpZXIgPQogICAg
ICAgIGRvX0NyZWF0ZUluc3RhbmNlKGtBc3luY1N0cmVhbUNvcGllckNJRCwgJnJ2KTsKICAgIGlm
ICgoKHJ2KSAmIDB4ODAwMDAwMDApKSByZXR1cm4gcnY7CgogICAgcnYgPSBjb3BpZXItPkluaXQo
c291cmNlLCBzaW5rLCBzb3VyY2VCdWZmZXJlZCwgc2lua0J1ZmZlcmVkLCBjaHVua1NpemUpOwog
ICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKCiAgICAoKnJlc3VsdCA9IGNv
cGllciktPkFkZFJlZigpOwogICAgcmV0dXJuIDA7Cn0KCmlubGluZSBuc3Jlc3VsdApOU19OZXdM
b2FkR3JvdXAobnNJTG9hZEdyb3VwKiAqcmVzdWx0LCBuc0lSZXF1ZXN0T2JzZXJ2ZXIqIG9icykK
ewogICAgbnNyZXN1bHQgcnY7CiAgICBuc0NPTVB0cjxuc0lMb2FkR3JvdXA+IGdyb3VwOwogICAg
c3RhdGljIGNvbnN0IG5zQ0lEIGtMb2FkR3JvdXBDSUQgPSB7IDB4ZTFjNjE1ODIsIDB4MmE4NCwg
MHgxMWQzLCB7MHg4YywgMHhjZSwgMHgwMCwgMHg2MCwgMHhiMCwgMHhmYywgMHgxNCwgMHhhM30g
fTsKICAgIHJ2ID0gbnNDb21wb25lbnRNYW5hZ2VyOjpDcmVhdGVJbnN0YW5jZShrTG9hZEdyb3Vw
Q0lELCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zQ09N
VHlwZUluZm88bnNJTG9hZEdyb3VwPjo6R2V0SUlEKCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2V0dGVyX0FkZFJlZnMoZ3JvdXApKTsKICAgIGlmICgoKHJ2
KSAmIDB4ODAwMDAwMDApKSByZXR1cm4gcnY7CiAgICBydiA9IGdyb3VwLT5TZXRHcm91cE9ic2Vy
dmVyKG9icyk7CiAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2OwoKICAgICpy
ZXN1bHQgPSBncm91cDsKICAgICgqcmVzdWx0KS0+QWRkUmVmKCk7CiAgICByZXR1cm4gMDsKfQoK
CmlubGluZSBuc3Jlc3VsdApOU19OZXdEb3dubG9hZGVyKG5zSURvd25sb2FkZXIqICpyZXN1bHQs
CiAgICAgICAgICAgICAgICAgICBuc0lVUkkqIHVyaSwKICAgICAgICAgICAgICAgICAgIG5zSURv
d25sb2FkT2JzZXJ2ZXIqIG9ic2VydmVyLAogICAgICAgICAgICAgICAgICAgbnNJU3VwcG9ydHMq
IGNvbnRleHQgPSAwLAogICAgICAgICAgICAgICAgICAgUFJCb29sIHN5bmNocm9ub3VzID0gMCwK
ICAgICAgICAgICAgICAgICAgIG5zSUxvYWRHcm91cCogbG9hZEdyb3VwID0gMCwKICAgICAgICAg
ICAgICAgICAgIG5zSUludGVyZmFjZVJlcXVlc3Rvciogbm90aWZpY2F0aW9uQ2FsbGJhY2tzID0g
MCwKICAgICAgICAgICAgICAgICAgIG5zTG9hZEZsYWdzIGxvYWRBdHRyaWJ1dGVzID0gc3RhdGlj
X2Nhc3Q8IG5zTG9hZEZsYWdzID4obnNJUmVxdWVzdDo6TE9BRF9OT1JNQUwpKQp7CiAgICBuc3Jl
c3VsdCBydjsKICAgIG5zQ09NUHRyPG5zSURvd25sb2FkZXI+IGRvd25sb2FkZXI7CiAgICBzdGF0
aWMgY29uc3QgbnNDSUQga0Rvd25sb2FkZXJDSUQgPSB7IDB4NTEwYTg2YmIsIDB4NjAxOSwgMHg0
ZWQxLCB7MHhiYiwgMHg0ZiwgMHg5NiwgMHg1YywgMHhmZiwgMHhkMiwgMHgzZSwgMHhjZX0gfTsK
ICAgIHJ2ID0gbnNDb21wb25lbnRNYW5hZ2VyOjpDcmVhdGVJbnN0YW5jZShrRG93bmxvYWRlckNJ
RCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zQ09NVHlwZUluZm88bnNJRG93
bmxvYWRlcj46OkdldElJRCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdldHRlcl9BZGRSZWZzKGRvd25sb2FkZXIpKTsKICAgIGlmICgoKHJ2KSAmIDB4ODAw
MDAwMDApKSByZXR1cm4gcnY7CiAgICBydiA9IGRvd25sb2FkZXItPkluaXQodXJpLCBvYnNlcnZl
ciwgY29udGV4dCwgc3luY2hyb25vdXMsIGxvYWRHcm91cCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICBub3RpZmljYXRpb25DYWxsYmFja3MsIGxvYWRBdHRyaWJ1dGVzKTsKICAgIGlmICgoKHJ2
KSAmIDB4ODAwMDAwMDApKSByZXR1cm4gcnY7CiAgICAqcmVzdWx0ID0gZG93bmxvYWRlcjsKICAg
ICgqcmVzdWx0KS0+QWRkUmVmKCk7CiAgICByZXR1cm4gcnY7Cn0KCmlubGluZSBuc3Jlc3VsdApO
U19OZXdTdHJlYW1Mb2FkZXIobnNJU3RyZWFtTG9hZGVyICoqYVJlc3VsdCwKICAgICAgICAgICAg
ICAgICAgIG5zSUNoYW5uZWwgKmFDaGFubmVsLAogICAgICAgICAgICAgICAgICAgbnNJU3RyZWFt
TG9hZGVyT2JzZXJ2ZXIgKmFPYnNlcnZlciwKICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRz
ICphQ29udGV4dCkKewogICAgbnNyZXN1bHQgcnY7CiAgICBuc0NPTVB0cjxuc0lTdHJlYW1Mb2Fk
ZXI+IGxvYWRlcjsKICAgIHN0YXRpYyBjb25zdCBuc0NJRCBrU3RyZWFtTG9hZGVyQ0lEID0geyAw
eDViYTZkOTIwLCAweGQ0ZTksIDB4MTFkMywgeyAweGExLCAweGE1LCAweDAsIDB4NTAsIDB4NCwg
MHgxYywgMHhhZiwgMHg0NCB9IH07CiAgICBydiA9IG5zQ29tcG9uZW50TWFuYWdlcjo6Q3JlYXRl
SW5zdGFuY2Uoa1N0cmVhbUxvYWRlckNJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5zQ09NVHlwZUluZm88bnNJU3RyZWFtTG9hZGVyPjo6R2V0SUlEKCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0dGVyX0FkZFJlZnMobG9hZGVyKSk7
CiAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2OwoKICAgIHJ2ID0gbG9hZGVy
LT5Jbml0KGFDaGFubmVsLCBhT2JzZXJ2ZXIsIGFDb250ZXh0KTsKICAgIGlmICgoKHJ2KSAmIDB4
ODAwMDAwMDApKSByZXR1cm4gcnY7CgogICAgKmFSZXN1bHQgPSBsb2FkZXI7CiAgICAoKmFSZXN1
bHQpLT5BZGRSZWYoKTsKICAgIHJldHVybiBydjsKfQoKaW5saW5lIG5zcmVzdWx0Ck5TX05ld1N0
cmVhbUxvYWRlcihuc0lTdHJlYW1Mb2FkZXIqICpyZXN1bHQsCiAgICAgICAgICAgICAgICAgICBu
c0lVUkkqIHVyaSwKICAgICAgICAgICAgICAgICAgIG5zSVN0cmVhbUxvYWRlck9ic2VydmVyKiBv
YnNlcnZlciwKICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzKiBjb250ZXh0ID0gMCwKICAg
ICAgICAgICAgICAgICAgIG5zSUxvYWRHcm91cCogbG9hZEdyb3VwID0gMCwKICAgICAgICAgICAg
ICAgICAgIG5zSUludGVyZmFjZVJlcXVlc3Rvciogbm90aWZpY2F0aW9uQ2FsbGJhY2tzID0gMCwK
ICAgICAgICAgICAgICAgICAgIG5zTG9hZEZsYWdzIGxvYWRBdHRyaWJ1dGVzID0gc3RhdGljX2Nh
c3Q8IG5zTG9hZEZsYWdzID4obnNJUmVxdWVzdDo6TE9BRF9OT1JNQUwpLAogICAgICAgICAgICAg
ICAgICAgbnNJVVJJKiByZWZlcnJlciA9IDApCnsKICAgIG5zcmVzdWx0IHJ2OwoKICAgIG5zQ09N
UHRyPG5zSUNoYW5uZWw+IGNoYW5uZWw7CiAgICBydiA9IE5TX05ld0NoYW5uZWwoZ2V0dGVyX0Fk
ZFJlZnMoY2hhbm5lbCksCiAgICAgICAgICAgICAgICAgICAgICAgdXJpLAogICAgICAgICAgICAg
ICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgICAgbG9hZEdyb3VwLAogICAgICAgICAg
ICAgICAgICAgICAgIG5vdGlmaWNhdGlvbkNhbGxiYWNrcywKICAgICAgICAgICAgICAgICAgICAg
ICBsb2FkQXR0cmlidXRlcyk7CiAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2
OwoKICAgIG5zQ09NUHRyPG5zSUh0dHBDaGFubmVsPiBodHRwQ2hhbm5lbChkb19RdWVyeUludGVy
ZmFjZShjaGFubmVsKSk7CiAgICBpZiAoaHR0cENoYW5uZWwpCiAgICAgICAgaHR0cENoYW5uZWwt
PlNldFJlZmVycmVyKHJlZmVycmVyKTsKCiAgICByZXR1cm4gTlNfTmV3U3RyZWFtTG9hZGVyKHJl
c3VsdCwgY2hhbm5lbCwgb2JzZXJ2ZXIsIGNvbnRleHQpOwp9CgppbmxpbmUgbnNyZXN1bHQKTlNf
TmV3VW5pY2hhclN0cmVhbUxvYWRlcihuc0lVbmljaGFyU3RyZWFtTG9hZGVyICoqYVJlc3VsdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lDaGFubmVsICphQ2hhbm5lbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICBuc0lVbmljaGFyU3RyZWFtTG9hZGVyT2JzZXJ2ZXIgKmFPYnNlcnZl
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdXBwb3J0cyAqYUNvbnRleHQgPSAwLAog
ICAgICAgICAgICAgICAgICAgICAgICAgIFBSVWludDMyIGFTZWdtZW50U2l6ZSA9IG5zSVVuaWNo
YXJTdHJlYW1Mb2FkZXI6OkRFRkFVTFRfU0VHTUVOVF9TSVpFKQp7CiAgICBuc3Jlc3VsdCBydjsK
ICAgIG5zQ09NUHRyPG5zSVVuaWNoYXJTdHJlYW1Mb2FkZXI+IGxvYWRlcjsKICAgIHN0YXRpYyBj
b25zdCBuc0NJRCBrVW5pY2hhclN0cmVhbUxvYWRlckNJRCA9IHsgMHg5NDQ1NzkxZiwgMHhmYTRj
LCAweDQ2NjksIHsgMHhiMSwgMHg3NCwgMHhkZiwgMHg1MCwgMHgzMiwgMHhiYiwgMHg2NywgMHhi
MyB9IH07CiAgICBydiA9IG5zQ29tcG9uZW50TWFuYWdlcjo6Q3JlYXRlSW5zdGFuY2Uoa1VuaWNo
YXJTdHJlYW1Mb2FkZXJDSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0NP
TVR5cGVJbmZvPG5zSVVuaWNoYXJTdHJlYW1Mb2FkZXI+OjpHZXRJSUQoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR0ZXJfQWRkUmVmcyhsb2FkZXIpKTsK
ICAgIGlmICgoKHJ2KSAmIDB4ODAwMDAwMDApKSByZXR1cm4gcnY7CiAgICBydiA9IGxvYWRlci0+
SW5pdChhQ2hhbm5lbCwgYU9ic2VydmVyLCBhQ29udGV4dCwgYVNlZ21lbnRTaXplKTsKCiAgICBp
ZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2OwogICAgKmFSZXN1bHQgPSBsb2FkZXI7
CiAgICAoKmFSZXN1bHQpLT5BZGRSZWYoKTsKICAgIHJldHVybiBydjsKfQoKaW5saW5lIG5zcmVz
dWx0Ck5TX05ld1JlcXVlc3RPYnNlcnZlclByb3h5KG5zSVJlcXVlc3RPYnNlcnZlciAqKmFSZXN1
bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVJlcXVlc3RPYnNlcnZlciAqYU9ic2Vy
dmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lFdmVudFF1ZXVlICphRXZlbnRRPTAp
CnsKICAgIGRvIHsgaWYgKCEoYVJlc3VsdCkpIHsgOyByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAw
NDAwM0wpOyB9IH0gd2hpbGUgKDApOwoKICAgIG5zcmVzdWx0IHJ2OwogICAgbnNDT01QdHI8bnNJ
UmVxdWVzdE9ic2VydmVyUHJveHk+IHByb3h5OwogICAgc3RhdGljIGNvbnN0IG5zQ0lEIGtSZXF1
ZXN0T2JzZXJ2ZXJQcm94eUNJRCA9IHsgMHg1MWZhMjhjNywgMHg3NGMwLCAweDRiODUsIHsweDlj
LCAweDQ2LCAweGQwLCAweDNmLCAweGFhLCAweDdiLCAweDY5LCAweDZifSB9OwoKICAgIHJ2ID0g
bnNDb21wb25lbnRNYW5hZ2VyOjpDcmVhdGVJbnN0YW5jZShrUmVxdWVzdE9ic2VydmVyUHJveHlD
SUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0NPTVR5cGVJbmZvPG5zSVJl
cXVlc3RPYnNlcnZlclByb3h5Pjo6R2V0SUlEKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2V0dGVyX0FkZFJlZnMocHJveHkpKTsKICAgIGlmICgoKHJ2KSAm
IDB4ODAwMDAwMDApKSByZXR1cm4gcnY7CgogICAgcnYgPSBwcm94eS0+SW5pdChhT2JzZXJ2ZXIs
IGFFdmVudFEpOwogICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKCiAgICBy
ZXR1cm4gQ2FsbFF1ZXJ5SW50ZXJmYWNlKHByb3h5LCBhUmVzdWx0KTsKfQoKaW5saW5lIG5zcmVz
dWx0Ck5TX05ld1NpbXBsZVN0cmVhbUxpc3RlbmVyKG5zSVN0cmVhbUxpc3RlbmVyICoqYVJlc3Vs
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJT3V0cHV0U3RyZWFtICphU2luaywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnNJUmVxdWVzdE9ic2VydmVyICphT2JzZXJ2ZXI9MCkK
ewogICAgZG8geyBpZiAoIShhUmVzdWx0KSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDA0
MDAzTCk7IH0gfSB3aGlsZSAoMCk7CgogICAgbnNyZXN1bHQgcnY7CiAgICBuc0NPTVB0cjxuc0lT
aW1wbGVTdHJlYW1MaXN0ZW5lcj4gbGlzdGVuZXI7CiAgICBzdGF0aWMgY29uc3QgbnNDSUQga1Np
bXBsZVN0cmVhbUxpc3RlbmVyQ0lEID0geyAweGZiOGNiZjRlLCAweDQ3MDEsIDB4NGJhMSwgezB4
YjEsIDB4ZDYsIDB4NTMsIDB4ODgsIDB4ZTAsIDB4NDEsIDB4ZmIsIDB4Njd9IH07CiAgICBydiA9
IG5zQ29tcG9uZW50TWFuYWdlcjo6Q3JlYXRlSW5zdGFuY2Uoa1NpbXBsZVN0cmVhbUxpc3RlbmVy
Q0lELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNDT01UeXBlSW5mbzxuc0lT
aW1wbGVTdHJlYW1MaXN0ZW5lcj46OkdldElJRCgpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdldHRlcl9BZGRSZWZzKGxpc3RlbmVyKSk7CiAgICBpZiAoKChy
dikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2OwoKICAgIHJ2ID0gbGlzdGVuZXItPkluaXQoYVNp
bmssIGFPYnNlcnZlcik7CiAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2OwoK
ICAgICgqYVJlc3VsdCA9IGxpc3RlbmVyKS0+QWRkUmVmKCk7CiAgICByZXR1cm4gMDsKfQoKCmlu
bGluZSBuc3Jlc3VsdApOU19OZXdBc3luY1N0cmVhbUxpc3RlbmVyKG5zSVN0cmVhbUxpc3RlbmVy
ICoqcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN0cmVhbUxpc3RlbmVyICpy
ZWNlaXZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lFdmVudFF1ZXVlICpldmVudFF1
ZXVlKQp7CiAgICBuc3Jlc3VsdCBydjsKICAgIG5zQ09NUHRyPG5zSUFzeW5jU3RyZWFtTGlzdGVu
ZXI+IGxzbnI7CiAgICBzdGF0aWMgY29uc3QgbnNDSUQga0FzeW5jU3RyZWFtTGlzdGVuZXJDSUQg
PSB7IDB4NjAwNDdiYjIsIDB4OTFjMCwgMHgxMWQzLCB7MHg4YywgMHhkOSwgMHgwMCwgMHg2MCwg
MHhiMCwgMHhmYywgMHgxNCwgMHhhM30gfTsKICAgIHJ2ID0gbnNDb21wb25lbnRNYW5hZ2VyOjpD
cmVhdGVJbnN0YW5jZShrQXN5bmNTdHJlYW1MaXN0ZW5lckNJRCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5zQ09NVHlwZUluZm88bnNJQXN5bmNTdHJlYW1MaXN0ZW5lcj46Okdl
dElJRCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHRl
cl9BZGRSZWZzKGxzbnIpKTsKICAgIGlmICgoKHJ2KSAmIDB4ODAwMDAwMDApKSByZXR1cm4gcnY7
CiAgICBydiA9IGxzbnItPkluaXQocmVjZWl2ZXIsIGV2ZW50UXVldWUpOwogICAgaWYgKCgocnYp
ICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKCiAgICAoKnJlc3VsdCA9IGxzbnIpLT5BZGRSZWYo
KTsKICAgIHJldHVybiAwOwp9CgppbmxpbmUgbnNyZXN1bHQKTlNfQ2hlY2tQb3J0U2FmZXR5KFBS
SW50MzIgcG9ydCwgY29uc3QgY2hhciogc2NoZW1lLCBuc0lJT1NlcnZpY2UqIGlvU2VydmljZSA9
IDApCnsKICAgIG5zcmVzdWx0IHJ2OwoKICAgIG5zQ09NUHRyPG5zSUlPU2VydmljZT4gc2VydjsK
ICAgIGlmIChpb1NlcnZpY2UgPT0gMCkgewogICAgICAgIHNlcnYgPSBkb19HZXRJT1NlcnZpY2Uo
JnJ2KTsKICAgICAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2OwogICAgICAg
IGlvU2VydmljZSA9IHNlcnYuZ2V0KCk7CiAgICB9CgogICAgUFJCb29sIGFsbG93OwoKICAgIHJ2
ID0gaW9TZXJ2aWNlLT5BbGxvd1BvcnQocG9ydCwgc2NoZW1lLCAmYWxsb3cpOwogICAgaWYgKCgo
cnYpICYgMHg4MDAwMDAwMCkpIHsKICAgICAgICA7CiAgICAgICAgcmV0dXJuIHJ2OwogICAgfQoK
ICAgIGlmICghYWxsb3cpCiAgICAgICAgcmV0dXJuICgobnNyZXN1bHQpICgoKFBSVWludDMyKSgx
KTw8MzEpIHwgKChQUlVpbnQzMikoNiArMHg0NSk8PDE2KSB8ICgoUFJVaW50MzIpKDE5KSkpICk7
CgogICAgcmV0dXJuIDA7Cn0KCmlubGluZSBuc3Jlc3VsdApOU19OZXdQcm94eUluZm8oY29uc3Qg
Y2hhciogdHlwZSwgY29uc3QgY2hhciogaG9zdCwgUFJJbnQzMiBwb3J0LCBuc0lQcm94eUluZm8q
ICpyZXN1bHQpCnsKICAgIG5zcmVzdWx0IHJ2OwoKICAgIHN0YXRpYyBjb25zdCBuc0NJRCBrUFBT
U2VydmljZUNJRCA9IHsgMHhlOWIzMDFjMCwgMHhlMGU0LCAweDExZDMsIHsgMHhhMSwgMHhhOCwg
MHgwLCAweDUwLCAweDQsIDB4MWMsIDB4YWYsIDB4NDQgfSB9OwogICAgbnNDT01QdHI8bnNJUHJv
dG9jb2xQcm94eVNlcnZpY2U+IHBwcyA9IGRvX0dldFNlcnZpY2Uoa1BQU1NlcnZpY2VDSUQsJnJ2
KTsKCiAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2OwoKICAgIHJldHVybiBw
cHMtPk5ld1Byb3h5SW5mbyh0eXBlLCBob3N0LCBwb3J0LCByZXN1bHQpOwp9CgppbmxpbmUgbnNy
ZXN1bHQKTlNfR2V0RmlsZVByb3RvY29sSGFuZGxlcihuc0lGaWxlUHJvdG9jb2xIYW5kbGVyICoq
cmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUlPU2VydmljZSAqaW9TZXJ2aWNl
PTApCnsKICAgIG5zcmVzdWx0IHJ2OwoKICAgIG5zQ09NUHRyPG5zSUlPU2VydmljZT4gc2VydjsK
ICAgIGlmIChpb1NlcnZpY2UgPT0gMCkgewogICAgICAgIHNlcnYgPSBkb19HZXRJT1NlcnZpY2Uo
JnJ2KTsKICAgICAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2OwogICAgICAg
IGlvU2VydmljZSA9IHNlcnYuZ2V0KCk7CiAgICB9CgogICAgbnNDT01QdHI8bnNJUHJvdG9jb2xI
YW5kbGVyPiBoYW5kbGVyOwogICAgcnYgPSBpb1NlcnZpY2UtPkdldFByb3RvY29sSGFuZGxlcigi
ZmlsZSIsIGdldHRlcl9BZGRSZWZzKGhhbmRsZXIpKTsKICAgIGlmICgoKHJ2KSAmIDB4ODAwMDAw
MDApKSByZXR1cm4gcnY7CgogICAgcmV0dXJuIENhbGxRdWVyeUludGVyZmFjZShoYW5kbGVyLCBy
ZXN1bHQpOwp9CgppbmxpbmUgbnNyZXN1bHQKTlNfR2V0RmlsZUZyb21VUkxTcGVjKGNvbnN0IG5z
QUNTdHJpbmcgJmluVVJMLCBuc0lGaWxlICoqcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAg
bnNJSU9TZXJ2aWNlICppb1NlcnZpY2U9MCkKewogICAgbnNDT01QdHI8bnNJRmlsZVByb3RvY29s
SGFuZGxlcj4gZmlsZUhhbmRsZXI7CiAgICBuc3Jlc3VsdCBydiA9IE5TX0dldEZpbGVQcm90b2Nv
bEhhbmRsZXIoZ2V0dGVyX0FkZFJlZnMoZmlsZUhhbmRsZXIpLCBpb1NlcnZpY2UpOwogICAgaWYg
KCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKCiAgICByZXR1cm4gZmlsZUhhbmRsZXIt
PkdldEZpbGVGcm9tVVJMU3BlYyhpblVSTCwgcmVzdWx0KTsKfQoKaW5saW5lIG5zcmVzdWx0Ck5T
X0dldFVSTFNwZWNGcm9tRmlsZShuc0lGaWxlKiBhRmlsZSwgbnNBQ1N0cmluZyAmYVVybCwKICAg
ICAgICAgICAgICAgICAgICAgIG5zSUlPU2VydmljZSAqaW9TZXJ2aWNlPTApCnsKICAgIG5zQ09N
UHRyPG5zSUZpbGVQcm90b2NvbEhhbmRsZXI+IGZpbGVIYW5kbGVyOwogICAgbnNyZXN1bHQgcnYg
PSBOU19HZXRGaWxlUHJvdG9jb2xIYW5kbGVyKGdldHRlcl9BZGRSZWZzKGZpbGVIYW5kbGVyKSwg
aW9TZXJ2aWNlKTsKICAgIGlmICgoKHJ2KSAmIDB4ODAwMDAwMDApKSByZXR1cm4gcnY7CgogICAg
cmV0dXJuIGZpbGVIYW5kbGVyLT5HZXRVUkxTcGVjRnJvbUZpbGUoYUZpbGUsIGFVcmwpOwp9Cgpp
bmxpbmUgbnNyZXN1bHQKTlNfTmV3UmVzdW1hYmxlRW50aXR5SUQobnNJUmVzdW1hYmxlRW50aXR5
SUQqKiBhUmVzLAogICAgICAgICAgICAgICAgICAgICAgICBQUlVpbnQzMiBzaXplLAogICAgICAg
ICAgICAgICAgICAgICAgICBQUlRpbWUgbGFzdE1vZGlmaWVkKQp7CiAgICBuc3Jlc3VsdCBydjsK
ICAgIG5zQ09NUHRyPG5zSVJlc3VtYWJsZUVudGl0eUlEPiBlbnQgPQogICAgICAgIGRvX0NyZWF0
ZUluc3RhbmNlKCJAbW96aWxsYS5vcmcvbmV0d29yay9yZXN1bWFibGUtZW50aXR5LWlkOzEiLCZy
dik7CiAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2OwoKICAgIGVudC0+U2V0
U2l6ZShzaXplKTsKICAgIGVudC0+U2V0TGFzdE1vZGlmaWVkKGxhc3RNb2RpZmllZCk7CgogICAg
KmFSZXMgPSBlbnQ7CiAgICAoKmFSZXMpLT5BZGRSZWYoKTsKICAgIHJldHVybiAwOwp9Cgppbmxp
bmUgbnNyZXN1bHQKTlNfRXhhbWluZUZvclByb3h5KGNvbnN0IGNoYXIqIHNjaGVtZSwgY29uc3Qg
Y2hhciogaG9zdCwgUFJJbnQzMiBwb3J0LAogICAgICAgICAgICAgICAgICAgbnNJUHJveHlJbmZv
KiAqcHJveHlJbmZvKQp7CiAgICBuc3Jlc3VsdCBydjsKCiAgICBzdGF0aWMgY29uc3QgbnNDSUQg
a1BQU1NlcnZpY2VDSUQgPSB7IDB4ZTliMzAxYzAsIDB4ZTBlNCwgMHgxMWQzLCB7IDB4YTEsIDB4
YTgsIDB4MCwgMHg1MCwgMHg0LCAweDFjLCAweGFmLCAweDQ0IH0gfTsKICAgIG5zQ09NUHRyPG5z
SVByb3RvY29sUHJveHlTZXJ2aWNlPiBwcHMgPSBkb19HZXRTZXJ2aWNlKGtQUFNTZXJ2aWNlQ0lE
LCZydik7CgogICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKCiAgICBuc0NB
dXRvU3RyaW5nIHNwZWMoc2NoZW1lKTsKICAgIHNwZWMuQXBwZW5kKCI6Ly8iKTsKICAgIHNwZWMu
QXBwZW5kKGhvc3QpOwogICAgc3BlYy5BcHBlbmQoJzonKTsKICAgIHNwZWMuQXBwZW5kSW50KHBv
cnQpOwoKCgoKCgoKICAgIHN0YXRpYyBjb25zdCBuc0NJRCBrU1REVVJMQ0lEID0geyAweGRlOTQ3
MmQwLCAweDgwMzQsIDB4MTFkMywgezB4OTMsIDB4OTksIDB4MDAsIDB4MTAsIDB4NGIsIDB4YTAs
IDB4ZmQsIDB4NDB9IH07CiAgICBuc0NPTVB0cjxuc0lVUkk+IHVyaSA9IGRvX0NyZWF0ZUluc3Rh
bmNlKGtTVERVUkxDSUQsICZydik7CiAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJu
IHJ2OwogICAgcnYgPSB1cmktPlNldFNwZWMoc3BlYyk7CiAgICBpZiAoKChydikgJiAweDgwMDAw
MDAwKSkgcmV0dXJuIHJ2OwoKICAgIHJldHVybiBwcHMtPkV4YW1pbmVGb3JQcm94eSh1cmksIHBy
b3h5SW5mbyk7Cn0KCmlubGluZSBuc3Jlc3VsdApOU19QYXJzZUNvbnRlbnRUeXBlKGNvbnN0IG5z
QUNTdHJpbmcgJnJhd0NvbnRlbnRUeXBlLAogICAgICAgICAgICAgICAgICAgIG5zQ1N0cmluZyAm
Y29udGVudFR5cGUsCiAgICAgICAgICAgICAgICAgICAgbnNDU3RyaW5nICZjb250ZW50Q2hhcnNl
dCkKewoKICAgIG5zQUNTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yIGJlZ2luLCBpdCwgZW5kOwogICAg
aXQgPSByYXdDb250ZW50VHlwZS5CZWdpblJlYWRpbmcoYmVnaW4pOwogICAgcmF3Q29udGVudFR5
cGUuRW5kUmVhZGluZyhlbmQpOwogICAgaWYgKEZpbmRDaGFySW5SZWFkYWJsZSgnOycsIGl0LCBl
bmQpKSB7CiAgICAgICAgY29udGVudFR5cGUgPSBTdWJzdHJpbmcoYmVnaW4sIGl0KTsKCiAgICAg
ICAgYmVnaW4gPSArK2l0OwogICAgICAgIGlmIChGaW5kSW5SZWFkYWJsZShuc0RlcGVuZGVudENT
dHJpbmcoImNoYXJzZXQ9IiwgUFJVaW50MzIoc2l6ZW9mKCJjaGFyc2V0PSIpLTEpKSwgYmVnaW4s
IGl0ID0gZW5kKSkgewogICAgICAgICAgICBjb250ZW50Q2hhcnNldCA9IFN1YnN0cmluZyhpdCwg
ZW5kKTsKICAgICAgICAgICAgY29udGVudENoYXJzZXQuU3RyaXBXaGl0ZXNwYWNlKCk7CiAgICAg
ICAgfQogICAgfQogICAgZWxzZQogICAgICAgIGNvbnRlbnRUeXBlID0gcmF3Q29udGVudFR5cGU7
CiAgICBUb0xvd2VyQ2FzZShjb250ZW50VHlwZSk7CiAgICBjb250ZW50VHlwZS5TdHJpcFdoaXRl
c3BhY2UoKTsKICAgIHJldHVybiAwOwp9CgppbmxpbmUgbnNyZXN1bHQKTlNfTmV3TG9jYWxGaWxl
SW5wdXRTdHJlYW0obnNJSW5wdXRTdHJlYW0qKiBhUmVzdWx0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICBuc0lGaWxlKiBhRmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJJbnQz
MiBhSU9GbGFncyA9IC0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICBQUkludDMyIGFQZXJt
ID0gLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSSW50MzIgYUJlaGF2aW9yRmxhZ3Mg
PSAwKQp7CiAgICBuc3Jlc3VsdCBydjsKICAgIG5zQ09NUHRyPG5zSUZpbGVJbnB1dFN0cmVhbT4g
aW47CiAgICBzdGF0aWMgY29uc3QgbnNDSUQga0xvY2FsRmlsZUlucHV0U3RyZWFtQ0lEID0geyAw
eGJlOWE1M2FlLCAweGM3ZTksIDB4MTFkMywgezB4OGMsIDB4ZGEsIDB4MDAsIDB4NjAsIDB4YjAs
IDB4ZmMsIDB4MTQsIDB4YTN9IH07CiAgICBydiA9IG5zQ29tcG9uZW50TWFuYWdlcjo6Q3JlYXRl
SW5zdGFuY2Uoa0xvY2FsRmlsZUlucHV0U3RyZWFtQ0lELAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnNDT01UeXBlSW5mbzxuc0lGaWxlSW5wdXRTdHJlYW0+OjpHZXRJSUQoKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR0ZXJfQWRkUmVm
cyhpbikpOwogICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKICAgIHJ2ID0g
aW4tPkluaXQoYUZpbGUsIGFJT0ZsYWdzLCBhUGVybSwgYUJlaGF2aW9yRmxhZ3MpOwogICAgaWYg
KCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKCiAgICAqYVJlc3VsdCA9IGluOwogICAg
KCphUmVzdWx0KS0+QWRkUmVmKCk7CiAgICByZXR1cm4gMDsKfQoKaW5saW5lIG5zcmVzdWx0Ck5T
X05ld0xvY2FsRmlsZU91dHB1dFN0cmVhbShuc0lPdXRwdXRTdHJlYW0qKiBhUmVzdWx0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnNJRmlsZSogYUZpbGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQUkludDMyIGFJT0ZsYWdzID0gLTEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQUkludDMyIGFQZXJtID0gLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUklu
dDMyIGFCZWhhdmlvckZsYWdzID0gMCkKewogICAgbnNyZXN1bHQgcnY7CiAgICBuc0NPTVB0cjxu
c0lGaWxlT3V0cHV0U3RyZWFtPiBvdXQ7CiAgICBzdGF0aWMgY29uc3QgbnNDSUQga0xvY2FsRmls
ZU91dHB1dFN0cmVhbUNJRCA9IHsgMHhjMjcyZmVlMCwgMHhjN2U5LCAweDExZDMsIHsweDhjLCAw
eGRhLCAweDAwLCAweDYwLCAweGIwLCAweGZjLCAweDE0LCAweGEzfSB9OwogICAgcnYgPSBuc0Nv
bXBvbmVudE1hbmFnZXI6OkNyZWF0ZUluc3RhbmNlKGtMb2NhbEZpbGVPdXRwdXRTdHJlYW1DSUQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0NPTVR5cGVJbmZvPG5zSUZpbGVP
dXRwdXRTdHJlYW0+OjpHZXRJSUQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnZXR0ZXJfQWRkUmVmcyhvdXQpKTsKICAgIGlmICgoKHJ2KSAmIDB4ODAwMDAw
MDApKSByZXR1cm4gcnY7CiAgICBydiA9IG91dC0+SW5pdChhRmlsZSwgYUlPRmxhZ3MsIGFQZXJt
LCBhQmVoYXZpb3JGbGFncyk7CiAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgcmV0dXJuIHJ2
OwoKICAgICphUmVzdWx0ID0gb3V0OwogICAgKCphUmVzdWx0KS0+QWRkUmVmKCk7CiAgICByZXR1
cm4gMDsKfQoKaW5saW5lIG5zcmVzdWx0Ck5TX05ld0J1ZmZlcmVkSW5wdXRTdHJlYW0obnNJSW5w
dXRTdHJlYW0qKiBhUmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUlucHV0U3Ry
ZWFtKiBhU3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgIFBSVWludDMyIGFCdWZmZXJTaXpl
KQp7CiAgICBuc3Jlc3VsdCBydjsKICAgIG5zQ09NUHRyPG5zSUJ1ZmZlcmVkSW5wdXRTdHJlYW0+
IGluOwogICAgc3RhdGljIGNvbnN0IG5zQ0lEIGtCdWZmZXJlZElucHV0U3RyZWFtQ0lEID0geyAw
eDkyMjY4ODhlLCAweGRhMDgsIDB4MTFkMywgezB4OGMsIDB4ZGEsIDB4MDAsIDB4NjAsIDB4YjAs
IDB4ZmMsIDB4MTQsIDB4YTN9IH07CiAgICBydiA9IG5zQ29tcG9uZW50TWFuYWdlcjo6Q3JlYXRl
SW5zdGFuY2Uoa0J1ZmZlcmVkSW5wdXRTdHJlYW1DSUQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuc0NPTVR5cGVJbmZvPG5zSUJ1ZmZlcmVkSW5wdXRTdHJlYW0+OjpHZXRJSUQo
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR0ZXJfQWRk
UmVmcyhpbikpOwogICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKICAgIHJ2
ID0gaW4tPkluaXQoYVN0ciwgYUJ1ZmZlclNpemUpOwogICAgaWYgKCgocnYpICYgMHg4MDAwMDAw
MCkpIHJldHVybiBydjsKCiAgICAqYVJlc3VsdCA9IGluOwogICAgKCphUmVzdWx0KS0+QWRkUmVm
KCk7CiAgICByZXR1cm4gMDsKfQoKaW5saW5lIG5zcmVzdWx0Ck5TX05ld0J1ZmZlcmVkT3V0cHV0
U3RyZWFtKG5zSU91dHB1dFN0cmVhbSoqIGFSZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5zSU91dHB1dFN0cmVhbSogYVN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJV
aW50MzIgYUJ1ZmZlclNpemUpCnsKICAgIG5zcmVzdWx0IHJ2OwogICAgbnNDT01QdHI8bnNJQnVm
ZmVyZWRPdXRwdXRTdHJlYW0+IG91dDsKICAgIHN0YXRpYyBjb25zdCBuc0NJRCBrQnVmZmVyZWRP
dXRwdXRTdHJlYW1DSUQgPSB7IDB4OTg2OGI0Y2UsIDB4ZGEwOCwgMHgxMWQzLCB7MHg4YywgMHhk
YSwgMHgwMCwgMHg2MCwgMHhiMCwgMHhmYywgMHgxNCwgMHhhM30gfTsKICAgIHJ2ID0gbnNDb21w
b25lbnRNYW5hZ2VyOjpDcmVhdGVJbnN0YW5jZShrQnVmZmVyZWRPdXRwdXRTdHJlYW1DSUQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0NPTVR5cGVJbmZvPG5zSUJ1ZmZlcmVk
T3V0cHV0U3RyZWFtPjo6R2V0SUlEKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2V0dGVyX0FkZFJlZnMob3V0KSk7CiAgICBpZiAoKChydikgJiAweDgwMDAw
MDAwKSkgcmV0dXJuIHJ2OwogICAgcnYgPSBvdXQtPkluaXQoYVN0ciwgYUJ1ZmZlclNpemUpOwog
ICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHJldHVybiBydjsKCiAgICAqYVJlc3VsdCA9IG91
dDsKICAgICgqYVJlc3VsdCktPkFkZFJlZigpOwogICAgcmV0dXJuIDA7Cn0KCmlubGluZSBuc3Jl
c3VsdApOU19OZXdQb3N0RGF0YVN0cmVhbShuc0lJbnB1dFN0cmVhbSAqKnJlc3VsdCwKICAgICAg
ICAgICAgICAgICAgICAgUFJCb29sIGlzRmlsZSwKICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
bnNBQ1N0cmluZyAmZGF0YSwKICAgICAgICAgICAgICAgICAgICAgUFJVaW50MzIgZW5jb2RlRmxh
Z3MsCiAgICAgICAgICAgICAgICAgICAgIG5zSUlPU2VydmljZSogaW9TZXJ2aWNlID0gMCkKewog
ICAgbnNyZXN1bHQgcnY7CgogICAgaWYgKGlzRmlsZSkgewogICAgICAgIG5zQ09NUHRyPG5zSUxv
Y2FsRmlsZT4gZmlsZTsKICAgICAgICBuc0NPTVB0cjxuc0lJbnB1dFN0cmVhbT4gZmlsZVN0cmVh
bTsKCiAgICAgICAgcnYgPSBOU19OZXdOYXRpdmVMb2NhbEZpbGUoZGF0YSwgMCwgZ2V0dGVyX0Fk
ZFJlZnMoZmlsZSkpOwogICAgICAgIGlmICgoKHJ2KSAmIDB4ODAwMDAwMDApKSByZXR1cm4gcnY7
CgogICAgICAgIHJ2ID0gTlNfTmV3TG9jYWxGaWxlSW5wdXRTdHJlYW0oZ2V0dGVyX0FkZFJlZnMo
ZmlsZVN0cmVhbSksIGZpbGUpOwogICAgICAgIGlmICgoKHJ2KSAmIDB4ODAwMDAwMDApKSByZXR1
cm4gcnY7CgoKICAgICAgICByZXR1cm4gTlNfTmV3QnVmZmVyZWRJbnB1dFN0cmVhbShyZXN1bHQs
IGZpbGVTdHJlYW0sIDgxOTIpOwogICAgfQoKCiAgICByZXR1cm4gTlNfTmV3Q1N0cmluZ0lucHV0
U3RyZWFtKHJlc3VsdCwgZGF0YSk7Cn0KIyAzNiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdp
bi9uc0lQbHVnaW5Ib3N0LmgiIDIKCmNsYXNzIG5zSVBsdWdpbjsKCmNsYXNzIG5zSVVSSTsKCmNs
YXNzIG5zSURPTVBsdWdpbjsKIyA1MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQ
bHVnaW5Ib3N0LmgiCmNsYXNzIG5zSVBsdWdpbkhvc3QgOiBwdWJsaWMgbnNJRmFjdG9yeSB7CiBw
dWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJ
RCBpaWQgPSB7MHgyNjRjMDY0MCwgMHgxYzMxLCAweDExZDIsIHsgMHhhOCwgMHgyZSwgMHgwMCwg
MHg0MCwgMHg5NSwgMHg5YSwgMHgyOCwgMHhjOSB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEluaXQodm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBEZXN0cm95KHZv
aWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgTG9hZFBsdWdpbnModm9pZCkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRQbHVnaW5GYWN0b3J5KGNvbnN0IGNoYXIgKmFNaW1lVHlwZSwg
bnNJUGx1Z2luICoqYVBsdWdpbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJbnN0YW50aWF0
ZUVtYmVkZWRQbHVnaW4oY29uc3QgY2hhciAqYU1pbWVUeXBlLCBuc0lVUkkgKmFVUkwsIG5zSVBs
dWdpbkluc3RhbmNlT3duZXIgKmFPd25lcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJbnN0
YW50aWF0ZUZ1bGxQYWdlUGx1Z2luKGNvbnN0IGNoYXIgKmFNaW1lVHlwZSwgbnNTdHJpbmcgJiBh
VVJMU3BlYywgbnNJU3RyZWFtTGlzdGVuZXIgKiAmIGFTdHJlYW1MaXN0ZW5lciwgbnNJUGx1Z2lu
SW5zdGFuY2VPd25lciAqYU93bmVyKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFVwUGx1
Z2luSW5zdGFuY2UoY29uc3QgY2hhciAqYU1pbWVUeXBlLCBuc0lVUkkgKmFVUkwsIG5zSVBsdWdp
bkluc3RhbmNlT3duZXIgKmFPd25lcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJc1BsdWdp
bkVuYWJsZWRGb3JUeXBlKGNvbnN0IGNoYXIgKmFNaW1lVHlwZSkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBJc1BsdWdpbkVuYWJsZWRGb3JFeHRlbnNpb24oY29uc3QgY2hhciAqYUV4dGVuc2lv
biwgY29uc3QgY2hhciAqICYgYU1pbWVUeXBlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dFBsdWdpbkNvdW50KFBSVWludDMyICphUGx1Z2luQ291bnQpID0gMDsKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRQbHVnaW5zKFBSVWludDMyIGFQbHVnaW5Db3VudCwgbnNJRE9NUGx1Z2luKiBhUGx1
Z2luQXJyYXlbXSkgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IFN0b3BQbHVnaW5JbnN0YW5jZShu
c0lQbHVnaW5JbnN0YW5jZSAqYUluc3RhbmNlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEhh
bmRsZUJhZFBsdWdpbihQUkxpYnJhcnkgKiBhTGlicmFyeSwgbnNJUGx1Z2luSW5zdGFuY2UgKmlu
c3RhbmNlKSA9IDA7Cgp9OwojIDI1MiAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc0lQ
bHVnaW5Ib3N0LmgiCmlubGluZSBuc3Jlc3VsdApOU19OZXdQbHVnaW5Qb3N0RGF0YVN0cmVhbShu
c0lJbnB1dFN0cmVhbSAqKnJlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJVaW50MzIgY29udGVudExl
bmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJCb29sIGlzRmlsZSA9IDAsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCBoZWFkZXJzID0gMCkKewogIG5zcmVzdWx0IHJ2
ID0gKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwpOwogIGlmICghZGF0YSkKICAgIHJldHVybiBydjsK
ICBpZiAoIWlzRmlsZSkgewogICAgaWYgKGNvbnRlbnRMZW5ndGggPCAxKQogICAgICByZXR1cm4g
cnY7CgogICAgY2hhciAqYnVmID0gKGNoYXIqKSBkYXRhOwogICAgaWYgKGhlYWRlcnMpIHsKCiAg
ICAgIGlmICghKGJ1ZiA9IChjaGFyKiluc01lbW9yeTo6QWxsb2MoY29udGVudExlbmd0aCkpKQog
ICAgICAgIHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7CiAgICAgIG1lbWNweShidWYs
IGRhdGEsIGNvbnRlbnRMZW5ndGgpOwogICAgfQogICAgbnNDT01QdHI8bnNJU3RyaW5nSW5wdXRT
dHJlYW0+IHNpcyA9IGRvX0NyZWF0ZUluc3RhbmNlKCJAbW96aWxsYS5vcmcvaW8vc3RyaW5nLWlu
cHV0LXN0cmVhbTsxIiwmcnYpOwogICAgaWYgKCghKChydikgJiAweDgwMDAwMDAwKSkpIHsKICAg
ICAgc2lzLT5BZG9wdERhdGEoYnVmLCBjb250ZW50TGVuZ3RoKTsKICAgICAgcnYgPSBDYWxsUXVl
cnlJbnRlcmZhY2Uoc2lzLCByZXN1bHQpOwogICAgfQogIH0gZWxzZSB7CiAgICBuc0NPTVB0cjxu
c0lMb2NhbEZpbGU+IGZpbGU7CiAgICBuc0NPTVB0cjxuc0lJbnB1dFN0cmVhbT4gZmlsZVN0cmVh
bTsKICAgIGlmICgoISgocnYgPSBOU19OZXdOYXRpdmVMb2NhbEZpbGUobnNEZXBlbmRlbnRDU3Ry
aW5nKGRhdGEpLCAwLCBnZXR0ZXJfQWRkUmVmcyhmaWxlKSkpICYgMHg4MDAwMDAwMCkpICYmCiAg
ICAgICAgKCEoKHJ2ID0gTlNfTmV3TG9jYWxGaWxlSW5wdXRTdHJlYW0oZ2V0dGVyX0FkZFJlZnMo
ZmlsZVN0cmVhbSksIGZpbGUsIDB4MDEsIDA2MDAsIG5zSUZpbGVJbnB1dFN0cmVhbTo6REVMRVRF
X09OX0NMT1NFIHwgbnNJRmlsZUlucHV0U3RyZWFtOjpDTE9TRV9PTl9FT0YpKSAmIDB4ODAwMDAw
MDApKQoKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICB7Cgog
ICAgICByZXR1cm4gTlNfTmV3QnVmZmVyZWRJbnB1dFN0cmVhbShyZXN1bHQsIGZpbGVTdHJlYW0s
IDgxOTIpOwogICAgfQogIH0KICByZXR1cm4gcnY7Cn0KIyAxMjMgIm5zRE9NQ2xhc3NJbmZvLmNw
cCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNQSVBsdWdpbkhvc3QuaCIg
MQojIDIxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zUElQbHVnaW5Ib3N0LmgiCiMg
MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3BsdWdpbi9uc1BsdWdpbk5hdGl2ZVdpbmRvdy5oIiAx
CiMgNTIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNQbHVnaW5OYXRpdmVXaW5kb3cu
aCIKY2xhc3MgbnNQbHVnaW5OYXRpdmVXaW5kb3cgOiBwdWJsaWMgbnNQbHVnaW5XaW5kb3cKewpw
dWJsaWM6CiAgbnNQbHVnaW5OYXRpdmVXaW5kb3coKSA6IG5zUGx1Z2luV2luZG93KCkge30KICB2
aXJ0dWFsIH5uc1BsdWdpbk5hdGl2ZVdpbmRvdygpIHt9CiMgNjggIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9wbHVnaW4vbnNQbHVnaW5OYXRpdmVXaW5kb3cuaCIKcHVibGljOgogIG5zcmVzdWx0IEdl
dFBsdWdpbkluc3RhbmNlKG5zQ09NUHRyPG5zSVBsdWdpbkluc3RhbmNlPiAmYVBsdWdpbkluc3Rh
bmNlKSB7CiAgICBhUGx1Z2luSW5zdGFuY2UgPSBtUGx1Z2luSW5zdGFuY2U7CiAgICByZXR1cm4g
MDsKICB9CiAgbnNyZXN1bHQgU2V0UGx1Z2luSW5zdGFuY2UobnNJUGx1Z2luSW5zdGFuY2UgKmFQ
bHVnaW5JbnN0YW5jZSkgewogICAgaWYgKG1QbHVnaW5JbnN0YW5jZSAhPSBhUGx1Z2luSW5zdGFu
Y2UpCiAgICAgIG1QbHVnaW5JbnN0YW5jZSA9IGFQbHVnaW5JbnN0YW5jZTsKICAgIHJldHVybiAw
OwogIH0KCnB1YmxpYzoKICB2aXJ0dWFsIG5zcmVzdWx0IENhbGxTZXRXaW5kb3cobnNDT01QdHI8
bnNJUGx1Z2luSW5zdGFuY2U+ICZhUGx1Z2luSW5zdGFuY2UpIHsKCiAgICBpZiAoYVBsdWdpbklu
c3RhbmNlKQogICAgICBhUGx1Z2luSW5zdGFuY2UtPlNldFdpbmRvdyh0aGlzKTsKICAgIGVsc2Ug
aWYgKG1QbHVnaW5JbnN0YW5jZSkKICAgICAgbVBsdWdpbkluc3RhbmNlLT5TZXRXaW5kb3coMCk7
CgogICAgU2V0UGx1Z2luSW5zdGFuY2UoYVBsdWdpbkluc3RhbmNlKTsKICAgIHJldHVybiAwOwog
IH0KCnByb3RlY3RlZDoKICBuc0NPTVB0cjxuc0lQbHVnaW5JbnN0YW5jZT4gbVBsdWdpbkluc3Rh
bmNlOwp9OwoKbnNyZXN1bHQgUExVR19OZXdQbHVnaW5OYXRpdmVXaW5kb3cobnNQbHVnaW5OYXRp
dmVXaW5kb3cgKiogYVBsdWdpbk5hdGl2ZVdpbmRvdyk7Cm5zcmVzdWx0IFBMVUdfRGVsZXRlUGx1
Z2luTmF0aXZlV2luZG93KG5zUGx1Z2luTmF0aXZlV2luZG93ICogYVBsdWdpbk5hdGl2ZVdpbmRv
dyk7CiMgMjIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4vbnNQSVBsdWdpbkhvc3QuaCIg
MgojIDMwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvcGx1Z2luL25zUElQbHVnaW5Ib3N0LmgiCmNs
YXNzIG5zUElQbHVnaW5Ib3N0IDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3Rh
dGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDhl
M2Q3MWU2LCAweDIzMTksIDB4MTFkNSwgeyAweDljLCAweGY4LCAweDAwLCAweDYwLCAweGIwLCAw
eGZiLCAweGQ4LCAweGFjIH19OyByZXR1cm4gaWlkO30KCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQg
U2V0SXNTY3JpcHRhYmxlSW5zdGFuY2UobnNJUGx1Z2luSW5zdGFuY2UgKmFJbnN0YW5jZSwgUFJC
b29sIGFTY3JpcHRhYmxlKSA9IDA7CiMgNjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9wbHVnaW4v
bnNQSVBsdWdpbkhvc3QuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IFBhcnNlUG9zdEJ1ZmZlclRvRml4
SGVhZGVycyhjb25zdCBjaGFyICphSW5Qb3N0RGF0YSwgUFJVaW50MzIgYUluUG9zdERhdGFMZW4s
IGNoYXIgKiphT3V0UG9zdERhdGEsIFBSVWludDMyICphT3V0UG9zdERhdGFMZW4pID0gMDsKCgoK
CgogIHZpcnR1YWwgbnNyZXN1bHQgQ3JlYXRlVG1wRmlsZVRvUG9zdChjb25zdCBjaGFyICphUG9z
dERhdGFVUkwsIGNoYXIgKiphVG1wRmlsZU5hbWUpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1
bHQgTmV3UGx1Z2luTmF0aXZlV2luZG93KG5zUGx1Z2luTmF0aXZlV2luZG93ICogKmFQbHVnaW5O
YXRpdmVXaW5kb3cpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgRGVsZXRlUGx1Z2luTmF0
aXZlV2luZG93KG5zUGx1Z2luTmF0aXZlV2luZG93ICogYVBsdWdpbk5hdGl2ZVdpbmRvdykgPSAw
OwoKfTsKIyAxMjQgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgoKCiMgMSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL29qaS9uc0lKVk1NYW5hZ2VyLmgiIDEKIyAxOCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L29qaS9uc0lKVk1NYW5hZ2VyLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2phdmEvam5p
LmgiIDEKIyAzOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2phdmEvam5pLmgiCiMgMSAiL3Vzci9s
aWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIuMi9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMK
IyAxMTAgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4yLjIvaW5jbHVkZS9z
dGRhcmcuaCIgMwp0eXBlZGVmIF9fZ251Y192YV9saXN0IHZhX2xpc3Q7CiMgNDAgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9qYXZhL2puaS5oIiAyCgoKCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9qYXZhL2puaV9tZC5oIiAxCiMgMTc4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvamF2YS9qbmlf
bWQuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvamF2YS9qcmlfbWQuaCIgMQojIDQ1ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvamF2YS9qcmlfbWQuaCIKIyAxICIvdXNyL2luY2x1ZGUvYXNz
ZXJ0LmgiIDEgMwojIDQ2ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvamF2YS9qcmlfbWQuaCIgMgoK
CgpleHRlcm4gIkMiIHsKIyAxODUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9qYXZhL2pyaV9tZC5o
Igp0eXBlZGVmIGNsYXNzIF9qb2JqZWN0ICpqcmVmOwoKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFy
IGpib29sOwp0eXBlZGVmIGNoYXIgamJ5dGU7CgoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcganVp
bnQ7CnR5cGVkZWYgbG9uZyBqaW50OwojIDIzMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2phdmEv
anJpX21kLmgiCnR5cGVkZWYgbG9uZyBsb25nIGpsb25nOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
bG9uZyBqdWxvbmc7CiMgNTYyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvamF2YS9qcmlfbWQuaCIK
fQojIDE3OSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2phdmEvam5pX21kLmgiIDIKIyA0NSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2phdmEvam5pLmgiIDIKCgpleHRlcm4gIkMiIHsKCgoKCgoKdHlw
ZWRlZiB1bnNpZ25lZCBjaGFyIGpib29sZWFuOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGpjaGFy
Owp0eXBlZGVmIHNob3J0IGpzaG9ydDsKdHlwZWRlZiBmbG9hdCBqZmxvYXQ7CnR5cGVkZWYgZG91
YmxlIGpkb3VibGU7Cgp0eXBlZGVmIGppbnQganNpemU7CgoKCmNsYXNzIF9qb2JqZWN0IHt9Owpj
bGFzcyBfamNsYXNzIDogcHVibGljIF9qb2JqZWN0IHt9OwpjbGFzcyBfanRocm93YWJsZSA6IHB1
YmxpYyBfam9iamVjdCB7fTsKY2xhc3MgX2pzdHJpbmcgOiBwdWJsaWMgX2pvYmplY3Qge307CmNs
YXNzIF9qYXJyYXkgOiBwdWJsaWMgX2pvYmplY3Qge307CmNsYXNzIF9qYm9vbGVhbkFycmF5IDog
cHVibGljIF9qYXJyYXkge307CmNsYXNzIF9qYnl0ZUFycmF5IDogcHVibGljIF9qYXJyYXkge307
CmNsYXNzIF9qY2hhckFycmF5IDogcHVibGljIF9qYXJyYXkge307CmNsYXNzIF9qc2hvcnRBcnJh
eSA6IHB1YmxpYyBfamFycmF5IHt9OwpjbGFzcyBfamludEFycmF5IDogcHVibGljIF9qYXJyYXkg
e307CmNsYXNzIF9qbG9uZ0FycmF5IDogcHVibGljIF9qYXJyYXkge307CmNsYXNzIF9qZmxvYXRB
cnJheSA6IHB1YmxpYyBfamFycmF5IHt9OwpjbGFzcyBfamRvdWJsZUFycmF5IDogcHVibGljIF9q
YXJyYXkge307CmNsYXNzIF9qb2JqZWN0QXJyYXkgOiBwdWJsaWMgX2phcnJheSB7fTsKCnR5cGVk
ZWYgX2pvYmplY3QgKmpvYmplY3Q7CnR5cGVkZWYgX2pjbGFzcyAqamNsYXNzOwp0eXBlZGVmIF9q
dGhyb3dhYmxlICpqdGhyb3dhYmxlOwp0eXBlZGVmIF9qc3RyaW5nICpqc3RyaW5nOwp0eXBlZGVm
IF9qYXJyYXkgKmphcnJheTsKdHlwZWRlZiBfamJvb2xlYW5BcnJheSAqamJvb2xlYW5BcnJheTsK
dHlwZWRlZiBfamJ5dGVBcnJheSAqamJ5dGVBcnJheTsKdHlwZWRlZiBfamNoYXJBcnJheSAqamNo
YXJBcnJheTsKdHlwZWRlZiBfanNob3J0QXJyYXkgKmpzaG9ydEFycmF5Owp0eXBlZGVmIF9qaW50
QXJyYXkgKmppbnRBcnJheTsKdHlwZWRlZiBfamxvbmdBcnJheSAqamxvbmdBcnJheTsKdHlwZWRl
ZiBfamZsb2F0QXJyYXkgKmpmbG9hdEFycmF5Owp0eXBlZGVmIF9qZG91YmxlQXJyYXkgKmpkb3Vi
bGVBcnJheTsKdHlwZWRlZiBfam9iamVjdEFycmF5ICpqb2JqZWN0QXJyYXk7CiMgMTIwICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvamF2YS9qbmkuaCIKdHlwZWRlZiB1bmlvbiBqdmFsdWUgewogICAg
amJvb2xlYW4gejsKICAgIGpieXRlIGI7CiAgICBqY2hhciBjOwogICAganNob3J0IHM7CiAgICBq
aW50IGk7CiAgICBqbG9uZyBqOwogICAgamZsb2F0IGY7CiAgICBqZG91YmxlIGQ7CiAgICBqb2Jq
ZWN0IGw7Cn0ganZhbHVlOwoKc3RydWN0IF9qZmllbGRJRDsKdHlwZWRlZiBzdHJ1Y3QgX2pmaWVs
ZElEICpqZmllbGRJRDsKCnN0cnVjdCBfam1ldGhvZElEOwp0eXBlZGVmIHN0cnVjdCBfam1ldGhv
ZElEICpqbWV0aG9kSUQ7CiMgMTY0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvamF2YS9qbmkuaCIK
dHlwZWRlZiBzdHJ1Y3QgewogICAgY2hhciAqbmFtZTsKICAgIGNoYXIgKnNpZ25hdHVyZTsKICAg
IHZvaWQgKmZuUHRyOwp9IEpOSU5hdGl2ZU1ldGhvZDsKCgoKCgpzdHJ1Y3QgSk5JTmF0aXZlSW50
ZXJmYWNlXzsKCnN0cnVjdCBKTklFbnZfOwoKCnR5cGVkZWYgSk5JRW52XyBKTklFbnY7CiMgMTg4
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvamF2YS9qbmkuaCIKc3RydWN0IEpOSUludm9rZUludGVy
ZmFjZV87CgpzdHJ1Y3QgSmF2YVZNXzsKCgp0eXBlZGVmIEphdmFWTV8gSmF2YVZNOwoKCgoKc3Ry
dWN0IEpOSU5hdGl2ZUludGVyZmFjZV8gewogICAgdm9pZCAqcmVzZXJ2ZWQwOwogICAgdm9pZCAq
cmVzZXJ2ZWQxOwogICAgdm9pZCAqcmVzZXJ2ZWQyOwoKICAgIHZvaWQgKnJlc2VydmVkMzsKICAg
IGppbnQgKCAqR2V0VmVyc2lvbikoSk5JRW52ICplbnYpOwoKICAgIGpjbGFzcyAoICpEZWZpbmVD
bGFzcykKICAgICAgKEpOSUVudiAqZW52LCBjb25zdCBjaGFyICpuYW1lLCBqb2JqZWN0IGxvYWRl
ciwgY29uc3QgamJ5dGUgKmJ1ZiwKICAgICAgIGpzaXplIGxlbik7CiAgICBqY2xhc3MgKCAqRmlu
ZENsYXNzKQogICAgICAoSk5JRW52ICplbnYsIGNvbnN0IGNoYXIgKm5hbWUpOwoKICAgIHZvaWQg
KnJlc2VydmVkNDsKICAgIHZvaWQgKnJlc2VydmVkNTsKICAgIHZvaWQgKnJlc2VydmVkNjsKCiAg
ICBqY2xhc3MgKCAqR2V0U3VwZXJjbGFzcykKICAgICAgKEpOSUVudiAqZW52LCBqY2xhc3Mgc3Vi
KTsKICAgIGpib29sZWFuICggKklzQXNzaWduYWJsZUZyb20pCiAgICAgIChKTklFbnYgKmVudiwg
amNsYXNzIHN1YiwgamNsYXNzIHN1cCk7CiAgICB2b2lkICpyZXNlcnZlZDc7CgoKICAgIGppbnQg
KCAqVGhyb3cpCiAgICAgIChKTklFbnYgKmVudiwganRocm93YWJsZSBvYmopOwogICAgamludCAo
ICpUaHJvd05ldykKICAgICAgKEpOSUVudiAqZW52LCBqY2xhc3MgY2xhenosIGNvbnN0IGNoYXIg
Km1zZyk7CiAgICBqdGhyb3dhYmxlICggKkV4Y2VwdGlvbk9jY3VycmVkKQogICAgICAoSk5JRW52
ICplbnYpOwogICAgdm9pZCAoICpFeGNlcHRpb25EZXNjcmliZSkKICAgICAgKEpOSUVudiAqZW52
KTsKICAgIHZvaWQgKCAqRXhjZXB0aW9uQ2xlYXIpCiAgICAgIChKTklFbnYgKmVudik7CiAgICB2
b2lkICggKkZhdGFsRXJyb3IpCiAgICAgIChKTklFbnYgKmVudiwgY29uc3QgY2hhciAqbXNnKTsK
ICAgIHZvaWQgKnJlc2VydmVkODsKICAgIHZvaWQgKnJlc2VydmVkOTsKCiAgICBqb2JqZWN0ICgg
Kk5ld0dsb2JhbFJlZikKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IGxvYmopOwogICAgdm9p
ZCAoICpEZWxldGVHbG9iYWxSZWYpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBncmVmKTsK
ICAgIHZvaWQgKCAqRGVsZXRlTG9jYWxSZWYpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBv
YmopOwogICAgamJvb2xlYW4gKCAqSXNTYW1lT2JqZWN0KQogICAgICAoSk5JRW52ICplbnYsIGpv
YmplY3Qgb2JqMSwgam9iamVjdCBvYmoyKTsKICAgIHZvaWQgKnJlc2VydmVkMTA7CiAgICB2b2lk
ICpyZXNlcnZlZDExOwoKICAgIGpvYmplY3QgKCAqQWxsb2NPYmplY3QpCiAgICAgIChKTklFbnYg
KmVudiwgamNsYXNzIGNsYXp6KTsKICAgIGpvYmplY3QgKCAqTmV3T2JqZWN0KQogICAgICAoSk5J
RW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElELCAuLi4pOwogICAgam9i
amVjdCAoICpOZXdPYmplY3RWKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1l
dGhvZElEIG1ldGhvZElELCB2YV9saXN0IGFyZ3MpOwogICAgam9iamVjdCAoICpOZXdPYmplY3RB
KQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElELCBq
dmFsdWUgKmFyZ3MpOwoKICAgIGpjbGFzcyAoICpHZXRPYmplY3RDbGFzcykKICAgICAgKEpOSUVu
diAqZW52LCBqb2JqZWN0IG9iaik7CiAgICBqYm9vbGVhbiAoICpJc0luc3RhbmNlT2YpCiAgICAg
IChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGpjbGFzcyBjbGF6eik7CgogICAgam1ldGhvZElE
ICggKkdldE1ldGhvZElEKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgY29uc3Qg
Y2hhciAqbmFtZSwgY29uc3QgY2hhciAqc2lnKTsKCiAgICBqb2JqZWN0ICggKkNhbGxPYmplY3RN
ZXRob2QpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGptZXRob2RJRCBtZXRob2RJ
RCwgLi4uKTsKICAgIGpvYmplY3QgKCAqQ2FsbE9iamVjdE1ldGhvZFYpCiAgICAgIChKTklFbnYg
KmVudiwgam9iamVjdCBvYmosIGptZXRob2RJRCBtZXRob2RJRCwgdmFfbGlzdCBhcmdzKTsKICAg
IGpvYmplY3QgKCAqQ2FsbE9iamVjdE1ldGhvZEEpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVj
dCBvYmosIGptZXRob2RJRCBtZXRob2RJRCwganZhbHVlICogYXJncyk7CgogICAgamJvb2xlYW4g
KCAqQ2FsbEJvb2xlYW5NZXRob2QpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGpt
ZXRob2RJRCBtZXRob2RJRCwgLi4uKTsKICAgIGpib29sZWFuICggKkNhbGxCb29sZWFuTWV0aG9k
VikKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1ldGhvZElELCB2
YV9saXN0IGFyZ3MpOwogICAgamJvb2xlYW4gKCAqQ2FsbEJvb2xlYW5NZXRob2RBKQogICAgICAo
Sk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqbWV0aG9kSUQgbWV0aG9kSUQsIGp2YWx1ZSAqIGFy
Z3MpOwoKICAgIGpieXRlICggKkNhbGxCeXRlTWV0aG9kKQogICAgICAoSk5JRW52ICplbnYsIGpv
YmplY3Qgb2JqLCBqbWV0aG9kSUQgbWV0aG9kSUQsIC4uLik7CiAgICBqYnl0ZSAoICpDYWxsQnl0
ZU1ldGhvZFYpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGptZXRob2RJRCBtZXRo
b2RJRCwgdmFfbGlzdCBhcmdzKTsKICAgIGpieXRlICggKkNhbGxCeXRlTWV0aG9kQSkKICAgICAg
KEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUgKmFy
Z3MpOwoKICAgIGpjaGFyICggKkNhbGxDaGFyTWV0aG9kKQogICAgICAoSk5JRW52ICplbnYsIGpv
YmplY3Qgb2JqLCBqbWV0aG9kSUQgbWV0aG9kSUQsIC4uLik7CiAgICBqY2hhciAoICpDYWxsQ2hh
ck1ldGhvZFYpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGptZXRob2RJRCBtZXRo
b2RJRCwgdmFfbGlzdCBhcmdzKTsKICAgIGpjaGFyICggKkNhbGxDaGFyTWV0aG9kQSkKICAgICAg
KEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUgKmFy
Z3MpOwoKICAgIGpzaG9ydCAoICpDYWxsU2hvcnRNZXRob2QpCiAgICAgIChKTklFbnYgKmVudiwg
am9iamVjdCBvYmosIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKTsKICAgIGpzaG9ydCAoICpDYWxs
U2hvcnRNZXRob2RWKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqbWV0aG9kSUQg
bWV0aG9kSUQsIHZhX2xpc3QgYXJncyk7CiAgICBqc2hvcnQgKCAqQ2FsbFNob3J0TWV0aG9kQSkK
ICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1ldGhvZElELCBqdmFs
dWUgKmFyZ3MpOwoKICAgIGppbnQgKCAqQ2FsbEludE1ldGhvZCkKICAgICAgKEpOSUVudiAqZW52
LCBqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1ldGhvZElELCAuLi4pOwogICAgamludCAoICpDYWxs
SW50TWV0aG9kVikKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1l
dGhvZElELCB2YV9saXN0IGFyZ3MpOwogICAgamludCAoICpDYWxsSW50TWV0aG9kQSkKICAgICAg
KEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUgKmFy
Z3MpOwoKICAgIGpsb25nICggKkNhbGxMb25nTWV0aG9kKQogICAgICAoSk5JRW52ICplbnYsIGpv
YmplY3Qgb2JqLCBqbWV0aG9kSUQgbWV0aG9kSUQsIC4uLik7CiAgICBqbG9uZyAoICpDYWxsTG9u
Z01ldGhvZFYpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGptZXRob2RJRCBtZXRo
b2RJRCwgdmFfbGlzdCBhcmdzKTsKICAgIGpsb25nICggKkNhbGxMb25nTWV0aG9kQSkKICAgICAg
KEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUgKmFy
Z3MpOwoKICAgIGpmbG9hdCAoICpDYWxsRmxvYXRNZXRob2QpCiAgICAgIChKTklFbnYgKmVudiwg
am9iamVjdCBvYmosIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKTsKICAgIGpmbG9hdCAoICpDYWxs
RmxvYXRNZXRob2RWKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqbWV0aG9kSUQg
bWV0aG9kSUQsIHZhX2xpc3QgYXJncyk7CiAgICBqZmxvYXQgKCAqQ2FsbEZsb2F0TWV0aG9kQSkK
ICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1ldGhvZElELCBqdmFs
dWUgKmFyZ3MpOwoKICAgIGpkb3VibGUgKCAqQ2FsbERvdWJsZU1ldGhvZCkKICAgICAgKEpOSUVu
diAqZW52LCBqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1ldGhvZElELCAuLi4pOwogICAgamRvdWJs
ZSAoICpDYWxsRG91YmxlTWV0aG9kVikKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwg
am1ldGhvZElEIG1ldGhvZElELCB2YV9saXN0IGFyZ3MpOwogICAgamRvdWJsZSAoICpDYWxsRG91
YmxlTWV0aG9kQSkKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1l
dGhvZElELCBqdmFsdWUgKmFyZ3MpOwoKICAgIHZvaWQgKCAqQ2FsbFZvaWRNZXRob2QpCiAgICAg
IChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKTsKICAg
IHZvaWQgKCAqQ2FsbFZvaWRNZXRob2RWKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2Jq
LCBqbWV0aG9kSUQgbWV0aG9kSUQsIHZhX2xpc3QgYXJncyk7CiAgICB2b2lkICggKkNhbGxWb2lk
TWV0aG9kQSkKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1ldGhv
ZElELCBqdmFsdWUgKiBhcmdzKTsKCiAgICBqb2JqZWN0ICggKkNhbGxOb252aXJ0dWFsT2JqZWN0
TWV0aG9kKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenosIGpt
ZXRob2RJRCBtZXRob2RJRCwgLi4uKTsKICAgIGpvYmplY3QgKCAqQ2FsbE5vbnZpcnR1YWxPYmpl
Y3RNZXRob2RWKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenos
IGptZXRob2RJRCBtZXRob2RJRCwKICAgICAgIHZhX2xpc3QgYXJncyk7CiAgICBqb2JqZWN0ICgg
KkNhbGxOb252aXJ0dWFsT2JqZWN0TWV0aG9kQSkKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0
IG9iaiwgamNsYXNzIGNsYXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICBqdmFsdWUgKiBh
cmdzKTsKCiAgICBqYm9vbGVhbiAoICpDYWxsTm9udmlydHVhbEJvb2xlYW5NZXRob2QpCiAgICAg
IChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhv
ZElELCAuLi4pOwogICAgamJvb2xlYW4gKCAqQ2FsbE5vbnZpcnR1YWxCb29sZWFuTWV0aG9kVikK
ICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LCBqbWV0aG9kSUQg
bWV0aG9kSUQsCiAgICAgICB2YV9saXN0IGFyZ3MpOwogICAgamJvb2xlYW4gKCAqQ2FsbE5vbnZp
cnR1YWxCb29sZWFuTWV0aG9kQSkKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgamNs
YXNzIGNsYXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICBqdmFsdWUgKiBhcmdzKTsKCiAg
ICBqYnl0ZSAoICpDYWxsTm9udmlydHVhbEJ5dGVNZXRob2QpCiAgICAgIChKTklFbnYgKmVudiwg
am9iamVjdCBvYmosIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElELCAuLi4pOwogICAg
amJ5dGUgKCAqQ2FsbE5vbnZpcnR1YWxCeXRlTWV0aG9kVikKICAgICAgKEpOSUVudiAqZW52LCBq
b2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICB2YV9s
aXN0IGFyZ3MpOwogICAgamJ5dGUgKCAqQ2FsbE5vbnZpcnR1YWxCeXRlTWV0aG9kQSkKICAgICAg
KEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LCBqbWV0aG9kSUQgbWV0aG9k
SUQsCiAgICAgICBqdmFsdWUgKmFyZ3MpOwoKICAgIGpjaGFyICggKkNhbGxOb252aXJ0dWFsQ2hh
ck1ldGhvZCkKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LCBq
bWV0aG9kSUQgbWV0aG9kSUQsIC4uLik7CiAgICBqY2hhciAoICpDYWxsTm9udmlydHVhbENoYXJN
ZXRob2RWKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenosIGpt
ZXRob2RJRCBtZXRob2RJRCwKICAgICAgIHZhX2xpc3QgYXJncyk7CiAgICBqY2hhciAoICpDYWxs
Tm9udmlydHVhbENoYXJNZXRob2RBKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBq
Y2xhc3MgY2xhenosIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAgIGp2YWx1ZSAqYXJncyk7Cgog
ICAganNob3J0ICggKkNhbGxOb252aXJ0dWFsU2hvcnRNZXRob2QpCiAgICAgIChKTklFbnYgKmVu
diwgam9iamVjdCBvYmosIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElELCAuLi4pOwog
ICAganNob3J0ICggKkNhbGxOb252aXJ0dWFsU2hvcnRNZXRob2RWKQogICAgICAoSk5JRW52ICpl
bnYsIGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenosIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAg
IHZhX2xpc3QgYXJncyk7CiAgICBqc2hvcnQgKCAqQ2FsbE5vbnZpcnR1YWxTaG9ydE1ldGhvZEEp
CiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGpjbGFzcyBjbGF6eiwgam1ldGhvZElE
IG1ldGhvZElELAogICAgICAganZhbHVlICphcmdzKTsKCiAgICBqaW50ICggKkNhbGxOb252aXJ0
dWFsSW50TWV0aG9kKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xh
enosIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKTsKICAgIGppbnQgKCAqQ2FsbE5vbnZpcnR1YWxJ
bnRNZXRob2RWKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenos
IGptZXRob2RJRCBtZXRob2RJRCwKICAgICAgIHZhX2xpc3QgYXJncyk7CiAgICBqaW50ICggKkNh
bGxOb252aXJ0dWFsSW50TWV0aG9kQSkKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwg
amNsYXNzIGNsYXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICBqdmFsdWUgKmFyZ3MpOwoK
ICAgIGpsb25nICggKkNhbGxOb252aXJ0dWFsTG9uZ01ldGhvZCkKICAgICAgKEpOSUVudiAqZW52
LCBqb2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQsIC4uLik7CiAg
ICBqbG9uZyAoICpDYWxsTm9udmlydHVhbExvbmdNZXRob2RWKQogICAgICAoSk5JRW52ICplbnYs
IGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenosIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAgIHZh
X2xpc3QgYXJncyk7CiAgICBqbG9uZyAoICpDYWxsTm9udmlydHVhbExvbmdNZXRob2RBKQogICAg
ICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenosIGptZXRob2RJRCBtZXRo
b2RJRCwKICAgICAgIGp2YWx1ZSAqYXJncyk7CgogICAgamZsb2F0ICggKkNhbGxOb252aXJ0dWFs
RmxvYXRNZXRob2QpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGpjbGFzcyBjbGF6
eiwgam1ldGhvZElEIG1ldGhvZElELCAuLi4pOwogICAgamZsb2F0ICggKkNhbGxOb252aXJ0dWFs
RmxvYXRNZXRob2RWKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xh
enosIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAgIHZhX2xpc3QgYXJncyk7CiAgICBqZmxvYXQg
KCAqQ2FsbE5vbnZpcnR1YWxGbG9hdE1ldGhvZEEpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVj
dCBvYmosIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElELAogICAgICAganZhbHVlICph
cmdzKTsKCiAgICBqZG91YmxlICggKkNhbGxOb252aXJ0dWFsRG91YmxlTWV0aG9kKQogICAgICAo
Sk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenosIGptZXRob2RJRCBtZXRob2RJ
RCwgLi4uKTsKICAgIGpkb3VibGUgKCAqQ2FsbE5vbnZpcnR1YWxEb3VibGVNZXRob2RWKQogICAg
ICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenosIGptZXRob2RJRCBtZXRo
b2RJRCwKICAgICAgIHZhX2xpc3QgYXJncyk7CiAgICBqZG91YmxlICggKkNhbGxOb252aXJ0dWFs
RG91YmxlTWV0aG9kQSkKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgamNsYXNzIGNs
YXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICBqdmFsdWUgKmFyZ3MpOwoKICAgIHZvaWQg
KCAqQ2FsbE5vbnZpcnR1YWxWb2lkTWV0aG9kKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qg
b2JqLCBqY2xhc3MgY2xhenosIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKTsKICAgIHZvaWQgKCAq
Q2FsbE5vbnZpcnR1YWxWb2lkTWV0aG9kVikKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9i
aiwgamNsYXNzIGNsYXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICB2YV9saXN0IGFyZ3Mp
OwogICAgdm9pZCAoICpDYWxsTm9udmlydHVhbFZvaWRNZXRob2RBKQogICAgICAoSk5JRW52ICpl
bnYsIGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenosIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAg
IGp2YWx1ZSAqIGFyZ3MpOwoKICAgIGpmaWVsZElEICggKkdldEZpZWxkSUQpCiAgICAgIChKTklF
bnYgKmVudiwgamNsYXNzIGNsYXp6LCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpzaWcp
OwoKICAgIGpvYmplY3QgKCAqR2V0T2JqZWN0RmllbGQpCiAgICAgIChKTklFbnYgKmVudiwgam9i
amVjdCBvYmosIGpmaWVsZElEIGZpZWxkSUQpOwogICAgamJvb2xlYW4gKCAqR2V0Qm9vbGVhbkZp
ZWxkKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqZmllbGRJRCBmaWVsZElEKTsK
ICAgIGpieXRlICggKkdldEJ5dGVGaWVsZCkKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9i
aiwgamZpZWxkSUQgZmllbGRJRCk7CiAgICBqY2hhciAoICpHZXRDaGFyRmllbGQpCiAgICAgIChK
TklFbnYgKmVudiwgam9iamVjdCBvYmosIGpmaWVsZElEIGZpZWxkSUQpOwogICAganNob3J0ICgg
KkdldFNob3J0RmllbGQpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGpmaWVsZElE
IGZpZWxkSUQpOwogICAgamludCAoICpHZXRJbnRGaWVsZCkKICAgICAgKEpOSUVudiAqZW52LCBq
b2JqZWN0IG9iaiwgamZpZWxkSUQgZmllbGRJRCk7CiAgICBqbG9uZyAoICpHZXRMb25nRmllbGQp
CiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGpmaWVsZElEIGZpZWxkSUQpOwogICAg
amZsb2F0ICggKkdldEZsb2F0RmllbGQpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmos
IGpmaWVsZElEIGZpZWxkSUQpOwogICAgamRvdWJsZSAoICpHZXREb3VibGVGaWVsZCkKICAgICAg
KEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgamZpZWxkSUQgZmllbGRJRCk7CgogICAgdm9pZCAo
ICpTZXRPYmplY3RGaWVsZCkKICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IG9iaiwgamZpZWxk
SUQgZmllbGRJRCwgam9iamVjdCB2YWwpOwogICAgdm9pZCAoICpTZXRCb29sZWFuRmllbGQpCiAg
ICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGpmaWVsZElEIGZpZWxkSUQsIGpib29sZWFu
IHZhbCk7CiAgICB2b2lkICggKlNldEJ5dGVGaWVsZCkKICAgICAgKEpOSUVudiAqZW52LCBqb2Jq
ZWN0IG9iaiwgamZpZWxkSUQgZmllbGRJRCwgamJ5dGUgdmFsKTsKICAgIHZvaWQgKCAqU2V0Q2hh
ckZpZWxkKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBqZmllbGRJRCBmaWVsZElE
LCBqY2hhciB2YWwpOwogICAgdm9pZCAoICpTZXRTaG9ydEZpZWxkKQogICAgICAoSk5JRW52ICpl
bnYsIGpvYmplY3Qgb2JqLCBqZmllbGRJRCBmaWVsZElELCBqc2hvcnQgdmFsKTsKICAgIHZvaWQg
KCAqU2V0SW50RmllbGQpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGpmaWVsZElE
IGZpZWxkSUQsIGppbnQgdmFsKTsKICAgIHZvaWQgKCAqU2V0TG9uZ0ZpZWxkKQogICAgICAoSk5J
RW52ICplbnYsIGpvYmplY3Qgb2JqLCBqZmllbGRJRCBmaWVsZElELCBqbG9uZyB2YWwpOwogICAg
dm9pZCAoICpTZXRGbG9hdEZpZWxkKQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqLCBq
ZmllbGRJRCBmaWVsZElELCBqZmxvYXQgdmFsKTsKICAgIHZvaWQgKCAqU2V0RG91YmxlRmllbGQp
CiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmosIGpmaWVsZElEIGZpZWxkSUQsIGpkb3Vi
bGUgdmFsKTsKCiAgICBqbWV0aG9kSUQgKCAqR2V0U3RhdGljTWV0aG9kSUQpCiAgICAgIChKTklF
bnYgKmVudiwgamNsYXNzIGNsYXp6LCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpzaWcp
OwoKICAgIGpvYmplY3QgKCAqQ2FsbFN0YXRpY09iamVjdE1ldGhvZCkKICAgICAgKEpOSUVudiAq
ZW52LCBqY2xhc3MgY2xhenosIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKTsKICAgIGpvYmplY3Qg
KCAqQ2FsbFN0YXRpY09iamVjdE1ldGhvZFYpCiAgICAgIChKTklFbnYgKmVudiwgamNsYXNzIGNs
YXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQsIHZhX2xpc3QgYXJncyk7CiAgICBqb2JqZWN0ICggKkNh
bGxTdGF0aWNPYmplY3RNZXRob2RBKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwg
am1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUgKmFyZ3MpOwoKICAgIGpib29sZWFuICggKkNhbGxT
dGF0aWNCb29sZWFuTWV0aG9kKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1l
dGhvZElEIG1ldGhvZElELCAuLi4pOwogICAgamJvb2xlYW4gKCAqQ2FsbFN0YXRpY0Jvb2xlYW5N
ZXRob2RWKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhv
ZElELCB2YV9saXN0IGFyZ3MpOwogICAgamJvb2xlYW4gKCAqQ2FsbFN0YXRpY0Jvb2xlYW5NZXRo
b2RBKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElE
LCBqdmFsdWUgKmFyZ3MpOwoKICAgIGpieXRlICggKkNhbGxTdGF0aWNCeXRlTWV0aG9kKQogICAg
ICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElELCAuLi4pOwog
ICAgamJ5dGUgKCAqQ2FsbFN0YXRpY0J5dGVNZXRob2RWKQogICAgICAoSk5JRW52ICplbnYsIGpj
bGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElELCB2YV9saXN0IGFyZ3MpOwogICAgamJ5dGUg
KCAqQ2FsbFN0YXRpY0J5dGVNZXRob2RBKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6
eiwgam1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUgKmFyZ3MpOwoKICAgIGpjaGFyICggKkNhbGxT
dGF0aWNDaGFyTWV0aG9kKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1ldGhv
ZElEIG1ldGhvZElELCAuLi4pOwogICAgamNoYXIgKCAqQ2FsbFN0YXRpY0NoYXJNZXRob2RWKQog
ICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElELCB2YV9s
aXN0IGFyZ3MpOwogICAgamNoYXIgKCAqQ2FsbFN0YXRpY0NoYXJNZXRob2RBKQogICAgICAoSk5J
RW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUgKmFyZ3Mp
OwoKICAgIGpzaG9ydCAoICpDYWxsU3RhdGljU2hvcnRNZXRob2QpCiAgICAgIChKTklFbnYgKmVu
diwgamNsYXNzIGNsYXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQsIC4uLik7CiAgICBqc2hvcnQgKCAq
Q2FsbFN0YXRpY1Nob3J0TWV0aG9kVikKICAgICAgKEpOSUVudiAqZW52LCBqY2xhc3MgY2xhenos
IGptZXRob2RJRCBtZXRob2RJRCwgdmFfbGlzdCBhcmdzKTsKICAgIGpzaG9ydCAoICpDYWxsU3Rh
dGljU2hvcnRNZXRob2RBKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1ldGhv
ZElEIG1ldGhvZElELCBqdmFsdWUgKmFyZ3MpOwoKICAgIGppbnQgKCAqQ2FsbFN0YXRpY0ludE1l
dGhvZCkKICAgICAgKEpOSUVudiAqZW52LCBqY2xhc3MgY2xhenosIGptZXRob2RJRCBtZXRob2RJ
RCwgLi4uKTsKICAgIGppbnQgKCAqQ2FsbFN0YXRpY0ludE1ldGhvZFYpCiAgICAgIChKTklFbnYg
KmVudiwgamNsYXNzIGNsYXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQsIHZhX2xpc3QgYXJncyk7CiAg
ICBqaW50ICggKkNhbGxTdGF0aWNJbnRNZXRob2RBKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFz
cyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUgKmFyZ3MpOwoKICAgIGpsb25nICgg
KkNhbGxTdGF0aWNMb25nTWV0aG9kKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwg
am1ldGhvZElEIG1ldGhvZElELCAuLi4pOwogICAgamxvbmcgKCAqQ2FsbFN0YXRpY0xvbmdNZXRo
b2RWKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElE
LCB2YV9saXN0IGFyZ3MpOwogICAgamxvbmcgKCAqQ2FsbFN0YXRpY0xvbmdNZXRob2RBKQogICAg
ICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUg
KmFyZ3MpOwoKICAgIGpmbG9hdCAoICpDYWxsU3RhdGljRmxvYXRNZXRob2QpCiAgICAgIChKTklF
bnYgKmVudiwgamNsYXNzIGNsYXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQsIC4uLik7CiAgICBqZmxv
YXQgKCAqQ2FsbFN0YXRpY0Zsb2F0TWV0aG9kVikKICAgICAgKEpOSUVudiAqZW52LCBqY2xhc3Mg
Y2xhenosIGptZXRob2RJRCBtZXRob2RJRCwgdmFfbGlzdCBhcmdzKTsKICAgIGpmbG9hdCAoICpD
YWxsU3RhdGljRmxvYXRNZXRob2RBKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwg
am1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUgKmFyZ3MpOwoKICAgIGpkb3VibGUgKCAqQ2FsbFN0
YXRpY0RvdWJsZU1ldGhvZCkKICAgICAgKEpOSUVudiAqZW52LCBqY2xhc3MgY2xhenosIGptZXRo
b2RJRCBtZXRob2RJRCwgLi4uKTsKICAgIGpkb3VibGUgKCAqQ2FsbFN0YXRpY0RvdWJsZU1ldGhv
ZFYpCiAgICAgIChKTklFbnYgKmVudiwgamNsYXNzIGNsYXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQs
IHZhX2xpc3QgYXJncyk7CiAgICBqZG91YmxlICggKkNhbGxTdGF0aWNEb3VibGVNZXRob2RBKQog
ICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElELCBqdmFs
dWUgKmFyZ3MpOwoKICAgIHZvaWQgKCAqQ2FsbFN0YXRpY1ZvaWRNZXRob2QpCiAgICAgIChKTklF
bnYgKmVudiwgamNsYXNzIGNscywgam1ldGhvZElEIG1ldGhvZElELCAuLi4pOwogICAgdm9pZCAo
ICpDYWxsU3RhdGljVm9pZE1ldGhvZFYpCiAgICAgIChKTklFbnYgKmVudiwgamNsYXNzIGNscywg
am1ldGhvZElEIG1ldGhvZElELCB2YV9saXN0IGFyZ3MpOwogICAgdm9pZCAoICpDYWxsU3RhdGlj
Vm9pZE1ldGhvZEEpCiAgICAgIChKTklFbnYgKmVudiwgamNsYXNzIGNscywgam1ldGhvZElEIG1l
dGhvZElELCBqdmFsdWUgKiBhcmdzKTsKCiAgICBqZmllbGRJRCAoICpHZXRTdGF0aWNGaWVsZElE
KQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgY29uc3QgY2hhciAqbmFtZSwgY29u
c3QgY2hhciAqc2lnKTsKICAgIGpvYmplY3QgKCAqR2V0U3RhdGljT2JqZWN0RmllbGQpCiAgICAg
IChKTklFbnYgKmVudiwgamNsYXNzIGNsYXp6LCBqZmllbGRJRCBmaWVsZElEKTsKICAgIGpib29s
ZWFuICggKkdldFN0YXRpY0Jvb2xlYW5GaWVsZCkKICAgICAgKEpOSUVudiAqZW52LCBqY2xhc3Mg
Y2xhenosIGpmaWVsZElEIGZpZWxkSUQpOwogICAgamJ5dGUgKCAqR2V0U3RhdGljQnl0ZUZpZWxk
KQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgamZpZWxkSUQgZmllbGRJRCk7CiAg
ICBqY2hhciAoICpHZXRTdGF0aWNDaGFyRmllbGQpCiAgICAgIChKTklFbnYgKmVudiwgamNsYXNz
IGNsYXp6LCBqZmllbGRJRCBmaWVsZElEKTsKICAgIGpzaG9ydCAoICpHZXRTdGF0aWNTaG9ydEZp
ZWxkKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgamZpZWxkSUQgZmllbGRJRCk7
CiAgICBqaW50ICggKkdldFN0YXRpY0ludEZpZWxkKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFz
cyBjbGF6eiwgamZpZWxkSUQgZmllbGRJRCk7CiAgICBqbG9uZyAoICpHZXRTdGF0aWNMb25nRmll
bGQpCiAgICAgIChKTklFbnYgKmVudiwgamNsYXNzIGNsYXp6LCBqZmllbGRJRCBmaWVsZElEKTsK
ICAgIGpmbG9hdCAoICpHZXRTdGF0aWNGbG9hdEZpZWxkKQogICAgICAoSk5JRW52ICplbnYsIGpj
bGFzcyBjbGF6eiwgamZpZWxkSUQgZmllbGRJRCk7CiAgICBqZG91YmxlICggKkdldFN0YXRpY0Rv
dWJsZUZpZWxkKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgamZpZWxkSUQgZmll
bGRJRCk7CgogICAgdm9pZCAoICpTZXRTdGF0aWNPYmplY3RGaWVsZCkKICAgICAgKEpOSUVudiAq
ZW52LCBqY2xhc3MgY2xhenosIGpmaWVsZElEIGZpZWxkSUQsIGpvYmplY3QgdmFsdWUpOwogICAg
dm9pZCAoICpTZXRTdGF0aWNCb29sZWFuRmllbGQpCiAgICAgIChKTklFbnYgKmVudiwgamNsYXNz
IGNsYXp6LCBqZmllbGRJRCBmaWVsZElELCBqYm9vbGVhbiB2YWx1ZSk7CiAgICB2b2lkICggKlNl
dFN0YXRpY0J5dGVGaWVsZCkKICAgICAgKEpOSUVudiAqZW52LCBqY2xhc3MgY2xhenosIGpmaWVs
ZElEIGZpZWxkSUQsIGpieXRlIHZhbHVlKTsKICAgIHZvaWQgKCAqU2V0U3RhdGljQ2hhckZpZWxk
KQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgamZpZWxkSUQgZmllbGRJRCwgamNo
YXIgdmFsdWUpOwogICAgdm9pZCAoICpTZXRTdGF0aWNTaG9ydEZpZWxkKQogICAgICAoSk5JRW52
ICplbnYsIGpjbGFzcyBjbGF6eiwgamZpZWxkSUQgZmllbGRJRCwganNob3J0IHZhbHVlKTsKICAg
IHZvaWQgKCAqU2V0U3RhdGljSW50RmllbGQpCiAgICAgIChKTklFbnYgKmVudiwgamNsYXNzIGNs
YXp6LCBqZmllbGRJRCBmaWVsZElELCBqaW50IHZhbHVlKTsKICAgIHZvaWQgKCAqU2V0U3RhdGlj
TG9uZ0ZpZWxkKQogICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgamZpZWxkSUQgZmll
bGRJRCwgamxvbmcgdmFsdWUpOwogICAgdm9pZCAoICpTZXRTdGF0aWNGbG9hdEZpZWxkKQogICAg
ICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgamZpZWxkSUQgZmllbGRJRCwgamZsb2F0IHZh
bHVlKTsKICAgIHZvaWQgKCAqU2V0U3RhdGljRG91YmxlRmllbGQpCiAgICAgIChKTklFbnYgKmVu
diwgamNsYXNzIGNsYXp6LCBqZmllbGRJRCBmaWVsZElELCBqZG91YmxlIHZhbHVlKTsKCiAgICBq
c3RyaW5nICggKk5ld1N0cmluZykKICAgICAgKEpOSUVudiAqZW52LCBjb25zdCBqY2hhciAqdW5p
Y29kZSwganNpemUgbGVuKTsKICAgIGpzaXplICggKkdldFN0cmluZ0xlbmd0aCkKICAgICAgKEpO
SUVudiAqZW52LCBqc3RyaW5nIHN0cik7CiAgICBjb25zdCBqY2hhciAqKCAqR2V0U3RyaW5nQ2hh
cnMpCiAgICAgIChKTklFbnYgKmVudiwganN0cmluZyBzdHIsIGpib29sZWFuICppc0NvcHkpOwog
ICAgdm9pZCAoICpSZWxlYXNlU3RyaW5nQ2hhcnMpCiAgICAgIChKTklFbnYgKmVudiwganN0cmlu
ZyBzdHIsIGNvbnN0IGpjaGFyICpjaGFycyk7CgogICAganN0cmluZyAoICpOZXdTdHJpbmdVVEYp
CiAgICAgIChKTklFbnYgKmVudiwgY29uc3QgY2hhciAqdXRmKTsKICAgIGpzaXplICggKkdldFN0
cmluZ1VURkxlbmd0aCkKICAgICAgKEpOSUVudiAqZW52LCBqc3RyaW5nIHN0cik7CiAgICBjb25z
dCBjaGFyKiAoICpHZXRTdHJpbmdVVEZDaGFycykKICAgICAgKEpOSUVudiAqZW52LCBqc3RyaW5n
IHN0ciwgamJvb2xlYW4gKmlzQ29weSk7CiAgICB2b2lkICggKlJlbGVhc2VTdHJpbmdVVEZDaGFy
cykKICAgICAgKEpOSUVudiAqZW52LCBqc3RyaW5nIHN0ciwgY29uc3QgY2hhciogY2hhcnMpOwoK
CiAgICBqc2l6ZSAoICpHZXRBcnJheUxlbmd0aCkKICAgICAgKEpOSUVudiAqZW52LCBqYXJyYXkg
YXJyYXkpOwoKICAgIGpvYmplY3RBcnJheSAoICpOZXdPYmplY3RBcnJheSkKICAgICAgKEpOSUVu
diAqZW52LCBqc2l6ZSBsZW4sIGpjbGFzcyBjbGF6eiwgam9iamVjdCBpbml0KTsKICAgIGpvYmpl
Y3QgKCAqR2V0T2JqZWN0QXJyYXlFbGVtZW50KQogICAgICAoSk5JRW52ICplbnYsIGpvYmplY3RB
cnJheSBhcnJheSwganNpemUgaW5kZXgpOwogICAgdm9pZCAoICpTZXRPYmplY3RBcnJheUVsZW1l
bnQpCiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdEFycmF5IGFycmF5LCBqc2l6ZSBpbmRleCwg
am9iamVjdCB2YWwpOwoKICAgIGpib29sZWFuQXJyYXkgKCAqTmV3Qm9vbGVhbkFycmF5KQogICAg
ICAoSk5JRW52ICplbnYsIGpzaXplIGxlbik7CiAgICBqYnl0ZUFycmF5ICggKk5ld0J5dGVBcnJh
eSkKICAgICAgKEpOSUVudiAqZW52LCBqc2l6ZSBsZW4pOwogICAgamNoYXJBcnJheSAoICpOZXdD
aGFyQXJyYXkpCiAgICAgIChKTklFbnYgKmVudiwganNpemUgbGVuKTsKICAgIGpzaG9ydEFycmF5
ICggKk5ld1Nob3J0QXJyYXkpCiAgICAgIChKTklFbnYgKmVudiwganNpemUgbGVuKTsKICAgIGpp
bnRBcnJheSAoICpOZXdJbnRBcnJheSkKICAgICAgKEpOSUVudiAqZW52LCBqc2l6ZSBsZW4pOwog
ICAgamxvbmdBcnJheSAoICpOZXdMb25nQXJyYXkpCiAgICAgIChKTklFbnYgKmVudiwganNpemUg
bGVuKTsKICAgIGpmbG9hdEFycmF5ICggKk5ld0Zsb2F0QXJyYXkpCiAgICAgIChKTklFbnYgKmVu
diwganNpemUgbGVuKTsKICAgIGpkb3VibGVBcnJheSAoICpOZXdEb3VibGVBcnJheSkKICAgICAg
KEpOSUVudiAqZW52LCBqc2l6ZSBsZW4pOwoKICAgIGpib29sZWFuICogKCAqR2V0Qm9vbGVhbkFy
cmF5RWxlbWVudHMpCiAgICAgIChKTklFbnYgKmVudiwgamJvb2xlYW5BcnJheSBhcnJheSwgamJv
b2xlYW4gKmlzQ29weSk7CiAgICBqYnl0ZSAqICggKkdldEJ5dGVBcnJheUVsZW1lbnRzKQogICAg
ICAoSk5JRW52ICplbnYsIGpieXRlQXJyYXkgYXJyYXksIGpib29sZWFuICppc0NvcHkpOwogICAg
amNoYXIgKiAoICpHZXRDaGFyQXJyYXlFbGVtZW50cykKICAgICAgKEpOSUVudiAqZW52LCBqY2hh
ckFycmF5IGFycmF5LCBqYm9vbGVhbiAqaXNDb3B5KTsKICAgIGpzaG9ydCAqICggKkdldFNob3J0
QXJyYXlFbGVtZW50cykKICAgICAgKEpOSUVudiAqZW52LCBqc2hvcnRBcnJheSBhcnJheSwgamJv
b2xlYW4gKmlzQ29weSk7CiAgICBqaW50ICogKCAqR2V0SW50QXJyYXlFbGVtZW50cykKICAgICAg
KEpOSUVudiAqZW52LCBqaW50QXJyYXkgYXJyYXksIGpib29sZWFuICppc0NvcHkpOwogICAgamxv
bmcgKiAoICpHZXRMb25nQXJyYXlFbGVtZW50cykKICAgICAgKEpOSUVudiAqZW52LCBqbG9uZ0Fy
cmF5IGFycmF5LCBqYm9vbGVhbiAqaXNDb3B5KTsKICAgIGpmbG9hdCAqICggKkdldEZsb2F0QXJy
YXlFbGVtZW50cykKICAgICAgKEpOSUVudiAqZW52LCBqZmxvYXRBcnJheSBhcnJheSwgamJvb2xl
YW4gKmlzQ29weSk7CiAgICBqZG91YmxlICogKCAqR2V0RG91YmxlQXJyYXlFbGVtZW50cykKICAg
ICAgKEpOSUVudiAqZW52LCBqZG91YmxlQXJyYXkgYXJyYXksIGpib29sZWFuICppc0NvcHkpOwoK
ICAgIHZvaWQgKCAqUmVsZWFzZUJvb2xlYW5BcnJheUVsZW1lbnRzKQogICAgICAoSk5JRW52ICpl
bnYsIGpib29sZWFuQXJyYXkgYXJyYXksIGpib29sZWFuICplbGVtcywgamludCBtb2RlKTsKICAg
IHZvaWQgKCAqUmVsZWFzZUJ5dGVBcnJheUVsZW1lbnRzKQogICAgICAoSk5JRW52ICplbnYsIGpi
eXRlQXJyYXkgYXJyYXksIGpieXRlICplbGVtcywgamludCBtb2RlKTsKICAgIHZvaWQgKCAqUmVs
ZWFzZUNoYXJBcnJheUVsZW1lbnRzKQogICAgICAoSk5JRW52ICplbnYsIGpjaGFyQXJyYXkgYXJy
YXksIGpjaGFyICplbGVtcywgamludCBtb2RlKTsKICAgIHZvaWQgKCAqUmVsZWFzZVNob3J0QXJy
YXlFbGVtZW50cykKICAgICAgKEpOSUVudiAqZW52LCBqc2hvcnRBcnJheSBhcnJheSwganNob3J0
ICplbGVtcywgamludCBtb2RlKTsKICAgIHZvaWQgKCAqUmVsZWFzZUludEFycmF5RWxlbWVudHMp
CiAgICAgIChKTklFbnYgKmVudiwgamludEFycmF5IGFycmF5LCBqaW50ICplbGVtcywgamludCBt
b2RlKTsKICAgIHZvaWQgKCAqUmVsZWFzZUxvbmdBcnJheUVsZW1lbnRzKQogICAgICAoSk5JRW52
ICplbnYsIGpsb25nQXJyYXkgYXJyYXksIGpsb25nICplbGVtcywgamludCBtb2RlKTsKICAgIHZv
aWQgKCAqUmVsZWFzZUZsb2F0QXJyYXlFbGVtZW50cykKICAgICAgKEpOSUVudiAqZW52LCBqZmxv
YXRBcnJheSBhcnJheSwgamZsb2F0ICplbGVtcywgamludCBtb2RlKTsKICAgIHZvaWQgKCAqUmVs
ZWFzZURvdWJsZUFycmF5RWxlbWVudHMpCiAgICAgIChKTklFbnYgKmVudiwgamRvdWJsZUFycmF5
IGFycmF5LCBqZG91YmxlICplbGVtcywgamludCBtb2RlKTsKCiAgICB2b2lkICggKkdldEJvb2xl
YW5BcnJheVJlZ2lvbikKICAgICAgKEpOSUVudiAqZW52LCBqYm9vbGVhbkFycmF5IGFycmF5LCBq
c2l6ZSBzdGFydCwganNpemUgbCwgamJvb2xlYW4gKmJ1Zik7CiAgICB2b2lkICggKkdldEJ5dGVB
cnJheVJlZ2lvbikKICAgICAgKEpOSUVudiAqZW52LCBqYnl0ZUFycmF5IGFycmF5LCBqc2l6ZSBz
dGFydCwganNpemUgbGVuLCBqYnl0ZSAqYnVmKTsKICAgIHZvaWQgKCAqR2V0Q2hhckFycmF5UmVn
aW9uKQogICAgICAoSk5JRW52ICplbnYsIGpjaGFyQXJyYXkgYXJyYXksIGpzaXplIHN0YXJ0LCBq
c2l6ZSBsZW4sIGpjaGFyICpidWYpOwogICAgdm9pZCAoICpHZXRTaG9ydEFycmF5UmVnaW9uKQog
ICAgICAoSk5JRW52ICplbnYsIGpzaG9ydEFycmF5IGFycmF5LCBqc2l6ZSBzdGFydCwganNpemUg
bGVuLCBqc2hvcnQgKmJ1Zik7CiAgICB2b2lkICggKkdldEludEFycmF5UmVnaW9uKQogICAgICAo
Sk5JRW52ICplbnYsIGppbnRBcnJheSBhcnJheSwganNpemUgc3RhcnQsIGpzaXplIGxlbiwgamlu
dCAqYnVmKTsKICAgIHZvaWQgKCAqR2V0TG9uZ0FycmF5UmVnaW9uKQogICAgICAoSk5JRW52ICpl
bnYsIGpsb25nQXJyYXkgYXJyYXksIGpzaXplIHN0YXJ0LCBqc2l6ZSBsZW4sIGpsb25nICpidWYp
OwogICAgdm9pZCAoICpHZXRGbG9hdEFycmF5UmVnaW9uKQogICAgICAoSk5JRW52ICplbnYsIGpm
bG9hdEFycmF5IGFycmF5LCBqc2l6ZSBzdGFydCwganNpemUgbGVuLCBqZmxvYXQgKmJ1Zik7CiAg
ICB2b2lkICggKkdldERvdWJsZUFycmF5UmVnaW9uKQogICAgICAoSk5JRW52ICplbnYsIGpkb3Vi
bGVBcnJheSBhcnJheSwganNpemUgc3RhcnQsIGpzaXplIGxlbiwgamRvdWJsZSAqYnVmKTsKCiAg
ICB2b2lkICggKlNldEJvb2xlYW5BcnJheVJlZ2lvbikKICAgICAgKEpOSUVudiAqZW52LCBqYm9v
bGVhbkFycmF5IGFycmF5LCBqc2l6ZSBzdGFydCwganNpemUgbCwgamJvb2xlYW4gKmJ1Zik7CiAg
ICB2b2lkICggKlNldEJ5dGVBcnJheVJlZ2lvbikKICAgICAgKEpOSUVudiAqZW52LCBqYnl0ZUFy
cmF5IGFycmF5LCBqc2l6ZSBzdGFydCwganNpemUgbGVuLCBqYnl0ZSAqYnVmKTsKICAgIHZvaWQg
KCAqU2V0Q2hhckFycmF5UmVnaW9uKQogICAgICAoSk5JRW52ICplbnYsIGpjaGFyQXJyYXkgYXJy
YXksIGpzaXplIHN0YXJ0LCBqc2l6ZSBsZW4sIGpjaGFyICpidWYpOwogICAgdm9pZCAoICpTZXRT
aG9ydEFycmF5UmVnaW9uKQogICAgICAoSk5JRW52ICplbnYsIGpzaG9ydEFycmF5IGFycmF5LCBq
c2l6ZSBzdGFydCwganNpemUgbGVuLCBqc2hvcnQgKmJ1Zik7CiAgICB2b2lkICggKlNldEludEFy
cmF5UmVnaW9uKQogICAgICAoSk5JRW52ICplbnYsIGppbnRBcnJheSBhcnJheSwganNpemUgc3Rh
cnQsIGpzaXplIGxlbiwgamludCAqYnVmKTsKICAgIHZvaWQgKCAqU2V0TG9uZ0FycmF5UmVnaW9u
KQogICAgICAoSk5JRW52ICplbnYsIGpsb25nQXJyYXkgYXJyYXksIGpzaXplIHN0YXJ0LCBqc2l6
ZSBsZW4sIGpsb25nICpidWYpOwogICAgdm9pZCAoICpTZXRGbG9hdEFycmF5UmVnaW9uKQogICAg
ICAoSk5JRW52ICplbnYsIGpmbG9hdEFycmF5IGFycmF5LCBqc2l6ZSBzdGFydCwganNpemUgbGVu
LCBqZmxvYXQgKmJ1Zik7CiAgICB2b2lkICggKlNldERvdWJsZUFycmF5UmVnaW9uKQogICAgICAo
Sk5JRW52ICplbnYsIGpkb3VibGVBcnJheSBhcnJheSwganNpemUgc3RhcnQsIGpzaXplIGxlbiwg
amRvdWJsZSAqYnVmKTsKCiAgICBqaW50ICggKlJlZ2lzdGVyTmF0aXZlcykKICAgICAgKEpOSUVu
diAqZW52LCBqY2xhc3MgY2xhenosIGNvbnN0IEpOSU5hdGl2ZU1ldGhvZCAqbWV0aG9kcywKICAg
ICAgIGppbnQgbk1ldGhvZHMpOwogICAgamludCAoICpVbnJlZ2lzdGVyTmF0aXZlcykKICAgICAg
KEpOSUVudiAqZW52LCBqY2xhc3MgY2xhenopOwoKICAgIGppbnQgKCAqTW9uaXRvckVudGVyKQog
ICAgICAoSk5JRW52ICplbnYsIGpvYmplY3Qgb2JqKTsKICAgIGppbnQgKCAqTW9uaXRvckV4aXQp
CiAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCBvYmopOwoKICAgIGppbnQgKCAqR2V0SmF2YVZN
KQogICAgICAoSk5JRW52ICplbnYsIEphdmFWTSAqKnZtKTsKfTsKIyA3MjEgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9qYXZhL2puaS5oIgpzdHJ1Y3QgSk5JRW52XyB7CiAgICBjb25zdCBzdHJ1Y3Qg
Sk5JTmF0aXZlSW50ZXJmYWNlXyAqZnVuY3Rpb25zOwogICAgdm9pZCAqcmVzZXJ2ZWQwOwogICAg
dm9pZCAqcmVzZXJ2ZWQxWzZdOwoKCiAgICBqaW50IEdldFZlcnNpb24oKSB7CiAgICAgICAgcmV0
dXJuIGZ1bmN0aW9ucy0+R2V0VmVyc2lvbih0aGlzKTsKICAgIH0KICAgIGpjbGFzcyBEZWZpbmVD
bGFzcyhjb25zdCBjaGFyICpuYW1lLCBqb2JqZWN0IGxvYWRlciwgY29uc3QgamJ5dGUgKmJ1ZiwK
ICAgICAgICAgICAgICAgICAgICAgICBqc2l6ZSBsZW4pIHsKICAgICAgICByZXR1cm4gZnVuY3Rp
b25zLT5EZWZpbmVDbGFzcyh0aGlzLCBuYW1lLCBsb2FkZXIsIGJ1ZiwgbGVuKTsKICAgIH0KICAg
IGpjbGFzcyBGaW5kQ2xhc3MoY29uc3QgY2hhciAqbmFtZSkgewogICAgICAgIHJldHVybiBmdW5j
dGlvbnMtPkZpbmRDbGFzcyh0aGlzLCBuYW1lKTsKICAgIH0KICAgIGpjbGFzcyBHZXRTdXBlcmNs
YXNzKGpjbGFzcyBzdWIpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5HZXRTdXBlcmNsYXNz
KHRoaXMsIHN1Yik7CiAgICB9CiAgICBqYm9vbGVhbiBJc0Fzc2lnbmFibGVGcm9tKGpjbGFzcyBz
dWIsIGpjbGFzcyBzdXApIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5Jc0Fzc2lnbmFibGVG
cm9tKHRoaXMsIHN1Yiwgc3VwKTsKICAgIH0KCiAgICBqaW50IFRocm93KGp0aHJvd2FibGUgb2Jq
KSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+VGhyb3codGhpcywgb2JqKTsKICAgIH0KICAg
IGppbnQgVGhyb3dOZXcoamNsYXNzIGNsYXp6LCBjb25zdCBjaGFyICptc2cpIHsKICAgICAgICBy
ZXR1cm4gZnVuY3Rpb25zLT5UaHJvd05ldyh0aGlzLCBjbGF6eiwgbXNnKTsKICAgIH0KICAgIGp0
aHJvd2FibGUgRXhjZXB0aW9uT2NjdXJyZWQoKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+
RXhjZXB0aW9uT2NjdXJyZWQodGhpcyk7CiAgICB9CiAgICB2b2lkIEV4Y2VwdGlvbkRlc2NyaWJl
KCkgewogICAgICAgIGZ1bmN0aW9ucy0+RXhjZXB0aW9uRGVzY3JpYmUodGhpcyk7CiAgICB9CiAg
ICB2b2lkIEV4Y2VwdGlvbkNsZWFyKCkgewogICAgICAgIGZ1bmN0aW9ucy0+RXhjZXB0aW9uQ2xl
YXIodGhpcyk7CiAgICB9CiAgICB2b2lkIEZhdGFsRXJyb3IoY29uc3QgY2hhciAqbXNnKSB7CiAg
ICAgICAgZnVuY3Rpb25zLT5GYXRhbEVycm9yKHRoaXMsIG1zZyk7CiAgICB9CgogICAgam9iamVj
dCBOZXdHbG9iYWxSZWYoam9iamVjdCBsb2JqKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+
TmV3R2xvYmFsUmVmKHRoaXMsbG9iaik7CiAgICB9CiAgICB2b2lkIERlbGV0ZUdsb2JhbFJlZihq
b2JqZWN0IGdyZWYpIHsKICAgICAgICBmdW5jdGlvbnMtPkRlbGV0ZUdsb2JhbFJlZih0aGlzLGdy
ZWYpOwogICAgfQogICAgdm9pZCBEZWxldGVMb2NhbFJlZihqb2JqZWN0IG9iaikgewogICAgICAg
IGZ1bmN0aW9ucy0+RGVsZXRlTG9jYWxSZWYodGhpcywgb2JqKTsKICAgIH0KCiAgICBqYm9vbGVh
biBJc1NhbWVPYmplY3Qoam9iamVjdCBvYmoxLCBqb2JqZWN0IG9iajIpIHsKICAgICAgICByZXR1
cm4gZnVuY3Rpb25zLT5Jc1NhbWVPYmplY3QodGhpcyxvYmoxLG9iajIpOwogICAgfQoKICAgIGpv
YmplY3QgQWxsb2NPYmplY3QoamNsYXNzIGNsYXp6KSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
cy0+QWxsb2NPYmplY3QodGhpcyxjbGF6eik7CiAgICB9CiAgICBqb2JqZWN0IE5ld09iamVjdChq
Y2xhc3MgY2xhenosIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKSB7CiAgICAgICAgdmFfbGlzdCBh
cmdzOwogICAgICAgIGpvYmplY3QgcmVzdWx0OwogICAgICAgIF9fYnVpbHRpbl9zdGRhcmdfc3Rh
cnQoKGFyZ3MpLG1ldGhvZElEKTsKICAgICAgICByZXN1bHQgPSBmdW5jdGlvbnMtPk5ld09iamVj
dFYodGhpcyxjbGF6eixtZXRob2RJRCxhcmdzKTsKICAgICAgICBfX2J1aWx0aW5fdmFfZW5kKGFy
Z3MpOwogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CiAgICBqb2JqZWN0IE5ld09iamVjdFYo
amNsYXNzIGNsYXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICAgICAgICAgICAgICAgICAg
dmFfbGlzdCBhcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+TmV3T2JqZWN0Vih0aGlz
LGNsYXp6LG1ldGhvZElELGFyZ3MpOwogICAgfQogICAgam9iamVjdCBOZXdPYmplY3RBKGpjbGFz
cyBjbGF6eiwgam1ldGhvZElEIG1ldGhvZElELAogICAgICAgICAgICAgICAgICAgICAgIGp2YWx1
ZSAqYXJncykgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPk5ld09iamVjdEEodGhpcyxjbGF6
eixtZXRob2RJRCxhcmdzKTsKICAgIH0KCiAgICBqY2xhc3MgR2V0T2JqZWN0Q2xhc3Moam9iamVj
dCBvYmopIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5HZXRPYmplY3RDbGFzcyh0aGlzLG9i
aik7CiAgICB9CiAgICBqYm9vbGVhbiBJc0luc3RhbmNlT2Yoam9iamVjdCBvYmosIGpjbGFzcyBj
bGF6eikgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPklzSW5zdGFuY2VPZih0aGlzLG9iaixj
bGF6eik7CiAgICB9CgogICAgam1ldGhvZElEIEdldE1ldGhvZElEKGpjbGFzcyBjbGF6eiwgY29u
c3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzaWcp
IHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5HZXRNZXRob2RJRCh0aGlzLGNsYXp6LG5hbWUs
c2lnKTsKICAgIH0KCiAgICBqb2JqZWN0IENhbGxPYmplY3RNZXRob2Qoam9iamVjdCBvYmosIGpt
ZXRob2RJRCBtZXRob2RJRCwgLi4uKSB7CiAgICAgICAgdmFfbGlzdCBhcmdzOwogICAgICAgIGpv
YmplY3QgcmVzdWx0OwogICAgICAgIF9fYnVpbHRpbl9zdGRhcmdfc3RhcnQoKGFyZ3MpLG1ldGhv
ZElEKTsKICAgICAgICByZXN1bHQgPSBmdW5jdGlvbnMtPkNhbGxPYmplY3RNZXRob2RWKHRoaXMs
b2JqLG1ldGhvZElELGFyZ3MpOwogICAgICAgIF9fYnVpbHRpbl92YV9lbmQoYXJncyk7CiAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KICAgIGpvYmplY3QgQ2FsbE9iamVjdE1ldGhvZFYoam9i
amVjdCBvYmosIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAgICAgICAgICAgICAgICAgICAgdmFf
bGlzdCBhcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+Q2FsbE9iamVjdE1ldGhvZFYo
dGhpcyxvYmosbWV0aG9kSUQsYXJncyk7CiAgICB9CiAgICBqb2JqZWN0IENhbGxPYmplY3RNZXRo
b2RBKGpvYmplY3Qgb2JqLCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICAgICAgICAgICAgICAg
ICAgIGp2YWx1ZSAqIGFyZ3MpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5DYWxsT2JqZWN0
TWV0aG9kQSh0aGlzLG9iaixtZXRob2RJRCxhcmdzKTsKICAgIH0KCiAgICBqYm9vbGVhbiBDYWxs
Qm9vbGVhbk1ldGhvZChqb2JqZWN0IG9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGptZXRob2RJRCBtZXRob2RJRCwgLi4uKSB7CiAgICAgICAgdmFfbGlzdCBhcmdzOwogICAgICAg
IGpib29sZWFuIHJlc3VsdDsKICAgICAgICBfX2J1aWx0aW5fc3RkYXJnX3N0YXJ0KChhcmdzKSxt
ZXRob2RJRCk7CiAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zLT5DYWxsQm9vbGVhbk1ldGhvZFYo
dGhpcyxvYmosbWV0aG9kSUQsYXJncyk7CiAgICAgICAgX19idWlsdGluX3ZhX2VuZChhcmdzKTsK
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQogICAgamJvb2xlYW4gQ2FsbEJvb2xlYW5NZXRo
b2RWKGpvYmplY3Qgb2JqLCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFfbGlzdCBhcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+Q2Fs
bEJvb2xlYW5NZXRob2RWKHRoaXMsb2JqLG1ldGhvZElELGFyZ3MpOwogICAgfQogICAgamJvb2xl
YW4gQ2FsbEJvb2xlYW5NZXRob2RBKGpvYmplY3Qgb2JqLCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganZhbHVlICogYXJncykgewogICAgICAgIHJl
dHVybiBmdW5jdGlvbnMtPkNhbGxCb29sZWFuTWV0aG9kQSh0aGlzLG9iaixtZXRob2RJRCwgYXJn
cyk7CiAgICB9CgogICAgamJ5dGUgQ2FsbEJ5dGVNZXRob2Qoam9iamVjdCBvYmosIGptZXRob2RJ
RCBtZXRob2RJRCwgLi4uKSB7CiAgICAgICAgdmFfbGlzdCBhcmdzOwogICAgICAgIGpieXRlIHJl
c3VsdDsKICAgICAgICBfX2J1aWx0aW5fc3RkYXJnX3N0YXJ0KChhcmdzKSxtZXRob2RJRCk7CiAg
ICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zLT5DYWxsQnl0ZU1ldGhvZFYodGhpcyxvYmosbWV0aG9k
SUQsYXJncyk7CiAgICAgICAgX19idWlsdGluX3ZhX2VuZChhcmdzKTsKICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgfQogICAgamJ5dGUgQ2FsbEJ5dGVNZXRob2RWKGpvYmplY3Qgb2JqLCBqbWV0
aG9kSUQgbWV0aG9kSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCBhcmdzKSB7
CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+Q2FsbEJ5dGVNZXRob2RWKHRoaXMsb2JqLG1ldGhv
ZElELGFyZ3MpOwogICAgfQogICAgamJ5dGUgQ2FsbEJ5dGVNZXRob2RBKGpvYmplY3Qgb2JqLCBq
bWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAganZhbHVlICogYXJn
cykgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkNhbGxCeXRlTWV0aG9kQSh0aGlzLG9iaixt
ZXRob2RJRCxhcmdzKTsKICAgIH0KCiAgICBqY2hhciBDYWxsQ2hhck1ldGhvZChqb2JqZWN0IG9i
aiwgam1ldGhvZElEIG1ldGhvZElELCAuLi4pIHsKICAgICAgICB2YV9saXN0IGFyZ3M7CiAgICAg
ICAgamNoYXIgcmVzdWx0OwogICAgICAgIF9fYnVpbHRpbl9zdGRhcmdfc3RhcnQoKGFyZ3MpLG1l
dGhvZElEKTsKICAgICAgICByZXN1bHQgPSBmdW5jdGlvbnMtPkNhbGxDaGFyTWV0aG9kVih0aGlz
LG9iaixtZXRob2RJRCxhcmdzKTsKICAgICAgICBfX2J1aWx0aW5fdmFfZW5kKGFyZ3MpOwogICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICB9CiAgICBqY2hhciBDYWxsQ2hhck1ldGhvZFYoam9iamVj
dCBvYmosIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9s
aXN0IGFyZ3MpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5DYWxsQ2hhck1ldGhvZFYodGhp
cyxvYmosbWV0aG9kSUQsYXJncyk7CiAgICB9CiAgICBqY2hhciBDYWxsQ2hhck1ldGhvZEEoam9i
amVjdCBvYmosIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICBq
dmFsdWUgKiBhcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+Q2FsbENoYXJNZXRob2RB
KHRoaXMsb2JqLG1ldGhvZElELGFyZ3MpOwogICAgfQoKICAgIGpzaG9ydCBDYWxsU2hvcnRNZXRo
b2Qoam9iamVjdCBvYmosIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKSB7CiAgICAgICAgdmFfbGlz
dCBhcmdzOwogICAgICAgIGpzaG9ydCByZXN1bHQ7CiAgICAgICAgX19idWlsdGluX3N0ZGFyZ19z
dGFydCgoYXJncyksbWV0aG9kSUQpOwogICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9ucy0+Q2FsbFNo
b3J0TWV0aG9kVih0aGlzLG9iaixtZXRob2RJRCxhcmdzKTsKICAgICAgICBfX2J1aWx0aW5fdmFf
ZW5kKGFyZ3MpOwogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CiAgICBqc2hvcnQgQ2FsbFNo
b3J0TWV0aG9kVihqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1ldGhvZElELAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFfbGlzdCBhcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+
Q2FsbFNob3J0TWV0aG9kVih0aGlzLG9iaixtZXRob2RJRCxhcmdzKTsKICAgIH0KICAgIGpzaG9y
dCBDYWxsU2hvcnRNZXRob2RBKGpvYmplY3Qgb2JqLCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqdmFsdWUgKiBhcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1
bmN0aW9ucy0+Q2FsbFNob3J0TWV0aG9kQSh0aGlzLG9iaixtZXRob2RJRCxhcmdzKTsKICAgIH0K
CiAgICBqaW50IENhbGxJbnRNZXRob2Qoam9iamVjdCBvYmosIGptZXRob2RJRCBtZXRob2RJRCwg
Li4uKSB7CiAgICAgICAgdmFfbGlzdCBhcmdzOwogICAgICAgIGppbnQgcmVzdWx0OwogICAgICAg
IF9fYnVpbHRpbl9zdGRhcmdfc3RhcnQoKGFyZ3MpLG1ldGhvZElEKTsKICAgICAgICByZXN1bHQg
PSBmdW5jdGlvbnMtPkNhbGxJbnRNZXRob2RWKHRoaXMsb2JqLG1ldGhvZElELGFyZ3MpOwogICAg
ICAgIF9fYnVpbHRpbl92YV9lbmQoYXJncyk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0K
ICAgIGppbnQgQ2FsbEludE1ldGhvZFYoam9iamVjdCBvYmosIGptZXRob2RJRCBtZXRob2RJRCwK
ICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCBhcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1
bmN0aW9ucy0+Q2FsbEludE1ldGhvZFYodGhpcyxvYmosbWV0aG9kSUQsYXJncyk7CiAgICB9CiAg
ICBqaW50IENhbGxJbnRNZXRob2RBKGpvYmplY3Qgb2JqLCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAg
ICAgICAgICAgICAgICAgICAgICAgIGp2YWx1ZSAqIGFyZ3MpIHsKICAgICAgICByZXR1cm4gZnVu
Y3Rpb25zLT5DYWxsSW50TWV0aG9kQSh0aGlzLG9iaixtZXRob2RJRCxhcmdzKTsKICAgIH0KCiAg
ICBqbG9uZyBDYWxsTG9uZ01ldGhvZChqb2JqZWN0IG9iaiwgam1ldGhvZElEIG1ldGhvZElELCAu
Li4pIHsKICAgICAgICB2YV9saXN0IGFyZ3M7CiAgICAgICAgamxvbmcgcmVzdWx0OwogICAgICAg
IF9fYnVpbHRpbl9zdGRhcmdfc3RhcnQoKGFyZ3MpLG1ldGhvZElEKTsKICAgICAgICByZXN1bHQg
PSBmdW5jdGlvbnMtPkNhbGxMb25nTWV0aG9kVih0aGlzLG9iaixtZXRob2RJRCxhcmdzKTsKICAg
ICAgICBfX2J1aWx0aW5fdmFfZW5kKGFyZ3MpOwogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9
CiAgICBqbG9uZyBDYWxsTG9uZ01ldGhvZFYoam9iamVjdCBvYmosIGptZXRob2RJRCBtZXRob2RJ
RCwKICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0IGFyZ3MpIHsKICAgICAgICByZXR1
cm4gZnVuY3Rpb25zLT5DYWxsTG9uZ01ldGhvZFYodGhpcyxvYmosbWV0aG9kSUQsYXJncyk7CiAg
ICB9CiAgICBqbG9uZyBDYWxsTG9uZ01ldGhvZEEoam9iamVjdCBvYmosIGptZXRob2RJRCBtZXRo
b2RJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICBqdmFsdWUgKiBhcmdzKSB7CiAgICAgICAg
cmV0dXJuIGZ1bmN0aW9ucy0+Q2FsbExvbmdNZXRob2RBKHRoaXMsb2JqLG1ldGhvZElELGFyZ3Mp
OwogICAgfQoKICAgIGpmbG9hdCBDYWxsRmxvYXRNZXRob2Qoam9iamVjdCBvYmosIGptZXRob2RJ
RCBtZXRob2RJRCwgLi4uKSB7CiAgICAgICAgdmFfbGlzdCBhcmdzOwogICAgICAgIGpmbG9hdCBy
ZXN1bHQ7CiAgICAgICAgX19idWlsdGluX3N0ZGFyZ19zdGFydCgoYXJncyksbWV0aG9kSUQpOwog
ICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9ucy0+Q2FsbEZsb2F0TWV0aG9kVih0aGlzLG9iaixtZXRo
b2RJRCxhcmdzKTsKICAgICAgICBfX2J1aWx0aW5fdmFfZW5kKGFyZ3MpOwogICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICB9CiAgICBqZmxvYXQgQ2FsbEZsb2F0TWV0aG9kVihqb2JqZWN0IG9iaiwg
am1ldGhvZElEIG1ldGhvZElELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCBh
cmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+Q2FsbEZsb2F0TWV0aG9kVih0aGlzLG9i
aixtZXRob2RJRCxhcmdzKTsKICAgIH0KICAgIGpmbG9hdCBDYWxsRmxvYXRNZXRob2RBKGpvYmpl
Y3Qgb2JqLCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
dmFsdWUgKiBhcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+Q2FsbEZsb2F0TWV0aG9k
QSh0aGlzLG9iaixtZXRob2RJRCxhcmdzKTsKICAgIH0KCiAgICBqZG91YmxlIENhbGxEb3VibGVN
ZXRob2Qoam9iamVjdCBvYmosIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKSB7CiAgICAgICAgdmFf
bGlzdCBhcmdzOwogICAgICAgIGpkb3VibGUgcmVzdWx0OwogICAgICAgIF9fYnVpbHRpbl9zdGRh
cmdfc3RhcnQoKGFyZ3MpLG1ldGhvZElEKTsKICAgICAgICByZXN1bHQgPSBmdW5jdGlvbnMtPkNh
bGxEb3VibGVNZXRob2RWKHRoaXMsb2JqLG1ldGhvZElELGFyZ3MpOwogICAgICAgIF9fYnVpbHRp
bl92YV9lbmQoYXJncyk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KICAgIGpkb3VibGUg
Q2FsbERvdWJsZU1ldGhvZFYoam9iamVjdCBvYmosIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAg
ICAgICAgICAgICAgICAgICAgdmFfbGlzdCBhcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
cy0+Q2FsbERvdWJsZU1ldGhvZFYodGhpcyxvYmosbWV0aG9kSUQsYXJncyk7CiAgICB9CiAgICBq
ZG91YmxlIENhbGxEb3VibGVNZXRob2RBKGpvYmplY3Qgb2JqLCBqbWV0aG9kSUQgbWV0aG9kSUQs
CiAgICAgICAgICAgICAgICAgICAgICAgIGp2YWx1ZSAqIGFyZ3MpIHsKICAgICAgICByZXR1cm4g
ZnVuY3Rpb25zLT5DYWxsRG91YmxlTWV0aG9kQSh0aGlzLG9iaixtZXRob2RJRCxhcmdzKTsKICAg
IH0KCiAgICB2b2lkIENhbGxWb2lkTWV0aG9kKGpvYmplY3Qgb2JqLCBqbWV0aG9kSUQgbWV0aG9k
SUQsIC4uLikgewogICAgICAgIHZhX2xpc3QgYXJnczsKICAgICAgICBfX2J1aWx0aW5fc3RkYXJn
X3N0YXJ0KChhcmdzKSxtZXRob2RJRCk7CiAgICAgICAgZnVuY3Rpb25zLT5DYWxsVm9pZE1ldGhv
ZFYodGhpcyxvYmosbWV0aG9kSUQsYXJncyk7CiAgICAgICAgX19idWlsdGluX3ZhX2VuZChhcmdz
KTsKICAgIH0KICAgIHZvaWQgQ2FsbFZvaWRNZXRob2RWKGpvYmplY3Qgb2JqLCBqbWV0aG9kSUQg
bWV0aG9kSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0IGFyZ3MpIHsKICAgICAg
ICBmdW5jdGlvbnMtPkNhbGxWb2lkTWV0aG9kVih0aGlzLG9iaixtZXRob2RJRCxhcmdzKTsKICAg
IH0KICAgIHZvaWQgQ2FsbFZvaWRNZXRob2RBKGpvYmplY3Qgb2JqLCBqbWV0aG9kSUQgbWV0aG9k
SUQsCiAgICAgICAgICAgICAgICAgICAgICAgICBqdmFsdWUgKiBhcmdzKSB7CiAgICAgICAgZnVu
Y3Rpb25zLT5DYWxsVm9pZE1ldGhvZEEodGhpcyxvYmosbWV0aG9kSUQsYXJncyk7CiAgICB9Cgog
ICAgam9iamVjdCBDYWxsTm9udmlydHVhbE9iamVjdE1ldGhvZChqb2JqZWN0IG9iaiwgamNsYXNz
IGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqbWV0aG9kSUQg
bWV0aG9kSUQsIC4uLikgewogICAgICAgIHZhX2xpc3QgYXJnczsKICAgICAgICBqb2JqZWN0IHJl
c3VsdDsKICAgICAgICBfX2J1aWx0aW5fc3RkYXJnX3N0YXJ0KChhcmdzKSxtZXRob2RJRCk7CiAg
ICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zLT5DYWxsTm9udmlydHVhbE9iamVjdE1ldGhvZFYodGhp
cyxvYmosY2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWV0aG9kSUQsYXJncyk7CiAgICAgICAgX19idWlsdGluX3ZhX2VuZChhcmdz
KTsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQogICAgam9iamVjdCBDYWxsTm9udmlydHVh
bE9iamVjdE1ldGhvZFYoam9iamVjdCBvYmosIGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwgdmFfbGlzdCBhcmdz
KSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+Q2FsbE5vbnZpcnR1YWxPYmplY3RNZXRob2RW
KHRoaXMsb2JqLGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtZXRob2RJRCxhcmdzKTsKICAgIH0KICAgIGpvYmplY3QgQ2FsbE5vbnZp
cnR1YWxPYmplY3RNZXRob2RBKGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenosCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqbWV0aG9kSUQgbWV0aG9kSUQsIGp2YWx1ZSAq
IGFyZ3MpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5DYWxsTm9udmlydHVhbE9iamVjdE1l
dGhvZEEodGhpcyxvYmosY2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1ldGhvZElELGFyZ3MpOwogICAgfQoKICAgIGpib29sZWFuIENh
bGxOb252aXJ0dWFsQm9vbGVhbk1ldGhvZChqb2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwg
Li4uKSB7CiAgICAgICAgdmFfbGlzdCBhcmdzOwogICAgICAgIGpib29sZWFuIHJlc3VsdDsKICAg
ICAgICBfX2J1aWx0aW5fc3RkYXJnX3N0YXJ0KChhcmdzKSxtZXRob2RJRCk7CiAgICAgICAgcmVz
dWx0ID0gZnVuY3Rpb25zLT5DYWxsTm9udmlydHVhbEJvb2xlYW5NZXRob2RWKHRoaXMsb2JqLGNs
YXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtZXRob2RJRCxhcmdzKTsKICAgICAgICBfX2J1aWx0aW5fdmFfZW5kKGFyZ3MpOwogICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICB9CiAgICBqYm9vbGVhbiBDYWxsTm9udmlydHVhbEJvb2xl
YW5NZXRob2RWKGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenosCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwgdmFfbGlzdCBhcmdzKSB7
CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+Q2FsbE5vbnZpcnR1YWxCb29sZWFuTWV0aG9kVih0
aGlzLG9iaixjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1ldGhvZElELGFyZ3MpOwogICAgfQogICAgamJvb2xlYW4gQ2FsbE5vbnZp
cnR1YWxCb29sZWFuTWV0aG9kQShqb2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqbWV0aG9kSUQgbWV0aG9kSUQsIGp2YWx1
ZSAqIGFyZ3MpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5DYWxsTm9udmlydHVhbEJvb2xl
YW5NZXRob2RBKHRoaXMsb2JqLGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kSUQsIGFyZ3MpOwogICAgfQoKICAgIGpieXRl
IENhbGxOb252aXJ0dWFsQnl0ZU1ldGhvZChqb2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKSB7
CiAgICAgICAgdmFfbGlzdCBhcmdzOwogICAgICAgIGpieXRlIHJlc3VsdDsKICAgICAgICBfX2J1
aWx0aW5fc3RkYXJnX3N0YXJ0KChhcmdzKSxtZXRob2RJRCk7CiAgICAgICAgcmVzdWx0ID0gZnVu
Y3Rpb25zLT5DYWxsTm9udmlydHVhbEJ5dGVNZXRob2RWKHRoaXMsb2JqLGNsYXp6LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2RJRCxh
cmdzKTsKICAgICAgICBfX2J1aWx0aW5fdmFfZW5kKGFyZ3MpOwogICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICB9CiAgICBqYnl0ZSBDYWxsTm9udmlydHVhbEJ5dGVNZXRob2RWKGpvYmplY3Qgb2Jq
LCBqY2xhc3MgY2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGptZXRo
b2RJRCBtZXRob2RJRCwgdmFfbGlzdCBhcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+
Q2FsbE5vbnZpcnR1YWxCeXRlTWV0aG9kVih0aGlzLG9iaixjbGF6eiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZElELGFyZ3MpOwogICAg
fQogICAgamJ5dGUgQ2FsbE5vbnZpcnR1YWxCeXRlTWV0aG9kQShqb2JqZWN0IG9iaiwgamNsYXNz
IGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqbWV0aG9kSUQgbWV0
aG9kSUQsIGp2YWx1ZSAqIGFyZ3MpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5DYWxsTm9u
dmlydHVhbEJ5dGVNZXRob2RBKHRoaXMsb2JqLGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kSUQsYXJncyk7CiAgICB9CgogICAg
amNoYXIgQ2FsbE5vbnZpcnR1YWxDaGFyTWV0aG9kKGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenos
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam1ldGhvZElEIG1ldGhvZElELCAu
Li4pIHsKICAgICAgICB2YV9saXN0IGFyZ3M7CiAgICAgICAgamNoYXIgcmVzdWx0OwogICAgICAg
IF9fYnVpbHRpbl9zdGRhcmdfc3RhcnQoKGFyZ3MpLG1ldGhvZElEKTsKICAgICAgICByZXN1bHQg
PSBmdW5jdGlvbnMtPkNhbGxOb252aXJ0dWFsQ2hhck1ldGhvZFYodGhpcyxvYmosY2xhenosCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhv
ZElELGFyZ3MpOwogICAgICAgIF9fYnVpbHRpbl92YV9lbmQoYXJncyk7CiAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgIH0KICAgIGpjaGFyIENhbGxOb252aXJ0dWFsQ2hhck1ldGhvZFYoam9iamVj
dCBvYmosIGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
am1ldGhvZElEIG1ldGhvZElELCB2YV9saXN0IGFyZ3MpIHsKICAgICAgICByZXR1cm4gZnVuY3Rp
b25zLT5DYWxsTm9udmlydHVhbENoYXJNZXRob2RWKHRoaXMsb2JqLGNsYXp6LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kSUQsYXJncyk7
CiAgICB9CiAgICBqY2hhciBDYWxsTm9udmlydHVhbENoYXJNZXRob2RBKGpvYmplY3Qgb2JqLCBq
Y2xhc3MgY2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGptZXRob2RJ
RCBtZXRob2RJRCwganZhbHVlICogYXJncykgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkNh
bGxOb252aXJ0dWFsQ2hhck1ldGhvZEEodGhpcyxvYmosY2xhenosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2RJRCxhcmdzKTsKICAgIH0K
CiAgICBqc2hvcnQgQ2FsbE5vbnZpcnR1YWxTaG9ydE1ldGhvZChqb2JqZWN0IG9iaiwgamNsYXNz
IGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam1ldGhvZElEIG1l
dGhvZElELCAuLi4pIHsKICAgICAgICB2YV9saXN0IGFyZ3M7CiAgICAgICAganNob3J0IHJlc3Vs
dDsKICAgICAgICBfX2J1aWx0aW5fc3RkYXJnX3N0YXJ0KChhcmdzKSxtZXRob2RJRCk7CiAgICAg
ICAgcmVzdWx0ID0gZnVuY3Rpb25zLT5DYWxsTm9udmlydHVhbFNob3J0TWV0aG9kVih0aGlzLG9i
aixjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1ldGhvZElELGFyZ3MpOwogICAgICAgIF9fYnVpbHRpbl92YV9lbmQoYXJncyk7CiAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KICAgIGpzaG9ydCBDYWxsTm9udmlydHVhbFNob3J0
TWV0aG9kVihqb2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwgdmFfbGlzdCBhcmdzKSB7CiAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9ucy0+Q2FsbE5vbnZpcnR1YWxTaG9ydE1ldGhvZFYodGhpcyxvYmos
Y2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWV0aG9kSUQsYXJncyk7CiAgICB9CiAgICBqc2hvcnQgQ2FsbE5vbnZpcnR1YWxTaG9ydE1l
dGhvZEEoam9iamVjdCBvYmosIGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqbWV0aG9kSUQgbWV0aG9kSUQsIGp2YWx1ZSAqIGFyZ3MpIHsKICAgICAg
ICByZXR1cm4gZnVuY3Rpb25zLT5DYWxsTm9udmlydHVhbFNob3J0TWV0aG9kQSh0aGlzLG9iaixj
bGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtZXRob2RJRCxhcmdzKTsKICAgIH0KCiAgICBqaW50IENhbGxOb252aXJ0dWFsSW50TWV0aG9k
KGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKSB7CiAgICAgICAgdmFfbGlzdCBhcmdzOwogICAg
ICAgIGppbnQgcmVzdWx0OwogICAgICAgIF9fYnVpbHRpbl9zdGRhcmdfc3RhcnQoKGFyZ3MpLG1l
dGhvZElEKTsKICAgICAgICByZXN1bHQgPSBmdW5jdGlvbnMtPkNhbGxOb252aXJ0dWFsSW50TWV0
aG9kVih0aGlzLG9iaixjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtZXRob2RJRCxhcmdzKTsKICAgICAgICBfX2J1aWx0aW5fdmFfZW5k
KGFyZ3MpOwogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CiAgICBqaW50IENhbGxOb252aXJ0
dWFsSW50TWV0aG9kVihqb2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgam1ldGhvZElEIG1ldGhvZElELCB2YV9saXN0IGFyZ3MpIHsKICAg
ICAgICByZXR1cm4gZnVuY3Rpb25zLT5DYWxsTm9udmlydHVhbEludE1ldGhvZFYodGhpcyxvYmos
Y2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1ldGhvZElELGFyZ3MpOwogICAgfQogICAgamludCBDYWxsTm9udmlydHVhbEludE1ldGhvZEEo
am9iamVjdCBvYmosIGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGptZXRob2RJRCBtZXRob2RJRCwganZhbHVlICogYXJncykgewogICAgICAgIHJldHVybiBm
dW5jdGlvbnMtPkNhbGxOb252aXJ0dWFsSW50TWV0aG9kQSh0aGlzLG9iaixjbGF6eiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kSUQsYXJn
cyk7CiAgICB9CgogICAgamxvbmcgQ2FsbE5vbnZpcnR1YWxMb25nTWV0aG9kKGpvYmplY3Qgb2Jq
LCBqY2xhc3MgY2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam1ldGhv
ZElEIG1ldGhvZElELCAuLi4pIHsKICAgICAgICB2YV9saXN0IGFyZ3M7CiAgICAgICAgamxvbmcg
cmVzdWx0OwogICAgICAgIF9fYnVpbHRpbl9zdGRhcmdfc3RhcnQoKGFyZ3MpLG1ldGhvZElEKTsK
ICAgICAgICByZXN1bHQgPSBmdW5jdGlvbnMtPkNhbGxOb252aXJ0dWFsTG9uZ01ldGhvZFYodGhp
cyxvYmosY2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1ldGhvZElELGFyZ3MpOwogICAgICAgIF9fYnVpbHRpbl92YV9lbmQoYXJncyk7
CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KICAgIGpsb25nIENhbGxOb252aXJ0dWFsTG9u
Z01ldGhvZFYoam9iamVjdCBvYmosIGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgam1ldGhvZElEIG1ldGhvZElELCB2YV9saXN0IGFyZ3MpIHsKICAgICAg
ICByZXR1cm4gZnVuY3Rpb25zLT5DYWxsTm9udmlydHVhbExvbmdNZXRob2RWKHRoaXMsb2JqLGNs
YXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWV0aG9kSUQsYXJncyk7CiAgICB9CiAgICBqbG9uZyBDYWxsTm9udmlydHVhbExvbmdNZXRob2RB
KGpvYmplY3Qgb2JqLCBqY2xhc3MgY2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwganZhbHVlICogYXJncykgewogICAgICAgIHJldHVy
biBmdW5jdGlvbnMtPkNhbGxOb252aXJ0dWFsTG9uZ01ldGhvZEEodGhpcyxvYmosY2xhenosCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2RJ
RCxhcmdzKTsKICAgIH0KCiAgICBqZmxvYXQgQ2FsbE5vbnZpcnR1YWxGbG9hdE1ldGhvZChqb2Jq
ZWN0IG9iaiwgamNsYXNzIGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgam1ldGhvZElEIG1ldGhvZElELCAuLi4pIHsKICAgICAgICB2YV9saXN0IGFyZ3M7CiAgICAg
ICAgamZsb2F0IHJlc3VsdDsKICAgICAgICBfX2J1aWx0aW5fc3RkYXJnX3N0YXJ0KChhcmdzKSxt
ZXRob2RJRCk7CiAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zLT5DYWxsTm9udmlydHVhbEZsb2F0
TWV0aG9kVih0aGlzLG9iaixjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZElELGFyZ3MpOwogICAgICAgIF9fYnVpbHRpbl92
YV9lbmQoYXJncyk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KICAgIGpmbG9hdCBDYWxs
Tm9udmlydHVhbEZsb2F0TWV0aG9kVihqb2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0IGFyZ3MpIHsKICAgICAgICBy
ZXR1cm4gZnVuY3Rpb25zLT5DYWxsTm9udmlydHVhbEZsb2F0TWV0aG9kVih0aGlzLG9iaixjbGF6
eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
ZXRob2RJRCxhcmdzKTsKICAgIH0KICAgIGpmbG9hdCBDYWxsTm9udmlydHVhbEZsb2F0TWV0aG9k
QShqb2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqdmFsdWUgKiBhcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+Q2Fs
bE5vbnZpcnR1YWxGbG9hdE1ldGhvZEEodGhpcyxvYmosY2xhenosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kSUQsYXJncyk7CiAgICB9
CgogICAgamRvdWJsZSBDYWxsTm9udmlydHVhbERvdWJsZU1ldGhvZChqb2JqZWN0IG9iaiwgamNs
YXNzIGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqbWV0aG9k
SUQgbWV0aG9kSUQsIC4uLikgewogICAgICAgIHZhX2xpc3QgYXJnczsKICAgICAgICBqZG91Ymxl
IHJlc3VsdDsKICAgICAgICBfX2J1aWx0aW5fc3RkYXJnX3N0YXJ0KChhcmdzKSxtZXRob2RJRCk7
CiAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zLT5DYWxsTm9udmlydHVhbERvdWJsZU1ldGhvZFYo
dGhpcyxvYmosY2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWV0aG9kSUQsYXJncyk7CiAgICAgICAgX19idWlsdGluX3ZhX2VuZChh
cmdzKTsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQogICAgamRvdWJsZSBDYWxsTm9udmly
dHVhbERvdWJsZU1ldGhvZFYoam9iamVjdCBvYmosIGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgYXJncykgewogICAgICAgIHJl
dHVybiBmdW5jdGlvbnMtPkNhbGxOb252aXJ0dWFsRG91YmxlTWV0aG9kVih0aGlzLG9iaixjbGF6
eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWV0aG9kSUQsYXJncyk7CiAgICB9CiAgICBqZG91YmxlIENhbGxOb252aXJ0dWFsRG91YmxlTWV0
aG9kQShqb2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgam1ldGhvZElEIG1ldGhvZElELAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAganZhbHVlICogYXJncykgewogICAgICAgIHJldHVybiBmdW5jdGlv
bnMtPkNhbGxOb252aXJ0dWFsRG91YmxlTWV0aG9kQSh0aGlzLG9iaixjbGF6eiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kSUQsYXJn
cyk7CiAgICB9CgogICAgdm9pZCBDYWxsTm9udmlydHVhbFZvaWRNZXRob2Qoam9iamVjdCBvYmos
IGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGptZXRob2RJ
RCBtZXRob2RJRCwgLi4uKSB7CiAgICAgICAgdmFfbGlzdCBhcmdzOwogICAgICAgIF9fYnVpbHRp
bl9zdGRhcmdfc3RhcnQoKGFyZ3MpLG1ldGhvZElEKTsKICAgICAgICBmdW5jdGlvbnMtPkNhbGxO
b252aXJ0dWFsVm9pZE1ldGhvZFYodGhpcyxvYmosY2xhenosbWV0aG9kSUQsYXJncyk7CiAgICAg
ICAgX19idWlsdGluX3ZhX2VuZChhcmdzKTsKICAgIH0KICAgIHZvaWQgQ2FsbE5vbnZpcnR1YWxW
b2lkTWV0aG9kVihqb2JqZWN0IG9iaiwgamNsYXNzIGNsYXp6LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YV9saXN0IGFyZ3MpIHsKICAgICAgICBmdW5jdGlvbnMtPkNhbGxOb252
aXJ0dWFsVm9pZE1ldGhvZFYodGhpcyxvYmosY2xhenosbWV0aG9kSUQsYXJncyk7CiAgICB9CiAg
ICB2b2lkIENhbGxOb252aXJ0dWFsVm9pZE1ldGhvZEEoam9iamVjdCBvYmosIGpjbGFzcyBjbGF6
eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqbWV0aG9kSUQgbWV0aG9kSUQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganZhbHVlICogYXJncykgewogICAg
ICAgIGZ1bmN0aW9ucy0+Q2FsbE5vbnZpcnR1YWxWb2lkTWV0aG9kQSh0aGlzLG9iaixjbGF6eixt
ZXRob2RJRCxhcmdzKTsKICAgIH0KCiAgICBqZmllbGRJRCBHZXRGaWVsZElEKGpjbGFzcyBjbGF6
eiwgY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq
c2lnKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+R2V0RmllbGRJRCh0aGlzLGNsYXp6LG5h
bWUsc2lnKTsKICAgIH0KCiAgICBqb2JqZWN0IEdldE9iamVjdEZpZWxkKGpvYmplY3Qgb2JqLCBq
ZmllbGRJRCBmaWVsZElEKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+R2V0T2JqZWN0Rmll
bGQodGhpcyxvYmosZmllbGRJRCk7CiAgICB9CiAgICBqYm9vbGVhbiBHZXRCb29sZWFuRmllbGQo
am9iamVjdCBvYmosIGpmaWVsZElEIGZpZWxkSUQpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25z
LT5HZXRCb29sZWFuRmllbGQodGhpcyxvYmosZmllbGRJRCk7CiAgICB9CiAgICBqYnl0ZSBHZXRC
eXRlRmllbGQoam9iamVjdCBvYmosIGpmaWVsZElEIGZpZWxkSUQpIHsKICAgICAgICByZXR1cm4g
ZnVuY3Rpb25zLT5HZXRCeXRlRmllbGQodGhpcyxvYmosZmllbGRJRCk7CiAgICB9CiAgICBqY2hh
ciBHZXRDaGFyRmllbGQoam9iamVjdCBvYmosIGpmaWVsZElEIGZpZWxkSUQpIHsKICAgICAgICBy
ZXR1cm4gZnVuY3Rpb25zLT5HZXRDaGFyRmllbGQodGhpcyxvYmosZmllbGRJRCk7CiAgICB9CiAg
ICBqc2hvcnQgR2V0U2hvcnRGaWVsZChqb2JqZWN0IG9iaiwgamZpZWxkSUQgZmllbGRJRCkgewog
ICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkdldFNob3J0RmllbGQodGhpcyxvYmosZmllbGRJRCk7
CiAgICB9CiAgICBqaW50IEdldEludEZpZWxkKGpvYmplY3Qgb2JqLCBqZmllbGRJRCBmaWVsZElE
KSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+R2V0SW50RmllbGQodGhpcyxvYmosZmllbGRJ
RCk7CiAgICB9CiAgICBqbG9uZyBHZXRMb25nRmllbGQoam9iamVjdCBvYmosIGpmaWVsZElEIGZp
ZWxkSUQpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5HZXRMb25nRmllbGQodGhpcyxvYmos
ZmllbGRJRCk7CiAgICB9CiAgICBqZmxvYXQgR2V0RmxvYXRGaWVsZChqb2JqZWN0IG9iaiwgamZp
ZWxkSUQgZmllbGRJRCkgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkdldEZsb2F0RmllbGQo
dGhpcyxvYmosZmllbGRJRCk7CiAgICB9CiAgICBqZG91YmxlIEdldERvdWJsZUZpZWxkKGpvYmpl
Y3Qgb2JqLCBqZmllbGRJRCBmaWVsZElEKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+R2V0
RG91YmxlRmllbGQodGhpcyxvYmosZmllbGRJRCk7CiAgICB9CgogICAgdm9pZCBTZXRPYmplY3RG
aWVsZChqb2JqZWN0IG9iaiwgamZpZWxkSUQgZmllbGRJRCwgam9iamVjdCB2YWwpIHsKICAgICAg
ICBmdW5jdGlvbnMtPlNldE9iamVjdEZpZWxkKHRoaXMsb2JqLGZpZWxkSUQsdmFsKTsKICAgIH0K
ICAgIHZvaWQgU2V0Qm9vbGVhbkZpZWxkKGpvYmplY3Qgb2JqLCBqZmllbGRJRCBmaWVsZElELAog
ICAgICAgICAgICAgICAgICAgICAgICAgamJvb2xlYW4gdmFsKSB7CiAgICAgICAgZnVuY3Rpb25z
LT5TZXRCb29sZWFuRmllbGQodGhpcyxvYmosZmllbGRJRCx2YWwpOwogICAgfQogICAgdm9pZCBT
ZXRCeXRlRmllbGQoam9iamVjdCBvYmosIGpmaWVsZElEIGZpZWxkSUQsCiAgICAgICAgICAgICAg
ICAgICAgICBqYnl0ZSB2YWwpIHsKICAgICAgICBmdW5jdGlvbnMtPlNldEJ5dGVGaWVsZCh0aGlz
LG9iaixmaWVsZElELHZhbCk7CiAgICB9CiAgICB2b2lkIFNldENoYXJGaWVsZChqb2JqZWN0IG9i
aiwgamZpZWxkSUQgZmllbGRJRCwKICAgICAgICAgICAgICAgICAgICAgIGpjaGFyIHZhbCkgewog
ICAgICAgIGZ1bmN0aW9ucy0+U2V0Q2hhckZpZWxkKHRoaXMsb2JqLGZpZWxkSUQsdmFsKTsKICAg
IH0KICAgIHZvaWQgU2V0U2hvcnRGaWVsZChqb2JqZWN0IG9iaiwgamZpZWxkSUQgZmllbGRJRCwK
ICAgICAgICAgICAgICAgICAgICAgICBqc2hvcnQgdmFsKSB7CiAgICAgICAgZnVuY3Rpb25zLT5T
ZXRTaG9ydEZpZWxkKHRoaXMsb2JqLGZpZWxkSUQsdmFsKTsKICAgIH0KICAgIHZvaWQgU2V0SW50
RmllbGQoam9iamVjdCBvYmosIGpmaWVsZElEIGZpZWxkSUQsCiAgICAgICAgICAgICAgICAgICAg
IGppbnQgdmFsKSB7CiAgICAgICAgZnVuY3Rpb25zLT5TZXRJbnRGaWVsZCh0aGlzLG9iaixmaWVs
ZElELHZhbCk7CiAgICB9CiAgICB2b2lkIFNldExvbmdGaWVsZChqb2JqZWN0IG9iaiwgamZpZWxk
SUQgZmllbGRJRCwKICAgICAgICAgICAgICAgICAgICAgIGpsb25nIHZhbCkgewogICAgICAgIGZ1
bmN0aW9ucy0+U2V0TG9uZ0ZpZWxkKHRoaXMsb2JqLGZpZWxkSUQsdmFsKTsKICAgIH0KICAgIHZv
aWQgU2V0RmxvYXRGaWVsZChqb2JqZWN0IG9iaiwgamZpZWxkSUQgZmllbGRJRCwKICAgICAgICAg
ICAgICAgICAgICAgICBqZmxvYXQgdmFsKSB7CiAgICAgICAgZnVuY3Rpb25zLT5TZXRGbG9hdEZp
ZWxkKHRoaXMsb2JqLGZpZWxkSUQsdmFsKTsKICAgIH0KICAgIHZvaWQgU2V0RG91YmxlRmllbGQo
am9iamVjdCBvYmosIGpmaWVsZElEIGZpZWxkSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIGpk
b3VibGUgdmFsKSB7CiAgICAgICAgZnVuY3Rpb25zLT5TZXREb3VibGVGaWVsZCh0aGlzLG9iaixm
aWVsZElELHZhbCk7CiAgICB9CgogICAgam1ldGhvZElEIEdldFN0YXRpY01ldGhvZElEKGpjbGFz
cyBjbGF6eiwgY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyICpzaWcpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5HZXRTdGF0aWNN
ZXRob2RJRCh0aGlzLGNsYXp6LG5hbWUsc2lnKTsKICAgIH0KCiAgICBqb2JqZWN0IENhbGxTdGF0
aWNPYmplY3RNZXRob2QoamNsYXNzIGNsYXp6LCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLi4uKSB7CiAgICAgICAgdmFfbGlzdCBhcmdzOwogICAgICAg
IGpvYmplY3QgcmVzdWx0OwogICAgICAgIF9fYnVpbHRpbl9zdGRhcmdfc3RhcnQoKGFyZ3MpLG1l
dGhvZElEKTsKICAgICAgICByZXN1bHQgPSBmdW5jdGlvbnMtPkNhbGxTdGF0aWNPYmplY3RNZXRo
b2RWKHRoaXMsY2xhenosbWV0aG9kSUQsYXJncyk7CiAgICAgICAgX19idWlsdGluX3ZhX2VuZChh
cmdzKTsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQogICAgam9iamVjdCBDYWxsU3RhdGlj
T2JqZWN0TWV0aG9kVihqY2xhc3MgY2xhenosIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCBhcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0
aW9ucy0+Q2FsbFN0YXRpY09iamVjdE1ldGhvZFYodGhpcyxjbGF6eixtZXRob2RJRCxhcmdzKTsK
ICAgIH0KICAgIGpvYmplY3QgQ2FsbFN0YXRpY09iamVjdE1ldGhvZEEoamNsYXNzIGNsYXp6LCBq
bWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp2YWx1ZSAq
YXJncykgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkNhbGxTdGF0aWNPYmplY3RNZXRob2RB
KHRoaXMsY2xhenosbWV0aG9kSUQsYXJncyk7CiAgICB9CgogICAgamJvb2xlYW4gQ2FsbFN0YXRp
Y0Jvb2xlYW5NZXRob2QoamNsYXNzIGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgam1ldGhvZElEIG1ldGhvZElELCAuLi4pIHsKICAgICAgICB2YV9saXN0IGFyZ3M7
CiAgICAgICAgamJvb2xlYW4gcmVzdWx0OwogICAgICAgIF9fYnVpbHRpbl9zdGRhcmdfc3RhcnQo
KGFyZ3MpLG1ldGhvZElEKTsKICAgICAgICByZXN1bHQgPSBmdW5jdGlvbnMtPkNhbGxTdGF0aWNC
b29sZWFuTWV0aG9kVih0aGlzLGNsYXp6LG1ldGhvZElELGFyZ3MpOwogICAgICAgIF9fYnVpbHRp
bl92YV9lbmQoYXJncyk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KICAgIGpib29sZWFu
IENhbGxTdGF0aWNCb29sZWFuTWV0aG9kVihqY2xhc3MgY2xhenosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgam1ldGhvZElEIG1ldGhvZElELCB2YV9saXN0IGFyZ3MpIHsK
ICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5DYWxsU3RhdGljQm9vbGVhbk1ldGhvZFYodGhpcyxj
bGF6eixtZXRob2RJRCxhcmdzKTsKICAgIH0KICAgIGpib29sZWFuIENhbGxTdGF0aWNCb29sZWFu
TWV0aG9kQShqY2xhc3MgY2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgam1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUgKmFyZ3MpIHsKICAgICAgICByZXR1cm4gZnVu
Y3Rpb25zLT5DYWxsU3RhdGljQm9vbGVhbk1ldGhvZEEodGhpcyxjbGF6eixtZXRob2RJRCxhcmdz
KTsKICAgIH0KCiAgICBqYnl0ZSBDYWxsU3RhdGljQnl0ZU1ldGhvZChqY2xhc3MgY2xhenosCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqbWV0aG9kSUQgbWV0aG9kSUQsIC4uLikgewog
ICAgICAgIHZhX2xpc3QgYXJnczsKICAgICAgICBqYnl0ZSByZXN1bHQ7CiAgICAgICAgX19idWls
dGluX3N0ZGFyZ19zdGFydCgoYXJncyksbWV0aG9kSUQpOwogICAgICAgIHJlc3VsdCA9IGZ1bmN0
aW9ucy0+Q2FsbFN0YXRpY0J5dGVNZXRob2RWKHRoaXMsY2xhenosbWV0aG9kSUQsYXJncyk7CiAg
ICAgICAgX19idWlsdGluX3ZhX2VuZChhcmdzKTsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
fQogICAgamJ5dGUgQ2FsbFN0YXRpY0J5dGVNZXRob2RWKGpjbGFzcyBjbGF6eiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqbWV0aG9kSUQgbWV0aG9kSUQsIHZhX2xpc3QgYXJncykg
ewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkNhbGxTdGF0aWNCeXRlTWV0aG9kVih0aGlzLGNs
YXp6LG1ldGhvZElELGFyZ3MpOwogICAgfQogICAgamJ5dGUgQ2FsbFN0YXRpY0J5dGVNZXRob2RB
KGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqbWV0aG9kSUQg
bWV0aG9kSUQsIGp2YWx1ZSAqYXJncykgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkNhbGxT
dGF0aWNCeXRlTWV0aG9kQSh0aGlzLGNsYXp6LG1ldGhvZElELGFyZ3MpOwogICAgfQoKICAgIGpj
aGFyIENhbGxTdGF0aWNDaGFyTWV0aG9kKGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKSB7CiAgICAgICAgdmFfbGlzdCBh
cmdzOwogICAgICAgIGpjaGFyIHJlc3VsdDsKICAgICAgICBfX2J1aWx0aW5fc3RkYXJnX3N0YXJ0
KChhcmdzKSxtZXRob2RJRCk7CiAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zLT5DYWxsU3RhdGlj
Q2hhck1ldGhvZFYodGhpcyxjbGF6eixtZXRob2RJRCxhcmdzKTsKICAgICAgICBfX2J1aWx0aW5f
dmFfZW5kKGFyZ3MpOwogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CiAgICBqY2hhciBDYWxs
U3RhdGljQ2hhck1ldGhvZFYoamNsYXNzIGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwgdmFfbGlzdCBhcmdzKSB7CiAgICAgICAgcmV0dXJu
IGZ1bmN0aW9ucy0+Q2FsbFN0YXRpY0NoYXJNZXRob2RWKHRoaXMsY2xhenosbWV0aG9kSUQsYXJn
cyk7CiAgICB9CiAgICBqY2hhciBDYWxsU3RhdGljQ2hhck1ldGhvZEEoamNsYXNzIGNsYXp6LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwganZhbHVl
ICphcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+Q2FsbFN0YXRpY0NoYXJNZXRob2RB
KHRoaXMsY2xhenosbWV0aG9kSUQsYXJncyk7CiAgICB9CgogICAganNob3J0IENhbGxTdGF0aWNT
aG9ydE1ldGhvZChqY2xhc3MgY2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGptZXRob2RJRCBtZXRob2RJRCwgLi4uKSB7CiAgICAgICAgdmFfbGlzdCBhcmdzOwogICAgICAg
IGpzaG9ydCByZXN1bHQ7CiAgICAgICAgX19idWlsdGluX3N0ZGFyZ19zdGFydCgoYXJncyksbWV0
aG9kSUQpOwogICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9ucy0+Q2FsbFN0YXRpY1Nob3J0TWV0aG9k
Vih0aGlzLGNsYXp6LG1ldGhvZElELGFyZ3MpOwogICAgICAgIF9fYnVpbHRpbl92YV9lbmQoYXJn
cyk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KICAgIGpzaG9ydCBDYWxsU3RhdGljU2hv
cnRNZXRob2RWKGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGptZXRob2RJRCBtZXRob2RJRCwgdmFfbGlzdCBhcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0
aW9ucy0+Q2FsbFN0YXRpY1Nob3J0TWV0aG9kVih0aGlzLGNsYXp6LG1ldGhvZElELGFyZ3MpOwog
ICAgfQogICAganNob3J0IENhbGxTdGF0aWNTaG9ydE1ldGhvZEEoamNsYXNzIGNsYXp6LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUg
KmFyZ3MpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5DYWxsU3RhdGljU2hvcnRNZXRob2RB
KHRoaXMsY2xhenosbWV0aG9kSUQsYXJncyk7CiAgICB9CgogICAgamludCBDYWxsU3RhdGljSW50
TWV0aG9kKGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqbWV0aG9k
SUQgbWV0aG9kSUQsIC4uLikgewogICAgICAgIHZhX2xpc3QgYXJnczsKICAgICAgICBqaW50IHJl
c3VsdDsKICAgICAgICBfX2J1aWx0aW5fc3RkYXJnX3N0YXJ0KChhcmdzKSxtZXRob2RJRCk7CiAg
ICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zLT5DYWxsU3RhdGljSW50TWV0aG9kVih0aGlzLGNsYXp6
LG1ldGhvZElELGFyZ3MpOwogICAgICAgIF9fYnVpbHRpbl92YV9lbmQoYXJncyk7CiAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgIH0KICAgIGppbnQgQ2FsbFN0YXRpY0ludE1ldGhvZFYoamNsYXNz
IGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqbWV0aG9kSUQgbWV0aG9kSUQs
IHZhX2xpc3QgYXJncykgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkNhbGxTdGF0aWNJbnRN
ZXRob2RWKHRoaXMsY2xhenosbWV0aG9kSUQsYXJncyk7CiAgICB9CiAgICBqaW50IENhbGxTdGF0
aWNJbnRNZXRob2RBKGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
am1ldGhvZElEIG1ldGhvZElELCBqdmFsdWUgKmFyZ3MpIHsKICAgICAgICByZXR1cm4gZnVuY3Rp
b25zLT5DYWxsU3RhdGljSW50TWV0aG9kQSh0aGlzLGNsYXp6LG1ldGhvZElELGFyZ3MpOwogICAg
fQoKICAgIGpsb25nIENhbGxTdGF0aWNMb25nTWV0aG9kKGpjbGFzcyBjbGF6eiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKSB7CiAgICAgICAg
dmFfbGlzdCBhcmdzOwogICAgICAgIGpsb25nIHJlc3VsdDsKICAgICAgICBfX2J1aWx0aW5fc3Rk
YXJnX3N0YXJ0KChhcmdzKSxtZXRob2RJRCk7CiAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zLT5D
YWxsU3RhdGljTG9uZ01ldGhvZFYodGhpcyxjbGF6eixtZXRob2RJRCxhcmdzKTsKICAgICAgICBf
X2J1aWx0aW5fdmFfZW5kKGFyZ3MpOwogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CiAgICBq
bG9uZyBDYWxsU3RhdGljTG9uZ01ldGhvZFYoamNsYXNzIGNsYXp6LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwgdmFfbGlzdCBhcmdzKSB7CiAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9ucy0+Q2FsbFN0YXRpY0xvbmdNZXRob2RWKHRoaXMsY2xhenosbWV0
aG9kSUQsYXJncyk7CiAgICB9CiAgICBqbG9uZyBDYWxsU3RhdGljTG9uZ01ldGhvZEEoamNsYXNz
IGNsYXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJ
RCwganZhbHVlICphcmdzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+Q2FsbFN0YXRpY0xv
bmdNZXRob2RBKHRoaXMsY2xhenosbWV0aG9kSUQsYXJncyk7CiAgICB9CgogICAgamZsb2F0IENh
bGxTdGF0aWNGbG9hdE1ldGhvZChqY2xhc3MgY2xhenosCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwgLi4uKSB7CiAgICAgICAgdmFfbGlzdCBhcmdz
OwogICAgICAgIGpmbG9hdCByZXN1bHQ7CiAgICAgICAgX19idWlsdGluX3N0ZGFyZ19zdGFydCgo
YXJncyksbWV0aG9kSUQpOwogICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9ucy0+Q2FsbFN0YXRpY0Zs
b2F0TWV0aG9kVih0aGlzLGNsYXp6LG1ldGhvZElELGFyZ3MpOwogICAgICAgIF9fYnVpbHRpbl92
YV9lbmQoYXJncyk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KICAgIGpmbG9hdCBDYWxs
U3RhdGljRmxvYXRNZXRob2RWKGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGptZXRob2RJRCBtZXRob2RJRCwgdmFfbGlzdCBhcmdzKSB7CiAgICAgICAgcmV0
dXJuIGZ1bmN0aW9ucy0+Q2FsbFN0YXRpY0Zsb2F0TWV0aG9kVih0aGlzLGNsYXp6LG1ldGhvZElE
LGFyZ3MpOwogICAgfQogICAgamZsb2F0IENhbGxTdGF0aWNGbG9hdE1ldGhvZEEoamNsYXNzIGNs
YXp6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam1ldGhvZElEIG1ldGhvZElE
LCBqdmFsdWUgKmFyZ3MpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5DYWxsU3RhdGljRmxv
YXRNZXRob2RBKHRoaXMsY2xhenosbWV0aG9kSUQsYXJncyk7CiAgICB9CgogICAgamRvdWJsZSBD
YWxsU3RhdGljRG91YmxlTWV0aG9kKGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqbWV0aG9kSUQgbWV0aG9kSUQsIC4uLikgewogICAgICAgIHZhX2xpc3Qg
YXJnczsKICAgICAgICBqZG91YmxlIHJlc3VsdDsKICAgICAgICBfX2J1aWx0aW5fc3RkYXJnX3N0
YXJ0KChhcmdzKSxtZXRob2RJRCk7CiAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb25zLT5DYWxsU3Rh
dGljRG91YmxlTWV0aG9kVih0aGlzLGNsYXp6LG1ldGhvZElELGFyZ3MpOwogICAgICAgIF9fYnVp
bHRpbl92YV9lbmQoYXJncyk7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KICAgIGpkb3Vi
bGUgQ2FsbFN0YXRpY0RvdWJsZU1ldGhvZFYoamNsYXNzIGNsYXp6LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqbWV0aG9kSUQgbWV0aG9kSUQsIHZhX2xpc3QgYXJncykgewog
ICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkNhbGxTdGF0aWNEb3VibGVNZXRob2RWKHRoaXMsY2xh
enosbWV0aG9kSUQsYXJncyk7CiAgICB9CiAgICBqZG91YmxlIENhbGxTdGF0aWNEb3VibGVNZXRo
b2RBKGpjbGFzcyBjbGF6eiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam1l
dGhvZElEIG1ldGhvZElELCBqdmFsdWUgKmFyZ3MpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25z
LT5DYWxsU3RhdGljRG91YmxlTWV0aG9kQSh0aGlzLGNsYXp6LG1ldGhvZElELGFyZ3MpOwogICAg
fQoKICAgIHZvaWQgQ2FsbFN0YXRpY1ZvaWRNZXRob2QoamNsYXNzIGNscywgam1ldGhvZElEIG1l
dGhvZElELCAuLi4pIHsKICAgICAgICB2YV9saXN0IGFyZ3M7CiAgICAgICAgX19idWlsdGluX3N0
ZGFyZ19zdGFydCgoYXJncyksbWV0aG9kSUQpOwogICAgICAgIGZ1bmN0aW9ucy0+Q2FsbFN0YXRp
Y1ZvaWRNZXRob2RWKHRoaXMsY2xzLG1ldGhvZElELGFyZ3MpOwogICAgICAgIF9fYnVpbHRpbl92
YV9lbmQoYXJncyk7CiAgICB9CiAgICB2b2lkIENhbGxTdGF0aWNWb2lkTWV0aG9kVihqY2xhc3Mg
Y2xzLCBqbWV0aG9kSUQgbWV0aG9kSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YV9saXN0IGFyZ3MpIHsKICAgICAgICBmdW5jdGlvbnMtPkNhbGxTdGF0aWNWb2lkTWV0aG9kVih0
aGlzLGNscyxtZXRob2RJRCxhcmdzKTsKICAgIH0KICAgIHZvaWQgQ2FsbFN0YXRpY1ZvaWRNZXRo
b2RBKGpjbGFzcyBjbHMsIGptZXRob2RJRCBtZXRob2RJRCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGp2YWx1ZSAqIGFyZ3MpIHsKICAgICAgICBmdW5jdGlvbnMtPkNhbGxTdGF0aWNW
b2lkTWV0aG9kQSh0aGlzLGNscyxtZXRob2RJRCxhcmdzKTsKICAgIH0KCiAgICBqZmllbGRJRCBH
ZXRTdGF0aWNGaWVsZElEKGpjbGFzcyBjbGF6eiwgY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2lnKSB7CiAgICAgICAgcmV0dXJuIGZ1
bmN0aW9ucy0+R2V0U3RhdGljRmllbGRJRCh0aGlzLGNsYXp6LG5hbWUsc2lnKTsKICAgIH0KICAg
IGpvYmplY3QgR2V0U3RhdGljT2JqZWN0RmllbGQoamNsYXNzIGNsYXp6LCBqZmllbGRJRCBmaWVs
ZElEKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+R2V0U3RhdGljT2JqZWN0RmllbGQodGhp
cyxjbGF6eixmaWVsZElEKTsKICAgIH0KICAgIGpib29sZWFuIEdldFN0YXRpY0Jvb2xlYW5GaWVs
ZChqY2xhc3MgY2xhenosIGpmaWVsZElEIGZpZWxkSUQpIHsKICAgICAgICByZXR1cm4gZnVuY3Rp
b25zLT5HZXRTdGF0aWNCb29sZWFuRmllbGQodGhpcyxjbGF6eixmaWVsZElEKTsKICAgIH0KICAg
IGpieXRlIEdldFN0YXRpY0J5dGVGaWVsZChqY2xhc3MgY2xhenosIGpmaWVsZElEIGZpZWxkSUQp
IHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5HZXRTdGF0aWNCeXRlRmllbGQodGhpcyxjbGF6
eixmaWVsZElEKTsKICAgIH0KICAgIGpjaGFyIEdldFN0YXRpY0NoYXJGaWVsZChqY2xhc3MgY2xh
enosIGpmaWVsZElEIGZpZWxkSUQpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5HZXRTdGF0
aWNDaGFyRmllbGQodGhpcyxjbGF6eixmaWVsZElEKTsKICAgIH0KICAgIGpzaG9ydCBHZXRTdGF0
aWNTaG9ydEZpZWxkKGpjbGFzcyBjbGF6eiwgamZpZWxkSUQgZmllbGRJRCkgewogICAgICAgIHJl
dHVybiBmdW5jdGlvbnMtPkdldFN0YXRpY1Nob3J0RmllbGQodGhpcyxjbGF6eixmaWVsZElEKTsK
ICAgIH0KICAgIGppbnQgR2V0U3RhdGljSW50RmllbGQoamNsYXNzIGNsYXp6LCBqZmllbGRJRCBm
aWVsZElEKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+R2V0U3RhdGljSW50RmllbGQodGhp
cyxjbGF6eixmaWVsZElEKTsKICAgIH0KICAgIGpsb25nIEdldFN0YXRpY0xvbmdGaWVsZChqY2xh
c3MgY2xhenosIGpmaWVsZElEIGZpZWxkSUQpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5H
ZXRTdGF0aWNMb25nRmllbGQodGhpcyxjbGF6eixmaWVsZElEKTsKICAgIH0KICAgIGpmbG9hdCBH
ZXRTdGF0aWNGbG9hdEZpZWxkKGpjbGFzcyBjbGF6eiwgamZpZWxkSUQgZmllbGRJRCkgewogICAg
ICAgIHJldHVybiBmdW5jdGlvbnMtPkdldFN0YXRpY0Zsb2F0RmllbGQodGhpcyxjbGF6eixmaWVs
ZElEKTsKICAgIH0KICAgIGpkb3VibGUgR2V0U3RhdGljRG91YmxlRmllbGQoamNsYXNzIGNsYXp6
LCBqZmllbGRJRCBmaWVsZElEKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+R2V0U3RhdGlj
RG91YmxlRmllbGQodGhpcyxjbGF6eixmaWVsZElEKTsKICAgIH0KCiAgICB2b2lkIFNldFN0YXRp
Y09iamVjdEZpZWxkKGpjbGFzcyBjbGF6eiwgamZpZWxkSUQgZmllbGRJRCwKICAgICAgICAgICAg
ICAgICAgICAgICAgam9iamVjdCB2YWx1ZSkgewogICAgICBmdW5jdGlvbnMtPlNldFN0YXRpY09i
amVjdEZpZWxkKHRoaXMsY2xhenosZmllbGRJRCx2YWx1ZSk7CiAgICB9CiAgICB2b2lkIFNldFN0
YXRpY0Jvb2xlYW5GaWVsZChqY2xhc3MgY2xhenosIGpmaWVsZElEIGZpZWxkSUQsCiAgICAgICAg
ICAgICAgICAgICAgICAgIGpib29sZWFuIHZhbHVlKSB7CiAgICAgIGZ1bmN0aW9ucy0+U2V0U3Rh
dGljQm9vbGVhbkZpZWxkKHRoaXMsY2xhenosZmllbGRJRCx2YWx1ZSk7CiAgICB9CiAgICB2b2lk
IFNldFN0YXRpY0J5dGVGaWVsZChqY2xhc3MgY2xhenosIGpmaWVsZElEIGZpZWxkSUQsCiAgICAg
ICAgICAgICAgICAgICAgICAgIGpieXRlIHZhbHVlKSB7CiAgICAgIGZ1bmN0aW9ucy0+U2V0U3Rh
dGljQnl0ZUZpZWxkKHRoaXMsY2xhenosZmllbGRJRCx2YWx1ZSk7CiAgICB9CiAgICB2b2lkIFNl
dFN0YXRpY0NoYXJGaWVsZChqY2xhc3MgY2xhenosIGpmaWVsZElEIGZpZWxkSUQsCiAgICAgICAg
ICAgICAgICAgICAgICAgIGpjaGFyIHZhbHVlKSB7CiAgICAgIGZ1bmN0aW9ucy0+U2V0U3RhdGlj
Q2hhckZpZWxkKHRoaXMsY2xhenosZmllbGRJRCx2YWx1ZSk7CiAgICB9CiAgICB2b2lkIFNldFN0
YXRpY1Nob3J0RmllbGQoamNsYXNzIGNsYXp6LCBqZmllbGRJRCBmaWVsZElELAogICAgICAgICAg
ICAgICAgICAgICAgICBqc2hvcnQgdmFsdWUpIHsKICAgICAgZnVuY3Rpb25zLT5TZXRTdGF0aWNT
aG9ydEZpZWxkKHRoaXMsY2xhenosZmllbGRJRCx2YWx1ZSk7CiAgICB9CiAgICB2b2lkIFNldFN0
YXRpY0ludEZpZWxkKGpjbGFzcyBjbGF6eiwgamZpZWxkSUQgZmllbGRJRCwKICAgICAgICAgICAg
ICAgICAgICAgICAgamludCB2YWx1ZSkgewogICAgICBmdW5jdGlvbnMtPlNldFN0YXRpY0ludEZp
ZWxkKHRoaXMsY2xhenosZmllbGRJRCx2YWx1ZSk7CiAgICB9CiAgICB2b2lkIFNldFN0YXRpY0xv
bmdGaWVsZChqY2xhc3MgY2xhenosIGpmaWVsZElEIGZpZWxkSUQsCiAgICAgICAgICAgICAgICAg
ICAgICAgIGpsb25nIHZhbHVlKSB7CiAgICAgIGZ1bmN0aW9ucy0+U2V0U3RhdGljTG9uZ0ZpZWxk
KHRoaXMsY2xhenosZmllbGRJRCx2YWx1ZSk7CiAgICB9CiAgICB2b2lkIFNldFN0YXRpY0Zsb2F0
RmllbGQoamNsYXNzIGNsYXp6LCBqZmllbGRJRCBmaWVsZElELAogICAgICAgICAgICAgICAgICAg
ICAgICBqZmxvYXQgdmFsdWUpIHsKICAgICAgZnVuY3Rpb25zLT5TZXRTdGF0aWNGbG9hdEZpZWxk
KHRoaXMsY2xhenosZmllbGRJRCx2YWx1ZSk7CiAgICB9CiAgICB2b2lkIFNldFN0YXRpY0RvdWJs
ZUZpZWxkKGpjbGFzcyBjbGF6eiwgamZpZWxkSUQgZmllbGRJRCwKICAgICAgICAgICAgICAgICAg
ICAgICAgamRvdWJsZSB2YWx1ZSkgewogICAgICBmdW5jdGlvbnMtPlNldFN0YXRpY0RvdWJsZUZp
ZWxkKHRoaXMsY2xhenosZmllbGRJRCx2YWx1ZSk7CiAgICB9CgogICAganN0cmluZyBOZXdTdHJp
bmcoY29uc3QgamNoYXIgKnVuaWNvZGUsIGpzaXplIGxlbikgewogICAgICAgIHJldHVybiBmdW5j
dGlvbnMtPk5ld1N0cmluZyh0aGlzLHVuaWNvZGUsbGVuKTsKICAgIH0KICAgIGpzaXplIEdldFN0
cmluZ0xlbmd0aChqc3RyaW5nIHN0cikgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkdldFN0
cmluZ0xlbmd0aCh0aGlzLHN0cik7CiAgICB9CiAgICBjb25zdCBqY2hhciAqR2V0U3RyaW5nQ2hh
cnMoanN0cmluZyBzdHIsIGpib29sZWFuICppc0NvcHkpIHsKICAgICAgICByZXR1cm4gZnVuY3Rp
b25zLT5HZXRTdHJpbmdDaGFycyh0aGlzLHN0cixpc0NvcHkpOwogICAgfQogICAgdm9pZCBSZWxl
YXNlU3RyaW5nQ2hhcnMoanN0cmluZyBzdHIsIGNvbnN0IGpjaGFyICpjaGFycykgewogICAgICAg
IGZ1bmN0aW9ucy0+UmVsZWFzZVN0cmluZ0NoYXJzKHRoaXMsc3RyLGNoYXJzKTsKICAgIH0KCiAg
ICBqc3RyaW5nIE5ld1N0cmluZ1VURihjb25zdCBjaGFyICp1dGYpIHsKICAgICAgICByZXR1cm4g
ZnVuY3Rpb25zLT5OZXdTdHJpbmdVVEYodGhpcyx1dGYpOwogICAgfQogICAganNpemUgR2V0U3Ry
aW5nVVRGTGVuZ3RoKGpzdHJpbmcgc3RyKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+R2V0
U3RyaW5nVVRGTGVuZ3RoKHRoaXMsc3RyKTsKICAgIH0KICAgIGNvbnN0IGNoYXIqIEdldFN0cmlu
Z1VURkNoYXJzKGpzdHJpbmcgc3RyLCBqYm9vbGVhbiAqaXNDb3B5KSB7CiAgICAgICAgcmV0dXJu
IGZ1bmN0aW9ucy0+R2V0U3RyaW5nVVRGQ2hhcnModGhpcyxzdHIsaXNDb3B5KTsKICAgIH0KICAg
IHZvaWQgUmVsZWFzZVN0cmluZ1VURkNoYXJzKGpzdHJpbmcgc3RyLCBjb25zdCBjaGFyKiBjaGFy
cykgewogICAgICAgIGZ1bmN0aW9ucy0+UmVsZWFzZVN0cmluZ1VURkNoYXJzKHRoaXMsc3RyLGNo
YXJzKTsKICAgIH0KCiAgICBqc2l6ZSBHZXRBcnJheUxlbmd0aChqYXJyYXkgYXJyYXkpIHsKICAg
ICAgICByZXR1cm4gZnVuY3Rpb25zLT5HZXRBcnJheUxlbmd0aCh0aGlzLGFycmF5KTsKICAgIH0K
CiAgICBqb2JqZWN0QXJyYXkgTmV3T2JqZWN0QXJyYXkoanNpemUgbGVuLCBqY2xhc3MgY2xhenos
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9iamVjdCBpbml0KSB7CiAgICAgICAg
cmV0dXJuIGZ1bmN0aW9ucy0+TmV3T2JqZWN0QXJyYXkodGhpcyxsZW4sY2xhenosaW5pdCk7CiAg
ICB9CiAgICBqb2JqZWN0IEdldE9iamVjdEFycmF5RWxlbWVudChqb2JqZWN0QXJyYXkgYXJyYXks
IGpzaXplIGluZGV4KSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+R2V0T2JqZWN0QXJyYXlF
bGVtZW50KHRoaXMsYXJyYXksaW5kZXgpOwogICAgfQogICAgdm9pZCBTZXRPYmplY3RBcnJheUVs
ZW1lbnQoam9iamVjdEFycmF5IGFycmF5LCBqc2l6ZSBpbmRleCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGpvYmplY3QgdmFsKSB7CiAgICAgICAgZnVuY3Rpb25zLT5TZXRPYmplY3RB
cnJheUVsZW1lbnQodGhpcyxhcnJheSxpbmRleCx2YWwpOwogICAgfQoKICAgIGpib29sZWFuQXJy
YXkgTmV3Qm9vbGVhbkFycmF5KGpzaXplIGxlbikgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMt
Pk5ld0Jvb2xlYW5BcnJheSh0aGlzLGxlbik7CiAgICB9CiAgICBqYnl0ZUFycmF5IE5ld0J5dGVB
cnJheShqc2l6ZSBsZW4pIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5OZXdCeXRlQXJyYXko
dGhpcyxsZW4pOwogICAgfQogICAgamNoYXJBcnJheSBOZXdDaGFyQXJyYXkoanNpemUgbGVuKSB7
CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+TmV3Q2hhckFycmF5KHRoaXMsbGVuKTsKICAgIH0K
ICAgIGpzaG9ydEFycmF5IE5ld1Nob3J0QXJyYXkoanNpemUgbGVuKSB7CiAgICAgICAgcmV0dXJu
IGZ1bmN0aW9ucy0+TmV3U2hvcnRBcnJheSh0aGlzLGxlbik7CiAgICB9CiAgICBqaW50QXJyYXkg
TmV3SW50QXJyYXkoanNpemUgbGVuKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+TmV3SW50
QXJyYXkodGhpcyxsZW4pOwogICAgfQogICAgamxvbmdBcnJheSBOZXdMb25nQXJyYXkoanNpemUg
bGVuKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+TmV3TG9uZ0FycmF5KHRoaXMsbGVuKTsK
ICAgIH0KICAgIGpmbG9hdEFycmF5IE5ld0Zsb2F0QXJyYXkoanNpemUgbGVuKSB7CiAgICAgICAg
cmV0dXJuIGZ1bmN0aW9ucy0+TmV3RmxvYXRBcnJheSh0aGlzLGxlbik7CiAgICB9CiAgICBqZG91
YmxlQXJyYXkgTmV3RG91YmxlQXJyYXkoanNpemUgbGVuKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0
aW9ucy0+TmV3RG91YmxlQXJyYXkodGhpcyxsZW4pOwogICAgfQoKICAgIGpib29sZWFuICogR2V0
Qm9vbGVhbkFycmF5RWxlbWVudHMoamJvb2xlYW5BcnJheSBhcnJheSwgamJvb2xlYW4gKmlzQ29w
eSkgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkdldEJvb2xlYW5BcnJheUVsZW1lbnRzKHRo
aXMsYXJyYXksaXNDb3B5KTsKICAgIH0KICAgIGpieXRlICogR2V0Qnl0ZUFycmF5RWxlbWVudHMo
amJ5dGVBcnJheSBhcnJheSwgamJvb2xlYW4gKmlzQ29weSkgewogICAgICAgIHJldHVybiBmdW5j
dGlvbnMtPkdldEJ5dGVBcnJheUVsZW1lbnRzKHRoaXMsYXJyYXksaXNDb3B5KTsKICAgIH0KICAg
IGpjaGFyICogR2V0Q2hhckFycmF5RWxlbWVudHMoamNoYXJBcnJheSBhcnJheSwgamJvb2xlYW4g
KmlzQ29weSkgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkdldENoYXJBcnJheUVsZW1lbnRz
KHRoaXMsYXJyYXksaXNDb3B5KTsKICAgIH0KICAgIGpzaG9ydCAqIEdldFNob3J0QXJyYXlFbGVt
ZW50cyhqc2hvcnRBcnJheSBhcnJheSwgamJvb2xlYW4gKmlzQ29weSkgewogICAgICAgIHJldHVy
biBmdW5jdGlvbnMtPkdldFNob3J0QXJyYXlFbGVtZW50cyh0aGlzLGFycmF5LGlzQ29weSk7CiAg
ICB9CiAgICBqaW50ICogR2V0SW50QXJyYXlFbGVtZW50cyhqaW50QXJyYXkgYXJyYXksIGpib29s
ZWFuICppc0NvcHkpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5HZXRJbnRBcnJheUVsZW1l
bnRzKHRoaXMsYXJyYXksaXNDb3B5KTsKICAgIH0KICAgIGpsb25nICogR2V0TG9uZ0FycmF5RWxl
bWVudHMoamxvbmdBcnJheSBhcnJheSwgamJvb2xlYW4gKmlzQ29weSkgewogICAgICAgIHJldHVy
biBmdW5jdGlvbnMtPkdldExvbmdBcnJheUVsZW1lbnRzKHRoaXMsYXJyYXksaXNDb3B5KTsKICAg
IH0KICAgIGpmbG9hdCAqIEdldEZsb2F0QXJyYXlFbGVtZW50cyhqZmxvYXRBcnJheSBhcnJheSwg
amJvb2xlYW4gKmlzQ29weSkgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkdldEZsb2F0QXJy
YXlFbGVtZW50cyh0aGlzLGFycmF5LGlzQ29weSk7CiAgICB9CiAgICBqZG91YmxlICogR2V0RG91
YmxlQXJyYXlFbGVtZW50cyhqZG91YmxlQXJyYXkgYXJyYXksIGpib29sZWFuICppc0NvcHkpIHsK
ICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5HZXREb3VibGVBcnJheUVsZW1lbnRzKHRoaXMsYXJy
YXksaXNDb3B5KTsKICAgIH0KCiAgICB2b2lkIFJlbGVhc2VCb29sZWFuQXJyYXlFbGVtZW50cyhq
Ym9vbGVhbkFycmF5IGFycmF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
amJvb2xlYW4gKmVsZW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamlu
dCBtb2RlKSB7CiAgICAgICAgZnVuY3Rpb25zLT5SZWxlYXNlQm9vbGVhbkFycmF5RWxlbWVudHMo
dGhpcyxhcnJheSxlbGVtcyxtb2RlKTsKICAgIH0KICAgIHZvaWQgUmVsZWFzZUJ5dGVBcnJheUVs
ZW1lbnRzKGpieXRlQXJyYXkgYXJyYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqYnl0ZSAqZWxlbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaW50IG1v
ZGUpIHsKICAgICAgICBmdW5jdGlvbnMtPlJlbGVhc2VCeXRlQXJyYXlFbGVtZW50cyh0aGlzLGFy
cmF5LGVsZW1zLG1vZGUpOwogICAgfQogICAgdm9pZCBSZWxlYXNlQ2hhckFycmF5RWxlbWVudHMo
amNoYXJBcnJheSBhcnJheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpjaGFy
ICplbGVtcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppbnQgbW9kZSkgewog
ICAgICAgIGZ1bmN0aW9ucy0+UmVsZWFzZUNoYXJBcnJheUVsZW1lbnRzKHRoaXMsYXJyYXksZWxl
bXMsbW9kZSk7CiAgICB9CiAgICB2b2lkIFJlbGVhc2VTaG9ydEFycmF5RWxlbWVudHMoanNob3J0
QXJyYXkgYXJyYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNob3J0ICpl
bGVtcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaW50IG1vZGUpIHsKICAg
ICAgICBmdW5jdGlvbnMtPlJlbGVhc2VTaG9ydEFycmF5RWxlbWVudHModGhpcyxhcnJheSxlbGVt
cyxtb2RlKTsKICAgIH0KICAgIHZvaWQgUmVsZWFzZUludEFycmF5RWxlbWVudHMoamludEFycmF5
IGFycmF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaW50ICplbGVtcywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamludCBtb2RlKSB7CiAgICAgICAgZnVuY3Rp
b25zLT5SZWxlYXNlSW50QXJyYXlFbGVtZW50cyh0aGlzLGFycmF5LGVsZW1zLG1vZGUpOwogICAg
fQogICAgdm9pZCBSZWxlYXNlTG9uZ0FycmF5RWxlbWVudHMoamxvbmdBcnJheSBhcnJheSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpsb25nICplbGVtcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGppbnQgbW9kZSkgewogICAgICAgIGZ1bmN0aW9ucy0+UmVs
ZWFzZUxvbmdBcnJheUVsZW1lbnRzKHRoaXMsYXJyYXksZWxlbXMsbW9kZSk7CiAgICB9CiAgICB2
b2lkIFJlbGVhc2VGbG9hdEFycmF5RWxlbWVudHMoamZsb2F0QXJyYXkgYXJyYXksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgamZsb2F0ICplbGVtcywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqaW50IG1vZGUpIHsKICAgICAgICBmdW5jdGlvbnMtPlJlbGVh
c2VGbG9hdEFycmF5RWxlbWVudHModGhpcyxhcnJheSxlbGVtcyxtb2RlKTsKICAgIH0KICAgIHZv
aWQgUmVsZWFzZURvdWJsZUFycmF5RWxlbWVudHMoamRvdWJsZUFycmF5IGFycmF5LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqZG91YmxlICplbGVtcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgamludCBtb2RlKSB7CiAgICAgICAgZnVuY3Rpb25zLT5S
ZWxlYXNlRG91YmxlQXJyYXlFbGVtZW50cyh0aGlzLGFycmF5LGVsZW1zLG1vZGUpOwogICAgfQoK
ICAgIHZvaWQgR2V0Qm9vbGVhbkFycmF5UmVnaW9uKGpib29sZWFuQXJyYXkgYXJyYXksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBqc2l6ZSBzdGFydCwganNpemUgbGVuLCBqYm9vbGVh
biAqYnVmKSB7CiAgICAgICAgZnVuY3Rpb25zLT5HZXRCb29sZWFuQXJyYXlSZWdpb24odGhpcyxh
cnJheSxzdGFydCxsZW4sYnVmKTsKICAgIH0KICAgIHZvaWQgR2V0Qnl0ZUFycmF5UmVnaW9uKGpi
eXRlQXJyYXkgYXJyYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc2l6ZSBzdGFydCwg
anNpemUgbGVuLCBqYnl0ZSAqYnVmKSB7CiAgICAgICAgZnVuY3Rpb25zLT5HZXRCeXRlQXJyYXlS
ZWdpb24odGhpcyxhcnJheSxzdGFydCxsZW4sYnVmKTsKICAgIH0KICAgIHZvaWQgR2V0Q2hhckFy
cmF5UmVnaW9uKGpjaGFyQXJyYXkgYXJyYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
c2l6ZSBzdGFydCwganNpemUgbGVuLCBqY2hhciAqYnVmKSB7CiAgICAgICAgZnVuY3Rpb25zLT5H
ZXRDaGFyQXJyYXlSZWdpb24odGhpcyxhcnJheSxzdGFydCxsZW4sYnVmKTsKICAgIH0KICAgIHZv
aWQgR2V0U2hvcnRBcnJheVJlZ2lvbihqc2hvcnRBcnJheSBhcnJheSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqc2l6ZSBzdGFydCwganNpemUgbGVuLCBqc2hvcnQgKmJ1ZikgewogICAg
ICAgIGZ1bmN0aW9ucy0+R2V0U2hvcnRBcnJheVJlZ2lvbih0aGlzLGFycmF5LHN0YXJ0LGxlbixi
dWYpOwogICAgfQogICAgdm9pZCBHZXRJbnRBcnJheVJlZ2lvbihqaW50QXJyYXkgYXJyYXksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGpzaXplIHN0YXJ0LCBqc2l6ZSBsZW4sIGppbnQgKmJ1
ZikgewogICAgICAgIGZ1bmN0aW9ucy0+R2V0SW50QXJyYXlSZWdpb24odGhpcyxhcnJheSxzdGFy
dCxsZW4sYnVmKTsKICAgIH0KICAgIHZvaWQgR2V0TG9uZ0FycmF5UmVnaW9uKGpsb25nQXJyYXkg
YXJyYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc2l6ZSBzdGFydCwganNpemUgbGVu
LCBqbG9uZyAqYnVmKSB7CiAgICAgICAgZnVuY3Rpb25zLT5HZXRMb25nQXJyYXlSZWdpb24odGhp
cyxhcnJheSxzdGFydCxsZW4sYnVmKTsKICAgIH0KICAgIHZvaWQgR2V0RmxvYXRBcnJheVJlZ2lv
bihqZmxvYXRBcnJheSBhcnJheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc2l6ZSBz
dGFydCwganNpemUgbGVuLCBqZmxvYXQgKmJ1ZikgewogICAgICAgIGZ1bmN0aW9ucy0+R2V0Rmxv
YXRBcnJheVJlZ2lvbih0aGlzLGFycmF5LHN0YXJ0LGxlbixidWYpOwogICAgfQogICAgdm9pZCBH
ZXREb3VibGVBcnJheVJlZ2lvbihqZG91YmxlQXJyYXkgYXJyYXksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGpzaXplIHN0YXJ0LCBqc2l6ZSBsZW4sIGpkb3VibGUgKmJ1ZikgewogICAg
ICAgIGZ1bmN0aW9ucy0+R2V0RG91YmxlQXJyYXlSZWdpb24odGhpcyxhcnJheSxzdGFydCxsZW4s
YnVmKTsKICAgIH0KCiAgICB2b2lkIFNldEJvb2xlYW5BcnJheVJlZ2lvbihqYm9vbGVhbkFycmF5
IGFycmF5LCBqc2l6ZSBzdGFydCwganNpemUgbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgamJvb2xlYW4gKmJ1ZikgewogICAgICAgIGZ1bmN0aW9ucy0+U2V0Qm9vbGVhbkFycmF5
UmVnaW9uKHRoaXMsYXJyYXksc3RhcnQsbGVuLGJ1Zik7CiAgICB9CiAgICB2b2lkIFNldEJ5dGVB
cnJheVJlZ2lvbihqYnl0ZUFycmF5IGFycmF5LCBqc2l6ZSBzdGFydCwganNpemUgbGVuLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgamJ5dGUgKmJ1ZikgewogICAgICAgIGZ1bmN0aW9ucy0+
U2V0Qnl0ZUFycmF5UmVnaW9uKHRoaXMsYXJyYXksc3RhcnQsbGVuLGJ1Zik7CiAgICB9CiAgICB2
b2lkIFNldENoYXJBcnJheVJlZ2lvbihqY2hhckFycmF5IGFycmF5LCBqc2l6ZSBzdGFydCwganNp
emUgbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgamNoYXIgKmJ1ZikgewogICAgICAg
IGZ1bmN0aW9ucy0+U2V0Q2hhckFycmF5UmVnaW9uKHRoaXMsYXJyYXksc3RhcnQsbGVuLGJ1Zik7
CiAgICB9CiAgICB2b2lkIFNldFNob3J0QXJyYXlSZWdpb24oanNob3J0QXJyYXkgYXJyYXksIGpz
aXplIHN0YXJ0LCBqc2l6ZSBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNob3J0
ICpidWYpIHsKICAgICAgICBmdW5jdGlvbnMtPlNldFNob3J0QXJyYXlSZWdpb24odGhpcyxhcnJh
eSxzdGFydCxsZW4sYnVmKTsKICAgIH0KICAgIHZvaWQgU2V0SW50QXJyYXlSZWdpb24oamludEFy
cmF5IGFycmF5LCBqc2l6ZSBzdGFydCwganNpemUgbGVuLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICBqaW50ICpidWYpIHsKICAgICAgICBmdW5jdGlvbnMtPlNldEludEFycmF5UmVnaW9uKHRo
aXMsYXJyYXksc3RhcnQsbGVuLGJ1Zik7CiAgICB9CiAgICB2b2lkIFNldExvbmdBcnJheVJlZ2lv
bihqbG9uZ0FycmF5IGFycmF5LCBqc2l6ZSBzdGFydCwganNpemUgbGVuLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgamxvbmcgKmJ1ZikgewogICAgICAgIGZ1bmN0aW9ucy0+U2V0TG9uZ0Fy
cmF5UmVnaW9uKHRoaXMsYXJyYXksc3RhcnQsbGVuLGJ1Zik7CiAgICB9CiAgICB2b2lkIFNldEZs
b2F0QXJyYXlSZWdpb24oamZsb2F0QXJyYXkgYXJyYXksIGpzaXplIHN0YXJ0LCBqc2l6ZSBsZW4s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamZsb2F0ICpidWYpIHsKICAgICAgICBmdW5j
dGlvbnMtPlNldEZsb2F0QXJyYXlSZWdpb24odGhpcyxhcnJheSxzdGFydCxsZW4sYnVmKTsKICAg
IH0KICAgIHZvaWQgU2V0RG91YmxlQXJyYXlSZWdpb24oamRvdWJsZUFycmF5IGFycmF5LCBqc2l6
ZSBzdGFydCwganNpemUgbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqZG91Ymxl
ICpidWYpIHsKICAgICAgICBmdW5jdGlvbnMtPlNldERvdWJsZUFycmF5UmVnaW9uKHRoaXMsYXJy
YXksc3RhcnQsbGVuLGJ1Zik7CiAgICB9CgogICAgamludCBSZWdpc3Rlck5hdGl2ZXMoamNsYXNz
IGNsYXp6LCBjb25zdCBKTklOYXRpdmVNZXRob2QgKm1ldGhvZHMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBqaW50IG5NZXRob2RzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+UmVnaXN0
ZXJOYXRpdmVzKHRoaXMsY2xhenosbWV0aG9kcyxuTWV0aG9kcyk7CiAgICB9CiAgICBqaW50IFVu
cmVnaXN0ZXJOYXRpdmVzKGpjbGFzcyBjbGF6eikgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMt
PlVucmVnaXN0ZXJOYXRpdmVzKHRoaXMsY2xhenopOwogICAgfQoKICAgIGppbnQgTW9uaXRvckVu
dGVyKGpvYmplY3Qgb2JqKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9ucy0+TW9uaXRvckVudGVy
KHRoaXMsb2JqKTsKICAgIH0KICAgIGppbnQgTW9uaXRvckV4aXQoam9iamVjdCBvYmopIHsKICAg
ICAgICByZXR1cm4gZnVuY3Rpb25zLT5Nb25pdG9yRXhpdCh0aGlzLG9iaik7CiAgICB9CgogICAg
amludCBHZXRKYXZhVk0oSmF2YVZNICoqdm0pIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5H
ZXRKYXZhVk0odGhpcyx2bSk7CiAgICB9CgoKfTsKCgoKdHlwZWRlZiBzdHJ1Y3QgSkRLMV8xSW5p
dEFyZ3MgewogICAgamludCB2ZXJzaW9uOwoKICAgIGNoYXIgKipwcm9wZXJ0aWVzOwogICAgamlu
dCBjaGVja1NvdXJjZTsKICAgIGppbnQgbmF0aXZlU3RhY2tTaXplOwogICAgamludCBqYXZhU3Rh
Y2tTaXplOwogICAgamludCBtaW5IZWFwU2l6ZTsKICAgIGppbnQgbWF4SGVhcFNpemU7CiAgICBq
aW50IHZlcmlmeU1vZGU7CiAgICBjaGFyICpjbGFzc3BhdGg7CgogICAgamludCAoICp2ZnByaW50
ZikoRklMRSAqZnAsIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKTsKICAgIHZvaWQg
KCAqZXhpdCkoamludCBjb2RlKTsKICAgIHZvaWQgKCAqYWJvcnQpKCk7CgogICAgamludCBlbmFi
bGVDbGFzc0dDOwogICAgamludCBlbmFibGVWZXJib3NlR0M7CiAgICBqaW50IGRpc2FibGVBc3lu
Y0dDOwogICAgamludCB2ZXJib3NlOwogICAgamJvb2xlYW4gZGVidWdnaW5nOwogICAgamludCBk
ZWJ1Z1BvcnQ7Cn0gSkRLMV8xSW5pdEFyZ3M7Cgp0eXBlZGVmIHN0cnVjdCBKREsxXzFBdHRhY2hB
cmdzIHsKICAgIHZvaWQgKiBfX3BhZGRpbmc7Cn0gSkRLMV8xQXR0YWNoQXJnczsKCgoKc3RydWN0
IEpOSUludm9rZUludGVyZmFjZV8gewogICAgdm9pZCAqcmVzZXJ2ZWQwOwogICAgdm9pZCAqcmVz
ZXJ2ZWQxOwogICAgdm9pZCAqcmVzZXJ2ZWQyOwoKICAgIGppbnQgKCAqRGVzdHJveUphdmFWTSko
SmF2YVZNICp2bSk7CgogICAgamludCAoICpBdHRhY2hDdXJyZW50VGhyZWFkKQogICAgICAoSmF2
YVZNICp2bSwgSk5JRW52ICoqcGVudiwgdm9pZCAqYXJncyk7CgogICAgamludCAoICpEZXRhY2hD
dXJyZW50VGhyZWFkKShKYXZhVk0gKnZtKTsKfTsKCnN0cnVjdCBKYXZhVk1fIHsKICAgIGNvbnN0
IHN0cnVjdCBKTklJbnZva2VJbnRlcmZhY2VfICpmdW5jdGlvbnM7CiAgICB2b2lkICpyZXNlcnZl
ZDA7CiAgICB2b2lkICpyZXNlcnZlZDE7CiAgICB2b2lkICpyZXNlcnZlZDI7CgoKICAgIGppbnQg
RGVzdHJveUphdmFWTSgpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5EZXN0cm95SmF2YVZN
KHRoaXMpOwogICAgfQogICAgamludCBBdHRhY2hDdXJyZW50VGhyZWFkKEpOSUVudiAqKnBlbnYs
IHZvaWQgKmFyZ3MpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb25zLT5BdHRhY2hDdXJyZW50VGhy
ZWFkKHRoaXMsIHBlbnYsIGFyZ3MpOwogICAgfQogICAgamludCBEZXRhY2hDdXJyZW50VGhyZWFk
KCkgewogICAgICAgIHJldHVybiBmdW5jdGlvbnMtPkRldGFjaEN1cnJlbnRUaHJlYWQodGhpcyk7
CiAgICB9CgoKfTsKCnZvaWQgSk5JX0dldERlZmF1bHRKYXZhVk1Jbml0QXJncyh2b2lkICopOwoK
amludCBKTklfQ3JlYXRlSmF2YVZNKEphdmFWTSAqKiwgSk5JRW52ICoqLCB2b2lkICopOwoKamlu
dCBKTklfR2V0Q3JlYXRlZEphdmFWTXMoSmF2YVZNICoqLCBqc2l6ZSwganNpemUgKik7CmpyZWYg
Sk5JX01ha2VMb2NhbFJlZihKTklFbnYgKnBKTklFbnYsIHZvaWQgKnBIT2JqZWN0KTsKCgp9CiMg
MTkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9vamkvbnNJSlZNTWFuYWdlci5oIiAyCiMgNDEgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9vamkvbnNJSlZNTWFuYWdlci5oIgpjbGFzcyBuc0lKVk1QbHVn
aW47CgpjbGFzcyBuc0lTZWN1cmVFbnY7CgpjbGFzcyBuc0lQcmluY2lwYWw7CiMgNTUgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9vamkvbnNJSlZNTWFuYWdlci5oIgpjbGFzcyBuc0lKVk1NYW5hZ2Vy
IDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBH
ZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGExZTVlZDUwLCAweGFhNGEsIDB4
MTFkMSwgeyAweDg1LCAweGIyLCAweDAwLCAweDgwLCAweDVmLCAweDBlLCAweDRkLCAweGZlIH19
OyByZXR1cm4gaWlkO30KCgogICAgICAgIHN0YXRpYyBjb25zdCBuc0lEJiBHZXRDSUQoKSB7c3Rh
dGljIGNvbnN0IG5zSUQgY2lkID0geyAweDM4ZTdlZjEwLCAweDU4ZGYsIDB4MTFkMiwgezB4ODEs
IDB4NjQsIDB4MDAsIDB4NjAsIDB4MDgsIDB4MTEsIDB4OWQsIDB4N2F9IH07IHJldHVybiBjaWQ7
fQoKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IENyZWF0ZVByb3h5Sk5JKG5zSVNlY3VyZUVudiAq
c2VjdXJlRW52LCBKTklFbnYgKiAqb3V0UHJveHlFbnYpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldFByb3h5Sk5JKEpOSUVudiAqICpvdXRQcm94eUVudikgPSAwOwoKCgoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBTaG93SmF2YUNvbnNvbGUodm9pZCkgPSAwOwoKCgoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBJc0FsbFBlcm1pc3Npb25HcmFudGVkKGNvbnN0IGNoYXIgKmxhc3RGaW5nZXJwcmlu
dCwgY29uc3QgY2hhciAqbGFzdENvbW1vbk5hbWUsIGNvbnN0IGNoYXIgKnJvb3RGaW5nZXJwcmlu
dCwgY29uc3QgY2hhciAqcm9vdENvbW1vbk5hbWUsIFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCgoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBJc0FwcGxldFRydXN0ZWQoY29uc3QgY2hhciAqYVJTQUJ1Ziwg
UFJVaW50MzIgYVJTQUJ1ZkxlbiwgY29uc3QgY2hhciAqYVBsYWludGV4dCwgUFJVaW50MzIgYVBs
YWludGV4dExlbiwgUFJCb29sICppc1RydXN0ZWQsIG5zSVByaW5jaXBhbCAqKl9yZXR2YWwpID0g
MDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SmF2YUVuYWJsZWQoUFJCb29sICphSmF2YUVu
YWJsZWQpID0gMDsKCn07CiMgMTI3ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKCgoKCiMgMSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL29qaS9uc0lMaXZlQ29ubmVjdE1hbmFnZXIuaCIgMQojIDYxICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvb2ppL25zSUxpdmVDb25uZWN0TWFuYWdlci5oIgpzdHJ1Y3Qg
SlNSdW50aW1lOwpzdHJ1Y3QgSlNDb250ZXh0OwpzdHJ1Y3QgSlNPYmplY3Q7CgpjbGFzcyBuc0lM
aXZlQ29ubmVjdE1hbmFnZXIgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewpwdWJsaWM6CiAgICAgICAg
c3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsg
MHhkMjBjODA4MSwgMHhjYmNiLCAweDExZDIsIHsgMHhhNSwgMHhhMCwgMHhlOCwgMHg4NCwgMHhh
ZSwgMHhkOSwgMHhjOSwgMHhmYyB9IH07IHJldHVybiBpaWQ7fQoKCgoKICAgICAgICB2aXJ0dWFs
IG5zcmVzdWx0CiAgICBTdGFydHVwTGl2ZUNvbm5lY3QoSlNSdW50aW1lKiBydW50aW1lLCBQUkJv
b2wmIG91dFN0YXJ0ZWQpID0gMDsKCgoKCiAgICAgICAgdmlydHVhbCBuc3Jlc3VsdAogICAgU2h1
dGRvd25MaXZlQ29ubmVjdChKU1J1bnRpbWUqIHJ1bnRpbWUsIFBSQm9vbCYgb3V0U2h1dGRvd24p
ID0gMDsKCgoKCiAgICAgICAgdmlydHVhbCBuc3Jlc3VsdAogICAgSXNMaXZlQ29ubmVjdEVuYWJs
ZWQoUFJCb29sJiBvdXRFbmFibGVkKSA9IDA7CgoKCgogICAgICAgIHZpcnR1YWwgbnNyZXN1bHQK
ICAgIEluaXRMaXZlQ29ubmVjdENsYXNzZXMoSlNDb250ZXh0KiBjb250ZXh0LCBKU09iamVjdCog
Z2xvYmFsT2JqZWN0KSA9IDA7CgoKCgogICAgIHZpcnR1YWwgbnNyZXN1bHQKICAgICBXcmFwSmF2
YU9iamVjdChKU0NvbnRleHQqIGNvbnRleHQsIGpvYmplY3QgamF2YU9iamVjdCwgSlNPYmplY3Qq
ICpvdXRKU09iamVjdCkgPSAwOwp9OwojIDEzMiAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL29qaS9uc0lKVk1QbHVnaW5JbnN0YW5jZS5oIiAxCiMgMjYg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9vamkvbnNJSlZNUGx1Z2luSW5zdGFuY2UuaCIKY2xhc3Mg
bnNJSlZNUGx1Z2luSW5zdGFuY2UgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBz
dGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4
YTBjMDU3ZDAsIDB4MDFjMSwgMHgxMWQyLCB7IDB4ODEsIDB4NWIsIDB4MDAsIDB4NjAsIDB4MDgs
IDB4MTEsIDB4OWQsIDB4N2EgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRKYXZhT2JqZWN0KGpvYmplY3QgKnJlc3VsdCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRUZXh0KGNvbnN0IGNoYXIgKiogcmVzdWx0KSA9IDA7Cgp9OwojIDEzMyAibnNET01DbGFzc0lu
Zm8uY3BwIiAyCgoKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxPcHRp
b25FbGVtZW50LmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1M
T3B0aW9uRWxlbWVudC5oIgpjbGFzcyBuc0lET01IVE1MT3B0aW9uRWxlbWVudCA6IHB1YmxpYyBu
c0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlE
KCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTA5MiwgMHgxNWIzLCAweDExZDIs
IHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0
dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEZvcm0obnNJRE9NSFRNTEZvcm1FbGVt
ZW50ICogKmFGb3JtKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERlZmF1bHRTZWxlY3Rl
ZChQUkJvb2wgKmFEZWZhdWx0U2VsZWN0ZWQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldERl
ZmF1bHRTZWxlY3RlZChQUkJvb2wgYURlZmF1bHRTZWxlY3RlZCkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRUZXh0KG5zQVN0cmluZyAmIGFUZXh0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRUZXh0KGNvbnN0IG5zQVN0cmluZyAmIGFUZXh0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldEluZGV4KFBSSW50MzIgKmFJbmRleCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXREaXNhYmxlZChQUkJvb2wgKmFEaXNhYmxlZCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0
RGlzYWJsZWQoUFJCb29sIGFEaXNhYmxlZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRM
YWJlbChuc0FTdHJpbmcgJiBhTGFiZWwpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldExhYmVs
KGNvbnN0IG5zQVN0cmluZyAmIGFMYWJlbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRT
ZWxlY3RlZChQUkJvb2wgKmFTZWxlY3RlZCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0U2Vs
ZWN0ZWQoUFJCb29sIGFTZWxlY3RlZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRWYWx1
ZShuc0FTdHJpbmcgJiBhVmFsdWUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFZhbHVlKGNv
bnN0IG5zQVN0cmluZyAmIGFWYWx1ZSkgPSAwOwoKfTsKIyAxMzYgIm5zRE9NQ2xhc3NJbmZvLmNw
cCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NTlNIVE1MT3B0aW9uQ29s
bGVjdG4uaCIgMQojIDE3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTU5TSFRNTE9w
dGlvbkNvbGxlY3RuLmgiCmNsYXNzIG5zSURPTUhUTUxPcHRpb25FbGVtZW50OwojIDI3ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTU5TSFRNTE9wdGlvbkNvbGxlY3RuLmgiCmNsYXNz
IG5zSURPTU5TSFRNTE9wdGlvbkNvbGxlY3Rpb24gOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVi
bGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQg
aWlkID0gezB4NDA5YmJmMTQsIDB4MWRkMiwgMHgxMWIyLCB7IDB4OTEsIDB4ZGUsIDB4OGQsIDB4
NjcsIDB4MmQsIDB4NDAsIDB4NjIsIDB4NzYgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRMZW5ndGgoUFJVaW50MzIgKmFMZW5ndGgpID0gMDsKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldExlbmd0aChQUlVpbnQzMiBhTGVuZ3RoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldFNlbGVjdGVkSW5kZXgoUFJJbnQzMiAqYVNlbGVjdGVkSW5kZXgpID0gMDsKICB2aXJ0dWFs
IG5zcmVzdWx0IFNldFNlbGVjdGVkSW5kZXgoUFJJbnQzMiBhU2VsZWN0ZWRJbmRleCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRPcHRpb24oUFJJbnQzMiBpbmRleCwgbnNJRE9NSFRNTE9w
dGlvbkVsZW1lbnQgKm9wdGlvbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBBZGQobnNJRE9N
SFRNTE9wdGlvbkVsZW1lbnQgKm9wdGlvbikgPSAwOwoKfTsKIyAxMzcgIm5zRE9NQ2xhc3NJbmZv
LmNwcCIgMgoKCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJQ29udGVudExp
c3QuaCIgMQojIDU0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lDb250ZW50TGlz
dC5oIgpjbGFzcyBuc0lDb250ZW50TGlzdCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CnB1YmxpYzoK
CiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9
IHsgMHhkNzJjYjQwMCwgMHg0YjMzLCAweDExZDUsIHsgMHhhMCwgMHg0MSwgMHgwLCAweDEwLCAw
eGE0LCAweGVmLCAweDQ4LCAweGM5IH0gfTsgcmV0dXJuIGlpZDt9CgoKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0UGFyZW50T2JqZWN0KG5zSVN1cHBvcnRzKiogYVBhcmVudE9iamVjdCkgPSAwOwoK
CgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMZW5ndGgoUFJVaW50MzIqIGFMZW5ndGgsIFBSQm9v
bCBhRG9GbHVzaCkgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IEl0ZW0oUFJVaW50MzIgYUluZGV4
LCBuc0lET01Ob2RlKiogYVJldHVybiwKICAgICAgICAgICAgICAgICAgUFJCb29sIGFEb0ZsdXNo
KSA9IDA7CgogIHZpcnR1YWwgbnNyZXN1bHQgTmFtZWRJdGVtKGNvbnN0IG5zQVN0cmluZyYgYU5h
bWUsIG5zSURPTU5vZGUqKiBhUmV0dXJuLAogICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCBh
RG9GbHVzaCkgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IEluZGV4T2YobnNJQ29udGVudCAqYUNv
bnRlbnQsIFBSSW50MzImIGFJbmRleCwKICAgICAgICAgICAgICAgICAgICAgUFJCb29sIGFEb0Zs
dXNoKSA9IDA7Cn07CiMgMTQwICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKCgojIDEgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSUV2ZW50TGlzdGVuZXJNYW5hZ2VyLmgiIDEKIyA0NiAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJRXZlbnRMaXN0ZW5lck1hbmFnZXIuaCIK
Y2xhc3MgbnNJUHJlc0NvbnRleHQ7CmNsYXNzIG5zSURPTUV2ZW50TGlzdGVuZXI7CmNsYXNzIG5z
SVNjcmlwdENvbnRleHQ7CmNsYXNzIG5zSURPTUV2ZW50VGFyZ2V0OwpjbGFzcyBuc0lET01FdmVu
dEdyb3VwOwojIDYwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lFdmVudExpc3Rl
bmVyTWFuYWdlci5oIgpjbGFzcyBuc0lFdmVudExpc3RlbmVyTWFuYWdlciA6IHB1YmxpYyBuc0lT
dXBwb3J0cyB7CgpwdWJsaWM6CiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGlj
IGNvbnN0IG5zSUlEIGlpZCA9IHsgMHhjZDkxYmNmMCwgMHhkZWQ5LCAweDExZDEsIHsweGJkLCAw
eDg1LCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGUzLCAweGY0fSB9OyByZXR1cm4gaWlkO30K
CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgQWRkRXZlbnRMaXN0ZW5lckJ5SUlEKG5zSURPTUV2ZW50
TGlzdGVuZXIgKmFMaXN0ZW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBuc0lJRCYgYUlJRCwgUFJJbnQzMiBmbGFncykgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBSZW1vdmVFdmVudExpc3RlbmVyQnlJSUQobnNJRE9NRXZlbnRMaXN0ZW5lciAqYUxpc3Rl
bmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5zSUlEJiBh
SUlELCBQUkludDMyIGZsYWdzKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEFkZEV2ZW50
TGlzdGVuZXJCeVR5cGUobnNJRE9NRXZlbnRMaXN0ZW5lciAqYUxpc3RlbmVyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuc0FTdHJpbmcmIHR5cGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSSW50MzIgZmxhZ3MsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5zSURPTUV2ZW50R3JvdXAqIGFFdnRHcnApID0gMDsKCgoK
CgogIHZpcnR1YWwgbnNyZXN1bHQgUmVtb3ZlRXZlbnRMaXN0ZW5lckJ5VHlwZShuc0lET01FdmVu
dExpc3RlbmVyICphTGlzdGVuZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IG5zQVN0cmluZyYgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUFJJbnQzMiBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnNJRE9NRXZlbnRHcm91cCogYUV2dEdycCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgQWRkU2NyaXB0RXZlbnRMaXN0ZW5lcihuc0lTY3JpcHRDb250ZXh0KmFDb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdXBwb3J0cyAqYU9iamVjdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQXRvbSAqYU5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5zQVN0cmluZyYgYUZ1bmMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCBhRGVmZXJDb21waWxhdGlv
bikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZW1vdmVTY3JpcHRFdmVudExpc3RlbmVyKG5z
SUF0b20gKmFOYW1lKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZWdpc3RlclNjcmlw
dEV2ZW50TGlzdGVuZXIobnNJU2NyaXB0Q29udGV4dCAqYUNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3VwcG9ydHMgKmFPYmplY3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJQXRvbSogYU5hbWUpID0gMDsKCgoK
CgogIHZpcnR1YWwgbnNyZXN1bHQgQ29tcGlsZVNjcmlwdEV2ZW50TGlzdGVuZXIobnNJU2NyaXB0
Q29udGV4dCAqYUNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuc0lTdXBwb3J0cyAqYU9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5zSUF0b20qIGFOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUFJCb29sICphRGlkQ29tcGlsZSkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQg
SGFuZGxlRXZlbnQobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgIG5zRXZlbnQqIGFFdmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgIG5zSURP
TUV2ZW50KiogYURPTUV2ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgbnNJRE9NRXZlbnRU
YXJnZXQqIGFDdXJyZW50VGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgUFJVaW50MzIg
YUZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgbnNFdmVudFN0YXR1cyogYUV2ZW50U3Rh
dHVzKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDcmVhdGVFdmVudChuc0lQcmVzQ29u
dGV4dCogYVByZXNDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgbnNFdmVudCogYUV2
ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbnNBU3RyaW5nJiBhRXZlbnRUeXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgbnNJRE9NRXZlbnQqKiBhRE9NRXZlbnQpID0gMDsK
CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ2FwdHVyZUV2ZW50KFBSSW50MzIgYUV2ZW50VHlwZXMp
ID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVsZWFzZUV2ZW50KFBSSW50MzIgYUV2ZW50
VHlwZXMpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVtb3ZlQWxsTGlzdGVuZXJzKFBS
Qm9vbCBhU2NyaXB0T25seSkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRMaXN0ZW5l
clRhcmdldChuc0lTdXBwb3J0cyogYVRhcmdldCkgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEhhc011dGF0aW9uTGlzdGVuZXJzKFBSQm9vbCogYUxpc3RlbmVyKSA9IDA7CgoKCgoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRTeXN0ZW1FdmVudEdyb3VwTE0obnNJRE9NRXZlbnRHcm91cCoqIGFH
cm91cCkgPSAwOwp9OwoKZXh0ZXJuIG5zcmVzdWx0Ck5TX05ld0V2ZW50TGlzdGVuZXJNYW5hZ2Vy
KG5zSUV2ZW50TGlzdGVuZXJNYW5hZ2VyKiogYUluc3RhbmNlUHRyUmVzdWx0KTsKIyAxNDMgIm5z
RE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9N
RXZlbnRSZWNlaXZlci5oIiAxCiMgNDIgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9N
RXZlbnRSZWNlaXZlci5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NRXZl
bnRUYXJnZXQuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUV2ZW50
VGFyZ2V0LmgiCmNsYXNzIG5zSURPTUV2ZW50VGFyZ2V0IDogcHVibGljIG5zSVN1cHBvcnRzIHsK
IHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5z
SUlEIGlpZCA9IHsweDFjNzczYjMwLCAweGQxY2YsIDB4MTFkMiwgeyAweGJkLCAweDk1LCAweDAw
LCAweDgwLCAweDVmLCAweDhhLCAweGUzLCAweGY0IH19OyByZXR1cm4gaWlkO30KIyA2NSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01FdmVudFRhcmdldC5oIgogIHZpcnR1YWwgbnNy
ZXN1bHQgQWRkRXZlbnRMaXN0ZW5lcihjb25zdCBuc0FTdHJpbmcgJiB0eXBlLCBuc0lET01FdmVu
dExpc3RlbmVyICpsaXN0ZW5lciwgUFJCb29sIHVzZUNhcHR1cmUpID0gMDsKIyA4OCAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01FdmVudFRhcmdldC5oIgogIHZpcnR1YWwgbnNyZXN1
bHQgUmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBuc0FTdHJpbmcgJiB0eXBlLCBuc0lET01FdmVu
dExpc3RlbmVyICpsaXN0ZW5lciwgUFJCb29sIHVzZUNhcHR1cmUpID0gMDsKIyAxMDkgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NRXZlbnRUYXJnZXQuaCIKICB2aXJ0dWFsIG5zcmVz
dWx0IERpc3BhdGNoRXZlbnQobnNJRE9NRXZlbnQgKmV2dCwgUFJCb29sICpfcmV0dmFsKSA9IDA7
Cgp9OwojIDQzICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUV2ZW50UmVjZWl2ZXIu
aCIgMgoKY2xhc3MgbnNJRE9NRXZlbnRMaXN0ZW5lcjsKY2xhc3MgbnNJRE9NTW91c2VMaXN0ZW5l
cjsKY2xhc3MgbnNJRE9NTW91c2VNb3Rpb25MaXN0ZW5lcjsKY2xhc3MgbnNJRE9NS2V5TGlzdGVu
ZXI7CmNsYXNzIG5zSURPTUZvY3VzTGlzdGVuZXI7CmNsYXNzIG5zSURPTUxvYWRMaXN0ZW5lcjsK
Y2xhc3MgbnNJRE9NRHJhZ0xpc3RlbmVyOwpjbGFzcyBuc0lFdmVudExpc3RlbmVyTWFuYWdlcjsK
Y2xhc3MgbnNJRE9NRXZlbnQ7CmNsYXNzIG5zSURPTUV2ZW50R3JvdXA7CiMgNjUgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NRXZlbnRSZWNlaXZlci5oIgpjbGFzcyBuc0lET01FdmVu
dFJlY2VpdmVyIDogcHVibGljIG5zSURPTUV2ZW50VGFyZ2V0CnsKcHVibGljOgogIHN0YXRpYyBj
b25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7IDB4ZTFkYmNi
YTAsIDB4ZmIzOCwgMHgxMWQxLCB7MHhiZCwgMHg4NywgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwg
MHhlMywgMHhmNH0gfTsgcmV0dXJuIGlpZDt9CgogIHZpcnR1YWwgbnNyZXN1bHQgQWRkRXZlbnRM
aXN0ZW5lckJ5SUlEKG5zSURPTUV2ZW50TGlzdGVuZXIgKmFMaXN0ZW5lciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuc0lJRCYgYUlJRCkgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgUmVtb3ZlRXZlbnRMaXN0ZW5lckJ5SUlEKG5zSURPTUV2ZW50TGlzdGVuZXIgKmFM
aXN0ZW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuc0lJ
RCYgYUlJRCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGlzdGVuZXJNYW5hZ2VyKG5zSUV2
ZW50TGlzdGVuZXJNYW5hZ2VyKiogYVJlc3VsdCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgSGFu
ZGxlRXZlbnQobnNJRE9NRXZlbnQgKmFFdmVudCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
U3lzdGVtRXZlbnRHcm91cChuc0lET01FdmVudEdyb3VwKiogYUdyb3VwKSA9IDA7Cn07CiMgMTQ0
ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20v
bnNJRE9NU3R5bGVTaGVldC5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJ
RE9NU3R5bGVTaGVldC5oIgpjbGFzcyBuc0lET01TdHlsZVNoZWV0IDogcHVibGljIG5zSVN1cHBv
cnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNv
bnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MDgwLCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJl
LCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KIyA0
MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01TdHlsZVNoZWV0LmgiCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRUeXBlKG5zQVN0cmluZyAmIGFUeXBlKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldERpc2FibGVkKFBSQm9vbCAqYURpc2FibGVkKSA9IDA7CiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXREaXNhYmxlZChQUkJvb2wgYURpc2FibGVkKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldE93bmVyTm9kZShuc0lET01Ob2RlICogKmFPd25lck5vZGUpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0UGFyZW50U3R5bGVTaGVldChuc0lET01TdHlsZVNoZWV0ICogKmFQYXJl
bnRTdHlsZVNoZWV0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEhyZWYobnNBU3RyaW5n
ICYgYUhyZWYpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VGl0bGUobnNBU3RyaW5nICYg
YVRpdGxlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1lZGlhKG5zSURPTU1lZGlhTGlz
dCAqICphTWVkaWEpID0gMDsKCn07CiMgMTQ3ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVN0eWxlU2hlZXRMaXN0LmgiIDEKIyAyNSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01TdHlsZVNoZWV0TGlzdC5oIgpjbGFzcyBu
c0lET01TdHlsZVNoZWV0TGlzdCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0
YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhh
NmNmOTA4MSwgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1Ziwg
MHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CiMgNDAgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9kb20vbnNJRE9NU3R5bGVTaGVldExpc3QuaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldExl
bmd0aChQUlVpbnQzMiAqYUxlbmd0aCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJdGVtKFBS
VWludDMyIGluZGV4LCBuc0lET01TdHlsZVNoZWV0ICoqX3JldHZhbCkgPSAwOwoKfTsKIyAxNDgg
Im5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJ
RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9k
b20vbnNJRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIgpjbGFzcyBuc0lET01DU1NTdHlsZURlY2xh
cmF0aW9uIDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5z
SUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MGJlLCAweDE1
YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAw
eDMyIH19OyByZXR1cm4gaWlkO30KIyA0MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lE
T01DU1NTdHlsZURlY2xhcmF0aW9uLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDc3NUZXh0KG5z
QVN0cmluZyAmIGFDc3NUZXh0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDc3NUZXh0KGNv
bnN0IG5zQVN0cmluZyAmIGFDc3NUZXh0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBy
b3BlcnR5VmFsdWUoY29uc3QgbnNBU3RyaW5nICYgcHJvcGVydHlOYW1lLCBuc0FTdHJpbmcgJiBf
cmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByb3BlcnR5Q1NTVmFsdWUoY29u
c3QgbnNBU3RyaW5nICYgcHJvcGVydHlOYW1lLCBuc0lET01DU1NWYWx1ZSAqKl9yZXR2YWwpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVtb3ZlUHJvcGVydHkoY29uc3QgbnNBU3RyaW5nICYg
cHJvcGVydHlOYW1lLCBuc0FTdHJpbmcgJiBfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldFByb3BlcnR5UHJpb3JpdHkoY29uc3QgbnNBU3RyaW5nICYgcHJvcGVydHlOYW1lLCBu
c0FTdHJpbmcgJiBfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFByb3BlcnR5
KGNvbnN0IG5zQVN0cmluZyAmIHByb3BlcnR5TmFtZSwgY29uc3QgbnNBU3RyaW5nICYgdmFsdWUs
IGNvbnN0IG5zQVN0cmluZyAmIHByaW9yaXR5KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dExlbmd0aChQUlVpbnQzMiAqYUxlbmd0aCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJdGVt
KFBSVWludDMyIGluZGV4LCBuc0FTdHJpbmcgJiBfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldFBhcmVudFJ1bGUobnNJRE9NQ1NTUnVsZSAqICphUGFyZW50UnVsZSkgPSAwOwoK
fTsKIyAxNDkgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9kb20vbnNJRE9NQ1NTUnVsZS5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20v
bnNJRE9NQ1NTUnVsZS5oIgpjbGFzcyBuc0lET01DU1NSdWxlIDogcHVibGljIG5zSVN1cHBvcnRz
IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0
IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MGMxLCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAw
eDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KIyAzOSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01DU1NSdWxlLmgiCiAgZW51bSB7IFVOS05P
V05fUlVMRSA9IDBVIH07CgogIGVudW0geyBTVFlMRV9SVUxFID0gMVUgfTsKCiAgZW51bSB7IENI
QVJTRVRfUlVMRSA9IDJVIH07CgogIGVudW0geyBJTVBPUlRfUlVMRSA9IDNVIH07CgogIGVudW0g
eyBNRURJQV9SVUxFID0gNFUgfTsKCiAgZW51bSB7IEZPTlRfRkFDRV9SVUxFID0gNVUgfTsKCiAg
ZW51bSB7IFBBR0VfUlVMRSA9IDZVIH07CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFR5cGUoUFJV
aW50MTYgKmFUeXBlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENzc1RleHQobnNBU3Ry
aW5nICYgYUNzc1RleHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENzc1RleHQoY29uc3Qg
bnNBU3RyaW5nICYgYUNzc1RleHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UGFyZW50
U3R5bGVTaGVldChuc0lET01DU1NTdHlsZVNoZWV0ICogKmFQYXJlbnRTdHlsZVNoZWV0KSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBhcmVudFJ1bGUobnNJRE9NQ1NTUnVsZSAqICphUGFy
ZW50UnVsZSkgPSAwOwoKfTsKIyAxNTAgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NQ1NTUnVsZUxpc3QuaCIgMQojIDI1ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNTU1J1bGVMaXN0LmgiCmNsYXNzIG5zSURPTUNTU1J1
bGVMaXN0IDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5z
SUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MGMwLCAweDE1
YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAw
eDMyIH19OyByZXR1cm4gaWlkO30KIyA0MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lE
T01DU1NSdWxlTGlzdC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGVuZ3RoKFBSVWludDMyICph
TGVuZ3RoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEl0ZW0oUFJVaW50MzIgaW5kZXgsIG5z
SURPTUNTU1J1bGUgKipfcmV0dmFsKSA9IDA7Cgp9OwojIDE1MSAibnNET01DbGFzc0luZm8uY3Bw
IiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01SZWN0LmgiIDEKIyAyNSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01SZWN0LmgiCmNsYXNzIG5zSURPTVJlY3Qg
OiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdl
dElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4NzE3MzVmNjIsIDB4YWM1YywgMHg0
MjM2LCB7IDB4OWEsIDB4MWYsIDB4NWYsIDB4ZmIsIDB4MjgsIDB4MGQsIDB4NTMsIDB4MWMgfX07
IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRUb3AobnNJRE9NQ1NTUHJpbWl0
aXZlVmFsdWUgKiAqYVRvcCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRSaWdodChuc0lE
T01DU1NQcmltaXRpdmVWYWx1ZSAqICphUmlnaHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0Qm90dG9tKG5zSURPTUNTU1ByaW1pdGl2ZVZhbHVlICogKmFCb3R0b20pID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0TGVmdChuc0lET01DU1NQcmltaXRpdmVWYWx1ZSAqICphTGVmdCkg
PSAwOwoKfTsKIyAxNTIgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9kb20vbnNJRE9NUkdCQ29sb3IuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvZG9tL25zSURPTVJHQkNvbG9yLmgiCmNsYXNzIG5zSURPTVJHQkNvbG9yIDogcHVibGljIG5z
SVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3Rh
dGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDZhZmYzMTAyLCAweDMyMGQsIDB4NDk4NiwgeyAweDk3
LCAweDkwLCAweDEyLCAweDMxLCAweDZiLCAweGI4LCAweDdjLCAweGY5IH19OyByZXR1cm4gaWlk
O30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UmVkKG5zSURPTUNTU1ByaW1pdGl2ZVZhbHVlICog
KmFSZWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0R3JlZW4obnNJRE9NQ1NTUHJpbWl0
aXZlVmFsdWUgKiAqYUdyZWVuKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEJsdWUobnNJ
RE9NQ1NTUHJpbWl0aXZlVmFsdWUgKiAqYUJsdWUpID0gMDsKCn07CiMgMTUzICJuc0RPTUNsYXNz
SW5mby5jcHAiIDIKCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSVhCTFNl
cnZpY2UuaCIgMQojIDUyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lYQkxTZXJ2
aWNlLmgiCmNsYXNzIG5zSUNvbnRlbnQ7CmNsYXNzIG5zSURvY3VtZW50OwpjbGFzcyBuc0lET01F
dmVudFJlY2VpdmVyOwpjbGFzcyBuc0lET01Ob2RlTGlzdDsKY2xhc3MgbnNJWEJMQmluZGluZzsK
Y2xhc3MgbnNJWEJMRG9jdW1lbnRJbmZvOwpjbGFzcyBuc0lVUkk7CmNsYXNzIG5zSUF0b207CgoK
CgoKY2xhc3MgbnNJWEJMU2VydmljZSA6IHB1YmxpYyBuc0lTdXBwb3J0cwp7CnB1YmxpYzoKICBz
dGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0geyAw
eGU3OTAzZTEsIDB4YzdiYiwgMHgxMWQzLCB7IDB4OTcsIDB4ZmIsIDB4MCwgMHg0MCwgMHg1LCAw
eDUzLCAweGVlLCAweGYwIH0gfTsgcmV0dXJuIGlpZDt9CgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBM
b2FkQmluZGluZ3MobnNJQ29udGVudCogYUNvbnRlbnQsIGNvbnN0IG5zQVN0cmluZyYgYVVSTCwg
UFJCb29sIGFBdWdtZW50RmxhZywKICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lYQkxCaW5k
aW5nKiogYUJpbmRpbmcsIFBSQm9vbCogYVJlc29sdmVTdHlsZSkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBGbHVzaFN0eWxlQmluZGluZ3MobnNJQ29udGVudCogYUNvbnRlbnQpID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0QmluZGluZyhuc0lDb250ZW50KiBhQm91bmRFbGVtZW50LCBj
b25zdCBuc0NTdHJpbmcmIGFVUkxTdHIsIG5zSVhCTEJpbmRpbmcqKiBhUmVzdWx0KSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEJpbmRpbmdSZWFkeShuc0lDb250ZW50KiBhQm91bmRFbGVtZW50
LCBjb25zdCBuc0NTdHJpbmcmIGFVUkxTdHIsIFBSQm9vbCogYUlzUmVhZHkpID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgUmVzb2x2ZVRhZyhuc0lDb250ZW50KiBhQ29udGVudCwgUFJJbnQzMiog
YU5hbWVTcGFjZUlELCBuc0lBdG9tKiogYVJlc3VsdCkgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldFhCTERvY3VtZW50SW5mbyhjb25zdCBuc0NTdHJpbmcmIGFVUkxTdHIsIG5zSUNvbnRlbnQq
IGFCb3VuZEVsZW1lbnQsIG5zSVhCTERvY3VtZW50SW5mbyoqIGFSZXN1bHQpPTA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IExvYWRCaW5kaW5nRG9jdW1lbnRJbmZvKG5zSUNvbnRlbnQqIGFCb3VuZEVs
ZW1lbnQsIG5zSURvY3VtZW50KiBhQm91bmREb2N1bWVudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IG5zQ1N0cmluZyYgYVVSSSwgY29uc3QgbnNDU3RyaW5nJiBh
UmVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJCb29sIGFGb3JjZVN5
bmNMb2FkLCBuc0lYQkxEb2N1bWVudEluZm8qKiBhUmVzdWx0KSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEF0dGFjaEdsb2JhbEtleUhhbmRsZXIobnNJRE9NRXZlbnRSZWNlaXZlciogYUVsZW1l
bnQpPTA7CiAgdmlydHVhbCBuc3Jlc3VsdCBBdHRhY2hHbG9iYWxEcmFnSGFuZGxlcihuc0lET01F
dmVudFJlY2VpdmVyKiBhRWxlbWVudCk9MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgRmV0Y2hTeW5j
WE1MRG9jdW1lbnQobnNJVVJJKiBhVVJJLCBuc0lEb2N1bWVudCoqIGFSZXN1bHQpID0gMDsKfTsK
IyAxNTYgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9j
b250ZW50L25zSVhCTEJpbmRpbmcuaCIgMQojIDUxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29u
dGVudC9uc0lYQkxCaW5kaW5nLmgiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25z
SVN1cHBvcnRzQXJyYXkuaCIgMQojIDE0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJ
U3VwcG9ydHNBcnJheS5oIgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb2xs
ZWN0aW9uLmgiIDEKIyAyOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSUNvbGxlY3Rp
b24uaCIKY2xhc3MgbnNJQ29sbGVjdGlvbiA6IHB1YmxpYyBuc0lTZXJpYWxpemFibGUgewogcHVi
bGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQg
aWlkID0gezB4ODNiNjAxOWMsIDB4Y2JjNCwgMHgxMWQyLCB7IDB4OGMsIDB4Y2EsIDB4MDAsIDB4
NjAsIDB4YjAsIDB4ZmMsIDB4MTQsIDB4YTMgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBDb3VudChQUlVpbnQzMiAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRFbGVtZW50QXQoUFJVaW50MzIgaW5kZXgsIG5zSVN1cHBvcnRzICoqX3JldHZhbCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBRdWVyeUVsZW1lbnRBdChQUlVpbnQzMiBpbmRleCwgY29u
c3QgbnNJSUQgJiB1dWlkLCB2b2lkICogKnJlc3VsdCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRFbGVtZW50QXQoUFJVaW50MzIgaW5kZXgsIG5zSVN1cHBvcnRzICppdGVtKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEFwcGVuZEVsZW1lbnQobnNJU3VwcG9ydHMgKml0ZW0pID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgUmVtb3ZlRWxlbWVudChuc0lTdXBwb3J0cyAqaXRlbSkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBFbnVtZXJhdGUobnNJRW51bWVyYXRvciAqKl9yZXR2YWwp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ2xlYXIodm9pZCkgPSAwOwoKfTsKIyAxNzUgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lDb2xsZWN0aW9uLmgiCmNsYXNzIG5zUXVlcnlF
bGVtZW50QXQgOiBwdWJsaWMgbnNDT01QdHJfaGVscGVyCiAgewogICAgcHVibGljOgogICAgICBu
c1F1ZXJ5RWxlbWVudEF0KCBuc0lDb2xsZWN0aW9uKiBhQ29sbGVjdGlvbiwgUFJVaW50MzIgYUlu
ZGV4LCBuc3Jlc3VsdCogYUVycm9yUHRyICkKICAgICAgICAgIDogbUNvbGxlY3Rpb24oYUNvbGxl
Y3Rpb24pLAogICAgICAgICAgICBtSW5kZXgoYUluZGV4KSwKICAgICAgICAgICAgbUVycm9yUHRy
KGFFcnJvclB0cikKICAgICAgICB7CgogICAgICAgIH0KICAgICAgdmlydHVhbCBuc3Jlc3VsdCBv
cGVyYXRvcigpKCBjb25zdCBuc0lJRCYgYUlJRCwgdm9pZCoqICkgY29uc3Q7CiAgICBwcml2YXRl
OgogICAgICBuc0lDb2xsZWN0aW9uKiBtQ29sbGVjdGlvbjsKICAgICAgUFJVaW50MzIgbUluZGV4
OwogICAgICBuc3Jlc3VsdCogbUVycm9yUHRyOwogIH07CmlubGluZQpjb25zdCBuc1F1ZXJ5RWxl
bWVudEF0CmRvX1F1ZXJ5RWxlbWVudEF0KCBuc0lDb2xsZWN0aW9uKiBhQ29sbGVjdGlvbiwgUFJV
aW50MzIgYUluZGV4LCBuc3Jlc3VsdCogYUVycm9yUHRyID0gMCApCiAgewogICAgcmV0dXJuIG5z
UXVlcnlFbGVtZW50QXQoYUNvbGxlY3Rpb24sIGFJbmRleCwgYUVycm9yUHRyKTsKICB9CiMgMTUg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94cGNvbS9uc0lTdXBwb3J0c0FycmF5LmgiIDIKCgoKCgoK
Y2xhc3MgbnNJQmlkaXJlY3Rpb25hbEVudW1lcmF0b3I7CiMgMzQgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS94cGNvbS9uc0lTdXBwb3J0c0FycmF5LmgiCnR5cGVkZWYgUFJCb29sICgqbnNJU3VwcG9y
dHNBcnJheUVudW1GdW5jKShuc0lTdXBwb3J0cyogYUVsZW1lbnQsIHZvaWQgKmFEYXRhKTsKIyA0
NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3hwY29tL25zSVN1cHBvcnRzQXJyYXkuaCIKY2xhc3Mg
bnNJU3VwcG9ydHNBcnJheSA6IHB1YmxpYyBuc0lDb2xsZWN0aW9uIHsKIHB1YmxpYzoKCiAgc3Rh
dGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDc5
MWVhZmEwLCAweGI5ZTYsIDB4MTFkMSwgeyAweDgwLCAweDMxLCAweDAwLCAweDYwLCAweDA4LCAw
eDE1LCAweDliLCAweDVhIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgUFJCb29sIEVxdWFs
cyhjb25zdCBuc0lTdXBwb3J0c0FycmF5ICpvdGhlcikgPSAwOwoKCiAgdmlydHVhbCBuc0lTdXBw
b3J0cyAqIEVsZW1lbnRBdChQUlVpbnQzMiBhSW5kZXgpID0gMDsKCgogIHZpcnR1YWwgUFJJbnQz
MiBJbmRleE9mKGNvbnN0IG5zSVN1cHBvcnRzICphUG9zc2libGVFbGVtZW50KSA9IDA7CgoKICB2
aXJ0dWFsIFBSSW50MzIgSW5kZXhPZlN0YXJ0aW5nQXQoY29uc3QgbnNJU3VwcG9ydHMgKmFQb3Nz
aWJsZUVsZW1lbnQsIFBSVWludDMyIGFTdGFydEluZGV4KSA9IDA7CgoKICB2aXJ0dWFsIFBSSW50
MzIgTGFzdEluZGV4T2YoY29uc3QgbnNJU3VwcG9ydHMgKmFQb3NzaWJsZUVsZW1lbnQpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SW5kZXhPZihuc0lTdXBwb3J0cyAqYVBvc3NpYmxlRWxl
bWVudCwgUFJJbnQzMiAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRJbmRl
eE9mU3RhcnRpbmdBdChuc0lTdXBwb3J0cyAqYVBvc3NpYmxlRWxlbWVudCwgUFJVaW50MzIgYVN0
YXJ0SW5kZXgsIFBSSW50MzIgKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
TGFzdEluZGV4T2YobnNJU3VwcG9ydHMgKmFQb3NzaWJsZUVsZW1lbnQsIFBSSW50MzIgKl9yZXR2
YWwpID0gMDsKCgogIHZpcnR1YWwgUFJCb29sIEluc2VydEVsZW1lbnRBdChuc0lTdXBwb3J0cyAq
YUVsZW1lbnQsIFBSVWludDMyIGFJbmRleCkgPSAwOwoKCiAgdmlydHVhbCBQUkJvb2wgUmVwbGFj
ZUVsZW1lbnRBdChuc0lTdXBwb3J0cyAqYUVsZW1lbnQsIFBSVWludDMyIGFJbmRleCkgPSAwOwoK
CiAgdmlydHVhbCBQUkJvb2wgUmVtb3ZlRWxlbWVudEF0KFBSVWludDMyIGFJbmRleCkgPSAwOwoK
CiAgdmlydHVhbCBQUkJvb2wgUmVtb3ZlTGFzdEVsZW1lbnQoY29uc3QgbnNJU3VwcG9ydHMgKmFF
bGVtZW50KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IERlbGV0ZUxhc3RFbGVtZW50KG5zSVN1
cHBvcnRzICphRWxlbWVudCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBEZWxldGVFbGVtZW50
QXQoUFJVaW50MzIgYUluZGV4KSA9IDA7CgoKICB2aXJ0dWFsIFBSQm9vbCBBcHBlbmRFbGVtZW50
cyhuc0lTdXBwb3J0c0FycmF5ICphRWxlbWVudHMpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
Q29tcGFjdCh2b2lkKSA9IDA7CgoKICB2aXJ0dWFsIFBSQm9vbCBFbnVtZXJhdGVGb3J3YXJkcyhu
c0lTdXBwb3J0c0FycmF5RW51bUZ1bmMgYUZ1bmMsIHZvaWQgKiBhRGF0YSkgPSAwOwoKCiAgdmly
dHVhbCBQUkJvb2wgRW51bWVyYXRlQmFja3dhcmRzKG5zSVN1cHBvcnRzQXJyYXlFbnVtRnVuYyBh
RnVuYywgdm9pZCAqIGFEYXRhKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENsb25lKG5zSVN1
cHBvcnRzQXJyYXkgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIFBSQm9vbCBNb3ZlRWxlbWVu
dChQUkludDMyIGFGcm9tLCBQUkludDMyIGFUbykgPSAwOwoKCiAgdmlydHVhbCBQUkJvb2wgSW5z
ZXJ0RWxlbWVudHNBdChuc0lTdXBwb3J0c0FycmF5ICphT3RoZXIsIFBSVWludDMyIGFJbmRleCkg
PSAwOwoKCiAgdmlydHVhbCBQUkJvb2wgUmVtb3ZlRWxlbWVudHNBdChQUlVpbnQzMiBhSW5kZXgs
IFBSVWludDMyIGFDb3VudCkgPSAwOwoKCiAgdmlydHVhbCBQUkJvb2wgU2l6ZVRvKFBSSW50MzIg
YVNpemUpID0gMDsKCn07CiMgMzY4ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHBjb20vbnNJU3Vw
cG9ydHNBcnJheS5oIgpleHRlcm4gbnNyZXN1bHQKTlNfTmV3SVN1cHBvcnRzQXJyYXkobnNJU3Vw
cG9ydHNBcnJheSoqIGFJbnN0YW5jZVB0clJlc3VsdCk7CgpleHRlcm4gbnNyZXN1bHQKTlNfTmV3
SVN1cHBvcnRzQXJyYXlFbnVtZXJhdG9yKG5zSVN1cHBvcnRzQXJyYXkqIGFycmF5LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnNJQmlkaXJlY3Rpb25hbEVudW1lcmF0b3IqICphSW5z
dGFuY2VQdHJSZXN1bHQpOwojIDUyICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lY
QkxCaW5kaW5nLmgiIDIKCmNsYXNzIG5zSUNvbnRlbnQ7CmNsYXNzIG5zSURvY3VtZW50OwpjbGFz
cyBuc0lET01Ob2RlTGlzdDsKY2xhc3MgbnNJU2NyaXB0Q29udGV4dDsKY2xhc3MgbnNJWEJMUHJv
dG90eXBlQmluZGluZzsKCgoKCgpjbGFzcyBuc0lYQkxCaW5kaW5nIDogcHVibGljIG5zSVN1cHBv
cnRzCnsKcHVibGljOgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25z
dCBuc0lJRCBpaWQgPSB7IDB4ZGRkYmFkMjAsIDB4YzhkZiwgMHgxMWQzLCB7IDB4OTcsIDB4ZmIs
IDB4MCwgMHg0MCwgMHg1LCAweDUzLCAweGVlLCAweGYwIH0gfTsgcmV0dXJuIGlpZDt9CgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0UHJvdG90eXBlQmluZGluZyhuc0lYQkxQcm90b3R5cGVCaW5kaW5n
KiogYVJlc3VsdCk9MDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFByb3RvdHlwZUJpbmRpbmcobnNJ
WEJMUHJvdG90eXBlQmluZGluZyogYVByb3RvQmluZGluZyk9MDsKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRCYXNlQmluZGluZyhuc0lYQkxCaW5kaW5nKiogYVJlc3VsdCkgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0QmFzZUJpbmRpbmcobnNJWEJMQmluZGluZyogYUJpbmRpbmcpID0gMDsKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRBbm9ueW1vdXNDb250ZW50KG5zSUNvbnRlbnQqKiBhUGFyZW50
KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRBbm9ueW1vdXNDb250ZW50KG5zSUNvbnRlbnQq
IGFQYXJlbnQpID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRCaW5kaW5nRWxlbWVudChuc0lD
b250ZW50KiogYVJlc3VsdCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QmluZGluZ0VsZW1l
bnQobnNJQ29udGVudCogYUVsZW1lbnQpID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRCb3Vu
ZEVsZW1lbnQobnNJQ29udGVudCoqIGFSZXN1bHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dEJvdW5kRWxlbWVudChuc0lDb250ZW50KiBhRWxlbWVudCkgPSAwOwoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdlbmVyYXRlQW5vbnltb3VzQ29udGVudCgpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IElu
c3RhbGxFdmVudEhhbmRsZXJzKCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgSW5zdGFsbEltcGxl
bWVudGF0aW9uKCkgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IEhhc1N0eWxlU2hlZXRzKFBSQm9v
bCogYVJlc29sdmVTdHlsZSkgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEZpcnN0QmluZGlu
Z1dpdGhDb25zdHJ1Y3Rvcihuc0lYQkxCaW5kaW5nKiogYVJlc3VsdCk9MDsKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRCYXNlVGFnKFBSSW50MzIqIGFOYW1lU3BhY2VJRCwgbnNJQXRvbSoqIGFSZXN1
bHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQXR0cmlidXRlQ2hhbmdlZChuc0lBdG9tKiBh
QXR0cmlidXRlLCBQUkludDMyIGFOYW1lU3BhY2VJRCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUFJCb29sIGFSZW1vdmVGbGFnLCBQUkJvb2wgYU5vdGlmeSkgPSAwOwoKICB2aXJ0dWFs
IG5zcmVzdWx0IEV4ZWN1dGVBdHRhY2hlZEhhbmRsZXIoKT0wOwogIHZpcnR1YWwgbnNyZXN1bHQg
RXhlY3V0ZURldGFjaGVkSGFuZGxlcigpPTA7CiAgdmlydHVhbCBuc3Jlc3VsdCBVbmhvb2tFdmVu
dEhhbmRsZXJzKCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgQ2hhbmdlRG9jdW1lbnQobnNJRG9j
dW1lbnQqIGFPbGREb2N1bWVudCwgbnNJRG9jdW1lbnQqIGFOZXdEb2N1bWVudCkgPSAwOwoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldEJpbmRpbmdVUkkobnNDU3RyaW5nJiBhUmVzdWx0KSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXREb2NVUkkobnNDU3RyaW5nJiBhUmVzdWx0KSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRJRChuc0NTdHJpbmcmIGFSZXN1bHQpID0gMDsKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRJbnNlcnRpb25Qb2ludHNGb3IobnNJQ29udGVudCogYVBhcmVudCwgbnNJU3Vw
cG9ydHNBcnJheSoqIGFSZXN1bHQpPTA7CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SW5zZXJ0aW9u
UG9pbnQobnNJQ29udGVudCogYUNoaWxkLCBuc0lDb250ZW50KiogYVJlc3VsdCwgUFJVaW50MzIq
IGFJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUNvbnRlbnQqKiBhRGVm
YXVsdENvbnRlbnQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNpbmdsZUluc2VydGlvblBv
aW50KG5zSUNvbnRlbnQqKiBhUmVzdWx0LCBQUlVpbnQzMiogYUluZGV4LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUFJCb29sKiBhTXVsdGlwbGVJbnNlcnRpb25Qb2ludHMs
IG5zSUNvbnRlbnQqKiBhRGVmYXVsdENvbnRlbnQpID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBJ
c1N0eWxlQmluZGluZyhQUkJvb2wqIGFSZXN1bHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dElzU3R5bGVCaW5kaW5nKFBSQm9vbCBhSXNTdHlsZSkgPSAwOwoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldFJvb3RCaW5kaW5nKG5zSVhCTEJpbmRpbmcqKiBhUmVzdWx0KSA9IDA7CiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRGaXJzdFN0eWxlQmluZGluZyhuc0lYQkxCaW5kaW5nKiogYVJlc3VsdCkgPSAw
OwoKICB2aXJ0dWFsIG5zcmVzdWx0IEluaGVyaXRzU3R5bGUoUFJCb29sKiBhUmVzdWx0KT0wOwog
IHZpcnR1YWwgbnNyZXN1bHQgV2Fsa1J1bGVzKG5zSVN1cHBvcnRzQXJyYXlFbnVtRnVuYyBhRnVu
Yywgdm9pZCogYURhdGEpPTA7CiAgdmlydHVhbCBuc3Jlc3VsdCBBdHRyaWJ1dGVBZmZlY3RzU3R5
bGUobnNJU3VwcG9ydHNBcnJheUVudW1GdW5jIGFGdW5jLCB2b2lkKiBhRGF0YSwgUFJCb29sKiBh
QWZmZWN0cyk9MDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBNYXJrRm9yRGVhdGgoKT0wOwogIHZpcnR1
YWwgbnNyZXN1bHQgTWFya2VkRm9yRGVhdGgoUFJCb29sKiBhUmVzdWx0KT0wOwoKICB2aXJ0dWFs
IG5zcmVzdWx0IEltcGxlbWVudHNJbnRlcmZhY2UoY29uc3QgbnNJSUQmIGFJSUQsIFBSQm9vbCog
YVJlc3VsdCk9MDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBbm9ueW1vdXNOb2Rlcyhuc0lET01O
b2RlTGlzdCoqIGFSZXN1bHQpPTA7CgogIHZpcnR1YWwgbnNyZXN1bHQgU2hvdWxkQnVpbGRDaGls
ZEZyYW1lcyhQUkJvb2wqIGFSZXN1bHQpPTA7Cn07CgpleHRlcm4gbnNyZXN1bHQKTlNfTmV3WEJM
QmluZGluZyhuc0lYQkxQcm90b3R5cGVCaW5kaW5nKiBhUHJvdG9CaW5kaW5nLCBuc0lYQkxCaW5k
aW5nKiogYVJlc3VsdCk7CiMgMTU3ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvY29udGVudC9uc0lCaW5kaW5nTWFuYWdlci5oIiAxCiMgNTMgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSUJpbmRpbmdNYW5hZ2VyLmgiCmNsYXNzIG5zSUNv
bnRlbnQ7CmNsYXNzIG5zSVhCTEJpbmRpbmc7CmNsYXNzIG5zSVhCTEJpbmRpbmdBdHRhY2hlZEhh
bmRsZXI7CmNsYXNzIG5zSVhCTERvY3VtZW50SW5mbzsKY2xhc3MgbnNJQXRvbTsKY2xhc3MgbnNJ
U3RyZWFtTGlzdGVuZXI7CmNsYXNzIG5zSVhQQ29ubmVjdFdyYXBwZWRKUzsKY2xhc3MgbnNJRE9N
Tm9kZUxpc3Q7CgoKCgoKY2xhc3MgbnNJQmluZGluZ01hbmFnZXIgOiBwdWJsaWMgbnNJU3VwcG9y
dHMKewpwdWJsaWM6CiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0
IG5zSUlEIGlpZCA9IHsgMHg1NWQ3MGZlMCwgMHhjOGU1LCAweDExZDMsIHsgMHg5NywgMHhmYiwg
MHgwLCAweDQwLCAweDUsIDB4NTMsIDB4ZWUsIDB4ZjAgfSB9OyByZXR1cm4gaWlkO30KCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRCaW5kaW5nKG5zSUNvbnRlbnQqIGFDb250ZW50LCBuc0lYQkxCaW5k
aW5nKiogYVJlc3VsdCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QmluZGluZyhuc0lDb250
ZW50KiBhQ29udGVudCwgbnNJWEJMQmluZGluZyogYUJpbmRpbmcpID0gMDsKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRJbnNlcnRpb25QYXJlbnQobnNJQ29udGVudCogYUNvbnRlbnQsIG5zSUNvbnRl
bnQqKiBhUmVzdWx0KT0wOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0SW5zZXJ0aW9uUGFyZW50KG5z
SUNvbnRlbnQqIGFDb250ZW50LCBuc0lDb250ZW50KiBhUmVzdWx0KT0wOwoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldFdyYXBwZWRKUyhuc0lDb250ZW50KiBhQ29udGVudCwgbnNJWFBDb25uZWN0V3Jh
cHBlZEpTKiogYVJlc3VsdCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0V3JhcHBlZEpTKG5z
SUNvbnRlbnQqIGFDb250ZW50LCBuc0lYUENvbm5lY3RXcmFwcGVkSlMqIGFSZXN1bHQpID0gMDsK
IyA5NSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJQmluZGluZ01hbmFnZXIuaCIK
ICB2aXJ0dWFsIG5zcmVzdWx0IENoYW5nZURvY3VtZW50Rm9yKG5zSUNvbnRlbnQqIGFDb250ZW50
LCBuc0lEb2N1bWVudCogYU9sZERvY3VtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnNJRG9jdW1lbnQqIGFOZXdEb2N1bWVudCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBS
ZXNvbHZlVGFnKG5zSUNvbnRlbnQqIGFDb250ZW50LCBQUkludDMyKiBhTmFtZVNwYWNlSUQsIG5z
SUF0b20qKiBhUmVzdWx0KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbnRlbnRM
aXN0Rm9yKG5zSUNvbnRlbnQqIGFDb250ZW50LCBuc0lET01Ob2RlTGlzdCoqIGFSZXN1bHQpID0g
MDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDb250ZW50TGlzdEZvcihuc0lDb250ZW50KiBh
Q29udGVudCwgbnNJU3VwcG9ydHNBcnJheSogYUxpc3QpPTA7CgoKCgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEhhc0NvbnRlbnRMaXN0Rm9yKG5zSUNvbnRlbnQqIGFDb250ZW50LCBQUkJvb2wqIGFSZXN1
bHQpID0gMDsKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBbm9ueW1vdXNOb2Rlc0Zvcihuc0lD
b250ZW50KiBhQ29udGVudCwgbnNJRE9NTm9kZUxpc3QqKiBhUmVzdWx0KSA9IDA7CgoKCgogIHZp
cnR1YWwgbnNyZXN1bHQgU2V0QW5vbnltb3VzTm9kZXNGb3IobnNJQ29udGVudCogYUNvbnRlbnQs
IG5zSVN1cHBvcnRzQXJyYXkqIGFMaXN0KSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0WEJMQ2hpbGROb2Rlc0Zvcihuc0lDb250ZW50KiBhQ29udGVudCwgbnNJRE9NTm9kZUxpc3Qq
KiBhUmVzdWx0KSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SW5zZXJ0aW9uUG9p
bnQobnNJQ29udGVudCogYVBhcmVudCwgbnNJQ29udGVudCogYUNoaWxkLCBuc0lDb250ZW50Kiog
YVJlc3VsdCwgUFJVaW50MzIqIGFJbmRleCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0U2luZ2xlSW5zZXJ0aW9uUG9pbnQobnNJQ29udGVudCogYVBhcmVudCwgbnNJQ29udGVudCoq
IGFSZXN1bHQsIFBSVWludDMyKiBhSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQUkJvb2wqIGFNdWx0aXBsZUluc2VydGlvblBvaW50cykgPSAwOwoKICB2aXJ0dWFs
IG5zcmVzdWx0IEFkZExheWVyZWRCaW5kaW5nKG5zSUNvbnRlbnQqIGFDb250ZW50LCBjb25zdCBu
c0FTdHJpbmcmIGFVUkwpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFJlbW92ZUxheWVyZWRCaW5k
aW5nKG5zSUNvbnRlbnQqIGFDb250ZW50LCBjb25zdCBuc0FTdHJpbmcmIGFVUkwpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IExvYWRCaW5kaW5nRG9jdW1lbnQobnNJRG9jdW1lbnQqIGFEb2N1bWVu
dCwgY29uc3QgbnNBU3RyaW5nJiBhVVJMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuc0lEb2N1bWVudCoqIGFSZXN1bHQpID0gMDsKCiAgdmlydHVhbCBuc3Jlc3VsdCBBZGRUb0F0
dGFjaGVkUXVldWUobnNJWEJMQmluZGluZyogYUJpbmRpbmcpPTA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBBZGRIYW5kbGVyVG9BdHRhY2hlZFF1ZXVlKG5zSVhCTEJpbmRpbmdBdHRhY2hlZEhhbmRsZXIq
IGFIYW5kbGVyKT0wOwogIHZpcnR1YWwgbnNyZXN1bHQgQ2xlYXJBdHRhY2hlZFF1ZXVlKCk9MDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFByb2Nlc3NBdHRhY2hlZFF1ZXVlKCk9MDsKCiAgdmlydHVhbCBu
c3Jlc3VsdCBFeGVjdXRlRGV0YWNoZWRIYW5kbGVycygpPTA7CgogIHZpcnR1YWwgbnNyZXN1bHQg
UHV0WEJMRG9jdW1lbnRJbmZvKG5zSVhCTERvY3VtZW50SW5mbyogYURvY3VtZW50SW5mbyk9MDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFJlbW92ZVhCTERvY3VtZW50SW5mbyhuc0lYQkxEb2N1bWVudElu
Zm8qIGFEb2N1bWVudEluZm8pPTA7CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRYQkxEb2N1bWVudElu
Zm8oY29uc3QgbnNDU3RyaW5nJiBhVVJMLCBuc0lYQkxEb2N1bWVudEluZm8qKiBhUmVzdWx0KT0w
OwoKICB2aXJ0dWFsIG5zcmVzdWx0IFB1dExvYWRpbmdEb2NMaXN0ZW5lcihjb25zdCBuc0NTdHJp
bmcmIGFVUkwsIG5zSVN0cmVhbUxpc3RlbmVyKiBhTGlzdGVuZXIpID0gMDsKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldExvYWRpbmdEb2NMaXN0ZW5lcihjb25zdCBuc0NTdHJpbmcmIGFVUkwsIG5zSVN0
cmVhbUxpc3RlbmVyKiogYVJlc3VsdCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgUmVtb3ZlTG9h
ZGluZ0RvY0xpc3RlbmVyKGNvbnN0IG5zQ1N0cmluZyYgYVVSTCk9MDsKCiAgdmlydHVhbCBuc3Jl
c3VsdCBJbmhlcml0c1N0eWxlKG5zSUNvbnRlbnQqIGFDb250ZW50LCBQUkJvb2wqIGFSZXN1bHQp
ID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IEZsdXNoU2tpbkJpbmRpbmdzKCkgPSAwOwoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldEJpbmRpbmdJbXBsZW1lbnRhdGlvbihuc0lDb250ZW50KiBhQ29udGVu
dCwgY29uc3QgbnNJSUQmIGFJSUQsIHZvaWQqKiBhUmVzdWx0KT0wOwoKICB2aXJ0dWFsIG5zcmVz
dWx0IFNob3VsZEJ1aWxkQ2hpbGRGcmFtZXMobnNJQ29udGVudCogYUNvbnRlbnQsIFBSQm9vbCog
YVJlc3VsdCkgPSAwOwp9OwojIDE1OCAibnNET01DbGFzc0luZm8uY3BwIiAyCgoKIyAxICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVZpZXdDU1MuaCIgMQojIDEwICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvZG9tL25zSURPTVZpZXdDU1MuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvZG9tL25zSURPTUFic3RyYWN0Vmlldy5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9kb20vbnNJRE9NQWJzdHJhY3RWaWV3LmgiCmNsYXNzIG5zSURPTUFic3RyYWN0VmlldyA6IHB1
YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlE
KCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhmNTFlYmFkZSwgMHg4YjFhLCAweDExZDMs
IHsgMHhhYSwgMHhlNywgMHgwMCwgMHgxMCwgMHg4MywgMHgwMSwgMHgyMywgMHhiNCB9fTsgcmV0
dXJuIGlpZDt9CiMgNDAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NQWJzdHJhY3RW
aWV3LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREb2N1bWVudChuc0lET01Eb2N1bWVudFZpZXcg
KiAqYURvY3VtZW50KSA9IDA7Cgp9OwojIDExICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25z
SURPTVZpZXdDU1MuaCIgMgojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVZp
ZXdDU1MuaCIKY2xhc3MgbnNJRE9NVmlld0NTUyA6IHB1YmxpYyBuc0lET01BYnN0cmFjdFZpZXcg
ewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3Qg
bnNJSUQgaWlkID0gezB4MGI5MzQxZjMsIDB4OTVkNCwgMHg0ZmE0LCB7IDB4YWQsIDB4Y2QsIDB4
ZTEsIDB4MTksIDB4ZTAsIDB4ZGIsIDB4MjgsIDB4ODkgfX07IHJldHVybiBpaWQ7fQoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRDb21wdXRlZFN0eWxlKG5zSURPTUVsZW1lbnQgKmVsdCwgY29uc3Qg
bnNBU3RyaW5nICYgcHNldWRvRWx0LCBuc0lET01DU1NTdHlsZURlY2xhcmF0aW9uICoqX3JldHZh
bCkgPSAwOwoKfTsKIyAxNjEgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgoKCiMgMSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2RvbS9uc0lTY3JpcHRHbG9iYWxPYmplY3QuaCIgMQojIDQ1ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvZG9tL25zSVNjcmlwdEdsb2JhbE9iamVjdC5oIgpjbGFzcyBuc0lTY3Jp
cHRDb250ZXh0OwpjbGFzcyBuc0lET01Eb2N1bWVudDsKY2xhc3MgbnNJRE9NRXZlbnQ7CmNsYXNz
IG5zSVByZXNDb250ZXh0OwpjbGFzcyBuc0lEb2NTaGVsbDsKY2xhc3MgbnNJRE9NV2luZG93SW50
ZXJuYWw7CmNsYXNzIG5zSVNjcmlwdEdsb2JhbE9iamVjdE93bmVyOwpzdHJ1Y3QgSlNPYmplY3Q7
CiMgNjMgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJU2NyaXB0R2xvYmFsT2JqZWN0Lmgi
CmNsYXNzIG5zSVNjcmlwdEdsb2JhbE9iamVjdCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CnB1Ymxp
YzoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlk
ID0geyAweDJiMTZmYzgwLCAweGZhNDEsIDB4MTFkMSwgeyAweDliLCAweGMzLCAweDAwLCAweDYw
LCAweDA4LCAweDhjLCAweGE2LCAweGIzfSB9OyByZXR1cm4gaWlkO30KCiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXRDb250ZXh0KG5zSVNjcmlwdENvbnRleHQgKmFDb250ZXh0KSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRDb250ZXh0KG5zSVNjcmlwdENvbnRleHQgKiphQ29udGV4dCkgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0TmV3RG9jdW1lbnQobnNJRE9NRG9jdW1lbnQgKmFEb2N1bWVu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCBhUmVtb3ZlRXZlbnRM
aXN0ZW5lcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUkJvb2wgYUNsZWFy
U2NvcGUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldERvY1NoZWxsKG5zSURvY1NoZWxsICph
RG9jU2hlbGwpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERvY1NoZWxsKG5zSURvY1NoZWxs
ICoqYURvY1NoZWxsKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRPcGVuZXJXaW5kb3cobnNJ
RE9NV2luZG93SW50ZXJuYWwgKmFPcGVuZXIpPTA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQg
U2V0R2xvYmFsT2JqZWN0T3duZXIobnNJU2NyaXB0R2xvYmFsT2JqZWN0T3duZXIqIGFPd25lcikg
PSAwOwoKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEdsb2JhbE9iamVjdE93bmVyKG5zSVNj
cmlwdEdsb2JhbE9iamVjdE93bmVyKiogYU93bmVyKSA9IDA7CgogIHZpcnR1YWwgbnNyZXN1bHQg
SGFuZGxlRE9NRXZlbnQobnNJUHJlc0NvbnRleHQqIGFQcmVzQ29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5zRXZlbnQqIGFFdmVudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5zSURPTUV2ZW50KiogYURPTUV2ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
UFJVaW50MzIgYUZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNFdmVudFN0YXR1
cyogYUV2ZW50U3RhdHVzKT0wOwoKICB2aXJ0dWFsIEpTT2JqZWN0ICogR2V0R2xvYmFsSlNPYmpl
Y3QoKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IE9uRmluYWxpemUoSlNPYmplY3QgKmFK
U09iamVjdCkgPSAwOwoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNjcmlwdHNFbmFibGVkKFBS
Qm9vbCBhRW5hYmxlZCwgUFJCb29sIGFGaXJlVGltZW91dHMpID0gMDsKfTsKIyAxNjQgIm5zRE9N
Q2xhc3NJbmZvLmNwcCIgMgoKCgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9N
TmF2aWdhdG9yLmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OYXZp
Z2F0b3IuaCIKY2xhc3MgbnNJRE9NTmF2aWdhdG9yIDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1
YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlE
IGlpZCA9IHsweGE2Y2Y5MDZlLCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAw
eDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0QXBwQ29kZU5hbWUobnNBU3RyaW5nICYgYUFwcENvZGVOYW1lKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFwcE5hbWUobnNBU3RyaW5nICYgYUFwcE5hbWUpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QXBwVmVyc2lvbihuc0FTdHJpbmcgJiBhQXBwVmVyc2lv
bikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMYW5ndWFnZShuc0FTdHJpbmcgJiBhTGFu
Z3VhZ2UpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TWltZVR5cGVzKG5zSURPTU1pbWVU
eXBlQXJyYXkgKiAqYU1pbWVUeXBlcykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQbGF0
Zm9ybShuc0FTdHJpbmcgJiBhUGxhdGZvcm0pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
T3NjcHUobnNBU3RyaW5nICYgYU9zY3B1KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFZl
bmRvcihuc0FTdHJpbmcgJiBhVmVuZG9yKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFZl
bmRvclN1Yihuc0FTdHJpbmcgJiBhVmVuZG9yU3ViKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldFByb2R1Y3QobnNBU3RyaW5nICYgYVByb2R1Y3QpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0UHJvZHVjdFN1Yihuc0FTdHJpbmcgJiBhUHJvZHVjdFN1YikgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRQbHVnaW5zKG5zSURPTVBsdWdpbkFycmF5ICogKmFQbHVnaW5zKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNlY3VyaXR5UG9saWN5KG5zQVN0cmluZyAmIGFTZWN1
cml0eVBvbGljeSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRVc2VyQWdlbnQobnNBU3Ry
aW5nICYgYVVzZXJBZ2VudCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb29raWVFbmFi
bGVkKFBSQm9vbCAqYUNvb2tpZUVuYWJsZWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSmF2
YUVuYWJsZWQoUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFRhaW50
RW5hYmxlZChQUkJvb2wgKl9yZXR2YWwpID0gMDsKCn07CiMgMjg0ICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvZG9tL25zSURPTU5hdmlnYXRvci5oIgpjbGFzcyBuc0lET01KU05hdmlnYXRvciA6IHB1
YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlE
KCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHg0YjRmODMxNiwgMHgxZGQyLCAweDExYjIs
IHsgMHhiMiwgMHg2NSwgMHg5YSwgMHg4NSwgMHg3MywgMHg3NiwgMHhkMSwgMHg1OSB9fTsgcmV0
dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFByZWZlcmVuY2Uodm9pZCkgPSAwOwoKfTsK
IyAxNjggIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9k
b20vbnNJRE9NQmFyUHJvcC5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJ
RE9NQmFyUHJvcC5oIgpjbGFzcyBuc0lET01CYXJQcm9wIDogcHVibGljIG5zSVN1cHBvcnRzIHsK
IHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5z
SUlEIGlpZCA9IHsweDllYjJjMTUwLCAweDFkNTYsIDB4MTFkMywgeyAweDgyLCAweDIxLCAweDAw
LCAweDYwLCAweDA4LCAweDNhLCAweDBiLCAweGNmIH19OyByZXR1cm4gaWlkO30KIyAzOCAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01CYXJQcm9wLmgiCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRWaXNpYmxlKFBSQm9vbCAqYVZpc2libGUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dFZpc2libGUoUFJCb29sIGFWaXNpYmxlKSA9IDA7Cgp9OwojIDE2OSAibnNET01DbGFzc0luZm8u
Y3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01TY3JlZW4uaCIgMQoj
IDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVNjcmVlbi5oIgpjbGFzcyBuc0lE
T01TY3JlZW4gOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3Qg
bnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4Nzc5NDc5NjAsIDB4
YjRhZiwgMHgxMWQyLCB7IDB4YmQsIDB4OTMsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZTMs
IDB4ZjQgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRUb3AoUFJJbnQz
MiAqYVRvcCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMZWZ0KFBSSW50MzIgKmFMZWZ0
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFdpZHRoKFBSSW50MzIgKmFXaWR0aCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRIZWlnaHQoUFJJbnQzMiAqYUhlaWdodCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQaXhlbERlcHRoKFBSSW50MzIgKmFQaXhlbERlcHRoKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbG9yRGVwdGgoUFJJbnQzMiAqYUNvbG9yRGVw
dGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QXZhaWxXaWR0aChQUkludDMyICphQXZh
aWxXaWR0aCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBdmFpbEhlaWdodChQUkludDMy
ICphQXZhaWxIZWlnaHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QXZhaWxMZWZ0KFBS
SW50MzIgKmFBdmFpbExlZnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QXZhaWxUb3Ao
UFJJbnQzMiAqYUF2YWlsVG9wKSA9IDA7Cgp9OwojIDE3MCAibnNET01DbGFzc0luZm8uY3BwIiAy
CiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01Eb2N1bWVudFR5cGUuaCIgMQoj
IDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTURvY3VtZW50VHlwZS5oIgpjbGFz
cyBuc0lET01Eb2N1bWVudFR5cGUgOiBwdWJsaWMgbnNJRE9NTm9kZSB7CiBwdWJsaWM6CgogIHN0
YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhh
NmNmOTA3NywgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1Ziwg
MHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CiMgNDIgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9kb20vbnNJRE9NRG9jdW1lbnRUeXBlLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROYW1l
KG5zQVN0cmluZyAmIGFOYW1lKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEVudGl0aWVz
KG5zSURPTU5hbWVkTm9kZU1hcCAqICphRW50aXRpZXMpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0Tm90YXRpb25zKG5zSURPTU5hbWVkTm9kZU1hcCAqICphTm90YXRpb25zKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldFB1YmxpY0lkKG5zQVN0cmluZyAmIGFQdWJsaWNJZCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTeXN0ZW1JZChuc0FTdHJpbmcgJiBhU3lzdGVtSWQp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SW50ZXJuYWxTdWJzZXQobnNBU3RyaW5nICYg
YUludGVybmFsU3Vic2V0KSA9IDA7Cgp9OwojIDE3MSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMg
MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01ET01JbXBsZW1lbnRhdGlvbi5oIiAx
CiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NRE9NSW1wbGVtZW50YXRpb24u
aCIKY2xhc3MgbnNJRE9NRE9NSW1wbGVtZW50YXRpb24gOiBwdWJsaWMgbnNJU3VwcG9ydHMgewog
cHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJ
SUQgaWlkID0gezB4YTZjZjkwNzQsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAs
IDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQojIDQxICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTURPTUltcGxlbWVudGF0aW9uLmgiCiAgdmlydHVh
bCBuc3Jlc3VsdCBIYXNGZWF0dXJlKGNvbnN0IG5zQVN0cmluZyAmIGZlYXR1cmUsIGNvbnN0IG5z
QVN0cmluZyAmIHZlcnNpb24sIFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBDcmVhdGVEb2N1bWVudFR5cGUoY29uc3QgbnNBU3RyaW5nICYgcXVhbGlmaWVkTmFtZSwg
Y29uc3QgbnNBU3RyaW5nICYgcHVibGljSWQsIGNvbnN0IG5zQVN0cmluZyAmIHN5c3RlbUlkLCBu
c0lET01Eb2N1bWVudFR5cGUgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENy
ZWF0ZURvY3VtZW50KGNvbnN0IG5zQVN0cmluZyAmIG5hbWVzcGFjZVVSSSwgY29uc3QgbnNBU3Ry
aW5nICYgcXVhbGlmaWVkTmFtZSwgbnNJRE9NRG9jdW1lbnRUeXBlICpkb2N0eXBlLCBuc0lET01E
b2N1bWVudCAqKl9yZXR2YWwpID0gMDsKCn07CiMgMTcyICJuc0RPTUNsYXNzSW5mby5jcHAiIDIK
IyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTURvY3VtZW50RnJhZ21lbnQuaCIg
MQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTURvY3VtZW50RnJhZ21lbnQu
aCIKY2xhc3MgbnNJRE9NRG9jdW1lbnRGcmFnbWVudCA6IHB1YmxpYyBuc0lET01Ob2RlIHsKIHB1
YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlE
IGlpZCA9IHsweGE2Y2Y5MDc2LCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAw
eDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KCn07CiMgMTczICJu
c0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURP
TURvY3VtZW50RXZlbnQuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURP
TURvY3VtZW50RXZlbnQuaCIKY2xhc3MgbnNJRE9NRG9jdW1lbnRFdmVudCA6IHB1YmxpYyBuc0lT
dXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRp
YyBjb25zdCBuc0lJRCBpaWQgPSB7MHg0NmI5MWQ2NiwgMHgyOGUyLCAweDExZDQsIHsgMHhhYiwg
MHgxZSwgMHgwMCwgMHgxMCwgMHg4MywgMHgwMSwgMHgyMywgMHhiNCB9fTsgcmV0dXJuIGlpZDt9
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENyZWF0ZUV2ZW50KGNvbnN0IG5zQVN0cmluZyAmIGV2ZW50
VHlwZSwgbnNJRE9NRXZlbnQgKipfcmV0dmFsKSA9IDA7Cgp9OwojIDE3NCAibnNET01DbGFzc0lu
Zm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01BdHRyLmgiIDEK
IyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01BdHRyLmgiCmNsYXNzIG5zSURP
TUF0dHIgOiBwdWJsaWMgbnNJRE9NTm9kZSB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJ
RCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTA3MCwgMHgxNWIz
LCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgz
MiB9fTsgcmV0dXJuIGlpZDt9CiMgNDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9N
QXR0ci5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TmFtZShuc0FTdHJpbmcgJiBhTmFtZSkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTcGVjaWZpZWQoUFJCb29sICphU3BlY2lmaWVkKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFZhbHVlKG5zQVN0cmluZyAmIGFWYWx1ZSkgPSAw
OwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VmFsdWUoY29uc3QgbnNBU3RyaW5nICYgYVZhbHVlKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE93bmVyRWxlbWVudChuc0lET01FbGVtZW50ICog
KmFPd25lckVsZW1lbnQpID0gMDsKCn07CiMgMTc1ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAx
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVRleHQuaCIgMQojIDEwICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVRleHQuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvZG9tL25zSURPTUNoYXJhY3RlckRhdGEuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvZG9tL25zSURPTUNoYXJhY3RlckRhdGEuaCIKY2xhc3MgbnNJRE9NQ2hhcmFjdGVyRGF0YSA6
IHB1YmxpYyBuc0lET01Ob2RlIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJ
SUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MDcyLCAweDE1YjMsIDB4MTFk
MiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyBy
ZXR1cm4gaWlkO30KIyA0MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01DaGFyYWN0
ZXJEYXRhLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREYXRhKG5zQVN0cmluZyAmIGFEYXRhKSA9
IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXREYXRhKGNvbnN0IG5zQVN0cmluZyAmIGFEYXRhKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldExlbmd0aChQUlVpbnQzMiAqYUxlbmd0aCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTdWJzdHJpbmdEYXRhKFBSVWludDMyIG9mZnNldCwgUFJV
aW50MzIgY291bnQsIG5zQVN0cmluZyAmIF9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgQXBwZW5kRGF0YShjb25zdCBuc0FTdHJpbmcgJiBhcmcpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgSW5zZXJ0RGF0YShQUlVpbnQzMiBvZmZzZXQsIGNvbnN0IG5zQVN0cmluZyAmIGFyZykg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBEZWxldGVEYXRhKFBSVWludDMyIG9mZnNldCwgUFJV
aW50MzIgY291bnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVwbGFjZURhdGEoUFJVaW50
MzIgb2Zmc2V0LCBQUlVpbnQzMiBjb3VudCwgY29uc3QgbnNBU3RyaW5nICYgYXJnKSA9IDA7Cgp9
OwojIDExICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVRleHQuaCIgMgojIDI1ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVRleHQuaCIKY2xhc3MgbnNJRE9NVGV4dCA6
IHB1YmxpYyBuc0lET01DaGFyYWN0ZXJEYXRhIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5z
SUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MDgyLCAweDE1
YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAw
eDMyIH19OyByZXR1cm4gaWlkO30KIyA0MCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lE
T01UZXh0LmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBTcGxpdFRleHQoUFJVaW50MzIgb2Zmc2V0LCBu
c0lET01UZXh0ICoqX3JldHZhbCkgPSAwOwoKfTsKIyAxNzYgIm5zRE9NQ2xhc3NJbmZvLmNwcCIg
MgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NQ29tbWVudC5oIiAxCiMgMjUg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NQ29tbWVudC5oIgpjbGFzcyBuc0lET01D
b21tZW50IDogcHVibGljIG5zSURPTUNoYXJhY3RlckRhdGEgewogcHVibGljOgoKICBzdGF0aWMg
Y29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkw
NzMsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEs
IDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKfTsKIyAxNzcgIm5zRE9NQ2xhc3NJbmZvLmNw
cCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NQ0RBVEFTZWN0aW9uLmgi
IDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01DREFUQVNlY3Rpb24uaCIK
Y2xhc3MgbnNJRE9NQ0RBVEFTZWN0aW9uIDogcHVibGljIG5zSURPTVRleHQgewogcHVibGljOgoK
ICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0g
ezB4YTZjZjkwNzEsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4
NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKfTsKIyAxNzggIm5zRE9NQ2xh
c3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lE
T01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIKY2xhc3MgbnNJRE9NUHJvY2Vzc2luZ0luc3RydWN0
aW9uIDogcHVibGljIG5zSURPTU5vZGUgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQm
IEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwN2YsIDB4MTViMywg
MHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIg
fX07IHJldHVybiBpaWQ7fQojIDQxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVBy
b2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VGFyZ2V0KG5zQVN0
cmluZyAmIGFUYXJnZXQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RGF0YShuc0FTdHJp
bmcgJiBhRGF0YSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RGF0YShjb25zdCBuc0FTdHJp
bmcgJiBhRGF0YSkgPSAwOwoKfTsKIyAxNzkgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NRW50aXR5LmgiIDEKIyAyNSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2RvbS9uc0lET01FbnRpdHkuaCIKY2xhc3MgbnNJRE9NRW50aXR5IDogcHVi
bGljIG5zSURPTU5vZGUgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgp
IHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwNzksIDB4MTViMywgMHgxMWQyLCB7
IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVy
biBpaWQ7fQojIDQwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUVudGl0eS5oIgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0UHVibGljSWQobnNBU3RyaW5nICYgYVB1YmxpY0lkKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFN5c3RlbUlkKG5zQVN0cmluZyAmIGFTeXN0ZW1JZCkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROb3RhdGlvbk5hbWUobnNBU3RyaW5nICYgYU5v
dGF0aW9uTmFtZSkgPSAwOwoKfTsKIyAxODAgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NRW50aXR5UmVmZXJlbmNlLmgiIDEKIyAyNSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01FbnRpdHlSZWZlcmVuY2UuaCIKY2xhc3Mg
bnNJRE9NRW50aXR5UmVmZXJlbmNlIDogcHVibGljIG5zSURPTU5vZGUgewogcHVibGljOgoKICBz
dGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4
YTZjZjkwN2EsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYs
IDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKfTsKIyAxODEgIm5zRE9NQ2xhc3NJ
bmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NTm90YXRpb24u
aCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTU5vdGF0aW9uLmgiCmNs
YXNzIG5zSURPTU5vdGF0aW9uIDogcHVibGljIG5zSURPTU5vZGUgewogcHVibGljOgoKICBzdGF0
aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZj
ZjkwN2UsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4
OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQojIDQxICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvZG9tL25zSURPTU5vdGF0aW9uLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQdWJsaWNJZChu
c0FTdHJpbmcgJiBhUHVibGljSWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U3lzdGVt
SWQobnNBU3RyaW5nICYgYVN5c3RlbUlkKSA9IDA7Cgp9OwojIDE4MiAibnNET01DbGFzc0luZm8u
Y3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01Nb3VzZUV2ZW50Lmgi
IDEKIyAzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01Nb3VzZUV2ZW50LmgiCmNs
YXNzIG5zSURPTU1vdXNlRXZlbnQgOiBwdWJsaWMgbnNJRE9NVUlFdmVudCB7CiBwdWJsaWM6Cgog
IHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7
MHhmZjc1MWVkYywgMHg4YjAyLCAweGFhZTcsIHsgMHgwMCwgMHgxMCwgMHg4MywgMHgwMSwgMHg4
MywgMHg4YSwgMHgzMSwgMHgyMyB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldFNjcmVlblgoUFJJbnQzMiAqYVNjcmVlblgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0U2NyZWVuWShQUkludDMyICphU2NyZWVuWSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRDbGllbnRYKFBSSW50MzIgKmFDbGllbnRYKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dENsaWVudFkoUFJJbnQzMiAqYUNsaWVudFkpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
Q3RybEtleShQUkJvb2wgKmFDdHJsS2V5KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNo
aWZ0S2V5KFBSQm9vbCAqYVNoaWZ0S2V5KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFs
dEtleShQUkJvb2wgKmFBbHRLZXkpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TWV0YUtl
eShQUkJvb2wgKmFNZXRhS2V5KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEJ1dHRvbihQ
UlVpbnQxNiAqYUJ1dHRvbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRSZWxhdGVkVGFy
Z2V0KG5zSURPTUV2ZW50VGFyZ2V0ICogKmFSZWxhdGVkVGFyZ2V0KSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEluaXRNb3VzZUV2ZW50KGNvbnN0IG5zQVN0cmluZyAmIHR5cGVBcmcsIFBSQm9v
bCBjYW5CdWJibGVBcmcsIFBSQm9vbCBjYW5jZWxhYmxlQXJnLCBuc0lET01BYnN0cmFjdFZpZXcg
KnZpZXdBcmcsIFBSSW50MzIgZGV0YWlsQXJnLCBQUkludDMyIHNjcmVlblhBcmcsIFBSSW50MzIg
c2NyZWVuWUFyZywgUFJJbnQzMiBjbGllbnRYQXJnLCBQUkludDMyIGNsaWVudFlBcmcsIFBSQm9v
bCBjdHJsS2V5QXJnLCBQUkJvb2wgYWx0S2V5QXJnLCBQUkJvb2wgc2hpZnRLZXlBcmcsIFBSQm9v
bCBtZXRhS2V5QXJnLCBQUlVpbnQxNiBidXR0b25BcmcsIG5zSURPTUV2ZW50VGFyZ2V0ICpyZWxh
dGVkVGFyZ2V0QXJnKSA9IDA7Cgp9OwojIDE4MyAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01NdXRhdGlvbkV2ZW50LmgiIDEKIyAyNSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01NdXRhdGlvbkV2ZW50LmgiCmNsYXNzIG5z
SURPTU11dGF0aW9uRXZlbnQgOiBwdWJsaWMgbnNJRE9NRXZlbnQgewogcHVibGljOgoKICBzdGF0
aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4OGU0
NDBkODYsIDB4ODg2YSwgMHg0ZTc2LCB7IDB4OWUsIDB4NTksIDB4YzEsIDB4M2IsIDB4OTMsIDB4
OWMsIDB4OWEsIDB4NGIgfX07IHJldHVybiBpaWQ7fQoKICBlbnVtIHsgTU9ESUZJQ0FUSU9OID0g
MVUgfTsKCiAgZW51bSB7IEFERElUSU9OID0gMlUgfTsKCiAgZW51bSB7IFJFTU9WQUwgPSAzVSB9
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRSZWxhdGVkTm9kZShuc0lET01Ob2RlICogKmFSZWxh
dGVkTm9kZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQcmV2VmFsdWUobnNBU3RyaW5n
ICYgYVByZXZWYWx1ZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROZXdWYWx1ZShuc0FT
dHJpbmcgJiBhTmV3VmFsdWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QXR0ck5hbWUo
bnNBU3RyaW5nICYgYUF0dHJOYW1lKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEF0dHJD
aGFuZ2UoUFJVaW50MTYgKmFBdHRyQ2hhbmdlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IElu
aXRNdXRhdGlvbkV2ZW50KGNvbnN0IG5zQVN0cmluZyAmIHR5cGVBcmcsIFBSQm9vbCBjYW5CdWJi
bGVBcmcsIFBSQm9vbCBjYW5jZWxhYmxlQXJnLCBuc0lET01Ob2RlICpyZWxhdGVkTm9kZUFyZywg
Y29uc3QgbnNBU3RyaW5nICYgcHJldlZhbHVlQXJnLCBjb25zdCBuc0FTdHJpbmcgJiBuZXdWYWx1
ZUFyZywgY29uc3QgbnNBU3RyaW5nICYgYXR0ck5hbWVBcmcsIFBSVWludDE2IGF0dHJDaGFuZ2VB
cmcpID0gMDsKCn07CiMgMTg0ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvZG9tL25zSURPTURvY3VtZW50U3R5bGUuaCIgMQojIDM0ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvZG9tL25zSURPTURvY3VtZW50U3R5bGUuaCIKY2xhc3MgbnNJRE9NRG9jdW1l
bnRTdHlsZSA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBu
c0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgzZDlmNDk3MywgMHhk
ZDJlLCAweDQ4ZjUsIHsgMHhiNSwgMHhmNywgMHgyNiwgMHgzNCwgMHhlMCwgMHg5ZSwgMHhhZCwg
MHhkOSB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFN0eWxlU2hlZXRz
KG5zSURPTVN0eWxlU2hlZXRMaXN0ICogKmFTdHlsZVNoZWV0cykgPSAwOwoKfTsKIyAxODUgIm5z
RE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9N
RG9jdW1lbnRSYW5nZS5oIiAxCiMgMzQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9N
RG9jdW1lbnRSYW5nZS5oIgpjbGFzcyBuc0lET01Eb2N1bWVudFJhbmdlIDogcHVibGljIG5zSVN1
cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGlj
IGNvbnN0IG5zSUlEIGlpZCA9IHsweDdiOWJhZGM2LCAweGM5YmMsIDB4NDQ3YSwgeyAweDg2LCAw
eDcwLCAweGRiLCAweGQxLCAweDk1LCAweGFlLCAweGQyLCAweDRiIH19OyByZXR1cm4gaWlkO30K
CgogIHZpcnR1YWwgbnNyZXN1bHQgQ3JlYXRlUmFuZ2UobnNJRE9NUmFuZ2UgKipfcmV0dmFsKSA9
IDA7Cgp9OwojIDE4NiAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2RvbS9uc0lET01Eb2N1bWVudFRyYXZlcnNhbC5oIiAxCiMgMTcgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9kb20vbnNJRE9NRG9jdW1lbnRUcmF2ZXJzYWwuaCIKY2xhc3MgbnNJRE9NTm9k
ZUl0ZXJhdG9yOwoKY2xhc3MgbnNJRE9NTm9kZUZpbHRlcjsKCmNsYXNzIG5zSURPTVRyZWVXYWxr
ZXI7CiMgMzEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NRG9jdW1lbnRUcmF2ZXJz
YWwuaCIKY2xhc3MgbnNJRE9NRG9jdW1lbnRUcmF2ZXJzYWwgOiBwdWJsaWMgbnNJU3VwcG9ydHMg
ewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3Qg
bnNJSUQgaWlkID0gezB4MTNmMjM2YzAsIDB4NDdmOCwgMHgxMWQ1LCB7IDB4YjYsIDB4YTMsIDB4
MDAsIDB4OTAsIDB4MjcsIDB4NDQsIDB4NmUsIDB4ODQgfX07IHJldHVybiBpaWQ7fQoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBDcmVhdGVOb2RlSXRlcmF0b3IobnNJRE9NTm9kZSAqcm9vdCwgUFJVaW50
MzIgd2hhdFRvU2hvdywgbnNJRE9NTm9kZUZpbHRlciAqZmlsdGVyLCBQUkJvb2wgZW50aXR5UmVm
ZXJlbmNlRXhwYW5zaW9uLCBuc0lET01Ob2RlSXRlcmF0b3IgKipfcmV0dmFsKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IENyZWF0ZVRyZWVXYWxrZXIobnNJRE9NTm9kZSAqcm9vdCwgUFJVaW50
MzIgd2hhdFRvU2hvdywgbnNJRE9NTm9kZUZpbHRlciAqZmlsdGVyLCBQUkJvb2wgZW50aXR5UmVm
ZXJlbmNlRXhwYW5zaW9uLCBuc0lET01UcmVlV2Fsa2VyICoqX3JldHZhbCkgPSAwOwoKfTsKIyAx
ODcgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20v
bnNJRE9NRG9jdW1lbnRYQkwuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25z
SURPTURvY3VtZW50WEJMLmgiCmNsYXNzIG5zSURPTURvY3VtZW50WEJMIDogcHVibGljIG5zSVN1
cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGlj
IGNvbnN0IG5zSUlEIGlpZCA9IHsweGM3YzBhZTliLCAweGEwYmEsIDB4NGY0ZSwgeyAweDlmLCAw
eDJjLCAweGMxLCAweDhkLCAweGViLCAweDYyLCAweGVlLCAweDhiIH19OyByZXR1cm4gaWlkO30K
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QW5vbnltb3VzTm9kZXMobnNJRE9NRWxlbWVudCAqZWx0
LCBuc0lET01Ob2RlTGlzdCAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
QW5vbnltb3VzRWxlbWVudEJ5QXR0cmlidXRlKG5zSURPTUVsZW1lbnQgKmVsdCwgY29uc3QgbnNB
U3RyaW5nICYgYXR0ck5hbWUsIGNvbnN0IG5zQVN0cmluZyAmIGF0dHJWYWx1ZSwgbnNJRE9NRWxl
bWVudCAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQWRkQmluZGluZyhuc0lE
T01FbGVtZW50ICplbHQsIGNvbnN0IG5zQVN0cmluZyAmIGJpbmRpbmdVUkwpID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgUmVtb3ZlQmluZGluZyhuc0lET01FbGVtZW50ICplbHQsIGNvbnN0IG5z
QVN0cmluZyAmIGJpbmRpbmdVUkwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QmluZGlu
Z1BhcmVudChuc0lET01Ob2RlICpub2RlLCBuc0lET01FbGVtZW50ICoqX3JldHZhbCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBMb2FkQmluZGluZ0RvY3VtZW50KGNvbnN0IG5zQVN0cmluZyAm
IGRvY3VtZW50VVJMLCBuc0lET01Eb2N1bWVudCAqKl9yZXR2YWwpID0gMDsKCn07CiMgMTg4ICJu
c0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURP
TURvY3VtZW50Vmlldy5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9N
RG9jdW1lbnRWaWV3LmgiCmNsYXNzIG5zSURPTURvY3VtZW50VmlldyA6IHB1YmxpYyBuc0lTdXBw
b3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBj
b25zdCBuc0lJRCBpaWQgPSB7MHgxYWNkYjJiYSwgMHgxZGQyLCAweDExYjIsIHsgMHg5NSwgMHhi
YywgMHg5NSwgMHg0MiwgMHg0OSwgMHg1ZCwgMHgyNSwgMHg2OSB9fTsgcmV0dXJuIGlpZDt9CiMg
NDAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NRG9jdW1lbnRWaWV3LmgiCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXREZWZhdWx0Vmlldyhuc0lET01BYnN0cmFjdFZpZXcgKiAqYURlZmF1
bHRWaWV3KSA9IDA7Cgp9OwojIDE4OSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01FbGVtZW50Q1NTSW5saW5lU3R5bGUuaCIgMQojIDI1
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZS5o
IgpjbGFzcyBuc0lET01FbGVtZW50Q1NTSW5saW5lU3R5bGUgOiBwdWJsaWMgbnNJU3VwcG9ydHMg
ewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3Qg
bnNJSUQgaWlkID0gezB4OTk3MTU4NDUsIDB4OTVmYywgMHg0YTU2LCB7IDB4YWEsIDB4NTMsIDB4
MjEsIDB4NGIsIDB4NjUsIDB4YzIsIDB4NmUsIDB4MjIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRTdHlsZShuc0lET01DU1NTdHlsZURlY2xhcmF0aW9uICogKmFTdHls
ZSkgPSAwOwoKfTsKIyAxOTAgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9kb20vbnNJRE9NTGlua1N0eWxlLmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2RvbS9uc0lET01MaW5rU3R5bGUuaCIKY2xhc3MgbnNJRE9NTGlua1N0eWxlIDogcHVi
bGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQo
KSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDI0ZDg5YTY1LCAweGY1OTgsIDB4NDgxZSwg
eyAweGEyLCAweDk3LCAweDIzLCAweGNjLCAweDAyLCAweDU5LCAweDliLCAweGJkIH19OyByZXR1
cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2hlZXQobnNJRE9NU3R5bGVTaGVldCAq
ICphU2hlZXQpID0gMDsKCn07CiMgMTkxICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxEb2N1bWVudC5oIiAxCiMgMzQgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTERvY3VtZW50LmgiCmNsYXNzIG5zSURPTUhU
TUxEb2N1bWVudCA6IHB1YmxpYyBuc0lET01Eb2N1bWVudCB7CiBwdWJsaWM6CgogIHN0YXRpYyBj
b25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTA4
NCwgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwg
MHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFRpdGxl
KG5zQVN0cmluZyAmIGFUaXRsZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VGl0bGUoY29u
c3QgbnNBU3RyaW5nICYgYVRpdGxlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJlZmVy
cmVyKG5zQVN0cmluZyAmIGFSZWZlcnJlcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRE
b21haW4obnNBU3RyaW5nICYgYURvbWFpbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRV
UkwobnNBU3RyaW5nICYgYVVSTCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRCb2R5KG5z
SURPTUhUTUxFbGVtZW50ICogKmFCb2R5KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRCb2R5
KG5zSURPTUhUTUxFbGVtZW50ICogYUJvZHkpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
SW1hZ2VzKG5zSURPTUhUTUxDb2xsZWN0aW9uICogKmFJbWFnZXMpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0QXBwbGV0cyhuc0lET01IVE1MQ29sbGVjdGlvbiAqICphQXBwbGV0cykgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMaW5rcyhuc0lET01IVE1MQ29sbGVjdGlvbiAqICph
TGlua3MpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Rm9ybXMobnNJRE9NSFRNTENvbGxl
Y3Rpb24gKiAqYUZvcm1zKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFuY2hvcnMobnNJ
RE9NSFRNTENvbGxlY3Rpb24gKiAqYUFuY2hvcnMpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0Q29va2llKG5zQVN0cmluZyAmIGFDb29raWUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dENvb2tpZShjb25zdCBuc0FTdHJpbmcgJiBhQ29va2llKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IE9wZW4odm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDbG9zZSh2b2lkKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFdyaXRlKGNvbnN0IG5zQVN0cmluZyAmIHRleHQpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgV3JpdGVsbihjb25zdCBuc0FTdHJpbmcgJiB0ZXh0KSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEVsZW1lbnRzQnlOYW1lKGNvbnN0IG5zQVN0cmluZyAm
IGVsZW1lbnROYW1lLCBuc0lET01Ob2RlTGlzdCAqKl9yZXR2YWwpID0gMDsKCn07CiMgMTkyICJu
c0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURP
TU5TSFRNTERvY3VtZW50LmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lE
T01OU0hUTUxEb2N1bWVudC5oIgpjbGFzcyBuc0lET01OU0hUTUxEb2N1bWVudCA6IHB1YmxpYyBu
c0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0
YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTBjNSwgMHgxNWIzLCAweDExZDIsIHsgMHg5
MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlp
ZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFdpZHRoKFBSSW50MzIgKmFXaWR0aCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRIZWlnaHQoUFJJbnQzMiAqYUhlaWdodCkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRBbGlua0NvbG9yKG5zQVN0cmluZyAmIGFBbGlua0NvbG9yKSA9
IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRBbGlua0NvbG9yKGNvbnN0IG5zQVN0cmluZyAmIGFB
bGlua0NvbG9yKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldExpbmtDb2xvcihuc0FTdHJp
bmcgJiBhTGlua0NvbG9yKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRMaW5rQ29sb3IoY29u
c3QgbnNBU3RyaW5nICYgYUxpbmtDb2xvcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRW
bGlua0NvbG9yKG5zQVN0cmluZyAmIGFWbGlua0NvbG9yKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRWbGlua0NvbG9yKGNvbnN0IG5zQVN0cmluZyAmIGFWbGlua0NvbG9yKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldEJnQ29sb3IobnNBU3RyaW5nICYgYUJnQ29sb3IpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldEJnQ29sb3IoY29uc3QgbnNBU3RyaW5nICYgYUJnQ29sb3IpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RmdDb2xvcihuc0FTdHJpbmcgJiBhRmdDb2xvcikg
PSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RmdDb2xvcihjb25zdCBuc0FTdHJpbmcgJiBhRmdD
b2xvcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMYXN0TW9kaWZpZWQobnNBU3RyaW5n
ICYgYUxhc3RNb2RpZmllZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREb21haW4obnNB
U3RyaW5nICYgYURvbWFpbikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RG9tYWluKGNvbnN0
IG5zQVN0cmluZyAmIGFEb21haW4pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RW1iZWRz
KG5zSURPTUhUTUxDb2xsZWN0aW9uICogKmFFbWJlZHMpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0U2VsZWN0aW9uKG5zQVN0cmluZyAmIF9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgT3Blbihuc0lET01Eb2N1bWVudCAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgV3JpdGUodm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBXcml0ZWxuKHZvaWQp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ2xlYXIodm9pZCkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBDYXB0dXJlRXZlbnRzKFBSSW50MzIgZXZlbnRGbGFncykgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBSZWxlYXNlRXZlbnRzKFBSSW50MzIgZXZlbnRGbGFncykgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBSb3V0ZUV2ZW50KG5zSURPTUV2ZW50ICpldnQpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0Q29tcGF0TW9kZShuc0FTdHJpbmcgJiBhQ29tcGF0TW9kZSkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQbHVnaW5zKG5zSURPTUhUTUxDb2xsZWN0aW9uICogKmFQ
bHVnaW5zKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERlc2lnbk1vZGUobnNBU3Ry
aW5nICYgYURlc2lnbk1vZGUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldERlc2lnbk1vZGUo
Y29uc3QgbnNBU3RyaW5nICYgYURlc2lnbk1vZGUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
RXhlY0NvbW1hbmQoY29uc3QgbnNBU3RyaW5nICYgY29tbWFuZElELCBQUkJvb2wgZG9TaG93VUks
IGNvbnN0IG5zQVN0cmluZyAmIHZhbHVlLCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgRXhlY0NvbW1hbmRTaG93SGVscChjb25zdCBuc0FTdHJpbmcgJiBjb21tYW5k
SUQsIFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBRdWVyeUNvbW1h
bmRFbmFibGVkKGNvbnN0IG5zQVN0cmluZyAmIGNvbW1hbmRJRCwgUFJCb29sICpfcmV0dmFsKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFF1ZXJ5Q29tbWFuZEluZGV0ZXJtKGNvbnN0IG5zQVN0
cmluZyAmIGNvbW1hbmRJRCwgUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IFF1ZXJ5Q29tbWFuZFN0YXRlKGNvbnN0IG5zQVN0cmluZyAmIGNvbW1hbmRJRCwgUFJCb29s
ICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFF1ZXJ5Q29tbWFuZFN1cHBvcnRl
ZChjb25zdCBuc0FTdHJpbmcgJiBjb21tYW5kSUQsIFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBRdWVyeUNvbW1hbmRUZXh0KGNvbnN0IG5zQVN0cmluZyAmIGNvbW1h
bmRJRCwgbnNBU3RyaW5nICYgX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBRdWVy
eUNvbW1hbmRWYWx1ZShjb25zdCBuc0FTdHJpbmcgJiBjb21tYW5kSUQsIG5zQVN0cmluZyAmIF9y
ZXR2YWwpID0gMDsKCn07CiMgMTkzICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvZG9tL25zSURPTU5TSFRNTEVsZW1lbnQuaCIgMQojIDI1ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvZG9tL25zSURPTU5TSFRNTEVsZW1lbnQuaCIKY2xhc3MgbnNJRE9NTlNI
VE1MRWxlbWVudCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25z
dCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhkYTgzYjJlYywg
MHg4MjY0LCAweDQ0MTAsIHsgMHg4NCwgMHg5NiwgMHhhZCwgMHhhMywgMHhhYywgMHhkMiwgMHhh
ZSwgMHg0MiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE9mZnNldFRv
cChQUkludDMyICphT2Zmc2V0VG9wKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE9mZnNl
dExlZnQoUFJJbnQzMiAqYU9mZnNldExlZnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
T2Zmc2V0V2lkdGgoUFJJbnQzMiAqYU9mZnNldFdpZHRoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldE9mZnNldEhlaWdodChQUkludDMyICphT2Zmc2V0SGVpZ2h0KSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldE9mZnNldFBhcmVudChuc0lET01FbGVtZW50ICogKmFPZmZzZXRQYXJl
bnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SW5uZXJIVE1MKG5zQVN0cmluZyAmIGFJ
bm5lckhUTUwpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldElubmVySFRNTChjb25zdCBuc0FT
dHJpbmcgJiBhSW5uZXJIVE1MKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNjcm9sbFRv
cChQUkludDMyICphU2Nyb2xsVG9wKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRTY3JvbGxU
b3AoUFJJbnQzMiBhU2Nyb2xsVG9wKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNjcm9s
bExlZnQoUFJJbnQzMiAqYVNjcm9sbExlZnQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNj
cm9sbExlZnQoUFJJbnQzMiBhU2Nyb2xsTGVmdCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRTY3JvbGxIZWlnaHQoUFJJbnQzMiAqYVNjcm9sbEhlaWdodCkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRTY3JvbGxXaWR0aChQUkludDMyICphU2Nyb2xsV2lkdGgpID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0Q2xpZW50SGVpZ2h0KFBSSW50MzIgKmFDbGllbnRIZWlnaHQpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q2xpZW50V2lkdGgoUFJJbnQzMiAqYUNsaWVudFdp
ZHRoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNjcm9sbEludG9WaWV3KFBSQm9vbCB0b3Ap
ID0gMDsKCn07CiMgMTk0ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvZG9tL25zSURPTUhUTUxBbmNob3JFbGVtZW50LmgiIDEKIyAzNCAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MQW5jaG9yRWxlbWVudC5oIgpjbGFzcyBuc0lET01I
VE1MQW5jaG9yRWxlbWVudCA6IHB1YmxpYyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6Cgog
IHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7
MHhhNmNmOTBhYSwgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1
ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldEFjY2Vzc0tleShuc0FTdHJpbmcgJiBhQWNjZXNzS2V5KSA9IDA7CiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXRBY2Nlc3NLZXkoY29uc3QgbnNBU3RyaW5nICYgYUFjY2Vzc0tleSkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRDaGFyc2V0KG5zQVN0cmluZyAmIGFDaGFyc2V0KSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXRDaGFyc2V0KGNvbnN0IG5zQVN0cmluZyAmIGFDaGFyc2V0KSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvb3Jkcyhuc0FTdHJpbmcgJiBhQ29vcmRzKSA9
IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDb29yZHMoY29uc3QgbnNBU3RyaW5nICYgYUNvb3Jk
cykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRIcmVmKG5zQVN0cmluZyAmIGFIcmVmKSA9
IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRIcmVmKGNvbnN0IG5zQVN0cmluZyAmIGFIcmVmKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEhyZWZsYW5nKG5zQVN0cmluZyAmIGFIcmVmbGFu
ZykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0SHJlZmxhbmcoY29uc3QgbnNBU3RyaW5nICYg
YUhyZWZsYW5nKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5hbWUobnNBU3RyaW5nICYg
YU5hbWUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE5hbWUoY29uc3QgbnNBU3RyaW5nICYg
YU5hbWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UmVsKG5zQVN0cmluZyAmIGFSZWwp
ID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFJlbChjb25zdCBuc0FTdHJpbmcgJiBhUmVsKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJldihuc0FTdHJpbmcgJiBhUmV2KSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXRSZXYoY29uc3QgbnNBU3RyaW5nICYgYVJldikgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRTaGFwZShuc0FTdHJpbmcgJiBhU2hhcGUpID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldFNoYXBlKGNvbnN0IG5zQVN0cmluZyAmIGFTaGFwZSkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRUYWJJbmRleChQUkludDMyICphVGFiSW5kZXgpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldFRhYkluZGV4KFBSSW50MzIgYVRhYkluZGV4KSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldFRhcmdldChuc0FTdHJpbmcgJiBhVGFyZ2V0KSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXRUYXJnZXQoY29uc3QgbnNBU3RyaW5nICYgYVRhcmdldCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRUeXBlKG5zQVN0cmluZyAmIGFUeXBlKSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXRUeXBlKGNvbnN0IG5zQVN0cmluZyAmIGFUeXBlKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEJsdXIodm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBGb2N1
cyh2b2lkKSA9IDA7Cgp9OwojIDE5NSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU0hUTUxBbmNob3JFbGVtZW50LmgiIDEKIyAyNSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU0hUTUxBbmNob3JFbGVtZW50LmgiCmNs
YXNzIG5zSURPTU5TSFRNTEFuY2hvckVsZW1lbnQgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVi
bGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQg
aWlkID0gezB4YTZjZjkxMWMsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4
ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRQcm90b2NvbChuc0FTdHJpbmcgJiBhUHJvdG9jb2wpID0gMDsKICB2aXJ0dWFs
IG5zcmVzdWx0IFNldFByb3RvY29sKGNvbnN0IG5zQVN0cmluZyAmIGFQcm90b2NvbCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRIb3N0KG5zQVN0cmluZyAmIGFIb3N0KSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXRIb3N0KGNvbnN0IG5zQVN0cmluZyAmIGFIb3N0KSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldEhvc3RuYW1lKG5zQVN0cmluZyAmIGFIb3N0bmFtZSkgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0SG9zdG5hbWUoY29uc3QgbnNBU3RyaW5nICYgYUhvc3RuYW1l
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBhdGhuYW1lKG5zQVN0cmluZyAmIGFQYXRo
bmFtZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UGF0aG5hbWUoY29uc3QgbnNBU3RyaW5n
ICYgYVBhdGhuYW1lKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNlYXJjaChuc0FTdHJp
bmcgJiBhU2VhcmNoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRTZWFyY2goY29uc3QgbnNB
U3RyaW5nICYgYVNlYXJjaCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQb3J0KG5zQVN0
cmluZyAmIGFQb3J0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRQb3J0KGNvbnN0IG5zQVN0
cmluZyAmIGFQb3J0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEhhc2gobnNBU3RyaW5n
ICYgYUhhc2gpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEhhc2goY29uc3QgbnNBU3RyaW5n
ICYgYUhhc2gpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VGV4dChuc0FTdHJpbmcgJiBh
VGV4dCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBUb1N0cmluZyhuc0FTdHJpbmcgJiBfcmV0
dmFsKSA9IDA7Cgp9OwojIDE5NiAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MQXBwbGV0RWxlbWVudC5oIiAxCiMgMzQgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTEFwcGxldEVsZW1lbnQuaCIKY2xhc3MgbnNJ
RE9NSFRNTEFwcGxldEVsZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGlj
OgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlk
ID0gezB4YTZjZjkwYWUsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAs
IDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRBbGlnbihuc0FTdHJpbmcgJiBhQWxpZ24pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0
IFNldEFsaWduKGNvbnN0IG5zQVN0cmluZyAmIGFBbGlnbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRBbHQobnNBU3RyaW5nICYgYUFsdCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0
QWx0KGNvbnN0IG5zQVN0cmluZyAmIGFBbHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
QXJjaGl2ZShuc0FTdHJpbmcgJiBhQXJjaGl2ZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0
QXJjaGl2ZShjb25zdCBuc0FTdHJpbmcgJiBhQXJjaGl2ZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRDb2RlKG5zQVN0cmluZyAmIGFDb2RlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBT
ZXRDb2RlKGNvbnN0IG5zQVN0cmluZyAmIGFDb2RlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldENvZGVCYXNlKG5zQVN0cmluZyAmIGFDb2RlQmFzZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0Q29kZUJhc2UoY29uc3QgbnNBU3RyaW5nICYgYUNvZGVCYXNlKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldEhlaWdodChuc0FTdHJpbmcgJiBhSGVpZ2h0KSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRIZWlnaHQoY29uc3QgbnNBU3RyaW5nICYgYUhlaWdodCkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRIc3BhY2UoUFJJbnQzMiAqYUhzcGFjZSkgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0SHNwYWNlKFBSSW50MzIgYUhzcGFjZSkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXROYW1lKG5zQVN0cmluZyAmIGFOYW1lKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXROYW1lKGNvbnN0IG5zQVN0cmluZyAmIGFOYW1lKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldE9iamVjdChuc0FTdHJpbmcgJiBhT2JqZWN0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRPYmplY3QoY29uc3QgbnNBU3RyaW5nICYgYU9iamVjdCkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRWc3BhY2UoUFJJbnQzMiAqYVZzcGFjZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0VnNwYWNlKFBSSW50MzIgYVZzcGFjZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRXaWR0aChuc0FTdHJpbmcgJiBhV2lkdGgpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFdp
ZHRoKGNvbnN0IG5zQVN0cmluZyAmIGFXaWR0aCkgPSAwOwoKfTsKIyAxOTcgIm5zRE9NQ2xhc3NJ
bmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTEFyZWFF
bGVtZW50LmgiIDEKIyAzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MQXJl
YUVsZW1lbnQuaCIKY2xhc3MgbnNJRE9NSFRNTEFyZWFFbGVtZW50IDogcHVibGljIG5zSURPTUhU
TUxFbGVtZW50IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3Rh
dGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MGIwLCAweDE1YjMsIDB4MTFkMiwgeyAweDkz
LCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlk
O30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QWNjZXNzS2V5KG5zQVN0cmluZyAmIGFBY2Nlc3NL
ZXkpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFjY2Vzc0tleShjb25zdCBuc0FTdHJpbmcg
JiBhQWNjZXNzS2V5KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFsdChuc0FTdHJpbmcg
JiBhQWx0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRBbHQoY29uc3QgbnNBU3RyaW5nICYg
YUFsdCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb29yZHMobnNBU3RyaW5nICYgYUNv
b3JkcykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q29vcmRzKGNvbnN0IG5zQVN0cmluZyAm
IGFDb29yZHMpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SHJlZihuc0FTdHJpbmcgJiBh
SHJlZikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0SHJlZihjb25zdCBuc0FTdHJpbmcgJiBh
SHJlZikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROb0hyZWYoUFJCb29sICphTm9IcmVm
KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXROb0hyZWYoUFJCb29sIGFOb0hyZWYpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2hhcGUobnNBU3RyaW5nICYgYVNoYXBlKSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXRTaGFwZShjb25zdCBuc0FTdHJpbmcgJiBhU2hhcGUpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VGFiSW5kZXgoUFJJbnQzMiAqYVRhYkluZGV4KSA9IDA7
CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRUYWJJbmRleChQUkludDMyIGFUYWJJbmRleCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRUYXJnZXQobnNBU3RyaW5nICYgYVRhcmdldCkgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0VGFyZ2V0KGNvbnN0IG5zQVN0cmluZyAmIGFUYXJnZXQpID0g
MDsKCn07CiMgMTk4ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvZG9tL25zSURPTU5TSFRNTEFyZWFFbGVtZW50LmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2RvbS9uc0lET01OU0hUTUxBcmVhRWxlbWVudC5oIgpjbGFzcyBuc0lET01OU0hU
TUxBcmVhRWxlbWVudCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBj
b25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTEx
YiwgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwg
MHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByb3Rv
Y29sKG5zQVN0cmluZyAmIGFQcm90b2NvbCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UHJv
dG9jb2woY29uc3QgbnNBU3RyaW5nICYgYVByb3RvY29sKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldEhvc3QobnNBU3RyaW5nICYgYUhvc3QpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dEhvc3QoY29uc3QgbnNBU3RyaW5nICYgYUhvc3QpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0SG9zdG5hbWUobnNBU3RyaW5nICYgYUhvc3RuYW1lKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRIb3N0bmFtZShjb25zdCBuc0FTdHJpbmcgJiBhSG9zdG5hbWUpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0UGF0aG5hbWUobnNBU3RyaW5nICYgYVBhdGhuYW1lKSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXRQYXRobmFtZShjb25zdCBuc0FTdHJpbmcgJiBhUGF0aG5hbWUpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2VhcmNoKG5zQVN0cmluZyAmIGFTZWFyY2gpID0g
MDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNlYXJjaChjb25zdCBuc0FTdHJpbmcgJiBhU2VhcmNo
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBvcnQobnNBU3RyaW5nICYgYVBvcnQpID0g
MDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFBvcnQoY29uc3QgbnNBU3RyaW5nICYgYVBvcnQpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SGFzaChuc0FTdHJpbmcgJiBhSGFzaCkgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0SGFzaChjb25zdCBuc0FTdHJpbmcgJiBhSGFzaCkgPSAwOwoK
fTsKIyAxOTkgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9kb20vbnNJRE9NSFRNTEJSRWxlbWVudC5oIiAxCiMgMzQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9kb20vbnNJRE9NSFRNTEJSRWxlbWVudC5oIgpjbGFzcyBuc0lET01IVE1MQlJFbGVtZW50IDog
cHVibGljIG5zSURPTUhUTUxFbGVtZW50IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlE
JiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MGE1LCAweDE1YjMs
IDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMy
IH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q2xlYXIobnNBU3RyaW5n
ICYgYUNsZWFyKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDbGVhcihjb25zdCBuc0FTdHJp
bmcgJiBhQ2xlYXIpID0gMDsKCn07CiMgMjAwICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxCYXNlRWxlbWVudC5oIiAxCiMgMzQg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTEJhc2VFbGVtZW50LmgiCmNsYXNz
IG5zSURPTUhUTUxCYXNlRWxlbWVudCA6IHB1YmxpYyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJs
aWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBp
aWQgPSB7MHhhNmNmOTA4YiwgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4
MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldEhyZWYobnNBU3RyaW5nICYgYUhyZWYpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0
IFNldEhyZWYoY29uc3QgbnNBU3RyaW5nICYgYUhyZWYpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0VGFyZ2V0KG5zQVN0cmluZyAmIGFUYXJnZXQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0
IFNldFRhcmdldChjb25zdCBuc0FTdHJpbmcgJiBhVGFyZ2V0KSA9IDA7Cgp9OwojIDIwMSAibnNE
T01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01I
VE1MQmFzZUZvbnRFbGVtZW50LmgiIDEKIyAzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9u
c0lET01IVE1MQmFzZUZvbnRFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxCYXNlRm9udEVsZW1l
bnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMgY29uc3Qg
bnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwYTYsIDB4
MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQs
IDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb2xvcihuc0FT
dHJpbmcgJiBhQ29sb3IpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENvbG9yKGNvbnN0IG5z
QVN0cmluZyAmIGFDb2xvcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGYWNlKG5zQVN0
cmluZyAmIGFGYWNlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRGYWNlKGNvbnN0IG5zQVN0
cmluZyAmIGFGYWNlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNpemUoUFJJbnQzMiAq
YVNpemUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNpemUoUFJJbnQzMiBhU2l6ZSkgPSAw
OwoKfTsKIyAyMDIgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS9kb20vbnNJRE9NSFRNTEJvZHlFbGVtZW50LmgiIDEKIyAzNCAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2RvbS9uc0lET01IVE1MQm9keUVsZW1lbnQuaCIKY2xhc3MgbnNJRE9NSFRNTEJvZHlF
bGVtZW50IDogcHVibGljIG5zSURPTUhUTUxFbGVtZW50IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNv
bnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MDhl
LCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAw
eGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QUxpbmso
bnNBU3RyaW5nICYgYUFMaW5rKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRBTGluayhjb25z
dCBuc0FTdHJpbmcgJiBhQUxpbmspID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QmFja2dy
b3VuZChuc0FTdHJpbmcgJiBhQmFja2dyb3VuZCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0
QmFja2dyb3VuZChjb25zdCBuc0FTdHJpbmcgJiBhQmFja2dyb3VuZCkgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRCZ0NvbG9yKG5zQVN0cmluZyAmIGFCZ0NvbG9yKSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRCZ0NvbG9yKGNvbnN0IG5zQVN0cmluZyAmIGFCZ0NvbG9yKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldExpbmsobnNBU3RyaW5nICYgYUxpbmspID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldExpbmsoY29uc3QgbnNBU3RyaW5nICYgYUxpbmspID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0VGV4dChuc0FTdHJpbmcgJiBhVGV4dCkgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0VGV4dChjb25zdCBuc0FTdHJpbmcgJiBhVGV4dCkgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRWTGluayhuc0FTdHJpbmcgJiBhVkxpbmspID0gMDsKICB2aXJ0dWFsIG5z
cmVzdWx0IFNldFZMaW5rKGNvbnN0IG5zQVN0cmluZyAmIGFWTGluaykgPSAwOwoKfTsKIyAyMDMg
Im5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJ
RE9NSFRNTEJ1dHRvbkVsZW1lbnQuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9t
L25zSURPTUhUTUxCdXR0b25FbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxCdXR0b25FbGVtZW50
IDogcHVibGljIG5zSURPTUhUTUxFbGVtZW50IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5z
SUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MDk1LCAweDE1
YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAw
eDMyIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Rm9ybShuc0lET01I
VE1MRm9ybUVsZW1lbnQgKiAqYUZvcm0pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QWNj
ZXNzS2V5KG5zQVN0cmluZyAmIGFBY2Nlc3NLZXkpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dEFjY2Vzc0tleShjb25zdCBuc0FTdHJpbmcgJiBhQWNjZXNzS2V5KSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldERpc2FibGVkKFBSQm9vbCAqYURpc2FibGVkKSA9IDA7CiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXREaXNhYmxlZChQUkJvb2wgYURpc2FibGVkKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldE5hbWUobnNBU3RyaW5nICYgYU5hbWUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0
IFNldE5hbWUoY29uc3QgbnNBU3RyaW5nICYgYU5hbWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0VGFiSW5kZXgoUFJJbnQzMiAqYVRhYkluZGV4KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRUYWJJbmRleChQUkludDMyIGFUYWJJbmRleCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRUeXBlKG5zQVN0cmluZyAmIGFUeXBlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dFZhbHVlKG5zQVN0cmluZyAmIGFWYWx1ZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VmFs
dWUoY29uc3QgbnNBU3RyaW5nICYgYVZhbHVlKSA9IDA7Cgp9OwojIDIwNCAibnNET01DbGFzc0lu
Zm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU0hUTUxCdXR0
b25FbGVtZW50LmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU0hU
TUxCdXR0b25FbGVtZW50LmgiCmNsYXNzIG5zSURPTU5TSFRNTEJ1dHRvbkVsZW1lbnQgOiBwdWJs
aWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgp
IHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4NmZkMzQ0ZDAsIDB4N2U1ZiwgMHgxMWQyLCB7
IDB4YmQsIDB4OTEsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZTMsIDB4ZjQgfX07IHJldHVy
biBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBCbHVyKHZvaWQpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgRm9jdXModm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDbGljayh2b2lk
KSA9IDA7Cgp9OwojIDIwNSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2RvbS9uc0lET01IVE1MRExpc3RFbGVtZW50LmgiIDEKIyAzNCAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MRExpc3RFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhU
TUxETGlzdEVsZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGljOgoKICBz
dGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4
YTZjZjkwOWIsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYs
IDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRDb21wYWN0KFBSQm9vbCAqYUNvbXBhY3QpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENv
bXBhY3QoUFJCb29sIGFDb21wYWN0KSA9IDA7Cgp9OwojIDIwNiAibnNET01DbGFzc0luZm8uY3Bw
IiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MRGlyZWN0b3J5RWxl
bWVudC5oIiAxCiMgMzQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTERpcmVj
dG9yeUVsZW1lbnQuaCIKY2xhc3MgbnNJRE9NSFRNTERpcmVjdG9yeUVsZW1lbnQgOiBwdWJsaWMg
bnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJ
RCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwOWMsIDB4MTViMywgMHgxMWQy
LCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJl
dHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb21wYWN0KFBSQm9vbCAqYUNvbXBh
Y3QpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENvbXBhY3QoUFJCb29sIGFDb21wYWN0KSA9
IDA7Cgp9OwojIDIwNyAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2RvbS9uc0lET01IVE1MRGl2RWxlbWVudC5oIiAxCiMgMzQgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9kb20vbnNJRE9NSFRNTERpdkVsZW1lbnQuaCIKY2xhc3MgbnNJRE9NSFRNTERpdkVs
ZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMgY29u
c3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwYTAs
IDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4
ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBbGlnbihu
c0FTdHJpbmcgJiBhQWxpZ24pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFsaWduKGNvbnN0
IG5zQVN0cmluZyAmIGFBbGlnbikgPSAwOwoKfTsKIyAyMDggIm5zRE9NQ2xhc3NJbmZvLmNwcCIg
MgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTEVtYmVkRWxlbWVudC5o
IiAxCiMgMzQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTEVtYmVkRWxlbWVu
dC5oIgpjbGFzcyBuc0lET01IVE1MRW1iZWRFbGVtZW50IDogcHVibGljIG5zSURPTUhUTUxFbGVt
ZW50IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNv
bnN0IG5zSUlEIGlpZCA9IHsweDEyM2Y5MGFiLCAweDE1YjMsIDB4MTFkMiwgeyAweDQ1LCAweDZl
LCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0QWxpZ24obnNBU3RyaW5nICYgYUFsaWduKSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXRBbGlnbihjb25zdCBuc0FTdHJpbmcgJiBhQWxpZ24pID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0SGVpZ2h0KG5zQVN0cmluZyAmIGFIZWlnaHQpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldEhlaWdodChjb25zdCBuc0FTdHJpbmcgJiBhSGVpZ2h0KSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5hbWUobnNBU3RyaW5nICYgYU5hbWUpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldE5hbWUoY29uc3QgbnNBU3RyaW5nICYgYU5hbWUpID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0U3JjKG5zQVN0cmluZyAmIGFTcmMpID0gMDsKICB2aXJ0dWFs
IG5zcmVzdWx0IFNldFNyYyhjb25zdCBuc0FTdHJpbmcgJiBhU3JjKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldFR5cGUobnNBU3RyaW5nICYgYVR5cGUpID0gMDsKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldFR5cGUoY29uc3QgbnNBU3RyaW5nICYgYVR5cGUpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0V2lkdGgobnNBU3RyaW5nICYgYVdpZHRoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRXaWR0aChjb25zdCBuc0FTdHJpbmcgJiBhV2lkdGgpID0gMDsKCn07CiMgMjA5ICJuc0RP
TUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhU
TUxGaWVsZFNldEVsZW1lbnQuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25z
SURPTUhUTUxGaWVsZFNldEVsZW1lbnQuaCIKY2xhc3MgbnNJRE9NSFRNTEZpZWxkU2V0RWxlbWVu
dCA6IHB1YmxpYyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBu
c0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTA5NywgMHgx
NWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwg
MHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEZvcm0obnNJRE9N
SFRNTEZvcm1FbGVtZW50ICogKmFGb3JtKSA9IDA7Cgp9OwojIDIxMCAibnNET01DbGFzc0luZm8u
Y3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MRm9udEVsZW1l
bnQuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxGb250RWxl
bWVudC5oIgpjbGFzcyBuc0lET01IVE1MRm9udEVsZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVs
ZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMg
Y29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwYTcsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4
MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb2xvcihuc0FTdHJpbmcgJiBhQ29sb3IpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldENvbG9yKGNvbnN0IG5zQVN0cmluZyAmIGFDb2xvcikgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGYWNlKG5zQVN0cmluZyAmIGFGYWNlKSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXRGYWNlKGNvbnN0IG5zQVN0cmluZyAmIGFGYWNlKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldFNpemUobnNBU3RyaW5nICYgYVNpemUpID0gMDsKICB2aXJ0dWFs
IG5zcmVzdWx0IFNldFNpemUoY29uc3QgbnNBU3RyaW5nICYgYVNpemUpID0gMDsKCn07CiMgMjEx
ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25z
SURPTU5TSFRNTEZvcm1FbGVtZW50LmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2Rv
bS9uc0lET01OU0hUTUxGb3JtRWxlbWVudC5oIgpjbGFzcyBuc0lET01OU0hUTUxGb3JtRWxlbWVu
dCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYg
R2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTBjNiwgMHgxNWIzLCAw
eDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9
fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEVuY29kaW5nKG5zQVN0cmlu
ZyAmIGFFbmNvZGluZykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RW5jb2RpbmcoY29uc3Qg
bnNBU3RyaW5nICYgYUVuY29kaW5nKSA9IDA7Cgp9OwojIDIxMiAibnNET01DbGFzc0luZm8uY3Bw
IiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MRnJhbWVFbGVtZW50
LmgiIDEKIyAzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MRnJhbWVFbGVt
ZW50LmgiCmNsYXNzIG5zSURPTUhUTUxGcmFtZUVsZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVs
ZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMg
Y29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwYjksIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4
MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGcmFtZUJvcmRlcihuc0FTdHJpbmcgJiBhRnJhbWVCb3Jk
ZXIpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEZyYW1lQm9yZGVyKGNvbnN0IG5zQVN0cmlu
ZyAmIGFGcmFtZUJvcmRlcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMb25nRGVzYyhu
c0FTdHJpbmcgJiBhTG9uZ0Rlc2MpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldExvbmdEZXNj
KGNvbnN0IG5zQVN0cmluZyAmIGFMb25nRGVzYykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRNYXJnaW5IZWlnaHQobnNBU3RyaW5nICYgYU1hcmdpbkhlaWdodCkgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0TWFyZ2luSGVpZ2h0KGNvbnN0IG5zQVN0cmluZyAmIGFNYXJnaW5IZWlnaHQp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TWFyZ2luV2lkdGgobnNBU3RyaW5nICYgYU1h
cmdpbldpZHRoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRNYXJnaW5XaWR0aChjb25zdCBu
c0FTdHJpbmcgJiBhTWFyZ2luV2lkdGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TmFt
ZShuc0FTdHJpbmcgJiBhTmFtZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TmFtZShjb25z
dCBuc0FTdHJpbmcgJiBhTmFtZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROb1Jlc2l6
ZShQUkJvb2wgKmFOb1Jlc2l6ZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Tm9SZXNpemUo
UFJCb29sIGFOb1Jlc2l6ZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTY3JvbGxpbmco
bnNBU3RyaW5nICYgYVNjcm9sbGluZykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0U2Nyb2xs
aW5nKGNvbnN0IG5zQVN0cmluZyAmIGFTY3JvbGxpbmcpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0U3JjKG5zQVN0cmluZyAmIGFTcmMpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNy
Yyhjb25zdCBuc0FTdHJpbmcgJiBhU3JjKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENv
bnRlbnREb2N1bWVudChuc0lET01Eb2N1bWVudCAqICphQ29udGVudERvY3VtZW50KSA9IDA7Cgp9
OwojIDIxMyAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L2RvbS9uc0lET01IVE1MRnJhbWVTZXRFbGVtZW50LmgiIDEKIyAzNCAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2RvbS9uc0lET01IVE1MRnJhbWVTZXRFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxG
cmFtZVNldEVsZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGljOgoKICBz
dGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4
YTZjZjkwYjgsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYs
IDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRDb2xzKG5zQVN0cmluZyAmIGFDb2xzKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDb2xz
KGNvbnN0IG5zQVN0cmluZyAmIGFDb2xzKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJv
d3MobnNBU3RyaW5nICYgYVJvd3MpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFJvd3MoY29u
c3QgbnNBU3RyaW5nICYgYVJvd3MpID0gMDsKCn07CiMgMjE0ICJuc0RPTUNsYXNzSW5mby5jcHAi
IDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTU5TSFRNTEZyYW1lRWxlbWVu
dC5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NTlNIVE1MRnJhbWVF
bGVtZW50LmgiCmNsYXNzIG5zSURPTU5TSFRNTEZyYW1lRWxlbWVudCA6IHB1YmxpYyBuc0lTdXBw
b3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBj
b25zdCBuc0lJRCBpaWQgPSB7MHhkNjdiZDI2NywgMHhmOTg0LCAweDQ5OTMsIHsgMHhiMywgMHg3
OCwgMHg5NSwgMHg4NSwgMHgxYiwgMHg3MSwgMHhmMCwgMHhhMyB9fTsgcmV0dXJuIGlpZDt9CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbnRlbnRXaW5kb3cobnNJRE9NV2luZG93ICogKmFDb250
ZW50V2luZG93KSA9IDA7Cgp9OwojIDIxNSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MSFJFbGVtZW50LmgiIDEKIyAzNCAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MSFJFbGVtZW50LmgiCmNsYXNzIG5zSURP
TUhUTUxIUkVsZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGljOgoKICBz
dGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4
YTZjZjkwYTgsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYs
IDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRBbGlnbihuc0FTdHJpbmcgJiBhQWxpZ24pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFs
aWduKGNvbnN0IG5zQVN0cmluZyAmIGFBbGlnbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXROb1NoYWRlKFBSQm9vbCAqYU5vU2hhZGUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE5v
U2hhZGUoUFJCb29sIGFOb1NoYWRlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNpemUo
bnNBU3RyaW5nICYgYVNpemUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNpemUoY29uc3Qg
bnNBU3RyaW5nICYgYVNpemUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0V2lkdGgobnNB
U3RyaW5nICYgYVdpZHRoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRXaWR0aChjb25zdCBu
c0FTdHJpbmcgJiBhV2lkdGgpID0gMDsKCn07CiMgMjE2ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIK
IyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxIZWFkRWxlbWVudC5oIiAx
CiMgMzQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTEhlYWRFbGVtZW50Lmgi
CmNsYXNzIG5zSURPTUhUTUxIZWFkRWxlbWVudCA6IHB1YmxpYyBuc0lET01IVE1MRWxlbWVudCB7
CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBu
c0lJRCBpaWQgPSB7MHhhNmNmOTA4NywgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgw
MCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldFByb2ZpbGUobnNBU3RyaW5nICYgYVByb2ZpbGUpID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldFByb2ZpbGUoY29uc3QgbnNBU3RyaW5nICYgYVByb2ZpbGUpID0gMDsK
Cn07CiMgMjE3ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvZG9tL25zSURPTUhUTUxIZWFkaW5nRWxlbWVudC5oIiAxCiMgMzQgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9kb20vbnNJRE9NSFRNTEhlYWRpbmdFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxI
ZWFkaW5nRWxlbWVudCA6IHB1YmxpYyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6CgogIHN0
YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhh
NmNmOTBhMiwgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1Ziwg
MHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dEFsaWduKG5zQVN0cmluZyAmIGFBbGlnbikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QWxp
Z24oY29uc3QgbnNBU3RyaW5nICYgYUFsaWduKSA9IDA7Cgp9OwojIDIxOCAibnNET01DbGFzc0lu
Zm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MSHRtbEVs
ZW1lbnQuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxIdG1s
RWxlbWVudC5oIgpjbGFzcyBuc0lET01IVE1MSHRtbEVsZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRN
TEVsZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0
aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwODYsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMs
IDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7
fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRWZXJzaW9uKG5zQVN0cmluZyAmIGFWZXJzaW9uKSA9
IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRWZXJzaW9uKGNvbnN0IG5zQVN0cmluZyAmIGFWZXJz
aW9uKSA9IDA7Cgp9OwojIDIxOSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MSUZyYW1lRWxlbWVudC5oIiAxCiMgMzQgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTElGcmFtZUVsZW1lbnQuaCIKY2xhc3MgbnNJ
RE9NSFRNTElGcmFtZUVsZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGlj
OgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlk
ID0gezB4YTZjZjkwYmEsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAs
IDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRBbGlnbihuc0FTdHJpbmcgJiBhQWxpZ24pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0
IFNldEFsaWduKGNvbnN0IG5zQVN0cmluZyAmIGFBbGlnbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRGcmFtZUJvcmRlcihuc0FTdHJpbmcgJiBhRnJhbWVCb3JkZXIpID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldEZyYW1lQm9yZGVyKGNvbnN0IG5zQVN0cmluZyAmIGFGcmFtZUJvcmRl
cikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRIZWlnaHQobnNBU3RyaW5nICYgYUhlaWdo
dCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0SGVpZ2h0KGNvbnN0IG5zQVN0cmluZyAmIGFI
ZWlnaHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TG9uZ0Rlc2MobnNBU3RyaW5nICYg
YUxvbmdEZXNjKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRMb25nRGVzYyhjb25zdCBuc0FT
dHJpbmcgJiBhTG9uZ0Rlc2MpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TWFyZ2luSGVp
Z2h0KG5zQVN0cmluZyAmIGFNYXJnaW5IZWlnaHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dE1hcmdpbkhlaWdodChjb25zdCBuc0FTdHJpbmcgJiBhTWFyZ2luSGVpZ2h0KSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldE1hcmdpbldpZHRoKG5zQVN0cmluZyAmIGFNYXJnaW5XaWR0aCkg
PSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TWFyZ2luV2lkdGgoY29uc3QgbnNBU3RyaW5nICYg
YU1hcmdpbldpZHRoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5hbWUobnNBU3RyaW5n
ICYgYU5hbWUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE5hbWUoY29uc3QgbnNBU3RyaW5n
ICYgYU5hbWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2Nyb2xsaW5nKG5zQVN0cmlu
ZyAmIGFTY3JvbGxpbmcpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNjcm9sbGluZyhjb25z
dCBuc0FTdHJpbmcgJiBhU2Nyb2xsaW5nKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNy
Yyhuc0FTdHJpbmcgJiBhU3JjKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRTcmMoY29uc3Qg
bnNBU3RyaW5nICYgYVNyYykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRXaWR0aChuc0FT
dHJpbmcgJiBhV2lkdGgpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFdpZHRoKGNvbnN0IG5z
QVN0cmluZyAmIGFXaWR0aCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb250ZW50RG9j
dW1lbnQobnNJRE9NRG9jdW1lbnQgKiAqYUNvbnRlbnREb2N1bWVudCkgPSAwOwoKfTsKIyAyMjAg
Im5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJ
RE9NSFRNTEltYWdlRWxlbWVudC5oIiAxCiMgMzQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20v
bnNJRE9NSFRNTEltYWdlRWxlbWVudC5oIgpjbGFzcyBuc0lET01IVE1MSW1hZ2VFbGVtZW50IDog
cHVibGljIG5zSURPTUhUTUxFbGVtZW50IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlE
JiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MGFiLCAweDE1YjMs
IDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMy
IH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TmFtZShuc0FTdHJpbmcg
JiBhTmFtZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TmFtZShjb25zdCBuc0FTdHJpbmcg
JiBhTmFtZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBbGlnbihuc0FTdHJpbmcgJiBh
QWxpZ24pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFsaWduKGNvbnN0IG5zQVN0cmluZyAm
IGFBbGlnbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBbHQobnNBU3RyaW5nICYgYUFs
dCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QWx0KGNvbnN0IG5zQVN0cmluZyAmIGFBbHQp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Qm9yZGVyKG5zQVN0cmluZyAmIGFCb3JkZXIp
ID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEJvcmRlcihjb25zdCBuc0FTdHJpbmcgJiBhQm9y
ZGVyKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEhlaWdodChQUkludDMyICphSGVpZ2h0
KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRIZWlnaHQoUFJJbnQzMiBhSGVpZ2h0KSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEhzcGFjZShQUkludDMyICphSHNwYWNlKSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXRIc3BhY2UoUFJJbnQzMiBhSHNwYWNlKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldElzTWFwKFBSQm9vbCAqYUlzTWFwKSA9IDA7CiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXRJc01hcChQUkJvb2wgYUlzTWFwKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dExvbmdEZXNjKG5zQVN0cmluZyAmIGFMb25nRGVzYykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQg
U2V0TG9uZ0Rlc2MoY29uc3QgbnNBU3RyaW5nICYgYUxvbmdEZXNjKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldFNyYyhuc0FTdHJpbmcgJiBhU3JjKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRTcmMoY29uc3QgbnNBU3RyaW5nICYgYVNyYykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRVc2VNYXAobnNBU3RyaW5nICYgYVVzZU1hcCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQg
U2V0VXNlTWFwKGNvbnN0IG5zQVN0cmluZyAmIGFVc2VNYXApID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0VnNwYWNlKFBSSW50MzIgKmFWc3BhY2UpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0
IFNldFZzcGFjZShQUkludDMyIGFWc3BhY2UpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
V2lkdGgoUFJJbnQzMiAqYVdpZHRoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRXaWR0aChQ
UkludDMyIGFXaWR0aCkgPSAwOwoKfTsKIyAyMjEgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NTlNIVE1MSW1hZ2VFbGVtZW50LmgiIDEK
IyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU0hUTUxJbWFnZUVsZW1lbnQu
aCIKY2xhc3MgbnNJRE9NTlNIVE1MSW1hZ2VFbGVtZW50IDogcHVibGljIG5zSVN1cHBvcnRzIHsK
IHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5z
SUlEIGlpZCA9IHsweGE2Y2Y5MGM3LCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAw
LCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0Q29tcGxldGUoUFJCb29sICphQ29tcGxldGUpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0TmF0dXJhbEhlaWdodChQUkludDMyICphTmF0dXJhbEhlaWdodCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROYXR1cmFsV2lkdGgoUFJJbnQzMiAqYU5hdHVyYWxX
aWR0aCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRYKFBSSW50MzIgKmFYKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldFkoUFJJbnQzMiAqYVkpID0gMDsKCn07CiMgMjIyICJuc0RP
TUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhU
TUxJbnB1dEVsZW1lbnQuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURP
TUhUTUxJbnB1dEVsZW1lbnQuaCIKY2xhc3MgbnNJRE9NSFRNTElucHV0RWxlbWVudCA6IHB1Ymxp
YyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0
SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTA5MywgMHgxNWIzLCAweDEx
ZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsg
cmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERlZmF1bHRWYWx1ZShuc0FTdHJp
bmcgJiBhRGVmYXVsdFZhbHVlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXREZWZhdWx0VmFs
dWUoY29uc3QgbnNBU3RyaW5nICYgYURlZmF1bHRWYWx1ZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXREZWZhdWx0Q2hlY2tlZChQUkJvb2wgKmFEZWZhdWx0Q2hlY2tlZCkgPSAwOwogIHZp
cnR1YWwgbnNyZXN1bHQgU2V0RGVmYXVsdENoZWNrZWQoUFJCb29sIGFEZWZhdWx0Q2hlY2tlZCkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGb3JtKG5zSURPTUhUTUxGb3JtRWxlbWVudCAq
ICphRm9ybSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBY2NlcHQobnNBU3RyaW5nICYg
YUFjY2VwdCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QWNjZXB0KGNvbnN0IG5zQVN0cmlu
ZyAmIGFBY2NlcHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QWNjZXNzS2V5KG5zQVN0
cmluZyAmIGFBY2Nlc3NLZXkpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFjY2Vzc0tleShj
b25zdCBuc0FTdHJpbmcgJiBhQWNjZXNzS2V5KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dEFsaWduKG5zQVN0cmluZyAmIGFBbGlnbikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QWxp
Z24oY29uc3QgbnNBU3RyaW5nICYgYUFsaWduKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dEFsdChuc0FTdHJpbmcgJiBhQWx0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRBbHQoY29u
c3QgbnNBU3RyaW5nICYgYUFsdCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDaGVja2Vk
KFBSQm9vbCAqYUNoZWNrZWQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENoZWNrZWQoUFJC
b29sIGFDaGVja2VkKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERpc2FibGVkKFBSQm9v
bCAqYURpc2FibGVkKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXREaXNhYmxlZChQUkJvb2wg
YURpc2FibGVkKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1heExlbmd0aChQUkludDMy
ICphTWF4TGVuZ3RoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRNYXhMZW5ndGgoUFJJbnQz
MiBhTWF4TGVuZ3RoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5hbWUobnNBU3RyaW5n
ICYgYU5hbWUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE5hbWUoY29uc3QgbnNBU3RyaW5n
ICYgYU5hbWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UmVhZE9ubHkoUFJCb29sICph
UmVhZE9ubHkpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFJlYWRPbmx5KFBSQm9vbCBhUmVh
ZE9ubHkpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2l6ZShQUlVpbnQzMiAqYVNpemUp
ID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNpemUoUFJVaW50MzIgYVNpemUpID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0U3JjKG5zQVN0cmluZyAmIGFTcmMpID0gMDsKICB2aXJ0dWFs
IG5zcmVzdWx0IFNldFNyYyhjb25zdCBuc0FTdHJpbmcgJiBhU3JjKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldFRhYkluZGV4KFBSSW50MzIgKmFUYWJJbmRleCkgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0VGFiSW5kZXgoUFJJbnQzMiBhVGFiSW5kZXgpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0VHlwZShuc0FTdHJpbmcgJiBhVHlwZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0VHlwZShjb25zdCBuc0FTdHJpbmcgJiBhVHlwZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRVc2VNYXAobnNBU3RyaW5nICYgYVVzZU1hcCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0VXNlTWFwKGNvbnN0IG5zQVN0cmluZyAmIGFVc2VNYXApID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0VmFsdWUobnNBU3RyaW5nICYgYVZhbHVlKSA9IDA7CiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXRWYWx1ZShjb25zdCBuc0FTdHJpbmcgJiBhVmFsdWUpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgQmx1cih2b2lkKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEZvY3VzKHZvaWQp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2VsZWN0KHZvaWQpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgQ2xpY2sodm9pZCkgPSAwOwoKfTsKIyAyMjMgIm5zRE9NQ2xhc3NJbmZvLmNwcCIg
MgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NTlNIVE1MSW5wdXRFbGVtZW50
LmgiIDEKIyAxNyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU0hUTUxJbnB1dEVs
ZW1lbnQuaCIKY2xhc3MgbnNJQ29udHJvbGxlcnM7CiMgMjcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9kb20vbnNJRE9NTlNIVE1MSW5wdXRFbGVtZW50LmgiCmNsYXNzIG5zSURPTU5TSFRNTElucHV0
RWxlbWVudCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBu
c0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHg5OTNkMmVmYywgMHhh
NzY4LCAweDExZDMsIHsgMHhiYywgMHhjZCwgMHgwMCwgMHg2MCwgMHhiMCwgMHhmYywgMHg3Niwg
MHhiZCB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbnRyb2xsZXJz
KG5zSUNvbnRyb2xsZXJzICogKmFDb250cm9sbGVycykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRUZXh0TGVuZ3RoKFBSSW50MzIgKmFUZXh0TGVuZ3RoKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldFNlbGVjdGlvblN0YXJ0KFBSSW50MzIgKmFTZWxlY3Rpb25TdGFydCkgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0U2VsZWN0aW9uU3RhcnQoUFJJbnQzMiBhU2VsZWN0aW9uU3Rh
cnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U2VsZWN0aW9uRW5kKFBSSW50MzIgKmFT
ZWxlY3Rpb25FbmQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNlbGVjdGlvbkVuZChQUklu
dDMyIGFTZWxlY3Rpb25FbmQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2V0U2VsZWN0aW9u
UmFuZ2UoUFJJbnQzMiBzZWxlY3Rpb25TdGFydCwgUFJJbnQzMiBzZWxlY3Rpb25FbmQpID0gMDsK
Cn07CiMgMjI0ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvZG9tL25zSURPTUhUTUxJc0luZGV4RWxlbWVudC5oIiAxCiMgMzQgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9kb20vbnNJRE9NSFRNTElzSW5kZXhFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxJ
c0luZGV4RWxlbWVudCA6IHB1YmxpYyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6CgogIHN0
YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhh
NmNmOTA4YywgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1Ziwg
MHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dEZvcm0obnNJRE9NSFRNTEZvcm1FbGVtZW50ICogKmFGb3JtKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldFByb21wdChuc0FTdHJpbmcgJiBhUHJvbXB0KSA9IDA7CiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXRQcm9tcHQoY29uc3QgbnNBU3RyaW5nICYgYVByb21wdCkgPSAwOwoKfTsKIyAyMjUg
Im5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJ
RE9NSFRNTExJRWxlbWVudC5oIiAxCiMgMzQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJ
RE9NSFRNTExJRWxlbWVudC5oIgpjbGFzcyBuc0lET01IVE1MTElFbGVtZW50IDogcHVibGljIG5z
SURPTUhUTUxFbGVtZW50IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQo
KSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MDllLCAweDE1YjMsIDB4MTFkMiwg
eyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1
cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VHlwZShuc0FTdHJpbmcgJiBhVHlwZSkg
PSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VHlwZShjb25zdCBuc0FTdHJpbmcgJiBhVHlwZSkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRWYWx1ZShQUkludDMyICphVmFsdWUpID0gMDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldFZhbHVlKFBSSW50MzIgYVZhbHVlKSA9IDA7Cgp9OwojIDIy
NiAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9u
c0lET01IVE1MTGFiZWxFbGVtZW50LmgiIDEKIyAzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2Rv
bS9uc0lET01IVE1MTGFiZWxFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxMYWJlbEVsZW1lbnQg
OiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJ
SUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwOTYsIDB4MTVi
MywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4
MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGb3JtKG5zSURPTUhU
TUxGb3JtRWxlbWVudCAqICphRm9ybSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBY2Nl
c3NLZXkobnNBU3RyaW5nICYgYUFjY2Vzc0tleSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0
QWNjZXNzS2V5KGNvbnN0IG5zQVN0cmluZyAmIGFBY2Nlc3NLZXkpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0SHRtbEZvcihuc0FTdHJpbmcgJiBhSHRtbEZvcikgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0SHRtbEZvcihjb25zdCBuc0FTdHJpbmcgJiBhSHRtbEZvcikgPSAwOwoKfTsK
IyAyMjcgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9k
b20vbnNJRE9NSFRNTExlZ2VuZEVsZW1lbnQuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1
ZGUvZG9tL25zSURPTUhUTUxMZWdlbmRFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxMZWdlbmRF
bGVtZW50IDogcHVibGljIG5zSURPTUhUTUxFbGVtZW50IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNv
bnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MDk4
LCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAw
eGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Rm9ybShu
c0lET01IVE1MRm9ybUVsZW1lbnQgKiAqYUZvcm0pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0QWNjZXNzS2V5KG5zQVN0cmluZyAmIGFBY2Nlc3NLZXkpID0gMDsKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldEFjY2Vzc0tleShjb25zdCBuc0FTdHJpbmcgJiBhQWNjZXNzS2V5KSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldEFsaWduKG5zQVN0cmluZyAmIGFBbGlnbikgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0QWxpZ24oY29uc3QgbnNBU3RyaW5nICYgYUFsaWduKSA9IDA7Cgp9Owoj
IDIyOCAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2Rv
bS9uc0lET01IVE1MTGlua0VsZW1lbnQuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
ZG9tL25zSURPTUhUTUxMaW5rRWxlbWVudC5oIgpjbGFzcyBuc0lET01IVE1MTGlua0VsZW1lbnQg
OiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJ
SUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwODgsIDB4MTVi
MywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4
MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREaXNhYmxlZChQUkJv
b2wgKmFEaXNhYmxlZCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RGlzYWJsZWQoUFJCb29s
IGFEaXNhYmxlZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDaGFyc2V0KG5zQVN0cmlu
ZyAmIGFDaGFyc2V0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDaGFyc2V0KGNvbnN0IG5z
QVN0cmluZyAmIGFDaGFyc2V0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEhyZWYobnNB
U3RyaW5nICYgYUhyZWYpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEhyZWYoY29uc3QgbnNB
U3RyaW5nICYgYUhyZWYpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SHJlZmxhbmcobnNB
U3RyaW5nICYgYUhyZWZsYW5nKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRIcmVmbGFuZyhj
b25zdCBuc0FTdHJpbmcgJiBhSHJlZmxhbmcpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
TWVkaWEobnNBU3RyaW5nICYgYU1lZGlhKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRNZWRp
YShjb25zdCBuc0FTdHJpbmcgJiBhTWVkaWEpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
UmVsKG5zQVN0cmluZyAmIGFSZWwpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFJlbChjb25z
dCBuc0FTdHJpbmcgJiBhUmVsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJldihuc0FT
dHJpbmcgJiBhUmV2KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRSZXYoY29uc3QgbnNBU3Ry
aW5nICYgYVJldikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRUYXJnZXQobnNBU3RyaW5n
ICYgYVRhcmdldCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VGFyZ2V0KGNvbnN0IG5zQVN0
cmluZyAmIGFUYXJnZXQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VHlwZShuc0FTdHJp
bmcgJiBhVHlwZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VHlwZShjb25zdCBuc0FTdHJp
bmcgJiBhVHlwZSkgPSAwOwoKfTsKIyAyMjkgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4u
Ly4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTE1hcEVsZW1lbnQuaCIgMQojIDM0ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxNYXBFbGVtZW50LmgiCmNsYXNzIG5z
SURPTUhUTUxNYXBFbGVtZW50IDogcHVibGljIG5zSURPTUhUTUxFbGVtZW50IHsKIHB1YmxpYzoK
CiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9
IHsweGE2Y2Y5MGFmLCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAw
eDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0QXJlYXMobnNJRE9NSFRNTENvbGxlY3Rpb24gKiAqYUFyZWFzKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldE5hbWUobnNBU3RyaW5nICYgYU5hbWUpID0gMDsKICB2aXJ0dWFsIG5z
cmVzdWx0IFNldE5hbWUoY29uc3QgbnNBU3RyaW5nICYgYU5hbWUpID0gMDsKCn07CiMgMjMwICJu
c0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURP
TUhUTUxNZW51RWxlbWVudC5oIiAxCiMgMzQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJ
RE9NSFRNTE1lbnVFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxNZW51RWxlbWVudCA6IHB1Ymxp
YyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0
SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTA5ZCwgMHgxNWIzLCAweDEx
ZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsg
cmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbXBhY3QoUFJCb29sICphQ29t
cGFjdCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q29tcGFjdChQUkJvb2wgYUNvbXBhY3Qp
ID0gMDsKCn07CiMgMjMxICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvZG9tL25zSURPTUhUTUxNZXRhRWxlbWVudC5oIiAxCiMgMzQgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTE1ldGFFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxN
ZXRhRWxlbWVudCA6IHB1YmxpYyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6CgogIHN0YXRp
YyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNm
OTA4YSwgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4
YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENv
bnRlbnQobnNBU3RyaW5nICYgYUNvbnRlbnQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENv
bnRlbnQoY29uc3QgbnNBU3RyaW5nICYgYUNvbnRlbnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0SHR0cEVxdWl2KG5zQVN0cmluZyAmIGFIdHRwRXF1aXYpID0gMDsKICB2aXJ0dWFsIG5z
cmVzdWx0IFNldEh0dHBFcXVpdihjb25zdCBuc0FTdHJpbmcgJiBhSHR0cEVxdWl2KSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5hbWUobnNBU3RyaW5nICYgYU5hbWUpID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldE5hbWUoY29uc3QgbnNBU3RyaW5nICYgYU5hbWUpID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0U2NoZW1lKG5zQVN0cmluZyAmIGFTY2hlbWUpID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldFNjaGVtZShjb25zdCBuc0FTdHJpbmcgJiBhU2NoZW1lKSA9IDA7Cgp9
OwojIDIzMiAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L2RvbS9uc0lET01IVE1MTW9kRWxlbWVudC5oIiAxCiMgMzQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9kb20vbnNJRE9NSFRNTE1vZEVsZW1lbnQuaCIKY2xhc3MgbnNJRE9NSFRNTE1vZEVsZW1lbnQg
OiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJ
SUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwYTksIDB4MTVi
MywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4
MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDaXRlKG5zQVN0cmlu
ZyAmIGFDaXRlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDaXRlKGNvbnN0IG5zQVN0cmlu
ZyAmIGFDaXRlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERhdGVUaW1lKG5zQVN0cmlu
ZyAmIGFEYXRlVGltZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RGF0ZVRpbWUoY29uc3Qg
bnNBU3RyaW5nICYgYURhdGVUaW1lKSA9IDA7Cgp9OwojIDIzMyAibnNET01DbGFzc0luZm8uY3Bw
IiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MT0xpc3RFbGVtZW50
LmgiIDEKIyAzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MT0xpc3RFbGVt
ZW50LmgiCmNsYXNzIG5zSURPTUhUTUxPTGlzdEVsZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVs
ZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMg
Y29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwOWEsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4
MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb21wYWN0KFBSQm9vbCAqYUNvbXBhY3QpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldENvbXBhY3QoUFJCb29sIGFDb21wYWN0KSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldFN0YXJ0KFBSSW50MzIgKmFTdGFydCkgPSAwOwogIHZpcnR1YWwgbnNy
ZXN1bHQgU2V0U3RhcnQoUFJJbnQzMiBhU3RhcnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0VHlwZShuc0FTdHJpbmcgJiBhVHlwZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VHlw
ZShjb25zdCBuc0FTdHJpbmcgJiBhVHlwZSkgPSAwOwoKfTsKIyAyMzQgIm5zRE9NQ2xhc3NJbmZv
LmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTE9iamVjdEVs
ZW1lbnQuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxPYmpl
Y3RFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxPYmplY3RFbGVtZW50IDogcHVibGljIG5zSURP
TUhUTUxFbGVtZW50IHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7
c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MGFjLCAweDE1YjMsIDB4MTFkMiwgeyAw
eDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4g
aWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Rm9ybShuc0lET01IVE1MRm9ybUVsZW1lbnQg
KiAqYUZvcm0pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29kZShuc0FTdHJpbmcgJiBh
Q29kZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q29kZShjb25zdCBuc0FTdHJpbmcgJiBh
Q29kZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBbGlnbihuc0FTdHJpbmcgJiBhQWxp
Z24pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFsaWduKGNvbnN0IG5zQVN0cmluZyAmIGFB
bGlnbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBcmNoaXZlKG5zQVN0cmluZyAmIGFB
cmNoaXZlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRBcmNoaXZlKGNvbnN0IG5zQVN0cmlu
ZyAmIGFBcmNoaXZlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEJvcmRlcihuc0FTdHJp
bmcgJiBhQm9yZGVyKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRCb3JkZXIoY29uc3QgbnNB
U3RyaW5nICYgYUJvcmRlcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb2RlQmFzZShu
c0FTdHJpbmcgJiBhQ29kZUJhc2UpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENvZGVCYXNl
KGNvbnN0IG5zQVN0cmluZyAmIGFDb2RlQmFzZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRDb2RlVHlwZShuc0FTdHJpbmcgJiBhQ29kZVR5cGUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0
IFNldENvZGVUeXBlKGNvbnN0IG5zQVN0cmluZyAmIGFDb2RlVHlwZSkgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXREYXRhKG5zQVN0cmluZyAmIGFEYXRhKSA9IDA7CiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXREYXRhKGNvbnN0IG5zQVN0cmluZyAmIGFEYXRhKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldERlY2xhcmUoUFJCb29sICphRGVjbGFyZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0RGVjbGFyZShQUkJvb2wgYURlY2xhcmUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0SGVpZ2h0KG5zQVN0cmluZyAmIGFIZWlnaHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dEhlaWdodChjb25zdCBuc0FTdHJpbmcgJiBhSGVpZ2h0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldEhzcGFjZShQUkludDMyICphSHNwYWNlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBT
ZXRIc3BhY2UoUFJJbnQzMiBhSHNwYWNlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5h
bWUobnNBU3RyaW5nICYgYU5hbWUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE5hbWUoY29u
c3QgbnNBU3RyaW5nICYgYU5hbWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U3RhbmRi
eShuc0FTdHJpbmcgJiBhU3RhbmRieSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0U3RhbmRi
eShjb25zdCBuc0FTdHJpbmcgJiBhU3RhbmRieSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRUYWJJbmRleChQUkludDMyICphVGFiSW5kZXgpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dFRhYkluZGV4KFBSSW50MzIgYVRhYkluZGV4KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dFR5cGUobnNBU3RyaW5nICYgYVR5cGUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFR5cGUo
Y29uc3QgbnNBU3RyaW5nICYgYVR5cGUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VXNl
TWFwKG5zQVN0cmluZyAmIGFVc2VNYXApID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFVzZU1h
cChjb25zdCBuc0FTdHJpbmcgJiBhVXNlTWFwKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dFZzcGFjZShQUkludDMyICphVnNwYWNlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRWc3Bh
Y2UoUFJJbnQzMiBhVnNwYWNlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFdpZHRoKG5z
QVN0cmluZyAmIGFXaWR0aCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0V2lkdGgoY29uc3Qg
bnNBU3RyaW5nICYgYVdpZHRoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbnRlbnRE
b2N1bWVudChuc0lET01Eb2N1bWVudCAqICphQ29udGVudERvY3VtZW50KSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRDb250ZW50RG9jdW1lbnQobnNJRE9NRG9jdW1lbnQgKiBhQ29udGVudERv
Y3VtZW50KSA9IDA7Cgp9OwojIDIzNSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MT3B0R3JvdXBFbGVtZW50LmgiIDEKIyAzNCAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MT3B0R3JvdXBFbGVtZW50LmgiCmNs
YXNzIG5zSURPTUhUTUxPcHRHcm91cEVsZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQg
ewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3Qg
bnNJSUQgaWlkID0gezB4YTZjZjkwOTEsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4
MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXREaXNhYmxlZChQUkJvb2wgKmFEaXNhYmxlZCkgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0RGlzYWJsZWQoUFJCb29sIGFEaXNhYmxlZCkgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRMYWJlbChuc0FTdHJpbmcgJiBhTGFiZWwpID0gMDsKICB2aXJ0dWFsIG5z
cmVzdWx0IFNldExhYmVsKGNvbnN0IG5zQVN0cmluZyAmIGFMYWJlbCkgPSAwOwoKfTsKIyAyMzYg
Im5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJ
RE9NSFRNTFBhcmFncmFwaEVsZW1lbnQuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
ZG9tL25zSURPTUhUTUxQYXJhZ3JhcGhFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxQYXJhZ3Jh
cGhFbGVtZW50IDogcHVibGljIG5zSURPTUhUTUxFbGVtZW50IHsKIHB1YmxpYzoKCiAgc3RhdGlj
IGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5
MGExLCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhh
LCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QWxp
Z24obnNBU3RyaW5nICYgYUFsaWduKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRBbGlnbihj
b25zdCBuc0FTdHJpbmcgJiBhQWxpZ24pID0gMDsKCn07CiMgMjM3ICJuc0RPTUNsYXNzSW5mby5j
cHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxQYXJhbUVsZW1l
bnQuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxQYXJhbUVs
ZW1lbnQuaCIKY2xhc3MgbnNJRE9NSFRNTFBhcmFtRWxlbWVudCA6IHB1YmxpYyBuc0lET01IVE1M
RWxlbWVudCB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRp
YyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTBhZCwgMHgxNWIzLCAweDExZDIsIHsgMHg5Mywg
MHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE5hbWUobnNBU3RyaW5nICYgYU5hbWUpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldE5hbWUoY29uc3QgbnNBU3RyaW5nICYgYU5hbWUpID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0VHlwZShuc0FTdHJpbmcgJiBhVHlwZSkgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0VHlwZShjb25zdCBuc0FTdHJpbmcgJiBhVHlwZSkgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRWYWx1ZShuc0FTdHJpbmcgJiBhVmFsdWUpID0gMDsKICB2aXJ0dWFs
IG5zcmVzdWx0IFNldFZhbHVlKGNvbnN0IG5zQVN0cmluZyAmIGFWYWx1ZSkgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRWYWx1ZVR5cGUobnNBU3RyaW5nICYgYVZhbHVlVHlwZSkgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0VmFsdWVUeXBlKGNvbnN0IG5zQVN0cmluZyAmIGFWYWx1ZVR5
cGUpID0gMDsKCn07CiMgMjM4ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxQcmVFbGVtZW50LmgiIDEKIyAzNCAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MUHJlRWxlbWVudC5oIgpjbGFzcyBuc0lET01IVE1M
UHJlRWxlbWVudCA6IHB1YmxpYyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6CgogIHN0YXRp
YyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNm
OTBhNCwgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4
YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFdp
ZHRoKFBSSW50MzIgKmFXaWR0aCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0V2lkdGgoUFJJ
bnQzMiBhV2lkdGgpID0gMDsKCn07CiMgMjM5ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxRdW90ZUVsZW1lbnQuaCIgMQojIDM0
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxRdW90ZUVsZW1lbnQuaCIKY2xh
c3MgbnNJRE9NSFRNTFF1b3RlRWxlbWVudCA6IHB1YmxpYyBuc0lET01IVE1MRWxlbWVudCB7CiBw
dWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJ
RCBpaWQgPSB7MHhhNmNmOTBhMywgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwg
MHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldENpdGUobnNBU3RyaW5nICYgYUNpdGUpID0gMDsKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldENpdGUoY29uc3QgbnNBU3RyaW5nICYgYUNpdGUpID0gMDsKCn07CiMgMjQwICJuc0RP
TUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhU
TUxTY3JpcHRFbGVtZW50LmgiIDEKIyAzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lE
T01IVE1MU2NyaXB0RWxlbWVudC5oIgpjbGFzcyBuc0lET01IVE1MU2NyaXB0RWxlbWVudCA6IHB1
YmxpYyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYg
R2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTBiMSwgMHgxNWIzLCAw
eDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9
fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFRleHQobnNBU3RyaW5nICYg
YVRleHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFRleHQoY29uc3QgbnNBU3RyaW5nICYg
YVRleHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SHRtbEZvcihuc0FTdHJpbmcgJiBh
SHRtbEZvcikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0SHRtbEZvcihjb25zdCBuc0FTdHJp
bmcgJiBhSHRtbEZvcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRFdmVudChuc0FTdHJp
bmcgJiBhRXZlbnQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEV2ZW50KGNvbnN0IG5zQVN0
cmluZyAmIGFFdmVudCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDaGFyc2V0KG5zQVN0
cmluZyAmIGFDaGFyc2V0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDaGFyc2V0KGNvbnN0
IG5zQVN0cmluZyAmIGFDaGFyc2V0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERlZmVy
KFBSQm9vbCAqYURlZmVyKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXREZWZlcihQUkJvb2wg
YURlZmVyKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNyYyhuc0FTdHJpbmcgJiBhU3Jj
KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRTcmMoY29uc3QgbnNBU3RyaW5nICYgYVNyYykg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRUeXBlKG5zQVN0cmluZyAmIGFUeXBlKSA9IDA7
CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRUeXBlKGNvbnN0IG5zQVN0cmluZyAmIGFUeXBlKSA9IDA7
Cgp9OwojIDI0MSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2RvbS9uc0lET01OU0hUTUxTZWxlY3RFbGVtZW50LmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlz
dC9pbmNsdWRlL2RvbS9uc0lET01OU0hUTUxTZWxlY3RFbGVtZW50LmgiCmNsYXNzIG5zSURPTU5T
SFRNTFNlbGVjdEVsZW1lbnQgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0
aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZj
ZjkxMDUsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4
OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJdGVt
KFBSVWludDMyIGluZGV4LCBuc0lET01Ob2RlICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBOYW1lZEl0ZW0oY29uc3QgbnNBU3RyaW5nICYgbmFtZSwgbnNJRE9NTm9kZSAqKl9y
ZXR2YWwpID0gMDsKCn07CiMgMjQyICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxTdHlsZUVsZW1lbnQuaCIgMQojIDM0ICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxTdHlsZUVsZW1lbnQuaCIKY2xhc3MgbnNJ
RE9NSFRNTFN0eWxlRWxlbWVudCA6IHB1YmxpYyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6
CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQg
PSB7MHhhNmNmOTA4ZCwgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwg
MHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldERpc2FibGVkKFBSQm9vbCAqYURpc2FibGVkKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXREaXNhYmxlZChQUkJvb2wgYURpc2FibGVkKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldE1lZGlhKG5zQVN0cmluZyAmIGFNZWRpYSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0
TWVkaWEoY29uc3QgbnNBU3RyaW5nICYgYU1lZGlhKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldFR5cGUobnNBU3RyaW5nICYgYVR5cGUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFR5
cGUoY29uc3QgbnNBU3RyaW5nICYgYVR5cGUpID0gMDsKCn07CiMgMjQzICJuc0RPTUNsYXNzSW5m
by5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxUYWJsZUNh
cHRpb25FbGVtLmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1M
VGFibGVDYXB0aW9uRWxlbS5oIgpjbGFzcyBuc0lET01IVE1MVGFibGVDYXB0aW9uRWxlbWVudCA6
IHB1YmxpYyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJ
RCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTBiMywgMHgxNWIz
LCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgz
MiB9fTsgcmV0dXJuIGlpZDt9CiMgNDAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9N
SFRNTFRhYmxlQ2FwdGlvbkVsZW0uaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFsaWduKG5zQVN0
cmluZyAmIGFBbGlnbikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QWxpZ24oY29uc3QgbnNB
U3RyaW5nICYgYUFsaWduKSA9IDA7Cgp9OwojIDI0NCAibnNET01DbGFzc0luZm8uY3BwIiAyCiMg
MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MVGFibGVDZWxsRWxlbWVudC5o
IiAxCiMgMzQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NSFRNTFRhYmxlQ2VsbEVs
ZW1lbnQuaCIKY2xhc3MgbnNJRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQgOiBwdWJsaWMgbnNJRE9N
SFRNTEVsZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtz
dGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwYjcsIDB4MTViMywgMHgxMWQyLCB7IDB4
OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBp
aWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDZWxsSW5kZXgoUFJJbnQzMiAqYUNlbGxJbmRl
eCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBYmJyKG5zQVN0cmluZyAmIGFBYmJyKSA9
IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRBYmJyKGNvbnN0IG5zQVN0cmluZyAmIGFBYmJyKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFsaWduKG5zQVN0cmluZyAmIGFBbGlnbikgPSAw
OwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QWxpZ24oY29uc3QgbnNBU3RyaW5nICYgYUFsaWduKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEF4aXMobnNBU3RyaW5nICYgYUF4aXMpID0gMDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldEF4aXMoY29uc3QgbnNBU3RyaW5nICYgYUF4aXMpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QmdDb2xvcihuc0FTdHJpbmcgJiBhQmdDb2xvcikgPSAw
OwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QmdDb2xvcihjb25zdCBuc0FTdHJpbmcgJiBhQmdDb2xv
cikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDaChuc0FTdHJpbmcgJiBhQ2gpID0gMDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldENoKGNvbnN0IG5zQVN0cmluZyAmIGFDaCkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRDaE9mZihuc0FTdHJpbmcgJiBhQ2hPZmYpID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldENoT2ZmKGNvbnN0IG5zQVN0cmluZyAmIGFDaE9mZikgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRDb2xTcGFuKFBSSW50MzIgKmFDb2xTcGFuKSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXRDb2xTcGFuKFBSSW50MzIgYUNvbFNwYW4pID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0SGVhZGVycyhuc0FTdHJpbmcgJiBhSGVhZGVycykgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0SGVhZGVycyhjb25zdCBuc0FTdHJpbmcgJiBhSGVhZGVycykgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRIZWlnaHQobnNBU3RyaW5nICYgYUhlaWdodCkgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0SGVpZ2h0KGNvbnN0IG5zQVN0cmluZyAmIGFIZWlnaHQpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Tm9XcmFwKFBSQm9vbCAqYU5vV3JhcCkgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0Tm9XcmFwKFBSQm9vbCBhTm9XcmFwKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldFJvd1NwYW4oUFJJbnQzMiAqYVJvd1NwYW4pID0gMDsKICB2aXJ0dWFs
IG5zcmVzdWx0IFNldFJvd1NwYW4oUFJJbnQzMiBhUm93U3BhbikgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRTY29wZShuc0FTdHJpbmcgJiBhU2NvcGUpID0gMDsKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldFNjb3BlKGNvbnN0IG5zQVN0cmluZyAmIGFTY29wZSkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRWQWxpZ24obnNBU3RyaW5nICYgYVZBbGlnbikgPSAwOwogIHZpcnR1YWwgbnNy
ZXN1bHQgU2V0VkFsaWduKGNvbnN0IG5zQVN0cmluZyAmIGFWQWxpZ24pID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0V2lkdGgobnNBU3RyaW5nICYgYVdpZHRoKSA9IDA7CiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXRXaWR0aChjb25zdCBuc0FTdHJpbmcgJiBhV2lkdGgpID0gMDsKCn07CiMgMjQ1
ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25z
SURPTUhUTUxUYWJsZUNvbEVsZW1lbnQuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
ZG9tL25zSURPTUhUTUxUYWJsZUNvbEVsZW1lbnQuaCIKY2xhc3MgbnNJRE9NSFRNTFRhYmxlQ29s
RWxlbWVudCA6IHB1YmxpYyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6CgogIHN0YXRpYyBj
b25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTBi
NCwgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwg
MHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFsaWdu
KG5zQVN0cmluZyAmIGFBbGlnbikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QWxpZ24oY29u
c3QgbnNBU3RyaW5nICYgYUFsaWduKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENoKG5z
QVN0cmluZyAmIGFDaCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q2goY29uc3QgbnNBU3Ry
aW5nICYgYUNoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENoT2ZmKG5zQVN0cmluZyAm
IGFDaE9mZikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q2hPZmYoY29uc3QgbnNBU3RyaW5n
ICYgYUNoT2ZmKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNwYW4oUFJJbnQzMiAqYVNw
YW4pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNwYW4oUFJJbnQzMiBhU3BhbikgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRWQWxpZ24obnNBU3RyaW5nICYgYVZBbGlnbikgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0VkFsaWduKGNvbnN0IG5zQVN0cmluZyAmIGFWQWxpZ24pID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0V2lkdGgobnNBU3RyaW5nICYgYVdpZHRoKSA9IDA7
CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRXaWR0aChjb25zdCBuc0FTdHJpbmcgJiBhV2lkdGgpID0g
MDsKCn07CiMgMjQ2ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvZG9tL25zSURPTUhUTUxUYWJsZUVsZW1lbnQuaCIgMQojIDM0ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvZG9tL25zSURPTUhUTUxUYWJsZUVsZW1lbnQuaCIKY2xhc3MgbnNJRE9NSFRNTFRh
YmxlRWxlbWVudCA6IHB1YmxpYyBuc0lET01IVE1MRWxlbWVudCB7CiBwdWJsaWM6CgogIHN0YXRp
YyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNm
OTBiMiwgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4
YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENh
cHRpb24obnNJRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQgKiAqYUNhcHRpb24pID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldENhcHRpb24obnNJRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQg
KiBhQ2FwdGlvbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRUSGVhZChuc0lET01IVE1M
VGFibGVTZWN0aW9uRWxlbWVudCAqICphVEhlYWQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dFRIZWFkKG5zSURPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50ICogYVRIZWFkKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldFRGb290KG5zSURPTUhUTUxUYWJsZVNlY3Rpb25FbGVtZW50ICog
KmFURm9vdCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VEZvb3QobnNJRE9NSFRNTFRhYmxl
U2VjdGlvbkVsZW1lbnQgKiBhVEZvb3QpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Um93
cyhuc0lET01IVE1MQ29sbGVjdGlvbiAqICphUm93cykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRUQm9kaWVzKG5zSURPTUhUTUxDb2xsZWN0aW9uICogKmFUQm9kaWVzKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldEFsaWduKG5zQVN0cmluZyAmIGFBbGlnbikgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0QWxpZ24oY29uc3QgbnNBU3RyaW5nICYgYUFsaWduKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldEJnQ29sb3IobnNBU3RyaW5nICYgYUJnQ29sb3IpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldEJnQ29sb3IoY29uc3QgbnNBU3RyaW5nICYgYUJnQ29sb3IpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Qm9yZGVyKG5zQVN0cmluZyAmIGFCb3JkZXIpID0g
MDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEJvcmRlcihjb25zdCBuc0FTdHJpbmcgJiBhQm9yZGVy
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENlbGxQYWRkaW5nKG5zQVN0cmluZyAmIGFD
ZWxsUGFkZGluZykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q2VsbFBhZGRpbmcoY29uc3Qg
bnNBU3RyaW5nICYgYUNlbGxQYWRkaW5nKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENl
bGxTcGFjaW5nKG5zQVN0cmluZyAmIGFDZWxsU3BhY2luZykgPSAwOwogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0Q2VsbFNwYWNpbmcoY29uc3QgbnNBU3RyaW5nICYgYUNlbGxTcGFjaW5nKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldEZyYW1lKG5zQVN0cmluZyAmIGFGcmFtZSkgPSAwOwogIHZp
cnR1YWwgbnNyZXN1bHQgU2V0RnJhbWUoY29uc3QgbnNBU3RyaW5nICYgYUZyYW1lKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJ1bGVzKG5zQVN0cmluZyAmIGFSdWxlcykgPSAwOwogIHZp
cnR1YWwgbnNyZXN1bHQgU2V0UnVsZXMoY29uc3QgbnNBU3RyaW5nICYgYVJ1bGVzKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldFN1bW1hcnkobnNBU3RyaW5nICYgYVN1bW1hcnkpID0gMDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldFN1bW1hcnkoY29uc3QgbnNBU3RyaW5nICYgYVN1bW1hcnkp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0V2lkdGgobnNBU3RyaW5nICYgYVdpZHRoKSA9
IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRXaWR0aChjb25zdCBuc0FTdHJpbmcgJiBhV2lkdGgp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ3JlYXRlVEhlYWQobnNJRE9NSFRNTEVsZW1lbnQg
KipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IERlbGV0ZVRIZWFkKHZvaWQpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ3JlYXRlVEZvb3QobnNJRE9NSFRNTEVsZW1lbnQgKipf
cmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IERlbGV0ZVRGb290KHZvaWQpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgQ3JlYXRlQ2FwdGlvbihuc0lET01IVE1MRWxlbWVudCAqKl9y
ZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgRGVsZXRlQ2FwdGlvbih2b2lkKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEluc2VydFJvdyhQUkludDMyIGluZGV4LCBuc0lET01IVE1M
RWxlbWVudCAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgRGVsZXRlUm93KFBS
SW50MzIgaW5kZXgpID0gMDsKCn07CiMgMjQ3ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxUYWJsZVJvd0VsZW1lbnQuaCIgMQoj
IDM0ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUhUTUxUYWJsZVJvd0VsZW1lbnQu
aCIKY2xhc3MgbnNJRE9NSFRNTFRhYmxlUm93RWxlbWVudCA6IHB1YmxpYyBuc0lET01IVE1MRWxl
bWVudCB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBj
b25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTBiNiwgMHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgy
ZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJvd0luZGV4KFBSSW50MzIgKmFSb3dJbmRleCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTZWN0aW9uUm93SW5kZXgoUFJJbnQzMiAqYVNlY3Rpb25S
b3dJbmRleCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDZWxscyhuc0lET01IVE1MQ29s
bGVjdGlvbiAqICphQ2VsbHMpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QWxpZ24obnNB
U3RyaW5nICYgYUFsaWduKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRBbGlnbihjb25zdCBu
c0FTdHJpbmcgJiBhQWxpZ24pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QmdDb2xvcihu
c0FTdHJpbmcgJiBhQmdDb2xvcikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QmdDb2xvcihj
b25zdCBuc0FTdHJpbmcgJiBhQmdDb2xvcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRD
aChuc0FTdHJpbmcgJiBhQ2gpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENoKGNvbnN0IG5z
QVN0cmluZyAmIGFDaCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDaE9mZihuc0FTdHJp
bmcgJiBhQ2hPZmYpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENoT2ZmKGNvbnN0IG5zQVN0
cmluZyAmIGFDaE9mZikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRWQWxpZ24obnNBU3Ry
aW5nICYgYVZBbGlnbikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VkFsaWduKGNvbnN0IG5z
QVN0cmluZyAmIGFWQWxpZ24pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSW5zZXJ0Q2VsbChQ
UkludDMyIGluZGV4LCBuc0lET01IVE1MRWxlbWVudCAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgRGVsZXRlQ2VsbChQUkludDMyIGluZGV4KSA9IDA7Cgp9OwojIDI0OCAibnNE
T01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01I
VE1MVGFibGVTZWN0aW9uRWxlbS5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20v
bnNJRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW0uaCIKY2xhc3MgbnNJRE9NSFRNTFRhYmxlU2VjdGlv
bkVsZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMg
Y29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkw
YjUsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEs
IDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQojIDQwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUv
ZG9tL25zSURPTUhUTUxUYWJsZVNlY3Rpb25FbGVtLmgiCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRB
bGlnbihuc0FTdHJpbmcgJiBhQWxpZ24pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFsaWdu
KGNvbnN0IG5zQVN0cmluZyAmIGFBbGlnbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRD
aChuc0FTdHJpbmcgJiBhQ2gpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENoKGNvbnN0IG5z
QVN0cmluZyAmIGFDaCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDaE9mZihuc0FTdHJp
bmcgJiBhQ2hPZmYpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENoT2ZmKGNvbnN0IG5zQVN0
cmluZyAmIGFDaE9mZikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRWQWxpZ24obnNBU3Ry
aW5nICYgYVZBbGlnbikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VkFsaWduKGNvbnN0IG5z
QVN0cmluZyAmIGFWQWxpZ24pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Um93cyhuc0lE
T01IVE1MQ29sbGVjdGlvbiAqICphUm93cykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJbnNl
cnRSb3coUFJJbnQzMiBpbmRleCwgbnNJRE9NSFRNTEVsZW1lbnQgKipfcmV0dmFsKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IERlbGV0ZVJvdyhQUkludDMyIGluZGV4KSA9IDA7Cgp9OwojIDI0
OSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9u
c0lET01IVE1MVGV4dEFyZWFFbGVtZW50LmgiIDEKIyAzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRl
L2RvbS9uc0lET01IVE1MVGV4dEFyZWFFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxUZXh0QXJl
YUVsZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMg
Y29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkw
OTQsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEs
IDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREZWZh
dWx0VmFsdWUobnNBU3RyaW5nICYgYURlZmF1bHRWYWx1ZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0RGVmYXVsdFZhbHVlKGNvbnN0IG5zQVN0cmluZyAmIGFEZWZhdWx0VmFsdWUpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Rm9ybShuc0lET01IVE1MRm9ybUVsZW1lbnQgKiAqYUZv
cm0pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QWNjZXNzS2V5KG5zQVN0cmluZyAmIGFB
Y2Nlc3NLZXkpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFjY2Vzc0tleShjb25zdCBuc0FT
dHJpbmcgJiBhQWNjZXNzS2V5KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbHMoUFJJ
bnQzMiAqYUNvbHMpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENvbHMoUFJJbnQzMiBhQ29s
cykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREaXNhYmxlZChQUkJvb2wgKmFEaXNhYmxl
ZCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RGlzYWJsZWQoUFJCb29sIGFEaXNhYmxlZCkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROYW1lKG5zQVN0cmluZyAmIGFOYW1lKSA9IDA7
CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXROYW1lKGNvbnN0IG5zQVN0cmluZyAmIGFOYW1lKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJlYWRPbmx5KFBSQm9vbCAqYVJlYWRPbmx5KSA9IDA7
CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRSZWFkT25seShQUkJvb2wgYVJlYWRPbmx5KSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJvd3MoUFJJbnQzMiAqYVJvd3MpID0gMDsKICB2aXJ0dWFs
IG5zcmVzdWx0IFNldFJvd3MoUFJJbnQzMiBhUm93cykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRUYWJJbmRleChQUkludDMyICphVGFiSW5kZXgpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0
IFNldFRhYkluZGV4KFBSSW50MzIgYVRhYkluZGV4KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldFR5cGUobnNBU3RyaW5nICYgYVR5cGUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
VmFsdWUobnNBU3RyaW5nICYgYVZhbHVlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRWYWx1
ZShjb25zdCBuc0FTdHJpbmcgJiBhVmFsdWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQmx1
cih2b2lkKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEZvY3VzKHZvaWQpID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgU2VsZWN0KHZvaWQpID0gMDsKCn07CiMgMjUwICJuc0RPTUNsYXNzSW5m
by5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTU5TSFRNTFRleHRB
cmVhRWxlbWVudC5oIiAxCiMgMTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NTlNI
VE1MVGV4dEFyZWFFbGVtZW50LmgiCmNsYXNzIG5zSUNvbnRyb2xsZXJzOwojIDI3ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvZG9tL25zSURPTU5TSFRNTFRleHRBcmVhRWxlbWVudC5oIgpjbGFzcyBu
c0lET01OU0hUTUxUZXh0QXJlYUVsZW1lbnQgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGlj
OgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlk
ID0gezB4Y2EwNjZiNDQsIDB4OWRkZiwgMHgxMWQzLCB7IDB4YmMsIDB4Y2MsIDB4MDAsIDB4NjAs
IDB4YjAsIDB4ZmMsIDB4NzYsIDB4YmQgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRDb250cm9sbGVycyhuc0lDb250cm9sbGVycyAqICphQ29udHJvbGxlcnMpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VGV4dExlbmd0aChQUkludDMyICphVGV4dExlbmd0aCkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTZWxlY3Rpb25TdGFydChQUkludDMyICphU2Vs
ZWN0aW9uU3RhcnQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNlbGVjdGlvblN0YXJ0KFBS
SW50MzIgYVNlbGVjdGlvblN0YXJ0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNlbGVj
dGlvbkVuZChQUkludDMyICphU2VsZWN0aW9uRW5kKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBT
ZXRTZWxlY3Rpb25FbmQoUFJJbnQzMiBhU2VsZWN0aW9uRW5kKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IFNldFNlbGVjdGlvblJhbmdlKFBSSW50MzIgc2VsZWN0aW9uU3RhcnQsIFBSSW50MzIg
c2VsZWN0aW9uRW5kKSA9IDA7Cgp9OwojIDI1MSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MVGl0bGVFbGVtZW50LmgiIDEKIyAz
NCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01IVE1MVGl0bGVFbGVtZW50LmgiCmNs
YXNzIG5zSURPTUhUTUxUaXRsZUVsZW1lbnQgOiBwdWJsaWMgbnNJRE9NSFRNTEVsZW1lbnQgewog
cHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJ
SUQgaWlkID0gezB4YTZjZjkwODksIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAs
IDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRUZXh0KG5zQVN0cmluZyAmIGFUZXh0KSA9IDA7CiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXRUZXh0KGNvbnN0IG5zQVN0cmluZyAmIGFUZXh0KSA9IDA7Cgp9OwojIDI1MiAibnNE
T01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01I
VE1MVUxpc3RFbGVtZW50LmgiIDEKIyAzNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lE
T01IVE1MVUxpc3RFbGVtZW50LmgiCmNsYXNzIG5zSURPTUhUTUxVTGlzdEVsZW1lbnQgOiBwdWJs
aWMgbnNJRE9NSFRNTEVsZW1lbnQgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdl
dElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwOTksIDB4MTViMywgMHgx
MWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07
IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb21wYWN0KFBSQm9vbCAqYUNv
bXBhY3QpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENvbXBhY3QoUFJCb29sIGFDb21wYWN0
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFR5cGUobnNBU3RyaW5nICYgYVR5cGUpID0g
MDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFR5cGUoY29uc3QgbnNBU3RyaW5nICYgYVR5cGUpID0g
MDsKCn07CiMgMjUzICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvZG9tL25zSURPTU5TVUlFdmVudC5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVk
ZS9kb20vbnNJRE9NTlNVSUV2ZW50LmgiCmNsYXNzIG5zSURPTU5TVUlFdmVudCA6IHB1YmxpYyBu
c0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0
YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTBjNCwgMHgxNWIzLCAweDExZDIsIHsgMHg5
MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhkZCwgMHgzMiB9fTsgcmV0dXJuIGlp
ZDt9CgogIGVudW0geyBTQ1JPTExfUEFHRV9VUCA9IC0zMjc2OCB9OwoKICBlbnVtIHsgU0NST0xM
X1BBR0VfRE9XTiA9IDMyNzY4IH07CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByZXZlbnREZWZh
dWx0KFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMYXllclgo
UFJJbnQzMiAqYUxheWVyWCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMYXllclkoUFJJ
bnQzMiAqYUxheWVyWSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQYWdlWChQUkludDMy
ICphUGFnZVgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UGFnZVkoUFJJbnQzMiAqYVBh
Z2VZKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFdoaWNoKFBSVWludDMyICphV2hpY2gp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UmFuZ2VQYXJlbnQobnNJRE9NTm9kZSAqICph
UmFuZ2VQYXJlbnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UmFuZ2VPZmZzZXQoUFJJ
bnQzMiAqYVJhbmdlT2Zmc2V0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENhbmNlbEJ1
YmJsZShQUkJvb2wgKmFDYW5jZWxCdWJibGUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENh
bmNlbEJ1YmJsZShQUkJvb2wgYUNhbmNlbEJ1YmJsZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRJc0NoYXIoUFJCb29sICphSXNDaGFyKSA9IDA7Cgp9OwojIDI1NCAibnNET01DbGFzc0lu
Zm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01DU1MyUHJvcGVy
dGllcy5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NQ1NTMlByb3Bl
cnRpZXMuaCIKY2xhc3MgbnNJRE9NQ1NTMlByb3BlcnRpZXMgOiBwdWJsaWMgbnNJU3VwcG9ydHMg
ewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3Qg
bnNJSUQgaWlkID0gezB4YTZjZjkwZDEsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4
MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRBemltdXRoKG5zQVN0cmluZyAmIGFBemltdXRoKSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXRBemltdXRoKGNvbnN0IG5zQVN0cmluZyAmIGFBemltdXRoKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEJhY2tncm91bmQobnNBU3RyaW5nICYgYUJhY2tncm91
bmQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEJhY2tncm91bmQoY29uc3QgbnNBU3RyaW5n
ICYgYUJhY2tncm91bmQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QmFja2dyb3VuZEF0
dGFjaG1lbnQobnNBU3RyaW5nICYgYUJhY2tncm91bmRBdHRhY2htZW50KSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRCYWNrZ3JvdW5kQXR0YWNobWVudChjb25zdCBuc0FTdHJpbmcgJiBhQmFj
a2dyb3VuZEF0dGFjaG1lbnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QmFja2dyb3Vu
ZENvbG9yKG5zQVN0cmluZyAmIGFCYWNrZ3JvdW5kQ29sb3IpID0gMDsKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldEJhY2tncm91bmRDb2xvcihjb25zdCBuc0FTdHJpbmcgJiBhQmFja2dyb3VuZENvbG9y
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEJhY2tncm91bmRJbWFnZShuc0FTdHJpbmcg
JiBhQmFja2dyb3VuZEltYWdlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRCYWNrZ3JvdW5k
SW1hZ2UoY29uc3QgbnNBU3RyaW5nICYgYUJhY2tncm91bmRJbWFnZSkgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRCYWNrZ3JvdW5kUG9zaXRpb24obnNBU3RyaW5nICYgYUJhY2tncm91bmRQ
b3NpdGlvbikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QmFja2dyb3VuZFBvc2l0aW9uKGNv
bnN0IG5zQVN0cmluZyAmIGFCYWNrZ3JvdW5kUG9zaXRpb24pID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0QmFja2dyb3VuZFJlcGVhdChuc0FTdHJpbmcgJiBhQmFja2dyb3VuZFJlcGVhdCkg
PSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0QmFja2dyb3VuZFJlcGVhdChjb25zdCBuc0FTdHJp
bmcgJiBhQmFja2dyb3VuZFJlcGVhdCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRCb3Jk
ZXIobnNBU3RyaW5nICYgYUJvcmRlcikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Qm9yZGVy
KGNvbnN0IG5zQVN0cmluZyAmIGFCb3JkZXIpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
Qm9yZGVyQ29sbGFwc2UobnNBU3RyaW5nICYgYUJvcmRlckNvbGxhcHNlKSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRCb3JkZXJDb2xsYXBzZShjb25zdCBuc0FTdHJpbmcgJiBhQm9yZGVyQ29s
bGFwc2UpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Qm9yZGVyQ29sb3IobnNBU3RyaW5n
ICYgYUJvcmRlckNvbG9yKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRCb3JkZXJDb2xvcihj
b25zdCBuc0FTdHJpbmcgJiBhQm9yZGVyQ29sb3IpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0Qm9yZGVyU3BhY2luZyhuc0FTdHJpbmcgJiBhQm9yZGVyU3BhY2luZykgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0Qm9yZGVyU3BhY2luZyhjb25zdCBuc0FTdHJpbmcgJiBhQm9yZGVyU3Bh
Y2luZykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRCb3JkZXJTdHlsZShuc0FTdHJpbmcg
JiBhQm9yZGVyU3R5bGUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEJvcmRlclN0eWxlKGNv
bnN0IG5zQVN0cmluZyAmIGFCb3JkZXJTdHlsZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRCb3JkZXJUb3AobnNBU3RyaW5nICYgYUJvcmRlclRvcCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0Qm9yZGVyVG9wKGNvbnN0IG5zQVN0cmluZyAmIGFCb3JkZXJUb3ApID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0Qm9yZGVyUmlnaHQobnNBU3RyaW5nICYgYUJvcmRlclJpZ2h0KSA9
IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRCb3JkZXJSaWdodChjb25zdCBuc0FTdHJpbmcgJiBh
Qm9yZGVyUmlnaHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Qm9yZGVyQm90dG9tKG5z
QVN0cmluZyAmIGFCb3JkZXJCb3R0b20pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEJvcmRl
ckJvdHRvbShjb25zdCBuc0FTdHJpbmcgJiBhQm9yZGVyQm90dG9tKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldEJvcmRlckxlZnQobnNBU3RyaW5nICYgYUJvcmRlckxlZnQpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldEJvcmRlckxlZnQoY29uc3QgbnNBU3RyaW5nICYgYUJvcmRlckxl
ZnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Qm9yZGVyVG9wQ29sb3IobnNBU3RyaW5n
ICYgYUJvcmRlclRvcENvbG9yKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRCb3JkZXJUb3BD
b2xvcihjb25zdCBuc0FTdHJpbmcgJiBhQm9yZGVyVG9wQ29sb3IpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0Qm9yZGVyUmlnaHRDb2xvcihuc0FTdHJpbmcgJiBhQm9yZGVyUmlnaHRDb2xv
cikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Qm9yZGVyUmlnaHRDb2xvcihjb25zdCBuc0FT
dHJpbmcgJiBhQm9yZGVyUmlnaHRDb2xvcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRC
b3JkZXJCb3R0b21Db2xvcihuc0FTdHJpbmcgJiBhQm9yZGVyQm90dG9tQ29sb3IpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldEJvcmRlckJvdHRvbUNvbG9yKGNvbnN0IG5zQVN0cmluZyAmIGFC
b3JkZXJCb3R0b21Db2xvcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRCb3JkZXJMZWZ0
Q29sb3IobnNBU3RyaW5nICYgYUJvcmRlckxlZnRDb2xvcikgPSAwOwogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0Qm9yZGVyTGVmdENvbG9yKGNvbnN0IG5zQVN0cmluZyAmIGFCb3JkZXJMZWZ0Q29sb3Ip
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Qm9yZGVyVG9wU3R5bGUobnNBU3RyaW5nICYg
YUJvcmRlclRvcFN0eWxlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRCb3JkZXJUb3BTdHls
ZShjb25zdCBuc0FTdHJpbmcgJiBhQm9yZGVyVG9wU3R5bGUpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0Qm9yZGVyUmlnaHRTdHlsZShuc0FTdHJpbmcgJiBhQm9yZGVyUmlnaHRTdHlsZSkg
PSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Qm9yZGVyUmlnaHRTdHlsZShjb25zdCBuc0FTdHJp
bmcgJiBhQm9yZGVyUmlnaHRTdHlsZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRCb3Jk
ZXJCb3R0b21TdHlsZShuc0FTdHJpbmcgJiBhQm9yZGVyQm90dG9tU3R5bGUpID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldEJvcmRlckJvdHRvbVN0eWxlKGNvbnN0IG5zQVN0cmluZyAmIGFCb3Jk
ZXJCb3R0b21TdHlsZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRCb3JkZXJMZWZ0U3R5
bGUobnNBU3RyaW5nICYgYUJvcmRlckxlZnRTdHlsZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQg
U2V0Qm9yZGVyTGVmdFN0eWxlKGNvbnN0IG5zQVN0cmluZyAmIGFCb3JkZXJMZWZ0U3R5bGUpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Qm9yZGVyVG9wV2lkdGgobnNBU3RyaW5nICYgYUJv
cmRlclRvcFdpZHRoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRCb3JkZXJUb3BXaWR0aChj
b25zdCBuc0FTdHJpbmcgJiBhQm9yZGVyVG9wV2lkdGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0Qm9yZGVyUmlnaHRXaWR0aChuc0FTdHJpbmcgJiBhQm9yZGVyUmlnaHRXaWR0aCkgPSAw
OwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Qm9yZGVyUmlnaHRXaWR0aChjb25zdCBuc0FTdHJpbmcg
JiBhQm9yZGVyUmlnaHRXaWR0aCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRCb3JkZXJC
b3R0b21XaWR0aChuc0FTdHJpbmcgJiBhQm9yZGVyQm90dG9tV2lkdGgpID0gMDsKICB2aXJ0dWFs
IG5zcmVzdWx0IFNldEJvcmRlckJvdHRvbVdpZHRoKGNvbnN0IG5zQVN0cmluZyAmIGFCb3JkZXJC
b3R0b21XaWR0aCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRCb3JkZXJMZWZ0V2lkdGgo
bnNBU3RyaW5nICYgYUJvcmRlckxlZnRXaWR0aCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0
Qm9yZGVyTGVmdFdpZHRoKGNvbnN0IG5zQVN0cmluZyAmIGFCb3JkZXJMZWZ0V2lkdGgpID0gMDsK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Qm9yZGVyV2lkdGgobnNBU3RyaW5nICYgYUJvcmRlcldp
ZHRoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRCb3JkZXJXaWR0aChjb25zdCBuc0FTdHJp
bmcgJiBhQm9yZGVyV2lkdGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Qm90dG9tKG5z
QVN0cmluZyAmIGFCb3R0b20pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEJvdHRvbShjb25z
dCBuc0FTdHJpbmcgJiBhQm90dG9tKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENhcHRp
b25TaWRlKG5zQVN0cmluZyAmIGFDYXB0aW9uU2lkZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQg
U2V0Q2FwdGlvblNpZGUoY29uc3QgbnNBU3RyaW5nICYgYUNhcHRpb25TaWRlKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldENsZWFyKG5zQVN0cmluZyAmIGFDbGVhcikgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0Q2xlYXIoY29uc3QgbnNBU3RyaW5nICYgYUNsZWFyKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEdldENsaXAobnNBU3RyaW5nICYgYUNsaXApID0gMDsKICB2aXJ0dWFs
IG5zcmVzdWx0IFNldENsaXAoY29uc3QgbnNBU3RyaW5nICYgYUNsaXApID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0Q29sb3IobnNBU3RyaW5nICYgYUNvbG9yKSA9IDA7CiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXRDb2xvcihjb25zdCBuc0FTdHJpbmcgJiBhQ29sb3IpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0Q29udGVudChuc0FTdHJpbmcgJiBhQ29udGVudCkgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0Q29udGVudChjb25zdCBuc0FTdHJpbmcgJiBhQ29udGVudCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb3VudGVySW5jcmVtZW50KG5zQVN0cmluZyAmIGFDb3Vu
dGVySW5jcmVtZW50KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDb3VudGVySW5jcmVtZW50
KGNvbnN0IG5zQVN0cmluZyAmIGFDb3VudGVySW5jcmVtZW50KSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldENvdW50ZXJSZXNldChuc0FTdHJpbmcgJiBhQ291bnRlclJlc2V0KSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXRDb3VudGVyUmVzZXQoY29uc3QgbnNBU3RyaW5nICYgYUNvdW50
ZXJSZXNldCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDdWUobnNBU3RyaW5nICYgYUN1
ZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q3VlKGNvbnN0IG5zQVN0cmluZyAmIGFDdWUp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q3VlQWZ0ZXIobnNBU3RyaW5nICYgYUN1ZUFm
dGVyKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDdWVBZnRlcihjb25zdCBuc0FTdHJpbmcg
JiBhQ3VlQWZ0ZXIpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q3VlQmVmb3JlKG5zQVN0
cmluZyAmIGFDdWVCZWZvcmUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEN1ZUJlZm9yZShj
b25zdCBuc0FTdHJpbmcgJiBhQ3VlQmVmb3JlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dEN1cnNvcihuc0FTdHJpbmcgJiBhQ3Vyc29yKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRD
dXJzb3IoY29uc3QgbnNBU3RyaW5nICYgYUN1cnNvcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXREaXJlY3Rpb24obnNBU3RyaW5nICYgYURpcmVjdGlvbikgPSAwOwogIHZpcnR1YWwgbnNy
ZXN1bHQgU2V0RGlyZWN0aW9uKGNvbnN0IG5zQVN0cmluZyAmIGFEaXJlY3Rpb24pID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0RGlzcGxheShuc0FTdHJpbmcgJiBhRGlzcGxheSkgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0RGlzcGxheShjb25zdCBuc0FTdHJpbmcgJiBhRGlzcGxheSkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRFbGV2YXRpb24obnNBU3RyaW5nICYgYUVsZXZh
dGlvbikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RWxldmF0aW9uKGNvbnN0IG5zQVN0cmlu
ZyAmIGFFbGV2YXRpb24pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RW1wdHlDZWxscyhu
c0FTdHJpbmcgJiBhRW1wdHlDZWxscykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RW1wdHlD
ZWxscyhjb25zdCBuc0FTdHJpbmcgJiBhRW1wdHlDZWxscykgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRDc3NGbG9hdChuc0FTdHJpbmcgJiBhQ3NzRmxvYXQpID0gMDsKICB2aXJ0dWFsIG5z
cmVzdWx0IFNldENzc0Zsb2F0KGNvbnN0IG5zQVN0cmluZyAmIGFDc3NGbG9hdCkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRGb250KG5zQVN0cmluZyAmIGFGb250KSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRGb250KGNvbnN0IG5zQVN0cmluZyAmIGFGb250KSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldEZvbnRGYW1pbHkobnNBU3RyaW5nICYgYUZvbnRGYW1pbHkpID0gMDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldEZvbnRGYW1pbHkoY29uc3QgbnNBU3RyaW5nICYgYUZvbnRG
YW1pbHkpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Rm9udFNpemUobnNBU3RyaW5nICYg
YUZvbnRTaXplKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRGb250U2l6ZShjb25zdCBuc0FT
dHJpbmcgJiBhRm9udFNpemUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Rm9udFNpemVB
ZGp1c3QobnNBU3RyaW5nICYgYUZvbnRTaXplQWRqdXN0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRGb250U2l6ZUFkanVzdChjb25zdCBuc0FTdHJpbmcgJiBhRm9udFNpemVBZGp1c3QpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Rm9udFN0cmV0Y2gobnNBU3RyaW5nICYgYUZvbnRT
dHJldGNoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRGb250U3RyZXRjaChjb25zdCBuc0FT
dHJpbmcgJiBhRm9udFN0cmV0Y2gpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Rm9udFN0
eWxlKG5zQVN0cmluZyAmIGFGb250U3R5bGUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEZv
bnRTdHlsZShjb25zdCBuc0FTdHJpbmcgJiBhRm9udFN0eWxlKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldEZvbnRWYXJpYW50KG5zQVN0cmluZyAmIGFGb250VmFyaWFudCkgPSAwOwogIHZp
cnR1YWwgbnNyZXN1bHQgU2V0Rm9udFZhcmlhbnQoY29uc3QgbnNBU3RyaW5nICYgYUZvbnRWYXJp
YW50KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEZvbnRXZWlnaHQobnNBU3RyaW5nICYg
YUZvbnRXZWlnaHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEZvbnRXZWlnaHQoY29uc3Qg
bnNBU3RyaW5nICYgYUZvbnRXZWlnaHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SGVp
Z2h0KG5zQVN0cmluZyAmIGFIZWlnaHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEhlaWdo
dChjb25zdCBuc0FTdHJpbmcgJiBhSGVpZ2h0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dExlZnQobnNBU3RyaW5nICYgYUxlZnQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldExlZnQo
Y29uc3QgbnNBU3RyaW5nICYgYUxlZnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGV0
dGVyU3BhY2luZyhuc0FTdHJpbmcgJiBhTGV0dGVyU3BhY2luZykgPSAwOwogIHZpcnR1YWwgbnNy
ZXN1bHQgU2V0TGV0dGVyU3BhY2luZyhjb25zdCBuc0FTdHJpbmcgJiBhTGV0dGVyU3BhY2luZykg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMaW5lSGVpZ2h0KG5zQVN0cmluZyAmIGFMaW5l
SGVpZ2h0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRMaW5lSGVpZ2h0KGNvbnN0IG5zQVN0
cmluZyAmIGFMaW5lSGVpZ2h0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldExpc3RTdHls
ZShuc0FTdHJpbmcgJiBhTGlzdFN0eWxlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRMaXN0
U3R5bGUoY29uc3QgbnNBU3RyaW5nICYgYUxpc3RTdHlsZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRMaXN0U3R5bGVJbWFnZShuc0FTdHJpbmcgJiBhTGlzdFN0eWxlSW1hZ2UpID0gMDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldExpc3RTdHlsZUltYWdlKGNvbnN0IG5zQVN0cmluZyAmIGFM
aXN0U3R5bGVJbWFnZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMaXN0U3R5bGVQb3Np
dGlvbihuc0FTdHJpbmcgJiBhTGlzdFN0eWxlUG9zaXRpb24pID0gMDsKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldExpc3RTdHlsZVBvc2l0aW9uKGNvbnN0IG5zQVN0cmluZyAmIGFMaXN0U3R5bGVQb3Np
dGlvbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMaXN0U3R5bGVUeXBlKG5zQVN0cmlu
ZyAmIGFMaXN0U3R5bGVUeXBlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRMaXN0U3R5bGVU
eXBlKGNvbnN0IG5zQVN0cmluZyAmIGFMaXN0U3R5bGVUeXBlKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldE1hcmdpbihuc0FTdHJpbmcgJiBhTWFyZ2luKSA9IDA7CiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXRNYXJnaW4oY29uc3QgbnNBU3RyaW5nICYgYU1hcmdpbikgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBHZXRNYXJnaW5Ub3AobnNBU3RyaW5nICYgYU1hcmdpblRvcCkgPSAwOwogIHZp
cnR1YWwgbnNyZXN1bHQgU2V0TWFyZ2luVG9wKGNvbnN0IG5zQVN0cmluZyAmIGFNYXJnaW5Ub3Ap
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TWFyZ2luUmlnaHQobnNBU3RyaW5nICYgYU1h
cmdpblJpZ2h0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRNYXJnaW5SaWdodChjb25zdCBu
c0FTdHJpbmcgJiBhTWFyZ2luUmlnaHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TWFy
Z2luQm90dG9tKG5zQVN0cmluZyAmIGFNYXJnaW5Cb3R0b20pID0gMDsKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldE1hcmdpbkJvdHRvbShjb25zdCBuc0FTdHJpbmcgJiBhTWFyZ2luQm90dG9tKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1hcmdpbkxlZnQobnNBU3RyaW5nICYgYU1hcmdpbkxl
ZnQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1hcmdpbkxlZnQoY29uc3QgbnNBU3RyaW5n
ICYgYU1hcmdpbkxlZnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TWFya2VyT2Zmc2V0
KG5zQVN0cmluZyAmIGFNYXJrZXJPZmZzZXQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1h
cmtlck9mZnNldChjb25zdCBuc0FTdHJpbmcgJiBhTWFya2VyT2Zmc2V0KSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldE1hcmtzKG5zQVN0cmluZyAmIGFNYXJrcykgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0TWFya3MoY29uc3QgbnNBU3RyaW5nICYgYU1hcmtzKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldE1heEhlaWdodChuc0FTdHJpbmcgJiBhTWF4SGVpZ2h0KSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXRNYXhIZWlnaHQoY29uc3QgbnNBU3RyaW5nICYgYU1heEhlaWdo
dCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNYXhXaWR0aChuc0FTdHJpbmcgJiBhTWF4
V2lkdGgpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1heFdpZHRoKGNvbnN0IG5zQVN0cmlu
ZyAmIGFNYXhXaWR0aCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNaW5IZWlnaHQobnNB
U3RyaW5nICYgYU1pbkhlaWdodCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TWluSGVpZ2h0
KGNvbnN0IG5zQVN0cmluZyAmIGFNaW5IZWlnaHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0TWluV2lkdGgobnNBU3RyaW5nICYgYU1pbldpZHRoKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRNaW5XaWR0aChjb25zdCBuc0FTdHJpbmcgJiBhTWluV2lkdGgpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0T3JwaGFucyhuc0FTdHJpbmcgJiBhT3JwaGFucykgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0T3JwaGFucyhjb25zdCBuc0FTdHJpbmcgJiBhT3JwaGFucykgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRPdXRsaW5lKG5zQVN0cmluZyAmIGFPdXRsaW5lKSA9IDA7
CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRPdXRsaW5lKGNvbnN0IG5zQVN0cmluZyAmIGFPdXRsaW5l
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE91dGxpbmVDb2xvcihuc0FTdHJpbmcgJiBh
T3V0bGluZUNvbG9yKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRPdXRsaW5lQ29sb3IoY29u
c3QgbnNBU3RyaW5nICYgYU91dGxpbmVDb2xvcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRPdXRsaW5lU3R5bGUobnNBU3RyaW5nICYgYU91dGxpbmVTdHlsZSkgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0T3V0bGluZVN0eWxlKGNvbnN0IG5zQVN0cmluZyAmIGFPdXRsaW5lU3R5bGUp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0T3V0bGluZVdpZHRoKG5zQVN0cmluZyAmIGFP
dXRsaW5lV2lkdGgpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE91dGxpbmVXaWR0aChjb25z
dCBuc0FTdHJpbmcgJiBhT3V0bGluZVdpZHRoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dE92ZXJmbG93KG5zQVN0cmluZyAmIGFPdmVyZmxvdykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQg
U2V0T3ZlcmZsb3coY29uc3QgbnNBU3RyaW5nICYgYU92ZXJmbG93KSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldFBhZGRpbmcobnNBU3RyaW5nICYgYVBhZGRpbmcpID0gMDsKICB2aXJ0dWFs
IG5zcmVzdWx0IFNldFBhZGRpbmcoY29uc3QgbnNBU3RyaW5nICYgYVBhZGRpbmcpID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0UGFkZGluZ1RvcChuc0FTdHJpbmcgJiBhUGFkZGluZ1RvcCkg
PSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UGFkZGluZ1RvcChjb25zdCBuc0FTdHJpbmcgJiBh
UGFkZGluZ1RvcCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQYWRkaW5nUmlnaHQobnNB
U3RyaW5nICYgYVBhZGRpbmdSaWdodCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UGFkZGlu
Z1JpZ2h0KGNvbnN0IG5zQVN0cmluZyAmIGFQYWRkaW5nUmlnaHQpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0UGFkZGluZ0JvdHRvbShuc0FTdHJpbmcgJiBhUGFkZGluZ0JvdHRvbSkgPSAw
OwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UGFkZGluZ0JvdHRvbShjb25zdCBuc0FTdHJpbmcgJiBh
UGFkZGluZ0JvdHRvbSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQYWRkaW5nTGVmdChu
c0FTdHJpbmcgJiBhUGFkZGluZ0xlZnQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFBhZGRp
bmdMZWZ0KGNvbnN0IG5zQVN0cmluZyAmIGFQYWRkaW5nTGVmdCkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRQYWdlKG5zQVN0cmluZyAmIGFQYWdlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRQYWdlKGNvbnN0IG5zQVN0cmluZyAmIGFQYWdlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldFBhZ2VCcmVha0FmdGVyKG5zQVN0cmluZyAmIGFQYWdlQnJlYWtBZnRlcikgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0UGFnZUJyZWFrQWZ0ZXIoY29uc3QgbnNBU3RyaW5nICYgYVBh
Z2VCcmVha0FmdGVyKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBhZ2VCcmVha0JlZm9y
ZShuc0FTdHJpbmcgJiBhUGFnZUJyZWFrQmVmb3JlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBT
ZXRQYWdlQnJlYWtCZWZvcmUoY29uc3QgbnNBU3RyaW5nICYgYVBhZ2VCcmVha0JlZm9yZSkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQYWdlQnJlYWtJbnNpZGUobnNBU3RyaW5nICYgYVBh
Z2VCcmVha0luc2lkZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UGFnZUJyZWFrSW5zaWRl
KGNvbnN0IG5zQVN0cmluZyAmIGFQYWdlQnJlYWtJbnNpZGUpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0UGF1c2UobnNBU3RyaW5nICYgYVBhdXNlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRQYXVzZShjb25zdCBuc0FTdHJpbmcgJiBhUGF1c2UpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0UGF1c2VBZnRlcihuc0FTdHJpbmcgJiBhUGF1c2VBZnRlcikgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0UGF1c2VBZnRlcihjb25zdCBuc0FTdHJpbmcgJiBhUGF1c2VBZnRlcikg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQYXVzZUJlZm9yZShuc0FTdHJpbmcgJiBhUGF1
c2VCZWZvcmUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFBhdXNlQmVmb3JlKGNvbnN0IG5z
QVN0cmluZyAmIGFQYXVzZUJlZm9yZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQaXRj
aChuc0FTdHJpbmcgJiBhUGl0Y2gpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFBpdGNoKGNv
bnN0IG5zQVN0cmluZyAmIGFQaXRjaCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQaXRj
aFJhbmdlKG5zQVN0cmluZyAmIGFQaXRjaFJhbmdlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBT
ZXRQaXRjaFJhbmdlKGNvbnN0IG5zQVN0cmluZyAmIGFQaXRjaFJhbmdlKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldFBsYXlEdXJpbmcobnNBU3RyaW5nICYgYVBsYXlEdXJpbmcpID0gMDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldFBsYXlEdXJpbmcoY29uc3QgbnNBU3RyaW5nICYgYVBsYXlE
dXJpbmcpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UG9zaXRpb24obnNBU3RyaW5nICYg
YVBvc2l0aW9uKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRQb3NpdGlvbihjb25zdCBuc0FT
dHJpbmcgJiBhUG9zaXRpb24pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UXVvdGVzKG5z
QVN0cmluZyAmIGFRdW90ZXMpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFF1b3Rlcyhjb25z
dCBuc0FTdHJpbmcgJiBhUXVvdGVzKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJpY2hu
ZXNzKG5zQVN0cmluZyAmIGFSaWNobmVzcykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Umlj
aG5lc3MoY29uc3QgbnNBU3RyaW5nICYgYVJpY2huZXNzKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldFJpZ2h0KG5zQVN0cmluZyAmIGFSaWdodCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQg
U2V0UmlnaHQoY29uc3QgbnNBU3RyaW5nICYgYVJpZ2h0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldFNpemUobnNBU3RyaW5nICYgYVNpemUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dFNpemUoY29uc3QgbnNBU3RyaW5nICYgYVNpemUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0U3BlYWsobnNBU3RyaW5nICYgYVNwZWFrKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRT
cGVhayhjb25zdCBuc0FTdHJpbmcgJiBhU3BlYWspID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0U3BlYWtIZWFkZXIobnNBU3RyaW5nICYgYVNwZWFrSGVhZGVyKSA9IDA7CiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXRTcGVha0hlYWRlcihjb25zdCBuc0FTdHJpbmcgJiBhU3BlYWtIZWFkZXIpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U3BlYWtOdW1lcmFsKG5zQVN0cmluZyAmIGFTcGVh
a051bWVyYWwpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFNwZWFrTnVtZXJhbChjb25zdCBu
c0FTdHJpbmcgJiBhU3BlYWtOdW1lcmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNw
ZWFrUHVuY3R1YXRpb24obnNBU3RyaW5nICYgYVNwZWFrUHVuY3R1YXRpb24pID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldFNwZWFrUHVuY3R1YXRpb24oY29uc3QgbnNBU3RyaW5nICYgYVNwZWFr
UHVuY3R1YXRpb24pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U3BlZWNoUmF0ZShuc0FT
dHJpbmcgJiBhU3BlZWNoUmF0ZSkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0U3BlZWNoUmF0
ZShjb25zdCBuc0FTdHJpbmcgJiBhU3BlZWNoUmF0ZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRTdHJlc3MobnNBU3RyaW5nICYgYVN0cmVzcykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQg
U2V0U3RyZXNzKGNvbnN0IG5zQVN0cmluZyAmIGFTdHJlc3MpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0VGFibGVMYXlvdXQobnNBU3RyaW5nICYgYVRhYmxlTGF5b3V0KSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXRUYWJsZUxheW91dChjb25zdCBuc0FTdHJpbmcgJiBhVGFibGVMYXlv
dXQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VGV4dEFsaWduKG5zQVN0cmluZyAmIGFU
ZXh0QWxpZ24pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFRleHRBbGlnbihjb25zdCBuc0FT
dHJpbmcgJiBhVGV4dEFsaWduKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFRleHREZWNv
cmF0aW9uKG5zQVN0cmluZyAmIGFUZXh0RGVjb3JhdGlvbikgPSAwOwogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0VGV4dERlY29yYXRpb24oY29uc3QgbnNBU3RyaW5nICYgYVRleHREZWNvcmF0aW9uKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFRleHRJbmRlbnQobnNBU3RyaW5nICYgYVRleHRJ
bmRlbnQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFRleHRJbmRlbnQoY29uc3QgbnNBU3Ry
aW5nICYgYVRleHRJbmRlbnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VGV4dFNoYWRv
dyhuc0FTdHJpbmcgJiBhVGV4dFNoYWRvdykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0VGV4
dFNoYWRvdyhjb25zdCBuc0FTdHJpbmcgJiBhVGV4dFNoYWRvdykgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRUZXh0VHJhbnNmb3JtKG5zQVN0cmluZyAmIGFUZXh0VHJhbnNmb3JtKSA9IDA7
CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRUZXh0VHJhbnNmb3JtKGNvbnN0IG5zQVN0cmluZyAmIGFU
ZXh0VHJhbnNmb3JtKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFRvcChuc0FTdHJpbmcg
JiBhVG9wKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRUb3AoY29uc3QgbnNBU3RyaW5nICYg
YVRvcCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRVbmljb2RlQmlkaShuc0FTdHJpbmcg
JiBhVW5pY29kZUJpZGkpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFVuaWNvZGVCaWRpKGNv
bnN0IG5zQVN0cmluZyAmIGFVbmljb2RlQmlkaSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRWZXJ0aWNhbEFsaWduKG5zQVN0cmluZyAmIGFWZXJ0aWNhbEFsaWduKSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRWZXJ0aWNhbEFsaWduKGNvbnN0IG5zQVN0cmluZyAmIGFWZXJ0aWNhbEFs
aWduKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFZpc2liaWxpdHkobnNBU3RyaW5nICYg
YVZpc2liaWxpdHkpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFZpc2liaWxpdHkoY29uc3Qg
bnNBU3RyaW5nICYgYVZpc2liaWxpdHkpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Vm9p
Y2VGYW1pbHkobnNBU3RyaW5nICYgYVZvaWNlRmFtaWx5KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRWb2ljZUZhbWlseShjb25zdCBuc0FTdHJpbmcgJiBhVm9pY2VGYW1pbHkpID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0Vm9sdW1lKG5zQVN0cmluZyAmIGFWb2x1bWUpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldFZvbHVtZShjb25zdCBuc0FTdHJpbmcgJiBhVm9sdW1lKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFdoaXRlU3BhY2UobnNBU3RyaW5nICYgYVdoaXRlU3Bh
Y2UpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFdoaXRlU3BhY2UoY29uc3QgbnNBU3RyaW5n
ICYgYVdoaXRlU3BhY2UpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0V2lkb3dzKG5zQVN0
cmluZyAmIGFXaWRvd3MpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFdpZG93cyhjb25zdCBu
c0FTdHJpbmcgJiBhV2lkb3dzKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFdpZHRoKG5z
QVN0cmluZyAmIGFXaWR0aCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0V2lkdGgoY29uc3Qg
bnNBU3RyaW5nICYgYVdpZHRoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFdvcmRTcGFj
aW5nKG5zQVN0cmluZyAmIGFXb3JkU3BhY2luZykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0
V29yZFNwYWNpbmcoY29uc3QgbnNBU3RyaW5nICYgYVdvcmRTcGFjaW5nKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldFpJbmRleChuc0FTdHJpbmcgJiBhWkluZGV4KSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRaSW5kZXgoY29uc3QgbnNBU3RyaW5nICYgYVpJbmRleCkgPSAwOwoKfTsK
IyAyNTIwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNTUzJQcm9wZXJ0aWVzLmgi
CmNsYXNzIG5zSURPTU5TQ1NTMlByb3BlcnRpZXMgOiBwdWJsaWMgbnNJRE9NQ1NTMlByb3BlcnRp
ZXMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29u
c3QgbnNJSUQgaWlkID0gezB4ODgzNTRjMWEsIDB4ZDYyMywgMHg0NGE5LCB7IDB4YTgsIDB4OTQs
IDB4NGUsIDB4ZTAsIDB4MWIsIDB4YTIsIDB4OTYsIDB4MTUgfX07IHJldHVybiBpaWQ7fQoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRNb3pBcHBlYXJhbmNlKG5zQVN0cmluZyAmIGFNb3pBcHBlYXJh
bmNlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRNb3pBcHBlYXJhbmNlKGNvbnN0IG5zQVN0
cmluZyAmIGFNb3pBcHBlYXJhbmNlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1vekJh
Y2tncm91bmRDbGlwKG5zQVN0cmluZyAmIGFNb3pCYWNrZ3JvdW5kQ2xpcCkgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0TW96QmFja2dyb3VuZENsaXAoY29uc3QgbnNBU3RyaW5nICYgYU1vekJh
Y2tncm91bmRDbGlwKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1vekJhY2tncm91bmRJ
bmxpbmVQb2xpY3kobnNBU3RyaW5nICYgYU1vekJhY2tncm91bmRJbmxpbmVQb2xpY3kpID0gMDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1vekJhY2tncm91bmRJbmxpbmVQb2xpY3koY29uc3QgbnNB
U3RyaW5nICYgYU1vekJhY2tncm91bmRJbmxpbmVQb2xpY3kpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0TW96QmFja2dyb3VuZE9yaWdpbihuc0FTdHJpbmcgJiBhTW96QmFja2dyb3VuZE9y
aWdpbikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TW96QmFja2dyb3VuZE9yaWdpbihjb25z
dCBuc0FTdHJpbmcgJiBhTW96QmFja2dyb3VuZE9yaWdpbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRNb3pCaW5kaW5nKG5zQVN0cmluZyAmIGFNb3pCaW5kaW5nKSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRNb3pCaW5kaW5nKGNvbnN0IG5zQVN0cmluZyAmIGFNb3pCaW5kaW5nKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1vekJvcmRlckJvdHRvbUNvbG9ycyhuc0FTdHJp
bmcgJiBhTW96Qm9yZGVyQm90dG9tQ29sb3JzKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRN
b3pCb3JkZXJCb3R0b21Db2xvcnMoY29uc3QgbnNBU3RyaW5nICYgYU1vekJvcmRlckJvdHRvbUNv
bG9ycykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNb3pCb3JkZXJMZWZ0Q29sb3JzKG5z
QVN0cmluZyAmIGFNb3pCb3JkZXJMZWZ0Q29sb3JzKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBT
ZXRNb3pCb3JkZXJMZWZ0Q29sb3JzKGNvbnN0IG5zQVN0cmluZyAmIGFNb3pCb3JkZXJMZWZ0Q29s
b3JzKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1vekJvcmRlclJpZ2h0Q29sb3JzKG5z
QVN0cmluZyAmIGFNb3pCb3JkZXJSaWdodENvbG9ycykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQg
U2V0TW96Qm9yZGVyUmlnaHRDb2xvcnMoY29uc3QgbnNBU3RyaW5nICYgYU1vekJvcmRlclJpZ2h0
Q29sb3JzKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1vekJvcmRlclRvcENvbG9ycyhu
c0FTdHJpbmcgJiBhTW96Qm9yZGVyVG9wQ29sb3JzKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBT
ZXRNb3pCb3JkZXJUb3BDb2xvcnMoY29uc3QgbnNBU3RyaW5nICYgYU1vekJvcmRlclRvcENvbG9y
cykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNb3pCb3JkZXJSYWRpdXMobnNBU3RyaW5n
ICYgYU1vekJvcmRlclJhZGl1cykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TW96Qm9yZGVy
UmFkaXVzKGNvbnN0IG5zQVN0cmluZyAmIGFNb3pCb3JkZXJSYWRpdXMpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0TW96Qm9yZGVyUmFkaXVzVG9wbGVmdChuc0FTdHJpbmcgJiBhTW96Qm9y
ZGVyUmFkaXVzVG9wbGVmdCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TW96Qm9yZGVyUmFk
aXVzVG9wbGVmdChjb25zdCBuc0FTdHJpbmcgJiBhTW96Qm9yZGVyUmFkaXVzVG9wbGVmdCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNb3pCb3JkZXJSYWRpdXNUb3ByaWdodChuc0FTdHJp
bmcgJiBhTW96Qm9yZGVyUmFkaXVzVG9wcmlnaHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNl
dE1vekJvcmRlclJhZGl1c1RvcHJpZ2h0KGNvbnN0IG5zQVN0cmluZyAmIGFNb3pCb3JkZXJSYWRp
dXNUb3ByaWdodCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNb3pCb3JkZXJSYWRpdXNC
b3R0b21sZWZ0KG5zQVN0cmluZyAmIGFNb3pCb3JkZXJSYWRpdXNCb3R0b21sZWZ0KSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXRNb3pCb3JkZXJSYWRpdXNCb3R0b21sZWZ0KGNvbnN0IG5zQVN0
cmluZyAmIGFNb3pCb3JkZXJSYWRpdXNCb3R0b21sZWZ0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldE1vekJvcmRlclJhZGl1c0JvdHRvbXJpZ2h0KG5zQVN0cmluZyAmIGFNb3pCb3JkZXJS
YWRpdXNCb3R0b21yaWdodCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TW96Qm9yZGVyUmFk
aXVzQm90dG9tcmlnaHQoY29uc3QgbnNBU3RyaW5nICYgYU1vekJvcmRlclJhZGl1c0JvdHRvbXJp
Z2h0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1vekJveEFsaWduKG5zQVN0cmluZyAm
IGFNb3pCb3hBbGlnbikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TW96Qm94QWxpZ24oY29u
c3QgbnNBU3RyaW5nICYgYU1vekJveEFsaWduKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dE1vekJveERpcmVjdGlvbihuc0FTdHJpbmcgJiBhTW96Qm94RGlyZWN0aW9uKSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXRNb3pCb3hEaXJlY3Rpb24oY29uc3QgbnNBU3RyaW5nICYgYU1vekJv
eERpcmVjdGlvbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNb3pCb3hGbGV4KG5zQVN0
cmluZyAmIGFNb3pCb3hGbGV4KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRNb3pCb3hGbGV4
KGNvbnN0IG5zQVN0cmluZyAmIGFNb3pCb3hGbGV4KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldE1vekJveEZsZXhHcm91cChuc0FTdHJpbmcgJiBhTW96Qm94RmxleEdyb3VwKSA9IDA7CiAg
dmlydHVhbCBuc3Jlc3VsdCBTZXRNb3pCb3hGbGV4R3JvdXAoY29uc3QgbnNBU3RyaW5nICYgYU1v
ekJveEZsZXhHcm91cCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNb3pCb3hPcmllbnQo
bnNBU3RyaW5nICYgYU1vekJveE9yaWVudCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TW96
Qm94T3JpZW50KGNvbnN0IG5zQVN0cmluZyAmIGFNb3pCb3hPcmllbnQpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0TW96Qm94T3JkaW5hbEdyb3VwKG5zQVN0cmluZyAmIGFNb3pCb3hPcmRp
bmFsR3JvdXApID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1vekJveE9yZGluYWxHcm91cChj
b25zdCBuc0FTdHJpbmcgJiBhTW96Qm94T3JkaW5hbEdyb3VwKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldE1vekJveFBhY2sobnNBU3RyaW5nICYgYU1vekJveFBhY2spID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldE1vekJveFBhY2soY29uc3QgbnNBU3RyaW5nICYgYU1vekJveFBhY2sp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TW96Qm94U2l6aW5nKG5zQVN0cmluZyAmIGFN
b3pCb3hTaXppbmcpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1vekJveFNpemluZyhjb25z
dCBuc0FTdHJpbmcgJiBhTW96Qm94U2l6aW5nKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dE1vekNvdW50ZXJJbmNyZW1lbnQobnNBU3RyaW5nICYgYU1vekNvdW50ZXJJbmNyZW1lbnQpID0g
MDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1vekNvdW50ZXJJbmNyZW1lbnQoY29uc3QgbnNBU3Ry
aW5nICYgYU1vekNvdW50ZXJJbmNyZW1lbnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
TW96Q291bnRlclJlc2V0KG5zQVN0cmluZyAmIGFNb3pDb3VudGVyUmVzZXQpID0gMDsKICB2aXJ0
dWFsIG5zcmVzdWx0IFNldE1vekNvdW50ZXJSZXNldChjb25zdCBuc0FTdHJpbmcgJiBhTW96Q291
bnRlclJlc2V0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1vekZsb2F0RWRnZShuc0FT
dHJpbmcgJiBhTW96RmxvYXRFZGdlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRNb3pGbG9h
dEVkZ2UoY29uc3QgbnNBU3RyaW5nICYgYU1vekZsb2F0RWRnZSkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRNb3pGb3JjZUJyb2tlbkltYWdlSWNvbihuc0FTdHJpbmcgJiBhTW96Rm9yY2VC
cm9rZW5JbWFnZUljb24pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1vekZvcmNlQnJva2Vu
SW1hZ2VJY29uKGNvbnN0IG5zQVN0cmluZyAmIGFNb3pGb3JjZUJyb2tlbkltYWdlSWNvbikgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNb3pJbWFnZVJlZ2lvbihuc0FTdHJpbmcgJiBhTW96
SW1hZ2VSZWdpb24pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1vekltYWdlUmVnaW9uKGNv
bnN0IG5zQVN0cmluZyAmIGFNb3pJbWFnZVJlZ2lvbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRNb3pLZXlFcXVpdmFsZW50KG5zQVN0cmluZyAmIGFNb3pLZXlFcXVpdmFsZW50KSA9IDA7
CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRNb3pLZXlFcXVpdmFsZW50KGNvbnN0IG5zQVN0cmluZyAm
IGFNb3pLZXlFcXVpdmFsZW50KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1vek9wYWNp
dHkobnNBU3RyaW5nICYgYU1vek9wYWNpdHkpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1v
ek9wYWNpdHkoY29uc3QgbnNBU3RyaW5nICYgYU1vek9wYWNpdHkpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0TW96T3V0bGluZShuc0FTdHJpbmcgJiBhTW96T3V0bGluZSkgPSAwOwogIHZp
cnR1YWwgbnNyZXN1bHQgU2V0TW96T3V0bGluZShjb25zdCBuc0FTdHJpbmcgJiBhTW96T3V0bGlu
ZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNb3pPdXRsaW5lQ29sb3IobnNBU3RyaW5n
ICYgYU1vek91dGxpbmVDb2xvcikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TW96T3V0bGlu
ZUNvbG9yKGNvbnN0IG5zQVN0cmluZyAmIGFNb3pPdXRsaW5lQ29sb3IpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0TW96T3V0bGluZVJhZGl1cyhuc0FTdHJpbmcgJiBhTW96T3V0bGluZVJh
ZGl1cykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TW96T3V0bGluZVJhZGl1cyhjb25zdCBu
c0FTdHJpbmcgJiBhTW96T3V0bGluZVJhZGl1cykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBH
ZXRNb3pPdXRsaW5lUmFkaXVzVG9wbGVmdChuc0FTdHJpbmcgJiBhTW96T3V0bGluZVJhZGl1c1Rv
cGxlZnQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1vek91dGxpbmVSYWRpdXNUb3BsZWZ0
KGNvbnN0IG5zQVN0cmluZyAmIGFNb3pPdXRsaW5lUmFkaXVzVG9wbGVmdCkgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRNb3pPdXRsaW5lUmFkaXVzVG9wcmlnaHQobnNBU3RyaW5nICYgYU1v
ek91dGxpbmVSYWRpdXNUb3ByaWdodCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TW96T3V0
bGluZVJhZGl1c1RvcHJpZ2h0KGNvbnN0IG5zQVN0cmluZyAmIGFNb3pPdXRsaW5lUmFkaXVzVG9w
cmlnaHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TW96T3V0bGluZVJhZGl1c0JvdHRv
bWxlZnQobnNBU3RyaW5nICYgYU1vek91dGxpbmVSYWRpdXNCb3R0b21sZWZ0KSA9IDA7CiAgdmly
dHVhbCBuc3Jlc3VsdCBTZXRNb3pPdXRsaW5lUmFkaXVzQm90dG9tbGVmdChjb25zdCBuc0FTdHJp
bmcgJiBhTW96T3V0bGluZVJhZGl1c0JvdHRvbWxlZnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0TW96T3V0bGluZVJhZGl1c0JvdHRvbXJpZ2h0KG5zQVN0cmluZyAmIGFNb3pPdXRsaW5l
UmFkaXVzQm90dG9tcmlnaHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1vek91dGxpbmVS
YWRpdXNCb3R0b21yaWdodChjb25zdCBuc0FTdHJpbmcgJiBhTW96T3V0bGluZVJhZGl1c0JvdHRv
bXJpZ2h0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1vek91dGxpbmVTdHlsZShuc0FT
dHJpbmcgJiBhTW96T3V0bGluZVN0eWxlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRNb3pP
dXRsaW5lU3R5bGUoY29uc3QgbnNBU3RyaW5nICYgYU1vek91dGxpbmVTdHlsZSkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRNb3pPdXRsaW5lV2lkdGgobnNBU3RyaW5nICYgYU1vek91dGxp
bmVXaWR0aCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TW96T3V0bGluZVdpZHRoKGNvbnN0
IG5zQVN0cmluZyAmIGFNb3pPdXRsaW5lV2lkdGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0TW96UmVzaXplcihuc0FTdHJpbmcgJiBhTW96UmVzaXplcikgPSAwOwogIHZpcnR1YWwgbnNy
ZXN1bHQgU2V0TW96UmVzaXplcihjb25zdCBuc0FTdHJpbmcgJiBhTW96UmVzaXplcikgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRNb3pVc2VyRm9jdXMobnNBU3RyaW5nICYgYU1velVzZXJG
b2N1cykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0TW96VXNlckZvY3VzKGNvbnN0IG5zQVN0
cmluZyAmIGFNb3pVc2VyRm9jdXMpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TW96VXNl
cklucHV0KG5zQVN0cmluZyAmIGFNb3pVc2VySW5wdXQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0
IFNldE1velVzZXJJbnB1dChjb25zdCBuc0FTdHJpbmcgJiBhTW96VXNlcklucHV0KSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1velVzZXJNb2RpZnkobnNBU3RyaW5nICYgYU1velVzZXJN
b2RpZnkpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1velVzZXJNb2RpZnkoY29uc3QgbnNB
U3RyaW5nICYgYU1velVzZXJNb2RpZnkpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TW96
VXNlclNlbGVjdChuc0FTdHJpbmcgJiBhTW96VXNlclNlbGVjdCkgPSAwOwogIHZpcnR1YWwgbnNy
ZXN1bHQgU2V0TW96VXNlclNlbGVjdChjb25zdCBuc0FTdHJpbmcgJiBhTW96VXNlclNlbGVjdCkg
PSAwOwoKfTsKIyAyNTUgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9kb20vbnNJRE9NQ1NTQ2hhcnNldFJ1bGUuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvZG9tL25zSURPTUNTU0NoYXJzZXRSdWxlLmgiCmNsYXNzIG5zSURPTUNTU0NoYXJz
ZXRSdWxlIDogcHVibGljIG5zSURPTUNTU1J1bGUgewogcHVibGljOgoKICBzdGF0aWMgY29uc3Qg
bnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4MTlmZTc4Y2MsIDB4
NjVmZiwgMHg0YjFkLCB7IDB4YTUsIDB4ZDcsIDB4OWUsIDB4YTgsIDB4OTYsIDB4OTIsIDB4Y2Us
IDB4YzYgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRFbmNvZGluZyhu
c0FTdHJpbmcgJiBhRW5jb2RpbmcpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEVuY29kaW5n
KGNvbnN0IG5zQVN0cmluZyAmIGFFbmNvZGluZykgPSAwOwoKfTsKIyAyNTYgIm5zRE9NQ2xhc3NJ
bmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NQ1NTSW1wb3J0
UnVsZS5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NQ1NTSW1wb3J0
UnVsZS5oIgpjbGFzcyBuc0lET01DU1NJbXBvcnRSdWxlIDogcHVibGljIG5zSURPTUNTU1J1bGUg
ewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3Qg
bnNJSUQgaWlkID0gezB4YTZjZjkwY2YsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4
MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRIcmVmKG5zQVN0cmluZyAmIGFIcmVmKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldE1lZGlhKG5zSURPTU1lZGlhTGlzdCAqICphTWVkaWEpID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgR2V0U3R5bGVTaGVldChuc0lET01DU1NTdHlsZVNoZWV0ICogKmFTdHls
ZVNoZWV0KSA9IDA7Cgp9OwojIDI1NyAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01DU1NNZWRpYVJ1bGUuaCIgMQojIDI1ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNTU01lZGlhUnVsZS5oIgpjbGFzcyBuc0lET01DU1NN
ZWRpYVJ1bGUgOiBwdWJsaWMgbnNJRE9NQ1NTUnVsZSB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25z
dCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNmNmOTBiYywg
MHgxNWIzLCAweDExZDIsIHsgMHg5MywgMHgyZSwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHhk
ZCwgMHgzMiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1lZGlhKG5z
SURPTU1lZGlhTGlzdCAqICphTWVkaWEpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q3Nz
UnVsZXMobnNJRE9NQ1NTUnVsZUxpc3QgKiAqYUNzc1J1bGVzKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEluc2VydFJ1bGUoY29uc3QgbnNBU3RyaW5nICYgcnVsZSwgUFJVaW50MzIgaW5kZXgs
IFBSVWludDMyICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IERlbGV0ZVJ1bGUo
UFJVaW50MzIgaW5kZXgpID0gMDsKCn07CiMgMjU4ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAx
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNTU1ByaW1pdGl2ZVZhbHVlLmgiIDEK
IyAxMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01DU1NQcmltaXRpdmVWYWx1ZS5o
IgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NQ1NTVmFsdWUuaCIgMQojIDI1
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNTU1ZhbHVlLmgiCmNsYXNzIG5zSURP
TUNTU1ZhbHVlIDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0
IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDAwOWY3ZWE1LCAw
eDllODAsIDB4NDFiZSwgeyAweGIwLCAweDA4LCAweGRiLCAweDYyLCAweGYxLCAweDA4LCAweDIz
LCAweGYyIH19OyByZXR1cm4gaWlkO30KIyAzOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9u
c0lET01DU1NWYWx1ZS5oIgogIGVudW0geyBDU1NfSU5IRVJJVCA9IDBVIH07CgogIGVudW0geyBD
U1NfUFJJTUlUSVZFX1ZBTFVFID0gMVUgfTsKCiAgZW51bSB7IENTU19WQUxVRV9MSVNUID0gMlUg
fTsKCiAgZW51bSB7IENTU19DVVNUT00gPSAzVSB9OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRD
c3NUZXh0KG5zQVN0cmluZyAmIGFDc3NUZXh0KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRD
c3NUZXh0KGNvbnN0IG5zQVN0cmluZyAmIGFDc3NUZXh0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEdldENzc1ZhbHVlVHlwZShQUlVpbnQxNiAqYUNzc1ZhbHVlVHlwZSkgPSAwOwoKfTsKIyAx
MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01DU1NQcmltaXRpdmVWYWx1ZS5oIiAy
CiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NQ1NTUHJpbWl0aXZlVmFsdWUu
aCIKY2xhc3MgbnNJRE9NQ1NTUHJpbWl0aXZlVmFsdWUgOiBwdWJsaWMgbnNJRE9NQ1NTVmFsdWUg
ewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3Qg
bnNJSUQgaWlkID0gezB4ZTI0OTAzMWYsIDB4OGRmOSwgMHg0ZTdhLCB7IDB4YjYsIDB4NDQsIDB4
MTgsIDB4OTQsIDB4NmQsIDB4Y2UsIDB4MDAsIDB4MTkgfX07IHJldHVybiBpaWQ7fQojIDM5ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAgZW51
bSB7IENTU19VTktOT1dOID0gMFUgfTsKCiAgZW51bSB7IENTU19OVU1CRVIgPSAxVSB9OwoKICBl
bnVtIHsgQ1NTX1BFUkNFTlRBR0UgPSAyVSB9OwoKICBlbnVtIHsgQ1NTX0VNUyA9IDNVIH07Cgog
IGVudW0geyBDU1NfRVhTID0gNFUgfTsKCiAgZW51bSB7IENTU19QWCA9IDVVIH07CgogIGVudW0g
eyBDU1NfQ00gPSA2VSB9OwoKICBlbnVtIHsgQ1NTX01NID0gN1UgfTsKCiAgZW51bSB7IENTU19J
TiA9IDhVIH07CgogIGVudW0geyBDU1NfUFQgPSA5VSB9OwoKICBlbnVtIHsgQ1NTX1BDID0gMTBV
IH07CgogIGVudW0geyBDU1NfREVHID0gMTFVIH07CgogIGVudW0geyBDU1NfUkFEID0gMTJVIH07
CgogIGVudW0geyBDU1NfR1JBRCA9IDEzVSB9OwoKICBlbnVtIHsgQ1NTX01TID0gMTRVIH07Cgog
IGVudW0geyBDU1NfUyA9IDE1VSB9OwoKICBlbnVtIHsgQ1NTX0haID0gMTZVIH07CgogIGVudW0g
eyBDU1NfS0haID0gMTdVIH07CgogIGVudW0geyBDU1NfRElNRU5TSU9OID0gMThVIH07CgogIGVu
dW0geyBDU1NfU1RSSU5HID0gMTlVIH07CgogIGVudW0geyBDU1NfVVJJID0gMjBVIH07CgogIGVu
dW0geyBDU1NfSURFTlQgPSAyMVUgfTsKCiAgZW51bSB7IENTU19BVFRSID0gMjJVIH07CgogIGVu
dW0geyBDU1NfQ09VTlRFUiA9IDIzVSB9OwoKICBlbnVtIHsgQ1NTX1JFQ1QgPSAyNFUgfTsKCiAg
ZW51bSB7IENTU19SR0JDT0xPUiA9IDI1VSB9OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQcmlt
aXRpdmVUeXBlKFBSVWludDE2ICphUHJpbWl0aXZlVHlwZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXRGbG9hdFZhbHVlKFBSVWludDE2IHVuaXRUeXBlLCBmbG9hdCBmbG9hdFZhbHVlKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEZsb2F0VmFsdWUoUFJVaW50MTYgdW5pdFR5cGUs
IGZsb2F0ICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFN0cmluZ1ZhbHVl
KFBSVWludDE2IHN0cmluZ1R5cGUsIGNvbnN0IG5zQVN0cmluZyAmIHN0cmluZ1ZhbHVlKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFN0cmluZ1ZhbHVlKG5zQVN0cmluZyAmIF9yZXR2YWwp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q291bnRlclZhbHVlKG5zSURPTUNvdW50ZXIg
KipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJlY3RWYWx1ZShuc0lET01S
ZWN0ICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRSR0JDb2xvclZhbHVl
KG5zSURPTVJHQkNvbG9yICoqX3JldHZhbCkgPSAwOwoKfTsKIyAyNTkgIm5zRE9NQ2xhc3NJbmZv
LmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NQ1NTU3R5bGVSdWxl
LmgiIDEKIyAyNSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01DU1NTdHlsZVJ1bGUu
aCIKY2xhc3MgbnNJRE9NQ1NTU3R5bGVSdWxlIDogcHVibGljIG5zSURPTUNTU1J1bGUgewogcHVi
bGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQg
aWlkID0gezB4YTZjZjkwYmYsIDB4MTViMywgMHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4
ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIgfX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRTZWxlY3RvclRleHQobnNBU3RyaW5nICYgYVNlbGVjdG9yVGV4dCkgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0U2VsZWN0b3JUZXh0KGNvbnN0IG5zQVN0cmluZyAmIGFTZWxl
Y3RvclRleHQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U3R5bGUobnNJRE9NQ1NTU3R5
bGVEZWNsYXJhdGlvbiAqICphU3R5bGUpID0gMDsKCn07CiMgMjYwICJuc0RPTUNsYXNzSW5mby5j
cHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNTU1N0eWxlU2hlZXQu
aCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNTU1N0eWxlU2hlZXQu
aCIKY2xhc3MgbnNJRE9NQ1NTU3R5bGVTaGVldCA6IHB1YmxpYyBuc0lET01TdHlsZVNoZWV0IHsK
IHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5z
SUlEIGlpZCA9IHsweGE2Y2Y5MGMyLCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAweDJlLCAweDAw
LCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30KIyA0MCAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01DU1NTdHlsZVNoZWV0LmgiCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRPd25lclJ1bGUobnNJRE9NQ1NTUnVsZSAqICphT3duZXJSdWxlKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldENzc1J1bGVzKG5zSURPTUNTU1J1bGVMaXN0ICogKmFDc3NS
dWxlcykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJbnNlcnRSdWxlKGNvbnN0IG5zQVN0cmlu
ZyAmIHJ1bGUsIFBSVWludDMyIGluZGV4LCBQUlVpbnQzMiAqX3JldHZhbCkgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBEZWxldGVSdWxlKFBSVWludDMyIGluZGV4KSA9IDA7Cgp9OwojIDI2MSAi
bnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lE
T01DU1NWYWx1ZUxpc3QuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURP
TUNTU1ZhbHVlTGlzdC5oIgpjbGFzcyBuc0lET01DU1NWYWx1ZUxpc3QgOiBwdWJsaWMgbnNJRE9N
Q1NTVmFsdWUgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0
aWMgY29uc3QgbnNJSUQgaWlkID0gezB4OGYwOWZhODQsIDB4MzliOSwgMHg0ZGNhLCB7IDB4OWIs
IDB4MmYsIDB4ZGIsIDB4MGUsIDB4ZWIsIDB4MTgsIDB4NjIsIDB4ODYgfX07IHJldHVybiBpaWQ7
fQojIDQwICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNTU1ZhbHVlTGlzdC5oIgog
IHZpcnR1YWwgbnNyZXN1bHQgR2V0TGVuZ3RoKFBSVWludDMyICphTGVuZ3RoKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEl0ZW0oUFJVaW50MzIgaW5kZXgsIG5zSURPTUNTU1ZhbHVlICoqX3Jl
dHZhbCkgPSAwOwoKfTsKIyAyNjIgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NUmFuZ2UuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvZG9tL25zSURPTVJhbmdlLmgiCmNsYXNzIG5zSURPTVJhbmdlIDogcHVibGljIG5zSVN1
cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGlj
IGNvbnN0IG5zSUlEIGlpZCA9IHsweGE2Y2Y5MGNlLCAweDE1YjMsIDB4MTFkMiwgeyAweDkzLCAw
eDJlLCAweDAwLCAweDgwLCAweDVmLCAweDhhLCAweGRkLCAweDMyIH19OyByZXR1cm4gaWlkO30K
IyAzOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01SYW5nZS5oIgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0U3RhcnRDb250YWluZXIobnNJRE9NTm9kZSAqICphU3RhcnRDb250YWluZXIp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0U3RhcnRPZmZzZXQoUFJJbnQzMiAqYVN0YXJ0
T2Zmc2V0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEVuZENvbnRhaW5lcihuc0lET01O
b2RlICogKmFFbmRDb250YWluZXIpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RW5kT2Zm
c2V0KFBSSW50MzIgKmFFbmRPZmZzZXQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29s
bGFwc2VkKFBSQm9vbCAqYUNvbGxhcHNlZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRD
b21tb25BbmNlc3RvckNvbnRhaW5lcihuc0lET01Ob2RlICogKmFDb21tb25BbmNlc3RvckNvbnRh
aW5lcikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRTdGFydChuc0lET01Ob2RlICpyZWZO
b2RlLCBQUkludDMyIG9mZnNldCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRFbmQobnNJ
RE9NTm9kZSAqcmVmTm9kZSwgUFJJbnQzMiBvZmZzZXQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgU2V0U3RhcnRCZWZvcmUobnNJRE9NTm9kZSAqcmVmTm9kZSkgPSAwOwoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXRTdGFydEFmdGVyKG5zSURPTU5vZGUgKnJlZk5vZGUpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0RW5kQmVmb3JlKG5zSURPTU5vZGUgKnJlZk5vZGUpID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgU2V0RW5kQWZ0ZXIobnNJRE9NTm9kZSAqcmVmTm9kZSkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBDb2xsYXBzZShQUkJvb2wgdG9TdGFydCkgPSAwOwoKCiAgdmlydHVh
bCBuc3Jlc3VsdCBTZWxlY3ROb2RlKG5zSURPTU5vZGUgKnJlZk5vZGUpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgU2VsZWN0Tm9kZUNvbnRlbnRzKG5zSURPTU5vZGUgKnJlZk5vZGUpID0gMDsK
CiAgZW51bSB7IFNUQVJUX1RPX1NUQVJUID0gMFUgfTsKCiAgZW51bSB7IFNUQVJUX1RPX0VORCA9
IDFVIH07CgogIGVudW0geyBFTkRfVE9fRU5EID0gMlUgfTsKCiAgZW51bSB7IEVORF9UT19TVEFS
VCA9IDNVIH07CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENvbXBhcmVCb3VuZGFyeVBvaW50cyhQUlVp
bnQxNiBob3csIG5zSURPTVJhbmdlICpzb3VyY2VSYW5nZSwgUFJJbnQxNiAqX3JldHZhbCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBEZWxldGVDb250ZW50cyh2b2lkKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEV4dHJhY3RDb250ZW50cyhuc0lET01Eb2N1bWVudEZyYWdtZW50ICoqX3Jl
dHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDbG9uZUNvbnRlbnRzKG5zSURPTURvY3Vt
ZW50RnJhZ21lbnQgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEluc2VydE5v
ZGUobnNJRE9NTm9kZSAqbmV3Tm9kZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTdXJyb3Vu
ZENvbnRlbnRzKG5zSURPTU5vZGUgKm5ld1BhcmVudCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBDbG9uZVJhbmdlKG5zSURPTVJhbmdlICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBUb1N0cmluZyhuc0FTdHJpbmcgJiBfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IERldGFjaCh2b2lkKSA9IDA7Cgp9OwojIDI2MyAibnNET01DbGFzc0luZm8uY3BwIiAyCiMg
MSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU1JhbmdlLmgiIDEKIyAyNSAiLi4v
Li4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01OU1JhbmdlLmgiCmNsYXNzIG5zSURPTU5TUmFu
Z2UgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQm
IEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4YTZjZjkwZjIsIDB4MTViMywg
MHgxMWQyLCB7IDB4OTMsIDB4MmUsIDB4MDAsIDB4ODAsIDB4NWYsIDB4OGEsIDB4ZGQsIDB4MzIg
fX07IHJldHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDcmVhdGVDb250ZXh0dWFsRnJh
Z21lbnQoY29uc3QgbnNBU3RyaW5nICYgZnJhZ21lbnQsIG5zSURPTURvY3VtZW50RnJhZ21lbnQg
KipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IElzUG9pbnRJblJhbmdlKG5zSURP
TU5vZGUgKnBhcmVudCwgUFJJbnQzMiBvZmZzZXQsIFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBDb21wYXJlUG9pbnQobnNJRE9NTm9kZSAqcGFyZW50LCBQUkludDMy
IG9mZnNldCwgUFJJbnQxNiAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJbnRl
cnNlY3RzTm9kZShuc0lET01Ob2RlICpuLCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKCiAgZW51bSB7
IE5PREVfQkVGT1JFID0gMFUgfTsKCiAgZW51bSB7IE5PREVfQUZURVIgPSAxVSB9OwoKICBlbnVt
IHsgTk9ERV9CRUZPUkVfQU5EX0FGVEVSID0gMlUgfTsKCiAgZW51bSB7IE5PREVfSU5TSURFID0g
M1UgfTsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ29tcGFyZU5vZGUobnNJRE9NTm9kZSAqbiwgUFJV
aW50MTYgKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgTlNEZXRhY2godm9pZCkg
PSAwOwoKfTsKIyAyNjQgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9kb20vbnNJRE9NUmFuZ2VFeGNlcHRpb24uaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvZG9tL25zSURPTVJhbmdlRXhjZXB0aW9uLmgiCmNsYXNzIG5zSURPTVJhbmdlRXhj
ZXB0aW9uIDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5z
SUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDBmODA3MzAxLCAweDM5
ZDIsIDB4MTFkNiwgeyAweGE3LCAweGYyLCAweDhmLCAweDUwLCAweDRmLCAweGY4LCAweDcwLCAw
eGRjIH19OyByZXR1cm4gaWlkO30KCiAgZW51bSB7IEJBRF9CT1VOREFSWVBPSU5UU19FUlIgPSAx
VSB9OwoKICBlbnVtIHsgSU5WQUxJRF9OT0RFX1RZUEVfRVJSID0gMlUgfTsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0Q29kZShQUlVpbnQxNiAqYUNvZGUpID0gMDsKCn07CiMgMjY1ICJuc0RPTUNs
YXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVRyZWVX
YWxrZXIuaCIgMQojIDE3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVRyZWVXYWxr
ZXIuaCIKY2xhc3MgbnNJRE9NVHJlZVdhbGtlcjsKCmNsYXNzIG5zSURPTU5vZGVGaWx0ZXI7CiMg
MjkgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NVHJlZVdhbGtlci5oIgpjbGFzcyBu
c0lET01UcmVlV2Fsa2VyIDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGlj
IGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDQwMGFm
M2NhLCAweDFkZDIsIDB4MTFiMiwgeyAweGE1LCAweDBhLCAweDg4LCAweDdlLCAweGNjLCAweGEy
LCAweGU2LCAweDNhIH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Um9v
dChuc0lET01Ob2RlICogKmFSb290KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFdoYXRU
b1Nob3coUFJVaW50MzIgKmFXaGF0VG9TaG93KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dEZpbHRlcihuc0lET01Ob2RlRmlsdGVyICogKmFGaWx0ZXIpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0RXhwYW5kRW50aXR5UmVmZXJlbmNlcyhQUkJvb2wgKmFFeHBhbmRFbnRpdHlSZWZl
cmVuY2VzKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEN1cnJlbnROb2RlKG5zSURPTU5v
ZGUgKiAqYUN1cnJlbnROb2RlKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDdXJyZW50Tm9k
ZShuc0lET01Ob2RlICogYUN1cnJlbnROb2RlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFBh
cmVudE5vZGUobnNJRE9NTm9kZSAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
Rmlyc3RDaGlsZChuc0lET01Ob2RlICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBMYXN0Q2hpbGQobnNJRE9NTm9kZSAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgUHJldmlvdXNTaWJsaW5nKG5zSURPTU5vZGUgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IE5leHRTaWJsaW5nKG5zSURPTU5vZGUgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IFByZXZpb3VzTm9kZShuc0lET01Ob2RlICoqX3JldHZhbCkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBOZXh0Tm9kZShuc0lET01Ob2RlICoqX3JldHZhbCkgPSAwOwoKfTsK
IyAyNjYgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9k
b20vbnNJRE9NWFVMRG9jdW1lbnQuaCIgMQojIDE3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9t
L25zSURPTVhVTERvY3VtZW50LmgiCmNsYXNzIG5zSURPTVhVTENvbW1hbmREaXNwYXRjaGVyOwoj
IDI3ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTVhVTERvY3VtZW50LmgiCmNsYXNz
IG5zSURPTVhVTERvY3VtZW50IDogcHVibGljIG5zSURPTURvY3VtZW50IHsKIHB1YmxpYzoKCiAg
c3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsw
eDE3ZGRkOGMwLCAweGM1ZjgsIDB4MTFkMiwgeyAweGE2LCAweGFlLCAweDAwLCAweDEwLCAweDRi
LCAweGRlLCAweDYwLCAweDQ4IH19OyByZXR1cm4gaWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0UG9wdXBOb2RlKG5zSURPTU5vZGUgKiAqYVBvcHVwTm9kZSkgPSAwOwogIHZpcnR1YWwgbnNy
ZXN1bHQgU2V0UG9wdXBOb2RlKG5zSURPTU5vZGUgKiBhUG9wdXBOb2RlKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldFRvb2x0aXBOb2RlKG5zSURPTU5vZGUgKiAqYVRvb2x0aXBOb2RlKSA9
IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRUb29sdGlwTm9kZShuc0lET01Ob2RlICogYVRvb2x0
aXBOb2RlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbW1hbmREaXNwYXRjaGVyKG5z
SURPTVhVTENvbW1hbmREaXNwYXRjaGVyICogKmFDb21tYW5kRGlzcGF0Y2hlcikgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRXaWR0aChQUkludDMyICphV2lkdGgpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0SGVpZ2h0KFBSSW50MzIgKmFIZWlnaHQpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0RWxlbWVudHNCeUF0dHJpYnV0ZShjb25zdCBuc0FTdHJpbmcgJiBuYW1lLCBj
b25zdCBuc0FTdHJpbmcgJiB2YWx1ZSwgbnNJRE9NTm9kZUxpc3QgKipfcmV0dmFsKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEFkZEJyb2FkY2FzdExpc3RlbmVyRm9yKG5zSURPTUVsZW1lbnQg
KmJyb2FkY2FzdGVyLCBuc0lET01FbGVtZW50ICpvYnNlcnZlciwgY29uc3QgbnNBU3RyaW5nICYg
YXR0cikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZW1vdmVCcm9hZGNhc3RMaXN0ZW5lckZv
cihuc0lET01FbGVtZW50ICpicm9hZGNhc3RlciwgbnNJRE9NRWxlbWVudCAqb2JzZXJ2ZXIsIGNv
bnN0IG5zQVN0cmluZyAmIGF0dHIpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUGVyc2lzdChj
b25zdCBuc0FTdHJpbmcgJiBpZCwgY29uc3QgbnNBU3RyaW5nICYgYXR0cikgPSAwOwoKfTsKIyAy
NjcgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20v
bnNJRE9NWFVMRWxlbWVudC5oIiAxCiMgMTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJ
RE9NWFVMRWxlbWVudC5oIgpjbGFzcyBuc0lSREZDb21wb3NpdGVEYXRhU291cmNlOwoKY2xhc3Mg
bnNJWFVMVGVtcGxhdGVCdWlsZGVyOwoKY2xhc3MgbnNJUkRGUmVzb3VyY2U7CgpjbGFzcyBuc0lD
b250cm9sbGVyczsKCmNsYXNzIG5zSUJveE9iamVjdDsKIyAzNSAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL2RvbS9uc0lET01YVUxFbGVtZW50LmgiCmNsYXNzIG5zSURPTVhVTEVsZW1lbnQgOiBwdWJs
aWMgbnNJRE9NRWxlbWVudCB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlE
KCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHgwNTc0ZWQ4MSwgMHhjMDg4LCAweDExZDIs
IHsgMHg5NiwgMHhlZCwgMHgwMCwgMHgxMCwgMHg0YiwgMHg3YiwgMHg3ZCwgMHhlYiB9fTsgcmV0
dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldElkKG5zQVN0cmluZyAmIGFJZCkgPSAw
OwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0SWQoY29uc3QgbnNBU3RyaW5nICYgYUlkKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldENsYXNzTmFtZShuc0FTdHJpbmcgJiBhQ2xhc3NOYW1lKSA9
IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRDbGFzc05hbWUoY29uc3QgbnNBU3RyaW5nICYgYUNs
YXNzTmFtZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBbGlnbihuc0FTdHJpbmcgJiBh
QWxpZ24pID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldEFsaWduKGNvbnN0IG5zQVN0cmluZyAm
IGFBbGlnbikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXREaXIobnNBU3RyaW5nICYgYURp
cikgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RGlyKGNvbnN0IG5zQVN0cmluZyAmIGFEaXIp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RmxleChuc0FTdHJpbmcgJiBhRmxleCkgPSAw
OwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RmxleChjb25zdCBuc0FTdHJpbmcgJiBhRmxleCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGbGV4R3JvdXAobnNBU3RyaW5nICYgYUZsZXhHcm91
cCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RmxleEdyb3VwKGNvbnN0IG5zQVN0cmluZyAm
IGFGbGV4R3JvdXApID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0T3JkaW5hbChuc0FTdHJp
bmcgJiBhT3JkaW5hbCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0T3JkaW5hbChjb25zdCBu
c0FTdHJpbmcgJiBhT3JkaW5hbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRPcmllbnQo
bnNBU3RyaW5nICYgYU9yaWVudCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0T3JpZW50KGNv
bnN0IG5zQVN0cmluZyAmIGFPcmllbnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UGFj
ayhuc0FTdHJpbmcgJiBhUGFjaykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0UGFjayhjb25z
dCBuc0FTdHJpbmcgJiBhUGFjaykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRIaWRkZW4o
UFJCb29sICphSGlkZGVuKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRIaWRkZW4oUFJCb29s
IGFIaWRkZW4pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29sbGFwc2VkKFBSQm9vbCAq
YUNvbGxhcHNlZCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Q29sbGFwc2VkKFBSQm9vbCBh
Q29sbGFwc2VkKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE9ic2VydmVzKG5zQVN0cmlu
ZyAmIGFPYnNlcnZlcykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0T2JzZXJ2ZXMoY29uc3Qg
bnNBU3RyaW5nICYgYU9ic2VydmVzKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1lbnUo
bnNBU3RyaW5nICYgYU1lbnUpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1lbnUoY29uc3Qg
bnNBU3RyaW5nICYgYU1lbnUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29udGV4dE1l
bnUobnNBU3RyaW5nICYgYUNvbnRleHRNZW51KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRD
b250ZXh0TWVudShjb25zdCBuc0FTdHJpbmcgJiBhQ29udGV4dE1lbnUpID0gMDsKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0VG9vbHRpcChuc0FTdHJpbmcgJiBhVG9vbHRpcCkgPSAwOwogIHZpcnR1
YWwgbnNyZXN1bHQgU2V0VG9vbHRpcChjb25zdCBuc0FTdHJpbmcgJiBhVG9vbHRpcCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRXaWR0aChuc0FTdHJpbmcgJiBhV2lkdGgpID0gMDsKICB2
aXJ0dWFsIG5zcmVzdWx0IFNldFdpZHRoKGNvbnN0IG5zQVN0cmluZyAmIGFXaWR0aCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRIZWlnaHQobnNBU3RyaW5nICYgYUhlaWdodCkgPSAwOwog
IHZpcnR1YWwgbnNyZXN1bHQgU2V0SGVpZ2h0KGNvbnN0IG5zQVN0cmluZyAmIGFIZWlnaHQpID0g
MDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TWluV2lkdGgobnNBU3RyaW5nICYgYU1pbldpZHRo
KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRNaW5XaWR0aChjb25zdCBuc0FTdHJpbmcgJiBh
TWluV2lkdGgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TWluSGVpZ2h0KG5zQVN0cmlu
ZyAmIGFNaW5IZWlnaHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldE1pbkhlaWdodChjb25z
dCBuc0FTdHJpbmcgJiBhTWluSGVpZ2h0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldE1h
eFdpZHRoKG5zQVN0cmluZyAmIGFNYXhXaWR0aCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0
TWF4V2lkdGgoY29uc3QgbnNBU3RyaW5nICYgYU1heFdpZHRoKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldE1heEhlaWdodChuc0FTdHJpbmcgJiBhTWF4SGVpZ2h0KSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRNYXhIZWlnaHQoY29uc3QgbnNBU3RyaW5nICYgYU1heEhlaWdodCkgPSAw
OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQZXJzaXN0KG5zQVN0cmluZyAmIGFQZXJzaXN0KSA9
IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRQZXJzaXN0KGNvbnN0IG5zQVN0cmluZyAmIGFQZXJz
aXN0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldExlZnQobnNBU3RyaW5nICYgYUxlZnQp
ID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldExlZnQoY29uc3QgbnNBU3RyaW5nICYgYUxlZnQp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VG9wKG5zQVN0cmluZyAmIGFUb3ApID0gMDsK
ICB2aXJ0dWFsIG5zcmVzdWx0IFNldFRvcChjb25zdCBuc0FTdHJpbmcgJiBhVG9wKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldERhdGFzb3VyY2VzKG5zQVN0cmluZyAmIGFEYXRhc291cmNl
cykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0RGF0YXNvdXJjZXMoY29uc3QgbnNBU3RyaW5n
ICYgYURhdGFzb3VyY2VzKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJlZihuc0FTdHJp
bmcgJiBhUmVmKSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRSZWYoY29uc3QgbnNBU3RyaW5n
ICYgYVJlZikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRUb29sdGlwVGV4dChuc0FTdHJp
bmcgJiBhVG9vbHRpcFRleHQpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFRvb2x0aXBUZXh0
KGNvbnN0IG5zQVN0cmluZyAmIGFUb29sdGlwVGV4dCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRTdGF0dXNUZXh0KG5zQVN0cmluZyAmIGFTdGF0dXNUZXh0KSA9IDA7CiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXRTdGF0dXNUZXh0KGNvbnN0IG5zQVN0cmluZyAmIGFTdGF0dXNUZXh0KSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEFsbG93RXZlbnRzKFBSQm9vbCAqYUFsbG93RXZlbnRz
KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRBbGxvd0V2ZW50cyhQUkJvb2wgYUFsbG93RXZl
bnRzKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFN0eWxlKG5zSURPTUNTU1N0eWxlRGVj
bGFyYXRpb24gKiAqYVN0eWxlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldERhdGFiYXNl
KG5zSVJERkNvbXBvc2l0ZURhdGFTb3VyY2UgKiAqYURhdGFiYXNlKSA9IDA7CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldEJ1aWxkZXIobnNJWFVMVGVtcGxhdGVCdWlsZGVyICogKmFCdWlsZGVyKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJlc291cmNlKG5zSVJERlJlc291cmNlICogKmFS
ZXNvdXJjZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb250cm9sbGVycyhuc0lDb250
cm9sbGVycyAqICphQ29udHJvbGxlcnMpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Qm94
T2JqZWN0KG5zSUJveE9iamVjdCAqICphQm94T2JqZWN0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IEZvY3VzKHZvaWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQmx1cih2b2lkKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENsaWNrKHZvaWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1
bHQgRG9Db21tYW5kKHZvaWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RWxlbWVudHNC
eUF0dHJpYnV0ZShjb25zdCBuc0FTdHJpbmcgJiBuYW1lLCBjb25zdCBuc0FTdHJpbmcgJiB2YWx1
ZSwgbnNJRE9NTm9kZUxpc3QgKipfcmV0dmFsKSA9IDA7Cgp9OwojIDI2OCAibnNET01DbGFzc0lu
Zm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01YVUxDb21tYW5k
RGlzcGF0Y2hlci5oIiAxCiMgMTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NWFVM
Q29tbWFuZERpc3BhdGNoZXIuaCIKY2xhc3MgbnNJRE9NRWxlbWVudDsKCmNsYXNzIG5zSUNvbnRy
b2xsZXI7CgpjbGFzcyBuc0lDb250cm9sbGVyczsKCmNsYXNzIG5zSURPTVdpbmRvdzsKIyAzMyAi
Li4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01YVUxDb21tYW5kRGlzcGF0Y2hlci5oIgpj
bGFzcyBuc0lET01YVUxDb21tYW5kRGlzcGF0Y2hlciA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBw
dWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJ
RCBpaWQgPSB7MHhmM2M1MDM2MSwgMHgxNGZlLCAweDExZDMsIHsgMHhiZiwgMHg4NywgMHgwMCwg
MHgxMCwgMHg1YSwgMHgxYiwgMHgwNiwgMHgyNyB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldEZvY3VzZWRFbGVtZW50KG5zSURPTUVsZW1lbnQgKiAqYUZvY3VzZWRFbGVt
ZW50KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRGb2N1c2VkRWxlbWVudChuc0lET01FbGVt
ZW50ICogYUZvY3VzZWRFbGVtZW50KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEZvY3Vz
ZWRXaW5kb3cobnNJRE9NV2luZG93ICogKmFGb2N1c2VkV2luZG93KSA9IDA7CiAgdmlydHVhbCBu
c3Jlc3VsdCBTZXRGb2N1c2VkV2luZG93KG5zSURPTVdpbmRvdyAqIGFGb2N1c2VkV2luZG93KSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEFkZENvbW1hbmRVcGRhdGVyKG5zSURPTUVsZW1lbnQg
KnVwZGF0ZXIsIGNvbnN0IG5zQVN0cmluZyAmIGV2ZW50cywgY29uc3QgbnNBU3RyaW5nICYgdGFy
Z2V0cykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSZW1vdmVDb21tYW5kVXBkYXRlcihuc0lE
T01FbGVtZW50ICp1cGRhdGVyKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFVwZGF0ZUNvbW1h
bmRzKGNvbnN0IG5zQVN0cmluZyAmIGV2ZW50TmFtZSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRDb250cm9sbGVyRm9yQ29tbWFuZChjb25zdCBjaGFyICpjb21tYW5kLCBuc0lDb250cm9s
bGVyICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb250cm9sbGVycyhu
c0lDb250cm9sbGVycyAqKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgQWR2YW5j
ZUZvY3VzKHZvaWQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmV3aW5kRm9jdXModm9pZCkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBBZHZhbmNlRm9jdXNJbnRvU3VidHJlZShuc0lET01F
bGVtZW50ICplbHQpID0gMDsKCn07CiMgMjY5ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNyeXB0by5oIiAxCiMgMjUgIi4uLy4uLy4u
L2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NQ3J5cHRvLmgiCmNsYXNzIG5zSURPTUNyeXB0byA6IHB1
YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlE
KCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhmNDVlZmJlMCwgMHgxZDUyLCAweDExZDQs
IHsgMHg4YSwgMHg3YywgMHgwMCwgMHg2MCwgMHgwOCwgMHhjOCwgMHg0NCwgMHhjMyB9fTsgcmV0
dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFZlcnNpb24obnNBU3RyaW5nICYgYVZl
cnNpb24pID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2VuZXJhdGVDUk1GUmVxdWVzdChuc0lE
T01DUk1GT2JqZWN0ICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJbXBvcnRV
c2VyQ2VydGlmaWNhdGVzKGNvbnN0IG5zQVN0cmluZyAmIG5pY2tuYW1lLCBjb25zdCBuc0FTdHJp
bmcgJiBjbW1mUmVzcG9uc2UsIFBSQm9vbCBkb0ZvcmNlZEJhY2t1cCwgbnNBU3RyaW5nICYgX3Jl
dHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBQb3BDaGFsbGVuZ2VSZXNwb25zZShjb25z
dCBuc0FTdHJpbmcgJiBjaGFsbGVuZ2UsIG5zQVN0cmluZyAmIF9yZXR2YWwpID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgUmFuZG9tKFBSSW50MzIgbnVtQnl0ZXMsIG5zQVN0cmluZyAmIF9yZXR2
YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2lnblRleHQobnNBU3RyaW5nICYgX3JldHZh
bCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBBbGVydChjb25zdCBuc0FTdHJpbmcgJiBtZXNz
YWdlKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IExvZ291dCh2b2lkKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IERpc2FibGVSaWdodENsaWNrKHZvaWQpID0gMDsKCn07CiMgMjcwICJuc0RP
TUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNS
TUZPYmplY3QuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25zSURPTUNSTUZP
YmplY3QuaCIKY2xhc3MgbnNJRE9NQ1JNRk9iamVjdCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBw
dWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJ
RCBpaWQgPSB7MHgxNmRhNDZjMCwgMHgyMDhkLCAweDExZDQsIHsgMHg4YSwgMHg3YywgMHgwMCwg
MHg2MCwgMHgwOCwgMHhjOCwgMHg0NCwgMHhjMyB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFs
IG5zcmVzdWx0IEdldFJlcXVlc3QobnNBU3RyaW5nICYgYVJlcXVlc3QpID0gMDsKCn07CiMgMjcx
ICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvZG9tL25z
SURPTVBrY3MxMS5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NUGtj
czExLmgiCmNsYXNzIG5zSURPTVBrY3MxMSA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6
CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQg
PSB7MHg5ZmQ0Mjk1MCwgMHgyNWU3LCAweDExZDQsIHsgMHg4YSwgMHg3ZCwgMHgwMCwgMHg2MCwg
MHgwOCwgMHhjOCwgMHg0NCwgMHhjMyB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IERlbGV0ZW1vZHVsZShjb25zdCBuc0FTdHJpbmcgJiBtb2R1bGVOYW1lLCBQUkludDMyICpf
cmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEFkZG1vZHVsZShjb25zdCBuc0FTdHJp
bmcgJiBtb2R1bGVOYW1lLCBjb25zdCBuc0FTdHJpbmcgJiBsaWJyYXJ5RnVsbFBhdGgsIFBSSW50
MzIgY3J5cHRvTWVjaGFuaXNtRmxhZ3MsIFBSSW50MzIgY2lwaGVyRmxhZ3MsIFBSSW50MzIgKl9y
ZXR2YWwpID0gMDsKCn07CiMgMjcyICJuc0RPTUNsYXNzSW5mby5jcHAiIDIKIyAxICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUveHVsZG9jL25zSUNvbnRyb2xsZXJzLmgiIDEKIyAxMCAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL3h1bGRvYy9uc0lDb250cm9sbGVycy5oIgojIDEgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS94dWxkb2MvbnNJQ29udHJvbGxlci5oIiAxCiMgMjUgIi4uLy4uLy4uL2Rpc3QvaW5j
bHVkZS94dWxkb2MvbnNJQ29udHJvbGxlci5oIgpjbGFzcyBuc0lDb250cm9sbGVyIDogcHVibGlj
IG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7
c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweGQ1YjYxYjgyLCAweDFkYTQsIDB4MTFkMywgeyAw
eGJmLCAweDg3LCAweDAwLCAweDEwLCAweDVhLCAweDFiLCAweDA2LCAweDI3IH19OyByZXR1cm4g
aWlkO30KCgogIHZpcnR1YWwgbnNyZXN1bHQgSXNDb21tYW5kRW5hYmxlZChjb25zdCBjaGFyICpj
b21tYW5kLCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgU3VwcG9y
dHNDb21tYW5kKGNvbnN0IGNoYXIgKmNvbW1hbmQsIFBSQm9vbCAqX3JldHZhbCkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBEb0NvbW1hbmQoY29uc3QgY2hhciAqY29tbWFuZCkgPSAwOwoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBPbkV2ZW50KGNvbnN0IGNoYXIgKmV2ZW50TmFtZSkgPSAwOwoKfTsK
IyAxMjAgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94dWxkb2MvbnNJQ29udHJvbGxlci5oIgpjbGFz
cyBuc0lDb21tYW5kUGFyYW1zOwojIDEzMCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL3h1bGRvYy9u
c0lDb250cm9sbGVyLmgiCmNsYXNzIG5zSUNvbW1hbmRDb250cm9sbGVyIDogcHVibGljIG5zSVN1
cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGlj
IGNvbnN0IG5zSUlEIGlpZCA9IHsweGViZTU1MDgwLCAweGM4YTksIDB4MTFkNSwgeyAweGE3LCAw
eDNjLCAweGRkLCAweDYyLCAweDBkLCAweDZlLCAweDA0LCAweGJjIH19OyByZXR1cm4gaWlkO30K
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29tbWFuZFN0YXRlV2l0aFBhcmFtcyhjb25zdCBjaGFy
ICpjb21tYW5kLCBuc0lDb21tYW5kUGFyYW1zICphQ29tbWFuZFBhcmFtcykgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBEb0NvbW1hbmRXaXRoUGFyYW1zKGNvbnN0IGNoYXIgKmNvbW1hbmQsIG5z
SUNvbW1hbmRQYXJhbXMgKmFDb21tYW5kUGFyYW1zKSA9IDA7Cgp9OwojIDIwMSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL3h1bGRvYy9uc0lDb250cm9sbGVyLmgiCmNsYXNzIG5zSVNpbXBsZUVudW1l
cmF0b3I7CiMgMjExICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUveHVsZG9jL25zSUNvbnRyb2xsZXIu
aCIKY2xhc3MgbnNJQ29udHJvbGxlckNvbW1hbmRHcm91cCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7
CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBu
c0lJRCBpaWQgPSB7MHg5ZjgyYzQwNCwgMHgxYzdiLCAweDExZDUsIHsgMHhhNywgMHgzYywgMHhl
YywgMHhhNCwgMHgzYywgMHhhOCwgMHgzNiwgMHhmYyB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEFkZENvbW1hbmRUb0dyb3VwKGNvbnN0IGNoYXIgKmFDb21tYW5kLCBjb25z
dCBjaGFyICphR3JvdXApID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVtb3ZlQ29tbWFuZEZy
b21Hcm91cChjb25zdCBjaGFyICphQ29tbWFuZCwgY29uc3QgY2hhciAqYUdyb3VwKSA9IDA7CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IElzQ29tbWFuZEluR3JvdXAoY29uc3QgY2hhciAqYUNvbW1hbmQs
IGNvbnN0IGNoYXIgKmFHcm91cCwgUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldEdyb3Vwc0VudW1lcmF0b3IobnNJU2ltcGxlRW51bWVyYXRvciAqKl9yZXR2YWwp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0RW51bWVyYXRvckZvckdyb3VwKGNvbnN0IGNo
YXIgKmFHcm91cCwgbnNJU2ltcGxlRW51bWVyYXRvciAqKl9yZXR2YWwpID0gMDsKCn07CiMgMTEg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS94dWxkb2MvbnNJQ29udHJvbGxlcnMuaCIgMgoKCgoKCgpj
bGFzcyBuc0lET01YVUxDb21tYW5kRGlzcGF0Y2hlcjsKIyAyNyAiLi4vLi4vLi4vZGlzdC9pbmNs
dWRlL3h1bGRvYy9uc0lDb250cm9sbGVycy5oIgpjbGFzcyBuc0lDb250cm9sbGVycyA6IHB1Ymxp
YyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkg
e3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHhhNWVkM2EwMSwgMHg3Y2M3LCAweDExZDMsIHsg
MHhiZiwgMHg4NywgMHgwMCwgMHgxMCwgMHg1YSwgMHgxYiwgMHgwNiwgMHgyNyB9fTsgcmV0dXJu
IGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbW1hbmREaXNwYXRjaGVyKG5zSURPTVhV
TENvbW1hbmREaXNwYXRjaGVyICogKmFDb21tYW5kRGlzcGF0Y2hlcikgPSAwOwogIHZpcnR1YWwg
bnNyZXN1bHQgU2V0Q29tbWFuZERpc3BhdGNoZXIobnNJRE9NWFVMQ29tbWFuZERpc3BhdGNoZXIg
KiBhQ29tbWFuZERpc3BhdGNoZXIpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29udHJv
bGxlckZvckNvbW1hbmQoY29uc3QgY2hhciAqY29tbWFuZCwgbnNJQ29udHJvbGxlciAqKl9yZXR2
YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSW5zZXJ0Q29udHJvbGxlckF0KFBSVWludDMy
IGluZGV4LCBuc0lDb250cm9sbGVyICpjb250cm9sbGVyKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVz
dWx0IFJlbW92ZUNvbnRyb2xsZXJBdChQUlVpbnQzMiBpbmRleCwgbnNJQ29udHJvbGxlciAqKl9y
ZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q29udHJvbGxlckF0KFBSVWludDMy
IGluZGV4LCBuc0lDb250cm9sbGVyICoqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBBcHBlbmRDb250cm9sbGVyKG5zSUNvbnRyb2xsZXIgKmNvbnRyb2xsZXIpID0gMDsKCgogIHZp
cnR1YWwgbnNyZXN1bHQgUmVtb3ZlQ29udHJvbGxlcihuc0lDb250cm9sbGVyICpjb250cm9sbGVy
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbnRyb2xsZXJJZChuc0lDb250cm9sbGVy
ICpjb250cm9sbGVyLCBQUlVpbnQzMiAqX3JldHZhbCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRDb250cm9sbGVyQnlJZChQUlVpbnQzMiBjb250cm9sbGVySUQsIG5zSUNvbnRyb2xsZXIg
KipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldENvbnRyb2xsZXJDb3VudChQ
UlVpbnQzMiAqX3JldHZhbCkgPSAwOwoKfTsKIyAyNzMgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgoj
IDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSVNlbGVjdGlvbi5oIiAxCiMgMTcg
Ii4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25zSVNlbGVjdGlvbi5oIgpjbGFzcyBuc0lE
T01Ob2RlOwoKY2xhc3MgbnNJRE9NUmFuZ2U7CiMgMzYgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9j
b250ZW50L25zSVNlbGVjdGlvbi5oIgpjbGFzcyBuc0lTZWxlY3Rpb24gOiBwdWJsaWMgbnNJU3Vw
cG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMg
Y29uc3QgbnNJSUQgaWlkID0gezB4YjJjN2VkNTksIDB4ODYzNCwgMHg0MzUyLCB7IDB4OWUsIDB4
MzcsIDB4NTQsIDB4ODQsIDB4YzgsIDB4YjYsIDB4ZTQsIDB4ZTEgfX07IHJldHVybiBpaWQ7fQoK
CgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRBbmNob3JOb2RlKG5zSURPTU5vZGUgKiAqYUFuY2hv
ck5vZGUpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0QW5jaG9yT2Zmc2V0KFBSSW50
MzIgKmFBbmNob3JPZmZzZXQpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Rm9jdXNO
b2RlKG5zSURPTU5vZGUgKiAqYUZvY3VzTm9kZSkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRGb2N1c09mZnNldChQUkludDMyICphRm9jdXNPZmZzZXQpID0gMDsKCgoKCgogIHZpcnR1
YWwgbnNyZXN1bHQgR2V0SXNDb2xsYXBzZWQoUFJCb29sICphSXNDb2xsYXBzZWQpID0gMDsKCgoK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UmFuZ2VDb3VudChQUkludDMyICphUmFuZ2VDb3VudCkg
PSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRSYW5nZUF0KFBSSW50MzIgaW5kZXgsIG5z
SURPTVJhbmdlICoqX3JldHZhbCkgPSAwOwojIDkxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvY29u
dGVudC9uc0lTZWxlY3Rpb24uaCIKICB2aXJ0dWFsIG5zcmVzdWx0IENvbGxhcHNlKG5zSURPTU5v
ZGUgKnBhcmVudE5vZGUsIFBSSW50MzIgb2Zmc2V0KSA9IDA7CiMgMTAxICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvY29udGVudC9uc0lTZWxlY3Rpb24uaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEV4dGVu
ZChuc0lET01Ob2RlICpwYXJlbnROb2RlLCBQUkludDMyIG9mZnNldCkgPSAwOwoKCgoKCgoKICB2
aXJ0dWFsIG5zcmVzdWx0IENvbGxhcHNlVG9TdGFydCh2b2lkKSA9IDA7CgoKCgoKCgogIHZpcnR1
YWwgbnNyZXN1bHQgQ29sbGFwc2VUb0VuZCh2b2lkKSA9IDA7CiMgMTI3ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvY29udGVudC9uc0lTZWxlY3Rpb24uaCIKICB2aXJ0dWFsIG5zcmVzdWx0IENvbnRh
aW5zTm9kZShuc0lET01Ob2RlICpub2RlLCBQUkJvb2wgZW50aXJlbHlDb250YWluZWQsIFBSQm9v
bCAqX3JldHZhbCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2VsZWN0QWxsQ2hpbGRy
ZW4obnNJRE9NTm9kZSAqcGFyZW50Tm9kZSkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBB
ZGRSYW5nZShuc0lET01SYW5nZSAqcmFuZ2UpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQg
UmVtb3ZlUmFuZ2UobnNJRE9NUmFuZ2UgKnJhbmdlKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVz
dWx0IFJlbW92ZUFsbFJhbmdlcyh2b2lkKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IERl
bGV0ZUZyb21Eb2N1bWVudCh2b2lkKSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgU2Vs
ZWN0aW9uTGFuZ3VhZ2VDaGFuZ2UoUFJCb29sIGxhbmdSVEwpID0gMDsKCgoKCgogIHZpcnR1YWwg
bnNyZXN1bHQgVG9TdHJpbmcoUFJVbmljaGFyICoqX3JldHZhbCkgPSAwOwoKfTsKIyAyNzQgIm5z
RE9NQ2xhc3NJbmZvLmNwcCIgMgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJ
Qm94T2JqZWN0LmgiIDEKIyAxNCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lCb3hP
YmplY3QuaCIKIyAxICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSUJveExheW91dE1h
bmFnZXIuaCIgMQojIDI1ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSUJveExheW91
dE1hbmFnZXIuaCIKY2xhc3MgbnNJQm94TGF5b3V0TWFuYWdlciA6IHB1YmxpYyBuc0lTdXBwb3J0
cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25z
dCBuc0lJRCBpaWQgPSB7MHhkYzA2Yjg5MCwgMHgxNWExLCAweDQ1YTksIHsgMHhhMSwgMHhhMywg
MHhmMSwgMHg0NCwgMHhiNCwgMHgyZSwgMHhlYSwgMHgyOSB9fTsgcmV0dXJuIGlpZDt9CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IExheW91dCh2b2lkKSA9IDA7Cgp9OwojIDg0ICIuLi8uLi8uLi9kaXN0
L2luY2x1ZGUvbGF5b3V0L25zSUJveExheW91dE1hbmFnZXIuaCIKbnNyZXN1bHQKTlNfTmV3Qm94
TGF5b3V0TWFuYWdlcihuc0lCb3hMYXlvdXRNYW5hZ2VyKiogYVJlc3VsdCk7CiMgMTUgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJQm94T2JqZWN0LmgiIDIKCgoKIyAxICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSUJveFBhaW50TWFuYWdlci5oIiAxCiMgMjUgIi4uLy4u
Ly4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJQm94UGFpbnRNYW5hZ2VyLmgiCmNsYXNzIG5zSUJv
eFBhaW50TWFuYWdlciA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBj
b25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHg1ZGExZThm
MCwgMHg2MjU1LCAweDRiOWMsIHsgMHhhZiwgMHg4MCwgMHhhYSwgMHgzZCwgMHhhZCwgMHg3Ziwg
MHgyZiwgMHhkYiB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFBhaW50KHZv
aWQpID0gMDsKCn07CiMgODQgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJQm94UGFp
bnRNYW5hZ2VyLmgiCm5zcmVzdWx0Ck5TX05ld0JveFBhaW50TWFuYWdlcihuc0lCb3hQYWludE1h
bmFnZXIqKiBhUmVzdWx0KTsKIyAxOSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lC
b3hPYmplY3QuaCIgMgoKCgoKCgpjbGFzcyBuc0lET01FbGVtZW50OwojIDM1ICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbGF5b3V0L25zSUJveE9iamVjdC5oIgpjbGFzcyBuc0lCb3hPYmplY3QgOiBw
dWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29uc3QgbnNJSUQmIEdldElJ
RCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4Y2FhYmY3NmYsIDB4OWQzNSwgMHg0MDFm
LCB7IDB4YmUsIDB4YWMsIDB4MzksIDB4NTUsIDB4ODEsIDB4N2MsIDB4NjQsIDB4NWMgfX07IHJl
dHVybiBpaWQ7fQoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRFbGVtZW50KG5zSURPTUVsZW1lbnQg
KiAqYUVsZW1lbnQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0TGF5b3V0TWFuYWdlcihu
c0lCb3hMYXlvdXRNYW5hZ2VyICogKmFMYXlvdXRNYW5hZ2VyKSA9IDA7CiAgdmlydHVhbCBuc3Jl
c3VsdCBTZXRMYXlvdXRNYW5hZ2VyKG5zSUJveExheW91dE1hbmFnZXIgKiBhTGF5b3V0TWFuYWdl
cikgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQYWludE1hbmFnZXIobnNJQm94UGFpbnRN
YW5hZ2VyICogKmFQYWludE1hbmFnZXIpID0gMDsKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFBhaW50
TWFuYWdlcihuc0lCb3hQYWludE1hbmFnZXIgKiBhUGFpbnRNYW5hZ2VyKSA9IDA7CgoKICB2aXJ0
dWFsIG5zcmVzdWx0IEdldFgoUFJJbnQzMiAqYVgpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0WShQUkludDMyICphWSkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRTY3JlZW5YKFBS
SW50MzIgKmFTY3JlZW5YKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNjcmVlblkoUFJJ
bnQzMiAqYVNjcmVlblkpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0V2lkdGgoUFJJbnQz
MiAqYVdpZHRoKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEhlaWdodChQUkludDMyICph
SGVpZ2h0KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByb3BlcnR5QXNTdXBwb3J0cyhj
b25zdCBQUlVuaWNoYXIgKnByb3BlcnR5TmFtZSwgbnNJU3VwcG9ydHMgKipfcmV0dmFsKSA9IDA7
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFByb3BlcnR5QXNTdXBwb3J0cyhjb25zdCBQUlVuaWNo
YXIgKnByb3BlcnR5TmFtZSwgbnNJU3VwcG9ydHMgKnZhbHVlKSA9IDA7CgoKICB2aXJ0dWFsIG5z
cmVzdWx0IEdldFByb3BlcnR5KGNvbnN0IFBSVW5pY2hhciAqcHJvcGVydHlOYW1lLCBQUlVuaWNo
YXIgKipfcmV0dmFsKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNldFByb3BlcnR5KGNvbnN0
IFBSVW5pY2hhciAqcHJvcGVydHlOYW1lLCBjb25zdCBQUlVuaWNoYXIgKnByb3BlcnR5VmFsdWUp
ID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgUmVtb3ZlUHJvcGVydHkoY29uc3QgUFJVbmljaGFy
ICpwcm9wZXJ0eU5hbWUpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0UGFyZW50Qm94KG5z
SURPTUVsZW1lbnQgKiAqYVBhcmVudEJveCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRG
aXJzdENoaWxkKG5zSURPTUVsZW1lbnQgKiAqYUZpcnN0Q2hpbGQpID0gMDsKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0TGFzdENoaWxkKG5zSURPTUVsZW1lbnQgKiAqYUxhc3RDaGlsZCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXROZXh0U2libGluZyhuc0lET01FbGVtZW50ICogKmFOZXh0
U2libGluZykgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQcmV2aW91c1NpYmxpbmcobnNJ
RE9NRWxlbWVudCAqICphUHJldmlvdXNTaWJsaW5nKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldExvb2tBbmRGZWVsTWV0cmljKGNvbnN0IFBSVW5pY2hhciAqcHJvcGVydHlOYW1lLCBQUlVu
aWNoYXIgKipfcmV0dmFsKSA9IDA7Cgp9OwojIDMzOCAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2xh
eW91dC9uc0lCb3hPYmplY3QuaCIKbnNyZXN1bHQKTlNfTmV3Qm94T2JqZWN0KG5zSUJveE9iamVj
dCoqIGFSZXN1bHQpOwojIDI3NSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2xheW91dC9uc0lUcmVlU2VsZWN0aW9uLmgiIDEKIyAxNyAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2xheW91dC9uc0lUcmVlU2VsZWN0aW9uLmgiCmNsYXNzIG5zSVRyZWVCb3hP
YmplY3Q7CiMgMjcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJVHJlZVNlbGVjdGlv
bi5oIgpjbGFzcyBuc0lUcmVlU2VsZWN0aW9uIDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1Ymxp
YzoKCiAgc3RhdGljIGNvbnN0IG5zSUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlp
ZCA9IHsweGY4YTEzMzY0LCAweDE4NGUsIDB4NGRhMywgeyAweGJhLCAweGRmLCAweDVjLCAweDA0
LCAweDgzLCAweDc1LCAweDM3LCAweGY4IH19OyByZXR1cm4gaWlkO30KCgoKCgogIHZpcnR1YWwg
bnNyZXN1bHQgR2V0VHJlZShuc0lUcmVlQm94T2JqZWN0ICogKmFUcmVlKSA9IDA7CiAgdmlydHVh
bCBuc3Jlc3VsdCBTZXRUcmVlKG5zSVRyZWVCb3hPYmplY3QgKiBhVHJlZSkgPSAwOwoKCgoKCiAg
dmlydHVhbCBuc3Jlc3VsdCBHZXRDb3VudChQUkludDMyICphQ291bnQpID0gMDsKCgoKCgoKICB2
aXJ0dWFsIG5zcmVzdWx0IElzU2VsZWN0ZWQoUFJJbnQzMiBpbmRleCwgUFJCb29sICpfcmV0dmFs
KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNlbGVjdChQUkludDMyIGluZGV4KSA9IDA7
CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFRpbWVkU2VsZWN0KFBSSW50MzIgaW5kZXgsIFBSSW50
MzIgZGVsYXkpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgVG9nZ2xlU2VsZWN0KFBSSW50
MzIgaW5kZXgpID0gMDsKCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBSYW5nZWRTZWxlY3QoUFJJ
bnQzMiBzdGFydEluZGV4LCBQUkludDMyIGVuZEluZGV4LCBQUkJvb2wgYXVnbWVudCkgPSAwOwoK
CgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDbGVhclJhbmdlKFBSSW50MzIgc3RhcnRJbmRleCwgUFJJ
bnQzMiBlbmRJbmRleCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDbGVhclNlbGVjdGlv
bih2b2lkKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEludmVydFNlbGVjdGlvbih2b2lk
KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNlbGVjdEFsbCh2b2lkKSA9IDA7CgoKCgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJhbmdlQ291bnQoUFJJbnQzMiAqX3JldHZhbCkgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRSYW5nZUF0KFBSSW50MzIgaSwgUFJJbnQzMiAqbWluLCBQ
UkludDMyICptYXgpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgSW52YWxpZGF0ZVNlbGVj
dGlvbih2b2lkKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEFkanVzdFNlbGVjdGlvbihQ
UkludDMyIGluZGV4LCBQUkludDMyIGNvdW50KSA9IDA7CiMgMTMxICIuLi8uLi8uLi9kaXN0L2lu
Y2x1ZGUvbGF5b3V0L25zSVRyZWVTZWxlY3Rpb24uaCIKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNl
bGVjdEV2ZW50c1N1cHByZXNzZWQoUFJCb29sICphU2VsZWN0RXZlbnRzU3VwcHJlc3NlZCkgPSAw
OwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0U2VsZWN0RXZlbnRzU3VwcHJlc3NlZChQUkJvb2wgYVNl
bGVjdEV2ZW50c1N1cHByZXNzZWQpID0gMDsKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEN1
cnJlbnRJbmRleChQUkludDMyICphQ3VycmVudEluZGV4KSA9IDA7CiAgdmlydHVhbCBuc3Jlc3Vs
dCBTZXRDdXJyZW50SW5kZXgoUFJJbnQzMiBhQ3VycmVudEluZGV4KSA9IDA7CgoKCgoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBHZXRTaGlmdFNlbGVjdFBpdm90KFBSSW50MzIgKmFTaGlmdFNlbGVjdFBp
dm90KSA9IDA7Cgp9OwojIDI3NiAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMSAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2xheW91dC9uc0lUcmVlQ29udGVudFZpZXcuaCIgMQojIDI5ICIuLi8uLi8u
Li9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVRyZWVDb250ZW50Vmlldy5oIgpjbGFzcyBuc0lUcmVl
Q29udGVudFZpZXcgOiBwdWJsaWMgbnNJU3VwcG9ydHMgewogcHVibGljOgoKICBzdGF0aWMgY29u
c3QgbnNJSUQmIEdldElJRCgpIHtzdGF0aWMgY29uc3QgbnNJSUQgaWlkID0gezB4OTcyYWU5ZmYs
IDB4YzdiMywgMHg0YjYwLCB7IDB4YTUsIDB4MWUsIDB4YTIsIDB4MGEsIDB4OWQsIDB4ZTMsIDB4
NjksIDB4NDcgfX07IHJldHVybiBpaWQ7fQoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRSb290
KG5zSURPTUVsZW1lbnQgKiAqYVJvb3QpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
SXRlbUF0SW5kZXgoUFJJbnQzMiBpbmRleCwgbnNJRE9NRWxlbWVudCAqKl9yZXR2YWwpID0gMDsK
CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0SW5kZXhPZkl0ZW0obnNJRE9NRWxlbWVudCAqaXRl
bSwgUFJJbnQzMiAqX3JldHZhbCkgPSAwOwoKfTsKIyAyNzcgIm5zRE9NQ2xhc3NJbmZvLmNwcCIg
MgojIDEgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJVHJlZVZpZXcuaCIgMQojIDEw
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVRyZWVWaWV3LmgiCiMgMSAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lUcmVlQm94T2JqZWN0LmgiIDEKIyAyMSAiLi4vLi4v
Li4vZGlzdC9pbmNsdWRlL2xheW91dC9uc0lUcmVlQm94T2JqZWN0LmgiCmNsYXNzIG5zSVRyZWVW
aWV3OwoKY2xhc3MgbnNJVHJlZVNlbGVjdGlvbjsKCmNsYXNzIG5zSURPTUV2ZW50OwojIDM1ICIu
Li8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVRyZWVCb3hPYmplY3QuaCIKY2xhc3MgbnNJ
VHJlZUJveE9iamVjdCA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBj
b25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7MHg0NDQ4MTM4
NSwgMHhiMWRhLCAweDQ4MGEsIHsgMHg5MCwgMHgyNiwgMHgxZiwgMHgwMiwgMHgzMiwgMHhjNCwg
MHhlZSwgMHg1OSB9fTsgcmV0dXJuIGlpZDt9CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0
Vmlldyhuc0lUcmVlVmlldyAqICphVmlldykgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Vmll
dyhuc0lUcmVlVmlldyAqIGFWaWV3KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEZv
Y3VzZWQoUFJCb29sICphRm9jdXNlZCkgPSAwOwogIHZpcnR1YWwgbnNyZXN1bHQgU2V0Rm9jdXNl
ZChQUkJvb2wgYUZvY3VzZWQpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0VHJlZUJv
ZHkobnNJRE9NRWxlbWVudCAqICphVHJlZUJvZHkpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1
bHQgR2V0U2VsZWN0aW9uKG5zSVRyZWVTZWxlY3Rpb24gKiAqYVNlbGVjdGlvbikgPSAwOwoKCgoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRSb3dIZWlnaHQoUFJJbnQzMiAqYVJvd0hlaWdodCkgPSAw
OwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRDb2x1bW5JbmRleChjb25zdCBQUlVuaWNoYXIg
KmNvbElELCBQUkludDMyICpfcmV0dmFsKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdl
dENvbHVtbklEKFBSSW50MzIgY29sSW5kZXgsIG5zQVN0cmluZyAmIF9yZXR2YWwpID0gMDsKCgoK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0S2V5Q29sdW1uSW5kZXgoUFJJbnQzMiAqX3JldHZhbCkg
PSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRGaXJzdFZpc2libGVSb3coUFJJbnQzMiAq
X3JldHZhbCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRMYXN0VmlzaWJsZVJvdyhQ
UkludDMyICpfcmV0dmFsKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFBhZ2VDb3Vu
dChQUkludDMyICpfcmV0dmFsKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEVuc3VyZVJv
d0lzVmlzaWJsZShQUkludDMyIGluZGV4KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNj
cm9sbFRvUm93KFBSSW50MzIgaW5kZXgpID0gMDsKCgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBT
Y3JvbGxCeUxpbmVzKFBSSW50MzIgbnVtTGluZXMpID0gMDsKIyAxMzcgIi4uLy4uLy4uL2Rpc3Qv
aW5jbHVkZS9sYXlvdXQvbnNJVHJlZUJveE9iamVjdC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgU2Ny
b2xsQnlQYWdlcyhQUkludDMyIG51bVBhZ2VzKSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEludmFsaWRhdGUodm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBJbnZhbGlkYXRlQ29s
dW1uKGNvbnN0IFBSVW5pY2hhciAqY29sSUQpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSW52
YWxpZGF0ZVJvdyhQUkludDMyIGluZGV4KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEludmFs
aWRhdGVDZWxsKFBSSW50MzIgcm93LCBjb25zdCBQUlVuaWNoYXIgKmNvbElEKSA9IDA7CgoKICB2
aXJ0dWFsIG5zcmVzdWx0IEludmFsaWRhdGVQcmltYXJ5Q2VsbChQUkludDMyIHJvdykgPSAwOwoK
CiAgdmlydHVhbCBuc3Jlc3VsdCBJbnZhbGlkYXRlUmFuZ2UoUFJJbnQzMiBzdGFydEluZGV4LCBQ
UkludDMyIGVuZEluZGV4KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEludmFsaWRhdGVTY3Jv
bGxiYXIodm9pZCkgPSAwOwoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Um93QXQoUFJJbnQz
MiB4LCBQUkludDMyIHksIFBSSW50MzIgKl9yZXR2YWwpID0gMDsKIyAxNzcgIi4uLy4uLy4uL2Rp
c3QvaW5jbHVkZS9sYXlvdXQvbnNJVHJlZUJveE9iamVjdC5oIgogIHZpcnR1YWwgbnNyZXN1bHQg
R2V0Q2VsbEF0KFBSSW50MzIgeCwgUFJJbnQzMiB5LCBQUkludDMyICpyb3csIFBSVW5pY2hhciAq
KmNvbElELCBQUlVuaWNoYXIgKipjaGlsZEVsdCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRDb29yZHNGb3JDZWxsSXRlbShQUkludDMyIHJvdywgY29uc3QgUFJVbmljaGFyICpjb2xJ
RCwgY29uc3QgUFJVbmljaGFyICplbGVtZW50LCBQUkludDMyICp4LCBQUkludDMyICp5LCBQUklu
dDMyICp3aWR0aCwgUFJJbnQzMiAqaGVpZ2h0KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0
IElzQ2VsbENyb3BwZWQoUFJJbnQzMiByb3csIGNvbnN0IG5zQVN0cmluZyAmIGNvbElELCBQUkJv
b2wgKl9yZXR2YWwpID0gMDsKIyAxOTggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9sYXlvdXQvbnNJ
VHJlZUJveE9iamVjdC5oIgogIHZpcnR1YWwgbnNyZXN1bHQgUm93Q291bnRDaGFuZ2VkKFBSSW50
MzIgaW5kZXgsIFBSSW50MzIgY291bnQpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgT25E
cmFnRW50ZXIobnNJRE9NRXZlbnQgKmV2ZW50KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IE9u
RHJhZ0V4aXQobnNJRE9NRXZlbnQgKmV2ZW50KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IE9u
RHJhZ092ZXIobnNJRE9NRXZlbnQgKmV2ZW50KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IE9u
RHJhZ0Ryb3AobnNJRE9NRXZlbnQgKmV2ZW50KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0
IENsZWFyU3R5bGVBbmRJbWFnZUNhY2hlcyh2b2lkKSA9IDA7Cgp9OwojIDExICIuLi8uLi8uLi9k
aXN0L2luY2x1ZGUvbGF5b3V0L25zSVRyZWVWaWV3LmgiIDIKIyAyNSAiLi4vLi4vLi4vZGlzdC9p
bmNsdWRlL2xheW91dC9uc0lUcmVlVmlldy5oIgpjbGFzcyBuc0lUcmVlU2VsZWN0aW9uOwojIDM1
ICIuLi8uLi8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVRyZWVWaWV3LmgiCmNsYXNzIG5zSVRy
ZWVWaWV3IDogcHVibGljIG5zSVN1cHBvcnRzIHsKIHB1YmxpYzoKCiAgc3RhdGljIGNvbnN0IG5z
SUlEJiBHZXRJSUQoKSB7c3RhdGljIGNvbnN0IG5zSUlEIGlpZCA9IHsweDU4YTUzNzM0LCAweDE4
MzcsIDB4NGYzMCwgeyAweDliLCAweGZkLCAweGVlLCAweDU4LCAweGY2LCAweDNjLCAweGEwLCAw
eDQ5IH19OyByZXR1cm4gaWlkO30KCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Um93Q291bnQo
UFJJbnQzMiAqYVJvd0NvdW50KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFNlbGVj
dGlvbihuc0lUcmVlU2VsZWN0aW9uICogKmFTZWxlY3Rpb24pID0gMDsKICB2aXJ0dWFsIG5zcmVz
dWx0IFNldFNlbGVjdGlvbihuc0lUcmVlU2VsZWN0aW9uICogYVNlbGVjdGlvbikgPSAwOwoKCgoK
CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFJvd1Byb3BlcnRpZXMoUFJJbnQzMiBpbmRleCwgbnNJ
U3VwcG9ydHNBcnJheSAqcHJvcGVydGllcykgPSAwOwoKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0
IEdldENlbGxQcm9wZXJ0aWVzKFBSSW50MzIgcm93LCBjb25zdCBQUlVuaWNoYXIgKmNvbElELCBu
c0lTdXBwb3J0c0FycmF5ICpwcm9wZXJ0aWVzKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3Vs
dCBHZXRDb2x1bW5Qcm9wZXJ0aWVzKGNvbnN0IFBSVW5pY2hhciAqY29sSUQsIG5zSURPTUVsZW1l
bnQgKmNvbEVsdCwgbnNJU3VwcG9ydHNBcnJheSAqcHJvcGVydGllcykgPSAwOwoKCgoKCgogIHZp
cnR1YWwgbnNyZXN1bHQgSXNDb250YWluZXIoUFJJbnQzMiBpbmRleCwgUFJCb29sICpfcmV0dmFs
KSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IElzQ29udGFpbmVyT3BlbihQUkludDMyIGluZGV4
LCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKCgogIHZpcnR1YWwgbnNyZXN1bHQgSXNDb250YWluZXJF
bXB0eShQUkludDMyIGluZGV4LCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKIyA5NiAiLi4vLi4vLi4v
ZGlzdC9pbmNsdWRlL2xheW91dC9uc0lUcmVlVmlldy5oIgogIHZpcnR1YWwgbnNyZXN1bHQgSXNT
ZXBhcmF0b3IoUFJJbnQzMiBpbmRleCwgUFJCb29sICpfcmV0dmFsKSA9IDA7CgoKCgoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBJc1NvcnRlZChQUkJvb2wgKl9yZXR2YWwpID0gMDsKCgoKCgoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBDYW5Ecm9wT24oUFJJbnQzMiBpbmRleCwgUFJCb29sICpfcmV0dmFsKSA9
IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IENhbkRyb3BCZWZvcmVBZnRlcihQUkludDMyIGluZGV4
LCBQUkJvb2wgYmVmb3JlLCBQUkJvb2wgKl9yZXR2YWwpID0gMDsKCgoKCgogIGVudW0geyBpbkRy
b3BCZWZvcmUgPSAwIH07CgogIGVudW0geyBpbkRyb3BPbiA9IDEgfTsKCiAgZW51bSB7IGluRHJv
cEFmdGVyID0gMiB9OwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBEcm9wKFBSSW50MzIgcm93LCBQUklu
dDMyIG9yaWVudGF0aW9uKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBHZXRQYXJlbnRJ
bmRleChQUkludDMyIHJvd0luZGV4LCBQUkludDMyICpfcmV0dmFsKSA9IDA7CiMgMTQzICIuLi8u
Li8uLi9kaXN0L2luY2x1ZGUvbGF5b3V0L25zSVRyZWVWaWV3LmgiCiAgdmlydHVhbCBuc3Jlc3Vs
dCBIYXNOZXh0U2libGluZyhQUkludDMyIHJvd0luZGV4LCBQUkludDMyIGFmdGVySW5kZXgsIFBS
Qm9vbCAqX3JldHZhbCkgPSAwOwoKCgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldExldmVsKFBS
SW50MzIgaW5kZXgsIFBSSW50MzIgKl9yZXR2YWwpID0gMDsKCgoKCgoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBHZXRJbWFnZVNyYyhQUkludDMyIHJvdywgY29uc3QgUFJVbmljaGFyICpjb2xJRCwgbnNB
U3RyaW5nICYgX3JldHZhbCkgPSAwOwoKCgoKCiAgZW51bSB7IHByb2dyZXNzTm9ybWFsID0gMSB9
OwoKICBlbnVtIHsgcHJvZ3Jlc3NVbmRldGVybWluZWQgPSAyIH07CgogIGVudW0geyBwcm9ncmVz
c05vbmUgPSAzIH07CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldFByb2dyZXNzTW9kZShQUkludDMy
IHJvdywgY29uc3QgUFJVbmljaGFyICpjb2xJRCwgUFJJbnQzMiAqX3JldHZhbCkgPSAwOwoKCgoK
CgogIHZpcnR1YWwgbnNyZXN1bHQgR2V0Q2VsbFZhbHVlKFBSSW50MzIgcm93LCBjb25zdCBQUlVu
aWNoYXIgKmNvbElELCBuc0FTdHJpbmcgJiBfcmV0dmFsKSA9IDA7CgoKCgoKCiAgdmlydHVhbCBu
c3Jlc3VsdCBHZXRDZWxsVGV4dChQUkludDMyIHJvdywgY29uc3QgUFJVbmljaGFyICpjb2xJRCwg
bnNBU3RyaW5nICYgX3JldHZhbCkgPSAwOwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZXRUcmVl
KG5zSVRyZWVCb3hPYmplY3QgKnRyZWUpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgVG9n
Z2xlT3BlblN0YXRlKFBSSW50MzIgaW5kZXgpID0gMDsKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQg
Q3ljbGVIZWFkZXIoY29uc3QgUFJVbmljaGFyICpjb2xJRCwgbnNJRE9NRWxlbWVudCAqZWx0KSA9
IDA7CgoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBTZWxlY3Rpb25DaGFuZ2VkKHZvaWQpID0gMDsK
CgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgQ3ljbGVDZWxsKFBSSW50MzIgcm93LCBjb25zdCBQUlVu
aWNoYXIgKmNvbElEKSA9IDA7CgoKCgoKCgogIHZpcnR1YWwgbnNyZXN1bHQgSXNFZGl0YWJsZShQ
UkludDMyIHJvdywgY29uc3QgUFJVbmljaGFyICpjb2xJRCwgUFJCb29sICpfcmV0dmFsKSA9IDA7
CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFNldENlbGxUZXh0KFBSSW50MzIgcm93LCBjb25zdCBQ
UlVuaWNoYXIgKmNvbElELCBjb25zdCBQUlVuaWNoYXIgKnZhbHVlKSA9IDA7CgoKCgoKCgogIHZp
cnR1YWwgbnNyZXN1bHQgUGVyZm9ybUFjdGlvbihjb25zdCBQUlVuaWNoYXIgKmFjdGlvbikgPSAw
OwoKCgoKCiAgdmlydHVhbCBuc3Jlc3VsdCBQZXJmb3JtQWN0aW9uT25Sb3coY29uc3QgUFJVbmlj
aGFyICphY3Rpb24sIFBSSW50MzIgcm93KSA9IDA7CgoKCgoKICB2aXJ0dWFsIG5zcmVzdWx0IFBl
cmZvcm1BY3Rpb25PbkNlbGwoY29uc3QgUFJVbmljaGFyICphY3Rpb24sIFBSSW50MzIgcm93LCBj
b25zdCBQUlVuaWNoYXIgKmNvbElEKSA9IDA7Cgp9OwojIDI3OCAibnNET01DbGFzc0luZm8uY3Bw
IiAyCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01YUGF0aEV2YWx1YXRvci5o
IiAxCiMgMTcgIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9kb20vbnNJRE9NWFBhdGhFdmFsdWF0b3Iu
aCIKY2xhc3MgbnNJRE9NWFBhdGhOU1Jlc29sdmVyOwoKY2xhc3MgbnNJRE9NWFBhdGhSZXN1bHQ7
CgpjbGFzcyBuc0lET01YUGF0aEV4cHJlc3Npb247CgpjbGFzcyBYUGF0aEV4Y2VwdGlvbjsKIyAz
MyAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2RvbS9uc0lET01YUGF0aEV2YWx1YXRvci5oIgpjbGFz
cyBuc0lET01YUGF0aEV2YWx1YXRvciA6IHB1YmxpYyBuc0lTdXBwb3J0cyB7CiBwdWJsaWM6Cgog
IHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBjb25zdCBuc0lJRCBpaWQgPSB7
MHg3NTUwNmY4YSwgMHhiNTA0LCAweDExZDUsIHsgMHhhNywgMHhmMiwgMHhjYSwgMHgxMCwgMHg4
YSwgMHhiOCwgMHhiNiwgMHhmYyB9fTsgcmV0dXJuIGlpZDt9CgoKICB2aXJ0dWFsIG5zcmVzdWx0
IENyZWF0ZUV4cHJlc3Npb24oY29uc3QgbnNBU3RyaW5nICYgZXhwcmVzc2lvbiwgbnNJRE9NWFBh
dGhOU1Jlc29sdmVyICpyZXNvbHZlciwgbnNJRE9NWFBhdGhFeHByZXNzaW9uICoqX3JldHZhbCkg
PSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBDcmVhdGVOU1Jlc29sdmVyKG5zSURPTU5vZGUgKm5v
ZGVSZXNvbHZlciwgbnNJRE9NWFBhdGhOU1Jlc29sdmVyICoqX3JldHZhbCkgPSAwOwoKCiAgdmly
dHVhbCBuc3Jlc3VsdCBFdmFsdWF0ZShjb25zdCBuc0FTdHJpbmcgJiBleHByZXNzaW9uLCBuc0lE
T01Ob2RlICpjb250ZXh0Tm9kZSwgbnNJRE9NWFBhdGhOU1Jlc29sdmVyICpyZXNvbHZlciwgUFJV
aW50MTYgdHlwZSwgbnNJRE9NWFBhdGhSZXN1bHQgKnJlc3VsdCwgbnNJRE9NWFBhdGhSZXN1bHQg
KipfcmV0dmFsKSA9IDA7Cgp9OwojIDI3OSAibnNET01DbGFzc0luZm8uY3BwIiAyCiMgMzEyICJu
c0RPTUNsYXNzSW5mby5jcHAiCiMgMSAiLi4vLi4vLi4vZGlzdC9pbmNsdWRlL2NvbnRlbnQvbnNJ
SW1hZ2VEb2N1bWVudC5oIiAxCiMgMjggIi4uLy4uLy4uL2Rpc3QvaW5jbHVkZS9jb250ZW50L25z
SUltYWdlRG9jdW1lbnQuaCIKY2xhc3MgbnNJSW1hZ2VEb2N1bWVudCA6IHB1YmxpYyBuc0lTdXBw
b3J0cyB7CiBwdWJsaWM6CgogIHN0YXRpYyBjb25zdCBuc0lJRCYgR2V0SUlEKCkge3N0YXRpYyBj
b25zdCBuc0lJRCBpaWQgPSB7MHhiNDgyZjZkOCwgMHg0MGE5LCAweDRmMjAsIHsgMHg4OSwgMHhm
MywgMHg3NywgMHgyZCwgMHg0MSwgMHg3YSwgMHg0YywgMHg4MSB9fTsgcmV0dXJuIGlpZDt9CgoK
ICB2aXJ0dWFsIG5zcmVzdWx0IEdldEltYWdlUmVzaXppbmdFbmFibGVkKFBSQm9vbCAqYUltYWdl
UmVzaXppbmdFbmFibGVkKSA9IDA7CgoKICB2aXJ0dWFsIG5zcmVzdWx0IEdldEltYWdlSXNPdmVy
Zmxvd2luZyhQUkJvb2wgKmFJbWFnZUlzT3ZlcmZsb3dpbmcpID0gMDsKCgogIHZpcnR1YWwgbnNy
ZXN1bHQgR2V0SW1hZ2VJc1Jlc2l6ZWQoUFJCb29sICphSW1hZ2VJc1Jlc2l6ZWQpID0gMDsKCgog
IHZpcnR1YWwgbnNyZXN1bHQgU2hyaW5rVG9GaXQodm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jl
c3VsdCBSZXN0b3JlSW1hZ2Uodm9pZCkgPSAwOwoKCiAgdmlydHVhbCBuc3Jlc3VsdCBUb2dnbGVJ
bWFnZVNpemUodm9pZCkgPSAwOwoKfTsKIyAzMTMgIm5zRE9NQ2xhc3NJbmZvLmNwcCIgMgoKc3Rh
dGljIGNvbnN0IG5zQ0lEIGtDUGx1Z2luTWFuYWdlckNJRCA9IHsgMHhjZTc2ODk5MCwgMHg1YTRl
LCAweDExZDIsIHsweDgxLCAweDY0LCAweDAwLCAweDYwLCAweDA4LCAweDExLCAweDlkLCAweDdh
fSB9OwpzdGF0aWMgY29uc3QgbnNDSUQga0RPTVNPRl9DSUQgPSB7IDB4OWViNzYwZjAsIDB4NDM4
MCwgMHgxMWQyLCB7MHhiMywgMHgyOCwgMHgwMCwgMHg4MCwgMHg1ZiwgMHg4YSwgMHgzOCwgMHg1
OX0gfTsKIyAzODQgIm5zRE9NQ2xhc3NJbmZvLmNwcCIKc3RhdGljIG5zRE9NQ2xhc3NJbmZvRGF0
YSBzQ2xhc3NJbmZvRGF0YVtdID0gewojIDM5NCAibnNET01DbGFzc0luZm8uY3BwIgogIHsgIldp
bmRvdyIsIHsgbnNXaW5kb3dTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKG5zSVhQQ1NjcmlwdGFi
bGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pT
U1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9T
RVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVT
T0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBu
c0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRh
YmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNT
IHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfR0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZIHwg
bnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5U
X0ZJTkFMSVpFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OldBTlRfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0VOVU1F
UkFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UsIDEsIH0s
CiMgNDA2ICJuc0RPTUNsYXNzSW5mby5jcHAiCiAgeyAiTG9jYXRpb24iLCB7IG5zTG9jYXRpb25T
SDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZP
Ul9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BF
UlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lY
UENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3Jp
cHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05U
X1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNP
TFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFi
bGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllf
SU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkg
JiB+bnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSwgMSwgfSwK
CgoKICB7ICJOYXZpZ2F0b3IiLCB7IG5zRE9NR2VuZXJpY1NIOjpkb0NyZWF0ZSB9LCAwLCAwLCAw
LCAoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBD
U2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxl
OjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BS
T1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9E
U19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1Jf
U0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFN
RVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8
IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3Jp
cHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwgfSwKCiAgeyAiUGx1Z2luIiwg
eyBuc1BsdWdpblNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKChuc0lYUENTY3JpcHRhYmxlOjpV
U0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJf
Rk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJP
UEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUg
fCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBD
U2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3Jp
cHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6
V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05U
X0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVS
RkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0dFVFBST1BFUlRZKSwgMSwgfSwK
CiAgeyAiUGx1Z2luQXJyYXkiLCB7IG5zUGx1Z2luQXJyYXlTSDo6ZG9DcmVhdGUgfSwgMCwgMCwg
MCwgKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lY
UENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1df
UFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9N
T0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZP
Ul9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9O
QU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUp
IHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6
V0FOVF9HRVRQUk9QRVJUWSksIDEsIH0sCgogIHsgIk1pbWVUeXBlIiwgeyBuc0RPTUdlbmVyaWNT
SDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZP
Ul9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BF
UlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lY
UENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3Jp
cHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05U
X1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNP
TFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFi
bGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllf
SU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSks
IDEsIH0sCgogIHsgIk1pbWVUeXBlQXJyYXkiLCB7IG5zTWltZVR5cGVBcnJheVNIOjpkb0NyZWF0
ZSB9LCAwLCAwLCAwLCAoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9Q
RVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRh
YmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpB
TExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tf
SU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1Rf
SU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRf
UE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNF
IHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX0dFVFBST1BFUlRZKSwgMSwgfSwKCiAgeyAiQmFyUHJvcCIsIHsgbnNE
T01HZW5lcmljU0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgobnNJWFBDU2NyaXB0YWJsZTo6VVNF
X0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZP
Ul9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BF
UlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwg
bnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldB
TlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lY
UENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9F
TlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZB
Q0VTX09OTFkpLCAxLCB9LAoKICB7ICJIaXN0b3J5IiwgeyBuc0hpc3RvcnlTSDo6ZG9DcmVhdGUg
fSwgMCwgMCwgMCwgKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVS
VFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxM
T1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lO
U1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lO
VEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BP
U1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8
IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6V0FOVF9HRVRQUk9QRVJUWSksIDEsIH0sCgogIHsgIlNjcmVlbiIsIHsgbnNET01H
ZW5lcmljU0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pT
U1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9E
RUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZ
IHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRf
TkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVN
X1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VT
X09OTFkpLCAxLCB9LAoKCgogIHsgIlhNTERvY3VtZW50IiwgeyBuc0RvY3VtZW50U0g6OmRvQ3Jl
YXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQURE
UFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8
IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRf
QVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZM
RUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8
IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpX
QU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVS
RkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FE
RFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBD
U2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfREVMUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0dFVFBST1BFUlRZKSB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfRU5VTUVSQVRFLCAxLCB9LAoKCiAgeyAiRG9jdW1lbnRUeXBlIiwgeyBuc05vZGVTSDo6
ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9S
X0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVS
VFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpE
T05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRf
UkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09M
VkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9J
TlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSB8
IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JFQVRFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfU0VUUFJPUEVSVFkpICYgfm5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZKSwgMSwgfSwKCiAgeyAi
RE9NSW1wbGVtZW50YXRpb24iLCB7IG5zRE9NR2VuZXJpY1NIOjpkb0NyZWF0ZSB9LCAwLCAwLCAw
LCAoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBD
U2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxl
OjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BS
T1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9E
U19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1Jf
U0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFN
RVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8
IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3Jp
cHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwgfSwKCiAgeyAiRE9NRXhjZXB0
aW9uIiwgeyBuc0RPTUdlbmVyaWNTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKChuc0lYUENTY3Jp
cHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVT
RV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9G
T1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5H
X1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBF
IHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBu
c0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FD
Q0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRh
YmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJ
TkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkRvY3VtZW50RnJhZ21lbnQiLCB7IG5z
RE9NR2VuZXJpY1NIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKG5zSVhQQ1NjcmlwdGFibGU6OlVT
RV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9G
T1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9Q
RVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8
IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpX
QU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRf
RU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJG
QUNFU19PTkxZKSwgMSwgfSwKCiAgeyAiRWxlbWVudCIsIHsgbnNFbGVtZW50U0g6OmRvQ3JlYXRl
IH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJP
UEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNL
X0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNU
X0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5U
X1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFD
RSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBD
U2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBS
T1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2Ny
aXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6
OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7ICJBdHRyIiwgeyBuc0RPTUdl
bmVyaWNTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNT
VFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RF
TFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lY
UENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxl
OjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9O
RVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1Nj
cmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1f
UVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNf
T05MWSksIDEsIH0sCgogIHsgIlRleHQiLCB7IG5zTm9kZVNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAw
LCAoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lY
UENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1df
UFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9N
T0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZP
Ul9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9O
QU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUp
IHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6
V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNF
X0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpLCAxLCB9LAoKICB7ICJDb21tZW50IiwgeyBuc05vZGVT
SDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJf
Rk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJP
UEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxl
OjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRP
TlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JF
U09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVS
WV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZ
KSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JFQVRFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfU0VUUFJPUEVSVFkpICYg
fm5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZKSwgMSwgfSwKCiAg
eyAiQ0RBVEFTZWN0aW9uIiwgeyBuc05vZGVTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKG5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0Vf
SlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9E
U19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19Q
Uk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBU
QUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5U
X0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxl
OjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUFJF
Q1JFQVRFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1Njcmlw
dGFibGU6OldBTlRfU0VUUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJf
Rk9SX0FERFBST1BFUlRZKSwgMSwgfSwKICB7ICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24iLCB7IG5z
Tm9kZVNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pT
U1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9E
RUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZ
IHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRf
TkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVN
X1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VT
X09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRh
YmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJU
WSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpLCAxLCB9
LAoKICB7ICJFbnRpdHkiLCB7IG5zTm9kZVNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKCgobnNJ
WFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRh
YmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9K
U1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RT
X0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BS
T1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRB
QkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRf
Q0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBD
U2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVD
UkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9G
T1JfQUREUFJPUEVSVFkpLCAxLCB9LAogIHsgIkVudGl0eVJlZmVyZW5jZSIsIHsgbnNOb2RlU0g6
OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZP
Ul9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BF
UlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lY
UENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3Jp
cHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05U
X1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNP
TFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFi
bGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllf
SU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkg
fCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldB
TlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5u
c0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSksIDEsIH0sCiAgeyAi
Tm90YXRpb24iLCB7IG5zTm9kZVNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKCgobnNJWFBDU2Ny
aXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpV
U0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJf
Rk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklO
R19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQ
RSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwg
bnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1Nj
cmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tB
Q0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0
YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNT
SU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUg
fCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6
V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQURE
UFJPUEVSVFkpLCAxLCB9LAogIHsgIk5vZGVMaXN0IiwgeyBuc0FycmF5U0g6OmRvQ3JlYXRlIH0s
IDAsIDAsIDAsICgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZ
IHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENT
Y3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9X
X1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNU
QU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRF
UkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NU
Q1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBu
c0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSB8IG5zSVhQQ1Njcmlw
dGFibGU6OldBTlRfR0VUUFJPUEVSVFkpLCAxLCB9LAogIHsgIk5hbWVkTm9kZU1hcCIsIHsgbnNO
YW1lZE5vZGVNYXBTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgobnNJWFBDU2NyaXB0YWJsZTo6
VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVC
X0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBS
T1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZF
IHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9O
VF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRF
UkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9HRVRQUk9QRVJUWSksIDEsIH0s
CgoKCgoKICB7ICJTdHlsZVNoZWV0TGlzdCIsIHsgbnNTdHlsZVNoZWV0TGlzdFNIOjpkb0NyZWF0
ZSB9LCAwLCAwLCAwLCAoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9Q
RVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRh
YmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpB
TExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tf
SU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1Rf
SU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRf
UE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNF
IHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX0dFVFBST1BFUlRZKSwgMSwgfSwKCgoKCiAgeyAiRXZlbnQiLCB7IG5z
RE9NR2VuZXJpY1NIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKG5zSVhQQ1NjcmlwdGFibGU6OlVT
RV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9G
T1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9Q
RVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8
IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpX
QU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRf
RU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJG
QUNFU19PTkxZKSwgMSwgfSwKCiAgeyAiTXV0YXRpb25FdmVudCIsIHsgbnNET01HZW5lcmljU0g6
OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1Jf
QUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJU
WSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBD
U2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRP
TlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9S
RUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xW
RSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lO
VEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAx
LCB9LAoKCgogIHsgIkhUTUxEb2N1bWVudCIsIHsgbnNIVE1MRG9jdW1lbnRTSDo6ZG9DcmVhdGUg
fSwgMCwgMCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9Q
RVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRh
YmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpB
TExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tf
SU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1Rf
SU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRf
UE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNF
IHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJP
UEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3Jp
cHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpX
QU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ERUxQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfR0VUUFJPUEVSVFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9FTlVNRVJBVEUsIDEsIH0sCgoKICB7ICJIVE1MQ29sbGVjdGlvbiIsIHsgbnNIVE1MQ29sbGVj
dGlvblNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNT
VFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RF
TFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lY
UENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxl
OjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9O
RVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1Nj
cmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1f
UVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNf
T05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0dFVFBST1BFUlRZKSwgMSwgfSwKCiAgeyAi
SFRNTE9wdGlvbkNvbGxlY3Rpb24iLCB7IG5zSFRNTE9wdGlvbkNvbGxlY3Rpb25TSDo6ZG9DcmVh
dGUgfSwgMCwgMCwgMCwgKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJP
UEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNL
X0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNU
X0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5U
X1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFD
RSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBD
U2NyaXB0YWJsZTo6V0FOVF9HRVRQUk9QRVJUWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NF
VFBST1BFUlRZLCAxLCB9LAoKCgogIHsgIkhUTUxDb2xsZWN0aW9uIiwgeyBuc0Zvcm1Db250cm9s
TGlzdFNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNT
VFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RF
TFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lY
UENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxl
OjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9O
RVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1Nj
cmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1f
UVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNf
T05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0dFVFBST1BFUlRZKSwgMSwgfSwKCgogIHsg
IkhUTUxDb2xsZWN0aW9uIiwgeyBuc0hUTUxDb2xsZWN0aW9uU0g6OmRvQ3JlYXRlIH0sIDAsIDAs
IDAsICgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRh
YmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9X
X1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1Bf
TU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9G
T1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0Vf
TkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRh
YmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRF
KSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENT
Y3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfR0VUUFJPUEVSVFkpLCAxLCB9LAoKCgoKICB7ICJIVE1MQW5jaG9yRWxlbWVudCIsIHsg
bnNIVE1MRWxlbWVudFNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKCgoKG5zSVhQQ1NjcmlwdGFi
bGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pT
U1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9T
RVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVT
T0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBu
c0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRh
YmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNT
IHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9f
SU5URVJGQUNFU19PTkxZKSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JFQVRFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRf
U0VUUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BF
UlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwg
fSwKCiAgeyAiSFRNTEFwcGxldEVsZW1lbnQiLCB7IG5zSFRNTEFwcGxldEVsZW1lbnRTSDo6ZG9D
cmVhdGUgfSwgMCwgMCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9B
RERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZ
IHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENT
Y3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRh
YmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9O
VF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JF
RkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZF
IHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5U
RVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRf
QUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lY
UENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0
YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxBcmVhRWxl
bWVudCIsIHsgbnNIVE1MRWxlbWVudFNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKCgoKG5zSVhQ
Q1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNT
VFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19E
VVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9U
T1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJM
RSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lY
UENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NI
RUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpD
TEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JF
QVRFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OldBTlRfU0VUUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9S
X0FERFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19P
TkxZKSwgMSwgfSwKCiAgeyAiSFRNTEJSRWxlbWVudCIsIHsgbnNIVE1MRWxlbWVudFNIOjpkb0Ny
ZWF0ZSB9LCAwLCAwLCAwLCAoKCgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FE
RFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05U
X0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVG
TEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUg
fCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6
V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRF
UkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JFQVRFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9B
RERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfU0VUUFJPUEVSVFkpICYgfm5zSVhQ
Q1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRh
YmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwgfSwKCiAgeyAiSFRNTEJhc2VFbGVt
ZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBD
U2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxl
OjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NU
VUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RV
UklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RP
VFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxF
IHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hF
Q0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNM
QVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVB
VEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1Jf
QUREUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09O
TFkpLCAxLCB9LAoKICB7ICJIVE1MQmFzZUZvbnRFbGVtZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6
OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9G
T1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9Q
RVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9O
VF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVT
T0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRh
YmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZ
X0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkp
IHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpX
QU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+
bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1Nj
cmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7ICJIVE1MQm9k
eUVsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChu
c0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1Njcmlw
dGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNF
X0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01P
RFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9f
UFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQ
VEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwg
bnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lY
UENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BS
RUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3Jp
cHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVC
X0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFD
RVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxCdXR0b25FbGVtZW50IiwgeyBuc0hUTUxFbGVtZW50
U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RV
Ql9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQ
Uk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwg
bnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBD
U2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVX
UkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3Jp
cHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FV
RVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09O
TFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkg
JiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQ
Q1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7ICJIVE1M
RExpc3RFbGVtZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgo
KCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENT
Y3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6
OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJP
UF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RT
X1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9T
Q1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1F
UyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwg
bnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBD
U2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pT
U1RVQl9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRF
UkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7ICJIVE1MRGVsRWxlbWVudCIsIHsgbnNIVE1MRWxlbWVu
dFNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKCgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NU
VUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVM
UFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8
IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRh
YmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05F
V1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9R
VUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19P
TkxZKSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JFQVRFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfU0VUUFJPUEVSVFkp
ICYgfm5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZKSAmIH5uc0lY
UENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwgfSwKCiAgeyAiSFRN
TERpcmVjdG9yeUVsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwg
MCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExP
V19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9Q
X01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0Vf
Rk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNF
X05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFU
RSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBD
U2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpV
U0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZP
X0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxEaXZFbGVtZW50IiwgeyBuc0hUTUxF
bGVtZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNF
X0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZP
Ul9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BF
UlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwg
bnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldB
TlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lY
UENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9F
TlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZB
Q0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3Jp
cHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9Q
RVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpICYg
fm5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7
ICJIVE1MRW1iZWRFbGVtZW50IiwgeyBuc0hUTUxQbHVnaW5PYmpFbGVtZW50U0g6OmRvQ3JlYXRl
IH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJP
UEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNL
X0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNU
X0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5U
X1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFD
RSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBD
U2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBS
T1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2Ny
aXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6
OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7ICJIVE1MRmllbGRTZXRFbGVt
ZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBD
U2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxl
OjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NU
VUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RV
UklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RP
VFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxF
IHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hF
Q0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNM
QVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVB
VEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1Jf
QUREUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09O
TFkpLCAxLCB9LAoKICB7ICJIVE1MRm9udEVsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9D
cmVhdGUgfSwgMCwgMCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9B
RERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZ
IHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENT
Y3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRh
YmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9O
VF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JF
RkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZF
IHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5U
RVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRf
QUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lY
UENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0
YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxGb3JtRWxl
bWVudCIsIHsgbnNIVE1MRm9ybUVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChu
c0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1Njcmlw
dGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNF
X0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01P
RFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9f
UFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQ
VEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwg
bnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lY
UENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BS
RUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3Jp
cHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVC
X0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFD
RVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0dFVFBST1BFUlRZIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6V0FOVF9ORVdFTlVNRVJBVEUsIDEsIH0sCgoKCiAgeyAiSFRNTEZyYW1lRWxlbWVu
dCIsIHsgbnNIVE1MRWxlbWVudFNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKCgoKG5zSVhQQ1Nj
cmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6
VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVC
X0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJ
TkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZ
UEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8
IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNL
QUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFT
U0lORk9fSU5URVJGQUNFU19PTkxZKSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JFQVRF
IHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfU0VUUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FE
RFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZ
KSwgMSwgfSwKCiAgeyAiSFRNTEZyYW1lU2V0RWxlbWVudCIsIHsgbnNIVE1MRWxlbWVudFNIOjpk
b0NyZWF0ZSB9LCAwLCAwLCAwLCAoKCgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9S
X0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVS
VFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpE
T05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRf
UkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09M
VkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9J
TlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSB8
IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JFQVRFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfU0VUUFJPUEVSVFkpICYgfm5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZKSAmIH5uc0lYUENTY3Jp
cHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwgfSwKCiAgeyAiSFRNTEhSRWxl
bWVudCIsIHsgbnNIVE1MRWxlbWVudFNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKCgoKG5zSVhQ
Q1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNT
VFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19E
VVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9U
T1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJM
RSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lY
UENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NI
RUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpD
TEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JF
QVRFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OldBTlRfU0VUUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9S
X0FERFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19P
TkxZKSwgMSwgfSwKCiAgeyAiSFRNTEhlYWRFbGVtZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6OmRv
Q3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1Jf
QUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJU
WSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBD
U2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRP
TlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9S
RUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xW
RSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lO
VEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwg
bnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5U
X0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJ
WFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1Njcmlw
dGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7ICJIVE1MSGVhZGlu
Z0VsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChu
c0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1Njcmlw
dGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNF
X0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01P
RFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9f
UFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQ
VEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwg
bnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lY
UENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BS
RUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3Jp
cHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVC
X0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFD
RVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxIdG1sRWxlbWVudCIsIHsgbnNIVE1MRWxlbWVudFNI
Ojpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKCgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJf
Rk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJP
UEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxl
OjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRP
TlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JF
U09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVS
WV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZ
KSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JFQVRFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfU0VUUFJPUEVSVFkpICYg
fm5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZKSAmIH5uc0lYUENT
Y3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwgfSwKCiAgeyAiSFRNTElG
cmFtZUVsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgo
KChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6
VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9Q
X01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNf
VE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1ND
UklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVT
IHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBu
c0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5U
X1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNT
VFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVS
RkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxJbWFnZUVsZW1lbnQiLCB7IG5zSFRNTEVsZW1l
bnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNT
VFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RF
TFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lY
UENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxl
OjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9O
RVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1Nj
cmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1f
UVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNf
T05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZ
KSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJ
WFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhU
TUxJbnB1dEVsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwg
KCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19Q
Uk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01P
RFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9S
X1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05B
TUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkg
fCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpX
QU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lY
UENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0Vf
SlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lO
VEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxJbnNFbGVtZW50IiwgeyBuc0hUTUxFbGVt
ZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pT
U1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9E
RUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZ
IHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRf
TkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVN
X1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VT
X09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRh
YmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJU
WSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpICYgfm5z
SVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7ICJI
VE1MSXNJbmRleEVsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwg
MCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExP
V19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9Q
X01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0Vf
Rk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNF
X05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFU
RSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBD
U2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpV
U0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZP
X0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxMSUVsZW1lbnQiLCB7IG5zSFRNTEVs
ZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0Vf
SlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9S
X0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVS
VFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBu
c0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRh
YmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VO
VU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFD
RVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1Njcmlw
dGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BF
UlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+
bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsg
IkhUTUxMYWJlbEVsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwg
MCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExP
V19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9Q
X01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0Vf
Rk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNF
X05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFU
RSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBD
U2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpV
U0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZP
X0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxMZWdlbmRFbGVtZW50IiwgeyBuc0hU
TUxFbGVtZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6
VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVC
X0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBS
T1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZF
IHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9O
VF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRF
UkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQ
Uk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkp
ICYgfm5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoK
ICB7ICJIVE1MTGlua0VsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwg
MCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8
IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpB
TExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19Q
Uk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFO
Q0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJG
QUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENS
RUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRh
YmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxl
OjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJ
TkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxNYXBFbGVtZW50IiwgeyBuc0hU
TUxFbGVtZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6
VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVC
X0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBS
T1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZF
IHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9O
VF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRF
UkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQ
Uk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkp
ICYgfm5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoK
ICB7ICJIVE1MTWVudUVsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwg
MCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8
IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpB
TExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19Q
Uk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFO
Q0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJG
QUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENS
RUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRh
YmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxl
OjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJ
TkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxNZXRhRWxlbWVudCIsIHsgbnNI
VE1MRWxlbWVudFNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKCgoKG5zSVhQQ1NjcmlwdGFibGU6
OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RV
Ql9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQ
Uk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xW
RSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lY
UENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwg
bnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRP
TlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5U
RVJGQUNFU19PTkxZKSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JFQVRFIHwgbnNJWFBD
U2NyaXB0YWJsZTo6V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfU0VU
UFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZ
KSAmIH5uc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwgfSwK
CiAgeyAiSFRNTE1vZEVsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwg
MCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8
IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpB
TExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19Q
Uk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFO
Q0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJG
QUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENS
RUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRh
YmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxl
OjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJ
TkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxPTGlzdEVsZW1lbnQiLCB7IG5z
SFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxl
OjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NU
VUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VU
UFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09M
VkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8
IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpE
T05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lO
VEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NF
VFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJU
WSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0s
CgogIHsgIkhUTUxPYmplY3RFbGVtZW50IiwgeyBuc0hUTUxQbHVnaW5PYmpFbGVtZW50U0g6OmRv
Q3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1Jf
QUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJU
WSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBD
U2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRP
TlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9S
RUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xW
RSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lO
VEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwg
bnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5U
X0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJ
WFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1Njcmlw
dGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7ICJIVE1MT3B0R3Jv
dXBFbGVtZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgo
bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3Jp
cHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVT
RV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9N
T0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RP
X1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJ
UFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8
IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldB
TlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9Q
UkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RV
Ql9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZB
Q0VTX09OTFkpLCAxLCB9LAoKICB7ICJIVE1MT3B0aW9uRWxlbWVudCIsIHsgbnNIVE1MRWxlbWVu
dFNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKCgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NU
VUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVM
UFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8
IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRh
YmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05F
V1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9R
VUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19P
TkxZKSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JFQVRFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfU0VUUFJPUEVSVFkp
ICYgfm5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZKSAmIH5uc0lY
UENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwgfSwKCiAgeyAiSFRN
TFBhcmFncmFwaEVsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwg
MCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExP
V19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9Q
X01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0Vf
Rk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNF
X05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFU
RSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBD
U2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpV
U0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZP
X0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxQYXJhbUVsZW1lbnQiLCB7IG5zSFRN
TEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpV
U0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJf
Rk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJP
UEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUg
fCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBD
U2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3Jp
cHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6
V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05U
X0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVS
RkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBS
T1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkg
JiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgog
IHsgIkhUTUxQcmVFbGVtZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAs
IDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBu
c0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1Njcmlw
dGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxM
T1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJP
UF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNF
X0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFD
RV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1Njcmlw
dGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVB
VEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwg
bnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6
VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5G
T19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7ICJIVE1MUXVvdGVFbGVtZW50IiwgeyBuc0hU
TUxFbGVtZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6
VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVC
X0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBS
T1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZF
IHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9O
VF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRF
UkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQ
Uk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkp
ICYgfm5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoK
ICB7ICJIVE1MU2NyaXB0RWxlbWVudCIsIHsgbnNIVE1MRWxlbWVudFNIOjpkb0NyZWF0ZSB9LCAw
LCAwLCAwLCAoKCgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZ
IHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENT
Y3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9X
X1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNU
QU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRF
UkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NU
Q1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBu
c0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSB8IG5zSVhQQ1Njcmlw
dGFibGU6OldBTlRfUFJFQ1JFQVRFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9BRERQUk9QRVJU
WSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfU0VUUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFi
bGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpDTEFT
U0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwgfSwKCiAgeyAiSFRNTFNlbGVjdEVsZW1lbnQiLCB7
IG5zSFRNTFNlbGVjdEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChuc0lYUENT
Y3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6
OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RV
Ql9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVS
SU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9U
WVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUg
fCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBD
U2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVD
S0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3Jp
cHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xB
U1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFU
RSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9B
RERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05M
WSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0dFVFBST1BFUlRZLCAxLCB9LAoKCiAgeyAiSFRN
TFNwYWNlckVsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwg
KCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19Q
Uk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01P
RFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9S
X1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05B
TUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkg
fCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpX
QU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lY
UENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0Vf
SlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lO
VEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxTcGFuRWxlbWVudCIsIHsgbnNIVE1MRWxl
bWVudFNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKCgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9K
U1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1Jf
REVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJU
WSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5z
SVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3Jp
cHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5U
X05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBD
U2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5V
TV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNF
U19PTkxZKSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JFQVRFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfU0VUUFJPUEVS
VFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZKSAmIH5u
c0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwgfSwKCiAgeyAi
SFRNTFN0eWxlRWxlbWVudCIsIHsgbnNIVE1MRWxlbWVudFNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAw
LCAoKCgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRh
YmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9X
X1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1Bf
TU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9G
T1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0Vf
TkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRh
YmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRF
KSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENT
Y3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfUFJFQ1JFQVRFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9BRERQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfU0VUUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OlVT
RV9KU1NUVUJfRk9SX0FERFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9f
SU5URVJGQUNFU19PTkxZKSwgMSwgfSwKCiAgeyAiSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQiLCB7
IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChuc0lYUENTY3JpcHRh
YmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9K
U1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1Jf
U0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JF
U09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwg
bnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lY
UENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VT
UyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxl
OjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZP
X0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5U
X1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9Q
RVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEs
IH0sCgogIHsgIkhUTUxUYWJsZUNlbGxFbGVtZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6OmRvQ3Jl
YXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQURE
UFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8
IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRf
QVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZM
RUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8
IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpX
QU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVS
RkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FE
RFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBD
U2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFi
bGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7ICJIVE1MVGFibGVDb2xF
bGVtZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJ
WFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRh
YmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9K
U1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RT
X0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BS
T1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRB
QkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRf
Q0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBD
U2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVD
UkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9G
T1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VT
X09OTFkpLCAxLCB9LAoKICB7ICJIVE1MVGFibGVDb2xHcm91cEVsZW1lbnQiLCB7IG5zSFRNTEVs
ZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0Vf
SlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9S
X0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVS
VFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBu
c0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRh
YmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VO
VU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFD
RVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1Njcmlw
dGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BF
UlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+
bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsg
IkhUTUxUYWJsZUVsZW1lbnQiLCB7IG5zSFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwg
MCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExP
V19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9Q
X01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0Vf
Rk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNF
X05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFU
RSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBD
U2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpV
U0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZP
X0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhUTUxUYWJsZVJvd0VsZW1lbnQiLCB7IG5z
SFRNTEVsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxl
OjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NU
VUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VU
UFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09M
VkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8
IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpE
T05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lO
VEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NF
VFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJU
WSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0s
CgogIHsgIkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6OmRvQ3Jl
YXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQURE
UFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8
IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRf
QVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZM
RUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8
IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpX
QU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVS
RkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FE
RFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBD
U2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFi
bGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7ICJIVE1MVGV4dEFyZWFF
bGVtZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJ
WFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRh
YmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9K
U1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RT
X0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BS
T1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRB
QkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRf
Q0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBD
U2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVD
UkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9G
T1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VT
X09OTFkpLCAxLCB9LAoKICB7ICJIVE1MVGl0bGVFbGVtZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6
OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9G
T1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9Q
RVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9O
VF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVT
T0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRh
YmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZ
X0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkp
IHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpX
QU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+
bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1Nj
cmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7ICJIVE1MVUxp
c3RFbGVtZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKCgo
bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3Jp
cHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVT
RV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9N
T0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RP
X1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJ
UFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8
IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldB
TlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9Q
UkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RV
Ql9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZB
Q0VTX09OTFkpLCAxLCB9LAoKICB7ICJIVE1MVW5rbm93bkVsZW1lbnQiLCB7IG5zSFRNTEVsZW1l
bnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNT
VFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RF
TFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lY
UENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxl
OjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9O
RVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1Nj
cmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1f
UVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNf
T05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZ
KSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgJiB+bnNJ
WFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkhU
TUxXQlJFbGVtZW50IiwgeyBuc0hUTUxFbGVtZW50U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgo
KCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENT
Y3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6
OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJP
UF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RT
X1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9T
Q1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1F
UyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwg
bnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBD
U2NyaXB0YWJsZTo6V0FOVF9TRVRQUk9QRVJUWSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pT
U1RVQl9GT1JfQUREUFJPUEVSVFkpICYgfm5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRF
UkZBQ0VTX09OTFkpLCAxLCB9LAoKCgogIHsgIkNTU1N0eWxlUnVsZSIsIHsgbnNET01HZW5lcmlj
U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9G
T1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9Q
RVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9O
VF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVT
T0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRh
YmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZ
X0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkp
LCAxLCB9LAoKICB7ICJDU1NDaGFyc2V0UnVsZSIsIHsgbnNET01HZW5lcmljU0g6OmRvQ3JlYXRl
IH0sIDAsIDAsIDAsICgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVS
VFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxM
T1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lO
U1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lO
VEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BP
U1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8
IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7
ICJDU1NJbXBvcnRSdWxlIiwgeyBuc0RPTUdlbmVyaWNTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwg
KChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6
VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9Q
X01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNf
VE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1ND
UklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVT
IHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBu
c0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkNTU01lZGlhUnVs
ZSIsIHsgbnNET01HZW5lcmljU0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgobnNJWFBDU2NyaXB0
YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0Vf
SlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9S
X1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19S
RVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8
IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1Njcmlw
dGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NF
U1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5G
T19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKICB7ICJDU1NOYW1lU3BhY2VSdWxlIiwgeyBuc0RP
TUdlbmVyaWNTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKChuc0lYUENTY3JpcHRhYmxlOjpVU0Vf
SlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9S
X0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVS
VFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBu
c0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRh
YmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VO
VU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFD
RVNfT05MWSksIDEsIH0sCgogIHsgIkNTU1J1bGVMaXN0IiwgeyBuc0NTU1J1bGVMaXN0U0g6OmRv
Q3JlYXRlIH0sIDAsIDAsIDAsICgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FE
RFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05U
X0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVG
TEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUg
fCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6
V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRF
UkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfR0VUUFJPUEVSVFkpLCAxLCB9LAoKICB7ICJDU1NHcm91cFJ1
bGVSdWxlTGlzdCIsIHsgbnNDU1NSdWxlTGlzdFNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKChu
c0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1Njcmlw
dGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNF
X0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01P
RFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9f
UFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQ
VEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwg
bnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lY
UENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0dF
VFBST1BFUlRZKSwgMSwgfSwKCiAgeyAiTWVkaWFMaXN0IiwgeyBuc01lZGlhTGlzdFNIOjpkb0Ny
ZWF0ZSB9LCAwLCAwLCAwLCAoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBS
T1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBu
c0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FT
S19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVD
VF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZB
Q0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwgfSwK
CiAgeyAiU3R5bGVTaGVldExpc3QiLCB7IG5zRE9NR2VuZXJpY1NIOjpkb0NyZWF0ZSB9LCAwLCAw
LCAwLCAoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExP
V19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9Q
X01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0Vf
Rk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNF
X05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFU
RSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBD
U2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX0dFVFBST1BFUlRZKSwgMSwgfSwKCiAgeyAiQ1NTU3R5bGVTaGVldCIsIHsgbnNET01H
ZW5lcmljU0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pT
U1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9E
RUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZ
IHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRf
TkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVN
X1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VT
X09OTFkpLCAxLCB9LAoKICB7ICJDU1NTdHlsZURlY2xhcmF0aW9uIiwgeyBuc0NTU1N0eWxlRGVj
bFNIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVC
X0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBS
T1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBu
c0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpE
T05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdS
RVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1Njcmlw
dGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVF
UllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05M
WSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0dFVFBST1BFUlRZKSwgMSwgfSwKCiAgeyAiQ29t
cHV0ZWRDU1NTdHlsZURlY2xhcmF0aW9uIiwgeyBuc0NTU1N0eWxlRGVjbFNIOjpkb0NyZWF0ZSB9
LCAwLCAwLCAwLCAoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZ
IHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENT
Y3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9X
X1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNU
QU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRF
UkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NU
Q1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBu
c0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwgfSwKCiAgeyAi
Uk9DU1NQcmltaXRpdmVWYWx1ZSIsIHsgbnNET01HZW5lcmljU0g6OmRvQ3JlYXRlIH0sIDAsIDAs
IDAsICgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lY
UENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1df
UFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9N
T0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZP
Ul9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9O
QU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUp
IHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKCgogIHsgIlJhbmdl
IiwgeyBuc0RPTUdlbmVyaWNTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKChuc0lYUENTY3JpcHRh
YmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9K
U1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1Jf
U0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JF
U09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwg
bnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lY
UENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VT
UyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxl
OjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZP
X0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIlNlbGVjdGlvbiIsIHsgbnNET01HZW5lcmlj
U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsIChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZP
Ul9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BF
UlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lY
UENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3Jp
cHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05U
X1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNP
TFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFi
bGU6OldBTlRfUE9TVENSRUFURSksIDEsIH0sCgoKCiAgeyAiWFVMRG9jdW1lbnQiLCB7IG5zRG9j
dW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxlOjpVU0Vf
SlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9S
X0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVS
VFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBu
c0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRh
YmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VO
VU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFD
RVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQQ1Njcmlw
dGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BF
UlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSkgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfR0VUUFJPUEVSVFkpIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6V0FOVF9FTlVNRVJBVEUsIDEsIH0sCgoKICB7ICJYVUxFbGVtZW50Iiwg
eyBuc0VsZW1lbnRTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKCgoKChuc0lYUENTY3JpcHRhYmxl
OjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NU
VUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VU
UFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09M
VkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8
IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpE
T05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lO
VEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NF
VFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJU
WSkgJiB+bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0s
CgogIHsgIlhVTENvbW1hbmREaXNwYXRjaGVyIiwgeyBuc0RPTUdlbmVyaWNTSDo6ZG9DcmVhdGUg
fSwgMCwgMCwgMCwgKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJU
WSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBD
U2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxl
OjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExP
V19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5T
VEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5U
RVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBD
U2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9T
VENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwg
bnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsg
Ik5vZGVMaXN0IiwgeyBuc0FycmF5U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKG5zSVhQQ1Nj
cmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6
VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVC
X0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJ
TkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZ
UEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8
IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENT
Y3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNL
QUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFT
U0lORk9fSU5URVJGQUNFU19PTkxZKSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfR0VUUFJPUEVS
VFkpLCAxLCB9LAoKICB7ICJOYW1lZE5vZGVNYXAiLCB7IG5zTmFtZWROb2RlTWFwU0g6OmRvQ3Jl
YXRlIH0sIDAsIDAsIDAsICgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBS
T1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBu
c0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6
OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FT
S19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVD
VF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBu
c0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZB
Q0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfR0VUUFJPUEVSVFkpLCAxLCB9LAoKICB7ICJBdHRyIiwgeyBuc0RP
TUdlbmVyaWNTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKChuc0lYUENTY3JpcHRhYmxlOjpVU0Vf
SlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9S
X0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVS
VFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBu
c0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRh
YmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VO
VU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFD
RVNfT05MWSksIDEsIH0sCgogIHsgIlhVTENvbnRyb2xsZXJzIiwgeyBuc0RPTUdlbmVyaWNTSDo6
ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FE
RFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05U
X0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVG
TEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUg
fCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6
V0FOVF9QT1NUQ1JFQVRFKSwgMSwgfSwKCiAgeyAiQm94T2JqZWN0IiwgeyBuc0RPTUdlbmVyaWNT
SDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9S
X0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVS
VFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpE
T05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRf
UkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09M
VkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9QT1NUQ1JFQVRFKSwgMSwgfSwKCiAgeyAiVHJlZVNlbGVjdGlvbiIsIHsgbnNET01H
ZW5lcmljU0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsIChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNT
VFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RF
TFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lY
UENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxl
OjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9O
RVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1Nj
cmlwdGFibGU6OldBTlRfUE9TVENSRUFURSksIDEsIH0sCgogIHsgIlRyZWVDb250ZW50VmlldyIs
IHsgbnNET01HZW5lcmljU0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsIChuc0lYUENTY3JpcHRhYmxl
OjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NU
VUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VU
UFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09M
VkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8
IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSksIDEsIH0sCgoKCiAgeyAiQ3J5cHRv
IiwgeyBuc0RPTUdlbmVyaWNTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKChuc0lYUENTY3JpcHRh
YmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9K
U1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1Jf
U0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JF
U09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwg
bnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lY
UENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VT
UyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxl
OjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZP
X0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgogIHsgIkNSTUZPYmplY3QiLCB7IG5zRE9NR2VuZXJp
Y1NIOjpkb0NyZWF0ZSB9LCAwLCAwLCAwLCAoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJf
Rk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJP
UEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxl
OjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRP
TlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JF
U09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVS
WV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZ
KSwgMSwgfSwKCiAgeyAiUGtjczExIiwgeyBuc0RPTUdlbmVyaWNTSDo6ZG9DcmVhdGUgfSwgMCwg
MCwgMCwgKChuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExP
V19QUk9QX01PRFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9Q
X01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0Vf
Rk9SX1NDUklQVEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNF
X05BTUVTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0
YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFU
RSkgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBD
U2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCiMgNzcwICJuc0RP
TUNsYXNzSW5mby5jcHAiCiAgeyAiVHJlZVdhbGtlciIsIHsgbnNET01HZW5lcmljU0g6OmRvQ3Jl
YXRlIH0sIDAsIDAsIDAsICgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJP
UEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNL
X0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNU
X0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5U
X1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFD
RSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoK
CgoKCiAgeyAiQ1NTUmVjdCIsIHsgbnNET01HZW5lcmljU0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAs
ICgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJPUEVSVFkgfCBuc0lYUENT
Y3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6
OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJP
UF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6QUxMT1dfUFJPUF9NT0RT
X1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNLX0lOU1RBTkNFX0ZPUl9T
Q1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNUX0lOVEVSRkFDRV9OQU1F
UyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BPU1RDUkVBVEUpIHwg
bnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFDRSB8IG5zSVhQQ1Njcmlw
dGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpLCAxLCB9LAoKCgogIHsgIkNocm9tZVdp
bmRvdyIsIHsgbnNXaW5kb3dTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKG5zSVhQQ1NjcmlwdGFi
bGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pT
U1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9T
RVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVT
T0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBu
c0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRh
YmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNT
IHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6
OldBTlRfR0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NFVFBST1BFUlRZIHwg
bnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9QUkVDUkVBVEUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0ZJTkFMSVpFIHwgbnNJWFBDU2Ny
aXB0YWJsZTo6V0FOVF9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfREVMUFJP
UEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0VOVU1FUkFURSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UsIDEsIH0sCiMgNzkyICJuc0RPTUNsYXNzSW5m
by5jcHAiCiAgeyAiQ1NTUkdCQ29sb3IiLCB7IG5zRE9NR2VuZXJpY1NIOjpkb0NyZWF0ZSB9LCAw
LCAwLCAwLCAoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwg
bnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3Jp
cHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFM
TE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BS
T1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5D
RV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZB
Q0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3Jp
cHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JF
QVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lY
UENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSwgMSwgfSwKCgogIHsgIlJh
bmdlRXhjZXB0aW9uIiwgeyBuc0RPTUdlbmVyaWNTSDo6ZG9DcmVhdGUgfSwgMCwgMCwgMCwgKChu
c0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1Njcmlw
dGFibGU6OlVTRV9KU1NUVUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNF
X0pTU1RVQl9GT1JfU0VUUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01P
RFNfRFVSSU5HX1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9f
UFJPVE9UWVBFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQ
VEFCTEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwg
bnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FO
VF9DSEVDS0FDQ0VTUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lY
UENTY3JpcHRhYmxlOjpET05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6Q0xBU1NJTkZPX0lOVEVSRkFDRVNfT05MWSksIDEsIH0sCgoKICB7ICJDU1NWYWx1ZUxpc3Qi
LCB7IG5zQ1NTVmFsdWVMaXN0U0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKG5zSVhQQ1Njcmlw
dGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNF
X0pTU1RVQl9GT1JfREVMUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZP
Ul9TRVRQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdf
UkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUg
fCBuc0lYUENTY3JpcHRhYmxlOjpET05UX0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5z
SVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVGTEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3Jp
cHRhYmxlOjpXQU5UX05FV1JFU09MVkUgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUND
RVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRFUkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lO
Rk9fSU5URVJGQUNFU19PTkxZKSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfR0VUUFJPUEVSVFkp
LCAxLCB9LAoKCiAgeyAiSFRNTENvbGxlY3Rpb24iLCB7IG5zQ29udGVudExpc3RTSDo6ZG9DcmVh
dGUgfSwgMCwgMCwgMCwgKCgobnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfQUREUFJP
UEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9ERUxQUk9QRVJUWSB8IG5z
SVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX1NFVFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0
YWJsZTo6QUxMT1dfUFJPUF9NT0RTX0RVUklOR19SRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6
QUxMT1dfUFJPUF9NT0RTX1RPX1BST1RPVFlQRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfQVNL
X0lOU1RBTkNFX0ZPUl9TQ1JJUFRBQkxFIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9SRUZMRUNU
X0lOVEVSRkFDRV9OQU1FUyB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfTkVXUkVTT0xWRSB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfQ0hFQ0tBQ0NFU1MgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5U
X1BPU1RDUkVBVEUpIHwgbnNJWFBDU2NyaXB0YWJsZTo6RE9OVF9FTlVNX1FVRVJZX0lOVEVSRkFD
RSB8IG5zSVhQQ1NjcmlwdGFibGU6OkNMQVNTSU5GT19JTlRFUkZBQ0VTX09OTFkpIHwgbnNJWFBD
U2NyaXB0YWJsZTo6V0FOVF9HRVRQUk9QRVJUWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BS
RUNSRUFURSwgMSwgfSwKCgoKCiAgeyAiWE1MU3R5bGVzaGVldFByb2Nlc3NpbmdJbnN0cnVjdGlv
biIsIHsgbnNOb2RlU0g6OmRvQ3JlYXRlIH0sIDAsIDAsIDAsICgoKChuc0lYUENTY3JpcHRhYmxl
OjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NU
VUJfRk9SX0RFTFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfU0VU
UFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfRFVSSU5HX1JFU09M
VkUgfCBuc0lYUENTY3JpcHRhYmxlOjpBTExPV19QUk9QX01PRFNfVE9fUFJPVE9UWVBFIHwgbnNJ
WFBDU2NyaXB0YWJsZTo6RE9OVF9BU0tfSU5TVEFOQ0VfRk9SX1NDUklQVEFCTEUgfCBuc0lYUENT
Y3JpcHRhYmxlOjpET05UX1JFRkxFQ1RfSU5URVJGQUNFX05BTUVTIHwgbnNJWFBDU2NyaXB0YWJs
ZTo6V0FOVF9ORVdSRVNPTFZFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9DSEVDS0FDQ0VTUyB8
IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfUE9TVENSRUFURSkgfCBuc0lYUENTY3JpcHRhYmxlOjpE
T05UX0VOVU1fUVVFUllfSU5URVJGQUNFIHwgbnNJWFBDU2NyaXB0YWJsZTo6Q0xBU1NJTkZPX0lO
VEVSRkFDRVNfT05MWSkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1BSRUNSRUFURSB8IG5zSVhQ
Q1NjcmlwdGFibGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX1NF
VFBST1BFUlRZKSAmIH5uc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9BRERQUk9QRVJU
WSksIDEsIH0sCgoKICB7ICJJbWFnZURvY3VtZW50IiwgeyBuc0hUTUxEb2N1bWVudFNIOjpkb0Ny
ZWF0ZSB9LCAwLCAwLCAwLCAoKCgoKG5zSVhQQ1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FE
RFBST1BFUlRZIHwgbnNJWFBDU2NyaXB0YWJsZTo6VVNFX0pTU1RVQl9GT1JfREVMUFJPUEVSVFkg
fCBuc0lYUENTY3JpcHRhYmxlOjpVU0VfSlNTVFVCX0ZPUl9TRVRQUk9QRVJUWSB8IG5zSVhQQ1Nj
cmlwdGFibGU6OkFMTE9XX1BST1BfTU9EU19EVVJJTkdfUkVTT0xWRSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OkFMTE9XX1BST1BfTU9EU19UT19QUk9UT1RZUEUgfCBuc0lYUENTY3JpcHRhYmxlOjpET05U
X0FTS19JTlNUQU5DRV9GT1JfU0NSSVBUQUJMRSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfUkVG
TEVDVF9JTlRFUkZBQ0VfTkFNRVMgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX05FV1JFU09MVkUg
fCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0NIRUNLQUNDRVNTIHwgbnNJWFBDU2NyaXB0YWJsZTo6
V0FOVF9QT1NUQ1JFQVRFKSB8IG5zSVhQQ1NjcmlwdGFibGU6OkRPTlRfRU5VTV9RVUVSWV9JTlRF
UkZBQ0UgfCBuc0lYUENTY3JpcHRhYmxlOjpDTEFTU0lORk9fSU5URVJGQUNFU19PTkxZKSB8IG5z
SVhQQ1NjcmlwdGFibGU6OldBTlRfUFJFQ1JFQVRFIHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9B
RERQUk9QRVJUWSB8IG5zSVhQQ1NjcmlwdGFibGU6OldBTlRfU0VUUFJPUEVSVFkpICYgfm5zSVhQ
Q1NjcmlwdGFibGU6OlVTRV9KU1NUVUJfRk9SX0FERFBST1BFUlRZKSB8IG5zSVhQQ1NjcmlwdGFi
bGU6OldBTlRfQUREUFJPUEVSVFkgfCBuc0lYUENTY3JpcHRhYmxlOjpXQU5UX0RFTFBST1BFUlRZ
IHwgbnNJWFBDU2NyaXB0YWJsZTo6V0FOVF9HRVRQUk9QRVJUWSkgfCBuc0lYUENTY3JpcHRhYmxl
OjpXQU5UX0VOVU1FUkFURSwgMSwgfSwKCgp9OwoKbnNJWFBDb25uZWN0ICpuc0RPTUNsYXNzSW5m
bzo6c1hQQ29ubmVjdCA9IDA7Cm5zSVNjcmlwdFNlY3VyaXR5TWFuYWdlciAqbnNET01DbGFzc0lu
Zm86OnNTZWNNYW4gPSAwOwpQUkJvb2wgbnNET01DbGFzc0luZm86OnNJc0luaXRpYWxpemVkID0g
MDsKCgoKanN2YWwgbnNET01DbGFzc0luZm86OnNUb3BfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2
YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c1Njcm9s
bGJhcnNfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEp
Owpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c0xvY2F0aW9uX2lkID0gKCgoanN2YWwpKDAgLSAoKGpz
dmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKanN2YWwgbnNET01DbGFzc0luZm86OnNDb21w
b25lbnRzX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgx
KTsKanN2YWwgbnNET01DbGFzc0luZm86OnNDb25zdHJ1Y3Rvcl9pZCA9ICgoKGpzdmFsKSgwIC0g
KChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CmpzdmFsIG5zRE9NQ2xhc3NJbmZvOjpz
X2NvbnRlbnRfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAw
eDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c0NvbnRlbnRfaWQgPSAoKChqc3ZhbCkoMCAtICgo
anN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c1Np
ZGViYXJfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEp
Owpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c01lbnViYXJfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2
YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c1Rvb2xi
YXJfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpq
c3ZhbCBuc0RPTUNsYXNzSW5mbzo6c0xvY2F0aW9uYmFyX2lkID0gKCgoanN2YWwpKDAgLSAoKGpz
dmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKanN2YWwgbnNET01DbGFzc0luZm86OnNQZXJz
b25hbGJhcl9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4
MSk7CmpzdmFsIG5zRE9NQ2xhc3NJbmZvOjpzU3RhdHVzYmFyX2lkID0gKCgoanN2YWwpKDAgLSAo
KGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKanN2YWwgbnNET01DbGFzc0luZm86OnNE
aXJlY3Rvcmllc19pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8
IDB4MSk7CmpzdmFsIG5zRE9NQ2xhc3NJbmZvOjpzQ29udHJvbGxlcnNfaWQgPSAoKChqc3ZhbCko
MCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5m
bzo6c0xlbmd0aF9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8
IDB4MSk7CmpzdmFsIG5zRE9NQ2xhc3NJbmZvOjpzSW5uZXJIZWlnaHRfaWQgPSAoKChqc3ZhbCko
MCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5m
bzo6c0lubmVyV2lkdGhfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwg
MSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c091dGVySGVpZ2h0X2lkID0gKCgoanN2
YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKanN2YWwgbnNET01DbGFz
c0luZm86OnNPdXRlcldpZHRoX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkp
IDw8IDEpIHwgMHgxKTsKanN2YWwgbnNET01DbGFzc0luZm86OnNTY3JlZW5YX2lkID0gKCgoanN2
YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKanN2YWwgbnNET01DbGFz
c0luZm86OnNTY3JlZW5ZX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8
IDEpIHwgMHgxKTsKanN2YWwgbnNET01DbGFzc0luZm86OnNTdGF0dXNfaWQgPSAoKChqc3ZhbCko
MCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5m
bzo6c05hbWVfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAw
eDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c09ubW91c2Vkb3duX2lkID0gKCgoanN2YWwpKDAg
LSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKanN2YWwgbnNET01DbGFzc0luZm86
OnNPbm1vdXNldXBfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkg
fCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c09uY2xpY2tfaWQgPSAoKChqc3ZhbCkoMCAt
ICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6
c09uY29udGV4dG1lbnVfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwg
MSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c09ubW91c2VvdmVyX2lkID0gKCgoanN2
YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKanN2YWwgbnNET01DbGFz
c0luZm86OnNPbm1vdXNlb3V0X2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkp
IDw8IDEpIHwgMHgxKTsKanN2YWwgbnNET01DbGFzc0luZm86OnNPbmtleWRvd25faWQgPSAoKChq
c3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNs
YXNzSW5mbzo6c09ua2V5dXBfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkg
PDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c09ua2V5cHJlc3NfaWQgPSAoKChq
c3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNs
YXNzSW5mbzo6c09ubW91c2Vtb3ZlX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMw
KSkpIDw8IDEpIHwgMHgxKTsKanN2YWwgbnNET01DbGFzc0luZm86OnNPbmZvY3VzX2lkID0gKCgo
anN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKanN2YWwgbnNET01D
bGFzc0luZm86OnNPbmJsdXJfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkg
PDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c09uc3VibWl0X2lkID0gKCgoanN2
YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKanN2YWwgbnNET01DbGFz
c0luZm86OnNPbnJlc2V0X2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8
IDEpIHwgMHgxKTsKanN2YWwgbnNET01DbGFzc0luZm86OnNPbmNoYW5nZV9pZCA9ICgoKGpzdmFs
KSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CmpzdmFsIG5zRE9NQ2xhc3NJ
bmZvOjpzT25zZWxlY3RfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwg
MSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c09ubG9hZF9pZCA9ICgoKGpzdmFsKSgw
IC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CmpzdmFsIG5zRE9NQ2xhc3NJbmZv
OjpzT251bmxvYWRfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkg
fCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c09uYWJvcnRfaWQgPSAoKChqc3ZhbCkoMCAt
ICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6
c09uZXJyb3JfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAw
eDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c09ucGFpbnRfaWQgPSAoKChqc3ZhbCkoMCAtICgo
anN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c09u
cmVzaXplX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgx
KTsKanN2YWwgbnNET01DbGFzc0luZm86OnNPbnNjcm9sbF9pZCA9ICgoKGpzdmFsKSgwIC0gKChq
c3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CmpzdmFsIG5zRE9NQ2xhc3NJbmZvOjpzU2Ny
b2xsSW50b1ZpZXdfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkg
fCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c1Njcm9sbFhfaWQgPSAoKChqc3ZhbCkoMCAt
ICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6
c1Njcm9sbFlfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAw
eDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c09wZW5faWQgPSAoKChqc3ZhbCkoMCAtICgoanN2
YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3ZhbCBuc0RPTUNsYXNzSW5mbzo6c0l0ZW1f
aWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwpqc3Zh
bCBuc0RPTUNsYXNzSW5mbzo6c0VudW1lcmF0ZV9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkx
IDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CmpzdmFsIG5zRE9NQ2xhc3NJbmZvOjpzTmF2aWdhdG9y
X2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKanN2
YWwgbnNET01DbGFzc0luZm86OnNEb2N1bWVudF9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkx
IDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CmpzdmFsIG5zRE9NQ2xhc3NJbmZvOjpzV2luZG93X2lk
ID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKanN2YWwg
bnNET01DbGFzc0luZm86OnNGcmFtZXNfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAo
MzApKSkgPDwgMSkgfCAweDEpOwoKY29uc3QgSlNDbGFzcyAqbnNET01DbGFzc0luZm86OnNPYmpl
Y3RDbGFzcyA9IDA7CgpQUkJvb2wgbnNET01DbGFzc0luZm86OnNEb1NlY3VyaXR5Q2hlY2tJbkFk
ZFByb3BlcnR5ID0gMTsKCgpzdGF0aWMgaW5saW5lIEpTT2JqZWN0ICoKR2V0R2xvYmFsSlNPYmpl
Y3QoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaikKewogIEpTT2JqZWN0ICp0bXA7CgogIHdo
aWxlICgodG1wID0gOjpKU19HZXRQYXJlbnQoY3gsIG9iaikpKSB7CiAgICBvYmogPSB0bXA7CiAg
fQoKICByZXR1cm4gb2JqOwp9CgpzdGF0aWMganN2YWwKR2V0SW50ZXJuZWRKU1ZhbChKU0NvbnRl
eHQgKmN4LCBjb25zdCBjaGFyICpzdHIpCnsKICBKU1N0cmluZyAqcyA9IDo6SlNfSW50ZXJuU3Ry
aW5nKGN4LCBzdHIpOwoKICBpZiAoIXMpIHsKICAgIHJldHVybiAoKChqc3ZhbCkoMCAtICgoanN2
YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwogIH0KCiAgcmV0dXJuICgoKGpzdmFsKShzKSkg
fCAoMHg0KSk7Cn0KCgoKbnNyZXN1bHQKbnNET01DbGFzc0luZm86OkRlZmluZVN0YXRpY0pTVmFs
cyhKU0NvbnRleHQgKmN4KQp7CgoKCgoKCiAgc1RvcF9pZCA9IEdldEludGVybmVkSlNWYWwoY3gs
ICJ0b3AiKTsgaWYgKCEoKChzVG9wX2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9
PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc1Njcm9sbGJh
cnNfaWQgPSBHZXRJbnRlcm5lZEpTVmFsKGN4LCAic2Nyb2xsYmFycyIpOyBpZiAoISgoKHNTY3Jv
bGxiYXJzX2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7IHJldHVy
biAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc0xvY2F0aW9uX2lkID0gR2V0SW50ZXJu
ZWRKU1ZhbChjeCwgImxvY2F0aW9uIik7IGlmICghKCgoc0xvY2F0aW9uX2lkKSAmICgoKEpTVWlu
dDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcw
MDBlTCk7IH07CiAgc0NvbXBvbmVudHNfaWQgPSBHZXRJbnRlcm5lZEpTVmFsKGN4LCAiQ29tcG9u
ZW50cyIpOyBpZiAoISgoKHNDb21wb25lbnRzX2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAt
IDEpKSA9PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc0Nv
bnN0cnVjdG9yX2lkID0gR2V0SW50ZXJuZWRKU1ZhbChjeCwgImNvbnN0cnVjdG9yIik7IGlmICgh
KCgoc0NvbnN0cnVjdG9yX2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQp
KSB7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc19jb250ZW50X2lkID0g
R2V0SW50ZXJuZWRKU1ZhbChjeCwgIl9jb250ZW50Iik7IGlmICghKCgoc19jb250ZW50X2lkKSAm
ICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0
KSAweDgwMDcwMDBlTCk7IH07CiAgc0NvbnRlbnRfaWQgPSBHZXRJbnRlcm5lZEpTVmFsKGN4LCAi
Y29udGVudCIpOyBpZiAoISgoKHNDb250ZW50X2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAt
IDEpKSA9PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc1Np
ZGViYXJfaWQgPSBHZXRJbnRlcm5lZEpTVmFsKGN4LCAic2lkZWJhciIpOyBpZiAoISgoKHNTaWRl
YmFyX2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7IHJldHVybiAo
KG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc01lbnViYXJfaWQgPSBHZXRJbnRlcm5lZEpT
VmFsKGN4LCAibWVudWJhciIpOyBpZiAoISgoKHNNZW51YmFyX2lkKSAmICgoKEpTVWludDMyKTEg
PDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7
IH07CiAgc1Rvb2xiYXJfaWQgPSBHZXRJbnRlcm5lZEpTVmFsKGN4LCAidG9vbGJhciIpOyBpZiAo
ISgoKHNUb29sYmFyX2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7
IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc0xvY2F0aW9uYmFyX2lkID0g
R2V0SW50ZXJuZWRKU1ZhbChjeCwgImxvY2F0aW9uYmFyIik7IGlmICghKCgoc0xvY2F0aW9uYmFy
X2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7IHJldHVybiAoKG5z
cmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc1BlcnNvbmFsYmFyX2lkID0gR2V0SW50ZXJuZWRK
U1ZhbChjeCwgInBlcnNvbmFsYmFyIik7IGlmICghKCgoc1BlcnNvbmFsYmFyX2lkKSAmICgoKEpT
VWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0KSAweDgw
MDcwMDBlTCk7IH07CiAgc1N0YXR1c2Jhcl9pZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJzdGF0
dXNiYXIiKTsgaWYgKCEoKChzU3RhdHVzYmFyX2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAt
IDEpKSA9PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc0Rp
cmVjdG9yaWVzX2lkID0gR2V0SW50ZXJuZWRKU1ZhbChjeCwgImRpcmVjdG9yaWVzIik7IGlmICgh
KCgoc0RpcmVjdG9yaWVzX2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQp
KSB7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc0NvbnRyb2xsZXJzX2lk
ID0gR2V0SW50ZXJuZWRKU1ZhbChjeCwgImNvbnRyb2xsZXJzIik7IGlmICghKCgoc0NvbnRyb2xs
ZXJzX2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7IHJldHVybiAo
KG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc0xlbmd0aF9pZCA9IEdldEludGVybmVkSlNW
YWwoY3gsICJsZW5ndGgiKTsgaWYgKCEoKChzTGVuZ3RoX2lkKSAmICgoKEpTVWludDMyKTEgPDwg
KDMpKSAtIDEpKSA9PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07
CiAgc0lubmVySGVpZ2h0X2lkID0gR2V0SW50ZXJuZWRKU1ZhbChjeCwgImlubmVySGVpZ2h0Iik7
IGlmICghKCgoc0lubmVySGVpZ2h0X2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9
PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc0lubmVyV2lk
dGhfaWQgPSBHZXRJbnRlcm5lZEpTVmFsKGN4LCAiaW5uZXJXaWR0aCIpOyBpZiAoISgoKHNJbm5l
cldpZHRoX2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7IHJldHVy
biAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc091dGVySGVpZ2h0X2lkID0gR2V0SW50
ZXJuZWRKU1ZhbChjeCwgIm91dGVyV2lkdGgiKTsgaWYgKCEoKChzT3V0ZXJIZWlnaHRfaWQpICYg
KCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQp
IDB4ODAwNzAwMGVMKTsgfTsKICBzT3V0ZXJXaWR0aF9pZCA9IEdldEludGVybmVkSlNWYWwoY3gs
ICJvdXRlcldpZHRoIik7IGlmICghKCgoc091dGVyV2lkdGhfaWQpICYgKCgoSlNVaW50MzIpMSA8
PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsg
fTsKICBzU2NyZWVuWF9pZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJzY3JlZW5YIik7IGlmICgh
KCgoc1NjcmVlblhfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsg
cmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzU2NyZWVuWV9pZCA9IEdldElu
dGVybmVkSlNWYWwoY3gsICJzY3JlZW5ZIik7IGlmICghKCgoc1NjcmVlbllfaWQpICYgKCgoSlNV
aW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAw
NzAwMGVMKTsgfTsKICBzU3RhdHVzX2lkID0gR2V0SW50ZXJuZWRKU1ZhbChjeCwgInN0YXR1cyIp
OyBpZiAoISgoKHNTdGF0dXNfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4
NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzTmFtZV9pZCA9IEdl
dEludGVybmVkSlNWYWwoY3gsICJuYW1lIik7IGlmICghKCgoc05hbWVfaWQpICYgKCgoSlNVaW50
MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAw
MGVMKTsgfTsKICBzT25tb3VzZWRvd25faWQgPSBHZXRJbnRlcm5lZEpTVmFsKGN4LCAib25tb3Vz
ZWRvd24iKTsgaWYgKCEoKChzT25tb3VzZWRvd25faWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykp
IC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBz
T25tb3VzZXVwX2lkID0gR2V0SW50ZXJuZWRKU1ZhbChjeCwgIm9ubW91c2V1cCIpOyBpZiAoISgo
KHNPbm1vdXNldXBfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsg
cmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzT25jbGlja19pZCA9IEdldElu
dGVybmVkSlNWYWwoY3gsICJvbmNsaWNrIik7IGlmICghKCgoc09uY2xpY2tfaWQpICYgKCgoSlNV
aW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAw
NzAwMGVMKTsgfTsKICBzT25jb250ZXh0bWVudV9pZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJv
bmNvbnRleHRtZW51Iik7IGlmICghKCgoc09uY29udGV4dG1lbnVfaWQpICYgKCgoSlNVaW50MzIp
MSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVM
KTsgfTsKICBzT25tb3VzZW92ZXJfaWQgPSBHZXRJbnRlcm5lZEpTVmFsKGN4LCAib25tb3VzZW92
ZXIiKTsgaWYgKCEoKChzT25tb3VzZW92ZXJfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0g
MSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzT25t
b3VzZW91dF9pZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJvbm1vdXNlb3V0Iik7IGlmICghKCgo
c09ubW91c2VvdXRfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsg
cmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzT25rZXlkb3duX2lkID0gR2V0
SW50ZXJuZWRKU1ZhbChjeCwgIm9ua2V5ZG93biIpOyBpZiAoISgoKHNPbmtleWRvd25faWQpICYg
KCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQp
IDB4ODAwNzAwMGVMKTsgfTsKICBzT25rZXl1cF9pZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJv
bmtleXVwIik7IGlmICghKCgoc09ua2V5dXBfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0g
MSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzT25r
ZXlwcmVzc19pZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJvbmtleXByZXNzIik7IGlmICghKCgo
c09ua2V5cHJlc3NfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsg
cmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzT25tb3VzZW1vdmVfaWQgPSBH
ZXRJbnRlcm5lZEpTVmFsKGN4LCAib25tb3VzZW1vdmUiKTsgaWYgKCEoKChzT25tb3VzZW1vdmVf
aWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNy
ZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzT25mb2N1c19pZCA9IEdldEludGVybmVkSlNWYWwo
Y3gsICJvbmZvY3VzIik7IGlmICghKCgoc09uZm9jdXNfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAo
MykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsK
ICBzT25ibHVyX2lkID0gR2V0SW50ZXJuZWRKU1ZhbChjeCwgIm9uYmx1ciIpOyBpZiAoISgoKHNP
bmJsdXJfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJu
ICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzT25zdWJtaXRfaWQgPSBHZXRJbnRlcm5l
ZEpTVmFsKGN4LCAib25zdWJtaXQiKTsgaWYgKCEoKChzT25zdWJtaXRfaWQpICYgKCgoSlNVaW50
MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAw
MGVMKTsgfTsKICBzT25yZXNldF9pZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJvbnJlc2V0Iik7
IGlmICghKCgoc09ucmVzZXRfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4
NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzT25jaGFuZ2VfaWQg
PSBHZXRJbnRlcm5lZEpTVmFsKGN4LCAib25jaGFuZ2UiKTsgaWYgKCEoKChzT25jaGFuZ2VfaWQp
ICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1
bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzT25zZWxlY3RfaWQgPSBHZXRJbnRlcm5lZEpTVmFsKGN4
LCAib25zZWxlY3QiKTsgaWYgKCEoKChzT25zZWxlY3RfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAo
MykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsK
ICBzT25sb2FkX2lkID0gR2V0SW50ZXJuZWRKU1ZhbChjeCwgIm9ubG9hZCIpOyBpZiAoISgoKHNP
bmxvYWRfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJu
ICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzT251bmxvYWRfaWQgPSBHZXRJbnRlcm5l
ZEpTVmFsKGN4LCAib251bmxvYWQiKTsgaWYgKCEoKChzT251bmxvYWRfaWQpICYgKCgoSlNVaW50
MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAw
MGVMKTsgfTsKICBzT25hYm9ydF9pZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJvbmFib3J0Iik7
IGlmICghKCgoc09uYWJvcnRfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4
NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzT25lcnJvcl9pZCA9
IEdldEludGVybmVkSlNWYWwoY3gsICJvbmVycm9yIik7IGlmICghKCgoc09uZXJyb3JfaWQpICYg
KCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQp
IDB4ODAwNzAwMGVMKTsgfTsKICBzT25wYWludF9pZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJv
bnBhaW50Iik7IGlmICghKCgoc09ucGFpbnRfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0g
MSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzT25y
ZXNpemVfaWQgPSBHZXRJbnRlcm5lZEpTVmFsKGN4LCAib25yZXNpemUiKTsgaWYgKCEoKChzT25y
ZXNpemVfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJu
ICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzT25zY3JvbGxfaWQgPSBHZXRJbnRlcm5l
ZEpTVmFsKGN4LCAib25zY3JvbGwiKTsgaWYgKCEoKChzT25zY3JvbGxfaWQpICYgKCgoSlNVaW50
MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAw
MGVMKTsgfTsKICBzU2Nyb2xsSW50b1ZpZXdfaWQgPSBHZXRJbnRlcm5lZEpTVmFsKGN4LCAic2Ny
b2xsSW50b1ZpZXciKTsgaWYgKCEoKChzU2Nyb2xsSW50b1ZpZXdfaWQpICYgKCgoSlNVaW50MzIp
MSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVM
KTsgfTsKICBzU2Nyb2xsWF9pZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJzY3JvbGxYIik7IGlm
ICghKCgoc1Njcm9sbFhfaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkp
IHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzU2Nyb2xsWV9pZCA9IEdl
dEludGVybmVkSlNWYWwoY3gsICJzY3JvbGxZIik7IGlmICghKCgoc1Njcm9sbFlfaWQpICYgKCgo
SlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4
ODAwNzAwMGVMKTsgfTsKICBzT3Blbl9pZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJvcGVuIik7
IGlmICghKCgoc09wZW5faWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09IDB4NCkp
IHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfTsKICBzSXRlbV9pZCA9IEdldElu
dGVybmVkSlNWYWwoY3gsICJpdGVtIik7IGlmICghKCgoc0l0ZW1faWQpICYgKCgoSlNVaW50MzIp
MSA8PCAoMykpIC0gMSkpID09IDB4NCkpIHsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVM
KTsgfTsKICBzRW51bWVyYXRlX2lkID0gR2V0SW50ZXJuZWRKU1ZhbChjeCwgImVudW1lcmF0ZVBy
b3BlcnRpZXMiKTsgaWYgKCEoKChzRW51bWVyYXRlX2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMp
KSAtIDEpKSA9PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAg
c05hdmlnYXRvcl9pZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJuYXZpZ2F0b3IiKTsgaWYgKCEo
KChzTmF2aWdhdG9yX2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7
IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc0RvY3VtZW50X2lkID0gR2V0
SW50ZXJuZWRKU1ZhbChjeCwgImRvY3VtZW50Iik7IGlmICghKCgoc0RvY3VtZW50X2lkKSAmICgo
KEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0KSAw
eDgwMDcwMDBlTCk7IH07CiAgc1dpbmRvd19pZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJ3aW5k
b3ciKTsgaWYgKCEoKChzV2luZG93X2lkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9
PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7IH07CiAgc0ZyYW1lc19p
ZCA9IEdldEludGVybmVkSlNWYWwoY3gsICJmcmFtZXMiKTsgaWYgKCEoKChzRnJhbWVzX2lkKSAm
ICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7IHJldHVybiAoKG5zcmVzdWx0
KSAweDgwMDcwMDBlTCk7IH07CgogIHJldHVybiAwOwp9CgoKbnNyZXN1bHQKbnNET01DbGFzc0lu
Zm86OldyYXBOYXRpdmUoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKnNjb3BlLCBuc0lTdXBwb3J0
cyAqbmF0aXZlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuc0lJRCYgYUlJRCwg
anN2YWwgKnZwKQp7CiAgaWYgKCFuYXRpdmUpIHsKICAgICp2cCA9ICgoanN2YWwpKDApKTsKCiAg
ICByZXR1cm4gMDsKICB9CgogIGRvIHsgaWYgKCEoc1hQQ29ubmVjdCkpIHsgOyByZXR1cm4gKChu
c3Jlc3VsdCkgMHg4MDAwZmZmZkwpOyB9IH0gd2hpbGUgKDApOwoKICBuc0NPTVB0cjxuc0lYUENv
bm5lY3RKU09iamVjdEhvbGRlcj4gaG9sZGVyOwoKICBuc3Jlc3VsdCBydiA9IHNYUENvbm5lY3Qt
PldyYXBOYXRpdmUoY3gsIHNjb3BlLCBuYXRpdmUsIGFJSUQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdldHRlcl9BZGRSZWZzKGhvbGRlcikpOwogIGRvIHsgaWYgKCEo
KCEoKHJ2KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7Cgog
IEpTT2JqZWN0KiBvYmogPSAwOwogIHJ2ID0gaG9sZGVyLT5HZXRKU09iamVjdCgmb2JqKTsKICBk
byB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0dXJuIHJ2OyB9IH0gd2hp
bGUgKDApOwoKICAqdnAgPSAoKGpzdmFsKShvYmopKTsKCiAgcmV0dXJuIHJ2Owp9CgoKbnNyZXN1
bHQKbnNET01DbGFzc0luZm86OlRocm93SlNFeGNlcHRpb24oSlNDb250ZXh0ICpjeCwgbnNyZXN1
bHQgYVJlc3VsdCkKewogIG5zQ09NUHRyPG5zSUV4Y2VwdGlvblNlcnZpY2U+IHhzID0KICAgIGRv
X0dldFNlcnZpY2UoIkBtb3ppbGxhLm9yZy9leGNlcHRpb25zZXJ2aWNlOzEiKTsKICBpZiAoIXhz
KQogICAgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMDQwMDVMKTsKCiAgbnNDT01QdHI8bnNJRXhj
ZXB0aW9uTWFuYWdlcj4geG07CiAgbnNyZXN1bHQgcnYgPSB4cy0+R2V0Q3VycmVudEV4Y2VwdGlv
bk1hbmFnZXIoZ2V0dGVyX0FkZFJlZnMoeG0pKTsKICBkbyB7IGlmICghKCghKChydikgJiAweDgw
MDAwMDAwKSkpKSB7IDsgcmV0dXJuIHJ2OyB9IH0gd2hpbGUgKDApOwoKICBuc0NPTVB0cjxuc0lF
eGNlcHRpb24+IGV4Y2VwdGlvbjsKICBydiA9IHhtLT5HZXRFeGNlcHRpb25Gcm9tUHJvdmlkZXIo
YVJlc3VsdCwgMCwgZ2V0dGVyX0FkZFJlZnMoZXhjZXB0aW9uKSk7CgogIGpzdmFsIGp2OwogIHJ2
ID0gV3JhcE5hdGl2ZShjeCwgOjpKU19HZXRHbG9iYWxPYmplY3QoY3gpLCBleGNlcHRpb24sCiAg
ICAgICAgICAgICAgICAgIG5zQ09NVHlwZUluZm88bnNJRXhjZXB0aW9uPjo6R2V0SUlEKCksICZq
dik7CiAgZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsg
fSB9IHdoaWxlICgwKTsKICBKU19TZXRQZW5kaW5nRXhjZXB0aW9uKGN4LCBqdik7CgogIHJldHVy
biAwOwp9Cgpuc0RPTUNsYXNzSW5mbzo6bnNET01DbGFzc0luZm8obnNET01DbGFzc0luZm9EYXRh
KiBhRGF0YSkgOiBtRGF0YShhRGF0YSkKewp9Cgpuc0RPTUNsYXNzSW5mbzo6fm5zRE9NQ2xhc3NJ
bmZvKCkKewogIGlmICgoUHRyQml0cyhtRGF0YS0+bUNhY2hlZENsYXNzSW5mbykgJiAweDEpKSB7
CgogICAgbnNET01DbGFzc0luZm9EYXRhKiBkYXRhID0gY29uc3RfY2FzdDwgbnNET01DbGFzc0lu
Zm9EYXRhKiA+KG1EYXRhKTsKICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDwgbnNFeHRlcm5hbERPTUNs
YXNzSW5mb0RhdGEqID4oZGF0YSk7CiAgfQp9Cgpuc3JlZmNudCBuc0RPTUNsYXNzSW5mbzo6QWRk
UmVmKHZvaWQpIHsgOyAoKHZvaWQpMCk7ICsrbVJlZkNudDsgOyByZXR1cm4gbVJlZkNudDsgfTsK
bnNyZWZjbnQgbnNET01DbGFzc0luZm86OlJlbGVhc2Uodm9pZCkgeyA7ICgodm9pZCkwKTsgLS1t
UmVmQ250OyA7IGlmIChtUmVmQ250ID09IDApIHsgbVJlZkNudCA9IDE7IGRvIHsgOyBkZWxldGUg
KHRoaXMpOyB9IHdoaWxlICgwKTsgcmV0dXJuIDA7IH0gcmV0dXJuIG1SZWZDbnQ7IH07Cgpuc3Jl
c3VsdCBuc0RPTUNsYXNzSW5mbzo6UXVlcnlJbnRlcmZhY2UoY29uc3QgbnNJSUQmIGFJSUQsIHZv
aWQqKiBhSW5zdGFuY2VQdHIpIHsgOyBpZiAoICFhSW5zdGFuY2VQdHIgKSByZXR1cm4gKChuc3Jl
c3VsdCkgMHg4MDAwNDAwM0wpOyBuc0lTdXBwb3J0cyogZm91bmRJbnRlcmZhY2U7CiAgaWYgKCBh
SUlELkVxdWFscyhuc0NPTVR5cGVJbmZvPG5zSVhQQ1NjcmlwdGFibGU+OjpHZXRJSUQoKSkgKSBm
b3VuZEludGVyZmFjZSA9IHN0YXRpY19jYXN0PCBuc0lYUENTY3JpcHRhYmxlKiA+KHRoaXMpOyBl
bHNlCiAgaWYgKCBhSUlELkVxdWFscyhuc0NPTVR5cGVJbmZvPG5zSUNsYXNzSW5mbz46OkdldElJ
RCgpKSApIGZvdW5kSW50ZXJmYWNlID0gc3RhdGljX2Nhc3Q8IG5zSUNsYXNzSW5mbyogPih0aGlz
KTsgZWxzZQogIGlmICggYUlJRC5FcXVhbHMobnNDT01UeXBlSW5mbzxuc0lTdXBwb3J0cz46Okdl
dElJRCgpKSApIGZvdW5kSW50ZXJmYWNlID0gc3RhdGljX2Nhc3Q8IG5zSVN1cHBvcnRzKiA+KHN0
YXRpY19jYXN0PCBuc0lYUENTY3JpcHRhYmxlKiA+KHRoaXMpKTsgZWxzZQpmb3VuZEludGVyZmFj
ZSA9IDA7IG5zcmVzdWx0IHN0YXR1czsgaWYgKCAhZm91bmRJbnRlcmZhY2UgKSBzdGF0dXMgPSAo
KG5zcmVzdWx0KSAweDgwMDA0MDAyTCk7IGVsc2UgeyAoZm91bmRJbnRlcmZhY2UpLT5BZGRSZWYo
KTsgc3RhdHVzID0gMDsgfSAqYUluc3RhbmNlUHRyID0gZm91bmRJbnRlcmZhY2U7IHJldHVybiBz
dGF0dXM7IH0KCgpKU0NsYXNzIG5zRE9NQ2xhc3NJbmZvOjpzRE9NQ29uc3RydWN0b3JQcm90b0Ns
YXNzID0gewogICJET00gQ29uc3RydWN0b3IucHJvdG90eXBlIiwgMCwKICBKU19Qcm9wZXJ0eVN0
dWIsIEpTX1Byb3BlcnR5U3R1YiwgSlNfUHJvcGVydHlTdHViLCBKU19Qcm9wZXJ0eVN0dWIsCiAg
SlNfRW51bWVyYXRlU3R1YiwgSlNfUmVzb2x2ZVN0dWIsIEpTX0NvbnZlcnRTdHViLCBKU19GaW5h
bGl6ZVN0dWIKfTsKCgpzdGF0aWMgY29uc3QgY2hhciAqCkN1dFByZWZpeChjb25zdCBjaGFyICph
TmFtZSkgewogIHN0YXRpYyBjb25zdCBjaGFyIHByZWZpeF9uc0lET01bXSA9ICJuc0lET00iOwog
IHN0YXRpYyBjb25zdCBjaGFyIHByZWZpeF9uc0lbXSA9ICJuc0kiOwoKICBpZiAoc3RybmNtcChh
TmFtZSwgcHJlZml4X25zSURPTSwgc2l6ZW9mKHByZWZpeF9uc0lET00pIC0gMSkgPT0gMCkgewog
ICAgcmV0dXJuIGFOYW1lICsgc2l6ZW9mKHByZWZpeF9uc0lET00pIC0gMTsKICB9CgogIGlmIChz
dHJuY21wKGFOYW1lLCBwcmVmaXhfbnNJLCBzaXplb2YocHJlZml4X25zSSkgLSAxKSA9PSAwKSB7
CiAgICByZXR1cm4gYU5hbWUgKyBzaXplb2YocHJlZml4X25zSSkgLSAxOwogIH0KCiAgcmV0dXJu
IGFOYW1lOwp9CgoKbnNyZXN1bHQKbnNET01DbGFzc0luZm86OlJlZ2lzdGVyQ2xhc3NOYW1lKFBS
SW50MzIgYUNsYXNzSW5mb0lEKQp7CiAgZXh0ZXJuIG5zU2NyaXB0TmFtZVNwYWNlTWFuYWdlciAq
Z05hbWVTcGFjZU1hbmFnZXI7CiAgZG8geyBpZiAoIShnTmFtZVNwYWNlTWFuYWdlcikpIHsgOyBy
ZXR1cm4gKCgobnNyZXN1bHQpIDB4QzFGMzAwMDApICsgMSk7IH0gfSB3aGlsZSAoMCk7CgogIGdO
YW1lU3BhY2VNYW5hZ2VyLT5SZWdpc3RlckNsYXNzTmFtZShzQ2xhc3NJbmZvRGF0YVthQ2xhc3NJ
bmZvSURdLm1OYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhQ2xh
c3NJbmZvSUQpOwoKICByZXR1cm4gMDsKfQoKCm5zcmVzdWx0Cm5zRE9NQ2xhc3NJbmZvOjpSZWdp
c3RlckNsYXNzUHJvdG9zKFBSSW50MzIgYUNsYXNzSW5mb0lEKQp7CiAgZXh0ZXJuIG5zU2NyaXB0
TmFtZVNwYWNlTWFuYWdlciAqZ05hbWVTcGFjZU1hbmFnZXI7CiAgZG8geyBpZiAoIShnTmFtZVNw
YWNlTWFuYWdlcikpIHsgOyByZXR1cm4gKCgobnNyZXN1bHQpIDB4QzFGMzAwMDApICsgMSk7IH0g
fSB3aGlsZSAoMCk7CiAgUFJCb29sIGZvdW5kX29sZDsKCiAgY29uc3QgbnNJSUQgKnByaW1hcnlf
aWlkID0gc0NsYXNzSW5mb0RhdGFbYUNsYXNzSW5mb0lEXS5tUHJvdG9DaGFpbkludGVyZmFjZTsK
CiAgaWYgKCFwcmltYXJ5X2lpZCB8fCBwcmltYXJ5X2lpZCA9PSAmbnNDT01UeXBlSW5mbzxuc0lT
dXBwb3J0cz46OkdldElJRCgpKSB7CiAgICByZXR1cm4gMDsKICB9CgogIG5zQ09NUHRyPG5zSUlu
dGVyZmFjZUluZm9NYW5hZ2VyPiBpaW0gPQogICAgZG9udF9BZGRSZWYoWFBUSV9HZXRJbnRlcmZh
Y2VJbmZvTWFuYWdlcigpKTsKICBkbyB7IGlmICghKGlpbSkpIHsgOyByZXR1cm4gKChuc3Jlc3Vs
dCkgMHg4MDA0MDExMUwpOyB9IH0gd2hpbGUgKDApOwoKICBuc0NPTVB0cjxuc0lJbnRlcmZhY2VJ
bmZvPiBpZl9pbmZvOwogIFBSQm9vbCBmaXJzdCA9IDE7CgogIGlpbS0+R2V0SW5mb0ZvcklJRChw
cmltYXJ5X2lpZCwgZ2V0dGVyX0FkZFJlZnMoaWZfaW5mbykpOwoKICB3aGlsZSAoaWZfaW5mbykg
ewogICAgbnNJSUQgKmlpZCA9IDA7CgogICAgaWZfaW5mby0+R2V0SW50ZXJmYWNlSUlEKCZpaWQp
OwogICAgZG8geyBpZiAoIShpaWQpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZM
KTsgfSB9IHdoaWxlICgwKTsKCiAgICBpZiAoaWlkLT5FcXVhbHMobnNDT01UeXBlSW5mbzxuc0lT
dXBwb3J0cz46OkdldElJRCgpKSkgewogICAgICBuc01lbW9yeTo6RnJlZShpaWQpOwoKICAgICAg
YnJlYWs7CiAgICB9CgogICAgbnNYUElETENTdHJpbmcgbmFtZTsKICAgIGlmX2luZm8tPkdldE5h
bWUoZ2V0dGVyX0NvcGllcyhuYW1lKSk7CgogICAgZ05hbWVTcGFjZU1hbmFnZXItPlJlZ2lzdGVy
Q2xhc3NQcm90byhDdXRQcmVmaXgobmFtZSksIGlpZCwgJmZvdW5kX29sZCk7CgogICAgbnNNZW1v
cnk6OkZyZWUoaWlkKTsKCiAgICBpZiAoZmlyc3QpIHsKICAgICAgZmlyc3QgPSAwOwogICAgfSBl
bHNlIGlmIChmb3VuZF9vbGQpIHsKICAgICAgYnJlYWs7CiAgICB9CgogICAgbnNDT01QdHI8bnNJ
SW50ZXJmYWNlSW5mbz4gdG1wKGlmX2luZm8pOwogICAgdG1wLT5HZXRQYXJlbnQoZ2V0dGVyX0Fk
ZFJlZnMoaWZfaW5mbykpOwogIH0KCiAgcmV0dXJuIDA7Cn0KCgpuc3Jlc3VsdApuc0RPTUNsYXNz
SW5mbzo6UmVnaXN0ZXJFeHRlcm5hbENsYXNzZXMoKQp7CiAgZXh0ZXJuIG5zU2NyaXB0TmFtZVNw
YWNlTWFuYWdlciAqZ05hbWVTcGFjZU1hbmFnZXI7CiAgZG8geyBpZiAoIShnTmFtZVNwYWNlTWFu
YWdlcikpIHsgOyByZXR1cm4gKCgobnNyZXN1bHQpIDB4QzFGMzAwMDApICsgMSk7IH0gfSB3aGls
ZSAoMCk7CgogIG5zcmVzdWx0IHJ2ID0gMDsKICBuc0NPTVB0cjxuc0lDYXRlZ29yeU1hbmFnZXI+
IGNtID0KICAgIGRvX0dldFNlcnZpY2UoIkBtb3ppbGxhLm9yZy9jYXRlZ29yeW1hbmFnZXI7MSIs
ICZydik7CiAgZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiBy
djsgfSB9IHdoaWxlICgwKTsKCiAgbnNDT01QdHI8bnNJU2ltcGxlRW51bWVyYXRvcj4gZTsKICBy
diA9IGNtLT5FbnVtZXJhdGVDYXRlZ29yeSgiSmF2YVNjcmlwdCBET00gY2xhc3MiLCBnZXR0ZXJf
QWRkUmVmcyhlKSk7CiAgZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJl
dHVybiBydjsgfSB9IHdoaWxlICgwKTsKCiAgbnNYUElETENTdHJpbmcgY29udHJhY3RJZDsKICBu
c0NBdXRvU3RyaW5nIGNhdGVnb3J5RW50cnk7CiAgbnNDT01QdHI8bnNJU3VwcG9ydHM+IGVudHJ5
OwoKICB3aGlsZSAoKCEoKGUtPkdldE5leHQoZ2V0dGVyX0FkZFJlZnMoZW50cnkpKSkgJiAweDgw
MDAwMDAwKSkpIHsKICAgIG5zQ09NUHRyPG5zSVN1cHBvcnRzQ1N0cmluZz4gY2F0ZWdvcnkoZG9f
UXVlcnlJbnRlcmZhY2UoZW50cnkpKTsKCiAgICBpZiAoIWNhdGVnb3J5KSB7CiAgICAgIDsKICAg
ICAgY29udGludWU7CiAgICB9CgogICAgcnYgPSBjYXRlZ29yeS0+R2V0RGF0YShjYXRlZ29yeUVu
dHJ5KTsKCiAgICBjbS0+R2V0Q2F0ZWdvcnlFbnRyeSgiSmF2YVNjcmlwdCBET00gY2xhc3MiLCBj
YXRlZ29yeUVudHJ5LmdldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgZ2V0dGVyX0NvcGll
cyhjb250cmFjdElkKSk7CiAgICBkbyB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7
IDsgcmV0dXJuIHJ2OyB9IH0gd2hpbGUgKDApOwoKICAgIG5zQ0lEIGNpZDsKICAgIHJ2ID0gbnND
b21wb25lbnRNYW5hZ2VyOjpDb250cmFjdElEVG9DbGFzc0lEKGNvbnRyYWN0SWQsICZjaWQpOwoK
ICAgIGlmICgoKHJ2KSAmIDB4ODAwMDAwMDApKSB7CiAgICAgIDsKICAgICAgY29udGludWU7CiAg
ICB9CgogICAgcnYgPSBnTmFtZVNwYWNlTWFuYWdlci0+UmVnaXN0ZXJFeHRlcm5hbENsYXNzTmFt
ZShjYXRlZ29yeUVudHJ5LmdldCgpLCBjaWQpOwogICAgZG8geyBpZiAoISgoISgocnYpICYgMHg4
MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsgfSB9IHdoaWxlICgwKTsKICB9CgogIHJ2ID0gZ05h
bWVTcGFjZU1hbmFnZXItPlJlZ2lzdGVyRXh0ZXJuYWxJbnRlcmZhY2VzKDEpOwoKICByZXR1cm4g
cnY7Cn0KIyAxMjM3ICJuc0RPTUNsYXNzSW5mby5jcHAiCm5zcmVzdWx0Cm5zRE9NQ2xhc3NJbmZv
OjpJbml0KCkKewoKCiAgOwoKCgogIGRvIHsgaWYgKCEoIXNJc0luaXRpYWxpemVkKSkgeyA7IHJl
dHVybiAoKChuc3Jlc3VsdCkgMHhDMUYzMDAwMCkgKyAyKTsgfSB9IHdoaWxlICgwKTsKCiAgZXh0
ZXJuIG5zU2NyaXB0TmFtZVNwYWNlTWFuYWdlciAqZ05hbWVTcGFjZU1hbmFnZXI7CiAgZG8geyBp
ZiAoIShnTmFtZVNwYWNlTWFuYWdlcikpIHsgOyByZXR1cm4gKCgobnNyZXN1bHQpIDB4QzFGMzAw
MDApICsgMSk7IH0gfSB3aGlsZSAoMCk7CgogIG5zcmVzdWx0IHJ2ID0gQ2FsbEdldFNlcnZpY2Uo
bnNJWFBDb25uZWN0OjpHZXRDSUQoKSwgJnNYUENvbm5lY3QpOwogIGRvIHsgaWYgKCEoKCEoKHJ2
KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7CgogIG5zQ09N
UHRyPG5zSVhQQ0Z1bmN0aW9uVGhpc1RyYW5zbGF0b3I+IG9sZDsKCiAgbnNDT01QdHI8bnNJWFBD
RnVuY3Rpb25UaGlzVHJhbnNsYXRvcj4gZWx0ID0gbmV3IG5zRXZlbnRMaXN0ZW5lclRoaXNUcmFu
c2xhdG9yKCk7CiAgZG8geyBpZiAoIShlbHQpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAw
NzAwMGVMKTsgfSB9IHdoaWxlICgwKTsKCiAgc1hQQ29ubmVjdC0+U2V0RnVuY3Rpb25UaGlzVHJh
bnNsYXRvcihuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50TGlzdGVuZXI+OjpHZXRJSUQoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsdCwgZ2V0dGVyX0FkZFJlZnMo
b2xkKSk7CgogIG5zQ09NUHRyPG5zSVNjcmlwdFNlY3VyaXR5TWFuYWdlcj4gc20gPQogICAgZG9f
R2V0U2VydmljZSgiQG1vemlsbGEub3JnL3NjcmlwdHNlY3VyaXR5bWFuYWdlcjsxIiwgJnJ2KTsK
ICBkbyB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0dXJuIHJ2OyB9IH0g
d2hpbGUgKDApOwoKICBzU2VjTWFuID0gc207CiAgKHNTZWNNYW4pLT5BZGRSZWYoKTsKCiAgbnND
T01QdHI8bnNJVGhyZWFkSlNDb250ZXh0U3RhY2s+IHN0YWNrID0KICAgIGRvX0dldFNlcnZpY2Uo
IkBtb3ppbGxhLm9yZy9qcy94cGMvQ29udGV4dFN0YWNrOzEiLCAmcnYpOwogIGRvIHsgaWYgKCEo
KCEoKHJ2KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7Cgog
IEpTQ29udGV4dCAqY3ggPSAwOwoKICBydiA9IHN0YWNrLT5HZXRTYWZlSlNDb250ZXh0KCZjeCk7
CiAgZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsgfSB9
IHdoaWxlICgwKTsKCiAgbnNDT01QdHI8bnNJQ29tcG9uZW50UmVnaXN0cmFyPiBjcjsKICBOU19H
ZXRDb21wb25lbnRSZWdpc3RyYXIoZ2V0dGVyX0FkZFJlZnMoY3IpKTsKICBjb25zdCBuc0lJRCog
eHBhdGhFdmFsdWF0b3JJSUQgPSAwOwogIGlmIChjcikgewogICAgUFJCb29sIGhhdmVYUGF0aERP
TTsKICAgIGNyLT5Jc0NvbnRyYWN0SURSZWdpc3RlcmVkKCJAbW96aWxsYS5vcmcvZG9tL3hwYXRo
LWV2YWx1YXRvcjsxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoYXZlWFBhdGhE
T00pOwogICAgaWYgKGhhdmVYUGF0aERPTSkgewogICAgICB4cGF0aEV2YWx1YXRvcklJRCA9ICZu
c0NPTVR5cGVJbmZvPG5zSURPTVhQYXRoRXZhbHVhdG9yPjo6R2V0SUlEKCk7CiAgICB9CiAgfQoK
ICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9f
V2luZG93X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxu
c0lET01XaW5kb3c+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMg
Y29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lE
T01XaW5kb3c+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUpTV2luZG93Pjo6
R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01XaW5kb3dJbnRlcm5hbD46OkdldElJ
RCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRSZWNlaXZlcj46OkdldElJRCgpLAog
ICAgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwKICAgICZuc0NP
TVR5cGVJbmZvPG5zSURPTVZpZXdDU1M+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5z
SURPTUFic3RyYWN0Vmlldz46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVy
ZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFb
ZURPTUNsYXNzSW5mb19Mb2NhdGlvbl9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0g
Jm5zQ09NVHlwZUluZm88bnNJRE9NTG9jYXRpb24+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRl
cmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAm
bnNDT01UeXBlSW5mbzxuc0lET01Mb2NhdGlvbj46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUlu
Zm88bnNJRE9NTlNMb2NhdGlvbj46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGlu
dGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0Rh
dGFbZURPTUNsYXNzSW5mb19OYXZpZ2F0b3JfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFj
ZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTU5hdmlnYXRvcj46OkdldElJRCgpOyBkLm1IYXNDbGFz
c0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsK
ICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5hdmlnYXRvcj46OkdldElJRCgpLAogICAgJm5zQ09N
VHlwZUluZm88bnNJRE9NSlNOYXZpZ2F0b3I+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFj
ZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFz
c0luZm9EYXRhW2VET01DbGFzc0luZm9fUGx1Z2luX2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRl
cmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01QbHVnaW4+OjpHZXRJSUQoKTsgZC5tSGFzQ2xh
c3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7
CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01QbHVnaW4+OjpHZXRJSUQoKSwKICAwIH07IGQubUlu
dGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9
IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fUGx1Z2luQXJyYXlfaWRdOyA7IDsgZC5tUHJv
dG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTVBsdWdpbkFycmF5Pjo6R2V0
SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRl
cmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NUGx1Z2luQXJyYXk+OjpH
ZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUpTUGx1Z2luQXJyYXk+OjpHZXRJSUQo
KSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xh
c3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fTWltZVR5cGVfaWRd
OyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTU1pbWVU
eXBlPjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5z
SUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTWltZVR5
cGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoK
ICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9f
TWltZVR5cGVBcnJheV9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlw
ZUluZm88bnNJRE9NTWltZVR5cGVBcnJheT46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFj
ZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NP
TVR5cGVJbmZvPG5zSURPTU1pbWVUeXBlQXJyYXk+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVy
ZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHND
bGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fQmFyUHJvcF9pZF07IDsgOyBkLm1Qcm90b0NoYWlu
SW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NQmFyUHJvcD46OkdldElJRCgpOyBkLm1I
YXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3Rb
XSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUJhclByb3A+OjpHZXRJSUQoKSwKICAwIH07
IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0
YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fSGlzdG9yeV9pZF07IDsgOyBkLm1Q
cm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NSGlzdG9yeT46OkdldElJ
RCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJm
YWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSGlzdG9yeT46OkdldElJ
RCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01D
bGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19TY3JlZW5faWRd
OyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTVNjcmVl
bj46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJ
RCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTVNjcmVlbj46
OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsg
bnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19YTUxE
b2N1bWVudF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88
bnNJRE9NWE1MRG9jdW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBz
dGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5m
bzxuc0lET01Eb2N1bWVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NWE1M
RG9jdW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TRG9jdW1lbnQ+
OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTURvY3VtZW50RXZlbnQ+OjpHZXRJ
SUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTURvY3VtZW50U3R5bGU+OjpHZXRJSUQoKSwK
ICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTURvY3VtZW50Vmlldz46OkdldElJRCgpLAogICAgJm5z
Q09NVHlwZUluZm88bnNJRE9NRG9jdW1lbnRSYW5nZT46OkdldElJRCgpLAogICAgJm5zQ09NVHlw
ZUluZm88bnNJRE9NRG9jdW1lbnRUcmF2ZXJzYWw+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJ
bmZvPG5zSURPTURvY3VtZW50WEJMPjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lE
T01FdmVudFRhcmdldD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+
OjpHZXRJSUQoKSwKICB4cGF0aEV2YWx1YXRvcklJRCwgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50
ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0
YVtlRE9NQ2xhc3NJbmZvX0RvY3VtZW50VHlwZV9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJm
YWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NRG9jdW1lbnRUeXBlPjo6R2V0SUlEKCk7IGQubUhh
c0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtd
ID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NRG9jdW1lbnRUeXBlPjo6R2V0SUlEKCksCiAg
ICAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJm
YWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0Ns
YXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19ET01JbXBsZW1lbnRhdGlvbl9pZF07IDsgOyBkLm1Q
cm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NRE9NSW1wbGVtZW50YXRp
b24+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJ
SUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01ET01JbXBs
ZW1lbnRhdGlvbj46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9s
aXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNs
YXNzSW5mb19ET01FeGNlcHRpb25faWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZu
c0NPTVR5cGVJbmZvPG5zSURPTURPTUV4Y2VwdGlvbj46OkdldElJRCgpOyBkLm1IYXNDbGFzc0lu
dGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAg
ICZuc0NPTVR5cGVJbmZvPG5zSURPTURPTUV4Y2VwdGlvbj46OkdldElJRCgpLAogICAgJm5zQ09N
VHlwZUluZm88bnNJRXhjZXB0aW9uPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0g
aW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZv
RGF0YVtlRE9NQ2xhc3NJbmZvX0RvY3VtZW50RnJhZ21lbnRfaWRdOyA7IDsgZC5tUHJvdG9DaGFp
bkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTURvY3VtZW50RnJhZ21lbnQ+OjpHZXRJ
SUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVy
ZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01Eb2N1bWVudEZyYWdtZW50
Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAog
IDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0lu
Zm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19FbGVtZW50X2lkXTsgOyA7
IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01FbGVtZW50Pjo6
R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICpp
bnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudD46Okdl
dElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwK
ICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRl
cmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBz
Q2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0F0dHJfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbklu
dGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUF0dHI+OjpHZXRJSUQoKTsgZC5tSGFzQ2xh
c3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7
CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01BdHRyPjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBl
SW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVy
ZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFb
ZURPTUNsYXNzSW5mb19UZXh0X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnND
T01UeXBlSW5mbzxuc0lET01UZXh0Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0g
MTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlw
ZUluZm88bnNJRE9NVGV4dD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZl
bnRUYXJnZXQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0
SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RP
TUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0NvbW1lbnRf
aWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUNv
bW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3Qg
bnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01Db21t
ZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46Okdl
dElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07
IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0
YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fQ0RBVEFTZWN0aW9uX2lkXTsgOyA7
IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01DREFUQVNlY3Rp
b24+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJ
SUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01DREFUQVNl
Y3Rpb24+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6
R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAogIDAg
fTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9E
YXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b25faWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURP
TVByb2Nlc3NpbmdJbnN0cnVjdGlvbj46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9
IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5
cGVJbmZvPG5zSURPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbj46OkdldElJRCgpLAogICAgJm5zQ09N
VHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZv
PG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNl
X2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9N
Q2xhc3NJbmZvX0VudGl0eV9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09N
VHlwZUluZm88bnNJRE9NRW50aXR5Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0g
MTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlw
ZUluZm88bnNJRE9NRW50aXR5Pjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50
ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0
YVtlRE9NQ2xhc3NJbmZvX0VudGl0eVJlZmVyZW5jZV9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50
ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NRW50aXR5UmVmZXJlbmNlPjo6R2V0SUlEKCk7
IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2Vf
bGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NRW50aXR5UmVmZXJlbmNlPjo6R2V0
SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RP
TUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX05vdGF0aW9u
X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01O
b3RhdGlvbj46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25z
dCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5v
dGF0aW9uPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7
IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJ
bmZvX05vZGVMaXN0X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBl
SW5mbzxuc0lET01Ob2RlTGlzdD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7
IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJ
bmZvPG5zSURPTU5vZGVMaXN0Pjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50
ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0
YVtlRE9NQ2xhc3NJbmZvX05hbWVkTm9kZU1hcF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJm
YWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NTmFtZWROb2RlTWFwPjo6R2V0SUlEKCk7IGQubUhh
c0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtd
ID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTmFtZWROb2RlTWFwPjo6R2V0SUlEKCksCiAg
MCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5m
b0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0RvY3VtZW50U3R5bGVTaGVl
dExpc3RfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5z
SURPTVN0eWxlU2hlZXRMaXN0Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMDsg
c3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewoKICAgICZuc0NPTVR5cGVJ
bmZvPG5zSURPTVN0eWxlU2hlZXRMaXN0Pjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2Vz
ID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJ
bmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0V2ZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZh
Y2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0lu
dGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAg
ICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TRXZlbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJ
bmZvPG5zSURPTUtleUV2ZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01N
b3VzZUV2ZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU1VJRXZlbnQ+
OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7
IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fTXV0
YXRpb25FdmVudF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUlu
Zm88bnNJRE9NTXV0YXRpb25FdmVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9
IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5
cGVJbmZvPG5zSURPTU11dGF0aW9uRXZlbnQ+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFj
ZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFz
c0luZm9EYXRhW2VET01DbGFzc0luZm9fSFRNTERvY3VtZW50X2lkXTsgOyA7IGQubVByb3RvQ2hh
aW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MRG9jdW1lbnQ+OjpHZXRJSUQo
KTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFj
ZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MRG9jdW1lbnQ+OjpHZXRJ
SUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTERvY3VtZW50Pjo6R2V0SUlEKCks
CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0RvY3VtZW50Pjo6R2V0SUlEKCksCiAgICAmbnND
T01UeXBlSW5mbzxuc0lET01Eb2N1bWVudEV2ZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBl
SW5mbzxuc0lET01Eb2N1bWVudFN0eWxlPjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxu
c0lET01Eb2N1bWVudFZpZXc+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTURv
Y3VtZW50UmFuZ2U+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTURvY3VtZW50
VHJhdmVyc2FsPjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01Eb2N1bWVudFhC
TD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJ
SUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgeHBhdGhF
dmFsdWF0b3JJSUQsIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsg
bnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19IVE1M
Q29sbGVjdGlvbl9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUlu
Zm88bnNJRE9NSFRNTENvbGxlY3Rpb24+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2Ug
PSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01U
eXBlSW5mbzxuc0lET01Ob2RlTGlzdD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJ
RE9NSFRNTENvbGxlY3Rpb24+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRl
cmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRh
W2VET01DbGFzc0luZm9fSFRNTE9wdGlvbkNvbGxlY3Rpb25faWRdOyA7IDsgZC5tUHJvdG9DaGFp
bkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxDb2xsZWN0aW9uPjo6R2V0SUlE
KCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMDsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZh
Y2VfbGlzdFtdID0gewoKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTE9wdGlvbkNvbGxl
Y3Rpb24+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxDb2xsZWN0aW9u
Pjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAg
eyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hU
TUxGb3JtQ29udHJvbENvbGxlY3Rpb25faWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9
ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxDb2xsZWN0aW9uPjo6R2V0SUlEKCk7IGQubUhhc0Ns
YXNzSW50ZXJmYWNlID0gMDsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0g
ewoKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxDb2xsZWN0aW9uPjo6R2V0SUlEKCksCiAg
ICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxGb3JtQ29udHJvbExpc3Q+OjpHZXRJSUQoKSwK
ICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJ
bmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fSFRNTEdlbmVyaWNDb2xs
ZWN0aW9uX2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxu
c0lET01IVE1MQ29sbGVjdGlvbj46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDA7
IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKCiAgICAmbnNDT01UeXBl
SW5mbzxuc0lET01IVE1MQ29sbGVjdGlvbj46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNl
cyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNz
SW5mb0RhdGFbZURPTUNsYXNzSW5mb19IVE1MQW5jaG9yRWxlbWVudF9pZF07IDsgOyBkLm1Qcm90
b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTEFuY2hvckVsZW1lbnQ+
OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQg
KmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MQW5jaG9y
RWxlbWVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNIVE1MQW5jaG9y
RWxlbWVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNIVE1MRWxlbWVu
dD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FbGVtZW50Q1NTSW5saW5lU3R5bGU+
OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwg
Jm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFj
ZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFz
c0luZm9EYXRhW2VET01DbGFzc0luZm9fSFRNTEFwcGxldEVsZW1lbnRfaWRdOyA7IDsgZC5tUHJv
dG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxBcHBsZXRFbGVtZW50
Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlE
ICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTEFwcGxl
dEVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTEVsZW1l
bnQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGluZVN0eWxl
Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0SUlEKCks
ICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZh
Y2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xh
c3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxBcmVhRWxlbWVudF9pZF07IDsgOyBkLm1Qcm90
b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTEFyZWFFbGVtZW50Pjo6
R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICpp
bnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTEFyZWFFbGVt
ZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxBcmVhRWxlbWVu
dD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNIVE1MRWxlbWVudD46Okdl
dElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FbGVtZW50Q1NTSW5saW5lU3R5bGU+OjpHZXRJ
SUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwgJm5zQ09N
VHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBp
bnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9E
YXRhW2VET01DbGFzc0luZm9fSFRNTEJSRWxlbWVudF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50
ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTEJSRWxlbWVudD46OkdldElJRCgpOyBk
Lm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xp
c3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxCUkVsZW1lbnQ+OjpHZXRJSUQo
KSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTEVsZW1lbnQ+OjpHZXRJSUQoKSwgJm5z
Q09NVHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGluZVN0eWxlPjo6R2V0SUlEKCksICZuc0NP
TVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5z
SURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xp
c3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xh
c3NJbmZvX0hUTUxCYXNlRWxlbWVudF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0g
Jm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTEJhc2VFbGVtZW50Pjo6R2V0SUlEKCk7IGQubUhhc0Ns
YXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0g
ewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTEJhc2VFbGVtZW50Pjo6R2V0SUlEKCksCiAg
ICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxFbGVtZW50Pjo6R2V0SUlEKCksICZuc0NPTVR5
cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZT46OkdldElJRCgpLCAmbnNDT01UeXBl
SW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET00z
Tm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9
CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5m
b19IVE1MQmFzZUZvbnRFbGVtZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAm
bnNDT01UeXBlSW5mbzxuc0lET01IVE1MQmFzZUZvbnRFbGVtZW50Pjo6R2V0SUlEKCk7IGQubUhh
c0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtd
ID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTEJhc2VGb250RWxlbWVudD46OkdldElJ
RCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNIVE1MRWxlbWVudD46OkdldElJRCgpLCAm
bnNDT01UeXBlSW5mbzxuc0lET01FbGVtZW50Q1NTSW5saW5lU3R5bGU+OjpHZXRJSUQoKSwgJm5z
Q09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88
bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2Vf
bGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01D
bGFzc0luZm9fSFRNTEJvZHlFbGVtZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2Ug
PSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MQm9keUVsZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFz
Q2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10g
PSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MQm9keUVsZW1lbnQ+OjpHZXRJSUQoKSwK
ICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTEVsZW1lbnQ+OjpHZXRJSUQoKSwgJm5zQ09N
VHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGluZVN0eWxlPjo6R2V0SUlEKCksICZuc0NPTVR5
cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURP
TTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7
IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJ
bmZvX0hUTUxCdXR0b25FbGVtZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAm
bnNDT01UeXBlSW5mbzxuc0lET01IVE1MQnV0dG9uRWxlbWVudD46OkdldElJRCgpOyBkLm1IYXND
bGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9
IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxCdXR0b25FbGVtZW50Pjo6R2V0SUlEKCks
CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxCdXR0b25FbGVtZW50Pjo6R2V0SUlEKCks
CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxFbGVtZW50Pjo6R2V0SUlEKCksICZuc0NP
TVR5cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZT46OkdldElJRCgpLCAmbnNDT01U
eXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lE
T00zTm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0
OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNz
SW5mb19IVE1MRExpc3RFbGVtZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAm
bnNDT01UeXBlSW5mbzxuc0lET01IVE1MRExpc3RFbGVtZW50Pjo6R2V0SUlEKCk7IGQubUhhc0Ns
YXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0g
ewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTERMaXN0RWxlbWVudD46OkdldElJRCgpLAog
ICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNIVE1MRWxlbWVudD46OkdldElJRCgpLCAmbnNDT01U
eXBlSW5mbzxuc0lET01FbGVtZW50Q1NTSW5saW5lU3R5bGU+OjpHZXRJSUQoKSwgJm5zQ09NVHlw
ZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9N
M05vZGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsg
fQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0lu
Zm9fSFRNTERlbEVsZW1lbnRfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NP
TVR5cGVJbmZvPG5zSURPTUhUTUxFbGVtZW50Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJm
YWNlID0gMDsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5z
Q09NVHlwZUluZm88bnNJRE9NSFRNTE1vZEVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5
cGVJbmZvPG5zSURPTU5TSFRNTEVsZW1lbnQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJ
RE9NRWxlbWVudENTU0lubGluZVN0eWxlPjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURP
TUV2ZW50VGFyZ2V0Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0
SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RP
TUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxEaXJl
Y3RvcnlFbGVtZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBl
SW5mbzxuc0lET01IVE1MRGlyZWN0b3J5RWxlbWVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0lu
dGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAg
ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxEaXJlY3RvcnlFbGVtZW50Pjo6R2V0SUlEKCksCiAg
ICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxFbGVtZW50Pjo6R2V0SUlEKCksICZuc0NPTVR5
cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZT46OkdldElJRCgpLCAmbnNDT01UeXBl
SW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET00z
Tm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9
CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5m
b19IVE1MRGl2RWxlbWVudF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09N
VHlwZUluZm88bnNJRE9NSFRNTERpdkVsZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRl
cmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAm
bnNDT01UeXBlSW5mbzxuc0lET01IVE1MRGl2RWxlbWVudD46OkdldElJRCgpLAogICAgJm5zQ09N
VHlwZUluZm88bnNJRE9NTlNIVE1MRWxlbWVudD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxu
c0lET01FbGVtZW50Q1NTSW5saW5lU3R5bGU+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJ
RE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpH
ZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5z
RE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fSFRNTEVt
YmVkRWxlbWVudF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUlu
Zm88bnNJRE9NSFRNTEVtYmVkRWxlbWVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFj
ZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NP
TVR5cGVJbmZvPG5zSURPTUhUTUxFbWJlZEVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5
cGVJbmZvPG5zSURPTU5TSFRNTEVsZW1lbnQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJ
RE9NRWxlbWVudENTU0lubGluZVN0eWxlPjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURP
TUV2ZW50VGFyZ2V0Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0
SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RP
TUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxGaWVs
ZFNldEVsZW1lbnRfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJ
bmZvPG5zSURPTUhUTUxGaWVsZFNldEVsZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRl
cmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAm
bnNDT01UeXBlSW5mbzxuc0lET01IVE1MRmllbGRTZXRFbGVtZW50Pjo6R2V0SUlEKCksCiAgICAm
bnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxFbGVtZW50Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJ
bmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZT46OkdldElJRCgpLCAmbnNDT01UeXBlSW5m
bzxuc0lET01FdmVudFRhcmdldD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9k
ZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9Cgog
IHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19I
VE1MRm9udEVsZW1lbnRfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5
cGVJbmZvPG5zSURPTUhUTUxGb250RWxlbWVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVy
ZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZu
c0NPTVR5cGVJbmZvPG5zSURPTUhUTUxGb250RWxlbWVudD46OkdldElJRCgpLAogICAgJm5zQ09N
VHlwZUluZm88bnNJRE9NTlNIVE1MRWxlbWVudD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxu
c0lET01FbGVtZW50Q1NTSW5saW5lU3R5bGU+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJ
RE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpH
ZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5z
RE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fSFRNTEZv
cm1FbGVtZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5m
bzxuc0lET01IVE1MRm9ybUVsZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2Ug
PSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01U
eXBlSW5mbzxuc0lET01IVE1MRm9ybUVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJ
bmZvPG5zSURPTU5TSFRNTEZvcm1FbGVtZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5m
bzxuc0lET01OU0hUTUxFbGVtZW50Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUVs
ZW1lbnRDU1NJbmxpbmVTdHlsZT46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVu
dFRhcmdldD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgp
LAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFz
c0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19IVE1MRnJhbWVFbGVt
ZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lE
T01IVE1MRnJhbWVFbGVtZW50Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsg
c3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUlu
Zm88bnNJRE9NSFRNTEZyYW1lRWxlbWVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88
bnNJRE9NTlNIVE1MRnJhbWVFbGVtZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxu
c0lET01OU0hUTUxFbGVtZW50Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUVsZW1l
bnRDU1NJbmxpbmVTdHlsZT46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFRh
cmdldD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAog
IDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0lu
Zm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19IVE1MRnJhbWVTZXRFbGVt
ZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lE
T01IVE1MRnJhbWVTZXRFbGVtZW50Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0g
MTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlw
ZUluZm88bnNJRE9NSFRNTEZyYW1lU2V0RWxlbWVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlw
ZUluZm88bnNJRE9NTlNIVE1MRWxlbWVudD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lE
T01FbGVtZW50Q1NTSW5saW5lU3R5bGU+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9N
RXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJ
SUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9N
Q2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fSFRNTEhSRWxl
bWVudF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJ
RE9NSFRNTEhSRWxlbWVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0
YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZv
PG5zSURPTUhUTUxIUkVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURP
TU5TSFRNTEVsZW1lbnQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudENT
U0lubGluZVN0eWxlPjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0
Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9
OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0Rh
dGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxIZWFkRWxlbWVudF9pZF07
IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTEhl
YWRFbGVtZW50Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNv
bnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9N
SFRNTEhlYWRFbGVtZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hU
TUxFbGVtZW50Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxp
bmVTdHlsZT46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46Okdl
dElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5t
SW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZk
ID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19IVE1MSGVhZGluZ0VsZW1lbnRfaWRdOyA7
IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxIZWFk
aW5nRWxlbWVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBj
b25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURP
TUhUTUxIZWFkaW5nRWxlbWVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9N
TlNIVE1MRWxlbWVudD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FbGVtZW50Q1NT
SW5saW5lU3R5bGU+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+
OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07
IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0
YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fSFRNTEh0bWxFbGVtZW50X2lkXTsg
OyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MSHRt
bEVsZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29u
c3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01I
VE1MSHRtbEVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRN
TEVsZW1lbnQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGlu
ZVN0eWxlPjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0
SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1J
bnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQg
PSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxJRnJhbWVFbGVtZW50X2lkXTsgOyA7
IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MSUZyYW1l
RWxlbWVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25z
dCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhU
TUxJRnJhbWVFbGVtZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hU
TUxGcmFtZUVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRN
TEVsZW1lbnQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGlu
ZVN0eWxlPjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0
SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1J
bnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQg
PSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxJbWFnZUVsZW1lbnRfaWRdOyA7IDsg
ZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxJbWFnZUVs
ZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3Qg
bnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1M
SW1hZ2VFbGVtZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxJ
bWFnZUVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTEVs
ZW1lbnQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGluZVN0
eWxlPjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0SUlE
KCksICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRl
cmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBz
Q2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxJbnB1dEVsZW1lbnRfaWRdOyA7IDsgZC5t
UHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxJbnB1dEVsZW1l
bnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJ
SUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MSW5w
dXRFbGVtZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxJbnB1
dEVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTEVsZW1l
bnQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGluZVN0eWxl
Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0SUlEKCks
ICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZh
Y2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xh
c3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxJbnNFbGVtZW50X2lkXTsgOyA7IGQubVByb3Rv
Q2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MRWxlbWVudD46OkdldElJ
RCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDA7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJm
YWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxNb2RFbGVtZW50Pjo6
R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxFbGVtZW50Pjo6R2V0SUlE
KCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZT46OkdldElJRCgp
LCAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJRCgpLCAmbnNDT01UeXBl
SW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVy
ZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFb
ZURPTUNsYXNzSW5mb19IVE1MSXNJbmRleEVsZW1lbnRfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbklu
dGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxJc0luZGV4RWxlbWVudD46OkdldElJ
RCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJm
YWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxJc0luZGV4RWxlbWVu
dD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNIVE1MRWxlbWVudD46Okdl
dElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FbGVtZW50Q1NTSW5saW5lU3R5bGU+OjpHZXRJ
SUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwgJm5zQ09N
VHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBp
bnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9E
YXRhW2VET01DbGFzc0luZm9fSFRNTExJRWxlbWVudF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50
ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTExJRWxlbWVudD46OkdldElJRCgpOyBk
Lm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xp
c3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxMSUVsZW1lbnQ+OjpHZXRJSUQo
KSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTEVsZW1lbnQ+OjpHZXRJSUQoKSwgJm5z
Q09NVHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGluZVN0eWxlPjo6R2V0SUlEKCksICZuc0NP
TVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5z
SURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xp
c3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xh
c3NJbmZvX0hUTUxMYWJlbEVsZW1lbnRfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9
ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxMYWJlbEVsZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFz
Q2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10g
PSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MTGFiZWxFbGVtZW50Pjo6R2V0SUlEKCks
CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxFbGVtZW50Pjo6R2V0SUlEKCksICZuc0NP
TVR5cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZT46OkdldElJRCgpLCAmbnNDT01U
eXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lE
T00zTm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0
OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNz
SW5mb19IVE1MTGVnZW5kRWxlbWVudF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0g
Jm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTExlZ2VuZEVsZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFz
Q2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10g
PSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MTGVnZW5kRWxlbWVudD46OkdldElJRCgp
LAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNIVE1MRWxlbWVudD46OkdldElJRCgpLCAmbnND
T01UeXBlSW5mbzxuc0lET01FbGVtZW50Q1NTSW5saW5lU3R5bGU+OjpHZXRJSUQoKSwgJm5zQ09N
VHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJ
RE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlz
dDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFz
c0luZm9fSFRNTExpbmtFbGVtZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAm
bnNDT01UeXBlSW5mbzxuc0lET01IVE1MTGlua0VsZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xh
c3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7
CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MTGlua0VsZW1lbnQ+OjpHZXRJSUQoKSwKICAg
ICZuc0NPTVR5cGVJbmZvPG5zSURPTUxpbmtTdHlsZT46OkdldElJRCgpLAogICAgJm5zQ09NVHlw
ZUluZm88bnNJRE9NTlNIVE1MRWxlbWVudD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lE
T01FbGVtZW50Q1NTSW5saW5lU3R5bGU+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9N
RXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJ
SUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9N
Q2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fSFRNTE1hcEVs
ZW1lbnRfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5z
SURPTUhUTUxNYXBFbGVtZW50Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsg
c3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUlu
Zm88bnNJRE9NSFRNTE1hcEVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5z
SURPTU5TSFRNTEVsZW1lbnQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVu
dENTU0lubGluZVN0eWxlPjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFy
Z2V0Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAg
MCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5m
b0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxNZW51RWxlbWVudF9p
ZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NSFRN
TE1lbnVFbGVtZW50Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGlj
IGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJ
RE9NSFRNTE1lbnVFbGVtZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01O
U0hUTUxFbGVtZW50Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJ
bmxpbmVTdHlsZT46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46
OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAogIDAgfTsg
ZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRh
ICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19IVE1MTWV0YUVsZW1lbnRfaWRdOyA7
IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxNZXRh
RWxlbWVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25z
dCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhU
TUxNZXRhRWxlbWVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNIVE1M
RWxlbWVudD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FbGVtZW50Q1NTSW5saW5l
U3R5bGU+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJ
SUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUlu
dGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9
IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fSFRNTE1vZEVsZW1lbnRfaWRdOyA7IDsgZC5t
UHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxNb2RFbGVtZW50
Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlE
ICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTE1vZEVs
ZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTEVsZW1lbnQ+
OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGluZVN0eWxlPjo6
R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0SUlEKCksICZu
c0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2Vz
ID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJ
bmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxPTGlzdEVsZW1lbnRfaWRdOyA7IDsgZC5tUHJvdG9D
aGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxPTGlzdEVsZW1lbnQ+OjpH
ZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmlu
dGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MT0xpc3RFbGVt
ZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxFbGVtZW50Pjo6
R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZT46Okdl
dElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJRCgpLCAmbnND
T01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9
IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5m
b0RhdGFbZURPTUNsYXNzSW5mb19IVE1MT2JqZWN0RWxlbWVudF9pZF07IDsgOyBkLm1Qcm90b0No
YWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTE9iamVjdEVsZW1lbnQ+OjpH
ZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmlu
dGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MT2JqZWN0RWxl
bWVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNIVE1MRWxlbWVudD46
OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FbGVtZW50Q1NTSW5saW5lU3R5bGU+OjpH
ZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwgJm5z
Q09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMg
PSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0lu
Zm9EYXRhW2VET01DbGFzc0luZm9fSFRNTE9wdEdyb3VwRWxlbWVudF9pZF07IDsgOyBkLm1Qcm90
b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTE9wdEdyb3VwRWxlbWVu
dD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJ
RCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxPcHRH
cm91cEVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTEVs
ZW1lbnQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGluZVN0
eWxlPjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0SUlE
KCksICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRl
cmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBz
Q2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxPcHRpb25FbGVtZW50X2lkXTsgOyA7IGQu
bVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MT3B0aW9uRWxl
bWVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBu
c0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxP
cHRpb25FbGVtZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxF
bGVtZW50Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVT
dHlsZT46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJ
RCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50
ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0g
c0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19IVE1MUGFyYWdyYXBoRWxlbWVudF9pZF07IDsg
OyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTFBhcmFn
cmFwaEVsZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMg
Y29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lE
T01IVE1MUGFyYWdyYXBoRWxlbWVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJ
RE9NTlNIVE1MRWxlbWVudD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FbGVtZW50
Q1NTSW5saW5lU3R5bGU+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJn
ZXQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAw
IH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZv
RGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fSFRNTFBhcmFtRWxlbWVudF9p
ZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NSFRN
TFBhcmFtRWxlbWVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRp
YyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5z
SURPTUhUTUxQYXJhbUVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURP
TU5TSFRNTEVsZW1lbnQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudENT
U0lubGluZVN0eWxlPjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0
Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9
OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0Rh
dGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxQcmVFbGVtZW50X2lkXTsg
OyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MUHJl
RWxlbWVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25z
dCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhU
TUxQcmVFbGVtZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxF
bGVtZW50Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVT
dHlsZT46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJ
RCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50
ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0g
c0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19IVE1MUXVvdGVFbGVtZW50X2lkXTsgOyA7IGQu
bVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MUXVvdGVFbGVt
ZW50Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5z
SUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTFF1
b3RlRWxlbWVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNIVE1MRWxl
bWVudD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FbGVtZW50Q1NTSW5saW5lU3R5
bGU+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQo
KSwgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVy
ZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHND
bGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fSFRNTFNjcmlwdEVsZW1lbnRfaWRdOyA7IDsgZC5t
UHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxTY3JpcHRFbGVt
ZW50Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5z
SUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTFNj
cmlwdEVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTEVs
ZW1lbnQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGluZVN0
eWxlPjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0SUlE
KCksICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRl
cmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBz
Q2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxTZWxlY3RFbGVtZW50X2lkXTsgOyA7IGQu
bVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MU2VsZWN0RWxl
bWVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBu
c0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxT
ZWxlY3RFbGVtZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxT
ZWxlY3RFbGVtZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU1hCTEZv
cm1Db250cm9sPjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxFbGVt
ZW50Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVTdHls
ZT46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJRCgp
LCAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJm
YWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0Ns
YXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19IVE1MU3BhY2VyRWxlbWVudF9pZF07IDsgOyBkLm1Q
cm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTEVsZW1lbnQ+OjpH
ZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAwOyBzdGF0aWMgY29uc3QgbnNJSUQgKmlu
dGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MRWxlbWVudD46
OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNIVE1MRWxlbWVudD46OkdldElJ
RCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FbGVtZW50Q1NTSW5saW5lU3R5bGU+OjpHZXRJSUQo
KSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlw
ZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRl
cmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRh
W2VET01DbGFzc0luZm9fSFRNTFNwYW5FbGVtZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRl
cmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MRWxlbWVudD46OkdldElJRCgpOyBkLm1I
YXNDbGFzc0ludGVyZmFjZSA9IDA7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3Rb
XSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxFbGVtZW50Pjo6R2V0SUlEKCksCiAg
ICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxFbGVtZW50Pjo6R2V0SUlEKCksICZuc0NPTVR5
cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZT46OkdldElJRCgpLCAmbnNDT01UeXBl
SW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET00z
Tm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9
CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5m
b19IVE1MU3R5bGVFbGVtZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnND
T01UeXBlSW5mbzxuc0lET01IVE1MU3R5bGVFbGVtZW50Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNz
SW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewog
ICAgJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTFN0eWxlRWxlbWVudD46OkdldElJRCgpLAogICAg
Jm5zQ09NVHlwZUluZm88bnNJRE9NTGlua1N0eWxlPjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBl
SW5mbzxuc0lET01OU0hUTUxFbGVtZW50Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURP
TUVsZW1lbnRDU1NJbmxpbmVTdHlsZT46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01F
dmVudFRhcmdldD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJ
RCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01D
bGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19IVE1MVGFibGVD
YXB0aW9uRWxlbWVudF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlw
ZUluZm88bnNJRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xh
c3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7
CgogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+OjpHZXRJ
SUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTEVsZW1lbnQ+OjpHZXRJSUQoKSwg
Jm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGluZVN0eWxlPjo6R2V0SUlEKCksICZu
c0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZv
PG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNl
X2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9N
Q2xhc3NJbmZvX0hUTUxUYWJsZUNlbGxFbGVtZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRl
cmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MVGFibGVDZWxsRWxlbWVudD46OkdldElJ
RCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJm
YWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxUYWJsZUNlbGxFbGVt
ZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxFbGVtZW50Pjo6
R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZT46Okdl
dElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJRCgpLCAmbnND
T01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9
IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5m
b0RhdGFbZURPTUNsYXNzSW5mb19IVE1MVGFibGVDb2xFbGVtZW50X2lkXTsgOyA7IGQubVByb3Rv
Q2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MVGFibGVDb2xFbGVtZW50
Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlE
ICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTFRhYmxl
Q29sRWxlbWVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNIVE1MRWxl
bWVudD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FbGVtZW50Q1NTSW5saW5lU3R5
bGU+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQo
KSwgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVy
ZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKCgoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9
IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fSFRNTFRhYmxlQ29sR3JvdXBFbGVtZW50X2lk
XTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1M
VGFibGVDb2xFbGVtZW50Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3Rh
dGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88
bnNJRE9NSFRNTFRhYmxlQ29sRWxlbWVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88
bnNJRE9NTlNIVE1MRWxlbWVudD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FbGVt
ZW50Q1NTSW5saW5lU3R5bGU+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRU
YXJnZXQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwK
ICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJ
bmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fSFRNTFRhYmxlRWxlbWVu
dF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9N
SFRNTFRhYmxlRWxlbWVudD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0
YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZv
PG5zSURPTUhUTUxUYWJsZUVsZW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5z
SURPTU5TSFRNTEVsZW1lbnQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVu
dENTU0lubGluZVN0eWxlPjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFy
Z2V0Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAg
MCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5m
b0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxUYWJsZVJvd0VsZW1l
bnRfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURP
TUhUTUxUYWJsZVJvd0VsZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAx
OyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBl
SW5mbzxuc0lET01IVE1MVGFibGVSb3dFbGVtZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBl
SW5mbzxuc0lET01OU0hUTUxFbGVtZW50Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURP
TUVsZW1lbnRDU1NJbmxpbmVTdHlsZT46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01F
dmVudFRhcmdldD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJ
RCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01D
bGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19IVE1MVGFibGVT
ZWN0aW9uRWxlbWVudF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlw
ZUluZm88bnNJRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xh
c3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7
CgogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+OjpHZXRJ
SUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTEVsZW1lbnQ+OjpHZXRJSUQoKSwg
Jm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGluZVN0eWxlPjo6R2V0SUlEKCksICZu
c0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0SUlEKCksICZuc0NPTVR5cGVJbmZv
PG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNl
X2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9N
Q2xhc3NJbmZvX0hUTUxUZXh0QXJlYUVsZW1lbnRfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVy
ZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxUZXh0QXJlYUVsZW1lbnQ+OjpHZXRJSUQo
KTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFj
ZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MVGV4dEFyZWFFbGVtZW50
Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxUZXh0QXJlYUVsZW1l
bnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTEVsZW1lbnQ+OjpH
ZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRWxlbWVudENTU0lubGluZVN0eWxlPjo6R2V0
SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0SUlEKCksICZuc0NP
TVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0g
aW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZv
RGF0YVtlRE9NQ2xhc3NJbmZvX0hUTUxUaXRsZUVsZW1lbnRfaWRdOyA7IDsgZC5tUHJvdG9DaGFp
bkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxUaXRsZUVsZW1lbnQ+OjpHZXRJ
SUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVy
ZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MVGl0bGVFbGVtZW50
Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxFbGVtZW50Pjo6R2V0
SUlEKCksICZuc0NPTVR5cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZT46OkdldElJ
RCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJRCgpLCAmbnNDT01U
eXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGlu
dGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0Rh
dGFbZURPTUNsYXNzSW5mb19IVE1MVUxpc3RFbGVtZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5J
bnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MVUxpc3RFbGVtZW50Pjo6R2V0SUlE
KCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZh
Y2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NSFRNTFVMaXN0RWxlbWVudD46
OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNIVE1MRWxlbWVudD46OkdldElJ
RCgpLCAmbnNDT01UeXBlSW5mbzxuc0lET01FbGVtZW50Q1NTSW5saW5lU3R5bGU+OjpHZXRJSUQo
KSwgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlw
ZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRl
cmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRh
W2VET01DbGFzc0luZm9fSFRNTFVua25vd25FbGVtZW50X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5J
bnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01IVE1MRWxlbWVudD46OkdldElJRCgpOyBk
Lm1IYXNDbGFzc0ludGVyZmFjZSA9IDA7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xp
c3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxFbGVtZW50Pjo6R2V0SUlEKCks
CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0hUTUxFbGVtZW50Pjo6R2V0SUlEKCksICZuc0NP
TVR5cGVJbmZvPG5zSURPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZT46OkdldElJRCgpLCAmbnNDT01U
eXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lE
T00zTm9kZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0
OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNz
SW5mb19IVE1MV0JSRWxlbWVudF9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5z
Q09NVHlwZUluZm88bnNJRE9NSFRNTEVsZW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRl
cmZhY2UgPSAwOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAm
bnNDT01UeXBlSW5mbzxuc0lET01IVE1MRWxlbWVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlw
ZUluZm88bnNJRE9NTlNIVE1MRWxlbWVudD46OkdldElJRCgpLCAmbnNDT01UeXBlSW5mbzxuc0lE
T01FbGVtZW50Q1NTSW5saW5lU3R5bGU+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9N
RXZlbnRUYXJnZXQ+OjpHZXRJSUQoKSwgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJ
SUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9N
Q2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fQ1NTU3R5bGVS
dWxlX2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lE
T01DU1NTdHlsZVJ1bGU+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0
aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxu
c0lET01DU1NTdHlsZVJ1bGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRl
cmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRh
W2VET01DbGFzc0luZm9fQ1NTQ2hhcnNldFJ1bGVfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVy
ZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUNTU0NoYXJzZXRSdWxlPjo6R2V0SUlEKCk7IGQu
bUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlz
dFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NQ1NTQ2hhcnNldFJ1bGU+OjpHZXRJSUQo
KSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xh
c3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fQ1NTSW1wb3J0UnVs
ZV9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9N
Q1NTSW1wb3J0UnVsZT46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRp
YyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5z
SURPTUNTU0ltcG9ydFJ1bGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRl
cmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRh
W2VET01DbGFzc0luZm9fQ1NTTWVkaWFSdWxlX2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZh
Y2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01DU1NNZWRpYVJ1bGU+OjpHZXRJSUQoKTsgZC5tSGFz
Q2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10g
PSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01DU1NNZWRpYVJ1bGU+OjpHZXRJSUQoKSwKICAw
IH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZv
RGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fQ1NTTmFtZVNwYWNlUnVsZV9p
ZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NQ1NT
UnVsZT46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDA7IHN0YXRpYyBjb25zdCBu
c0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUNTU1J1
bGU+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoK
ICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9f
Q1NTUnVsZUxpc3RfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJ
bmZvPG5zSURPTUNTU1J1bGVMaXN0Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0g
MTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlw
ZUluZm88bnNJRE9NQ1NTUnVsZUxpc3Q+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMg
PSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0lu
Zm9EYXRhW2VET01DbGFzc0luZm9fQ1NTR3JvdXBSdWxlUnVsZUxpc3RfaWRdOyA7IDsgZC5tUHJv
dG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUNTU1J1bGVMaXN0Pjo6R2V0
SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMDsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRl
cmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NQ1NTUnVsZUxpc3Q+OjpH
ZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5z
RE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fTWVkaWFM
aXN0X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lE
T01NZWRpYUxpc3Q+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMg
Y29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lE
T01NZWRpYUxpc3Q+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2Vf
bGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01D
bGFzc0luZm9fU3R5bGVTaGVldExpc3RfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9
ICZuc0NPTVR5cGVJbmZvPG5zSURPTVN0eWxlU2hlZXRMaXN0Pjo6R2V0SUlEKCk7IGQubUhhc0Ns
YXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0g
ewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NU3R5bGVTaGVldExpc3Q+OjpHZXRJSUQoKSwKICAw
IH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZv
RGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fQ1NTU3R5bGVTaGVldF9pZF07
IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NQ1NTU3R5
bGVTaGVldD46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25z
dCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUNT
U1N0eWxlU2hlZXQ+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2Vf
bGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01D
bGFzc0luZm9fQ1NTU3R5bGVEZWNsYXJhdGlvbl9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJm
YWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbj46OkdldElJRCgp
OyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNl
X2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUNTU1N0eWxlRGVjbGFyYXRpb24+
OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUNTUzJQcm9wZXJ0aWVzPjo6R2V0
SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0NTUzJQcm9wZXJ0aWVzPjo6R2V0SUlE
KCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNs
YXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0NvbXB1dGVkQ1NT
U3R5bGVEZWNsYXJhdGlvbl9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09N
VHlwZUluZm88bnNJRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbj46OkdldElJRCgpOyBkLm1IYXNDbGFz
c0ludGVyZmFjZSA9IDA7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsK
CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01DU1NTdHlsZURlY2xhcmF0aW9uPjo6R2V0SUlEKCks
CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01DU1MyUHJvcGVydGllcz46OkdldElJRCgpLAogICAg
Jm5zQ09NVHlwZUluZm88bnNJRE9NTlNDU1MyUHJvcGVydGllcz46OkdldElJRCgpLAogIDAgfTsg
ZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRh
ICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19ST0NTU1ByaW1pdGl2ZVZhbHVlX2lk
XTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01DU1NQ
cmltaXRpdmVWYWx1ZT46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDA7IHN0YXRp
YyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKCiAgICAmbnNDT01UeXBlSW5mbzxu
c0lET01DU1NQcmltaXRpdmVWYWx1ZT46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9
IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5m
b0RhdGFbZURPTUNsYXNzSW5mb19DU1NWYWx1ZUxpc3RfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbklu
dGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUNTU1ZhbHVlTGlzdD46OkdldElJRCgpOyBk
Lm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xp
c3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUNTU1ZhbHVlTGlzdD46OkdldElJRCgp
LAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFz
c0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19DU1NSZWN0X2lkXTsg
OyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01SZWN0Pjo6
R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICpp
bnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NUmVjdD46OkdldElJ
RCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01D
bGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19DU1NSR0JDb2xv
cl9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9N
UkdCQ29sb3I+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29u
c3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01S
R0JDb2xvcj46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0
OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNz
SW5mb19SYW5nZV9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUlu
Zm88bnNJRE9NUmFuZ2U+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0
aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxu
c0lET01SYW5nZT46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNSYW5nZT46
OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsg
bnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19UcmVl
V2Fsa2VyX2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxu
c0lET01UcmVlV2Fsa2VyPjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3Rh
dGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88
bnNJRE9NVHJlZVdhbGtlcj46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNlcyA9IGludGVy
ZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNzSW5mb0RhdGFb
ZURPTUNsYXNzSW5mb19TZWxlY3Rpb25faWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9
ICZuc0NPTVR5cGVJbmZvPG5zSVNlbGVjdGlvbj46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVy
ZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZu
c0NPTVR5cGVJbmZvPG5zSVNlbGVjdGlvbj46OkdldElJRCgpLAogIDAgfTsgZC5tSW50ZXJmYWNl
cyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRhICZkID0gc0NsYXNz
SW5mb0RhdGFbZURPTUNsYXNzSW5mb19YVUxEb2N1bWVudF9pZF07IDsgOyBkLm1Qcm90b0NoYWlu
SW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NWFVMRG9jdW1lbnQ+OjpHZXRJSUQoKTsg
ZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9s
aXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01YVUxEb2N1bWVudD46OkdldElJRCgp
LAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTlNEb2N1bWVudD46OkdldElJRCgpLAogICAgJm5z
Q09NVHlwZUluZm88bnNJRE9NRG9jdW1lbnRFdmVudD46OkdldElJRCgpLAogICAgJm5zQ09NVHlw
ZUluZm88bnNJRE9NRG9jdW1lbnRWaWV3Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxu
c0lET01Eb2N1bWVudFhCTD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NRG9j
dW1lbnRTdHlsZT46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NRG9jdW1lbnRS
YW5nZT46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NRG9jdW1lbnRUcmF2ZXJz
YWw+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUV2ZW50VGFyZ2V0Pjo6R2V0
SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET00zTm9kZT46OkdldElJRCgpLAogIDAgfTsg
ZC5tSW50ZXJmYWNlcyA9IGludGVyZmFjZV9saXN0OyB9CgogIHsgbnNET01DbGFzc0luZm9EYXRh
ICZkID0gc0NsYXNzSW5mb0RhdGFbZURPTUNsYXNzSW5mb19YVUxFbGVtZW50X2lkXTsgOyA7IGQu
bVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01YVUxFbGVtZW50Pjo6
R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICpp
bnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NWFVMRWxlbWVudD46
OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnRUYXJnZXQ+OjpHZXRJSUQo
KSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xh
c3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fWFVMQ29tbWFuZERp
c3BhdGNoZXJfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZv
PG5zSURPTVhVTENvbW1hbmREaXNwYXRjaGVyPjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJm
YWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5z
Q09NVHlwZUluZm88bnNJRE9NWFVMQ29tbWFuZERpc3BhdGNoZXI+OjpHZXRJSUQoKSwKICAwIH07
IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0
YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fWFVMTm9kZUxpc3RfaWRdOyA7IDsg
ZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTU5vZGVMaXN0Pjo6
R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMDsgc3RhdGljIGNvbnN0IG5zSUlEICpp
bnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTm9kZUxpc3Q+OjpH
ZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5z
RE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fWFVMTmFt
ZWROb2RlTWFwX2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5m
bzxuc0lET01OYW1lZE5vZGVNYXA+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAw
OyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBl
SW5mbzxuc0lET01OYW1lZE5vZGVNYXA+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMg
PSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0lu
Zm9EYXRhW2VET01DbGFzc0luZm9fWFVMQXR0cl9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJm
YWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NQXR0cj46OkdldElJRCgpOyBkLm1IYXNDbGFzc0lu
dGVyZmFjZSA9IDA7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAg
ICZuc0NPTVR5cGVJbmZvPG5zSURPTUF0dHI+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFj
ZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFz
c0luZm9EYXRhW2VET01DbGFzc0luZm9fWFVMQ29udHJvbGxlcnNfaWRdOyA7IDsgZC5tUHJvdG9D
aGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSUNvbnRyb2xsZXJzPjo6R2V0SUlEKCk7
IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMDsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2Vf
bGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJQ29udHJvbGxlcnM+OjpHZXRJSUQoKSwK
ICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJ
bmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fQm94T2JqZWN0X2lkXTsg
OyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lCb3hPYmplY3Q+
OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQg
KmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lCb3hPYmplY3Q+OjpH
ZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5z
RE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fVHJlZVNl
bGVjdGlvbl9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88
bnNJVHJlZVNlbGVjdGlvbj46OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0
YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZv
PG5zSVRyZWVTZWxlY3Rpb24+OjpHZXRJSUQoKSwKICAwIH07IGQubUludGVyZmFjZXMgPSBpbnRl
cmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRh
W2VET01DbGFzc0luZm9fVHJlZUNvbnRlbnRWaWV3X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRl
cmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lUcmVlQ29udGVudFZpZXc+OjpHZXRJSUQoKTsgZC5t
SGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0
W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lUcmVlQ29udGVudFZpZXc+OjpHZXRJSUQoKSwK
ICAgICZuc0NPTVR5cGVJbmZvPG5zSVRyZWVWaWV3Pjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRl
cmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBz
Q2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0NyeXB0b19pZF07IDsgOyBkLm1Qcm90b0NoYWlu
SW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9NQ3J5cHRvPjo6R2V0SUlEKCk7IGQubUhh
c0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlEICppbnRlcmZhY2VfbGlzdFtd
ID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NQ3J5cHRvPjo6R2V0SUlEKCksCiAgMCB9OyBk
Lm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEg
JmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0NSTUZPYmplY3RfaWRdOyA7IDsgZC5t
UHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUNSTUZPYmplY3Q+OjpH
ZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0aWMgY29uc3QgbnNJSUQgKmlu
dGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01DUk1GT2JqZWN0Pjo6
R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBu
c0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX1BrY3Mx
MV9pZF07IDsgOyBkLm1Qcm90b0NoYWluSW50ZXJmYWNlID0gJm5zQ09NVHlwZUluZm88bnNJRE9N
UGtjczExPjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0
IG5zSUlEICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NUGtj
czExPjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0K
CiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZv
X1hNTFN0eWxlc2hlZXRQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25faWRdOyA7IDsgZC5tUHJvdG9DaGFp
bkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbj46
OkdldElJRCgpOyBkLm1IYXNDbGFzc0ludGVyZmFjZSA9IDA7IHN0YXRpYyBjb25zdCBuc0lJRCAq
aW50ZXJmYWNlX2xpc3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTVByb2Nlc3NpbmdJ
bnN0cnVjdGlvbj46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTGlua1N0eWxl
Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJ
RCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NM05vZGU+OjpHZXRJSUQoKSwKICAwIH07IGQu
bUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQojIDIxNjAgIm5zRE9NQ2xhc3NJbmZvLmNw
cCIKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAmZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0lu
Zm9fQ2hyb21lV2luZG93X2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRlcmZhY2UgPSAmbnNDT01U
eXBlSW5mbzxuc0lET01XaW5kb3c+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAw
OyBzdGF0aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBl
SW5mbzxuc0lET01XaW5kb3c+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUpT
V2luZG93Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01XaW5kb3dJbnRlcm5h
bD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NQ2hyb21lV2luZG93Pjo6R2V0
SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFJlY2VpdmVyPjo6R2V0SUlEKCks
CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01FdmVudFRhcmdldD46OkdldElJRCgpLAogICAgJm5z
Q09NVHlwZUluZm88bnNJRE9NVmlld0NTUz46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88
bnNJRE9NQWJzdHJhY3RWaWV3Pjo6R2V0SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50
ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RPTUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0
YVtlRE9NQ2xhc3NJbmZvX1JhbmdlRXhjZXB0aW9uX2lkXTsgOyA7IGQubVByb3RvQ2hhaW5JbnRl
cmZhY2UgPSAmbnNDT01UeXBlSW5mbzxuc0lET01SYW5nZUV4Y2VwdGlvbj46OkdldElJRCgpOyBk
Lm1IYXNDbGFzc0ludGVyZmFjZSA9IDE7IHN0YXRpYyBjb25zdCBuc0lJRCAqaW50ZXJmYWNlX2xp
c3RbXSA9IHsKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTVJhbmdlRXhjZXB0aW9uPjo6R2V0SUlE
KCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lFeGNlcHRpb24+OjpHZXRJSUQoKSwKICAwIH07IGQu
bUludGVyZmFjZXMgPSBpbnRlcmZhY2VfbGlzdDsgfQoKICB7IG5zRE9NQ2xhc3NJbmZvRGF0YSAm
ZCA9IHNDbGFzc0luZm9EYXRhW2VET01DbGFzc0luZm9fQ29udGVudExpc3RfaWRdOyA7IDsgZC5t
UHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxDb2xsZWN0aW9u
Pjo6R2V0SUlEKCk7IGQubUhhc0NsYXNzSW50ZXJmYWNlID0gMTsgc3RhdGljIGNvbnN0IG5zSUlE
ICppbnRlcmZhY2VfbGlzdFtdID0gewogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NTm9kZUxpc3Q+
OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTUhUTUxDb2xsZWN0aW9uPjo6R2V0
SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KCiAgeyBuc0RP
TUNsYXNzSW5mb0RhdGEgJmQgPSBzQ2xhc3NJbmZvRGF0YVtlRE9NQ2xhc3NJbmZvX0ltYWdlRG9j
dW1lbnRfaWRdOyA7IDsgZC5tUHJvdG9DaGFpbkludGVyZmFjZSA9ICZuc0NPTVR5cGVJbmZvPG5z
SUltYWdlRG9jdW1lbnQ+OjpHZXRJSUQoKTsgZC5tSGFzQ2xhc3NJbnRlcmZhY2UgPSAxOyBzdGF0
aWMgY29uc3QgbnNJSUQgKmludGVyZmFjZV9saXN0W10gPSB7CiAgICAmbnNDT01UeXBlSW5mbzxu
c0lET01IVE1MRG9jdW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSUltYWdl
RG9jdW1lbnQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTU5TSFRNTERvY3Vt
ZW50Pjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01OU0RvY3VtZW50Pjo6R2V0
SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01Eb2N1bWVudEV2ZW50Pjo6R2V0SUlEKCks
CiAgICAmbnNDT01UeXBlSW5mbzxuc0lET01Eb2N1bWVudFN0eWxlPjo6R2V0SUlEKCksCiAgICAm
bnNDT01UeXBlSW5mbzxuc0lET01Eb2N1bWVudFZpZXc+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5
cGVJbmZvPG5zSURPTURvY3VtZW50UmFuZ2U+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZv
PG5zSURPTURvY3VtZW50VHJhdmVyc2FsPjo6R2V0SUlEKCksCiAgICAmbnNDT01UeXBlSW5mbzxu
c0lET01Eb2N1bWVudFhCTD46OkdldElJRCgpLAogICAgJm5zQ09NVHlwZUluZm88bnNJRE9NRXZl
bnRUYXJnZXQ+OjpHZXRJSUQoKSwKICAgICZuc0NPTVR5cGVJbmZvPG5zSURPTTNOb2RlPjo6R2V0
SUlEKCksCiAgMCB9OyBkLm1JbnRlcmZhY2VzID0gaW50ZXJmYWNlX2xpc3Q7IH0KIyAyMjMwICJu
c0RPTUNsYXNzSW5mby5jcHAiCiAgRGVmaW5lU3RhdGljSlNWYWxzKGN4KTsKCiAgUFJJbnQzMiBp
OwoKICBmb3IgKGkgPSAwOyBpIDwgZURPTUNsYXNzSW5mb0lEQ291bnQ7ICsraSkgewogICAgUmVn
aXN0ZXJDbGFzc05hbWUoaSk7CiAgfQoKICBmb3IgKGkgPSAwOyBpIDwgZURPTUNsYXNzSW5mb0lE
Q291bnQ7ICsraSkgewogICAgUmVnaXN0ZXJDbGFzc1Byb3RvcyhpKTsKICB9CgogIFJlZ2lzdGVy
RXh0ZXJuYWxDbGFzc2VzKCk7CgogIHNJc0luaXRpYWxpemVkID0gMTsKCiAgcmV0dXJuIDA7Cn0K
CgpQUkludDMyCm5zRE9NQ2xhc3NJbmZvOjpHZXRBcnJheUluZGV4RnJvbUlkKEpTQ29udGV4dCAq
Y3gsIGpzdmFsIGlkLCBQUkJvb2wgKmFJc051bWJlcikKewogIGpzZG91YmxlIGFycmF5X2luZGV4
OwoKICBpZiAoYUlzTnVtYmVyKSB7CiAgICAqYUlzTnVtYmVyID0gMDsKICB9CgogIGlmICghOjpK
U19WYWx1ZVRvTnVtYmVyKGN4LCBpZCwgJmFycmF5X2luZGV4KSkgewogICAgcmV0dXJuIC0xOwog
IH0KCiAganNpbnQgaSA9IC0xOwoKICBpZiAoISgoKChfX2V4dGVuc2lvbl9fICh7IGpzX2llZWVf
ZG91YmxlX3NoYXBlX3R5cGUgc2hfdTsgc2hfdS52YWx1ZSA9IChhcnJheV9pbmRleCk7IHNoX3Uu
cGFydHMubXN3OyB9KSkgJiAweDdmZjAwMDAwKSAhPSAweDdmZjAwMDAwKSAmJiAhKChfX2V4dGVu
c2lvbl9fICh7IGpzX2llZWVfZG91YmxlX3NoYXBlX3R5cGUgc2hfdTsgc2hfdS52YWx1ZSA9IChh
cnJheV9pbmRleCk7IHNoX3UucGFydHMubXN3OyB9KSkgPT0gMHg4MDAwMDAwMCAmJiAoX19leHRl
bnNpb25fXyAoeyBqc19pZWVlX2RvdWJsZV9zaGFwZV90eXBlIHNoX3U7IHNoX3UudmFsdWUgPSAo
YXJyYXlfaW5kZXgpOyBzaF91LnBhcnRzLmxzdzsgfSkpID09IDApICYmICgoYXJyYXlfaW5kZXgp
ID09IChpID0gKGpzaW50KShhcnJheV9pbmRleCkpKSkpIHsKICAgIHJldHVybiAtMTsKICB9Cgog
IGlmIChhSXNOdW1iZXIpIHsKICAgICphSXNOdW1iZXIgPSAxOwogIH0KCiAgcmV0dXJuIGk7Cn0K
Cm5zcmVzdWx0Cm5zRE9NQ2xhc3NJbmZvOjpHZXRJbnRlcmZhY2VzKFBSVWludDMyICphQ291bnQs
IG5zSUlEICoqKmFBcnJheSkKewogIFBSVWludDMyIGNvdW50ID0gMDsKCiAgd2hpbGUgKG1EYXRh
LT5tSW50ZXJmYWNlc1tjb3VudF0pIHsKICAgIGNvdW50Kys7CiAgfQoKICAqYUNvdW50ID0gY291
bnQ7CgogIGlmICghY291bnQpIHsKICAgICphQXJyYXkgPSAwOwoKICAgIHJldHVybiAwOwogIH0K
CiAgKmFBcnJheSA9IHN0YXRpY19jYXN0PCBuc0lJRCAqKiA+KG5zTWVtb3J5OjpBbGxvYyhjb3Vu
dCAqIHNpemVvZihuc0lJRCAqKSkpOwogIGRvIHsgaWYgKCEoKmFBcnJheSkpIHsgOyByZXR1cm4g
KChuc3Jlc3VsdCkgMHg4MDA3MDAwZUwpOyB9IH0gd2hpbGUgKDApOwoKICBQUlVpbnQzMiBpOwog
IGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICBuc0lJRCAqaWlkID0gc3RhdGljX2Nh
c3Q8IG5zSUlEICogPihuc01lbW9yeTo6Q2xvbmUobURhdGEtPm1JbnRlcmZhY2VzW2ldLCBzaXpl
b2YobnNJSUQpKSk7CgoKICAgIGlmICghaWlkKSB7CiAgICAgIGRvIHsgUFJJbnQzMiBpdGVyXyA9
IFBSSW50MzIoKGkpKTsgd2hpbGUgKC0taXRlcl8gPj0gMCkgbnNNZW1vcnk6OkZyZWUoKCgqYUFy
cmF5KSlbaXRlcl9dKTsgbnNNZW1vcnk6OkZyZWUoKCgqYUFycmF5KSkpOyB9IHdoaWxlICgwKTsK
CiAgICAgIHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDcwMDBlTCk7CiAgICB9CgogICAgKigoKmFB
cnJheSkgKyBpKSA9IGlpZDsKICB9CgogIHJldHVybiAwOwp9Cgpuc3Jlc3VsdApuc0RPTUNsYXNz
SW5mbzo6R2V0SGVscGVyRm9yTGFuZ3VhZ2UoUFJVaW50MzIgbGFuZ3VhZ2UsIG5zSVN1cHBvcnRz
ICoqX3JldHZhbCkKewogIGlmIChsYW5ndWFnZSA9PSBuc0lQcm9ncmFtbWluZ0xhbmd1YWdlOjpK
QVZBU0NSSVBUKSB7CiAgICAqX3JldHZhbCA9IHN0YXRpY19jYXN0PCBuc0lYUENTY3JpcHRhYmxl
ICogPih0aGlzKTsKCiAgICAoKl9yZXR2YWwpLT5BZGRSZWYoKTsKICB9IGVsc2UgewogICAgKl9y
ZXR2YWwgPSAwOwogIH0KCiAgcmV0dXJuIDA7Cn0KCm5zcmVzdWx0Cm5zRE9NQ2xhc3NJbmZvOjpH
ZXRDb250cmFjdElEKGNoYXIgKiphQ29udHJhY3RJRCkKewogICphQ29udHJhY3RJRCA9IDA7Cgog
IHJldHVybiAwOwp9Cgpuc3Jlc3VsdApuc0RPTUNsYXNzSW5mbzo6R2V0Q2xhc3NEZXNjcmlwdGlv
bihjaGFyICoqYUNsYXNzRGVzY3JpcHRpb24pCnsKICByZXR1cm4gR2V0Q2xhc3NOYW1lKGFDbGFz
c0Rlc2NyaXB0aW9uKTsKfQoKbnNyZXN1bHQKbnNET01DbGFzc0luZm86OkdldENsYXNzSUQobnND
SUQgKiphQ2xhc3NJRCkKewogICphQ2xhc3NJRCA9IDA7CiAgcmV0dXJuIDA7Cn0KCm5zcmVzdWx0
Cm5zRE9NQ2xhc3NJbmZvOjpHZXRDbGFzc0lETm9BbGxvYyhuc0NJRCAqYUNsYXNzSUQpCnsKICBy
ZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDA0MDExMUwpOwp9Cgpuc3Jlc3VsdApuc0RPTUNsYXNzSW5m
bzo6R2V0SW1wbGVtZW50YXRpb25MYW5ndWFnZShQUlVpbnQzMiAqYUltcGxMYW5ndWFnZSkKewog
ICphSW1wbExhbmd1YWdlID0gbnNJUHJvZ3JhbW1pbmdMYW5ndWFnZTo6Q1BMVVNQTFVTOwoKICBy
ZXR1cm4gMDsKfQoKbnNyZXN1bHQKbnNET01DbGFzc0luZm86OkdldEZsYWdzKFBSVWludDMyICph
RmxhZ3MpCnsKICAqYUZsYWdzID0gKG5zSUNsYXNzSW5mbzo6TUFJTl9USFJFQURfT05MWSB8IG5z
SUNsYXNzSW5mbzo6RE9NX09CSkVDVCk7CgogIHJldHVybiAwOwp9CgoKCm5zcmVzdWx0Cm5zRE9N
Q2xhc3NJbmZvOjpHZXRDbGFzc05hbWUoY2hhciAqKmFDbGFzc05hbWUpCnsKICAqYUNsYXNzTmFt
ZSA9IG5zQ1JUOjpzdHJkdXAobURhdGEtPm1OYW1lKTsKCiAgcmV0dXJuIDA7Cn0KCm5zcmVzdWx0
Cm5zRE9NQ2xhc3NJbmZvOjpHZXRTY3JpcHRhYmxlRmxhZ3MoUFJVaW50MzIgKmFGbGFncykKewog
ICphRmxhZ3MgPSBtRGF0YS0+bVNjcmlwdGFibGVGbGFnczsKCiAgcmV0dXJuIDA7Cn0KCm5zcmVz
dWx0Cm5zRE9NQ2xhc3NJbmZvOjpQcmVDcmVhdGUobnNJU3VwcG9ydHMgKm5hdGl2ZU9iaiwgSlND
b250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqZ2xvYmFsT2Jq
LCBKU09iamVjdCAqKnBhcmVudE9iaikKewogIDsKCiAgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAw
MGZmZmZMKTsKfQoKbnNyZXN1bHQKbnNET01DbGFzc0luZm86OkNyZWF0ZShuc0lYUENvbm5lY3RX
cmFwcGVkTmF0aXZlICp3cmFwcGVyLAogICAgICAgICAgICAgICAgICAgICAgIEpTQ29udGV4dCAq
Y3gsIEpTT2JqZWN0ICpvYmopCnsKICA7CgogIHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZm
TCk7Cn0KCm5zcmVzdWx0Cm5zRE9NQ2xhc3NJbmZvOjpQb3N0Q3JlYXRlKG5zSVhQQ29ubmVjdFdy
YXBwZWROYXRpdmUgKndyYXBwZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTQ29udGV4
dCAqY3gsIEpTT2JqZWN0ICpvYmopCnsKICBzdGF0aWMgY29uc3QgbnNJSUQgKnNTdXBwb3J0c0lJ
RCA9ICZuc0NPTVR5cGVJbmZvPG5zSVN1cHBvcnRzPjo6R2V0SUlEKCk7CgoKICBpZiAobURhdGEt
Pm1Qcm90b0NoYWluSW50ZXJmYWNlID09IHNTdXBwb3J0c0lJRCB8fAogICAgICAhbURhdGEtPm1Q
cm90b0NoYWluSW50ZXJmYWNlKSB7CiAgICByZXR1cm4gMDsKICB9CgogIEpTT2JqZWN0ICpwcm90
byA9IDA7CgogIHdyYXBwZXItPkdldEpTT2JqZWN0UHJvdG90eXBlKCZwcm90byk7CgogIEpTT2Jq
ZWN0ICpwcm90b19wcm90byA9IDo6SlNfR2V0UHJvdG90eXBlKGN4LCBwcm90byk7CgogIEpTQ2xh
c3MgKnByb3RvX3Byb3RvX2NsYXNzID0gSlNfR2V0Q2xhc3MoY3gsIHByb3RvX3Byb3RvKTsKCiAg
aWYgKCFzT2JqZWN0Q2xhc3MpIHsKICAgIHNPYmplY3RDbGFzcyA9IHByb3RvX3Byb3RvX2NsYXNz
OwogIH0KCiAgaWYgKHByb3RvX3Byb3RvX2NsYXNzICE9IHNPYmplY3RDbGFzcykgewoKCgoKICAg
IHJldHVybiAwOwogIH0KIyAyNDU5ICJuc0RPTUNsYXNzSW5mby5jcHAiCiAgSlNPYmplY3QgKmds
b2JhbCA9IEdldEdsb2JhbEpTT2JqZWN0KGN4LCBvYmopOwoKICBqc3ZhbCB2YWw7CiAgaWYgKCE6
OkpTX0dldFByb3BlcnR5KGN4LCBnbG9iYWwsIG1EYXRhLT5tTmFtZSwgJnZhbCkpIHsKICAgIHJl
dHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7CiAgfQoKICByZXR1cm4gMDsKfQoKbnNyZXN1
bHQKbnNET01DbGFzc0luZm86OkFkZFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUg
KndyYXBwZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09i
amVjdCAqb2JqLCBqc3ZhbCBpZCwganN2YWwgKnZwLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUFJCb29sICpfcmV0dmFsKQp7CiAgOwoKICByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAwZmZm
ZkwpOwp9Cgpuc3Jlc3VsdApuc0RPTUNsYXNzSW5mbzo6RGVsUHJvcGVydHkobnNJWFBDb25uZWN0
V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLCBqc3ZhbCAqdnAsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQUkJvb2wgKl9yZXR2YWwpCnsKICA7CgogIHJldHVybiAoKG5zcmVz
dWx0KSAweDgwMDBmZmZmTCk7Cn0KCm5zcmVzdWx0Cm5zRE9NQ2xhc3NJbmZvOjpHZXRQcm9wZXJ0
eShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsIGpzdmFsICp2
cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCAqX3JldHZhbCkKewogIDsKCiAg
cmV0dXJuIDA7Cn0KCm5zcmVzdWx0Cm5zRE9NQ2xhc3NJbmZvOjpTZXRQcm9wZXJ0eShuc0lYUENv
bm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsIGpzdmFsICp2cCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCAqX3JldHZhbCkKewogIDsKCiAgcmV0dXJuICgo
bnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsKfQoKbnNyZXN1bHQKbnNET01DbGFzc0luZm86OkVudW1l
cmF0ZShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAog
ICAgICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpvYmosIFBSQm9vbCAqX3JldHZhbCkK
ewogIGlmICghc1NlY01hbikKICAgIHJldHVybiAwOwoKCiAgbnNyZXN1bHQgcnYgPQogICAgc1Nl
Y01hbi0+Q2hlY2tQcm9wZXJ0eUFjY2VzcyhjeCwgb2JqLCBtRGF0YS0+bU5hbWUsIHNFbnVtZXJh
dGVfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVhQQ1NlY3VyaXR5TWFu
YWdlcjo6QUNDRVNTX0dFVF9QUk9QRVJUWSk7CgogIGlmICgoKHJ2KSAmIDB4ODAwMDAwMDApKSB7
CgogICAgKl9yZXR2YWwgPSAwOwogIH0KCiAgcmV0dXJuIDA7Cn0KCm5zcmVzdWx0Cm5zRE9NQ2xh
c3NJbmZvOjpOZXdFbnVtZXJhdGUobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2Jq
LCBQUlVpbnQzMiBlbnVtX29wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzdmFsICpz
dGF0ZXAsIGpzaWQgKmlkcCwgUFJCb29sICpfcmV0dmFsKQp7CiAgOwoKICByZXR1cm4gKChuc3Jl
c3VsdCkgMHg4MDAwZmZmZkwpOwp9Cgpuc3Jlc3VsdApuc0RPTUNsYXNzSW5mbzo6UmVzb2x2ZUNv
bnN0cnVjdG9yKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKipvYmpwKQp7CiAgSlNPYmplY3QgKmdsb2JhbCA9
IEdldEdsb2JhbEpTT2JqZWN0KGN4LCBvYmopOwoKICBqc3ZhbCB2YWw7CiAgaWYgKCE6OkpTX0dl
dFByb3BlcnR5KGN4LCBnbG9iYWwsIG1EYXRhLT5tTmFtZSwgJnZhbCkpIHsKICAgIHJldHVybiAo
KG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7CiAgfQoKICBpZiAoISghKCgodmFsKSAmICgoKEpTVWlu
dDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDApIHx8ICgodmFsKSA9PSAoKGpzdmFsKSgwKSkpKSkg
ewoKCgoKCiAgICBKU1N0cmluZyAqc3RyID0gKChKU1N0cmluZyAqKSgodm9pZCAqKSgoc0NvbnN0
cnVjdG9yX2lkKSAmIH4oanN2YWwpKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpKSk7CiAgICBp
ZiAoITo6SlNfU2V0VUNQcm9wZXJ0eShjeCwgb2JqLCA6OkpTX0dldFN0cmluZ0NoYXJzKHN0ciks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OkpTX0dldFN0cmluZ0xlbmd0aChzdHIpLCAm
dmFsKSkgewogICAgICByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwpOwogICAgfQoKICAg
ICpvYmpwID0gb2JqOwogIH0KCiAgcmV0dXJuIDA7Cn0KCm5zcmVzdWx0Cm5zRE9NQ2xhc3NJbmZv
OjpOZXdSZXNvbHZlKG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4
dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlk
LCBQUlVpbnQzMiBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKipv
YmpwLCBQUkJvb2wgKl9yZXR2YWwpCnsKICBpZiAoaWQgPT0gc0NvbnN0cnVjdG9yX2lkICYmICEo
ZmxhZ3MgJiAweDAyKSkgewogICAgcmV0dXJuIFJlc29sdmVDb25zdHJ1Y3RvcihjeCwgb2JqLCBv
YmpwKTsKICB9CgogIHJldHVybiAwOwp9Cgpuc3Jlc3VsdApuc0RPTUNsYXNzSW5mbzo6Q29udmVy
dChuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAg
ICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqb2JqLCBQUlVpbnQzMiB0eXBlLCBqc3ZhbCAq
dnAsCiAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCAqX3JldHZhbCkKewogIDsKCiAgcmV0
dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsKfQoKbnNyZXN1bHQKbnNET01DbGFzc0luZm86
OkZpbmFsaXplKG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAq
Y3gsCiAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqb2JqKQp7CiAgOwoKICByZXR1
cm4gKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwpOwp9Cgpuc3Jlc3VsdApuc0RPTUNsYXNzSW5mbzo6
Q2hlY2tBY2Nlc3MobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0
ICpjeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlk
LCBQUlVpbnQzMiBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAganN2YWwgKnZwLCBQ
UkJvb2wgKl9yZXR2YWwpCnsKICBQUlVpbnQzMiBtb2RlX3R5cGUgPSBtb2RlICYgKEpTQUNDX1dS
SVRFIC0gMSk7CgogIGlmICgobW9kZV90eXBlID09IEpTQUNDX1dBVENIIHx8CiAgICAgICBtb2Rl
X3R5cGUgPT0gSlNBQ0NfUFJPVE8gfHwKICAgICAgIG1vZGVfdHlwZSA9PSBKU0FDQ19QQVJFTlQp
CiAgICAgICYmIHNTZWNNYW4pIHsKCiAgICBKU09iamVjdCAqcmVhbF9vYmogPSAwOwogICAgbnNy
ZXN1bHQgcnYgPSB3cmFwcGVyLT5HZXRKU09iamVjdCgmcmVhbF9vYmopOwogICAgZG8geyBpZiAo
ISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsgfSB9IHdoaWxlICgwKTsK
CiAgICBydiA9CiAgICAgIHNTZWNNYW4tPkNoZWNrUHJvcGVydHlBY2Nlc3MoY3gsIHJlYWxfb2Jq
LCBtRGF0YS0+bU5hbWUsIGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5z
SVhQQ1NlY3VyaXR5TWFuYWdlcjo6QUNDRVNTX0dFVF9QUk9QRVJUWSk7CgogICAgaWYgKCgocnYp
ICYgMHg4MDAwMDAwMCkpIHsKCiAgICAgICpfcmV0dmFsID0gMDsKICAgIH0KICB9CgogIHJldHVy
biAwOwp9Cgpuc3Jlc3VsdApuc0RPTUNsYXNzSW5mbzo6Q2FsbChuc0lYUENvbm5lY3RXcmFwcGVk
TmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAgICAgICBKU09i
amVjdCAqb2JqLCBQUlVpbnQzMiBhcmdjLCBqc3ZhbCAqYXJndiwganN2YWwgKnZwLAogICAgICAg
ICAgICAgICAgICAgICBQUkJvb2wgKl9yZXR2YWwpCnsKICA7CgogIHJldHVybiAoKG5zcmVzdWx0
KSAweDgwMDBmZmZmTCk7Cn0KCm5zcmVzdWx0Cm5zRE9NQ2xhc3NJbmZvOjpDb25zdHJ1Y3QobnNJ
WFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICpjeCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICBKU09iamVjdCAqb2JqLCBQUlVpbnQzMiBhcmdjLCBqc3ZhbCAqYXJn
diwKICAgICAgICAgICAgICAgICAgICAgICAgICBqc3ZhbCAqdnAsIFBSQm9vbCAqX3JldHZhbCkK
ewogIDsKCiAgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsKfQoKbnNyZXN1bHQKbnNE
T01DbGFzc0luZm86Okhhc0luc3RhbmNlKG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBw
ZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAq
b2JqLCBqc3ZhbCB2YWwsIFBSQm9vbCAqYnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
UkJvb2wgKl9yZXR2YWwpCnsKICA7CgogIHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7
Cn0KCm5zcmVzdWx0Cm5zRE9NQ2xhc3NJbmZvOjpNYXJrKG5zSVhQQ29ubmVjdFdyYXBwZWROYXRp
dmUgKndyYXBwZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0
ICpvYmosIHZvaWQgKmFyZywgUFJVaW50MzIgKl9yZXR2YWwpCnsKICA7CgogIHJldHVybiAoKG5z
cmVzdWx0KSAweDgwMDBmZmZmTCk7Cn0KCgoKbnNJQ2xhc3NJbmZvICoKbnNET01DbGFzc0luZm86
OkdldENsYXNzSW5mb0luc3RhbmNlKG5zRE9NQ2xhc3NJbmZvSUQgYUlEKQp7CiAgaWYgKGFJRCA+
PSBlRE9NQ2xhc3NJbmZvSURDb3VudCkgewogICAgOwoKICAgIHJldHVybiAwOwogIH0KCiAgaWYg
KCFzSXNJbml0aWFsaXplZCkgewogICAgbnNyZXN1bHQgcnYgPSBJbml0KCk7CgogICAgZG8geyBp
ZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiAwOyB9IH0gd2hpbGUgKDAp
OwogIH0KCiAgaWYgKCFzQ2xhc3NJbmZvRGF0YVthSURdLm1DYWNoZWRDbGFzc0luZm8pIHsKICAg
IG5zRE9NQ2xhc3NJbmZvRGF0YSYgZGF0YSA9IHNDbGFzc0luZm9EYXRhW2FJRF07CgogICAgZGF0
YS5tQ2FjaGVkQ2xhc3NJbmZvID0gZGF0YS51Lm1Db25zdHJ1Y3RvckZwdHIoJmRhdGEpOwogICAg
ZG8geyBpZiAoIShkYXRhLm1DYWNoZWRDbGFzc0luZm8pKSB7IDsgcmV0dXJuIDA7IH0gfSB3aGls
ZSAoMCk7CgogICAgKGRhdGEubUNhY2hlZENsYXNzSW5mbyktPkFkZFJlZigpOwogIH0KCiAgOwoK
CiAgbnNJQ2xhc3NJbmZvICpjbGFzc2luZm8gPSBzQ2xhc3NJbmZvRGF0YVthSURdLm1DYWNoZWRD
bGFzc0luZm87CgogIChjbGFzc2luZm8pLT5BZGRSZWYoKTsKCiAgcmV0dXJuIGNsYXNzaW5mbzsK
fQoKCm5zSUNsYXNzSW5mbyAqCm5zRE9NQ2xhc3NJbmZvOjpHZXRDbGFzc0luZm9JbnN0YW5jZShu
c0RPTUNsYXNzSW5mb0RhdGEqIGFEYXRhKQp7CiAgOwoKCgogIGlmICghYURhdGEtPm1DYWNoZWRD
bGFzc0luZm8pIHsKICAgIGlmIChhRGF0YS0+dS5tRXh0ZXJuYWxDb25zdHJ1Y3RvckZwdHIpIHsK
ICAgICAgYURhdGEtPm1DYWNoZWRDbGFzc0luZm8gPQogICAgICAgIGFEYXRhLT51Lm1FeHRlcm5h
bENvbnN0cnVjdG9yRnB0cihhRGF0YS0+bU5hbWUpOwogICAgfSBlbHNlIHsKICAgICAgYURhdGEt
Pm1DYWNoZWRDbGFzc0luZm8gPSBuc0RPTUdlbmVyaWNTSDo6ZG9DcmVhdGUoYURhdGEpOwogICAg
fQogICAgZG8geyBpZiAoIShhRGF0YS0+bUNhY2hlZENsYXNzSW5mbykpIHsgOyByZXR1cm4gMDsg
fSB9IHdoaWxlICgwKTsKCiAgICAoYURhdGEtPm1DYWNoZWRDbGFzc0luZm8pLT5BZGRSZWYoKTsK
ICAgIGFEYXRhLT5tQ2FjaGVkQ2xhc3NJbmZvID0gKG5zSUNsYXNzSW5mbyopKFB0ckJpdHMoYURh
dGEtPm1DYWNoZWRDbGFzc0luZm8pIHwgMHgxKTsKICB9CgogIG5zSUNsYXNzSW5mbyAqY2xhc3Np
bmZvID0gKG5zSUNsYXNzSW5mbyopKFB0ckJpdHMoYURhdGEtPm1DYWNoZWRDbGFzc0luZm8pICYg
fjB4MSk7CgogIChjbGFzc2luZm8pLT5BZGRSZWYoKTsKCiAgcmV0dXJuIGNsYXNzaW5mbzsKfQoK
CnZvaWQKbnNET01DbGFzc0luZm86OlNodXREb3duKCkKewogIGlmIChzQ2xhc3NJbmZvRGF0YVsw
XS51Lm1Db25zdHJ1Y3RvckZwdHIpIHsKICAgIFBSVWludDMyIGk7CgogICAgZm9yIChpID0gMDsg
aSA8IGVET01DbGFzc0luZm9JRENvdW50OyBpKyspIHsKICAgICAgZG8geyBpZiAoc0NsYXNzSW5m
b0RhdGFbaV0ubUNhY2hlZENsYXNzSW5mbykgeyAoc0NsYXNzSW5mb0RhdGFbaV0ubUNhY2hlZENs
YXNzSW5mbyktPlJlbGVhc2UoKTsgKHNDbGFzc0luZm9EYXRhW2ldLm1DYWNoZWRDbGFzc0luZm8p
ID0gMDsgfSB9IHdoaWxlICgwKTsKICAgIH0KICB9CgogIHNUb3BfaWQgPSAoKChqc3ZhbCkoMCAt
ICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwogIHNTY3JvbGxiYXJzX2lkID0gKCgo
anN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKICBzTG9jYXRpb25f
aWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwogIHND
b21wb25lbnRzX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwg
MHgxKTsKICBzQ29uc3RydWN0b3JfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzAp
KSkgPDwgMSkgfCAweDEpOwogIHNfY29udGVudF9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkx
IDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CiAgc0NvbnRlbnRfaWQgPSAoKChqc3ZhbCkoMCAtICgo
anN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwogIHNTaWRlYmFyX2lkID0gKCgoanN2YWwp
KDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKICBzTWVudWJhcl9pZCA9ICgo
KGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CiAgc1Rvb2xiYXJf
aWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwogIHNM
b2NhdGlvbmJhcl9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8
IDB4MSk7CiAgc1BlcnNvbmFsYmFyX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMw
KSkpIDw8IDEpIHwgMHgxKTsKICBzU3RhdHVzYmFyX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFs
KTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKICBzRGlyZWN0b3JpZXNfaWQgPSAoKChqc3ZhbCko
MCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwogIHNDb250cm9sbGVyc19pZCA9
ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CiAgc0xlbmd0
aF9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CiAg
c0lubmVySGVpZ2h0X2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEp
IHwgMHgxKTsKICBzSW5uZXJXaWR0aF9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgz
MCkpKSA8PCAxKSB8IDB4MSk7CiAgc091dGVySGVpZ2h0X2lkID0gKCgoanN2YWwpKDAgLSAoKGpz
dmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKICBzT3V0ZXJXaWR0aF9pZCA9ICgoKGpzdmFs
KSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CiAgc1NjcmVlblhfaWQgPSAo
KChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwogIHNTY3JlZW5Z
X2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKICBz
U3RhdHVzX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgx
KTsKICBzTmFtZV9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8
IDB4MSk7CiAgc09ubW91c2Vkb3duX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMw
KSkpIDw8IDEpIHwgMHgxKTsKICBzT25tb3VzZXVwX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFs
KTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKICBzT25jbGlja19pZCA9ICgoKGpzdmFsKSgwIC0g
KChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CiAgc09uY29udGV4dG1lbnVfaWQgPSAo
KChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwogIHNPbm1vdXNl
b3Zlcl9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7
CiAgc09ubW91c2VvdXRfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwg
MSkgfCAweDEpOwogIHNPbmtleWRvd25faWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAo
MzApKSkgPDwgMSkgfCAweDEpOwogIHNPbmtleXVwX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFs
KTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKICBzT25rZXlwcmVzc19pZCA9ICgoKGpzdmFsKSgw
IC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CiAgc09ubW91c2Vtb3ZlX2lkID0g
KCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKICBzT25mb2N1
c19pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CiAg
c09uYmx1cl9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4
MSk7CiAgc09uc3VibWl0X2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8
IDEpIHwgMHgxKTsKICBzT25yZXNldF9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgz
MCkpKSA8PCAxKSB8IDB4MSk7CiAgc09uY2hhbmdlX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFs
KTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKICBzT25zZWxlY3RfaWQgPSAoKChqc3ZhbCkoMCAt
ICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwogIHNPbmxvYWRfaWQgPSAoKChqc3Zh
bCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwogIHNPbnVubG9hZF9pZCA9
ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CiAgc09uYWJv
cnRfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwog
IHNPbmVycm9yX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwg
MHgxKTsKICBzT25wYWludF9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8
PCAxKSB8IDB4MSk7CiAgc09ucmVzaXplX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwg
KDMwKSkpIDw8IDEpIHwgMHgxKTsKICBzT25zY3JvbGxfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2
YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwogIHNTY3JvbGxJbnRvVmlld19pZCA9ICgoKGpz
dmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CiAgc1Njcm9sbFhfaWQg
PSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwogIHNTY3Jv
bGxZX2lkID0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsK
ICBzT3Blbl9pZCA9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4
MSk7CiAgc0l0ZW1faWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkg
fCAweDEpOwogIHNFbnVtZXJhdGVfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzAp
KSkgPDwgMSkgfCAweDEpOwogIHNOYXZpZ2F0b3JfaWQgPSAoKChqc3ZhbCkoMCAtICgoanN2YWwp
MSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwogIHNEb2N1bWVudF9pZCA9ICgoKGpzdmFsKSgwIC0g
KChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CiAgc1dpbmRvd19pZCA9ICgoKGpzdmFs
KSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CiAgc0ZyYW1lc19pZCA9ICgo
KGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSk7CgogIGRvIHsgaWYg
KHNYUENvbm5lY3QpIHsgKHNYUENvbm5lY3QpLT5SZWxlYXNlKCk7IChzWFBDb25uZWN0KSA9IDA7
IH0gfSB3aGlsZSAoMCk7CiAgZG8geyBpZiAoc1NlY01hbikgeyAoc1NlY01hbiktPlJlbGVhc2Uo
KTsgKHNTZWNNYW4pID0gMDsgfSB9IHdoaWxlICgwKTsKfQoKCnN0YXRpYyBjb25zdCBuc0lYUENv
bm5lY3RXcmFwcGVkTmF0aXZlICpjYWNoZWRfd3JhcHBlcjsKc3RhdGljIGNvbnN0IEpTQ29udGV4
dCAqY2FjaGVkX2N4OwoKdm9pZCBJbnZhbGlkYXRlQ29udGV4dEFuZFdyYXBwZXJDYWNoZSgpCnsK
ICBjYWNoZWRfd3JhcHBlciA9IDA7CiAgY2FjaGVkX2N4ID0gMDsKfQoKCgoKCnN0YXRpYyBpbmxp
bmUgUFJCb29sCm5lZWRzU2VjdXJpdHlDaGVjayhKU0NvbnRleHQgKmN4LCBuc0lYUENvbm5lY3RX
cmFwcGVkTmF0aXZlICp3cmFwcGVyKQp7CgoKCgoKCgogIGlmIChjeCAhPSBjYWNoZWRfY3ggfHwg
d3JhcHBlciAhPSBjYWNoZWRfd3JhcHBlcikgewogICAgY2FjaGVkX2N4ID0gMDsKICAgIGNhY2hl
ZF93cmFwcGVyID0gMDsKCiAgICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4gbmF0aXZlOwogICAgd3Jh
cHBlci0+R2V0TmF0aXZlKGdldHRlcl9BZGRSZWZzKG5hdGl2ZSkpOwoKICAgIG5zQ09NUHRyPG5z
SVNjcmlwdEdsb2JhbE9iamVjdD4gc2dvKGRvX1F1ZXJ5SW50ZXJmYWNlKG5hdGl2ZSkpOwoKICAg
IGlmICghc2dvKSB7CiAgICAgIDsKCiAgICAgIHJldHVybiAxOwogICAgfQoKICAgIG5zQ09NUHRy
PG5zSVNjcmlwdENvbnRleHQ+IG90aGVyU2NyaXB0Q29udGV4dDsKICAgIHNnby0+R2V0Q29udGV4
dChnZXR0ZXJfQWRkUmVmcyhvdGhlclNjcmlwdENvbnRleHQpKTsKCiAgICBpZiAoIW90aGVyU2Ny
aXB0Q29udGV4dCkgewogICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBpZiAoY3ggIT0gKEpTQ29u
dGV4dCAqKW90aGVyU2NyaXB0Q29udGV4dC0+R2V0TmF0aXZlQ29udGV4dCgpKSB7CiAgICAgIHJl
dHVybiAxOwogICAgfQogIH0KCgoKICBKU1N0YWNrRnJhbWUgKmZwID0gMDsKICBKU09iamVjdCAq
ZnBfb2JqID0gMDsKCiAgZG8gewogICAgZnAgPSA6OkpTX0ZyYW1lSXRlcmF0b3IoY3gsICZmcCk7
CgogICAgaWYoIWZwKSB7CiAgICAgIGJyZWFrOwogICAgfQoKICAgIGZwX29iaiA9IDo6SlNfR2V0
RnJhbWVGdW5jdGlvbk9iamVjdChjeCwgZnApOwogIH0gd2hpbGUgKCFmcF9vYmopOwoKICBpZiAo
ZnBfb2JqKSB7CiAgICBKU09iamVjdCAqZ2xvYmFsID0gR2V0R2xvYmFsSlNPYmplY3QoY3gsIGZw
X29iaik7CgogICAgSlNPYmplY3QgKndyYXBwZXJfb2JqID0gMDsKICAgIHdyYXBwZXItPkdldEpT
T2JqZWN0KCZ3cmFwcGVyX29iaik7CgogICAgaWYgKGdsb2JhbCAhPSB3cmFwcGVyX29iaikgewog
ICAgICByZXR1cm4gMTsKICAgIH0KICB9CgogIGNhY2hlZF9jeCA9IGN4OwogIGNhY2hlZF93cmFw
cGVyID0gd3JhcHBlcjsKCiAgcmV0dXJuIDA7Cn0KCgoKCm5zcmVzdWx0Cm5zRE9NQ2xhc3NJbmZv
Ojpkb0NoZWNrUHJvcGVydHlBY2Nlc3MoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwganN2
YWwgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJWFBDb25uZWN0
V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQUlVpbnQzMiBhY2Nlc3NNb2RlLCBQUkJvb2wgaXNXaW5kb3cpCnsKICBpZiAoIXNTZWNN
YW4pIHsKICAgIHJldHVybiAwOwogIH0KCgoKICBpZiAoaWQgPT0gc0NvbXBvbmVudHNfaWQgJiYK
ICAgICAgYWNjZXNzTW9kZSA9PSBuc0lYUENTZWN1cml0eU1hbmFnZXI6OkFDQ0VTU19HRVRfUFJP
UEVSVFkgJiYgaXNXaW5kb3cpIHsKICAgIHJldHVybiAwOwogIH0KCiAgbnNDT01QdHI8bnNJU3Vw
cG9ydHM+IG5hdGl2ZTsKICB3cmFwcGVyLT5HZXROYXRpdmUoZ2V0dGVyX0FkZFJlZnMobmF0aXZl
KSk7CgogIG5zQ09NUHRyPG5zSVNjcmlwdEdsb2JhbE9iamVjdD4gc2dvKGRvX1F1ZXJ5SW50ZXJm
YWNlKG5hdGl2ZSkpOwoKICBpZiAoIXNnbykgewogICAgbnNDT01QdHI8bnNJRG9jdW1lbnQ+IGRv
Yyhkb19RdWVyeUludGVyZmFjZShuYXRpdmUpKTsKICAgIGRvIHsgaWYgKCEoZG9jKSkgeyA7IHJl
dHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7CgogICAgZG9jLT5H
ZXRTY3JpcHRHbG9iYWxPYmplY3QoZ2V0dGVyX0FkZFJlZnMoc2dvKSk7CgogICAgaWYgKCFzZ28p
IHsKIyAyOTMwICJuc0RPTUNsYXNzSW5mby5jcHAiCiAgICAgIHJldHVybiAwOwogICAgfQogIH0K
CiAgbnNDT01QdHI8bnNJU2NyaXB0Q29udGV4dD4gc2N4OwogIHNnby0+R2V0Q29udGV4dChnZXR0
ZXJfQWRkUmVmcyhzY3gpKTsKCiAgaWYgKCFzY3ggfHwgKChzY3gtPklzQ29udGV4dEluaXRpYWxp
emVkKCkpICYgMHg4MDAwMDAwMCkpIHsKICAgIHJldHVybiAwOwogIH0KCiAgSlNPYmplY3QgKmds
b2JhbCA9IHNnby0+R2V0R2xvYmFsSlNPYmplY3QoKTsKCiAgcmV0dXJuIHNTZWNNYW4tPkNoZWNr
UHJvcGVydHlBY2Nlc3MoY3gsIGdsb2JhbCwgbURhdGEtPm1OYW1lLCBpZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3NNb2RlKTsKfQoKbnNyZXN1bHQKbnNXaW5k
b3dTSDo6UHJlQ3JlYXRlKG5zSVN1cHBvcnRzICpuYXRpdmVPYmosIEpTQ29udGV4dCAqIGN4LAog
ICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKiBnbG9iYWxPYmosIEpTT2JqZWN0ICogKnBh
cmVudE9iaikKewojIDI5NjMgIm5zRE9NQ2xhc3NJbmZvLmNwcCIKICBuc0NPTVB0cjxuc0lTY3Jp
cHRHbG9iYWxPYmplY3Q+IHNnbyhkb19RdWVyeUludGVyZmFjZShuYXRpdmVPYmopKTsKICA7Cgog
IGlmIChzZ28pIHsKICAgICpwYXJlbnRPYmogPSBzZ28tPkdldEdsb2JhbEpTT2JqZWN0KCk7Cgog
ICAgaWYgKCpwYXJlbnRPYmopIHsKICAgICAgcmV0dXJuIDA7CiAgICB9CiAgfQoKCgoKCiAgKnBh
cmVudE9iaiA9IGdsb2JhbE9iajsKCiAgcmV0dXJuIDA7Cn0KCm5zcmVzdWx0Cm5zV2luZG93U0g6
OkdldFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4
dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLCBq
c3ZhbCAqdnAsIFBSQm9vbCAqX3JldHZhbCkKewoKCgoKICBpZiAoKCgoKGlkKSAmIDB4MSkgJiYg
KGlkKSAhPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpKSB8
fCAoKChpZCkgJiAoKChKU1VpbnQzMikxIDw8ICgzKSkgLSAxKSkgPT0gMHgyKSkpIHsKCgoKCgog
ICAgbnNDT01QdHI8bnNJU3VwcG9ydHM+IG5hdGl2ZTsKICAgIHdyYXBwZXItPkdldE5hdGl2ZShn
ZXR0ZXJfQWRkUmVmcyhuYXRpdmUpKTsKCiAgICBuc0NPTVB0cjxuc0lET01XaW5kb3dJbnRlcm5h
bD4gd2luKGRvX1F1ZXJ5SW50ZXJmYWNlKG5hdGl2ZSkpOwoKICAgIG5zQ09NUHRyPG5zSURPTVdp
bmRvd0NvbGxlY3Rpb24+IGZyYW1lczsKICAgIHdpbi0+R2V0RnJhbWVzKGdldHRlcl9BZGRSZWZz
KGZyYW1lcykpOwoKICAgIGlmIChmcmFtZXMpIHsKICAgICAgbnNDT01QdHI8bnNJRE9NV2luZG93
PiBmcmFtZTsKICAgICAgZnJhbWVzLT5JdGVtKCgoanNpbnQpKGlkKSA+PiAxKSwgZ2V0dGVyX0Fk
ZFJlZnMoZnJhbWUpKTsKCiAgICAgIGlmIChmcmFtZSkgewoKCgoKICAgICAgICByZXR1cm4gV3Jh
cE5hdGl2ZShjeCwgOjpKU19HZXRHbG9iYWxPYmplY3QoY3gpLCBmcmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICBuc0NPTVR5cGVJbmZvPG5zSURPTVdpbmRvdz46OkdldElJRCgpLCB2cCk7
CiAgICAgIH0KICAgIH0KICB9CgogIGlmIChuZWVkc1NlY3VyaXR5Q2hlY2soY3gsIHdyYXBwZXIp
KSB7CgoKCgogICAgaWYgKCgoKGlkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAw
eDQpICYmICEoISgoKCp2cCkgJiAoKChKU1VpbnQzMikxIDw8ICgzKSkgLSAxKSkgPT0gMHgwKSB8
fCAoKCp2cCkgPT0gKChqc3ZhbCkoMCkpKSkgJiYKICAgICAgICA6OkpTX1R5cGVPZlZhbHVlKGN4
LCAqdnApICE9IEpTVFlQRV9GVU5DVElPTikgewoKCgoKCiAgICAgIG5zQ09NUHRyPG5zSVhQQ29u
bmVjdFdyYXBwZWROYXRpdmU+IHdyYXBwZXI7CiAgICAgIHNYUENvbm5lY3QtPkdldFdyYXBwZWRO
YXRpdmVPZkpTT2JqZWN0KGN4LCAoKEpTT2JqZWN0ICopKCh2b2lkICopKCgqdnApICYgfihqc3Zh
bCkoKChKU1VpbnQzMikxIDw8ICgzKSkgLSAxKSkpKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2V0dGVyX0FkZFJlZnMod3JhcHBlcikpOwoKICAgICAgaWYg
KHdyYXBwZXIpIHsKICAgICAgICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4gbmF0aXZlOwogICAgICAg
IHdyYXBwZXItPkdldE5hdGl2ZShnZXR0ZXJfQWRkUmVmcyhuYXRpdmUpKTsKCiAgICAgICAgbnND
T01QdHI8bnNJRE9NV2luZG93PiB3aW5kb3coZG9fUXVlcnlJbnRlcmZhY2UobmF0aXZlKSk7Cgog
ICAgICAgIGlmICh3aW5kb3cpIHsKCgoKICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAg
ICAgfQogICAgfQoKICAgIG5zcmVzdWx0IHJ2ID0KICAgICAgZG9DaGVja1Byb3BlcnR5QWNjZXNz
KGN4LCBvYmosIGlkLCB3cmFwcGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJWFBD
U2VjdXJpdHlNYW5hZ2VyOjpBQ0NFU1NfR0VUX1BST1BFUlRZLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMSk7CgogICAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkpIHsKCgoKICAgICAgKl9y
ZXR2YWwgPSAwOwoKICAgICAgKnZwID0gKChqc3ZhbCkoMCkpOwogICAgfQogIH0KCiAgcmV0dXJu
IDA7Cn0KCm5zcmVzdWx0Cm5zV2luZG93U0g6OlNldFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBw
ZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAg
IEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLCBqc3ZhbCAqdnAsIFBSQm9vbCAqX3JldHZhbCkKewog
IGlmIChuZWVkc1NlY3VyaXR5Q2hlY2soY3gsIHdyYXBwZXIpKSB7CiAgICBuc3Jlc3VsdCBydiA9
CiAgICAgIGRvQ2hlY2tQcm9wZXJ0eUFjY2VzcyhjeCwgb2JqLCBpZCwgd3JhcHBlciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5zSVhQQ1NlY3VyaXR5TWFuYWdlcjo6QUNDRVNTX1NFVF9Q
Uk9QRVJUWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpOwoKICAgIGlmICgoKHJ2KSAm
IDB4ODAwMDAwMDApKSB7CgoKCiAgICAgICpfcmV0dmFsID0gMDsKCiAgICAgIHJldHVybiAwOwog
ICAgfQogIH0KCiAgaWYgKGlkID09IHNMb2NhdGlvbl9pZCkgewogICAgSlNTdHJpbmcgKnZhbCA9
IDo6SlNfVmFsdWVUb1N0cmluZyhjeCwgKnZwKTsKICAgIGRvIHsgaWYgKCEodmFsKSkgeyA7IHJl
dHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7CgogICAgbnNDT01Q
dHI8bnNJU3VwcG9ydHM+IG5hdGl2ZTsKICAgIHdyYXBwZXItPkdldE5hdGl2ZShnZXR0ZXJfQWRk
UmVmcyhuYXRpdmUpKTsKCiAgICBuc0NPTVB0cjxuc0lET01XaW5kb3dJbnRlcm5hbD4gd2luZG93
KGRvX1F1ZXJ5SW50ZXJmYWNlKG5hdGl2ZSkpOwogICAgZG8geyBpZiAoISh3aW5kb3cpKSB7IDsg
cmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsgfSB9IHdoaWxlICgwKTsKCiAgICBuc0NP
TVB0cjxuc0lET01Mb2NhdGlvbj4gbG9jYXRpb247CiAgICBuc3Jlc3VsdCBydiA9IHdpbmRvdy0+
R2V0TG9jYXRpb24oZ2V0dGVyX0FkZFJlZnMobG9jYXRpb24pKTsKICAgIGRvIHsgaWYgKCEoKCEo
KHJ2KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7CgogICAg
bnNEZXBlbmRlbnRTdHJpbmcgaHJlZihyZWludGVycHJldF9jYXN0PCBQUlVuaWNoYXIgKiA+KDo6
SlNfR2V0U3RyaW5nQ2hhcnModmFsKSksCgogICAgICAgICAgICAgICAgICAgICAgICAgICA6OkpT
X0dldFN0cmluZ0xlbmd0aCh2YWwpKTsKCiAgICBydiA9IGxvY2F0aW9uLT5TZXRIcmVmKGhyZWYp
OwogICAgZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsg
fSB9IHdoaWxlICgwKTsKCiAgICByZXR1cm4gV3JhcE5hdGl2ZShjeCwgb2JqLCBsb2NhdGlvbiwg
bnNDT01UeXBlSW5mbzxuc0lET01Mb2NhdGlvbj46OkdldElJRCgpLCB2cCk7CiAgfQoKICByZXR1
cm4gbnNFdmVudFJlY2lldmVyU0g6OlNldFByb3BlcnR5KHdyYXBwZXIsIGN4LCBvYmosIGlkLCB2
cCwgX3JldHZhbCk7Cn0KCm5zcmVzdWx0Cm5zV2luZG93U0g6OkFkZFByb3BlcnR5KG5zSVhQQ29u
bmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAg
ICAgICAgICAgIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLCBqc3ZhbCAqdnAsCiAgICAgICAgICAg
ICAgICAgICAgICAgIFBSQm9vbCAqX3JldHZhbCkKewoKCiAgaWYgKCFzRG9TZWN1cml0eUNoZWNr
SW5BZGRQcm9wZXJ0eSkgewogICAgcmV0dXJuIDA7CiAgfQoKICBpZiAoaWQgPT0gc0xvY2F0aW9u
X2lkKSB7CgoKCiAgICByZXR1cm4gKChuc3Jlc3VsdCkgKCgoUFJVaW50MzIpKDEpPDwzMSkgfCAo
KFBSVWludDMyKSgxNCArMHg0NSk8PDE2KSB8ICgoUFJVaW50MzIpKDEwMDApKSkgKTsKICB9Cgog
IG5zcmVzdWx0IHJ2ID0KICAgIGRvQ2hlY2tQcm9wZXJ0eUFjY2VzcyhjeCwgb2JqLCBpZCwgd3Jh
cHBlciwKICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lYUENTZWN1cml0eU1hbmFnZXI6OkFD
Q0VTU19TRVRfUFJPUEVSVFksCiAgICAgICAgICAgICAgICAgICAgICAgICAgMSk7CgogIGlmICgo
KHJ2KSAmIDB4ODAwMDAwMDApKSB7CgoKCiAgICAqX3JldHZhbCA9IDA7CiAgfQoKICByZXR1cm4g
MDsKfQoKbnNyZXN1bHQKbnNXaW5kb3dTSDo6RGVsUHJvcGVydHkobnNJWFBDb25uZWN0V3JhcHBl
ZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgICAg
SlNPYmplY3QgKm9iaiwganN2YWwgaWQsIGpzdmFsICp2cCwKICAgICAgICAgICAgICAgICAgICAg
ICAgUFJCb29sICpfcmV0dmFsKQp7CiAgaWYgKGlkID09IHNMb2NhdGlvbl9pZCkgewoKCgogICAg
cmV0dXJuICgobnNyZXN1bHQpICgoKFBSVWludDMyKSgxKTw8MzEpIHwgKChQUlVpbnQzMikoMTQg
KzB4NDUpPDwxNikgfCAoKFBSVWludDMyKSgxMDAwKSkpICk7CiAgfQoKICBuc3Jlc3VsdCBydiA9
CiAgICBkb0NoZWNrUHJvcGVydHlBY2Nlc3MoY3gsIG9iaiwgaWQsIHdyYXBwZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnNJWFBDU2VjdXJpdHlNYW5hZ2VyOjpBQ0NFU1NfU0VUX1BST1BF
UlRZLAogICAgICAgICAgICAgICAgICAgICAgICAgIDEpOwoKICBpZiAoKChydikgJiAweDgwMDAw
MDAwKSkgewoKCgogICAgKl9yZXR2YWwgPSAwOwogIH0KCiAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBK
U0Jvb2wKQmFzZVN0dWJDb25zdHJ1Y3Rvcihjb25zdCBuc0dsb2JhbE5hbWVTdHJ1Y3QgKm5hbWVf
c3RydWN0LCBKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpvYmos
IHVpbnROIGFyZ2MsIGpzdmFsICphcmd2LCBqc3ZhbCAqcnZhbCkKewogIG5zcmVzdWx0IHJ2Owog
IG5zQ09NUHRyPG5zSVN1cHBvcnRzPiBuYXRpdmU7CiAgaWYgKG5hbWVfc3RydWN0LT5tVHlwZSA9
PSBuc0dsb2JhbE5hbWVTdHJ1Y3Q6OmVUeXBlRXh0ZXJuYWxDb25zdHJ1Y3RvcikgewogICAgbmF0
aXZlID0gZG9fQ3JlYXRlSW5zdGFuY2UobmFtZV9zdHJ1Y3QtPm1DSUQsICZydik7CiAgfSBlbHNl
IGlmIChuYW1lX3N0cnVjdC0+bVR5cGUgPT0gbnNHbG9iYWxOYW1lU3RydWN0OjplVHlwZUV4dGVy
bmFsQ29uc3RydWN0b3JBbGlhcykgewogICAgbmF0aXZlID0gZG9fQ3JlYXRlSW5zdGFuY2UobmFt
ZV9zdHJ1Y3QtPm1BbGlhcy0+bUNJRCwgJnJ2KTsKICB9IGVsc2UgewogICAgbmF0aXZlID0gZG9f
Q3JlYXRlSW5zdGFuY2UoKm5hbWVfc3RydWN0LT5tRGF0YS0+bUNvbnN0cnVjdG9yQ0lELCAmcnYp
OwogIH0KICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgewogICAgOwogICAgbnNET01DbGFzc0lu
Zm86OlRocm93SlNFeGNlcHRpb24oY3gsIHJ2KTsKCiAgICByZXR1cm4gKEpTSW50bikwOwogIH0K
CiAgbnNDT01QdHI8bnNJSlNOYXRpdmVJbml0aWFsaXplcj4gaW5pdGlhbGl6ZXIoZG9fUXVlcnlJ
bnRlcmZhY2UobmF0aXZlKSk7CiAgaWYgKGluaXRpYWxpemVyKSB7CiAgICBydiA9IGluaXRpYWxp
emVyLT5Jbml0aWFsaXplKGN4LCBvYmosIGFyZ2MsIGFyZ3YpOwogICAgaWYgKCgocnYpICYgMHg4
MDAwMDAwMCkpIHsKICAgICAgbnNET01DbGFzc0luZm86OlRocm93SlNFeGNlcHRpb24oY3gsICgo
KG5zcmVzdWx0KSAweEMxRjMwMDAwKSArIDEpKTsKCiAgICAgIHJldHVybiAoSlNJbnRuKTA7CiAg
ICB9CiAgfQoKICBuc0NPTVB0cjxuc0lTY3JpcHRPYmplY3RPd25lcj4gb3duZXIoZG9fUXVlcnlJ
bnRlcmZhY2UobmF0aXZlKSk7CiAgaWYgKG93bmVyKSB7CiAgICBuc0NPTVB0cjxuc0lTY3JpcHRD
b250ZXh0PiBjb250ZXh0OwoKICAgIG5zSlNVdGlsczo6R2V0U3RhdGljU2NyaXB0Q29udGV4dChj
eCwgb2JqLCBnZXR0ZXJfQWRkUmVmcyhjb250ZXh0KSk7CiAgICBpZiAoIWNvbnRleHQpIHsKICAg
ICAgbnNET01DbGFzc0luZm86OlRocm93SlNFeGNlcHRpb24oY3gsICgobnNyZXN1bHQpIDB4ODAw
MGZmZmZMKSk7CgogICAgICByZXR1cm4gKEpTSW50bikwOwogICAgfQoKICAgIEpTT2JqZWN0KiBu
ZXdfb2JqOwogICAgcnYgPSBvd25lci0+R2V0U2NyaXB0T2JqZWN0KGNvbnRleHQsICh2b2lkKiop
Jm5ld19vYmopOwoKICAgIGlmICgoISgocnYpICYgMHg4MDAwMDAwMCkpKSB7CiAgICAgICpydmFs
ID0gKChqc3ZhbCkobmV3X29iaikpOwogICAgfQoKICAgIHJldHVybiBydjsKICB9CgogIHJ2ID0g
bnNET01HZW5lcmljU0g6OldyYXBOYXRpdmUoY3gsIDo6SlNfR2V0R2xvYmFsT2JqZWN0KGN4KSwg
bmF0aXZlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNDT01UeXBlSW5mbzxu
c0lTdXBwb3J0cz46OkdldElJRCgpLCBydmFsKTsKCiAgcmV0dXJuICghKChydikgJiAweDgwMDAw
MDAwKSkgPyAoSlNJbnRuKTEgOiAoSlNJbnRuKTA7Cn0KCnN0YXRpYyBuc3Jlc3VsdApEZWZpbmVJ
bnRlcmZhY2VDb25zdGFudHMoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgY29uc3QgbnNJ
SUQgKmFJSUQpCnsKICBuc0NPTVB0cjxuc0lJbnRlcmZhY2VJbmZvTWFuYWdlcj4gaWltID0KICAg
IGRvbnRfQWRkUmVmKFhQVElfR2V0SW50ZXJmYWNlSW5mb01hbmFnZXIoKSk7CiAgZG8geyBpZiAo
IShpaW0pKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsgfSB9IHdoaWxlICgw
KTsKCiAgbnNDT01QdHI8bnNJSW50ZXJmYWNlSW5mbz4gaWZfaW5mbzsKCiAgbnNyZXN1bHQgcnYg
PSBpaW0tPkdldEluZm9Gb3JJSUQoYUlJRCwgZ2V0dGVyX0FkZFJlZnMoaWZfaW5mbykpOwogIGRv
IHsgaWYgKCEoKCEoKHJ2KSAmIDB4ODAwMDAwMDApKSAmJiBpZl9pbmZvKSkgeyA7IHJldHVybiBy
djsgfSB9IHdoaWxlICgwKTsKCiAgUFJVaW50MTYgY29uc3RhbnRfY291bnQ7CgogIGlmX2luZm8t
PkdldENvbnN0YW50Q291bnQoJmNvbnN0YW50X2NvdW50KTsKCiAgaWYgKCFjb25zdGFudF9jb3Vu
dCkgewogICAgcmV0dXJuIDA7CiAgfQoKICBuc0NPTVB0cjxuc0lJbnRlcmZhY2VJbmZvPiBwYXJl
bnRfaWZfaW5mbzsKCiAgcnYgPSBpZl9pbmZvLT5HZXRQYXJlbnQoZ2V0dGVyX0FkZFJlZnMocGFy
ZW50X2lmX2luZm8pKTsKICBkbyB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkgJiYgcGFy
ZW50X2lmX2luZm8pKSB7IDsgcmV0dXJuIHJ2OyB9IH0gd2hpbGUgKDApOwoKICBQUlVpbnQxNiBw
YXJlbnRfY29uc3RhbnRfY291bnQsIGk7CiAgcGFyZW50X2lmX2luZm8tPkdldENvbnN0YW50Q291
bnQoJnBhcmVudF9jb25zdGFudF9jb3VudCk7CgogIGZvciAoaSA9IHBhcmVudF9jb25zdGFudF9j
b3VudDsgaSA8IGNvbnN0YW50X2NvdW50OyBpKyspIHsKICAgIGNvbnN0IG5zWFBUQ29uc3RhbnQg
KmMgPSAwOwoKICAgIHJ2ID0gaWZfaW5mby0+R2V0Q29uc3RhbnQoaSwgJmMpOwogICAgZG8geyBp
ZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpICYmIGMpKSB7IDsgcmV0dXJuIHJ2OyB9IH0gd2hp
bGUgKDApOwoKICAgIFBSVWludDE2IHR5cGUgPSBjLT5HZXRUeXBlKCkuVGFnUGFydCgpOwoKICAg
IGpzdmFsIHY7CiAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgY2FzZSBuc1hQVFR5cGU6OlRfSTg6
CiAgICAgIGNhc2UgbnNYUFRUeXBlOjpUX1U4OgogICAgICB7CiAgICAgICAgdiA9ICgoKGpzdmFs
KShjLT5HZXRWYWx1ZSgpLT52YWwudTgpIDw8IDEpIHwgMHgxKTsKICAgICAgICBicmVhazsKICAg
ICAgfQogICAgICBjYXNlIG5zWFBUVHlwZTo6VF9JMTY6CiAgICAgIGNhc2UgbnNYUFRUeXBlOjpU
X1UxNjoKICAgICAgewogICAgICAgIHYgPSAoKChqc3ZhbCkoYy0+R2V0VmFsdWUoKS0+dmFsLnUx
NikgPDwgMSkgfCAweDEpOwogICAgICAgIGJyZWFrOwogICAgICB9CiAgICAgIGNhc2UgbnNYUFRU
eXBlOjpUX0kzMjoKICAgICAgY2FzZSBuc1hQVFR5cGU6OlRfVTMyOgogICAgICB7CiAgICAgICAg
diA9ICgoKGpzdmFsKShjLT5HZXRWYWx1ZSgpLT52YWwudTMyKSA8PCAxKSB8IDB4MSk7CiAgICAg
ICAgYnJlYWs7CiAgICAgIH0KICAgICAgZGVmYXVsdDoKICAgICAgewoKCgogICAgICAgIGNvbnRp
bnVlOwogICAgICB9CiAgICB9CgogICAgaWYgKCE6OkpTX0RlZmluZVByb3BlcnR5KGN4LCBvYmos
IGMtPkdldE5hbWUoKSwgdiwgMCwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAx
KSkgewogICAgICByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwpOwogICAgfQogIH0KCiAg
cmV0dXJuIDA7Cn0KCnN0YXRpYyBKU0Jvb2wKRE9NSlNDbGFzc19Db25zdHJ1Y3QoSlNDb250ZXh0
ICpjeCwgSlNPYmplY3QgKm9iaiwgdWludE4gYXJnYywganN2YWwgKmFyZ3YsCiAgICAgICAgICAg
ICAgICAgICAgIGpzdmFsICpydmFsKQp7CiAgSlNPYmplY3QqIGNsYXNzX29iaiA9ICgoSlNPYmpl
Y3QgKikoKHZvaWQgKikoKGFyZ3ZbLTJdKSAmIH4oanN2YWwpKCgoSlNVaW50MzIpMSA8PCAoMykp
IC0gMSkpKSk7CiAgaWYgKCFjbGFzc19vYmopIHsKICAgIDsKICAgIG5zRE9NQ2xhc3NJbmZvOjpU
aHJvd0pTRXhjZXB0aW9uKGN4LCAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCkpOwoKICAgIHJldHVy
biAoSlNJbnRuKTA7CiAgfQoKICBjb25zdCBQUlVuaWNoYXIqIGNsYXNzX25hbWUgPQogICAgICBj
b25zdF9jYXN0PCBjb25zdCBQUlVuaWNoYXIgKiA+KHN0YXRpY19jYXN0PCBQUlVuaWNoYXIgKiA+
KDo6SlNfR2V0UHJpdmF0ZShjeCwgY2xhc3Nfb2JqKSkpOwoKCgogIGV4dGVybiBuc1NjcmlwdE5h
bWVTcGFjZU1hbmFnZXIgKmdOYW1lU3BhY2VNYW5hZ2VyOwogIGlmICghY2xhc3NfbmFtZSB8fCAh
Z05hbWVTcGFjZU1hbmFnZXIpIHsKICAgIDsKICAgIG5zRE9NQ2xhc3NJbmZvOjpUaHJvd0pTRXhj
ZXB0aW9uKGN4LCAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCkpOwoKICAgIHJldHVybiAoSlNJbnRu
KTA7CiAgfQoKICBjb25zdCBuc0dsb2JhbE5hbWVTdHJ1Y3QgKm5hbWVfc3RydWN0ID0gMDsKICBn
TmFtZVNwYWNlTWFuYWdlci0+TG9va3VwTmFtZShuc0RlcGVuZGVudFN0cmluZyhjbGFzc19uYW1l
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZV9zdHJ1Y3QpOwogIGlmICgh
bmFtZV9zdHJ1Y3QpIHsKICAgIDsKICAgIG5zRE9NQ2xhc3NJbmZvOjpUaHJvd0pTRXhjZXB0aW9u
KGN4LCAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCkpOwoKICAgIHJldHVybiAoSlNJbnRuKTA7CiAg
fQoKICBpZiAoKG5hbWVfc3RydWN0LT5tVHlwZSAhPSBuc0dsb2JhbE5hbWVTdHJ1Y3Q6OmVUeXBl
RXh0ZXJuYWxDbGFzc0luZm8gfHwKICAgICAgICFuYW1lX3N0cnVjdC0+bURhdGEtPm1Db25zdHJ1
Y3RvckNJRCkgJiYKICAgICAgbmFtZV9zdHJ1Y3QtPm1UeXBlICE9IG5zR2xvYmFsTmFtZVN0cnVj
dDo6ZVR5cGVFeHRlcm5hbENvbnN0cnVjdG9yICYmCiAgICAgIG5hbWVfc3RydWN0LT5tVHlwZSAh
PSBuc0dsb2JhbE5hbWVTdHJ1Y3Q6OmVUeXBlRXh0ZXJuYWxDb25zdHJ1Y3RvckFsaWFzKSB7Cgog
ICAgOwogICAgbnNET01DbGFzc0luZm86OlRocm93SlNFeGNlcHRpb24oY3gsICgobnNyZXN1bHQp
ICgoKFBSVWludDMyKSgxKTw8MzEpIHwgKChQUlVpbnQzMikoMTQgKzB4NDUpPDwxNikgfCAoKFBS
VWludDMyKSg5KSkpICkpOwoKICAgIHJldHVybiAoSlNJbnRuKTA7CiAgfQoKICByZXR1cm4gQmFz
ZVN0dWJDb25zdHJ1Y3RvcihuYW1lX3N0cnVjdCwgY3gsIG9iaiwgYXJnYywgYXJndiwgcnZhbCk7
Cn0KCnN0YXRpYyBKU0Jvb2wKRE9NSlNDbGFzc19IYXNJbnN0YW5jZShKU0NvbnRleHQgKmN4LCBK
U09iamVjdCAqb2JqLCBqc3ZhbCB2LCBKU0Jvb2wgKmJwKQp7CiAgSlNPYmplY3QgKmRvbV9vYmo7
CiAgaWYgKCE6OkpTX1ZhbHVlVG9PYmplY3QoY3gsIHYsICZkb21fb2JqKSkgewogICAgOwogICAg
bnNET01DbGFzc0luZm86OlRocm93SlNFeGNlcHRpb24oY3gsICgobnNyZXN1bHQpICgoKFBSVWlu
dDMyKSgxKTw8MzEpIHwgKChQUlVpbnQzMikoMTQgKzB4NDUpPDwxNikgfCAoKFBSVWludDMyKSg5
KSkpICkpOwoKICAgIHJldHVybiAoSlNJbnRuKTA7CiAgfQoKICBpZiAoIWRvbV9vYmopIHsKICAg
IHJldHVybiAoSlNJbnRuKTE7CiAgfQoKICBKU0NsYXNzICpkb21fY2xhc3MgPSBKU19HZXRDbGFz
cyhjeCwgZG9tX29iaik7CiAgaWYgKCFkb21fY2xhc3MpIHsKICAgIDsKICAgIG5zRE9NQ2xhc3NJ
bmZvOjpUaHJvd0pTRXhjZXB0aW9uKGN4LCAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCkpOwoKICAg
IHJldHVybiAoSlNJbnRuKTA7CiAgfQoKICBjb25zdCBuc0dsb2JhbE5hbWVTdHJ1Y3QgKm5hbWVf
c3RydWN0ID0gMDsKCiAgZXh0ZXJuIG5zU2NyaXB0TmFtZVNwYWNlTWFuYWdlciAqZ05hbWVTcGFj
ZU1hbmFnZXI7CiAgaWYgKCFnTmFtZVNwYWNlTWFuYWdlcikgewogICAgOwogICAgbnNET01DbGFz
c0luZm86OlRocm93SlNFeGNlcHRpb24oY3gsICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKSk7Cgog
ICAgcmV0dXJuIChKU0ludG4pMDsKICB9CgogIGdOYW1lU3BhY2VNYW5hZ2VyLT5Mb29rdXBOYW1l
KE5TX0NvbnZlcnRBU0NJSXRvVUNTMihkb21fY2xhc3MtPm5hbWUpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZuYW1lX3N0cnVjdCk7CiAgaWYgKCFuYW1lX3N0cnVjdCkgewogICAg
OwogICAgbnNET01DbGFzc0luZm86OlRocm93SlNFeGNlcHRpb24oY3gsICgobnNyZXN1bHQpIDB4
ODAwMGZmZmZMKSk7CgogICAgcmV0dXJuIChKU0ludG4pMDsKICB9CgogIDsKCgoKCiAgY29uc3Qg
UFJVbmljaGFyKiBjbGFzc19uYW1lID0KICAgICAgY29uc3RfY2FzdDwgY29uc3QgUFJVbmljaGFy
ICogPihzdGF0aWNfY2FzdDwgUFJVbmljaGFyICogPig6OkpTX0dldFByaXZhdGUoY3gsIG9iaikp
KTsKCgogIGlmICghY2xhc3NfbmFtZSkgewogICAgOwogICAgbnNET01DbGFzc0luZm86OlRocm93
SlNFeGNlcHRpb24oY3gsICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKSk7CgogICAgcmV0dXJuIChK
U0ludG4pMDsKICB9CgogIGNvbnN0IG5zR2xvYmFsTmFtZVN0cnVjdCAqY2xhc3NfbmFtZV9zdHJ1
Y3QgPSAwOwogIGdOYW1lU3BhY2VNYW5hZ2VyLT5Mb29rdXBOYW1lKG5zRGVwZW5kZW50U3RyaW5n
KGNsYXNzX25hbWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjbGFzc19uYW1l
X3N0cnVjdCk7CiAgaWYgKCFjbGFzc19uYW1lX3N0cnVjdCkgewogICAgOwogICAgbnNET01DbGFz
c0luZm86OlRocm93SlNFeGNlcHRpb24oY3gsICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKSk7Cgog
ICAgcmV0dXJuIChKU0ludG4pMDsKICB9CgogIGlmIChjbGFzc19uYW1lX3N0cnVjdC0+bVR5cGUg
IT0gbnNHbG9iYWxOYW1lU3RydWN0OjplVHlwZUNsYXNzUHJvdG8gJiYKICAgICAgY2xhc3NfbmFt
ZV9zdHJ1Y3QtPm1UeXBlICE9IG5zR2xvYmFsTmFtZVN0cnVjdDo6ZVR5cGVJbnRlcmZhY2UpIHsK
ICAgICpicCA9IChuYW1lX3N0cnVjdCA9PSBjbGFzc19uYW1lX3N0cnVjdCk7CgogICAgcmV0dXJu
IChKU0ludG4pMTsKICB9CgogIGlmIChuYW1lX3N0cnVjdC0+bVR5cGUgPT0gbnNHbG9iYWxOYW1l
U3RydWN0OjplVHlwZUV4dGVybmFsQ29uc3RydWN0b3JBbGlhcykgewogICAgbmFtZV9zdHJ1Y3Qg
PSBnTmFtZVNwYWNlTWFuYWdlci0+R2V0Q29uc3RydWN0b3JQcm90byhuYW1lX3N0cnVjdCk7CiAg
ICBpZiAoIW5hbWVfc3RydWN0KSB7CiAgICAgIDsKICAgICAgbnNET01DbGFzc0luZm86OlRocm93
SlNFeGNlcHRpb24oY3gsICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKSk7CgogICAgICByZXR1cm4g
KEpTSW50bikwOwogICAgfQogIH0KCiAgOwoKCgogIGNvbnN0IG5zRE9NQ2xhc3NJbmZvRGF0YSAq
Y2lfZGF0YSA9IDA7CiAgaWYgKG5hbWVfc3RydWN0LT5tVHlwZSA9PSBuc0dsb2JhbE5hbWVTdHJ1
Y3Q6OmVUeXBlQ2xhc3NDb25zdHJ1Y3RvciAmJgogICAgICBuYW1lX3N0cnVjdC0+bURPTUNsYXNz
SW5mb0lEID49IDApIHsKICAgIGNpX2RhdGEgPSAmc0NsYXNzSW5mb0RhdGFbbmFtZV9zdHJ1Y3Qt
Pm1ET01DbGFzc0luZm9JRF07CiAgfSBlbHNlIGlmIChuYW1lX3N0cnVjdC0+bVR5cGUgPT0gbnNH
bG9iYWxOYW1lU3RydWN0OjplVHlwZUV4dGVybmFsQ2xhc3NJbmZvKSB7CiAgICBjaV9kYXRhID0g
bmFtZV9zdHJ1Y3QtPm1EYXRhOwogIH0KCiAgbnNDT01QdHI8bnNJSW50ZXJmYWNlSW5mb01hbmFn
ZXI+IGlpbSA9CiAgICBkb250X0FkZFJlZihYUFRJX0dldEludGVyZmFjZUluZm9NYW5hZ2VyKCkp
OwogIGlmICghaWltKSB7CiAgICA7CiAgICBuc0RPTUNsYXNzSW5mbzo6VGhyb3dKU0V4Y2VwdGlv
bihjeCwgKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwpKTsKCiAgICByZXR1cm4gKEpTSW50bikwOwog
IH0KCiAgbnNDT01QdHI8bnNJSW50ZXJmYWNlSW5mbz4gaWZfaW5mbzsKICBQUlVpbnQzMiBjb3Vu
dCA9IDA7CiAgY29uc3QgbnNJSUQqIGNsYXNzX2ludGVyZmFjZTsKICB3aGlsZSAoKGNsYXNzX2lu
dGVyZmFjZSA9IGNpX2RhdGEtPm1JbnRlcmZhY2VzW2NvdW50KytdKSkgewogICAgaWYgKGNsYXNz
X25hbWVfc3RydWN0LT5tSUlELkVxdWFscygqY2xhc3NfaW50ZXJmYWNlKSkgewogICAgICAqYnAg
PSAoSlNJbnRuKTE7CgogICAgICByZXR1cm4gKEpTSW50bikxOwogICAgfQoKICAgIGlpbS0+R2V0
SW5mb0ZvcklJRChjbGFzc19pbnRlcmZhY2UsIGdldHRlcl9BZGRSZWZzKGlmX2luZm8pKTsKICAg
IGlmICghaWZfaW5mbykgewogICAgICA7CiAgICAgIG5zRE9NQ2xhc3NJbmZvOjpUaHJvd0pTRXhj
ZXB0aW9uKGN4LCAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCkpOwoKICAgICAgcmV0dXJuIChKU0lu
dG4pMDsKICAgIH0KCiAgICBpZl9pbmZvLT5IYXNBbmNlc3RvcigmY2xhc3NfbmFtZV9zdHJ1Y3Qt
Pm1JSUQsIGJwKTsKCiAgICBpZiAoKmJwKSB7CiAgICAgIHJldHVybiAoSlNJbnRuKTE7CiAgICB9
CiAgfQoKICByZXR1cm4gKEpTSW50bikxOwp9CgpzdGF0aWMgSlNCb29sCkRPTUpTQ2xhc3NfdG9T
dHJpbmcoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgdWludE4gYXJnYywganN2YWwgKmFy
Z3YsCiAgICAgICAgICAgICAgICAgICAganN2YWwgKnJ2YWwpCnsKICBjb25zdCBQUlVuaWNoYXIq
IGNsYXNzX25hbWUgPQogICAgICBjb25zdF9jYXN0PCBjb25zdCBQUlVuaWNoYXIgKiA+KHN0YXRp
Y19jYXN0PCBQUlVuaWNoYXIgKiA+KDo6SlNfR2V0UHJpdmF0ZShjeCwgb2JqKSkpOwoKCiAgaWYg
KCFjbGFzc19uYW1lKSB7CiAgICA7CiAgICBuc0RPTUNsYXNzSW5mbzo6VGhyb3dKU0V4Y2VwdGlv
bihjeCwgKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwpKTsKCiAgICByZXR1cm4gKEpTSW50bikwOwog
IH0KCiAgbnNBdXRvU3RyaW5nIHJlc3VsdFN0cmluZygnWycpOwogIHJlc3VsdFN0cmluZy5BcHBl
bmQoY2xhc3NfbmFtZSk7CiAgcmVzdWx0U3RyaW5nLkFwcGVuZChQUlVuaWNoYXIoJ10nKSk7Cgog
IEpTU3RyaW5nKiBzdHIgPSA6OkpTX05ld1VDU3RyaW5nQ29weU4oY3gsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PCBjb25zdCBqc2NoYXIg
KiA+KHJlc3VsdFN0cmluZy5nZXQoKSksCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0U3RyaW5nLkxlbmd0aCgpKTsKICBkbyB7IGlmICghKHN0cikpIHsgOyBy
ZXR1cm4gKEpTSW50bikwOyB9IH0gd2hpbGUgKDApOwoKICAqcnZhbCA9ICgoKGpzdmFsKShzdHIp
KSB8ICgweDQpKTsKCiAgcmV0dXJuIChKU0ludG4pMTsKfQoKSlNDbGFzcyBuc0RPTUNsYXNzSW5m
bzo6c0RPTUpTQ2xhc3MgPSB7CiAgIkRPTSBDbGFzcyIsICgxPDwwKSwKICBKU19Qcm9wZXJ0eVN0
dWIsIEpTX1Byb3BlcnR5U3R1YiwgSlNfUHJvcGVydHlTdHViLCBKU19Qcm9wZXJ0eVN0dWIsCiAg
SlNfRW51bWVyYXRlU3R1YiwgSlNfUmVzb2x2ZVN0dWIsIEpTX0NvbnZlcnRTdHViLCBKU19GaW5h
bGl6ZVN0dWIsCiAgMCwgMCwgMCwgRE9NSlNDbGFzc19Db25zdHJ1Y3QsCiAgMCwgRE9NSlNDbGFz
c19IYXNJbnN0YW5jZQp9OwoKSlNGdW5jdGlvblNwZWMgbnNET01DbGFzc0luZm86OnNET01KU0Ns
YXNzX21ldGhvZHNbXSA9IHsKICB7InRvU3RyaW5nIiwgRE9NSlNDbGFzc190b1N0cmluZywgMCwg
MCwgMH0sCiAgezAsIDAsIDAsIDAsIDB9Cn07CgoKbnNyZXN1bHQKbnNET01DbGFzc0luZm86Oklu
aXRET01KU0NsYXNzKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmopCnsKICBKU09iamVjdCAq
cHJvdG8gPSA6OkpTX0luaXRDbGFzcyhjeCwgb2JqLCAwLCAmc0RPTUpTQ2xhc3MsIDAsIDAsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgc0RPTUpTQ2xhc3NfbWV0aG9kcywg
MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKICA7CiAgaWYgKCFwcm90
bykgewogICAgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsKICB9CgogIHJldHVybiAw
Owp9CgoKbnNyZXN1bHQKbnNXaW5kb3dTSDo6R2xvYmFsUmVzb2x2ZShuc0lTdXBwb3J0cyAqbmF0
aXZlLCBKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAgICAgICAg
ICAgIEpTU3RyaW5nICpzdHIsIFBSVWludDMyIGZsYWdzLCBQUkJvb2wgKmRpZF9yZXNvbHZlKQp7
CiAgKmRpZF9yZXNvbHZlID0gMDsKCiAgZXh0ZXJuIG5zU2NyaXB0TmFtZVNwYWNlTWFuYWdlciAq
Z05hbWVTcGFjZU1hbmFnZXI7CgogIGRvIHsgaWYgKCEoZ05hbWVTcGFjZU1hbmFnZXIpKSB7IDsg
cmV0dXJuICgoKG5zcmVzdWx0KSAweEMxRjMwMDAwKSArIDEpOyB9IH0gd2hpbGUgKDApOwoKICBu
c0RlcGVuZGVudFN0cmluZyBuYW1lKHJlaW50ZXJwcmV0X2Nhc3Q8IGNvbnN0IFBSVW5pY2hhciog
Pig6OkpTX0dldFN0cmluZ0NoYXJzKHN0cikpLAoKICAgICAgICAgICAgICAgICAgICAgICAgIDo6
SlNfR2V0U3RyaW5nTGVuZ3RoKHN0cikpOwoKICBjb25zdCBuc0dsb2JhbE5hbWVTdHJ1Y3QgKm5h
bWVfc3RydWN0ID0gMDsKICBjb25zdCBQUlVuaWNoYXIgKmNsYXNzX25hbWUgPSAwOwoKICBnTmFt
ZVNwYWNlTWFuYWdlci0+TG9va3VwTmFtZShuYW1lLCAmbmFtZV9zdHJ1Y3QsICZjbGFzc19uYW1l
KTsKCiAgaWYgKCFuYW1lX3N0cnVjdCkgewogICAgcmV0dXJuIDA7CiAgfQoKICBkbyB7IGlmICgh
KGNsYXNzX25hbWUpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsgfSB9IHdo
aWxlICgwKTsKCiAgbnNyZXN1bHQgcnYgPSAwOwoKICBpZiAobmFtZV9zdHJ1Y3QtPm1UeXBlID09
IG5zR2xvYmFsTmFtZVN0cnVjdDo6ZVR5cGVFeHRlcm5hbENsYXNzSW5mb0NyZWF0b3IpIHsKICAg
IG5zQ09NUHRyPG5zSURPTUNJRXh0ZW5zaW9uPiBjcmVhdG9yKGRvX0NyZWF0ZUluc3RhbmNlKG5h
bWVfc3RydWN0LT5tQ0lELCAmcnYpKTsKICAgIGRvIHsgaWYgKCEoKCEoKHJ2KSAmIDB4ODAwMDAw
MDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7CgogICAgbnNDT01QdHI8bnNJRE9N
U2NyaXB0T2JqZWN0RmFjdG9yeT4gc29mKGRvX0dldFNlcnZpY2Uoa0RPTVNPRl9DSUQpKTsKICAg
IGRvIHsgaWYgKCEoc29mKSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDA0MDA1TCk7IH0g
fSB3aGlsZSAoMCk7CgogICAgcnYgPSBjcmVhdG9yLT5SZWdpc3RlckRPTUNJKE5TX0NvbnZlcnRV
Q1MydG9VVEY4KG5hbWUpLmdldCgpLCBzb2YpOwogICAgZG8geyBpZiAoISgoISgocnYpICYgMHg4
MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsgfSB9IHdoaWxlICgwKTsKCiAgICBydiA9IGdOYW1l
U3BhY2VNYW5hZ2VyLT5Mb29rdXBOYW1lKG5hbWUsICZuYW1lX3N0cnVjdCk7CiAgICBpZiAoKChy
dikgJiAweDgwMDAwMDAwKSB8fCAhbmFtZV9zdHJ1Y3QgfHwKICAgICAgICBuYW1lX3N0cnVjdC0+
bVR5cGUgIT0gbnNHbG9iYWxOYW1lU3RydWN0OjplVHlwZUV4dGVybmFsQ2xhc3NJbmZvKSB7CiAg
ICAgIDsKCiAgICAgIHJldHVybiAwOwogICAgfQogIH0KCiAgaWYgKG5hbWVfc3RydWN0LT5tVHlw
ZSA9PSBuc0dsb2JhbE5hbWVTdHJ1Y3Q6OmVUeXBlSW50ZXJmYWNlKSB7CgoKCiAgICBKU09iamVj
dCogY2xhc3Nfb2JqID0gOjpKU19EZWZpbmVPYmplY3QoY3gsIG9iaiwgOjpKU19HZXRTdHJpbmdC
eXRlcyhzdHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZz
RE9NSlNDbGFzcywgMCwgMCk7CiAgICBpZiAoIWNsYXNzX29iaikgewogICAgICByZXR1cm4gKChu
c3Jlc3VsdCkgMHg4MDAwZmZmZkwpOwogICAgfQoKICAgIGlmICghOjpKU19TZXRQcml2YXRlKGN4
LCBjbGFzc19vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9jYXN0PCB2b2lkICog
PihzdGF0aWNfY2FzdDwgY29uc3Qgdm9pZCAqID4oY2xhc3NfbmFtZSkpKSkgewoKCiAgICAgIHJl
dHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7CiAgICB9CgoKCgogICAgcnYgPSBEZWZpbmVJ
bnRlcmZhY2VDb25zdGFudHMoY3gsIGNsYXNzX29iaiwgJm5hbWVfc3RydWN0LT5tSUlEKTsKICAg
IGRvIHsgaWYgKCEoKCEoKHJ2KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3
aGlsZSAoMCk7CgogICAgKmRpZF9yZXNvbHZlID0gMTsKCiAgICByZXR1cm4gMDsKICB9CgogIGlm
IChuYW1lX3N0cnVjdC0+bVR5cGUgPT0gbnNHbG9iYWxOYW1lU3RydWN0OjplVHlwZUNsYXNzQ29u
c3RydWN0b3IgfHwKICAgICAgbmFtZV9zdHJ1Y3QtPm1UeXBlID09IG5zR2xvYmFsTmFtZVN0cnVj
dDo6ZVR5cGVFeHRlcm5hbENsYXNzSW5mbyB8fAogICAgICBuYW1lX3N0cnVjdC0+bVR5cGUgPT0g
bnNHbG9iYWxOYW1lU3RydWN0OjplVHlwZUNsYXNzUHJvdG8gfHwKICAgICAgbmFtZV9zdHJ1Y3Qt
Pm1UeXBlID09IG5zR2xvYmFsTmFtZVN0cnVjdDo6ZVR5cGVFeHRlcm5hbENvbnN0cnVjdG9yQWxp
YXMpIHsKICAgIGNvbnN0IG5zRE9NQ2xhc3NJbmZvRGF0YSAqY2lfZGF0YSA9IDA7CiAgICBjb25z
dCBuc0dsb2JhbE5hbWVTdHJ1Y3QqIGFsaWFzX3N0cnVjdCA9IDA7CgogICAgaWYgKG5hbWVfc3Ry
dWN0LT5tVHlwZSA9PSBuc0dsb2JhbE5hbWVTdHJ1Y3Q6OmVUeXBlQ2xhc3NDb25zdHJ1Y3RvciAm
JgogICAgICAgIG5hbWVfc3RydWN0LT5tRE9NQ2xhc3NJbmZvSUQgPj0gMCkgewogICAgICBjaV9k
YXRhID0gJnNDbGFzc0luZm9EYXRhW25hbWVfc3RydWN0LT5tRE9NQ2xhc3NJbmZvSURdOwogICAg
fSBlbHNlIGlmIChuYW1lX3N0cnVjdC0+bVR5cGUgPT0gbnNHbG9iYWxOYW1lU3RydWN0OjplVHlw
ZUV4dGVybmFsQ2xhc3NJbmZvKSB7CiAgICAgIGNpX2RhdGEgPSBuYW1lX3N0cnVjdC0+bURhdGE7
CiAgICB9IGVsc2UgaWYgKG5hbWVfc3RydWN0LT5tVHlwZSA9PSBuc0dsb2JhbE5hbWVTdHJ1Y3Q6
OmVUeXBlRXh0ZXJuYWxDb25zdHJ1Y3RvckFsaWFzKSB7CiAgICAgIGFsaWFzX3N0cnVjdCA9IGdO
YW1lU3BhY2VNYW5hZ2VyLT5HZXRDb25zdHJ1Y3RvclByb3RvKG5hbWVfc3RydWN0KTsKICAgICAg
ZG8geyBpZiAoIShhbGlhc19zdHJ1Y3QpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZm
ZmZMKTsgfSB9IHdoaWxlICgwKTsKCiAgICAgIGlmIChhbGlhc19zdHJ1Y3QtPm1UeXBlID09IG5z
R2xvYmFsTmFtZVN0cnVjdDo6ZVR5cGVDbGFzc0NvbnN0cnVjdG9yKSB7CiAgICAgICAgY2lfZGF0
YSA9ICZzQ2xhc3NJbmZvRGF0YVthbGlhc19zdHJ1Y3QtPm1ET01DbGFzc0luZm9JRF07CiAgICAg
IH0gZWxzZSBpZiAoYWxpYXNfc3RydWN0LT5tVHlwZSA9PSBuc0dsb2JhbE5hbWVTdHJ1Y3Q6OmVU
eXBlRXh0ZXJuYWxDbGFzc0luZm8pIHsKICAgICAgICBjaV9kYXRhID0gYWxpYXNfc3RydWN0LT5t
RGF0YTsKICAgICAgfQogICAgfQoKICAgIEpTT2JqZWN0KiBjbGFzc19vYmogPSA6OkpTX0RlZmlu
ZU9iamVjdChjeCwgb2JqLCA6OkpTX0dldFN0cmluZ0J5dGVzKHN0ciksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNET01KU0NsYXNzLCAwLCAwKTsKICAgIGlm
ICghY2xhc3Nfb2JqKSB7CiAgICAgIHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7CiAg
ICB9CgogICAgaWYgKCE6OkpTX1NldFByaXZhdGUoY3gsIGNsYXNzX29iaiwKICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8IHZvaWQgKiA+KHN0YXRpY19jYXN0PCBjb25zdCB2b2lk
ICogPihjbGFzc19uYW1lKSkpKSB7CgoKICAgICAgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZm
ZmZMKTsKICAgIH0KCiAgICBjb25zdCBuc0lJRCAqcHJpbWFyeV9paWQgPSAmbnNDT01UeXBlSW5m
bzxuc0lTdXBwb3J0cz46OkdldElJRCgpOwoKICAgIGlmIChuYW1lX3N0cnVjdC0+bVR5cGUgPT0g
bnNHbG9iYWxOYW1lU3RydWN0OjplVHlwZUNsYXNzUHJvdG8pIHsKICAgICAgcHJpbWFyeV9paWQg
PSAmbmFtZV9zdHJ1Y3QtPm1JSUQ7CiAgICB9IGVsc2UgaWYgKGNpX2RhdGEgJiYgY2lfZGF0YS0+
bVByb3RvQ2hhaW5JbnRlcmZhY2UpIHsKICAgICAgcHJpbWFyeV9paWQgPSBjaV9kYXRhLT5tUHJv
dG9DaGFpbkludGVyZmFjZTsKICAgIH0KCiAgICBuc1hQSURMQ1N0cmluZyBjbGFzc19wYXJlbnRf
bmFtZTsKCiAgICBpZiAoIXByaW1hcnlfaWlkLT5FcXVhbHMobnNDT01UeXBlSW5mbzxuc0lTdXBw
b3J0cz46OkdldElJRCgpKSkgewogICAgICBydiA9IERlZmluZUludGVyZmFjZUNvbnN0YW50cyhj
eCwgY2xhc3Nfb2JqLCBwcmltYXJ5X2lpZCk7CiAgICAgIGRvIHsgaWYgKCEoKCEoKHJ2KSAmIDB4
ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7CgoKCiAgICAgIGlmIChw
cmltYXJ5X2lpZC0+RXF1YWxzKG5zQ09NVHlwZUluZm88bnNJRE9NRXZlbnQ+OjpHZXRJSUQoKSkp
IHsKICAgICAgICBydiA9IERlZmluZUludGVyZmFjZUNvbnN0YW50cyhjeCwgY2xhc3Nfb2JqLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuc0NPTVR5cGVJbmZvPG5zSURP
TU5TRXZlbnQ+OjpHZXRJSUQoKSk7CiAgICAgICAgZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAw
MDAwMCkpKSkgeyA7IHJldHVybiBydjsgfSB9IHdoaWxlICgwKTsKICAgICAgfQoKICAgICAgbnND
T01QdHI8bnNJSW50ZXJmYWNlSW5mb01hbmFnZXI+IGlpbSA9CiAgICAgICAgZG9udF9BZGRSZWYo
WFBUSV9HZXRJbnRlcmZhY2VJbmZvTWFuYWdlcigpKTsKICAgICAgZG8geyBpZiAoIShpaW0pKSB7
IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNDAxMTFMKTsgfSB9IHdoaWxlICgwKTsKCiAgICAg
IG5zQ09NUHRyPG5zSUludGVyZmFjZUluZm8+IGlmX2luZm87CiAgICAgIGlpbS0+R2V0SW5mb0Zv
cklJRChwcmltYXJ5X2lpZCwgZ2V0dGVyX0FkZFJlZnMoaWZfaW5mbykpOwogICAgICBkbyB7IGlm
ICghKGlmX2luZm8pKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsgfSB9IHdo
aWxlICgwKTsKCiAgICAgIG5zQ09NUHRyPG5zSUludGVyZmFjZUluZm8+IHBhcmVudDsKICAgICAg
bnNJSUQgKmlpZCA9IDA7CgogICAgICBpZiAoY2lfZGF0YSAmJiAhY2lfZGF0YS0+bUhhc0NsYXNz
SW50ZXJmYWNlKSB7CiAgICAgICAgaWZfaW5mby0+R2V0SW50ZXJmYWNlSUlEKCZpaWQpOwogICAg
ICB9IGVsc2UgewogICAgICAgIGlmX2luZm8tPkdldFBhcmVudChnZXR0ZXJfQWRkUmVmcyhwYXJl
bnQpKTsKICAgICAgICBkbyB7IGlmICghKHBhcmVudCkpIHsgOyByZXR1cm4gKChuc3Jlc3VsdCkg
MHg4MDAwZmZmZkwpOyB9IH0gd2hpbGUgKDApOwoKICAgICAgICBwYXJlbnQtPkdldEludGVyZmFj
ZUlJRCgmaWlkKTsKICAgICAgfQoKICAgICAgaWYgKGlpZCkgewogICAgICAgIGlmICghaWlkLT5F
cXVhbHMobnNDT01UeXBlSW5mbzxuc0lTdXBwb3J0cz46OkdldElJRCgpKSkgewogICAgICAgICAg
aWYgKGNpX2RhdGEgJiYgIWNpX2RhdGEtPm1IYXNDbGFzc0ludGVyZmFjZSkgewoKCgoKICAgICAg
ICAgICAgaWZfaW5mby0+R2V0TmFtZShnZXR0ZXJfQ29waWVzKGNsYXNzX3BhcmVudF9uYW1lKSk7
CiAgICAgICAgICB9IGVsc2UgewoKCgoKCiAgICAgICAgICAgIDsKCiAgICAgICAgICAgIHBhcmVu
dC0+R2V0TmFtZShnZXR0ZXJfQ29waWVzKGNsYXNzX3BhcmVudF9uYW1lKSk7CiAgICAgICAgICB9
CiAgICAgICAgfQoKICAgICAgICBuc01lbW9yeTo6RnJlZShpaWQpOwogICAgICB9CiAgICB9Cgog
ICAgSlNPYmplY3QgKnByb3RvID0gMDsKCiAgICBpZiAoY2xhc3NfcGFyZW50X25hbWUpIHsKICAg
ICAganN2YWwgdmFsOwoKICAgICAgaWYgKCE6OkpTX0dldFByb3BlcnR5KGN4LCBvYmosIEN1dFBy
ZWZpeChjbGFzc19wYXJlbnRfbmFtZSksICZ2YWwpKSB7CiAgICAgICAgcmV0dXJuICgobnNyZXN1
bHQpIDB4ODAwMGZmZmZMKTsKICAgICAgfQoKICAgICAgSlNPYmplY3QgKnRtcCA9ICgoKHZhbCkg
JiAoKChKU1VpbnQzMikxIDw8ICgzKSkgLSAxKSkgPT0gMHgwKSA/ICgoSlNPYmplY3QgKikoKHZv
aWQgKikoKHZhbCkgJiB+KGpzdmFsKSgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSkpIDogMDsK
CiAgICAgIGlmICh0bXApIHsKICAgICAgICBpZiAoITo6SlNfR2V0UHJvcGVydHkoY3gsIHRtcCwg
InByb3RvdHlwZSIsICZ2YWwpKSB7CiAgICAgICAgICByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAw
ZmZmZkwpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCgoKHZhbCkgJiAoKChKU1VpbnQzMikxIDw8
ICgzKSkgLSAxKSkgPT0gMHgwKSkgewogICAgICAgICAgcHJvdG8gPSAoKEpTT2JqZWN0ICopKCh2
b2lkICopKCh2YWwpICYgfihqc3ZhbCkoKChKU1VpbnQzMikxIDw8ICgzKSkgLSAxKSkpKTsKICAg
ICAgICB9CiAgICAgIH0KICAgIH0KCiAgICBKU09iamVjdCAqZG90X3Byb3RvdHlwZSA9IDA7Cgog
ICAgaWYgKG5hbWVfc3RydWN0LT5tVHlwZSA9PSBuc0dsb2JhbE5hbWVTdHJ1Y3Q6OmVUeXBlRXh0
ZXJuYWxDb25zdHJ1Y3RvckFsaWFzKSB7CiAgICAgIG5hbWVfc3RydWN0ID0gYWxpYXNfc3RydWN0
OwogICAgfQoKICAgIGlmIChuYW1lX3N0cnVjdC0+bVR5cGUgPT0gbnNHbG9iYWxOYW1lU3RydWN0
OjplVHlwZUNsYXNzQ29uc3RydWN0b3IpIHsKICAgICAgUFJJbnQzMiBpZCA9IG5hbWVfc3RydWN0
LT5tRE9NQ2xhc3NJbmZvSUQ7CiAgICAgIDsKCiAgICAgIG5zRE9NQ2xhc3NJbmZvSUQgY2lfaWQg
PSAobnNET01DbGFzc0luZm9JRClpZDsKCiAgICAgIG5zQ09NUHRyPG5zSUNsYXNzSW5mbz4gY2ko
ZG9udF9BZGRSZWYoR2V0Q2xhc3NJbmZvSW5zdGFuY2UoY2lfaWQpKSk7CiAgICAgIGRvIHsgaWYg
KCEoY2kpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsgfSB9IHdoaWxlICgw
KTsKCiAgICAgIG5zQ09NUHRyPG5zSVhQQ29ubmVjdEpTT2JqZWN0SG9sZGVyPiBwcm90b19ob2xk
ZXI7CgogICAgICBuc3Jlc3VsdCBydiA9CiAgICAgICAgc1hQQ29ubmVjdC0+R2V0V3JhcHBlZE5h
dGl2ZVByb3RvdHlwZShjeCwgb2JqLCBjaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdldHRlcl9BZGRSZWZzKHByb3RvX2hvbGRlcikpOwogICAgICBkbyB7
IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4
ODAwMGZmZmZMKTsgfSB9IHdoaWxlICgwKTsKCiAgICAgIHJ2ID0gcHJvdG9faG9sZGVyLT5HZXRK
U09iamVjdCgmZG90X3Byb3RvdHlwZSk7CiAgICAgIGRvIHsgaWYgKCEoKCEoKHJ2KSAmIDB4ODAw
MDAwMDApKSkpIHsgOyByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwpOyB9IH0gd2hpbGUg
KDApOwoKICAgICAgSlNPYmplY3QgKnhwY19wcm90b19wcm90byA9IDo6SlNfR2V0UHJvdG90eXBl
KGN4LCBkb3RfcHJvdG90eXBlKTsKCiAgICAgIGlmIChwcm90byAmJiBKU19HZXRDbGFzcyhjeCwg
eHBjX3Byb3RvX3Byb3RvKSA9PSBzT2JqZWN0Q2xhc3MpIHsKICAgICAgICBpZiAoITo6SlNfU2V0
UHJvdG90eXBlKGN4LCBkb3RfcHJvdG90eXBlLCBwcm90bykpIHsKICAgICAgICAgIHJldHVybiAo
KG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7CiAgICAgICAgfQogICAgICB9CiAgICB9IGVsc2UgaWYg
KG5hbWVfc3RydWN0LT5tVHlwZSA9PSBuc0dsb2JhbE5hbWVTdHJ1Y3Q6OmVUeXBlRXh0ZXJuYWxD
bGFzc0luZm8pIHsKICAgICAgbnNDT01QdHI8bnNJQ2xhc3NJbmZvPiBjaSA9CiAgICAgICAgZ2V0
dGVyX0FkZFJlZnMoR2V0Q2xhc3NJbmZvSW5zdGFuY2UobmFtZV9zdHJ1Y3QtPm1EYXRhKSk7CiAg
ICAgIGRvIHsgaWYgKCEoY2kpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsg
fSB9IHdoaWxlICgwKTsKCiAgICAgIG5zQ09NUHRyPG5zSVhQQ29ubmVjdEpTT2JqZWN0SG9sZGVy
PiBwcm90b19ob2xkZXI7CgogICAgICBuc3Jlc3VsdCBydiA9CiAgICAgICAgc1hQQ29ubmVjdC0+
R2V0V3JhcHBlZE5hdGl2ZVByb3RvdHlwZShjeCwgb2JqLCBjaSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHRlcl9BZGRSZWZzKHByb3RvX2hvbGRlcikp
OwogICAgICBkbyB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0dXJuICgo
bnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsgfSB9IHdoaWxlICgwKTsKCiAgICAgIHJ2ID0gcHJvdG9f
aG9sZGVyLT5HZXRKU09iamVjdCgmZG90X3Byb3RvdHlwZSk7CiAgICAgIGRvIHsgaWYgKCEoKCEo
KHJ2KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwp
OyB9IH0gd2hpbGUgKDApOwoKICAgICAgSlNPYmplY3QgKnhwY19wcm90b19wcm90byA9IDo6SlNf
R2V0UHJvdG90eXBlKGN4LCBkb3RfcHJvdG90eXBlKTsKCiAgICAgIGlmIChwcm90byAmJiBKU19H
ZXRDbGFzcyhjeCwgeHBjX3Byb3RvX3Byb3RvKSA9PSBzT2JqZWN0Q2xhc3MpIHsKICAgICAgICBp
ZiAoITo6SlNfU2V0UHJvdG90eXBlKGN4LCBkb3RfcHJvdG90eXBlLCBwcm90bykpIHsKICAgICAg
ICAgIHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7CiAgICAgICAgfQogICAgICB9CiAg
ICB9IGVsc2UgewogICAgICBkb3RfcHJvdG90eXBlID0gOjpKU19OZXdPYmplY3QoY3gsICZzRE9N
Q29uc3RydWN0b3JQcm90b0NsYXNzLCBwcm90bywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9iaik7CiAgICAgIGRvIHsgaWYgKCEoZG90X3Byb3RvdHlwZSkpIHsgOyByZXR1
cm4gKChuc3Jlc3VsdCkgMHg4MDA3MDAwZUwpOyB9IH0gd2hpbGUgKDApOwogICAgfQoKICAgIGpz
dmFsIHYgPSAoKGpzdmFsKShkb3RfcHJvdG90eXBlKSk7CgogICAgaWYgKCE6OkpTX1NldFByb3Bl
cnR5KGN4LCBjbGFzc19vYmosICJwcm90b3R5cGUiLCAmdikpIHsKICAgICAgcmV0dXJuICgobnNy
ZXN1bHQpIDB4ODAwMGZmZmZMKTsKICAgIH0KCiAgICAqZGlkX3Jlc29sdmUgPSAxOwoKICAgIHJl
dHVybiAwOwogIH0KCiAgaWYgKG5hbWVfc3RydWN0LT5tVHlwZSA9PSBuc0dsb2JhbE5hbWVTdHJ1
Y3Q6OmVUeXBlRXh0ZXJuYWxDb25zdHJ1Y3RvcikgewoKICAgIEpTT2JqZWN0KiBjbGFzc19vYmog
PSA6OkpTX0RlZmluZU9iamVjdChjeCwgb2JqLCA6OkpTX0dldFN0cmluZ0J5dGVzKHN0ciksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNET01KU0NsYXNzLCAw
LCAwKTsKICAgIGlmICghY2xhc3Nfb2JqKSB7CiAgICAgIHJldHVybiAoKG5zcmVzdWx0KSAweDgw
MDBmZmZmTCk7CiAgICB9CgogICAgaWYgKCE6OkpTX1NldFByaXZhdGUoY3gsIGNsYXNzX29iaiwK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8IHZvaWQgKiA+KHN0YXRpY19jYXN0
PCBjb25zdCB2b2lkICogPihjbGFzc19uYW1lKSkpKSB7CgoKICAgICAgcmV0dXJuICgobnNyZXN1
bHQpIDB4ODAwMGZmZmZMKTsKICAgIH0KCiAgICAqZGlkX3Jlc29sdmUgPSAxOwoKICAgIHJldHVy
biAwOwogIH0KCiAgaWYgKG5hbWVfc3RydWN0LT5tVHlwZSA9PSBuc0dsb2JhbE5hbWVTdHJ1Y3Q6
OmVUeXBlUHJvcGVydHkpIHsKICAgIG5zQ09NUHRyPG5zSVN1cHBvcnRzPiBuYXRpdmUoZG9fQ3Jl
YXRlSW5zdGFuY2UobmFtZV9zdHJ1Y3QtPm1DSUQsICZydikpOwogICAgZG8geyBpZiAoISgoISgo
cnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsgfSB9IHdoaWxlICgwKTsKCiAgICBq
c3ZhbCBwcm9wX3ZhbDsKCiAgICBuc0NPTVB0cjxuc0lTY3JpcHRPYmplY3RPd25lcj4gb3duZXIo
ZG9fUXVlcnlJbnRlcmZhY2UobmF0aXZlKSk7CiAgICBpZiAob3duZXIpIHsKICAgICAgbnNDT01Q
dHI8bnNJU2NyaXB0Q29udGV4dD4gY29udGV4dDsKICAgICAgbnNKU1V0aWxzOjpHZXRTdGF0aWNT
Y3JpcHRDb250ZXh0KGN4LCBvYmosIGdldHRlcl9BZGRSZWZzKGNvbnRleHQpKTsKICAgICAgZG8g
eyBpZiAoIShjb250ZXh0KSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7IH0g
fSB3aGlsZSAoMCk7CgogICAgICBKU09iamVjdCAqcHJvcF9vYmogPSAwOwoKICAgICAgcnYgPSBv
d25lci0+R2V0U2NyaXB0T2JqZWN0KGNvbnRleHQsICh2b2lkKiopJnByb3Bfb2JqKTsKICAgICAg
ZG8geyBpZiAoIShwcm9wX29iaikpIHsgOyByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwp
OyB9IH0gd2hpbGUgKDApOwoKICAgICAgcHJvcF92YWwgPSAoKGpzdmFsKShwcm9wX29iaikpOwog
ICAgfSBlbHNlIHsKICAgICAgcnYgPSBXcmFwTmF0aXZlKGN4LCA6OkpTX0dldEdsb2JhbE9iamVj
dChjeCksIG5hdGl2ZSwKICAgICAgICAgICAgICAgICAgICAgIG5zQ09NVHlwZUluZm88bnNJU3Vw
cG9ydHM+OjpHZXRJSUQoKSwgJnByb3BfdmFsKTsKICAgIH0KCiAgICBkbyB7IGlmICghKCghKChy
dikgJiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0dXJuIHJ2OyB9IH0gd2hpbGUgKDApOwoKICAgIFBS
Qm9vbCByZXR2YWwgPSA6OkpTX0RlZmluZVVDUHJvcGVydHkoY3gsIG9iaiwgOjpKU19HZXRTdHJp
bmdDaGFycyhzdHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
OkpTX0dldFN0cmluZ0xlbmd0aChzdHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwcm9wX3ZhbCwgMCwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHgwMSB8IDB4MDIpOwogICAgKmRpZF9yZXNvbHZlID0gMTsKCiAgICByZXR1
cm4gcmV0dmFsID8gMCA6ICgobnNyZXN1bHQpIDB4ODAwMDQwMDVMKTsKICB9CgogIGlmIChuYW1l
X3N0cnVjdC0+bVR5cGUgPT0gbnNHbG9iYWxOYW1lU3RydWN0OjplVHlwZUR5bmFtaWNOYW1lU2V0
KSB7CiAgICBuc0NPTVB0cjxuc0lTY3JpcHRFeHRlcm5hbE5hbWVTZXQ+IG5hbWVzZXQgPQogICAg
ICBkb19DcmVhdGVJbnN0YW5jZShuYW1lX3N0cnVjdC0+bUNJRCwgJnJ2KTsKICAgIGRvIHsgaWYg
KCEoKCEoKHJ2KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7
CgogICAgbnNDT01QdHI8bnNJU2NyaXB0R2xvYmFsT2JqZWN0PiBzZ28oZG9fUXVlcnlJbnRlcmZh
Y2UobmF0aXZlKSk7CiAgICBkbyB7IGlmICghKHNnbykpIHsgOyByZXR1cm4gKChuc3Jlc3VsdCkg
MHg4MDAwZmZmZkwpOyB9IH0gd2hpbGUgKDApOwoKICAgIG5zQ09NUHRyPG5zSVNjcmlwdENvbnRl
eHQ+IGNvbnRleHQ7CgogICAgc2dvLT5HZXRDb250ZXh0KGdldHRlcl9BZGRSZWZzKGNvbnRleHQp
KTsKICAgIGRvIHsgaWYgKCEoY29udGV4dCkpIHsgOyByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAw
ZmZmZkwpOyB9IH0gd2hpbGUgKDApOwoKICAgIHJ2ID0gbmFtZXNldC0+SW5pdGlhbGl6ZU5hbWVT
ZXQoY29udGV4dCk7CgogICAgKmRpZF9yZXNvbHZlID0gMTsKICB9CgogIHJldHVybiBydjsKfQoK
Cm5zcmVzdWx0Cm5zV2luZG93U0g6OkNhY2hlRG9jdW1lbnRQcm9wZXJ0eShKU0NvbnRleHQgKmN4
LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJRE9N
V2luZG93ICp3aW5kb3cpCnsKICBuc0NPTVB0cjxuc0lET01Eb2N1bWVudD4gZG9jdW1lbnQ7CiAg
bnNyZXN1bHQgcnYgPSB3aW5kb3ctPkdldERvY3VtZW50KGdldHRlcl9BZGRSZWZzKGRvY3VtZW50
KSk7CiAgZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsg
fSB9IHdoaWxlICgwKTsKCiAganN2YWwgdjsKICBydiA9IFdyYXBOYXRpdmUoY3gsIG9iaiwgZG9j
dW1lbnQsIG5zQ09NVHlwZUluZm88bnNJRE9NRG9jdW1lbnQ+OjpHZXRJSUQoKSwgJnYpOwogIGRv
IHsgaWYgKCEoKCEoKHJ2KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGls
ZSAoMCk7CgogIG5zRGVwZW5kZW50U3RyaW5nIGRvY19zdHIocmVpbnRlcnByZXRfY2FzdDwgY29u
c3QgbnNBU3RyaW5nOjpjaGFyX3R5cGUqID4oTCJkb2N1bWVudCIpLCBQUlVpbnQzMigoc2l6ZW9m
KEwiZG9jdW1lbnQiKS9zaXplb2Yod2NoYXJfdCkpLTEpKTsKCiAgaWYgKCE6OkpTX0RlZmluZVVD
UHJvcGVydHkoY3gsIG9iaiwgcmVpbnRlcnByZXRfY2FzdDwgY29uc3QganNjaGFyICogPihkb2Nf
c3RyLmdldCgpKSwKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jX3N0ci5MZW5ndGgo
KSwgdiwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAweDAyKSkgewogICAgcmV0
dXJuICgobnNyZXN1bHQpIDB4ODAwMDQwMDVMKTsKICB9CgogIHJldHVybiAwOwp9Cgpuc3Jlc3Vs
dApuc1dpbmRvd1NIOjpOZXdSZXNvbHZlKG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBw
ZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKm9iaiwg
anN2YWwgaWQsIFBSVWludDMyIGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0
ICoqb2JqcCwgUFJCb29sICpfcmV0dmFsKQp7CiAgSlNCb29sIGRpZF9yZXNvbHZlID0gKEpTSW50
bikwOwoKICBpZiAoITo6SlNfUmVzb2x2ZVN0YW5kYXJkQ2xhc3MoY3gsIG9iaiwgaWQsICZkaWRf
cmVzb2x2ZSkpIHsKICAgICpfcmV0dmFsID0gKEpTSW50bikwOwoKICAgIHJldHVybiAoKG5zcmVz
dWx0KSAweDgwMDBmZmZmTCk7CiAgfQoKICBpZiAoZGlkX3Jlc29sdmUpIHsKICAgICpvYmpwID0g
b2JqOwoKICAgIHJldHVybiAwOwogIH0KCiAgaWYgKGlkID09IHNDb25zdHJ1Y3Rvcl9pZCAmJiAh
KGZsYWdzICYgMHgwMikpIHsKICAgIHJldHVybiBSZXNvbHZlQ29uc3RydWN0b3IoY3gsIG9iaiwg
b2JqcCk7CiAgfQoKICBpZiAoKCgoaWQpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09
IDB4NCkpIHsKICAgIEpTU3RyaW5nICpzdHIgPSAoKEpTU3RyaW5nICopKCh2b2lkICopKChpZCkg
JiB+KGpzdmFsKSgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSkpOwogICAgbnNDT01QdHI8bnNJ
U3VwcG9ydHM+IG5hdGl2ZTsKICAgIHdyYXBwZXItPkdldE5hdGl2ZShnZXR0ZXJfQWRkUmVmcyhu
YXRpdmUpKTsKCiAgICBuc0NPTVB0cjxuc0lTY3JpcHRHbG9iYWxPYmplY3Q+IHNnbyhkb19RdWVy
eUludGVyZmFjZShuYXRpdmUpKTsKICAgIGRvIHsgaWYgKCEoc2dvKSkgeyA7IHJldHVybiAoKG5z
cmVzdWx0KSAweDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7CgogICAgbnNDT01QdHI8bnNJU2Ny
aXB0Q29udGV4dD4gbXlfY29udGV4dDsKICAgIHNnby0+R2V0Q29udGV4dChnZXR0ZXJfQWRkUmVm
cyhteV9jb250ZXh0KSk7CgogICAgaWYgKCFteV9jb250ZXh0IHx8ICgobXlfY29udGV4dC0+SXND
b250ZXh0SW5pdGlhbGl6ZWQoKSkgJiAweDgwMDAwMDAwKSkgewoKCgogICAgICByZXR1cm4gMDsK
ICAgIH0KCiAgICBuc3Jlc3VsdCBydiA9IDA7CgogICAgaWYgKCEoZmxhZ3MgJiAweDAyKSkgewoK
CiAgICAgIHJ2ID0gR2xvYmFsUmVzb2x2ZShuYXRpdmUsIGN4LCBvYmosIHN0ciwgZmxhZ3MsICZk
aWRfcmVzb2x2ZSk7CiAgICAgIGRvIHsgaWYgKCEoKCEoKHJ2KSAmIDB4ODAwMDAwMDApKSkpIHsg
OyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7CgogICAgICBpZiAoZGlkX3Jlc29sdmUpIHsKCgog
ICAgICAgICpvYmpwID0gb2JqOwoKICAgICAgICByZXR1cm4gMDsKICAgICAgfQogICAgfQoKCgoK
CiAgICBuc0NPTVB0cjxuc0lEb2NTaGVsbD4gZG9jU2hlbGw7CgogICAgc2dvLT5HZXREb2NTaGVs
bChnZXR0ZXJfQWRkUmVmcyhkb2NTaGVsbCkpOwoKICAgIG5zQ09NUHRyPG5zSURvY1NoZWxsVHJl
ZU5vZGU+IGRzbihkb19RdWVyeUludGVyZmFjZShkb2NTaGVsbCkpOwoKICAgIFBSSW50MzIgY291
bnQgPSAwOwoKICAgIGlmIChkc24pIHsKICAgICAgZHNuLT5HZXRDaGlsZENvdW50KCZjb3VudCk7
CiAgICB9CgogICAgaWYgKGNvdW50ID4gMCkgewogICAgICBuc0NPTVB0cjxuc0lEb2NTaGVsbFRy
ZWVJdGVtPiBjaGlsZDsKCiAgICAgIGNvbnN0IGpzY2hhciAqY2hhcnMgPSA6OkpTX0dldFN0cmlu
Z0NoYXJzKHN0cik7CgogICAgICBkc24tPkZpbmRDaGlsZFdpdGhOYW1lKHJlaW50ZXJwcmV0X2Nh
c3Q8IGNvbnN0IFBSVW5pY2hhciogPihjaGFycyksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMCwgMSwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR0ZXJfQWRkUmVmcyhj
aGlsZCkpOwoKICAgICAgbnNDT01QdHI8bnNJRE9NV2luZG93PiBjaGlsZF93aW4oZG9fR2V0SW50
ZXJmYWNlKGNoaWxkKSk7CgogICAgICBpZiAoY2hpbGRfd2luKSB7CgoKCgogICAgICAgIGpzdmFs
IHY7CiAgICAgICAgcnYgPSBXcmFwTmF0aXZlKGN4LCA6OkpTX0dldEdsb2JhbE9iamVjdChjeCks
IGNoaWxkX3dpbiwKICAgICAgICAgICAgICAgICAgICAgICAgbnNDT01UeXBlSW5mbzxuc0lET01X
aW5kb3dJbnRlcm5hbD46OkdldElJRCgpLCAmdik7CiAgICAgICAgZG8geyBpZiAoISgoISgocnYp
ICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsgfSB9IHdoaWxlICgwKTsKIyA0MDI1ICJu
c0RPTUNsYXNzSW5mby5jcHAiCiAgICAgICAgc0RvU2VjdXJpdHlDaGVja0luQWRkUHJvcGVydHkg
PSAwOwoKICAgICAgICBQUkJvb2wgb2sgPSA6OkpTX0RlZmluZVVDUHJvcGVydHkoY3gsIG9iaiwg
Y2hhcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6SlNfR2V0
U3RyaW5nTGVuZ3RoKHN0ciksIHYsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAsIDApOwoKICAgICAgICBzRG9TZWN1cml0eUNoZWNrSW5BZGRQcm9wZXJ0eSA9
IDE7CgogICAgICAgIGlmICghb2spIHsKICAgICAgICAgIHJldHVybiAoKG5zcmVzdWx0KSAweDgw
MDA0MDA1TCk7CiAgICAgICAgfQoKICAgICAgICAqb2JqcCA9IG9iajsKCiAgICAgICAgcmV0dXJu
IDA7CiAgICAgIH0KICAgIH0KCiAgICBpZiAoaWQgPT0gc19jb250ZW50X2lkKSB7CgoKCiAgICAg
IEpTT2JqZWN0KiBnZXR0ZXJPYmo7CiAgICAgIHJ2ID0gbXlfY29udGV4dC0+Q29tcGlsZUZ1bmN0
aW9uKG9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNDQXV0b1N0
cmluZygiX2NvbnRlbnQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8IGNvbnN0IG5zQUZsYXRTdHJp
bmcmID4obnNEZXBlbmRlbnRTdHJpbmcocmVpbnRlcnByZXRfY2FzdDwgY29uc3QgbnNBU3RyaW5n
OjpjaGFyX3R5cGUqID4oTCJyZXR1cm4gdGhpcy5jb250ZW50OyIpLCBQUlVpbnQzMigoc2l6ZW9m
KEwicmV0dXJuIHRoaXMuY29udGVudDsiKS9zaXplb2Yod2NoYXJfdCkpLTEpKSksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKikgJmdl
dHRlck9iaik7CiAgICAgIGRvIHsgaWYgKCEoKCEoKHJ2KSAmIDB4ODAwMDAwMDApKSAmJiBnZXR0
ZXJPYmopKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMDQwMDVMKTsgfSB9IHdoaWxlICgw
KTsKCiAgICAgIGlmICghOjpKU19EZWZpbmVVQ1Byb3BlcnR5KGN4LCBvYmosIDo6SlNfR2V0U3Ry
aW5nQ2hhcnMoc3RyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpKU19HZXRT
dHJpbmdMZW5ndGgoc3RyKSwgKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEp
IHwgMHgxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEpTUHJvcGVydHlPcCln
ZXR0ZXJPYmosIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEgfCAweDEw
IHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MCkpIHsKICAgICAgICByZXR1
cm4gKChuc3Jlc3VsdCkgMHg4MDAwNDAwNUwpOwogICAgICB9CgogICAgICAqb2JqcCA9IG9iajsK
CiAgICAgIHJldHVybiAwOwogICAgfQoKICAgIGlmIChpZCA9PSBzTG9jYXRpb25faWQpIHsKCgoK
CgogICAgICBuc0NPTVB0cjxuc0lET01XaW5kb3dJbnRlcm5hbD4gd2luZG93KGRvX1F1ZXJ5SW50
ZXJmYWNlKG5hdGl2ZSkpOwogICAgICBkbyB7IGlmICghKHdpbmRvdykpIHsgOyByZXR1cm4gKChu
c3Jlc3VsdCkgMHg4MDAwZmZmZkwpOyB9IH0gd2hpbGUgKDApOwoKICAgICAgbnNDT01QdHI8bnNJ
RE9NTG9jYXRpb24+IGxvY2F0aW9uOwogICAgICBydiA9IHdpbmRvdy0+R2V0TG9jYXRpb24oZ2V0
dGVyX0FkZFJlZnMobG9jYXRpb24pKTsKICAgICAgZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAw
MDAwMCkpKSkgeyA7IHJldHVybiBydjsgfSB9IHdoaWxlICgwKTsKCiAgICAgIGpzdmFsIHY7CiAg
ICAgIHJ2ID0gV3JhcE5hdGl2ZShjeCwgb2JqLCBsb2NhdGlvbiwgbnNDT01UeXBlSW5mbzxuc0lE
T01Mb2NhdGlvbj46OkdldElJRCgpLCAmdik7CiAgICAgIGRvIHsgaWYgKCEoKCEoKHJ2KSAmIDB4
ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7CgogICAgICBzRG9TZWN1
cml0eUNoZWNrSW5BZGRQcm9wZXJ0eSA9IDA7CgogICAgICBKU0Jvb2wgb2sgPSA6OkpTX0RlZmlu
ZVVDUHJvcGVydHkoY3gsIG9iaiwgOjpKU19HZXRTdHJpbmdDaGFycyhzdHIpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpKU19HZXRTdHJpbmdMZW5ndGgoc3RyKSwg
diwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDApOwoKICAg
ICAgc0RvU2VjdXJpdHlDaGVja0luQWRkUHJvcGVydHkgPSAxOwoKICAgICAgaWYgKCFvaykgewog
ICAgICAgIHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDA0MDA1TCk7CiAgICAgIH0KCiAgICAgICpv
YmpwID0gb2JqOwoKICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgaWYgKGZsYWdzICYgMHgwMikg
ewogICAgICBpZiAoSXNSZWFkb25seVJlcGxhY2VhYmxlKGlkKSB8fAogICAgICAgICAgKCEoZmxh
Z3MgJiAweDAxKSAmJiBJc1dyaXRhYmxlUmVwbGFjZWFibGUoaWQpKSkgewoKCgoKCgogICAgICAg
IGlmICghOjpKU19EZWZpbmVVQ1Byb3BlcnR5KGN4LCBvYmosIDo6SlNfR2V0U3RyaW5nQ2hhcnMo
c3RyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OkpTX0dldFN0cmluZ0xl
bmd0aChzdHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKGpzdmFsKSgw
IC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4MSksIDAsIDAsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHgwMSkpIHsKICAgICAgICAgIHJldHVybiAoKG5zcmVzdWx0
KSAweDgwMDA0MDA1TCk7CiAgICAgICAgfQoKICAgICAgICAqb2JqcCA9IG9iajsKCiAgICAgICAg
cmV0dXJuIDA7CiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgIGlmIChpZCA9PSBzTmF2aWdhdG9y
X2lkKSB7CiAgICAgICAgbnNDT01QdHI8bnNJRE9NV2luZG93SW50ZXJuYWw+IHdpbmRvdyhkb19R
dWVyeUludGVyZmFjZShuYXRpdmUpKTsKICAgICAgICBkbyB7IGlmICghKHdpbmRvdykpIHsgOyBy
ZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwpOyB9IH0gd2hpbGUgKDApOwoKICAgICAgICBu
c0NPTVB0cjxuc0lET01OYXZpZ2F0b3I+IG5hdmlnYXRvcjsKICAgICAgICBydiA9IHdpbmRvdy0+
R2V0TmF2aWdhdG9yKGdldHRlcl9BZGRSZWZzKG5hdmlnYXRvcikpOwogICAgICAgIGRvIHsgaWYg
KCEoKCEoKHJ2KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7
CgogICAgICAgIGpzdmFsIHY7CiAgICAgICAgcnYgPSBXcmFwTmF0aXZlKGN4LCBvYmosIG5hdmln
YXRvciwgbnNDT01UeXBlSW5mbzxuc0lET01OYXZpZ2F0b3I+OjpHZXRJSUQoKSwgJnYpOwogICAg
ICAgIGRvIHsgaWYgKCEoKCEoKHJ2KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0g
fSB3aGlsZSAoMCk7CgogICAgICAgIGlmICghOjpKU19EZWZpbmVVQ1Byb3BlcnR5KGN4LCBvYmos
IDo6SlNfR2V0U3RyaW5nQ2hhcnMoc3RyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6OkpTX0dldFN0cmluZ0xlbmd0aChzdHIpLCB2LCAwLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAsIDApKSB7CiAgICAgICAgICByZXR1cm4gKChuc3Jlc3VsdCkgMHg4
MDAwNDAwNUwpOwogICAgICAgIH0KCiAgICAgICAgKm9ianAgPSBvYmo7CgogICAgICAgIHJldHVy
biAwOwogICAgICB9CgogICAgICBpZiAoaWQgPT0gc0RvY3VtZW50X2lkKSB7CiAgICAgICAgbnND
T01QdHI8bnNJRE9NV2luZG93SW50ZXJuYWw+IHdpbmRvdyhkb19RdWVyeUludGVyZmFjZShuYXRp
dmUpKTsKICAgICAgICBkbyB7IGlmICghKHdpbmRvdykpIHsgOyByZXR1cm4gKChuc3Jlc3VsdCkg
MHg4MDAwZmZmZkwpOyB9IH0gd2hpbGUgKDApOwoKICAgICAgICBydiA9IENhY2hlRG9jdW1lbnRQ
cm9wZXJ0eShjeCwgb2JqLCB3aW5kb3cpOwogICAgICAgIGRvIHsgaWYgKCEoKCEoKHJ2KSAmIDB4
ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7CgogICAgICAgICpvYmpw
ID0gb2JqOwoKICAgICAgICByZXR1cm4gMDsKICAgICAgfQoKICAgICAgaWYgKGlkID09IHNXaW5k
b3dfaWQpIHsKICAgICAgICBqc3ZhbCB2OwogICAgICAgIHJ2ID0gV3JhcE5hdGl2ZShjeCwgb2Jq
LCBuYXRpdmUsIG5zQ09NVHlwZUluZm88bnNJRE9NV2luZG93Pjo6R2V0SUlEKCksICZ2KTsKICAg
ICAgICBkbyB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0dXJuIHJ2OyB9
IH0gd2hpbGUgKDApOwoKICAgICAgICBpZiAoITo6SlNfRGVmaW5lVUNQcm9wZXJ0eShjeCwgb2Jq
LCA6OkpTX0dldFN0cmluZ0NoYXJzKHN0ciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOjpKU19HZXRTdHJpbmdMZW5ndGgoc3RyKSwgdiwgMCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLCAweDAyKSkgewogICAgICAgICAgcmV0dXJuICgobnNyZXN1bHQp
IDB4ODAwMDQwMDVMKTsKICAgICAgICB9CgogICAgICAgICpvYmpwID0gb2JqOwoKICAgICAgICBy
ZXR1cm4gMDsKICAgICAgfQogICAgfQoKICAgIHJldHVybiBuc0V2ZW50UmVjaWV2ZXJTSDo6TmV3
UmVzb2x2ZSh3cmFwcGVyLCBjeCwgb2JqLCBpZCwgZmxhZ3MsIG9ianAsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX3JldHZhbCk7CiAgfQoKICByZXR1cm4gMDsKfQoK
bnNyZXN1bHQKbnNXaW5kb3dTSDo6RmluYWxpemUobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAq
d3JhcHBlciwgSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKm9i
aikKewogIG5zQ09NUHRyPG5zSVN1cHBvcnRzPiBuYXRpdmU7CiAgd3JhcHBlci0+R2V0TmF0aXZl
KGdldHRlcl9BZGRSZWZzKG5hdGl2ZSkpOwogIGRvIHsgaWYgKCEobmF0aXZlKSkgeyA7IHJldHVy
biAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7CgogIG5zQ09NUHRyPG5z
SVNjcmlwdEdsb2JhbE9iamVjdD4gc2dvKGRvX1F1ZXJ5SW50ZXJmYWNlKG5hdGl2ZSkpOwogIGRv
IHsgaWYgKCEoc2dvKSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7IH0gfSB3
aGlsZSAoMCk7CgogIHJldHVybiBzZ28tPk9uRmluYWxpemUob2JqKTsKfQoKCgoKbnNyZXN1bHQK
bnNMb2NhdGlvblNIOjpDaGVja0FjY2Vzcyhuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFw
cGVyLCBKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpv
YmosIGpzdmFsIGlkLCBQUlVpbnQzMiBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgIGpz
dmFsICp2cCwgUFJCb29sICpfcmV0dmFsKQp7CiAgaWYgKChtb2RlICYgKEpTQUNDX1dSSVRFIC0g
MSkpID09IEpTQUNDX1BST1RPICYmIChtb2RlICYgSlNBQ0NfV1JJVEUpKSB7CgoKCiAgICAqX3Jl
dHZhbCA9IDA7CgogICAgcmV0dXJuICgobnNyZXN1bHQpICgoKFBSVWludDMyKSgxKTw8MzEpIHwg
KChQUlVpbnQzMikoMTQgKzB4NDUpPDwxNikgfCAoKFBSVWludDMyKSgxMDAwKSkpICk7CiAgfQoK
ICByZXR1cm4gbnNET01HZW5lcmljU0g6OkNoZWNrQWNjZXNzKHdyYXBwZXIsIGN4LCBvYmosIGlk
LCBtb2RlLCB2cCwgX3JldHZhbCk7Cn0KCgoKCm5zcmVzdWx0Cm5zTm9kZVNIOjpQcmVDcmVhdGUo
bnNJU3VwcG9ydHMgKm5hdGl2ZU9iaiwgSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKmdsb2JhbE9i
aiwKICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqKnBhcmVudE9iaikKewogIG5zQ09NUHRy
PG5zSUNvbnRlbnQ+IGNvbnRlbnQoZG9fUXVlcnlJbnRlcmZhY2UobmF0aXZlT2JqKSk7CiAgbnND
T01QdHI8bnNJRG9jdW1lbnQ+IGRvYzsKCiAgaWYgKGNvbnRlbnQpIHsKICAgIGNvbnRlbnQtPkdl
dERvY3VtZW50KCpnZXR0ZXJfQWRkUmVmcyhkb2MpKTsKICB9CgogIGlmICghZG9jKSB7CiMgNDI1
NCAibnNET01DbGFzc0luZm8uY3BwIgogICAgZG9jID0gZG9fUXVlcnlJbnRlcmZhY2UobmF0aXZl
T2JqKTsKCiAgICBpZiAoIWRvYykgewoKCgogICAgICAqcGFyZW50T2JqID0gZ2xvYmFsT2JqOwoK
ICAgICAgcmV0dXJuIDA7CiAgICB9CiAgfQoKICBuc0lTdXBwb3J0cyAqbmF0aXZlX3BhcmVudCA9
IDA7CgogIGlmIChjb250ZW50KSB7CiAgICBpZiAoY29udGVudC0+SXNDb250ZW50T2ZUeXBlKG5z
SUNvbnRlbnQ6OmVFTEVNRU5UIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJ
Q29udGVudDo6ZUhUTUwgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lDb250
ZW50OjplSFRNTF9GT1JNX0NPTlRST0wpKSB7CiAgICAgIG5zQ09NUHRyPG5zSUZvcm1Db250cm9s
PiBmb3JtX2NvbnRyb2woZG9fUXVlcnlJbnRlcmZhY2UoY29udGVudCkpOwoKICAgICAgaWYgKGZv
cm1fY29udHJvbCkgewogICAgICAgIG5zQ09NUHRyPG5zSURPTUhUTUxGb3JtRWxlbWVudD4gZm9y
bTsKCiAgICAgICAgZm9ybV9jb250cm9sLT5HZXRGb3JtKGdldHRlcl9BZGRSZWZzKGZvcm0pKTsK
CiAgICAgICAgbmF0aXZlX3BhcmVudCA9IGZvcm07CiAgICAgIH0KICAgIH0KCiAgICBpZiAoIW5h
dGl2ZV9wYXJlbnQpIHsKICAgICAgbnNDT01QdHI8bnNJQ29udGVudD4gcGFyZW50Q29udGVudDsK
CiAgICAgIGNvbnRlbnQtPkdldFBhcmVudCgqZ2V0dGVyX0FkZFJlZnMocGFyZW50Q29udGVudCkp
OwogICAgICBuYXRpdmVfcGFyZW50ID0gcGFyZW50Q29udGVudDsKCiAgICAgIGlmICghbmF0aXZl
X3BhcmVudCkgewogICAgICAgIG5hdGl2ZV9wYXJlbnQgPSBkb2M7CiAgICAgIH0KICAgIH0KICB9
CgogIGlmICghbmF0aXZlX3BhcmVudCkgewoKCgoKCgogICAgbnNDT01QdHI8bnNJU2NyaXB0R2xv
YmFsT2JqZWN0PiBzZ287CiAgICBkb2MtPkdldFNjcmlwdEdsb2JhbE9iamVjdChnZXR0ZXJfQWRk
UmVmcyhzZ28pKTsKCiAgICBpZiAoIXNnbykgewoKCgogICAgICAqcGFyZW50T2JqID0gZ2xvYmFs
T2JqOwoKICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgbmF0aXZlX3BhcmVudCA9IHNnbzsKICB9
CgogIGpzdmFsIHY7CgogIG5zcmVzdWx0IHJ2ID0gV3JhcE5hdGl2ZShjeCwgOjpKU19HZXRHbG9i
YWxPYmplY3QoY3gpLCBuYXRpdmVfcGFyZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICBu
c0NPTVR5cGVJbmZvPG5zSVN1cHBvcnRzPjo6R2V0SUlEKCksICZ2KTsKCiAgKnBhcmVudE9iaiA9
ICgoSlNPYmplY3QgKikoKHZvaWQgKikoKHYpICYgfihqc3ZhbCkoKChKU1VpbnQzMikxIDw8ICgz
KSkgLSAxKSkpKTsKCiAgcmV0dXJuIHJ2Owp9Cgpuc3Jlc3VsdApuc05vZGVTSDo6QWRkUHJvcGVy
dHkobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwgSlNDb250ZXh0ICpjeCwKICAg
ICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLCBqc3ZhbCAqdnAsIFBS
Qm9vbCAqX3JldHZhbCkKewogIG5zQ09NUHRyPG5zSVN1cHBvcnRzPiBuYXRpdmU7CiAgd3JhcHBl
ci0+R2V0TmF0aXZlKGdldHRlcl9BZGRSZWZzKG5hdGl2ZSkpOwoKICBuc0NPTVB0cjxuc0lET01O
b2RlPiBub2RlKGRvX1F1ZXJ5SW50ZXJmYWNlKG5hdGl2ZSkpOwoKICBuc0NPTVB0cjxuc0lEb2N1
bWVudD4gZG9jOwoKICBpZiAobm9kZSkgewogICAgbnNDT01QdHI8bnNJRE9NRG9jdW1lbnQ+IGRv
bWRvYzsKICAgIG5vZGUtPkdldE93bmVyRG9jdW1lbnQoZ2V0dGVyX0FkZFJlZnMoZG9tZG9jKSk7
CiAgICBkb2MgPSBkb19RdWVyeUludGVyZmFjZShkb21kb2MpOwogIH0KCiAgaWYgKCFkb2MpIHsK
ICAgIGRvYyA9IGRvX1F1ZXJ5SW50ZXJmYWNlKG5hdGl2ZSk7CiAgfQoKICBpZiAoZG9jKSB7CiAg
ICBuc0NPTVB0cjxuc0lDb250ZW50PiBjb250ZW50KGRvX1F1ZXJ5SW50ZXJmYWNlKG5vZGUpKTsK
ICAgIGRvYy0+QWRkUmVmZXJlbmNlKGNvbnRlbnQsIHdyYXBwZXIpOwogIH0KCiAgcmV0dXJuIDA7
Cn0KCm5zcmVzdWx0Cm5zTm9kZVNIOjpHZXRGbGFncyhQUlVpbnQzMiAqYUZsYWdzKQp7CiAgKmFG
bGFncyA9IChuc0lDbGFzc0luZm86Ok1BSU5fVEhSRUFEX09OTFkgfCBuc0lDbGFzc0luZm86OkRP
TV9PQkpFQ1QpIHwgbnNJQ2xhc3NJbmZvOjpDT05URU5UX05PREU7CgogIHJldHVybiAwOwp9CgoK
CgpQUkJvb2wKbnNFdmVudFJlY2lldmVyU0g6OlJlYWxseUlzRXZlbnROYW1lKGpzdmFsIGlkLCBq
c2NoYXIgYUZpcnN0Q2hhcikKewoKCiAgc3dpdGNoIChhRmlyc3RDaGFyKSB7CiAgY2FzZSAnYScg
OgogICAgcmV0dXJuIGlkID09IHNPbmFib3J0X2lkOwogIGNhc2UgJ2InIDoKICAgIHJldHVybiBp
ZCA9PSBzT25ibHVyX2lkOwogIGNhc2UgJ2UnIDoKICAgIHJldHVybiBpZCA9PSBzT25lcnJvcl9p
ZDsKICBjYXNlICdmJyA6CiAgICByZXR1cm4gaWQgPT0gc09uZm9jdXNfaWQ7CiAgY2FzZSAnYycg
OgogICAgcmV0dXJuICgoaWQgPT0gc09uY2hhbmdlX2lkKSB8fAogICAgICAgICAgICAoaWQgPT0g
c09uY2xpY2tfaWQpIHx8CiAgICAgICAgICAgIChpZCA9PSBzT25jb250ZXh0bWVudV9pZCkpOwog
IGNhc2UgJ2wnIDoKICAgIHJldHVybiBpZCA9PSBzT25sb2FkX2lkOwogIGNhc2UgJ3AnIDoKICAg
IHJldHVybiBpZCA9PSBzT25wYWludF9pZDsKICBjYXNlICdrJyA6CiAgICByZXR1cm4gKChpZCA9
PSBzT25rZXlkb3duX2lkKSB8fAogICAgICAgICAgICAoaWQgPT0gc09ua2V5cHJlc3NfaWQpIHx8
CiAgICAgICAgICAgIChpZCA9PSBzT25rZXl1cF9pZCkpOwogIGNhc2UgJ3UnIDoKICAgIHJldHVy
biBpZCA9PSBzT251bmxvYWRfaWQ7CiAgY2FzZSAnbScgOgogICAgcmV0dXJuICgoaWQgPT0gc09u
bW91c2Vtb3ZlX2lkKSB8fAogICAgICAgICAgICAoaWQgPT0gc09ubW91c2VvdXRfaWQpIHx8CiAg
ICAgICAgICAgIChpZCA9PSBzT25tb3VzZW92ZXJfaWQpIHx8CiAgICAgICAgICAgIChpZCA9PSBz
T25tb3VzZXVwX2lkKSB8fAogICAgICAgICAgICAoaWQgPT0gc09ubW91c2Vkb3duX2lkKSk7CiAg
Y2FzZSAncicgOgogICAgcmV0dXJuICgoaWQgPT0gc09ucmVzZXRfaWQpIHx8CiAgICAgICAgICAg
IChpZCA9PSBzT25yZXNpemVfaWQpKTsKICBjYXNlICdzJyA6CiAgICByZXR1cm4gKChpZCA9PSBz
T25zY3JvbGxfaWQpIHx8CiAgICAgICAgICAgIChpZCA9PSBzT25zZWxlY3RfaWQpIHx8CiAgICAg
ICAgICAgIChpZCA9PSBzT25zdWJtaXRfaWQpKTsKICB9CgogIHJldHVybiAwOwp9Cgpuc3Jlc3Vs
dApuc0V2ZW50UmVjaWV2ZXJTSDo6UmVnaXN0ZXJDb21waWxlSGFuZGxlcihuc0lYUENvbm5lY3RX
cmFwcGVkTmF0aXZlICp3cmFwcGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqc3ZhbCBpZCwgUFJCb29sIGNvbXBpbGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCAqZGlkX2NvbXBpbGUpCnsK
ICAqZGlkX2NvbXBpbGUgPSAwOwoKICBpZiAoIUlzRXZlbnROYW1lKGlkKSkgewogICAgcmV0dXJu
IDA7CiAgfQoKICBuc0NPTVB0cjxuc0lTY3JpcHRDb250ZXh0PiBzY3JpcHRfY3g7CiAgbnNyZXN1
bHQgcnYgPSBuc0pTVXRpbHM6OkdldFN0YXRpY1NjcmlwdENvbnRleHQoY3gsIG9iaiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR0ZXJfQWRkUmVm
cyhzY3JpcHRfY3gpKTsKICBkbyB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7IDsg
cmV0dXJuIHJ2OyB9IH0gd2hpbGUgKDApOwoKICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4gbmF0aXZl
OwogIHdyYXBwZXItPkdldE5hdGl2ZShnZXR0ZXJfQWRkUmVmcyhuYXRpdmUpKTsKICA7CgogIG5z
Q09NUHRyPG5zSURPTUV2ZW50UmVjZWl2ZXI+IHJlY2VpdmVyKGRvX1F1ZXJ5SW50ZXJmYWNlKG5h
dGl2ZSkpOwogIGRvIHsgaWYgKCEocmVjZWl2ZXIpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4
ODAwMGZmZmZMKTsgfSB9IHdoaWxlICgwKTsKCiAgbnNDT01QdHI8bnNJRXZlbnRMaXN0ZW5lck1h
bmFnZXI+IG1hbmFnZXI7CgogIHJlY2VpdmVyLT5HZXRMaXN0ZW5lck1hbmFnZXIoZ2V0dGVyX0Fk
ZFJlZnMobWFuYWdlcikpOwogIGRvIHsgaWYgKCEobWFuYWdlcikpIHsgOyByZXR1cm4gKChuc3Jl
c3VsdCkgMHg4MDAwZmZmZkwpOyB9IH0gd2hpbGUgKDApOwoKICBKU1N0cmluZyAqc3RyID0gKChK
U1N0cmluZyAqKSgodm9pZCAqKSgoaWQpICYgfihqc3ZhbCkoKChKU1VpbnQzMikxIDw8ICgzKSkg
LSAxKSkpKTsKICBjb25zdCBQUlVuaWNoYXIgKnVzdHIgPSByZWludGVycHJldF9jYXN0PCBjb25z
dCBQUlVuaWNoYXIgKiA+KDo6SlNfR2V0U3RyaW5nQ2hhcnMoc3RyKSk7CgoKICBuc0NPTVB0cjxu
c0lBdG9tPiBhdG9tKGdldHRlcl9BZGRSZWZzKE5TX05ld0F0b20odXN0cikpKTsKICBkbyB7IGlm
ICghKGF0b20pKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfSB9IHdoaWxl
ICgwKTsKCiAgaWYgKGNvbXBpbGUpIHsKICAgIHJ2ID0gbWFuYWdlci0+Q29tcGlsZVNjcmlwdEV2
ZW50TGlzdGVuZXIoc2NyaXB0X2N4LCBuYXRpdmUsIGF0b20sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRpZF9jb21waWxlKTsKICB9IGVsc2UgewogICAgcnYg
PSBtYW5hZ2VyLT5SZWdpc3RlclNjcmlwdEV2ZW50TGlzdGVuZXIoc2NyaXB0X2N4LCBuYXRpdmUs
IGF0b20pOwogIH0KCiAgcmV0dXJuIHJ2Owp9Cgpuc3Jlc3VsdApuc0V2ZW50UmVjaWV2ZXJTSDo6
TmV3UmVzb2x2ZShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBqc3ZhbCBp
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJVaW50MzIgZmxhZ3MsIEpTT2JqZWN0
ICoqb2JqcCwgUFJCb29sICpfcmV0dmFsKQp7CiAgaWYgKCEoKChpZCkgJiAoKChKU1VpbnQzMikx
IDw8ICgzKSkgLSAxKSkgPT0gMHg0KSkgewogICAgcmV0dXJuIDA7CiAgfQoKICBQUkJvb2wgZGlk
X2NvbXBpbGUgPSAwOwoKICBuc3Jlc3VsdCBydiA9IFJlZ2lzdGVyQ29tcGlsZUhhbmRsZXIod3Jh
cHBlciwgY3gsIG9iaiwgaWQsIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZkaWRfY29tcGlsZSk7CiAgZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkg
eyA7IHJldHVybiBydjsgfSB9IHdoaWxlICgwKTsKCiAgaWYgKGRpZF9jb21waWxlKSB7CiAgICAq
b2JqcCA9IG9iajsKICB9CgogIHJldHVybiBuc0RPTUNsYXNzSW5mbzo6TmV3UmVzb2x2ZSh3cmFw
cGVyLCBjeCwgb2JqLCBpZCwgZmxhZ3MsIG9ianAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9yZXR2YWwpOwp9Cgpuc3Jlc3VsdApuc0V2ZW50UmVjaWV2ZXJTSDo6U2V0UHJv
cGVydHkobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganN2YWwgKnZwLCBQUkJvb2wgKl9yZXR2YWwp
CnsKICBpZiAoOjpKU19UeXBlT2ZWYWx1ZShjeCwgKnZwKSAhPSBKU1RZUEVfRlVOQ1RJT04gfHwg
ISgoKGlkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7CiAgICByZXR1
cm4gMDsKICB9CgogIFBSQm9vbCBkaWRfY29tcGlsZTsKCiAgcmV0dXJuIFJlZ2lzdGVyQ29tcGls
ZUhhbmRsZXIod3JhcHBlciwgY3gsIG9iaiwgaWQsIDAsICZkaWRfY29tcGlsZSk7Cn0KIyA0NTA3
ICJuc0RPTUNsYXNzSW5mby5jcHAiCm5zcmVzdWx0Cm5zRWxlbWVudFNIOjpQb3N0Q3JlYXRlKG5z
SVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAg
ICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpvYmopCnsKICBuc3Jlc3VsdCBydiA9IG5zTm9kZVNI
OjpQb3N0Q3JlYXRlKHdyYXBwZXIsIGN4LCBvYmopOwogIGRvIHsgaWYgKCEoKCEoKHJ2KSAmIDB4
ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7CgogIG5zQ09NUHRyPG5z
SVN1cHBvcnRzPiBuYXRpdmU7CgogIHdyYXBwZXItPkdldE5hdGl2ZShnZXR0ZXJfQWRkUmVmcyhu
YXRpdmUpKTsKCiAgbnNDT01QdHI8bnNJQ29udGVudD4gY29udGVudChkb19RdWVyeUludGVyZmFj
ZShuYXRpdmUpKTsKICBkbyB7IGlmICghKGNvbnRlbnQpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQp
IDB4ODAwMGZmZmZMKTsgfSB9IHdoaWxlICgwKTsKCiAgbnNDT01QdHI8bnNJRG9jdW1lbnQ+IGRv
YzsKCiAgY29udGVudC0+R2V0RG9jdW1lbnQoKmdldHRlcl9BZGRSZWZzKGRvYykpOwoKICBpZiAo
IWRvYykgewoKCgogICAgcmV0dXJuIDA7CiAgfQoKCiAgbnNDT01QdHI8bnNJUHJlc1NoZWxsPiBz
aGVsbDsKICBkb2MtPkdldFNoZWxsQXQoMCwgZ2V0dGVyX0FkZFJlZnMoc2hlbGwpKTsKCiAgaWYg
KCFzaGVsbCkgewogICAgcmV0dXJuIDA7CiAgfQoKICBuc0lGcmFtZSogZnJhbWUgPSAwOwogIHNo
ZWxsLT5HZXRQcmltYXJ5RnJhbWVGb3IoY29udGVudCwgJmZyYW1lKTsKCiAgaWYgKGZyYW1lKSB7
CgoKICAgIHJldHVybiAwOwogIH0KCgoKCiAgbnNDT01QdHI8bnNJQmluZGluZ01hbmFnZXI+IGJp
bmRpbmdNYW5hZ2VyOwogIGRvYy0+R2V0QmluZGluZ01hbmFnZXIoZ2V0dGVyX0FkZFJlZnMoYmlu
ZGluZ01hbmFnZXIpKTsKICBkbyB7IGlmICghKGJpbmRpbmdNYW5hZ2VyKSkgeyA7IHJldHVybiAo
KG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7CgogIG5zQ09NUHRyPG5zSVhC
TEJpbmRpbmc+IGJpbmRpbmc7CiAgYmluZGluZ01hbmFnZXItPkdldEJpbmRpbmcoY29udGVudCwg
Z2V0dGVyX0FkZFJlZnMoYmluZGluZykpOwoKICBpZiAoYmluZGluZykgewoKCgogICAgcmV0dXJu
IDA7CiAgfQoKCiAgbnNDT01QdHI8bnNJUHJlc0NvbnRleHQ+IHBjdHg7CiAgc2hlbGwtPkdldFBy
ZXNDb250ZXh0KGdldHRlcl9BZGRSZWZzKHBjdHgpKTsKICBkbyB7IGlmICghKHBjdHgpKSB7IDsg
cmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsgfSB9IHdoaWxlICgwKTsKCgoKCgogIG5z
QXV0b1N0cmluZyBiaW5kaW5nVVJMOwogIHBjdHgtPkdldFhCTEJpbmRpbmdVUkwoY29udGVudCwg
YmluZGluZ1VSTCk7CiAgaWYgKGJpbmRpbmdVUkwuSXNFbXB0eSgpKSB7CgogICAgcmV0dXJuIDA7
CiAgfQoKCiAgUFJCb29sIGR1bW15OwoKICBuc0NPTVB0cjxuc0lYQkxTZXJ2aWNlPiB4YmxTZXJ2
aWNlKGRvX0dldFNlcnZpY2UoIkBtb3ppbGxhLm9yZy94Ymw7MSIpKTsKICBkbyB7IGlmICghKHhi
bFNlcnZpY2UpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwNDAxMTFMKTsgfSB9IHdoaWxl
ICgwKTsKCiAgeGJsU2VydmljZS0+TG9hZEJpbmRpbmdzKGNvbnRlbnQsIGJpbmRpbmdVUkwsIDAs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHRlcl9BZGRSZWZzKGJpbmRpbmcpLCAmZHVt
bXkpOwoKICBpZiAoYmluZGluZykgewogICAgYmluZGluZy0+RXhlY3V0ZUF0dGFjaGVkSGFuZGxl
cigpOwogIH0KCiAgcmV0dXJuIDA7Cn0KCgoKCm5zcmVzdWx0Cm5zQXJyYXlTSDo6R2V0SXRlbUF0
KG5zSVN1cHBvcnRzICphTmF0aXZlLCBQUlVpbnQzMiBhSW5kZXgsCiAgICAgICAgICAgICAgICAg
ICAgIG5zSVN1cHBvcnRzICoqYVJlc3VsdCkKewogIG5zQ09NUHRyPG5zSURPTU5vZGVMaXN0PiBs
aXN0KGRvX1F1ZXJ5SW50ZXJmYWNlKGFOYXRpdmUpKTsKICBkbyB7IGlmICghKGxpc3QpKSB7IDsg
cmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsgfSB9IHdoaWxlICgwKTsKCiAgbnNJRE9N
Tm9kZSAqbm9kZSA9IDA7CiAgbnNyZXN1bHQgcnYgPSBsaXN0LT5JdGVtKGFJbmRleCwgJm5vZGUp
OwoKICAqYVJlc3VsdCA9IG5vZGU7CgogIHJldHVybiBydjsKfQoKbnNyZXN1bHQKbnNBcnJheVNI
OjpHZXRQcm9wZXJ0eShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRl
eHQgKmN4LAogICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLCBq
c3ZhbCAqdnAsIFBSQm9vbCAqX3JldHZhbCkKewogIFBSQm9vbCBpc19udW1iZXIgPSAwOwogIGlu
dDMyIG4gPSBHZXRBcnJheUluZGV4RnJvbUlkKGN4LCBpZCwgJmlzX251bWJlcik7CgogIGlmIChp
c19udW1iZXIpIHsKICAgIGlmIChuIDwgMCkgewogICAgICByZXR1cm4gKChuc3Jlc3VsdCkgKCgo
UFJVaW50MzIpKDEpPDwzMSkgfCAoKFBSVWludDMyKSgxNCArMHg0NSk8PDE2KSB8ICgoUFJVaW50
MzIpKDEpKSkgKTsKICAgIH0KCiAgICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4gbmF0aXZlOwogICAg
d3JhcHBlci0+R2V0TmF0aXZlKGdldHRlcl9BZGRSZWZzKG5hdGl2ZSkpOwoKICAgIG5zQ09NUHRy
PG5zSVN1cHBvcnRzPiBhcnJheV9pdGVtOwoKICAgIG5zcmVzdWx0IHJ2ID0gR2V0SXRlbUF0KG5h
dGl2ZSwgbiwgZ2V0dGVyX0FkZFJlZnMoYXJyYXlfaXRlbSkpOwogICAgZG8geyBpZiAoISgoISgo
cnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsgfSB9IHdoaWxlICgwKTsKCiAgICBp
ZiAoYXJyYXlfaXRlbSkgewogICAgICBydiA9IFdyYXBOYXRpdmUoY3gsIDo6SlNfR2V0R2xvYmFs
T2JqZWN0KGN4KSwgYXJyYXlfaXRlbSwKICAgICAgICAgICAgICAgICAgICAgIG5zQ09NVHlwZUlu
Zm88bnNJU3VwcG9ydHM+OjpHZXRJSUQoKSwgdnApOwogICAgICBkbyB7IGlmICghKCghKChydikg
JiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0dXJuIHJ2OyB9IH0gd2hpbGUgKDApOwogICAgfQogIH0K
CiAgcmV0dXJuIDA7Cn0KCgoKCm5zcmVzdWx0Cm5zTmFtZWRBcnJheVNIOjpHZXRQcm9wZXJ0eShu
c0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsIGpzdmFsICp2cCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSQm9vbCAqX3JldHZhbCkKewogIGlmICgoKChp
ZCkgJiAoKChKU1VpbnQzMikxIDw8ICgzKSkgLSAxKSkgPT0gMHg0KSkgewogICAgbnNDT01QdHI8
bnNJU3VwcG9ydHM+IG5hdGl2ZTsKICAgIHdyYXBwZXItPkdldE5hdGl2ZShnZXR0ZXJfQWRkUmVm
cyhuYXRpdmUpKTsKCiAgICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4gaXRlbTsKCiAgICBKU1N0cmlu
ZyAqc3RyID0gKChKU1N0cmluZyAqKSgodm9pZCAqKSgoaWQpICYgfihqc3ZhbCkoKChKU1VpbnQz
MikxIDw8ICgzKSkgLSAxKSkpKTsKICAgIG5zRGVwZW5kZW50U3RyaW5nIG5hbWUocmVpbnRlcnBy
ZXRfY2FzdDwgY29uc3QgUFJVbmljaGFyICogPig6OkpTX0dldFN0cmluZ0NoYXJzKHN0cikpLAoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpKU19HZXRTdHJpbmdMZW5ndGgoc3RyKSk7Cgog
ICAgbnNyZXN1bHQgcnYgPSBHZXROYW1lZEl0ZW0obmF0aXZlLCBuYW1lLCBnZXR0ZXJfQWRkUmVm
cyhpdGVtKSk7CiAgICBkbyB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0
dXJuIHJ2OyB9IH0gd2hpbGUgKDApOwoKICAgIGlmIChpdGVtKSB7CiAgICAgIHJ2ID0gV3JhcE5h
dGl2ZShjeCwgOjpKU19HZXRHbG9iYWxPYmplY3QoY3gpLCBpdGVtLAogICAgICAgICAgICAgICAg
ICAgICAgbnNDT01UeXBlSW5mbzxuc0lTdXBwb3J0cz46OkdldElJRCgpLCB2cCk7CiAgICAgIGRv
IHsgaWYgKCEoKCEoKHJ2KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGls
ZSAoMCk7CgogICAgICByZXR1cm4gMDsKICAgIH0KCiAgICByZXR1cm4gMDsKICB9CgogIHJldHVy
biBuc0FycmF5U0g6OkdldFByb3BlcnR5KHdyYXBwZXIsIGN4LCBvYmosIGlkLCB2cCwgX3JldHZh
bCk7Cn0KCgoKCm5zcmVzdWx0Cm5zTmFtZWROb2RlTWFwU0g6OkdldEl0ZW1BdChuc0lTdXBwb3J0
cyAqYU5hdGl2ZSwgUFJVaW50MzIgYUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnNJU3VwcG9ydHMgKiphUmVzdWx0KQp7CiAgbnNDT01QdHI8bnNJRE9NTmFtZWROb2RlTWFwPiBt
YXAoZG9fUXVlcnlJbnRlcmZhY2UoYU5hdGl2ZSkpOwogIGRvIHsgaWYgKCEobWFwKSkgeyA7IHJl
dHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7CgogIG5zSURPTU5v
ZGUgKm5vZGUgPSAwOwogIG5zcmVzdWx0IHJ2ID0gbWFwLT5JdGVtKGFJbmRleCwgJm5vZGUpOwoK
ICAqYVJlc3VsdCA9IG5vZGU7CgogIHJldHVybiBydjsKfQoKbnNyZXN1bHQKbnNOYW1lZE5vZGVN
YXBTSDo6R2V0TmFtZWRJdGVtKG5zSVN1cHBvcnRzICphTmF0aXZlLCBjb25zdCBuc0FTdHJpbmcm
IGFOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3VwcG9ydHMgKiphUmVz
dWx0KQp7CiAgbnNDT01QdHI8bnNJRE9NTmFtZWROb2RlTWFwPiBtYXAoZG9fUXVlcnlJbnRlcmZh
Y2UoYU5hdGl2ZSkpOwogIGRvIHsgaWYgKCEobWFwKSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAw
eDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7CgogIG5zSURPTU5vZGUgKm5vZGUgPSAwOwogIG5z
cmVzdWx0IHJ2ID0gbWFwLT5HZXROYW1lZEl0ZW0oYU5hbWUsICZub2RlKTsKCiAgKmFSZXN1bHQg
PSBub2RlOwoKICByZXR1cm4gcnY7Cn0KCgoKCm5zcmVzdWx0Cm5zSFRNTENvbGxlY3Rpb25TSDo6
R2V0SXRlbUF0KG5zSVN1cHBvcnRzICphTmF0aXZlLCBQUlVpbnQzMiBhSW5kZXgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzICoqYVJlc3VsdCkKewogIG5zQ09NUHRy
PG5zSURPTUhUTUxDb2xsZWN0aW9uPiBjb2xsZWN0aW9uKGRvX1F1ZXJ5SW50ZXJmYWNlKGFOYXRp
dmUpKTsKICBkbyB7IGlmICghKGNvbGxlY3Rpb24pKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4
ODAwMGZmZmZMKTsgfSB9IHdoaWxlICgwKTsKCiAgbnNJRE9NTm9kZSAqbm9kZSA9IDA7CiAgbnNy
ZXN1bHQgcnYgPSBjb2xsZWN0aW9uLT5JdGVtKGFJbmRleCwgJm5vZGUpOwoKICAqYVJlc3VsdCA9
IG5vZGU7CgogIHJldHVybiBydjsKfQoKbnNyZXN1bHQKbnNIVE1MQ29sbGVjdGlvblNIOjpHZXRO
YW1lZEl0ZW0obnNJU3VwcG9ydHMgKmFOYXRpdmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IG5zQVN0cmluZyYgYU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5zSVN1cHBvcnRzICoqYVJlc3VsdCkKewogIG5zQ09NUHRyPG5zSURPTUhUTUxDb2xs
ZWN0aW9uPiBjb2xsZWN0aW9uKGRvX1F1ZXJ5SW50ZXJmYWNlKGFOYXRpdmUpKTsKICBkbyB7IGlm
ICghKGNvbGxlY3Rpb24pKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsgfSB9
IHdoaWxlICgwKTsKCiAgbnNJRE9NTm9kZSAqbm9kZSA9IDA7CiAgbnNyZXN1bHQgcnYgPSBjb2xs
ZWN0aW9uLT5OYW1lZEl0ZW0oYU5hbWUsICZub2RlKTsKCiAgKmFSZXN1bHQgPSBub2RlOwoKICBy
ZXR1cm4gcnY7Cn0KCgoKbnNyZXN1bHQKbnNDb250ZW50TGlzdFNIOjpQcmVDcmVhdGUobnNJU3Vw
cG9ydHMgKm5hdGl2ZU9iaiwgSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSlNPYmplY3QgKmdsb2JhbE9iaiwgSlNPYmplY3QgKipwYXJlbnRPYmopCnsKICBuc0NPTVB0
cjxuc0lDb250ZW50TGlzdD4gY29udGVudExpc3QoZG9fUXVlcnlJbnRlcmZhY2UobmF0aXZlT2Jq
KSk7CiAgOwoKICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4gbmF0aXZlX3BhcmVudDsKICBjb250ZW50
TGlzdC0+R2V0UGFyZW50T2JqZWN0KGdldHRlcl9BZGRSZWZzKG5hdGl2ZV9wYXJlbnQpKTsKCiAg
aWYgKCFuYXRpdmVfcGFyZW50KSB7CiAgICAqcGFyZW50T2JqID0gZ2xvYmFsT2JqOwogICAgcmV0
dXJuIDA7CiAgfQoKICBqc3ZhbCB2OwogIG5zcmVzdWx0IHJ2ID0gV3JhcE5hdGl2ZShjeCwgOjpK
U19HZXRHbG9iYWxPYmplY3QoY3gpLCBuYXRpdmVfcGFyZW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICBuc0NPTVR5cGVJbmZvPG5zSVN1cHBvcnRzPjo6R2V0SUlEKCksICZ2KTsKCiAgKnBh
cmVudE9iaiA9ICgoSlNPYmplY3QgKikoKHZvaWQgKikoKHYpICYgfihqc3ZhbCkoKChKU1VpbnQz
MikxIDw8ICgzKSkgLSAxKSkpKTsKCiAgcmV0dXJuIHJ2Owp9CgoKCm5zcmVzdWx0Cm5zRm9ybUNv
bnRyb2xMaXN0U0g6OkdldE5hbWVkSXRlbShuc0lTdXBwb3J0cyAqYU5hdGl2ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5zQVN0cmluZyYgYU5hbWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdXBwb3J0cyAqKmFSZXN1bHQpCnsKICBuc0NP
TVB0cjxuc0lET01OU0hUTUxGb3JtQ29udHJvbExpc3Q+IGxpc3QoZG9fUXVlcnlJbnRlcmZhY2Uo
YU5hdGl2ZSkpOwogIGRvIHsgaWYgKCEobGlzdCkpIHsgOyByZXR1cm4gKChuc3Jlc3VsdCkgMHg4
MDAwZmZmZkwpOyB9IH0gd2hpbGUgKDApOwoKICByZXR1cm4gbGlzdC0+TmFtZWRJdGVtKGFOYW1l
LCBhUmVzdWx0KTsKfQoKCgpzdGF0aWMgaW5saW5lIFBSQm9vbApkb2N1bWVudE5lZWRzU2VjdXJp
dHlDaGVjayhKU0NvbnRleHQgKmN4LCBuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVy
KQp7CgogIEpTT2JqZWN0ICp3cmFwcGVyX29iaiA9IDA7CiAgd3JhcHBlci0+R2V0SlNPYmplY3Qo
JndyYXBwZXJfb2JqKTsKCiAgSlNPYmplY3QgKndyYXBwZXJfZ2xvYmFsID0gR2V0R2xvYmFsSlNP
YmplY3QoY3gsIHdyYXBwZXJfb2JqKTsKIyA0ODA5ICJuc0RPTUNsYXNzSW5mby5jcHAiCiAgaWYg
KHdyYXBwZXJfZ2xvYmFsICE9IDo6SlNfR2V0R2xvYmFsT2JqZWN0KGN4KSkgewoKCgogICAgcmV0
dXJuIDE7CiAgfQoKCgoKCgoKICBKU09iamVjdCAqZnVuY3Rpb25fb2JqID0gMDsKICBKU1N0YWNr
RnJhbWUgKmZwID0gMDsKCiAgZG8gewogICAgZnAgPSA6OkpTX0ZyYW1lSXRlcmF0b3IoY3gsICZm
cCk7CgogICAgaWYgKCFmcCkgewogICAgICBpZiAoIWZ1bmN0aW9uX29iaikgewoKCgoKCiAgICAg
ICAgcmV0dXJuIDA7CiAgICAgIH0KCiAgICAgIGJyZWFrOwogICAgfQoKICAgIGZ1bmN0aW9uX29i
aiA9IDo6SlNfR2V0RnJhbWVGdW5jdGlvbk9iamVjdChjeCwgZnApOwogIH0gd2hpbGUgKCFmdW5j
dGlvbl9vYmopOwoKCiAgSlNPYmplY3QgKmZ1bmN0aW9uX2dsb2JhbCA9IEdldEdsb2JhbEpTT2Jq
ZWN0KGN4LCBmdW5jdGlvbl9vYmopOwoKICBpZiAoZnVuY3Rpb25fZ2xvYmFsICE9IHdyYXBwZXJf
Z2xvYmFsKSB7CgoKCgogICAgcmV0dXJuIDE7CiAgfQoKCgoKCiAgcmV0dXJuIDA7Cn0KCm5zcmVz
dWx0Cm5zRG9jdW1lbnRTSDo6QWRkUHJvcGVydHkobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAq
d3JhcHBlciwgSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVj
dCAqb2JqLCBqc3ZhbCBpZCwganN2YWwgKnZwLAogICAgICAgICAgICAgICAgICAgICAgICAgIFBS
Qm9vbCAqX3JldHZhbCkKewoKCiAgaWYgKCFzRG9TZWN1cml0eUNoZWNrSW5BZGRQcm9wZXJ0eSkg
ewogICAgcmV0dXJuIDA7CiAgfQoKICBpZiAoaWQgPT0gc0xvY2F0aW9uX2lkKSB7CgoKCiAgICBy
ZXR1cm4gKChuc3Jlc3VsdCkgKCgoUFJVaW50MzIpKDEpPDwzMSkgfCAoKFBSVWludDMyKSgxNCAr
MHg0NSk8PDE2KSB8ICgoUFJVaW50MzIpKDEwMDApKSkgKTsKICB9CgogIHJldHVybiAwOwp9Cgpu
c3Jlc3VsdApuc0RvY3VtZW50U0g6OkRlbFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBwZWROYXRp
dmUgKndyYXBwZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgSlNP
YmplY3QgKm9iaiwganN2YWwgaWQsIGpzdmFsICp2cCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUkJvb2wgKl9yZXR2YWwpCnsKICBpZiAoaWQgPT0gc0xvY2F0aW9uX2lkKSB7CgoKCiAgICBy
ZXR1cm4gKChuc3Jlc3VsdCkgKCgoUFJVaW50MzIpKDEpPDwzMSkgfCAoKFBSVWludDMyKSgxNCAr
MHg0NSk8PDE2KSB8ICgoUFJVaW50MzIpKDEwMDApKSkgKTsKICB9CgogIHJldHVybiAwOwp9Cgpu
c3Jlc3VsdApuc0RvY3VtZW50U0g6Ok5ld1Jlc29sdmUobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2
ZSAqd3JhcHBlciwgSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgICAgIEpTT2Jq
ZWN0ICpvYmosIGpzdmFsIGlkLCBQUlVpbnQzMiBmbGFncywKICAgICAgICAgICAgICAgICAgICAg
ICAgIEpTT2JqZWN0ICoqb2JqcCwgUFJCb29sICpfcmV0dmFsKQp7CiAgaWYgKGlkID09IHNMb2Nh
dGlvbl9pZCkgewoKCgoKCiAgICBKU1N0cmluZyAqc3RyID0gKChKU1N0cmluZyAqKSgodm9pZCAq
KSgoaWQpICYgfihqc3ZhbCkoKChKU1VpbnQzMikxIDw8ICgzKSkgLSAxKSkpKTsKICAgIG5zQ09N
UHRyPG5zSVN1cHBvcnRzPiBuYXRpdmU7CiAgICB3cmFwcGVyLT5HZXROYXRpdmUoZ2V0dGVyX0Fk
ZFJlZnMobmF0aXZlKSk7CiAgICBkbyB7IGlmICghKG5hdGl2ZSkpIHsgOyByZXR1cm4gKChuc3Jl
c3VsdCkgMHg4MDAwZmZmZkwpOyB9IH0gd2hpbGUgKDApOwoKICAgIG5zQ09NUHRyPG5zSURPTU5T
RG9jdW1lbnQ+IGRvYyhkb19RdWVyeUludGVyZmFjZShuYXRpdmUpKTsKICAgIGRvIHsgaWYgKCEo
ZG9jKSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7
CgogICAgbnNDT01QdHI8bnNJRE9NTG9jYXRpb24+IGxvY2F0aW9uOwogICAgbnNyZXN1bHQgcnYg
PSBkb2MtPkdldExvY2F0aW9uKGdldHRlcl9BZGRSZWZzKGxvY2F0aW9uKSk7CiAgICBkbyB7IGlm
ICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0dXJuIHJ2OyB9IH0gd2hpbGUgKDAp
OwoKICAgIGpzdmFsIHY7CgogICAgcnYgPSBXcmFwTmF0aXZlKGN4LCBvYmosIGxvY2F0aW9uLCBu
c0NPTVR5cGVJbmZvPG5zSURPTUxvY2F0aW9uPjo6R2V0SUlEKCksICZ2KTsKICAgIGRvIHsgaWYg
KCEoKCEoKHJ2KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7
CgogICAgc0RvU2VjdXJpdHlDaGVja0luQWRkUHJvcGVydHkgPSAwOwoKICAgIEpTQm9vbCBvayA9
IDo6SlNfRGVmaW5lVUNQcm9wZXJ0eShjeCwgb2JqLCA6OkpTX0dldFN0cmluZ0NoYXJzKHN0ciks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpKU19HZXRTdHJpbmdMZW5n
dGgoc3RyKSwgdiwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAw
KTsKCiAgICBzRG9TZWN1cml0eUNoZWNrSW5BZGRQcm9wZXJ0eSA9IDE7CgogICAgaWYgKCFvaykg
ewogICAgICByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAwNDAwNUwpOwogICAgfQoKICAgICpvYmpw
ID0gb2JqOwoKICAgIHJldHVybiAwOwogIH0KCiAgcmV0dXJuIG5zTm9kZVNIOjpOZXdSZXNvbHZl
KHdyYXBwZXIsIGN4LCBvYmosIGlkLCBmbGFncywgb2JqcCwgX3JldHZhbCk7Cn0KCm5zcmVzdWx0
Cm5zRG9jdW1lbnRTSDo6R2V0UHJvcGVydHkobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3Jh
cHBlciwgSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAq
b2JqLCBqc3ZhbCBpZCwganN2YWwgKnZwLCBQUkJvb2wgKl9yZXR2YWwpCnsKICBpZiAoZG9jdW1l
bnROZWVkc1NlY3VyaXR5Q2hlY2soY3gsIHdyYXBwZXIpKSB7CiAgICBuc3Jlc3VsdCBydiA9CiAg
ICAgIGRvQ2hlY2tQcm9wZXJ0eUFjY2VzcyhjeCwgb2JqLCBpZCwgd3JhcHBlciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5zSVhQQ1NlY3VyaXR5TWFuYWdlcjo6QUNDRVNTX0dFVF9QUk9Q
RVJUWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwoKICAgIGlmICgoKHJ2KSAmIDB4
ODAwMDAwMDApKSB7CgoKCiAgICAgICpfcmV0dmFsID0gMDsKCiAgICAgICp2cCA9ICgoanN2YWwp
KDApKTsKICAgIH0KICB9CgogIHJldHVybiAwOwp9Cgpuc3Jlc3VsdApuc0RvY3VtZW50U0g6OlNl
dFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsIEpTQ29udGV4dCAq
Y3gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsIGpz
dmFsICp2cCwgUFJCb29sICpfcmV0dmFsKQp7CiAgaWYgKGRvY3VtZW50TmVlZHNTZWN1cml0eUNo
ZWNrKGN4LCB3cmFwcGVyKSkgewogICAgbnNyZXN1bHQgcnYgPQogICAgICBkb0NoZWNrUHJvcGVy
dHlBY2Nlc3MoY3gsIG9iaiwgaWQsIHdyYXBwZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuc0lYUENTZWN1cml0eU1hbmFnZXI6OkFDQ0VTU19TRVRfUFJPUEVSVFksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwKTsKCiAgICBpZiAoKChydikgJiAweDgwMDAwMDAwKSkgewoKCgog
ICAgICAqX3JldHZhbCA9IDA7CgogICAgICByZXR1cm4gMDsKICAgIH0KICB9CgogIGlmIChpZCA9
PSBzTG9jYXRpb25faWQpIHsKICAgIG5zQ09NUHRyPG5zSVN1cHBvcnRzPiBuYXRpdmU7CiAgICB3
cmFwcGVyLT5HZXROYXRpdmUoZ2V0dGVyX0FkZFJlZnMobmF0aXZlKSk7CiAgICBkbyB7IGlmICgh
KG5hdGl2ZSkpIHsgOyByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwpOyB9IH0gd2hpbGUg
KDApOwoKICAgIG5zQ09NUHRyPG5zSURPTU5TRG9jdW1lbnQ+IGRvYyhkb19RdWVyeUludGVyZmFj
ZShuYXRpdmUpKTsKICAgIGRvIHsgaWYgKCEoZG9jKSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAw
eDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7CgogICAgbnNDT01QdHI8bnNJRE9NTG9jYXRpb24+
IGxvY2F0aW9uOwoKICAgIG5zcmVzdWx0IHJ2ID0gZG9jLT5HZXRMb2NhdGlvbihnZXR0ZXJfQWRk
UmVmcyhsb2NhdGlvbikpOwogICAgZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkg
eyA7IHJldHVybiBydjsgfSB9IHdoaWxlICgwKTsKCiAgICBpZiAobG9jYXRpb24pIHsKICAgICAg
SlNTdHJpbmcgKnZhbCA9IDo6SlNfVmFsdWVUb1N0cmluZyhjeCwgKnZwKTsKICAgICAgZG8geyBp
ZiAoISh2YWwpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsgfSB9IHdoaWxl
ICgwKTsKCiAgICAgIG5zRGVwZW5kZW50U3RyaW5nIGhyZWYocmVpbnRlcnByZXRfY2FzdDwgY29u
c3QgUFJVbmljaGFyICogPig6OkpTX0dldFN0cmluZ0NoYXJzKHZhbCkpLAoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6OkpTX0dldFN0cmluZ0xlbmd0aCh2YWwpKTsKCiAgICAgIG5zcmVz
dWx0IHJ2ID0gbG9jYXRpb24tPlNldEhyZWYoaHJlZik7CiAgICAgIGRvIHsgaWYgKCEoKCEoKHJ2
KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7CgogICAgICBy
ZXR1cm4gV3JhcE5hdGl2ZShjeCwgb2JqLCBsb2NhdGlvbiwgbnNDT01UeXBlSW5mbzxuc0lET01M
b2NhdGlvbj46OkdldElJRCgpLCB2cCk7CiAgICB9CiAgfQoKICByZXR1cm4gbnNOb2RlU0g6OlNl
dFByb3BlcnR5KHdyYXBwZXIsIGN4LCBvYmosIGlkLCB2cCwgX3JldHZhbCk7Cn0KCm5zcmVzdWx0
Cm5zRG9jdW1lbnRTSDo6R2V0RmxhZ3MoUFJVaW50MzIqIGFGbGFncykKewogICphRmxhZ3MgPSAo
bnNJQ2xhc3NJbmZvOjpNQUlOX1RIUkVBRF9PTkxZIHwgbnNJQ2xhc3NJbmZvOjpET01fT0JKRUNU
KTsKCiAgcmV0dXJuIDA7Cn0KCgoKCgpuc3Jlc3VsdApuc0hUTUxEb2N1bWVudFNIOjpSZXNvbHZl
SW1wbChKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lYUENv
bm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBqc3ZhbCBpZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnNJU3VwcG9ydHMgKipyZXN1bHQpCnsKICBuc0NPTVB0cjxuc0lTdXBwb3J0
cz4gbmF0aXZlOwoKICB3cmFwcGVyLT5HZXROYXRpdmUoZ2V0dGVyX0FkZFJlZnMobmF0aXZlKSk7
CiAgOwoKICBuc0NPTVB0cjxuc0lIVE1MRG9jdW1lbnQ+IGRvYyhkb19RdWVyeUludGVyZmFjZShu
YXRpdmUpKTsKICBkbyB7IGlmICghKGRvYykpIHsgOyByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAw
ZmZmZkwpOyB9IH0gd2hpbGUgKDApOwoKCgoKICBKU1N0cmluZyAqc3RyID0gSlNfVmFsdWVUb1N0
cmluZyhjeCwgaWQpOwoKICBjb25zdCBuc0RlcGVuZGVudFN0cmluZyBuYW1lKHJlaW50ZXJwcmV0
X2Nhc3Q8IGNvbnN0IFBSVW5pY2hhciAqID4oOjpKU19HZXRTdHJpbmdDaGFycyhzdHIpKSwKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OkpTX0dldFN0cmluZ0xlbmd0aChzdHIpKTsK
CiAgcmV0dXJuIGRvYy0+UmVzb2x2ZU5hbWUobmFtZSwgMCwgcmVzdWx0KTsKfQoKCkpTQm9vbApu
c0hUTUxEb2N1bWVudFNIOjpEb2N1bWVudE9wZW4oSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9i
aiwgdWludE4gYXJnYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzdmFsICphcmd2
LCBqc3ZhbCAqcnZhbCkKewogIGlmIChhcmdjID4gMikgewogICAgSlNPYmplY3QgKmdsb2JhbCA9
IEdldEdsb2JhbEpTT2JqZWN0KGN4LCBvYmopOwoKCgoKICAgIHJldHVybiA6OkpTX0NhbGxGdW5j
dGlvbk5hbWUoY3gsIGdsb2JhbCwgIm9wZW4iLCBhcmdjLCBhcmd2LCBydmFsKTsKICB9CgogIG5z
Q09NUHRyPG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmU+IHdyYXBwZXI7CgogIG5zcmVzdWx0IHJ2
ID0KICAgIHNYUENvbm5lY3QtPkdldFdyYXBwZWROYXRpdmVPZkpTT2JqZWN0KGN4LCBvYmosIGdl
dHRlcl9BZGRSZWZzKHdyYXBwZXIpKTsKICBkbyB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAw
KSkpKSB7IDsgcmV0dXJuIChKU0ludG4pMDsgfSB9IHdoaWxlICgwKTsKCiAgbnNDT01QdHI8bnNJ
U3VwcG9ydHM+IG5hdGl2ZTsKICBydiA9IHdyYXBwZXItPkdldE5hdGl2ZShnZXR0ZXJfQWRkUmVm
cyhuYXRpdmUpKTsKICBkbyB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0
dXJuIChKU0ludG4pMDsgfSB9IHdoaWxlICgwKTsKCiAgbnNDT01QdHI8bnNJRE9NTlNIVE1MRG9j
dW1lbnQ+IGRvYyhkb19RdWVyeUludGVyZmFjZShuYXRpdmUpKTsKICBkbyB7IGlmICghKGRvYykp
IHsgOyByZXR1cm4gKEpTSW50bikwOyB9IH0gd2hpbGUgKDApOwoKICBuc0NPTVB0cjxuc0lET01E
b2N1bWVudD4gcmV0dmFsOwoKICBydiA9IGRvYy0+T3BlbihnZXR0ZXJfQWRkUmVmcyhyZXR2YWwp
KTsKICBkbyB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0dXJuIDA7IH0g
fSB3aGlsZSAoMCk7CgogIHJ2ID0gV3JhcE5hdGl2ZShjeCwgOjpKU19HZXRHbG9iYWxPYmplY3Qo
Y3gpLCByZXR2YWwsCiAgICAgICAgICAgICAgICAgIG5zQ09NVHlwZUluZm88bnNJRE9NRG9jdW1l
bnQ+OjpHZXRJSUQoKSwgcnZhbCk7CiAgOwoKICByZXR1cm4gKCEoKHJ2KSAmIDB4ODAwMDAwMDAp
KTsKfQoKbnNyZXN1bHQKbnNIVE1MRG9jdW1lbnRTSDo6TmV3UmVzb2x2ZShuc0lYUENvbm5lY3RX
cmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLCBQUlVpbnQzMiBmbGFncywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCAqKm9ianAsIFBSQm9vbCAqX3JldHZhbCkK
ewogIGlmICghKGZsYWdzICYgMHgwMikpIHsKICAgIG5zQ09NUHRyPG5zSVN1cHBvcnRzPiByZXN1
bHQ7CgogICAgbnNyZXN1bHQgcnYgPSBSZXNvbHZlSW1wbChjeCwgd3JhcHBlciwgaWQsIGdldHRl
cl9BZGRSZWZzKHJlc3VsdCkpOwogICAgZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkp
KSkgeyA7IHJldHVybiBydjsgfSB9IHdoaWxlICgwKTsKCiAgICBpZiAocmVzdWx0KSB7CiAgICAg
IEpTU3RyaW5nICpzdHIgPSBKU19WYWx1ZVRvU3RyaW5nKGN4LCBpZCk7CgogICAgICBKU0Jvb2wg
b2sgPSAqX3JldHZhbCA9CiAgICAgICAgOjpKU19EZWZpbmVVQ1Byb3BlcnR5KGN4LCBvYmosIDo6
SlNfR2V0U3RyaW5nQ2hhcnMoc3RyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjpK
U19HZXRTdHJpbmdMZW5ndGgoc3RyKSwgKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkp
IDw8IDEpIHwgMHgxKSwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCk7CiAg
ICAgICpvYmpwID0gb2JqOwoKICAgICAgcmV0dXJuIG9rID8gMCA6ICgobnNyZXN1bHQpIDB4ODAw
MDQwMDVMKTsKICAgIH0KCiAgICBpZiAoaWQgPT0gc09wZW5faWQpIHsKICAgICAgSlNTdHJpbmcg
KnN0ciA9ICgoSlNTdHJpbmcgKikoKHZvaWQgKikoKGlkKSAmIH4oanN2YWwpKCgoSlNVaW50MzIp
MSA8PCAoMykpIC0gMSkpKSk7CiAgICAgIEpTRnVuY3Rpb24gKmZuYyA9CiAgICAgICAgOjpKU19E
ZWZpbmVGdW5jdGlvbihjeCwgb2JqLCA6OkpTX0dldFN0cmluZ0J5dGVzKHN0ciksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEb2N1bWVudE9wZW4sIDAsIDB4MDEpOwoKICAgICAgKm9ianAg
PSBvYmo7CgogICAgICByZXR1cm4gZm5jID8gMCA6ICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsK
ICAgIH0KICB9CgogIHJldHVybiBuc0RvY3VtZW50U0g6Ok5ld1Jlc29sdmUod3JhcHBlciwgY3gs
IG9iaiwgaWQsIGZsYWdzLCBvYmpwLCBfcmV0dmFsKTsKfQoKbnNyZXN1bHQKbnNIVE1MRG9jdW1l
bnRTSDo6R2V0UHJvcGVydHkobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwg
anN2YWwgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzdmFsICp2cCwgUFJCb29s
ICpfcmV0dmFsKQp7CgoKICBuc3Jlc3VsdCBydiA9IG5zRG9jdW1lbnRTSDo6R2V0UHJvcGVydHko
d3JhcHBlciwgY3gsIG9iaiwgaWQsIHZwLCBfcmV0dmFsKTsKICBpZiAoISpfcmV0dmFsKSB7CiAg
ICByZXR1cm4gcnY7CiAgfQoKICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4gcmVzdWx0OwoKICBydiA9
IFJlc29sdmVJbXBsKGN4LCB3cmFwcGVyLCBpZCwgZ2V0dGVyX0FkZFJlZnMocmVzdWx0KSk7CiAg
ZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsgfSB9IHdo
aWxlICgwKTsKCiAgaWYgKHJlc3VsdCkgewogICAgcmV0dXJuIFdyYXBOYXRpdmUoY3gsIDo6SlNf
R2V0R2xvYmFsT2JqZWN0KGN4KSwgcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgbnNDT01U
eXBlSW5mbzxuc0lTdXBwb3J0cz46OkdldElJRCgpLCB2cCk7CiAgfQoKICByZXR1cm4gMDsKfQoK
CgoKSlNCb29sCm5zSFRNTEVsZW1lbnRTSDo6U2Nyb2xsSW50b1ZpZXcoSlNDb250ZXh0ICpjeCwg
SlNPYmplY3QgKm9iaiwgdWludE4gYXJnYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqc3ZhbCAqYXJndiwganN2YWwgKnJ2YWwpCnsKICBuc0NPTVB0cjxuc0lYUENvbm5lY3RXcmFw
cGVkTmF0aXZlPiB3cmFwcGVyOwoKICBuc3Jlc3VsdCBydiA9CiAgICBzWFBDb25uZWN0LT5HZXRX
cmFwcGVkTmF0aXZlT2ZKU09iamVjdChjeCwgb2JqLCBnZXR0ZXJfQWRkUmVmcyh3cmFwcGVyKSk7
CiAgZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiAoSlNJbnRu
KTA7IH0gfSB3aGlsZSAoMCk7CgogIG5zQ09NUHRyPG5zSVN1cHBvcnRzPiBuYXRpdmU7CiAgcnYg
PSB3cmFwcGVyLT5HZXROYXRpdmUoZ2V0dGVyX0FkZFJlZnMobmF0aXZlKSk7CiAgZG8geyBpZiAo
ISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiAoSlNJbnRuKTA7IH0gfSB3aGls
ZSAoMCk7CgogIG5zQ09NUHRyPG5zSURPTU5TSFRNTEVsZW1lbnQ+IGVsZW1lbnQoZG9fUXVlcnlJ
bnRlcmZhY2UobmF0aXZlKSk7CiAgZG8geyBpZiAoIShlbGVtZW50KSkgeyA7IHJldHVybiAoSlNJ
bnRuKTA7IH0gfSB3aGlsZSAoMCk7CgogIEpTQm9vbCB0b3AgPSAoSlNJbnRuKTE7CgogIGlmIChh
cmdjID4gMCkgewogICAgOjpKU19WYWx1ZVRvQm9vbGVhbihjeCwgYXJndlswXSwgJnRvcCk7CiAg
fQoKICBydiA9IGVsZW1lbnQtPlNjcm9sbEludG9WaWV3KHRvcCk7CgogICpydmFsID0gKCgoanN2
YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKTsKCiAgcmV0dXJuICghKChy
dikgJiAweDgwMDAwMDAwKSk7Cn0KCm5zcmVzdWx0Cm5zSFRNTEVsZW1lbnRTSDo6TmV3UmVzb2x2
ZShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLCBKU0NvbnRleHQgKmN4LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsIFBSVWludDMy
IGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKipvYmpwLCBQUkJv
b2wgKl9yZXR2YWwpCnsKICBpZiAoaWQgPT0gc1Njcm9sbEludG9WaWV3X2lkICYmICEoMHgwMiAm
IGZsYWdzKSkgewogICAgSlNTdHJpbmcgKnN0ciA9ICgoSlNTdHJpbmcgKikoKHZvaWQgKikoKGlk
KSAmIH4oanN2YWwpKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpKSk7CiAgICBKU0Z1bmN0aW9u
ICpjZm5jID0KICAgICAgOjpKU19EZWZpbmVGdW5jdGlvbihjeCwgb2JqLCA6OkpTX0dldFN0cmlu
Z0J5dGVzKHN0ciksIFNjcm9sbEludG9WaWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgIDAs
IDApOwoKICAgICpvYmpwID0gb2JqOwoKICAgIHJldHVybiBjZm5jID8gMCA6ICgobnNyZXN1bHQp
IDB4ODAwMGZmZmZMKTsKICB9CgogIHJldHVybiBuc0VsZW1lbnRTSDo6TmV3UmVzb2x2ZSh3cmFw
cGVyLCBjeCwgb2JqLCBpZCwgZmxhZ3MsIG9ianAsIF9yZXR2YWwpOwp9CgoKCgoKbnNyZXN1bHQK
bnNIVE1MRm9ybUVsZW1lbnRTSDo6RmluZE5hbWVkSXRlbShuc0lGb3JtICphRm9ybSwgSlNTdHJp
bmcgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdXBwb3J0cyAq
KmFSZXN1bHQpCnsKICAqYVJlc3VsdCA9IDA7CgogIG5zRGVwZW5kZW50U3RyaW5nIG5hbWUocmVp
bnRlcnByZXRfY2FzdDwgY29uc3QgUFJVbmljaGFyICogPig6OkpTX0dldFN0cmluZ0NoYXJzKHN0
cikpLAoKICAgICAgICAgICAgICAgICAgICAgICAgIDo6SlNfR2V0U3RyaW5nTGVuZ3RoKHN0cikp
OwoKICBhRm9ybS0+UmVzb2x2ZU5hbWUobmFtZSwgYVJlc3VsdCk7CgogIGlmICghKmFSZXN1bHQp
IHsKICAgIG5zQ09NUHRyPG5zSUNvbnRlbnQ+IGNvbnRlbnQoZG9fUXVlcnlJbnRlcmZhY2UoYUZv
cm0pKTsKICAgIG5zQ09NUHRyPG5zSURPTUhUTUxGb3JtRWxlbWVudD4gZm9ybV9lbGVtZW50KGRv
X1F1ZXJ5SW50ZXJmYWNlKGFGb3JtKSk7CgogICAgbnNDT01QdHI8bnNJRG9jdW1lbnQ+IGRvYzsK
ICAgIGNvbnRlbnQtPkdldERvY3VtZW50KCpnZXR0ZXJfQWRkUmVmcyhkb2MpKTsKCiAgICBuc0NP
TVB0cjxuc0lIVE1MRG9jdW1lbnQ+IGh0bWxfZG9jKGRvX1F1ZXJ5SW50ZXJmYWNlKGRvYykpOwoK
ICAgIGlmIChodG1sX2RvYyAmJiBmb3JtX2VsZW1lbnQpIHsKICAgICAgaHRtbF9kb2MtPlJlc29s
dmVOYW1lKG5hbWUsIGZvcm1fZWxlbWVudCwgYVJlc3VsdCk7CiAgICB9CiAgfQoKICByZXR1cm4g
MDsKfQoKbnNyZXN1bHQKbnNIVE1MRm9ybUVsZW1lbnRTSDo6TmV3UmVzb2x2ZShuc0lYUENvbm5l
Y3RXcmFwcGVkTmF0aXZlICp3cmFwcGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBSVWludDMyIGZsYWdzLCBKU09iamVjdCAqKm9ianAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUFJCb29sICpfcmV0dmFsKQp7CiAgaWYgKCghKDB4MDIg
JiBmbGFncykpICYmICgoKGlkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQp
KSB7CiAgICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4gbmF0aXZlOwoKICAgIHdyYXBwZXItPkdldE5h
dGl2ZShnZXR0ZXJfQWRkUmVmcyhuYXRpdmUpKTsKICAgIDsKCiAgICBuc0NPTVB0cjxuc0lGb3Jt
PiBmb3JtKGRvX1F1ZXJ5SW50ZXJmYWNlKG5hdGl2ZSkpOwogICAgbnNDT01QdHI8bnNJU3VwcG9y
dHM+IHJlc3VsdDsKCiAgICBKU1N0cmluZyAqc3RyID0gKChKU1N0cmluZyAqKSgodm9pZCAqKSgo
aWQpICYgfihqc3ZhbCkoKChKU1VpbnQzMikxIDw8ICgzKSkgLSAxKSkpKTsKICAgIEZpbmROYW1l
ZEl0ZW0oZm9ybSwgc3RyLCBnZXR0ZXJfQWRkUmVmcyhyZXN1bHQpKTsKCiAgICBpZiAocmVzdWx0
KSB7CiAgICAgICpfcmV0dmFsID0gOjpKU19EZWZpbmVVQ1Byb3BlcnR5KGN4LCBvYmosIDo6SlNf
R2V0U3RyaW5nQ2hhcnMoc3RyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOjpKU19HZXRTdHJpbmdMZW5ndGgoc3RyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgx
KSwgMCwgMCwgMCk7CgogICAgICAqb2JqcCA9IG9iajsKCiAgICAgIHJldHVybiAqX3JldHZhbCA/
IDAgOiAoKG5zcmVzdWx0KSAweDgwMDA0MDA1TCk7CiAgICB9CiAgfQoKICByZXR1cm4gbnNIVE1M
RWxlbWVudFNIOjpOZXdSZXNvbHZlKHdyYXBwZXIsIGN4LCBvYmosIGlkLCBmbGFncywgb2JqcCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9yZXR2YWwpOwp9CgoKbnNyZXN1
bHQKbnNIVE1MRm9ybUVsZW1lbnRTSDo6R2V0UHJvcGVydHkobnNJWFBDb25uZWN0V3JhcHBlZE5h
dGl2ZSAqd3JhcHBlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNDb250ZXh0
ICpjeCwgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGpzdmFsICp2cCwgUFJCb29sICpfcmV0dmFsKQp7CiAgbnNDT01QdHI8bnNJU3VwcG9y
dHM+IG5hdGl2ZTsKCiAgd3JhcHBlci0+R2V0TmF0aXZlKGdldHRlcl9BZGRSZWZzKG5hdGl2ZSkp
OwogIDsKCiAgbnNDT01QdHI8bnNJRm9ybT4gZm9ybShkb19RdWVyeUludGVyZmFjZShuYXRpdmUp
KTsKCiAgaWYgKCgoKGlkKSAmICgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSA9PSAweDQpKSB7
CiAgICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4gcmVzdWx0OwoKICAgIEpTU3RyaW5nICpzdHIgPSAo
KEpTU3RyaW5nICopKCh2b2lkICopKChpZCkgJiB+KGpzdmFsKSgoKEpTVWludDMyKTEgPDwgKDMp
KSAtIDEpKSkpOwogICAgRmluZE5hbWVkSXRlbShmb3JtLCBzdHIsIGdldHRlcl9BZGRSZWZzKHJl
c3VsdCkpOwoKICAgIGlmIChyZXN1bHQpIHsKCgogICAgICByZXR1cm4gV3JhcE5hdGl2ZShjeCwg
OjpKU19HZXRHbG9iYWxPYmplY3QoY3gpLCByZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAg
IG5zQ09NVHlwZUluZm88bnNJU3VwcG9ydHM+OjpHZXRJSUQoKSwgdnApOwogICAgfQoKICAgIHJl
dHVybiAwOwogIH0KCiAgUFJJbnQzMiBuID0gR2V0QXJyYXlJbmRleEZyb21JZChjeCwgaWQpOwoK
ICBpZiAobiA+PSAwKSB7CiAgICBuc0NPTVB0cjxuc0lGb3JtQ29udHJvbD4gY29udHJvbDsKICAg
IGZvcm0tPkdldEVsZW1lbnRBdChuLCBnZXR0ZXJfQWRkUmVmcyhjb250cm9sKSk7CgogICAgaWYg
KGNvbnRyb2wpIHsKICAgICAgcmV0dXJuIFdyYXBOYXRpdmUoY3gsIDo6SlNfR2V0R2xvYmFsT2Jq
ZWN0KGN4KSwgY29udHJvbCwKICAgICAgICAgICAgICAgICAgICAgICAgbnNDT01UeXBlSW5mbzxu
c0lTdXBwb3J0cz46OkdldElJRCgpLCB2cCk7CiAgICB9CiAgfQoKICByZXR1cm4gMDsKfQoKbnNy
ZXN1bHQKbnNIVE1MRm9ybUVsZW1lbnRTSDo6TmV3RW51bWVyYXRlKG5zSVhQQ29ubmVjdFdyYXBw
ZWROYXRpdmUgKndyYXBwZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU0Nv
bnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUFJVaW50MzIgZW51bV9vcCwganN2YWwgKnN0YXRlcCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGpzaWQgKmlkcCwgUFJCb29sICpfcmV0dmFsKQp7CiAgc3dpdGNoIChlbnVt
X29wKSB7CiAgY2FzZSBKU0VOVU1FUkFURV9JTklUOgogICAgewogICAgICBuc0NPTVB0cjxuc0lT
dXBwb3J0cz4gbmF0aXZlOwogICAgICB3cmFwcGVyLT5HZXROYXRpdmUoZ2V0dGVyX0FkZFJlZnMo
bmF0aXZlKSk7CiAgICAgIDsKCiAgICAgIG5zQ09NUHRyPG5zSUZvcm0+IGZvcm0oZG9fUXVlcnlJ
bnRlcmZhY2UobmF0aXZlKSk7CgogICAgICBpZiAoIWZvcm0pIHsKICAgICAgICAqc3RhdGVwID0g
KChqc3ZhbCkoMCkpOwogICAgICAgIHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7CiAg
ICAgIH0KCiAgICAgICpzdGF0ZXAgPSAoKChqc3ZhbCkoMCkgPDwgMSkgfCAweDEpOwoKICAgICAg
aWYgKGlkcCkgewogICAgICAgIFBSVWludDMyIGNvdW50ID0gMDsKICAgICAgICBmb3JtLT5HZXRF
bGVtZW50Q291bnQoJmNvdW50KTsKCiAgICAgICAgKmlkcCA9ICgoKGpzdmFsKShjb3VudCkgPDwg
MSkgfCAweDEpOwogICAgICB9CgogICAgICBicmVhazsKICAgIH0KICBjYXNlIEpTRU5VTUVSQVRF
X05FWFQ6CiAgICB7CiAgICAgIG5zQ09NUHRyPG5zSVN1cHBvcnRzPiBuYXRpdmU7CiAgICAgIHdy
YXBwZXItPkdldE5hdGl2ZShnZXR0ZXJfQWRkUmVmcyhuYXRpdmUpKTsKICAgICAgOwoKICAgICAg
bnNDT01QdHI8bnNJRm9ybT4gZm9ybShkb19RdWVyeUludGVyZmFjZShuYXRpdmUpKTsKICAgICAg
ZG8geyBpZiAoIShmb3JtKSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDA0MDA1TCk7IH0g
fSB3aGlsZSAoMCk7CgogICAgICBQUkludDMyIGluZGV4ID0gKFBSSW50MzIpKChqc2ludCkoKnN0
YXRlcCkgPj4gMSk7CgogICAgICBQUlVpbnQzMiBjb3VudCA9IDA7CiAgICAgIGZvcm0tPkdldEVs
ZW1lbnRDb3VudCgmY291bnQpOwoKICAgICAgaWYgKChQUlVpbnQzMilpbmRleCA8IGNvdW50KSB7
CiAgICAgICAgbnNDT01QdHI8bnNJRm9ybUNvbnRyb2w+IGNvbnRyb2xOb2RlOwogICAgICAgIGZv
cm0tPkdldEVsZW1lbnRBdChpbmRleCwgZ2V0dGVyX0FkZFJlZnMoY29udHJvbE5vZGUpKTsKICAg
ICAgICBkbyB7IGlmICghKGNvbnRyb2xOb2RlKSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAweDgw
MDA0MDA1TCk7IH0gfSB3aGlsZSAoMCk7CgogICAgICAgIG5zQ09NUHRyPG5zSURPTUVsZW1lbnQ+
IGRvbUVsZW1lbnQgPSBkb19RdWVyeUludGVyZmFjZShjb250cm9sTm9kZSk7CiAgICAgICAgZG8g
eyBpZiAoIShkb21FbGVtZW50KSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDA0MDA1TCk7
IH0gfSB3aGlsZSAoMCk7CgogICAgICAgIG5zQXV0b1N0cmluZyBhdHRyOwogICAgICAgIGRvbUVs
ZW1lbnQtPkdldEF0dHJpYnV0ZShzdGF0aWNfY2FzdDwgY29uc3QgbnNBRmxhdFN0cmluZyYgPihu
c0RlcGVuZGVudFN0cmluZyhyZWludGVycHJldF9jYXN0PCBjb25zdCBuc0FTdHJpbmc6OmNoYXJf
dHlwZSogPihMIm5hbWUiKSwgUFJVaW50MzIoKHNpemVvZihMIm5hbWUiKS9zaXplb2Yod2NoYXJf
dCkpLTEpKSksIGF0dHIpOwogICAgICAgIGlmIChhdHRyLklzRW1wdHkoKSkgewoKICAgICAgICAg
IGF0dHIuQXBwZW5kSW50KGluZGV4KTsKICAgICAgICB9CiAgICAgICAgSlNTdHJpbmcgKmpzbmFt
ZSA9CiAgICAgICAgICBKU19OZXdVQ1N0cmluZ0NvcHlOKGN4LCByZWludGVycHJldF9jYXN0PCBj
b25zdCBqc2NoYXIgKiA+KGF0dHIuZ2V0KCkpLAoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXR0ci5MZW5ndGgoKSk7CiAgICAgICAgZG8geyBpZiAoIShqc25hbWUpKSB7IDsgcmV0dXJu
ICgobnNyZXN1bHQpIDB4ODAwNzAwMGVMKTsgfSB9IHdoaWxlICgwKTsKCiAgICAgICAgSlNfVmFs
dWVUb0lkKGN4LCAoKChqc3ZhbCkoanNuYW1lKSkgfCAoMHg0KSksIGlkcCk7CgogICAgICAgICpz
dGF0ZXAgPSAoKChqc3ZhbCkoKytpbmRleCkgPDwgMSkgfCAweDEpOwogICAgICB9IGVsc2Ugewog
ICAgICAgICpzdGF0ZXAgPSAoKGpzdmFsKSgwKSk7CiAgICAgIH0KCiAgICAgIGJyZWFrOwogICAg
fQogIGNhc2UgSlNFTlVNRVJBVEVfREVTVFJPWToKICAgICpzdGF0ZXAgPSAoKGpzdmFsKSgwKSk7
CgogICAgYnJlYWs7CiAgfQoKICByZXR1cm4gMDsKfQoKCgoKbnNyZXN1bHQKbnNIVE1MU2VsZWN0
RWxlbWVudFNIOjpHZXRQcm9wZXJ0eShuc0lYUENvbm5lY3RXcmFwcGVkTmF0aXZlICp3cmFwcGVy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTQ29udGV4dCAqY3gsIEpTT2Jq
ZWN0ICpvYmosIGpzdmFsIGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpz
dmFsICp2cCwgUFJCb29sICpfcmV0dmFsKQp7CiAgUFJJbnQzMiBuID0gR2V0QXJyYXlJbmRleEZy
b21JZChjeCwgaWQpOwoKICBpZiAobiA+PSAwKSB7CiAgICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4g
bmF0aXZlOwoKICAgIHdyYXBwZXItPkdldE5hdGl2ZShnZXR0ZXJfQWRkUmVmcyhuYXRpdmUpKTsK
ICAgIDsKCiAgICBuc0NPTVB0cjxuc0lET01IVE1MU2VsZWN0RWxlbWVudD4gcyhkb19RdWVyeUlu
dGVyZmFjZShuYXRpdmUpKTsKCiAgICBuc0NPTVB0cjxuc0lET01IVE1MQ29sbGVjdGlvbj4gb3B0
aW9uczsKCiAgICBzLT5HZXRPcHRpb25zKGdldHRlcl9BZGRSZWZzKG9wdGlvbnMpKTsKCiAgICBp
ZiAob3B0aW9ucykgewogICAgICBuc0NPTVB0cjxuc0lET01Ob2RlPiBub2RlOwoKICAgICAgb3B0
aW9ucy0+SXRlbShuLCBnZXR0ZXJfQWRkUmVmcyhub2RlKSk7CgogICAgICByZXR1cm4gV3JhcE5h
dGl2ZShjeCwgOjpKU19HZXRHbG9iYWxPYmplY3QoY3gpLCBub2RlLAogICAgICAgICAgICAgICAg
ICAgICAgICBuc0NPTVR5cGVJbmZvPG5zSURPTU5vZGU+OjpHZXRJSUQoKSwgdnApOwogICAgfQog
IH0KCiAgcmV0dXJuIDA7Cn0KCgpuc3Jlc3VsdApuc0hUTUxTZWxlY3RFbGVtZW50U0g6OlNldE9w
dGlvbihKU0NvbnRleHQgKmN4LCBqc3ZhbCAqdnAsIFBSVWludDMyIGFJbmRleCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnNJRE9NTlNIVE1MT3B0aW9uQ29sbGVjdGlvbiAqYU9w
dENvbGxlY3Rpb24pCnsKCiAgaWYgKCEoKCgqdnApICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0g
MSkpID09IDB4MCkgJiYgITo6SlNfQ29udmVydFZhbHVlKGN4LCAqdnAsIEpTVFlQRV9PQkpFQ1Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnApKSB7
CiAgICByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwpOwogIH0KCiAgbnNDT01QdHI8bnNJ
RE9NSFRNTE9wdGlvbkVsZW1lbnQ+IG5ld19vcHRpb247CgogIGlmICghKCgqdnApID09ICgoanN2
YWwpKDApKSkpIHsKICAgIG5zQ09NUHRyPG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmU+IG5ld193
cmFwcGVyOwogICAgbnNyZXN1bHQgcnY7CgogICAgcnYgPSBzWFBDb25uZWN0LT5HZXRXcmFwcGVk
TmF0aXZlT2ZKU09iamVjdChjeCwgKChKU09iamVjdCAqKSgodm9pZCAqKSgoKnZwKSAmIH4oanN2
YWwpKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpKSksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdldHRlcl9BZGRSZWZzKG5ld193cmFwcGVyKSk7CiAg
ICBkbyB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0dXJuIHJ2OyB9IH0g
d2hpbGUgKDApOwoKICAgIG5zQ09NUHRyPG5zSVN1cHBvcnRzPiBuYXRpdmU7CiAgICBuZXdfd3Jh
cHBlci0+R2V0TmF0aXZlKGdldHRlcl9BZGRSZWZzKG5hdGl2ZSkpOwoKICAgIG5ld19vcHRpb24g
PSBkb19RdWVyeUludGVyZmFjZShuYXRpdmUpOwoKICAgIGlmICghbmV3X29wdGlvbikgewoKCiAg
ICAgIHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7CiAgICB9CiAgfQoKICByZXR1cm4g
YU9wdENvbGxlY3Rpb24tPlNldE9wdGlvbihhSW5kZXgsIG5ld19vcHRpb24pOwp9Cgpuc3Jlc3Vs
dApuc0hUTUxTZWxlY3RFbGVtZW50U0g6OlNldFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBwZWRO
YXRpdmUgKndyYXBwZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNDb250
ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAganN2YWwgKnZwLCBQUkJvb2wgKl9yZXR2YWwpCnsKICBpbnQzMiBuID0gR2V0
QXJyYXlJbmRleEZyb21JZChjeCwgaWQpOwoKICBpZiAobiA+PSAwKSB7CiAgICBuc0NPTVB0cjxu
c0lTdXBwb3J0cz4gbmF0aXZlOwogICAgd3JhcHBlci0+R2V0TmF0aXZlKGdldHRlcl9BZGRSZWZz
KG5hdGl2ZSkpOwoKICAgIG5zQ09NUHRyPG5zSURPTUhUTUxTZWxlY3RFbGVtZW50PiBzZWxlY3Qo
ZG9fUXVlcnlJbnRlcmZhY2UobmF0aXZlKSk7CiAgICBkbyB7IGlmICghKHNlbGVjdCkpIHsgOyBy
ZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwpOyB9IH0gd2hpbGUgKDApOwoKICAgIG5zQ09N
UHRyPG5zSURPTUhUTUxDb2xsZWN0aW9uPiBvcHRpb25zOwogICAgc2VsZWN0LT5HZXRPcHRpb25z
KGdldHRlcl9BZGRSZWZzKG9wdGlvbnMpKTsKCiAgICBuc0NPTVB0cjxuc0lET01OU0hUTUxPcHRp
b25Db2xsZWN0aW9uPiBvYyhkb19RdWVyeUludGVyZmFjZShvcHRpb25zKSk7CiAgICBkbyB7IGlm
ICghKG9jKSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAo
MCk7CgogICAgcmV0dXJuIFNldE9wdGlvbihjeCwgdnAsIG4sIG9jKTsKICB9CgogIHJldHVybiBu
c0VsZW1lbnRTSDo6U2V0UHJvcGVydHkod3JhcHBlciwgY3gsIG9iaiwgaWQsIHZwLCBfcmV0dmFs
KTsKfQojIDU1MTAgIm5zRE9NQ2xhc3NJbmZvLmNwcCIKbnNyZXN1bHQKbnNIVE1MRXh0ZXJuYWxP
YmpTSDo6R2V0UGx1Z2luSW5zdGFuY2UobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBl
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJUGx1Z2luSW5zdGFu
Y2UgKipfcmVzdWx0KQp7CiAgKl9yZXN1bHQgPSAwOwoKICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4g
bmF0aXZlOwoKICB3cmFwcGVyLT5HZXROYXRpdmUoZ2V0dGVyX0FkZFJlZnMobmF0aXZlKSk7Cgog
IG5zQ09NUHRyPG5zSUNvbnRlbnQ+IGNvbnRlbnQoZG9fUXVlcnlJbnRlcmZhY2UobmF0aXZlKSk7
CiAgZG8geyBpZiAoIShjb250ZW50KSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZm
TCk7IH0gfSB3aGlsZSAoMCk7CgogIG5zQ09NUHRyPG5zSURvY3VtZW50PiBkb2M7CgogIGNvbnRl
bnQtPkdldERvY3VtZW50KCpnZXR0ZXJfQWRkUmVmcyhkb2MpKTsKCiAgaWYgKCFkb2MpIHsKCgog
ICAgcmV0dXJuIDA7CiAgfQoKICBkb2MtPkZsdXNoUGVuZGluZ05vdGlmaWNhdGlvbnMoKTsKCgog
IG5zQ09NUHRyPG5zSVByZXNTaGVsbD4gc2hlbGw7CiAgZG9jLT5HZXRTaGVsbEF0KDAsIGdldHRl
cl9BZGRSZWZzKHNoZWxsKSk7CgogIGlmICghc2hlbGwpIHsKICAgIHJldHVybiAwOwogIH0KCiAg
bnNJRnJhbWUqIGZyYW1lID0gMDsKICBzaGVsbC0+R2V0UHJpbWFyeUZyYW1lRm9yKGNvbnRlbnQs
ICZmcmFtZSk7CgogIGlmICghZnJhbWUpIHsKCgogICAgcmV0dXJuIDA7CiAgfQoKICBuc0lPYmpl
Y3RGcmFtZSogb2JqZWN0RnJhbWUgPSAwOwogIENhbGxRdWVyeUludGVyZmFjZShmcmFtZSwgJm9i
amVjdEZyYW1lKTsKICBpZiAoIW9iamVjdEZyYW1lKSB7CiAgICByZXR1cm4gMDsKICB9CgogIHJl
dHVybiBvYmplY3RGcmFtZS0+R2V0UGx1Z2luSW5zdGFuY2UoKl9yZXN1bHQpOwp9CgoKCnN0YXRp
YyBQUkJvb2wKSXNPYmpJblByb3RvQ2hhaW4oSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwg
SlNPYmplY3QgKnByb3RvKQp7CiAgSlNPYmplY3QgKm8gPSBvYmo7CgogIHdoaWxlIChvKSB7CiAg
ICBKU09iamVjdCAqcCA9IDo6SlNfR2V0UHJvdG90eXBlKGN4LCBvKTsKCiAgICBpZiAocCA9PSBw
cm90bykgewogICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBvID0gcDsKICB9CgogIHJldHVybiAw
Owp9CiMgNTU4OCAibnNET01DbGFzc0luZm8uY3BwIgpuc3Jlc3VsdApuc0hUTUxFeHRlcm5hbE9i
alNIOjpQb3N0Q3JlYXRlKG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaikK
ewogIG5zcmVzdWx0IHJ2ID0gbnNFbGVtZW50U0g6OlBvc3RDcmVhdGUod3JhcHBlciwgY3gsIG9i
aik7CiAgZG8geyBpZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsg
fSB9IHdoaWxlICgwKTsKCiAgbnNDT01QdHI8bnNJUGx1Z2luSW5zdGFuY2U+IHBpOwoKICBydiA9
IEdldFBsdWdpbkluc3RhbmNlKHdyYXBwZXIsIGdldHRlcl9BZGRSZWZzKHBpKSk7CiAgZG8geyBp
ZiAoISgoISgocnYpICYgMHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsgfSB9IHdoaWxlICgw
KTsKCiAgaWYgKCFwaSkgewoKCiAgICByZXR1cm4gMDsKICB9CgogIEpTT2JqZWN0ICpwaV9vYmog
PSAwOwogIEpTT2JqZWN0ICpwaV9wcm90byA9IDA7CgogIHJ2ID0gR2V0UGx1Z2luSlNPYmplY3Qo
Y3gsIG9iaiwgcGksICZwaV9vYmosICZwaV9wcm90byk7CiAgZG8geyBpZiAoISgoISgocnYpICYg
MHg4MDAwMDAwMCkpKSkgeyA7IHJldHVybiBydjsgfSB9IHdoaWxlICgwKTsKCiAgaWYgKCFwaV9v
YmopIHsKCgogICAgcmV0dXJuIDA7CiAgfQoKICBpZiAoSXNPYmpJblByb3RvQ2hhaW4oY3gsIG9i
aiwgcGlfb2JqKSkgewoKCgoKCiAgICByZXR1cm4gMDsKICB9CgoKCgoKICBKU09iamVjdCAqbXlf
cHJvdG8gPSAwOwoKCiAgcnYgPSB3cmFwcGVyLT5HZXRKU09iamVjdFByb3RvdHlwZSgmbXlfcHJv
dG8pOwogIGRvIHsgaWYgKCEoKCEoKHJ2KSAmIDB4ODAwMDAwMDApKSkpIHsgOyByZXR1cm4gcnY7
IH0gfSB3aGlsZSAoMCk7CgoKICBpZiAoITo6SlNfU2V0UHJvdG90eXBlKGN4LCBvYmosIHBpX29i
aikpIHsKICAgIHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7CiAgfQoKICBpZiAocGlf
cHJvdG8gJiYgSlNfR2V0Q2xhc3MoY3gsIHBpX3Byb3RvKSAhPSBzT2JqZWN0Q2xhc3MpIHsKCgog
ICAgaWYgKCE6OkpTX1NldFByb3RvdHlwZShjeCwgcGlfcHJvdG8sIG15X3Byb3RvKSkgewogICAg
ICByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwpOwogICAgfQogIH0gZWxzZSB7CgoKCiAg
ICBpZiAoITo6SlNfU2V0UHJvdG90eXBlKGN4LCBwaV9vYmosIG15X3Byb3RvKSkgewogICAgICBy
ZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDAwZmZmZkwpOwogICAgfQogIH0KIyA1NzA2ICJuc0RPTUNs
YXNzSW5mby5jcHAiCiAgcmV0dXJuIDA7Cn0KCgoKCm5zcmVzdWx0Cm5zSFRNTEFwcGxldEVsZW1l
bnRTSDo6R2V0UGx1Z2luSlNPYmplY3QoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lQbHVnaW5JbnN0YW5jZSAq
cGx1Z2luX2luc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNP
YmplY3QgKipwbHVnaW5fb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEpTT2JqZWN0ICoqcGx1Z2luX3Byb3RvKQp7CiAgKnBsdWdpbl9vYmogPSAwOwogICpwbHVn
aW5fcHJvdG8gPSAwOwoKICBuc0NPTVB0cjxuc0lKVk1NYW5hZ2VyPiBqdm0oZG9fR2V0U2Vydmlj
ZShuc0lKVk1NYW5hZ2VyOjpHZXRDSUQoKSkpOwoKICBpZiAoIWp2bSkgewogICAgcmV0dXJuIDA7
CiAgfQoKICBuc0NPTVB0cjxuc0lKVk1QbHVnaW5JbnN0YW5jZT4gamF2YVBsdWdpbkluc3RhbmNl
OwoKICBqYXZhUGx1Z2luSW5zdGFuY2UgPSBkb19RdWVyeUludGVyZmFjZShwbHVnaW5faW5zdCk7
CgogIGlmICghamF2YVBsdWdpbkluc3RhbmNlKSB7CiAgICByZXR1cm4gMDsKICB9CgogIGpvYmpl
Y3QgYXBwbGV0T2JqZWN0ID0gMDsKICBuc3Jlc3VsdCBydiA9IGphdmFQbHVnaW5JbnN0YW5jZS0+
R2V0SmF2YU9iamVjdCgmYXBwbGV0T2JqZWN0KTsKCiAgaWYgKCgocnYpICYgMHg4MDAwMDAwMCkg
fHwgIWFwcGxldE9iamVjdCkgewogICAgcmV0dXJuIHJ2OwogIH0KCiAgbnNDT01QdHI8bnNJTGl2
ZUNvbm5lY3RNYW5hZ2VyPiBtYW5hZ2VyID0KICAgIGRvX0dldFNlcnZpY2UobnNJSlZNTWFuYWdl
cjo6R2V0Q0lEKCkpOwoKICBpZiAoIW1hbmFnZXIpIHsKICAgIHJldHVybiAwOwogIH0KCiAgcmV0
dXJuIG1hbmFnZXItPldyYXBKYXZhT2JqZWN0KGN4LCBhcHBsZXRPYmplY3QsIHBsdWdpbl9vYmop
Owp9CgoKCgpuc3Jlc3VsdApuc0hUTUxQbHVnaW5PYmpFbGVtZW50U0g6OkdldFBsdWdpbkpTT2Jq
ZWN0KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnNJUGx1Z2luSW5zdGFuY2UgKnBsdWdpbl9pbnN0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICoqcGx1Z2lu
X29iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVj
dCAqKnBsdWdpbl9wcm90bykKewogICpwbHVnaW5fb2JqID0gMDsKICAqcGx1Z2luX3Byb3RvID0g
MDsKCgoKCgoKCiAgbnNJSUQgc2NyaXB0YWJsZUlJRCA9IG5zQ09NVHlwZUluZm88bnNJU3VwcG9y
dHM+OjpHZXRJSUQoKTsKICBuc0NPTVB0cjxuc0lTdXBwb3J0cz4gc2NyaXB0YWJsZV9wZWVyOwoK
ICBuc0NPTVB0cjxuc0lTY3JpcHRhYmxlUGx1Z2luPiBzcGkoZG9fUXVlcnlJbnRlcmZhY2UocGx1
Z2luX2luc3QpKTsKCiAgaWYgKHNwaSkgewogICAgbnNJSUQgKnNjcmlwdGFibGVJbnRlcmZhY2VQ
dHIgPSAwOwogICAgc3BpLT5HZXRTY3JpcHRhYmxlSW50ZXJmYWNlKCZzY3JpcHRhYmxlSW50ZXJm
YWNlUHRyKTsKCiAgICBpZiAoc2NyaXB0YWJsZUludGVyZmFjZVB0cikgewogICAgICBzcGktPkdl
dFNjcmlwdGFibGVQZWVyKGdldHRlcl9BZGRSZWZzKHNjcmlwdGFibGVfcGVlcikpOwoKICAgICAg
c2NyaXB0YWJsZUlJRCA9ICpzY3JpcHRhYmxlSW50ZXJmYWNlUHRyOwoKICAgICAgbnNNZW1vcnk6
OkZyZWUoc2NyaXB0YWJsZUludGVyZmFjZVB0cik7CiAgICB9CiAgfQoKICBuc0NPTVB0cjxuc0lD
bGFzc0luZm8+IGNpKGRvX1F1ZXJ5SW50ZXJmYWNlKHBsdWdpbl9pbnN0KSk7CgogIGlmICghc2Ny
aXB0YWJsZV9wZWVyKSB7CiAgICBpZiAoIWNpKSB7CgoKCgoKICAgICAgcmV0dXJuIG5zSFRNTEFw
cGxldEVsZW1lbnRTSDo6R2V0UGx1Z2luSlNPYmplY3QoY3gsIG9iaiwgcGx1Z2luX2luc3QsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdWdp
bl9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBsdWdpbl9wcm90byk7CiAgICB9CgoKCiAgICBzY3JpcHRhYmxlX3BlZXIgPSBwbHVnaW5f
aW5zdDsKICB9CgoKCgoKCiAgaWYgKGNpKSB7CgoKCiAgICBQUlVpbnQzMiBmbGFnczsKICAgIGNp
LT5HZXRGbGFncygmZmxhZ3MpOwoKICAgIGlmICghKGZsYWdzICYgbnNJQ2xhc3NJbmZvOjpQTFVH
SU5fT0JKRUNUKSkgewoKCgoKICAgICAgcmV0dXJuIDA7CiAgICB9CiAgfQoKCgogIG5zQ09NUHRy
PG5zSVBsdWdpbkhvc3Q+IHBsdWdpbk1hbmFnZXIgPQogICAgZG9fR2V0U2VydmljZShrQ1BsdWdp
bk1hbmFnZXJDSUQpOwoKICBuc0NPTVB0cjxuc1BJUGx1Z2luSG9zdD4gcGx1Z2luSG9zdChkb19R
dWVyeUludGVyZmFjZShwbHVnaW5NYW5hZ2VyKSk7CgogIGlmKHBsdWdpbkhvc3QpIHsKICAgIHBs
dWdpbkhvc3QtPlNldElzU2NyaXB0YWJsZUluc3RhbmNlKHBsdWdpbl9pbnN0LCAxKTsKICB9CgoK
CiAgbnNDT01QdHI8bnNJWFBDb25uZWN0SlNPYmplY3RIb2xkZXI+IGhvbGRlcjsKICBuc3Jlc3Vs
dCBydiA9IHNYUENvbm5lY3QtPldyYXBOYXRpdmUoY3gsIDo6SlNfR2V0UGFyZW50KGN4LCBvYmop
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRhYmxlX3BlZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdGFibGVJSUQsIGdl
dHRlcl9BZGRSZWZzKGhvbGRlcikpOwogIGRvIHsgaWYgKCEoKCEoKHJ2KSAmIDB4ODAwMDAwMDAp
KSkpIHsgOyByZXR1cm4gcnY7IH0gfSB3aGlsZSAoMCk7CgoKCiAgbnNDT01QdHI8bnNJWFBDb25u
ZWN0V3JhcHBlZE5hdGl2ZT4gcGlfd3JhcHBlcihkb19RdWVyeUludGVyZmFjZShob2xkZXIpKTsK
ICBkbyB7IGlmICghKHBpX3dyYXBwZXIpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZm
ZmZMKTsgfSB9IHdoaWxlICgwKTsKCiAgcnYgPSBwaV93cmFwcGVyLT5HZXRKU09iamVjdChwbHVn
aW5fb2JqKTsKICBkbyB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0dXJu
IHJ2OyB9IH0gd2hpbGUgKDApOwoKICByZXR1cm4gcGlfd3JhcHBlci0+R2V0SlNPYmplY3RQcm90
b3R5cGUocGx1Z2luX3Byb3RvKTsKfQoKbnNyZXN1bHQKbnNIVE1MUGx1Z2luT2JqRWxlbWVudFNI
OjpOZXdSZXNvbHZlKG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndyYXBwZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2Jq
LCBqc3ZhbCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSVWludDMy
IGZsYWdzLCBKU09iamVjdCAqKm9ianAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQUkJvb2wgKl9yZXR2YWwpCnsKICBpZiAoKCgoaWQpICYgKCgoSlNVaW50MzIpMSA8PCAo
MykpIC0gMSkpID09IDB4NCkpIHsKCgoKICAgIEpTU3RyaW5nICpzdHIgPSAoKEpTU3RyaW5nICop
KCh2b2lkICopKChpZCkgJiB+KGpzdmFsKSgoKEpTVWludDMyKTEgPDwgKDMpKSAtIDEpKSkpOwog
ICAgY2hhciogY3N0cmluZyA9IDo6SlNfR2V0U3RyaW5nQnl0ZXMoc3RyKTsKCiAgICBuc0NPTVB0
cjxuc0lJbnRlcmZhY2VJbmZvTWFuYWdlcj4gaWltID0KICAgICAgZG9udF9BZGRSZWYoWFBUSV9H
ZXRJbnRlcmZhY2VJbmZvTWFuYWdlcigpKTsKICAgIGRvIHsgaWYgKCEoaWltKSkgeyA7IHJldHVy
biAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7CgogICAgbnNJSUQqIGlp
ZCA9IDA7CgogICAgbnNyZXN1bHQgcnYgPSBpaW0tPkdldElJREZvck5hbWUoY3N0cmluZywgJmlp
ZCk7CgogICAgaWYgKCghKChydikgJiAweDgwMDAwMDAwKSkgJiYgaWlkKSB7CiAgICAgIG5zQ09N
UHRyPG5zSVBsdWdpbkluc3RhbmNlPiBwaTsKCiAgICAgIEdldFBsdWdpbkluc3RhbmNlKHdyYXBw
ZXIsIGdldHRlcl9BZGRSZWZzKHBpKSk7CgogICAgICBpZiAocGkpIHsKCgoKICAgICAgICBuc0NP
TVB0cjxuc0lQbHVnaW5Ib3N0PiBwbHVnaW5NYW5hZ2VyID0KICAgICAgICAgIGRvX0dldFNlcnZp
Y2Uoa0NQbHVnaW5NYW5hZ2VyQ0lEKTsKCiAgICAgICAgbnNDT01QdHI8bnNQSVBsdWdpbkhvc3Q+
IHBsdWdpbkhvc3QoZG9fUXVlcnlJbnRlcmZhY2UocGx1Z2luTWFuYWdlcikpOwoKICAgICAgICBp
ZihwbHVnaW5Ib3N0KSB7CiAgICAgICAgICBwbHVnaW5Ib3N0LT5TZXRJc1NjcmlwdGFibGVJbnN0
YW5jZShwaSwgMSk7CiAgICAgICAgfQoKICAgICAgICBuc0NPTVB0cjxuc0lYUENvbm5lY3RKU09i
amVjdEhvbGRlcj4gaG9sZGVyOwogICAgICAgIHJ2ID0gc1hQQ29ubmVjdC0+V3JhcE5hdGl2ZShj
eCwgOjpKU19HZXRHbG9iYWxPYmplY3QoY3gpLCBwaSwgKmlpZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2V0dGVyX0FkZFJlZnMoaG9sZGVyKSk7CgogICAgICAgIGlmICgo
ISgocnYpICYgMHg4MDAwMDAwMCkpKSB7CiAgICAgICAgICBKU09iamVjdCogaWZhY2VPYmo7Cgog
ICAgICAgICAgcnYgPSBob2xkZXItPkdldEpTT2JqZWN0KCZpZmFjZU9iaik7CgogICAgICAgICAg
aWYgKCghKChydikgJiAweDgwMDAwMDAwKSkpIHsKICAgICAgICAgICAgbnNNZW1vcnk6OkZyZWUo
aWlkKTsKCiAgICAgICAgICAgICpfcmV0dmFsID0gOjpKU19EZWZpbmVVQ1Byb3BlcnR5KGN4LCBv
YmosIDo6SlNfR2V0U3RyaW5nQ2hhcnMoc3RyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOjpKU19HZXRTdHJpbmdMZW5ndGgoc3RyKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChqc3ZhbCkoaWZhY2VPYmopKSwgMCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMHgwMSk7Cgog
ICAgICAgICAgICAqb2JqcCA9IG9iajsKCiAgICAgICAgICAgIHJldHVybiAqX3JldHZhbCA/IDAg
OiAoKG5zcmVzdWx0KSAweDgwMDA0MDA1TCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9
CgogICAgICBuc01lbW9yeTo6RnJlZShpaWQpOwogICAgfQogIH0KCiAgcmV0dXJuIG5zSFRNTEVs
ZW1lbnRTSDo6TmV3UmVzb2x2ZSh3cmFwcGVyLCBjeCwgb2JqLCBpZCwgZmxhZ3MsIG9ianAsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcmV0dmFsKTsKfQoKCgoKbnNyZXN1
bHQKbnNIVE1MT3B0aW9uQ29sbGVjdGlvblNIOjpTZXRQcm9wZXJ0eShuc0lYUENvbm5lY3RXcmFw
cGVkTmF0aXZlICp3cmFwcGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGpzdmFsICp2cCwgUFJCb29sICpfcmV0dmFsKQp7CiAgaW50
MzIgbiA9IEdldEFycmF5SW5kZXhGcm9tSWQoY3gsIGlkKTsKCiAgaWYgKG4gPCAwKSB7CiAgICBy
ZXR1cm4gMDsKICB9CgogIG5zQ09NUHRyPG5zSVN1cHBvcnRzPiBuYXRpdmU7CiAgd3JhcHBlci0+
R2V0TmF0aXZlKGdldHRlcl9BZGRSZWZzKG5hdGl2ZSkpOwoKICBuc0NPTVB0cjxuc0lET01OU0hU
TUxPcHRpb25Db2xsZWN0aW9uPiBvYyhkb19RdWVyeUludGVyZmFjZShuYXRpdmUpKTsKICBkbyB7
IGlmICghKG9jKSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7IH0gfSB3aGls
ZSAoMCk7CgogIHJldHVybiBuc0hUTUxTZWxlY3RFbGVtZW50U0g6OlNldE9wdGlvbihjeCwgdnAs
IG4sIG9jKTsKfQoKCgoKbnNyZXN1bHQKbnNQbHVnaW5TSDo6R2V0SXRlbUF0KG5zSVN1cHBvcnRz
ICphTmF0aXZlLCBQUlVpbnQzMiBhSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICBuc0lTdXBw
b3J0cyAqKmFSZXN1bHQpCnsKICBuc0NPTVB0cjxuc0lET01QbHVnaW4+IHBsdWdpbihkb19RdWVy
eUludGVyZmFjZShhTmF0aXZlKSk7CiAgZG8geyBpZiAoIShwbHVnaW4pKSB7IDsgcmV0dXJuICgo
bnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsgfSB9IHdoaWxlICgwKTsKCiAgbnNJRE9NTWltZVR5cGUg
Km1pbWVfdHlwZSA9IDA7CiAgbnNyZXN1bHQgcnYgPSBwbHVnaW4tPkl0ZW0oYUluZGV4LCAmbWlt
ZV90eXBlKTsKCiAgKmFSZXN1bHQgPSBtaW1lX3R5cGU7CgogIHJldHVybiBydjsKfQoKbnNyZXN1
bHQKbnNQbHVnaW5TSDo6R2V0TmFtZWRJdGVtKG5zSVN1cHBvcnRzICphTmF0aXZlLCBjb25zdCBu
c0FTdHJpbmcmIGFOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3VwcG9ydHMgKiph
UmVzdWx0KQp7CiAgbnNDT01QdHI8bnNJRE9NUGx1Z2luPiBwbHVnaW4oZG9fUXVlcnlJbnRlcmZh
Y2UoYU5hdGl2ZSkpOwogIGRvIHsgaWYgKCEocGx1Z2luKSkgeyA7IHJldHVybiAoKG5zcmVzdWx0
KSAweDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7CgogIG5zSURPTU1pbWVUeXBlICptaW1lX3R5
cGUgPSAwOwoKICBuc3Jlc3VsdCBydiA9IHBsdWdpbi0+TmFtZWRJdGVtKGFOYW1lLCAmbWltZV90
eXBlKTsKCiAgKmFSZXN1bHQgPSBtaW1lX3R5cGU7CgogIHJldHVybiBydjsKfQoKCgoKbnNyZXN1
bHQKbnNQbHVnaW5BcnJheVNIOjpHZXRJdGVtQXQobnNJU3VwcG9ydHMgKmFOYXRpdmUsIFBSVWlu
dDMyIGFJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3VwcG9ydHMgKiphUmVz
dWx0KQp7CiAgbnNDT01QdHI8bnNJRE9NUGx1Z2luQXJyYXk+IGFycmF5KGRvX1F1ZXJ5SW50ZXJm
YWNlKGFOYXRpdmUpKTsKICBkbyB7IGlmICghKGFycmF5KSkgeyA7IHJldHVybiAoKG5zcmVzdWx0
KSAweDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7CgogIG5zSURPTVBsdWdpbiAqcGx1Z2luID0g
MDsKICBuc3Jlc3VsdCBydiA9IGFycmF5LT5JdGVtKGFJbmRleCwgJnBsdWdpbik7CgogICphUmVz
dWx0ID0gcGx1Z2luOwoKICByZXR1cm4gcnY7Cn0KCm5zcmVzdWx0Cm5zUGx1Z2luQXJyYXlTSDo6
R2V0TmFtZWRJdGVtKG5zSVN1cHBvcnRzICphTmF0aXZlLCBjb25zdCBuc0FTdHJpbmcmIGFOYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdXBwb3J0cyAqKmFSZXN1bHQpCnsK
ICBuc0NPTVB0cjxuc0lET01QbHVnaW5BcnJheT4gYXJyYXkoZG9fUXVlcnlJbnRlcmZhY2UoYU5h
dGl2ZSkpOwogIGRvIHsgaWYgKCEoYXJyYXkpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAw
MGZmZmZMKTsgfSB9IHdoaWxlICgwKTsKCiAgbnNJRE9NUGx1Z2luICpwbHVnaW4gPSAwOwoKICBu
c3Jlc3VsdCBydiA9IGFycmF5LT5OYW1lZEl0ZW0oYU5hbWUsICZwbHVnaW4pOwoKICAqYVJlc3Vs
dCA9IHBsdWdpbjsKCiAgcmV0dXJuIHJ2Owp9CgoKCgpuc3Jlc3VsdApuc01pbWVUeXBlQXJyYXlT
SDo6R2V0SXRlbUF0KG5zSVN1cHBvcnRzICphTmF0aXZlLCBQUlVpbnQzMiBhSW5kZXgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3VwcG9ydHMgKiphUmVzdWx0KQp7CiAgbnNDT01Q
dHI8bnNJRE9NTWltZVR5cGVBcnJheT4gYXJyYXkoZG9fUXVlcnlJbnRlcmZhY2UoYU5hdGl2ZSkp
OwogIGRvIHsgaWYgKCEoYXJyYXkpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZM
KTsgfSB9IHdoaWxlICgwKTsKCiAgbnNJRE9NTWltZVR5cGUgKm1pbWVfdHlwZSA9IDA7CiAgbnNy
ZXN1bHQgcnYgPSBhcnJheS0+SXRlbShhSW5kZXgsICZtaW1lX3R5cGUpOwoKICAqYVJlc3VsdCA9
IG1pbWVfdHlwZTsKCiAgcmV0dXJuIHJ2Owp9Cgpuc3Jlc3VsdApuc01pbWVUeXBlQXJyYXlTSDo6
R2V0TmFtZWRJdGVtKG5zSVN1cHBvcnRzICphTmF0aXZlLCBjb25zdCBuc0FTdHJpbmcmIGFOYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzICoqYVJlc3VsdCkK
ewogIG5zQ09NUHRyPG5zSURPTU1pbWVUeXBlQXJyYXk+IGFycmF5KGRvX1F1ZXJ5SW50ZXJmYWNl
KGFOYXRpdmUpKTsKICBkbyB7IGlmICghKGFycmF5KSkgeyA7IHJldHVybiAoKG5zcmVzdWx0KSAw
eDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7CgogIG5zSURPTU1pbWVUeXBlICptaW1lX3R5cGUg
PSAwOwoKICBuc3Jlc3VsdCBydiA9IGFycmF5LT5OYW1lZEl0ZW0oYU5hbWUsICZtaW1lX3R5cGUp
OwoKICAqYVJlc3VsdCA9IG1pbWVfdHlwZTsKCiAgcmV0dXJuIHJ2Owp9CgoKCgpuc3Jlc3VsdApu
c1N0cmluZ0FycmF5U0g6OkdldFByb3BlcnR5KG5zSVhQQ29ubmVjdFdyYXBwZWROYXRpdmUgKndy
YXBwZXIsIEpTQ29udGV4dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmpl
Y3QgKm9iaiwganN2YWwgaWQsIGpzdmFsICp2cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUkJvb2wgKl9yZXR2YWwpCnsKICBQUkJvb2wgaXNfbnVtYmVyID0gMDsKICBQUkludDMyIG4g
PSBHZXRBcnJheUluZGV4RnJvbUlkKGN4LCBpZCwgJmlzX251bWJlcik7CgogIGlmICghaXNfbnVt
YmVyKSB7CiAgICByZXR1cm4gMDsKICB9CgogIG5zQ09NUHRyPG5zSVN1cHBvcnRzPiBuYXRpdmU7
CiAgd3JhcHBlci0+R2V0TmF0aXZlKGdldHRlcl9BZGRSZWZzKG5hdGl2ZSkpOwoKICBuc0F1dG9T
dHJpbmcgdmFsOwoKICBuc3Jlc3VsdCBydiA9IEdldFN0cmluZ0F0KG5hdGl2ZSwgbiwgdmFsKTsK
ICBkbyB7IGlmICghKCghKChydikgJiAweDgwMDAwMDAwKSkpKSB7IDsgcmV0dXJuIHJ2OyB9IH0g
d2hpbGUgKDApOwoKCgogIEpTU3RyaW5nICpzdHIgPQogICAgOjpKU19OZXdVQ1N0cmluZ0NvcHlO
KGN4LCByZWludGVycHJldF9jYXN0PCBjb25zdCBqc2NoYXIgKiA+KHZhbC5nZXQoKSksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFsLkxlbmd0aCgpKTsKICBkbyB7IGlmICghKHN0cikpIHsg
OyByZXR1cm4gKChuc3Jlc3VsdCkgMHg4MDA3MDAwZUwpOyB9IH0gd2hpbGUgKDApOwoKICAqdnAg
PSAoKChqc3ZhbCkoc3RyKSkgfCAoMHg0KSk7CgogIHJldHVybiAwOwp9CgoKCgpuc3Jlc3VsdApu
c0hpc3RvcnlTSDo6R2V0UHJvcGVydHkobnNJWFBDb25uZWN0V3JhcHBlZE5hdGl2ZSAqd3JhcHBl
ciwgSlNDb250ZXh0ICpjeCwKICAgICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpvYmos
IGpzdmFsIGlkLCBqc3ZhbCAqdnAsIFBSQm9vbCAqX3JldHZhbCkKewogIFBSQm9vbCBpc19udW1i
ZXIgPSAwOwogIEdldEFycmF5SW5kZXhGcm9tSWQoY3gsIGlkLCAmaXNfbnVtYmVyKTsKCiAgaWYg
KCFpc19udW1iZXIpIHsKICAgIHJldHVybiAwOwogIH0KCiAgbnNyZXN1bHQgcnYgPQogICAgc1Nl
Y01hbi0+Q2hlY2tQcm9wZXJ0eUFjY2VzcyhjeCwgb2JqLCBtRGF0YS0+bU5hbWUsIHNJdGVtX2lk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lYUENTZWN1cml0eU1hbmFnZXI6
OkFDQ0VTU19DQUxMX01FVEhPRCk7CgogIGlmICgoKHJ2KSAmIDB4ODAwMDAwMDApKSB7CgogICAg
Kl9yZXR2YWwgPSAwOwoKICAgIHJldHVybiAwOwogIH0KCgoKICByZXR1cm4gbnNTdHJpbmdBcnJh
eVNIOjpHZXRQcm9wZXJ0eSh3cmFwcGVyLCBjeCwgb2JqLCBpZCwgdnAsIF9yZXR2YWwpOwp9Cgpu
c3Jlc3VsdApuc0hpc3RvcnlTSDo6R2V0U3RyaW5nQXQobnNJU3VwcG9ydHMgKmFOYXRpdmUsIFBS
SW50MzIgYUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgbnNBU3RyaW5nJiBhUmVzdWx0
KQp7CiAgaWYgKGFJbmRleCA8IDApIHsKICAgIHJldHVybiAoKG5zcmVzdWx0KSAoKChQUlVpbnQz
MikoMSk8PDMxKSB8ICgoUFJVaW50MzIpKDE0ICsweDQ1KTw8MTYpIHwgKChQUlVpbnQzMikoMSkp
KSApOwogIH0KCiAgbnNDT01QdHI8bnNJRE9NSGlzdG9yeT4gaGlzdG9yeShkb19RdWVyeUludGVy
ZmFjZShhTmF0aXZlKSk7CgogIHJldHVybiBoaXN0b3J5LT5JdGVtKGFJbmRleCwgYVJlc3VsdCk7
Cn0KCgoKCm5zcmVzdWx0Cm5zTWVkaWFMaXN0U0g6OkdldFN0cmluZ0F0KG5zSVN1cHBvcnRzICph
TmF0aXZlLCBQUkludDMyIGFJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNBU3Ry
aW5nJiBhUmVzdWx0KQp7CiAgaWYgKGFJbmRleCA8IDApIHsKICAgIHJldHVybiAoKG5zcmVzdWx0
KSAoKChQUlVpbnQzMikoMSk8PDMxKSB8ICgoUFJVaW50MzIpKDE0ICsweDQ1KTw8MTYpIHwgKChQ
UlVpbnQzMikoMSkpKSApOwogIH0KCiAgbnNDT01QdHI8bnNJRE9NTWVkaWFMaXN0PiBtZWRpYV9s
aXN0KGRvX1F1ZXJ5SW50ZXJmYWNlKGFOYXRpdmUpKTsKCiAgcmV0dXJuIG1lZGlhX2xpc3QtPkl0
ZW0oUFJVaW50MzIoYUluZGV4KSwgYVJlc3VsdCk7Cn0KCgoKCm5zcmVzdWx0Cm5zU3R5bGVTaGVl
dExpc3RTSDo6R2V0SXRlbUF0KG5zSVN1cHBvcnRzICphTmF0aXZlLCBQUlVpbnQzMiBhSW5kZXgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzICoqYVJlc3VsdCkKewog
IG5zQ09NUHRyPG5zSURPTVN0eWxlU2hlZXRMaXN0PiBzdHlsZXNoZWV0cyhkb19RdWVyeUludGVy
ZmFjZShhTmF0aXZlKSk7CiAgZG8geyBpZiAoIShzdHlsZXNoZWV0cykpIHsgOyByZXR1cm4gKChu
c3Jlc3VsdCkgMHg4MDAwZmZmZkwpOyB9IH0gd2hpbGUgKDApOwoKICBuc0lET01TdHlsZVNoZWV0
ICpzaGVldCA9IDA7CiAgbnNyZXN1bHQgcnYgPSBzdHlsZXNoZWV0cy0+SXRlbShhSW5kZXgsICZz
aGVldCk7CgogICphUmVzdWx0ID0gc2hlZXQ7CgogIHJldHVybiBydjsKfQoKCgoKbnNyZXN1bHQK
bnNDU1NWYWx1ZUxpc3RTSDo6R2V0SXRlbUF0KG5zSVN1cHBvcnRzICphTmF0aXZlLCBQUlVpbnQz
MiBhSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lTdXBwb3J0cyAqKmFSZXN1
bHQpCnsKICBuc0NPTVB0cjxuc0lET01DU1NWYWx1ZUxpc3Q+IGNzc1ZhbHVlTGlzdChkb19RdWVy
eUludGVyZmFjZShhTmF0aXZlKSk7CiAgZG8geyBpZiAoIShjc3NWYWx1ZUxpc3QpKSB7IDsgcmV0
dXJuICgobnNyZXN1bHQpIDB4ODAwMGZmZmZMKTsgfSB9IHdoaWxlICgwKTsKCiAgbnNJRE9NQ1NT
VmFsdWUgKmNzc1ZhbHVlID0gMDsKICBuc3Jlc3VsdCBydiA9IGNzc1ZhbHVlTGlzdC0+SXRlbShh
SW5kZXgsICZjc3NWYWx1ZSk7CgogICphUmVzdWx0ID0gY3NzVmFsdWU7CgogIHJldHVybiBydjsK
fQoKCgoKbnNyZXN1bHQKbnNDU1NTdHlsZURlY2xTSDo6R2V0U3RyaW5nQXQobnNJU3VwcG9ydHMg
KmFOYXRpdmUsIFBSSW50MzIgYUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
c0FTdHJpbmcmIGFSZXN1bHQpCnsKICBpZiAoYUluZGV4IDwgMCkgewogICAgcmV0dXJuICgobnNy
ZXN1bHQpICgoKFBSVWludDMyKSgxKTw8MzEpIHwgKChQUlVpbnQzMikoMTQgKzB4NDUpPDwxNikg
fCAoKFBSVWludDMyKSgxKSkpICk7CiAgfQoKICBuc0NPTVB0cjxuc0lET01DU1NTdHlsZURlY2xh
cmF0aW9uPiBzdHlsZV9kZWNsKGRvX1F1ZXJ5SW50ZXJmYWNlKGFOYXRpdmUpKTsKCiAgcmV0dXJu
IHN0eWxlX2RlY2wtPkl0ZW0oUFJVaW50MzIoYUluZGV4KSwgYVJlc3VsdCk7Cn0KCgoKCm5zcmVz
dWx0Cm5zQ1NTUnVsZUxpc3RTSDo6R2V0SXRlbUF0KG5zSVN1cHBvcnRzICphTmF0aXZlLCBQUlVp
bnQzMiBhSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVN1cHBvcnRzICoqYVJl
c3VsdCkKewogIG5zQ09NUHRyPG5zSURPTUNTU1J1bGVMaXN0PiBsaXN0KGRvX1F1ZXJ5SW50ZXJm
YWNlKGFOYXRpdmUpKTsKICBkbyB7IGlmICghKGxpc3QpKSB7IDsgcmV0dXJuICgobnNyZXN1bHQp
IDB4ODAwMGZmZmZMKTsgfSB9IHdoaWxlICgwKTsKCiAgbnNJRE9NQ1NTUnVsZSAqcnVsZSA9IDA7
CiAgbnNyZXN1bHQgcnYgPSBsaXN0LT5JdGVtKGFJbmRleCwgJnJ1bGUpOwoKICAqYVJlc3VsdCA9
IHJ1bGU7CgogIHJldHVybiBydjsKfQoKCgoKbnNyZXN1bHQgbnNFdmVudExpc3RlbmVyVGhpc1Ry
YW5zbGF0b3I6OlF1ZXJ5SW50ZXJmYWNlKGNvbnN0IG5zSUlEJiBhSUlELCB2b2lkKiogYUluc3Rh
bmNlUHRyKSB7IDsgaWYgKCAhYUluc3RhbmNlUHRyICkgcmV0dXJuICgobnNyZXN1bHQpIDB4ODAw
MDQwMDNMKTsgbnNJU3VwcG9ydHMqIGZvdW5kSW50ZXJmYWNlOwogIGlmICggYUlJRC5FcXVhbHMo
bnNDT01UeXBlSW5mbzxuc0lYUENGdW5jdGlvblRoaXNUcmFuc2xhdG9yPjo6R2V0SUlEKCkpICkg
Zm91bmRJbnRlcmZhY2UgPSBzdGF0aWNfY2FzdDwgbnNJWFBDRnVuY3Rpb25UaGlzVHJhbnNsYXRv
ciogPih0aGlzKTsgZWxzZQogIGlmICggYUlJRC5FcXVhbHMobnNDT01UeXBlSW5mbzxuc0lTdXBw
b3J0cz46OkdldElJRCgpKSApIGZvdW5kSW50ZXJmYWNlID0gc3RhdGljX2Nhc3Q8IG5zSVN1cHBv
cnRzKiA+KHRoaXMpOyBlbHNlCmZvdW5kSW50ZXJmYWNlID0gMDsgbnNyZXN1bHQgc3RhdHVzOyBp
ZiAoICFmb3VuZEludGVyZmFjZSApIHN0YXR1cyA9ICgobnNyZXN1bHQpIDB4ODAwMDQwMDJMKTsg
ZWxzZSB7IChmb3VuZEludGVyZmFjZSktPkFkZFJlZigpOyBzdGF0dXMgPSAwOyB9ICphSW5zdGFu
Y2VQdHIgPSBmb3VuZEludGVyZmFjZTsgcmV0dXJuIHN0YXR1czsgfQoKCm5zcmVmY250IG5zRXZl
bnRMaXN0ZW5lclRoaXNUcmFuc2xhdG9yOjpBZGRSZWYodm9pZCkgeyA7ICgodm9pZCkwKTsgKytt
UmVmQ250OyA7IHJldHVybiBtUmVmQ250OyB9Cm5zcmVmY250IG5zRXZlbnRMaXN0ZW5lclRoaXNU
cmFuc2xhdG9yOjpSZWxlYXNlKHZvaWQpIHsgOyAoKHZvaWQpMCk7IC0tbVJlZkNudDsgOyBpZiAo
bVJlZkNudCA9PSAwKSB7IG1SZWZDbnQgPSAxOyBkbyB7IDsgZGVsZXRlICh0aGlzKTsgfSB3aGls
ZSAoMCk7IHJldHVybiAwOyB9IHJldHVybiBtUmVmQ250OyB9CgoKbnNyZXN1bHQKbnNFdmVudExp
c3RlbmVyVGhpc1RyYW5zbGF0b3I6OlRyYW5zbGF0ZVRoaXMobnNJU3VwcG9ydHMgKmFJbml0aWFs
VGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJSW50
ZXJmYWNlSW5mbyAqYUludGVyZmFjZUluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBSVWludDE2IGFNZXRob2RJbmRleCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJCb29sICphSGlkZUZpcnN0UGFyYW1Gcm9tSlMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSUlEICogKmFJ
SURPZlJlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnNJU3VwcG9ydHMgKipfcmV0dmFsKQp7CiAgKmFIaWRlRmlyc3RQYXJhbUZyb21KUyA9IDA7CiAg
KmFJSURPZlJlc3VsdCA9IDA7CgogIG5zQ09NUHRyPG5zSURPTUV2ZW50PiBldmVudChkb19RdWVy
eUludGVyZmFjZShhSW5pdGlhbFRoaXMpKTsKICBkbyB7IGlmICghKGV2ZW50KSkgeyA7IHJldHVy
biAoKG5zcmVzdWx0KSAweDgwMDBmZmZmTCk7IH0gfSB3aGlsZSAoMCk7CgogIG5zQ09NUHRyPG5z
SURPTUV2ZW50VGFyZ2V0PiB0YXJnZXQ7CgogIGV2ZW50LT5HZXRDdXJyZW50VGFyZ2V0KGdldHRl
cl9BZGRSZWZzKHRhcmdldCkpOwoKICAqX3JldHZhbCA9IHRhcmdldDsKICBuc19pZl9hZGRyZWYo
Kl9yZXR2YWwpOwoKICByZXR1cm4gMDsKfQo=


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

end of thread, other threads:[~2003-05-20 19:36 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-05-20 19:08 c++/10874: ICE: unrecognized symbol type "" bangerth
  -- strict thread matches above, loose matches on Subject: below --
2003-05-20 19:36 Wolfgang Bangerth
2003-05-20 17:16 Paul Jones
2003-05-20  0:37 bangerth
2003-05-19 21:40 pajones57

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